From 32ff325c4848715373ec420078c95202a0b0f030 Mon Sep 17 00:00:00 2001 From: KappaBot Date: Mon, 8 Apr 2024 12:16:04 +0000 Subject: [PATCH] Sync website for js with Kappa-Dev/KaSim@ --- try/JsSim.js | 9 +++------ try/KaSaWorker.js | 2 +- try/KaStorWorker.js | 2 +- try/index.html | 30 +++++++++++++++--------------- 4 files changed, 20 insertions(+), 23 deletions(-) diff --git a/try/JsSim.js b/try/JsSim.js index ab0858690..879985551 100644 --- a/try/JsSim.js +++ b/try/JsSim.js @@ -152053,15 +152053,12 @@ kO=[2,dt],kP=[0,0,[2,dQ],cZ,0,1],kQ=[2,jN],kR=[0,[0,0,[2,gO],a3,0,1],[2,by],ik,0 [18, [1, [0, 0, ""]], [15, [17, 0, [11, "] }", 0]]]]]]], 'set_errors { location : "%s" , errors : [@[%a@]] }'], _a_ = [0, [11, "Clear_errors ", [2, 0, [12, 32, 0]]], "Clear_errors %s "]; - function set_state_error(state_error_new){ - return caml_call2(Kappa_js_lib_Hooked[1][4], state_error, state_error_new); - } function clear_errors(location){ var _m_ = caml_jsstring_of_string(caml_call2(Stdlib_Format[132], _a_, location)); caml_call1(Kappa_js_lib_Common[3], _m_); - return set_state_error(0); + return caml_call2(Kappa_js_lib_Hooked[1][4], state_error, 0); } function has_errors(param){ return caml_call1(Kappa_js_lib_Hooked[1][3], state_error) ? 1 : 0; @@ -152081,7 +152078,7 @@ kO=[2,dt],kP=[0,0,[2,dQ],cZ,0,1],kQ=[2,jN],kR=[0,[0,0,[2,gO],a3,0,1],[2,by],ik,0 var current_state_error = caml_call1(Kappa_js_lib_Hooked[1][3], state_error), new_state_error = [0, [0, errors, location], current_state_error]; - return set_state_error(new_state_error); + return caml_call2(Kappa_js_lib_Hooked[1][4], state_error, new_state_error); } function _c_(state_error){ var _i_ = 0; @@ -172153,4 +172150,4 @@ kO=[2,dt],kP=[0,0,[2,dQ],cZ,0,1],kQ=[2,jN],kR=[0,[0,0,[2,gO],a3,0,1],[2,by],ik,0 (globalThis)); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJKc1NpbS5iYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJuYW1lcyI6WyJjYW1sX2ludDY0X2lzX3plcm8iLCJ4IiwiY2FtbF9zdHJfcmVwZWF0IiwibiIsInMiLCJyIiwibCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiTWF0aCIsImNhbWxfcmFpc2VfY29uc3RhbnQiLCJ0YWciLCJjYW1sX2dsb2JhbF9kYXRhIiwiY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSIsIk1sSW50NjQiLCJsbyIsIm1pIiwiaGkiLCJ0aGlzIiwieGhpIiwiaCIsInNpZ24iLCJvZmZzZXQiLCJtb2R1bHVzIiwiZGl2aXNvciIsInF1b3RpZW50IiwieSIsInEiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50NjRfaXNfbmVnYXRpdmUiLCJjYW1sX2ludDY0X25lZyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInVuZGVmaW5lZCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiaSIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImZtdCIsImxlbiIsImYiLCJjIiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwidCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJiIiwiYzEiLCJjMiIsInYiLCJqIiwiU3RyaW5nIiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsInVuaXhfZXJyb3IiLCJtYWtlX3VuaXhfZXJyX2FyZ3MiLCJjb2RlIiwic3lzY2FsbCIsImVycm5vIiwidmFyaWFudCIsIm51bGwiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImEiLCJjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIiwiTWxCeXRlcyIsImNvbnRlbnRzIiwibGVuZ3RoIiwiY29udGVudCIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9qc2J5dGVzIiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52Iiwic2hpZnRfcmlnaHRfbmF0IiwibmF0MSIsIm9mczEiLCJsZW4xIiwibmF0MiIsIm9mczIiLCJuYml0cyIsIndyYXAiLCJjYW1sX2dyX3N0YXRlIiwiY2FtbF9ncl9zdGF0ZV9nZXQiLCJjYW1sX2dyX3BvaW50X2NvbG9yIiwiaW0iLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9ydW50aW1lX3dhcm5pbmdzIiwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyIsImJvb2wiLCJjYW1sX2NsYXNzaWZ5X2Zsb2F0IiwiaXNGaW5pdGUiLCJpc05hTiIsImNhbWxfbWxfY2hhbm5lbHMiLCJjYW1sX3JlZmlsbCIsImNoYW4iLCJzdHIiLCJzdHJfYSIsIm5yZWFkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2hhbmlkIiwicHJldl9tYXgiLCJjYW1sX2djX21pbm9yIiwidW5pdCIsImNhbWxfbWxfY29uZGl0aW9uX25ldyIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJiYSIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX2ludDY0X29mX2J5dGVzIiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiZSIsImNhbWxfY3JlYXRlX2ZpbGUiLCJqc29vX2NyZWF0ZV9maWxlIiwiY2FtbF9mc19pbml0IiwidG1wIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJudW1fZGlnaXRzX25hdCIsIm5hdCIsImNhbWxfaGFzaF9uYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsImciLCJuYXJncyIsImV4dHJhX2FyZ3MiLCJhcmd1bWVudHMiLCJjYW1sX2NhbGxiYWNrIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc3lzX2NoZGlyIiwiZGlyIiwiY2FtbF9vYmpfdXBkYXRlX3RhZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfZ2NfY291bnRlcnMiLCJjYW1sX2dyX3N5bmNocm9uaXplIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwiayIsInIzIiwicjIiLCJyMSIsImNhbWxfYmFfc2VyaWFsaXplIiwic3oiLCJjb21wbGV4IiwiY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudCIsImtpbmQiLCJjYW1sX2JhX2NyZWF0ZV9idWZmZXIiLCJzaXplIiwidmlldyIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsIk51bWJlciIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJhcnIiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwiY2FtbF9zeXNfZXhpdCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2FtbF9qc19mcm9tX2FycmF5IiwiY2FtbF9iYV9yZXNoYXBlIiwidmluZCIsIm5ld19kaW0iLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEiLCJzdHIxIiwicG9zMSIsImJhMiIsInBvczIiLCJzbGljZSIsImNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZSIsImpzbmFtZSIsImNhbWxfZ2V0X2dsb2JhbF9kYXRhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJjYW1sX01ENVVwZGF0ZSIsImN0eCIsImlucHV0IiwiaW5wdXRfbGVuIiwiaW5fYnVmIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsIiwiY3Vyc29yIiwiY2FsbGJhY2tzIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfaW50NjRfdG9fZmxvYXQiLCJjYW1sX2JhX2dldF8xIiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJzIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIl91bml0IiwibHhvcl9kaWdpdF9uYXQiLCJjYW1sX29ial9hZGRfb2Zmc2V0IiwiY2FtbF9maW5hbF9yZWxlYXNlIiwiY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplIiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZSIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfc3RyaW5nX3NldDE2IiwiaTE2IiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfZ2NfbWFqb3IiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFzZSIsImJhY2t0cmsiLCJjYW1sX3N5c19maWxlX2V4aXN0cyIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2dyX3NpemVfeCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9sZXNzZXF1YWwiLCJjYW1sX2Fjb3NoX2Zsb2F0IiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJVaW50MzJBcnJheSIsImNhbWxfbWxfZmx1c2giLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dF82NCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjYW1sX2djX3NldCIsImNhbWxfanNfZ2V0IiwiY2FtbF91bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9tbF9zZXRfYnVmZmVyZWQiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2VwaGVfZ2V0X2tleSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJEYXRlIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJjYW1sX3N5c19mZHMiLCJjYW1sX3N5c19jbG9zZSIsImNhbWxfbWxfY2xvc2VfY2hhbm5lbCIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9zeXNfaXNhdHR5IiwiX2NoYW4iLCJpc19kaWdpdF96ZXJvIiwiY2FtbF91bml4X2xzdGF0IiwiY2FtbF91bml4X2xzdGF0XzY0IiwiY2FtbF9qc19zZXQiLCJjYW1sX2FycmF5X2dldCIsImFycmF5IiwiaW5kZXgiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMiLCJjb250IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfc2Vla19pbiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfZG9tYWluX2lkIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX2RvbWFpbl9sYXRlc3RfaWR4IiwiY2FtbF9kb21haW5fc3Bhd24iLCJtdXRleCIsImlkIiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2VwaGVfZGF0YV9vZmZzZXQiLCJjYW1sX3dlYWtfY3JlYXRlIiwiY2FtbF9lcGhlX2NyZWF0ZSIsImNhbWxfanNfdG9fYnl0ZV9zdHJpbmciLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfY3VzdG9tX2V2ZW50X2luZGV4IiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyIiwiZXZlbnRfbmFtZSIsImV2ZW50X3RhZyIsImV2ZW50X3R5cGUiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX2VwaGVfc2V0X2tleSIsIk9iamVjdCIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjb3VudCIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsInBhcnNlSW50IiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwiZ2V0Iiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJ2YWx1ZSIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJVSW50OEFycmF5UmVhZGVyIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsIm9ial9jb3VudGVyIiwiaW50ZXJuX3JlYyIsImhlYWRlciIsImV4cGVjdGVkX3NpemUiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWUiLCJibG9jayIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9hdG9taWNfY2FzIiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfYXRvbWljX2xvYWQiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9tZDVfYnl0ZXMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiYml0cyIsIm9uZSIsImNhbWxfZ3Jfc2l6ZV95IiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3VuaXhfdW5saW5rIiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJFcnJvciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsImNhbWxfanNfZnJvbV9zdHJpbmciLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsInRhIiwiVWludDhDbGFtcGVkQXJyYXkiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX2NyZWF0ZV9zdHJpbmciLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImwxIiwibDIiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfanNfZXhwciIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwibGVuZ3RoX25hdCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNiIiwiY2FtbF9iYV9nZXRfMiIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfanNfZGVsZXRlIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9saXN0X21vdW50X3BvaW50IiwicHJldiIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjYW1sX21sX2lucHV0IiwiY2FtbF9ncl93YWl0X2V2ZW50IiwiX2V2bCIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfbWVtcHJvZl9kaXNjYXJkIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX29ial9pc19zaGFyZWQiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9vYmpfZHVwIiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsImNhbWxfYnVpbGRfc3ltYm9scyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNhbWxfanNfZnJvbV9mbG9hdCIsImNhbWxfZmxvYXRhcnJheV9jcmVhdGUiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9tYWpvcl9jcmVkaXQiLCJjYW1sX3N5c19tb2RpZnlfYXJndiIsImNhbWxfbWV0aG9kX2NhY2hlIiwiY2FtbF9nZXRfcHVibGljX21ldGhvZCIsIm9iaiIsImNhY2hlaWQiLCJtZXRocyIsImxpIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHJhd19jaGFyIiwiY2FtbF91bm1vdW50IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9iYV9jcmVhdGUiLCJkaW1zX21sIiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsInUiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfYnN3YXAxNiIsImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX2pzX3RvX2ludDMyIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfYmFfZ2V0XzMiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfdW5peF9nZXRwd3VpZCIsImNhbWxfaGFzaCIsImxpbWl0Iiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsImNhbWxfZG9tYWluX2Rsc19nZXQiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsImNhbWxfanNfbmV3IiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbiIsImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMiLCJodmFsIiwiaGV4biIsImhlZmYiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwiaW5mbyIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9tZW1wcm9mX3N0b3AiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkIiwibG9yX2RpZ2l0X25hdCIsImNhbWxfZ3JfYmxpdF9pbWFnZSIsImltMiIsImNhbWxfZ3Jfd2luZG93X2lkIiwiY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQiLCJjYW1sX2pzX29uX2llIiwidWEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IiwiY2FtbF9iYV9sYXlvdXQiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hbGxvY19zdGFjayIsImh2IiwiaHgiLCJoZiIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwic2V0X2RpZ2l0X25hdCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2dyX2RvY19vZl9zdGF0ZSIsImNhbWxfbWxfb3V0cHV0X2ludCIsImNhbWxfb2JqX3dpdGhfdGFnIiwiY2FtbF9tbF9jaGFubmVsX3NpemUiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsIm1ha2UiLCJ2IiwiZ2V0IiwiciIsInNldCIsImV4Y2hhbmdlIiwiY3VyIiwiY29tcGFyZV9hbmRfc2V0Iiwic2VlbiIsImZldGNoX2FuZF9hZGQiLCJuIiwiaW5jciIsImRlY3IiLCJmYWlsd2l0aCIsInMiLCJpbnZhbGlkX2FyZyIsIm1pbiIsIngiLCJ5IiwibWF4IiwiYWJzIiwibG5vdCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsIm1heF9pbnQiLCJtaW5faW50Iiwic3ltYm9sIiwiczEiLCJzMiIsImwxIiwibDIiLCJjaGFyX29mX2ludCIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwibGVuJDEiLCJvZnMkMSIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwicG9zJDAiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQxIiwic3RyMiIsInN0cjEiLCJleGl0X2Z1bmN0aW9uIiwiYXRfZXhpdCIsImZfeWV0X3RvX3J1biIsIm9sZF9leGl0IiwiZl95ZXRfdG9fcnVuJDAiLCJvbGRfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwiZmx1c2giLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJzZXRfYmluYXJ5X21vZGVfb3V0IiwiaW5wdXRfY2hhciIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsInNldF9iaW5hcnlfbW9kZV9pbiIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwibWFwIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJub25lIiwic29tZSIsInZhbHVlIiwibyIsImRlZmF1bHQkMCIsImJpbmQiLCJqb2luIiwiZm9sZCIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwidiQwIiwiZTEiLCJlMiIsInYyIiwidjEkMCIsInYyJDAiLCJvayIsImVycm9yIiwiZ2V0X29rIiwiZ2V0X2Vycm9yIiwibWFwX2Vycm9yIiwiaXRlcl9lcnJvciIsImlzX29rIiwiaXNfZXJyb3IiLCJyMCIsInIxIiwiZTAiLCJ0b19vcHRpb24iLCJ0b19mbG9hdCIsInRvX3N0cmluZyIsImVzY2FwZWQiLCJzJDAiLCJsb3dlcmNhc2UiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjMSIsImMyIiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJoYXNoIiwibGVuZ3RoIiwibCQwIiwibnRoIiwibiQwIiwibCQxIiwibiQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwiaW5pdF9hdXgiLCJyZXZfaW5pdF90aHJlc2hvbGQiLCJpbml0IiwiZmxhdHRlbiIsIm1hcGkiLCJyZXZfbWFwIiwiaXRlcmkiLCJhY2N1JDEiLCJmb2xkX3JpZ2h0IiwibWFwMiIsImEyIiwiYTEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmQiLCJmaW5kX29wdCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsInhzIiwiZm9sZF9sZWZ0X21hcCIsImxfYWNjdSIsIngkMCIsInBhcnRpdGlvbiIsInllcyIsIm5vIiwicGFydGl0aW9uX21hcCIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwiY29weSIsIm9mX3N0cmluZyIsInN1YiIsInN1Yl9zdHJpbmciLCJleHRlbmQiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJmaWxsIiwiYmxpdCIsIm9mczEiLCJvZnMyIiwiYmxpdF9zdHJpbmciLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJwb3MiLCJoZCQwIiwiY2F0IiwiaXNfc3BhY2UiLCJ0cmltIiwiaiIsImFwcGx5MSIsImNhcGl0YWxpemVfYXNjaWkiLCJ1bmNhcGl0YWxpemVfYXNjaWkiLCJzdGFydHNfd2l0aCIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJzcGxpdF9vbl9jaGFyIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsImdldF9pbnQ4IiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MTZfbmUiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50NjRfbGUiLCJnZXRfaW50NjRfYmUiLCJzZXRfaW50MTZfbGUiLCJzZXRfaW50MTZfYmUiLCJzZXRfaW50MzJfbGUiLCJzZXRfaW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfdWludDE2X25lIiwiYnRzIiwiYm9zIiwib2ZfYnl0ZXMiLCJ0b19ieXRlcyIsImciLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJtYXJzaGFsIiwib2JqIiwidW5tYXJzaGFsIiwiY3VzdG9tX3RhZyIsImZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3RvciIsImxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yXyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImludF90YWciLCJvdXRfb2ZfaGVhcF90YWciLCJ1bmFsaWduZWRfdGFnIiwiaW5mbyIsInN0YXJ0X2VudiIsIm9mX3ZhbCIsInNsb3QiLCJpZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImV4dGVuc2lvbl9uYW1lIiwiZXh0ZW5zaW9uX2lkIiwibWF4X2VwaGVfbGVuZ3RoIiwiY3JlYXRlIiwicmFpc2VfaWZfaW52YWxpZF9vZmZzZXQiLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzIiLCJtYWtlX2Zsb2F0IiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJ0Iiwib2ZfbGlzdCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImIwIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImkkNiIsImUkMSIsImkkNCIsImUkMCIsImkkNSIsImokMCIsImkkMiIsImkkMyIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImQiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsImlzX2Zpbml0ZSIsImlzX2luZmluaXRlIiwiaXNfbmFuIiwiZXBzaWxvbiIsIm9mX3N0cmluZ19vcHQiLCJwaSIsImlzX2ludGVnZXIiLCJtaW5fbWF4IiwibWluX251bSIsIm1heF9udW0iLCJtaW5fbWF4X251bSIsInVuc2FmZV9maWxsIiwiY2hlY2siLCJobGVuIiwic3JjIiwic29mcyIsImRvZnMiLCJoIiwibWVtX2llZWUiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsIm1heF9pbnQkMCIsInVuc2lnbmVkX3RvX2ludCIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfZGl2IiwicSIsInVuc2lnbmVkX3JlbSIsInNpemUiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsImVuZ2luZSIsInRibCIsInN0YXRlIiwibmV3X2VuZ2luZSIsImZyb21fZnVuY3Rpb24iLCJvcHQiLCJyZWFkX2Z1biIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJzZXRfcG9zaXRpb24iLCJwb3NpdGlvbiIsInNldF9maWxlbmFtZSIsImZuYW1lIiwibGV4ZW1lIiwic3ViX2xleGVtZSIsInN1Yl9sZXhlbWVfb3B0Iiwic3ViX2xleGVtZV9jaGFyIiwic3ViX2xleGVtZV9jaGFyX29wdCIsImxleGVtZV9jaGFyIiwibGV4ZW1lX3N0YXJ0IiwibGV4ZW1lX2VuZCIsImxleGVtZV9zdGFydF9wIiwibGV4ZW1lX2VuZF9wIiwibmV3X2xpbmUiLCJsY3AiLCJmbHVzaF9pbnB1dCIsImVudiIsImdyb3dfc3RhY2tzIiwib2xkc2l6ZSIsIm5ld3NpemUiLCJuZXdfcyIsIm5ld192IiwibmV3X3N0YXJ0IiwibmV3X2VuZCIsImNsZWFyX3BhcnNlciIsImN1cnJlbnRfbG9va2FoZWFkX2Z1biIsInl5cGFyc2UiLCJ0YWJsZXMiLCJzdGFydCIsImxleGVyIiwiaW5pdF9hc3AiLCJpbml0X3NwIiwiaW5pdF9zdGFja2Jhc2UiLCJpbml0X3N0YXRlIiwiaW5pdF9jdXJyX2NoYXIiLCJpbml0X2x2YWwiLCJpbml0X2VycmZsYWciLCJjbWQiLCJhcmciLCJhcmckMCIsImFjdGlvbiIsImV4biQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInByZXMiLCJwcmVzJDAiLCJpc19lbXB0eSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlIiwidGFrZV9vcHQiLCJjZWxsJDAiLCJxX3JlcyIsInByZXYiLCJwcmV2JDAiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJyYWlzZV91bmRlZmluZWQiLCJmb3JjZV9sYXp5X2Jsb2NrIiwiYmxrIiwiY2xvc3VyZSIsImZvcmNlX3ZhbF9sYXp5X2Jsb2NrIiwiZm9yY2UiLCJsenYiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImNvdW50IiwiZmlsbF9idWZmIiwiZ2V0X2RhdGEiLCJkMTEiLCJhJDAiLCJhJDEiLCJwZWVrX2RhdGEiLCJqdW5rX2RhdGEiLCJqdW5rIiwibmdldF9kYXRhIiwiYWwiLCJucGVlayIsInN0cm0iLCJmcm9tIiwib2ZfY2hhbm5lbCIsImlhcHAiLCJpY29ucyIsImlzaW5nIiwibGFwcCIsImxjb25zIiwibHNpbmciLCJzZW1wdHkiLCJzbGF6eSIsImR1bXAiLCJkdW1wX2RhdGEiLCJjb250ZW50cyIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3V0Zl84X3VjaGFyIiwicG9zJDEiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJ1JDEiLCJoaSIsImxvIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwic3RhcnQkMCIsIm9wZW5pbmciLCJsaW0kMCIsInN0b3AkMCIsImskMiIsImNsb3NpbmciLCJzdG9wIiwiayQwIiwiayQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJ0cnVuY2F0ZSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsInJlc3QkMjYiLCJyZXN0JDI3IiwicmVzdCQyOCIsInJlc3QkMjkiLCJmbl9vZl9jdXN0b21fYXJpdHkkMCIsImZuX29mX2N1c3RvbV9hcml0eSIsIm91dHB1dF9hY2MiLCJwJDMiLCJwJDQiLCJwJDUiLCJwJDIiLCJidWZwdXRfYWNjIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwibGVnYWN5X2JlaGF2aW9yJDAiLCJpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIiwidW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwiZW5kX2luZCIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiYWRkX2xpdGVyYWwiLCJzdHJfaW5kJDEiLCJzdHJfaW5kJDIiLCJwYXJzZV9mbGFncyIsInN0cl9pbmQkMCIsInBhcnNlX3RhZyIsInN0cl9pbmQkMyIsInN0cl9pbmRfMSIsInBhcnNlX2ludGVnZXIiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJmb3JtYXR0aW5nX2xpdCQwIiwibmV4dF9pbmQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdHJfaW5kJDQiLCJzdHJfaW5kXzEkMCIsInN0cl9pbmRfMiQwIiwic3RyX2luZF8zJDAiLCJzJDEiLCJmb3JtYXR0aW5nX2xpdCQxIiwibmV4dF9pbmQkMCIsInBjdF9pbmQiLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsInNldF9mbGFnIiwic3RyX2luZCQ1Iiwic3BhY2UkMCIsImhhc2gkMCIsInBsdXMkMCIsIm1pbnVzJDAiLCJ6ZXJvJDAiLCJpbmNvbXBhdGlibGVfZmxhZyIsInBhcnNlX3Bvc2l0aXZlIiwibmV3X2luZCIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsInBhcnNlX2NvbnYiLCJwYWRwcmVjIiwicGx1c191c2VkIiwiaGFzaF91c2VkIiwic3BhY2VfdXNlZCIsImlnbl91c2VkIiwicGFkX3VzZWQiLCJwcmVjX3VzZWQiLCJnZXRfcGx1cyIsImdldF9oYXNoIiwiZ2V0X3NwYWNlIiwiZ2V0X2lnbiIsImdldF9wYWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsIndpZHRoJDEiLCJnZXRfcGFkX29wdCIsImdldF9wYWRwcmVjX29wdCIsImZtdF9yZXN1bHQiLCJzdWJfZW5kIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCQyIiwiY291bnRlciQwIiwiaWdub3JlZCQ2IiwiaWdub3JlZCQ3IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyJDAiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsImZtdF9yZXN0JDI1Iiwic3ViX2VuZCQwIiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiY29tcHV0ZV9pbnRfY29udiIsImlnbm9yZWQkOCIsInNwYWNlJDEiLCJoYXNoJDEiLCJwbHVzJDIiLCJraW5kIiwiaWdub3JlZCQ0IiwiaWdub3JlZCIsImlnbm9yZWQkMCIsImlnbm9yZWQkMSIsInBsdXMkMSIsImlnbiQwIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInN1Yl9lbmQkMSIsInN1Yl9lbmQkMiIsInN0cl9pbmQkNiIsInN0cl9pbmQkNyIsIm9wdGlvbiIsInN1YmZtdCIsImZvcm1hdF9vZl9zdHJpbmdfZm10dHkiLCJmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCIsImtmcHJpbnRmIiwia2JwcmludGYiLCJpa2ZwcmludGYiLCJmcHJpbnRmIiwiYnByaW50ZiIsImlmcHJpbnRmIiwiaWJwcmludGYiLCJwcmludGYiLCJlcHJpbnRmIiwia3NwcmludGYiLCJzcHJpbnRmIiwiYXNzb2MzIiwieTIiLCJ5MSIsIm1ha2Vfc3ltbGlzdCIsImhlbHBfYWN0aW9uIiwiYWRkX2hlbHAiLCJzcGVjbGlzdCIsImFkZDEiLCJhZGQyIiwidXNhZ2VfYiIsImVycm1zZyIsImRvYyIsInNwZWMiLCJrZXkiLCJ1c2FnZV9zdHJpbmciLCJ1c2FnZSIsImN1cnJlbnQiLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY18iLCJhbGxvd19leHBhbmQiLCJhcmd2IiwiYW5vbmZ1biIsImluaXRwb3MiLCJjb252ZXJ0X2Vycm9yIiwicHJvZ25hbWUiLCJmb2xsb3ckMCIsImtleXdvcmQiLCJmb2xsb3ckMiIsIm5vX2FyZyIsImdldF9hcmciLCJjb25zdW1lX2FyZyIsInRyZWF0X2FjdGlvbiIsImYkMCIsImYkMSIsInIkMSIsImYkMiIsImFyZyQxIiwiciQyIiwiYXJnJDIiLCJmJDMiLCJhcmckMyIsIngkMSIsInIkMyIsImFyZyQ0IiwieCQyIiwic3BlY3MiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsImxvb3AiLCJtYXhfYXJnX2xlbiIsImt3ZCIsInJlcGxhY2VfbGVhZGluZ190YWIiLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwiY29uc3RydWN0b3IiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsInBhcmFtIiwiYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lIiwiYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24iLCJiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lIiwiYmFja3RyYWNlX3Nsb3RzIiwiYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSIsImVudHJ5IiwicmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJnZXRfYmFja3RyYWNlIiwicmVnaXN0ZXJfcHJpbnRlciIsImZuIiwib2xkX3ByaW50ZXJzIiwibmV3X3ByaW50ZXJzIiwiZXhuX3Nsb3QiLCJleG5fc2xvdF9pZCIsImV4bl9zbG90X25hbWUiLCJlcnJvcnMiLCJkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW4iLCJzdGF0dXMiLCJ1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsInNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsImVtcHR5X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9leGNlcHRpb24iLCJkZWJ1Z2dlcl9pbl91c2UiLCJleG4kMSIsInJhd19iYWNrdHJhY2UkMCIsImNvbnN0JDAiLCJmbGlwIiwibmVnYXRlIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsIndvcmsiLCJmaW5hbGx5X25vX2V4biIsIndvcmtfZXhuJDAiLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZV9zZWxmX2luaXQiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJiMSIsImIyIiwibWF4X2ludF8zMiIsImJwb3MiLCJiMyIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiYm9vbCIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJmdWxsX2luaXQkMCIsInNlbGZfaW5pdCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZyIsInBvd2VyXzJfYWJvdmUiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjb3B5X2J1Y2tldGxpc3QiLCJrZXkkMCIsIm5leHQkMCIsImluc2VydF9hbGxfYnVja2V0cyIsImluZGV4ZnVuIiwiaW5wbGFjZSIsIm9kYXRhIiwibmRhdGEiLCJuc2l6ZSIsIm5kYXRhX3RhaWwiLCJuaWR4IiwibWF0Y2gkMCIsIm9zaXplIiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJiJDAiLCJidWNrZXRfbGVuZ3RoIiwic3RhdHMiLCJtYmwiLCJoaXN0byIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9pbl9idWNrZXQiLCJyZXBsYWNlIiwicmVwbGFjZV9zZXEiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJjcmVhdGUkMCIsInN6JDAiLCJzeiQxIiwiY291bnRfYnVja2V0IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwib2kkMCIsIm5pIiwiZmluZF9vciIsImlmbm90Zm91bmQiLCJmaW5kX3NoYWRvdyIsImlmZm91bmQiLCJsZW5zIiwidG90bGVuIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiaWMkMCIsIm1lbW8iLCJtZW1vX2Zyb21fY2hhbm5lbCIsImJhZF9pbnB1dCIsImJhZF9pbnB1dF9lc2NhcGUiLCJiYWRfdG9rZW5fbGVuZ3RoIiwibWVzc2FnZSIsImJhZF9mbG9hdCIsImJhZF9oZXhfZmxvYXQiLCJjaGFyYWN0ZXJfbWlzbWF0Y2giLCJjaSIsImNoZWNrX2NoYXIiLCJjaGVja190aGlzX2NoYXIiLCJ0b2tlbl9jaGFyIiwidG9rZW5fYm9vbCIsImludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIiwidG9rZW5faW50X2xpdGVyYWwiLCJjb252IiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIiwic2Nhbl9kaWdpdF9wbHVzIiwiYmFzaXMiLCJkaWdpdHAiLCJ3aWR0aCQzIiwiaXNfYmluYXJ5X2RpZ2l0Iiwic2Nhbl9iaW5hcnlfaW50IiwiaXNfb2N0YWxfZGlnaXQiLCJzY2FuX29jdGFsX2ludCIsImlzX2hleGFfZGlnaXQiLCJzY2FuX2hleGFkZWNpbWFsX2ludCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsImNoZWNrX25leHRfY2hhcl9mb3JfY2hhciIsImNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIiwic2Nhbl9iYWNrc2xhc2hfY2hhciIsImMwIiwiZ2V0X2RpZ2l0JDAiLCJjMSQwIiwiYzIkMCIsImdldF9kaWdpdCIsInNjYW5fY2FtbF9zdHJpbmciLCJmaW5kX3N0b3AkMCIsInNraXBfc3BhY2VzIiwiZmluZF9zdG9wIiwic2Nhbl9jaGFyc19pbl9jaGFyX3NldCIsInNjYW5faW5kaWMiLCJzY2FuX2NoYXJzIiwic2NhbmZfYmFkX2lucHV0Iiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJleGMkMCIsImV4YyIsImFyZ3MkMSIsImFyZ3MkMCIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwiaW5pdGlhbF9vYmplY3Rfc2l6ZSIsImR1bW15X2l0ZW0iLCJwdWJsaWNfbWV0aG9kX2xhYmVsIiwidGFnIiwiY29tcGFyZSQwIiwiY29tcGFyZSQxIiwiZHVtbXlfdGFibGUiLCJ0YWJsZV9jb3VudCIsImR1bW15X21ldCIsImZpdF9zaXplIiwibmV3X3RhYmxlIiwicHViX2xhYmVscyIsIm1ldGhvZHMiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3ZhcmlhYmxlIiwidG9fYXJyYXkiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJ4JDIwIiwiY2xvJDAiLCJuJDM4IiwiZSQxMCIsIm4kMzciLCJuJDM2IiwibiQyIiwibiQzNSIsImYkMjAiLCJ4JDE5IiwibiQzIiwiZiQxOSIsIm4kMzQiLCJuJDQiLCJmJDE4IiwiZSQ5IiwibiQzMyIsIm4kNSIsImYkMTciLCJuJDMyIiwiZiQxNiIsIngkMTgiLCJ5JDAiLCJuJDYiLCJmJDE1IiwieCQxNyIsIm4kMzEiLCJ4JDMiLCJuJDciLCJmJDE0IiwieCQxNiIsImUkOCIsIm4kMzAiLCJ4JDQiLCJuJDgiLCJmJDEzIiwieCQxNSIsIm4kMjkiLCJuJDkiLCJ4JDUiLCJmJDEyIiwibiQyOCIsIngkMTQiLCJmJDgiLCJlJDIiLCJuJDEwIiwieCQ2IiwiZiQxMSIsImUkNyIsIm4kMjciLCJ4JDEzIiwiZiQ5IiwibiQxMSIsIngkNyIsImYkMTAiLCJuJDI2IiwieCQxMiIsIm4kMTIiLCJ4JDgiLCJuJDI1IiwieCQxMSIsIm4kMTMiLCJuJDI0IiwibSQxMiIsIm4kMTQiLCJlJDMiLCJuJDIzIiwiZSQ2IiwibSQxMSIsIm4kMTUiLCJtJDEiLCJuJDIyIiwibSQxMCIsIm0kMiIsIngkOSIsIm0kOSIsIngkMTAiLCJtJDMiLCJuJDE2IiwibSQ4IiwibiQyMSIsIm0kNCIsImUkNCIsIm4kMTciLCJtJDciLCJlJDUiLCJuJDIwIiwibSQ1IiwibiQxOCIsIm0kNiIsIm4kMTkiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwibmV4dF90b2tlbiIsImVzY2FwZSIsImNvbW1lbnQiLCJudW1iZXIiLCJpZGVudDIiLCJleHBvbmVudF9wYXJ0IiwiZW5kX2V4cG9uZW50X3BhcnQiLCJjMyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJuZXdfZCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwic2V0X2tleV9kYXRhIiwiZ2V0X2tleTEiLCJnZXRfa2V5MV9jb3B5Iiwic2V0X2tleTEiLCJ1bnNldF9rZXkxIiwiY2hlY2tfa2V5MSIsImdldF9rZXkyIiwiZ2V0X2tleTJfY29weSIsInNldF9rZXkyIiwidW5zZXRfa2V5MiIsImNoZWNrX2tleTIiLCJibGl0X2tleTEiLCJibGl0X2tleTIiLCJibGl0X2tleTEyIiwiZ2V0X2RhdGEkMCIsImdldF9kYXRhX2NvcHkkMCIsInNldF9kYXRhJDAiLCJ1bnNldF9kYXRhJDAiLCJjaGVja19kYXRhJDAiLCJibGl0X2RhdGEkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsImNyZWF0ZSQxIiwiZ2V0X2tleSQwIiwiZ2V0X2tleV9jb3B5JDAiLCJzZXRfa2V5JDAiLCJ1bnNldF9rZXkkMCIsImNoZWNrX2tleSQwIiwiYmxpdF9rZXkkMCIsImdldF9kYXRhJDEiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJraSIsImswIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwibmVnIiwiY29uaiIsIm11bCIsImRpdiIsImludiIsIm5vcm0yIiwibm9ybSIsInEkMCIsInBvbGFyIiwic3FydCIsInckMCIsImV4cCIsImxvZyIsInBvdyIsImZsb2F0MzIiLCJmbG9hdDY0IiwiaW50OF9zaWduZWQiLCJpbnQ4X3Vuc2lnbmVkIiwiaW50MTZfc2lnbmVkIiwiaW50MTZfdW5zaWduZWQiLCJjb21wbGV4MzIiLCJjb21wbGV4NjQiLCJraW5kX3NpemVfaW5fYnl0ZXMiLCJjX2xheW91dCIsImZvcnRyYW5fbGF5b3V0IiwiY2xvb3AiLCJpZHgiLCJjb2wiLCJmbG9vcCIsImxheW91dCIsImRpbXMiLCJzaXplX2luX2J5dGVzIiwic2l6ZV9pbl9ieXRlcyQwIiwib2ZfdmFsdWUiLCJkaW0iLCJzaXplX2luX2J5dGVzJDEiLCJzbGljZSIsImluaXQkMCIsIm9mX2FycmF5IiwiYmEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwcmUiLCJzY3JpcHQiLCJzZWxlY3QkMCIsInN0eWxlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aXRsZSIsInRyIiwidWwiLCJhdWRpbyIsInZpZGVvIiwidW5zYWZlQ29lcmNlRXZlbnQiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsInBhcmFtIiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJkdW1teSIsImluZXhpc3RhbnQiLCJuZXdsaW5lIiwibGFzdG5ld2xpbmUiLCJzZWFyY2hfYm91bmRhcnkiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwiZW1wdHkiLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInVua25vd24iLCJicmVhayQwIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm93IiwiZW93IiwiYm9sIiwiZW9sIiwid29yZCIsImJvcyIsImVvcyIsIm5vdF9ib3VuZGFyeSIsIndob2xlX3N0cmluZyIsImxlb2wiLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsInN0aCIsInN0aCQwIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJzdGgkMSIsIm1hdGNoX2JhY2tzbGFzaGVzIiwic3RoJDIiLCJwZXJpb2QiLCJzdGgkMyIsImV4cGFuZF9icmFjZXMiLCJzdGgkNCIsImRvdWJsZV9hc3RlcmlzayIsInRvX3JlIiwicmVhZCIsInBpZWNlcyIsImZvdW5kIiwicGllY2VzJDAiLCJzdGF0ZSQ4Iiwic3RhdGUkOSIsImV4cGxpY2l0X3NsYXNoJDAiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwibm90X2VtcHR5IiwibWF5YmVfZW1wdHkiLCJub3RfZW1wdHkkMSIsImVuY2xvc2VkX3NldCQwIiwic3RhdGUkMiIsInN0YXRlJDQiLCJub3RfZW1wdHkkMCIsInN0YXRlJDUiLCJzdGF0ZSQ2IiwiZW5jbG9zZWQkMCIsInN0YXRlJDciLCJlbmNsb3NlZCQxIiwic3RhdGUkMyIsInN0YXRlJDEiLCJlbmNsb3NlZCQyIiwiZW5jbG9zZWQkMyIsImV4cGwiLCJpbm5lciIsImFjYyIsImJlZyQwIiwiYWNjJDAiLCJiZWckMSIsImFjYyQxIiwiaSQzIiwiYmVnJDIiLCJpJDQiLCJpJDIiLCJnbG9iJDAiLCJnbG9ieCIsImdsb2J4JDAiLCJwb3NpeF9jbGFzc19zdHJpbmdzIiwib3B0cyIsInVuZ3JlZWR5IiwiZG90YWxsIiwiZG9sbGFyX2VuZG9ubHkiLCJtdWx0aWxpbmUiLCJhY2NlcHRfcyIsInVuZ2V0IiwiZ3JlZWR5X21vZCIsImdyIiwiZ3IkMCIsImF0b20iLCJpbnRlZ2VyIiwiaGV4ZGlnaXQiLCJjb2RlIiwicyQzIiwicyQ0IiwiY2xhc3MkMCIsInBvc2l4X2NsYXNzIiwicGF0IiwiZmxhZ3MiLCJleHRyYWN0IiwicmV4IiwiZ2V0X3N1YnN0cmluZyIsImdldF9uYW1lZF9zdWJzdHJpbmciLCJnZXRfc3Vic3RyaW5nX29mcyIsInBtYXRjaCIsInN1YnN0aXR1dGUiLCJzdWJzdCIsInNzIiwiZmluIiwibWF4IiwicmVzdWx0cyIsImRlbGltIiwiZm1hcCIsImYiLCJuaWwiLCJzaW5nbGV0b24iLCJ4IiwiY29ucyIsInhzIiwiYXBwZW5kIiwieSIsIm1hcCIsIm9mX2xpc3QiLCJsIiwiYSIsImIiLCJtayIsImNoaWxkcmVuIiwic2VxIiwiY2hpbGRyZW4kMCIsInNlcSQwIiwicmVzdCIsInEiLCJhdHRycyIsIm5hbWUiLCJ2IiwicmVzdCQwIiwic3ViX2NoaWxkcmVuIiwiY2hpbGRyZW4kMSIsInNlcSQxIiwicyIsImNoaWxkcmVuJDIiLCJzZXEkMiIsInMkMCIsImNoaWxkcmVuJDMiLCJvZl9zZXEiLCJhZGRfdW5zYWZlX2NoYXIiLCJjIiwiZW5jb2RlX3Vuc2FmZV9jaGFyIiwiZW5jb2RlX3Vuc2FmZV9jaGFyX2FuZF9hdCIsImNvbXBvc2VfZGVjbCIsIm9wdCIsInN0aCIsInZlcnNpb24iLCJzdGgkMCIsImVuY29kaW5nIiwiY29tcG9zZV9kb2N0eXBlIiwiZHQiLCJhcmdzIiwicHBfYXJncyIsImZtdCIsInJlX2VuZF9jb21tZW50IiwicHBfbnVtYmVyIiwidmludCIsInMxIiwiczIiLCJuIiwiaSIsImkkMCIsIm4kMCIsInN0cmluZ19vZl9udW1iZXIiLCJub3JtYWxpemUiLCJzcmMiLCJ3YXJuIiwiYnVmZmVyIiwiZCIsImNvZGUiLCJub3JtYWxpemVfaHRtbCIsInUiLCJ1JDAiLCJwcF9ub29wIiwib3Blbl9ib3giLCJpbmRlbnQiLCJjbG9zZV9ib3giLCJzcCIsImN1dCIsInNldCIsImlzX2VtcHR5dGFnIiwicHBfZW5jb2RlIiwiZW5jb2RlIiwicHBfc2VwIiwicHBfYXR0cmliX3ZhbHVlIiwic2xpc3QiLCJzZXAiLCJwcF9hdHRyaWIiLCJwcF9hdHRyaWJzIiwicHBfdGFnX2FuZF9hdHRyaWJzIiwidGFnIiwicHBfY2xvc2VkdGFnIiwicHBfdGFnIiwicHBfZWx0cyIsInBwX2VsdCIsImVsdCIsInRleHRlIiwiZyIsInRleHRlJDAiLCJ0ZXh0ZSQxIiwiZSIsInhoX2F0dHJzIiwieGhfdGFnbGlzdCIsInhoX2F0dHJzJDAiLCJuYW1lJDAiLCJwcCIsInN5bWJvbCIsInNlcGFyYXRvcl90b19zdHJpbmciLCJhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIiwiYXR0cmliX3RvX3N0cmluZyIsInhoX3ByaW50X2F0dHJzIiwicXVldWUiLCJhdHRyIiwieGhfcHJpbnRfY2xvc2VkdGFnIiwieGhfcHJpbnRfdGFnIiwidGFnbGlzdCIsInhoX3ByaW50X3RhZ2xpc3QiLCJwcmludF9ub2RlcyIsInRhZ2xpc3QkMCIsInRhZ2xpc3QkMSIsInByaW50X2xpc3QiLCJmb3JldCIsInByaW50IiwiZG9jIiwiYWR2ZXJ0IiwiZG9jJDAiLCJhJDAiLCJkb2MkMSIsImVtcHR5IiwiY29uY2F0IiwiZjEiLCJmMiIsInB1dCIsIm1ha2UiLCJvdXRwdXQiLCJhbWFwMSIsImF0dHJpYnMiLCJlbHRzIiwiYXR0cmlicyQwIiwiYW1hcCIsImFkZF9mbG9hdF9hdHRyaWIiLCJ2YWx1ZSIsImhlYWQiLCJ0YWlsIiwidGFpbCQwIiwibWFwX2Zsb2F0X2F0dHJpYiIsImlzX2F0dHJpYiIsImF1eCIsImFkZF9pbnRfYXR0cmliIiwicm1fYXR0cmliIiwibWFwX2ludF9hdHRyaWIiLCJhZGRfc3RyaW5nX2F0dHJpYiIsIm1hcF9zdHJpbmdfYXR0cmliIiwiYWRkX3NwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJhZGRfY29tbWFfc2VwX2F0dHJpYiIsInJtX2F0dHJpYl9mcm9tX2xpc3QiLCJpc192YWx1ZSIsInZhbHVlcyQwIiwibWFwX3N0cmluZ19hdHRyaWJfaW5fbGlzdCIsImZvbGQiLCJvZl9lbXB0eSIsIm9mX2NvbW1lbnQiLCJvZl90eHQiLCJvZl9lbmNvZGVkcGNkYXRhIiwib2ZfZW50aXR5Iiwib2ZfbGVhZiIsIm9mX25vZGUiLCJzJDEiLCJzJDIiLCJhbGxfZW50aXRpZXMiLCJlbmFtZSIsImZsYXRtYXAiLCJ0cmFuc2xhdGUiLCJyb290X2xlYWYiLCJyb290X25vZGUiLCJzdWJfbGVhZiIsInN1Yl9ub2RlIiwidXBkYXRlX3N0YXRlIiwic3RhdGUiLCJjb250ZW50X3R5cGUiLCJzdGFuZGFyZCIsIm5hbWVzcGFjZSIsImNzdCQxIiwic3RyaW5nX29mX2lyaSIsInRvX3N0cmluZyIsInVuaXQiLCJ1bml0JDAiLCJhbmdsZV9uYW1lcyIsInN0cmluZ19vZl9hbmdsZSIsImxlbmd0aF9uYW1lcyIsInN0cmluZ19vZl9sZW5ndGgiLCJsaXN0Iiwic3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjIiwic3RyaW5nX29mX3BhaW50IiwiaXJpIiwic3RyaW5nX29mX2ZpbGxfcnVsZSIsImRvY3R5cGUiLCJzdHJpbmdfb2ZfdXJpIiwidXJpX29mX3N0cmluZyIsInRvdCIsInRvdGwiLCJ0b2VsdCIsInRvZWx0bCIsInRvX2F0dHJpYiIsIm51bGxhcnkiLCJ1bmFyeSIsInN0YXIiLCJ0b194bWxhdHRyaWJzIiwiZmxvYXRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInN0cmluZ19vZl9jb29yZCIsInN0cmluZ19vZl9sZW5ndGhzIiwidXNlcl9hdHRyaWIiLCJjb2xvcl9hdHRyaWIiLCJtZXRhZGF0YSIsImZvcmVpZ25PYmplY3QiLCJ0eHQiLCJhX3ZlcnNpb24iLCJhX2Jhc2VQcm9maWxlIiwiYV94IiwiYV95IiwiYV93aWR0aCIsImFfaGVpZ2h0IiwiYV9wcmVzZXJ2ZUFzcGVjdFJhdGlvIiwiYV9jb250ZW50U2NyaXB0VHlwZSIsImFfY29udGVudFN0eWxlVHlwZSIsImFfem9vbUFuZFBhbiIsImFfaHJlZiIsImFfeGxpbmtfaHJlZiIsImFfcmVxdWlyZWRGZWF0dXJlcyIsImFfcmVxdWlyZWRFeHRlbnNpb25zIiwiYV9zeXN0ZW1MYW5ndWFnZSIsImFfZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWQiLCJhX2lkIiwiYV91c2VyX2RhdGEiLCJhX3htbF9iYXNlIiwiYV94bWxfbGFuZyIsImFfeG1sX3NwYWNlIiwiYV90eXBlIiwiYV9tZWRpYSIsImFfeGxpbmtfdGl0bGUiLCJhX2NsYXNzIiwiYV9zdHlsZSIsImFfdHJhbnNmb3JtIiwiYV92aWV3Qm94IiwiYV9kIiwiYV9wYXRoTGVuZ3RoIiwiYV9yeCIsImFfcnkiLCJhX2N4IiwiYV9jeSIsImFfciIsImFfeDEiLCJhX3kxIiwiYV94MiIsImFfeTIiLCJhX3BvaW50cyIsImFfeF9saXN0IiwiYV95X2xpc3QiLCJhX2R4IiwiYV9keSIsImFfZHhfbGlzdCIsImFfZHlfbGlzdCIsImFfbGVuZ3RoQWRqdXN0IiwiYV90ZXh0TGVuZ3RoIiwiYV90ZXh0X2FuY2hvciIsImFfdGV4dF9kZWNvcmF0aW9uIiwiYV90ZXh0X3JlbmRlcmluZyIsImFfcm90YXRlIiwiYV9zdGFydE9mZnNldCIsImFfbWV0aG9kIiwiYV9zcGFjaW5nIiwiYV9nbHlwaFJlZiIsImFfZm9ybWF0IiwiYV9tYXJrZXJVbml0cyIsImFfcmVmWCIsImFfcmVmWSIsImFfbWFya2VyV2lkdGgiLCJhX21hcmtlckhlaWdodCIsImFfb3JpZW50IiwiYV9sb2NhbCIsImFfcmVuZGVyaW5nX2ludGVudCIsImFfZ3JhZGllbnRVbml0cyIsImFfZ3JhZGllbnRUcmFuc2Zvcm0iLCJhX3NwcmVhZE1ldGhvZCIsImFfZngiLCJhX2Z5IiwiYV9vZmZzZXQiLCJhX3BhdHRlcm5Vbml0cyIsImFfcGF0dGVybkNvbnRlbnRVbml0cyIsImFfcGF0dGVyblRyYW5zZm9ybSIsImFfY2xpcFBhdGhVbml0cyIsImFfbWFza1VuaXRzIiwiYV9tYXNrQ29udGVudFVuaXRzIiwiYV9wcmltaXRpdmVVbml0cyIsImFfZmlsdGVyUmVzIiwiYV9yZXN1bHQiLCJhX2luIiwiYV9pbjIiLCJhX2F6aW11dGgiLCJhX2VsZXZhdGlvbiIsImFfcG9pbnRzQXRYIiwiYV9wb2ludHNBdFkiLCJhX3BvaW50c0F0WiIsImFfc3BlY3VsYXJFeHBvbmVudCIsImFfc3BlY3VsYXJDb25zdGFudCIsImFfbGltaXRpbmdDb25lQW5nbGUiLCJhX21vZGUiLCJhX2ZlQ29sb3JNYXRyaXhfdHlwZSIsImFfdmFsdWVzIiwiYV90cmFuc2Zlcl90eXBlIiwiYV90YWJsZVZhbHVlcyIsImFfaW50ZXJjZXB0IiwiYV9hbXBsaXR1ZGUiLCJhX2V4cG9uZW50IiwiYV90cmFuc2Zlcl9vZmZzZXQiLCJhX2ZlQ29tcG9zaXRlX29wZXJhdG9yIiwiYV9rMSIsImFfazIiLCJhX2szIiwiYV9rNCIsImFfb3JkZXIiLCJhX2tlcm5lbE1hdHJpeCIsImFfZGl2aXNvciIsImFfYmlhcyIsImFfa2VybmVsVW5pdExlbmd0aCIsImFfdGFyZ2V0WCIsImFfdGFyZ2V0WSIsImFfZWRnZU1vZGUiLCJhX3ByZXNlcnZlQWxwaGEiLCJhX3N1cmZhY2VTY2FsZSIsImFfZGlmZnVzZUNvbnN0YW50IiwiYV9zY2FsZSIsImFfeENoYW5uZWxTZWxlY3RvciIsImFfeUNoYW5uZWxTZWxlY3RvciIsImFfc3RkRGV2aWF0aW9uIiwiYV9mZU1vcnBob2xvZ3lfb3BlcmF0b3IiLCJhX3JhZGl1cyIsImFfYmFzZUZyZW5xdWVuY3kiLCJhX251bU9jdGF2ZXMiLCJhX3NlZWQiLCJhX3N0aXRjaFRpbGVzIiwiYV9mZVR1cmJ1bGVuY2VfdHlwZSIsImFfeGxpbmtfc2hvdyIsImFfeGxpbmtfYWN0dWF0ZSIsImFfdGFyZ2V0IiwiYV92aWV3VGFyZ2V0IiwiYV9hdHRyaWJ1dGVOYW1lIiwiYV9hdHRyaWJ1dGVUeXBlIiwiYV9iZWdpbiIsImFfZHVyIiwiYV9taW4iLCJhX21heCIsImFfcmVzdGFydCIsImFfcmVwZWF0Q291bnQiLCJhX3JlcGVhdER1ciIsImFfZmlsbCIsImFfYW5pbWF0aW9uX2ZpbGwiLCJhX2ZpbGxfcnVsZSIsImFfY2FsY01vZGUiLCJhX2FuaW1hdGlvbl92YWx1ZXMiLCJhX2tleVRpbWVzIiwiYV9rZXlTcGxpbmVzIiwiYV9mcm9tIiwiYV90byIsImFfYnkiLCJhX2FkZGl0aXZlIiwiYV9hY2N1bXVsYXRlIiwiYV9rZXlQb2ludHMiLCJhX3BhdGgiLCJhX2FuaW1hdGVUcmFuc2Zvcm1fdHlwZSIsImFfaG9yaXpfb3JpZ2luX3giLCJhX2hvcml6X29yaWdpbl95IiwiYV9ob3Jpel9hZHZfeCIsImFfdmVydF9vcmlnaW5feCIsImFfdmVydF9vcmlnaW5feSIsImFfdmVydF9hZHZfeSIsImFfdW5pY29kZSIsImFfZ2x5cGhfbmFtZSIsImFfb3JpZW50YXRpb24iLCJhX2FyYWJpY19mb3JtIiwiYV9sYW5nIiwiYV91MSIsImFfdTIiLCJhX2cxIiwiYV9nMiIsImFfayIsImFfZm9udF9mYW1pbHkiLCJhX2ZvbnRfc3R5bGUiLCJhX2ZvbnRfdmFyaWFudCIsImFfZm9udF93ZWlnaHQiLCJhX2ZvbnRfc3RyZXRjaCIsImFfZm9udF9zaXplIiwiYV91bmljb2RlX3JhbmdlIiwiYV91bml0c19wZXJfZW0iLCJhX3N0ZW12IiwiYV9zdGVtaCIsImFfc2xvcGUiLCJhX2NhcF9oZWlnaHQiLCJhX3hfaGVpZ2h0IiwiYV9hY2NlbnRfaGVpZ2h0IiwiYV9hc2NlbnQiLCJhX3dpZHRocyIsImFfYmJveCIsImFfaWRlb2dyYXBoaWMiLCJhX2FscGhhYmV0aWMiLCJhX21hdGhlbWF0aWNhbCIsImFfaGFuZ2luZyIsImFfdmlkZW9ncmFwaGljIiwiYV92X2FscGhhYmV0aWMiLCJhX3ZfbWF0aGVtYXRpY2FsIiwiYV92X2hhbmdpbmciLCJhX3VuZGVybGluZV9wb3NpdGlvbiIsImFfdW5kZXJsaW5lX3RoaWNrbmVzcyIsImFfc3RyaWtldGhyb3VnaF9wb3NpdGlvbiIsImFfc3RyaWtldGhyb3VnaF90aGlja25lc3MiLCJhX292ZXJsaW5lX3Bvc2l0aW9uIiwiYV9vdmVybGluZV90aGlja25lc3MiLCJhX3N0cmluZyIsImFfbmFtZSIsImFfYWxpZ25tZW50X2Jhc2VsaW5lIiwiYV9kb21pbmFudF9iYXNlbGluZSIsImFfb25hYm9ydCIsImFfb25hY3RpdmF0ZSIsImFfb25iZWdpbiIsImFfb25lbmQiLCJhX29uZXJyb3IiLCJhX29uZm9jdXNpbiIsImFfb25mb2N1c291dCIsImFfb25sb2FkIiwiYV9vbnJlcGVhdCIsImFfb25yZXNpemUiLCJhX29uc2Nyb2xsIiwiYV9vbnVubG9hZCIsImFfb256b29tIiwiYV9vbmNsaWNrIiwiYV9vbm1vdXNlZG93biIsImFfb25tb3VzZXVwIiwiYV9vbm1vdXNlb3ZlciIsImFfb25tb3VzZW91dCIsImFfb25tb3VzZW1vdmUiLCJhX29udG91Y2hzdGFydCIsImFfb250b3VjaGVuZCIsImFfb250b3VjaG1vdmUiLCJhX29udG91Y2hjYW5jZWwiLCJhX3N0b3BfY29sb3IiLCJhX3N0b3Bfb3BhY2l0eSIsImFfc3Ryb2tlIiwiYV9zdHJva2Vfd2lkdGgiLCJhX3N0cm9rZV9saW5lY2FwIiwiYV9zdHJva2VfbGluZWpvaW4iLCJhX3N0cm9rZV9taXRlcmxpbWl0IiwiYV9zdHJva2VfZGFzaGFycmF5IiwiYV9zdHJva2VfZGFzaG9mZnNldCIsImFfc3Ryb2tlX29wYWNpdHkiLCJzdmciLCJkZWZzIiwiZGVzYyIsInRpdGxlIiwidXNlIiwiaW1hZ2UiLCJzd2l0Y2gkMCIsInN0eWxlIiwicGF0aCIsInJlY3QiLCJjaXJjbGUiLCJlbGxpcHNlIiwibGluZSIsInBvbHlsaW5lIiwicG9seWdvbiIsInRleHQiLCJ0c3BhbiIsInRyZWYiLCJ0ZXh0UGF0aCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJnbHlwaFJlZiIsIm1hcmtlciIsImNvbG9yX3Byb2ZpbGUiLCJsaW5lYXJHcmFkaWVudCIsInJhZGlhbEdyYWRpZW50Iiwic3RvcCIsInBhdHRlcm4iLCJjbGlwUGF0aCIsImZpbHRlciIsImZlRGlzdGFudExpZ2h0IiwiZmVQb2ludExpZ2h0IiwiZmVTcG90TGlnaHQiLCJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUZ1bmNBIiwiZmVGdW5jRyIsImZlRnVuY0IiLCJmZUZ1bmNSIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRmxvb2QiLCJmZUdhdXNzaWFuQmx1ciIsImZlSW1hZ2UiLCJmZU1lcmdlIiwiZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJjdXJzb3IiLCJ2aWV3Iiwic2NyaXB0IiwiYW5pbWF0ZSIsImFuaW1hdGVNb3Rpb24iLCJtcGF0aCIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVUcmFuc2Zvcm0iLCJmb250IiwiZ2x5cGgiLCJtaXNzaW5nX2dseXBoIiwiaGtlcm4iLCJ2a2VybiIsImZvbnRfZmFjZSIsImZvbnRfZmFjZV9zcmMiLCJmb250X2ZhY2VfdXJpIiwiZm9udF9mYWNlX2Zvcm1hdCIsImZvbnRfZmFjZV9uYW1lIiwiZG9jX3RvZWx0IiwiZGF0YSIsImxlYWYiLCJub2RlIiwiY29lcmNlX2VsdCIsImZsb2F0X2F0dHJpYiQwIiwiaW50X2F0dHJpYiIsInN0cmluZ19hdHRyaWIkMCIsInVyaV9hdHRyaWIiLCJzcGFjZV9zZXBfYXR0cmliIiwiY29tbWFfc2VwX2F0dHJpYiIsInN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUiLCJzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQiLCJzdHJpbmdfb2ZfYm9vbCIsInN0cmluZ19vZl9jb29yZHMiLCJzdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUiLCJzdHJpbmdfb2ZfaW5fdmFsdWUiLCJzdHJpbmdfb2ZfaW50Iiwic3RyaW5nX29mX3BlcmNlbnRhZ2UiLCJzdHJpbmdfb2ZfZm91cmZsb2F0cyIsInN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYiIsInN0cmluZ19vZl9udW1iZXJzIiwic3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uIiwic3RyaW5nX29mX29mZnNldCIsIngkMCIsInN0cmluZ19vZl9vcmllbnQiLCJzdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5Iiwic3RyaW5nX29mX3RyYW5zZm9ybSIsIngkMiIsImFuZ2xlIiwiYW5nbGUkMCIsImFuZ2xlJDEiLCJ4JDEiLCJzdHJpbmdfb2ZfdHJhbnNmb3JtcyIsImFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMiLCJlbXB0eXRhZ3MiLCJib29sX2F0dHJpYiIsImNvbnN0YW50X2F0dHJpYiIsImxpbmt0eXBlc19hdHRyaWIiLCJtZWRpYWRlc2NfYXR0cmliIiwic3Jjc2V0X2F0dHJpYiIsImFfdGl0bGUiLCJhX3Byb3BlcnR5IiwiYV9vbmFmdGVycHJpbnQiLCJhX29uYmVmb3JlcHJpbnQiLCJhX29uYmVmb3JldW5sb2FkIiwiYV9vbmJsdXIiLCJhX29uY2FucGxheSIsImFfb25jYW5wbGF5dGhyb3VnaCIsImFfb25jaGFuZ2UiLCJhX29uY2xvc2UiLCJhX29uZHVyYXRpb25jaGFuZ2UiLCJhX29uZW1wdGllZCIsImFfb25lbmRlZCIsImFfb25mb2N1cyIsImFfb25mb3JtY2hhbmdlIiwiYV9vbmZvcm1pbnB1dCIsImFfb25oYXNoY2hhbmdlIiwiYV9vbmlucHV0IiwiYV9vbmludmFsaWQiLCJhX29ub2ZmbGluZSIsImFfb25vbmxpbmUiLCJhX29ucGF1c2UiLCJhX29ucGxheSIsImFfb25wbGF5aW5nIiwiYV9vbnBhZ2VoaWRlIiwiYV9vbnBhZ2VzaG93IiwiYV9vbnBvcHN0YXRlIiwiYV9vbnByb2dyZXNzIiwiYV9vbnJhdGVjaGFuZ2UiLCJhX29ucmVhZHlzdGF0ZWNoYW5nZSIsImFfb25yZWRvIiwiYV9vbnNlZWtlZCIsImFfb25zZWVraW5nIiwiYV9vbnNlbGVjdCIsImFfb25zaG93IiwiYV9vbnN0YWxsZWQiLCJhX29uc3RvcmFnZSIsImFfb25zdWJtaXQiLCJhX29uc3VzcGVuZCIsImFfb250aW1ldXBkYXRlIiwiYV9vbnVuZG8iLCJhX29udm9sdW1lY2hhbmdlIiwiYV9vbndhaXRpbmciLCJhX29ubG9hZGVkZGF0YSIsImFfb25sb2FkZWRtZXRhZGF0YSIsImFfb25sb2Fkc3RhcnQiLCJhX29ubWVzc2FnZSIsImFfb25tb3VzZXdoZWVsIiwiYV9vbmNvbnRleHRtZW51IiwiYV9vbmRibGNsaWNrIiwiYV9vbmRyYWciLCJhX29uZHJhZ2VuZCIsImFfb25kcmFnZW50ZXIiLCJhX29uZHJhZ2xlYXZlIiwiYV9vbmRyYWdvdmVyIiwiYV9vbmRyYWdzdGFydCIsImFfb25kcm9wIiwiYV9vbmtleXByZXNzIiwiYV9vbmtleWRvd24iLCJhX29ua2V5dXAiLCJhX3htbG5zIiwiYV9tYW5pZmVzdCIsImFfY2l0ZSIsImFfYWNjZXNza2V5IiwiYV9jaGFyc2V0IiwiYV9hY2NlcHRfY2hhcnNldCIsImFfYWNjZXB0IiwiYV9ocmVmbGFuZyIsImFfZG93bmxvYWQiLCJmaWxlIiwiYV9yZWwiLCJhX3RhYmluZGV4IiwiYV9taW1lX3R5cGUiLCJhX2FsdCIsInAiLCJhX3NyYyIsImFfbGFiZWxfZm9yIiwiYV9vdXRwdXRfZm9yIiwiYV9zZWxlY3RlZCIsImFfdGV4dF92YWx1ZSIsImFfaW50X3ZhbHVlIiwiYV92YWx1ZSIsImFfZmxvYXRfdmFsdWUiLCJhX2FjdGlvbiIsImFfZm9ybW1ldGhvZCIsImFfZW5jdHlwZSIsImFfY2hlY2tlZCIsImFfZGlzYWJsZWQiLCJhX3JlYWRvbmx5IiwiYV9tYXhsZW5ndGgiLCJhX21pbmxlbmd0aCIsImFfYWxsb3dmdWxsc2NyZWVuIiwiYV9hbGxvd3BheW1lbnRyZXF1ZXN0IiwiYV9yZWZlcnJlcnBvbGljeSIsImFfYXV0b2NvbXBsZXRlIiwiYV9hc3luYyIsImFfYXV0b2ZvY3VzIiwiYV9hdXRvcGxheSIsImFfbXV0ZWQiLCJhX2Nyb3Nzb3JpZ2luIiwiYV9pbnRlZ3JpdHkiLCJhX21lZGlhZ3JvdXAiLCJhX2NoYWxsZW5nZSIsImFfY29udGVudGVkaXRhYmxlIiwiY2UiLCJhX2NvbnRleHRtZW51IiwiYV9jb250cm9scyIsImFfZGlyIiwiYV9kcmFnZ2FibGUiLCJhX2Zvcm0iLCJhX2Zvcm1hY3Rpb24iLCJhX2Zvcm1lbmN0eXBlIiwiYV9mb3Jtbm92YWxpZGF0ZSIsImFfZm9ybXRhcmdldCIsImFfaGlkZGVuIiwiYV9oaWdoIiwiYV9pY29uIiwiYV9pc21hcCIsImFfa2V5dHlwZSIsImFfbGlzdCIsImFfbG9vcCIsImFfbG93IiwiYV9pbnB1dF9tYXgiLCJhX2lucHV0X21pbiIsImFfaW5wdXRtb2RlIiwiYV9ub3ZhbGlkYXRlIiwiYV9vcGVuIiwiYV9vcHRpbXVtIiwiYV9wYXR0ZXJuIiwiYV9wbGFjZWhvbGRlciIsImFfcG9zdGVyIiwiYV9wcmVsb2FkIiwiYV9wdWJkYXRlIiwiYV9yYWRpb2dyb3VwIiwiYV9yZXF1aXJlZCIsImFfcmV2ZXJzZWQiLCJhX3NhbmRib3giLCJhX3NwZWxsY2hlY2siLCJzYyIsImFfc2NvcGVkIiwiYV9zZWFtbGVzcyIsImFfc2l6ZXMiLCJzaXplcyIsImFfc3BhbiIsImFfc3JjbGFuZyIsImFfc3Jjc2V0IiwiYV9pbWdfc2l6ZXMiLCJhX3N0YXJ0IiwiYV9zdGVwIiwic3RlcCIsImFfdHJhbnNsYXRlIiwiYV93cmFwIiwiYV9zaXplIiwiYV9pbnB1dF90eXBlIiwiaXQiLCJhX21lbnVfdHlwZSIsImFfY29tbWFuZF90eXBlIiwiYV9idXR0b25fdHlwZSIsImJ0IiwiYV9zY3JpcHRfdHlwZSIsImFfbXVsdGlwbGUiLCJhX2NvbHMiLCJhX3Jvd3MiLCJhX3N1bW1hcnkiLCJhX2FsaWduIiwiYV9heGlzIiwiYV9jb2xzcGFuIiwiYV9oZWFkZXJzIiwiYV9yb3dzcGFuIiwiYV9zY29wZSIsImFfYm9yZGVyIiwiYV9ydWxlcyIsImFfY2hhciIsImFfZGF0YSIsImFfY29kZXR5cGUiLCJhX2ZyYW1lYm9yZGVyIiwiYV9tYXJnaW5oZWlnaHQiLCJhX21hcmdpbndpZHRoIiwiYV9zY3JvbGxpbmciLCJhX2NvbnRlbnQiLCJhX2h0dHBfZXF1aXYiLCJhX3JvbGUiLCJhX2FyaWEiLCJ0ZXJtaW5hbCIsInBsdXMiLCJvcHRpb25fY29ucyIsImJvZHkiLCJodG1sIiwiY29udGVudCIsImZvb3RlciIsImhlYWRlciIsInNlY3Rpb24iLCJuYXYiLCJlbnRpdHkiLCJzcGFjZSIsImNkYXRhIiwiY2RhdGFfc2NyaXB0IiwiY2RhdGFfc3R5bGUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZ3JvdXAiLCJhZGRyZXNzIiwiYmxvY2txdW90ZSIsImRpYWxvZyIsImRpdiIsInByZSIsImFiYnIiLCJiciIsImNpdGUiLCJkZm4iLCJlbSIsImtiZCIsInNhbXAiLCJzcGFuIiwic3Ryb25nIiwidGltZSIsInZhciQwIiwiZGwiLCJvbCIsInVsIiwiZGQiLCJsaSIsImhyIiwic21hbGwiLCJzdWIiLCJzdXAiLCJtYXJrIiwicnAiLCJydCIsInJ1YnkiLCJ3YnIiLCJiZG8iLCJkaXIiLCJhX2RhdGV0aW1lIiwiYV9zaGFwZSIsImFfY29vcmRzIiwiY29vcmRzIiwiYV91c2VtYXAiLCJhX2RlZmVyIiwiYV9sYWJlbCIsImFyZWEiLCJhbHQiLCJkZWwiLCJpbnMiLCJub3NjcmlwdCIsInRlbXBsYXRlIiwiYXJ0aWNsZSIsImFzaWRlIiwibWFpbiIsInZpZGVvX2F1ZGlvIiwic3JjcyIsInVyaSIsInNyY3MkMCIsImF1ZGlvIiwidmlkZW8iLCJjYW52YXMiLCJjb21tYW5kIiwibGFiZWwiLCJtZW51IiwiZW1iZWQiLCJzb3VyY2UiLCJtZXRlciIsIm91dHB1dF9lbHQiLCJmb3JtIiwiaW5wdXQiLCJrZXlnZW4iLCJvcHRpb24iLCJzZWxlY3QiLCJ0ZXh0YXJlYSIsImJ1dHRvbiIsImRhdGFsaXN0IiwicHJvZ3Jlc3MiLCJsZWdlbmQiLCJkZXRhaWxzIiwic3VtbWFyeSIsImZpZWxkc2V0Iiwib3B0Z3JvdXAiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiYyQwIiwiY2FwdGlvbiIsInRhYmxleCIsImNvbHVtbnMiLCJ0aGVhZCIsInRmb290IiwiY29sdW1ucyQwIiwiY29udGVudCQwIiwiY29udGVudCQxIiwidGQiLCJ0aCIsInRyIiwiY29sZ3JvdXAiLCJjb2wiLCJ0Ym9keSIsImlmcmFtZSIsIm9iamVjdCIsInBhcmFtcyIsImVsdHMkMCIsImltZyIsInBpY3R1cmUiLCJ0YWlsX25vZGUiLCJtZXRhIiwibGluayIsInJlbCIsImhyZWYiLCJiYXNlIiwicGFyYW0iLCJpbnRfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJzcGFjZV9zZXBfYXR0cmliJDAiLCJjb21tYV9zZXBfYXR0cmliJDAiLCJzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiIsInN0cmluZ19vZl9saW5rdHlwZSIsInN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4iLCJzdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kiLCJzdHJpbmdfb2ZfaW5wdXRfdHlwZSIsInN0cmluZ19vZl9zY3JpcHRfdHlwZSIsInN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUiLCJ0Iiwic3RyaW5nX29mX2NoYXJhY3RlciIsIm9ub2ZmX29mX2Jvb2wiLCJ1bm9wdGlvbl9zdHJpbmciLCJzdHJpbmdfb2Zfc3RlcCIsInN0cmluZ19vZl9zaXplcyIsInN0cmluZ19vZl9zYW5kYm94Iiwic3RyaW5nX29mX21lZGlhZGVzYyIsInN0cmluZ19vZl9saW5rdHlwZXMiLCJzdHJpbmdfb2Zfc3Jjc2V0IiwidXJsIiwidXJsJDAiLCJ2JDAiLCJ1cmwkMSIsInN0cmluZ19vZl9hdXRvY29tcGxldGUiLCJzdHJzIiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYWNvbnRlbnQiLCJhIiwiYW5hbWUiLCJuYW1lIiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJjb250ZW50IiwiZWx0IiwiZW1wdHkiLCJjb21tZW50IiwiYyIsInBjZGF0YSIsImQiLCJlbmNvZGVkcGNkYXRhIiwiZW50aXR5IiwiZSIsInJlX2VuZF9jZGF0YSIsImVuY29kZWRfY2RhdGEiLCJzMSIsInMyIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYiLCJvcHQiLCJzdGgiLCJub2RlIiwiY2hpbGRyZW4iLCJwcmludCIsImZtdCIsIngiLCJwcCQwIiwicHBfZWx0JDAiLCJtZXJnZSIsIm1hcF9wYXRjaCIsIm1hcF9kYXRhIiwiZW1wdHkiLCJjcmVhdGUiLCJsIiwic2VuZCIsImluaXRpYWxfZXZlbnQiLCJjdXJyZW50IiwibXNnIiwicCIsImV2ZW50IiwiZnJvbV9ldmVudCIsImNvbnN0JDAiLCJ4IiwibWFwX21zZyIsImYiLCJtYXAiLCJzIiwicyQwIiwibXNnJDAiLCJ2YWx1ZSIsImMiLCJwYXRjaCIsInNldCIsImZvbGQiLCJhY2MiLCJhY2MkMCIsInNpZ25hbCIsIm9wdCIsInN0aCIsImVxIiwibCQwIiwiZnJvbV9zaWduYWwiLCJkJDAiLCJkIiwiaSIsImkkMCIsIngkMCIsImkkMSIsImoiLCJpJDIiLCJwJDUiLCJsJDciLCJuIiwicCQzIiwiaSQzIiwicCQ0IiwibCQyIiwib3AiLCJ4cyIsIm4kMCIsImFjYyQxIiwibiQxIiwibCQxIiwieHMkMCIsIngkMSIsIm4kMiIsImFjYyQyIiwieCQyIiwiaSQ0IiwiYSIsIm9mZnNldCIsImkkNSIsImEkMCIsImxlbiIsImkkNiIsInYiLCJqJDAiLCJpMCIsImgiLCJwJDAiLCJpMCQwIiwibCQzIiwicCQxIiwiaTAkMSIsImwkNCIsInAkMiIsImkwJDIiLCJsJDUiLCJsJDYiLCJlcXVhbCIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsIngyIiwibDEkMSIsIngxIiwibDIkMSIsIm1lbSIsImhhc2giLCJkaWZmIiwic3RoJDAiLCJseCQxIiwibHkkMyIsImFkZCIsInJlbW92ZSIsIm1lbXgiLCJtZW15IiwibGVmdCIsImx4IiwibHkiLCJseCQwIiwieSIsImx5JDAiLCJseSQxIiwiYWNjJDMiLCJhY2MkNCIsImx5JDIiLCJ5JDAiLCJhY2MkNSIsIm4kMyIsImFjYyQ2IiwiYWNjJDciLCJvcHQkMCIsImVtcHR5JDAiLCJjb25zIiwic25vYyIsImluc2VydCIsInVwZGF0ZSIsIm1vdmUiLCJpbmRleCIsImhkIiwidGwiLCJ1cGRhdGVfZXEiLCJoYW5kbGUiLCJkYXRhIiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZXEiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25fcyIsImZpcnN0IiwiZSIsInJlc3VsdCIsImNvbmNhdCIsInYxIiwidjIiLCJzaXplMSIsInNpemUyIiwic2l6ZV93aXRoX3BhdGNoIiwic2l6ZXgiLCJzaXplX3dpdGhfc2V0IiwicG9zIiwibSIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwidXBkYXRlX3BhdGNoMSIsInVwZGF0ZV9wYXRjaDIiLCJwMSIsInAyIiwidHVwbGVfZXYiLCJwMiQyIiwicDIkMyIsInAxJDAiLCJwMiQwIiwiczIiLCJzMSIsInAxJDEiLCJzMiQwIiwicDIkMSIsIm1lcmdlZF9ldiIsImludmVyc2UiLCJyZXYiLCJ0IiwiZmlsdGVyIiwicHJlZCIsInNpemUiLCJmaWx0ZXJfbGlzdCIsInJlcyIsInRoZWlyX2kiLCJteV9pIiwibXlfaSQwIiwidGhlaXJfaSQwIiwicmVzJDAiLCJ0aGVpcl9pJDEiLCJub3JtYWxpc2UiLCJ1cGRhdGVfaW5kZXhfaW5zZXJ0IiwiaW5zZXJ0X3Bvc19mdWxsX2xpc3QiLCJ2aXNpYmxlIiwiaW5zZXJ0X3Bvc19mdWxsX2xpc3QkMCIsInVwZGF0YWJsZXMiLCJkaXNwbGFjZWQiLCJsZWZ0X2Fsb25lIiwiZGlzcGxhY2VkX2luX2ZpbHRlcmVkIiwidXBkYXRhYmxlcyQwIiwidXBkYXRlX2oiLCJqX2Z1bGxfbGlzdCIsImpfZmlsdGVyZWRfbGlzdCIsIm5ld19qX2ZpbHRlcmVkIiwiaW5zZXJ0X3Bvc19maWx0ZXJlZCIsInVwZGF0ZV9pbmRleF9tb3ZlIiwiZnJvbV9mdWxsX2xpc3QiLCJ0b19mdWxsX2xpc3QiLCJ0b19maWx0ZXJlZCIsIndhc192aXNpYmxlIiwiZm9yd2FyZCIsImlfZnVsbCIsImRlbHRhIiwiaV9maWx0ZXJlZCIsIm5ld192YWwiLCJpX2Z1bGwkMCIsImRlbHRhJDAiLCJpX2ZpbHRlcmVkJDAiLCJuZXdfdmFsJDAiLCJ0b19maWx0ZXJlZCQwIiwiY29udmVydF9wIiwicmVtb3ZlX3Bvc19mdWxsX2xpc3QiLCJyZXQiLCJuZXdfaiIsImxhc3RfaSIsInVwZGF0ZV9wb3NfZnVsbF9saXN0Iiwib2xkX2oiLCJ1cGRhdGVfaiQwIiwidXBkYXRhYmxlcyQxIiwibm9uZSIsInVwZGF0ZV9qJDEiLCJwcmV2aW91c19wb3NfZmlsdGVyZWQiLCJuZXdfcG9zX2ZpbHRlcmVkX2xpc3QiLCJvZmZzZXRfZnVsbCIsIm9yaWdpbl9mdWxsIiwib3JpZ2luX2Z1bGwkMCIsImRlc3RfZnVsbCIsIm9yaWdpbl9maWx0ZXJlZCIsImRlc3RfZmlsdGVyZWQiLCJzbWFsbF9vbmVzIiwiZmlsdGVyX2UiLCJmb3JfYWxsIiwiZm4iLCJtYXliZV91cGRhdGUiLCJpbml0IiwidXBkYXRlX2lkeF9hZnRlciIsInVwZGF0ZXMiLCJ2JDAiLCJrIiwiayQwIiwiZyIsImtleSIsInciLCJ3JDAiLCJ2JDEiLCJnJDAiLCJzeW1ib2wiLCJ4IiwieSIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgiLCJtaW4iLCJlcXVhbCQwIiwiZXF1YWwkMSIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJjb21wYXJlJDIiLCJlcXVhbCQyIiwibWF4JDAiLCJtaW4kMCIsInJlYnVpbGRfbm9kZSIsIm9mX2VsZW1lbnQiLCJlbHQiLCJvZl9ub2RlIiwib2ZfcGNkYXRhIiwib2ZfaHRtbCIsIm9mX2hlYWQiLCJvZl9saW5rIiwib2ZfdGl0bGUiLCJvZl9tZXRhIiwib2ZfYmFzZSIsIm9mX3N0eWxlIiwib2ZfYm9keSIsIm9mX2Zvcm0iLCJvZl9vcHRncm91cCIsIm9mX29wdGlvbiIsIm9mX3NlbGVjdCIsIm9mX2lucHV0Iiwib2ZfdGV4dGFyZWEiLCJvZl9idXR0b24iLCJvZl9sYWJlbCIsIm9mX2ZpZWxkc2V0Iiwib2ZfbGVnZW5kIiwib2ZfdWwiLCJvZl9vbCIsIm9mX2RsIiwib2ZfbGkiLCJvZl9kaXYiLCJvZl9wIiwib2ZfaGVhZGluZyIsIm9mX2Jsb2NrcXVvdGUiLCJvZl9wcmUiLCJvZl9iciIsIm9mX2hyIiwib2ZfaW5zIiwib2ZfZGVsIiwib2ZfYSIsIm9mX2ltZyIsIm9mX29iamVjdCIsIm9mX3BhcmFtIiwib2ZfYXJlYSIsIm9mX21hcCIsIm9mX3NjcmlwdCIsIm9mX3RkIiwib2ZfdHIiLCJvZl9jb2wiLCJvZl90Zm9vdCIsIm9mX3RoZWFkIiwib2ZfdGJvZHkiLCJvZl9jYXB0aW9uIiwib2ZfdGFibGUiLCJvZl9jYW52YXMiLCJvZl9pZnJhbWUiLCJvZl9hdWRpbyIsIm9mX3ZpZGVvIiwib2ZfaDEiLCJvZl9oMiIsIm9mX2gzIiwib2ZfaDQiLCJvZl9oNSIsIm9mX2g2Iiwib2ZfYWJiciIsIm9mX2FkZHJlc3MiLCJvZl9hcnRpY2xlIiwib2ZfYXNpZGUiLCJvZl9iIiwib2ZfYmRvIiwib2ZfY2l0ZSIsIm9mX2NvZGUiLCJvZl9jb2xncm91cCIsIm9mX2NvbW1hbmQiLCJvZl9kYXRhbGlzdCIsIm9mX2RkIiwib2ZfZGV0YWlscyIsIm9mX2RmbiIsIm9mX2R0Iiwib2ZfZW0iLCJvZl9lbWJlZCIsIm9mX2ZpZ2NhcHRpb24iLCJvZl9maWd1cmUiLCJvZl9mb290ZXIiLCJvZl9oZWFkZXIiLCJvZl9oZ3JvdXAiLCJvZl9pIiwib2Zfa2JkIiwib2Zfa2V5Z2VuIiwib2ZfbWFpbiIsIm9mX21hcmsiLCJvZl9tZW51Iiwib2ZfbWV0ZXIiLCJvZl9uYXYiLCJvZl9ub3NjcmlwdCIsIm9mX291dHB1dCIsIm9mX3Byb2dyZXNzIiwib2ZfcSIsIm9mX3JwIiwib2ZfcnQiLCJvZl9ydWJ5Iiwib2Zfc2FtcCIsIm9mX3NlY3Rpb24iLCJvZl9zbWFsbCIsIm9mX3NvdXJjZSIsIm9mX3NwYW4iLCJvZl9zdHJvbmciLCJvZl9zdWIiLCJvZl9zdW1tYXJ5Iiwib2Zfc3VwIiwib2ZfdGgiLCJvZl90aW1lIiwib2ZfdSIsIm9mX3ZhciIsIm9mX3diciIsIm9mX29wdEdyb3VwIiwib2ZfdGV4dEFyZWEiLCJvZl9maWVsZFNldCIsIm9mX3VMaXN0Iiwib2Zfb0xpc3QiLCJvZl9kTGlzdCIsIm9mX3BhcmFncmFwaCIsIm9mX3F1b3RlIiwib2ZfbW9kIiwib2ZfYW5jaG9yIiwib2ZfaW1hZ2UiLCJvZl90YWJsZUNlbGwiLCJvZl90YWJsZVJvdyIsIm9mX3RhYmxlQ29sIiwib2ZfdGFibGVTZWN0aW9uIiwib2ZfdGFibGVDYXB0aW9uIiwib2ZfaUZyYW1lIiwid2Vha01hcCIsIm1hcCIsInJldGFpbiIsIm5vZGUiLCJrZWVwbWUiLCJwcmV2IiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYXR0ciIsIm5hbWUiLCJ2IiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJlbXB0eSIsImNvbW1lbnQiLCJjIiwicGNkYXRhIiwiZW5jb2RlZHBjZGF0YSIsInN0cmluZ19mb2xkIiwicG9zIiwiaW5pdCIsImYiLCJyIiwiaSIsImludmFsaWRfZW50aXR5IiwiZSIsInBhcnNlX2ludCIsImJhc2UiLCJhY2MiLCJkIiwiZW50aXR5IiwibGVuIiwic3RyIiwiaXRlcl9wcm9wX3Byb3RlY3RlZCIsIm4iLCJhdHRhY2hfYXR0cmlicyIsImwiLCJhdHQiLCJuJDAiLCJoIiwiZXYiLCJoJDAiLCJoJDEiLCJoJDIiLCJhIiwibGVhZiIsIm9wdCIsInN0aCIsImNoaWxkcmVuIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYkMCIsIm5vZGUkMCIsImVsdCQwIiwiYWRkX3RvIiwiY29udGVudCIsImtlZXAiLCJpZCIsImJvZHkiLCJoZWFkIiwiaHRtbCIsInJldHVybiQwIiwiZm1hcCIsIm5pbCIsInNpbmdsZXRvbiIsImNvbnMiLCJ4cyIsIm1hcCQwIiwiYXBwZW5kIiwiaW5zZXJ0QXQiLCJkb20iLCJyZW1vdmVDaGlsZHJlbiIsInVwZGF0ZV9jaGlsZHJlbiIsIm5vZGVzIiwibXNnIiwicCIsImkkMCIsImkkMSIsImkkMiIsIngkMCIsImkkMyIsImkkNCIsIm9sZCIsIm1vdmUiLCJpJDUiLCJpJDYiLCJpJDciLCJmaWx0ZXJfYXR0cmliIiwib24iLCJhJDAiLCJhdHRyJDAiLCJmbG9hdF9hdHRyaWIkMCIsImludF9hdHRyaWIkMCIsInN0cmluZ19hdHRyaWIkMCIsInNwYWNlX3NlcF9hdHRyaWIkMCIsImNvbW1hX3NlcF9hdHRyaWIkMCIsImV2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwia2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIkMCIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJ1cmlzX2F0dHJpYiQwIiwicGNkYXRhJDAiLCJlbmNvZGVkcGNkYXRhJDAiLCJlbnRpdHkkMCIsIm5vZGUkMSIsIm5vZGUkMiIsImdldCIsIm5vZGUiLCJzZXQiLCJkYXRhIiwicmVtb3ZlIiwiY3JlYXRlIiwic2VxIiwiY2xlYXIiLCJpc19lbXB0eSIsImxlbmd0aCIsImN1cnIkMSIsImN1cnIiLCJsZW4iLCJsZW4kMCIsImN1cnIkMCIsImFkZF9sIiwiYWRkX3IiLCJ0YWtlX2wiLCJ0YWtlX3IiLCJ0YWtlX29wdF9sIiwidGFrZV9vcHRfciIsInRyYW5zZmVyX2wiLCJzMSIsInMyIiwidHJhbnNmZXJfciIsIml0ZXJfbCIsImYiLCJpdGVyX3IiLCJpdGVyX25vZGVfbCIsIml0ZXJfbm9kZV9yIiwiZm9sZF9sIiwiYWNjIiwiY3VyciQyIiwiYWNjJDAiLCJhY2MkMSIsImZvbGRfciIsImZpbmRfbm9kZV9sIiwiZmluZF9ub2RlX3IiLCJmaW5kX25vZGVfb3B0X2wiLCJmaW5kX25vZGVfb3B0X3IiLCJjb21wYXJlIiwic3RhdGVfb2ZfcmVzdWx0IiwieCIsImV4biIsInVuZGVybHlpbmciLCJwIiwicCQwIiwicCQxIiwic2V0X3Byb21pc2Vfc3RhdGUiLCJzdGF0ZSIsImhhbmRsZV9hbGwiLCJoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lIiwidiIsInJ1biIsImUiLCJuZXh0X2tleV9pZCIsIm5ld19rZXkiLCJpZCIsImN1cnJlbnRfc3RvcmFnZSIsImtleSIsInJlZnJlc2giLCJ2YWx1ZSIsIndpdGhfdmFsdWUiLCJuZXdfc3RvcmFnZSIsInNhdmVkX3N0b3JhZ2UiLCJyZXN1bHQiLCJleG4kMCIsImNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyIsImwxIiwibDIiLCJjbGVhbl91cF9jYWxsYmFja19jZWxscyIsImNhbGxiYWNrcyIsImwxJDAiLCJsMiQwIiwiY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsIiwiY2VsbCIsInBzIiwiY2xlYW51cHNfZGVmZXJyZWQiLCJhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUiLCJleGlzdGluZyIsIm5vZGUkMCIsImFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhYyIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiIsInNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlciIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiQwIiwiYWRkX2NhbmNlbF9jYWxsYmFjayIsImFzeW5jX2V4Y2VwdGlvbl9ob29rIiwiaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvIiwicnVuX2NhbGxiYWNrcyIsImlzX2NhbmNlbGVkIiwiZnMiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMiIsInJlc3QiLCJmcyQwIiwicmVzdCQwIiwiaXRlcl9saXN0JDAiLCJmcyQxIiwiZnMkMiIsInJlc3QkMSIsInN0b3JhZ2UiLCJpdGVyX2NhbGxiYWNrX2xpc3QiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMSIsIml0ZXJfbGlzdCIsImYkMCIsIml0ZXJfY2FsbGJhY2tfbGlzdCQwIiwiY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIiwiZGVmZXJyZWRfY2FsbGJhY2tzIiwiZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpIiwibGVhdmVfcmVzb2x1dGlvbl9sb29wIiwic3RvcmFnZV9zbmFwc2hvdCIsInJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AiLCJhYmFuZG9uX3dha2V1cHMiLCJydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0iLCJvcHQiLCJzdGgiLCJhbGxvd19kZWZlcnJpbmciLCJzdGgkMCIsIm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCIsInNob3VsZF9kZWZlciIsInJlc29sdmUiLCJydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQiLCJpZl9kZWZlcnJlZCIsInJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaSIsImRlZmVycmVkX3Jlc3VsdCIsImRlZmVycmVkX2NhbGxiYWNrIiwiaW1tZWRpYXRlX3Jlc3VsdCIsImRlZmVycmVkX3JlY29yZCIsIndha2V1cF9nZW5lcmFsIiwiYXBpX2Z1bmN0aW9uX25hbWUiLCJyIiwicmVzdWx0JDAiLCJ3YWtldXBfcmVzdWx0Iiwid2FrZXVwIiwid2FrZXVwX2V4biIsIndha2V1cF9sYXRlcl9nZW5lcmFsIiwid2FrZXVwX2xhdGVyX3Jlc3VsdCIsIndha2V1cF9sYXRlciIsIndha2V1cF9sYXRlcl9leG4iLCJjYW5jZWwiLCJjYW5jZWxlZF9yZXN1bHQiLCJjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIiwiY2FsbGJhY2tzX2FjY3VtdWxhdG9yIiwicCQyIiwicGFyYW0iLCJyZXR1cm4kMCIsIm9mX3Jlc3VsdCIsImZhaWwiLCJyZXR1cm5fdW5pdCIsInJldHVybl9ub25lIiwicmV0dXJuX3NvbWUiLCJyZXR1cm5fbmlsIiwicmV0dXJuX3RydWUiLCJyZXR1cm5fZmFsc2UiLCJyZXR1cm5fb2siLCJyZXR1cm5fZXJyb3IiLCJmYWlsX3dpdGgiLCJtc2ciLCJmYWlsX2ludmFsaWRfYXJnIiwibmV3X3BlbmRpbmciLCJob3dfdG9fY2FuY2VsIiwid2FpdCIsInRhc2siLCJhZGRfdGFza19yIiwic2VxdWVuY2UiLCJhZGRfdGFza19sIiwicHJvdGVjdGVkJDAiLCJwX2ludGVybmFsIiwiY2FsbGJhY2siLCJwX3Jlc3VsdCIsInJlbW92ZV90aGVfY2FsbGJhY2siLCJwX2NhbGxiYWNrcyIsIm5vX2NhbmNlbCIsIm1ha2VfaW50b19wcm94eSIsIm91dGVyX3Byb21pc2UiLCJ1c2VyX3Byb3ZpZGVkX3Byb21pc2UiLCJvdXRlcl9jYWxsYmFja3MiLCJyZWd1bGFyX2NhbGxiYWNrcyIsImNsZWFudXBzX2RlZmVycmVkJDAiLCJyZWd1bGFyX2NhbGxiYWNrcyQwIiwiY2FuY2VsX2NhbGxiYWNrcyIsInN5bWJvbF9iaW5kIiwiY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsIiwiYmFja3RyYWNlX2JpbmQiLCJhZGRfbG9jIiwic3ltYm9sIiwicF9yZXN1bHQkMCIsImNhdGNoJDAiLCJoIiwiYmFja3RyYWNlX2NhdGNoIiwidHJ5X2JpbmQiLCJleG4kMSIsInAkMyIsImJhY2t0cmFjZV90cnlfYmluZCIsImZpbmFsaXplIiwiYmFja3RyYWNlX2ZpbmFsaXplIiwib25fY2FuY2VsIiwib25fc3VjY2VzcyIsImNhbGxiYWNrX2lmX2RlZmVycmVkIiwib25fZmFpbHVyZSIsIm9uX3Rlcm1pbmF0aW9uIiwib25fYW55IiwiZyIsIndyYXBfaW5fY2FuY2VsYWJsZSIsInBfdW5kZXJseWluZyIsImRvbnRfd2FpdCIsImFzeW5jIiwiaWdub3JlX3Jlc3VsdCIsImpvaW4iLCJudW1iZXJfcGVuZGluZ19pbl9wcyIsImpvaW5fcmVzdWx0IiwibmV3X3Jlc3VsdCIsInBzJDAiLCJwcyQxIiwiYm90aCIsInAxIiwicDIiLCJwYWlyIiwicDEkMCIsInAyJDAiLCJ2MiIsInYxIiwiYWxsIiwieSIsInZzIiwiaW5kZXgiLCJpJDEiLCJpIiwiaSQwIiwiY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4iLCJ0b3RhbCQxIiwicHMkMiIsInBzJDMiLCJ0b3RhbCQyIiwicmVqZWN0ZWQkMSIsInRvdGFsIiwicmVqZWN0ZWQiLCJyZWplY3RlZCQwIiwidG90YWwkMCIsIm50aF9yZXNvbHZlZCIsIm4iLCJuJDAiLCJuJDIiLCJuJDEiLCJudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW4iLCJwcm5nIiwiY2hvb3NlIiwicGljayIsInFzIiwiY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0IiwicmVzdWx0cyIsInJlc3VsdHMkMCIsInJlc3VsdHMkMSIsIm5jaG9vc2UiLCJ2JDAiLCJucGljayIsIm5jaG9vc2Vfc3BsaXQiLCJwZW5kaW5nX2FjYyIsInBfaW50ZXJuYWwkMCIsInBlbmRpbmdfYWNjJDAiLCJ0b19yZXNvbHZlIiwiZnVsZmlsbGVkIiwicGVuZGluZyIsInBlbmRpbmckMCIsImZ1bGZpbGxlZCQwIiwiZGVidWdfc3RhdGVfaXMiLCJleHBlY3RlZF9zdGF0ZSIsImlzX3NsZWVwaW5nIiwicG9sbCIsImFwcGx5Iiwid3JhcCIsIndyYXAxIiwieDEiLCJ3cmFwMiIsIngyIiwid3JhcDMiLCJ4MyIsIndyYXA0IiwieDQiLCJ3cmFwNSIsIng1Iiwid3JhcDYiLCJ4NiIsIndyYXA3IiwieDciLCJwYXVzZV9ob29rIiwicGF1c2VkIiwicGF1c2UiLCJ3YWtldXBfcGF1c2VkIiwidG1wIiwicmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIiLCJhYmFuZG9uX3BhdXNlZCIsInBhdXNlZF9jb3VudCIsIm1hcCIsInQiLCJiaW5kIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJsZXQkMCIsImlzX29uIiwic3dpdGNoJDAiLCJjaGVjayIsImFkZF9ob29rIiwiaG9vayIsIm9zIiwiYWRkX2hvb2tfb3JfZXhlYyIsInR1cm5fb2ZmIiwiaG9va3MiLCJ3aXRoX3N3aXRjaCIsImZuIiwiZW1wdHkiLCJyZXR1cm5fbHd0IiwiY29ucyIsImNvbnNfbHd0Iiwic2VxMSIsInNlcTIiLCJuZXh0IiwiYXBwZW5kIiwieCQwIiwibWFwX3MiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyX21hcF9zIiwib2siLCJmaWx0ZXIiLCJmaWx0ZXJfcyIsImZsYXRfbWFwX2FwcCIsInRhaWwiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImF1eCIsImZvbGRfbGVmdF9zIiwiaXRlciIsIml0ZXJfcyIsIml0ZXJfcCIsIml0ZXJfbiIsIm1heF9jb25jdXJyZW5jeSIsIm1lc3NhZ2UiLCJsb29wIiwicnVubmluZyIsImF2YWlsYWJsZSIsImVsdCIsImNvbXBsZXRlIiwidW5mb2xkIiwidSIsImV4YyQwIiwiZXhjIiwidSQwIiwidW5mb2xkX2x3dCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCQwIiwib2Zfc2VxIiwibmV4dCQwIiwib2Zfc2VxX2x3dCIsIm5ld19ub2RlIiwiY2xvbmUiLCJzIiwiZnJvbV9zb3VyY2UiLCJzb3VyY2UiLCJjbG9zZSIsImNsb3NlZCIsImZyb20iLCJmcm9tX2RpcmVjdCIsImlzX2Nsb3NlZCIsImVucXVldWUiLCJsYXN0IiwibmV3X2xhc3QiLCJlbnF1ZXVlJDAiLCJjcmVhdGVfd2l0aF9yZWZlcmVuY2UiLCJwdXNoX3NpZ25hbF9yZXNvbHZlciIsInB1c2hfc2lnbmFsIiwicHVzaF9zaWduYWxfcmVzb2x2ZXIkMCIsInB1c2giLCJvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfd2FpdGVyIiwiYSIsInN0cmVhbSIsInMkMCIsIm9mX2x3dF9zZXEiLCJvZl9pdGVyIiwib2ZfYXJyYXkiLCJvZl9zdHJpbmciLCJub3RpZnlfcHVzaGVyIiwiaW5mbyIsIm9sZF93YWtlbmVyIiwid2FrZW5lciIsIndhaXRlciIsInNlbGZfMSIsInNpemUiLCJuZXdfd2FrZW5lciIsImNyZWF0ZV9ib3VuZGVkIiwicHVzaF93YWtlbmVyIiwicHVzaF93YWl0ZXIiLCJ3YWtlbmVyX2NlbGwiLCJmZWVkIiwidGhyZWFkIiwicHVzaCQwIiwiY29uc3VtZSIsInBlZWtfcmVjIiwicGVlayIsIm5wZWVrX3JlYyIsIm5vZGUkMSIsIm5wZWVrIiwiZ2V0X3JlYyIsImdldF9leG5fcmVjIiwid3JhcF9leG4iLCJuZ2V0X3JlYyIsIm5nZXQiLCJnZXRfd2hpbGVfcmVjIiwidGVzdCIsImdldF93aGlsZSIsImdldF93aGlsZV9zX3JlYyIsImdldF93aGlsZV9zIiwibmV4dF9yZWMiLCJsYXN0X25ld19yZWMiLCJ4JDEiLCJsYXN0X25ldyIsInRvX2xpc3RfcmVjIiwidG9fbGlzdCIsInRvX3N0cmluZ19yZWMiLCJidWYiLCJ0b19zdHJpbmciLCJqdW5rIiwibmp1bmtfcmVjIiwibmp1bmsiLCJqdW5rX3doaWxlX3JlYyIsImp1bmtfd2hpbGUiLCJqdW5rX3doaWxlX3NfcmVjIiwianVua193aGlsZV9zIiwianVua19vbGQiLCJnZXRfYXZhaWxhYmxlIiwiZ2V0X2F2YWlsYWJsZV91cF90byIsIm1hcF9saXN0IiwicGVuZGluZ3MiLCJtYXBfbGlzdF9zIiwiZmxhdHRlbiIsImZvbGRfcmVjIiwiZm9sZCIsImZvbGRfc19yZWMiLCJmb2xkX3MiLCJpdGVyX3JlYyIsIml0ZXJfc19yZWMiLCJpdGVyX3BfcmVjIiwicmVzIiwiZmluZF9yZWMiLCJmaW5kIiwiZmluZF9zX3JlYyIsImZpbmRfcyIsImZpbmRfbWFwX3JlYyIsImZpbmRfbWFwIiwiZmluZF9tYXBfc19yZWMiLCJmaW5kX21hcF9zIiwiY29tYmluZSIsInQxIiwidDIiLCJuMSIsIm4yIiwiY3VycmVudF9zIiwiY29uY2F0Iiwic190b3AiLCJzdHJlYW1zIiwic3RyZWFtcyQwIiwibCQwIiwicGFyc2UiLCJoZXhkdW1wIiwibnVtIiwicG9zIiwicG9zJDEiLCJwb3MkMiIsImNoIiwibGlmdCIsImVycm9yIiwibWFwX2Vycm9yIiwibWFwX2VyciIsImdldF9leG4iLCJiaW5kX2Vycm9yIiwiYmluZF9sd3QiLCJiaW5kX3Jlc3VsdCIsImJpbmRfbHd0X2Vycm9yIiwiYmluZF9sd3RfZXJyIiwiYiIsInNldF9vbmNlIiwiYiQwIiwiYSQwIiwiaXRlcl9lcnJvciIsIm1hcCQwIiwibGluayIsImMyIiwicjIiLCJjMSIsInIxIiwiYyIsImlucyIsInQkMCIsInRzJDAiLCJ0JDEiLCJ0cyQxIiwidHMiLCJhZGQiLCJ1bmlvbiIsInRzMiIsInRzMSIsImZpbmRfbWluIiwibG9va3VwX21pbiIsImdldF9taW4iLCJyZW1vdmVfbWluIiwidGwiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXAiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiIsImhkIiwiaXRlcmlfcyIsIml0ZXJpX3AiLCJpbm5lciIsImNvbGxlY3RfcmV2IiwibWFwX3AiLCJmaWx0ZXJfbWFwX3AiLCJjb2xsZWN0X29wdGlvbmFsX3JldiIsIm1hcGlfcyIsIm1hcGlfcCIsInJldl9tYXBfYXBwZW5kX3MiLCJyZXZfbWFwX3MiLCJyZXZfbWFwX3AiLCJsJDEiLCJmb2xkX3JpZ2h0X3MiLCJmb3JfYWxsX3MiLCJmb3JfYWxsX3AiLCJibCIsImV4aXN0c19zIiwiZXhpc3RzX3AiLCJvcHRpb25hbGl6ZSIsImZpbHRlcl9wIiwicGFydGl0aW9uX3MiLCJhY2MxIiwiYWNjMiIsInBhcnRpdGlvbl9wIiwiZ3JvdXAxIiwiZ3JvdXAyIiwibSIsInZhbGlkYXRlIiwic3RoJDEiLCJkaXNwb3NlIiwiY3JlYXRlX21lbWJlciIsInJlbGVhc2UiLCJ2YWxpZGF0ZV9hbmRfcmV0dXJuIiwidXNlIiwiY2xlYXJlZCIsImNsZWFyZWQkMCIsInByb21pc2UiLCJlbGVtZW50IiwiZWxlbWVudHMiLCJvbGRfY2xlYXJlZCIsIndhaXRfcXVldWVfbGVuZ3RoIiwiY3JlYXRlX2VtcHR5IiwicHV0IiwibXZhciIsInciLCJ3JDAiLCJ0YWtlX2F2YWlsYWJsZSIsInRha2UiLCJsb2NrIiwidW5sb2NrIiwid2l0aF9sb2NrIiwiaXNfbG9ja2VkIiwibXV0ZXgiLCJjdmFyIiwic2lnbmFsIiwiYXJnIiwiYnJvYWRjYXN0Iiwid2FrZW5lcnMiLCJicm9hZGNhc3RfZXhuIiwid2l0aF9maW5hbGlzZXIiLCJmIiwiZXZlbnQiLCJyIiwieCIsIm5leHQiLCJldiIsIndha2VuZXIiLCJ3YWl0ZXIiLCJldiQwIiwibGltaXQiLCJlIiwibGltaXRlciIsImRlbGF5ZWQiLCJwdXNoIiwiaXRlciIsImNlbGwiLCJjZWxsJDAiLCJjYW5jZWxfdGhyZWFkIiwidCIsImZyb20iLCJsb29wIiwidG9fc3RyZWFtIiwic2V0X3JlZiIsInN0cmVhbSIsIm9mX3N0cmVhbSIsInYiLCJleG4kMCIsImV4biIsImRlbGF5IiwidGhyZWFkIiwic2VuZCIsImtlZXAiLCJydW5fcCIsInJ1bl9zIiwibXV0ZXgiLCJtYXBfcCIsIm1hcF9zIiwiYXBwX3AiLCJlZiIsImFwcF9zIiwiZmlsdGVyX3AiLCJmaWx0ZXJfcyIsImZtYXBfcCIsImZtYXBfcyIsImRpZmZfcyIsInByZXZpb3VzIiwieSIsImFjY3VtX3MiLCJhY2MiLCJhY2MkMCIsImZvbGRfcyIsInJldl9mb2xkIiwibCIsIm1lcmdlX3MiLCJlbCIsIndpdGhfZmluYWxpc2VyJDAiLCJzaWduYWwiLCJsaW1pdCQwIiwiZXEiLCJzIiwia2VlcCQwIiwicnVuX3MkMCIsIm1hcF9zJDAiLCJhcHBfcyQwIiwic2YiLCJmaWx0ZXJfcyQwIiwiaSIsImZtYXBfcyQwIiwiZGlmZl9zJDAiLCJzYW1wbGVfcyIsImFjY3VtX3MkMCIsImZvbGRfcyQwIiwicmV2X2ZvbGQkMCIsIm1lcmdlX3MkMCIsInNsIiwibDFfcyIsInMxIiwibDJfcyIsInMyIiwieDEiLCJ4MiIsImwzX3MiLCJzMyIsIngzIiwibDRfcyIsInM0IiwieDQiLCJsNV9zIiwiczUiLCJ4NSIsImw2X3MiLCJzNiIsIng2IiwiYmluZF9zIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJjIiwicGVyZm9ybV9yYXciLCJvcHQiLCJjb250ZW50X3R5cGUiLCJwcm9ncmVzcyIsInVwbG9hZF9wcm9ncmVzcyIsImNvbnRlbnRzIiwib3ZlcnJpZGVfbWltZV90eXBlIiwib3ZlcnJpZGVfbWV0aG9kIiwid2l0aF9jcmVkZW50aWFscyIsInN0aCIsImhlYWRlcnMiLCJzdGgkMCIsImdldF9hcmdzIiwic3RoJDEiLCJjaGVja19oZWFkZXJzIiwidXJsIiwiYyQwIiwiYXJncyIsIm9ubHlfc3RyaW5ncyIsImZvcm1fY29udGVudHMiLCJ2YWx1ZSIsIm5hbWUiLCJiIiwiY29udGVudHMkMCIsIm92ZXJyaWRlX21ldGhvZCQwIiwibSIsInYiLCJmb3JtIiwiY29udGVudF90eXBlJDEiLCJtZXRob2QiLCJtZXRob2QkMCIsInVybCQwIiwidyIsInJlcyIsIm1pbWVfdHlwZSIsImMkMSIsImNvbnRlbnRfdHlwZSQyIiwibiIsImhlYWRlcnMkMCIsInMiLCJzdCIsImRvX2NoZWNrX2hlYWRlcnMiLCJjb2RlIiwicmVzcG9uc2UiLCJjb2RlJDAiLCJjb2RlJDEiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDQiLCJkb2MiLCJwcm9ncmVzcyQwIiwidXBsb2FkX3Byb2dyZXNzJDAiLCJsIiwibCQwIiwiZiIsImIkMCIsInBlcmZvcm1fcmF3X3VybCIsInBlcmZvcm0iLCJnZXQiLCJzbGVlcCIsImQiLCJ0IiwiaWQiLCJ5aWVsZCQwIiwid2FrZXVwIiwicHJlcnJfc3RyaW5nIiwiZXhuIiwiY2FsbF9jdXN0b21fdXJsIiwidGltZW91dCIsIm1ha2VfdXJpIiwicHJlZml4IiwidXNlcl9jYiIsImVycm9yX2NiIiwic2l6ZSIsImkiLCJ1cmkiLCJmaW5hbGl6ZSIsInBhcmVudCIsImV4ZWN1dGVkIiwiZGVsYXkiLCJ3YWl0IiwibmV3X3QiLCJhZGRfcGFyYW0iLCJjYWxsIiwicGFyYW0iLCJjYm5hbWUiLCJodHRwIiwibmV3X3VybCIsImh0dHAkMCIsImZpbGUiLCJzeW1ib2xfYmluZCIsImFzeW5jIiwib3B0X21hcCIsIm1ha2VfZXZlbnQiLCJldmVudF9raW5kIiwidXNlX2NhcHR1cmUiLCJwYXNzaXZlIiwidGFyZ2V0IiwiZWwiLCJjYW5jZWwiLCJldiIsImNhdGNoX2NhbmNlbCIsImUiLCJ3aXRoX2Vycm9yX2xvZyIsInNlcV9sb29wIiwiZXZoIiwiaGFuZGxlciIsImNhbmNlbF9oYW5kbGVyIiwiY2FuY2VsbGVkIiwiY3VyIiwiY3VyX2hhbmRsZXIiLCJsdCIsImF1eCIsImFzeW5jX2xvb3AiLCJidWZmZXJlZF9sb29wIiwiY2FuY2VsX3F1ZXVlIiwicXVldWUiLCJzcGF3biIsInNwYXduZXIiLCJydW5uZXIiLCJ0bCIsImZ1bmNfbGltaXRlZF9sb29wIiwiZXZlbnQiLCJsaW1pdGVkX2Z1bmMiLCJjb3VudCIsIm5iIiwibGltaXRlZF9sb29wIiwiZWxhcHNlZF90aW1lIiwiY2xpY2siLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJmb2N1cyIsImJsdXIiLCJzY3JvbGwiLCJzdWJtaXQiLCJzZWxlY3QiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwibG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9hZHN0YXJ0IiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwibW91c2V3aGVlbCIsImR4IiwiZHkiLCJ3aGVlbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInRyYW5zaXRpb25lbmQiLCJlbHQiLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbmNhbmNlbCIsImNsaWNrcyIsImNvcGllcyIsImN1dHMiLCJwYXN0ZXMiLCJkYmxjbGlja3MiLCJtb3VzZWRvd25zIiwibW91c2V1cHMiLCJtb3VzZW92ZXJzIiwibW91c2Vtb3ZlcyIsIm1vdXNlb3V0cyIsImtleXByZXNzZXMiLCJrZXlkb3ducyIsImtleXVwcyIsImNoYW5nZXMiLCJpbnB1dHMiLCJ0aW1ldXBkYXRlcyIsImRyYWdzdGFydHMiLCJkcmFnZW5kcyIsImRyYWdlbnRlcnMiLCJkcmFnb3ZlcnMiLCJkcmFnbGVhdmVzIiwiZHJhZ3MiLCJkcm9wcyIsIm1vdXNld2hlZWxzIiwid2hlZWxzIiwidG91Y2hzdGFydHMiLCJ0b3VjaG1vdmVzIiwidG91Y2hlbmRzIiwidG91Y2hjYW5jZWxzIiwiZm9jdXNlcyIsImJsdXJzIiwic2Nyb2xscyIsInN1Ym1pdHMiLCJzZWxlY3RzIiwiYWJvcnRzIiwiZXJyb3JzIiwibG9hZHMiLCJjYW5wbGF5cyIsImNhbnBsYXl0aHJvdWdocyIsImR1cmF0aW9uY2hhbmdlcyIsImVtcHRpZWRzIiwiZW5kZWRzIiwibG9hZGVkZGF0YXMiLCJsb2FkZWRtZXRhZGF0YXMiLCJsb2Fkc3RhcnRzIiwicGF1c2VzIiwicGxheXMiLCJwbGF5aW5ncyIsInJhdGVjaGFuZ2VzIiwic2Vla2VkcyIsInNlZWtpbmdzIiwic3RhbGxlZHMiLCJzdXNwZW5kcyIsInZvbHVtZWNoYW5nZXMiLCJ3YWl0aW5ncyIsImxvc3Rwb2ludGVyY2FwdHVyZXMiLCJnb3Rwb2ludGVyY2FwdHVyZXMiLCJwb2ludGVyZW50ZXJzIiwicG9pbnRlcmNhbmNlbHMiLCJwb2ludGVyZG93bnMiLCJwb2ludGVybGVhdmVzIiwicG9pbnRlcm1vdmVzIiwicG9pbnRlcm91dHMiLCJwb2ludGVyb3ZlcnMiLCJwb2ludGVydXBzIiwidHJhbnNpdGlvbmVuZHMiLCJ0cmFuc2l0aW9uc3RhcnRzIiwidHJhbnNpdGlvbnJ1bnMiLCJ0cmFuc2l0aW9uY2FuY2VscyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwib25sb2FkIiwiZG9tQ29udGVudExvYWRlZCIsIndha2V1cF9leG4iLCJyZWd1bGFyIiwicmVhZHlzdGF0ZWNoYW5nZSIsImluaXQiLCJvbnVubG9hZCIsIm9uYmVmb3JldW5sb2FkIiwib25yZXNpemUiLCJvbm9yaWVudGF0aW9uY2hhbmdlIiwib25wb3BzdGF0ZSIsIm9uaGFzaGNoYW5nZSIsIm9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpeiIsIm9ucmVzaXplcyIsIm9ub3JpZW50YXRpb25jaGFuZ2VzIiwib25wb3BzdGF0ZXMiLCJvbmhhc2hjaGFuZ2VzIiwib25vcmllbnRhdGlvbmNoYW5nZXNfb3Jfb25yZXNpIiwibGltaXRlZF9vbnJlc2l6ZXMiLCJsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzIiwibGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vIiwicmVhZGVyIiwia2luZCIsImZpbGVSZWFkZXIiLCJyZWFkQXNCaW5hcnlTdHJpbmciLCJyZWFkQXNUZXh0IiwicmVhZEFzVGV4dF93aXRoRW5jb2RpbmciLCJyZWFkQXNEYXRhVVJMIiwiY3JlYXRlIiwib3B0Iiwic3RoIiwiZXEiLCJzZXRfc2lnbmFsIiwic2lnbmFsIiwicmVnaXN0ZXIiLCJob29rZWQiLCJmIiwidiIsInNldCIsInZhbHVlIiwiYmluZCIsIm5ld19ob29rZWQiLCJ0b19yZWFjdF9zaWduYWwiLCJjcmVhdGUkMCIsInNlbmRfZXZlbnQiLCJldmVudCIsInJlZ2lzdGVyJDAiLCJzZW5kIiwibWFwIiwidG9fcmVhY3RfZXZlbnQiLCJ0b3NzJDAiLCJlIiwiaWQkMCIsImRlYnVnJDAiLCJpbmZvJDAiLCJub3RpY2UkMCIsIndhcm5pbmckMCIsImVycm9yJDAiLCJmYXRhbCQwIiwianF1ZXJ5X29uIiwic2VsZWN0b3IiLCJoYW5kbGVyIiwib3B0aW9uX3N0cmluZyIsImlkIiwicGxvdFBORyQwIiwicGxvdFN0eWxlSWQiLCJwbG90RGl2SWQiLCJ0aXRsZSIsInBsb3ROYW1lIiwicGxvdFNWRyQwIiwic2F2ZUZpbGUkMCIsImRhdGEiLCJtaW1lIiwiZmlsZW5hbWUiLCJtZXRob2RfdG9fc3RyaW5nIiwiYWpheF9yZXF1ZXN0IiwidGltZW91dCIsInVybCIsIm1ldGgiLCJ0aW1lb3V0JDAiLCJzdGF0dXMiLCJyZXNwb25zZSIsImRhdGEkMCIsImFzeW5jIiwibG9jIiwidGFzayIsImV4biIsImd1aWQkMCIsIm1vZGFsJDAiLCJhY3Rpb24iLCJlbGVtZW50X2RhdGEiLCJlbGVtZW50IiwibGFiZWwiLCJjcmVhdGVfc29ydCIsImNoaWxkcmVuX3ZhbHVlIiwiaGlkZV9jb2RlbWlycm9yIiwic2hvd19jb2RlbWlycm9yIiwiYXRvbSIsImxpc3QiLCJsYWJlbCIsImxpc3RfdHJ1ZSIsImxpc3RfZmFsc2UiLCJsYWJlbF90cnVlIiwibGFiZWxfZmFsc2UiLCJzZXRfZXNjYXBlIiwiZm10IiwiZXNjYXBlIiwiZmx1c2gwIiwicHJpbnQwIiwidGFnZjAiLCJpc190YWciLCJtb3QiLCJ0YWciLCJtY3QiLCJwcmludCIsInMiLCJwIiwibiIsInRhZ2YiLCJkZWZpbmVfc3R5bGVzIiwiZXNjYXBlJDAiLCJsIiwidGJsMSIsInRibDIiLCJzdHlsZSIsInN0eWxlX25hbWUiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJlc2MiLCJlc2MkMCIsInMwIiwiczEiLCJwcF9vcGVuX3hib3giLCJpbmRlbnQiLCJleHRyYV9ib3giLCJ3cmFwIiwib3Blbl90YWciLCJjbG9zZV90YWciLCJ0YWdfc3RyaW5nIiwibyIsImZwcmludF90IiwicGFyYW0kMCIsInAkMCIsImZwcmludF9saXN0IiwicCQxIiwiY2wiLCJzZXAiLCJvcCIsInRsIiwiaGQiLCJmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQiLCJ4IiwibHAiLCJsYWIiLCJsJDAiLCJwJDIiLCJjbCQwIiwic2VwJDAiLCJvcCQwIiwiaW5kZW50JDAiLCJmIiwiZnByaW50X29wdF9sYWJlbCIsInBhcmFtIiwiY2wkMSIsIm9wJDEiLCJiYXNlX2luZGVudCIsInNlcF9pbmRlbnQiLCJjbG9zZV9leHRyYSQwIiwib3Blbl9leHRyYSQwIiwiY2xvc2VfZXh0cmEiLCJvcGVuX2V4dHJhIiwidG9fZm9ybWF0dGVyIiwiaW5pdF9hY2MiLCJtZXJnZV9hY2MiLCJmb3JjZV9icmVha3MxIiwiZm9yY2VfYnJlYWtzMiIsImZvcmNlX2JyZWFrczEkMCIsIm1hcF9ub2RlIiwiZm9yY2VfYnJlYWtzIiwiY2hpbGRyZW4iLCJhIiwiYiIsImxwJDAiLCJhdXgiLCJ4JDAiLCJhY2MiLCJuZXdfY2hpbGRyZW4iLCJhY2NzIiwiYWNjJDAiLCJ4eXMiLCJ5IiwieDIiLCJ4MSIsInBhcmFtJDEiLCJhY2MwIiwiYWNjMSIsIm5ld194MSIsImFjYzIiLCJuZXdfeDIiLCJhY2MkMSIsImFjYyQyIiwibmV3X3giLCJ0b19idWZmZXIiLCJvcHQiLCJidWYiLCJzdGgiLCJzdGgkMCIsInN0eWxlcyIsInRvX3N0cmluZyIsInRvX2NoYW5uZWwiLCJvYyIsInRvX3N0ZG91dCIsInRvX3N0ZGVyciIsImZwcmludF90JDAiLCJsYWJlbCQwIiwidG9fYnVmZmVyJDAiLCJ0b19zdHJpbmckMCIsInRvX2Zvcm1hdHRlciQwIiwidG9fY2hhbm5lbCQwIiwidG9fc3Rkb3V0JDAiLCJ0b19zdGRlcnIkMCIsImVycm9yIiwicyIsInN0cmluZzhfb2ZfaW50IiwieCIsImkiLCJzdHJpbmc0X29mX2ludCIsInByaW50X2JpdHMiLCJvcHQiLCJsZW4iLCJzdGgiLCJwb3MiLCJzbGVuIiwibGVuJDAiLCJsZW4kMSIsInIiLCJrIiwiaiIsImMiLCJpbnRfc2l6ZSIsImR1bW15X3R5cGVfaWQiLCJuIiwiY3JlYXRlX3R5cGVfaWQiLCJlcXVhbCIsInQyIiwieDIiLCJ0MSIsIngxIiwiaGFzaCIsImNyZWF0ZSIsImNsZWFyIiwidGJsIiwicHV0IiwicG9zMCIsImNyZWF0ZSQwIiwiY2xlYXIkMCIsInB1dCQwIiwiZ2V0IiwidHJ5X3ByZXJlYWQiLCJpYiIsInJlYWQiLCJwb3MkMCIsInJlYWRfY2hhciIsImMkMCIsInBlZWsiLCJmcm9tX2J5dGVzIiwic3RoJDAiLCJzaHJsZW4iLCJmcm9tX3N0cmluZyIsImZyb21fY2hhbm5lbCIsImljIiwibiQwIiwicmVtX2xlbiIsInRvX3JlYWQiLCJhY2N1IiwiYWNjdSQwIiwicmVhbGx5X3JlYWQiLCJyZWFsbHlfZXh0ZW5kIiwiYiIsInNsZW4wIiwicmVxbGVuIiwiZmx1c2hfdG9fb3V0cHV0IiwiYWJzdHJhY3Rfb3V0cHV0IiwiZmx1c2hfdG9fY2hhbm5lbCIsIm9jIiwibWFrZV9yb29tIiwiY3JlYXRlX2NoYW5uZWxfd3JpdGVyIiwiZmx1c2hfY2hhbm5lbF93cml0ZXIiLCJjcmVhdGVfb3V0cHV0X3dyaXRlciIsIm91dCIsImV4dGVuZCIsImFsbG9jIiwiYWRkX3N1YiIsImJsaXQiLCJhZGRfc3Vic3RyaW5nIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9jaGFyIiwidW5zYWZlX2FkZF9jaGFyIiwiYWRkX2NoYXIyIiwiYzEiLCJjMiIsImFkZF9jaGFyNCIsImMzIiwiYzQiLCJyZXNldCIsImNvbnRlbnRzIiwibSIsIm1heF9oaWdoZXN0X2J5dGUiLCJtYXhfdmludF9ieXRlcyIsIm0kMCIsImgiLCJ1bnNpZ25lZF9vZl9zaWduZWQiLCJ3cml0ZV91dmludCIsImJ1ZiIsImJ5dGUkMCIsIndyaXRlX3N2aW50IiwidXZpbnRfb2ZfdWludCIsImJ1ZmZlciIsInN2aW50X29mX2ludCIsInJlYWRfdXZpbnQiLCJhdmFpbCIsInJlYWRfc3ZpbnQiLCJjaGVja19lbmRfb2ZfaW5wdXQiLCJ1aW50X29mX3V2aW50IiwiaW50X29mX3N2aW50IiwicmVhZF9zdHJlYW0iLCJvZl9zdHJpbmciLCJpJDIiLCJpJDAiLCJuJDEiLCJpJDEiLCJzdCIsImEiLCJuZXh0IiwiYSQwIiwid3JpdGVfc3RyZWFtIiwidG9fc3RyaW5nIiwiY2h1bmtfbGVuIiwiYWNjIiwiZmx1c2hfY2h1bmsiLCJsIiwidGwiLCJ0bCQwIiwiaGQiLCJuJDMiLCJuJDIiLCJ0ZXN0Iiwic3QkMCIsImwkMCIsImJvb2xfdGFnIiwiaW50OF90YWciLCJpbnQxNl90YWciLCJpbnQzMl90YWciLCJpbnQ2NF90YWciLCJmbG9hdDMyX3RhZyIsImZsb2F0NjRfdGFnIiwidXZpbnRfdGFnIiwic3ZpbnRfdGFnIiwic3RyaW5nX3RhZyIsImFycmF5X3RhZyIsInR1cGxlX3RhZyIsInJlY29yZF90YWciLCJudW1fdmFyaWFudF90YWciLCJ2YXJpYW50X3RhZyIsInVuaXRfdGFnIiwidGFibGVfdGFnIiwic2hhcmVkX3RhZyIsIm1ha2Vfc2lnbmVkIiwiaGFzaF9uYW1lIiwid3JpdGVfaGFzaHRhZyIsIm9iIiwiaCQwIiwiaGFzX2FyZyIsImgkMSIsImgkMiIsImgkMyIsInN0cmluZ19vZl9oYXNodGFnIiwicmVhZF9oYXNodGFnIiwiY29udCIsIngwIiwieDMiLCJ4NCIsInJlYWRfZmllbGRfaGFzaHRhZyIsIndyaXRlX251bXRhZyIsInJlYWRfbnVtdGFnIiwibWFrZV91bmhhc2giLCJzJDAiLCJ3cml0ZV90YWciLCJ3cml0ZV91bnRhZ2dlZF91bml0Iiwid3JpdGVfdW50YWdnZWRfYm9vbCIsIndyaXRlX3VudGFnZ2VkX2NoYXIiLCJ3cml0ZV91bnRhZ2dlZF9pbnQ4Iiwid3JpdGVfdW50YWdnZWRfaW50MTYiLCJ3cml0ZV91bnRhZ2dlZF9pbnQzMiIsImhpZ2giLCJ3cml0ZV91bnRhZ2dlZF9mbG9hdDMyIiwiZmxvYXRfZW5kaWFubmVzcyIsInJlYWRfdW50YWdnZWRfZmxvYXQ2NCIsImokMCIsIndyaXRlX3VudGFnZ2VkX2Zsb2F0NjQiLCJ3cml0ZV91bnRhZ2dlZF9pbnQ2NCIsInNhZmV0eV90ZXN0IiwieSIsIndyaXRlX3VudGFnZ2VkX3N0cmluZyIsIndyaXRlX3VudGFnZ2VkX3V2aW50Iiwid3JpdGVfdW50YWdnZWRfc3ZpbnQiLCJ3cml0ZV91bml0Iiwid3JpdGVfYm9vbCIsIndyaXRlX2NoYXIiLCJ3cml0ZV9pbnQ4Iiwid3JpdGVfaW50MTYiLCJ3cml0ZV9pbnQzMiIsIndyaXRlX2ludDY0Iiwid3JpdGVfZmxvYXQzMiIsIndyaXRlX2Zsb2F0NjQiLCJ3cml0ZV9zdHJpbmciLCJ3cml0ZV90IiwidGFnZ2VkIiwidGFnZ2VkJDAiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJvIiwibm9kZV90YWciLCJ4JDMiLCJ4JDQiLCJ4JDUiLCJhJDEiLCJ4JDYiLCJ2IiwieCQxMCIsIngkMTEiLCJ4JDEyIiwieCQ3IiwibyQwIiwiYSQyIiwiZmllbGRzIiwicm93X251bSIsImNvbF9udW0iLCJ0YWciLCJhaSIsIngkOCIsInYkMCIsIngkOSIsIm9mZnNldCIsIndyaXRlX3RyZWUiLCJzdHJpbmdfb2ZfdHJlZSIsInRhZ19vZl90cmVlIiwicmVhZF90YWciLCJyZWFkX3VudGFnZ2VkX3VuaXQiLCJyZWFkX3VudGFnZ2VkX2Jvb2wiLCJyZWFkX3VudGFnZ2VkX2NoYXIiLCJyZWFkX3VudGFnZ2VkX2ludDgiLCJyZWFkX3VudGFnZ2VkX2ludDE2IiwicmVhZF91bnRhZ2dlZF9pbnQzMiIsInJlYWRfdW50YWdnZWRfZmxvYXQzMiIsInJlYWRfdW50YWdnZWRfaW50NjQiLCJyZWFkX3VudGFnZ2VkX3N0cmluZyIsInN0ciIsInJlbSIsImJ5dGVzX3JlYWQiLCJyZWFkX3VudGFnZ2VkX3V2aW50IiwicmVhZF91bnRhZ2dlZF9zdmludCIsInJlYWRfdW5pdCIsInJlYWRfYm9vbCIsInJlYWRfaW50OCIsInJlYWRfaW50MTYiLCJyZWFkX2ludDMyIiwicmVhZF9pbnQ2NCIsInJlYWRfZmxvYXQzMiIsInJlYWRfZmxvYXQ2NCIsInJlYWRfc3RyaW5nIiwicmVhZF90cmVlIiwidW5oYXNoIiwicmVhZF9hcnJheSIsInJlYWRlcl9vZl90YWciLCJyZWFkX3R1cGxlIiwicmVhZF9yZWNvcmQiLCJuYW1lIiwicmVhZF9udW1fdmFyaWFudF9jb250IiwicmVhZF9udW1fdmFyaWFudCIsInJlYWRfdmFyaWFudF9jb250IiwicmVhZF92YXJpYW50IiwicmVhZF90YWJsZSIsInJlYWRlcnMiLCJyZWFkX3NoYXJlZCIsInRyZWVfb2Zfc3RyaW5nIiwic2tpcF9ieXRlcyIsInNraXBfdW5pdCIsInNraXBfYm9vbCIsInNraXBfaW50OCIsInNraXBfaW50MTYiLCJza2lwX2ludDMyIiwic2tpcF9pbnQ2NCIsInNraXBfZmxvYXQzMiIsInNraXBfZmxvYXQ2NCIsInNraXBfdXZpbnQiLCJza2lwX3N2aW50Iiwic2tpcF9zdHJpbmciLCJza2lwX2FycmF5Iiwic2tpcHBlcl9vZl90YWciLCJza2lwX3R1cGxlIiwic2tpcCIsInNraXBfcmVjb3JkIiwic2tpcF9udW1fdmFyaWFudF9jb250Iiwic2tpcF9udW1fdmFyaWFudCIsInNraXBfdmFyaWFudF9jb250Iiwic2tpcF92YXJpYW50Iiwic2tpcF90YWJsZSIsImFycmF5IiwicmVjb3JkIiwidHVwbGUiLCJtYXAiLCJmIiwiZm9ybWF0Iiwic2hhcmVkIiwib3B0X25hbWUiLCJzdWZmaXgiLCJjb25zIiwicCIsImFhIiwiaGVhZGVyIiwiaGVhZGVyJDAiLCJyZWNvcmRfYXJyYXkiLCJpbml0Iiwidmlld19vZl90cmVlIiwidCIsInByaW50X3ZpZXdfb2ZfdHJlZSIsIm91dHB1dF92aWV3X29mX3RyZWUiLCJ2aWV3IiwicHJpbnRfdmlldyIsIm91dHB1dF92aWV3Iiwic3BsaXQiLCJzdG9wIiwic3RhcnQiLCJsb2FkX2xpbmVzIiwibG9hZCIsInN5bWJvbCIsImRlZmF1bHRfZGljdF9wYXRoIiwibG9hZF9kaWN0aW9uYXJ5IiwiZGljX2ZpbGUiLCJmbiIsImUkMCIsImUiLCJ3cml0ZV91bmlxIiwibGFzdCIsInNhdmVfZGljdGlvbmFyeSIsImZpbmFsbHkkMCIsInN0cmVhbSQxIiwic3RyZWFtJDAiLCJzdHJlYW0iLCJ2ZXJzaW9uIiwib2NhbWxfbGV4X3RhYmxlcyIsIm9jYW1sX2xleF90YWJsZXMkMCIsIm9jYW1sX2xleF90YWJsZXMkMSIsImpzb25fZXJyb3IiLCJzIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJ3cml0ZV9mbG9hdF9wcmVjIiwid3JpdGVfc3RkX2Zsb2F0Iiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMiLCJ3cml0ZV9pbnRsaXQiLCJ3cml0ZV9mbG9hdGxpdCIsIndyaXRlX3N0cmluZ2xpdCIsIml0ZXIyIiwiZl9lbHQiLCJmX3NlcCIsImwkMCIsInkkMCIsImwiLCJ5Iiwid3JpdGVfanNvbiIsImwkMSIsIndyaXRlX3R1cGxlIiwibyIsInMkMCIsIndyaXRlX3ZhcmlhbnQiLCJ3cml0ZV9hc3NvYyIsIndyaXRlX2xpc3QiLCJiIiwicyQxIiwiZiIsInMkMiIsInMkMyIsIndyaXRlX3N0ZF9qc29uIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ0b19idWZmZXIiLCJzdWYiLCJzdGgkMCIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJhIiwidiQwIiwibCQyIiwicHAiLCJmbXQiLCJ0dXAiLCJzZXAiLCJ2YWx1ZSIsIm5hbWUiLCJ4JDEiLCJ4cyIsImtleSIsInhzJDAiLCJ4JDAiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJ4JDUiLCJ4JDYiLCJzaG93IiwiZXF1YWwiLCJhJDAiLCJiJDAiLCJiJDEiLCJhJDEiLCJ5cyIsImNvbXBhcmVfa2V5cyIsImtleSQwIiwieXMkMCIsInZhbHVlJDAiLCJyZXN1bHQiLCJ5cyQxIiwieHMkMSIsImIkMiIsImEkMiIsIm5hbWUkMCIsInJlc3VsdCQwIiwiYiQzIiwiYSQzIiwiYiQ0IiwiYSQ0IiwiYiQ1IiwiYSQ1IiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicHBfbGlzdCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwicyQ0Iiwib3AiLCJyZXByZXNlbnRhdGlvbiIsInJlcHJlc2VudGF0aW9uJDAiLCJwcCQwIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwiaGV4JDAiLCJ3cml0ZV9zcGVjaWFsJDAiLCJ3cml0ZV9zdHJpbmckMCIsImpzb25fc3RyaW5nX29mX3N0cmluZyQwIiwid3JpdGVfbnVsbCQwIiwid3JpdGVfYm9vbCQwIiwid3JpdGVfZGlnaXRzJDAiLCJ3cml0ZV9pbnQkMCIsImZsb2F0X25lZWRzX3BlcmlvZCQwIiwid3JpdGVfZmxvYXQkMCIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjJDAiLCJ3cml0ZV9mbG9hdF9wcmVjJDAiLCJ3cml0ZV9zdGRfZmxvYXQkMCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjJDAiLCJpdGVyMiQwIiwiZl9zZXAkMCIsIndyaXRlX2pzb24kMCIsIndyaXRlX2Fzc29jJDAiLCJ3cml0ZV9saXN0JDAiLCJ3cml0ZV9zdGRfanNvbiQwIiwidG9fYnVmZmVyJDAiLCJ0b19zdHJpbmckMCIsInRvX2NoYW5uZWwkMCIsInRvX291dHB1dCQwIiwidG9fZmlsZSQwIiwic2VxX3RvX2J1ZmZlciQwIiwic2VxX3RvX3N0cmluZyQwIiwic2VxX3RvX2NoYW5uZWwkMCIsInNlcV90b19maWxlJDAiLCJzb3J0JDAiLCJwcF9saXN0JDAiLCJpc19hdG9tJDAiLCJmb3JtYXQkMCIsInBwJDEiLCJwcCQyIiwic2hvdyQwIiwiZXF1YWwkMCIsInByZXR0eV9wcmludCQwIiwicHJldHR5X3RvX3N0cmluZyQwIiwicHJldHR5X3RvX2NoYW5uZWwkMCIsImhleCQxIiwiY3VzdG9tX2Vycm9yIiwiZGVzY3IiLCJsZXhidWYiLCJvZmZzIiwiYm9sIiwicG9zMSIsInBvczIiLCJmaWxlX2xpbmUiLCJieXRlcyIsIm1zZyIsImxleGVyX2Vycm9yIiwicmVhZF9qdW5rIiwibG9uZ19lcnJvciIsImp1bmsiLCJleHRyYV9qdW5rIiwibWluMTAiLCJtYXgxMCIsImV4dHJhY3RfcG9zaXRpdmVfaW50IiwiZXh0cmFjdF9uZWdhdGl2ZV9pbnQiLCJuZXdsaW5lIiwiYWRkX2xleGVtZSIsInJlYWRfanNvbiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwiZmluaXNoX3N0cmluZyIsImFjYyIsInJlYWRfc3BhY2UiLCJyZWFkX29iamVjdF9lbmQiLCJmaWVsZF9uYW1lIiwicmVhZF9pZGVudCIsInJlYWRfY29sb24iLCJyZWFkX29iamVjdF9zZXAiLCJmaWVsZF9uYW1lJDAiLCJhY2MkMCIsInJlYWRfYXJyYXlfZW5kIiwicmVhZF9hcnJheV9zZXAiLCJmaW5pc2hfY29tbWVudCIsImZpbmlzaF9lc2NhcGVkX2NoYXIiLCJtYXBfc3RyaW5nIiwiYyQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsImMkMSIsImQkMCIsImZpbmlzaF9zdHJpbmdsaXQiLCJmaW5pc2hfdmFyaWFudCIsInJlYWRfZ3QiLCJyZWFkX2x0IiwicmVhZF9jb21tYSIsInN0YXJ0X2FueV92YXJpYW50IiwicmVhZF9lb2YiLCJyZWFkX251bGwiLCJyZWFkX251bGxfaWZfcG9zc2libGUiLCJyZWFkX2Jvb2wiLCJyZWFkX2ludCIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsIm1hcF9pZGVudCIsInJlYWRfc2VxdWVuY2UiLCJyZWFkX2NlbGwiLCJpbml0X2FjYyIsInJlYWRfbGlzdF9yZXYiLCJyZWFkX3R1cGxlIiwicmVhZF90dXBsZV9lbmQiLCJyZWFkX3R1cGxlX2VuZDIiLCJyZWFkX3R1cGxlX3NlcCIsInJlYWRfdHVwbGVfc2VwMiIsInJlYWRfYWJzdHJhY3RfZmllbGRzIiwicmVhZF9rZXkiLCJyZWFkX2ZpZWxkIiwicmVhZF9sY3VybCIsInN0YXJ0X2FueV90dXBsZSIsInJlYWRfbHBhciIsInJlYWRfcnBhciIsInJlYWRfbGJyIiwicmVhZF9yYnIiLCJza2lwX2pzb24iLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQiLCJza2lwX2lkZW50IiwiZmluaXNoX3NraXBfdmFyaWFudCIsImJ1ZmZlcl9qc29uIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQiLCJidWZmZXJfc3BhY2UiLCJidWZmZXJfaWRlbnQiLCJidWZmZXJfY29sb24iLCJvY2FtbF9sZXhfc3RhdGUkMyIsIm9jYW1sX2xleF9zdGF0ZSQ0Iiwib2NhbWxfbGV4X3N0YXRlJDUiLCJvY2FtbF9sZXhfc3RhdGUkNiIsIm9jYW1sX2xleF9zdGF0ZSQ3Iiwib2NhbWxfbGV4X3N0YXRlJDgiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQiLCJyZWFkX2ludDgiLCJyZWFkX2xpc3QiLCJyZWFkX2FycmF5IiwidGwiLCJyIiwicmVhZF9maWVsZHMiLCJmcm9tX2xleGJ1ZiIsImZyb21fc3RyaW5nJDAiLCJmcm9tX2NoYW5uZWwkMCIsImljIiwiZnJvbV9maWxlIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwiZmluX2UkMCIsImZpbl9lIiwic2VxX2Zyb21fc3RyaW5nIiwic2VxX2Zyb21fY2hhbm5lbCIsInNlcV9mcm9tX2ZpbGUiLCJmbmFtZSQwIiwibGluZXNlcV9mcm9tX2NoYW5uZWwiLCJsbnVtMCIsImxpbmUiLCJsaW5lc2VxX2Zyb21fZmlsZSIsInByZXR0aWZ5IiwiY29tcGFjdCIsInR5cGVyciIsImpzIiwibWVtYmVyIiwib2JqIiwicGF0aCIsIm9iaiQwIiwiYXNzb2MiLCJvYmokMSIsImluZGV4Iiwid3JhcHBlZF9pbmRleCIsIm1hcCIsInRvX2Fzc29jIiwidG9fb3B0aW9uIiwidG9fYm9vbCIsInRvX2Jvb2xfb3B0aW9uIiwidG9fbnVtYmVyIiwidG9fbnVtYmVyX29wdGlvbiIsInRvX2Zsb2F0IiwidG9fZmxvYXRfb3B0aW9uIiwidG9faW50IiwidG9faW50X29wdGlvbiIsInRvX2xpc3QiLCJ0b19zdHJpbmckMSIsInRvX3N0cmluZ19vcHRpb24iLCJjb252ZXJ0X2VhY2giLCJmaWx0ZXJfbWFwIiwiZmxhdHRlbiIsImwyIiwiZmlsdGVyX2luZGV4IiwiZmlsdGVyX2xpc3QiLCJmaWx0ZXJfbWVtYmVyIiwiZmlsdGVyX2Fzc29jIiwiZmlsdGVyX2Jvb2wiLCJmaWx0ZXJfaW50IiwiZmlsdGVyX2Zsb2F0IiwiZmlsdGVyX251bWJlciIsImZpbHRlcl9zdHJpbmciLCJrZXlzIiwidmFsdWVzIiwiY29tYmluZSIsImZpcnN0Iiwic2Vjb25kIiwidG9fYmFzaWMiLCJoZXgkMiIsIndyaXRlX3NwZWNpYWwkMSIsIndyaXRlX3N0cmluZyQxIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDEiLCJ3cml0ZV9udWxsJDEiLCJ3cml0ZV9ib29sJDEiLCJ3cml0ZV9kaWdpdHMkMSIsIndyaXRlX2ludCQxIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDEiLCJ3cml0ZV9mbG9hdCQxIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2Zsb2F0X3ByZWMkMSIsIndyaXRlX3N0ZF9mbG9hdCQxIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2ludGxpdCQwIiwiaXRlcjIkMSIsImZfc2VwJDEiLCJ3cml0ZV9qc29uJDEiLCJ3cml0ZV90dXBsZSQwIiwid3JpdGVfYXNzb2MkMSIsIndyaXRlX2xpc3QkMSIsIndyaXRlX3ZhcmlhbnQkMCIsIndyaXRlX3N0ZF9qc29uJDEiLCJ3cml0ZV9zdGRfdHVwbGUkMCIsIndyaXRlX3N0ZF92YXJpYW50JDAiLCJ0b19idWZmZXIkMSIsInRvX3N0cmluZyQyIiwidG9fY2hhbm5lbCQxIiwidG9fb3V0cHV0JDEiLCJ0b19maWxlJDEiLCJzZXFfdG9fYnVmZmVyJDEiLCJzZXFfdG9fc3RyaW5nJDEiLCJzZXFfdG9fY2hhbm5lbCQxIiwic2VxX3RvX2ZpbGUkMSIsInNvcnQkMSIsInBwX2xpc3QkMSIsImlzX2F0b20kMSIsImZvcm1hdCQxIiwicHAkMyIsInBwJDQiLCJzaG93JDEiLCJlcXVhbCQxIiwicHJldHR5X3ByaW50JDEiLCJwcmV0dHlfdG9fc3RyaW5nJDEiLCJwcmV0dHlfdG9fY2hhbm5lbCQxIiwiaGV4JDMiLCJjdXN0b21fZXJyb3IkMCIsImxleGVyX2Vycm9yJDAiLCJyZWFkX2p1bmskMCIsImxvbmdfZXJyb3IkMCIsIm1pbjEwJDAiLCJtYXgxMCQwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQkMCIsImV4dHJhY3RfbmVnYXRpdmVfaW50JDAiLCJuZXdsaW5lJDAiLCJhZGRfbGV4ZW1lJDAiLCJyZWFkX2pzb24kMCIsImZpbmlzaF9zdHJpbmckMCIsInJlYWRfc3BhY2UkMCIsInJlYWRfb2JqZWN0X2VuZCQwIiwicmVhZF9pZGVudCQwIiwicmVhZF9jb2xvbiQwIiwicmVhZF9vYmplY3Rfc2VwJDAiLCJyZWFkX2FycmF5X2VuZCQwIiwicmVhZF9hcnJheV9zZXAkMCIsImFjYyQxIiwicmVhZF90dXBsZV9lbmQkMCIsInJlYWRfdHVwbGVfc2VwJDAiLCJjb25zIiwiZmluaXNoX3ZhcmlhbnQkMCIsImZpbmlzaF9jb21tZW50JDAiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDAiLCJtYXBfc3RyaW5nJDAiLCJmaW5pc2hfc3RyaW5nbGl0JDAiLCJyZWFkX2d0JDAiLCJyZWFkX2x0JDAiLCJyZWFkX2NvbW1hJDAiLCJzdGFydF9hbnlfdmFyaWFudCQwIiwicmVhZF9lb2YkMCIsInJlYWRfbnVsbCQwIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDAiLCJyZWFkX2Jvb2wkMCIsInJlYWRfaW50JDAiLCJyZWFkX2ludDMyJDAiLCJyZWFkX2ludDY0JDAiLCJyZWFkX251bWJlciQwIiwicmVhZF9zdHJpbmckMCIsIm1hcF9pZGVudCQwIiwicmVhZF9zZXF1ZW5jZSQwIiwicmVhZF9saXN0X3JldiQwIiwicmVhZF90dXBsZSQwIiwicG9zIiwicmVhZF90dXBsZV9lbmQyJDAiLCJyZWFkX3R1cGxlX3NlcDIkMCIsInJlYWRfYWJzdHJhY3RfZmllbGRzJDAiLCJyZWFkX2xjdXJsJDAiLCJzdGFydF9hbnlfdHVwbGUkMCIsInJlYWRfbHBhciQwIiwicmVhZF9ycGFyJDAiLCJyZWFkX2xiciQwIiwicmVhZF9yYnIkMCIsInNraXBfanNvbiQwIiwiZmluaXNoX3NraXBfc3RyaW5nbGl0JDAiLCJza2lwX2lkZW50JDAiLCJmaW5pc2hfc2tpcF92YXJpYW50JDAiLCJidWZmZXJfanNvbiQwIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQkMCIsImJ1ZmZlcl9zcGFjZSQwIiwiYnVmZmVyX2lkZW50JDAiLCJidWZmZXJfY29sb24kMCIsIm9jYW1sX2xleF9zdGF0ZSQ5Iiwib2NhbWxfbGV4X3N0YXRlJDEwIiwib2NhbWxfbGV4X3N0YXRlJDExIiwib2NhbWxfbGV4X3N0YXRlJDEyIiwib2NhbWxfbGV4X3N0YXRlJDEzIiwib2NhbWxfbGV4X3N0YXRlJDE0Iiwib2NhbWxfbGV4X3N0YXRlJDE1Iiwib2NhbWxfbGV4X3N0YXRlJDE2IiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDAiLCJqdW5rJDAiLCJyZWFkX2ludDgkMCIsInJlYWRfbGlzdCQwIiwicmVhZF9hcnJheSQwIiwicmVhZF9maWVsZHMkMCIsImZyb21fbGV4YnVmJDAiLCJmcm9tX3N0cmluZyQyIiwiZnJvbV9jaGFubmVsJDIiLCJmcm9tX2ZpbGUkMCIsInNlcV9mcm9tX2xleGJ1ZiQwIiwic2VxX2Zyb21fc3RyaW5nJDAiLCJzZXFfZnJvbV9jaGFubmVsJDAiLCJzZXFfZnJvbV9maWxlJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQwIiwibGluZXNlcV9mcm9tX2ZpbGUkMCIsInByZXR0aWZ5JDAiLCJjb21wYWN0JDAiLCJ0eXBlcnIkMCIsIm1lbWJlciQwIiwicGF0aCQwIiwiaW5kZXgkMCIsIm1hcCQwIiwidG9fYXNzb2MkMCIsInRvX29wdGlvbiQwIiwidG9fYm9vbCQwIiwidG9fYm9vbF9vcHRpb24kMCIsInRvX251bWJlciQwIiwidG9fbnVtYmVyX29wdGlvbiQwIiwidG9fZmxvYXQkMCIsInRvX2Zsb2F0X29wdGlvbiQwIiwidG9faW50JDAiLCJ0b19pbnRfb3B0aW9uJDAiLCJ0b19saXN0JDAiLCJ0b19zdHJpbmckMyIsInRvX3N0cmluZ19vcHRpb24kMCIsImNvbnZlcnRfZWFjaCQwIiwiZmlsdGVyX21hcCQwIiwiZmxhdHRlbiQwIiwiZmlsdGVyX2luZGV4JDAiLCJmaWx0ZXJfbGlzdCQwIiwiZmlsdGVyX21lbWJlciQwIiwiZmlsdGVyX2Fzc29jJDAiLCJmaWx0ZXJfYm9vbCQwIiwiZmlsdGVyX2ludCQwIiwiZmlsdGVyX2Zsb2F0JDAiLCJmaWx0ZXJfbnVtYmVyJDAiLCJmaWx0ZXJfc3RyaW5nJDAiLCJrZXlzJDAiLCJ2YWx1ZXMkMCIsImNvbWJpbmUkMCIsImhleCQ0Iiwid3JpdGVfc3BlY2lhbCQyIiwid3JpdGVfc3RyaW5nJDIiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMiIsIndyaXRlX251bGwkMiIsIndyaXRlX2Jvb2wkMiIsIndyaXRlX2ludGxpdCQxIiwid3JpdGVfZmxvYXRsaXQkMCIsIndyaXRlX3N0cmluZ2xpdCQwIiwiaXRlcjIkMiIsImZfc2VwJDIiLCJ3cml0ZV9qc29uJDIiLCJ3cml0ZV9hc3NvYyQyIiwid3JpdGVfbGlzdCQyIiwid3JpdGVfdHVwbGUkMSIsIndyaXRlX3ZhcmlhbnQkMSIsIndyaXRlX3N0ZF9qc29uJDIiLCJ3cml0ZV9zdGRfdHVwbGUkMSIsIndyaXRlX3N0ZF92YXJpYW50JDEiLCJ0b19idWZmZXIkMiIsInRvX3N0cmluZyQ0IiwidG9fY2hhbm5lbCQyIiwidG9fb3V0cHV0JDIiLCJ0b19maWxlJDIiLCJzZXFfdG9fYnVmZmVyJDIiLCJzZXFfdG9fc3RyaW5nJDIiLCJzZXFfdG9fY2hhbm5lbCQyIiwic2VxX3RvX2ZpbGUkMiIsInNvcnQkMiIsInBwX2xpc3QkMiIsImlzX2F0b20kMiIsImZvcm1hdCQyIiwicHAkNSIsInBwJDYiLCJzaG93JDIiLCJlcXVhbCQyIiwicHJldHR5X3ByaW50JDIiLCJwcmV0dHlfdG9fc3RyaW5nJDIiLCJwcmV0dHlfdG9fY2hhbm5lbCQyIiwiaGV4JDUiLCJjdXN0b21fZXJyb3IkMSIsImxleGVyX2Vycm9yJDEiLCJyZWFkX2p1bmskMSIsImxvbmdfZXJyb3IkMSIsIm1pbjEwJDEiLCJtYXgxMCQxIiwibmV3bGluZSQxIiwiYWRkX2xleGVtZSQxIiwicmVhZF9qc29uJDEiLCJmaW5pc2hfc3RyaW5nbGl0JDEiLCJyZWFkX3NwYWNlJDEiLCJyZWFkX29iamVjdF9lbmQkMSIsInJlYWRfaWRlbnQkMSIsInJlYWRfY29sb24kMSIsInJlYWRfb2JqZWN0X3NlcCQxIiwicmVhZF9hcnJheV9lbmQkMSIsInJlYWRfYXJyYXlfc2VwJDEiLCJyZWFkX3R1cGxlX2VuZCQxIiwicmVhZF90dXBsZV9zZXAkMSIsImZpbmlzaF92YXJpYW50JDEiLCJmaW5pc2hfY29tbWVudCQxIiwiZmluaXNoX3N0cmluZyQxIiwiZmluaXNoX2VzY2FwZWRfY2hhciQxIiwibWFwX3N0cmluZyQxIiwicmVhZF9ndCQxIiwicmVhZF9sdCQxIiwicmVhZF9jb21tYSQxIiwic3RhcnRfYW55X3ZhcmlhbnQkMSIsInJlYWRfZW9mJDEiLCJyZWFkX251bGwkMSIsInJlYWRfbnVsbF9pZl9wb3NzaWJsZSQxIiwicmVhZF9ib29sJDEiLCJyZWFkX2ludCQxIiwic3RhcnQkMCIsInN0b3AkMCIsIm4kMCIsImkkMCIsInJlYWRfaW50MzIkMSIsInJlYWRfaW50NjQkMSIsInJlYWRfbnVtYmVyJDEiLCJyZWFkX3N0cmluZyQxIiwibWFwX2lkZW50JDEiLCJyZWFkX3NlcXVlbmNlJDEiLCJyZWFkX2xpc3RfcmV2JDEiLCJyZWFkX3R1cGxlJDEiLCJyZWFkX3R1cGxlX2VuZDIkMSIsInJlYWRfdHVwbGVfc2VwMiQxIiwicmVhZF9hYnN0cmFjdF9maWVsZHMkMSIsInJlYWRfbGN1cmwkMSIsInN0YXJ0X2FueV90dXBsZSQxIiwicmVhZF9scGFyJDEiLCJyZWFkX3JwYXIkMSIsInJlYWRfbGJyJDEiLCJyZWFkX3JiciQxIiwic2tpcF9qc29uJDEiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQkMSIsInNraXBfaWRlbnQkMSIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMSIsImJ1ZmZlcl9qc29uJDEiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCQxIiwiYnVmZmVyX3NwYWNlJDEiLCJidWZmZXJfaWRlbnQkMSIsImJ1ZmZlcl9jb2xvbiQxIiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDEiLCJqdW5rJDEiLCJyZWFkX2ludDgkMSIsInJlYWRfbGlzdCQxIiwicmVhZF9hcnJheSQxIiwicmVhZF9maWVsZHMkMSIsImZyb21fbGV4YnVmJDEiLCJmcm9tX3N0cmluZyQ0IiwiZnJvbV9jaGFubmVsJDQiLCJmcm9tX2ZpbGUkMSIsInNlcV9mcm9tX2xleGJ1ZiQxIiwic2VxX2Zyb21fc3RyaW5nJDEiLCJzZXFfZnJvbV9jaGFubmVsJDEiLCJzZXFfZnJvbV9maWxlJDEiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQxIiwibGluZXNlcV9mcm9tX2ZpbGUkMSIsInByZXR0aWZ5JDEiLCJjb21wYWN0JDEiLCJ0eXBlcnIkMSIsIm1lbWJlciQxIiwicGF0aCQxIiwiaW5kZXgkMSIsIm1hcCQxIiwidG9fYXNzb2MkMSIsInRvX29wdGlvbiQxIiwidG9fYm9vbCQxIiwidG9fYm9vbF9vcHRpb24kMSIsInRvX251bWJlciQxIiwidG9fbnVtYmVyX29wdGlvbiQxIiwidG9fZmxvYXQkMSIsInRvX2Zsb2F0X29wdGlvbiQxIiwidG9faW50JDEiLCJ0b19pbnRfb3B0aW9uJDEiLCJ0b19saXN0JDEiLCJ0b19zdHJpbmckNSIsInRvX3N0cmluZ19vcHRpb24kMSIsImNvbnZlcnRfZWFjaCQxIiwiZmlsdGVyX21hcCQxIiwiZmxhdHRlbiQxIiwiZmlsdGVyX2luZGV4JDEiLCJmaWx0ZXJfbGlzdCQxIiwiZmlsdGVyX21lbWJlciQxIiwiZmlsdGVyX2Fzc29jJDEiLCJmaWx0ZXJfYm9vbCQxIiwiZmlsdGVyX2ludCQxIiwiZmlsdGVyX2Zsb2F0JDEiLCJmaWx0ZXJfbnVtYmVyJDEiLCJmaWx0ZXJfc3RyaW5nJDEiLCJrZXlzJDEiLCJ2YWx1ZXMkMSIsImNvbWJpbmUkMSIsImlucHV0X2ZpbGUiLCJmbmFtZSIsInJlYWQiLCJpYyIsIngiLCJlJDAiLCJlIiwib3V0cHV0X2ZpbGUiLCJ3cml0ZSIsIm9jIiwiZnJvbV9jaGFubmVsIiwibGVuIiwib3B0Iiwic3RoIiwic2hybGVuIiwiaWIiLCJmcm9tX2ZpbGUiLCJ0b19jaGFubmVsIiwib2IiLCJ0b19maWxlIiwiZnJvbV9sZXhidWYiLCJscyIsImxleGJ1ZiIsInN0cmVhbSIsImZyb21fc3RyaW5nIiwiYnVmIiwibG51bSIsInMiLCJmcm9tX2NoYW5uZWwkMCIsImZyb21fZmlsZSQwIiwic3JjIiwiZm5hbWUwIiwic2VxX3VuZm9sZCIsImYiLCJ1IiwidSQwIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwidiIsInNlcV9mcm9tX3N0cmluZyIsInNlcV9mcm9tX2NoYW5uZWwiLCJzZXFfZnJvbV9maWxlIiwiZmluJDAiLCJsaXN0X2Zyb21fc3RyaW5nIiwic2VxIiwibGlzdF9mcm9tX2NoYW5uZWwiLCJsaXN0X2Zyb21fZmlsZSIsInRvX3N0cmluZyIsInRvX2NoYW5uZWwkMCIsInRvX2ZpbGUkMCIsInNlcV90b19zdHJpbmciLCJzdGgkMCIsImxmIiwic2VxX3RvX2NoYW5uZWwiLCJzZXFfdG9fZmlsZSIsImxpc3RfdG9fc3RyaW5nIiwibCIsImxpc3RfdG9fY2hhbm5lbCIsImxpc3RfdG9fZmlsZSIsInByZXNldF91bmtub3duX2ZpZWxkX2hhbmRsZXIiLCJsb2MiLCJuYW1lIiwibXNnIiwidW5rbm93bl9maWVsZF9oYW5kbGVyIiwic3RyaW5nX29mX3BhdGgiLCJuIiwiZXJyb3IiLCJwYXRoIiwic3RyaW5nX29mX2Vycm9yIiwidmFsaWRhdGVfbGlzdCIsImkiLCJsJDAiLCJzdWJwYXRoIiwiZXJyIiwidmFsaWRhdGVfYXJyYXkiLCJhIiwiaSQwIiwidmFsaWRhdGVfb3B0aW9uIiwiZXJyb3Jfd2l0aF9saW5lIiwicCIsInMyIiwibGlzdF9pdGVyIiwic2VwIiwibCQxIiwieSQwIiwieSIsImFycmF5X2l0ZXIiLCJ3cml0ZV9jb21tYSIsIndyaXRlX2xpc3QiLCJ3cml0ZV9pdGVtIiwid3JpdGVfYXJyYXkiLCJ3cml0ZV9hc3NvY19saXN0Iiwid3JpdGVfa2V5IiwiayIsIndyaXRlX2Fzc29jX2FycmF5Iiwid3JpdGVfb3B0aW9uIiwid3JpdGVfc3RkX29wdGlvbiIsIndyaXRlX251bGxhYmxlIiwid3JpdGVfaW50X2FzX3N0cmluZyIsIndyaXRlX2ludDgiLCJ3cml0ZV9pbnQ4X2FzX3N0cmluZyIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfYXNfc3RyaW5nIiwid3JpdGVfaW50NjQiLCJ3cml0ZV9pbnQ2NF9hc19zdHJpbmciLCJtaW5fZmxvYXQiLCJtYXhfZmxvYXQiLCJ3cml0ZV9mbG9hdF9hc19pbnQiLCJ3cml0ZV9mbG9hdF9hc19pbnRfc3RyaW5nIiwicmVhZF9udWxsIiwibGIiLCJyZWFkX2Jvb2wiLCJyZWFkX2ludCIsInJlYWRfaW50OCIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsInJlYWRfanNvbiIsInJlYWRfbGlzdCIsInJlYWRfaXRlbSIsInJlYWRfYXJyYXkiLCJyZWFkX2Fzc29jX2xpc3RfcmV2IiwicmVhZF9rZXkiLCJhY2MiLCJyZWFkX2Fzc29jX2xpc3QiLCJyZWFkX2Fzc29jX2FycmF5IiwidGwiLCJyIiwicmVhZF91bnRpbF9maWVsZF92YWx1ZSIsIm1pc3NpbmdfdHVwbGVfZmllbGRzIiwicmVxX2ZpZWxkcyIsIm1pc3NpbmciLCJtaXNzaW5nX2ZpZWxkIiwiZmllbGRfbmFtZSIsIm1pc3NpbmdfZmllbGRzIiwiYml0X2ZpZWxkcyIsImZpZWxkX25hbWVzIiwieiIsImoiLCJpbnZhbGlkX3ZhcmlhbnRfdGFnIiwicmVhZF93aXRoX2FkYXB0ZXIiLCJub3JtYWxpemUiLCJyZWFkZXIiLCJhc3QiLCJhc3QkMCIsImxiJDAiLCJ3cml0ZV93aXRoX2FkYXB0ZXIiLCJyZXN0b3JlIiwid3JpdGVyIiwib2JfdG1wIiwic190bXAiLCJyZWFkX2Vycm9yIiwicmVhZF9lcnJvcl9hdCIsInRhZ19lcnJvciIsInRhZyIsInVuc3VwcG9ydGVkX3ZhcmlhbnQiLCJoIiwiaGFzX2FyZyIsImdldF91bml0X3JlYWRlciIsInJlYWRfdW5pdCIsImdldF9ib29sX3JlYWRlciIsImdldF9pbnRfcmVhZGVyIiwiZ2V0X2NoYXJfcmVhZGVyIiwicmVhZF9jaGFyIiwiZ2V0X2ludDMyX3JlYWRlciIsImdldF9pbnQ2NF9yZWFkZXIiLCJnZXRfZmxvYXQzMl9yZWFkZXIiLCJnZXRfZmxvYXQ2NF9yZWFkZXIiLCJyZWFkX2Zsb2F0MzIiLCJyZWFkX2Zsb2F0NjQiLCJnZXRfc3RyaW5nX3JlYWRlciIsInJlYWRfYXJyYXlfdmFsdWUiLCJnZXRfcmVhZGVyIiwiZ2V0X2FycmF5X3JlYWRlciIsImdldF9saXN0X3JlYWRlciIsIndyaXRlX3VudGFnZ2VkX29wdGlvbiIsIngkMCIsImFycmF5X2luaXQyIiwiYXJyYXlfaXRlcjIiLCJ3cml0ZV91bnRhZ2dlZF9hcnJheSIsImNlbGxfdGFnIiwid3JpdGVfdW50YWdnZWRfbGlzdCIsInNhZmVfciIsInR5cGVfZmllbGRfbmFtZSIsIm5vcm1hbGl6ZV90eXBlX2ZpZWxkIiwiZmllbGRzIiwidHlwZSIsInJlc3RvcmVfdHlwZV9maWVsZCIsImZpZWxkcyQwIiwibm9ybWFsaXplJDAiLCJ2YWx1ZSIsInJlc3RvcmUkMCIsInRibCIsImlzX2tub3duX3RhZyIsImlzX2NhdGNoX2FsbF90YWciLCJjYXRjaF9hbGxfdGFnIiwiZm91bmQiLCJmaWVsZCIsInZhcmlhbnQiLCJmaWVsZHMkMSIsInRhZ2dlZCIsInRhZyQwIiwicmVhbF92IiwicmVhbF90YWciLCJvcHRfdmFsdWUiLCJ0YWckMSIsInYkMCIsImNyZWF0ZSIsIm4iLCJhIiwibGVuZ3RoIiwiZ2V0IiwiaSIsInNldCIsInYiLCJuJDEiLCJuJDAiLCJhcnJheSIsImluaXQiLCJmIiwiYXBwZW5kIiwiYiIsImxiIiwibGEiLCJjIiwieCIsImNvbmNhdCIsImwiLCJsJDAiLCJ0IiwiZWx0Iiwic29sIiwibSIsImsiLCJsJDEiLCJxIiwidCQwIiwicyIsIm9mZnNldCIsImskMCIsImskMSIsIm9mZnNldCQwIiwic3ViIiwic3RhcnQiLCJsZW4iLCJzaXplIiwiY29weSIsImZpbGwiLCJpJDAiLCJvZl9saXN0IiwiZGVmYXVsdCQwIiwiaXRlciIsIml0ZXJpIiwiZm9sZF9sZWZ0aSIsImZvbGRfcmlnaHRpIiwibWFwIiwiYmxpdCIsImExIiwib2ZzMSIsImEyIiwib2ZzMiIsInByaW50IiwidHJhaWxpbmciLCJwcl9zIiwicHJfYSIsIm1heF9hcnJheV9zaXplMSIsIm1heF9hcnJheV9zaXplMiIsImV1Y2xpZGVlbiIsInAiLCJwJDAiLCJhdXgiLCJtJDAiLCJhJDAiLCJhJDEiLCJqIiwiZzIiLCJnMSIsInkiLCJlIiwiZyIsImN1cnJlbnQiLCJpbml0JDAiLCJvcHQiLCJwcl9zZXAiLCJwcl9lbCIsInN0aCIsImNzdCIsImZsb2F0X2lzX3plcm8iLCJwb3ciLCJhY2N1IiwiYWNjdSQwIiwiYWNjdSQxIiwiZmFjdCIsImkkMSIsImdldF9wcm9kdWN0X2ltYWdlX29jYyIsImNvbWJpbmUiLCJ0JDEiLCJvbGQkMSIsIm9sZCIsIm9jYyIsImgiLCJvY2MkMCIsIm9sZCQwIiwiZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjXzIiLCJsMSIsImwyIiwibDEkMCIsImwyJDAiLCJjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCIsImgkMCIsImwxJDEiLCJsMiQxIiwiaDIiLCJoMSIsIm9jYzEiLCJsMSQyIiwib2NjMiIsImwyJDIiLCJvY2MyJDAiLCJsMiQzIiwib2NjMSQwIiwibDEkMyIsImFjY3UkMiIsImRpdjIiLCJwb3c2NCIsImNhbnRvcl9wYWlyaW5nIiwicmVhZF9pbnB1dCIsInVzZXJfaW5wdXQiLCJhY2MiLCJhY2MkMCIsIm5vdF9hbl9pZCIsImFycmF5X2ZvbGRfbGVmdF9tYXBpIiwib3V0IiwieSQwIiwibyIsImFycmF5X21hcF9vZl9saXN0IiwieCQwIiwiYW5zIiwiYXJyYXlfcmV2X29mX2xpc3QiLCJhcnJheV9yZXZfbWFwX29mX2xpc3QiLCJhcnJheV9mb2xkX2xlZnRpIiwiYXJyYXlfZm9sZF9yaWdodGkiLCJ4JDEiLCJhcnJheV9mb2xkX2xlZnQyaSIsImFycmF5X2ZpbHRlciIsImFycmF5X21pbl9lcXVhbF9ub3RfbnVsbCIsImFnMSIsIm5iMSIsImFnMiIsIm5iMiIsImokMCIsIm91dCQxIiwiaSQyIiwidmEiLCJhZzEkMCIsIm5iMSQwIiwiYWcyJDAiLCJuYjIkMCIsIm91dCQwIiwiYXJyYXlfY29tcGFyZSIsImNvbXBhcmUiLCJkIiwicmVjdGkiLCJtaW5fcG9zX2ludF9ub3RfemVybyIsImRhdGFiIiwia2V5YiIsImRhdGFhIiwia2V5YSIsIm1heF9wb3NfaW50X25vdF96ZXJvIiwiZm9sZF9vdmVyX3Blcm11dGF0aW9ucyIsInRvX2RvIiwiZGlzY2FyZGVkIiwicGVybXV0YXRpb24iLCJ0b19kbyQwIiwiZGlzY2FyZGVkJDAiLCJ0b19kbyQxIiwibGlzdCIsInRvX2RvMSIsImRpc2NhcmRlZCQxIiwiZ2NkXzIiLCJiJDAiLCJiJDEiLCJsY21fMiIsImxjbSIsImdldF9pbnRlcnZhbF9saXN0IiwiYWRkIiwib3V0cHV0IiwiY3VycmVudCQwIiwib3V0cHV0JDAiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwic3RyaW5nX3NwbGl0X29uX2NoYXIiLCJkZWxpbWl0ZXIiLCJpbmRleCIsInNtYXNoX2R1cGxpY2F0ZV9pbl9vcmRlcmVkX2xpcyIsInRhaWwkMiIsIm5vY2MkMiIsImN1cnJlbnQkMSIsInRhaWwiLCJub2NjIiwidGFpbCQwIiwibm9jYyQwIiwidGFpbCQxIiwibm9jYyQxIiwiY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIiwibmFtZSIsImV4dCIsImZpbmRfYXZhaWxhYmxlX25hbWUiLCJhbHJlYWR5X3RoZXJlIiwiZmFjdWx0YXRpdmUiLCJleHQkMCIsImJhc2UiLCJiYXNlJDAiLCJkZWZhdWx0X21lc3NhZ2VfZGVsaW10ZXIiLCJnZXRfcmVmIiwicmVmIiwicmVtb3ZlX2RvdWJsZV9lbGVtZW50cyIsInNvcnRfYnlfcHJpb3JpdHkiLCJrZXlzIiwic29ydCIsImtleSIsImluaXRpYWxfYnVmZmVyX3NpemUiLCJ3cml0ZV90b19jaGFubmVsIiwic3RyaW5nX29mX3dyaXRlIiwib2IiLCJyZWFkX29mX3N0cmluZyIsImxleF9zdCIsImxleF9idWYiLCJyZWFkX2JldHdlZW5fc3BhY2VzIiwicmVhZF9uZXh0X2l0ZW0iLCJzdCIsImJ1aWxkX21zZyIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVycm9yX21zZyIsIm9mX2ludCIsInRvX2ludCIsIm9mX2Jvb2wiLCJ0b19ib29sIiwib2ZfdW5pdCIsInRvX3VuaXQiLCJvZl9vcHRpb24iLCJ0b19qc29uIiwidG9fb3B0aW9uIiwid3JpdGVfb3B0aW9uIiwicmVhZF9vcHRpb24iLCJ0b19saXN0Iiwib2ZfanNvbiIsIndyaXRlX2NvbW1hIiwid3JpdGVfbGlzdCIsImZfZWx0Iiwib2ZfYXJyYXkiLCJ0b19hcnJheSIsIndyaXRlX2FycmF5Iiwid3JpdGVfc2VxdWVuY2UiLCJxJDAiLCJmJDAiLCJyZWFkX3ZhcmlhbnQiLCJyZWFkX2lkIiwicmVhZCIsInNtYXJ0X2Fzc29jIiwib2ZfYXNzb2MiLCJ0b19hc3NvYyIsImpzb24iLCJ3cml0ZV9maWVsZCIsIm5hIiwib2ZfcGFpciIsInRvX2pzb24xIiwidG9fanNvbjIiLCJsYWIxIiwic3RoJDAiLCJsYWIyIiwidG9fdHJpcGxlIiwib2ZfanNvbjEiLCJvZl9qc29uMiIsIm9mX2pzb24zIiwic3RoJDEiLCJsYWIzIiwic3RoJDIiLCJvZl90cmlwbGUiLCJ0b19qc29uMyIsInRvX3BhaXIiLCJ3cml0ZV9jb21wYWN0X3BhaXIiLCJyZWFkX2NvbXBhY3RfcGFpciIsImNvbXBhY3RfdG9fcGFpciIsIm9mX21hcCIsImZvbGQiLCJrZXlfdG9fanNvbiIsInZhbHVlX3RvX2pzb24iLCJsYWJfa2V5IiwibGFiX3ZhbHVlIiwidmFsdWUiLCJ0b19tYXAiLCJlbXB0eSIsImpzb25fdG9fa2V5IiwianNvbl90b192YWx1ZSIsIm9mX3VuaXhfbGFiZWwiLCJpbnQkMCIsInRvX3VuaXhfbGFiZWwiLCJvZl91bml4X2Vycm9yIiwidG9fdW5peF9lcnJvciIsInN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCIsInN1Y2Nlc3MiLCJzdG9wIiwic3VjY2Vzc19vcl9zdG9wIiwiaGVpZ2h0Iiwibm9kZSIsImxlZnQiLCJyaWdodCIsImhsIiwiaHIiLCJobCQwIiwiaXNfZW1wdHkiLCJzaW5nbGV0b24iLCJpc19zaW5nbGV0b24iLCJzZXQyIiwic2V0MSIsImJhbGFuY2UiLCJoZWlnaHRfbGVmdCIsImhlaWdodF9yaWdodCIsImxlZnRyaWdodCIsImxlZnR2YWx1ZSIsImxlZnRsZWZ0IiwibGVmdHJpZ2h0cmlnaHQiLCJsZWZ0cmlnaHR2YWx1ZSIsImxlZnRyaWdodGxlZnQiLCJyaWdodHJpZ2h0IiwicmlnaHR2YWx1ZSIsInJpZ2h0bGVmdCIsInJpZ2h0bGVmdHJpZ2h0IiwicmlnaHRsZWZ0dmFsdWUiLCJyaWdodGxlZnRsZWZ0IiwiYmFsYW5jZV93aXRoX2xvZ3MiLCJ3YXJuIiwicGFyYW1ldGVycyIsImVycm9yIiwibG9jIiwiZXJyb3IkMCIsInIiLCJvJDAiLCJhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MiLCJuZXdfdmFsIiwidmFsdWVfc2V0IiwicmlnaHQkMCIsImJvb2wiLCJzZXQkMCIsImVycm9yJDEiLCJsZWZ0JDAiLCJib29sJDAiLCJlcnJvciQyIiwic2V0JDEiLCJlcnJvciQzIiwiYWRkX3dpdGhfbG9ncyIsIm5ld192YWx1ZSIsImFkZF9ldmVuX2lmX2l0X2V4aXN0cyIsImpvaW4iLCJyaWdodGhlaWdodCIsImxlZnRoZWlnaHQiLCJzYWZlX2V4dHJhY3RfbWluX2VsdCIsIm1pbiIsIm1pbl9lbHRfd2l0aF9sb2dzIiwicmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIiwiam9pbl93aXRoX2xvZ3MiLCJyaWdodDIiLCJ2YWx1ZTIiLCJsZWZ0MiIsInNldDIkMCIsIm1pbjIiLCJjb25jYXRfd2l0aF9sb2dzIiwiZWx0X29wdCIsInNwbGl0X3dpdGhfbG9ncyIsInNwbGl0X3ZhbCIsInNldF92YWwiLCJsZWZ0bGVmdCQwIiwicmlnaHRyaWdodCQwIiwicmVtb3ZlIiwicmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIiwiZXJyb3IkNCIsImVycm9yJDUiLCJlcnJvciQ2IiwiZXJyb3IkNyIsImVycm9yJDgiLCJzZXQkMiIsImVycm9yJDkiLCJyZW1vdmVfd2l0aF9sb2dzIiwic3BsaXQiLCJzcGxpdF92YWx1ZSIsInNldF92YWx1ZSIsInVuaW9uIiwiaGVpZ2h0MiIsImhlaWdodDEiLCJyaWdodDEiLCJ2YWx1ZTEiLCJsZWZ0MSIsInJpZ2h0MiQwIiwibGVmdDIkMCIsInJpZ2h0MSQwIiwibGVmdDEkMCIsImRpc2pvaW50X3VuaW9uIiwidW5pb25fZ2VuIiwiYWRkX2dlbiIsInVuaW9uX3dpdGhfbG9ncyIsInciLCJzJDAiLCJkaXNqb2ludF91bmlvbl93aXRoX2xvZ3MiLCJzdXR1cmVfbm90IiwiaW50ZXIiLCJ0cmlwbGUyIiwic3V0dXJlX25vdF93aXRoX2xvZ3MiLCJpbnRlcl93aXRoX2xvZ3MiLCJkaWZmIiwiZGlmZl93aXRoX2xvZ3MiLCJtaW51cyIsIm1pbnVzX3dpdGhfbG9ncyIsIm1lbSIsInNlYXJjaGVkX3ZhbHVlIiwiZmlsdGVyIiwiZmlsdCIsImZpbHRlcl93aXRoX2xvZ3MiLCJwYXJ0aXRpb24iLCJwYXJ0IiwicGFydGl0aW9uX3dpdGhfbG9ncyIsInJoIiwiY29uc19lbnVtIiwiZW51bSQxIiwiZTIkMiIsImUxJDIiLCJlMSIsImUyIiwiZTIkMCIsInIyIiwidjIiLCJlMSQwIiwicjEiLCJ2MSIsImUyJDEiLCJlMSQxIiwiZXF1YWwiLCJzdWJzZXQiLCJzZXQxJDAiLCJmb2xkX2ludiIsImZvcl9hbGwiLCJleGlzdHMiLCJlbGVtZW50cyIsImVsZW1lbnRzX2F1eCIsImF1eF9wcmludCIsImtleSQxIiwia2V5JDAiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNob29zZSIsInJhbmRvbSIsInJzIiwiYWltX2FjYyIsImFjY19sIiwiYWNjX3IiLCJlbXB0eSQwIiwiaGVpZ2h0JDAiLCJzaXplJDAiLCJub2RlJDAiLCJrZXkwIiwiZGF0YSIsImlzX2VtcHR5JDAiLCJyb290IiwibWF4X2tleSIsImJhbGFuY2UkMCIsInJpZ2h0MCIsImRhdGEwIiwibGVmdDAiLCJkYXRhMSIsImtleTEiLCJyaWdodDAkMCIsImRhdGEwJDAiLCJrZXkwJDAiLCJsZWZ0MCQwIiwiZGF0YTEkMCIsImtleTEkMCIsImJhbGFuY2Vfd2l0aF9sb2dzJDAiLCJhZGQkMCIsImRhdGFfbWFwIiwia2V5X21hcCIsImNtcCIsImFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyQwIiwicGFyYW1ldGVyIiwibWFwJDAiLCJhZGRfd2l0aF9sb2dzJDAiLCJleHRyYWN0X21pbl9iaW5kaW5nIiwiZGF0YTIiLCJrZXkyIiwiZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3MiLCJtZXJnZSIsIm1hcDEiLCJtYXAyIiwiZGF0YTMiLCJrZXkzIiwibWVyZ2Vfd2l0aF9sb2dzIiwicmVtb3ZlJDAiLCJyZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UkMCIsIm1hcCQxIiwibWFwJDIiLCJyZW1vdmVfd2l0aF9sb2dzJDAiLCJwb3AiLCJqb2luJDAiLCJ2YWx1ZSQwIiwiam9pbl93aXRoX2xvZ3MkMCIsInNwbGl0JDAiLCJkYXRhMiQwIiwibGVmdDIkMSIsInJpZ2h0MiQxIiwic3BsaXRfd2l0aF9sb2dzJDAiLCJkaWZmJDAiLCJvbGVmdDIiLCJvbGVmdDEiLCJvcmlnaHQyIiwib3JpZ2h0MSIsInVuaW9uJDAiLCJvcF9kYXRhMiIsImQyIiwiZDIkMCIsIm9wX2RhdGExIiwiZDEiLCJkMSQwIiwidW5pb25fd2l0aF9sb2dzJDAiLCJ1cGRhdGUiLCJ1cGRhdGVfd2l0aF9sb2dzIiwiZGlmZl9wcmVkIiwicHJlZCIsIm1pbl9lbHQkMCIsImZpbmRfb3B0aW9uIiwiZmluZF9kZWZhdWx0IiwiZmluZF9vcHRpb25fd2l0aF9sb2dzIiwiZmluZF9kZWZhdWx0X3dpdGhfbG9ncyIsIm1lbSQwIiwiZmlsdGVyX29uZSIsIml0ZXIkMCIsImZvbGQkMCIsInZhbHVlJDEiLCJvdXRwdXRsIiwiaW50ZXJydXB0ZWQiLCJ2YWxfb3B0IiwiZm9sZF93aXRoX2ludGVycnVwdGlvbiIsIm1vbmFkaWNfZm9sZCIsInBhcmFtIiwiZXJyIiwiZXJyJDAiLCJlcnIkMSIsInZhbHVlJDIiLCJlcnIkMiIsIm1vbmFkaWNfZm9sZDIiLCJyZXMiLCJyaCQwIiwibWFwMSQwIiwibWFwMiQwIiwicmVzJDAiLCJyZXMkMSIsInJoJDEiLCJyZXMkMiIsInJoJDIiLCJyZXMkMyIsInJoJDMiLCJyZXMkNCIsInJoJDQiLCJtb25hZGljX2ZvbGQyX3NwYXJzZSIsImlkIiwibW9uYWRpY19pdGVyMl9zcGFyc2UiLCJtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24iLCJtYXBpIiwibWFwX3dpdGhfbG9ncyIsImVycm9ycyIsImVycm9ycyQwIiwiZGF0YSQwIiwiZXJyb3JzJDEiLCJtYXAyX3dpdGhfbG9ncyIsIm1hcDJ6X3dpdGhfbG9ncyIsImZvbGQyX3dpdGhfbG9ncyIsImZvbGQyel93aXRoX2xvZ3MiLCJmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIiwiaXRlcjJfc3BhcnNlX3dpdGhfbG9ncyIsInBhciIsImZvcl9hbGwkMCIsImNvbnNfZW51bSQwIiwiZSQwIiwiZSQxIiwiY29tcGFyZSQwIiwibTEiLCJtMiIsImMkMCIsImVxdWFsJDAiLCJiaW5kaW5nc19hdXgiLCJiaW5kaW5ncyIsImF1eF9wcmludCQwIiwicHIiLCJkYXRhJDEiLCJkYXRhJDIiLCJwcmludCQwIiwiZGlmZl93aXRoX2xvZ3MkMCIsIm8xJDEiLCJvMiQxIiwibzEiLCJvMiIsIm8xJDAiLCJvMiQwIiwiZGlmZl9wcmVkX3dpdGhfbG9ncyIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nXyIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIiwicHJval9tYXAiLCJpZGVudGl0eV9lbHQiLCJrZXlfYSIsImRhdGFfYSIsIm1hcF9iIiwia2V5X2IiLCJwcm9qX21hcF9tb25hZGljIiwiaGFuZGxlciIsIm1vbmFkaWNfbWVyZ2UiLCJoYW5kbGVyJDAiLCJwcm9qX3NldCIsInNldF9hIiwicHJval9zZXRfbW9uYWRpYyIsInNldF9iIiwicGFydGl0aW9uX3NldCIsInBhcnRpdGlvbl9zZXRfbW9uYWRpYyIsInByb2oyIiwia2V5X2MiLCJzdWJtYXAiLCJzdWJtYXAkMCIsInByb2oyX21vbmFkaWMiLCJpbnRfY29tcGFyZSIsImludF9wYWlyX2NvbXBhcmUiLCJzdHJpbmdfcGFpcl9jb21wYXJlIiwicGFpcl9lcXVhbCIsImVxYSIsImVxYiIsInliIiwieWEiLCJ4YiIsInhhIiwicHJpbnQkMSIsInByaW50JDIiLCJwcmludCQzIiwidW5zb21lIiwidW5zb21lX29yX3JhaXNlIiwiZXhjZXAiLCJiaW5kIiwiZXEiLCJnZXRfYW5ub3QiLCJhbm5vdCIsImNvcHlfYW5ub3QiLCJtYXBfYW5ub3QiLCJvZl9wb3MiLCJzdGFydF9sb2NhdGlvbiIsImVuZF9sb2NhdGlvbiIsImR1bW15X3Bvc2l0aW9uIiwiZHVtbXkiLCJhbm5vdF93aXRoX2R1bW15IiwiaXNfZHVtbXkiLCJpc19hbm5vdGVkX3dpdGhfZHVtbXkiLCJwcl9mIiwicHJfbCIsInByaW50X2Fubm90ZWQiLCJyZWFkX3Bvc2l0aW9uIiwiY2hyIiwibGluZSIsIndyaXRlX3Bvc2l0aW9uIiwidG9fY29tcGFjdF95b2pzb24iLCJkZWNscyIsIm9mX2NvbXBhY3RfeW9qc29uIiwiZmlsZW5hbWVzIiwiZmlsZSIsIngkMiIsIm9mX2xpbmUiLCJ4JDMiLCJvZl9jaHIiLCJ4JDQiLCJ0b19jaHIiLCJ4JDUiLCJ0b19saW5lIiwieW9qc29uX29mX2Fubm90ZWQiLCJqcCIsImFubm90ZWRfb2ZfeW9qc29uIiwid3JpdGVfcmFuZ2UiLCJzdHJpbmdfb2ZfcmFuZ2UiLCJyZWFkX3JhbmdlIiwicmFuZ2Vfb2Zfc3RyaW5nIiwiaXNfaW5jbHVkZWRfaW4iLCJyYW5nZSIsImxpc3RpIiwiZWwiLCJoYXNodGJsIiwidGJsIiwiYm90dG9tIiwibnUiLCJlbXB0eV9zZXQiLCJjb21tYSIsImRvdCIsImNvbXBhY3RfY29tbWEiLCJjb2xvbiIsInNwYWNlIiwiY3V0IiwidW5pdCIsInBhaXIiLCJwcGEiLCJwcGIiLCJvcHRpb24iLCJ3aXRoX3NwYWNlIiwicGxhaW5fYXJyYXkiLCJsaXN0X3RvX3N0cmluZyIsInNldF90b19zdHJpbmciLCJhY2N2YWwiLCJyJDAiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJhY2NfbHJyIiwiYWNjX2wkMSIsImFjY19yJDEiLCJhY2NfciQwIiwicnIiLCJydiIsInJsIiwiYWNjX2wkMCIsInJsciIsInJsdiIsInJsbCIsImFjY19ybGwiLCJ3ZWlnaHQiLCJ3ZWlnaHQkMCIsInJlbW92ZV9taW5fYmluZGluZyIsInQyIiwidDEiLCJzdGF0ZSIsImFpbV9hY2MkMSIsIndyaXRlX3NldmVyaXR5Iiwid3JpdGVfc3RhdHVzIiwid3JpdGVfbWVzc2FnZSIsInRleHQiLCJzZXZlcml0eSIsInJlYWRfbWVzc2FnZSIsInByaW50X21lc3NhZ2UiLCJyYW5nZSQwIiwid3JpdGVfdCIsIndyaXRlX29rIiwid3JpdGVfZXJyb3IiLCJtZXNzYWdlcyIsInN0YXR1cyIsIm1lc3NhZ2VzJDAiLCJzdGF0dXMkMCIsInN0cmluZ19vZl90IiwicmVhZF90X2NvbnRlbnQiLCJyZWFkX3QiLCJyZWFkX29rIiwicmVhZF9lcnJvciIsImF1eF9yZWFkX3QiLCJjbG9zaW5nIiwicG9zIiwidiQwIiwidF9vZl9zdHJpbmciLCJsaWZ0Iiwib2tfc3RhdHVzIiwiZXJyb3Jfc3RhdHVzIiwib2siLCJvdmVyd3JpdGVfc3RhdHVzIiwic3BlY2lhbF92YWwiLCJpZGVudGl0eSIsIm1heCIsImltbWVkaWF0ZSIsImlzX2lkZW50aXR5IiwiY29tcHV0ZSIsInYkMSIsImZvcmNlIiwiaW1hZ2UiLCJkZWJ1Z19tb2RlIiwibm90X29rIiwidW5zYWZlX2ltcGVyYXRpdmVfYWRkIiwiaW1wZXJhdGl2ZV9hZGQiLCJvcmlnaW4iLCJjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0Iiwic3RvcF9hdCIsInByZSQxIiwic3Vic3QiLCJwcmUiLCJwcmUkMCIsImFwcGx5IiwiY29tcG9zZSIsImV4dGVuc2libGUiLCJpbnZlcnNlIiwic3JjIiwiZHN0IiwicHJpbnRfZnVsbCIsInRvX3lvanNvbiIsIm9mX3lvanNvbiIsIm1hc2siLCJ1bm1hc2siLCJpc19pbmZpbml0ZSIsImZpbmQiLCJjb3B5X3ZlY3RfaW4iLCJjb3B5X2luIiwiZGVjbGFyZV91bmJhbGFuY2VkIiwidXBkYXRlX3N0cnVjdHVyZSIsIm5fbGF5ZXIiLCJ1cGRhdGVfc3RydWN0dXJlX2F1eCIsImZhdGhlciIsInRfbm9kZSIsInRfc3VidHJlZSIsImxheWVyIiwiY3VycmVudF9sYXllciIsImxheWVyX2VuZCIsInVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyIiwidW5iYWxhbmNlZF9ldmVudHMiLCJsYXllcl9lbmQkMCIsImN1cnJlbnRfbGF5ZXIkMCIsInckMCIsInRvdGFsIiwicmVwIiwiciQxIiwibHNvbiIsInJzb24iLCJyJDIiLCJkZWJ1Z19wcmludCIsImludiIsImluZiIsImdyYXBoX3BhZ2UiLCJ0aXRsZSIsInN1YnRpdGxlIiwiZGVwcyIsImhlYWRlciIsImNvcmUiLCJkZXBlbmRlbmN5IiwiYmluX2FsZ19vcF90b19zdHJpbmciLCJiaW5fYWxnX29wX2lzX3ByZWZpeCIsInByaW50X2Jpbl9hbGdfb3AiLCJmeCIsImZ5Iiwib3AiLCJiaW5fYWxnX29wX3RvX2pzb24iLCJiaW5fYWxnX29wX29mX2pzb24iLCJ1bl9hbGdfb3BfdG9fc3RyaW5nIiwicHJpbnRfdW5fYWxnX29wIiwidW5fYWxnX29wX3RvX2pzb24iLCJ1bl9hbGdfb3Bfb2ZfanNvbiIsInN0YXRlX2FsZ19vcF90b19zdHJpbmciLCJwcmludF9zdGF0ZV9hbGdfb3AiLCJzdGF0ZV9hbGdfb3BfdG9fanNvbiIsInN0YXRlX2FsZ19vcF9vZl9qc29uIiwiYmluX2Jvb2xfb3BfdG9fc3RyaW5nIiwicHJpbnRfYmluX2Jvb2xfb3AiLCJiaW5fYm9vbF9vcF90b19qc29uIiwiYmluX2Jvb2xfb3Bfb2ZfanNvbiIsInVuX2Jvb2xfb3BfdG9fc3RyaW5nIiwicHJpbnRfdW5fYm9vbF9vcCIsInVuX2Jvb2xfb3BfdG9fanNvbiIsInVuX2Jvb2xfb3Bfb2ZfanNvbiIsImNvbXBhcmVfb3BfdG9fc3RyaW5nIiwicHJpbnRfY29tcGFyZV9vcCIsImNvbXBhcmVfb3BfdG9fanNvbiIsImNvbXBhcmVfb3Bfb2ZfanNvbiIsInByaW50X3Jldl9kZXAiLCJpZCQwIiwiaWQkMSIsInJldl9kZXBfdG9feW9qc29uIiwicmV2X2RlcF9vZl95b2pzb24iLCJkZXBzZXRfdG9feW9qc29uIiwiZGVwc2V0X29mX3lvanNvbiIsInplcm8iLCJvbmUiLCJjYXN0X2Jpbl9vcCIsIm9wX2YiLCJvcF9pIiwib3BfaTY0IiwieSQxIiwieSQyIiwieSQzIiwieSQ0Iiwib3BfaSQwIiwieSQ1Iiwib3BfaTY0JDAiLCJ5JDYiLCJ5JDciLCJvcF9pNjQkMSIsInkkOCIsIm9wX2k2NCQyIiwiY2FzdF91bl9vcCIsIm9wX2YkMCIsIm9wX2kkMSIsIm9wX2YkMSIsIm9wX2YkMiIsIm4xIiwibjIiLCJpc19ncmVhdGVyIiwiaXNfc21hbGxlciIsImlzX2VxdWFsIiwibXVsdCIsInJlbSIsImludGVybmFsX2RpdiIsInN1Y2MiLCJuZWciLCJ0b19mbG9hdCIsImlzX3plcm8iLCJpc19zdHJpY3RseV9wb3NpdGl2ZSIsInBvc19wb3ciLCJwcmV0dHlfcHJpbnQiLCJwcmludF9vcHRpb24iLCJtYXliZV9pdGVyaSIsIm9mX2Jpbl9hbGdfb3AiLCJvZl91bl9hbGdfb3AiLCJvZl9jb21wYXJlX29wIiwid2FybmluZ19idWZmZXIiLCJmb3JiaWRkZW4iLCJiYWQiLCJjcmVhdGVfZnJvbV9saXN0IiwiY3JlYXRlX25vX2xvYyIsIm5kIiwiZWx0X25hbWUiLCJlbHRfaWQiLCJraW5kIiwic2VwIiwicHAiLCJlbHRfdmFsIiwicmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VyIiwibGlzdCQwIiwiYnVmZmVyIiwibGlzdCQxIiwibGlzdCQyIiwiYnVmZmVyJDAiLCJsYXN0IiwicG9wX2xhc3QiLCJjb25zX29wdGlvbiIsInNtYXJ0X2ZpbHRlciIsInNtYXJ0X21hcCIsInJldl9tYXBpIiwibWFwX29wdGlvbiIsImV4aXN0c191bmlxIiwibWVyZ2VfdW5pcSIsInQyJDAiLCJoMiQwIiwidDEkMCIsImgxJDAiLCJyZXZfbWFwX2FwcGVuZCIsImFjYyQxIiwibWFwX2ZsYXR0ZW4iLCJyZW1vdmVfY29uc2VjdXRpdmVfZG91YmxlIiwicSQxIiwibGFzdCQxIiwibGFzdCQwIiwiZm9sZF9yaWdodF9tYXAiLCJmb2xkX2xlZnQyIiwiY2xlYW4iLCJpbnRfb2ZfaGFzaGVkX2xpc3QiLCJmc3RfZWx0X2lkIiwiZnN0X2xpc3RfaWQiLCJjb25zIiwiY2FjaGUkMCIsImhlYWQiLCJoYXNoX2hlYWQiLCJjYWNoZSQxIiwic3VidGFiIiwic3VidGFiJDAiLCJzdWJ0YWIkMSIsImhhc2gkMCIsImhhc2giLCJjYWNoZSIsImZvcm1hdHRlciIsInByaW50X2NhY2hlIiwib3B0JDAiLCJzaW1wbGlmeSIsImdjZCIsImRpdiIsImJfaW52IiwicHVzaCIsImNyY190YWJsZSIsInN0cmluZyIsInN0ciIsImNyYyIsInRyaXBsZV9vZl9jb2xvciIsImNyZWF0ZV9pbmZpbml0ZSIsInQkMiIsInQkNCIsInQkMyIsIm92ZXJ3cml0dGVuX3ZhbHVlIiwib3ZlcndyaXR0ZW5fdmFsdWUkMCIsImNvbnRlbnRzIiwibnRoIiwib2ZzIiwiY2xlYXIiLCJyZXNldCIsInJlc2l6ZSIsIm1vcmUiLCJuZXdfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJkZWZhdWx0X2FscGhhYmV0IiwidXJpX3NhZmVfYWxwaGFiZXQiLCJwYWRkaW5nIiwib2ZfY2hhciIsImFscGhhYmV0IiwidG9fY2hhciIsImRlY29kZSIsImlucHV0IiwiaW5wdXQkMCIsImxlbmd0aCQwIiwid29yZHMiLCJwYWRkaW5nJDAiLCJ6IiwiZW5jb2RlIiwicGFkIiwicGFkZGluZ19sZW4iLCJwcmludCIsImNvbXBhcmUiLCJ5IiwieCIsInkkMCIsIngkMCIsImMiLCJwcmludF9hZ2VudCIsIndpdGhfaWQiLCJ3aXRoX2xpbmsiLCJub2RlIiwiZiIsImFnIiwiaWQiLCJzaSIsImkiLCJwJDAiLCJwYWNrIiwicCIsImZyZWVfaWQiLCJkYW5nbGluZyIsInR5IiwibCIsIm15c2VsZiIsInZhIiwidmEkMCIsInByaW50X2NjIiwibWl4IiwibGluayIsImFsIiwiYXIiLCJzdG9yZSIsInByaW50X2RvdF9jYyIsIm5iX2NjIiwiaWwiLCJpciIsInYiLCJzIiwibGlua3MiLCJzJDAiLCJhciQwIiwiYWwkMCIsIndyaXRlX3NpdGUiLCJvYiIsIndyaXRlX2NjX3NpdGUiLCJsaW5rc19vZl95b2pzb24iLCJiIiwiZXJyb3JfbXNnIiwicmVhZF9jY19zaXRlIiwibGIiLCJrZXkkMCIsIm4iLCJrZXkiLCJwb3J0X3N0YXRlcyIsInBvcnRfbGlua3MiLCJvdXQiLCJzaXRlX3R5cGUiLCJzaXRlX25hbWUiLCJ3cml0ZV9jY19ub2RlIiwibm9kZV9pZCIsInJlYWRfY2Nfbm9kZSIsIm5vZGVfc2l0ZXMiLCJub2RlX3R5cGUiLCJ3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IiwicmVhZF9jb25uZWN0ZWRfY29tcG9uZW50Iiwic3RyaW5nX29mX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJvcHQiLCJzdGgiLCJsZW4iLCJjb25uZWN0ZWRfY29tcG9uZW50X29mX3N0cmluZyIsImludmVydGVkX2NvdW50ZXJfc3VmZml4IiwiZm9sZCIsIm8iLCJudW1fb2Zfc2l0ZSIsImFnZW50X25hbWUiLCJzaWduYXR1cmUiLCJhZ2VudF9uYW1lJDAiLCJraW5kIiwic2l0ZV9vZl9udW0iLCJhZGRyIiwibnVtX29mX2ludGVybmFsX3N0YXRlIiwic2l0ZV9pZCIsInN0YXRlIiwic2l0ZV9zaWciLCJpbnRlcm5hbF9zdGF0ZV9vZl9zaXRlX2lkIiwidmFsX2lkIiwiY291bnRlcl9vZl9zaXRlX2lkIiwiaGFzX2NvdW50ZXIiLCJwX2lkIiwib2siLCJvayQwIiwiYSIsImFjYyIsIm9uZV90b19qc29uIiwiYzFfb3B0IiwiYzJfb3B0IiwiYzMiLCJvbmVfb2ZfanNvbiIsInNpemUiLCJzaWdzIiwiZ2V0IiwiYWdlbnRfaWQiLCJhcml0eSIsIm1heF9hcml0eSIsImFnZW50X29mX251bSIsIm51bV9vZl9hZ2VudCIsIm5hbWUiLCJpZF9vZl9zaXRlIiwiYWdlbnRfdHkiLCJzaXRlX29mX2lkIiwiaWRfb2ZfaW50ZXJuYWxfc3RhdGUiLCJpbnRlcm5hbF9zdGF0ZV9vZl9pZCIsImlkX3NpdGUiLCJpZF9zdGF0ZSIsImludGVybmFsX3N0YXRlc19udW1iZXIiLCJkZWZhdWx0X2ludGVybmFsX3N0YXRlIiwiYWxsb3dlZF9saW5rIiwiYWcxIiwiczEiLCJhZzIiLCJzMiIsImFnMSQwIiwiczEkMCIsImFnMiQwIiwiczIkMCIsImNyZWF0ZSIsImNvdW50ZXJzX3Blcl9hZ2VudCIsImFnZW50X3NpZ3MiLCJpc19jb3VudGVyX2FnZW50IiwiYWdlbnRfaW5mbyIsInBvcnRzX2lmX2NvdW50ZXJfYWdlbnQiLCJzaXRlX2lzX2NvdW50ZXIiLCJhZ190eSIsImdldF9jb3VudGVyX2FnZW50X2luZm8iLCJjb3VudGVyX2FnZW50X2luZm8iLCJpc19pbnZlcnRlZF9jb3VudGVyIiwiY291bnRlcl9uYW1lIiwicHJpbnRfc2l0ZSIsInByaW50X2ludGVybmFsX3N0YXRlIiwic2l0ZSIsInByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUiLCJwcmludF9jb3VudGVyX2luZm8iLCJpX29wdCIsImpfb3B0IiwiaiIsImkkMCIsImkkMSIsInByaW50X2NvdW50ZXIiLCJwcF9pbnQiLCJuYSIsInRvX2pzb24iLCJvZl9qc29uIiwiYWdlbnRfc2lnbmF0dXJlIiwicG9ydHMiLCJlbXB0eSIsImluY3JlbWVudF9pbl9zbmFwc2hvdCIsInJhdyIsImNidF9hIiwiY2xhc3NpZnkiLCJhZ3MiLCJuYiIsImhzIiwiYXV4X2luY3JlbWVudCIsInQiLCJoIiwiY2J0X3kiLCJoMSIsImJvb2wiLCJkb24iLCJxIiwiYiQwIiwiaV9vayIsImRvbiQxIiwidG9kbyIsImEkMCIsImFncyQwIiwiY291bnRlcl92YWx1ZSIsImNjIiwiY291bnQiLCJzaWQiLCJuaWQiLCJjY190b191c2VyX2NjIiwiZGVidWdfbW9kZSIsImtlZXBfaW52ZXJ0ZWRfY291bnRlcnMiLCJyIiwicG9zIiwiaW5kZXhlcyIsImluZGV4ZXMkMCIsImNjX2xpc3Rfd2l0aG91dF9jb3VudGVycyIsImNjX3dpdGhvdXRfY291bnRlcnMiLCJkbl9pZCIsImRuX2lkJDAiLCJub2RlX3NpdGVzX2FsbCIsImV4cG9ydCQwIiwianNvbl9kaWN0aW9ubmFyeSIsIm1ha2UiLCJzb3J0Iiwic2lncyQwIiwiYWdlbnQiLCJwcmludF9pbnRlcm5hbCIsInByaW50X3Jhd19pbnRlcm5hbCIsInJlbmFtZSIsImluaiIsIm5fdHkiLCJuX2lkIiwiaWQyIiwiaWQxIiwid3JpdGVfanNvbiIsInJlYWRfanNvbiIsInByaW50JDAiLCJsb29waW5nIiwiaW50X2wiLCJtYXJrIiwib2xkIiwidGVzdCIsInJlc2V0IiwiaXRlcmlfcmVzZXQiLCJrIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImNvcHkiLCJncmFwaCIsInRhYmxlcyIsImNjcyIsInN0YXRzIiwiZnJlZV9pZHMiLCJ0b3BfaWQiLCJhZGRfYWdlbnQiLCJhaSIsImlkJDAiLCJuZXdfaWQiLCJuZXdfaWQkMCIsInQkMCIsImgkMCIsImZyZWVfaWQkMCIsIm1pc3NpbmdzIiwiYWRkX2ZyZWUiLCJhZGRfaW50ZXJuYWwiLCJhZGRfbGluayIsIm5vZGUyIiwidHkkMCIsIm5vZGUxIiwiY2FjaGUiLCJjY19pZF9vcCIsIm5leHQkMSIsInRvZG9zIiwic2l0ZSQzIiwibmV4dCIsIm5leHQkMCIsInNpdGUkMSIsInNpdGUkMCIsInNpdGUkMiIsInJlbW92ZV9hZ2VudCIsImlkcyIsImFnJDAiLCJyZW1vdmVfZnJlZSIsImdldF9pbnRlcm5hbCIsImdldF9zaXRlcyIsImFyciIsImdldF9zb3J0IiwicmVtb3ZlX2ludGVybmFsIiwicmVtb3ZlX2xpbmsiLCJvdGhlcl9vcmlnJDEiLCJ0aGlzX29yaWciLCJ0aGlzX2NhY2hlIiwib3RoZXJfY2FjaGUiLCJvbGRfY2NfaWQiLCJpbnNwZWN0X3NpdGUiLCJkc3RfY2FjaGUiLCJkYyIsIm90aGVyX29yaWckMCIsIm90aGVyX2NhY2hlJDEiLCJvdGhlcl9uZXh0JDAiLCJvdGhlcl9vcmlnIiwib3RoZXJfY2FjaGUkMCIsIm90aGVyX25leHQiLCJ0b2RvcyQwIiwidGhpc19uZXh0IiwiaXNfYWdlbnQiLCJpc19hZ2VudF9pZCIsImlzX2ZyZWUiLCJpc19pbnRlcm5hbCIsImxpbmtfZXhpc3RzIiwicyQxIiwiYWckMSIsImV4aXN0c19mcmVzaCIsImxpbmtfZGVzdGluYXRpb24iLCJpdGVyX25laWdoYm9ycyIsImFnX3RhYmxlIiwiYWxsX2FnZW50c193aGVyZSIsImluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCIsImdldF9jb25uZWN0ZWRfY29tcG9uZW50Iiwib25lX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJrbm93biIsIm5vZGUkMCIsImtub3duJDAiLCJrbm93biQxIiwidG9kb3MkMSIsInNpdGVzIiwibm9kZV9pZF9pbl93aXRuZXNzIiwic2l0ZV9zdGF0ZSIsInNwZWNpZXMiLCJyb290Iiwic3BlY2llIiwiYnVpbGRfc25hcHNob3QiLCJjY3MkMSIsIm5vZGUkMSIsImNjcyQwIiwibm9kZSQyIiwiYnVpbGRfdXNlcl9zbmFwc2hvdCIsImRlYnVnX3ByaW50IiwicHJpbnRfc2l0ZXMiLCJpbnQkMCIsInByaW50X3BhdGgiLCJlbXB0eV9wYXRoIiwic2luZ2xldG9uX3BhdGgiLCJuJDAiLCJyZXZfcGF0aCIsImlzX3ZhbGlkX3BhdGgiLCJhcmVfY29ubmVjdGVkIiwibWF4X2Rpc3RhbmNlIiwibm9kZXNfeCIsIm5vZGVzX3kiLCJwcmVwYXJlIiwiZGVwdGgiLCJvdXQkMSIsImlkJDEiLCJhY2MkMSIsInNpdGUkNCIsInBhdGgiLCJwYXRoJDAiLCJvdXQkMCIsImFjYyQwIiwibmV4dCQyIiwib3V0JDIiLCJzdG9wIiwiZCIsInByaW50X2lkIiwicHJpbnRfaWRfc2l0ZSIsInNvdXJjZSIsImZpbmRfdHkiLCJ0eSQxIiwicG9ydF90b195b2pzb24iLCJwb3J0X29mX3lvanNvbiIsInN0ZXBfdG9feW9qc29uIiwic3RlcF9vZl95b2pzb24iLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJleHRlbmQiLCJwb3J0IiwidCQxIiwiY29tcGF0aWJsZV9mcmVzaF9wb2ludCIsImUiLCJzc2l0ZSIsImFycm93Iiwic3R5IiwiaW5qJDAiLCJpbmokMyIsInNzaXRlJDEiLCJzdHkkMSIsInNpZCQxIiwiaWQkMiIsImluaiQxIiwiaW5qJDIiLCJzc2l0ZSQwIiwic3R5JDAiLCJzaWQkMCIsImNvbXBhdGlibGVfcG9pbnQiLCJlJDAiLCJpZCQzIiwidHkkMiIsImlkJDQiLCJzaXRlJDUiLCJ0eSQzIiwiaWQkNSIsInNzaXRlJDIiLCJzaWQkMiIsImluaiQ0Iiwic2l0ZSQ2IiwidHkkNCIsImlkJDYiLCJpc19zdWJuYXZpZ2F0aW9uIiwibmF2JDAiLCJnb2FsIiwibmF2JDEiLCJyZW5hbWVfaWQiLCJpbmoyY2MiLCJpbWciLCJ4JDEiLCJ0JDIiLCJjaGVja19lZGdlIiwiZHN0X2lzX29rYXkiLCJpbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UiLCJkc3QiLCJkc3QkMCIsInJ0eSIsInJ0eSQwIiwicm9vdCQwIiwiaW1wZXJhdGl2ZV9kc3RfaXNfb2theSIsImltcGVyYXRpdmVfZWRnZV9pc192YWxpZCIsImNvbmNyZXRpemVfcG9ydCIsImNvbmNyZXRpemUiLCJuYXYiLCJzdGVwIiwic3QiLCJjb3B5X2FnZW50IiwiYWdlbnQiLCJjcmVhdGUiLCJuIiwiaSIsImZpbmRfYXV4IiwiYSIsImFpIiwicm9vdCIsImZpbmQiLCJoIiwieCIsImNvbWJpbmVfcmFua3MiLCJieSIsIml5IiwiYngiLCJpeCIsImJ5JDAiLCJ1bmlvbiIsInkiLCJyb290X3giLCJyb290X3kiLCJyYW5rX3giLCJyYW5rX3kiLCJ1bmlvbl9maW5kX2NvdW50ZXJzIiwic2lncyIsIm1peCIsInQiLCJzaWdzJDAiLCJhZyIsImFmdGVyIiwiYmVmb3JlIiwiYiIsImxua19iIiwibG5rX2EiLCJzIiwicHJpbnQiLCJub0NvdW50ZXJzIiwiY3JlYXRlZCIsImluaXRpYWxfY29tbWEiLCJmIiwiY291bnRlcl9hZ2VudHMiLCJzb21lIiwiYWdfdHkiLCJhZ190eSQwIiwiaW50cyIsInBvcnRzIiwiZW1wdHkiLCJpc19jb3VudGVyIiwiY291bnRlciIsImkkMSIsImkkMCIsImFnZW50X3RvX2pzb24iLCJhY2MiLCJhZ2VudF9vZl9qc29uIiwicCIsInRvX2pzb24iLCJtIiwib2ZfanNvbiIsImwiLCJlX3RvX3lvanNvbiIsImZpbGVuYW1lcyIsImZfbWl4IiwiZl9pZCIsIm9wIiwiYSQwIiwib3AkMCIsIm9wJDEiLCJjYyIsIm5vIiwieWVzIiwiY29uZCIsImJvb2xfdG9feW9qc29uIiwidG9rZW4iLCJleHByIiwibWl4dHVyZSIsImV4cHIkMCIsImIkMCIsImEkMSIsImVfb2ZfeW9qc29uIiwiYm9vbF9vZl95b2pzb24iLCJ0b2siLCJwcl9taXgiLCJwcl90b2siLCJwcl92YXIiLCJsYWIiLCJhc3QiLCJ0ayIsInByaW50X2Jvb2wiLCJjb25zdCQwIiwiaW50JDAiLCJmbG9hdCQwIiwiYWRkIiwiZTEiLCJlMiIsIm1pbnVzIiwibXVsdCIsImRpdiIsInBvdyIsImxvZyIsImxuIiwic2luIiwiY29zIiwidW1pbnVzIiwic3FydCIsImFkZF9kZXAiLCJkIiwieCQwIiwib3V0IiwidG9rc19kIiwiaW5fZSIsImluX3QiLCJqIiwiYWRkX2RlcF9ib29sIiwiaGFzX21peCQwIiwidmFyX2RlY2xzIiwiaGFzX21peCIsImJvb2xfaGFzX21peCQwIiwiYm9vbF9oYXNfbWl4IiwiaXNfY29uc3RhbnQiLCJjIiwiYm9vbF9pc19jb25zdGFudCIsImlzX3RpbWVfaG9tb2dlbmVvdXMiLCJib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMiLCJhdXhfZXh0cmFjdF9jYyIsImFjYyQwIiwiZXh0cmFjdF9jY19ib29sIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYiIsInNldHVwX2FsZ192YXJzX3Jldl9kZXAiLCJ0b2tzIiwidmFycyIsInByb3BhZ2F0ZV9jb25zdGFudCIsIndhcm5pbmciLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJ1cGRhdGVkX3ZhcnMiLCJwb3MiLCJjMSIsImMyIiwicG9zJDAiLCJhJDIiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsImNvbmQkMCIsInByb3BhZ2F0ZV9jb25zdGFudF9ib29sIiwicG9zJDUiLCJ0JDAiLCJhJDMiLCJhJDQiLCJwb3MkNiIsImEkNSIsImEkNiIsImIkMSIsImIkMiIsIm4xIiwibjIiLCJoYXNfcHJvZ3Jlc3NfZGVwIiwib25seV90aW1lIiwidmFyc19kZXBzIiwiZGVwcyIsImF1eCIsImsiLCJib29sX2hhc19wcm9ncmVzc19kZXAiLCJpc19lcXVhbGl0eV90ZXN0X3RpbWUiLCJtYXBfb25fbWl4dHVyZSIsIm8iLCJwJDAiLCJ4JDEiLCJvJDAiLCJwJDEiLCJwJDIiLCJ5JDAiLCJ4JDIiLCJtYXBfYm9vbF9vbl9taXh0dXJlIiwicCQzIiwibyQxIiwiZm9sZF9vbl9taXh0dXJlJDAiLCJmb2xkX29uX21peHR1cmUiLCJ2IiwidSIsImZvbGRfYm9vbF9vbl9taXh0dXJlJDAiLCJmb2xkX2Jvb2xfb25fbWl4dHVyZSIsImVxdWFsIiwiYTIiLCJhMSIsIm9wYSIsImIyIiwiYjEiLCJvcGIiLCJhMSQwIiwib3BhJDAiLCJiMSQwIiwib3BiJDAiLCJvcGEkMSIsIm9wYiQxIiwiaWQxIiwiaWQyIiwibWl4MSIsIm1peDIiLCJpZDEkMCIsImlkMiQwIiwiYTIkMCIsImExJDEiLCJjb25kYSIsImIyJDAiLCJiMSQxIiwiY29uZGIiLCJlcXVhbF9ib29sIiwidG9feW9qc29uIiwib2ZfeW9qc29uIiwiYXJyYXlfb2ZfanNvbiIsImxzIiwiYXJyYXkxIiwiYXJyYXkyIiwicHJpbnRfa2FwcGEiLCJpbnRmIiwiaXMiLCJzZCIsImFkIiwicHJpbnRfY3ljbGVzIiwiZm9ybSIsImNvbnRhY3RfbWFwIiwiZGZzIiwicGF0aCIsImxhc3RfcyIsImtub3duIiwia25vd24kMCIsInMkMCIsInR5IiwiYWNjJDEiLCJhZyQwIiwid3JpdGVfc2hhcmluZ19sZXZlbCIsIm9iIiwic3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwiLCJvcHQiLCJyZWFkX3NoYXJpbmdfbGV2ZWwiLCJsYiIsInNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIiwiZGVidWdfcHJpbnRfaWQiLCJmbXQiLCJpZCIsInNpemVfb2ZfY2MiLCJjb21wYXJlX2Nhbm9uaWNhbHMiLCJjYyQwIiwiaXNfZXF1YWxfY2Fub25pY2FscyIsImNvYXJzZV9oYXNoIiwicGx1c19pbnRlcm5hbCIsImUiLCJuJDAiLCJleHRyYSIsIm5vZGVfc2hhcGUiLCJpZF90b195b2pzb24iLCJpZF9vZl95b2pzb24iLCJkdW1teSIsImVtcHR5X2NjIiwibmJ0IiwicmF3X2ZpbmRfdHkiLCJ0eXMiLCJmaW5kX3R5IiwiYWRkX29yaWdpbiIsInJlY29uc3RydWN0aW9uX25hdmlnYXRpb24iLCJhbHJlYWR5X3NwZWNpZmllZCIsInJhd19maW5kX3Jvb3QiLCJub2Rlc19ieV90eXBlIiwidHkkMCIsImZpbmRfcm9vdCIsIndlaWdodCIsImwkMCIsImQkMCIsImwkMSIsImRvdWJsZSQwIiwibGlua3MiLCJhcmVfY29tcGF0aWJsZSIsImRlYnVnX21vZGUiLCJwb3NzaWJpbGl0aWVzIiwic3RyaWN0Iiwicm9vdDEiLCJjYzEiLCJyb290MiIsImNjMiIsInJlbmFtZSQxIiwiYXRfbGVhc3Rfb25lX2VkZ2UkMSIsImF0X2xlYXN0X29uZV9lZGdlIiwicmVuYW1lIiwidG9kb3MiLCJwYWlyIiwibHkiLCJseCIsInJlbiIsInRvZG8iLCJvbmVfZWRnZSIsIm9uZV9lZGdlJDEiLCJzMSIsInMyIiwiciIsIm9uZV9lZGdlJDAiLCJjb25mbGljdCIsInJlbmFtZSQwIiwidG9kb3MkMCIsImF0X2xlYXN0X29uZV9lZGdlJDAiLCJhZ3MiLCJoMSIsImJvb2wiLCJhZ3MkMCIsImF1dG9tb3JwaGlzbXMiLCJwb3RlbnRpYWxfcGFpcmluZyIsImxhIiwibWF0Y2hpbmdzIiwicmF3X3RvX25hdmlnYXRpb24iLCJmdWxsIiwibm9kZXMiLCJkb24iLCJmaXJzdCIsImRvbiQxIiwiaCQwIiwicmUiLCJhbnMiLCJhbnMkMCIsImZpcnN0JDAiLCJvdXQkMCIsImluZnMiLCJjYW5kX25vZGVzIiwibG5rMSIsImxuazEkMCIsIml5JDAiLCJpeSQ2IiwiaXkkMiIsIml5JDUiLCJpeSQzIiwiaXkkNCIsIml5JDEiLCJvdXRsIiwiY2FuZF9ub2RlcyQwIiwibm9kZXNfYnlfdHlwZSQwIiwicmVmX25idCIsInJlZl9uYnQkMCIsInIkMiIsImlkcyIsInEiLCJxJDAiLCJyJDAiLCJsc3QiLCJmc3RzIiwiciQxIiwicmUkMCIsInJlX2ltZyIsInJlX2ltZyQwIiwicmUkMSIsInNpdGVzIiwic2l0ZXMkMCIsImNvdW50ZXJfdmFsdWUiLCJzaWQkMCIsIm5pZCQwIiwiY291bnQiLCJzaWQiLCJuaWQiLCJvdGhlciIsImVsIiwiZGkiLCJkbiIsImNvdW50JDAiLCJjb3VudGVyX3ZhbHVlX2NjIiwiZXh0cmVtaXR5IiwiZG90Y29tbWEiLCJkb3RuZXQiLCJwcmludF9jYyIsImNjX2lkIiwid2l0aF9pZCIsInN0aCIsInN0aCQwIiwiZnVsbF9zcGVjaWVzIiwiY2NfaWQkMCIsIm5laWdoIiwibGlua19pZHMiLCJub3RfZW1wdHkiLCJhZ194IiwiYWdfaSIsInN0IiwiZnJlZSIsImRzdF9wIiwiZHN0X2EiLCJkc3RfdHkiLCJraW5kIiwib3V0JDEiLCJwcmludF9jY19hc19pZCIsIm5vdF9lbXB0eSQwIiwibWVyZ2VfY29tcGF0aWJsZSIsInJlc2VydmVkX2lkcyIsImZyZWVfaWQiLCJpbmoxX3RvXzIiLCJpbWciLCJhdmFpbGFibGVfaWRzIiwidXNlZF9pZHMiLCJhdmFpbGFibGVfaW5fY2MxIiwiZnJlZV9pZF9mb3JfY2MxIiwiZ2V0X2NjMiIsInBhY2siLCJ0b2RvczIiLCJ0b2RvczEiLCJpbmoyIiwiaW5qMSIsImZyZWVfaWQkMCIsImZyZWVfaWQkMSIsImdldF9jYzEiLCJub2Rlc2kiLCJub2Rlc28iLCJub2Rlc2oiLCJub2Rlc28kMCIsIm5vZGVzaiQwIiwic3RpJDEiLCJuJDEiLCJzdGokMyIsInN0byQwIiwibiQyIiwic3RqIiwic3RpIiwic3RqJDIiLCJzdG8iLCJzdGokMCIsInN0aSQwIiwic3RqJDEiLCJpbmoyJDAiLCJwYWNrJDAiLCJ0b2RvczIkMCIsImokMCIsIm5vZGVzaSQwIiwiaW5qMiQxIiwicGFjayQxIiwiY29udGVudCIsInJvb3RzIiwic29ucyIsInNpZ25hdHVyZXMiLCJlbnYiLCJwcmludCQwIiwicHBfcG9pbnQiLCJwX2lkIiwiZ2V0X3NpbmdsZV9hZ2VudCIsImdldCQwIiwidG9fbmF2aWdhdGlvbiIsInRyYW5zaXRpb25fdG9feW9qc29uIiwidHJhbnNpdGlvbl9vZl95b2pzb24iLCJkc3QiLCJzb3J0cyIsInNpZ19kZWNsIiwibCQyIiwicyQxIiwibCQzIiwibmV3X29ic19tYXAiLCJnZXRfZWxlbWVudGFyeSIsImRvbWFpbiIsIm5vZGUiLCJhcnJvdyIsInNhIiwidGFpbCIsImluaiIsInByaW50JDEiLCJlbWJlZGRpbmdzX3RvX2Z1bGx5X3NwZWNpZmllZCIsImFfaWQiLCJmcmVzaCIsImlkX2J5X3R5cGUiLCJuYl9pZCIsImluc2VydF9uYXZpZ2F0aW9uIiwiZHN0X2lkIiwiY2NfZCIsImluajJkc3QiLCJpbmoyZHN0JDAiLCJwX2lkJDAiLCJwb2ludCIsInQkMyIsIm5hdiQwIiwic2kiLCJzaSQwIiwidCQxIiwic2kkMSIsImFnJDEiLCJuJDMiLCJzaWwiLCJhZ2wiLCJpbmokMCIsInQkMiIsIm4kNCIsInN1cCIsImlual9lMnN1cCIsImlual9zdXAyZHN0IiwiaW5qX2RfdG9fbyIsImNjX28iLCJpbnRlciIsImRpc2MiLCJub2Rlc2QiLCJkaXNjJDAiLCJub2Rlc28kMSIsImRzIiwiZGwiLCJvcyIsIm9sIiwibGkiLCJkaXMiLCJpbnQkMSIsImludGVybiQxIiwiYWxsX2xpbmtzIiwiZGlzY292ZXJlZCQyIiwiZGlzY292ZXJlZCIsIm5leHRfcm91bmQiLCJyZWNvZ24iLCJpbnRlcm4iLCJpbnRlcm4kMCIsInJlY29nbiQwIiwicmVjb2duJDEiLCJuYXYiLCJpbmpfcF8yZHN0IiwicF9pZCQxIiwiaW5qMmRzdCQxIiwiYWRkX2NjIiwidG9wbGV2ZWwiLCJvcmlnaW4iLCJlbGVtZW50IiwidyIsImhhc2giLCJydHkkMCIsInJpZCQwIiwicm9vdHMkMCIsInJ0eSIsInJpZCIsImVudl93Iiwib3V0X2lkIiwiZW52X3dfaCIsIm9mX2VudiIsImFjY193IiwiZGVidWdfcHJpbnQiLCJjaGVja19kYW5nbGluZyIsIndrIiwiYmVnaW5fbmV3IiwiZnJlc2hfY2NfaWQiLCJyYXdfZmluaXNoX25ldyIsImNjX2NhbmRpZGF0ZSIsInByZWVudiIsImZpbmlzaF9uZXciLCJuZXdfbGluayIsInhfbiIsInlfbiIsInN0eSIsInN0eCIsIm5ld19mcmVlIiwibmV3X2ludGVybmFsX3N0YXRlIiwidmEiLCJuZXdfbm9kZSIsInR5cGVfaWQiLCJhcml0eSIsIm5vZGUkMCIsImZvbGRfYnlfdHlwZSIsImFnZW50X3R5cGUiLCJsaXN0X3BvcyIsImZvbGQiLCJmaW5hbGl6ZSIsInNoYXJpbmciLCJlbnYkMCIsInckMCIsInckMSIsInckMiIsInckMyIsInckNCIsInckNSIsImRvbWFpbiQxIiwibGV2ZWwkNCIsImFjYyQzIiwibGV2ZWwkMSIsImRvbWFpbiQwIiwibGlzdCIsImFjYyQyIiwidGhpcyQwIiwibGV2ZWwiLCJ0aGlzJDEiLCJyZW5hbWluZyIsImFjY24iLCJub2RlczEiLCJub2RlczIiLCJpMiIsImwyIiwiaTEiLCJsMSIsImltYWdlIiwibmV3cyIsIm1pZCIsImlkJDAiLCJpZCQxIiwibGV2ZWwkMiIsImxldmVsJDMiLCJjb21wbGV0ZV9kb21haW4iLCJkb21haW4kMiIsInNpbmdsZXMiLCJzaWdzJDEiLCJlbGVtZW50YXJpZXMiLCJzdGVwIiwiYXJyIiwidHkxIiwic2ExIiwiczIkMCIsInR5MiIsInNhMiIsImRvbWFpbl9sZXZlbCIsImFjY19sZXZlbCIsImxsIiwiYWNjbCIsImluanMiLCJpbmpfZV94Iiwic3RhdF9uYXZfc3RlcHMiLCJsZXZlbDAiLCJzaW5nbGVfYWdlbnRfcG9pbnRzIiwibWVyZ2Vfb25faW5mIiwiZzEiLCJnMiIsIm1fbGlzdCIsInBhaXJpbmciLCJtJDAiLCJwdXNob3V0IiwibGVuZ3RoIiwiY28iLCJjbyQwIiwibm0iLCJjY2lkIiwicmVjb25zdHJ1Y3RfcmVuYW1pbmciLCJncmFwaCIsInJpZHMiLCJpbmplY3RpdmUiLCJyZWNvbnN0cnVjdCIsImlzX3Jvb3Rfb2YiLCJyb290JDAiLCJyb290c19vZiIsImdldCIsImVsZW1lbnRzX3dpdGhfdHlwZXMiLCJjY3MiLCJtYXAiLCJjb21wYXJlIiwiZW1wdHlfY2FjaGUiLCJmcm9tX2VkZ2UiLCJzaXRlIiwiY2FjaGUiLCJjYWNoZSQwIiwicmV2X2RlcHMiLCJvYnMiLCJyZW1haW5zIiwiaW5qX3BvaW50MmdyYXBoIiwicGlkIiwiaW5qX3BvaW50MmdyYXBoJDAiLCJwaWQkMCIsInNvbiIsImNhIiwiY2EkMCIsIm5leHQiLCJjYWNoZSQxIiwicmVtYWlucyQwIiwib2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCIsInJkZXBzIiwib2JzZXJ2YWJsZXNfZnJvbV9mcmVlIiwib2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCIsIm9ic2VydmFibGVzX2Zyb21fbGluayIsInNpdGUkMCIsInByaW50X3NpdGUiLCJwbGFjZSIsInByaW50X2ludGVybmFsIiwiZ2V0X3R5cGUiLCJnZXRfaWQiLCJpc19mcmVzaCIsImNvbmNyZXRpemUiLCJpbmpfZnJlc2giLCJpbmpfbm9kZXMiLCJlbXB0eV9ldmVudCIsImpzb25fZGljdGlvbm5hcnkiLCJhY3Rpb24iLCJ3ZWlnaHRfcmV2ZXJzZSIsInNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3QiLCJzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0X3JldmUiLCJzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0Iiwic29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdF9yZXZlIiwiY29uY3JldGl6ZV90ZXN0IiwiaW5qMmdyYXBoIiwicGwiLCJwbCQwIiwicGwkMSIsInBsJDIiLCJzJDIiLCJwbCQzIiwicyQzIiwicGwkNCIsInMkNCIsInBsJDUiLCJjb25jcmV0aXplX2FjdGlvbiIsInBsJDYiLCJ0cnlfY29uY3JldGl6ZV9hY3Rpb24iLCJhY3Rpb25zIiwiY29uY3JldGl6ZV9ldmVudCIsImJ0IiwibWFwX3Rlc3QiLCJtYXBfYWN0aW9uIiwibWF0Y2hfdGVzdHMiLCJiJDMiLCJjJDAiLCJtYXRjaF9hY3Rpb25zIiwiYmxzIiwiYWxzIiwib2siLCJnZXRfaWRzIiwibWF0Y2hfcXVhcmtzIiwiYV9xdWFya3MiLCJjX3F1YXJrcyIsImZtYXRjaCIsImFfcXVhcmtzJDAiLCJjX3F1YXJrcyQwIiwiYV9xdWFya3MkMSIsImFxIiwiYXEkMCIsImNxIiwiY19xdWFya3MkMSIsImNxcyIsIm1hdGNoaW5nX2Fic3RyYWN0X2NvbmNyZXRlIiwiYWUiLCJjZSIsImFlX3Rlc3RzIiwiY2VfdGVzdHMiLCJhYnN0cmFjdF9pZHMiLCJjb25jcmV0ZV9pZHMiLCJwYXJ0aXRpb24iLCJmbWFwIiwibWF0Y2hpbmciLCJ0ZXN0cyIsImNhY3Rpb25zJDAiLCJ0bCIsImNpZCIsImNpZCQwIiwidGVzdCIsImN0ZXN0cyIsImNpZCQxIiwiYWN0IiwiY2FjdGlvbnMiLCJzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQiLCJuYSIsImFnZW50JDAiLCJzdWJzdF9tYXBfc2l0ZSIsInN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IiwiaW50ZXJuYWxfc3RhdGUiLCJzaXRlJDEiLCJzaXRlJDIiLCJzaXRlJDMiLCJzaXRlJDQiLCJiaW5kaW5nX3R5cGUiLCJzaXRlJDUiLCJzaXRlJDYiLCJzaXRlMiIsInNpdGUxIiwic2l0ZTEkMCIsInNpdGUyJDAiLCJzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGUiLCJzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IiwicmVuYW1lX2Fic3RyYWN0X3Rlc3QiLCJzdWJzdF9tYXAyX2FnZW50X2luX2FjdGlvbiIsImYkMCIsInMxJDAiLCJzMiQxIiwiczEkMSIsInMxJDIiLCJzMiQyIiwiYWdlbnQkMSIsImFnZW50JDIiLCJzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIiwicmVuYW1lX2Fic3RyYWN0X2FjdGlvbiIsInN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCIsImJzdGF0ZSIsImJzdGF0ZSQwIiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3NpIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lIiwicmVuYW1lX2Fic3RyYWN0X3NpZGVfZWZmZWN0Iiwic3Vic3RfbWFwX2FnZW50X2luX2V2ZW50Iiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2Iiwic3Vic3RfbWFwMl9hZ2VudF9pbl9jb25jcmV0ZV9lIiwiZiQxIiwiZiQyIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQiLCJyZW5hbWVfYWJzdHJhY3RfZXZlbnQiLCJwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlIiwicHJpbnRfY29uY3JldGVfdGVzdCIsInByaW50X2NvbmNyZXRlX2FjdGlvbiIsInByaW50X2NvbmNyZXRlX2JpbmRpbmdfc3RhdGUiLCJhZ19pZCIsInNpZ3MkMiIsInNpZ3MkMyIsIndyaXRlX2JpbmRpbmdfdHlwZSIsInJlYWRfYmluZGluZ190eXBlIiwiYmluZGluZ190eXBlX3RvX2pzb24iLCJ3cml0ZV9xdWFyayIsInJlYWRfcXVhcmsiLCJxdWFya190b19qc29uIiwicXVhcmtfb2ZfanNvbiIsIndyaXRlX3Rlc3QiLCJyZWFkX3Rlc3QiLCJiaSIsInRlc3RfdG9fanNvbiIsInRlc3Rfb2ZfanNvbiIsIndyaXRlX2FjdGlvbiIsImluZm8iLCJyZWFkX2FjdGlvbiIsImFjdGlvbl90b19qc29uIiwiYWN0aW9uX29mX2pzb24iLCJ3cml0ZV9ldmVudCIsImJmIiwicmVhZF9ldmVudCIsInNpZGVfZWZmZWN0c19zcmMiLCJzaWRlX2VmZmVjdHNfZHN0IiwiY29ubmVjdGl2aXR5X3Rlc3RzIiwiZXZlbnRfdG9fanNvbiIsImNjdCIsImV2ZW50X29mX2pzb24iLCJjX3QiLCJzX2VfZHN0Iiwic19lX3NyYyIsImNjbCIsInAyIiwicDEiLCJwMSQwIiwicDIkMCIsInAkNCIsInAkNSIsInAkNiIsInAkNyIsInAkOCIsIm4kNSIsIm1hcF9mb2xkX2FnZW50IiwiYWNjJDQiLCJhY2MkNSIsImEkNyIsImFjYyQ2IiwiYSQ4IiwibWFwX2FnZW50IiwiZm9sZF9hZ2VudCIsInMkNSIsInMkNiIsImEkOSIsImdldF9uZWdhdGl2ZV9wYXJ0IiwiY3JlYXRlZF9hZ2VudHMiLCJsbmtfZHN0IiwiYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9uIiwibmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjIiwicG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjIiwic2lkZV9lZmZlY3RfZHN0cyIsInJlbSIsInJldiIsImV4dHJhY3RfY2NfaWRzIiwiZXh0cmFjdF9hYnN0cmFjdF9ldmVudCIsImFsZ19leHByX3RvX3lvanNvbiIsImFsZ19leHByX29mX3lvanNvbiIsInJ1bGVfdG9feW9qc29uIiwicnVsZV9vZl95b2pzb24iLCJmdWxseV9zcGVjaWZpZWRfcGF0dGVybl90b19wb3MiLCJnIiwiZW1iIiwiZyQwIiwiZW1iJDAiLCJ0ciIsInByaW50X2V4cHJfdG9feW9qc29uIiwiZl92YXIiLCJwcmludF9leHByX29mX3lvanNvbiIsIm1hcF9leHByX3ByaW50IiwiZm9sZF9leHByX3ByaW50IiwiZGluX2tpbmRfdG9feW9qc29uIiwiZGluX2tpbmRfb2ZfeW9qc29uIiwid3JpdGVfZGluX2tpbmQiLCJzdHJpbmdfb2ZfZGluX2tpbmQiLCJsZW4iLCJyZWFkX2Rpbl9raW5kIiwiZGluX2tpbmRfb2Zfc3RyaW5nIiwicHJpbnRfdF9leHByX3RvX3lvanNvbiIsInByaW50X3RfZXhwcl9vZl95b2pzb24iLCJtb2RpZmljYXRpb25fdG9feW9qc29uIiwicmF3IiwibmFtZSIsImlkcyQwIiwibmFtZSQwIiwiZiQzIiwidGVzdHMkMCIsImlkcyQxIiwiZiQ0IiwiZiQ1IiwibW9kaWZpY2F0aW9uX29mX3lvanNvbiIsInJhdyQwIiwiYm9vbF9leHByX3RvX3lvanNvbiIsImJvb2xfZXhwcl9vZl95b2pzb24iLCJwZXJ0dXJiYXRpb25fdG9feW9qc29uIiwicGVydHVyYmF0aW9uX29mX3lvanNvbiIsImV4aXN0c19tb2RpZmljYXRpb24iLCJjaGVjayIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZSIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcCIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbSIsImUkMCIsImZuIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tJDAiLCJtYXBfZXhwcl9ydWxlIiwiZm9sZF9leHByX3J1bGUiLCJtYXBfZXhwcl9wZXJ0dXJiYXRpb24iLCJmX2FsZyIsImZfYm9vbCIsImZvbGRfZXhwcl9wZXJ0dXJiYXRpb24iLCJwcmludF9saW5rIiwicHJfcG9ydCIsInByX3R5cGUiLCJwcl9hbm5vdCIsImxpbmtfdG9fanNvbiIsInBvcnRfdG9fanNvbiIsInR5cGVfdG9fanNvbiIsImFubm90X3RvX2pzb24iLCJsaW5rX29mX2pzb24iLCJwb3J0X29mX2pzb24iLCJ0eXBlX29mX2pzb24iLCJhbm5vdGVkX29mX2pzb24iLCJwcmludF9saW5rX2Fubm90IiwibHR5cGVzIiwicnVsZV9pbnRlcm5hbF9vZl9qc29uIiwicHJpbnRfY291bnRlcl90ZXN0IiwicHJpbnRfcnVsZV9taXh0dXJlIiwiY3JlYXRlZF9jb3VudGVycyIsInNob3dfZXJhc2VkIiwic2hvd19lcmFzZWQkMCIsImNvdW50ZXJzIiwic3dpdGNoJDAiLCJpc19jb3VudGVyJDAiLCJlcSIsImRlbHRhIiwicHJpbnRfcmF0ZXMiLCJtYXhfZGlzdCIsInJhIiwibWQiLCJwcmludF9ydWxlIiwibmIiLCJsdHlwZXMkMCIsInJ1bGVfbWl4dHVyZV90b19qc29uIiwicnVsZV9taXh0dXJlX29mX2pzb24iLCJsYWxnX2V4cHJfdG9fanNvbiIsImxhbGdfZXhwcl9vZl9qc29uIiwicnVsZV90b19qc29uIiwicnVsZV9vZl9qc29uIiwicmFpc2VfaWZfbW9kaWZpY2F0aW9uIiwicmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMiLCJyYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCIsInN0YXR1cyIsInNpZGUiLCJhZ2VudF9uYW1lIiwicmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0IiwicmFpc2VfY291bnRlcl9taXN1c2VkIiwicmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UiLCJyYWlzZV9saW5rX3Nob3VsZF9iZV9yZW1vdmVkIiwiY29weV9ydWxlX2FnZW50IiwiYWdlbnRfdG9fZXJhc2VkIiwicmFfcG9ydHMiLCJyYV9pbnRzIiwidG9fZXJhc2VkIiwidG9fbWFpbnRhaW5lZCIsInRvX3Jhd19taXh0dXJlIiwiaW50ZXJuYWxzIiwicG9ydF9uYW1lIiwibWF4X2xpbmtfaWQiLCJtYXhfcyIsIm1heF9saW5rX2lkX3NpdGVzIiwibWF4X2lkIiwibGlua19vY2N1cmVuY2VfZmFpbHVyZSIsImtleSIsInBvcnRzX2Zyb21fY29udGFjdF9tYXAiLCJ0eV9pZCIsImFkZF9vbmVfaW1wbGljaXRfaW5mbyIsImxpbmsiLCJwcmV2cyIsInBfc3dpdGNoIiwiZHN0X2luZm8iLCJhZ190YWlsIiwib3V0X3RhaWwiLCJwb3J0IiwicG9ydHMkMCIsInN3IiwidG9kbyQwIiwicG9ydHMkMSIsImlzX2xpbmtlZF9vbl9wb3J0IiwibWUiLCJpc19saW5rZWRfb24iLCJkZWZpbmVfZnVsbF90cmFuc2Zvcm1hdGlvbiIsInRyYW5zZiIsImxpbmtzX3RyYW5zZiIsImNhbmQiLCJhZGRlZCIsInJlbW92ZWQiLCJsaW5rc190cmFuc2YkMCIsImxpbmtzX3RyYW5zZiQxIiwiZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIiwiYWRkX2luc3RhbnRpYXRpb25fZnJlZSIsImFkZF9zaWRlX3NpdGUiLCJzaWRlX3NpdGVzIiwiYWRkX2ZyZWVkX3NpZGVfZWZmZWN0Iiwic2lkZV9lZmZlY3RzIiwiYWRkX2FnZW50c19pbl9jYyIsInJlZ2lzdGVyZWRfbGlua3MiLCJpbnN0YW50aWF0aW9ucyIsImFnX2wiLCJ3ayQwIiwidHJhbnNmJDAiLCJoYW5kbGVfcG9ydHMiLCJyX2wiLCJjX2wiLCJsX3QiLCJzaXRlX2lkJDQiLCJyX2wkMCIsImxpbmtzJDIiLCJsX3QkMCIsInNpdGVfaWQkNSIsImlzX2VyYXNlZCIsInJlZl9wb3J0cyIsIm9fY2NfdGVzdHMiLCJ0aGlzX2NjX3Rlc3RzIiwic2lkZV9lZmZlY3RzX2RzdCQxIiwic2lkZV9lZmZlY3RzX3NyYyQxIiwiYWN0aW9ucyQzIiwidGVzdHMkMiIsInNpdGVfaWQkMiIsImluc3RhbnRpYXRpb25zJDAiLCJhY3Rpb25zJDAiLCJsaW5rcyQwIiwic2lkZV9lZmZlY3RzX2RzdCQwIiwic2lkZV9lZmZlY3RzX3NyYyQwIiwiYWN0aW9ucyQyIiwidGVzdHMkMSIsInNpZGVfZWZmZWN0cyQxIiwiYWN0aW9ucyQxIiwic2l0ZV9pZCQzIiwic2lkZV9lZmZlY3RzJDIiLCJzaXRlX2lkJDEiLCJzaXRlX2lkIiwic2l0ZV9pZCQwIiwic2lkZV9lZmZlY3RzJDAiLCJ3ayQxIiwiaiQxIiwiaiQyIiwiaSQzIiwiaSQ0Iiwid2skNiIsInRyYW5zZiQ3Iiwid2skMiIsImxfdCQyIiwidHJhbnNmJDEiLCJzaXRlX2lkJDciLCJsX3QkMSIsInNpdGVfaWQkNiIsImkkMiIsImRzdF9wbGFjZSIsIndrJDMiLCJjX2wkMCIsImxfdCQzIiwidHJhbnNmJDIiLCJzaXRlX2lkJDgiLCJyX2wkMSIsInJfbCQyIiwibF90JDciLCJ0cmFuc2YkNiIsInJlJDIiLCJzaXRlX2lkJDEyIiwic2l0ZV9pZCQxMSIsInNpdGVfaWQkOSIsImxfdCQ1IiwidHJhbnNmJDQiLCJ3ayQ0IiwibF90JDYiLCJ0cmFuc2YkNSIsImNfbCQxIiwic2l0ZV9pZCQxMCIsImluY3Jfb3JpZ2luIiwiY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtIiwiY29tcGlsZV9tb2RlX29uIiwicHJlY29tcF9taXhzIiwibmV3X3N3aXRjaCIsImF1eF9vbmUkMCIsInByZXZpb3VzIiwiY3VycmVudCIsImN1cnJlbnQkMCIsImF1eF9hZ3MkMCIsImkkNSIsIm9yX3R5IiwicHJldiIsImF1eF9vbmUiLCJpJDYiLCJvcl90eSQwIiwiaSQ3IiwidG9kb3MkMSIsImF1eF9hZ3MiLCJhbGxfbWl4cyIsInRyYW5zZm9ybWF0aW9ucyQwIiwiZXZlbnQiLCJhZGRlZCQ1Iiwid2tfb3V0IiwiZW52JDEiLCJhZGRlZCQ2IiwicmVtb3ZlZCQwIiwiaW5zdGFudGlhdGlvbnMkMSIsImxpbmtzX3RyYW5zZiQyIiwiYWRkZWQkNyIsInJlbW92ZWQkMSIsImFjcyIsImF5IiwiYXgiLCJhY3Rpb25zJDQiLCJyZW1vdmVkJDIiLCJ0cmFuc2Zvcm1hdGlvbnMkMiIsImNyZWF0ZV9hY3Rpb25zIiwiYWRkZWQkNCIsImFkZGVkJDAiLCJhZGRlZCQxIiwicG9pbnQkMCIsImFkZGVkJDIiLCJhZGRlZCQzIiwiaW50ZiQwIiwiY3JlYXRlX2FjdGlvbnMkMCIsInRyYW5zZm9ybWF0aW9ucyQzIiwiYWN0aW9ucyQ1IiwiY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtJDAiLCJjY19lbnYiLCJydWxlcyIsImxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUiLCJuYl9jYyIsIm1peHMiLCJsbmtfcGFjayIsImtub3duX3NyYyIsImRzdF9zIiwic3JjX2luZm8iLCJsbmtfcGFjayQwIiwidHJhbnNmcyIsImZyIiwiZmlkIiwiYV90eXBlIiwiZWRpdCIsImNjX2lkMSIsImNjX2lkMiIsImVkaXQkMCIsInRlc3QkMCIsImVkaXQkMSIsInRlc3QkMSIsImVpZCIsImVkaXQkMiIsInRlc3QkMiIsImlkJDMiLCJjY19pZCQxIiwiaWQkMiIsInRyYW5zZnMkMCIsInJfbWl4Iiwicl9jcmVhdGVkIiwicGF0dGVybnNfb2ZfbWl4dHVyZSIsInByZV9lbnYiLCJzbmFwIiwiY2NfY2FjaGUiLCJyYV90eXBlIiwiYXIiLCJkYW5nbGluZyIsImRhbmdsaW5nJDAiLCJkYW5nbGluZyQxIiwiY2NfY2FjaGUkMCIsInByZV9lbnYkMCIsImluaXQiLCJ0b2tlbnMiLCJhbGdzIiwib2JzZXJ2YWJsZXMiLCJpbnRlcnZlbnRpb25zIiwiYXN0X3J1bGVzIiwiYWxnX3JkIiwidG9rX3JkIiwiZGVwc19pbl9lIiwiZGVwc19pbl90IiwiZGVjb25zdHJ1Y3QiLCJnZXRfb2JzIiwiZ2V0X3J1bGVzIiwibmV3X2RvbWFpbiIsInRva2Vuc19maW5kZXIiLCJhbGdzX2ZpbmRlciIsIm51bV9vZl9hZ2VudCIsIm5tZSIsImZvbGRfcnVsZXMiLCJydWxlIiwiZm9sZF9wZXJ0dXJiYXRpb25zIiwiZ2V0X3J1bGUiLCJnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCIsImdldF9hc3RfcnVsZSIsImZvbGRfYXN0X3J1bGVzIiwibGthcHBhX3J1bGUiLCJnZXRfYXN0X3J1bGVfcmF0ZV9wb3MiLCJ1bmFyeSIsIm5iX3J1bGVzIiwibnVtc19vZl9ydWxlIiwibmJfc3ludGFjdGljX3J1bGVzIiwibnVtX29mX2FsZyIsImdldF9hbGciLCJnZXRfYWxncyIsIm5iX2FsZ3MiLCJudW1fb2ZfdG9rZW4iLCJzdHIiLCJuYl90b2tlbnMiLCJnZXRfcGVydHVyYmF0aW9uIiwibmJfcGVydHVyYmF0aW9ucyIsImdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMiLCJnZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMiLCJhbGxfZGVwZW5kZW5jaWVzIiwicHJpbnRfYWdlbnQiLCJwcmludF9hbGciLCJzcGVjaWFsIiwicHJpbnRfdG9rZW4iLCJwcmludF9hc3RfcnVsZSIsIm1hcF9vYnNlcnZhYmxlcyIsInByX2FsZyIsInByX3J1bGUiLCJwcl9wZXJ0IiwicHJfcnVsZSQwIiwiY2hlY2tfaWZfY291bnRlcl9pc19maWxsZWRfZW5vIiwib3ZlcndyaXRlX3ZhcnMiLCJhbGdfb3ZlcndyaXRlIiwiZm9sZF9taXh0dXJlX2luX2V4cHIiLCJ4MSIsIngyIiwieDMiLCJrYXBwYV9pbnN0YW5jZV90b195b2pzb24iLCJmaWxlcyIsImthcHBhX2luc3RhbmNlX29mX3lvanNvbiIsInVuYXJ5X3BhdHRlcm5zIiwiY2NfbWl4IiwiYWxnX2V4cHIiLCJib29sX2V4cHIiLCJwcmludF9leHByIiwiYWxnIiwicHJpbnRfZXhwcl92YWwiLCJhbGdfdmFsIiwiZGVjb21waWxlZF9ydWxlIiwiZGlzdCIsInJhdGUiLCJlbGVtZW50YXJ5X3J1bGUiLCJwcl90cmFucyIsImJveGVkX2NjIiwibW9kaWZpY2F0aW9uIiwiZm4kMCIsImZuJDEiLCJmbiQyIiwidmEkMCIsImNjJDEiLCJmbiQzIiwiZm4kNCIsInBlcnR1cmJhdGlvbiIsInBlcnQiLCJhdXhfYWxhcm0iLCJlbnZfa2FwcGEiLCJkZWNvbXBpbGVkX2VudiIsInBhcnNlIiwicmVzdWx0IiwiZ2V0X3ZhbHVlIiwicG9zX3AiLCJwYXJhbSIsInZhbHVlX2xpc3QiLCJwYXJhbSQwIiwiY2Zsb3dGaWxlIiwiZm9ybWF0Q2Zsb3ciLCJzdG9yeV9jb21wcmVzc2lvbiIsImNvbmYiLCJzcCIsInVwIiwiZm9ybWF0Q2Zsb3ckMCIsInZhbHVlIiwicG9zX3YiLCJlcnJvciIsInRsJDAiLCJ0bCQxIiwiZGl2aWRlX2V4cHJfYnlfaW50Iiwib3B0JDAiLCJyb290X29ubHkiLCJsb2MiLCJiJDIwIiwiYSQxMyIsInJvb3Rfb25seSQwIiwiYiQ3IiwiYiQ2IiwibG9jX2NzdCQwIiwibG9jX2NzdCQxIiwiYyQxIiwiYyQyIiwiYiQ0IiwibG9jX2NzdCQyIiwiYiQ1IiwibG9jX2NzdCIsImV4cHIkMyIsIm9wdCQzIiwiZXhwciQyIiwib3B0JDIiLCJleHByJDEiLCJvcHQkMSIsImIkOSIsImIkOCIsImxvY2RpdiIsImMkNSIsImIkMTMiLCJleHByJDYiLCJvcHQkNiIsImIkMTQiLCJiJDEwIiwiYyQ0IiwibG9jX2JpbiQwIiwiYiQxMSIsImV4cHIkNSIsIm9wdCQ1IiwiYyQzIiwibG9jX2JpbiIsImV4cHIkNCIsIm9wdCQ0IiwiYSQxMCIsImIkMTIiLCJiJDE2IiwiYSQxMSIsImIkMTUiLCJiJDE4IiwiYSQxMiIsImIkMTciLCJiJDE5IiwibG9jJDAiLCJhJDE0IiwiYSQxNSIsImEkMTgiLCJhJDE2IiwiYSQxNyIsImxvYyQxIiwibm8kMCIsInllcyQwIiwic2ltcGxpZnlfYm9vbCIsImxvYyQyIiwiZXhwciQ3IiwiZXhwciQ4IiwibG9jJDMiLCJleHByJDkiLCJleHByJDEwIiwiZXhwcl9ib29sIiwic2ltcGxpZnkiLCJjbGVhbiIsImNsZWFuX2Jvb2wiLCJkdCIsImR0JDAiLCJjc3QiLCJjb3JyZWN0ZWRfcmF0ZSIsImNvcnJlY3RlZF9yYXRlMSIsImNvcnJlY3RlZF9yYXRlMiIsImUkMSIsImNzdCQwIiwiY29ycmVjdGVkX3JhdGUkMCIsImNzdCQxIiwiZ2V0X2NvcnJlY3RlZF9yYXRlJDAiLCJjb3JyZWN0ZWRfcmF0ZV9jb25zdCIsIm5lY2Vzc2FyaWx5X2VxdWFsIiwiYV9vcHQiLCJiX29wdCIsImRlcCIsImFkZF9taXh0dXJlIiwiYWRkX3Rva2VuIiwiZGVwX2VudiIsInRpbWVfdmFyIiwiYWNjdSIsImFjY3UkMCIsImFjY3UkMSIsImRpZmZfZ2VuIiwiZl90b2tlbiIsImZfc3ltYiIsImZfdGltZSIsImUyJDAiLCJkaWZmX3Rva2VuIiwiZGlmZl9taXh0dXJlIiwiZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciIsImFycmF5X2lkIiwiZm9sZF9vdmVyX21peHR1cmVzX2luX2FsZ19leHByIiwibW9kZWwiLCJhbGdzX2V4cHIiLCJ1bmFyeV9yYXRlIiwiZGVsdGFfdG9rZW5zIiwiYWNjdSQyIiwianNvbl9kaWN0aW9ubmFyeSIsImpzb25fZGljdGlvbm5hcnkkMCIsInVwZGF0ZV9wcm9maWxpbmdfaW5mbyIsImEiLCJpbmZvIiwiZXZlbnQiLCJzdG9yeV9pZCIsImNvbXBhcmVfYnlfc3RvcnlfaWQiLCJ4IiwieSIsInRvX2pzb24iLCJmIiwib2ZfanNvbiIsInN0b3J5X2V2ZW50Iiwic3RvcnlfdGltZSIsIndyaXRlX2pzb24iLCJvYiIsIm8iLCJyZWFkX2pzb24iLCJzdCIsImIiLCJwcm9maWxpbmdfaW5mbyIsInByaW50X2V2ZW50X2tpbmQiLCJlbnYiLCJpIiwibCIsInMkMSIsImVudiQwIiwicl9pZCIsInMiLCJzJDAiLCJwcmludF9ldmVudF9raW5kX2RvdF9hbm5vdCIsInN1YnNfc3RlcCIsImR1bW15X3N0ZXAiLCJwcmludF9ldmVudCIsImNvbXBhY3QiLCJsb2ciLCJlIiwiZXZfa2luZCIsInNpZ3MiLCJzdGF0ZSIsInNpdGUiLCJhZyIsImFnX2lkIiwicHJpbnRfc3RlcCIsIm9wdCIsImVudiQxIiwic3RoIiwieSQwIiwieCQwIiwiYWN0aW9ucyIsInRlc3RzIiwic2lncyQwIiwiZ2V0X3R5cGVzX2Zyb21faW5pdCIsImFjYyIsImFjdGlvbiIsImF0eXBlIiwicHJpbnRfbGFiZWxfb2Zfc3RlcCIsIngkMyIsIngkNCIsImEkMCIsImwkMCIsIngkNSIsIngkMSIsIngkMiIsIndyaXRlX3N0ZXAiLCJ6IiwieiQwIiwieiQxIiwieSQxIiwicmVhZF9zdGVwIiwiYiQwIiwic3RlcF90b195b2pzb24iLCJyZXZfYWN0aW9ucyIsIndyaXRlX2pzb24kMCIsInJlYWRfanNvbiQwIiwic3RyaW5nX29mX3N0ZXAiLCJsZW4iLCJzdGVwX29mX3N0cmluZyIsInN0ZXBfaXNfb2JzIiwic3RlcF9pc19pbml0Iiwic3RlcF9pc19zdWJzIiwic3RlcF9pc19ydWxlIiwic3RlcF9pc19wZXJ0Iiwic2ltdWxhdGlvbl9pbmZvX29mX3N0ZXAiLCJjcmVhdGlvbl9vZl9hY3Rpb25zIiwib3AiLCJjcmVhdGlvbl9vZl9zdGVwIiwiYWMiLCJoYXNfY3JlYXRpb25fb2Zfc3RlcCIsInRlc3RzX29mX3N0ZXAiLCJhY3Rpb25zX29mX3N0ZXAiLCJzaWRlX2VmZmVjdHNfb2Zfc3RlcCIsImluaXRfdHJhY2VfZmlsZSIsInV1aWQiLCJkZXNjIiwiYXNzZXJ0X2ZpZWxkIiwiaWRlbnQiLCJyZWFkX3RyYWNlX2hlYWRlcnMiLCJsZXhfc3QiLCJsZXhfYnVmIiwidXVpZCQwIiwidXVpZCQxIiwiaWRlbnQkMCIsImZvbGRfdHJhY2UiLCJpbml0Iiwib3V0IiwiZm9sZF90cmFjZV9maWxlIiwiZm5hbWUiLCJnZXRfaGVhZGVyc19mcm9tX2ZpbGUiLCJzaXplIiwibmIiLCJ0Iiwid3JpdGVfdCIsInN0cmluZ19vZl90IiwicmVhZF90IiwicCIsImxiIiwidF9vZl9zdHJpbmciLCJjdXJyZW50X3N0b3J5IiwiYyIsImN1cnJlbnRfdGltZSIsImN1cnJlbnRfZXZlbnQiLCJuYl9udWxsX2V2ZW50IiwiY29uc2VjdXRpdmVfbnVsbF9ldmVudCIsInJ1bGVfaWQiLCJjb25zZWN1dGl2ZV9ibG9ja2VkIiwiaW5jX3N0b3JpZXMiLCJjaGVja190aW1lIiwibWF4IiwiY2hlY2tfZXZlbnRzIiwib25lX3RpbWVfYWR2YW5jZSIsImR0Iiwib25lX2NvbnN0cnVjdGl2ZV9ldmVudCIsInQkMCIsIm9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCIsIm9uZV9ub19tb3JlX3VuYXJ5X2V2ZW50Iiwib25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50Iiwib25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCIsInRpIiwidGkkMCIsIm9uZV9ibG9ja2VkX2V2ZW50IiwiZ2V0X2VmZmljaWVuY3kiLCJwcmludF9lZmZpY2llbmN5IiwiYWxsIiwiaW5pdF90aW1lIiwibWF4X3RpbWUiLCJtYXhfZXZlbnRzIiwicGxvdF9wZXJpb2QiLCJ0aW1lX3JhdGlvIiwidG1heCIsImV2ZW50X3JhdGlvIiwiZW1heCIsInNldF9tYXhfdGltZSIsInNldF9tYXhfZXZlbnRzIiwidHJhY2tlZF9ldmVudHMiLCJjb3VudGVyIiwic2V0X3Bsb3RfcGVyaW9kIiwiY3JlYXRlIiwibWF4X2V2ZW50IiwibmJfcnVsZXMiLCJpbml0X3QiLCJzdGgkMCIsImluaXRfZSIsInJlaW5pdGlhbGl6ZSIsIm5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8iLCJjdXJyZW50X3NpbXVsYXRpb25faW5mbyIsIm5leHRfc3RvcnkiLCJwb3NpdGl2ZV9wbG90X3BlcmlvZCIsImZpbGwiLCJvdXRwdXRzIiwiZEUiLCJuZXh0IiwiZFQiLCJsYXN0IiwibiIsImRUJDAiLCJ0aW1lIiwiY291bnRlciQwIiwicG9pbnRzIiwiZmFrZV90aW1lIiwiYXJyb3doZWFkIiwiY29sb3IiLCJwcmludF9pbml0aWFsX2lucHV0cyIsImNvbmYiLCJpbnB1dHNfZm9ybSIsIm5vQ291bnRlcnMiLCJyIiwiaW5zX2ZyZXNoIiwidGsiLCJwcmludF9zbmFwc2hvdCIsImVsIiwibmEiLCJtaXgiLCJwcmludF9kb3Rfc25hcHNob3QiLCJ3cml0ZV9zbmFwc2hvdCIsInJlYWRfc25hcHNob3QiLCJrZXkiLCJzbmFwc2hvdF90b2tlbnMiLCJzbmFwc2hvdF9hZ2VudHMiLCJzbmFwc2hvdF90aW1lIiwic25hcHNob3RfZXZlbnQiLCJzdHJpbmdfb2Zfc25hcHNob3QiLCJzbmFwc2hvdF9vZl9zdHJpbmciLCJ3cml0ZV9kaW4iLCJyZWFkX2RpbiIsImgiLCJrIiwiZGluX2VuZCIsImRpbl9ydWxlcyIsImRpbl9mbHV4cyIsImRpbl9oaXRzIiwiZGluX3N0YXJ0IiwiZGluX2tpbmQiLCJzdHJpbmdfb2ZfZGluIiwiZGluX29mX3N0cmluZyIsInByaW50X2RvdF9kaW4iLCJmbHV4IiwiZCIsInYiLCJhcnJvd2hlYWQkMCIsImNvbG9yJDAiLCJwcmludF9odG1sX2RpbiIsImFkZF9wbG90X2xpbmUiLCJuZXdfb2JzZXJ2YWJsZXMiLCJwbG90IiwibmJyIiwibmV3X3ZhbHVlcyIsImluaXRfcGxvdCIsInBsb3RfbGVnZW5kIiwid3JpdGVfcGxvdCIsInJlYWRfcGxvdCIsInBsb3Rfc2VyaWVzIiwic3RyaW5nX29mX3Bsb3QiLCJwbG90X29mX3N0cmluZyIsInByaW50X3Bsb3Rfc2VwIiwiaXNfdHN2IiwicHJpbnRfcGxvdF9sZWdlbmQiLCJwcmludF9wbG90X2xpbmUiLCJwcCIsImV4cG9ydF9wbG90IiwicHJpbnRfd2FybmluZyIsInBvcyIsIm1zZyIsInByIiwicG9zJDAiLCJjcmVhdGVfZmx1eCIsImluY3JfZmx1eF9mbHV4Iiwib2ZfcnVsZSIsIm9uX3J1bGUiLCJpbmNyX2ZsdXhfaGl0Iiwic3RvcF9mbHV4IiwiZGluX2RhdGEiLCJqIiwiZW1wdHkiLCJpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIiwicGF0dGVybiIsIm1hdGNoaW5ncyIsImFkZF9pbnRzZXRfaW5faW50bWFwIiwiaWQiLCJzZXQiLCJtYXAiLCJicmVha19hcGFydF9jYyIsImVkZ2VzIiwibW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSIsIm5ld19jYyIsIm9yaWdpbl9jYyIsIm1vZF9jb25uIiwiY2NfaWQiLCJjY19tYXAiLCJvc2V0Iiwib3NldCQwIiwibnNldCIsIm1lcmdlX2NjIiwiY2MyIiwiY2MxIiwibW9kX2Nvbm5lY3Rpdml0eSIsImNjX21hcCQwIiwic2V0MiIsInNldDEiLCJ1cGRhdGVfcm9vdHMiLCJpc19hZGQiLCJ1bmFyeV9jY3MiLCJyb290IiwidmEiLCJzZXQkMCIsIm51bWJlciIsInBhdCIsImRlYnVnX3ByaW50IiwiZG9tYWluIiwicm9vdHNfb2ZfcGF0dGVybnMiLCJyb290cyIsInJvb3RzX29mX3BhdHRlcm5zJDAiLCJyb290X21hcHMiLCJvZl9wYXR0ZXJuIiwicGF0X2lkIiwib2ZfdW5hcnlfcGF0dGVybiIsInJlY2VpdmVfbWVzc2FnZSIsImNjcyIsImlzX3ZhbGlkIiwibnVtYmVyX29mX2luc3RhbmNlcyIsInBhdHMiLCJudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2MiLCJwYXQyIiwicGF0MSIsIm1hcDEiLCJtYXAyIiwiY2MiLCJwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIiwicmFuZG9tX3N0YXRlIiwicm9vdDEiLCJyb290MiIsImZvbGRfcGlja2VkX2luc3RhbmNlIiwiYWNjJDIiLCJhY2MkMCIsInJvb3Rfb3B0IiwiYWNjJDEiLCJpJDAiLCJub19ub19ubyIsImZvbGRfaW5zdGFuY2VzIiwiZXhjcCIsInNlbnRfdG9fZml4ZWRfcm9vdCIsImV4Y3Bfcm9vdCIsInNlbnRfdG9fZXhjcF9yb290IiwidGFiIiwiYXV4IiwiaXRoX3Jvb3RzIiwiaSQxIiwiZm9sZF91bmFyeV9pbnN0YW5jZXMiLCJleGVjX2FsZyQwIiwidGltZSQwIiwiZ2V0X2FsZyIsImdldF9taXgiLCJnZXRfdG9rIiwiYWxnIiwic2siLCJhbGckMCIsInNrJDAiLCJhbGckMSIsInNrJDEiLCJhbGckMiIsIm9wJDAiLCJzayQyIiwid2l0aF92YWx1ZSIsImFsZyQzIiwibiQwIiwibm8iLCJ5ZXMiLCJjb25kIiwiZXhlY19ib29sJDAiLCJleGVjX2FsZyIsImV4cHIiLCJleHByJDAiLCJleHByJDEiLCJleHByJDIiLCJvcCQxIiwiZXhlY19ib29sIiwieWVzJDAiLCJzayQ0Iiwic2skMyIsInNrJDUiLCJuMSIsInNrJDYiLCJuMSQwIiwib3AkMiIsInNrJDciLCJvcCQzIiwic2skOCIsInZhbHVlX2Jvb2wiLCJ2YWx1ZV9hbGciLCJnZXRfZWRnZXMiLCJzdW1faW5zdGFuY2VzX251bWJlcnMiLCJpbnN0cyIsInBhdHRlcm5zIiwicmVjb21wdXRlIiwib3ZlcndyIiwiYWN0aXZpdHkiLCJzZXRfYWN0aXZpdHkiLCJydWxlIiwid2l0aF90cmFjZSIsImFjdGl2aXR5X3RyZWUiLCJ1bmFyeV9wYXR0ZXJucyIsImRlcHNfaW5fZSIsImRlcHNfaW5fdCIsImFsd2F5c19vdXRkYXRlZCIsIndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMiLCJ2YXJpYWJsZXNfb3ZlcndyaXRlIiwidmFyaWFibGVzX2NhY2hlIiwicmF0ZSIsImlzX2Jsb2NrZWQiLCJkZWJ1Z19tb2RlIiwibWF0Y2hpbmciLCJ0b19ibG9jayIsImFic3RyYWN0X2FjdGlvbnMiLCJpbmoiLCJhYnN0cmFjdF90ZXN0cyIsImluaiQwIiwic2V0X2V2ZW50c190b19ibG9jayIsInByZWRpY2F0ZSIsImFsbF9pbmplY3Rpb25zIiwidW5hcnlfcmF0ZSIsInN0YXRlX2luc3RzIiwicGF0dGVybmEiLCJpbnN0YW5jZSIsIm1hdGNoaW5nJDAiLCJyZXZfcm9vdHMiLCJtYXhfZGlzdGFuY2UiLCJub2RlcyIsInIyIiwicjEiLCJwaWNrX2FfcnVsZV9pbnN0YW5jZSIsImZyb21fcGF0dGVybnMiLCJwcmludCIsInN0YXRzIiwicHJpbnRfc3RhdHMiLCJhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiIsImluc3RhbmNlcyIsInNpZGVfZWZmZWN0cyIsImVkZ2VzJDAiLCJpZCQwIiwiZWRnZXMkMSIsImlkJDEiLCJpZCQyIiwiY2NfbW9kaWYiLCJlZGdlcyQyIiwicyQyIiwiaWQkMyIsInNpZGVfZWZmZWN0cyQwIiwicyQzIiwibmMiLCJpZCQ0IiwiY2NfbW9kaWYkMCIsImVkZ2VzJDMiLCJzJDQiLCJpZCQ1IiwiZWRnZXMkNCIsImFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIiwiaW5qMmdyYXBoIiwidHkiLCJmcmVlX2lkIiwiaW5qX2ZyZXNoIiwiaW5qX25vZGVzIiwiaW5qMmdyYXBoJDAiLCJuYyQwIiwibiQxIiwibiQyIiwibmMkMSIsIm5jJDIiLCJtb2RpZl9jYyIsInNpZGVfZWZmZWN0cyQxIiwibiQzIiwibmMkMyIsImFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZiIsIm9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIiwibmMkNCIsIm5jJDUiLCJzJDUiLCJuYyQ2Iiwib2JzX2Zyb21fdHJhbnNmb3JtYXRpb25zIiwidHJhbnMiLCJnZXRfc3BlY2llc19vYnMiLCJvYnMiLCJ0cmFja2VkIiwiZm4iLCJvayIsInBpZCIsInNwZWMiLCJ1cGRhdGVfZWRnZXNfZnJvbV9hY3Rpb25zIiwic2lkZV9lZmZlY3RfZHN0IiwibG5rX2RzdCIsImNvbmNyZXRlX3JlbW92ZWQiLCJkZWxfZGVwcyIsImRlbF9vYnMiLCJlZGdlc19hZnRlcl9uZWciLCJjb25jcmV0ZV9pbnNlcnRlZCIsIm5ld19kZXBzIiwibmV3X29icyIsInNwZWNpZXMiLCJtaXh0dXJlIiwiZmlsZSIsInJldl9kZXBzIiwibWF4X2Rpc3RfdG9faW50Iiwic3RvcmVfYWN0aXZpdHkiLCJzdG9yZSIsInN5bnRheF9pZCIsImNjX3ZhIiwicmF0ZSQwIiwiYWN0IiwidW5hcnkiLCJvbGRfYWN0IiwidXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMiLCJrbm93bl9wZXJ0cyIsImRlcCIsInBlcnRzIiwibWF0Y2hpbmdzX29mX3J1bGUiLCJydWxlJDAiLCJwYXR0ZXJuX3ZhIiwidW5hcnlfY2FuZGlkYXRlcyIsIm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyIsIm1vZGlmaWVkX2NjcyIsInBhY2skMCIsInVucmF0ZSIsIm9sZF9wYWNrIiwiaV9pbnN0IiwibmV3X3YiLCJuZXdfcGFjayIsIm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyQwIiwidW5hcnlfY2FuZGlkYXRlcyQwIiwicGFjayIsIm92ZXJ3cml0ZV92YXIiLCJ0cmFuc2Zvcm1fYnlfYV9ydWxlIiwic3RhdGUkMSIsImV2ZW50X2tpbmQiLCJwYXRoJDAiLCJpbmplY3RlZCQwIiwiaW5qZWN0ZWQiLCJyZGVwcyIsImRlcHMiLCJzdGF0ZSQwIiwiaCQwIiwicmVtYWluaW5nX3NpZGVfZWZmZWN0cyIsImZpbmFsX2luajJncmFwaCIsImNvbmNyZXRlX2luc2VydGVkJDAiLCJldiIsInRlc3RzJDAiLCJuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzIiwiY2V2ZW50IiwicGF0aCIsImtub3duX2FnZW50cyIsInByZXRlc3RzIiwidGUiLCJ0ZSQwIiwiYWckMCIsInRlJDEiLCJhZyQxIiwicGF0aF90ZXN0cyIsImZ1bGxfY29uY3JldGVfZXZlbnQiLCJhcHBseV9naXZlbl9pbnN0YW5jZSIsImRpc3QiLCJkaXN0JDAiLCJyb290MCIsImFwcGx5X2dpdmVuX3J1bGUiLCJpbnN0IiwiZm9yY2VfcnVsZSIsIm91dCQxIiwiZGlzdF9vcHQiLCJsb2MiLCJvdXQkMCIsInNuYXBzaG90IiwicmF3IiwicGlja19hbl9pbnN0YW5jZSIsInJ0IiwiY2hvaWNlIiwicGF0dGVybjEiLCJwYXR0ZXJuMiIsImluajEiLCJpbmpfb3V0IiwiaXNfY29ycmVjdF9pbnN0YW5jZSIsImdyYXBoIiwiaXNfdW5hcnkiLCJpbnZfcm9vdHMiLCJhcHBseV9pbnN0YW5jZSIsIm1heENvbnNlY3V0aXZlQmxvY2tlZCIsIm1heENvbnNlY3V0aXZlQ2xhc2giLCJncmFwaCQwIiwiY2F1c2UiLCJhcHBseV9naXZlbiIsImdyYXBoJDEiLCJmaW5hbF9zdGVwIiwiY29udGludWUkMCIsImRvbWFpbiQwIiwibGlzdCIsImNhbmRzIiwibWF0Y2hlcyIsIm1hdGNoZXMkMCIsImF1eF9hZGRfdHJhY2tlZCIsIm5hbWUiLCJ0cGF0dGVybiIsImFkZF90cmFja2VkIiwicmVtb3ZlX3RyYWNrZWQiLCJuYW1lJDAiLCJ0ZXN0ZXIiLCJwbGlzdCIsInRlc3RlciQwIiwiYWRkX3RyYWNrZWRfc3BlY2llcyIsInJlbW92ZV90cmFja2VkX3NwZWNpZXMiLCJnZXRfcmFuZG9tX3N0YXRlIiwic2VuZF9pbnN0YW5jZXNfbWVzc2FnZSIsImFkZF9vdXRkYXRlZF9kZXBlbmRlbmNpZXMiLCJvdXRkYXRlZF9lbGVtZW50cyIsImRlYnVnX3ByaW50X2luc3RhbmNlcyIsImNvbXBhcmVfc3RvcHMiLCJwMiIsInQyIiwicDEiLCJ0MSIsIndpdGhfZGVsdGFfYWN0aXZpdGllcyIsInQwIiwiYWxnc19kZXBzIiwic3RvcHBpbmdfdGltZXMiLCJzdG9wcyIsInRpbWVfZGVwZW5kZW50X3BlcnRzIiwib2JzZXJ2YWJsZXNfdmFsdWVzIiwiZG9fbW9kaWZpY2F0aW9uIiwiZXh0cmEiLCJtb2RpZmljYXRpb24iLCJwcmludF9leHByX3ZhbCIsInRleHQiLCJnIiwiZXh0cmEkMCIsImdyYXBoJDIiLCJleHRyYSQxIiwiZ3JhcGgkMyIsInBleHByIiwicGV4cHIkMCIsImZpbGUkMCIsInJlbCIsImZpbGUkMSIsImZpbGUkMiIsIm90aGVycyIsInRoZXNlIiwiY2MkMCIsIm5hbWUkMSIsInBlX2V4cHIiLCJwZV9maWxlIiwiZmlsZV9vcHQiLCJsaW5lIiwiY2MkMSIsImZpbGUkMyIsImZpbGUkNCIsInBlcnR1cmJhdGUiLCJpc19hbGFybSQwIiwibWl4X2NoYW5nZWQkMCIsInRhaWwiLCJwZXJ0IiwibW9kX2FsYXJtIiwibWl4X2NoYW5nZWQkMSIsImVmZmVjdCIsInN0b3AiLCJ0YWlsJDAiLCJhbGl2ZSIsIm1peF9jaGFuZ2VkJDIiLCJkb19tb2RpZmljYXRpb25zIiwiaW5pdGlhbGl6ZSIsImJpbmQiLCJyZXR1cm4kMCIsImdyYXBoMCIsInN0YXRlMCIsImluaXRfbCIsIm1zdGF0ZSIsImNvbXBpbGVkX3J1bGUiLCJ2YWx1ZSIsImNyZWF0aW9uc19zb3J0IiwibWdyYXBoIiwibWlkX2dyYXBoIiwibWl4X2NoYW5nZWQiLCJwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIiwicGUiLCJvdXRwdXRzJDAiLCJjYW5kIiwicmVndWxhcl9sb29wX2JvZHkiLCJwaWNrZWRfaW5zdGFuY2UiLCJzdG9wJDAiLCJwcmV2X2FjdGl2aXR5IiwiYWN0X3N0YWNrIiwiYXBwbGllZF9yaWRfc3ludGF4IiwibXlfc3ludGF4X3JkX2lkIiwicmVnaXN0ZXJfbmV3X2FjdGl2aXR5Iiwic3ludGF4X3JkX2lkIiwibmV3X2FjdCIsImZsIiwiY3QiLCJmb3JjZV90ZXN0ZWQiLCJleHRyYV9wZXJ0Iiwibl9hY3Rpdml0eSIsImZpbmFsX3N0ZXAkMCIsImFfbG9vcCIsImR1bXBJZkRlYWRsb2NrZWQiLCJzdGF0ZSQyIiwicmQiLCJkdCQyIiwiZHRpIiwiZHQkMCIsImR0JDEiLCJzdG9wJDEiLCJuZWVkc19iYWNrdHJhY2siLCJlbmRfb2Zfc2ltdWxhdGlvbiIsImluaXRfc3RhdGUiLCJjY19vZl9zdGF0ZSIsImNjX21hcHMiLCJhZ2VudCIsImUkMCIsIndvcmskNSIsImZvbGRfYXJpdHlfbGlzdCIsImFyaXR5IiwiYWRkX2FnZW50IiwidG9kb3MiLCJtb3JwaGlzbSIsIndvcmsiLCJhaWQiLCJ3b3JrJDAiLCJ3X2FnZW50IiwidG9kb3MkMCIsIndvcmskMSIsInciLCJpbnRlcm5hbCIsIm0iLCJ0b2RvcyQzIiwibW9ycGhpc20kMCIsIndvcmskMyIsInBvcnQiLCJhaWQkMCIsImFpZCQxIiwibm90X2FnZW50IiwiYmlkIiwibm90X2FnZW50JDAiLCJub3RfYWdlbnRzIiwiYmlkJDAiLCJ3Yl9hZ2VudCQwIiwidG9kb3MkMSIsIndiX2FnZW50Iiwid29yayQyIiwidG9kb3MkMiIsInRvZG8iLCJtb3JwaGlzbSQxIiwid29yayQ0IiwiZW4iLCJjaWQiLCJkb19uZWdhdGl2ZV9wYXJ0IiwiY2NfY2hhbmdlIiwiY2NzJDAiLCJpbnZvbHZlZF9hZ2VudHMiLCJ0ZXN0c19wYXNzX29uIiwiYWckMiIsImFnX3R5IiwiYWckMyIsImRzdF9zIiwiZHN0X2FnX3R5IiwiYWckNCIsImFnJDUiLCJpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIiwiaXNfc3RlcF90cmlnZ2VyYWJsZSIsImRvX2FjdGlvbnMiLCJpc19yZW1vdmFsIiwicmVtb3ZhbHMiLCJkb19pbl9vcmRlciIsImNjcyQzIiwiYSQxIiwidHkkMCIsImNjcyQ0IiwiY2NzJDUiLCJjY3MkNiIsIngyIiwiczIiLCJhMiIsIngxIiwiczEiLCJhMSIsImNjcyQxIiwiY2NzJDIiLCJkb19zdGVwIiwia2luZCIsInVuYXJ5X2Rpc3RhbmNlcyIsImNjMV9hZ3MiLCJjYzJfYWdzIiwiY29ubmVjdGVkX2NvbXBvbmVudHMiLCJwcmVncmFwaCIsImluZm8kMCIsImV2ZW50JDAiLCJjb25uZWN0ZWRfY29tcG9uZW50cyQwIiwicHJlZ3JhcGgkMCIsImNvbm5lY3RlZF9jb21wb25lbnRzJDEiLCJpbmZvJDEiLCJmX29wIiwiZW1wdHlfY29tcGlsIiwibWVyZ2VfdmVyc2lvbiIsImEiLCJiIiwiYXBwbHlfaW50IiwidCIsImkiLCJkIiwicmVvcmRlcl9ib3VuZHMiLCJqIiwiY291bnRlcl9zaWdfb2ZfY291bnRlciIsImMiLCJsb2MiLCJjb3VudGVyX3NpZ19kZWZhdWx0IiwiY291bnRlcl9zaWdfbWluIiwibG9jJDAiLCJpJDAiLCJjb3VudGVyX3NpZ19tYXgiLCJtYWtlX2ludmVydGVkX2NvdW50ZXJfc2lnIiwiY291bnRlciIsImNvdW50ZXJfc2lnX25hbWUiLCJtaW4iLCJtYXgiLCJmX2ludCIsImZsaXBfbGFiZWwiLCJzdHIiLCJub19tb3JlX3NpdGVfb25fcmlnaHQiLCJlcnJvciIsImxlZnQiLCJyaWdodCIsInAiLCJwJDAiLCJwcmludF9jb3VudGVyX3Rlc3QiLCJmIiwieCIsIngkMCIsIngkMSIsIngkMiIsInByaW50X2NvdW50ZXJfbWluIiwicHJpbnRfY291bnRlcl9tYXgiLCJwcmludF9jb3VudGVyIiwidGVzdCIsImRlbHRhIiwicHJpbnRfY291bnRlcl9zaWciLCJzdHJpbmdfYW5ub3RfdG9fanNvbiIsImZpbGVuYW1lcyIsInN0cmluZ19hbm5vdGVkX29mX2pzb24iLCJzdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiIsImNvdW50ZXJfdGVzdF90b19qc29uIiwiY291bnRlcl90ZXN0X29mX2pzb24iLCJ4JDMiLCJidWlsZF9wb3J0X29mX2pzb24iLCJuIiwibCIsIm1vZF9sIiwibW9kX2kiLCJwb3J0X2ludF9tb2QiLCJwb3J0X2ludCIsIm0kMSIsImkkMSIsIm0kMiIsInBvcnRfaW50X21vZCQwIiwicG9ydF9pbnQkMCIsImwkMCIsInBvcnRfbGlua19tb2QiLCJwb3J0X2xpbmsiLCJtIiwibCQxIiwibSQwIiwicG9ydF9saW5rX21vZCQwIiwicG9ydF9saW5rJDAiLCJzaXRlX3NpZ19vZl9qc29uIiwibiQyIiwibiQwIiwibiQxIiwiZGVmYXVsdCQwIiwibiQzIiwic2l0ZV9vZl9qc29uIiwiY291bnRlcl90b19qc29uIiwiY291bnRlcl9zaWdfdG9fanNvbiIsInByaW50X2FnZW50X21vZCIsInByaW50X2FzdF9hZ2VudCIsImFnZW50X25hbWUiLCJhZ2VudF9tb2Rfb2ZfeW9qc29uIiwiYWdlbnRfdG9fanNvbiIsIm5hIiwiYWdlbnRfb2ZfanNvbiIsInMiLCJzJDAiLCJhZ2VudF9vZl9qc29uJDAiLCJhZ2VudF90b19qc29uJDAiLCJwcmludF9hc3RfbWl4IiwicG9zIiwidG9fZXJhc2VkX21peHR1cmUiLCJ0b19jcmVhdGVkX21peHR1cmUiLCJ0b19kdW1teV91c2VyX3NpdGUiLCJjb3VudGVyX25hbWUiLCJwb3J0X25hbWUiLCJzdCIsInNpIiwidHkiLCJ0b19kdW1teV91c2VyX2FnZW50Iiwic2V0dXBfbGluayIsInZhIiwic2l0ZSIsInJvdyIsImxpbmUiLCJub2RlX3NpdGVzIiwibWl4dHVyZV90b191c2VyX2dyYXBoIiwib3V0IiwiYWNjIiwiaWQiLCJhY2MkMCIsInZhJDAiLCJhY2MkMSIsInByaW50X29uZV9zaXplIiwidGsiLCJtaXgiLCJwcl92YXIiLCJwcl90b2siLCJwcl9taXgiLCJuYiIsInByaW50X2Fycm93IiwiYmlkaXIiLCJwcmludF9hc3RfYWxnX2V4cHIiLCJwcmludF9yYXRlc19vbmVfZGlyIiwidW4iLCJkZWYiLCJtYXhfZGlzdCIsIm1kIiwicHJpbnRfcnVsZV9jb250ZW50IiwiYmlkaXJlY3Rpb25hbCIsInIiLCJyJDAiLCJwcmludF9hc3RfcnVsZSIsInByaW50X2NvbmZpZ3VyYXRpb24iLCJwcmludF9pbml0IiwicHJpbnRfYXN0X2Jvb2xfZXhwciIsInByaW50X3ByaW50X2V4cHIiLCJhdXgiLCJhbGciLCJlIiwicHJpbnRfbW9kaWYiLCJyYXciLCJmaWxlIiwib24iLCJwJDEiLCJvbiQwIiwicCQyIiwiayIsInAkMyIsInAkNCIsIm9uJDEiLCJwcmludF9wZXJ0dXJiYXRpb24iLCJyZXAiLCJtb2RpZiIsImNvbmQiLCJhbGFybSIsInByaW50X3BhcnNpbmdfY29tcGlsX2thcHBhIiwicnVsZV90b19qc29uIiwiZl9taXgiLCJmX3ZhciIsInIkMSIsIm1peF90b19qc29uIiwicnVsZV9vZl9qc29uIiwibWl4X29mX2pzb24iLCJtb2RpZl9vZl9qc29uIiwiZXhwciIsImZpbGUkMCIsImZpbGUkMSIsImZpbGUkMiIsImIkMCIsImlkJDAiLCJiJDEiLCJiJDIiLCJhbGckMCIsInkiLCJtZXJnZV9pbnRlcm5hbHMiLCJtZXJnZV9zaXRlc19jb3VudGVyIiwiaCIsImMkMCIsIm1lcmdlX3NpdGVzX3BvcnQiLCJoJDAiLCJ4X29wIiwidCQwIiwibWVyZ2Vfc2l0ZXMiLCJjbyIsIm5hJDAiLCJtZXJnZV9hZ2VudHMiLCJ0b2siLCJvIiwibWVyZ2VfdG9rZW5zIiwidG9rcyIsImFncyIsInNpZ19mcm9tX2luaXRzIiwic2lnX2Zyb21fcnVsZSIsInRva3MkMSIsImFncyQwIiwic2lnX2Zyb21fcnVsZXMiLCJzaWdfZnJvbV9wZXJ0cyIsImluZmVyX2FnZW50X3NpZ25hdHVyZXMiLCJzcGxpdF9taXh0dXJlIiwicmhzIiwibGhzIiwiYWciLCJwYWNrIiwiaW50ZiIsInBvcyQwIiwiaW50ZnIiLCJpbnRmbCIsInJyIiwibGwiLCJjb21waWxfdG9fanNvbiIsImZpbGVzIiwibWFwIiwidmFyX3RvX2pzb24iLCJwb3N0IiwicHJlIiwiY29tcGlsX29mX2pzb24iLCJ2YXJfb2ZfanNvbiIsIndyaXRlX3BhcnNpbmdfY29tcGlsIiwiYXN0IiwicmVhZF9wYXJzaW5nX2NvbXBpbCIsImxiIiwicHJpbnRfYXN0X21peCQwIiwiY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cCIsImxzMSIsImxzMiIsImNzIiwiZHMiLCJ1cGRhdGVfcmF0ZSIsImNvdW50ZXJfdmFyX3ZhbHVlcyIsInVwZGF0ZV9ib29sX2V4cHIiLCJhMiIsImsyIiwiYTEiLCJrMSIsIm9wIiwiayQwIiwib3AkMCIsImEyJDAiLCJrMiQwIiwiYTEkMCIsImsxJDAiLCJvcCQxIiwidXBkYXRlX2V4cHIiLCJhMyIsImszIiwiYTEkMSIsImsxJDEiLCJrMiQxIiwiYTEkMiIsImsxJDIiLCJ2YXJfdmFsdWUiLCJjb3VudGVyc19tYXRjaGluZ19zIiwibmFtZV9tYXRjaCIsImhhc19jb3VudGVycyIsImNvbXBpbCIsInNpdGVzIiwic3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zIiwid2FybmluZyIsImRlYnVnX21vZGUiLCJzaWduYXR1cmVzIiwicnVsZXMkMSIsInNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbCIsImlkcyIsImNvdW50ZXJfZGVmcyIsInZhbHVlIiwiYW5ub3QiLCJ2YWx1ZSQwIiwidmFyX25hbWUiLCJhbm5vdCQwIiwiY291bnRlcl9kZWYiLCJjb3VudGVyX2RlbHRhIiwibWF4X2xvYyIsIm1pbl9sb2MiLCJtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWwiLCJ2YWx1ZSQxIiwiY291bnRlcl9kZWx0YSQwIiwic3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsJDAiLCJhc3RfYWdlbnQiLCJzaXRlcyQwIiwic2l0ZXNfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsIiwidmFyX3ZhbHVlcyIsInVwZGF0ZV9vcHRfcmF0ZSIsInVwZGF0ZV9wYWlyX3JhdGUiLCJyMiIsInIxIiwiY2hlY2tfc3ludGF4IiwicHJlcGFyZV9saHNfcnVsZSIsInJzaXRlcyIsInJuYSIsImxzaXRlcyQwIiwibG5hIiwicHJlcGFyZV9zaXRlIiwidGwiLCJoZCIsInJzaXRlIiwiY291bnRlcnMiLCJsc2l0ZXMiLCJsYWdlbnQkMCIsImxzaXRlcyQxIiwibGFnZW50IiwicnVsZSIsImNvbnRlbnQiLCJydWxlcyIsInJ1bGVfYW5ub3RlZCIsInJ1bGVfbmFtZSIsIm1peF9saHMiLCJjb250ZW50JDAiLCJyX2tfb3BfdW5fcmF0ZXMiLCJyX2t1bl9yYXRlcyIsImV4cHJzX2Zyb21fcmF0ZXMiLCJhdXhfZXhwciIsImV4cHIkMCIsImV4cHIkMSIsImV4cHIkMiIsImV4cHIkMyIsImFjYyQyIiwiYXV4X2Jvb2wiLCJleHByX29wdCIsIm1peHR1cmVfZm9yX2VhY2hfY291bnRlcl92YXJfdiIsImtfZGVmIiwia191biIsImtfb3AiLCJrX29wX3VuIiwibGhzJDAiLCJuZXdfcnVsZV9uYW1lIiwiY291bnRlcnNfaWRzX2FzX3N0cmluZyIsImxvY2FsaXR5IiwicnVsZV9uYW1lX3N0cmluZyIsInJ1bGVzJDAiLCJsYWJlbCIsImFkZF9pbmNyIiwiZmlyc3RfbGluayIsImxhc3RfbGluayIsImVxdWFsIiwic2lncyIsImlzX2ZpcnN0IiwiaXNfbGFzdCIsImNvdW50ZXJfYWdlbnRfaW5mbyIsInBvcnRfYSIsInBvcnRfYiIsInBvcnRzIiwiaW50ZXJuYWxzIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyYXdfaW5jciIsImxpbmtfaW5jciIsImFnX2luZm8iLCJsaW5rIiwiY3JlYXRlZCIsInJhX2VyYXNlZCIsImRzdCIsInJhX3R5cGUiLCJyYV9wb3J0cyIsImJlZm9yZV9zd2l0Y2giLCJyYV9pbnRzIiwicmFfYWdlbnQiLCJlcmFzZV9pbmNyIiwiaW5jcnMiLCJpbmNyX3MiLCJpbmNyIiwicnVsZV9hZ2VudCIsImNvbXBpbGVfY291bnRlcl9pbl9ydWxlIiwicnVsZV9hZ2VudCQwIiwicmF3X2FnZW50Iiwib2siLCJsbmtfbmIiLCJsbmtfbmIkMCIsImNyZWF0ZWRfaW5jciIsIm1peF9pbmNyIiwicG9ydF9pZCIsInN0YXJ0X2xpbmtfbmIiLCJhY2NfaW5jcnMiLCJyYSIsImxvY19kZWx0YSIsImNvdW50ZXJfdGVzdCIsImokMCIsInN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQiLCJsaW5rX2Zvcl9lcmFzZWQiLCJ0ZXN0X2luY3IiLCJhZGp1c3RfZGVsdGEiLCJzd2l0Y2gkMCIsIm5ld19saW5rX25iIiwibmV3X2luY3JzIiwiYmxzIiwiYWxzIiwiY3JlYXRlZF9pbmNyX25ldyIsIm1peF9pbmNyX25ldyIsImluY3JzX2NyZWF0ZWQiLCJyYXdfYWdlbnQkMCIsImFnZW50X25hbWUkMCIsImluY3JzX2NyZWF0ZWQkMCIsInJ1bGVfYWdlbnRfbWl4IiwicmF3X21peCIsImNvdW50ZXJzX3BlcnR1cmJhdGlvbnMiLCJhc3Rfc2lncyIsImFnZW50X3R5cGUiLCJmaWxlbmFtZSIsInN0b3BfbWVzc2FnZSIsIm1vZHMiLCJsb2NfYWciLCJhZ19pZCIsInNpZ24iLCJhcml0eSIsImNfbmEiLCJjX2lkIiwibWF4X3ZhbCIsInZhbF9vZl9jb3VudGVyIiwibWFrZV9jb3VudGVyIiwibmFtZSIsImFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIiwiYWRkX2xpbmtfY29udGFjdF9tYXAiLCJhbm5vdGF0ZV9kcm9wcGVkX2NvdW50ZXJzIiwiYXN0X2NvdW50ZXJzIiwicmFfY291bnRlcnMiLCJwc2V0IiwicHNldCQwIiwiYW5ub3RhdGVfZWRpdF9jb3VudGVycyIsImFubm90YXRlX2NvdW50ZXJzX3dpdGhfZGlmZiIsImxjIiwicmMiLCJjc2V0IiwiY3NldCQwIiwicmMkMCIsImMkMSIsInJjX3IiLCJhbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIiwiY291bnRlcl9saXN0IiwiYWdlbnRfaWQiLCJhZ2VudF9zaWduYXR1cmUiLCJjb3VudGVyX2luZm8iLCJjb252ZXJ0X2RlbHRhIiwibWFwX29wdCIsIm9wdCIsInJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCIsImJ1aWxkX2xfdHlwZSIsImRzdF90eSIsImRzdF9wIiwidHlfaWQiLCJwX2lkIiwiY29udGFjdF9tYXAiLCJzdHkiLCJzcCIsImR0eSIsImRwIiwiY29udGFjdF9tYXAkMCIsInNsIiwiZGwiLCJkaSIsInJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIiwic29ydCIsIndhcm5pbmdfZm9yX2NvdW50ZXJzIiwic2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIiwiYWdfdHkiLCJidWlsZF9saW5rIiwid2Fybl9vbl9zd2FwIiwibGlua3NfdHdvIiwibGlua3Nfb25lIiwib25lJDAiLCJuZXdfbGluayIsIm9uZSIsInN3aXRjaCQxIiwiZHN0X2lkIiwibWFpbnRhaW5lZCIsImxpbmtfc3dhcCIsImFubm90YXRlX2Ryb3BwZWRfYWdlbnQiLCJzeW50YXhfdmVyc2lvbiIsInJfZWRpdF9zdHlsZSIsImxpbmtzX2Fubm90Iiwic2ltcGxlX3BvcnRfbGlzdCIsImxhbm5vdCIsInBfcG9zIiwicG9zJDUiLCJwb3MkMSIsInBvc19saW5rIiwicG9zJDIiLCJwb3J0X25hbWUkMCIsInBvcyQzIiwibGFubm90JDAiLCJwb3NfbGluayQwIiwicG9zJDQiLCJwb3J0X25hbWUkMSIsImFubm90YXRlX2NyZWF0ZWRfYWdlbnQiLCJyYW5ub3QiLCJyYW5ub3QkMCIsInRyYW5zbGF0ZV9tb2RpZmljYXRpb24iLCJ3YXJuX2luZm8iLCJyaHNfbGlua3MiLCJsaHNfbGlua3MiLCJzaXRlX25hbWUiLCJwb3NfaiIsInJoc19saW5rcyQwIiwiYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIiwibHAiLCJycCIsInJlZ2lzdGVyX3BvcnRfbW9kaWYiLCJsbmsxIiwicmhzX2xpbmtzJDEiLCJwb3MkNiIsIm5hJDEiLCJyaHNfbGlua3MkMiIsInBvcyQ3IiwiaSQyIiwibGhzX2xpbmtzJDIiLCJ2YSQxIiwibGhzX2xpbmtzJDAiLCJsaHNfbGlua3MkMSIsInJoc19saW5rcyQzIiwicG9zX2xpbmskMSIsImRzdF90eSQwIiwiZHN0X3AkMCIsInBvcyQxMSIsIm5hJDQiLCJwb3MkOCIsIm5hJDIiLCJwb3MkOSIsImkkMyIsInBvcyQxMCIsIm5hJDMiLCJyaHNfbGlua3MkNCIsImRzdF90eSQxIiwiZHN0X3AkMSIsInBvcyQxMiIsImkkNCIsInJoc19saW5rcyQ1IiwicmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYiLCJpbnQxIiwidmFwb3MiLCJ2YXBvcyQwIiwidmEkMiIsImFubm90ZWQiLCJycCQwIiwiYW5ub3RlZCQwIiwicnBfciIsInNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdSIsImxzIiwicHMiLCJmaW5hbF9ydWxlX3Nhbml0eSIsInJoc19saW5rc19vbmUiLCJsaHNfbGlua3NfdHdvIiwibGhzX2xpbmtzX29uZSIsInJhJDAiLCJtb2RzJDAiLCJ3YXJuaW5nJDAiLCJhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIiwic3ludGF4X3ZlcnNpb24kMSIsImxocyQ3IiwicmhzJDkiLCJyaHMkMCIsImxpbmtzX2Fubm90JDEiLCJlcmFzZWQiLCJhZGRlZCIsImxtb2QiLCJsYWdfcyIsImxwb3MiLCJsYWdlbnRfbmFtZSIsInJtb2QiLCJyYWdfcyIsInJwb3MiLCJyYWdlbnRfbmFtZSIsImxhZ19jIiwibGFnX3AiLCJyYWdfYyIsInJhZ19wIiwibGlua3NfYW5ub3QkMCIsImxhZyIsInJhZyIsImxsaW5rcyIsInJsaW5rcyIsImNtaXgiLCJzeW50YXhfdmVyc2lvbiQwIiwibGlua3NfYW5ub3QkNyIsImxpbmtzX2Fubm90JDYiLCJtaXgkMyIsImNtaXgkMiIsImxocyQ0IiwicmhzJDYiLCJsaHMkNSIsInJocyQ3IiwicmhzJDgiLCJsaHMkNiIsImxpbmtzX2Fubm90JDIiLCJtaXgkMCIsImNtaXgkMCIsImxocyQxIiwicmhzJDEiLCJsYWdlbnRfbmFtZSQwIiwibGhzJDIiLCJsbW9kJDAiLCJscG9zJDAiLCJyaHMkMyIsInJhJDEiLCJtaXgkMiIsImxpbmtzX2Fubm90JDQiLCJyaHMkMiIsInJtb2QkMCIsInJhZ19zJDAiLCJycG9zJDAiLCJyYWdlbnRfbmFtZSQwIiwibGFnX2MkMCIsImxhZ19wJDAiLCJyYWdfYyQwIiwicmFnX3AkMCIsImxpbmtzX2Fubm90JDMiLCJtaXgkMSIsImxocyQzIiwicmhzJDQiLCJybW9kJDEiLCJhZ2VudF90eXBlJDAiLCJjb3VudGVyX2xpc3QkMCIsInNpbXBsZV9wb3J0X2xpc3QkMCIsImNtaXgkMSIsImxpbmtzX2Fubm90JDUiLCJyaHMkNSIsImFubm90YXRlX2VkaXRfbWl4dHVyZSIsImlzX3J1bGUiLCJuZXdzIiwic2Nhbl9wb3J0IiwibW9kaWYkMCIsIm1vZGlmJDEiLCJtb2RpZiQyIiwibW9kaWYkMyIsInZhJDMiLCJtb2RpZiQ0IiwiaV9pZCIsIm1peHR1cmVfb2ZfYXN0IiwiY29udmVydF90b2tlbl9uYW1lIiwidGtfbmFtZSIsImFsZ19leHByX29mX2FzdCIsImFsZ3MiLCJtYXhfYWxsb3dlZF92YXIiLCJhJDAiLCJsYWIiLCJubyIsInllcyIsImJvb2xfZXhwcl9vZl9hc3QiLCJ0a19uYW1lJDAiLCJhc3QkMCIsInkkMCIsInByaW50X2V4cHJfb2ZfYXN0IiwiYXNzZW1ibGVfcnVsZSIsInJfY3JlYXRlZCIsInJfbWl4IiwiYWwiLCJyX2RlbHRhX3Rva2VucyIsInJfcmF0ZSIsImRpc3QiLCJ1bl9yYXRlIiwidW5fcmF0ZSQwIiwicl91bl9yYXRlIiwibW9kaWZfZXhwcl9vZl9hc3QiLCJhc3RfcnVsZSIsInJ1bGVfY29udGVudCIsImNyZWF0ZWRfbWl4IiwibWl4dHVyZSIsInJ1bGVfY29udGVudCQwIiwiY3JlYXRlZF9taXgkMCIsIm1peHR1cmUkMCIsImhvdyIsInJlbCIsInAkNSIsImFkZF91bl92YXJpYWJsZSIsInJhdGVfdmFyIiwiayQxIiwiYWNjX3VuIiwiYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfIiwiYnVpbGRfY29udGFjdF9tYXAiLCJhZ2VudF9zaWdzX3ByZSIsInNpemVfc2lncyIsImFnX25hbWUiLCJzaXRlX25hbWVfYWcxIiwic2l0ZV9zaWciLCJzaXRlX2xpbmtzIiwiYWcyX25hbWUiLCJzaXRlX25hbWVfYWcyIiwiYWcyX2lkIiwic2l0ZV9pZCIsInNob3VsZF9yYWlzZV9mb3JfbWlzc2luZ19saW5rIiwiaW5pdF9vZl9hc3QiLCJpbml0cyIsImluaSIsIndobyIsImludmVydGVkX2NvdW50ZXJfbmFtZSIsImNvbXBpbF9vZl9hc3QiLCJ2YXJfb3ZlcndyaXRlIiwiYXN0X2NvbXBpbCQwIiwiY291bnRlcl9mb2xkX2luX21peHR1cmUiLCJhY2MyIiwiYWdlbnRfbGlzdCIsImFjYzMiLCJhZ2VudCIsInNpdGVfbGlzdCIsImFjYzQiLCJjb3VudGVyX2ZvbGRfaW5fZXhwciQwIiwiZTEiLCJjb3VudGVyX2ZvbGRfaW5fZXhwciIsImUyIiwiZTEkMCIsImViIiwiY291bnRlcl9mb2xkX2luX2JleHByJDAiLCJiZXhwciIsImJleHByJDAiLCJiZXhwciQxIiwiYmUxIiwiY291bnRlcl9mb2xkX2luX2JleHByIiwiYmV4cHIkMiIsImNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQiLCJjb3VudGVyX2ZvbGRfaW5fcnVsZSIsInJ1bGUkMCIsImUkMCIsImUkMSIsImUkMiIsImFjYyQzIiwiZSQzIiwiYWNjJDQiLCJjb3VudGVyX2ZvbGRfaW5fcHJpbnQiLCJpbml0IiwibDEiLCJ2YXJpYWJsZV9kZWYiLCJsMiIsIm9ic19kZWYiLCJsMyIsImw0IiwicGVydHVyYmF0aW9uIiwiYjJfb3B0IiwibW9kX2xpc3QiLCJiMV9vcHQiLCJtb2RfZGVmIiwibCQyIiwiY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzIiwiYWdlbnRfbW9kIiwiY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fIiwiY291bnRlcl9vcmlnIiwiY29udmVydF92YWx1ZSIsInVwZGF0ZSIsInJlZl9tYXgiLCJyZWZfbWluIiwiY29udmVydF9pbmZvIiwiY291bnRlcl9zaWdfdmlzaWJsZSIsIm1hcCQwIiwibmV3X2NvdW50ZXJfc2l0ZXMiLCJjb3VudGVyX2NvbnZlcnNpb25faW5mb19tYXAiLCJyZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IiwiY2x0ZV92YWx1ZV9vcl9ub25lIiwibmV3X3NpdGUiLCJvcmlnaW5hbF9jb3VudGVyX3NpdGUiLCJpbnZlcnRlZF9jb3VudGVyX3NpdGUiLCJzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMiLCJhZGRlZF9zaXRlcyIsIm5ld19zaXRlX2xpc3QiLCJhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X20iLCJpbmZvIiwibWFwX2V4cHIiLCJtYXBfYmV4cHIiLCJtYXBfcnVsZSIsInJld3JpdGUiLCJydWxlX2RlZiIsImluaXRfa2luZCIsInF1YW50aXR5X2FsZ19leHByIiwiaW5pdCQwIiwidmFyaWFibGVzIiwib2JzZXJ2YWJsZXMiLCJtYXBfcHJpbnQiLCJtYXBfbW9kaWYiLCJsJDMiLCJhJDEiLCJsJDQiLCJsJDUiLCJleHQiLCJwZXJ0dXJiYXRpb25zIiwiYXN0X2NvbXBpbCIsImFnZW50X3NpZ19pc19pbXBsaWNpdCIsImFzdF9jb21waWwkMSIsImFzdF9jb21waWwkMiIsImFjYzAiLCJhY2MxIiwiYWNjX2NvdW50ZXJzX3Blcl9hZ2VudCIsImFjY19zaWdzIiwiYWNjX2NvdW50ZXJfbmFtZXMiLCJhY2Nfc2l0ZV9zaWdzIiwiYWNjX2xpbmtzIiwiY291bnRlcnNfYWdlbnQiLCJzaXRlX3NpZ3NfcHJlX25hbWVkZGVjbHMiLCJzaXRlX3NpZ3NfbmQiLCJjb3VudGVyc19wZXJfYWdlbnQiLCJzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMiLCJzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMkMCIsImNvdW50ZXJfYWdlbnRfbmFtZSIsImFfcG9ydF9uYW1lIiwiYl9wb3J0X25hbWUiLCJhX3BvcnRfc2lnIiwiY291bnRlcnNfZnJvbV9hZ2VudCIsImFnZW50X2NvdW50ZXJfcG9ydF9uYW1lIiwiYl9saW5rcyIsImJfcG9ydF9zaWciLCJzaXRlX3NpZ3NfY291bnRlcl9hZ2VudCIsImFnZW50X3NpZ3MiLCJhZ2VudHNfc2lnIiwicl9wb3MiLCJsYWJlbF9vcHQiLCJwcmludGVyIiwic2V0Iiwic2V0JDAiLCJzZXQkMSIsInJ1bGVfbGFiZWwiLCJydWxlX25hbWVzIiwia19kZWYkMCIsImtfZGVmJDEiLCJyYXRlX3ZhciQwIiwicmF0ZV92YXJfdW4iLCJjcmVhdGVkX21peCQxIiwibWl4dHVyZSQxIiwicmF0ZV92YXJfdW4kMCIsImtfb3BfdW4kMCIsImFjY191biQwIiwiY3JlYXRlZF9taXgkMiIsIm1peHR1cmUkMiIsImNsZWFuZWRfcnVsZXMiLCJleHRyYV92YXJzIiwidmFycyIsInZhciQwIiwiYWNjX3ZhcnMiLCJvdmVyd3JpdGVfdmFyc19yZW1haW5pbmciLCJvdGhlcl9vdmVyd3JpdGVfdmFycyIsIm1hdGNocyIsInYiLCJhY2NfdmFyc193aXRoX3hfcmV3cml0dGVuX2lmX3AiLCJyZXZfYWxnX3ZhcnMiLCJ2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkIiwiYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFycyIsImFsZ192YXJzX2FycmF5IiwiYWxnX3ZhcnNfZmluZGVyIiwidG9rZW5fbmFtZXMiLCJ0b2tlbnNfZmluZGVyIiwidXBfdmFycyQwIiwidXBfdmFycyIsInVwZGF0ZWRfYWxnX3ZhcnMiLCJwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVycyIsInBlcnR1cmJhdGlvbnMkMCIsInZhcmlhYmxlcyQwIiwib2JzZXJ2YWJsZXMkMCIsImluaXQkMSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwiYWRkX3BvcyIsInJoc19wb3MiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwiaW50ZXJuYWxfbWVtb3J5IiwiYWRkIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5dGFibGVzaXplIiwieXlhY3QiLCJjYW1sX3BhcnNlcl9lbnYiLCJfMiIsIl8xIiwiXzUiLCJfMyIsIl83IiwiXzQiLCJfOCIsImFuIiwicGVuZCIsIl85IiwiXzExIiwieiIsInJtX3Rva2VuIiwiYWRkX3Rva2VuIiwiZGVsdGFfdG9rZW4iLCJfNiIsImtiYWNrMSIsImtiYWNrIiwicG9zX2VuZCIsImVwYXQiLCJwYXQiLCJwZW5kcCIsInBhdXNlIiwiZWZmIiwieXl0YWJsZXMiLCJtb2RlbCIsImxleGZ1biIsImxleGJ1ZiIsImludGVyYWN0aXZlX2NvbW1hbmQiLCJzdGFuZGFsb25lX2VmZmVjdF9saXN0Iiwic3RhbmRhbG9uZV9ib29sX2V4cHIiLCJhcHBlbmRfdG9fYXN0X2NvbXBpbCIsInJldl9pbnN0ciIsInN0cl9wb3MiLCJ2b2xfcGFyYW0iLCJ2b2wiLCJ2b2xfdHlwZSIsImluaXRfdCIsInZhciQxIiwibGJsIiwiZWZmZWN0IiwidmFsdWVfbGlzdCIsInBhcmFtX25hbWUiLCJydSIsIm9jYW1sX2xleF90YWJsZXMiLCJrZXl3b3JkcyIsInRva2VuIiwib2NhbWxfbGV4X3Rva2VuX3JlYyIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJpbmxpbmVfY29tbWVudCIsInMkMSIsImxhYiQwIiwicyQyIiwiYWNjJDUiLCJhY2MkNiIsIngkNCIsImFjYyQ3IiwieCQ1IiwiYWNjJDgiLCJhY2MkOSIsImVyciIsImVyciQwIiwiY29tcGlsZSIsImxvZ2dlciIsImZpYyIsImNvbXBpbCQwIiwibXNnIiwid3JpdGVfY2F0YWxvZ19pdGVtIiwib2IiLCJwb3NpdGlvbiIsInJlYWRfY2F0YWxvZ19pdGVtIiwia2V5IiwiY291bnQiLCJjcmVhdGUiLCJwdXQiLCJyYW5rIiwiY2F0YWxvZyIsImFpZSIsImZpbGVfY3JlYXRlIiwiZmlsZV9tb3ZlIiwiZmlsZV9wYXRjaCIsImZpbGVfZGVsZXRlIiwiZmlsZV9nZXQiLCJwYXJzZSIsInlpZWxkJDAiLCJ0ZXh0IiwicmFuZ2UiLCJjb21waWxlJDAiLCJleG4iLCJtZXNzYWdlIiwibWVzc2FnZSQwIiwiaW5zdHMiLCJvdmVyd3JpdGUiLCJpdCIsInN0YXJ0X3J1bGUiLCJzcGFjZV9jaGFycyIsInJlc2V0X2VvZiIsInRva2VuJDAiLCJyZWFkX2xhYmVsIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJvY2FtbF9sZXhfc3RhdGUkMyIsInN0ciQwIiwiY2hhcl9saXN0IiwicmVwbHkiLCJ3cml0ZV92Iiwid3JpdGVfY2F0YWxvZ19pdGVtcyIsImxpZnRfYW5zd2VyIiwib25fbWVzc2FnZSIsImN1cnJlbnRfaWQiLCJhbnN3ZXIiLCJtc2dfaWQiLCJtc2dfaWQkMCIsIm1zZ19pZCQxIiwibXNnX2lkJDIiLCJvdXQkNCIsInBvc2l0aW9uJDAiLCJpZCQ0IiwiY29udGVudCQxIiwib3V0JDMiLCJpZCQzIiwib3V0JDIiLCJpZCQyIiwib3V0JDEiLCJpZCQxIiwib3V0JDAiLCJjb21waWxlX21vZGVfb24iLCJkb21haW4iLCJkb21haW4kMCIsImRvbWFpbiQxIiwiYSQyIiwiZG9tYWluJDIiLCJkb21haW4kMyIsIm9yaWdpbiIsImNjcyIsImRvbWFpbiQ0Iiwib3V0X2NjcyIsImNvbmQkMCIsImRvbWFpbiQ1IiwieWVzJDAiLCJkb21haW4kNiIsIm5vJDAiLCJkb21haW4kNyIsImEkMyIsImEkNCIsImNvbXBpbGVfcHVyZV9hbGciLCJjb21waWxlX2FsZyIsImNvbXBpbGVfYm9vbCIsInJ1bGVzX29mX2FzdCIsImRlcHNfbWFjaGluZXJ5Iiwic3ludGF4X3JlZiIsImFsZ19leHByIiwiZGVsdGFfdG9rcyIsImRlcHMiLCJjcnAiLCJyYXRlIiwiZCQwIiwiZCQxIiwiZGlzdCQwIiwidW5yYXRlIiwidW5hcnlfaW5mb3MiLCJvcmlnaW4kMCIsInJ1bGVfbWl4dHVyZXMiLCJkZXBzX2FsZ3MkMCIsIm5lZyIsInN5bnRheCIsImNjcyQwIiwidXIiLCJkZXBzX2FsZ3MiLCJydWxlc19sIiwibyQwIiwiZCQyIiwiZCQzIiwiY29tcGlsZV9wcmludF9leHByIiwiZXgiLCJlbCIsImFzdF9hbGciLCJlZmZlY3RzX29mX21vZGlmcyIsImFzdF9hbGdzIiwiYXN0X3J1bGVzIiwicmV2X2VmZmVjdHMiLCJhbGdfcG9zIiwiZWxlbV9ydWxlcyIsImVsZW1fcnVsZSIsImFsZ19leHByJDAiLCJhbGdfcG9zJDAiLCJwZXhwciIsInBleHByJDAiLCJwZXhwciQxIiwicGV4cHIkMiIsInByaW50IiwicGV4cHIkMyIsInBleHByJDQiLCJwcmludCQwIiwidGVzdHMiLCJkb21haW4kOCIsInBleHByJDUiLCJwZXhwciQ2IiwiZG9tYWluJDkiLCJwZXhwciQ3IiwicGV4cHIkOCIsImRvbWFpbiQxMCIsInBleHByJDkiLCJwZXhwciQxMCIsImRvbWFpbiQxMSIsImNjcyQxIiwiZG9tYWluJDEyIiwiYXJyIiwiY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIiwiY29tcGlsZV9pbml0cyIsInJlc2NhbGUiLCJlbnYiLCJwcmVlbnYiLCJtaXhfcG9zIiwiYWxnJDEiLCJwcmVlbnYkMCIsImZha2VfcnVsZSIsImNvbXBpbGVkX3J1bGUiLCJwcmVlbnYkMSIsInRrX2wiLCJ0a19pZCIsImZha2VfcnVsZSQwIiwiY29tcGlsZWRfcnVsZSQwIiwiaW5pdF9sIiwib3V0cHV0cyIsInJldHVybiQwIiwic2hhcmluZyIsIm92ZXJ3cml0ZV9pbml0Iiwib3ZlcndyaXRlX3QwIiwicmVzY2FsZV9pbml0Iiwic2lnc19uZCIsInRrX25kIiwicmVzdWx0IiwibGJsX3BvcyIsImFsZ19hIiwiYWxnX25kIiwiYWxnX2RlcHMiLCJjciIsImZkb21haW4iLCJmcnVsZXMiLCJmYWxnX2RlcHMiLCJjb21waWxlZF9ydWxlcyIsImFsZ19kZXBzJDAiLCJydWxlX25kIiwib3B0X3Bvc3QiLCJtb2RpZl9leHByX2xpc3QiLCJwcmVfZXhwciIsInRyYWNraW5nX2VuYWJsZWQiLCJscGVydCIsInByZV9leHByJDAiLCJ0X3ZhciIsInQwIiwiZWZmZWN0cyIsInBvc3RfZXhwciIsInBvc3RfcG9zIiwiaGFzX3RyYWNraW5nIiwibmVlZHNfYmFja3RyYWNrIiwicmVwZWF0IiwicGVydCIsIm91dF9hbGdfZGVwcyIsImNvbnQiLCJvYnMiLCJkb21fc3RhdHMiLCJidWlsZF9pbml0aWFsX3N0YXRlIiwiYmluZCIsIndpdGhfdHJhY2UiLCJ3aXRoX2RlbHRhX2FjdGl2aXRpZXMiLCJyYW5kb21fc3RhdGUiLCJncmFwaDAiLCJzdGF0ZTAiLCJkb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIiwiZ3JhcGgiLCJzdGF0ZSIsImNjX3ByZWVudiIsImNjX3ByZWVudiQwIiwiZ3JhcGgkMCIsImVudiQwIiwiZmVudiIsImdyYXBoJDEiLCJlbnYkMSIsIm9zdGF0ZSIsIm9ncmFwaCIsIm9zdG9wIiwiZ2V0X3BhdXNlX2NyaXRlcmlhIiwiYnBvcyIsInBvc19iIiwiZmluZF9hbGxfZW1iZWRkaW5ncyIsInRyIiwiZHVtbXlfaW5zdGFuY2VzIiwicm9vdCIsImVycm9yX21zZyIsImFnZW50IiwiY29udGFjdG1hcCIsImFjY3VyYWN5X3N0cmluZyIsImRlYWRfcnVsZXMiLCJkZWFkX2FnZW50cyIsIm1hcCIsImludGVyZmFjZSQwIiwic2l0ZSIsInN0YXRlc2xpc3QiLCJzaXRlbmFtZSIsInNpdGV0eXBlIiwic2l0ZWxpbmtzIiwic2l0ZXN0YXRlcyIsInNpdGVub2RlbmFtZSIsInNpdGVub2RlaWQiLCJzaXRlbm9kZXNpdGVzIiwiaHlwIiwicmVmaW5lbWVudCIsImRvbWFpbl9uYW1lIiwicmVmaW5lbWVudHNfbGlzdCIsInJlZmluZW1lbnRfbGVtbWFzIiwicnVsZV9pZCIsImFnZW50X2lkIiwibGFiZWwiLCJhc3QiLCJwb3NpdGlvbiIsInBvc2l0aW9uX2xpc3QiLCJ2YXJpYWJsZSIsInJ1bGUiLCJkaXJlY3QiLCJzaWRlX2VmZmVjdCIsInNvdXJjZSIsInRhcmdldF9tYXAiLCJ0YXJnZXQiLCJsb2NhdGlvbl9wYWlyX2xpc3QiLCJyaHMiLCJsaHMiLCJpbmZsdWVuY2VtYXAiLCJub2Rlc29maW5mbHVlbmNlbWFwIiwid2FrZXVwIiwiaW5oaWJpdGlvbiIsIm5vZGVzIiwidG90YWxfc3RyaW5nIiwiZndkX3N0cmluZyIsImJ3ZF9zdHJpbmciLCJvcmlnaW4iLCJkaXJlY3Rpb24iLCJydWxlX2hpZGRlbiIsInNjYyIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwiY29udGFjdG1hcHNjYyIsImNvdW50ZXIiLCJpbmYiLCJzdXAiLCJrZXkiLCJsb2NhbGl0eSIsImFjY3VyYWN5X2xldmVscyIsImNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVscyIsImluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzIiwicmVkdWN0aW9uX2FjY3VyYWN5X2xldmVscyIsImZyZWUiLCJ3aWxkY2FyZCIsImJvdW5kIiwiYm9uZF9pZCIsImJvdW5kX3RvIiwiYmluZGluZ190eXBlIiwicHJvcCIsImJpbmQiLCJiaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wiLCJmcmVlX2JhY2tlbmRfc3ltYm9sIiwibWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zIiwid2lsZGNhcmRfYmFja2VuZF9zeW1ib2wiLCJib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm8iLCJpbnRlcm5hbF9zdGF0ZV9pbnRyb2R1Y3Rpb25fYmEiLCJpbnRlcm5hbF9zdGF0ZV9kZWxpbWl0ZXJfYmFja2UiLCJiaW5kaW5nX3N0YXRlX2RlbGltaXRlcl9iYWNrZW4iLCJiaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF8iLCJiaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF8iLCJpbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmQiLCJpbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmQiLCJjb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF8iLCJjb3VudGVyX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF8iLCJjb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3kiLCJvcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wiLCJjbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm8iLCJvcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wiLCJjbG9zZV9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm8iLCJwbHVzX2luZmluaXR5X3N5bWJvbCIsIm1pbnVzX2luZmluaXR5X3N5bWJvbCIsImFjY3VyYWN5X3RvX3N0cmluZyIsImFjY3VyYWN5X3RvX2pzb24iLCJ4IiwiYWNjdXJhY3lfb2Zfc3RyaW5nIiwiYWNjdXJhY3lfb2ZfanNvbiIsImpzb24iLCJjb21wYXJlIiwiYSIsImIiLCJwcmludCIsImYiLCJzaXRlX3RvX2pzb24iLCJwIiwibCIsInkiLCJ4ciIsInhsIiwidHkiLCJzaSIsImkiLCJzaXRlX29mX2pzb24iLCJsJDAiLCJqc29uJDEiLCJzaXRlX25hbWUiLCJqc29uJDIiLCJwb3J0X2xpbmtzIiwianNvbiQwIiwicG9ydF9zdGF0ZXMiLCJzaXRlX3R5cGUiLCJzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiIsInNpdGVfbm9kZV90b19qc29uIiwibm9kZSIsImxpc3QiLCJzaXRlX25vZGVfb2ZfanNvbiIsIm5vZGVfaWQiLCJub2RlX3R5cGUiLCJub2RlX3NpdGVzIiwiY29udGFjdF9tYXBfdG9fanNvbiIsImNvbnRhY3RfbWFwIiwiY29udGFjdF9tYXBfb2ZfanNvbiIsInN0cmluZ19wYWlyX3RvX2pzb24iLCJzdHJpbmdfcGFpcl9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl90b19qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3Rfb2ZfanNvbiIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvXyIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X29mXyIsInNjY190b19qc29uIiwic2NjX2FjYyIsImNtX2FjYyIsInNjY19vZl9qc29uIiwicnVsZV90b19qc29uIiwiZCIsImpzb25fdG9fcnVsZSIsInMiLCJ2YXJfdG9fanNvbiIsInZhciQwIiwianNvbl90b192YXIiLCJpbmZsdWVuY2Vfbm9kZV90b19qc29uIiwiaSQwIiwiaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24iLCJzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIiwibG9jIiwicG9zX29mX3J1bGVzX2FuZF92YXJzX3RvX2pzb24iLCJwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIiwicG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2VfIiwiciIsInYiLCJjb21wYXJlJDAiLCJwcmludCQwIiwiciQwIiwiZHVtcF9sb2NhdGlvbiIsImZtdCIsImludCQwIiwiaW50JDEiLCJkdW1wX2xvY2F0aW9uX3BhaXIiLCJkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCIsInN0cmluZ19vZl9sYWJlbF9saXN0IiwibG9jYXRpb25fdG9fanNvbiIsImxvY2F0aW9uX29mX2pzb24iLCJvcHQiLCJzdGgiLCJoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsImhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIiwibm9kZXNfbGlzdF90b19qc29uIiwibm9kZXNfbGlzdF9vZl9qc29uIiwiaW5mbHVlbmNlX21hcF90b19qc29uIiwiaW5mbHVlbmNlX21hcCIsIm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsIm5vZGVzX2xpc3QiLCJub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24iLCJsb2NhbF9pbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJpbmZsdWVuY2VfbWFwJDAiLCJvcmlnaW5fb3B0IiwiZndkIiwiYndkIiwidG90YWwiLCJhY2N1cmFjeSIsImluZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImVycm9yX21zZyQwIiwib3JpZ2luJDAiLCJ4JDAiLCJsJDEiLCJkZWFkX3J1bGVzX3RvX2pzb24iLCJkZWFkX3J1bGVzX29mX2pzb24iLCJqc29uX3RvX2FnZW50X2tpbmQiLCJhZ2VudF9raW5kX3RvX2pzb24iLCJhZ2VudF9raW5kIiwianNvbl9vZl9kZWFkX2FnZW50cyIsImpzb25fdG9fZGVhZF9hZ2VudHMiLCJzZXBhcmF0aW5nX3RyYW5zaXRpb25zX3RvX2pzb24iLCJzZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24iLCJsZW1tYV90b19qc29uIiwic2l0ZV9ncmFwaF90b19qc29uIiwibGVtbWFfb2ZfanNvbiIsInNpdGVfZ3JhcGhfb2ZfanNvbiIsImdldF9oeXAiLCJoIiwiZ2V0X3JlZmluZW1lbnQiLCJzdHJpbmdfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZSIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24iLCJqIiwiYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uIiwiYm9uZF9pbmRleCIsImNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbiIsImNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbiIsImludGVyZmFjZV9saWdodF90b19qc29uIiwiaW50ZiIsImMiLCJrIiwiaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24iLCJsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiIsImludGVyZmFjZV9vZl9qc29uIiwibGVtbWFzX2xpc3Rfb2ZfanNvbiIsImxlbW1hc19saXN0X3RvX2pzb25fZ2VuIiwiaW50ZXJmYWNlX3RvX2pzb24iLCJjb25zdHJhaW50cyIsImxlbW1hc19saXN0X3RvX2pzb24iLCJyYXdfdmVyc2lvbl9zdHJpbmciLCJleHRyYWN0X3RhZ19yZSIsImdyIiwidmVyc2lvbl9zdHJpbmciLCJ2ZXJzaW9uX21zZyIsInZlcnNpb25fa2FzYV9mdWxsX25hbWUiLCJ2ZXJzaW9uX2thZGVfZnVsbF9uYW1lIiwidGtfaXNfaW5pdGlhbGl6ZWQiLCJleHBlcnRfbW9kZSIsImNvbXBhcmUiLCJkIiwiYyIsImIiLCJhIiwiY21wIiwicHJpbnQiLCJmbXQiLCJtYXhfbGV2ZWxfb3B0IiwiYiQwIiwic2hvd19sZXZlbCIsImx2bCIsImFjY2VwdF9sZXZlbF9kaXNwbGF5IiwiYWNjZXB0X2xldmVsX3VzZSIsIm5va2V5IiwiayIsImN1dF9saXN0IiwicyIsImRvaXQiLCJhY2N1bSIsInBvcyIsImkiLCJwIiwibCIsImwkMCIsImkkMCIsIm9yZGVyIiwib3JkZXJlZCIsImNhdCIsIm9sZF9sdmwiLCJhc3NvIiwiY2hlY2siLCJvcHRzIiwia2V5IiwidCIsImYiLCJwcmludF9tc2ciLCJwcmludF9vcHRpb24iLCJ2ZXJib3NlIiwibXNnIiwic3BlYyIsImtleTIiLCJyIiwiciQwIiwiciQxIiwiciQyIiwiciQzIiwicyQwIiwiciQ0IiwiciQ1IiwibGlzdCIsImxpc3QkMCIsInRhaWwiLCJoMiIsImgxIiwiciQ2IiwiciQ3IiwidiIsInIkOCIsInIkOSIsImwkMSIsInByaW50X2hlbHAiLCJoZWFkZXIiLCJuYiIsImhlYWRlciQwIiwibHZsJDAiLCJsdmxfb3B0IiwieCIsInZlcmJvc2UkMCIsInZlcmJvc2UkMSIsInBhcnNlX2xpc3QiLCJ3aXRoX3RrIiwidGl0bGUiLCJsb25nX2hlbHAiLCJzaG9ydF9oZWxwIiwic2hvd192ZXJzaW9uIiwiYWNjdW0kMCIsInJlbSIsIm9wdCIsIm9wdCQwIiwiYWEiLCJyZW0kMyIsInJlbSQyIiwicmVtJDEiLCJ2JDAiLCJyZW0kNyIsInJlbSQ1IiwicmVtJDQiLCJyZW0kNiIsInJlbSQ4IiwidiQxIiwicmVtJDkiLCJ2JDIiLCJyZW0kMTMiLCJyZW0kMTEiLCJyZW0kMTAiLCJyZW0kMTIiLCJ2JDMiLCJyZW0kMTciLCJyZW0kMTUiLCJyZW0kMTQiLCJyZW0kMTYiLCJ2JDQiLCJyZW0kMjIiLCJyZW0kMjAiLCJyZW0kMTgiLCJ2JDUiLCJyZW0kMTkiLCJyZW0kMjEiLCJ2JDYiLCJyZW0kMjUiLCJyZW0kMjQiLCJyZW0kMjMiLCJ2JDciLCJyZW0kMjkiLCJyZW0kMjciLCJyZW0kMjYiLCJyZW0kMjgiLCJyZW0kMzAiLCJ2JDgiLCJyZW0kMzEiLCJ2JDkiLCJyZW0kMzIiLCJyJDEwIiwieSIsInJlbSQzMyIsInYkMTAiLCJyZW0kMzQiLCJsJDIiLCJyZW0kMzUiLCJ2JDExIiwicmVtJDM2IiwicmVtJDAiLCJmaWxlbmFtZXMiLCJ4JDAiLCJwYXJzZSIsImRlZiIsImFyZ3MiLCJkYXRhX3NldCIsIm91dHB1dCIsInNlbWFudGljcyIsImludGVncmF0aW9uX3NldHRpbmdzIiwibW9kZWxfcmVkdWN0aW9uIiwic3RhdGljX2FuYWx5c2lzIiwiZGVidWdfbW9kZSIsImRlZmF1bHQkMCIsImRlZmF1bHRfZ3VpIiwiZG9fdmVyc2lvbiIsImRvX2dsdXR0b255IiwiY29weV9mcm9tX2d1aSIsInRfZ3VpIiwib3B0aW9uc19nZW4iLCJvcHRpb25zIiwib3B0aW9uc19ndWkiLCJlIiwiYXV4IiwiYWNjdSIsImFjY3UkMCIsInZhcl92YWwiLCJhY2N1JDEiLCJtIiwib3V0cHV0RGlyZWN0b3J5Iiwib3V0cHV0RGF0YUZpbGUiLCJwb2ludE51bWJlclZhbHVlIiwidGltZSIsImZpYyIsImNyZWF0ZSIsImJhcl9zaXplIiwiYmFyX2NoYXIiLCJmb3IkMCIsInBwX25vdF9udWxsIiwicHBfdGV4dCIsImRlbHRhX3QiLCJ0X3IiLCJldmVudCIsImVfciIsImR0Iiwic3RyaW5nIiwiYXV4X3RpY2siLCJzb21ldGhpbmciLCJuIiwic29tZXRoaW5nJDAiLCJuJDAiLCJuJDEiLCJ0aWNrIiwiZWZmaWNpZW5jeSIsIm5fdCIsIm5fZSIsInJ1biIsImNvbXBsZXRlX3Byb2dyZXNzX2JhciIsInQkMCIsIm91dHB1dERpck5hbWUiLCJtYXJzaGFsaXplZE91dEZpbGUiLCJjZmxvd0ZpbGVOYW1lIiwiZmx1eEZpbGVOYW1lIiwibWtfZGlyX3IiLCJvdmVyd3JpdGVfcGVybWlzc2lvbiIsInBhdGgiLCJvcGVuX291dCIsIm9wZW5fb3V0X2ZyZXNoIiwibmFtZSIsImNvbmNhdF9saXN0IiwiZmFjdWx0YXRpdmUiLCJleHQiLCJuYW1lJDAiLCJ0bXBfbmFtZSIsImJhc2UiLCJvdmVyX2ZsYWciLCJmbGFncyIsImJhc2UkMCIsInNldCIsImV4dF9vcHQiLCJmbmFtZSIsImNoZWNrX25vdF9leGlzdHMiLCJmaWxlIiwiZmlsZSQwIiwiYW5zd2VyIiwic2V0Q2hlY2tGaWxlRXhpc3RzIiwiYmF0Y2htb2RlIiwib3V0cHV0RmlsZSIsIndpdGhfY2hhbm5lbCIsInN0ciIsImRlc2MiLCJ3cmFwX2Zvcm1hdHRlciIsImZyIiwic2V0X2RpciIsImdldF9kaXIiLCJzZXRfbWFyc2hhbGl6ZWQiLCJ3aXRoX21hcnNoYWxpemVkIiwic2V0X2NmbG93Iiwid2l0aF9jZmxvd19maWxlIiwib3Blbl90YXNrc19wcm9maWxpbmciLCJvcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm8iLCJzZXRfZmx1eCIsIm5tZSIsIndpdGhfZmx1eCIsInN0ciQwIiwid2l0aF9zbmFwc2hvdCIsInNpemUiLCJib3JkZXIkMCIsImJvcmRlciIsImR1bW15X3ZhbHVlcyIsImNvbG9ycyIsInN0eWxlcyIsImdyYWR1YXRpb25fc3RlcCIsImRyYXdfbCIsIm1pbl9ncmFkX2wiLCJ2YV9taW4iLCJ2YV9tYXgiLCJuYnJfZGVsdGEiLCJkZWx0YV92YSIsIm5iX2dyYWQiLCJleGFjdF9zdGVwIiwiZGVsdGFfZ3JhZCIsInZhX21pbiQwIiwidmFfbWF4JDAiLCJkcmF3IiwiaCQwIiwidyQwIiwiYl9oIiwiemVyb193IiwiYl9vcCIsImgiLCJ3IiwidmEkMCIsInRfbWF4IiwicSIsInZhIiwidmFfbWF4JDEiLCJ2YV9taW4kMiIsInRfbWF4JDEiLCJkYXRhX3ciLCJkYXRhX2giLCJ0X21heCQyIiwiZ3JhZF93IiwibmJfdyIsInZhX21heCQyIiwiZ3JhZF9oIiwibmJfaCIsInZhX21pbiQzIiwiemVyb19oIiwiZHJhd19mdW4iLCJ5JDAiLCJwcF9saW5lIiwidG9fc3RyaW5nIiwic3RoIiwid2lkdGgiLCJ0b19maWxlIiwiY2hhbiIsImZvcm0iLCJ4bHN3ZWFrRmlsZU5hbWUiLCJ4bHNzdHJvbmdGaWxlTmFtZSIsImRlZmF1bHRFeHRBcnJheVNpemUiLCJkZWZhdWx0R3JhcGhTaXplIiwiZGVmYXVsdExpZnRTZXRTaXplIiwiZGVmYXVsdEhlYXBTaXplIiwiZGVidWdfbW9kZU9uIiwidGltZV9pbmRlcGVuZGVudCIsImJsYWNrbGlzdF9ldmVudHMiLCJkb19nbG9iYWxfY3V0IiwiY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50IiwiZG9fbG9jYWxfY3V0IiwiZG9fZGV0ZWN0X3NlcGFyYWJsZV9jb21wb25lbnRzIiwibG9va191cF9mb3JfYmV0dGVyX2N1dCIsImxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCIsImxvZ19udW1iZXJfb2ZfY2F1c2FsX2Zsb3dzIiwiZHVtcF9ncmlkX2JlZm9yZV93ZWFrX2NvbXByZXNzIiwiZHVtcF9ncmlkX2JlZm9yZV9zdHJvbmdfY29tcHJlIiwiZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpIiwiZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpJDAiLCJnZXRfY2FjaGVfc2l6ZSIsInByaW50X2Rlc2MiLCJzcGVjaWVzX2Rlc2MiLCJ1dWlkIiwiZ2V0X2Rlc2MiLCJ0YmwiLCJkX2NoYW4iLCJhY3RzRGVzY3IiLCJlbXB0eUFjdHMiLCJwbG90RGVzY3IiLCJ0cmFjZURlc2NyIiwidHJhY2VOb3RFbXB0eSIsImluaXRpYWxpemUiLCJhY3Rpdml0aWVzX2ZpbGUiLCJ0cmFjZV9maWxlIiwicGxvdFBhY2siLCJlbnYiLCJkZXNjJDAiLCJub0NvdW50ZXJzIiwibmJfciIsInBhY2siLCJ3YXJuaW5nX2J1ZmZlciIsImdvIiwiZmx1eCIsImRpbl9uYW1lIiwiZmx1eCQwIiwibGFzdCIsImskMCIsImhlYWQiLCJmaWxlbmFtZSIsImZvcm1hdCIsImlzX3RzdiIsImZkIiwicCQwIiwic3RlcCIsImQkMCIsInMkMSIsIm1peHR1cmUiLCJmaWxlJDEiLCJpbnB1dHNEZXNjIiwiZmx1c2hfd2FybmluZyIsImNsb3NlIiwiZXZlbnQkMCIsInBsb3QiLCJpbnB1dHMiLCJpbml0aWFsX2lucHV0cyIsImNvbmYiLCJpbml0IiwiaW5wdXRzX2Zvcm0iLCJpbnB1dF9tb2RpZmljYXRpb25zIiwibW9kcyIsImxvZ0ZpbGUiLCJ0cmFjZUZpbGUiLCJkb21haW5PdXRwdXRGaWxlIiwibWFyc2hhbGl6ZU91dEZpbGUiLCJ0bXBfdmFyX25hbWUiLCJwcmVwcm9jZXNzX2FzdCIsIndhcm5pbmciLCJrYXNpbV9hcmdzIiwiY2xpX2FyZ3MiLCJhc3QiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwic3ludGF4X3ZlcnNpb24iLCJrYXNpbV9hcmdzJDAiLCJpbml0aWFsTWl4IiwidmFyX292ZXJ3cml0ZSIsImFzdF9jb21waWxlZF9kYXRhIiwiY29tcGlsIiwiY29uZiQwIiwib3ZlcndyaXRlX3QwJDAiLCJvdmVyd3JpdGVfaW5pdCIsImdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIiwiZmlsZV9saXN0IiwiY29tcGlsaW5nX2Z1bmN0aW9uIiwiZ2V0X2FzdF9mcm9tX2NsaV9hcmdzIiwiZ2V0X3ByZXByb2Nlc3NlZF9hc3RfZnJvbV9jbGlfIiwiZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IiwiY29tcGlsZV9tb2RlX29uIiwicHJlcHJvY2Vzc2VkX2FzdCIsImluaXRfbCIsImhhc190cmFja2luZyIsImdldF9jb21waWxhdGlvbl9mcm9tX3BhY2siLCJpbml0X3RfZnJvbV9maWxlcyIsInBsb3RfcGVyaW9kJDAiLCJtYXhfZXZlbnQkMCIsImluaXRfZSIsIm1heF90aW1lIiwiaW5pdF90IiwiYSQwIiwicGxvdF9wZXJpb2QkMSIsIm1heF90aW1lJDAiLCJpbml0X3QkMCIsImNvdW50ZXIiLCJnZXRfY29tcGlsYXRpb25fZnJvbV9wcmVwcm9jZXMiLCJzdGgkMCIsImdldF9jb21waWxhdGlvbiIsIm1hcnNoYWxpemVkX2ZpbGUiLCJjb21waWxhdGlvbl9yZXN1bHQiLCJhbGdfb3ZlcndyaXRlIiwib3ZlcndyaXRlX3QwIiwicmF3X2luaXRzIiwiZSQwIiwiZCQxIiwiY2xvc2VfY2VsbF9zeW1ib2wiLCJvcGVuX2NlbGxfc3ltYm9sIiwiY29tcGFyZSIsImJyZWFrYWJsZSIsIngiLCJnZXRfZW5jb2RpbmdfZm9ybWF0IiwidCIsImR1bW15X2h0bWxfbG9nZ2VyIiwiZHVtbXlfdHh0X2xvZ2dlciIsImR1bXBfY2xlYW5fc3RyaW5nIiwiZm10IiwiYSIsIm9wdCIsImxvZ2dlciIsInN0aCIsImZwcmludG5ld2xpbmUiLCJmcHJpbnRuZXdsaW5lJDAiLCJiIiwiZm10X2J1ZmZlciQwIiwic3RyIiwic3RyJDAiLCJidWZmZXIiLCJmbXRfYnVmZmVyIiwicyIsInByaW50X2JyZWFrYWJsZV9zcGFjZSIsInByaW50X2JyZWFrYWJsZV9oaW50IiwiZHVtcF90b2tlbiIsImYiLCJwcmludF9uZXdsaW5lIiwiYmYiLCJiZiQwIiwiYmYkMSIsImJmJDIiLCJwcmludF9jZWxsIiwiY2xvc2VfY2VsbF9zeW1ib2wkMCIsIm9wZW5fY2VsbF9zeW1ib2wkMCIsImZsdXNoX2xvZ2dlciIsImNsb3NlX2xvZ2dlciIsInByaW50X3ByZWFtYmxlIiwib3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIiwiY2hhbm5lbCIsIm1vZGUiLCJmb3JtYXR0ZXIiLCJvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciIsIm9wZW5fY2lyY3VsYXJfYnVmZmVyIiwic3RoJDAiLCJzaXplIiwib3Blbl9pbmZpbml0ZV9idWZmZXIiLCJvcGVuX3JvdyIsImNsb3NlX3JvdyIsImZvcm1hdHRlcl9vZl9sb2dnZXIiLCJyZWRpcmVjdCIsInByaW50X2FzX2xvZ2dlciIsImZsdXNoX2J1ZmZlciIsImZsdXNoX2FuZF9jbGVhbiIsImZwcmludGYiLCJjaGFubmVsX29mX2xvZ2dlciIsInByaW50X2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWUiLCJzaXRlX25hbWUiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiZHVtcF9qc29uIiwianNvbiIsImNoYW5uZWxfb3B0IiwibGluZV90b19qc29uIiwibGluZSIsImxpbmVfb2ZfanNvbiIsImdlbl9pdGVyIiwiaXRlciIsImxpc3QiLCJvdXRwdXQiLCJvZl9qc29uIiwidG9fanNvbiIsInN0cmluZ19vZl91bl9vcCIsIm9wIiwiZm9ybWF0Iiwic3RyaW5nX29mX2NvbXBhcmVfb3AiLCJzdHJpbmdfb2ZfYmluX29wIiwic3RyaW5nX29mX2Jpbl9ib29sX29wIiwic3RyaW5nX29mX3VuX2Jvb2xfb3AiLCJsaWZ0IiwidCIsImV4dGVuZF9sb2dnZXIiLCJsb2dnZXIiLCJyZWZyZXNoX2lkIiwiYWRkX25vZGUiLCJzIiwiZCIsImFkZF9lZGdlIiwiczEiLCJzMiIsIm1hcCIsImwiLCJvbGRfbGlzdCIsImdyYXBoX29mX2xvZ2dlciIsImdldF9lZGdlX21hcCIsImdldF9ub2RlcyIsImludF9vZl9zdHJpbmdfaWQiLCJzdHJpbmciLCJhIiwiaSIsImR1bW15X25vZGUiLCJkdW1teV9lZGdlIiwiaHRtbF9kZXBzIiwiZG90X2NvbG9yX2VuY29kaW5nIiwieCIsInN2Z19jb2xvcl9lbmNvZGluZyIsImlzX25vX25vZGVfYXR0cmlidXRlcyIsIm5vZGVfYXR0cmlidXRlIiwiYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCIsImJvb2wiLCJiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCIsInNoYWxsX0lfZG9faXQiLCJmb3JtYXQiLCJmaWx0ZXJfaW4iLCJmaWx0ZXJfb3V0IiwiYjEiLCJwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyIsImYiLCJ0aXRsZSIsInByaW50X2dyYXBoX3ByZWFtYmxlIiwib3B0Iiwic3RoIiwic3RoJDAiLCJzdGgkMSIsImhlYWRlciIsImZfb3B0IiwiZGVwZW5kZW5jeSIsImZfb3B0JDAiLCJmJDAiLCJzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCIsInN0eWxlIiwibWVyZ2UiLCJzJDAiLCJwcmludF9mb290X3NoYXJlZF9odG1sX2pzIiwibGlzdCIsImlkMiIsImlkMSIsImxpc3QkMCIsImlkMV9pbnQiLCJpZDJfaW50IiwiYXR0cmlidXRlcyIsIm9wdGlvbl9saXN0Iiwib3B0aW9uIiwicyQxIiwicyQyIiwicyQzIiwicyQ0IiwicyQ1IiwicyQ2IiwianNvbiIsInMkNyIsInMkOCIsInAiLCJhdHRyaWJ1dGVzJDAiLCJzdHJpbmdfbGlzdCIsImZtdCIsInNfb3B0Iiwic19vcHQkMCIsImJvb2wkMCIsImNvbG9yIiwiYm9vbCQxIiwiYm9vbCQyIiwiYm9vbCQzIiwicHJpbnRfZ3JhcGhfZm9vdCIsIm5vZGVzIiwiZWRnZXMiLCJzZXAiLCJiIiwib3B0aW9ucyIsImNvbG9yX3ZhbHVlIiwicHJpbnRfY29tbWVudCIsIm9wZW5fYXNzbyIsImNsb3NlX2Fzc28iLCJwcmludF9hc3NvIiwic3RyaW5nMSIsInN0cmluZzIiLCJzaGFwZV9pbl9kb3QiLCJzaGFwZSIsInN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCIsInByaW50X25vZGUiLCJpZCIsImRpcmVjdGl2ZXMiLCJpJDAiLCJpZF9pbnQiLCJzdHJpbmckMCIsInN0cmluZyQxIiwic2hhcGUkMCIsInN0cmluZyQyIiwic2hhcGUkMSIsImkkMSIsImkkMiIsImJvb2wkNCIsImJvb2wkNSIsImxhYmVsIiwicHJpbnRfZWRnZSIsInByZWZpeCIsImVkZ2VfYXR0cmlidXRlIiwiZGlyZWN0aW9uIiwiYXJyb3ciLCJwcmludF9vbmVfdG9fbl9yZWxhdGlvbiIsImlkbGlzdCIsInN0eWxlX29uZSIsInN0eWxlX24iLCJmaWN0aXRpb3VzIiwiZGlyZWN0aXZlc19maWN0IiwiZGlyZWN0aXZlc19vbmUiLCJkaXJlY3RpdmVzX24iLCJoZWFka2luZF90b19qc29uIiwiaGVhZGtpbmQiLCJjb2xvcl90b19qc29uIiwiZGlyZWN0aXZlX3RvX2pzb24iLCJjb2xvciQwIiwiaW50JDAiLCJpbnQkMSIsImhlYWRraW5kJDAiLCJsaW5lc3R5bGUiLCJkaXJlY3RpdmVzX3RvX2pzb24iLCJub2RlX3RvX2pzb24iLCJlZGdlX3RvX2pzb24iLCJub2Rlc190b19qc29uIiwiZWRnZXNfdG9fanNvbiIsInRvX2pzb24iLCJncmFwaCIsImhlYWRraW5kX29mX2pzb24iLCJjb2xvcl9vZl9qc29uIiwiZGlyZWN0aXZlX29mX2pzb24iLCJwb3NfbGlzdCIsImNvbnRleHR1YWxfaGVscCIsImRpcmVjdGl2ZXNfb2ZfanNvbiIsImlkX29mX2pzb24iLCJub2RlX29mX2pzb24iLCJlZGdlX29mX2pzb24iLCJub2Rlc19vZl9qc29uIiwiZWRnZXNfb2ZfanNvbiIsIm9mX2pzb24iLCJzeW1ib2xfdGFibGVfVjMiLCJzeW1ib2xfdGFibGVfVjQiLCJub3RfYnJlYWthYmxlIiwic3ltYm9sX3RhYmxlIiwic3ltYm9sX3RhYmxlX1YzX2xpZ2h0Iiwic3ltYm9sX3RhYmxlX2RvdG5ldCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WM19saSIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZSIsIndpdGhfZG90X2FuZF9wbHVzIiwiZW1wdHlfZW5naW5lX3N0YXRlIiwid2FrZV91cF9tYXAiLCJlcnJvciIsImVuZ2luZV9zdGF0ZSIsImVtcHR5X2Vycm9yX2hhbmRsZXIiLCJleG5fdG9fanNvbiIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJjIiwiYiIsImEiLCJjJDAiLCJiJDAiLCJhJDAiLCJ4JDMiLCJ4JDQiLCJjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24iLCJ4JDUiLCJ1bmNhdWdodF9leGNlcHRpb25fdG9fanNvbiIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwiZXhuX29mX2pzb24iLCJqc29uIiwibCIsImwkMCIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIiwiY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIiwiYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZmlsZV9uYW1lIiwibWVzc2FnZSIsImV4biIsImJ1aWxkX2NhdWdodF9leGNlcHRpb24iLCJzdGFjayIsInJhaXNlX2V4Y2VwdGlvbiIsImtleSIsInBwX2V4Y2VwdGlvbiIsImYiLCJleGMiLCJ5IiwiZXIiLCJ5JDAiLCJlciQwIiwieCQ2IiwicHBfdW5jYXVnaHQiLCJ4JDciLCJwcF9jYXVnaHQiLCJ3aXRoX3NwYWNlIiwic3RyaW5nbGlzdF9vZl9leGNlcHRpb24iLCJzdHJpbmdsaXN0X29mX2NhdWdodCIsInN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQiLCJzb2wiLCJzdHJpbmciLCJzdHJpbmdsaXN0X29mX2NhdWdodF9saWdodCIsInN0YWNrJDAiLCJ0b19qc29uIiwibWV0aG9kX2hhbmRsZXIiLCJvZl9qc29uIiwiY2F1Z2h0X3RvX3VpIiwidW5jYXVnaHRfdG9fdWkiLCJhZGRfdW5jYXVnaHRfZXJyb3IiLCJ0b191aSIsImVycm9yJDAiLCJnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IiwiZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdF90b191IiwiZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IiwiZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvIiwiaXNfZW1wdHlfZXJyb3JfaGFuZGxlciIsImRhdGUiLCJ2ZXJzaW9uIiwib3V0cHV0X2RpcmVjdG9yeSIsIm91dHB1dF9jbV9kaXJlY3RvcnkiLCJvdXRwdXRfaW1fZGlyZWN0b3J5Iiwib3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSIsInVuc2FmZSIsInRyYWNlIiwic3ludGF4X3ZlcnNpb24iLCJkdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2MiLCJsb2ciLCJmb3JtYXR0ZXIiLCJmaWxlIiwibGlua19tb2RlIiwiZG9faW5mbHVlbmNlX21hcCIsInJ1bGVfc2hhcGUiLCJydWxlX2NvbG9yIiwidmFyaWFibGVfc2hhcGUiLCJ2YXJpYWJsZV9jb2xvciIsImNlbnRlcl9jb2xvciIsIndha2VfdXBfY29sb3IiLCJpbmhpYml0aW9uX2NvbG9yIiwid2FrZV91cF9hcnJvdyIsImluaGliaXRpb25fYXJyb3ciLCJpbmZsdWVuY2VfbWFwX2ZpbGUiLCJpbmZsdWVuY2VfbWFwX2Zvcm1hdCIsInByb21wdF9mdWxsX3Zhcl9kZWYiLCJwcm9tcHRfZnVsbF9ydWxlX2RlZiIsIm1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kbyIsImRvX2NvbnRhY3RfbWFwIiwiZG9fc2NjIiwicHVyZV9jb250YWN0IiwiY29udGFjdF9tYXBfZmlsZSIsImNvbnRhY3RfbWFwX2Zvcm1hdCIsImJpbmRpbmdfc2l0ZV9zaGFwZSIsImJpbmRpbmdfc2l0ZV9jb2xvciIsImludGVybmFsX3NpdGVfc2hhcGUiLCJpbnRlcm5hbF9zaXRlX2NvbG9yIiwiY291bnRlcl9zaXRlX3NoYXBlIiwiY291bnRlcl9zaXRlX2NvbG9yIiwiYWdlbnRfc2hhcGVfYXJyYXkiLCJhZ2VudF9jb2xvcl9hcnJheSIsImFnZW50X3NoYXBlX2RlZiIsImFnZW50X2NvbG9yX2RlZiIsImxpbmtfY29sb3IiLCJpbmZsdWVuY2VfY29sb3IiLCJpbmZsdWVuY2VfYXJyb3ciLCJkb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiIsImRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdCIsImRvX3NpdGVfZGVwZW5kZW5jaWVzIiwiZHVtcF9zaXRlX2RlcGVuZGVuY2llcyIsImRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsInZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3JlcyIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdiIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5biIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZiIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsIiwiaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlIiwiaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0Iiwic21hc2hfcmVsYXRpb25zIiwidXNlX25hdHVyYWxfbGFuZ3VhZ2UiLCJjb21wdXRlX2xvY2FsX3RyYWNlcyIsInNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZSIsInVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsXyIsImFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyIsImFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyIsImRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZyIsImxvY2FsX3RyYWNlX3ByZWZpeCIsImxvY2FsX3RyYWNlX2Zvcm1hdCIsImNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyIsIndpdGhfdmlld3NfYW5hbHlzaXMiLCJ3aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2kiLCJ3aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIiwid2l0aF9keW5hbWljX2NvbnRhY3RfbWFwIiwid2l0aF9jb3VudGVyc19hbmFseXNpcyIsImNvdW50ZXJfYW5hbHlzaXNfZG9tYWluIiwidmlld19hY2N1cmFjeV9sZXZlbCIsImluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwiLCJjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCIsInNjY19hY2N1cmFjeV9sZXZlbCIsImRvX3N5bW1ldHJpZXMiLCJyYXRlX2NvbnZlbnRpb24iLCJwcmludF9lZmZpY2llbmN5IiwiYmFja2Rvb3JfbmJyX29mX3NjYyIsImJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MiLCJiYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMiLCJiYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMiLCJiYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyIsImJhY2tkb29yX25icl9vZl9ydWxlcyIsImJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzIiwiYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uIiwiYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2IiwiYmFja2Rvb3JfdGltaW5nIiwiYmFja2Rvb3JfZmlsZSIsImJhY2tkb29yX2RpcmVjdG9yeSIsImNzdF90ZXgiLCJjc3RfaHRtbCQwIiwiYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tIiwiZXh0Iiwic2l6ZV9hIiwic2l6ZV9leHQiLCJvcGVuX291dCIsImQiLCJvcGVuX2FwcGVuZCIsImNvbXBvc2UiLCJnIiwiZXh0X2Zvcm1hdCIsImZldGNoX2xldmVsX2dlbiIsInMiLCJyIiwiZmV0Y2hfZ3JhcGhfZm9ybWF0IiwiZmV0Y2hfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfc3ludGF4X3ZlcnNpb24iLCJyZWFjaGFiaWxpdHlfbWFwXzAiLCJyZWFjaGFiaWxpdHlfbWFwXzEiLCJyZWFjaGFiaWxpdHlfbWFwXzIiLCJyZWFjaGFiaWxpdHlfbWFwXzMiLCJyZWFjaGFiaWxpdHlfbWFwXzQiLCJnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMiLCJjYWNoZSIsImdldF9wYXJhbWV0ZXJzIiwib3B0IiwiY2FsbGVkX2Zyb20iLCJzdGgiLCJodG1sX21vZGUiLCJjb21tYW5kJDAiLCJjaGFubmVsX2JhY2tkb29yJDAiLCJjaGFubmVsX2VyciQwIiwiY2hhbm5lbCQxIiwiY2hhbm5lbCIsImNoYW5uZWwkMCIsImNvbW1hbmQkMiIsInJlYWNoYWJpbGl0eSQwIiwicmVhY2hhYmlsaXR5IiwibWFwIiwiYSQxIiwiZm10IiwiY2hhbm5lbCQyIiwiZHVtbXlfcGFyYW1ldGVycyIsInAiLCJwJDAiLCJnZXRfYm91bmRfc3ltYm9sXzEiLCJzeW1ib2wiLCJnZXRfb3Blbl9iaW5kaW5nX3N0YXRlXzEiLCJnZXRfY2xvc2VfYmluZGluZ19zdGF0ZV8xIiwiZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZV8xIiwiZ2V0X2xpbmtfdG9fYW55XzEiLCJnZXRfbGlua190b19zb21lXzEiLCJnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzEiLCJnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzEiLCJnZXRfZnJlZV8xIiwiZ2V0X2F0X3N5bWJvbF8xIiwiZ2V0X2FnZW50X29wZW5fc3ltYm9sXzEiLCJnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sXzEiLCJnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzEiLCJnZXRfYnR5cGVfc2VwX3N5bWJvbF8xIiwiZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbF8xIiwiZ2V0X2dob3N0X2FnZW50X3N5bWJvbF8xIiwiZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMSIsImdldF91bmlfYXJyb3dfc3ltYm9sXzEiLCJnZXRfcmV2X2Fycm93X3N5bWJvbF8xIiwiZ2V0X2JpX2Fycm93X3N5bWJvbF8xIiwiZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXYiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXYiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2kiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2kiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXQiLCJnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMSIsImdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMSIsImdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bSIsImdldF9vcGVuX2NvdW50ZXJfc3RhdGVfMSIsImdldF9vcGVuX2NvdW50ZXJjZXFfMSIsImdldF9vcGVuX2NvdW50ZXJjdmFyXzEiLCJnZXRfb3Blbl9jb3VudGVyY2d0ZV8xIiwiZ2V0X29wZW5fY291bnRlcmRlbHRhXzEiLCJnZXRfb3Blbl9jb3VudGVydmFsXzEiLCJnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMSIsImdldF9jbG9zZV9jb3VudGVyY3Zhcl8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzEiLCJnZXRfY2xvc2VfY291bnRlcmRlbHRhXzEiLCJnZXRfY2xvc2VfY291bnRlcnZhbF8xIiwiZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzEiLCJnZXRfY291bnRlcmN2YXJfc3ltYm9sXzEiLCJnZXRfY291bnRlcmNndGVfc3ltYm9sXzEiLCJnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2xfMSIsImdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMSIsImdldF9jb3VudGVydmFsX3N5bWJvbF8xIiwiZ2V0X2ltX2Zvcm1hdF8xIiwiaW5mbHVlbmNlIiwiZ2V0X2ltX2ZpbGVfMSIsImdldF9pbV9kaXJlY3RvcnlfMSIsImdldF9ydWxlX3NoYXBlXzEiLCJnZXRfcnVsZV9jb2xvcl8xIiwiZ2V0X3ZhcmlhYmxlX3NoYXBlXzEiLCJnZXRfdmFyaWFibGVfY29sb3JfMSIsImdldF93YWtlX3VwX2NvbG9yXzEiLCJnZXRfaW5oaWJpdGlvbl9jb2xvcl8xIiwiZ2V0X3dha2VfdXBfYXJyb3dfMSIsImdldF9pbmhpYml0aW9uX2Fycm93XzEiLCJnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xIiwiZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmXzEiLCJnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV8xIiwiZ2V0X3B1cmVfY29udGFjdF8xIiwiY20iLCJnZXRfY21fZm9ybWF0XzEiLCJnZXRfY21fZmlsZV8xIiwiZ2V0X2NtX2RpcmVjdG9yeV8xIiwiZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xIiwiZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xIiwiZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMSIsImdldF9pbnRlcm5hbF9zaXRlX2NvbG9yXzEiLCJnZXRfY291bnRlcl9zaXRlX3NoYXBlXzEiLCJnZXRfY291bnRlcl9zaXRlX2NvbG9yXzEiLCJnZXRfYWdlbnRfc2hhcGVfYXJyYXlfMSIsImdldF9hZ2VudF9jb2xvcl9hcnJheV8xIiwiZ2V0X2FnZW50X3NoYXBlX2RlZl8xIiwiZ2V0X2FnZW50X2NvbG9yX2RlZl8xIiwiZ2V0X2xpbmtfY29sb3JfMSIsImdldF9pbmZsdWVuY2VfY29sb3JfMSIsImdldF9pbmZsdWVuY2VfYXJyb3dfMSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQwIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDEiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMiIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQzIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDQiLCJnZXRfc21hc2hfcmVsYXRpb25zXzEiLCJnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV8iLCJnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF8iLCJnZXRfcG9zdF9wcm9jZXNzaW5nXzEiLCJnZXRfYmFja2VuZF9tb2RlXzEiLCJnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzEiLCJnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXNfMSIsImdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCIsImdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xIiwiZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90IiwiZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvIiwiZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xIiwiZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xIiwiZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xIiwiZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xIiwiZ2V0X3ZpZXdfYW5hbHlzaXNfMSIsImdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyIsImdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpc18xIiwiZ2V0X2R5bmFtaWNfY29udGFjdF9tYXBfMSIsImdldF9jb3VudGVyc19hbmFseXNpc18xIiwiZ2V0X2NvdW50ZXJzX2RvbWFpbl8xIiwiZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xIiwibWFyc2hhbGlzYWJsZSIsImdldF9yYXRlX2NvbnZlbnRpb25fMSIsImdldF9lbXB0eV9oYXNodGJsX3NpemVfMSIsImdldF9zeW1ib2xzXzEiLCJnZXRfZmlsZV8xIiwiZ2V0X2luZmx1ZW5jZV9tYXBfMSIsImdldF9jb250YWN0X21hcF8xIiwiZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMSIsImdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYSIsImdldF91bnNhZmVfMSIsImdldF90cmFjZV8xIiwiZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5IiwiZ2V0X3ByZWZpeF8xIiwiZ2V0X2NhbGxfc3RhY2tfMSIsImdldF9saW5rX21vZGVfMSIsImdldF9rYXNhX3N0YXRlXzEiLCJnZXRfZG9fY29udGFjdF9tYXBfMSIsImdldF9zeW50YXhfdmVyc2lvbl8xIiwiZ2V0X2RvX3NjY18xIiwiZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMSIsImdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiIsImdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mbyIsImdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xIiwiZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXNfMSIsImdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSIsImdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldiIsImdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCIsImdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMSIsImdldF92aWV3X2FjY3VyYWN5X2xldmVsXzEiLCJnZXRfbGF1bmNoaW5nX2RhdGVfMSIsInQiLCJnbXQiLCJnZXRfc2hvcnRfdmVyc2lvbl8xIiwiZ2V0X2Z1bGxfdmVyc2lvbl8xIiwiZ2V0X2xhdW5jaGVkX3doZXJlXzEiLCJnZXRfY29tbWFuZF9saW5lXzEiLCJnZXRfbWFyc2hhbGlzYWJsZSIsInBhcmFtZXRlciIsImdldF9sb2dnZXIiLCJnZXRfbG9nZ2VyX2VyciIsImdldF9sb2dnZXJfYmFja2Rvb3IiLCJ1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCIsImdldF9jb21tYW5kX2xpbmUiLCJnZXRfc2hvcnRfdmVyc2lvbiIsImdldF9sYXVuY2hlZF93aGVyZSIsImdldF9mdWxsX3ZlcnNpb24iLCJnZXRfbGF1bmNoaW5nX2RhdGUiLCJnZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUiLCJwYXJhbWV0ZXJzIiwiZ2V0X2RvX2NvbnRhY3RfbWFwIiwiZ2V0X3N5bnRheF92ZXJzaW9uJDAiLCJnZXRfZG9fc2NjIiwiZ2V0X2RvX2luZmx1ZW5jZV9tYXAiLCJnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24kMCIsImdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mbyQwIiwiZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzIiwiZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXMiLCJnZXRfc3ltYm9scyIsImdldF9maWxlIiwiZ2V0X2NvbXB1dGVfc3ltbWV0cmllcyIsImdldF9yYXRlX2NvbnZlbnRpb24iLCJnZXRfaW5mbHVlbmNlX21hcCIsImdldF9jb250YWN0X21hcCIsImdldF9yZWFjaGFiaWxpdHlfbWFwIiwiZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhJDAiLCJnZXRfdW5zYWZlIiwiZ2V0X3RyYWNlIiwiZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5JDAiLCJnZXRfcHJlZml4IiwiZ2V0X2NhbGxfc3RhY2siLCJnZXRfbGlua19tb2RlIiwiZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsJDAiLCJnZXRfc2NjX2FjY3VyYWN5X2xldmVsIiwiZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2JDAiLCJnZXRfdmlld19hY2N1cmFjeV9sZXZlbCIsImdldF9lbXB0eV9oYXNodGJsX3NpemUiLCJ1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWUiLCJ1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQiLCJ1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCIsInVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwXyIsInVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbCIsImdldF9ib3VuZF9zeW1ib2wiLCJnZXRfb3Blbl9iaW5kaW5nX3N0YXRlIiwiZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGUiLCJnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlIiwiZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbCIsImdldF9vcGVuX2ludGVybmFsX3N0YXRlIiwiZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlIiwiZ2V0X2xpbmtfdG9fYW55IiwiZ2V0X2xpbmtfdG9fc29tZSIsImdldF9mcmVlX3N5bWJvbCIsImdldF9hdF9zeW1ib2wiLCJnZXRfYWdlbnRfb3Blbl9zeW1ib2wiLCJnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2wiLCJnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sIiwiZ2V0X2J0eXBlX3NlcF9zeW1ib2wiLCJnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sIiwiZ2V0X2dob3N0X2FnZW50X3N5bWJvbCIsImdldF9kb193ZV9zaG93X2dob3N0IiwiZ2V0X3VuaV9hcnJvd19zeW1ib2wiLCJnZXRfcmV2X2Fycm93X3N5bWJvbCIsImdldF9iaV9hcnJvd19zeW1ib2wiLCJnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2wiLCJnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sIiwiZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbCIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdiQwIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2JDAiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkkMCIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaSQwIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpJDAiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXQkMCIsImdldF9wbHVzX2luZmluaXR5X3N5bWJvbCIsImdldF9taW51c19pbmZpbml0eV9zeW1ib2wiLCJnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW0kMCIsImdldF9vcGVuX2NvdW50ZXJfc3RhdGUiLCJnZXRfb3Blbl9jb3VudGVyY2VxIiwiZ2V0X29wZW5fY291bnRlcmNndGUiLCJnZXRfb3Blbl9jb3VudGVyY3ZhciIsImdldF9vcGVuX2NvdW50ZXJkZWx0YSIsImdldF9vcGVuX2NvdW50ZXJ2YWwiLCJnZXRfY2xvc2VfY291bnRlcl9zdGF0ZSIsImdldF9jbG9zZV9jb3VudGVyY2VxIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyIiwiZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YSIsImdldF9jbG9zZV9jb3VudGVydmFsIiwiZ2V0X2NvdW50ZXJjZXFfc3ltYm9sIiwiZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbCIsImdldF9jb3VudGVyY3Zhcl9zeW1ib2wiLCJnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2wiLCJnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sIiwiZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sIiwiZ2V0X2ltX2Zvcm1hdCIsImdldF9pbV9maWxlIiwiZ2V0X2ltX2RpcmVjdG9yeSIsImdldF9ydWxlX3NoYXBlIiwiZ2V0X3J1bGVfY29sb3IiLCJnZXRfdmFyaWFibGVfc2hhcGUiLCJnZXRfdmFyaWFibGVfY29sb3IiLCJnZXRfd2FrZV91cF9jb2xvciIsImdldF9pbmhpYml0aW9uX2NvbG9yIiwiZ2V0X3dha2VfdXBfYXJyb3ciLCJnZXRfaW5oaWJpdGlvbl9hcnJvdyIsImdldF9wcm9tcHRfZnVsbF92YXJfZGVmIiwiZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmIiwiZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0IiwiZ2V0X3B1cmVfY29udGFjdCIsImdldF9jbV9mb3JtYXQiLCJnZXRfY21fZmlsZSIsImdldF9jbV9kaXJlY3RvcnkiLCJnZXRfYmluZGluZ19zaXRlX3NoYXBlIiwiZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvciIsImdldF9pbnRlcm5hbF9zaXRlX3NoYXBlIiwiZ2V0X2ludGVybmFsX3NpdGVfY29sb3IiLCJnZXRfY291bnRlcl9zaXRlX3NoYXBlIiwiZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvciIsImdldF9hZ2VudF9zaGFwZV9hcnJheSIsImdldF9hZ2VudF9jb2xvcl9hcnJheSIsImdldF9hZ2VudF9zaGFwZV9kZWYiLCJnZXRfYWdlbnRfY29sb3JfZGVmIiwiZ2V0X2xpbmtfY29sb3IiLCJnZXRfaW5mbHVlbmNlX2NvbG9yIiwiZ2V0X2luZmx1ZW5jZV9hcnJvdyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ1IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDYiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ4IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDkiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMTAiLCJnZXRfcG9zdF9wcm9jZXNzaW5nIiwiZ2V0X2JhY2tlbmRfbW9kZSIsImdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tXyQwIiwiZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfJDAiLCJnZXRfc21hc2hfcmVsYXRpb25zIiwiZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdCIsImdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyIsImdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCQwIiwic2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0IiwiciQwIiwiciQxIiwic2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvIiwiZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90JDAiLCJnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG8kMCIsImdldF9pZ25vcmVfbG9jYWxfbG9zYW5nZXMiLCJnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzIiwiZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyIsImdldF9sb2NhbF90cmFjZV9wcmVmaXgiLCJnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IiwiZ2V0X3ZpZXdfYW5hbHlzaXMiLCJnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMiLCJnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMkMCIsImdldF9keW5hbWljX2NvbnRhY3RfbWFwIiwiZ2V0X2NvdW50ZXJzX2FuYWx5c2lzIiwiZ2V0X2NvdW50ZXJzX2RvbWFpbiIsImdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMiLCJzZXRfcHJlZml4XzEiLCJwcmVmaXgiLCJzZXRfY2FsbF9zdGFja18xIiwiY2FsbF9zdGFjayIsInNldF90cmFjZV8xIiwiYm9vbCIsInVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSIsInNldF9wcmVmaXgiLCJzZXRfY2FsbF9zdGFjayIsInNldF90cmFjZSIsInVwZGF0ZV9wcmVmaXgiLCJzdWZmaXgiLCJ1cGRhdGVfY2FsbF9zdGFjayIsIm5hbWUiLCJyZXBfYm9vbCIsIm9wZW5faW5mbHVlbmNlX21hcF9maWxlIiwibWF0Y2gkMSIsImZvcm1hdCIsImxvZ2dlciIsIm9wZW5fY29udGFjdF9tYXBfZmlsZSIsImxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubCIsImdldF9jYWxsZWRfZnJvbSIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzEiLCJiYWNrZG9vcnMiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkiLCJnZXRfYmFja2Rvb3JfdGltaW5nXzEiLCJnZXRfYmFja2Rvb3JfZmlsZV8xIiwiZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIiwiZ2V0X2JhY2tkb29ycyIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzIiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludCQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18yIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5JDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgkMCIsImdldF9iYWNrZG9vcl90aW1pbmdfMiIsImdldF9iYWNrZG9vcl9maWxlXzIiLCJnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzIiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYSQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9zY2MiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkkMSIsImdldF9iYWNrZG9vcl90aW1pbmciLCJnZXRfYmFja2Rvb3JfZmlsZSIsImdldF9iYWNrZG9vcl9kaXJlY3RvcnkiLCJnZXRfcHJvZmlsZXIiLCJnZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciIsImdldF9rYXNhX3N0YXRlIiwic2V0X3ByaW50X2VmZmljaWVuY3kiLCJnZXRfcHJpbnRfZWZmaWNpZW5jeSIsInNldF9sb2dnZXIiLCJzYXZlX2Vycm9yX2xpc3QiLCJzYXZlX3Byb2dyZXNzX2JhciIsImJhciIsInJlc2V0X3Byb2dyZXNzX2JhciIsInNhdmVfY3VycmVudF9waGFzZV90aXRsZSIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJkZWZhdWx0JDAiLCJjb21iaW5lIiwibDEiLCJsMiIsImxpc3QiLCJhMSIsImEyIiwib3B0aW9ucyIsImdldF9vcHRpb24iLCJ0aXRsZSIsImlucHV0IiwiYnVpbGRfa2FzYV9wYXJhbWV0ZXJzIiwidF9jb21tb24iLCJkb3RfY29tbWVudCIsImRvdF90b19wZGYiLCJoZWFkIiwicSIsImhlYWRfaW5mbHVlbmNlX21hcF9pbl9kb3QiLCJoZWFkX2NvbnRhY3RfbWFwX2luX2RvdCIsIm91dHB1dCIsImFjdGlvbnMiLCJzeW50YXgiLCJ0cmFjZXMiLCJjb250YWN0X21hcCIsImluZmx1ZW5jZV9tYXAiLCJmbG93IiwiZGVidWciLCJlbXB0eV9lcnJvcl9oYW5kbGVyIiwiaXNfZW1wdHlfZXJyb3JfaGFuZGxlciIsIndhcm5fYXV4IiwicGFyYW1ldGVycyIsImVycm9yX2hhbmRsZXIiLCJ0b191aSIsImZpbGVfbmFtZSIsIm1lc3NhZ2UiLCJleG4iLCJkZWZhdWx0JDAiLCJ1bmNhdWdodCQwIiwiZGZ0IiwiZXJyb3IiLCJ1bmNhdWdodCIsInN0cmluZ2xpc3QiLCJ3YXJuX3dpdGhfZXhuIiwib3B0IiwibGluZSIsImZpbGUiLCJzdGgiLCJzdGgkMCIsInBvcyIsImxpYWlzb24iLCJzIiwicG9zJDAiLCJ3YXJuIiwiZmlsZV9saW5lIiwicHJpbnRfZm9yX0thU2ltIiwiaGFuZGxlcnMiLCJwYXJhbWV0ZXJzJDAiLCJjYXVnaHQiLCJwcmludCIsInByaW50X2Vycm9yc19saWdodF9mb3Jfa2FzaW0iLCJ3cmFwIiwic3RyaW5nIiwic3RyaW5nX29wdCIsImNoZWNrX3BvaW50IiwicGFyYW1ldGVyIiwiZXJyb3IkMCIsImVycm9yJDEiLCJmb3JfS2FTaW0iLCJmIiwibGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0iLCJhIiwiYiIsImxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2ZvciIsImMiLCJiJDAiLCJsaWZ0X2dlbmVyaWNfdGVybmFyeV9mb3JfS2FTaW0iLCJsaWZ0X2dlbl91bmFyeSIsImR1bXAiLCJvdXRwdXQiLCJsaWZ0X2dlbl9iaW5hcnkiLCJsaWZ0X2dlbl90ZXJuYXJ5IiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ191IiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iIiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ190IiwibGlmdF93aXRob3V0X2xvZ2dpbmdfdW5hcnkiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ19iaW5hcnkiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ190ZXJuYXJ5Iiwic3RyaW5nX29mX3N0ZXBfa2luZCIsIngiLCJpbnQkMCIsImludCQxIiwic3RyaW5nIiwiaW50JDIiLCJpbnQkMyIsImludCQ0IiwiaW50JDUiLCJzdHJpbmckMCIsInN0cmluZyQxIiwicHJpbnRfc3RlcF9raW5kIiwicGFyYW1ldGVycyIsInByaW50X3Rhc2siLCJwYXJhbWV0ZXIiLCJiIiwiYSIsImsiLCJsIiwib3V0cHV0IiwicSIsInQiLCJvdXRwdXQkMCIsImskMCIsImskMSIsIm91dHB1dCQxIiwib3V0cHV0JDIiLCJrJDIiLCJiJDAiLCJ0YWIiLCJpIiwiaSQwIiwidGltZSIsImNsb3NlX2xvZ2dlciIsImZsdXNoX2xvZ2dlciIsImlzX2R1bW15Iiwic3RlcF9raW5kIiwiYWRkX2V2ZW50IiwiZXJyb3IiLCJmIiwibG9nX2luZm8iLCJlcnJvciQwIiwibmV4dF9kZXB0aCIsImYkMCIsInRhc2siLCJ0ZXJtaW5hdGVkX3Rhc2siLCJjdXJyZW50X3Rhc2siLCJjbG9zZV9ldmVudCIsImxvZ19pbmZvJDAiLCJlcnJvciQxIiwiaW50ZXJydXB0ZWQiLCJlcnJvciQyIiwidGFpbCIsInRhaWwkMCIsInRlcm1pbmF0ZWRfdGFzayQwIiwibG9nX2luZm8kMSIsInNpemVfYWZ0ZXIiLCJnZW5fb3B0IiwiZ2VuIiwiZSIsImFkZF9ldmVudF9vcHQiLCJjbG9zZV9ldmVudF9vcHQiLCJwcm9wYWdhdGlvbl9sYWJlbHMiLCJwcm9wYWdhdGlvbl9jYXNlcyIsImNvcHkiLCJpbml0X2xvZ19pbmZvIiwibG9nX2luZm9fdG9fanNvbiIsImZsb2F0X29mX2pzb24iLCJpbnRfb2ZfanNvbiIsImxvZ19pbmZvX29mX2pzb24iLCJpbml0IiwiZHVtcF9zaG9ydF9sb2ciLCJyZXNldF9sb2ciLCJsb2ciLCJlbGxhcHNlZF90aW1lIiwiZWxsYXBzZWRfZ2xvYmFsX3RpbWUiLCJzZXRfdGltZSIsInNldF9zdGVwX3RpbWUiLCJzZXRfc3RvcnlfcmVzZWFyY2hfdGltZSIsInN0Iiwic2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uIiwic2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fIiwic2V0X2dyaWRfZ2VuZXJhdGlvbiIsInNldF9jYW5vbmljYWxpc2F0aW9uIiwiYWRkX2Nhc2UiLCJhZGRfbG9va19kb3duX2Nhc2UiLCJhZGRfbG9va191cF9jYXNlIiwiYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biIsImFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIiwiaW5jX2N1dCIsImluY19icmFuY2giLCJpbmNfbl9rYXNpbV9ldmVudHMiLCJpbmNfbl9vYnNfZXZlbnRzIiwiaW5jX25fc2lkZV9ldmVudHMiLCJpbmNfbl9pbml0X2V2ZW50cyIsImluY19jdXRfZXZlbnRzIiwiaW5jX2tfY3V0X2V2ZW50cyIsInJlc2V0X2N1dF9ldmVudHMiLCJpbmNfc2VsZWN0ZWRfZXZlbnRzIiwiaW5jX3JlbW92ZWRfZXZlbnRzIiwiZHVtcF9jb21wbGV0ZV9sb2ciLCJsb2dnZXIiLCJ0aWNrIiwic2V0X2dsb2JhbF9jdXQiLCJuIiwic2V0X3BzZXVkb19pbnYiLCJsaWZ0IiwiZiIsImVtcHR5IiwiaXNfZW1wdHkiLCJzaW5nbGV0b24iLCJpc19zaW5nbGV0b24iLCJhZGQiLCJhZGRfd2hlbl9ub3RfaW4iLCJwIiwiZSIsIngiLCJzIiwicyQwIiwiZSQwIiwicmVtb3ZlIiwidW5pb24iLCJkaXNqb2ludF91bmlvbiIsImludGVyIiwiZGlmZiIsIm1pbnVzIiwiY2FyZGluYWwiLCJtZW0iLCJleGlzdHMiLCJmaWx0ZXIiLCJmb3JfYWxsIiwicGFydGl0aW9uIiwiY29tcGFyZSIsImVxdWFsIiwic3Vic2V0IiwiaXRlciIsImZvbGQiLCJmb2xkX2ludiIsImVsZW1lbnRzIiwiY2hvb3NlIiwibWluX2VsdCIsIm1heF9lbHQiLCJlbXB0eSQwIiwiaXNfZW1wdHkkMCIsIm1pbl9lbHQkMCIsIm1lbSQwIiwiZmluZF9vcHRpb24iLCJhIiwiYiIsImMiLCJkIiwiZmluZF9kZWZhdWx0IiwiZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIiwiZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyIsImFkZCQwIiwib3ZlcndyaXRlIiwicGFyYW1ldGVyIiwiZXJyb3IiLCJtYXAiLCJib29sIiwiZXJyb3IkMCIsImFkZF9vcl9vdmVyd3JpdGUiLCJyZW1vdmUkMCIsInJlbW92ZV9vcl9ub3QiLCJ1cGRhdGUiLCJtYXAyIiwibWFwMnoiLCJmb2xkMnoiLCJmb2xkMiIsIml0ZXIyIiwiZyIsImgiLCJtYXBmIiwibWFwZyIsImZvbGQyX3NwYXJzZSIsIml0ZXIyX3NwYXJzZSIsImRpZmYkMCIsImRpZmZfcHJlZCIsIm1lcmdlIiwidW5pb24kMCIsImZvbGRfcmVzdHJpY3Rpb24iLCJmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ18iLCJpdGVyJDAiLCJmb2xkJDAiLCJtYXBpIiwiZm9yX2FsbCQwIiwiZmlsdGVyX29uZSIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJiaW5kaW5ncyIsInRvX2pzb24iLCJvZl9qc29uIiwicHJval9tYXAiLCJpZGVudGl0eV9lbHQiLCJrZXlfYSIsImRhdGFfYSIsIm1hcF9iIiwia2V5X2IiLCJvbGQiLCJtb25hZGljX3Byb2pfbWFwX2kiLCJlcnJvciQxIiwiZGF0YSIsImVycm9yJDIiLCJkYXRhJDAiLCJlcnJvciQzIiwibW9uYWRpY19wcm9qX21hcCIsInBhcnRpdGlvbl9zZXQiLCJzZXQiLCJuZXdzZXQiLCJtb25hZGljX3BhcnRpdGlvbl9zZXQiLCJwcm9qX3NldCIsInNldF9hIiwic2V0X2IiLCJtb25hZGljX3Byb2pfc2V0IiwicHJvajIiLCJrZXlfYyIsInN1Ym1hcCIsInN1Ym1hcCQwIiwicHJvajJfbW9uYWRpYyIsImhhbmRsZXIiLCJtdmJkdV9oYW5kbGVyIiwiaGFuZGxlciQwIiwiaGFuZGxlciQxIiwibXZiZHVfaGFuZGxlciQwIiwiaGFuZGxlciQyIiwiaGFuZGxlciQzIiwiaGFuZGxlciQ0IiwibG9jYWxfdHJhY2UiLCJwb29sIiwicHVzaCIsIm91dF9saXN0IiwiaW5fbGlzdCIsImFkZF9lbHQiLCJmb2xkX2xlZnQiLCJhY2MiLCJwcmludF93bCIsInBhcmFtZXRlcnMiLCJ3bCIsImkiLCJwb3AiLCJ4JDAiLCJ0bCIsInJlbW92ZV9lbHQiLCJ4JDEiLCJpbnZhbGlkX2FyZyIsIm1oIiwicG9zIiwiZXhuIiwidmFsdWUiLCJkaW1lbnNpb24iLCJrZXlfbGlzdCIsInBhcmVtZXRlcnMiLCJ0Iiwic2l6ZSIsImFycmF5IiwiayIsInNvbCIsInNvbCQwIiwiayQwIiwiayQxIiwiY3JlYXRlIiwiY3JlYXRlX2JpZ2dlc3Rfa2V5IiwiZXhwYW5kX2FuZF9jb3B5IiwiZGltZW5zaW9uJDAiLCJhcnJheSQwIiwia2V5IiwiaW5pdCIsImFycmF5JDIiLCJlcnJvciQ0IiwiYXJyYXkkMSIsImdldCIsImZyZWUiLCJ1bnNhZmVfZ2V0IiwicHJpbnQiLCJwcmludF9lbHQiLCJlbHQiLCJwYXJhbWV0ZXJzJDAiLCJpJDAiLCJyZW1hbmVudCQxIiwicmVtYW5lbnQiLCJyZW1hbmVudCQwIiwiZm9sZF93aXRoX2ludGVycnVwdGlvbiIsIm91dHB1dF9vcHQiLCJmb2xkMl9jb21tb24iLCJ0MSIsInQyIiwiYXJyYXkxIiwiYXJyYXkyIiwieDIiLCJ4MSIsInJlbWFuZW50JDQiLCJ4MiQwIiwicmVtYW5lbnQkMiIsImskMiIsInJlbWFuZW50JDMiLCJrJDMiLCJmcmVlX2FsbCIsIm9sZF9kaW1lbnNpb24iLCJtYXRyaXgiLCJtYXRyaXgkMCIsImV4dF9saXN0IiwibGlzdCIsInQyJDAiLCJsMiIsImtleTIiLCJkaW0iLCJqIiwib2xkX3VuZGVybHlpbmciLCJvbGRfdW5kZXJseWluZyQwIiwib2xkX3VuZGVybHlpbmckMSIsIm9sZF91bmRlcmx5aW5nJDIiLCJuZXdfdW5kZXJseWluZyIsIm5ld19tYXRyaXgiLCJ1bmRlcmx5aW5nIiwidW5kZXJseWluZyQwIiwicHJpbnRfb2YiLCJmb2xkX2dlbiIsImZvbGQxIiwiYiQwIiwiYyQwIiwiYmFzaWMiLCJuIiwia2V5cyIsIm5ld19hcnJheSIsIm5ld19iYXNpYyIsImltIiwiaW0kMCIsImwiLCJ0JDAiLCJvdXRwdXQkMSIsImxpc3QkMCIsIm91dHB1dCIsInRhaWwiLCJoZWFkIiwib3V0cHV0JDAiLCJmaW5kU2V0IiwicGFyZW50Iiwicm9vdCIsImwkMCIsImdldF9yZXByZXNlbnRlbnQiLCJ1bmlvbl9saXN0IiwidG9fdmlzaXQiLCJ0JDEiLCJ0b192aXNpdCQwIiwiYSQwIiwidG9fdmlzaXQkMSIsInQkMiIsInJvb3RfeCIsInJvb3RfeSIsInVuaW9uX2FycmF5IiwiaXRlcmkiLCJmc3Rfb3B0aW9uIiwic25kX29wdGlvbiIsImVzY2FwZV9sYWJlbF9pbl9kb3QiLCJtYWtlX2lkX2NvbXBhdGlibGVfd2l0aF9kb3RfZm8iLCJzdHJpbmciLCJ0YWIiLCJwb3MkMiIsImNoYXIkMCIsImxpc3RlX2NoYXIiLCJwb3MkMCIsImwkMSIsInBvcyQxIiwic29ydGVkX3BhcnRzX29mX2xpc3QiLCJhdXgiLCJzdWZmaXgiLCJsaXN0JDEiLCJzb3J0X2xpc3QiLCJyZWZpbmVkX2xpc3QiLCJrZXkkMCIsInJlZmluZWRfc29ydGVkX2xpc3QiLCJjb25zdF91bml0IiwiYXJyYXlfb2ZfbGlzdCIsInEiLCJhJDEiLCJ1bnNvbWUiLCJ0cmFjZSIsImludGVyX2xpc3QiLCJsMSQxIiwibDIkMSIsImwxIiwicmVwIiwibDIkMCIsImwxJDAiLCJyZXAkMCIsImxpc3RfMF9uIiwibGlzdF9taW51cyIsInEyIiwicTEiLCJxMSQwIiwicHJpbnRfY29tbWEiLCJjb21tYSIsImZldGNoX2FycmF5IiwiZGVmIiwiaSQxIiwiYXNzbyIsImludCQwIiwiZmluZF9vcHRpb25fbG9nX29uX3RoZV9mbHkiLCJub2RlX29mX2ludCIsImludF9vZl9ub2RlIiwibm9kZV9vZl9ub2RlX2xhYmVsIiwibm9kZV9saXN0IiwiZWRnZV9saXN0IiwibSIsIm1heF9ub2RlIiwibm9kZXMiLCJub2RlcyQwIiwiZWRnZXMiLCJlZGdlIiwibjIiLCJsYWJlbCIsIm4xIiwiZWRnZXMkMCIsImNvbXB1dGVfc2NjIiwibG93IiwicHJlIiwib25fc3RhY2siLCJuX3RvX3N0cmluZyIsImdyYXBoIiwib25fc3RhY2skMCIsInByZSQwIiwibG93JDAiLCJvbl9zdGFjayQxIiwicHJlJDEiLCJsb3ckMSIsImVycm9yJDgiLCJsb3ckNCIsImxvdyQ1IiwiZXJyb3IkOSIsImxvdyQ2IiwiZXJyb3IkMTQiLCJwcmUkNCIsInByZSQ1IiwiZXJyb3IkMTAiLCJwcmUkNiIsImVycm9yJDEzIiwib25fc3RhY2skNCIsIm9uX3N0YWNrJDUiLCJlcnJvciQxMSIsIm9uX3N0YWNrJDYiLCJlcnJvciQxMiIsInNjY19saXN0Iiwic3RhY2siLCJjb3VudGVyIiwidiIsInN0YWNrJDAiLCJjb3VudGVyJDAiLCJlZGdlc192IiwidyIsInByZV93Iiwic2NjX2xpc3QkMCIsImxvd192IiwibG93X3ciLCJlcnJvciQ1Iiwic3RhY2skMSIsInNjY19saXN0JDEiLCJjb3VudGVyJDEiLCJsb3ckMiIsImVycm9yJDYiLCJsb3dfdiQwIiwiZXJyb3IkNyIsInByZV93JDAiLCJsb3ckMyIsInByZV92Iiwib25fc3RhY2skMiIsInN0YWNrJDIiLCJjYyIsInN0YWNrJDMiLCJvbl9zdGFjayQzIiwiY2MkMCIsInByZSQyIiwicHJlJDMiLCJhZGRfYnJpZGdlcyIsInNjYyIsInN0cmluZ19vZl9uIiwic3RyaW5nX29mX2UiLCJicmlkZ2VzIiwic2NjJDAiLCJzY2MkMSIsInNjYyQ0Iiwibm9kZSIsIm4kMCIsInNjYyQyIiwibmkiLCJzY2NpIiwic2NjaSQwIiwic2NjaSQxIiwibmoiLCJzY2NqIiwic2NjaiQwIiwic2NjaiQxIiwibnN0cmluZ2kiLCJuc3RyaW5naiIsImJyaWRnZXMkMCIsInNjYyQzIiwiaW52YWxpZCIsIlBPUyIsIm1lc3NhZ2UiLCJpbnZhbGlkX2FyZ19ib29sIiwibWVtYmVyIiwiZGljdGlvbmFyeSIsImluX2NvbnN0cnVjdGlvbiIsInN0YWJpbGl6ZSIsImFzc28kMCIsInRyYW5zbGF0ZSIsImRpY3Rpb25hcnkkMCIsInN0YWJpbGl6ZWQiLCJhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QiLCJ1bmlxdWVseSIsImJ1aWxkIiwiZnJlc2giLCJhc3NvX2lkJDEiLCJoYXNoX3RhYmxlIiwiaGFzaCIsImRpY3Rpb25hcnkkMSIsImFzc29faWQiLCJhc3NvX2lkJDAiLCJhbGxvY2F0ZSIsImFhIiwiYWxsb2NhdGVfdW5pcXVlbHkiLCJhbGxvY2F0ZV9ib29sIiwidW5zYWZlX2FsbG9jYXRlIiwiZGljIiwiZGljJDAiLCJsYXN0X2VudHJ5IiwidGlja19zdG9yaWVzIiwiZiIsImNvbmYiLCJzYXZlX3Byb2dyZXNzX2JhciIsIm5fc3RvcmllcyIsImNvdW50ZXIiLCJsYXN0IiwiaW5pdCIsImMiLCJuIiwibmMiLCJubCIsIm4kMCIsImJhciIsIm4kMSIsInRpY2skMCIsInRpY2siLCJjb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3MiLCJjb25maWdfc21hbGxfZ3JhcGgiLCJjb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3IiLCJpZ25vcmVfZmxvd19mcm9tX291dGdvaW5nX3NpcGgiLCJjaGVja19tb2RlIiwic3dhcCIsImEiLCJiIiwiaWdub3JlX2ZzdCIsImNvbXBhcmVfc3VjYyIsInAiLCJsIiwibCQwIiwicSIsInN0cmljdGx5X2luY3JlYXNpbmciLCJzdHJpY3RseV9kZWNyZWFzaW5nIiwiY29uY2F0IiwicHJpbnRfbGlzdCIsImNoZWNrIiwiZm9ybSIsInN0cmluZyIsInJlcCIsImlzX3N0cmljdF9zdWJsaXN0IiwiYSQwIiwiYiQwIiwiaCIsInQiLCJoJDAiLCJ0JDAiLCJ0JDEiLCJpbnNlcnRfZWx0IiwiZSIsImRpZmZfbGlzdCIsImFjY3UiLCJhY2N1JDAiLCJjb21wYXJlX2Jvb2wiLCJkaWZmX2xpc3RfZGVjcmVhc2luZyIsIngiLCJ5IiwibWVyZ2VfbGlzdF9kZWNyZWFzaW5nIiwiY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIiwicGFyYW1ldGVyIiwiaGFuZGxlciIsImxvZ19pbmZvIiwiZXJyb3IiLCJldmVudCIsImNvbmZpZyIsInByZWMiLCJpc19vYnMiLCJlcnJfbG9nZ2VyIiwiaXNfb2JzJDAiLCJpIiwibWF4X2luZGV4Iiwibl9lZGdlcyIsImYkMCIsImNsb3NlIiwiY2xvc2VfdGljayIsInRpY2skMSIsImRvX3RpY2siLCJjbG9zZV90aWNrJDAiLCJkb190aWNrJDAiLCJzX3ByZWRfc3RhciIsIm1heF9zdWNjIiwic3VjYyIsInByZWQiLCJpc19sYXN0X3N1Y2Nfb2YiLCJhZGQiLCJub2RlIiwib2xkX2wiLCJsb2dfaW5mbyQwIiwiZXJyb3IkMCIsInNfcHJlZCIsImoiLCJsX3ByZWQiLCJwcmVkX3N0YXIiLCJuZXdfbCIsImRpZmYiLCJrIiwib3V0cHV0IiwiY2xvc3VyZV9ib3R0b21fdXAiLCJldmVudF9vcHQiLCJzIiwiZ3JhcGgiLCJjbG9zdXJlX3RvcF9kb3duIiwiZGVsdGEiLCJwcmVjJDAiLCJtZXJnZV90YWludHMiLCJsMSIsImwyIiwicSQwIiwidGFpbnRpbmciLCJvdXRwdXQkMSIsImRlbHRhJDAiLCJvdXRwdXQkMCIsImRlbHRhJDEiLCJuZXdfdGFpbnQiLCJ0YWludHMiLCJ0YWludCIsInNoaWZ0ZWRfdGFpbnRzIiwiZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93IiwibW9kZSIsIm0iLCJjbG9zdXJlX2NoZWNrIiwibG9nX2luZm8kMSIsImVycm9yJDEiLCJzJDAiLCJzJDEiLCJjbG9zdXJlIiwicmVkdWN0aW9uX3RvcF9kb3duIiwicHJlY19zdGFyIiwiZWlkIiwibmVpZ2giLCJvdXQiLCJ0b19yZW1vdmUiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJjbXAiLCJsMSQyIiwic2V0IiwibG9nX2luZm8kMiIsImVycm9yJDIiLCJhdG9tX3Rlc3RlZCIsImF0b21fbW9kaWZpZWQiLCJlbXB0eV9jb25maWciLCJwcmludF9ldmVudF9raW5kIiwiZW52IiwiZGVidWdfcHJpbnRfY2F1c2FsIiwiZGVidWdfcHJpbnRfYXRvbSIsImRlYnVnX3ByaW50X2dyaWQiLCJnIiwic2l0ZV9pZCIsIm5vZGVfaWQiLCJlbXB0eV9ncmlkIiwiZ3JpZF9maW5kIiwiZ3JpZCIsInF1YXJrIiwiaXNfbGluayIsInZhIiwiZXZlbnRfbnVtYmVyIiwia2luZCIsImF0dCQwIiwiYXR0IiwiYXR0cmlidXRlIiwicGlkIiwiZWlkX2luaXQiLCJvbGQiLCJhZGRfYWN0aW9ucyIsImFjdGlvbnMiLCJncmlkJDAiLCJzaXRlIiwicSQxIiwic2l0ZTIiLCJzaXRlMSIsImdyaWQkNCIsInEkMiIsInNpdGUxJDAiLCJxJDMiLCJzaXRlJDAiLCJhZyIsIm5hIiwic2lncyIsImFnX2ludGYiLCJncmlkJDEiLCJhZyQwIiwibmEkMCIsInNpZ3MkMCIsImdyaWQkMiIsImFkZF90ZXN0cyIsInRlc3RzIiwicmVjb3JkIiwicmVjb3JkX29icyIsInNpZGVfZWZmZWN0cyIsInJlY29yZF9pbml0IiwibGJsIiwiY3V0Iiwib3B0IiwiYXR0cmlidXRlX2lkcyIsInN0aCIsIndpdGhfcmVkdWN0aW9uIiwiYXR0cmlidXRlX2lkcyQwIiwiY2ZnIiwiYXR0cmlidXRlX2lkcyQxIiwidHlwZV9pIiwic2l0ZV9pIiwibm9kZV9pIiwiYXR0cmlidXRlJDEiLCJhdHRyaWJ1dGUkMiIsImF0b20kMCIsImV2ZW50c19raW5kJDEiLCJwcmVkcyQwIiwicHJlY18xJDAiLCJsYXN0X3Rlc3RlZCQyIiwibGFzdF9tb2RpZiQxIiwiY29uZmlnJDMiLCJsYXN0X21vZGlmIiwibGFzdF90ZXN0ZWQiLCJhdHRyaWJ1dGUkMCIsImF0b20iLCJldmVudHNfa2luZCQwIiwicHJlZHMiLCJwcmVjXzEiLCJjb25maWckMCIsImV2ZW50c19raW5kIiwiY2ZsY3Rfc2V0IiwiY2ZsY3QiLCJjb25maWckMiIsImxhc3RfdGVzdGVkJDEiLCJwcmVkX2lkIiwicHJlZF9zZXQiLCJjb25maWckMSIsImxhc3RfdGVzdGVkJDAiLCJsYXN0X21vZGlmJDAiLCJjZmckMCIsInJlZHVjdGlvbiIsInJlZHVjdGlvbiQwIiwiaWRzX29mX2dyaWQiLCJrZXkiLCJwcmVjX3N0YXJfb2ZfY29uZmlnIiwiZW5yaWNoX2dyaWQiLCJjb25maWdfY2xvc3VyZSIsImtlZXBfbCIsInRvX2tlZXAiLCJpZHMiLCJwcmVjX2VpZHMiLCJlbWFwIiwiZCIsImQkMCIsImRlcHRoIiwiZGVwdGhfb2ZfZXZlbnQiLCJmb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIiwiY2hlY2tfY3JlYXRlX3F1YXJrcyIsImFpZCIsInNpdGVzIiwicXVhcmtzIiwiaW50ZXJuYWwiLCJjaGVja19tb2RpZmllZF9xdWFya3MiLCJtb2RpZiIsImNoZWNrX3Rlc3RlZF9xdWFya3MiLCJjaGVja19ldmVudF9xdWFya3MiLCJhc2l0ZSIsImFzaXRlJDAiLCJhaWQkMCIsImFzaXRlMiIsImFzaXRlMSIsInByZXR0eV9wcmludCIsImRvdEZvcm1hdCIsImNvbXByZXNzaW9uX3R5cGUiLCJsYWJlbCIsImdyaWRfbGlzdCIsImVycl9mbXQiLCJjb21wcmVzc2lvbl90eXBlJDAiLCJ6IiwibGlzdCIsIngkMCIsInN0b3J5X2xpc3QiLCJzdG9yeV9saXN0JDAiLCJjcHQiLCJzdG9yaWVzIiwiZW5yaWNoZWRfY29uZmlnIiwic3RlcHMiLCJpbmZvIiwiYXZfdCIsImdyaWRfc3RvcnkiLCJ0YmwiLCJhdHRfbHMiLCJkbWFwIiwic29ydGVkX2V2ZW50cyIsIm5vZGVfdG9fanNvbiIsImV2ZW50X2tpbmQiLCJzdHAiLCJyaWQiLCJyaWQkMCIsInN0cCQwIiwic3RwJDEiLCJwZXJ0IiwicGVydCQwIiwic3RwJDIiLCJlaWRzX2F0X2QiLCJscyIsImxzJDAiLCJub2Rlc190b19saXN0Iiwibm9kZXNfdG9fanNvbiIsImVkZ2VfdG9fanNvbiIsImVpZCQwIiwicHJlY19lZGdlcyIsInByZWNfZWRnZXNfdG9fanNvbiIsInByZWMkMSIsInByZWMkMiIsImJvb2wiLCJjb25mbF9lZGdlcyIsImNvbmZsX2VkZ2VzX3RvX2pzb24iLCJwcm9maWxpbmciLCJkZXNjIiwidGl0bGUiLCJhdG9tX2tpbmQiLCJwcm9maWxpbmckMCIsIm5hbWUiLCJzdG9yeSIsInNpemUiLCJ0aW1lIiwicHJpbnRfc3RhdCIsImVucmljaGVkX2dyaWQiLCJjb3VudF9vYnMiLCJuX3N0ZXAiLCJsb25nZXN0X3N0b3J5Iiwibl9ub25lbXB0eSIsImxlbmd0aF9zdW0iLCJsZW5ndGhfc3F1YXJlX3N1bSIsImNjIiwiY2MkMCIsImxlbmd0aF9zcXVhcmVfc3VtJDAiLCJsZW5ndGhfc3VtJDAiLCJuX25vbmVtcHR5JDAiLCJsb25nZXN0X3N0b3J5JDAiLCJuX3N0ZXAkMCIsImskMCIsInN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyIsInBpIiwiYWckMSIsImNvbXBhcmUiLCJwcmludCIsImVtcHR5IiwiaXRlciIsImhhc2giLCJwcmVkaWNhdGUiLCJsaWZ0IiwicHJlZGljYXRlX2lkIiwidGFiIiwiZmluZF9kZWZhdWx0IiwiZGVmIiwiZmluZF9vcHRpb24iLCJtZW0iLCJyZWN5Y2xlIiwicHJlZGljYXRlX21heCIsImVtcHR5JDAiLCJpdGVyJDAiLCJmaW5kX2RlZmF1bHQkMCIsImZpbmRfb3B0aW9uJDAiLCJtZW0kMCIsImFkZCQwIiwiY2F1c2FsIiwid2VhayIsInN0cm9uZyIsIm1pbl9sZXZlbCIsImhpZ2hlc3QiLCJoaWdoIiwiYWJvdmVfYXZlcmFnZSIsImF2ZXJhZ2UiLCJiZWxsb3dfYXZlcmFnZSIsImxvdyIsImxvd2VzdCIsInN0cmluZ19vZl9sZXZlbCIsImxldmVsIiwibG93ZXIiLCJoaWdoZXIiLCJuX3N0b3J5Iiwibl9icmFuY2giLCJzdGFydCIsImlucHJvZ3Jlc3MiLCJzdWNjZXNzIiwiZmFpbGx1cmUiLCJpbnRfb2ZfanNvbiIsIm1lc3NhZ2VfdG9fanNvbiIsInByb2dyZXNzX2JhciIsIm9uZV9jb21wcmVzc2lvbiIsImxvZ19pbmZvX3RvX2pzb24iLCJuZXdfc3RvcnkiLCJpbnQkMCIsIm1lc3NhZ2Vfb2ZfanNvbiIsIngkMyIsImxvZ19pbmZvX29mX2pzb24iLCJsJDEiLCJsJDIiLCJ4JDEiLCJsJDMiLCJ4JDIiLCJwJDAiLCJnZXRfY2F1c2FsX3RyYWNlIiwiZ2V0X2NhdXNhbF90cmFjZV9vbmx5IiwiZ2V0X3dlYWtfY29tcHJlc3Npb24iLCJnZXRfc3Ryb25nX2NvbXByZXNzaW9uIiwiZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSIsImJ1aWxkX3BhcmFtZXRlciIsImNhbGxlZF9mcm9tIiwibm9uZSIsInNlbmRfbWVzc2FnZSIsImxvZ19zdGVwX2NoYW5uZWwkMCIsIm91dF9jaGFubmVsX3Byb2ZpbGluZyQwIiwib3V0X2NoYW5uZWxfZXJyJDAiLCJvdXRfY2hhbm5lbCQwIiwib3V0X3NlcnZlciIsInNlcnZlciIsImNoYW5uZWwiLCJsb2dfc3RlcF9jaGFubmVsJDEiLCJvdXRfY2hhbm5lbF9wcm9maWxpbmckMSIsIm91dF9jaGFubmVsX2VyciQxIiwib3V0X2NoYW5uZWwkMSIsIm91dF9zZXJ2ZXIkMCIsInNldF9jb21wcmVzc2lvbl93ZWFrIiwic2V0X2NvbXByZXNzaW9uX3N0cm9uZyIsInNldF9jb21wcmVzc2lvbl9ub25lIiwiaW5pdF9oYW5kbGVyIiwibl9ydWxlcyIsInJ1bGVfbmFtZV9jYWNoZSIsInIiLCJuX2FnZW50cyIsImFnZW50X25hbWVfY2FjaGUiLCJzdGVwc19ieV9jb2x1bW4iLCJzdHJpbmdfb2ZfZXhuIiwiZ2V0X3ByaW9yaXRpZXMiLCJzZXRfZmlyc3Rfc3RvcnlfcGVyX29icyIsInNldF9hbGxfc3Rvcmllc19wZXJfb2JzIiwiZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMiLCJnZXRfZGVidWdnaW5nX21vZGUiLCJzZXRfZGVidWdnaW5nX21vZGUiLCJnZXRfbG9nX3N0ZXAiLCJzZXRfbG9nX3N0ZXAiLCJnZXRfbG9nZ2VyIiwic2V0X2xvZ2dlciIsImZtdCIsImdldF9vdXRfY2hhbm5lbCIsInNldF9vdXRfY2hhbm5lbCIsImdldF9kZWJ1Z2dpbmdfY2hhbm5lbCIsInNldF9kZWJ1Z2dpbmdfY2hhbm5lbCIsImdldF9rYXNhX3BhcmFtZXRlcnMiLCJzZXRfa2FzYV9wYXJhbWV0ZXJzIiwicGFyYW1ldGVyJDAiLCJkb193ZV91c2VfYnVja2V0X3NvcnQiLCJ1c2VfYnVja2V0X3NvcnQiLCJ1c2VfZnVzaW9uX3NvcnQiLCJhbHdheXNfZGlzYW1iaWd1YXRlIiwic2V0X2Fsd2F5c19kaXNhbWJpZ3VhdGUiLCJkb19ub3RfYm91bmRfaXR0ZXJhdGlvbnMiLCJzZXRfaXR0ZXJhdGlvbl9ib3VuZCIsImdldF9ib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciIsImdldF9wcm9maWxpbmdfbG9nZ2VyIiwic3RyaW5nX29mX3J1bGVfaWQiLCJzdHJpbmdfb2ZfYWdlbnRfaWQiLCJnZXRfcHJlZGljYXRlX21hcCIsImdldF9pc190aW1lX2luZGVwZW5kZW50IiwiZ2V0X2JsYWNrbGlzdF9ldmVudHMiLCJpc19zZXJ2ZXJfbW9kZSIsImdldF9zZXJ2ZXJfY2hhbm5lbCIsInNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCIsImlzX3NlcnZlcl9jaGFubmVsX29uIiwic2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIiwiZHVtcF9qc29uIiwibWVzc2FnZSIsInJlc2V0X3Byb2dyZXNzX2JhciIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJzZXRfc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIiwic2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJzZXRfc2F2ZV9wcm9ncmVzc19iYXIiLCJzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIiwic2F2ZV9lcnJvcl9sb2ciLCJzZXRfc2F2ZV9lcnJvcl9sb2ciLCJwdXNoX2pzb24iLCJqc29uIiwicmVmIiwicG9wX2pzb24iLCJlbHRfb3B0IiwiZmlmbyIsImRlYnVnX21vZGUiLCJjb21wb3NlX3dpdGhfaGFuZGxlciIsImVtcHR5X3NpZGVfZWZmZWN0Iiwic2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfaWRfb2ZfYWdlbnQiLCJhZ2VudF9uYW1lX29mX2FnZW50IiwiYWdlbnRfb2Zfc2l0ZSIsImFnZW50X2lkX29mX3NpdGUiLCJhZ2VudF9uYW1lX29mX3NpdGUiLCJzaXRlX25hbWVfb2Zfc2l0ZSIsImdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIiwiZ2V0X3RpbWVfb2ZfcmVmaW5lZF9zdGVwIiwiZ2V0X2lkX29mX3JlZmluZWRfc3RlcCIsImJ1aWxkX2dyaWQiLCJlbXB0eV9zZXQiLCJzaWRlIiwic3VicyIsInNpZGVfZWZmZWN0IiwibWF5YmVfc2lkZV9lZmZlY3QiLCJzZSIsInRyYW5zbGF0ZSIsImlkIiwiZXZlbnQkMCIsInNpZGVfZWZmZWN0c19kc3QiLCJpbmZvJDAiLCJldmVudCQxIiwiaWQkMCIsImV2ZW50JDIiLCJzaWRlX2VmZmVjdHNfZHN0JDAiLCJhY3Rpb25zJDAiLCJpbmZvJDEiLCJpZCQxIiwidGVzdHMkMCIsImNsZWFuX2V2ZW50cyIsInByaW50X3NpZGVfZWZmZWN0IiwibG9nIiwic2lkZV9lZmZlY3Rfb2ZfbGlzdCIsImxldmVsX29mX2V2ZW50IiwicHJpb3JpdHlfb3B0IiwicHJpb3JpdGllcyIsInByaW9yaXR5IiwiYWdfaWQiLCJkaXNhbWJpZ3VhdGUiLCJldmVudF9saXN0IiwibWFwcGluZyIsInVzZWQiLCJtYXhfaWQiLCJtYXBwaW5nJDAiLCJ1c2VkJDAiLCJtYXhfaWQkMCIsImEkMSIsImV2ZW50X2xpc3RfcmV2IiwiY29udmVydF9pbml0IiwicmVtYW5lbnQiLCJzdGVwX2xpc3QiLCJhY3Rpb25fbGlzdCIsInJlY3VyIiwiYWNjIiwic291cCIsImFjYyQyIiwic2l0ZV9saXN0Iiwic291cCQwIiwidGhpcyQwIiwic3RhbmRhbG9uZSIsInRoaXMkMSIsIm1hcCIsInUiLCJhZ2VudF9pbmZvIiwiYXNfaW5pdCIsInJlc3RyaWN0aW9uX21hcCIsImFnaWQiLCJyZXN0cmljdGlvbiIsInVuYmluZCIsInJlbSIsInNfbmFtZSIsImFnX2luZm8iLCJhZ19pbmZvJDAiLCJyZW1hbmVudCQwIiwiYmluZCIsInNwbGl0X2luaXQiLCJyZWZpbmVkX3N0ZXBfbGlzdCIsInJlZmluZWRfc3RlcCIsImFkZF9pbl9zY29wZSIsInNjb3BlIiwib2xkX3NldCIsIm5ld19zZXQiLCJkZWFsX3dpdGhfdGVzdHMiLCJmaWxsX3NpcGhvbiIsInJldl90cmFjZSIsInNjb3BlJDEiLCJzY29wZSQwIiwicmVmaW5lZF9zdGVwX3dpdGhfc2NvcGVfbGlzdCIsInN0YXRlIiwic3RhdGVfcmVmIiwiYWdfaW5mbyQxIiwicmVtYW5lbnQkMSIsInNldCQwIiwiYWdlbnRfaWRfaW5fb2JzIiwicHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMiLCJzaWRlcyIsInNfaWQiLCJpbml0X2N1dCIsImZpbmFsaXplX2N1dCIsImN1dF9zdGVwIiwibl9jdXQiLCJrZXB0Iiwic2VlbiIsImFjdGlvbiIsImludGVyZmFjZSQwIiwibGlzdCQwIiwiZWx0Iiwic2VlbiQwIiwicTAiLCJhZ19pZCQwIiwiczIiLCJzMSIsInExIiwidDEiLCJrZXB0JDAiLCJ0ZXN0IiwiYWdlbnQiLCJwcmVkaWNhdGVfaW5mbyIsInNlZW4kMSIsInNlZW4kMiIsImN1dF9yZXZfdHJhY2UiLCJyZXZfZXZlbnRfbGlzdCIsInRyYWNlIiwiY2xlYW4iLCJjb2x1bW4iLCJibGFja2JvYXJkIiwidGFpbCIsImhlYWQiLCJjb2x1bW4kMCIsImJsYWNrYm9hcmQkMCIsInBvcCIsInByZWRpY2F0ZV9saXN0IiwiYmxhY2tib2FyZCQxIiwibl9zdGVwcyIsInN0ZXAiLCJibGFja2JvYXJkJDMiLCJwcmVfZXZlbnQiLCJ0ZXN0X2xpc3QiLCJ1bmFtYmlndW91c19zaWRlX2VmZmVjdHMiLCJidWlsZF9tYXBfdGVzdCIsInByZWRpY2F0ZV9pZCQwIiwicHJlZGljYXRlX2lkJDEiLCJhZ19pZCQxIiwic2l0ZV9pZCQwIiwicHJlZGljYXRlX2lkJDIiLCJhZ19pZCQyIiwic2l0ZV9pZCQxIiwicHJlZGljYXRlX2lkJDMiLCJhZ19pZDEiLCJhZ19pZDIiLCJzaXRlX2lkMSIsInNpdGVfaWQyIiwicHJlZGljYXRlX2lkMSIsInByZWRpY2F0ZV9pZDIiLCJ0ZXN0X21hcCIsImJvb2xfY3JlYXRpb24iLCJhY3Rpb25fbWFwIiwibGlzdDIiLCJsaXN0MSIsImxpc3QxJDAiLCJsaXN0MiQwIiwiYWdlbnRfbmFtZTEiLCJhZ2VudF9uYW1lMiIsInMyJDAiLCJzMSQwIiwiYWdfaWQxJDAiLCJhZ19pZDIkMCIsImFnZW50X25hbWUyJDAiLCJzaXRlX2lkMSQwIiwic2l0ZV9pZDIkMCIsInByZWRpY2F0ZV9pZDEkMCIsImJvb2xfY3JlYXRpb24kMCIsImJvb2wkMCIsImJvb2xfY3JlYXRpb24kMSIsImJvb2wkMSIsInZhbHVlIiwiaXNfcmVtb3ZlX2FjdGlvbiIsInRlc3RfbWFwJDAiLCJtZXJnZWRfbWFwIiwibWFwJDAiLCJhY3Rpb24kMCIsInRlc3QkMCIsInRlc3QkMSIsImFjdGlvbiQxIiwibWVyZ2VkX21hcCQwIiwibnNpZCIsIm1vZF93aXRob3V0X3Rlc3QiLCJuX21vZGlmaWNhdGlvbnMiLCJvbGRfbGlzdCIsInYiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJtb2Rfd2l0aG91dF90ZXN0JDAiLCJtb2Rfd2l0aG91dF90ZXN0JDEiLCJib29sX2FjdGlvbiIsIm5fbW9kaWZpY2F0aW9ucyQwIiwicHJlX3N0ZXBzX2J5X2NvbHVtbiIsImJsYWNrYm9hcmQkMiIsInByZWRpY2F0ZV9saXN0JDAiLCJwcmVkaWNhdGVfbGlzdCQxIiwieSQwIiwiY2FuZGlkYXRlcyIsImVpZGIiLCJlaWRhIiwiY29sdW1uJDEiLCJjb2x1bW4kMiIsInRvX3BvcCIsImUyIiwiZTEiLCJibGFja2JvYXJkJDQiLCJibGFja2JvYXJkJDUiLCJlcnJvciQzIiwiayQyIiwibGlzdCQxIiwiayQxIiwid2FybiIsInBvcyIsImV4biIsImRlZmF1bHQkMCIsInplcm9fc3RlcF9pZCIsImR1bW15X3N0ZXBfaWQiLCJpbnRfb2Zfc3RlcF9pZCIsInN0ZXBfaWRfb2ZfaW50IiwiZGVjX3N0ZXBfaWQiLCJpbmNfc3RlcF9pZCIsInplcm9fc3RlcF9zaG9ydF9pZCIsImR1bW15X3N0ZXBfc2hvcnRfaWQiLCJpbnRfb2Zfc3RlcF9zaG9ydF9pZCIsInN0ZXBfc2hvcnRfaWRfb2ZfaW50IiwiaW5jX3N0ZXBfc2hvcnRfaWQiLCJkZWNfc3RlcF9zaG9ydF9pZCIsIndlYWtlbmluZyIsImRlZmluZWQiLCJ1bmRlZmluZWQkMCIsInVua25vd24iLCJpc191bmtub3duIiwiaXNfdW5kZWZpbmVkIiwiY29tcGFyZSQwIiwicHJpbnQkMCIsImNvbXBhcmUkMSIsInByaW50JDEiLCJsZXZlbHMiLCJnZXRfcHJlX2NvbHVtbl9tYXBfaW52IiwiZ2V0X3ByZV9ldmVudCIsInByaW50X3ByZWRpY2F0ZV9pbmZvIiwiaSQwIiwiaSQxIiwiaW50NCIsImludDMiLCJpbnQyIiwiaW50MiQwIiwiaW50JDEiLCJpbnQyJDEiLCJpbnQkMiIsImludDMkMCIsImludDIkMiIsImludCQzIiwiaWQyIiwiaWQxIiwicHJpbnRfa25vd24iLCJzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIiwiYWdlbnRfaWQiLCJpbnRlcm5hbF9zdGF0ZSIsImFnZW50X25hbWUiLCJhZ2VudF9pZCQwIiwicHJpbnRfcHJlZGljYXRlX3ZhbHVlIiwicHJpbnRfcHJlZGljYXRlX2lkIiwicHJpbnRfcHJlYmxhY2tib2FyZCIsIm5ldmVudHMiLCJzZWlkIiwic3RyaWN0bHlfbW9yZV9yZWZpbmVkIiwibW9yZV9yZWZpbmVkIiwiY29uaiIsImNvbXBhdGlibGUiLCJkaXNqdW5jdGlvbiIsImFsbG9jYXRlIiwibWFwX2ludiIsInNpZCQwIiwic2lkIiwiY3JlYXRlX2FnZW50IiwibmV3X2xpc3QiLCJmcmVlX2FnZW50IiwiZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMiLCJwcmVkaWNhdGVzX29mX2FjdGlvbl9ub19zdWJzIiwibG9nX2luZm8kMyIsImVycm9yJDQiLCJsb2dfaW5mbyQ0IiwiZXJyb3IkNSIsImJsYWNrYm9hcmQkNiIsImxvZ19pbmZvJDUiLCJlcnJvciQ2IiwiYmxhY2tib2FyZCQ3IiwibG9nX2luZm8kNiIsImVycm9yJDciLCJwcmVkaWNhdGVfaWQyJDAiLCJibGFja2JvYXJkJDgiLCJsb2dfaW5mbyQ3IiwiZXJyb3IkOCIsImJsYWNrYm9hcmQkOSIsImxvZ19pbmZvJDgiLCJlcnJvciQ5IiwiYmxhY2tib2FyZCQxMCIsImxvZ19pbmZvJDkiLCJlcnJvciQxMCIsImJsYWNrYm9hcmQkMTEiLCJsb2dfaW5mbyQxMCIsImVycm9yJDExIiwicHJlZGljYXRlaWQiLCJibGFja2JvYXJkJDEyIiwiZXJyb3IkMTIiLCJwcmVkaWNhdGVzX29mX2FjdGlvbl9zdWJzIiwicHJlZGljYXRlc19vZl9hY3Rpb24iLCJwcmVkaWNhdGVzX29mX3Rlc3QiLCJzaXRlX25hbWUiLCJ0eXBlX29mX3N0ZXAiLCJnZXRfbGV2ZWxfb2ZfZXZlbnQiLCJpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIiwiaW5pdF9zdGVwIiwibnNpZCQwIiwiYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIiwidmFsdWUkMCIsInByZWRpY2F0ZV90YXJnZXRfaWQiLCJzbmFtZSIsInByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YSIsImJ0IiwicG90ZW50aWFsX3RhcmdldCIsImJpbmRpbmdfc3RhdGUiLCJmb3JtZXJfc3RhdGVzIiwiYnQkMCIsImluaXRfZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nIiwiYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyIsImRhdGFfc3RydWN0dXJlIiwiYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIiwiZGF0YV9zdHJ1Y3R1cmUkMCIsImFkZF9zdXJlX3Rlc3QiLCJhZGRfc3Vic190ZXN0IiwiYWRkX3N1YnNfdGVzdF9saW5rIiwibGluayIsImxpbmskMCIsImRhdGFfc3RydWN0dXJlJDEiLCJhZGRfc3VyZV9hY3Rpb24iLCJhZGRfc3Vic19hY3Rpb24iLCJhZGRfc3Vic19hY3Rpb25fbGluayIsImFkZF9zdGVwX3N0cm9uZyIsInN0ZXBfaWQiLCJhZzFfaWQiLCJhZzJfaWQiLCJzaXRlMV9pZCIsInNpdGUyX2lkIiwidGVzdGVkX3NpdGVzIiwibW9kX3NpdGVzIiwicHJpb3JpdHlfc2l0ZXMiLCJzdXJlX2FnZW50cyIsInN1cmVfYWdlbnQiLCJhZ2VudDEiLCJhZ2VudDIiLCJtaXhfc2l0ZTEiLCJtaXhfc2l0ZTIiLCJkYXRhX3N0cnVjdHVyZSQyIiwiZGF0YV9zdHJ1Y3R1cmUkMyIsImFnZW50JDAiLCJzaXRlX25hbWUxIiwic2l0ZV9uYW1lMiIsIndlYWsxIiwid2VhazIiLCJhZ2VudCQxIiwiZGF0YV9zdHJ1Y3R1cmUkNCIsImRhdGFfc3RydWN0dXJlJDUiLCJkYXRhX3N0cnVjdHVyZSQ2IiwiYTIiLCJhMSIsInNpZGVfZWZmZWN0JDAiLCJhY3Rpb25fbGlzdCQwIiwidGVzdF9saXN0JDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QiLCJmaWN0aXRpb3VzX2xpc3QiLCJtaXh0dXJlX2FnZW50X2lkX211dGV4IiwicnVsZV9hZ2VudF9pZF9zdWJzIiwicnVsZV9hZ2VudF9pZF9tdXRleCIsImluaXRfc3RlcCQwIiwicnVsZV9hZ2VudF9pZF9tdXRleCQwIiwiZmljdGl0aW91c19sb2NhbF9saXN0JDAiLCJmaWN0aXRpb3VzX2xpc3QkMCIsInByZWRpY2F0ZV9pbmZvJDAiLCJydWxlX2FnZW50X2lkX3N1YnMkMCIsImluaXRfc3RlcCQxIiwiaW5pdF9zdGVwJDIiLCJydWxlX2FnZW50X2lkX3N1YnMkMSIsIm1peHR1cmVfYWdlbnRfaWRfbXV0ZXgkMCIsImluaXRfc3RlcCQzIiwibGlua3NfbXV0ZXgiLCJsaW5rc19tdXRleCQwIiwiZmljdGl0aW91c19saXN0JDEiLCJidWlsZF9tYXAiLCJhZGRfc3RhdGUiLCJmYWRkIiwibnNpZF92b2lkIiwibnNpZF9uZXh0Iiwic2lkZV9lZmZlY3QkMSIsInRlc3RfbGlzdCQxIiwicG90ZW50aWFsX3RhcmdldCQwIiwicnVsZV9hZ19pZCIsImZpY3RpdGlvdXNfbGlzdCQyIiwic2lkZV9lZmZlY3QkMiIsInN0ZXBfaWQkMCIsInByZV9zdGVwc19ieV9jb2x1bW4kMCIsIm9ic2VydmFibGVfbGlzdCQwIiwiYmxhY2tib2FyZCQxNCIsIm5saXN0IiwibWl4dHVyZV9hZ19pZCIsInBpZF9ydWxlX2FnZW50X211dGV4IiwicGlkX3J1bGVfYWdlbnRfbXV0ZXgkMCIsInRlc3RfbWFwJDEiLCJhY3Rpb25fbWFwJDAiLCJtX2lkIiwiYWN0aW9uX21hcCQyIiwidGVzdF9tYXAkMiIsIm5saXN0JDAiLCJtZXJnZWRfbWFwJDEiLCJtZXJnZWRfbWFwJDIiLCJsaW5rX211dGV4IiwicnVsZV9hZ19pZDIiLCJydWxlX2FnX2lkMSIsImxfYWdfMSIsImxfYWdfMiIsIm1peHR1cmVfYWdfMSIsInN1YnMkMCIsIm1peHR1cmVfYWdfMiIsImFjdGlvbl9saXN0JDEiLCJtX2lkJDAiLCJmaWN0aXRpb3VzX2xpc3QkMyIsInVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyQwIiwiZmljdGl0aW91c19sb2NhbF9saXN0JDEiLCJmaWN0aXRpb3VzX2xpc3QkNCIsImxvZ19pbmZvJDExIiwiZXJyb3IkMTMiLCJtZXJnZWRfbWFwJDMiLCJtZXJnZWRfbWFwJDQiLCJzaWRlX2VmZmVjdCQzIiwib2JzZXJ2YWJsZV9saXN0IiwiYmxhY2tib2FyZCQxMyIsImFkZF9zdGVwIiwiZmluYWxpemUiLCJoZXVyaXN0aWMiLCJhZ2VudHNfaW5fb2JzIiwibl9wcmVkaWNhdGVzIiwiZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUiLCJuX2V2ZW50c19wZXJfcHJlZGljYXRlIiwibl9ldmVudHMiLCJtYW5kYXRvcnlfZXZlbnRzIiwiZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSIsImdldF9zaWRlX2VmZmVjdCIsImlnbm9yZSIsImZhaWwiLCJpc19pZ25vcmVkIiwiaXNfZmFpbGVkIiwiaXNfc3VjY2VlZGVkIiwibnVsbF9wb2ludGVyIiwicG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCIsImlzX2JlZm9yZV9ibGFja2JvYXJkIiwiYnVpbGRfcG9pbnRlciIsInByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MiLCJpc19ib3VuZGFyeSIsImV2ZW50X2FkZHJlc3MiLCJidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MiLCJpc19leGlzdF9ldmVudCIsIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIiwibl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fIiwicG9pbnRlcl90b19uZXh0IiwidmFsdWVfYWZ0ZXIiLCJwb2ludGVyX3RvX3ByZXZpb3VzIiwibl91bnJlc29sdmVkX2V2ZW50cyIsIm5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwiLCJleGlzdCIsInN0cmluZ19vZl9wb2ludGVyIiwicHJlZGljYXRlX3ZhbHVlIiwicG9pbnRlciIsImJvb2xlYW4kMCIsImNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZCIsInByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIiwiY2FzZV92YWx1ZSIsInkkMSIsImxpbmUiLCJmaWxlIiwiZHVtbXlfY2FzZV9pbmZvX3N0YXRpYyIsImR1bW15X2Nhc2VfaW5mb19keW5hbWljIiwiY29ycmVjdF9wb2ludGVyIiwiaW50X3NlaWQiLCJkdW1teV9jYXNlX2luZm8iLCJwcm9maWxpbmdfaW5mbyIsImdldF9ldmVudCIsImdldF9uX2VpZCIsImdldF9zdGFja19kZXB0aCIsImZvcmNlZF9ldmVudHMiLCJzaWRlX2VmZmVjdF9vZl9ldmVudCIsImNhc2VfbGlzdF9vZl9laWQiLCJnZXRfY2FzZSIsImNhc2VfYWRkcmVzcyIsImdldF9zdGF0aWMiLCJhZGRyZXNzIiwiY2FzZSQwIiwic3RhdGljJDAiLCJwcmludF9ldmVudF9jYXNlX2FkZHJlc3MiLCJnZXRfbnByZWRpY2F0ZV9pZCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCQwIiwiZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMiLCJmb2xsb3dfcG9pbnRlcl9kb3duIiwiZm9sbG93X3BvaW50ZXJfdXAiLCJnZXRfZmlyc3RfbGlua2VkX2V2ZW50IiwiZ2V0X2xhc3RfbGlua2VkX2V2ZW50IiwicHJpbnRfa25vd25fY2FzZSIsInByZWYiLCJpbmYiLCJzdWYiLCJzdHJpbmdfb2ZfdmFsdWUiLCJwYiIsInByaW50X2Fzc2lnbm1lbnQiLCJpJDIiLCJpJDMiLCJpJDQiLCJpJDUiLCJpJDYiLCJpJDciLCJsb2ckMCIsImkkOCIsInByaW50X2JsYWNrYm9hcmQiLCJlcnIiLCJhcnJheSIsImokMiIsImokMCIsInN0YXR1cyIsImokMSIsInN0YWNrIiwiZW1wdHlfc3RhY2siLCJleGlzdF9jYXNlIiwic2V0X2Nhc2UiLCJjYXNlX2FkZHJlc3MkMCIsImNhc2VfdmFsdWUkMCIsImNhc2VfYWRkcmVzcyQxIiwib2xkJDAiLCJjYXNlX3ZhbHVlJDEiLCJjYXNlX2FkZHJlc3MkMiIsIm9sZCQxIiwiY2FzZV92YWx1ZSQyIiwibGV2ZWwkMCIsImNhc2VfYWRkcmVzcyQzIiwib2xkJDIiLCJjYXNlX3ZhbHVlJDMiLCJpc19zZWxlY3RlZF9ldmVudCIsImdldCIsImNhc2UkMSIsImNhc2UkMiIsImNhc2VfYWRkcmVzcyQ0IiwiY2FzZV9hZGRyZXNzJDUiLCJjYXNlJDMiLCJsdmwiLCJjYXNlX2FkZHJlc3MkNiIsImNhc2UkNCIsImV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyIsInByZWZpeCIsImZpbGVfbmFtZSIsImRlc2NfY2hhbiIsInJvd19vZl9wcmVjb25kaXRpb24iLCJjb2xvcnMiLCJiYWNrY29sb3IiLCJjb2xvciIsImNvbG9yJDAiLCJ0ZXh0Y29sb3IiLCJnZXRjZWxsIiwicm93IiwiY29sIiwicHJpbnRfY2FzZSIsImNvbG9yX2ZvbnQiLCJjb2xvcl9iYWNrIiwicHJpbnRfY2FzZV9mdW4iLCJwX2luZm8iLCJyb3dfcHJlY29uZGl0aW9uIiwicm93X3Bvc3Rjb25kaXRpb24iLCJtYXliZWtlcHQiLCJlaWQkMSIsInN0cmluZ19laWQiLCJ2YWx1ZV9iZWZvcmUiLCJjYW5kIiwic3RyaW5nX2VpZCQwIiwic3RhY2skMCIsInN0YWNrJDEiLCJyZWNvcmRfbW9kaWYiLCJyZWZpbmUiLCJvdmVyd3JpdGUiLCJkZWMiLCJicmFuY2giLCJyZXNldF9sYXN0X2JyYW5jaGluZyIsInJlc2V0X2luaXQiLCJpc19tYXhpbWFsX3NvbHV0aW9uIiwidHJhbnNsYXRlX2JsYWNrYm9hcmQiLCJzdGVwX2FycmF5Iiwic2lkZV9hcnJheSIsInByaW50X3N0YWNrIiwiZXZlbnRfbGlzdCQyIiwiZXZlbnRfYXJyYXkiLCJrZXB0X2V2ZW50cyIsImtlcHRfZXZlbnRzJDAiLCJrZXB0X2V2ZW50cyQxIiwiZXZlbnRfbGlzdCQwIiwiZXZlbnRfY2FzZV9hZGRyZXNzIiwicG9pbnRlciQwIiwicHJldl9ldmVudF9jYXNlX2FkZHJlc3MiLCJwcmV2X2Nhc2UiLCJwcmV2X2VpZCIsInBvaW50ZXIkMSIsInByZXZfZWlkJDAiLCJrZXB0X2V2ZW50cyQyIiwiZXZlbnRfbGlzdCQxIiwiZXZlbnRzX3RvX2tlZXAiLCJuX2V2ZW50c19yZW1vdmVkIiwiY3V0X2NhdXNhbF9mbG93IiwiaW1wb3J0JDAiLCJwcmVibGFja2JvYXJkIiwicmVmaW5lZF9ldmVudCIsInByZWJsYWNrYm9hcmQkMCIsInRvX3hscyIsInByZWJsYWNrYm9hcmQkMSIsInByZWJsYWNrYm9hcmQkMyIsInRvX3hscyQwIiwic3RyaW5nJDAiLCJwcmVibGFja2JvYXJkJDQiLCJwcmVibGFja2JvYXJkJDIiLCJwcmVfYmxhY2tib2FyZCIsImV2ZW50X2Nhc2VfbGlzdCIsIm5fc2VpZCIsInVuc29sdmVkX2J5X2xldmVsIiwibGV2ZWxfb3B0JDEiLCJsZXZlbF9vcHQiLCJ3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmUiLCJsZXZlbF9vcHQkMCIsIndlaWd0aF9vZl9wcmVkaWNhdGVfaWQiLCJsYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGUiLCJwX2lkJDEiLCJwX2lkIiwic2l6ZSQwIiwic2VpZCQxIiwidHJpcGxlIiwic2l6ZSQxIiwidW5zb2x2ZWQiLCJzZWlkJDAiLCJwcmVkX3NpemUiLCJwX2lkJDAiLCJ1bnNvbHZlZF9ieV9sZXZlbCQwIiwibGV2ZWwkMSIsIm1hcCQxIiwibG9nX2luZm8kMTIiLCJmaWN0aXRpb3VzX29icyIsImxvZ19pbmZvJDEzIiwibG9va191cF9mb3JfYmV0dGVyX2N1dCIsImxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCIsImR1bW15X3VwZGF0ZV9vcmRlciIsImZvcmJpZGRlbl9ldmVudHMiLCJwYXJhbXRlciIsImdldF9nZW5fdW5yZXNvbHZlZF9ldmVudF9vbl9waSIsImZpcnN0Iiwic3RvcCIsImtfaW5pdCIsImtfZW5kIiwiZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IiwibmV4dF9jaG9pY2UiLCJwcmlvcml0eSQwIiwibl9wX2lkIiwibGV2ZWxfb3B0JDIiLCJiZXN0JDEiLCJiZXN0IiwiZ3JhZGUiLCJiZXN0JDAiLCJzdGVwJDAiLCJldmVudF9pZCIsImV2ZW50X2lkJDAiLCJwcm9wYWdhdGVfZG93biIsImluc3RydWN0aW9uX2xpc3QiLCJwcm9wYWdhdGVfbGlzdCIsIm5leHRfZXZlbnRfY2FzZV9hZGRyZXNzIiwiYm9vbDIiLCJuZXh0X2FjdGlvbiIsIm5leHRfdGVzdCIsInByZWRpY2F0ZV92YWx1ZSQwIiwiY29uaiQwIiwibG9nX2luZm8kMTQiLCJsb2dfaW5mbyQxNSIsIm5leHRfYWN0aW9uJDAiLCJuZXh0X3Rlc3QkMCIsIm5leHRfZWlkIiwibG9nX2luZm8kMTYiLCJsb2dfaW5mbyQxNyIsImxvZ19pbmZvJDE4IiwibG9nX2luZm8kMTkiLCJjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSQwIiwibG9nX2luZm8kMjQiLCJsb2dfaW5mbyQyNSIsImNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlIiwibG9nX2luZm8kMjAiLCJsb2dfaW5mbyQyMSIsImxvZ19pbmZvJDIyIiwibG9nX2luZm8kMjMiLCJsYXN0X2NoYW5jZV91cCIsImV2ZW50X2Nhc2VfYWRkcmVzcyQwIiwicHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MiLCJwcmV2aWV3X2Nhc2VfYWRkcmVzcyIsInByZXZpZXdfY2FzZV92YWx1ZSIsInByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIiwicHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MkMCIsInByZXZpZXdfY2FzZV9hZGRyZXNzJDAiLCJwcmV2aWV3X2Nhc2VfdmFsdWUkMCIsInByZXZpZXdfcHJlZGljYXRlX3ZhbHVlJDAiLCJsYXN0X2NoYW5jZV91cCQwIiwicHJvcGFnYXRlX3VwIiwibG9nX2luZm8kMzEiLCJuZXdfcHJlZGljYXRlX3ZhbHVlIiwicHJldiIsImxvZ19pbmZvJDI5IiwiZXJyb3IkMTYiLCJsb2dfaW5mbyQzMCIsIm5ld190ZXN0IiwiZXJyb3IkMTQiLCJuZXdfcHJlZGljYXRlX3ZhbHVlJDAiLCJsb2dfaW5mbyQyNiIsImVycm9yJDE1IiwibG9nX2luZm8kMjciLCJsb2dfaW5mbyQyOCIsImxvZ19pbmZvJDMyIiwibG9nX2luZm8kMzMiLCJwcm9wYWdhdGUiLCJjdXRfY2FzZSIsInBvaW50ZXJfbmV4dCIsInBvaW50ZXJfcHJldmlvdXMiLCJyZXN1bHQiLCJsb29rX2Rvd24iLCJsaXN0X3ZhbHVlcyIsImNhIiwibmV4dF9jYXNlIiwicHJvcGFnYXRlX2xpc3QkMCIsImxvb2tfZG93biQwIiwicmVmaW5lX3ZhbHVlX2FmdGVyIiwicmVmaW5lX3ZhbHVlX2JlZm9yZSIsImRpc2NhcmRfY2FzZSIsInJlc3VsdCQwIiwiaW5zdHJ1Y3Rpb25fbGlzdCQwIiwicHJvcGFnYXRlX2xpc3QkMSIsImdlbl9ldmVudCIsImZfY2FzZSIsInN1Y2Nlc3MkMSIsInN1Y2Nlc3MkMCIsInN1Y2Nlc3MyIiwic3VjY2VzcyQyIiwiYXBwbHlfaW5zdHJ1Y3Rpb24iLCJpbnN0cnVjdGlvbiIsImluc3RydWN0aW9uX2xpc3QkMyIsInByb3BhZ2F0ZV9saXN0JDIiLCJyZXN1bHQkMSIsImluc3RydWN0aW9uX2xpc3QkMSIsImluc3RydWN0aW9uX2xpc3QkMiIsInN0ZXBfaWQkMSIsImFkZHJlc3MkMCIsImVtcHR5X2Nob2ljZV9saXN0IiwiYXNzaWduX3Jlc3VsdCIsImFzc2lnbl9yZXN1bHQkMCIsImJhY2t0cmFjayIsImNob2ljZV9saXN0IiwiY2hvaWNlX2xpc3QkMCIsImNob2ljZV9saXN0JDEiLCJzdWJsaXN0IiwiZGV0ZWN0X2luZGVwZW5kZW50X2V2ZW50cyIsImxpc3RfZWlkIiwidHJhbnNsYXRlX3Jlc3VsdCIsImZpbHRlciIsInNvbCIsInNvbCQwIiwic29sJDEiLCJldmVudHNfdG9fcmVtb3ZlIiwic3ViIiwiY29tcHJlc3MiLCJsaXN0X29yZGVyIiwiY2hvaWNlX2xpc3QkMiIsImNob2ljZV9saXN0JDMiLCJjaG9pY2VfbGlzdCQ0IiwiY2hvaWNlX2xpc3QkNSIsImNob2ljZSIsImNob2ljZV9saXN0JDYiLCJjaG9pY2VfbGlzdCQ3Iiwic3RvcnlfbGlzdCQxIiwiZ29vZG9uZXMkMSIsInRvX3Zpc2l0IiwidG9fdmlzaXQkMCIsImdvb2RvbmVzIiwiZ29vZG9uZXMkMCIsImgkMSIsInRvX3Zpc2l0JDEiLCJibGFja19saXN0IiwiaXNfYmxhY2tfbGlzdGVkIiwiZHVtbXlfZ3JhcGgiLCJjb21wYXJlX2VsdCIsInF1aWNrX2NvbXBhcmUiLCJ0MiIsImF1eCIsImwyJDEiLCJjb21wYXJlX2Nhbm9uaWMiLCJncmFwaF9vZl9ncmlkIiwic3VjY19zaXplIiwibGFiZWxzIiwiY29uZmxpY3RfcHJlZCIsImxpc3QyJDIiLCJsaXN0MiQxIiwibGlzdDEkMSIsImNvbXBhcmVfbm9kZSIsInByZWhhc2giLCJ3ZWlnaHQkMiIsImZvcm1lciQxIiwiZm9ybWVyIiwid2VpZ2h0IiwiZm9ybWVyJDAiLCJ3dCIsIndlaWdodCQwIiwid2VpZ2h0JDEiLCJjYW5vbmljYWxpemUiLCJhc3NvIiwiY2FuZGlkYXRlIiwidG9fYmVhdCIsImNhbmRpZGF0ZSQwIiwidG9fYmVhdCQwIiwiY2FuZGlkYXRlJDEiLCJxciIsInRyIiwidG9fYmVhdCQxIiwidmlzaXQiLCJmcmVzaF9wb3MiLCJmcmVzaF9wb3MkMCIsInNpYmJsaW5nMSIsInNpYmJsaW5nMiIsIm0kMCIsImNhbmRpZGF0ZXMkMSIsIm5vdF9iZXN0IiwiY2FuZGlkYXRlcyQwIiwicmVzaWR1ZSIsImZyZXNoIiwiZW5jb2RpbmciLCJ0b19iZWF0X2FmdGVyIiwibm90X2Jlc3QkMCIsInJlY29yZCQwIiwibm90X2Jlc3QkMSIsInJlY29yZCQxIiwicmVjb3JkJDIiLCJub3RfYmVzdCQyIiwidG9fYmVhdF9hZnRlciQwIiwic2liYmxpbmcxJDAiLCJ0b19iZWF0JDIiLCJmcmVzaF9wb3MkMSIsInRvX2JlYXQkMyIsImckMCIsInNpYmJsaW5nMiQwIiwidG9fYmVhdCQ0IiwibGlzdCQyIiwiZnJlc2hfcG9zJDIiLCJtYXAkMiIsInRvX2JlYXQkNSIsImxpc3QkMyIsInNvcnRfb3V0ZXIiLCJzb3J0X2lubmVyIiwiY29tcGFyZSQyIiwiZ2V0X2Nhbm5vbmljYWxfZm9ybSIsInRhYmxlIiwiYXNzb2MiLCJjYW5ub25pYyIsImNhbm5vbmljJDAiLCJ0YWJsZSQwIiwiY2hvb3NlX2ZzdCIsImluaXRfdGFibGUiLCJwYXJhbWV0ZXJzIiwiYWRkX3N0b3J5IiwicHJldHJhY2UiLCJzdG9yeV9pbmZvIiwidGFibGUkMiIsInRhYmxlJDMiLCJncmFwaCQwIiwicHJlaGFzaCQxIiwibG9nZ2VyJDAiLCJsb2dnZXIiLCJub2RlX2tpbmQiLCJkaXJlY3RpdmVzIiwiYWRkX3N0b3J5X2luZm8iLCJhc3NvX29wdCIsImNhbm9uaWMiLCJ1cGRhdGVfYXNzb2MiLCJjYW5vbmljX2Zvcm0iLCJhdXhfaW5uZXIyIiwiY2Fub25pY19mb3JtJDAiLCJ0cmVlIiwidGFibGUkMSIsImlkJDIiLCJ0YWJsZSQ0IiwiYXV4X291dGVyMiIsInByZWhhc2gkMCIsImNhbm5vbmljX2Zvcm0iLCJhc3NvYyQwIiwiY2Fubm9uaWNfZm9ybSQwIiwiaW5uZXIiLCJ0YWJsZSQ1IiwiYXV4X2lubmVyIiwic3VmZml4IiwiaW5uZXJfdHJlZSIsImlubmVyX3RyZWUkMCIsImlubmVyX3RyZWUkMSIsImlubmVyX3RyZWUkMiIsImlkJDMiLCJpZCQ0IiwiYXV4X291dGVyIiwib3V0ZXJfdHJlZSIsImlkJDUiLCJ0YWJsZSQ4IiwiaWQkNyIsImlkJDYiLCJncmFwaCQxIiwiYXNzb2MkMSIsInRhYmxlJDYiLCJpbm5lciQwIiwidGFibGUkNyIsImlkJDgiLCJ0YWJsZSQ5IiwiaW5uZXIkMSIsInN1ZmZpeCQwIiwiYXNzb2MkMiIsImlubmVyJDIiLCJ0YWJsZSQxMCIsIm91dGVyX3RyZWUkMCIsIm91dGVyX3RyZWUkMSIsImhhc2hfbGlzdCIsImVsZW1lbnRzX3RvX3N0b3JlJDIiLCJlbGVtZW50c190b19zdG9yZSQzIiwic3RvcmVkX2VsZW1lbnRzJDEiLCJsYXN0X2VsZW1lbnQkMiIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQzIiwiZWxlbWVudHNfdG9fc3RvcmUkNCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ0IiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDUiLCJsYXN0X2VsZW1lbnQkMyIsInN0b3JlZF9lbGVtZW50cyQyIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDYiLCJsYXN0X2VsZW1lbnQkNCIsImRhZyIsImRhZyQwIiwiZGFnJDEiLCJkYWckMiIsImVsZW1lbnRzX3RvX3N0b3JlIiwiZWxlbWVudHNfdG9fc3RvcmUkMCIsInN0b3JlZF9lbGVtZW50cyIsImxhc3RfZWxlbWVudCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyIsImVsZW1lbnRzX3RvX3N0b3JlJDEiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQxIiwibGFzdF9lbGVtZW50JDAiLCJzdG9yZWRfZWxlbWVudHMkMCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQyIiwibGFzdF9lbGVtZW50JDEiLCJhY2MkMCIsInNvcnRfbGlzdCIsImxpc3Rfb3V0IiwidHVwbGUiLCJmbGF0X2xpc3QiLCJjb21wYXJlX3BhaXIiLCJmbGF0X2xpc3QkMCIsImNvdW50X3N0b3JpZXMiLCJmb2xkX3RhYmxlIiwid2Vfc2hhbGwiLCJ3ZV9zaGFsbF9ub3QiLCJnZXRfcHJldHJhY2Vfb2ZfdHJhY2UiLCJzaXplX29mX3ByZXRyYWNlIiwic2V0X2FtYmlndWl0eV9sZXZlbCIsImdldF9jb21wcmVzc2VkX3RyYWNlIiwiaXNfY29tcHJlc3NlZF90cmFjZSIsInRyYWNlX29mX3ByZXRyYWNlX3dpdGhfYW1iaWd1aSIsIndpdGhfYW1iaWd1aXR5IiwidHJhY2Vfb2ZfcHJldHJhY2UiLCJnZXRfaWRfb2ZfZXZlbnQiLCJnZXRfc2ltdWxhdGlvbl90aW1lX29mX2V2ZW50IiwicHJpbnRfdHJhY2UiLCJ0cmFuc2Zvcm1fdHJhY2VfZ2VuIiwibG9nX21lc3NhZ2UiLCJkZWJ1Z19tZXNzYWdlIiwicHJvZmlsaW5nX2V2ZW50Iiwia2FwcGFfaGFuZGxlciIsInNoYWxsX3dlX2NvbXB1dGUiLCJzdGgkMCIsInByaW50X2lmX3plcm8iLCJwcm9maWxpbmdfaW5mbyQwIiwibG9nX21lc3NhZ2UkMCIsInByZXRyYWNlJDAiLCJwcm9maWxpbmdfaW5mbyQxIiwidHJhY2UkMCIsInRyYWNlJDEiLCJwcm9maWxpbmdfaW5mbyQyIiwibW9uYWRpY19saWZ0IiwibWFrZV91bmFtYmlndW91cyIsInNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZiIsInN0aCQxIiwibGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzIiwicmVxdWlyZW1lbnQiLCJlZmZlY3QiLCJ0cmFjZSQyIiwib25fdGhlX2ZseV9jdXRfaW5pdCIsIm9uX3RoZV9mbHlfY3V0X3N0ZXAiLCJvbl90aGVfZmx5X2N1dF9maW5hbGl6ZSIsImN1dF9zdGF0ZSIsInJlbW92ZV9vYnNfYmVmb3JlIiwibGFzdF9pbmZvIiwibGFzdF9laWQiLCJsYXN0X2luZm8kMCIsInNjb3JlIiwic2NvcmUkMCIsInJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnMiLCJyZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIiwic3RvcnlfdGFibGUiLCJnZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWIiLCJlcnJvcl9pbml0IiwiZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tIiwiZXh0cmFjdF9vYnNlcnZhYmxlX2hpdF9mcm9tX211IiwiYyQwIiwiY2F1c2FsX3ByZWZpeF9vZl9hbl9vYnNlcnZhYmxlIiwib2JzZXJ2YWJsZV9pZCIsImV2ZW50X2lkX2xpc3QiLCJleHBvcnRfbXVzaWNhbF9ncmlkX3RvX3hscyIsInByaW50X211c2ljYWxfZ3JpZCIsImNyZWF0ZV9zdG9yeV90YWJsZSIsImNsb3NlX3Byb2dyZXNzX2Jhcl9vcHQiLCJwcmludF9mYWlscyIsImluY19mYWlscyIsImZvbGRfc3RvcnlfdGFibGVfZ2VuIiwibl9zdG9yaWVzX2lucHV0Iiwibl9mYWlscyIsInByb2dyZXNzX2JhciQwIiwibl9mYWlscyQwIiwiZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzIiwiZm9sZF9zdG9yeV90YWJsZV93aXRob3V0X3Byb2dyIiwiZ2V0X2NvdW50ZXIiLCJzdG9yZV90cmFjZSIsImNvbXB1dGF0aW9uX2luZm8kMSIsIm9ic19pbmZvIiwiY29tcHV0YXRpb25faW5mbyQyIiwidHJhY2UyIiwiY29tcHV0YXRpb25faW5mbyIsImNvbXB1dGF0aW9uX2luZm8kMCIsImNvbXB1dGF0aW9uX2luZm8kMyIsImNvbXB1dGF0aW9uX2luZm8kNCIsInN0b3J5X3RhYmxlJDAiLCJjb21wdXRhdGlvbl9pbmZvJDUiLCJmbGF0dGVuX3N0b3J5X3RhYmxlIiwibGlzdF9vcmRlciQwIiwic3Ryb25nbHlfY29tcHJlc3MiLCJ3ZWFrbHlfY29tcHJlc3MiLCJjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCIsImNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdCIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbCIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYSIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYSQwIiwiZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3BhJDEiLCJzb3J0X3N0b3J5X2xpc3QiLCJleHBvcnRfc3RvcnlfdGFibGUiLCJoYXNfb2JzIiwiZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uIiwic3RoJDIiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ5Iiwibl9mYWlsIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDEiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMiIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ0IiwiYmFyJDAiLCJuX2ZhaWwkMCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ1Iiwib3V0cHV0X29wdCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQzIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDYiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNyIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ4IiwiZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vIiwibG9nX3N0ZXAiLCJvYnNlcnZhYmxlX2hpdCIsImNhdXNhbF9wYXN0IiwiaW5mbyQyIiwiY29weV9sb2dfaW5mbyIsImNvbXBhcmVfY2Fub25pY2FsX2Zvcm0iLCJjb21wdXRlX2Nhbm9uaWNhbF9mb3JtIiwia2V5X29mX2V2ZW50IiwiY3JlYXRlX2JsYWNrX2xpc3QiLCJibGFja2xpc3QiLCJibGFja2xpc3QkMCIsInJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCIsImxhc3RfZWlkX2luX3ByZXRyYWNlIiwicHJvZmlsaW5nX3N0YXRlX3RvX2pzb24iLCJlcnJvcl9saXN0X3RvX2pzb24iLCJjb21wdXRhdGlvbl9zdGVwc190b19qc29uIiwiY21wX29wdCIsImNtcF9mbG9hdF9vcHQiLCJjbXBfaW50X29wdCIsImdlbl9iaW5fb3B0Iiwib3AiLCJhZGRfZmxvYXRfb3B0IiwibXVsdF9mbG9hdF9vcHQiLCJtdWx0X2ludF9vcHQiLCJtYXhfb3B0IiwiY2Zsb3dfcGFyYW1ldGVycyIsIm5ldmVyIiwiZ2xvYmFsX3RyYWNlX3NpbXBsaWZpY2F0aW9uIiwic3RvcmVfcmVzdWx0IiwiZ2xvYmFsX3N0YXR1cyIsInN0b3BfbmV4dCIsImdsb2JhbF9zdGF0dXMkMCIsInN0b3AkMCIsImdsb2JhbF9zdGF0dXMkMSIsImdsb2JhbF9zdGF0dXMkMiIsInN0YXJ0X2l0ZXJhdGlvbiIsImVuZF9zaW1wbGlmaWNhdGlvbiIsImdldF9zdGRfYnVmZmVyIiwiY2Zsb3dfc3RhdGUiLCJnZXRfZXJyX2J1ZmZlciIsImdldF9wcm9maWxpbmdfYnVmZmVyIiwiZ2V0X2JyYW5jaF9hbmRfY3V0X3N0YXR1cyIsImdldF9wcm9ncmVzc19iYXIiLCJnZXRfY3VycmVudF9waGFzZV90aXRsZSIsImdldF9jYXVzYWxfZmxvd190YWJsZSIsImdldF90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIiwiZ2V0X3dlYWtfY29tcHJlc3Npb25fdGFibGUiLCJnZXRfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIiwiZ2V0X2Vycm9yX2xpc3QiLCJzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IiwiY2Zsb3dfc3RhdGVfcHRyIiwicmVzZXRfY3VycmVudF9waGFzZV90aXRsZV9hdXgiLCJzYXZlX3Byb2dyZXNzX2Jhcl9hdXgiLCJyZXNldF9wcm9ncmVzc19iYXJfYXV4Iiwic2F2ZV9jYXVzYWxfZmxvd190YWJsZV9hdXgiLCJzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUiLCJzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXUiLCJzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZV8iLCJzYXZlX2Vycm9yX2xvZ19hdXgiLCJyZWRpcmVjdF9zdGRfYnVmZmVyX2F1eCIsImxvZ2dlcnMiLCJyZWRpcmVjdF9lcnJfYnVmZmVyX2F1eCIsInJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXJfYXV4IiwicmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyIiwiY2Zsb3dfc3RhdGVfcHRyX29wdCIsImRhdGEiLCJsaWZ0X3Jlc2V0Iiwic2F2ZV9jYXVzYWxfZmxvd190YWJsZSIsInNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSQwIiwic2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUiLCJzYXZlX2Vycm9yX2xpc3QiLCJyZWRpcmVjdF9zdGRfYnVmZmVyIiwicmVkaXJlY3RfZXJyX2J1ZmZlciIsInJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXIiLCJyZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXIkMCIsImluaXRfc2VjcmV0X2xvZ19pbmZvIiwiZG9fbm90X2xvZyIsImNvbXByZXNzX2FuZF9wcmludCIsImpzX2ludGVyZmFjZSIsInBhcmFtZXRlciQxIiwicGFyYW1ldGVyJDEyIiwicGFyYW1ldGVyJDIiLCJjYXVzYWxfdHJhY2Vfb24iLCJ3ZWFrX2NvbXByZXNzaW9uX29uIiwic3Ryb25nX2NvbXByZXNzaW9uX29uIiwidGFibGUxIiwidGFibGUyIiwidGFibGUzIiwidGFibGU0IiwicGFyYW1ldGVyJDMiLCJwYXJhbWV0ZXIkNCIsInBhcmFtZXRlciQ1IiwicGFyYW1ldGVyJDYiLCJwYXJhbWV0ZXIkNyIsInBhcmFtZXRlciQ4IiwicGFyYW1ldGVyJDkiLCJwYXJhbWV0ZXJfY2F1c2FsIiwicGFyYW1ldGVyX3dlYWsiLCJwYXJhbWV0ZXJfc3Ryb25nIiwic3RlcF9saXN0JDAiLCJzdHJvbmckMCIsImVycm9yJDE5Iiwic3RlcF9saXN0JDEiLCJzdGVwX2xpc3QkMiIsInN0ZXBfbGlzdCQzIiwidHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uIiwiY2F1c2FsX3N0b3J5X2FycmF5IiwiY2F1c2FsX3N0b3J5X2xpc3QiLCJjYXVzYWxfc3RvcnlfbGlzdCQwIiwiY2F1c2FsX3RhYmxlIiwicGFyYW1ldGVyX2RlZXBlciIsImV2ZW50X2xpc3QkMyIsIndlYWtseV9zdG9yeV90YWJsZSIsInRhYmxlMiQwIiwidGFibGUzJDAiLCJ3ZWFrX3N0b3J5X3RhYmxlIiwiY2F1c2FsX3N0b3J5X3RhYmxlIiwiY2F1c2FsX3N0b3J5X3RhYmxlJDAiLCJ3ZWFrX3N0b3J5X3RhYmxlJDAiLCJjYXVzYWxfc3RvcnlfdGFibGUkMSIsImVycm9yJDI5IiwiY2F1c2FsX3N0b3J5X3RhYmxlJDIiLCJlcnJvciQzMCIsIm5fY2F1c2FsX3N0b3JpZXMiLCJwYXJhbWV0ZXIkMTEiLCJsaXN0X2luZm8iLCJ3ZWFrbHlfc3RvcnlfdGFibGUkMCIsImVycm9yJDMxIiwid2Vha2x5X3N0b3J5X3RhYmxlJDEiLCJlcnJvciQzMiIsIm5fd2Vha19zdG9yaWVzIiwicGFyYW1ldGVyJDEwIiwicmVmaW5lZF9ldmVudF9saXN0Iiwic3Ryb25nbHlfc3RvcnlfdGFibGUiLCJzdHJvbmdseV9zdG9yeV90YWJsZSQwIiwiZXJyb3IkMTciLCJlcnJvciQxOCIsImV4cG9ydCQwIiwiZXJyb3IkMjAiLCJlcnJvciQyMSIsImVycm9yJDIyIiwiZXhwb3J0JDEiLCJlcnJvciQyMyIsImVycm9yJDI0IiwiZXJyb3IkMjUiLCJleHBvcnQkMiIsImVycm9yJDI2IiwiZXJyb3IkMjciLCJlcnJvciQyOCIsIm9uX21lc3NhZ2UiLCJ0ZXh0Iiwic3QiLCJub25lJDAiLCJiJDEiLCJ3ZWFrJDAiLCJiJDIiLCJlJDAiLCJmb2xkIiwiY29tcGFyZV9saXN0IiwiaDEiLCJoMiIsImNvbXBhcmVfc3VwZXJsaXN0Iiwic29ydCIsInN1cGVybGlzdCIsImR1bXBfc3VwZXJfbGlzdCIsImNvbXBhcmVfZnN0X3RyaXBsZSIsInNtYXNoIiwiYWNjdSQxIiwidG9fZG8kMSIsImN1cnJlbnQkMiIsInRvX2RvIiwiY3VycmVudCIsInRvX2RvJDAiLCJjdXJyZW50JDAiLCJjdXJyZW50JDEiLCJlcnJvcl9tc2ciLCJvcHQiLCJyYW5nZSIsInRleHQiLCJzdGgiLCJzZXZlcml0eSIsInJlc3VsdF9lcnJvcl9tc2ciLCJyZXN1bHRfY29kZSIsIm1lc3NhZ2UiLCJyZXN1bHRfbWVzc2FnZXMiLCJtZXNzYWdlcyIsInJlc3VsdF9lcnJvcl9leGNlcHRpb24iLCJlIiwibWV0aG9kX2hhbmRsZXJfZXJyb3JzIiwibWgiLCJ1bmNhdWdodCIsImNhdWdodCIsIngiLCJsIiwibWV0aG9kX2hhbmRsZXJfbWVzc2FnZXMiLCJyZXN1bHRfa2FzYSIsInJlc3VsdF9iaW5kX2x3dCIsIm9rIiwic3RhdHVzIiwidmFsdWUiLCJkYXRhIiwicmVzdWx0X2ZvbGRfbHd0IiwiZiIsImlkIiwidCIsImgiLCJyZXN1bHQiLCJyZXN1bHRfY29tYmluZSIsImRhdGFfMSIsImRhdGFfciIsIm1kNXN1bSIsIndyaXRlX3NuYXBzaG90X2lkIiwic3RyaW5nX29mX3NuYXBzaG90X2lkIiwibGVuIiwib2IiLCJyZWFkX3NuYXBzaG90X2lkIiwic25hcHNob3RfaWRfb2Zfc3RyaW5nIiwicyIsIndyaXRlX3NuYXBzaG90Iiwic3RyaW5nX29mX3NuYXBzaG90IiwicmVhZF9zbmFwc2hvdCIsInNuYXBzaG90X29mX3N0cmluZyIsInN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwiLCJzbmFwc2hvdF9kZXRhaWxfb2Zfc3RyaW5nIiwid3JpdGVfc25hcHNob3RfaWRfbGlzdCIsInJlYWRfc25hcHNob3RfaWRfbGlzdCIsInN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nIiwic25hcHNob3RfY2F0YWxvZ19vZl9zdHJpbmciLCJ3cml0ZV9zaXRlX2dyYXBoIiwic3RyaW5nX29mX3NpdGVfZ3JhcGgiLCJyZWFkX3NpdGVfZ3JhcGgiLCJzaXRlX2dyYXBoX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fc3RhdGUiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zdGF0ZSIsInJlYWRfc2ltdWxhdGlvbl9zdGF0ZSIsInAiLCJsYiIsIngkMCIsIngkMSIsInNpbXVsYXRpb25fc3RhdGVfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zZWVkIiwic3RyaW5nX29mX3NpbXVsYXRpb25fc2VlZCIsInJlYWRfc2ltdWxhdGlvbl9zZWVkIiwic2ltdWxhdGlvbl9zZWVkX29mX3N0cmluZyIsIndyaXRlX2ludF9udWxsYWJsZSIsInJlYWRfaW50X251bGxhYmxlIiwid3JpdGVfc2ltdWxhdGlvbl9wcm9ncmVzcyIsImlzX2ZpcnN0Iiwic3RyaW5nX29mX3NpbXVsYXRpb25fcHJvZ3Jlc3MiLCJyZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3MiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUkMCIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbiIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbiQwIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFjIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19yIiwicG9zIiwiaSIsImYkMCIsImkkMCIsIngkMiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsIngkNyIsIngkOCIsIngkOSIsIngkMTAiLCJzaW11bGF0aW9uX3Byb2dyZXNzX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSIsInJlYWRfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIiwid3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJyZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyIiwiZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCIsImZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aSIsImZpZWxkX3NpbXVsYXRpb25fc2VlZCIsImZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UiLCJzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX291dHB1dCIsIndyaXRlX3Bsb3QiLCJ3cml0ZV9kaW5zIiwid3JpdGVfZmlsZV9saW5lcyIsIndyaXRlX3NuYXBzaG90cyIsIndyaXRlX2lucHV0cyIsIndyaXRlX2xvZ19tZXNzYWdlcyIsInN0cmluZ19vZl9zaW11bGF0aW9uX291dHB1dCIsInJlYWRfc2ltdWxhdGlvbl9vdXRwdXQiLCJyZWFkX3Bsb3QiLCJyZWFkX2RpbnMiLCJyZWFkX2ZpbGVfbGluZXMiLCJyZWFkX3NuYXBzaG90cyIsInJlYWRfaW5wdXRzIiwicmVhZF9sb2dfbWVzc2FnZXMiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbCIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaCIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZSIsInNpbXVsYXRpb25fb3V0cHV0X29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwic3RyaW5nX29mX3NpbXVsYXRpb25faW50ZXJ2ZW50IiwicmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiIsInNpbXVsYXRpb25faW50ZXJ2ZW50aW9uX29mX3N0ciIsIndyaXRlX291dHB1dF85MzQwYWQ2IiwicmVhZF9vdXRwdXRfOTM0MGFkNiIsInN0cmluZ19vZl9zaW11bGF0aW9uX2luZm9fb3V0cCIsInNpbXVsYXRpb25faW5mb19vdXRwdXRfb2Zfc3RyaSIsIndyaXRlX3NpbXVsYXRpb25faW5mbyIsInN0cmluZ19vZl9zaW11bGF0aW9uX2luZm8iLCJyZWFkX3NpbXVsYXRpb25faW5mbyIsImZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyIsImZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQiLCJzaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9pZCIsInN0cmluZ19vZl9zaW11bGF0aW9uX2lkIiwicmVhZF9zaW11bGF0aW9uX2lkIiwic2ltdWxhdGlvbl9pZF9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0Iiwic3RyaW5nX29mX3NpbXVsYXRpb25fYXJ0aWZhY3QiLCJyZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QiLCJmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXUiLCJzaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyIsIndyaXRlX3NoYXJpbmdfbGV2ZWwiLCJzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCIsInJlYWRfc2hhcmluZ19sZXZlbCIsInNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIiwid3JpdGVfcmVzdWx0Iiwid3JpdGVfb2siLCJ3cml0ZV9lcnJvciIsInN0cmluZ19vZl9yZXN1bHQiLCJyZWFkX3Jlc3VsdCIsInJlYWRfb2siLCJyZWFkX2Vycm9yIiwicmVzdWx0X29mX3N0cmluZyIsIndyaXRlX3BhcnNpbmdfY29tcGlsIiwic3RyaW5nX29mX3BhcnNpbmdfY29tcGlsIiwicmVhZF9wYXJzaW5nX2NvbXBpbCIsInBhcnNpbmdfY29tcGlsX29mX3N0cmluZyIsIndyaXRlX25iciIsInN0cmluZ19vZl9uYnIiLCJyZWFkX25iciIsIm5icl9vZl9zdHJpbmciLCJ3cml0ZV9zdHJpbmdfbmJyX2xpc3QiLCJzdGRfdHVwbGUiLCJlbmRfb2ZfdHVwbGUiLCJ4MCIsIngxIiwicmVhZF9zdHJpbmdfbmJyX2xpc3QiLCJ3cml0ZV9wcm9qZWN0X3BhcnNlIiwic3RyaW5nX29mX3Byb2plY3RfcGFyc2UiLCJyZWFkX3Byb2plY3RfcGFyc2UiLCJmaWVsZF9wYXR0ZXJuX3NoYXJpbmciLCJmaWVsZF9hc3QiLCJmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiIsInByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIiwid3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIiLCJzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIiLCJyZWFkX3Byb2plY3RfcGFyYW1ldGVyIiwiZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjIiwicHJvamVjdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIiwid3JpdGVfcGxvdF9saW1pdCIsInN0cmluZ19vZl9wbG90X2xpbWl0IiwicmVhZF9wbG90X2xpbWl0IiwiZmllbGRfcGxvdF9saW1pdF9vZmZzZXQiLCJmaWVsZF9wbG90X2xpbWl0X3BvaW50cyIsInBsb3RfbGltaXRfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3Bsb3RfcGFyYW1ldGVyIiwicGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3Bsb3QiLCJwbG90X29mX3N0cmluZyIsIndyaXRlX21lc3NhZ2UiLCJzdHJpbmdfb2ZfbWVzc2FnZSIsInJlYWRfbWVzc2FnZSIsIm1lc3NhZ2Vfb2Zfc3RyaW5nIiwid3JpdGVfbG9nX21lc3NhZ2UiLCJzdHJpbmdfb2ZfbG9nX21lc3NhZ2UiLCJyZWFkX2xvZ19tZXNzYWdlIiwibG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIiwid3JpdGVfa2FwcGFfY29kZSIsInN0cmluZ19vZl9rYXBwYV9jb2RlIiwicmVhZF9rYXBwYV9jb2RlIiwia2FwcGFfY29kZV9vZl9zdHJpbmciLCJ3cml0ZV9zdHJpbmdfbnVsbGFibGUiLCJyZWFkX3N0cmluZ19udWxsYWJsZSIsIndyaXRlX2ZpbGVfbGluZSIsInN0cmluZ19vZl9maWxlX2xpbmUiLCJyZWFkX2ZpbGVfbGluZSIsImZpZWxkX2ZpbGVfbGluZV9uYW1lIiwiZmllbGRfZmlsZV9saW5lX3RleHQiLCJmaWxlX2xpbmVfb2Zfc3RyaW5nIiwid3JpdGVfZmlsZV9saW5lX2xpc3QiLCJyZWFkX2ZpbGVfbGluZV9saXN0Iiwic3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwiLCJmaWxlX2xpbmVfZGV0YWlsX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19saXN0IiwicmVhZF9zdHJpbmdfbGlzdCIsInN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyIsImZpbGVfbGluZV9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX2Vudmlyb25tZW50X2luZm8iLCJzdHJpbmdfb2ZfZW52aXJvbm1lbnRfaW5mbyIsInJlYWRfZW52aXJvbm1lbnRfaW5mbyIsImZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIiwiZmllbGRfZW52aXJvbm1lbnRfYnVpbGQiLCJlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyIsIndyaXRlX2Rpbl9pZCIsInN0cmluZ19vZl9kaW5faWQiLCJyZWFkX2Rpbl9pZCIsImRpbl9pZF9vZl9zdHJpbmciLCJ3cml0ZV9kaW5faWRfbGlzdCIsInJlYWRfZGluX2lkX2xpc3QiLCJzdHJpbmdfb2ZfZGluX2NhdGFsb2ciLCJkaW5fY2F0YWxvZ19vZl9zdHJpbmciLCJ3cml0ZV9kaW4iLCJzdHJpbmdfb2ZfZGluIiwicmVhZF9kaW4iLCJkaW5fb2Zfc3RyaW5nIiwibmV3X21haWxib3giLCJyZWNlaXZlIiwibWFpbGJveCIsInRocmVhZCIsInRocmVhZCQwIiwib3V0IiwidGhyZWFkJDEiLCJ0aHJlYWQkMiIsInRocmVhZCQzIiwidGhyZWFkJDQiLCJ0aHJlYWQkNSIsInRocmVhZCQ2IiwianNvbiIsInRocmVhZCQ3IiwianNvbiQwIiwidGhyZWFkJDgiLCJqc29uJDEiLCJ0aHJlYWQkOSIsImpzb24kMiIsInRocmVhZCQxMCIsImpzb24kMyIsInRocmVhZCQxMSIsImpzb24kNCIsInRocmVhZCQxMiIsImpzb24kNSIsInRocmVhZCQxMyIsImpzb24kNiIsInRocmVhZCQxNCIsImpzb24kNyIsInRocmVhZCQxNSIsInRocmVhZCQxNiIsInRocmVhZCQxNyIsInRocmVhZCQxOCIsInRocmVhZCQxOSIsInRocmVhZCQyMCIsInRocmVhZCQyMSIsImlzX2NvbXB1dGluZyIsInNlbGZfMSIsImhhbmRsZSIsInJlcXVlc3QiLCJmZWVkZXIiLCJiIiwiZmlsZV9pZCIsImZpbGVfY29udGVudCIsImZpbGVfcG9zaXRpb24iLCJhc3QiLCJjb21waWwiLCJhY2N1cmFjeSIsImZ3ZCIsImJ3ZCIsIm9yaWdpbiIsInRvdGFsIiwiZmlsZW5hbWUiLCJhY2N1cmFjeV9jbSIsImFjY3VyYWN5X3NjYyIsInBhdHRlcm5TaGFyaW5nIiwib3ZlcndyaXRlcyIsInBhdXNlIiwicGFyYW1ldGVyIiwiaW50ZXJ2ZW50aW9uIiwid3JpdGVfc25hcHNob3RfZGV0YWlsIiwicmVhZF9zbmFwc2hvdF9kZXRhaWwiLCJ3cml0ZV9zbmFwc2hvdF9jYXRhbG9nIiwicmVhZF9zbmFwc2hvdF9jYXRhbG9nIiwid3JpdGVfc2ltdWxhdGlvbl9lZmZpY2llbmN5Iiwic3RyaW5nX29mX3NpbXVsYXRpb25fZWZmaWNpZW5jIiwicmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3kiLCJzaW11bGF0aW9uX2VmZmljaWVuY3lfb2Zfc3RyaW4iLCJ3cml0ZV9hcGlfcmVzdWx0Iiwic3RyaW5nX29mX2FwaV9yZXN1bHQiLCJyZWFkX2FwaV9yZXN1bHQiLCJhcGlfcmVzdWx0X29mX3N0cmluZyIsIndyaXRlX2FwaV9tZXNzYWdlIiwic3RyaW5nX29mX2FwaV9tZXNzYWdlIiwicmVhZF9hcGlfbWVzc2FnZSIsImFwaV9tZXNzYWdlX29mX3N0cmluZyIsIndyaXRlX2FwaV9tZXNzYWdlX2xpc3QiLCJyZWFkX2FwaV9tZXNzYWdlX2xpc3QiLCJ3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyIsInJlYWRfZmlsZV9saW5lX2NhdGFsb2ciLCJ3cml0ZV9kaW5fY2F0YWxvZyIsInJlYWRfZGluX2NhdGFsb2ciLCJ3cml0ZV9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQiLCJ4JDExIiwieCQxMiIsIngkMTMiLCJ4JDE0IiwieCQxNSIsIngkMTYiLCJzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZV9jb250ZW4iLCJyZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCIsIngkMzUiLCJ4JDE3IiwieCQyNiIsIngkMjUiLCJ4JDI0IiwieCQyMyIsIngkMjIiLCJ4JDIxIiwieCQyMCIsIngkMTkiLCJ4JDE4IiwieCQzNCIsIngkMzMiLCJ4JDMyIiwieCQzMSIsIngkMzAiLCJ4JDI5IiwieCQyOCIsIngkMjciLCJyZXN0X3Jlc3BvbnNlX2NvbnRlbnRfb2Zfc3RyaW4iLCJ3cml0ZV9yZXN1bHRfNGNhNmI4ZiIsInJlYWRfcmVzdWx0XzRjYTZiOGYiLCJzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZSIsInJlc3RfcmVzcG9uc2Vfb2Zfc3RyaW5nIiwid3JpdGVfcGxvdF9wYXJhbWV0ZXIiLCJyZWFkX3Bsb3RfcGFyYW1ldGVyIiwid3JpdGVfcmVzdF9yZXF1ZXN0Iiwic3RyaW5nX29mX3Jlc3RfcmVxdWVzdCIsInJlYWRfcmVzdF9yZXF1ZXN0IiwicmVzdF9yZXF1ZXN0X29mX3N0cmluZyIsIndyaXRlX3Jlc3BvbnNlX2NvbnRlbnQiLCJzdHJpbmdfb2ZfcmVzcG9uc2VfY29udGVudCIsInJlYWRfcmVzcG9uc2VfY29udGVudCIsInJlc3BvbnNlX2NvbnRlbnRfb2Zfc3RyaW5nIiwid3JpdGVfcmVzdWx0Xzg5MGQ5ZmUiLCJyZWFkX3Jlc3VsdF84OTBkOWZlIiwic3RyaW5nX29mX3Jlc3BvbnNlIiwicmVzcG9uc2Vfb2Zfc3RyaW5nIiwid3JpdGVfcmVxdWVzdCIsInN0cmluZ19vZl9yZXF1ZXN0IiwicmVhZF9yZXF1ZXN0IiwicmVxdWVzdF9vZl9zdHJpbmciLCJ3cml0ZV9pZCIsInN0cmluZ19vZl9pZCIsInJlYWRfaWQiLCJpZF9vZl9zdHJpbmciLCJ3cml0ZV9kYXRhIiwicmVhZF9kYXRhIiwiZmllbGRfaWQiLCJmaWVsZF9kYXRhIiwid3JpdGVfZmlsZV9saW5lX2RldGFpbCIsInJlYWRfZmlsZV9saW5lX2RldGFpbCIsIm9uX21lc3NhZ2UiLCJtYW5hZ2VyIiwicG9zdF9tZXNzYWdlIiwidGV4dF9tZXNzYWdlIiwiaGFuZGxlciIsInBhY2siLCJtZXNzYWdlJDAiLCJmaWxlX2xpbmVfaWQiLCJzaW11bGF0aW9uX2ludGVydmVudGlvbiIsImRpbl9pZCIsInZhcmlhYmxlX292ZXJ3cml0dGVuIiwicGF0dGVybl9zaGFyaW5nIiwicGxvdF9wYXJhbWV0ZXIiLCJzbmFwc2hvdF9pZCIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIkMCIsInJlc3BvbnNlIiwicGF1c2VfY29uZGl0aW9uIiwiZmlsZV9saW5lX2xpc3QiLCJmbHV4X21hcF9pZCIsImZsdXhfbWFwIiwibG9nX21lc3NhZ2UiLCJwbG90Iiwic25hcHNob3QiLCJzaW11bGF0aW9uX3N0YXR1cyIsImVmZmljaWVuY3kiLCJpbmZvIiwic2ltdWxhdGlvbl9pZCIsInNlbGZfMiIsInJlc3BvbnNlX3RleHQiLCJtYWlsYm94ZXMiLCJtYWlsYm94ZXMkMCIsIm1lc3NhZ2VfdGV4dCIsImFwaV9zbmFwc2hvdF9kb3QiLCJhcGlfc25hcHNob3Rfa2FwcGEiLCJhcGlfc2ltdWxhdGlvbl9zdGF0dXMiLCJwcm9ncmVzcyIsImRldGFpbCIsIm91dHB1dCIsImFnZW50X2NvdW50Iiwic3BlY2llcyIsIndyaXRlMSIsIm9jIiwibiIsIndyaXRlMiIsIndyaXRlNCIsIndyaXRlNF9pbnQiLCJ3cml0ZXN0cmluZyIsImRvc3RpbWVfb2ZfdW5peHRpbWUiLCJ0bSIsIm9wZW5fb3V0IiwiY29tbWVudCIsImNsb3NlX291dCIsIm9maWxlIiwic3RhcnRfY2QiLCJ2ZXJzaW9uIiwiZGF0ZSIsInRpbWUiLCJjZF9zaXplIiwibnVtX2VudHJpZXMiLCJhZGRfZW50cnlfaGVhZGVyIiwiZXh0cmEiLCJsZXZlbCIsIm10aW1lIiwiYWRkX2RhdGFfZGVzY3JpcHRvciIsImNyYyIsImNvbXByX3NpemUiLCJ1bmNvbXByX3NpemUiLCJlbnRyeSIsImFkZF9lbnRyeSIsIm5hbWUiLCJzdGgkMCIsInN0aCQxIiwic3RoJDIiLCJjcmMkMCIsImUkMCIsImFkZF9lbnRyeV9nZW5lcmF0b3IiLCJmaW5pc2hlZCIsImNoZWNrIiwiYnVmIiwibXNnX3Byb2Nlc3Nfbm90X3BhdXNlZCIsImV4biIsImNhdGNoX2Vycm9yIiwicmFuZ2UkMCIsInJhbmdlJDEiLCJtZXNzYWdlJDEiLCJlcnJvciIsIm1lc3NhZ2UkMiIsInBhcnNlIiwidmFyX292ZXJ3cml0ZSIsInN5c3RlbV9wcm9jZXNzIiwieWllbGQkMCIsImxvZ19idWZmZXIiLCJsb2dfZm9ybSIsImlucHV0c19idWZmZXIiLCJpbnB1dHNfZm9ybSIsImNvbmYiLCJ3YXJuaW5nIiwibXNnIiwiYXN0X2NvbXBpbGVkX2RhdGEiLCJsYXN0eWllbGQiLCJvdXRwdXRzIiwiaW5pdF9sIiwid2l0aF90cmFjZSIsImVudiIsImNvdW50ZXIiLCJ0aGVTZWVkIiwidGhlU2VlZCQwIiwicmFuZG9tX3N0YXRlIiwic3RhdGUiLCJncmFwaCIsIm1heENvbnNlY3V0aXZlQ2xhc2giLCJkdW1wSWZEZWFkbG9ja2VkIiwiY29udGFjdF9tYXAiLCJzaW11bGF0aW9uIiwiZmx1eF9uYW1lIiwibmV3X29ic2VydmFibGVzIiwiZmlsZV9saW5lIiwibmEiLCJsaW5lcyIsInN0IiwiYWxyZWFkeV90aGVyZSIsInNuYXBzaG90X2ZpbGUiLCJtaXgiLCJmaWxlIiwiZmluYWxpemVfc2ltdWxhdGlvbiIsInJ1bl9zaW11bGF0aW9uIiwic3RvcHBlZCIsInJzdG9wIiwiaXRlciIsInN0b3AiLCJzdG9wJDAiLCJzdGFydCIsImxleGJ1ZiIsInNlZWQiLCJmaXJzdF9vYnMiLCJwZXJ0dXJiYXRpb24iLCJmb3JtYXR0ZXIiLCJ2IiwiY29udGludWUkMCIsImdldF9yYXdfdHJhY2UiLCJnZXRfcmF3X2FzdCIsIm0kMSIsIm0kMCIsIm0iLCJiaW5kX3NpbXVsYXRpb24iLCJzaW11bGF0aW9uJDAiLCJkZXRhaWxfcHJvamVjdGlvbiIsInByb2plY3Rpb24iLCJlcnJvcnMiLCJzaW11bGF0aW9uX2RldGFpbCIsImZpbGVfbGluZXMiLCJmaWxlX2xpbmVfY2F0YWxvZyIsImZsdXhfbWFwX2NhdGFsb2ciLCJmbHV4X21hcHNfbGlzdCIsInNlbGZfMyIsInNlbGZfNCIsInBsb3RfbGltaXQiLCJwbG90X3RpbWVfc2VyaWVzIiwicGxvdF9kZXRhaWxfc2l6ZSIsInBsb3RfbGltaXRfb2Zmc2V0IiwicGxvdF9saW1pdF9wb2ludHMiLCJvZmZzZXQiLCJuYiIsIm5iJDAiLCJuZXdfcGxvdF90aW1lX3NlcmllcyIsInNlbGZfNSIsInNuYXBzaG90cyIsImFjYyIsInNuYXBzaG90X2NhdGFsb2ciLCJzbmFwc2hvdF9saXN0Iiwic2VsZl82IiwiaGFyYWtpcmkiLCJzZWVkJDAiLCJzaW11bGF0aW9uX3NlZWQiLCJmYWNhZGUiLCJjb250ZW50IiwiZmx1eCIsImRpbl9uYW1lIiwibmFtZSQwIiwic2ltdWxhdGlvbl9wZXJ0dXJiYXRpb24iLCJwcmludF9jb21wcmVzc2lvbl9tb2RlcyIsInN0cm9uZyIsIndlYWsiLCJjYXVzYWwiLCJpbml0aWFsX3N0YXRlIiwidXBkYXRlX3N0YXRlIiwiaW5pdF9zdGF0ZSIsImN1cnJlbnRfc3RhdGUiLCJtJDIiLCJjIiwiaW5mb3MiLCJjbSIsInRyYWNlX3RleHQiLCJyZXF1ZXN0JDQiLCJyZXF1ZXN0JDMiLCJyZXF1ZXN0JDIiLCJyZXF1ZXN0JDEiLCJyZXF1ZXN0JDAiLCJlcnIiLCJpZCQwIiwicG9zdCIsIm91dGJ1ZiIsIm91dGIiLCJhIiwibyIsImIkMCIsImlzX3J1bm5pbmciLCJydW50aW1lX3N0YXRlIiwic3RhdGVfZXJyb3IiLCJzZXRfc3RhdGVfZXJyb3IiLCJzdGF0ZV9lcnJvcl9uZXciLCJjbGVhcl9lcnJvcnMiLCJsb2NhdGlvbiIsImhhc19lcnJvcnMiLCJhZGRfZXJyb3IiLCJlcnJvcnMiLCJjdXJyZW50X3N0YXRlX2Vycm9yIiwibmV3X3N0YXRlX2Vycm9yIiwiYWNjIiwidmFsdWUiLCJ3cmFwIiwib3B0IiwibG9jIiwiciIsInN0aCIsImFwcGVuZCIsInVybF9hcmdzIiwib3B0Iiwia2V5Iiwic3RoIiwiZGVmYXVsdCQwIiwiYXJncyIsImsiLCJzb21lIiwiY29uc3RydWN0b3JfcHJvY2Vzc19jb25maWd1cmF0IiwiY3JlYXRlX3Byb2Nlc3NfY29uZmlndXJhdGlvbiIsIm9uU3Rkb3V0Iiwib25TdGRlcnIiLCJvbkNsb3NlIiwib25FcnJvciIsImNvbW1hbmQiLCJhcmdzIiwiY29uZmlndXJhdGlvbiIsIngiLCJvblN0ZG91dCQwIiwib25TdGRlcnIkMCIsIm9uQ2xvc2UkMCIsIm9uRXJyb3IkMCIsInNwYXduX3Byb2Nlc3MiLCJsYXVuY2hfYWdlbnQiLCJtZXNzYWdlX2RlbGltaXRlciIsImhhbmRsZXIiLCJidWZmZXIiLCJtc2ciLCJtc2ckMCIsInByZWZpeCIsInN1ZmZpeCIsIm1zZyQxIiwic2VsZl8xIiwidGltZW91dCIsIm9wdCIsInN0aCIsInN0aCQwIiwic3dpdGNoX3JlIiwic3Rvcl9jb21tYW5kIiwic3dpdGNoX21haWxib3giLCJ1cGRhdGVfc3Rvcl9zdGF0ZSIsInN0b3Jfc3RhdGUiLCJydW5uaW5nX3JlZiIsInN0b3JfcHJvY2VzcyIsIm1lc3NhZ2VfdGV4dCIsInJlcXVlc3RfdXAiLCJ2IiwicmVxdWVzdF9kb3duIiwiaXNfY29tcHV0aW5nIiwic2VuZCIsInRpbWVvdXQiLCJyZXF1ZXN0X2NvdW50IiwidXJsIiwibWV0aCIsImRhdGEiLCJoeWRyYXRlIiwiZmVlZGVyIiwicmVwbHkiLCJoYW5kbGVyIiwic3RhdHVzIiwicmVzcG9uc2VfdGV4dCIsInJlc3VsdF9jb2RlIiwicmVzdWx0X2NvZGUkMCIsInJlc3BvbnNlIiwicmVzdWx0Iiwia2FzYV9lcnJvciIsImwiLCJhY2MiLCJtIiwic2VsZl8xIiwicyIsImZpbGVfbGluZV9pZCIsImxpbmVzIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJmbHV4X21hcF9pZCIsInNuYXBzaG90X2lkIiwicGxvdF9saW1pdCIsInBsb3RfbGltaXRfcG9pbnRzIiwicGxvdF9saW1pdF9vZmZzZXQiLCJ2YWx1ZSIsImtleSIsImFyZ3MiLCJwYXVzZV9jb25kaXRpb24iLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsInByb2plY3RzIiwicHJvamVjdF9wYXJhbWV0ZXIiLCJwcm9qZWN0X2lkIiwicGF0dGVyblNoYXJpbmciLCJmIiwidmEiLCJ2ciIsInBvcyIsImlkIiwiY29udGVudCIsImZpbGVfaWQiLCJhc3QiLCJ4IiwieCQwIiwiY29tcGlsIiwiYWNjdXJhY3kiLCJhY2N1cmFjeSQwIiwiZndkIiwiYndkIiwib3JpZ2luIiwidG90YWwiLCJpIiwiaSQwIiwiaSQxIiwiaSQyIiwic2hvcnRfaWRfb3B0IiwiZmlsZW5hbWUiLCJsaW5lIiwiY2hyIiwiYWNjdXJhY3lfY20iLCJhY2N1cmFjeV9zY2MiLCJhIiwiYiIsIm9wdGlvbnMiLCJhJDAiLCJ3ZWFrIiwiY2F1c2FsIiwiY2xpZW50SWRQYXJhbUlkIiwiY2xpZW50X2lkIiwiZ2V0X2NsaWVudF9pZCIsInNldF9jbGllbnRfaWQiLCJjbGllbnRfaWQkMCIsImZvbnRTaXplUGFyYW1JZCIsImN1cnJlbnRGb250U2l6ZSIsImluaXRGcm9tU3RvcmFnZSIsInN0IiwieCIsInNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQiLCJ2IiwidXBkYXRlRm9udFNpemUiLCJkZWx0YSIsInNldF9zeW5jaCIsInN5bmNoIiwiYWdlbnRfY29sb3JpbmciLCJpbml0IiwiY2xpZW50X2lkcyIsInN5bmMiLCJzZWxmXzEiLCJ0aW1lb3V0IiwibWVzc2FnZV90ZXh0IiwieCIsInJlc3BvbnNlX21lc3NhZ2UiLCJyZXNwb25zZV90ZXh0IiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwib3V0IiwibG9hZCIsImluaXQiLCJlIiwiaW5mb3MiLCJsb2NhdG9ycyIsImZpbGVuYW1lIiwicG9zIiwia2FzYV93b3JrZXIiLCJrYXNhX21haWxib3giLCJrYW1vaGFfd29ya2VyIiwia2Ftb2hhX21haWxib3giLCJrYXN0b3Jfd29ya2VyIiwidXBkYXRlX3N0b3Jfc3RhdGUiLCJzdG9yX3N0YXRlIiwic3BlY19sYWJlbCIsInJlbW90ZSIsInNwZWNfaWQiLCJodHRwIiwiY2xpIiwicmVhZF9zcGVjIiwidXJsIiwiZm9ybWF0X3VybCIsImxlbmd0aCIsImNsZWFuZWRfdXJsIiwiY2xlYW5lZCIsInBhcnNlZCIsInByb3RvY29sIiwiaHR0cHMkMSIsImZpbGUkMSIsImh0dHAkMSIsImh0dHBzJDAiLCJmaWxlJDAiLCJsYWJlbCIsImh0dHAkMCIsImh0dHBzIiwiZmlsZSIsInNlbGZfMSIsIngiLCJyZXNwb25zZV9tZXNzYWdlIiwicmVzcG9uc2VfdGV4dCIsInBhdHRlcm5TaGFyaW5nIiwib3ZlcndyaXRlcyIsIm91dCIsImxvYWQiLCJpbml0IiwiZSIsImluZm9zIiwibG9jYXRvcnMiLCJmaWxlbmFtZSIsInBvcyIsImthc2Ffd29ya2VyIiwia2FzYV9tYWlsYm94Iiwia2Ftb2hhX3dvcmtlciIsImthbW9oYV9tYWlsYm94Iiwia2FzdG9yX3dvcmtlciIsInNlbGZfMiIsImV4biIsIm1zZyIsIm1lc3NhZ2VfdGV4dCIsInNldF9zdGF0ZSIsInN0YXRlIiwiY3JlYXRlX21hbmFnZXIiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwidmVyc2lvbl91cmwiLCJmcmFtZSIsImlzX3ZhbGlkX3NlcnZlciIsImVycm9yX21zZyIsIm1hbmFnZXIiLCJqc19ub2RlX3J1bnRpbWUiLCJzZXRfc3BlYyIsInJ1bnRpbWUiLCJjdXJyZW50X3N0YXRlIiwiY3JlYXRlX3NwZWMiLCJpZCIsIm1vZGVsIiwiaG9zdHMiLCJhZGRfdXJscyIsInVybHMiLCJ1cmxzJDAiLCJsb2FkJDAiLCJ1cmxzJDEiLCJwcm9qZWN0cyIsInN5bmMiLCJpbml0X2RlZmF1bHRfcGFyYW1ldGVycyIsInBsb3RQZXJpb2RQYXJhbUlkIiwicGF1c2VDb25kaXRpb25QYXJhbUlkIiwic2VlZFBhcmFtSWQiLCJzdG9yZVRyYWNlUGFyYW1JZCIsInNob3dEZWFkUnVsZXNQYXJhbUlkIiwic2hvd0RlYWRBZ2VudHNQYXJhbUlkIiwic2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyIiwicHJvamVjdF9lcXVhbCIsImEiLCJiIiwiY2F0YWxvZ19lcXVhbCIsIngiLCJ5Iiwic3RhdGVfZXF1YWwiLCJtb2RlbF9lcXVhbCIsImluaXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJzdGF0ZSIsInVwZGF0ZV9wYXJhbWV0ZXJzIiwiaGFuZGxlciIsInN0IiwicHJvaiIsInByb2plY3RfcGFyYW1ldGVycyIsImRlZmF1bHRfcGFyYW1ldGVycyIsInByb2plY3RfcGFyYW1ldGVycyQwIiwiZGVmYXVsdF9wYXJhbWV0ZXJzJDAiLCJzZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0IiwicGEiLCJscyIsInZhIiwic2V0X3Bsb3RfcGVyaW9kIiwicGxvdF9wZXJpb2QiLCJwYXJhbSIsInNldF9wYXVzZV9jb25kaXRpb24iLCJwYXVzZV9jb25kaXRpb24iLCJzZXRfc2VlZCIsInNlZWQiLCJzZXRfc3RvcmVfdHJhY2UiLCJzdG9yZV90cmFjZSIsInNldF9zaG93X2RlYWRfcnVsZXMiLCJzaG93X2RlYWRfcnVsZXMiLCJzZXRfc2hvd19kZWFkX2FnZW50cyIsInNob3dfZGVhZF9hZ2VudHMiLCJzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGUiLCJzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmEiLCJ1cGRhdGVfc3RhdGUiLCJtZSIsInByb2plY3RfY2F0YWxvZyIsIm91dCIsImNvbXB1dGluZ193YXRjaGVyIiwibWFuYWdlciIsInNldHRlciIsImNhbmNlbGxlZCIsImRlbGF5IiwibG9vcCIsImFkZF9wcm9qZWN0IiwiaXNfbmV3IiwicHJvamVjdF9pZCIsInN0YXRlX3ZhIiwiY2F0YWxvZyIsInBhcmFtcyIsInByb2plY3RfbWFuYWdlciIsInNldF9jb21wdXRlcyIsInByb2plY3RfaXNfY29tcHV0aW5nIiwicHJvamVjdF93YXRjaGVyX2NhbmNlbCIsImNyZWF0ZV9wcm9qZWN0Iiwic2V0X3Byb2plY3QiLCJkdW1teV9tb2RlbCIsInAiLCJtb2RlbF9jYXRhbG9nIiwibW9kZWxfcGFyYW1ldGVycyIsIm1vZGVsIiwic3luYyIsImN1cnJlbnQiLCJyZW1vdmVfZmlsZXMiLCJtIiwicmVtb3ZlX3Byb2plY3QiLCJzdGF0ZSQwIiwidiIsImgiLCJwcm9qZWN0X2N1cnJlbnQiLCJvdXQkMCIsImluaXRfcGxvdF9wZXJpb2QiLCJhcmciLCJhcmckMCIsImFyZyQxIiwibXNnIiwiaW5pdF9wYXVzZV9jb25kaXRpb24iLCJpbml0X21vZGVsX3NlZWQiLCJpbml0X3N0b3JlX3RyYWNlIiwiaW5pdF9zaG93X2RlYWRfcnVsZXMiLCJpbml0X3Nob3dfZGVhZF9hZ2VudHMiLCJpbml0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmwiLCJpbml0IiwiZXhpc3RpbmdfcHJvamVjdHMiLCJkZWZhdWx0JDAiLCJhcmdfcGxvdF9wZXJpb2QiLCJkZWZhdWx0JDEiLCJhcmdfcGF1c2VfY29uZGl0aW9uIiwiZGVmYXVsdCQyIiwiYXJnX21vZGVsX3NlZWQiLCJkZWZhdWx0JDMiLCJhcmdfc3RvcmVfdHJhY2UiLCJkZWZhdWx0JDQiLCJhcmdfc2hvd19kZWFkX3J1bGVzIiwiZGVmYXVsdCQ1IiwiYXJnX3Nob3dfZGVhZF9hZ2VudHMiLCJkZWZhdWx0JDYiLCJhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGkiLCJwcm9qZWN0cyIsImFkZF9wcm9qZWN0cyIsInByb2plY3RzJDAiLCJwcm9qZWN0IiwiZXJyb3JzIiwiZXZhbF93aXRoX3Byb2plY3QiLCJsYWJlbCIsImVycm9yX21zZyIsIm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIiwiZXEiLCJvbiIsIm9wdCIsImluaXRfb3RoZXJzIiwib3RoZXJzIiwic3RoIiwib3RoZXJzX2VxIiwiZXFfcGFpciIsIm90aCIsImVycm9yX21zZyQyIiwiZXJyb3JfbXNnJDEiLCJlcnJvcl9tc2ciLCJlcnJvcl9tc2ckMCIsImR1bW15X2N1cnNvcl9wb3MiLCJibGFua19zdGF0ZSIsInNldF9kaXJlY3Rvcnlfc3RhdGUiLCJtb2RlbCIsInJlZnJlc2hfZmlsZV9ob29rIiwibSIsIngiLCJuYW1lIiwiY3VycmVudF9maWxlbmFtZSIsIndpdGhfY3VycmVudF9wb3MiLCJlcSIsIm9wdCIsImYiLCJkZWZhdWx0JDAiLCJzdGgiLCJvbiIsIndpdGhfY3VycmVudF9maWxlIiwic3RhdGUiLCJhY3RpdmUiLCJnZXRfZmlsZSIsInRleHQiLCJuYW1lJDAiLCJtYW5hZ2VyIiwicmFuayIsInNlbmRfcmVmcmVzaCIsImxpbmUiLCJvdXRfb2Zfc3luYyIsImZpbGVuYW1lIiwiY29udGVudCIsInVwZGF0ZV9kaXJlY3RvcnkiLCJyZXNldCIsImN1cnJlbnQiLCJjYXRhbG9nIiwiYWNjIiwiaWQiLCJwb3NpdGlvbiIsImRpcmVjdG9yeSIsImNyZWF0ZV9maWxlIiwiZmlsZV9tZXRhZGF0YSIsIm1hdGNoaW5nX2ZpbGUiLCJtZXRhZGF0YSIsIm1heF9wb3MiLCJjaG9vc2VfZmlsZSIsImNob2ljZSIsInQiLCJzZWxlY3RfZmlsZSIsInNldF9jb250ZW50Iiwic2V0X2NvbXBpbGUiLCJmaWxlX2lkIiwiY29tcGlsZSIsInJhbmskMCIsInJlbW92ZV9maWxlIiwibG9jYWwiLCJ5IiwiZG9fYV9tb3ZlIiwieCQwIiwiY3Vyc29yX3BvcyIsInBvcyIsInNldF9wb3NpdGlvbiIsIm9yZGVyX2ZpbGVzIiwiZmlsZW5hbWVzIiwib3JkZXJfZmlsZSIsImluZGV4IiwidGFpbCIsImN1cnNvcl9hY3Rpdml0eSIsImNoIiwidiIsInN5bmMiLCJjYW5kIiwibG9hZF9kZWZhdWx0IiwiZXJyb3JzIiwibXNnIiwibG9hZF9tb2RlbHMiLCJtb2RlbHMiLCJhZGRfbW9kZWxzIiwibG9hZF9maWxlIiwibW9kZWxzJDAiLCJ1IiwiaCIsImZpbGVjb250ZW50IiwiaW5pdCIsImVycm9yX21zZyQ4IiwiZXJyb3JfbXNnJDciLCJlcnJvcl9tc2ckNiIsImVycm9yX21zZyQ1IiwiZXJyb3JfbXNnJDQiLCJlcnJvcl9tc2ckMyIsImVycm9yX21zZyQyIiwiZXJyb3JfbXNnJDEiLCJlcnJvcl9tc2ckMCIsImVycm9yX21zZyIsImR1bW15X21vZGVsIiwidF9zaW11bGF0aW9uX3N0YXRlIiwic2ltdWxhdGlvbiIsInRfc2ltdWxhdGlvbl9pbmZvIiwic2ltdWxhdGlvbl9pbmZvIiwibW9kZWxfc3RhdGVfdG9fc3RyaW5nIiwibW9kZWxfc2ltdWxhdGlvbl9pbmZvIiwibW9kZWwiLCJtb2RlbF9zaW11bGF0aW9uX3N0YXRlIiwic2V0X3N0YXRlIiwic3RhdGUiLCJ1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSIsInNpbXVsYXRpb25fc3RhdGUiLCJldmFsX3dpdGhfc2ltX21hbmFnZXIiLCJsYWJlbCIsImhhbmRsZXIiLCJwcm9qZWN0X2hhbmRsZXIiLCJtYW5hZ2VyIiwiZmFpbF9sd3QiLCJldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8iLCJvcHQiLCJzdGgiLCJzdG9wcGVkIiwic3RoJDAiLCJpbml0aWFsaXppbmciLCJzdGgkMSIsInJlYWR5IiwicyIsImV2YWxfd2hlbl9yZWFkeSIsInNsZWVwX3RpbWUiLCJzeW5jIiwicmVmcmVzaCIsImluaXQiLCJjb250aW51ZV9zaW11bGF0aW9uIiwicGF1c2VfY29uZGl0aW9uIiwicGF1c2Vfc2ltdWxhdGlvbiIsInN0b3Bfc2ltdWxhdGlvbiIsInN0YXJ0X3NpbXVsYXRpb24iLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsIm9uX2Vycm9yIiwiZXJyb3JfbXNncyIsImVycm9yIiwibXNnIiwibWVzc2FnZSIsInNpbXVsYXRpb25fc3RhdHVzIiwiaW50ZXJ2ZW5lX3NpbXVsYXRpb24iLCJjb2RlIiwib3V0IiwicmVmcmVzaCIsInIiLCJyJDAiLCJyJDEiLCJjcmVhdGVfcHJvamVjdCIsInByb2plY3RfaWQiLCJzZXRfcHJvamVjdCIsImNsb3NlX3Byb2plY3QiLCJzZXRfbWFuYWdlciIsInJ1bnRpbWVfaWQiLCJjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWQiLCJwcmVmZXJlbmNlc19tb2RhbF9pZCIsInNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9pZCIsInByZWZlcmVuY2VzX2J1dHRvbiIsIm9wdGlvbl9zZWVkX2lucHV0Iiwib3B0aW9uX3dpdGh0cmFjZSIsIm9wdGlvbl93aXRoZGVhZHJ1bGVzIiwib3B0aW9uX3dpdGhkZWFkYWdlbnRzIiwib3B0aW9uX3dpdGhpcnJldmVyc2libGUiLCJkZWNyZWFzZV9mb250IiwiaW5jcmVhc2VfZm9udCIsInNldHRpbmdzX2NsaWVudF9pZF9pbnB1dCIsInNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9kb20iLCJvcHRpb25faHR0cF9zeW5jaCIsImRyb3Bkb3duIiwibW9kZWwiLCJjdXJyZW50X2lkIiwic3BlYyIsInNwZWNfaWQiLCJsaXN0X3QiLCJiYWNrZW5kX29wdGlvbnMiLCJiYWNrZW5kX3NlbGVjdCIsImJvZGllcyIsInNldF9idXR0b24iLCJzYXZlX2J1dHRvbiIsImhlYWQiLCJib2R5IiwiZm9vdCIsIm1vZGFsIiwiY29udGVudCIsInNldF9hY3Rpb24iLCJzZXR0aW5nc19jbGllbnRfaWQiLCJ4Iiwic3luY2hfY2hlY2tib3hfZG9tIiwiaXNfY2hlY2tlZCIsImlucHV0IiwidmFsdWUiLCJtb2RlbF9zZWVkIiwic2V0X2FuZF9zYXZlX2FjdGlvbiIsIm9ubG9hZCIsInNwIiwidG9nZ2xlX2VsZW1lbnQiLCJwcm9qZWN0aW9uIiwiY29udGVudCIsIm1vZGVsIiwib3B0aW9uX2xhYmVsIiwibGFiZWwiLCJleHBvcnRfY29udHJvbHMiLCJleHBvcnRfc2VsZWN0X2lkIiwiZXhwb3J0X2ZpbGVuYW1lX2lkIiwiZXhwb3J0X2J1dHRvbl9pZCIsImV4cG9ydF9kYXRhX2xhYmVsIiwiZXhwb3J0X2Zvcm1hdHMiLCJleHBvcnRfZmlsZW5hbWUiLCJleHBvcnRfYnV0dG9uIiwiZm9ybWF0IiwiZXhwb3J0X2Zvcm1hdHNfc2VsZWN0IiwieCIsImRvY3VtZW50IiwibGFiZWxfbmV3cyIsInRhYl9pc19hY3RpdmUiLCJjb3VudGVyIiwic2ltdWxhdGlvbl9pbmZvIiwibGFzdF92YWx1ZSIsInRhYl9hY3RpdmUiLCJ2IiwiYmFkZ2UiLCJjb3VudCIsImFyZ3VtZW50cyQwIiwia2V5IiwiayIsInZlcnNpb24iLCJvcHQiLCJzdGgiLCJ0ZXN0IiwiZGV2IiwidGVzdCQwIiwibmF2bGkiLCJmb3JjZV9jbGFzcyIsImRlY29yYXRpb25zIiwiZGVmYXVsdF9hdHRyaWJ1dGVzIiwibCIsImF0dHJpYnV0ZXMiLCJ0ZXh0IiwibmF2dGFicyIsIm5hdl90YWJfaWQiLCJ0IiwidGkiLCJsaSIsImFfY2xhc3MiLCJvbmVuYXZjb250ZW50IiwiYWN0aXZlIiwiY2xhc3NlcyIsIm5hdmNvbnRlbnQiLCJpZCIsImMiLCJjbCIsImlkJDAiLCJpZCQxIiwibGV2ZWwiLCJkZWJ1ZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXJyb3IiLCJmYXRhbCIsImV4dHJhY3QiLCJ2YWx1ZSIsInZhbHVlJDAiLCJmZWF0dXJlcyIsImRlZmF1bHQkMCIsImZlYXR1cmUiLCJtYXRjaGVzIiwiaW5wdXRfY2hhbmdlIiwiaW5wdXRfZG9tIiwic2lnbmFsX2hhbmRsZXIiLCJpZF9kb20iLCJjcmVhdGVfbW9kYWwiLCJ0aXRsZV9sYWJlbCIsImJvZHkiLCJzdWJtaXRfbGFiZWwiLCJzdWJtaXQiLCJidXR0b24iLCJmb3JtIiwicHJvamVjdF9pZF9tb2RhbF9pZCIsInByb2plY3RfaWRfaW5wdXQiLCJsaV9uZXciLCJsaV9wcmVmcyIsInByb2plY3RfaWRfaW5wdXRfZG9tIiwiY29udGVudCIsInNldHRpbmdzX2NsaWVudF9pZCIsIngiLCJtb2RlbCIsIm1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nIiwibW9kZWxfcHJvamVjdF9pZCIsImN1cnJlbnRfcHJvamVjdF9pZCIsImxpX2NsYXNzIiwic3Bhbl9jbG9zZSIsImV2ZW50IiwiYiIsImNsYXNzZXMiLCJjb21wdXRpbmciLCJhX3Byb2plY3QiLCJhY2MiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNldF9tb2RlbF9pbnRlcnZlbnRpb24iLCJtb2RlbF9pbnRlcnZlbnRpb24iLCJjcmVhdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJwYXJhbSIsImNvbnRpbnVlX3NpbXVsYXRpb24iLCJwYXVzZV9jb25kaXRpb24iLCJwYXVzZV9zaW11bGF0aW9uIiwic3RvcF9zaW11bGF0aW9uIiwic3RhcnRfc2ltdWxhdGlvbiIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwiaW50ZXJ2ZW5lX3NpbXVsYXRpb24iLCJtb2RlbF9wZXJ0dXJiYXRpb24iLCJ0ZXh0IiwiZm9jdXNfcmFuZ2UiLCJyYW5nZSIsImZpbGVfaWQiLCJsaW5lIiwic2ltdWxhdGlvbl90cmFjZSIsIm1hbmFnZXIiLCJkYXRhX3N0cmluZyIsImRhdGEiLCJzaW11bGF0aW9uX291dHB1dHMiLCJkYXRhX2JpZ3N0cmluZyIsImhpZGRlbl9jbGFzcyIsInZpc2libGVfY2xhc3MiLCJpZCIsImlkJDAiLCJpZCQxIiwiaWQkMiIsIm1lc3NhZ2VfbmF2X2luY19pZCIsIm1lc3NhZ2VfbmF2X2RlY19pZCIsIm1lc3NhZ2VfZmlsZV9sYWJlbF9pZCIsImlkJDMiLCJpZCQ0IiwiaWQkNSIsImlkJDYiLCJpZCQ3IiwiaWQkOCIsImlkJDkiLCJpZCQxMCIsInZpc2libGVfb25fc3RhdGVzIiwib3B0Iiwic3RoIiwiYV9jbGFzcyIsIm1vZGVsIiwiY3VycmVudF9zdGF0ZSIsImlucHV0IiwiYnV0dG9uIiwiZm9ybSIsImNvbnRlbnQiLCJvbmxvYWQiLCJmb3JtX2RvbSIsImlucHV0X2RvbSIsImhhbmRsZXIiLCJtb2RlbF9wZXJ0dXJiYXRpb24iLCJ4Iiwic2lnbmFsX2NoYW5nZSIsInNpZ25hbF9oYW5kbGVyIiwibSIsImlucHV0JDAiLCJjb250ZW50JDAiLCJkb20iLCJvbmxvYWQkMCIsInZhbHVlIiwidiIsImZvcm1hdF9mbG9hdF9zdHJpbmciLCJuIiwibGVuZ3RoIiwiaW5wdXQkMSIsImNvbnRlbnQkMSIsIm9ubG9hZCQxIiwicmVzZXRfdmFsdWUiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJlcnJvcl9pbmRleCIsInNhbml0aXplX2luZGV4IiwiaW5kZXgiLCJlcnJvcnMiLCJpbmRleCQwIiwiaW5kZXgkMSIsImdldF9tZXNzYWdlIiwiZXJyb3IiLCJtZXNzYWdlX25hdl90ZXh0IiwibWVzc2FnZV9uYXZfZGVjIiwibWVzc2FnZV9uYXZfaW5jIiwibWVzc2FnZV9uYXYiLCJtZXNzYWdlIiwicmFuZ2UiLCJyYW5nZSQwIiwiZmlsZV9sYWJlbF90ZXh0IiwiZmlsZV9sYWJlbCIsImVycm9yX21lc3NhZ2VfdGV4dCIsImVycm9yX21lc3NhZ2UiLCJhbGVydF9tZXNzYWdlcyIsImNvbnRlbnQkMiIsImZpbGVfY2xpY2tfaGFuZGxlciIsImluZGV4X2NsaWNrX2hhbmRsZXIiLCJkZWx0YSIsImluY19jbGlja19oYW5kbGVyIiwiZGVjX2NsaWNrX2hhbmRsZXIiLCJvbmxvYWQkMiIsIm91dF9vZl9zeW5jIiwiYnV0dG9uJDAiLCJjb250ZW50JDMiLCJvbmxvYWQkMyIsInN0YXJ0X2J1dHRvbl9kb20iLCJidXR0b24kMSIsImNvbnRlbnQkNCIsIm9ubG9hZCQ0IiwiYnV0dG9uJDIiLCJjb250ZW50JDUiLCJvbmxvYWQkNSIsImJ1dHRvbl9kb20iLCJidXR0b24kMyIsImNvbnRlbnQkNiIsIm9ubG9hZCQ2IiwiYnV0dG9uJDQiLCJjb250ZW50JDciLCJvbmxvYWQkNyIsImJ1dHRvbiQ1IiwiY29udGVudCQ4Iiwib25sb2FkJDgiLCJjb250ZW50JDkiLCJsYWJlbCIsImRlYnVnIiwib25sb2FkJDkiLCJwcm9ncmVzc19iYXIiLCJwZXJjZW50X3NpZ25hbCIsInZhbHVlX3NpZ25hbCIsInMiLCJ0aW1lX3Byb2dyZXNzX2JhciIsInNpbXVsYXRpb25faW5mbyIsInN0YXR1cyIsInRpbWUiLCJ0aW1lJDAiLCJ0aW1lX3BlcmNlbnQiLCJ0aW1lX3BlcmNlbnQkMCIsImV2ZW50X3Byb2dyZXNzX2JhciIsImV2ZW50IiwiZXZlbnQkMCIsImV2ZW50X3BlcmNlbnRhZ2UiLCJldmVudF9wZXJjZW50YWdlJDAiLCJ0cmFja2VkX2V2ZW50cyIsInN0YXRlIiwidHJhY2tlZF9ldmVudHMkMCIsInRyYWNrZWRfZXZlbnRzX2NvdW50IiwidHJhY2tlZF9ldmVudHNfbGFiZWwiLCJlZmZpY2llbmN5X2RldGFpbCIsImN1cnJlbnRfZXZlbnQiLCJ0IiwiYWxsIiwiZiIsImNvbnRlbnQkMTAiLCJzZXRfc3RhdGVfbG9nIiwic3RhdGVfbG9nIiwibWFuYWdlciIsImVmZiIsIm9ubG9hZCQxMCIsInN0b3BwZWRfYm9keSIsInN0b3BwZWRfcm93IiwicGF1c2VkX3JvdyIsImluaXRpYWxpemluZ19ib2R5IiwicnVubmluZ19ib2R5IiwiZm9vdGVyIiwiY29udGVudCQxMSIsIm9ubG9hZCQxMSIsIm9ucmVzaXplIiwibmF2bGkiLCJjb250ZW50Iiwib25sb2FkIiwib25yZXNpemUiLCJwcm90b3R5cGUiLCJjcmVhdGVfaGFuZGxlciIsImxhYmVsIiwiaGVhZCIsInRhaWwiLCJvbl9sYWJlbCIsIndyYXBwZXIiLCJoYW5kbGVyIiwieCIsInBvc2l0aW9uIiwiY29uc3RydWN0b3JfbGludCIsImNyZWF0ZV9saW50IiwibWVzc2FnZSIsInNldmVyaXR5IiwiZnJvbSIsInRvIiwicmVzdWx0IiwiY29uc3RydWN0b3JfY2hhbmdlIiwiY3JlYXRlX2NoYW5nZSIsImNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvbiIsImNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24iLCJkZWZhdWx0X2NvbmZpZ3VyYXRpb24iLCJmcm9tVGV4dEFyZWEiLCJkb20iLCJjb25maWd1cmF0aW9uIiwiY29tbWFuZHMiLCJjcmVhdGVfZmlsZSIsIm9wdCIsInN0aCIsInRleHQiLCJ0eHQiLCJjb250ZW50IiwiciIsInIkMCIsInNldF9maWxlIiwiZmlsZV9pZCIsImNsb3NlX2ZpbGUiLCJzZXRfZmlsZV9jb21waWxlIiwicmFuayIsImNvbXBpbGUiLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsImV4cG9ydF9jdXJyZW50X2ZpbGUiLCJmaWxlbmFtZSIsImRhdGEiLCJmaWxlX25ld19tb2RhbF9pZCIsImZpbGVfbmV3X2lucHV0X2lkIiwiZmlsZV9kcm9wZG93bl9tZW51X2lkIiwiZmlsZV9uZXdfbGlfaWQiLCJmaWxlX29wZW5fbGlfaWQiLCJmaWxlX29wZW5fc2VsZWN0b3JfaWQiLCJmaWxlX2Nsb3NlX2xpX2lkIiwiZmlsZV9leHBvcnRfbGlfaWQiLCJmaWxlX2NvbXBpbGVfY2hlY2tib3giLCJlbGVtZW50X2dldF9maWxlbmFtZSIsImVsZW1lbnQiLCJlbGVtZW50X3NldF9maWxlbmFtZSIsIm5hbWUiLCJmaWxlX25ld19pbnB1dCIsImZpbGVfbmV3X2lucHV0X2RvbSIsImZpbGVfY2hlY2tib3giLCJmaWxlX2lkIiwiaXNfY2hlY2tlZCIsImNoZWNrZWRfYXR0cmlidXRlIiwib3Blbl9pbnB1dCIsImRyb3Bkb3duIiwibW9kZWwiLCJoaWRlX29uX2VtcHR5IiwibCIsInJhbmsiLCJjdXJyZW50X2ZpbGVfcG9zIiwibG9jYWwiLCJjb21waWxlIiwibGlfY2xhc3MiLCJmaWxlX2xpIiwic2VwYXJhdG9yX2xpIiwibmV3X2xpIiwib3Blbl9saSIsImNsb3NlX2xpIiwiZXhwb3J0X2xpIiwibGlfbGlzdCIsImZpbGVuYW1lIiwieCIsImZpbGUiLCJvdXRfb2Zfc3luYyIsImNvbnRlbnQiLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsImZpbGVfc2VsZWN0X2hhbmRsZXIiLCJvcGVuX2lucHV0X2RvbSIsImZpbGVzIiwib25sb2FkIiwiZXZlbnQiLCJ0YXJnZXQiLCJpZCIsIndpdGhfZmlsZSIsImhhbmRsZXIiLCJzZXRfY29udGVudCIsImZpbGVuYW1lIiwiZmlsZWNvbnRlbnQiLCJjdXJyZW50X2ZpbGVuYW1lIiwiciIsInIkMCIsIm1zZyIsInRvZ2dsZV9idXR0b25faWQiLCJwYW5lbF9oZWFkaW5nX2dyb3VwX2lkIiwiY29kZW1pcnJvcl9pZCIsImVkaXRvcl9wYW5lbF9pZCIsInNldF9lZGl0b3JfZnVsbCIsImVkaXRvcl9mdWxsIiwic2V0X2ZpbGVuYW1lIiwiZmlsZW5hbWUiLCJtb3ZlX2N1cnNvcl9ob29rIiwiZmlsZV9sYWJlbCIsInRvZ2dsZV9idXR0b24iLCJtZW51X2VkaXRvcl9maWxlX2NvbnRlbnQiLCJidXR0b25zIiwicGFuZWxfaGVhZGluZyIsImNvbnRlbnQiLCJ0ZXh0YXJlYSIsIm1vZGVsIiwiZXJyb3JfbGludCIsImVycm9ycyIsInBvc2l0aW9uIiwicCIsImh5ZHJhdGUiLCJlcnJvciIsInJhbmdlIiwiZmlsZV9pZCIsImFjYyIsInZhbHVlIiwidmFsdWUkMCIsImp1bXBfdG9fbGluZSIsImNvZGVtaXJyb3IiLCJsaW5lIiwibW9kZSIsImNvb3JkcyIsIngiLCJ0b3AiLCJlbGVtZW50IiwibWlkZGxlSGVpZ2h0Iiwic2Nyb2xsTGluZSIsIm9ubG9hZCIsImxpbnRfY29uZmlnIiwic2V0dXBfbGludCIsImNvbmZpZ3VyYXRpb24iLCJndXR0ZXJfb3B0aW9ucyIsImd1dHRlcl9vcHRpb24iLCJpZCIsInRpbWVvdXQiLCJoYW5kbGVyIiwiY2hhbmdlIiwidGltZW91dCQwIiwiZGVsYXkiLCJoYW5kbGVfdGltZW91dCIsImZpbGVuYW1lJDAiLCJjb2RlbWlycm9yJDAiLCJwb3MiLCJjaCIsInRvZ2dsZV9idXR0b25fZG9tIiwiZWRpdG9yX2Z1bGwkMCIsInJlZnJlc2giLCJjYW5kIiwiYmVnIiwiZmlyc3QiLCJlbiIsImxhc3QiLCJvbnJlc2l6ZSIsInByaW50X3N0cmluZyIsInMiLCJsaXN0IiwicHJpbnRfbmV3bGluZSIsInByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIiwiYSIsInByaW50X3NpbmdsZV9pbnRlcm5hbF9zdGF0ZSIsInByaW50X2NvdW50ZXJfaW50ZXJ2YWwiLCJiIiwiYSQwIiwiaW5mIiwib3Blbl9yYW5nZSIsImluZiQwIiwib3Blbl9yYW5nZSQwIiwiYiQwIiwic3VwIiwiY2xvc2VfcmFuZ2UiLCJzdXAkMCIsImNsb3NlX3JhbmdlJDAiLCJwcmludF9jb3VudGVyX3N0YXRlIiwicHJpbnRfc2l0ZSIsInNpdGUiLCJjb3VudGVyX29wdCIsImJpbmRpbmdfb3B0IiwicHJvcF9vcHQiLCJzaXRlX25hbWUiLCJpIiwic2l0ZV9uYW1lJDAiLCJhZ2VudF9uYW1lIiwiYmluZGluZ190eXBlX3N5bWJvbCIsImxpc3QkMCIsImxpc3QkMSIsImxpc3QkMiIsInByaW50X2FnZW50IiwiYWdlbnQiLCJpbnRlcmZhY2UkMCIsImxpc3QkMyIsInByaW50X3NpdGVfZ3JhcGgiLCJhZ2VudF9saXN0IiwicHJpbnRfbWV0aG9kX2hhbmRsZXIiLCJtaCIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwieCIsImwiLCJuYXZsaSIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwiY29udGVudCIsIm1hbmFnZXIiLCJyIiwidGl0bGUiLCJtIiwib3V0IiwiY29uc3RyYWludHMiLCJwYW5lbHMiLCJiIiwiYSIsImxpc3QiLCJsZW1tYSIsImh5cCIsImNvbmNsdXNpb24iLCJzaXRlX2dyYXBoIiwibGlzdCQ0IiwibGlzdCQwIiwibGlzdCQxIiwiYm9vbCIsImxpc3QkMiIsImxpc3QkMyIsImxpc3QkNSIsImxpc3QkNiIsInRleHRzIiwiY29uc3RyYWludHNfZGl2IiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJvbnJlc2l6ZSIsImNyZWF0ZV9jb250YWN0X21hcCIsImlkIiwiY29sb3JpbmciLCJleHBvcnRfZm9ybWF0X2lkIiwiY29uZmlndXJhdGlvbiIsImV4cG9ydF9maWxlbmFtZV9pZCIsImV4cG9ydF9idXR0b25faWQiLCJleHBvcnRfZGF0YV9sYWJlbCIsImV4cG9ydF9mb3JtX2lkIiwiaW5saW5lX2NvbnRlbnQiLCJleHBvcnRfZmlsZW5hbWUiLCJleHBvcnRfYnV0dG9uIiwiaGFuZGxlciIsImV4cG9ydF9mb3JtYXRzX3NlbGVjdCIsImNvbnRlbnQiLCJvbmxvYWQiLCJleHBvcnRfZm9ybWF0IiwiZXhwb3J0X2J1dHRvbl90b2dnbGUiLCJ4IiwiaXNfZGlzYWJsZWQiLCJmaWxlbmFtZSIsImRlZmF1bHQkMCIsInJvb3QiLCJleHBvcnRfc3ZnIiwic3ZnX3N0eWxlX2lkIiwic3ZnX2Rpdl9pZCIsImV4cG9ydF9wbmciLCJleHBvcnRfanNvbiIsInNlcmlhbGl6ZV9qc29uIiwiZGF0YSIsImRpc3BsYXlfaWQiLCJleHBvcnRfaWQiLCJhY2N1cmFjeV9jaG9vc2VyX2lkIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsInNldF9hY2N1cmFjeSIsImFjY3VyYWN5IiwiZXh0cmFjdF9jb250YWN0X21hcCIsImNvbnRhY3QiLCJhY2MiLCJhY2MkMCIsImNvbnRhY3QkMCIsImNvbnRhY3RfbWFwX2pzIiwibWFuYWdlciIsIm1oIiwieCIsImNvbnRhY3RfanNvbiIsIm1hcF9qc29uIiwiZGF0YSIsImNvbnRhY3RfbWFwX3RleHQiLCJjb25maWd1cmF0aW9uIiwib3B0aW9uX2dlbiIsImwiLCJhY2N1cmFjeV9jaG9vc2VyIiwiY29udGVudCIsImFjY3VyYWN5X2Zvcm0iLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsInZhIiwidmEkMCIsIm9ucmVzaXplIiwiY3JlYXRlX2dyYXBoX2xvZ2dlciIsImlkIiwib25fY2xpY2siLCJlbXB0eV9zcGhlcmUiLCJkdW1teV9tb2RlbCIsInRvdGFsX2lucHV0X2lkIiwiZndkX2lucHV0X2lkIiwiYndkX2lucHV0X2lkIiwiZGlzcGxheV9pZCIsInJlbmRlcmluZ19jaG9vc2VyX2lkIiwiYWNjdXJhY3lfY2hvb3Nlcl9pZCIsIm5hdmxpIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJzZXRfdHJhY2tfY3Vyc29yIiwidHJhY2tfY3Vyc29yIiwic2V0X21vZGVsIiwibW9kZWwiLCJpbmZsdWVuY2Vfbm9kZV9sYWJlbCIsInIiLCJyJDAiLCJ1cGRhdGVfbW9kZWxfZ3JhcGgiLCJmIiwibSIsImciLCJ1cGRhdGVfbW9kZWwiLCJ4Iiwibm9kZSIsIm9yaWdpbiIsIm9yaWdpbl9sYWJlbCIsImluZmx1ZW5jZW1hcCIsInRvdGFsX2lucHV0IiwiZndkX2lucHV0IiwiYndkX2lucHV0IiwibmV4dF9ub2RlIiwicHJldl9ub2RlIiwicmVjZW50ZXIiLCJ0YyIsInRyYWNrX2N1cnNvcl9zd2l0Y2giLCJleHBvcnRfY29uZmlnIiwiZmlsZW5hbWUiLCJtYW5hZ2VyIiwiYWNjdXJhY3kiLCJpbmZsdWVuY2VzX3N0cmluZyIsImRhdGEiLCJyZW5kZXJpbmciLCJsIiwicmVuZGVyaW5nX2Nob29zZXIiLCJvcHRpb25fZ2VuIiwiYWNjdXJhY3lfY2hvb3NlciIsImlzX2NlbnRlciIsIm9yaWdpbl9zaG9ydF9vcHQiLCJpZCIsImEiLCJpZCQwIiwiYSQwIiwianNvbl90b19ncmFwaCIsImxvZ2dlciIsImluZmx1ZW5jZV9tYXAiLCJub2RlcyIsImRpcmVjdGl2ZXNfb2Zfbm9kZSIsImpzb24iLCJsYWJlbCIsInBvcyIsImNvbnRleHR1YWxfaGVscCIsImZpbGxjb2xvciIsInBvcyQwIiwiY29udGV4dHVhbF9oZWxwJDAiLCJmaWxsY29sb3IkMCIsImJpZ2dlc3RfaWQiLCJuIiwibWF4X3J1bGVfaWQiLCJnZXRfaWRfb2Zfbm9kZV9pZCIsIm5vZGVfaWQiLCJnZXRfaWRfb2Zfbm9kZSIsImRpcmVjdGl2ZXMiLCJwcmludF9tYXBzIiwib3B0IiwibWFwIiwic3RoIiwic291cmNlIiwic291cmNlX2lkIiwidGFyZ2V0IiwibGFiZWxfbGlzdCIsInRhcmdldF9pZCIsImxhYmVsX3N0cmluZyIsImRpcmVjdGl2ZXMkMCIsInRhYmxlX29mX2luZmx1ZW5jZXNfanNvbiIsImFjYyIsImUiLCJuYW1lciIsIm9yaWdpbl9pZF9vcHQiLCJvcmlnaW5faWQiLCJzcmMiLCJkc3QiLCJieSIsIm9uIiwidiIsInYkMCIsInBvc2l0aXZlX2J5IiwicG9zaXRpdmVfb24iLCJuZWdhdGl2ZV9ieSIsIm5lZ2F0aXZlX29uIiwicG9wX2NlbGwiLCJ0IiwicG9zaXRpdmUiLCJmaWxsX3RhYmxlIiwiYWNjJDAiLCJieSQwIiwib24kMCIsImJ5JDEiLCJiIiwib24kMSIsIm8iLCJsaW5lIiwiYWNjJDEiLCJkcmF3X3RhYmxlIiwib3V0cyIsImluZmx1ZW5jZV9zcGhlcmUiLCJjb250ZW50IiwiYWNjdXJhY3lfZm9ybSIsImdyYXBoX2Zvcm0iLCJzcGhlcmUiLCJlcnJvciIsInRvdGFsIiwiYndkIiwiZndkIiwiaW5mbHVlbmNlcyIsImJ1ZiIsImZtdCIsImxvZ2dlcl9ncmFwaCIsImdyYXBoIiwiZ3JhcGhfanNvbiIsIm5laXRoZXJfZ2NfbWUiLCJjdXJzb3JfcG9zIiwibm9yX2djX21lIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ2YSIsInZhJDAiLCJvcmlnaW5fcmVmaW5lZCIsIm9ucmVzaXplIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsInNpdGUiLCJhIiwicHJpbnRfZWRnZSIsImxpc3QiLCJkIiwiYyIsImIiLCJjb250ZW50IiwibWFuYWdlciIsIm1oIiwibSIsInNjYyIsInNjYyQwIiwibGlzdF9lZGdlcyIsImxpc3QkMCIsImxpc3QkMSIsIm91dHB1dCIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwib25yZXNpemUiLCJ0YWIiLCJza2lwIiwicGx1cmFsIiwicmlnaHRzdWJwYW5lbF9pZCIsIm5hdmxpIiwicmlnaHRzdWJwYW5lbCIsImVkaXRvcl9mdWxsIiwiY2hpbGRzX2hpZGUiLCJiIiwiY29udGVudCIsImluaXRfZGVhZF9ydWxlcyIsIm1vZGVsIiwibWFuYWdlciIsIm1oIiwibGlzdCIsImFjYyIsInJ1bGUiLCJ0ZXh0Iiwid2FybmluZ3MiLCJpbml0X2RlYWRfYWdlbnRzIiwiYWdlbnQiLCJyYW5nZSIsImluaXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYSIsImNvbnRleHRfbGlzdCIsInRhYiQwIiwic2tpcCQwIiwicGx1cmFsJDAiLCJmbXQiLCJhIiwiZG9udF9nY19tZSIsIm9ubG9hZCIsIm9ucmVzaXplIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwic2V0X2Rpbl9pZCIsImRpbl9pZCIsIm1hbmFnZXIiLCJkaW5faWRzIiwiaWQiLCJvdXQiLCJkaW5fbGlzdCIsImRpbl9zZWxlY3QiLCJ4IiwiZGluX2RhdGEiLCJkaW4iLCJyIiwiYWNjIiwiZGluX2hlYWRlciIsImFsbCIsImkiLCJkYXRhIiwidiIsImJvZHkiLCJkaW5fdGFibGUiLCJ0aGVhZCIsImV4cG9ydF9jdXJyZW50X2RpbiIsInRvX3N0cmluZyIsIm1pbWUiLCJmaWxlbmFtZSIsImV4cG9ydF9jb25maWd1cmF0aW9uIiwiY29udGVudCIsIm5hdmxpIiwic3RhdGUiLCJzdGF0ZSQwIiwib25sb2FkIiwib25yZXNpemUiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsImxpbmVfY291bnQiLCJzdGF0ZSIsInN0YXRlJDAiLCJuYXZsaSIsImNvbnRlbnQiLCJ4IiwieCQwIiwibGlzdCIsInRleHQiLCJtYW5hZ2VyIiwic3RhdGVfbG9nIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNlbGVjdF9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInNldF9jdXJyZW50X2ZpbGUiLCJjdXJyZW50X2ZpbGUiLCJ1cGRhdGVfb3V0cHV0cyIsImtleSIsIm1hbmFnZXIiLCJsaW5lcyIsImZpbGVfY291bnQiLCJzdGF0ZSIsInN0YXRlJDAiLCJuYXZsaSIsInhtbCIsInNlbGVjdCIsImZpbGVfbGluZV9pZHMiLCJjdXJyZW50X2ZpbGVfaWQiLCJmaWxlX29wdGlvbnMiLCJ4Iiwic2VsZWN0X2ZpbGUiLCJmaWxlX3NlbGVjdCIsImxpbmUiLCJmaWxlX2NvbnRlbnQiLCJzZWxlY3Rfb3V0cHV0cyIsInNlbGVjdF9kb20iLCJmaWxlaW5kZXgiLCJjb250ZW50IiwidCIsIm9ubG9hZCIsIm9ucmVzaXplIiwiY3JlYXRlX29ic2VydmFibGVfcGxvdCIsIm1haW5fZGl2X2lkIiwiZGl2X2Rpc3BsYXlfaWQiLCJleHBvcnRfaWQiLCJwbG90X3BvaW50c19pbnB1dF9pZCIsInBsb3Rfb2Zmc2V0X2lucHV0X2lkIiwic2V0X29mZnNldCIsIm9mZnNldCIsImRlZmF1bHRfcG9pbnQiLCJzZXRfcG9pbnRzIiwicG9pbnQiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJwbG90X3JlZiIsImhhc19wbG90Iiwic3RhdGUiLCJzdGF0ZSQwIiwiZXhwb3J0X2pzb24iLCJmaWxlbmFtZSIsIm1hbmFnZXIiLCJwbG90IiwiZGF0YSIsImV4cG9ydCQwIiwibWltZSIsInBsb3RfcG9pbnRzX2lucHV0IiwibWF4X29mZnNldCIsInBsb3Rfb2Zmc2V0X2lucHV0Iiwic2ltdWxhdGlvbl9pbmZvX29mZnNldF9tYXgiLCJzaW11bGF0aW9uX2luZm8iLCJwbG90X3NpemUiLCJ1cGRhdGVfb2Zmc2V0IiwidXBkYXRlX29mZnNldF9pbnB1dCIsInNpbXVsYXRpb25fbW9kZWwiLCJzaW11bGF0aW9uX2luZm8kMCIsIm9mZnNldF9tYXgiLCJvbGRfb2Zmc2V0Iiwib2Zmc2V0JDAiLCJvZmZzZXRfY3VycmVudCIsInBsb3Rfb2Zmc2V0X2lucHV0X2RvbSIsIngiLCJuZXdfb2Zmc2V0IiwicGxvdF9wYXJhbWV0ZXIiLCJwb2ludCQwIiwidXBkYXRlX3Bsb3QiLCJqc19wbG90Iiwib25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IiwicGxvdF9wb2ludHNfaW5wdXRfZG9tIiwianNfcG9pbnQiLCJldiIsInBsb3RfcG9pbnRzX3N0cmluZyIsInBsb3RfcG9pbnQkMCIsInBsb3RfcG9pbnRzX29wdGlvbiIsInBsb3RfcG9pbnRzIiwicGxvdF9wb2ludCIsInBsb3RfcG9pbnRfc3RyaW5nIiwiY29uZmlndXJhdGlvbiIsIm1vZGVsIiwib3V0IiwieG1sIiwiZXhwb3J0X2NvbnRyb2xzIiwiY29udGVudCIsInMiLCJvbmxvYWQiLCJ2YWx1ZSIsInBsb3RfY291bnQiLCJuYXZsaSIsIm9ucmVzaXplIiwiY3JlYXRlX3NuYXBzaG90IiwiaWQiLCJjb2xvcmluZyIsInNlbGVjdF9pZCIsImRpc3BsYXlfaWQiLCJmb3JtYXRfc2VsZWN0X2lkIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwic2V0X2N1cnJlbnRfc25hcHNob3QiLCJjdXJyZW50X3NuYXBzaG90Iiwic3RyaW5nX3RvX2Rpc3BsYXlfZm9ybWF0Iiwic2V0X2Rpc3BsYXlfZm9ybWF0IiwiZGlzcGxheV9mb3JtYXQiLCJzbmFwc2hvdF9jb3VudCIsInN0YXRlIiwic3RhdGUkMCIsIm5hdmxpIiwiY29uZmlndXJhdGlvbl90ZW1wbGF0ZSIsImlkIiwiYWRkaXRpb25hbF9oYW5kbGVycyIsInMiLCJqc29uX2hhbmRsZXIiLCJrYXBwYV9oYW5kbGVyIiwiZmlsZW5hbWUiLCJkYXRhIiwiZG90X2hhbmRsZXIiLCJkZWZhdWx0X2hhbmRsZXJzIiwibW9kZWwiLCJzaW11bGF0aW9uX2luZm8iLCJjb25maWd1cmF0aW9uX2thcHBhIiwiY29uZmlndXJhdGlvbl9ncmFwaCIsInJlbmRlcl9zbmFwc2hvdF9ncmFwaCIsInNuYXBzaG90X2pzIiwic25hcHNob3QiLCJqc29uIiwiY29udGFjdF9tYXAiLCJ4Iiwic2VsZWN0X3NuYXBzaG90IiwiZG9tIiwiZmlsZWluZGV4IiwiaW5kZXgiLCJzaW11bGF0aW9uX291dHB1dCIsImluZGV4JDAiLCJtYW5hZ2VyIiwic25hcHNob3RfaWRzIiwic25hcHNob3RfaWQiLCJmIiwiZiQwIiwic2VsZWN0Iiwic25hcHNob3RzIiwiaSIsInNuYXBzaG90X2NsYXNzIiwiZW1wdHkiLCJzaW5nbGUiLCJtdWx0aXBsZSIsInhtbCIsImxpc3QiLCJzbmFwc2hvdF9maWxlIiwic25hcHNob3RfbGFiZWwiLCJzbmFwc2hvdF9zZWxlY3QiLCJzbmFwc2hvdF9jaG9vc2VyIiwidG9nZ2xlX2NvbnRyb2xzIiwia2FwcGEiLCJncmFwaCIsImV4cG9ydF9jb250cm9scyIsInNuYXBzaG90JDAiLCJrYXBwYV9zbmFwc2hvdF9kaXNwbGF5Iiwia2FwcGFfZ3JhcGhfZGlzcGxheSIsImZvcm1hdF9jaG9vc2VyIiwiY29udGVudCIsIm9ubG9hZCIsInNuYXBzaG90X3NlbGVjdF9kb20iLCJmb3JtYXRfc2VsZWN0X2RvbSIsInVwZGF0ZV9mb3JtYXQiLCJmb3JtYXRfdGV4dCIsImZvcm1hdCIsIm9ucmVzaXplIiwiY3JlYXRlX3N0b3J5X3JlbmRlcmluZyIsImlkIiwiZ3JhcGhfZGlzcGxheV9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwibmF2bGkiLCJub25lX2NoZWNrYm94Iiwid2Vha19jaGVja2JveCIsInN0cm9uZ19jaGVja2JveCIsIm5vbmVfYm94Iiwid2Vha19ib3giLCJzdHJvbmdfYm94IiwibGF1bmNoX2J1dHRvbiIsImxpc3RfY29udHJvbCIsInN0b3J5X2xpc3QiLCJjbSIsImlkIiwic3RvcnlfbGlzdF9odG1sIiwic2VsZWN0X3N0b3JpZXMiLCJzZWxlY3Rfc3Rvcmllc19kb20iLCJzZXR1cF9mb3JtIiwibG9nX2NvbnRyb2wiLCJzdG9yeV9sb2ciLCJzZXRfaW5mbyIsImN1cnJlbnRfaW5mbyIsImxpbmUiLCJzdG9yeV9sb2dfaHRtbCIsImxvZ19kaXYiLCJsb2dfcGFuZWwiLCJzdG9yeV9ncmFwaCIsImNvbnRlbnQiLCJsaWZ0X3Jlc3VsdCIsIngiLCJlIiwiZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIiwibWFuYWdlciIsImNhdXNhbCIsIndlYWsiLCJzdHJvbmciLCJ1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwiLCJwcmVkX2lkIiwic2V0X2Ffc3RvcnkiLCJ2YSIsInYiLCJkIiwiZiIsImluc3BlY3Rfc3RvcmllcyIsImIiLCJhY2MiLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsInRyYWNlIiwib25yZXNpemUiLCJuYXZfdGFiX2lkIiwibmF2Y29udGVudHNfaWQiLCJuYXZ0YWJzIiwicyIsInN0b3J5X2NsYXNzIiwibmF2Y29udGVudHMiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInN5bmMiLCJpbml0IiwibG9vcCIsImgiLCJ0IiwibG9vcF9zeW5jIiwib25sb2FkIiwib25sb2FkIiwibWFpbiIsIngiXSwic291cmNlcyI6WyIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK3J1bnRpbWVfZXZlbnRzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytzdHIuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK2RvbWFpbi5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLyt6c3RkLmpzIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL21hcnNoYWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL29iai5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zZXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxMYXp5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Z1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWVfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvdHlwZWRfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9mb3JtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC94bWxIdHRwUmVxdWVzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93ZWJTb2NrZXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93ZWJHTC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC91cmwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3N5c19qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3BlcmZvcm1hbmNlT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL211dGF0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2NTUy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZXZlbnRTb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2dlb2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9pbnRlcnNlY3Rpb25PYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY2F0ZWdvcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY3NldC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcG1hcmsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jb2xvcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2dyb3VwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9lbWFjcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvc3RyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wZXJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wY3JlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfd3JhcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL3htbF9wcmludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfaXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci9zdmdfZi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci9odG1sX2YubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL3R5eG1sX3htbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvdHl4bWxfc3ZnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC90eXhtbF9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZWFjdGl2ZURhdGEvcmVhY3RpdmVEYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC9qc19vZl9vY2FtbF90eXhtbF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL3R5eG1sX2Nhc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL3R5eG1sX2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3N3aXRjaC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zZXEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9wcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9wb29sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X212YXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3RfcmVhY3QvbHd0X3JlYWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvanNfb2Zfb2NhbWxfbHd0X18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfeG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanNvbnAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanNfZXZlbnRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9qc19vZl9vY2FtbF9sd3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2hvb2tlZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9lYXN5LWZvcm1hdC9lYXN5X2Zvcm1hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9zaGFyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX2luYnVmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfb3V0YnVmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfdmludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX2lvLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfZHVtcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIveW9qc29uL3lvanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvb3ZfcnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9val9ydW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL29iX3J1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvanNvbl9hZGFwdGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvZHluYW1pY0FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbGFyZ2VBcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3Rvb2xzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvanNvblV0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9zdG9wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvc2V0TWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbW9kcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL29wdGlvbl91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbG9jLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcHAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy92YWxNYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9yZXN1bHRfdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3JlbmFtaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcmFuZG9tX3RyZWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9wcF9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvb3BlcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9uYnIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9FeGNlcHRpb25EZWZuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbmFtZWREZWNscy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2xpc3RfdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ludENvbGxlY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9pbmZpbml0ZV9idWZmZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvaGFzaGVkX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9mcmFjdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9maWZvLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY3JjMzIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jb2xvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NpcmN1bGFyX2J1ZmZlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jYWNoZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2Jhc2U2NC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvdXNlcl9ncmFwaC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvc2lnbmF0dXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvYWdlbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL2VkZ2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9uYXZpZ2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9yYXdfbWl4dHVyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vYWxnX2V4cHIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2NvbnRhY3RfbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9tYXRjaGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vaW5zdGFudGlhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcHJpbWl0aXZlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vbEthcHBhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wYXR0ZXJuX2NvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wYXR0ZXJuX2RlY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL21vZGVsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9rYXBwYV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9jb25maWd1cmF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9hbGdfZXhwcl9leHRyYS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2NvdW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2ZsdXhtYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL3Jvb3RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9pbnN0YW5jZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2V4cHJfaW50ZXJwcmV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2dlbmVyaWNfcnVsZV9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vc3RhdGVfaW50ZXJwcmV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL3JlcGxheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvYXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9jb3VudGVyc19jb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvbEthcHBhX2NvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5IiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9jc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rZmlsZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHkiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYW1vaGFfbXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9ldmFsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9ldmFsdWF0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC90eXBlX2ludGVyZmFjZS9wdWJsaWNfZGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3ZlcnNpb24vdmVyc2lvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9zdXBlcmFyZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9zdXBlcmFyZ1RrLm5vdGsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvY29tbW9uX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcnVuX2NsaV9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3Byb2dyZXNzX3JlcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9rYXBwYV9maWxlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9wcF9zdmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcGFyYW1ldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL291dHB1dHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkva2FzaW1fYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9jbGlfaW5pdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9hZ2VudF9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvbG9nZ2luZy9sb2dnZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvbG9nZ2luZy9sb2dnZXJzX3N0cmluZ19vZl9vcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfbG9nZ2Vyc19zaWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGFzc2ljYWxfZ3JhcGhzL2dyYXBoX2xvZ2dlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGFzc2ljYWxfZ3JhcGhzL2dyYXBoX2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL3N5bWJvbF90YWJsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvcmVtYW5lbnRfc3RhdGVfc2lnbmF0dXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9leGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvcmVtYW5lbnRfcGFyYW1ldGVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvb2RlX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2hlYWRlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2ZpbGVOYW1lcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvZ2V0X29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2Vycm9yX2hhbmRsZXJzL2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2Vycm9yX2hhbmRsZXJzL2xpZnRfZXJyb3JfbG9ncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Byb2ZpbGluZy9zdG9yeVByb2ZpbGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvbWFwX3dyYXBwZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL3dvcmtpbmdfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvaW50X3N0b3JhZ2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL3VuaW9uX2ZpbmQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL3Rvb2xzX2thc2EubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL21pc2Nfc2EubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2hhc2gubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2dyYXBocy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvZGljdGlvbmFyeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3RpY2tfc3Rvcmllcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2dyYXBoX2Nsb3N1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jYXVzYWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wcmVkaWNhdGVfbWFwcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvc3RvcnlfanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2NmbG93X2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9rYXBwYV9pbnN0YW50aWF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcG9fY3V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHNldWRvX2ludmVyc2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ibGFja2JvYXJkX2dlbmVyYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ibGFja2JvYXJkLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHJvcGFnYXRpb25faGV1cmlzdGljcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2dlbmVyaWNfYnJhbmNoX2FuZF9jdXRfc29sdmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2RhZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3V0aWxpdGllcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3V0aWxpdGllc19leHBlcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jZmxvd19qc19pbnRlcmZhY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jb21wcmVzc2lvbl9tYWluLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cva2FzdG9yX21waS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2RhZzIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9hcGlfdHlwZXNfai5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9zd2l0Y2htYW5fY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL21waV9tZXNzYWdlX2oubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvbXBpX2FwaS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9hcGlfZGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9mYWtlemlwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thcHBhX2ZhY2FkZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9tYW5hZ2VyX3NpbXVsYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FzdG9yX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYXNhX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYW1vaGFfY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2Vudmlyb25tZW50X21lbW9yeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9hcGlfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2NvbW1vbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvSnNOb2RlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9yZXN0X2FwaS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfc2V0dGluZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3dlYl93b3JrZXJfYXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9wcm9qZWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9zaW11bGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9tb2RhbF9wcmVmZXJlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWlfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF9wcm9qZWN0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfcGVydHVyYmF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF9zZXR0aW5ncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2Fib3V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9jb2RlbWlycm9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9tZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL21lbnVfZWRpdG9yX2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdWJwYW5lbF9lZGl0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3V0aWxpdHkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9jb25zdHJhaW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfY29udGFjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvd2lkZ2V0X2V4cG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2NvbnRhY3RfbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19ncmFwaGxvZ2dlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2luZmx1ZW5jZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9wb2x5bWVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2VkaXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2ZsdXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9sb2cubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9vdXRwdXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19wbG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfcGxvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfc3RvcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9zdG9yaWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF90YWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3VpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9Kc1NpbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBLEM7O0c7OztRO1M7OztHO0k7STtJO0c7RTs7OztHQTBPQSxTQUFTQSxtQkFBbUJDLEdBQUssU0FBUUEsV0FBWTtHQ3pMckQsU0FBU0MsZ0JBQWdCQyxHQUFHQztJQUMxQixHQUFHRCxRQUFRO0lBQ1gsR0FBSUMsVUFBVSxPQUFRQSxTQUFTRDtJQUMvQixJQUFJRSxRQUFRQztJQUNaLE9BQVE7S0FDTixHQUFJSCxPQUFPRSxLQUFLRDtLQUNoQkQ7S0FDQSxHQUFJQSxRQUFRLE9BQU9FO0tBQ25CRCxLQUFLQTtLQUNMRTtLQUNBLEdBQUlBLFFBQ0ZGOztHQUtOO0dEN0NzQixJQUFsQkcsb0JBQW9CQztHRUF4QixTQUFTQyxvQkFBcUJDLEtBQU8sTUFBTUEsSUFBSztHQzRIM0IsSUFBakJDO0dEckZKLFNBQVNDO0lBQ1BILG9CQUFvQkU7R0FDdEI7R0ZyQ0EsU0FBU0UsUUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksVztJLE87Rzs7STs7RztHO0ksUTtJLFE7O0k7SyxROzs7Ozs7Ozs7Ozs7d0Q7MEQ7MEQ7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0k7Rzs7STs7Ozs7O0c7O0ksc0I7Rzs7STtLLE07SyxNOztJO0k7SSxXO0ksc0I7Rzs7O0ksa0Isc0IsZ0M7OztLLE07OztPLGE7O087USxLO1EsSzs7Ozs7TztRLE87USxPO1EsSzs7Z0M7O3VDO1E7Ozs7c0M7Tzs7TztRLE87USxPO1EsTztRLEs7Ozs7O3dDO1M7Ozs7dUM7UTs7Tzs7Rzs7STtLLEs7SyxLOzs7OzRCOztJLHNCO0c7O0k7SyxLO0ssSzs7O0s7O2E7O0k7cUM7Rzs7O0ssbUI7STtJLEksaUIsbUI7OztNLE07O00sTTtLOzs7Ozs7Ozs4Qjs7Ozs4Qjs7Ozs7O00sWTs7Ozs7OzhCOzs7OztNOztJLGdEO2dCOztLLE07STtHOztJOztlO2U7OztLLE8seUI7O0ksbUIsSTtJO2MseUI7SSxJLGtCOzs7O00seUI7TTs7Ozs7SSxPOztxQixpQzs7STs7OztHOztJOzs7O0k7Rzs7STs2Qzs7Szs7TSxLO0s7SyxPOztJO0ksTztHOzRCLCtCOzs7Szs7OztJO0k7SSxZLE87Ozs7O29DOzhCO0c7O0k7O0ksTztHOztJO0k7OztJOztLLEs7O0s7Ozt5QjtJO0c7O0k7STs7OztJOzs7O2MsNEI7OztHOztJOztLOzs7STtHOztJO0k7SSx5QjttQixpQjs7STs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw2QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw2QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozt3Qzs7O0k7O0s7O007TSxzQjtLOzZCOzs7Ozs7SyxjO0s7NkI7Ozs7O0k7OztLOzZCOzs7OzhCOztJOzs7OztHOzs7SyxJOzs7OztNOzs7Ozs7TTs7Ozs7eUI7O007O007TyxLO087Ozs7Ozs7OztLOztNO08sSzs7TztrQjtrQjs7TTs7O08seUI7Ozs7TTtLO0s7TSxLOztNOztNLE07OztROztROzs7Ozs7Ozs7c0I7O1E7O2lDOztROztJO0k7STtHO3FCLHlDO29CLDhCO3NCLDhCO3FCLGtCOztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7Uzs7Ozs7aUIsVSxXLFU7Ozs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxROzs7Ozs7OztPO087TztPOzs7Ozs7O1M7O21COzs7OztpQixVLFcsVTs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJOzs7Ozs7Rzs7STs7Ozs7Ozs7OztLO00sTzs7Ozs7Ozs7OzttQzs7Szs7TSxVO00sTTs7Ozs7STs7Ozs7Ozs7WTs7Ozs7Ozs7OzthOzs7YyxPOzthLGMsUTs7Ozs7YyxPOzs7Ozs7O2MsTzs7OzthLE87OztHO3NCLE8scUI7NEIsYTsyQixhO2tDLGE7NkIsYTttQyxhOzJCLFk7MkIsWTtnQyxZOztJOzs7RztxQixpQzs7STs7Ozs7OztZOzs7OztHOztJOzs7O087USxPO08sTzs7Szs7OztLOztLLE87O0ksa0IsSTtJOztJLE87Rzs0Qiw2Qjs7O0s7Ozs7STtJLEk7O2lEOzZCO0c7O2tCLHFCLGE7O0ksYyxNLGlDO0k7OztpQywwQjs7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7SztLOzs7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7SztLO0s7Szs7Ozs7Ozs7SztLO00sb0I7Ozs7O0k7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNO007TyxvQjs7Ozs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNO007TyxvQjs7Ozs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7Rzs7STs7O0ssSSxNOzs7Ozs7STs7Ozs7O1k7Ozs7Rzt5QixPLHVCO2dDLFk7MkIsWTtHOztJO0ssTTtLOztpQjs7OztLOzs7O0s7OztJO0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7Syx5QjtLO007O08sUTs7Ozs7cUIsTztNOztPLFE7Ozs7O0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7O0ssWSxPO0s7O007O08sUTs7Ozs7TSxZLE87TTs7TztTOzs7OztHOztJOzs7OztJOztLLE07OztJO2tCOztLLFksTztLOztNOztPLFE7Ozs7O00sWSxPO007O087Uzs7Ozs7RztHOztJLFU7dUIsTyx5QztJOzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksVTt1QixPLHlDO0k7SztNOzs7SztLO0s7OztJOztHOztJLFU7dUIsTyx5QztJO0s7TTs7O0s7SztLOzs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztZSTdIQWEsTUFBT0MsR0FBVUMsR0FBVyxPQUFyQkQsTUFBVUMsVUFBZ0I7T0FDakNDO1lBQ0FDLE9BQU9ILEdBQUksT0FBSkEsRUFBSztPQUNaSTtZQUVBQyxVQUFVTCxHQUFFQyxHQUFJLGNBQU5ELElBQUVDLFdBQWlCO1lBQzdCSyxPQUFLTixHQUFFQyxHQUFJLE9BQU5ELElBQUVDLEVBQVc7O0lBSWxCTTtJQUNBQztJQUhBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztZQUVBQztJQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUxaTjs7V0FEQUQ7R0FjVTs7OztPQWxCVkQ7T0FVQVE7T0FS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O1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBS0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBSUFDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBR0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBT0FDO1lBU0F2VztZQUVBd1c7WUFFQUM7WUFFQUM7WUFFQWpXO1lBRUFrVztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBN2U7WUFFQThlO1lBRUFDO1lBRUFDO1lBQUFBO1lBSUFsYjtZQUVBbWI7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFF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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsbENFN1g7SUFDQThYOztJQUNBcGdCO0lBQ0F1STtJQUNBQztJQUdBNlg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLFcscUM7O0ksTzs7O0c7c0IsTyxvQzs7SSxRO0k7SSxPO0c7O0ksVzs7SyxVO0s7OztJOzs7Rzs7STs7SSxPO0c7O0ksSSx1Qzs7OztNLFk7NkM7TTs7Ozs7O0c7O0ksSSxxQjs7O2tCOzs7Rzs7STtJO0s7TTs7TTtNO2tCOzs7OztLOzs7RztHLCtCOzRCLG9CLHVCOztJLGlCOzs7STtJLEk7STs7Syw2QixtQjtpQjs7Ozs7O007OztVOztHOztJLG1DOzs7O00sWTs7TTs7Ozs7O0c7MkIsK0I7Z0MsbUI7O0k7Ozs7TTtNOzs7Ozs7Rzs7STs7STtLO007O1M7MkIsTyxrQjtTOzs7UTtNOztTOzJCLE8sa0I7Uzs7O1E7TSxxQixxQztLOzs7Ozs7UTtTO1M7UztTO1U7VSxXO1U7VTs7O1U7Ozs7Ozs7O2tCLFMsUzs7O007O0s7Szs7O0s7TSxvQyxtQjt5QixPLHNCO0s7SztLOzs7Rzs7STs7Ozs7Ozs7OztRO1MsYTs7Ozs7Ozs7OztHOzt1QixTO2dDLFM7O0k7Rzs7STtJOzs7OztPLFk7Ozs7UztTLE07Ozs7Ozs7Ozs7Ozs0Qjs7O0c7O0k7STs7Ozs7WTtRO1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJO0ksNkIsbUI7RzswQiw2Qjs7STtJOzs7OztJLGdCOzs7STs7Ozs7TTs7O087Ozs7O1UsRztXLE07Ozs7OztRLEk7Ozs7Ozs7TztRLFk7OztRO1EsSTs7Ozs7OztpQjs7Ozs7Ozs7OztHO0c7eUIsK0I7O0k7Ozs7Ozs7Rzs7SSxJLGdCOztHOztJLGM7OztJO2lCOzs7O00sMkQ7TTtLOzs7Rzs7STs7SyxNOztJO0c7dUIsbUM7MkIsa0IsYzs7STs7SSxrQjs7O0c7O0k7O0ssTTs7STtHOzJCLGtDOztJOztJLHdCO2tCLCtCO0k7Rzs7STs7O0ksRywwQjs7OztHOztJOzs7Rzs7O0k7STs7O2E7Yzs7YztjOzs7O2M7Ozs7YzthOztHOztJOzs7STtHOztJLFk7O0k7OztJOzs7aUI7STtHOztJO0k7a0I7YTtLOztNOzBCLG9COzs7UztTO1M7UTtLO0s7OztJLFE7SSxnQjt3QixrQzs7SztpQjs7SyxhO0s7STtJO0k7STtHOztJLFk7SSxrQjtzQixvQjs7SztLOztJO0k7STtHOztJLFk7SSxrQjtzQixvQjs7bUIsa0M7SztJO0k7STtHOztJLFk7O0ksUztJLGdCO3NCLGdDOztLOzs7TSxlOztLO0k7STtJO0k7OztJLFk7SSxrQjtzQixvQjtrQixlLGtDO0k7STs7O0ksUTtJLGM7c0Isb0I7a0IsMEI7STtJO0c7O0ksWTtJLGtCO3NCLG9COztLO0ssTztJO0k7STs7O0ksWTtJLGtCO3NCLG9COztLLFk7aUI7O0s7STtJO0k7OztJLFk7SSxrQix5QjtzQixvQjs7SyxJLGU7Ozs7TSxlOzs7O0k7STtJOzs7STtJLFk7SSxrQix5QjtzQixvQjs7SyxJLGU7Ozs7TSxPOzs7SztJO0k7STs7O0ksUTs7STtJLGU7c0IsZ0M7O0s7STtJO0k7STs7O0ksUTs7SSxRO0ksZTtzQixnQztrQixpRDtJO0k7STs7O0ksUTs7SSxRO0ksZTtzQixnQzs7Szs7Ozs7O0k7STtJO0k7OztJLFM7SSxlLHlCO3NCLG9COztLO2M7SztJO0k7STtHOztJLFk7SSxrQix5QjtzQixvQjs7SztjO0s7STtJO0k7O3NCLDZCOztJOzs7TTtNLFc7Ozs7TTs7O087Tzs7Ozs7OztHOztJO0s7OztLOztzQixZO0ssTztJOztLO007O3dCO007Ozs7O08sTTs7O0k7dUIsNEI7STtJO0c7O0k7Szs7O0s7O3NCLFk7SyxPO0k7O0s7O2tCOztNO087USxROzs7Ozs7STt1Qiw0QjtJO0k7Rzs7SSxZOztJO0ksSSxlOztLO2lCOztLO0k7O0s7Ozs7TyxNOztNOztLLGtCO3FDOzthLHlCLDJCOztLO0s7SztNO007OzttQjs7SztJOzBCO0k7STs7O0k7SztLOzs7eUIsUzs7VSxNO1M7SyxPOzttQzs7bUM7c0IsUzs7Szs7O0ssMEI7O0k7STtJO0k7Rzs7SSxTO2E7SSw0QiwwQjtzQixpQzs7Szs7O00sZTs7SztJO0k7STtJO0c7O0ksUzthO2E7STs7OztLO0s7SztzQiw2Qzs7Szs7O00sZTs7SztJO0k7STtJO0k7Rzs7SSxTO2E7YTthO0k7Ozs7O0s7SztLOztLO0k7O0s7OztNLGU7O0s7STtJO0k7STtJO0k7Rzs7SSxTO2E7YTthO2E7STs7Ozs7O0s7SztLO0s7O0s7STs7Szs7Ozs7Ozs7Ozs7OztNLGU7O0s7STtJO0k7STtJO0k7STtHOztJLFM7YTthO2E7YTthO0k7Ozs7Ozs7SztLO0s7Szs7Szs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7OztNLGU7O0s7STtJO0k7STtJO0k7STtJO0c7b0IsdUIsYyxNOztJLGdCLHdCLFM7Ozs7Szs7ZSxZOztlO2M7Ozs7SSxRO0ksYztzQixnQzs7SztnQjs7aUI7O0s7STtJO0k7STtHO0c7O0k7Ozt1QyxTO0ksd0I7a0IsdUIsTzs7Szs7SztLO0s7SyxPO0k7STtHO3VCLGM7O0k7STs7STs7O2E7YSxHLDJCOztjOzs7YztjOzs7O2M7Ozs7Yzs7OztHOztJOzs7STtHOztJLG1COztJO0c7O0k7Ozs7Z0IsTzs7O0k7Rzs7SSxtQjs7O0ksd0I7O0ssTTsyQiwwQjtJOzs7STtJOztvQyxPOzs7Ozs7STtHOztJO0k7a0I7a0Msa0I7Szs7TTtNO00sb0Isb0I7OztTO1M7UztRO0s7Szs7O0k7Szs7TTs0QixxQjs7O1MsYTtTOztRO0s7Szs7SSxnQixlO3dCLGtDOztLLEksZTttQyxHLDRCO0ssYTtLO0k7STtJO0k7Rzs7STtJLFk7SSxrQjtzQixvQjs7SztpQjs7SztJO0k7STs7O0k7SSxxQyxXO0ksa0I7c0Isb0I7a0IsZSxnQztJO0k7OztJO0k7O3FCOztLLFc7Ozs7Szs7TTswQixxQjtzQixlLGlDO0s7Szs7SSxnQjt3QixpQzs7SztLLGU7STtJO0k7STtHOztJO0ksNkIsTztJLGM7c0Isb0I7O0s7SyxPO0k7STtJO0c7O0k7STtLOztNOzBCLG9COzs7UyxZO3FCOztTO1E7SztLOztJLGtCLFE7Z0I7O0k7OztJLG1CO0ksa0IseUI7c0Isb0I7O0ssSSxhOztNLE07OztLLGU7STtnQyxpQztJO0k7OztJLG1CO0ksa0I7c0Isb0I7a0IsZ0M7STtJO0c7O0k7O0ssd0IsTyxxQjs7O0ksUTtJLGU7c0IsaUM7O0s7aUI7O0ssZTtJO0k7STtJOzs7STtJOztJO0s7O007MEIscUI7c0IsdUM7SztLOztJLGU7d0IsaUM7b0IsZ0Q7STtJO0k7Rzs7STtJLFE7O0k7Szs7TTswQixxQjtzQix1QztLO0s7O0ksZTt3QixpQztvQixnRDtJO0k7STtHOztJO0ksUztJLGU7c0Isb0I7O0s7aUI7O0ssZTtJO0k7STtHOztJO0ksWTtJLGtCO3NCLG9COztLO2lCOztLLGU7STtJO0k7OztJO0k7SyxtQjs7Szs7STtLLG1COztLOztJLG1CO3NCLGlEOztLO00scUMsTzs7TSxPOztLLGU7STs7SyxtQjs7SztJO0k7STtHOztJO0kscUM7STs7SztLO0s7O0s7d0I7O0s7STs7Szs7O3lCOztNOzs7Z0Q7Szs7O00sb0I7TTtNOzs7Szs7TTtNO007OztLO0s7OztJO0k7STtJOzs7STs7O3dDOzs7Rzs7STs7SztLO21CO0s7SztLO0k7STtLO0s7O29DLFMsbUIsUztLLE87OztLOzs7MEIsUztzQix3QjtNO0s7Szs7O21DO3dCLFM7b0IsZ0M7STtJO0k7STtHOztJO0k7O29DLFc7Szs7TTswQixvQjtzQixlLG1DO0s7Szs7OztLOztNOzRCLHFCO3dCLGUsc0M7SztLOztJLGU7d0IsaUM7O0s7SyxlO0k7STtJO0k7Rzs7STtJOzs7O3NDLFc7Ozs7Ozs7O087O1E7UTtROzRCLDZDOzs7VyxJLGlCO1csZTtVO087TztPO087Ozs7STs7O3dDOzs7OztHOztJO0k7Ozs7Ozs7O1EsVzs7Ozs7Ozs7Ozs7O1E7O1M7UztTOzs7WTtXOzs7WSxJLGlCLGlCO1ksZTtXO1E7UTtRO1E7UTs7Ozs7STs7O3dDOzs7Ozs7Rzs7STtJOzs7Ozs7Ozs7O1MsVzs7Ozs7Ozs7Ozs7Ozs7O1M7O1U7VTtVO1U7OzthOzs7WTs7O2E7YztjO2M7YztjLEk7YTtZO1M7UztTO1M7UztTOzs7Ozs7STs7O3dDOzs7Ozs7O0c7O0k7STs7Ozs7Ozs7Ozs7O1UsVzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7O1c7VztXO1c7Vzs7O2M7Ozs7O2E7OztjO2U7ZTtlO2U7ZTtlLEk7YzthO1U7VTtVO1U7VTtVO1U7Ozs7Ozs7STs7O3dDOzs7Ozs7OztHOzZCO2dDO21CLDBDOztJOzs7OztHOztJOzs7OztHO29CLG9COztJLG1CO0ksa0I7c0Isb0I7O0ssVztLO0k7STtJOztvQix5QjtvQix5Qjs7SSxZOztJLDBCO0k7c0Isb0I7a0Isb0Q7STtJOztnQzs7SSwwQztHOztJLDBDO0c7O0ksMEM7Rzs7STs7a0M7OztHOztJOztrQzs7O0c7O0k7Rzt3QixvRDttQiwwQztHLEksMkI7O0k7Z0Q7Rzs7STtnRDtHOztJO2dEO0c7b0IsMEM7O0k7Z0Q7Rzs7STs7a0M7OztHOztJO2dEO0c7Z0M7O0ksMEM7Rzs7STtnRDtHOztJO2dEO0c7O0k7Z0Q7Rzs7STtnRDtHOztJOztnQzs7O0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7cUIsd0Q7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0k7O2dDOzs7RztvQix1RDtvQix1RDtvQix1RDs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSw2QztHOztJO0c7O0k7Rzs7STtHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7RztJO0k7STtJO0k7STs7STtJLG9DO0c7O0ksK0IsaUI7Rzt1QiwrQixvQjt1QiwrQixvQjtHOztJOztLOztNOztTOztVLE87O1MsTTtROzs7O0ksK0IsYztHOztJO0k7O2lDOzBEOztLLCtCO0ssZTttQjtLO007MEIscUI7OztTO1M7O1E7SztLOzs7Ozs7O00sbUMsUzs7Syx1Qjs7TTtPOzZCLHNCOzs7VTtzQjs7VTtTO007TTs7SztNO00sc0Isc0I7OztTO3FCOztTO1E7Z0Msb0M7OztTO1M7OztVOzs7VTtTO1E7SztLO0s7Ozs7O0s7OztlLFk7O2U7Yzs7O0ksdUI7d0Isb0M7O0s7aUI7O0s7STtJO0k7STtHO0c7OEIsOEM7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O2dDOzs7Rzs7STs7Z0M7OztHOzs7dUIsNEI7MkIsZ0M7MEIsMkI7eUIsOEI7dUIsNEI7O0s7SyxxQjtJOztLO0sscUI7STsyQiw4Qjs7SztLLHFCO0k7MEIsK0I7O0s7SyxxQjtJOzZCLGtDO3lCLDRCO3lCLDhCOztLO0sscUI7STsyQixnQzsrQixvQzttQyx3Qzs7SztJOztLO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJSS9oQ1EsSUFuQlJpRCxjQUNBQyxrQkFDQUMsaUJBaUJBQzthQUVBQyxPQUFPQztLQUNUO01BQXlCLFFBQUE7TUFBUEM7TUFBZEM7TUFDQUMsY0FGS0g7bUJBR29CSTtNQUN6QixTQUR5QkE7V0FHZkMsSUFIZUQ7T0FEekJELGFBSTBCLFdBM0I1QlIsT0EyQllVLEdBSlZGOztlQUdRSCxJQUZpQkksUUFEekJELGFBR1FIO01BR1IsT0FMeUJJO0tBS3RCO0tBTEssSUFBUkUsUUFBUSwrQkFGUko7S0FRSixtQkFQSUMsU0FDQUcsU0FGY0w7SUFRTTthQUV0Qk0sV0FBV1AsR0FBRUU7S0FDRCxJQUFWQyxjQURTSDttQkFFZ0JJO01BQ3pCLFNBRHlCQTtXQUdmQyxJQUhlRDtPQUR6QkQsYUFJMEIsV0FyQzVCUixPQXFDWVUsR0FKVkY7O2VBR1FILElBRmlCSSxRQUR6QkQsYUFHUUg7TUFHUixPQUx5Qkk7S0FLdEI7S0FMSyxJQUFSRSxRQUFRLCtCQUZHSjtLQVFmLGVBUElDLFNBQ0FHO0lBTWU7YUFFakJFLFFBQU1DLEdBQUksV0FBSkEsR0FBVzthQUVqQkMsUUFBU0M7SztVQUVITjtNQUFLLFdBQU0sV0E3Q2pCVCxXQTJDU2UsR0FFSE47O1NBREZMO0tBQUssV0FBSSxXQTNDYkgsVUEwQ1NjLEdBQ0xYOzthQUdKWSxJQUFJRCxHQUFFRTtLQUNSLFNBRFFBLFVBRUFKLElBRkFJLE1BRUssV0FBTSxXQWhEakJoQixVQThDSWMsR0FFRUY7S0FFUTtNQURWSyxNQUhFRDtNQUlGVixjQUFjLFdBbERsQk4sVUE4Q0ljLEdBR0FHO01BRUosT0FGSUE7bUJBRXlCVjtNQUNmLElBQU5XLFFBVlJMLFFBSUlDLEdBS3lCUDtNQUV6QixTQURJVztXQUdNVixJQUhOVTtPQUZKWixhQUswQixXQXpEOUJSLE9BeURjVSxHQUxWRjs7ZUFJUUgsSUFGSmUsVUFGSlosYUFJUUg7TUFHUixPQUxJZTtLQUtEO0tBTkssSUFBUlQsUUFBUTtLQU9aLGVBUklILFNBQ0FHO0lBT2dCO2FBRXBCVSxNQUFNSDtLQUFJLFNBQUpBLFVBQ0FJLElBREFKLE1BQ0ssT0FBTEk7U0FDRkgsTUFGRUQ7WUFFRkM7SUFBaUI7YUFFckJSLE1BQU1PO0tBQUksU0FBSkE7U0FFRkMsTUFGRUQ7S0FFRyxPQUFMQztJQUFZO2FBRWhCSSxNQUFPTCxHQUFlUixHQUFJLE9BQUUsV0FBckJRLFVBQWVSLElBQWU7YUFFckNjLElBQUtOLEdBQWVSLEdBQUksT0FBRSxXQUFyQlEsVUFBZVIsSUFBYTthQUVqQ2UsS0FBS1QsR0FBRUUsR0FBRVE7S0FDWCxTQURTUjtNQUVrQixJQUFuQkksSUFGQ0osTUFFa0IsT0FBQSxXQUZwQkYsR0FBSVUsU0FFSEo7TUFBbUIsT0FBQTs7S0FFZixJQUROSCxNQUhHRCxNQUlIUyxRQUFNLFdBSkxYLEdBQUlVLFNBR0xQO0tBRUosT0FBQSw0QkFMS0gsR0FJRFcsT0FEQVI7SUFFc0I7YUFFMUJTLE9BQVNDO0ssR0FBQUEsU0FBS0MsTUFBTEQsUUFBQUUsS0FBS0QsY0FBTEM7S0FDWCxtQkFDUVQsVUFBSyxPQUFBLHdCQUFMQTtLQUVOLElBRElILFlBQ0osT0FESUEsZUFBQUE7bUJBQytCZCxHQUFFSTtNQUNqQyxTQURpQ0EsWUFHekJDLElBSHlCRCxRQUdwQixPQUFBLFdBeEZqQlQsT0F3RllVLEdBSHVCTDtVQUV6QjJCLE1BRjJCdkI7TUFFdEIsT0FBTHVCO0tBQ2dCO0tBSFQsZUFBQSxpQkFKUkQ7S0FJVCxPQUFBOzthQUtBRSxZQUFjSixLQUFVWDtLQUMxQixHQURnQlcsU0FBS0MsTUFBTEQsUUFBQUUsS0FBS0QsY0FBTEM7Y0FDWmYsRUFBRWtCLEtBQUdDLEdBQUksV0FBTSxpQkFESEosSUFDUEksR0FBSEQsTUFBOEI7S0FDUCxXQUFBLHlCQUR6QmxCLEdBRHNCRTtLQUVHLE9BNUQzQk4sV0E0RFMsd0JBRmVNO0lBRXFCO0lBaEdiO1lBdUJoQ2Y7WUFFQUM7WUFXQVE7WUEwREFxQjtZQWhEQXBCO1lBNEJBVTtZQUVBQztZQTVCQVQ7WUFJQUU7WUFjQUk7WUFZQUk7WUFPQUc7WUFmQWpCOztHQXhFSyxJQStHTFQsNEJBREFDO1lBT0FGLFVBQVVlO0lBQWE7Szs7WUFKbEJGLGNBQUZzQixjQUFRLFdBQVJBLEdBQWMsV0FJUHBCLEdBSkxGOztZQUNIdUIsZ0JBQUssV0FBTEE7O1lBRUdDLGdCQUFGQztRQUFRLFdBQVJBLEtBQWEsV0FDTnZCLEdBRExzQjtvQkFEQUUsY0FBRkMsZ0JBQVEsV0FBUkEsS0FBRUQ7OztJQUVrQixPQUFBO0dBQWE7WUE2RnBDeEMsTUFBTTBDLEtBQUVDO0lBQ1Y7Ozs7O1VBWndCQyxPQUFFQyxNQVdsQkg7TUFWUjtjQUR3QkU7UUFDeEIsTUFBQTtZQUQwQkM7cUJBQUFBOztXQUFGQyxrQkFBRUMsTUFBQUY7VUFBRkQsSUFBQUU7V0FBQUYsSUFBQUUsS0FBRUQsTUFBQUU7Ozs7Ozs7SUFZdkI7OztpQkFHbUJDLEtBQUVDO1NBQUssT0FBTEE7O1lBNUZ0QjthQURNbkMsSUE2RmdCbUM7YUE3Rm5CYixJQTZGbUJhO2FBM0ZOWjtvQkFGYkQsSUFBQUEsS0FDb0IsMkJBNEZIWSxnQkE3RmpCWjthQUVTVjthQUdSa0IsSUFIWVA7YUFBRWhDLElBMkZFMkM7WUEzRkU7c0JBR2xCSixHQUYyQixPQUFBLDRCQURuQmxCLFNBRk5aLEdBRVlUO2tCQUFBQTtjQUVOLE9BQUE7YUFDRztjQUhHNkMsS0FBQTdDO2NBR1ppQyxNQUhZakM7Y0FBRjhDLE1BR1pQO2NBSFFqQixZQUdOVyxLQUhNWjtjQUFBQSxNQUFBQztjQUdSaUIsSUFIWU87Y0FBRTlDLElBQUE2Qzs7OztZQU1sQjthQURFWCxNQXNGb0JVO2FBcEZOUixXQUZkRixNQUFBQSxNQUNxQiwyQkFxRkhTLE9BdEZsQlQ7YUFFVWE7YUFHUkMsTUFIWVo7YUFBRVQsTUFvRkVnQjtZQXBGRTtzQkFHbEJLLE9BSGNyQjtrQkFDVHNCLE1BRFN0QjtjQUNKLE9BQUEsNEJBREZvQixPQUNIRTs7a0JBRFN0QjtjQUVOLE9BQUE7YUFDRztjQUhHdUIsT0FBQXZCO2NBR1p3QixNQUhZeEI7Y0FBRnlCLE1BR1pKO2NBSFFLLFlBR05GLEtBSE1KO2NBQUFBLFFBQUFNO2NBR1JMLE1BSFlJO2NBQUV6QixNQUFBdUI7Ozs7WUFNbEI7YUFETUksTUErRWdCVjthQS9FbkJILE1BK0VtQkc7YUE5RWxCVyxXQUREZCxNQUFBQSxNQUNvQiwyQkE4RUhFLE9BL0VqQkY7YUFFQ2UsSUFBSSw2QkE2RVliO1lBNUVwQixpQkFESWEsR0FEQUQsU0FBQUEsT0FERUQ7WUFHTixPQUFBLDZCQURJRTs7WUFJSTthQURGQyxTQTBFZ0JiO2FBMUVuQmMsTUEwRW1CZDthQXpFbEJlLE1BQUksNkJBeUVZaEI7YUF4RWhCaUIsTUFEQUQ7YUFFQUUsV0FIREgsTUFBQUEsTUFFQ0UsTUFGREY7YUFJQ0kscUJBSEFILEtBRUFFLFNBQUFBO1lBRUosT0FMTUo7Z0JBRUZHLFFBQ0FDLE1BSEVKO2NBT3dCO3lCQUoxQkksTUFIRUo7d0JBR0ZJO2tCQUtGMUIsSUFMRTBCOztlQU1BO2dCQUFBLE9BREYxQjtnQkFDVyx3QkFSVHdCO2VBUUEsaUJBUkFBLEtBT0Z4QixPQUFBQTtlQUNFLFdBREZBOzJCQUFBQTttQkFBQUE7Ozt3QkFMRTBCLE1BSEVKO2FBV0osaUJBVkVFLHVCQUdBRzs7O2lCQURBRCxNQUhFSjtjQWNxQjt5QkFYdkJJLE1BSEVKO2dCQUdGSTtrQkFZRkUsTUFaRUY7O2VBYUE7Z0JBQUEsT0FERkU7Z0JBQ1csd0JBZlRKO2VBZUEsaUJBZkFBLEtBY0ZJLFNBQUFBO2VBQ0UsV0FERkE7MkJBQUFBO21CQUFBQTs7O3dCQVpFRixNQUhFSjthQWtCSixpQkFqQkVFLHVCQUdBRzs7WUFjRixPQUFBLDZCQWpCRUg7O1FBeUVrQztLQUF0QyxPQUFBLGtDQUpRckIsS0FBRkQ7O1FBbkNZVSxXQUFJaUIsUUFBRzNELElBbUNuQmdDLEtBbkNxQlksTUFtQ25CWDtJQWxDVjs7O1NBRDJCakM7bUJBQUFBOztZQUduQjZCO1dBSGdCOEIsS0FHaEI5QjthQWZvQkUsTUFlcEJGLE1BSGdCOEI7Ozs7O2VBWkEzQyxNQVlKMEIsT0FaUWhCLElBQUFLLEtBQUVwQyxJQVlEaUQ7V0FYN0I7bUJBRDRCbEI7YUFDNUIsTUFBQTtvQkFENEJBO2lCQUFFL0I7WUFLaEI7YUFMZ0IyQixNQUFBM0I7YUFJMUJpRSxJQUowQmpFO2FBQU5zQixZQUlwQjJDLEdBSm9CNUM7YUFBSVcsTUFBQUQ7YUFBSlYsTUFBQUM7YUFBSVMsSUFBQUM7YUFBRWhDLElBQUEyQjs7MEJBQUEzQixHQUFOcUI7OztxQkFRcEI7O2FBS0dnQyxpQkFrQkRWOzs7OztVQWxCQ1UsUUFEYU4sT0FtQmRKLE1BbkJ1Qk07O1VBQUY1QyxHQW9CekIsT0FBQSw0QkFuQktnRCxPQWtCRFY7bUJBbkJxQnRDOzs7UUFVSDtTQVZHNkQsTUFBQTdEO1NBU25CSTtTQVRnQjBEO1NBQUtDLFVBU3JCM0QsR0FVRmtDO1NBbkJjSSxRQUNiTTtTQURpQlcsS0FBQUc7U0FBRzlELElBQUE2RDtTQUFFakIsTUFBQW1COzs7WUFBRkMsTUFBQWhFLE1BQUhpRTthQW1CbEIzQixLQUxKLE9BQUE7WUFkMkI0QixNQW1CdkI1QixRQW5CY0ksUUFDYk0sT0FEaUJXLEtBQUFNLE1BQUdqRSxJQUFBZ0UsS0FBRXBCLE1BQUFzQjs7O1lBQUZDLE1BQUFuRSxNQWVuQjRCLGtCQWZnQndDO2FBbUJsQjlCLEtBREosT0FBQTtRQUZzQjtTQURGK0IsTUFJaEIvQjtTQW5CdUJnQyxVQWVyQjFDLEtBQWN5QztTQWZGM0IsUUFDYk07U0FEaUJXLEtBQUFTO1NBQUdwRSxJQUFBbUU7U0FBRXZCLE1BQUEwQjs7Z0JBc0IzQixPQUFBOzs7R0FpQjJDO1lBRXZDQyxNQUFNakUsR0FBRWtFLElBQUdDO0lBQ2pCLElBRGNDLE9BQUFGLElBQUdHLE9BQUFGO0lBQ2pCO1FBRGNDO1NBQUdDO1dBRUxDLEtBRktELFNBQUhFLE9BQUFILFNBRVpJLEtBRllKLFNBQUdLLE9BQUFKO09BRVMsR0FBQSxXQUZkckUsR0FFVndFLElBQVVGLFNBRkVGLE9BQUFHLE1BQUdGLE9BQUFJOzs7ZUFBQUosTUFLZjtLQUlBOztHQUFLO1lBRUxLLElBQWFyRjtJQUNmLElBRTJCc0Y7YUFBd0JWLGtCO0lBQzNDOzRDQUQyQ0EsT0FBeEJVO0tBQ3ZCckIsSUFBSTtrQkFDT3hELEdBQUssT0FBQSxpQkFEaEJ3RCxHQUNXeEQsTUFBaUI7SUFBaEMsa0NBTGVUO0lBS2YsT0FBQSxrQkFESWlFO0dBRUc7WUE4Q0xzQixLQTVDWUMsT0E0Q0hDLE1BQUVDO0lBQ2IsU0E3Q3NDQyxJQTZDOUJ0RSxLQUFJVSxHQUFFK0IsR0FBSSxlQUFOL0IsR0FBRStCLElBQU56QyxLQUF5QjthQTdDSHVFLE9BOENuQnZFLEtBQUlVLEdBQUksZUFBSkEsSUFBSlYsS0FBa0I7SUE3Q2xCO0tBQVB3RSxPQVRGUixJQW9EU0k7S0ExQ1BLLE9BVkZULElBb0RXSzs7S0F6Q0dLO0tBQUtDLEtBeUNWUDtLQXpDYVEsS0F5Q1hQO0tBekNjbkQ7SUFDekI7UUFEbUJ5RDtVQUFBRSxPQUFBRixPQWlCakJ2RixJQWpCaUJ1RjtTQUFHQztXQXFCWkUsSUFyQllGLE9BQUFHLE9BQUFIO09BY0UsR0FBQSxXQWpCWlQsT0FvQlYvRSxHQUlRMEY7UUFOUixJQWZ1QnJELE1BQUFQLFdBQU55RCxLQUFBRSxNQUFHRCxLQUFBRyxNQUFHN0QsSUFBQU87ZUFpQkUsV0FsQnpCZ0QsTUFrQkFyRjtRQUl5QixHQUFBLFdBdkJ6Qm9GLE1BdUJRTTtTQUlhLEdBekJUSjtVQTBCRixJQTFCSHpFLFFBSG1Cc0UsWUFHSHJELFVBQWhCakIsT0FBS3lFLFVBQUtDLEtBQUFFOztVQTZCUDtXQTdCVUcsT0FBQUo7V0FBYmxELFFBSDJCNEMsU0FHWHBELEdBcUJmNEQ7V0FyQmVuRCxNQUFBVDtpQkFBaEJRO1dBQUtnRDtXQUFRRSxLQUFBSTtXQUFHOUQsSUFBQVM7O1NBc0JiO1VBdEJISyxRQUgyQnNDLFNBR1hwRCxHQXFCZjREO1VBckJlL0MsTUFBQWI7Z0JBQWhCYztVQUFhNEMsS0FBQUc7VUFBRzdELElBQUFhOztRQWtCYixJQWxCSGtELFFBSG1CVixZQUdIckQsVUFBaEIrRCxPQUFVTixLQUFBRTs7O09BSVAsSUFKSEssUUFIbUJYLFlBR0hyRCxVQUFoQmdFLE9BQVVQLEtBQUFFLE1BQUdEOzs7V0FBQUE7TUFRVjtPQVJVTyxPQUFBUDtPQU9oQlEsTUFQZ0JSO09BQWJTLFFBSDJCZixTQUdYcEQsR0FPbkJrRTtPQVBtQkUsTUFBQXBFO2FBQWhCbUU7T0FBVVY7T0FBR0MsS0FBQU87T0FBR2pFLElBQUFvRTs7UUFrQ1ZuRjs7S0FBWSxHQUFaQSxTQUFNQyxNQUFORCxRQUFBb0YsUUFBTW5GLGNBQU5tRjtLQUFZLFlBSzNCLE9BTGVBO0tBRUw7O01BRFYzQztNQUNJNEMsWUFESjVDLEdBRGUyQztNQUFBRSxZQUVYRDtNQUZXckYsTUFBQXNGOzs7R0FXNkI7O3VCQXpFNUNuSCxPQTdGQUMsV0FOQUMsVUFEQUMsT0EwR0k4RSxPQStESlc7SUF0U0p3QjtJQUNBaEg7SUFDQVE7SUFDQXFCO0lBQ0FwQjtJQUNBVTtJQUNBQztJQUNBVDtJQUNBRTtJQUNBSTtJQUNBSTtJQUNBRztJQUNBakI7WUEyU0kwRyxLQUFLdkcsR0FBRUksR0FBSSxPQUFRLFdBbFR2QkssT0FrVFdMLGNBQUZKLFFBQXlCO1lBQzlCd0csS0FBS3hHLEdBQUVJLEdBQUksT0FBUSxXQW5UdkJLLE9BbVRXTCxlQUFGSixRQUEwQjtZQUMvQnlHLE9BQU96RyxHQUFFc0IsR0FBRWxCLEdBQUksT0FBUSxXQXBUM0JLLE9Bb1RlTCxXQUFGa0IsR0FBRnRCLFFBQTJCO1lBQ2xDMEcsT0FBTzFHLEdBQUVzQixHQUFFbEIsR0FBSSxPQUFRLFdBclQzQkssT0FxVGVMLFdBQUZrQixHQUFGdEIsUUFBMkI7WUFDbEMyRyxLQUFLckYsR0FBRUksR0FBRXRCLEdBQUksT0FBUSxXQXRUekJLLE9Bc1RhTCxXQUFKa0IsR0FBRUksUUFBeUI7WUFDaEN5RCxPQUFPN0QsR0FBRWxCLEdBQUksT0FBUSxXQXZUekJLLE9BdVRhTCxXQUFGa0IsUUFBcUI7WUFFNUJzRixNQUFRN0YsS0FBVXhCLEdBQUVTO0lBQ3RCLEdBRFVlLFNBQUtDLE1BQUxELFFBQUFFLEtBQUtELGNBQUxDO1FBQ0FhLGVBRFV2Qzs7aUJBSVYsTUFBQTtTQUZOc0g7S0FBYSxHQUFBLFdBRlA1RixJQUVONEYsSUFGa0I3RyxJQUVNLE9BRGxCOEI7S0FFSyxJQUFOZ0YsZUFBTSxNQUZMaEYsV0FBQUEsaUJBRURnRjs7R0FHSjtZQUVIQyxVQUFXOUYsV0FBa0JqQixHQUFFMEY7SUFDekI7S0FEZXNCO0tBQU5DO0tBQ2IzRixJQVRGc0YsTUFRVzNGLElBQ0ssV0E5VHBCVixPQTZUbUIwRyxPQUFjakg7SUFFL0IsT0FkRTBHLE9BWStCaEIsR0FDN0JwRSxHQURtQjBGOztZQUlyQkU7SUFDa0IsSUFEQ0YsbUJBQU5DLGlCQUNLLE9BQUEsV0FsVXRCMUcsT0FpVWlCMEc7SUFDZixPQWZFOUIsT0FlTSwwQ0FEYTZCOztZQUduQkcsVUFBV2xHLFdBQWtCakI7SUFDdkI7S0FEZWdIO0tBQU5DO0tBQ2IzRixJQWhCRnNGLE1BZVczRixJQUNLLFdBclVwQlYsT0FvVW1CMEcsT0FBY2pIO0lBRS9CLE9BbkJFbUYsT0FrQkU3RCxHQURtQjBGOztZQUlyQkksVUFBVXBILEdBQUksT0FBTSxXQTdVeEJELGFBNlVjQyxPQUFhO1lBRXZCcUgsWUFBWWpIO0lBQ2Q7S0FBSWtIO0tBQ1MsUUFBQTtLQUFQOUg7S0FBRitIO0tBQ0FDLFNBQVMsV0FwVmYxSCxlQW1WTXlIO2tCQUVxQnZIO0tBQ3JCLE9BSkFzSDtnQkFBQUEsY0FPTyxXQU5MOUgsd0JBRW1CUTtlQU1YLFdBUlJSLHdCQUVtQlE7SUFNSztJQU50QixrQ0FKTUk7SUFJTixPQURKb0g7R0FRRTtZQUVKQyxPQUFvQ3pILEdBQUUwRjtJQUN4QztLQUFJZ0MsS0FBSyxXQXhWWG5ILE9BdVZ3Q1A7S0FFbEMySCxLQUFLLFdBelZYcEgsT0F1VjBDbUY7S0FHcENrQztLQUNBQztJQUNKLFNBQUlDLGdCQUFnQkM7Szs7UUFBQUE7O1FBQUFBO2dCQUdHOzs7SUFDdkIsU0FBSUMsY0FBY0QsT0FBTXhJO0tBQU53SSxXQUFpQiwyQkFBWHhJOztJQUF3QjtJQUE1Q3lJLGNBTkFKLE9BRkFGO0lBUUFNLGNBTEFILE9BRkFGO2tCQVk4Qi9IO0tBQzlCLE9BRDhCQTs7UUFHMUI7U0FEU0ksSUFGaUJKO1NBRXJCcUksTUFGcUJySTtTQUd0QjBCLFNBREMyRyxNQUFBQSxNQUFBQSxNQVpUSjtTQVdJSyxRQUVJNUcsR0FES3RCOzs7UUFHTTtTQUFYbUksUUFMc0J2STtTQUt0QndJLGFBQUFELFFBQUFBLFFBQUFBLFFBZlJOO1NBV0lLLFFBSUlFOzs7O1NBQ0s1RyxNQU5pQjVCO1NBTXJCeUksUUFOcUJ6STtTQU1yQjBJLGFBQUFELFFBQUFBLFFBQUFBLFFBaEJUUjtTQVdJSyxRQUtLSSxPQUFJOUc7Ozs7U0FDRkUsSUFQbUI5QjtTQU9yQjJCLE1BUHFCM0I7U0FPckI2QixXQUFBRixNQUFBQSxNQUFBQSxNQWpCVHNHO1NBV0lLLFFBTUt6RyxLQUFFQzs7S0FoQlhvRyxnQkFGQUYsT0FZSU07S0FRSixPQVJJQTtJQVNIO0lBVmUsSUFBaEJLLGdCQUFnQjtrQkFXYzNJO0tBQzlCLE9BRDhCQTs7O1NBRWpCSSxJQUZpQko7U0FFckJxSSxNQUZxQnJJO3FCQUVyQnFJLE1BeEJUTCxXQXdCU0ssVUFBQUE7U0FETEMsY0FDU2xJOzs7UUFDTTtTQUFYbUksUUFIc0J2STtTQUdYLFlBQVh1SSxRQXpCUlAsV0F5QlFPLFlBQUFBO1NBRkpEOzs7O1NBR1MxRyxNQUppQjVCO1NBSXJCd0ksUUFKcUJ4STtxQkFJckJ3SSxRQTFCVFIsV0EwQlNRLFlBQUFBO1NBSExGLGNBR1MxRzs7OztTQUNGRSxJQUxtQjlCO1NBS3JCMEIsSUFMcUIxQjtxQkFLckIwQixJQTNCVHNHLFdBMkJTdEcsUUFBQUE7U0FKTDRHLGNBSU94Rzs7S0F6QlhvRyxnQkFEQUQsT0FzQklLO0tBTUosT0FOSUE7SUFPSDtJQVJlO0tBQWhCTSxnQkFBZ0I7S0FBQTtLQWlCYyxPQUFBLFdBOVhwQzNJLE9Bb1YwQzZGO2tCQTBDbEI2QixHQUFLLGtCQUFMQSxHQUFVO0lBREU7Z0JBQzdCO0tBRDZCLE9BQUEsV0E3WHBDMUgsT0FvVndDRztrQkF5Q2hCdUgsR0FBSyxrQkFBTEEsR0FBVTtJQUE1QixlQUFDO2tCQU5nQjNHLEtBQUlaO0tBQ25CLElBRUd5SSxLQUhZN0g7VUFHWjZILGFBSGdCekksNEJBQUFBO1VBRUgwQyxNQUZHMUMsTUFFWDBJLEtBRk85SDtNQUVNLGVBQUw4QixNQUFSZ0c7O1VBRk85SCxpQkFBSVosNEJBQUFBLFVBR0h3QixNQUhHeEIsTUFHRSxXQUFsQnlJLFFBQWFqSDtLQUNULE1BQUE7SUFBWTtJQUp2QixJQURFbUgsV0FDRjtrQkFRK0IvSTtLQUM3QixXQUQ2QkE7O2lCQUFBQTs7T0E0QmQsTUFBQTs7O1dBWEtnSjtPQUFPLFdBQU0sV0FuQ2pDSixlQW1Db0JJOztVQVJGQztNQTNDbEJiLGNBTEFILE9BZ0RrQmdCO01BRVgsV0FBQSxXQTdZYnRJLE9BdVZ3Q1A7TUFzRGhDLFdBQUksNkJBRlk2STs7OztpQkFUV2pKLE1BZ0JmNkk7aUJBQWEsV0FBTSxXQTdDakNGLGVBNkNjRTs7O09BSEg7UUFEb0JDO1FBQ3pCSSxPQUFLLFdBMUNYUCxlQTZDY0U7UUFGUk0sT0FBSyxXQWhDWFAsZUE4QitCRTtPQUc3QixXQUFNLHVCQUZGSSxNQUNBQzs7TUFLSyxJQURpQkMsZUFDdEJDLEtBQUssV0FyWmpCMUksT0F1VndDUDtNQVNsQ2dJLGNBTkFKLE9BMkRNcUI7TUFyRE5qQixjQUxBSCxPQXlENEJtQjtNQUkxQixXQUFHLHVCQUhDQyxJQURzQkQ7O2dCQWxCQ3BKLE1BTWpCc0o7O01BeENabEIsY0FOQUosT0E4Q1lzQjtNQUVBLFdBQUEsV0ExWWxCM0ksT0F1VjBDbUY7TUFtRGxDLFdBQUksdUJBRk13RDs7OztNQXhDWmxCLGNBTkFKLE9BOENZc0I7TUFtQkQsSUFBTEMsT0FBSyxXQTNaakI1SSxPQXVWMENtRjtNQVNwQ3NDLGNBTEFILE9BZ0VNc0I7TUFFSixXQUFHLHVCQXJCT0QsTUFtQk5DOztTQXZCcUJDO0tBcEMzQnBCLGNBTkFKLE9BOENZc0I7S0F4Q1psQixjQUxBSCxPQXlDMkJ1QjtLQUd6QixXQUFJLHVCQUNNRixNQUplRTtJQTBCQTtJQTVCZixJQUFaQyxZQUFZLCtCQVRaVjtJQXVDSixPQUFBLFdBdmFGN0ksWUF1YWEsdUJBeEVQNEgsSUFDQUMsS0F5Q0EwQjtHQThCMEI7WUFFNUJDO0lBQThCOztXQUN6QnRKLGNBQUZzQixjQUFRLGNBQVJBLGdCQUFFdEI7O1dBRUh1QixnQkFBSyxjQUFMQTs7V0FER0MsZ0JBQUZDO09BQVEsY0FBUkEsa0JBQUVEOztXQUVBRSxjQUFGQztPQUFRLGNBQVJBLG9CQUFFRDs7R0FBaUI7WUFFdEI2SCxJQUFJQztJQUd3QyxVQUFBLFdBeGFoRDNKLE9BcWFRMko7O0tBQ2M7VUFFUjVKO01BQUssV0FBTSw0QkFUckIwSixTQVNVMUo7O1NBREZMO0tBQUssV0FBSSwyQkFBVEE7SUFDa0M7SUFGcEMsSUFBSmdJLElBQUksb0NBSWEsT0FBQSxXQTdhdkJoSCxPQXdhUWlKO0lBS04sT0FBQSxXQXBiRjFKLFlBb2JhLGtDQUpQeUg7R0FJNkI7WUFFL0JrQyxPQUFPQyxNQUFLbks7SUFDZDs7S0FFSXFIO0tBQ0ErQzthQUVBQyxZQUNXcks7S0FIWG9LLFVBaUJNLDJCQWRLcEs7S0FKWHFIO1NBSVcxRixNQUFBM0IsR0FBWXNLLFNBQUlDLGFBQVFDO0tBQU87V0FBL0I3SSxLQWdCSixPQUFBLDJCQWhCZ0IySTtVQUFaekgsS0FBQWxCLFFBRVRsQixJQUZTa0I7TUFHTCxHQUFBLFdBVkR3SSxNQVNIMUo7T0FORjRHLFdBVWdCLHNCQU5Xa0QsU0FBUUMsY0FKbkNuRDtPQVdPO1FBUDRCb0QsU0FBQUQ7UUFBUkUsWUFBQUg7UUFBSkksWUFFckJsSyxHQUZxQjZKO1FBQVozSSxNQUFBa0I7UUFBWXlILE1BQUFLO1FBQUlKLFVBQUFHO1FBQVFGLE9BQUFDOzs7V0FBUkcsWUFBQUwsaUJBQWhCNUksTUFBQWtCLElBQWdCMEgsVUFBQUs7O0lBZ0JIO0lBRzVCLFNBQUlDLFVBQVU5SSxHQUFJLFlBQUpBLElBQUFBLEtBdEJWcUksbUJBc0JVckksTUFBc0M7YUFFaEQrSSxvQkFBb0JDLHNCQUFxQkM7S0FDM0M7TUFBSUMseUJBSEZKLFVBRW9CRTtNQUVrQixRQUFBLHVCQURwQ0Usd0JBMUJGNUQ7TUEyQnlCNkQ7TUFBWEM7TUFBWkM7S0FDSixHQURnQkQ7O09BR1BFLHdCQUhPRjtPQUNaRztTQUdDOztXQUxETDtXQUlLSTtXQUhrQkg7O1VBQ3ZCSSxlQUR1Qko7Y0FNdkJLLFNBQVNDLGFBQVlDO01BQ3ZCO09BQUlDLGlCQVRxQ1YsVUFRbEJTLDBCQUFBQTtNQWpDdkJwRTtPQW1DUyxzQkFGRW1FLHFCQUNQRSxnQkFsQ0pyRTs7S0FtQzJEO0tBRXBELHVCQUpMa0UsVUFMQUQ7S0FVeUI7TUFBekJLO1FBQXlCLHNCQVh6QlA7O1dBYWdDLHVCQWJoQ0E7S0FlSixHQWpCMkNKO01BekJ6QzNEO09BMEN1QjtvQkFoQnJCNEQsd0JBWUFVLHFCQXRDRnRFO0tBQ0ErQztLQTJDRixPQU5JdUI7SUFNZTthQTJDakJDLGtCQUFrQkMsZ0JBQWVDLGNBQWFDO0tBQ2hEO01BQUlDLGNBRDRDRDtNQUU1Q0UsVUFGZ0JKLGlCQUFlQztLQUduQyxHQURJRztNQUVGLFVBSmtCSjtTQUFlQztXQUlqQ0k7O1lBQ01DLFFBSkpIO1FBS0E7U0FDbUI7VUFBYkksYUFBYSx1QkFIckJGLFFBM0ZBN0U7VUErRlFnRixVQURBRCxhQUZGRDtTQTVGTjlFLFdBZ0dhLHNCQUxiNkUsZ0JBSVFHLFNBL0ZSaEY7Ozs7OztRQTJGQSxVQUFBNkU7V0FKaUNKLGlCQUlqQ0k7WUFBQUE7Ozs7O01BVUEsVUFka0JMO2dCQUFlQztXQWNqQ1E7O1FBQ0U7U0FFbUI7VUFEYkMsVUFmTlA7VUFnQk1RLGVBQWEsdUJBSHJCRixVQXJHQWpGO1VBeUdRb0YsWUFEQUQsZUFEQUQ7U0F2R1JsRjtVQTBHYSxzQkFMYmlGLGtCQUlRRyxXQXpHUnBGOzs7Ozs7UUFxR0EsVUFBQWlGO1dBZGlDUixpQkFjakNRO1lBQUFBOzs7O1FBZDhDUDtVQXdCekNXLGdCQXhCeUNYO01BdkY5QzFFLFdBZ0hVLHNCQXpCdUJ5RSxjQXdCNUJZLGVBL0dMckY7OztLQUFBQSxXQWtIVSxzQkEzQnVCeUUsY0F2RmpDekU7O0lBa0gyQzthQUczQ3NGO0tBQVk7O1lBQ05sTSxjQUFIc0I7UUFDQyxHQUFBLFdBMUhDb0ksTUF5SEMxSjtTQUdRLElBQVArSixPQWhHUE0sb0JBNkZHL0k7U0FJQSxlQURJeUksTUFIRC9KOztRQTdGTnFLLG9CQTZGRy9JO1FBUUU7O1FBR0ksSUFEUEMsZ0JBakZrQjRLLHVCQXhCcEIvQixVQXlHRTdJO1FBRUQ7U0FBc0I7VUFBSkcsSUFBSSx1QkFuRkh5SyxzQkEvQ3BCdkY7VUFrSStDLGNBQTVCbEY7VUFBZDBLOzs7OzthQUFBQTs7UUFsRlc7U0FBZGIsY0FBYyxzQkFESVksc0JBL0NwQnZGO1NBaURNNkQ7V0FBYSx1QkFGQzBCLHNCQS9DcEJ2RjtTQWtERWtFO29CQUFTQyxhQUFZQztZQUN2QjthQUFJcUIsUUFIRmQsY0FFcUJQLGtCQUFBQTtZQWxEdkJwRTthQW9EUyxzQkFGRW1FLHFCQUNQc0IsT0FuREp6Rjs7V0FvRGtEO1FBRTdDLEtBQUEsc0JBdERMQTthQXdESTBGLFNBQVksdUJBeERoQjFGO1NBQUFBLFdBeURTLHNCQURMMEYsUUF4REoxRjs7UUFDQStDO1FBMkRGLHVCQVZJbUIsVUFESUw7UUFtRkwsT0FGSTJCOztRQUlJO1NBREg1SztTQUFIQztTQTdEd0I4Syx1QkFqRDNCbkMsVUE4R0czSTtRQUVGO1NBRWdCLElBQVIrSyxRQUFRLHVCQWpFVUQsc0JBeEUzQjNGO1NBMElRLEdBQUEsV0E3SUg4QyxNQXdJQ2xJOzRCQUlHZ0wsT0FKSGhMOzs7V0FyRUVxSjthQUFhLHVCQVFNMEIsc0JBeEUzQjNGO1dBaUVFNkY7c0JBQVMxQixhQUFZQztjQWpFdkJwRTtlQWtFUzs0QkFERW1FLGFBQVlDLHlCQWpFdkJwRTs7YUFrRTREO1VBbEU1REEsV0FvRU8sc0JBSW9CMkYsc0JBeEUzQjNGO1VBcUVGLHVCQUpJNkYsWUFETTVCOzRCQXlFQzJCOztTQUVDOzs7OztTQUlELEtBQUEsV0FsSko5QyxNQXdJQ2xJLE1BZUU7U0EzRXlCO1VBQUEsUUFBQSx1QkFETitLLHNCQXhFM0IzRjtVQXlFb0I4RjtVQUFOQztVQUFaaEM7U0FDSixTQURnQmdDO1VBQ2hCLE1BQUE7O1VBQ0lDO3FCQUFTN0IsYUFBWUM7YUEzRXZCcEU7Y0E0RVM7MkJBREVtRSxhQUFZQyx5QkEzRXZCcEU7O1lBNEU0RDtTQUU5RDtVQUN1QztXQUFBLE1BQUEsdUJBTm5DK0Q7V0FNRWtDOzs7OztjQUFBQTs7U0FBb0YsSUFrRTVFQyx3QkFsRVJEO1NBL0VKakc7VUFrRk87dUJBVm9CMkYsc0JBeUVmTyx1QkFqSlpsRztTQW1GRix1QkFSSWdHLFlBRmtCRjtTQXlFWixlQURJSSx1QkFaTnRMOzs7UUFrQmE7U0FESHVMO1NBQWJDO1NBQ0VDLGdCQWhJTDdDLFVBK0hHNEM7U0FFRUUsWUFEQUQsZ0JBRFdGO1FBR2Y7U0FDd0I7VUFBbEJJLGtCQUFrQix1QkFIcEJGLGVBdkpMckc7U0EySkc7VUFDTTtXQUFBLE1BQUEsdUJBSkpzRyxXQXhKTHRHO1dBMkpPd0c7Ozs7O1VBS0k7V0FEQ0MsYUFBbUIsdUJBUjFCSixlQXZKTHJHO1dBZ0tXO2FBQUEsc0JBREN5Rzs7Z0JBR0ssdUJBSExBO1dBSkxEOztTQXBFUGpDLGtCQWdFSzhCLGVBQ0FDLGVBR0VFOzs7WUFBQUEsa0JBREFEOzttQkFBQUEsaUJBQ0FDLGdCQURBRDs7O1NBWUM7Ozs7O1NBL0VSaEMsa0JBZ0VLOEIsZUFDQUM7U0FtQkQ7OztJQUNFO2FBR05JO0tBQVc7TUFHUyxJQURkMU4sY0FDYyxNQUFBLDRCQTdEcEJzTSxXQTRETXRNO01BQ0wsV0FBTTs7U0FGSEw7S0FBSyxXQTdLVHFLLFlBNktJcks7SUFFdUM7SUFFbEI7S0FBQSxNQUFBLFdBbm1CL0JNLE9BNGFnQk47S0F1TFZnSSxJQUFJLHlCQUxKK0Y7SUFNSixPQUFBLFdBOW1CRnhOLFlBNGJNOEosWUFrTG9CLFdBdm1CMUJySixPQSthZ0JoQixLQXVMVmdJO0dBQ2dDOztZQUlsQ2dHLFFBQVFDLElBQUd2RzthQUNUd0csYUFBYTdNLEtBQUlVLEdBQUUrQjtLQUFJLE9BQUcsV0FEcEJtSyxJQUNhbkssS0FBTnpDLE1BQWdDLHNCQUE1QlUsR0FBSlY7SUFBZ0Q7O0lBTS9ELFNBTEU4TTtTQUNXbk0sU0FBRVY7O2tCQUVMLE9BRktBO01BQ2E7T0FBbkJpRztPQUFMekQ7T0FBd0IsUUFIMUJvSyxhQUVhNU0sT0FBRlUsS0FDVDhCO09BQXdCLE1BRGY5QjtPQUFBQTtPQUFFVjtlQUNOaUc7OztJQUtYLFNBQUk2RyxpQkFBaUJyTSxHQUFFcEIsR0FBRVU7a0JBQ1BXLEtBQU0sT0FESEQsS0FDSEMsTUFBc0IsV0FEakJyQixHQUNMcUIsVUFBQUEsSUFBb0M7S0FBcEQsT0FBQSw0QkFEdUJYO0lBQ2tDO2FBRXZEVixFQUFRVTtLQUFKOztPQUVFZ047O2tCQUVDaE47VUFBTDs7YUFVZTtjQURKeUM7Y0FBSC9CO2NBQ0NUO2dCQWpCWDhNO2tCQWdCVXJNLHNCLHdCQVRIVjthQVdBLE9BMUJQNk0sYUF5Qlc1TSxPQUREUyxHQUFHK0I7O2FBRGlCLElBRHJCOUIsZ0JBQ3FCLE1BQUEsc0JBRHJCQSxLQVBGWDthQVF1QixPQWY5QitNO3NCQWNTcE0sd0I7O2lCQUtJc00sZ0JBQUhwTTthQUNILE9BNUJQZ00sYUE0Qm9CLHNCQURWaE0sS0FaSGIsTUFZR2EsS0FBR29NOzthQVZnQjtjQURoQmxNO2NBQUhLO2NBQ21CLE1BQUEsc0JBRGhCTCxLQUROZjtnQkFFRyxzQkFEQW9CLEtBREhwQixjQUdLLE9BSExBO2FBSVEsR0FBQSxzQkFITG9CLEtBREhwQjtjQUttQixVQUFBLHNCQUpoQm9CLEtBREhwQjtjQUttQixPQUFBLHNCQUpiZTs7YUFLWSxVQUFBLHNCQUxaQSxLQUROZjthQU1rQixPQUFBLHNCQUxmb0I7O1NBWW9DO01BZDlDLE9BQUEsaUNBSFFwQixLQUVGZ047O1NBREY1TjtLQUFLLE9BWFQwTixLQVdJMU47SUFrQks7SUFFc0I7S0FBQSxNQUFBLFdBem9CckNILE9Bd21CZW9IO0tBaUNFLE1BL0JYeUcsS0ErQmlCLFdBNW9CdkJuTixPQTJtQmUwRztLQWlDYixNQUFBLDRCQXJCSS9HO0lBcUJKLE9BQUEsV0FDRztHQUEyQjs7Ozs7UUF0cEJoQ29HO1FBQ0FoSDtRQUNBUTtRQUNBcUI7UUFDQXBCO1FBQ0FVO1FBQ0FDO1FBQ0FUO1FBQ0FFO1FBQ0FJO1FBQ0FJO1FBQ0FHO1FBQ0FqQjtRQTJTSTBHO1FBQ0FDO1FBQ0FDO1FBR0F0QjtRQWNBK0I7UUFHQUM7UUFuQkFUO1FBWUFLO1FBWEFKO1FBc0JBUztRQUVBQztRQWFBSTtRQWlGQThCO1FBT0FFO1FBNExBOEQ7O2lCQXFERXJPLE1BQU1VLEdBQUVnQjtzQkFMRUEsS0FBRmhCO1VBS21DLGNBTG5DQSxVQUdIa08sSUFIR2xPLE1BR0UsT0FBQSxpQkFBTGtPLEdBSEtsTjtzQkFBRmhCLE1BRUFtRCxjQUFGZ0w7VUFBUSxPQUFBLGlCQUFSQSxLQUFFaEwsR0FGRW5DO1NBSzhDO1NBQTFDLE9BQUEsaUNBQU5BLEtBQUZoQjtRQUF5RDtpQkFNL0RULFVBSk1lO1NBSWlCO1UsNEJBRmxCNE4sY0FBSyxvQkFBTEE7Z0NBREcvSyxjQUFGZ0w7VUFBUSx3QkFBUkEsS0FBZ0IsV0FEaEI3TixHQUNFNkM7O1NBR2UsT0FBQTtRQUFTO2lCQUVoQzNELFNBQVNjLEdBQUVtQixHQUFJLE9BQUEsa0JBQU5uQixHQUFFbUIsR0FBYTtZQUV4QmhDO2lCQUVBOEUsTUFBTWpFLEdBQUksT0FBQSxrQkFBSkEsR0FBYTtpQkFFbkI0RSxLQUFNN0QsSUFBR2pCLEdBQUUwRjtrQkFFUHNJLEVBQUVDLEtBQUs1SyxHQUFFNks7VUFDWCxHQURTN0s7ZUFFRndLLE1BRkV4SztnQkFBRTZLLEdBT1Q7ZUFIYUMsTUFKSkQ7V0FFVyxPQUFBLFdBSmxCak4sSUFJRzRNLEtBRVFNLHVCQUFBQTs7ZUFKSkQsR0FXVDtjQUhXRSxNQVJGRjtVQVNULG1CQURXRTtTQUdQO1NBRVIsSUFkRWxHLElBY0YsaUJBYkk4RixHQUZLaE8sR0FBRTBGO2tCQWdCVDJJLElBQUVKLEtBQUlqTyxHQUFFWTtVQUNWLFVBRFFaLGdCQUtOLHdCQUxFaU8sTUFBTXJOO21CQUFGWjtlQUVIcUQsSUFGR3JEO1dBR04sd0JBSEVpTywyQkFBQUEsS0FFQzVLLEtBRkt6Qzs7Y0FNTGlOLE1BTkc3TjtVQU9OLDRCQVBFaU8sS0FNQ0osT0FOS2pOO1NBT1k7U0FFZixVQUFBLGtCQVRMeU4sS0FmQW5HO1NBd0JLLE9BQUE7UUFBZ0I7OzRCQXZDdkJoSixPQU1BQyxXQUVBQyxVQUVBQyxPQUVBOEUsT0FFQVc7U0F2ckJOd0I7U0FDQWhIO1NBQ0FRO1NBQ0FxQjtTQUNBcEI7U0FDQVU7U0FDQUM7U0FDQVQ7U0FDQUU7U0FDQUk7U0FDQUk7U0FDQUc7U0FDQWpCO2lCQTBzQkk0SixPQUFPQyxNQUFLeEI7a0JBRVZnRTtVQUFZO2VBS1A0QjtXQUFLLHdCQUFMQTs7Z0NBSkd6SyxjQUFGMEs7VUFDRixPQUFBLFdBSkNyRSxNQUdDcUUsS0FBRTFLO3lDQUFGMEssS0FBRTFLOztTQUlVO2tCQUdsQmlLO1VBQVc7V0FFbUIsSUFBeEIxTixjQUF3QixNQUFBLDRCQVY5QnNNLFdBVU10TTtXQUFLLFdBQU07O2NBRGJzSTtVQUFLLFdBQUksa0JBWFJ3QixNQVdEeEI7U0FDaUQ7U0FHNUI7VUFBQSxNQUFBLFdBenRCL0JySSxPQTBzQmdCcUk7VUFlVlgsSUFBSSx5QkFMSitGO1VBTXNCLE1BQUEsV0E3dEI1Qi9NLE9BNnNCZ0IySDtTQWdCZCxPQUFBLFdBcHVCRnBJLFlBb3VCYSxrQkFoQkY0SixZQWVMbkM7UUFDa0M7O2dCQXR1QnhDakI7Z0JBQ0FoSDtnQkFDQVE7Z0JBQ0FxQjtnQkFDQXBCO2dCQUNBVTtnQkFDQUM7Z0JBQ0FUO2dCQUNBRTtnQkFDQUk7Z0JBQ0FJO2dCQUNBRztnQkFDQWpCO2dCQTBzQkk0Sjs7Ozs7RTs7Ozs7Ozs7Ozs7O0dFdnVCUTs7Ozs7SUFBQTtZQW1CUjZFLE9BQU9DLEdBQVNDLEdBQUksT0FBYkQsSUFBU0MsVUFBUztZQUV6QkMsU0FBUUYsR0FBU0MsR0FBSSxPQUFiRCxLQUFTQyxVQUFVO1lBRTNCRSxTQUFRSCxHQUFTQyxHQUFJLE9BQWJELE1BQVNDLFVBQVU7WUFFM0JHLFNBQU9KLEdBQVNDLEdBQUksT0FBYkQsTUFBU0MsVUFBUztZQUV6QkksU0FBT0wsR0FBU0MsR0FBSSxPQUFKQSxJQUFURCxVQUFrQjtZQUV6Qk0sU0FBUU4sR0FBU0MsR0FBSSxPQUFKQSxLQUFURCxVQUFtQjtPQUUzQk87WUFFQUMsTUFBT1IsR0FBU0MsR0FBSSxPQUFiRCxNQUFTQyxVQUFTO1lBRXpCUSxJQUFLVCxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDUyxJQUFLVixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUE7O09BQ25DRjtPQUVBRztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFNQUM7SUFIVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR1ZBOzs7Ozs7OztZQU1BQyxRQUFPWixHQUFXQyxHQUFZLE9BQXZCRCxNQUFXQyxVQUEwQjtHQUhwQztJQUFBOzs7Ozs7Ozs7T0FHUlc7SUE5QkFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDOzs7Ozs7O09BbEJBVDtPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7YUMxQkFDLG9CQUFldkIsR0FBSSxPQUFBLGlCQUFKQSxHQUE4QjthQUU3Q3dCLFdBQVdDLEtBQU0sT0FGakJGLDZCQUVXRSxLQUFtQzthQUU5Q0MsUUFBUUQsS0FBTSxPQUpkRiwwQkFJUUUsS0FBZ0M7YUFFeENFLFVBQVVGLEtBQU0sT0FOaEJGLDRCQU1VRSxLQUFrQzthQUU1Q0csUUFBUUgsS0FBTSxPQVJkRiwwQkFRUUUsS0FBZ0M7YUFFeENJLFFBQVFKLEtBQU0sT0FWZEYsMEJBVVFFLEtBQWdDO2FBRXhDSyxRQUFRTCxLQUFNLE9BWmRGLDBCQVlRRSxLQUFnQzthQUV4Q00sU0FBU04sS0FBTSxPQWRmRiwyQkFjU0UsS0FBaUM7YUFFMUNPLFFBQVFQLEtBQU0sT0FoQmRGLDBCQWdCUUUsS0FBZ0M7YUFFeENRLFFBQVFSLEtBQU0sT0FsQmRGLDBCQWtCUUUsS0FBZ0M7YUFFeENTLFNBQVNULEtBQU0sT0FwQmZGLDJCQW9CU0UsS0FBaUM7YUFFMUNVLFFBQVFWLEtBQU0sT0F0QmRGLDBCQXNCUUUsS0FBZ0M7YUFFeENXLFFBQVFYLEtBQU0sT0F4QmRGLDBCQXdCUUUsS0FBZ0M7YUFFeENZLFlBQVlaLEtBQU0sT0ExQmxCRiw4QkEwQllFLEtBQW9DO2FBRWhEYSxVQUFVYixLQUFNLE9BNUJoQkYsNEJBNEJVRSxLQUFrQzthQUU1Q2MsVUFBVWQsS0FBTSxPQTlCaEJGLDRCQThCVUUsS0FBa0M7YUFFNUNlLFNBQVNmLEtBQU0sT0FoQ2ZGLDJCQWdDU0UsS0FBaUM7YUFFMUNnQixZQUFZaEIsS0FBTSxPQWxDbEJGLDhCQWtDWUUsS0FBb0M7YUFFaERpQixVQUFVakIsS0FBTSxPQXBDaEJGLDRCQW9DVUUsS0FBa0M7YUFFNUNrQixTQUFTbEIsS0FBTSxPQXRDZkYsMkJBc0NTRSxLQUFpQzthQUUxQ21CLFlBQVluQixLQUFNLE9BeENsQkYsOEJBd0NZRSxLQUFvQzthQUVoRG9CLFVBQVVwQixLQUFNLE9BMUNoQkYsNEJBMENVRSxLQUFrQzthQUU1Q3FCLE1BQU1yQixLQUFNLE9BNUNaRix3QkE0Q01FLEtBQThCO2FBRXBDc0IsTUFBTXRCLEtBQU0sT0E5Q1pGLHdCQThDTUUsS0FBOEI7YUFFcEN1QixNQUFNdkIsS0FBTSxPQWhEWkYsd0JBZ0RNRSxLQUE4QjthQUVwQ3dCLE1BQU14QixLQUFNLE9BbERaRix3QkFrRE1FLEtBQThCO2FBRXBDeUIsT0FBT3pCLEtBQU0sT0FwRGJGLHlCQW9ET0UsS0FBK0I7YUFFdEMwQixLQUFLMUIsS0FBTSxPQXREWEYsdUJBc0RLRSxLQUE2QjthQUVsQzJCLFdBQVczQixLQUFNLE9BeERqQkYsNkJBd0RXRSxLQUFtQzthQUU5QzRCLGNBQWM1QixLQUFNLE9BMURwQkYsZ0NBMERjRSxLQUFzQzthQUVwRDZCLE9BQU83QixLQUFNLE9BNURiRix5QkE0RE9FLEtBQStCO2FBRXRDOEIsTUFBTTlCLEtBQU0sT0E5RFpGLHdCQThETUUsS0FBOEI7YUFFcEMrQixNQUFNL0IsS0FBTSxPQWhFWkYsd0JBZ0VNRSxLQUE4QjthQUVwQ2dDLE9BQU9oQyxLQUFNLE9BbEViRix5QkFrRU9FLEtBQStCO2FBRXRDaUMsT0FBT2pDLEtBQU0sT0FwRWJGLHlCQW9FT0UsS0FBK0I7YUFFdENrQyxLQUFLbEMsS0FBTSxPQXRFWEYsdUJBc0VLRSxLQUE2QjthQUVsQ21DLE9BQU9uQyxLQUFNLE9BeEViRix5QkF3RU9FLEtBQStCO2FBRXRDb0MsVUFBVXBDLEtBQU0sT0ExRWhCRiw0QkEwRVVFLEtBQWtDO2FBRTVDcUMsU0FBU3JDLEtBQU0sT0E1RWZGLDJCQTRFU0UsS0FBaUM7YUFFMUNzQyxRQUFRdEMsS0FBTSxPQTlFZEYsMEJBOEVRRSxLQUFnQzthQUV4Q3VDLE9BQU92QyxLQUFNLE9BaEZiRix5QkFnRk9FLEtBQStCO2FBRXRDd0MsVUFBVXhDLEtBQU0sT0FsRmhCRiw0QkFrRlVFLEtBQWtDO2FBRTVDeUMsTUFBTXpDLEtBQU0sT0FwRlpGLHdCQW9GTUUsS0FBOEI7YUFFcEMwQyxNQUFNMUMsS0FBTSxPQXRGWkYsd0JBc0ZNRSxLQUE4QjthQUVwQzJDLE9BQU8zQyxLQUFNLE9BeEZiRix5QkF3Rk9FLEtBQStCO2FBRXRDNEMsU0FBUzVDLEtBQU0sT0ExRmZGLDJCQTBGU0UsS0FBaUM7YUFFMUM2QyxTQUFTN0MsS0FBTSxPQTVGZkYsMkJBNEZTRSxLQUFpQzthQUUxQzhDLFNBQVM5QyxLQUFNLE9BOUZmRiwyQkE4RlNFLEtBQWlDO2FBRTFDK0MsV0FBVy9DLEtBQU0sT0FoR2pCRiw2QkFnR1dFLEtBQW1DO2FBRTlDZ0QsU0FBU2hELEtBQU0sT0FsR2ZGLDJCQWtHU0UsS0FBaUM7YUFFMUNpRCxVQUFVakQsS0FBTSxPQXBHaEJGLDRCQW9HVUUsS0FBa0M7YUFFNUNrRCxVQUFVbEQsS0FBTSxPQXRHaEJGLDRCQXNHVUUsS0FBa0M7YUFFNUNtRCxTQUFTbkQsS0FBTSxPQXhHZkYsMkJBd0dTRSxLQUFpQzthQUUxQ29ELFNBQVNwRCxLQUFNLE9BMUdmRiwyQkEwR1NFLEtBQWlDO2FBSTFDcUQsTUFBTXJELEtBQU0sT0E5R1pGLHdCQThHTUUsS0FBOEI7YUFFcENzRCxNQUFNdEQsS0FBTSxPQWhIWkYsd0JBZ0hNRSxLQUE4QjthQUVwQ3VELE1BQU12RCxLQUFNLE9BbEhaRix3QkFrSE1FLEtBQThCO2FBRXBDd0QsTUFBTXhELEtBQU0sT0FwSFpGLHdCQW9ITUUsS0FBOEI7YUFFcEN5RCxNQUFNekQsS0FBTSxPQXRIWkYsd0JBc0hNRSxLQUE4QjthQUVwQzBELE1BQU0xRCxLQUFNLE9BeEhaRix3QkF3SE1FLEtBQThCO2FBSXBDMkQsUUFBUTNELEtBQU0sT0E1SGRGLDBCQTRIUUUsS0FBZ0M7YUFFeEM0RCxXQUFXNUQsS0FBTSxPQTlIakJGLDZCQThIV0UsS0FBbUM7YUFFOUM2RCxXQUFXN0QsS0FBTSxPQWhJakJGLDZCQWdJV0UsS0FBbUM7YUFFOUM4RCxTQUFTOUQsS0FBTSxPQWxJZkYsMkJBa0lTRSxLQUFpQzthQUUxQytELEtBQUsvRCxLQUFNLE9BcElYRix1QkFvSUtFLEtBQTZCO2FBRWxDZ0UsT0FBT2hFLEtBQU0sT0F0SWJGLHlCQXNJT0UsS0FBK0I7YUFFdENpRSxRQUFRakUsS0FBTSxPQXhJZEYsMEJBd0lRRSxLQUFnQzthQUV4Q2tFLFFBQVFsRSxLQUFNLE9BMUlkRiwwQkEwSVFFLEtBQWdDO2FBRXhDbUUsWUFBWW5FLEtBQU0sT0E1SWxCRiw4QkE0SVlFLEtBQW9DO2FBRWhEb0UsV0FBV3BFLEtBQU0sT0E5SWpCRiw2QkE4SVdFLEtBQW1DO2FBRTlDcUUsWUFBWXJFLEtBQU0sT0FoSmxCRiw4QkFnSllFLEtBQW9DO2FBRWhEc0UsTUFBTXRFLEtBQU0sT0FsSlpGLHdCQWtKTUUsS0FBOEI7YUFFcEN1RSxXQUFXdkUsS0FBTSxPQXBKakJGLDZCQW9KV0UsS0FBbUM7YUFFOUN3RSxPQUFPeEUsS0FBTSxPQXRKYkYseUJBc0pPRSxLQUErQjthQUV0Q3lFLE1BQU16RSxLQUFNLE9BeEpaRix3QkF3Sk1FLEtBQThCO2FBRXBDMEUsTUFBTTFFLEtBQU0sT0ExSlpGLHdCQTBKTUUsS0FBOEI7YUFFcEMyRSxTQUFTM0UsS0FBTSxPQTVKZkYsMkJBNEpTRSxLQUFpQzthQUUxQzRFLGNBQWM1RSxLQUFNLE9BOUpwQkYsZ0NBOEpjRSxLQUFzQzthQUVwRDZFLFVBQVU3RSxLQUFNLE9BaEtoQkYsNEJBZ0tVRSxLQUFrQzthQUU1QzhFLFVBQVU5RSxLQUFNLE9BbEtoQkYsNEJBa0tVRSxLQUFrQzthQUU1QytFLFVBQVUvRSxLQUFNLE9BcEtoQkYsNEJBb0tVRSxLQUFrQzthQUU1Q2dGLFVBQVVoRixLQUFNLE9BdEtoQkYsNEJBc0tVRSxLQUFrQzthQUU1Q2lGLEtBQUtqRixLQUFNLE9BeEtYRix1QkF3S0tFLEtBQTZCO2FBRWxDa0YsT0FBT2xGLEtBQU0sT0ExS2JGLHlCQTBLT0UsS0FBK0I7YUFFdENtRixVQUFVbkYsS0FBTSxPQTVLaEJGLDRCQTRLVUUsS0FBa0M7YUFFNUNvRixRQUFRcEYsS0FBTSxPQTlLZEYsMEJBOEtRRSxLQUFnQzthQUV4Q3FGLFFBQVFyRixLQUFNLE9BaExkRiwwQkFnTFFFLEtBQWdDO2FBRXhDc0YsUUFBUXRGLEtBQU0sT0FsTGRGLDBCQWtMUUUsS0FBZ0M7YUFFeEN1RixTQUFTdkYsS0FBTSxPQXBMZkYsMkJBb0xTRSxLQUFpQzthQUUxQ3dGLE9BQU94RixLQUFNLE9BdExiRix5QkFzTE9FLEtBQStCO2FBRXRDeUYsWUFBWXpGLEtBQU0sT0F4TGxCRiw4QkF3TFlFLEtBQW9DO2FBRWhEMEYsVUFBVTFGLEtBQU0sT0ExTGhCRiw0QkEwTFVFLEtBQWtDO2FBRTVDMkYsWUFBWTNGLEtBQU0sT0E1TGxCRiw4QkE0TFlFLEtBQW9DO2FBRWhENEYsS0FBSzVGLEtBQU0sT0E5TFhGLHVCQThMS0UsS0FBNkI7YUFFbEM2RixNQUFNN0YsS0FBTSxPQWhNWkYsd0JBZ01NRSxLQUE4QjthQUVwQzhGLE1BQU05RixLQUFNLE9BbE1aRix3QkFrTU1FLEtBQThCO2FBRXBDK0YsUUFBUS9GLEtBQU0sT0FwTWRGLDBCQW9NUUUsS0FBZ0M7YUFFeENnRyxRQUFRaEcsS0FBTSxPQXRNZEYsMEJBc01RRSxLQUFnQzthQUV4Q2lHLFdBQVdqRyxLQUFNLE9BeE1qQkYsNkJBd01XRSxLQUFtQzthQUU5Q2tHLFNBQVNsRyxLQUFNLE9BMU1mRiwyQkEwTVNFLEtBQWlDO2FBRTFDbUcsVUFBVW5HLEtBQU0sT0E1TWhCRiw0QkE0TVVFLEtBQWtDO2FBRTVDb0csUUFBUXBHLEtBQU0sT0E5TWRGLDBCQThNUUUsS0FBZ0M7YUFFeENxRyxVQUFVckcsS0FBTSxPQWhOaEJGLDRCQWdOVUUsS0FBa0M7YUFFNUNzRyxPQUFPdEcsS0FBTSxPQWxOYkYseUJBa05PRSxLQUErQjthQUV0Q3VHLFdBQVd2RyxLQUFNLE9BcE5qQkYsNkJBb05XRSxLQUFtQzthQUU5Q3dHLE9BQU94RyxLQUFNLE9BdE5iRix5QkFzTk9FLEtBQStCO2FBRXRDeUcsTUFBTXpHLEtBQU0sT0F4TlpGLHdCQXdOTUUsS0FBOEI7YUFFcEMwRyxRQUFRMUcsS0FBTSxPQTFOZEYsMEJBME5RRSxLQUFnQzthQUV4QzJHLEtBQUszRyxLQUFNLE9BNU5YRix1QkE0TktFLEtBQTZCO2FBRWxDNEcsT0FBTzVHLEtBQU0sT0E5TmJGLHlCQThOT0UsS0FBK0I7YUFFdEM2RyxPQUFPN0csS0FBTSxPQWhPYkYseUJBZ09PRSxLQUErQjtJQW5PWTtZQUtsREQ7WUFFQUU7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFJQUU7WUFGQUQ7WUFJQUU7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFJQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFJQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7OzthQVVBL0csb0JBQWV2QixHQUFJLE9BQUEsaUJBQUpBLEdBQThCO2FBRTdDd0IsV0FBV0MsS0FBTSxPQUZqQkYsK0JBRVdFLEtBQW1DO2FBRTlDRyxRQUFRSCxLQUFNLE9BSmRGLDRCQUlRRSxLQUFnQzthQUV4Q0ksUUFBUUosS0FBTSxPQU5kRiw0QkFNUUUsS0FBZ0M7YUFFeENLLFFBQVFMLEtBQU0sT0FSZEYsNEJBUVFFLEtBQWdDO2FBRXhDTSxTQUFTTixLQUFNLE9BVmZGLDZCQVVTRSxLQUFpQzthQUUxQ08sUUFBUVAsS0FBTSxPQVpkRiw0QkFZUUUsS0FBZ0M7YUFFeENRLFFBQVFSLEtBQU0sT0FkZEYsNEJBY1FFLEtBQWdDO2FBRXhDUyxTQUFTVCxLQUFNLE9BaEJmRiw2QkFnQlNFLEtBQWlDO2FBRTFDVSxRQUFRVixLQUFNLE9BbEJkRiw0QkFrQlFFLEtBQWdDO2FBRXhDVyxRQUFRWCxLQUFNLE9BcEJkRiw0QkFvQlFFLEtBQWdDO2FBRXhDOEcsWUFBWTlHLEtBQU0sT0F0QmxCRiw4QkFzQllFLEtBQW9DO2FBRWhEYSxVQUFVYixLQUFNLE9BeEJoQkYsOEJBd0JVRSxLQUFrQzthQUU1Q2MsVUFBVWQsS0FBTSxPQTFCaEJGLDhCQTBCVUUsS0FBa0M7YUFFNUNlLFNBQVNmLEtBQU0sT0E1QmZGLDZCQTRCU0UsS0FBaUM7YUFFMUMrRyxZQUFZL0csS0FBTSxPQTlCbEJGLDhCQThCWUUsS0FBb0M7YUFFaERpQixVQUFVakIsS0FBTSxPQWhDaEJGLDhCQWdDVUUsS0FBa0M7YUFFNUNrQixTQUFTbEIsS0FBTSxPQWxDZkYsNkJBa0NTRSxLQUFpQzthQUUxQ2dILFlBQVloSCxLQUFNLE9BcENsQkYsOEJBb0NZRSxLQUFvQzthQUVoRG9CLFVBQVVwQixLQUFNLE9BdENoQkYsOEJBc0NVRSxLQUFrQzthQUU1Q2lILFNBQVNqSCxLQUFNLE9BeENmRiwyQkF3Q1NFLEtBQWlDO2FBRTFDa0gsU0FBU2xILEtBQU0sT0ExQ2ZGLDJCQTBDU0UsS0FBaUM7YUFFMUNtSCxTQUFTbkgsS0FBTSxPQTVDZkYsMkJBNENTRSxLQUFpQzthQUUxQ3dCLE1BQU14QixLQUFNLE9BOUNaRiwwQkE4Q01FLEtBQThCO2FBRXBDeUIsT0FBT3pCLEtBQU0sT0FoRGJGLDJCQWdET0UsS0FBK0I7YUFFdENvSCxhQUFhcEgsS0FBTSxPQWxEbkJGLCtCQWtEYUUsS0FBcUM7YUFFbEQyQixXQUFXM0IsS0FBTSxPQXBEakJGLCtCQW9EV0UsS0FBbUM7YUFFOUNxSCxTQUFTckgsS0FBTSxPQXREZkYsMkJBc0RTRSxLQUFpQzthQUUxQzZCLE9BQU83QixLQUFNLE9BeERiRiwyQkF3RE9FLEtBQStCO2FBRXRDOEIsTUFBTTlCLEtBQU0sT0ExRFpGLDBCQTBETUUsS0FBOEI7YUFFcEMrQixNQUFNL0IsS0FBTSxPQTVEWkYsMEJBNERNRSxLQUE4QjthQUVwQ3NILE9BQU90SCxLQUFNLE9BOURiRix5QkE4RE9FLEtBQStCO2FBRXRDdUgsVUFBVXZILEtBQU0sT0FoRWhCRiw0QkFnRVVFLEtBQWtDO2FBRTVDd0gsU0FBU3hILEtBQU0sT0FsRWZGLDJCQWtFU0UsS0FBaUM7YUFFMUNvQyxVQUFVcEMsS0FBTSxPQXBFaEJGLDhCQW9FVUUsS0FBa0M7YUFFNUNxQyxTQUFTckMsS0FBTSxPQXRFZkYsNkJBc0VTRSxLQUFpQzthQUUxQ3NDLFFBQVF0QyxLQUFNLE9BeEVkRiw0QkF3RVFFLEtBQWdDO2FBRXhDdUMsT0FBT3ZDLEtBQU0sT0ExRWJGLDJCQTBFT0UsS0FBK0I7YUFFdEN3QyxVQUFVeEMsS0FBTSxPQTVFaEJGLDhCQTRFVUUsS0FBa0M7YUFFNUMyRSxTQUFTM0UsS0FBTSxPQTlFZkYsNkJBOEVTRSxLQUFpQzthQUUxQ3lILGFBQWF6SCxLQUFNLE9BaEZuQkYsK0JBZ0ZhRSxLQUFxQzthQUVsRDBILFlBQVkxSCxLQUFNLE9BbEZsQkYsOEJBa0ZZRSxLQUFvQzthQUVoRDJILFlBQVkzSCxLQUFNLE9BcEZsQkYsOEJBb0ZZRSxLQUFvQzthQUVoRDRILGdCQUFnQjVIO0tBQU0sT0F0RnRCRixrQ0FzRmdCRTtJQUF3QzthQUV4RDZILGdCQUFnQjdIO0tBQU0sT0F4RnRCRixrQ0F3RmdCRTtJQUF3QzthQUV4RGdELFNBQVNoRCxLQUFNLE9BMUZmRiw2QkEwRlNFLEtBQWlDO2FBRTFDaUQsVUFBVWpELEtBQU0sT0E1RmhCRiw4QkE0RlVFLEtBQWtDO2FBRTVDOEgsVUFBVTlILEtBQU0sT0E5RmhCRiw0QkE4RlVFLEtBQWtDO2FBRTVDbUQsU0FBU25ELEtBQU0sT0FoR2ZGLDZCQWdHU0UsS0FBaUM7YUFFMUNvRCxTQUFTcEQsS0FBTSxPQWxHZkYsNkJBa0dTRSxLQUFpQztJQXJHUTtZQUtsREQ7WUFFQUk7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQW1HO1lBRUFqRztZQUVBQztZQUVBQztZQUVBZ0c7WUFFQTlGO1lBRUFDO1lBRUE4RjtZQUVBNUY7WUFFQTZGO1lBRUFDO1lBRUFDO1lBRUEzRjtZQUVBQztZQUVBMkY7WUFFQXpGO1lBRUEwRjtZQUVBeEY7WUFFQUM7WUFFQUM7WUFFQXVGO1lBRUFDO1lBRUFDO1lBRUFwRjtZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBbUM7WUFFQThDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUE3RTtZQUVBQztZQUVBNkU7WUFFQTNFO1lBRUFDOzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDL1RFMkU7SUFERkMsVUFDRUQ7Ozs7Ozs7O0dBR04sU0FMRUUsT0FLV0MsTUFBT0M7SUFDbEIsYUFDd0U1SixHQUFLLE9BQUxBLEVBQU07d0I7SUFBN0Q7S0FBQSxNQU5meUosUUFJU0U7S0FDUEUsT0FDRjtJQURFQSxVQURjRDtXQUpoQkgsUUFJU0UsTUFDUEU7R0FJYztZQW9XZEMsY0F6VllDLEdBQUksT0FBSkEsRUFBSztZQXVWakJDLGNBclZZRCxHQUFJLE9BQUpBLEVBQUs7WUFxQm5CRSxLQUFLQyxNQUFLQztJQUFJLFdBQVRELFVBQW9CLDRCQUFmQztHQUF1QztZQUVqREMsYUFBYUYsTUFBS0csT0FBaUIsT0FGbkNKLEtBRWFDLE1BQUtHLGtCQUFxRDtZQUV2RUMsV0FBV0osTUFBS0csT0FBUSxPQUp4QkosS0FJV0MsTUFBS0csa0JBQTBDO1lBRTFERSxjQUFjTCxNQUFLRztJQUFRLE9BTjNCSixLQU1jQyxNQUF1Qix3QkFBbEJHO0dBQW1DO1lBRXRERyxpQkFBaUJOLE1BQUtPO0lBQVMsT0FSL0JSO2FBUWlCQzthQUF3QjtlQUFXLGdEQUE5Qk87R0FBeUQ7WUFFL0VDLGlCQUFpQlIsTUFBS087SUFBUyxPQVYvQlI7YUFVaUJDO2FBQXdCO2VBQVcsa0RBQTlCTztHQUF5RDtZQUUvRUUscUJBQXFCVCxNQUFNRyxPQUF5QixXQUEvQkgsVUFBTUcsUUFBMEM7WUFFckVPLDJCQUEyQlYsTUFBTUcsT0FDbkMsV0FENkJILFVBQU1HO0dBQ2I7WUFFcEJRLDhCQUE4QlgsTUFBTUcsT0FDdEMsV0FEZ0NILFVBQU1HO0dBQ2I7WUFFdkJTLDJCQUEyQlosTUFBTUcsT0FDbkMsV0FENkJILFVBQU1HO0dBQ2I7WUFFcEJVLFdBQVdiLE1BQUtHO0lBQVEsT0F2QnhCSixLQXVCV0MsTUFBdUIsd0JBQWxCRztHQUFtQztZQUVuRFcsWUFBWWQsTUFBS087SUFBUyxPQXpCMUJSO2FBeUJZQzthQUF3QjtlQUFXLGtEQUE5Qk87R0FBeUQ7WUF1VnhFUTtJQS9VVTtHQUF5QztZQWlWbkRDLFFBL1VNQztJQUFLLDZDQUFpQyx3QkFBdENBO0dBQW1EO1lBRTNEQyxPQUFPckI7SUFBSyw4Q0FBa0Msd0JBQXZDQTtHQUFvRDtZQUUzRHNCLGNBQWN0QjtJQUFLLDhDQUFrQyx3QkFBdkNBO0dBQW9EO1lBR2hFdUIsWUFBWXZCLEdBQUd3QixLQUFLQyxNQUFNQztJQUM1QixJQUFJQyxRQURrQkYsbUNBQVJ6QjtjQUFHd0I7U0FFakJJLElBRmlCSjs7TUFHUCxJQUFKSixJQUFJLGdCQUhJcEIsR0FFZDRCO01BRElELE9BR0csV0FKcUJELEdBQ3hCQyxNQUVFUDtNQUROLFVBQUFRO2lCQUFBQTtVQUFBQTs7O1dBRElEO0dBS0Y7R0FFSixTQUFJRSxlQUFlQztJQUFhLFVBQUEsa0NBQWJBO0lBQWEsT0FBQTtHQUFzQztZQU9sRUMsVUFBV1AsS0FBS1EsTUFBS0Y7SUFDdkIsT0FoQkVQO2FBZXFCTzthQUFWTjs7c0JBQ3NCUyxLQUFJaE07Y0FDbkM7O3dCQURtQ0E7eUJBQUFBOzBCQUFBQSxvQkFBQUE7OzZCQUFBQTtrQ0FBQUE7Ozs7NEJBQUFBO2dDQUFBQTs7Ozs7O21CQUU1QmlNO2VBQU8sR0FBQSx3Q0FBUEEsR0FIT0Y7d0NBQ2lCQyxLQURqQkQsUUFHUEU7O2NBRlgsT0FSRUwsZUFPcUJDO2FBSWdCO0dBQUM7WUFwQnhDSyxPQTBCRUw7SUFDRixJQUFJTSw0QkFERk47OztLQUdHLEdBQUEseUNBRkRNO01BRXdCLFVBQUEsZ0JBSDFCTjtNQUdlLEdBQUE7Ozs7V0FHUix5Q0FMTE07U0FLNkIsVUFBQSxnQkFOL0JOO1NBTW9CLEtBQUE7VUFBbUMsVUFBQSxnQkFOdkRBO1VBTTRDLEtBQUE7O2FBRHRDRixJQWZORyxpQkFVQUQ7OztZQUtNRixJQWZORyxpQkFVQUQ7O1dBRUVPLE1BUUEsZ0NBTElUOzs7OztPQTlCTkw7U0F5QkFPOzs7a0JBV2dERyxLQUFJaE07VUFLeEMsS0FMb0NnTSxLQUtwQyxPQUxvQ0E7VUFmakMsVUFlcUNoTTs7Ozs7OztXQWRaOztVQUNuQztTQWtCNEI7K0JBaEJqQzZMOzhCQUFBQTsrQkFBQUE7Z0NBQUFBO2lDQUFBQTtrQ0FBQUE7V0F5QnlEO1lBQUEsTUFBQSx1QkF6QnpEQTtZQXlCdUMsTUFBQSx3QkFBVztZQXZCaERPLE1BdUJPOztlQXZCUEE7O2NBQUFBOzthQUFBQTs7WUFBQUE7O1dBQUFBOztVQUFBQSxNQW5CRlIsZUFpQkFDOztrREFFRU87R0EwQm9EO1lBVXhEQyxvQkFBb0IxQyxNQUFLTyxNQUFLdUI7SUFDaEM7S0FIa0IsTUFFSTlCLEtBQUtPO0tBRnhCLFFBQUEsNENBRXdCQTtnQkFHakI7UUFESG9DO0lBQUssSUFBTSxVQUFBLFdBRmNiLEdBRXpCYSxJQUFXLHVCQUFjO0dBQ3BCO1lBeU1WQyxxQkF2TW9CQzs7S0FFcEIsSUFBVUMsZ0JBQUpILGNBQ0FJLE1BQUksd0JBREpKO0tBRUosT0FGUUc7O1lBd0JBRSxJQXhCQUY7UUF3QkssWUF2QlRDO2dCQXVCOEI7MkJBQXVCRSxJQUFNLFdBQVEsV0FBL0RELEdBQWlEQyxJQUFvQjs7WUFDaEVDLE1BekJMSjtRQTBCSixZQXpCQUM7Z0JBeUJxQjsyQkFBdUJFLElBQU0sV0FBUSxXQURqREMsS0FDbUNELElBQW9COztZQUNwREUsTUEzQlJMO1FBNEJKLFlBM0JBQztnQkEyQnFCOzJCQUF1QkUsSUFBTSxXQUFRLFdBRDlDRSxLQUNnQ0YsSUFBb0I7O1lBQ3ZERyxNQTdCTE47UUE4QkosWUE3QkFDO2dCQTZCcUI7MkJBQXVCRSxJQUFNLFdBQVEsV0FEakRHLEtBQ21DSCxJQUFvQjs7UUF6QjlEO1NBRkNJLElBSENQOzs7WUFNQTs7YUFFYSxrQkFQakJDO3FDQURBSjtjQVl5QyxPQW5CL0NEOzZCQVFNSyxjQVc4Q3hDLE1BQzVCLFlBRDRCQSxZQUNIOzs7O1lBRTFCLHFCQWRqQndDO29DQURBSjthQW1CeUMsT0ExQi9DRDs7c0JBUU1LOytCQWtCOEN4QyxNQUM1QixZQUQ0QkEsMEJBQ0c7OztXQUFHO1NBaEIvQ04sU0FDSCxpQ0FGQ29EO1FBb0JILE9BbkxSdEQsYUFnS2FFOztJQTBCOEQ7SUEvQjNFLE9BQUEsaUNBRHNCNEM7R0FpQ25CO1lBK09DUyxLQTdPS0MsS0FBUWhEO0lBQ2pCLEdBRFNnRCxTQUFJQyxNQUFKRCxRQUFBRixJQUFJRyxjQUFKSDtJQUNEO0tBQUpuQixJQUFJLHNDQUFpQyx3QkFEeEIzQjtJQW9LZnFDLGVBbktFVixHQURLbUI7SUFFVCxPQURJbkI7R0FFZ0I7WUFFbEJsQyxLQUFPdUQsS0FBUWhELE1BQUtrRDtJQUN0QixHQURTRixTQUFJQyxNQUFKRCxRQUFBRixJQUFJRyxjQUFKSDtJQUNEO0tBQUpuQixJQUFJLHNDQUFpQyx3QkFEeEIzQjtJQStKZnFDLGVBOUpFVixHQURLbUI7aUJBR003QixHQUZYVSxjQUVXVixJQUFZLFNBQWtCO0lBQTdDLGlDQUhzQmlDO0lBR3RCLE9BRkl2QjtHQUdnQjtZQTRPaEJ3QixNQTFPSXRELEdBQUksT0F2SFZxQixPQXVITXJCLEdBQVk7WUE0T2hCdUQsYUExT1d2RCxHQUFJLE9Bd09mc0QsTUF4T1d0RCxHQUFXO1lBNE90QndELFlBMU9VeEQsR0FBSSxPQXNPZHNELE1BdE9VdEQsR0FBVztZQWdQckJ5RCxPQTFPS04sS0FBUWhEO0lBQ2pCLEdBRFNnRCxTQUFJQyxNQUFKRCxRQUFBRixJQUFJRyxjQUFKSDtJQUNEO0tBQUpuQjtPQUFJO2lDQUFpRCx3QkFEeEMzQjtJQStJZnFDLGVBOUlFVixHQURLbUI7SUFFVCxPQURJbkI7R0FFZ0I7WUFFbEI0QixPQUFPUCxLQUFRaEQsTUFBS2tEO0lBQ3RCLEdBRFNGLFNBQUlDLE1BQUpELFFBQUFGLElBQUlHLGNBQUpIO0lBQ0Q7S0FBSm5CO09BQUk7aUNBQWlELHdCQUR4QzNCO0lBMElmcUMsZUF6SUVWLEdBREttQjtpQkFHTTdCLEdBRlhVLGNBRVdWLElBQVksU0FBa0I7SUFBN0MsaUNBSHNCaUM7SUFHdEIsT0FGSXZCO0dBR2dCO0dBSVM7Ozs7OztTQTZJekI3QjtTQUVBRjtTQWhVRk07U0FFQUU7U0FFQUM7U0FFQUM7U0FFQUU7U0FFQUM7U0FFQUM7U0FHQUM7U0FHQUM7U0FHQUM7U0FFQUM7U0F1VkVDO1NBRUFDO1NBN1VGRTtTQUVBQztTQUVBYTtTQXVXRXNCO1NBck9GQztTQTJORUo7U0FFQUM7U0FFQUM7SUF2TnlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7V0E2SXpCdkQ7V0FFQUY7V0FoVUZNO1dBRUFFO1dBRUFDO1dBRUFDO1dBRUFFO1dBRUFDO1dBRUFDO1dBR0FDO1dBR0FDO1dBR0FDO1dBRUFDO1dBdVZFQztXQUVBQztXQTdVRkU7V0FFQUM7V0FFQWE7V0FxVkVlO1dBeE9GdEQ7V0FnUEUwRDtXQUVBQztXQUVBQzs7SUFqTkY5TDs2REFBQUE7SUFNQWlNOzZEQUFBQTtZQVVBQyxPQUFTVCxLQUFhdkQsTUFBS2lFO0lBQzdCLEdBRFdWLFNBQU9DLE1BQVBELFFBQUFXLE9BQU9WLGNBQVBVO1dBQUFBO0tBSkUsVUFJV2xFLGlCQUpYLDBCQURMOztVQUNSZ0M7O09BQ2M7dUJBQWlCM0wsR0FHUDJKLGlCQUhPM0osSUFBWSxTQUFxQjtRQUFsRCxNQUFBLFNBRGQyTDtPQUNFO09BQUEsVUFERkE7a0JBQUFBO1dBQUFBOzs7O2lCQU1lM0w7S0FBMEIsVUFBQSxzQkFBMUJBO0tBQTBCLE9BQUEsK0JBRmpCMko7SUFFc0M7SUFEN0MsT0FBQSxpQ0FEWWlFO0dBRTBDO1lBRXJFRSxHQUFJRCxNQUFLQyxJQUFHRjtJQUNILElBQVBqRSxPQUFPLG9DQURBbUU7SUFFWCxPQU5FSCxPQUlJRSxNQUNGbEUsTUFEVWlFO0dBRVc7WUFFdkJHLEtBQU1GLE1BQUtEO0lBQVU7SUFBQSxPQVJyQkQsT0FRTUUsZ0JBQUtEO0dBQXVEO1lBRWxFSSxLQUFNSCxNQUFLRDtJQUFVO0lBQUEsT0FWckJELE9BVU1FLGdCQUFLRDtHQUF1RDtZQUVsRUssS0FBTUQsTUFBS0Q7SUFDYixHQURRQztLQUVnQztNQUFqQ3JCLElBRkNxQjtNQUVnQyxNQUFBLHNCQUFqQ3JCO01BQWlDOzs7SUFFWixJQUFBLE1BQUEsdUJBSmZvQixPQUllOztJQUE1QjtHQUNFO09BVUFHO1lBRUFDLEtBQUsxQyxHQUFJLE9BQUEsNEJBQUpBLEdBQWlCO1lBRXRCMkMsV0FBUywwQkFBd0I7T0FFakNDO1lBRUFDLEtBQUt0TyxHQUFFdU87SUFBK0IsVUFBQSxXQUZ0Q0YsV0FFS3JPO0lBQU8sT0FBQSxxQ0FBTHVPO0dBQStDO1lBRXREQyxNQUFJL0MsR0FBSSxPQUFBLCtCQUFKQSxHQUE0QjtZQUVoQ2dELE9BQU96TyxHQUFFQyxHQUFJLE9BQUEsZ0NBQU5ELEdBQUVDLEdBQWlDO1lBTzFDeU8sU0FBU0MsS0FBSWhELEdBQUUzTDtJQUNqQixZQURXMk87SUFFSixHQUFBLHdDQUZRaEQ7S0FHWixPQUFBLHdDQUhZQTtnQkFBSmdELGdCQUFNM087Z0JBQU4yTyxpQkFBTTNPLEdBS2dCLFdBTGxCMkw7SUFFZixNQUFBO0dBR2lEO1lBMEIzQ2lELGVBQWVEO0lBQ3JCO0tBQU0sWUFBQSxrQ0FEZUE7aUJBRVg7U0FDSHhEO0tBSGN3RCxnQkFHZHhEOztHQUVlO1lBWXBCMEQsZ0JBQWlCRixLQUFzQkc7SUFqQm5DRixlQWlCYUQ7SUFDbkI7d0JBQzJDSTtLQUFPLFNBQVBBO01BSjdCO09BRk5DLElBTW1DRDtPQUo3QjtrQkF2QzJCQztVLE9BQUFBOztpQkFFakNoUCxJQUZpQ2dQLE1BRXBDckQsSUFGb0NxRDthQUcxQixHQUFBLHdDQURWckQ7d0JBdUNjZ0QsZ0JBdENYTSw2QkFESHREOztrQkFDR3NELE1BREh0RDthQUVELE9BWEYrQyxTQWdEaUJDLEtBdENYTSxLQURBalA7O2lCQUdKa1AsTUFMcUNGO2FBTTFCLEdBQUEsd0NBRFhFO3dCQW9DZVAsZ0JBbkNYUSxtQkFESkQ7O2tCQUNJQyxNQURKRDt5QkFvQ2VQO2FBakNHO2VBQVYseUNBRkpRO2tCQUVjLHdDQUZkQTtjQUdROzswQkFBcUI3QyxHQUFLLE9BQUEsK0JBZ0N2QnFDLEtBaENrQnJDLEdBQTBCO2VBQS9DLE1BQUEsV0FIUjZDO2NBR3dCLE9BQUE7O2FBRDVCLE1BQUE7O2lCQUVJQyxNQVZpQ0osTUFVcENLLE1BVm9DTDthQVcxQixHQUFBLHdDQURWSzt3QkErQmNWLGdCQTlCWFcsbUJBREhEOztrQkFDR0MsTUFESEQ7YUFFc0I7Y0FBQSxNQTZCUlYsb0JBOUJYVztjQUNFLFFBQUE7O2NBRUMsTUFBQTtpQkFEQUM7YUE0QlFaLGlCQS9CWFMsS0FHR0c7YUFBYzs7aUJBRWpCQyxPQWZpQ1IsTUFlcENTLE1BZm9DVDthQWdCMUIsR0FBQSx3Q0FEVlM7d0JBMEJjZCxnQkF6QlhlLG1CQURIRDs7a0JBQ0dDLE1BREhEO2FBRUUsR0FBQSx3Q0FGQ0QsVUFHQzthQUVvQjtjQUFBLE1BcUJWYixvQkF6QlhlO2NBSUksVUFBQTs7Y0FFQyxNQUFBO2FBRDJCO2NBQTNCQztjQUEyQjtnQkFBQSx3Q0FOaENIO21CQUFBQTttQkFBQUE7YUFNVyxPQTVCakJkLFNBZ0RpQkMsS0F6QlhlLGVBS0tDOzs7TUFrQlQsT0FBQSxpQ0FGSVg7O1NBSkZ4QyxJQVVxQ3VDO0tBbkJyQ0gsZUFpQmFEO2tCQUxBbkMsR0FLQW1DLGdCQUxBbkMsSUFBWSxTQUFvQjtLQUQvQyxPQUFBLGlDQUZFQTtJQVU2RDtJQUFyQyxJQUExQjVDLFNBQTBCLHFDQUZXa0Y7SUFuVnpDcEYsT0FtVm1CaUYsS0FFZi9FO0lBQ0o7R0FDRTtZQUlBZ0cscUJBQXdCQztRQUFIN0MsY0FBTjlDO0lBQ2pCLFNBRHVCOEM7S0FHbkIsTUFBQTs7UUFDTzhDLE1BSlk5QztpQkFJeUI2QyxJQUFHN0MsR0FBSyxPQUFSNkMsS0FBRzdDLE1BQTJCO0lBQTlELFdBSkM5QyxVQUljLGlDQUpMMkYsSUFJZkM7O1lBNkJQQyxPQUFLN0YsTUFBS3VCLEdBQUUxQjtJQUNOLElBQUppRCxJQUFJLFdBM0dSbUIsS0EwR1kxQyxJQUFFMUI7SUFFZCxXQUZPRyxVQUNIOEM7R0FDWTtZQUVkZ0QsZUFBYTlGLE1BQUtIO0lBQUksT0FKdEJnRyxPQUlhN0YsZUFBd0J1QixHQUFLLFdBQUxBLGNBQWdDLEdBQW5EMUI7R0FBc0Q7WUFFeEVrRyxhQUFXL0YsTUFBS0g7SUFBSSxPQU5wQmdHLE9BTVc3RixlQUF3QnVCLEdBQUssV0FBTEEsY0FBOEIsR0FBakQxQjtHQUFvRDtZQUVwRW1HLGdCQUFjaEcsTUFBS0g7SUFBSSxPQVJ2QmdHO2FBUWM3RixlQUF3QnVCLEdBQUssV0FBSyx3QkFBVkEsSUFBdUIsR0FBMUMxQjtHQUE2QztZQUVoRW9HLG1CQUFpQmpHLE1BQUtIO0lBQ3hCLE9BWEVnRzthQVVpQjdGO3NCQUNKdUI7Y0FBSztzQkFBSzt3QkFBVyxrREFBckJBO2FBQTJDO2FBRGxDMUI7R0FDcUM7WUFFM0RxRyxtQkFBaUJsRyxNQUFLSDtJQUN4QixPQWRFZ0c7YUFhaUI3RjtzQkFDSnVCO2NBQUs7c0JBQUs7d0JBQVcsa0RBQXJCQTthQUEyQzthQURsQzFCO0dBQ3FDO1lBRTNEc0csdUJBQXFCbkcsTUFBS0gsR0FBSSxPQXBWaENZLHFCQW9WdUJULE1BQUtIO0dBQW1DO1lBRTdEdUcsNkJBQTJCcEcsTUFBS0gsR0FBSSxPQXBWdENhLDJCQW9WNkJWLE1BQUtIO0dBQXlDO1lBRXpFd0csZ0NBQThCckcsTUFBS0gsR0FBSSxPQW5WekNjLDhCQW1WZ0NYLE1BQUtIO0dBQTRDO1lBRS9FeUcsNkJBQTJCdEcsTUFBS0gsR0FBSSxPQWxWdENlLDJCQWtWNkJaLE1BQUtIO0dBQXlDO1lBRXpFMEcsYUFBV3ZHLE1BQUtIO0lBQUksT0F4QnBCZ0c7YUF3Qlc3RixlQUF3QnVCLEdBQUssV0FBSyx3QkFBVkEsSUFBdUIsR0FBMUMxQjtHQUE2QztZQUU3RDJHLGNBQVl4RyxNQUFLSDtJQUFJLE9BMUJyQmdHO2FBMEJZN0Y7c0JBQXdCdUI7Y0FBSztzQkFBSzt3QkFBVyxrREFBckJBO2FBQTJDO2FBQTlEMUI7R0FBaUU7WUFVbEY0RyxTQUFPNUc7SUFDRCxVQUFBO2lCQUNzQkE7S0FBaUIsVUFBQSx3QkFBakJBOztJQUE0QjtJQUE3QyxJQUFUSCxTQUFTLGlDQUZKRztJQWhhWEwsWUFrYU1FO0lBQ0o7R0FDb0I7WUFFbEJnSCxnQkFBYzdHLEdBQUksT0FObEI0RyxTQU1jNUcsR0FBWTtZQUUxQjhHLFNBQU85RyxHQUFJLE9BblZibUMsT0FtVlNuQyxHQUFnQjtZQUl2QitHLE9BQU81RCxLQUFRaEQsTUFBS3NDO0lBQ3RCLEdBRFNVLFNBQUlDLE1BQUpELFFBQUFGLElBQUlHLGNBQUpIO0lBQ0Q7S0FBSm5CLElBQUksc0NBQWlDLHdCQUR4QjNCO0lBM0VqQnFDLGVBNEVJVixHQURLbUI7SUF6RlQ2QixnQkEwRkloRCxHQURrQlc7SUFHdEIsT0FGSVg7R0FHZ0I7WUFjbEJrRixPQUFPN0QsS0FBUWhELE1BQUtzQztJQUN0QixHQURTVSxTQUFJQyxNQUFKRCxRQUFBRixJQUFJRyxjQUFKSDtJQUNEO0tBQUpuQjtPQUFJO2lDQUFpRCx3QkFEeEMzQjtJQTdGakJxQyxlQThGSVYsR0FES21CO0lBM0dUNkIsZ0JBNEdJaEQsR0FEa0JXO0lBR3RCLE9BRklYO0dBR2dCO0dBSVM7Ozs7O2FBdEw3QnFDLFVBRUFDLE1BRUFDLEtBRUFDLFdBRUFDLE1BSUFHLFFBRkFEO1NBa0ZFeEU7U0FFQUY7U0FrQkFrRztTQUVBQztTQUVBQztTQUVBQztTQUdBQztTQUdBQztTQUVBQztTQUVBQztTQUVBQztTQUVBQztTQUVBQztTQU1BekY7U0FFQUM7U0FFQXlGO1NBTUFDO1NBRUFDO1NBb0JBckQ7U0FFQXVEO1NBWkExRDtTQUVBQztTQUVBQztJQWdCMkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBdEw3QlcsVUFFQUMsTUFFQUMsS0FFQUMsV0FFQUMsTUFJQUcsUUFGQUQ7V0FrRkV4RTtXQUVBRjtXQWtCQWtHO1dBRUFDO1dBRUFDO1dBRUFDO1dBR0FDO1dBR0FDO1dBRUFDO1dBRUFDO1dBRUFDO1dBRUFDO1dBRUFDO1dBTUF6RjtXQUVBQztXQUVBeUY7V0FNQUM7V0FFQUM7V0FFQTVEO1dBRUE2RDtXQU1BekQ7V0FFQUM7V0FFQUM7Ozs7OztRQTFFQXZEO1FBRUFGO1FBaFVGTTtRQUVBRTtRQUVBQztRQUVBQztRQUVBRTtRQUVBQztRQUVBQztRQUdBQztRQUdBQztRQUdBQztRQUVBQztRQXVWRUM7UUFFQUM7UUE3VUZFO1FBRUFDO1FBRUFhO1FBcVZFZTtRQXhPRnREO1FBZ1BFMEQ7UUFFQUM7UUFFQUM7Ozs7V0FyTEZVLE1BSkFGLE1BRUFDLE1BTkFGO1dBdUJBSSxVQUVBQyxNQUVBQyxLQUVBQyxXQUVBQyxNQUlBRyxRQUZBRDtXQXlEQUs7OzthQW5FQVgsVUFFQUMsTUFFQUMsS0FFQUMsV0FFQUMsTUFJQUcsUUFGQUQ7U0FrRkV4RTtTQUVBRjtTQWtCQWtHO1NBRUFDO1NBRUFDO1NBRUFDO1NBR0FDO1NBR0FDO1NBRUFDO1NBRUFDO1NBRUFDO1NBRUFDO1NBRUFDO1NBTUF6RjtTQUVBQztTQUVBeUY7U0FNQUM7U0FFQUM7U0FFQTVEO1NBRUE2RDtTQU1BekQ7U0FFQUM7U0FFQUM7OztRQTNGRnFDOzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7R0M5WE47OztJQUFBO1lBcUJJb0IsSUFBSUMsTUFDTixPQURNQSxRQUNRO1lBRVpDLElBQUlELE1BQUtFLE1BQUxGLFVBQUtFLGVBQ1c7WUFFcEJDLE9BQU9IO0lBQ1Q7V0FEU0E7OztXQUFBQSxhQUFBQSxhQUFBQSxTQUFBQSxhQUFBQTs7O0dBTU47WUFNREk7SUFDRixJQUFRQzs4QkFBQUEsU0FBQUEsS0FBQUE7SUFDUixPQURRQTtHQUNMO1lBRURDLE1BQU1ELEtBQUFBLFNBQUFBLEtBQUFBLFNBQUFBLGNBRU87WUFFYkUsU0FBU0YsS0FBTSxPQUFOQSxXQUFBQSxZQUFxQjtZQUU5QkcsT0FBT0g7SUFDVCxJQUFhSSxTQURKSixRQUNJSyxPQUFBRCxRQUFLRTtJQUNoQjtRQURXRCxTQURKTCxLQUdMLE9BRmNNO0tBSWlCLElBSmpCQyxRQUFBRCxhQUFMRSxTQUFBSCxTQUFBQSxPQUFBRyxRQUFLRixNQUFBQzs7R0FNSDtZQUViRSxNQUFNWixNQUFLRztJQUNGLElBQVBMLFdBRFNLLEtBQUFBLFFBQUxIO0lBQUtHLFlBQ1RMO0lBRFNLLFNBQ1RMO0lBR0osT0FISUE7R0FHQTtZQUVGZSxNQUFNYixNQUFLRztJQUNGLElBQVBMLFdBRFNLLFFBQUFBLEtBQUxIO0lBQUtHLFlBQ1RMO0lBRFNLLFNBQ1RMO0lBR0osT0FISUE7R0FHQTtZQUVGZ0IsT0FBT1g7SUFDVCxHQXhCRUUsU0F1Qk9GLE1BRVAsTUFBQTtRQUVJTCxPQUpHSztJQTNDUEYsT0ErQ0lIO1dBQUFBO0dBR0g7WUFFRGlCLE9BQU9aO0lBQ1QsR0FqQ0VFLFNBZ0NPRixNQUVQLE1BQUE7UUFFSUwsT0FKR0s7SUFwRFBGLE9Bd0RJSDtXQUFBQTtHQUdIO1lBRURrQixXQUFXYjtJQUNiLEdBMUNFRSxTQXlDV0YsTUFFWDtRQUVJTCxPQUpPSztJQTdEWEYsT0FpRUlIO0lBRUosV0FGSUE7R0FHSDtZQUVEbUIsV0FBV2Q7SUFDYixHQW5ERUUsU0FrRFdGLE1BRVg7UUFFSUwsT0FKT0s7SUF0RVhGLE9BMEVJSDtJQUVKLFdBRklBO0dBR0g7WUFFRG9CLFdBQVdDLElBQUdDO0lBQUFBLFdBQUhEO0lBQUFBLFdBQUdDO0lBQUFBLFFBQUhEO0lBQUFBLFdBQUdDO0lBQUhELFFBQUFBO0lBQUFBLFFBQUFBOztHQU1BO1lBRVhFLFdBQVdGLElBQUdDO0lBQUFBLFdBQUhEO0lBQUFBLFdBQUdDO0lBQUFBLFFBQUhEO0lBQUFBLFdBQUdDO0lBQUhELFFBQUFBO0lBQUFBLFFBQUFBOztHQU1BO1lBRVhHLE9BQU9DLEdBQUVwQjtJQUNYLElBQWFJLFNBREZKLFFBR0hLLE9BRktEO0lBQ1g7ZUFDTUMsU0FIR0w7O1FBR0hLLFNBQ3FCLFdBSnBCZSxHQUdEZjtTQUZLRyxTQUVMSCxTQUFBQSxPQUZLRzs7R0FPQTtZQUVYYSxPQUFPRCxHQUFFcEI7SUFDWCxJQUFhSSxTQURGSixRQUdISyxPQUZLRDtJQUNYO2VBQ01DLFNBSEdMOztRQUdISyxTQUNxQixXQUpwQmUsR0FHRGY7U0FGS0csU0FFTEgsU0FBQUEsT0FGS0c7O0dBT0E7WUFFWGMsWUFBWUYsR0FBRXBCO0lBQ2hCLElBQWFJLFNBREdKLFFBR1JLLE9BRktEO0lBQ1g7ZUFDTUMsU0FIUUw7O1FBR1JLLFNBQ3FCLFdBSmZlLEdBR05mO1NBRktHLFNBRUxILFNBQUFBLE9BRktHOztHQU9BO1lBRVhlLFlBQVlILEdBQUVwQjtJQUNoQixJQUFhSSxTQURHSixRQUdSSyxPQUZLRDtJQUNYO2VBQ01DLFNBSFFMOztRQUdSSyxTQUNxQixXQUpmZSxHQUdOZjtTQUZLRyxTQUVMSCxTQUFBQSxPQUZLRzs7R0FPQTtZQUVYZ0IsT0FBT0osR0FBRXBCLEtBQ095QjtJQUFsQixJQUFhQyxTQURGMUIsUUFLSEssT0FKS3FCLFFBQUtDLFFBQUFGO0lBQ2hCO1FBR01wQixTQUxHTCxLQUdQLE9BRmMyQjtRQUlWdEI7TUFFa0I7T0FOUnVCLFFBTVEsV0FQakJSLEdBS0RmLFNBSlVzQjtPQUFMbkIsU0FJTEg7T0FBQUEsT0FKS0c7T0FBS21CLFFBQUFDOztVQUFMeEIsU0FJTEMsU0FBQUEsT0FKS0Q7O0dBVUk7WUFFZnlCLE9BQU9ULEdBQUVwQixLQUNPeUI7SUFBbEIsSUFBYUMsU0FERjFCLFFBS0hLLE9BSktxQixRQUFLQyxRQUFBRjtJQUNoQjtRQUdNcEIsU0FMR0wsS0FHUCxPQUZjMkI7UUFJVnRCO01BRWtCO09BTlJ1QixRQU1RLFdBUGpCUixHQUtEZixTQUpVc0I7T0FBTG5CLFNBSUxIO09BQUFBLE9BSktHO09BQUttQixRQUFBQzs7VUFBTHhCLFNBSUxDLFNBQUFBLE9BSktEOztHQVVJO1lBRWYwQixZQUFZVixHQUFFcEI7SUFDaEIsSUFBYTBCLFNBREcxQixRQUdSSyxPQUZLcUI7SUFDWDtRQUNNckIsU0FIUUwsS0FZWixNQUFBO1FBVElLO01BRUMsR0FBQSxXQUxLZSxHQUdOZixVQUdBLE9BSEFBO1VBRktHLFNBRUxILFNBQUFBLE9BRktHOzs7VUFBQUosU0FFTEMsU0FBQUEsT0FGS0Q7O0dBYUE7WUFFWDJCLFlBQVlYLEdBQUVwQjtJQUNoQixJQUFhMEIsU0FERzFCLFFBR1JLLE9BRktxQjtJQUNYO1FBQ01yQixTQUhRTCxLQVlaLE1BQUE7UUFUSUs7TUFFQyxHQUFBLFdBTEtlLEdBR05mLFVBR0EsT0FIQUE7VUFGS0csU0FFTEgsU0FBQUEsT0FGS0c7OztVQUFBSixTQUVMQyxTQUFBQSxPQUZLRDs7R0FhQTtZQUVYNEIsZ0JBQWdCWixHQUFFcEI7SUFDcEIsSUFBSSxjQWpDRjhCLFlBZ0NnQlYsR0FBRXBCLE9BQ2hCOzs7MkJBQTJDOzs7R0FBSTtZQUVqRGlDLGdCQUFnQmIsR0FBRXBCO0lBQ3BCLElBQUksY0FwQkYrQixZQW1CZ0JYLEdBQUVwQixPQUNoQjs7OzJCQUEyQzs7O0dBQUk7Ozs7T0EzTWpETjtPQUdBRTtPQUdBRTtPQVlBQztPQUlBRTtPQUlBQztPQUVBQztPQVNBTTtPQU1BQzs7T0FNQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FTQUM7T0FRQUc7T0FRQUM7T0FVQUU7T0FVQUM7T0FVQUM7T0FVQUM7T0FhQUs7T0E2Q0FHO09BR0FDO09BbkNBSDtPQWdCQUM7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDMkpNRztnREFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUE0TUpDO0lBQWtCLHVCQUNmQyxjQUFLLFdBQUxBO1FBQ0dDO0lBQU8sV0FBUEE7R0FBbUI7WUFrQ3JCQyxXQUVGQztJQUVKLFlBRklBOzs7T0FHYyxPQUhkQTs7T0FJWSxPQUpaQTs7T0FLVyxPQUxYQTs7T0FPUSxJQURKQyxnQkFDRkMsTUFUQUgsV0FRRUU7ZUFDRkMsUUFERUQsY0FOSkQsV0FPRUU7T0FHSixPQUhJQTs7R0FHRDtZQVFIQyxrQkFDRUgsR0FEa0JJLE9BQ2xCSixPQURrQkksT0FHdEIsT0FGSUosRUFFb0I7WUF3RnRCSyxrQkFBc0IsU0FBSTtZQUMxQkM7SUFBNEI7R0FHbkI7R0FHWCxJQUZFQyxRQUxBRjtZQVFBaEQsSUFBSXdCLEdBSEowQixPQUdJMUIsWUFBVTtZQUNkMkIsSUFBSUMsR0FBSSxPQUFBLFdBSlJGLE1BSUlFLEdBQVE7R0E4Q0UsSUFBZEM7WUF2Q0pDO0lBMENFLElBQUlDLEtBSEZGO0lBQUFBLGlCQUdFRTtJQUVKLFdBRklBO0dBRW1CO0dBRUgsSUF6Q3RCQztZQUpBMUQsSUErQ1EyRDtJQUNOLEtBQUcsMkJBREdBLFFBM0NSRCxxQkFvREk7SUFQYyxJQUFWRSxVQUFVLDRCQUZWRCxRQTNDUkQ7SUE4Q0ksV0FESUU7UUFFQUMsUUFKQUY7SUFBQUE7SUFNSixPQUZJRTtHQUtBO1lBdkRSQyxXQXlEZUgsS0FBSUUsT0FBTW5DO0lBQ3ZCLEdBRGlCbUM7O01BSVRELDBCQUpLRCxTQUFJRSxnQkFJNkI7TUFIMUNFO1FBSUEsMkJBTFNKLFFBSUxDLFNBMURWRjs7U0F1RE1LLGNBTUEsMkJBUFNKLFFBdERmRDtJQWdFRSxJQUFJTSxnQkFoRU5OO0lBQUFBLHFCQXVETUs7SUFXSjtLQUNlLElBQVRFLFNBQVMsV0FiUXZDO0tBdER6QmdDLHFCQWdFTU07S0FLRixPQUZJQzs7VUFHREM7U0FBQXZCLDBCQUFBdUI7S0FBUyxLQWxGWmIsSUFrRkdWLHdDQUFBQTtLQXRFUGUscUJBZ0VNTTtLQVFGLE1BQUEsNEJBRkdyQjs7R0FFTTtZQW1CVHdCLHlCQUF5QkMsSUFBR0M7SUFDOUIsY0FEMkJEO2NBQUdDO3FCQUFBQSxrQkFBSEQsU0FBQUEsSUFBR0M7R0FLM0I7WUFXR0Msd0JBSUpDO0lBSjhCLFVBSTlCQTtZQUFBQTs7UUFNUztTQUR5QkYsS0FMbENFO1NBSzhCSCxLQUw5Qkc7U0FNSUMsT0FWQUYsd0JBUzBCRjtTQUUxQkssT0FYQUgsd0JBUzhCRDtRQUdsQyxPQTVCQUYseUJBMEJJSyxNQUNBQzs7YUFQSkYsaUJBRkE7O0lBS0EsT0FIQUE7R0FROEI7WUF3QjlCRywrQkFBeUNDLE1BQTBCQztJQUExQkQ7a0JBTTVCOUI7S0FDUCxZQTFSRkQsV0F5UlNDOzs7UUFLRzs7UUFHZCxJQURRMEIsc0JBQ1IsT0FEUUE7c0RBQUFBO1lBY0ZNLG9CQWRFTjtvQkFjRk07bUJBZEVOOzs7a0JBQUFBLGVBakRORCx3QkFpRE1DOzttQkFBQUEsZUFjRk07Z0JBakJTOztJQXVCcUM7SUE1QnhELE9BQUEsV0FBTSxtQ0FMK0REO0dBaUNaO1lBa0N2REUsK0JBQStCUCxXQUFVdEU7SUFDM0M7S0FJSThFLFdBTDZCUjtLQUFVUyxnQkFLdkNELHdCQUx1QzlFLFdBQUFBLE1BS3ZDOEU7SUFMNkJSLGVBQVVTOztHQVFNO1lBRS9DQywrQkFBZ0NWLFdBQVU3QztJQUM1QyxPQVhFb0QsK0JBVWdDUCxlQUFVN0M7R0FFcUI7WUFTL0R3RCwrQkFBZ0ROLElBQUdsRDtJQUNyRDtLQUFRaUQ7S0FDSlE7O3NCQURJUixjQUNKUTs7TUFBQUE7ZUFBK0JsQjtPQTFGakNTLCtCQXlGTUMsTUFEMENDO09BR2hELE9BQUEsV0FIbURsRCxHQUVsQnVDO01BRXpCO0lBR0MsSUFBUGhFLFdBTkkwRTtrQkFRTzlCO0tBQ1AsWUFyWEZELFdBb1hTQzs7O1FBSUcsTUFBQTs7WUFGTjBCO1FBQWEsT0FoQ3ZCTywrQkFnQ1VQLFdBSlJ0RTs7UUFLZSxNQUFBOztJQUNXO0lBTDlCLFdBQU0sbUNBUjRDMkU7SUFRbEQsT0FQUUQ7R0FjSjtZQUVGUyxpQ0FBNkNSLElBQUdsRCxHQWpCaER3RCwrQkFpQjZDTixJQUFHbEQsSUFDM0M7R0FBc0Q7WUFTM0QyRCxvQkFBb0JkLFdBQVU3QztJQUNoQztLQUFJekIsV0FuUU55RCxvQkFrUWtDaEM7S0FDNUJzRDtjQURrQlQsNEJBQ2xCdEUsV0FBQUEsTUFEa0JzRTtJQUFBQSxlQUNsQlM7O0dBVThEO0dBNkhsRTtJQXBGRk07O2dCQW9GVzNDO1FBQ1A7UUFDYSxXQUFBLCtCQUZOQTtRQUVQO1FBQ0E7UUFDQTtRQUNBO1FBQUEsT0FBQTtPQUNNO1lBbEdWNEMsK0JBb0dxQzdELEdBQUUwQjtJQUtyQyxJQUFJLFdBQUEsV0FMK0IxQixHQUFFMEIsSUFLakM7VUFDQ2M7U0FBQXZCLDBCQUFBdUI7S0FBUyxHQXBhWmIsSUFvYUdWLE1BQ0gsT0FBQSxXQW5HSjJDLHlCQWtHTzNDO3VDQUFBQTs7R0FDc0I7R0FJN0I7OztZQVlJNkMsY0FDQ2pCLFdBQ0FOO0lBRUgsU0FGR0E7Z0JBQUFBLGdDQXdEQ3dCOztTQUFBQTtJQU1KLEdBTklBOztNQXREcUJDLEtBSHRCbkI7TUFJT29COzBCQUFtQkQsSUFBR0U7U0FDNUIsSUFEeUJDLE9BQUFILElBQUdJLFNBQUFGO1NBQzVCO29CQUR5QkM7V0FHdkI7WUFBQSxPQUFBLHVCQVdBRSxpQkFkMEJEOztXQUcxQixPQVdBQyx1QkFkMEJEOztpQkFBSEQ7O2FBWUQ7Y0FEV0csT0FYVkg7Y0FBQUksT0FBQUo7Y0FBR0ssYUFXT0YsTUFYUEY7Y0FBSEQsT0FBQUk7Y0FBR0gsU0FBQUk7OztpQkFJY3hFLElBSmpCbUUsU0FJUU0sVUFKUk47YUE5YS9CbkMscUJBa2J1Q3lDO2FBcEl2Q1osK0JBb0lnRDdEO2FBRXhDO2NBQUEsT0FBQSx1QkFRQXFFLGlCQWQwQkQ7O2FBTTFCLE9BUUFDLHVCQWQwQkQ7O2lCQVFnQjdGLE9BUm5CNEY7YUFTdkIsNEJBRDBDNUY7YUFDMUM7Y0FBQSxPQUFBLHVCQUtBOEYsaUJBZDBCRDs7YUFTMUIsT0FLQUMsdUJBZDBCRDs7O1FBWU87TUFaN0JNO2lCQUFtQlYsSUFBR0U7Uyx1QkFBdEJELHdCQUFtQkQsSUFBR0U7O01BYzFCRzswQkFBVUg7U0FDWixLQURZQSxNQUVKO2FBQ0ZFLFNBSE1GLFNBR1ZGLEtBSFVFO1NBR0U7VUFBQSxPQUFBLHVCQWpCUkQsMEJBaUJKRCxJQUFJSTs7U0FBUSxPQWpCUkgsZ0NBaUJKRCxJQUFJSTtRQUFrQztLQWpCbENNLG1CQURlVjs7UUF5QkNHLE9BNUJ2QnRCO2FBNkJPOEIsOEJBQW1CWCxJQUFHRTtLQUM1QixJQUR5QkMsT0FBQUgsSUFBR0ksU0FBQUY7S0FDNUI7Z0JBRHlCQztPQUd2QjtRQUFBLE9BQUEsdUJBY0FTLGVBakIwQlI7O09BRzFCLE9BY0FRLHFCQWpCMEJSOzthQUFIRDs7U0FlRDtVQURZRyxPQWRYSDtVQUFBSSxPQUFBSjtVQUFHSyxhQWNRRixNQWRSRjtVQUFIRCxPQUFBSTtVQUFHSCxTQUFBSTs7O2FBSXdCeEUsSUFKM0JtRTtTQUt2QixXQURrRG5FLEdBaENyRHVDO1NBaUNHO1VBQUEsT0FBQSx1QkFZQXFDLGVBakIwQlI7O1NBSzFCLE9BWUFRLHFCQWpCMEJSOztxQkFBSEQ7O2NBV0pVO1VBQ25CLFdBRG1CQSxLQXZDdEJ0QztVQXdDRztXQUFBLE9BQUEsdUJBS0FxQyxlQWpCMEJSOztVQVkxQixPQUtBUSxxQkFqQjBCUjs7U0FTMUI7VUFBQSxPQUFBLHVCQVFBUSxlQWpCMEJSOztTQVMxQixPQVFBUSxxQkFqQjBCUjs7O0lBZU87YUFmN0JVLHFCQUFtQmQsSUFBR0U7Syx1QkFBdEJTLHdCQUFtQlgsSUFBR0U7O2FBaUIxQlUsbUJBQVVWO0tBQ1osS0FEWUEsTUFFSjtTQUNGRSxTQUhNRixTQUdWRixLQUhVRTtLQUdFO01BQUEsT0FBQSx1QkFwQlJTLDBCQW9CSlgsSUFBSUk7O0tBQVEsT0FwQlJPLGdDQW9CSlgsSUFBSUk7SUFBa0M7SUFJMUMsT0F4QlFVLHFCQURnQlg7R0FxQ3VCO0dBTWQ7SUFBakNZO0lBTUFDLHFCQUFrRDtJQVJsREM7WUFtQkFDLHNCQUF1QkM7SUFDekIsU0FsQkVKOztNQW1CVSxHQUFBLDZCQWJWQztNQWNxQztPQUFBLFFBQUEsNEJBZHJDQTtPQWMyQnpDO09BQVhNO01BNUZoQmlCLGNBNEZnQmpCLFdBQVdOOztJQXBCM0J3QztLQUFBQTtJQWpmSi9DLHFCQWtnQjJCbUQ7O0dBUVU7WUFFakNDLHVCQUF1QnBGO0lBM0J2QitFO0tBQUFBO0lBNkJXLElBRFRJLG1CQTdnQk5uRCxvQkE4Z0JNTyxTQUFTLFdBRll2QztJQVZ2QmtGLHNCQVdFQztJQUVKLE9BREk1QztHQUVFO1lBL05SOEM7SUF3T0UsaUJBeENFTjtrQkFpQkFHO0dBd0J1QztZQXpQM0NJLDRCQThQTUMsV0FFRjFDLFdBQVVOO0lBRVosR0FKSWdEO1NBQWtCQyxNQUFsQkQsUUFBQUUsa0JBQWtCRDs7U0FBbEJDO0lBSUo7U0FIcUNDLGlCQUFqQ0MsaUNBQWlDRDs7U0FBakNDLGlDQWpERlY7SUFvREY7S0FBSVc7T0FKQUg7VUFDQUU7YUEvQ0ZaOzs7VUE4Q0VVO0lBU0osT0FMSUc7Y0E1Q2dEO29DQTBDbEQvQyxXQUFVTixTQTFDVnlDO2NBcUJBSTsrQkFnQ0UsT0FuSUZ0QixjQXdIQWpCLFdBQVVOLFFBV3NCO0dBQUM7WUFsUnJDc0Q7SUFvUmFKLGlCQUFpQkUsZ0NBQStCeEUsR0FBRW9CO0lBQzdELElBQVlNLFlBRCtDMUI7SUE5cEJ6REcsa0JBOHBCeURILEdBQUVvQjtJQTdRL0QrQztNQTZRYUcsaUJBQWlCRSxnQ0FDaEI5QyxXQURpRE47SUFJN0Q7R0FHQztZQTdRSHVELHlCQWdSTVAsS0FDUXZGLEdBQ1QrRjtJQUVILEdBSklSO1NBQXVDQyxNQUF2Q0QsUUFBQVMsaUNBQXVDUjs7U0FBdkNRO0lBSUosR0FKSUEsZ0NBS0YsT0FBQSxXQUpVaEc7UUFPTjRGLHFCQS9FSmI7SUFvRkEsS0FMSWE7S0F1QnFCLE9BM0V6QlIsdUNBNEVJLE9BQUEsV0EvQk1wRixNQStCRjtJQWpCSjtLQUFBLFFBQUEsV0FiSCtGO0tBWTBDRTtLQUFuQkM7S0FBbEJDO0tBRUFDLDBCQUZrQkY7SUFZdEI7O1VBVklFLGlCQUZxQ0g7TUEvRTNDakI7SUEyRkUsT0FaSW1CO0dBa0JHO1lBc0JURSxlQUFlQyxtQkFDSkMsR0FEd0JoRTtJQUNyQyxJQUNJcEIsSUFwdkJFRCxXQW12Qk9xRixJQUdiLE9BRklwRjs7Ozs7aUJBUUY7cURBVmVtRjs7T0FhRixJQUFURSxXQW55Qkp6RixnQkFzeEJtQ3dCO09BcFZ2Q3NELGdCQXNWTTFFLEdBV0VxRjtPQUVKOztPQVBBLE9BQUEsOENBUmVGOztHQWVQO1lBekJaRyxjQTJCa0JGLEdBQUVoRTtJQUFTLE9BakJ6QjhELGtDQWlCY0UsR0FBRWhFO0dBQWdEO1lBMUJwRW1FLE9BMkJXSCxHQUFFN0UsR0FBSSxPQWxCYjJFLDJCQWtCT0UsT0FBRTdFLElBQW9DO1lBMUJqRGlGLFdBMkJlSixHQUFFdEY7SUFBTSxPQW5CbkJvRiwrQkFtQldFLE9BQUV0RjtHQUErQztZQUU1RDJGLHFCQUFxQk4sbUJBQ1ZDLEdBRDhCaEU7SUFDM0MsSUFDSXBCLElBendCRUQsV0F3d0JPcUYsSUFHYixPQUZJcEY7Ozs7O2lCQVFGO3FEQVZxQm1GOztPQWFSLElBQVRFLFdBeHpCSnpGLGdCQTJ5QnlDd0I7T0F6VzdDc0QsZ0JBMldNMUUsR0FXRXFGO09BR0o7O09BUkEsT0FBQSw4Q0FScUJGOztHQWdCYjtZQW5EWk8sb0JBcUR3Qk4sR0FBRWhFO0lBQ3hCLE9BbkJFcUUsOENBa0JvQkwsR0FBRWhFO0dBQzJCO1lBckRyRHVFLGFBc0RpQlAsR0FBRTdFO0lBQ2pCLE9BckJFa0YsdUNBb0JhTCxPQUFFN0U7R0FDMkI7WUF0RDlDcUYsaUJBdURxQlIsR0FBRXRGO0lBQ3JCLE9BdkJFMkYsMkNBc0JpQkwsT0FBRXRGO0dBQ2dDO1lBbER2RCtGLE9BMkdlN0Y7SUE3Q1MsSUFBbEI4RjthQWVNQyw2QkFHU0MsdUJBQXVCaEc7S0FFdEMsSUFGc0NDLE1BQUFEO0tBRXRDO01BQVEsSUFBSkUsTUE5ekJGSCxXQTR6Qm9DRSxNQUd0QyxRQURJQzs7O1NBTUYsT0FSYThGOztTQVdiLElBRFF0RSxzQkFDUixVQURRQTs7O29CQVZLc0U7cUJBeHlCakI3RjtzQkEweUJNRCxLQXBCSjRGO3dCQTRCVXBFLFdBVktzRTs7Y0FxQmlCakU7VUFDNUIsT0FBQTs7bUJBekJFZ0U7bUJBR1NDO21CQXFCaUJqRTs7YUFyQk1rRSxrQkFBQWhHLE1BQUFnRzs7aUJBTXBDLE9BTmFEOzs7SUFzQnlEO0lBRTFFLElBSUV0RSxZQS9CTXFFLGdDQThCRy9GO2tCQUd1QmtHO0tBQWIsT0FyYnpCL0Isb0NBcWJzQytCLE9BaERoQ0o7SUFrRGlEO0lBRnJELE9BQUEsV0FBYSxtQ0FGVHBFO0dBSWlEO1lBUXZEeUUsU0FpQlc1RixHQUNULGVBRFNBLElBQzhCO1lBaEJ6QzZGLFVBa0JjaEYsUUFDWixXQTc1QkV4QixnQkE0NUJVd0IsU0FDc0M7WUFwQnBEaUYsS0FzQlN2RyxLQUNQLGVBRE9BLE1BQ2lDO0dBRXhCLElBdEJsQndHLGNBSkFILGFBT0FJLGNBUEFKO1lBUUFLLFlBb0JnQjNHLEdBQUksT0E1QnBCc0csYUE0QmdCdEcsSUFBbUI7R0FDbEI7SUFsQmpCNEcsYUFYQU47SUFLQU8sY0FMQVA7SUFNQVEsZUFOQVI7WUFTQVMsVUF1QmMvRyxHQUFJLE9BaENsQnNHLGFBZ0NjdEcsSUFBaUI7WUF0Qi9CZ0gsYUF1QmlCaEgsR0FBSSxPQWpDckJzRyxhQWlDaUJ0RyxJQUFvQjtZQXBCckNpSCxVQXNCY0MsS0FDWiw4QkFEWUEsT0FDc0M7WUF0QnBEQyxpQkF3QnFCRCxLQUNuQiw4QkFEbUJBLE9BQ3dDO1lBUzdERSxZQWVpQkM7SUFFYixJQURFOUcsc0JBRFc4RztJQVNmLFdBUkk5RztHQVFHO1lBbkJUK0csWUFnQ1UsSUFBSm5ILElBckNOaUgsZ0JBc0NFLFdBRElqSCxHQUFBQSxHQUNxQztZQWhDM0NvSCxZQW1DVSxJQUFKcEgsSUF6Q05pSCxnQkEwQ0UsV0FESWpILEdBQUFBLEdBQ3FDO1lBbEMzQ3FILFdBNkNlQztJQUNiO0tBQUl0SCxJQXRETmlIO0tBd0RNN0osT0FETyw0QkFEUDRDLEdBRFNzSDtLQUtENUYsWUFKUjFCO0lBSVEwQixtQkFGUnRFO0lBTUosT0FSSTRDO0dBUWU7WUFyRHJCdUgsV0F1RGVEO0lBQ2I7S0FBSXRILElBakVOaUg7S0FtRU03SixPQURPLDRCQURQNEMsR0FEU3NIO0tBS0Q1RixZQUpSMUI7SUFJUTBCLG1CQUZSdEU7SUFNSixPQVJJNEM7R0FRZTtZQTlEckJ3SCxZQWtFY0M7SUFDWixPQWwrQk0xSCxXQWkrQk0wSDs7T0FJSSxPQUpKQTs7T0FPRDtRQUc0QnpILElBdkZ6Q2lIO1FBbmhCa0VTO21CQXltQmpEQztXQUVGLElBQUwxSCxNQTUrQkZGLFdBMitCaUNDO1dBN2tCekMwRSxnQkE4a0JVekUsS0FGTzBIO1dBbUJYO1VBQVM7UUE1bkJnRDVGLFNBZ21CakQwRjtRQS9sQlIzRixPQXZCRk8sK0JBc0IyRE4sSUFBRzJGO1FBK25CMURFOzBCQTVuQkosT0FqSEEvRiwrQkErR0VDLE1BRHlEQyxJQUdVO1FBaW9CekQ4RixjQTFCeUI3SDtPQXJtQnJDd0Msb0JBK25CWXFGLGFBTFJEO09BTUosT0EzQnFDNUg7ZUFQdEIsT0FITHlIOztHQXVDVTtZQXhHeEJLLFVBMEdjTDtJQUVOLFlBNWdDQTFILFdBMGdDTTBIOzs7T0FJSSxPQUpKQTs7T0FPRDtRQURESTtRQUk2QjdILElBaEl6Q2lIO1FBK0hRUzttQkFBU0M7V0FFRixJQUFMMUgsTUFyaENGRixXQW9oQ2lDQztXQXRuQnpDMEUsZ0JBdW5CVXpFLEtBRk8wSDtXQVVYO1VBQVM7T0E3ckJYdkYsK0JBZ3JCUXlGLGFBR0pIO09BWUosT0FYcUMxSDtlQVB0QixPQUhMeUg7O0dBdUJVO1lBNkZwQk0sZ0JBRUVDLGVBQ0FDO0lBS0ssSUFBTGpJLElBdG9DRUQsV0Fpb0NGa0k7SUFPRCxHQUZDakksTUFOQWdJLGVBU0YsT0FIRWhJO2dCQUFBQTs7O2NBeHVCTjBFLGdCQWt1Qk1zRCxlQU1BaEk7O09BcDBCRjtRQUZpQjZIO1FBQU1LLGtCQWcwQnJCRjtRQTN6QkFHO1VBdEdGN0cseUJBaUd1QjRHLG9CQUFOTDtRQUtJN0Ysb0JBTEVrRyxxQkFBTkw7ZUFLSTdGOztTQUFBb0c7U0FBbkJDLHNCQXRGRTVHLHdCQXNGRjBHOzs7U0FBbUJDLHNCQUFBcEc7U0FBbkJxRyxzQkFBQUY7O1FBL0Z5QjNHLEtBMEZWcUc7UUExRk90RyxLQTBGRDJHO1FBWXJCSTtpQkF0R3NCL0c7YUFBR0M7b0JBQUFBLGtCQUFIRCxTQUFBQSxJQUFHQztPQTBGSjBHLHFCQUtyQkc7T0FMcUJILHFCQVlyQkk7T0FacUJKLHFCQUtGRTtPQUxFRixxQkFBTkw7T0E1U2pCMUgsa0JBa25DRUgsT0FOQWdJO09BOEJBLE9BOUJBQTtzQkFsdUJOdEQsZ0JBa3VCTXNELGVBTUFoSTs7R0F3Qm9DO1lBNDVDMUJ1SSxZQTM0Q0R2SSxHQURKbkI7SUFFRCxJQUFKb0IsTUFockNFRixXQStxQ09DO2FBb0JUd0k7S0FDRixJQXlDdUN4SSxJQXpWM0NpSCxnQkE0Uk1oSCxPQStCRWtCLGdCQTNrQ1JOO2NBNmtDUTZHLFNBMkJBQztNQTFCRixTQTBCRUE7T0FFVSxJQUFOMUIsTUE5dUNKbEcsV0E2dUNtQ0M7T0EvMEIzQzBFLGdCQWcxQll1QixLQUZKMEI7T0FNQTs7VUEvQlVwSCxJQXlCVm9IO01BeG1DUjlHLHFCQTJrQ1FNO01BT0EsSUFDTSxJQUFBLE9BQUEsV0F6Q0h0QyxHQXFDTzBCLElBT0dOO1lBSEVvQjtXQUFBdkIsMEJBQUF1QjtPQUNSLEtBaG1DWGIsSUErbENtQlYsd0NBQUFBO1dBR0ZHLE1BclhyQm9HLEtBa1h1QnZHOztNQU9MLElBQU5JLE1BOXRDSkgsV0E2dUNtQ0M7TUEvR3ZDK0gsZ0JBZ0dRN0gsS0FKU0Q7TUFjYjtLQVVVO0tBR2QsV0FSdUNELEdBNUJuQzBIO0lBb0M2QjtJQUduQyxJQVVFdEcsU0FsRkVuQjtXQWtGRm1COztPQUNrQixXQURsQkE7O09BSXNCO1FBRGR5RyxjQUhSekc7UUFJc0IsUUFuRXBCb0g7UUFtRVFkO1FBQUx4SDtPQXQ2QkxrQywrQkFxNkJReUYsYUFDRUg7T0FDVixPQURLeEg7O1dBYktLLElBU1ZhO09BTGUsT0FqMUJuQnVEOztnQ0FnMUIyQixPQUNSLFdBL0VSOUYsR0EyRUcwQixHQUdnQjs7aUJBRXRCO2tCQUNFLFFBNURKaUk7a0JBMkRZZDtrQkFBTDFIO2lCQUVMLFdBRktBLEdBQUswSCxVQTlFWnpIO2dCQWdGMEI7O0dBUXpCO1lBN01Qd0ksZUErTW1CQyxTQUNKMUksR0FEY25CO0lBRW5CLElBQUpvQixNQTV3Q0VGLFdBMndDT0M7YUFHVHdJO0tBQ0YsSUF1QnVDeEksSUFsWjNDaUgsZ0JBd1hNaEgsT0FLRWtCLGdCQTdvQ1JOO2NBK29DUTZHLFNBQVNDO01BQ1gsU0FEV0E7T0FvQkMsSUFGRHRHLFFBbEJBc0csYUFvQkwxQixNQXZ5Q0psRyxXQXN5Q21DQztPQXg0QjNDMEUsZ0JBeTRCWXVCLFNBRzJDLFdBaENwQ3lDLFNBMkJGckg7T0FNVDs7VUF0QlVkLElBRkRvSDtNQS9vQ2pCOUcscUJBNm9DUU07TUFPQSxJQUNNLElBQUEsT0FBQSxXQWZldEMsR0FXWDBCLElBT0dOO1lBRk5vQjtXQUFBdkIsMEJBQUF1QjtPQUFTLEtBbHFDcEJiLElBa3FDV1Ysd0NBQUFBO1dBRU1HLE1BdmJyQm9HLEtBc2JpQixXQWpCRXFDLFNBZ0JKNUk7O01BS0csSUFBTkksTUEveENKSCxXQXN5Q21DQztNQXhLdkMrSCxnQkFpS1E3SCxLQUhTRDtNQU9iO0tBUVU7S0FHZCxXQVJ1Q0QsR0FuQm5DMEg7SUEyQjZCO0lBR25DLFlBckNJekg7OztXQStDT0gsZ0JBQ1MsZUFBa0IsV0FsRHJCNEksU0FpRE41STs7T0FJYTtRQURkK0g7UUFDYyxVQWpEcEJXO1FBaURRZDtRQUFMeEg7T0EvOUJMa0MsK0JBODlCUXlGLGFBQ0VIO09BQ1YsT0FES3hIOztXQWJLSztPQUlLLE9BMTRCbkJvRTs7Z0NBeTRCMkIsT0FDUixXQTVDVTlGLEdBd0NmMEIsR0FHZ0I7O2lCQUV0QjtrQkFDRSxRQTFDSmlJO2tCQXlDWWQ7a0JBQUwxSDtpQkFFTCxXQUZLQSxHQUFLMEgsVUEzQ1p6SDtnQkE2QzBCOztHQVF6QjtZQXl2Q1MwSSxPQXZ2Q1I5SixHQUNPbUI7SUFDTCxJQUFKQyxNQXIwQ0VGLFdBbzBDT0M7YUFHVHdJO0tBQ0YsSUFzQnVDeEksSUExYzNDaUgsZ0JBaWJNaEgsT0FLRWtCLGdCQXRzQ1JOO2NBd3NDUTZHLFNBaUJBQztNQWhCRixTQWdCRUE7T0FFVSxJQUFOekgsTUEvMUNKSCxXQTgxQ21DQztPQWg4QjNDMEUsZ0JBaThCWXhFLEtBRkp5SDtPQU1BOztVQXJCVXBILElBZVZvSDtNQXp0Q1I5RyxxQkFzc0NRTTtNQU9BLElBQ00sSUFBQSxXQUFVLFdBZmhCdEMsR0FXVTBCLEtBR05xSTtZQUN1QnZIO1dBQUF2QiwwQkFBQXVCO09BQ3BCLEtBM3RDWGIsSUEwdEMrQlYsd0NBQUFBO1dBRHZCOEksaUJBQ3VCOUk7O01BS2pCLElBQU5HLE1BdjFDSkYsV0E4MUNtQ0M7TUFoOEIzQzBFLGdCQXk3Qll6RSxLQU5BMkk7TUFVSjtLQVFVO0tBR2QsV0FSdUM1SSxHQWxCbkMwSDtJQTBCNkI7SUFHbkMsSUFjRXRHLFNBbERFbkI7V0FrREZtQjs7T0FDa0IsV0FEbEJBOztPQUlzQjtRQURkeUcsY0FIUnpHO1FBSXNCLFFBcERwQm9IO1FBb0RRZDtRQUFMeEg7T0EzaENMa0MsK0JBMGhDUXlGLGFBQ0VIO09BQ1YsT0FES3hIOztXQWpCS0ssSUFhVmE7T0FMZSxPQXQ4Qm5CdUQ7OztpQkFrOEJRLElBRVEsSUFBQSxXQUFVLFdBN0NsQjlGLEdBdUNNMEI7dUJBT0djO3NCQUFBdkIsMEJBQUF1QjtrQkFBUyxLQXp2Q3RCYixJQXl2Q2FWLHdDQUFBQTtpQ0FBQUE7O2lCQUZQO2dCQUV5RDs7aUJBRTNEO2tCQUNFLFFBN0NKMEk7a0JBNENZZDtrQkFBTDFIO2lCQUVMLFdBRktBLEdBQUswSCxVQTlDWnpIO2dCQWdEMEI7O0dBUXpCO1lBaFZQNEksUUFvVlVoSyxHQUFFaUs7SUFDVixJQUNNLElBQUEsT0FBQSxXQUZFakssT0FLS21CO1VBRk5xQjtTQUFBdkIsMEJBQUF1QjtLQUFTLEtBNXdDZGIsSUE0d0NLVix3Q0FBQUE7U0FFTUUsSUFqaUJmcUcsS0EraEJTdkc7O0lBR0MsSUFBSkcsTUF2NENFRixXQXM0Q09DO2FBR1R3STtLQUNGLElBdUJ1Q3hJLElBN2dCM0NpSCxnQkFtZk1oSCxPQUtFa0IsZ0JBeHdDUk47Y0Ewd0NRNkcsU0FBU0M7TUFDWCxTQURXQTtPQUlDLElBQU4xSCxNQWw1Q0pGLFdBaTZDbUNDO09BbmdDM0MwRSxnQkFvL0JZekUsS0FKSzBIO09BUVQ7O1VBRVM3SCxNQVZBNkg7TUExd0NqQjlHLHFCQXd3Q1FNO01BZUEsSUFDTSxJQUFBLE9BQUEsV0EzQkYySCxHQXVCS2hKLE1BT0lJO1lBRk5KO1dBQUF1Qiw0QkFBQXZCO09BQVMsS0FyeUNwQlUsSUFxeUNXYSwwQ0FBQUE7V0FFTW5CLE1BMWpCckJtRyxLQXdqQmVoRjs7TUFLRyxJQUFONEUsTUFsNkNKbEcsV0FpNkNtQ0M7TUFuU3ZDK0gsZ0JBb1NROUIsS0FIUy9GO01BT2I7S0FBVTtLQUdkLFdBUnVDRixHQW5CbkMwSDtJQTJCNkI7SUFHbkMsWUFyQ0l6SDs7O1dBeUNPb0I7T0FJTSxPQXhnQ25Cc0Q7O2dDQXVnQzJCLE9BQ1IsV0FuRFBtRSxHQStDQ3pILE9BR21COztpQkFFeEI7a0JBQ0UsUUE3Q0ptSDtrQkE0Q1lkO2tCQUFMMUg7aUJBRUwsV0FGS0EsR0FBSzBILFVBOUNaekg7Z0JBZ0QwQjs7T0FHTjtRQURkNEg7UUFDYyxVQWpEcEJXO1FBaURRZDtRQUFMeEg7T0ExbENMa0MsK0JBeWxDUXlGLGFBQ0VIO09BQ1YsT0FES3hIO2VBWkwsT0F2Q0VEOztHQXFEQztZQS9YUDhJLGdCQWlZb0JMLFNBQVE3SixHQUFFaUs7SUFDNUIsSUFDTSxJQUFBLE9BQUEsV0FGb0JqSyxPQUtibUI7VUFGTnFCO1NBQUF2QiwwQkFBQXVCO0tBQVMsS0F6MENkYixJQXkwQ0tWLHdDQUFBQTtTQUVNRSxJQTlsQmZxRyxLQTRsQlN2Rzs7SUFHQyxJQUFKRyxNQXA4Q0VGLFdBbThDT0M7YUFHVHdJO0tBQ0YsSUF3QnVDeEksSUEza0IzQ2lILGdCQWdqQk1oSCxPQUtFa0IsZ0JBcjBDUk47Y0F1MENRNkcsU0FBU0M7TUFDWCxTQURXQTtPQUlDLElBQU4xSCxNQS84Q0pGLFdBKzlDbUNDO09BamtDM0MwRSxnQkFpakNZekUsS0FKSzBIO09BUVQ7O1VBRVM3SCxNQVZBNkg7TUF2MENqQjlHLHFCQXEwQ1FNO01BZUEsSUFDTSxJQUFBLE9BQUEsV0EzQmdCMkgsR0F1QmJoSixNQVFJSTtZQUhOSjtXQUFBdUIsNEJBQUF2QjtPQUFTLEtBbDJDcEJVLElBazJDV2EsMENBQUFBO1dBR01uQixNQXhuQnJCbUcsS0FzbkJpQixXQTdCR3FDLFNBNEJMckg7O01BTUcsSUFBTjRFLE1BaCtDSmxHLFdBKzlDbUNDO01Bald2QytILGdCQWtXUTlCLEtBSFMvRjtNQU9iO0tBQVU7S0FHZCxXQVJ1Q0YsR0FwQm5DMEg7SUE0QjZCO0lBR25DLFlBdENJekg7OztXQTBDT29CO09BSU0sT0F0a0NuQnNEOzs7aUJBcWtDMkIsT0FBRSxXQW5EQ21FLEdBbURELFdBbkRUSixTQWdEUHJIO2dCQUc2Qjs7aUJBRWxDO2tCQUNFLFFBOUNKbUg7a0JBNkNZZDtrQkFBTDFIO2lCQUVMLFdBRktBLEdBQUswSCxVQS9DWnpIO2dCQWlEMEI7O09BR047UUFEZDRIO1FBQ2MsVUFsRHBCVztRQWtEUWQ7UUFBTHhIO09BeHBDTGtDLCtCQXVwQ1F5RixhQUNFSDtPQUNWLE9BREt4SDtlQVpMLE9BeENFRDs7R0FzREM7WUEzY1ArSSxTQTZjYXRGLEtBQUU3RSxHQUFHaUs7SUFDaEIsSUFDTSxJQUFBLE9BQUEsV0FGS3BGLFNBS0UxRDtVQUZOcUI7U0FBQXZCLDBCQUFBdUI7S0FBUyxLQXY0Q2RiLElBdTRDS1Ysd0NBQUFBO1NBRU1FLElBNXBCZnFHLEtBMHBCU3ZHOztJQUdDLElBQUpHLE1BbGdERUYsV0FpZ0RPQzthQUdUd0k7S0FDRixJQStCdUN4SSxJQWhwQjNDaUgsZ0JBOG1CTWhILE9BS0VrQixnQkFuNENSTjtjQXE0Q1E2RyxTQUFTQztNQUNYLFNBRFdBO1dBa0JBdEcsUUFsQkFzRztPQXI0Q2pCOUcscUJBbTRDUU07T0F1QkEsSUFDTSxJQUFBLE9BQUEsV0FuQ0kySCxHQStCRHpILFFBT0k0RTthQUZObkc7WUFBQW1KLDRCQUFBbko7UUFBUyxLQXg2Q3BCVSxJQXc2Q1d5SSwwQ0FBQUE7WUFFTWhELE1BN3JCckJJLEtBMnJCZTRDOztPQUtHLElBQU5DLE1BcmlESm5KLFdBb2lEbUNDO09BdGF2QytILGdCQXVhUW1CLEtBSFNqRDtPQU9iOztVQTlCVTFGLElBRkRvSDtNQXI0Q2pCOUcscUJBbTRDUU07TUFPQSxJQUNNLElBQUEsT0FBQSxXQW5CQ3RDLEdBZUcwQixJQU9HTjtZQUZOb0I7V0FBQXZCLDBCQUFBdUI7T0FBUyxLQXg1Q3BCYixJQXc1Q1dWLHdDQUFBQTtXQUVNRyxNQTdxQnJCb0csS0EycUJldkc7O01BS0csSUFBTkksTUFyaERKSCxXQW9pRG1DQztNQXRhdkMrSCxnQkF1WlE3SCxLQUhTRDtNQU9iO0tBZ0JVO0tBR2QsV0FSdUNELEdBM0JuQzBIO0lBbUM2QjtJQUduQyxZQTdDSXpIOzs7V0F1RE9vQjtPQUlNLE9BanBDbkJzRDs7Z0NBZ3BDMkIsT0FDUixXQWpFRG1FLEdBNkRMekgsT0FHbUI7O2lCQUV4QjtrQkFDRSxRQTNESm1IO2tCQTBEWWQ7a0JBQUwxSDtpQkFFTCxXQUZLQSxHQUFLMEgsVUE1RFp6SDtnQkE4RDBCOztPQUdOO1FBRGQ0SDtRQUNjLFVBL0RwQlc7UUErRFFkO1FBQUx4SDtPQW51Q0xrQywrQkFrdUNReUYsYUFDRUg7T0FDVixPQURLeEg7O1dBbkJLSztPQUlLLE9BeG9DbkJvRTs7Z0NBdW9DMkIsT0FDUixXQXhESjlGLEdBb0REMEIsR0FHaUI7O2lCQUV2QjtrQkFDRSxRQWxESmlJO2tCQWlEWWQ7a0JBQUwxSDtpQkFFTCxXQUZLQSxHQUFLMEgsVUFuRFp6SDtnQkFxRDBCOztHQWN6QjtZQXBnQlBrSixtQkFzZ0J1QlQsU0FBUWhGLEtBQUU3RSxHQUFHaUs7SUFDbEMsSUFDTSxJQUFBLE9BQUEsV0FGdUJwRixTQUtoQjFEO1VBRk5xQjtTQUFBdkIsMEJBQUF1QjtLQUFTLEtBbDlDZGIsSUFrOUNLVix3Q0FBQUE7U0FFTUUsSUF2dUJmcUcsS0FxdUJTdkc7O0lBR0MsSUFBSkcsTUE3a0RFRixXQTRrRE9DO2FBR1R3STtLQUNGLElBaUN1Q3hJLElBN3RCM0NpSCxnQkF5ckJNaEgsT0FLRWtCLGdCQTk4Q1JOO2NBZzlDUTZHLFNBQVNDO01BQ1gsU0FEV0E7V0FtQkF0RyxRQW5CQXNHO09BaDlDakI5RyxxQkE4OENRTTtPQXdCQSxJQUNNLElBQUEsT0FBQSxXQXBDc0IySCxHQWdDbkJ6SCxRQVFJNEU7YUFITm5HO1lBQUFtSiw0QkFBQW5KO1FBQVMsS0FwL0NwQlUsSUFvL0NXeUksMENBQUFBO1lBR01oRCxNQTF3QnJCSSxLQXd3QmlCLFdBdENNcUMsU0FxQ1JPOztPQU1HLElBQU5DLE1BbG5ESm5KLFdBaW5EbUNDO09BbmZ2QytILGdCQW9mUW1CLEtBSFNqRDtPQU9iOztVQWhDVTFGLElBRkRvSDtNQWg5Q2pCOUcscUJBODhDUU07TUFPQSxJQUNNLElBQUEsT0FBQSxXQW5CbUJ0QyxHQWVmMEIsSUFRR047WUFITm9CO1dBQUF2QiwwQkFBQXVCO09BQVMsS0FuK0NwQmIsSUFtK0NXVix3Q0FBQUE7V0FHTUcsTUF6dkJyQm9HLEtBdXZCaUIsV0FyQk1xQyxTQW9CUjVJOztNQU1HLElBQU5JLE1Bam1ESkgsV0FpbkRtQ0M7TUFuZnZDK0gsZ0JBbWVRN0gsS0FIU0Q7TUFPYjtLQWlCVTtLQUdkLFdBUnVDRCxHQTdCbkMwSDtJQXFDNkI7SUFHbkMsWUEvQ0l6SDs7O1dBeURPb0I7T0FJTSxPQTl0Q25Cc0Q7OztpQkE2dEMyQixPQUFFLFdBbEVPbUUsR0FrRVAsV0FsRU5KLFNBK0RWckg7Z0JBRzZCOztpQkFFbEM7a0JBQ0UsUUE3REptSDtrQkE0RFlkO2tCQUFMMUg7aUJBRUwsV0FGS0EsR0FBSzBILFVBOURaekg7Z0JBZ0UwQjs7T0FHTjtRQURkNEg7UUFDYyxVQWpFcEJXO1FBaUVRZDtRQUFMeEg7T0FoekNMa0MsK0JBK3lDUXlGLGFBQ0VIO09BQ1YsT0FES3hIOztXQW5CS0s7T0FJSyxPQXJ0Q25Cb0U7O2dDQW90QzJCLE9BQ1IsV0ExRGM5RixHQXNEbkIwQixHQUdpQjs7aUJBRXZCO2tCQUNFLFFBcERKaUk7a0JBbURZZDtrQkFBTDFIO2lCQUVMLFdBRktBLEdBQUswSCxVQXJEWnpIO2dCQXVEMEI7O0dBY3pCO1lBcG1CUG1KLFNBc21CYTFGLEtBQUU3RTtJQUNiLE9BdG1CRm1LO2FBcW1CYXRGO3NCQUVKN0Q7bUNBQTZCLE9BbHpCdENzRyxTQWt6QlN0RyxHQUFxQztjQUFuQixPQW82QlgwSSxZQXA2QkcsV0FGSjFKO2FBRWdDO3NCQUN0QzRCO21DQUE2QixPQWx6QnRDNEYsS0FrekJTNUYsR0FBbUM7Y0FBakIsT0FtNkJYOEgsWUFuNkJHLFdBSEoxSjthQUc4QjtHQUFDO1lBeGxCOUN3SyxtQkEwbEJ1QlgsU0FBUWhGLEtBQUU3RTtJQUMvQixPQXpsQkZzSzthQXdsQnVCVDthQUFRaEY7c0JBRXRCN0Q7bUNBQTZCLE9BdnpCdENzRyxTQXV6QlN0RyxHQUFxQztjQUFuQixPQSs1QlgwSSxZQS81QkcsV0FGYzFKO2FBRWM7c0JBQ3RDNEI7bUNBQTZCLE9BdnpCdEM0RixLQXV6QjJDLFdBSHBCcUMsU0FHZGpJLElBQTZDO2NBQTNCLE9BODVCWDhILFlBOTVCRyxXQUhjMUo7YUFHc0I7R0FBQztZQTFtQnhEeUssVUErbUJldEosR0FEQ25CO0lBQ2QsSUFDSW9CLE1BbHFERUYsV0FpcURPQyxJQUdiLFFBRklDOzs7O2lCQXR2Q04wRTs7O21CQTR2QzJCLE9BdHZDM0JqQywrQkE4dUNnQjdEO2tCQVFnRDs7bUJBRXhEOzs7NEJBQWUsT0F4dkN2QjZELCtCQTh1Q2dCN0Q7MkJBVTRDOztrQkFBZ0I7OztXQVFoRTZDLHNCQUNSLE9BN3lDQWMsb0JBNHlDUWQsV0FsQkk3QztlQWdCWjs7R0FHK0I7WUE5bkJuQzBLLFdBbW9CZXZKLEdBREVuQjtJQUVQLElBQUpvQixNQXpyREVGLFdBd3JET0M7YUFHVHdKO0tBQ0YsSUFBSXJJLGdCQXhqRFJOO0tBMGpESSxnQkFBSU87TUFDRixTQURFQSxXQU9BO1VBTFViLElBRlZhO01BMWpEUlAscUJBd2pEUU07TUFNQSxPQWh4Q1J1QiwrQkFxd0NpQjdELEdBU0MwQixHQUtSO0lBQUE7SUFHUixZQWZJTjs7O09BeUJGOztPQUdlLElBRFA0SCx3QkFDSkgsV0ExQkY4QjtPQTJCRixPQXQzQ0FwSCwrQkFvM0NReUYsYUFDSkg7O1dBWk1uSDtPQUlLLE9BanlDbkJvRTs7Z0NBZ3lDMkIsT0ExeEMzQmpDLCtCQXF3Q2lCN0QsR0FrQkgwQixHQUdpRDs7aUJBRXhDLElBQVhtSCxXQW5CTjhCO2lCQW9CRSxjQURJOUIsVUFyQk56SDtnQkFzQnlCOztHQU95QjtZQWhxQnhEd0osV0FtcUJlekosR0FERW5CO0lBRVAsSUFBSm9CLE1BMXRERUYsV0F5dERPQzthQUdUd0o7S0FDRixJQUFJckksZ0JBemxEUk47S0EybERJLGdCQUFJTztNQUNGLFNBREVBLFdBR0E7VUFFU3RCLE1BTFRzQjtNQTNsRFJQLHFCQXlsRFFNO01BU0EsT0FwekNSdUIsK0JBc3lDaUI3RCxHQVlBaUIsS0FFNkI7SUFBQTtJQUc1QyxZQWZJRzs7O1dBbUJPSDtPQUlNLE9BcjBDbkI2RTs7O2lCQW8wQzJCLE9BOXpDM0JqQywrQkFzeUNpQjdELEdBcUJKaUI7Z0JBR29EOztpQkFFMUMsSUFBWDRILFdBdEJOOEI7aUJBdUJFLGNBREk5QixVQXhCTnpIO2dCQXlCeUI7O09BR1osSUFEUDRILHdCQUNKSCxXQTFCRjhCO09BMkJGLE9BdjVDQXBILCtCQXE1Q1F5RixhQUNKSDtlQVhKOztHQVlvRDtZQWhzQnhEZ0MsZUFtc0JlMUosR0FETW5CO0lBRVgsSUFBSm9CLE1BM3ZERUYsV0EwdkRPQzthQUdUd0o7S0FDRixJQUFJckksZ0JBMW5EUk47S0E0bkRJLGdCQUFJTztNQTVuRFJQLHFCQTBuRFFNO01BSUYsT0FoMUNOdUIsK0JBdTBDcUI3RCxNQVNzQjtJQUFBO0lBR3pDLFlBVklvQjs7O09BdUJhLE9BdDJDbkIwRTs7Z0NBcTJDMkIsT0EvMUMzQmpDLCtCQXUwQ3FCN0QsTUF3QjJDOztpQkFFekMsSUFBWDZJLFdBdEJOOEI7aUJBdUJFLGNBREk5QixVQXhCTnpIO2dCQXlCeUI7O09BR1osSUFEUDRILHdCQUNKSCxXQTFCRjhCO09BMkJGLE9BeDdDQXBILCtCQXM3Q1F5RixhQUNKSDs7T0FiVyxPQTkxQ25CL0M7O2dDQTYxQzJCLE9BdjFDM0JqQywrQkF1MENxQjdELE1BZ0IyQzs7aUJBRXpDLElBQVg2SSxXQWROOEI7aUJBZUUsY0FESTlCLFVBaEJOekg7Z0JBaUJ5Qjs7R0FZeUI7WUFodUJ4RDBKLE9BbXVCZTNKLEdBREZuQixHQUFFK0s7SUFFTCxJQUFKM0osTUE1eERFRixXQTJ4RE9DO2FBR1R3SjtLQUNGLElBQUlySSxnQkEzcERSTjtLQTZwREksZ0JBQUlPO01BQ0YsU0FERUE7V0FNU3RCLE1BTlRzQjtPQTdwRFJQLHFCQTJwRFFNO09BVUEsT0F2M0NSdUIsK0JBdzJDZWtILEdBYUU5Sjs7VUFKQ1MsSUFGVmE7TUE3cERSUCxxQkEycERRTTtNQU1BLE9BbjNDUnVCLCtCQXcyQ2E3RCxHQVNLMEIsR0FNNEI7SUFBQTtJQUc1QyxZQWhCSU47OztXQXlCT0g7T0FJTSxPQTc0Q25CNkU7OztpQkE0NEMyQixPQXQ0QzNCakMsK0JBdzJDZWtILEdBMkJGOUo7Z0JBR29EOztpQkFFMUMsSUFBWDRILFdBNUJOOEI7aUJBNkJFLGNBREk5QixVQTlCTnpIO2dCQStCeUI7O09BR1osSUFEUDRILHdCQUNKSCxXQWhDRjhCO09BaUNGLE9BLzlDQXBILCtCQTY5Q1F5RixhQUNKSDs7V0FqQk1uSDtPQUlLLE9BcjRDbkJvRTs7Z0NBbzRDMkIsT0E5M0MzQmpDLCtCQXcyQ2E3RCxHQW1CQzBCLEdBR2lEOztpQkFFeEMsSUFBWG1ILFdBcEJOOEI7aUJBcUJFLGNBREk5QixVQXRCTnpIO2dCQXVCeUI7O0dBWXlCO1lBT3RENEosbUJBQW1CcEM7SUFFSCxJQUFmcUMsZUF4MERLL0osV0FzMERhMEg7V0FFbEJxQzs7T0FHWSxPQUxNckM7O09BT1IsSUFBQSxRQW43QmJMLFNBbTdCU2hDLGNBQUpwRjtPQTN4QkxzSixVQTJ4Qkt0SixtQkFDb0IsT0FsbUN6QjZGLE9BMGxDcUI0QixZQVFZO09BdHhCakNrQztTQTh3QnFCbEM7d0IsT0E3bENyQmxDLE9Bb21DU0g7d0IsT0FubUNUSSxXQW1tQ1NKO09BRVIsT0FGSXBGO2VBSFcsT0FKS3lIOztHQVVsQjtZQUtIc0MsVUFtQmNsTCxHQUFFaUs7SUFDZCxJQUNNLElBQUEsT0FBQSxXQUZNakssT0FLQ21CO1VBRk5xQjtTQUFBdkIsMEJBQUF1QjtLQUFTLEtBbnZEZGIsSUFtdkRLVix3Q0FBQUE7U0FFTUUsSUF4Z0NmcUcsS0FzZ0NTdkc7O0lBSUQsWUEvMkRBQyxXQTYyRE9DOzs7V0FLRnFCLGtCQUNULE9BQUEsV0FYWXlILEdBVUh6SDs7T0FJVDtRQURRd0c7UUFDSkg7bUJBQVN0RztXQUNYLFNBRFdBLFdBR1Q7ZUFDU3RCLE1BSkFzQjtXQUtULE9BQUEsV0FuQlEwSCxHQWtCQ2hKO1VBQ0o7T0FFVCxPQTdoREFzQywrQkFxaERReUYsYUFDSkg7ZUFMSjs7R0FZb0Q7WUF2Q3hEc0MsTUF5Q1VuTDtJQUNSLElBQ00sSUFBQSxPQUFBLFdBRkVBLE9BS0ttQjtVQUZOcUI7U0FBQXZCLDBCQUFBdUI7S0FBUyxLQTF3RGRiLElBMHdES1Ysd0NBQUFBO1NBRU1FLElBL2hDZnFHLEtBNmhDU3ZHOztJQUlELFlBdDREQUMsV0FvNERPQzs7O1dBS0ZxQjtPQUNULE9BQUEsV0FoOUNKb0IseUJBKzhDYXBCOztPQUlUO1FBRFF3RztRQUNKSDttQkFBU3RHO1dBQ1gsU0FEV0EsV0FHVDtlQUNTdEIsTUFKQXNCO1dBS1QsT0FBQSxXQXg5Q1JxQix5QkF1OUNpQjNDO1VBQ2dCO09BRTdCLE9BcGpEQXNDLCtCQTRpRFF5RixhQUNKSDtlQUxKOztHQVlvRDtZQTdEeER1QyxjQWdFZWpLO0lBRVAsWUF6NURBRCxXQXU1RE9DOzs7V0FLRkYsZ0JBQ1QsTUFBQSw0QkFEU0E7O09BSVQ7UUFEUStIO1FBQ0pIO21CQUFTdEc7V0FDWCxTQURXQSxXQUdUO2VBQ1N0QixNQUpBc0I7V0FLVCxPQUFBLFdBMytDUnFCLHlCQTArQ2lCM0M7VUFDZ0I7T0FFN0IsT0F2a0RBc0MsK0JBK2pEUXlGLGFBQ0pIO2VBTEo7O0dBWW9EO1lBN0V4RHdDLEtBb0hpRG5JO0lBbEMvQztLQVFxQy9CLElBaGlDdkNpSCxnQkEwakNpRGxGO0tBaEMzQ29JO0tBQ0FDO2FBSUExQyxTQUFTMkM7S0FDWCxTQURXQSx1QkFKVEQ7TUFBQUEsaUJBSVNDO0tBTFRGLDBCQUFBQTtzQkFBQUE7O01Bc0JTLElBQUxsSyxNQXA4REZGLFdBbzdEK0JDLFdBTGpDb0s7TUFqaEROMUYsZ0JBOVpRM0UsV0FvOERFRTs7Ozs7S0FHSjtJQUNDO1FBTTBDcUssT0FBQXZJO0lBQzdDO1VBRDZDdUk7bUJBaEMzQ0gsOEJBQ0FDLGtCQUtpQ3BLO0tBcUMzQixJQVhxQ3VLLE9BQUFELFNBUzlCckssTUFUOEJxSyxTQWlCekMzQyxXQS85REE1SCxXQXU5RFdFO1lBUVgwSDs7aUJBaERGeUMsbUJBQUFBLGlCQWdERXpDO1lBakJ5QzJDLE9BQUFDOzs7WUFZakMxQyxjQUtSRjtRQWpERndDLDBCQUFBQTtRQTlrREYvSCwrQkEwbkRZeUYsYUF2Q1ZIO1lBMkIyQzRDLE9BQUFDOztvQkFBQUQsT0FBQUM7OztHQWdDTjtZQXJKM0NDLEtBOEpTQyxJQUFHQztJQUNWO0tBQUlDO0tBQ0FDO09BaWtCVXJDLFlBbmtCUGtDLGFBRWdCbEssR0FEbkJvSyxjQUNtQnBLLFdBanBDekIrRixZQWlwQzREO0tBQ3REdUU7T0Fna0JVdEMsWUFua0JKbUMsYUFHYW5LLEdBRm5Cb0ssY0FFbUJwSyxXQWxwQ3pCK0YsWUFrcEM0RDtLQUMxRCxPQWpLRjRELFNBK0pNVSxVQUNBQztXQWdrQlVsQzs7Y0E5akJaLFdBSkVnQyxpQkFBQUE7O21CQUtjRyxlQUFUQztlQUFlLFdBQWZBLElBQVNEOztjQUNULE1BQUE7YUFBWTs7R0FBQztZQW5LeEJFLElBcUtRako7SUFDTixLQURNQSxXQWpwQ1IwRTtlQWlwQ1ExRSxPQUdIbEMsSUFIR2tDO2VBR0csT0F1akJLNEcsZ0JBdmpCSXNDLEdBQUssV0FBTEEsTUFBUSxHQUF2QnBMOztLQUdRO01BQUxxTCxLQUFLLHVCQUFXLDJCQU5oQm5KOztpQkFRY29KLE9BQU1uTDtTQUN0QixPQWlqQlV1STtrQkFsakJZdkk7MkJBQ1ZPO21CQUFLLHlCQUhmMkssSUFFY0MsV0FBQUEsYUFDSjVLOzBCQWpxQ2xCK0Y7a0JBaXFDd0Q7UUFBQztNQUZyRCxPQTdLSjRELEtBNktJLFdBQ0csbUNBUkNuSTtZQTBqQlE0Rzs7ZUE5aUJSLElBQXNCeUMsTUFOdEJGLHVCQU1zQkcsSUFBQUQsS0FBRWxNO2VBQ3RCO3VCQURvQm1NLEdBRWxCLE9BRm9Cbk07NEJBTnhCZ00sT0FNc0JHOztpQkFLUixNQUFBOztnQkFDd0I7aUJBQTNCeEw7aUJBTmFULFlBTWJTLEdBTmFYO2lCQUFGb00sTUFBQUQ7aUJBQUFBLElBQUFDO2lCQUFFcE0sTUFBQUU7O2NBUWM7OztJQWhCTCxJQUFqQzZMLGFBQWlDLE9BM0t6Q1QsS0EwS0szSyxHQUNHb0w7SUFBaUMsT0FzakJ6QnRDOztjQXRqQkUsSUFBU3NDLGNBQUhwTDtjQUFTLFdBQVRBLE9BQUdvTDthQUFhOztHQWdCTztZQU8zQ00sMkJBVzRCeEo7SUFWOUIsSUFVd0J5SixhQUFNQyxPQUFBMUo7O0lBQzNCO1VBRDJCMEosTUFFbkIsV0FGYUQ7U0FBTUUsT0FBQUQsU0FHekJ4TCxNQUh5QndMO1lBdGlFeEIxTCxXQXlpRURFOzs7O1lBSHlCd0wsT0FBQUM7b0JBQU5DLFVBQUFILGlCQUFBQSxVQUFBRyxTQUFNRixPQUFBQzs7O0lBT3NCO0tBakJaRSxpQkFhbkMzTDtLQWI2QjRMO0tBQU1DLFdBQUFGO0tBQVN0QixPQVVuQm9CO0lBVDNCO1VBRDhDcEIsTUFFdEMsZUFGdUJ1QixPQUFNQztTQUFTdkIsT0FBQUQsU0FHNUN0SyxJQUg0Q3NLO1lBNWhFM0N2SyxXQStoRURDOztRQUl5RDtTQVB0QitMLGlCQUduQy9MLEdBSG1DOEw7U0FBTkUsVUFBQUg7U0FBQUEsUUFBQUc7U0FBTUYsV0FBQUM7U0FBU3pCLE9BQUFDOzs7WUFBQUQsT0FBQUM7b0JBQUFELE9BQUFDOzs7R0FvQjdCO1lBS2QwQixhQUFjbEssSUFBaUJtSztJQUNyQyxJQURvQjVCLE9BQUF2SSxJQUFpQm9LLE1BQUFEO0lBQ3JDO1VBRG9CNUI7TUFHbEIsTUFBQTtTQUhrQkMsT0FBQUQsU0FLbEJ0SyxJQUxrQnNLO1lBcmpFZHZLLFdBMGpFSkM7O2dCQUxtQ21NLEtBZWxCLE9BVmpCbk07UUFXTyxJQWhCNEJvTSxNQUFBRCxhQUFqQjdCLE9BQUFDLE1BQWlCNEIsTUFBQUM7OztZQUFqQjlCLE9BQUFDOztnQkFBaUI0QixLQVlsQixPQVBqQm5NLEdBUU8sSUFiNEJxTSxNQUFBRixhQUFqQjdCLE9BQUFDLE1BQWlCNEIsTUFBQUU7OztHQWdCTDtZQUkxQkMsK0JBQWlDdkssSUFBaUJtSztJQUN4RCxJQUR1QzVCLE9BQUF2SSxJQUFpQm9LLE1BQUFEO0lBQ3hEO1VBRHVDNUI7TUFHckMsTUFBQTtTQUhxQ0MsT0FBQUQsU0FLckN0SyxJQUxxQ3NLO1lBemtFakN2SyxXQThrRUpDOztnQkFMc0RtTSxLQWdCcEMsNEJBNzJDdEJ0RyxRQTYxQ3lDMEUsT0FnQm5CLE9BWGxCdks7UUFZTyxJQWpCK0NvTSxNQUFBRCxhQUFqQjdCLE9BQUFDLE1BQWlCNEIsTUFBQUM7OztRQTcxQzFEdkcsT0FrMkNJN0YsUUFMcUNzSyxPQUFBQzs7Z0JBQWlCNEIsS0FhcEMsNEJBMTJDdEJ0RyxRQTYxQ3lDMEUsT0FhbkIsT0FSbEJ2SztRQVNPLElBZCtDcU0sTUFBQUYsYUFBakI3QixPQUFBQyxNQUFpQjRCLE1BQUFFOzs7R0FpQkw7R0FLckM7SUFBWkU7MkJBQStCLE9BQUE7WUFsUW5DQyxPQW9RV3pLO0lBQ1QsU0FEU0EsSUFFUDtJQUVJLFlBMUVKd0osMkJBc0VPeEo7Ozs7TUF5Qkd1STtNQUFINkI7MEJBM0JQSTs7O1dBQUFBOzBEQUFBQSxRQUFBQTtLQTRCZ0IsT0F0RVpOLGFBcUVNM0IsTUFDTSx1Q0FEVDZCOztRQUhKRDthQUFBQTtLQWhCSztNQUc2QmxNLElBdHRDekNpSCxnQkE2c0NXbEY7TUFRSDJGO2lCQUFTdEc7U0FFSCxJQUFKbkIsTUEzbUVGRixXQTBtRWlDQztTQTVzRHpDMEUsZ0JBNnNEVXpFLEtBRk9tQjtTQUtYO1FBQVE7S0FsdkRWbUIsaUNBcXVET1IsSUFRSDJGO0tBT0osT0FOcUMxSDs7YUFhbENrTSxHQUZILE9BaEVJRCxhQTRDR2xLOzt5QkFGUHdLOzs7VUFBQUE7eURBQUFBLFFBQUFBO0lBeUJnQixPQW5FWk4sYUE0Q0dsSyxJQXVCUyx1Q0FEYm1LO0dBSW1EO1lBN1IxRE8sS0ErUlMxSztJQUNQLFNBRE9BLElBRUw7SUFDSSxZQXJHSndKLDJCQWtHS3hKOzs2QkEwQksySyxpQkFBSFA7S0FDUCw0QkE1NkNKdEcsUUFpNUNTOUQ7OzBCQTlCTHdLOzs7V0FBQUE7MERBQUFBLFFBQUFBO0tBMERnQixPQXBHWk4sYUFrR01TLElBRU0sdUNBRlRQOztRQUpKRDthQUFBQTtLQWpCSztNQUc2QmxNLElBanZDekNpSCxnQkF5dUNTbEY7TUFPRDJGO2lCQUFTdEc7U0FFWCw0QkExNUNOeUUsUUFpNUNTOUQ7U0FVSyxJQUFKOUIsTUF2b0VGRixXQXFvRWlDQztTQXZ1RHpDMEUsZ0JBeXVEVXpFLEtBSE9tQjtTQU1YO1FBQVE7S0E5d0RWbUIsaUNBaXdES1IsSUFPRDJGO0tBUUosT0FQcUMxSDs7YUFjbENrTSxHQUZILE9BeEVJSSwrQkFvREN2Szs7eUJBOUJMd0s7OztVQUFBQTt5REFBQUEsUUFBQUE7SUFzREUsT0E1RUVEO2FBb0RDdkssSUF3QkgsdUNBRkNtSztHQU1tRDtZQVVsRFMsK0JBQ0hDLFNBQ0E3SztJQUdILElBSkc4SyxZQUFBRCxTQUNBdEMsT0FBQXZJO0lBR0g7VUFIR3VJLE1BS0QsV0FBVSwyQkFOVHVDO0tBV0ssSUFWTHRDLE9BQUFELFNBUVl0SyxJQVJac0ssU0FjQ2xKLFNBbnJFRXJCLFdBNnFFU0M7WUFNWG9COztRQUNBLE9BREFBOztZQWREa0osT0FBQUM7O1FBWTBDO1NBRC9CaEssSUFHVmE7U0FmRDBMLGdCQVlXdk0sR0FaWHNNO1NBQUFBLFlBQUFDO1NBQ0F4QyxPQUFBQzs7O0dBa0JvRDtZQXZWekR3QyxRQW9YOENoTDtJQXhCNUMsU0F3QjRDQSxJQXZCMUM7OztTQXVCMEMwSixPQUFBMUo7S0FDMUM7V0FEMEMwSjtNQW1CbEMsSUFuQmtDQyxPQUFBRCxTQWtCM0J4TCxNQWxCMkJ3TCxTQXVCdENwRyxXQTN1RUF0RixXQXN1RVdFO2FBS1hvRjs7U0FDa0IsV0FEbEJBOzthQXZCc0NvRyxPQUFBQzs7OztLQUdoQztNQUc2QnhMLE1BdDBDM0MrRyxnQkFnMEM4Q2xGO01BS3BDMkY7aUJBQVN0RztTQUNYO1VBQ0lwQixJQTN0RUpELFdBMHRFbUNHO1VBRS9CbUYsV0F6REpzSCxrQ0FpRHNDNUs7U0F0ekQ5QzJDLGdCQTZ6RFkxRSxHQUNBcUY7U0FHSjtRQUFRO0tBbjJEWjlDLGlDQXcxRDBDUixJQUtwQzJGO0tBUUosT0FQcUN4SDs7SUFlaUIsSUFEMUM4TSxNQUdWM0gsYUE1Q3NEaEcsWUF5QzVDMk4sU0F6QzRDOU4sTUFBQUcsT0FBSWlMLE9BcUJwQm9CO0lBcEIxQztVQUQ4RHBCLE1BR3JELE9BOTFDYm5FLFNBODFDYSwyQkFIaURqSDtLQU9sRCxJQVBzRHFMLE9BQUFELFNBTS9DdEssSUFOK0NzSyxTQVcxRGxKLFNBMXNFQXJCLFdBcXNFV0M7WUFLWG9COztRQUNrQixXQURsQkE7O1lBWDBEa0osT0FBQUM7O1FBU04sSUFEMUNoSyxJQUdWYSxXQVhzRGhDLFlBUTVDbUIsR0FSNENyQixNQUFBQSxNQUFBRSxPQUFJa0wsT0FBQUM7OztHQW9EL0Q7WUFsWkgwQyxNQTZhOENsTDtJQXRCNUMsU0FzQjRDQSxJQXJCMUM7OztTQXFCMEMwSixPQUFBMUo7S0FDMUM7V0FEMEMwSjtNQW9CbEMsSUFwQmtDQyxPQUFBRCxTQW1CM0J4TCxNQW5CMkJ3TCxTQXdCdENwRyxXQXR5RUF0RixXQWl5RVdFO2FBS1hvRjs7U0FDQSw0QkEzakRSUSxRQWtpRDhDOUQsS0EwQnBCLFdBRmxCc0Q7O2FBeEJzQ29HLE9BQUFDOzs7O0tBR2hDO01BRzZCeEwsTUFoNEMzQytHLGdCQTAzQzhDbEY7TUFLcEMyRjtpQkFBU3RHO1NBQ1g7VUFDSXBCLElBcnhFSkQsV0FveEVtQ0c7VUFFL0JtRixXQW5ISnNILGtDQTJHc0M1SztTQVN0Qyw0QkEzaURSOEQsUUFraUQ4QzlEO1NBaDNEOUMyQyxnQkF1M0RZMUUsR0FDQXFGO1NBSUo7UUFBUTtLQTk1RFo5QyxpQ0FrNUQwQ1IsSUFLcEMyRjtLQVNKLE9BUnFDeEg7O0lBZ0JpQixJQUQxQzhNLE1BR1YzSCxhQTVDc0RoRyxZQXlDNUMyTixTQXpDNEM5TixNQUFBRyxPQUFJaUwsT0FvQnBCb0I7SUFuQjFDO1VBRDhEcEI7TUFHNUQsNEJBamhETnpFLFFBa2lEOEM5RDtNQWhCakMsT0ExNUNib0UsU0EwNUNhLDJCQUppRGpIOztLQVFsRCxJQVJzRHFMLE9BQUFELFNBTy9DdEssSUFQK0NzSyxTQVkxRGxKLFNBdHdFQXJCLFdBaXdFV0M7WUFLWG9COztRQUNBLDRCQTNoRFJ5RSxRQWtpRDhDOUQsS0FOcEIsV0FGbEJYOztZQVowRGtKLE9BQUFDOztRQVVOLElBRDFDaEssSUFHVmEsV0Fac0RoQyxZQVM1Q21CLEdBVDRDckIsTUFBQUEsTUFBQUUsT0FBSWtMLE9BQUFDOzs7R0FxRC9EO1lBNWNIMkMsY0FrZ0IwRG5MO0lBaER4RCxTQWdEd0RBLElBL0N0RDs7O1NBK0MwQ29MLGlCQUFZMUIsT0FBQTFKO0tBQ3REO1dBRHNEMEo7TUFpQjlDO09BakI4Q0MsT0FBQUQ7T0FlcEQyQixlQWZvRDNCO09BcUJsRHBHLFdBMTNFQXRGLFdBbzNFRnFOO2FBTUUvSDs7U0FDa0IsV0FEbEJBOztTQUlvQztVQXpCRWdJLG9CQWV4Q0QsY0Fmd0NEO1VBQUFBLGNBQUFFO1VBQVk1QixPQUFBQzs7Ozs7S0FHNUM7TUFHNkIxTCxJQXY5QzNDaUgsZ0JBaTlDMERsRjtNQUtoRDJGO2lCQUFTckM7U0FDWDtVQWxERGlJLGFBenpFQ3ZOLFdBMjJFbUNDO1VBakRwQ3VOO1VBQ0FDO1VBQ0FsRCxPQXlDbUR2STtTQXRDdEQ7YUFIR3VJO1dBVUs7WUFWTEMsT0FBQUQ7WUFRRDdDLGFBUkM2QztZQWNDbEosU0ExMEVBckIsV0FvMEVGMEg7a0JBTUVyRzs7Y0E1NkRSc0QsZ0JBMjVETzRJLFlBaUJDbE07O2NBSTRCO2VBbkI3QnFNLGdCQVNEaEcsWUFUQytGO2VBQUFBLFVBQUFDO2VBQ0FuRCxPQUFBQzs7O2NBWW1CO2VBRFJoSyxJQUdWYTtlQWhCRHNNLGtCQWFXbk4sR0FiWGdOO2VBQUFBLFlBQUFHO2VBRUFwRCxPQUFBQzs7Ozs7V0FNaUMsV0FBQSwyQkFQakNpRDtXQTc1RFA5STs7O2FBMjVETzRJO3FCQVNhLDJCQVJiQzs7VUFvREM7O1FBQVE7S0FsL0RaaEwsaUNBeStEc0RSLElBS2hEMkY7S0FNSixPQUxxQzFIOztJQWFEO0tBRHhCZ04sTUFHVjNIO0tBekNvQ3lILGdCQXNDMUJFO0tBdEMwQkosVUFBQUU7S0FBUVUsVUFvQk5MO0tBcEJjN0MsT0FvQkZvQjtJQW5CdEQ7VUFEd0RwQjtNQUsvQyxPQWwvQ2JuRSxhQWsvQ2MsMkJBTDhCeUcsVUFBUVk7S0FTeEM7TUFUZ0RqRCxPQUFBRDtNQU90RDdDLGFBUHNENkM7TUFhcERsSixTQTkxRUFyQixXQXcxRUYwSDtZQU1Fckc7O1FBQ2tCLFdBRGxCQTs7UUFJMEM7U0FqQkVxTSxnQkFPOUNoRyxZQVA4QytGO1NBQUFBLFVBQUFDO1NBQVFuRCxPQUFBQzs7O1FBV2xCO1NBRHhCaEssSUFHVmE7U0Fib0N5TCxnQkFVMUJ0TSxHQVYwQnFNO1NBQUFBLFVBQUFDO1NBQWdCdkMsT0FBQUM7OztHQWlEekQ7WUFjSG5LLE1BbURlSjtJQUNQLFlBcDhFQUQsV0FtOEVPQzs7O1dBR0ZGLGdCQUFPLFdBQVBBOztPQUNJO21CQUZIUyxjQUFLLFdBQUxBOztHQUVRO1lBckR0Qm9OLGVBdURtQkMsZ0JBQWU1TjtJQUNoQyxPQXRtREZtRyxTQXNtRFMsbUJBMURUL0YsTUF5RGtDSixJQUFmNE47R0FDZ0I7WUF6RG5DQyxZQTREZTdOO0lBQWIsT0E3OEVNRCxXQTY4RU9DOztPQUdHOztPQUNEO2VBRkU7O0dBRUU7WUF6QnJCOE4sS0E0QmU5TjtJQUNQLFlBcjlFQUQsV0FvOUVPQzs7O1dBRUZTLGNBQUssTUFBQSw0QkFBTEE7O09BRUk7bUJBREhGLGNBQUssV0FBTEE7O0dBQ087WUFuRXJCd04sTUF1RVVsUCxHQUFFZ0I7SUFDVixJQUFJLFdBQUEsV0FESWhCLEdBQUVnQixJQUNOO1VBQVN3QjtTQUFBdkIsMEJBQUF1QjtLQUFTLEdBcjJFcEJiLElBcTJFV1YsTUFBcUMsT0F4bkRwRHVHLEtBd25EZXZHO3VDQUFBQTs7R0FBNkM7WUF0RTVEa08sS0F3RVNuUDtJQUNQLElBQUksV0E1bkROc0gsU0E0bkRhLFdBREp0SCxRQUNIO1VBQ0N3QztTQUFBdkIsMEJBQUF1QjtLQUFTLEdBejJFWmIsSUF5MkVHVixNQUFxQyxPQTVuRDVDdUcsS0E0bkRPdkc7dUNBQUFBOztHQUE2QztZQXZFcERtTyxNQXlFVXBQLEdBQUVxUDtJQUNWLElBQUksV0Fob0ROL0gsU0Fnb0RhLFdBREh0SCxHQUFFcVAsTUFDTjtVQUNDN007U0FBQXZCLDBCQUFBdUI7S0FBUyxHQTcyRVpiLElBNjJFR1YsTUFBcUMsT0Fob0Q1Q3VHLEtBZ29ET3ZHO3VDQUFBQTs7R0FBNkM7WUF4RXBEcU8sTUEwRVV0UCxHQUFFcVAsSUFBR0U7SUFDYixJQUFJLFdBcG9ETmpJLFNBb29EYSxXQURIdEgsR0FBRXFQLElBQUdFLE1BQ1Q7VUFDQy9NO1NBQUF2QiwwQkFBQXVCO0tBQVMsR0FqM0VaYixJQWkzRUdWLE1BQXFDLE9BcG9ENUN1RyxLQW9vRE92Rzt1Q0FBQUE7O0dBQTZDO1lBekVwRHVPLE1BMkVVeFAsR0FBRXFQLElBQUdFLElBQUdFO0lBQ2hCLElBQUksV0F4b0RObkksU0F3b0RhLFdBREh0SCxHQUFFcVAsSUFBR0UsSUFBR0UsTUFDWjtVQUNDak47U0FBQXZCLDBCQUFBdUI7S0FBUyxHQXIzRVpiLElBcTNFR1YsTUFBcUMsT0F4b0Q1Q3VHLEtBd29ET3ZHO3VDQUFBQTs7R0FBNkM7WUExRXBEeU8sTUE0RVUxUCxHQUFFcVAsSUFBR0UsSUFBR0UsSUFBR0U7SUFDbkIsSUFBSSxXQTVvRE5ySSxTQTRvRGEsV0FESHRILEdBQUVxUCxJQUFHRSxJQUFHRSxJQUFHRSxNQUNmO1VBQ0NuTjtTQUFBdkIsMEJBQUF1QjtLQUFTLEdBejNFWmIsSUF5M0VHVixNQUFxQyxPQTVvRDVDdUcsS0E0b0RPdkc7dUNBQUFBOztHQUE2QztZQTNFcEQyTyxNQTZFVTVQLEdBQUVxUCxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtJQUN0QixJQUFJLFVBaHBETnZJLFNBZ3BEYSxXQURIdEgsR0FBRXFQLElBQUdFLElBQUdFLElBQUdFLElBQUdFLE1BQ2xCO1VBQ0NyTjtTQUFBdkIsMEJBQUF1QjtLQUFTLEdBNzNFWmIsSUE2M0VHVixNQUFxQyxPQWhwRDVDdUcsS0FncERPdkc7dUNBQUFBOztHQUE2QztZQTVFcEQ2TyxNQThFVTlQLEdBQUVxUCxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtJQUN6QixJQUFJLFVBcHBETnpJLFNBb3BEYSxXQURIdEgsR0FBRXFQLElBQUdFLElBQUdFLElBQUdFLElBQUdFLElBQUdFLE1BQ3JCOztVQUNDdk47U0FBQXZCLDBCQUFBdUI7S0FBUyxHQWo0RVpiLElBaTRFR1YsTUFBcUMsT0FwcEQ1Q3VHLEtBb3BET3ZHO3VDQUFBQTs7R0FBNkM7WUE3RXBEK08sTUErRVVoUSxHQUFFcVAsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0UsSUFBR0U7SUFDNUI7S0FBSSxVQXhwRE4zSSxTQXdwRGEsV0FESHRILEdBQUVxUCxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRSxJQUFHRTtLQUN4Qjs7VUFDQ3pOO1NBQUF2QiwwQkFBQXVCO0tBQVMsR0FyNEVaYixJQXE0RUdWLE1BQXFDLE9BeHBENUN1RyxLQXdwRE92Rzt1Q0FBQUE7O0dBQTZDO0dBSW5DO0lBQWJpUCwrQjtJQUVBQyxTQUFTO0lBQ007WUFuRm5CQztJQXNGVSxJQUFKalAsSUEzbUROcUgsV0F1bURJMkg7SUFLRjtJQUNBLFdBUkVEO0lBUUYsT0FGSS9PO0dBR0g7WUF4RkhrUDtJQTJGRSxHQUFHLDRCQVZERjtJQWFVLElBQU5HLE1BQU07SUFDViw2QkFkQUgsUUFhSUc7O2lCQUdxQi9KLEdBQUssT0ExeURsQ0csT0EweUQ2QkgsTUFBZ0I7SUFBekMsT0FBQSxrQ0FISStKO0dBSUg7WUFoR0xDLHdCQWtHNEJ2USxHQXJCeEJrUSxnQkFxQndCbFEsWUFBbUI7WUFqRy9Dd1E7SUFvR0UsNEJBdEJFTDs7O0dBdUJlO1lBdkduQk0sb0JBeUdzQixjQUFhO1lBUzdCQyxJQUFJQyxHQUFHM1EsR0FBSSxPQXFCRDhKLE9BckJIOUosR0FBSDJRLEdBQWM7WUFDbEJDLEtBQUtELEdBQUczUSxHQUFJLE9Bb0JGMEosWUFwQkxpSCxHQUFHM1EsR0FBWTtHQUl4QjtJQUFBO0lBUEYsaUJBL3JEQXNILFVBaXNETW9KLEtBQ0FFLE1BN3NCTmpGO0lBd3NCRjtZQXlCa0JrRixTQVJON1EsR0FBRW1CLEdBQUksT0FRQXVJLFlBUkp2SSxHQUFGbkIsR0FBYztZQVFSOFEsU0FQTjNQLEdBQUVuQixHQUFJLE9BT0E4SixPQVBKOUosR0FBRm1CLEdBQWE7WUFPUDRQLFNBTE4zUCxLQUFFRCxHQUFLLE9BM3RCakJrSyxTQTJ0QlVqSyxTQUFFRCxRQUFpQjtZQUtiNlAsU0FKTjVQLEtBQUVELEdBQUssT0F6dEJqQndNLFdBeXRCVXZNLFNBQUVELFFBQW1COztZQVczQjhQLE1BQU9qUSxHQUFFaEIsR0FBSSxPQVBEOEosT0FPSDlKLEdBQUZnQixHQUFhO0dBSjFCO0lBQUEsYUFIa0IwSSxhQWp1QmhCaUMsTUF3dUJJc0YsT0F4dUJKdEY7OztPQWg4QkFyRDtPQXBMQXhCO09BQ0FDO09BOEhBTztPQUNBRTtPQXF0RGdCa0M7T0E3Z0RoQk07T0FDQU87T0FDQUo7T0FzeUJBZTtPQUNBQztPQTU1Q0F2SDtPQSs1Q0ErSDtPQUNBTjtPQUNBYztPQUdBeUI7T0FEQUQ7T0FJQVM7T0FEQUY7T0FHQUc7O09BejhCQTlGO09BOUtBdkI7T0FzVUF5RDtPQW5KQTlCO09BQ0FNO09BczZCRStCO09Bb3ZCY2xCO09BcmdEaEJZO09BQ0FFO09BQ0FDO09BQ0FDOztRQWtnRGdCcEI7UUFBQW9IO1FBQUFDO1FBQUFDO1FBQUFIO1FBQUEvRzs7OztPQWx0RGhCckM7T0FHQUM7T0FJQUU7T0FOQUM7T0FDQUM7T0FFQUg7T0FDQUk7T0FDQUM7T0FHQUM7T0FDQUU7T0FaQVo7T0FsSUFWO09BNHFEQXRGO09BanhFQU87T0FDQXhEO09BQ0E4RDtPQXdtQkFzRTtPQUNBQztPQUZBRjtPQW9MQStCO09BQ0FFO09Bb2hEQTBIO09BQ0FDO09BQ0FJO09BQ0FGO09BQ0FDO09BOUJBckI7T0FHQUM7T0FHQUU7T0FHQUU7T0FHQUU7T0FHQUU7T0FHQUU7T0FHQUU7T0E4SWdCdEc7T0FBQW9IO09BQUFFO09BQUFEO09BQUFGO09BQUEvRztPQXpLaEJrRjtPQTFqQkE1RDtXQXh1REk1SixZQUNBQywyQkFPQWpELEtBQ0FtRDtPQWcwRUpzTjtPQW5DQUM7T0ExMUNBdEY7T0FFQU07T0FFQU07T0FFQUY7T0E1b0JBakY7T0E2OURBeUo7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHR3orRkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUE7SUFDQTtJQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFjSTJGO0lBQ0YsSUFBUWxXOzhCQUFBQSxVQUFBQTtJQUNSLE9BRFFBO0dBQ0o7WUFpRkZtVyxNQUFNQztJQUNSLFNBRFFBLFNBRWE7SUFFckIsV0FKUUEsTUFBQUEsTUFBQUEsTUFBQUEsTUFBQUE7R0FVUDtZQUVDQyxZQUFZQztJQUNkO0tBQUl0VyxPQWhHRmtXO0tBaUdrQixRQUFBO0tBQVJLO0tBQVJDO0lBQ0osV0FIY0YsUUFFRkMsT0FBUkMsUUFEQXhXLFVBQUFBO0dBRWdEO1lBRWxEeVcsS0FBS2hWLEdBQ1AsT0FORTRVLG9CQUtLNVUsY0FDOEQ7WUFFbkVpVixZQUFZalYsR0FDZCxPQVRFNFUsZ0JBUVk1VSxJQUNhO1lBRXpCK1UsT0FBT0osR0FBSSxPQUFKQSxLQUFZO1lBRW5CTyxVQUFVUCxHQUNaLFdBQUksb0JBRFFBLE1BQ29CO1lBRTlCUSxRQUFTdlQsR0FBRXdUO0lBQ2IsSUFBSTdXLE9BRFM2VyxTQUVUQyxXQWpIRlo7SUFnSEVsVyxVQURPcUQ7SUFDUHJELFVBQ0E4VztJQUZTRCxVQUVUQzs7R0FHWTtZQUVkQyxVQUFRMVQsR0FBRStTLEdBQ1osT0FSRVEsUUFPUXZULEdBQUUrUyxNQUNLO1lBRWZZO0lBRUY7S0FDMEMsUUFBQTtLQUF2QkM7S0FBYkM7S0FETUMsNkJBQ09GO0tBRGZYLGFBQ0VZO0tBTUY5RSxJQW5DRmlFLGdCQTRCRUM7S0FXQUMsUUFKQW5FO0tBSW9Cb0UsU0FKcEJwRTtLQUkwQ3lFLE9BSjFDekU7YUFNQWdGLEtBQUszVTtLQUNQLE9BQU8sb0JBSGUrVDtNQUdlLE1BQUE7S0ExQnJDSSxRQXlCT25VLEdBRnFDb1U7UUFYMUNQO01BQUFBO01BdUIyQztPQUR2Q2UsMkJBdEJJRjtPQXVCbUMsUUFBQTtPQUEzQkc7T0FBWkM7TUF2QkpqQixZQXVCSWlCO01BdkJJSiw0QkF1QlFHO01BSWhCLG1CQUxJRDs7c0JBVEM1VTttQkFrQlUsb0JBcEJmOFQ7SUFvQmtDO0lBRXRDLFdBMUJJbkUsR0FNQWdGLGVBb0JVM1UsR0FqQ1Y2VCxZQWlDVTdULFlBQXVDO0dBQUM7WUFFcERzRyxTQUFPeU87SUFDVCxJQUFzQixRQXRDcEJSLDBCQXNDVUksaUJBQVJLO0lBQ0osV0FEWUwsVUFESEk7SUFHVCxXQUZZSjtJQUVaLE9BRklLO0dBR0U7WUFFSmxFLFdBQVdpRTtJQUNiLElBQXNCLFFBNUNwQlIsMEJBNENVSSxpQkFBUmQ7SUFDSixjQU1PYixLQUFRLE9BQUEsV0FQSDJCLFNBT1k7O21CQUpKM1U7TUFDZCxXQUpNMlUsVUFHUTNVO01BRWQsV0FMTTJVO01BS047S0FDZTtLQUhOLE9BQUEsbUJBSkZJO0lBT1M7SUFMdEI7SUFBQSxPQURJbEI7R0FRRTtZQUVKUCxPQUFPSztJQUNELElBQUpzQixVQURLdEI7SUFFVCxTQUFJclc7S0FDSSxZQUFBLFdBRkoyWDtpQkFHVztTQUNJdEIsY0FBTGhCO0tBSlZzQyxTQUlldEI7S0FBZ0IsV0FBckJoQjtJQUE2QjtJQUUzQyxPQS9FRXNCLFlBMEVFM1c7R0FLVztZQUViNFgsV0FBV3ZCO0lBQ0wsSUFBSnNCLFVBRFN0QjtJQUViLFNBQUlyVzs7TUFDUSxZQUNPO1VBQ0lxVyxjQUFMaEI7TUFKZHNDLFNBSW1CdEI7TUFBZ0IsV0FBckJoQjtLQUE2QjtLQUY3QyxXQUFBLFdBRkVzQztLQUVRLE9BQUE7SUFFbUM7SUFFL0MsT0EzRkVqQixLQXNGRTFXO0dBS0k7WUFHTks7SUFDRixJQUFzQixRQTFFcEI0VywwQkEwRVVJLGlCQUFSZDtJQUNKLFdBRElBLFFBQVFjO0dBQ0U7WUFFWlEsUUFBUWpELE1BQUsxRztJQUNmLElBQW1CLFFBTGpCN04sV0FLVWdYLGlCQUFSSztJQUNKLFdBRlU5QyxlQUVBbFMsR0FBSyxPQUFLLFdBRFIyVSxVQUNGM1UsSUFBa0IsR0FGYndMO0lBR2YsV0FGWW1KO0lBRVosT0FGSUs7R0FHRTtZQUVKN0IsUUFBUUMsR0FDVixPQVBFK0IseUJBTVEvQixHQUNTO1lBRWpCZ0MsU0FBU0wsR0FDWCxPQVZFSSwwQkFTU0osR0FDUztZQUVsQk0sVUFBVTFCLEdBQ1osT0FiRXdCLDJCQVlVeEIsR0FDUztZQU9uQjJCLGNBQWNDLE1BQUtuQjtJQTNHbkJELFFBMkdjb0IsU0FBS25CO0lBQUxtQjtJQU9NO0tBRGxCQyxjQU5ZRDtLQU9NLFFBQUE7S0FBVkU7S0FBUkM7SUFQWUgsVUFPWkc7SUFQWUgsVUFPSkU7SUFHWixPQUFBLG1CQUpJRDtHQUkyQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBRXFERyxRQUlsRixPQUprRkEsb0JBSW5FOztpQkFKbUVBLFFBTXRFQztTQUNaLEdBRFlBLFVBQ0s7U0FQaUVELHNCQU10RUM7O2lCQU5zRUQsc0JBQUFBOzhCQUFBQTs7b0JBQUFBOzs7cUJBQUFBO21CQVpsRkwsY0FZa0ZLLGtCQUFBQTs7UUFZL0U7O2lCQVorRUEsUUFjeEUzVjtTQUNWLEdBZmtGMlYsa0JBdFB0RixPQUFBO2tCQXNQc0ZBLHFCQXJQdEYsT0FBQTtZQXFQc0ZBLHVCQUFBQTtVQUFBQSwwQkFjeEUzVjs7O3NCQVNEQztjQUNGLEdBREVBLGlCQVNBLE9BQUEsbUJBVEFBO2NBdkJ5RTBWO2NBMkJuRDtlQUFBLFFBQUE7ZUFBVkY7ZUFBUkM7Y0EzQnFFQyxzQkEyQnJFRDtjQTNCcUVDLHNCQTJCN0RGO2NBR1osT0FBQSxtQkFQQXhWO2FBU1k7a0NBVk4sT0F0Qm1FMFYsb0JBc0I3QztVQUNqQyxPQUFBOztTQTlJSnhCLFlBcUlVblUsSUFkd0UyVjtTQUFBQSxzQkFBQUE7WUFBQUE7VUFBQUE7VUEyQ2hEO1dBRDFCSCxjQTFDMEVHO1dBMkNoRCxRQUFBO1dBQWRFO1dBQVpmO1VBM0MwRWEsc0JBMkMxRWI7VUEzQzBFYSxzQkEyQzlERTtVQUloQixtQkFMSUw7O1NBT047UUFDQzs7aUJBbEQrRUc7U0FxRGxGLGVBckRrRkE7O1NBQUFBO1NBdURoRCxJQUE1QnBZLE9BdkQ0RW9ZLHFCQXVEM0R0QixXQTdSdkJaO1NBNlJNbFc7U0FBQUEsVUFBaUI4VztTQXZEMkRzQixzQkF1RDNEdEI7a0JBdkQyRHNCO1VBQUFBO1VBNkQ5RSxtQkE3RDhFQTs7WUFBQUE7VUFBQUE7Y0FtRTFFSCxjQW5FMEVHO1VBcUU5RSxtQkFGSUg7O1NBSU4sT0FBQSxvQkF2RWdGRztRQXdFL0U7O2lCQXhFK0VBLFFBMkVsRixPQTNFa0ZBLG9CQTJFbEU7O2lCQTNFa0VBLFFBOEVsRixhQTlFa0ZBLDRCQThFeEQ7O2lCQTlFd0RBLFFBaUZsRixPQWpGa0ZBLGlCQWlGNUU7O2lCQWpGNEVBLFFBb0Y5RTNWLEdBcEY4RTJWLHNCQW9GOUUzVixZQUFzQzs7SUFwRmhCOzs7Ozs7Ozs7O1lBdUYxQjhWLGVBQWVGO0lBQ2pCLEdBRGlCQSxVQUNBO0lBR087S0FBQSxRQUFBO0tBQVZIO0tBQVJDO0tBQzRCLFVBQUE7S0FBZks7S0FBYkM7S0FGSUMsbUJBQ0lSO0tBRFZGLFdBQ0VHLFdBSldFLFlBS1hJLGFBQWFEO0tBV2ZwRyxJQTlPRmlFLGdCQWlPRTJCO0lBY0o7WUFESTVGO1lBQ0E7dUNBZEE0RixNQUFNVSxjQWFOdEcsTUFBQUE7R0FDdUQ7WUFJekR1RyxLQUFLdkM7SUFDUCxZQURPQTs7O1dBRUFLO09BR0YsR0FBQSxvQkFIRUEscUNBQUFBO09BUUQ7O21CQUE0QmhVO1dBdE9oQ3NVLFVBc09nQ3RVLEdBVjNCMlQ7b0JBVTJCM1QsR0FHWCxvQkFiaEIyVDtXQWFnQjtVQUNGO1FBSmYsT0FBQSxXQVJDSztRQU9DbUMsU0FDRjtPQVJDbkMsVUFPQ21DO09BU0osT0FBQSxvQkFUSUE7O09BWUUsSUFESW5YLGNBQ1JnQixJQUFJLFdBREloQjtPQWhQWnNWLFVBaVBJdFUsR0FyQkMyVDtnQkFxQkQzVCxHQUdhLG9CQXhCWjJUO09Bd0JZOztXQUVaZ0IsaUJBQUFBLHdDQUFBQTs7V0FHUXlCO09BQUFBO2tDQUFBQTs7R0FFa0I7WUFPL0JDLFFBQVExQyxHQUFFcFc7SUFDWixXQURZQSxTQUFGb1c7O0lBQUFBLE9BQUVwVztnQkFBRm9XO3VCQVVOO1FBTmE0QjthQUFBQSxnQkFsS2ZELGNBa0tlQyxNQUpQNUI7SUFJTzRCLFVBQUFBOztHQU9kO1lBRUdlLFNBQVMzQyxHQUFFcFc7SUFDakIsR0FEaUJBLFNBQUZvVyxtQ0FBRXBXO3lCQUVNLE9BRmpCK1ksU0FBUzNDLEdBQUVwVyxNQUVxQjtJQUFwQyxXQXJEQTJZLEtBbURhdkM7SUFFRixPQUFBO0dBRVM7WUFFcEI0QyxLQUFLNUMsR0FBSSxPQU5MMkMsU0FNQzNDLEdBQUFBLE1BQXFCO1lBRXRCNkMsVUFBVWpaLE1BQUs4QixLQUFJZ04sR0FBRXNIO0lBQzNCLElBRGdCclIsU0FBQS9FLE1BQUtnQyxRQUFBRixLQUFJaU4sTUFBQUQ7SUFDekI7YUFEeUJDO01BRVosV0FBQSwyQkFGUS9NO01BRVIsT0FBQTs7UUFGRytDLFdBQVdxUjtNQUl6Qjs4QkFBcUIsT0FKakI2QyxVQUFVbFUsUUFBSy9DLE9BQUkrTSxLQUFFcUgsR0FJa0I7T0FBM0MsT0EvREF1QyxLQTJEeUJ2QztNQUlkLE9BQUE7O2lCQUpHclI7O01BVUQsV0FBQSwyQkFWTS9DO01BVU4sT0FBQTs7S0FGWDtNQURLUztNQVBnQndNLE1BQUFGO01BQUo5TSxZQU9aUSxHQVBZVDtNQUFMa1gsU0FBQW5VO01BQUFBLFNBQUFtVTtNQUFLbFgsUUFBQUM7TUFBSThNLE1BQUFFOztHQVVJO1lBRTNCa0ssTUFBTXJLLEdBQUVzSCxHQUFJLE9BWlI2QyxVQVlJN0MsU0FBRnRILEdBQUVzSCxHQUEyQjtZQUUvQmdELFFBQVFoRCxHQUFFcFc7SUFDaEIsR0FEZ0JBLFNBQUZvVztLQUVaLDJCQUFxQixPQUZqQmdELFFBQVFoRCxHQUFFcFcsTUFFcUIsR0FBbkMsT0EzRUEyWSxLQXlFWXZDO0tBRUQsT0FBQTs7YUFGR3BXLFNBbkNkOFksUUFtQ1kxQyxHQUFFcFc7OEJBQUFBO0dBTWI7WUFFREQsSUFBSXFXLEdBQUksT0FSSmdELFFBUUFoRCxHQUFBQSxNQUFvQjtZQUVwQmlELFlBQVlqRCxHQUFFcFc7SUFDcEIsR0FEb0JBLFNBQUZvVztLQUVoQjtNQUFBLGdCQUdPMVQsS0FBTyxPQUFXLDJCQUFsQkEsT0FBMkM7NkJBRHJDLE9BSlQyVyxZQUFZakQsR0FBRXBXLE1BSWE7NkJBRGxCLE9BdEZiMlksS0FtRmdCdkMsR0FHRztLQUVqQixPQUFBOztnQkFMZ0JwVztnQkFZaEI7UUFKSzREO0lBckRQa1YsUUE2Q2dCMUMsR0FBRXBXO0lBVUwsT0FBQSwyQkFGTjREO0dBSVU7WUFFakIwVixTQUFTbEQ7SUFBSSxPQS9VYksscUJBK1U2QixPQWR6QjRDLFlBY0tqRCxHQUFBQSxNQUF3QztHQUFDO1lBRTlDbUQsU0FBU3ZaLE1BQUs4QixLQUFJZ04sR0FBRXNIO0lBQzFCLElBRGVyUixTQUFBL0UsTUFBS2dDLFFBQUFGLEtBQUlpTixNQUFBRDtJQUN4QjthQUR3QkM7TUFFWCxXQUFBLDJCQUZPL007TUFFUCxPQUFBOztRQUZFK0MsV0FBV3FSO01BSXhCOzhCQUFxQixPQUpqQm1ELFNBQVN4VSxRQUFLL0MsT0FBSStNLEtBQUVxSCxHQUlrQjtPQUExQyxPQXZHQXVDLEtBbUd3QnZDO01BSWIsT0FBQTs7aUJBSmFBOztNQVdYLFdBQUEsMkJBWEtwVTtNQVdMLE9BQUE7O1NBSk5TO0tBcEVQcVcsUUE2RHdCMUMsR0FBWHJSO0tBU1E7TUFUQ2tLLE1BQUFGO01BQUo5TSxZQU9YUSxHQVBXVDtNQUFMa1gsU0FBQW5VO01BQUFBLFNBQUFtVTtNQUFLbFgsUUFBQUM7TUFBSThNLE1BQUFFOztHQVdLO1lBRTNCdUssS0FBSzFLLEdBQUVzSCxHQUFJLE9BYlBtRCxTQWFHbkQsU0FBRnRILEdBQUVzSCxHQUEwQjtZQUU3QnFELGNBQWN6WixNQUFLOEIsS0FBSUwsR0FBRTJVO0lBQy9CLElBRG9CclIsU0FBQS9FLE1BQUtnQyxRQUFBRjtJQUN6QjtRQURvQmlELFdBQVdxUjtNQUU3Qjs4QkFBcUIsT0FGakJxRCxjQUFjMVUsUUFBSy9DLE9BQUlQLEdBQUUyVSxHQUVrQjtPQUEvQyxPQXBIQXVDLEtBa0g2QnZDO01BRWxCLE9BQUE7O2lCQUZPclI7O01BYUwsV0FBQSwyQkFiVS9DO01BYVYsT0FBQTs7S0FQQSxJQUROUyxjQUNEaVgsT0FBTyxXQU5jalksR0FLcEJnQjtLQUVMLEtBRElpWDtNQUtTLFdBQUEsMkJBWFExWDtNQVdSLE9BQUE7O0tBdkZmOFcsUUE0RTZCMUMsR0FBWHJSO0tBU1U7TUFUTDlDLFlBS2hCUSxHQUxnQlQ7TUFBTGtYLFNBQUFuVTtNQUFBQSxTQUFBbVU7TUFBS2xYLFFBQUFDOztHQWFJO1lBRTNCMFgsVUFBVWxZLEdBQUUyVSxHQUFJLE9BZlpxRCxjQWVRckQsU0FBRjNVLEdBQUUyVSxHQUErQjtZQUV2Q3dELGdCQUFnQjVaLE1BQUs4QixLQUFJTCxHQUFFMlU7SUFDakMsR0FEc0JwVyxTQUFXb1c7S0FFL0I7NkJBQXFCLE9BRmpCd0QsZ0JBQWdCNVosTUFBSzhCLEtBQUlMLEdBQUUyVSxHQUVrQjtNQUFqRCxPQXJJQXVDLEtBbUkrQnZDO0tBRXBCLE9BQUE7O2dCQUZTcFc7O0tBTWhCO01BREd5Qzs7O1NBQ0s7VUFuR1pxVyxRQTZGK0IxQyxHQUFYcFc7VUFLUixPQUxSNFosZ0JBQWdCNVosYUFLYnlDLEdBTGtCWCxNQUFJTCxHQUFFMlU7O1NBV2QsV0FBQSwyQkFYUXRVO1NBV1IsT0FBQTtRQUFjO01BTDNCLE9BQUEsV0FOeUJMLEdBS3RCZ0I7S0FDSyxPQUFBOztJQVFDLFdBQUEsMkJBZFlYO0lBY1osT0FBQTtHQUFjO1lBRTNCK1gsWUFBWXBZLEdBQUUyVSxHQUFJLE9BaEJkd0QsZ0JBZ0JVeEQsU0FBRjNVLEdBQUUyVSxHQUFpQztZQUUzQzBELFNBQVMxRCxHQUFFcFc7SUFDakIsR0FEaUJBLFNBQUZvVztLQUViLDJCQUFxQixPQUZqQjBELFNBQVMxRCxHQUFFcFcsTUFFcUIsR0FBcEMsT0F2SkEyWSxLQXFKYXZDO0tBRUYsT0FBQTs7Z0JBRklwVztnQkFyZm5CLE9BQUE7UUEwZld5QztJQXBIUHFXLFFBK0dhMUMsR0FBRXBXO0lBTWIsT0FBQSxtQkFES3lDO0dBSVM7WUFFaEJtUixLQUFLd0MsR0FBSSxPQVhMMEQsU0FXQzFELEdBQUFBLE1BQXFCO1lBRXRCMkQsYUFBYS9aLE1BQUt5QyxHQUFFMlQ7SUFDMUIsSUFEbUJyUixTQUFBL0UsTUFBSzhULE1BQUFyUjtJQUN4QjtRQURtQnNDLFdBQU9xUjtNQUVYLElBQVR3QyxTQXBLSkQsS0FrS3dCdkMsSUFHbEIsUUFBQSxvQkFERndDO29DQU9GLE9BQUEsbUJBVG9COUU7NkJBTVhwUixnQkFDVCxPQUFBLG1CQURTQTs7O29CQU5NcUM7b0JBZ0JmLE9BQUEsbUJBaEJvQitPO1VBQUFrRztNQTVIdEJsQixRQTRId0IxQyxHQUFQclI7VUFBQW1VLFNBQUFuVSxXQUFBQSxTQUFBbVUsUUFBS3BGLE1BQUFrRzs7R0FnQlI7WUFFZEMsU0FBUzdEO0lBQ1gsSUFBSXBXLE9BRE9vVztPQUNQcFcsU0FET29XO21CQUNQcFc7bUJBcmhCTixPQUFBO1NBK2hCVzhUO0tBekpQZ0YsUUE4SVMxQyxHQUNQcFc7S0FXQSxPQTlCRStaLGFBbUJGL1osU0FVSzhULEtBWEVzQzs7SUFHSSxJQUFUd0MsU0F2QkpoRixLQW9CU3dDLElBSUgsUUFBQSxvQkFERndDOztTQUVTblc7S0FDWCxPQXhCRXNYLGFBbUJGL1osTUFJV3lDLEdBTEoyVDs7SUFRUCxPQUxFd0M7R0FZWTtZQUVac0IsWUFBWWxhLE1BQUs4QixLQUFJc1U7SUFDM0IsSUFEa0JyUixTQUFBL0UsTUFBS2dDLFFBQUFGO0lBQ3ZCO1FBRGtCaUQsV0FBU3FSO01BRXpCOzhCQUFxQixPQUZqQjhELFlBQVluVixRQUFLL0MsT0FBSW9VLEdBRWtCO09BQTNDLE9Bdk1BdUMsS0FxTXlCdkM7TUFFZCxPQUFBOztpQkFGS3JSOztNQVNILFdBQUEsMkJBVFEvQztNQVNSLE9BQUE7O1NBSk5TO0tBcEtQcVcsUUErSnlCMUMsR0FBVHJSO0tBT1E7TUFQSDlDLFlBS2RRLEdBTGNUO01BQUxrWCxTQUFBblU7TUFBQUEsU0FBQW1VO01BQUtsWCxRQUFBQzs7R0FTTTtZQUUzQmtZLFFBQVEvRCxHQUFJLE9BWFI4RCxZQVdJOUQsU0FBQUEsR0FBMkI7WUFFL0JnRSxjQUFjcGEsTUFBS3FhLEtBQUlqRTtJQUM3QixJQURvQnJSLFNBQUEvRTtJQUNwQjtRQURvQitFLFdBQVNxUjtNQUUzQjs4QkFBcUIsT0FGakJnRSxjQUFjclYsUUFBS3NWLEtBQUlqRSxHQUVrQjtPQUE3QyxPQXBOQXVDLEtBa04yQnZDO01BRWhCLE9BQUE7O2lCQUZPclI7O01BVUwsV0FBQSw2QkFWVXNWO01BVVYsT0FBQTs7U0FMTjVYO0tBakxQcVcsUUE0SzJCMUMsR0FBVHJSO0tBT2hCLDhCQVBxQnNWLEtBS2hCNVg7U0FMV3lXLFNBQUFuVSxXQUFBQSxTQUFBbVU7O0dBVWdCO1lBRWxDb0IsVUFBVWxFO0lBQXlCLFdBQUE7SUFBckIsT0FaVmdFLGNBWU1oRSxZQUFBQTtHQUE4QztZQUV4RG1FLEtBQUtuRTtJQUNQLElBQUlwVyxPQURHb1c7T0FDSHBXLFNBREdvVztLQUdMOzt3QkFDQSxTQUhFcFcsU0EzTEY4WSxRQTBMSzFDLEdBQ0hwVyxPQUd3QixlQUNYO01BRmYsT0FuT0EyWSxLQWdPS3ZDO0tBR00sT0FBQTs7YUFGVHBXLFNBM0xGOFksUUEwTEsxQyxHQUNIcFc7SUFNd0I7R0FFekI7WUFFR3dhLFVBQVV4YSxNQUFLOE8sR0FBRXNIO0lBQ3ZCLElBRGdCclIsU0FBQS9FLE1BQUsrTyxNQUFBRDtJQUNyQjthQURxQkMsS0FFbkI7UUFGY2hLLFdBQU9xUjtNQUlyQjs4QkFBcUIsT0FKakJvRSxVQUFVelYsUUFBS2dLLEtBQUVxSCxHQUlrQjtPQUF2QyxPQS9PQXVDLEtBMk9xQnZDO01BSVYsT0FBQTs7VUFKR3JSLFdBV1o7S0FoTkYrVCxRQXFNcUIxQyxHQUFQclI7U0FBS2tLLE1BQUFGLGFBQUxtSyxTQUFBblUsV0FBQUEsU0FBQW1VLFFBQUtuSyxNQUFBRTs7R0FXRjtZQUVqQndMLE1BQU0zTCxHQUFFc0gsR0FBSSxPQWJSb0UsVUFhSXBFLE1BQUZ0SCxHQUFFc0gsR0FBd0I7WUFFNUJzRSxlQUFlMWEsTUFBS3lCLEdBQUUyVTtJQUM1QixJQURxQnJSLFNBQUEvRTtJQUNyQjtRQURxQitFLFdBQU9xUjtNQUUxQjs4QkFBcUIsT0FGakJzRSxlQUFlM1YsUUFBS3RELEdBQUUyVSxHQUVrQjtPQUE1QyxPQTVQQXVDLEtBMFAwQnZDO01BRWYsT0FBQTs7aUJBRlFyUjtpQkFhakI7S0FQVyxJQUROdEMsY0FDRGlYLE9BQU8sV0FOV2pZLEdBS2pCZ0I7S0FFTCxLQURJaVgsTUFLRjtLQS9OSlosUUFvTjBCMUMsR0FBUHJSO1NBQUFtVSxTQUFBblUsV0FBQUEsU0FBQW1VOztHQWFGO1lBRWpCeUIsV0FBV2xaLEdBQUUyVSxHQUFJLE9BZmJzRSxlQWVTdEUsTUFBRjNVLEdBQUUyVSxHQUE2QjtZQUV0Q3dFLGlCQUFpQjVhLE1BQUt5QixHQUFFMlU7SUFDOUIsR0FEdUJwVyxTQUFPb1c7S0FFNUI7NkJBQXFCLE9BRmpCd0UsaUJBQWlCNWEsTUFBS3lCLEdBQUUyVSxHQUVrQjtNQUE5QyxPQTdRQXVDLEtBMlE0QnZDO0tBRWpCLE9BQUE7O2dCQUZVcFc7Z0JBY25CO1FBVEt5Qzs7S0FDSztnQkEzT1pxVyxRQXFPNEIxQyxHQUFQcFcsT0FBakI0YSxpQkFBaUI1YSxTQUFLeUIsR0FBRTJVOztJQVdQO0lBTGpCLFdBQUEsV0FOc0IzVSxHQUtuQmdCO0lBQ0ssT0FBQTtHQVFLO1lBRWpCb1ksYUFBYXBaLEdBQUUyVSxHQUFJLE9BaEJmd0UsaUJBZ0JXeEUsTUFBRjNVLEdBQUUyVSxHQUErQjtZQW9COUMwRSxTQUFTMUU7SUFBSSxJQWxCSThDLFNBa0JSOUMsTUFsQlFwVyxPQUFBa1o7SUFDbkI7UUFEbUJsWixTQWtCUm9XO01BaEJJLElBQVR3QyxTQS9SSkQsS0ErU1N2QyxJQWZILFFBQUEsb0JBREZ3QztvQ0FPRjs2QkFIU2xXLGdCQUNULE9BQUEsbUJBRFNBOzs7V0FOTTFDLFNBZ0JmO01BdlFGOFksUUF5UVMxQyxHQWxCUXBXO1VBQUErRSxTQUFBL0UsU0FBQUEsT0FBQStFOztHQWtCaUI7WUFvQmxDZ1csY0FBYzNFO0lBQUksSUFsQkk4QyxTQWtCUjlDLE1BbEJRcFcsT0FBQWtaLFFBQUtwWDtJQUM3QjtRQUR3QjlCLFNBa0JSb1c7TUFoQkQsSUFBVHdDLFNBblRKRCxLQW1VY3ZDLElBZlIsUUFBQSxvQkFERndDO29DQU9GLE9BQUEsMkJBVHlCOVc7O1dBTWhCWTtPQUNULE1BQUEsNEJBRFNBOzs7O29CQU5XMUM7b0JBZ0JwQixPQUFBLDJCQWhCeUI4QjtVQVlwQlc7TUF2UlBxVyxRQTZSYzFDLEdBbEJRcFc7TUFjUSxJQWRIZ0MsWUFZcEJTLEdBWm9CWCxNQUFMaUQsU0FBQS9FLFNBQUFBLE9BQUErRSxRQUFLakQsTUFBQUU7O0dBa0JvQjtZQXNCL0NnWixvQkFBb0IvTCxLQUFFbUg7SUFBSSxJQXBCRThDLFNBb0JOOUMsTUFwQk1wVyxPQUFBa1osUUFBS3BYLFNBQUlnTixJQW9CakJHO0lBbkJ0QjthQUR1Q0gsR0FFckMsT0FBQSwyQkFGaUNoTjtRQUFMOUIsU0FvQk5vVztNQWhCVCxJQUFUd0MsU0F6VUpELEtBeVZzQnZDLElBZmhCLFFBQUEsb0JBREZ3QztvQ0FPRixPQUFBLDJCQVgrQjlXOztXQVF0Qlk7T0FDVCxNQUFBLDRCQURTQTs7OztvQkFZVzBUO29CQUZwQixPQUFBLDJCQWxCK0J0VTtVQWMxQlc7TUE3U1BxVyxRQW1Uc0IxQyxHQXBCTXBXO01BZ0JRO09BaEJDK08sTUFBQUQ7T0FBSjlNLFlBYzFCUyxHQWQwQlg7T0FBTGlELFNBQUEvRTtPQUFBQSxPQUFBK0U7T0FBS2pELE1BQUFFO09BQUk4TSxJQUFBQzs7O0dBb0IwQjtZQUUzRHhPLFNBQVM2VjtJQUNmLEdBRGVBLFNBQUFBLHlDQUFBQTt5QkFFUSxPQUZqQjdWLFNBQVM2VixHQUVrQjtJQUEvQixXQTdWQXVDLEtBMlZhdkM7SUFFRixPQUFBO0dBRW9CO1lBRS9CakUsSUFBSTFRLEdBQUUyVTtJQUNSLE9BaGxCRUs7OztlQWdsQndCLFlBS3hCO2VBSFEsSUFESGhVLGNBQ0RxUixNQUFJLFdBSEpyUyxHQUVDZ0I7ZUFFTCxXQURJcVI7Y0FHQTtjQUxVLFdBalJkL1QsSUFnUk1xVztjQUNrQixPQUFBO2FBS3BCO0dBQUM7WUFFTHJDLE1BQU10UyxHQUFFMlU7SUFDVixPQXhsQkVLOzs7ZUF3bEJ3QixZQUl4QjttQkFIS2hVO2VBQ0wsY0FBYUEsR0FBSyxXQUFMQSxHQUFXO2VBQXhCLFdBQUEsV0FITWhCLEdBRURnQjtlQUNHLE9BQUE7Y0FFTztjQUpELFdBelJkMUMsSUF3UlFxVztjQUNnQixPQUFBO2FBSVQ7R0FBQztZQUVoQmpDLE9BQU8xUyxHQUFFMlU7YUFDSHhDO0tBQ0UsSUFBSnhCLElBalNKclMsSUErUlNxVzs7TUFHSCxZQVFKO01BTlcsSUFETjNULGNBQ0RpWCxPQUFPLFdBTE5qWSxHQUlBZ0I7TUFFTCxPQURJaVgsT0FIRnRILElBREV3QjtLQVVXO0tBUlgsT0FBQSx1QkFERnhCO0lBU2E7SUFFbkIsT0EzbUJFcUUsS0ErbEJNN0M7R0FZQztZQUVQUSxTQUFTM1MsR0FBRTJVO2FBQ0x4QztLQUNFLElBQUp4QixJQWhUSnJTLElBOFNXcVc7O01BR0wsWUFBTixPQURJaEU7VUFFRzNQOzJCQUNLLGVBSFIyUCxJQURFd0IsUUFRTztNQUpULFdBQUEsV0FMS25TLEdBSUZnQjtNQUNLLE9BQUE7S0FPVDtLQVRHLE9BQUEsdUJBREYyUDtJQVVEO0lBRUwsT0EzbkJFcUUsS0E4bUJNN0M7R0FhQztZQUVQSSxXQUFXdlMsR0FBRTJVO2FBQ1B4Qzs7TUFDSSxZQVNSO01BUFEsSUFESG5SLGNBQ0RxUixNQUFJLFdBSkNyUyxHQUdKZ0I7TUFFTCxPQURJcVIsTUFHRCxtQkFIQ0EsT0FIQUY7S0FVVztLQVRqQixXQWhVQTdULElBOFRhcVc7S0FFSCxPQUFBO0lBU087SUFFbkIsT0Exb0JFSyxLQThuQk03QztHQVlDO1lBRVBLLGFBQWF4UyxHQUFFMlU7YUFDVHhDOztNQUNJLFlBU1I7TUFQUSxJQURIblIsY0FDRDJQLElBQUksV0FKRzNRLEdBR05nQjsyQkFFRSxlQURIMlAsSUFIQXdCLFFBUU07TUFKSCxPQUFBLHVCQURIeEI7S0FPVztLQVRqQixXQS9VQXJTLElBNlVlcVc7S0FFTCxPQUFBO0lBU087SUFFbkIsT0F6cEJFSyxLQTZvQk03QztHQVlDO1lBRVBxSCxTQUFTeFosR0FBRTJVO0lBQ0UsSUFBWDhFO2FBQ0l0SDtLQUNOLFlBRkVzSDs7VUFXS3JGLGNBQUxwVDtNQVhBeVksY0FXS3JGO01BRU0sT0FBQSx1QkFGWHBUOzs7TUFQVyxZQU1SO01BSlEsSUFESEEsY0FDRG9ULElBQUksV0FQSnBVLEdBTUNnQjtNQUxSeVksY0FNT3JGO01BRUosT0FQQ2pDO0tBU2M7S0FOakIsV0FqV0g3VCxJQTRWV3FXO0tBS0UsT0FBQTtJQVNRO0lBRXZCLE9BM3FCRUssS0E2cEJNN0M7R0FjQztZQUVQdUgsV0FBVzFaLEdBQUUyVTtJQUNBLElBQVg4RTthQUNJdEg7S0FDTixZQUZFc0g7O1VBV0tyRixjQUFMcFQ7TUFYQXlZLGNBV0tyRjtNQUVNLE9BQUEsdUJBRlhwVDs7O01BUFcsWUFNUjtVQUxLQTtvQkFDT29ULEdBTmZxRixjQU1lckYsR0FFWixPQVBDakMsUUFPTTtNQUZQLFdBQUEsV0FQTW5TLEdBTURnQjtNQUNHLE9BQUE7S0FJTztLQU5qQixXQW5YSDFDLElBOFdhcVc7S0FLQSxPQUFBO0lBU1E7SUFFdkIsT0E3ckJFSyxLQStxQk03QztHQWNDO1lBRVB3SCxRQUFRaEYsR0FDVixPQXJDRTZFLGtCQXFDWXBGLEdBQUssT0FBTEEsRUFBTSxHQURWTyxHQUNhO1lBRWpCaUYsU0FBU3JiLE1BQUt5QixHQUFFMlUsR0FBRXRVO0lBQ3hCLElBRGVpRCxTQUFBL0UsTUFBU2dDLFFBQUFGO0lBQ3hCO1FBRGVpRCxXQUFPcVI7TUFFcEI7OEJBQXFCLE9BRmpCaUYsU0FBU3RXLFFBQUt0RCxHQUFFMlUsR0FBRXBVLE9BRW9CO09BQTFDLE9BdGRBMlcsS0FvZG9CdkM7TUFFVCxPQUFBOztpQkFGRXJSO2lCQVVYLE9BQUEsbUJBVm9CL0M7U0FLZlM7S0FuYlBxVyxRQThhb0IxQyxHQUFQclI7S0FPRDtNQVBVOUMsUUFPVixXQVBNUixHQUtYZ0IsR0FMZVQ7TUFBVGtYLFNBQUFuVTtNQUFBQSxTQUFBbVU7TUFBU2xYLFFBQUFDOztHQVVOO1lBRWhCcVosS0FBSzdaLEdBQUUyVSxHQUFFdFUsS0FBTSxPQVpYdVosU0FZR2pGLE1BQUYzVSxHQUFFMlUsR0FBRXRVLEtBQTZCO1lBRWxDeVosV0FBV3ZiLE1BQUt5QixHQUFFMlUsR0FBRXRVO0lBQzFCLEdBRGlCOUIsU0FBT29XO0tBRXRCOzRCQUFxQixPQUZqQm1GLFdBQVd2YixNQUFLeUIsR0FBRTJVLEdBQUV0VSxLQUVvQjtNQUE1QyxPQXBlQTZXLEtBa2VzQnZDO0tBRVgsT0FBQTs7Z0JBRklwVztnQkFVYixPQUFBLG1CQVZzQjhCO1FBS2pCVztJQWpjUHFXLFFBNGJzQjFDLEdBQVBwVztrQkFPRzhCLEtBQ2hCLE9BUkV5WixXQUFXdmIsU0FBS3lCLEdBQUUyVSxHQU9KdFUsS0FDWTtJQUQ1QixXQUFBLFdBUGtCTCxHQUtiZ0IsR0FMaUJYO0lBT1YsT0FBQTtHQUdFO1lBRWhCMFosT0FBTy9aLEdBQUUyVSxHQUFFdFUsS0FBTSxPQVpieVosV0FZS25GLE1BQUYzVSxHQUFFMlUsR0FBRXRVLEtBQStCO1lBRXRDMlosU0FBU3piLE1BQUt5QixHQUFFMlU7SUFDdEIsSUFEZXJSLFNBQUEvRTtJQUNmO1FBRGUrRSxXQUFPcVI7TUFFcEI7NkJBQXFCLE9BRmpCcUYsU0FBUzFXLFFBQUt0RCxHQUFFMlUsR0FFa0I7T0FBdEMsTUFsZkF1QyxLQWdmb0J2QztNQUVULE9BQUE7O2lCQUZFclI7aUJBVVg7U0FMS3RDO0tBL2NQcVcsUUEwY29CMUMsR0FBUHJSO0tBT0YsV0FQT3RELEdBS1hnQjtTQUxNeVcsU0FBQW5VLFdBQUFBLFNBQUFtVTs7R0FVSTtZQUVqQnZFLEtBQUtsVCxHQUFFMlUsR0FBSSxPQVpQcUYsU0FZR3JGLE1BQUYzVSxHQUFFMlUsR0FBdUI7WUFFMUJzRixXQUFXMWIsTUFBS3lCLEdBQUUyVTtJQUN4QixHQURpQnBXLFNBQU9vVztLQUV0QiwwQkFBcUIsT0FGakJzRixXQUFXMWIsTUFBS3lCLEdBQUUyVSxHQUVrQixHQUF4QyxNQWhnQkF1QyxLQThmc0J2QztLQUVYLE9BQUE7O2dCQUZJcFc7Z0JBVWI7UUFMS3lDO0lBN2RQcVcsUUF3ZHNCMUMsR0FBUHBXO3dCQVFiLE9BUkUwYixXQUFXMWIsU0FBS3lCLEdBQUUyVSxHQVFJO0lBRHhCLFVBQUEsV0FQa0IzVSxHQUtiZ0I7SUFFRyxPQUFBO0dBR087WUFFakJtUyxPQUFPblQsR0FBRTJVLEdBQUksT0FaVHNGLFdBWUt0RixNQUFGM1UsR0FBRTJVLEdBQXlCO1lBRTlCdUYsV0FBVzNiLE1BQUt5QixHQUFFMlU7SUFDeEIsR0FEaUJwVyxTQUFPb1c7S0FFdEIsMEJBQXFCLE9BRmpCdUYsV0FBVzNiLE1BQUt5QixHQUFFMlUsR0FFa0IsR0FBeEMsTUE5Z0JBdUMsS0E0Z0JzQnZDO0tBRVgsT0FBQTs7Z0JBRklwVztnQkFXYjtRQU5LeUM7SUEzZVBxVyxRQXNlc0IxQyxHQUFQcFc7SUFPSCxJQUFONGIsTUFBTSxXQVBRbmEsR0FLYmdCLElBR0RrRCxPQVJGZ1csV0FBVzNiLFNBQUt5QixHQUFFMlU7SUFTcEIsb0JBQWtCLE9BRGR6USxLQUNrQjtJQUFkLE9BQUEsdUJBRkppVztHQUlXO1lBRWpCL0csT0FBT3BULEdBQUUyVSxHQUFJLE9BYlR1RixXQWFLdkYsTUFBRjNVLEdBQUUyVSxHQUF5QjtZQUVsQ3RCLE9BQVM5TixLQUFxQnZGLEdBQUVnVztJQUNsQyxHQURXelE7U0FBa0JDLE1BQWxCRCxRQUFBK04sa0JBQWtCOU47O1NBQWxCOE47T0FBQUE7S0FJTCxJQURFQyxVQUNGLGtDQUpLRDtLQVFQLHNCQUxJQzs7YUFPQUMsS0FBS0MsU0FBUUM7O01BU1gsSUFBY0Esc0JBQVREOztPQUNFLFlBQWYsT0FBQSxvQkFEYUE7V0FJTkU7T0FIUCxPQVZNSCxTQWNFLFdBeEJzQnhULEdBdUJ2QjJULE1BSk1GLFVBQVNDO01BS29CO01BSjFDLFVBOWRBcFYsSUEwY2dDMFg7TUFvQmpCLE9BQUE7S0FJMkI7WUFkdkJ0QztnQkFFSyx1QkFGYkQsU0FBUUM7O01BTWY7OztVQUE4QjtXQUFlRDtXQUFWRztXQUN4Qjs7Y0FEa0NIO2NBTjlCQyxZQU9rQiwyQkFERUU7VUFDeEIsT0FBQTtTQUEyQztPQUR0RCxNQUFBLG9CQU5PSDthQUtKO0tBSUMsT0FBQTtJQUtrQztJQUU1QyxPQWhCUUQsUUFWR0Y7R0EwQlk7WUFFakI4RyxTQUFTN2IsTUFBS3lCLEdBQUUyVTtJQUN0QixJQURlclIsU0FBQS9FO0lBQ2Y7UUFEZStFLFdBQU9xUjtNQUVwQjs2QkFBcUIsT0FGakJ5RixTQUFTOVcsUUFBS3RELEdBQUUyVSxHQUVrQjtPQUF0QyxNQXpqQkF1QyxLQXVqQm9CdkM7TUFFVCxPQUFBOztTQUdUcFAsTUFMV2pDO1VBS1hpQyxLQVFBO1NBUkt2RSxJQUFMdUU7S0F0aEJGOFIsUUFpaEJvQjFDLEdBQVByUjtLQU9BLElBQVAyVSxPQUFPLFdBUEtqWSxHQUtYZ0I7S0FHTCxHQURJaVgsTUFFRixPQUFBLG1CQUpGMVM7U0FMV2tTLFNBQUFuVSxXQUFBQSxTQUFBbVU7O0dBYUk7WUFFakI0QyxLQUFLcmEsR0FBRTJVLEdBQUksT0FmUHlGLFNBZUd6RixNQUFGM1UsR0FBRTJVLEdBQXVCO1lBRTFCMkYsV0FBVy9iLE1BQUt5QixHQUFFMlU7SUFDeEIsR0FEaUJwVyxTQUFPb1c7S0FFdEIsMEJBQXFCLE9BRmpCMkYsV0FBVy9iLE1BQUt5QixHQUFFMlUsR0FFa0IsR0FBeEMsTUExa0JBdUMsS0F3a0JzQnZDO0tBRVgsT0FBQTs7UUFHVHBQLE1BTGFoSDtTQUtiZ0gsS0FTQTtRQVRLdkUsSUFBTHVFO0lBdmlCRjhSLFFBa2lCc0IxQyxHQUFQcFc7O0tBT0gsZUFEUixtQkFERmdILE9BTEUrVSxXQUFXL2IsU0FBS3lCLEdBQUUyVTtJQVdRO0lBSjFCLFVBQUEsV0FQZ0IzVSxHQUtiZ0I7SUFFSyxPQUFBO0dBT0s7WUFFakJ1WixPQUFPdmEsR0FBRTJVLEdBQUksT0FoQlQyRixXQWdCSzNGLE1BQUYzVSxHQUFFMlUsR0FBeUI7WUFFOUI2RixhQUFhamMsTUFBS3lCLEdBQUUyVTtJQUMxQixJQURtQnJSLFNBQUEvRTtJQUNuQjtRQURtQitFLFdBQU9xUjtNQUV4Qjs2QkFBcUIsT0FGakI2RixhQUFhbFgsUUFBS3RELEdBQUUyVSxHQUVrQjtPQUExQyxNQTVsQkF1QyxLQTBsQndCdkM7TUFFYixPQUFBOztpQkFGTXJSO2lCQWFmO1NBUkt0QztLQXpqQlBxVyxRQW9qQndCMUMsR0FBUHJSO0tBT1AsSUFBSitPLE1BQUksV0FQWXJTLEdBS2ZnQjtLQUdMLFNBRElxUixLQUlGLE9BQUEsbUJBSkVBO1NBUFdvRixTQUFBblUsV0FBQUEsU0FBQW1VOztHQWFBO1lBRWpCZ0QsU0FBU3phLEdBQUUyVSxHQUFJLE9BZlg2RixhQWVPN0YsTUFBRjNVLEdBQUUyVSxHQUEyQjtZQUVsQytGLGVBQWVuYyxNQUFLeUIsR0FBRTJVO0lBQzVCLEdBRHFCcFcsU0FBT29XO0tBRTFCOzRCQUFxQixPQUZqQitGLGVBQWVuYyxNQUFLeUIsR0FBRTJVLEdBRWtCO01BQTVDLE1BN21CQXVDLEtBMm1CMEJ2QztLQUVmLE9BQUE7O2dCQUZRcFc7Z0JBY2pCO1FBVEt5QztJQTFrQlBxVyxRQXFrQjBCMUMsR0FBUHBXO0lBT1QsSUFBSm9TLElBQUksV0FQYzNRLEdBS2pCZ0I7d0JBR0UsZUFESDJQLElBUEYrSixlQUFlbmMsU0FBS3lCLEdBQUUyVSxHQVlwQjtJQUpHLE9BQUEsdUJBREhoRTtHQU9XO1lBRWpCZ0ssV0FBVzNhLEdBQUUyVSxHQUFJLE9BaEJiK0YsZUFnQlMvRixNQUFGM1UsR0FBRTJVLEdBQTZCO1lBRTFDaUcsUUFBUWhiLElBQUdDO2FBQ1RzUztLQUNGLElBQUkwSSxLQTlpQkp2YyxJQTRpQlFzQixLQUVZa2IsS0E5aUJwQnhjLElBNGlCV3VCO0tBR1gsYUFBV2tiO21CQUNBQztPQUNYLEdBRldELE1BQ0FDO1lBRUt6TCxLQUZMeUwsT0FFSjNMLEtBSEkwTDtRQUlFLE9BQUEsMkJBRE4xTCxJQUFTRTs7T0FHZDtNQUFlO01BTFYsT0FBQSx1QkFGYXVMO0tBT0g7S0FOVixPQUFBLHVCQURIRDtJQU9hO0lBRW5CLE9BdDNCRTdGLEtBNDJCRTdDO0dBVUs7WUFFUEMsT0FBT3hTLElBQUdDO0lBQ0ksSUFBWm9iLGdCQURLcmI7YUFFRHVTO0tBQ0UsSUFBSnhCLElBNWpCSnJTLElBMGpCRTJjOztNQUdJO2dCQURGdEs7Z0JBRkZzSyxpQkFEUXBiLGdCQUNSb2IsZUFEUXBiLElBRUpzUztLQVdEO0tBVEMsT0FBQSx1QkFERnhCO0lBVUM7SUFFUCxPQXY0QkVxRSxLQTAzQk03QztHQWFDO1lBRVArSSxPQUFPQztJQUNPLElBQVpGLGdCQTE0QkZqRyxxQkEwNEJtQyxlQUFlO2FBQzVDN0M7S0FDRSxJQUFKeEIsSUE3a0JKclMsSUEya0JFMmM7O01BR0ksVUFBTixPQURJdEs7O09BS1ksWUFLWjtXQUpLZ0U7T0FSUHNHLGVBUU90RztPQUVMLE9BVEV4QztNQVdhO01BTGpCLFVBbGxCRjdULElBMGtCTzZjO01BUVMsT0FBQTtLQUtHO0tBVGIsT0FBQSx1QkFERnhLO0lBVWU7SUFFckIsT0F4NUJFcUUsS0EyNEJNN0M7R0FhQztZQUVQeEUsT0FBT3lOO2FBQ0x2RyxPQUFPRjtrQkFBc0IzVCxHQUFLLFdBQTNCMlQsR0FBc0IzVCxHQUFXO0tBQXpCLFVBNWxCakIxQyxJQTRsQlNxVztLQUFJLFdBQUpBLEdBQVE7SUFBMEI7SUFDL0IsSUFBVjBHLGdCQUFjLDRCQURkeEcsUUFES3VHO2FBR0RqSjtLQUNOLElBR0VpQyxJQUxBaUg7VUFLQWpILEdBREE7O01BRWdDLElBQVFwVCxjQUFIMlQsY0FDakMyRyxNQUFJLDRCQUQ2QjNHLEdBRHJDUDtNQUdBLE9BRndDcFQ7aUJBTnhDcWEsbUJBREF4RyxPQU9xQ0YsSUFDakMyRyxNQUlGLG1CQUxzQ3RhO2lCQU54Q3FhLGVBT0lDLEtBTkFuSjtLQWFLO3VCO0tBUkU7TUFBQSxNQUFBLGlDQURYaUM7TUFDQSxNQUFBO0tBQWdDLE9BQUE7SUFRdkI7SUFFYixPQTU2QkVZLEtBNjVCTTdDO0dBZUM7WUFFUG9KLE1BQU01RyxHQUFFM1U7SUFDVixTQURRMlUsU0FFYTtRQUVqQnBXLE9BSklvVztpQkFPRDFULEtBUEMwVCxPQUlKcFcsTUFLQyxPQUFBLG1CQUZFMEMsS0FFVTt3QkFISixPQUNYLFdBUFFqQixHQUFGMlUsR0FNUTtJQUNkLE9BQUE7R0FFZ0I7WUFFaEI2RyxRQUFReEY7SUFDVixJQUFJNEMsTUFBTSxrQ0FBcUI2QztJQUMxQixPQTM3Qkh6Rzs7MkJBKzdCRVo7ZUFIaUIsS0FHakJBLEdBREE7ZUFFQSw2QkFOQXdFO2VBT0EsNkJBUEFBLFVBQTJCNkM7ZUFBQUEsU0FBQUE7bUJBZ0JoQkMsaUJBWFh0SDs7O29CQU9Ta0gsZ0JBQUx0YTt5QkFJTzBhLEtBSFMsOEJBYnBCOUM7Z0JBY0ksNkJBZEpBLFVBWUk1WDs0QkFJTzBhLGFBQUFBLHFCQUpGSjs7bUJBSUVLLFFBQUFEO2VBQ1Q7bUJBRFNDO3lCQUFBQTtpQkFHTCw4QkFuQk4vQzs7aUJBcUJNLDhCQXJCTkE7Z0JBcUJNLElBTEtnRCxRQUFBRCxlQUFBQSxRQUFBQzs7ZUFVWCw4QkExQkFoRDs0QkEyQmVpRDtnQkFBTTs7MEJBQU5BLGFBQUFBLGNBQUFBOzs7Z0JBQXdFLE9BQUEsOEJBM0J2RmpEO2VBMkIyRjtlQUEzRixpQ0F0QkF4RTtlQXVCQSw4QkE1QkF3RTtlQTZCVyxjQUFLLDZCQTdCaEJBO2VBNkJXLE9BQUE7Y0FBMkI7Y0EzQnhDLFVBOWxCQWIsU0EybEJRL0I7Y0FHVyxPQUFBO2FBMkJxQjtHQUN2Qzs7OztPQXg5QkRoQjtPQUdBQzs7T0EyRkF0VztPQXpFQTRXOztPQW9NQXVCO09BL0pBeFA7T0FNQXdLO09BV0F3QztPQVNBNEI7T0FvQkEvQjtPQUdBaUM7T0FHQUM7T0EvSEEzQjtPQStjQWdFO09BY0FHOztPQXJLQXRCO09BY0FHO09BVUFwWjtPQStCQXlaO09BaUJBRztPQWtCQUU7T0FhQWpHO09Bb0JBcUc7T0E0Q0FNO09Bd0JBRTtPQWlCQUU7T0FrQkFFO09Bb0JBQztPQW9CQUM7T0FzQkFDO09BRUl6YTtPQWprQkpvVztPQUZBSDtPQW81QkFwSDtPQTNVQStDO09BUUE0QjtPQU9BSTtPQWVBQztPQWdCQUo7T0FlQUM7T0FlQWdIO09Ba0JBRTtPQWlDQUc7T0FjQUU7T0FjQTdHO09BNkJBRTtPQWZBRDtPQWlCQUU7T0EyQ0FnSDtPQWtCQUU7T0FpQkFFO09Ba0JBRTtPQUVBQztPQWFBeEk7T0FpQkE4STtPQTFNQXZCO09BaFhBOUI7T0ErbEJBMEQ7T0FXQUM7OztFOzs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7WUN6aUNBbFUsU0FBT3RHLEdBQUksT0FBVyx1QkFBZkEsSUFBcUI7WUFDNUJ3RyxLQUFLNUYsR0FBSSxPQUFXLHVCQUFmQSxJQUF3QjtPQUU3QmthO1lBQ0FySixHQUFHelI7aUJBQWlCb0wsR0FBSyxXQUFMQSxHQUFTO0lBQXRCLE9BQUEseUJBQUpwTDtHQUE2QjtZQUNoQythLE1BQU0vYTtpQkFBaUJvTCxHQUFLLFdBQUxBLEdBQVk7SUFBekIsT0FBQSx5QkFBSnBMO0dBQWdDO1lBRXRDMFAsSUFBSTFRLEdBQUU0Qjs7S0FFTix1QkFFT1osY0FBSyxXQUFHLFdBSlhoQixHQUlHZ0I7U0FER1k7S0FBSyxXQUFMQTtJQUNXO0lBSHZCLE9BQUEseUJBRFFBO0dBS0w7WUFFRG9hLFVBQVVoYyxHQUFFNEI7O0tBRVosdUJBRU9aLGNBQUssV0FBTEE7U0FER1k7S0FBSyxXQUFNLFdBSFg1QixHQUdBNEI7SUFDTztJQUhuQixPQUFBLHlCQURjQTtHQUtYO1lBQ0RxYSxRQUFRamMsR0FBRTRCLEdBQUksT0FOZG9hLFVBTVFoYyxHQUFFNEIsR0FBaUI7WUFFM0JvSSxRQUFNcEk7d0JBRUssT0FwQlg2USxHQW9CYyxXQUZSN1EsT0FFYzttQ0F2QnBCNEY7R0F3Qkk7WUFFSjBVLFFBQVF0YTtJQUNWO0tBQ0UsdUJBQ09aLGNBQUssT0FBQSxtQkFBTEE7U0FDR1k7S0FBSyxPQUFBLG1CQUFMQTtJQUFnQjtJQUYxQixPQUFBLG1CQUZRQTtHQUlrQjtZQW1FeEI4SCxZQWpFRzlILEdBQUU1Qjs7S0FFUCx1QkFFT2dCLGNBQUssT0FBQSxXQUpMaEIsR0FJQWdCO1NBREdZO0tBQWdCLE9BQUEsdUJBQWhCQTtJQUNNO0lBRmhCLE9BQUEsbUJBRktBO0dBSVc7WUFFaEJ1YSxXQUFXdmEsR0FBRTVCOztLQUViLHVCQUVPZ0IsY0FBZ0IsT0FBQSx1QkFBaEJBO1NBREdZO0tBQUssT0FBQSxXQUhGNUIsR0FHSDRCO0lBQ29CO0lBRjlCLE9BQUEsbUJBRldBO0dBSW1CO1lBRTlCd2EsU0FBU3hhLEdBQUU1Qjs7S0FFWCx1QkFDT2dCLGNBQVEsT0E1Q2Z5UixHQTRDZSxXQUhKelMsR0FHSmdCO1NBQ0dZO0tBQUssT0FoRGY0RixLQWdEVTVGO0lBQVk7SUFGdEIsT0FBQSxtQkFGU0E7R0FJYTtZQUV0QnlhLFlBQVl6YSxHQUFFNUI7O0tBRWQsdUJBRU9nQixjQUFLLE9BQUEsV0FKRWhCLEdBSVBnQjtTQURHWTtLQUFLLFdBQUxBO0lBQ007SUFIbEIsT0FBQSx5QkFEY0E7R0FLWDtZQUVEMGEsZUFBZTFhLEdBQUU1Qjs7S0FFakIsdUJBRU9nQixjQUFLLE9BOURac0csU0E4RE90RztLQURpQixJQUFkWSxjQUFjLE1BQUEsV0FIUDVCLEdBR1A0QjtLQUFLLE9BQUEsd0JBNURmNEY7SUE2RHFCO0lBRnJCLE9BQUEsbUJBRmU1RjtHQUlNO1lBQ3JCMmEsYUFBYTNhLEdBQUU1QixHQUFJLE9BTG5Cc2MsZUFLYTFhLEdBQUU1QixHQUFzQjtZQUVyQzJMLEtBQUtvSyxHQUFFeUc7SUFDRCxJQUFKN0g7SUFDSixTQUFJOEgsU0FBUzdhLEdBQ1gsT0FGRStTLFlBQUFBLFdBQ1MvUyxPQUdHO0lBRWlCO0tBQTFCOGEsTUExRExWLFVBcURFUyxVQUZLRDtLQU9KRyxNQTFESFgsVUFxREVTLFVBRkcxRztLQWtCTCxNQUFBLG9CQVhHNEcsS0FBRUQ7O0tBTUw7OzRCQUNPMWI7NkJBQU1vTCxjQUFLLGVBQVhwTCxHQUFNb0w7O21CQWJYdUk7O01BUVEsTUFBQTtTQUNIL1M7S0FBSyxXQUFMQTtJQU9nQztJQUN2QyxPQUFBO0dBQWM7WUFFZHNSLEtBQUtsVCxHQUFFdUc7O0tBRVAsbUJBRWU7U0FEUnZGO0tBQUssT0FBQSxXQUhQaEIsR0FHRWdCO0lBQ3dCO0lBRi9CLE9BQUEsbUJBRk91RjtHQUl3QjtZQUUvQnFXLFdBQVc1YyxHQUFFdUc7O0tBRWIsbUJBRVk7U0FERjNFO0tBQUssT0FBQSxXQUhKNUIsR0FHRDRCO0lBQ2tCO0lBRjVCLE9BQUEsbUJBRmEyRTtHQUllO1lBSTFCdUQsT0FBTWxJLEdBQUU1QixHQUFJLE9BNUZkMFEsSUE0RlUxUSxHQUFGNEIsR0FBYTtZQU1qQmliLE1BQUlsTSxHQUFHM1EsR0FBSSxPQWxHZjBRLElBa0dXMVEsR0FBSDJRLEdBQWM7WUFDbEJDLEtBQUtELEdBQUczUSxHQUFJLE9BUmQwSixZQVFPaUgsR0FBRzNRLEdBQVk7R0FFSDtJQUFBO0lBTEgsaUJBdkdsQnNILFVBeUdJdVYsT0FDQWpNLE1BekNKakY7SUFxQ2dCO1lBZWRzRixNQUFPalEsR0FBRWhCLEdBQUksT0E5R2YwUSxJQThHVzFRLEdBQUZnQixHQUFhO0dBSlY7SUFBQSxhQWZWMEksYUFqQ0ZpQyxNQW9ERXNGLE9BcERGdEY7OztPQWpFQXJFO09BQ0FFO09BRUFzVTtPQUNBcko7T0FDQXNKO09BaUJBL1I7T0FLQWtTO09BcEJBeEw7T0FPQXNMO09Bb0ZFdFM7T0EzREZ5UztPQU1BQztPQWFBRTtPQVBBRDtPQWNBMVE7T0FvQkF1SDtPQU1BMEo7V0FRRTlTLFFBREFKOzs7T0FDQUk7T0FEQUo7T0E5RUZ1UztPQTJDQU07OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7O1lFOURBNEIsbUJBQW1CbmUsR0FBRW9VO0lBQ2QsV0FBQSw0QkFEWXBVLEdBQUVvVTtJQUNkLE9BQUE7R0FBa0I7WUFFekJnSyx3QkFBd0JwZSxHQUFFb1U7SUFDNUIsSUFBYy9ULFNBQUltTSxlQURVNEg7O2lCQUVsQixPQURJL1Q7S0FFQTtNQUFONmQ7TUFBSkc7TUFBVSxNQUZJN1I7TUFFc0IsWUFBQyxXQUhmeE0sR0FDUndNLEdBRWQ2UixLQUZVaGU7TUFBQUE7TUFBSW1NO2NBRVYwUjs7R0FFSTtZQUlOL0ssT0FBT25ULEdBQUVvVTtJQUNmLEtBRGVBLEdBR2I7UUFDS2tILE1BSlFsSCxNQUlicFQsSUFKYW9UO3lCQU1iLE9BTklqQixPQUFPblQsR0FJTnNiLEtBRUs7SUFEVixXQUFBLG9CQUxXdGIsR0FJWGdCO0lBQ2tCLE9BQUE7R0FDUjtZQUVWb1MsT0FBT3BULEdBQUVvVTtJQUNYO0tBQXNCLE9BQUEsb0JBRGJwVTtLQUNMeWQsS0FBSyxrQ0FERXJKO0lBRVgsT0FBQSxvQkFESXFKO0dBQ087Z0JBRUdqUixHQUFFeE0sR0FBRW9VO0lBQ2xCLEtBRGtCQSxHQUdoQjtRQUNLa0gsTUFKV2xILE1BSWhCcFQsSUFKZ0JvVDt5QkFNaEIsV0FOWTVILFdBQUV4TSxHQUlUc2IsS0FFYztJQURULElBQUEsT0FBQSxXQUxJdGIsR0FBRndNLElBS1osT0FBQSwwQkFEQXhMO0lBQ3NCLE9BQUE7R0FDSDtZQUVuQnNkLFFBQVF0ZSxHQUFFb1UsR0FBSSxjQUFOcFUsR0FBRW9VLEdBQWlCO1lBRTNCbUssUUFBUXZlLEdBQUVvVTthQUNSdlAsSUFBRzJIO0tBQWMsV0FBQSxXQURYeE0sR0FDSHdNO0tBQWMsT0FBQTtJQUFLO0lBQ2pCLElBQUxpUixLQWpDRlcsd0JBZ0NFdlosS0FEUXVQO0lBR1osT0FBQSxvQkFESXFKO0dBQ087WUFFVG5MLE1BQU10UyxHQUFFb1U7YUFDRm9LLE1BQU1uZTtLO01BR1Y7T0FESTZkO09BQUpHO3VCQUN1QjlYLEdBQ3ZCLE9BSklpWSxVQUdtQmpZLEdBSGJsRyxNQUVONmQsSUFFaUM7T0FEckMsT0FBQSxvQkFKSWxlLEdBR0pxZTtNQUNtQixPQUFBOztLQUZiLFdBQUEsMkJBREloZTtLQUNKLE9BQUE7O0lBS1YsT0FOUW1lLFNBREVwSztHQU9BO1lBRUpxSyxZQUFhcGU7SSxZQUVqQixPQUFBLG1CQUZpQkE7UUFHZG9kLGVBQUg5TTtrQkFDVW5FLEdBQ1YsT0FMSWlTLGdCQUlNalMsR0FKT25NLE1BR2RvZCxJQUV5QztJQUR0QyxPQUFBLHVCQUROOU07O1lBSUErTixNQUFNMWUsR0FBRW9VO0lBQ1Y7S0FBc0IsT0FBQSxvQkFEZHBVO0tBQ0p5ZCxLQUFLLGtDQURDcko7SUFFVixPQVRNcUssZUFRRmhCO0dBQ2M7WUFFaEJqTCxhQUFheFMsR0FBRW9VO2FBQ1RvSyxNQUFNbmU7SztNQUdWO09BREk2ZDtPQUFKRzs7O1VBQ21CLFlBQW5CLE9BSElHLE1BQU1uZSxLQUVONmQ7Y0FFR3hjO1VBQUssT0FKUjhjLFVBSUc5YyxHQUpHckIsTUFFTjZkO1NBR3NDO09BRjFDLE1BQUEsb0JBSldsZSxHQUdYcWU7TUFDbUIsT0FBQTs7S0FGVCxXQUFBLDJCQURBaGU7S0FDQSxPQUFBOztJQU1kLE9BUFFtZSxTQURTcEs7R0FRUDtZQUVSdUssYUFBYTNlLEdBQUVvVTtJQUNqQixTQUFRd0sscUJBQXNCdmU7SyxZQUNuQixPQUFBLG1CQURtQkE7U0FFekJvZCxlQUFIOU07O01BQ00sWUFBTixPQUhNaU8scUJBQXNCdmUsS0FFekJvZDtVQUVJL2I7TUFBSyxPQUpOa2QseUJBSUNsZCxHQUpxQnJCLE1BRXpCb2Q7S0FHdUQ7S0FGcEQsT0FBQSx1QkFETjlNOztJQUtvQjtLQUFBLE1BQUEsb0JBUlAzUTtLQVFYeWQsS0FBSyxpQ0FSUXJKO0lBU2pCLE9BUlF3Syx3QkFPSm5CO0dBQ3VCO1lBRXpCb0IsT0FBTzdlLEdBQUVvVTthQUNIb0ssTUFBTW5lLEtBQUltTTtLO01BR0o7T0FETjBSO09BQUpHO3NCQUMyQjNjLEdBQzNCLE9BSkk4YyxVQUd1QjljLEdBSGpCckIsTUFBSW1NLFdBRVYwUixJQUV1QztPQURqQyxNQUFBLFdBSkxsZSxHQUNTd007T0FHZCxNQUFBLHlCQURBNlI7TUFDdUIsT0FBQTs7S0FGYixVQUFBLDJCQURBaGU7S0FDQSxPQUFBOztJQUtkLE9BTlFtZSxZQURHcEs7R0FPQztZQUVWMEssT0FBTzllLEdBQUVvVTthQUNQdlAsSUFBRzJIO0tBQWMsVUFBQSxXQURaeE0sR0FDRndNO0tBQWMsT0FBQTtJQUFLO0lBQ2pCLElBQUxpUixLQXhGRlcsd0JBdUZFdlosS0FET3VQO0lBR1gsT0E1Q01xSyxlQTJDRmhCO0dBQ2M7WUFFWnNCLGlCQUFpQjFlLEtBQUlMLEdBQUVvVTtJQUM3QixLQUQ2QkEsR0FHM0IsT0FBQSxtQkFIcUIvVDtRQUloQmliLE1BSnNCbEgsTUFJM0JwVCxJQUoyQm9UO2lCQUtMcFQsR0FDdEIsT0FOSStkLHFCQUtrQi9kLEdBTERYLE1BQUlMLEdBSXBCc2IsS0FFMEI7SUFEL0IsVUFBQSxvQkFMeUJ0YixHQUl6QmdCO0lBQ2tCLE9BQUE7R0FDYTtZQUUvQmdlLFVBQVVoZixHQUFFb1UsR0FDZCxPQVRNMkssb0JBUU0vZSxHQUFFb1UsR0FDUztZQVlyQjZLLFVBQVVqZixHQUFFa2Y7SUFDZCxJQVh1QjFlLGlCQUFBSCxNQUFBRyxPQUFNNFQsSUFVZjhLO0lBVGQ7VUFENkI5SyxHQUczQixPQUhxQi9UO1NBQU1pYixNQUFBbEgsTUFJM0JwVCxJQUoyQm9UO1NBQU41VCxRQUFBSDtLQU1sQjs7aUJBQXNCVztzQkFDVm9ULEdBQ1osV0FGc0JwVCxHQUNWb1QsR0FDTjtTQURFLE9BQUEsdUJBUFU1VDtRQVFaO01BRk4sTUFBQSxvQkFJT1IsR0FOVmdCO01BSnFCVCxRQU1uQjtNQU5tQkYsTUFBQUU7TUFBTTZULElBQUFrSDs7R0FXTTtZQUU3QnJJLFlBQVlqVCxHQUFFSyxLQUFJK1Q7SUFDeEIsS0FEd0JBLEdBR3RCLE9BQUEsbUJBSGtCL1Q7UUFJYmliLE1BSmlCbEgsTUFJdEJwVCxJQUpzQm9UO2lCQUtNL1QsS0FDNUIsT0FOSTRTLFlBQVlqVCxHQUtZSyxLQUR2QmliLEtBRWtDO0lBRDdCLElBQUEsTUFBQSxXQUxNdGIsR0FBRUssTUFLbEIsTUFBQSx5QkFEQVc7SUFDd0IsT0FBQTtHQUNlO1lBRXZDbWUsYUFBYW5mLEdBQUVvVSxHQUFFL1Q7SUFDbkIsU0FBUW1lLE1BQU14ZSxHQUFFK1Y7SyxZQUNGLE9BQUEsbUJBREVBO1NBRVJtSSxlQUFKRztrQkFBdUN0SSxHQUN2QyxPQUhJeUksTUFBTXhlLEdBRTZCK1YsR0FBbkNtSSxJQUM2QjtLQURaLElBQUEsTUFBQSxXQUZYbGUsR0FFVnFlLEtBQVUsTUFBQSx5QkFGRXRJO0tBRXVCLE9BQUE7O0lBRzNCLE9BTEp5SSxNQURPeGUsR0FBSUssS0FNUCwyQkFOSytUO0dBTU87WUFFbEJnTCxVQUFVcGYsR0FBRW9VO0lBQ2xCLEtBRGtCQSxHQUdoQjtRQUNLa0gsTUFKV2xILE1BSWhCcFQsSUFKZ0JvVDt3QkFLRSxlQUxkZ0wsVUFBVXBmLEdBSVRzYixlQUthO0lBSmxCLFVBQUEsb0JBTGN0YixHQUlkZ0I7SUFDa0IsT0FBQTtHQUlBO1lBRWxCcWUsVUFBVXJmLEdBQUVvVTtJQUNkLGFBQWtCa0w7a0JBQXdCdGUsR0FBSyxPQUFMQSxFQUFNO0tBQXhCLFVBQUEsaUNBQU5zZTtLQUFNLE9BQUE7SUFBMEM7SUFBbEUsVUEzRkVaLE1BMEZVMWUsR0FBRW9VO0lBQ0EsT0FBQTtHQUFvRDtZQUU1RG1MLFNBQVN2ZixHQUFFb1U7SUFDakIsS0FEaUJBLEdBR2Y7UUFDS2tILE1BSlVsSCxNQUlmcFQsSUFKZW9UO3dCQUtHLHlCQUxkbUwsU0FBU3ZmLEdBSVJzYixLQUs2QjtJQUpsQyxVQUFBLG9CQUxhdGIsR0FJYmdCO0lBQ2tCLE9BQUE7R0FJZ0I7WUFFbEN3ZSxTQUFTeGYsR0FBRW9VO0lBQ2IsYUFBa0JrTDtrQkFBdUJ0ZSxHQUFLLE9BQUxBLEVBQU07S0FBdkIsVUFBQSxpQ0FBTnNlO0tBQU0sT0FBQTtJQUF5QztJQUFqRSxVQXpHRVosTUF3R1MxZSxHQUFFb1U7SUFDQyxPQUFBO0dBQW1EO1lBRTNEbUcsT0FBT3ZhLEdBQUVvVTtJQUNmLEtBRGVBLEdBR2IsT0FBQTtRQUNLa0gsTUFKUWxILE1BSWJwVCxJQUphb1Q7O0tBS0ssZUFBbEIsbUJBREFwVCxLQUpJdVosT0FBT3ZhLEdBSU5zYjtJQUsyQjtJQUpoQyxVQUFBLG9CQUxXdGIsR0FJWGdCO0lBQ2tCLE9BQUE7R0FJYztZQUVoQ3llLFlBQWF6ZixHQUFFZ0I7aUJBQ0x3YixHQUFLLE9BQUxBLElBQTBCLHVCQURyQnhiLGNBQ2tEO0lBQW5FLFVBQUEsV0FEZWhCLEdBQUVnQjtJQUNULE9BQUE7R0FBMkQ7WUFFakUyUixTQUFTM1MsR0FBRW9VO0lBQ2IsT0F0SEU1QiwyQixPQWtIQWlOLFlBR1N6ZixXQUFFb1U7R0FDa0I7WUFFN0JzTCxTQUFTMWYsR0FBRW9VO0lBQ1osT0EvR0N1SywyQixPQXdHQWMsWUFNU3pmLFdBQUVvVTtHQUNtQjtZQUU5QnVMLFlBQVkzZixHQUFFb1U7YUFDUm9LLE1BQU1vQixNQUFLQztLO01BRUw7T0FBTjNCO09BQUpHOztrQkFBaUM3QjtVQUMvQixPQUQrQkE7b0JBRjdCZ0MsVUFFSkgsSUFGVXVCLE9BQUtDLE1BRVgzQjtvQkFGQU0sTUFBTW9CLFVBRVZ2QixJQUZld0IsT0FFWDNCO1NBSXdCO09BSmxCLE1BQUEsb0JBSEFsZSxHQUdWcWU7TUFBNkIsT0FBQTs7S0FEUTtNQUFBLE1BQUEsMkJBRHRCd0I7TUFDTSxVQUFDLDJCQURaRDtLQUNXLE9BQUE7O0lBT3pCLE9BUlFwQixZQURRcEs7R0FTSDtZQUVYMEwsWUFBWTlmLEdBQUVvVTthQUNackosRUFBRS9KO2tCQUEwQndiLEdBQUssT0FBVyx1QkFBaEJBLEdBQTFCeGIsSUFBZ0Q7S0FBNUMsVUFBQSxvQkFESWhCLEdBQ1JnQjtLQUFzQixPQUFBO0lBQTBCO0lBQ3RELGFBQWtCa2Q7dUI7S0FDcUI7TUFBQSxNQUFBLGlDQURyQkE7TUFDZDZCLFNBcE1GNUIsaUM7a0JBc00yQ25kLEdBQUssV0FBTEEsS0FBaUI7S0FBbEM7TUFBQSxNQUFBLGlDQUhWa2Q7TUFFZDhCLFNBck1GN0IsaUM7S0F1TVMsT0FBQSx1QkFIUDRCLFFBQ0FDO0lBRXVCO0lBSjNCLFVBNUlFdEIsTUEySUUzVCxHQURZcUo7SUFFRixPQUFBO0dBSWE7Ozs7T0EzTHJCakI7T0FRSkM7T0FZQWtMO09BRUFDO09BS0FqTTtPQWdCQW9NO09BeUJBRztPQVNBQztPQWFBRTtPQWFBQztPQUdJaE07T0FRSmtNO09BUUlDO09BV0pDO09BR0lFO09BV0pDO09BR0lqRjtPQWNKNUg7T0FHQStNO09BeEhBbE47T0FVQW1NO09BaUhBZ0I7T0FXQUc7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7WUd6TEFuaEIsY0FBWSxjQUE0QixnQ0FBd0I7WUFFaEU0aUIsS0FBS3RCO0lBQ1AsT0FET0EsMkJBQUFBLFNBQUFBO0dBTUo7WUFFRHVCLE9BQU92QjtJQUNULFVBRFNBOztJQUVKLEdBQUEsNEJBRklBLE9BQUFBO0lBT1ksVUFBQSw2QkFQWkE7SUFPTCxPQUFBO0dBQ0Q7WUFFRHdCLFVBQVV4QixHQUFFamdCOzt5QkFWWndoQixPQVVVdkIsSUFFYyxlQUF5QjtLQUFwQyxPQUFBLG1CQUZEamdCO0lBRXNDO0lBRHBELFVBbkJFdWhCLEtBa0JVdEI7SUFDRCxPQUFBO0dBQ3lDO1lBRWxEeUIsVUFBVXpCLEdBQUksT0FBSkEsS0FBWTtZQUN0Qm5oQixTQUFTbWhCLEdBQUksbUNBQUpBLE1BQW1DO3VCQXpCNUN0aEIsUUFFQTRpQixNQVFBQyxRQWNBRSxXQUNBNWlCLFVBTEEyaUI7OztFOzs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7OztJQ0NBOWlCO1lBRUEySixLQUFNcVosT0FBTUM7SUFDRCxJQUFUbEwsU0FBUyxvQkFEQ2tMO0lBRWQsR0FGUUQsV0FJQzFCLElBSkQwQixVQUlNLHlCQUFMMUI7SUFHVDtLQUdLLEtBVkcwQixPQVlPO1NBREgxQixJQVhKMEI7S0FXUyxPQUFBLHlCQUFMMUI7SUFDa0I7d0JBSmpCLE9BUFR2SixPQU9lO0lBQ2pCLE9BQUE7R0FHNkI7WUFFN0JtTCxPQUFPRCxNQUFLRTtJQUNkO0tBQ21CO01BQUEsTUFBQSw2QkFGVkY7TUFFUCxNQUFBLHdCQUZZRTtLQUVaOzs7O2tDQUVBOzs7R0FBRTtZQUVGQyxVQUFVSCxNQUFLRTtJQUNqQjtpQkFBd0M5Z0IsR0FBRW9ULEdBQUssV0FBUHBULEdBQUVvVCxHQUFXO0lBQXRDLElBQVg0TixXQUFXLGtDQURISjtJQUVaLDhDQUZZQTtpQkFHR25MLFNBQVcsMEJBQVhBLFNBSEVxTCxLQUdxQztJQUR0RCxPQUFBLGlDQURJRTtHQUU0RDtZQUU5REMsY0FBY0wsTUFBSzNnQjtJQUNyQjtpQkFBd0NELEdBQUVvVCxHQUFLLFdBQVBwVCxHQUFFb1QsR0FBVztJQUF0QyxJQUFYNE4sV0FBVyxrQ0FEQ0o7SUFFaEIsOENBRmdCQTtpQkFHRG5MLFNBQVcsMEJBQVhBLFNBSE14VixLQUdxQztJQUQxRCxPQUFBLGlDQURJK2dCO0dBRWdFOzJCQTlCbEVyakIsUUFFQTJKLE1BY0F1WixRQU1BRSxXQUtBRTs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUMvQ0VDLGVBQWVDLEdBQUVDO0lBQ1gsSUFBSkM7SUFDUSxvQkFKSyxPQUFBLFdBRUFGO0lBRWpCLCtCQURJRTtJQUNKLE9BQUEseUJBQ1NDLEdBQUssT0FBTEEsRUFBc0MsR0FINUJGO0dBR21DO1lBRXBERyxLQUFLQztJQUNQO0tBQXNCLFFBQUE7S0FBVkM7S0FBUkM7S0FDeUMsT0FBQSxpQkFGdENGO0tBRUhHO09BQUs7dUJBQVNMLEdBQUssT0FBQSxvQkFEWEcsU0FDTUgsR0FBeUI7eUJBQ1gsT0FBaEMsb0JBRElLLE1BQ21DO0lBQXZDLG9CQUZJRDtJQUVKLE9BRklBO0dBR0U7WUFFSkUsTUFBTVQsR0FBRVU7SUFFVjtLQUFJQztLQUdBQztLQUdjLFFBQUE7S0FBUEM7S0FBUFo7S0FFQWE7T0FDRjs7a0JBQ09YO1VBQ0YsS0FBRyxvQkFYTlE7V0FBQUEsYUFpQ2dCLFdBbkNaWDtXQXFDQyxXQTdCRWEsU0FJRlY7V0F5QkE7O3NCQWhDTFM7d0JBWVlHLGlCQUFBQSxVQUxQWixHQVFFO1VBRVcsSUFBUGEsYUFWTmI7VUFQTFMsaUJBaUJXSTs7V0FHRCxHQUFHLG9CQXZCYkwsYUFHQUM7ZUF1QmdCVCxJQU5MYTtXQWpCWEo7V0FIQUQsYUE0QnVCLFdBOUJuQlg7V0ErQlEsT0FBQSxXQXZCTGEsU0FvQlNWO1VBR0U7VUFQWCxvQkF0QlBRO1VBc0JPO1NBZUQ7U0F2Q0FEO0lBMkNILE9BQUEsdUJBakNISSxVQUZBYjtHQW1DZ0I7WUFFbEJnQixjQUFjQyxVQUNoQixPQUFBLG9CQURnQkEsR0FDSjtZQUVWQyxLQUFLbkI7SUFDUCxJQUFrQixRQUFBLHVCQUFQYSxpQkFBUFo7YUFDSW1CO21CQUNPakIsR0FDYixXQUhTVSxTQUVJVixJQUNiLE9BRk1pQixRQUdDO0tBRlAsV0FBQSxXQUhLcEI7S0FHSSxPQUFBO0lBRUY7SUFFRCxJQUFBLE9BQUEsd0JBQUprQixJQUFJLDZCQUxBRTtJQU1SLE9BbkVFckI7NEIsT0F3REFrQixjQVVFQyxZQU5BakI7R0FPa0M7WUFFcENvQixVQUFVcEI7SUFDWjtLQUE0QixRQUFBO0tBQVZxQjtLQUFOVDtLQUFSVTtJQUNKO01BRGtCRDtNQUNWLHlCQUFVbkIsR0FBSyxPQUFLLFdBRGhCVSxVQUNNVixJQUFrQixHQUZ4QkY7SUFFWixPQURJc0I7R0FFRTtZQUVKQyxVQUFVRDtJQUNaLElBQWtCLFFBQUEsdUJBQVBWLGlCQUFQWjs7bUJBR21Cd0I7TUFBSyxJQUFJLFdBQUEsV0FIckJaLFNBR1lZLElBQVM7WUFBWUM7V0FBQUMsMEJBQUFEO09BQU8sT0FBQSx1QkFBUEM7O0tBQW9DO0tBRmhGLE9BQUEsaUNBRllKO0lBSTRFO0lBRHRGLElBQUEsT0FBQSx3QkFERUwsSUFDRjtJQUVGLE9BL0VFbkI7NEIsT0F3REFrQixjQW9CRUMsWUFEQWpCO0dBSWtDO1lBRXBDMkIsTUFBTUM7SUFDRixZQUFBLG9CQURFQTtrQkFFRG5CLGNBQ0wsT0FES0E7SUFHYTtLQUFBLFVBQUE7S0FBUG9CO0tBQVA3QjtrQkFDdUJTO0tBQUssV0FEckJvQixTQUNnQnBCO0tBQTNCLE9BQUEsb0JBRElUO0lBQzhDO0lBQWxELG9CQU5NNEI7SUFNTixPQUFBLDRCQURJNUI7R0FFYztZQUlsQjhCLEtBQUtyQixHQUNHLCtCLFlBREhBLGFBQzBCO1lBTS9Cc0IsTUFBTXRCO0lBQ1I7S0FBa0IsUUFBQTtLQUFQRztLQUFQWjtLQUNBYTtPQUFPOztrQkFBVUk7d0JBQTJCTyxHQUFLLE9BQUEsV0FEMUNaLFNBQ3FDWSxHQUFXO1VBQWpDLG9CQUFMUDtVQUFLO1NBQXdDO1NBRjFEUjtJQUdELE9BQUEsdUJBREhJLFVBREFiO0dBRWdCO1lBRWxCZ0MsTUFBTXZCO0lBQ1I7S0FBa0IsUUFBQTtLQUFQRztLQUFQWjtLQUNBaUMsUUFBUTtLQUNScEI7T0FDRjs7a0JBQ09JO3dCQUdLTyxHQUFLLE9BQUEsV0FQUlosU0FPR1ksR0FBVzsrQkFEc0IsT0FGdENQLEVBRXVDO1VBQXZDLFdBQUEseUJBTExnQjtVQUlHO1VBQUE7U0FHSTtTQVRIeEI7SUFXRCxPQUFBLHVCQVJISSxVQUZBYjtHQVVnQjtZQUVsQmtDLE1BQU1uQyxHQUFFVTtJQUNWO0tBQWtCLFFBQUE7S0FBUEc7S0FBUFo7S0FDQWE7T0FBTzs7a0JBQVVYO3dCQUErQnNCLEdBQUssT0FBQSxXQUQ5Q1osU0FDeUNZLEdBQVc7VUFBdEIsV0FBQSxXQUZqQ3pCLEdBRWFHO1VBQUs7VUFBQTtTQUE0QztTQUY1RE87SUFHSCxPQUFBLHVCQURISSxVQURBYjtHQUVnQjtZQUVsQm1DLE1BQU1wQyxHQUFFVTtJQUNWO0tBQWtCLFFBQUE7S0FBUEc7S0FBUFo7S0FDQWlDLFFBQVE7S0FDUnBCO09BQ0Y7O2tCQUNPWDt3QkFHS3NCLEdBQUssT0FBQSxXQVBSWixTQU9HWSxHQUFXOytCQURzQixPQUN0QyxXQVJEekIsR0FLQ0csR0FFeUM7VUFBekMsV0FBQSx5QkFMTCtCO1VBSUc7VUFBQTtTQUdJO1NBVER4QjtJQVdILE9BQUEsdUJBUkhJLFVBRkFiO0dBVWdCO1lBRWxCb0MsTUFBTUMsSUFBRzVCO0lBQ1g7S0FBa0IsUUFBQTtLQUFQRztLQUFQWjtLQU1BO09BQUE7Y0FBSyx5QkFBVUQsR0FBRUcsR0FBSyxXQUFQSCxHQUFFRyxHQUFXLEdBUHhCbUMsS0FBRzVCO0tBRVBJO09BQ0Y7OztVQUNFLElBQVNYLGNBQUhIO1VBQ0gsY0FBMEJ5QixHQUFLLE9BQUEsV0FKM0JaLFNBSXNCWSxHQUFXO1VBQXRCLFdBQUEsV0FEWnpCLEdBQUdHO1VBQ047VUFBQTtTQUNLOztJQUdMLE9BQUEsdUJBUEhXLFVBREFiO0dBUWdCO1lBRWxCc0MsTUFBTUQsSUFBRzVCO0lBQ1g7S0FBa0IsUUFBQTtLQUFQRztLQUFQWjtLQUNBaUMsUUFBUTtLQVFSO09BQUE7Y0FBSyx5QkFBVWxDLEdBQUVHLEdBQUssV0FBUEgsR0FBRUcsR0FBVyxHQVZ4Qm1DLEtBQUc1QjtLQUdQSTtPQUNGOzs7VUFDRSxJQUFTWCxjQUFISDtVQUNILGNBRU95QixHQUFLLE9BQUEsV0FQUlosU0FPR1ksR0FBVzsrQkFEc0IsT0FDdEMsV0FIQ3pCLEdBQUdHLEdBRXFDO1VBQXpDLFdBQUEseUJBTEwrQjtVQUlHO1VBQUE7U0FHSzs7SUFHTCxPQUFBLHVCQVRIcEIsVUFGQWI7R0FXZ0I7WUFFbEJ1QyxTQUFTeEMsR0FBRVU7SUFDYjtLQUFrQixRQUFBO0tBQVBHO0tBQVBaO0tBQ0FhO09BQU87O2tCQUFVWDsrQkFBMEIsZUFBckIsV0FEZlUsU0FDVVYsT0FBaUU7VUFBN0MsV0FBQSxXQUY5QkgsR0FFVUc7VUFBSztVQUFBO1NBQWtFO1NBRi9FTztJQUdOLE9BQUEsdUJBREhJLFVBREFiO0dBRWdCO1lBRWxCd0MsU0FBU3pDLEdBQUVVO0lBQ2I7S0FBa0IsUUFBQTtLQUFQRztLQUFQWjtLQUNBaUMsUUFBUTtLQUNScEI7T0FBTzs7a0JBQVVYOytCQUFnRSxlQUEzRCxXQUZmVSxTQUVVVixPQUF1RzsrQkFBN0MsT0FBTSxXQUgxRUgsR0FHVUcsR0FBNkQ7VUFBekMsV0FBQSx5QkFEckMrQjtVQUNzQjtVQUFBO1NBQXdHO1NBSHJIeEI7SUFJTixPQUFBLHVCQURISSxVQUZBYjtHQUdnQjtZQUVsQnlDLE9BQU8xQyxHQUFFVTtJQUNYO0tBQWtCLFFBQUE7S0FBUEc7S0FBUFo7S0FDQWE7T0FBTzs7a0JBQVVYOztXQUEwQixZQUFxQztlQUF0QkE7V0FBSyxPQUFBLFdBRHhEVSxTQUNtRFY7VUFBeUI7VUFBOUMsV0FBQSxXQUZoQ0gsR0FFWUc7VUFBSztVQUFBO1NBQW1FO1NBRmxGTztJQUdKLE9BQUEsdUJBREhJLFVBREFiO0dBRWdCO1lBRWxCMEMsT0FBTzNDLEdBQUVVO0lBQ1g7S0FBa0IsUUFBQTtLQUFQRztLQUFQWjtLQUNBaUMsUUFBUTtLQUNScEI7T0FBTzs7a0JBQVVYOztXQUFnRSxZQUFxQztlQUF0QkE7V0FBSyxPQUFBLFdBRjlGVSxTQUV5RlY7VUFBeUI7K0JBQTlDLE9BQU0sV0FINUVILEdBR1lHLEdBQTZEO1VBQXpDLFdBQUEseUJBRHJDK0I7VUFDc0I7VUFBQTtTQUF5RztTQUh4SHhCO0lBSUosT0FBQSx1QkFESEksVUFGQWI7R0FHZ0I7WUFFbEIyQyxPQUFPNUMsR0FBRVU7SUFDWDtLQUFJbUM7S0FDYyxRQUFBO0tBQVBoQztLQUFQWjtLQUNBaUMsUUFBUTtLQUNScEI7T0FDRjs7a0JBQ09YO1VBQ0YsWUFOSDBDOztlQVVVQztXQVZWRCxrQkFLSzFDO1dBUUU7NEJBQ0tzQixHQUFLLE9BQUEsV0FiVlosU0FhS1ksR0FBVzttQ0FEc0IsT0FDdEMsV0FmRnpCLEdBTUFHLEdBS0syQyxHQUd3QztZQUEzQyxPQUFBLHlCQVhQWjtXQVVLO1dBQUE7O1VBWkxXLGtCQUtLMUM7VUFJQTtTQU1JO1NBaEJGTztJQW1CSixPQUFBLHVCQWZISSxVQUZBYjtHQWlCZ0I7WUFFbEI4QyxRQUFRVCxJQUFHVTtJQUNiO0tBQUlDLFlBRFNEO0tBRUssUUFBQTtLQUFQbkM7S0FBUFo7S0FDQWlDLFFBQVE7S0FDUnBCO09BQU87O2tCQUFVZDt3QkFBd0VHLEdBSHpGOEMsV0FHeUY5QyxHQUFlLE9BQUEsV0FGakdVLFNBRWtGVixHQUFxQjsrQkFBbkMsT0FBUyxXQUFuRUgsR0FIakJpRCxVQUdpRjtVQUE1QyxXQUFBLHlCQURyQ2Y7VUFDc0I7VUFBQTtTQUErRjtTQUovR0k7SUFLSCxPQUFBLHVCQURIeEIsVUFGQWI7R0FHZ0I7WUFFbEJpRCxPQUFPbEQsR0FBRWdELEtBQUl0QztJQUNmO0tBQUl1QyxZQURPRDtLQUVPLFFBQUE7S0FBUG5DO0tBQVBaO0tBQ0FpQyxRQUFRO0tBQ1JwQjtPQUFPOztrQkFBVVg7d0JBQTBFQSxHQUgzRjhDLFdBRzJGOUMsR0FBZSxPQUFBLFdBRm5HVSxTQUVvRlYsR0FBcUI7K0JBQXJDLE9BQVcsV0FKakZILEdBQ0xpRCxVQUdpQjlDLEdBQWtFO1VBQTlDLFdBQUEseUJBRHJDK0I7VUFDc0I7VUFBQTtTQUFpRztTQUo1R3hCO0lBS1IsT0FBQSx1QkFESEksVUFGQWI7R0FHZ0I7WUFFZGtELFNBQVNuRCxHQUFFZ0Q7SSxZQUVmLE9BQUEsbUJBRmVBO1FBR1ZJLGNBQUxqRDtrQkFDeUI2QyxLQUN6QixPQURBLFdBSmFoRCxHQUlZZ0QsS0FEekI3QyxHQUVPO0lBRFAsV0FKSWdELFNBQVNuRCxHQUFFZ0QsS0FHVkk7SUFDZ0IsT0FBQTs7WUFHckJDLFFBQVFyRCxHQUFFZ0QsS0FBSU07SUFDaEI7S0FBa0IsUUFBQTtLQUFQekM7S0FBUFo7S0FDQWlDLFFBQVE7S0FDWjtLQU9JLE9BQUEsMkJBQVljLEtBQUk3QyxHQUFLLFdBQUxBLEdBQUo2QyxLQUFpQixTQVZqQk07S0FHWnhDO09BQ0Y7O2tCQUNPc0M7d0JBR0szQixHQUFLLE9BQUEsV0FQUlosU0FPR1ksR0FBVzsrQkFEc0IsT0FkekMwQixTQU9JbkQsR0FBRWdELEtBS0hJLEdBRXNEO1VBQXRELFdBQUEseUJBTExsQjtVQUlHO1VBQUE7U0FHSTs7SUFHSixPQUFBLHVCQVRIcEIsVUFGQWI7R0FXZ0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQVlsQnNELGlCQUFldkQsR0FBRXdEO0lBQ1gsSUFBSnREO0lBQ1Esb0JBSkssT0FBQSxXQUVBRjtJQUVqQiwrQkFESUU7SUFDSixPQUFBLDhCQUVPQyxHQUFLLE9BQUxBLEVBQXNDLEdBSjFCcUQ7R0FLWDtZQUVOQyxRQUFPQyxJQUFHMUQsR0FBRTJEO0lBRWQ7S0FBSWhELGNBQWMsV0FGTlg7S0FLUlk7S0FHYyxRQUFBO0tBQVBDO0tBQVBaO0tBZ0NBLE9BQUEsc0JBeENVMEQ7S0FVVjdDO09BQ0Y7O2tCQUNPWDtVQUNGLEtBQUcsb0JBWE5RO1dBQUFBLGFBaUNnQixXQW5DUlg7V0FxQ0gsV0E3QkVhLFNBSUZWO1dBeUJBOztzQkFoQ0xTO3dCQVlZRyxpQkFBQUEsVUFMUFosR0FRRTtVQUVXLElBQVBhLGFBVk5iO1VBUExTLGlCQWlCV0k7O1dBR0gsR0FBRyxvQkF2QlhMLGFBR0FDO2VBdUJjVCxJQU5IYTtXQWpCWEo7V0FIQUQsYUE0QnFCLFdBOUJiWDtXQStCRSxPQUFBLFdBdkJIYSxTQW9CT1Y7VUFHRTtVQVBULG9CQXRCUFE7VUFzQk87U0FlRDs7S0FJUyxPQUFBLHVCQWpDZkcsVUFGQWI7SUFtQ2UsT0FBQSxpQkEzQ1Z5RCxJQTJDQSxrQkEzQ0tDO0dBMkM2QjtZQUl6Q0MsT0FBS0Q7SUFDRyxvQyxZQURIQTs7R0FDMEI7WUFNL0JFLFFBQU9ILElBQUdDO0lBQ1o7S0FBa0IsUUFBQTtLQUFQOUM7S0FBUFo7S0FDQWlDLFFBQVE7S0FRUixPQUFBLHNCQVZReUI7S0FHUjdDO09BQ0Y7O2tCQUNPSTt3QkFHS08sR0FBSyxPQUFBLFdBUFJaLFNBT0dZLEdBQVc7K0JBRHNCLE9BRnRDUCxFQUV1QztVQUF2QyxXQUFBLHlCQUxMZ0I7VUFJRztVQUFBO1NBR0k7O2tCQUcyQy9CO0tBQzNDOztRQUFBLGlCQWJGdUQsSUFZNkN2RCxHQUMvQix1QkFWbkJXLFVBRkFiO0tBWU8sT0FBQTtJQUFxQzt5QkFEWCxPQUFhLGtCQVp0QzBELEdBWWdDO0lBQTVDLFdBQUEseUJBVkl6QjtJQVU4QyxPQUFBO0dBQ0Y7WUFFOUM0QixRQUFPSixJQUFHMUQsR0FBRTJEO0lBQ2Q7S0FBa0IsUUFBQTtLQUFQOUM7S0FBUFo7S0FDQWlDLFFBQVE7S0FPUixPQUFBLHNCQVRVeUI7S0FHVjdDO09BQ0Y7O2tCQUNPWDt3QkFFaURzQixHQUFLLE9BQUEsV0FOcERaLFNBTStDWSxHQUFXOytCQUF0QixPQUFNLFdBUHpDekIsR0FLSEcsR0FFeUM7VUFBekMsV0FBQSx5QkFMTCtCO1VBSUc7VUFBQTtTQUVJOztrQkFHK0MvQjtLQUMvQzs7UUFBQSxpQkFaRnVELElBV2lEdkQsR0FDbkMsdUJBVG5CVyxVQUZBYjtLQVdPLE9BQUE7SUFBcUM7eUJBRFgsT0FBRSxXQVgzQkQsR0FXMkIsa0JBWHpCMkQsSUFXa0M7SUFBaEQsV0FBQSx5QkFUSXpCO0lBU2tELE9BQUE7R0FDTjtZQUU5QzZCLFFBQU9MLElBQUdNLElBQUdMO0lBQ2Y7S0FBa0IsUUFBQTtLQUFQOUM7S0FBUFo7S0FDQWlDLFFBQVE7S0FRd0MsT0FBQSxzQkFWckN5QjtLQVV1QixPQUFBLHNCQVYxQks7S0FVUjtPQUFBO2NBQU8seUJBQVloRSxHQUFFRyxHQUFLLFdBQVBILEdBQUVHLEdBQVc7S0FQaENXO09BQ0Y7OztVQUNFLElBQVNYLGNBQUhIO1VBQ0gsY0FFT3lCLEdBQUssT0FBQSxXQVBSWixTQU9HWSxHQUFXOytCQURzQixPQUN0QyxXQUhDekIsR0FBR0csR0FFcUM7VUFBekMsV0FBQSx5QkFMTCtCO1VBSUc7VUFBQTtTQUdLOztrQkFHdUQvQjtLQUN4RDs7UUFBQSxpQkFiRnVELElBWTBEdkQsR0FDNUMsdUJBVm5CVyxVQUZBYjtLQVlPLE9BQUE7SUFBcUM7O0tBREEsV0FBQSxrQkFaakMwRDtLQVlpQyxPQUFBLFdBQVgsa0JBWnpCSztJQVk2QztJQUF6RCxXQUFBLHlCQVZJOUI7SUFVMkQsT0FBQTtHQUNmO1lBRTlDK0IsV0FBVVAsSUFBRzFELEdBQUVrRSxHQUFFUDtJQUNuQjtLQUFrQixRQUFBO0tBQVA5QztLQUFQWjtLQUNBaUMsUUFBUTtLQUMwSCxNQUFBLHNCQUhuSHlCO0tBR2Y3QztPQUFPOztrQkFBWVg7K0JBQWdFLGVBQTNELFdBRmpCVSxTQUVZVixPQUF1RzsrQkFBN0MsT0FBTSxXQUh4RUgsR0FHUUcsR0FBNkQ7VUFBekMsV0FBQSx5QkFEdkMrQjtVQUN3QjtVQUFBO1NBQXdHOztLQUNoSS9CLElBQUksa0JBSld3RDs7S0FLMkI7TUFFakM7O1NBQUEsaUJBUERELElBSVJ2RCxHQUdxQix1QkFKckJXLFVBRkFiO01BTVMsT0FBQTs7S0FFQTs7UUFBQSxpQkFURHlELElBQUtRLEdBU1EsdUJBTnJCcEQsVUFGQWI7S0FRUyxPQUFBO0lBQXFDO3dCQUpiLE9BQVMsV0FML0JELEdBSVhHLEdBQ29DO0lBQXhDLFVBQUEseUJBSEkrQjtJQUcwQyxPQUFBO0dBSUk7WUFFaERpQyxTQUFRVCxJQUFHMUQsR0FBRWtFLEdBQUVQO0lBQ2pCO0tBQWtCLFFBQUE7S0FBUDlDO0tBQVBaO0tBQ0FpQyxRQUFRO0tBQzJILE1BQUEsc0JBSHRIeUI7S0FHYjdDO09BQU87O2tCQUFZWDs7V0FBZ0UsWUFBcUM7ZUFBdEJBO1dBQUssT0FBQSxXQUZoR1UsU0FFMkZWO1VBQXlCOzhCQUE5QyxPQUFNLFdBSDFFSCxHQUdVRyxHQUE2RDtVQUF6QyxVQUFBLHlCQUR2QytCO1VBQ3dCO1VBQUE7U0FBeUc7OztLQUMvRTtNQUV6QztPQUROL0I7T0FDTTtTQUFBLGlCQU5IdUQsSUFLSHZELEdBQ2tCLHVCQUhyQlcsVUFGQWI7TUFLUyxPQUFBOztLQUVBOztRQUFBLGlCQVJIeUQsSUFBS1EsR0FRVSx1QkFMckJwRCxVQUZBYjtLQU9TLE9BQUE7SUFBcUM7d0JBSmIsT0FBRSxXQUoxQkQsR0FJMEIsa0JBSnRCMkQsSUFJK0I7SUFBaEQsVUFBQSx5QkFGSXpCO0lBRWtELE9BQUE7R0FJSjtZQUVoRGtDLFNBQU9wRSxHQUFFMkQ7SUFDWDtLQUFJZCxlQUFlLGtCQURSYztLQUVPLFFBQUE7S0FBUDlDO0tBQVBaO0tBQ0FpQyxRQUFRO0tBVVIsTUFBQSxzQkFiT3lCO0tBSVA3QztPQUNGOztrQkFDT1g7VUFDRixJQUFJMkMsSUFOUEQ7VUFBQUEsY0FLSzFDO3VCQUtLc0IsR0FBSyxPQUFBLFdBVFJaLFNBU0dZLEdBQVc7OEJBRHNCLE9BQ3RDLFdBWEF6QixHQU1BRyxHQUNFMkMsR0FHeUM7VUFBM0MsVUFBQSx5QkFQTFo7VUFNRztVQUFBO1NBR0k7O0lBR0YsT0FBQSx1QkFYTHBCLFVBRkFiO0dBYWtCO1lBRXBCb0UsU0FBU3JFLEdBQUVVLEdBQUVpRDtJQUNmLE9BOVFFdkI7c0JBOFFXakMsR0FBSyxPQUFJLFdBRFhILEdBQ0VHLEdBQVMsa0JBRFB3RCxJQUNnQixHQURsQmpEO0dBQ3FCO1lBRWhDNEQsVUFBU1osSUFBR3BCLElBQUc0QjtJQUNqQixPQUFXLGlCQURBUixJQUFNUSxHQS9MZm5CLFFBK0xZVCxJQUFHNEI7R0FDVTtZQUV6QkssU0FBUWIsSUFBRzFELEdBQUVrRSxHQUFFeEQ7SUFDakIsT0FBVyxpQkFERGdELElBQUtRLEdBM0xiaEIsT0EyTFdsRCxHQUFFa0UsR0FBRXhEO0dBQ1U7WUFFckI4RCxXQUFTeEUsR0FBRWdEO0ksWUFFZixPQUFBLG1CQUZlQTtRQUdWSSxjQUFMakQ7aUJBQ3lCNkMsS0FDekIsT0FEQSxXQUphaEQsR0FJWWdELEtBRHpCN0MsR0FFTztJQURQLFVBSklxRSxXQUFTeEUsR0FBRWdELEtBR1ZJO0lBQ2dCLE9BQUE7O1lBR3JCcUIsVUFBU2YsSUFBRzFELEdBQUVnRCxLQUFJMEI7SUFDcEI7O0tBQUlmO09BQUksZ0NBQVdYLEtBQUk3QyxHQUFLLFdBQUxBLEdBQUo2QyxLQUFpQixRQURoQjBCO0tBRUYsUUFBQTtLQUFQN0Q7S0FBUFo7S0FDQWlDLFFBQVE7S0FRUixNQUFBLHNCQVZBeUI7S0FHQTdDO09BQ0Y7O2tCQUNPc0M7dUJBR0szQixHQUFLLE9BQUEsV0FQUlosU0FPR1ksR0FBVzs4QkFEc0IsT0FmekMrQyxXQU9ReEUsR0FBRWdELEtBTVBJLEdBRXNEO1VBQXRELFVBQUEseUJBTExsQjtVQUlHO1VBQUE7U0FHSTs7aUJBRzREL0I7S0FDNUQ7O1FBQUEsaUJBZEF1RCxJQWE0RHZELEdBQ2hELHVCQVZuQlcsVUFGQWI7S0FZTyxPQUFBO0lBQXFDO3dCQURYLE9BcEIvQnVFLFdBT1F4RSxHQUFFZ0QsS0Fhb0Msa0JBWmhEVyxJQVl5RDtJQUE3RCxVQUFBLHlCQVZJekI7SUFVK0QsT0FBQTtHQUNuQjtZQUU5Q3lDLEtBQU1qQixJQUFHMUQsR0FBRTRFLElBQ2IsT0FwR0VkLFFBbUdNSixJQUFHMUQsR0FBRTRFLElBQ0M7WUFFWkMsS0FBTW5CLElBQUcxRCxHQUFFNEUsSUFBR0U7aUJBR29EQyxJQUFHQyxJQUFNLFdBQVRELElBQUdDLElBQWM7SUFBakQ7V0FBQSwwQ0FBb0IsU0FBSyxTQUhoREosSUFBR0U7SUFHb0IsT0F6R2xDaEI7YUFzR01KOztjQUdFLElBQVVzQixlQUFKRDtjQUFXLE9BQUEsV0FIaEIvRSxHQUdLK0UsSUFBSUM7YUFBZTs7R0FBMEQ7WUFFM0ZDLEtBQU12QixJQUFHMUQsR0FBRTRFLElBQUdFLElBQUdJO2lCQUN3REgsSUFBR0MsSUFBR0csSUFBSyxXQUFYSixJQUFHQyxJQUFHRyxJQUFpQjtJQUF2RDs7T0FBQSwwQ0FBb0IsU0FBSyxTQUR2RFAsSUFBR0UsSUFBR0k7SUFDd0IsT0E1R3pDcEI7YUEyR01KOztjQUNFLElBQWN5QixlQUFKSCxlQUFKRDtjQUFlLE9BQUEsV0FEcEIvRSxHQUNLK0UsSUFBSUMsSUFBSUc7YUFBa0I7O0dBQW1FO1lBRTNHQyxLQUFNMUIsSUFBRzFELEdBQUU0RSxJQUFHRSxJQUFHSSxJQUFHRztpQkFDNEROLElBQUdDLElBQUdHLElBQUdHLElBQUssV0FBZFAsSUFBR0MsSUFBR0csSUFBR0csSUFBcUI7SUFBOUQ7O09BQUE7d0NBQW9CLFNBQUssU0FEOURWLElBQUdFLElBQUdJLElBQUdHO0lBQzRCLE9BL0doRHZCO2FBOEdNSjs7Y0FDRSxJQUFrQjRCLGVBQUpILGVBQUpILGVBQUpEO2NBQW1CLE9BQUEsV0FEeEIvRSxHQUNLK0UsSUFBSUMsSUFBSUcsSUFBSUc7YUFBcUI7O0dBQTZFO1lBRTVIQyxLQUFNN0IsSUFBRzFELEdBQUU0RSxJQUFHRSxJQUFHSSxJQUFHRyxJQUFHRztpQkFDZ0VULElBQUdDLElBQUdHLElBQUdHLElBQUdHLElBQUssV0FBakJWLElBQUdDLElBQUdHLElBQUdHLElBQUdHLElBQXlCO0lBQXJFOztPQUFBO3dDQUFvQixTQUFLLFNBRHJFYixJQUFHRSxJQUFHSSxJQUFHRyxJQUFHRztJQUNnQyxPQWxIdkQxQjthQWlITUo7O2NBQ0U7ZUFBc0IrQjtlQUFKSDtlQUFKSDtlQUFKSDtlQUFKRDtjQUF1QixPQUFBLFdBRDVCL0UsR0FDSytFLElBQUlDLElBQUlHLElBQUlHLElBQUlHO2FBQXdCOztHQUF1RjtZQUU3SUMsS0FBTWhDLElBQUcxRCxHQUFFNEUsSUFBR0UsSUFBR0ksSUFBR0csSUFBR0csSUFBR0c7aUJBQ29FWixJQUFHQyxJQUFHRyxJQUFHRyxJQUFHRyxJQUFHRyxJQUFLLFdBQXBCYixJQUFHQyxJQUFHRyxJQUFHRyxJQUFHRyxJQUFHRyxJQUE2QjtJQUE1RTs7T0FBQTs7a0NBQW9CLFNBQUs7O1NBRDVFaEI7U0FBR0U7U0FBR0k7U0FBR0c7U0FBR0c7U0FBR0c7SUFDb0MsT0FySDlEN0I7YUFvSE1KOztjQUNFO2VBQTBCa0M7ZUFBSkg7ZUFBSkg7ZUFBSkg7ZUFBSkg7ZUFBSkQ7Y0FBMkIsT0FBQSxXQURoQy9FLEdBQ0srRSxJQUFJQyxJQUFJRyxJQUFJRyxJQUFJRyxJQUFJRzthQUEyQjs7R0FBaUc7WUFTOUpDLE9BQVFuQyxJQUFHQyxHQUFFM0Q7SUFDZjtLQUFrQixRQUFBO0tBQVBhO0tBQVBaO0tBQ0FpQyxRQUFRO0tBUVIsTUFBQSxzQkFWU3lCO0tBR1Q3QztPQUNGOztrQkFDT1g7dUJBR0tzQixHQUFLLE9BQUEsV0FQUlosU0FPR1ksR0FBVzs4QkFEc0IsT0FDdEMsV0FSTXpCLEdBS05HLEdBRXlDO1VBQXpDLFVBQUEseUJBTEwrQjtVQUlHO1VBQUE7U0FHSTs7aUJBRytDL0I7S0FDMUQ7TUFBMEMsTUFBQSx1QkFWdENXLFVBRkFiO01BWU87UUFBQTs7VUFiRHlEO1VBYWE7O21DO1lBRG1DdkQ7O0tBQy9DLE9BQUE7SUFBeUQ7d0JBRC9CLE9BQUUsV0FaeEJILEdBWXdCLGtCQVoxQjJELElBWW1DO0lBQWhELFVBQUEseUJBVkl6QjtJQVVrRCxPQUFBO0dBQ2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUEvY2xFbkM7UUFLQUs7UUFNQUs7UUFnREFVO1FBVUFFO1FBS0FHO1FBT0FJO1FBV0FHO1FBc0RBUTtRQVhBRjtRQWJBRDtRQUxBRDtRQWdEQU07UUFMQUQ7UUFnQkFHO1FBTEFEO1FBV0FFO1FBcUJBRztRQU9BRztRQWNBRztRQXhIQXBCO1FBTEFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UUErVkE2RDtRQTFNQXRDO1FBT0FFO1FBK0NBRztRQW9DQUc7UUFkQUQ7UUE2QkFHO1FBV0FFO1FBVUFDO1FBaUJBQztRQUdBQztRQUdBQztRQVVBRTtRQWdCQUU7UUFHQUU7UUFLQUk7UUFHQUc7UUFHQUc7UUFHQUc7UUFuSUE3Qjs7O0U7Ozs7Ozs7Ozs7OztHRXRUUTs7Ozs7SUFBQTtZQW1CUmlDLE9BQU9DLEdBQVNDLEdBQUksT0FBYkQsSUFBU0MsVUFBUztZQUV6QkMsU0FBUUYsR0FBU0MsR0FBSSxPQUFiRCxLQUFTQyxVQUFVO1lBRTNCRSxTQUFRSCxHQUFTQyxHQUFJLE9BQWJELE1BQVNDLFVBQVU7WUFFM0JHLFNBQU9KLEdBQVNDLEdBQUksT0FBYkQsTUFBU0MsVUFBUztZQUV6QkksU0FBT0wsR0FBU0MsR0FBSSxPQUFKQSxJQUFURCxVQUFrQjtZQUV6Qk0sU0FBUU4sR0FBU0MsR0FBSSxPQUFKQSxLQUFURCxVQUFtQjtPQUUzQk87WUFFQUMsTUFBT1IsR0FBU0MsR0FBSSxPQUFiRCxNQUFTQyxVQUFTO1lBRXpCUSxJQUFLVCxHQUFTQyxHQUFJLE9BQUpBLEtBQVRELElBQUFBLElBQVNDLEVBQTJCO1lBRXpDUyxJQUFLVixHQUFTQyxHQUFJLE9BQWJELEtBQVNDLElBQVRELElBQVNDLEVBQTJCO0dBbkJOO0lBQUE7O09BQ25DRjtPQUVBRztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFNQUM7SUFIVTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BR1ZBOzs7Ozs7OztZQU1BQyxRQUFPWixHQUFXQyxHQUFZLE9BQXZCRCxNQUFXQyxVQUEwQjtHQUhwQztJQUFBOzs7Ozs7Ozs7T0FHUlc7SUE5QkFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDO0lBRUFDOzs7Ozs7O09BbEJBVDtPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQztPQUVBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDUk47O0lBaUg4QkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFqSDlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQTRESUM7SUFDRUM7SUFDREM7OztJQUdBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7SUFDRCxHQVZFUCxTQUFVUSxNQUFWUixRQUFBUyxVQUFVRCxjQUFWQztJQVVGLFlBUmFDLGdCQUFYQyxXQUFXRCxnQkFBWEM7SUFRRjtTQVBrQkMsZ0JBQWhCQyxnQkFBZ0JEOztTQUFoQkMscUNBQTJCLFNBQUk7b0JBU2pDQztLQUNGLEdBUEdWO1VBc0JDVyxNQXRCRFgsbUJBc0JDVzs7T0FaSTtRQUZPQyxPQWNYRDs7bUJBWFd4QztXQUNILFVBREdBO2dFQUVlO1dBQ1g7VUFBSztRQUxkMEMsZUFDRixpQ0FGT0Q7UUFTTEU7VUFSQUQ7O2FBU3lDOzs7V0FFbkMsSUFBWUUsa0JBQU5DO1dBQTBDLE9BQUE7eUNBSHRERixtQkFHWUUsTUFBTUQ7VUFBa0Q7T0FBeEUsaUNBWlNIO2lDQVNMRTs7O1dBTUFHLElBRE5OLDZCQUNNTTs7aUJBRE5OO1VBR0FPOzs7VUFBQUE7Y0FnQkVDLGtCQUFnQkM7TUFDbEIsS0F4Q0RsQixpQkF5Q1csT0FGUWtCO1VBWERDLElBNUJsQm5COzBCQTRCa0JtQjs7bUJBQUFBOytCQUFBQTsrQkFBQUE7NEJBQUFBLHlCQUFBQTtLQWNhO0tBT2hDLEdBMUJFSDtrQkFBQUE7O1dBNEJxQkk7dUJBQUFBOzswQkExRHRCekIsb0JBbUR5Qkg7U0FOZjZCO1NBQVRDLFNBQ0VMOzs7U0FET0ksaUJBN0NWMUI7U0E2Q0MyQixTQUNFTDs7OztRQURPSSxpQkE3Q1YxQjtRQTZDQzJCLFNBQ0VMOzs7TUFXTTtPQVpSTSxXQUNFTjtPQURPSSxpQkE3Q1YxQjtPQTZDQzJCLFNBQUFDO2NBNUNBbEI7VUFpRUFtQixRQXZERmhCOztNQTBEcUQsVUFBQSwrQkFwRW5ESDtNQVJKO09BQ1MsMENBaUJQRztPQWhCQSxJQUFBOzs7Ozs7O01BMEVlO09BQUE7T0FBSixNQUFBO09BSFRnQixRQUdHLHVCQTFETGhCOztLQTREaUQ7TUFBQSxVQUFBO01BQUppQjtNQUExQ0M7TUFDSyxNQUFBO0tBQ1Y7T0FBVyx3QkE1QlBKO09BNEIyQix3QkFQM0JFOztRQTVERHpCO1VBc0VJNEIsWUF0RUo1QjtNQXNFaUIscUJBQXNCLHdCQUFuQzRCOzs7Ozs7Ozs7Ozs7Ozs7UUFwRUoxQjtNQTZFa0MsSUFBOUIyQixNQTdFSjNCLHFCQTZFa0MsVUFBOUIyQjs7O1FBeENNUDtVQTJDTlEsaUJBM0NNUjtNQTRDVDt3QkFBaUQsd0JBRDlDUTs7O01BR0csSUFBU1YsY0FBSFc7O2VBQStCLHdCQUEvQkEsSUFBNkMsd0JBQTFDWDtLQUF3RDtLQUEzRSxpQ0E1RkloQjtjQWY0QjRCLFVBNEdwQkM7TUFDVixhQUdPYixHQUFLLFdBQUssd0JBQVZBLElBQTBCOzBCQURwQixTQUFJO01BRGYsVUFBQSxzQkFBd0IsK0JBRmhCYTtNQUlSLE9BQUE7S0FBZ0M7S0FHekIsSUFBTEM7Y0FERkM7TUFHQSxpQkFGRUQ7T0FJRyxHQUFBLFdBckdMMUIsMkJBbEI0QndCO1FBbUgxQkU7O1FBT0Usb0JBbkN1Q1Isc0NBdkZmTTtRQW1IMUJFO1FBU0U7OzJCQVRGQTtLQVVtQjtLQUd2Qjs7UUFBQTs7V0FDSTs7Y0FJd0IsZ0NBbkIxQkMscUJBbUJzRDs7OzRDQW5CdERBLHFCQW9CeUM7OztjQUdoQyxVQXZCVEE7Y0F1QlMsVUFBQTs7O2lCQXhJYjtrQkFEMkJDO2tCQUMzQjs7cUJBRzJCLE1BQUE7O29CQUFZO2tCQXVJdkJDOztxQkF6RFpaO3FCQWxGdUJXO3FCQUFLSjtxQkFHcEI7Ozs7aUJBVlo7a0JBRG9CTTtrQkFDcEI7O3FCQUcyQixNQUFBOztvQkFBWTtrQkErSXZCRDs7cUJBekRaWjtxQkExRmdCYTtxQkFRWU47cUJBTHBCOzs7O2lCQWxCWjtrQkFEd0JPO2tCQUN4Qjs7cUJBRzJCLE1BQUE7O29CQUFZO2tCQStKdkJGOztxQkF6RFpaO3FCQTFHb0JjO3FCQXdCUVA7cUJBckJwQjs7OztpQkFNWjtrQkFEb0JRO2tCQUNwQjs7cUJBRzJCLE1BQUE7O29CQUFZO2tCQXVKdkJIOztxQkF6RFpaO3FCQWxHZ0JlO3FCQWdCWVI7cUJBYnBCOzs7O2lCQWxCWjtrQkFEb0JTO2tCQUNwQjs7cUJBRzJCLE1BQUE7O29CQUFZO2lDQURrQ3ZFLEdBQUssT0FBTEEsRUFBTTt3Q0FBekIsYUFBWTtrQkF3S2xEbUU7O3FCQXpEWlo7cUJBbEhnQmdCO3FCQWdDWVQ7cUJBN0JwQjs7Ozs7a0JBZldVOzs7cUJBTVg7OEJBQUE7aUNBQ0k7eUJBQ0hDOzRCQUFVLDhCQUFWQTs7O21DQUFBQTtvQkFBMEU7O3dDQUxqQyxhQUFFO2tCQW9MeENOOztxQkF6RFpaO3FCQTlIbUJpQjtxQkE0Q1NWO3FCQXpDcEI7OztjQTZMQSxPQUFBLG9CQTdEbUNOLEdBb0QvQlc7O1dBVUg7VUFBRTs7UUFsSVp4QztNQXNJRztPQUZDK0MsYUFwSUovQzs7O1VBdUlPLFdBSEgrQztVQUdHO1NBQ1E7T0FGWixNQUFBOzs7O01BS0YsS0ExSUQ5QyxpQkFnSlc7VUFMSCtDLG9CQTNJUi9DOztPQThJVyxXQUhIK0M7T0FHRztNQUNRO01BRlosVUFBQTs7S0FHTTtLQVBoQjtRQS9HSTVCO29CQUFBQTs7OztRQS9HRjtTQXdPOEI2QjtTQTNPbkJDLE1BMk9tQkQ7OztZQXZPM0Isc0JBQ0kvQjs7YUFDNEM7O2NBQUE7Z0JBQUE7eUNBQWM7Y0FBcEIsTUFBQTtjQUFyQixNQUFBLGtDQURqQkE7YUFDc0MsT0FBQTs7WUFEUTthQUFoQ2tCO2FBQWdDO2VBQUEsa0NBQWMsd0JBQTlDQTthQUEwQixNQUFBO2FBQXJCLE1BQUEsa0NBQW5CbEI7WUFBd0MsT0FBQTtXQUN1QztTQUh0RixNQUFBLGlDQUhXZ0M7U0EyTzZDO1dBQUE7YUF4T3hEO1FBd09xQyxTQUFVOztnQkFDZkMsZ0JBQU8sU0FBUEE7OztXQUVwQkM7T0FBTSxTQUFOQTs7O1dBREVoQjtPQUFNLFNBQVUsOEJBQVMsd0JBQXpCQTs7OztNQUhOO3lCQUttQixtQkFBVTtLQUF2QyxvQkFwRktOO0tBb0ZMLE9BcEZLQSxJQXFGRjtHQUFBO1lBRUR1QjtJQUNFdkQ7SUFDREM7O0lBRUFZO0lBQ0FYO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0RPO0lBQ0YsR0FYSWQsU0FBVVEsTUFBVlIsUUFBQVMsVUFBVUQsY0FBVkM7SUFXSixZQVRlQyxnQkFBWEMsV0FBV0QsZ0JBQVhDO0lBU0osT0E1S0VaO2tCQWlLRVU7Y0FDRFI7a0JBQ0NVO2NBQ0RFO2NBQ0FYO2NBQ0FDO2NBQ0FDO2NBQ0FDO2NBQ0FDO2NBQ0FDOzthQUNETztHQWFHO1lBRUgwQztJQUNFeEQ7SUFDREM7O0lBRUFZO0lBQ0FYO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0RPO0lBQ0YsR0FYSWQsU0FBVVEsTUFBVlIsUUFBQVMsVUFBVUQsY0FBVkM7SUFXSixZQVRlQyxnQkFBWEMsV0FBV0QsZ0JBQVhDO0lBcUJGLFVBQUEsK0JBYkFHO0lBYUEsT0FsTkFmO2tCQTJMRVU7Y0FDRFI7a0JBQ0NVO2NBQ0RFO2NBQ0FYO2NBQ0FDO2NBQ0FDO2NBQ0FDO2NBQ0FDO2NBQ0FDOzs7R0Fjc0I7WUFFdkJrRCxJQUFJbkIsR0FBSSxPQXBEUmlCLDhDQW9ESWpCLEdBQXFCOzs7eUJBcE56QnZDLGFBZ0tBd0QsaUJBMEJBQyxTQTBCQUM7Ozs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7OztZQ3hTQUMsTUFBTUM7SUFDUjtLQUFXLFFBQUE7S0FBSjVCO0tBQUg2QjtLQUN5QixNQUFBLG9CQUR0QjdCO0tBQ0g4QixLQUFLLDJDQUZERjtJQUdSLG9CQUEyQixPQUEzQixzQ0FESUUsSUFDK0M7SUFBbkQsb0JBRklEO0lBRUosT0FGSUE7R0FHSDtZQUVDRSxlQUFXLE9BTlhKLFVBTW1CO1lBRW5CSztJQUFTO2VBR0w7O2dCQUE2Qjs7O0dBQzFCO0dBRUYsb0JBTkxBO1lBUUFDLGFBQWExQjtJQUFJLDJCQUFxQixnQ0FBekJBOztHQUFzQztnQkFJL0MyQjtJQUpKRDtJQUFBQSxhQU1lLCtCQUZYQztJQUVGLE9BQUE7R0FDK0I7O29DQXZCakNQLE9BTUFJOzs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7OztJRU5BMkI7Ozs7O1lBRUFDLE1BQU1yQzs7S0FBeUIsT0FBckI7Y0FGVm9DLGFBRStCLDBDQUF6QnBDO0lBQThDO0lBQWhDLE9BQUE7R0FBaUM7WUFFckRzQyxRQUFRdEM7SSxZQUNBO1FBQ0g5RTtJQUFLLFdBQUssV0FGUDhFLEdBRUg5RTs7WUFFTHFILFdBQVdDLFlBQVlDLGFBQWFDLFNBQVFDO0lBQzlDO0tBQUlDO0tBQ08sUUFBQTtLQUFKbEU7S0FBSDZCO0lBQ0osU0FBSXNDO0tBQVksT0FBQSxpQ0FGWkQ7SUFFd0Q7SUFDNUQsb0JBRklyQyxHQUNBc0M7a0JBUzJCQyxJQVQzQkQsV0FXUSxvQkFaTG5FLEdBVXdCb0UsS0FHbkIsYUFBWTtJQUhqQjtLQUFBLE9BQUE7S0FIUyxPQWJkUiwyQkFJb0NJO0tBUXRCLE9BWmRKLDJCQUl1Qkc7S0FPckI7T0FBQTs4QkFQMENFLFFBQWpDSDtJQUNUSSxRQUtGO0lBYUYsT0FqQklyQztHQWlCSDtZQUVDd0MsYUFBYS9DLEdBQUU5RTtJQUNqQixjQUlNOEg7S0FGSixPQUVJQSxnQkFEZ0Isd0JBQ1gsbUJBQUxBO0lBQWdCO3lCQUhULE9BQ1gsV0FIYWhELEdBQUU5RSxHQUVEO0lBQ2QsT0FBQTtHQUVvQjtZQUVwQitILGVBQWVqRCxHQUFFOUU7SUFDbkIsY0FFTzhIO0tBQ2tCOztRQUFBLGdDQUFXLCtCQUQ3QkE7S0FDSDtLQUFBLE9BQUE7SUFDYTt5QkFISixPQUNYLFdBSGVoRCxHQUFFOUUsR0FFSDtJQUNkLE9BQUE7R0FFZ0I7WUFFaEJnSSxTQUFTQyxLQUFNeEcsS0FBeUI4RixhQUFhQyxTQUFRQyxRQUFPUztJQUN0RSxHQURpQnpHO1NBQWlCUSxNQUFqQlIsUUFBQTBHLGlCQUFpQmxHOztTQUFqQmtHO0lBQ0Q7S0FBWkM7S0FDQUMsVUFBVTtLQUVWQyxrQkFBa0I7S0FDbEJDLEtBQVU7O0tBRVYsb0JBTEFGO1FBRmFGLGdCQVFVLG9CQUp2Qkc7S0FIQUY7O0lBUWlCO0lBSHJCLG9CQURJRzthQUtJQztLQUNOLEdBVkVKLGNBcUJHLE9BQUE7S0FOSyxJQUFKL0MsSUFBSSxXQWhCRDRDLEtBQStCVixhQUFhQyxTQUFRQztLQUUzRFksU0FjSWhEO0tBR0EsT0FBQTtjQTlETjZCO2NBMkRNN0I7dUJBR0l5QztlQWZSUSxpQkFYRlAsZUEyQmdDLFdBcEJvQ0csU0FtQjFESixJQWRSUztpQ0FoREZyQixhQStDRW9CLGdCQU1JRTtjQVdnQjtJQUNKO0lBRVYsb0IsT0F0Q1JYLGFBd0JNVztJQWNSO0lBQUEsT0FuQklEO0dBb0JGO1lBRUFFLFdBQVdSLEtBQUtWLGFBQWFDLFNBQVFDLFFBQU9TO0lBQzlDO0tBQUlFO0tBQ0FDLFVBQVU7S0FDVkUsS0FBVTs7S0FFVixvQkFIQUY7S0FEQUQ7O0lBS2lCO0lBRnJCLG9CQURJRzthQUlJQztLQUNOLEdBUEVKLGNBZUcsT0FBQTtLQU5LLElBQUovQyxJQUFJLFdBVkM0QyxLQUFLVixhQUFhQyxTQUFRQztLQUVuQ1ksU0FRSWhEO0tBR0EsT0FBQTtjQW5GTjZCO2NBZ0ZNN0I7dUJBR0l5Qzs7Z0JBQ2EsT0FoRHZCQyxlQWdEc0MsV0FkTUcsU0FhbENKLElBVlJTO2VBV2tEO2VBQWxEO2VBQUEsT0FQSUM7Y0FRRTtJQUNVO0lBRVYsb0IsT0EzRFJYLGFBZ0RNVztJQVdSO0lBQUEsT0FmSUQ7R0FnQkY7WUFFQUc7SUFDQVQsS0FDRXhHLFdBRUQ4RixhQUNBQyxTQUNEQyxRQUNBUztJQUNGLEdBTkl6RztTQUFpQlEsTUFBakJSLFFBQUEwRyxpQkFBaUJsRzs7U0FBakJrRztJQU1KO1NBTG1CaEcsaUJBQWZ3RyxlQUFleEc7O1NBQWZ3RztJQUtZO0tBQVpQO0tBQ0FRO0tBQ0FQLFVBQVU7S0FDVkMsa0JBQWtCO0tBQ2xCQyxLQUFVO0tBQ1ZNLFFBQVE7O0tBRVIsb0JBTEFSO1FBUkFGLGdCQWN1QixvQkFMdkJHO1FBUkFLLGNBTUFDO0tBREFSOztJQVVpQjtJQUpyQixvQkFGSUc7YUFPSU87S0FDTixHQVpFVixjQXFCRyxPQUFBO0tBUEssSUFBSi9DLElBQUksV0FyQlY0QyxLQUdDVixhQUNBQyxTQUNEQztLQUlFWSxTQVlJaEQ7S0FHQSxPQUFBO2NBcEhONkI7Y0FpSE03Qjt1QkFHSXlDO2VBaEJSYyxlQWdCUWQsR0FoQlJjO2VBa0JBLDZCQWRBQztlQWNBLE9BUklDO2NBU007SUFDTTthQUVaQztLQXBCSlQsaUJBcUJhO1FBeEJiRixjQWlDRyxPQUFBO2lCQWhDSFE7O01BMkJRLE9BQUE7ZUEvSFYxQixhQStIVSxnQ0F2QlIyQixRQWtCSUU7U0FNR0MsZUFBTGxCO0tBNUJGYyxXQTRCT0k7S0ExQlBWLGlCQWxFRlAsZUE4Rm9DLFdBaENwQ0csU0E4QklKLElBekJGUzt1QkF2R0ZyQixhQXNHRW9CLGdCQW9CSVM7SUFVWTtJQUVWLG9CLE9BekdSbEIsYUFpRk1pQjtJQXdCUjtJQUNBLG9CQWJRQztJQWFSLE9BaENJUjtHQWlDRjtZQUVBVTtJQUFrQkMsT0FBTUMsY0FBYzVCLGFBQWFDLFNBQVFDLFFBQU9TO0lBQ3hELElBQVJrQjtJQUMwQyxPQXRFNUNYO2FBb0VrQlM7YUFBb0IzQjthQUFhQzthQUFRQztzQkFFVkcsSUFBR1c7Y0FEbERhO2tCQUdJQyxLQUhKRDs7ZUFJNkIsT0FBRyxzQ0FKaENBLFVBR0lDO3lCQUNKLFdBTGdFbkIsU0FFakJOLElBQUdXO3lCQUdrQjtjQUFhO2NBQTdELE9BQUE7dUJBL0l0QnJCLGFBK0lFLFdBTHNCaUM7YUFLMkQ7R0FBQztZQUVwRkcsYUFBYUosT0FBUXpIO0ksR0FBQUEsU0FBZVEsTUFBZlIsUUFBQThILGVBQWV0SCxjQUFmc0g7SUFDdkI7S0FBbUMsT0FBbkMsc0NBRHVCQTtJQUNxQztJQUFwQztLLE9BUnRCTixrQkFPYUM7O1lBR2JNLE1BQU9qQyxhQUFhQyxTQUFRQztJQUM5QixPQTdJRUo7MENBNElPRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRGdDLEtBQU1sQyxhQUFhQyxTQUFRQztJQUM3QixPQWhKRUo7MENBK0lNRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV6RGlDLElBQUtuQyxhQUFhQyxTQUFRQztJQUM1QixPQW5KRUo7MENBa0pLRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV4RGtDLE1BQU9wQyxhQUFhQyxTQUFRQztJQUM5QixPQXRKRUo7MENBcUpPRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRG1DLFNBQVVyQyxhQUFhQyxTQUFRQztJQUNqQyxPQXpKRUo7MENBd0pVRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU3RG9DLFVBQVd0QyxhQUFhQyxTQUFRQztJQUNsQyxPQTVKRUo7MENBMkpXRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RHFDLFFBQVN2QyxhQUFhQyxTQUFRQztJQUNoQyxPQS9KRUo7MENBOEpTRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU1RHNDLFVBQVd4QyxhQUFhQyxTQUFRQztJQUNsQyxPQWxLRUo7MENBaUtXRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RHVDLFVBQVd6QyxhQUFhQyxTQUFRQztJQUNsQyxPQXJLRUo7MENBb0tXRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RHdDLFNBQVUxQyxhQUFhQyxTQUFRQztJQUNqQyxPQXhLRUo7MkNBdUtVRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU3RHlDLFNBQVUzQyxhQUFhQyxTQUFRQztJQUNqQyxPQTNLRUo7MkNBMEtVRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU3RDBDLFFBQVM1QyxhQUFhQyxTQUFRQztJQUNoQyxPQTlLRUo7MkNBNktTRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU1RDJDLE1BQU83QyxhQUFhQyxTQUFRQztJQUM5QixPQWpMRUo7MkNBZ0xPRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRDRDLE9BQVE5QyxhQUFhQyxTQUFRQztJQUMvQixPQXBMRUo7MkNBbUxRRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUzRDZDLE1BQU8vQyxhQUFhQyxTQUFRQztJQUM5QixPQXZMRUo7MkNBc0xPRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRDhDLFdBQVloRCxhQUFhQyxTQUFRQztJQUNuQyxPQTFMRUo7MkNBeUxZRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUvRCtDLFVBQVdqRCxhQUFhQyxTQUFRQztJQUNsQyxPQTdMRUo7MkNBNExXRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RGdELFFBQVNsRCxhQUFhQyxTQUFRQztJQUNoQyxPQWhNRUo7MkNBK0xTRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU1RGlELFVBQVduRCxhQUFhQyxTQUFRQztJQUNsQyxPQW5NRUo7MkNBa01XRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RGtELFNBQVVwRCxhQUFhQyxTQUFRQztJQUNqQyxPQXRNRUo7MkNBcU1VRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU3RG1ELFVBQVdyRCxhQUFhQyxTQUFRQztJQUNsQyxPQXpNRUo7MkNBd01XRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RG9ELEtBQU10RCxhQUFhQyxTQUFRQztJQUM3QixPQTVNRUo7MkNBMk1NRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV6RHFELEtBQU12RCxhQUFhQyxTQUFRQztJQUM3QixPQS9NRUo7MkNBOE1NRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV6RHNELE1BQU94RCxhQUFhQyxTQUFRQztJQUM5QixPQWxORUo7MkNBaU5PRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRHVELEtBQU16RCxhQUFhQyxTQUFRQztJQUM3QixPQXJORUo7MkNBb05NRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV6RHdELE9BQVExRCxhQUFhQyxTQUFRQztJQUMvQixPQXhORUo7MkNBdU5RRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUzRHlELE9BQVEzRCxhQUFhQyxTQUFRQztJQUMvQixPQTNORUo7MkNBME5RRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUzRDBELE9BQVE1RCxhQUFhQyxTQUFRQztJQUMvQixPQTlORUo7MkNBNk5RRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUzRDJELE1BQU83RCxhQUFhQyxTQUFRQztJQUM5QixPQWpPRUo7MkNBZ09PRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRDRELE1BQU85RCxhQUFhQyxTQUFRQztJQUM5QixPQXBPRUo7MkNBbU9PRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRDZELEtBQU0vRCxhQUFhQyxTQUFRQztJQUM3QixPQXZPRUo7MkNBc09NRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV6RDhELFFBQVNoRSxhQUFhQyxTQUFRQztJQUNoQyxPQTFPRUo7MkNBeU9TRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU1RCtELGVBQWdCakUsYUFBYUMsU0FBUUM7SUFDdkMsT0E3T0VKOzJDQTRPZ0JFLGFBQWFDLFNBQVFDO0dBQzhCO1lBRW5FZ0UsZUFBZ0JsRSxhQUFhQyxTQUFRQztJQUN2QyxPQWhQRUo7MkNBK09nQkUsYUFBYUMsU0FBUUM7R0FDOEI7WUFFbkVpRSxRQUFTbkUsYUFBYUMsU0FBUUM7SUFDaEMsT0FuUEVKOzJDQWtQU0UsYUFBYUMsU0FBUUM7R0FDOEI7WUFFNURrRSxNQUFPcEUsYUFBYUMsU0FBUUM7SUFDOUIsT0F0UEVKOzJDQXFQT0UsYUFBYUMsU0FBUUM7R0FDOEI7WUFFMURtRSxXQUFZckUsYUFBYUMsU0FBUUM7SUFDbkMsT0F6UEVKOzJDQXdQWUUsYUFBYUMsU0FBUUM7R0FDOEI7WUFFL0RvRSxlQUFnQnRFLGFBQWFDLFNBQVFDO0lBQ3ZDLE9BNVBFSjsyQ0EyUGdCRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVuRXFFLFVBQVd2RSxhQUFhQyxTQUFRQztJQUNsQyxPQS9QRUo7MkNBOFBXRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RHNFLE1BQU94RSxhQUFhQyxTQUFRQztJQUM5QixPQWxRRUo7MkNBaVFPRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRHVFLEtBQU16RSxhQUFhQyxTQUFRQztJQUM3QixPQXJRRUo7MkNBb1FNRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV6RHdFLFFBQVMxRSxhQUFhQyxTQUFRQztJQUNoQyxPQXhRRUo7MkNBdVFTRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU1RHlFLFdBQVkzRSxhQUFhQyxTQUFRQztJQUNuQyxPQTNRRUo7MkNBMFFZRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUvRDBFLE9BQVE1RSxhQUFhQyxTQUFRQztJQUMvQixPQTlRRUo7MkNBNlFRRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUzRDJFLFFBQVM3RSxhQUFhQyxTQUFRQztJQUNoQyxPQWpSRUo7MkNBZ1JTRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU1RDRFLFFBQVM5RSxhQUFhQyxTQUFRQztJQUNoQyxPQXBSRUo7MkNBbVJTRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU1RDZFLFFBQVMvRSxhQUFhQyxTQUFRQztJQUNoQyxPQXZSRUo7MkNBc1JTRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU1RDhFLGFBQWNoRixhQUFhQyxTQUFRQztJQUNyQyxPQTFSRUo7MkNBeVJjRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVqRStFLFFBQVNqRixhQUFhQyxTQUFRQztJQUNoQyxPQTdSRUo7MkNBNFJTRSxhQUFhQyxTQUFRQztHQUM4QjtZQUc1RGdGLFdBQVlsRixhQUFhQyxTQUFRQztJQUNuQztLQUFJQztLQUNPLFFBQUE7S0FBSmxFO0tBQUg2QjtJQUNKLFNBQUlzQztLQUFZLE9BQUEsaUNBRlpEO0lBRXdEO0lBQzVELG9CQUZJckMsR0FDQXNDO2tCQVFTQyxJQUE0QjhFLElBQUlDO0tBQ3BDLDJCQURJL0U7S0FSVEQ7S0FXSyxvQkFaRm5FLE9BU01vRSxRQUE0QjhFLElBQUlDO0tBSXBDO0lBQVk7SUFOTDtLQUFBLE9BN1NkdkYsMkJBb1N5Qkk7S0FRWCxPQTVTZEosMkJBb1NZRztLQU9WLE9BQUEscUNBUCtCRTtJQUMvQkMsUUFLRjtJQWFGLE9BakJJckM7R0FpQkg7WUFNQ3VILE1BQU9yRixhQUFhQyxTQUFRQztJQUM5QixPQTFURUo7MkNBeVRPRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUxRG9GLFdBQVl0RixhQUFhQyxTQUFRQztJQUNuQyxPQTdURUo7MkNBNFRZRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUvRHFGLFVBQVd2RixhQUFhQyxTQUFRQztJQUNsQyxPQWhVRUo7MkNBK1RXRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RHNGLFNBQVV4RixhQUFhQyxTQUFRQztJQUNqQyxPQW5VRUo7MkNBa1VVRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU3RHVGLFlBQWF6RixhQUFhQyxTQUFRQztJQUNwQyxPQXRVRUo7MkNBcVVhRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVoRXdGLG1CQUFvQjFGLGFBQWFDLFNBQVFDO0lBQzNDLE9BelVFSjsyQ0F3VW9CRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV2RXlGLGtCQUFtQjNGLGFBQWFDLFNBQVFDO0lBQzFDLE9BNVVFSjsyQ0EyVW1CRSxhQUFhQyxTQUFRQztHQUM4QjtZQUV0RTBGLGFBQWM1RixhQUFhQyxTQUFRQztJQUNyQyxPQS9VRUo7MkNBOFVjRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVqRTJGLGNBQWU3RixhQUFhQyxTQUFRQztJQUN0QyxPQWxWRUo7MkNBaVZlRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVsRTRGLFlBQWE5RixhQUFhQyxTQUFRQztJQUNwQyxPQXJWRUo7MkNBb1ZhRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVoRTZGLGFBQWMvRixhQUFhQyxTQUFRQztJQUNyQyxPQXhWRUo7MkNBdVZjRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVqRThGLFlBQWFoRyxhQUFhQyxTQUFRQztJQUNwQyxPQTNWRUo7MkNBMFZhRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVoRStGLFdBQVlqRyxhQUFhQyxTQUFRQztJQUNuQyxPQTlWRUo7MkNBNlZZRSxhQUFhQyxTQUFRQztHQUM4QjtZQUUvRGdHLFlBQWFsRyxhQUFhQyxTQUFRQztJQUNwQyxPQWpXRUo7MkNBZ1dhRSxhQUFhQyxTQUFRQztHQUM4QjtZQUVoRWlHLFVBQVduRyxhQUFhQyxTQUFRQztJQUNsQyxPQXBXRUo7MkNBbVdXRSxhQUFhQyxTQUFRQztHQUM4QjtZQUU5RGtHLGNBQWVwRyxhQUFhQyxTQUFRb0c7SUFDdEMsT0F2V0V2Ryx5Q0FzV2VFLGFBQWFDLFNBQVFvRztHQUMyQjtZQUUvREMsZ0JBQWlCdEcsYUFBYUMsU0FBUW9HO0lBQ3hDLE9BMVdFdkcseUNBeVdpQkUsYUFBYUMsU0FBUW9HO0dBQzJCO1lBRWpFRSxjQUFldkcsYUFBYUMsU0FBUW9HO0lBQ3RDLE9BN1dFdkcseUNBNFdlRSxhQUFhQyxTQUFRb0c7R0FDMkI7WUFFL0RHLGlCQUFrQnhHLGFBQWFDLFNBQVFvRztJQUN6QyxPQWhYRXZHLHlDQStXa0JFLGFBQWFDLFNBQVFvRztHQUMyQjtZQUVsRUksT0FBUTdGLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQy9DO0ssT0FoVkUyQyxTQXlHQXdCLE9Bc09RckIsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVwRDRJLE9BQVE5RixnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUMvQztLLE9BblZFMkMsU0E0R0F5QixNQXNPUXRCLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ007WUFFbkQ2SSxLQUFNL0YsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDN0M7SyxPQXRWRTJDLFNBK0dBMEIsS0FzT012QixnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRWxEOEksT0FBUWhHLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQy9DO0ssT0F6VkUyQyxTQWtIQTJCLE9Bc09ReEIsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVwRCtJLFVBQVdqRyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNsRDtLLE9BNVZFMkMsU0FxSEE0QixVQXNPV3pCLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFdkRnSixXQUFZbEcsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDbkQ7SyxPQS9WRTJDLFNBd0hBNkIsV0FzT1kxQixnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXhEaUosU0FBVW5HLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ2pEO0ssT0FsV0UyQyxTQTJIQThCLFNBc09VM0IsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV0RGtKLFdBQVlwRyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNuRDtLLE9BcldFMkMsU0E4SEErQixXQXNPWTVCLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFeERtSixXQUFZckcsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDbkQ7SyxPQXhXRTJDLFNBaUlBZ0MsV0FzT1k3QixnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXhEb0osVUFBV3RHLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ2xEO0ssT0EzV0UyQyxTQW9JQWlDLFVBc09XOUIsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV2RHFKLFdBQVl2RyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNuRDtLLE9BOVdFMkMsU0F1SUFrQyxVQXNPWS9CLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ007WUFFdkRzSixTQUFVeEcsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDakQ7SyxPQWpYRTJDLFNBMElBbUMsU0FzT1VoQyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXREdUosT0FBUXpHLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQy9DO0ssT0FwWEUyQyxTQTZJQW9DLE9Bc09RakMsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVwRHdKLFFBQVMxRyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNoRDtLLE9BdlhFMkMsU0FnSkFxQyxRQXNPU2xDLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFckR5SixPQUFRM0csZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDL0M7SyxPQTFYRTJDLFNBbUpBc0MsT0FzT1FuQyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXBEMEosWUFBYTVHLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ3BEO0ssT0E3WEUyQztjQXNKQXVDLFlBc09hcEMsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV6RDJKLFdBQVk3RyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNuRDtLLE9BaFlFMkMsU0F5SkF3QyxXQXNPWXJDLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFeEQ0SixTQUFVOUcsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDakQ7SyxPQW5ZRTJDLFNBNEpBeUMsU0FzT1V0QyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXRENkosV0FBWS9HLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ25EO0ssT0F0WUUyQyxTQStKQTBDLFdBc09ZdkMsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV4RDhKLFVBQVdoSCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNsRDtLLE9BellFMkMsU0FrS0EyQyxVQXNPV3hDLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFdkQrSixXQUFZakgsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDbkQ7SyxPQTVZRTJDLFNBcUtBNEMsV0FzT1l6QyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXhEZ0ssTUFBT2xILGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQzlDO0ssT0EvWUUyQyxTQXdLQTZDLE1Bc09PMUMsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVuRGlLLE1BQU9uSCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUM5QztLLE9BbFpFMkMsU0EyS0E4QyxNQXNPTzNDLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFbkRrSyxZQUFhcEgsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDcEQ7SyxPQXJaRTJDO2NBNlBBeUUsWUF1SmF0RSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXpEbUssT0FBUXJILGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQy9DO0ssT0F4WkUyQyxTQXNSQTRFLE9BaUlRekUsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVwRG9LLFlBQWF0SCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNwRDtLLE9BM1pFMkM7Y0F5UkE2RSxZQWlJYTFFLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFekRxSyxXQUFZdkgsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDbkQ7SyxPQTlaRTJDLFNBNFJBOEUsV0FpSVkzRSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXhEc0ssVUFBV3hILGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ2xEO0ssT0FqYUUyQyxTQStSQStFLFVBaUlXNUUsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV2RHVLLGFBQWN6SCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNyRDtLLE9BcGFFMkM7Y0FrU0FnRixhQWlJYzdFLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFMUR3SyxRQUFTMUgsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDaEQ7SyxPQXZhRTJDLFNBOEtBK0MsT0F3UFM1QyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNNO1lBRXBEeUssTUFBTzNILGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQzlDO0ssT0ExYUUyQyxTQWlMQWdELE1Bd1BPN0MsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVuRDBLLFFBQVM1SCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNoRDtLLE9BN2FFMkMsU0FvTEFpRCxRQXdQUzlDLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFckQySyxRQUFTN0gsZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDaEQ7SyxPQWhiRTJDLFNBdUxBa0QsUUF3UFMvQyxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXJENEssUUFBUzlILGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ2hEO0ssT0FuYkUyQyxTQTBMQW1ELFFBd1BTaEQsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVyRDZLLE9BQVEvSCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUMvQztLLE9BdGJFMkMsU0E2TEFvRCxPQXdQUWpELGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFcEQ4SyxPQUFRaEksZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDL0M7SyxPQXpiRTJDLFNBZ01BcUQsT0F3UFFsRCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXBEK0ssTUFBT2pJLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQzlDO0ssT0E1YkUyQyxTQW1NQXNELE1Bd1BPbkQsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVuRGdMLFNBQVVsSSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNqRDtLLE9BL2JFMkMsU0FzTUF1RCxTQXdQVXBELGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFdERpTCxnQkFBaUJuSSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUN4RDtLLE9BbGNFMkM7Y0F5TUF3RCxnQkF3UGlCckQsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUU3RGtMLGdCQUFpQnBJLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ3hEO0ssT0FyY0UyQztjQTRNQXlELGdCQXdQaUJ0RCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRTdEbUwsU0FBVXJJLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ2pEO0ssT0F4Y0UyQyxTQStNQTBELFNBd1BVdkQsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV0RG9MLE9BQVF0SSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUMvQztLLE9BM2NFMkMsU0FrTkEyRCxPQXdQUXhELGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFcERxTCxZQUFhdkksZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDcEQ7SyxPQTljRTJDO2NBcU5BNEQsWUF3UGF6RCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXpEc0wsZ0JBQWlCeEksZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDeEQ7SyxPQWpkRTJDO2NBd05BNkQsZ0JBd1BpQjFELGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFN0R1TCxXQUFZekksZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDbkQ7SyxPQXBkRTJDLFNBMk5BOEQsV0F3UFkzRCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXhEd0wsT0FBUTFJLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQy9DO0ssT0F2ZEUyQyxTQThOQStELE9Bd1BRNUQsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUVwRHlMLE1BQU8zSSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUM5QztLLE9BMWRFMkMsU0FpT0FnRSxNQXdQTzdELGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFbkQwTCxTQUFVNUksZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDakQ7SyxPQTdkRTJDLFNBb09BaUUsU0F3UFU5RCxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXREMkwsWUFBYTdJLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ3BEO0ssT0FoZUUyQztjQXVPQWtFLFlBd1BhL0QsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV6RDRMLFFBQVM5SSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNoRDtLLE9BbmVFMkMsU0EwT0FtRSxRQXdQU2hFLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFckQ2TCxTQUFVL0ksZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDakQ7SyxPQXRlRTJDLFNBNk9Bb0UsU0F3UFVqRSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXREOEwsU0FBVWhKLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ2pEO0ssT0F6ZUUyQyxTQWdQQXFFLFNBd1BVbEUsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV0RCtMLFNBQVVqSixnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNqRDtLLE9BNWVFMkMsU0FtUEFzRSxTQXdQVW5FLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFdERnTSxjQUFlbEosZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDdEQ7SyxPQS9lRTJDO2NBc1BBdUUsY0F3UGVwRSxnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRTNEaU0sU0FBVW5KLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ2pEO0ssT0FsZkUyQyxTQXlQQXdFLFNBd1BVckUsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV0RGtNLG9CQUFxQnBKLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQzVEO0ssT0FyZkUyQztjQXFTQWlGO2NBK01xQjlFO2NBQWdCWjtjQUFhQztjQUFRbkM7O0dBQ087WUFFakVtTSxtQkFBb0JySixnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUMzRDtLLE9BeGZFMkM7Y0F3U0FrRjtjQStNb0IvRTtjQUFnQlo7Y0FBYUM7Y0FBUW5DOztHQUNPO1lBRWhFb00sY0FBZXRKLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ3REO0ssT0EzZkUyQztjQTJTQW1GLGNBK01laEYsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUUzRHFNLGVBQWdCdkosZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDdkQ7SyxPQTlmRTJDO2NBOFNBb0YsZUErTWdCakYsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUU1RHNNLGFBQWN4SixnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNyRDtLLE9BamdCRTJDO2NBaVRBcUYsYUErTWNsRixnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRTFEdU0sY0FBZXpKLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ3REO0ssT0FwZ0JFMkM7Y0FvVEFzRixjQStNZW5GLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFM0R3TSxhQUFjMUosZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDckQ7SyxPQXZnQkUyQztjQXVUQXVGLGFBK01jcEYsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUUxRHlNLFlBQWEzSixnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUNwRDtLLE9BMWdCRTJDO2NBMFRBd0YsWUErTWFyRixnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRXpEME0sYUFBYzVKLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ3JEO0ssT0E3Z0JFMkM7Y0E2VEF5RixhQStNY3RGLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFMUQyTSxXQUFZN0osZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDbkQ7SyxPQWhoQkUyQyxTQWdVQTBGLFdBK01ZdkYsZ0JBQWdCWixhQUFhQyxTQUFRbkM7R0FDTztZQUV4RDRNLGVBQWdCOUosZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDdkQ7SyxPQW5oQkUyQztjQW1VQTJGLGVBK01nQnhGLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFNUQ2TSxpQkFBa0IvSixnQkFBZ0JaLGFBQWFDLFNBQVFuQztJQUN6RDtLLE9BdGhCRTJDO2NBc1VBNkYsaUJBK01rQjFGLGdCQUFnQlosYUFBYUMsU0FBUW5DO0dBQ087WUFFOUQ4TSxlQUFnQmhLLGdCQUFnQlosYUFBYUMsU0FBUW5DO0lBQ3ZEO0ssT0F6aEJFMkM7Y0F5VUE4RixlQStNZ0IzRixnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRTVEK00sa0JBQW1CakssZ0JBQWdCWixhQUFhQyxTQUFRbkM7SUFDMUQ7SyxPQTVoQkUyQztjQTRVQStGLGtCQStNbUI1RixnQkFBZ0JaLGFBQWFDLFNBQVFuQztHQUNPO1lBRS9EZ047SUFDRjtLQUFXLFFBQUE7S0FBSnRPO0tBQUhzQjtLQUdBO09BQUE7eUJBQTRDLE9BQUEsb0JBSHpDdEIsTUFHd0Q7SUFEN0Q7SUFBQSxPQUZFc0I7R0FLSDtZQUVDaU47SUFBWSxPQXprQlpqTDs7R0F5a0IwRDs7WUFFMURrTDtJQUlBLG9DQUNLO0lBRVEsSUFBQSxRQUFBLHdCQUFKL08sY0FBSDZCO0lBQ0osU0FBSUcsT0FBT2hDO0tBQVMsV0FBQSxvQkFEaEI2QjtLQUNnQixjQUF1QixvQkFBaEM3QjtJQUErQztJQUMxRCxTQUFJZ1AsV0FBV2hQLEdBQUVzRTtLQUFPLFdBQUEsb0JBRnBCekM7S0FFb0IsY0FBdUIsb0JBQWhDN0IsR0FBRXNFO0lBQWdEO0lBRW5ELElBQVYySyxVQXRsQk5wTDtJQXVsQmdDLG1CLE9BSDFCbUwsV0FGR2hQO0lBS1ksbUIsT0FKZmdDLE9BREdoQztJQUtQLG9CQURJaVA7aUJBT0szSztLQUNILG9DQVhGdEMsT0FER2hDLEdBV0VzRTtLQUNrQztJQUN0QjtJQUpMOzs7S0FBQSxNQUFBO0tBRlo0SztPQTNoQk5qSztvQyxPQTlEQXBCOzs7OztLQWttQk1zTDtPQWxtQk50TDtJQW1tQjZCLG1CLE9BZnZCbUwsV0FGR2hQO0lBaUJTLG9CLE9BaEJaZ0MsT0FER2hDO0lBaUJQLG9CQURJbVA7a0JBR1k3SztLQUNaLG9CQWhCQTJLO0tBaUJBLG9CQWRBQztLQWVBLG9CQU5BQztLQU1BO0lBQ2U7SUFKUixPQUFBLG1CQW5CUHROO0dBdUJnQjtZQUV0QnVOO0lBQWMsT0EzbUJkdkw7O0dBMm1COEQ7WUFFOUR3TDtJQUFvQixPQTdtQnBCeEw7O0dBNm1CMEU7WUFFMUV5TDtJQUFjLE9BL21CZHpMOztHQSttQjhEO1lBRTlEMEw7SUFBeUIsT0FqbkJ6QjFMOztHQWluQm9GO1lBRXBGMkw7SUFBZ0IsT0FubkJoQjNMOztHQW1uQmtFO1lBRWxFNEw7SUFBa0IsT0FybkJsQjVMOztHQXFuQnNFO1lBRXRFNkw7SUFBcUMsY0FOckNILDRCQU04QyxVQVI5Q0Q7SUFROEMsT0FBQTtHQUF1QztZQUVyRkssVUFBVTlOO0lBQUk7SUFBQSxPQXRsQmQyQzt1Q0FzbEI0RCxPQVY1RDhLLFlBVXVFOzs7OzthQUE3RHpOO0dBQW1FO1lBRTdFK04scUJBQXFCL047SUFDdkI7SUFBQSxPQXpsQkUyQzt1Q0F5bEI0QyxPQVg1QytLLHVCQVdrRTs7Ozs7YUFEN0MxTjtHQUNtRDtZQUV4RWdPLFlBQVloTztJQUFJO0lBQUEsT0EzbEJoQjJDO3VDQTJsQjhELE9BWDlEZ0wsY0FXMkU7Ozs7O2FBQS9EM047R0FBcUU7WUFFakZpTyxjQUFjak87SUFBSTtJQUFBLE9BN2xCbEIyQzt1Q0E2bEJnRSxPQVhoRWlMLGdCQVcrRTs7Ozs7YUFBakU1TjtHQUF1RTtZQUVyRmtPLCtCQUFrQ2xPO0lBQ3BDO0lBQUEsT0FobUJFMkM7O2NBZ21CNEMsT0FaNUNrTDthQVk4RTs7Ozs7YUFENUM3TjtHQUNrRDtZQUVwRm1PLGtCQUFtQmpLLGNBQWFsRTtJQUNsQztJQUFBLE9BN2ZFaUU7d0NBNmZnRCxPQXZCaER3SixZQXVCMkQsR0FEeEN2Sjs0QkFBYWxFO0dBQytDO1lBRS9Fb08sNkJBQThCbEssY0FBYWxFO0lBQzdDO0lBQUEsT0FoZ0JFaUU7d0NBaWdCcUMsT0F6QnJDeUosdUJBeUIyRDtjQUY3QnhKOzRCQUFhbEU7R0FLMUM7WUFFRHFPLCtCQUEyQ25LLGNBQWFsRTtJQUMxRDtJQUFBLE9BdmdCRWlFOztlQXdnQnFDLE9BMUJyQzRKO2NBMEJ1RTtjQUY1QjNKOzRCQUFhbEU7R0FLdkQ7Ozs7T0FwcEJEZ0M7T0FtQ0FXO09BMkJBUztPQXFCQUM7T0F6RkF2QjtPQXdJQThCO09BT0FLO09BR0FFO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BTUFFO09BR0FDO09BTkFGO09BU0FHO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BbUVBc0I7T0F5QkFHO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FFO09BR0FDO09BR0FDO09BeklBekM7T0FIQUQ7T0FIQUQ7T0FTQUc7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FHQUM7T0FzRkF3QjtPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQU1BRTtPQUdBQztPQU5BRjtPQVNBRztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQVNBRztPQUhBRDtPQUhBRDtPQVNBRztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQUdBQztPQVFBQztPQUVBQztPQWdDQUs7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FFQUM7T0FHQUM7T0FFQUM7T0FFQUM7T0FHQUM7T0FHQUM7T0FPQUM7Ozs7RTs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O1lDN25CQUMsT0FBT0MsTUFBSzNNO0lBQU87S0F2Qkc0TTtrQkFBQUE7S0FFWCxRQUFBO0tBQUpyUTtLQUFMQzs7S0FHRTtNQUl5QjtPQUFBLE1BQUE7T0FBZCxRQUFBOztPQUNHLE1BQUE7VUFDSE07TUFKVCxvQkFMQ1AsR0FTUU87O0tBR1g7SUFBUztJQVZiLFNBQUE7O3dCQVcyQixzQkFBYTtJQUExQyxvQkFiSU47Y0FxQkttUTt1QkFBQUE7TUFISyxxQkFHQTNNOzBCQUFMMk07TUFMRSxrQkFLRzNNOztNQU5LLDBCQU1MQTthQUpPYSxJQUlaOEwsU0FKaUIsa0JBSVozTSxNQUpPYTtJQUVyQixPQW5CSXJFO0dBcUIwRDtZQUU1RHFRLG1CQUFtQjdNLE1BQU8sT0FGMUIwTSxvQkFFbUIxTSxNQUFnQztZQUVuRDhNLFdBQVc5TSxNQUFPLE9BSmxCME0sa0JBSVcxTSxNQUF3QjtZQUVuQytNLHdCQUF3Qi9NLE1BQUthLEdBQUksT0FOakM2TCx1QkFNNkI3TCxJQUFMYjtHQUEyQztZQUVuRWdOLGNBQWNoTixNQUFPLE9BUnJCME0sbUJBUWMxTSxNQUEyQjs7OztPQU56QzZNO09BRUFDO09BRUFDO09BRUFDOzs7O0U7Ozs7Ozs7R0N0Q29COzs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFLVjs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7OztZQ2ZSQyxPQUFTQztJLEdBQUFBLFNBQXdCQyxNQUF4QkQsUUFBQUUsS0FBd0JELGNBQXhCQztJQUNjO0tBQUEsUUFBQTtLQUFiQztLQUFSQztJQUNKLDJCQUZXRixJQUNQRSxRQUFRRDs7WUFHVkUsU0FBU0MsUUFBT0M7SUFBUEQsbUJBQU9DLEdBQVBEOztHQUErQztZQUN4REUsRUFBRUYsUUFBUyxPQUFUQSxhQUF3QjtZQUUxQkcsSUFBSUgsUUFBT0k7SUFDTixjQUFBLFdBRERKLFdBQU9JLE9BQVBKO2NBQ0M7Y0FEREE7aUJBRVdDLEdBQUssa0JBQUxBLEdBRkpHLE9BRWdCO0lBQTNCO0lBRklKLGVBQU9JO0lBSVgsT0FBQSxXQUpJSixjQUFPSTtHQUtaO1lBRUNDLEtBQU1ULElBQUdJLFFBQU9DO0lBQ0QsSUFBYkssYUFmRmIsT0FjTUcsSUFDb0IsV0FEVkssR0FUaEJDLEVBU1NGO0lBVlREO01BVVNDLGlCQUVVSSxPQUFTLE9BVDVCRCxJQVFFRyxZQUN5QyxXQUYzQkwsR0FFR0csUUFBaUM7SUFBdEQsT0FESUU7R0FFTTtZQUVSQyxnQkFBZ0JQLFFBQVMsT0FBVEEsVUFBc0I7R0E1QmpDLFlBU0xQLFFBSUFNLFVBQ0FHLEdBRUFDLEtBT0FFLE1BS0FFO1lBVUFDO0lBQ0Y7S0FBd0IsUUFBQTtLQUFiQztLQUFQQztJQUNKLG1CQURJQSxPQUFPRDtHQUMwQjtZQUVuQ0UsV0FBU1gsUUFBT0M7SUFBUEQsbUJBQU9DLEdBQVBEOztHQUErQztZQUV4RFksS0FBS1osUUFBT0k7SUFDZCxVQURPSjtpQkFDUUMsR0FBSyxrQkFBTEEsR0FEREcsT0FDYTtJQUEzQjtJQUFBLE9BQUEsV0FET0osY0FBT0k7R0FFUztZQUVyQlMsSUFBSWIsUUFBT0M7SUFDSSxJQUFiSyxhQVhGRTtJQUlBRztNQU1JWCxpQkFFZUksT0FBUyxPQU41QlEsS0FLRU4sWUFDMEMsV0FGakNMLEdBRVFHLFFBQWtDO0lBQXZELE9BRElFO0dBRU07WUFFUlEsZUFBZWQsUUFBUyxPQUFUQSxVQUFxQjtHQXRCL0I7SUFBQSxRQU9MUSxVQUlBRyxZQUVBQyxNQUlBQyxLQUtBQzs7Ozs7RTs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQzVDRkMsT0FDQ0M7SUFFRCxLQUZDQTtJQUlILE1BQUE7R0FBWTtZQUVWQyxLQUFHYixPQUNMLE9BQUEsR0FES0EsT0FDbUU7WUFFdEVjLFFBQU1kLE9BQ1IsT0FBQSxNQURRQSxPQUNtRTtZQUV6RWUsT0FBS2YsT0FDUCxPQUFBLEtBRE9BLE9BQ21FO1lBRXhFZ0IsU0FBT2hCLE9BQ1QsT0FBQSxPQURTQSxPQUNtRTtZQUUxRWlCLFVBQVFqQixPQUNWLE9BQUEsUUFEVUEsT0FDbUU7WUFFM0VrQixRQUFNbEIsT0FDUixPQUFBLE1BRFFBLE9BQ21FO1lBRXpFbUIsUUFBTW5CLE9BQ1IsT0FBQSxNQURRQSxPQUNtRTtZQUV6RW9CLFVBQVdDLFVBQW9CZixPQUFnQmdCO0lBQ2pELE9BQUE7YUFHcUIsd0JBSlJEO2FBS1Esd0JBTFlmO2FBQWdCZ0I7R0FPN0M7WUFFRkMsY0FBZUM7SUFDakIsS0FEaUJBLElBR1A7UUFESFgsT0FGVVc7SUFFSSxPQUFBLDhCQUFBLHdCQUFkWDtHQUNVO1lBRWZZLFVBQVVDLGFBQThCQyxXQUFxQkMsT0FDNURDO0lBQ0gsT0FBQTthQUdxQix3QkFMcUJGO2FBTXJCLHdCQU4wQ0M7YUFPMUMsd0JBTmxCQzthQU5ETixjQUtVRztHQVNSO1lBRUZJLFVBQVVKLGFBQThCQyxXQUFxQkMsT0FDNURDO0lBQ0gsT0FBQTthQUdxQix3QkFMcUJGO2FBTXJCLHdCQU4wQ0M7YUFPMUMsd0JBTmxCQzthQWpCRE4sY0FnQlVHO0dBU1I7WUFFRkssV0FBV0MsTUFBa0JDLE1BQWlCQztJQUNoRCxPQUFBO2FBRGFGO2FBS1Esd0JBTFVDO2FBTVYsd0JBTjJCQztHQU81QztZQUlGQztJQUFvQzs7Ozs7Ozs7O0dBT3ZCO1lBRWJDLGFBQWVDLFNBQTBCQyxLQUFnQkMsTUFDdkRQLE1BQXdCVjtJQUM1QixHQUZpQmU7U0F5QkRHLFlBekJDSCxzQkF5QkRHOzs7SUFIVjtLQUFBLE1BQUE7S0FUQTtPQUFBO2tCQUF1QkMsUUFBT0M7VUFDekI7V0FHeUMsTUFBQSx1QkFKdkJEO1dBSVMsTUFBQTtXQUFOLE1BQUEsdUJBakJXSDtVQTFFekN4QjtZQTBGYSx3QkFDRztVQTNGaEJBLFFBdUZrQzRCO1VBT1YsT0FBQTttQkFuQkVwQixTQVlDbUIsUUFPSCx3QkFQVUM7U0FPYTtPQW5CN0NWO1NBVVlXLFNBVlpYLG1CQVV5Qix3QkFBYlc7OztJQUhWLFVBQUE7SUFOTixPQUFBO2FBR3FCLHdCQUxzQkw7YUFNdEIsd0JBZm5CSCxpQkFTeURJOzs7O0dBMEJ2RDtZQU1GSyxNQUFNQyxLQUFLQzs7a0JBRVdDO01BQ2dCLFVBQUEsK0JBRGhCQTtNQXpHdEJoQyxPQTBHb0Isd0JBQVcsdUJBSHpCOEI7TUExR04vQixRQThHcUIsd0JBQVc7TUFDMUI7S0FBZTtLQUhKLE9BQUEsbUJBRk5nQztJQUtXO0lBSlksT0FBQTtHQUlYO1lBRXZCRSxjQUNGLE9BQUEsd0JBQWEsUUFBb0Q7WUFFL0RDLFFBQVF6QixJQUFlMEI7SUFDekIsT0FBQSxNQUVzQix3QkFIWjFCLEtBRzZDLHdCQUg5QjBCO0dBR21EO1lBRTFFQyxhQUFjQyxTQUFrQ0M7SUFFbEQsT0FBQSxZQUZnQkQsU0FJZ0Msd0JBSkVDO0dBSWtCO1lBRWxFQyxZQUFhOUIsSUFBY0Y7SUFFN0IsT0FBQSxXQUVzQix3QkFKUEUsS0FBY0Y7R0FJb0M7WUFFL0RpQyxlQUFnQkgsU0FBa0MvQixVQUNqRFo7SUFFRDs7T0FBQTtTQUNHLGNBSmEyQyxTQVFTLHdCQVJ5Qi9CLFdBQ2pEWjtJQUVELE9BQUE7R0FPVTtZQUVWK0MsdUJBQ0YsT0FBQSxpQkFBNEQ7WUFFMURDLHVCQUNGLE9BQUEsaUJBQTREOzs7O09BL0oxRDlDO09BT0FFO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BR0FDO09BU0FHO09BS0FFO09BV0FLO09BV0FDO09BV0FJO09BU0FDO09BZ0NBUTtPQU9BSTtPQUdBQztPQUtBRTtPQU1BRztPQU1BQztPQVlBQztPQUdBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R1VyS0o7Ozs7Ozs7O0lBd25DUXNjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUExbkNKQztJQWdLQUM7Ozs7Ozs7Ozs7Ozs7SUFBQUM7Ozs7Ozs7Ozs7Ozs7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTlKSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBRUlDLFdBQVdDO0lBQUksTUFBQSw0Q0FBSkE7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QVFBRTtPQUlBQztPQVFBRztPQVNBSTtPQWdCQUM7T0FHQUc7T0FoQ0FWO09BWkFIO09BMEVBd0I7T0F6QkFWO09BVUFHO09BR0FFO09Bc0JBWTtPQVBBTjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO0ksVztHO0c7O0ksSSxXLG9COzs7O0s7Ozs7TTtLO0s7SztLOztNO007TTs7SztLLFc7SztLLE87O0c7OztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJLGlCO0c7O0ksd0I7Rzs7STtJLE87O0c7O0ksVztJLE87Rzs0QixPLDZCOzZCLCtDO0c7SSxnQjtJLHFCO0ksaUI7SSxzQjs7SSxtQjs7STtHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7SSxnQjtHOztJO2lCO0c7Z0MsTyxvQzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7aUMsTyxrQzs7STtLO00sTztNLE87Szs7Ozs7SztNO007OztTOzs7Ozs7OztTO1E7SztLOzs7UyxHLG1DO1M7VSx1QjtVOzs7Ozs7VTtXOzswQjtXOzs7O2tDOzs7O1E7TTs7Ozs7Ozs7Yzs7OztNO087TztlO0s7TTtRO1c7Ozs7bUI7OztTOztVO1U7UztTLE87UTtNLE87SyxPOztHOztJLEksVyxzQzs7Ozt3Qzs7SztNLEc7TyxNO00sSSxPOzs7OztNLEc7TyxNO3FCOztLO00sRztPLE07TTtPLE87TyxPOzs7Ozs7b0I7O0s7O0c7O0k7SyxJLFcsOEI7Ozs7Ozs7OztHOztJOztPOztJO0c7OztJOztLOztNLEksVyx3Qjs7O2tDOzs7SztLLE87STtJO0s7SztvQjtNLFc7Ozs7STtJOzs7O0s7O0ssTztJO0ksTztHOztJO0c7OztJOztHO0csc0I7O0k7SSxPO0c7O0k7SyxROzs7SyxTO0ksSTs7O0s7SztLLE07O0k7STtHOztJO0ssUTs7O0ssVTtJLEk7OztLO0s7SyxNOztJO0k7Rzs7STtLLFE7OztJLEksYzs7O0s7SztLLE07O0k7OztLLFM7SyxVO0k7Szs7Ozs7SztLO0s7SztLLE07O0k7STtJO0c7O0k7SyxROzs7SSxJLGM7OztLO0s7SyxNOzs7SSxJLGM7OztLO0s7SztLO0ssTTs7STs7O0ssUztLLFU7SyxVO0k7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SyxNOztJO0k7STtJO0c7O0ksTztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7SyxXO0s7Ozs7O00sTTs7OztHOztJLE87Rzs7STtHOztJO0c7OztJOzs7O0k7OztJLEksb0I7STtJO0k7Rzs7SSxJLHFCO0k7SSxJOzs7OztJO0c7O0k7OztLO0s7STtJO0ksSTs7Ozs7STs7O0k7Ozs7SztLO0k7STtJLEk7Ozs7O0k7STs7O0ksVztJO0s7SztNLE87TSxXO0s7Ozs7SztLLE07O0c7O0ksTyxzQjtHOztJLFc7STtJO0k7O0s7TSxJLFk7Ozs7Ozs7OztLLGtCLEs7O2Usc0I7TTtNO08sUztPLFU7TTtNOztVLHVCOztHO3NCOzRCOzRCO3NCOzRCOztJOztzQjs0Qjs0QjtzQjtzQjtzQjtzQjtzQjtzQjtzQjs0Qjs0Qjs0Qjs0Qjs0Qjs7STs7O0k7O3NCO3NCO3NCOztzQjtzQjtzQjs0QjtzQjtzQjtzQjtzQjtzQjtzQjtzQjs7NkI7dUI7O0k7O3VCO3VCO3VCOzs7Ozt1Qjt1Qjt1Qjt1Qjs2Qjs2Qjs7STs7O0k7Ozs7Ozs2Qjs2Qjs7Ozs7O3VCO3VCO3VCOzt1Qjt1Qjt1Qjt1Qjs7STs7NkI7NkI7dUI7O0k7OztJOzs2Qjs2Qjt1Qjs7STs7NkI7O3VCOzs7Ozs7O1E7OzRCOzRCOzs7Ozt1Qjs7NkI7NkI7O0k7Ozt1Qjt1Qjt1Qjt1Qjs7STs7dUI7dUI7dUI7dUI7NkI7dUI7dUI7O0k7OzZCOztJOzs2Qjs2Qjs7Ozs7OztzQjs7c0I7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEMsZTs7SztZO0s7Ozs7STs7Ozs7O0ssVTtNO007O29CO007TTs7Ozs7RztHOzJCLGdCOztJOztPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOzs7UTs7UTs7UTs7UTtnQjs7STtHOztJOzs7Ozs7Ozs7Ozt5Qzs7Ozs7OztHO0csSSxjOztJO0k7O0k7O0k7RztvQixZO21CLFk7dUIsWTs0QixtQjs4QixtQztnQywwQzs7STtHO3dCLGM7Rzs7STs7YztJO29CLHVCO0ksTztHO0csSSxnQjs7STtJOztLLG1COztLO0k7d0Isc0I7O0k7RztzQixZO3FCLFk7dUIsWTs7STtHOzBCLFc7OztJLE87Ozs7OztHO0k7Ozs7c0IsTyw0Qjt5QixPLHVDO3NCLE8sNEI7O0k7SztNLFE7OztNLE07TSxNO0s7Ozs7MkI7OztHOztJO2dDO0ksVTtJLE87Rzs7Z0MsTyxzQjtJLE87Rzs7O0ssZTtLO0s7STtJO0k7STtJO0c7Rzs7OEIsTyxtQixTOztJOztHO0c7STs7O1E7USxPO087STs0QiwwQjs4QixtQjs7O0s7SyxPO0k7STtJLE87Rzs7O0k7OztlOztJLE87Ozs7WTs7STtLO1M7Ozs7STthOztLLE87O1ksTzs7SSxPOzs7STs7OztJOzs7O0k7Ozs7O3lCLHFCLE8saUI7SyxPOzs7ZTs7Z0IsTTtnQixNO2UsTzs7Ozs7OztjO0k7STtHO0c7K0Isb0I7a0MseUI7RztnQyxxQjttQywwQjt3QixTOztJO0k7Z0IsTzs7OztLLE87OztJO0c7eUIsUztrQyxxQzsyQixpQzsyQixpQzs0QixpQzs0QixpQzs2QixpQzs7STtJLHFDOzs7NkIsMEI7Ozt5QixPLHdDOzs7STtJLHFDOzs7Ozs7O2MsTzthOzs7Z0Msa0M7b0Msc0M7dUIsc0I7dUIsc0I7d0Isc0I7d0Isc0I7eUIsc0I7O0s7SztNO0k7O0s7SztNO0k7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUdBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7O09BaElBakc7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FFQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FJQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FHQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHO0csVzs4QixPLG1DOztJLFc7SSxPLCtCO0c7eUIsdUIsVyxTOztJLEksSTs7SyxXO0sscUI7SztrQjs7O0c7O0ksSSxJOztLLEksTyx1QixPO0sscUI7SztrQjs7O0c7O0k7OztNLFc7Z0I7TyxNOzttQixjOzs7Ozs7NEI7OztHOztJOztLLFE7Ozs7O1EsZTtPOzs7OztLOzs7O0c7O0k7STs7TyxPO08sYztNOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCLE87O1E7OztRLE87O1Esc0M7USxTOzs7O1E7Ozs7UTs7O2dCOzs7Rzs7STtJOzs7Ozs7Ozs7Ozs0Qjs7O1EsTzs7NEI7OztROzs7USxrQixPOztROztRLHNDO1E7Ozs7Ozs7Ozs7OztHO3lCOztJO0k7Ozs7OztTLG1DO1M7O1MsbUM7Uzs7UyxrQixPOztTOzs7O0c7NkI7O0k7Ozs7Ozs7OztLOztNO0ssTzs7SSxNO0c7RyxJLEk7O0ksVTtJLHFCO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzBDOzs7USxrQixRO3dCOztTO1UsUTtVO1U7VTtVOzs7Ozs7OztrQzs7OzswQiwyQjtRLFU7USwrQjs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksSSxlLG9DOztLO0s7STtJOzs7OztJO1k7Ozs7OztHOztJLFE7STs7b0I7OztzQjs7Ozs7RztHOztJLG9DOztLLEk7SztNOzs7Z0I7b0I7TztROzs7UTs7Ozs7TTs7STs7SyxJLFU7Szs7O08sa0M7UTtTLE07Ozs7O08sVTs7Ozs7Ozs7O2E7OztjLHVCO2U7Z0I7Ozs7OztjO2U7Ozs7Ozs7Ozs7OzthOzs7OztjLFU7Ozs7Ozs7O2dCOzs7Ozs7OztpQjtpQjtrQjs7O2lCOzs7MkI7OEI7Ozs7MkI7Ozs7ZSxNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7UyxlOzs7VSxJLG1COzs7VSxJLG1COztVLEksbUI7Ozs7Ozs7O1M7OztROzs7Ozs7TTtNLGU7O0k7O0ssSTtLO3FCO2dCLHdDLHFCO00sUztNOzs7Z0I7bUI7TyxTOzs7O1MsTztTOzs7OztPLEk7OztNO00sSTs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O0ksVTs7O0c7O0ksVTs7O0c7O0ksVTs7NkIsTTtJO0c7O0ksVTs7NkIsTTtJO0c7O0k7O0s7SyxlLE07Szs7SSxPO0c7O0k7O0s7TTtNO0ssZSxNO0s7O0ksTztHOztJOztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0ksTztHOztJO0s7TTs7Z0I7TTtNLE07Szs7OzsyQjs7O0c7O0ksSSwyQzs7OzJCOzs7Rzs7STtJOztROzs7TTs7Tzs7UTtRLFk7O1E7Ozs7WTs7Ozs7Ozs7O0ssVTtLLE87O0c7O0k7aUM7Rzs7STtpQztHOztJO2dCOzs7Ozs7OztHOztJO0s7Ozs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOzhCLG9DOztJLEcsZ0M7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SXVCeERBMDRDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWhGQUMsWUFFQXJVO0lBRmMsVUFFZEEsOEJBQUFBLFVBREs0QyxJQUNMNUMsTUFEVSxPQUFMNEM7SUFDQSxNQUFBOzBEQUFMNUM7R0FBa0U7WUFnSWxFc1U7SUFBa0I7O1dBQ1J0USxjQUFIM0Ysd0NBQUcyRjtjQUFIM0Y7O29DQXREUDRWOztvQ0FDQUM7O29DQUNBQzs0Q0FDQUM7O09BbURnQjs7V0FsQ0tHO09BbUNQOzs7Ozs7Ozs7Ozs7O29EQW5DT0E7O3FEQUFBQTt1REFBQUE7Ozs7T0F4RHZCO1FBRDJCQzs7UUFBakJDLG1DQTZGOEMsaUJBQUs7UUFsSDdDcEUsUUFxQldtRTtRQUMzQjtnQkF0QmdCbkU7O1NBZklxRSxZQWVKckU7Ozs7O2FBYnNCLDhDQUZsQnFFOzs7Ozs7Ozs7OzRDQUFBQTs7OztTQWtCVkMsUUFITXRFO2dFQUdOc0U7O2NBa0JpQkg7Ozs7Ozs7T0FPaEI7UUFBQSxNQUFBLDJCQVBnQkE7UUFNaEIsTUFBQSxzQ0FOREM7T0E2Rkc7Ozs7Ozs7Ozs7bUNBeEZMOzs7O0dBd0YwRDtZQUVoRUcsZ0JBSUFDO0lBSmtCLFVBSWxCQSxrQ0FBQUE7ZUFBQUE7Ozs7Ozs7Ozs7ZUF0RkF4USxjQURReVEsbUNBc0ZpRCxTQUFFO3FCQXJGM0R6USxrQ0FBQUE7Z0JBQU85RixNQUFQOEY7WUFBbUIsU0FBQSwyQkFBWjlGOzs7Y0Fhb0IsSUF2QzNCeUIsSUF1QzJCLHlDQWJwQnpCOzt3QkExQlB5QixnQ0FBQUE7eUJBQUFBOzs7Ozs7O3NCQWxCQTBVOzsyQkFBQUEsd0NBQUFBO3VCQUFPcFcsSUFBUG9XO21CQUFtQixTQUFBLDJCQUFacFc7b0JBQ1A7cUJBR2dDO3NCQUFBLE1BQUEseUNBSnpCQTtzQkFJTSxNQUFBO3NCQUZWOzt5QkFYSCtWLFlBWXNCLHNDQUhmL1Y7Ozs7OztzQkFPSixNQUFBOzs7OytCQVBIb1c7Ozs7Ozs7O2tCQVFLLE1BQUE7Ozs7MkJBUkxBOzs7Ozs7OztxQkFpQjBCQywwQkFBQUE7O2dCQXlDVyxJQTdCckNsSCxNQTZCcUMsOENBZDlCbFA7OzBCQWZQa1AsbUNBQUFBOzJCQUFBQTs7Ozs7Ozs7OztpQkFtQmMsSUFLTHhOLElBTEssNENBSlAxQjsyQkFTRTBCLGdDQUFBQTtrQkFERTttQkFISThVLE1BSU45VTttQkFERSxNQUFBLDJCQUhJOFU7bUJBRUo7cUJBQUEsc0NBUkhEO21CQUdMLFVBSU07OztpQkFJQSxNQUFBOzs7OzBCQVZUelE7OztnQkFmSyxNQUFBOzZFQUFMb0o7Ozs7Y0FYSyxNQUFBO3NFQUFMek47Ozs7O2VBMkNHLE1BQUE7Ozs7d0JBakJIcUU7Ozs7YUFxRmdDOzs7V0FqRWhDLE1BQUE7MEVBcEJBQTs7Ozs7Ozs7Y0F5REFoRztvQkFBQUEsZ0NBQUFBO2VBQU8yVyxNQUFQM1c7V0FBbUIsU0FBQSwyQkFBWjJXO1lBQ0EsSUFVTEMsTUFWSyxnREFEQUQ7c0JBV0xDLGtDQUFBQTtpQkFUT0MsTUFTUEQ7YUFUYyxTQUFBLDJCQUFQQzs7O2VBS007Z0JBQUE7a0JBckhmYixZQXFIMkIseUNBTGxCYTtnQkFJUTtrQkFwSGpCYixZQW9INkIsMkNBSnBCYTtnQkFsSFRDLE1BcUg2Qix3Q0FIcEJEO3lCQWxIVEMsbUNBQUFBLFFBb0hLLElBckhHdlMsSUFDUnVTLFFBb0hLLFVBckhHdlM7ZUFDSCxNQUFBO3dFQUFMdVM7Ozs7O2dCQTBISyxNQUFBO2lGQVZMOVc7Ozs7Y0EyQm1DOzs7WUFmakMsTUFBQTs7OztxQkFEQTRXOzs7O1VBRUcsTUFBQTt5RUFiTDVXOzs7Ozs7Ozs7OztlQTBCb0MyRixZQTNDcENvUjs7cUJBQUFBLG1DQUFBQTtnQkFEUWhSLE1BQ1JnUjtZQUplLEdBQUEsa0JBR1BoUjs7b0JBRk8sa0JBRVBBOztvQkFETyxrQkFDUEE7OzthQUFPLEtBQUEsa0JBQVBBOzs7O1lBNENtQyxnQkFBUEo7O1dBM0MvQixNQUFBO21FQUFMb1I7Ozs7Ozs7O0lBOENLLE1BQUE7OERBQUxQO0dBQXNFO29DQVR0RVAsaUJBS0FNOzs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lpQjFJQTgwQyxVQUFZQyxLQUF3QkMsT0FBTUM7SUFDNUMsR0FEY0YsU0FBV0csTUFBWEgsUUFBQUksV0FBV0QsY0FBWEM7SUFDZCxXQURjQSxVQUE4QkYsTUFBTkQ7R0FDdUI7WUFFM0RJLGlCQUFrQkQsVUFBVUgsT0FBT0ssYUFBYUM7SUFFWixjQUxwQ1IsVUFHa0JLLFVBQVVILE9BQW9CTTtJQUVaLE9BQUEsK0NBRkREO0dBRXVDO1lBRTFFRSxnQkFBaUJGLGFBQVlHO0lBQy9CLE9BQUE7aURBRG1CSCxhQUFZRztHQUNlO1lBRTVDQyx1QkFBd0JOLFVBQVVFLGFBQWFLO0lBQ2pELElBQ00sSUFBQSxNQUFBLCtCQUYyQ0EsSUFDN0NKO21CQUFBQTtJQUdKLE9BWEVGLGlCQU93QkQsYUFBVUUsYUFDaENDO0dBRzJDO1lBRTdDSyxzQkFBdUJSLFVBQVNTO0lBQ2xDO0tBQUlDLFdBQ0YsK0NBRmdDRDtLQUk5QkUsU0FBUywrQ0FKcUJGO2lCQVl4Qkc7S0FDSCxPQTdCTGpCO2NBZ0J1Qks7O2NBY2hCOzs7O2dCQUZDWTtJQUUrRDtJQUh2RSxVQUFBLGlDQVZFRjtpQkFLR0UsR0FBRUM7S0FDTDthQXZCRmxCO2VBZ0J1Qks7O2VBUW5COzs7O2lCQUZDWTthQUFFQztJQUdEO0lBRU4sT0FBQSxpQ0FQRUY7R0FXVTtZQUVaRyx3QkFBeUJkLFVBQVVFLGFBQVlPO0lBQ2pELE9BM0JFTCxnQkEwQm1DRixhQWpCbkNNLHNCQWlCeUJSLFVBQXNCUztHQUNnQjtZQUUvRE07SUFBYztTQUNKSDtLQUFLLE9BQUEsa0RBQUxBOztRQUNHSDtJQUFNLE9BTG5CSyxnQ0FLYUw7R0FBcUQ7WUFFbEVPLGdCQUlHQztJQUFOLElBQ2lDWixxQkFBUmEsbUJBQW5CQztJQUNMLFNBREtBLGNBRU9DLE9BRlBELFVBRWUsT0FBQSxXQUhmRixJQUdPRztRQUNHYixJQUhWWTtJQUlRLE9BQUEsMkJBREVaLElBSFNXLFFBQVFiO0dBSXFDO1lBRS9EZ0IsZ0JBUURDLEdBSUFDLElBQXlDVjtJQUM5QyxLQUQ4Q0EsR0FFdEMsT0FBQSxtQkFGSFU7UUFHRUMsSUFIdUNYLE1BRzVDWSxJQUg0Q1o7aUJBR25CYSxRQUFVLE9BZi9CTCxnQkFRREMsR0FPc0JJLFFBQXBCRixHQUE2RDtJQUF4RCxVQUFBLFdBUFBGLEdBSUFDLElBR0hFO0lBQXFCLE9BQUE7R0FBNkM7WUFFOURFO0lBQTJELFlBQ3pELE9BQUE7UUFDREgsY0FBTFg7aUJBR2NlO0tBS1IsVUFWRkQsZUFFQ0g7a0JBTWFLO01BQ3FDLFVBQUEsdUJBSnpDRCxRQUdJQztNQUNxQyxPQUFBLG1EQVB2RGhCO0tBT3dFO3lCQUZuRCxPQUxyQkEsRUFLc0I7S0FHaEIsT0FBQTtJQUFrQjt3QkFOUCxPQUpiYyxlQUVDSCxHQUU0QjtJQURqQyxPQUFBLHdEQURBWDtHQVNHO1lBRUhpQixPQUFPaEM7SUFBcUIsVUFBQSw2QkFBckJBO0lBQXFCLE9BQUE7R0FBb0I7Ozs7T0FqRmhESDtPQUdBTTtPQUlBRztPQUdBRTtPQU1BRTtPQWlCQU07T0FHQUM7T0FJQUM7T0FXSUs7T0FpQkFNO09BYUpHOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNtQkFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBR0FDLHNCQUF3QnBDLEtBQVlnQjtJQUN0QyxHQUQwQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ2pCLElBQUxDLEtBQUssNkJBRGlCRDtJQUUxQixXQUxFRixtQkFJRUcsSUFEa0N0QjtJQUV0QyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQkM7WUFHQUMsc0JBQXNCQztJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUozQ0Ysa0JBSWU7R0FBa0Q7T0FDakVHO1lBR0FDLG1CQUFxQjNDLEtBQVlnQjtJQUNuQyxHQUR1QmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ2QsSUFBTEMsS0FBSyw2QkFEY0Q7SUFFdkIsV0FMRUssZ0JBSUVKLElBRCtCdEI7SUFFbkMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEJNO1lBR0FDLG1CQUFtQko7SUFDcUIsV0FBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKeENHLGVBSVk7R0FBa0Q7WUFJOURFLDBCQUE0QjlDLEtBQVlnQjtJQUMxQyxHQUQ4QmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3JCLElBQUxDLEtBQUssNkJBRHFCRDtJQUU5QixXQWpCRUssZ0JBZ0JFSixJQURzQ3RCO0lBRTFDLE9BQUEsNkJBRElzQjtHQUVjO1lBSWhCUywwQkFBMEJOO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBaEIvQ0csZUFnQm1CO0dBQWtEO0dBQzNDO0lBQTFCSTtNQUEwQixxQ0FwQzFCYjtJQTZDQWM7TUFBeUIsc0NBdEN6QlY7WUFnREFXLDJCQUE2QmxELEtBQVlnQjtJQUMzQyxHQUQrQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3RCLElBQUxDLEtBQUssNkJBRHNCRDtJQUUvQixXQXJCRVcsd0JBb0JFVixJQUR1Q3RCO0lBRTNDLE9BQUEsNkJBRElzQjtHQUVjO1lBSWhCYSwyQkFBMkJWO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBbEJoRFE7YUFrQm9COztHQUFrRDtPQUN0RUc7WUFHQUMscUJBQXVCckQsS0FBWWdCO0lBQ3JDLEdBRHlCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDaEIsSUFBTEMsS0FBSyw2QkFEZ0JEO0lBRXpCLFdBTEVlLGtCQUlFZCxJQURpQ3RCO0lBRXJDLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCZ0I7WUFHQUMscUJBQXFCZDtJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUoxQ2EsaUJBSWM7R0FBa0Q7WUFDaEVFLHVCQUNFbEIsSUFBR3RCO0lBQ0wscUJBREtBO2NBR1UsOEJBSGJzQjs7aUJBQUd0QjtnQkFFVyw4QkFGZHNCO2dCQUljLDhCQUpkQTtHQUlnRDtZQUVsRG1CLDJCQUE2QnpELEtBQVlnQjtJQUMzQyxHQUQrQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3RCLElBQUxDLEtBQUssNkJBRHNCRDtJQVA3Qm1CLHVCQVFFbEIsSUFEdUN0QjtJQUUzQyxPQUFBLDZCQURJc0I7R0FFYztZQUNoQm9CLHNCQUNFQyxHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVFLFlBQUEsMkJBRkpELEdBQUVDOztLQUlRLElBYUY1QyxJQWJFLDJCQUpWMkMsR0FBRUM7aUNBaUJNNUM7O2lCQUFBQTs7bUJBQUFBO21CQUNBLHNDQWxCUjJDLEdBaUJRM0M7b0JBSEE7cUNBZFIyQyxHQUFFQzttQkFlTSwyQkFmUkQsR0FBRUM7O2tCQU1NO21DQU5SRCxHQUFFQztpQkFPTSwyQkFQUkQsR0FBRUM7O2dCQVVNO2lDQVZSRCxHQUFFQztlQVdNLDJCQVhSRCxHQUFFQzs7OztLQWdDUSxJQUNGQyxNQURFLHNDQWhDVkYsR0FBRUM7S0FrQ00sT0FBQSxzQ0FsQ1JELEdBaUNRRTs7SUFaRSxJQU9GQyxNQVBFLDJCQXJCVkgsR0FBRUM7Z0NBNEJNRTs7Z0JBQUFBOztrQkFBQUE7a0JBQ0Esc0NBN0JSSCxHQTRCUUc7Ozs7R0FPTDtZQUVMQywyQkFBMkJ0QjtJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0F2Q2hEaUIsc0JBdUNvQjtHQUFrRDtPQUN0RU07WUFHQUMsMEJBQTRCakUsS0FBWWdCO0lBQzFDLEdBRDhCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDckIsSUFBTEMsS0FBSyw2QkFEcUJEO0lBRTlCLFdBTEUyQix1QkFJRTFCLElBRHNDdEI7SUFFMUMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEI0QjtZQUdBQywwQkFBMEIxQjtJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUovQ3lCO2FBSW1COztHQUFrRDtHQUMvQztJQUF0QkUscUJBQXNCO1lBU3RCQyxrQkFDRVYsR0FBRUM7SUFDSiwyQkFERUQsR0FBRUM7SUFFQSxPQUFBLDJCQUZGRCxHQUFFQzs7a0JBR00sc0NBSFJELEdBQUVDO0dBS2U7WUFJbkJVLDBCQUNFaEMsSUFBSXRCO0lBQ04sOEJBREVzQjtJQUVhLElBQVhpQztPQUFBQTtLQUFBQTs7S0FJRiw4QkFOQWpDO0lBT0EsOEJBUEFBO0lBUUYsMkJBUkVBLElBQUl0QjtPQUVGdUQ7S0FBQUE7O0tBYUYsOEJBZkFqQztJQWdCQSw4QkFoQkFBO0lBaUJGLFdBckNBOEIsb0JBb0JFOUIsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0FzQkYsOEJBeEJBakM7SUF5QkEsOEJBekJBQTtJQTBCRiwyQkExQkVBLElBQUl0QjtPQUVGdUQ7S0FBQUE7O0tBK0JGLDhCQWpDQWpDO0lBa0NBLDhCQWxDQUE7SUFtQ0YsV0F2REE4QixvQkFvQkU5QixJQUFJdEI7T0FFRnVEO0tBQUFBOztLQXdDRiw4QkExQ0FqQztJQTJDQSw4QkEzQ0FBO0lBNENGLFdBaEVBOEIsb0JBb0JFOUIsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0FpREYsOEJBbkRBakM7SUFvREEsOEJBcERBQTtJQXFERiwyQkFyREVBLElBQUl0QjtJQXFETixPQUFBLDhCQXJERXNCO0dBeURxQjtZQUV2QmtDLDhCQUFnQ3hFLEtBQVlnQjtJQUM5QyxHQURrQ2hCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3pCLElBQUxDLEtBQUssNkJBRHlCRDtJQTVEaENpQywwQkE2REVoQyxJQUQwQ3RCO0lBRTlDLE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCbUMseUJBQ0VkLEdBQUVDO0lBQ0osMkJBREVELEdBQUVDO0lBRUosMkJBRkVELEdBQUVDO0lBR2lDO0tBQWpDYztLQUNBQztLQUNBQztLQUNBQztLQUNBQztLQUNBQztJQUNKO0tBQ0UsMkJBVkFwQixHQUFFQztLQVdGLDJCQVhFQTtLQVlGLDJCQVpBRCxHQUFFQztLQVlGO01BQ0lsQztpQkFDRWUsR0FBRXVDLEtBQUkzQztTQUNSLFdBREkyQzs7Ozs7a0JBQUkzQztpREFBTkksTUFBRXVDLE1BQUkzQzs7VUFFTSxXQUFBLGtDQUZaSSxHQUFFdUMsS0FBSTNDO1VBRU47O1NBQUEsZUFGTUE7Ozs7OzhDQUFOSSxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDO3VFQUFGdkMsR0FBRXVDO2NBS3k0QjthQUdsNEI7Ozs4Q0FSVHZDLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3lEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOztnRUFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O3FFQUFGdkMsR0FBRXVDO3dFQUFGdkMsR0FBRXVDO2NBYSs2QjthQUd4NkI7Ozs4Q0FoQlR2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztxRUFBRnZDLEdBQUV1Qzs7c0VBQUZ2QyxHQUFFdUM7O3VFQUFGdkMsR0FBRXVDOzt3RUFBRnZDLEdBQUV1Qzs7eUVBQUZ2QyxHQUFFdUM7OzBFQUFGdkMsR0FBRXVDOzZFQUFGdkMsR0FBRXVDO2NBcUI2bUM7YUFHdG1DOzs7OENBeEJUdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7eURBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztnRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1Qzs7d0VBQUZ2QyxHQUFFdUM7O3dFQUFGdkMsR0FBRXVDOzswRUFBRnZDLEdBQUV1Qzs7MkVBQUZ2QyxHQUFFdUM7OzRFQUFGdkMsR0FBRXVDOzs2RUFBRnZDLEdBQUV1Qzs7OEVBQUZ2QyxHQUFFdUM7aUZBQUZ2QyxHQUFFdUM7Y0E2QnF3QzthQUc5dkM7Ozs4Q0FoQ1R2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDOztxRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3VFQUFGdkMsR0FBRXVDOzt3RUFBRnZDLEdBQUV1Qzs7eUVBQUZ2QyxHQUFFdUM7O3lFQUFGdkMsR0FBRXVDOzsyRUFBRnZDLEdBQUV1Qzs7NEVBQUZ2QyxHQUFFdUM7OzZFQUFGdkMsR0FBRXVDOzs2RUFBRnZDLEdBQUV1Qzs7K0VBQUZ2QyxHQUFFdUM7a0ZBQUZ2QyxHQUFFdUM7Y0FxQzJ5QzthQUdweUM7Ozs4Q0F4Q1R2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDOztxRUFBRnZDLEdBQUV1Qzs7c0VBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt3RUFBRnZDLEdBQUV1Qzs7eUVBQUZ2QyxHQUFFdUM7OzBFQUFGdkMsR0FBRXVDOzswRUFBRnZDLEdBQUV1Qzs7NEVBQUZ2QyxHQUFFdUM7OzZFQUFGdkMsR0FBRXVDOzs4RUFBRnZDLEdBQUV1Qzs7OEVBQUZ2QyxHQUFFdUM7O2dGQUFGdkMsR0FBRXVDO21GQUFGdkMsR0FBRXVDO2NBNkNpMUM7YUFHMTBDOztTQUlGO1FBRUo7TUFFTEMsSUFBSSwyQkF0RVJ0QixHQWFJakMsR0FiRmtDO0tBdUVGLHNDQXZFQUQsR0FBRUM7WUFzRUVxQjtNQW9ETyw0QkExSFh0QixHQUFFQzs7YUFzRUVxQjs7U0FuRUZQO2NBeUVXLHNDQTVFYmYsR0FBRUM7OztTQUlBZSwwQ0EvRUpOLGtCQTJFRVYsR0FBRUM7OztTQUtBZ0I7Y0F1Rlcsc0NBNUZiakIsR0FBRUM7OztTQU1BaUIsMENBakZKUixrQkEyRUVWLEdBQUVDOzs7U0FPQWtCLHdDQWxGSlQsa0JBMkVFVixHQUFFQzs7O1NBUUFtQjtjQTRHVyxzQ0FwSGJwQixHQUFFQzs7O01BK0hBLDJCQS9IRkQsR0FBRUM7TUFnSUEsMkJBaElGRCxHQUFFQztNQWlJQSwyQkFqSUZELEdBQUVDO01BaUlBO09BQ0lzQjtrQkFDRXpDLEdBQUV1QyxLQUFJM0M7VUFDUixXQURJMkM7Ozs7O21CQUFJM0M7OzZDQUFOSSxNQUFFdUMsTUFBSTNDOztXQUVNLFdBQUEsa0NBRlpJLEdBQUV1QyxLQUFJM0M7V0FFTjs7VUFBQSxlQUZNQTs7Ozs7K0NBQU5JLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7d0VBQUZ2QyxHQUFFdUM7ZUFLeTRCO2NBR2w0Qjs7OytDQVJUdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2lFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDOztxRUFBRnZDLEdBQUV1Qzs7c0VBQUZ2QyxHQUFFdUM7eUVBQUZ2QyxHQUFFdUM7ZUFhKzZCO2NBR3g2Qjs7OytDQWhCVHZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1Qzs7d0VBQUZ2QyxHQUFFdUM7O3lFQUFGdkMsR0FBRXVDOzswRUFBRnZDLEdBQUV1Qzs7MkVBQUZ2QyxHQUFFdUM7OEVBQUZ2QyxHQUFFdUM7ZUFxQjZtQztjQUd0bUM7OzsrQ0F4QlR2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOztnRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O2lFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDOztxRUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3dFQUFGdkMsR0FBRXVDOzt5RUFBRnZDLEdBQUV1Qzs7eUVBQUZ2QyxHQUFFdUM7OzJFQUFGdkMsR0FBRXVDOzs0RUFBRnZDLEdBQUV1Qzs7NkVBQUZ2QyxHQUFFdUM7OzhFQUFGdkMsR0FBRXVDOzsrRUFBRnZDLEdBQUV1QztrRkFBRnZDLEdBQUV1QztlQTZCcXdDO2NBRzl2Qzs7OytDQWhDVHZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOztzRUFBRnZDLEdBQUV1Qzs7d0VBQUZ2QyxHQUFFdUM7O3lFQUFGdkMsR0FBRXVDOzswRUFBRnZDLEdBQUV1Qzs7MEVBQUZ2QyxHQUFFdUM7OzRFQUFGdkMsR0FBRXVDOzs2RUFBRnZDLEdBQUV1Qzs7OEVBQUZ2QyxHQUFFdUM7OzhFQUFGdkMsR0FBRXVDOztnRkFBRnZDLEdBQUV1QzttRkFBRnZDLEdBQUV1QztlQXFDMnlDO2NBR3B5Qzs7OytDQXhDVHZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3lFQUFGdkMsR0FBRXVDOzswRUFBRnZDLEdBQUV1Qzs7MkVBQUZ2QyxHQUFFdUM7OzJFQUFGdkMsR0FBRXVDOzs2RUFBRnZDLEdBQUV1Qzs7OEVBQUZ2QyxHQUFFdUM7OytFQUFGdkMsR0FBRXVDOzsrRUFBRnZDLEdBQUV1Qzs7aUZBQUZ2QyxHQUFFdUM7b0ZBQUZ2QyxHQUFFdUM7ZUE2Q2kxQztjQUcxMEM7O1VBSUY7U0FFSjtPQUVMRyxNQUFJLDJCQTNMVnhCLEdBa0lNdUIsS0FsSUp0QjtNQTRMQSxzQ0E1TEZELEdBQUVDO2FBMkxJdUI7T0FvRE8sNEJBL09ieEIsR0FBRUM7O2NBMkxJdUI7O1VBeExKVDtlQThMYSxzQ0FqTWZmLEdBQUVDOzs7VUFJQWUsMENBL0VKTixrQkEyRUVWLEdBQUVDOzs7VUFLQWdCO2VBNE1hLHNDQWpOZmpCLEdBQUVDOzs7VUFNQWlCLDBDQWpGSlIsa0JBMkVFVixHQUFFQzs7O1VBT0FrQix3Q0FsRkpULGtCQTJFRVYsR0FBRUM7OztVQVFBbUI7ZUFpT2Esc0NBek9mcEIsR0FBRUM7Ozs7Ozs7aUJBUUFtQjs7VUFxUDRGL0QsY0FBQTZDLE1BQUE3Qzs7O09BQUE2QztTQUFpQjtzQ0E3UC9HRjttQkFPRW1COztVQXFQb0doQixrQkFBQXNCLE1BQUF0Qjs7O09BQUFzQjtTQUFpQjtzQ0E1UHZIekI7bUJBTUVrQjs7VUFxUHdHUSxrQkFBQUMsTUFBQUQ7OztPQUFBQztTQUFpQjtzQ0EzUDNIM0I7bUJBS0VpQjs7VUFxUGtGVyxrQkFBQUMsTUFBQUQ7OztPQUFBQztTQUFpQjtzQ0ExUHJHN0I7bUJBSUVnQjs7VUFxUHNHYyxrQkFBQUMsTUFBQUQ7OztPQUFBQztTQUFpQjtzQ0F6UHpIL0I7bUJBR0VlOztVQXFQZ0ZpQixrQkFBQUMsT0FBQUQ7OztPQUFBQztTQUFpQjtzQ0F4UG5HakM7S0F1UEksV0FDOEVpQyxNQUNzQkYsS0FDcEJGLEtBQ3NCRixLQUNKRixLQUNSdkI7O0dBRzdGO1lBRUhnQyw4QkFBOEJwRDtJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0FwUW5EZ0M7YUFvUXVCO0dBQWtEO0dBQ3ZDO0lBQWxDcUI7TUFBa0Msc0NBcFdsQzlCO1lBNldBK0IsOEJBQ0VwQyxHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVBLE9BQUEsMkJBRkZELEdBQUVDOztrQkFHTSxXQTFXVk0sc0JBdVdFUCxHQUFFQztHQUtlO1lBSW5Cb0MsMkJBQ0UxRCxJQUFJdEI7SUFDTiw4QkFERXNCO0lBRWEsSUFBWGlDO09BQUFBO0tBQUFBOztLQUlGLDhCQU5BakM7SUFPQSw4QkFQQUE7SUFRRiwyQkFSRUEsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0FhRiw4QkFmQWpDO0lBZ0JBLDhCQWhCQUE7SUFpQkYsMkJBakJFQSxJQUFJdEI7T0FFRnVEO0tBQUFBOztLQXNCRiw4QkF4QkFqQztJQXlCQSw4QkF6QkFBO0lBMEJGLFdBOUNBd0QsZ0NBb0JFeEQsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0ErQkYsOEJBakNBakM7SUFrQ0EsOEJBbENBQTtJQW1DRiwyQkFuQ0VBLElBQUl0QjtJQW1DTixPQUFBLDhCQW5DRXNCO0dBdUNxQjtZQUV2QjJELCtCQUFpQ2pHLEtBQVlnQjtJQUMvQyxHQURtQ2hCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQzFCLElBQUxDLEtBQUssNkJBRDBCRDtJQTFDakMyRCwyQkEyQ0UxRCxJQUQyQ3RCO0lBRS9DLE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCNEQsMEJBQ0V2QyxHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVKLDJCQUZFRCxHQUFFQztJQUcrQjtLQUEvQnVDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0lBQ0o7S0FDRSwyQkFSQTNDLEdBQUVDO0tBU0YsMkJBVEVBO0tBVUYsMkJBVkFELEdBQUVDO0tBVUY7TUFDSWxDO2lCQUNFZSxHQUFFdUMsS0FBSTNDO1NBQ1IsV0FESTJDOzs7OztrQkFBSTNDO2lEQUFOSSxNQUFFdUMsTUFBSTNDOztVQUVNLFdBQUEsa0NBRlpJLEdBQUV1QyxLQUFJM0M7VUFFTjs7U0FBQSxlQUZNQTs7Ozs7OENBQU5JLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDO21EQUFGdkMsR0FBRXVDO2NBS3VKO2FBR2hKOztnREFSVHZDLEdBQUV1Qzs7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7MERBQUZ2QyxHQUFFdUM7ZUFlZ1k7Y0FHblg7OytCQVlGOzs4Q0E5QmJ2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzt5REFBRnZDLEdBQUV1QztjQXVCZ1k7YUFHblg7Ozs4Q0ExQmZ2QyxHQUFFdUM7OzhDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzhEQUFGdkMsR0FBRXVDO2NBbUNtakI7YUFHNWlCOztTQUlGO1FBRUo7TUFFTEMsSUFBSSwyQkExRFJ0QixHQVdJakMsR0FYRmtDO0tBMkRGLHNDQTNEQUQsR0FBRUM7WUEwREVxQjtNQW9DTyw0QkE5Rlh0QixHQUFFQzs7YUEwREVxQjs7U0F2REZrQjtjQTZEVyxzQ0FoRWJ4QyxHQUFFQzs7O1NBSUF3QztjQW9FVyxzQ0F4RWJ6QyxHQUFFQzs7O1NBS0F5QywrQkE5REpOLDhCQXlERXBDLEdBQUVDOzs7U0FNQTBDO2NBa0ZXLHNDQXhGYjNDLEdBQUVDOzs7TUFtR0EsMkJBbkdGRCxHQUFFQztNQW9HQSwyQkFwR0ZELEdBQUVDO01BcUdBLDJCQXJHRkQsR0FBRUM7TUFxR0E7T0FDSXNCO2tCQUNFekMsR0FBRXVDLEtBQUkzQztVQUNSLFdBREkyQzs7Ozs7bUJBQUkzQzs7NkNBQU5JLE1BQUV1QyxNQUFJM0M7O1dBRU0sV0FBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztXQUVOOztVQUFBLGVBRk1BOzs7OzsrQ0FBTkksR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7b0RBQUZ2QyxHQUFFdUM7ZUFLdUo7Y0FHaEo7O2lEQVJUdkMsR0FBRXVDOzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1QzsyREFBRnZDLEdBQUV1QztnQkFlZ1k7ZUFHblg7O2dDQVlGOzsrQ0E5QmJ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1QzswREFBRnZDLEdBQUV1QztlQXVCZ1k7Y0FHblg7OzsrQ0ExQmZ2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7O3lEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOytEQUFGdkMsR0FBRXVDO2VBbUNtakI7Y0FHNWlCOztVQUlGO1NBRUo7T0FFTEcsTUFBSSwyQkFySlZ4QixHQXNHTXVCLEtBdEdKdEI7TUFzSkEsc0NBdEpGRCxHQUFFQzthQXFKSXVCO09Bb0NPLDRCQXpMYnhCLEdBQUVDOztjQXFKSXVCOztVQWxKSmdCO2VBd0phLHNDQTNKZnhDLEdBQUVDOzs7VUFJQXdDO2VBK0phLHNDQW5LZnpDLEdBQUVDOzs7VUFLQXlDLCtCQTlESk4sOEJBeURFcEMsR0FBRUM7OztVQU1BMEM7ZUE2S2Esc0NBbkxmM0MsR0FBRUM7Ozs7Ozs7aUJBTUEwQzs7VUErTDRFdEYsY0FBQTZDLE1BQUE3Qzs7O09BQUE2QztTQUFpQixzQ0FyTS9GRjttQkFLRTBDOztVQStMOER2QyxrQkFBQXNCLE1BQUF0Qjs7VUFBQXNCLE1BQWlCLHNDQXBNakZ6QjttQkFJRXlDOztVQStMb0ZmLGtCQUFBQyxNQUFBRDs7O09BQUFDO1NBQWlCO3NDQW5NdkczQjttQkFHRXdDOztVQStMNEVaLGtCQUFBQyxNQUFBRDs7O09BQUFDO1NBQWlCLHNDQWxNL0Y3QjtLQWlNSSxXQUMwRTZCLEtBQ1FGLEtBQ3RCRixLQUNjdkI7O0dBRzdFO1lBRUgwQywrQkFBK0I5RDtJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0E1TXBEeUQ7YUE0TXdCO0dBQWtEO1lBQzFFTTtJQUF3QkM7SUFBWUM7SUFBWUM7SUFBa0JDO0lBQWlCQztJQUFjQztJQUMvRnhFO0lBQUl0QjtJQUNOLDhCQURFc0I7SUFFYSxJQUFYaUM7T0FBQUE7S0FBQUE7O0tBSUYsOEJBTkFqQztJQU9BLDhCQVBBQTtJQVFGLFdBVHdCbUUsWUFDdEJuRSxJQUFJdEI7T0FFRnVEO0tBQUFBOztLQWFGLDhCQWZBakM7SUFnQkEsOEJBaEJBQTtJQWlCRixXQWxCb0NvRSxZQUNsQ3BFLElBQUl0QjtPQUVGdUQ7S0FBQUE7O0tBc0JGLDhCQXhCQWpDO0lBeUJBLDhCQXpCQUE7SUEwQkYsV0EzQmdEcUUsa0JBQzlDckUsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0ErQkYsOEJBakNBakM7SUFrQ0EsOEJBbENBQTtJQW1DRixXQXBDa0VzRSxpQkFDaEV0RSxJQUFJdEI7T0FFRnVEO0tBQUFBOztLQXdDRiw4QkExQ0FqQztJQTJDQSw4QkEzQ0FBO0lBNENGLFdBN0NtRnVFLGNBQ2pGdkUsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0FpREYsOEJBbkRBakM7SUFvREEsOEJBcERBQTtJQXFERixXQXREaUd3RSxvQkFDL0Z4RSxJQUFJdEI7SUFxRE4sT0FBQSw4QkFyREVzQjtHQXlEcUI7WUFFdkJ5RTtJQUE0Qk47SUFBWUM7SUFBWUM7SUFBa0JDO0lBQWlCQztJQUFjQztJQUFzQjlHO0lBQVlnQjtJQUN6SSxHQUQ2SGhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3BILElBQUxDLEtBQUssNkJBRG9IRDtJQTVEM0htRTtNQTRENEJDO01BQVlDO01BQVlDO01BQWtCQztNQUFpQkM7TUFBY0M7TUFDbkd4RTtNQURxSXRCO0lBRXpJLE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCMEU7SUFBdUJDO0lBQVdDO0lBQVdDO0lBQWlCQztJQUFnQkM7SUFBYUM7SUFDekYzRDtJQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVKLDJCQUZFRCxHQUFFQztJQUcrQjtLQUEvQjJEO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0lBQ0o7S0FDRSwyQkFWQWpFLEdBQUVDO0tBV0YsMkJBWEVBO0tBWUYsMkJBWkFELEdBQUVDO0tBWUY7TUFDSWxDO2lCQUNFZSxHQUFFdUMsS0FBSTNDO1NBQ1IsV0FESTJDOzs7OztrQkFBSTNDO2lEQUFOSSxNQUFFdUMsTUFBSTNDOztVQUVNLFdBQUEsa0NBRlpJLEdBQUV1QyxLQUFJM0M7VUFFTjs7U0FBQSxlQUZNQTs7Ozs7OENBQU5JLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3lEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7Z0VBQUZ2QyxHQUFFdUM7aURBQUZ2QyxHQUFFdUM7OztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7b0RBQUZ2QyxHQUFFdUM7Z0JBUWlJO2VBR2xIOztnQ0FZRjs7K0NBdkJmdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1QzttREFBRnZDLEdBQUV1QztlQWdCaUk7Y0FHbEg7O2FBUVI7Ozs4Q0EzQlR2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2lFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDO3VFQUFGdkMsR0FBRXVDO2NBZ0N5NEI7YUFHbDRCOzs7OENBbkNUdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7eURBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1QzswRUFBRnZDLEdBQUV1QztjQXdDMi9CO2FBR3AvQjs7OzhDQTNDVHZDLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3lEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOztnRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O3FFQUFGdkMsR0FBRXVDOztzRUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3dFQUFGdkMsR0FBRXVDOzJFQUFGdkMsR0FBRXVDO2NBZ0RpaUM7YUFHMWhDOzs7OENBbkRUdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7eURBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3lFQUFGdkMsR0FBRXVDOzswRUFBRnZDLEdBQUV1Qzs2RUFBRnZDLEdBQUV1QztjQXdENm1DO2FBR3RtQzs7U0FJRjtRQUVKO01BRUxDLElBQUksMkJBakZSdEIsR0FhSWpDLEdBYkZrQztLQWtGRixzQ0FsRkFELEdBQUVDO1lBaUZFcUI7TUFvRE8sNEJBcklYdEIsR0FBRUM7O2FBaUZFcUI7O1NBOUVGc0Msc0NBb0ZXLFdBeEZRTixXQUNyQnRELEdBQUVDOzs7U0FJQTRELHNDQTJGVyxXQWhHbUJOLFdBQ2hDdkQsR0FBRUM7OztTQUtBNkQ7Y0FrR1csV0F4RzhCTixpQkFDM0N4RCxHQUFFQzs7O1NBTUE4RDtjQXlHVyxXQWhIK0NOLGdCQUM1RHpELEdBQUVDOzs7U0FPQStEO2NBZ0hXLFdBeEgrRE4sYUFDNUUxRCxHQUFFQzs7O1NBUUFnRTtjQXVIVyxXQWhJNEVOLG1CQUN6RjNELEdBQUVDOzs7TUEwSUEsMkJBMUlGRCxHQUFFQztNQTJJQSwyQkEzSUZELEdBQUVDO01BNElBLDJCQTVJRkQsR0FBRUM7TUE0SUE7T0FDSXNCO2tCQUNFekMsR0FBRXVDLEtBQUkzQztVQUNSLFdBREkyQzs7Ozs7bUJBQUkzQzs7NkNBQU5JLE1BQUV1QyxNQUFJM0M7O1dBRU0sV0FBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztXQUVOOztVQUFBLGVBRk1BOzs7OzsrQ0FBTkksR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1QztpRUFBRnZDLEdBQUV1QztrREFBRnZDLEdBQUV1Qzs7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1QztxREFBRnZDLEdBQUV1QztpQkFRaUk7Z0JBR2xIOztpQ0FZRjs7Z0RBdkJmdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1QztvREFBRnZDLEdBQUV1QztnQkFnQmlJO2VBR2xIOztjQVFSOzs7K0NBM0JUdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2lFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDOztxRUFBRnZDLEdBQUV1Qzt3RUFBRnZDLEdBQUV1QztlQWdDeTRCO2NBR2w0Qjs7OytDQW5DVHZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1Qzs7d0VBQUZ2QyxHQUFFdUM7MkVBQUZ2QyxHQUFFdUM7ZUF3QzIvQjtjQUdwL0I7OzsrQ0EzQ1R2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDOztzRUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3dFQUFGdkMsR0FBRXVDOzt5RUFBRnZDLEdBQUV1Qzs0RUFBRnZDLEdBQUV1QztlQWdEaWlDO2NBRzFoQzs7OytDQW5EVHZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1Qzs7d0VBQUZ2QyxHQUFFdUM7O3dFQUFGdkMsR0FBRXVDOzswRUFBRnZDLEdBQUV1Qzs7MkVBQUZ2QyxHQUFFdUM7OEVBQUZ2QyxHQUFFdUM7ZUF3RDZtQztjQUd0bUM7O1VBSUY7U0FFSjtPQUVMRyxNQUFJLDJCQWpOVnhCLEdBNklNdUIsS0E3SUp0QjtNQWtOQSxzQ0FsTkZELEdBQUVDO2FBaU5JdUI7T0FvRE8sNEJBclFieEIsR0FBRUM7O2NBaU5JdUI7O1VBOU1Kb0Msc0NBb05hLFdBeE5NTixXQUNyQnRELEdBQUVDOzs7VUFJQTRELHNDQTJOYSxXQWhPaUJOLFdBQ2hDdkQsR0FBRUM7OztVQUtBNkQ7ZUFrT2EsV0F4TzRCTixpQkFDM0N4RCxHQUFFQzs7O1VBTUE4RDtlQXlPYSxXQWhQNkNOLGdCQUM1RHpELEdBQUVDOzs7VUFPQStEO2VBZ1BhLFdBeFA2RE4sYUFDNUUxRCxHQUFFQzs7O1VBUUFnRTtlQXVQYSxXQWhRMEVOLG1CQUN6RjNELEdBQUVDOzs7Ozs7O2lCQVFBZ0U7O1VBMlE0RjVHLGNBQUE2QyxNQUFBN0M7OztPQUFBNkM7U0FBaUI7c0NBblIvR0Y7bUJBT0VnRTs7VUEyUWdGN0Qsa0JBQUFzQixNQUFBdEI7OztPQUFBc0I7U0FBaUI7c0NBbFJuR3pCO21CQU1FK0Q7O1VBMlFzRnJDLGtCQUFBQyxNQUFBRDs7O09BQUFDO1NBQWlCO3NDQWpSekczQjttQkFLRThEOztVQTJRd0ZsQyxrQkFBQUMsTUFBQUQ7OztPQUFBQztTQUFpQjtzQ0FoUjNHN0I7bUJBSUU2RDs7VUEyUTRFL0Isa0JBQUFDLE1BQUFEOzs7T0FBQUM7U0FBaUI7c0NBL1EvRi9CO21CQUdFNEQ7O1VBMlE0RTVCLGtCQUFBQyxPQUFBRDs7O09BQUFDO1NBQWlCO3NDQTlRL0ZqQztLQTZRSSxXQUMwRWlDLE1BQ0FGLEtBQ1lGLEtBQ0ZGLEtBQ05GLEtBQ1l2Qjs7R0FHN0Y7WUFFSGdFO0lBQTRCWjtJQUFXQztJQUFXQztJQUFpQkM7SUFBZ0JDO0lBQWFDO0lBQW1CN0U7SUFDcUIsV0FBQSxnQ0FEckJBO0lBQ3FCLE9BMVJ4SXVFO2FBeVI0QkM7YUFBV0M7YUFBV0M7YUFBaUJDO2FBQWdCQzthQUFhQzthQUNZOztHQUFrRDtPQUM5SlE7WUFHQUMsK0JBQW9DL0gsS0FBWWdCO0lBQ2xELEdBRHNDaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDN0IsSUFBTEMsS0FBSyw2QkFENkJEO0lBRXRDLFdBTEV5RiwrQkFJRXhGLElBRDhDdEI7SUFFbEQsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEIwRjtZQUdBQywrQkFBa0N4RjtJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUp2RHVGO2FBSTJCOztHQUFrRDtZQUM3RUUscUJBQ0U1RixJQUFJdEI7SUFDTiw4QkFERXNCO0lBRWEsSUFBWGlDO09BQUFBO0tBQUFBOztLQUlGLDhCQU5BakM7SUFPQSw4QkFQQUE7SUFRRiwyQkFSRUEsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0FhRiw4QkFmQWpDO0lBZ0JBLDhCQWhCQUE7SUFpQkYsMkJBakJFQSxJQUFJdEI7T0FFRnVEO0tBQUFBOztLQXNCRiw4QkF4QkFqQztJQXlCQSw4QkF6QkFBO0lBMEJGLDJCQTFCRUEsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0ErQkYsOEJBakNBakM7SUFrQ0EsOEJBbENBQTtJQW1DRiwyQkFuQ0VBLElBQUl0QjtPQUVGdUQ7S0FBQUE7O0tBd0NGLDhCQTFDQWpDO0lBMkNBLDhCQTNDQUE7SUE0Q0YsMkJBNUNFQSxJQUFJdEI7T0FFRnVEO0tBQUFBOztLQWlERiw4QkFuREFqQztJQW9EQSw4QkFwREFBO0lBcURGLDJCQXJERUEsSUFBSXRCO0lBcUROLE9BQUEsOEJBckRFc0I7R0F5RHFCO1lBTXZCNkYsb0JBQ0V4RSxHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVKLDJCQUZFRCxHQUFFQztJQUcrQjtLQUEvQjJEO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0tBQ0FDO0lBQ0o7S0FDRSwyQkFWQWpFLEdBQUVDO0tBV0YsMkJBWEVBO0tBWUYsMkJBWkFELEdBQUVDO0tBWUY7TUFDSWxDO2lCQUNFZSxHQUFFdUMsS0FBSTNDO1NBQ1IsV0FESTJDOzs7OztrQkFBSTNDO2lEQUFOSSxNQUFFdUMsTUFBSTNDOztVQUVNLFdBQUEsa0NBRlpJLEdBQUV1QyxLQUFJM0M7VUFFTjs7U0FBQSxlQUZNQTs7Ozs7OENBQU5JLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3lEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7Z0VBQUZ2QyxHQUFFdUM7aURBQUZ2QyxHQUFFdUM7OztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7b0RBQUZ2QyxHQUFFdUM7Z0JBUWlJO2VBR2xIOztnQ0FZRjs7K0NBdkJmdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1QzttREFBRnZDLEdBQUV1QztlQWdCaUk7Y0FHbEg7O2FBUVI7Ozs4Q0EzQlR2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2lFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDO3VFQUFGdkMsR0FBRXVDO2NBZ0N5NEI7YUFHbDRCOzs7OENBbkNUdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7eURBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1QzswRUFBRnZDLEdBQUV1QztjQXdDMi9CO2FBR3AvQjs7OzhDQTNDVHZDLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3lEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOztnRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O3FFQUFGdkMsR0FBRXVDOztzRUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3dFQUFGdkMsR0FBRXVDOzJFQUFGdkMsR0FBRXVDO2NBZ0RpaUM7YUFHMWhDOzs7OENBbkRUdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7eURBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7cUVBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3lFQUFGdkMsR0FBRXVDOzswRUFBRnZDLEdBQUV1Qzs2RUFBRnZDLEdBQUV1QztjQXdENm1DO2FBR3RtQzs7U0FJRjtRQUVKO01BRUxDLElBQUksMkJBakZSdEIsR0FhSWpDLEdBYkZrQztLQWtGRixzQ0FsRkFELEdBQUVDO1lBaUZFcUI7TUFvRE8sNEJBcklYdEIsR0FBRUM7O2FBaUZFcUI7O1NBOUVGc0M7Y0FvRlcsc0NBdkZiNUQsR0FBRUM7OztTQUlBNEQ7Y0EyRlcsc0NBL0ZiN0QsR0FBRUM7OztTQUtBNkQ7Y0FrR1csc0NBdkdiOUQsR0FBRUM7OztTQU1BOEQ7Y0F5R1csc0NBL0diL0QsR0FBRUM7OztTQU9BK0Q7Y0FnSFcsc0NBdkhiaEUsR0FBRUM7OztTQVFBZ0U7Y0F1SFcsc0NBL0hiakUsR0FBRUM7OztNQTBJQSwyQkExSUZELEdBQUVDO01BMklBLDJCQTNJRkQsR0FBRUM7TUE0SUEsMkJBNUlGRCxHQUFFQztNQTRJQTtPQUNJc0I7a0JBQ0V6QyxHQUFFdUMsS0FBSTNDO1VBQ1IsV0FESTJDOzs7OzttQkFBSTNDOzs2Q0FBTkksTUFBRXVDLE1BQUkzQzs7V0FFTSxXQUFBLGtDQUZaSSxHQUFFdUMsS0FBSTNDO1dBRU47O1VBQUEsZUFGTUE7Ozs7OytDQUFOSSxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDO2lFQUFGdkMsR0FBRXVDO2tEQUFGdkMsR0FBRXVDOzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDO3FEQUFGdkMsR0FBRXVDO2lCQVFpSTtnQkFHbEg7O2lDQVlGOztnREF2QmZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDO29EQUFGdkMsR0FBRXVDO2dCQWdCaUk7ZUFHbEg7O2NBUVI7OzsrQ0EzQlR2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O3FFQUFGdkMsR0FBRXVDO3dFQUFGdkMsR0FBRXVDO2VBZ0N5NEI7Y0FHbDRCOzs7K0NBbkNUdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2lFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDOztxRUFBRnZDLEdBQUV1Qzs7c0VBQUZ2QyxHQUFFdUM7O3VFQUFGdkMsR0FBRXVDOzt3RUFBRnZDLEdBQUV1QzsyRUFBRnZDLEdBQUV1QztlQXdDMi9CO2NBR3AvQjs7OytDQTNDVHZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O3NFQUFGdkMsR0FBRXVDOzt1RUFBRnZDLEdBQUV1Qzs7d0VBQUZ2QyxHQUFFdUM7O3lFQUFGdkMsR0FBRXVDOzRFQUFGdkMsR0FBRXVDO2VBZ0RpaUM7Y0FHMWhDOzs7K0NBbkRUdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2lFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztxRUFBRnZDLEdBQUV1Qzs7c0VBQUZ2QyxHQUFFdUM7O3VFQUFGdkMsR0FBRXVDOzt3RUFBRnZDLEdBQUV1Qzs7d0VBQUZ2QyxHQUFFdUM7OzBFQUFGdkMsR0FBRXVDOzsyRUFBRnZDLEdBQUV1Qzs4RUFBRnZDLEdBQUV1QztlQXdENm1DO2NBR3RtQzs7VUFJRjtTQUVKO09BRUxHLE1BQUksMkJBak5WeEIsR0E2SU11QixLQTdJSnRCO01Ba05BLHNDQWxORkQsR0FBRUM7YUFpTkl1QjtPQW9ETyw0QkFyUWJ4QixHQUFFQzs7Y0FpTkl1Qjs7VUE5TUpvQztlQW9OYSxzQ0F2TmY1RCxHQUFFQzs7O1VBSUE0RDtlQTJOYSxzQ0EvTmY3RCxHQUFFQzs7O1VBS0E2RDtlQWtPYSxzQ0F2T2Y5RCxHQUFFQzs7O1VBTUE4RDtlQXlPYSxzQ0EvT2YvRCxHQUFFQzs7O1VBT0ErRDtlQWdQYSxzQ0F2UGZoRSxHQUFFQzs7O1VBUUFnRTtlQXVQYSxzQ0EvUGZqRSxHQUFFQzs7Ozs7OztpQkFRQWdFOztVQTJRNEY1RyxjQUFBNkMsTUFBQTdDOzs7T0FBQTZDO1NBQWlCO3NDQW5SL0dGO21CQU9FZ0U7O1VBMlFnRjdELGtCQUFBc0IsTUFBQXRCOzs7T0FBQXNCO1NBQWlCO3NDQWxSbkd6QjttQkFNRStEOztVQTJRc0ZyQyxrQkFBQUMsTUFBQUQ7OztPQUFBQztTQUFpQjtzQ0FqUnpHM0I7bUJBS0U4RDs7VUEyUXdGbEMsa0JBQUFDLE1BQUFEOzs7T0FBQUM7U0FBaUI7c0NBaFIzRzdCO21CQUlFNkQ7O1VBMlE0RS9CLGtCQUFBQyxNQUFBRDs7O09BQUFDO1NBQWlCO3NDQS9RL0YvQjttQkFHRTREOztVQTJRNEU1QixrQkFBQUMsT0FBQUQ7OztPQUFBQztTQUFpQjtzQ0E5US9GakM7S0E2UUksV0FDMEVpQyxNQUNBRixLQUNZRixLQUNGRixLQUNORixLQUNZdkI7O0dBRzdGO1lBT0h1RSwrQkFBbUNwSSxLQUFZZ0I7SUFDakQsR0FEcUNoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUM1QixJQUFMQyxLQUFLLDZCQUQ0QkQ7SUE5Vm5DNkYscUJBK1ZFNUYsSUFENkN0QjtJQUVqRCxPQUFBLDZCQURJc0I7R0FFYztZQUloQitGLCtCQUFpQzVGO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQXRTdEQwRixvQkFzUzBCO0dBQWtEO1lBQzVFRyxzQkFDRWhHLElBQUl0QjtJQUNOLDhCQURFc0I7SUFFYSxJQUFYaUM7T0FBQUE7S0FBQUE7O0tBSUYsOEJBTkFqQztJQU9BLDhCQVBBQTtJQWx5Q0ZnQywwQkFreUNFaEMsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0FhRiw4QkFmQWpDO0lBZ0JBLDhCQWhCQUE7SUF4V0Y0RixxQkF3V0U1RixJQUFJdEI7SUFpQk4sT0FBQSw4QkFqQkVzQjtHQXFCcUI7WUFFdkJpRywwQkFBNEJ2SSxLQUFZZ0I7SUFDMUMsR0FEOEJoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNyQixJQUFMQyxLQUFLLDZCQURxQkQ7SUF4QjVCaUcsc0JBeUJFaEcsSUFEc0N0QjtJQUUxQyxPQUFBLDZCQURJc0I7R0FFYztZQUNoQmtHLHFCQUNFN0UsR0FBRUM7SUFDSiwyQkFERUQsR0FBRUM7SUFFSiwyQkFGRUQsR0FBRUM7SUFHaUM7S0FBakM2RTtLQUNBQztJQUNKO0tBQ0UsMkJBTkEvRSxHQUFFQztLQU9GLDJCQVBFQTtLQVFGLDJCQVJBRCxHQUFFQztLQVFGO01BQ0lsQztpQkFDRWUsR0FBRXVDLEtBQUkzQztTQUNSLFdBREkyQzs7Ozs7a0JBQUkzQztpREFBTkksTUFBRXVDLE1BQUkzQzs7VUFFTSxXQUFBLGtDQUZaSSxHQUFFdUMsS0FBSTNDO1VBRU47O1NBQUEsZUFGTUE7Ozs7OzhDQUFOSSxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOzsrREFBRnZDLEdBQUV1Qzs7Z0VBQUZ2QyxHQUFFdUM7O2lFQUFGdkMsR0FBRXVDOztrRUFBRnZDLEdBQUV1QztxRUFBRnZDLEdBQUV1QztjQUs2ekI7YUFHdHpCOzs7OzhDQVJUdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7eURBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs4REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDOztvRUFBRnZDLEdBQUV1Qzt1RUFBRnZDLEdBQUV1QztjQWF5NEI7YUFHbDRCOztTQUlGO1FBRUo7TUFFTEMsSUFBSSwyQkFsQ1J0QixHQVNJakMsR0FURmtDO0tBbUNGLHNDQW5DQUQsR0FBRUM7Y0FrQ0VxQjtNQS9CRndELHdDQWp3Q0poRSx5QkE4dkNFZCxHQUFFQzttQkFrQ0VxQjtNQTlCRnlELHNDQXhVSlAsb0JBb1VFeEUsR0FBRUM7O01Bc0RTLDRCQXREWEQsR0FBRUM7O01BMkRBLDJCQTNERkQsR0FBRUM7TUE0REEsMkJBNURGRCxHQUFFQztNQTZEQSwyQkE3REZELEdBQUVDO01BNkRBO09BQ0lzQjtrQkFDRXpDLEdBQUV1QyxLQUFJM0M7VUFDUixXQURJMkM7Ozs7O21CQUFJM0M7OzZDQUFOSSxNQUFFdUMsTUFBSTNDOztXQUVNLFdBQUEsa0NBRlpJLEdBQUV1QyxLQUFJM0M7V0FFTjs7VUFBQSxlQUZNQTs7Ozs7K0NBQU5JLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7OzZEQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7K0RBQUZ2QyxHQUFFdUM7O2dFQUFGdkMsR0FBRXVDOztpRUFBRnZDLEdBQUV1Qzs7a0VBQUZ2QyxHQUFFdUM7O21FQUFGdkMsR0FBRXVDO3NFQUFGdkMsR0FBRXVDO2VBSzZ6QjtjQUd0ekI7Ozs7K0NBUlR2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOzttREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3NEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzREQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOztnRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O3FFQUFGdkMsR0FBRXVDO3dFQUFGdkMsR0FBRXVDO2VBYXk0QjtjQUdsNEI7O1VBSUY7U0FFSjtPQUVMRyxNQUFJLDJCQXZGVnhCLEdBOERNdUIsS0E5REp0QjtNQXdGQSxzQ0F4RkZELEdBQUVDO2VBdUZJdUI7T0FwRkpzRDtZQWp3Q0poRSx5QkE4dkNFZCxHQUFFQztvQkF1Rkl1QjtPQW5GSnVELHNDQXhVSlAsb0JBb1VFeEUsR0FBRUM7O09BMkdXLDRCQTNHYkQsR0FBRUM7Ozs7OztpQkFJQThFOztVQWlINEUxSCxjQUFBNkMsTUFBQTdDOzs7T0FBQTZDO1NBQWlCO3NDQXJIL0ZGO21CQUdFOEU7O1VBaUhnRjNFLGtCQUFBc0IsTUFBQXRCOzs7T0FBQXNCO1NBQWlCO3NDQXBIbkd6QjtLQW1ISSxXQUM4RXlCLEtBQ0p2Qjs7R0FHN0U7WUFFSDhFLDBCQUEwQmxHO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQTVIL0MrRixxQkE0SG1CO0dBQWtEO09BQ3JFSTtZQUdBQyx3QkFBMEI3SSxLQUFZZ0I7SUFDeEMsR0FENEJoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNuQixJQUFMQyxLQUFLLDZCQURtQkQ7SUFFNUIsV0FMRXVHLHFCQUlFdEcsSUFEb0N0QjtJQUV4QyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQndHO1lBR0FDLHdCQUF3QnRHO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSjdDcUcsb0JBSWlCO0dBQWtEO1lBQ25FRSwwQkFDRTFHLElBQUl0QjtJQUNOLDhCQURFc0I7SUFFYSxJQUFYaUM7T0FBQUE7S0FBQUE7O0tBSUYsOEJBTkFqQztJQU9BLDhCQVBBQTtJQVFGLFdBOStDQTBCLHVCQXMrQ0UxQixJQUFJdEI7SUFRTixPQUFBLDhCQVJFc0I7R0FZcUI7WUFFdkIyRyw4QkFBZ0NqSixLQUFZZ0I7SUFDOUMsR0FEa0NoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN6QixJQUFMQyxLQUFLLDZCQUR5QkQ7SUFmaEMyRywwQkFnQkUxRyxJQUQwQ3RCO0lBRTlDLE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCNEcseUJBQ0V2RixHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVKLDJCQUZFRCxHQUFFQztJQUc0QyxJQUE1Q3VGO0lBQ0o7S0FDRSwyQkFMQXhGLEdBQUVDO0tBTUYsMkJBTkVBO0tBT0YsMkJBUEFELEdBQUVDO0tBT0Y7TUFDSWxDO2lCQUNFZSxHQUFFdUMsS0FBSTNDO1NBQ1IsV0FESTJDOzs7OztrQkFBSTNDO2lEQUFOSSxNQUFFdUMsTUFBSTNDOztVQUVNLFdBQUEsa0NBRlpJLEdBQUV1QyxLQUFJM0M7VUFFTjs7O2tCQUZNQTs7MkNBQU5JLEdBQUV1Qzs7NENBQUZ2QyxHQUFFdUM7OzZDQUFGdkMsR0FBRXVDOzs4Q0FBRnZDLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOzt1REFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7O3lEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs2REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7OytEQUFGdkMsR0FBRXVDOztnRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7bUVBQUZ2QyxHQUFFdUM7O3FFQUFGdkMsR0FBRXVDOztzRUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3dFQUFGdkMsR0FBRXVDOzt3RUFBRnZDLEdBQUV1Qzs7MEVBQUZ2QyxHQUFFdUM7OzJFQUFGdkMsR0FBRXVDOzs0RUFBRnZDLEdBQUV1QzsrRUFBRnZDLEdBQUV1QztVQUdpekM7U0FHaHpDO1FBRUo7TUFFREMsSUFBSSwyQkFuQlJ0QixHQVFJakMsR0FSRmtDO0tBb0JGLHNDQXBCQUQsR0FBRUM7Y0FtQkVxQjtNQWhCRmtFO1dBc0JXLFdBM2dEZmpGLHNCQWsvQ0VQLEdBQUVDOztNQStCUyw0QkEvQlhELEdBQUVDOztNQW9DQSwyQkFwQ0ZELEdBQUVDO01BcUNBLDJCQXJDRkQsR0FBRUM7TUFzQ0EsMkJBdENGRCxHQUFFQztNQXNDQTtPQUNJc0I7a0JBQ0V6QyxHQUFFdUMsS0FBSTNDO1VBQ1IsV0FESTJDOzs7OzttQkFBSTNDOzs2Q0FBTkksTUFBRXVDLE1BQUkzQzs7V0FFTSxXQUFBLGtDQUZaSSxHQUFFdUMsS0FBSTNDO1dBRU47OzttQkFGTUE7OzRDQUFOSSxHQUFFdUM7OzZDQUFGdkMsR0FBRXVDOzs4Q0FBRnZDLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O21EQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7cURBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7d0RBQUZ2QyxHQUFFdUM7O3lEQUFGdkMsR0FBRXVDOzswREFBRnZDLEdBQUV1Qzs7MkRBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7OERBQUZ2QyxHQUFFdUM7OzhEQUFGdkMsR0FBRXVDOztnRUFBRnZDLEdBQUV1Qzs7aUVBQUZ2QyxHQUFFdUM7O2tFQUFGdkMsR0FBRXVDOzttRUFBRnZDLEdBQUV1Qzs7b0VBQUZ2QyxHQUFFdUM7O29FQUFGdkMsR0FBRXVDOztzRUFBRnZDLEdBQUV1Qzs7dUVBQUZ2QyxHQUFFdUM7O3dFQUFGdkMsR0FBRXVDOzt5RUFBRnZDLEdBQUV1Qzs7eUVBQUZ2QyxHQUFFdUM7OzJFQUFGdkMsR0FBRXVDOzs0RUFBRnZDLEdBQUV1Qzs7NkVBQUZ2QyxHQUFFdUM7Z0ZBQUZ2QyxHQUFFdUM7V0FHaXpDO1VBR2h6QztTQUVKO09BRURHLE1BQUksMkJBbERWeEIsR0F1Q011QixLQXZDSnRCO01BbURBLHNDQW5ERkQsR0FBRUM7ZUFrREl1QjtPQS9DSmdFO1lBcURhLFdBMWlEakJqRixzQkFrL0NFUCxHQUFFQzs7T0E4RFcsNEJBOURiRCxHQUFFQzs7Ozs7O2lCQUdBdUY7O1VBb0VzR25JLGNBQUE2QyxNQUFBN0M7OztPQUFBNkM7U0FBaUI7c0NBdkV6SEY7S0FzRUksV0FDb0dFOztHQUd2RztZQUVIdUYsOEJBQThCM0c7SUFDcUIsV0FBQSxnQ0FEckJBO0lBQ3FCLE9BOUVuRHlHO2FBOEV1QjtHQUFrRDtPQUN6RUc7WUFHQUMsd0JBQTBCdEosS0FBWWdCO0lBQ3hDLEdBRDRCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDbkIsSUFBTEMsS0FBSyw2QkFEbUJEO0lBRTVCLFdBTEVnSCxxQkFJRS9HLElBRG9DdEI7SUFFeEMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEJpSDtZQUdBQyx3QkFBd0IvRztJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUo3QzhHLG9CQUlpQjtHQUFrRDtZQUNuRUUsYUFBYUMsVUFBVUM7SUFBZSxPQUFBO2dEQUF6QkQsVUFBVUM7R0FFMUI7WUFDR0MsaUJBQWlCRixVQUFVQyxhQUFlM0osS0FBWWdCO0lBQ3hELEdBRDRDaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDbkMsSUFBTEMsS0FBSyw2QkFEbUNEO0lBRTVDLFdBTEVvSCxhQUdpQkMsVUFBVUMsY0FDekJySCxJQURvRHRCO0lBRXhELE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCdUgsWUFBWUMsU0FBU0M7SUFBYyxPQUFBLDhDQUF2QkQsU0FBU0M7R0FFeEI7WUFDR0MsaUJBQWlCRixTQUFTQyxZQUFZdEg7SUFDeEM7S0FBNkQsT0FBQSxnQ0FEckJBO0tBQ1AsT0FBQTtJQUE0QixPQUFBLFdBSjNEb0gsWUFHaUJDLFNBQVNDO0dBQ3VEO09BQ2pGRTtZQUdBQyx5QkFBMkJsSyxLQUFZZ0I7SUFDekMsR0FENkJoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNwQixJQUFMQyxLQUFLLDZCQURvQkQ7SUFFN0IsV0FMRTRILHNCQUlFM0gsSUFEcUN0QjtJQUV6QyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQjZIO1lBR0FDLHlCQUF5QjNIO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSjlDMEg7YUFJa0I7O0dBQWtEO09BQ3BFRTtZQUdBQyxjQUFnQnRLLEtBQVlnQjtJQUM5QixHQURrQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ1QsSUFBTEMsS0FBSyw2QkFEU0Q7SUFFbEIsV0FMRWdJLFdBSUUvSCxJQUQwQnRCO0lBRTlCLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCaUk7WUFHQUMsY0FBYy9IO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQUFBLFdBSm5DOEgsVUFJTztHQUFrRDtnQkFHckRqSSxJQUFHdEI7SUFDTCw4QkFERXNCO1FBRUd1QixNQUZBN0M7SUFHTCwyQkFIRXNCLElBRUd1QjtJQUtMLDhCQVBFdkI7UUFRTXdCLE1BUkg5QztJQVNMLFdBdkJGcUosV0FjSS9ILElBUU13QjtJQUtSLE9BQUEsOEJBYkV4QjtHQWFxQjtHQWZBLElBQXpCbUksd0JBQXlCO2dCQXdCckI5RyxHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVZO0tBQVo4RyxZQUFZLDJCQUZkL0csR0FBRUM7S0FHQXZCO0tBQ0FzSTtJQUNKO0tBR00sSUFGQUMsS0FFQSxzQ0FSSmpILEdBQUVDO0tBR0F2QjtLQVVBLDJCQWJGc0IsR0FBRUM7S0FjQSwyQkFkRkQsR0FFRStHLFdBRkE5RztLQW1CRSxJQURFaUgsS0FDRixXQWhEUk4sVUE2Qkk1RyxHQUFFQztLQUdBdkI7S0FxQkE7TUFDRSwyQkF6QkpzQixHQUFFQztNQTBCRSwyQkExQkpELEdBRUUrRyxXQUZBOUc7Ozs7O01BSUErRzs7WUFBQUE7TUEwQndCO09BS3BCO1FBRkEsNEJBakNOaEgsR0FBRUM7UUFrQ0ksMkJBbENORCxHQUFFQztRQW1DSSwyQkFuQ05ELEdBRUUrRyxXQUZBOUc7Ozs7Ozs7S0F1Q0YsZUFqQ0lnSCxJQVlFQztLQXFCTjs7Ozs7TUFFQSxPQUFBLHNDQXpDQWxILEdBR0V0Qjs7O0dBc0MwRDtHQTNDeEMsSUFBeEJ5SSx1QkFBd0I7WUFnRHhCQyxvQkFDRXpJLElBQUl0QjtJQUNOLDhCQURFc0I7SUFFYSxJQUFYaUM7T0FBQUE7S0FBQUE7O0tBSUYsOEJBTkFqQztJQU9BLDhCQVBBQTtJQVFGLFdBL0hBK0cscUJBdUhFL0csSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0FhRiw4QkFmQWpDO0lBZ0JBLDhCQWhCQUE7SUFpQkYsV0FoSEEySCxzQkErRkUzSCxJQUFJdEI7T0FFRnVEO0tBQUFBOztLQXNCRiw4QkF4QkFqQztJQXlCQSw4QkF6QkFBO0lBMEJGLFdBakdBbUksdUJBdUVFbkksSUFBSXRCO0lBMEJOLE9BQUEsOEJBMUJFc0I7R0E4QnFCO1lBRXZCMEksd0JBQTBCaEwsS0FBWWdCO0lBQ3hDLEdBRDRCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDbkIsSUFBTEMsS0FBSyw2QkFEbUJEO0lBakMxQjBJLG9CQWtDRXpJLElBRG9DdEI7SUFFeEMsT0FBQSw2QkFESXNCO0dBRWM7WUFDaEIySSxtQkFDRXRILEdBQUVDO0lBQ0osMkJBREVELEdBQUVDO0lBRUosMkJBRkVELEdBQUVDO0lBR3dCO0tBQXhCc0g7S0FDQUM7S0FDQUM7SUFDSjtLQUNFLDJCQVBBekgsR0FBRUM7S0FRRiwyQkFSRUE7S0FTRiwyQkFUQUQsR0FBRUM7S0FTRjtNQUNJbEM7aUJBQ0VlLEdBQUV1QyxLQUFJM0M7U0FDUixXQURJMkM7Ozs7O2tCQUFJM0M7aURBQU5JLE1BQUV1QyxNQUFJM0M7O1VBRU0sV0FBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztVQUVOOztrQkFGTUE7OzBDQUFOSSxHQUFFdUM7OzRDQUFGdkMsR0FBRXVDOytDQUFGdkMsR0FBRXVDO1dBS2tIO1VBRzNHOzttQkFSSDNDOzsyQ0FBTkksR0FBRXVDOzsyQ0FBRnZDLEdBQUV1Qzs7NkNBQUZ2QyxHQUFFdUM7OzhDQUFGdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztvREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1QzsyREFBRnZDLEdBQUV1QztXQWFtakI7VUFHNWlCOzttQkFoQkgzQyxLQTRCQzs7MENBNUJQSSxHQUFFdUM7OzBDQUFGdkMsR0FBRXVDOzs0Q0FBRnZDLEdBQUV1Qzs7NkNBQUZ2QyxHQUFFdUM7OzZDQUFGdkMsR0FBRXVDOzs4Q0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7c0RBQUZ2QyxHQUFFdUM7O3VEQUFGdkMsR0FBRXVDOzt3REFBRnZDLEdBQUV1Qzs7eURBQUZ2QyxHQUFFdUM7OzBEQUFGdkMsR0FBRXVDOzsyREFBRnZDLEdBQUV1Qzs7NERBQUZ2QyxHQUFFdUM7K0RBQUZ2QyxHQUFFdUM7VUFxQml2QjtTQUcxdUI7UUFNTjtNQUVMQyxJQUFJLDJCQTNDUnRCLEdBVUlqQyxHQVZGa0M7S0E0Q0Ysc0NBNUNBRCxHQUFFQztZQTJDRXFCO01BNEJPLDRCQXZFWHRCLEdBQUVDOzthQTJDRXFCOztTQXhDRmlHLCtCQThDVyxXQXRNZjNCLG9CQXFKRTVGLEdBQUVDOzs7U0FJQXVILG1CQXFEVyxXQXRMZmhCLHFCQTZIRXhHLEdBQUVDOztTQUtBd0g7Y0E0RFcsV0F2SmZOLHNCQXNGRW5ILEdBQUVDOzs7TUE0RUEsMkJBNUVGRCxHQUFFQztNQTZFQSwyQkE3RUZELEdBQUVDO01BOEVBLDJCQTlFRkQsR0FBRUM7TUE4RUE7T0FDSXNCO2tCQUNFekMsR0FBRXVDLEtBQUkzQztVQUNSLFdBREkyQzs7Ozs7bUJBQUkzQzs7NkNBQU5JLE1BQUV1QyxNQUFJM0M7O1dBRU0sV0FBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztXQUVOOzttQkFGTUE7OzJDQUFOSSxHQUFFdUM7OzZDQUFGdkMsR0FBRXVDO2dEQUFGdkMsR0FBRXVDO1lBS2tIO1dBRzNHOztvQkFSSDNDOzs0Q0FBTkksR0FBRXVDOzs0Q0FBRnZDLEdBQUV1Qzs7OENBQUZ2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztxREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs0REFBRnZDLEdBQUV1QztZQWFtakI7V0FHNWlCOztvQkFoQkgzQyxLQTRCQzs7MkNBNUJQSSxHQUFFdUM7OzJDQUFGdkMsR0FBRXVDOzs2Q0FBRnZDLEdBQUV1Qzs7OENBQUZ2QyxHQUFFdUM7OzhDQUFGdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7O2tEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7b0RBQUZ2QyxHQUFFdUM7O3FEQUFGdkMsR0FBRXVDOztzREFBRnZDLEdBQUV1Qzs7dURBQUZ2QyxHQUFFdUM7O3dEQUFGdkMsR0FBRXVDOzt5REFBRnZDLEdBQUV1Qzs7MERBQUZ2QyxHQUFFdUM7OzJEQUFGdkMsR0FBRXVDOzs0REFBRnZDLEdBQUV1Qzs7NkRBQUZ2QyxHQUFFdUM7Z0VBQUZ2QyxHQUFFdUM7V0FxQml2QjtVQUcxdUI7U0FNTjtPQUVMRyxNQUFJLDJCQWhIVnhCLEdBK0VNdUIsS0EvRUp0QjtNQWlIQSxzQ0FqSEZELEdBQUVDO2FBZ0hJdUI7T0E0Qk8sNEJBNUlieEIsR0FBRUM7O2NBZ0hJdUI7O1VBN0dKK0Y7ZUFtSGEsV0EzUWpCM0Isb0JBcUpFNUYsR0FBRUM7OztVQUlBdUgsbUJBMEhhLFdBM1BqQmhCLHFCQTZIRXhHLEdBQUVDOztVQUtBd0g7ZUFpSWEsV0E1TmpCTixzQkFzRkVuSCxHQUFFQzs7Ozs7OztpQkFLQXdIOztVQWtKd0VwSyxjQUFBNkMsTUFBQTdDOzs7T0FBQTZDO1NBQWlCLHNDQXZKM0ZGO21CQUlFd0g7O1VBa0pzQ3JILGtCQUFBc0IsTUFBQXRCOztVQUFBc0IsTUFBaUIsc0NBdEp6RHpCO21CQUdFdUg7O1VBa0o4RDdGLGtCQUFBQyxNQUFBRDs7O09BQUFDLE1BQWlCLHNDQXJKakYzQjtLQW9KSSxXQUM0RDJCLEtBQ3hCRixLQUNrQ3ZCOztHQUd6RTtZQUVId0gsd0JBQXdCNUk7SUFDcUIsV0FBQSxnQ0FEckJBO0lBQ3FCLE9BOUo3Q3dJLG1CQThKaUI7R0FBa0Q7WUFDbkVLLHdCQUNFaEosSUFBSXRCO0lBQ04sOEJBREVzQjtJQUVhLElBQVhpQztPQUFBQTtLQUFBQTs7S0FJRiw4QkFOQWpDO0lBT0EsOEJBUEFBO0lBUUYsMkJBUkVBLElBQUl0QjtJQVFOLE9BQUEsOEJBUkVzQjtHQVlxQjtZQUV2QmlKLDRCQUE4QnZMLEtBQVlnQjtJQUM1QyxHQURnQ2hCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3ZCLElBQUxDLEtBQUssNkJBRHVCRDtJQWY5QmlKLHdCQWdCRWhKLElBRHdDdEI7SUFFNUMsT0FBQSw2QkFESXNCO0dBRWM7WUFDaEJrSix1QkFDRTdILEdBQUVDO0lBQ0osMkJBREVELEdBQUVDO0lBRUosMkJBRkVELEdBQUVDO0lBR3FDLElBQXJDNkg7SUFDSjtLQUNFLDJCQUxBOUgsR0FBRUM7S0FNRiwyQkFORUE7S0FPRiwyQkFQQUQsR0FBRUM7S0FPRjtNQUNJbEM7aUJBQ0VlLEdBQUV1QyxLQUFJM0M7U0FDUixXQURJMkM7Ozs7O2tCQUFJM0M7aURBQU5JLE1BQUV1QyxNQUFJM0M7O1VBRU0sV0FBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztVQUVOOzs7a0JBRk1BOzsyQ0FBTkksR0FBRXVDOzs0Q0FBRnZDLEdBQUV1Qzs7NkNBQUZ2QyxHQUFFdUM7OzhDQUFGdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztpREFBRnZDLEdBQUV1Qzs7bURBQUZ2QyxHQUFFdUM7c0RBQUZ2QyxHQUFFdUM7VUFHMlg7U0FHMVg7UUFFSjtNQUVEQyxJQUFJLDJCQW5CUnRCLEdBUUlqQyxHQVJGa0M7S0FvQkYsc0NBcEJBRCxHQUFFQztjQW1CRXFCO01BaEJGd0c7V0FzQlcsc0NBekJiOUgsR0FBRUM7O01BK0JTLDRCQS9CWEQsR0FBRUM7O01Bb0NBLDJCQXBDRkQsR0FBRUM7TUFxQ0EsMkJBckNGRCxHQUFFQztNQXNDQSwyQkF0Q0ZELEdBQUVDO01Bc0NBO09BQ0lzQjtrQkFDRXpDLEdBQUV1QyxLQUFJM0M7VUFDUixXQURJMkM7Ozs7O21CQUFJM0M7OzZDQUFOSSxNQUFFdUMsTUFBSTNDOztXQUVNLFdBQUEsa0NBRlpJLEdBQUV1QyxLQUFJM0M7V0FFTjs7O21CQUZNQTs7NENBQU5JLEdBQUV1Qzs7NkNBQUZ2QyxHQUFFdUM7OzhDQUFGdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1Qzs7a0RBQUZ2QyxHQUFFdUM7O29EQUFGdkMsR0FBRXVDO3VEQUFGdkMsR0FBRXVDO1dBRzJYO1VBRzFYO1NBRUo7T0FFREcsTUFBSSwyQkFsRFZ4QixHQXVDTXVCLEtBdkNKdEI7TUFtREEsc0NBbkRGRCxHQUFFQztlQWtESXVCO09BL0NKc0c7WUFxRGEsc0NBeERmOUgsR0FBRUM7O09BOERXLDRCQTlEYkQsR0FBRUM7Ozs7OztpQkFHQTZIOztVQW9Fd0Z6SyxjQUFBNkMsTUFBQTdDOzs7T0FBQTZDO1NBQWlCO3NDQXZFM0dGO0tBc0VJLFdBQ3NGRTs7R0FHekY7WUFFSDZILDRCQUE0QmpKO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQTlFakQrSTthQThFcUI7R0FBa0Q7WUFDdkVHLGlCQUNFckosSUFBSXRCO0lBQ04sOEJBREVzQjtJQUVhLElBQVhpQztPQUFBQTtLQUFBQTs7S0FJRiw4QkFOQWpDO0lBT0EsOEJBUEFBO0lBUUYsV0FoK0RBOEIsb0JBdzlERTlCLElBQUl0QjtPQUVGdUQ7S0FBQUE7O0tBYUYsOEJBZkFqQztJQWdCQSw4QkFoQkFBO0lBaUJGLFdBeitEQThCLG9CQXc5REU5QixJQUFJdEI7SUFpQk4sT0FBQSw4QkFqQkVzQjtHQXFCcUI7WUFFdkJzSixxQkFBdUI1TCxLQUFZZ0I7SUFDckMsR0FEeUJoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNoQixJQUFMQyxLQUFLLDZCQURnQkQ7SUF4QnZCc0osaUJBeUJFckosSUFEaUN0QjtJQUVyQyxPQUFBLDZCQURJc0I7R0FFYztZQUNoQnVKLGdCQUNFbEksR0FBRUM7SUFDSiwyQkFERUQsR0FBRUM7SUFFSiwyQkFGRUQsR0FBRUM7SUFHMEIsSUFBMUJrSSxrQ0FDQUM7SUFDSjtLQUNFLDJCQU5BcEksR0FBRUM7S0FPRiwyQkFQRUE7S0FRRiwyQkFSQUQsR0FBRUM7S0FRRjtNQUNJbEM7aUJBQ0VlLEdBQUV1QyxLQUFJM0M7U0FDUixXQURJMkM7Ozs7O2tCQUFJM0M7aURBQU5JLE1BQUV1QyxNQUFJM0M7O1VBRU0sV0FBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztVQUVOOztrQkFGTUE7OzJDQUFOSSxHQUFFdUM7OzRDQUFGdkMsR0FBRXVDOzs2Q0FBRnZDLEdBQUV1Qzs7OENBQUZ2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDO2tEQUFGdkMsR0FBRXVDO1dBS2lPO1VBRzFOOztrQkFSSDNDLEtBb0JDOzswQ0FwQlBJLEdBQUV1Qzs7MENBQUZ2QyxHQUFFdUM7OzJDQUFGdkMsR0FBRXVDOzs2Q0FBRnZDLEdBQUV1Qzs7OENBQUZ2QyxHQUFFdUM7OytDQUFGdkMsR0FBRXVDOztnREFBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7b0RBQUZ2QyxHQUFFdUM7VUFhZ1Y7U0FHelU7UUFNTjtNQUVMQyxJQUFJLDJCQWxDUnRCLEdBU0lqQyxHQVRGa0M7S0FtQ0Ysc0NBbkNBRCxHQUFFQztjQWtDRXFCO01BL0JGNkcsaUNBOStESnpILGtCQTIrREVWLEdBQUVDO21CQWtDRXFCO01BOUJGOEcsaUNBLytESjFILGtCQTIrREVWLEdBQUVDOztNQXNEUyw0QkF0RFhELEdBQUVDOztNQTJEQSwyQkEzREZELEdBQUVDO01BNERBLDJCQTVERkQsR0FBRUM7TUE2REEsMkJBN0RGRCxHQUFFQztNQTZEQTtPQUNJc0I7a0JBQ0V6QyxHQUFFdUMsS0FBSTNDO1VBQ1IsV0FESTJDOzs7OzttQkFBSTNDOzs2Q0FBTkksTUFBRXVDLE1BQUkzQzs7V0FFTSxXQUFBLGtDQUZaSSxHQUFFdUMsS0FBSTNDO1dBRU47O21CQUZNQTs7NENBQU5JLEdBQUV1Qzs7NkNBQUZ2QyxHQUFFdUM7OzhDQUFGdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7bURBQUZ2QyxHQUFFdUM7WUFLaU87V0FHMU47O21CQVJIM0MsS0FvQkM7OzJDQXBCUEksR0FBRXVDOzsyQ0FBRnZDLEdBQUV1Qzs7NENBQUZ2QyxHQUFFdUM7OzhDQUFGdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDOztrREFBRnZDLEdBQUV1QztxREFBRnZDLEdBQUV1QztXQWFnVjtVQUd6VTtTQU1OO09BRUxHLE1BQUksMkJBdkZWeEIsR0E4RE11QixLQTlESnRCO01Bd0ZBLHNDQXhGRkQsR0FBRUM7ZUF1Rkl1QjtPQXBGSjJHLGlDQTkrREp6SCxrQkEyK0RFVixHQUFFQztvQkF1Rkl1QjtPQW5GSjRHLGlDQS8rREoxSCxrQkEyK0RFVixHQUFFQzs7T0EyR1csNEJBM0diRCxHQUFFQzs7Ozs7O2lCQUlBbUk7O1VBaUhrRS9LLGNBQUE2QyxNQUFBN0M7OztPQUFBNkMsTUFBaUIsc0NBckhyRkY7bUJBR0VtSTs7VUFpSGtFaEksa0JBQUFzQixNQUFBdEI7OztPQUFBc0IsTUFBaUIsc0NBcEhyRnpCO0tBbUhJLFdBQ2dFeUIsS0FDQXZCOztHQUduRTtZQUVIbUkscUJBQXFCdko7SUFDcUIsV0FBQSxnQ0FEckJBO0lBQ3FCLE9BNUgxQ29KLGdCQTRIYztHQUFrRDtZQUloRUkseUJBQTJCak0sS0FBWWdCO0lBQ3pDLEdBRDZCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDcEIsSUFBTEMsS0FBSyw2QkFEb0JEO0lBNUozQnNKLGlCQTZKRXJKLElBRHFDdEI7SUFFekMsT0FBQSw2QkFESXNCO0dBRWM7WUFJaEI0Six5QkFBeUJ6SjtJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0F4STlDb0osZ0JBd0lrQjtHQUFrRDtPQUNwRXBGO1lBR0EwRixlQUFpQm5NLEtBQVlnQjtJQUMvQixHQURtQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ1YsSUFBTEMsS0FBSyw2QkFEVUQ7SUFFbkIsV0FMRW9FLFlBSUVuRSxJQUQyQnRCO0lBRS9CLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCMkU7WUFHQW1GLGVBQWUzSjtJQUNxQixXQUFBLGdDQURyQkE7SUFDcUIsT0FBQSxXQUpwQ3dFLFdBSVE7R0FBa0Q7T0FDMURvRjtZQUdBQyxrQkFBb0J0TSxLQUFZZ0I7SUFDbEMsR0FEc0JoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNiLElBQUxDLEtBQUssNkJBRGFEO0lBRXRCLFdBTEVnSyxlQUlFL0osSUFEOEJ0QjtJQUVsQyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQmlLO1lBR0FDLGtCQUFrQi9KO0lBQ3FCLFdBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSnZDOEosY0FJVztHQUFrRDtPQUM3REU7WUFHQUMsc0JBQXdCMU0sS0FBWWdCO0lBQ3RDLEdBRDBCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDakIsSUFBTEMsS0FBSyw2QkFEaUJEO0lBRTFCLFdBTEVvSyxtQkFJRW5LLElBRGtDdEI7SUFFdEMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEJxSztZQUdBQyxzQkFBc0JuSztJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUozQ2tLLGtCQUllO0dBQWtEO09BQ2pFRTtZQUdBQyxxQkFBdUI5TSxLQUFZZ0I7SUFDckMsR0FEeUJoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNoQixJQUFMQyxLQUFLLDZCQURnQkQ7SUFFekIsV0FMRXdLLGtCQUlFdkssSUFEaUN0QjtJQUVyQyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQnlLO1lBR0FDLHFCQUFxQnZLO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSjFDc0ssaUJBSWM7R0FBa0Q7R0FDdkM7SUFBekJFO01BQXlCO1lBU3pCQyxxQkFDRXZKLEdBQUVDO0lBQ0osMkJBREVELEdBQUVDO0lBRUEsT0FBQSwyQkFGRkQsR0FBRUM7O2tCQUdNLHNDQUhSRCxHQUFFQztHQUtlO1lBSW5CdUosZ0JBQ0U3SyxJQUFJdEI7SUFDTiw4QkFERXNCO0lBRWEsSUFBWGlDO09BQUFBO0tBQUFBOztLQUlGLDhCQU5BakM7SUFPQSw4QkFQQUE7SUFRRixXQTVCQTJLLHVCQW9CRTNLLElBQUl0QjtPQUVGdUQ7S0FBQUE7O0tBYUYsOEJBZkFqQztJQWdCQSw4QkFoQkFBO0lBaUJGLDJCQWpCRUEsSUFBSXRCO0lBaUJOLE9BQUEsOEJBakJFc0I7R0FxQnFCO1lBRXZCOEssb0JBQXNCcE4sS0FBWWdCO0lBQ3BDLEdBRHdCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDZixJQUFMQyxLQUFLLDZCQURlRDtJQXhCdEI4SyxnQkF5QkU3SyxJQURnQ3RCO0lBRXBDLE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCK0ssZUFDRTFKLEdBQUVDO0lBQ0osMkJBREVELEdBQUVDO0lBRUosMkJBRkVELEdBQUVDO0lBR3VCLElBQXZCMEosK0JBQ0FDO0lBQ0o7S0FDRSwyQkFOQTVKLEdBQUVDO0tBT0YsMkJBUEVBO0tBUUYsMkJBUkFELEdBQUVDO0tBUUY7TUFDSWxDO2lCQUNFZSxHQUFFdUMsS0FBSTNDO1NBQ1IsVUFESTJDOzs7OztpQkFBSTNDOytDQUFOSSxNQUFFdUMsTUFBSTNDOztVQUVNLFVBQUEsa0NBRlpJLEdBQUV1QyxLQUFJM0M7VUFFTjs7a0JBRk1BLEtBeUJIOzRDQXpCSEksR0FBRXVDOzs7MENBQUZ2QyxHQUFFdUM7OzRDQUFGdkMsR0FBRXVDOytDQUFGdkMsR0FBRXVDO1dBTXdIO1VBRy9HOzsyQkFZRjs7MENBckJUdkMsR0FBRXVDOzsyQ0FBRnZDLEdBQUV1Qzs4Q0FBRnZDLEdBQUV1QztVQWN3SDtTQUcvRztRQVVaO01BRURDLElBQUksMkJBdkNSdEIsR0FTSWpDLEdBVEZrQztLQXdDRixzQ0F4Q0FELEdBQUVDO2NBdUNFcUI7TUFwQ0ZxSSw4QkExQ0pKLHFCQXVDRXZKLEdBQUVDO21CQXVDRXFCO01BbkNGc0k7V0FpRFcsc0NBckRiNUosR0FBRUM7O01BMkRTLDRCQTNEWEQsR0FBRUM7O01BZ0VBLDJCQWhFRkQsR0FBRUM7TUFpRUEsMkJBakVGRCxHQUFFQztNQWtFQSwyQkFsRUZELEdBQUVDO01Ba0VBO09BQ0lzQjtrQkFDRXpDLEdBQUV1QyxLQUFJM0M7VUFDUixVQURJMkM7Ozs7O2tCQUFJM0M7Z0RBQU5JLE1BQUV1QyxNQUFJM0M7O1dBRU0sVUFBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztXQUVOOzttQkFGTUEsS0F5Qkg7NkNBekJISSxHQUFFdUM7OzsyQ0FBRnZDLEdBQUV1Qzs7NkNBQUZ2QyxHQUFFdUM7Z0RBQUZ2QyxHQUFFdUM7WUFNd0g7V0FHL0c7OzRCQVlGOzsyQ0FyQlR2QyxHQUFFdUM7OzRDQUFGdkMsR0FBRXVDOytDQUFGdkMsR0FBRXVDO1dBY3dIO1VBRy9HO1NBVVo7T0FFREcsTUFBSSwyQkFqR1Z4QixHQW1FTXVCLEtBbkVKdEI7TUFrR0Esc0NBbEdGRCxHQUFFQztlQWlHSXVCO09BOUZKbUksOEJBMUNKSixxQkF1Q0V2SixHQUFFQztvQkFpR0l1QjtPQTdGSm9JO1lBMkdhLHNDQS9HZjVKLEdBQUVDOztPQXFIVyw0QkFySGJELEdBQUVDOzs7Ozs7aUJBSUEySjs7VUEySDREdk0sY0FBQTZDLE1BQUE3Qzs7VUFBQTZDLE1BQWlCLHNDQS9IL0VGO21CQUdFMko7O1VBMkg0RHhKLGtCQUFBc0IsTUFBQXRCOztVQUFBc0IsTUFBaUIsc0NBOUgvRXpCO0tBNkhJLFdBQzBEeUIsS0FDQXZCOztHQUc3RDtZQUVIMkosb0JBQW9CL0s7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BdEl6QzRLLGVBc0lhO0dBQWtEO0dBQ3ZDO0lBQXhCSTtNQUF3QixxQ0FuS3hCTjtJQTRLQU87TUFBdUIsc0NBaEp2Qkw7WUEwSkFNLDJCQUE2QjNOLEtBQVlnQjtJQUMzQyxHQUQrQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3RCLElBQUxDLEtBQUssNkJBRHNCRDtJQUUvQixXQXJCRW9MLHNCQW9CRW5MLElBRHVDdEI7SUFFM0MsT0FBQSw2QkFESXNCO0dBRWM7WUFJaEJzTCwyQkFBMkJuTDtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQWxCaERpTCxxQkFrQm9CO0dBQWtEO0dBQ2pEO0lBQXJCRyxvQkFBcUI7SUFTckJDO01BQW9CO1lBVXBCQyw0QkFBOEIvTixLQUFZZ0I7SUFDNUMsR0FEZ0NoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN2QixJQUFMQyxLQUFLLDZCQUR1QkQ7SUFFaEMsV0FyQkV3TCxtQkFvQkV2TCxJQUR3Q3RCO0lBRTVDLE9BQUEsNkJBRElzQjtHQUVjO1lBSWhCMEwsNEJBQTRCdkw7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFsQmpEcUwsa0JBa0JxQjtHQUFrRDtZQUN2RUcsdUJBQ0UzTCxJQUFJdEI7SUFDTiw4QkFERXNCO0lBRWEsSUFBWGlDO09BQUFBO0tBQUFBOztLQUlGLDhCQU5BakM7SUFPQSw4QkFQQUE7SUFRRiwyQkFSRUEsSUFBSXRCO09BRUZ1RDtLQUFBQTs7S0FhRiw4QkFmQWpDO0lBZ0JBLDhCQWhCQUE7SUFpQkYsMkJBakJFQSxJQUFJdEI7SUFpQk4sT0FBQSw4QkFqQkVzQjtHQXFCcUI7WUFFdkI0TCwyQkFBNkJsTyxLQUFZZ0I7SUFDM0MsR0FEK0JoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN0QixJQUFMQyxLQUFLLDZCQURzQkQ7SUF4QjdCNEwsdUJBeUJFM0wsSUFEdUN0QjtJQUUzQyxPQUFBLDZCQURJc0I7R0FFYztZQUNoQjZMLHNCQUNFeEssR0FBRUM7SUFDSiwyQkFERUQsR0FBRUM7SUFFSiwyQkFGRUQsR0FBRUM7SUFHNkIsSUFBN0J3SyxxQ0FDQUM7SUFDSjtLQUNFLDJCQU5BMUssR0FBRUM7S0FPRiwyQkFQRUE7S0FRRiwyQkFSQUQsR0FBRUM7S0FRRjtNQUNJbEM7aUJBQ0VlLEdBQUV1QyxLQUFJM0M7U0FDUixVQURJMkM7Ozs7O2lCQUFJM0M7K0NBQU5JLE1BQUV1QyxNQUFJM0M7O1VBRU0sVUFBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztVQUVOOztrQkFGTUE7OzBDQUFOSSxHQUFFdUM7OzRDQUFGdkMsR0FBRXVDOzs2Q0FBRnZDLEdBQUV1Qzs7OENBQUZ2QyxHQUFFdUM7aURBQUZ2QyxHQUFFdUM7V0FLNEw7VUFHckw7O2tCQVJIM0MsS0FvQkM7OzBDQXBCUEksR0FBRXVDOzsyQ0FBRnZDLEdBQUV1Qzs7NENBQUZ2QyxHQUFFdUM7OzZDQUFGdkMsR0FBRXVDOzs4Q0FBRnZDLEdBQUV1Qzs7OENBQUZ2QyxHQUFFdUM7O2dEQUFGdkMsR0FBRXVDO21EQUFGdkMsR0FBRXVDO1VBYTJTO1NBR3BTO1FBTU47TUFFTEMsSUFBSSwyQkFsQ1J0QixHQVNJakMsR0FURmtDO0tBbUNGLHNDQW5DQUQsR0FBRUM7Y0FrQ0VxQjtNQS9CRm1KO1dBcUNXLHNDQXhDYnpLLEdBQUVDO21CQWtDRXFCO01BOUJGb0o7V0E0Q1csc0NBaERiMUssR0FBRUM7O01Bc0RTLDRCQXREWEQsR0FBRUM7O01BMkRBLDJCQTNERkQsR0FBRUM7TUE0REEsMkJBNURGRCxHQUFFQztNQTZEQSwyQkE3REZELEdBQUVDO01BNkRBO09BQ0lzQjtrQkFDRXpDLEdBQUV1QyxLQUFJM0M7VUFDUixVQURJMkM7Ozs7O2tCQUFJM0M7Z0RBQU5JLE1BQUV1QyxNQUFJM0M7O1dBRU0sVUFBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztXQUVOOzttQkFGTUE7OzJDQUFOSSxHQUFFdUM7OzZDQUFGdkMsR0FBRXVDOzs4Q0FBRnZDLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7a0RBQUZ2QyxHQUFFdUM7WUFLNEw7V0FHckw7O21CQVJIM0MsS0FvQkM7OzJDQXBCUEksR0FBRXVDOzs0Q0FBRnZDLEdBQUV1Qzs7NkNBQUZ2QyxHQUFFdUM7OzhDQUFGdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7K0NBQUZ2QyxHQUFFdUM7O2lEQUFGdkMsR0FBRXVDO29EQUFGdkMsR0FBRXVDO1dBYTJTO1VBR3BTO1NBTU47T0FFTEcsTUFBSSwyQkF2RlZ4QixHQThETXVCLEtBOURKdEI7TUF3RkEsc0NBeEZGRCxHQUFFQztlQXVGSXVCO09BcEZKaUo7WUEwRmEsc0NBN0ZmekssR0FBRUM7b0JBdUZJdUI7T0FuRkprSjtZQWlHYSxzQ0FyR2YxSyxHQUFFQzs7T0EyR1csNEJBM0diRCxHQUFFQzs7Ozs7O2lCQUlBeUs7O1VBaUhrRXJOLGNBQUE2QyxNQUFBN0M7OztPQUFBNkMsTUFBaUIsc0NBckhyRkY7bUJBR0V5Szs7VUFpSHdFdEssa0JBQUFzQixNQUFBdEI7OztPQUFBc0I7U0FBaUIsc0NBcEgzRnpCO0tBbUhJLFdBQ3NFeUIsS0FDTnZCOztHQUduRTtZQUVIeUssMkJBQTJCN0w7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BNUhoRDBMLHNCQTRIb0I7R0FBa0Q7T0FDdEVJO1lBR0FDLGlCQUFtQnhPLEtBQVlnQjtJQUNqQyxHQURxQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ1osSUFBTEMsS0FBSyw2QkFEWUQ7SUFFckIsV0FMRWtNLGNBSUVqTSxJQUQ2QnRCO0lBRWpDLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCbU07WUFHQUMsaUJBQWlCak07SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKdENnTSxhQUlVO0dBQWtEO0dBQ3ZDO0lBQXJCRSxvQkFBcUIscUNBWnJCSjtJQXFCQUssbUJBQW9CLHNDQWRwQkg7WUF3QkFJLHNCQUF3QjdPLEtBQVlnQjtJQUN0QyxHQUQwQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ2pCLElBQUxDLEtBQUssNkJBRGlCRDtJQUUxQixXQXJCRXNNLG1CQW9CRXJNLElBRGtDdEI7SUFFdEMsT0FBQSw2QkFESXNCO0dBRWM7WUFJaEJ3TSxzQkFBc0JyTTtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQWxCM0NtTSxrQkFrQmU7R0FBa0Q7T0FDakVHO1lBR0FDLGNBQWdCaFAsS0FBWWdCO0lBQzlCLEdBRGtCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDVCxJQUFMQyxLQUFLLDZCQURTRDtJQUVsQixXQUxFME0sV0FJRXpNLElBRDBCdEI7SUFFOUIsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEIyTTtZQUdBQyxjQUFjek07SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUEsV0FKbkN3TSxVQUlPO0dBQWtEOzs7O09BanZGekQ5TTtPQUdBQztPQUlBRztPQUdBQztPQUVBRTtPQUdBQztPQUlBQztPQUdBQztPQVZBSDtPQWVBSTtPQVJBRjtPQWVBRztPQUVBQztPQW1CQUU7T0FWQUQ7T0FpQkFFO09BRUFDO09BR0FDO09BSUFDO09BR0FDO09BRUFDO09BT0FDO09BSUFDO09Bc0NBSztPQUVBQztPQUdBQztPQUlBQztPQUdBQztPQXFCQUc7T0E0REFFO09BSUFDO09BbVFBb0I7T0FxQkFHO09BMENBQztPQUlBQztPQTJNQUs7T0FFQUM7T0E0REFPO09BSUFDO09BeVJBYTtPQUVBQztPQUdBQztPQUlBQztPQUdBQztPQUVBQztPQThWQUU7T0E5UkFEO09BcVNBRTtPQUVBQztPQXdCQUM7T0FJQUM7T0EySEFHO09BRUFDO09BR0FDO09BSUFDO09BR0FDO09BRUFDO09BZUFDO09BSUFDO09BNkVBRTtPQUVBQztPQUdBQztPQUlBQztPQUdBQztPQUVBQztPQUdBRztPQUlBQztPQUdBRztPQUVBQztPQUdBQztPQUlBQztPQUdBQztPQUVBQztPQUdBQztPQUlBQztPQUdBQztPQXdFQU87T0FpQ0FDO09BSUFDO09BNkpBSTtPQUVBQztPQWVBQztPQUlBQztPQTZFQUU7T0FFQUM7T0F3QkFDO09BSUFDO09BMkhBRztPQXZKQUw7T0E0SkFNO09BaElBSjtPQXVJQUs7T0FFQXpGO09BR0EwRjtPQUlBbEY7T0FHQW1GO09BRUFDO09BR0FDO09BSUFDO09BR0FDO09BRUFDO09BR0FDO09BSUFDO09BR0FDO09BRUFDO09BR0FDO09BSUFDO09BR0FDO09BcUJBRztPQXdCQUM7T0FJQUM7T0FxSUFHO09BRUFDO09BbUJBRTtPQVZBRDtPQWlCQUU7T0FFQUM7T0FtQkFFO09BVkFEO09BaUJBRTtPQUVBQztPQXdCQUM7T0FJQUM7T0EySEFHO09BRUFDO09BR0FDO09BSUFDO09BR0FDO09BRUFDO09BbUJBRTtPQVZBRDtPQWlCQUU7T0FFQUM7T0FHQUM7T0FJQUM7T0FHQUM7Ozs7RTs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN2eUZBQyxtQkFBaUIsT0FBQSxvQ0FBZ0I7WUFFakN0RixZQUFZbkksR0FBRWlDLEdBQUVDO0lBQ2xCO0tBQ3dCLE9BQUE7S0FBdEIsT0FBQSw4Q0FGWWxDO0lBQ2QsT0FBQSxvREFEZ0JpQyxHQUFFQztHQUdaO1lBRUp3TCxRQUFRQyxTQUFRck87a0JBRWtDMkMsR0FBRUMsSUFBR2pDO0tBRTFDLFdBQUEsOEJBSkwwTixTQUUrQzFOOzs7UUFJNUIsSUFETjJOLGtCQUNNLE9BWDNCekYsNEJBT2tEbEcsR0FBRUM7UUFJM0Msb0JBRFkwTDs7O1FBR0Y7U0FESUM7U0FDVkMsTUFiYjNGLDRCQU9rRGxHLEdBQUVDO1NBUXhCLE9BQUE7U0FBakIsT0FBQSxxREFGRTRMO1FBQ0osb0JBRmNEOzs7UUFLSSxJQURQRSxvQkFDTyxPQWpCM0I1Riw0QkFPa0RsRyxHQUFFQztRQVUzQyxvQkFEVzZMOzs7UUFJVDtTQUZVQztTQUVWLE9BcEJYN0YsWUFxQmMsNENBZG9DbEcsR0FBRUM7UUFZM0Msb0JBRFk4TDs7O1FBT1Y7U0FGVUM7U0FFVjtXQXpCWDlGO2FBMEJjLHFEQW5Cb0NsRyxHQUFFQztRQWlCM0Msb0JBRFkrTDs7O1FBT1Y7U0FGT0M7U0FFUDtXQTlCWC9GO2FBK0JjOzs7O2FBeEJvQ2xHO2FBQUVDO1FBc0IzQyxvQkFEU2dNOzs7UUFVUyxJQURUQyxvQkFDUyxPQXRDM0JoRyw0QkFPa0RsRyxHQUFFQztRQStCM0Msb0JBRFNpTTs7O1FBR0U7U0FET0M7U0FDZEMsT0F4Q2JsRyw0QkFPa0RsRyxHQUFFQztTQW1DekM7V0FBQTs7O2FBRkVtTTtRQUNKLG9CQUZrQkQ7OztRQUtQO1NBRGNFO1NBQ3JCQyxTQTVDYnBHLDRCQU9rRGxHLEdBQUVDO1NBd0N0QztXQUFBOzs7U0FESCxPQUFBLHFEQUZFcU07UUFDSixvQkFGeUJEOzs7UUFPZDtTQURRRTtTQUNmQyxTQWxEYnRHLDRCQU9rRGxHLEdBQUVDO1NBOEN0QztXQUFBOzs7U0FESCxPQUFBLHFEQUZFdU07UUFDSixvQkFGbUJEOzs7UUFPUjtTQURTRTtTQUNoQkMsU0F4RGJ4Ryw0QkFPa0RsRyxHQUFFQztTQW1EekM7V0FBQTs7O2FBRkV5TTtRQUNKLG9CQUZvQkQ7OztRQUtUO1NBRElFO1NBQ1hDLFNBNURiMUcsNEJBT2tEbEcsR0FBRUM7U0F1RHpDO1dBQUE7OzthQUZFMk07UUFDSixvQkFGZUQ7OztRQUtKO1NBREtFO1NBQ1pDLFNBaEViNUcsNEJBT2tEbEcsR0FBRUM7U0EyRHpDO1dBQUE7OzthQUZFNk07UUFDSixvQkFGZ0JEOzs7UUFLTDtTQURVRTtTQUNqQkMsU0FwRWI5Ryw0QkFPa0RsRyxHQUFFQztTQStEekM7V0FBQTs7O2FBRkUrTTtRQUNKLG9CQUZxQkQ7OztRQUtWO1NBRFVFO1NBQ2pCQyxTQXhFYmhILDRCQU9rRGxHLEdBQUVDO1NBbUV6QztXQUFBOzs7YUFGRWlOO1FBQ0osb0JBRnFCRDs7O1FBS1Y7U0FET0U7U0FDZEMsU0E1RWJsSCw0QkFPa0RsRyxHQUFFQztTQXNFekI7V0FBQTs7O2FBRGRtTjtRQUNKLG9CQUZrQkQ7OztRQUlBO1NBRFZFO1NBQ1UsT0EvRTNCbkgsb0NBT2tEbEcsR0FBRUM7UUF3RTNDLG9CQURRb047OztRQUdVO1NBRFRDO1NBQ1MsT0FqRjNCcEgsb0NBT2tEbEcsR0FBRUM7UUEwRTNDLG9CQURTcU47OztRQUdTO1NBRExDO1NBQ0ssT0FuRjNCckgsbUNBT2tEbEcsR0FBRUM7UUE0RTNDLG9CQURhc047OztRQUdLO1NBRFFDO1NBQ1IsT0FyRjNCdEgseUNBT2tEbEcsR0FBRUM7UUE4RTNDLG9CQUQwQnVOOzs7UUFJeEI7U0FGa0JDO1NBRWxCLE9BeEZYdkgsNENBT2tEbEcsR0FBRUM7UUFnRjNDLG9CQURvQndOOzs7UUFLbEI7U0FGdUJDO1NBRXZCLE9BM0ZYeEgsNENBT2tEbEcsR0FBRUM7UUFtRjNDLG9CQUR5QnlOOzs7UUFLdkI7U0FGc0JDO1NBRXRCLE9BOUZYekgsNENBT2tEbEcsR0FBRUM7UUFzRjNDLG9CQUR3QjBOOztLQUk1QixPQUFBLCtCQTNGR2pDLFNBRStDMU47SUF5RnpCO0lBekY5Qjs7T0FBQTtJQURGLE9BQUEsb0RBRGtCWDtHQTRGZjtZQUVEdVEsYUFBYWxDO0lBQVUsYUFBQSwrQkFBVkE7R0FBcUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBRzdDbUMsUUFPQ0MsUUFBT0M7WUFDVCxHQUFHLFdBUkZGO2FBU3NCO2NBQUEsUUFBQTtjQUFURztjQUFSN1A7O2NBQ0o7O3lCQUVTOFA7aUJBQ0g7NkJBTkNGO2tCQU9DOzs4QkFBT0U7c0JBQUssa0NBQUxBLEdBZGhCSjtxQkFjZ0Q7O2lCQUF2QyxPQUFBOzhEQUZDSTtnQkFFa0Q7Y0FKdkRyUjtnQkFDRjs7YUFNTyxXQWpCVmlSLGlCQVVLalI7YUFRSzs7ZUFsQlZpUjtlQUFBQTttQkFPQ0MsUUFFWUU7YUFUYkgsbUJBQUFBO2FBb0JDLE9BWEkxUDs7WUFjRixXQUFBO1lBQUEsT0FBQTtXQU9LOztvQkE5QlIwUCxRQWlDY0s7MEJBQ1NEO2FBQ3RCO2NBQUE7OzswQkFHU0EsR0FBSyxPQUpsQiwyQkFJYUEsR0FMSUMsU0FLb0M7O2NBRi9DOzswQkFDT0Q7a0JBQUssT0FBQSwyQkFBTEE7aUJBQTZDOzthQURwRCxPQUFBLCtDQUZvQkE7WUFLbkI7WUFMYyxPQUFBLFdBbENsQkosb0JBQUFBO1dBdUNLOztvQkF2Q0xBLFFBeUNjSyxTQUFRQzswQkFDQ0Y7YUFDdEI7Y0FBQTs7OzBCQUlTQTtrQkFBSyxPQUxsQiwyQkFLYUEsR0FOWUU7aUJBTWlDOzs7OzBCQUQ3Q0YsR0FBSyxrQ0FBTEEsR0FMSUMsU0FLb0M7O2NBRi9DOzswQkFDT0Q7a0JBQUssT0FBQSwyQkFBTEE7aUJBQTZDOzthQURwRCxPQUFBLCtDQUZvQkE7WUFNbkI7WUFOYyxPQUFBLFdBMUNsQkosb0JBQUFBO1dBZ0RLOztvQkFoRExBLFFBa0RZTyxlQUFjRjswQkFDSEQ7YUFDdEI7Y0FBQTs7OzBCQUlTQSxHQUFLLE9BTGxCLDJCQUthQSxHQU5nQkMsU0FNd0I7Ozs7MEJBRHhDRDtrQkFBSyxrQ0FBTEEsR0FMRUc7aUJBS3lDOztjQUZsRDs7MEJBQ09IO2tCQUFLLE9BQUEsMkJBQUxBO2lCQUEyQzs7YUFEbEQsT0FBQSwrQ0FGb0JBO1lBTW5CO1lBTmMsT0FBQSxXQW5EbEJKLG9CQUFBQTtXQXlESzs7b0JBekRMQSxRQTJEV0s7MEJBQ1NEO2FBQ25CO2NBQUE7OzswQkFHU0EsR0FBSyxPQUpsQiwyQkFJYUEsR0FMQ0MsU0FLdUM7O2NBRi9DOzswQkFDT0Q7a0JBQUssT0FBQSwyQkFBTEE7aUJBQTBDOzthQURqRCxPQUFBLCtDQUZpQkE7WUFLaEI7WUFMVyxPQUFBLFdBNURmSixvQkFBQUE7V0FpRUs7O29CQWpFTEEsUUFtRWNPLGVBQWNGLFNBQVFDOzBCQUNiRjthQUN0QjtjQUFBOzs7MEJBS1NBO2tCQUFLLE9BTmxCLDJCQU1hQSxHQVAwQkU7aUJBT21COzs7OzBCQUQ3Q0YsR0FBSyxrQ0FBTEEsR0FOa0JDLFNBTXNCOzs7OzBCQUR4Q0Q7a0JBQUssa0NBQUxBLEdBTElHO2lCQUt1Qzs7Y0FGbEQ7OzBCQUNPSDtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBNkM7O2FBRHBELE9BQUEsK0NBRm9CQTtZQU9uQjtZQVBjLE9BQUEsV0FwRWxCSixvQkFBQUE7V0EyRUs7O29CQTNFTEE7WUE4RUgsY0FBMEJJO2FBQ3RCO2NBQUE7Y0FDRTs7MEJBQU9BO2tCQUFLLE9BQUEsMkJBQUxBO2lCQUE4Qzs7YUFBckQsT0FBQSwrQ0FGb0JBO1lBRW9DO1lBRnpDLE9BQUEsV0E5RWxCSixvQkFBQUE7V0FnRjREOztvQkFoRjVEQTtZQW9GRDs7ZUFBQTs7Ozs7O1lBQUEsT0FBQTtXQUF1RTs7b0JBcEZ0RUE7WUF5RkQ7O2VBQUE7Ozs7OztZQUFBLE9BQUE7V0FDeUQ7O29CQTFGeERBLFFBNEZvQkssU0FBUUc7MEJBQ0xKO2FBQ3RCO2NBQUE7OzswQkFJU0E7a0JBQUssT0FMbEIsa0NBS2FBLEdBTmtCSTtpQkFNaUI7Ozs7MEJBRG5DSixHQUFLLGtDQUFMQSxHQUxVQyxTQUs4Qjs7Y0FGL0M7OzBCQUNPRDtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBbUQ7O2FBRDFELE9BQUEsK0NBRm9CQTtZQU1uQjtZQU5jLE9BQUEsV0E3RmxCSixvQkFBQUE7V0FtR0s7O29CQW5HTEEsUUFzRzJCUzswQkFDSkw7YUFDdEI7Y0FBQTs7OzBCQUdTQSxHQUFLLE9BSmxCLDJCQUlhQSxHQUxpQkssUUFLc0I7O2NBRjlDOzswQkFDT0wsR0FBSyxPQUFBLDJCQUFMQSxhQUF1Qzs7YUFEOUMsT0FBQSwrQ0FGb0JBO1lBS25CO1lBTGMsT0FBQSxXQXZHbEJKLG9CQUFBQTtXQTRHSzs7b0JBNUdMQSxRQThHdUJTO1lBQzFCO2FBQzBCLE9BQUEsa0NBRkFBO2FBRXhCLE9BQUE7WUFBQSxPQUFBLFdBaEhDVCxvQkFBQUE7V0FnSG1EOztvQkFoSG5EQSxRQWtIa0JVOzBCQUNFTjthQUNuQjtjQUFBOzs7MEJBR1NBO2tCQUVEOztxQkFBQTs7O3VCQVBTTTtrQkFPVCxPQUFBLDJCQUZDTjtpQkFFeUQ7O2NBSmhFOzswQkFDT0E7a0JBQUssT0FBQSwyQkFBTEE7aUJBQThDOzthQURyRCxPQUFBLCtDQUZpQkE7WUFPaEI7WUFQVyxPQUFBLFdBbkhmSixvQkFBQUE7V0EwSEs7O29CQTFITEEsUUE0SHdCVTswQkFDRk47YUFDckI7Y0FBQTs7OzBCQUdTQTtrQkFFRDs7cUJBQUE7Ozt1QkFQZU07a0JBT2YsT0FBQSwyQkFGQ047aUJBRXlEOztjQUpoRTs7MEJBQ09BO2tCQUFLLE9BQUEsMkJBQUxBO2lCQUFnRDs7YUFEdkQsT0FBQSwrQ0FGbUJBO1lBT2xCO1lBUGEsT0FBQSxXQTdIakJKLG9CQUFBQTtXQW9JSzs7b0JBcElMQSxRQXNJMkJXLEtBQUtDLEtBQUtDLFFBQVFDLE9BQU1KOzBCQUN0Qk47YUFDNUI7Y0FBQTs7OzBCQVNTQTtrQkFFRDs7cUJBQUE7Ozt1QkFiNEJTO2tCQWE1QixPQUFBLDJCQUZDVDtpQkFHUzs7OzswQkFKVEEsR0FBSyxrQ0FBTEEsR0FWbUNVLE9BVUE7Ozs7MEJBRG5DVjtrQkFBSzsrRUFBTEEsR0FUc0JRO2lCQVNpQzs7OzswQkFEdkRSO2tCQUFLOytFQUFMQSxHQVJpQk87aUJBUXNDOzs7OzBCQUh2RFA7a0JBRUQ7O3FCQUFBOzs7dUJBUDBDTTtrQkFPMUMsT0FBQSwyQkFGQ047aUJBRXlEOztjQUpoRTs7MEJBQ09BO2tCQUFLLE9BQUE7MkNBQUxBO2lCQUFzRDs7YUFEN0QsT0FBQSwrQ0FGMEJBO1lBY3pCO1lBZG9CLE9BQUEsV0F2SXhCSixvQkFBQUE7V0FxSks7O29CQXJKTEE7WUF3SkgsY0FBaUNJO2FBQzdCO2NBQUE7Y0FDRTs7MEJBQ09BO2tCQUNILE9BQUE7MkNBREdBO2lCQUNzRDs7YUFGN0QsT0FBQSwrQ0FGMkJBO1lBSzFCO1lBTHFCLE9BQUEsV0F4SnpCSixvQkFBQUE7V0E2Sks7O29CQTdKTEEsUUErSmdCekI7MEJBQ2M2QjthQUM3QjtjQUFBOzs7MEJBR1NBO2tCQUVEOztxQkFBQTs7O3VCQVBPN0I7a0JBT1AsT0FBQSwyQkFGQzZCO2lCQUdPOztjQUxkOzswQkFDT0E7a0JBQUssT0FBQTsyQ0FBTEE7aUJBQTBEOzthQURqRSxPQUFBLCtDQUYyQkE7WUFRMUI7WUFScUIsT0FBQSxXQWhLekJKLG9CQUFBQTtXQXdLSzs7b0JBeEtMQSxRQTBLb0J6QjswQkFDVTZCO2FBQzdCO2NBQUE7OzswQkFJU0E7a0JBRUQ7O3FCQUFBOzs7dUJBUlc3QjtrQkFRWCxPQUFBLDJCQUZDNkI7aUJBR087O2NBTmQ7OzBCQUNPQTtrQkFDSCxPQUFBOzJDQURHQTtpQkFDc0Q7O2FBRjdELE9BQUEsK0NBRjJCQTtZQVMxQjtZQVRxQixPQUFBLFdBM0t6Qkosb0JBQUFBO1dBb0xLOztvQkFwTExBLFFBc0w2QmUsVUFBU3ZOOzBCQUNGNE07YUFDbkM7Y0FBQTs7OzBCQUlTQTtrQkFBSyxPQUxsQiwwQ0FLYUEsR0FONEI1TTtpQkFNQzs7OzswQkFEN0I0TSxHQUFLLGtDQUFMQSxHQUxtQlcsVUFLc0I7O2NBRmhEOzswQkFDT1g7a0JBQUssT0FBQTsyQ0FBTEE7aUJBQXdEOzthQUQvRCxPQUFBLCtDQUZpQ0E7WUFNaEM7WUFOMkIsT0FBQSxXQXZML0JKLG9CQUFBQTtXQTZMSzs7b0JBN0xMQSxRQStMNkJVOzBCQUNFTjthQUM5QjtjQUFBOzs7MEJBR1NBO2tCQUVEOztxQkFBQTs7O3VCQVBvQk07a0JBT3BCLE9BQUEsMkJBRkNOO2lCQUV5RDs7Y0FKaEU7OzBCQUNPQTtrQkFBSyxPQUFBOzJDQUFMQTtpQkFBeUQ7O2FBRGhFLE9BQUEsK0NBRjRCQTtZQU8zQjtZQVBzQixPQUFBLFdBaE0xQkosb0JBQUFBO1dBdU1LOztvQkF2TUxBO1lBME1ILGNBQTZCSTthQUN6QjtjQUFBO2NBQ0U7OzBCQUFPQTtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBNkM7O2FBQXBELE9BQUEsK0NBRnVCQTtZQUVnQztZQUZyQyxPQUFBLFdBMU1yQkosb0JBQUFBO1dBNE0yRDs7b0JBNU0zREE7WUErTUgsY0FBOEJJO2FBQzFCO2NBQUE7Y0FDRTs7MEJBQU9BO2tCQUFLLE9BQUEsMkJBQUxBO2lCQUE4Qzs7YUFBckQsT0FBQSwrQ0FGd0JBO1lBRWdDO1lBRnJDLE9BQUEsV0EvTXRCSixvQkFBQUE7V0FpTjREOztvQkFqTjVEQTtZQW9OSCxjQUFtQ0k7YUFDL0I7Y0FBQTtjQUNFOzswQkFDT0E7a0JBQ0gsT0FBQTsyQ0FER0E7aUJBQzREOzthQUZuRSxPQUFBLCtDQUY2QkE7WUFLNUI7WUFMdUIsT0FBQSxXQXBOM0JKLG9CQUFBQTtXQXlOSzs7b0JBek5MQTtZQTROSCxjQUFtQ0k7YUFDL0I7Y0FBQTtjQUNFOzswQkFBT0E7a0JBQUssT0FBQSwyQkFBTEE7aUJBQThDOzthQUFyRCxPQUFBLCtDQUY2QkE7WUFFMkI7WUFGaEMsT0FBQSxXQTVOM0JKLG9CQUFBQTtXQThONEQ7O29CQTlONURBLFFBZ095QmdCLGFBQVlDOzBCQUNSYjthQUM1QjtjQUFBOzs7MEJBTVNBO2tCQUVEOztxQkFBQTs7O3VCQVY0QmE7a0JBVTVCLE9BQUEsMkJBRkNiO2lCQUU2RDs7OzswQkFMN0RBO2tCQUVEOztxQkFBQTs7O3VCQVBnQlk7a0JBT2hCLE9BQUEsMkJBRkNaO2lCQUU0RDs7Y0FKbkU7OzBCQUNPQTtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBMkM7O2FBRGxELE9BQUEsK0NBRjBCQTtZQVV6QjtZQVZvQixPQUFBLFdBak94Qkosb0JBQUFBO1dBMk9LOztvQkEzT0xBO1lBa1BEOztlQUFBOzs7Ozs7WUFBQSxPQUFBO1dBQXlFOztvQkFsUHhFQSxRQW9QaUJrQixnQkFBZUM7MEJBQ1RmO2FBQ3RCO2NBQUE7OzswQkFJU0E7a0JBRUQ7O3FCQUFBOzs7O2tCQVBaLE9BQUE7cUVBS2FBLEdBTnNCZTtpQkFVWDs7OzswQkFMWGY7a0JBQUs7b0RBQUxBLEdBTE9jO2lCQUswQzs7Y0FGeEQ7OzBCQUNPZDtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBK0M7O2FBRHRELE9BQUEsK0NBRm9CQTtZQVVuQjtZQVZjLE9BQUEsV0FyUGxCSixvQkFBQUE7V0ErUEs7O29CQS9QTEEsUUFpUXNCb0I7MEJBQ0NoQjthQUN0QjtjQUFBOzs7MEJBR1NBLEdBQUssT0FKbEIsMkJBSWFBLEdBTFlnQixPQUswQjs7Y0FGN0M7OzBCQUNPaEI7a0JBQUssT0FBQSwyQkFBTEE7aUJBQXFEOzthQUQ1RCxPQUFBLCtDQUZvQkE7WUFLbkI7WUFMYyxPQUFBLFdBbFFsQkosb0JBQUFBO1dBdVFLOztvQkF2UUxBO1lBMFFILGNBQTBCSTthQUN0QjtjQUFBO2NBQ0U7OzBCQUFPQTtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBbUQ7O2FBQTFELE9BQUEsK0NBRm9CQTtZQUV5QztZQUY5QyxPQUFBLFdBMVFsQkosb0JBQUFBO1dBNFFpRTs7b0JBNVFqRUEsUUE4UXdCN1A7MEJBQ0xpUTthQUNsQjtjQUFBOzs7MEJBR1NBLEdBQUssT0FKbEIsMkJBSWFBLEdBTGNqUSxJQUtxQjs7Y0FGMUM7OzBCQUNPaVE7a0JBQUssT0FBQTsyQ0FBTEE7aUJBQXNEOzthQUQ3RCxPQUFBLCtDQUZnQkE7WUFLZjtZQUxVLE9BQUEsV0EvUWRKLG9CQUFBQTtXQW9SSzs7b0JBcFJMQSxRQXNSOEI3UDswQkFDUGlRO2FBQ3RCO2NBQUE7OzswQkFHU0EsR0FBSyxPQUpsQiwyQkFJYUEsR0FMb0JqUSxJQUtlOztjQUYxQzs7MEJBQ09pUTtrQkFBSyxPQUFBOzJDQUFMQTtpQkFBMkQ7O2FBRGxFLE9BQUEsK0NBRm9CQTtZQUtuQjtZQUxjLE9BQUEsV0F2UmxCSixvQkFBQUE7V0E0Uks7O29CQTVSTEEsUUE4UjZCN1A7MEJBQ0xpUTthQUN2QjtjQUFBOzs7MEJBR1NBLEdBQUssT0FKbEIsMkJBSWFBLEdBTG1CalEsSUFLZ0I7O2NBRjFDOzswQkFDT2lRO2tCQUFLLE9BQUE7MkNBQUxBO2lCQUEyRDs7YUFEbEUsT0FBQSwrQ0FGcUJBO1lBS3BCO1lBTGUsT0FBQSxXQS9SbkJKLG9CQUFBQTtXQW9TSzs7b0JBcFNMQTtZQXVTSCxjQUF5Qkk7YUFDckI7Y0FBQTtjQUNFOzswQkFDT0E7a0JBQ0gsT0FBQTsyQ0FER0E7aUJBQ3FEOzthQUY1RCxPQUFBLCtDQUZtQkE7WUFLbEI7WUFMYSxPQUFBLFdBdlNqQkosb0JBQUFBO1dBNFNLOztvQkE1U0xBLFFBOFN5QnFCOzBCQUNMakI7YUFDbkI7Y0FBQTs7OzBCQUdTQTtrQkFBSyxPQUpsQjsyREFJYUEsR0FMZWlCO2lCQUtrQzs7Y0FGeEQ7OzBCQUNPakI7a0JBQUssT0FBQTsyQ0FBTEE7aUJBQXVEOzthQUQ5RCxPQUFBLCtDQUZpQkE7WUFLaEI7WUFMVyxPQUFBLFdBL1NmSixvQkFBQUE7V0FvVEs7O29CQXBUTEE7WUF1VEgsY0FBMEJJO2FBQ3RCO2NBQUE7Y0FDRTs7MEJBQU9BO2tCQUFLLE9BQUE7MkNBQUxBO2lCQUF1RDs7YUFBOUQsT0FBQSwrQ0FGb0JBO1lBRTZDO1lBRmxELE9BQUEsV0F2VGxCSixvQkFBQUE7V0F5VHFFOztvQkF6VHJFQTtZQTRUSCxjQUEwQkk7YUFDdEI7Y0FBQTtjQUNFOzswQkFDT0E7a0JBQUssT0FBQTsyQ0FBTEE7aUJBQTREOzthQURuRSxPQUFBLCtDQUZvQkE7WUFJbkI7WUFKYyxPQUFBLFdBNVRsQkosb0JBQUFBO1dBZ1VLOztvQkFoVUxBO1lBbVVILGNBQTBCSTthQUN0QjtjQUFBO2NBQ0U7OzBCQUNPQTtrQkFBSyxPQUFBOzJDQUFMQTtpQkFBNEQ7O2FBRG5FLE9BQUEsK0NBRm9CQTtZQUluQjtZQUpjLE9BQUEsV0FuVWxCSixvQkFBQUE7V0F1VUs7O29CQXZVTEE7WUEwVUgsY0FBd0NJO2FBQ3BDO2NBQUE7Y0FDRTs7MEJBQU9BO2tCQUFLLE9BQUE7MkNBQUxBO2lCQUF1RDs7YUFBOUQsT0FBQSwrQ0FGa0NBO1lBRStCO1lBRnBDLE9BQUEsV0ExVWhDSixvQkFBQUE7V0E0VXFFOztvQkE1VXJFQTtZQStVSCxjQUFrQ0k7YUFDOUI7Y0FBQTtjQUNFOzswQkFBT0E7a0JBQUssT0FBQSwyQkFBTEE7aUJBQWlEOzthQUF4RCxPQUFBLCtDQUY0QkE7WUFFK0I7WUFGcEMsT0FBQSxXQS9VMUJKLG9CQUFBQTtXQWlWK0Q7O29CQWpWL0RBLFFBbVYwQnNCOzBCQUNKbEI7YUFDckI7Y0FBQTs7OzBCQUdTQTtrQkFBSyxPQUpsQiwyQkFJYUEsR0FMZ0JrQjtpQkFLNkI7O2NBRnBEOzswQkFDT2xCO2tCQUFLLE9BQUE7MkNBQUxBO2lCQUF5RDs7YUFEaEUsT0FBQSwrQ0FGbUJBO1lBS2xCO1lBTGEsT0FBQSxXQXBWakJKLG9CQUFBQTtXQXlWSzs7b0JBelZMQTtZQTRWSCxjQUE0Qkk7YUFDeEI7Y0FBQTtjQUNFOzswQkFBT0E7a0JBQUssT0FBQTsyQ0FBTEE7aUJBQXVEOzthQUE5RCxPQUFBLCtDQUZzQkE7WUFFMkM7WUFGaEQsT0FBQSxXQTVWcEJKLG9CQUFBQTtXQThWcUU7O29CQTlWckVBO1lBaVdILGNBQTBCSTthQUN0QjtjQUFBO2NBQ0U7OzBCQUFPQTtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBa0Q7O2FBQXpELE9BQUEsK0NBRm9CQTtZQUV3QztZQUY3QyxPQUFBLFdBaldsQkosb0JBQUFBO1dBbVdnRTs7b0JBbldoRUE7WUFzV0gsY0FBdUNJO2FBQ25DO2NBQUE7Y0FDRTs7MEJBQU9BO2tCQUFLLE9BQUE7MkNBQUxBO2lCQUFzRDs7YUFBN0QsT0FBQSwrQ0FGaUNBO1lBRStCO1lBRnBDLE9BQUEsV0F0Vy9CSixvQkFBQUE7V0F3V29FOztvQkF4V3BFQSxRQTBXbUJxQjswQkFDZ0JqQjthQUNsQztjQUFBOzs7MEJBR1NBO2tCQUFLLE9BSmxCOzJEQUlhQSxHQUxTaUI7aUJBSzhDOztjQUY5RDs7MEJBQ09qQjtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBa0Q7O2FBRHpELE9BQUEsK0NBRmdDQTtZQUsvQjtZQUwwQixPQUFBLFdBM1c5Qkosb0JBQUFBO1dBZ1hLOztvQkFoWExBO1lBbVhILGNBQXlCSTthQUNyQjtjQUFBO2NBQ0U7OzBCQUFPQTtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBa0Q7O2FBQXpELE9BQUEsK0NBRm1CQTtZQUV5QztZQUY5QyxPQUFBLFdBblhqQkosb0JBQUFBO1dBcVhnRTs7T0F0WC9DOzs7Ozs7Ozs7Ozs7c0JBdkd0QnJDLGFBT0FDLFNBOEZBbUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUM1RkFwUDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUdBQyxzQkFBd0JwQyxLQUFZZ0I7SUFDdEMsR0FEMEJoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNqQixJQUFMQyxLQUFLLDZCQURpQkQ7SUFFMUIsV0FMRUYsbUJBSUVHLElBRGtDdEI7SUFFdEMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEJDO1lBR0FDLHNCQUFzQkM7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKM0NGLGtCQUllO0dBQWtEO09BQ2pFd1E7WUFHQWpRLDBCQUE0QjlDLEtBQVlnQjtJQUMxQyxHQUQ4QmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3JCLElBQUxDLEtBQUssNkJBRHFCRDtJQUU5QixXQUxFMFEsdUJBSUV6USxJQURzQ3RCO0lBRTFDLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCMFE7WUFHQWpRLDBCQUEwQk47SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKL0N1UTthQUltQjs7R0FBa0Q7T0FDckVDO1lBR0EvUCwyQkFBNkJsRCxLQUFZZ0I7SUFDM0MsR0FEK0JoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN0QixJQUFMQyxLQUFLLDZCQURzQkQ7SUFFL0IsV0FMRTRRLHdCQUlFM1EsSUFEdUN0QjtJQUUzQyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQjRRO1lBR0EvUCwyQkFBMkJWO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSmhEeVE7YUFJb0I7O0dBQWtEO09BQ3RFbE47WUFHQUMsK0JBQWlDakcsS0FBWWdCO0lBQy9DLEdBRG1DaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDMUIsSUFBTEMsS0FBSyw2QkFEMEJEO0lBRW5DLFdBTEUyRCw0QkFJRTFELElBRDJDdEI7SUFFL0MsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEI0RDtZQUdBSywrQkFBK0I5RDtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUpwRHlEO2FBSXdCOztHQUFrRDtPQUMxRTRCO1lBR0FDLCtCQUFvQy9ILEtBQVlnQjtJQUNsRCxHQURzQ2hCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQzdCLElBQUxDLEtBQUssNkJBRDZCRDtJQUV0QyxXQUxFeUYsK0JBSUV4RixJQUQ4Q3RCO0lBRWxELE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCMEY7WUFHQUMsK0JBQWtDeEY7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKdkR1RjthQUkyQjs7R0FBa0Q7T0FDN0VNO1lBR0FDLDBCQUE0QnZJLEtBQVlnQjtJQUMxQyxHQUQ4QmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3JCLElBQUxDLEtBQUssNkJBRHFCRDtJQUU5QixXQUxFaUcsdUJBSUVoRyxJQURzQ3RCO0lBRTFDLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCa0c7WUFHQUcsMEJBQTBCbEc7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKL0MrRjthQUltQjs7R0FBa0Q7T0FDckUySztZQUdBQywrQkFBa0NwVCxLQUFZZ0I7SUFDaEQsR0FEb0NoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUMzQixJQUFMQyxLQUFLLDZCQUQyQkQ7SUFFcEMsV0FMRThRLDZCQUlFN1EsSUFENEN0QjtJQUVoRCxPQUFBLDZCQURJc0I7R0FFYztPQUNoQitRO1lBR0FDLCtCQUFnQzdRO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSnJENFE7YUFJeUI7O0dBQWtEO09BQzNFcks7WUFHQUMsOEJBQWdDakosS0FBWWdCO0lBQzlDLEdBRGtDaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDekIsSUFBTEMsS0FBSyw2QkFEeUJEO0lBRWxDLFdBTEUyRywyQkFJRTFHLElBRDBDdEI7SUFFOUMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEI0RztZQUdBRSw4QkFBOEIzRztJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUpuRHlHO2FBSXVCOztHQUFrRDtZQUN6RXFLLGlCQUFpQjdKLFVBQVVDO0lBQWUsT0FBQSwyQ0FBekJELFVBQVVDO0dBRTlCO1lBQ0c2SixxQkFBcUI5SixVQUFVQyxhQUFlM0osS0FBWWdCO0lBQzVELEdBRGdEaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDdkMsSUFBTEMsS0FBSyw2QkFEdUNEO0lBRWhELFdBTEVrUixpQkFHcUI3SixVQUFVQyxjQUM3QnJILElBRHdEdEI7SUFFNUQsT0FBQSw2QkFESXNCO0dBRWM7WUFDaEJtUixnQkFBZ0IzSixTQUFTQztJQUFjLE9BQUEsMkNBQXZCRCxTQUFTQztHQUU1QjtZQUNHMkoscUJBQXFCNUosU0FBU0MsWUFBWXRIO0lBQzVDO0tBQWlFLE1BQUEsZ0NBRHJCQTtLQUNQLE1BQUE7SUFBNEIsT0FBQSxXQUovRGdSLGdCQUdxQjNKLFNBQVNDO0dBQ3VEO09BQ3JGNEo7WUFHQUMsc0JBQXdCNVQsS0FBWWdCO0lBQ3RDLEdBRDBCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDakIsSUFBTEMsS0FBSyw2QkFEaUJEO0lBRTFCLFdBTEVzUixtQkFJRXJSLElBRGtDdEI7SUFFdEMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEJ1UjtZQUdBQyxzQkFBc0JyUjtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUozQ29SLGtCQUllO0dBQWtEO0dBQ3ZDO0lBQTFCRTtNQUEwQixxQ0FaMUJKO0lBcUJBSztNQUF5QixzQ0FkekJIO1lBaUNBcEssYUFBYUM7SUFBWSxPQXBEekI2SixpQkFvRGE3SixVQTVCYnFLO0dBOEJIO1lBQ0duSyxpQkFBaUJGLFVBQVkxSixLQUFZZ0I7SUFDM0MsR0FEK0JoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN0QixJQUFMQyxLQUFLLDZCQURzQkQ7SUFFL0IsV0FMRW9ILGFBR2lCQyxXQUNmcEgsSUFEdUN0QjtJQUUzQyxPQUFBLDZCQURJc0I7R0FFYztZQUNoQnVILFlBQVlDO0lBQVcsT0FwRHZCMkosZ0JBb0RZM0osU0ExQlprSztHQTRCSDtZQUNHaEssaUJBQWlCRixTQUFTckg7SUFDNUI7S0FBaUQsTUFBQSxnQ0FEckJBO0tBQ1AsTUFBQTtJQUE0QixPQUFBLFdBSi9Db0gsWUFHaUJDO0dBQ29EO09BQ3JFckQ7WUFHQTBGLGVBQWlCbk0sS0FBWWdCO0lBQy9CLEdBRG1CaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDVixJQUFMQyxLQUFLLDZCQURVRDtJQUVuQixXQUxFb0UsWUFJRW5FLElBRDJCdEI7SUFFL0IsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEIyRTtZQUdBbUYsZUFBZTNKO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBLFdBSnBDd0UsV0FJUTtHQUFrRDtPQUMxRHdGO1lBR0FDLHNCQUF3QjFNLEtBQVlnQjtJQUN0QyxHQUQwQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ2pCLElBQUxDLEtBQUssNkJBRGlCRDtJQUUxQixXQUxFb0ssbUJBSUVuSyxJQURrQ3RCO0lBRXRDLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCcUs7WUFHQUMsc0JBQXNCbks7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKM0NrSyxrQkFJZTtHQUFrRDtPQUNqRXNIO1lBR0FsRyw0QkFBOEIvTixLQUFZZ0I7SUFDNUMsR0FEZ0NoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN2QixJQUFMQyxLQUFLLDZCQUR1QkQ7SUFFaEMsV0FMRTRSLHlCQUlFM1IsSUFEd0N0QjtJQUU1QyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQjRSO1lBR0FsRyw0QkFBNEJ2TDtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUpqRHlSO2FBSXFCOztHQUFrRDtPQUN2RWpHO1lBR0FDLDJCQUE2QmxPLEtBQVlnQjtJQUMzQyxHQUQrQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3RCLElBQUxDLEtBQUssNkJBRHNCRDtJQUUvQixXQUxFNEwsd0JBSUUzTCxJQUR1Q3RCO0lBRTNDLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCNkw7WUFHQUcsMkJBQTJCN0w7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKaEQwTDthQUlvQjs7R0FBa0Q7T0FDdEVnRztZQUdBdEYsc0JBQXdCN08sS0FBWWdCO0lBQ3RDLEdBRDBCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDakIsSUFBTEMsS0FBSyw2QkFEaUJEO0lBRTFCLFdBTEU4UixtQkFJRTdSLElBRGtDdEI7SUFFdEMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEI4UjtZQUdBdEYsc0JBQXNCck07SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUE7YUFKM0MyUixrQkFJZTtHQUFrRDtPQUNqRXJGO1lBR0FDLGNBQWdCaFAsS0FBWWdCO0lBQzlCLEdBRGtCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDVCxJQUFMQyxLQUFLLDZCQURTRDtJQUVsQixXQUxFME0sV0FJRXpNLElBRDBCdEI7SUFFOUIsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEIyTTtZQUdBQyxjQUFjek07SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BQUEsV0FKbkN3TSxVQUlPO0dBQWtEO0dBQ3BDO0lBQXJCcEIsb0JBQXFCO0lBU3JCQztNQUFvQjtZQU9wQnVHLDRCQUNFL1IsSUFBR3RCO0lBQ0wsVUFES0E7MEJBQUFBOztrQkFBQUE7O29CQUFBQTttQkFFZSw4QkFGbEJzQjttQkFtRnNCLDhCQW5GdEJBOztvQkFBR3RCO21CQWtGb0IsOEJBbEZ2QnNCO21CQXNHb0IsOEJBdEdwQkE7O2tCQUFHdEI7aUJBdUdpQiw4QkF2R3BCc0I7aUJBaUZ5Qiw4QkFqRnpCQTtjQUFHdEI7Ozs7V0F1Q3FCNkMsTUF2Q3JCN0M7T0F3Q0QsOEJBeENGc0I7T0F5Q0UsV0ExTko2USw2QkFpTEU3USxJQXVDd0J1QjtPQUV0QixPQUFBLDhCQXpDRnZCOzs7O1lBeUQ2QndCLE1BekQxQjlDO1FBMERELDhCQTFERnNCO1FBMkRFLFdBNVJKMlEsd0JBaU9FM1EsSUF5RDZCd0I7UUFFM0IsT0FBQSw4QkEzREZ4Qjs7V0FHNEI4QyxNQUh6QnBFO09BSUQsOEJBSkZzQjtPQUtFLFdBdEJKdUwsbUJBaUJFdkwsSUFHNEI4QztPQUUxQixPQUFBLDhCQUxGOUM7OztXQW9GMEIrQyxNQXBGdkJyRTtPQXFGRCw4QkFyRkZzQjtPQXNGRSwyQkF0RkZBLElBb0YwQitDO09BRXhCLE9BQUEsOEJBdEZGL0M7O1VBU3VCZ0QsTUFUcEJ0RTtNQVVELDhCQVZGc0I7TUFXRSxXQXhDSnlNLFdBNkJFek0sSUFTdUJnRDtNQUVyQixPQUFBLDhCQVhGaEQ7Ozs7V0EyRXVCaUQsTUEzRXBCdkU7T0E0RUQsOEJBNUVGc0I7T0E2RUUsV0FsU0owRCw0QkFxTkUxRCxJQTJFdUJpRDtPQUVyQixPQUFBLDhCQTdFRmpEOztVQWlDa0JrRCxNQWpDZnhFO01Ba0NELDhCQWxDRnNCO01BbUNFLFdBaE9KZ0csdUJBNkxFaEcsSUFpQ2tCa0Q7TUFFaEIsT0FBQSw4QkFuQ0ZsRDs7O1VBZ0dtQm1ELE1BaEdoQnpFO01BaUdELDhCQWpHRnNCO01Ba0dFLFdBdkpKMkwsd0JBcURFM0wsSUFnR21CbUQ7TUFFakIsT0FBQSw4QkFsR0ZuRDs7U0FxQndCb0QsTUFyQnJCMUU7S0FzQkQsOEJBdEJGc0I7S0F1QkUsV0FoSEptRSxZQXlGRW5FLElBcUJ3Qm9EO0tBRXRCLE9BQUEsOEJBdkJGcEQ7Ozs7O1dBNkM2QnFELE1BN0MxQjNFO09BOENELDhCQTlDRnNCO09BK0NFLFdBaEhKMlIseUJBaUVFM1IsSUE2QzZCcUQ7T0FFM0IsT0FBQSw4QkEvQ0ZyRDs7VUEyQjRCc0QsT0EzQnpCNUU7TUE0QkQsOEJBNUJGc0I7TUE2QkUsV0ExUUp5USx1QkE2T0V6USxJQTJCNEJzRDtNQUUxQixPQUFBLDhCQTdCRnREOzs7VUFtRHdCZ1MsT0FuRHJCdFQ7TUFvREQsOEJBcERGc0I7TUFxREUsV0E5Rko2UixtQkF5Q0U3UixJQW1Ed0JnUztNQUV0QixPQUFBLDhCQXJERmhTOztTQXFFd0JpUyxPQXJFckJ2VDtLQXNFRCw4QkF0RUZzQjtLQXVFRSwyQkF2RUZBLElBcUV3QmlTO0tBRXRCLE9BQUEsOEJBdkVGalM7Ozs7VUFlOEJrUyxPQWYzQnhUO01BZ0JELDhCQWhCRnNCO01BaUJFLFdBOUZKbUssbUJBNkVFbkssSUFlOEJrUztNQUU1QixPQUFBLDhCQWpCRmxTOztTQStEbUJtUyxPQS9EaEJ6VDtLQWdFRCw4QkFoRUZzQjtLQWlFRSwyQkFqRUZBLElBK0RtQm1TO0tBRWpCLE9BQUEsOEJBakVGblM7OztTQXdHa0JvUyxPQXhHZjFUO0tBeUdELDhCQXpHRnNCO0tBMEdFLFdBM0hKdUwsbUJBaUJFdkwsSUF3R2tCb1M7S0FFaEIsT0FBQSw4QkExR0ZwUzs7UUEwRm1CcVMsT0ExRmhCM1Q7SUEyRkQsOEJBM0ZGc0I7SUE0RkUsV0FqUUowRywyQkFxS0UxRyxJQTBGbUJxUztJQUVqQixPQUFBLDhCQTVGRnJTO0dBNkd3QjtZQUUxQnNTLCtCQUFrQzVVLEtBQVlnQjtJQUNoRCxHQURvQ2hCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQzNCLElBQUxDLEtBQUssNkJBRDJCRDtJQWhIbENnUyw0QkFpSEUvUixJQUQ0Q3RCO0lBRWhELE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCdVMsMkJBQ0VsUixHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVFLFlBQUEsMkJBRkpELEdBQUVDOzs7TUEwTFEsSUFhRmtSLE9BYkUsMkJBMUxWblIsR0FBRUM7a0NBdU1Na1I7O2tCQUFBQTs7b0JBQUFBOztzQkFBQUE7O3dCQUFBQTs7MEJBQUFBOzBCQUNBLHNDQXhNUm5SLEdBdU1RbVI7Ozs7Ozs7O0tBSUU7TUE0TEZDLE9BNUxFLHNDQTNNVnBSLEdBQUVDO3FDQXVZTW1SOzs7T0F6SkEsMkJBOU9ScFIsR0FBRUM7T0ErT00sMkJBL09SRCxHQUFFQztPQWdQTSwyQkFoUFJELEdBQUVDO09BaVBjLElBQUpvUixPQUFJLFdBdmJsQi9OLFdBc01FdEQsR0FBRUM7T0FxUE0sMkJBclBSRCxHQUFFQztPQXNQTSwyQkF0UFJELEdBQUVDO09BdVBNLHNCQU5Jb1I7O2dDQXNKSkQ7T0E5SUEsMkJBelBScFIsR0FBRUM7T0EwUE0sMkJBMVBSRCxHQUFFQztPQTJQTSwyQkEzUFJELEdBQUVDO09BNFBjLElBQUpxUixPQUFJLFdBdGxCbEJqQyxzQkEwVkVyUCxHQUFFQztPQWdRTSwyQkFoUVJELEdBQUVDO09BaVFNLDJCQWpRUkQsR0FBRUM7T0FrUU0sdUJBTklxUjs7Z0NBMklKRjtPQXhIQSwyQkEvUVJwUixHQUFFQztPQWdSTSwyQkFoUlJELEdBQUVDO09BaVJNLDJCQWpSUkQsR0FBRUM7T0FrUmMsSUFBSnNSLE9BQUksV0FoakJsQjdCLDRCQThSRTFQLEdBQUVDO09Bc1JNLDJCQXRSUkQsR0FBRUM7T0F1Uk0sMkJBdlJSRCxHQUFFQztPQXdSTSxzQkFOSXNSOztnQ0FxSEpIO09BbklBLDJCQXBRUnBSLEdBQUVDO09BcVFNLDJCQXJRUkQsR0FBRUM7T0FzUU0sMkJBdFFSRCxHQUFFQztPQXVRYyxJQUFKdVIsT0FBSSxXQWpqQmxCM00sc0JBMFNFN0UsR0FBRUM7T0EyUU0sMkJBM1FSRCxHQUFFQztPQTRRTSwyQkE1UVJELEdBQUVDO09BNlFNLHNCQU5JdVI7O2dDQWdJSko7T0EzQ0EsMkJBNVZScFIsR0FBRUM7T0E2Vk0sMkJBN1ZSRCxHQUFFQztPQThWTSwyQkE5VlJELEdBQUVDO09BK1ZjLElBQUp3UixPQUFJLHNDQS9WaEJ6UixHQUFFQztPQW1XTSwyQkFuV1JELEdBQUVDO09Bb1dNLDJCQXBXUkQsR0FBRUM7T0FxV00sc0JBTkl3Ujs7Z0NBd0NKTDtPQWpFQSwyQkF0VVJwUixHQUFFQztPQXVVTSwyQkF2VVJELEdBQUVDO09Bd1VNLDJCQXhVUkQsR0FBRUM7T0F5VWMsSUFBSnlSLE9BQUksc0NBelVoQjFSLEdBQUVDO09BNlVNLDJCQTdVUkQsR0FBRUM7T0E4VU0sMkJBOVVSRCxHQUFFQztPQStVTSx1QkFOSXlSOztnQ0E4REpOO09BdERBLDJCQWpWUnBSLEdBQUVDO09Ba1ZNLDJCQWxWUkQsR0FBRUM7T0FtVk0sMkJBblZSRCxHQUFFQztPQW9WYyxJQUFKMFIsT0FBSSxXQXRwQmxCcFAsMkJBa1VFdkMsR0FBRUM7T0F3Vk0sMkJBeFZSRCxHQUFFQztPQXlWTSwyQkF6VlJELEdBQUVDO09BMFZNLHNCQU5JMFI7O2dDQW1ESlA7T0FoQ0EsMkJBdldScFIsR0FBRUM7T0F3V00sMkJBeFdSRCxHQUFFQztPQXlXTSwyQkF6V1JELEdBQUVDO09BMFdjLElBQUoyUixPQUFJLFdBNW5CbEJyTSwwQkFrUkV2RixHQUFFQztPQThXTSwyQkE5V1JELEdBQUVDO09BK1dNLDJCQS9XUkQsR0FBRUM7T0FnWE0sdUJBTkkyUjs7Z0NBNkJKUjtPQTVFQSwyQkEzVFJwUixHQUFFQztPQTRUTSwyQkE1VFJELEdBQUVDO09BNlRNLDJCQTdUUkQsR0FBRUM7T0E4VGMsSUFBSjRSLE9BQUksc0NBOVRoQjdSLEdBQUVDO09Ba1VNLDJCQWxVUkQsR0FBRUM7T0FtVU0sMkJBblVSRCxHQUFFQztPQW9VTSx1QkFOSTRSOzs7O2dDQXlFSlQ7T0FyQkEsMkJBbFhScFIsR0FBRUM7T0FtWE0sMkJBblhSRCxHQUFFQztPQW9YTSwyQkFwWFJELEdBQUVDO09BcVhjLElBQUo2UixPQUFJLFdBdmhCbEJ0SCx1QkFrS0V4SyxHQUFFQztPQXlYTSwyQkF6WFJELEdBQUVDO09BMFhNLDJCQTFYUkQsR0FBRUM7T0EyWE0sc0JBTkk2Ujs7Z0NBa0JKVjtPQVZBLDJCQTdYUnBSLEdBQUVDO09BOFhNLDJCQTlYUkQsR0FBRUM7T0ErWE0sMkJBL1hSRCxHQUFFQztPQWdZYyxJQUFKOFIsT0FBSSxXQTVmbEI1SCxrQkE0SEVuSyxHQUFFQztPQW9ZTSwyQkFwWVJELEdBQUVDO09BcVlNLDJCQXJZUkQsR0FBRUM7T0FzWU0sdUJBTkk4Ujs7Z0NBT0pYO09BbEdBLDJCQXJTUnBSLEdBQUVDO09Bc1NNLDJCQXRTUkQsR0FBRUM7T0F1U00sMkJBdlNSRCxHQUFFQztPQXdTYyxJQUFKK1IsT0FBSSxXQTlibEJ2QixrQkFzSkV6USxHQUFFQztPQTRTTSwyQkE1U1JELEdBQUVDO09BNlNNLDJCQTdTUkQsR0FBRUM7T0E4U00sdUJBTkkrUjs7Z0NBK0ZKWjtPQTdHQSwyQkExUlJwUixHQUFFQztPQTJSTSwyQkEzUlJELEdBQUVDO09BNFJNLDJCQTVSUkQsR0FBRUM7T0E2UmMsSUFBSmdTLE9BQUksV0EzY2xCMUIsd0JBOEtFdlEsR0FBRUM7T0FpU00sMkJBalNSRCxHQUFFQztPQWtTTSwyQkFsU1JELEdBQUVDO09BbVNNLHVCQU5JZ1M7O2dDQTBHSmI7T0F2RkEsMkJBaFRScFIsR0FBRUM7T0FpVE0sMkJBalRSRCxHQUFFQztPQWtUTSwyQkFsVFJELEdBQUVDO09BbVRjLElBQUppUyxPQUFJLFdBam9CbEIzQyx1QkE4VUV2UCxHQUFFQztPQXVUTSwyQkF2VFJELEdBQUVDO09Bd1RNLDJCQXhUUkQsR0FBRUM7T0F5VE0sc0JBTklpUzs7Z0NBb0ZKZDtPQS9LQSwyQkF4TlJwUixHQUFFQztPQXlOTSwyQkF6TlJELEdBQUVDO09BME5NLDJCQTFOUkQsR0FBRUM7T0EyTmMsSUFBSmtTLE9BQUksV0FyV2xCN0csVUEwSUV0TCxHQUFFQztPQStOTSwyQkEvTlJELEdBQUVDO09BZ09NLDJCQWhPUkQsR0FBRUM7T0FpT00sc0JBTklrUzs7Z0NBNEtKZjtPQTFMQSwyQkE3TVJwUixHQUFFQztPQThNTSwyQkE5TVJELEdBQUVDO09BK01NLDJCQS9NUkQsR0FBRUM7T0FnTmMsSUFBSm1TLE9BQUksV0E1VWxCakksa0JBNEhFbkssR0FBRUM7T0FvTk0sMkJBcE5SRCxHQUFFQztPQXFOTSwyQkFyTlJELEdBQUVDO09Bc05NLHNCQU5JbVM7O2dDQXVMSmhCO09BcEtBLDJCQW5PUnBSLEdBQUVDO09Bb09NLDJCQXBPUkQsR0FBRUM7T0FxT00sMkJBck9SRCxHQUFFQztPQXNPYyxJQUFKb1MsT0FBSSxXQWhhbEJySixrQkEwTEVoSixHQUFFQztPQTBPTSwyQkExT1JELEdBQUVDO09BMk9NLDJCQTNPUkQsR0FBRUM7T0E0T00sdUJBTklvUzs7O0tBa0tKLE9BQUEsc0NBeFlSclMsR0F1WVFvUjs7SUFuWUU7S0FrTEYvVCxJQWxMRSwyQkFKVjJDLEdBQUVDO29DQXNMTTVDOzs7TUE1S0Esc0NBVlIyQyxHQUFFQztNQVdjLElBQUpnQyxPQUFJLFdBdklsQmtJLGtCQTRIRW5LLEdBQUVDO01BZU0sMkJBZlJELEdBQUVDO01BZ0JNLDJCQWhCUkQsR0FBRUM7TUFpQk0sc0JBTklnQzs7d0NBMktKNUU7OztPQTNDQSxzQ0EzSVIyQyxHQUFFQztPQTRJYyxJQUFKMEIsTUFBSSxzQ0E1SWhCM0IsR0FBRUM7T0FnSk0sMkJBaEpSRCxHQUFFQztPQWlKTSwyQkFqSlJELEdBQUVDO09Ba0pNLHNCQU5JMEI7O2dDQTBDSnRFO09BekVBLHNDQTdHUjJDLEdBQUVDO09BOEdjLElBQUp5QixNQUFJLHNDQTlHaEIxQixHQUFFQztPQWtITSwyQkFsSFJELEdBQUVDO09BbUhNLDJCQW5IUkQsR0FBRUM7T0FvSE0sdUJBTkl5Qjs7Z0NBd0VKckU7T0FoRUEsc0NBdEhSMkMsR0FBRUM7T0F1SGMsSUFBSndCLE1BQUksV0F6YmxCYywyQkFrVUV2QyxHQUFFQztPQTJITSwyQkEzSFJELEdBQUVDO09BNEhNLDJCQTVIUkQsR0FBRUM7T0E2SE0sc0JBTkl3Qjs7Z0NBK0RKcEU7T0EvQ0EsMkJBdklSMkMsR0FBRUM7T0F3SU0sMkJBeElSRCxHQUFFQztPQXdJTTs7Z0NBOENBNUM7T0FsQ0Esc0NBcEpSMkMsR0FBRUM7T0FxSmMsSUFBSkUsTUFBSSxXQXZhbEJvRiwwQkFrUkV2RixHQUFFQztPQXlKTSwyQkF6SlJELEdBQUVDO09BMEpNLDJCQTFKUkQsR0FBRUM7T0EySk0sdUJBTklFOztnQ0FpQ0o5QztPQWxGQSxzQ0FwR1IyQyxHQUFFQztPQXFHYyxJQUFKQyxNQUFJLHNDQXJHaEJGLEdBQUVDO09BeUdNLDJCQXpHUkQsR0FBRUM7T0EwR00sMkJBMUdSRCxHQUFFQztPQTJHTSx1QkFOSUM7Ozs7Z0NBaUZKN0M7T0ExSkEsc0NBNUJSMkMsR0FBRUM7T0E2QmMsSUFBSitCLE1BQUksV0F2TmxCZ0gsa0JBMExFaEosR0FBRUM7T0FpQ00sMkJBakNSRCxHQUFFQztPQWtDTSwyQkFsQ1JELEdBQUVDO09BbUNNLHVCQU5JK0I7O2dDQXlKSjNFO09BakpBLHNDQXJDUjJDLEdBQUVDO09Bc0NjLElBQUo4QixNQUFJLFdBNU9sQnVCLFdBc01FdEQsR0FBRUM7T0EwQ00sMkJBMUNSRCxHQUFFQztPQTJDTSwyQkEzQ1JELEdBQUVDO09BNENNLHNCQU5JOEI7O2dDQWdKSjFFO09BeElBLHNDQTlDUjJDLEdBQUVDO09BK0NjLElBQUo2QixNQUFJLFdBellsQnVOLHNCQTBWRXJQLEdBQUVDO09BbURNLDJCQW5EUkQsR0FBRUM7T0FvRE0sMkJBcERSRCxHQUFFQztPQXFETSx1QkFOSTZCOztnQ0F1SUp6RTtPQXRIQSxzQ0FoRVIyQyxHQUFFQztPQWlFYyxJQUFKNEIsTUFBSSxXQS9WbEI2Tiw0QkE4UkUxUCxHQUFFQztPQXFFTSwyQkFyRVJELEdBQUVDO09Bc0VNLDJCQXRFUkQsR0FBRUM7T0F1RU0sc0JBTkk0Qjs7Z0NBcUhKeEU7T0EvSEEsc0NBdkRSMkMsR0FBRUM7T0F3RGMsSUFBSjJCLE1BQUksV0FsV2xCaUQsc0JBMFNFN0UsR0FBRUM7T0E0RE0sMkJBNURSRCxHQUFFQztPQTZETSwyQkE3RFJELEdBQUVDO09BOERNLHNCQU5JMkI7Ozs7O3dDQThISnZFOzs7T0FwR0Esc0NBbEZSMkMsR0FBRUM7T0FtRmMsSUFBSjZRLE9BQUksV0F6T2xCTCxrQkFzSkV6USxHQUFFQztPQXVGTSwyQkF2RlJELEdBQUVDO09Bd0ZNLDJCQXhGUkQsR0FBRUM7T0F5Rk0sdUJBTkk2UTs7Z0NBbUdKelQ7T0E3R0Esc0NBekVSMkMsR0FBRUM7T0EwRWMsSUFBSjRRLE9BQUksV0F4UGxCTix3QkE4S0V2USxHQUFFQztPQThFTSwyQkE5RVJELEdBQUVDO09BK0VNLDJCQS9FUkQsR0FBRUM7T0FnRk0sdUJBTkk0UTs7Z0NBNEdKeFQ7T0EzRkEsc0NBM0ZSMkMsR0FBRUM7T0E0RmMsSUFBSjJRLE9BQUksV0ExYWxCckIsdUJBOFVFdlAsR0FBRUM7T0FnR00sMkJBaEdSRCxHQUFFQztPQWlHTSwyQkFqR1JELEdBQUVDO09Ba0dNLHNCQU5JMlE7O2dDQTBGSnZUO09BdkRBLDJCQS9IUjJDLEdBQUVDO09BZ0lNLDJCQWhJUkQsR0FBRUM7T0FnSU07O2dDQXNEQTVDO09BbkRBLDJCQW5JUjJDLEdBQUVDO09Bb0lNLDJCQXBJUkQsR0FBRUM7T0FvSU07O2dDQWtEQTVDO09BbktBLHNDQW5CUjJDLEdBQUVDO09Bb0JjLElBQUowUSxPQUFJLFdBOUpsQnJGLFVBMElFdEwsR0FBRUM7T0F3Qk0sMkJBeEJSRCxHQUFFQztPQXlCTSwyQkF6QlJELEdBQUVDO09BMEJNLHNCQU5JMFE7Ozs7Z0NBa0tKdFQ7T0F6QkEsc0NBN0pSMkMsR0FBRUM7T0E4SmMsSUFBSitRLE9BQUksV0FoVWxCeEcsdUJBa0tFeEssR0FBRUM7T0FrS00sMkJBbEtSRCxHQUFFQztPQW1LTSwyQkFuS1JELEdBQUVDO09Bb0tNLHNCQU5JK1E7O2dDQXdCSjNUO09BUkEsc0NBOUtSMkMsR0FBRUM7T0ErS2MsSUFBSjhRLE9BQUksV0EzU2xCNUcsa0JBNEhFbkssR0FBRUM7T0FtTE0sMkJBbkxSRCxHQUFFQztPQW9MTSwyQkFwTFJELEdBQUVDO09BcUxNLHVCQU5JOFE7O2dDQU9KMVQ7T0FoQkEsMkJBdEtSMkMsR0FBRUM7T0F1S00sMkJBdktSRCxHQUFFQztPQXVLTTs7Z0NBZUE1QztPQVpBLDJCQTFLUjJDLEdBQUVDO09BMktNLDJCQTNLUkQsR0FBRUM7T0EyS007O2dDQVdBNUM7T0FoTEEsMkJBTlIyQyxHQUFFQztPQU9NLDJCQVBSRCxHQUFFQztPQU9NOzs7O0lBZ0xBLE9BQUEsc0NBdkxSRCxHQXNMUTNDO0dBbU5MO1lBRUxpViwrQkFBZ0N4VDtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0E3WXJEb1M7YUE2WXlCO0dBQWtEO0dBQ25EO0lBQXhCcUI7TUExcEJBM0MsaUJBd0pBYyw2QkFoSUFOO0lBeW9CQW9DO01BMXBCQTFDLGdCQXFRQW9CLDRCQTNPQWI7WUFvcEJBb0Msd0JBQTBCcFcsS0FBWWdCO0lBQ3hDLEdBRDRCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDbkIsSUFBTEMsS0FBSyw2QkFEbUJEO0lBRTVCLFdBN0JFNlQsc0JBNEJFNVQsSUFEb0N0QjtJQUV4QyxPQUFBLDZCQURJc0I7R0FFYztZQUloQitULHdCQUF3QjVUO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBNUI3QzBULHFCQTRCaUI7R0FBa0Q7T0FDbkVwTDtZQUdBQyx3QkFBMEJoTCxLQUFZZ0I7SUFDeEMsR0FENEJoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNuQixJQUFMQyxLQUFLLDZCQURtQkQ7SUFFNUIsV0FMRTBJLHFCQUlFekksSUFEb0N0QjtJQUV4QyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQjJJO1lBR0FJLHdCQUF3QjVJO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSjdDd0ksb0JBSWlCO0dBQWtEO09BQ25FSztZQUdBQyw0QkFBOEJ2TCxLQUFZZ0I7SUFDNUMsR0FEZ0NoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN2QixJQUFMQyxLQUFLLDZCQUR1QkQ7SUFFaEMsV0FMRWlKLHlCQUlFaEosSUFEd0N0QjtJQUU1QyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQmtKO1lBR0FFLDRCQUE0QmpKO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSmpEK0k7YUFJcUI7O0dBQWtEO09BQ3ZFOEs7WUFHQXJLLHlCQUEyQmpNLEtBQVlnQjtJQUN6QyxHQUQ2QmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3BCLElBQUxDLEtBQUssNkJBRG9CRDtJQUU3QixXQUxFaVUsc0JBSUVoVSxJQURxQ3RCO0lBRXpDLE9BQUEsNkJBRElzQjtHQUVjO09BQ2hCaVU7WUFHQXJLLHlCQUF5QnpKO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSjlDOFQscUJBSWtCO0dBQWtEO09BQ3BFaEk7WUFHQUMsaUJBQW1CeE8sS0FBWWdCO0lBQ2pDLEdBRHFCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDWixJQUFMQyxLQUFLLDZCQURZRDtJQUVyQixXQUxFa00sY0FJRWpNLElBRDZCdEI7SUFFakMsT0FBQSw2QkFESXNCO0dBRWM7T0FDaEJtTTtZQUdBQyxpQkFBaUJqTTtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUp0Q2dNLGFBSVU7R0FBa0Q7WUFDNUQrSCxtQkFDRWxVLElBQUd0QjtJQUNMLFVBREtBOzBCQUFBQTs7a0JBQUFBOztvQkFBQUE7O3NCQUFBQTtxQkE0QzZCO3lDQTVDaENzQjtxQkF5QzJCO3lDQXpDM0JBOztzQkFBR3RCO3FCQStDdUI7eUNBL0MxQnNCO3FCQXdDcUIsOEJBeENyQkE7O3FCQUFHdEI7bUJBZ0RtQiw4QkFoRHRCc0I7O3NCQUFHdEI7cUJBNkRtQiw4QkE3RHRCc0I7cUJBY3VCLDhCQWR2QkE7O2tCQUFHdEI7O29CQUFBQTs7c0JBQUFBO3FCQTBDNkI7eUNBMUNoQ3NCO3FCQTJDMkI7eUNBM0MzQkE7O3NCQUFHdEI7cUJBOEN3Qjt5Q0E5QzNCc0I7cUJBMkJpQzt5Q0EzQmpDQTs7b0JBQUd0QjttQkE2Q21CLDhCQTdDdEJzQjttQkE4RHFCLDhCQTlEckJBO2NBQUd0Qjs7O1VBRVk2QyxNQUZaN0M7TUFHRCw4QkFIRnNCO01BSUUsV0FyREp5SSxxQkFpREV6SSxJQUVldUI7TUFFYixPQUFBLDhCQUpGdkI7Ozs7V0FlNEJ3QixNQWZ6QjlDO09BZ0JELDhCQWhCRnNCO09BaUJFLDJCQWpCRkEsSUFlNEJ3QjtPQUUxQixPQUFBLDhCQWpCRnhCOztVQWlEMEI4QyxNQWpEdkJwRTtNQWtERCw4QkFsREZzQjtNQW1ERSxXQWwxQkp3RiwrQkEreEJFeEYsSUFpRDBCOEM7TUFFeEIsT0FBQSw4QkFuREY5Qzs7O1VBcUJ1QitDLE1BckJwQnJFO01Bc0JELDhCQXRCRnNCO01BdUJFLFdBcENKaU0sY0FhRWpNLElBcUJ1QitDO01BRXJCLE9BQUEsOEJBdkJGL0M7O1NBNEJ3QmdELE1BNUJyQnRFO0tBNkJELDhCQTdCRnNCO0tBOEJFLFdBdkRKZ1Usc0JBeUJFaFUsSUE0QndCZ0Q7S0FFdEIsT0FBQSw4QkE5QkZoRDs7O1NBUXNCaUQsTUFSbkJ2RTtLQVNELDhCQVRGc0I7S0FVRSwyQkFWRkEsSUFRc0JpRDtLQUVwQixPQUFBLDhCQVZGakQ7Ozs7VUErRGlCa0QsTUEvRGR4RTtNQWdFRCw4QkFoRUZzQjtNQWlFRSxXQXRHSmdKLHlCQXFDRWhKLElBK0RpQmtEO01BRWYsT0FBQSw4QkFqRUZsRDs7U0FrQzRCbUQsTUFsQ3pCekU7S0FtQ0QsOEJBbkNGc0I7S0FvQ0UsV0FuM0JKSCxtQkErMEJFRyxJQWtDNEJtRDtLQUUxQixPQUFBLDhCQXBDRm5EOzs7U0FxRWlCb0QsTUFyRWQxRTtLQXNFRCw4QkF0RUZzQjtLQXVFRSwyQkF2RUZBLElBcUVpQm9EO0tBRWYsT0FBQSw4QkF2RUZwRDs7UUF1RG1CcUQsTUF2RGhCM0U7SUF3REQsOEJBeERGc0I7SUF5REUsV0FwMkJKMEQsNEJBMnlCRTFELElBdURtQnFEO0lBRWpCLE9BQUEsOEJBekRGckQ7R0EwRXdCO1lBRTFCbVUsdUJBQXlCelcsS0FBWWdCO0lBQ3ZDLEdBRDJCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDbEIsSUFBTEMsS0FBSyw2QkFEa0JEO0lBN0V6Qm1VLG1CQThFRWxVLElBRG1DdEI7SUFFdkMsT0FBQSw2QkFESXNCO0dBRWM7WUFDaEJvVSxrQkFDRS9TLEdBQUVDO0lBQ0osMkJBREVELEdBQUVDO0lBRUUsWUFBQSwyQkFGSkQsR0FBRUM7OztNQXVKUTtPQTJCRnlSLE9BM0JFLDJCQXZKVjFSLEdBQUVDO3NDQWtMTXlSOzt5QkF2QkE7aUNBdUJBQTtRQW5CQTtpQ0FtQkFBO1FBckJBO2lDQXFCQUE7UUFUQTtpQ0FTQUE7UUFQQTtpQ0FPQUE7UUFMQTtpQ0FLQUE7UUFYQTs7O2lDQVdBQTtRQUhBO2lDQUdBQTtRQURBO2lDQUNBQTtRQWZBO2lDQWVBQTtRQWpCQTtpQ0FpQkFBO1FBYkE7aUNBYUFBO1FBekJBOztNQTBCQSxPQUFBLHNDQW5MUjFSLEdBa0xRMFI7O0tBSUU7TUErR0Z6UCxPQS9HRSxzQ0F0TFZqQyxHQUFFQztxQ0FxU01nQzs7O09BdkZBLDJCQTlNUmpDLEdBQUVDO09BK01NLDJCQS9NUkQsR0FBRUM7T0FnTk0sMkJBaE5SRCxHQUFFQztPQWlOYyxJQUFKOFEsT0FBSSxzQ0FqTmhCL1EsR0FBRUM7T0FxTk0sMkJBck5SRCxHQUFFQztPQXNOTSwyQkF0TlJELEdBQUVDO09BdU5NLHNCQU5JOFE7O2dDQW9GSjlPO09BakVBLDJCQXBPUmpDLEdBQUVDO09BcU9NLDJCQXJPUkQsR0FBRUM7T0FzT00sMkJBdE9SRCxHQUFFQztPQXVPYyxJQUFKNlEsT0FBSSxXQTFVbEI4QixxQkFtR0U1UyxHQUFFQztPQTJPTSwyQkEzT1JELEdBQUVDO09BNE9NLDJCQTVPUkQsR0FBRUM7T0E2T00sc0JBTkk2UTs7Z0NBOERKN087T0F0REEsMkJBL09SakMsR0FBRUM7T0FnUE0sMkJBaFBSRCxHQUFFQztPQWlQTSwyQkFqUFJELEdBQUVDO09Ba1BjLElBQUo0USxPQUFJLFdBM29DbEJqUyxrQkF5NUJFb0IsR0FBRUM7T0FzUE0sMkJBdFBSRCxHQUFFQztPQXVQTSwyQkF2UFJELEdBQUVDO09Bd1BNLHVCQU5JNFE7O2dDQW1ESjVPO09BM0NBLDJCQTFQUmpDLEdBQUVDO09BMlBNLDJCQTNQUkQsR0FBRUM7T0E0UE0sMkJBNVBSRCxHQUFFQztPQTZQYyxJQUFKMlEsT0FBSSxXQXRtQ2xCdk0sOEJBeTJCRXJFLEdBQUVDO09BaVFNLDJCQWpRUkQsR0FBRUM7T0FrUU0sMkJBbFFSRCxHQUFFQztPQW1RTSxzQkFOSTJROztnQ0F3Q0ozTztPQWhDQSwyQkFyUVJqQyxHQUFFQztPQXNRTSwyQkF0UVJELEdBQUVDO09BdVFNLDJCQXZRUkQsR0FBRUM7T0F3UWMsSUFBSjBRLE9BQUksV0E3bkNsQnBPLDJCQXEzQkV2QyxHQUFFQztPQTRRTSwyQkE1UVJELEdBQUVDO09BNlFNLDJCQTdRUkQsR0FBRUM7T0E4UU0sdUJBTkkwUTs7OztnQ0E2QkoxTztPQXJCQSwyQkFoUlJqQyxHQUFFQztPQWlSTSwyQkFqUlJELEdBQUVDO09Ba1JNLDJCQWxSUkQsR0FBRUM7T0FtUmMsSUFBSjBSLE9BQUksV0FsWWxCOUosd0JBK0dFN0gsR0FBRUM7T0F1Uk0sMkJBdlJSRCxHQUFFQztPQXdSTSwyQkF4UlJELEdBQUVDO09BeVJNLHVCQU5JMFI7O2dDQWtCSjFQO09BVkEsMkJBM1JSakMsR0FBRUM7T0E0Uk0sMkJBNVJSRCxHQUFFQztPQTZSTSwyQkE3UlJELEdBQUVDO09BOFJjLElBQUoyUixPQUFJLHNDQTlSaEI1UixHQUFFQztPQWtTTSwyQkFsU1JELEdBQUVDO09BbVNNLDJCQW5TUkQsR0FBRUM7T0FvU00sdUJBTkkyUjs7Z0NBT0ozUDtPQTdHQSwyQkF4TFJqQyxHQUFFQztPQXlMTSwyQkF6TFJELEdBQUVDO09BMExNLDJCQTFMUkQsR0FBRUM7T0EyTGMsSUFBSjRSLE9BQUksV0F0VGxCdkssb0JBMkhFdEgsR0FBRUM7T0ErTE0sMkJBL0xSRCxHQUFFQztPQWdNTSwyQkFoTVJELEdBQUVDO09BaU1NLHNCQU5JNFI7O2dDQTBHSjVQO09BbEdBLDJCQW5NUmpDLEdBQUVDO09Bb01NLDJCQXBNUkQsR0FBRUM7T0FxTU0sMkJBck1SRCxHQUFFQztPQXNNYyxJQUFKbVIsT0FBSSxzQ0F0TWhCcFIsR0FBRUM7T0EwTU0sMkJBMU1SRCxHQUFFQztPQTJNTSwyQkEzTVJELEdBQUVDO09BNE1NLHVCQU5JbVI7O2dDQStGSm5QO09BNUVBLDJCQXpOUmpDLEdBQUVDO09BME5NLDJCQTFOUkQsR0FBRUM7T0EyTk0sMkJBM05SRCxHQUFFQztPQTROYyxJQUFKK1EsT0FBSSxXQW5UbEJsRyxhQXVGRTlLLEdBQUVDO09BZ09NLDJCQWhPUkQsR0FBRUM7T0FpT00sMkJBak9SRCxHQUFFQztPQWtPTSxzQkFOSStROzs7S0EwRUosT0FBQSxzQ0F0U1JoUixHQXFTUWlDOztJQWpTRTtLQStJRjVFLElBL0lFLDJCQUpWMkMsR0FBRUM7b0NBbUpNNUM7OztNQXZIQSxzQ0E1QlIyQyxHQUFFQztNQTZCYyxJQUFKMEIsTUFBSSxzQ0E3QmhCM0IsR0FBRUM7TUFpQ00sMkJBakNSRCxHQUFFQztNQWtDTSwyQkFsQ1JELEdBQUVDO01BbUNNLHNCQU5JMEI7O3dDQXNISnRFOzs7T0EzQ0Esc0NBeEdSMkMsR0FBRUM7T0F5R2MsSUFBSkUsTUFBSSxXQWw5QmxCa0UsOEJBeTJCRXJFLEdBQUVDO09BNkdNLDJCQTdHUkQsR0FBRUM7T0E4R00sMkJBOUdSRCxHQUFFQztPQStHTSxzQkFOSUU7O2dDQTBDSjlDO09BdkRBLDJCQTVGUjJDLEdBQUVDO09BNkZNLDJCQTdGUkQsR0FBRUM7T0E2Rk07O2dDQXNEQTVDO09BbkRBLDJCQWhHUjJDLEdBQUVDO09BaUdNLDJCQWpHUkQsR0FBRUM7T0FpR007O2dDQWtEQTVDO09BL0NBLDJCQXBHUjJDLEdBQUVDO09BcUdNLDJCQXJHUkQsR0FBRUM7T0FxR007O2dDQThDQTVDO09BbENBLHNDQWpIUjJDLEdBQUVDO09Ba0hjLElBQUpDLE1BQUksV0F2K0JsQnFDLDJCQXEzQkV2QyxHQUFFQztPQXNITSwyQkF0SFJELEdBQUVDO09BdUhNLDJCQXZIUkQsR0FBRUM7T0F3SE0sdUJBTklDOztnQ0FpQ0o3QztPQTNEQSwyQkF4RlIyQyxHQUFFQztPQXlGTSwyQkF6RlJELEdBQUVDO09BeUZNOzs7O2dDQTBEQTVDO09BckdBLDJCQTlDUjJDLEdBQUVDO09BK0NNLDJCQS9DUkQsR0FBRUM7T0ErQ007O2dDQW9HQTVDO09BakdBLHNDQWxEUjJDLEdBQUVDO09BbURjLElBQUp5QixNQUFJLFdBdEpsQmtSLHFCQW1HRTVTLEdBQUVDO09BdURNLDJCQXZEUkQsR0FBRUM7T0F3RE0sMkJBeERSRCxHQUFFQztPQXlETSxzQkFOSXlCOztnQ0FnR0pyRTtPQXhGQSxzQ0EzRFIyQyxHQUFFQztPQTREYyxJQUFKd0IsTUFBSSxXQXI5QmxCN0Msa0JBeTVCRW9CLEdBQUVDO09BZ0VNLDJCQWhFUkQsR0FBRUM7T0FpRU0sMkJBakVSRCxHQUFFQztPQWtFTSx1QkFOSXdCOztnQ0F1RkpwRTtPQTNFQSwyQkF4RVIyQyxHQUFFQztPQXlFTSwyQkF6RVJELEdBQUVDO09BeUVNOztnQ0EwRUE1QztPQS9FQSwyQkFwRVIyQyxHQUFFQztPQXFFTSwyQkFyRVJELEdBQUVDO09BcUVNOzs7Ozt3Q0E4RUE1Qzs7O09BbkVBLDJCQWhGUjJDLEdBQUVDO09BaUZNLDJCQWpGUkQsR0FBRUM7T0FpRk07O2dDQWtFQTVDO09BdkVBLDJCQTVFUjJDLEdBQUVDO09BNkVNLDJCQTdFUkQsR0FBRUM7T0E2RU07O2dDQXNFQTVDO09BL0RBLDJCQXBGUjJDLEdBQUVDO09BcUZNLDJCQXJGUkQsR0FBRUM7T0FxRk07O2dDQThEQTVDO09BcElBLHNDQWZSMkMsR0FBRUM7T0FnQmMsSUFBSjRCLE1BQUksc0NBaEJoQjdCLEdBQUVDO09Bb0JNLDJCQXBCUkQsR0FBRUM7T0FxQk0sMkJBckJSRCxHQUFFQztPQXNCTSx1QkFOSTRCOztnQ0FtSUp4RTtPQTNIQSwyQkF4QlIyQyxHQUFFQztPQXlCTSwyQkF6QlJELEdBQUVDO09BeUJNOztnQ0EwSEE1QztPQTlHQSxzQ0FyQ1IyQyxHQUFFQztPQXNDYyxJQUFKMkIsTUFBSSxXQTdIbEJrSixhQXVGRTlLLEdBQUVDO09BMENNLDJCQTFDUkQsR0FBRUM7T0EyQ00sMkJBM0NSRCxHQUFFQztPQTRDTSxzQkFOSTJCOzs7O2dDQTZHSnZFO09BekJBLDJCQTFIUjJDLEdBQUVDO09BMkhNLDJCQTNIUkQsR0FBRUM7T0EySE07O2dDQXdCQTVDO09BckJBLDJCQTlIUjJDLEdBQUVDO09BK0hNLDJCQS9IUkQsR0FBRUM7T0ErSE07O2dDQW9CQTVDO09BakJBLHNDQWxJUjJDLEdBQUVDO09BbUljLElBQUorQixNQUFJLFdBbFBsQjZGLHdCQStHRTdILEdBQUVDO09BdUlNLDJCQXZJUkQsR0FBRUM7T0F3SU0sMkJBeElSRCxHQUFFQztPQXlJTSx1QkFOSStCOztnQ0FnQkozRTtPQVJBLHNDQTNJUjJDLEdBQUVDO09BNEljLElBQUo4QixNQUFJLHNDQTVJaEIvQixHQUFFQztPQWdKTSwyQkFoSlJELEdBQUVDO09BaUpNLDJCQWpKUkQsR0FBRUM7T0FrSk0sdUJBTkk4Qjs7Z0NBT0oxRTtPQTdJQSxzQ0FOUjJDLEdBQUVDO09BT2MsSUFBSjZCLE1BQUksV0FsSWxCd0Ysb0JBMkhFdEgsR0FBRUM7T0FXTSwyQkFYUkQsR0FBRUM7T0FZTSwyQkFaUkQsR0FBRUM7T0FhTSxzQkFOSTZCOzs7O0lBNklKLE9BQUEsc0NBcEpSOUIsR0FtSlEzQztHQW9KTDtZQUVMMlYsdUJBQXVCbFU7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BM1M1Q2lVLGtCQTJTZ0I7R0FBa0Q7WUFDbEVFLHVCQUNFdFUsSUFBR3RCO0lBQ0wsVUFES0E7eUJBQUFBOztrQkFBQUE7aUJBRWUsOEJBRmxCc0I7aUJBbUZzQiw4QkFuRnRCQTs7a0JBQUd0QjtpQkFrRm9CLDhCQWxGdkJzQjtpQkFpRnlCLDhCQWpGekJBO2NBQUd0Qjs7OztXQStEZ0J1VCxPQS9EaEJ2VDtPQWdFRCw4QkFoRUZzQjtPQWlFRSwyQkFqRUZBLElBK0RtQmlTO09BRWpCLE9BQUEsOEJBakVGalM7OztXQWU4QmtTLE9BZjNCeFQ7T0FnQkQsOEJBaEJGc0I7T0FpQkUsV0FqakNKbUssbUJBZ2lDRW5LLElBZThCa1M7T0FFNUIsT0FBQSw4QkFqQkZsUzs7VUEwRm1CbVMsT0ExRmhCelQ7TUEyRkQsOEJBM0ZGc0I7TUE0RkUsV0FwdENKMEcsMkJBd25DRTFHLElBMEZtQm1TO01BRWpCLE9BQUEsOEJBNUZGblM7Ozs7V0E2QzZCb0QsTUE3QzFCMUU7T0E4Q0QsOEJBOUNGc0I7T0ErQ0UsV0Fua0NKMlIseUJBb2hDRTNSLElBNkM2Qm9EO09BRTNCLE9BQUEsOEJBL0NGcEQ7O1VBMkI0QnFELE1BM0J6QjNFO01BNEJELDhCQTVCRnNCO01BNkJFLFdBN3RDSnlRLHVCQWdzQ0V6USxJQTJCNEJxRDtNQUUxQixPQUFBLDhCQTdCRnJEOzs7VUFtRHdCc0QsT0FuRHJCNUU7TUFvREQsOEJBcERGc0I7TUFxREUsV0FqakNKNlIsbUJBNC9CRTdSLElBbUR3QnNEO01BRXRCLE9BQUEsOEJBckRGdEQ7O1NBcUV3QmdTLE9BckVyQnRUO0tBc0VELDhCQXRFRnNCO0tBdUVFLDJCQXZFRkEsSUFxRXdCZ1M7S0FFdEIsT0FBQSw4QkF2RUZoUzs7Ozs7V0F5RDZCdUIsTUF6RDFCN0M7T0EwREQsOEJBMURGc0I7T0EyREUsV0EvdUNKMlEsd0JBb3JDRTNRLElBeUQ2QnVCO09BRTNCLE9BQUEsOEJBM0RGdkI7O1VBRzRCd0IsTUFIekI5QztNQUlELDhCQUpGc0I7TUFLRSxXQXorQkp1TCxtQkFvK0JFdkwsSUFHNEJ3QjtNQUUxQixPQUFBLDhCQUxGeEI7OztVQW9GMEI4QyxNQXBGdkJwRTtNQXFGRCw4QkFyRkZzQjtNQXNGRSwyQkF0RkZBLElBb0YwQjhDO01BRXhCLE9BQUEsOEJBdEZGOUM7O1NBdUN3QitDLE1BdkNyQnJFO0tBd0NELDhCQXhDRnNCO0tBeUNFLFdBN3FDSjZRLDZCQW9vQ0U3USxJQXVDd0IrQztLQUV0QixPQUFBLDhCQXpDRi9DOzs7O1VBU3VCZ0QsTUFUcEJ0RTtNQVVELDhCQVZGc0I7TUFXRSxXQTMvQkp5TSxXQWcvQkV6TSxJQVN1QmdEO01BRXJCLE9BQUEsOEJBWEZoRDs7U0EyRXVCaUQsTUEzRXBCdkU7S0E0RUQsOEJBNUVGc0I7S0E2RUUsV0FydkNKMEQsNEJBd3FDRTFELElBMkV1QmlEO0tBRXJCLE9BQUEsOEJBN0VGakQ7OztTQWlDa0JrRCxNQWpDZnhFO0tBa0NELDhCQWxDRnNCO0tBbUNFLFdBbnJDSmdHLHVCQWdwQ0VoRyxJQWlDa0JrRDtLQUVoQixPQUFBLDhCQW5DRmxEOztRQXFCd0JtRCxNQXJCckJ6RTtJQXNCRCw4QkF0QkZzQjtJQXVCRSxXQW5rQ0ptRSxZQTRpQ0VuRSxJQXFCd0JtRDtJQUV0QixPQUFBLDhCQXZCRm5EO0dBK0Z3QjtZQUUxQnVVLDJCQUE2QjdXLEtBQVlnQjtJQUMzQyxHQUQrQmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ3RCLElBQUxDLEtBQUssNkJBRHNCRDtJQWxHN0J1VSx1QkFtR0V0VSxJQUR1Q3RCO0lBRTNDLE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCd1Usc0JBQ0VuVCxHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVFLFlBQUEsMkJBRkpELEdBQUVDOztLQUlRO01Bd0pGNUMsSUF4SkUsMkJBSlYyQyxHQUFFQztxQ0E0Sk01Qzs7O09BdkhBLHNDQXJDUjJDLEdBQUVDO09Bc0NjLElBQUo4QixNQUFJLFdBanJDbEJ1QixXQTJvQ0V0RCxHQUFFQztPQTBDTSwyQkExQ1JELEdBQUVDO09BMkNNLDJCQTNDUkQsR0FBRUM7T0E0Q00sc0JBTkk4Qjs7Z0NBc0hKMUU7T0E5R0Esc0NBOUNSMkMsR0FBRUM7T0ErQ2MsSUFBSjZCLE1BQUksV0E5MENsQnVOLHNCQSt4Q0VyUCxHQUFFQztPQW1ETSwyQkFuRFJELEdBQUVDO09Bb0RNLDJCQXBEUkQsR0FBRUM7T0FxRE0sdUJBTkk2Qjs7Z0NBNkdKekU7T0E1RkEsc0NBaEVSMkMsR0FBRUM7T0FpRWMsSUFBSjRCLE1BQUksV0FweUNsQjZOLDRCQW11Q0UxUCxHQUFFQztPQXFFTSwyQkFyRVJELEdBQUVDO09Bc0VNLDJCQXRFUkQsR0FBRUM7T0F1RU0sc0JBTkk0Qjs7Z0NBMkZKeEU7T0FyR0Esc0NBdkRSMkMsR0FBRUM7T0F3RGMsSUFBSjJCLE1BQUksV0F2eUNsQmlELHNCQSt1Q0U3RSxHQUFFQztPQTRETSwyQkE1RFJELEdBQUVDO09BNkRNLDJCQTdEUkQsR0FBRUM7T0E4RE0sc0JBTkkyQjs7Z0NBb0dKdkU7T0FqQkEsc0NBM0lSMkMsR0FBRUM7T0E0SWMsSUFBSjBCLE1BQUksc0NBNUloQjNCLEdBQUVDO09BZ0pNLDJCQWhKUkQsR0FBRUM7T0FpSk0sMkJBakpSRCxHQUFFQztPQWtKTSxzQkFOSTBCOztnQ0FnQkp0RTtPQS9DQSxzQ0E3R1IyQyxHQUFFQztPQThHYyxJQUFKeUIsTUFBSSxzQ0E5R2hCMUIsR0FBRUM7T0FrSE0sMkJBbEhSRCxHQUFFQztPQW1ITSwyQkFuSFJELEdBQUVDO09Bb0hNLHVCQU5JeUI7O2dDQThDSnJFO09BdENBLHNDQXRIUjJDLEdBQUVDO09BdUhjLElBQUp3QixNQUFJLFdBOTNDbEJjLDJCQXV3Q0V2QyxHQUFFQztPQTJITSwyQkEzSFJELEdBQUVDO09BNEhNLDJCQTVIUkQsR0FBRUM7T0E2SE0sc0JBTkl3Qjs7Z0NBcUNKcEU7T0FyQkEsMkJBdklSMkMsR0FBRUM7T0F3SU0sMkJBeElSRCxHQUFFQztPQXdJTTs7Z0NBb0JBNUM7T0FSQSxzQ0FwSlIyQyxHQUFFQztPQXFKYyxJQUFKRSxNQUFJLFdBNTJDbEJvRiwwQkF1dENFdkYsR0FBRUM7T0F5Sk0sMkJBekpSRCxHQUFFQztPQTBKTSwyQkExSlJELEdBQUVDO09BMkpNLHVCQU5JRTs7Z0NBT0o5QztPQXhEQSxzQ0FwR1IyQyxHQUFFQztPQXFHYyxJQUFKQyxNQUFJLHNDQXJHaEJGLEdBQUVDO09BeUdNLDJCQXpHUkQsR0FBRUM7T0EwR00sMkJBMUdSRCxHQUFFQztPQTJHTSx1QkFOSUM7Ozs7Z0NBdURKN0M7T0F0SkEsMkJBTlIyQyxHQUFFQztPQU9NLDJCQVBSRCxHQUFFQztPQU9NOztnQ0FxSkE1QztPQTFFQSxzQ0FsRlIyQyxHQUFFQztPQW1GYyxJQUFKNlEsT0FBSSxXQTlxQ2xCTCxrQkEybENFelEsR0FBRUM7T0F1Rk0sMkJBdkZSRCxHQUFFQztPQXdGTSwyQkF4RlJELEdBQUVDO09BeUZNLHVCQU5JNlE7O2dDQXlFSnpUO09BbkZBLHNDQXpFUjJDLEdBQUVDO09BMEVjLElBQUo0USxPQUFJLFdBN3JDbEJOLHdCQW1uQ0V2USxHQUFFQztPQThFTSwyQkE5RVJELEdBQUVDO09BK0VNLDJCQS9FUkQsR0FBRUM7T0FnRk0sdUJBTkk0UTs7Z0NBa0ZKeFQ7T0FqRUEsc0NBM0ZSMkMsR0FBRUM7T0E0RmMsSUFBSjJRLE9BQUksV0EvMkNsQnJCLHVCQW14Q0V2UCxHQUFFQztPQWdHTSwyQkFoR1JELEdBQUVDO09BaUdNLDJCQWpHUkQsR0FBRUM7T0FrR00sc0JBTkkyUTs7Z0NBZ0VKdlQ7T0E3QkEsMkJBL0hSMkMsR0FBRUM7T0FnSU0sMkJBaElSRCxHQUFFQztPQWdJTTs7Z0NBNEJBNUM7T0F6QkEsMkJBbklSMkMsR0FBRUM7T0FvSU0sMkJBcElSRCxHQUFFQztPQW9JTTs7Z0NBd0JBNUM7T0F6SUEsc0NBbkJSMkMsR0FBRUM7T0FvQmMsSUFBSjBRLE9BQUksV0FubUNsQnJGLFVBK2tDRXRMLEdBQUVDO09Bd0JNLDJCQXhCUkQsR0FBRUM7T0F5Qk0sMkJBekJSRCxHQUFFQztPQTBCTSxzQkFOSTBROztnQ0F3SUp0VDtPQWxKQSxzQ0FWUjJDLEdBQUVDO09BV2MsSUFBSmdDLE9BQUksV0E1a0NsQmtJLGtCQWlrQ0VuSyxHQUFFQztPQWVNLDJCQWZSRCxHQUFFQztPQWdCTSwyQkFoQlJELEdBQUVDO09BaUJNLHNCQU5JZ0M7O2dDQWlKSjVFO09BaElBLHNDQTVCUjJDLEdBQUVDO09BNkJjLElBQUorQixNQUFJLFdBNXBDbEJnSCxrQkErbkNFaEosR0FBRUM7T0FpQ00sMkJBakNSRCxHQUFFQztPQWtDTSwyQkFsQ1JELEdBQUVDO09BbUNNLHVCQU5JK0I7OztLQWdJSixPQUFBLHNDQTdKUmhDLEdBNEpRM0M7OztLQUlFLElBU0Y0VSxPQVRFLDJCQWhLVmpTLEdBQUVDO2lDQXlLTWdTOztpQkFBQUE7O21CQUFBQTs7cUJBQUFBO3FCQUNBLHNDQTFLUmpTLEdBeUtRaVM7Ozs7OztJQUlFO0tBc0tGbEIsT0F0S0Usc0NBN0tWL1EsR0FBRUM7b0NBbVZNOFE7OztNQXhIQSwyQkEzTlIvUSxHQUFFQztNQTROTSwyQkE1TlJELEdBQUVDO01BNk5NLDJCQTdOUkQsR0FBRUM7TUE4TmMsSUFBSnVSLE9BQUksV0E3L0NsQm5DLHNCQSt4Q0VyUCxHQUFFQztNQWtPTSwyQkFsT1JELEdBQUVDO01BbU9NLDJCQW5PUkQsR0FBRUM7TUFvT00sdUJBTkl1Ujs7K0JBcUhKVDtNQWxHQSwyQkFqUFIvUSxHQUFFQztNQWtQTSwyQkFsUFJELEdBQUVDO01BbVBNLDJCQW5QUkQsR0FBRUM7TUFvUGMsSUFBSndSLE9BQUksV0F2OUNsQi9CLDRCQW11Q0UxUCxHQUFFQztNQXdQTSwyQkF4UFJELEdBQUVDO01BeVBNLDJCQXpQUkQsR0FBRUM7TUEwUE0sc0JBTkl3Ujs7K0JBK0ZKVjtNQTdHQSwyQkF0T1IvUSxHQUFFQztNQXVPTSwyQkF2T1JELEdBQUVDO01Bd09NLDJCQXhPUkQsR0FBRUM7TUF5T2MsSUFBSnlSLE9BQUksV0F4OUNsQjdNLHNCQSt1Q0U3RSxHQUFFQztNQTZPTSwyQkE3T1JELEdBQUVDO01BOE9NLDJCQTlPUkQsR0FBRUM7TUErT00sc0JBTkl5Ujs7K0JBMEdKWDtNQXJCQSwyQkE5VFIvUSxHQUFFQztNQStUTSwyQkEvVFJELEdBQUVDO01BZ1VNLDJCQWhVUkQsR0FBRUM7TUFpVWMsSUFBSjBSLE9BQUksc0NBalVoQjNSLEdBQUVDO01BcVVNLDJCQXJVUkQsR0FBRUM7TUFzVU0sMkJBdFVSRCxHQUFFQztNQXVVTSxzQkFOSTBSOzsrQkFrQkpaO01BM0NBLDJCQXhTUi9RLEdBQUVDO01BeVNNLDJCQXpTUkQsR0FBRUM7TUEwU00sMkJBMVNSRCxHQUFFQztNQTJTYyxJQUFKMlIsT0FBSSxzQ0EzU2hCNVIsR0FBRUM7TUErU00sMkJBL1NSRCxHQUFFQztNQWdUTSwyQkFoVFJELEdBQUVDO01BaVRNLHVCQU5JMlI7OytCQXdDSmI7TUFoQ0EsMkJBblRSL1EsR0FBRUM7TUFvVE0sMkJBcFRSRCxHQUFFQztNQXFUTSwyQkFyVFJELEdBQUVDO01Bc1RjLElBQUo0UixPQUFJLFdBN2pEbEJ0UCwyQkF1d0NFdkMsR0FBRUM7TUEwVE0sMkJBMVRSRCxHQUFFQztNQTJUTSwyQkEzVFJELEdBQUVDO01BNFRNLHNCQU5JNFI7OytCQTZCSmQ7TUFWQSwyQkF6VVIvUSxHQUFFQztNQTBVTSwyQkExVVJELEdBQUVDO01BMlVNLDJCQTNVUkQsR0FBRUM7TUE0VWMsSUFBSm1SLE9BQUksV0FuaURsQjdMLDBCQXV0Q0V2RixHQUFFQztNQWdWTSwyQkFoVlJELEdBQUVDO01BaVZNLDJCQWpWUkQsR0FBRUM7TUFrVk0sdUJBTkltUjs7K0JBT0pMO01BdERBLDJCQTdSUi9RLEdBQUVDO01BOFJNLDJCQTlSUkQsR0FBRUM7TUErUk0sMkJBL1JSRCxHQUFFQztNQWdTYyxJQUFKK1EsT0FBSSxzQ0FoU2hCaFIsR0FBRUM7TUFvU00sMkJBcFNSRCxHQUFFQztNQXFTTSwyQkFyU1JELEdBQUVDO01Bc1NNLHVCQU5JK1E7Ozs7K0JBbURKRDtNQTVFQSwyQkF2UVIvUSxHQUFFQztNQXdRTSwyQkF4UVJELEdBQUVDO01BeVFNLDJCQXpRUkQsR0FBRUM7TUEwUWMsSUFBSmlTLE9BQUksV0FyMkNsQnpCLGtCQTJsQ0V6USxHQUFFQztNQThRTSwyQkE5UVJELEdBQUVDO01BK1FNLDJCQS9RUkQsR0FBRUM7TUFnUk0sdUJBTklpUzs7K0JBeUVKbkI7TUF2RkEsMkJBNVBSL1EsR0FBRUM7TUE2UE0sMkJBN1BSRCxHQUFFQztNQThQTSwyQkE5UFJELEdBQUVDO01BK1BjLElBQUprUyxPQUFJLFdBbDNDbEI1Qix3QkFtbkNFdlEsR0FBRUM7TUFtUU0sMkJBblFSRCxHQUFFQztNQW9RTSwyQkFwUVJELEdBQUVDO01BcVFNLHVCQU5Ja1M7OytCQW9GSnBCO01BakVBLDJCQWxSUi9RLEdBQUVDO01BbVJNLDJCQW5SUkQsR0FBRUM7TUFvUk0sMkJBcFJSRCxHQUFFQztNQXFSYyxJQUFKbVMsT0FBSSxXQXhpRGxCN0MsdUJBbXhDRXZQLEdBQUVDO01BeVJNLDJCQXpSUkQsR0FBRUM7TUEwUk0sMkJBMVJSRCxHQUFFQztNQTJSTSxzQkFOSW1TOzsrQkE4REpyQjtNQXpKQSwyQkExTFIvUSxHQUFFQztNQTJMTSwyQkEzTFJELEdBQUVDO01BNExNLDJCQTVMUkQsR0FBRUM7TUE2TGMsSUFBSm9TLE9BQUksV0E1d0NsQi9HLFVBK2tDRXRMLEdBQUVDO01BaU1NLDJCQWpNUkQsR0FBRUM7TUFrTU0sMkJBbE1SRCxHQUFFQztNQW1NTSxzQkFOSW9TOzsrQkFzSkp0QjtNQXBLQSwyQkEvS1IvUSxHQUFFQztNQWdMTSwyQkFoTFJELEdBQUVDO01BaUxNLDJCQWpMUkQsR0FBRUM7TUFrTGMsSUFBSm9SLE9BQUksV0FudkNsQmxILGtCQWlrQ0VuSyxHQUFFQztNQXNMTSwyQkF0TFJELEdBQUVDO01BdUxNLDJCQXZMUkQsR0FBRUM7TUF3TE0sc0JBTklvUjs7K0JBaUtKTjtNQTlJQSwyQkFyTVIvUSxHQUFFQztNQXNNTSwyQkF0TVJELEdBQUVDO01BdU1NLDJCQXZNUkQsR0FBRUM7TUF3TWMsSUFBSnFSLE9BQUksV0F2MENsQnRJLGtCQStuQ0VoSixHQUFFQztNQTRNTSwyQkE1TVJELEdBQUVDO01BNk1NLDJCQTdNUkQsR0FBRUM7TUE4TU0sdUJBTklxUjs7K0JBMklKUDtNQW5JQSwyQkFoTlIvUSxHQUFFQztNQWlOTSwyQkFqTlJELEdBQUVDO01Ba05NLDJCQWxOUkQsR0FBRUM7TUFtTmMsSUFBSnNSLE9BQUksV0E5MUNsQmpPLFdBMm9DRXRELEdBQUVDO01BdU5NLDJCQXZOUkQsR0FBRUM7TUF3Tk0sMkJBeE5SRCxHQUFFQztNQXlOTSxzQkFOSXNSOzs7SUFpSUosT0FBQSxzQ0FwVlJ2UixHQW1WUStRO0dBRUw7WUFFTHFDLDJCQUEyQnRVO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQXpWaERxVSxzQkF5Vm9CO0dBQWtEO0dBQzlDO0lBQXhCRTtNQTNpREF6RCxpQkEybUNBcUQsd0JBbmxDQTdDO0lBMGhEQWtEO01BM2lEQXhELGdCQTBzQ0FxRCx1QkFockNBOUM7WUFxaURBa0QsbUJBQXFCbFgsS0FBWWdCO0lBQ25DLEdBRHVCaEIsU0FBTUcsTUFBTkgsUUFBQXFDLE1BQU1sQyxjQUFOa0M7SUFDZCxJQUFMQyxLQUFLLDZCQURjRDtJQUV2QixXQTdCRTJVLHNCQTRCRTFVLElBRCtCdEI7SUFFbkMsT0FBQSw2QkFESXNCO0dBRWM7WUFJaEI2VSxtQkFBbUIxVTtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQTVCeEN3VSxxQkE0Qlk7R0FBa0Q7WUFDOURHLGNBQ0U5VSxJQUFHdEI7SUFDTCxVQURLQTswQkFBQUE7O2tCQUFBQTs7b0JBQUFBOztzQkFBQUE7cUJBNEM2Qjt5Q0E1Q2hDc0I7cUJBeUMyQjt5Q0F6QzNCQTs7c0JBQUd0QjtxQkErQ3VCO3lDQS9DMUJzQjtxQkF3Q3FCLDhCQXhDckJBOztvQkFBR3RCO21CQWdEbUIsOEJBaER0QnNCO21CQWN1Qiw4QkFkdkJBOzttQkFBR3RCO2lCQTJCOEI7cUNBM0JqQ3NCOztvQkFBR3RCOztzQkFBQUE7cUJBMEM2Qjt5Q0ExQ2hDc0I7cUJBMkMyQjt5Q0EzQzNCQTs7c0JBQUd0QjtxQkE4Q3dCO3lDQTlDM0JzQjtxQkE2Q3NCLDhCQTdDdEJBO2NBQUd0Qjs7OztXQWV5QjZDLE1BZnpCN0M7T0FnQkQsOEJBaEJGc0I7T0FpQkUsMkJBakJGQSxJQWU0QnVCO09BRTFCLE9BQUEsOEJBakJGdkI7O1VBaUQwQndCLE1BakR2QjlDO01Ba0RELDhCQWxERnNCO01BbURFLFdBbnJESndGLCtCQWdvREV4RixJQWlEMEJ3QjtNQUV4QixPQUFBLDhCQW5ERnhCOzs7VUFxQnVCOEMsTUFyQnBCcEU7TUFzQkQsOEJBdEJGc0I7TUF1QkUsV0FyNEJKaU0sY0E4MkJFak0sSUFxQnVCOEM7TUFFckIsT0FBQSw4QkF2QkY5Qzs7U0FFZStDLE1BRlpyRTtLQUdELDhCQUhGc0I7S0FJRSxXQXQ1Qkp5SSxxQkFrNUJFekksSUFFZStDO0tBRWIsT0FBQSw4QkFKRi9DOzs7O1VBNEJ3QmdELE1BNUJyQnRFO01BNkJELDhCQTdCRnNCO01BOEJFLFdBeDVCSmdVLHNCQTAzQkVoVSxJQTRCd0JnRDtNQUV0QixPQUFBLDhCQTlCRmhEOztTQWtDNEJpRCxNQWxDekJ2RTtLQW1DRCw4QkFuQ0ZzQjtLQW9DRSxXQXB0REpILG1CQWdyREVHLElBa0M0QmlEO0tBRTFCLE9BQUEsOEJBcENGakQ7OztTQVFzQmtELE1BUm5CeEU7S0FTRCw4QkFURnNCO0tBVUUsMkJBVkZBLElBUXNCa0Q7S0FFcEIsT0FBQSw4QkFWRmxEOztRQXVEbUJtRCxNQXZEaEJ6RTtJQXdERCw4QkF4REZzQjtJQXlERSxXQXJzREowRCw0QkE0b0RFMUQsSUF1RG1CbUQ7SUFFakIsT0FBQSw4QkF6REZuRDtHQTREd0I7WUFFMUIrVSxrQkFBb0JyWCxLQUFZZ0I7SUFDbEMsR0FEc0JoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNiLElBQUxDLEtBQUssNkJBRGFEO0lBL0RwQitVLGNBZ0VFOVUsSUFEOEJ0QjtJQUVsQyxPQUFBLDZCQURJc0I7R0FFYztZQUNoQmdWLGFBQ0UzVCxHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVFLFlBQUEsMkJBRkpELEdBQUVDOztLQUlRO01BcUhGNUMsSUFySEUsMkJBSlYyQyxHQUFFQztxQ0F5SE01Qzs7O09BdkVBLHNDQWxEUjJDLEdBQUVDO09BbURjLElBQUp5QixNQUFJLFdBeitCbEJrUixxQkFzN0JFNVMsR0FBRUM7T0F1RE0sMkJBdkRSRCxHQUFFQztPQXdETSwyQkF4RFJELEdBQUVDO09BeURNLHNCQU5JeUI7O2dDQXNFSnJFO09BOURBLHNDQTNEUjJDLEdBQUVDO09BNERjLElBQUp3QixNQUFJLFdBeHlEbEI3QyxrQkE0dURFb0IsR0FBRUM7T0FnRU0sMkJBaEVSRCxHQUFFQztPQWlFTSwyQkFqRVJELEdBQUVDO09Ba0VNLHVCQU5Jd0I7O2dDQTZESnBFO09BakRBLDJCQXhFUjJDLEdBQUVDO09BeUVNLDJCQXpFUkQsR0FBRUM7T0F5RU07O2dDQWdEQTVDO09BckRBLDJCQXBFUjJDLEdBQUVDO09BcUVNLDJCQXJFUkQsR0FBRUM7T0FxRU07O2dDQW9EQTVDO09BakJBLHNDQXhHUjJDLEdBQUVDO09BeUdjLElBQUpFLE1BQUksV0FyeURsQmtFLDhCQTRyREVyRSxHQUFFQztPQTZHTSwyQkE3R1JELEdBQUVDO09BOEdNLDJCQTlHUkQsR0FBRUM7T0ErR00sc0JBTklFOztnQ0FnQko5QztPQTdCQSwyQkE1RlIyQyxHQUFFQztPQTZGTSwyQkE3RlJELEdBQUVDO09BNkZNOztnQ0E0QkE1QztPQXpCQSwyQkFoR1IyQyxHQUFFQztPQWlHTSwyQkFqR1JELEdBQUVDO09BaUdNOztnQ0F3QkE1QztPQXJCQSwyQkFwR1IyQyxHQUFFQztPQXFHTSwyQkFyR1JELEdBQUVDO09BcUdNOztnQ0FvQkE1QztPQVJBLHNDQWpIUjJDLEdBQUVDO09Ba0hjLElBQUpDLE1BQUksV0ExekRsQnFDLDJCQXdzREV2QyxHQUFFQztPQXNITSwyQkF0SFJELEdBQUVDO09BdUhNLDJCQXZIUkQsR0FBRUM7T0F3SE0sdUJBTklDOztnQ0FPSjdDO09BakNBLDJCQXhGUjJDLEdBQUVDO09BeUZNLDJCQXpGUkQsR0FBRUM7T0F5Rk07Ozs7Z0NBZ0NBNUM7T0FuSEEsc0NBTlIyQyxHQUFFQztPQU9jLElBQUo2QixNQUFJLFdBcjlCbEJ3RixvQkE4OEJFdEgsR0FBRUM7T0FXTSwyQkFYUkQsR0FBRUM7T0FZTSwyQkFaUkQsR0FBRUM7T0FhTSxzQkFOSTZCOztnQ0FrSEp6RTtPQXpDQSwyQkFoRlIyQyxHQUFFQztPQWlGTSwyQkFqRlJELEdBQUVDO09BaUZNOztnQ0F3Q0E1QztPQTdDQSwyQkE1RVIyQyxHQUFFQztPQTZFTSwyQkE3RVJELEdBQUVDO09BNkVNOztnQ0E0Q0E1QztPQXJDQSwyQkFwRlIyQyxHQUFFQztPQXFGTSwyQkFyRlJELEdBQUVDO09BcUZNOztnQ0FvQ0E1QztPQTFHQSxzQ0FmUjJDLEdBQUVDO09BZ0JjLElBQUo0QixNQUFJLHNDQWhCaEI3QixHQUFFQztPQW9CTSwyQkFwQlJELEdBQUVDO09BcUJNLDJCQXJCUkQsR0FBRUM7T0FzQk0sdUJBTkk0Qjs7Z0NBeUdKeEU7T0FqR0EsMkJBeEJSMkMsR0FBRUM7T0F5Qk0sMkJBekJSRCxHQUFFQztPQXlCTTs7Z0NBZ0dBNUM7T0FwRkEsc0NBckNSMkMsR0FBRUM7T0FzQ2MsSUFBSjJCLE1BQUksV0FoOUJsQmtKLGFBMDZCRTlLLEdBQUVDO09BMENNLDJCQTFDUkQsR0FBRUM7T0EyQ00sMkJBM0NSRCxHQUFFQztPQTRDTSxzQkFOSTJCOztnQ0FtRkp2RTtPQTdGQSxzQ0E1QlIyQyxHQUFFQztPQTZCYyxJQUFKMEIsTUFBSSxzQ0E3QmhCM0IsR0FBRUM7T0FpQ00sMkJBakNSRCxHQUFFQztPQWtDTSwyQkFsQ1JELEdBQUVDO09BbUNNLHNCQU5JMEI7O2dDQTRGSnRFO09BM0VBLDJCQTlDUjJDLEdBQUVDO09BK0NNLDJCQS9DUkQsR0FBRUM7T0ErQ007OztLQTJFQSxPQUFBLHNDQTFIUkQsR0F5SFEzQzs7O0tBK0JFLElBeUZGMEUsTUF6RkUsc0NBeEpWL0IsR0FBRUM7K0JBaVBNOEI7TUF2RkEsMkJBMUpSL0IsR0FBRUM7TUEySk0sMkJBM0pSRCxHQUFFQztNQTRKTSwyQkE1SlJELEdBQUVDO01BNkpjLElBQUorUSxPQUFJLFdBM21DbEIxSixvQkE4OEJFdEgsR0FBRUM7TUFpS00sMkJBaktSRCxHQUFFQztNQWtLTSwyQkFsS1JELEdBQUVDO01BbUtNLHNCQU5JK1E7OytCQW9GSmpQO01BNUVBLDJCQXJLUi9CLEdBQUVDO01Bc0tNLDJCQXRLUkQsR0FBRUM7TUF1S00sMkJBdktSRCxHQUFFQztNQXdLYyxJQUFKOFEsT0FBSSxzQ0F4S2hCL1EsR0FBRUM7TUE0S00sMkJBNUtSRCxHQUFFQztNQTZLTSwyQkE3S1JELEdBQUVDO01BOEtNLHVCQU5JOFE7OytCQXlFSmhQO01BdERBLDJCQTNMUi9CLEdBQUVDO01BNExNLDJCQTVMUkQsR0FBRUM7TUE2TE0sMkJBN0xSRCxHQUFFQztNQThMYyxJQUFKNlEsT0FBSSxXQXhtQ2xCaEcsYUEwNkJFOUssR0FBRUM7TUFrTU0sMkJBbE1SRCxHQUFFQztNQW1NTSwyQkFuTVJELEdBQUVDO01Bb01NLHNCQU5JNlE7OytCQW1ESi9PO01BakVBLDJCQWhMUi9CLEdBQUVDO01BaUxNLDJCQWpMUkQsR0FBRUM7TUFrTE0sMkJBbExSRCxHQUFFQztNQW1MYyxJQUFKNFEsT0FBSSxzQ0FuTGhCN1EsR0FBRUM7TUF1TE0sMkJBdkxSRCxHQUFFQztNQXdMTSwyQkF4TFJELEdBQUVDO01BeUxNLHNCQU5JNFE7OytCQThESjlPO01BM0NBLDJCQXRNUi9CLEdBQUVDO01BdU1NLDJCQXZNUkQsR0FBRUM7TUF3TU0sMkJBeE1SRCxHQUFFQztNQXlNYyxJQUFKMlEsT0FBSSxXQS9uQ2xCZ0MscUJBczdCRTVTLEdBQUVDO01BNk1NLDJCQTdNUkQsR0FBRUM7TUE4TU0sMkJBOU1SRCxHQUFFQztNQStNTSxzQkFOSTJROzsrQkF3Q0o3TztNQWhDQSwyQkFqTlIvQixHQUFFQztNQWtOTSwyQkFsTlJELEdBQUVDO01BbU5NLDJCQW5OUkQsR0FBRUM7TUFvTmMsSUFBSjBRLE9BQUksV0FoOERsQi9SLGtCQTR1REVvQixHQUFFQztNQXdOTSwyQkF4TlJELEdBQUVDO01BeU5NLDJCQXpOUkQsR0FBRUM7TUEwTk0sdUJBTkkwUTs7K0JBNkJKNU87TUFyQkEsMkJBNU5SL0IsR0FBRUM7TUE2Tk0sMkJBN05SRCxHQUFFQztNQThOTSwyQkE5TlJELEdBQUVDO01BK05jLElBQUpnQyxPQUFJLFdBMzVEbEJvQyw4QkE0ckRFckUsR0FBRUM7TUFtT00sMkJBbk9SRCxHQUFFQztNQW9PTSwyQkFwT1JELEdBQUVDO01BcU9NLHNCQU5JZ0M7OzZCQWtCSkY7TUFDQSxPQUFBLHNDQWxQUi9CLEdBaVBRK0I7S0FWQSwyQkF2T1IvQixHQUFFQztLQXdPTSwyQkF4T1JELEdBQUVDO0tBeU9NLDJCQXpPUkQsR0FBRUM7S0EwT2MsSUFBSitCLE1BQUksV0FsN0RsQk8sMkJBd3NERXZDLEdBQUVDO0tBOE9NLDJCQTlPUkQsR0FBRUM7S0ErT00sMkJBL09SRCxHQUFFQztLQWdQTSx1QkFOSStCOztJQTdHRjtLQXVCRm9QLE9BdkJFLDJCQTdIVnBSLEdBQUVDO29DQW9KTW1SOzt1QkFmQTsrQkFlQUEsNkJBakJBOytCQWlCQUE7TUFMQTsrQkFLQUE7TUFIQTsrQkFHQUEsOEJBREE7K0JBQ0FBO01BUEE7OzsrQkFPQUE7TUFYQTsrQkFXQUE7TUFiQTsrQkFhQUE7TUFUQTsrQkFTQUE7TUFyQkE7K0JBcUJBQTtNQW5CQTs7SUFvQkEsT0FBQSxzQ0FySlJwUixHQW9KUW9SO0dBK0ZMO1lBRUx3QyxrQkFBa0I5VTtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0F2UHZDNlUsYUF1UFc7R0FBa0Q7T0FDN0RFO1lBR0FDLGFBQWV6WCxLQUFZZ0I7SUFDN0IsR0FEaUJoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUNSLElBQUxDLEtBQUssNkJBRFFEO0lBRWpCLFdBTEVtVixVQUlFbFYsSUFEeUJ0QjtJQUU3QixPQUFBLDZCQURJc0I7R0FFYztPQUNoQm9WO1lBR0FDLGFBQWFsVjtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQSxXQUpsQ2lWLFNBSU07R0FBa0Q7WUFDeERyTCxjQUFjdUwsWUFDWnRWLElBQUl0QjtJQUNOLDhCQURFc0I7SUFFYSxJQUFYaUM7T0FBQUE7S0FBQUE7O0tBSUYsOEJBTkFqQztJQU9BLDhCQVBBQTtJQVFGLFdBckJBa1YsVUFhRWxWLElBQUl0QjtPQUVGdUQ7S0FBQUE7O0tBYUYsOEJBZkFqQztJQWdCQSw4QkFoQkFBO0lBaUJGLFdBbEJjc1YsWUFDWnRWLElBQUl0QjtJQWlCTixPQUFBLDhCQWpCRXNCO0dBcUJxQjtZQUV2QmdLLGtCQUFrQnNMLFlBQWM1WCxLQUFZZ0I7SUFDOUMsR0FEa0NoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN6QixJQUFMQyxLQUFLLDZCQUR5QkQ7SUF4QmhDZ0ssY0F3QmtCdUwsWUFDaEJ0VixJQUQwQ3RCO0lBRTlDLE9BQUEsNkJBRElzQjtHQUVjO1lBQ2hCaUssYUFBYXNMLFdBQ1hsVSxHQUFFQztJQUNKLDJCQURFRCxHQUFFQztJQUVKLDJCQUZFRCxHQUFFQztJQUdXLElBQVhrVSxtQkFDQUM7SUFDSjtLQUNFLDJCQU5BcFUsR0FBRUM7S0FPRiwyQkFQRUE7S0FRRiwyQkFSQUQsR0FBRUM7S0FRRjtNQUNJbEM7aUJBQ0VlLEdBQUV1QyxLQUFJM0M7U0FDUixVQURJMkM7Ozs7O2lCQUFJM0M7K0NBQU5JLE1BQUV1QyxNQUFJM0M7O1VBRU0sVUFBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztVQUVOOztTQUFBLGVBRk1BOzs7Ozs4Q0FBTkksR0FBRXVDO2lEQUFGdkMsR0FBRXVDO2NBSzZFO2FBR3RFOzs7OzhDQVJUdkMsR0FBRXVDOzs4Q0FBRnZDLEdBQUV1Qzs7Z0RBQUZ2QyxHQUFFdUM7a0RBQUZ2QyxHQUFFdUM7Y0FhdUo7YUFHaEo7O1NBSUY7UUFFSjtNQUVMQyxJQUFJLDJCQWxDUnRCLEdBU0lqQyxHQVRGa0M7S0FtQ0Ysc0NBbkNBRCxHQUFFQztjQWtDRXFCO01BL0JGNlMsa0JBcUNXLFdBMUVmSixTQWtDRS9ULEdBQUVDO21CQWtDRXFCO01BOUJGOFMsb0JBNENXLFdBakRGRixXQUNYbFUsR0FBRUM7O01Bc0RTLDRCQXREWEQsR0FBRUM7O01BMkRBLDJCQTNERkQsR0FBRUM7TUE0REEsMkJBNURGRCxHQUFFQztNQTZEQSwyQkE3REZELEdBQUVDO01BNkRBO09BQ0lzQjtrQkFDRXpDLEdBQUV1QyxLQUFJM0M7VUFDUixVQURJMkM7Ozs7O2tCQUFJM0M7Z0RBQU5JLE1BQUV1QyxNQUFJM0M7O1dBRU0sVUFBQSxrQ0FGWkksR0FBRXVDLEtBQUkzQztXQUVOOztVQUFBLGVBRk1BOzs7OzsrQ0FBTkksR0FBRXVDO2tEQUFGdkMsR0FBRXVDO2VBSzZFO2NBR3RFOzs7OytDQVJUdkMsR0FBRXVDOzsrQ0FBRnZDLEdBQUV1Qzs7aURBQUZ2QyxHQUFFdUM7bURBQUZ2QyxHQUFFdUM7ZUFhdUo7Y0FHaEo7O1VBSUY7U0FFSjtPQUVMRyxNQUFJLDJCQXZGVnhCLEdBOERNdUIsS0E5REp0QjtNQXdGQSxzQ0F4RkZELEdBQUVDO2VBdUZJdUI7T0FwRkoyUyxrQkEwRmEsV0EvSGpCSixTQWtDRS9ULEdBQUVDO29CQXVGSXVCO09BbkZKNFMsb0JBaUdhLFdBdEdKRixXQUNYbFUsR0FBRUM7O09BMkdXLDRCQTNHYkQsR0FBRUM7Ozs7OztpQkFJQW1VOztVQWlId0MvVyxjQUFBNkMsTUFBQTdDOztVQUFBNkMsTUFBaUIsc0NBckgzREY7bUJBR0VtVTs7VUFpSG9DaFUsa0JBQUFzQixNQUFBdEI7O1VBQUFzQixNQUFpQixzQ0FwSHZEekI7S0FtSEksV0FDa0N5QixLQUNJdkI7O0dBR3pDO1lBRUgySSxrQkFBa0JxTCxXQUFXcFY7SUFDcUIsVUFBQSxnQ0FEckJBO0lBQ3FCLE9BNUhsRDhKO2FBMkhrQnNMLFdBQ0k7R0FBa0Q7T0FDeEVHO1lBR0FySywyQkFBNkIzTixLQUFZZ0I7SUFDM0MsR0FEK0JoQixTQUFNRyxNQUFOSCxRQUFBcUMsTUFBTWxDLGNBQU5rQztJQUN0QixJQUFMQyxLQUFLLDZCQURzQkQ7SUFFL0IsV0FMRTJWLHdCQUlFMVYsSUFEdUN0QjtJQUUzQyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQjJWO1lBR0FySywyQkFBMkJuTDtJQUNxQixVQUFBLGdDQURyQkE7SUFDcUIsT0FBQTthQUpoRHdWO2FBSW9COztHQUFrRDtPQUN0RTlLO1lBR0FDLG9CQUFzQnBOLEtBQVlnQjtJQUNwQyxHQUR3QmhCLFNBQU1HLE1BQU5ILFFBQUFxQyxNQUFNbEMsY0FBTmtDO0lBQ2YsSUFBTEMsS0FBSyw2QkFEZUQ7SUFFeEIsV0FMRThLLGlCQUlFN0ssSUFEZ0N0QjtJQUVwQyxPQUFBLDZCQURJc0I7R0FFYztPQUNoQitLO1lBR0FHLG9CQUFvQi9LO0lBQ3FCLFVBQUEsZ0NBRHJCQTtJQUNxQixPQUFBO2FBSnpDNEssZ0JBSWE7R0FBa0Q7Ozs7T0F0cUUvRGxMO09BR0FDO09BSUFHO09BR0FDO09BRUF1UTtPQUdBalE7T0FJQWtRO09BR0FqUTtPQUVBa1E7T0FHQS9QO09BSUFnUTtPQUdBL1A7T0FFQTZDO09BR0FDO09BSUFDO09BR0FLO09BRUF1QjtPQUdBQztPQUlBQztPQUdBQztPQUVBSztPQUdBQztPQUlBQztPQUdBRztPQUVBd0s7T0FHQUM7T0FJQUM7T0FHQUM7T0FFQXRLO09BR0FDO09BSUFDO09BR0FFO09BRUFtSztPQUdBQztPQUlBQztPQUdBQztPQUVBQztPQUdBQztPQUlBQztPQUdBQztPQThCQXJLO09BR0FHO09BSUFDO09BR0FHO09BRUF2RDtPQUdBMEY7T0FJQWxGO09BR0FtRjtPQUVBSztPQUdBQztPQUlBQztPQUdBQztPQUVBcUg7T0FHQWxHO09BSUFtRztPQUdBbEc7T0FFQUM7T0FHQUM7T0FJQUM7T0FHQUc7T0FFQTZGO09BR0F0RjtPQUlBdUY7T0FHQXRGO09BRUFDO09BR0FDO09BSUFDO09BR0FDO09Ba0JBbUY7T0FnSEFPO09BSUFDO09BNFlBb0I7T0FFQUM7T0EyQkFFO09BcEJBRDtPQTJCQUU7T0FFQXRMO09BR0FDO09BSUFDO09BR0FJO09BRUFDO09BR0FDO09BSUFDO09BR0FFO09BRUE0SztPQUdBcks7T0FJQXNLO09BR0FySztPQUVBcUM7T0FHQUM7T0FJQUM7T0FHQUM7T0FFQThIO09BNkVBQztPQUlBQztPQTBTQUM7T0FFQUM7T0FrR0FDO09BSUFDO09Bd1ZBQztPQUVBQztPQTJCQUU7T0FwQkFEO09BMkJBRTtPQUVBQztPQStEQUM7T0FJQUM7T0FzUEFDO09BRUFDO09BR0FDO09BSUFDO09BR0FDO09BRUF0TDtPQXdCQUM7T0FJQUM7T0EySEFDO09BRUF3TDtPQUdBcks7T0FJQXNLO09BR0FySztPQUVBVDtPQUdBQztPQUlBQztPQUdBRzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQzV0RUo7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFSTBLLFdBQVlDLFNBQ1hDLGNBQXNDQztJQUV2QztLQURFOVg7T0FDRjs7O1NBRnVDOFg7YUFJckNDLFFBR0NDLE1BQUt6VztLQUNSO01BR3lCLE9BQUEsK0NBSnRCeVcsTUFBS3pXO01BQ0owVyxnQkFQRmpZO01BYUVMO1FBQ0Y7Ozs7VUFQRXNZO0tBU0osT0FBQSxXQWpCQ0osY0FjR2xZO0lBR2E7SUFFbkIsWUFsQklLOzs7OztRQWtFRjtTQUFBLHVCQUFnRCxpQkFBZ0I7U0FBbkMsc0IsT0EvRDNCK1g7U0ErREY7V0FBQSxrQ0FwRVlILHlCQUFBQTtRQW9FaUIsT0FBQTs7T0F4QzdCO1FBQUEsdUJBQWlELGtCQUFpQjtRQUFwQyxzQixPQXZCNUJHO1FBdUJGO1VBQUEsa0NBNUJZSCx5QkFBQUE7T0E0QmtCLE9BQUE7Ozs7UUE0QjlCO1NBQUEsZ0JBQ2lCclcsUUFBVSxzQkFBVkEsUUFBMkM7U0FBeEQsc0IsT0FwREZ3VztTQW1ERjtXQUFBLGtDQXhEWUgseUJBQUFBO1FBeURSLE9BQUE7O09BVko7UUFBQSxnQkFDaUJyVyxRQUFVLHNCQUFWQSxRQUFzQztRQUFuRCxzQixPQTNDRndXO1FBMENGO1VBQUEsa0NBL0NZSCx5QkFBQUE7T0FnRFIsT0FBQTs7O09BV0o7UUFBQSxnQkFDaUJyVyxRQUFVLHNCQUFWQSxRQUFxQztRQUFsRCxzQixPQXZERndXO1FBc0RGO1VBQUEsa0NBM0RZSCx3QkFBQUE7T0E0RFIsT0FBQTs7TUFmSjtPQUFBLGdCQUF5Q3JXLFFBQVUsc0JBQVZBLFFBQWdDO09BQTdDLHNCLE9BeEMxQndXO09Bd0NGO1NBQUEsa0NBN0NZSCx5QkFBQUE7TUE2Q2dCLE9BQUE7OztNQVQ1QjtPQUFBLGdCQUNpQnJXLFFBQVUsdUJBQVZBLFFBQTRDO09BQXpELHNCLE9BaENGd1c7T0ErQkY7U0FBQSxrQ0FwQ1lILHlCQUFBQTtNQXFDUixPQUFBOzs7O09BYUo7UUFBQSxnQkFDaUJyVyxRQUFVLHVCQUFWQSxRQUEyQztRQUF4RCxzQixPQTlDRndXO1FBNkNGO1VBQUEsa0NBbERZSCx5QkFBQUE7T0FtRFIsT0FBQTs7TUFFSjtPQUFBLGdCQUNpQnJXLFFBQVUsdUJBQVZBLFFBQXNDO09BQW5ELHNCLE9BakRGd1c7T0FnREY7U0FBQSxrQ0FyRFlILHlCQUFBQTtNQXNEUixPQUFBOzs7TUFXSjtPQUFBO2tCQUNpQnJXO1VBQVU7O2tCQUFzQixrREFBaENBO1NBQXNEO09BQW5FLHNCLE9BN0RGd1c7T0E0REY7U0FBQSxrQ0FqRVlILHlCQUFBQTtNQWtFUixPQUFBOztLQUpKO01BQUEsZ0JBQ2lCclcsUUFBVSx1QkFBVkEsUUFBaUM7TUFBOUMsc0IsT0ExREZ3VztNQXlERjtRQUFBLGtDQTlEWUgsMEJBQUFBO0tBK0RSLE9BQUE7Ozs7OztPQWpDSjtRQUQwQk07UUFDMUIsZ0JBQ2lCM1csUUFBVSxzQkFBVkEsUUFBMEM7UUFBdkQsc0IsT0ExQkZ3VztRQXlCRjtVQUFBO21DQTlCWUg7WUFBQUE7WUE2QmNNO09BRXRCLE9BQUE7O01BdUNKO09BRHdCQztPQUN4QixnQkFDaUJqVyxHQUFLLHNCQUFMQSxHQUE4QjtPQUEzQyxzQixPQWxFRjZWO09BaUVGO1NBQUE7a0NBdEVZSDtXQUFBQTtXQXFFWU87TUFFcEIsT0FBQTs7O01BdENKO09BRHFCQztPQUNyQixnQkFDaUI3VyxRQUFVLHNCQUFWQSxRQUFxQztPQUFsRCxzQixPQTdCRndXO09BNEJGO1NBQUE7a0NBakNZSCx5QkFBQUEsU0FnQ1NRO01BRWpCLE9BQUE7O0tBWko7O01BRGlEQztNQUFMNUc7TUFBakI2RztNQUMzQix1QkFDdUIsaUJBQVk7TUFBL0Isc0IsT0FsQkZQO01BaUJGO1FBQUE7aUNBdEJZSDtVQUFBQTtVQXFCZVU7VUFBaUI3RztVQUFLNEc7S0FFN0MsT0FBQTs7OztNQWdCSjtPQURzQkU7T0FDdEIsZ0JBQ2lCaFgsUUFBVSxzQkFBVkEsUUFBc0M7T0FBbkQsc0IsT0FuQ0Z3VztPQWtDRjtTQUFBO2tDQXZDWUg7V0FBQUE7V0FzQ1VXO01BRWxCLE9BQUE7O0tBRUo7TUFEMEJDO01BQzFCLGdCQUNpQmpYLFFBQVUsdUJBQVZBLFFBQTBDO01BQXZELHNCLE9BdENGd1c7TUFxQ0Y7UUFBQTtpQ0ExQ1lIO1VBQUFBO1VBeUNjWTtLQUV0QixPQUFBOzs7S0FsQko7TUFEb0JDO01BQ3BCLHVCQUN1QixrQkFBbUI7TUFBdEMsc0IsT0FyQkZWO01Bb0JGO1FBQUE7aUNBekJZSDtVQUFBQTtVQXdCUWE7S0FFaEIsT0FBQTs7UUE4Q2FDO0lBQ2pCLGNBQ2lCblgsUUFBVSx1QkFBVkEsUUFBaUM7SUFBOUMsb0IsT0FyRUZ3VztJQW9FRjs7T0FBQTtnQ0F6RVlIO1NBQUFBO1NBd0VLYztJQUViLE9BQUE7R0FBK0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQVU5Q3pILFFBSXlCcUgsaUJBQWdCN0csS0FBSTRHOzBCQU94Q007YUFGMkIsaUJBRTNCQTtjQUQyQixXQUFBO2NBQUEsT0FBQTs7YUFHekI7O2dCQUFBOzs7O21DQUZGQTthQUVFLE9BQUE7WUFBMkQ7WUFKakU7YUFBQSxPQUFBO2FBSEo7ZUFBQTtpQkFORzFIO2lCQUFBQTs7O3NCQUl5QnFILGlCQUFnQjdHLEtBQUk0RztZQUs1QyxPQUFBO1dBSWlFOztvQkFibEVwSCxRQWV1QjJIOzBCQUtsQkQ7YUFGMkIsa0JBRTNCQTtjQURrQyxXQUFBO2NBQUEsT0FBQTs7YUFHaEM7O2dCQUFBOzs7O21DQUZGQTthQUVFLE9BQUE7WUFBMkQ7WUFKakU7YUFBQSxPQUFBO2FBREo7ZUFBQTtpQkFqQkcxSCxvQkFBQUEsd0JBZXVCMkg7WUFHdEIsT0FBQTtXQUlpRTs7b0JBdEJsRTNIOzBCQTRCSzBIO2FBRjJCLGtCQUUzQkE7Y0FEZ0MsV0FBQTtjQUFBLE9BQUE7O2FBRzlCOztnQkFBQTs7OzttQ0FGRkE7YUFFRSxPQUFBO1lBQTJEO1lBSmpFO2FBQUEsT0FBQTthQURKLE9BQUEsV0F6QkcxSCxvQkFBQUE7WUEwQkMsT0FBQTtXQUlpRTs7b0JBOUJsRUEsUUFnQytCaUg7MEJBTTFCUzthQUgyQixVQUczQkEsdUNBQUFBO2NBRFc7ZUFEZUUsaUJBRTFCRjtlQURXO2lCQUFBOzBEQURlRTtjQUNmLE9BQUE7O2FBR1Q7O2dCQUFBOzs7O21DQUZGRjthQUVFLE9BQUE7WUFBMkQ7WUFMakU7YUFBQSxPQUFBO2FBREo7ZUFBQTtpQkFsQ0cxSCxvQkFBQUEsdUJBZ0MrQmlIO1lBRzlCLE9BQUE7V0FLaUU7O29CQXhDbEVqSCxRQTBDeUI2SDswQkFNcEJIO2FBSDJCLFVBRzNCQSx1Q0FBQUE7Y0FEVztlQURVSSxXQUVyQko7ZUFEVztpQkFBQSxrREFEVUk7Y0FDVixPQUFBOzthQUdUOztnQkFBQTs7OzttQ0FGRko7YUFFRSxPQUFBO1lBQTJEO1lBTGpFO2FBQUEsT0FBQTthQURKO2VBQUE7aUJBNUNHMUgsb0JBQUFBLHVCQTBDeUI2SDtZQUd4QixPQUFBO1dBS2lFOztvQkFsRGxFN0g7MEJBMERLMEg7YUFIMkIsVUFHM0JBLHdDQUFBQTtjQURXO2VBRGlCSyxjQUU1Qkw7ZUFEVztpQkFBQTswREFEaUJLO2NBQ2pCLE9BQUE7O2FBR1Q7O2dCQUFBOzs7O21DQUZGTDthQUVFLE9BQUE7WUFBMkQ7WUFMakU7YUFBQSxPQUFBO2FBREosT0FBQSxXQXRERzFILG9CQUFBQTtZQXVEQyxPQUFBO1dBS2lFOztvQkE1RGxFQSxRQThEMEJzSDswQkFLckJJO2FBRjJCLFVBRTNCQSx1Q0FBQUE7Y0FEeUM7ZUFBbkJNLE9BQ3RCTjtlQUR5QyxPQUFBLGtEQUFuQk07Y0FBbUIsT0FBQTs7YUFHdkM7O2dCQUFBOzs7O21DQUZGTjthQUVFLE9BQUE7WUFBMkQ7WUFKakU7YUFBQSxPQUFBO2FBREo7ZUFBQTtpQkFoRUcxSCxvQkFBQUEsdUJBOEQwQnNIO1lBR3pCLE9BQUE7V0FJaUU7O29CQXJFbEV0SCxRQXVFOEJ1SDswQkFNekJHO2FBSDJCLFVBRzNCQSx3Q0FBQUE7Y0FEVztlQURlTyxXQUUxQlA7ZUFEVztpQkFBQSxrREFEZU87Y0FDZixPQUFBOzthQUdUOztnQkFBQTs7OzttQ0FGRlA7YUFFRSxPQUFBO1lBQTJEO1lBTGpFO2FBQUEsT0FBQTthQURKO2VBQUE7aUJBekVHMUgsb0JBQUFBLHdCQXVFOEJ1SDtZQUc3QixPQUFBO1dBS2lFOztvQkEvRWxFdkg7MEJBc0ZLMEg7YUFIMkIsVUFHM0JBLHVDQUFBQTtjQURXO2VBREtRLG9CQUVoQlI7ZUFEVztpQkFBQTswREFES1E7Y0FDTCxPQUFBOzthQUdUOztnQkFBQTs7OzttQ0FGRlI7YUFFRSxPQUFBO1lBQTJEO1lBTGpFO2FBQUEsT0FBQTthQURKLE9BQUEsV0FsRkcxSCxvQkFBQUE7WUFtRkMsT0FBQTtXQUtpRTs7b0JBeEZsRUE7MEJBK0ZLMEg7YUFIMkIsVUFHM0JBLHVDQUFBQTtjQURXO2VBRFdTLGFBRXRCVDtlQURXO2lCQUFBLGtEQURXUztjQUNYLE9BQUE7O2FBR1Q7O2dCQUFBOzs7O21DQUZGVDthQUVFLE9BQUE7WUFBMkQ7WUFMakU7YUFBQSxPQUFBO2FBREosT0FBQSxXQTNGRzFILG9CQUFBQTtZQTRGQyxPQUFBO1dBS2lFOztvQkFqR2xFQTswQkF5R0swSDthQUgyQixVQUczQkEsd0NBQUFBO2NBRFc7ZUFEZ0JVLE9BRTNCVjtlQURXLE9BQUEsa0RBRGdCVTtjQUNoQixPQUFBOzthQUdUOztnQkFBQTs7OzttQ0FGRlY7YUFFRSxPQUFBO1lBQTJEO1lBTGpFO2FBQUEsT0FBQTthQURKLE9BQUEsV0FyR0cxSCxvQkFBQUE7WUFzR0MsT0FBQTtXQUtpRTs7b0JBM0dsRUE7MEJBaUhLMEg7YUFGMkIsVUFFM0JBLHdDQUFBQTtjQUR5QztlQUFuQlUsT0FDdEJWO2VBRHlDLE9BQUEsa0RBQW5CVTtjQUFtQixPQUFBOzthQUd2Qzs7Z0JBQUE7Ozs7bUNBRkZWO2FBRUUsT0FBQTtZQUEyRDtZQUpqRTthQUFBLE9BQUE7YUFESixPQUFBLFdBOUdHMUgsb0JBQUFBO1lBK0dDLE9BQUE7V0FJaUU7O29CQW5IbEVBOzBCQTJISzBIO2FBSDJCLFVBRzNCQSx1Q0FBQUE7Y0FEVztlQURnQlUsT0FFM0JWO2VBRFcsT0FBQSxrREFEZ0JVO2NBQ2hCLE9BQUE7O2FBR1Q7O2dCQUFBOzs7O21DQUZGVjthQUVFLE9BQUE7WUFBMkQ7WUFMakU7YUFBQSxPQUFBO2FBREosT0FBQSxXQXZIRzFILG9CQUFBQTtZQXdIQyxPQUFBO1dBS2lFOztvQkE3SGxFQTswQkFtSUswSDthQUYyQixpQkFFM0JBO2NBRCtCLFdBQUE7Y0FBQSxPQUFBOzthQUc3Qjs7Z0JBQUE7Ozs7bUNBRkZBO2FBRUUsT0FBQTtZQUEyRDtZQUpqRTthQUFBLE9BQUE7YUFESixPQUFBLFdBaElHMUgsb0JBQUFBO1lBaUlDLE9BQUE7V0FJaUU7O29CQXJJbEVBOzBCQTJJSzBIO2FBRjJCLFVBRTNCQSx3Q0FBQUE7Y0FEc0M7ZUFBckJwWCxTQUNqQm9YO2VBRHNDO2lCQUFBLGtEQUFyQnBYO2NBQXFCLE9BQUE7O2FBR3BDOztnQkFBQTs7OzttQ0FGRm9YO2FBRUUsT0FBQTtZQUEyRDtZQUpqRTthQUFBLE9BQUE7YUFESixPQUFBLFdBeElHMUgsb0JBQUFBO1lBeUlDLE9BQUE7V0FJaUU7O29CQTdJbEVBOzBCQW9KSzBIO2FBSDJCLFVBRzNCQSx3Q0FBQUE7Y0FEMkI7ZUFETHBYLFNBRXRCb1g7ZUFEMkIsT0FBQSwrQ0FETHBYO2VBQ1gsT0FBQTtjQUFBLE9BQUE7O2FBR1Q7O2dCQUFBOzs7O21DQUZGb1g7YUFFRSxPQUFBO1lBQTJEO1lBTGpFO2FBQUEsT0FBQTthQURKLE9BQUEsV0FoSkcxSCxvQkFBQUE7WUFpSkMsT0FBQTtXQUtpRTs7b0JBdEpsRUE7MEJBNkpLMEg7YUFGMkIsVUFFM0JBLHVDQUFBQTtjQUQwQztlQUFyQnBYLFNBQ3JCb1g7ZUFEMEM7aUJBQUEsa0RBQXJCcFg7Y0FBcUIsT0FBQTs7YUFHeEM7O2dCQUFBOzs7O21DQUZGb1g7YUFFRSxPQUFBO1lBQTJEO1lBSmpFO2FBQUEsT0FBQTthQURKLE9BQUEsV0ExSkcxSCxvQkFBQUE7WUEySkMsT0FBQTtXQUlpRTs7b0JBL0psRUEsUUFrS0FrSDswQkFLS1E7YUFGMkIsVUFFM0JBLHVDQUFBQTtjQUR3QztlQUFoQnpXLElBQ3hCeVc7ZUFEd0MsT0FBQSxrREFBaEJ6VztjQUFnQixPQUFBOzthQUd0Qzs7Z0JBQUE7Ozs7bUNBRkZ5VzthQUVFLE9BQUE7WUFBMkQ7WUFKakU7YUFBQSxPQUFBO2FBREo7ZUFBQTtpQkFwS0cxSDtpQkFBQUE7Z0NBa0tBa0g7WUFHQyxPQUFBO1dBSWlFOztvQkF6S2xFbEgsUUE0S0F3SDt5QkFNS0U7YUFIMkIsVUFHM0JBLHdDQUFBQTtjQURXO2VBRE1XLGdCQUVqQlg7ZUFEVztpQkFBQTswREFETVc7Y0FDTixPQUFBOzthQUdUOztnQkFBQTs7OzttQ0FGRlg7YUFFRSxPQUFBO1lBQTJEO1lBTGpFO2FBQUEsTUFBQTthQURKO2VBQUE7aUJBOUtHMUg7aUJBQUFBO2lDQTRLQXdIO1lBR0MsT0FBQTtXQUtpRTs7T0FyTGhEO1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkF1TWxCYyxRQU1tQkM7WUFDdEI7YUFBSXhaO2VBQ0Y7OztpQkFGb0J3WjthQUtoQjtlQUFBOztpQkFKRnhaO2lCQVBEdVo7OztpQkFZV0Usb0JBQVB6WTthQVpKdVksc0JBWVdFLFdBWlhGO2FBY0QsT0FBQSxvQkFGS3ZZLE9BTEhoQjs7Z0JBUUkwWjtZQWZMSCxzQkFlS0csYUFmTEg7O1dBZXVEOztvQkFmdkRBLFFBaUJtQnBJO1lBRXRCLEdBQUcsV0FuQkFvSSxvQkFBQUE7YUFvQm9CO2NBQUEsUUFBQTtjQUFUbkk7Y0FBUjdQO2FBcEJIZ1k7a0JBQUFBLG9CQUFBQTthQXVCQztjQURFdlosY0F0Qkh1WixvQkFpQm1CcEk7Y0FRaEJ3STtnQkFDRjs7OztrQkFKRTNaO2FBTUssV0E1QlJ1WixvQkFBQUEsUUF5QkdJO3dCQXpCSEo7YUFBQUE7O2VBaUNpQjs7aUJBakNqQkE7aUJBb0JXbkk7aUJBcEJYbUk7O2FBb0NELE9BaEJJaFk7O1lBa0JPOztlQUFBOztZQUFBLE9BQUE7V0FBOEM7O29CQXRDeERnWTtZQXdDNkI7O29CQUFJOzJEQXhDakNBO1dBd0NvRTs7Ozs7T0F6Q3ZEOzs7Ozs7Ozs7O3VCQXpSbEI1Qjs7OztFOzs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7O1lDS0FpQyxpQkFBa0JWO0lBQ0csVUFBQTtJQUF2QixPQUFBLHlDQURvQkE7R0FDZ0Q7WUFFbEVXLG1CQUFvQlg7SUFDQyxVQUFBO0lBQXZCLE9BQUEseUNBRHNCQTtHQUMwQztZQUU5RFksc0JBQXVCQyxVQUN0QkM7SUFDSDt5Q0FER0E7S0FZRyxNQUFBLGdEQVpIQTtLQVVHLE1BQUEsZ0RBVkhBO0tBUUcsTUFBQSwyQkFSSEE7YUFBQUE7OztTQU1VZix1QkFBUSwyQkFBUkE7OztJQUpYLElBREVnQjtJQWlCSixXQW5CeUJGLFVBRXJCRTtHQW9CSDtZQUdDQyxZQUFhQyxTQUEwQyxPQUExQ0EsbUJBQThEOzs7O09BL0IzRVA7T0FHQUM7T0FHQUM7T0F5QkFJOzs7O0U7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDakNKOzs7Ozs7Ozs7Ozs7Ozs7SUFBQTs7Ozs7Ozs7OztZQUVJRSxPQUFPQyxJQUFHQztJQUFJLE9BQUEsOENBQVBELElBQUdDO0dBQTZDO1lBRXZEQyxPQUFPRixJQUFHQyxHQUZWRixPQUVPQyxJQUFHQyxXQUZWRixPQUVPQyxJQUFHQyxhQUVPO1lBRWpCRSxPQUFPSCxJQUFHQyxHQUpWQyxPQUlPRixJQUFHQyxJQUVZLE9BTnRCQyxPQUlPRixJQUFHQyxjQUU2QztZQUV2REcsV0FBV0osSUFBR0MsR0FSZEMsT0FRV0YsSUFBR0MsV0FSZEMsT0FRV0YsSUFBR0MsY0FFSTtZQUVsQkksWUFBWUwsSUFBR25ZO0lBQUksT0FBQSw4Q0FBUG1ZLElBQUduWTtHQUE2QjtZQTZCNUN5WSxvQkFBb0J0WjtJQUNiLElBQUx1WixLQUFLLHNCQURhdlo7SUFFdEI7Y0FESXVaLG9CQUFBQSxvQkFBQUE7YUFBQUEsVUFBQUEsOEJBQUFBO0dBSWdDO1lBSWxDQyxTQUFXcGIsS0FBY3VTO0lBQzNCLEdBRGF2UyxTQUFVRyxNQUFWSCxRQUFBcWIsVUFBVWxiLGNBQVZrYjtnQkFDYixzQkFEYUE7S0FFWCxNQUFBO3dCQUZ5QjlJO0lBRzNCO1lBSDJCQTtZQUtaOztZQUxGOEk7R0FRWjtZQW9EQ0MsVUFBVUM7SUFDWjtLQUFJWCxLQURRVztLQUVSQyxXQUFXLDhDQURYWjtLQUVpQyxNQUFBLDJCQUh6Qlc7SUFHRixhQW5EaUI1YTtLQTFEekJvYSxPQTJHRUg7U0E5Q0FhO0tBakVGWCxPQStHRUYsSUE5Q0FhO0tBakVGWCxPQStHRUYsSUE5Q0FhO0tBakVGWCxPQStHRUY7S0EvR0ZFLE9BK0dFRjtLQWhDYSxJQUFBLFFBdENmTSxvQkFxQnlCdmEsT0FpQmpCK2EsaUJBQU5DO0tBL0VGYixPQStHRUYsSUFoQ0FlO0tBL0VGYixPQStHRUYsSUFoQ01jO0tBM0VSWCxPQTJHRUgsSUFqRHVCamE7S0F0RHpCcWEsV0F1R0VKLElBakR1QmphO0tBdER6QnFhLFdBdUdFSixJQWpEdUJqYTtLQTlEekJtYSxPQStHRUYsMEJBakR1QmphO0tBOUR6Qm1hLE9BK0dFRiwwQkFqRHVCamE7S0E5RHpCbWEsT0ErR0VGLDBCQWpEdUJqYTtLQTlEekJtYSxPQStHRUY7S0EvR0ZFLE9BK0dFRjtLQXZHRkksV0F1R0VKO0tBM0dGRyxPQTJHRUgsSUFqRHVCamE7S0FsRHpCc2EsWUFtR0VMLElBakR1QmphO0tBbER6QnNhLFlBbUdFTCxJQWpEdUJqYTtZQWxEekJzYSxZQW1HRUwsSUFqRHVCamE7O0lBbUQzQjtJQUNjO0tBQVZpYjtPQUFVLDhDQUhWaEIsTUFDQVk7S0FHQUssY0FBYywyQkFMTk47Z0JBS1JNO0tBRUYsTUFBQTt3QkFQVU47SUExR1ZSLE9BMkdFSDtJQS9HRkUsT0ErR0VGO0lBL0dGRSxPQStHRUY7SUEvR0ZFLE9BK0dFRixJQUlBaUI7SUFuSEZmLE9BK0dFRixJQUlBaUI7SUEzR0ZiLFdBdUdFSixJQUdBZ0I7SUExR0ZaLFdBdUdFSixJQUNBWTtJQWhIRlYsT0ErR0VGLDBCQURRVztJQWxHVk4sWUFtR0VMLElBRFFXO0lBd0JaLE9BQUEsOENBdkJJWDtHQXlCaUI7WUFJbkJrQixpQkFBaUJQLE9BQU1RLE9BQU1WLFNBQVFXLE9BQU1DLE9BQU0xSjtJQUNuRCxTQUR1Q3lKO0tBRXJDLE1BQUE7d0JBRmlCVCxVQUFnQ2hKO3NDQUFBQTtLQUlqRCxNQUFBO3dCQUppQmdKLFVBQWdDaEo7c0NBQTFCd0o7S0FNdkIsTUFBQTt3QkFOaUJSLFVBQWdDaEo7c0NBQXBCOEk7S0FRN0IsTUFBQTt3QkFSaUJFLFVBQWdDaEo7SUFVekM7S0FETnFJLEtBVGVXO0tBVWZ2VyxNQUFNLDhDQURONFY7SUFqSkZHLE9BaUpFSDtRQUlBYSxnQkFibUNPO0lBNUlyQ2xCLE9BcUpFRixJQUlBYTtJQXpKRlgsT0FxSkVGO29CQVRtQ29CO0lBNUlyQ2xCLE9BcUpFRjtJQW9CYSxJQUFBLFFBaElmTSxvQkFtRzJDZSxRQTZCbkNQLGlCQUFOQztJQXpLRmIsT0FxSkVGLElBb0JBZTtJQXpLRmIsT0FxSkVGLElBb0JNYztJQXJLUlgsT0FpSkVIO0lBN0lGSSxXQTZJRUo7SUE3SUZJLFdBNklFSjtJQXJKRkUsT0FxSkVGLDBCQVQrQ3JJO0lBNUlqRHVJLE9BcUpFRiwwQkFUcUJtQjtJQWhJdkJkLFlBeUlFTCxJQVQrQ3JJO0lBaElqRDBJLFlBeUlFTCxJQVRxQm1CO0lBZ0R6QixXQWhEbUR4SixVQUExQndKLE9BQU1WLFlBQWNZLDhCQVV6Q2pYO0dBaURIO1lBSUNrWCxvQkFBb0JYLE9BQU1ZLEtBQUlDLFlBQVdDLGNBQWFDO0lBQ3hELElBQUkxQixLQURrQlc7SUF2TXBCUixPQXdNRUg7SUF4TUZHLE9Bd01FSCxJQUR3QnVCO0lBbk0xQm5CLFdBb01FSixJQUQ0QndCO0lBbk05QnBCLFdBb01FSixJQUR1Q3lCO0lBVTNDO1lBVndEQztZQUFBQTtZQUFBQTtZQUFBQTtZQUFBQTtZQUE1Qkg7WUFBZUU7WUFBWEQ7WUFBd0JFO0dBZXZEO1lBTUNDLFVBQVUvYSxNQUFLK1osT0FBUXZiLG9CQUNDd2M7SUFDMUIsR0FGeUJ4YyxTQUFRRyxNQUFSSCxRQUFBK2IsUUFBUTViLGNBQVI0YjtJQUV6QixZQUZpRFUsZ0JBQVZwQixVQUFVb0IsZ0JBQVZwQjtJQUV2QyxZQUYrRHFCLGdCQUFSVixRQUFRVSxnQkFBUlY7SUFFdkQ7U0FEWVcsZ0JBQVJWLFFBQVFVOztTQUFSVixRQUFRO0lBQ0o7S0FBSnRiLElBdEZGbWIsaUJBb0ZlUCxPQUFRUSxPQUFjVixTQUFnQlcsT0FDbkRDLE9BQXNCTztLQUxDbmEsNEJBSWZiO0tBSkNvYjtLQU9UVDtPQVA2QiwrQ0FBcEJTLFFBSURwYixTQUplYTtJQVEzQixTQUp1RDJaO0tBUzlDLE1BQUE7d0JBVFFULFVBQ1NpQjtJQU10Qjs7TUFQYWpCO01BQUwvWjs7NEJBQUFBO0lBV0g7S0FQTDRhLG1DQUpRNWE7S0FXUnFiO09BaENGWDtTQXFCZVgsT0FHYlksS0FDQUMsa0NBSlE1YSxPQUVSYjtJQUZhNGEsZUFXYnNCLEtBWGF0Qjs7R0FZeUI7WUE4Q3hDdUIsb0JBQW9CdkIsT0FBUXZiLG9CQUNKd2M7SUFDMUIsR0FGOEJ4YyxTQUFRRyxNQUFSSCxRQUFBK2IsUUFBUTViLGNBQVI0YjtJQUU5QixZQUZzRFUsZ0JBQVZwQixVQUFVb0IsZ0JBQVZwQjtJQUU1QyxZQUZvRXFCLGdCQUFSVixRQUFRVSxnQkFBUlY7SUFFNUQ7U0FEWVcsZ0JBQVJWLFFBQVFVOztTQUFSVixRQUFRO0lBQ0o7S0FBSnRiLElBaEpGbWIsaUJBOElvQlAsT0FBUVEsT0FBY1YsU0FBZ0JXLE9BQ3hEQyxPQUFzQk87S0FHdEJKO0tBQ0FDO0tBQ0FVO0tBSkk7YUFLSkM7S0FDRixVQUZFRDs7TUFHQSxNQUFBO3lCQVRrQnhCLFVBQ0lpQjs7SUFRMkM7SUFPckUsU0FoQjREUjtLQWtCMUQ7c0JBQU9pQixLQUFJalksS0FBSTNDO2NBWGIyYTtjQWFFO21EQXBCZ0J6QixVQWtCYjBCLEtBQUlqWSxLQUFJM0M7Y0FkYitaLGdCQUFBQSxnQkFjYS9aO2NBYmJnYSxrQkFBQUEsa0JBYWFoYTs7YUFJd0I7O2NBZnJDMmE7Y0FEQUQ7Y0FPTztlQUFMRjtpQkE1RkpYO21CQStFb0JYLFlBSWxCYSxlQUNBQyxpQkFIQTFiO2NBRmtCNGEsZUFhaEJzQixLQWJnQnRCOzthQXlCUDtJQUNSLE1BQUE7dUJBMUJlQSxVQUNJaUI7R0F5QnlDOzs7VUFsUWpFcEIsVUE4S0FtQixXQTBEQU8scUJBNUtBeEI7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7OztHOzs7Ozs7Ozs7Ozs7SUNwSEE0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQWVJMUwsUUFDUTJMLFlBQ1YsZUFDZTs7aUJBSGIzTCxlQUtjLGVBQWU7O2lCQUw3QkEsZUFNeUIsVUFBRzs7O0s7OztZQWtGaEM0TCxZQUFZOUUsU0FTWjZFO0ksR0FBQUE7aUJBQUFBLFFBUnNDbGQsa0JBQVRNO0tBQ3JCLE9BQUE7Y0FGSStYO2NBRUosZ0RBRDhCclksUUFBVE07O09BUTdCNGM7bUJBQUFBLFFBTndDRSxzQkFBVDdFO0tBQ3ZCLE9BQUE7Y0FKSUY7Y0FJSjtxREFEZ0MrRSxVQUFUN0U7O09BTS9CMkU7bUJBQUFBLFFBSndDRyxzQkFBVEM7S0FDdkIsT0FBQTtjQU5JakY7Y0FNSjtxREFEZ0NnRixVQUFUQzs7T0FJL0JKO0tBRDhCO01BRGJLLFFBRWpCTDtNQUQ4QixPQUFBLDBDQURiSztLQUNULE9BQUE7Y0FSSWxGLFNBUUo7O0lBRVIsSUFDTSxJQUFBLE9BQUEsK0JBRk42RSxNQUNJTTtvQkFBQUE7SUFHSSxPQUFBO2FBYkluRjthQWFKLCtDQUhKbUY7O1lBS0pDLE1BQU9oTCxnQkFBZ0JWLEtBQTBCMkwsZUFDakRDO0lBQ0Y7S0FBSUM7T0FBUTtnQ0FEVkQ7U0FBQUE7S0FqRW9CRSxhQW1FTDtLQW5FTEMsV0FvRUcsK0JBcEVPRDtLQUF5QkUsZ0JBcUUzQjtLQXJFMENDLGNBc0U1QywrQkF0RTZCRDtLQXVFM0NFLE9BQWdCLHlDQVBLbE07SUFRekIsU0FBSW1NLFFBQVNuWixLQUFJb1o7S0FBTSxPQUFBLHVDQUFWcFosTUF4RUQrWSxVQXdFS0s7SUFBMEM7SUFDM0QsY0FvRW9CemQ7S0FBZ0IsV0FBQSxzREFBaEJBO0tBQWdCLE9BQUE7SUFBeUI7SUFBM0Qsb0IsT0E1RkF5Yzs7bUJBK0JXaUI7O09BSU8sSUFsRkZDLFlBa0ZFO09BQ2hCO1FBV0U7U0FSSUM7O1lBQVU7O21CQUNEOWI7ZUFBSyxPQUFBLCtCQXpGWnNiLGVBeUZPdGI7O21CQUNVMmIsZ0JBQUxwWjtlQUFhLE9BQUEsbUNBQWJBLEtBMUZaK1ksVUEwRmlCSzs7ZUFJbkIsTUFBQTs7V0FBWTs7O1lBUVo7YUFBc0JJO2FBQVpDO2FBQUxDO2FBTUssT0FBQSxpQ0FOTEE7YUFyR2dEQztlQXVHdkQ7O2FBTUYsUUF2Q0ZUOztpQkE4Q1dVLG9CQVBMQyxZQU9LRDs7YUFKSTthQUNDLElBQU5wUCxNQUFNO2FBQ0QsK0JBbkhQdU8sZUFrSEV2TztpQkFKSnFQLFlBSUlyUDs7WUFLVzthQUFmc1AsZUFBZSxxQ0FUZkQ7WUFXRjs7OztlQWxESlg7ZUFBQUE7ZUFBQUE7ZUFBQUE7ZUFBQUE7ZUFBQUE7ZUFBQUE7bUJBdUNNVztlQXZDTlg7ZUFBQUE7Y0ErQldRO2NBdEcrQ1Q7Y0FzRzlCTztZQWlDcEI7YUFySVRPO2VBcUlTLGlEQXRJbURKLFNBcUdoREQ7YUFyR3lETTtlQW1JNUQ7O2lCQTVDRlQ7aUJBY1VFO2lCQWlCVks7aUJBakJLSjtpQkFyR2dEQzthQUExQ00sc0JBc0VqQmY7YUF0RURnQixtQkFzRUNoQjthQXZFOEJpQixjQWdGckJkO2FBN0RILE9BQUE7Ozs7YUEwR0FlOzs7OztnQkE1SFBGO2dCQUFrQkQ7Z0JBK0Radk07Z0JBL0RzRGlNO2dCQUR6Q2I7Z0JBQVZDO2dCQWFILG1DQXlGTVc7Ozs7Ozs7Z0JBdEdnQ1Y7Z0JBQWVDO2dCQWdFckNqTTtnQkFoRVNtTjtnQkFzR25CVDtnQkFyR3lETTtnQkFDckVEO2dCQW9HNkJQO2dCQXBHZEY7YUF3SUQ7ZUFBQSxrREFiUGM7WUFhTyxPQUFBO1dBQTJCO2dCQTFEL0JmO2dCQUFBQTtnQkFBQUE7Z0JBQUFBOzs7Ozs7OztvQkFpQk8zYztZQUFjLFdBQUEsV0EvQjlCbWM7WUErQnFCLE9BQUEseUJBQUxuYztXQUEwQjtTQUR4QztXQUFBOzthQVJJNmM7OzthQXhCRDdMOzs7Ozs7Ozs7O1NBZ0NILE9BQUE7UUFBQTs7YUEyQ0dtSztZQUFBbGMsd0JBQUFrYztlQTFGUE87MEJBMkZzQnBjO2tCQUFnQjs7cUJBQUEsc0RBQWhCQTtrQkFBZ0IsT0FBQTtpQkFBeUI7aUJBRHhETDs7TUFDNEQ7TUEzRGpFLFdBQUEsV0FmQWtkO01BZWEsT0FBQTtLQTJEb0Q7bUJBaEUxREY7TUFDSCxPQUFBO2lEQUxKUSxlQUlPUjtLQUVvQztLQUgzQyxXQUFBLDBCQVgrQ0EsZUFBMUIzTDtLQWdCakIsT0FBQTtJQTRENkQ7SUFDbkUsT0FBQTtHQUE2RDtnQkFFcERvTjtJOztXQUNZOUYscUJBQVgrRjtPQURERCx5QkFDQ0MsV0FBVy9GLFdBRFo4Rjs7O09BR2lCLE1BQUE7O1dBQ2hCRTtPQUpERjtRQUtVLG1DQURURSxpQkFKREY7OztPQVdULElBRFdHLHNCQUNYLFFBRFdBOzs7cUNBVkZILG9CQVVFRztPQUtHO1FBRFBDO1FBQ0RDO1VBQVE7cURBRFBELElBZEVKO09BQUFBO1FBaUJMOztVQUhHSTtjQUpJRCxjQUtMRTtVQWZHTDs7OztRQStCTU07cUJBQ1osNkJBaENNTjs7a0JBaUNFO3NDQWpDRkE7aUJBa0NQLG9DQWxDT0EsZ0JBK0JNTTs7O09BVmY7UUFEeUJqRztRQUFWbEg7UUFDWG9OO21CQUFjM2U7V0FBSSxPQUF0QjswREFBa0JBLEdBckJUb2U7VUFxQnNEO1FBRzlDLE9BQUEsdUJBSlEzRjtRQUVyQm1HO1VBQ0Y7NkNBRkVELGVBRFdwTjtPQXBCTjZNO1FBNEJQOztVQU5FUTtVQUZxQm5HO1VBcEJoQjJGOzs7V0E2QkEzYztPQUFLLE9BQUEsK0JBN0JMMmMsb0JBNkJBM2M7O09BdEJEO1FBRGtCb2Q7UUFBTmxFO1FBQU5tRTtRQUNWbmM7VUFBSTtxREFETW1jLE1BTkxWO09BQUFBO1FBU1A7O1VBSFlVO2tCQUFNbkUsTUFBTWtFLE1BQ3RCbGM7VUFQS3liOzs7V0E4QlVoQixnQkFBTHBaO09BQWEsT0FBQSxtQ0FBYkEsS0E5QkxvYSxlQThCVWhCOzs7WUF3Qm5CMkIsb0JBQXNCbmU7SUFDeEIsV0FEd0JBLGNBQUFBLGNBQUFBLGFBQUFBO0lBQ3FCLG9CLFdBRHJCQTtJQUNxQixPQUFBOztHQUM1QjtZQUVmb2UsZUFBaUJwQyxnQkFBbUNoYyxHQUFPcWU7a0JBNEN6Q3RmLEdBNUNrQ2lCLFVBQUFBLFlBNENsQ2pCLE9BR2IsZUFBZTtJQUhwQixvQixPQXBNQXljOztLQTRKYyxJQUFSOEMsWUFKcUREO0tBQVByZTtjQU0xQ3VlOztPQXlCTixHQTNCRUQsVUFKOEN0ZSxVQWlDOUM7WUFqQzhDQSxNQXVDOUM7NEJBdkM4Q0EsUUFvQ3RCLGtCQUN4QixPQS9CSXVlLFFBK0JHO09BRlA7O1VBQUE7bUNBbkNXdkM7WUFBQUE7O09BbUNpQixPQUFBO01BSWI7OzthQW5DZnNDO1NBUVU7O1lBQUE7cUNBWkN0QztjQUFBQTs7U0FXSCxHQUFBLG1CQVhzQ2hjO1VBZWE7a0JBZmJBO2tCQUFBQTtrQkFBQUE7a0JBQUFBO2tCQUFBQTtrQkFBQUE7V0FlYSxzQixXQWZiQTtXQWV2QzthQUFBOzs7Ozs7Ozs7O1dBRGdCbWQ7V0FBUkM7V0FBTm9CO1dBQUFDO2FBQUFEOztjQVFDO29EQXRCb0N4ZSxNQWMvQm9kLE9BZCtCcGQ7VUFJOUNzZSxXQVVTRztVQWRxQ3plLFFBYy9Cb2Q7VUFkK0JwZCxRQWN2Qm1kOzs7Ozs7OztZQWVuQmxDO1dBQUFsYyx3QkFBQWtjLGFBQUssbUJBQUxsYzs7TUFDRixPQUFBO0tBU2E7MEJBR25CLEdBMUNrRGlCLE1BSnBEbWUsb0JBSW9EbmUsSUEyQ2xELGVBQWU7S0FGZixXQW5DUXVlO0tBbUNJLE9BQUE7SUFFRztJQUNqQixPQUFBO0dBR3NCO1lBRXRCRyxNQUFRMUMsZ0JBQ04vSyxXQUFnRGpSO0lBR2xELElBREUyZSxTQUNGLGdDQUhFMU47SUFLSixjQWdFb0JsUztLQXJFZ0NpQixZQXFFaENqQjtLQUVGLFdBQUEsc0RBRkVBO0tBRUYsT0FBQTtJQUF5QjtJQUZ6QyxvQixPQS9RQXljOztLQTJORSxZQWpCQXZLOzs7T0FvQlMyTjtPQUhMMUIsZUFHYSxxQ0FBUjBCOztVQUhMMUIsZUFFUTtLQUdnQyxTQWxQaENQLGMsV0E0Tm9DM2M7S0EzTjNDLHFDQTJOMkNBO0tBQUFBO0tBQUFBO0tBQUFBO0tBQUFBLFFBck4xQyxtQ0FxTjBDQTtLQUFBQTtLQUFBQTtLQUFBQTtLQUFBQTtLQUFBQTtNQS9NbEQ7O1FBYmMyYzs7UUE2T1JPO1FBakI0Q2xkO1FBQUFBO0tBQUFBLFFBNU1sRCxpREE0TWtEQSxNQUFBQTtLQXVCaEQ7TUFDYztPQUFSZ1I7U0FBUTtnRUF0QmQyTjs7O1VBMkJNLElBQW1CM08sY0FBUm9OLGtCQUFOTjtVQTdCcUM5YyxRQTZCckM4YztVQTdCcUM5YyxRQTZCL0JvZDtVQTdCK0JwZCxPQTZCdkJnUTtVQUtyQixzQ0FsQzRDaFEsVUFBaERpUjs7V0F1Q1E7WUFNa0Q7OztnQkFJNUMsSUFBa0JrTSxrQkFBUEMsa0JBQU5vQjtnQkFqRDZCeGUsUUFpRHZCb2Q7Z0JBakR1QnBkLFFBaURoQm1kO2dCQU1wQjtpQkFERTBCO21CQUNGO3dEQXZEb0M3ZSxPQWlEdkJvZCxPQWpEdUJwZDtnQkFBQUEsUUF5RG5CLG1DQUhmNmUsV0F0RGtDN2U7Z0JBMER0QyxPQTVHWm9lLGVBaURRcEMsZ0JBQzBDaGMsR0FpRDdCd2U7ZUFTNkI7b0JBMURBeGU7O29CQUFoRGlSO29CQUFnRGpSO29CQUFBQTthQTZDVSxzQixXQTdDVkE7YUE2Q1U7Ozt3QkFGbkNaLEdBQUVVO3FDQUNpQyxPQUE1Qyx1QkFEU1YsR0FBRVUsR0FDd0M7Z0JBekcxRDtpQkFBUGlhLE9BQU87aUJBQ2M7bUJBQUE7NENBMkRmaUM7cUJBQUFBOzs7MEJBNUROakMsT0E2RGdEL1o7dUJBQUFBOzt3QkE3RGhEK1o7c0JBR0Y7K0NBeURRaUM7d0JBQUFBOzs7Z0JBNkMwQyxPQUFBO2VBQWlCO2FBRnZEO2VBQUE7Ozs7Ozs7Ozs7aUJBekJOa0I7O2FBeUJNLE9BQUE7WUFBQTs7aUJBaUJHakM7Z0JBQUFsYyx3QkFBQWtjO1lBQ0gsT0F0UVpPOzhCQXVRbUJ6YyxHQTdEK0JpQixZQTZEL0JqQixPQUVILGVBQWUsR0FKaEJBOztVQUtBO1VBMUJUO1VBNEJTLFdBQUE7VUFBQSxPQUFBO1NBQW1CO2NBbEVnQmlCO2NBQUFBO2NBQUFBOztjQUFBQTtPQTBCYSxzQixXQTFCYkE7T0EwQjVDLE9BQUE7T0FERixPQUFBLDRDQURJZ1I7T0FDSixPQUFBO01BQUE7Ozs7OztNQTJDVzs7T0FENkIzUztPQUFUTTtPQUNwQjtTQUFBLGdEQUQ2Qk4sV0FBVE07TUFDcEIsT0FBQTs7SUFBNEM7SUFDM0QsT0FBQTtHQUUyQztZQUUzQ3FTLE1BQVFnTCxnQkFBbUNoYztJQUU3QyxHQUY2Q0EsTUFBQUE7SUFVbEMsV0FBQTtJQUFBLE9BQUE7R0FBbUI7WUFFNUJ3ZSxLQUFPeEMsZ0JBQW1DaGM7SUFJNUMsY0FTb0JqQjtLQUFnQixXQUFBLHNEQUFoQkE7S0FBZ0IsT0FBQTtJQUF5QjtJQUEzRCxvQixPQTVTQXljOztLQStSMEN4YjtRQUFBQSxNQWExQyxPQXpCQWdSLE1BWU9nTCxnQkFBbUNoYztLQTNJMUNtZSxvQkEySTBDbmU7S0FXM0IsV0FBQTtLQUFBLE9BQUE7SUFDWjtJQUNILE9BQUE7R0FBNkQ7WUFFN0Q4ZSxhQUFlOUMsZ0JBQW1DaGMsR0FDaEQ4ZTtJQUdTLElBQVRILFNBQVMsZ0NBSFRHO0lBSUosY0FvQ29CL2Y7S0FBZ0IsV0FBQSxzREFBaEJBO0tBQWdCLE9BQUE7SUFBeUI7SUFBM0Qsb0IsT0F2VkF5Yzs7S0FxVEUsR0FQZ0R4YjtNQVFuQzs7U0FBQTtrREE3WmZzYjtNQTZaZSxPQUFBOztLQUNSO01BRU87T0FBSnZjO1NBQUk7Z0VBUFo0ZjtPQVFRekMsYUFBYTtPQXZMSDZDLFlBd0xDLCtCQURYN0M7OztVQU9BOzs7V0FBNkJpQjtXQUFUQztXQUFWTjtXQUFML2Q7VUFuQm1DaUIsUUFtQjlCOGM7VUFuQjhCOWMsUUFtQnBCb2Q7VUFuQm9CcGQsUUFtQlhtZDtVQVExQjtXQUFBLE9BQUEsZ0RBM0JxQ25kO1dBMEJ4QzthQUFBOzs7OztXQURBLE9BQUEsc0NBekJ3Q0E7VUF3QjFDLCtCQXhCMENBLHVCQW1CbkNqQjtVQWVGO1dBQUEsT0FBQSxnREFsQ3FDaUI7V0FpQ3hDO2FBQUE7Ozs7O1dBREEsT0FBQSxzQ0FoQ3dDQTtVQStCMUMsK0JBL0IwQ0Esd0JBbUJuQ2pCO1VBa0JrQjtXQUFBLE9BQUEsNkJBekJ2Qm1kO1dBeUJPLE9BQUE7VUFBQSxPQUFBO1NBQTZDO2NBckNabGM7Y0FBQUE7Y0FBQUE7Y0FBQUE7Y0FBQUE7O2NBQUFBO09BZ0I5QjtrQkF0THBCZ2Y7VSxPQUFBQTs7aUJBRldyQixZQUVYcUI7c0JBRldyQjs7MkNBSFNvQixnQkFHVHBCOzs7aUJBRkY5YyxJQUlUbWU7YUFKYyxPQUFBLCtCQURNRCxnQkFDWGxlOztpQkFDVTJiLE1BR25Cd0MsTUFIYzViLE1BR2Q0YjthQUgyQixPQUFBLG1DQUFiNWIsS0FGTTJiLFdBRUR2Qzs7VUFLbkIsV0FvS2tEeGMsR0F0S2xEZ2Y7O09BcUxRLE9BQUE7T0FERixPQUFBLHdEQUhJamdCO09BR0osT0FBQTtNQUFBOzs7Ozs7TUF5Qlc7O09BRDZCVjtPQUFUTTtPQUNwQjtTQUFBLGdEQUQ2Qk4sV0FBVE07TUFDcEIsT0FBQTs7SUFDZDtJQUNILE9BQUE7R0FBNkQ7WUFFN0RzZ0IsV0FBV2pELGdCQUFtQ2hjLEdBQzVDdVg7SUFFUyxJQUFUb0gsU0FBUyxnQ0FGVHBIO0lBR0osYUFnQ29CeFk7S0FBZ0IsV0FBQSxzREFBaEJBO0tBQWdCLE9BQUE7SUFBeUI7SUFBM0QsbUIsT0E3WEF5Yzs7S0ErVkUsR0FONEN4YjtNQU8vQixVQUFBO01BQUEsT0FBQTs7S0FDUjtNQUVXO09BQVJnUjtTQUFRO2dFQVBoQjJOOzs7VUFZUSxJQUFtQjNPLGNBQVJvTixrQkFBTk47VUFmK0I5YyxRQWUvQjhjO1VBZitCOWMsUUFlekJvZDtVQWZ5QnBkLE9BZWpCZ1E7K0JBZUEsT0EvTjdCb08sZUFpTVdwQyxnQkFBbUNoYyxNQThCc0I7VUFBNUQ7VUFFUyxXQUFBO1VBQUEsT0FBQTtTQUFtQjtjQWhDVUE7Y0FBQUE7Y0FBQUE7O2NBQUFBO09BWW1CLHNCLFdBWm5CQTtPQVl0QyxPQUFBO09BREYsT0FBQSw0Q0FESWdSO09BQ0osT0FBQTtNQUFBOzs7Ozs7TUF1Qlc7O09BRDZCM1M7T0FBVE07T0FDcEI7U0FBQSxnREFENkJOLFdBQVRNO01BQ3BCLE9BQUE7O0lBQ2Q7SUFDSCxPQUFBO0dBQTZEO1lBRTdEK1osU0FBV3NELGdCQUFtQ2hjO0lBR2hELEdBSGdEQTtLQTZCOUIsVUFBQSxrREE3QjhCQTtLQTZCOUIsT0FBQTs7SUF0QmhCLGFBcUJvQmpCO0tBQWdCLFVBQUEsc0RBQWhCQTtLQUFnQixPQUFBO0lBQXlCO0lBQTNELGtCLE9BM1pGeWM7O0tBd1lJO1lBVDBDeGI7TUF5QmpDLE1BQUEsc0NBekJpQ0E7TUF1Qi9CLE1BQUEsc0NBdkIrQkE7a0JBc0IxQlosR0FBSyxPQUFMQSxhQUE2QjtLQURwQztNQUFBLE1BQUE7TUFGQSxNQUFBLHNDQW5CaUNZO01BaUIvQixNQUFBLHNDQWpCK0JBO2tCQWdCMUJaLEdBQUssT0FBTEEsYUFBNkI7S0FEcEM7TUFBQSxNQUFBO01BSko7O1NBRUksc0NBYmlDWTs7Ozs7O01BVXhDLE1BQUE7S0FBQSxPQUFBO0lBaUJLO0lBQ1QsT0FBQTtHQUNrRDtZQUVwRDJjLFFBQVVYLGdCQUFtQ2hjO0lBRy9DLEdBSCtDQTtLQXNCN0IsVUFBQSxrREF0QjZCQTtLQXNCN0IsT0FBQTs7SUFmaEIsYUFjb0JqQjtLQUFnQixVQUFBLHNEQUFoQkE7S0FBZ0IsT0FBQTtJQUF5QjtJQUEzRCxrQixPQW5iRnljOztLQXVhSTtNQVVTLE1BQUEsNkJBbkJnQ3hiO01BaUJoQyxNQUFBLDZCQWpCZ0NBO01BVXZDO1FBQUE7OztrQkFWdUNBLFFBQUFBLE9BQUFBLE9BQUFBO0tBVXZDLE9BQUE7SUFVSztJQUNULE9BQUE7R0FDa0Q7WUFFcEQrWCxXQUFXL1gsR0FBSSw2Q0FBSkEsTUFBb0M7WUFFL0NrZixjQUFlbGY7SUFDakI7aUJBQ09VLElBQUdWO0tBQ0csOEJBRE5VOztrQkFJTUE7TUFDTSw4QkFETkE7TUFFTSw4QkFGTkE7TUFHTSw4Q0FITkE7TUFJTSw4QkFKTkE7TUFLTSw4Q0FMTkE7TUFPRCw4QkFQQ0E7TUFTTSw4Q0FUTkE7TUFVTSw4QkFWTkE7TUFXSCxPQUFBLDhCQVhHQTtLQVdtQjtLQVoxQiw4REFIQ0E7S0FrQk0sOENBbEJOQTtLQXFCQyxVQUFBLGtDQXJCRVY7S0FvQko7c0VBcEJDVTtLQXVCTSw4Q0F2Qk5BO0tBMEJRO01BQUEsTUFBQSw2QkExQkxWO01BMEJGLE1BQUE7S0FERjs7OztPQXpCQ1U7O0tBNEJILE9BQUEsOEJBNUJHQTtJQTRCc0I7SUE3QjdCLE9BQUEsd0RBRGlCVjtHQStCZDtZQUVEbWYsWUFBWW5mO0lBQTJCLFVBQUEsa0NBQTNCQTtJQUEyQixPQUFBO0dBQTBCOzs7OztPQTFjakU4YjtPQTBMQTRDO09BMEVBMU47T0FZQXdOO09BZUFNO09BMkNBRztPQXNDQXZHO09BK0JBaUU7T0F3QkE1RTtPQUVBbUg7T0FpQ0FDOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ2pVUUM7OztJQTZCV3pPOzs7Ozs7Ozs7SUFsSlgwTzs7Ozs7SUEvSEpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUpKQyxnQkFBZ0IvQixZQUFXOUc7SUFDN0IsR0FEa0I4RztTQUVQZ0MsZUFGT2hDO0tBRVEsT0FBQSxXQUZHOUcsU0FFbEI4STs7SUFHRSxXQUFBLG9EQURQRjtJQUNPLE9BQUE7R0FBdUQ7WUFFbEVHLGtCQUFtQmpDLFlBQ2pCeEIsZ0JBQ0EwRDtJQUVKLE9BWEVIO2FBT21CL0I7c0JBSVd4ZDtjQUM1QixjQU1rQjJmO2VBQ0MsV0FBQSw0Q0FEREE7ZUFDQyxPQUFBO2NBQW1DOzRCQUp4Q0M7ZUFDUSxXQUFBLFdBUHRCRixZQU1jRTtlQUNRLE9BQUE7Y0FBOEI7Y0FIaEQ7ZUFBQTtpQkFBQTtlQURKO2lCQUFBLDJDQUpBNUQsZ0JBRzRCaGM7Y0FFeEIsT0FBQTthQU1tRDtHQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBR3JENFAsUUFJMEIrSTtZQUU3QjthQUFJa0gsYUFGeUJsSDthQU1kO2VBQUEsaURBSlhrSDtnQztZQUlGLElBREVDLG9CQUNGO1lBRUYsT0FBQTs0REFISUE7V0FHNEI7O29CQVo3QmxRLFFBY3lCaUgsY0FDekJuWDtZQUNIO2FBQUk4WCxpQkFERDlYO2FBRUc7ZUFBQTs7aUJBSHNCbVg7aUJBRXhCVzs7YUFLMkIsSUFBeEJxRyxrQkFBd0IsT0FBQSwyQkFBeEJBO2FBQXdCLE9BQUE7O1lBRlosSUFBYnlCLElBQWEsb0NBTFN6STtZQU0xQixPQUFBLG9EQURJeUk7V0FFeUM7O29CQXJCNUMxUDtZQTBCVyxXQUFBLFdBMUJYQSxxQkFBQUE7WUEwQlcsT0F6Q2hCNlAsa0JBZUs3UCxrQkFBQUE7V0EwQjhCOztvQkExQjlCQSxRQTRCK0JpSDtZQUdwQixXQUFBLFdBL0JYakgscUJBQUFBLFFBNEIrQmlIO1lBR3BCLE9BOUNoQjRJLGtCQWVLN1Asa0JBQUFBO1dBK0I2Qzs7T0FoQ3JCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBb0N4QnNJLFFBSXlCUztZQUU1QixXQUY0QkE7Z0M7WUFHMUIsSUFERW9ILG1CQUNGO1lBRUYsT0FBQTs0REFISUE7V0FHMkI7O29CQVQ1QjdILFFBV3dCVCxhQUN4QmtCO1lBRUgsSUFBSXFILGlCQUZEckg7WUFHSDthQUFtQjtjQUFBLE9BQUEsNEJBSlFsQixhQUd2QnVJO2NBQ0EsT0FBQTthQUFBOzs7Ozs7YUFFZSxJQUFiVixJQUFhLG9DQU5RN0g7YUFPekIsT0FBQSxvREFESTZIOztXQUNpRDs7b0JBbEJwRHBIO1lBc0JXLFdBQUEsV0F0QlhBLHFCQUFBQTtZQXNCVyxPQXhFaEJ1SCxrQkFrREt2SCxrQkFBQUE7V0FzQjZCOztvQkF0QjdCQSxRQXdCeUJUO1lBR2QsV0FBQSxXQTNCWFMscUJBQUFBLFFBd0J5QlQ7WUFHZCxPQTdFaEJnSSxrQkFrREt2SCxrQkFBQUE7V0EyQjBDOztPQTVCbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBaUN2QitILFFBSXVCdEg7WUFFMUI7NERBRjBCQTtXQUVzQzs7b0JBTjdEc0g7WUFVdUQsV0FBQSxXQVZ2REEscUJBQUFBO1lBVXVELE9BNUY1RFIsa0JBa0ZLUSxrQkFBQUE7V0FVdUU7O09BWjdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQWtDMUJDLFFBSW9CQyxZQUNwQnhIO1lBRUgsWUFGR0E7O2FBTUQsT0FBQSxvREFESTBHO1lBM0JhO2FBRHBCekg7YUFDQ3dJO2VBQW1CLDJDQURwQnhJO2FBRUN5SSxtQkFEQUQ7YUFFQUUsb0JBbUJ1Qkg7YUFsQnZCSSxvQkFrQnVCSjtlQW5CdkJHO2lCQUtLRSxTQUxMRjtnQkFDQUM7Y0FNdUM7ZUFBckJFLEtBTmxCRjtlQU11QyxPQUFBLDBCQVJ2Q0YsbUJBTUtHO2VBSEUvZixNQUt5Qix1QkFBZGdnQjtlQUxsQi9CLFFBR0s4Qjs7O2VBSEUvZixNQUdzQiwwQkFON0I0ZixtQkFNS0c7ZUFITDlCLFFBR0s4Qjs7b0JBSkxEO2FBS2dEO2NBQXJDRyxPQUxYSDtjQUtnRCxRQUFBLHVCQUFyQ0csTUFQWEw7Y0FHTzVmO2NBQVBpZSxRQUlpQiwwQkFQakIyQixtQkFPV0s7O2lCQUpKamdCLE1BSFA0ZixrQkFHQTNCO1lBUXNCO2FBQUEsT0FBQSw0QkFadEIwQixrQkFJQTFCLE9BQU9qZTthQVFBLE9BQUE7YUFEUGtnQix1QkFDRjtZQWFnQyxPQUFBOzs7eUJBMUIvQi9JLFNBWUMrSTtXQWlCdUQ7O29CQVhwRFQsUUFhMEJoSjtZQUdmO29CQUFBLFdBaEJYZ0oscUJBQUFBLFFBYTBCaEo7WUFHZixPQWxJaEJ1SSxrQkFrSEtTLGtCQUFBQTtXQWdCeUM7O09BakJ0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQXFCbkJVLFFBSXlCakk7WUFFNUIsSUFBSWtJLFlBRndCbEk7MEJBSUR2WixVQUFJMGhCLEtBQU8sV0FBWDFoQixHQUFJMGhCLEtBQWU7WUFBNUM7YUFERUM7ZUFDRjs2REFGRUY7WUFJSixPQUFBOzREQUhJRTtXQUcyQjs7b0JBVjVCSCxRQVl3QnpKLGFBQ3hCd0I7WUFFSDthQUFJcUksZ0JBRkRySTthQUdHO2VBQUE7O2lCQUpxQnhCO2lCQUd2QjZKOztpQkFFRzVoQjthQUFLLE9BQUEsa0RBQUxBOztZQUVZLElBQWJrZ0IsSUFBYSxvQ0FQUW5JO1lBUXpCLE9BQUEsb0RBREltSTtXQUNpRDs7b0JBcEJwRHNCO1lBeUJZLFdBQUEsV0F6QlpBLHFCQUFBQTtZQXlCWSxPQS9KakJuQixrQkFzSUttQixrQkFBQUE7V0F5QjhCOztvQkF6QjlCQSxRQTRCOEJ6SjtZQUdsQixXQUFBLFdBL0JaeUoscUJBQUFBLFFBNEI4QnpKO1lBR2xCLE9BcktqQnNJLGtCQXNJS21CLGtCQUFBQTtXQStCMkM7O09BaENwQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkFzQ3ZCSyxRQUd5Qm5RLGdCQUFleFMsTUFBS3lTO1NBQ2hELElBQ0ltUSxXQUFjOztVQU9QO1dBRUs7O2NBQ0U7Ozs7OztXQUZMLE9BQUE7VUFBQSxPQUFBO1NBR0s7U0FQWDtxQkFFRSx1QkFOTEE7VUFJRzs7YUFDRTs7ZUFQbUJwUTtlQUFleFM7ZUFBS3lTO2VBSDdDa1E7O1VBUUMsT0FBQTtpQkFSREE7U0FPRDtTQVlTLFdBQUE7U0FBQSxPQUFBO1FBQW1COztpQkFuQjNCQTs7VUFBQUE7VUF3QlEsV0FBQTtVQUFBLE9BQUE7U0FBbUI7U0FGOUIsV0FBQSxXQXRCR0Esb0JBQUFBO1NBc0JzQixPQUFBO1FBRUs7O2lCQXhCM0JBLFFBMkJBN0o7U0FFSCxZQUZHQTs7Y0EvTUF3SCwrQkErTUF4SCxzQkEvTUF3SDs7VUFISTtVQUNFO1dBQVB1QyxTQUFPOzs7O2VBaU5OL0o7ZUFBQUE7bUJBak5EK0o7ZUFpTkMvSjtjQWpORCtKOzs7VUFtTndCQztVQUF0Qi9KO1lBN0JENEo7VUFtQ0M7O2FBQUE7Ozs7OztVQUFBLE9BQUE7OztVQUd1Qjs7WUFLbEJuRjs7dUJBa0JTNkQ7ZUFDQyxXQUFBLDRDQUREQTtlQUNDLE9BQUE7Y0FBbUM7O3VCQWpCdEMwQjtlQUNSLGNBYWtCMUI7Z0JBQ0M7d0JBQUEsNENBRERBO2dCQUNDLE9BQUE7ZUFBbUM7O2dCQTVEM0RzQiwwQkE2QkM1Six3QkFnQllnSztnQkFTRTs7bUJBQUE7Ozt5QkF6QlFEO2dCQXlCUixPQUFBO2VBSUs7ZUFWWDtnQkFBQTtrQkFBQTtnQkFGSjtrQkFBQTs7b0JBOUNMSDtvQkE2QkM1SjtvQkFnQllnSztlQUdKLE9BQUE7Y0FZbUQ7V0FoQjNELE9BQUE7bUVBREt2Rjs7VUFGSDs7YUFBQTs7Ozs7O1VBQUEsT0FBQTtTQXNCTztTQXpCWDtpQkF0Q0NtRjtVQXNDRDtZQUFBO1NBQXlCLE9BQUE7UUF5QmQ7O2lCQS9EVkE7U0FtRUgsWUFuRUdBOztVQW9FaUM7V0FBNUJoUTtXQUE0QixPQUFBLGtEQUE1QkE7VUFBNEIsT0FBQTs7U0FHdkIsV0FBQSxvREFEUG1PO1NBQ08sT0FBQTtRQUF1RDs7aUJBdkVqRTZCO1NBMEVILGNBQWdDamhCO1VBQzVCO1dBQTJCLE9BQUEsNENBRENBO1dBQ2pCLE9BQUE7VUFBQSxPQUFBO1NBQStDO1NBRG5DLE9BNVA3QnVmLGdCQWtMSzBCO1FBMkU0RDs7aUJBM0U1REE7a0JBOEdDdkIsV0FBVzFmO1VBQ2I7V0FFOEI7WUFBQSxPQUFBLHVCQWRmMlE7WUFBTHVOLE9BY0c7WUFHUCxPQUFBLHVCQWpCU3ZOO1dBZ0JYLHNDQUxTM1EsTUFYSGtlO1dBcUJKLFdBQUEsdUJBckJTdk47V0FvQlgsc0NBVFMzUSxNQVhIa2U7V0F1QlIsWUFaV2xlOztZQWtCQTthQUhGNFg7YUFHRSxPQUFBLHVCQTdCRWpIO2FBNEJQLE9BQUEsc0NBRkdpSDtZQUNMOytDQTNCSXNHOztXQStCUjtZQUFBLE9BcEJXbGU7O3VCQXNCRjRhLE1BQUswRztlQUNSO2dCQUdjLE9BQUEsK0JBSlgxRztnQkFJRCxPQUFBLHVCQXJDS2pLO2dCQW1DZSxPQUFBLDJCQUZkMlE7Z0JBRU4sT0FBQTtlQUVBLE9BQUE7eURBckNBcEQ7Y0FxQ3VCO1dBTDdCO1dBUUY7WUFBQSxPQTdCV2xlO1lBOEJDOztlQWhDQTtnQkFUcUJ1aEI7Z0JBQVZDO2dCQVNYLE9BQUEsOEJBVFdBO2dCQVN2QixPQUFBLHVCQVRhN1E7Z0JBU2I7Ozs7ZUFQSSxHQUFBLCtCQUZtQjZROzs7bUJBR3BCO3FFQUg4QkQ7dUJBSXhCLCtCQUpjQzsyQkFLcEIsc0NBTDhCRDs7Z0JBT1A7aUJBQUEsT0FBQTt3QkFBdkIsMENBUDhCQTtlQVNqQyxPQUFBOzs7d0JBVFFyRDs7Ozs7OztXQXlDTjtXQUdGO1lBQUEsT0FqQ1dsZTtZQW1DUDt1QkFuRXVCeWhCLFFBQUs1SjtlQUMvQixHQUFBLCtCQUQwQjRKO2dCQU9iO2lCQUFBLE9BQUEsOEJBUGFBO2lCQU96QixPQUFBLHVCQWNXOVE7aUJBakJSLE9BQUE7aUJBREgsT0FBQSwwQ0FIOEJrSDtnQkFPOUIsT0FBQTswREFjTXFHOztlQWJGLEdBQUEsK0JBUnFCdUQ7Z0JBWWI7aUJBQUEsT0FBQSw4QkFaYUE7aUJBWXpCLE9BQUEsdUJBU1c5UTtpQkFYWCxPQUFBLHFDQVY4QmtIO2dCQVk5QixPQUFBOzBEQVNNcUc7O2VBUEk7Z0JBQVJ0RDtrQkFBUSw0Q0FkZTZHO2dCQWtCYixPQUFBLDhCQUpWN0c7Z0JBSUYsT0FBQSx1QkFHV2pLO2dCQUxhLE9BQUE7Z0JBQXhCLE9BQUEsMENBaEI4QmtIO2VBa0I5QixPQUFBO3lEQUdNcUc7O1dBNkNOO1dBSVE7WUFBTnRRLE1BQU0sc0NBakRGc1E7WUFrRFIsT0FBQSxrREFESXRRO1dBQ0o7Ozs7OztXQUVtRDtZQUQzQjdPO1lBQUhlO1lBQzhCLE9BQUEsK0JBRDNCZjtZQUN1QixPQUFBLHVCQUQxQmU7WUFDTyxPQUFBO1dBQUEsT0FBQTs7U0FBZ0M7U0FFaEUsT0FwVUYyZjtrQkEyS0t3QixpQkFBQUEsaUJBOEdDdkI7UUEyQ3FEOztpQkF6SnREdUI7dUJBNEo2QmpoQjtVQUM1QjtXQUNXLFdBQUE7V0FBQSxPQUFBO1VBQW1CO1VBRDlCOzthQUFBLDJDQTdKRGloQixpQkE0SjZCamhCO1VBQ2MsT0FBQTtTQUNaO1NBRlAsT0E5VTdCdWYsZ0JBa0xLMEI7UUE4SmdDOztpQkE5SmhDQTt1QkFpSzZCamhCO1VBQzVCLGNBR2tCMmY7V0FDQyxXQUFBLDRDQUREQTtXQUNDLE9BQUE7VUFBbUM7O1dBRnRCLFdBQUE7V0FBQSxPQUFBO1VBQW1CO1VBRC9DO1dBQUEsT0FBQTtXQURKO2FBQUEsMkNBbEtEc0IsaUJBaUs2QmpoQjtVQUV4QixPQUFBO1NBR21EO1NBTGhDLE9BblY3QnVmLGdCQWtMSzBCO1FBc0t5RDs7aUJBdEt6REEsUUF5S0FTO3VCQUU2QjFoQjtVQUM1QixjQUlrQjJmO1dBQ0MsV0FBQSw0Q0FEREE7V0FDQyxPQUFBO1VBQW1DO3dCQUZ2QzllO1dBQWdCLFdBQUEsa0RBQWhCQTtXQUFnQixPQUFBO1VBQWtCO1VBRDdDO1dBQUEsT0FBQTtXQUZKO2FBQUE7O2VBNUtEb2dCO2VBMks2QmpoQjtlQUY3QjBoQjtVQUtLLE9BQUE7U0FHbUQ7U0FOaEMsT0E3VjdCbkMsZ0JBa0xLMEI7UUFpTHlEOztpQkFqTHpEQSxRQW1MdUIxSjt1QkFFTXZYO1VBQzVCLGNBR2tCMmY7V0FDQyxXQUFBLDRDQUREQTtXQUNDLE9BQUE7VUFBbUM7O1dBRnRCLFdBQUE7V0FBQSxPQUFBO1VBQW1CO1VBRC9DO1dBQUEsT0FBQTtXQURKO2FBQUE7O2VBdExEc0I7ZUFxTDZCamhCO2VBRk51WDtVQUlsQixPQUFBO1NBR21EO1NBTGhDLE9Bdlc3QmdJLGdCQWtMSzBCO1FBMEx5RDs7aUJBMUx6REE7dUJBNkw2QmpoQjtVQUM1QixjQVdrQjJmO1dBQ0MsV0FBQSw0Q0FEREE7V0FDQyxPQUFBO1VBQW1DO3dCQVZ2Q2pIO1dBQ1AsY0FNa0JpSDtZQUNDLFdBQUEsNENBRERBO1lBQ0MsT0FBQTtXQUFtQzt5QkFMdkNoRDtZQUNQO2FBRUssT0FBQSx1Q0FOTmpFLFVBR1FpRTthQUVMLE9BQUE7WUFBQSxPQUFBO1dBQ3FEO1dBSjNEO1lBQUEsT0FBQTtZQURKO2NBQUEsMkNBak1Uc0UsaUJBNkw2QmpoQjtXQUtoQixPQUFBO1VBTW1EO1VBVDNEO1dBQUEsT0FBQTtXQURKO2FBQUEsMkNBOUxEaWhCLGlCQTZMNkJqaEI7VUFFeEIsT0FBQTtTQVdtRDtTQWJoQyxPQS9XN0J1ZixnQkFrTEswQjtRQTBNeUQ7O2lCQTFNekRBO1NBNk1ILGNBQWdDamhCO1VBQzVCO1dBQTJCLE9BQUEsNENBRENBO1dBQ2pCLE9BQUE7VUFBQSxPQUFBO1NBQTRDO1NBRGhDLE9BL1g3QnVmLGdCQWtMSzBCO1FBOE15RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBaE56Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQy9LckJVLHdCQUF3QjdoQjtRQUEwQjhoQixtQkFBVkMsaUJBQVpDO0lBQzlCLEdBRDhCQSxRQUNOLDhCQURFaGlCO0lBRTFCLEdBRjBDK2hCO2VBQVpDO0tBSTFCLDhCQUpzQmhpQjs7SUFVMUIsS0FWb0Q4aEIsUUFJaEQsT0FKZ0RBOzs7VUFBdEJFLFlBQVlEOzs7SUFhbkMsT0FBQSw4QkFibUIvaEI7O0dBc0MxQixJQURFaWlCO1lBZ0VBdlUsUUFBUXdVLGNBQWE1aUI7SUFDa0IsVUFBQSxvQ0FEbEJBO0lBQ1YsT0FBQTthQURINGlCLGNBQ0c7R0FBeUQ7WUFFcEVDO0lBQ2tCLElBQWhCQyxvQkFwRUZIO0lBcUVGO1lBRElHO3FCQUNlOWlCO2FBQUssSUFsRVh5QixJQWlFVHFoQjtvQkFDZTlpQjs7dUJBQUFBOzs7b0JBL0RtQmtnQixJQStEbkJsZ0I7O29DQS9EbUJrZ0I7Ozt1QkFPS0QsTUF3RHhCamdCLGdCQWxFTnlCLE1BQUFBLFVBVThCd2UsS0FWOUJ4ZSxPQUFBQTs7O3VCQXdCMkJ1ZSxNQTBDckJoZ0IsbUJBbEVOeUIsVUF3QjJCdWUsS0F4QjNCdmUsT0FBQUE7Ozt1QkFpQjRCc2hCLE1BaUR0Qi9pQixnQkFsRU55QixNQUFBQSxVQWlCNEJzaEIsS0FqQjVCdGhCLE9BQUFBOzs7O29CQUNTa0IsSUFpRUgzQyxnQkFsRU55QixVQUNTa0IsSUFEVGxCLE1BQUFBOztnQkFnQ1gsSUFEaUJ1aEIsSUFtQ0FoakIsTUFsQ2pCLFFBRGlCZ2pCOztpQkFHZixJQURlcmpCLGNBQ2YsTUFsQ1M4QixZQWlDTTlCLE1BUVAsVUFWT3FqQjt3QkFBQUE7Ozs7Ozs7aUJBUVg7a0JBQUE7b0JBQUE7O3NCQU5XcmpCOzs7NEJBakNOOEIsTUFBQUEsTUFBQUE7OztpQkE4Q0Y7a0JBRFl3QztrQkFDWjtvQkFBQSxpREFEWUEsR0E3Q1Z4Qzs7a0JBMkRDLE1BQUE7O2lCQVhSOztrQkFEaUJ1YztrQkFBUGlGO2tCQUFKQztrQkE1Rm1DVixTQTRGbkNVO2tCQTVGeUJULE9BNEZ6QlM7a0JBNUZhUixTQTRGYlE7a0JBQ04sTUFoRE96aEI7a0JBdURDLFVBeEJLdWhCLE1BZ0JIQzt3QkFoQkdEOztrQ0E1RU1OLFdBQXNCRjs7a0NBQXRCRSxRQUFZRDs2Q0FBQUEsTUFBVUQ7O2lCQWtHckM7a0JBQUE7b0JBQUE7O3NCQVJhdmU7b0NBRUErWjs7NEJBL0NWdmMsTUFBQUEsTUFBQUE7OzthQWlFVHFoQjs7WUFDZ0U7R0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O29CQUc3RHRTO2dCQUdtRGdTLG1CQUFWQyxpQkFBWkM7WUFDN0IsS0FBQSxXQUpBbFMsb0JBQUFBO2FBcUJELE9BQUE7WUFkSTs7ZUFBQTs7Ozs7Ozs7Ozs7Ozs7bURBSjBCa1M7O29EQUFZRDswREFBVUQ7O1lBR2xELFdBTkRoUztZQW1CRCxPQUFBOzs7b0JBbkJDQSxRQXVCK0IyUztZQUNsQyxLQUFHLFdBeEJBM1Msb0JBQUFBO2FBNkJELE9BQUE7WUE3QkNBO29CQXhFTG1TLGtCQUFBQSxrQkFBQUE7WUFrR2tDO2FBQUEsTUFBQSx1QkFIRVE7YUFHbEIsTUFBQTtZQUFMLFdBMUJSM1M7WUEyQkQsT0FBQTtXQUV1Qzs7b0JBN0J0Q0EsUUErQmMsT0EvQmRBLHNCQStCZ0M7O29CQS9CaENBLFFBZ0N1QixPQWhDdkJBLHNCQWdDNkM7O29CQWhDN0NBLFFBaUNtQixPQWpDbkJBLHNCQWlDMEM7O29CQWpDMUNBLFFBa0NlLE9BbENmQSxzQkFrQ3FDOztPQW5DcEI7Ozs7Ozs7Ozs7VUE1R3RCK1IseUJBd0dBTSxZQUhBelU7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7SUNoQk1nVjs7SUFzQ0FDOztJQWdEQUM7SUFLQUM7SUFLQUM7Ozs7SUFLQTlTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBOUtOdEMsUUFBUUMsU0FBUXhMO0lBaEJaLElBS0o3QyxJQUxJLG9DQWdCWTZDOzs7ZUFYaEI3QyxnQ0FBQUE7aUJBQUFBOzs7Ozs7Ozs4QkFKcUJXOzs7Ozs7Ozs7OztvQkFFMkNILCtCQUYzQ0csU0FFMkNIOzs7Ozs7Ozs7Ozs7Z0JBRkZpakI7Ozt1QkFBekM5aUI7dUJBQ0MsK0NBRHdDOGlCOzs7Ozs7Ozs7Ozs7S0FLOUQ7TUFBQTs7TUFNOEMsT0FBQSxzQ0FQOUN6akI7TUFPWSxXQUFBO01BSEwsT0FBQTs7OzthQURIOzs7Z0JBY087SUFIRTtLQURKd087S0FBSmtWO0tBQ0RwVixTQUFTLDhCQUhMRCxTQUVIcVY7SUFFSSwrQkFKRHJWLFNBRUhxVjtJQUdMLE9BQUEsb0JBRklwVixRQURLRTtHQUlJO1lBRWJMLG1CQUFpQixPQUFBLG9DQUFnQjtZQUNqQ29DLGFBQWFsQztJQUFVLGFBQUEsK0JBQVZBO0dBQXFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQUk3Q21DLFFBR3NCbVQsTUFBS2pUO1NBQzlCLEdBQUcsV0FKQUY7VUFLb0I7V0FBQSxRQUFBO1dBQVRHO1dBQVI3UDtXQUNBOGlCLFNBQVM7VUFDSiw4QkFETEE7VUFFOEIsV0FBQSx1QkFSakNwVDtVQVFRLDhCQUZMb1Q7VUFHSyw4QkFITEE7VUFJSyxXQVBtQmxULFNBR3hCa1Q7VUFLSyw4QkFMTEE7VUFNSyxXQVRjRCxNQVNULDZCQU5WQztVQU9LO2dDQWJScFQsa0JBQUFBLGtCQUtXRztVQUxYSCxtQkFBQUE7VUFlRCxPQVZJMVA7O1NBWUo7VUFBQTtVQUVLO1lBQUE7VUFESCxPQUFBO1NBQUEsT0FBQTtRQUdtRDs7aUJBckJwRDBQLFFBdUJrQkU7dUJBQ01tVDtVQUFRLE9BQW5DLGdDQUEyQkEsTUFETm5UO1NBQ2lEO1NBQWhELE9BQUE7a0JBeEJuQkYscUJBQUFBLFFBQUFBO1FBd0JvRTs7aUJBeEJwRUEsUUEwQjJCUztrQkFDMUJQLFFBQVFrVDtVQUNELDhCQURDQTtVQUVELDhCQUZDQSxRQURrQjNTO1VBSTVCLE9BQUEsOEJBSFUyUztTQUdrQjtTQUU5QixjQUVJNWpCO1VBRm1ELGlCQUVuREEsR0FEUztVQUVUO1dBQUE7O1dBSzBDLE9BQUEsc0NBTjFDQTtXQU1VO2lCQUFBO1dBSEw7YUFBQTtVQUZMO2tCQUNFO1NBTW9EO1NBVm5DOztZQUFBLFdBaENwQndRLHFCQUFBQSxRQUFBQSxrQkEyQkNFO1NBS21ELE9BQUE7UUFVRzs7aUJBMUN2REYsUUE0Q3VCUztTQUMxQjtVQUMwQixPQUFBLGtDQUZBQTtVQUV4QixPQUFBO1NBQUEsT0FBQSxXQTlDQ1QscUJBQUFBO1FBOENtRDs7aUJBOUNuREEsUUFnRGtCVTtTQUNyQixHQURxQkE7O1dBT1Y0UyxJQVBVNVM7c0JBT0gsK0NBQVA0Uzs7O1NBTFQsSUFERXBUO1NBUUosY0FBbUQxUSxHQUFLLFdBQUxBLEdBQWdCO1NBQTVDLFdBQUEsV0F6RHBCd1EscUJBQUFBLFFBaURDRTtTQVEwQyxPQUFBO1FBQXNCOztpQkF6RGpFRjtTQTZESCxjQUFtRHhRO1VBQy9DLFdBQVUsK0NBRHFDQTtTQUNRO1NBRHBDLFdBQUEsV0E3RHBCd1EscUJBQUFBLFFBNERDNFM7U0FDMEMsT0FBQTtRQUNjOztpQkE5RHpENVMsUUFnRXdCVTtTQUMzQixHQUQyQkE7O1dBT2hCNFMsSUFQZ0I1UztzQkFPVCwrQ0FBUDRTOzs7U0FMVCxJQURFcFQ7U0FRSixjQUFtRDFRO1VBQy9DLFdBQVUsc0NBRHFDQTtTQUNYO1NBRGpCLFdBQUEsV0F6RXBCd1EscUJBQUFBLFFBaUVDRTtTQVEwQyxPQUFBO1FBQ0w7O2lCQTFFdENGLFFBNEUyQlcsS0FBS0MsS0FBS0MsUUFBUUMsT0FJcENKO1NBSFo7OzthQVlXOzs7ZUFiNkJHOzs7Z0JBWTdCLCtDQVpxQ0M7OzthQVdyQzs7O2VBWHdCRjs7VUFJZG5SOzthQU1WOzs7ZUFWbUJrUjs7WUFJbEJEOztXQUdJNFMsSUFISjVTO3NCQUdTLCtDQUFMNFMsSUFISzdqQjs7cUJBQUFBO1NBRm5CLElBREV5UTtTQWdCSixjQUFtRDFRO1VBQ3ZDLElBQUorakIsSUFBSSwrQ0FEdUMvakI7VUFFL0MsV0FESStqQjtTQUNPO1NBRlEsV0FBQSxXQTdGcEJ2VCxxQkFBQUEsUUE2RUNFO1NBZ0IwQyxPQUFBO1FBRTlCOztpQkEvRmJGO1NBbUdILGNBQW1EeFE7VUFFN0M7V0FERStqQjthQUNGOzs7ZUFGNkMvakI7VUFJL0MsV0FISStqQjtTQUdPO1NBSlEsV0FBQSxXQW5HcEJ2VCxxQkFBQUEsUUFrR0M2UztTQUMwQyxPQUFBO1FBSTlCOztpQkF2R2I3UyxRQXlHZ0J6QjtTQUVqQjtVQURFMkI7Ozs7OztlQUlFOzs7aUJBTGEzQjs7U0FRbkIsY0FBbUQvTztVQUU3QztXQURFK2pCO2FBQ0Y7OztlQUY2Qy9qQjtVQUkvQyxXQUhJK2pCO1NBR087U0FKUSxXQUFBLFdBakhwQnZULHFCQUFBQSxRQTBHQ0U7U0FPMEMsT0FBQTtRQUk5Qjs7aUJBckhiRixRQXVIb0J6QjtTQUVyQjtVQURFMkI7Ozs7OztlQUlFOzs7aUJBTGlCM0I7O1NBUXZCLGNBQW1EL087VUFFN0M7V0FERStqQjthQUNGOzs7ZUFGNkMvakI7VUFJL0MsV0FISStqQjtTQUdPO1NBSlEsV0FBQSxXQS9IcEJ2VCxxQkFBQUEsUUF3SENFO1NBTzBDLE9BQUE7UUFJOUI7O2lCQW5JYkYsUUFxSTZCVTtTQUNoQyxHQURnQ0E7O1dBT3JCNFMsSUFQcUI1UztzQkFPZCwrQ0FBUDRTOzs7U0FMVCxJQURFcFQ7U0FRSixjQUFtRDFRO1VBQy9DLFdBQVUsK0NBRHFDQTtTQUNTO1NBRHJDLFdBQUEsV0E5SXBCd1EscUJBQUFBLFFBc0lDRTtTQVEwQyxPQUFBO1FBQ2U7O2lCQS9JMURGO1NBbUpILGNBQW1EeFE7VUFDL0MsV0FBVSwrQ0FEcUNBO1NBQ0g7U0FEekIsV0FBQSxXQW5KcEJ3USxxQkFBQUEsUUFrSkM4UztTQUMwQyxPQUFBO1FBQ0c7O2lCQXBKOUM5UztTQXdKSCxjQUFtRHhRO1VBQy9DLFdBQVUsK0NBRHFDQTtTQUNGO1NBRDFCLFdBQUEsV0F4SnBCd1EscUJBQUFBLFFBdUpDK1M7U0FDMEMsT0FBQTtRQUNJOztpQkF6Si9DL1M7U0E2SkgsY0FBbUR4UTtVQUMvQyxXQUFVLCtDQURxQ0E7U0FDUztTQURyQyxXQUFBLFdBN0pwQndRLHFCQUFBQSxRQTRKQ2dUO1NBQzBDLE9BQUE7UUFDZTs7aUJBOUoxRGhUO1NBa0tILGNBQW1EeFE7VUFDL0MsV0FBVSwrQ0FEcUNBO1NBQ0Y7U0FEMUIsV0FBQSxXQWxLcEJ3USxxQkFBQUEsUUFpS0NFO1NBQzBDLE9BQUE7UUFDSTs7aUJBbksvQ0YsUUFxS3lCZ0IsYUFBWUM7U0FDeEMsR0FENEJEO2NBT2pCc1MsSUFQaUJ0UzthQUFZQzs7WUFRckJiLElBUnFCYTt1QkFTQSwrQ0FEckJiOztrQkFDWCwrQ0FGR2tUOzs7dUJBQWEsK0NBQWJBOzs7aUJBUDZCclM7O1dBVXZCdVMsTUFWdUJ2UztzQkFhaEMsK0NBSFN1UztzQkFFVDs7O1NBVk4sSUFERXRUO1NBZUosY0FBbUQxUTtVQUMvQyxXQUFVLCtDQURxQ0E7U0FDVjtTQURsQixXQUFBLFdBckxwQndRLHFCQUFBQSxRQXNLQ0U7U0FlMEMsT0FBQTtRQUNKOztJQXhMOUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBOExWb0ksUUFDNEI3SDtTQUM5QjtpQkFGRTZIO1VBRUY7VUFBQTtZQUFBO2lFQUQ4QjdIO1NBQzlCLE9BQUE7UUFBOEQ7O2lCQUY1RDZILFFBSXdCN0g7U0FDMUI7aUJBTEU2SDtVQUtGO1VBQUE7WUFBQTtpRUFEMEI3SDtTQUMxQixPQUFBO1FBQTBEOztpQkFMeEQ2SCxRQU9tQjVIO1NBQ3JCO2lCQVJFNEg7VUFRRjtVQUFBO1lBQUE7a0VBRHFCNUg7U0FDckIsT0FBQTtRQUF1RDs7aUJBUnJENEgsUUFVeUI1SDtTQUMzQjtpQkFYRTRIO1VBV0Y7VUFBQTtZQUFBO2dFQUQyQjVIO1NBQzNCLE9BQUE7UUFBNkQ7O2lCQVgzRDRILFFBYTRCM0gsS0FBS0MsS0FBS0MsUUFBUUMsT0FBTUo7U0FDdEQ7aUJBZEU0SDtVQWNGO1VBQUE7WUFBQTs7O2NBRDhCM0g7Y0FBS0M7Y0FBS0M7Y0FBUUM7Y0FBTUo7U0FDdEQsT0FBQTtRQUMwQjs7aUJBZnhCNEg7U0FpQnNCO2lCQWpCdEJBO1VBaUJzQjtVQUFBLE9BQUE7U0FBQSxPQUFBO1FBQStDOztpQkFqQnJFQSxRQW1CaUIvSjtTQUNuQjtpQkFwQkUrSjtVQW9CRjtVQUFBO1lBQUE7a0VBRG1CL0o7U0FDbkIsT0FBQTtRQUFpRDs7aUJBcEIvQytKLFFBc0JxQi9KO1NBQ3ZCO2lCQXZCRStKO1VBdUJGO1VBQUE7WUFBQTtpRUFEdUIvSjtTQUN2QixPQUFBO1FBQXFEOztpQkF2Qm5EK0o7U0EwQkY7aUJBMUJFQTtVQTBCRjtVQUFBLE9BQUE7U0FBQSxPQUFBO1FBQXdEOztpQkExQnREQSxRQTRCOEI1SDtTQUNoQztpQkE3QkU0SDtVQTZCRjtVQUFBO1lBQUE7aUVBRGdDNUg7U0FDaEMsT0FBQTtRQUFrRTs7aUJBN0JoRTRIO1NBK0JvQjtnQkEvQnBCQTtVQStCb0I7VUFBQSxNQUFBO1NBQUEsT0FBQTtRQUE2Qzs7aUJBL0JqRUE7U0FnQ3FCO2dCQWhDckJBO1VBZ0NxQjtVQUFBLE1BQUE7U0FBQSxPQUFBO1FBQThDOztpQkFoQ25FQTtTQW1DRjtnQkFuQ0VBO1VBbUNGO1VBQUEsTUFBQTtTQUFBLE9BQUE7UUFBb0U7O2lCQW5DbEVBO1NBc0NGO2dCQXRDRUE7VUFzQ0Y7VUFBQSxNQUFBO1NBQUEsT0FBQTtRQUFtRDs7aUJBdENqREEsUUF3QzBCdEgsYUFBWUM7U0FDeEM7Z0JBekNFcUg7VUF5Q0Y7VUFBQTtZQUFBOzs7Y0FENEJ0SDtjQUFZQztTQUN4QyxPQUFBO1FBQzBCOztJQTdDTiwyQkFBQXdTLFlBQVlOLE1BQU10VjtLQUVoQztNQUFBLE1BQUEsNkJBRmM0VixZQUFZTixNQUFNdFY7Ozs7Ozs7O1VBdE14Q0QsU0FRQUQsYUFDQW9DOzs7O0U7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3ZCQXBDLG1CQUFpQixPQUFBLG9DQUFnQjtZQUVqQ3RGLFlBQVluSSxHQUFFaUMsR0FBRUM7SUFDbEI7S0FDd0IsT0FBQTtLQUF0QixPQUFBLDhDQUZZbEM7SUFDZCxPQUFBLG9EQURnQmlDLEdBQUVDO0dBR1o7WUFFSndMLFFBQVFDLFNBQVFyTztrQkFFa0MyQyxHQUFFQyxJQUFHakM7S0FFMUMsV0FBQSw4QkFKTDBOLFNBRStDMU47OztRQUk1QixJQUROMk4sa0JBQ00sT0FYM0J6Riw0QkFPa0RsRyxHQUFFQztRQUkzQyxvQkFEWTBMOzs7UUFJVjtTQUZVQztTQUVWO1dBZFgxRjthQWVjLHFEQVJvQ2xHLEdBQUVDO1FBTTNDLG9CQURZMkw7OztRQU9WO1NBRk9FO1NBRVA7V0FuQlg1RjthQW9CYzs7OzthQWJvQ2xHO2FBQUVDO1FBVzNDLG9CQURTNkw7OztRQU9TO1NBRFZDO1NBQ1UsT0F4QjNCN0YsbUNBT2tEbEcsR0FBRUM7UUFpQjNDLG9CQURROEw7O0tBR1osT0FBQSwrQkFyQkdMLFNBRStDMU47SUFtQnpCO0lBbkI5Qjs7T0FBQTtJQURGLE9BQUEsb0RBRGtCWDtHQXNCZjtZQUVEdVEsYUFBYWxDO0lBQVUsYUFBQSwrQkFBVkE7R0FBcUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0JBRzdDbUMsUUFRQ0MsUUFBT0M7WUFDVCxHQUFHLFdBVEZGLG9CQUFBQTthQVVzQjtjQUFBLFFBQUE7Y0FBVEc7Y0FBUjdQOztjQUNKOzt5QkFFUzhQO2lCQUNIOzZCQU5DRjtrQkFPQzs7OEJBQU9FO3NCQUFLLGtDQUFMQSxHQWZoQko7cUJBZWdEOztpQkFBdkMsT0FBQTs4REFGQ0k7Z0JBRWtEO2NBSnZEclI7Z0JBQ0Y7O2FBTU8sV0FsQlZpUixpQkFXS2pSO2FBUUs7O2VBbkJWaVI7ZUFBQUE7bUJBUUNDLFFBRVlFO2FBVmJILGtCQUFBQTthQXFCQyxPQVhJMVA7O1lBY0YsV0FBQTtZQUFBLE9BQUE7V0FPSzs7b0JBL0JSMFAsUUFpQ2NLOzBCQUNTRDthQUN0QjtjQUFBOzs7MEJBR1NBLEdBQUssT0FKbEIsMkJBSWFBLEdBTElDLFNBS29DOztjQUYvQzs7MEJBQ09EO2tCQUFLLE9BQUEsMkJBQUxBO2lCQUE2Qzs7YUFEcEQsT0FBQSwrQ0FGb0JBO1lBS25CO1lBTGMsT0FBQSxXQWxDbEJKLG9CQUFBQTtXQXVDSzs7b0JBdkNMQSxRQXlDY0ssU0FBUUM7eUJBQ0NGO2FBQ3RCO2NBQUE7OzswQkFJU0E7a0JBQUssT0FMbEIsMkJBS2FBLEdBTllFO2lCQU1pQzs7OzswQkFEN0NGLEdBQUssa0NBQUxBLEdBTElDLFNBS29DOztjQUYvQzs7MEJBQ09EO2tCQUFLLE9BQUEsMkJBQUxBO2lCQUE2Qzs7YUFEcEQsT0FBQSwrQ0FGb0JBO1lBTW5CO1lBTmMsT0FBQSxXQTFDbEJKLG9CQUFBQTtXQWdESzs7b0JBaERMQSxRQWtEWU8sZUFBY0Y7eUJBQ0hEO2FBQ3RCO2NBQUE7OzswQkFJU0EsR0FBSyxPQUxsQiwyQkFLYUEsR0FOZ0JDLFNBTXdCOzs7OzBCQUR4Q0Q7a0JBQUssa0NBQUxBLEdBTEVHO2lCQUt5Qzs7Y0FGbEQ7OzBCQUNPSDtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBMkM7O2FBRGxELE9BQUEsK0NBRm9CQTtZQU1uQjtZQU5jLE9BQUEsV0FuRGxCSixvQkFBQUE7V0F5REs7O29CQXpETEEsUUEyRFdLO3lCQUNTRDthQUNuQjtjQUFBOzs7MEJBR1NBLEdBQUssT0FKbEIsMkJBSWFBLEdBTENDLFNBS3VDOztjQUYvQzs7MEJBQ09EO2tCQUFLLE9BQUEsMkJBQUxBO2lCQUEwQzs7YUFEakQsT0FBQSwrQ0FGaUJBO1lBS2hCO1lBTFcsT0FBQSxXQTVEZkosb0JBQUFBO1dBaUVLOztvQkFqRUxBLFFBbUVjTyxlQUFjRixTQUFRQzt5QkFDYkY7YUFDdEI7Y0FBQTs7OzBCQUtTQTtrQkFBSyxPQU5sQiwyQkFNYUEsR0FQMEJFO2lCQU9tQjs7OzswQkFEN0NGLEdBQUssa0NBQUxBLEdBTmtCQyxTQU1zQjs7OzswQkFEeENEO2tCQUFLLGtDQUFMQSxHQUxJRztpQkFLdUM7O2NBRmxEOzswQkFDT0g7a0JBQUssT0FBQSwyQkFBTEE7aUJBQTZDOzthQURwRCxPQUFBLCtDQUZvQkE7WUFPbkI7WUFQYyxPQUFBLFdBcEVsQkosb0JBQUFBO1dBMkVLOztvQkEzRUxBO1lBOEVILGFBQTBCSTthQUN0QjtjQUFBO2NBQ0U7OzBCQUFPQTtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBOEM7O2FBQXJELE9BQUEsK0NBRm9CQTtZQUVvQztZQUZ6QyxPQUFBLFdBOUVsQkosb0JBQUFBO1dBZ0Y0RDs7b0JBaEY1REE7WUFtRkgsYUFBc0JJO2FBQ2xCO2NBQUE7Y0FDRTs7MEJBQU9BO2tCQUFLLE9BQUEsMkJBQUxBO2lCQUErQzs7YUFBdEQsT0FBQSwrQ0FGZ0JBO1lBRXlDO1lBRjlDLE9BQUEsV0FuRmRKLG9CQUFBQTtXQXFGNkQ7O29CQXJGN0RBLFFBdUZvQkssU0FBUUc7eUJBQ0xKO2FBQ3RCO2NBQUE7OzswQkFJU0E7a0JBQUssT0FMbEIsa0NBS2FBLEdBTmtCSTtpQkFNaUI7Ozs7MEJBRG5DSixHQUFLLGtDQUFMQSxHQUxVQyxTQUs4Qjs7Y0FGL0M7OzBCQUNPRDtrQkFBSyxPQUFBLDJCQUFMQTtpQkFBbUQ7O2FBRDFELE9BQUEsK0NBRm9CQTtZQU1uQjtZQU5jLE9BQUEsV0F4RmxCSixvQkFBQUE7V0E4Rks7O09BL0ZZOzs7Ozs7Ozs7OztVQWpDdEJyQyxhQU9BQyxTQXdCQW1DOzs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQ3JDSUMsZUFHMEIsT0FIMUJBLGdCQUd3Qzs7aUJBSHhDQSxRQUtzQjBUO1NBTHRCMVQsa0JBS3NCMFQ7O1FBQ087O2lCQU43QjFULGVBUWlDLE9BUmpDQSxnQkFRc0Q7O2lCQVJ0REEsUUFXQ3dIO1NBWER4SCxrQkFXQ3dIOztRQUMwQzs7SUFmakM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lCQW1CVmMsZUFNdUIsT0FOdkJBLGdCQU1rQzs7aUJBTmxDQSxlQUFBQSw4QkFPNEM7O2lCQVA1Q0EsUUFVQ2Qsc0JBQ0FrTTtTQVhEcEw7O1dBY0csNkJBSEZvTCxlQURBbE07O1FBS2lDOztpQkFmbENjLFFBaUJjaUY7U0FDUCxvQkFsQlBqRjtTQW1CRixhQUF5QjlZLEdBQUssT0FBVyx1QkFBaEJBLElBQXdCO1NBbkIvQzhZLGtCQW1CUSx1QkFGTWlGOztRQUVrQzs7aUJBbkJoRGpGLGVBcUI2RCxPQXJCN0RBLGdCQXFCbUU7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7STs7Ozs7Ozs7Ozs7O0lDeEM1RDs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ0tHOzs7Ozs7Ozs7Ozs7SUFBZHFMLGNBQWM7Ozs7Ozs7Ozs7OztZQUNkQyxnQkFBZ0JDO0lBQWtCLE9BQUEsc0NBRGxDRixhQUNnQkU7R0FBMEQ7WUFFMUVDLGFBQWFDO0lBRUE7O09BQUEsd0JBQVcsb0NBRlhBO0lBRWI7SUFFRixPQU5FSDtHQU1nQjtZQUVoQkk7SUFDRixPQUFNLHNDQVZKTDtHQVljO1lBRWRNLFVBQVdGLFVBQW9CRztJQUVqQztLQUtVO09BQUE7Ozs7O0tBSE47T0FBQTtTQUNHLG9DQUxNSCxlQUFvQkc7SUFHL0I7SUFPaUM7S0FBL0JDLHNCQUErQixzQ0F4QmpDUjtLQXlCRVMsMEJBWDZCRixRQUFwQkgsV0FVVEk7SUFLSixPQTVCRVAsZ0JBd0JFUTtHQUkyQjtnQkFHQVQ7SUFDM0I7aUJBQ09VLEtBQUlDLE9BQVMsT0FBQSx1QkFBVEEsVUFBSkQsS0FBMkM7SUFEbEQsT0FBQSxzQ0FEMkJWO0dBR1g7R0FIcEIsSUFERU8sU0FDRix5Q0FoQ0VQO1lBcUNBWSxLQUVHQyxLQUFnQkMsS0FBSUM7SUFDekIsR0FES0YsU0FBU0csTUFBVEgsUUFBQUksU0FBU0QsY0FBVEM7V0FBQUEsUUFwQ0hkLGFBb0NtQlc7aUJBTVBQO0tBL0JaRCxVQXlCbUJRLEtBTVBQO0tBRUMsVUFBQSw0Q0FGREE7S0FFQyxPQUFBO0lBQW1DO2lCQUh2Q1E7S0FBZ0IsVUFBQSxrREFBaEJBO0tBQWdCLE9BQUE7SUFBa0I7SUFEN0MsVUFBQTtJQUFBLE9BQUEsdUJBSnlCQTtHQVEwQjtrQ0F0Q2pEVixZQXNCQUUsUUFqQkFELFdBdUJBTTs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7Ozs7Ozs7WUM1Q0FNLFNBQVdDLEtBQWNDO0lBSTNCLEdBSmFELFNBQVVFLE1BQVZGLFFBQUFHLFlBQVVELGNBQVZDO0lBSWIsSUFBSUM7O0tBQzRCLElBQU1DO0tBQVMsT0FBQSwwQkFBVEEsR0FMWEo7SUFLNEI7SUFBcEMsVUFBQSxpQ0FEZkc7c0I7SUFDRSxJQUVKRSxPQUZJO1dBRUpBLE9BQUFBLE9BUFdIO0dBT0M7bUNBUFpKOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDVUY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQURFUTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUdBQztJQUNFQyxVQUNBQyxVQUNBQyxTQUFtQ0MsU0FDcENDLFNBQW1CQztJQUN0QjtLQUFBO0tBQUlDOzJCO1NBUkZSO0lBV0YsYUFDRVM7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLGlCQUFBQTtJQUF1QjtJQUFJLFVBQUEsd0JBTDFCSDtJQUtELGtEQUpFRTtJQUlGLGFBQ0FDO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBb0I7c0I7SUFBNEI7S0FBQSxNQUFBLGlDQU41QkY7S0FNSSxNQUFBLDJCQUFTO0lBQWpDLCtDQUxFQztPQUpBTjtTQVdLUSxhQVhMUjtLQVdpQjtRQVBqQk07UUFPS0U7aUJBQVlEO1NBQUE7U0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7UUFBd0I7OztLQUNqQztPQVhSTjtTQWFLUSxhQWJMUjtLQWFpQjtRQVZqQks7UUFVS0c7aUJBQVlGO1NBQUE7U0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7UUFBd0I7OztLQUNqQztPQWJSTDtTQWVLUSxZQWZMUjtLQWVnQjtRQWJoQkk7UUFhS0k7aUJBQVdIO1NBQUE7U0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7UUFBdUI7OztLQUMvQjtPQWhCMkJKO1NBa0I5QlEsWUFsQjhCUjtLQWtCbkI7UUFoQmhCRztRQWdCS0s7aUJBQVdKO1NBQUE7U0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7UUFBdUI7OztLQUMvQjtJQUNWO0lBRUYsT0FwQklEO0dBb0JTO1lBT1hNLGNBQWVOO0lBRWpCLElBRmlCQTtJQUVqQixPQUFBLGFBRmlCQTtHQUlxQjtZQUVwQ08sYUFBY1gsU0FBeUJZLG1CQUN0Q1YsU0FBbUJDLE1BQXFCVTtJQUU5QixJQUFUQyxTQUFTO2FBQ0xoQixTQUFTaUI7S0FDZixJQURlQyxRQUFBRDtLQUNmO01BQU07T0FBQTtTQUFBOztXQUxpQ0g7V0FLWSxnQ0FEcENJOztPQUViQztrQkFBZ0IsT0FBQSw4QkFIaEJILFFBR0FHO1VBQ2FDO01BQ0osOEJBTFRKLFFBR0FHO01BR1MsV0FSOEJKLFNBUXRCLDZCQU5qQkM7TUFPUyw2QkFQVEE7TUFRUyxJQVBJSyxRQU9KLHdCQUpJRCxTQUhBRixRQUFBRzs7SUFPYztJQUc3QjtLQURFZjtPQW5ERlA7YUEwQ01DLGtCQUpRRSxhQUNiRSxTQUFtQkM7SUFldEIsYUFLT0UsR0FBSyxPQUFMQSxFQUFNOztLQUZBLFdBbkJHTDtLQW9CYztNQUFBLE1BQUEsdUJBbkIzQkU7TUFtQlUsTUFBQTtLQUFBLE9BQUE7SUFBc0M7SUFIakQsVUF2QkFRLGNBbUJFTjtJQVFGLE9BQUE7R0FBWTs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBbUJQZ0IsUUFDZ0JDO1NBQVUsT0FBQSxzQ0FBVkE7UUFBOEM7O2lCQUQ5REQsUUFFZSxPQUZmQSxtQkFFMkI7O2lCQUYzQkE7U0FLSCxhQUFTZjtVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO1NBQW9CO21CQUwxQmU7U0FLTSxzQjtTQUNULGFBQVNmO1VBQUE7VUFBQSxPQUFBLGtDQUFBQSxtQkFBQUE7U0FBa0I7bUJBTnhCZTtTQU1NLHNCO1NBQ1Q7UUFBRTs7aUJBUENBO1NBVUg7Z0JBQUEsOENBVkdBO1NBVUgsOEJBVkdBLG9CQUFBQTtRQVVvRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUEzQmxDLDJCQUFBRTtLLEdBQUFBO1VBQUFDLE1BQUFELFFBQUFFLFFBQUFEOztVQUFBQztLQUN4QyxnQkFBQXRCLFNBQW1CQztNQUVPO09BQUEsTUFBQTtPQUF2QnNCLFlBQVk7T0FDWkM7U0FBZSw0QkFEZkQsdUJBRkh2QjtPQUlHeUIsaUJBQWlCO09BQ2UsUUFBQTtPQUFwQkM7T0FBWkM7T0FDQUM7ZUFDQTlCLGVBREE4Qiw2QkFDaUM7TUFFbkM7T0FERUM7U0FoQ0ZwQjtXQStCRVg7V0FScUN3QjtXQUlyQ0U7V0FIZ0J2QjtXQVVoQiw0Q0FMWXlCO09BUWQ7U0FyQ0FqQjtXQStCRVg7V0FScUN3QjtXQUN4Q3RCO1dBQW1CQztXQWNoQiw4Q0FWQXdCOzs7O3FCQUlBSTs7cUJBRkFEOztxQkFGQUg7Ozs7O2lCQTBCYUs7U0FDVCxhQUFBM0I7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtTQUFtQjtTQUNqQjs7WUFBQTtjQUFXLG9DQUZKMkIsY0EvQndCUjswQztrQkFTckNPO1FBd0J3RTtRQTNCeEVGOzs7O3dCQWdDeUIsU0FBSTtpQkFDaEJHO1NBQ1QsYUFBQTNCO1VBQUE7VUFBQSxPQUFBLGtDQUFBQSxvQkFBQUE7U0FBcUI7U0FDbkI7O1lBQUE7Y0FBVyxvQ0FGSjJCLGNBdkN3QlI7MEM7O1FBeUNtQztRQXBDeEVHOzs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDOUVOOzs7R0FBQTtHQUNBOzs7R0FBQTtHQUNBO0lBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBSUlNLFdBQVdDLEdBQUFBLGlCQUFVO1lBQ3JCQyxhQUFhRCxHQUFBQSxxQkFBVTtZQUN2QkUsYUFBYUYsR0FBSSxnQkFBSkEsYUFBVztZQUV4QkcsS0FBT0MsU0FBd0JDLGVBQWVDLEtBQzdDQyxNQUFzQkMsTUFBdUJDO0lBRWhELElBQW9CLFFBQUEsd0JBQVRDLG1CQUFQQzthQUNBQyxRQUFRQyxRQUFPQztLQUNqQjs7O2dCQURVRDs7c0JBQUFBOzs7Ozs7Ozs7Ozs7O1lBQ05FOzs7O3FCQURNRjs7Y0FBQUE7Ozs7Ozs7V0FDTkU7OztVQUFBQTs7S0FXSixHQVhJQTtVQWNLQyxnQkFkTEQ7OztpQkFETUYsZ0JBQUFBO1FBb0JDO1NBQUEsT0FBQSxnQ0FwQk1DO1NBbUJOLE9BQUE7U0FESDtXQUFBOzs7V0FERiw2Q0FGR0U7OztPQU9ZO1FBQVhDLFdBQVcsV0F6QnlCUixTQUc3Qks7ZUF1Qlgsa0RBRElHOztVQVZOQzs7OztPQUFBQTtTQUVRO29FQWRGTDtLQVBWWixhQUcrQkk7S0ErQnRCLG9CQTVCQUssUUFhTFE7S0FnQko7SUFBRTtJQXBDRm5CLFdBSStCTTtJQW1DeEIsb0NBbkNBRCxTQUF1Q0UsS0FDN0NDLE1BQXNCQyxNQUdyQkk7SUFnQ0osT0FqQ0lEO0dBaUNDO1lBRUhRLFdBQVdDO0lBQ2I7a0JBRVVDLEtBQUlDO0tBRUw7O1FBQUE7c0RBRktBO0tBQ1AsT0FBQSx1REFER0Q7SUFJRTtJQUxWLFdBQUEsd0NBRldEO0lBRVgsT0FBQTtHQU1xRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztrQkFJaERHO0s7Ozs7U0FxR0Q7VUFBQSx1QkFFaUIsaUJBQWdCO1VBRC9CO1lBQUE7dUNBdEdEQSxrQkFBQUE7U0F1R00sT0F6SlhwQjtrQkFrREtvQixrQkFBQUE7O1FBZUQ7U0FBQSx1QkFFWSxrQkFBaUI7U0FEM0I7V0FBQTtzQ0FoQkRBLGtCQUFBQTtRQWlCQyxPQW5FTnBCO2lCQWtES29CLGtCQUFBQTs7OztTQStGRDtVQUFBO3FCQUUyQkw7YUFDdkI7O3FCQUNFLDZDQUZxQkE7WUFFNEI7VUFIckQ7WUFBQTt1Q0FoR0RLLGtCQUFBQTtTQWlHcUIsT0FuSjFCcEI7a0JBa0RLb0Isa0JBQUFBOztRQXNFRDtTQUFBO29CQUUyQkw7WUFDdkI7O29CQUNFLDZDQUZxQkE7V0FFaUM7U0FIMUQ7V0FBQTtzQ0F2RURLLGtCQUFBQTtRQXdFcUIsT0ExSDFCcEI7aUJBa0RLb0Isa0JBQUFBOzs7UUF5R0Q7U0FBQTtvQkFFMkJMO1lBQ3ZCOztvQkFDRSw2Q0FGcUJBO1dBRWdDO1NBSHpEO1dBQUE7c0NBMUdESyxrQkFBQUE7UUEyR3FCLE9BN0oxQnBCO2lCQWtES29CLGtCQUFBQTs7T0FpRUQ7UUFBQTttQkFFT0w7V0FDSDs7bUJBQWdCLDZDQURiQTtVQUM2RDtRQUZsRTtVQUFBO3FDQWxFREssa0JBQUFBO09BbUVDLE9BckhOcEIsS0FrREtvQixrQkFBQUE7OztPQWtDRDtRQUFBO21CQUUyQkw7V0FDdkI7O21CQUNFLDZDQUZxQkE7VUFFdUI7UUFIaEQ7VUFBQTtxQ0FuQ0RLLGtCQUFBQTtPQW9DcUIsT0F0RjFCcEIsS0FrREtvQixrQkFBQUE7Ozs7UUFvRkQ7U0FBQTtvQkFFMkJMO1lBQ3ZCOztvQkFDRSw2Q0FGcUJBO1dBRTZCO1NBSHREO1dBQUE7c0NBckZESyxrQkFBQUE7UUFzRnFCLE9BeEkxQnBCO2lCQWtES29CLGtCQUFBQTs7T0EwRkQ7UUFBQTttQkFFWUw7V0FDUjs7bUJBQXNCLDZDQURkQTtVQUMwRDtRQUZwRTtVQUFBO3FDQTNGREssa0JBQUFBO09BNEZNLE9BOUlYcEIsS0FrREtvQixrQkFBQUE7OztPQWdGRDtRQUFBLGdCQUVZQyxHQUFLLHVCQUFMQSxHQUE0QjtRQUR0QztVQUFBO3FDQWpGREQsa0JBQUFBO09Ba0ZNLE9BcElYcEIsS0FrREtvQixrQkFBQUE7O01BNEVEO09BQUEsZ0JBRVlDLEdBQUssdUJBQUxBLEdBQXVCO09BRGpDO1NBQUE7b0NBN0VERCxrQkFBQUE7TUE4RU0sT0FoSVhwQixLQWtES29CLGtCQUFBQTs7Ozs7O1FBbUJEO1NBRDBCRTtTQUMxQjtvQkFFd0NQO1lBQ3BDO2FBR0ksT0FBQSxnQ0FKZ0NBO2FBR2hDLE9BQUE7YUFGQVEsUUFDRjtZQUlGLHNCQUxJQTtXQUsyQjtTQVBqQztXQUFBOzs7YUFwQkRIO2FBQUFBO2FBa0J5QkU7UUFHUyxPQXZFdkN0QjtpQkFrREtvQixrQkFBQUE7O09BK0dEO1FBRHdCSTtRQUN4QjttQkFLcUNUO1dBQ2pDO1lBR0ssT0FBQSxnQ0FKNEJBO1lBRzVCLE9BQUE7V0FGTCxzQkFDRTtVQUUrQjtRQUxqQzs7V0FBQTtnREFMb0JTO1FBRXRCO1VBQUE7cUNBaEhESixrQkFBQUE7T0FvSCtCLE9BdEtwQ3BCO2dCQWtES29CLGtCQUFBQTs7O09BNkJEO1FBRHFCSztRQUNyQjttQkFFNEJWO1dBQ3hCOzttQkFBcUIsNkNBREdBO1VBQ2lDO1FBRjNEO1VBQUE7OztZQTlCREs7WUFBQUE7WUE0Qm9CSztPQUdFLE9BakYzQnpCLEtBa0RLb0Isa0JBQUFBOztNQU1DOztTQUFBOzs7Ozs7TUFBQSxPQUFBOzs7O09BcURGO1FBRDBCTTtRQUMxQjttQkFFdUNYO1dBQ25DOzttQkFDRSw0Q0FGaUNBO1VBRWU7UUFIcEQ7VUFBQTs7O1lBNURESztZQUFBQTtZQTBEeUJNO09BR1EsT0EvR3RDMUIsS0FrREtvQixrQkFBQUE7O01Bd0NELElBRHNCTyx1QkFDdEIsUUFEc0JBOzs7UUFZUkM7Ozs7O1lBQ2tCLHVCQURsQkE7Ozs7b0JBWlFEOzs7UUFPUEU7Ozs7O1lBQ2tCLHVCQURsQkE7Ozs7TUFGUjtPQUFBLE9BQUE7OztVQURBLElBQVdDLGtCQUFMQztVQUFlLE9BQUEsb0NBQWZBLEtBQUtEO1NBQTJDO09BRHpELE9BQUE7T0FGQUUsT0FDRjtPQWFGO2tCQUV1QmpCO1VBQ25COztrQkFBc0IsNkNBREhBO1NBQ3dDO09BRjdEO1NBQUE7b0NBdkRESyxrQkFBQUE7TUF3RGlCLE9BMUd0QnBCO2VBa0RLb0I7ZUFBQUE7OzttQkF3Q0dZOzs7O01BL0JKO09BRG9CQztPQUNwQix1QkFJWSxrQkFBbUI7T0FEdkI7O1VBQUE7dURBSllBO09BRWxCO1NBQUE7b0NBVkRiLGtCQUFBQTtNQWFDLE9BL0ROcEI7ZUFrREtvQixrQkFBQUE7O1NBeUhnQmM7S0FDakIsY0FJT25CO01BQ0g7O2NBQ0UsNkNBRkNBO0tBRW1EO0tBSHREO01BQUE7O1NBQUEsOENBSmFtQjtNQUVmO1FBQUE7bUNBM0hEZCxrQkFBQUE7S0E4SEMsT0FoTE5wQjtjQWtES29CLGtCQUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBQUFBO1M7O1dBdUlEO1lBQUE7dUJBQ09MO2VBQ0g7O3VCQUFpQiw2Q0FEZEE7Y0FDK0Q7WUFGMUMsT0FBQSxxQ0F2STNCSztXQXdJQyxPQTFMTnBCO29CQWtES29CLGtCQUFBQTs7VUEySUQ7V0FBQTtzQkFDT0w7Y0FDSDtlQUdJLE9BQUEsZ0NBSkRBO2VBR0MsT0FBQTtlQUZBb0I7aUJBQ0Y7Y0FJRix1QkFMSUE7YUFLb0I7V0FQQSxPQUFBLHFDQTNJM0JmO1VBNElDLE9BOUxOcEI7bUJBa0RLb0Isa0JBQUFBOzs7VUFvSkQ7V0FEZWdCO1dBQ2YsdUJBRVksa0JBQWM7V0FEbEI7O2NBQUEsOENBRk9BO1dBQ2EsT0FBQSxxQ0FwSjNCaEI7VUFzSkMsT0F4TU5wQjttQkFrREtvQjttQkFBQUE7Ozs7OzthQXVKY2lCO1NBQ2YscUJBRUksa0JBQWM7U0FEaEI7O1lBQUEscUNBekpEakIsa0JBdUpjaUI7U0FFK0MsT0EzTWxFckM7a0JBa0RLb0I7a0JBQUFBOzs7Ozs7O2lCQUFBQTt1QkFpS0tOO1VBSDJCLFVBRzNCQSx1Q0FBQUE7V0FEVztZQURPQyxTQUVsQkQ7WUFEVyxPQUFBLGtEQURPQztXQUNQLE9BQUE7O1VBR1Q7O2FBQUE7b0VBRkZEO1VBRUUsT0FBQTtTQUEyRDtTQUxqRTtVQUFBLE9BQUE7VUFESixPQUFBLFdBN0pHTSxxQkFBQUE7U0E4SkMsT0FBQTtRQUtpRTs7aUJBbktsRUEsUUFxS2lCaUI7dUJBSVp2QjtVQUYyQixrQkFFM0JBO1dBRDZCLFdBQUE7V0FBQSxPQUFBOztVQUczQjs7YUFBQTtvRUFGRkE7VUFFRSxPQUFBO1NBQTJEO1NBSmpFO1VBQUEsT0FBQTtVQURKO1lBQUE7Y0F0S0dNLHFCQUFBQSx3QkFxS2lCaUI7U0FFaEIsT0FBQTtRQUlpRTs7aUJBM0tsRWpCO3VCQWlMS047VUFGMkIsVUFFM0JBLHdDQUFBQTtXQURxQztZQUFyQkMsU0FDaEJEO1lBRHFDLE9BQUEsa0RBQXJCQztXQUFxQixPQUFBOztVQUduQzs7YUFBQTtvRUFGRkQ7VUFFRSxPQUFBO1NBQTJEO1NBSmpFO1VBQUEsT0FBQTtVQURKLE9BQUEsV0E5S0dNLHFCQUFBQTtTQStLQyxPQUFBO1FBSWlFOztpQkFuTGxFQSxRQXFMa0JnQjt1QkFLYnRCO1VBRjJCLGtCQUUzQkE7V0FENkIsV0FBQTtXQUFBLE9BQUE7O1VBRzNCOzthQUFBO29FQUZGQTtVQUVFLE9BQUE7U0FBMkQ7U0FKakU7VUFBQSxPQUFBO1VBREo7WUFBQTtjQXZMR00scUJBQUFBLHdCQXFMa0JnQjtTQUdqQixPQUFBO1FBSWlFOztpQkE1TGxFaEI7U0FnTUQ7O1lBQUE7Ozs7OztTQUFBLE9BQUE7UUFDdUQ7O2lCQWpNdERBO1NBcU1EOztZQUFBOzs7Ozs7U0FBQSxPQUFBO1FBQ21FOztpQkF0TWxFQSxRQXdNaUJrQixnQkFVWHJCO1NBVFQ7VUFnQkUsT0FBQTtVQUFBOzt1QkFWUXNCO1VBQ0gsS0FFRXRCLEdBRE07d0JBS0lzQjtXQUFMLElBQVlDLGVBQUpDO1dBQVcsT0FBQTs7b0JBQWRGOztvQkFBR0U7O29CQUFJRDtVQUFnRDt3QkFEdkRELEdBQUssT0FBQSw4QkFBTEEsV0FBaUM7VUFEekMsV0FBQTtVQURGLE9BQUEsK0JBSkNBLGVBR0R0QjtTQUtHO2dCQWZRcUI7Ozs7Ozs7U0FFbEI7O1lBQUE7OztjQTFNQ2xCO2NBQUFBOzs7U0F5TkQsT0EzUUpwQjtrQkFrREtvQixrQkFBQUE7UUF5TitDOztpQkF6Ti9DQTtTQTJOZ0MsV0FBQSxXQTNOaENBLHFCQUFBQSxRQUFBQTtTQTJOZ0MsT0FBQTtRQUFnQzs7aUJBM05oRUEsUUE0TmUsU0FBSTs7aUJBNU5uQkE7U0ErTkg7VUFJSyxPQUFBO1VBREgsT0FBQTtVQUZBO1lBQUE7d0NBaE9DQSxrQkFBQUE7U0FrT0QsT0FwUkpwQjtrQkFrREtvQixrQkFBQUE7UUFtT29EOztpQkFuT3BEQSxRQXFPY3NCLEtBQUlDLElBQUdDO1NBQ3hCO1VBS0UsT0FBQTtVQURNOzthQUFBLHNEQUxnQkE7VUFFdEI7WUFBQTs7O2NBdk9DeEI7Y0FBQUE7Y0FxT2tCdUI7Y0FBSkQ7U0FNZixPQTdSSjFDO2tCQWtES29CO2tCQUFBQTs7Ozs7UUEyTytDOztpQkEzTy9DQSxRQTZPV3VCO1NBQ2Q7VUFJSztZQUFBOzs7O1VBREgsT0FBQTtVQUZBO1lBQUE7dUNBL09DdkIsa0JBQUFBLGtCQTZPV3VCO1NBSVosT0FuU0ozQztrQkFrREtvQixrQkFBQUE7UUFtUDRCOztpQkFuUDVCQSxRQXFQY3VCLElBQUdDO1NBQ3BCO1VBSUUsT0FBQTtVQURNOzthQUFBLHNEQUpZQTtVQUVsQjtZQUFBO3VDQXZQQ3hCLGtCQUFBQSxrQkFxUGN1QjtTQUtmLE9BNVNKM0M7a0JBa0RLb0I7a0JBQUFBOzs7OztRQTBQK0M7O2lCQTFQL0NBLFFBNFBZc0IsS0FBSUM7U0FDbkI7VUFJRSxPQUFBO1VBSEE7WUFBQTs7O2NBOVBDdkI7Y0FBQUE7Y0E0UGdCdUI7Y0FBSkQ7U0FLYixPQW5USjFDO2tCQWtES29CO2tCQUFBQTs7Ozs7UUFpUStDOztpQkFqUS9DQSxRQW1RY3VCO1NBQ2pCO1VBR0UsT0FBQTtVQUZBO1lBQUE7dUNBclFDdkIsa0JBQUFBLGtCQW1RY3VCO1NBSWYsT0F6VEozQztrQkFrREtvQjtrQkFBQUE7Ozs7O1FBdVErQzs7aUJBdlEvQ0EsUUF5UW9CeUIsU0FBUUM7U0FDL0I7VUFJRSxPQUFBO1VBRDhCLE9BQUEsa0NBSkRBO1VBSXZCLFdBQUE7VUFGTjtZQUFBOzs7Y0EzUUMxQjtjQUFBQTtjQXlRb0J5QjtTQUtyQixPQWhVSjdDO2tCQWtES29CO2tCQUFBQTs7Ozs7UUE4UStDOztpQkE5US9DQSxRQWdSMkJmO1NBQzlCLGNBRU8wQztVQUNHLElBRUpDLE1BRkksb0NBREhEOzJCQUdEQyxLQURTO1VBRVQsTUFBQTt1RUFEQUE7O1NBRWtFO1NBTnRFOztZQUFBO3VDQWxSQzVCLGtCQUFBQTtTQW1SRCxPQXJVSnBCO2tCQWtES29CO2tCQUFBQTs7O3NCQWdSMkJmOztRQVEyQzs7aUJBeFJ0RWUsUUEwUnVCNkI7U0FDMUI7VUFDMEIsT0FBQSxrQ0FGQUE7VUFFeEIsT0FBQTtTQUFBLE9BQUEsV0E1UkM3QixxQkFBQUE7UUE0Um1EOztpQkE1Um5EQSxRQThSa0I4QjtTQUNyQixjQVNPSCxHQUFLLE9BQUEsb0NBQUxBLEdBQStCO1NBQXBDLElBQUE7WUFWbUJHO1VBTWY7V0FIR0MsYUFIWUQ7V0FNZixPQUFBLCtDQUhHQzs7YUFDTDs7O2VBbFNEL0I7ZUFBQUE7Ozs7O2FBc1NDO3dDQXRTREEsa0JBQUFBO1NBd1NELE9BMVZKcEI7a0JBa0RLb0Isa0JBQUFBO1FBd1NvQzs7aUJBeFNwQ0EsUUEwU3dCOEI7U0FDM0IsY0FRT0gsR0FBSyxPQUFMQSxFQUFNO1NBQVgsSUFBQTtZQVR5Qkc7VUFNckI7V0FIR0MsYUFIa0JEO1dBTXJCLE9BQUEsK0NBSEdDOzthQUNMOzs7ZUE5U0QvQjtlQUFBQTs7O3FCQWlUUyxvQ0FqVFRBO1NBbVRELE9BcldKcEI7a0JBa0RLb0Isa0JBQUFBO1FBbVRXOztpQkFuVFhBLFFBcVQyQmdDLEtBQUtDLEtBQUtDLFFBQVFDLE9BQU1MO1NBQ3RELGNBc0JPSDtVQUNxQyxXQUFBLG9DQURyQ0E7VUFDcUMsT0FBQTtTQUE0QjtTQUR0RSxJQUFBO1lBdkJvREc7VUFLaEM7V0FEVkMsYUFKMENEO1dBS2hDLE9BQUEsK0NBRFZDO1dBRkw5QixJQUdBOztjQUhBQTtZQUY0QmdDO1VBcUJSO1dBQWZHLElBckJ1Qkg7V0FxQlIsT0FBQSx1QkFBZkc7a0JBQUs7OztZQXJCYUo7VUFrQkg7V0FBZkssTUFsQmtCTDtXQWtCSCxPQUFBLHVCQUFmSztrQkFBSzs7O1lBbEJ1Qkg7c0JBQUFBOztXQVllO1lBQXpCSTtZQUF5QixPQUFBLHVCQUF6QkE7bUJBQU07O1dBQ2lCO1lBQXhCQztZQUF3QixPQUFBLHVCQUF4QkE7bUJBQU07Ozs7O1NBTGhDOztZQUFBOzs7Y0E3VEF2QztjQUFBQTtjQXFUNkNtQzs7Y0FFekNsQzs7O1NBcUJMLE9BOVhKckI7a0JBa0RLb0Isa0JBQUFBO1FBNlVzRTs7aUJBN1V0RUE7U0FnVkgsY0FFK0IyQjtVQUV6QixXQUFBLG9DQUZ5QkE7VUFFekIsT0FBQTs7OztTQUE0QjtTQUhoQzs7WUFBQTt1Q0FqVkMzQixrQkFBQUE7U0FrVnVCLE9BcFk1QnBCO2tCQWtES29CLGtCQUFBQTtRQW9WZ0M7O2lCQXBWaENBLFFBc1ZnQndDO1NBQ25CLGNBUU9iO1VBRUQsV0FBQSxvQ0FGQ0E7VUFFRCxPQUFBOzs7O1NBQTRCO1NBRmhDLElBQUE7WUFUaUJhO3NCQUFBQTs7V0FLNEI7WUFBakJKO1lBQWlCLE9BQUEsdUJBQWpCQTttQkFBTTs7V0FDUztZQUFoQkM7WUFBZ0IsT0FBQSx1QkFBaEJBO21CQUFNOzs7OztTQUpqQzs7WUFBQTs7O2NBeFZDckM7Y0FBQUE7O1NBK1ZELE9BalpKcEI7a0JBa0RLb0Isa0JBQUFBO1FBaVdnQzs7aUJBaldoQ0EsUUFtV29Cd0M7U0FDdkIsY0FTT2I7VUFFRCxXQUFBLG9DQUZDQTtVQUVELE9BQUE7Ozs7U0FBNEI7U0FGaEMsSUFBQTtZQVZxQmE7c0JBQUFBOztXQU13QjtZQUFqQko7WUFBaUIsT0FBQSx1QkFBakJBO21CQUFNOztXQUNTO1lBQWhCQztZQUFnQixPQUFBLHVCQUFoQkE7bUJBQU07Ozs7O1NBTGpDOztZQUFBOzs7Y0FyV0NyQztjQUFBQTs7U0E2V0QsT0EvWkpwQjtrQkFrREtvQixrQkFBQUE7UUErV2dDOztpQkEvV2hDQSxRQWlYNkJ5QzthQUFXQyxpQkFBVUM7U0FDckQsY0FHaURoQjtVQUUzQyxXQUFBLG9DQUYyQ0E7VUFFM0MsT0FBQTs7OztTQUE0QjtTQUpoQzs7WUFBQTs7O2NBblhDM0I7Y0FBQUE7Y0FpWDZCeUM7Y0FBV0M7Y0FBVUM7U0FJVCxPQXZhOUMvRDtrQkFrREtvQixrQkFBQUE7OztpQkFBQUEsUUF5WDZCOEI7U0FDaEMsY0FTT0g7VUFFRCxXQUFBLG9DQUZDQTtVQUVELE9BQUE7U0FBNEI7U0FGaEMsSUFBQTtZQVY4Qkc7VUFPMUI7V0FKR0MsYUFIdUJEO1dBTzFCLE9BQUEsK0NBSkdDOzthQUNMOzs7ZUE3WEQvQjtlQUFBQTs7O3FCQWlZUyxvQ0FqWVRBO1NBbVlELE9BcmJKcEI7a0JBa0RLb0Isa0JBQUFBO1FBcVlnQzs7aUJBclloQ0E7U0F3WUgsY0FFWTJCO1VBQ3VCLFdBQUEsb0NBRHZCQTtVQUN1QixPQUFBO1NBQTRCO1NBRjdEOztZQUFBO3VDQXpZQzNCLGtCQUFBQTtTQTBZSSxPQTViVHBCO2tCQWtES29CLGtCQUFBQTtRQTJZNkQ7O2lCQTNZN0RBO1NBOFlILGNBRVkyQjtVQUN3QixXQUFBLG9DQUR4QkE7VUFDd0IsT0FBQTtTQUE0QjtTQUY5RDs7WUFBQTt1Q0EvWUMzQixrQkFBQUE7U0FnWkksT0FsY1RwQjtrQkFrREtvQixrQkFBQUE7UUFpWjhEOztpQkFqWjlEQTtTQW9aSCxjQUcyQjJCO1VBRXJCLFdBQUEsb0NBRnFCQTtVQUVyQixPQUFBO1NBQTRCO1NBSmhDOztZQUFBO3VDQXJaQzNCLGtCQUFBQTtTQXVabUIsT0F6Y3hCcEI7a0JBa0RLb0Isa0JBQUFBO1FBeVpnQzs7aUJBelpoQ0E7U0E0WkgsY0FFWTJCO1VBQ3dCLFdBQUEsb0NBRHhCQTtVQUN3QixPQUFBO1NBQTRCO1NBRjlEOztZQUFBO3VDQTdaQzNCLGtCQUFBQTtTQThaSSxPQWhkVHBCO2tCQWtES29CLGtCQUFBQTtRQStaOEQ7O2lCQS9aOURBLFFBaWF5QjRDLGFBQVlDO1NBQ3hDLEdBRDRCRDtjQUluQkUsSUFKbUJGO2FBQVlDO1dBVWxDO1lBSldFLElBTnVCRjtZQVVsQyxPQUFBLCtDQUpXRTtZQUdYLE9BQUE7WUFEQSxPQUFBLCtDQUpHRDtZQUlILE9BQUE7bUJBREY7O1dBSGtDO1lBQUEsT0FBQSwrQ0FBN0JBO21CQUFXO2NBSGhCRTs7aUJBRG9DSDtVQUtEO1dBQXhCSSxNQUx5Qko7V0FLRCxPQUFBLCtDQUF4Qkk7V0FKWEQsVUFJZ0I7O2NBSmhCQTtTQVdKLGNBRW1DckI7VUFDUCxXQUFBLG9DQURPQTtVQUNQLE9BQUE7U0FBNEI7U0FGdEQ7O1lBQUE7OztjQTlhQzNCO2NBQUFBO2NBa2FDZ0Q7U0FhMEIsT0FqZWhDcEU7a0JBa0RLb0Isa0JBQUFBO1FBZ2JzRDs7aUJBaGJ0REEsUUFrYmlCLE9BdGV0QnJCLGFBb0RLcUIsa0JBa2IyQzs7aUJBbGIzQ0E7UzthQW9ieUNrRCxpQkFBWkM7U0FHaEMsT0FBQTs7O2lCQXZiR25EO1NBMmJILE9BQUE7UUFBdUQ7O2lCQTNicERBLFFBNmI0QixTQUFFOztpQkE3YjlCQSxRQThidUIsU0FBSzs7aUJBOWI1QkEsUUErYm9ELFNBQUk7O2lCQS9ieERBLFFBc2NILDJDQUFpQjs7SUF4Y1A7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXBEWnhCO09BQ0FFO09BQ0FDO09BRUFDO09Bc0NBZ0I7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHQ2hEa0I7Ozs7Ozs7Ozs7SUFBbEJ3RDtJQUNBQzs7Ozs7WUFDQUMscUJBQTRCLE9BRDVCRCxhQUN1QztZQUN2Q0UsY0FBZUMsYUFGZkgsZUFFZUcsc0JBQW9EO0dBQ2pELElBQWxCQyx1Q0FDQUM7WUFFQUM7aUJBTUtDO0tBQ0g7eUJBSWlCLFdBQUc7S0FEZDs7Z0M7VUFKSEE7VUFUTEg7bUJBYVNJO1dBQUE7V0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7VUFBVztLQVpwQkgscUJBV007O0tBS0osa0I7S0FDd0Q7TUFBQTtNQUExQztnQztVQVRYRTtVQWJMUjttQkFzQmlCUztXQUFBO1dBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO1VBQVc7S0FyQjVCUixlQXFCSTs7SUFBa0U7O0tBakJ0RUs7O0tBSkFMLGVBV2dCOztJQUFjO2lCQUg5QlE7S0FBa0I7S0FBQSxPQUFBLGtDQUFsQkEsa0JBQUFBO0lBQThCO0lBQTlCOztLQUFBO0lBSUEsT0FBQTtHQVN1RTtZQUV2RUM7SUFDTyxJQUFMQyxJQUFLLHVCQXBCUEw7aUJBc0JtREU7S0FDL0MsYUFBQUM7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtLQUFXO0tBQWlCLFVBQUEsd0JBSDlCRTs7Yzs7O2NBRWlESCxJQXZCbkRIO0lBd0I4QztpQkFEL0JJO0tBQWtCO0tBQUEsT0FBQSxrQ0FBbEJBLGtCQUFBQTtJQUE4QjtJQUE5Qjs7S0FBQTtJQUFmO2lCQUdpREQ7S0FDL0MsYUFBQUM7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtLQUFXO0tBQWlCLFVBQUEsd0JBOUI5QlI7O2M7OztjQTZCaURPLElBOUJqRFI7SUErQnFEO2lCQUR4Q1M7S0FBa0I7S0FBQSxPQUFBLGtDQUFsQkEsa0JBQUFBO0lBQThCO0lBQTlCOztLQUFBO0lBQStCLE9BQUE7R0FDVTtZQUV0REcsZUFBZ0JDO0lBQ2tCLFVBQUEsdUJBN0JsQ1AscUJBNEJnQk87SUE1QmhCUCxxQkE2QjBCOztJQUNuQixJQUFMSyxJQUFLLHVCQTlCUEw7SUErQkYsYUFDRUc7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUEyQztJQUFJLFVBQUEsd0JBQVUsdUJBRnZERTtpQkFFRkY7S0FBMkI7S0FBQSxPQUFBLGtDQUEzQkEsaUJBQUFBO0lBQWdDO2lCQUFoQ0E7S0FBb0I7S0FBQSxPQUFBLGtDQUFwQkEscUJBQUFBO0lBQXdCO0lBQXhCOztLQUFBO0tBQUE7SUFBQTtJQUVGO0dBQUU7R0FFbUI7SUFBQSxRQUFBO0lBQVpLO0lBQVBDOztHQUNpQixJQUFqQkM7WUFFQUM7SUFyQ0FWO0lBdUNlO0tBQWJXLGFBQWE7S0FDYkgsUUFBUTtJQUNaLEdBRklHO1NBSUFqQixZQUpBaUI7S0EzQ0ZmLGNBK0NFRjs7O0tBQ007SUFFRCxXQVpBYSxjQVlVLHdCQU5mQztJQU9KO0dBQWU7WUFFYkksWUFBdUIsZUFBZTs7OztPQXREdENqQjtPQUNBQztPQThCQVM7T0FUQUY7T0FpQkFLO09BQU9EO09BR1BHO09BWUFFO09BZEFIOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJDakNLSSxRQStEZ0JDO1NBQVUsT0FBQSxzQ0FBVkE7UUFBOEM7O2lCQS9EOURELFFBaUV3QkU7U0FDM0IsY0FBQUM7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtTQUF1QjtvQkFsRXBCSDs7a0I7Ozt3QkFpRXdCRTtRQUNTOztpQkFsRWpDRjtLQUtILGNBQ0VHO01BQUE7TUFBQSxPQUFBLGtDQUFBQSxrQkFBQUE7S0FBdUI7bUJBQ0pDO01BQ087T0FBaEJDOztXQURTRDtvQkFDT0Q7WUFBbUI7WUFBQSxPQUFBLGtDQUFuQkEsb0JBQUFBO1dBQXVCO01BQ2xDLG1DQURMRTtNQUVLO3VDQVZkTCxpQkFRU0s7TUFHSjtLQUFRO0tBSlosSUFBQSxPQUFBLDhDQVBETDtLQU1EO0tBT0YsY0FDRUc7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtLQUF5QjttQkFDTkM7TUFDTztPQUFoQkM7O1dBRFNEO29CQUNPRDtZQUFtQjtZQUFBLE9BQUEsa0NBQW5CQSxvQkFBQUE7V0FBdUI7TUFDbEMsbUNBRExFO01BRUs7eUNBbEJkTCxpQkFnQlNLO01BR0o7S0FBUTtLQUpaLElBQUEsT0FBQSw4Q0FmREw7S0FjRDtLQU9GLGNBQ0VHO01BQUE7TUFBQSxPQUFBLGtDQUFBQSxrQkFBQUE7S0FBeUI7bUJBQ05DO01BQ087T0FBaEJDOztXQURTRDtvQkFDT0Q7WUFBbUI7WUFBQSxPQUFBLGtDQUFuQkEsb0JBQUFBO1dBQXVCO01BQ2xDLG1DQURMRTtNQUVLO3lDQTFCZEwsaUJBd0JTSztNQUdKO0tBQVE7S0FKWixJQUFBLE9BQUEsOENBdkJETDtLQXNCRDtLQU9GLGNBQ0VHO01BQUE7TUFBQSxPQUFBLGtDQUFBQSxrQkFBQUE7S0FBc0I7bUJBRVpDO01BQ3lCO09BQXpCQzs7V0FEQUQ7b0JBQ3lCRDtZQUFtQjtZQUFBLE9BQUEsa0NBQW5CQSxvQkFBQUE7V0FBdUI7TUFDM0MsV0FsQ2RILG9CQUFBQSxRQWlDU0s7TUFFSjtLQUFRO0tBSlosSUFBQSxPQUFBLDhDQS9CREw7S0E4QkQ7S0FPRixjQUNFRztNQUFBO01BQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0tBQW9COzBCQXRDbkJILHdCQXlDSyx5QkFBUTtLQUZaLElBQUEsT0FBQSw4Q0F2Q0RBO0tBc0NEO0tBS0YsY0FDRUc7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtLQUFxQjswQkE1Q3BCSCx3QkErQ0sseUJBQVE7S0FGWixJQUFBLE9BQUEsOENBN0NEQTtLQTRDRDtLQUtGLGNBQ0VHO01BQUE7TUFBQSxPQUFBLGtDQUFBQSxvQkFBQUE7S0FBdUI7MEJBbER0Qkgsd0JBcURLLHlCQUFRO0tBRlosSUFBQSxPQUFBLDhDQW5EREE7S0FrREQ7S0FLRixjQUNFRztNQUFBO01BQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0tBQXVCOzBCQXhEdEJILHdCQTJESyx5QkFBUTtLQUZaLElBQUEsT0FBQSw4Q0F6RERBO0tBd0REO0tBS0Y7SUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpQkE3RENBLFFBOEZpQk0sZ0JBQWVDO3VCQUVLQztVQUNoQztXQUFJQzthQUNGO2VBbEdQVCxvQkFBQUEsUUE4RmlCTSxnQkFFb0JFLEtBRkxEO1dBTXZCRyxPQUFPLFdBcEdoQlYsb0JBQUFBLFFBZ0dxQ1E7d0JBUVpHO1dBeEd6Qlg7O1dBMEcwQixXQUFBLGtEQUZEVztXQUVDLE9BQUE7VUFBcUI7O3lCQU9kQTtZQWpIakNYOztZQW1Ia0MsV0FBQSxrREFGRFc7WUFFQyxPQUFBO1dBQXFCO3lCQUx6QkM7WUE5RzlCWixrQkE4RzhCWTs7WUFFSSxXQUFBO1lBQUEsT0FBQTtXQUFtQjtXQUhsQztZQUFBLE9BQUE7WUFESixPQUFBLFdBNUdmWixvQkFBQUE7V0E2R21CLE9BQUE7VUFNcUM7VUFaN0M7V0FBQSxPQUFBO1dBRkZhLFdBQ0YsdUJBRkVIO1VBaUJKLHFCQUFtRCxPQWhCL0NHLFNBZ0J1RDtVQUFsRCxXQUFBO1VBQUEsT0FBQSx1QkFwQkxKO1NBb0J3RDtTQXJCaEU7VUFBQSxPQUFBO1VBREosT0FBQSxXQS9GR1Qsb0JBQUFBO1NBZ0dDLE9BQUE7UUFxQmlFOztpQkFySGxFQSxRQXVINkJjLFVBQVNDO1NBQ3pDLFVBeEhHZjs7VUF5SEQsSUFBU0c7VUFBTSxPQUFBLDBDQUZlVyxVQUFTQyxLQUU5Qlo7U0FBd0M7U0FEbkQsVUFBQTs0QjtTQUFBO1VBQUE7WUFBQTtjQUdHO1VBSEg7WUFBQSxXQUlHO1NBSkgsT0FBQTtRQUthOztpQkE3SFZILFFBK0hlLE9BL0hmQSxnQkErSHlCOztpQkEvSHpCQTtTQWtJSCxhQUFTRztVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO1NBQXFCO21CQWxJM0JIO1NBa0lNLHNCO1NBQ1QsYUFBQUc7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtTQUFzQjttQkFuSW5CSDtxQztRQW1JbUI7O2lCQW5JbkJBO1NBc0lILFVBQUEsV0F0SUdBLG9CQUFBQTtTQXNJSDs7O1VBQ0c7aUJBQUEsMENBdklBQTtVQXVJQSw0QkF2SUFBLG9CQUFBQTs7O1NBc0lIO1FBRTBCOztJQS9JbEI7S0FDTTtNQUFkZ0IsY0FBYztNQUNkQyxlQUFlO01BQ2ZDLGdCQUFnQjtNQUNoQkMsaUJBQWlCO01BQ2pCQyxnQkFBZ0I7TUFDZ0IsUUFBQTtNQUFwQkM7TUFBWkM7O3VCQUFZRDs7dUJBRFpEOzt1QkFEQUQ7O3VCQURBRDs7dUJBREFEOzt1QkFEQUQ7O3VCQU9lOzs7Ozs7Ozt1QkF1RVUsU0FBSTtnQkFDaEJkO1FBQ0E7a0NBQWEsd0JBRGJBOztpQjs7O2lCQS9FYmM7aUJBK0VhZDswQkFFVEM7a0JBQUE7a0JBQUEsT0FBQTtrREFBQUEsb0JBQUFBO2lCQUF3QjtPQUFhO09BaEZ6Q2M7Ozs7Z0JBcUZhZjtRQUNBO2tDQUFhLHdCQURiQTs7aUI7OztpQkFwRmJnQjtpQkFvRmFoQjswQkFFVEM7a0JBQUE7a0JBQUEsT0FBQTtrREFBQUEsb0JBQUFBO2lCQUEwQjtPQUFhO09BckYzQ2dCOzs7O2dCQTBGYWpCO1FBQ0E7a0NBQWEsd0JBRGJBOztpQjs7O2lCQXpGYmtCO2lCQXlGYWxCOzBCQUVUQztrQkFBQTtrQkFBQSxPQUFBO2tEQUFBQSxvQkFBQUE7aUJBQTBCO09BQWE7T0ExRjNDbUI7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ0NGQztJQUE4QjtRQUd2QkM7SUFBVSxPQUFWQTtHQUFzQjtZQUU3QkM7SUFBMkI7OzsyQkFHU0MsaUJBQVUsT0FBVkE7UUFDREM7SUFBUyxPQUFUQTtHQUFnQjtZQUVuREMsVUFHQUM7SUFIb0MsMEJBR3BDQSxzQkFEYzs4QkFDZEEsdUJBRmU7SUFHTztZQUFBLHdCQUFXLG9DQURqQ0E7SUFDUztJQUNULFNBQUlDLFdBQVdEO0tBQ2IsSUFBSUUsdUNBRFNGO0tBRWIsT0FESUU7O01BQ2EsVUFBQSx3QkFGSkYsS0FDVEU7T0FFRjtPQUFBLE9BQUEsOEJBSFdGLFFBQ1RFOzs7S0FJRixPQUxXRjtJQUtSO0lBRVAsU0FBSUcsWUFBWU47S0FDZDtNQUFJTyxVQUNGLG9DQUZZUCxTQUFBQSxTQUFBQTtNQU1DO1FBQUEsd0JBQVcsb0NBTHRCTztLQUtGO0tBRUYsT0FmRUgsV0FRRUc7SUFPYztJQUViLFlBQUEsK0JBbkJQSjtnQkFvQlU7UUFDSEs7SUFDTCxPQURLQTs7T0FHa0M7UUFBMUJSLE9BSFJRO1FBR2tDLE9BZnJDRixZQWVXTjtRQUZUUyxlQUVzQjs7O09BQ2dCO1FBQTVCQyxVQUpURjtRQUlxQyxPQWhCeENGLFlBZ0JZSTtRQUhWRCxlQUd3Qjs7OztRQUNmRSxTQUxSSDtlQUtRRztRQUpURjtrQkFPVSxpQ0FIREU7O0lBUWI7WUFiS0g7O1lBaUJZSSxTQWpCWkosa0JBaUJZSTs7WUFDQ0MsVUFsQmJMLGtCQWtCYUs7b0JBQ0RDLFNBbkJaTixrQkFtQllNOztLQUpiLElBQUEsT0FBQSw4Q0FGQUM7Ozs7O1lBYkNQOztZQXNCVVEsU0F0QlZSLGtCQXNCVVE7O1lBQ0NDLFFBdkJYVCxrQkF1QldTO29CQUNEQyxPQXhCVlYsa0JBd0JVVTs7U0FYWEg7O0lBYUosbUJBYklBLE9BWkFOO0dBeUI4QjtHQWxEQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tCQTJEL0JVO0tBRUgsY0FDRUM7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtLQUF1QjttQkFFYkM7TUFDeUI7T0FBekJDOztXQURBRDtvQkFDeUJEO1lBQW1CO1lBQUEsT0FBQSxrQ0FBbkJBLG9CQUFBQTtXQUF1QjtNQUMzQzt1Q0FQZEQsa0JBTVNHO01BRUo7S0FBUTtLQUpaO01BQUEsT0FBQTthQUpESDtLQUdEO0tBT0YsY0FDRUM7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtLQUF5QjttQkFFZkM7TUFDeUI7T0FBekJDOztXQURBRDtvQkFDeUJEO1lBQW1CO1lBQUEsT0FBQSxrQ0FBbkJBLG9CQUFBQTtXQUF1QjtNQUMzQzt5Q0FmZEQsa0JBY1NHO01BRUo7S0FBUTtLQUpaO01BQUEsT0FBQTthQVpESDtLQVdEO0tBT0YsY0FDRUM7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtLQUF5QjttQkFFZkM7TUFDeUI7T0FBekJDOztXQURBRDtvQkFDeUJEO1lBQW1CO1lBQUEsT0FBQSxrQ0FBbkJBLG9CQUFBQTtXQUF1QjtNQUMzQzt5Q0F2QmRELGtCQXNCU0c7TUFFSjtLQUFRO0tBSlo7TUFBQSxPQUFBO2FBcEJESDtLQW1CRDtLQU9GO0lBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUJBMUJDQSxRQTREZSxTQUFJOztpQkE1RG5CQTtTQStESCxjQUFTQztVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO1NBQXNCO29CQS9ENUJEO1NBK0RNLHNCO1NBQ1Q7UUFBRTs7aUJBaEVDQSxRQWtFaUIsU0FBSTs7aUJBbEVyQkEsUUFxRWlCSSxnQkFBZUM7dUJBRUtDO1VBQ2hDO1dBQUlDO2FBQ0Y7ZUF6RVBQLHFCQUFBQSxRQXFFaUJJLGdCQUVvQkUsS0FGTEQ7V0FNdkJHLE9BQU8sV0EzRWhCUixxQkFBQUEsUUF1RXFDTTt3QkFRWkc7V0EvRXpCVDs7V0FpRjBCLFdBQUEsa0RBRkRTO1dBRUMsT0FBQTtVQUFxQjs7eUJBT2RBO1lBeEZqQ1Q7O1lBMEZrQyxXQUFBLGtEQUZEUztZQUVDLE9BQUE7V0FBcUI7eUJBTHpCQztZQXJGOUJWLG1CQXFGOEJVOztZQUVJLFdBQUE7WUFBQSxPQUFBO1dBQW1CO1dBSGxDO1lBQUEsT0FBQTtZQURKLE9BQUEsV0FuRmZWLHFCQUFBQTtXQW9GbUIsT0FBQTtVQU1xQztVQVo3QztXQUFBLE9BQUE7V0FGRlcsV0FDRix1QkFGRUg7VUFpQkoscUJBQW1ELE9BaEIvQ0csU0FnQnVEO1VBQWxELFdBQUE7VUFBQSxPQUFBLHVCQXBCTEo7U0FvQndEO1NBckJoRTtVQUFBLE9BQUE7VUFESixPQUFBLFdBdEVHUCxxQkFBQUE7U0F1RUMsT0FBQTtRQXFCaUU7O2lCQTVGbEVBLFFBOEY2QlksVUFBU0M7U0FDekMsV0EvRkdiOztVQWdHRCxJQUFTQztVQUFNLE9BQUEsMENBRmVXLFVBQVNDLEtBRTlCWjtTQUF3QztTQURuRCxXQUFBOzZCO1NBQUE7VUFBQTtZQUFBO2NBR0c7VUFISDtZQUFBO2NBSUc7U0FKSCxPQUFBO1FBS2E7O0lBM0dKO0tBQ0s7TUFBZGEsY0FBYztNQUNkQyxlQUFlO01BQ2ZDLGdCQUFnQjtNQUNoQkMsaUJBQWlCO01BQ2pCQyxnQkFBZ0I7TUFDZ0IsT0FBQTs7Ozs7O3NCQURoQ0E7O3NCQURBRDs7c0JBREFEOztzQkFEQUQ7O3NCQURBRDs7Ozs7Ozs7Ozs7Ozs7bUJBb0NTSyxlQUN5QixXQUFHOzttQkFENUJBLFFBRVcsaUNBQTRCOzttQkFGdkNBLFFBSVFDLEtBQUtDO1dBQ2Y7V0FHSTs7Y0FBQTtnQkFBVyxvQ0FKQUE7V0FHYjtXQUdGO1VBQWU7Ozs2Qjs7Ozs7Ozs7O3VCQU1HLFNBQUk7Z0JBQ2hCQztRQUFnQixnQztpQkFyRDdCUjtpQkFxRGFROzBCQUFnQnJCO2tCQUFBO2tCQUFBLE9BQUE7a0RBQUFBLG1CQUFBQTtpQkFBd0I7T0FBYTtPQXBEbEVjOzs7O2dCQXlEYU87UUFBZ0I7aUI7OztpQkF4RDdCTjtpQkF3RGFNOzBCQUFnQnJCO2tCQUFBO2tCQUFBLE9BQUE7a0RBQUFBLG1CQUFBQTtpQkFBMEI7T0FBYTtPQXZEcEVnQjs7OztnQkE0RGFLO1FBQWdCO2lCOzs7aUJBM0Q3Qko7aUJBMkRhSTswQkFBZ0JyQjtrQkFBQTtrQkFBQSxPQUFBO2tEQUFBQSxvQkFBQUE7aUJBQTBCO09BQWE7Ozs7Ozs7O0dBK0N4RTtJQUFBLFFBQUE7SUFEU3NCO0lBQVBDO1lBSUFDLGVBQWdCQyxRQUFPQztJQUNuQixVQUFBLHdCQUxKSDs7O01BV1M7TUFDbUI7T0FBQSxNQUFBO09BQWpCLE1BQUE7TUFBQSxPQUFBOztLQUxGO0tBRVU7TUFBQSxNQUFBO01BQWpCLE1BQUE7S0FBQSxPQUFBOztzQ0FpQ081Qjs7S0E1QmtCO01BRFNaO01BQ2hDNEMsY0FBdUIsb0NBRFM1QztNQUloQztRQUFBO1VBQVcsb0NBSFg0QztLQUVGO0tBR0Y7O2lCQUVRQztTQUNSO2FBQUlDLDBCQURJRDtTQUlSLEtBSElDO1VBZUE7V0FERUMsWUFDRixvQ0FoQklGLFVBUjRCN0M7V0EyQnZCLE1BQUEsa0RBSlArQztVQUlPLE9BQUE7O1NBZEY7U0FDSztVQUFWQyxVQUFVLDBDQWRvQmhELEtBVGIyQztTQXdCckI7VUFNbUI7aUJBQUEsa0RBUGZLO1VBT2UsT0FBQTtTQUFrRDtTQURqRSxVQUFBO1lBN0JVTjs7OzthQXlCWDtzQ0FGQ007ZUFBQUE7bUJBdkJpQkw7OztVQTRCUDtXQUFBLE1BQUE7aUJBQVg7U0FDQyxPQUFBO1FBUUw7TUF0QkQ7UUFBQTtrRUFMSUM7S0FPQSxPQUFBOztJQXNCa0I7S0FEUzlDO0tBQ1Q7T0FBQTtTQUFXLDRDQURGQTtJQUN0QjtJQUNUO0tBQ3lCO01BQWxCbUQ7UUFBa0Isd0NBSE1uRCxRQUFBQTtLQUk1QjtLQUFHO09BQUE7U0FBSCx1QkFESW1EO1NBQUFBO01BRU87TUFDQTtNQUNFO09BQUE7U0FBQSxrREFKVEE7YUFJRjs7O01BRVM7TUFFUDtPQURFRixZQUNGLG9DQVhFbkM7T0FhTyxNQUFBLGtEQUhQbUM7YUFHSjs7S0FOQTs7Ozs7S0FReUI7TUFBaEI5QjtNQUFnQixNQUFBLGtEQUFoQkE7S0FBZ0IsT0FBQTs7R0FBZ0M7WUFFOURpQyxTQUFTQztJQUNTLElBQWhCQyxnQkFBZ0Isd0JBNURsQlo7SUE4REEsT0FBQSxXQTlET0Qsa0JBMkRFWSxTQUNQQztHQUV3RTtZQUUxRUMsWUFBYTlCLE1BQU0rQjtJQUNmLFlBbk9KdkQsVUFrT21CdUQ7O0tBSWpCLElBREVQLFlBQ0Ysb0NBSmlCTztLQU1uQixPQUFBLGtEQUhJUDs7SUFLZ0IsSUFEZkksb0JBQ0RDLGdCQUFnQix3QkF4RXBCWjtXQTBFUyw0QkFISlcsU0FDREM7S0FHQTtPQTNFR2Isa0JBd0VIYSxzQkFEQ0QsU0FDREM7SUFTSixHQWpCYTdCLE1BTGIyQixTQVlLQztJQVdMLE9BQUE7R0FBaUI7Z0JBSVpYLE9BQ0gsV0FER0EsVUFBQUEsVUFJRjtHQUxMLElBREVlLFFBQ0YsaUNBckZFZjtZQThGQWhCO0lBRVUsSUFBUmdDLFFBQVE7SUFDWixTQUFRQyxTQUFTQyxNQUFLbkM7S0FDcEIsSUFEZW9DLFNBQUFELE1BQUtFLFNBQUFyQztLQUNwQjtXQURlb0MsUUFFUDtVQUZPRSxTQUFBRixXQUdiM0QsTUFIYTJEO2VBakNmTixZQWlDb0JPLFFBR2xCNUQ7V0FIYTJELFNBQUFFLFFBQUtEOztXQUFMRCxTQUFBRTs7SUFNcUQ7SUFOOURKLFNBREpEO0lBVUUsVUFBQSx3QkExR0poQjs7OztNQTZHMkI7T0FEU3hDO09BQ2hDNEMsY0FBdUIsb0NBRFM1QztPQUloQztTQUFBO1dBQVcsb0NBSFg0QztNQUVGO01BR0Y7T0FBQTtrQkFFUUM7VUFDUjtjQUFJQywwQkFESUQ7VUFJUixLQUhJQyxpQkFXRjtVQVBTO1VBQ0ssSUFBVkUsVUFBVSwwQ0Fkb0JoRDtVQWVsQyxvQkFHdUIsZUFBYzt1QkFEdEI4RCxVQUFZLE9BQUEsbUJBQVpBLFVBQStCOztVQUQxQztXQUFBLE1BQUE7V0FESjthQUFBO3NDQURJZCwyQkFBQUE7VUFFQSxPQUFBO1NBSVU7T0FkaEI7U0FBQTs7Ozs7Ozs7Ozs7OztXQUxJSjtNQU9BLE9BQUE7OztJQVRxRDtHQXFCekM7WUFHaEJtQixZQUFVLGVBQWU7Ozs7T0FoVHpCckU7T0FLQUU7T0FNQUc7T0FzUEF3RDtPQXBCQUY7T0E1REFaO09BMEZBakI7T0FxQ0F1Qzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDdlRvQjs7SUF5RXBCQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXpFQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFDQUM7SUFFQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQXdDQUMsY0FBY0MsR0FBRUMsR0FBSSxPQUFBLGtCQUFORCxNQUFFQyxNQUErQjtZQUUvQ0MsY0FBY0MsR0FBRUM7SUFDbEI7S0FBSSxXQUFBLDRCQUhGTCxlQUVjSSxHQUFFQztLQUNkOzs7OytCQUEyRDs7O0dBQUs7WUFFbEVDLFlBQVlMLEdBQUVDO0lBQ2hCOztPQUFBOzRDQU5FRixlQUtZQyxNQUFFQztJQUNoQjtnQkFEY0QsU0FBRUM7O01BR2IsV0FBQSxXQUhXRCxNQUFFQztNQUdiO09BQ0E7ZUFKYUE7ZUFBRkQ7O21CQUtKRyxHQUFFQyxHQUFLLGdCQUFBLHFCQUFQRCxHQUFFQyxXQUFvQjtRQUQ3QjtVQUFBO09BQUEsZ0JBUERGLGNBR1lGLE1BQUVDOzs7Ozs7Ozs7OztJQUliO0dBR2lEO1lBRWxESyxZQUFZTixHQUFFQztJQUNoQixXQURnQkEsYUFBRkQ7a0JBRVBHLEdBQUVDO0tBQUs7a0JBQUEsNkJBQVBELEdBQUVDO0lBQTJCO0lBRHBDO1lBQUE7SUFBQTs7TUFJTTtjQUxVSDtjQUFGRDt1QkFNREcsR0FBRUMsR0FBSyxPQUFBLGtCQUFQRCxNQUFFQyxNQUE0QztPQURyRCxPQUFBOzs7Ozs7Ozs7O2NBTFFKLFNBQUVDO3FCQVViLFdBVldELE1BQUVDOzs7Ozs7SUFVYjtHQUF1QztHQWMxQztJQURFTTs7Ozs7T0FYQWhCOztJQW9CbUIsUUFBQSw0QkF6Q25CYyxjQWdDQUU7SUFTT0M7SUFBUEM7WUFFQUMsa0JBQWtCQztJQUNYLElBQUxDLEtBQUssd0JBSFBIO0lBR087SUFDVDtnQkFESUc7O0tBS0E7TUFES0M7TUFDTCxPQUxBRDtNQU9JO1FBQUE7VUFSWUQ7VUFTVDtrREFSUEMsT0FJS0MsU0FKTEQ7TUFNRTtRQUFBLGdEQUZHQzs7O1NBSGVDLDJCQUFwQkMscUJBREFIOzs7S0FHUTtNQUZZSSx1QkFEcEJKO01BQ0FLLHVCQUVRLFdBSlFOLFNBQ2hCQzs7OztNQUNvQkUscUJBQUFFO01BQXBCRCxxQkFBQUU7O0lBWUYsT0FBQTthQWhCT1Q7O2lCQUdMSSxPQUFBQSxPQUFBQSxPQUNBRyxvQkFBb0JEO0dBa0JyQjtZQUVESTtJQUNGLElBQUlOLEtBQUssd0JBekJQSCxRQTBCRixRQURJRzs7O01BSUtDO01BSExNO1FBSUE7Z0RBTEFQLE9BSUtDLFNBSkxEOztTQUNBTyxLQURBUDtrQkFTaURRO21CQUU3Q2pCO01BQUE7TUFBQSxPQUFBLGtDQUFBQSxrQkFBQUE7S0FBVztLQUNULFdBQUEsd0JBQVcsdUJBWGpCZ0I7S0FVSSw2QjtRQUY2Q0MsSUEvSG5ENUI7bUJBcUlNVztNQUFBO01BQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO0tBQVc7S0FBdUIsV0FBQSx3QkFkdENnQjtLQWNJLDZCO1FBTjZDQyxJQTlIbkQzQjtLQXNJSSxZQWhCRjBCOztNQW1CeUM7T0FBOUJFOztrQkFBTWxCO1VBQUE7VUFBQSxPQUFBLGtDQUFBQSxrQkFBQUE7U0FBVztPQUFhLE9BQUEsd0JBQVcsdUJBQXpDa0I7TUFBTTtTOzs7U0FYZ0NELElBN0huRDFCOzs7TUF1SWdCLHlCO1NBVm1DMEI7U0E3SG5EMUI7a0JBdUlnQlM7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLHFCQUFBQTtTQUFjO1FBbEI1QmdCO01BdUJvQzs7a0JBQTlCaEI7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtTQUFXO09BQW1CO01BQTlCO1M7OztTQWYyQ2lCLElBNUhuRHpCOzs7TUE2SVEsMkI7U0FqQjJDeUI7U0E1SG5EekI7a0JBNklRUTtVQUFBO1VBQUEsT0FBQSxrQ0FBQUEscUJBQUFBO1NBQWM7UUF6QnBCZ0I7TUE2QnVDOztrQkFBakNoQjtVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO1NBQVc7T0FBc0I7TUFBakM7Uzs7O1NBckIyQ2lCLElBM0huRHhCOzs7TUFrSnlDOztrQkFBakNPO1VBQUE7VUFBQSxPQUFBLGtDQUFBQSxtQkFBQUE7U0FBVztPQUFzQjtNQUFqQztTOzs7U0F2QjJDaUIsSUEzSG5EeEI7O1FBbUhFdUI7TUFtQ3dDOztrQkFBbENoQjtVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO1NBQVc7T0FBdUI7TUFBbEM7Uzs7O1NBM0IyQ2lCLElBMUhuRHZCOzs7TUF1SjBDOztrQkFBbENNO1VBQUE7VUFBQSxPQUFBLGtDQUFBQSxrQkFBQUE7U0FBVztPQUF1QjtNQUFsQztTOzs7U0E3QjJDaUIsSUExSG5EdkI7O1FBa0hFc0I7TUF5Q3FEOztrQkFBL0NoQjtVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO1NBQVc7T0FBb0M7TUFBL0M7Uzs7O1NBakMyQ2lCLElBeEhuRHRCOzs7TUEySlEsMkI7U0FuQzJDc0I7U0F4SG5EdEI7a0JBMkpRSztVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO1NBQWM7S0FFbEI7SUFBRTtrQkFyQ1NBO0tBQWtCO0tBQUEsT0FBQSxrQ0FBbEJBLG1CQUFBQTtJQUE4QjtJQUE5Qjs7S0FBQTtJQUFmO0lBd0NBLE9BQUEsV0ExRU9LLGtCQXlCTEksT0FBQUEsT0FBQUEsT0FDQU8sSUFEQVA7R0F1REQ7WUFFRFUsZ0JBQWdCQztJQUNsQixPQWpGRWI7c0JBaUZxQmM7Y0FBUztzQkFEZEQ7c0JBQ0tDO3NCQUFBQTtzQkFBQUE7c0JBQUFBO3NCQUFBQTtzQkFBQUE7YUFBbUM7R0FBQztZQUV6REMsb0JBQW9CQztJQUN0QixPQXBGRWhCO3NCQW9GcUJjO2NBQVM7c0JBQVRBO3NCQURERTtzQkFDQ0Y7c0JBQUFBO3NCQUFBQTtzQkFBQUE7c0JBQUFBO2FBQXVDO0dBQUM7WUFFN0RHLFNBQVNDO0lBQU8sT0F0RmhCbEI7c0JBc0Z1Q2M7Y0FBUztzQkFBVEE7c0JBQUFBO3NCQUE5Qkk7c0JBQThCSjtzQkFBQUE7c0JBQUFBO3NCQUFBQTthQUE0QjtHQUFDO1lBRXBFSyxnQkFBZ0JDO0lBQ2xCLE9BekZFcEI7c0JBeUZxQmM7Y0FBUztzQkFBVEE7c0JBQUFBO3NCQUFBQTtzQkFETE07c0JBQ0tOO3NCQUFBQTtzQkFBQUE7YUFBbUM7R0FBQztZQUV6RE8sb0JBQW9CQztJQUN0QixPQTVGRXRCO3NCQTRGcUJjO2NBQVM7c0JBQVRBO3NCQUFBQTtzQkFBQUE7c0JBQUFBO3NCQUREUTtzQkFDQ1I7c0JBQUFBO2FBQXVDO0dBQUM7WUFFN0RTLHFCQUFxQkM7SUFDdkIsT0EvRkV4QjtzQkErRnFCYztjQUFTO3NCQUFUQTtzQkFBQUE7c0JBQUFBO3NCQUFBQTtzQkFBQUE7c0JBREFVO3NCQUNBVjthQUF3QztHQUFDO1lBRTlEVywrQkFDQUM7SUFDRixPQW5HRTFCO3NCQW1HcUJjO2NBQ25CO3NCQURtQkE7c0JBQUFBO3NCQUFBQTtzQkFBQUE7c0JBQUFBO3NCQUFBQTtzQkFEckJZO2FBRXVEO0dBQUM7WUFFeERDO0lBQWFDLElBQUdDLGlCQUFnQnhCLG9CQUFtQkQ7SUFLbkQ7TUE3R09OOztjQXdHTThCLEtBQUdDLG9CQUFnQnhCLG9CQUFtQkQ7a0JBY2pEMEI7S0FDTyxJQUFMNUIsS0FBSyx3QkF2SFRIOztLQXlIRTtPQXpIS0Qsc0JBd0dNOEIsS0FlVDFCLE9BQUFBLGVBQUFBLE9BQUFBO0tBU0osT0FBQSxtQkFWRTRCO0lBVVk7ZUF4QkRGOztJQUNmOztPQUFBO0lBQUEsT0FBQTtHQXVCZ0I7WUFFZEcsa0JBQWtCQyxTQUFRQztJQUM1QixJQUNJQyxvQkFEQUM7YUFFSUM7S0FDTjtLQUFTO09BSmlCSDtPQUlWLGtDQUpFRCwwQkFBQUE7UUFFaEJFLGNBSUE7S0FFQSxXQUFBLHNDQVBBQztLQU9BLE9BQUEsNkJBTElDO0lBS3VDO0lBRXRDLG9FQVBEQTtJQVFSLE9BVElGO0dBU0s7WUFFUEcsWUFBWUMsUUFBT0M7SUFDckIsSUFBSUMsV0FBVyx3QkFoSmJ6QyxRQWtKRTBDLFVBRkFEOztLQThCK0IsSUFBbUJFLG1CQUFURCxvQkFBSmI7S0FDakMsT0F2RU5ELGFBc0V1Q0MsSUFBSWEsU0E5QnpDRCxhQThCa0RFO0lBQ2E7SUFEL0QsV0FBQTs7S0F4Qkk7YUFOSkY7c0JBTXFCL0MsR0FBSyxPQUFBLGtCQUFMQSxNQVBKOEMsWUFPa0M7TUFBL0MsV0FBRSxrQ0FKTkUsVUFBQUE7TUFHQyxPQUFBO01BREYsT0FBQTs7Ozs7O0tBT0k7O2lCQUFvQ0U7U0FDaEM7VUFBeUMsUUFBQTtVQUFmQztVQUF0QkM7VUFDQUM7WUEzQmJmLGtCQXlCeUNZLGlCQUdJLFdBRlZDO1VBSXRCaEI7O2FBakJNVzthQWFOTTthQUNBQzthQUY0Qkg7VUFhNUJ0QyxxQkF4QlhtQztVQXlCV0U7WUFDRjs7Y0EzQlFIO2NBeUJObEM7Y0F4QlhtQztVQTZCa0I7WUFBQTs7O2tCQWJQWixRQUFBQSxJQWRYYSxVQXVCV0M7U0FJTyxPQUFBO1FBQTRDO01BbEIzRCxPQUFBO01BREosT0FBQSxzQ0FYV0osUUFBT0M7YUFXbEI7O0lBb0JDLE9BQUE7R0FDK0Q7WUFFakVRLGVBQWVSLFlBQWEsT0FsQzVCRixlQWtDZUUsWUFBd0M7WUFDdkRTLFlBQVlULFlBQWEsT0FuQ3pCRixlQW1DWUUsWUFBeUM7R0FHdkQsSUFERVUsNEJBeE1BcEU7Z0JBa05La0I7SUFDSCxXQURHQTtrQkFHTW1ELEdBQ0gsV0FER0EsTUFBQUEsTUFJRjtJQUxMO0tBREVDLGdCQUNGO0tBUUYsUUFWR3BEOzs7TUFhTUk7TUFITGlEO1FBSUE7Z0RBZERyRCxVQWFNSSxTQWJOSjs7U0FVQ3FELG1CQVZEckQ7ZUFBQUEsaUJBQUFBO2tCQW1Cc0JOLEdBQUssT0FBTEEsS0FBaUI7SUFGMUM7WUFFSTtZQWxCQTBEOztZQVNBQztHQWFIO0dBeEJMLElBREVDLFFBQ0YsNkJBN05FekQsbUJBZ0NBRztZQXdOQXVEO0lBQ0ksWUFBQSx3QkF6Tkp2RDs7O01BMk5Ld0Q7O2lCQUdHekI7U0FDQyxJQUFMNUIsS0FBSyx3QkEvTlRIOztTQWdPUztXQWhPRkQsa0JBK05ISSxPQUFBQSxPQUFBQSxlQUFBQSxPQUFBQTtTQUVKLE9BQUEsbUJBSFE0QjtRQUdNO2FBTlR5Qjs7S0FDTDs7UUFBQTtLQUVJLE9BQUE7O0lBSmUsV0FBQTtJQUFBLE9BQUE7R0FPTDtZQUVkQyxhQUFheEI7a0JBRXlCUztLQUNoQztNQUl5QixXQUFBO01BQUEsT0FBQTtLQUFtQjttQkFIckNnQjtNQUNILHFCQUE2QyxlQUFlOztNQUE1RDs7U0FBQTtrQ0FMR3pCLHlCQUFBQSxTQUlBeUI7TUFDaUMsT0FBQTtLQUF3QjtLQUZoRSxXQUFBLDhCQURnQ2hCO0tBSzVCLE9BQUE7SUFBd0M7O0lBTGhEO0tBQUEsT0FBQTtLQURKO09BQUEsa0NBRGVULHlCQUFBQTtJQUVYLE9BQUE7R0FLaUQ7WUFFbkQwQixlQUFlbkI7SUFDTCxJQUFSb0IsVUFBUSx3QkE3T1Y1RDtJQThPRjtLQUVJO2FBSEE0RDtzQkFHZWxFLEdBQUssT0FBQSxrQkFBTEEsTUFKRjhDLFlBSWdDO01BRDNDZ0IsVUFDRjs7aUJBRTJDekI7U0FIekN5Qjs7U0FLSixXQVBFSTt1QkFTT2xFLEdBQUssT0FBQSxxQkFBTEEsTUFQTDhELFlBTzRDO1NBRDlDO1VBREUxQixrQkFDRjtVQUlGLFFBWkU4Qjs7Y0FnQlNDLHFCQUFLLGtCQUFMQSxNQWRQTDs7OzthQUtBMUI7ZUFhRWdDLElBYkZoQyxvQkFLQWlDLHNCQVFFRDs7ZUFSRkM7O2NBQUFBLGtCQVpGSDtTQStCTTs7WUFBQTttREFoQ09wQixZQUNib0I7U0F5QkE7V0F0UUs3RDs7ZUF5UEhnRSxpQkFMQWpDLHFCQVBGOEI7U0FtQ0YsV0FqQ0lKOztTQWlDSztTQUNULGNBQWdCUTtVQUNMOzthQUFBO2tEQWhDa0NqQyxTQStCN0JpQztVQUNMLE9BQUE7U0FBMkM7U0FEdEQsV0F6REFUO1NBeURZLE9BQUE7UUFDMEM7TUFoQ3RELE9BZkFFLGFBWUlEO01BR0osT0FBQTtLQUFBOzs7OztLQW9DbUI7TUFBQSxPQUFBLHVCQTFDSmhCO01BMENWLE9BQUE7TUFESCxPQUFBO0tBQUEsT0FBQTs7R0FDa0Q7WUFFaER5QixpQkFBa0JDO0lBQ3hCLElBRHdCQyxRQUFBRDtJQUN4QjtVQUR3QkMsT0FFaEI7U0FGZ0JDLFFBQUFELFVBR3RCTCxJQUhzQks7S0FJdEIsSUFBSyxXQTFNTHRELGdCQTBNcUIscUJBRHJCaUQsS0FDSzs7OztNQUVRLElBQU5PLE1BQU0sb0NBSGJQO01BSVksbUNBQWEsd0JBRGxCTztVQU5lRixRQUFBQzs7O0dBUUE7WUFFdEJFLHFCQUFzQko7SUFDeEIsS0FEd0JBLEtBRWhCO1FBQ05KLElBSHNCSTtJQUdaLE9BaE5WbEQsb0JBZ05BOEM7R0FBK0I7WUFFM0JTLGdCQUFpQkw7SUFDdkIsSUFEdUJDLFFBQUFEO0lBQ3ZCO1VBRHVCQyxPQUVmO1NBRmVDLFFBQUFELFVBR3JCTCxJQUhxQks7S0FJckIsSUFBSyxXQXpOTHRELGdCQXlOcUIscUJBRHJCaUQsS0FDSzs7OztNQUVRLElBQU5PLE1BQU0sb0NBSGJQO01BSVksbUNBQWEsd0JBRGxCTztVQU5jRixRQUFBQzs7O0dBUUE7WUFFckJJLGlCQUFrQk47SUFDcEIsS0FEb0JBLEtBRVo7UUFDTkosSUFIa0JJO0lBR1EsT0ExTjFCOUMsZ0JBME4wQixxQkFBMUIwQztHQUF3QztZQUV4Q1cscUJBQXNCUDtJQUN4QixLQUR3QkEsS0FFaEI7UUFDTkosSUFIc0JJO0lBR1EsT0E1TjlCNUMsb0JBNE44QixxQkFBOUJ3QztHQUE0QztZQUU1Q1ksc0JBQXVCUjtJQUN6QixLQUR5QkEsS0FFakI7UUFDTkosSUFIdUJJO0lBR1EsT0E5Ti9CMUMscUJBOE4rQixxQkFBL0JzQztHQUE2QztZQUU3Q2EsK0JBQTZDVDtJQUMvQyxLQUQrQ0EsS0FFdkM7UUFDTkosSUFINkNJO0lBR1EsT0FoT3JEeEMsK0JBZ09xRCxxQkFBckRvQztHQUFtRTtZQUVuRWMsS0FBS0M7aUJBTUkxRTtLQUNILGNBR09ULEdBQUssV0FBRSx3QkFBUEEsT0FBdUI7MEJBRGpCLFNBQUU7S0FEYjs7a0M7VUFGQ1M7VUF4YVRwQjttQkEwYVNXO1dBQUE7V0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7VUFBVztLQUVaLE9BQUE7SUFBNkI7d0JBTHRCLFNBQUU7aUJBRGJBO0tBQWtCO0tBQUEsT0FBQSxrQ0FBbEJBLG1CQUFBQTtJQUE4QjtJQUE5Qjs7S0FBQTtLQUZBb0YsWUFDRjtLQUZBQztPQVdGLHlDQVZJRDtJQVlOLGFBS1czRTtLQUNILGNBR09ULEdBQUssV0FBRSx3QkFBUEEsT0FBdUI7MEJBRGpCLFNBQUU7S0FEYjs7a0M7VUFGQ1M7VUFwYlRuQjttQkFzYlNVO1dBQUE7V0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7VUFBVztLQUVaLE9BQUE7SUFBNkI7d0JBTHRCLFNBQUU7aUJBRGJBO0tBQWtCO0tBQUEsT0FBQSxrQ0FBbEJBLG1CQUFBQTtJQUE4QjtJQUE5Qjs7S0FBQTtLQUZBc0YsWUFDRjtLQUZBQztPQVdGO3VDQVZJRDtJQVlOLGFBS1c3RTtLQUNILGNBR09ULEdBQUssV0FBRSx3QkFBUEEsT0FBdUI7MEJBRGpCLFNBQUU7S0FEYjs7a0M7VUFGQ1M7VUFoY1RsQjttQkFrY1NTO1dBQUE7V0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7VUFBVztLQUVaLE9BQUE7SUFBNkI7d0JBTHRCLFNBQUU7aUJBRGJBO0tBQWtCO0tBQUEsT0FBQSxrQ0FBbEJBLG1CQUFBQTtJQUE4QjtJQUE5Qjs7S0FBQTtLQUZBd0YsWUFDRjtLQUZBQztPQVdGLHlDQVZJRDtJQVlOLGFBS1cvRTtLQUNILGNBR09ULEdBQUssV0FBRSx3QkFBUEEsT0FBdUI7MEJBRGpCLFNBQUU7S0FEYjs7a0M7VUFGQ1M7VUE1Y1RqQjttQkE4Y1NRO1dBQUE7V0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7VUFBVztLQUVaLE9BQUE7SUFBNkI7d0JBTHRCLFNBQUU7aUJBRGJBO0tBQWtCO0tBQUEsT0FBQSxrQ0FBbEJBLG1CQUFBQTtJQUE4QjtJQUE5Qjs7S0FBQTtLQUZBMEYsWUFDRjtLQUZBQztPQVdGLHlDQVZJRDtJQVlOLGFBS1dqRjtLQUNILGNBR09ULEdBQUssV0FBRSx3QkFBUEEsT0FBdUI7MEJBRGpCLFNBQUU7S0FEYjs7a0M7VUFGQ1M7VUF4ZFRoQjttQkEwZFNPO1dBQUE7V0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7VUFBVztLQUVaLE9BQUE7SUFBNkI7d0JBTHRCLFNBQUU7aUJBRGJBO0tBQWtCO0tBQUEsT0FBQSxrQ0FBbEJBLG1CQUFBQTtJQUE4QjtJQUE5Qjs7S0FBQTtLQUZBNEYsWUFDRjtLQUZBQztPQVdGO3VDQVZJRDtJQVlOLGFBS1duRjtLQUNILGNBR09ULEdBQUssV0FBRSx3QkFBUEEsT0FBdUI7MEJBRGpCLFNBQUU7S0FEYjs7a0M7VUFGQ1M7VUFwZVRmO21CQXNlU007V0FBQTtXQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtVQUFXO0tBRVosT0FBQTtJQUE2Qjt3QkFMdEIsU0FBRTtpQkFEYkE7S0FBa0I7S0FBQSxPQUFBLGtDQUFsQkEsbUJBQUFBO0lBQThCO0lBQTlCOztLQUFBO0tBRkE4RixZQUNGO0tBRkFDO09BV0Y7dUNBVklEO0lBWU4sYUFLV3JGO0tBQ0gsY0FHT1QsR0FBSyxXQUFFLHdCQUFQQSxPQUF1QjswQkFEakIsU0FBRTtLQURiOztrQztVQUZDUztVQS9lVGQ7bUJBaWZTSztXQUFBO1dBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO1VBQVc7S0FFWixPQUFBO0lBQTZCO3dCQUx0QixTQUFFO2lCQURiQTtLQUFrQjtLQUFBLE9BQUEsa0NBQWxCQSxtQkFBQUE7SUFBOEI7SUFBOUI7O0tBQUE7S0FGQWdHLFlBQ0Y7S0FGQUM7T0FXRjs7YUFWSUQ7O0lBN0hBekIsaUJBOENGYztJQXBDRlQscUJBaURFVztJQTVDRVYsZ0JBeURGWTtJQS9DRlgsaUJBNERFYTtJQXZERloscUJBb0VFYztJQS9ERmIsc0JBNEVFZTtJQXZFRmQsK0JBb0ZFZ0I7SUF3QlcsSUFBWEMsV0FBVzthQUNQQyxhQUFhRDtLQUNuQixLQURtQkEsVUFFWDtTQUNLRSxhQUhNRixhQUdqQkcsVUFIaUJIO2tCQVNDSTtNQUNWO09BRUk7U0FBQTs7Ozs7T0FGQTNCLE1BQ0Ysb0NBUlYwQixlQU1rQkM7T0FRTjtTQUFBLHdCQUFXLG9DQVBYM0I7TUFNRjtNQUdGLE9BbkJKd0IsYUFHT0M7S0FnQmtCO3lCQVhSLE9BUmpCRCxhQUdPQyxZQUsrQjtLQUR0QyxXQUFBO21CQUZpQnBHLEdBQUssT0FBQSxxQkFBTEEsR0FGckJxRyxTQUVzQztLQUR0Qzs7UUFsU0Z6RDtVQW1TSSxrQ0E3R0N1QyxvQkEyR0hrQjtLQUlJLE9BQUE7SUFZMEI7d0JBRVcsT0FyQnJDRixhQURKRCxVQXNCOEQ7SUFBbEUsVUFyQlFDLGFBeEdEaEI7SUE2SDRCLE9BQUE7R0FBK0I7WUFFaEVvQixrQkFLRUMsT0FBTWhHO0lBQ0osWUFBQSx3QkExY0pGO2tCQWdkS3dELG9CQUFXLE9BQUEsV0FQUnRELFNBT0hzRDtJQUhIO0tBREUyQyxZQUNGLG9DQUpBRDtLQU1TLE1BQUEsa0RBSFBDO0lBR08sT0FBQTtHQUNvQztZQUUvQ0M7SUFBeUJDLElBQUlDLElBQUtDLEtBQW1CQyxhQUFZQyxRQUNqRTNCLFdBQVE1RTtJQUNWLEdBRm9DcUc7U0FBWUcsTUFBWkgsUUFBQUksWUFBWUQ7O1NBQVpDLCtCO0lBRXRCO0tBQVZDO09BQVUsMENBN2ZaaEgsYUEyZmtDK0c7S0FXekIsTUFBQSxnQ0FUUEMsVUFwZEY1RyxPQWtkaUV5RztLQVUzRDtPQUFBOzJCQVJKRyxVQUYyQk4sUUEzZDdCeEcsWUEyZHFEMEc7S0FTbEQsTUFBQTs7S0FKQSxJQUFVSyxnQkFBSjFHLGVBQ0osUUFESUE7MkNBSlQyRTtTQU9ZdEI7S0FBVyxPQUFBLFdBUGZ0RCxTQU9Jc0QsWUFIQ3FEO0lBRzhDO0lBSjNELFVBQUE7SUFBQSxPQUFBLHdCQUp5QlIsSUFDekJ2QjtHQVV3RDs7OztPQTdmeERqRjtPQW9OQXFEO09BUUFJO09BMUdBekM7T0FHQUc7T0FHQUU7T0FFQUU7T0FHQUU7T0FHQUU7T0FHQUU7T0EzRUFqQjtPQTBKQXdDO09BREFEO09BMkRBVztPQXlGQWlCO09BN0dBckI7T0E0T0EwQztPQWNBRzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0MxaUJjOzs7SUFxT01VO0lBL0tBQztJQWZkQztJQUxGQztJQW5DSkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUNBQztJQUM2QixRQUFBLDJCQUQ3QkE7SUFDT0M7SUFBUEM7SUFJQUMsb0JBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dCQUlmQztJQUNILFdBREdBO2tCQUVJQztLQUdELFdBQUEsaURBSENBLE1BRkpEOzBCQUlHLElBQU9FLGlCQUFhLE9BQWJBLEtBQWtCO0tBQ3pCLE9BQUE7SUFBNEM7SUFIaEQsT0FBQTtHQUlTO0dBUGYsSUFERUMsbUJBQ0YsaUNBUEVMO1lBaUJBTSxpQkFBa0JDLElBQUtDLEtBQXlCQyxHQUFFQztJQUNwRCxHQUR5QkY7U0FBS0csTUFBTEgsUUFBQUksS0FBS0Q7O1NBQUxDLEtBQUs7SUFVNUIsV0FBQSw0QkFWdUJBLElBbEJ2QmQsYUFDQUU7a0JBbUJLRTtLQUNILFdBREdBO21CQUVJQztNQUdELFdBQUEsaURBSENBLE1BRkpEOztPQUlHLElBQU9FO09BQWEsT0FBQSxXQU5vQkssR0FNakNMLE1BRk5EO01BRXVDO01BQ3hDLE9BQUE7S0FBNEM7S0FIaEQsT0FBQTtJQUlTO0lBRWIsT0FBQSx5QkFWa0JJLFVBQWdDRztHQVVqQjtZQUVqQ0csa0JBQWtCSjtJQUNwQixJQUFJSyxRQUFRLHdCQTlCVmQsUUErQkYsUUFESWM7O0tBSVM7YUFBQSxrREFEUGxCO0tBQ08sT0FBQTs7SUFFSjtLQURGbUI7S0FDRTtPQUFBLGlEQURGQSxXQUxIRDtvQkFZS1gsZ0JBQUssT0FBQSxXQWJNTSxHQUNoQkssT0FLR0MsUUFPRVo7SUFETSxXQUFBLGtEQUhQUjtJQUdPLE9BQUE7R0FDZ0I7WUFFN0JxQjtJQUNGLE9BaEJFSDs2QkFnQjRCRTtjQUFaOztlQVc0QjtnQkFBckJYO2dCQUFOYTtnQkFBMkI7a0JBQUE7K0RBQTNCQSxNQUFNYjtlQUFxQixPQUFBOztrQkFWMUJjOzRCQUN1Q0M7O2dCQUVoQixJQUFZQyxpQkFBTkg7bUJBSm5CRixjQUl5Qks7aUJBRTFCOztvQkFBQTtpRUFGb0JILE1BSDdCQztpQkFLUyxPQUFBOztnQkFHQTs7bUJBQUE7NERBRFB4QjtnQkFDTyxPQUFBO2VBQ1g7O2VBTk47Z0JBQUEsT0FBQTtnQkFESjtrQkFBQTsyQ0FEbUR5QjtvQkFBQUE7b0JBRHZDRDtlQUdSLE9BQUE7Y0FNTTtjQVJvQyxPQUFBOzthQVNzQjtHQUFBO1lBRTFFRyxhQUFjQztJQUVWLFdBQUEsd0JBNURKdEI7O0tBNkRtQixXQUFBO0tBQUEsT0FBQTs7UUFDWnVCO0lBQ1AsR0FET0E7S0FHSDs7UUFBQTs7Ozs7O0tBQUEsT0FBQTs7O0tBSWlDLElBQWVDLHFCQUFUQztLQUN4QixtQ0FEd0JBO0tBRy9COztPQXBFWnhCO1dBaUVvRHVCLFVBQVRDLFNBWDdCSDtLQWlCTyxXQUFBO0tBQUEsT0FBQTtJQUFvQjtJQU5uQztLQUFBLE9BQUE7S0FESixPQXhCRk47SUF5Qk0sT0FBQTtHQU1tQztZQUV6Q1UsaUJBQWtCQyxPQUFNQyxTQUFRQztJQUNsQztLQUFJZixRQUFRLHdCQTlFVmQ7WUE2RWtCMkIsOENBQ2hCYjtrQkFHS2dCO0tBQUwsSUFBNEJDLGVBQWpCQztLQUNULE9BQUE7bURBRFNBLGlCQUFpQkQsS0FBdkJEO0lBQ3NEO0lBRjdELElBREVHLFlBQ0Ysd0NBSGdDSjtJQVlkLE9BQUEsV0F6Rlg5Qiw0QkE2RWlCNkIsU0FFdEJLO0dBVXNDO1lBRXhDQyxZQUFjVixVQUFxQkM7a0JBRXFCTjttQkFFZFU7b0JBR3ZCTTtPQUFpQixPQUFBLGtCQVB0QlgsVUFPS1c7TUFBbUQ7TUFEMUQsSUFERUMsZ0JBQ0Ysa0NBRjhCUDs7T0F3QkcsSUFBZUQsb0JBQVRDO09BMUNuREgsNEJBMEM0REUsU0F6SDVEL0IsdUJBeUhtRGdDO09BV2pDLE9BeEVsQlI7TUF3RW9DO01BWHRCLFdBQUE7U0F2QkFlOztRQWtCRkMsV0FsQkVEOzs7V0FzQlE7O2NBQUE7OztvQkF2Qm9CUCxTQW1COUJRO1dBSVUsT0FBQTtVQUFvRDs7T0FGMUQ7UUFBQSxPQUFBO1FBREo7VUFBQTttQ0F0QjRDbEI7WUFBQUE7WUFGMUNLO1lBQXFCQztlQXdCdkI7OztPQVhFOzs7bUJBQ09LO1dBQUwsSUFBV0U7V0FBd0IsT0FBQSx1QkFBOUJGLEtBQU1FO1VBQXlDO1FBRnBETSxVQUNGLHdDQVQ0QlQ7Ozt5QkFnQmtCQTtZQUNoQztZQUNFOztlQUFBOzs7cUJBRjhCQSxTQVI1Q1M7WUFVYyxPQUFBO1dBQXlDOztXQUYvQztZQUFBLE9BQUE7WUFESjtjQUFBO3VDQWpCb0NuQix3QkFBQUE7V0FrQmhDLE9BQUE7VUFFZ0Q7T0FUMUQ7O09BS0U7UUFBQSxPQUFBO1FBREo7VUFBQTttQ0FmNENBO1lBQUFBO1lBVXhDbUI7WUFaRmQ7WUFBcUJDO2VBaUJ2Qjs7TUFXRSxPQUFBO0tBV3NCOztLQW5DOUI7TUFBQSxPQUFBO01BREo7UUFBQSxrQ0FEc0ROLHdCQUFBQTtLQUVsRCxPQUFBO0lBbUMrQjtJQXJDYyxPQUFBO0dBcUNiO1lBRWxDb0IsWUFBWUM7Ozs7TUFHZCxJQURFN0MsWUFDRixvQ0FIYzZDO01BS2hCLE9BQUEsa0RBSEk3Qzs7O01BSXVCOEM7O01BQXpCVjtNQUFXQztLQUNWLEdBQUEsa0JBUGFRLFFBTWRUO01BRUEsT0FBQSxrREFGV0M7bUJBQWNTOzs7WUFNM0JDLFlBQWFsQixVQUFvQkY7a0JBRXVCSDttQkFFZFU7TUFjOUIsV0E5QlJVLFlBWVNmLFVBSTZCSztvQkFFckJUO09BekVyQk0sNEJBeUVxQk4sTUF4SnJCdkIsdUJBc0owQ2dDO09BYTVCLE9BdkdkUixhQXNGaUNDO01BaUJGO01BQ25CLE9BQUE7S0FBOEI7O0tBZHBDO01BQUEsT0FBQTtNQURKO1FBQUEsa0NBRHNESCx3QkFBQUE7S0FFbEQsT0FBQTtJQWNxQztJQWhCUSxPQUFBO0dBZ0JQO1lBRTVDd0IsWUFBYWxCO0lBQ2YsT0F4SUVaO3NCQXdJcUJDLE9BQU1DO2NBQVg7ZUFHWjtnQkFGZ0JYO2dCQUNkNkI7a0JBQ0Y7O29CQUh1QmxCOzRCQURkVSxVQUVPckI7b0JBRENVO2VBT1YsV0E1S0pmLDRCQXFLY2UsVUFFZm1CO2VBTU87dUJBQUE7ZUFBQSxPQUFBOztrQkFDS2Y7Y0FFZDtnQkFoTEduQjs7NEJBcUtvQmdCLFdBQUFBLGdCQUFORDs0QkF1QnVDSztlQUN0RDtlQXhCUixPQUFBOytDQXVCOERBO3dCQUFBQTt3QkFkMUNEO3dCQVZMTztjQXlCeUI7Y0FEaUIsT0FBQTs7YUFDZjtHQUFBO1lBRXhDbUIsWUFBWUMsU0FBU0M7SUFDdkIsSUFBSWhDLFFBQVEsd0JBaE1WZCxRQWlNRixPQURJYzs7S0FFcUIsSUFBU1Y7S0FBYSxPQUFBLGtCQUFiQSxNQUhwQnlDO0lBR2dEO0lBQTVELFlBQUE7O0tBR2dCO01BQVpsRDtRQUFZLHVEQU5Ka0Q7TUFPRCxPQUFBLGtEQURQbEQ7S0FDTyxPQUFBOzs0REFXTHlCOztTQVY4QmhCLGdCQUFUcUI7S0FDM0IsR0FUcUJxQjtNQVdqQjtPQURFYjtTQUNGO2dEQU9FYixhQVY4QmhCLE9BUGxDVTtNQVlTLFdBNU1KZiw0QkFnTUxlLFVBU0ltQjs7O2tCQUlzRGQ7VUFDdEQ7VUFESixPQUFBOzBDQUEwREE7bUJBQUFBO21CQUl0REM7bUJBVjhCaEI7bUJBQVRxQjtTQU9nQjtNQURZLE9BQUE7O0tBRzFDLFdBQUE7S0FBQSxPQUFBOztRQUNlUDtJQUM1QixHQW5CcUI0QjtLQW9CUixXQUFBO0tBQUEsT0FBQTs7a0JBRStDM0I7O01BRW5CLElBQWU0QixtQkFBVHRCO1NBTnpDTCxTQU1rRDJCO09BR3RDO1FBREVkO1VBQ0Y7O1lBVFpiO29CQU15Q0ssVUFObkJQO1lBakIxQko7T0ErQmdCLFdBL05YZiw0QkFnTUxlLFVBeUJrQm1CO09BUUo7O21CQUNPZDtXQUFXO1dBRGxCLE9BQUE7MkNBQ09BO29CQUFBQTtvQkFqQktEO1VBaUI4QjtPQUF4QyxPQUFBOztNQUtTO2NBQUEsa0RBSFB6QjtNQUdPLE9BQUE7S0FDWDs7S0FqQk47TUFBQSxPQUFBO01BREo7UUFBQTtpQ0FEc0QwQiwwQkFBQUEsU0FKaENEO0tBTWxCLE9BQUE7SUFpQk07SUFuQnVDLE9BQUE7R0FtQnRDO1lBRWpCOEI7SUFDRixPQTlNRW5DO3NCQThNcUJDLE9BQU1DO2NBQVg7ZUFBMkJYO2VBQVA2QztlQUM5QmhCO2lCQUFZO3dEQURTbEIsV0FBTkQ7ZUFNZjtpQkFBQSxnREFMQW1COztlQUdBLElBQU1iO2VBQ0osV0FESUEsTUFqUFp2QjtjQWtQcUU7Y0FGakU7ZUFERStCO2lCQUNGO2NBS08sV0FuUEo3Qiw0QkE2T0Q2QixTQURBSztjQVFJLElBQUo5QixJQTFMTmtCO2NBMkxFLEdBVmtDNEIsT0FXdEIsT0FGUjlDOzRCQUl3RGdCO2VBQ3REOzZCQUFpQytCOzhCQUN2Qi9DO2lCQUFnQjs7b0JBQUEsOENBQWhCQSxPQUR1QitDO2lCQUNQLE9BQUE7Z0JBQW9DO2dCQUF4RCxPQUFBLHVCQU5SL0M7ZUFNZ0U7ZUFEOUQ7O2tCQUFBOzJDQURzRGdCO29CQUFBQTtvQkFibkJmO2VBY04sT0FBQTtjQUNpQztjQUZiLE9BQUE7O2FBRWU7R0FBQTtZQUV4RStDLFVBQVVyQyxPQUFNK0IsU0FBUXpCO0lBQzFCLFVBRFlOOztLQUVhLElBQVNWO0tBQWEsT0FBQSxrQkFBYkEsTUFGaEJ5QztJQUU0QztJQUE1RCxZQUFBOztLQUdnQjtNQUFabEQ7UUFBWSx5REFMQWtEO01BTUwsT0FBQSxrREFEUGxEO0tBQ08sT0FBQTs7SUFHYzs7S0FGWlE7S0FBRzhDLFFBQUg5QztLQUFQNEM7S0FFbUIsT0FBQSxnREFGbkJBLFFBUElqQztLQVFObUI7T0FDRixnREFUc0JiLE1BT1hqQjtLQVFUaUQsTUFmTXRDOzs7UUFlTnNDOztpQkFBQUE7T0FGK0I3QjtPQUFaOEI7T0FBTEM7U0FBQUEsUUFOWlA7V0FJRm5CLGtCQVhvQlIsTUFhRGlDLFlBQVk5Qjs7OztTQUYvQkssVUFJQXdCOztJQUVKLFNBVmdCSDs7O2lCQVc0QzlCOztVQUduQzs7YUFBQTswREFWckJTLFNBSEFLO1VBYXFCLE9BQUE7U0FBdUM7O1NBRHREO1VBQUEsT0FBQTtVQURKO1lBQUE7cUNBRHNEZDtjQUFBQTtjQWxCcENDO2NBQVJ5QjtTQW9CTixPQUFBO1FBQ3VEO0tBSFYsT0FBQTs7SUFLMUM7O09BQUE7b0RBWlRqQixTQUhBSztJQWVTLE9BQUE7R0FBdUM7WUFFaERzQixhQUFhekMsT0FBTStCLFNBQVF6QjtJQUMzQjthQUFBLGlEQUQyQkEsTUFBZE47Z0JBU1QsT0FsQ1JxQyxVQXlCaUJyQyxPQUFNK0IsU0FBUXpCO1FBRXhCaEI7SUFDSixHQUFBLGtCQUhvQnlDLFNBRWhCekM7S0FFTSxVQUFBLGtEQUpJVTtLQUlKLE9BQUE7O2lCQUc2QkEsT0FDaEMsT0FqQ1ZxQyxVQWdDMENyQyxPQVBuQitCLFNBQVF6QixNQVFRO0lBRGpDO0lBQUE7S0FBQSxNQUFBO0tBREosTUFORW1DLGFBQWF6QyxPQUVWVixNQUZ3QmdCO0lBT3pCLE9BQUE7R0FFOEI7WUFFcENvQyxZQUFhQzthQUNQQyxXQUFZRCxXQUFVM0MsT0FBTTZDO0tBQ2xDLEdBRGtCRjtNQU9aO09BRk9HLE9BTEtIO09BS2hCWixVQUxnQlk7O2tCQU93QjNDLE9BQ2hDLEdBRlIsT0FOSTRDLFdBS09FLE1BRTZCOUMsT0FQUjZDLGVBUVc7T0FEdkMsTUFBQTtPQURKLE1BbEJFSixhQVl3QnpDLE9BSzFCK0IsU0FMZ0NjO01BTzVCLE9BQUE7O0tBSkssV0FwU0o1RCx3QkFpU3FCZTtLQUlmLFVBQUE7S0FBQSxPQUFBO0lBSWlDO0lBRWhELE9BVlE0QyxXQURPRCxXQVdPLHdCQTNTcEJ6RDtHQTJTMkM7WUFFM0M2RCxnQkFBaUJ2QyxNQUFNd0M7SUFDekIsSUFBSUMsSUFBSSx3QkE5U04vRCxRQStTRixNQURJK0Q7Y0FFTTt3QkFDS3hDLHdCQUFOSDs7SUFFTCxPQUFBO2FBblRLckI7O3lCQWlUQXFCLFVBSmdCMEMsSUFBTnhDLGVBSUpDLGVBSFh3QztHQWNDO1lBRUh4QyxZQUFZQTtJQUNkLElBQUl3QyxJQUFJLHdCQS9UTi9ELFFBZ1VGLE1BREkrRDtjQUVNO3dCQUNLVix1QkFBTmpDO0lBRUwsT0FBQTthQXBVS3JCOzt5QkFrVUFxQixNQUFNaUMsWUFKRDlCLGVBQ1Z3QztHQVFDO1lBRUhDLEtBQU94RDtJQUNULEdBRFNBLFNBQVFHLE1BQVJILFFBQUFtQixRQUFRaEIsY0FBUmdCO2lCQUNpRFI7a0JBRWRVO01BQ3JCLElBQVBvQyxPQUFPLHdCQTdVckJqRTs7O09BOFVVLEtBTEgyQjtXQUlPc0M7O1VBT085RCxJQVBQOEQ7OzthQVNJLElBQU9qQztvQkFGSjdCLFNBRUk2QjtZQUEwQztnQkFEbkQsaUNBVDBCSDs7O3NCQUU1QnlCLE1BREFXOztVQUQ0QnBDOztTQWV4QkcsV0Fmd0JIO1NBRTVCeUIsY0FhSXRCLFVBN1ZsQm5DOztZQWdWY3lEOztNQWpRZDVCLGlCQTRQT0MsT0FLTzJCLEtBRjRCekI7TUEwQmhDLE9BNVNWUjtLQTRTMkI7O0tBMUJyQjtNQUFBLE1BQUE7TUFESjtRQUFBLGtDQURzREYseUJBQUFBO0tBRWxELE9BQUE7SUEwQnNCO0lBNUJ1QixPQUFBO0dBNEJ0QjtZQUU3QitDO0lBQ0YsYUFHa0JDO0tBQ1Y7TUFHSTtRQUFBOzs7OztNQUhBQyxNQUNGLHlDQUZRRDtLQU9ELG1DQUFhLHdCQU5sQkM7S0FPSjtJQUFlO3dCQVRGLGVBQWU7SUFEaEM7S0FBQSxNQUFBO0tBREosTUE5UUVsQztJQStRRSxPQUFBO0dBVW9CO1lBRXRCbUM7SUFDVyxJQUFUQyxTQUFTO2FBQ0xDLFdBQVdELFFBQU9FO0tBQ3hCLEtBRGlCRixRQUVUO1NBQ0dHLFdBSE1ILFdBR2Z0RSxRQUhlc0U7a0JBK0NESDtNQUNWO09BRUk7U0FBQTs7Ozs7T0FGQUMsTUFDRixvQ0E5Q05wRSxZQTRDY21FO09BUU4sTUFBQSx3QkFBVyxvQ0FQWEM7TUFNRjtNQUdGLE9BekRBRyxXQUdLRSxVQUhhRDtLQXlEUztrQkFsQnBCaEQ7TUFDUCxLQXhDa0JnRCxXQStDYixPQS9DTEQsV0FHS0UsVUFIYUQ7MEJBNENPLE9BNUN6QkQsV0FHS0UsVUFIYUQsV0E0Q2tDOzBCQUQ5QixPQTNDdEJELFdBR0tFLGFBd0N3QztNQUR2QztPQUFBLE1BQUE7T0FESixNQWpSUi9CLFlBK1FhbEI7TUFHRCxPQUFBO0tBSXVCO0tBUmpDLFVBQUE7O01BTCtCLElBQWdCQyxvQkFBVkQ7TUFDakM7T0FFbUIsVUFBQSxrREFIY0E7T0FHZCxPQUFBO01BQXlCO01BRHhDO09BQUEsTUFBQTtPQURKLE1BL1ROVSxZQThUdUNWLFVBQVVDO01BRXZDLE9BQUE7S0FDMEM7S0FIbEQsVUFBQTtrQkEzQlNBO01BQ0gsV0FER0E7T0FJSTtRQUFBLE1BQUEsb0NBSkpBLFlBSFR6QjtRQU1VLE1BQUE7T0FBQSxPQUFBOztNQUtBLFlBQUEsK0JBUkR5Qjs7T0FhTTtRQUFBLE1BQUEsb0NBaEJmekI7UUFlWSxNQUFBO09BQUEsT0FBQTs7VUFFRzBFO01BQ0wsU0FES0EsVUFLVWpFLElBTFZpRSxZQUtVakUsZUFEQWtFLElBSlZELFlBSVVDO01BRmI7T0FERW5ELFdBQ0Y7T0FLRW9ELGNBckJMbkQ7T0F3Qlk7U0FBQTtzREFUUEQsVUFNQW9EO01BR08sT0FBQTtLQUNkO0tBMUJQO01BQUEsTUFBQSxrQ0FGQTVFO01BRUEsTUFBQTtNQUFBLE1BQUE7S0FpQ0EsT0FBQTtJQW1CZ0M7V0ExRGhDc0UsU0FDSUMsV0FESkQsYUFmRko7R0E2RWdDO1lBRWhDVyxZQUF1Qix1Q0FqRXZCUixhQWlFc0Q7Ozs7T0E1VnREbkM7T0FxREFRO09Bb0JBQztPQTJCQUM7T0FpR0FZO09BcFBBeEM7T0E4TEFnQztPQXRPQS9DO09BeVNBNEQ7T0FpQkF0QztPQTlUQXZCO09BTUFLO09BV0FDO09Bc2FBdUU7T0E5R0FiOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUNuR01jO0lBS0FDO0lBbkJBQztJQUtBQztJQXhEQUM7SUFLQUM7SUFyQkFDO0lBS0FDO0lBdEJBQztJQUtBQztJQXJITkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQWxCQUMsbUJBQW1CQyxZQUFhLE9BQWJBLGNBQXdDO1lBRTNEQyxrQkFBa0JEO0lBQ3BCLFlBRG9CQTs7UUFJS0U7SUFBbUIsV0FBbkJBO0dBQXVDO1lBTTlEQztJQUF3Qjs7T0FDYjs7T0FDSTs7T0FDSjtlQUNEOztHQUFRO1lBSWxCQyxzQkFBc0JDLE9BQ3hCLE9BbkJFSixrQkFrQnNCSSxPQUNEO1lBRXJCQyx1QkFBdUJEO0lBQ25CLFlBeEJKTixtQkF1QnVCTTs7UUFJQUg7V0FBQUE7R0FPZjtHQUVXO0lBQUEsUUFBQSwyQkFsQm5CSjtJQWtCT1M7SUFBUEM7WUFFQUMsd0JBQXlCQztJQUNsQixXQUhBSCxrQkFFa0JHO0lBRTNCO0dBQUU7WUFJQUMsc0JBS0VDLE9BQU1DO2FBQ05DLGdCQUFnQkM7S0FBVSxPQUFnQixXQURwQ0YsU0FDVUUsU0FBMEIsd0JBZDVDUDtJQWNpRTtJQUNuRSxPQUFBLHVDQUZJSSxPQUNBRTtHQUNrRDtZQUVwREUsU0FBU25CO0lBQXVCLFdBQUEsa0RBQXZCQTtJQUF1QixPQUFBO0dBQXVDO1lBRXZFb0IsK0JBQWlDTCxPQUMvQk07SUFTSixHQVRJQTtTQUNBQyxNQURBRCxRQUFBRSxVQUNBRDs7U0FEQUMsMEJBQ1MsT0FKWEosaUNBSXdDO0lBUTFDO1NBTklLLGlCQURBQyxlQUNBRDs7O01BREFDO3dCQUNTLE9BTlhOLHFDQU00QztJQU05QztTQURJTyxpQkFKQUMsUUFJQUQ7OztNQUpBQyw4QkFJVyxPQVhiUiwrQkFXd0M7SUFDYixPQXJCM0JMO2FBV2lDQztzQkFVREcsU0FBUVU7Y0FDdEMsWUFEc0NBOzs7eUJBR0osV0FWbENILGNBTzhCUDt5QkFFQSxXQVg5QkssU0FTOEJMO2tCQUlMYjtjQUFtQixPQUFBLFdBVDVDc0IsT0FLOEJULFNBSUxiO2FBQWdEO0dBQUM7WUFFNUV3QixnQkFBa0JkLE9BQ2hCTTtJLEdBQUFBO1NBQTBDQyxNQUExQ0QsUUFBQUwsVUFBMENNOztTQUExQ04sMEJBQW1ELGVBQWU7O0tBR2xFOztNQUdTO3FCQUFLRSxnQkFBcUMsT0FBQSxzQkFBckNBLFNBQXNEO01BRHBEOzs7VUFBcUIsV0FBQTtVQUFBLE9BQUE7U0FBbUI7TUFGeEQ7UUFwQkZFO1VBZ0JrQkw7OztZQUtnQixXQUFBO1lBQUEsT0FBQTtXQUFtQjs7OztLQUZ2RCxPQUFBLDZCQUZJQztJQVFXO0lBTk0sT0FBQTs7O09BU25CYztZQUVJQztJQUNOLFVBQU0sd0JBbERKcEI7S0FvRFcsV0FBQTtLQUFBLE9BQUE7O2tCQUV3Q087bUJBR1BiO01BRTlCLFdBM0RQSyxzQkF5RHFDTDtTQUFBQTtPQVc5QixXQUFBLHNDQXJCZHlCO09BcUJjLE9BQUEsNkJBbkJWQzs7TUFxQnFCLFdBQUE7TUFBQSxPQUFBO0tBQW1COztLQWJwQztNQUFBLE9BQUE7TUFESjtRQUFBLGtDQUYrQ2IseUJBQUFBO0tBRzNDLE9BQUE7SUFhcUM7SUFoQkMsT0FBQTtHQWdCQTtZQUU5Q2M7a0JBQ2lEZDs7TUFZckMsV0FyRkxSO01BdUZjLFdBQUE7TUFBQSxPQUFBO0tBQW1CO21CQVZ2Qkw7TUFFTCxXQS9FTEssc0JBNkVVTDtNQUtQLE9BakNOMEI7S0FpQ2E7O0tBTlg7TUFBQSxPQUFBO01BREo7UUFBQSxrQ0FGK0NiLHlCQUFBQTtLQUczQyxPQUFBO0lBV21DO0lBZEcsT0FBQTtHQWNGO1lBRTFDZSxZQUF1QixlQUFlO1lBRXRDQyxvQkFBcUJDO0lBQ3ZCO0tBQUE7S0FXUzs7aUJBQUtqQjtTQUNWO1NBQ0k7VUFBQSxPQUFBLHlDQXhERmE7VUF1REY7WUFBQTtxQ0FEVWI7Y0FBQUE7Y0FaU2lCO1NBY2YsT0FBQTtRQUFtQztLQVAzQjs7O1NBSUQ7aUJBQUEsa0RBSFBuQztTQUdPLE9BQUE7UUFBdUM7SUFWdEQsT0F6RUVvQjs7OztlQThFYTs7a0JBQUE7MkRBSFByQjtlQUdPLE9BQUE7Y0FBdUM7Ozs7R0FTbEQ7WUFFRnFDO0lBQ0Y7S0FBQTtLQVdTOztpQkFBS2xCO1NBQ1Y7U0FBQSxPQUFBO3lDQURVQSx5QkFBQUE7UUFDYztLQU5aOzs7U0FJRDtnQkFBQSxrREFIUHBCO1NBR08sT0FBQTtRQUF1QztJQVZ0RCxPQTFGRXNCOzs7O2VBK0ZhOztrQkFBQTsyREFIUHZCO2VBR08sT0FBQTtjQUF1Qzs7OztHQVFsRDtZQUVGd0M7SUFDRjtLQUFBO0tBV1M7O2lCQUFLbkI7O1VBdElaTjtVQTBJcUIsVUFBQTtVQUFBLE9BQUE7U0FBbUI7O1NBRmxDO1VBQUEsTUFBQTtVQURKO1lBQUE7cUNBRFVNLHlCQUFBQTtTQUVOLE9BQUE7UUFFbUM7S0FUM0I7OztTQUlEO2dCQUFBLGtEQUhQdEI7U0FHTyxPQUFBO1FBQXVDO0lBVnRELE9BMUdFd0I7Ozs7ZUErR2E7O2tCQUFBOzJEQUhQekI7ZUFHTyxPQUFBO2NBQXVDOzs7O0dBV2xEO1lBRUYyQyxpQkFBa0JDO0lBRXBCO0tBQUE7S0FxQ1M7OztTQUlNO2dCQUFBLGtEQUhQN0M7U0FHTyxPQUFBO1FBQXVDO0tBVHRDOzs7U0FJRDtnQkFBQSxrREFIUEQ7U0FHTyxPQUFBO1FBQXVDO0lBcEN0RCxPQTlIRTJCOzs7dUJBK0hjRjt3QkFDUnNCLFNBQVNDO2dCQWpKZjdCOztnQkFvSkk7aUJBQ1c7O29CQUFBLDRDQUpBNkI7aUJBSUEsT0FBQTtnQkFBdUM7Z0JBRGxEOzttQkFBQTs0Q0FKVXZCLHlCQUFBQTtnQkFJb0IsT0FBQTtlQUNvQjtlQUVwRDtnQkFrQkU7aUJBRWM7a0JBRE93QjtrQkFDYkMsTUFBTSxvQ0FET0Q7aUJBRVIsT0EzQlhGOzhCQTJCYSwrQ0FEUEc7OztpQkFHVSxPQTdCaEJIOzsyQkE2QmtCOzs7Ozs7b0JBRE5JO2dCQUFvQixPQTVCaENKOzswQkE0QmtDLCtDQUF0Qkk7O2VBQ29EOztnQkE5S3RFaEM7Z0JBd0tVLFVBQUEseUNBekhObUI7NkJBc0hvQi9CO2lCQXJLeEJZO2lCQXVLYyxPQXRCUjRCLFNBb0JrQnhDO2dCQUVROztpQkFISzt3QkFBQTtpQkFBQSxPQUFBO2dCQUFtQjtnQkFEOUM7dUJBQUE7NkJBTm9DNkM7aUJBRTlCLElBREVoQyx1QkFENEJnQztpQkE3SjlDakMsd0JBOEprQkM7aUJBSU87d0JBQUE7aUJBQUEsT0FBQTtnQkFBbUI7Z0JBTGxDLFVBQUE7O2lCQUR5Qzs7aURBWnJDSyx5QkFBQUE7Z0JBWTREOztnQkFBaEU7aUJBQUEsTUFBQTtpQkFESjttQkFBQTs0Q0FYUUE7cUJBQUFBO3FCQUhJcUI7aUJBY1osTUFBQTtpQkFBQSxNQUFBO2lCQUFBLE1BQUE7Z0JBYUksT0FBQTtlQUFtQztlQUN6QyxPQUFBO2NBS2tFOzs7O0dBV3BFO1lBRUZPLHFCQUFzQkM7SUFDeEI7S0FBQTtLQVdTOztpQkFBSzdCO3NCQUU4QjhCOztXQUdiLFVBQUEsa0RBSGFBO1dBR2IsT0FBQTtVQUFvQjtVQURuQztXQUFBLE1BQUE7V0FESixNQTNKTmpCO1VBNEpVLE9BQUE7U0FDb0M7O1NBSDVDO1VBQUEsTUFBQTtVQURKO1lBQUE7cUNBRFViLHdCQUFBQSxTQVpVNkI7U0FjaEIsT0FBQTtRQUc2QztLQVZyQzs7O1NBSUQ7Z0JBQUEsa0RBSFB2RDtTQUdPLE9BQUE7UUFBdUM7SUFWdEQsT0EzS0U0Qjs7OztlQWdMYTs7a0JBQUE7MkRBSFA3QjtlQUdPLE9BQUE7Y0FBdUM7Ozs7R0FZbEQ7Ozs7T0FqUEZhO09BZ0JBSDtPQWtCQVU7T0FoQkFKO09BUkFEO09BV0FHO09Bc0dBd0I7T0FqQkFEO09BaEVBbEI7T0FXQU07T0FnQkFTO09Bd0RBSztPQWlCQUU7T0FnQkFDO09BbUJBQztPQThDQVE7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3pPQUcsUUFBUUM7SUFDVjtLQUFJQyxNQUFLO0tBQ0xDLE1BQU07aUJBQ0NEO2tCQUNDQztNQUFrQjs7U0FBQTs4Q0FKcEJGLE9BR0NDLFNBQ0NDO01BQWtCLE9BQUE7S0FBMEM7S0FBaEUsT0FBQSx1QkFGSkE7SUFFb0U7SUFEakUsT0FBQSx1QkFGSEQ7R0FHb0U7WUFFdEVFLGVBQWdCQzs7S0FFZCxvQkFFYSxlQUFlO0tBRHpCO01BQUEsTUFBQSx1Q0FIV0E7TUFHWixNQUFBLDRCQVRKTDtNQVFFO1FBQUE7O0tBRUksT0FBQTtJQUF3QjtJQUhYLE9BQUE7O0dBR1k7WUFFL0JNLFlBQWFEOztLQUVYLG9CQUNhLGVBQWU7S0FERjtNQUFBLE1BQUEsdUNBRmZBO01BRWMsTUFBQSw0QkFkM0JMO01BY0U7UUFBQTs7S0FDSSxPQUFBO0lBQXdCO0lBRlgsT0FBQTs7R0FFWTtZQUUvQk8sY0FBY0Y7O0tBRVosb0JBRWEsZUFBZTtLQUR6QjtNQUFBLE1BQUEsdUNBSFNBO01BR1YsTUFBQSw0QkFwQkpMO01BbUJFO1FBQUE7O0tBRUksT0FBQTtJQUF3QjtJQUhYLE9BQUE7O0dBR1k7WUFFL0JRLFlBQWFDOztLQUVYLG9CQUlhLGVBQWU7S0FEdkIsVUFBQSx5Q0FMTUE7O01BSW9CLFVBQUE7TUFBQSxPQUFBO0tBQW1CO0tBRGhEO01BQUEsTUFBQTtNQURGO1FBQUE7O0tBSUksT0FBQTtJQUF3QjtJQUxYLE9BQUE7O0dBS1k7OztVQXZCL0JMLGdCQU1BRSxhQUtBQyxlQU1BQzs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NwQjRCOzs7OztJQUg1QkU7SUFDQUM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQzRCOztPQUFFOztJQUE5QkM7TUFBcUI7OztPQVFqQjs7Y0FEQTtJQUZGOzs7UUFDRTs0Q0FUSkg7O0lBS0FJLG9CQUNGO0lBU21DO2NBQUU7SUFBbkNDLG1CQUFtQjtJQUNrQjtjQUFFO0lBQXZDQztNQUF1QjtJQUNlO2NBQUU7SUFBeENDO01BQXdCO0lBQ2dCO2NBQUU7SUFBMUNDO01BQTBCO0lBUzFCLFVBQUU7OztPQUZFOzs7O0lBRkY7Y0FDRTtJQUpKQyxnQkFDRjtJQWVFLFVBQUU7OztPQUZFOzs7O0lBRkY7Y0FDRTtJQUpKQyxnQkFDRjtjQWdCTTs7VUFEQTs7O09BREE7O2NBREE7SUFGRjs7O1FBQ0U7NENBeENKUjs7SUFvQ0FTO01BQ0Y7SUFXRUM7TUFDRiw4Q0FiRUQ7SUFla0M7Y0FBRTtJQUFwQ0Usb0JBQW9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUVwQkMsU0FBVUM7SUFDWjtLQUFJQyxhQUFhLHNDQURMRDtLQUVaLE9BRllBO2tCQUdKRTtLQUNKO01BQUlDLFVBQVUsc0NBRFZEO01BVVEsT0FBQSxzQ0FWUkE7TUFVRixPQUFBO01BSk07UUFBQSwwQkFSUkQsWUFHSUU7ZUFNSzs7TUFITDs7YUFBQywrQ0FIREE7S0FTRixPQUFBO0lBQTBDO0lBWGhELE9BQUE7R0FZb0M7O2dCQUloQkMsUUFBVSxPQWxCNUJMLFNBa0JrQkssUUFBeUI7R0FBM0M7SUFBQSxNQUFBO0lBRkFDLGtCQUNGO0lBSTBCLGNBQUU7SUFEMUJDO01BQ0YsdURBTEVEO0lBUUYsTUFBQTtJQXlERSxNQUFBO0lBSWMsTUFBQTtJQUFBLE1BQUE7SUFKZCxNQUFBO0lBQUEsTUFBQTtJQUNBLE1BQUE7SUFBK0MsTUFBQTtJQUMvQztNQUFBOzs7SUFBQSxNQUFBO0lBRCtDLE1BQUE7SUFBQSxNQUFBO0lBQUE7TUFBQTs7WUF2SC9DWjs7SUF1SCtDLE1BQUE7SUFBL0MsTUFBQTtJQUFBLE1BQUE7SUFBQSxNQUFBO0lBQUEsY0FBQTtJQUFBLE1BQUE7SUFEQSxNQUFBO0lBQUEsTUFBQTtJQUF3QixNQUFBO0lBQUEsTUFBQTtJQUF4QixNQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxjQUFBO0lBQUEsT0FBQTtJQXpERixPQUFBO0lBQUEsT0FBQTtJQXdEUSxPQUFBO0lBQUEsT0FBQTtJQXhEUixPQUFBO0lBQUEsT0FBQTtJQW1ERSxPQUFBO0lBSWMsT0FBQTtJQUFBLE9BQUE7SUFKZCxPQUFBO0lBQUEsT0FBQTtJQUNBLE9BQUE7SUFBK0MsT0FBQTtJQUMvQztNQUFBO0lBQUEsT0FBQTtJQUQrQyxPQUFBO0lBQUEsT0FBQTtJQUFBO01BQUE7O1lBbEgvQ0Q7O0lBa0grQyxPQUFBO0lBQS9DLE9BQUE7SUFBQSxPQUFBO0lBQUEsT0FBQTtJQUFBLGVBQUE7SUFBQSxPQUFBO0lBREEsT0FBQTtJQUFBLE9BQUE7SUFBd0IsT0FBQTtJQUFBLE9BQUE7SUFBeEIsT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUFuREYsT0FBQTtJQUFBLE9BQUE7SUFrRFEsT0FBQTtJQUFBLE9BQUE7SUFsRFIsT0FBQTtJQUFBLE9BQUE7SUE2Q0UsT0FBQTtJQUljLE9BQUE7SUFBQSxPQUFBO0lBSmQsT0FBQTtJQUFBLE9BQUE7SUFDQSxPQUFBO0lBQStDLE9BQUE7SUFDL0M7TUFBQTtJQUFBLE9BQUE7SUFEK0MsT0FBQTtJQUFBLE9BQUE7SUFBQTtNQUFBOztZQTdHL0NEOztJQTZHK0MsT0FBQTtJQUEvQyxPQUFBO0lBQUEsT0FBQTtJQUFBLE9BQUE7SUFBQSxlQUFBO0lBQUEsT0FBQTtJQURBLE9BQUE7SUFBQSxPQUFBO0lBQXdCLE9BQUE7SUFBQSxPQUFBO0lBQXhCLE9BQUE7SUFBQSxPQUFBO0lBQUEsT0FBQTtJQUFBLGVBQUE7SUFBQSxPQUFBO0lBN0NGLE9BQUE7SUFBQSxPQUFBO0lBNEMwQixPQUFBO0lBQUEsT0FBQTtJQTVDMUIsT0FBQTtJQUFBLE9BQUE7SUE0Q0UsT0FBQTtJQUFJO01BQUE7SUFBQSxPQUFBO0lBQUosT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBNUNGLE9BQUE7SUFBQSxPQUFBO0lBMkNRLE9BQUE7SUFBQSxPQUFBO0lBM0NSLE9BQUE7SUFBQSxPQUFBO0lBc0NFLE9BQUE7SUFJYyxPQUFBO0lBQUEsT0FBQTtJQUpkLE9BQUE7SUFBQSxPQUFBO0lBQ0EsT0FBQTtJQUErQyxPQUFBO0lBQy9DLE9BQUE7SUFBQSxPQUFBO0lBRCtDLE9BQUE7SUFBQSxPQUFBO0lBQUE7TUFBQTs7WUFqRS9DTzs7SUFpRStDLE9BQUE7SUFBL0MsT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUFEQSxPQUFBO0lBQUEsT0FBQTtJQUF3QixPQUFBO0lBQUEsT0FBQTtJQUF4QixPQUFBO0lBQUEsT0FBQTtJQUFBLE9BQUE7SUFBQSxlQUFBO0lBQUEsT0FBQTtJQXRDRixPQUFBO0lBQUEsT0FBQTtJQXFDUSxPQUFBO0lBQUEsT0FBQTtJQXJDUixPQUFBO0lBQUEsT0FBQTtJQThCRSxPQUFBO0lBTVEsT0FBQTtJQUFBLE9BQUE7SUFOUixPQUFBO0lBQUEsT0FBQTtJQUlBLE9BQUE7SUFBQTtNQUFBOztZQTNFQUY7O0lBMkVBLE9BQUE7SUFBQSxlQUFBO0lBQUEsT0FBQTtJQUpBLE9BQUE7SUFBQSxPQUFBO0lBR3FCLE9BQUE7SUFBQSxPQUFBO0lBSHJCLE9BQUE7SUFBQSxPQUFBO0lBQ0EsT0FBQTtJQUVJLE9BQUE7SUFBQSxPQUFBO0lBRkosT0FBQTtJQUFBLE9BQUE7SUFBQTs7T0FBQTs2Q0E1R0FUOztJQTRHQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUFEQSxPQUFBO0lBQUEsT0FBQTtJQUF3QixPQUFBO0lBQUEsT0FBQTtJQUF4QixPQUFBO0lBQUEsT0FBQTtJQUFBLE9BQUE7SUFBQSxlQUFBO0lBQUEsT0FBQTtJQTlCRixPQUFBO0lBQUEsT0FBQTtJQTZCd0IsT0FBQTtJQUFBLE9BQUE7SUE3QnhCLE9BQUE7SUFBQSxPQUFBO0lBNkJFLE9BQUE7SUFBSTtNQUFBO0lBQUEsT0FBQTtJQUFKLE9BQUE7SUFBQSxPQUFBO0lBQUEsT0FBQTtJQTdCRixPQUFBO0lBQUEsT0FBQTtJQTRCUSxPQUFBO0lBQUEsT0FBQTtJQTVCUixPQUFBO0lBQUEsT0FBQTtJQXVCRSxPQUFBO0lBSWMsT0FBQTtJQUFBLE9BQUE7SUFKZCxPQUFBO0lBQUEsT0FBQTtJQUNBLE9BQUE7SUFBK0MsT0FBQTtJQUMvQyxPQUFBO0lBQUEsT0FBQTtJQUQrQyxPQUFBO0lBQUEsT0FBQTtJQUFBO01BQUE7O1lBeEYvQ0c7O0lBd0YrQyxPQUFBO0lBQS9DLE9BQUE7SUFBQSxPQUFBO0lBQUEsT0FBQTtJQUFBLGVBQUE7SUFBQSxPQUFBO0lBREEsT0FBQTtJQUFBLE9BQUE7SUFBd0IsT0FBQTtJQUFBLE9BQUE7SUFBeEIsT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUF2QkYsT0FBQTtJQUFBLE9BQUE7SUFzQlEsT0FBQTtJQUFBLE9BQUE7SUF0QlIsT0FBQTtJQUFBLE9BQUE7SUFlRSxPQUFBO0lBTVEsT0FBQTtJQUFBLE9BQUE7SUFOUixPQUFBO0lBQUEsT0FBQTtJQUlBLE9BQUE7SUFBQTtNQUFBOztZQTdGQUQ7O0lBNkZBLE9BQUE7SUFBQSxlQUFBO0lBQUEsT0FBQTtJQUpBLE9BQUE7SUFBQSxPQUFBO0lBR2dCLE9BQUE7SUFBQSxPQUFBO0lBSGhCLE9BQUE7SUFBQSxPQUFBO0lBQ0EsT0FBQTtJQUVJLE9BQUE7SUFBQSxPQUFBO0lBRkosT0FBQTtJQUFBLE9BQUE7SUFBQTs7T0FBQTs2Q0EvRkFKOztJQStGQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUFEQSxPQUFBO0lBQUEsT0FBQTtJQUF3QixPQUFBO0lBQUEsT0FBQTtJQUF4QixPQUFBO0lBQUEsT0FBQTtJQUFBLE9BQUE7SUFBQSxlQUFBO0lBQUEsT0FBQTtJQWZGLE9BQUE7SUFBQSxPQUFBO0lBY2tCLE9BQUE7SUFBQSxPQUFBO0lBZGxCLE9BQUE7SUFBQSxPQUFBO0lBY0UsT0FBQTtJQUFJLE9BQUE7SUFBQSxPQUFBO0lBQUosT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBZEYsT0FBQTtJQUFBLE9BQUE7SUFhUSxPQUFBO0lBQUEsT0FBQTtJQWJSLE9BQUE7SUFBQSxPQUFBO0lBUUUsT0FBQTtJQUlRLE9BQUE7SUFBQSxPQUFBO0lBSlIsT0FBQTtJQUFBLE9BQUE7SUFFQSxPQUFBO0lBQUE7TUFBQTtvREFkQXFCO0lBY0EsT0FBQTtJQUFBLGVBQUE7SUFBQSxPQUFBO0lBRkEsT0FBQTtJQUFBLE9BQUE7SUFDd0QsT0FBQTtJQUFBLE9BQUE7SUFEeEQsT0FBQTtJQUFBLE9BQUE7SUFDQSxPQUFBO0lBQXdCO01BQUE7O0lBQUEsT0FBQTtJQUF4QixPQUFBO0lBQUEsT0FBQTtJQUFBLE9BQUE7SUFBQSxlQUFBO0lBQUEsT0FBQTtJQURBLE9BQUE7SUFBQSxPQUFBO0lBQXdCLE9BQUE7SUFBQSxPQUFBO0lBQXhCLE9BQUE7SUFBQSxPQUFBO0lBQUEsT0FBQTtJQUFBLGVBQUE7SUFBQSxPQUFBO0lBUkYsT0FBQTtJQUFBLE9BQUE7SUFPUSxPQUFBO0lBQUEsT0FBQTtJQVBSLE9BQUE7SUFBQSxPQUFBO0lBRUUsT0FBQTtJQUlRLE9BQUE7SUFBQSxPQUFBO0lBSlIsT0FBQTtJQUFBLE9BQUE7SUFFQSxPQUFBO0lBQUE7TUFBQTs7WUEvREFaLG1CQVNBQzs7SUFzREEsT0FBQTtJQUFBLGVBQUE7SUFBQSxPQUFBO0lBRkEsT0FBQTtJQUFBLE9BQUE7SUFDeUMsT0FBQTtJQUFBLE9BQUE7SUFEekMsT0FBQTtJQUFBLE9BQUE7SUFDQSxPQUFBO0lBQXdCLE9BQUE7SUFBQSxPQUFBO0lBQXhCLE9BQUE7SUFBQSxPQUFBO0lBQUEsT0FBQTtJQUFBLGVBQUE7SUFBQSxPQUFBO0lBREEsT0FBQTtJQUFBLE9BQUE7SUFBd0IsT0FBQTtJQUFBLE9BQUE7SUFBeEIsT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUFGRixPQUFBO0lBQUEsT0FBQTtJQUNzQixPQUFBO0lBQUEsT0FBQTtJQUR0QixPQUFBO0lBQUEsT0FBQTtJQUNFLE9BQUE7SUFBSSxPQUFBO0lBQUEsT0FBQTtJQUFKLE9BQUE7SUFBQSxPQUFBO0lBQUEsT0FBQTtJQURGLE9BQUE7SUFET1ksU0FDUDtJQW9FRSxXQUFFO2VBRCtCO0lBQTlCOztXQUFFO0lBRkxDLGFBQ0Y7SUFPRTs7T0FBRTs7ZUFEK0I7SUFBOUI7O1dBQUU7SUFGTEMsY0FDRjtJQWlCb0Q7VUFBRTtJQUFyQyxlQUFFO2VBQWI7SUFERSxXQUFFOzs7T0FGRTs7ZUFEQTtJQUZGOztXQUNFO0lBSlI7VUFDRTtJQUZDLGVBQUU7SUFGTEMsT0FDRjtJQWNxQixlQUFFO0lBQXJCQyxPQUFPLHFEQTVGSko7SUEwR0MsV0FBRTs7O09BRkU7OztlQURBO0lBRkY7O1dBQ0U7SUFOUjs7T0E5QkZDOztRQUtBQztZQTRCSTtJQUpDLGVBQUU7SUFGTEcsT0FDRjtJQWdCRyxlQUFFO0lBbENMQztNQWlDRjs7O1lBaENJSCxVQWVBQyxVQUNBQztZQW9CRkU7SUFDRjtnQkFZOEM7S0FBbkMsZUFBRTtLQUZUOztRQUNFLHlEQWpESkQ7O2dCQThDTTtnQkFEQTs7O1FBREEsNkNBck1OM0I7O0tBbU1JLGVBQ0U7SUFMUjtZQTdMRUU7Z0JBK0xBO0dBYUQ7WUFFQzJCO0lBQ3VCO0tBQXJCQztPQUFxQjs7V0FoS3ZCbkI7b0JBZ0tvQ29CO1lBQStCO1lBQUEsT0FBQSxrQ0FBL0JBLGtCQUFBQTtXQUFvQztJQUNqRSx1Q0FETEQ7SUFHcUI7S0FBckJFO09BQXFCLDhDQWhLdkJwQjtLQWlLRXFCOztTQURBRDtrQkFDd0JEO1VBQXFCO1VBQUEsT0FBQSxrQ0FBckJBLGtCQUFBQTtTQUE0Qjs7SUFDL0MsMENBRExFO0lBR1E7S0FBUkMsUUFBUSw4Q0FwTlYvQjtLQXFORWdDO09BQWlCOztXQURqQkQ7b0JBQzhCSDtZQUFRO1lBQUEsT0FBQSxrQ0FBUkEsa0JBQUFBO1dBQWE7SUFDL0MsSUFBcUIsSUFBQSxXQUFLLDJCQUR0QkksU0FDQUM7Ozs7U0FBQUE7O0lBQ0ssc0NBRExBO0lBR0osY0FFZ0JMO0tBQThDO0tBQUEsT0FBQSxrQ0FBOUNBLGtCQUFBQTtJQUFxRDtJQUFyRDtLQUFBLE9BQUEsOENBak5kM0I7S0FpTkU7SUFERjtJQUdGLGNBRWdCMkI7S0FBa0Q7S0FBQSxPQUFBLGtDQUFsREEsa0JBQUFBO0lBQXlEO0lBQXpEO0tBQUE7T0FBQSw4Q0FwTmQxQjtLQW9ORTtJQURGO0lBR0YsY0FFZ0IwQjtLQUFtRDtLQUFBLE9BQUEsa0NBQW5EQSxrQkFBQUE7SUFBMEQ7SUFBMUQ7S0FBQTtPQUFBLDhDQXZOZHpCO0tBdU5FO0lBREY7SUFHRixjQUVnQnlCO0tBQXFEO0tBQUEsT0FBQSxrQ0FBckRBLGtCQUFBQTtJQUE0RDtJQUE1RDtLQUFBO09BQUEsOENBMU5keEI7S0EwTkU7SUFERjtJQUlGLGNBRWtCd0I7S0FBNkM7S0FBQSxPQUFBLGtDQUE3Q0Esa0JBQUFBO0lBQWtEO0lBQWxEO0tBQUEsT0FBQSw4Q0F0S2hCWDtLQXNLRTtPQUFBOztJQURGO0lBR0Y7R0FBRTtZQUVBaUI7SUFwQ0FSO0lBdUNPO0lBQ0E7SUFFVDtHQUFFO1lBRUFTO0lBQ0YsY0FDRVA7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUEwQzs7S0FHaEIsV0FBQSwrQkFqUTFCL0I7S0FpUVM7S0FqRFQ2QjtLQW9ETztJQUFTO0lBTGI7S0FBQSxPQUFBO0tBREgsT0FBQSw4Q0FyR0FGO0lBcUdBO0lBUUYsY0FDRUk7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUFpRDt5QkFuQmpETSx3QkFzQk8seUJBQVM7SUFGYjtLQUFBLE9BQUE7S0FESCxPQUFBLDhDQW5IQWQ7SUFtSEE7SUFLRixjQUNFUTtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0lBQW1EOztLQUVuQyxJQUFMUSxLQUFLO0tBQ1QsY0FDRVI7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtLQUFvQztLQUNqQzs7UUFBQSx3QkFBVTtLQURiO1FBaE9UcEI7S0FvT21CO01BQVJ1QixRQUFRLDhDQWpSbkIvQjtLQWtSTyxjQUNFNEI7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtLQUFhO2lCQVJYUTs7VUFjU0gsOEJBQWMsdUJBQWRBOzs7S0FMVCxXQUFBO0tBREYsb0RBRkVGO0tBV0osY0FDRUg7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtLQUFxRDtLQUNsRDtNQUFBLFdBbkJEUTtNQWtCRixPQUFBLDhDQW5SVG5DO0tBbVJTO0tBSUYsY0FDRTJCO01BQUE7TUFBQSxPQUFBLGtDQUFBQSxtQkFBQUE7S0FBMEQ7S0FDdkQ7TUFBQSxXQXhCRFE7TUF1QkY7UUFBQSw4Q0F0UlRqQztLQXNSUztLQUtGLGNBQ0V5QjtNQUFBO01BQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0tBQXlEO0tBQ3REO01BQUEsV0E5QkRRO01BNkJGO1FBQUEsOENBN1JUbEM7S0E2UlM7S0FLRixjQUNFMEI7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtLQUE0RDtLQUN6RDtNQUFBLFdBcENEUTtNQW1DRjtRQUFBLDhDQWpTVGhDO0tBaVNTO0tBTUYsY0FDRXdCO01BQUE7TUFBQSxPQUFBLGtDQUFBQSxtQkFBQUE7S0FBc0Q7S0FDbkQ7TUFBQSxXQUFRO01BRFgsT0FBQSw4Q0FyUVRuQjtLQXFRUztLQUdGLGNBQ0VtQjtNQUFBO01BQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0tBQWtEO0tBRzFDO01BQUEsT0FBQTtNQUZMO1FBQUEsd0JBQ0U7TUFGTCxPQUFBLDhDQW5QVFg7S0FtUFM7S0FRaUIsV0FBQSwrQkFyVTFCcEI7S0FxVVM7S0FHRjtJQUFTO0lBMURiO0tBQUEsT0FBQTtLQURILE9BQUEsOENBM1FBRTtJQTJRQTtJQThETztJQUNULGNBQ0U2QjtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0lBQW1EOztLQUVuQztLQUNUO0lBQVM7SUFGYjtLQUFBLE9BQUE7S0FESCxPQUFBLDhDQWpUQXRCO0lBaVRBO0lBS0YsY0FDRXNCO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBbUQ7O0tBRW5DO0tBQ1Q7SUFBUztJQUZiO0tBQUEsT0FBQTtLQURILE9BQUEsOENBaFVBdkI7SUFnVUE7SUFLRjtHQUFFO3dDQTFKQW9CLFNBOERBVTs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDN1BBRSxlQUFnQkMsWUFDZkM7SUFDSDtrQkFJa0RDO0tBRS9COztRQUFBO1dBUkRGLFlBUVkseUNBRm9CRTs7O0tBR2hDLE9BQUE7SUFFYTtJQUx2QjtLQUFBLE9BQUE7S0FGSjtlQUNFO0lBSE4sT0FBQSxxREFER0Q7R0FZTTtZQUVQRSxhQUFhQztJQUNmLHVDQURlQSxRQUliLE9BSmFBO0lBRWIsV0FBQSw4QkFGYUE7SUFFYixPQUFBO0dBRUs7WUFFTEM7SUFBa0JDLGtCQUE2QkMsb0JBQzdDQyxrQkFBNkJDO0lBQ2pDO0tBQUlDLHFCQUQ2QkQ7O1dBU3pCO2dCQURBOztXQURBO0tBRkY7OztTQUNFLDZDQVB5Q0Y7O0tBRzdDSSxrQkFDRjtLQWtCRSxXQUFFO2dCQUZFOzs7UUFEQTs7O0tBRkY7OztTQUNFLDZDQWpCSkg7O0tBYUFJO09BQ0Y7a0JBV09DO0tBRUM7TUFBZ0MsT0FBQSwrQ0FGakNBO01BRUM7Z0JBQUEsK0NBRkRBO0tBRWlDLE9BQUE7SUFBL0I7SUFIVDtLQURFQyx3QkFDRixrQ0F2QkVKO0tBOEJBLE9BQUE7S0EwQkUsT0FBQTtLQUFBLE9BQUE7S0ExQkYsT0FBQTtLQUFBLE9BQUE7S0FDSyxPQUFBO0tBd0JBLE9BQUE7S0FBQSxPQUFBO0tBeEJBLE9BQUE7S0FBQSxPQUFBO0tBQ0EsT0FBQTtLQXNCRyxPQUFBO0tBQUEsT0FBQTtLQXRCSCxPQUFBO0tBQUEsT0FBQTtLQWdCSCxPQUFBO0tBS1csT0FBQTtLQUFBLE9BQUE7S0FMWCxPQUFBO0tBQUEsT0FBQTtLQUNHLE9BQUE7S0FBK0IsT0FBQTtLQUFBLE9BQUE7S0FBL0IsT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBO3FEQXJDTEU7S0FxQ29DLE9BQUE7S0FBQSxPQUFBO0tBQS9CLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREgsT0FBQTtLQUFBLE9BQUE7S0FBd0IsT0FBQTtLQUFBLE9BQUE7S0FBeEIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FoQkcsT0FBQTtLQUFBLE9BQUE7S0FlRyxPQUFBO0tBQUEsT0FBQTtLQWZILE9BQUE7S0FBQSxPQUFBO0tBUzJILE9BQUE7S0FLbkgsT0FBQTtLQUFBLE9BQUE7S0FMbUgsT0FBQTtLQUFBLE9BQUE7S0FDQSxPQUFBO0tBQStCLE9BQUE7S0FBQSxPQUFBO0tBQS9CLE9BQUE7S0FBQSxPQUFBO0tBQUE7T0FBQTs7YUF6Q2hJRDs7S0F5QytKLE9BQUE7S0FBQSxPQUFBO0tBQS9CLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREEsT0FBQTtLQUFBLE9BQUE7S0FBd0IsT0FBQTtLQUFBLE9BQUE7S0FBeEIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FUM0gsT0FBQTtLQUFBLE9BQUE7S0FRaUksT0FBQTtLQUFBLE9BQUE7S0FSakksT0FBQTtLQUFBLE9BQUE7S0FDQSxPQUFBO0tBTU0sT0FBQTtLQUFBLE9BQUE7S0FOTixPQUFBO0tBQUEsT0FBQTtLQUNBLE9BQUE7S0FBQTtPQUFBO2lEQVpMRztLQWV3RCxPQUFBO0tBQUEsT0FBQTtLQUFwQixPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBSC9CLE9BQUE7S0FBQSxPQUFBO0tBR21CLE9BQUE7S0FBQSxPQUFBO0tBQXBCLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FIQyxPQUFBO0tBQUEsT0FBQTtLQUFBO1dBQUEsNkNBcENXUjtLQW9DWCxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FEQSxPQUFBO0tBQUEsT0FBQTtLQUF3QixPQUFBO0tBQUEsT0FBQTtLQUF4QixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURBLE9BQUE7S0FBQSxPQUFBO0tBQXlCLE9BQUE7S0FBQSxPQUFBO0tBQXpCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREEsT0FBQTtLQUFBLE9BQUE7S0FBdUIsT0FBQTtLQUFBLE9BQUE7S0FBdkIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FETCxPQUFBO0tBQUEsT0FBQTtLQUFpQixPQUFBO0tBQUEsT0FBQTtLQUFqQixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0lBQUEsT0FBQTtHQTJCRztnQkFFTVM7SUFBa0I7SUFBQSxPQUFBLGtDQUFsQkEsa0JBQUFBO0dBQTBCO0dBQTFCOztJQUFYQztZQUVBQyxXQUFXQyxlQUFjQztJQUMzQjtLQUlTLE9BQUE7S0FGQUMsa0JBQ0Y7S0FISEMsaUJBTUMsV0FQc0JGLFNBR2xCQzs7a0JBUUNFLFlBQVdwQjtLQUNkLEdBREdvQixZQUVEO0tBRXNCO01BQWxCRixrQkFBa0IseUNBSlZsQjtNQUtScUIsSUFBSSxXQWhCVUosU0FlZEM7UUFDQUcsTUFmVEYscUJBZVNFO01BZlRGLGdCQWVTRTs7TUFPRTtPQUFBLFdBQUU7T0FEQyxlQUFFOzthQURQO01BRkYsV0FDRTs7S0FNRjtJQUNIO0lBakJOLFdBQUEsa0NBVldMO0lBVVgsT0FBQTtHQWtCd0M7WUFFeENNLE1BQU9MO0lBQ1Q7a0JBRVVqQjtLQUNIO01BQUlrQixrQkFBa0IseUNBRG5CbEI7TUFFQ3VCLFFBQVEsV0FMVk4sU0FJRUM7S0FFSixRQURJSyxPQVNGO0tBSGU7TUFBQSxPQUFBLHVCQU5iQTtNQU1FLFdBQUU7TUFEQyxlQUFFOztZQURQO0tBRkYsV0FDRTtJQU1BO0lBWlQsV0FBQTtJQUFBLE9BQUE7R0FhMEI7WUFFMUJDLFlBQVdDO0lBQ2I7O0tBQTBCLElBQU1DO0tBQVMsT0FBQSwwQkFENUJELEtBQ21CQztJQUFpQjtJQUFwQyxXQUFBO3dCO0lBQUEsT0FBQTtHQUEyRDtZQUV0RUMsUUFBVUM7SSxHQUFBQSxTQUFtQkMsTUFBbkJELFFBQUFFLE9BQW1CRCxjQUFuQkM7b0JBQXdDQztLQUN4QixJQUF4QkosVUFKRkg7OztNQUtGLEdBRllNO1lBQ1JIO1dBRUdLLFNBSEtGO2lDQUNSSCwwQkFBQUEscUJBRXVCLE9BQXBCSzs7O1FBRkhMLGtDQUFBQSwwQkFBQUE7T0FHYyxPQUprQ0k7O2lCQUt6Qzs7WUFFVEUsTUFBTS9CLE9BQU1nQyxhQUFZQztJQUMxQjtnQkFDK0I7S0FBakIsT0FBQSxnQ0FGTmpDO0tBQ0prQztXQUNBO0lBRUosR0FKY0Y7O01BT0xHLElBUEtIO01BSVZJOztTQUdVLGdEQUFMRDtTQU5MRDs7U0FHQUUsYUFIQUY7SUFVOEI7S0FBQSxPQUFBLCtDQVgxQmxDO0tBV0osT0FBQTtLQUZBcUMsT0FDRixzQ0FWd0JKO0tBc0JKLE9BQUEsK0JBdEJkakM7Z0JBc0JFOzs7UUFEQTtvRUFyQkZBOztnQkFvQkU7S0FGRjs7O1NBQ0U7OztLQUpSO1dBQ0Usd0RBUEFxQztJQU1GLE9BQUE7cURBWEVEO0dBcUJEO1lBRURFLFFBQVFDO0k7OztNQVdIO09BVFlDO09BQU5MO09BQVZNOzs7VUFTYSxJQUFrQkMsZUFBVEMsb0JBQUhIO1VBQW1CLE9BdEN2Q1QsTUFzQ29CUyxHQUFHRyxTQUFTRDtTQUEwQjtPQUFyRCxPQUFBLGtDQVRZRjtPQVFmLFdBckNGVCxNQTZCQ1UsUUFRaUIsK0JBUlBOOzs7VUFNTDs7O2tCQURBO09BRkY7O2NBQ0UsNkNBTkVJO01BVU4sT0FBQTs7O0lBVDBCLE9BQUE7O1lBWTVCSyxjQUFjNUMsT0FBTTZDLFFBQU9DLFNBQVFqRDtJQUNyQzs7O1FBU007Ozs7T0FWZ0JnRDtrRUFBT0M7c0RBQUFBO2dCQUt2QjtLQUZGO2VBQ0UsNkNBSlU5QztJQUNoQixPQUFBLHFEQURxQ0g7R0FZNUI7WUFFUGtELFdBQVlDLElBQUdGO0k7S0FDVCxPQUFBOztLQUNRWDs7S0FBTmM7S0FBSkM7S0FBSFY7SUFDRCxHQUhZUTs7TUFNSEcsT0FOR0g7TUFHUkksV0FHYSw2Q0FBUkQ7O1NBSExDOztLQWFVLElBQWFILGNBQUpDLGVBQUhWO0tBQWEsT0E5QmpDSSxjQThCb0JKLE1BQUdVLElBQUlEO0lBQWlDO0lBQXZEO0tBQUEsT0FBQSxrQ0FkU2Q7S0FhWixXQTdCRlMsY0FnQkNKLE1BQUdVLElBQUlEO0tBVUMsT0FBQSw0QkFaTUg7S0FVVixXQUNFO0tBREgsV0FBQSw2QkFQQU07SUFZRixPQUFBOztZQUdGQyxNQUFPQyxPQUFPQyxNQUFNQyxRQUFRQyxTQUFTQyxPQUFPQztJQUNwQixJQUF0Qk4sUUFuRkYvQjtJQW9GRixTQUFJc0MsUUFBUXJDLEtBQUlzQztLQUNkLEtBRGNBLE9BRUo7U0FDSEMsVUFIT0Q7S0FJVCxPQUFBLDRCQUpLdEMsS0FEUjhCLGFBSUtTO0lBSUQ7SUFHOEM7S0FBQSxPQVZsREYsbUJBRjBDRDtLQVlRLE9BQUE7S0FBeEIsT0FWMUJDLG1CQUZtQ0Y7S0FZVCxPQUFBO0tBQTVCLE9BVkVFLHFCQUYwQkg7S0FZNUIsT0FBQTtLQUQ0QyxPQVQxQ0csb0JBRmtCSjtLQVd3QixPQUFBO0tBQXRCLE9BVHBCSSxrQkFGWUw7S0FXUSxPQUFBO0tBQXhCLE9BVElLLG1CQUZLTjtJQVdlLE9BQUE7R0FFcEI7WUFFRlMsU0FBV3JDO0ksR0FBQUEsU0FBVUMsTUFBVkQsUUFBQXNDLFlBQVVyQyxjQUFWcUM7SUFDZ0IsSUFBekJELFdBbEdGekM7O0tBcUdlLElBQU0yQztLQUFlLE9BQUEsNEJBQWZBLFNBSG5CRjtJQUc0RDtJQUE1RCxXQUFBO3dCO0lBREYsSUFERUcsVUFDRjtJQUdGLE9BSklBLFVBQUFBLFVBRlNGOztZQVVYRyxhQUFhQyxXQUFVQztJQUN6QixjQUFBMUQ7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUFvQjs7S0FFTDtPQUhVMEQ7T0FHSzs7V0FIZkQ7b0JBRzZCekQ7WUFBWTtZQUFBLE9BQUEsa0NBQVpBLGtCQUFBQTtXQUFpQjtLQUN2RDtJQUFRO0lBRlosV0FBQTs7YUFGYXlEO0dBSUE7WUF3Q2JFLE9BQVF0Qjs7S0FNRCxXQUFBLG9DQU5DQTtLQU1ELE9BQUE7SUFBNkQ7a0JBSGhFckM7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUF3QjtJQUFDO0tBQUEsT0FBQSxnQ0FIckJxQztLQUdMOytCO1NBM01IcEM7SUE0TUcsT0FBQTtHQUd1QjtZQUUxQjJELGFBQWV2QixJQUFld0IsYUFDNUJDLE1BQ0FDLGNBQXlCQztJQUU3QjtLQUdJO1dBQUUsK0NBTEZEO2VBSWlDO0tBQTlCOztZQUFFO0tBRkxFLFNBQ0Y7S0FxQ1csVUFBRTs7O1FBRkU7OztlQURBO0tBRkY7OztTQUNFOzs7S0FKUixVQUNFO0tBREgsTUFBQSxnQ0E5QkpBO0tBNkJPLGNBQUU7ZUFEUDtLQURZLGNBQUU7ZUFBZCxvREE5QkZIO0tBNEJjLFVBQUUsK0NBN0JZRDtlQTZCdEI7S0FGTSxVQUFFO0tBREM7OztTQUFFOzs7S0FGVCxVQUNFOzs7UUFIRTs7Ozs7UUFEQTs7Ozs7ZUFEQTtLQUZGOzs7U0FDRTs7O0tBSlIsV0FDRTtLQUZDLGVBQUU7S0FGVDtXQUNFO0tBRkMsZUFBRTtLQUZMSyxPQUNGO0lBcUNGLGNBQVNsRTtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQXlDO0lBQXpDLFdBQUEsOENBdENMa0U7SUFzQ0sseURBN0NvQkY7SUF5RHJCOzs7UUFFRTs7O0tBRkYsZUFDRTtLQUpSOztRQUNFLHlEQWhEQUU7Ozs7UUE2Q0U7Ozs7O1FBREE7O2dCQURBLDZDQXBEVzdCO0tBa0RiLGVBQ0U7SUFLSixPQUFBO0dBUUM7Ozs7T0FuV0RyRDtPQXFCQU07T0E2RkFtQjtPQWlCQUU7T0FHQUc7T0FvSkE2QztPQXhNQTFEO09Bc0ZBMEI7T0E2Q0FlO09BOEVBa0I7T0FoR0F4QjtPQXBMQWhEO09BcUVBYztPQWdKQWtEO09BVUFJOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ3pPRTs7Ozs7O0lBTEZXOzs7Ozs7Ozs7Ozs7Ozs7Y0FTSTs7VUFEQTs7O09BREE7O0lBRkY7Y0FDRTtJQUpKQyxtQkFDRjtJQVU0QjtVQUFFO0lBQVgsVUFBRTtJQUFuQkMsU0FBUztJQUNVLE1BQUE7SUFBbkJDLFdBQVc7SUFDWEM7TUFBdUIsOENBYnZCSDs7Ozs7Ozs7Ozs7OztZQWVBSTtJQUNGOztLQW1GZTtNQURFQztRQUNGOztZQXRGYkY7cUJBc0YwQkc7YUFBdUI7YUFBQSxPQUFBLGtDQUF2QkEsa0JBQUFBO1lBQTRCO0tBR3pDLDhDQUpFRDtLQU9lLFdBQUEsNEJBM0c5Qk47S0EyR2E7S0FFRjtJQUFTO0lBVmQ7S0FBQSxNQUFBO0tBSk0sTUFBQTtLQUFBO09BQUE7O2FBN0ZaQzs7S0E2RlksTUFBQTtLQUFBLGNBQUE7S0FGTixVQUVNOzs7UUFKVjs7VUEzRkZEOzs7Ozs7O2lCQXdCZVE7S0FDSCxVQURHQTs7TUFHQztPQUVPQztPQURBQztPQUdMLFFBUEhGOzs7UUFVY0c7Y0FDTCwwQkFES0Esb0JBTk5EOzs7TUFpQkQ7T0FkQUU7T0FjQSxVQUFFO09BREMsY0FBRTtPQUZMQyxhQUNGO01BSUYsYUFDRU47T0FBQTtPQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtNQUFnRDttQkFDNUJPO09BRVgsOENBdkJOSjtPQTBCYSxzQ0FMSUk7T0FNYjtNQUFTO01BTmI7T0FBQSxNQUFBO09BREgsTUFBQSw4Q0FORUQ7TUFNRjttQkFZU0UsR0FDSCxPQURHQSxjQUk4QjtNQUxyQztPQURFQyxVQUNGLGlDQTlCQ1A7T0FzQ1U7aUJBQUUsZ0RBVFhPO09BREZDLFlBVUY7T0FNZSxNQUFBLDhCQTdDWlA7T0EyQ0Q7O1VBZEFPOztXQWdCRTtlQS9CRko7T0EyQkFLLFlBQ0Y7TUFPRixhQUNFWDtPQUFBO09BQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO01BQTBDOztPQUdqQyw4Q0FyRE5HO09Bd0RJO01BQVE7TUFMWjtPQUFBLE1BQUE7T0FESCxNQUFBLDhDQVRFUTtNQVNGO01BUVM7O2lCQUFFLDZDQXZEVE47TUF1RGlDLE9BQUE7NERBakJqQ007S0FpQitDO0tBNUR2RCxJQURFQyxNQUNGO0tBK0RrQixPQUFBLDRCQWhFaEJBLFNBWmhCakIsWUFDQUM7SUEyRW9EO0lBbEU3QztLQUFBLE1BQUE7S0FESCxNQUFBO0tBREcsY0FBRTtLQUZUO1dBQ0U7SUFERixPQUFBO0dBMkZDO1lBRURpQjtJQUNPO0lBQ1Q7S0FLUyxxQjtRQXhHUGhCO2lCQXdHZ0JHO1NBQUE7U0FBQSxPQUFBLGtDQUFBQSxpQkFBQUE7UUFBMkI7S0FDcEM7SUFBUztJQUZkO0tBQUEsTUFBQTtLQUZBLE1BQUEsOEJBcEhGUDtJQW1IQTtJQU9GLGFBQ0VPO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7SUFBMEM7O0tBR2hCLFVBQUEsOEJBOUgxQlA7S0E4SFM7S0FFRjtJQUFTO0lBSmI7S0FBQSxNQUFBO0tBREgsTUFBQSwrQ0E5R0FFO0lBOEdBO0lBT0Y7R0FBRTtZQUVBbUIsZ0JBQWMsU0FBRTtxQ0FuSGhCaEIsU0ErRkFlLFFBb0JBQzs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHQ3RJNkM7Ozs7SUFBQSxRQUFBO0lBQXpCQztJQUFwQkM7O1VBQUFBLG9CQUFvQkQ7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ0VwQkUsNEJBQTRCQztJQUM5QixXQUQ4QkEsVUFBQUEsVUFBQUEsVUFBQUE7R0FNN0I7WUFFQ0M7SUFDRjtLQUNJO01BQUlDO1FBRUY7S0FFRixvQkFFYSxlQUFlO0tBRDFCO01BQUEsTUFBQSwwQ0FMRUE7TUFJSjtRQUFBOztLQUVJLE9BQUE7SUFBd0I7SUFQWCxPQUFBOztHQU9ZO1lBRS9CQztJQUNGO0tBQ0ksb0JBQ2EsZUFBZTtLQURIO01BQUEsTUFBQTtNQUF6QjtRQUFBOztLQUNJLE9BQUE7SUFBd0I7SUFGWCxPQUFBOztHQUVZO1lBRS9CQztJQUNGO0tBQ2E7S0FDVCxvQkFDYSxlQUFlO0tBREg7TUFBQSxNQUFBO01BQXpCO1FBQUE7O0tBQ0ksT0FBQTtJQUF3QjtJQUhYLE9BQUE7O0dBR1k7WUFFL0JDOztLQUdJO01BREVDO1FBL0JOUDtVQWlDTTtLQUVKLG9CQUVhLGVBQWU7S0FEMUI7TUFBQSxNQUFBLDBDQUxFTztNQUlKO1FBQUE7O0tBRUksT0FBQTtJQUF3QjtJQVBYLE9BQUE7O0dBT1k7WUFFL0JDO0lBQ0Y7S0FFTTtNQURFQztRQUNGO0tBRUYsb0JBZXVCLGVBQWU7a0JBWnZCQztNQUVMOzs7bUJBRktBO01BV1A7S0FBZTtLQVpuQjtNQUFBLE1BQUE7TUFERixNQUFBLDBDQUpFRDtNQUdKO1FBQUE7O0tBRUksT0FBQTtJQWFtQztJQW5CdEIsT0FBQTs7R0FtQnVCO1lBRTFDRSxZQUFhQztJQUNmLElBQUlDLFVBRFdELFVBRVhFLE9BRldGOztLQUlYLG9CQUVhLGVBQWU7S0FEMUI7TUFBQSxNQUFBLG1DQUpGQyxhQUNBQztNQUVBO1FBQUE7Ozs7O0tBRUksT0FBQTtJQUF3QjtJQUhYLE9BQUE7O0dBR1k7WUFFL0JDO0lBQ0YsYUFBcURDO0tBQ2pELGFBQ3dDQztNQUNyQixJQUFQQyxPQUFPLGdDQURxQkQ7TUFHOUI7O1FBRkVDOzs7TUFLTyxVQUFBO01BQUEsT0FBQTtLQUFtQjs7S0FObEM7TUFBQSxNQUFBO01BRHFCO1FBQUEsa0NBRHdCRix5QkFBQUE7TUFDakQ7UUFBQTs7S0FDSSxPQUFBO0lBTW1DO0lBUkssT0FBQTs7Ozs7R0FRSjtZQUUxQ0c7SUFDRixhQUFxREg7S0FDakQsYUFDd0NJO01BQ3JCLElBQVBGLE9BQU8sMkNBRHFCRTtNQUc5Qjs7UUFGRUY7OztNQUtPLFVBQUE7TUFBQSxPQUFBO0tBQW1COztLQU5sQztNQUFBLE1BQUE7TUFEcUIsTUFBQSxrQ0FEd0JGLHdCQUFBQTtNQUNqRDtRQUFBOztLQUNJLE9BQUE7SUFNbUM7SUFSSyxPQUFBOzs7OztHQVFKOzs7O09BakYxQ2Q7T0FVQUU7T0FLQUM7T0FNQUM7T0FVQUU7T0E4QkFPO09BV0FJO09BbkJBUjs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lDekRFVTtJQUNBQztJQVVBQztJQThEQUM7SUFvQ0FDO0lBcURBQztJQUNBQztJQUNBQztJQUNBQzs7O0lBb0xBQztJQXFDQUM7SUEwQkFDO0lBMEJBQztJQXFDQUM7SUEwQkFDO0lBMEJBQztJQXFCQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBbGlCRkMsa0JBQW9CQztJLEdBQUFBLFNBQVVDLE1BQVZELFFBQUFFLFVBQVVELGNBQVZDO2tCQUltQkM7S0FDckM7TUFBSUMsZ0JBQWdCLHlDQURpQkQ7TUFHL0I7UUFBQSw0QkFGRkM7V0FHQyx1QkFSYUYsU0FHbEJuQjtXQU9LLHVCQVZhbUIsU0FFbEJwQjtLQVFLLE9BQUE7SUFBdUI7SUFOSSxPQUFBOztHQWM5Qjs7O09BR0U7OztjQURBO0lBRkY7Y0FDRTtJQUpKdUIsUUFDRjtJQVlFO1VBQUU7Y0FEK0I7SUFBOUI7O1dBQUU7SUFGTEMsU0FDRjtJQWlCb0IsY0FBRTs7O09BQWQsd0RBbEJOQTs7SUFpQmtCLGNBQUU7SUFEaEI7O09BQ0Usd0RBM0JORDs7SUF5Qk8sY0FBRTtJQUZULFVBQ0U7SUFKSSxNQW5DUk47SUFpQ0ksY0FDRTtJQUpKUSxPQUNGO1lBZ0JFQyxlQUFhLFdBakJiRCxTQWlCcUI7WUFFckJFO0lBQ0Y7S0FBSUMsV0FBVyw4Q0FwQmJIO0tBcUJFSSxZQUFZLDhDQXBDZE47SUFxQ0YsU0FBSU87S0FDZ0M7TUFBOUJDO1FBQThCOztZQUZoQ0Y7cUJBRTZDRzthQUFZO2FBQUEsT0FBQSxrQ0FBWkEsa0JBQUFBO1lBQWlCO0tBQ3ZELDhDQURMRDtLQUVKO0lBQVE7SUFHVixjQUNFQztLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQW1COztLQUVKO0tBQ1Q7SUFBUztJQUZiLFdBQUE7SUFERixtREFURUo7SUFjSixjQUFTSTtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQW9CO0lBQUksV0FBQSxnQ0FaN0JGO0lBWUssbURBYkxEO0lBY0o7R0FBRTtHQXJEb0MsMkJBQ3BDM0IsSUFrQ0F3QixTQUVBQztZQW1CRk0sY0FBY0osV0FBVUs7SUFDMUIsY0FBQUY7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUFvQjs7S0FFTDtPQUhXRTtPQUdJOztXQUhkTDtvQkFHNEJHO1lBQVk7WUFBQSxPQUFBLGtDQUFaQSxrQkFBQUE7V0FBaUI7S0FDdkQ7SUFBUTtJQUZaLFdBQUE7O2FBRmNIO0dBSUQ7O2dCQWVHTSxHQUNILE9BREdBLFFBQzJEO0dBRm5FO0lBQUEsTUFBQTtjQURGO2NBREE7Y0FEQTtjQURBO0lBRkYsY0FDRSw2Q0FOSmhDO0lBRUFpQyxVQUNGO1lBZUVDLGlCQUEwRCxXQWhCMURELFlBZ0JtRTtHQUM3RCxJQUFORSxNQUFNLDhDQWpCTkY7WUFtQkFHO0lBNUJGTjtNQTBCRUs7ZUFJdUJFO09BRWQsSUFEREMsSUFDQywwQkFGY0QsNkJBQUFBO09BT25CLE9BQUEsc0NBTklDO01BTWdDO0lBRTFDO0dBQUU7R0FqQ3VDLDhCQUN2Q3RDLE1Ba0JBa0MsV0FHQUU7WUFpQkFHLG9CQUFvQkY7SUFDdEI7S0FBSUcsSUFBSSx1QkFEY0g7S0FFbEJJLFNBQUosOEJBRElEO0lBRUosT0FESUM7S0FBSjtLQUNpQixVQUFBLHdCQUZiRCxHQUNBQztNQUVGLE9BQUEsdUJBSEVEOztJQUtGLE9BTEVBO0dBS0Q7O2dCQWFhUixHQUNILE9BcEJYTyxvQkFtQmNQLFNBRXlEO0dBSGpFO0lBQUEsTUFBQTtjQURGO2NBREE7O1VBREE7Y0FEQTtjQURBLDZDQWZKL0I7SUFhRTs7V0FDRTtJQUpKeUMsVUFDRjtZQWlCRUMsaUJBQTBELFdBbEIxREQsWUFrQm1FO1lBRW5FRTtJQUNjLElBQVpsQixZQUFZLDhDQXJCZGdCO0lBckRGWjtNQTBFSUo7ZUFFMkJXO2dCQUNyQlE7UUFDRjtTQUFJQyxZQUNGO1FBR0YsY0FBQWpCO1NBQUE7U0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7UUFBaUI7UUFBSTs7V0FBQSxnQ0FBVSx1QkFKM0JpQjs7aUJBSlJwQjtPQVE4RDtPQUU1RDtRQUNrQixJQUFacUIsWUFBWSw2QkFUT1Y7UUFTUDs7O1dBQVpVO2NBUkZGO2NBWUEsc0NBSkVFO1FBRUY7Ozs7OztRQUcwQixPQWIxQkY7O01BYXdDO0lBRWxEO0dBQUU7R0FsRG1DO0lBQUEsc0JBQ25DNUMsTUE0QkEwQyxXQUVBQztJQTJCQUksY0FBYzs7SUFHcUI7Y0FHMUI7MkNBTlRBOztnQkFPWSxzQ0FQWkE7O0dBUWtCO0dBTHBCO1lBUUVDLGVBQWdCQyxPQUFvQkM7SUFDdEMsS0FEa0JELGNBQW9CQztRQUsvQkMsVUFMV0Y7U0FBb0JDLFFBSXRCO0lBRUQsSUFBVFYsU0FBUywyQkFOdUJVO09BTWhDVixTQURDVztLQUdNLHNDQW5CWEo7S0FvQkU7O1lBSkdJLFNBVUgsV0FWR0E7SUFNZTtJQUFOLElBQVJDLGNBQWMsMkJBWGdCRjtJQVl6QixzQ0F2QlhILGFBc0JNSztJQUVKLE9BRklBO0dBSU07WUFFWkMsWUFBYUosT0FBb0JDO0lBR2pDLFdBcEJBRixlQWlCYUMsT0FBb0JDO2tCQUU1QlgsR0FBSyxXQUFLLDJCQUZrQlcsUUFFNUJYLElBQTZCO0lBQ2xDLE9BQUE7R0FBNkI7R0FZN0I7SUFBQSxNQUFBO0lBREEsTUFBQSxzQ0ExQ0FRO2dCQW1DS0UsT0FBTUs7SUFDVCxLQURHTCxjQUFNSztRQUtGSCxVQUxKRjtTQUFNSyxPQUdPO0lBR3FCO0lBQUEsV0FBQSwyQkFONUJBO0lBTTRCLE9BQUEsb0NBRDlCSDtHQUNrRDtHQVA3RCxJQURFSSxtQkFDRjtpQkFhbUVEO0lBQzVEO1FBRDREQSxTQUFBQTtJQUl6QyxPQUFBO0dBQThCO0dBSnhDO0lBQUEsT0FBQTtJQUFkLE9BQUE7SUFGQXRDLFVBQ0Y7SUFRdUQsV0FBRTtJQUE1Qzs7O1FBQUUsNkNBeERiYjtZQStDQWE7SUFRQXdDO01BQ0Y7SUFHdUQsV0FBRTtJQUE1Qzs7O1FBQUUsNkNBNURidEQ7WUFnREFjO0lBV0F5QztNQUNGO0lBRUVDOztPQU5BRjs7UUFPaUIsa0RBM0JqQkQ7WUF1QkFFO0lBa0JBLE9BQUE7SUFEQSxPQUFBLHNDQXpFQVY7aUJBZ0VLRSxPQUFNSztJQUlMLFdBeENORCxZQW9DS0osT0FBTUs7a0JBR0FLLFNBQVcsT0FBWEEsV0FBb0M7SUFEM0MsSUFERUMsUUFDRjtJQUlGLEtBTElBLE9BTU07UUFDSEMsVUFQSEQ7SUFPWSxPQUFBLHFDQUFUQztHQUE2QztHQVR4RDtJQURFQyxrQkFDRjtJQW9CRTs7T0FBRSxrREFyQkZBOztlQW1CSTtJQUZGOzs7UUFDRSw2Q0FqRkoxRDs7SUE2RUEyRCxhQUNGO0lBZUUsT0FBQTtJQURBLE9BQUEsc0NBM0ZBaEI7aUJBdUZLRSxPQUFNSztJQUNILFlBNURSRCxZQTJES0osT0FBTUs7Z0JBRUM7UUFDSEs7SUFBVyxPQUFBLHFDQUFYQTtHQUF5RDtHQUpwRTtJQURFSyxxQkFDRjtJQVdFOztPQUFFLGtEQVpGQTs7ZUFXbUI7SUFBaEIsZUFBRSw2Q0FwR0wvRDtJQWtHQWdFLGdCQUNGO0lBaUJFO01BQUE7b0JBckRBUCxpQkFpQkFLLGdCQWtCQUU7SUFrQkE7aUJBTmNYO0lBQ0gsV0FER0E7SUFJVyxPQUFBO0dBQXdDO0dBTDdDO0lBQUEsT0FBQTtJQUFkLE9BQUE7ZUFERjtJQUZGLGVBQ0UsNkNBM0dKckQ7SUF1R0FpRTtNQUNGO1lBY0VDLGlCQUNGLFdBaEJFRCxtQkFnQmdCO1lBRWhCRTtJQUNRLElBQU5sQyxNQUFNLCtDQTFDUjZCO0lBMkNGLGNBQ0VuQztLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQWE7O0tBRUU7S0FJTDtNQUFBLE9BQUE7TUFIQStCO1FBL0ZWTixZQWlHVSxzQ0E3SFZOO21CQWtJZVksU0FBVyxPQUFYQSxXQUFvQztLQUQzQyxJQURFQyxRQUNGLG9EQU5FRDtLQVVKLEdBTElDO1VBT0tDLFVBUExEO01BT2MsOENBQVRDOzs7TUFDRztLQUVaO0lBQVE7SUFqQlosV0FBQTtJQURGLHNEQUZFM0I7SUFzQko7R0FBRTtZQUVBbUMsb0JBQW9CbkMsS0FBSW9DO0lBQzFCLGNBQ0UxQztLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQWE7O0tBRUU7S0FJTDtNQUFBLE9BQUE7TUFIQXFCO1FBeElWRDtVQTBJVSxzQ0FySlZEO01Bd0pVSSxVQUFRLDhDQVZNbUIsT0FLZHJCO01BTUFHO1FBOUlWSjtVQTZJVUc7VUFFbUI7S0FFZCxzQ0E1SmZKLGFBeUpVSztLQUlKO0lBQVE7SUFaWixXQUFBO0lBREYsc0RBRm9CbEI7SUFpQnRCO0dBQUU7WUFFQXFDO0lBQ1EsSUFBTnJDLE1BQU0sK0NBN0dSc0I7SUF5RkFhLG9CQW9CRW5DLGNBQ2tDZSxPQUFTLEdBQUEsT0FBVEEsY0FBa0I7SUFDeEQ7R0FBRTtZQUVBdUI7SUFDUSxJQUFOdEMsTUFBTSwrQ0EvR1J1QjtJQXNGQVksb0JBeUJFbkMsY0FDa0NlLE9BQVMsSUFBQSxPQUFUQSxjQUFrQjtJQUN4RDtHQUFFO1lBRUF3QjtJQXREQUw7SUE0Q0FHO0lBS0FDO0lBU0Y7R0FBRTtHQXBMbUM7SUFBQSxzQkFDbkN2RSxNQXNIQWtFLFdBeURBTTtJQTRCQSxXQUFFO0lBQUY7OztJQVRTO2VBTVM7UUFKeUJDO0lBRzlCLE9BSDhCQTtHQUluQjtHQVBsQjtJQUFBLE9BQUE7SUFEdUIsT0FBQTtlQUF6QjtlQURBOzs7T0FEQTs7SUFGRixlQUNFLDZDQU5KckU7SUFFQXNFLFdBQ0Y7WUFtQkVDLGlCQUEwRCxXQXBCMURELGFBb0JvRTtZQUVwRUU7SUFDcUI7S0FBbkJDO09BQW1CLDhDQXZCckJIO0lBd0JGLGNBQ0UvQztLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQTBCOztLQUVYO0tBQ1Q7SUFBUTtJQUZaLFdBQUE7SUFERjtPQUZFa0Q7SUFRSjtHQUFFO0dBbEMrQjtJQUFBLGtCQUMvQnpFLE1Bc0JBdUUsV0FFQUM7SUF1QkEsV0FBRTtlQUZFOzs7T0FEQTs7O0lBRkYsZUFDRSw2Q0FOSnZFO0lBRUF5RSxXQUNGO1lBU0VDLGlCQUEwRCxXQVYxREQsYUFVb0U7WUFFcEVFO0lBQ1EsSUFBTi9DLE1BQU0sOENBYlI2QztJQWNGLGNBQ0VuRDtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0lBQWE7O0tBRUU7S0FDVDtJQUFRO0lBRlosV0FBQTtJQURGLHNEQUZFTTtJQU9KO0dBQUU7R0F2QitCO0lBQUEsa0JBQy9CNUIsTUFZQTBFLFdBRUFDO0lBc0JBLFdBQUU7ZUFGRTs7O09BREE7OztJQUZGLGVBQ0UsNkNBTkoxRTtJQUVBMkUsV0FDRjtZQVNFQyxpQkFBMEQsV0FWMURELGFBVW9FO1lBRXBFRTtJQUNlLElBQWJDLGFBQWEsOENBYmZIO0lBY0YsY0FDRXREO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBb0I7O0tBRUw7S0FDVDtJQUFRO0lBRlosV0FBQTtJQURGO09BRkV5RDtJQU9KO0dBQUU7R0F2QitCO0lBQUEsa0JBQy9COUUsTUFZQTRFLFdBRUFDO0lBaUNBO1VBQUU7SUFBRjs7aUJBWGNuRTtJQUNILFdBREdBO0lBQ0gsT0FBQTtHQU8wQjtHQVQvQjtJQUFBLE9BQUE7ZUFERjs7O09BREE7OztJQUZGLGVBQ0UsNkNBTkpUO0lBRUE4RSxXQUNGO1lBb0JFQyxpQkFBMEQsV0FyQjFERCxhQXFCb0U7WUFFcEVFO0lBQ2UsSUFBYkgsYUFBYSw4Q0F4QmZDO0lBeUJGLGNBQ0UxRDtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0lBQW9COztLQUVMO0tBQ1Q7SUFBUTtJQUZaLFdBQUE7SUFERjtPQUZFeUQ7SUFPSjtHQUFFO0dBbEMrQjtJQUFBLGtCQUMvQjdFLE1BdUJBK0UsV0FFQUM7SUFzQkE7VUFBRTtlQUZFOzs7T0FEQTs7O0lBRkYsZUFDRSw2Q0FOSi9FO0lBRUFnRixXQUNGO1lBU0VDLGlCQUEwRCxXQVYxREQsYUFVb0U7WUFFcEVFO0lBQ2UsSUFBYk4sYUFBYSw4Q0FiZkk7SUFjRixjQUNFN0Q7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUFvQjs7S0FFTDtLQUNUO0lBQVE7SUFGWixXQUFBO0lBREY7T0FGRXlEO0lBT0o7R0FBRTtHQXZCaUM7SUFBQSxvQkFDakM1RSxNQVlBaUYsV0FFQUM7SUFzQkE7VUFBRTtlQUZFOzs7T0FEQTs7O0lBRkYsZUFDRSw2Q0FOSmpGO0lBRUFrRixXQUNGO1lBU0VDLGlCQUEwRCxXQVYxREQsYUFVb0U7WUFFcEVFO0lBQ2UsSUFBYlQsYUFBYSw4Q0FiZk87SUFjRixjQUNFaEU7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUFvQjs7S0FFTDtLQUNUO0lBQVE7SUFGWixXQUFBO0lBREY7T0FGRXlEO0lBT0o7R0FBRTtHQXZCa0MseUJBQ2xDM0UsTUFZQW1GLFdBRUFDO1lBY0FDO0lBQ0Y7a0JBSWtEOUU7S0FDckM7TUFFSSxPQUFBLHlDQUhpQ0E7TUFDakMrRSxRQUNGO0tBR0YsT0FBQSx3QkFKSUE7SUFJZTtJQUx4QjtLQUFBLE9BQUE7S0FGSixXQUNFO0tBSEZDLFFBQ0Y7S0FXNkIsT0FBQSxzQ0FaM0JBO0tBWVUsZUFBRSw2Q0FmZHRGO0lBZUYsV0FBRTtHQUEwRDtZQUUxRHVGLGdCQUFZLFNBQUU7R0FsQndCLDZCQUN0Q3ZGLE1BRUFvRixXQWVBRztZQU1BQyxhQUFjQyxnQkFDYkM7SUFDSDtrQkFlc0NqRSxPQUFTLE9BQUEsd0JBQVRBLE9BQTRCO0lBQTVEO0tBQUEsT0FBQSw0QkFoQkhpRTtLQWNELFdBQ0U7Z0JBSEU7a0JBRlVDLEdBQUssT0FBQSxxQ0FBTEEsR0FBb0M7SUFENUM7S0FBQSxPQUFBLGtDQVZRRjs7O1FBU1Y7Ozs7UUFEQTs7Ozs7UUFEQTs7Ozs7UUFEQTs7O1VBTlVBOztLQUlaOzs7U0FDRTs7O0lBVUosT0FBQTtHQUdDO1lBRURHO0lBQ0Y7a0JBZVV0RjtLQUNtQixJQUFsQnVGLGtCQUFrQix5Q0FEbkJ2RjttQkFJT3dGLFFBQ0osT0FESUEsYUFFbUM7S0FIM0M7TUFERUM7UUFDRixvREFGRUY7TUFRQUcsU0FBZSxrREFQZkQ7S0FRSixPQUFBLHVCQURJQztJQUNnQjtJQVh6QjtLQUFBLE9BQUE7S0FBQTtrQkFaUTFGO0tBQ21CLElBQWxCdUYsa0JBQWtCLHlDQURuQnZGO21CQUlPd0YsUUFDSixPQURJQSxhQUU4QztLQUh0RDtNQURFRztRQUNGLG9EQUZFSjtNQVFBSztRQUFxQixtREFQckJEO0tBUUosT0FESUM7SUFDUTtJQUVqQixPQW5DQVYsYUFzQkE7R0F5QjBCO1lBRTFCVztJQUNGO2tCQWlCVTdGO0tBQ21CLElBQWxCdUYsa0JBQWtCLHlDQURuQnZGO21CQUlPd0YsUUFDSixPQURJQSxhQUVvQztLQUg1QztNQURFTTtRQUNGLG9EQUZFUDtNQVFBUSxVQUFjLGlEQVBkRDtLQVFKLE9BQUEsdUJBRElDO0lBQ2U7SUFYeEI7S0FBQSxPQUFBO0tBQUE7a0JBZFEvRjtLQUNtQixJQUFsQnVGLGtCQUFrQix5Q0FEbkJ2RjttQkFJT3dGLFFBQ0osT0FESUEsYUFFK0M7S0FIdkQ7TUFERVE7UUFDRixvREFGRVQ7TUFRQVU7UUFDRixtREFSRUQ7S0FVSixPQUhJQztJQUdZO0lBRXJCLE9BbEVBZixhQW1EQTtHQTJCMEI7WUFFMUJnQixlQUFlQztrQkFHUFgsUUFDSixPQURJQSxhQUU2QztJQUhyRDtLQURFVTtPQUNGLG9EQUZlQztJQVFqQixLQVBJRCxnQkFRTTtRQUNIRSxtQkFUSEY7SUFVRixXQURLRSx1QkFBQUE7R0FJQztZQUVOQztJQUNGO2tCQUVVckc7S0FDSDtNQUFJdUYsa0JBQWtCLHlDQURuQnZGO01BRUcsUUFyQlhrRyxlQW9CU1g7aUJBR007U0FESGE7S0FBa0IsT0FBQSx1QkFBbEJBO0lBQ007SUFMbEIsV0FBQTtJQUFBLE9BQUE7R0FNMEI7WUFFMUJFO0lBQ0Y7a0JBRVV0RztLQUNtQixJQUFsQnVGLGtCQUFrQix5Q0FEbkJ2RjtZQTdCUmtHLGVBOEJTWDtJQUdTO0lBTGxCLFdBQUE7SUFBQSxPQUFBO0dBTTBCO1lBRTFCZ0Isa0JBUUVDLGVBUitCQztJQUNuQyxJQUFJQyxRQUQrQkQsT0FBQUEsWUFBQUEsWUFBQUEsVUFRdEI7V0FSc0JBO0tBZ0VKO0tBSE47TUFBQSxPQUFBLDRDQTdEVUEsT0FDL0JDO01BMERpQixXQUNFO2lCQUZMOzs7O0lBRk4sV0FBQTtXQXhEdUJEO0tBa0RQO0tBRk47TUFBQSxPQUFBLDRDQWhEYUEsT0FDL0JDO01BNkNjLFdBQ0U7aUJBRkw7Ozs7SUFGTixXQUFBO1dBM0MwQkQ7S0FzQ1Y7S0FITjtNQUFBLE9BQUEsNENBbkNnQkEsT0FDL0JDO01BZ0NXLFdBQ0U7aUJBRkw7Ozs7SUFGTixXQUFBO1dBOUI2QkQ7S0F5QmI7S0FKTjtNQUFBLE9BQUEsNENBckJtQkEsT0FDL0JDO01Ba0JRLFdBQ0U7aUJBRkw7Ozs7SUFGTjtLQUFBLE9BQUE7S0FBQTs7a0JBRldDO0tBQUs7cUJBYmZEO21CQWFnQywrQkFBdEJDO0lBQTREO0lBRnBFO0tBQUE7T0FBQTs7O2dCQUpGSCxpQkFQQUUsTUFPQUY7O0tBRUYsV0FDRTtJQUZKLFdBQUE7R0E2RHFCO0dBRU47WUFFYkk7SUFDRjtLQUErQixRQUFBO0tBQWhCQztLQUFYQzs7S0FDSjs7S0FLVTtNQUFBO01BQ1M7O2tCQUFLQyxTQUFRdkI7d0JBRXNCd0I7V0FDaEM7WUFBSVIsZ0JBSE1oQjtZQVNOLE9BM0Z4QmUsa0JBcUZ3QkMsZUFENEJRO1dBTTlCLCtCQWZUSDtXQWtCa0IsV0FBQTtXQUFBLE9BQUE7VUFBbUI7O1VBVGxDO1dBQUEsT0FBQTtXQURKO2FBQUE7c0NBRFVFLDBCQUFBQTtVQUVOLE9BQUE7U0FTbUM7TUFYbEM7TUFZRTs7O1VBQ0UsK0JBcEJSRjtVQXFCVSxXQUFBO1VBQUEsT0FBQTtTQUFtQjtLQWZsQyxPQUFBOzs7Ozs7O0lBZ0JJO0lBbkJWLElBQ0U7O0lBMEJMO0tBQUEsT0FBQTtLQXlDQyxPQUFBO0tBQUEsT0FBQTtLQXpDRCxPQUFBO0tBQUEsT0FBQTtLQXFDTCxPQUFBO0tBQStDLE9BQUE7S0FBQSxPQUFBO0tBQS9DLE9BQUE7S0FBQSxPQUFBO0tBRVU7V0FBRSxxREFyRUpDO0tBbUVSLE9BQUE7S0FBK0MsT0FBQTtLQUFBLE9BQUE7S0FBL0MsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FyQ0ssT0FBQTtLQUFBLE9BQUE7S0FvQ0MsT0FBQTtLQUFBLE9BQUE7S0FwQ0QsT0FBQTtLQUFBLE9BQUE7S0FHRyxPQUFBO0tBZ0NHLE9BQUE7S0FBQSxPQUFBO0tBaENILE9BQUE7S0FBQSxPQUFBO0tBcUJILE9BQUE7S0FVUyxPQUFBO0tBQUEsT0FBQTtLQVZULE9BQUE7S0FBQSxPQUFBO0tBTUcsT0FBQTtLQUFzQixPQUFBO0tBQUEsT0FBQTtLQUF0QixPQUFBO0tBQUEsT0FBQTtLQUVFLFdBbkpKUjtLQWlKRSxPQUFBO0tBQXNCLE9BQUE7S0FBQSxPQUFBO0tBQXRCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBTkgsT0FBQTtLQUFBLE9BQUE7S0FLUyxPQUFBO0tBQUEsT0FBQTtLQUxULE9BQUE7S0FBQSxPQUFBO0tBQ0csT0FBQTtLQUFzQixPQUFBO0tBQUEsT0FBQTtLQUF0QixPQUFBO0tBQUEsT0FBQTtLQUVFLFdBeEpKRDtLQXNKRSxPQUFBO0tBQXNCLE9BQUE7S0FBQSxPQUFBO0tBQXRCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREgsT0FBQTtLQUFBLE9BQUE7S0FBaUIsT0FBQTtLQUFBLE9BQUE7S0FBakIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FyQkcsT0FBQTtLQUFBLE9BQUE7S0FvQkcsT0FBQTtLQUFBLE9BQUE7S0FwQkgsT0FBQTtLQUFBLE9BQUE7S0FXSCxPQUFBO0tBUW1DLE9BQUE7S0FBQSxPQUFBO0tBUm5DLE9BQUE7S0FBQSxPQUFBO0tBUUcsT0FBQTtLQUFzQixPQUFBO0tBQUEsT0FBQTtLQUF0QixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQVJILE9BQUE7S0FBQSxPQUFBO0tBT1MsT0FBQTtLQUFBLE9BQUE7S0FQVCxPQUFBO0tBQUEsT0FBQTtLQUNHLE9BQUE7S0FLVSxPQUFBO0tBQUEsT0FBQTtLQUxWLE9BQUE7S0FBQSxPQUFBO0tBQ0ksT0FBQTtLQUFzQixPQUFBO0tBQUEsT0FBQTtLQUF0QixPQUFBO0tBQUEsT0FBQTtLQUVGLFdBM05KZjtLQXlOTSxPQUFBO0tBQXNCLE9BQUE7S0FBQSxPQUFBO0tBQXRCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREosT0FBQTtLQUFBLE9BQUE7S0FBc0IsT0FBQTtLQUFBLE9BQUE7S0FBdEIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FESCxPQUFBO0tBQUEsT0FBQTtLQUFpQixPQUFBO0tBQUEsT0FBQTtLQUFqQixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQVhHLE9BQUE7S0FBQSxPQUFBO0tBVUcsT0FBQTtLQUFBLE9BQUE7S0FWSCxPQUFBO0tBQUEsT0FBQTtLQUNILE9BQUE7S0FRcUMsT0FBQTtLQUFBLE9BQUE7S0FSckMsT0FBQTtLQUFBLE9BQUE7S0FRRyxPQUFBO0tBQXNCLE9BQUE7S0FBQSxPQUFBO0tBQXRCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBUkgsT0FBQTtLQUFBLE9BQUE7S0FPUyxPQUFBO0tBQUEsT0FBQTtLQVBULE9BQUE7S0FBQSxPQUFBO0tBQ0csT0FBQTtLQUtVLE9BQUE7S0FBQSxPQUFBO0tBTFYsT0FBQTtLQUFBLE9BQUE7S0FDSSxPQUFBO0tBQXNCLE9BQUE7S0FBQSxPQUFBO0tBQXRCLE9BQUE7S0FBQSxPQUFBO0tBRUYsV0FwTEpPO0tBa0xNLE9BQUE7S0FBc0IsT0FBQTtLQUFBLE9BQUE7S0FBdEIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FESixPQUFBO0tBQUEsT0FBQTtLQUFzQixPQUFBO0tBQUEsT0FBQTtLQUF0QixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURILE9BQUE7S0FBQSxPQUFBO0tBQWlCLE9BQUE7S0FBQSxPQUFBO0tBQWpCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREcsT0FBQTtLQUFBLE9BQUE7S0FBc0IsT0FBQTtLQUFBLE9BQUE7S0FBdEIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FISCxPQUFBO0tBQUEsT0FBQTtLQUVTLE9BQUE7S0FBQSxPQUFBO0tBRlQsT0FBQTtLQUFBLE9BQUE7S0FBQSxXQUFBLDZDQS9OQ2xHO0tBK05ELE9BQUE7S0FBQSxlQUFBO0lBSEQsV0FHQztHQTRDQTtZQUVDc0gsaUJBQVksU0FBRTtHQTlRd0IsNkJBQ3RDdEgsT0FnTUFpSCxZQTZFQUs7WUFHRkM7SUFDRjtLQVVNLE9BQUE7S0FJSSxPQUFBOztJQUNGO0tBQUEsT0F2ckJKekY7S0FzckJNLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FKSixPQUFBO0tBQUEsT0FBQTtLQUd5QixPQUFBO0tBQUEsT0FBQTtLQUh6QixPQUFBO0tBQUEsT0FBQTtLQUNJLE9BQUE7S0FFRTtPQUFBO0tBQUEsT0FBQTtLQUZGLE9BQUE7S0FBQSxPQUFBOztJQUFBO0tBQUEsV0FBQSwrQ0Evc0JOMUM7S0Erc0JNLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURKLE9BQUE7S0FBQSxPQUFBO0tBTEksT0F4ekJSYTtLQXN6QkksZUFDRTtLQUpKdUgsY0FDRjs7SUFpQmU7S0FBYkMsYUF0eEJBL0c7S0FpeUJHLE9BQUE7S0FBQTtPQUFBO3FEQTdCSDhHO0tBOEJJLE9BQUE7S0FTTyxPQUFBO0tBQUEsT0FBQTtLQVRQLE9BQUE7S0FBQSxPQUFBO0tBT0UsT0FBQTs7SUFDSDtLQUFBLE9BL2pCSGpFO0tBOGpCTSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBUEYsT0FBQTtLQUFBLE9BQUE7S0FNTyxPQUFBO0tBQUEsT0FBQTtLQU5QLE9BQUE7S0FBQSxPQUFBO0tBSUUsT0FBQTs7SUFDSDtLQUFBLE9BenZCSGxDO0tBd3ZCTSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBSkYsT0FBQTtLQUFBLE9BQUE7S0FHbUIsT0FBQTtLQUFBLE9BQUE7S0FIbkIsT0FBQTtLQUFBLE9BQUE7S0FDRSxPQUFBO0tBRUMsT0FBQTtLQUFBLE9BQUE7S0FGRCxPQUFBO0tBQUEsT0FBQTs7SUFBQTtLQUFBLFdBQUEsK0NBdndCTmxDO0tBdXdCTSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FERixPQUFBO0tBQUEsT0FBQTtLQUF3QixPQUFBO0tBQUEsT0FBQTtLQUF4QixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURELE9BQUE7S0FBQSxPQUFBO0tBQThCLE9BQUE7S0FBQSxPQUFBO0tBQTlCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FGTDs7UUFFSztRQVhIc0k7S0FLSSxPQTEwQk54SDtLQXcwQkUsZUFDRTtJQUtKLE9BQUE7R0FlYztZQUVkeUg7SUFDRjtLQVFFLFdBQUU7S0FKSSxPQXAyQk56SDtLQWsyQkUsZUFDRTtJQUtKLE9BQUE7R0FBc0I7WUFFdEIwSDtJQUNGO0lBUUU7S0FBQSxPQWpKRVY7S0E2SUksT0EvMkJOaEg7S0E2MkJFLGVBQ0U7SUFLSixPQUFBO0dBQStCO1lBRS9CMkg7SUFHSztLQUFBLE9BQUE7S0F5RFMsT0FBQTtLQUFBLE9BQUE7S0F6RFQsT0FBQTtLQUFBLE9BQUE7S0FDRyxPQUFBO0tBQWlCLE9BQUE7S0FBQSxPQUFBO0tBQWpCLE9BQUE7S0FBQSxPQUFBO0tBcUQrQixXQUFFOztJQUFsQztLQUFBLE9BL1pMekM7S0ErWkksT0FBQTtLQURHLGVBQUU7Z0JBRFA7O0lBREU7S0FBQSxPQS9oQkpmO0tBNGhCVSxPQXg2QlpuRTtLQXM2QlEsZUFDRTs7V0FITjs7SUFERTtLQUFBLE9BN2ZKc0U7S0EwZlUsT0FoNkJadEU7S0E4NUJRLGVBQ0U7O1dBSE47O0lBREU7S0FBQSxPQWhkSjBFO0tBNmNVLE9BeDVCWjFFO0tBczVCUSxlQUNFOztXQUhOOztJQURFO0tBQUEsT0E5YUo2RTtLQTJhVSxPQWg1Qlo3RTtLQTg0QlEsZUFDRTs7V0FITjs7SUFERTtLQUFBLE9BNVlKZ0Y7S0F5WVUsT0F4NEJaaEY7S0FzNEJRLGVBQ0U7O1dBSE47O0lBREU7S0FBQSxPQWxoQkorRDtLQStnQlUsT0FoNEJaL0Q7S0E4M0JRLGVBQ0U7S0FKUjtXQUNFO0tBSEksT0FBQTtLQUFpQixPQUFBO0tBQUEsT0FBQTtLQUFqQixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURILE9BQUE7S0FBQSxPQUFBO0tBQTBCLE9BQUE7S0FBQSxPQUFBO0tBQTFCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7SUFBQSxPQUFBO0dBQUM7WUE2RE40SDtJQUNGO2dCQWpFRUQ7Z0JBWEFEO2dCQVhBRDtLQWdHQSxXQTdJQUg7S0E2SUE7a0JBTDZDbEg7S0FDbEMsT0FEa0NBO2VBR3RCO2VBREY7SUFDNEM7SUFIM0Q7S0FBQSxPQUFBO0tBRko7ZUFDRTtJQU1KLE9BQUE7R0FBcUU7WUFFckV5SDtJQUNGO0lBajVCSW5IOztJQStDQVk7O0lBNkNBUTs7SUFzTUE4Qjs7SUFnQ0FJOztJQXFEQU87O0lBeUZBVTs7SUFwREFOOztJQTBCQUc7O0lBekZBVjs7SUFnSkFpQjtJQSthSjtHQUFFO1lBRUF5QyxnQkFBcUIsU0FBRTtxQ0ExQnZCRixZQVlBQyxXQWNBQzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNqOUJBQyxhQUFXLDBCQUF3QjtZQUVuQ0M7SUFFQTtLQUFBLE1BQUE7S0FzQkosTUFBQTtLQUE2TCxNQUFBO0tBQUk7T0FBQTs7O0tBQUEsTUFBQTtLQUFKLE1BQUE7S0FBQSxNQUFBO0tBQUEsTUFBQTtLQUE3TCxNQUFBO0tBQUEsTUFBQTtLQUFxSyxNQUFBO0tBQUk7T0FBQTtLQUFBLE1BQUE7S0FBSixNQUFBO0tBQUEsTUFBQTtLQUFBLE1BQUE7S0FBckssTUFBQTtLQUFBLE1BQUE7S0FBc0gsTUFBQTtLQUFJO09BQUE7OztLQUFBLE1BQUE7S0FBSixNQUFBO0tBQUEsTUFBQTtLQUFBLE1BQUE7S0FBdEgsTUFBQTtLQUFBLE1BQUE7S0FBc0csTUFBQTtLQUFJLE1BQUE7S0FBQSxNQUFBO0tBQUosTUFBQTtLQUFBLE1BQUE7S0FBQSxNQUFBO0tBQXRHLE1BQUE7S0FBQSxNQUFBO0tBQW9ELE1BQUE7S0FBSTtPQUFBOzs7S0FBQSxNQUFBO0tBQUosTUFBQTtLQUFBLE1BQUE7S0FBQSxNQUFBO0tBQXBELE1BQUE7S0FBQSxNQUFBO0tBQTBCLE1BQUE7S0FBSTtPQUFBOztLQUFBLE1BQUE7S0FBSixNQUFBO0tBQUEsTUFBQTtLQUFBLE1BQUE7S0FBMUIsTUFBQTtLQUFBLE1BQUE7S0FBQSxNQUFBO0tBQUEsY0FBQTtLQUFBLE1BQUE7S0F0QkksT0FBQTtLQUFBLE9BQUE7S0FxQnlCLE9BQUE7S0FBQSxPQUFBO0tBckJ6QixPQUFBO0tBQUEsT0FBQTtLQXFCSixPQUFBO0tBQUk7T0FBQTs7S0FBQSxPQUFBO0tBQUosT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBckJJLE9BQUE7S0FBQSxPQUFBO0tBbUJDLE9BQUE7S0FBQSxPQUFBO0tBbkJELE9BQUE7S0FBQSxPQUFBO0tBVUosT0FBQTtLQVFBLE9BQUE7S0FBNkksT0FBQTtLQUFBLE9BQUE7S0FBN0ksT0FBQTtLQUFBLE9BQUE7S0FBb0YsT0FBQTtLQUErQyxPQUFBO0tBQUEsT0FBQTtLQUEvQyxPQUFBO0tBQUEsT0FBQTtLQUFBO09BQUE7O0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQTtlQUFBO0tBQUEsT0FBQTtLQUFwRixPQUFBO0tBQUEsT0FBQTtLQUErRSxPQUFBO0tBQUEsT0FBQTtLQUEvRSxPQUFBO0tBQUEsT0FBQTtLQUFnQixPQUFBO0tBQWtELE9BQUE7S0FBQSxPQUFBO0tBQWxELE9BQUE7S0FBQSxPQUFBO0tBQUE7T0FBQTs7S0FBQSxXQUFBO0tBQUEsT0FBQTtLQUFBO2VBQUE7S0FBQSxPQUFBO0tBQWhCLE9BQUE7S0FBQSxPQUFBO0tBQUk7T0FBQTtLQUFBLE9BQUE7S0FBSixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FSQSxPQUFBO0tBQUEsT0FBQTtLQU9BLE9BQUE7S0FBNkUsT0FBQTtLQUFBLE9BQUE7S0FBN0UsT0FBQTtLQUFBLE9BQUE7S0FBNEIsT0FBQTtLQUEyQyxPQUFBO0tBQUEsT0FBQTtLQUEzQyxPQUFBO0tBQUEsT0FBQTtLQUFBO09BQUE7S0FBQSxXQUFBO0tBQUEsT0FBQTtLQUFBO2VBQUE7S0FBQSxPQUFBO0tBQTVCLE9BQUE7S0FBQSxPQUFBO0tBQUk7T0FBQTs7S0FBQSxPQUFBO0tBQUosT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBUEEsT0FBQTtLQUFBLE9BQUE7S0FNQSxPQUFBO0tBQTBOLE9BQUE7S0FBQSxPQUFBO0tBQTFOLE9BQUE7S0FBQSxPQUFBO0tBQXVJLE9BQUE7S0FBeUUsT0FBQTtLQUFBLE9BQUE7S0FBekUsT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBOzs7S0FBQSxXQUFBO0tBQUEsT0FBQTtLQUFBO2VBQUE7S0FBQSxPQUFBO0tBQXZJLE9BQUE7S0FBQSxPQUFBO0tBQXNGO09BQUE7OztLQUFBLE9BQUE7S0FBdEYsT0FBQTtLQUFBLE9BQUE7S0FBd0IsT0FBQTtLQUFnRCxPQUFBO0tBQUEsT0FBQTtLQUFoRCxPQUFBO0tBQUEsT0FBQTtLQUFBO09BQUE7O0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQTtlQUFBO0tBQUEsT0FBQTtLQUF4QixPQUFBO0tBQUEsT0FBQTtLQUFJO09BQUE7O0tBQUEsT0FBQTtLQUFKLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQU5BLE9BQUE7S0FBQSxPQUFBO0tBQ0EsT0FBQTtLQUkyRixPQUFBO0tBQUEsT0FBQTtLQUozRixPQUFBO0tBQUEsT0FBQTtLQUlrQixPQUFBO0tBQTBEO09BQUE7S0FBQSxPQUFBO0tBQTFELE9BQUE7S0FBQSxPQUFBO0tBQUE7T0FBQTs7O0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQTtlQUFBO0tBQUEsT0FBQTtLQUpsQixPQUFBO0tBQUEsT0FBQTtLQUlJO09BQUE7S0FBQSxPQUFBO0tBSkosT0FBQTtLQUFBLE9BQUE7S0FBZSxPQUFBO0tBR2tDLE9BQUE7S0FBQSxPQUFBO0tBSGxDLE9BQUE7S0FBQSxPQUFBO0tBRUs7T0FBQTs7S0FBQSxPQUFBO0tBRkwsT0FBQTtLQUFBLE9BQUE7S0FFQSxPQUFBO0tBQUEsT0FBQTtLQUZBLE9BQUE7S0FBQSxPQUFBO0tBQ2I7T0FBQTs7S0FBQSxPQUFBO0tBRGEsT0FBQTtLQUFBLE9BQUE7S0FBMkMsT0FBQTtLQUFBLE9BQUE7S0FBM0MsT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBO0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQTtlQUFBO0tBQUEsT0FBQTtLQUFmLE9BQUE7S0FBQSxPQUFBO0tBQUksT0FBQTtLQUFBLE9BQUE7S0FBSixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FEQSxPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FWSSxPQUFBO0tBQUEsT0FBQTtLQVEySCxPQUFBO0tBQUEsT0FBQTtLQVIzSCxPQUFBO0tBQUEsT0FBQTtLQVFKLE9BQUE7S0FBMEgsT0FBQTtLQUFBLE9BQUE7S0FBMUgsT0FBQTtLQUFBLE9BQUE7S0FBaUMsT0FBQTtLQUF3RDtPQUFBOzs7S0FBQSxPQUFBO0tBQXhELE9BQUE7S0FBQSxPQUFBO0tBQUE7T0FBQTs7O0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQTtlQUFBO0tBQUEsT0FBQTtLQUFqQyxPQUFBO0tBQUEsT0FBQTtLQUFHO09BQUE7OztLQUFBLE9BQUE7S0FBSCxPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FSSSxPQUFBO0tBQUEsT0FBQTtLQU02UyxPQUFBO0tBQUEsT0FBQTtLQU43UyxPQUFBO0tBQUEsT0FBQTtLQU1KLE9BQUE7S0FBNlI7T0FBQTtLQUFBLE9BQUE7S0FBN1IsT0FBQTtLQUFBLE9BQUE7S0FBK0wsT0FBQTtLQUF1RTtPQUFBOztLQUFBLE9BQUE7S0FBdkUsT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBOzs7S0FBQSxXQUFBO0tBQUEsT0FBQTtLQUFBO2VBQUE7S0FBQSxPQUFBO0tBQS9MLE9BQUE7S0FBQSxPQUFBO0tBQXFIO09BQUE7OztLQUFBLE9BQUE7S0FBckgsT0FBQTtLQUFBLE9BQUE7S0FBNEMsT0FBQTtLQUEwRDtPQUFBO0tBQUEsT0FBQTtLQUExRCxPQUFBO0tBQUEsT0FBQTtLQUFBO09BQUE7OztLQUFBLFdBQUE7S0FBQSxPQUFBO0tBQUE7ZUFBQTtLQUFBLE9BQUE7S0FBNUMsT0FBQTtLQUFBLE9BQUE7S0FBRztPQUFBOzs7S0FBQSxPQUFBO0tBQUgsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBTkksT0FBQTtLQUFBLE9BQUE7S0FJaUksT0FBQTtLQUFBLE9BQUE7S0FKakksT0FBQTtLQUFBLE9BQUE7S0FHSixPQUFBO0tBQ2dJLE9BQUE7S0FBQSxPQUFBO0tBRGhJLE9BQUE7S0FBQSxPQUFBO0tBQzZCLE9BQUE7S0FBNkQ7T0FBQTs7O0tBQUEsT0FBQTtLQUE3RCxPQUFBO0tBQUEsT0FBQTtLQUFBO09BQUE7OztLQUFBLFdBQUE7S0FBQSxPQUFBO0tBQUE7ZUFBQTtLQUFBLE9BQUE7S0FEN0IsT0FBQTtLQUFBLE9BQUE7S0FBcUw7T0FBQTs7O0tBQUEsT0FBQTtLQUFyTCxPQUFBO0tBQUEsT0FBQTtLQUFpRSxPQUFBO0tBQXFFO09BQUE7OztLQUFBLE9BQUE7S0FBckUsT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBOzs7S0FBQSxXQUFBO0tBQUEsT0FBQTtLQUFBO2VBQUE7S0FBQSxPQUFBO0tBQWpFLE9BQUE7S0FBQSxPQUFBO0tBQUc7T0FBQTs7O0tBQUEsT0FBQTtLQUFILE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUhJLE9BQUE7S0FBQSxPQUFBO0tBRStELE9BQUE7S0FBRyxPQUFBO0tBQUEsT0FBQTtLQUFILE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUYvRCxPQUFBO0tBQUEsT0FBQTtLQUVKLE9BQUE7S0FBRztPQUFBOzs7S0FBQSxPQUFBO0tBQUgsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBRkksT0FBQTtLQUFBLE9BQUE7S0FDdUIsT0FBQTtLQUFBLE9BQUE7S0FEdkIsT0FBQTtLQUFBLE9BQUE7S0FDSixPQUFBO0tBQUk7T0FBQTs7S0FBQSxPQUFBO0tBQUosT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBREksT0FBQTtJQUFBLE9BQUE7R0F1QkY7WUFFRUMsY0FBWSxTQUFFO1lBQ2RDLGdCQUFjLFNBQUU7Z0NBOUJoQkgsT0FFQUMsU0EyQkFDLFFBQ0FDOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHQzNCWTs7Ozs7O0lBQVpDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBRUFDLGVBQWVDO0lBQ2pCO0lBQXVDO0tBQUEsTUFBQSx3QkFEdEJBO0tBQ2JDLE9BQWM7SUFDbEI7SUFBb0I7S0FBaEJDO09BQWdCOztTQUZIRjs7U0FFakIsOEJBRmlCQTtLQUdLLE1BQUEsMkJBRmxCQztLQUVrQixNQUFBLDRCQURsQkM7S0FDQUMsV0FBVztJQUNmLFNBQUlDLFFBQVFDO0tBQVUsYUFBQUM7TUFBQTtNQUFBLE9BQUEsa0NBQUFBLGNBQUFBO0tBQW1DO0tBQW5DO3dDO21CQUpMTixPQUlMSztJQUEyRDtJQU5yRVAsVUFPK0Isd0JBRjdCSyxhQUNBQztJQUVKO0dBQUU7R0FJRiw0QkFWRUw7Z0JBa0VGTztJQUFtQztJQUFBLE9BQUEsa0NBQW5DQSxtQkFBQUE7R0FBdUM7R0FBdkM7SUFBQTtJQURFQztJQVlBQztZQUVBQyxZQUFjQyxTQUFvQkMsVUFDaENDLE1BQXdCQztJQUM1QjtLQUFBO0tBQUlDLDZCLHFCQUpGTjtJQUtGLGFBQVNGO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7SUFBZ0I7SUFBSSxVQUFBLHdCQUhiSTtJQUdQLGtEQURMSTtJQUVKLGFBQ0VSO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7SUFBaUI7Y0FMaUJLO0lBS2xDLG1EQUhFRztJQVFLO09BUkxBO09BREFGO2dCQVNLTjtRQUFBO1FBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO09BQWE7SUFDYjtPQVRMUTtPQUR3QkQ7Z0JBVW5CUDtRQUFBO1FBQUEsT0FBQSxrQ0FBQUEsZ0JBQUFBO09BQVk7SUFDckIsT0FWSVE7R0FVRTtHQVV5QyxJQUE3Q0M7WUFDQUM7O2dDLHNCQURBRDs7R0FtS0YsSUFERUU7WUFHQUM7O2dDO2FBSEFEOztnQkFnS0ZYO0lBQW1DO0lBQUEsT0FBQSxrQ0FBbkNBLGtCQUFBQTtHQUEyQztHQUEzQztJQUFBO0lBREVhOztZQUdBQyxhQUFjQyxLQUNiQztJQUVILGFBQUFoQjtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQThDO0lBQTlDOzthOzs7a0JBSGdCZSxLQUNiQztHQUkrQjtnQkFNTGhCO0lBQW1DO0lBQUEsT0FBQSxrQ0FBbkNBLG1CQUFBQTtHQUEyQztHQUEzQztJQUFBO0lBQTNCaUI7OztPQXRiQXpCO09BRUFDO09BaUVBUTtPQVlBQztPQUVBQztPQXNCQU07T0FDQUM7T0FpS0FDO09BR0FDO09BNEpBQztPQUdBQztPQVdBRzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDemJBQyxZQUFjQztJLEdBQUFBO1NBQU9DLE1BQVBELFFBQUFFLE9BQU9EOztTQUFQQyxPQUFPOztLQUVuQixvQkFRYSxlQUFlO2tCQVBYQztNQUNDLElBQVZDLFVBQVUsZ0NBREREO01BRWIsYUFFSUU7b0JBQzBCQztRQUNuQjtnQkFBQSw4Q0FGUEQsT0FDMEJDO1FBQ25CLE9BQUE7T0FBcUM7T0FEaEQsVUFBQTtPQUEwQixPQUFBO01BQ3NCO01BSmhELFVBQUEsNENBRElGO01BR0osT0FBQTtLQUVnRDtLQU5sRDtNQUFBLE1BQUEsdUJBSFVGO01BRVo7UUFBQTs7S0FRSSxPQUFBO0lBQXdCO0lBVFgsT0FBQTs7O1lBV25CSyxTQUFVQztJQUNVOztPQUFBLHdCQUFXLG9DQURyQkE7SUFDSDtJQUNUO0tBQ0ksb0JBS2EsZUFBZTtrQkFKb0JIO21CQUNkQztPQUNuQjtjQUFBLDhDQUZpQ0QsT0FDZEM7T0FDbkIsT0FBQTtNQUFxQztNQURoRCxVQUFBO01BQTBCLE9BQUE7S0FDc0I7S0FGaEQ7TUFBQSxNQUFBLG1DQUpJRTtNQUlOLE1BQUE7TUFERjtRQUFBOztLQUtJLE9BQUE7SUFBd0I7SUFOWCxPQUFBOztHQU1ZO1lBRS9CQztJQUNGO0tBQ0ksb0JBS2EsZUFBZTtrQkFKVUo7bUJBQ0pDO09BQ25CO2NBQUEsOENBRnVCRCxPQUNKQztPQUNuQixPQUFBO01BQXFDO01BRGhELFVBQUE7TUFBMEIsT0FBQTtLQUNzQjtLQUZoRDtNQUFBLE1BQUE7TUFBRixNQUFBO01BREY7UUFBQTs7S0FLSSxPQUFBO0lBQXdCO0lBTlgsT0FBQTs7R0FNWTtZQUUvQkksaUJBQWlCQyxNQUFNQzs7S0FFckIsb0JBS2EsZUFBZTtrQkFKb0JQO21CQUNkQztPQUNuQjtjQUFBLDhDQUZpQ0QsT0FDZEM7T0FDbkIsT0FBQTtNQUFxQztNQURoRCxVQUFBO01BQTBCLE9BQUE7S0FDc0I7S0FGaEQ7TUFBQSxNQUFBLG1DQUhXSyxNQUFNQztNQUduQixNQUFBO01BREY7UUFBQTs7S0FLSSxPQUFBO0lBQXdCO0lBTlgsT0FBQTs7R0FNWTtZQUUvQkMsWUFBYUM7O0tBRVgsb0JBS2EsZUFBZTtrQkFKaUJUO21CQUNYQztPQUNuQjtjQUFBLDhDQUY4QkQsT0FDWEM7T0FDbkIsT0FBQTtNQUFxQztNQURoRCxVQUFBO01BQTBCLE9BQUE7S0FDc0I7S0FGaEQ7TUFBQSxNQUFBLG1DQUhPUTtNQUdULE1BQUE7TUFERjtRQUFBOztLQUtJLE9BQUE7SUFBd0I7SUFOWCxPQUFBOztHQU1ZO1lBRS9CQztJQUNGO0tBQ0ksb0JBUXVCLGVBQWU7O01BTjVCLElBQVlDLHFCQUFOQztNQUVOOztRQUFzQix3QkFGaEJBOztRQUFNRDtNQUtkO0tBQWdCO0tBTnBCO01BQUEsTUFBQTtNQURxQixNQUFBO01BQXpCO1FBQUE7O0tBQ0ksT0FBQTtJQU9tQztJQVR0QixPQUFBOztHQVN1Qjs7OztPQTNEMUNqQjtPQVlBUTtPQVVBRTtPQTJCQU07T0FsQkFMO09BU0FHOzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7SUN4Q0FLO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBR0FDLHFCQUFzQkM7SUFFeEIsT0FBQSxvQ0FGd0JBO0dBRXVDO1lBRTdEQyxxQkFBc0JDO0lBQ3hCLE9BQUE7c0VBRHdCQTtHQUNxQjtHQUt6QztjQUtFOztVQURBO2NBREE7Y0FEQTtJQUZGOzs7UUFDRSw2Q0FyQkpYOztJQWlCQVksaUJBQ0Y7SUFXRUM7TUFBcUIsOENBWnJCRDtZQWNBRSxjQUFjQyxTQUFRQztJQUN4QjtLQUFJQztPQURvQkQ7Y0FHbEI7O2dCQXBCSk4scUJBaUJjSzs7O1FBV1Q7Z0RBbkNMUjs7S0FpQ0c7V0FDRTtLQURILFdBQUEsNkJBUkFVO0lBTUosT0FBQTtHQVFJO0dBS0E7OztPQUlFOzs7O09BREE7O2NBREE7SUFGRjs7O1FBQ0UsNkNBaERKYjs7SUE0Q0FjLGFBQ0Y7WUFVRUMsU0FBVUM7YUFFUkMsY0FBY0M7S0FDaEIsT0FBRyxnREFIT0YsZ0JBRU1FO0lBSWI7SUFFTCxXQVJZRjt5QkFXTixJQUFPRyxpQkFBd0IsT0FBeEJBLEtBQTZCO0lBRHRDO0tBREVDO09BQ0Y7S0FzQ0EsT0FBQSxpREFoRFFKOztLQWVSLHNCQUFjVCxpQkFBaUJjLGtCQUF6QkY7S0FDSjtLQUVNO01BRkZHLGdCQUR5QkQ7TUFHdkIsT0FBQSxtQkFUTkQsc0JBTUlEO01BRUFJLFdBQ0Y7TUEwQlksV0FBRSwrQ0E3QkpoQjtpQkE1RGhCRCxxQkE0RGdCQztNQXlCSSxlQUNFOztZQUhOO01BRkYsV0FoRWRHLGNBMkNnQkgsTUFDUmU7aUJBN0RSaEIscUJBNERnQkM7TUFpQkEsZUFDRTtNQUpSO1lBQ0U7TUFGQyxlQXpFYkQscUJBNERnQkM7TUFXVjtZQUNFO2lCQXhFUkQscUJBNERnQkM7TUFVUDtnQkFBRSw2Q0FSSGdCO0tBU0YsT0FBQTtJQXFCRTtJQWpDUjtLQU5FQyxVQU1GO2dCQTJDVTtLQUZGOzs7U0FDRTs7O0tBTlJDO09BaERBUjthQW1ERTtLQWN5QyxXQUFFO0tBQS9COztZQUFFLDZDQTVIbEJuQjtLQTRISSxXQUFFO0tBREMsZUFBRTtLQUhQNEI7V0FFQTtLQVc0QyxXQUFFO0tBQWhDOztZQUFFLDZDQXBJbEIzQjtLQW1JSTs7UUFDRTtZQXZGTmU7S0FxRk8sZUFBRTtLQUhQYTtXQUVBO0tBYytDLFdBQUU7S0FBakM7O1lBQUUsNkNBN0lwQjFCO0tBNklNLFdBQUU7S0FEQyxlQUFFO0tBSlQyQjtPQWhGQVg7YUFtRkU7S0FVOEMsV0FBRTtLQUFsQzs7O1NBQUUsNkNBcEpwQmY7O0tBb0pNLFdBQUU7S0FEQyxlQUFFO0tBSlQyQjtPQXhGQVo7YUEyRkU7S0FLMkMsT0FBQSx1QkFoQjdDVyxVQVFBQztLQVFtQyxPQUFBLHVCQTNCbkNGO0tBMkIwQixPQUFBLHVCQW5DMUJEO0tBbUNXLE9BQUEsdUJBaERYRDtLQWdEQyxPQUFBLHVCQTFGREQ7SUEwRkMsT0FBQTtHQUFnRTs7Z0JBSy9DUixPQUFTLE9Bdkc3QkQsU0F1R29CQyxPQUF1QjtHQUF6QztJQUFBLE1BQUE7SUFGQWMsVUFDRjtJQUFBOztJQWlDaUM7S0FBcEJDO09BQW9COztXQXJLakN0QjtvQkFxSzhDdUI7WUFBcUI7WUFBQSxPQUFBLGtDQUFyQkEsa0JBQUFBO1dBQTBCO0lBQ3RELGlEQURMRDtJQUdlLFdBQUEsNEJBdE01QnBDO0lBc01XO0lBRUY7R0FBUztHQU5kO0lBQUEsTUFBQTtJQUhXLE1BQUE7SUFBQTtNQUFBO29EQTdLZmE7SUE2S2UsTUFBQTtJQUFBLGNBQUE7SUFBWCxVQUFXOzs7T0FGZjs7U0E3TEFiOzs7Ozs7Y0EyTHdDO0lBQW5DOzs7UUFBRSw2Q0F6TFBFOzs7O09Bd0xBLHVEQXpCRWlDOztJQXdCZ0MsY0FBRTtjQUFmO0lBQW5CLFVBQUU7SUFBRjs7O2dCQVRjZCxPQUFNaUI7SUFDVCxLQURHakIsVUFFTztlQUZEaUI7ZUFLRztRQUNEQztJQUErQixPQUEvQkE7R0FBMkM7R0FQM0Q7SUFBQSxNQUFBO0lBRHVCLE1BQUE7Y0FBekI7OztPQURBOzs7OztPQURBOzs7OztPQURBOzs7Y0FEQTtJQUZGOzs7UUFDRTs7O0lBVE5DO1VBTUE7WUFxQ0FDLFlBQWEvQjtrQkFFeUNBO0tBQ3pDLG1DQUR5Q0E7S0FFbEQsb0I7MEJBRWEsT0FBQSw0Q0FBMkI7S0FEdEMsV0FyTU5ELHFCQWtNc0RDO0tBS2hELE9BQUE7SUFBWTtJQUxsQjtLQURFZ0M7T0FDRixvQ0FGYWhDO0lBU04sOENBUkxnQztJQVNKO0dBQUU7WUFFQUM7SUFDbUI7S0FBakJDO09BQWlCLDhDQXZLbkJ6QjtJQXdLRjtLQUE0RCxNQUFBO0lBQVk7SUFBOUM7S0FBQTs7U0FEdEJ5QjtrQkFDc0JQO1VBQWlCO1VBQUEsT0FBQSxrQ0FBakJBLGlCQUFBQTtTQUFzQjtLQUE1Q1EsUUFBUTtJQUNaO0tBQWlELE1BQUE7SUFBWTtrQkFBdENSO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7SUFBVztJQUFaOztLQUFBOytCO1NBRGxCUTtLQUNBUCxPQUFPO0tBQ1B0QjtPQUFVOztXQURWc0I7b0JBQ3VCRDtZQUFPO1lBQUEsT0FBQSxrQ0FBUEEsbUJBQUFBO1dBQVc7S0FHNUIsV0FBQSxrQ0FKTkM7SUFHRixvREFGRXRCO0lBTUosY0FBU3FCO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7SUFBc0I7SUFBSTtJQUExQjtPQVRMTztJQVVKO0dBQWU7WUFFYkU7SUFDbUI7S0FBakJGO09BQWlCLDhDQXBMbkJ6QjtJQXFMRjtLQUdtQyxXQUFBLDhCQXpPakNuQjtLQXlPZ0I7S0FDVDtJQUFTO0lBRmQ7S0FBQSxPQUFBO0tBRGUsT0FBQSw4QkFwT2pCRztJQW9PQTtJQUtGO0tBSVMscUI7UUFYTHlDO2lCQVdjUDtTQUFBO1NBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO1FBQXFCO0tBQzlCO0lBQVM7SUFIZDtLQUFBLE9BQUE7S0FEZSxPQUFBLDhCQXpPakJqQztJQXlPQTtJQU1GO0tBR2tCO0tBQ1Q7SUFBUztJQUZkO0tBQUEsT0FBQTtLQURlLE9BQUEsOEJBOU9qQkU7SUE4T0E7SUFLRjtLQUdrQjtLQUNUO0lBQVM7SUFGZDtLQUFBLE9BQUE7S0FEZSxPQUFBLDhCQW5QakJDO0lBbVBBO0lBS0YsY0FFNEJ3QztLQUV5QjtNQUF4Q0M7O1VBRmVEO21CQUV5QlY7V0FBUTtXQUFBLE9BQUEsa0NBQVJBLGtCQUFBQTtVQUFjO0tBQzFELGNBQzJCM0IsU0FDckIsT0EzUGJELHFCQTBQa0NDLFNBQ087S0FEaEMsSUFERU0sVUFDRixpQ0FGRWdDO0tBS0osY0FHU2hDO01BQ0gsT0FBcUM7O2VBQUEsd0JBRGxDQTtLQUN3RDswQkFGbkQsU0FBRTtLQURkLGlDQUxFQTtLQVVKO0lBQVM7SUFiZCxXQUFBO0lBREY7O2tCQWlCOEMrQjtLQUNFO01BQXhDQzs7VUFEc0NEO21CQUNFVjtXQUFRO1dBQUEsT0FBQSxrQ0FBUkEsa0JBQUFBO1VBQWM7bUJBR2xEM0I7TUFDYztPQUFkdUM7U0FBYzs7YUFEZHZDO3NCQUMyQjJCO2NBQVU7Y0FBQSxPQUFBLGtDQUFWQSxjQUFBQTthQUFZO01BQ3hDLEdBQUEsMERBRENZO09BRUYsT0E3RVZSLFlBMEVZL0I7TUFLVyxXQUFBLHFDQUpYdUM7TUFJVyxPQUFBO0tBQXNDOzBCQU43QyxTQUFFO0tBQ1osT0FBQSxpQ0FIRUQ7SUFRc0Q7SUFUOUQsb0NBL1FBOUM7SUEwUkYsY0FJMkI2QztLQUMwQjtNQUF4Q0M7O1VBRGNEO21CQUMwQlY7V0FBUTtXQUFBLE9BQUEsa0NBQVJBLG1CQUFBQTtVQUFjO0tBQzFELGNBQzJCM0IsU0FDckIsT0F6UmJELHFCQXdSa0NDLFNBQ087S0FEaEMsSUFERU0sVUFDRixpQ0FGRWdDO0tBS0osY0FJYXRDO01BQ0o7ZUFESUE7d0JBQ0oyQjtnQkFBMEQ7Z0JBQUEsT0FBQSxrQ0FBMURBLG1CQUFBQTtlQUFpRTtLQUFBOzBCQUZ6RCx5QkFBUztLQUZ4QjtNQURFcEIsYUFFQSxpQ0FQQStCO0tBWUosY0FHU2hDO01BQ00sbUNBRE5BO01BR0Q7O1FBQ0Usd0JBSkRBO1FBVkxDO01BZ0JFO0tBQUU7MEJBUE0sU0FBRTtLQURkLGlDQVpFRDtLQXNCSjtJQUFTO0lBeEJkO0tBQUEsT0FBQTtLQUZBLE9BQUEscUNBdFJGUjtJQXFSQTs7S0FnQ00sV0FBQSw4Q0E1UU5XO0tBeVFGLE9BQUE7Ozs7OztjQW5HRXdCO0lBdUd5QjtJQUh6QjtJQUtGO0dBQUU7dUNBaEtBSCxTQW9FQU07Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ3BPQUksVUFBV0M7O0tBR1Qsb0JBQ0EsZUFBZTtLQURXO01BQUEsTUFBQTtNQUFELE1BQUEsNEJBSGhCQTtNQUdUO1FBQUE7O0tBQWtFLE9BQUE7SUFDbkQ7SUFGRSxPQUFBOztHQUVEO1lBRWxCQyxZQUFjQyxVQUFxQkM7O0tBRUgsSUFBU0M7S0FDakMsR0FBQSwwQkFITUYsVUFFMkJFO01BRWxDO09BQUE7a0JBQTJDQzt1QkFDYkM7V0FDbkI7O2NBQUEsOENBRmdDRCxPQUNiQztXQUNuQixPQUFBO1VBQXFDO1VBRGhELFVBQUE7VUFBMEIsT0FBQTtTQUNzQjtPQUZoRCxNQUFBLG1DQUo0Qkg7TUFJVyxPQUFBOztLQUtyQztNQURFSSxNQUNGLG9DQVRLTCxVQUUyQkU7TUFTdkIsTUFBQSxrREFIUEc7S0FHTyxPQUFBO0lBQ1g7SUFWUCxPQVJBUixVQVFBO0dBVVE7NENBWlJFLGFBTkFGOzs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R0NDK0I7Ozs7SUFRL0JTO0lBWUFDOzs7O0lBc0JBQztJQUNBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTNDK0IsUUFBQTtJQUFsQkM7SUFBYkM7SUFDeUIsVUFBQTtJQUFmQztJQUFWQztJQUNBQyxtQkFBbUI7SUFBQTtJQUlOLE1BQUE7SUFBYixNQUFBO0lBRkFDLGFBQ0Y7SUFhRSxVQUFFOzs7T0FGRTs7Ozs7O09BREE7O0lBRkY7OztRQUNFLDZDQU5KVDs7SUFFQVUsZ0JBQ0Y7Ozs7T0FnQnNDOztJQURoQzs7O1FBQ0U7O0lBSkpDO01BQ0Y7SUFPRUMsY0FSQUQsOEJBYkZEO0lBdUJFLE1BQUE7SUFNVSxNQUFBO0lBQUEsTUFBQTtJQU5WLE1BQUE7SUFBQSxNQUFBO0lBSU8sTUFBQTtJQUFBO01BQUE7b0RBakNURDtJQWlDUztNQUFBOzs7SUFBQSxjQUFBO0lBQUEsTUFBQTtJQUpQLE1BQUE7SUFBQSxNQUFBO0lBR1EsTUFBQTtJQUFBLE1BQUE7SUFIUixNQUFBO0lBQUEsTUFBQTtJQUNPLE1BQUE7SUFBQSxNQUFBLG1EQUhQRztJQUdPO01BQUE7OztJQUFBLFVBQUE7SUFBQTs7O1FBQUEsNkNBZFRYOztJQWNTLE1BQUE7SUFEUCxNQUFBO0lBQUEsTUFBQTtJQUFpQixNQUFBO0lBQUEsTUFBQTtJQUFqQixNQUFBO0lBQUEsTUFBQTtJQUFBLE1BQUE7SUFBQSxjQUFBO0lBWEZZLGdCQVdFOzs7Ozs7O1lBWUZDO0lBQ0Y7S0FBNEQsT0FBQTtLQUE1Qjs7WUFBRSw2Q0FKaENaO0tBSUVhLFdBQVc7O1dBbUJMLDZDQXRCUlo7S0FHYTtLQXFCVCxXQXJCRlk7O2tCQVVnQkM7S0FDSCxPQURHQTtnQkFNUTtnQkFIQTtJQUl1QjtJQVJ2QztLQUFBLE9BQUE7S0FGSjtlQUNFOztXQUhOO0tBRFksZUFBRTtLQURoQjs7UUFDRTt3REE1QkZIOztLQTBCRyxlQUFFO0lBQ0wsT0FBQTtHQW1CQztZQUVESSxXQUFZQztJQUVkLFNBQUlDLFNBQVNDO0tBQUk7S0FBQTtNQUFBO2FBQUpBO2FBQUFBOztLQUFJLG1DOztJQUFxRDtJQUN0RSxTQUFJQyxRQUFTQztLQUNYLFlBRFdBO2lCQUVEO0tBRUQ7TUFERkM7TUFDRSxVQUFBO21CQUNHO1NBQ0hDO0tBQ0YsS0FBQSwwQkFKQUQsVUFHRUMsVUFrQkg7S0FGVSxJQUFBLE9BdkJkTCxTQUlLSSxXQWtCVSxPQXRCZkosU0FJS0k7WUFISUQ7Ozs7Ozs7Ozs7O0tBUUw7YUFDRSxtQ0FUR0E7SUF3QkE7SUFFYjtrQkFHYUcsS0FBSUM7S0FDRCxZQTlCWkwsUUE2QmFLO2lCQUVHLE9BRlBEO1NBR0lFO0tBQVMsV0FBVEEsU0FISkY7SUFHeUI7SUFKakMsV0FBQSx3Q0EvQlNQO0lBNkJkLE9BQUEsMkJBQ0U7R0FNaUI7WUFHakJVLGFBQWNDLFlBQStCQztJQUMvQzs7OztLQUFJWDttQztlQUQyQ1c7S0FFM0NDLE9BQWtDO0tBQ2xDQzttQztTQUhZSDtTQUNaVjtTQUNBWTtrQkFFRkU7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtTQUFzQjtLQUVwQkM7O1NBSEFGO2tCQUdZQztVQUFTO1VBQUEsT0FBQSxrQ0FBVEEsZ0JBQUFBO1NBQVk7S0FDeEJFOzRCO1NBUFlOO2tCQU9zQkk7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtTQUE4QjtJQUE5QjtJQUNiO0tBQXJCRzs7U0FEQUQ7a0JBQ3FCRjtVQUFVO1VBQUEsT0FBQSxrQ0FBVkEsbUJBQUFBO1NBQXNCOzs7O1FBQzNDSSxjQUhBSCxNQUVBRTtrQkFFS0g7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtJQUFvQjtJQUFTO0tBQUEsT0FBQSw4QkFEbENJO0tBQ2tDO0lBQTdCO087OztPQVZPUjtJQVdoQjtHQUFFO1lBRUFTO0lBQ087SUFDUyxJQUFkQyxjQUFjO2lCQUUwQnJCO2NBQ2xDc0IsOEJBQW1CLE9BekQzQnZCLFdBd0QwQ0MsUUFDRTs7Y0FIMUNxQjtjQUdNQzt1QkFDSlA7ZUFBQTtlQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtjQUE0QjtJQUFjO0lBRjlDO0lBSUYsYUFBU0E7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUEwQjs7SUFBMUI7T0FOTE07SUFNSztLQUNMRTtLQUNBQztJQUdKLGFBQ0VUO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxpQkFBQUE7SUFBcUI7SUFBQztLQUFBO0tBRHBCVTtpQztTQUhBRDtLQU1BM0IsV0FBbUM7SUFDdkMsYUFDRWtCO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7SUFBMkI7O0lBQTNCO09BVEVRO0lBU0YsYUFDQVI7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUE0Qjs7SUFBNUI7T0FWRVE7SUFVRixjQUNBUjtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQStCOztJQUEvQjtPQVhFUTtJQVdGLGNBQ0FSO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBNkI7O0lBQTdCO09BWkVRO0lBWUYsY0FDQVI7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUF5Qjs7SUFBekI7T0FiRVE7SUFjRjtPQWRFQTtPQUlBRTtnQkFVRlY7UUFBQTtRQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtPQUF1QjtJQUN2QjtPQWZFUTtPQVBBRjtnQkFzQkZOO1FBQUE7UUFBQSxPQUFBLGtDQUFBQSxvQkFBQUE7T0FBb0I7SUFBcEIsY0FDQUE7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUFvQjtJQUFJO0lBQXhCO09BaEJFUTtJQW1CRjtLQURFWixhQUNGLG9DQVpFZCxVQVBBMEI7SUFxQkosY0FBU1I7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUFvQjtJQUFDO0lBQXJCLDJCO09BSExKO0lBSUo7S0FTb0IsV0FBQTtLQUFBLE9BQUE7SUFBbUI7O0tBTjVCLElBQWVlLGVBQVQ5QjtLQUNDLFdBNUpOUixxQkEySmNzQztLQUVqQixjQUFTWDtNQUFBO01BQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0tBQW9CO0tBQUMsV0FBQSx3QkFGdEJuQjtLQUVDLDJCO1FBVGRlO0tBVWdCLFdBQUE7S0FBQSxPQUFBO0lBQW9CO0lBSnBDLFdBQUE7SUFERjtJQVVGLGNBQ0VJO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBMEI7O0tBQ2YsT0FBQTtJQUFrRDtJQUEzRDtJQURGO0lBRzZDLElBQTNDWTthQUNBQyxRQUFRakIsWUFBV2tCO0tBQ1o7S0FDVCxZQUhFRjs7TUFNa0I7T0FBWEc7T0FBVztrQkFBQWY7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtTQUE2Qjs7TUFBN0IsMkI7ZUFBWGU7OztNQURHO0tBR1osY0FDS2Y7TUFBK0I7TUFBQSxPQUFBLGtDQUEvQkEsbUJBQUFBO0tBQXFDO0tBQXZCO01BQUE7O1VBUkVjO21CQVFGZDtXQUFTO1dBQUEsT0FBQSxrQ0FBVEEsb0JBQUFBO1VBQWE7TUFBM0IsT0FBQTs7O01BQTZDOzthQUFBLHdDQUk5QyxlQUxBZ0I7TUFHQTs7VUFIQUE7O2NBT0FDO01BQ087TUFDSCxZQUFBLHdCQXhMUjNDO2tCQXlMWTtNQUdPO09BRlY0QztPQUVVO1NBQUE7Z0M7YUFwQlR0QjtzQkFvQnVCSTtjQUFBO2NBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO2FBQW9CO01BQWxDLE9BQUEsOENBRlZrQjtLQUU2QzttQkFLL0NsQjtNQUFBO01BQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0tBQTJCO0tBQ3pCO01BQUE7UUFBQTswQkFBNEIsT0FaakNpQixrQkFZa0Q7TUFBN0M7S0EzQlBMOzs7Uzs7O3FCQVFFSTs7S0FzQko7SUFBRTtJQUVLLDJCO09BbkRMcEI7T0FvQkFpQjtnQkErQktiO1FBQUE7UUFBQSxPQUFBLGtDQUFBQSxtQkFBQUE7T0FBb0I7SUFFM0IsMkI7T0FyREVKO2dCQXFEZ0N1QjtRQUM5QjtTQUFJQztnQzthQXRETnhCO3NCQXNEWUk7Y0FBQTtjQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTthQUFxQjtTQUMzQkg7O2FBREF1QjtzQkFDT3BCO2NBQU07Y0FBQSxPQUFBLGtDQUFOQSxvQkFBQUE7YUFBVTtTQUNqQnFCOzthQUZBRDtzQkFFS3BCO2NBQU07Y0FBQSxPQUFBLGtDQUFOQSxlQUFBQTthQUFRO1FBQ2pCLE9BQUEsbUNBRklILE1BQ0F3QjtPQUNnQztnQkFKeENyQjtRQUFBO1FBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO09BQTRCO0lBTTlCO0tBSWtCLE1BQUE7SUFBWTtrQkFEdEJBO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBa0M7SUFBQztLQUFBO0tBQUE7S0FBcEM7aUM7O0tBSEhzQixvQkFFQTtJQUlKLGNBQ0V0QjtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0lBQTJCOztLQUVGLElBQWR1QixnQkFBYyx3QkF6TnpCbkQ7S0EwTmdCLFdBMU5IRCx3QkF5TkZvRDtLQUVKO0lBQVE7SUFIWixXQUFBO0lBREg7T0FQRUQ7SUFhSixjQUM0Q3JDO0tBQ3RDLDRCO2NBMUVGVzt1QkEwRUVJO2VBQUE7ZUFBQSxPQUFBLGtDQUFBQSxtQkFBQUE7Y0FBdUI7SUFBQTtJQUQzQjtrQkFJb0R3QjtLQUN2QyxXQWxPSG5ELHFCQWlPMENtRDtLQUVyQztNQUFQQyxPQUFPLHdCQUZxQ0Q7TUFHN0M7UUFBQTtVQURDQzsrQjtZQS9FTjdCO3FCQWdGYUk7YUFBQTthQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtZQUFvQjtLQUE1QjtNQUNRLDJCO1NBakZiSjtTQStFTTZCO2tCQUVPekI7VUFBQTtVQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtTQUFvQjtNQUM3QixZQUw4Q3dCO29CQVFyQzNCLGlCQTdIZkYsYUF3Q0VDLFlBcUZhQyxhQURHOzs7Ozs7SUFJYjtJQVhMO2tCQWN3Q3VCO0tBQ3BDO01BQXVCLE9BQUEsd0JBaFAzQjlDO01BZ1BPLE9BQUEsdUJBRGlDOEM7S0FDakMsV0FBQTtTQUNHTSxNQUY4Qk47O0tBSWhDOzthQUZFTTthQUFBQTs7TUFDQUM7O1U7Ozs7TUFHQUMsS0FOOEJSOztLQU92Qjs7YUFEUFE7YUFBQUE7O01BQ0FDOztVOzs7OztjOzs7Y0FsR1JqQztjQThGUStCO2NBSUFFO3VCQUNKN0I7ZUFBQTtlQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtjQUF3QjtJQUN6QjtJQVRMLHNDQTlPQXpCO0lBeVBGO0dBQUU7WUFFQXVELGdCQUFjLFNBQUU7OztVQTdQaEIxRCxhQUVBRyxrQkEyQ0FNLFNBNkVBd0IsUUFtSUF5Qjs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDOVBBQyxhQUFhQyxHQUFFQztJQUFPLFdBQUEsK0NBQVRELElBQUVDO0dBQXlCO1lBQ3hDQyxjQUFjRCxNQUFPLE9BRHJCRixrQkFDY0UsTUFBNkI7WUFFM0NFLDJCQUEyQkMsR0FBRUg7SUFFN0I7O09BTEFGLGFBRzJCSyxHQUgzQkwsaURBRzZCRTtJQUU3QixPQUxBRjtHQU13RTtZQUV4RU0sNEJBQTRCRCxHQUFFSDtJQUU5Qjs7T0FWQUYsYUFRNEJLLEdBUjVCTCxpREFROEJFO0lBRTlCLE9BVkFGO0dBV3lFO1lBRXpFTyw4QkFBOEJMO1FBQUhNLGNBQUhIOztJQUMxQjtPQUQwQkE7S0FNZ0MsSUFBakRJLE1BTmlCSixNQU1nQyxNQUFBLHVCQUFqREk7OztTQUxPQyxXQUFaQzs7O0tBR0E7TUFIWUM7TUFBWkM7OztTQUFZSCxNQUFBRSxPQUFaRCxhQUFBRTs7SUFPSjs7T0FSNkJMO0tBYThCLElBQWxETSxNQWJvQk4sTUFhOEIsTUFBQSx1QkFBbERNOzs7U0FMUUMsV0FBYkM7OztLQUdBO01BSGFDO01BQWJDOzs7U0FBYUgsTUFBQUUsT0FBYkQsY0FBQUU7O0lBVUksVUEvQk5sQixhQXFCZWUsS0FyQmZmLGFBcUJFZ0IsYUFSNEJkO0lBZ0I5QixPQTdCQUY7YUFjRVc7YUFkRlg7ZUFjY1UsS0FkZFY7O1lBaUNBbUIsMkJBQTJCakI7SUFFM0I7S0FGd0JNO0tBQUhIO0tBRXJCO09BdEJBRTthQW9CcUJGLEdBQUdHLElBakN4QlIsaURBaUMyQkU7SUFFM0IsT0FuQ0FGOztZQXNDQW9CLFdBQVdDLE1BQUtuQjtJQUNsQjtLQUFzQ29CLGNBRHpCRDtLQUNZRSxjQURaRjtLQUNFRyxXQURGSDtLQUNUSSxZQURTSjtJQUViLEdBRHlCRTtpQkFBQUE7Ozs7OztZQXBDdkJuQjtrREFtQ2dCRjs7Ozs7WUFuQ2hCRTtrREFtQ2dCRjs7Ozs7WUFuQ2hCRTtrREFtQ2dCRjs7OztPQWtCYXdCO2FBckQ3QnRCLDJCQXNENkIsdUJBREFzQixJQWxCYnhCOzs7T0FZOEJ5QjtPQUFaQztPQUM1QkM7O1NBaEROekI7V0FrREk7O2lCQUZFeUI7YUFENEJEO2FBQVlEOztXQVo5QnpCO1NBRWQ0Qjs7O1NBQUFBLFNBeENGOUIsaURBc0NnQkU7SUFxQmxCLEdBcEJzQ29CO1NBdUI3QmpCLElBdkI2QmlCLGdCQW9CbENTLFNBMUJGWixvQkE2Qk9kLEdBdEJMeUI7O1NBbUJBQyxTQW5CQUQ7SUF3QkosR0F6QmVOO1NBNEJOZixNQTVCTWUsYUF5QlhRLFNBeERGMUIsNEJBMkRPRyxLQVJMc0I7O1NBS0FDLFNBTEFEO0lBVUosT0FyRUUvQixhQXVDRXlCLFdBeUJBTztHQUt1QjtZQUV6QkMsWUFBWUMsT0FBTWhDO0lBQ3BCO0tBQWdCaUMsY0FERkQ7S0FDVk4sYUFEVU07S0FFVkosU0F6RUY5QixvQkF1RWtCRTtLQWViLGFBYkg0Qjt3QkFJa0JUO0tBQWY7TUFBU25CO01BQUhNO01BQ0FzQixTQURBdEIsSUE3RVhSLG9CQTZFY0UsUUFBQUE7TUFPSDZCLFNBOUNYWCxXQXVDb0JDLE1BQ1RTO0tBT0osY0FESUM7SUFDTztJQVRoQjtLQUZBQSxTQUVBLHNDQUpZSTtLQWdCWkg7V0FBTyx1REFkUEQ7S0FlQUs7V0FBTywrQ0FqQlBSLGFBZ0JBSTtJQUVKLE9BRElJO0dBQ0E7WUFFRkMsaUJBQWlCQyxZQUFXcEM7SUFDOUIsSUFVbUIsTUFBQSwyQkFYQW9DLGFBV2QsYUFYeUJwQzt3QkFHVmdDO0tBQWY7TUFBU2hDO01BQUhNO01BQ0FzQixTQURBdEIsSUEvRlRSLG9CQStGWUUsUUFBQUE7S0FPUCxjQS9CTCtCLFlBd0JrQkMsT0FDVEo7SUFNeUI7SUFSbEMsT0FBQTtHQVN1QztZQUV2Q1MscUJBQXFCQztJQUN2QjtLQUFJQyxXQUFXLCtDQURRRDtLQUVuQkUsU0FBUywrQ0FGVUY7aUJBYWJHO0tBQ0g7TUFHTTtRQUFBO3VFQUpIQTtNQUVELFVBQ0U7S0FERixPQUFBO0lBR0M7SUFOUixVQUFBLGlDQVhFRjtpQkFHR0UsR0FBRUM7S0FDTDtNQUdNO1FBQUE7dUVBSkhEO01BRUQsVUFDRTtLQUZKLFdBQUEsd0RBREtDO0lBTUQ7SUFFTixPQUFBLGlDQVZFRjtHQWlCVTs7O1VBM0hadkMsZUFEQUgsY0E0RkFxQyxrQkFhQUU7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lDeEdBTSxhQUFXLDBCQUF3QjtHQUNBO0lBQUEsUUFBQTtJQUFwQkM7SUFBZkM7SUFDQUM7WUFTQUM7aUJBRzhCQztLQUMxQixhQTREa0JDO01BQ1Y7T0FHSTs7VUFBRTs7T0FEQyxjQUFFO09BRkxDLFFBQ0Y7bUJBUVVDO09BQ0g7UUFHTTtVQUFBO3dFQUpIQTtRQUVELFVBQ0U7T0FERixPQUFBO01BSUM7TUFQUjtPQUFBLE1BQUEsaUNBVE1GO09BUUgsY0FBRTtPQUZMRixVQUNGO09BY0ssY0FBRTtPQUZMSztTQUNGOzs7ZUFuQkVGLFdBS0FIO01Ba0JKLFdBTElLO0tBS0c7a0JBbEZBQztNQUNQO21CQUNPQztPQUFMO1FBQWdCQztRQUFIQztRQXVDSixNQUFBLDJCQXZDT0Q7UUF1Q1A7b0JBakNFRSxNQUFLQztRQUNSO1NBQUlDLE1BQU0sK0NBREZEO1NBRUpFLGFBQWEsK0NBRlRGOzs7U0FHUixHQURJRTtjQUdFQyxhQUhGRDtlQUFBQTtXQUtFO1lBQUEsTUFBQSxnQ0FQSEg7WUFHQ0ssU0FHQSxnQ0FERUQ7Ozs7U0FJUztVQUFQRSxTQUFPLGdDQVRaTjtVQVVLTyxTQUFPLHFDQURQRDtVQWdCaUIsTUFBQSwyQkF2QnJCSDtVQXVCTyxhQWZISTs7NEJBSXFCUjthQUFsQjtjQUFZQztjQUFOUTtjQUNBRjtnQkFEQUUsT0FHQSx1Q0FITVIsUUFBQUE7Y0FPTk8sU0FDRixnQ0FSY1IsR0FDWk87YUFTSixjQUhJQztZQUdPO1VBYmhCRSxTQUVBO1VBY0FDLFNBQU8sdUNBaEJQRDtVQVJKSixTQXdCSUs7O1FBR0c7U0FBUEMsU0FBTyx1Q0EzQlBOO1NBNEJBTyxTQUFPLGdDQTlCUFYsS0E2QkFTO1FBRUosT0FESUM7T0FDQTtPQWpDUjtRQURFQyxRQUNGO1FBdUNFLFVBQUUsK0NBNUNLZDtRQTJDSixjQUFFO1FBRkxOLFFBQ0Y7UUFNSyxjQUFFO1FBRkxILFVBQ0Ysb0RBM0NFdUI7UUFnREMsY0FBRTtPQURQO2VBQUE7OztxQkFWSXBCLFdBS0FIO2VBOUNETztNQXNETztNQXZEZCxPQUFBLHNDQURPRDtLQXlEUzs7S0ExRHBCO01BQUEsTUFBQTtNQURKO1FBQUE7eUNBRDBCTCx3QkFBQUE7S0FFdEIsT0FBQTtJQW1GWTtJQXJGbEI7S0FBQSxNQUFBO0tBRkF1QjtPQUNGO3dDQVpBMUI7S0F1R0UsTUFBQSxrQ0E1RkEwQjtLQTJGRyxjQUFFO0lBRlQsV0FDRTtHQUdEO1lBRUNDLG1CQUFpQixPQUFBLFdBMUdGNUIseUJBMEd5QjtZQUN4QzZCO0lBQWtCLGtCQTNHSDdCLHNCQUNmRTtHQTBHbUQ7WUFFbkQ0Qjs7S0E1R0E1Qjs7S0FnSEksT0FBQSxXQWpIV0Y7SUFpSFk7SUFGM0I7OztLQTlHQUU7O0tBcUhJLE9BQUEsV0F0SFdGO0lBc0hXO0lBRjFCOztJQUlGO0dBQUU7WUFFQStCLGdCQUFxQixTQUFFOzs7VUEzSHZCaEMsT0FXQUksU0FtR0EyQixRQWFBQyxVQWhCQUgsYUFDQUM7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7WUN6R0FHLG1CQUFvQkMsSUFBY0M7SUFHZCxVQUFBLGdDQUhBRDtJQUdBLFNBSGNDO0lBQ3BDLDJCQURvQ0E7R0FHOEI7aUNBSGhFRjs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNJQUcsaUJBQWtCQztJQUNwQiwyQ0FEb0JBO0dBQzhCO1lBRWhEQyxtQkFBb0JEO0lBQ3RCLDJDQURzQkE7R0FDOEI7WUFFbERFLGlCQUFrQkY7SUFDcEIsMkNBRG9CQTtHQUM4QjtZQUVoREcsa0JBQW1CSDtJQUNyQiwyQ0FEcUJBO0dBQzRCO1lBRS9DSSxlQUFnQko7SUFDbEIsMkNBRGtCQTtHQUM4QjtZQUU5Q0ssZUFBZ0JMO0lBQ2xCOztXQU9RO2VBREE7ZUFEQTtLQURVLE1BakJoQkMsbUJBWWdCRDtLQUlaLGNBQ0U7S0FKSk0sa0JBQ0Y7S0FvQkUsVUFBRTtLQUFGO1dBdEJjTjt1QjtJQW9CUjtLQUFBLE1BQUE7S0FEdUIsTUFBQTtlQUF6QjtlQURBOzs7UUFEQTs7O0tBRFUsTUF6QmhCRSxpQkFTZ0JGO0tBZVosY0FDRTtLQUpKTyxnQkFDRjtLQVdGLE1BeEJrQlA7aUJBMEJUUTtLQUVDO01BQXVDLE9BQUEsK0NBRnhDQTtNQUVDOzthQUFBLCtDQUZEQTtLQUV3QyxPQUFBO0lBQXRDO0lBSFQ7S0FERUMsd0JBQ0Y7S0FRQSxNQUFBO0tBU1MsTUFBQTtLQUdJLE1BQUE7S0FBQSxPQUFBO0tBSEosT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBOzthQXpDUEg7O0tBNENXLE9BQUE7S0FBQSxPQUFBO0tBSEosT0FBQTtLQUFBLE9BQUE7S0FDRSxPQUFBO0tBQ1QsT0F4REZMLG1CQVlnQkQ7S0EyQ0wsZUFBQTtLQUFBLE9BQUE7S0FERixPQUFBO0tBQUEsT0FBQTtLQUF3QixPQUFBO0tBQUEsT0FBQTtLQUF4QixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQVRULE9BQUE7S0FBQSxPQUFBO0tBUWUsT0FBQTtLQUFBLE9BQUE7S0FSZixPQUFBO0tBQUEsT0FBQTtLQUFFLE9BQUE7S0FPZ0IsT0FBQTtLQUFBLE9BQUE7S0FQaEIsT0FBQTtLQUFBLE9BQUE7S0FDTyxPQUFBO0tBQUE7T0FBQTtpREFWUFM7S0FXQSxPQWxERlYsaUJBZWdCQztLQWtDUCxXQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBRFAsT0FBQTtLQUFBLE9BQUE7S0FBd0IsT0FBQTtLQUFBLE9BQUE7S0FBeEIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FBRixPQUFBO0tBQUEsT0FBQTtJQWtCQSxPQUFBLGlDQXZDRU87R0F1Q2U7WUFFakJHLFFBQVFWO0lBQ1Y7S0FLRSxNQTNEQUssZUFxRFFMO2VBSXNDO0tBQWhDLE1BNURkSSxlQXdEUUo7S0FHTixjQUNFO0lBRUosT0FBQTtHQUE4QjtZQUU5QlcsT0FBUVg7SUFDVjtLQUNtQixNQXhFakJFLGlCQXNFUUY7S0FDTk8sZ0JBQ0Y7S0FHaUIsTUE5RWpCTixtQkF5RVFEO0tBSU5NLGtCQUNGO0tBR2lCLE1BcEZqQlAsaUJBNEVRQztLQU9OWSxnQkFDRjthQUVFQztLQUdRLGNBQUEsd0JBYkZiO0tBYUU7OztNQUNIOztrQkFBQWM7VUFBZ0M7VUFBQSxPQUFBLGtDQUFoQ0Esa0JBQUFBO1NBQXNDOztrQkFBdENBO1VBQUE7VUFBQSxPQUFBLGtDQUFBQSxtQkFBQUE7U0FBNkI7T0FBN0I7O1dBVkxSO29CQVVLUTtZQUFrQjtZQUFBLE9BQUEsa0NBQWxCQSxrQkFBQUE7V0FBdUI7T0FBdkIsMEI7TUFBQTs7OztLQUZMLElBREVDO0tBS0s7UUFmUFI7UUFVRVE7aUJBS0tEO1NBQUE7U0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7UUFBd0I7S0FDakM7SUFBRTtJQVBBRDtJQVVKLGFBQ0VDO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBeUI7d0JBWHZCRCx5QkFjSSx5QkFBUztJQUZiLFVBQUE7SUFERjtPQWpCRVA7SUFzQkosYUFDRVE7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUF1Qjs7S0FFakI7TUFDa0M7O1VBdkJ0Q0Y7bUJBdUJzQ0U7V0FBZ0I7V0FBQSxPQUFBLGtDQUFoQkEsa0JBQUFBO1VBQTZCO01BRDNETixVQUNGLDJCQTlCQVI7S0FnQ0YsU0FBSWdCLFNBQVNDO01BQ1M7T0FBaEJDO1NBQWdCOzthQTdCMUJaO3NCQTZCdUNRO2NBQWtCO2NBQUEsT0FBQSxrQ0FBbEJBLGtCQUFBQTthQUF1QjtNQUNyRCxHQUFBLDhCQURDSSxXQUVGLE9BRkVBO01BSUssVUFBQSw4QkFMRUQ7TUFLRixPQUFBLHVCQUpMQztLQUlrQjtLQUVBLFVBUHBCRixTQUhBUjtLQVVLLFdBVkxBO0tBV0o7SUFBUztJQVpiLFVBQUE7SUFERjtPQTFCRUQ7SUF5Q0o7R0FBRTtZQUVBWSxXQUFZQyxjQUFlQztJQUM3Qjs7O3FCQUlTTDthQUNILE9BQUE7O3NCQU5RSTtzQkFBZUM7c0JBS3BCTDtzQkFBQUE7WUFDa0U7R0FDMUU7WUFFQ00sV0FBWUYsY0FBZUM7SUFDN0I7OztxQkFJU0w7YUFDSCxPQUFBOztzQkFOUUk7c0JBQWVDO3NCQUtwQkw7c0JBQUFBO1lBQ2tFO0dBQzFFO1lBRUNPLFlBQWNDO0lBQ2hCOzs7cUJBSVNSO2FBQ1E7Y0FBUFM7Z0JBQU8sZ0NBQVUsV0FOWEQ7YUFPVixPQUFBOztzQkFESUM7O3NCQUREVDtZQUVxRDtHQUM3RDs7OztPQTlFQ047T0E2REFZO09BU0FDO09BbEJBSjtPQS9HQWhCO09BbUVBUTtPQTdEQU47Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SUN0QkFxQjtJQUNBQztJQWlEQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBaERBQyxhQUFXLDBCQUF3QjtHQUNBO0lBQUEsUUFBQTtJQUFwQkM7SUFBZkM7SUFDQUM7SUFDeUIsVUFBQTtJQUFmQztJQUFWQztZQUVBQztJQUFzQjs7Ozs7Ozs7Ozs7Ozs7Z0NBSW9CQzs7Ozs7aUJBQXVCQzthQUVqRSxXQUZpRUEsS0FBdkJEOzs7Ozs7OzsrQkFIS0U7O29GQUFjQyxxQkFFN0QsV0FGK0NELE9BQWNDOzs7Ozs7OztJQU14RCxPQUFBO0dBQTJDO0dBR2xEO0lBREVDO01BQ0Y7Z0NBakJFZDtnQkFzQkdlLFNBQ0FKO2lCQUlpQks7S0FDRCx5REFEQ0E7S0FFRCxxQjtRQWJuQkY7aUJBYW1CRztTQUFBO1NBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO1FBQXlCO0tBQ2xDO0lBQU07aUJBQ0NDO0tBQ1A7TUFBT0MsV0F6QmpCVixvQkF3QmlCUztNQUVIRSxPQUFPLHNDQURKRDtLQUVQLGFBQVNGO01BQUE7TUFBQSxPQUFBLGtDQUFBQSxrQkFBQUE7S0FBdUI7S0FBQyxVQUFBLGdDQUQ3Qkc7S0FDSyx5QjtRQWxCbkJOO0tBbUJVLE9BRklNO0lBRUE7O0lBVFI7S0FBQSxNQUFBO0tBREo7T0FBQTtnQ0FIQ0wseUJBQUFBLFNBQ0FKO0lBR0csT0FBQTtHQVNTO0dBZmpCO0lBREVVO01BQ0Y7OztRQWpCRWhCOzs7UUFFQUc7OztJQTBDcUIsTUFBQTtJQUFBO3VCQUZiLE9BekJWLHdCQURFYSxrQkEwQnNDO0dBUHhDO2NBTU07Y0FEQSx5Q0EzQ0pyQjtJQXFDQXNCOztPQXBDQXJCO1dBeUNJLHlDQTFDSkQ7O1lBcURFdUIsV0FBV047SUFDYjtLQVFZLE1BQUEsK0NBVENBO0tBU1gsTUFBQTtLQURvQixNQUFBLCtDQVJUQTtLQVFOLFVBQUU7S0FMTDs7aUJBQU1PO1VBQ0gsT0FBRyxtQkFBQSx3QkFwRFZoQixlQWdEYVM7d0JBS0osbURBRkNPO29CQUFBQTtTQUlBOztJQUVSLE9BQUE7R0FBNkM7R0FJL0M7SUFBQTtNQUFBO3lCQWJFRDs7O09BWW9DLDZDQWZ0Q3JCOztJQWVHLGNBQUU7SUFiTHVCO01BWUY7WUFJRUM7SUFDRjtLQWtCc0IsY0FBRTs7O1FBQWQ7dURBbkNSRDs7S0FrQ1U7V0FBRTs7O1FBRkUsK0NBbENkdkI7O0tBZ0NZLGNBQ0U7S0FKUixVQUNFO0tBRkMsY0FBRTtLQUZULFVBQ0U7OztRQUhFOzs7S0FGRixjQUNFO0tBSkp5QixnQkFDRjtlQTBCQSxzQ0EzREFMO0tBMERFLFVBQUU7ZUFEeUI7S0FBeEI7ZUFBRSw2Q0E5RlB0QjtJQTJGRjtZQXRCSTJCO2dCQXdCRjtHQUlEO1lBRUNDLG1CQUFpQixPQUFBLFdBaEdGeEIseUJBZ0d5QjtZQUN4Q3lCO0lBQWtCLGtCQWpHSHpCLHNCQUNmRTtHQWdHbUQ7WUFFbkR3QjtJQUNPLHNDQWxFUFI7SUFtRUYsYUFDRUw7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUF1RDtpQkFDekJjO0tBQ2Q7TUFBTEM7UUFBSzs7WUFEY0Q7cUJBQ0RkO2FBQUs7YUFBQSxPQUFBLGtDQUFMQSxrQkFBQUE7WUFBVTtLQUN2QjtPQXZHTlYsaUJBdUdtQiwrQ0FEbEJ5QjtLQUVKO0lBQVE7SUFIWjtLQUFBLE1BQUE7S0FESCxNQUFBLDhDQXJEQVA7SUFxREE7O0tBckdBbkI7O0tBOEdJLE9BQUEsV0EvR1dGO0lBK0dZO0lBRjNCOzs7S0E1R0FFOztLQW1ISSxPQUFBLFdBcEhXRjtJQW9IVztJQUYxQjs7SUFJRjtHQUFFO1lBRUE2QjtJQUNDLFVBQUEsd0JBekhENUI7SUF5SEM7OztlOzs7ZUE1R0RTO3dCQTRHa0NHO2dCQUFBO2dCQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtlQUFzQjs7R0FBQTs7OztPQTFIeERkO09Ba0VBdUI7T0FrQ0FJO09BcUJBRztPQXhCQUw7T0FDQUM7T0FqRkFSOzs7OztFOzs7Ozs7Ozs7Ozs7O1lDakJBYSxvQkFBcUJDLElBQWNDO0lBSWYsVUFBQSxnQ0FKQ0Q7SUFJRCxTQUplQztJQUVyQyw0QkFGcUNBO0dBSTZCO3FDQUpoRUY7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDbUJBRztJQWlCQUM7SUFTQUM7SUFDQUM7SUFDQUM7SUFxQkFDO0lBZ0lBQztJQXlCQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBOUxBQyxhQUFXLDBCQUF3QjtHQUNBO0lBQUEsUUFBQTtJQUFwQkM7SUFBZkM7SUFDQUM7SUFDaUMsVUFBQTtJQUFuQkM7SUFBZEM7SUFVbUIsVUFBQSwyQkFSbkJaO0lBUU9hO0lBQVBDO1lBS0FDO0lBQXVCO1NBQ05DO0tBQ2QsT0FBQSxrQkFEY0EsZUFBQUEsT0FBQUE7O1FBS0RDO0lBQ2IsT0FBQSxrQkFEYUEsaUJBQUFBLFNBQUFBO0dBSVM7WUFFekJDLG1CQUFtQkM7SUFDckIsSUFBSUMsSUFBSSx3QkFsQk5OLFFBbUJGLFFBRElNO3VCQUVlO1FBQ1BDLHFCQUhSRCxhQUFBQSxhQUFBQTtJQUd1QixPQUFBO2FBckJsQlAsc0JBcUJpRCxXQUpyQ00sR0FJVEU7R0FBcUQ7WUFFL0RDLGFBQWFIO0lBQUksT0FBVTthQXZCcEJOLGNBdUJvQixXQUFkTSxHQUFpQix3QkF2QjlCTDtHQXVCb0Q7Z0JBSUhTO0lBQy9DLE9BTEZEO3NCQUtvQkY7Y0FDZDtlQUVJO2lCQUFBOzRDQUEwQix3QkFKYUc7ZUFFdkNDLE9BQ0Y7ZUFLRSxPQUFBLCtDQU5BQTtjQUtGOztjQUdXO2VBQVRDO3FCQUFjLCtDQVJkRDtlQVNBRSxtQkFqQ1ZYLHFCQXdCVVM7Y0FVSixXQVhjSixNQUFBQSxNQVNWSyxRQUNBQzthQUMyQjtHQUFDO0dBWnhDO0lBREVDLGVBQ0YsdUNBSEV2QjtjQXlCSTtjQURBO2NBREE7Y0FEQTtJQUZGOztXQUNFLDZDQTVDSkg7SUF3Q0EyQixjQUNGO2NBa0JNO2NBREE7Y0FEQTtJQUZGOztXQUNFLDZDQXZESjFCO0lBbURBMkIsWUFDRjtjQWlCTTtjQURBO2NBREE7SUFGRjs7V0FDRSw2Q0FqRUoxQjtJQTZEQTJCLFlBQ0Y7SUFpQkUsVUFBRTtjQUZFO0lBRkY7Y0FDRTtJQUpKQyxZQUNGO0lBZUUsVUFBRTtjQUZFO0lBRkY7Y0FDRTtJQUpKQyxZQUNGO0lBZUUsVUFBRTtjQUZFO0lBRkY7Y0FDRTtJQUpKQyxXQUNGO0lBMkJFO1VBQUU7SUFBRjs7SUFIaUIsV0FoSUh0Qix5QkFnSXlCLHdCQWhJdkNDO0lBaUlRO0dBQUk7aUJBRlI7Z0JBUlVzQjtJQUNILFdBREdBO0lBQ0g7R0FLTTtHQVBYO0lBQUEsTUFBQSxpQ0F0SE50QjtjQXFISTtJQUZGO2NBQ0U7SUFKSnVCO01BQ0Y7SUE4Q3VCLE1BQUE7SUFBQTtJQTFCckJDOzs7Ozs7O2tCQVNhQztVQUNILHFCQWFlLGVBQWU7d0JBVmhCQztXQUNILElBQU1DLFdBQWdCLHdCQXpJM0N6QjtXQTBJcUIsY0FDeUIwQjtZQUNOLElBQVBDLE9BQU8sd0JBRE1EO1lBR2Y7dUNBRkVDLDRCQVJwQko7WUFhZ0I7V0FBRTs7V0FOTjtZQUFBLE9BQUE7WUFESjtjQUFBO3VDQUZHQztnQkFBQUE7Z0JBQ0dDO1dBRUYsT0FBQTtVQU1PO1VBVmhCO1dBQUE7YUFBQTs7OztXQURGO2FBQUE7O1dBQUYsT0FBQTtVQUFBLE9BQUE7U0FZOEI7OztJQVN0Q0csWUFBaUIsd0JBM0pyQjVCO0lBOEtJLE1BQUE7O0lBREssVUFBRTtJQUpMOztnQkFBTTZCO1NBQ0gsYUFmTEQ7dUJBZ0JzQixtREFGZEM7bUJBQUFBO1FBR2lCOztjQUwzQjtJQURFLE1BQUE7SUFESyxVQUFFO0lBSkw7O2dCQUFNQTtTQUNILGFBUExEO21CQU1RQzt1QkFFZ0IsbURBRmhCQTtRQUdlOztJQU4zQixVQUNFOzs7T0FGb0MsNkNBTHRDdEM7O0lBS0csY0FBRTtJQUhMdUM7TUFFRjtJQXdCTUwsV0FBZ0Isd0JBcExwQnpCO0dBcUxGLFNBQUkrQixXQUFXdEI7SUFDYjtLQVFZLE9BQUEsK0NBVENBO0tBU1gsT0FBQTtLQURvQixPQUFBLCtDQVJUQTtLQVFOLFdBQUU7S0FMTDs7aUJBQU1vQjtVQUNILE9BQUcsV0FMTkosY0FDU2hCO3dCQUtKLG1EQUZDb0I7b0JBQUFBO1NBSUE7O0lBRVIsT0FBQTtHQUE2QztHQUkvQztJQUFBO01BQUE7eUJBYkVFOzs7T0FZb0MsNkNBaEJ0Q3ZDOztJQWdCRyxlQUFFO0lBZEx3QztNQWFGO1lBSUVDLFVBQVVDLGtCQUFpQnhCO0lBQzdCLEtBRFl3QjtjQUFpQnhCLFNBS0o7U0FESlIsSUFKUVE7O2tCQUlSUjs7UUFFZFMsU0FOS3VCO0lBT1YsU0FES3ZCO1NBRWN3QixLQUZkeEI7Y0FOc0JELGFBUWEwQixJQVJiMUIsZ0JBUWEwQixTQUFyQkQ7OztTQUNERSxPQUhiMUI7Y0FOc0JELGFBU1c0QixNQVRYNUIsZ0JBU1c0QixXQUFwQkQ7O0lBR2hCO0dBQU07WUFFUkUsY0FBY0M7SUFFZDtLQUYwQ0M7S0FBUjlCO0tBQ2hDdUI7T0FDRjs7O1NBRmtDdkI7SUFJM0IsOENBSk82QjtJQUtoQixJQUFJRSxRQUx3Q0Q7YUFNeENFLG1CQUFtQmpDO0tBQ3JCO01BQUlrQyxPQUFPLCtDQURVbEM7TUFFakJtQyxRQXJOSjVDLHFCQW1OcUJTO0tBR3JCLFNBSHFCQTtNQUtuQjtPQURpQlIsSUFKRVE7T0FLZm9DLE1BRGE1QztPQUV5QixPQUFBLDhCQUZ6QkE7T0FFSyxPQUFBLDBDQURsQjRDO09BQ0FDLGtCQUFrQjtPQUNsQkM7U0EzQk5mLFVBZUVDLGtCQUttQnhCOzs7TUFhbkI7a0JBWEVtQzs7OztvQkFLRUc7O3FCQUFBQTs7MkJBRkFGOzJCQUpGRixnQkFLRUc7O0tBaUJKO01BRGdCNUMsTUF0QkdPO01BdUJmdUMsUUFEWTlDO01BRWhCLE9BRmdCQTtNQUVNLE9BQUEsMENBRGxCOEM7TUFDQUMsb0JBQWtCO01BQ2xCQztRQTdDTmxCLFVBZUVDLGtCQUttQnhCOzs7S0ErQm5CO2lCQTdCRW1DOzs7O21CQXVCRU07O29CQUFBQTs7MEJBRkFGOzBCQXRCRkwsZ0JBdUJFTTtJQWVIO0lBRUw7a0JBRVNFLFlBQVdDO0tBQ2QsU0FEY0EsTUFHUyxPQUhwQkQ7U0FFZ0JsRCxJQUZMbUQ7O21DQUFYRCxnQkFFZ0JsRDtJQUNjO0lBSnJDLElBREVvRCxjQUNGLHdDQTNDRVo7SUFrREosU0FBSWEsa0JBQWtCQztLQUNwQixTQURvQkEsZ0JBRURyQixLQUZDcUIsWUFFSyxPQUFOckI7U0FDREUsT0FIRW1CO1lBR0ZuQixPQVhoQmlCO0lBV3NDO0lBRTFDLFNBQUlHLGVBQWUvQztLQUNqQixPQU5FNkM7Y0FNZ0IsK0NBREQ3QztJQUM4QztrQkFJeERBO0tBQ0g7TUFBSWdELGFBNUROZixtQkEyREtqQztNQUdjLE9BUm5CK0MsZUFLSy9DO01BR0QsT0FBQTtLQUFBLE9BQUE7O2NBcEVROEI7a0JBa0VOa0I7O0lBRW1DO0lBSjNDLGtDQTNERWhCO0lBa0VKLFNBQUlpQixXQUFhQyxLQUFpQnBCLFFBQU9xQjtLQUN2QyxHQURlRCxTQUFhRSxNQUFiRixRQUFBRixhQUFhSSxjQUFiSjttQkFFUkssUUFBT0Y7TUFDVjtPQUE4QixPQW5CaENOLGtCQWtCS1E7T0FDQ0MsWUFBWTtvQkFFVEMsUUFBT0M7T0FDVjtRQUE4QixPQXRCcENYLGtCQXFCU1U7UUFDQ0UsWUFBWTtRQUdaQztVQUFlLCtDQUpURjtRQUtORyx1QkFEQUQsZUFUR1Y7T0FjTDs7U0Fkc0JsQjthQVVwQjZCOztTQVBKTDtTQUdJRztPQVVKO01BQUU7TUFaTixPQUFBLHlEQUZVTjtLQWVMO0tBaEJULE9BQUEseURBRHVDQTtJQWtCbEM7SUFHTDtLQURFSDs7OztJQXBCQUMsZUFvQkFELGFBM0ZZbEIsUUFBNEJDO0lBbUcxQztLQURFNEI7Ozs7SUEzQkFWLGVBMkJBVSxlQWxHWTdCLFFBQTRCQztJQXlHbkMsOENBekdPRDtJQTBHaEI7O1lBRUU4QjtJQUNGO0tBRGdEN0I7S0FBUjlCO0tBQ3hDLE9BRGdEOEI7O2tCQUd2QzhCLEtBQUlDO0tBRUwsV0FBQSwrQ0FGS0E7S0FDUCxPQUFBLHdEQURPQSxHQUFKRDtJQUdJO0lBSlg7S0FERUUsUUFDRjtLQU9FQztPQUNGOzs7U0FWc0MvRDtJQVl4QyxLQUhJK0Qsc0JBaFdGekY7UUFxV0swRixZQUxIRCx5QkFUNENqQztrQkFpQnJDbUM7bUJBQ29DQyxLQUFJbEQsTUFBSzRDO01BQWQsSUFBb0JPLEtBQU5QLFFBQUVRLEtBQUZSO01BQ3pDLEdBQUEsV0FGSkssS0FISkQ7T0FNYTtnQkFBQSxtREFGMkJFLEtBakIzQ0o7bUJBb0JvQixPQUhnQ0Y7V0FJbkNTO09BQUssbUJBQUxBLEdBSjhCckQsT0FBT29ELEtBQUlEOztNQUt4QyxLQUFBLFdBTHlCRCxLQUp4Q0YsWUFjTyxPQVYwQ0o7TUFNcEM7O1NBQUEsbURBUFRLLEtBaEJQSDtvQkF3Qm9CLE9BUGdDRjtVQVFuQ1U7TUFBSyxXQVJnQ0YsWUFRckNFLEtBUjhCdEQsT0FBV21EO0tBVTVDO0tBVndCLE9BQUE7SUFVeEI7SUFaZDtLQUFBO09BQUE7S0FEZUk7S0FBYkM7WUFmMEMxQztrQkFpQ3JDbUM7bUJBQ29DQyxLQUFJbEQsTUFBSzRDO01BQWQsSUFBb0JPLEtBQU5QLFFBQUVRLEtBQUZSO01BQ3pDLEdBQUEsV0FGSkssS0FuQkpEO09Bc0JhO2dCQUFBLG1EQUYyQkUsS0FqQzNDSjttQkFvQ29CLE9BSGdDRjtXQUluQ1M7T0FBSyxtQkFBTEEsR0FKOEJyRCxPQUFPb0QsS0FBSUQ7O01BS3hDLEtBQUEsV0FMeUJELEtBcEJ4Q0YsWUE4Qk8sT0FWMENKO01BTXBDOztTQUFBLG1EQVBUSyxLQWhDUEg7b0JBd0NvQixPQVBnQ0Y7VUFRbkNVO01BQUssV0FSZ0NGLFlBUXJDRSxLQVI4QnRELE9BQVdtRDtLQVU1QztLQVZ3QixPQUFBO0lBVXhCO0lBWmQ7S0FBQTtPQUFBO0tBRGVNO0tBQWJDO0lBZ0JKLFdBaENJRixhQWdCQUUsYUFoQmFILGFBZ0JBRTs7WUFrQmpCRTtJQUFXO0tBQ0wsV0FBQTtJQTBCVztLQXpCZ0JDOztLQUFiQztLQUFsQjlFO0tBeUJlLE9BcllqQlQscUJBNFdFUztLQXlCRSxXQUFFO0tBQUY7O1lBekJnQjhFOzs7UUFpQlo7OztLQVZRLFdBQUEsK0NBUGQ5RTtLQU1ZO0tBSUE7TUFERUMsYUFDRywrQ0FWakJEO01BWWNFLG1CQXhYaEJYLHFCQTRXRVM7S0ExVkZGLHNCQXdXZ0NGLEdBQUssV0FBTEEsTUFBQUEsTUFMaEJLLFFBR0FDLGNBRW9EO0tBRXhEO0lBQUk7SUFiVjs7ZUFDRTtJQUhSLFdBQUUsNERBRCtCMkU7R0EwQjVCO1lBRURFLFdBQVdsQixLQUFJTyxJQUFHQztJQUN4QixJQURpQlcsUUFBQW5CLEtBQUlvQixPQUFBYixJQUFHYyxPQUFBYjtJQUN4QjtjQUR3QmEsY0FBSEQsTUFFbkIsT0FBQSwyQkFGZUQ7S0FJRjtNQUFBLFFBbENiSixTQThCbUJLO01BQUFFO01BSWZDO01BQ1MsVUFuQ2JSLFNBOEJzQk07TUFBQUc7TUFLbEJDO01BQ0FDO1FBQU8sc0RBRlBILE9BQ0FFO01BTFdFLFlBTVhELE1BTldQO01BQUFBLFFBQUFRO01BQUlQLE9BQUFFO01BQUdELE9BQUFHOztHQVF2QjtZQUVDSSxXQUFXdkY7O0tBQzhCd0U7S0FBMUJGO0tBQWFHO0tBQTFCRjtrQkFLbUIxRSxHQUFLLFdBQUxBLE1BQVk7SUFBL0IsV0FBQSxrQ0FMYXlFO2tCQUdSekUsR0FBSyxXQUFMQSxNQUFhO0lBRHBCO0tBREVxRTtPQUNGLG9EQUZ5Q007a0JBV3BCM0UsR0FBSyxXQUFMQSxNQUFZO0lBQS9CLFdBQUEsa0NBWEEwRTtrQkFTSzFFLEdBQUssV0FBTEEsTUFBYTtJQURwQjtLQURFc0U7T0FDRixvREFSNEJNO0tBYTFCZSxPQXhCRVgsY0FZRlgsSUFNQUM7S0F3QkYsV0FBRSxrREFsQkFxQjtLQUVDLGVBQUU7S0FhYztXQUFFO2dCQUFWO0tBRFE7O1FBQUU7O0tBRFosV0FDRTtnQkFGSjtLQUZtQjtPQUFBLDBEQXhCZnhGO0tBd0JFLFdBQUU7S0FEQyxlQUFFO0tBRlQsV0FDRTtLQUhOLFdBQ0U7S0FGTCxXQUFBO0lBY0YsT0FBQTs7O2lCQUtLWTtJQUFMLElBQW9DYixtQkFBVmMscUJBQVhHO0lBQ2IsU0FEYUE7S0FNZTthQUFBLGtEQTNkOUIzQztLQTJkOEIsT0FBQTs7O0lBRHRCO0tBQUE7T0FBQTs2Q0FuSVJxRjtLQWlJSTtPQUFBO2dDQUhDOUM7U0FBQUE7OztTQUErQmI7O1NBQVZjO0lBS2xCLE9BQUE7R0FDb0Q7R0FQNUQ7SUFBQSxPQUFBLGtEQXBkQXhDO0lBa2RBb0g7TUFDRjs7O1FBdGNFMUc7O1FBSUFUO1FBUUFjOzs7WUFvY0FzRztJQUNGO0tBa0N1QixlQUFFOzs7UUFBZjs7O2NBallSakY7O0tBZ1lxQixlQUFFOzs7UUFBZix5REF6WVJGOztLQXdZcUIsZUFBRTs7O1FBQWY7d0RBMVpSRjs7S0F5WnFCLGVBQUU7OztRQUFmO3dEQWhaUkM7O0tBK1lVO1dBQUU7O1dBRCtCLCtDQWplM0MvQjtLQWllWSxlQUFFO0tBSFI7V0FDRTtLQUZDLGVBQUU7Z0JBRFA7S0FGaUIsZUFBRTs7O1FBQWY7d0RBeFNSNkM7O0tBdVNVO1dBQUU7OztRQUZFLCtDQXZTZHhDOztLQXFTWSxlQUNFOztXQUhOO0tBRGEsZUFBRTs7O1FBQWY7d0RBelRSc0M7O0tBd1RVO1dBQUU7OztRQUZFLCtDQXhUZHZDOztLQXNUWSxlQUNFO0tBSlI7V0FDRTtLQUZDLGVBQUU7S0FGVDtXQUNFO0tBRkMsZUFBRTtLQUZMZ0g7T0FDRjtLQW1EcUIsZUFBRTs7O1FBQWY7d0RBemJSdkY7O0tBd2JzRCxXQUFFO0tBQWxDLGVBQUU7O1dBQWhCO0tBRGEsZUFBRTs7O1FBQWY7d0RBbGNSRDs7S0FpY3NELFdBQUU7S0FBbEMsZUFBRTs7V0FBaEI7S0FEYSxlQUFFOzs7UUFBZjt3REE1Y1JEOztLQTJjVTtXQUFFO0tBREMsZUFBRTtLQUZUO1dBQ0U7S0FGQyxlQUFFO0tBRlQsV0FDRTtLQUZDLGVBQUU7S0FGTDBGLGFBQ0Y7Z0JBOERBLHNDQS9hQWxGO3lCQThaNENtRjtLQUFwQyxJQUFrQjdGLHlCQUFYZ0I7S0FDTCxTQURLQSxjQUVZO21CQUlEOEU7b0JBRUhwRztPQUNIO1FBR007VUFBQTt5RUFKSEE7UUFFRCxXQUNFO09BREYsT0FBQTtNQUlDO01BUFAsT0FBQSxrQ0FEVW9HO0tBU0g7bUJBVkFELFFBQVUsV0F2SWpDTixXQWtJMEJ2RixjQUtINkYsWUFBNEM7S0FEdkQsT0FBQSwwREFKZ0NBO0lBZW5CO0lBaEJwQjtLQUFBLE9BQUEsa0NBeGhCTHpHLE9BeWJBcUc7S0E4RkUsT0FBQTtLQURHLGVBQUU7OztRQURQOztnQkFGd0M7S0FBeEI7O1lBQUUsNkNBM2ZsQi9HO0tBeWZFOztRQXRDQWtIO1lBd0NFO0tBRkY7O0tBTlMsSUFBTzVFO0tBQ0wsYUFES0E7SUFHbUI7SUFKN0I7S0FBQSxPQUFBLGtDQTFnQlI1QjtLQXlnQitCLE9BQUE7O1dBQXpCOztLQUxLLElBQU80QjtLQUNMLGFBREtBO0lBR2lCO0lBSjNCO0tBQUEsT0FBQSxrQ0FuZ0JSNUI7S0FpZ0JJO2VBQ0U7SUFMUjtZQXhESXVHOzthQTBERjs7R0E0Q0Q7R0FzQ0M7O01BQUE7OztRQTdsQkE1Rzs7OztJQTJqQkEsSUFBOEJnQixrQkFBVmMsb0JBQVhHO0lBQ1AsU0FET0E7S0FLSDtjQUxHQTtNQUdpQitFO01BQUxDO01BQUxDOztpQkFHRHJGO3VCQXlCY2dEO1VBQ1YscUI7YUFyakJuQjNEO3NCQXFqQjRCSjtjQUFBO2NBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO2FBQXVCO1VBQ2hDLE9BQUEsa0RBRlUrRDtTQUVTO3VCQXhCWnNDO1VBQ1A7V0FBSUMsTUFBTTtXQUNOQyxNQUFNLCtCQURORDtXQUVBdkUsU0FDRiw0Q0FGRXdFO1dBS0FDO2FBQ0YsZ0RBTEV6RTtVQXpXdkJELGNBNld1QjBFLGNBUEdIO1VBWUw7V0FERUk7YUFDRixnREFMRUQ7V0FPQUUsYUFBYSw4Q0FIYkQ7VUFJSyxxQ0FaTDFFO1VBYUsscUNBYkxBO1VBY0osY0FDRS9CO1dBQUE7V0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7VUFBcUI7VUFDbkI7O2FBQUE7ZUFBVyxzQ0FMWDBHO1VBSUYseUI7YUFoakJyQnRHO1VBbWpCbUIsT0FBQTtTQUFpQjs7U0F0QnJCO1VBQUEsT0FBQTtVQURKO1lBQUE7cUNBRElXO2NBQUFBO2NBSENxRjtjQUFLRDtjQUhTakc7Y0FHSmdHO2NBSE5sRjtTQVFMLE9BQUE7UUF5QndCO01BNUJqQztRQUFBOztLQUFBLE9BQUE7O0lBSDBCLFdBQUE7SUFBQSxPQUFBO0dBK0JVO0dBbEM1QztJQURFMkYsZ0JBQ0Ysd0NBOWlCRXBIO0lBZ21CWSxPQUFBO0lBQVosT0FBQTtpQkFSS3VCLFVBQVM4RjtrQkFHRDdGO21CQUVxQmI7TUFDakIsT0F2a0JqQkgsc0JBdWtCbUNGLEdBQ2QsV0FEY0EsTUFBQUEsTUFEREssV0FFbUM7S0FBQzs7S0FGekQ7TUFBQSxPQUFBO01BREo7UUFBQTtpQ0FESWE7VUFBQUE7VUFIUkQ7VUFBUzhGO0tBS0QsT0FBQTtJQUUwRDtJQU5yRTtZQUNFOzs7O0dBS3FFO0dBUnJFO0lBQUEsV0FBQSw0QkFubUJKMUgsZUFFQUc7SUErbEJBd0gsWUFDRjtZQVlFQyxtQkFBaUIsT0FBQSxXQTltQkY3SCx5QkE4bUJ5QjtZQUN4QzhIO0lBQWtCLGtCQS9tQkg5SCxzQkFDZkU7R0E4bUJtRDtHQUN0QztZQUViNkg7SUFDRixJQTFERUwsbUJBd0NBRTs7SUFtQk8sc0NBN2VQaEc7SUE4ZUYsY0FDRWI7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUF3RDtrQkFDMUJpSDtLQXBsQjlCbEg7Z0JBc2xCMkJGO1FBQ2Q7Z0JBRGNBO2dCQUFBQTtnQkFBQUE7U0FJTjtXQUFBO2NBQUE7O2tCQU5Tb0g7MkJBTUlqSDttQkFBSzttQkFBQSxPQUFBO21EQUFMQSxrQkFBQUE7a0JBQVU7Ozs7UUFIL0I7T0FPQztLQUVQO0lBQVE7SUFaWjtLQUFBLE9BQUE7S0FESCxPQUFBLDhDQWhkQXFCO0lBZ2RBO0lBZUYsY0FDRXJCO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxtQkFBQUE7SUFBdUQ7a0JBQ3pCaUg7S0FDdkI7TUFDaUM7UUFBQTs7WUFGVkE7cUJBRXdCakg7YUFBSzthQUFBLE9BQUEsa0NBQUxBLG1CQUFBQTtZQUFVO01BRHJEZ0IsV0FDRjtLQXRtQlRqQixzQkF3bUJrQ0YsR0FBSyxXQUFMQSxNQUh2Qm1CLFVBR3VCbkIsTUFBQUEsTUFBd0I7S0FDbkQ7SUFBUTtJQUxaO0tBQUEsT0FBQTtLQURILE9BQUEsOENBdmNBMEI7SUF1Y0E7SUFRRixjQUNFdkI7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUFpRDtrQkFDbkJpSDtLQUNkO01BQUxDO1FBQUs7O1lBRGNEO3FCQUNEakg7YUFBSzthQUFBLE9BQUEsa0NBQUxBLG1CQUFBQTtZQUFVO0tBQ2hDO01Bcm5CUEw7aUJBdW5CbUNFO1NBQXNCLFdBQUEsbUJBSDlDcUg7U0FHNkIsV0FBTHJILE1BQUFBO1FBQXdDO01BQWhFO01BQUE7O2lCQUdNO0lBQVM7SUFQdkI7S0FBQSxPQUFBO0tBREgsT0FBQSw4Q0ExbEJBUTtJQTBsQkE7SUFVRixjQUNFTDtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0lBQStDO2tCQUNqQmlIO0tBQ2Q7TUFBTEM7UUFBSzs7WUFEY0Q7cUJBQ0RqSDthQUFLO2FBQUEsT0FBQSxrQ0FBTEEsbUJBQUFBO1lBQVU7S0FDaEM7TUFFTztPQUREb0c7U0FDQyxrQkFISGMsdUJBTU8sbUJBTlBBO01BL25CWHZILDRCQXVvQjBDRSxHQUFLLFdBTmxDdUcsS0FNNkJ2RyxNQUFBQSxNQUFtQjtNQUEzQztNQUFBOztpQkFFRDtJQUFTO0lBWHZCO0tBQUEsT0FBQTtLQURILE9BQUEsOENBemxCQVM7SUF5bEJBO0lBY0YsY0FDRU47S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUErQztrQkFDakJpSDtLQUNkO01BQUxDO1FBQUs7O1lBRGNEO3FCQUNEakg7YUFBSzthQUFBLE9BQUEsa0NBQUxBLG1CQUFBQTtZQUFVO0tBQ2hDO01BRU87T0FERG1HO1NBQ0Msa0JBSEhlLHVCQU1PLG1CQU5QQTtNQTlvQlh2SCw0QkFzcEIwQ0UsR0FBSyxXQUFMQSxNQU43QnNHLEtBTTZCdEcsTUFBbUI7TUFBM0M7TUFBQTs7aUJBRUQ7SUFBUztJQVh2QjtLQUFBLE9BQUE7S0FESCxPQUFBLDhDQTdsQkFVO0lBNmxCQTtJQWNGLGNBQ0VQO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBOEM7O21CQUsxQmU7b0JBRXFCb0c7T0FDakI7UUFBSWpIO1VBQ0Y7OztZQUZlaUg7UUFNYmhIO1VBQ0Y7O1lBcnJCMUJYO1lBOHFCeUMySDtPQVVKLE9BdHFCckNwSDt5QkFzcUIwQ0YsR0FDZCxXQURjQSxNQUFBQSxNQVRkSyxRQUtBQyxjQUsrQjtNQUFDOztNQVh4QztPQUFBLE9BQUE7T0FESjtTQUFBLGtDQURJWSx5QkFBQUE7TUFFQSxPQUFBO0tBV3lDO0tBZGxEOztRQUFBOztLQURGO0tBQUE7SUFpQk07SUFuQlo7S0FBQSxPQUFBO0tBREgsT0FBQSw4Q0Eva0JBTDtJQStrQkE7SUFzQkYsY0FDRVY7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUErQzs7S0FFeEMsSUFBTUUsU0FBYyx3QkFyc0IzQlg7bUJBeXNCb0J3QjtvQkFFcUJvRztPQUNqQjtRQUFJakg7VUFDRjs7O1lBRmVpSDtRQU1iaEg7VUFDRjs7WUE3c0IxQlg7WUFzc0J5QzJIO09BVUosT0E5ckJyQ3BIO3lCQThyQjBDRixHQUNkLFdBRGNBLE1BQUFBLE1BVGRLLFFBS0FDLGNBSytCO01BQUM7O01BWHhDO09BQUEsT0FBQTtPQURKO1NBQUE7a0NBRElZLDBCQUFBQSxTQUpQYjtNQU1PLE9BQUE7S0FXeUM7S0FkbEQ7O1FBQUE7O0tBREY7S0FBQTtJQWlCTTtJQXBCWjtLQUFBLE9BQUE7S0FESCxPQUFBLDhDQXhuQkFNO0lBd25CQTtJQXVCRixjQUNFUjtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO0lBQStDOztLQUV4QyxJQUFNRSxTQUFjLHdCQTd0QjNCWDttQkFpdUJvQndCO29CQUVxQm9HO09BQ2pCO1FBQUlqSDtVQUNGOzs7WUFGZWlIO1FBTWJoSDtVQUNGOztZQXJ1QjFCWDtZQTh0QnlDMkg7T0FVSixPQXR0QnJDcEg7eUJBc3RCMENGLEdBQ2QsV0FEY0EsTUFBQUEsTUFUZEssUUFLQUMsY0FLK0I7TUFBQzs7TUFYeEM7T0FBQSxPQUFBO09BREo7U0FBQTtrQ0FESVkseUJBQUFBLFNBSlBiO01BTU8sT0FBQTtLQVd5QztLQWRsRDs7UUFBQTs7S0FERjtLQUFBO0lBaUJNO0lBcEJaO0tBQUEsT0FBQTtLQURILE9BQUEsOENBdm9CQU87SUF1b0JBOztLQXR1QkF0Qjs7S0Fnd0JJLE9BQUEsV0Fqd0JXRjtJQWl3Qlk7SUFGM0I7OztLQTl2QkFFOztLQXF3QkksT0FBQSxXQXR3QldGO0lBc3dCVztJQUYxQjs7SUFJRjtHQUFFO1lBRUFtSSxnQkFBcUIsU0FBRTs7O1VBM3dCdkJwSSxPQWlkQTZHLFNBa0tBbUIsUUF3SkFJLFVBNUpBTixhQUNBQzs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQ2pwQkFNLGFBQVcsMEJBQXdCO0dBQ0E7SUFBQSxRQUFBO0lBQXBCQztJQUFmQztJQUNBQztZQUNBQyxLQUFLQyxHQUFJLGVBQUpBLGtCQUFvRDtZQUV6REMsa0JBQTRCQztJQUNrQjs7S0FEdEJDO0tBQUhDOztLQUFMQztLQUFITDttQkFBUUksR0FGckJMLEtBRXdCSTtLQUNzQixjQURqQ0gsR0FGYkQsS0FFZ0JNO0tBQ0ksTUFBQSxxQ0FEUUg7SUFDUixPQUFBOztZQUVwQkk7aUJBRzhCQztLQUMxQixhQWlDa0JDO21CQUVIQztPQUNIO1FBR007VUFBQTt3RUFKSEE7UUFFRCxVQUNFO09BREYsT0FBQTtNQUdDO01BTlAsT0FBQSxpQ0FEVUQ7S0FRTjs7TUFyQ0Y7T0FBWUU7T0FDVkMsUUFBTSw0Q0FESUQ7OztPQUdHLFNBRmJDLFdBRWEsbUJBRmJBO1FBUUU7OztvQkFDT1QsTUFBS1U7WUFDRyxJQUFQQyxTQUFPLGdDQURSWDt5QkFHSUE7YUFBTDs7Y0FBdUJDO2NBQUhDOztjQUFMQztjQUFITDthQUNWLE9BekIxQkMsbUJBd0JvQ0QsR0FBR0ssUUFBS0QsR0FBR0QsS0FBbEJEO1lBQzhCO1lBRnJDLE9BQUEsaUNBRElXLFFBRElEO1dBS1M7U0FQbkJWLE9BQ0Ysc0NBUkZTO1NBaUJJRSxTQUFPLGdDQVZQWDtTQVdBWTtXQUNGO2tFQUZFRDtTQWhCSkUsU0FpQklEOzs7O1FBakJKQztVQUVBOztNQXdCSixXQUFFLGtEQTFCRUE7S0EwQmM7O0tBN0J0QjtNQUFBLE1BQUE7TUFISjtRQUFBO3lDQUQwQlI7VUFBQUE7OztLQUl0QixPQUFBO0lBc0NTO0lBMUNmO0tBQUEsTUFBQTtLQUZBRztPQUNGO3dDQVRBYjtLQXlERSxNQUFBLGtDQWpEQWE7S0FnREcsY0FBRTtJQUZULFdBQ0U7R0FHRDtZQUVDTSxtQkFBaUIsT0FBQSxXQTVERnBCLHlCQTREeUI7WUFDeENxQjtJQUFrQixrQkE3REhyQixzQkFDZkU7R0E0RG1EO1lBRW5Eb0I7O0tBOURBcEI7O0tBa0VJLE9BQUEsV0FuRVdGO0lBbUVZO0lBRjNCOztLQWhFQUU7O0tBdUVJLE9BQUEsV0F4RVdGO0lBd0VXO0lBRjFCOztJQUlGO0dBQUU7WUFFQXVCLGdCQUFxQixTQUFFOzs7VUE3RXZCeEIsT0FRQVcsU0F3REFZLFFBYUFDLFVBZkFGLGNBREFEOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7O0lDZ0g2Q0k7SUFBTkM7SUFBUkM7Ozs7O0lBNUsvQkM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQURBQyxhQUFXLDBCQUF3QjtZQUduQ0M7SUFDRjs7Z0NBd0J3Qjs7O2dDQURHOzs7OytCQUREOztLQUZwQjs7Z0NBQ3FCOzs7O1FBRnZCLHVDQXRCRkY7OztrQ0FvQndCOzs7a0NBREc7Ozs7aUNBREQ7O0tBRnRCOztrQ0FDdUI7O0tBSDNCLFdBQ0U7S0FERjtrQkFQcURHO0tBQzFDLFdBRDBDQTtLQUdyQyxPQUFBO0lBRXlEO0lBTG5FO0tBQUEsT0FBQTtLQUZKO2VBQ0U7SUFRSixPQUFBO0dBZUM7WUFHREMsWUFBYUM7SUFDZixPQURlQTtlQUVKOztjQUNBO2NBQ0E7Y0FDVDtlQUVTOztjQUNBO2NBQ0E7Y0FDVDtHQUNEO1lBRUNDO0lBQ0Y7Z0JBNUNFSjtLQTBERSxXQUFFO0tBQUY7a0JBVHFEQztLQW5CdkRDLFlBbUJ1REQ7S0FHMUMsV0FIMENBO0tBS3JDLE9BQUE7SUFFK0I7SUFQekM7S0FBQSxPQUFBO0tBRko7ZUFDRTtJQUpSO1lBQ0U7O0dBZUQ7WUFFQ0k7SUFDRjtpQkFDT0M7a0JBR1FDO01BQ0osR0FKSkQ7T0F1Q1U7UUFBQSxNQUFBO3dCQURjRSxJQUFNLE9BQU5BLEdBQVE7O21CQTVCWEM7V0FDUDt5QkFFU0MsS0FBSUM7WUFDUCxHQURPQSxTQUVMLE9BRkNEO1lBT0ksR0FBQSxxQkFQQUM7YUFRTTtjQUFBLE9BQUEsdUJBUk5BO3FCQVFEOzthQUNNOztnQkFBQSxxQkFUTEE7bUJBQUFBO21CQVlELHVCQVpDQTtZQUtILElBREVDLE9BQ0Y7WUFTRixrQkFWSUEsVUFKQ0QsV0FBSkQ7V0FxQkY7V0F0QkwsSUFERUcsV0FDRix3Q0FGS0o7V0EyQlAsT0FBQSwyQkExQklJO1VBMEJhOztPQTVCckI7UUFBQSxPQUFBO1FBREo7VUFBQSxrQ0FMRU4sd0JBQUFBO1FBS0YsT0FBQTtPQStCSSxPQUFBOztNQUVPLFdBQUE7TUFBQSxPQUFBO0tBQW1CO0tBdkNyQzs7UUFBQTs7S0FBQSxPQUFBOztJQXVDdUM7SUExQzdDLE9BQUE7R0EyQ3FCO1lBRW5CTztJQUNGO2lCQUNPUjtrQkFHUUM7TUFDSixHQUpKRDtPQW1DVTtRQUFBLE1BQUE7dUJBRGNFLElBQU0sT0FBTkEsR0FBUTs7bUJBeEJYQztXQUNQO3dCQUVTQyxLQUFJSztZQUNQO2FBR0s7ZUFBQSxxQkFKRUE7a0JBQUFBO2tCQU9ILHVCQVBHQTthQUNISCxPQUNGO2FBT0YsTUFUT0c7eUJBVUFMLEtBQUlNO2FBQ1Asa0JBVkFKLFVBU09JLFNBQUpOO1lBTUc7WUFQVixPQUFBLGlDQVRHQTtXQWlCbUM7V0FsQjFDLElBREVHLFdBQ0Ysc0NBRktKO1dBdUJQLE9BQUEsMkJBdEJJSTtVQXNCYTs7T0F4QnJCO1FBQUEsTUFBQTtRQURKO1VBQUEsa0NBTEVOLHVCQUFBQTtRQUtGLE1BQUE7T0EyQkksT0FBQTs7TUFFTyxVQUFBO01BQUEsT0FBQTtLQUFtQjtLQW5DckM7O1FBQUE7O0tBQUEsT0FBQTs7SUFtQ3VDO0lBdEM3QyxPQUFBO0dBdUNxQjtZQUVuQlU7SUFDRjtpQkFDT1g7a0JBR1FDO01BQ0osR0FKSkQ7T0FxRFU7UUFBQSxNQUFBO3VCQURjRSxJQUFNLE9BQU5BLEdBQVE7O21CQTFDWEM7V0FDUDt3QkFFU0M7WUFBTCxJQUFnQlEseUJBQU5QO2VBQUFBLFNBRU4sT0FGQ0Q7WUFJRTs7Ozs7Z0JBSlNRLGdCQUFBQTs7OztrQkFLTUMsZUFBTkMsZ0JBQVJDOzs7Ozs7aUJBQWNGLFFBQUF4QixLQUFOeUIsU0FBQXhCLE1BQVJ5QixXQUFBeEI7O3lCQWtCUXlCO2FBQUwsSUFBYW5CLGNBQUhvQjthQUNSLE9BQUEsK0JBREdELFVBbEJNSCxPQWtCREksR0FBR3BCO1lBQzhCO3lCQUZ0Q21CO2FBQU8sT0FDWiwrQkFES0EsVUFqQkFGO1lBaUJtQztZQUQzQyxVQUFBO1lBUEksR0FBQSxxQkFkRlQ7YUFlUTtjQUFBLE1BQUEsdUJBZlJBO29CQWVDOzthQUNNOztnQkFBQSxxQkFoQlBBO21CQUFBQTttQkFtQkMsdUJBbkJEQTtZQVdKO2FBREVDO2VBQ0Y7Ozs7aUJBTkVTO2lCQUFRRDs7aUJBTEFGO1lBNEJaLGtCQWxCSU4sVUFWRUQsV0FBTEQ7V0FtQ0Q7V0FwQ04sSUFERUcsV0FDRixzQ0FGS0o7V0F5Q1AsT0FBQSwyQkF4Q0lJO1VBd0NhOztPQTFDckI7UUFBQSxNQUFBO1FBREo7VUFBQSxrQ0FMRU4sd0JBQUFBO1FBS0YsTUFBQTtPQTZDSSxPQUFBOztNQUVPLFVBQUE7TUFBQSxPQUFBO0tBQW1CO0tBckRyQzs7UUFBQTs7S0FBQSxPQUFBOztJQXFEdUM7SUF4RDdDLE9BQUE7R0F5RHFCO0dBRU4sSUFBYmlCO1lBRUFDO0lBQ087SUFDVCxVQUpFRDtJQUFBQSxvQkFwSkFuQjs7Y0FvSkFtQjtJQUFBQSxvQkF0R0FWOztjQXNHQVU7SUFBQUEsb0JBNURBUDs7SUFtRU87SUFDQTtJQUNBO0lBQ0E7SUFDVCxvQkFDd0QsT0FoTXREZixlQWdNc0U7SUFBdEU7SUFFRixvQkFDeUQsT0FuTXZEQSxlQW1Nd0U7SUFBeEU7SUFFRjtHQUFFO1lBRUF3QjtJQUNPO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDVDtHQUFFO2lDQTlPQTNCLE9BOENBSyxTQXlLQXFCLFFBaUJBQzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ3hPbUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxRQUFBO0lBQXBCQztJQUFmQztJQUNxQixVQUFBO0lBQWJDO0lBQVJDO0lBdUJNO01BQUE7OztRQXhCTkY7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXVCRyxNQUFBOztJQWZFOztLQWFZOztpQkFBS0c7U0FBYTtTQUFBLE9BQUE7eUNBQWJBLHlCQUFBQTtRQUEyQztLQUR6Qzs7O1NBQXFCLFdBQUE7U0FBQSxPQUFBO1FBQW1CO0tBRDdDOzs7U0FBcUIsV0FBQTtTQUFBLE9BQUE7UUFBbUI7S0FEcEQ7T0FBQTs7Ozs7Ozt5QkFEb0IsV0FBeUI7a0JBUGpDQzttQkFHRUM7TUFBTTtPQUFtQyxPQUFBLCtDQUF6Q0E7T0FBcUIsZUFBRSwrQ0FBdkJBO01BQXlDLE9BQUE7S0FBYTtLQUQ3RCxJQURFQyxNQUNGLGtDQUZLRjtLQU1QLFdBTElFO0lBS3NCO0lBUC9CLFdBQUE7SUFTQSxPQUFBO0dBSU07R0FoQmI7SUFBQSxNQUFBO0lBSEFDLFdBRUY7SUF1QjJCLGNBQUU7SUFEM0JDO01BQ0YsdURBekJFRDs7SUE0QmdELFlBQ3hDLE9BQUE7SUFFTixjQUMyQkU7S0FBeUM7S0FBQSxPQUFBLGtDQUF6Q0Esa0JBQUFBO0lBQThDO0lBQTlDLFdBQUEsOENBUjdCRDtJQVFJO01BbENJUDs7TUFrQ087O0lBRWIsY0FBeUJDOztNQUdkOztPQU1ZOzttQkFBS0M7V0FDVjtXQUVFO1lBQUE7Y0FBQTt1Q0FIUUE7Z0JBQUFBO2dCQVRIRDtZQVdMO2NBQUE7V0FDQSxPQUFBO1VBQXNDO09BSjVCOzs7V0FBcUIsV0FBQTtXQUFBLE9BQUE7VUFBcUI7T0FEL0M7OztXQUFxQixXQUFBO1dBQUEsT0FBQTtVQUFxQjtPQUZ0RDtTQUFBOzs7Ozs7OzJCQURvRCxTQUFJO29CQUE3Qk8sR0FBSyxPQUFMQSxFQUFNO01BQWpDLFdBQUE7TUFDQSxPQUFBO0tBUU07S0FYYixXQUFBO0tBQUEsT0FBQTtJQVdlO0lBYkQsT0FBQSw0QkFwQ3RCUDtHQWlEeUI7R0FuQmQ7SUFBQSxNQUFBLG1DQTVCWEs7SUEyQkFHLFdBQ0Y7O0lBd0JLLFlBQ1k7SUFFUixJQURLQywwQkFDTCxpQkFES0E7a0JBS1NDLEdBQUVDO0tBQWUsZUFBRSwrQ0FBbkJEO0tBQVMsV0FBQSx5REFBUEM7SUFBb0M7SUFEN0M7S0FBQSxPQUFBO0tBRE07V0FBRTtLQUFYLFdBQUM7SUFGTCxXQUNFO0dBS0E7R0FWVDtJQUFBLE1BQUEsaUNBeEJBSDtJQXNCQUksYUFDRjs7SUFpQkssWUFDWTtRQUNISDs7UUFFREksWUFGQ0osa0NBQUFBO2lCQUtJSyxHQUFFQyxNQUFLSjtLQUNWLEtBSkZFLDZCQUZDSixXQUtJSyxPQUFBQSxJQTRCRCxPQTVCUUg7O21CQVdJSyxHQUFFTDtNQVlRLFdBQUEsdUJBWlZLOztNQVlEO09BQUEsV0FBRTtPQUFGO21CQVpDQSxlQUFBQTtPQUdDO2lCQUNFO01BSE47Y0FBQTtjQURLTDtLQWFDO0tBZFY7TUFBQSxPQUFBLG1DQVZGSTtNQU9zQix3QkFaNUJOLFdBS0lLLE9BQUFBO01BT1UsT0FBQTtNQUFBLE9BQUE7TUFEbUIsT0FBQTtNQUFwQix3QkFYYkwsUUFLSUssT0FBQUE7TUFNUSxPQUFBO01BRkosV0FDRTtNQUZMO1lBQUM7S0FESCxXQUFBLHlEQUZRSDtJQTRCTDtJQTdCVCxJQURFTSxPQUNGO0lBZ0NGLFdBQUUsa0RBakNFQTtHQWlDZ0I7R0F2QzNCO0lBQUEsTUFBQSxpQ0F2Q0FUO0lBcUNBVSxZQUNGO0lBNEMwQixNQUFBLHFEQTVEeEJOO0lBNERFTyxRQUFRO0lBRVAsY0FBRTtJQUhMVjtNQUVGOzs7O1lBRElVOzs7UUE3Q0ZEO1lBa0RBRSxtQkFBb0JDLFdBQWlDQyxNQUNwREM7SUFDSCxhQUEwQmhCO0tBQXlDO0tBQUEsT0FBQSxrQ0FBekNBLGtCQUFBQTtJQUE4QztJQUE5QztLQUFBLE1BQUEsOENBNUZ4QkQ7S0E0RkVOO09BQVM7O2lCQUN3Q0M7a0JBRVRRO01BQ3JCLElBQVBNLE9BQU8sZ0NBQVUsV0FOWE0sV0FLc0JaO01BRXZCLG9DQURMTSxNQU51Q08sTUFDcERDO01BT29CLFVBQUE7TUFBQSxPQUFBO0tBQW1COztLQUhsQztNQUFBLE1BQUE7TUFESjtRQUFBO2lDQURpRHRCLHdCQUFBQSxTQURqREQ7S0FHSSxPQUFBO0lBR21DO0lBTEssT0FBQTs7Ozs7R0FLSjtHQUtyQjtJQUFBLE1BQUE7SUFBQTtJQXNCWCxNQUFBOzs7Ozs7c0IsT0FuQ1ZvQjs7SUEyQm9DLE1BQUE7SUFBMUIsTUFBQTs7Ozs7OztTLE9BM0JWQTs7O0lBb0IyQixNQUFBO0lBVjNCSTs7Ozs7Ozs7VSxPQVZBSjs7OztZQXlDQUs7SUFDRjs7O1FBaERFaEI7WUFzREksc0NBdENKZTtLQW1DRTs7UUFDRSxzREF4SUpsQjs7S0FzSUssY0FBRTtJQUZULFdBQ0U7R0FPRDtZQUVDb0I7SUFDRixhQUFxQkM7S0FDakIsS0FEaUJBLE9BRVA7U0FDSEMsVUFIVUQ7WUFHVkM7SUFFZ0M7SUFMM0IsT0FBQTtHQUs0QjtZQUUxQ0M7SUFDRixhQUFBdEI7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG1CQUFBQTtJQUFpRDs7S0FFMUMsYUFDR0E7TUFBeUM7TUFBQSxPQUFBLGtDQUF6Q0Esa0JBQUFBO0tBQThDO0tBQTlDLFVBQUEsOENBMUpSRDtLQXlKSztPQW5MR1A7O09Bb0xEOztLQURGO0lBRVM7SUFIYjtLQUFBLE1BQUE7S0FESCxNQUFBLDhDQXZKRU87SUF1SkY7SUFLQSxzQ0F4REVrQjt3QkEwRG9ELE9BQUEsV0F6THJDM0IseUJBeUwyRDtJQUExRTtJQUVGLG9CQUFtRCxPQUFBLFdBM0xsQ0EseUJBMkx5RDtJQUFqQyxPQUFBOztHQUFrQztZQUV6RWlDLGdCQUFxQixTQUFFOytCQXBCdkJKLE9BWEFELFNBbUJBSSxRQVlBQzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDN0xtQzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFBQSxRQUFBO0lBQXBCQztJQUFmQztJQUNBQzs7Ozs7Ozs7WUFFQUMsV0FBV0M7SUFDYixLQURhQSxPQUVIO1FBQ0hDLFVBSE1EO1dBR05DO0dBRXNEO1lBRTNEQztpQkFDc0NGLE9BQVMsT0FSL0NELFdBUXNDQyxPQUF5QjtJQUE5QixPQUFBLG1DQVhqQ0g7R0FXZ0U7WUFFaEVNO0lBQ0Y7S0FLTTtNQUVPLGFBS1NDO09BQ1QsWUFEU0E7OEJBRUpDLGdCQUFLLE9BQUxBO1dBQ0dDOzJCQUVNLElBQW1CQyxpQkFBYSxPQUFiQSxLQUFrQjtPQUEvQyxVQUFBLGlDQUZJRDtPQUVKLE9BQUE7TUFBcUQ7TUFUaEQ7O09BQUE7O21CQUFLRTtXQUFhO1dBQUEsT0FBQTttREFBYkE7b0JBQUFBO1VBQWtEO09BRWhEOzs7V0FBcUIsVUFBQTtXQUFBLE9BQUE7VUFBbUI7T0FEN0M7OztXQUFxQixVQUFBO1dBQUEsT0FBQTtVQUFtQjtPQUZuRDtTQUFBOzs7Ozs7O01BS0ksT0FBQTtLQUtxRDtLQVg5RCxVQUFBO0tBQUEsT0FBQTtJQVdnRTtJQWRwRTtLQUFBO09BQUE7OztTQWpCRlg7OztLQWNFWSxZQUVGO0tBb0JFO1dBQUUsa0RBdEJGQTtLQXFCRyxjQUFFO0lBRlQsV0FDRTtHQUdEO1lBRUNDLG1CQUFpQixPQUFBLFdBdkNGZCx5QkF1Q3lCO1lBQ3hDZTtJQUFrQixrQkF4Q0hmLHNCQUNmRTtHQXVDbUQ7WUFFbkRjOztLQXpDQWQ7O0tBNkNJLE9BQUEsV0E5Q1dGO0lBOENZO0lBRjNCOztLQTNDQUU7O0tBa0RJLE9BQUEsV0FuRFdGO0lBbURXO0lBRjFCO0lBSUY7R0FBRTtZQUVBaUIsZ0JBQXFCLFNBQUU7OztVQTdDdkJYLE9BR0FDLFNBNkJBUyxRQWFBQyxVQWhCQUgsYUFDQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ3ZDbUM7Ozs7Ozs7OztJQURuQ0c7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQ21DLFFBQUE7SUFBcEJDO0lBQWZDO0lBQ2lDLFVBQUE7SUFBbkJDO0lBQWRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBRUFDLGVBQWdCQztrQkFDbUNDO21CQUVUQztNQUN2QixXQU5MTCw2QkFFRUcsS0FHMEJFO01BRXJCLFdBQUE7TUFBQSxPQUFBO0tBQW1COztLQUZsQztNQUFBLE9BQUE7TUFESjtRQUFBO2lDQURpREQsd0JBQUFBLFNBRG5DRDtLQUdWLE9BQUE7SUFFbUM7SUFKSyxPQUFBOzs7OztHQUlKO1lBRTFDRyxXQUFXQztJQUNiLEtBRGFBLE9BRUg7UUFDSEMsVUFITUQ7V0FHTkM7R0FFc0M7WUFFM0NDO2tCQUFnQ0YsT0FBUyxPQVB6Q0QsV0FPZ0NDLE9BQXlCO0lBQTlCLE9BQUE7R0FBK0I7WUFFMURHO2FBQ0VDLE9BQVFDO0tBQ2tDLElBQXhDUCxRQUF3Qyx3QkFwQjVDSjtLQXFCQSxLQUZVVztNQUlHLE1BQUE7U0FGVEMsa0JBREFSLFFBQUFBLGNBRE1PO21CQVNEVDtNQUNIO09BUVksT0FBQSxtQ0FUVEE7T0FTRCxPQUFBO09BSks7U0FBQSwwQkFMSkEsS0FQTFU7Z0JBYVU7O09BSEgsV0FBRSwrQ0FISlY7T0FHQyxXQUFBO01BTUYsT0FBQTtLQUF1QztLQVY3QyxJQURFVyxlQUNGLGtDQVJRRjtLQWpCVlYsZUFtQklXO0tBcUJDO2lCQUFtQyw2Q0E1Q3hDaEI7TUE0Q0ssZUFBRTtLQURQLE9BQUEscURBZklpQjtJQWlCVTtJQWtDSDtLQUFBO09BQUE7OztTQTlFWGY7OztLQTZFUSxNQUFBOztLQXpCRSxxQkF3QnVCLFdBQXlCO21CQURqQ2dCLEdBQUssV0FBTEEsR0FBNkI7S0FEeEM7TUFBQSxPQUFBOztNQW5CSzs7a0JBQUtYO3dCQUlDUTtXQUNILEdBREdBO2dCQUtDVCxNQUxEUztlQUFBQTs0QkF2Q3ZCRCxPQXVDdUJDOzthQXhEekJWLGVBNkQwQkM7YUFJZTtjQUFBLE9BQUEsbUNBSmZBO2NBSUk7b0JBQUU7OztpQkFESjs7O2dCQVBGYTs7O2dCQUFBQTtXQVlPOztjQUFBLGtEQVpQQTtXQVlPLE9BQUE7VUFBNEI7O1VBZjNDO1dBQUEsT0FBQTtXQURKO2FBQUE7c0NBRFVaLHlCQUFBQTtVQUVOLE9BQUE7U0FlNEM7TUFsQnBDOzs7VUFBcUIsV0FBQTtVQUFBLE9BQUE7U0FBbUI7TUFEN0M7OztVQUFxQixXQUFBO1VBQUEsT0FBQTtTQUFtQjtNQURuRDtRQUFBOzs7Ozs7O0tBc0JJLE9BQUE7SUFFNkM7SUExQnREO0tBQUEsTUFBQTtLQURILE1BQUE7S0FERyxjQUFFO0tBRkxhLGNBQ0Y7S0FBQTs7S0F3Q1UsWUFDWTtTQUNDWjttQkFDS2E7TUFBZSxlQUFFLCtDQUFqQkE7TUFBZSxPQUFBO0tBQWlCO0tBQTlDLE9BQUEsa0NBRFNiO0lBQzZDO0lBSjdEO0tBQUEsTUFBQSxpQ0FyRlBKO0tBb0ZJLE1BQUE7S0FERyxjQUFFO0tBSFBrQjtXQUVBO0tBYUUsTUFBQTtLQU9jLE1BQUE7S0FBQSxNQUFBO0tBUGQsTUFBQTtLQUFBLE1BQUE7S0FBQTtPQUFBLG1EQWZGQTtLQXNCZ0IsTUFBQTtLQUFBLE1BQUE7S0FQZCxNQUFBO0tBQUEsTUFBQTtLQUNLLE1BQUE7S0FLWSxNQUFBO0tBQUEsTUFBQTtLQUxaLE1BQUE7S0FBQSxNQUFBO0tBQ0EsTUFBQTtLQUF5QyxNQUFBO0tBQUEsTUFBQTtLQUF6QyxNQUFBO0tBQUEsTUFBQTtLQUFBO09BQUE7cURBcERQRjtLQW9EZ0QsTUFBQTtLQUFBLE1BQUE7S0FBekMsTUFBQTtLQUFBLE1BQUE7S0FBQSxNQUFBO0tBQUEsY0FBQTtLQUFBLE9BQUE7S0FEQSxPQUFBO0tBQUEsT0FBQTtLQUFpQixPQUFBO0tBQUEsT0FBQTtLQUFqQixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURMLE9BQUE7S0FBQSxPQUFBO0tBQTZCLE9BQUE7S0FBQSxPQUFBO0tBQTdCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7SUFGTixXQUVNO0dBWUw7WUFFQ0c7SUFDRjtLQUFJQyxhQUFhLGtDQWhIZnhCO0tBaUhFeUI7T0FBWTs7V0FEWkQ7b0JBQ3lCTjtZQUFhO1lBQUEsT0FBQSxrQ0FBYkEsa0JBQUFBO1dBQWtCO0lBQy9DLE9BOUdFYixlQTZHRW9CO0dBQ29CO1lBRXRCQztJQUNGLElBQUEsU0FBdUQsTUFqR3JEYjtpQkFpRzhCYyxHQUFLLGNBMUduQ2xCLFdBMEc4QmtCLFdBQXFCO0lBQXJELFdBQUU7R0FBK0Q7WUFFL0RDO3dCQUdJLE9BQUEsV0F6SFczQix5QkF5SFk7SUFEM0I7SUFHRixvQkFFTSxPQUFBLFdBN0hXQSx5QkE2SFc7SUFEMUI7O0lBR0Ysb0JBakJFc0IsbUJBb0JJLHlCQUFRO0lBRkssVUFBQSxvQ0FqSWpCdkI7SUFpSUE7SUFJRjtHQUFFO1lBZ0JBNkIsZ0JBQXFCLFNBQUU7a0NBbkl2QmpCLE9Ba0dBYyxTQUdBRSxRQThCQUM7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7OztZQ2hKQUMsdUJBQXVCQztJQUdILFVBQUEsZ0NBSEdBO0lBR0g7SUFGdEI7R0FFZ0Q7OEJBSDlDRDs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ0FxQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBTHJCRTtJQUNBQztJQTZDQUM7SUFhQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF0RHFCLFFBQUE7SUFBYkM7SUFBUkM7SUFDQUM7SUFDb0IsVUFBQSwyQkFEcEJBO0lBQ09DO0lBQVBDO0lBQ21DLFVBQUE7SUFBcEJDO0lBQWZDO0lBQ0FDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFFQUMsU0FBVUM7SUFDWixLQURZQSxPQUVGO1FBQ0hDLFVBSEtEOztlQUdMQztHQUVGO1lBRUhDLFlBQVlDO2tCQUN1Q0M7bUJBTVJDO01BQ3RCO09BQVBDO1NBQU8sd0JBQVUsc0NBRFlEO01BRy9CO2lDQUZFQyw0QkFSRkg7TUFZUyxXQUFBO01BQUEsT0FBQTtLQUFtQjs7S0FMbEM7TUFBQSxPQUFBO01BTEo7UUFBQTtpQ0FEaURDLHdCQUFBQTtLQU03QyxPQUFBO0lBS21DO0lBWEssT0FBQTs7Ozs7R0FXSjtZQUUxQ0csU0FBT0MsTUFBS0w7a0JBQ3VDQzttQkFNUkM7TUFFL0I7T0FERUM7U0FDRjtXQUFVOzthQUEwQiwwQkFUekNFO2FBT29DSDtNQUl4QixvQ0FITEMsTUFSUEUsTUFBS0w7TUFZUyxXQUFBO01BQUEsT0FBQTtLQUFtQjs7S0FMbEM7TUFBQSxPQUFBO01BTEo7UUFBQTtpQ0FEaURDLHdCQUFBQTtLQU03QyxPQUFBO0lBS21DO0lBWEssT0FBQTs7Ozs7R0FXSjtHQU94QztjQUlFO2NBREE7Y0FEQTtJQUZGOzs7UUFDRSw2Q0FOSmY7O0lBRUFvQixvQkFDRjtjQTJCTTtjQURBO2NBREE7Ozs7T0FEQSw2Q0FkSm5COzs7SUFXMkIsWUFDVCxPQUFBO1FBQ0hvQjtJQUE0QixPQUFBLHdDQUE1QkE7R0FBNEQ7R0FGckU7SUFBQSxNQUFBLDRCQWpFTmxCO2NBZ0VJOztJQUh1QixlQUVQLDZCQURGO0dBQ21CO0dBRi9CO0lBQUEsTUFBQSw0QkE3RE5BO0lBMkRFLGNBQ0U7SUFKSm1CO01BQ0Y7WUFrQkVDLDJCQUE0QkM7SUFFOUI7S0FBSUMsWUFGMEJEO1lBRTFCQyxZQUllLHdCQS9FakJuQjs7R0ErRXFDO1lBRXJDb0IsY0FBZUM7SUFDakI7S0FBSUMsbUJBQW1CO0tBQ25CSjtPQUFrQix5Q0FEbEJJO0lBRUosS0FESUosaUJBRU07UUFDSEssb0JBSEhMO09BR0dLLHlCQU1ILE9BQUEsV0E5Rk0zQjtJQWdHVztLQUFiNEIsYUFyQk5QLDJCQWFLTTtLQVNDRSxhQUFhLHdCQWpHbkI1QjtJQWtHRSxHQURJNEI7U0FHS0MsV0FITEQsZUFDQUUsaUJBRUtEOztTQUZMQyxpQkFGQUg7SUFPSixHQXBCYUg7S0F1QlA7TUFERU87UUFDRiw4Q0FsRFJaO01Bb0Q0QixPQUFBLHdCQUFXLHVCQVZqQ1c7S0FVUztLQUNUO01BQUE7aUJBQ0VFO1NBQUE7U0FBQSxPQUFBLGtDQUFBQSxrQkFBQUE7UUFBNkI7TUFDMUIsT0FBQSx3QkFBVSx1QkFiZkY7S0FZRTtRQUxFQztLQUtGOzs7S0FLRjtJQUVKO0tBQUlFLGlCQXJCQU4scUJBRUFHLGdCQUZBSDtJQTJCSixPQUFBLFdBM0hNNUIsZUFxSEZrQztHQU9MO1lBRURDO0lBQ0Y7S0FBSUMsVUFBUSx3QkE3SFZoQztLQWlJZ0MsV0FKOUJnQztLQUc0QyxPQUFBLHdCQWxJOUNuQztrQkFrSXVCZ0MsR0FBSyxPQUFMQSxLQUFxQjtJQUY5QztZQUVJOztHQUVIO1lBRUNJLFlBQWFDO2tCQUNzQ3pCO0tBcERuRFc7S0FzREUsY0FDeUNWO01BQ3RCO09BQVBDO1NBQU8sd0JBQVUsc0NBRFlEO01BRXhCLHlCO1NBTk53QjtTQUtDdkI7a0JBQ0trQjtVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO1NBQWdCO01BQ2QsV0FBQTtNQUFBLE9BQUE7S0FBbUI7S0FIbEMsV0FBQTs7S0FESjs7UUFBQTtpQ0FGaURwQjtVQUFBQTtVQVRuRHNCO0tBWU0sT0FBQTtJQUdtQztJQU5LLE9BQUE7Ozs7O0dBTUo7WUFFMUNJLHlCQUEwQkQ7SUFDNUI7S0FBSUU7T0FDRiw4Q0F0R0F0QjtLQXlHeUIsT0FBQSx3QkFsSnpCZDtLQWlKRXFDLFdBQ0Ysd0JBQVU7SUFFSDtPQU5MRDtPQUdBQztnQkFHS1I7UUFBQTtRQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtPQUE2QjtJQUN0QyxjQUNFQTtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsa0JBQUFBO0lBQWtDO2tCQUNUUztLQUNsQjs7O2dCQURrQkE7eUJBQ2ZUO2lCQUFLO2lCQUFBLE9BQUEsa0NBQUxBLGtCQUFBQTtnQkFBWTs7O0lBR0w7SUFKZCxXQUFBO0lBREg7T0FSRU87SUFlSixjQUNFUDtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQWdDOztLQUd2QjtNQURFVTtRQUNGOztZQW5CUEg7cUJBbUJvQlA7YUFBd0I7YUFBQSxPQUFBLGtDQUF4QkEsbUJBQUFBO1lBQTZCO0tBRTVDO01BRXFCO09BQWJXLGVBQWEsbUJBTGpCRDtPQU1BLFdBRElDLG1CQUFBQTtPQUZKQzs7Ozs7VUFBQUE7O0tBU0osR0FUSUE7VUFXS0MsY0FYTEQ7TUFXb0IsV0E5S3hCMUMsZUE4S1MyQzs7O01BRWtCO09BQW5CQyxhQUFtQix3QkFoTGxDM0M7T0FpTGU0QyxvQkFBb0IsdUJBRHBCRDtPQUVKO2tCQUNFZDtVQUFBO1VBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO1NBQTZCO09BQUksT0FBQSx3QkFGL0JlO01BRUY7U0FyQ1hSO01BdUNrQixXQXJMYnJDLGVBRFBEO01Bc0xvQjs7S0FqRHBCbUMsWUFTMEJDO0tBNENuQjtJQUFRO0lBMUJaLFdBQUE7SUFESDtPQWhCRUU7SUE2Q0o7R0FBRTtZQUVBUztJQTZCSTs7T0FBQTs7O1NBek5KM0M7OztrQkFxTlM0QztLQUNPLElBQU5DLE1Bbk5WM0MsU0FtTnlCLHlDQURoQjBDO0tBRUgsR0FESUMsS0FDaUIsNkJBcEYzQmQsYUFsSUE5QjtLQXVOTSxPQUZJNEM7SUFFRDtJQUpQO0tBQUEsT0FBQTtLQUFBOzs7Ozs7d0IsT0E1TEZuQzs7OztrQ0FkQUw7Ozs7O3lCLE9BY0FLOzs7V0EwS0kseUNBMU1KcEI7SUFxTUY7WUFwTUVDOzthQXdNSSx5Q0F6TUpEOzs7R0FtT0Q7WUFFQ3dEO0lBQ0Y7S0FBbUQsTUFsQ2pESDtLQWtDRUksa0JBQWtCO0tBRXBCLE1BQUE7S0FJRixNQUFBO0tBMEJTLE1BQUE7S0FBQSxNQUFBO0tBMUJULE1BQUE7S0FBQSxNQUFBO0tBQ0UsTUFBQTtLQXdCUSxNQUFBO0tBQUEsTUFBQTtLQXhCUixNQUFBO0tBQUEsTUFBQTtLQWlCRSxPQUFBO0tBRzBCLE9BQUE7S0FBQSxPQUFBO0tBSDFCLE9BQUE7S0FBQSxPQUFBO0tBQUE7T0FBQTs7YUFqTUZqQzs7S0FvTTRCLE9BQUE7S0FBQSxPQUFBO0tBSDFCLE9BQUE7S0FBQSxPQUFBO0tBQ0UsT0FBQTtLQUVDO09BQUE7S0FBQSxPQUFBO0tBRkQsT0FBQTtLQUFBLE9BQUE7S0FBQTs7UUFBQSwrQ0FwTUpyQjs7S0FvTUksT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREYsT0FBQTtLQUFBLE9BQUE7S0FBd0IsT0FBQTtLQUFBLE9BQUE7S0FBeEIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FqQkYsT0FBQTtLQUFBLE9BQUE7S0FnQlEsT0FBQTtLQUFBLE9BQUE7S0FoQlIsT0FBQTtLQUFBLE9BQUE7S0FNRSxPQUFBO0tBU1EsT0FBQTtLQUFBLE9BQUE7S0FUUixPQUFBO0tBQUEsT0FBQTtLQUlFLE9BQUE7S0FDK0MsT0FBQTtLQUFBLE9BQUE7S0FEL0MsT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBOzthQXZNSm1COztLQXdNbUQsT0FBQTtLQUFBLE9BQUE7S0FEL0MsT0FBQTtLQUFBLE9BQUE7S0FDRSxPQUFBO0tBQWdDLE9BQUE7S0FBQSxPQUFBO0tBQWhDLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREYsT0FBQTtLQUFBLE9BQUE7S0FBeUIsT0FBQTtLQUFBLE9BQUE7S0FBekIsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FKRixPQUFBO0tBQUEsT0FBQTtLQUdzQixPQUFBO0tBQUEsT0FBQTtLQUh0QixPQUFBO0tBQUEsT0FBQTtLQUNFLE9BQUE7S0FFQztPQUFBO0tBQUEsT0FBQTtLQUZELE9BQUE7S0FBQSxPQUFBO0tBQUE7O1FBQUEsK0NBdE1KcEI7O0tBc01JLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURGLE9BQUE7S0FBQSxPQUFBO0tBQXdCLE9BQUE7S0FBQSxPQUFBO0tBQXhCLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBTkYsT0FBQTtLQUFBLE9BQUE7S0FFSyxPQUFBO0tBQUEsT0FBQTtLQUZMLE9BQUE7S0FBQSxPQUFBO0tBQUE7T0FBQTtpREFQRXVEO0tBU0csT0FBQTtLQUFBLE9BQUE7S0FGTCxPQUFBO0tBQUEsT0FBQTtLQUFBLFdBQUEsNkNBNU9BeEQ7S0E0T0EsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBREYsT0FBQTtLQUFBLE9BQUE7S0FBaUMsT0FBQTtLQUFBLE9BQUE7S0FBakMsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FKRSxPQUFBO0tBQUEsT0FBQTtLQUVZLE9BQUE7S0FBQSxPQUFBO0tBRlosT0FBQTtLQUFBLE9BQUE7S0FDRixPQUFBO0tBQUE7V0FBQSw2Q0F6T0VEO0tBeU9GLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURFLE9BQUE7SUFBQSxPQUFBO0dBK0JVO1lBRVYwRDtJQUNGLElBQUEsU0FBaUQsTUFyQy9DRjtpQkFxQzhCRyxHQUFLLE9BL1BuQy9DLFNBK1A4QitDLEdBQWU7SUFBL0MsV0FBRTtHQUF5RDtZQUV6REM7SUFDRjtLQUFJeEI7T0FBd0IsOENBaE4xQlo7S0FpTjRCLE1BMUU1QjZCO0lBMEVPO0lBRVAsSUFERW5DLE9BQ0YsZ0NBaFJBbEI7SUFvSkEyQyx5QkEySEV6QjtJQXRRRlAsa0JBc1FFTzs7SUFRSixvQkFDc0QsT0FBQSxXQWhSckNULHlCQWdSNEQ7SUFBM0U7O0tBSWEsV0FwUkVBO0tBcVJZO01BQW5CcUIsbUJBQW1CO01BQ25CSjtRQUNGLHlDQUZFSTtLQUlELE9BdFJQbEIsU0FtUlFjLG1CQW5KUmUsWUFvSUV2QjtJQXFCTTtJQVRSO2lCQVlrRDJDO0tBQzlDO01BR2EsWUFBQSx3QkF0U2pCeEQ7OztRQXdTaUI2QjtjQUFBQTtzQkFDK0IsbUJBUEUyQjs7O01BRzFDLFdBclNBekQ7Ozs7O01BMFNnQjs7S0FwS3hCcUMsWUFvSUV2QjtLQW1DRTtJQUFFO0lBWE4sbUNBMUJFa0I7SUF1Q0o7R0FBRTtZQUVBMEI7SUFBYSxZQUNMO1FBQ0hqRDtXQUFBQTtHQUU4QztZQUVuRGtEO2lCQUNzQ2xELE9BQVMsT0FQL0NpRCxXQU9zQ2pELE9BQXlCO0lBQTlCLE9BQUEsbUNBclRqQ0g7R0FxVGdFO1lBRWhFc0Q7SUFFRixZQXhURXJEOztLQTRUYztNQURQTztNQUNEb0MsUUFBUTtRQUNMLHlDQURIQTtNQTFMTmIsWUF5TE92Qjs7TUFHSzs7O0tBSkY7SUFPWjtHQUFFOytCQWRBNkMsT0FuREFMLFNBR0FFLFFBbURBSTs7OztFOzs7Ozs7Ozs7Ozs7O1lDMVRBQyxnQkFBaUJDLElBQWNDO0lBR1gsVUFBQSxnQ0FISEQ7SUFHRyxTQUhXQztJQUNqQyx5QkFEaUNBO0dBR2lDO2tDQUhoRUY7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0dDTG1DOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQXNCbkNHO0lBQ0FDO0lBa0VBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUF6Rm1DLFFBQUE7SUFBcEJDO0lBQWZDO0lBR0YsVUFBQTtJQURvQkM7SUFBbEJDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBS0FDO0lBQTJCOzs7R0FHbEI7R0FFNEI7SUFBQSxVQUFBO0lBQXJCQztJQUFoQkM7WUFFQUMsZUFBZ0JDO0lBQ2xCLEtBRGtCQSxPQUVSO1FBQ0hDLFVBSFdEO1dBR1hDO0dBRXFDO1lBRTFDQztrQkFBZ0NGLE9BQVMsT0FQekNELGVBT2dDQyxPQUE2QjtJQUFsQyxPQUFBO0dBQW1DO1lBSTlERyx1QkFBdUJDLElBQUdDOztLQUloQixZQUFBLHdCQTNCVlY7aUJBNEJjO1NBQ0NXO0tBQU0sT0FBQSxxQ0FBTkE7SUFBK0I7SUFIOUM7S0FERUMsZUFDRjtLQUtFQzs7OztpQkFLUUM7U0FHTyxZQUFBLHdCQXZDakJkOzs7V0F5Q3FCVztrQkFBTSx1Q0FBTkE7OztTQUhiLElBREVJLE9BQ0Y7U0FLRixPQUFBOztrQkFOSUE7O2tCQURBRDtRQU9vRDtLQUc1REU7Ozs7aUJBS1FGO1NBR08sWUFBQSx3QkF0RGpCZDs7O1dBd0RxQlc7a0JBQU0sdUNBQU5BOzs7U0FIYixJQURFSSxPQUNGO1NBS0YsT0FBQTs7a0JBTklBOztrQkFEQUQ7UUFPcUQ7S0FHN0RHO1dBcENBTCxrQkFNQUMsbUJBZUFHO0tBd0JFO09BQUE7OztTQXhFSmxCOzs7a0JBcUVTb0I7S0FDbUIsSUFBbEJDLGtCQUFrQix5Q0FEbkJEO0tBRUg7Z0JBekROZCxlQXdEVWU7SUFDOEI7SUFIdEMsV0FBQTtJQUpKO1lBdkN5QlY7WUF5Q0UsdUJBSHZCUSxrQkF0Q3dCUDs7R0FpRDNCO1lBR0NVO0lBQ0YsT0FyREVaO0dBcUR3QztZQUl4Q2E7SUFDRjtnQkFHSSx5Q0EvREYxQjtJQTZEQSxPQTNEQWE7OztjQTRERSx5Q0E5REZiOztHQWdFQztZQUlEMkIsc0JBQXVCQyxhQUN0QkM7SUFDbUI7O09BQUEsd0JBQVcscUNBRDlCQTtJQUNNO1NBQ0gsd0JBbEZKckIsaUJBdUZTO0lBSFc7S0FBaEJzQixPQUFnQixxQ0FKbkJEO0tBS0dFLGNBQWM7SUFDbEIsY0FBQUM7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtJQUFvQjtJQUFzQztLQUFBLE9BQUEsd0JBRnRERjtLQUU4QixPQUFBLHdCQUQ5QkM7O2E7OzthQU5tQkg7R0FRWjtZQUVYSyxnQkFBaUJMO0lBQ25CLGNBR1NNO0tBSXNCO01BQXJCQztRQUFxQjs7WUFKdEJEO3FCQUltQ0Y7YUFBc0I7YUFBQSxPQUFBLGtDQUF0QkEsa0JBQUFBO1lBQTJCO0tBQ2pFO01BQVk7T0FBQSxPQUFBLDJCQURSRztPQUNBLE9BQUE7TUFBQTs7aUJBQTRDO0lBQU87a0JBTnhESDtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQWtDO0lBQUM7S0FBQTtLQUFBO0tBQXBDOytCOztLQUZBSSxRQUNGO0lBU08sbUNBVkxBO0lBVzZCO0tBQTdCYixRQUE2QjtLQUM3QmMsb0JBQ0YseUNBRkVkO0lBSUosS0FISWMsbUJBSU07UUFDSDNCLFFBTEgyQjtJQU1GLHFCQUE2QyxTQUFDO0lBQTVCLElBQWRDLFVBQWMsaUNBbEJoQkY7SUFtQkM7bUJBM0dIM0IsbUJBeUdLQzs7OztpQkFJb0Q2Qjt1QkFFVEM7VUFDaEM7V0FDNkI7WUFBdkJDLGNBQXVCLDJCQUZHRCxjQUw1Q0Y7O3VCQVU4QlQ7ZUFFTjtpQkFsSVZ6QixpQ0E2SElxQyxhQUdZWjtlQXZDbENGLHNCQVVpQkMsYUE2QmlCQztlQVFHO3VCQUFBO2VBQUEsT0FBQTtjQUFtQjs7V0FUbEM7WUFBQSxPQUFBO1lBREo7Y0FBQTt1Q0FMdUNVO2dCQUFBQTtnQkFJbkNFO1lBQ0osT0FBQTtXQUFBOzs7OztZQVl3QjthQUFoQkM7YUFBZ0IsT0FBQSxrREFBaEJBO1lBQWdCLE9BQUE7OztXQUViO1lBRE1DO1lBQ04sT0FBQSxrREFETUE7V0FDTixPQUFBOztTQUErQjs7U0FqQmhEO1VBQUEsT0FBQTtVQURKO1lBQUE7cUNBRGlESix5QkFBQUE7U0FFN0MsT0FBQTtRQWlCaUQ7S0FuQnpEOzs7Ozs7SUFBQTtHQXNCSDtZQUVESyxPQUFRQztrQkFHSEMsR0FBRUw7S0FDTDtNQVlFLE9BQUEsK0NBYkdBO01BTU8sUUFBQSx3QkExSmRwQzs7O09BNEpnQmM7Y0FBZ0IsMEJBQWhCQSxVQVJUc0I7OztLQUdlOzttQkFPWjtNQVBZLE9BQUEsdUJBSGpCSztNQUdFLFdBQUU7TUFBSCxXQUFBO0tBVUYsT0FBQTtJQUFzQjtJQWQ1QixPQUFBLGtDQUZVRDtHQWlCQztZQUVURSxlQUtFQyxPQUFPQyxRQUFRQztJQVFqQjs7T0FBQTs7O1NBbkxBL0M7OztrQkE2S0tvQjtLQUNIO01BQUlDLGtCQUFrQix5Q0FEbkJEO01BRUcsUUFqS1JkLGVBZ0tNZTs7ZUFFRyxXQUxQd0I7NkJBTU8sV0FOQUMsYUFPQSxXQVBRQztJQU9HO0lBQ3BCLE9BQUE7R0FDMEI7R0FHNUI7SUFERXRCO01BQ0Y7aUNBaEtFNUI7WUFrS0FtRDtJQUNGO0tBaUJVO09BQUE7OztTQTNNUmhEOzs7S0EwTUssTUFBQTs7S0FyR0w4QixnQkFpRkFMO0tBU08scUJBVXVCLFdBQXlCO21CQURqQ0ksR0FBSyxXQUFMQSxHQUE2QjtLQUR4QztNQUFBLE9BQUE7O01BTEs7O2tCQUFLTzt3QkFFOEJDO1dBQ2hDO1lBQTJCLE9BbEQ5Q0ksT0FpRG1ESjtZQUNyQixPQUFBO1dBQUEsT0FBQTtVQUFzQzs7VUFEckQ7V0FBQSxPQUFBO1dBREo7YUFBQTtzQ0FEVUQseUJBQUFBO1VBRU4sT0FBQTtTQUNzRDtNQUo5Qzs7O1VBQXFCLFdBQUE7VUFBQSxPQUFBO1NBQW1CO01BRDdDOzs7VUFBcUIsV0FBQTtVQUFBLE9BQUE7U0FBbUI7TUFEbkQ7UUFBQTs7Ozs7OztLQVFJLE9BQUE7SUFFNkM7SUFidEQ7S0FBQSxNQUFBO0tBRkFhLE9BQ0Y7S0FBQTtpQkFnQ2N2QjtLQUNILEtBREdBLFVBRU87U0FDRndCLGdCQUhMeEI7S0FHMEIsT0FBckJ3QjtJQUFrQztJQUovQztLQUFBLE1BQUEsaUNBeE5OaEQ7S0FzTkUsVUFDRTtLQURGO0tBTE07T0E3Q1IwQzt5QkE4QzZCLFdBQVk7eUJBQ1osV0FBeUI7eUJBQ3ZCLFdBQVk7S0FMdkMsY0FDRTtLQUpKTyxpQkFDRjtlQTRCTSw2Q0FyTk52RDtLQWlOUTtPQWpFUmdEO3lCQWtFNkIsV0FBWTt5QkFDWixXQUFZO3lCQUNWLFdBQTZCO0tBTHhEO2VBQ0U7S0FKSlE7T0FDRix3REF6Q0VIO0tBcURBSTtPQUFtQjs7O2FBakNuQkYsb0JBb0JBQztJQWNKLFNBQUlFLGdCQUFpQkMsT0FBT0M7MEJBR3JCLGVBSHFCQSxRQUFQRCxNQUtLO0tBSHRCLFdBQUEsa0NBdE9GbEQ7S0FzT0UsT0FBQTtJQUlrQjtJQVNRO0tBQUEsT0E3SzVCa0I7S0E2S0ksV0FBRTtLQURDLGVBZEwrQjtnQkFhQTtLQUQwQixPQS9LNUJoQztLQStLSSxXQUFFO0tBREMsZUFYTGdDO0tBUUFHO1dBRUE7S0FERjtrQkEwQmMvQjtLQUNILEtBREdBLFVBRU87U0FDQ2dDLGFBSFJoQztLQUdxQixPQUFBLHVDQUFiZ0M7SUFBaUQ7SUFKakU7S0FBQSxPQUFBLGtDQWhSTnhEO0tBOFFFLFdBQ0U7S0FERjtrQkFSY0c7S0FDSCxXQURHQTtLQUNIOzs7SUFJd0I7SUFON0I7S0FBQSxPQUFBLGtDQTNQUkE7S0F5UEk7ZUFDRTtLQUpKc0Q7T0FDRjtLQXNDSSxPQUFBO0tBUUEsT0FBQTtLQUFBLFdBQUEsNkNBMVJKOUQ7S0EwUkksT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBUkEsT0FBQTtLQUFBLE9BQUE7S0FPTyxPQUFBO0tBQUEsT0FBQTtLQVBQLE9BQUE7S0FBQSxPQUFBO0tBQ0EsT0FBQTtLQUsrRSxPQUFBO0tBQUEsT0FBQTtLQUwvRSxPQUFBO0tBQUEsT0FBQTtLQUtBLE9BQUE7S0FBMEQ7T0FBQTtLQUFBLE9BQUE7S0FBMUQsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQSxXQUFBO0tBQUEsT0FBQTtLQUFBLGVBQUE7S0FBQSxPQUFBO0tBTEEsT0FBQTtLQUFBLE9BQUE7S0FJcUYsT0FBQTtLQUFBLE9BQUE7S0FKckYsT0FBQTtLQUFBLE9BQUE7S0FJQSxPQUFBO0tBQWtFLE9BQUE7S0FBQSxPQUFBO0tBQWxFLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLFdBQUE7S0FBQSxPQUFBO0tBQUEsV0FBQTtLQUFBO09BQUE7O0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FKQSxPQUFBO0tBQUEsT0FBQTtLQUd1RSxPQUFBO0tBQUEsT0FBQTtLQUh2RSxPQUFBO0tBQUEsT0FBQTtLQUdBLE9BQUE7S0FBMEQsT0FBQTtLQUFBLE9BQUE7S0FBMUQsT0FBQTtLQUFBLE9BQUE7S0FBTyxPQUFBO0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQSxXQUFBO0tBQUEsT0FBQTtLQUFBO2VBQUE7S0FBQSxPQUFBO0tBQVAsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBSEEsT0FBQTtLQUFBLE9BQUE7S0FFeUUsT0FBQTtLQUFBLE9BQUE7S0FGekUsT0FBQTtLQUFBLE9BQUE7S0FFQSxPQUFBO0tBQTJELE9BQUE7S0FBQSxPQUFBO0tBQTNELE9BQUE7S0FBQSxPQUFBO0tBQU8sT0FBQTtLQUFBLFdBQUE7S0FBQSxPQUFBO0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQTtlQUFBO0tBQUEsT0FBQTtLQUFQLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUZBLE9BQUE7S0FBQSxPQUFBO0tBQzhFLE9BQUE7S0FBQSxPQUFBO0tBRDlFLE9BQUE7S0FBQSxPQUFBO0tBQ0EsT0FBQTtLQUFpRSxPQUFBO0tBQUEsT0FBQTtLQUFqRSxPQUFBO0tBQUEsT0FBQTtLQUFPLFdBQUE7S0FBQSxPQUFBO0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQSxXQUFBO0tBQUEsT0FBQTtLQUFBO2VBQUE7S0FBQSxPQUFBO0tBQVAsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBREEsT0FBQTtLQUFBLE9BQUE7S0FBMEMsT0FBQTtLQUFBLE9BQUE7S0FBMUMsT0FBQTtLQUFBLE9BQUE7S0FBQSxPQUFBO0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURBLE9BQUE7S0FBQSxPQUFBO0tBQUE7a0JBVFlRO0tBQ0gsV0FER0E7S0FDSDtJQUl3QjtJQU43QjtLQUFBLE9BQUEsa0NBblJSQTtLQWlSSTtlQUNFO0tBSkp1RDtPQUNGO0tBMkJLLE9BQUE7S0FDc0UsT0FBQTtLQUFBLE9BQUE7S0FBdEIsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURoRCxPQUFBO0tBQUEsT0FBQTtLQUNrQyxPQUFBO0tBQUEsT0FBQTtLQUEvQixPQUFBO0tBQUEsV0FBQTtLQUFBLE9BQUE7S0FBQTtlQUFBO0tBQUEsT0FBQTtLQURILE9BQUE7S0FBQSxPQUFBO0tBQUE7V0FBQSw2Q0E3Tkw5RDtLQTZOSyxPQUFBO0tBQUEsZUFBQTtLQUZIK0Q7T0FFRztLQUlMLE9BQUE7S0FlTSxPQUFBO0tBQWlDLE9BQUE7S0FBQSxPQUFBO0tBQWpDLE9BQUE7S0FBQSxPQUFBO0tBQUE7T0FBQTtpREFqRkpKO0tBaUZxQyxPQUFBO0tBQUEsT0FBQTtLQUFqQyxPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQWZOLE9BQUE7S0FBQSxPQUFBO0tBY1ksT0FBQTtLQUFBLE9BQUE7S0FkWixPQUFBO0tBQUEsT0FBQTtLQUFFLE9BQUE7S0FVYSxPQUFBO0tBQUEsT0FBQTtLQVZiLE9BQUE7S0FBQSxPQUFBO0tBQUE7T0FBQTs7YUF4REFFLDRCQXdCQUM7O0tBMENhLE9BQUE7S0FBQSxPQUFBO0tBVmIsT0FBQTtLQUFBLE9BQUE7S0FDTyxPQUFBO0tBUUUsT0FBQTtLQUFBLE9BQUE7S0FSRixPQUFBO0tBQUEsT0FBQTtLQU1FLE9BQUE7S0FBZ0MsT0FBQTtLQUFBLE9BQUE7S0FBaEMsT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBOzthQWxGVFA7O0tBa0Z5QyxPQUFBO0tBQUEsT0FBQTtLQUFoQyxPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQU5GLE9BQUE7S0FBQSxPQUFBO0tBS1EsT0FBQTtLQUFBLE9BQUE7S0FMUixPQUFBO0tBQUEsT0FBQTtLQUNHLE9BQUE7S0FBK0IsT0FBQTtLQUFBLE9BQUE7S0FBL0IsT0FBQTtLQUFBLE9BQUE7S0FBQTtPQUFBO3FEQVJWUTtLQVF5QyxPQUFBO0tBQUEsT0FBQTtLQUEvQixPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQURILE9BQUE7S0FBQSxPQUFBO0tBQXVDLE9BQUE7S0FBQSxPQUFBO0tBQXZDLE9BQUE7S0FBQSxPQUFBO0tBQUEsT0FBQTtLQUFBLFdBQUE7S0FBQSxPQUFBO0tBQUEsZUFBQTtLQUFBLE9BQUE7S0FEUCxPQUFBO0tBQUEsT0FBQTtLQUEwQyxPQUFBO0tBQUEsT0FBQTtLQUExQyxPQUFBO0tBQUEsT0FBQTtLQUFBLE9BQUE7S0FBQSxlQUFBO0tBQUEsT0FBQTtLQUFGLE9BQUE7SUFBQSxPQUFBO0dBb0JDO1lBRURDO0lBQ0YsSUFBQSxTQUFtRSxNQXhKakVkO2lCQXdKOEJ6QyxPQUFTLGNBblV2Q0QsZUFtVThCQyxlQUFpQztJQUFqRSxXQUFFO0dBQTJFO1lBRTNFd0Q7SUFDRjtLQUFJQyxzQkFDRixrQ0EvVEFwRTtLQWlVRXFFLG9CQUNGLGtDQS9QQW5FO0lBaVFGLGFBQ0UrQjtLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQThCOztLQUVkO0tBeFBoQkMsZ0JBaUZBTDtLQXlLTztJQUFRO0lBSFosVUFBQTtJQURIO09BUEV1QzthQWFBRTtLQUNGO01BQUlDO1FBQXVCOztZQVh6QkY7cUJBV3NDcEM7YUFBb0I7YUFBQSxPQUFBLGtDQUFwQkEsa0JBQUFBO1lBQXlCO01BQzNELFFBNVZOMUIseUJBMlZJZ0U7O01BVU0sTUFBQTtTQVJIQztLQUNJLFdBelZLaEUsdUJBd1ZUZ0U7S0FFRSxjQUFBLHdCQXBXVGxFO21CQXFXWTtTQUNDd0I7S0FDVCxPQTlRSkYsc0JBMkZBQyxhQWtMYUM7SUFJUztJQVhwQndDO0lBZ0JKLGFBQ0VyQztLQUFBO0tBQUEsT0FBQSxrQ0FBQUEsbUJBQUFBO0lBQTRCO3dCQWpCMUJxQyxrQkFvQksseUJBQVE7SUFGWixVQUFBO0lBREg7T0EzQkVEO0lBZ0NKLG9CQUVNLE9BQUEsV0F6WFdsRSx5QkF5WFk7SUFEM0I7SUFHRixvQkFFZSxXQTdYRUEsMEJBOFhYLFNBQUU7SUFGTjs7SUFJNEIsVUFuVDVCdUI7SUFtVE87SUFDcUIsVUEvUzVCQztJQStTTztJQUNUO0dBQUU7WUFFQThDO0lBQXdCLFVBQUEsd0JBcFl4QnJFO0lBb1l3Qjs7O2U7OztlQTlNeEJ5Qjt3QkE4TXlESTtnQkFBQTtnQkFBQSxPQUFBLGtDQUFBQSxtQkFBQUE7ZUFBbUI7O0dBQUE7bUNBL1c1RXBCLE9BMlRBcUQsU0FHQUMsUUFpREFNOzs7OztFOzs7Ozs7Ozs7Ozs7Ozs7WUNqWUFDLHVCQUF3QkM7SUFHSixVQUFBLGdDQUhJQTtJQUdKO0lBRnRCO0dBRXVDOytCQUhyQ0Q7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7OztHQ0htQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWtGbkNFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQWxGbUMsUUFBQTtJQUFwQkM7SUFBZkM7SUFDQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUFDQUMsYUFBVywwQkFBd0I7R0FDTDtJQUFBO2NBQUU7SUFBaENDLGdCQUFnQjtjQUcyQjtJQUEvQjtjQUFFO0lBRGRDLGdCQUNGO0lBRWtDO2NBQUU7SUFBbENDLGtCQUFrQjtJQUNsQkMsV0FBVyw4Q0FOWEg7SUFPQUksV0FBVyw4Q0FMWEg7SUFNQUk7TUFBYSw4Q0FIYkg7SUFRQSxVQUFFO2NBRDBDO0lBQXpDLGNBQUU7SUFGTEksZ0JBQ0Y7SUFJNkIsVUFBQTtJQUFmQztJQUFaQztJQVVBLE1BQUEsa0NBVkFBOztJQUlBO0tBQVVDO0tBQUpDO0tBSUM7T0FBQTtrQ0FKREEscUNBQUlEO0tBR04sT0FBQTtLQURrQixPQUFBLHVCQUZoQkM7S0FFQyxlQUFFO0lBQ0wsT0FBQTtHQUVpRDtHQU52RDtJQURFQyxrQkFDRjtJQVNFQztNQUFpQixxREFWakJEO0lBV0FFO01BQXFCLDhDQURyQkQ7SUFJQSxNQUFBO0lBb0JNLE1BQUE7SUFBQSxNQUFBO0lBcEJOLE1BQUE7SUFBQSxNQUFBO0lBZ0JBLE1BQUE7SUFFQSxNQUFBO0lBQUEsTUFBQTtJQUZBLE1BQUE7SUFBQSxNQUFBO0lBQUE7TUFBQTtvREFwQkFBO0lBcUJBLE1BQUE7SUFBTztNQUFBO0lBQUEsTUFBQTtJQUFQLE1BQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQURBLE1BQUE7SUFBQSxNQUFBO0lBQXdCLE1BQUE7SUFBQSxNQUFBO0lBQXhCLE1BQUE7SUFBQSxNQUFBO0lBQUEsTUFBQTtJQUFBLGNBQUE7SUFBQSxNQUFBO0lBaEJBLE1BQUE7SUFBQSxNQUFBO0lBZVEsTUFBQTtJQUFBLE1BQUE7SUFmUixNQUFBO0lBQUEsTUFBQTtJQWFBLE1BQUE7SUFBQTtNQUFBO29EQWxDQU47SUFrQ0EsTUFBQTtJQUFBLGNBQUE7SUFBQSxNQUFBO0lBYkEsTUFBQTtJQUFBLE1BQUE7SUFZTSxNQUFBO0lBQUEsTUFBQTtJQVpOLE9BQUE7SUFBQSxPQUFBO0lBQ0EsT0FBQTtJQVV5QixPQUFBO0lBQUEsT0FBQTtJQVZ6QixPQUFBO0lBQUEsT0FBQTtJQVFBLE9BQUE7SUFBc0IsT0FBQTtJQUN0QixPQUFBO0lBQUEsT0FBQTtJQURzQixPQUFBO0lBQUEsT0FBQTtJQUFBO01BQUE7b0RBbkN0Qko7SUFtQ3NCLE9BQUE7SUFBdEIsT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUFSQSxPQUFBO0lBQUEsT0FBQTtJQU91QixPQUFBO0lBQUEsT0FBQTtJQVB2QixPQUFBO0lBQUEsT0FBQTtJQUtBLE9BQUE7SUFBc0IsT0FBQTtJQUN0QixPQUFBO0lBQUEsT0FBQTtJQURzQixPQUFBO0lBQUEsT0FBQTtJQUFBO01BQUE7b0RBbkN0QkQ7SUFtQ3NCLE9BQUE7SUFBdEIsT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUFMQSxPQUFBO0lBQUEsT0FBQTtJQUl1QixPQUFBO0lBQUEsT0FBQTtJQUp2QixPQUFBO0lBQUEsT0FBQTtJQUVBLE9BQUE7SUFBc0IsT0FBQTtJQUN0QixPQUFBO0lBQUEsT0FBQTtJQURzQixPQUFBO0lBQUEsT0FBQTtJQUFBO01BQUE7b0RBbEN0QkQ7SUFrQ3NCLE9BQUE7SUFBdEIsT0FBQTtJQUFBLE9BQUE7SUFBQSxPQUFBO0lBQUEsZUFBQTtJQUFBLE9BQUE7SUFGQSxPQUFBO0lBQUEsT0FBQTtJQUNnQyxPQUFBO0lBQUEsT0FBQTtJQURoQyxPQUFBO0lBQUEsT0FBQTtJQUNBLE9BQUE7SUFBTztNQUFBOztJQUFBLE9BQUE7SUFBUCxPQUFBO0lBQUEsT0FBQTtJQUFBLE9BQUE7SUFEQSxPQUFBO0lBQUEsT0FBQTtJQUF3QixPQUFBO0lBQUEsT0FBQTtJQUF4QixPQUFBO0lBQUEsT0FBQTtJQUFBLE9BQUE7SUFBQSxlQUFBO0lBQUEsT0FBQTtJQURBLE9BQUE7SUFBQSxPQUFBO0lBQTBCLE9BQUE7SUFBQSxPQUFBO0lBQTFCLE9BQUE7SUFBQSxPQUFBO0lBQUEsT0FBQTtJQUFBLGVBQUE7SUFES2MsYUFDTDtJQXVCeUIsVUFBQTtJQUFkQztJQUFYQztJQUN5QixVQUFBO0lBQVhDO0lBQWRDO0lBS3dCLE9BQUEsa0NBTnhCRjtJQU1BLE9BQUE7aUJBREtHO0lBQWlCLFdBQUEsdUJBQWpCQTtJQUFpQixPQUFBO0dBQWE7R0FEckM7SUFERUMsaUJBQ0Y7SUFLd0IsZUFBRTtJQUR4QkM7TUFDRix3REFORUQ7SUFnQkU7OzZDQVhGQzs7Ozs7O1VBYXlDLGtEQXBCekNIOzs7ZUFpQkE7SUFQQUk7O09BRUE7Ozs7Ozs7SUFhQUMsY0FBYyxpQ0FEZDVCO1lBR0E2QjtJQUNGO2dCQVFRO0tBRkY7OztTQUNFLDZDQVhON0I7O2dCQVFBO0tBRkssZUFBRTtJQUZUO1lBQ0U7OztrQkF0REttQixZQW1DTFE7O0dBNkJEO1lBRUNHO0lBQWM7U0FDSkM7S0FBSyxPQUFBLGtEQUFMQTs7UUFDR0M7SUFBSyxPQUFBLGtEQUFMQTtHQUFrQztZQUUvQ0M7a0JBQytEQztLQUM3RDtNQUFJQzs7VUFoR04zQjttQkFnRzBCdUI7V0FBVztXQUFBLE9BQUEsa0NBQVhBLGtCQUFBQTtVQUFrQjs7TUFDdENLOztVQWhHTjNCO21CQWdHd0JzQjtXQUFXO1dBQUEsT0FBQSxrQ0FBWEEsa0JBQUFBO1VBQWtCOztNQUNwQ007O1VBaEdOM0I7bUJBZ0cwQnFCO1dBQWE7V0FBQSxPQUFBLGtDQUFiQSxrQkFBQUE7VUFBb0I7OztLQUM1Qzs7UUFBQTtpQ0FKNkRHO1VBQUFBO2NBQ3pEQyxRQUNBQyxNQUNBQztLQUNKLE9BQUEsNkJBVEZQO0lBVWlCO0lBTHlDLE9BQUE7O0dBS3hDOztJQU5sQkc7SUFVVTtHQUNDO0dBRmI7SUFERUssMkJBQ0Y7SUFLSUM7WUFERkM7SUFHUztLQUFMQztPQUFLOztXQXhGVHZCO29CQXdGc0JhO1lBQXFCO1lBQUEsT0FBQSxrQ0FBckJBLGtCQUFBQTtXQUEwQjtJQUM3QyxHQUFBLDBCQURDVTtLQUZGRjs7S0FLVyxXQUFBO0tBQUEsT0FBQTs7SUFFRixJQUFMeEIsS0FBSywyQkFMUDBCO09BRkZGLGVBT0l4QjtLQVBKd0IsYUFPSXhCOzs7O2lCQUcyRG1CO1NBQ3pEO1NBQWlDO1VBQUE7WUFBQSxrQ0FEd0JBLHdCQUFBQTtVQUNuRCxRQUFBLGlEQUpSbkI7O1VBcUJjOztXQWZJMkI7V0FBSEM7O3NCQWVzQkMsR0FBRUQsR0FDcEIscUNBRGtCQyxHQUFFRCxNQUVpQjtXQUYxQzthQUFBOzs7OztXQURIO2FBQUE7Ozs7OztzQkFKMEJDLEdBQUVELEdBQ3BCLHFDQURrQkMsR0FBRUQsTUFFZ0I7V0FGekM7YUFBQTs7Ozs7V0FESDthQUFBOzs7Ozs7c0JBSjBCQyxHQUFFRCxHQUNwQixxQ0FEa0JDLEdBQUVELE1BRWM7V0FGdkM7YUFBQTs7Ozs7V0FESDthQUFBOzs7OztVQUZMO1lBMUVFckI7O1lBMkVBLDJDQUhPcUIsU0FBQUEsU0FBQUE7VUFvQlg7V0FBQTtzQkFDRVo7Y0FBQTtjQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTthQUFvQjtXQUNpQixPQUFBLDhDQXRCekJXO1dBc0JWO2FBQUE7ZUFBVztVQURiLHlCO2FBcEVaZDtVQXVFcUIsV0FBQTtVQUFBLE9BQUE7O1NBekJRLFdBQUE7U0FBQSxPQUFBO1FBeUJXO0tBM0JvQixPQUFBOztJQTZCN0MsV0FBQTtJQUFBLE9BQUE7R0FDZDtZQUVHaUI7O0tBV04scUJBUXVCLGVBQWU7bUJBTHZCQztNQUNQLEdBRE9BLEtBQ0Msd0JBOUtkNUM7T0ErS1EsV0FBQTtPQUFBLE9BQUEsNkJBaEJKMkM7O01Ba0JJO0tBQWU7S0FMckIsV0FBQTttQkFGNERYO01BQzVEO01BQTJCO09BQUE7U0FBQSxrQ0FEaUNBLHlCQUFBQTtPQUNqRCxPQUFBO01BQUEsT0FBQTtLQUFxQztLQURwRDs7UUFBQTtLQUVJLE9BQUE7SUFNbUM7a0JBbEJvQkE7S0FDdkQ7S0FBQTtNQUFBO01BSU87UUFBQSxrQ0FMZ0RBLHdCQUFBQTttQkFJM0NuQixXQUFjZ0M7TUFBbkIsSUFBU2pDO01BQWlCLGVBQXJCQyxJQUFJRCxLQUFVaUM7S0FBdUI7S0FGL0M7T0FoSlFuQzs7T0FpSk47S0FJSjtLQUFTO09BOUdBUTs7T0E4R1ksV0FBckIsdUJBUHVEYyx5QkFBQUE7S0FRdkQsT0FwREZNO0lBb0RnQjtJQVJsQixXQUFBO0lBU0ksT0FBQTtHQVNtQztZQUVyQ1EsbUJBQWlCLE9BQUEsV0FwTEYvQyx5QkFvTHlCO1lBQ3hDZ0Q7SUFBa0Isa0JBckxIaEQsc0JBQ2ZFO0dBb0xtRDtZQUVuRCtDOztLQXRMQS9DOztLQTBMSSxPQUFBLFdBM0xXRjtJQTJMWTtJQUYzQjs7S0F4TEFFOztLQStMYSxXQWhNRUY7S0F1R2ZnQztLQXNGRixPQUFBLG9CQTlCTVk7SUFtQ3lCO0lBSjdCOztJQU1PO09BM0xQckM7T0FzR0E4QjtnQkFxRk9QO1FBQUE7UUFBQSxPQUFBLGtDQUFBQSxvQkFBQUE7T0FBbUI7SUFDbkI7T0EzTFB0QjtPQXFHQTZCO2dCQXNGT1A7UUFBQTtRQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtPQUFtQjtJQUNuQjtPQTNMUHJCO09Bb0dBNEI7Z0JBdUZPUDtRQUFBO1FBQUEsT0FBQSxrQ0FBQUEsb0JBQUFBO09BQXFCO0lBQzlCLGNBQ0VBO0tBQUE7S0FBQSxPQUFBLGtDQUFBQSxvQkFBQUE7SUFBNkI7eUJBcEY3QlMsZ0JBc0ZlLHlCQUNDO0lBRmIsV0FBQTtJQURIO09BektBdEI7SUE4S0YsY0FDRWE7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLG9CQUFBQTtJQUFtRDs7bUJBSW5DRztNQUNIO01BQUcsR0FBQSxrQ0FEQUEsMEJBQUFBO09BRVUsV0FBQTtPQUFBLE9BQUE7O29CQUc2QmlCO09BQ2hDO09BQUE7O1VBQUE7bUNBTlBqQiwwQkFBQUEsU0FLdUNpQjtPQXBIekMsT0FBQSw2QkFBZHJCO01Bc0hzQzs7TUFGbkI7T0FBQSxPQUFBO09BREo7U0FBQSxrQ0FKQ0ksMEJBQUFBO01BS0csT0FBQTtLQUVvQjtLQVI5QjtLQVVPLG9CQTVEWlc7S0E2REc7SUFBUztJQWJiO0tBQUEsT0FBQTtLQURILE9BQUEsOENBak1BbEM7SUFpTUE7SUFnQkY7R0FBRTtZQUVBeUMsZ0JBQXFCLFNBQUU7OztVQTlOdkJoRCxPQW1GQXlCLFNBa0dBcUIsUUF5Q0FFLFVBNUNBSixhQUNBQzs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7OztJQ3hMQUk7SUEwQkFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7WUF4QkFDO0lBQ0Y7aUJBR1lDLEdBQ0gsT0FER0Esa0JBSWE7SUFOdkI7S0FERUMsa0JBRUE7aUNBa0JrQjs7O3lCQXBCbEJBLGFBbUIyQjs7OytCQURQOztnQ0FEQzsrQkFETDtnQ0FEQzsrQkFERDtLQUZmLDZCQUNrQjtLQUZwQixNQUFBLGtDQWRESjtJQWNDLE9BQUE7R0FVRztZQUlKSztJQUNGO3FDQVVvQzs7O2dDQURQOzs7aUNBRFA7OzsrQkFEQzs7aUNBREw7a0NBREM7aUNBREQ7S0FGYjtrQ0FDdUI7S0FGekIsTUFBQSx1Q0FKREo7SUFJQyxPQUFBO0dBVUc7WUFFSks7SUFDTztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ1Q7R0FBRTtZQUVBQztJQUNPO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDVDtHQUFFO2dDQTVEQUwsU0EwQkFHLGFBeUJBRSxVQVhBRDs7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7WUN4Q0FFO0lBQ0Y7S0FFQSxvQkFBZ0MsZUFBZTtLQUEvQyxVQUFBO0tBQXVCLE9BQUE7SUFBd0I7SUFEM0M7S0FBQTs7S0FESixNQUFBO0tBQUEsTUFBQTtLQUFBLE1BQUE7SUFDSSxPQUFBO0dBQzJDO1lBRTdDQztJQUNGOzs7OztLQUFBLE1BQUE7S0FBQSxNQUFBO0tBQUEsTUFBQTtLQUFBLE1BQUE7S0FBQSxNQUFBO3VDQU5FRDtHQU8yRTtZQUV2RUUsS0FBTUMsR0FBeUJDO0lBQ2tCLGtCLE9BRGpERixLQUFNQyxHQUF5QkM7d0JBQ2xCLE9BQW9DLHNDQURsQkEsR0FDWTtJQUFqRCxJQUFBLE1BQUEsV0FEWUQsT0FDWixNQUFBO0lBQXVELE9BQUE7R0FBUTtZQUU3REU7SUFDRixPQUFHO2VBQ1EsbURBZFRMOztHQWlCZTtZQUVmTTs7S0FFRTtLQUE2QixrQixPQVozQkosS0FHSkc7S0FTRSxVQUFBLGdDQWhCRko7S0FnQitCLE9BQUE7SUFBbUI7SUFEL0IsT0FBQTs7R0FDZ0M7K0JBckJuREQsTUFLQUMsTUFjQUs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7WUNyQkFDO0lBQ087SUFDRTtLQUFQQyxPQUFPO0tBRW9DLE1BQUE7S0FBeEIsTUFBQTtJQUFyQiwrQkFGRUE7SUFJMEIsVUFBQTtJQUFyQiwrQkFKTEE7SUFLMEIsVUFBQTtJQUFyQiwrQkFMTEE7SUFPMkM7S0FBQSxNQUFBO0tBQXhCLE1BQUE7SUFBckIsK0JBUEVBO0lBVUs7SUFDQTtJQUNBO0lBRVQsYUFDRUM7S0FBQTtLQUFBLE9BQUEsa0NBQUFBLGtCQUFBQTtJQUEwQjs7S0FFWDtLQUNBO0tBQ0E7S0FDVDtJQUFRO0lBSlo7S0FBQSxNQUFBO0tBQUE7SUFERjtJQUFBO0dBT007Z0JBRUZBO0lBQUE7SUFBQSxPQUFBLGtDQUFBQSxpQkFBQUE7R0FBd0I7R0FBSTtJQUFBLE1BQUEscUNBMUJoQ0Y7SUEwQmdDO0dBQTVCO0dBQUE7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7Ozs7OztHQ2pCQTtHQUFBOzs7RSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+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/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICBpZighIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBhID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxlbikge1xuICBpZiAobGVuID09IDApIHJldHVybiAwO1xuICBpZiAoKGkyID09IDApICYmXG4gICAgICAobGVuID49IHMyLmwgfHwgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpKSB7XG4gICAgczIuYyA9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2UgaWYgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09IHMyLmMubGVuZ3RoKSB7XG4gICAgczIuYyArPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIHtcbiAgICBpZiAoczIudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsIGMyID0gczIuYztcbiAgICBpZiAoczEudCA9PSA0IC8qIEFSUkFZICovKSB7XG4gICAgICBpZiAoaTIgPD0gaTEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGwgPSBNYXRoLm1pbiAobGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzIgW2kyICsgaV0gPSBjMS5jaGFyQ29kZUF0KGkxICsgaSk7XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2JsaXRfc3RyaW5nKGEsYixjLGQsZSkge1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcoYSksYixjLGQsZSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKSB7IHJldHVybiBzLmwgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ191bnNhZmVfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIHMubGVuZ3RoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmUgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8tMTooczEgPiBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPD0gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0Zjhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykge1xuICBpZihqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBzO1xuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocylcbiAgZWxzZSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3V0Zjhfb2ZfdXRmMTYocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7IHJldHVybiBuZXcgTWxCeXRlcygwLHMscy5sZW5ndGgpOyB9XG5cblxuLy8gVGhlIHNlY3Rpb24gYmVsb3cgc2hvdWxkIGJlIHVzZWQgd2hlbiB1c2UtanMtc3RyaW5nPWZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsaSxjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19lcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgeyByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIHMuYyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocyl7XG4gIHJldHVybiBzLnRvVXRmMTYoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfYnl0ZXMocykge1xuICByZXR1cm4gKHMgaW5zdGFuY2VvZiBNbEJ5dGVzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHMuY1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuICh0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiAmJiAhL1teXFx4MDAtXFx4ZmZdLy50ZXN0KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaXNfbWxfYnl0ZXMocyk7XG59XG5cbi8vIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGRlcHJlY2F0ZWRcblxuLy9Qcm92aWRlczogY2FtbF9qc190b19ieXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9qc190b19ieXRlX3N0cmluZyhzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX25ld19zdHJpbmcgKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF90b19qc19zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF90b19qc19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc190b19zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3RvX3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyh4KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyh4KSB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1JhaXNlIGV4Y2VwdGlvblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2NvbnN0YW50IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfY29uc3RhbnQgKHRhZykgeyB0aHJvdyB0YWc7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZyAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgYXJnKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnLCBhcmddKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncyAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmdzICh0YWcsIGFyZ3MpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWddLmNvbmNhdChhcmdzKSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZyAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX3N0cmluZyAodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG1zZykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhaWx3aXRoIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmFpbHdpdGggKG1zZykge1xuICBpZighY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlKVxuICAgIGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZT1bMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJGYWlsdXJlXCIpLC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfaW52YWxpZF9hcmd1bWVudCAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkVuZF9vZl9maWxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5EaXZpc2lvbl9ieV96ZXJvKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogIWVmZmVjdHNcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIHZhciBuID0gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbjtcbiAgaWYgKGQgPT0gMClcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgZyA9IGYuYXBwbHkobnVsbCxhcmdzLnNsaWNlKDAsbikpO1xuICAgIGlmKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBnO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsYXJncy5zbGljZShuKSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAxKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzLmxlbmd0aCtleHRyYV9hcmdzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSBuYXJnc1thcmdzLmxlbmd0aCtpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZDtcbiAgICByZXR1cm4gZztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6IGVmZmVjdHNcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIHZhciBuID0gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbjtcbiAgaWYgKGQgPT0gMCkge1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIHJlc3QgPSBhcmdzLnNsaWNlKG4gLSAxKTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW4gLSAxXTtcbiAgICBhcmdzID0gYXJncy5zbGljZSgwLCBuKTtcbiAgICBhcmdzW24gLSAxXSA9IGZ1bmN0aW9uIChnKSB7XG4gICAgICBpZiAodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGsoZyk7XG4gICAgICB2YXIgYXJncyA9IHJlc3Quc2xpY2UoKTtcbiAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGs7XG4gICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLCBhcmdzKTsgfTtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBhcmdzTGVuLS07XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuXTtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHksIHope1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDMpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAyXSA9IHo7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyBleHRyYV9hcmdzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApXG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbiArIGldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkICsgMTtcbiAgICByZXR1cm4gayhnKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlc1xudmFyIGNhbWxfbmFtZWRfdmFsdWVzID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUgKGNvbnN0LG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZShubSx2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbnZhciBjYW1sX2dsb2JhbF9kYXRhID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J1aWxkX3N5bWJvbHMoc3ltYikge1xuICB2YXIgciA9IHt9O1xuICBpZihzeW1iKSB7XG4gICAgZm9yKHZhciBpID0gMTsgaSA8IHN5bWIubGVuZ3RoOyBpKyspe1xuICAgICAgcltjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzeW1iW2ldWzFdKV0gPSBzeW1iW2ldWzJdXG4gICAgfVxuICB9XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9jYWxsYmFjaywgY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZihnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MpIHtcbiAgICAgIG4gPSBjYW1sX2NhbGxiYWNrKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYywgW25hbWVdKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzKSB7XG4gICAgICBpZighY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHgpIHtcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHggPSBjYW1sX2J1aWxkX3N5bWJvbHMoY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzKVxuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4W25hbWVdXG4gICAgICBpZihuaWQgPj0gMClcbiAgICAgICAgbiA9IG5pZFxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3JlZ2lzdGVyX2dsb2JhbDogY2Fubm90IGxvY2F0ZSBcIiArIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmKG5hbWVfb3B0KSBjYW1sX2dsb2JhbF9kYXRhW25hbWVfb3B0XSA9IHY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2dsb2JhbF9kYXRhIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZ2V0X2dsb2JhbF9kYXRhICgpIHsgcmV0dXJuIGNhbWxfZ2xvYmFsX2RhdGE7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykgeyByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9wcmludF9zdGF0c1xuZnVuY3Rpb24gY2FtbF9tYXliZV9wcmludF9zdGF0cyh1bml0KSB7IHJldHVybiAwIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyk7XG4gICAgICBpZihlcnIuanNfZXJyb3IpIHRocm93IGVyci5qc19lcnJvcjtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuZnVuY3Rpb24ganNvb19zeXNfZ2V0ZW52KG4pIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIC8vbm9kZWpzIGVudlxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuZW52XG4gICAgICYmIHByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbbl07XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xuICBpZihyID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5hcmd2XG4gICAgICYmIHByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCIpe1xuICAgIHZhciBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuICAgIGlmKGNoaWxkX3Byb2Nlc3MgJiYgY2hpbGRfcHJvY2Vzcy5leGVjU3luYylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgdmFyIGEgPSBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoNCkpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMpIHtcbiAgICAgICB2YXIgYSA9IG5ldyBJbnQzMkFycmF5KGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS5idWZmZXIpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5pc0ZpbGUocm9vdC5yZXN0KTtcbn1cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIGlmKHByb2Nlc3MgJiYgcHJvY2Vzcy5vbikge1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbnZhciBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IEZMQUcoXCJ3aXRoLWpzLWVycm9yXCIpO1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihcIk9DQU1MUlVOUEFSQU1cIilcbiAgaWYociAhPT0gdW5kZWZpbmVkKXtcbiAgICB2YXIgbCA9IHIuc3BsaXQoXCIsXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmKGxbaV0gPT0gXCJiXCIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSAxOyBicmVhayB9XG4gICAgICBlbHNlIGlmIChsW2ldLnN0YXJ0c1dpdGgoXCJiPVwiKSkge1xuICAgICAgICBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9ICsobFtpXS5zbGljZSgyKSl9XG4gICAgICBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1c1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoX3VuaXQpIHsgcmV0dXJuIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlIChiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gYjsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFswXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICAgIHJldHVybiAtLWNhbWxfc3RhY2tfZGVwdGggPiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiAhZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX2NhbGxfZ2VuXG52YXIgY2FtbF9jYWxsYmFjayA9IGNhbWxfY2FsbF9nZW47XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aCwgY2FtbF9jYWxsX2dlbiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfd3JhcF9leGNlcHRpb24sIGNhbWxfcmVzdW1lX3N0YWNrLCBjYW1sX2ZyZXNoX29vX2lkLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX2NhbGxiYWNrKGYsYXJncykge1xuICBmdW5jdGlvbiB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcihlZmYsayxtcykge1xuICAgIC8vIFJlc3VtZXMgdGhlIGNvbnRpbnVhdGlvbiBrIGJ5IHJhaXNpbmcgZXhjZXB0aW9uIFVuaGFuZGxlZC5cbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhrWzFdLG1zKTtcbiAgICB2YXIgZXhuID0gY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5VbmhhbmRsZWRcIik7XG4gICAgaWYoZXhuKSBjYW1sX3JhaXNlX3dpdGhfYXJnKGV4biwgZWZmKTtcbiAgICBlbHNlIHtcbiAgICAgIGV4biA9IFsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksIGNhbWxfZnJlc2hfb29faWQoMCldO1xuICAgICAgY2FtbF9yYWlzZV9jb25zdGFudChleG4pO1xuICAgIH1cbiAgfVxuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2s7XG4gIHZhciBzYXZlZF9maWJlcl9zdGFjayA9IGNhbWxfZmliZXJfc3RhY2s7XG4gIHRyeSB7XG4gICAgY2FtbF9leG5fc3RhY2sgPSAwO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6WzAsIDAsIDAsIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyXSwgcjp7azowLCB4OjAsIGU6MH19O1xuICAgIHZhciByZXMgPSB7am9vX3RyYW1wOiBmLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KXtyZXR1cm4geDt9KX07XG4gICAgZG8ge1xuICAgICAgY2FtbF9zdGFja19kZXB0aCA9IDQwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gY2FtbF9jYWxsX2dlbihyZXMuam9vX3RyYW1wLCByZXMuam9vX2FyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiBIYW5kbGUgZXhjZXB0aW9uIGNvbWluZyBmcm9tIEphdmFTY3JpcHQgb3IgZnJvbSB0aGUgcnVudGltZS4gKi9cbiAgICAgICAgaWYgKCFjYW1sX2V4bl9zdGFjaykgdGhyb3cgZTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgICAgICAgY2FtbF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFja1syXTtcbiAgICAgICAgcmVzID0ge2pvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV19O1xuICAgICAgfVxuICAgIH0gd2hpbGUocmVzICYmIHJlcy5qb29fYXJncylcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzYXZlZF9leG5fc3RhY2s7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9IHNhdmVkX2ZpYmVyX3N0YWNrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmcodW5pdCl7XG4gIHJldHVybiBGTEFHKFwidXNlLWpzLXN0cmluZ1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHModW5pdCl7XG4gIHJldHVybiBGTEFHKFwiZWZmZWN0c1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgICB2YXIgZXhuO1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gICAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gICAgZWxzZSBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgICBlbHNlIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gICAgZWxzZVxuICAgICAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gICAgICBleG4gPSBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlcnJvciBhdCBoYW5kLCBsZXQncyB1c2UgaXQuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKVxuICAgICAgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2VcbiAgICByZXR1cm4gZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIGlmKGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnKVxuICAgIHJldHVybiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKTtcbiAgZWxzZSByZXR1cm4gZXhuXG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2ludDMyIGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfdG9fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX3RvX2ludDMyKHgpIHsgcmV0dXJuIHh8MDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikgLSAxO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIHJldHVybiAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICAvLyBGdW5jdGlvbnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNvbnRpbnVhdGlvbiBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkXG4gIC8vIG5vdCBiZSB2aXNpYmxlIHdoZW4gY2FsbGluZyB0aGVtIGZyb20gSmF2YVNjcmlwdFxuICByZXR1cm4gKChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCkpIC0gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc3RyaWN0X2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19ldmFsX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19ldmFsX3N0cmluZyAocykge3JldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXhwciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIgKHMpe1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IGYudXBwZXJjYXNlP1wiMFhcIjpcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4gKHggLSB5ID49IDAuNSk/KHkgKyAxKTp5XG4gIH0gZWxzZSB7XG4gICAgdmFyIHkgPSBNYXRoLmNlaWwoeCk7XG4gICAgcmV0dXJuICh5IC0geCA+PSAwLjUpPyh5IC0gMSk6eVxuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvKlxuVG8gZGVhbCB3aXRoIGVmZmVjdHMsIHRoZSBleGVjdXRpb24gY29udGV4dCBpcyBpbnR1aXRpdmVseSBjb21wb3NlZCBvZlxuYSBzdGFjayBvZiBmaWJlcnMuIEVhY2ggZmliZXIgaGFzIGEgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4ob25lLWFyZ3VtZW50IEphdmFTY3JpcHQgZnVuY3Rpb24pLCBhIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmRcbmEgdHJpcGxlIG9mIGhhbmRsZXJzLCB3aGljaCBhcmUgaW52b2tlZCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzXG4oZWl0aGVyIHdpdGggYSB2YWx1ZSBvciBhbiBleGNlcHRpb24pIG9yIHdoZW4gYW4gZWZmZWN0IGlzIHBlcmZvcm1lZC5cblRoZSBsb3ctbGV2ZWwgY29udGludWF0aW9uIG9mIHRoZSB0b3Btb3N0IGZpYmVyICh3aGljaCBpcyBjdXJyZW50bHlcbmV4ZWN1dGluZykgaXMgcGFzc2VkIGZyb20gZnVuY3Rpb24gdG8gZnVuY3Rpb24gYXMgYW4gYWRkaXRpb25hbFxuYXJndW1lbnQuIEl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgaXMgc3RvcmVkIGluXG5bY2FtbF9leG5fc3RhY2tdLiBFeGNlcHRpb24gaGFuZGxlcnMgYXJlIHB1c2hlZCBpbnRvIHRoaXMgc3RhY2sgd2hlblxuZW50ZXJpbmcgYSBbdHJ5IC4uLiB3aXRoIC4uLl0gYW5kIHBvcHBlZCBvbiBleGl0LiBUaGVuLCBoYW5kbGVycyBhbmRcbnRoZSByZW1haW5pbmcgZmliZXJzIGFyZSBzdG9yZWQgaW4gW2NhbWxfZmliZXJfc3RhY2tdLiBUbyBpbnN0YWxsIGFuXG5lZmZlY3QgaGFuZGxlciwgd2UgcHVzaCBhIG5ldyBmaWJlciBpbnRvIHRoZSBleGVjdXRpb24gY29udGV4dC5cblxuV2UgaGF2ZSBiYXNpY2FsbHkgdGhlIGZvbGxvd2luZyB0eXBlIGZvciByZWlmaWVkIGNvbnRpbnVhdGlvbnMgKHR5cGVcbltjb250aW51YXRpb25dIGluIG1vZHVsZSBbRWZmZWN0XSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSk6XG5cbiAgdHlwZSAoJ2EsICdiKSBjb250aW51YXRpb24gPSAoJ2EsICdiKSBzdGFjayByZWZcblxuICBhbmQgKF8sIF8pIHN0YWNrID1cbiAgICAgIENvbnMgOiAoJ2IgLT4gdW5pdCkgKiAgICAgICAgICAgICAoKiBsb3ctbGV2ZWwgY29udGludWF0aW9uICopXG4gICAgICAgICAgICAgKGV4biAtPiB1bml0KSBsaXN0ICogICAgICAgKCogZXhjZXB0aW9uIGhhbmRsZXJzICopXG4gICAgICAgICAgICAgKCdiLCAnYykgaGFuZGxlciAqXG4gICAgICAgICAgICAgKCdhLCAnYikgc3RhY2tcbiAgICAgICAgICAgICAtPiAoJ2EsICdjKSBzdGFja1xuICAgIHwgRW1wdHkgOiAoJ2EsICdhKSBzdGFja1xuXG4gIGFuZCAoJ2EsJ2IpIGhhbmRsZXIgPSAgICgqIEFzIGluIG1vZHVsZSBFZmZlY3QgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyBFZmZlY3QudCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbkNvbnRpbnVhdGlvbnMgYXJlIG9uZS1zaG90LiBBIGNvbnRpbnVhdGlvbiBbcmVmIEVtcHR5XSBoYXMgYWxyZWFkeVxuYmVlbiByZXN1bWVkLlxuXG5BIGNvbnRpbnVhdGlvbiBpcyBiYXNpY2FsbHkgY29tcG9zZWQgb2YgYSBsaXN0IG9mIGZpYmVycywgd2hpY2ggZWFjaFxuaGFzIGl0cyBsb3ctbGV2ZWwgY29udGludWF0aW9uLCBpdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZCBhXG50cmlwbGUgb2YgaGFuZGxlcnMgdG8gZGVhbCB3aXRoIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXMgb3IgYW5cbmVmZmVjdCBpcyBwZXJmb3JtZWQuIFdoZW4gcmVzdW1pbmcgYSBjb250aW51YXRpb24sIHRoZSBpbm5lcm1vc3QgZmliZXJcbmlzIHJlc3VtZWQgZmlyc3QuXG5cblRoZSBoYW5kbGVycyBhcmUgQ1BTLXRyYW5zZm9ybWVkIGZ1bmN0aW9uczogdGhleSBhY3R1YWxseSB0YWtlIGFuXG5hZGRpdGlvbmFsIHBhcmFtZXRlciB3aGljaCBpcyB0aGUgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uLlxuKi9cblxuLy9Qcm92aWRlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaXMgYW4gT0NhbWwgbGlzdCBvZiBleGNlcHRpb24gaGFuZGxlcnNcbnZhciBjYW1sX2V4bl9zdGFjayA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVzaF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2V4bl9zdGFjaz1bMCxoYW5kbGVyLGNhbWxfZXhuX3N0YWNrXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX3RyYXAoKSB7XG4gIGlmICghY2FtbF9leG5fc3RhY2spIHJldHVybiBmdW5jdGlvbih4KXt0aHJvdyB4O31cbiAgdmFyIGggPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgY2FtbF9leG5fc3RhY2s9Y2FtbF9leG5fc3RhY2tbMl07XG4gIHJldHVybiBoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aCwgcjp7aywgeCwgZX19IHdoZXJlIGggaXMgYSB0cmlwbGUgb2YgaGFuZGxlcnNcbi8vIChzZWUgZWZmZWN0LmpzKSBhbmQgaywgeCBhbmQgZSBhcmUgdGhlIHNhdmVkIGNvbnRpbnVhdGlvbixcbi8vIGV4Y2VwdGlvbiBzdGFjayBhbmQgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2ZpYmVyX3N0YWNrO1xuXG4vL1Byb3ZpZGVzOmNhbWxfcmVzdW1lX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9yZXN1bWVfc3RhY2soc3RhY2ssIGspIHtcbiAgaWYgKCFzdGFjaykgY2FtbF9yYWlzZV9jb25zdGFudFxuICAgICAgICAgICAgICAgICAoY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCIpKTtcbiAgLy8gVXBkYXRlIHRoZSBleGVjdXRpb24gY29udGV4dCB3aXRoIHRoZSBzdGFjayBvZiBmaWJlcnMgaW4gW3N0YWNrXSBpblxuICAvLyBvcmRlciB0byByZXN1bWUgdGhlIGNvbnRpbnVhdGlvblxuICBkbyB7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpzdGFja1szXSwgcjp7azprLCB4OmNhbWxfZXhuX3N0YWNrLCBlOmNhbWxfZmliZXJfc3RhY2t9fTtcbiAgICBrID0gc3RhY2tbMV07XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzdGFja1syXTtcbiAgICBzdGFjayA9IHN0YWNrWzRdO1xuICB9IHdoaWxlIChzdGFjaylcbiAgcmV0dXJuIGs7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfZmliZXIoKSB7XG4gIC8vIE1vdmUgdG8gdGhlIHBhcmVudCBmaWJlciwgcmV0dXJuaW5nIHRoZSBwYXJlbnQncyBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4gIHZhciByZW0gPSBjYW1sX2ZpYmVyX3N0YWNrLnI7XG4gIGNhbWxfZXhuX3N0YWNrID0gcmVtLng7XG4gIGNhbWxfZmliZXJfc3RhY2sgPSByZW0uZTtcbiAgcmV0dXJuIHJlbS5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BlcmZvcm1fZWZmZWN0XG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVybiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcGVyZm9ybV9lZmZlY3QoZWZmLCBjb250LCBrMCkge1xuICAvLyBBbGxvY2F0ZSBhIGNvbnRpbnVhdGlvbiBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgb25lXG4gIGlmICghY29udCkgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgMF07XG4gIC8vIEdldCBjdXJyZW50IGVmZmVjdCBoYW5kbGVyXG4gIHZhciBoYW5kbGVyID0gY2FtbF9maWJlcl9zdGFjay5oWzNdO1xuICAvLyBDb25zIHRoZSBjdXJyZW50IGZpYmVyIG9udG8gdGhlIGNvbnRpbnVhdGlvbjpcbiAgLy8gICBjb250IDo9IENvbnMgKGssIGV4bl9zdGFjaywgaGFuZGxlcnMsICFjb250KVxuICBjb250WzFdID0gWzAsazAsY2FtbF9leG5fc3RhY2ssY2FtbF9maWJlcl9zdGFjay5oLGNvbnRbMV1dO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9oYW5kbGVyKGVmZixjb250LGsxLGsxKVxuICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oaGFuZGxlcixbZWZmLGNvbnQsazEsazFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICBmdW5jdGlvbiBjYWxsKGksIHgpIHtcbiAgICB2YXIgZj1jYW1sX2ZpYmVyX3N0YWNrLmhbaV07XG4gICAgdmFyIGFyZ3MgPSBbeCwgY2FtbF9wb3BfZmliZXIoKV07XG4gICAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9jYW1sX2NhbGxfZ2VuKGYsYXJncylcbiAgICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKTtcbiAgfVxuICBmdW5jdGlvbiBodmFsKHgpIHtcbiAgICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDEsIHgpO1xuICB9XG4gIGZ1bmN0aW9uIGhleG4oZSkge1xuICAgIC8vIENhbGwgW2h4XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMiwgZSk7XG4gIH1cbiAgcmV0dXJuIFswLCBodmFsLCBbMCwgaGV4biwgMF0sIFswLCBodiwgaHgsIGhmXSwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpIHtcbiAgdmFyIHN0YWNrPWNvbnRbMV07XG4gIGNvbnRbMV09MDtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoY29udCwgaHZhbCwgaGV4biwgaGVmZikge1xuICB2YXIgc3RhY2sgPSBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCk7XG4gIHN0YWNrWzNdID0gWzAsIGh2YWwsIGhleG4sIGhlZmZdO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbmZ1bmN0aW9uIGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX25ld1xuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fbmV3KHVuaXQpe1xuICAgIHJldHVybiB7Y29uZGl0aW9uOjF9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl93YWl0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KHQsbXV0ZXh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsKHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyFJZjogZWZmZWN0c1xuZnVuY3Rpb24ganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNGaWxlKCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgdmFyIGlzQ2hhcmFjdGVyRGV2aWNlID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNDaGFyYWN0ZXJEZXZpY2UoKTtcbiAgICBmLmlzQ2hhcmFjdGVyRGV2aWNlID0gaXNDaGFyYWN0ZXJEZXZpY2U7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmQoZmQsIGZsYWdzKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxOb2RlRmQucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sTm9kZUZkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZkO1xuXG5NbE5vZGVGZC5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGEsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICAgIHJldHVybiByZWFkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZkKCl7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxOb2RlRmRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgaWYoZmxhZ3MubmFtZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MubmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaChlKSB7ICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZmxhZ3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGFydHVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fc3RhcnR1cFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xlYW51cCBjb25zdFxuLy9BbGlhczogd2luX2NsZWFudXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCBjb25zdFxuLy9BbGlhczogd2luX2hhbmRsZV9mZFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9BbGlhczogdW5peF9pc2F0dHlcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9zdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X3N0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X2xzdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xzdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X2xzdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9sc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X21rZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ta2Rpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcm1kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JtZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9zeW1saW5rKHRvX2Rpciwgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYoc3JjX3Jvb3QuZGV2aWNlICE9IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRsaW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9yZWFkbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdW5saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91bmxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF91bmxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnVubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHd1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaGFzX3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfb3BlbmRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfb3BlbmRpclxuZnVuY3Rpb24gY2FtbF91bml4X29wZW5kaXIocGF0aCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHBhdGgpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm9wZW5kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X29wZW5kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICB2YXIgZGlyX2hhbmRsZSA9IHJvb3QuZGV2aWNlLm9wZW5kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xuICByZXR1cm4geyBwb2ludGVyIDogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9yZWFkZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKSB7XG4gIHZhciBlbnRyeTtcbiAgdHJ5IHtcbiAgICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcInJlYWRkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbiAgaWYgKGVudHJ5ID09PSBudWxsKSB7XG4gICAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X2Nsb3NlZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSkge1xuICB0cnkge1xuICAgICAgZGlyX2hhbmRsZS5wb2ludGVyLmNsb3NlU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFxcXC9dKVxcKlxcLlxcKiQvLCBcIlwiKTtcbiAgcGF0aCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGhfanMpO1xuICAvLyAqLiogaXMgbm93IHN0cmlwcGVkXG4gIHZhciBkaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIocGF0aCk7XG4gIHZhciBmaXJzdF9lbnRyeSA9IGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xuICAvLyBUaGUgV2luZG93cyBiaW5kaW5ncyB0eXBlIGRpcl9oYW5kbGUgYXMgYW4gYGludGAgYnV0IGl0J3Mgbm90IGluIEpTXG4gIHJldHVybiBbMCwgZmlyc3RfZW50cnksIGRpcl9oYW5kbGVdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZG5leHRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZG5leHRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kbmV4dChkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRjbG9zZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL0FsaWFzOiB3aW5fZmluZGNsb3NlXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGNsb3NlKGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyBjb25zdFxuLy9BbGlhczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgTWxGYWtlRmQsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2FycmF5LCBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3NcbmZ1bmN0aW9uIE1sRmFrZURldmljZSAocm9vdCwgZikge1xuICB0aGlzLmNvbnRlbnQ9e307XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG4gIHRoaXMubG9va3VwRnVuID0gZjtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNyZWF0ZV9kaXJfaWZfbmVlZGVkID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgY29tcCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNvbXAubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICByZXMgKz0gY29tcFtpXSArIFwiL1wiO1xuICAgIGlmKHRoaXMuY29udGVudFtyZXNdKSBjb250aW51ZTtcbiAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5zbGFzaCA9IGZ1bmN0aW9uKG5hbWUpe1xuICByZXR1cm4gL1xcLyQvLnRlc3QobmFtZSk/bmFtZToobmFtZSArIFwiL1wiKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24obmFtZSkge1xuICBpZighdGhpcy5jb250ZW50W25hbWVdICYmIHRoaXMubG9va3VwRnVuKSB7XG4gICAgdmFyIHJlcyA9IHRoaXMubG9va3VwRnVuKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5yb290KSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKSk7XG4gICAgaWYocmVzICE9PSAwKSB7XG4gICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgdGhpcy5jb250ZW50W25hbWVdPW5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHJlc1sxXSkpO1xuICAgIH1cbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gIGlmKG5hbWUgPT0gXCJcIikgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSkgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZmlsZSBleGlzdHNcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpICYmICF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIHJldHVybiAxXG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsbW9kZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVFWElTVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IEZpbGUgZXhpc3RzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcGFyZW50ID0gL14oLiopXFwvW14vXSsvLmV4ZWMobmFtZSk7XG4gIHBhcmVudCA9IChwYXJlbnQgJiYgcGFyZW50WzFdKSB8fCAnJztcbiAgaWYoIXRoaXMuZXhpc3RzKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0aGlzLnNsYXNoKG5hbWUpKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgaWYobi5tYXRjaChyKSkge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVEVNUFRZXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiOiBEaXJlY3Rvcnkgbm90IGVtcHR5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVfc2xhc2hdO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gIH1cbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgdmFyIHNlZW4gPSB7fVxuICB2YXIgYSA9IFtdO1xuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgdmFyIG0gPSBuLm1hdGNoKHIpO1xuICAgIGlmKG0gJiYgIXNlZW5bbVsxXV0pIHtzZWVuW21bMV1dID0gdHJ1ZTsgYS5wdXNoKG1bMV0pfVxuICB9XG4gIHJldHVybiBhO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG5cbiAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gIHZhciBjID0gZmFsc2U7XG4gIHZhciBpID0gMDtcbiAgcmV0dXJuIHsgcmVhZFN5bmMgOiAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaSA9PSBhLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICBpKys7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkgfVxuICB9KVxuICAgICwgY2xvc2VTeW5jOiAoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGMpIHtcbiAgICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYyA9IHRydWU7XG4gICAgICBhID0gW107XG4gICAgfSlcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKG5hbWUgPT0gXCJcIikgIHJldHVybiB0cnVlO1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBvayA9IHRoaXMuY29udGVudFtuYW1lXT90cnVlOmZhbHNlO1xuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICByZXR1cm4gb2s7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVnaXN0ZXI9IGZ1bmN0aW9uIChuYW1lLGNvbnRlbnQpe1xuICB2YXIgZmlsZTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVdKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICBpZihjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjb250ZW50KTtcbiAgaWYoY2FtbF9pc19tbF9zdHJpbmcoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50IGluc3RhbmNlb2YgQXJyYXkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICBlbHNlIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQudG9TdHJpbmcpIHtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2J5dGVzX29mX3N0cmluZyhjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjb250ZW50LnRvU3RyaW5nKCkpKTtcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoYnl0ZXMpO1xuICB9XG4gIGlmKGZpbGUpe1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gZmlsZTtcbiAgfVxuICBlbHNlIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBNbEZha2VGaWxlKGNvbnRlbnQpe1xuICB0aGlzLmRhdGEgPSBjb250ZW50O1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxGYWtlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VGaWxlXG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCB0aGlzLmRhdGEsIG9mZnNldCwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgbGVuID0gY2xlbiAtIG9mZnNldDtcbiAgfVxuICBpZihsZW4pIHtcbiAgICB2YXIgZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGRhdGEsIDAsIGxlbik7XG4gICAgYnVmLnNldChjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGRhdGEpLCBwb3MpO1xuICB9XG4gIHJldHVybiBsZW5cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZF9vdXQoZmQsZmxhZ3MpIHtcbiAgTWxGYWtlRmlsZS5jYWxsKHRoaXMsIGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgdGhpcy5sb2cgPSAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIDAgfSk7XG4gIGlmKGZkID09IDEgJiYgdHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICBlbHNlIGlmKGZkID09IDIgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5lcnJvcjtcbiAgZWxzZSBpZih0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2dcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsgcmV0dXJuIDAgfVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5sb2cpIHtcbiAgICBpZihsZW4gPiAwXG4gICAgICAgJiYgcG9zID49IDBcbiAgICAgICAmJiBwb3MrbGVuIDw9IGJ1Zi5sZW5ndGhcbiAgICAgICAmJiBidWZbcG9zK2xlbi0xXSA9PSAxMClcbiAgICAgIGxlbiAtLTtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICB2YXIgc3JjID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHNyYywgMCwgbGVuKTtcbiAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBpcyB3cml0ZSBvbmx5XCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZChuYW1lLCBmaWxlLGZsYWdzKSB7XG4gIHRoaXMuZmlsZSA9IGZpbGU7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cblxuTWxGYWtlRmQucHJvdG90eXBlLmVycl9jbG9zZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubmFtZSAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUubGVuZ3RoICgpXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LGJ1Zixwb3MsbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUucmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHNbXCJfbmF0XCJdID1cbiAgICB7IGRlc2VyaWFsaXplIDogZGVzZXJpYWxpemVfbmF0LFxuICAgICAgc2VyaWFsaXplIDogc2VyaWFsaXplX25hdCxcbiAgICAgIGhhc2ggOiBjYW1sX2hhc2hfbmF0XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuZnVuY3Rpb24gTWxOYXQoeCl7XG4gIHRoaXMuZGF0YSA9IG5ldyBJbnQzMkFycmF5KHgpO1xuICAvLyBGb3IgbnVtIDwgMS41XG4gIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgLy8gd29yayBvdXQgcmlnaHQuXG4gIC8vIFdlIGFkZCArMiB0byB0aGUgYXJyYXkgbGVuZ3RoOlxuICAvLyAtICsxIGZvciB0aGUgdGFnXG4gIC8vIC0gKzEgZm9yIHRoZSBjdXN0b21fb3BzIHNsb3RcbiAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoICsgMlxufVxuXG5NbE5hdC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9uYXRcIjtcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX25hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbmF0KHgpIHtcbiAgdmFyIGxlbiA9IG51bV9kaWdpdHNfbmF0KHgsIDAsIHguZGF0YS5sZW5ndGgpO1xuICB2YXIgaCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgeC5kYXRhW2ldKTtcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogbGVuZ3RoX25hdFxuZnVuY3Rpb24gbGVuZ3RoX25hdCh4KSB7XG4gIHJldHVybiB4LmRhdGEubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBuYXRfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBuYXRfb2ZfYXJyYXkobCl7XG4gIHJldHVybiBuZXcgTWxOYXQobCk7XG59XG5cbi8vUHJvdmlkZXM6IGNyZWF0ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBjcmVhdGVfbmF0KHNpemUpIHtcbiAgdmFyIGFyciA9IG5ldyBNbE5hdChzaXplKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gbmF0Mi5kYXRhW29mczIraV07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXQobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXQobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gbnVtX2RpZ2l0c19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmKG5hdC5kYXRhW29mcytpXSAhPSAwKSByZXR1cm4gaSsxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZihhICYgMHhGRkZGMDAwMCkgeyBiICs9MTY7IGEgPj4+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+IDApKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0X3JlYWxcbi8vUmVxdWlyZXM6IGNvbXBhcmVfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdF9yZWFsKG5hdDEsbmF0Mil7XG4gIHJldHVybiBjb21wYXJlX25hdChuYXQxLDAsbmF0MS5kYXRhLmxlbmd0aCxuYXQyLDAsbmF0Mi5kYXRhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IHNlcmlhbGl6ZV9uYXRcbmZ1bmN0aW9uIHNlcmlhbGl6ZV9uYXQod3JpdGVyLCBuYXQsIHN6KXtcbiAgdmFyIGxlbiA9IG5hdC5kYXRhLmxlbmd0aDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIHdyaXRlci53cml0ZSgzMiwgbmF0LmRhdGFbaV0pO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgc3pbMV0gPSBsZW4gKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBkZXNlcmlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZV9uYXQocmVhZGVyLCBzeil7XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIgbmF0ID0gbmV3IE1sTmF0KGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgbmF0LmRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgcmV0dXJuIG5hdDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCxjYW1sX25hbWVkX3ZhbHVlKFwiR3JhcGhpY3MuR3JhcGhpY19mYWlsdXJlXCIpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpXSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSl7XG4gICAgdmFyIHJlcyA9IGluZm8ubWF0Y2goXCIoXnwsKSAqXCIrbmFtZStcIiAqPSAqKFthLXpBLVowLTlfXSspICooLHwkKVwiKTtcbiAgICBpZihyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmKCEoaW5mbz09XCJcIikpIHNwZWNzLnB1c2goaW5mbyk7XG4gIHZhciB0YXJnZXQgPSBnZXQoXCJ0YXJnZXRcIik7XG4gIGlmKCF0YXJnZXQpIHRhcmdldD1cIlwiO1xuICB2YXIgc3RhdHVzID0gZ2V0KFwic3RhdHVzXCIpO1xuICBpZighc3RhdHVzKSBzcGVjcy5wdXNoKFwic3RhdHVzPTFcIilcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdz9wYXJzZUludCh3KToyMDA7XG4gIHNwZWNzLnB1c2goXCJ3aWR0aD1cIit3KTtcblxuICB2YXIgaCA9IGdldChcImhlaWdodFwiKTtcbiAgaCA9IGg/cGFyc2VJbnQoaCk6MjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiK2gpO1xuXG4gIHZhciB3aW4gPSBnbG9iYWxUaGlzLm9wZW4oXCJhYm91dDpibGFua1wiLHRhcmdldCxzcGVjcy5qb2luKFwiLFwiKSk7XG4gIGlmKCF3aW4pIHtjYW1sX2ZhaWx3aXRoKFwiR3JhcGhpY3Mub3Blbl9ncmFwaDogY2Fubm90IG9wZW4gdGhlIHdpbmRvd1wiKX1cbiAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgdmFyIGNhbnZhcyA9IGRvYy5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3O1xuICBjYW52YXMuaGVpZ2h0ID0gaDtcbiAgdmFyIGN0eCA9IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCl7XG4gIGNhbWxfZ3JfbW92ZXRvKGNhbWxfZ3Jfc3RhdGUueCxjYW1sX2dyX3N0YXRlLnkpO1xuICBjYW1sX2dyX3Jlc2l6ZV93aW5kb3coY2FtbF9ncl9zdGF0ZS53aWR0aCxjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKXtcbiAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgY2FudmFzIDogY2FudmFzLFxuICAgIHggOiAwLFxuICAgIHkgOiAwLFxuICAgIHdpZHRoIDogdyxcbiAgICBoZWlnaHQgOiBoLFxuICAgIGxpbmVfd2lkdGggOiAxLFxuICAgIGZvbnQgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiZml4ZWRcIiksXG4gICAgdGV4dF9zaXplIDogMjYsXG4gICAgY29sb3IgOiAweDAwMDAwMCxcbiAgICB0aXRsZSA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIilcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kb2Nfb2Zfc3RhdGVcbmZ1bmN0aW9uIGNhbWxfZ3JfZG9jX29mX3N0YXRlKHN0YXRlKSB7XG4gIGlmKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KVxuICAgIHJldHVybiBzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2VfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IDA7XG4gIHMuY2FudmFzLmhlaWdodCA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKG5hbWUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKHMuc2V0X3RpdGxlKSBzLnNldF90aXRsZShqc25hbWUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9yZXNpemVfd2luZG93KHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKVxuICBzLndpZHRoID0gdztcbiAgcy5oZWlnaHQgPSBoO1xuICBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gIC8vICBzLmNvbnRleHQuc3Ryb2tlUmVjdCAoMC4sIDAuLCBzLndpZHRoLCBzLmhlaWdodCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMud2lkdGg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfY29sb3IoY29sb3Ipe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGZ1bmN0aW9uIGNvbnZlcnQobnVtYmVyKSB7XG4gICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IDIpIHN0ciA9ICcwJyArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhclxuICByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gIGcgPSAoY29sb3IgPj4gOCkgICYgMHhmZixcbiAgYiA9IChjb2xvciA+PiAwKSAgJiAweGZmO1xuICBzLmNvbG9yPWNvbG9yO1xuICB2YXIgY19zdHIgPSAnIycgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSAgIGNfc3RyO1xuICBzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjX3N0cjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Bsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Bsb3QoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIGRbMV0gPSAoY29sb3IgPj4gOCkgICYgMHhmZiwgLy9nXG4gIGRbMl0gPSAoY29sb3IgPj4gMCkgICYgMHhmZjsgLy9iXG4gIGRbM10gPSAweEZGOyAvL2FcbiAgcy54PXg7XG4gIHMueT15O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLHgscy5oZWlnaHQgLSB5KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcG9pbnRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3BvaW50X2NvbG9yKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIHksMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy54XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9saW5ldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2xpbmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLmNvbnRleHQubGluZVRvKHgscy5oZWlnaHQgLSB5KTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuc3Ryb2tlUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9hcmNfYXV4KGN0eCxjeCxjeSxyeSxyeCxhMSxhMil7XG4gIHdoaWxlKGExPmEyKSBhMis9MzYwO1xuICBhMSAvPSAxODA7XG4gIGEyIC89IDE4MDtcbiAgdmFyIHJvdCA9IDAseFBvcyx5UG9zLHhQb3NfcHJldix5UG9zX3ByZXY7XG4gIHZhciBzcGFjZSA9IDI7XG4gIHZhciBudW0gPSAoKChhMiAtIGExKSAqIE1hdGguUEkgKiAoKHJ4K3J5KS8yKSkgLyBzcGFjZSkgfCAwO1xuICB2YXIgZGVsdGEgPSAoYTIgLSBhMSkgKiBNYXRoLlBJIC8gbnVtO1xuICB2YXIgaSA9IGExICogTWF0aC5QSTtcbiAgZm9yICh2YXIgaj0wO2o8PW51bTtqKyspe1xuICAgIHhQb3MgPSBjeCAtIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeFBvcyA9IHhQb3MudG9GaXhlZCgyKTtcbiAgICB5UG9zID0gY3kgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGo9PTApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYhPXhQb3MgfHwgeVBvc19wcmV2IT15UG9zKXtcbiAgICAgIGN0eC5saW5lVG8oeFBvcywgeVBvcyk7XG4gICAgfVxuICAgIHhQb3NfcHJldj14UG9zO1xuICAgIHlQb3NfcHJldj15UG9zO1xuICAgIGktPSBkZWx0YTsvL2Njd1xuICB9XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfbGluZV93aWR0aCh3KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gd1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuZmlsbFJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3BvbHlcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcG9seShhcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBmb3IodmFyIGkgPSAyOyBpIDwgYXIubGVuZ3RoOyBpKyspXG4gICAgcy5jb250ZXh0LmxpbmVUbyhhcltpXVsxXSxzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHIoc3RyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgbSA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChzdHIpO1xuICB2YXIgZHggPSBtLndpZHRoO1xuICBzLmNvbnRleHQuZmlsbFRleHQoc3RyLHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMueCArPSBkeCB8IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfY2hhclxuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2NoYXIoYyl7XG4gIGNhbWxfZ3JfZHJhd19zdHIoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cmluZyhzdHIpe1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuZm9udCA9IGY7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF90ZXh0X3NpemUoc2l6ZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50ZXh0X3NpemUgPSBzaXplO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3RleHRfc2l6ZSh0eHQpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsdyxzLnRleHRfc2l6ZV07XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGggPSBhcnIubGVuZ3RoIC0gMSA7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodyxoKTtcbiAgZm9yKHZhciBpPTA7aTxoO2krKyl7XG4gICAgZm9yKHZhciBqPTA7ajx3O2orKyl7XG4gICAgICB2YXIgYyA9IGFycltpKzFdW2orMV07XG4gICAgICB2YXIgbyA9IGkqKHcqNCkgKyAoaiAqIDQpO1xuICAgICAgaWYoYyA9PSAtMSkge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IGMgPj4gMTYgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IGMgPj4gIDggJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IGMgPj4gIDAgJiAwWGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDB4ZmY7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKXtcbiAgdmFyIGRhdGEgPSBbMF1cbiAgZm9yKHZhciBpPTA7IGk8aW0uaGVpZ2h0O2krKyl7XG4gICAgZGF0YVtpKzFdID0gWzBdXG4gICAgZm9yKHZhciBqPTA7IGo8aW0ud2lkdGg7aisrKXtcbiAgICAgIHZhciBvID0gaSooaW0ud2lkdGgqNCkgKyAoaiAqIDQpLFxuICAgICAgICAgIHIgPSBpbS5kYXRhW28rMF0sXG4gICAgICAgICAgZyA9IGltLmRhdGFbbysxXSxcbiAgICAgICAgICBiID0gaW0uZGF0YVtvKzJdO1xuICAgICAgZGF0YVtpKzFdW2orMV0gPSAociA8PCAxNikgKyAoZyA8PCA4KSArIGJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmKCFpbS5pbWFnZSkge1xuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikucHV0SW1hZ2VEYXRhKGltLDAsMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgICAgIGltLmltYWdlID0gaW1hZ2U7XG4gICAgfVxuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NyZWF0ZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3JlYXRlX2ltYWdlKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoeCx5KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYmxpdF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfYmxpdF9pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbTIgPSBzLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5LGltLndpZHRoLGltLmhlaWdodCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW0yLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICBpbS5kYXRhW2ldID0gaW0yLmRhdGFbaV07XG4gICAgaW0uZGF0YVtpKzFdID0gaW0yLmRhdGFbaSsxXTtcbiAgICBpbS5kYXRhW2krMl0gPSBpbTIuZGF0YVtpKzJdO1xuICAgIGltLmRhdGFbaSszXSA9IGltMi5kYXRhW2krM107XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXJcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9faGFuZGxlcigpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dhaXRfZXZlbnRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2FpdF9ldmVudChfZXZsKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfc3luY2hyb25pemUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9yZW1lbWJlcl9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3JlbWVtYmVyX21vZGUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZGlzcGxheV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Rpc3BsYXlfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfZGlzcGxheV9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl93aW5kb3dfaWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2luZG93X2lkKGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2luZG93X2lkIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX3N1YndpbmRvdyhhLGIsYyxkKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbnZhciBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlclxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUoZXZlbnQsIGV2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yKHRhcmdldCkge1xuICByZXR1cm4ge307XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IoY3Vyc29yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGwoY3Vyc29yLCBjYWxsYmFja3MsIG51bSkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gVUludDhBcnJheVJlYWRlciAocywgaSkgeyB0aGlzLnMgPSBzOyB0aGlzLmkgPSBpOyB9XG5VSW50OEFycmF5UmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK107IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgOCkgfCBzW2kgKyAxXVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQgPj4gMTYpIHwgc1tpICsgMV07XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSh0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIE1sU3RyaW5nUmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7IHRoaXMuaSA9IGk7IH1cbk1sU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0ID4+IDE2KSB8IHMuY2hhckNvZGVBdChpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnMuc3Vic3RyaW5nKGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB2YXIgcyA9IHRoaXMucztcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGJbal0gPSBzLmNoYXJDb2RlQXQoaSArIGopO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldChpKTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIH1cbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9ieXRlcyAoYSkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIChjYW1sX2ludDY0X29mX2J5dGVzIChhKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXJcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAocywgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSwgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzICh0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X21hcnNoYWwod3JpdGVyLCB2LCBzaXplcykge1xuICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVyLndyaXRlICg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4OyBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzaXplWzBdID0gNDtcbiAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzd2l0Y2ggKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOlxuICAgIHNpemVbMF0gPSA0O1xuICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgY2FzZSAyOlxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbmF0aXZlIGludGVnZXJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3VubWFyc2hhbCwgY2FtbF9pbnQ2NF9tYXJzaGFsLCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9pbnQzMl91bm1hcnNoYWwsIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXJpYWxpemUsIGNhbWxfYmFfZGVzZXJpYWxpemUsIGNhbWxfYmFfY29tcGFyZSwgY2FtbF9iYV9oYXNoXG52YXIgY2FtbF9jdXN0b21fb3BzID1cbiAgICB7XCJfalwiOiB7XG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgICAgc2VyaWFsaXplICA6IGNhbWxfaW50NjRfbWFyc2hhbCxcbiAgICAgIGZpeGVkX2xlbmd0aCA6IDgsXG4gICAgICBjb21wYXJlIDogY2FtbF9pbnQ2NF9jb21wYXJlLFxuICAgICAgaGFzaCA6IGNhbWxfaW50NjRfaGFzaFxuICAgIH0sXG4gICAgIFwiX2lcIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQzMl91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfblwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyYXlcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycmF5XCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycjAyXCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnIwMlwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9XG4gICAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKSB7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuICB2YXIgbWFnaWMgPSByZWFkZXIucmVhZDMydSAoKVxuICBzd2l0Y2gobWFnaWMpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHJlYWRlci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiKTtcbiAgICBicmVha1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrO1xuICB9XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKHJlYWRlcikge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYoY29tcHJlc3NlZCkge1xuICAgIGlmKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMjBcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMTZcblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICB2YXIgciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyksIG9mcyk7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoKHIucmVhZDMydSgpKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByLnJlYWQzMnUoKTtcbiAgICBicmVhaztcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGhlYWRlcl9sZW4gLSBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgKyBkYXRhX2xlbjtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9pc19jb250aW51YXRpb25fdGFnXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLiBJdCBzZWVtcyBiZXR0ZXIgdG9cbiAgICAgICAgICAvLyBzeXN0ZW1hdGljYWxseSBmYWlsIG9uIG1hcnNoYWxsaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgLy8gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBCIC8qY3N0LkNPREVfRE9VQkxFX0JJRyovKTtcbiAgICAgICAgICAvLyAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFtpXSl9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZSkgZmlsZS5jbG9zZSgpO1xuICBkZWxldGUgY2FtbF9zeXNfZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSxpZHgpIHtcbiAgaWYoaWR4ID09IHVuZGVmaW5lZCl7XG4gICAgaWR4ID0gY2FtbF9zeXNfZmRzLmxlbmd0aDtcbiAgfVxuICBjYW1sX3N5c19mZHNbaWR4XSA9IGZpbGU7XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGZpbGUsIHVuZGVmaW5lZCk7XG59XG4oZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBuZXcgTWxGYWtlRmRfb3V0KGZkLCBmbGFncylcbiAgfVxuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMCx7cmRvbmx5OjEsYWx0bmFtZTpcIi9kZXYvc3RkaW5cIixpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDApO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMSx7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDEpO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMix7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDIpO1xufSkoKVxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKGNoYW5pZCwgbmFtZSkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgYnVmZmVyZWQgPSAoZmlsZS5mbGFncy5idWZmZXJlZCAhPT0gdW5kZWZpbmVkKSA/IGZpbGUuZmxhZ3MuYnVmZmVyZWQgOiAxO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6dHJ1ZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgYnVmZmVyZWQ6YnVmZmVyZWRcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luIChmZCkgIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6IGZhbHNlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyX21heDowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dChmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG4vL0FsaWFzOiB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWxcbmZ1bmN0aW9uIGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlKGNoYW5pZCxtb2RlKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4uZmlsZS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSA9IG1vZGVcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgXG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICBjYW1sX3N5c19jbG9zZShjaGFuLmZkKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2JpZ2FycmF5IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmxvY2sgKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYobCA8PSBhdmFpbCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBsO1xuICB9XG4gIGVsc2UgaWYoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGF2YWlsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBhdmFpbDtcbiAgICBuID0gYXZhaWw7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgIGlmKG4gPiBhdmFpbCkgbiA9IGF2YWlsO1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVscywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgZnVuY3Rpb24gYmxvY2soYnVmZmVyLCBvZmZzZXQsIG4pIHtcbiAgICB2YXIgciA9IDA7XG4gICAgd2hpbGUociA8IG4pe1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCtyXSA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICAgICAgY2hhbi5idWZmZXJfY3VycisrO1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB2YXIgciA9IGJsb2NrKGhlYWRlciwgMCwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgaWYociA9PSAwKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgZWxzZSBpZiAociA8IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3RcIik7XG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChjYW1sX2J5dGVzX29mX2FycmF5KGhlYWRlciksIDApO1xuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuICsgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgYnVmLnNldChoZWFkZXIsMCk7XG4gIHZhciByID0gYmxvY2soYnVmLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUsIGxlbilcbiAgaWYociA8IGxlbilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3QgXCIgKyByICsgXCIgIFwiICsgbGVuKTtcbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcChjKSB7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlKGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2NoYXIsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgNDsgaSsrKXtcbiAgICByZXMgPSAocmVzIDw8IDgpICsgY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW5pZCkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYocG9zID49IGNoYW4ub2Zmc2V0IC0gY2hhbi5idWZmZXJfbWF4XG4gICAgICYmIHBvcyA8PSBjaGFuLm9mZnNldFxuICAgICAmJiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5KSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQscG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3Bvc19pbihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLm9mZnNldCAtIChjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX3Bvc19pbihjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHAgPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBkbyB7XG4gICAgaWYocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPiAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyKSwwKTtcbiAgICAgICAgcCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICB9XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZfbWF4ID0gY2hhbi5idWZmZXJfbWF4O1xuICAgICAgY2FtbF9yZWZpbGwgKGNoYW4pO1xuICAgICAgaWYocHJldl9tYXggPT0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPSAxMCk7XG4gIHJldHVybiAocCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXJfY3VyciA9PSAwKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5vdXRwdXQpIHtcbiAgICBjaGFuLm91dHB1dChjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgfVxuICBjaGFuLm9mZnNldCArPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X3RhXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXksIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX291dChjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9wb3Nfb3V0KGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLmJ1ZmZlcmVkID8gMSA6IDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGNoYW5pZCx2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA9IHY7XG4gIGlmKCF2KSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiAwXG59XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIC8vIEEgZmllbGQgd2FzIGFkZGVkIGluIE9DYW1sIDQuMTIuIEl0IGlzIHVubGlrZWx5IHRvIGJlIGFuIGlzc3VlIHRvXG4gIC8vIHJldHVybiB0b28gbWFueSBmaWVsZHMgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwuXG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKVxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoY2IsIGEpIHtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgdmFyIHggPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoeCl7YWxsX2ZpbmFsaXplcnMuZGVsZXRlKHgpOyBjYigwKTsgcmV0dXJuO30pO1xuICAgIHgucmVnaXN0ZXIoYSx4KTtcbiAgICBhbGxfZmluYWxpemVycy5hZGQoeCk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9kaXNjYXJkXG5mdW5jdGlvbiBjYW1sX21lbXByb2ZfZGlzY2FyZCh0KSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcmVzdW1lKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19wYXVzZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvcl9zbGljZVxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcl9zbGljZSh3b3JrKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3Jfd29yZHModW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfYnVja2V0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9idWNrZXQobikgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9jcmVkaXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2NyZWRpdChuKSB7IHJldHVybiAwOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIHZpZXc7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAwOiAgdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gSW50OEFycmF5OyBicmVhaztcbiAgY2FzZSAzOiAgdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBVaW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNjogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgOTogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDEyOiB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZDtcbiAgaWYgICAgICAodGEgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkga2luZCA9IDE7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAgIC8qIE5lZWRlZCB0byBhdm9pZCB1bnNpZ25lZCBzZXR0ZXJzIG92ZXJmbG93aW5nXG4gICAgICAgICB0aGUgcmFuZ2Ugb2YgT0NhbWwgW2ludDMyXSB2YWx1ZXMuICovXG4gICAgICB0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ID9cbiAgICAgIG5ldyBJbnQzMkFycmF5KHRhLmJ1ZmZlciAsdGEuYnl0ZU9mZnNldCwgdGEubGVuZ3RoKSA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKVxue1xuICB2YXIgRVJSQ09ERSA9IDI1NjtcblxuICAvL3ZhciBTVEFSVCA9IDA7XG4gIC8vdmFyIFRPS0VOX1JFQUQgPSAxO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMSA9IDI7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8yID0gMztcbiAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0gNDtcbiAgLy92YXIgRVJST1JfREVURUNURUQgPSA1O1xuICB2YXIgbG9vcCA9IDY7XG4gIHZhciB0ZXN0c2hpZnQgPSA3O1xuICB2YXIgc2hpZnQgPSA4O1xuICB2YXIgc2hpZnRfcmVjb3ZlciA9IDk7XG4gIHZhciByZWR1Y2UgPSAxMDtcblxuICB2YXIgUkVBRF9UT0tFTiA9IDA7XG4gIHZhciBSQUlTRV9QQVJTRV9FUlJPUiA9IDE7XG4gIHZhciBHUk9XX1NUQUNLU18xID0gMjtcbiAgdmFyIEdST1dfU1RBQ0tTXzIgPSAzO1xuICB2YXIgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04gPSA0O1xuICB2YXIgQ0FMTF9FUlJPUl9GVU5DVElPTiA9IDU7XG5cbiAgdmFyIGVudl9zX3N0YWNrID0gMTtcbiAgdmFyIGVudl92X3N0YWNrID0gMjtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0X3N0YWNrID0gMztcbiAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDQ7XG4gIHZhciBlbnZfc3RhY2tzaXplID0gNTtcbiAgdmFyIGVudl9zdGFja2Jhc2UgPSA2O1xuICB2YXIgZW52X2N1cnJfY2hhciA9IDc7XG4gIHZhciBlbnZfbHZhbCA9IDg7XG4gIHZhciBlbnZfc3ltYl9zdGFydCA9IDk7XG4gIHZhciBlbnZfc3ltYl9lbmQgPSAxMDtcbiAgdmFyIGVudl9hc3AgPSAxMTtcbiAgdmFyIGVudl9ydWxlX2xlbiA9IDEyO1xuICB2YXIgZW52X3J1bGVfbnVtYmVyID0gMTM7XG4gIHZhciBlbnZfc3AgPSAxNDtcbiAgdmFyIGVudl9zdGF0ZSA9IDE1O1xuICB2YXIgZW52X2VycmZsYWcgPSAxNjtcblxuICAvLyB2YXIgX3RibF9hY3Rpb25zID0gMTtcbiAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAyO1xuICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDM7XG4gIHZhciB0YmxfbGhzID0gNDtcbiAgdmFyIHRibF9sZW4gPSA1O1xuICB2YXIgdGJsX2RlZnJlZCA9IDY7XG4gIHZhciB0YmxfZGdvdG8gPSA3O1xuICB2YXIgdGJsX3NpbmRleCA9IDg7XG4gIHZhciB0YmxfcmluZGV4ID0gOTtcbiAgdmFyIHRibF9naW5kZXggPSAxMDtcbiAgdmFyIHRibF90YWJsZXNpemUgPSAxMTtcbiAgdmFyIHRibF90YWJsZSA9IDEyO1xuICB2YXIgdGJsX2NoZWNrID0gMTM7XG4gIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7XG4gIHZhciB0YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgdmFyIHRibF9uYW1lc19ibG9jayA9IDE2O1xuXG5cbiAgZnVuY3Rpb24gbG9nKHgpIHtcbiAgICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCArIFwiXFxuXCIpO1xuICAgIGNhbWxfbWxfb3V0cHV0KDIsIHMsIDAsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2tlbl9uYW1lKG5hbWVzLCBudW1iZXIpXG4gIHtcbiAgICB2YXIgc3RyID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZXMpO1xuICAgIGlmIChzdHJbMF0gPT0gJ1xceDAwJylcbiAgICAgIHJldHVybiBcIjx1bmtub3duIHRva2VuPlwiO1xuICAgIHJldHVybiBzdHIuc3BsaXQoJ1xceDAwJylbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spXG4gIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKHRvayBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19ibG9ja10sIHRva1swXSk7XG4gICAgICBpZiAodHlwZW9mIHRva1sxXSA9PSBcIm51bWJlclwiKVxuICAgICAgICBraW5kID0gXCJcIiArIHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJzdHJpbmdcIilcbiAgICAgICAga2luZCA9IHRva1sxXVxuICAgICAgZWxzZSBpZiAodG9rWzFdIGluc3RhbmNlb2YgTWxCeXRlcylcbiAgICAgICAga2luZCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodG9rWzFdKVxuICAgICAgZWxzZVxuICAgICAgICBraW5kID0gXCJfXCJcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGVmcmVkXSk7XG4gICAgdGFibGVzLnNpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3NpbmRleF0pO1xuICAgIHRhYmxlcy5jaGVjayAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9jaGVja10pO1xuICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9yaW5kZXhdKTtcbiAgICB0YWJsZXMudGFibGUgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfdGFibGVdKTtcbiAgICB0YWJsZXMubGVuICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGVuXSk7XG4gICAgdGFibGVzLmxocyAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9naW5kZXhdKTtcbiAgICB0YWJsZXMuZGdvdG8gID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLCBuLCBuMSwgbjIsIHN0YXRlMTtcblxuICAvLyBSRVNUT1JFXG4gIHZhciBzcCA9IGVudltlbnZfc3BdO1xuICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0YXRlXTtcbiAgdmFyIGVycmZsYWcgPSBlbnZbZW52X2VycmZsYWddO1xuXG4gIGV4aXQ6Zm9yICg7Oykge1xuICAgIG5leHQ6c3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpIHByaW50X3Rva2VuIChzdGF0ZSwgYXJnKTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA3Oi8vdGVzdHNoaWZ0OlxuICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIGNtZCA9IHNoaWZ0OyBicmVhaztcbiAgICAgIH1cbiAgICAgIG4xID0gdGFibGVzLnJpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgY21kID0gcmVkdWNlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJmbGFnIDw9IDApIHtcbiAgICAgICAgcmVzID0gQ0FMTF9FUlJPUl9GVU5DVElPTjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovXG4gICAgY2FzZSA1Oi8vRVJST1JfREVURUNURUQ6XG4gICAgICBpZiAoZXJyZmxhZyA8IDMpIHtcbiAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV07XG4gICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgbjIgPSBuMSArIEVSUkNPREU7XG4gICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBFUlJDT0RFKSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIlJlY292ZXJpbmcgaW4gc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWsgbmV4dDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICAgIGxvZyhcIk5vIG1vcmUgc3RhdGVzIHRvIGRpc2NhcmRcIik7XG4gICAgICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMClcbiAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgODovL3NoaWZ0OlxuICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICBpZiAoZXJyZmxhZyA+IDApIGVycmZsYWctLTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgOTovL3NoaWZ0X3JlY292ZXI6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVkdWNlIGJ5IHJ1bGUgXCIgKyBuKTtcbiAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgIGVudltlbnZfYXNwXSA9IHNwO1xuICAgICAgZW52W2Vudl9ydWxlX251bWJlcl0gPSBuO1xuICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgc3AgPSBzcCAtIG0gKyAxO1xuICAgICAgbSA9IHRhYmxlcy5saHNbbl07XG4gICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTtcbiAgICAgIG4yID0gbjEgKyBzdGF0ZTE7XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBlbHNlXG4gICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDM6Ly9TVEFDS1NfR1JPV05fMjpcbiAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICBjYXNlIDQ6Ly9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGFyZztcbiAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICBpZiAoc3AgPiBhc3ApIHtcbiAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICB9XG4gICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLy8gU0FWRVxuICBlbnZbZW52X3NwXSA9IHNwO1xuICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlO1xuICBlbnZbZW52X2VycmZsYWddID0gZXJyZmxhZztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfcGFyc2VyX3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlcl90cmFjZVxuZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKGJvb2wpIHtcbiAgdmFyIG9sZGZsYWcgPSBjYW1sX3BhcnNlcl90cmFjZTtcbiAgY2FtbF9wYXJzZXJfdHJhY2UgPSBib29sO1xuICByZXR1cm4gb2xkZmxhZztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgIC8qIEFsbCBjb250aW51YXRpb25zIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsXG4gICAgICAgICAgICAgc2luY2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyB0byBkaXN0aW5ndWlzaCB0aGVtLiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfaGFzaChoLCB2KXtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdXBkYXRlX2R1bW15XG5mdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1teSAoeCwgeSkge1xuICBpZiggeS5mdW4gKSB7IHguZnVuID0geS5mdW47IHJldHVybiAwOyB9XG4gIGlmKCB0eXBlb2YgeT09PVwiZnVuY3Rpb25cIiApIHsgeC5mdW4gPSB5OyByZXR1cm4gMDsgfVxuICB2YXIgaSA9IHkubGVuZ3RoOyB3aGlsZSAoaS0tKSB4W2ldID0geVtpXTsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2NfZHVtbXlfaW5maXhcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfYWxsb2NfZHVtbXlfaW5maXggKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZiAoeCkgeyByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmZ1biwgW3hdKSB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX2Jsb2NrIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX2Jsb2NrICh4KSB7IHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29ial90YWcgKHgpIHtcbiAgaWYgKCh4IGluc3RhbmNlb2YgQXJyYXkpICYmIHhbMF0gPT0gKHhbMF0gPj4+IDApKVxuICAgIHJldHVybiB4WzBdXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKCh4IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IHR5cGVvZiB4ID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMjQ3XG4gIGVsc2UgaWYgKHggJiYgeC5jYW1sX2N1c3RvbSlcbiAgICByZXR1cm4gMjU1XG4gIGVsc2VcbiAgICByZXR1cm4gMTAwMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcgKHgsIHRhZykgeyB4WzBdID0gdGFnOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sgKHRhZywgc2l6ZSkge1xuICB2YXIgbyA9IG5ldyBBcnJheShzaXplKzEpO1xuICBvWzBdPXRhZztcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc2l6ZTsgaSsrKSBvW2ldID0gMDtcbiAgcmV0dXJuIG87XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3dpdGhfdGFnXG5mdW5jdGlvbiBjYW1sX29ial93aXRoX3RhZyh0YWcseCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IHRhZztcbiAgZm9yKHZhciBpID0gMTsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfZHVwIG11dGFibGUgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX29ial9kdXAgKHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUgKHgsIHMpIHtcbiAgaWYgKHM8PTAgfHwgcyArIDEgPiB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiT2JqLnRydW5jYXRlXCIpO1xuICBpZiAoeC5sZW5ndGggIT0gcyArIDEpIHgubGVuZ3RoID0gcyArIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9tYWtlX2ZvcndhcmRcbmZ1bmN0aW9uIGNhbWxfb2JqX21ha2VfZm9yd2FyZCAoYix2KSB7XG4gIGJbMF09MjUwO1xuICBiWzFdPXY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXBcbmZ1bmN0aW9uIGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAoeCxpLG9sZCxuKXtcbiAgaWYoeFtpKzFdID09IG9sZCkge1xuICAgIHhbaSsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfc2hhcmVkXG5mdW5jdGlvbiBjYW1sX29ial9pc19zaGFyZWQoeCl7XG4gIHJldHVybiAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLG8sbikge1xuICAgIGlmKGJbMF09PW8pIHsgYlswXSA9IG47IHJldHVybiAxIH1cbiAgICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmICgobyBpbnN0YW5jZW9mIEFycmF5KSAmJiBvWzBdID09IChvWzBdID4+PiAwKSAmJlxuICAgICAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDYsIDI0NCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbiAgZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkKG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZXNldF90b19sYXp5XG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eShvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjQ2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZWFkX3Jlc3VsdFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVhZF9yZXN1bHQobykge1xuICByZXR1cm4gKGNhbWxfb2JqX3RhZyhvKSA9PSAyNTApP29bMV06bztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAodCA9PSAyNDUpID8gMSA6IDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIChnbG9iYWxUaGlzLm5hdmlnYXRvciYmZ2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICAgP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX3NldChhKSB7XG4gIGNhbWxfZG9tYWluX2RscyA9IGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF94b3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmV3X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9seG1fbmV4dCh2KSB7XG4gIGZ1bmN0aW9uIHNoaWZ0X2woeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHhvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF94b3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfYWRkKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gbXVsKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHJvdGwoeCwgaykge1xuICAgIHJldHVybiBvcihzaGlmdF9sKHgsayksc2hpZnRfciAoeCwgNjQgLSBrKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KGEsIGkpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9nZXRfMShhLCBpKTtcbiAgfVxuICBmdW5jdGlvbiBzZXQoYSwgaSwgeCkge1xuICAgIHJldHVybiBjYW1sX2JhX3NldF8xKGEsIGksIHgpO1xuICB9XG4gIHZhciBNID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkMTM0MjU0M2RlODJlZjk1XCIpKTtcbiAgdmFyIGRhYmEgPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGRhYmEwYjZlYjA5MzIyZTNcIikpO1xuICB2YXIgeiwgcTAsIHExO1xuICB2YXIgc3QgPSB2O1xuICB2YXIgYSA9IGdldChzdCwwKTtcbiAgdmFyIHMgPSBnZXQoc3QsMSk7XG4gIHZhciB4MCA9IGdldChzdCwyKTtcbiAgdmFyIHgxID0gZ2V0KHN0LDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0geG9yKHosc2hpZnRfcih6LDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQgKG11bChzLE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDBcbiAgdmFyIHExID0geDFcbiAgcTEgPSB4b3IocTEscTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIChzaGlmdF9sKHExLDE2KSkpO1xuICBxMSA9IHJvdGwocTEsIDM3KTtcbiAgc2V0KHN0LCAyLCBxMCk7XG4gIHNldChzdCwgMywgcTEpO1xuICAvKiBSZXR1cm4gcmVzdWx0ICovXG4gIHJldHVybiB6O1xufVxuIiwiXG4vL1Byb3ZpZGVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xXG52YXIgenN0ZF9kZWNvbXByZXNzID0gKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuLy8gYWxpYXNlcyBmb3Igc2hvcnRlciBjb21wcmVzc2VkIGNvZGUgKG1vc3QgbWluaWZlcnMgZG9uJ3QgZG8gdGhpcylcbnZhciBhYiA9IEFycmF5QnVmZmVyLCB1OCA9IFVpbnQ4QXJyYXksIHUxNiA9IFVpbnQxNkFycmF5LCBpMTYgPSBJbnQxNkFycmF5LCB1MzIgPSBVaW50MzJBcnJheSwgaTMyID0gSW50MzJBcnJheTtcbnZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbn07XG52YXIgZmlsbCA9IGZ1bmN0aW9uICh2LCBuLCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5maWxsKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmZpbGwuY2FsbCh2LCBuLCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIGZvciAoOyBzIDwgZTsgKytzKVxuICAgICAgICB2W3NdID0gbjtcbiAgICByZXR1cm4gdjtcbn07XG52YXIgY3B3ID0gZnVuY3Rpb24gKHYsIHQsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmNvcHlXaXRoaW4pXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICAgIHZbdCsrXSA9IHZbcysrXTtcbiAgICB9XG59O1xuLyoqXG4gKiBDb2RlcyBmb3IgZXJyb3JzIGdlbmVyYXRlZCB3aXRoaW4gdGhpcyBsaWJyYXJ5XG4gKi9cbi8vIGVycm9yIGNvZGVzXG52YXIgZWMgPSBbXG4gICAgJ2ludmFsaWQgenN0ZCBkYXRhJyxcbiAgICAnd2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKScsXG4gICAgJ2ludmFsaWQgYmxvY2sgdHlwZScsXG4gICAgJ0ZTRSBhY2N1cmFjeSB0b28gaGlnaCcsXG4gICAgJ21hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjaycsXG4gICAgJ3VuZXhwZWN0ZWQgRU9GJ1xuXTtcbjtcbnZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KVxuICAgICAgICB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xufTtcbnZhciByYiA9IGZ1bmN0aW9uIChkLCBiLCBuKSB7XG4gICAgdmFyIGkgPSAwLCBvID0gMDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSlcbiAgICAgICAgbyB8PSBkW2IrK10gPDwgKGkgPDwgMyk7XG4gICAgcmV0dXJuIG87XG59O1xudmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHsgcmV0dXJuIChkW2JdIHwgKGRbYiArIDFdIDw8IDgpIHwgKGRbYiArIDJdIDw8IDE2KSB8IChkW2IgKyAzXSA8PCAyNCkpID4+PiAwOyB9O1xuLy8gcmVhZCBac3RhbmRhcmQgZnJhbWUgaGVhZGVyXG52YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09IDB4MkZCNTI4ICYmIGRhdFszXSA9PSAyNTMpIHtcbiAgICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICAgIHZhciBmbGcgPSBkYXRbNF07XG4gICAgICAgIC8vICAgIHNpbmdsZSBzZWdtZW50ICAgICAgIGNoZWNrc3VtICAgICAgICAgICAgIGRpY3QgZmxhZyAgICAgZnJhbWUgY29udGVudCBmbGFnXG4gICAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLCBjYyA9IChmbGcgPj4gMikgJiAxLCBkZiA9IGZsZyAmIDMsIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgICBpZiAoZmxnICYgOClcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gYnl0ZVxuICAgICAgICB2YXIgYnQgPSA2IC0gc3M7XG4gICAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgICAgdmFyIGRiID0gZGYgPT0gMyA/IDQgOiBkZjtcbiAgICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgICB2YXIgZGkgPSByYihkYXQsIGJ0LCBkYik7XG4gICAgICAgIGJ0ICs9IGRiO1xuICAgICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICAgIHZhciBmc2IgPSBmY2YgPyAoMSA8PCBmY2YpIDogc3M7XG4gICAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICAgIHZhciBmc3MgPSByYihkYXQsIGJ0LCBmc2IpICsgKChmY2YgPT0gMSkgJiYgMjU2KTtcbiAgICAgICAgLy8gd2luZG93IHNpemVcbiAgICAgICAgdmFyIHdzID0gZnNzO1xuICAgICAgICBpZiAoIXNzKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgdmFyIHdiID0gMSA8PCAoMTAgKyAoZGF0WzVdID4+IDMpKTtcbiAgICAgICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdzID4gMjE0NTM4NjQ5NilcbiAgICAgICAgICAgIGVycigxKTtcbiAgICAgICAgdmFyIGJ1ZiA9IG5ldyB1OCgodyA9PSAxID8gKGZzcyB8fCB3cykgOiB3ID8gMCA6IHdzKSArIDEyKTtcbiAgICAgICAgYnVmWzBdID0gMSwgYnVmWzRdID0gNCwgYnVmWzhdID0gODtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IGJ0ICsgZnNiLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGw6IDAsXG4gICAgICAgICAgICBkOiBkaSxcbiAgICAgICAgICAgIHc6ICh3ICYmIHcgIT0gMSkgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgICAgIGU6IHdzLFxuICAgICAgICAgICAgbzogbmV3IGkzMihidWYuYnVmZmVyLCAwLCAzKSxcbiAgICAgICAgICAgIHU6IGZzcyxcbiAgICAgICAgICAgIGM6IGNjLFxuICAgICAgICAgICAgbTogTWF0aC5taW4oMTMxMDcyLCB3cylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKChuMyA+PiA0KSB8IChkYXRbM10gPDwgMjApKSA9PSAweDE4NEQyQTUpIHtcbiAgICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICAgIHJldHVybiBiNChkYXQsIDQpICsgODtcbiAgICB9XG4gICAgZXJyKDApO1xufTtcbi8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZvciBub256ZXJvXG52YXIgbXNiID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBiaXRzID0gMDtcbiAgICBmb3IgKDsgKDEgPDwgYml0cykgPD0gdmFsOyArK2JpdHMpXG4gICAgICAgIDtcbiAgICByZXR1cm4gYml0cyAtIDE7XG59O1xuLy8gcmVhZCBmaW5pdGUgc3RhdGUgZW50cm9weVxudmFyIHJmc2UgPSBmdW5jdGlvbiAoZGF0LCBidCwgbWFsKSB7XG4gICAgLy8gdGFibGUgcG9zXG4gICAgdmFyIHRwb3MgPSAoYnQgPDwgMykgKyA0O1xuICAgIC8vIGFjY3VyYWN5IGxvZ1xuICAgIHZhciBhbCA9IChkYXRbYnRdICYgMTUpICsgNTtcbiAgICBpZiAoYWwgPiBtYWwpXG4gICAgICAgIGVycigzKTtcbiAgICAvLyBzaXplXG4gICAgdmFyIHN6ID0gMSA8PCBhbDtcbiAgICAvLyBwcm9iYWJpbGl0aWVzIHN5bWJvbHMgIHJlcGVhdCAgIGluZGV4ICAgaGlnaCB0aHJlc2hvbGRcbiAgICB2YXIgcHJvYnMgPSBzeiwgc3ltID0gLTEsIHJlID0gLTEsIGkgPSAtMSwgaHQgPSBzejtcbiAgICAvLyBvcHRpbWl6YXRpb246IHNpbmdsZSBhbGxvY2F0aW9uIGlzIG11Y2ggZmFzdGVyXG4gICAgdmFyIGJ1ZiA9IG5ldyBhYig1MTIgKyAoc3ogPDwgMikpO1xuICAgIHZhciBmcmVxID0gbmV3IGkxNihidWYsIDAsIDI1Nik7XG4gICAgLy8gc2FtZSB2aWV3IGFzIGZyZXFcbiAgICB2YXIgZHN0YXRlID0gbmV3IHUxNihidWYsIDAsIDI1Nik7XG4gICAgdmFyIG5zdGF0ZSA9IG5ldyB1MTYoYnVmLCA1MTIsIHN6KTtcbiAgICB2YXIgYmIxID0gNTEyICsgKHN6IDw8IDEpO1xuICAgIHZhciBzeW1zID0gbmV3IHU4KGJ1ZiwgYmIxLCBzeik7XG4gICAgdmFyIG5iaXRzID0gbmV3IHU4KGJ1ZiwgYmIxICsgc3opO1xuICAgIHdoaWxlIChzeW0gPCAyNTUgJiYgcHJvYnMgPiAwKSB7XG4gICAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICAgIHZhciBjYnQgPSB0cG9zID4+IDM7XG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgICAgdmFyIHZhbCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+ICh0cG9zICYgNykpICYgbXNrO1xuICAgICAgICAvLyBtYXNrICgxIGZld2VyIGJpdClcbiAgICAgICAgdmFyIG1zazFmYiA9ICgxIDw8IGJpdHMpIC0gMTtcbiAgICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBtc3YgPSBtc2sgLSBwcm9icyAtIDE7XG4gICAgICAgIC8vIHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgICBpZiAoc3ZhbCA8IG1zdilcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cywgdmFsID0gc3ZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cG9zICs9IGJpdHMgKyAxO1xuICAgICAgICAgICAgaWYgKHZhbCA+IG1zazFmYilcbiAgICAgICAgICAgICAgICB2YWwgLT0gbXN2O1xuICAgICAgICB9XG4gICAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICAgIGlmICh2YWwgPT0gLTEpIHtcbiAgICAgICAgICAgIHByb2JzICs9IHZhbDtcbiAgICAgICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvYnMgLT0gdmFsO1xuICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJlID09IDMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzeW0gPiAyNTUgfHwgcHJvYnMpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3ltcG9zID0gMDtcbiAgICAvLyBzeW0gc3RlcCAoY29wcmltZSB3aXRoIHN6IC0gZm9ybXVsYSBmcm9tIHpzdGQgc291cmNlKVxuICAgIHZhciBzc3RlcCA9IChzeiA+PiAxKSArIChzeiA+PiAzKSArIDM7XG4gICAgLy8gc3ltIG1hc2tcbiAgICB2YXIgc21hc2sgPSBzeiAtIDE7XG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPD0gc3ltOyArK3MpIHtcbiAgICAgICAgdmFyIHNmID0gZnJlcVtzXTtcbiAgICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICAgICAgZHN0YXRlW3NdID0gLXNmO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZjsgKytpKSB7XG4gICAgICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHN5bXBvcyA9IChzeW1wb3MgKyBzc3RlcCkgJiBzbWFzaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHN5bXBvcyA+PSBodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgc3ByZWFkaW5nIHN5bWJvbHMsIHNob3VsZCBiZSB6ZXJvIGFnYWluXG4gICAgaWYgKHN5bXBvcylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzejsgKytpKSB7XG4gICAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgICAgdmFyIG5zID0gZHN0YXRlW3N5bXNbaV1dKys7XG4gICAgICAgIC8vIG51bSBiaXRzXG4gICAgICAgIHZhciBuYiA9IG5iaXRzW2ldID0gYWwgLSBtc2IobnMpO1xuICAgICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbKHRwb3MgKyA3KSA+PiAzLCB7XG4gICAgICAgICAgICBiOiBhbCxcbiAgICAgICAgICAgIHM6IHN5bXMsXG4gICAgICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgICAgIHQ6IG5zdGF0ZVxuICAgICAgICB9XTtcbn07XG4vLyByZWFkIGh1ZmZtYW5cbnZhciByaHUgPSBmdW5jdGlvbiAoZGF0LCBidCkge1xuICAgIC8vICBpbmRleCAgd2VpZ2h0IGNvdW50XG4gICAgdmFyIGkgPSAwLCB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSwgaGIgPSBkYXRbYnRdO1xuICAgIC8vIGh1ZmZtYW4gd2VpZ2h0c1xuICAgIHZhciBodyA9IGJ1Zi5zdWJhcnJheSgwLCAyNTYpO1xuICAgIC8vIHJhbmsgY291bnRcbiAgICB2YXIgcmMgPSBidWYuc3ViYXJyYXkoMjU2LCAyNjgpO1xuICAgIC8vIHJhbmsgaW5kZXhcbiAgICB2YXIgcmkgPSBuZXcgdTE2KGJ1Zi5idWZmZXIsIDI2OCk7XG4gICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCBidCBpcyAxIGxlc3MgdGhhbiBleHBlY3RlZFxuICAgIGlmIChoYiA8IDEyOCkge1xuICAgICAgICAvLyBlbmQgYnl0ZSwgZnNlIGRlY29kZSB0YWJsZVxuICAgICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSwgZWJ0ID0gX2FbMF0sIGZkdCA9IF9hWzFdO1xuICAgICAgICBidCArPSBoYjtcbiAgICAgICAgdmFyIGVwb3MgPSBlYnQgPDwgMztcbiAgICAgICAgLy8gbGFzdCBieXRlXG4gICAgICAgIHZhciBsYiA9IGRhdFtidF07XG4gICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vICBzdGF0ZTEgICBzdGF0ZTIgICBzdGF0ZTEgYml0cyAgIHN0YXRlMiBiaXRzXG4gICAgICAgIHZhciBzdDEgPSAwLCBzdDIgPSAwLCBidHIxID0gZmR0LmIsIGJ0cjIgPSBidHIxO1xuICAgICAgICAvLyBmc2UgcG9zXG4gICAgICAgIC8vIHByZS1pbmNyZW1lbnQgdG8gYWNjb3VudCBmb3Igb3JpZ2luYWwgZGVmaWNpdCBvZiAxXG4gICAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdmFyIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MSArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QxXTtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMjtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MiArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMikgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgICAgIGJ0cjEgPSBmZHQubltzdDFdO1xuICAgICAgICAgICAgc3QxID0gZmR0LnRbc3QxXTtcbiAgICAgICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICAgICAgc3QyID0gZmR0LnRbc3QyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKyt3YyA+IDI1NSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdjID0gaGIgLSAxMjc7XG4gICAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRbKytidF07XG4gICAgICAgICAgICBod1tpXSA9IGJ5dGUgPj4gNDtcbiAgICAgICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgIH1cbiAgICAvLyB3ZWlnaHQgZXhwb25lbnRpYWwgc3VtXG4gICAgdmFyIHdlcyA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgIC8vIGJpdHMgbXVzdCBiZSBhdCBtb3N0IDExLCBzYW1lIGFzIHdlaWdodFxuICAgICAgICBpZiAod3QgPiAxMSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgd2VzICs9IHd0ICYmICgxIDw8ICh3dCAtIDEpKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKVxuICAgICAgICBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgICsrcmNbaHdbaV0gPSB3dCAmJiAobWIgKyAxIC0gd3QpXTtcbiAgICB9XG4gICAgLy8gaHVmIGJ1ZlxuICAgIHZhciBoYnVmID0gbmV3IHU4KHRzIDw8IDEpO1xuICAgIC8vICAgIHN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgbnVtIGJpdHNcbiAgICB2YXIgc3ltcyA9IGhidWYuc3ViYXJyYXkoMCwgdHMpLCBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHB2ID0gcmlbaV07XG4gICAgICAgIGZpbGwobmIsIGksIHB2LCByaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKTtcbiAgICB9XG4gICAgaWYgKHJpWzBdICE9IHRzKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgICAgaWYgKGJpdHMpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgICAgICBmaWxsKHN5bXMsIGksIGNvZGUsIHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtidCwge1xuICAgICAgICAgICAgbjogbmIsXG4gICAgICAgICAgICBiOiBtYixcbiAgICAgICAgICAgIHM6IHN5bXNcbiAgICAgICAgfV07XG59O1xuLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTAxYXJyb3d6L2E5Nzk0NTJkNDM1NTk5MmNiZjhmMjU3Y2JmZmM5ZWRkXG4vLyBkZWZhdWx0IGxpdGVyYWwgbGVuZ3RoIHRhYmxlXG52YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgODEsIDE2LCA5OSwgMTQwLCA0OSwgMTk4LCAyNCwgOTksIDEyLCAzMywgMTk2LCAyNCwgOTksIDEwMiwgMTAyLCAxMzQsIDcwLCAxNDYsIDRcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgbWF0Y2ggbGVuZ3RoIHRhYmxlXG52YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzMsIDIwLCAxOTYsIDI0LCA5OSwgMTQwLCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDlcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgb2Zmc2V0IGNvZGUgdGFibGVcbnZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXG5dKSwgMCwgNSlbMV07XG4vLyBiaXRzIHRvIGJhc2VsaW5lXG52YXIgYjJibCA9IGZ1bmN0aW9uIChiLCBzKSB7XG4gICAgdmFyIGxlbiA9IGIubGVuZ3RoLCBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGJsW2ldID0gcztcbiAgICAgICAgcyArPSAxIDw8IGJbaV07XG4gICAgfVxuICAgIHJldHVybiBibDtcbn07XG4vLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG52YXIgbGxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTNcbl0pKS5idWZmZXIsIDAsIDM2KTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG52YXIgbGxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobGxiLCAwKTtcbi8vIG1hdGNoIGxlbmd0aCBiaXRzXG52YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDExNzc2OTIyMCwgMTg1MjA3MDQ4LCAyNTI1NzkwODQsIDE2XG5dKSkuYnVmZmVyLCAwLCA1Myk7XG4vLyBtYXRjaCBsZW5ndGggYmFzZWxpbmVcbnZhciBtbGJsID0gLyojX19QVVJFX18gKi8gYjJibChtbGIsIDMpO1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG52YXIgZGh1ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBsZW4gPSBkYXQubGVuZ3RoLCBzcyA9IG91dC5sZW5ndGgsIGxiID0gZGF0W2xlbiAtIDFdLCBtc2sgPSAoMSA8PCBodS5iKSAtIDEsIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYilcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsIGJ0ciA9IGh1LmIsIHBvcyA9IChsZW4gPDwgMykgLSA4ICsgbXNiKGxiKSAtIGJ0ciwgaSA9IC0xO1xuICAgIGZvciAoOyBwb3MgPiBlYiAmJiBpIDwgc3M7KSB7XG4gICAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgICAgdmFyIHZhbCA9IChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHBvcyAmIDcpO1xuICAgICAgICBzdCA9ICgoc3QgPDwgYnRyKSB8IHZhbCkgJiBtc2s7XG4gICAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICAgIHBvcyAtPSAoYnRyID0gaHUubltzdF0pO1xuICAgIH1cbiAgICBpZiAocG9zICE9IGViIHx8IGkgKyAxICE9IHNzKVxuICAgICAgICBlcnIoMCk7XG59O1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtIDR4XG4vLyBUT0RPOiB1c2Ugd29ya2VycyB0byBwYXJhbGxlbGl6ZVxudmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLCBzejEgPSAoc3MgKyAzKSA+PiAyLCBzejIgPSBzejEgPDwgMSwgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoMCwgc3oxKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFsyXSB8IChkYXRbM10gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzRdIHwgKGRhdFs1XSA8PCA4KSksIG91dC5zdWJhcnJheShzejIsIHN6MyksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbn07XG4vLyByZWFkIFpzdGFuZGFyZCBibG9ja1xudmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLCBidHlwZSA9IChiMCA+PiAxKSAmIDM7XG4gICAgc3QubCA9IGIwICYgMTtcbiAgICB2YXIgc3ogPSAoYjAgPj4gMykgfCAoZGF0W2J0ICsgMV0gPDwgNSkgfCAoZGF0W2J0ICsgMl0gPDwgMTMpO1xuICAgIC8vIGVuZCBieXRlIGZvciBibG9ja1xuICAgIHZhciBlYnQgPSAoYnQgKz0gMykgKyBzejtcbiAgICBpZiAoYnR5cGUgPT0gMSkge1xuICAgICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIHN0LnkgKz0gc3opO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT0gMCkge1xuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBvdXQuc2V0KGRhdC5zdWJhcnJheShidCwgZWJ0KSwgc3QueSk7XG4gICAgICAgICAgICBzdC55ICs9IHN6O1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xjKGRhdCwgYnQsIGVidCk7XG4gICAgfVxuICAgIGlmIChidHlwZSA9PSAyKSB7XG4gICAgICAgIC8vICAgIGJ5dGUgMyAgICAgICAgbGl0IGJ0eXBlICAgICBzaXplIGZvcm1hdFxuICAgICAgICB2YXIgYjMgPSBkYXRbYnRdLCBsYnQgPSBiMyAmIDMsIHNmID0gKGIzID4+IDIpICYgMztcbiAgICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgICB2YXIgbHNzID0gYjMgPj4gNCwgbGNzID0gMCwgczQgPSAwO1xuICAgICAgICBpZiAobGJ0IDwgMikge1xuICAgICAgICAgICAgaWYgKHNmICYgMSlcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoc2YgJiAyKSAmJiAoZGF0WysrYnRdIDw8IDEyKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzID0gYjMgPj4gMztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gc2Y7XG4gICAgICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2YgPT0gMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgMykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiAyKSB8IChkYXRbKytidF0gPDwgNik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDYzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKSB8IChkYXRbKytidF0gPDwgMTApO1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgICB2YXIgYnVmID0gb3V0ID8gb3V0LnN1YmFycmF5KHN0LnksIHN0LnkgKyBzdC5tKSA6IG5ldyB1OChzdC5tKTtcbiAgICAgICAgLy8gc3RhcnRpbmcgcG9pbnQgZm9yIGxpdGVyYWxzXG4gICAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgICBpZiAobGJ0ID09IDApXG4gICAgICAgICAgICBidWYuc2V0KGRhdC5zdWJhcnJheShidCwgYnQgKz0gbHNzKSwgc3BsKTtcbiAgICAgICAgZWxzZSBpZiAobGJ0ID09IDEpXG4gICAgICAgICAgICBmaWxsKGJ1ZiwgZGF0W2J0KytdLCBzcGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGh1ZmZtYW4gdGFibGVcbiAgICAgICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgICAgICBpZiAobGJ0ID09IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWh1KVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIChzNCA/IGRodTQgOiBkaHUpKGRhdC5zdWJhcnJheShidCwgYnQgKz0gbGNzKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBudW0gc2VxdWVuY2VzXG4gICAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgICBpZiAobnMgPT0gMjU1KVxuICAgICAgICAgICAgICAgIG5zID0gKGRhdFtidCsrXSB8IChkYXRbYnQrK10gPDwgOCkpICsgMHg3RjAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobnMgPiAxMjcpXG4gICAgICAgICAgICAgICAgbnMgPSAoKG5zIC0gMTI4KSA8PCA4KSB8IGRhdFtidCsrXTtcbiAgICAgICAgICAgIC8vIHN5bWJvbCBjb21wcmVzc2lvbiBtb2Rlc1xuICAgICAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgICAgIGlmIChzY20gJiAzKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBkdHMgPSBbZG1sdCwgZG9jdCwgZGxsdF07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMjsgaSA+IC0xOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWQgPSAoc2NtID4+ICgoaSA8PCAxKSArIDIpKSAmIDM7XG4gICAgICAgICAgICAgICAgaWYgKG1kID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgICAgICAgICB2YXIgcmJ1ZiA9IG5ldyB1OChbMCwgMCwgZGF0W2J0KytdXSk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM6IHJidWYuc3ViYXJyYXkoMiwgMyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdDogbmV3IHUxNihyYnVmLmJ1ZmZlciwgMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiOiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICBfYSA9IHJmc2UoZGF0LCBidCwgOSAtIChpICYgMSkpLCBidCA9IF9hWzBdLCBkdHNbaV0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0LnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHN0LnRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9iID0gc3QudCA9IGR0cywgbWx0ID0gX2JbMF0sIG9jdCA9IF9iWzFdLCBsbHQgPSBfYlsyXTtcbiAgICAgICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIHNwb3MgPSAoZWJ0IDw8IDMpIC0gOCArIG1zYihsYikgLSBsbHQuYiwgY2J0ID0gc3BvcyA+PiAzLCBvdWJ0ID0gMDtcbiAgICAgICAgICAgIHZhciBsc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGx0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBvc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2N0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBtc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWx0LmIpIC0gMSk7XG4gICAgICAgICAgICBmb3IgKCsrbnM7IC0tbnM7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGxsYyA9IGxsdC5zW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIGxidHIgPSBsbHQubltsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtbGMgPSBtbHQuc1ttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtYnRyID0gbWx0Lm5bbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2ZjID0gb2N0LnNbb3N0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2J0ciA9IG9jdC5uW29zdF07XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2ZjKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBvZnAgPSAxIDw8IG9mYztcbiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb2ZwICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikgfCAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+IChzcG9zICYgNykpICYgKG9mcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbWwgPSBtbGJsW21sY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWxiW21sY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxsYltsbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBsbCA9IGxsYmxbbGxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbGJbbGxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBsc3QgPSBsbHQudFtsc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG1zdCA9IG1sdC50W21zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgb3N0ID0gb2N0LnRbb3N0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2J0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZiA+IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmIC09IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9IDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBpZHggPT0gMyA/IHN0Lm9bMF0gLSAxIDogc3Qub1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbGwsIHNwbCArPSBsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RpbiA9IG91YnQgLSBvZmY7XG4gICAgICAgICAgICAgICAgaWYgKHN0aW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJzID0gc3QuZSArIHN0aW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IG1sO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gc3Qud1ticyArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91YnQgKz0gbGVuLCBtbCAtPSBsZW4sIHN0aW4gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzdGluICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3VidCAhPSBzcGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCsrXSA9IGJ1ZltzcGwrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICBzdC55ICs9IG91YnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzczsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcGwpXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgICAgfVxuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG59O1xuLy8gY29uY2F0XG52YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09IDEpXG4gICAgICAgIHJldHVybiBidWZzWzBdO1xuICAgIHZhciBidWYgPSBuZXcgdTgob2wpO1xuICAgIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoayA9IGJ1ZnNbaV07XG4gICAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgICAgYiArPSBjaGsubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufTtcbi8qKlxuICogRGVjb21wcmVzc2VzIFpzdGFuZGFyZCBkYXRhXG4gKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gKiBAcGFyYW0gYnVmIFRoZSBvdXRwdXQgYnVmZmVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGVcbiAqICAgICAgICAgICAgZXhhY3RseSBlbm91Z2ggbWVtb3J5IHRvIGZpdCB0aGUgZGVjb21wcmVzc2VkIGRhdGEuIElmIHlvdXJcbiAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAqICAgICAgICAgICAgaXQgd2lsbCB5aWVsZCBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGVjb21wcmVzc2VkIGRhdGFcbiAqL1xucmV0dXJuIGZ1bmN0aW9uIGRlY29tcHJlc3MoZGF0LCBidWYpIHtcbiAgICB2YXIgYnQgPSAwLCBidWZzID0gW10sIG5iID0gKyFidWYsIG9sID0gMDtcbiAgICBmb3IgKDsgZGF0Lmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHN0ID0gcnpmaChkYXQsIG5iIHx8IGJ1Zik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3QgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChuYikge1xuICAgICAgICAgICAgICAgIGJ1ZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHN0LncubGVuZ3RoID09IHN0LnUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1ZiA9IHN0LncpO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBzdC51O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIHN0LmUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7ICFzdC5sOykge1xuICAgICAgICAgICAgICAgIHZhciBibGsgPSByemIoZGF0LCBzdCwgYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWJsaylcbiAgICAgICAgICAgICAgICAgICAgZXJyKDUpO1xuICAgICAgICAgICAgICAgIGlmIChidWYpXG4gICAgICAgICAgICAgICAgICAgIHN0LmUgPSBzdC55O1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gYmxrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY3B3KHN0LncsIDAsIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnQgPSBzdC5iICsgKHN0LmMgKiA0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidCA9IHN0O1xuICAgICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbn1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMFxuLy9WZXJzaW9uOiA8IDUuMS4xXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMVxuLy9WZXJzaW9uOiA8IDUuMi4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUodW5pdCkge1xuICBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG4gIHJldHVybiAxXG59XG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFydG91dCwgSU5SSUEgUGFyaXMtU2FjbGF5ICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDYW1saW50ZXJuYWxBdG9taWMgaXMgYSBkZXBlbmRlbmN5IG9mIFN0ZGxpYiwgc28gaXQgaXMgY29tcGlsZWQgd2l0aFxuICAgLW5vcGVydmFzaXZlcy4gKilcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBXZSBhcmUgbm90IHJldXNpbmcgKCdhIHJlZikgZGlyZWN0bHkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmVhc29uXG4gICBhYm91dCBhdG9taWNpdHkgaWYgd2Ugd2lzaCB0bzogZXZlbiBpbiBhIHNlcXVlbnRpYWwgaW1wbGVtZW50YXRpb24sXG4gICBzaWduYWxzIGFuZCBvdGhlciBhc3luY2hyb25vdXMgY2FsbGJhY2tzIG1pZ2h0IGJyZWFrIGF0b21pY2l0eS4gKilcbnR5cGUgJ2EgdCA9IHttdXRhYmxlIHY6ICdhfVxuXG5sZXQgbWFrZSB2ID0ge3Z9XG5sZXQgZ2V0IHIgPSByLnZcbmxldCBzZXQgciB2ID0gci52IDwtIHZcblxuKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHNldCB0byBuZXZlciBiZSBpbmxpbmVkOiBGbGFtYmRhIGlzXG4gICBhbGxvd2VkIHRvIG1vdmUgc3Vycm91bmRpbmcgY29kZSBpbnNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24sXG4gICBpbmNsdWRpbmcgYWxsb2NhdGlvbnMuICopXG5cbmxldFtAaW5saW5lIG5ldmVyXSBleGNoYW5nZSByIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gdjtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGNvbXBhcmVfYW5kX3NldCByIHNlZW4gdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIGlmIGN1ciA9PSBzZWVuIHRoZW4gKFxuICAgIHIudiA8LSB2O1xuICAgICgqIEVORCBBVE9NSUMgKilcbiAgICB0cnVlXG4gICkgZWxzZVxuICAgIGZhbHNlXG5cbmxldFtAaW5saW5lIG5ldmVyXSBmZXRjaF9hbmRfYWRkIHIgbiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSAoY3VyICsgbik7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldCBpbmNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAxKVxubGV0IGRlY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByICgtMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4Y2VwdGlvbnMgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICAoKiBmb3IgcnVudGltZS9mYWlsX25hdC5jICopXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5hcnJheV9ib3VuZF9lcnJvclwiXG4gICAgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxuXG5sZXQgZmFpbHdpdGggcyA9IHJhaXNlKEZhaWx1cmUgcylcbmxldCBpbnZhbGlkX2FyZyBzID0gcmFpc2UoSW52YWxpZF9hcmd1bWVudCBzKVxuXG5leGNlcHRpb24gRXhpdFxuZXhjZXB0aW9uIE1hdGNoX2ZhaWx1cmUgPSBNYXRjaF9mYWlsdXJlXG5leGNlcHRpb24gQXNzZXJ0X2ZhaWx1cmUgPSBBc3NlcnRfZmFpbHVyZVxuZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgPSBJbnZhbGlkX2FyZ3VtZW50XG5leGNlcHRpb24gRmFpbHVyZSA9IEZhaWx1cmVcbmV4Y2VwdGlvbiBOb3RfZm91bmQgPSBOb3RfZm91bmRcbmV4Y2VwdGlvbiBPdXRfb2ZfbWVtb3J5ID0gT3V0X29mX21lbW9yeVxuZXhjZXB0aW9uIFN0YWNrX292ZXJmbG93ID0gU3RhY2tfb3ZlcmZsb3dcbmV4Y2VwdGlvbiBTeXNfZXJyb3IgPSBTeXNfZXJyb3JcbmV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSA9IEVuZF9vZl9maWxlXG5leGNlcHRpb24gRGl2aXNpb25fYnlfemVybyA9IERpdmlzaW9uX2J5X3plcm9cbmV4Y2VwdGlvbiBTeXNfYmxvY2tlZF9pbyA9IFN5c19ibG9ja2VkX2lvXG5leGNlcHRpb24gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuXG4oKiBDb21wb3NpdGlvbiBvcGVyYXRvcnMgKilcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbigqIERlYnVnZ2luZyAqKVxuXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19GVU5DVElPTl9fIDogc3RyaW5nID0gXCIlbG9jX0ZVTkNUSU9OXCJcblxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcblxuKCogQ29tcGFyaXNvbnMgKilcblxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbmxldCBtaW4geCB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5cbigqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5cbigqIEludGVnZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcblxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5cbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbmxldCBsbm90IHggPSB4IGx4b3IgKC0xKVxuXG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5cbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuXG4oKiBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBpbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuZWdfaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4RkZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmFuID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IG1heF9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9FRl9GRl9GRl9GRl9GRl9GRl9GRkxcbmxldCBtaW5fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4MDBfMTBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgZXBzaWxvbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgzQ19CMF8wMF8wMF8wMF8wMF8wMF8wMExcblxudHlwZSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbigqIFN0cmluZyBhbmQgYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlcyBTdHJpbmcgYW5kIEJ5dGVzICopXG5cbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19sZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBzdHJpbmdfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc19ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc191bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0ICggXiApIHMxIHMyID1cbiAgbGV0IGwxID0gc3RyaW5nX2xlbmd0aCBzMSBhbmQgbDIgPSBzdHJpbmdfbGVuZ3RoIHMyIGluXG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIChsMSArIGwyKSBpblxuICBzdHJpbmdfYmxpdCBzMSAwIHMgMCBsMTtcbiAgc3RyaW5nX2JsaXQgczIgMCBzIGwxIGwyO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgQ2hhciAqKVxuXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NoYXJfb2ZfaW50IDogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcImNoYXJfb2ZfaW50XCIgZWxzZSB1bnNhZmVfY2hhcl9vZl9pbnQgblxuXG4oKiBVbml0IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxuXG4oKiBSZWZlcmVuY2VzICopXG5cbnR5cGUgJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxuXG4oKiBSZXN1bHQgdHlwZSAqKVxuXG50eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG4oKiBTdHJpbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG5sZXQgc3RyaW5nX29mX2Jvb2wgYiA9XG4gIGlmIGIgdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIlxubGV0IGJvb2xfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcImJvb2xfb2Zfc3RyaW5nXCJcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcblxubGV0IHN0cmluZ19vZl9pbnQgbiA9XG4gIGZvcm1hdF9pbnQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIHN0cmluZ19nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gc3RyaW5nX2xlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGwgdGhlbiBzIF4gXCIuXCIgZWxzZVxuICAgIG1hdGNoIHN0cmluZ19nZXQgcyBpIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgfCBfIC0+IHNcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzdHJpbmdfb2ZfZmxvYXQgZiA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIGYpXG5cbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuKCogTGlzdCBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIExpc3QgKilcblxubGV0IHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGhkIDo6IHRsIC0+IGhkIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBDYW1saW50ZXJuYWxBdG9taWMubWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICBsZXQgbW9kdWxlIEF0b21pYyA9IENhbWxpbnRlcm5hbEF0b21pYyBpblxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IEF0b21pYy5tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgQXRvbWljLmNvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19hdF9leGl0ICgpID0gKENhbWxpbnRlcm5hbEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCA6IHVuaXQgLT4gYm9vbFxuICA9IFwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZFwiXG5sZXQgKCkgPSBpZiBuYWtlZF9wb2ludGVyc19jaGVja2VkICgpIHRoZW4gYXRfZXhpdCBtYWpvclxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICA9IENvbXBsZXhcbm1vZHVsZSBEaWdlc3QgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgPSBFcGhlbWVyb25cbm1vZHVsZSBGaWxlbmFtZSAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgID0gRm9ybWF0XG5tb2R1bGUgRnVuICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgID0gR2Ncbm1vZHVsZSBHZW5sZXggICAgICAgPSBHZW5sZXhcbm1vZHVsZSBIYXNodGJsICAgICAgPSBIYXNodGJsXG5tb2R1bGUgSW50ICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTmF0aXZlaW50ICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgPSBPcHRpb25cbm1vZHVsZSBQYXJzaW5nICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUGVydmFzaXZlcyAgID0gUGVydmFzaXZlc1xubW9kdWxlIFByaW50ZXhjICAgICA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgID0gUXVldWVcbm1vZHVsZSBSYW5kb20gICAgICAgPSBSYW5kb21cbm1vZHVsZSBSZXN1bHQgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgPSBTY2FuZlxubW9kdWxlIFNlcSAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICA9IFNldFxubW9kdWxlIFN0YWNrICAgICAgICA9IFN0YWNrXG5tb2R1bGUgU3RkTGFiZWxzICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyZWFtICAgICAgID0gU3RyZWFtXG5tb2R1bGUgU3RyaW5nICAgICAgID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nTGFiZWxzID0gU3RyaW5nTGFiZWxzXG5tb2R1bGUgU3lzICAgICAgICAgID0gU3lzXG5tb2R1bGUgVWNoYXIgICAgICAgID0gVWNoYXJcbm1vZHVsZSBVbml0ICAgICAgICAgPSBVbml0XG5tb2R1bGUgV2VhayAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBKYW5lIFN0cmVldCBHcm91cCBMTEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogQGRlcHJlY2F0ZWQgVXNlIHshU3RkbGlifSAqKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcbmxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG5sZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuZXhjZXB0aW9uIEV4aXRcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IG1pbiA9IG1pblxubGV0IG1heCA9IG1heFxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKCYmKSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICh8fCkgaW5zdGVhZC5cIl1cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmxldCBhYnMgPSBhYnNcbmxldCBtYXhfaW50ID0gbWF4X2ludFxubGV0IG1pbl9pbnQgPSBtaW5faW50XG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxub3QgPSBsbm90XG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxubGV0IGluZmluaXR5ID0gaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBuZWdfaW5maW5pdHlcbmxldCBuYW4gPSBuYW5cbmxldCBtYXhfZmxvYXQgPSBtYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBtaW5fZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gZXBzaWxvbl9mbG9hdFxudHlwZSBub25yZWMgZnBjbGFzcyA9IGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmxldCAoIF4gKSA9ICggXiApXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50ID0gY2hhcl9vZl9pbnRcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxubGV0IHN0cmluZ19vZl9ib29sID0gc3RyaW5nX29mX2Jvb2xcbmxldCBib29sX29mX3N0cmluZyA9IGJvb2xfb2Zfc3RyaW5nXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gYm9vbF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2ludCA9IHN0cmluZ19vZl9pbnRcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IGludF9vZl9zdHJpbmdfb3B0ID0gaW50X29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfZmxvYXQgPSBzdHJpbmdfb2ZfZmxvYXRcbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgPSBmbG9hdF9vZl9zdHJpbmdfb3B0XG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxubGV0ICggQCApICA9ICggQCApXG50eXBlIG5vbnJlYyBpbl9jaGFubmVsID0gaW5fY2hhbm5lbFxudHlwZSBub25yZWMgb3V0X2NoYW5uZWwgPSBvdXRfY2hhbm5lbFxubGV0IHN0ZGluID0gc3RkaW5cbmxldCBzdGRvdXQgPSBzdGRvdXRcbmxldCBzdGRlcnIgPSBzdGRlcnJcbmxldCBwcmludF9jaGFyID0gcHJpbnRfY2hhclxubGV0IHByaW50X3N0cmluZyA9IHByaW50X3N0cmluZ1xubGV0IHByaW50X2J5dGVzID0gcHJpbnRfYnl0ZXNcbmxldCBwcmludF9pbnQgPSBwcmludF9pbnRcbmxldCBwcmludF9mbG9hdCA9IHByaW50X2Zsb2F0XG5sZXQgcHJpbnRfZW5kbGluZSA9IHByaW50X2VuZGxpbmVcbmxldCBwcmludF9uZXdsaW5lID0gcHJpbnRfbmV3bGluZVxubGV0IHByZXJyX2NoYXIgPSBwcmVycl9jaGFyXG5sZXQgcHJlcnJfc3RyaW5nID0gcHJlcnJfc3RyaW5nXG5sZXQgcHJlcnJfYnl0ZXMgPSBwcmVycl9ieXRlc1xubGV0IHByZXJyX2ludCA9IHByZXJyX2ludFxubGV0IHByZXJyX2Zsb2F0ID0gcHJlcnJfZmxvYXRcbmxldCBwcmVycl9lbmRsaW5lID0gcHJlcnJfZW5kbGluZVxubGV0IHByZXJyX25ld2xpbmUgPSBwcmVycl9uZXdsaW5lXG5sZXQgcmVhZF9saW5lID0gcmVhZF9saW5lXG5sZXQgcmVhZF9pbnQgPSByZWFkX2ludFxubGV0IHJlYWRfaW50X29wdCA9IHJlYWRfaW50X29wdFxubGV0IHJlYWRfZmxvYXQgPSByZWFkX2Zsb2F0XG5sZXQgcmVhZF9mbG9hdF9vcHQgPSByZWFkX2Zsb2F0X29wdFxudHlwZSBub25yZWMgb3Blbl9mbGFnID0gb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xubGV0IG9wZW5fb3V0ID0gb3Blbl9vdXRcbmxldCBvcGVuX291dF9iaW4gPSBvcGVuX291dF9iaW5cbmxldCBvcGVuX291dF9nZW4gPSBvcGVuX291dF9nZW5cbmxldCBmbHVzaCA9IGZsdXNoXG5sZXQgZmx1c2hfYWxsID0gZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBvdXRwdXRfY2hhclxubGV0IG91dHB1dF9zdHJpbmcgPSBvdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gb3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0ID0gb3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IG91dHB1dF9zdWJzdHJpbmdcbmxldCBvdXRwdXRfYnl0ZSA9IG91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X2JpbmFyeV9pbnQgPSBvdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF92YWx1ZSA9IG91dHB1dF92YWx1ZVxubGV0IHNlZWtfb3V0ID0gc2Vla19vdXRcbmxldCBwb3Nfb3V0ID0gcG9zX291dFxubGV0IG91dF9jaGFubmVsX2xlbmd0aCA9IG91dF9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlX291dCA9IGNsb3NlX291dFxubGV0IGNsb3NlX291dF9ub2VyciA9IGNsb3NlX291dF9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9vdXQgPSBzZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgb3Blbl9pbiA9IG9wZW5faW5cbmxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fYmluXG5sZXQgb3Blbl9pbl9nZW4gPSBvcGVuX2luX2dlblxubGV0IGlucHV0X2NoYXIgPSBpbnB1dF9jaGFyXG5sZXQgaW5wdXRfbGluZSA9IGlucHV0X2xpbmVcbmxldCBpbnB1dCA9IGlucHV0XG5sZXQgcmVhbGx5X2lucHV0ID0gcmVhbGx5X2lucHV0XG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJpbmdcbmxldCBpbnB1dF9ieXRlID0gaW5wdXRfYnl0ZVxubGV0IGlucHV0X2JpbmFyeV9pbnQgPSBpbnB1dF9iaW5hcnlfaW50XG5sZXQgaW5wdXRfdmFsdWUgPSBpbnB1dF92YWx1ZVxubGV0IHNlZWtfaW4gPSBzZWVrX2luXG5sZXQgcG9zX2luID0gcG9zX2luXG5sZXQgaW5fY2hhbm5lbF9sZW5ndGggPSBpbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlX2luID0gY2xvc2VfaW5cbmxldCBjbG9zZV9pbl9ub2VyciA9IGNsb3NlX2luX25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX2luID0gc2V0X2JpbmFyeV9tb2RlX2luXG5tb2R1bGUgTGFyZ2VGaWxlID0gTGFyZ2VGaWxlXG50eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG50eXBlIG5vbnJlYyAoJ2EsJ2IpIHJlc3VsdCA9ICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5sZXQgc3RyaW5nX29mX2Zvcm1hdCA9IHN0cmluZ19vZl9mb3JtYXRcbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcbmxldCAoIF5eICkgPSAoIF5eIClcbmxldCBleGl0ID0gZXhpdFxubGV0IGF0X2V4aXQgPSBhdF9leGl0XG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gPSB2YWxpZF9mbG9hdF9sZXhlbVxubGV0IGRvX2F0X2V4aXQgPSBkb19hdF9leGl0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIGxldCByZWMgYXV4IGYgYWNjIHNlcSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBhdXggZiBhY2Mgc2VxXG5cbmxldCBpdGVyIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggc2VxID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBhdXggbmV4dFxuICBpblxuICBhdXggc2VxXG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+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+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IGhkID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcImhkXCJcbiAgfCBhOjpfIC0+IGFcblxubGV0IHRsID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcInRsXCJcbiAgfCBfOjpsIC0+IGxcblxubGV0IG50aCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJudGhcIlxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IG50aF9vcHQgbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IGFwcGVuZCA9IChAKVxuXG5sZXQgcmVjIHJldl9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBhIDo6IGwgLT4gcmV2X2FwcGVuZCBsIChhIDo6IGwyKVxuXG5sZXQgcmV2IGwgPSByZXZfYXBwZW5kIGwgW11cblxubGV0IHJlYyBpbml0X3RhaWxyZWNfYXV4IGFjYyBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIGFjY1xuICBlbHNlIGluaXRfdGFpbHJlY19hdXggKGYgaSA6OiBhY2MpIChpKzEpIG4gZlxuXG5sZXQgcmVjIGluaXRfYXV4IGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByID0gZiBpIGluXG4gICAgciA6OiBpbml0X2F1eCAoaSsxKSBuIGZcblxubGV0IHJldl9pbml0X3RocmVzaG9sZCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMTBfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3NcbiAgICAgc21hbGwuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcblxubGV0IGluaXQgbGVuIGYgPVxuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LmluaXRcIiBlbHNlXG4gIGlmIGxlbiA+IHJldl9pbml0X3RocmVzaG9sZCB0aGVuIHJldiAoaW5pdF90YWlscmVjX2F1eCBbXSAwIGxlbiBmKVxuICBlbHNlIGluaXRfYXV4IDAgbGVuIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGEgaW4gciA6OiBtYXAgZiBsXG5cbmxldCByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgaSBhIGluIHIgOjogbWFwaSAoaSArIDEpIGYgbFxuXG5sZXQgbWFwaSBmIGwgPSBtYXBpIDAgZiBsXG5cbmxldCByZXZfbWFwIGYgbCA9XG4gIGxldCByZWMgcm1hcF9mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYTo6bCAtPiBybWFwX2YgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIHJtYXBfZiBbXSBsXG5cblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGE7IGl0ZXIgZiBsXG5cbmxldCByZWMgaXRlcmkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBpIGE7IGl0ZXJpIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaSBmIGwgPSBpdGVyaSAwIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjY3UgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGZvbGRfbGVmdCBmIChmIGFjY3UgYSkgbFxuXG5sZXQgcmVjIGZvbGRfcmlnaHQgZiBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmIGEgKGZvbGRfcmlnaHQgZiBsIGFjY3UpXG5cbmxldCByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBsZXQgciA9IGYgYTEgYTIgaW4gciA6OiBtYXAyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lm1hcDJcIlxuXG5sZXQgcmV2X21hcDIgZiBsMSBsMiA9XG4gIGxldCByZWMgcm1hcDJfZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgfCAoW10sIFtdKSAtPiBhY2N1XG4gICAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHJtYXAyX2YgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBybWFwMl9mIFtdIGwxIGwyXG5cblxubGV0IHJlYyBpdGVyMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+ICgpXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyOyBpdGVyMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZm9sZF9sZWZ0MiBmIChmIGFjY3UgYTEgYTIpIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcblxubGV0IHJlYyBmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMiAoZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1KVxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9yaWdodDJcIlxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gdHJ1ZVxuICB8IGE6OmwgLT4gcCBhICYmIGZvcl9hbGwgcCBsXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBwIGEgfHwgZXhpc3RzIHAgbFxuXG5sZXQgcmVjIGZvcl9hbGwyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gdHJ1ZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiAmJiBmb3JfYWxsMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG5cbmxldCByZWMgZXhpc3RzMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGZhbHNlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyIHx8IGV4aXN0czIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG5cbmxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtIHggbFxuXG5sZXQgcmVjIG1lbXEgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGEgPT0geCB8fCBtZW1xIHggbFxuXG5sZXQgcmVjIGFzc29jIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGIgZWxzZSBhc3NvYyB4IGxcblxubGV0IHJlYyBhc3NvY19vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIFNvbWUgYiBlbHNlIGFzc29jX29wdCB4IGxcblxubGV0IHJlYyBhc3NxIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIGIgZWxzZSBhc3NxIHggbFxuXG5sZXQgcmVjIGFzc3Ffb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBTb21lIGIgZWxzZSBhc3NxX29wdCB4IGxcblxubGV0IHJlYyBtZW1fYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtX2Fzc29jIHggbFxuXG5sZXQgcmVjIG1lbV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gYSA9PSB4IHx8IG1lbV9hc3NxIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NvYyB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT4gaWYgYSA9PSB4IHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc3EgeCBsXG5cbmxldCByZWMgZmluZCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCBlbHNlIGZpbmQgcCBsXG5cbmxldCByZWMgZmluZF9vcHQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kX29wdCBwIGxcblxubGV0IHJlYyBmaW5kX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCBmIGxcbiAgICAgZW5kXG5cbmxldCBmaW5kX2FsbCBwID1cbiAgbGV0IHJlYyBmaW5kIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2N1XG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIGZpbmQgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgYWNjdSBsIGluXG4gIGZpbmQgW11cblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldCBmaWx0ZXJpIHAgbCA9XG4gIGxldCByZWMgYXV4IGkgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjXG4gIHwgeDo6bCAtPiBhdXggKGkgKyAxKSAoaWYgcCBpIHggdGhlbiB4OjphY2MgZWxzZSBhY2MpIGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuXG5sZXQgZmlsdGVyX21hcCBmID1cbiAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggYWNjdSBsXG4gICAgICAgIHwgU29tZSB2IC0+IGF1eCAodiA6OiBhY2N1KSBsXG4gIGluXG4gIGF1eCBbXVxuXG5sZXQgY29uY2F0X21hcCBmIGwgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICBsZXQgeHMgPSBmIHggaW5cbiAgICAgICBhdXggZiAocmV2X2FwcGVuZCB4cyBhY2MpIGxcbiAgaW4gYXV4IGYgW10gbFxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIGxpc3Qgb2YgbGVuZ3RoIGJldHdlZW4gYWJvdXQgMTAwMDAwIChkZXBlbmRpbmcgb24gdGhlIG1pbm9yXG4gICBoZWFwIHNpemUgYW5kIHRoZSB0eXBlIG9mIHRoZSBsaXN0KSBhbmQgU3lzLm1heF9hcnJheV9zaXplLCBpdCBpc1xuICAgYWN0dWFsbHkgZmFzdGVyIHRvIHVzZSB0aGUgZm9sbG93aW5nLCBidXQgaXQgbWlnaHQgYWxzbyB1c2UgbW9yZSBtZW1vcnlcbiAgIGJlY2F1c2UgdGhlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGRlYWxsb2NhdGVkIGluY3JlbWVudGFsbHkuXG5cbiAgIEFsc28sIHRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIHRoaXMgY29kZSBvciBpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIG9ial90cnVuY2F0ZS5cblxuZXh0ZXJuYWwgb2JqX3RydW5jYXRlIDogJ2EgYXJyYXkgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcblxubGV0IGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGFjY3UgbiBwID1cbiAgICBpZiBwIDw9IDAgdGhlbiBhY2N1IGVsc2UgYmVnaW5cbiAgICAgIGlmIHAgPSBuIHRoZW4gYmVnaW5cbiAgICAgICAgb2JqX3RydW5jYXRlIGEgcDtcbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSAobi0xMDAwKSAocC0xKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSBuIChwLTEpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBbXSAobC0xMDAwKSBsXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgQXJyYXkuc3RhYmxlX3NvcnQgY21wIGE7XG4gIGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYVxuXG4qKVxuXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuOztcblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aF93aXRoIGwgbiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgaWYgbiA9IDAgdGhlbiAwIGVsc2VcbiAgICAgIGlmIG4gPiAwIHRoZW4gLTEgZWxzZSAxXG4gIHwgXyA6OiBsIC0+XG4gICAgaWYgbiA8PSAwIHRoZW4gMSBlbHNlXG4gICAgICBjb21wYXJlX2xlbmd0aF93aXRoIGwgKG4tMSlcbjs7XG5cbigqKiB7MSBDb21wYXJpc29ufSAqKVxuXG4oKiBOb3RlOiB3ZSBhcmUgKm5vdCogc2hvcnRjdXR0aW5nIHRoZSBsaXN0IGJ5IHVzaW5nXG4gICBbTGlzdC5jb21wYXJlX2xlbmd0aHNdIGZpcnN0OyB0aGlzIG1heSBiZSBzbG93ZXIgb24gbG9uZyBsaXN0c1xuICAgaW1tZWRpYXRlbHkgc3RhcnQgd2l0aCBkaXN0aW5jdCBlbGVtZW50cy4gSXQgaXMgYWxzbyBpbmNvcnJlY3QgZm9yXG4gICBbY29tcGFyZV0gYmVsb3csIGFuZCBpdCBpcyBiZXR0ZXIgKHByaW5jaXBsZSBvZiBsZWFzdCBzdXJwcmlzZSkgdG9cbiAgIHVzZSB0aGUgc2FtZSBhcHByb2FjaCBmb3IgYm90aCBmdW5jdGlvbnMuICopXG5sZXQgcmVjIGVxdWFsIGVxIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gdHJ1ZVxuICB8IFtdLCBfOjpfIHwgXzo6XywgW10gLT4gZmFsc2VcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPiBlcSBhMSBhMiAmJiBlcXVhbCBlcSBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfOjpfIC0+IC0xXG4gIHwgXzo6XywgW10gLT4gMVxuICB8IGExOjpsMSwgYTI6OmwyIC0+XG4gICAgbGV0IGMgPSBjbXAgYTEgYTIgaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjXG4gICAgZWxzZSBjb21wYXJlIGNtcCBsMSBsMlxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGwgPVxuICBsZXQgcmVjIGF1eCBsICgpID0gbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBTZXEuTmlsXG4gICAgfCB4IDo6IHRhaWwgLT4gU2VxLkNvbnMgKHgsIGF1eCB0YWlsKVxuICBpblxuICBhdXggbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCByZWMgZGlyZWN0IGRlcHRoIHNlcSA6IF8gbGlzdCA9XG4gICAgaWYgZGVwdGg9MFxuICAgIHRoZW5cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIHNlcVxuICAgICAgfD4gcmV2ICgqIHRhaWxyZWMgKilcbiAgICBlbHNlIG1hdGNoIHNlcSgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbXVxuICAgICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT4geCA6OiBkaXJlY3QgKGRlcHRoLTEpIG5leHRcbiAgaW5cbiAgZGlyZWN0IDUwMCBzZXFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBjb3B5IHMgZWxzZSBiZWdpblxuICAgIGxldCBzJyA9IGNyZWF0ZSAhbiBpblxuICAgIG4gOj0gMDtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICBiZWdpbiBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgfCAoJyAnIC4uICd+JykgYXMgYyAtPiB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIGxldCBhID0gY2hhcl9jb2RlIGMgaW5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSAvIDEwMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyAoYSAvIDEwKSBtb2QgMTApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSBtb2QgMTApKTtcbiAgICAgIGVuZDtcbiAgICAgIGluY3IgblxuICAgIGRvbmU7XG4gICAgcydcbiAgZW5kXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPSBtYXAgQ2hhci51cHBlcmNhc2Ugc1xubGV0IGxvd2VyY2FzZSBzID0gbWFwIENoYXIubG93ZXJjYXNlIHNcblxubGV0IGNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgdW5jYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2Ugc1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGJ1ZiA9IHJlZiAobWFrZSAyNTYgJ1xcMDAwJykgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgKCogcmVzaXplICopXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWluICgyICogbGVuZ3RoICFidWYpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgIGlmIGxlbmd0aCAhYnVmID0gbmV3X2xlbiB0aGVuIGZhaWx3aXRoIFwiQnl0ZXMub2Zfc2VxOiBjYW5ub3QgZ3JvdyBieXRlc1wiO1xuICAgIGxldCBuZXdfYnVmID0gbWFrZSBuZXdfbGVuICdcXDAwMCcgaW5cbiAgICBibGl0ICFidWYgMCBuZXdfYnVmIDAgIW47XG4gICAgYnVmIDo9IG5ld19idWZcbiAgaW5cbiAgU2VxLml0ZXJcbiAgICAoZnVuIGMgLT5cbiAgICAgICBpZiAhbiA9IGxlbmd0aCAhYnVmIHRoZW4gcmVzaXplKCk7XG4gICAgICAgc2V0ICFidWYgIW4gYztcbiAgICAgICBpbmNyIG4pXG4gICAgaTtcbiAgc3ViICFidWYgMCAhblxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiBUaGUgZ2V0XyBmdW5jdGlvbnMgYXJlIGFsbCBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IGNvcHkgcyA9XG4gIEIuY29weSAoYm9zIHMpIHw+IGJ0c1xubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBmaWxsID1cbiAgQi5maWxsXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpbiBidHMgQEBcbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChCLmNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0ID0gKCBeIClcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXIgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlcmkgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbmxldCBtYXAgZiBzID1cbiAgQi5tYXAgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IG1hcGkgZiBzID1cbiAgQi5tYXBpIGYgKGJvcyBzKSB8PiBidHNcbmxldCBmb2xkX3JpZ2h0IGYgeCBhID1cbiAgQi5mb2xkX3JpZ2h0IGYgKGJvcyB4KSBhXG5sZXQgZm9sZF9sZWZ0IGYgYSB4ID1cbiAgQi5mb2xkX2xlZnQgZiBhIChib3MgeClcbmxldCBleGlzdHMgZiBzID1cbiAgQi5leGlzdHMgZiAoYm9zIHMpXG5sZXQgZm9yX2FsbCBmIHMgPVxuICBCLmZvcl9hbGwgZiAoYm9zIHMpXG5cbigqIEJld2FyZTogd2UgY2Fubm90IHVzZSBCLnRyaW0gb3IgQi5lc2NhcGUgYmVjYXVzZSB0aGV5IGFsd2F5cyBtYWtlIGFcbiAgIGNvcHksIGJ1dCBTdHJpbmcubWxpIHNwZWxscyBvdXQgc29tZSBjYXNlcyB3aGVyZSB3ZSBhcmUgbm90IGFsbG93ZWRcbiAgIHRvIG1ha2UgYSBjb3B5LiAqKVxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGlmIHMgPSBcIlwiIHRoZW4gc1xuICBlbHNlIGlmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgMCkgfHwgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAobGVuZ3RoIHMgLSAxKSlcbiAgICB0aGVuIGJ0cyAoQi50cmltIChib3MgcykpXG4gIGVsc2Ugc1xuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IHJlYyBlc2NhcGVfaWZfbmVlZGVkIHMgbiBpID1cbiAgICBpZiBpID49IG4gdGhlbiBzIGVsc2VcbiAgICAgIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcMDAwJy4uJ1xcMDMxJyB8ICdcXDEyNycuLiAnXFwyNTUnIC0+XG4gICAgICAgICAgYnRzIChCLmVzY2FwZWQgKGJvcyBzKSlcbiAgICAgIHwgXyAtPiBlc2NhcGVfaWZfbmVlZGVkIHMgbiAoaSsxKVxuICBpblxuICBlc2NhcGVfaWZfbmVlZGVkIHMgKGxlbmd0aCBzKSAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID1cbiAgQi51cHBlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2UgcyA9XG4gIEIubG93ZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZSBzID1cbiAgQi5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplIHMgPVxuICBCLnVuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB1bml0ID0gKClcblxubGV0IGVxdWFsICgpICgpID0gdHJ1ZVxubGV0IGNvbXBhcmUgKCkgKCkgPSAwXG5sZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZXh0ZXJuX2ZsYWdzID1cbiAgICBOb19zaGFyaW5nXG4gIHwgQ2xvc3VyZXNcbiAgfCBDb21wYXRfMzJcbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAyMFxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2V0X3RhZyA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3NldF90YWdcIlxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBtYXJzaGFsIChvYmogOiB0KSA9XG4gIE1hcnNoYWwudG9fYnl0ZXMgb2JqIFtdXG5sZXQgdW5tYXJzaGFsIHN0ciBwb3MgPVxuICAoTWFyc2hhbC5mcm9tX2J5dGVzIHN0ciBwb3MsIHBvcyArIE1hcnNoYWwudG90YWxfc2l6ZSBzdHIgcG9zKVxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDVcblxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5sZXQgZmluYWxfdGFnID0gY3VzdG9tX3RhZ1xuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgQ2xvc3VyZSA9IHN0cnVjdFxuICB0eXBlIGluZm8gPSB7XG4gICAgYXJpdHk6IGludDtcbiAgICBzdGFydF9lbnY6IGludDtcbiAgfVxuXG4gIGxldCBpbmZvX29mX3JhdyAoaW5mbyA6IG5hdGl2ZWludCkgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludCBpblxuICAgIGxldCBhcml0eSA9XG4gICAgICAoKiBzaWduZWQ6IG5lZ2F0aXZlIGZvciB0dXBsZWQgZnVuY3Rpb25zICopXG4gICAgICBpZiBTeXMud29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gNTYpXG4gICAgICBlbHNlXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyAyNClcbiAgICBpblxuICAgIGxldCBzdGFydF9lbnYgPVxuICAgICAgKCogc3RhcnRfZW52IGlzIHVuc2lnbmVkLCBidXQgd2Uga25vdyBpdCBjYW4gYWx3YXlzIGZpdCBhbiBPQ2FtbFxuICAgICAgICAgaW50ZWdlciBzbyB3ZSB1c2UgW3RvX2ludF0gaW5zdGVhZCBvZiBbdW5zaWduZWRfdG9faW50XS4gKilcbiAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHRfbG9naWNhbCAoc2hpZnRfbGVmdCBpbmZvIDgpIDkpIGluXG4gICAgeyBhcml0eTsgc3RhcnRfZW52IH1cblxuICAoKiBub3RlOiB3ZSBleHBlY3QgYSBjbG9zdXJlLCBub3QgYW4gaW5maXggcG9pbnRlciAqKVxuICBsZXQgaW5mbyAob2JqIDogdCkgPVxuICAgIGFzc2VydCAodGFnIG9iaiA9IGNsb3N1cmVfdGFnKTtcbiAgICBpbmZvX29mX3JhdyAocmF3X2ZpZWxkIG9iaiAxKVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbFxubGV0IGV4dGVuc2lvbl9uYW1lID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm5hbWVcbmxldCBleHRlbnNpb25faWQgPSBFeHRlbnNpb25fY29uc3RydWN0b3IuaWRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIjs7XG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCBjcmVhdGU6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgdW5zYWZlX3N1YiA6ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfc3ViXCJcbmV4dGVybmFsIGFwcGVuZF9wcmltIDogJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfYXBwZW5kXCJcbmV4dGVybmFsIGNvbmNhdCA6ICdhIGFycmF5IGxpc3QgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfY29uY2F0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2ZpbGxcIlxuZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0OiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbmxldCBtYWtlX2Zsb2F0ID0gY3JlYXRlX2Zsb2F0XG5cbm1vZHVsZSBGbG9hdGFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBmbG9hdGFycmF5ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogZmxvYXRhcnJheSAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcbmVuZFxuXG5sZXQgaW5pdCBsIGYgPVxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZVxuICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gICgqIFNlZSAjNjU3NS4gV2UgY291bGQgYWxzbyBjaGVjayBmb3IgbWF4aW11bSBhcnJheSBzaXplLCBidXQgdGhpcyBkZXBlbmRzXG4gICAgIG9uIHdoZXRoZXIgd2UgY3JlYXRlIGEgZmxvYXQgYXJyYXkgb3IgYSByZWd1bGFyIG9uZS4uLiAqKVxuICBlbHNlXG4gICBsZXQgcmVzID0gY3JlYXRlIGwgKGYgMCkgaW5cbiAgIGZvciBpID0gMSB0byBwcmVkIGwgZG9cbiAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgZG9uZTtcbiAgIHJlc1xuXG5sZXQgbWFrZV9tYXRyaXggc3ggc3kgaW5pdCA9XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICBkb25lO1xuICByZXNcblxubGV0IGNyZWF0ZV9tYXRyaXggPSBtYWtlX21hdHJpeFxuXG5sZXQgY29weSBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpbiBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSB1bnNhZmVfc3ViIGEgMCBsXG5cbmxldCBhcHBlbmQgYTEgYTIgPVxuICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgaWYgbDEgPSAwIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgZWxzZSBhcHBlbmRfcHJpbSBhMSBhMlxuXG5sZXQgc3ViIGEgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuc3ViXCJcbiAgZWxzZSB1bnNhZmVfc3ViIGEgb2ZzIGxlblxuXG5sZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IGExIG9mczEgYTIgb2ZzMiBsZW5cblxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBpdGVyMiBmIGEgYiA9XG4gIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2VcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxubGV0IG1hcCBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZih1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZih1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwMiBmIGEgYiA9XG4gIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gIGlmIGxhIDw+IGxiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZSBiZWdpblxuICAgIGlmIGxhID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgKGYgKHVuc2FmZV9nZXQgYSAwKSAodW5zYWZlX2dldCBiIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuICBlbmRcblxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgbWFwaSBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZiAwICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHJlYyB0b2xpc3QgaSByZXMgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmVzIGVsc2UgdG9saXN0IChpIC0gMSkgKHVuc2FmZV9nZXQgYSBpIDo6IHJlcykgaW5cbiAgdG9saXN0IChsZW5ndGggYSAtIDEpIFtdXG5cbigqIENhbm5vdCB1c2UgTGlzdC5sZW5ndGggaGVyZSBiZWNhdXNlIHRoZSBMaXN0IG1vZHVsZSBkZXBlbmRzIG9uIEFycmF5LiAqKVxubGV0IHJlYyBsaXN0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2N1XG4gIHwgXzo6dCAtPiBsaXN0X2xlbmd0aCAoc3VjYyBhY2N1KSB0XG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBhID0gY3JlYXRlIChsaXN0X2xlbmd0aCAwIGwpIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaSsxKSB0bCBpblxuICAgICAgZmlsbCAxIHRsXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjYyBpbnB1dF9hcnJheSA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXRfYXJyYXkgaW5cbiAgaWYgbGVuID0gMCB0aGVuIChhY2MsIFt8fF0pIGVsc2UgYmVnaW5cbiAgICBsZXQgYWNjLCBlbHQgPSBmIGFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSAwKSBpblxuICAgIGxldCBvdXRwdXRfYXJyYXkgPSBjcmVhdGUgbGVuIGVsdCBpblxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBhY2MnLCBlbHQgPSBmICFhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgaSkgaW5cbiAgICAgIGFjYyA6PSBhY2MnO1xuICAgICAgdW5zYWZlX3NldCBvdXRwdXRfYXJyYXkgaSBlbHQ7XG4gICAgZG9uZTtcbiAgICAhYWNjLCBvdXRwdXRfYXJyYXlcbiAgZW5kXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5mb3JfYWxsMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGV4aXN0czIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmV4aXN0czJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW0geCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbXEgeCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgeCA9PSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZpbmRfb3B0IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgZWxzZSBsb29wIChzdWNjIGkpXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB4ID1cbiAgaWYgeCA9IFt8fF0gdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgYTAsIGIwID0gdW5zYWZlX2dldCB4IDAgaW5cbiAgICBsZXQgbiA9IGxlbmd0aCB4IGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbiBhMCBpblxuICAgIGxldCBiID0gY3JlYXRlIG4gYjAgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCBhaSwgYmkgPSB1bnNhZmVfZ2V0IHggaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgYWk7XG4gICAgICB1bnNhZmVfc2V0IGIgaSBiaVxuICAgIGRvbmU7XG4gICAgYSwgYlxuICBlbmRcblxubGV0IGNvbWJpbmUgYSBiID1cbiAgbGV0IG5hID0gbGVuZ3RoIGEgaW5cbiAgbGV0IG5iID0gbGVuZ3RoIGIgaW5cbiAgaWYgbmEgPD4gbmIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmNvbWJpbmVcIjtcbiAgaWYgbmEgPSAwIHRoZW4gW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHggPSBjcmVhdGUgbmEgKHVuc2FmZV9nZXQgYSAwLCB1bnNhZmVfZ2V0IGIgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbmEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHggaSAodW5zYWZlX2dldCBhIGksIHVuc2FmZV9nZXQgYiBpKVxuICAgIGRvbmU7XG4gICAgeFxuICBlbmRcblxuZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbmxldCBzb3J0IGNtcCBhID1cbiAgbGV0IG1heHNvbiBsIGkgPVxuICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgIXhcbiAgICBlbmQgZWxzZVxuICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICB0aGVuIGkzMSsxXG4gICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gIGluXG4gIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgYnViYmxlZG93biBsIGpcbiAgaW5cbiAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICBkb25lO1xuICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG5cbmxldCBjdXRvZmYgPSA1XG5sZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgIGVuZFxuICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICBpblxuICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICBkZWNyIGo7XG4gICAgICBkb25lO1xuICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgIGRvbmU7XG4gIGluXG4gIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICBsZXQgdCA9IG1ha2UgbDIgKGdldCBhIDApIGluXG4gICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gIGVuZFxuXG5cbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9yZXZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgbGVuID0gbGlzdF9sZW5ndGggMCBsIGluXG4gICAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgICBpblxuICAgICAgZmlsbCAobGVuLTIpIHRsXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICBvZl9yZXZfbGlzdCBsXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgIE5pY29sYXMgT2plZGEgQmFyLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIG5lZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgYWRkIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCBzdWIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsIG11bCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgZGl2IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCByZW0gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZtYSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2ZtYV9mbG9hdFwiIFwiY2FtbF9mbWFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IGluZmluaXR5ID0gU3RkbGliLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gU3RkbGliLm5lZ19pbmZpbml0eVxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpc19maW5pdGUgKHg6IGZsb2F0KSA9IHggLS4geCA9IDAuXG5sZXQgaXNfaW5maW5pdGUgKHg6IGZsb2F0KSA9IDEuIC8uIHggPSAwLlxubGV0IGlzX25hbiAoeDogZmxvYXQpID0geCA8PiB4XG5cbmxldCBwaSA9IDB4MS45MjFmYjU0NDQyZDE4cCsxXG5sZXQgbWF4X2Zsb2F0ID0gU3RkbGliLm1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IFN0ZGxpYi5taW5fZmxvYXRcbmxldCBlcHNpbG9uID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Zsb2F0XG50eXBlIGZwY2xhc3MgPSBTdGRsaWIuZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcG93IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjYnJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2JydF9mbG9hdFwiIFwiY2FtbF9jYnJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cDIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHAyX2Zsb2F0XCIgXCJjYW1sX2V4cDJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzJfZmxvYXRcIiBcImNhbWxfbG9nMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmX2Zsb2F0XCIgXCJjYW1sX2VyZlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmZjIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmY19mbG9hdFwiIFwiY2FtbF9lcmZjXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRydW5jIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdHJ1bmNfZmxvYXRcIiBcImNhbWxfdHJ1bmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcm91bmQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9yb3VuZF9mbG9hdFwiIFwiY2FtbF9yb3VuZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG5bQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgaXNfaW50ZWdlciB4ID0geCA9IHRydW5jIHggJiYgaXNfZmluaXRlIHhcblxuZXh0ZXJuYWwgbmV4dF9hZnRlciA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gID0gXCJjYW1sX25leHRhZnRlcl9mbG9hdFwiIFwiY2FtbF9uZXh0YWZ0ZXJcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgc3VjYyB4ID0gbmV4dF9hZnRlciB4IGluZmluaXR5XG5sZXQgcHJlZCB4ID0gbmV4dF9hZnRlciB4IG5lZ19pbmZpbml0eVxuXG5leHRlcm5hbCBjb3B5X3NpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpZ25fYml0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGJvb2xcbiAgPSBcImNhbWxfc2lnbmJpdF9mbG9hdFwiIFwiY2FtbF9zaWduYml0XCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbnR5cGUgdCA9IGZsb2F0XG5leHRlcm5hbCBjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgZXF1YWwgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldFtAaW5saW5lXSBtaW4gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB8fCBpc19uYW4geSB0aGVuIChuYW4sIG5hbilcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgsIHkpIGVsc2UgKHksIHgpXG5cbmxldFtAaW5saW5lXSBtaW5fbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB0aGVuICh5LHkpXG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiAoeCx4KVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCx5KSBlbHNlICh5LHgpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiBpbnQgLT4gZmxvYXQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IGZsb2F0YXJyYXlcblxuICBleHRlcm5hbCBsZW5ndGggOiB0IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICBsZXQgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGZvciBpID0gb2ZzIHRvIG9mcyArIGxlbiAtIDEgZG8gdW5zYWZlX3NldCBhIGkgdiBkb25lXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXQ6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID1cbiAgICBcImNhbWxfZmxvYXRhcnJheV9ibGl0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IG1ha2UgbiB2ID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIG4gaW5cbiAgICB1bnNhZmVfZmlsbCByZXN1bHQgMCBuIHY7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGluaXQgbCBmID1cbiAgICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdFwiXG4gICAgZWxzZVxuICAgICAgbGV0IHJlcyA9IGNyZWF0ZSBsIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgICAgZG9uZTtcbiAgICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gIGxldCBtYXAyIGYgYSBiID1cbiAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gICAgaWYgbGEgPD4gbGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXJpIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgbGV0IG1hcGkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50MzJdOiAzMi1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX3RvX2Zsb2F0XCIgXCJjYW1sX2ludDMyX3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCB6ZXJvID0gMGxcbmxldCBvbmUgPSAxbFxubGV0IG1pbnVzX29uZSA9IC0xbFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFsXG5sZXQgcHJlZCBuID0gc3ViIG4gMWxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMGwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMGxcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRmxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMWwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgfCAzMiAtPlxuICAgICAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgICAgIGZ1biBuIC0+XG4gICAgICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICAgICAgU29tZSAodG9faW50IG4pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gIHwgNjQgLT5cbiAgICAgICgqIFNvIHRoYXQgaXQgY29tcGlsZXMgaW4gMzItYml0ICopXG4gICAgICBsZXQgbWFzayA9IDB4RkZGRiBsc2wgMTYgbG9yIDB4RkZGRiBpblxuICAgICAgZnVuIG4gLT4gU29tZSAodG9faW50IG4gbGFuZCBtYXNrKVxuICB8IF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cblxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZzogc3RyaW5nIC0+IG5hdGl2ZWludCA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXggKilcblxudHlwZSBwb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmxldCBkdW1teV9wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMDtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gLTE7XG59XG5cbnR5cGUgbGV4YnVmID1cbiAgeyByZWZpbGxfYnVmZiA6IGxleGJ1ZiAtPiB1bml0O1xuICAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzO1xuICAgIG11dGFibGUgbGV4X2J1ZmZlcl9sZW4gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfZW9mX3JlYWNoZWQgOiBib29sO1xuICAgIG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wIDogcG9zaXRpb247XG4gIH1cblxudHlwZSBsZXhfdGFibGVzID1cbiAgeyBsZXhfYmFzZTogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHQ6IHN0cmluZztcbiAgICBsZXhfdHJhbnM6IHN0cmluZztcbiAgICBsZXhfY2hlY2s6IHN0cmluZztcbiAgICBsZXhfYmFzZV9jb2RlIDogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZztcbiAgICBsZXhfdHJhbnNfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY29kZTogc3RyaW5nO31cblxuZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX25ld19sZXhfZW5naW5lXCJcblxubGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxuXG5sZXQgbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cbmxldCBsZXhfcmVmaWxsIHJlYWRfZnVuIGF1eF9idWZmZXIgbGV4YnVmID1cbiAgbGV0IHJlYWQgPVxuICAgIHJlYWRfZnVuIGF1eF9idWZmZXIgKEJ5dGVzLmxlbmd0aCBhdXhfYnVmZmVyKSBpblxuICBsZXQgbiA9XG4gICAgaWYgcmVhZCA+IDBcbiAgICB0aGVuIHJlYWRcbiAgICBlbHNlIChsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IDApIGluXG4gICgqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1ZmZlcjpcbiAgICAgICAgPC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tPlxuICAgICAgICB8ICBqdW5rIHwgICAgICB2YWxpZCBkYXRhICAgICB8ICAganVuayAgICB8XG4gICAgICAgIF4gICAgICAgXiAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF5cbiAgICAgICAgMCAgICBzdGFydF9wb3MgICAgICAgICAgICAgYnVmZmVyX2VuZCAgICBCeXRlcy5sZW5ndGggYnVmZmVyXG4gICopXG4gIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG4gPiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIgdGhlbiBiZWdpblxuICAgICgqIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuXG4gICAgICAgPD0gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgdGhlbiBiZWdpblxuICAgICAgKCogQnV0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpZiB3ZSByZWNsYWltIHRoZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgICAgIG9mIHRoZSBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcylcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogV2UgbXVzdCBncm93IHRoZSBidWZmZXIuICBEb3VibGluZyBpdHMgc2l6ZSB3aWxsIHByb3ZpZGUgZW5vdWdoXG4gICAgICAgICBzcGFjZSBzaW5jZSBuIDw9IFN0cmluZy5sZW5ndGggYXV4X2J1ZmZlciA8PSBTdHJpbmcubGVuZ3RoIGJ1ZmZlci5cbiAgICAgICAgIFdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aCBvdmVyZmxvdywgdGhvdWdoLiAqKVxuICAgICAgbGV0IG5ld2xlbiA9XG4gICAgICAgIEludC5taW4gKDIgKiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuID4gbmV3bGVuXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICAgICAgbGV0IG5ld2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgICgqIENvcHkgdGhlIHZhbGlkIGRhdGEgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV3IGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbmV3YnVmIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3Bvcyk7XG4gICAgICBsZXhidWYubGV4X2J1ZmZlciA8LSBuZXdidWZcbiAgICBlbmQ7XG4gICAgKCogUmVhbGxvY2F0aW9uIG9yIG5vdCwgd2UgaGF2ZSBzaGlmdGVkIHRoZSBkYXRhIGxlZnQgYnlcbiAgICAgICBzdGFydF9wb3MgY2hhcmFjdGVyczsgdXBkYXRlIHRoZSBwb3NpdGlvbnMgKilcbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIHM7XG4gICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2N1cnJfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSAwO1xuICAgIGxleGJ1Zi5sZXhfbGFzdF9wb3MgPC0gbGV4YnVmLmxleF9sYXN0X3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIHMgO1xuICAgIGxldCB0ID0gbGV4YnVmLmxleF9tZW0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQtMSBkb1xuICAgICAgbGV0IHYgPSB0LihpKSBpblxuICAgICAgaWYgdiA+PSAwIHRoZW5cbiAgICAgICAgdC4oaSkgPC0gdi1zXG4gICAgZG9uZVxuICBlbmQ7XG4gICgqIFRoZXJlIGlzIG5vdyBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gIEJ5dGVzLmJsaXQgYXV4X2J1ZmZlciAwIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiBuO1xuICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuICsgblxuXG5sZXQgemVyb19wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMTtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gMDtcbn1cblxubGV0IGZyb21fZnVuY3Rpb24gPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIGYgPVxuICB7IHJlZmlsbF9idWZmID0gbGV4X3JlZmlsbCBmIChCeXRlcy5jcmVhdGUgNTEyKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDEwMjQ7XG4gICAgbGV4X2J1ZmZlcl9sZW4gPSAwO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSBmYWxzZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IGZyb21fY2hhbm5lbCA/d2l0aF9wb3NpdGlvbnMgaWMgPVxuICBmcm9tX2Z1bmN0aW9uID93aXRoX3Bvc2l0aW9ucyAoZnVuIGJ1ZiBuIC0+IGlucHV0IGljIGJ1ZiAwIG4pXG5cbmxldCBmcm9tX3N0cmluZyA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgcyA9XG4gIHsgcmVmaWxsX2J1ZmYgPSAoZnVuIGxleGJ1ZiAtPiBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWUpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5vZl9zdHJpbmcgczsgKCogaGF2ZSB0byBtYWtlIGEgY29weSBmb3IgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnNhZmUtc3RyaW5nIG1vZGUgKilcbiAgICBsZXhfYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcztcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gdHJ1ZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IHNldF9wb3NpdGlvbiBsZXhidWYgcG9zaXRpb24gPVxuICBsZXhidWYubGV4X2N1cnJfcCAgPC0ge3Bvc2l0aW9uIHdpdGggcG9zX2ZuYW1lID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2ZuYW1lfTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIHBvc2l0aW9uLnBvc19jbnVtXG5cbmxldCBzZXRfZmlsZW5hbWUgbGV4YnVmIGZuYW1lID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZm5hbWV9XG5cbmxldCB3aXRoX3Bvc2l0aW9ucyBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3NcblxubGV0IGxleGVtZSBsZXhidWYgPVxuICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbmxldCBzdWJfbGV4ZW1lIGxleGJ1ZiBpMSBpMiA9XG4gIGxldCBsZW4gPSBpMi1pMSBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlblxuXG5sZXQgc3ViX2xleGVtZV9vcHQgbGV4YnVmIGkxIGkyID1cbiAgaWYgaTEgPj0gMCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbiA9IGkyLWkxIGluXG4gICAgU29tZSAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW4pXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTm9uZVxuICBlbmRcblxubGV0IHN1Yl9sZXhlbWVfY2hhciBsZXhidWYgaSA9IEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXJfb3B0IGxleGJ1ZiBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICBTb21lIChCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaSlcbiAgZWxzZVxuICAgIE5vbmVcblxuXG5sZXQgbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPVxuICBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgKGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgaSlcblxubGV0IGxleGVtZV9zdGFydCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3AucG9zX2NudW1cbmxldCBsZXhlbWVfZW5kIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19jbnVtXG5cbmxldCBsZXhlbWVfc3RhcnRfcCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3BcbmxldCBsZXhlbWVfZW5kX3AgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3BcblxubGV0IG5ld19saW5lIGxleGJ1ZiA9XG4gIGxldCBsY3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgeyBsY3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxjcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsY3AucG9zX2NudW07XG4gICAgICB9XG5cblxuXG4oKiBEaXNjYXJkIGRhdGEgbGVmdCBpbiBsZXhlciBidWZmZXIuICopXG5cbmxldCBmbHVzaF9pbnB1dCBsYiA9XG4gIGxiLmxleF9jdXJyX3BvcyA8LSAwO1xuICBsYi5sZXhfYWJzX3BvcyA8LSAwO1xuICBsZXQgbGNwID0gbGIubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsYi5sZXhfY3Vycl9wIDwtIHt6ZXJvX3BvcyB3aXRoIHBvc19mbmFtZSA9IGxjcC5wb3NfZm5hbWV9O1xuICBsYi5sZXhfYnVmZmVyX2xlbiA8LSAwO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzdWJzZXQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIGZvcl9hbGw6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiAga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbmxldCByYWlzZV91bmRlZmluZWQgPSBPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIFVuZGVmaW5lZClcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogT2JqLnQgLT4gT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfbWFrZV9mb3J3YXJkXCJcblxuKCogQXNzdW1lIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgbGF6eSAqKVxubGV0IGZvcmNlX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgdHJ5XG4gICAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCAoT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBlKSk7XG4gICAgcmFpc2UgZVxuXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV92YWxfbGF6eV9ibG9jayAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIChPYmoucmVwciBibGspIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgcmFpc2VfdW5kZWZpbmVkO1xuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gIHJlc3VsdFxuXG5cbigqIFtmb3JjZV0gaXMgbm90IHVzZWQsIHNpbmNlIFtMYXp5LmZvcmNlXSBpcyBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZVxuICAgd2hvc2UgY29kZSBpbmxpbmVzIHRoZSB0YWcgdGVzdHMgb2YgaXRzIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmxcbiAgIGluc3RydW1lbnRhdGlvbiBpcyB0dXJuZWQgb24uICopXG5cbmxldCBmb3JjZSAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogVXNpbmcgW1N5cy5vcGFxdWVfaWRlbnRpdHldIHByZXZlbnRzIHR3byBwb3RlbnRpYWwgcHJvYmxlbXM6XG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcsIHRoZW4gaXRzIHRhZyBjb3VsZCBoYXZlXG4gICAgICAgY2hhbmdlZCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKVxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSBpbW11dGFibGUsIHRoZW4gaWYgdGhlIGNvbXBpbGVyXG4gICAgICAgY2Fubm90IHByb3ZlIHRoYXQgdGhlIGxhc3QgYnJhbmNoIGlzIG5vdCB0YWtlbiBpdCB3aWxsIGlzc3VlIGFcbiAgICAgICB3YXJuaW5nIDU5IChtb2RpZmljYXRpb24gb2YgYW4gaW1tdXRhYmxlIHZhbHVlKSAqKVxuICBsZXQgbHp2ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSBsenYgaW5cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpIGVsc2VcbiAgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV9sYXp5X2Jsb2NrIGx6dlxuXG5cbmxldCBmb3JjZV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfdmFsX2xhenlfYmxvY2sgbHp2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTGF6eV06IGRlZmVycmVkIGNvbXB1dGF0aW9ucyAqKVxuXG5cbigqXG4gICBXQVJOSU5HOiBzb21lIHB1cnBsZSBtYWdpYyBpcyBnb2luZyBvbiBoZXJlLiAgRG8gbm90IHRha2UgdGhpcyBmaWxlXG4gICBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGluIE9DYW1sLlxuKilcblxuXG4oKiBXZSBtYWtlIHVzZSBvZiB0d28gc3BlY2lhbCB0YWdzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lOlxuICAgW2xhenlfdGFnXSBhbmQgW2ZvcndhcmRfdGFnXS5cblxuICAgQSB2YWx1ZSBvZiB0eXBlIFsnYSBMYXp5LnRdIGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOlxuICAgMS4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2xhenlfdGFnXS4gIEl0cyBmaWVsZCBpcyBhIGNsb3N1cmUgb2ZcbiAgICAgIHR5cGUgW3VuaXQgLT4gJ2FdIHRoYXQgY29tcHV0ZXMgdGhlIHZhbHVlLlxuICAgMi4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2ZvcndhcmRfdGFnXS4gIEl0cyBmaWVsZCBpcyB0aGUgdmFsdWVcbiAgICAgIG9mIHR5cGUgWydhXSB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIDMuIEFueXRoaW5nIGVsc2UgZXhjZXB0IGEgZmxvYXQuICBUaGlzIGhhcyB0eXBlIFsnYV0gYW5kIGlzIHRoZSB2YWx1ZVxuICAgICAgdGhhdCB3YXMgY29tcHV0ZWQuXG4gICBFeGNlcHRpb25zIGFyZSBzdG9yZWQgaW4gZm9ybWF0ICgxKS5cbiAgIFRoZSBHQyB3aWxsIG1hZ2ljYWxseSBjaGFuZ2UgdGhpbmdzIGZyb20gKDIpIHRvICgzKSBhY2NvcmRpbmcgdG8gaXRzXG4gICBmYW5jeS5cblxuICAgSWYgT0NhbWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgLWZsYXQtZmxvYXQtYXJyYXkgb3B0aW9uICh3aGljaCBpc1xuICAgY3VycmVudGx5IHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBpcyBhbHNvIHRydWU6XG4gICBXZSBjYW5ub3QgdXNlIHJlcHJlc2VudGF0aW9uICgzKSBmb3IgYSBbZmxvYXQgTGF6eS50XSBiZWNhdXNlXG4gICBbY2FtbF9tYWtlX2FycmF5XSBhc3N1bWVzIHRoYXQgb25seSBhIFtmbG9hdF0gdmFsdWUgY2FuIGhhdmUgdGFnXG4gICBbRG91YmxlX3RhZ10uXG5cbiAgIFdlIGhhdmUgdG8gdXNlIHRoZSBidWlsdC1pbiB0eXBlIGNvbnN0cnVjdG9yIFtsYXp5X3RdIHRvXG4gICBsZXQgdGhlIGNvbXBpbGVyIGltcGxlbWVudCB0aGUgc3BlY2lhbCB0eXBpbmcgYW5kIGNvbXBpbGF0aW9uXG4gICBydWxlcyBmb3IgdGhlIFtsYXp5XSBrZXl3b3JkLlxuKilcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbGludGVybmFsTGF6eS50XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgPSBDYW1saW50ZXJuYWxMYXp5LlVuZGVmaW5lZFxuXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxuXG5sZXQgZm9yY2VfdmFsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV92YWxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHwgdCA9IE9iai5kb3VibGVfdGFnIHRoZW4gYmVnaW5cbiAgICBtYWtlX2ZvcndhcmQgdlxuICBlbmQgZWxzZSBiZWdpblxuICAgIChPYmoubWFnaWMgdiA6ICdhcmcgdClcbiAgZW5kXG5cblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IGxhenlfZnJvbV9mdW4gPSBmcm9tX2Z1blxuXG5sZXQgbGF6eV9mcm9tX3ZhbCA9IGZyb21fdmFsXG5cbmxldCBsYXp5X2lzX3ZhbCA9IGlzX3ZhbFxuXG5cbmxldCBtYXAgZiB4ID1cbiAgbGF6eSAoZiAoZm9yY2UgeCkpXG5cbmxldCBtYXBfdmFsIGYgeCA9XG4gIGlmIGlzX3ZhbCB4XG4gIHRoZW4gbGF6eV9mcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIGNlbGwgb3B0aW9uXG5hbmQgJ2EgY2VsbCA9IHsgbXV0YWJsZSBjb3VudCA6IGludDsgbXV0YWJsZSBkYXRhIDogJ2EgZGF0YSB9XG5hbmQgJ2EgZGF0YSA9XG4gICAgU2VtcHR5XG4gIHwgU2NvbnMgb2YgJ2EgKiAnYSBkYXRhXG4gIHwgU2FwcCBvZiAnYSBkYXRhICogJ2EgZGF0YVxuICB8IFNsYXp5IG9mICdhIGRhdGEgTGF6eS50XG4gIHwgU2dlbiBvZiAnYSBnZW5cbiAgfCBTYnVmZmlvIDogYnVmZmlvIC0+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+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuYnVmZmVyIDwtIG5ld19idWZmZXI7XG4gIGIubGVuZ3RoIDwtICFuZXdfbGVuO1xuICBhc3NlcnQgKGIucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgYXNzZXJ0IChvbGRfcG9zICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gICgpXG4gICgqIE5vdGU6IHRoZXJlIGFyZSB2YXJpb3VzIHNpdHVhdGlvbnMgKHByZWVtcHRpdmUgdGhyZWFkcywgc2lnbmFscyBhbmRcbiAgICAgZ2MgZmluYWxpemVycykgd2hlcmUgT0NhbWwgY29kZSBtYXkgYmUgcnVuIGFzeW5jaHJvbm91c2x5OyBpblxuICAgICBwYXJ0aWN1bGFyLCB0aGVyZSBtYXkgYmUgYSByYWNlIHdpdGggYW5vdGhlciB1c2VyIG9mIFtiXSwgY2hhbmdpbmdcbiAgICAgaXRzIG11dGFibGUgZmllbGRzIGluIHRoZSBtaWRkbGUgb2YgdGhlIFtyZXNpemVdIGNhbGwuIFRoZSBCdWZmZXJcbiAgICAgbW9kdWxlIGRvZXMgbm90IHByb3ZpZGUgYW55IGNvcnJlY3RuZXNzIGd1YXJhbnRlZSBpZiB0aGF0IGhhcHBlbnMsXG4gICAgIGJ1dCB3ZSBtdXN0IHN0aWxsIGVuc3VyZSB0aGF0IHRoZSBkYXRhc3RydWN0dXJlIGludmFyaWFudHMgaG9sZCBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAtLSBhcyB3ZSBwbGFuIHRvIHVzZSBbdW5zYWZlX3tnZXQsc2V0fV0uXG5cbiAgICAgVGhlcmUgYXJlIHR3byBwb3RlbnRpYWwgYWxsb2NhdGlvbiBwb2ludHMgaW4gdGhpcyBmdW5jdGlvbixcbiAgICAgW3JlZl0gYW5kIFtCeXRlcy5jcmVhdGVdLCBidXQgYWxsIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlIGZpZWxkc1xuICAgICBvZiBbYl0gaGFwcGVuIGJlZm9yZSBib3RoIG9mIHRoZW0gb3IgYWZ0ZXIgYm90aCBvZiB0aGVtLlxuXG4gICAgIFdlIHRoZXJlZm9yZSBhc3N1bWUgdGhhdCBbYi5wb3NpdGlvbl0gbWF5IGNoYW5nZSBhdCB0aGVzZSBhbGxvY2F0aW9ucyxcbiAgICAgYW5kIGNoZWNrIHRoYXQgdGhlIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gcG9zdGNvbmRpdGlvblxuICAgICBob2xkcyBmb3IgYm90aCB2YWx1ZXMgb2YgW2IucG9zaXRpb25dLCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uXG4gICAgIGlzIGNhbGxlZC4gTW9yZSBwcmVjaXNlbHksIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGhvbGQgaWYgdGhlXG4gICAgIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdGx5LCBpbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgYnVmZmVyIGludmFyaWFudHM6XG4gICAgIC0gW29sZChiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbbmV3KGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtvbGQoYi5sZW5ndGgpIDw9IG5ldyhiLmxlbmd0aCldXG5cbiAgICAgTm90ZTogW2IucG9zaXRpb24gKyBtb3JlIDw9IG9sZChiLmxlbmd0aCldIGRvZXMgKm5vdCpcbiAgICAgaG9sZCBpbiBnZW5lcmFsLCBhcyBpdCBpcyBwcmVjaXNlbHkgdGhlIGNhc2Ugd2hlcmUgeW91IG5lZWRcbiAgICAgdG8gY2FsbCBbcmVzaXplXSB0byBpbmNyZWFzZSBbYi5sZW5ndGhdLlxuXG4gICAgIE5vdGU6IFthc3NlcnRdIGFib3ZlIGRvZXMgbm90IG1lYW4gdGhhdCB3ZSBrbm93IHRoZSBjb25kaXRpb25zXG4gICAgIGFsd2F5cyBob2xkLCBidXQgdGhhdCB0aGUgZnVuY3Rpb24gbWF5IHJldHVybiBjb3JyZWN0bHlcbiAgICAgb25seSBpZiB0aGV5IGhvbGQuXG5cbiAgICAgTm90ZTogdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSBkb2VzIG5vdCBuZWVkXG4gICAgIHRvIGJlIGNoZWNrZWQgd2l0aCB0aGlzIGxldmVsIG9mIHNjcnV0aW55LCBnaXZlbiB0aGF0IHRoZXlcbiAgICAgcmVhZC93cml0ZSB0aGUgYnVmZmVyIGltbWVkaWF0ZWx5IGFmdGVyIGNoZWNraW5nIHRoYXRcbiAgICAgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkIG9yIGNhbGxpbmcgW3Jlc2l6ZV0uXG4gICopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxuIGxldCBhZGRfdXRmXzhfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgIGFkZF9jaGFyIGIgKENoYXIudW5zYWZlX2NociB1KVxuIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhDMCBsb3IgKHUgbHNyIDYpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAzID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAzO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RTAgbG9yICh1IGxzciAxMikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgM1xuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEYwIGxvciAodSBsc3IgMTgpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIG9mZnNldCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIDAgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAoKiBUaGUgYXNzZXJ0aW9uIGJlbG93IG1heSBmYWlsIGluIHdlaXJkIHNjZW5hcmlvIHdoZXJlXG4gICAgIHRocmVhZGVkL2ZpbmFsaXplciBjb2RlLCBydW4gYXN5bmNocm9ub3VzbHkgZHVyaW5nIHRoZVxuICAgICBbcmVhbGx5X2lucHV0X3VwX3RvXSBjYWxsLCByYWNlcyBvbiB0aGUgYnVmZmVyOyB3ZSBkb24ndCBlbnN1cmVcbiAgICAgY29ycmVjdG5lc3MgaW4gdGhpcyBjYXNlLCBidXQgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAoc2VlIGRpc2N1c3Npb24gb2YgW3Jlc2l6ZV0pLiAqKVxuICBhc3NlcnQgKGIucG9zaXRpb24gKyBuIDw9IGIubGVuZ3RoKTtcbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyBqIGxpbSBpblxuICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIHByZXZpb3VzID09ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgdW5zYWZlX3NldF9pbnQ4IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICB1bnNhZmVfc2V0X2ludDE2IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQzMl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICB1bnNhZmVfc2V0X2ludDMyIGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQ2NF9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA4O1xuICB1bnNhZmVfc2V0X2ludDY0IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9sZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MTZfYmUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuXG5sZXQgYWRkX2ludDMyX2xlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQzMl9iZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG5cbmxldCBhZGRfaW50NjRfbGUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDY0X2JlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcblxubGV0IGFkZF91aW50OCA9IGFkZF9pbnQ4XG5sZXQgYWRkX3VpbnQxNl9uZSA9IGFkZF9pbnQxNl9uZVxubGV0IGFkZF91aW50MTZfbGUgPSBhZGRfaW50MTZfbGVcbmxldCBhZGRfdWludDE2X2JlID0gYWRkX2ludDE2X2JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+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+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDEgJiYgcy5bMF0gPSAnLScgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gICAgICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY29uc3RydWN0b3IgPVxuICAgICAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgICAgIGNvbnN0cnVjdG9yIF4gKGZpZWxkcyB4KVxuXG5sZXQgdG9fc3RyaW5nIGUgPVxuICBtYXRjaCB1c2VfcHJpbnRlcnMgZSB3aXRoXG4gIHwgU29tZSBzIC0+IHNcbiAgfCBOb25lIC0+IHRvX3N0cmluZ19kZWZhdWx0IGVcblxubGV0IHByaW50IGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBmbHVzaCBzdGRlcnI7XG4gICAgcmFpc2UgeFxuXG5sZXQgY2F0Y2ggZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZmx1c2ggc3Rkb3V0O1xuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBleGl0IDJcblxudHlwZSByYXdfYmFja3RyYWNlX3Nsb3RcbnR5cGUgcmF3X2JhY2t0cmFjZV9lbnRyeSA9IHByaXZhdGUgaW50XG50eXBlIHJhd19iYWNrdHJhY2UgPSByYXdfYmFja3RyYWNlX2VudHJ5IGFycmF5XG5cbmxldCByYXdfYmFja3RyYWNlX2VudHJpZXMgYnQgPSBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZTpcbiAgdW5pdCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZVwiXG5cbmV4dGVybmFsIHJhaXNlX3dpdGhfYmFja3RyYWNlOiBleG4gLT4gcmF3X2JhY2t0cmFjZSAtPiAnYVxuICA9IFwiJXJhaXNlX3dpdGhfYmFja3RyYWNlXCJcblxudHlwZSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICAgOiBib29sO1xuICAgICAgZmlsZW5hbWUgICAgOiBzdHJpbmc7XG4gICAgICBsaW5lX251bWJlciA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgIDogaW50O1xuICAgICAgZW5kX2NoYXIgICAgOiBpbnQ7XG4gICAgICBpc19pbmxpbmUgICA6IGJvb2w7XG4gICAgICBkZWZuYW1lICAgICA6IHN0cmluZztcbiAgICB9XG4gIHwgVW5rbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSA6IGJvb2xcbiAgICB9XG5cbigqIHRvIGF2b2lkIHdhcm5pbmcgKilcbmxldCBfID0gW0tub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZTsgZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlciA9IDA7IHN0YXJ0X2NoYXIgPSAwOyBlbmRfY2hhciA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2lubGluZSA9IGZhbHNlOyBkZWZuYW1lID0gXCJcIiB9O1xuICAgICAgICAgVW5rbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2UgfV1cblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Q6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiBiYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZTpcbiAgcmF3X2JhY2t0cmFjZSAtPiBiYWNrdHJhY2Vfc2xvdCBhcnJheSA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2VcIlxuXG5sZXQgY29udmVydF9yYXdfYmFja3RyYWNlIGJ0ID1cbiAgdHJ5IFNvbWUgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZm9ybWF0X2JhY2t0cmFjZV9zbG90IHBvcyBzbG90ID1cbiAgbGV0IGluZm8gaXNfcmFpc2UgPVxuICAgIGlmIGlzX3JhaXNlIHRoZW5cbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBhdFwiIGVsc2UgXCJSZS1yYWlzZWQgYXRcIlxuICAgIGVsc2VcbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIgZWxzZSBcIkNhbGxlZCBmcm9tXCJcbiAgaW5cbiAgbWF0Y2ggc2xvdCB3aXRoXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBpZiBsLmlzX3JhaXNlIHRoZW5cbiAgICAgICAgKCogY29tcGlsZXItaW5zZXJ0ZWQgcmUtcmFpc2UsIHNraXBwZWQgKikgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChzcHJpbnRmIFwiJXMgdW5rbm93biBsb2NhdGlvblwiIChpbmZvIGZhbHNlKSlcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBTb21lIChzcHJpbnRmIFwiJXMgJXMgaW4gZmlsZSBcXFwiJXNcXFwiJXMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAoaW5mbyBsLmlzX3JhaXNlKSBsLmRlZm5hbWUgbC5maWxlbmFtZVxuICAgICAgICAgICAgICAoaWYgbC5pc19pbmxpbmUgdGhlbiBcIiAoaW5saW5lZClcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgIGwubGluZV9udW1iZXIgbC5zdGFydF9jaGFyIGwuZW5kX2NoYXIpXG5cbmxldCBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBmcHJpbnRmIG91dGNoYW5cbiAgICAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gZnByaW50ZiBvdXRjaGFuIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmVcblxubGV0IHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiByYXdfYmFja3RyYWNlID1cbiAgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6IHByaW50cyB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgcHJpbnRfYmFja3RyYWNlIG91dGNoYW4gPVxuICBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5sZXQgYmFja3RyYWNlX3RvX3N0cmluZyBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGJwcmludGYgYiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHJhd19iYWNrdHJhY2UgPVxuICBiYWNrdHJhY2VfdG9fc3RyaW5nIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfaW5saW5lXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG5cbnR5cGUgbG9jYXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBsaW5lX251bWJlciA6IGludDtcbiAgc3RhcnRfY2hhciA6IGludDtcbiAgZW5kX2NoYXIgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwubGluZV9udW1iZXI7XG4gICAgICBzdGFydF9jaGFyICA9IGwuc3RhcnRfY2hhcjtcbiAgICAgIGVuZF9jaGFyICAgID0gbC5lbmRfY2hhcjtcbiAgICB9XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF9cbiAgfCBLbm93bl9sb2NhdGlvbiB7IGRlZm5hbWUgPSBcIlwiIH0gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gU29tZSBsLmRlZm5hbWVcblxubGV0IGJhY2t0cmFjZV9zbG90cyByYXdfYmFja3RyYWNlID1cbiAgKCogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgU29tZSBpc1xuICAgICByZXR1cm5lZCBvbmx5IGlmIGEgcGFydCBvZiB0aGUgdHJhY2UgaXMgdXNhYmxlLiBUaGlzIGdpdmVzIHVzXG4gICAgIGEgYml0IG1vcmUgd29yayB0aGFuIGp1c3QgY29udmVydF9yYXdfYmFja3RyYWNlLCBidXQgaXQgbWFrZXMgdGhlXG4gICAgIEFQSSBtb3JlIHVzZXItZnJpZW5kbHkgLS0gb3RoZXJ3aXNlIG1vc3QgdXNlcnMgd291bGQgaGF2ZSB0b1xuICAgICByZWltcGxlbWVudCB0aGUgXCJQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgc29ycnlcIiBsb2dpY1xuICAgICB0aGVtc2VsdmVzLiAqKVxuICBtYXRjaCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYmFja3RyYWNlIC0+XG4gICAgICBsZXQgdXNhYmxlX3Nsb3QgPSBmdW5jdGlvblxuICAgICAgICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuICAgICAgICB8IEtub3duX2xvY2F0aW9uIF8gLT4gdHJ1ZSBpblxuICAgICAgbGV0IHJlYyBleGlzdHNfdXNhYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCAoLTEpIC0+IGZhbHNlXG4gICAgICAgIHwgaSAtPiB1c2FibGVfc2xvdCBiYWNrdHJhY2UuKGkpIHx8IGV4aXN0c191c2FibGUgKGkgLSAxKSBpblxuICAgICAgaWYgZXhpc3RzX3VzYWJsZSAoQXJyYXkubGVuZ3RoIGJhY2t0cmFjZSAtIDEpXG4gICAgICB0aGVuIFNvbWUgYmFja3RyYWNlXG4gICAgICBlbHNlIE5vbmVcblxubGV0IGJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkgZW50cnkgPVxuICBiYWNrdHJhY2Vfc2xvdHMgW3wgZW50cnkgfF1cblxubW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGZvcm1hdCA9IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdFxuICBsZXQgaXNfcmFpc2UgPSBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZVxuICBsZXQgaXNfaW5saW5lID0gYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lXG4gIGxldCBsb2NhdGlvbiA9IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uXG4gIGxldCBuYW1lID0gYmFja3RyYWNlX3Nsb3RfZGVmbmFtZVxuZW5kXG5cbmxldCByYXdfYmFja3RyYWNlX2xlbmd0aCBidCA9IEFycmF5Lmxlbmd0aCBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZSAtPiBpbnQgLT4gcmF3X2JhY2t0cmFjZV9zbG90ID0gXCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiByYXdfYmFja3RyYWNlX3Nsb3Qgb3B0aW9uXG4gID0gXCJjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XCJcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6XG4gICByZXR1cm5zIHRoZSAqc3RyaW5nKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBnZXRfYmFja3RyYWNlICgpID0gcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5leHRlcm5hbCByZWNvcmRfYmFja3RyYWNlOiBib29sIC0+IHVuaXQgPSBcImNhbWxfcmVjb3JkX2JhY2t0cmFjZVwiXG5leHRlcm5hbCBiYWNrdHJhY2Vfc3RhdHVzOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfYmFja3RyYWNlX3N0YXR1c1wiXG5cbmxldCByZWMgcmVnaXN0ZXJfcHJpbnRlciBmbiA9XG4gIGxldCBvbGRfcHJpbnRlcnMgPSBBdG9taWMuZ2V0IHByaW50ZXJzIGluXG4gIGxldCBuZXdfcHJpbnRlcnMgPSBmbiA6OiBvbGRfcHJpbnRlcnMgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IHByaW50ZXJzIG9sZF9wcmludGVycyBuZXdfcHJpbnRlcnMgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiByZWdpc3Rlcl9wcmludGVyIGZuXG5cbmV4dGVybmFsIGdldF9jYWxsc3RhY2s6IGludCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFja1wiXG5cbmxldCBleG5fc2xvdCB4ID1cbiAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gIGlmIE9iai50YWcgeCA9IDAgdGhlbiBPYmouZmllbGQgeCAwIGVsc2UgeFxuXG5sZXQgZXhuX3Nsb3RfaWQgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMSkgOiBpbnQpXG5cbmxldCBleG5fc2xvdF9uYW1lIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDApIDogc3RyaW5nKVxuXG5leHRlcm5hbCBnZXRfZGVidWdfaW5mb19zdGF0dXMgOiB1bml0IC0+IGludCA9IFwiY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1c1wiXG5cbigqIERlc2NyaXB0aW9ucyBmb3IgZXJyb3JzIGluIHN0YXJ0dXAuaC4gU2VlIGFsc28gYmFja3RyYWNlLmMgKilcbmxldCBlcnJvcnMgPSBbfCBcIlwiO1xuICAoKiBGSUxFX05PVF9GT1VORCAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgbm90IGZvdW5kKVwiO1xuICAoKiBCQURfQllURUNPREUgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdClcIjtcbiAgKCogV1JPTkdfTUFHSUMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGhhcyB3cm9uZyBtYWdpYyBudW1iZXIpXCI7XG4gICgqIE5PX0ZEUyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgY2Fubm90IGJlIG9wZW5lZDtcXG4gXFxcbiAgICAgIC0tIHRvbyBtYW55IG9wZW4gZmlsZXMuIFRyeSBydW5uaW5nIHdpdGggT0NBTUxSVU5QQVJBTT1iPTIpXCJcbnxdXG5cbmxldCBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlID1cbiAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIGxldCBzdGF0dXMgPSBnZXRfZGVidWdfaW5mb19zdGF0dXMgKCkgaW5cbiAgaWYgc3RhdHVzIDwgMCB0aGVuXG4gICAgcHJlcnJfZW5kbGluZSBlcnJvcnMuKGFicyBzdGF0dXMpO1xuICBmbHVzaCBzdGRlcnJcblxubGV0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyID0gcmVmIGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXJcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBmbiA9IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIDo9IGZuXG5cbmxldCBlbXB0eV9iYWNrdHJhY2UgOiByYXdfYmFja3RyYWNlID0gW3wgfF1cblxubGV0IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSA9XG4gIHRyeVxuICAgIGdldF9yYXdfYmFja3RyYWNlICgpXG4gIHdpdGggXyAoKiBPdXRfb2ZfbWVtb3J5PyAqKSAtPlxuICAgIGVtcHR5X2JhY2t0cmFjZVxuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgICgqIEdldCB0aGUgYmFja3RyYWNlIG5vdywgaW4gY2FzZSBvbmUgb2YgdGhlIFthdF9leGl0XSBmdW5jdGlvblxuICAgICAgIGRlc3Ryb3lzIGl0LiAqKVxuICAgIGxldCByYXdfYmFja3RyYWNlID1cbiAgICAgIGlmIGRlYnVnZ2VyX2luX3VzZSAoKiBTYW1lIHRlc3QgYXMgaW4gW3J1bnRpbWUvcHJpbnRleGMuY10gKikgdGhlblxuICAgICAgICBlbXB0eV9iYWNrdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpXG4gICAgaW5cbiAgICAodHJ5IFN0ZGxpYi5kb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgdHJ5XG4gICAgICAhdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2VcbiAgICB3aXRoIGV4bicgLT5cbiAgICAgIGxldCByYXdfYmFja3RyYWNlJyA9IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yIGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyOiBleGNlcHRpb24gJXNcXG5cIlxuICAgICAgICAodG9fc3RyaW5nIGV4bicpO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZSc7XG4gICAgICBmbHVzaCBzdGRlcnJcbiAgd2l0aFxuICAgIHwgT3V0X29mX21lbW9yeSAtPlxuICAgICAgICBwcmVycl9lbmRsaW5lXG4gICAgICAgICAgXCJGYXRhbCBlcnJvcjogb3V0IG9mIG1lbW9yeSBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlclwiXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IFtjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbl0gaW5cbiAgIFtydW50aW1lL3ByaW50ZXhjLmNdIHdoaWNoIGV4cGVjdHMgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlXG4gIHdpdGggXyAtPlxuICAgICgqIFRoZXJlIGlzIG5vdCBtdWNoIHdlIGNhbiBkbyBhdCB0aGlzIHBvaW50ICopXG4gICAgKClcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiXG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnQ7XG4gIG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgdmVyYm9zZSA6IGludDtcbiAgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnQ7XG4gIHdpbmRvd19zaXplIDogaW50O1xuICBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50O1xufVxuXG5leHRlcm5hbCBzdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3N0YXRcIlxuZXh0ZXJuYWwgcXVpY2tfc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19xdWlja19zdGF0XCJcbmV4dGVybmFsIGNvdW50ZXJzIDogdW5pdCAtPiAoZmxvYXQgKiBmbG9hdCAqIGZsb2F0KSA9IFwiY2FtbF9nY19jb3VudGVyc1wiXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pXG4gID0gXCJjYW1sX2djX21pbm9yX3dvcmRzXCIgXCJjYW1sX2djX21pbm9yX3dvcmRzX3VuYm94ZWRcIlxuZXh0ZXJuYWwgZ2V0IDogdW5pdCAtPiBjb250cm9sID0gXCJjYW1sX2djX2dldFwiXG5leHRlcm5hbCBzZXQgOiBjb250cm9sIC0+IHVuaXQgPSBcImNhbWxfZ2Nfc2V0XCJcbmV4dGVybmFsIG1pbm9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21pbm9yXCJcbmV4dGVybmFsIG1ham9yX3NsaWNlIDogaW50IC0+IGludCA9IFwiY2FtbF9nY19tYWpvcl9zbGljZVwiXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBmdWxsX21ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2Z1bGxfbWFqb3JcIlxuZXh0ZXJuYWwgY29tcGFjdCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19jb21wYWN0aW9uXCJcbmV4dGVybmFsIGdldF9taW5vcl9mcmVlIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21pbm9yX2ZyZWVcIlxuZXh0ZXJuYWwgZ2V0X2J1Y2tldCA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2J1Y2tldFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBnZXRfY3JlZGl0IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2NyZWRpdFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBodWdlX2ZhbGxiYWNrX2NvdW50IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFwiXG5leHRlcm5hbCBldmVudGxvZ19wYXVzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19wYXVzZVwiXG5leHRlcm5hbCBldmVudGxvZ19yZXN1bWUgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcmVzdW1lXCJcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIHJlZlxudHlwZSBhbGFybV9yZWMgPSB7YWN0aXZlIDogYWxhcm07IGYgOiB1bml0IC0+IHVuaXR9XG5cbmxldCByZWMgY2FsbF9hbGFybSBhcmVjID1cbiAgaWYgIShhcmVjLmFjdGl2ZSkgdGhlbiBiZWdpblxuICAgIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgICBhcmVjLmYgKCk7XG4gIGVuZFxuXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSByZWYgdHJ1ZTsgZiA9IGYgfSBpblxuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubGV0IGRlbGV0ZV9hbGFybSBhID0gYSA6PSBmYWxzZVxuXG5tb2R1bGUgTWVtcHJvZiA9XG4gIHN0cnVjdFxuICAgIHR5cGUgYWxsb2NhdGlvbl9zb3VyY2UgPSBOb3JtYWwgfCBNYXJzaGFsIHwgQ3VzdG9tXG4gICAgdHlwZSBhbGxvY2F0aW9uID1cbiAgICAgIHsgbl9zYW1wbGVzIDogaW50O1xuICAgICAgICBzaXplIDogaW50O1xuICAgICAgICBzb3VyY2UgOiBhbGxvY2F0aW9uX3NvdXJjZTtcbiAgICAgICAgY2FsbHN0YWNrIDogUHJpbnRleGMucmF3X2JhY2t0cmFjZSB9XG5cbiAgICB0eXBlICgnbWlub3IsICdtYWpvcikgdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yOiBhbGxvY2F0aW9uIC0+ICdtaW5vciBvcHRpb247XG4gICAgICBhbGxvY19tYWpvcjogYWxsb2NhdGlvbiAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgcHJvbW90ZTogJ21pbm9yIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBkZWFsbG9jX21pbm9yOiAnbWlub3IgLT4gdW5pdDtcbiAgICAgIGRlYWxsb2NfbWFqb3I6ICdtYWpvciAtPiB1bml0O1xuICAgIH1cblxuICAgIGxldCBudWxsX3RyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGFsbG9jX21ham9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgcHJvbW90ZSA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGRlYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgICAgZGVhbGxvY19tYWpvciA9IChmdW4gXyAtPiAoKSk7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWwgY19zdGFydCA6XG4gICAgICBmbG9hdCAtPiBpbnQgLT4gKCdtaW5vciwgJ21ham9yKSB0cmFja2VyIC0+IHVuaXRcbiAgICAgID0gXCJjYW1sX21lbXByb2Zfc3RhcnRcIlxuXG4gICAgbGV0IHN0YXJ0XG4gICAgICB+c2FtcGxpbmdfcmF0ZVxuICAgICAgPyhjYWxsc3RhY2tfc2l6ZSA9IG1heF9pbnQpXG4gICAgICB0cmFja2VyID1cbiAgICAgIGNfc3RhcnQgc2FtcGxpbmdfcmF0ZSBjYWxsc3RhY2tfc2l6ZSB0cmFja2VyXG5cbiAgICBleHRlcm5hbCBzdG9wIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2Zfc3RvcFwiXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNZXNzYWdlIGRpZ2VzdCAoTUQ1KSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG5leHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxubGV0IHN0cmluZyBzdHIgPVxuICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxubGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxubGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG5sZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID0gc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxubGV0IGZpbGUgZmlsZW5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlbmFtZSBpblxuICBtYXRjaCBjaGFubmVsIGljICgtMSkgd2l0aFxuICAgIHwgZCAtPiBjbG9zZV9pbiBpYzsgZFxuICAgIHwgZXhjZXB0aW9uIGUgLT4gY2xvc2VfaW4gaWM7IHJhaXNlIGVcblxubGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9XG4gIG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxubGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gMTZcblxubGV0IGNoYXJfaGV4IG4gPVxuICBDaGFyLnVuc2FmZV9jaHIgKG4gKyBpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnIGVsc2UgKENoYXIuY29kZSAnYScgLSAxMCkpXG5cbmxldCB0b19oZXggZCA9XG4gIGlmIFN0cmluZy5sZW5ndGggZCA8PiAxNiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDMyIGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIGxldCB4ID0gQ2hhci5jb2RlIGQuW2ldIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMikgKGNoYXJfaGV4ICh4IGxzciA0KSk7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMisxKSAoY2hhcl9oZXggKHggbGFuZCAweDBmKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG5cbmxldCBmcm9tX2hleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IDMyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuZnJvbV9oZXhcIjtcbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEaWdlc3QuZnJvbV9oZXhcIilcbiAgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIEJ5dGVzLnNldCByZXN1bHQgaSAoQ2hhci5jaHIgKGJ5dGUgKDIgKiBpKSkpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcbiAgIFRoaXMgaXMgYSBsYWdnZWQtRmlib25hY2NpIEYoNTUsIDI0LCArKSB3aXRoIGEgbW9kaWZpZWQgYWRkaXRpb25cbiAgIGZ1bmN0aW9uIHRvIGVuaGFuY2UgdGhlIG1peGluZyBvZiBiaXRzLlxuICAgSWYgd2UgdXNlIG5vcm1hbCBhZGRpdGlvbiwgdGhlIGxvdy1vcmRlciBiaXQgZmFpbHMgdGVzdHMgMSBhbmQgN1xuICAgb2YgdGhlIERpZWhhcmQgdGVzdCBzdWl0ZSwgYW5kIGJpdHMgMSBhbmQgMiBhbHNvIGZhaWwgdGVzdCA3LlxuICAgSWYgd2UgdXNlIG11bHRpcGxpY2F0aW9uIGFzIHN1Z2dlc3RlZCBieSBNYXJzYWdsaWEsIGl0IGRvZXNuJ3QgZmFyZVxuICAgbXVjaCBiZXR0ZXIuXG4gICBCeSBtaXhpbmcgdGhlIGJpdHMgb2Ygb25lIG9mIHRoZSBudW1iZXJzIGJlZm9yZSBhZGRpdGlvbiAoWE9SIHRoZVxuICAgNSBoaWdoLW9yZGVyIGJpdHMgaW50byB0aGUgbG93LW9yZGVyIGJpdHMpLCB3ZSBnZXQgYSBnZW5lcmF0b3IgdGhhdFxuICAgcGFzc2VzIGFsbCB0aGUgRGllaGFyZCB0ZXN0cy5cbiopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSB7IHN0IDogaW50IGFycmF5OyBtdXRhYmxlIGlkeCA6IGludCB9XG5cbiAgbGV0IG5ld19zdGF0ZSAoKSA9IHsgc3QgPSBBcnJheS5tYWtlIDU1IDA7IGlkeCA9IDAgfVxuICBsZXQgYXNzaWduIHN0MSBzdDIgPVxuICAgIEFycmF5LmJsaXQgc3QyLnN0IDAgc3QxLnN0IDAgNTU7XG4gICAgc3QxLmlkeCA8LSBzdDIuaWR4XG5cblxuICBsZXQgZnVsbF9pbml0IHMgc2VlZCA9XG4gICAgbGV0IGNvbWJpbmUgYWNjdSB4ID0gRGlnZXN0LnN0cmluZyAoYWNjdSBeIEludC50b19zdHJpbmcgeCkgaW5cbiAgICBsZXQgZXh0cmFjdCBkID1cbiAgICAgIENoYXIuY29kZSBkLlswXSArIChDaGFyLmNvZGUgZC5bMV0gbHNsIDgpICsgKENoYXIuY29kZSBkLlsyXSBsc2wgMTYpXG4gICAgICArIChDaGFyLmNvZGUgZC5bM10gbHNsIDI0KVxuICAgIGluXG4gICAgbGV0IHNlZWQgPSBpZiBBcnJheS5sZW5ndGggc2VlZCA9IDAgdGhlbiBbfCAwIHxdIGVsc2Ugc2VlZCBpblxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgZG9cbiAgICAgIHMuc3QuKGkpIDwtIGk7XG4gICAgZG9uZTtcbiAgICBsZXQgYWNjdSA9IHJlZiBcInhcIiBpblxuICAgIGZvciBpID0gMCB0byA1NCArIEludC5tYXggNTUgbCBkb1xuICAgICAgbGV0IGogPSBpIG1vZCA1NSBpblxuICAgICAgbGV0IGsgPSBpIG1vZCBsIGluXG4gICAgICBhY2N1IDo9IGNvbWJpbmUgIWFjY3Ugc2VlZC4oayk7XG4gICAgICBzLnN0LihqKSA8LSAocy5zdC4oaikgbHhvciBleHRyYWN0ICFhY2N1KSBsYW5kIDB4M0ZGRkZGRkY7ICAoKiBQUiM1NTc1ICopXG4gICAgZG9uZTtcbiAgICBzLmlkeCA8LSAwXG5cblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgZnVsbF9pbml0IHJlc3VsdCBzZWVkO1xuICAgIHJlc3VsdFxuXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID0gbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGFzc2lnbiByZXN1bHQgcztcbiAgICByZXN1bHRcblxuXG4gICgqIFJldHVybnMgMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIHMuaWR4IDwtIChzLmlkeCArIDEpIG1vZCA1NTtcbiAgICBsZXQgY3VydmFsID0gcy5zdC4ocy5pZHgpIGluXG4gICAgbGV0IG5ld3ZhbCA9IHMuc3QuKChzLmlkeCArIDI0KSBtb2QgNTUpXG4gICAgICAgICAgICAgICAgICsgKGN1cnZhbCBseG9yICgoY3VydmFsIGxzciAyNSkgbGFuZCAweDFGKSkgaW5cbiAgICBsZXQgbmV3dmFsMzAgPSBuZXd2YWwgbGFuZCAweDNGRkZGRkZGIGluICAoKiBQUiM1NTc1ICopXG4gICAgcy5zdC4ocy5pZHgpIDwtIG5ld3ZhbDMwO1xuICAgIG5ld3ZhbDMwXG5cblxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gIGxldCByZWMgaW50NjNhdXggcyBuID1cbiAgICBsZXQgbWF4X2ludF8zMiA9ICgxIGxzbCAzMCkgKyAweDNGRkZGRkZGIGluICgqIDB4N0ZGRkZGRkYgKilcbiAgICBsZXQgYjEgPSBiaXRzIHMgaW5cbiAgICBsZXQgYjIgPSBiaXRzIHMgaW5cbiAgICBsZXQgKHIsIG1heF9pbnQpID1cbiAgICAgIGlmIG4gPD0gbWF4X2ludF8zMiB0aGVuXG4gICAgICAgICgqIDMxIHJhbmRvbSBiaXRzIG9uIGJvdGggNjQtYml0IE9DYW1sIGFuZCBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMTUgYml0cyBvZiBiMSBhbmQgMTYgYml0cyBvZiBiMi4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKGIyIGxhbmQgMHgzRkZGQzAwMCkgbHNsIDEpIGxvciAoYjEgbHNyIDE1KSlcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludF8zMilcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGIzID0gYml0cyBzIGluXG4gICAgICAgICgqIDYyIHJhbmRvbSBiaXRzIG9uIDY0LWJpdCBPQ2FtbDsgdW5yZWFjaGFibGUgb24gSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDIwIGJpdHMgb2YgYjEgYW5kIDIxIGJpdHMgb2YgYjIgYW5kIGIzLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoKGIzIGxhbmQgMHgzRkZGRkUwMCkgbHNsIDEyKSBsb3IgKGIyIGxzciA5KSkgbHNsIDIwKVxuICAgICAgICAgICAgbG9yIChiMSBsc3IgMTApXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnQpXG4gICAgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IG1heF9pbnQgLSBuICsgMSB0aGVuIGludDYzYXV4IHMgbiBlbHNlIHZcblxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgZWxzZSBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgdGhlblxuICAgICAgaW50NjNhdXggcyBib3VuZFxuICAgIGVsc2VcbiAgICAgIGludGF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50MzIub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IChiaXRzIHMgbGFuZCAxKSkgMzAgaW5cbiAgICBsZXQgciA9IEludDMyLmxvZ29yIGIxIGIyIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgaWYgSW50MzIuc3ViIHIgdiA+IEludDMyLmFkZCAoSW50MzIuc3ViIEludDMyLm1heF9pbnQgbikgMWxcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDY0Lm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzKSkgMzAgaW5cbiAgICBsZXQgYjMgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcyBsYW5kIDcpKSA2MCBpblxuICAgIGxldCByID0gSW50NjQubG9nb3IgYjEgKEludDY0LmxvZ29yIGIyIGIzKSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgIGlmIEludDY0LnN1YiByIHYgPiBJbnQ2NC5hZGQgKEludDY0LnN1YiBJbnQ2NC5tYXhfaW50IG4pIDFMXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuXG4gICgqIFJldHVybnMgYSBmbG9hdCAwIDw9IHggPD0gMSB3aXRoIGF0IG1vc3QgNjAgYml0cyBvZiBwcmVjaXNpb24uICopXG4gIGxldCByYXdmbG9hdCBzID1cbiAgICBsZXQgc2NhbGUgPSAxMDczNzQxODI0LjAgICgqIDJeMzAgKilcbiAgICBhbmQgcjEgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBhbmQgcjIgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBpbiAocjEgLy4gc2NhbGUgKy4gcjIpIC8uIHNjYWxlXG5cblxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICBsZXQgYm9vbCBzID0gKGJpdHMgcyBsYW5kIDEgPSAwKVxuXG5lbmRcblxuKCogVGhpcyBpcyB0aGUgc3RhdGUgeW91IGdldCB3aXRoIFtpbml0IDI3MTgyODE4XSBhbmQgdGhlbiBhcHBseWluZ1xuICAgdGhlIFwibGFuZCAweDNGRkZGRkZGXCIgZmlsdGVyIHRvIHRoZW0uICBTZWUgIzU1NzUsICM1NzkzLCAjNTk3Ny4gKilcbmxldCBkZWZhdWx0ID0ge1xuICBTdGF0ZS5zdCA9IFt8XG4gICAgICAweDNhZTI1MjJiOyAweDFkOGQ0NjM0OyAweDE1YjRmYWQwOyAweDE4YjE0YWNlOyAweDEyZjhhM2M0OyAweDNiMDg2YzQ3O1xuICAgICAgMHgxNmQ0NjdkNjsgMHgxMDFkOTFjNzsgMHgzMjFkZjE3NzsgMHgwMTc2YzE5MzsgMHgxZmY3MmJmMTsgMHgxZTg4OTEwOTtcbiAgICAgIDB4MGI0NjRiMTg7IDB4MmI4NmI5N2M7IDB4MDg5MWRhNDg7IDB4MDMxMzc0NjM7IDB4MDg1YWM1YTE7IDB4MTVkNjFmMmY7XG4gICAgICAweDNiY2VkMzU5OyAweDI5YzFjMTMyOyAweDNhODY3NjZlOyAweDM2NmQ4Yzg2OyAweDFmNWI2MjIyOyAweDNjZTFiNTlmO1xuICAgICAgMHgyZWJmNzhlMTsgMHgyN2NkMWI4NjsgMHgyNThmM2RjMzsgMHgzODlhODE5NDsgMHgwMmU0YzQ0YzsgMHgxOGM0M2Y3ZDtcbiAgICAgIDB4MGY2ZTUzNGY7IDB4MWU3ZGYzNTk7IDB4MDU1ZDBiN2U7IDB4MTBlODRlN2U7IDB4MTI2MTk4ZTQ7IDB4MGU3NzIyY2I7XG4gICAgICAweDFjYmVkZTI4OyAweDMzOTFiOTY0OyAweDNkNDBlOTJhOyAweDBjNTk5MzNkOyAweDBiOGNkMGI3OyAweDI0ZWZmZjFjO1xuICAgICAgMHgyODAzZmRhYTsgMHgwOGViYzcyZTsgMHgwZjUyMmUzMjsgMHgwNTM5OGVkYzsgMHgyMTQ0YTA0YzsgMHgwYWVmM2NiZDtcbiAgICAgIDB4MDFhZDQ3MTk7IDB4MzViOTNjZDY7IDB4MmE1NTlkNGY7IDB4MWU2ZmQ3Njg7IDB4MjZlMjdmMzY7IDB4MTg2ZjE4YzM7XG4gICAgICAweDJmYmY5NjdhO1xuICAgIHxdO1xuICBTdGF0ZS5pZHggPSAwO1xufVxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgZGVmYXVsdFxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCBkZWZhdWx0IGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiBkZWZhdWx0IGJvdW5kXG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IGRlZmF1bHQgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IGRlZmF1bHQgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCBkZWZhdWx0XG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IHNlZWRcbmxldCBpbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IGRlZmF1bHRcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiBkZWZhdWx0IHNcblxuKCoqKioqKioqKioqKioqKioqKioqXG5cbigqIFRlc3QgZnVuY3Rpb25zLiAgTm90IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5LlxuICAgVGhlIFtjaGlzcXVhcmVdIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBuID4gMTByLlxuICAgSXQgcmV0dXJucyBhIHRyaXBsZSAobG93LCBhY3R1YWwsIGhpZ2gpLlxuICAgSWYgbG93IDw9IGFjdHVhbCA8PSBoaWdoLCB0aGUgW2ddIGZ1bmN0aW9uIHBhc3NlZCB0aGUgdGVzdCxcbiAgIG90aGVyd2lzZSBpdCBmYWlsZWQuXG5cbiAgU29tZSByZXN1bHRzOlxuXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDUwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI5OTc5MjY0MzsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAxNDE0MjEzNjsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMjQ7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAwOyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMjQ7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDE0MTQyMTM2OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMjk5NzkyNjQzOyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbi0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTk3LjUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4OS43NDAwMDAwMDAwMDUyMzg3LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDQ4NTguNTc4NjQzNzYyNjksIDUwNDUuNSwgNTE0MS40MjEzNTYyMzczMSlcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9XG4oOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTQ0LjgwNTk5OTk5OTk4MjMwNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDE5LjE5NzQ0MDAwMDAwMzU1LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU5LjMxNzc2MDAwMDAwNTM2LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDM5Ljk4NDYzOTk5OTk5NTEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU0LjM4MjA3OTk5OTk5NTc3LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDkwLjA5NjAwMDAwMDAwNSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDc2Ljc4NzIwMDAwMDAwNjEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjE3NjAwMDAwMDAwNjc1MjEsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4yMTYwMDAwMDAwMDAzNDkyLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODAuNjIyMDAwMDAwMDAzMDI2OCwgMTIwLilcblxuKilcblxuKCogUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHNxdWFyZXMgb2YgdltpMCxpMVsgKilcbmxldCByZWMgc3Vtc3EgdiBpMCBpMSA9XG4gIGlmIGkwID49IGkxIHRoZW4gMC4wXG4gIGVsc2UgaWYgaTEgPSBpMCArIDEgdGhlbiBTdGRsaWIuZmxvYXQgdi4oaTApICouIFN0ZGxpYi5mbG9hdCB2LihpMClcbiAgZWxzZSBzdW1zcSB2IGkwICgoaTAraTEpLzIpICsuIHN1bXNxIHYgKChpMCtpMSkvMikgaTFcblxuXG5sZXQgY2hpc3F1YXJlIGcgbiByID1cbiAgaWYgbiA8PSAxMCAqIHIgdGhlbiBpbnZhbGlkX2FyZyBcImNoaXNxdWFyZVwiO1xuICBsZXQgZiA9IEFycmF5Lm1ha2UgciAwIGluXG4gIGZvciBpID0gMSB0byBuIGRvXG4gICAgbGV0IHQgPSBnIHIgaW5cbiAgICBmLih0KSA8LSBmLih0KSArIDFcbiAgZG9uZTtcbiAgbGV0IHQgPSBzdW1zcSBmIDAgclxuICBhbmQgciA9IFN0ZGxpYi5mbG9hdCByXG4gIGFuZCBuID0gU3RkbGliLmZsb2F0IG4gaW5cbiAgbGV0IHNyID0gMi4wICouIHNxcnQgciBpblxuICAociAtLiBzciwgICAociAqLiB0IC8uIG4pIC0uIG4sICAgciArLiBzcilcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIGxpbmVhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbSBudW1iZXJzLlxuKilcbmxldCBzdCA9IHJlZiAwXG5sZXQgaW5pdF9kaWZmIHIgPSBzdCA6PSBpbnQgclxubGV0IGRpZmYgciA9XG4gIGxldCB4MSA9ICFzdFxuICBhbmQgeDIgPSBpbnQgclxuICBpblxuICBzdCA6PSB4MjtcbiAgaWYgeDEgPj0geDIgdGhlblxuICAgIHgxIC0geDJcbiAgZWxzZVxuICAgIHIgKyB4MSAtIHgyXG5cblxubGV0IHN0MSA9IHJlZiAwXG5hbmQgc3QyID0gcmVmIDBcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIHF1YWRyYXRpYyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbVxuICAgbnVtYmVycy5cbiopXG5sZXQgaW5pdF9kaWZmMiByID0gc3QxIDo9IGludCByOyBzdDIgOj0gaW50IHJcbmxldCBkaWZmMiByID1cbiAgbGV0IHgxID0gIXN0MVxuICBhbmQgeDIgPSAhc3QyXG4gIGFuZCB4MyA9IGludCByXG4gIGluXG4gIHN0MSA6PSB4MjtcbiAgc3QyIDo9IHgzO1xuICAoeDMgLSB4MiAtIHgyICsgeDEgKyAyKnIpIG1vZCByXG5cblxuKioqKioqKioqKioqKioqKioqKiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gYnVja2V0cyBiZWNvbWUgdG9vIGxvbmcuICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IHJlZiByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IHJhbmRvbWl6ZWQgOj0gdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSAhcmFuZG9taXplZFxuXG5sZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlciAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6IHQgLT4gaW50ICogaW50ICogaW50ICogaW50ICogaW50ICogaW50XG5lbmRcblxubW9kdWxlIE1ha2UgKEggOiBIYXNodGJsLkhhc2hlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGRhdGEgPSBILnQpID0gc3RydWN0XG5cbiAgdHlwZSAnYSB3ZWFrX3QgPSAnYSB0XG4gIGxldCB3ZWFrX2NyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgZW1wdHlidWNrZXQgPSB3ZWFrX2NyZWF0ZSAwXG5cbiAgdHlwZSBkYXRhID0gSC50XG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgdGFibGUgOiBkYXRhIHdlYWtfdCBhcnJheTtcbiAgICBtdXRhYmxlIGhhc2hlcyA6IGludCBhcnJheSBhcnJheTtcbiAgICBtdXRhYmxlIGxpbWl0IDogaW50OyAgICAgICAgICAgICAgICgqIGJ1Y2tldCBzaXplIGxpbWl0ICopXG4gICAgbXV0YWJsZSBvdmVyc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBudW1iZXIgb2Ygb3ZlcnNpemUgYnVja2V0cyAqKVxuICAgIG11dGFibGUgcm92ZXIgOiBpbnQ7ICAgICAgICAgICAgICAgKCogZm9yIGludGVybmFsIGJvb2trZWVwaW5nICopXG4gIH1cblxuICBsZXQgZ2V0X2luZGV4IHQgaCA9IChoIGxhbmQgbWF4X2ludCkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuICBsZXQgbGltaXQgPSA3XG4gIGxldCBvdmVyX2xpbWl0ID0gMlxuXG4gIGxldCBjcmVhdGUgc3ogPVxuICAgIGxldCBzeiA9IGlmIHN6IDwgNyB0aGVuIDcgZWxzZSBzeiBpblxuICAgIGxldCBzeiA9IGlmIHN6ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIHN6IGluXG4gICAge1xuICAgICAgdGFibGUgPSBBcnJheS5tYWtlIHN6IGVtcHR5YnVja2V0O1xuICAgICAgaGFzaGVzID0gQXJyYXkubWFrZSBzeiBbfCB8XTtcbiAgICAgIGxpbWl0ID0gbGltaXQ7XG4gICAgICBvdmVyc2l6ZSA9IDA7XG4gICAgICByb3ZlciA9IDA7XG4gICAgfVxuXG4gIGxldCBjbGVhciB0ID1cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgICB0LnRhYmxlLihpKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgIHQuaGFzaGVzLihpKSA8LSBbfCB8XTtcbiAgICBkb25lO1xuICAgIHQubGltaXQgPC0gbGltaXQ7XG4gICAgdC5vdmVyc2l6ZSA8LSAwXG5cblxuICBsZXQgZm9sZCBmIHQgaW5pdCA9XG4gICAgbGV0IHJlYyBmb2xkX2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGZvbGRfYnVja2V0IChpKzEpIGIgKGYgdiBhY2N1KVxuICAgICAgfCBOb25lIC0+IGZvbGRfYnVja2V0IChpKzEpIGIgYWNjdVxuICAgIGluXG4gICAgQXJyYXkuZm9sZF9yaWdodCAoZm9sZF9idWNrZXQgMCkgdC50YWJsZSBpbml0XG5cblxuICBsZXQgaXRlciBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGYgdjsgaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgICAgfCBOb25lIC0+IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXIgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCBpdGVyX3dlYWsgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgaiBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBjaGVjayBiIGkgd2l0aFxuICAgICAgfCB0cnVlIC0+IGYgYiB0Lmhhc2hlcy4oaikgaTsgaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgICB8IGZhbHNlIC0+IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgIGluXG4gICAgQXJyYXkuaXRlcmkgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCByZWMgY291bnRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgY291bnRfYnVja2V0IChpKzEpIGIgKGFjY3UgKyAoaWYgY2hlY2sgYiBpIHRoZW4gMSBlbHNlIDApKVxuXG5cbiAgbGV0IGNvdW50IHQgPVxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGNvdW50X2J1Y2tldCAwKSB0LnRhYmxlIDBcblxuXG4gIGxldCBuZXh0X3N6IG4gPSBJbnQubWluICgzICogbiAvIDIgKyAzKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuICBsZXQgcHJldl9zeiBuID0gKChuIC0gMykgKiAyICsgMikgLyAzXG5cbiAgbGV0IHRlc3Rfc2hyaW5rX2J1Y2tldCB0ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4odC5yb3ZlcikgaW5cbiAgICBsZXQgaGJ1Y2tldCA9IHQuaGFzaGVzLih0LnJvdmVyKSBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHByZXZfbGVuID0gcHJldl9zeiBsZW4gaW5cbiAgICBsZXQgbGl2ZSA9IGNvdW50X2J1Y2tldCAwIGJ1Y2tldCAwIGluXG4gICAgaWYgbGl2ZSA8PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVjIGxvb3AgaSBqID1cbiAgICAgICAgaWYgaiA+PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBsb29wIChpICsgMSkgalxuICAgICAgICAgIGVsc2UgaWYgY2hlY2sgYnVja2V0IGogdGhlbiBiZWdpblxuICAgICAgICAgICAgYmxpdCBidWNrZXQgaiBidWNrZXQgaSAxO1xuICAgICAgICAgICAgaGJ1Y2tldC4oaSkgPC0gaGJ1Y2tldC4oaik7XG4gICAgICAgICAgICBsb29wIChpICsgMSkgKGogLSAxKTtcbiAgICAgICAgICBlbmQgZWxzZSBsb29wIGkgKGogLSAxKTtcbiAgICAgICAgZW5kO1xuICAgICAgaW5cbiAgICAgIGxvb3AgMCAobGVuZ3RoIGJ1Y2tldCAtIDEpO1xuICAgICAgaWYgcHJldl9sZW4gPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gZW1wdHlidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBbfCB8XTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBwcmV2X2xlbiBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHByZXZfbGVuO1xuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBBcnJheS5zdWIgaGJ1Y2tldCAwIHByZXZfbGVuXG4gICAgICBlbmQ7XG4gICAgICBpZiBsZW4gPiB0LmxpbWl0ICYmIHByZXZfbGVuIDw9IHQubGltaXQgdGhlbiB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgLSAxO1xuICAgIGVuZDtcbiAgICB0LnJvdmVyIDwtICh0LnJvdmVyICsgMSkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuXG4gIGxldCByZWMgcmVzaXplIHQgPVxuICAgIGxldCBvbGRsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBuZXdsZW4gPSBuZXh0X3N6IG9sZGxlbiBpblxuICAgIGlmIG5ld2xlbiA+IG9sZGxlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgbmV3dCA9IGNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgIGxldCBhZGRfd2VhayBvYiBvaCBvaSA9XG4gICAgICAgIGxldCBzZXR0ZXIgbmIgbmkgXyA9IGJsaXQgb2Igb2kgbmIgbmkgMSBpblxuICAgICAgICBsZXQgaCA9IG9oLihvaSkgaW5cbiAgICAgICAgYWRkX2F1eCBuZXd0IHNldHRlciBOb25lIGggKGdldF9pbmRleCBuZXd0IGgpO1xuICAgICAgaW5cbiAgICAgIGl0ZXJfd2VhayBhZGRfd2VhayB0O1xuICAgICAgdC50YWJsZSA8LSBuZXd0LnRhYmxlO1xuICAgICAgdC5oYXNoZXMgPC0gbmV3dC5oYXNoZXM7XG4gICAgICB0LmxpbWl0IDwtIG5ld3QubGltaXQ7XG4gICAgICB0Lm92ZXJzaXplIDwtIG5ld3Qub3ZlcnNpemU7XG4gICAgICB0LnJvdmVyIDwtIHQucm92ZXIgbW9kIEFycmF5Lmxlbmd0aCBuZXd0LnRhYmxlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICB0LmxpbWl0IDwtIG1heF9pbnQ7ICAgICAgICAgICAgICgqIG1heGltdW0gc2l6ZSBhbHJlYWR5IHJlYWNoZWQgKilcbiAgICAgIHQub3ZlcnNpemUgPC0gMDtcbiAgICBlbmRcblxuICBhbmQgYWRkX2F1eCB0IHNldHRlciBkIGggaW5kZXggPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5ld3N6ID1cbiAgICAgICAgICBJbnQubWluICgzICogc3ogLyAyICsgMykgKFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXMpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5ld3N6IDw9IHN6IHRoZW4gZmFpbHdpdGggXCJXZWFrLk1ha2U6IGhhc2ggYnVja2V0IGNhbm5vdCBncm93IG1vcmVcIjtcbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIG5ld3N6IGluXG4gICAgICAgIGxldCBuZXdoYXNoZXMgPSBBcnJheS5tYWtlIG5ld3N6IDAgaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBzejtcbiAgICAgICAgQXJyYXkuYmxpdCBoYXNoZXMgMCBuZXdoYXNoZXMgMCBzejtcbiAgICAgICAgc2V0dGVyIG5ld2J1Y2tldCBzeiBkO1xuICAgICAgICBuZXdoYXNoZXMuKHN6KSA8LSBoO1xuICAgICAgICB0LnRhYmxlLihpbmRleCkgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4oaW5kZXgpIDwtIG5ld2hhc2hlcztcbiAgICAgICAgaWYgc3ogPD0gdC5saW1pdCAmJiBuZXdzeiA+IHQubGltaXQgdGhlbiBiZWdpblxuICAgICAgICAgIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSArIDE7XG4gICAgICAgICAgZm9yIF9pID0gMCB0byBvdmVyX2xpbWl0IGRvIHRlc3Rfc2hyaW5rX2J1Y2tldCB0IGRvbmU7XG4gICAgICAgIGVuZDtcbiAgICAgICAgaWYgdC5vdmVyc2l6ZSA+IEFycmF5Lmxlbmd0aCB0LnRhYmxlIC8gb3Zlcl9saW1pdCB0aGVuIHJlc2l6ZSB0O1xuICAgICAgZW5kIGVsc2UgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBiZWdpblxuICAgICAgICBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldHRlciBidWNrZXQgaSBkO1xuICAgICAgICBoYXNoZXMuKGkpIDwtIGg7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBhZGQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIChnZXRfaW5kZXggdCBoKVxuXG5cbiAgbGV0IGZpbmRfb3IgdCBkIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kIGggaW5kZXhcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IG1lcmdlIHQgZCA9XG4gICAgZmluZF9vciB0IGQgKGZ1biBoIGluZGV4IC0+IGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpbmRleDsgZClcblxuXG4gIGxldCBmaW5kIHQgZCA9IGZpbmRfb3IgdCBkIChmdW4gX2ggX2luZGV4IC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgZmluZF9vcHQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBmaW5kX3NoYWRvdyB0IGQgaWZmb3VuZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBpZmZvdW5kIGJ1Y2tldCBpXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgcmVtb3ZlIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIHcgaSAtPiBzZXQgdyBpIE5vbmUpICgpXG5cblxuICBsZXQgbWVtIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIF93IF9pIC0+IHRydWUpIGZhbHNlXG5cblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpIGFjY3VcbiAgICBpblxuICAgIGxvb3AgMCBbXVxuXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX29wZW5fdGFnIHN0YXRlIHMgPSBwcF9vcGVuX3N0YWcgc3RhdGUgKFN0cmluZ190YWcgcylcbmxldCBwcF9jbG9zZV90YWcgc3RhdGUgKCkgPSBwcF9jbG9zZV9zdGFnIHN0YXRlICgpXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2VfdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBiID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBiIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94ID0gcHBfb3Blbl9oYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3Zib3ggPSBwcF9vcGVuX3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faHZib3ggPSBwcF9vcGVuX2h2Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2hvdmJveCA9IHBwX29wZW5faG92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2JveCA9IHBwX29wZW5fYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9ib3ggPSBwcF9jbG9zZV9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdGFnID0gcHBfb3Blbl90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3RhZyA9IHBwX2Nsb3NlX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9zdGFnID0gcHBfb3Blbl9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9zdGFnID0gcHBfY2xvc2Vfc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYXMgPSBwcF9wcmludF9hcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3RyaW5nID0gcHBfcHJpbnRfc3RyaW5nIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ieXRlcyA9IHBwX3ByaW50X2J5dGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pbnQgPSBwcF9wcmludF9pbnQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Zsb2F0ID0gcHBfcHJpbnRfZmxvYXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2NoYXIgPSBwcF9wcmludF9jaGFyIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ib29sID0gcHBfcHJpbnRfYm9vbCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnJlYWsgPSBwcF9wcmludF9icmVhayBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY3V0ID0gcHBfcHJpbnRfY3V0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zcGFjZSA9IHBwX3ByaW50X3NwYWNlIHN0ZF9mb3JtYXR0ZXJcbmFuZCBmb3JjZV9uZXdsaW5lID0gcHBfZm9yY2VfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmx1c2ggPSBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfbmV3bGluZSA9IHBwX3ByaW50X25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2lmX25ld2xpbmUgPSBwcF9wcmludF9pZl9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIG9wZW5fdGJveCA9IHBwX29wZW5fdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGJveCA9IHBwX2Nsb3NlX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RicmVhayA9IHBwX3ByaW50X3RicmVhayBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfdGFiID0gcHBfc2V0X3RhYiBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGFiID0gcHBfcHJpbnRfdGFiIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXJnaW4gPSBwcF9zZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2luZGVudCA9IHBwX3NldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9nZW9tZXRyeSA9IHBwX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgPSBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2dlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgPSBwcF91cGRhdGVfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9ib3hlcyA9IHBwX3NldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfYm94ZXMgPSBwcF9nZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvdmVyX21heF9ib3hlcyA9IHBwX292ZXJfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0ID0gcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9lbGxpcHNpc190ZXh0ID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfcHJpbnRfdGFncyA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfcHJpbnRfdGFncyA9XG4gIHBwX2dldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfbWFya190YWdzID1cbiAgcHBfc2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmtfdGFncyA9XG4gIHBwX2dldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF90YWdzID1cbiAgcHBfc2V0X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG4oKiBUbyBmb3JtYXQgYSBsaXN0ICopXG5sZXQgcmVjIHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFt2XSAtPiBwcF92IHBwZiB2XG4gIHwgdiA6OiB2cyAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9wcmludF9saXN0IH5wcF9zZXAgcHBfdiBwcGYgdnNcblxuKCogVG8gZm9ybWF0IGEgc2VxdWVuY2UgKilcbmxldCByZWMgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbmxldCBwcF9wcmludF9zZXEgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxuKCogVG8gZm9ybWF0IGZyZWUtZmxvd2luZyB0ZXh0ICopXG5sZXQgcHBfcHJpbnRfdGV4dCBwcGYgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxlZnQgPSByZWYgMCBpblxuICBsZXQgcmlnaHQgPSByZWYgMCBpblxuICBsZXQgZmx1c2ggKCkgPVxuICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKFN0cmluZy5zdWIgcyAhbGVmdCAoIXJpZ2h0IC0gIWxlZnQpKTtcbiAgICBpbmNyIHJpZ2h0OyBsZWZ0IDo9ICFyaWdodDtcbiAgaW5cbiAgd2hpbGUgKCFyaWdodCA8PiBsZW4pIGRvXG4gICAgbWF0Y2ggcy5bIXJpZ2h0XSB3aXRoXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGZsdXNoICgpO1xuICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgZmx1c2ggKCk7IHBwX3ByaW50X3NwYWNlIHBwZiAoKVxuICAgICAgKCogdGhlcmUgaXMgbm8gc3BlY2lmaWMgc3VwcG9ydCBmb3IgJ1xcdCdcbiAgICAgICAgIGFzIGl0IGlzIHVuY2xlYXIgd2hhdCBhIHJpZ2h0IHNlbWFudGljcyB3b3VsZCBiZSAqKVxuICAgICAgfCBfIC0+IGluY3IgcmlnaHRcbiAgZG9uZTtcbiAgaWYgIWxlZnQgPD4gbGVuIHRoZW4gZmx1c2ggKClcblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkX2Zvcm1hdHRlciBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgZXJyX2Zvcm1hdHRlciBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlciAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggZXJyX2Zvcm1hdHRlciAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxuKCpcblxuICBEZXByZWNhdGVkIHN0dWZmLlxuXG4qKVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZVxuICAgIH5vdXQ6ZiB+Zmx1c2g6ZyB+bmV3bGluZTpoIH5zcGFjZXM6aSA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gsXG4gICBzdGF0ZS5wcF9vdXRfbmV3bGluZSwgc3RhdGUucHBfb3V0X3NwYWNlcylcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBnZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IGVycm9yIHByb25lIGZ1bmN0aW9uLCBkbyBub3QgdXNlIGl0LlxuICAgVGhpcyBmdW5jdGlvbiBpcyBuZWl0aGVyIGNvbXBvc2l0aW9uYWwgbm9yIGluY3JlbWVudGFsLCBzaW5jZSBpdCBmbHVzaGVzXG4gICB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYXQgZWFjaCBjYWxsLlxuICAgVG8gZ2V0IHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHksIGRlZmluZSBhIGZvcm1hdHRlciBvZiB5b3VyIG93biB3cml0aW5nIHRvXG4gICB0aGUgYnVmZmVyIGFyZ3VtZW50LCBhcyBpblxuICAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYlxuICAgdGhlbiB1c2UgeyFmcHJpbnRmIHBwZn0gYXMgdXN1YWwuICopXG5sZXQgYnByaW50ZiBiIChGb3JtYXQgKGZtdCwgXykgOiAoJ2EsIGZvcm1hdHRlciwgdW5pdCkgZm9ybWF0KSA9XG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID0gb3V0cHV0X2FjYyBwcGYgYWNjOyBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2UgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbigqIERlcHJlY2F0ZWQgOiBhbGlhcyBmb3Iga3NwcmludGYuICopXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG5cblxuXG4oKiBEZXByZWNhdGVkIHRhZyBmdW5jdGlvbnMgKilcblxudHlwZSBmb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2VfdGFnIDogdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl90YWcgOiB0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2VfdGFnIDogdGFnIC0+IHVuaXQ7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl90YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2VfdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2VfdGFnID0gcGN0O1xuICAgfSA9XG4gIGxldCBzdHJpbmdpZnkgZiBlID0gZnVuY3Rpb24gU3RyaW5nX3RhZyBzIC0+IGYgcyB8IF8gLT4gZSBpblxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIHN0cmluZ2lmeSBtb3QgXCJcIjtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gc3RyaW5naWZ5IG1jdCBcIlwiO1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBzdHJpbmdpZnkgcG90ICgpO1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gc3RyaW5naWZ5IHBjdCAoKVxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIGZtdCAoKSA9XG4gIGxldCBmdW5zID0gcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkgaW5cbiAgbGV0IG1hcmtfb3Blbl90YWcgcyA9IGZ1bnMubWFya19vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IG1hcmtfY2xvc2VfdGFnIHMgPSBmdW5zLm1hcmtfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfb3Blbl90YWcgcyA9IGZ1bnMucHJpbnRfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9jbG9zZV90YWcgcyA9IGZ1bnMucHJpbnRfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICB7bWFya19vcGVuX3RhZzsgbWFya19jbG9zZV90YWc7IHByaW50X29wZW5fdGFnOyBwcmludF9jbG9zZV90YWd9XG5cbmxldCBzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIFtzdGRpYl0gaXMgZXF1aXZhbGVudCB0byBbU2Nhbm5pbmcuZnJvbV9jaGFubmVsIFN0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIHN0ZGliIDogaW5fY2hhbm5lbFxuICAoKiBBbiBhbGlhcyBmb3IgW1NjYW5mLnN0ZGluXSwgdGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb21cbiAgICAgW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG4gIHZhbCBtZW1vX2Zyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcbiAgKCogT2Jzb2xldGUuICopXG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaWJdIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cblxuICBsZXQgc3RkaWIgPSBzdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cblxuICAoKlxuICAgICBPYnNvbGV0ZTogYSBtZW1vIFtmcm9tX2NoYW5uZWxdIHZlcnNpb24gdG8gYnVpbGQgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF1cbiAgICAgc2Nhbm5pbmcgYnVmZmVyIG91dCBvZiBhIFtTdGRsaWIuaW5fY2hhbm5lbF0uXG4gICAgIFRoaXMgZnVuY3Rpb24gd2FzIHVzZWQgdG8gdHJ5IHRvIHByZXNlcnZlIHRoZSBzY2FubmluZ1xuICAgICBzZW1hbnRpY3MgZm9yIHRoZSAobm93IG9ic29sZXRlKSBmdW5jdGlvbiBbZnNjYW5mXS5cbiAgICAgR2l2ZW4gdGhhdCBhbGwgc2Nhbm5lciBtdXN0IHJlYWQgZnJvbSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBzY2FubmluZ1xuICAgICBidWZmZXIsIFtmc2NhbmZdIG11c3QgcmVhZCBmcm9tIG9uZSFcbiAgICAgTW9yZSBwcmVjaXNlbHksIGdpdmVuIFtpY10sIGFsbCBzdWNjZXNzaXZlIGNhbGxzIFtmc2NhbmYgaWNdIG11c3QgcmVhZFxuICAgICBmcm9tIHRoZSBzYW1lIHNjYW5uaW5nIGJ1ZmZlci5cbiAgICAgVGhpcyBvYmxpZ2VkIHRoaXMgbGlicmFyeSB0byBhbGxvY2F0ZWQgc2Nhbm5pbmcgYnVmZmVycyB0aGF0IHdlcmVcbiAgICAgbm90IHByb3Blcmx5IGdhcmJhZ2UgY29sbGVjdGFibGUsIGhlbmNlIGxlYWRpbmcgdG8gbWVtb3J5IGxlYWtzLlxuICAgICBJZiB5b3UgbmVlZCB0byByZWFkIGZyb20gYSBbU3RkbGliLmluX2NoYW5uZWxdIGlucHV0IGNoYW5uZWxcbiAgICAgW2ljXSwgc2ltcGx5IGRlZmluZSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBmb3JtYXR0ZWQgaW5wdXQgY2hhbm5lbCBhcyBpblxuICAgICBbbGV0IGliID0gU2Nhbm5pbmcuZnJvbV9jaGFubmVsIGljXSwgdGhlbiB1c2UgW1NjYW5mLmJzY2FuZiBpYl0gYXMgdXN1YWwuXG4gICopXG4gIGxldCBtZW1vX2Zyb21faWMgPVxuICAgIGxldCBtZW1vID0gcmVmIFtdIGluXG4gICAgKGZ1biBzY2FuX2Nsb3NlX2ljIGljIC0+XG4gICAgIHRyeSBMaXN0LmFzc3EgaWMgIW1lbW8gd2l0aFxuICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgIGxldCBpYiA9XG4gICAgICAgICBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgKEZyb21fY2hhbm5lbCBpYykgaWMgaW5cbiAgICAgICBtZW1vIDo9IChpYywgaWIpIDo6ICFtZW1vO1xuICAgICAgIGliKVxuXG5cbiAgKCogT2Jzb2xldGU6IHNlZSB7IW1lbW9fZnJvbV9pY30gYWJvdmUuICopXG4gIGxldCBtZW1vX2Zyb21fY2hhbm5lbCA9IG1lbW9fZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG5lbmRcblxuXG4oKiBGb3JtYXR0ZWQgaW5wdXQgZnVuY3Rpb25zLiAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lciA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbnR5cGUgJ2Ega3NjYW5mX3Jlc3VsdCA9IEFyZ3Mgb2YgJ2EgfCBFeGMgb2YgZXhuXG5cbmxldCBrc2NhbmYgaWIgZWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggdHJ5IEFyZ3MgKG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpIHdpdGhcbiAgICAgIHwgKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUpIGFzIGV4YyAtPiBFeGMgZXhjXG4gICAgICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+XG4gICAgICAgIGludmFsaWRfYXJnIChtc2cgXiBcIiBpbiBmb3JtYXQgXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgc3RyIF4gXCJcXFwiXCIpXG4gICAgd2l0aFxuICAgICAgfCBBcmdzIGFyZ3MgLT4gYXBwbHkgZiBhcmdzXG4gICAgICB8IEV4YyBleGMgLT4gZWYgaWIgZXhjXG4gIGluXG4gIHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKilcblxubGV0IGtic2NhbmYgPSBrc2NhbmZcbmxldCBic2NhbmYgaWIgZm10ID0ga2JzY2FuZiBpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcblxuXG4oKiBEZXByZWNhdGVkICopXG5sZXQga2ZzY2FuZiBpYyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgZWYgZm10XG5sZXQgZnNjYW5mIGljIGZtdCA9IGtzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIE9ialxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChtYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIG1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBvYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gbWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBtYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIG1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IG1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBtYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCByZXByIGluaXQgfF07XG4gICAgIG1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gcmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBtYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBtYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0b2tlbiA9XG4gICAgS3dkIG9mIHN0cmluZ1xuICB8IElkZW50IG9mIHN0cmluZ1xuICB8IEludCBvZiBpbnRcbiAgfCBGbG9hdCBvZiBmbG9hdFxuICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgfCBDaGFyIG9mIGNoYXJcblxuKCogVGhlIHN0cmluZyBidWZmZXJpbmcgbWFjaGluZXJ5ICopXG5cbmxldCBpbml0aWFsX2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAzMlxuXG5sZXQgYnVmZmVyID0gcmVmIGluaXRpYWxfYnVmZmVyXG5sZXQgYnVmcG9zID0gcmVmIDBcblxubGV0IHJlc2V0X2J1ZmZlciAoKSA9IGJ1ZmZlciA6PSBpbml0aWFsX2J1ZmZlcjsgYnVmcG9zIDo9IDBcblxubGV0IHN0b3JlIGMgPVxuICBpZiAhYnVmcG9zID49IEJ5dGVzLmxlbmd0aCAhYnVmZmVyIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3YnVmZmVyID0gQnl0ZXMuY3JlYXRlICgyICogIWJ1ZnBvcykgaW5cbiAgICBCeXRlcy5ibGl0ICFidWZmZXIgMCBuZXdidWZmZXIgMCAhYnVmcG9zO1xuICAgIGJ1ZmZlciA6PSBuZXdidWZmZXJcbiAgZW5kO1xuICBCeXRlcy5zZXQgIWJ1ZmZlciAhYnVmcG9zIGM7XG4gIGluY3IgYnVmcG9zXG5cbmxldCBnZXRfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5zdWJfc3RyaW5nICFidWZmZXIgMCAhYnVmcG9zIGluIGJ1ZmZlciA6PSBpbml0aWFsX2J1ZmZlcjsgc1xuXG4oKiBUaGUgbGV4ZXIgKilcblxubGV0IG1ha2VfbGV4ZXIga2V5d29yZHMgPVxuICBsZXQga3dkX3RhYmxlID0gSGFzaHRibC5jcmVhdGUgMTcgaW5cbiAgTGlzdC5pdGVyIChmdW4gcyAtPiBIYXNodGJsLmFkZCBrd2RfdGFibGUgcyAoS3dkIHMpKSBrZXl3b3JkcztcbiAgbGV0IGlkZW50X29yX2tleXdvcmQgaWQgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQga3dkX3RhYmxlIGlkIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiBJZGVudCBpZFxuICBhbmQga2V5d29yZF9vcl9lcnJvciBjID1cbiAgICBsZXQgcyA9IFN0cmluZy5tYWtlIDEgYyBpblxuICAgIHRyeSBIYXNodGJsLmZpbmQga3dkX3RhYmxlIHMgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgKFwiSWxsZWdhbCBjaGFyYWN0ZXIgXCIgXiBzKSlcbiAgaW5cbiAgbGV0IHJlYyBuZXh0X3Rva2VuIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcgJyB8ICdcXDAxMCcgfCAnXFwwMTMnIHwgJ1xcMDA5JyB8ICdcXDAyNicgfCAnXFwwMTInKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IG5leHRfdG9rZW4gc3RybV9fXG4gICAgfCBTb21lICgnQScuLidaJyB8ICdhJy4uJ3onIHwgJ18nIHwgJ1xcMTkyJy4uJ1xcMjU1JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHwgJz4nIHxcbiAgICAgICAgICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgU29tZSAnXFwnJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBjID1cbiAgICAgICAgICB0cnkgY2hhciBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgJ1xcJycgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChDaGFyIGMpXG4gICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSAnXFxcIicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IFNvbWUgKFN0cmluZyAoc3RyaW5nIHMpKVxuICAgIHwgU29tZSAnLScgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBuZWdfbnVtYmVyIHN0cm1fX1xuICAgIHwgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoa2V5d29yZF9vcl9lcnJvciBjKVxuICAgIHwgXyAtPiBOb25lXG4gIGFuZCBpZGVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnQScuLidaJyB8ICdhJy4uJ3onIHwgJ1xcMTkyJy4uJ1xcMjU1JyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcJycgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgaWRlbnQyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICctJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8XG4gICAgICAgICAnPicgfCAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIG5lZ19udW1iZXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IF8gLT4gbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IGlkZW50MiBzXG4gIGFuZCBudW1iZXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgU29tZSAnLicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnLic7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoSW50IChpbnRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBkZWNpbWFsX3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGV4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJysnIHwgJy0nIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZW5kX2V4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBlbmRfZXhwb25lbnRfcGFydCBzdHJtX19cbiAgYW5kIGVuZF9leHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZW5kX2V4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBzdHJpbmcgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcIicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBnZXRfc3RyaW5nICgpXG4gICAgfCBTb21lICdcXFxcJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBjID1cbiAgICAgICAgICB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgY2hhciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFxcJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGJlZ2luIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgZXNjYXBlIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ24nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xcbidcbiAgICB8IFNvbWUgJ3InIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xccidcbiAgICB8IFNvbWUgJ3QnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xcdCdcbiAgICB8IFNvbWUgKCcwJy4uJzknIGFzIGMxKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzIpIC0+XG4gICAgICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMykgLT5cbiAgICAgICAgICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgICAgICAgICAgQ2hhci5jaHJcbiAgICAgICAgICAgICAgICAgICgoQ2hhci5jb2RlIGMxIC0gNDgpICogMTAwICsgKENoYXIuY29kZSBjMiAtIDQ4KSAqIDEwICtcbiAgICAgICAgICAgICAgICAgICAgIChDaGFyLmNvZGUgYzMgLSA0OCkpXG4gICAgICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcqJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIGNvbW1lbnQgczsgbmV4dF90b2tlbiBzXG4gICAgfCBfIC0+IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgJygnKVxuICBhbmQgY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX25lc3RlZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9lbmRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9uZXN0ZWRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIGNvbW1lbnQgczsgY29tbWVudCBzXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfZW5kX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKScgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAoKVxuICAgIHwgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9lbmRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGluXG4gIGZ1biBpbnB1dCAtPiBTdHJlYW0uZnJvbSAoZnVuIF9jb3VudCAtPiBuZXh0X3Rva2VuIGlucHV0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID0gc2lnXG4gIGluY2x1ZGUgSGFzaHRibC5TZWVkZWRTXG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgSGFzaHRibC5TXG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBnZXRfa2V5OiAnYSBjb250YWluZXIgLT4gdCBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBoLnNpemUgPC0gaC5zaXplIC0gMTsgbmV4dFxuICAgICAgICAgICAgfCBFRmFsc2UgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KVxuICAgICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICAgICgqIFRoZSBkZWFkIGtleSBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuIEl0IGlzIGFjY2VwdGFibGVcbiAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgZnVuY3Rpb24gc2luY2UgaXQgYWxyZWFkeSByZW1vdmVzIGEgYmluZGluZyAqKVxuICAgICAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgICAgIHJlbW92ZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhoayxjLG5leHQpIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dCkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgaC5kYXRhLihpKSA8LSByZW1vdmVfYnVja2V0IGguZGF0YS4oaSlcblxuICAgICgqKiB7IWZpbmR9IGRvbid0IHJlbW92ZSBkZWFkIGtleXMgYmVjYXVzZSBpdCB3b3VsZCBiZSBzdXJwcmlzaW5nIGZvclxuICAgICAgICB0aGUgdXNlciB0aGF0IGEgcmVhZC1vbmx5IGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHN0YXRlIChlZy4gY29uY3VycmVudFxuICAgICAgICBhY2Nlc3MpLiBTYW1lIGZvciB7IWl0ZXJ9LCB7IWZvbGR9LCB7IW1lbX0uXG4gICAgKilcbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gW11cbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZDo6ZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBpdGVyIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkXG4gICAgICAgICAgICBlbmQ7IGRvX2J1Y2tldCByZXN0IGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBmb2xkIGYgaCBpbml0ID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgICAgIG1hdGNoIGIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgICBhY2N1XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGQgYWNjdVxuICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdCBhY2N1ICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICAgIGRvbmU7XG4gICAgICAhYWNjdVxuXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGYgayBkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2QgLT5cbiAgICAgICAgICAgICAgICAgICAgSC5zZXRfa2V5X2RhdGEgYyBrIG5ld19kO1xuICAgICAgICAgICAgICAgICAgICBDb25zKGhrLCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgdG9fc2VxIHRibCA9XG4gICAgICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgICAgIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICAgICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICAgICAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICAgICAgfCBDb25zIChfLCBjLCBuZXh0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYXV4IGkgbmV4dCAoKVxuICAgICAgICAgICAgICB8IFNvbWUga2V5LCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGF1eCAwIEVtcHR5XG5cbiAgICBsZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxuICAgIGxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpICh0MjooJ2ssJ2QpIHQpOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoID0gSC5oYXNoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgKCogeyFnZXRfa2V5X2NvcHl9IGlzIG5vdCB1c2VkIGJlY2F1c2UgdGhlIGVxdWFsaXR5IG9mIHRoZSB1c2VyIGNhbiBiZVxuICAgICAgICAgICAgdGhlIHBoeXNpY2FsIGVxdWFsaXR5ICopXG4gICAgICAgIG1hdGNoIGdldF9rZXkgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsnIC0+XG4gICAgICAgICAgICBpZiBILmVxdWFsIGsgaycgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgPSBnZXRfa2V5XG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEsyID0gc3RydWN0XG4gIHR5cGUgKCdrMSwgJ2syLCAnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnazEsJ2syLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAyXG5cbiAgbGV0IGdldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5MV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IGdldF9rZXkyX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDEpXG4gIGxldCBzZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2syKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMSAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAxXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG5cbiAgbGV0IGJsaXRfa2V5MSAodDE6KCdrMSxfLF8pIHQpICh0MjooJ2sxLF8sXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcbiAgbGV0IGJsaXRfa2V5MiAodDE6KF8sJ2syLF8pIHQpICh0MjooXywnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMSB0MiAxIDFcbiAgbGV0IGJsaXRfa2V5MTIgKHQxOignazEsJ2syLF8pIHQpICh0MjooJ2sxLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMlxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIChkOidkKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXyxfLCdkKSB0KSAodDI6KF8sXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkXG4gICAgICAoSDE6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKVxuICAgICAgKEgyOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSDEudCxIMi50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBIMS50ICogSDIudFxuICAgICAgbGV0IGNyZWF0ZSAoazEsazIpIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLmhhc2ggc2VlZCBrMSArIEgyLmhhc2ggc2VlZCBrMiAqIDY1NTk5XG4gICAgICBsZXQgZXF1YWwgYyAoazEsazIpID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPlxuICAgICAgICAgICAgaWYgSDEuZXF1YWwgazEgazEnICYmIEgyLmVxdWFsIGsyIGsyJ1xuICAgICAgICAgICAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+IFNvbWUgKGsxJywgazInKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIChrMSxrMikgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPSBjaGVja19rZXkxIGMgJiYgY2hlY2tfa2V5MiBjXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEgxOiBIYXNodGJsLkhhc2hlZFR5cGUpKEgyOiBIYXNodGJsLkhhc2hlZFR5cGUpOlxuICAgIChTIHdpdGggdHlwZSBrZXkgPSBIMS50ICogSDIudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWRcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgxLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMS5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgbilcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIChrOidrKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgbiAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IG5cbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IG5cblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKG8xOmludCkgKHQyOignaywnZCkgdCkgKG8yOmludCkgKGw6aW50KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSBvMSB0MiBvMiBsXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudCBhcnJheVxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoQXJyYXkubGVuZ3RoIGspIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIGxldCBsZW4gPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gU29tZSBbfHxdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgMCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgazAgLT5cbiAgICAgICAgICAgICAgbGV0IHJlYyBmaWxsIGEgaSA9XG4gICAgICAgICAgICAgICAgaWYgaSA8IDEgdGhlbiBTb21lIGFcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYS4oaSkgPC0ga2k7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsbCBhIChpLTEpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4gazAgaW5cbiAgICAgICAgICAgICAgZmlsbCBhIChsZW4tMSlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgRGFtaWVuIERvbGlnZXosIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZ2VuZXJpY19xdW90ZSBxdW90ZXF1b3RlIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIGlmIHMuW2ldID0gJ1xcJydcbiAgICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcXVvdGVxdW90ZVxuICAgIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGIgIHMuW2ldXG4gIGRvbmU7XG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzFdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvYmFzZW5hbWUuaHRtbFxuICBJbiBzdGVwIDEgb2YgW1sxXV0sIHdlIGNob29zZSB0byByZXR1cm4gXCIuXCIgZm9yIGVtcHR5IGlucHV0LlxuICAgIChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sKVxuICBJbiBzdGVwIDIsIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiAgU3RlcCA2IGlzIG5vdCBpbXBsZW1lbnRlZDogd2UgY29uc2lkZXIgdGhhdCB0aGUgW3N1ZmZpeF0gb3BlcmFuZCBpc1xuICAgIGFsd2F5cyBhYnNlbnQuICBTdWZmaXhlcyBhcmUgaGFuZGxlZCBieSBbY2hvcF9zdWZmaXhdIGFuZCBbY2hvcF9leHRlbnNpb25dLlxuKilcbmxldCBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyBmaW5kX2VuZCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gZmluZF9lbmQgKG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgbiAobiArIDEpXG4gIGFuZCBmaW5kX2JlZyBuIHAgPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgcFxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBTdHJpbmcuc3ViIG5hbWUgKG4gKyAxKSAocCAtIG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgKG4gLSAxKSBwXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIGZpbmRfZW5kIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzJdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvZGlybmFtZS5odG1sXG4gIEluIHN0ZXAgNiBvZiBbWzJdXSwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuKilcbmxldCBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIHRyYWlsaW5nX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gdHJhaWxpbmdfc2VwIChuIC0gMSlcbiAgICBlbHNlIGJhc2UgblxuICBhbmQgYmFzZSBuID1cbiAgICBpZiBuIDwgMCB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCBuXG4gICAgZWxzZSBiYXNlIChuIC0gMSlcbiAgYW5kIGludGVybWVkaWF0ZV9zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgKG4gLSAxKVxuICAgIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKG4gKyAxKVxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSB0cmFpbGluZ19zZXAgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbm1vZHVsZSB0eXBlIFNZU0RFUFMgPSBzaWdcbiAgdmFsIG51bGwgOiBzdHJpbmdcbiAgdmFsIGN1cnJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHBhcmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgZGlyX3NlcCA6IHN0cmluZ1xuICB2YWwgaXNfZGlyX3NlcCA6IHN0cmluZyAtPiBpbnQgLT4gYm9vbFxuICB2YWwgaXNfcmVsYXRpdmUgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaXNfaW1wbGljaXQgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hlY2tfc3VmZml4IDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaG9wX3N1ZmZpeF9vcHQgOiBzdWZmaXg6c3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCB0ZW1wX2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBxdW90ZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHF1b3RlX2NvbW1hbmQgOlxuICAgIHN0cmluZyAtPiA/c3RkaW46IHN0cmluZyAtPiA/c3Rkb3V0OiBzdHJpbmcgLT4gP3N0ZGVycjogc3RyaW5nXG4gICAgICAgICAgIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuICB2YWwgYmFzZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBkaXJuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVbml4IDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gcy5baV0gPSAnLydcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPSBTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJ1xuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDpzdWZmIG5hbWVcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiByID0gc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJUTVBESVJcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi90bXBcIlxuICBsZXQgcXVvdGUgPSBnZW5lcmljX3F1b3RlIFwiJ1xcXFwnJ1wiXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIChjbWQgOjogYXJncykpXG4gICAgXiAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlIGYpXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBXaW4zMiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIk5VTFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiXFxcXFwiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IGxldCBjID0gcy5baV0gaW4gYyA9ICcvJyB8fCBjID0gJ1xcXFwnIHx8IGMgPSAnOidcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPVxuICAgIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnXFxcXCcpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgbi5bMV0gPD4gJzonKVxuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuXFxcXFwiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi5cXFxcXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgIFN0cmluZy5sZW5ndGggbmFtZSA+PSBTdHJpbmcubGVuZ3RoIHN1ZmYgJiZcbiAgIChsZXQgcyA9IFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcubGVuZ3RoIHN1ZmYpIGluXG4gICAgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmKVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgciA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRFTVBcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi5cIlxuICBsZXQgcXVvdGUgcyA9XG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIicgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnXFxcIicgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgYyAgICAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjOyBsb29wIChpKzEpO1xuICAgIGFuZCBsb29wX2JzIG4gaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICAgICAgYWRkX2JzIG47XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJ1xcXCInIC0+IGFkZF9icyAoMipuKzEpOyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7IGxvb3AgKGkrMSk7XG4gICAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgKG4rMSkgKGkrMSk7XG4gICAgICAgIHwgXyAgICAtPiBhZGRfYnMgbjsgbG9vcCBpXG4gICAgICBlbmRcbiAgICBhbmQgYWRkX2JzIG4gPSBmb3IgX2ogPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnOyBkb25lXG4gICAgaW5cbiAgICBsb29wIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbigqXG5RdW90aW5nIGNvbW1hbmRzIGZvciBleGVjdXRpb24gYnkgY21kLmV4ZSBpcyBkaWZmaWN1bHQuXG4xLSBFYWNoIGFyZ3VtZW50IGlzIGZpcnN0IHF1b3RlZCB1c2luZyB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlLCB0b1xuICAgcHJvdGVjdCBpdCBhZ2FpbnN0IHRoZSBwcm9jZXNzaW5nIHBlcmZvcm1lZCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSxcbiAgIHRoZW4gY21kLmV4ZSdzIHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgZXNjYXBlZCB3aXRoICdeJywgdXNpbmdcbiAgIHRoZSBcInF1b3RlX2NtZFwiIGZ1bmN0aW9uIGJlbG93LiAgRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICBodHRwczovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlLzIwMTEvMDQvMjNcbjItIFRoZSBjb21tYW5kIGFuZCB0aGUgcmVkaXJlY3Rpb24gZmlsZXMsIGlmIGFueSwgbXVzdCBiZSBkb3VibGUtcXVvdGVkXG4gICBpbiBjYXNlIHRoZXkgY29udGFpbiBzcGFjZXMuICBUaGlzIHF1b3RpbmcgaXMgaW50ZXJwcmV0ZWQgYnkgY21kLmV4ZSxcbiAgIG5vdCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSwgaGVuY2UgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZVxuICAgY2Fubm90IGJlIHVzZWQuICBUaGUgdHdvIGNoYXJhY3RlcnMgd2UgZG9uJ3Qga25vdyBob3cgdG8gcXVvdGVcbiAgIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgY21kLmV4ZSBzdHJpbmcgYXJlIGRvdWJsZS1xdW90ZSBhbmQgcGVyY2VudC5cbiAgIFdlIGp1c3QgZmFpbCBpZiB0aGUgY29tbWFuZCBuYW1lIG9yIHRoZSByZWRpcmVjdGlvbiBmaWxlIG5hbWVzXG4gICBjb250YWluIGEgZG91YmxlIHF1b3RlIChub3QgYWxsb3dlZCBpbiBXaW5kb3dzIGZpbGUgbmFtZXMsIGFueXdheSlcbiAgIG9yIGEgcGVyY2VudC4gIFNlZSBmdW5jdGlvbiBcInF1b3RlX2NtZF9maWxlbmFtZVwiIGJlbG93LlxuMy0gVGhlIHdob2xlIHN0cmluZyBwYXNzZWQgdG8gU3lzLmNvbW1hbmQgaXMgdGhlbiBlbmNsb3NlZCBpbiBkb3VibGVcbiAgIHF1b3Rlcywgd2hpY2ggYXJlIGltbWVkaWF0ZWx5IHN0cmlwcGVkIGJ5IGNtZC5leGUuICBPdGhlcndpc2UsXG4gICBzb21lIG9mIHRoZSBkb3VibGUgcXVvdGVzIGZyb20gc3RlcCAyIGFib3ZlIGNhbiBiZSBtaXNwYXJzZWQuXG4gICBTZWUgZS5nLiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTk2NTE0MVxuKilcbiAgbGV0IHF1b3RlX2NtZCBzID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIDIwKSBpblxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJygnIHwgJyknIHwgJyEnIHwgJ14nIHwgJyUnIHwgJ1xcXCInIHwgJzwnIHwgJz4nIHwgJyYnIHwgJ3wnIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXic7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjKVxuICAgICAgcztcbiAgICBCdWZmZXIuY29udGVudHMgYlxuICBsZXQgcXVvdGVfY21kX2ZpbGVuYW1lIGYgPVxuICAgIGlmIFN0cmluZy5jb250YWlucyBmICdcXFwiJyB8fCBTdHJpbmcuY29udGFpbnMgZiAnJScgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgXCJcXFwiXCIgXiBmIF4gXCJcXFwiXCJcbiAgICBlbHNlXG4gICAgICBmXG4gICgqIFJlZGlyZWN0aW9ucyBpbiBjbWQuZXhlOiBzZWUgaHR0cHM6Ly9zczY0LmNvbS9udC9zeW50YXgtcmVkaXJlY3Rpb24uaHRtbFxuICAgICBhbmQgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvd2luZG93cy9pdC1wcm8vd2luZG93cy14cC9iYjQ5MDk4Mih2PXRlY2huZXQuMTApXG4gICopXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXG4gICAgICBcIlxcXCJcIjtcbiAgICAgIHF1b3RlX2NtZF9maWxlbmFtZSBjbWQ7XG4gICAgICBcIiBcIjtcbiAgICAgIHF1b3RlX2NtZCAoU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgYXJncykpO1xuICAgICAgKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIFwiXFxcIlwiXG4gICAgXVxuICBsZXQgaGFzX2RyaXZlIHMgPVxuICAgIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvblxuICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIGlzX2xldHRlciBzLlswXSAmJiBzLlsxXSA9ICc6J1xuICBsZXQgZHJpdmVfYW5kX3BhdGggcyA9XG4gICAgaWYgaGFzX2RyaXZlIHNcbiAgICB0aGVuIChTdHJpbmcuc3ViIHMgMCAyLCBTdHJpbmcuc3ViIHMgMiAoU3RyaW5nLmxlbmd0aCBzIC0gMikpXG4gICAgZWxzZSAoXCJcIiwgcylcbiAgbGV0IGRpcm5hbWUgcyA9XG4gICAgbGV0IChkcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgbGV0IGRpciA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aCBpblxuICAgIGRyaXZlIF4gZGlyXG4gIGxldCBiYXNlbmFtZSBzID1cbiAgICBsZXQgKF9kcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBDeWd3aW4gOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCA9IFdpbjMyLmlzX2Rpcl9zZXBcbiAgbGV0IGlzX3JlbGF0aXZlID0gV2luMzIuaXNfcmVsYXRpdmVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gV2luMzIuaXNfaW1wbGljaXRcbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IFdpbjMyLmNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gV2luMzIuY2hvcF9zdWZmaXhfb3B0XG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gVW5peC50ZW1wX2Rpcl9uYW1lXG4gIGxldCBxdW90ZSA9IFVuaXgucXVvdGVcbiAgbGV0IHF1b3RlX2NvbW1hbmQgPSBVbml4LnF1b3RlX2NvbW1hbmRcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFN5c2RlcHMgPVxuICAodmFsIChtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgfCBcIldpbjMyXCIgLT4gKG1vZHVsZSBXaW4zMjogU1lTREVQUylcbiAgICAgICB8IFwiQ3lnd2luXCIgLT4gKG1vZHVsZSBDeWd3aW46IFNZU0RFUFMpXG4gICAgICAgfCBfIC0+IChtb2R1bGUgVW5peDogU1lTREVQUykpKVxuXG5pbmNsdWRlIFN5c2RlcHNcblxubGV0IGNvbmNhdCBkaXJuYW1lIGZpbGVuYW1lID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGRpcm5hbWUgaW5cbiAgaWYgbCA9IDAgfHwgaXNfZGlyX3NlcCBkaXJuYW1lIChsLTEpXG4gIHRoZW4gZGlybmFtZSBeIGZpbGVuYW1lXG4gIGVsc2UgZGlybmFtZSBeIGRpcl9zZXAgXiBmaWxlbmFtZVxuXG5sZXQgY2hvcF9zdWZmaXggbmFtZSBzdWZmID1cbiAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYgaW5cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCBuXG5cbmxldCBleHRlbnNpb25fbGVuIG5hbWUgPVxuICBsZXQgcmVjIGNoZWNrIGkwIGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpMCAoaSAtIDEpXG4gICAgZWxzZSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBpMFxuICBpblxuICBsZXQgcmVjIHNlYXJjaF9kb3QgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkgKGkgLSAxKVxuICAgIGVsc2Ugc2VhcmNoX2RvdCAoaSAtIDEpXG4gIGluXG4gIHNlYXJjaF9kb3QgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbmxldCBleHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gXCJcIiBlbHNlIFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbCkgbFxuXG5sZXQgY2hvcF9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX2V4dGVuc2lvblwiXG4gIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmxldCByZW1vdmVfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIG5hbWUgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxuZXh0ZXJuYWwgb3Blbl9kZXNjOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5leHRlcm5hbCBjbG9zZV9kZXNjOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuXG5sZXQgcHJuZyA9IGxhenkoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCBybmQgPSAoUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9IHJlZiB0ZW1wX2Rpcl9uYW1lXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gY3VycmVudF90ZW1wX2Rpcl9uYW1lIDo9IHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWVcblxubGV0IHRlbXBfZmlsZSA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCBvcGVuX3RlbXBfZmlsZSA/KG1vZGUgPSBbT3Blbl90ZXh0XSkgPyhwZXJtcyA9IDBvNjAwKVxuICAgICAgICAgICAgICAgICAgID8odGVtcF9kaXIgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIChuYW1lLFxuICAgICAgIG9wZW5fb3V0X2dlbiAoT3Blbl93cm9ubHk6Ok9wZW5fY3JlYXQ6Ok9wZW5fZXhjbDo6bW9kZSkgcGVybXMgbmFtZSlcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPVxuICAoKiBXYXRjaCBvdXQgZm9yIG92ZXJmbG93IGluIGNvbXB1dGluZyByZV4yICsgaW1eMiAqKVxuICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgaWYgciA9IDAuMCB0aGVuIGlcbiAgZWxzZSBpZiBpID0gMC4wIHRoZW4gclxuICBlbHNlIGlmIHIgPj0gaSB0aGVuXG4gICAgbGV0IHEgPSBpIC8uIHIgaW4gciAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG4gIGVsc2VcbiAgICBsZXQgcSA9IHIgLy4gaSBpbiBpICouIHNxcnQoMS4wICsuIHEgKi4gcSlcblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gICAgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kIGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBmbG9hdDMyID0gRmxvYXQzMlxubGV0IGZsb2F0NjQgPSBGbG9hdDY0XG5sZXQgaW50OF9zaWduZWQgPSBJbnQ4X3NpZ25lZFxubGV0IGludDhfdW5zaWduZWQgPSBJbnQ4X3Vuc2lnbmVkXG5sZXQgaW50MTZfc2lnbmVkID0gSW50MTZfc2lnbmVkXG5sZXQgaW50MTZfdW5zaWduZWQgPSBJbnQxNl91bnNpZ25lZFxubGV0IGludDMyID0gSW50MzJcbmxldCBpbnQ2NCA9IEludDY0XG5sZXQgaW50ID0gSW50XG5sZXQgbmF0aXZlaW50ID0gTmF0aXZlaW50XG5sZXQgY29tcGxleDMyID0gQ29tcGxleDMyXG5sZXQgY29tcGxleDY0ID0gQ29tcGxleDY0XG5sZXQgY2hhciA9IENoYXJcblxubGV0IGtpbmRfc2l6ZV9pbl9ieXRlcyA6IHR5cGUgYSBiLiAoYSwgYikga2luZCAtPiBpbnQgPSBmdW5jdGlvblxuICB8IEZsb2F0MzIgLT4gNFxuICB8IEZsb2F0NjQgLT4gOFxuICB8IEludDhfc2lnbmVkIC0+IDFcbiAgfCBJbnQ4X3Vuc2lnbmVkIC0+IDFcbiAgfCBJbnQxNl9zaWduZWQgLT4gMlxuICB8IEludDE2X3Vuc2lnbmVkIC0+IDJcbiAgfCBJbnQzMiAtPiA0XG4gIHwgSW50NjQgLT4gOFxuICB8IEludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IE5hdGl2ZWludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IENvbXBsZXgzMiAtPiA4XG4gIHwgQ29tcGxleDY0IC0+IDE2XG4gIHwgQ2hhciAtPiAxXG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9sYXlvdXQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGNfbGF5b3V0ID0gQ19sYXlvdXRcbmxldCBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBHZW5hcnJheSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0XG4gIGV4dGVybmFsIGNyZWF0ZTogKCdhLCAnYikga2luZCAtPiAnYyBsYXlvdXQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgID0gXCJjYW1sX2JhX2NyZWF0ZVwiXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhXG4gICAgID0gXCJjYW1sX2JhX2dldF9nZW5lcmljXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9zZXRfZ2VuZXJpY1wiXG5cbiAgbGV0IHJlYyBjbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sID0gQXJyYXkubGVuZ3RoIGlkeCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMCB0byBwcmVkIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgY2xvb3AgYXJyIGlkeCBmIChzdWNjIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCByZWMgZmxvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA8IDAgdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDEgdG8gbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBmbG9vcCBhcnIgaWR4IGYgKHByZWQgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbXMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW1zIGluXG4gICAgbWF0Y2ggQXJyYXkubGVuZ3RoIGRpbXMsIGxheW91dCB3aXRoXG4gICAgfCAwLCBfIC0+IGFyclxuICAgIHwgZGxlbiwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgZGxlbiwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgYmxvYiA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYmxvYiB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2Vfd2l0aENvbnRlbnRUeXBlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiBibG9iIHQgbWV0aFxuZW5kXG5cbmxldCBibG9iX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fQmxvYlxuXG50eXBlICdhIG1ha2VfYmxvYiA9XG4gID9jb250ZW50VHlwZTpzdHJpbmcgLT4gP2VuZGluZ3M6WyBgVHJhbnNwYXJlbnQgfCBgTmF0aXZlIF0gLT4gJ2EgLT4gYmxvYiB0XG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmxldCBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzID1cbiAgbGV0IG9wdGlvbnMgPVxuICAgIGZpbHRlcl9tYXBcbiAgICAgIChmdW4gKG5hbWUsIHYpIC0+XG4gICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBTb21lIChuYW1lLCBVbnNhZmUuaW5qZWN0IChzdHJpbmcgdikpKVxuICAgICAgWyBcInR5cGVcIiwgY29udGVudFR5cGVcbiAgICAgIDsgKCBcImVuZGluZ3NcIlxuICAgICAgICAsIG1hdGNoIGVuZGluZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGBUcmFuc3BhcmVudCAtPiBTb21lIFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHwgU29tZSBgTmF0aXZlIC0+IFNvbWUgXCJuYXRpdmVcIiApXG4gICAgICBdXG4gIGluXG4gIG1hdGNoIG9wdGlvbnMgd2l0aFxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGwgLT4gVW5zYWZlLm9iaiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGEgPVxuICBsZXQgb3B0aW9ucyA9IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgaW5cbiAgbmV3JWpzIGJsb2JfY29uc3RyIChhcnJheSBhKSBvcHRpb25zXG5cbmxldCBibG9iX2Zyb21fc3RyaW5nID9jb250ZW50VHlwZSA/ZW5kaW5ncyBzID1cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIFt8IHN0cmluZyBzIHxdXG5cbmxldCBibG9iX2Zyb21fYW55ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBsID1cbiAgbGV0IGwgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgYXJyYXlCdWZmZXIgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgYXJyYXlCdWZmZXJWaWV3IGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYHN0cmluZyBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKVxuICAgICAgICB8IGBqc19zdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IHNcbiAgICAgICAgfCBgYmxvYiBiIC0+IFVuc2FmZS5pbmplY3QgYilcbiAgICAgIGxcbiAgaW5cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIChBcnJheS5vZl9saXN0IGwpXG5cbmNsYXNzIHR5cGUgZmlsZSA9IG9iamVjdFxuICBpbmhlcml0IGJsb2JcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdE1vZGlmaWVkRGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbiBmaXJlZm94IDMuMC0zLjUgZmlsZS5uYW1lIGlzIG5vdCBhdmFpbGFibGUsIHdlIHVzZSB0aGUgbm9uc3RhbmRhcmQgZmlsZU5hbWUgaW5zdGVhZCAqKVxuY2xhc3MgdHlwZSBmaWxlX25hbWVfb25seSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVOYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZmlsZW5hbWUgZmlsZSA9XG4gIGxldCBmaWxlIDogZmlsZV9uYW1lX29ubHkgdCA9IEpzLlVuc2FmZS5jb2VyY2UgZmlsZSBpblxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5uYW1lIHdpdGhcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLmZpbGVOYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbid0IHJldHJpZXZlIGZpbGUgbmFtZTogbm90IGltcGxlbWVudGVkXCJcbiAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWUpXG4gIHwgU29tZSBuYW1lIC0+IG5hbWVcblxudHlwZSBmaWxlX2FueSA9IDwgPiB0XG5cbmxldCBkb2NfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9Eb2N1bWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwganNvbiA6IGZpbGVfYW55IC0+ICdhIE9wdC50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBkb2N1bWVudCAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGRvY19jb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGVsZW1lbnQgZG9jdW1lbnQgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYmxvYiAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGJsb2JfY29uc3RyIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogI2Jsb2IgdCkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHN0cmluZyAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDoganNfc3RyaW5nIHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGFycmF5QnVmZmVyIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQpXG4gICAgZWxzZSBKcy5udWxsXG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFtmaWxlXSBEb20ubm9kZUxpc3RcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVFcnJvciA9IG9iamVjdFxuICBtZXRob2QgY29kZSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb2dyZXNzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGxlbmd0aENvbXB1dGFibGUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2FkZWQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3RhbCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcm9ncmVzc0V2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZW5kIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEVNUFRZXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxuY2xhc3MgdHlwZSBmaWxlUmVhZGVyID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHJlYWRBc0FycmF5QnVmZmVyIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzQmluYXJ5U3RyaW5nIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIDogI2Jsb2IgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzRGF0YVVSTCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzdWx0IDogZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IGZpbGVFcnJvciB0IHJlYWRvbmx5X3Byb3BcblxuICBpbmhlcml0IHByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgUmVhZGVyRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSBmaWxlUmVhZGVyIHByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGxvYWRzdGFydCA9IEV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IEV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBFdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCBsb2FkZW5kID0gRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmxldCBmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmlsZVJlYWRlclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNhbWxfanNfb25faWUgOiB1bml0IC0+IGJvb2wgdCA9IFwiY2FtbF9qc19vbl9pZVwiXG5cbmxldCBvbklFID0gSnMudG9fYm9vbCAoY2FtbF9qc19vbl9pZSAoKSlcblxuZXh0ZXJuYWwgaHRtbF9lc2NhcGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VzY2FwZVwiXG5cbmV4dGVybmFsIGRlY29kZV9odG1sX2VudGl0aWVzIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lbnRpdGllc1wiXG5cbmNsYXNzIHR5cGUgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2Qgc2V0UHJvcGVydHkgOlxuICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5VmFsdWUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5UHJpb3JpdHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVByb3BlcnR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRlbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkR1cmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25GaWxsTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblBsYXlTdGF0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRBdHRhY2htZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUmVwZWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sbGFwc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSYWRpdXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjYXB0aW9uU2lkZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVySW5jcmVtZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVyUmVzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc0Zsb2F0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJzb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzcGxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW1wdHlDZWxscyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udEZhbWlseSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFNpemUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFZhcmlhbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRXZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGV0dGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5MZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5SaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGFjaXR5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2Qgb3V0bGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lT2Zmc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3cgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dZIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1JpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtBZnRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQmVmb3JlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyRXZlbnRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYmxlTGF5b3V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbmNob3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHREZWNvcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0SW5kZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0VHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmVydGljYWxBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmlzaWJpbGl0eSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2hpdGVTcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdvcmRTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB6SW5kZXggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IpIERvbS5ldmVudF9saXN0ZW5lclxuXG50eXBlIG1vdXNlX2J1dHRvbiA9XG4gIHwgTm9fYnV0dG9uXG4gIHwgTGVmdF9idXR0b25cbiAgfCBNaWRkbGVfYnV0dG9uXG4gIHwgUmlnaHRfYnV0dG9uXG5cbnR5cGUgZGVsdGFfbW9kZSA9XG4gIHwgRGVsdGFfcGl4ZWxcbiAgfCBEZWx0YV9saW5lXG4gIHwgRGVsdGFfcGFnZVxuXG5jbGFzcyB0eXBlIGV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5ldmVudFxuZW5kXG5cbmFuZCBbJ2FdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnQsICdhXSBEb20uY3VzdG9tRXZlbnRcbmVuZFxuXG5hbmQgZm9jdXNFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnV0dG9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBtb3VzZV9idXR0b24gb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJvbUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQga2V5Ym9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyQ29kZSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXlDb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TW9kaWZpZXJTdGF0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGtleUlkZW50aWZpZXIgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZXdoZWVsRXZlbnQgPSBvYmplY3RcbiAgKCogQWxsIG1vZGVybiBicm93c2VycyAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2Qgd2hlZWxEZWx0YSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVogOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhTW9kZSA6IGRlbHRhX21vZGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZVNjcm9sbEV2ZW50ID0gb2JqZWN0XG4gICgqIEZpcmVmb3ggKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hPUklaT05UQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVElDQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgdG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0VG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhbmdlZFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gdG91Y2ggdCBvcHRkZWYgbWV0aFxuZW5kXG5cbmFuZCB0b3VjaCA9IG9iamVjdFxuICBtZXRob2QgaWRlbnRpZmllciA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN1Ym1pdEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3VibWl0dGVyIDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRyYWdFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGF0YVRyYW5zZmVyIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGlwYm9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGNsaXBib2FyZERhdGEgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRhdGFUcmFuc2ZlciA9IG9iamVjdFxuICBtZXRob2QgZHJvcEVmZmVjdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZWZmZWN0QWxsb3dlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0eXBlcyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRFbGVtZW50IDogZWxlbWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhX2FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldERyYWdJbWFnZSA6IGVsZW1lbnQgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBldmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kYmxjbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vkb3duIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZXVwIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW92ZXIgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlbW92ZSA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdXQgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXByZXNzIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlkb3duIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXl1cCA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Nyb2xsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2hlZWwgOiAoJ3NlbGYgdCwgbW91c2V3aGVlbEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ3N0YXJ0IDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbmQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VudGVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdvdmVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdsZWF2ZSA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyb3AgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25lbmQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25pdGVyYXRpb24gOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9ucnVuIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25zdGFydCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uZW5kIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZ290cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9zdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJlbnRlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyY2FuY2VsIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJkb3duIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJsZWF2ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybW92ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3V0IDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdmVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJ1cCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzcGF0Y2hFdmVudCA6IGV2ZW50IHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG5hbmQgcG9wU3RhdGVFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHBvaW50ZXJFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgcG9pbnRlcklkIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhbmdlbnRpYWxQcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR3aXN0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9pbnRlclR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzUHJpbWFyeSA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cmwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3JhZ2VBcmVhIDogc3RvcmFnZSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGhhc2hDaGFuZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG9sZFVSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBhbmltYXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0cmFuc2l0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBwcm9wZXJ0eU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtZWRpYUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcbmVuZFxuXG5hbmQgbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc291cmNlIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBub2RlU2VsZWN0b3IgPSBvYmplY3RcbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3IgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgcXVlcnlTZWxlY3RvckFsbCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuZW5kXG5cbmFuZCB0b2tlbkxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBhZGQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRvZ2dsZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmaWVyIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NOYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc0xpc3QgOiB0b2tlbkxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3Nlc3QgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc3R5bGUgOiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dENvbnRlbnQgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lclRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaWVudExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRQYXJlbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxMZWZ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsVG9wIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsV2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxIZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBnZXRDbGllbnRSZWN0cyA6IGNsaWVudFJlY3RMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgOiBjbGllbnRSZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxJbnRvVmlldyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5hbmQgY2xpZW50UmVjdCA9IG9iamVjdFxuICBtZXRob2QgdG9wIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm90dG9tIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaWVudFJlY3RMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGNsaWVudFJlY3QgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBEb20ubm9faGFuZGxlclxuXG5sZXQgaGFuZGxlciA9IERvbS5oYW5kbGVyXG5cbmxldCBmdWxsX2hhbmRsZXIgPSBEb20uZnVsbF9oYW5kbGVyXG5cbmxldCBpbnZva2VfaGFuZGxlciA9IERvbS5pbnZva2VfaGFuZGxlclxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSAnYSBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpdkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcGFyYWdyYXBoRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkaW5nRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBxdW90ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcmVFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGJyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBockVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbW9kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0ZVRpbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhbmNob3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG93bmxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGltYWdlRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpc01hcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgbmF0dXJhbFdpZHRoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxIZWlnaHQgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29tcGxldGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhcmNoaXZlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlQmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlY2xhcmUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YW5kYnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBhcmFtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcmVhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9IcmVmIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWFwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYXJlYXMgOiBhcmVhRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBlbWJlZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNlbGxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjZWxsSW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYmJyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXhpcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xTcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgaGVhZGVycyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93U3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjb3BlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVJvd0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VjdGlvblJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2VsbHMgOiB0YWJsZUNlbGxFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0Q2VsbCA6IGludCAtPiB0YWJsZUNlbGxFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDZWxsIDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDb2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlU2VjdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNhcHRpb25FbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRCb2RpZXMgOiB0YWJsZVNlY3Rpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxQYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZnJhbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJ1bGVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdW1tYXJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3JlYXRlVEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUSGVhZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVURm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRGb290IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDYXB0aW9uIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRpbWVSYW5nZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZW5kXyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxudHlwZSBuZXR3b3JrU3RhdGUgPVxuICB8IE5FVFdPUktfRU1QVFlcbiAgfCBORVRXT1JLX0lETEVcbiAgfCBORVRXT1JLX0xPQURJTkdcbiAgfCBORVRXT1JLX05PX1NPVVJDRVxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEhBVkVfTk9USElOR1xuICB8IEhBVkVfTUVUQURBVEFcbiAgfCBIQVZFX0NVUlJFTlRfREFUQVxuICB8IEhBVkVfRlVUVVJFX0RBVEFcbiAgfCBIQVZFX0VOT1VHSF9EQVRBXG5cbigqIGh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL3JlZl9hdl9kb20uYXNwICopXG4oKiBvbmx5IGZlYXR1cmVzIHN1cHBvcnRlZCBieSBhbGwgYnJvd3Nlci4gKElFOSspICopXG5jbGFzcyB0eXBlIG1lZGlhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FuUGxheVR5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGxvYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGxheSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhdXRvcGxheSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udHJvbHMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U3JjIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGltZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9vcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhZ3JvdXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG11dGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZSA6IG5ldHdvcmtTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdXNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXliYWNrUmF0ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcGxheWVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlbG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWthYmxlIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2luZyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdm9sdW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXl0aHJvdWdoIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kdXJhdGlvbmNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW1wdGllZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW5kZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZGRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZG1ldGFkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBhdXNlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25yYXRlY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVrZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN0YWxsZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN1c3BlbmQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnZvbHVtZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2FpdGluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhdWRpb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG5jbGFzcyB0eXBlIHZpZGVvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbnR5cGUgY29udGV4dCA9IGpzX3N0cmluZyB0XG5cbmxldCBfMmRfID0gSnMuc3RyaW5nIFwiMmRcIlxuXG50eXBlIGNhbnZhc1BhdHRlcm5cblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRvRGF0YVVSTCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlX2NvbXByZXNzaW9uIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSBvYmplY3RcbiAgbWV0aG9kIGNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNhdmUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzdG9yZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdsb2JhbEFscGhhIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVMaW5lYXJHcmFkaWVudCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhZGlhbEdyYWRpZW50IDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybiA6IGltYWdlRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21WaWRlbyA6IHZpZGVvRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGluZUNhcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUpvaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pdGVyTGltaXQgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0JsdXIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0NvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhclJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZWdpblBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VQYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vdmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcXVhZHJhdGljQ3VydmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZXppZXJDdXJ2ZVRvIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZWxsaXBzZSA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc1BvaW50SW5QYXRoIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ZvY3VzUmluZyA6ICNlbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEJhc2VsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsVGV4dF93aXRoV2lkdGggOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0X3dpdGhXaWR0aCA6XG4gICAganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1lYXN1cmVUZXh0IDoganNfc3RyaW5nIHQgLT4gdGV4dE1ldHJpY3MgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZSA6IGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2Vfd2l0aFNpemUgOlxuICAgIGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbCA6XG4gICAgICAgaW1hZ2VFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhc1dpdGhTaXplIDpcbiAgICBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbUNhbnZhcyA6XG4gICAgICAgY2FudmFzRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFZpZGVvIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhTaXplIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tVmlkZW8gOlxuICAgICAgIHZpZGVvRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVJbWFnZURhdGEgOiBpbnQgLT4gaW50IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgZ2V0SW1hZ2VEYXRhIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBwdXRJbWFnZURhdGEgOiBpbWFnZURhdGEgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzR3JhZGllbnQgPSBvYmplY3RcbiAgbWV0aG9kIGFkZENvbG9yU3RvcCA6IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCB0ZXh0TWV0cmljcyA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGltYWdlRGF0YSA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDogY2FudmFzUGl4ZWxBcnJheSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2FudmFzUGl4ZWxBcnJheSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leHRlcm5hbCBwaXhlbF9nZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9qc19nZXRcIlxuXG5leHRlcm5hbCBwaXhlbF9zZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbmNsYXNzIHR5cGUgcmFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGNvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kQ29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFN0YXJ0IDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBleHRyYWN0Q29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ29udGVudHMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1cnJvdW5kQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbigqKiBJbmZvcm1hdGlvbiBvbiBjdXJyZW50IHNlbGVjdGlvbiAqKVxuY2xhc3MgdHlwZSBzZWxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGFuY2hvck5vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9yT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNDb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZUNvdW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmFuZ2VBdCA6IGludCAtPiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4dGVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb2RpZnkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb1N0YXJ0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9FbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0QWxsQ2hpbGRyZW4gOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhZGRSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQWxsUmFuZ2VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyb21Eb2N1bWVudCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb250YWluc05vZGUgOiBEb20ubm9kZSB0IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZCA6IGhlYWRFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBib2R5IDogYm9keUVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6IGh0bWxFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbWFnZXMgOiBpbWFnZUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGV0cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGlua3MgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvcm1zIDogZm9ybUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9ycyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXNpZ25Nb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3cml0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleGVjQ29tbWFuZCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeU5hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYWN0aXZlRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaWRkZW4gOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbnR5cGUgaW50ZXJ2YWxfaWRcblxudHlwZSB0aW1lb3V0X2lkXG5cbnR5cGUgYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3RuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3J0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYXRobmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VhcmNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoYXNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3NpZ24gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWxvYWQgOiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgbG9jYXRpb25fb3JpZ2luIChsb2MgOiBsb2NhdGlvbiB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgbG9jIyMub3JpZ2luXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHByb3RvY29sID0gbG9jIyMucHJvdG9jb2wgaW5cbiAgICAgIGxldCBob3N0bmFtZSA9IGxvYyMjLmhvc3RuYW1lIGluXG4gICAgICBsZXQgcG9ydCA9IGxvYyMjLnBvcnQgaW5cbiAgICAgIGlmIHByb3RvY29sIyMubGVuZ3RoID0gMCAmJiBob3N0bmFtZSMjLmxlbmd0aCA9IDBcbiAgICAgIHRoZW4gSnMuc3RyaW5nIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IG9yaWdpbiA9IHByb3RvY29sIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiLy9cIikgaG9zdG5hbWUgaW5cbiAgICAgICAgaWYgcG9ydCMjLmxlbmd0aCA+IDAgdGhlbiBvcmlnaW4jI2NvbmNhdF8yIChKcy5zdHJpbmcgXCI6XCIpIGxvYyMjLnBvcnQgZWxzZSBvcmlnaW4pXG4gICAgKGZ1biBvIC0+IG8pXG5cbmNsYXNzIHR5cGUgaGlzdG9yeSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ28gOiBpbnQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiYWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcndhcmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcHVzaFN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZVN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHVuZG9NYW5hZ2VyID0gb2JqZWN0IGVuZFxuXG5jbGFzcyB0eXBlIG5hdmlnYXRvciA9IG9iamVjdFxuICBtZXRob2QgYXBwQ29kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcE5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcFZlcnNpb24gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZUVuYWJsZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbkxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF0Zm9ybSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmVuZG9yIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyQWdlbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4VG91Y2hQb2ludHMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyZWVuID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcHBsaWNhdGlvbkNhY2hlID0gb2JqZWN0XG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGRhdGUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3dhcENhY2hlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2hlY2tpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ubm91cGRhdGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZG93bmxvYWRpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udXBkYXRlcmVhZHkgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2FjaGVkIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ic29sZXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5jbGFzcyB0eXBlIF9VUkwgPSBvYmplY3RcbiAgbWV0aG9kIGNyZWF0ZU9iamVjdFVSTCA6ICNGaWxlLmJsb2IgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJldm9rZU9iamVjdFVSTCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgd2luZG93ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgZG9jdW1lbnQgOiBkb2N1bWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGljYXRpb25DYWNoZSA6IGFwcGxpY2F0aW9uQ2FjaGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpc3RvcnkgOiBoaXN0b3J5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1bmRvTWFuYWdlciA6IHVuZG9NYW5hZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXZpZ2F0b3IgOiBuYXZpZ2F0b3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFNlbGVjdGlvbiA6IHNlbGVjdGlvbiB0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEJ5IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Vzc2lvblN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYWxTdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvcCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcmFtZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3Blbl8gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gd2luZG93IHQgb3B0IG1ldGhcblxuICBtZXRob2QgYWxlcnQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29uZmlybSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHByb21wdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHByaW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludGVydmFsIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gaW50ZXJ2YWxfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckludGVydmFsIDogaW50ZXJ2YWxfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWVvdXQgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiB0aW1lb3V0X2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJUaW1lb3V0IDogdGltZW91dF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDpcbiAgICAobnVtYmVyX3QgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgbWV0aFxuXG4gIG1ldGhvZCBjYW5jZWxBbmltYXRpb25GcmFtZSA6IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JlZW4gOiBzY3JlZW4gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGUgOiAjZWxlbWVudCB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGVfcHNldWRvRWx0IDpcbiAgICAjZWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGF0b2IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGJ0b2EgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJlZm9yZXVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25yZXNpemUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vcmllbnRhdGlvbmNoYW5nZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnBvcHN0YXRlIDogKHdpbmRvdyB0LCBwb3BTdGF0ZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25oYXNoY2hhbmdlIDogKHdpbmRvdyB0LCBoYXNoQ2hhbmdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ubGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vZmZsaW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDogX1VSTCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGV2aWNlUGl4ZWxSYXRpbyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2luZG93IDogd2luZG93IHQgPSBKcy5VbnNhZmUuZ2xvYmFsXG5cbigqIFRoZSB0b3BsZXZlbCBvYmplY3QgKilcblxubGV0IGRvY3VtZW50ID0gd2luZG93IyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9leG4gaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJnZXRFbGVtZW50QnlJZF9leG46ICVTIG5vdCBmb3VuZFwiIGlkKSlcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfb3B0IGlkID0gSnMuT3B0LnRvX29wdGlvbiAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfY29lcmNlIGlkIGNvZXJjZSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgKGZ1biBlIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjZSBlKSlcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgZnJhbWVTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb2xzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vUmVzaXplIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlGcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFdpbmRvdyA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKioqKilcblxuKCpYWFggU2hvdWxkIHByb3ZpZGUgY3JlYXRpb24gZnVuY3Rpb25zIGEgbGEgbGFibGd0ay4uLiAqKVxuXG5sZXQgb3B0X2l0ZXIgeCBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgdiAtPiBmIHZcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVFbGVtZW50U3ludGF4ID0gcmVmIGBVbmtub3duXG5cbmxldCByZWMgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0ID1cbiAgaWYgUG9seS4oX3R5cGUgPSBOb25lKSAmJiBQb2x5LihuYW1lID0gTm9uZSlcbiAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpXG4gIGVsc2VcbiAgICBtYXRjaCAhY3JlYXRlRWxlbWVudFN5bnRheCB3aXRoXG4gICAgfCBgU3RhbmRhcmQgLT5cbiAgICAgICAgbGV0IHJlcyA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdCkgaW5cbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+IHJlcyMjLl90eXBlIDo9IHQpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPiByZXMjIy5uYW1lIDo9IG4pO1xuICAgICAgICByZXNcbiAgICB8IGBFeHRlbmRlZCAtPlxuICAgICAgICBsZXQgYSA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMiAoSnMuc3RyaW5nIFwiPFwiKSAoSnMuc3RyaW5nIGVsdCkpO1xuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgdHlwZT1cXFwiXCIpIChodG1sX2VzY2FwZSB0KSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiBuYW1lPVxcXCJcIikgKGh0bWxfZXNjYXBlIG4pIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaCAoSnMuc3RyaW5nIFwiPlwiKSk7XG4gICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgKGRvYyMjY3JlYXRlRWxlbWVudCAoYSMjam9pbiAoSnMuc3RyaW5nIFwiXCIpKSlcbiAgICB8IGBVbmtub3duIC0+XG4gICAgICAgIGNyZWF0ZUVsZW1lbnRTeW50YXggOj1cbiAgICAgICAgICBpZiB0cnlcbiAgICAgICAgICAgICAgIGxldCBlbCA6IGlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgICAgICAgICAgIChkb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIFwiPGlucHV0IG5hbWU9XFxcInhcXFwiPlwiKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5lcXVhbHMgZWwjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIFwiaW5wdXRcIilcbiAgICAgICAgICAgICAgICYmIEpzLmVxdWFscyBlbCMjLm5hbWUgKEpzLnN0cmluZyBcInhcIilcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICB0aGVuIGBFeHRlbmRlZFxuICAgICAgICAgIGVsc2UgYFN0YW5kYXJkO1xuICAgICAgICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHRcblxubGV0IGNyZWF0ZUh0bWwgZG9jIDogaHRtbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHRtbFwiXG5cbmxldCBjcmVhdGVIZWFkIGRvYyA6IGhlYWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhlYWRcIlxuXG5sZXQgY3JlYXRlTGluayBkb2MgOiBsaW5rRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5rXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVNZXRhIGRvYyA6IG1ldGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFcIlxuXG5sZXQgY3JlYXRlQmFzZSBkb2MgOiBiYXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiYXNlXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVCb2R5IGRvYyA6IGJvZHlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJvZHlcIlxuXG5sZXQgY3JlYXRlRm9ybSBkb2MgOiBmb3JtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JtXCJcblxubGV0IGNyZWF0ZU9wdGdyb3VwIGRvYyA6IG9wdEdyb3VwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRncm91cFwiXG5cbmxldCBjcmVhdGVPcHRpb24gZG9jIDogb3B0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRpb25cIlxuXG5sZXQgY3JlYXRlU2VsZWN0ID9fdHlwZSA/bmFtZSBkb2MgOiBzZWxlY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInNlbGVjdFwiXG5cbmxldCBjcmVhdGVJbnB1dCA/X3R5cGUgP25hbWUgZG9jIDogaW5wdXRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImlucHV0XCJcblxubGV0IGNyZWF0ZVRleHRhcmVhID9fdHlwZSA/bmFtZSBkb2MgOiB0ZXh0QXJlYUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwidGV4dGFyZWFcIlxuXG5sZXQgY3JlYXRlQnV0dG9uID9fdHlwZSA/bmFtZSBkb2MgOiBidXR0b25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImJ1dHRvblwiXG5cbmxldCBjcmVhdGVMYWJlbCBkb2MgOiBsYWJlbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGFiZWxcIlxuXG5sZXQgY3JlYXRlRmllbGRzZXQgZG9jIDogZmllbGRTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpZWxkc2V0XCJcblxubGV0IGNyZWF0ZUxlZ2VuZCBkb2MgOiBsZWdlbmRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxlZ2VuZFwiXG5cbmxldCBjcmVhdGVVbCBkb2MgOiB1TGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidWxcIlxuXG5sZXQgY3JlYXRlT2wgZG9jIDogb0xpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9sXCJcblxubGV0IGNyZWF0ZURsIGRvYyA6IGRMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkbFwiXG5cbmxldCBjcmVhdGVMaSBkb2MgOiBsaUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQYXJhbSBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFByZSBvZiBwcmVFbGVtZW50IHRcbiAgfCBRIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgU2NyaXB0IG9mIHNjcmlwdEVsZW1lbnQgdFxuICB8IFNlbGVjdCBvZiBzZWxlY3RFbGVtZW50IHRcbiAgfCBTdHlsZSBvZiBzdHlsZUVsZW1lbnQgdFxuICB8IFRhYmxlIG9mIHRhYmxlRWxlbWVudCB0XG4gIHwgVGJvZHkgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGQgb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGV4dGFyZWEgb2YgdGV4dEFyZWFFbGVtZW50IHRcbiAgfCBUZm9vdCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUaGVhZCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaXRsZSBvZiB0aXRsZUVsZW1lbnQgdFxuICB8IFRyIG9mIHRhYmxlUm93RWxlbWVudCB0XG4gIHwgVWwgb2YgdUxpc3RFbGVtZW50IHRcbiAgfCBWaWRlbyBvZiB2aWRlb0VsZW1lbnQgdFxuICB8IE90aGVyIG9mIGVsZW1lbnQgdFxuXG5sZXQgb3RoZXIgZSA9IE90aGVyIChlIDogI2VsZW1lbnQgdCA6PiBlbGVtZW50IHQpXG5cbmxldCB0YWdnZWQgKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCB0YWcgPSBKcy50b19ieXRlc3RyaW5nIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDBcbiAgdGhlbiBvdGhlciBlXG4gIGVsc2VcbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCB0YWcgMCB3aXRoXG4gICAgfCAnYScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYVwiIC0+IEEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImFyZWFcIiAtPiBBcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhdWRpb1wiIC0+IEF1ZGlvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2InIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImJhc2VcIiAtPiBCYXNlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJibG9ja3F1b3RlXCIgLT4gQmxvY2txdW90ZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYm9keVwiIC0+IEJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJyXCIgLT4gQnIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJ1dHRvblwiIC0+IEJ1dHRvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdjJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJjYW52YXNcIiAtPiBDYW52YXMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNhcHRpb25cIiAtPiBDYXB0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xcIiAtPiBDb2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbGdyb3VwXCIgLT4gQ29sZ3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZGVsXCIgLT4gRGVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkaXZcIiAtPiBEaXYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRsXCIgLT4gRGwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZW1iZWRcIiAtPiBFbWJlZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdmJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJmaWVsZHNldFwiIC0+IEZpZWxkc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmb3JtXCIgLT4gRm9ybSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVzZXRcIiAtPiBGcmFtZXNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVcIiAtPiBGcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdoJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJoMVwiIC0+IEgxIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoMlwiIC0+IEgyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoM1wiIC0+IEgzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNFwiIC0+IEg0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNVwiIC0+IEg1IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNlwiIC0+IEg2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoZWFkXCIgLT4gSGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHJcIiAtPiBIciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHRtbFwiIC0+IEh0bWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaWZyYW1lXCIgLT4gSWZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbWdcIiAtPiBJbWcgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImlucHV0XCIgLT4gSW5wdXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImluc1wiIC0+IElucyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdsJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJsYWJlbFwiIC0+IExhYmVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsZWdlbmRcIiAtPiBMZWdlbmQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpXCIgLT4gTGkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpbmtcIiAtPiBMaW5rIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ20nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm1hcFwiIC0+IE1hcCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibWV0YVwiIC0+IE1ldGEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwib2JqZWN0XCIgLT4gT2JqZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvbFwiIC0+IE9sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRncm91cFwiIC0+IE9wdGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRpb25cIiAtPiBPcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicFwiIC0+IFAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInBhcmFtXCIgLT4gUGFyYW0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInByZVwiIC0+IFByZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdxJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJxXCIgLT4gUSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdzJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJzY3JpcHRcIiAtPiBTY3JpcHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInNlbGVjdFwiIC0+IFNlbGVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic3R5bGVcIiAtPiBTdHlsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd0JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ0YWJsZVwiIC0+IFRhYmxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Ym9keVwiIC0+IFRib2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZFwiIC0+IFRkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZXh0YXJlYVwiIC0+IFRleHRhcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Zm9vdFwiIC0+IFRmb290IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aFwiIC0+IFRoIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aGVhZFwiIC0+IFRoZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aXRsZVwiIC0+IFRpdGxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0clwiIC0+IFRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInVsXCIgLT4gVWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidmlkZW9cIiAtPiBWaWRlbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8IF8gLT4gb3RoZXIgZVxuXG5sZXQgb3B0X3RhZ2dlZCBlID0gT3B0LmNhc2UgZSAoZnVuICgpIC0+IE5vbmUpIChmdW4gZSAtPiBTb21lICh0YWdnZWQgZSkpXG5cbnR5cGUgdGFnZ2VkRXZlbnQgPVxuICB8IE1vdXNlRXZlbnQgb2YgbW91c2VFdmVudCB0XG4gIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZEV2ZW50IHRcbiAgfCBNZXNzYWdlRXZlbnQgb2YgbWVzc2FnZUV2ZW50IHRcbiAgfCBNb3VzZXdoZWVsRXZlbnQgb2YgbW91c2V3aGVlbEV2ZW50IHRcbiAgfCBNb3VzZVNjcm9sbEV2ZW50IG9mIG1vdXNlU2Nyb2xsRXZlbnQgdFxuICB8IFBvcFN0YXRlRXZlbnQgb2YgcG9wU3RhdGVFdmVudCB0XG4gIHwgT3RoZXJFdmVudCBvZiBldmVudCB0XG5cbmxldCB0YWdnZWRFdmVudCAoZXYgOiAjZXZlbnQgSnMudCkgPVxuICBKcy5PcHQuY2FzZVxuICAgIChDb2VyY2VUby5tb3VzZUV2ZW50IGV2KVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChDb2VyY2VUby5rZXlib2FyZEV2ZW50IGV2KVxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChDb2VyY2VUby53aGVlbEV2ZW50IGV2KVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgIChDb2VyY2VUby5tb3VzZVNjcm9sbEV2ZW50IGV2KVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5wb3BTdGF0ZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5tZXNzYWdlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IE90aGVyRXZlbnQgKGV2IDo+IGV2ZW50IHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNZXNzYWdlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IFBvcFN0YXRlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2VTY3JvbGxFdmVudCBldikpXG4gICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNld2hlZWxFdmVudCBldikpXG4gICAgICAgIChmdW4gZXYgLT4gS2V5Ym9hcmRFdmVudCBldikpXG4gICAgKGZ1biBldiAtPiBNb3VzZUV2ZW50IGV2KVxuXG5sZXQgb3B0X3RhZ2dlZEV2ZW50IGV2ID0gT3B0LmNhc2UgZXYgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGV2IC0+IFNvbWUgKHRhZ2dlZEV2ZW50IGV2KSlcblxubGV0IHN0b3BQcm9wYWdhdGlvbiBldiA9XG4gIGxldCBlID0gSnMuVW5zYWZlLmNvZXJjZSBldiBpblxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5zdG9wUHJvcGFnYXRpb25cbiAgICAoZnVuICgpIC0+IGUjIy5jYW5jZWxCdWJibGUgOj0gSnMuX3RydWUpXG4gICAgKGZ1biBfIC0+IGUjI19zdG9wUHJvcGFnYXRpb24pXG5cbmxldCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdCA9XG4gIEpzLlVuc2FmZS5wdXJlX2V4cHIgKGZ1biBfIC0+XG4gICAgICBsZXQgdyA9IEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IGluXG4gICAgICBsZXQgbCA9XG4gICAgICAgIFsgdyMjLnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcmVxID0gTGlzdC5maW5kIChmdW4gYyAtPiBKcy5PcHRkZWYudGVzdCBjKSBsIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgcmVxIFt8IEpzLlVuc2FmZS5pbmplY3QgY2FsbGJhY2sgfF1cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBub3cgKCkgPSBKcy50b19mbG9hdCAobmV3JWpzIEpzLmRhdGVfbm93KSMjZ2V0VGltZSBpblxuICAgICAgICBsZXQgbGFzdCA9IHJlZiAobm93ICgpKSBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT5cbiAgICAgICAgICBsZXQgdCA9IG5vdyAoKSBpblxuICAgICAgICAgIGxldCBkdCA9ICFsYXN0ICsuICgxMDAwLiAvLiA2MC4pIC0uIHQgaW5cbiAgICAgICAgICBsZXQgZHQgPSBpZiBQb2x5LihkdCA8IDAuKSB0aGVuIDAuIGVsc2UgZHQgaW5cbiAgICAgICAgICBsYXN0IDo9IHQ7XG4gICAgICAgICAgaWdub3JlICh3aW5kb3cjI3NldFRpbWVvdXQgY2FsbGJhY2sgKEpzLmZsb2F0IGR0KSkpXG5cbigqKioqKVxuXG5sZXQgaGFzUHVzaFN0YXRlICgpID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IyMuaGlzdG9yeSkjIy5wdXNoU3RhdGVcblxubGV0IGhhc1BsYWNlaG9sZGVyICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnBsYWNlaG9sZGVyXG5cbmxldCBoYXNSZXF1aXJlZCAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5yZXF1aXJlZFxuXG5sZXQgb3ZlcmZsb3dfbGltaXQgPSAyMTQ3NDgzXzAwMC5cblxuKCogbXMgKilcblxudHlwZSB0aW1lb3V0X2lkX3NhZmUgPSB0aW1lb3V0X2lkIG9wdGlvbiByZWZcblxubGV0IHNldFRpbWVvdXQgY2FsbGJhY2sgZCA6IHRpbWVvdXRfaWRfc2FmZSA9XG4gIGxldCBpZCA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCBkICgpID1cbiAgICBsZXQgc3RlcCwgcmVtYWluID1cbiAgICAgIGlmIFBvbHkuKGQgPiBvdmVyZmxvd19saW1pdCkgdGhlbiBvdmVyZmxvd19saW1pdCwgZCAtLiBvdmVyZmxvd19saW1pdCBlbHNlIGQsIDAuXG4gICAgaW5cbiAgICBsZXQgY2IgPSBpZiBQb2x5LihyZW1haW4gPSAwLikgdGhlbiBjYWxsYmFjayBlbHNlIGxvb3AgcmVtYWluIGluXG4gICAgaWQgOj0gU29tZSAod2luZG93IyNzZXRUaW1lb3V0IChKcy53cmFwX2NhbGxiYWNrIGNiKSAoSnMuZmxvYXQgc3RlcCkpXG4gIGluXG4gIGxvb3AgZCAoKTtcbiAgaWRcblxubGV0IGNsZWFyVGltZW91dCAoaWQgOiB0aW1lb3V0X2lkX3NhZmUpID1cbiAgbWF0Y2ggIWlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBpZCA6PSBOb25lO1xuICAgICAgd2luZG93IyNjbGVhclRpbWVvdXQgeFxuXG5sZXQganNfYXJyYXlfb2ZfY29sbGVjdGlvbiAoYyA6ICNlbGVtZW50IGNvbGxlY3Rpb24gSnMudCkgOiAjZWxlbWVudCBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICA9XG4gIEpzLlVuc2FmZS4obWV0aF9jYWxsIChqc19leHByIFwiW10uc2xpY2VcIikgXCJjYWxsXCIgW3wgaW5qZWN0IGMgfF0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGZvcm1EYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBlbmQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kX2Jsb2IgOiBqc19zdHJpbmcgdCAtPiBGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZm9ybURhdGEgOiBmb3JtRGF0YSB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxubGV0IGZvcm1EYXRhX2Zvcm0gOiAoZm9ybUVsZW1lbnQgdCAtPiBmb3JtRGF0YSB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbnR5cGUgZm9ybV9lbHQgPVxuICBbIGBTdHJpbmcgb2YganNfc3RyaW5nIHRcbiAgfCBgRmlsZSBvZiBGaWxlLmZpbGUgdFxuICBdXG5cbnR5cGUgZm9ybV9jb250ZW50cyA9XG4gIFsgYEZpZWxkcyBvZiAoc3RyaW5nICogZm9ybV9lbHQpIGxpc3QgcmVmXG4gIHwgYEZvcm1EYXRhIG9mIGZvcm1EYXRhIHRcbiAgXVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5jbGFzcyB0eXBlIHN1Ym1pdHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5sZXQgaGF2ZV9jb250ZW50IChlbHQgOiBzdWJtaXR0YWJsZUVsZW1lbnQgdCkgPVxuICBlbHQjIy5uYW1lIyMubGVuZ3RoID4gMCAmJiBub3QgKEpzLnRvX2Jvb2wgZWx0IyMuZGlzYWJsZWQpXG5cbmxldCBnZXRfdGV4dGFyZWFfdmFsIChlbHQgOiB0ZXh0QXJlYUVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfc2VsZWN0X3ZhbCAoZWx0IDogc2VsZWN0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGlmIHRvX2Jvb2wgZWx0IyMubXVsdGlwbGVcbiAgICB0aGVuXG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIEFycmF5LmluaXQgZWx0IyMub3B0aW9ucyMjLmxlbmd0aCAoZnVuIGkgLT4gT3B0LnRvX29wdGlvbiAoZWx0IyMub3B0aW9ucyMjaXRlbSBpKSlcbiAgICAgIGluXG4gICAgICBmaWx0ZXJfbWFwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICAgICAgaWYgSnMudG9fYm9vbCBlIyMuc2VsZWN0ZWQgdGhlbiBTb21lIChuYW1lLCBgU3RyaW5nIGUjIy52YWx1ZSkgZWxzZSBOb25lKVxuICAgICAgICAoQXJyYXkudG9fbGlzdCBvcHRpb25zKVxuICAgIGVsc2UgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5jbGFzcyB0eXBlIGZpbGVfaW5wdXQgPSBvYmplY3RcbiAgaW5oZXJpdCBpbnB1dEVsZW1lbnRcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGdldF9pbnB1dF92YWwgPyhnZXQgPSBmYWxzZSkgKGVsdCA6IGlucHV0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGxldCB2YWx1ZSA9IGVsdCMjLnZhbHVlIGluXG4gICAgbWF0Y2ggdG9fYnl0ZXN0cmluZyBlbHQjIy5fdHlwZSMjdG9Mb3dlckNhc2Ugd2l0aFxuICAgIHwgXCJjaGVja2JveFwiIHwgXCJyYWRpb1wiIC0+XG4gICAgICAgIGlmIHRvX2Jvb2wgZWx0IyMuY2hlY2tlZCB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdIGVsc2UgW11cbiAgICB8IFwic3VibWl0XCIgfCBcInJlc2V0XCIgLT4gW11cbiAgICB8IFwidGV4dFwiIHwgXCJwYXNzd29yZFwiIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgfCBcImZpbGVcIiAtPiAoXG4gICAgICAgIGlmIGdldFxuICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgZWx0IDogZmlsZV9pbnB1dCB0ID0gVW5zYWZlLmNvZXJjZSBlbHQgaW5cbiAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLmZpbGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgbGlzdCAtPiAoXG4gICAgICAgICAgICAgIGlmIGxpc3QjIy5sZW5ndGggPSAwXG4gICAgICAgICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIChKcy5zdHJpbmcgXCJcIikgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5tdWx0aXBsZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGxpc3QjI2l0ZW0gMCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gWyBuYW1lLCBgRmlsZSBmaWxlIF0pXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyX21hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiBmIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBTb21lIChuYW1lLCBgRmlsZSBmaWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkudG9fbGlzdCAoQXJyYXkuaW5pdCBsaXN0IyMubGVuZ3RoIChmdW4gaSAtPiBsaXN0IyNpdGVtIGkpKSkpKVxuICAgIHwgXyAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfZm9ybV9lbGVtZW50cyAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpIDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAoZm9ybSMjLmVsZW1lbnRzIyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyAoaSAtIGkpXG4gICAgICB8IFNvbWUgeCAtPiBsb29wICh4IDo6IGFjYykgKGkgLSAxKVxuICBpblxuICBsb29wIFtdIChmb3JtIyMuZWxlbWVudHMjIy5sZW5ndGggLSAxKVxuXG5sZXQgZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYgPVxuICBtYXRjaCB0YWdnZWQgdiB3aXRoXG4gIHwgU2VsZWN0IHYgLT4gZ2V0X3NlbGVjdF92YWwgdlxuICB8IElucHV0IHYgLT4gZ2V0X2lucHV0X3ZhbCA/Z2V0IHZcbiAgfCBUZXh0YXJlYSB2IC0+IGdldF90ZXh0YXJlYV92YWwgdlxuICB8IF8gLT4gW11cblxubGV0IGZvcm1fZWxlbWVudHMgP2dldCAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHYgLT4gZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYpIChnZXRfZm9ybV9lbGVtZW50cyBmb3JtKSlcblxubGV0IGFwcGVuZCAoZm9ybV9jb250ZW50cyA6IGZvcm1fY29udGVudHMpIChmb3JtX2VsdCA6IHN0cmluZyAqIGZvcm1fZWx0KSA9XG4gIG1hdGNoIGZvcm1fY29udGVudHMgd2l0aFxuICB8IGBGaWVsZHMgbGlzdCAtPiBsaXN0IDo9IGZvcm1fZWx0IDo6ICFsaXN0XG4gIHwgYEZvcm1EYXRhIGYgLT4gKFxuICAgICAgbWF0Y2ggZm9ybV9lbHQgd2l0aFxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gZiMjYXBwZW5kIChzdHJpbmcgbmFtZSkgc1xuICAgICAgfCBuYW1lLCBgRmlsZSBmaWxlIC0+IGYjI2FwcGVuZF9ibG9iIChzdHJpbmcgbmFtZSkgKGZpbGUgOj4gRmlsZS5ibG9iIHQpKVxuXG5sZXQgZW1wdHlfZm9ybV9jb250ZW50cyAoKSA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gKEpzLmRlZiBmb3JtRGF0YSkgd2l0aFxuICB8IE5vbmUgLT4gYEZpZWxkcyAocmVmIFtdKVxuICB8IFNvbWUgY29uc3RyIC0+IGBGb3JtRGF0YSAobmV3JWpzIGNvbnN0cilcblxubGV0IHBvc3RfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgbGV0IGNvbnRlbnRzID0gZW1wdHlfZm9ybV9jb250ZW50cyAoKSBpblxuICBMaXN0Lml0ZXIgKGFwcGVuZCBjb250ZW50cykgKGZvcm1fZWxlbWVudHMgZm9ybSk7XG4gIGNvbnRlbnRzXG5cbmxldCBnZXRfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IG5hbWUsIHRvX3N0cmluZyBzXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIChmb3JtX2VsZW1lbnRzIH5nZXQ6dHJ1ZSBmb3JtKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IFVOU0VOVFxuICB8IE9QRU5FRFxuICB8IEhFQURFUlNfUkVDRUlWRURcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG50eXBlIF8gcmVzcG9uc2UgPVxuICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCBPcHQudCByZXNwb25zZVxuICB8IEJsb2IgOiAjRmlsZS5ibG9iIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IE9wdC50IHJlc3BvbnNlXG4gIHwgSlNPTiA6ICdhIE9wdC50IHJlc3BvbnNlXG4gIHwgVGV4dCA6IGpzX3N0cmluZyB0IHJlc3BvbnNlXG4gIHwgRGVmYXVsdCA6IHN0cmluZyByZXNwb25zZVxuXG5jbGFzcyB0eXBlIHhtbEh0dHBSZXF1ZXN0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ucmVhZHlzdGF0ZWNoYW5nZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX29wZW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIF9vcGVuX2Z1bGwgOlxuICAgICAgIGpzX3N0cmluZyB0XG4gICAgLT4ganNfc3RyaW5nIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UmVxdWVzdEhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvdmVycmlkZU1pbWVUeXBlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmQgOiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6ICNGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9kb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Zvcm1EYXRhIDogRm9ybS5mb3JtRGF0YSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0dXNUZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSZXNwb25zZUhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFsbFJlc3BvbnNlSGVhZGVycyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVzcG9uc2UgOiBGaWxlLmZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUZXh0IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VYTUwgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9udGltZW91dCA6XG4gICAgKCdzZWxmIHQsICdzZWxmIEZpbGUucHJvZ3Jlc3NFdmVudCB0KSBEb20uZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdXBsb2FkIDogeG1sSHR0cFJlcXVlc3RVcGxvYWQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0geG1sSHR0cFJlcXVlc3QgRmlsZS5wcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyZWFkeXN0YXRlY2hhbmdlXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdGltZW91dCA9IERvbS5FdmVudC5tYWtlIFwidGltZW91dFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmV4dGVybmFsIGNyZWF0ZSA6IHVuaXQgLT4geG1sSHR0cFJlcXVlc3QgSnMudCA9IFwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcIlxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBPQ2FtbFBybzogR3LDqWdvaXJlIEhlbnJ5LCDDh2HEn2RhxZ8gQm96bWFuLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3b3JrZXIgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXJyb3JFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ2IgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvc3RNZXNzYWdlIDogJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRlcm1pbmF0ZSA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBlcnJvckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZW5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmVubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbG5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBVbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogJ2EgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3b3JrZXIgPSBVbnNhZmUuZ2xvYmFsIyMuX1dvcmtlclxuXG5sZXQgY3JlYXRlIHNjcmlwdCA9IG5ldyVqcyB3b3JrZXIgKHN0cmluZyBzY3JpcHQpXG5cbmxldCBpbXBvcnRfc2NyaXB0cyBzY3JpcHRzIDogdW5pdCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHMpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIuaW1wb3J0X3NjcmlwdHMgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5mdW5fY2FsbFxuICAgIFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzXG4gICAgKEFycmF5Lm1hcCAoZnVuIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpKSAoQXJyYXkub2ZfbGlzdCBzY3JpcHRzKSlcblxubGV0IHNldF9vbm1lc3NhZ2UgaGFuZGxlciA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIGxldCBqc19oYW5kbGVyIChldiA6ICdhIG1lc3NhZ2VFdmVudCBKcy50KSA9IGhhbmRsZXIgZXYjIy5kYXRhIGluXG4gIFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UgOj0gd3JhcF9jYWxsYmFjayBqc19oYW5kbGVyXG5cbmxldCBwb3N0X21lc3NhZ2UgbXNnID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMucG9zdE1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZ2xvYmFsIyNwb3N0TWVzc2FnZSBtc2dcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSmFjcXVlcy1QYXNjYWwgRGVwbGFpeFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0lOR1xuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gY2xvc2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGNvZGUgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdhc0NsZWFuIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9ibG9iIDogRmlsZS5ibG9iIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgd2ViU29ja2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB1cmwgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnVmZmVyZWRBbW91bnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgY2xvc2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGV4dGVuc2lvbnMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZSA6IGludCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGVBbmRSZWFzb24gOiBpbnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIG1lc3NhZ2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYmluYXJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICBtZXRob2Qgc2VuZCA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6IEZpbGUuYmxvYiBKcy50IC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCB3ZWJTb2NrZXQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbCA9IHdlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbHMgPSB3ZWJTb2NrZXRcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHdlYlNvY2tldFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG4oKiogNS4xIFR5cGVzICopXG5cbnR5cGUgc2l6ZWkgPSBpbnRcblxudHlwZSBzaXplaXB0ciA9IGludFxuXG50eXBlIGludHB0ciA9IGludFxuXG50eXBlIHVpbnQgPSBpbnRcblxudHlwZSBjbGFtcGYgPSBudW1iZXJfdFxuXG50eXBlIHZvaWRcblxudHlwZSBjbGVhckJ1ZmZlck1hc2sgPSBpbnRcblxudHlwZSBiZWdpbk1vZGVcblxudHlwZSBibGVuZGluZ0ZhY3RvclxuXG50eXBlIGJsZW5kTW9kZVxuXG50eXBlIGJ1ZmZlclRhcmdldFxuXG50eXBlIGJ1ZmZlclVzYWdlXG5cbnR5cGUgY3VsbEZhY2VNb2RlXG5cbnR5cGUgZGVwdGhGdW5jdGlvblxuXG50eXBlIGVuYWJsZUNhcFxuXG50eXBlIGVycm9yQ29kZVxuXG50eXBlIGZyb250RmFjZURpclxuXG50eXBlIGhpbnRUYXJnZXRcblxudHlwZSBoaW50TW9kZVxuXG50eXBlIHRleHR1cmVVbml0ID0gaW50XG5cbnR5cGUgJ2EgcGl4ZWxTdG9yZVBhcmFtXG5cbnR5cGUgc3RlbmNpbE9wXG5cbnR5cGUgZmJUYXJnZXRcblxudHlwZSBhdHRhY2htZW50UG9pbnRcblxudHlwZSByYlRhcmdldFxuXG50eXBlIHRleFRhcmdldFxuXG50eXBlICdhIHBhcmFtZXRlclxuXG50eXBlICdhIGJ1ZmZlclBhcmFtZXRlclxuXG50eXBlICdhIHZlcnRleEF0dHJpYlBhcmFtXG5cbnR5cGUgdmVydGV4QXR0cmliUG9pbnRlclBhcmFtXG5cbnR5cGUgJ2EgYXR0YWNoUGFyYW1cblxudHlwZSBmcmFtZWJ1ZmZlclN0YXR1c1xuXG50eXBlICdhIHJlbmRlcmJ1ZmZlclBhcmFtXG5cbnR5cGUgZm9ybWF0XG5cbnR5cGUgcGl4ZWxGb3JtYXRcblxudHlwZSBwaXhlbFR5cGVcblxudHlwZSAnYSB0ZXhQYXJhbVxuXG50eXBlIGRhdGFUeXBlXG5cbnR5cGUgc2hhZGVyVHlwZVxuXG50eXBlICdhIHByb2dyYW1QYXJhbVxuXG50eXBlICdhIHNoYWRlclBhcmFtXG5cbnR5cGUgdGV4dHVyZUZpbHRlclxuXG50eXBlIHdyYXBNb2RlXG5cbnR5cGUgdGV4RmlsdGVyXG5cbnR5cGUgdW5pZm9ybVR5cGVcblxudHlwZSBjb2xvcnNwYWNlQ29udmVyc2lvblxuXG50eXBlIHNoYWRlclByZWNpc2lvblR5cGVcblxudHlwZSBvYmplY3RUeXBlXG5cbigqKiA1LjIgV2ViR0xDb250ZXh0QXR0cmlidXRlcyAqKVxuY2xhc3MgdHlwZSBjb250ZXh0QXR0cmlidXRlcyA9IG9iamVjdFxuICBtZXRob2QgYWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXB0aCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN0ZW5jaWwgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBhbnRpYWxpYXMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVtdWx0aXBsaWVkQWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCA6IGJvb2wgdCBwcm9wXG5lbmRcblxubGV0IGRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyA9XG4gIEpzLlVuc2FmZS4oXG4gICAgb2JqXG4gICAgICBbfCBcImFscGhhXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJkZXB0aFwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwic3RlbmNpbFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImFudGlhbGlhc1wiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwicHJlbXVsdGlwbGllZEFscGhhXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgfF0pXG5cbnR5cGUgYnVmZmVyXG5cbnR5cGUgZnJhbWVidWZmZXJcblxudHlwZSBwcm9ncmFtXG5cbnR5cGUgcmVuZGVyYnVmZmVyXG5cbnR5cGUgc2hhZGVyXG5cbnR5cGUgdGV4dHVyZVxuXG50eXBlICdhIHVuaWZvcm1Mb2NhdGlvblxuXG5jbGFzcyB0eXBlIGFjdGl2ZUluZm8gPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNoYWRlclByZWNpc2lvbkZvcm1hdCA9IG9iamVjdFxuICBtZXRob2QgcmFuZ2VNaW4gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZU1heCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWNpc2lvbiA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZW5kZXJpbmdDb250ZXh0ID0gb2JqZWN0XG4gICgqKiA1LjEzLjEgQXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBjYW52YXMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVyV2lkdGggOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJIZWlnaHQgOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgKCoqIDUuMTMuMiBHZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0ICopXG5cbiAgbWV0aG9kIGdldENvbnRleHRBdHRyaWJ1dGVzIDogY29udGV4dEF0dHJpYnV0ZXMgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMyBTZXR0aW5nIGFuZCBnZXR0aW5nIHN0YXRlICopXG5cbiAgbWV0aG9kIGFjdGl2ZVRleHR1cmUgOiB0ZXh0dXJlVW5pdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvbiA6IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvblNlcGFyYXRlIDogYmxlbmRNb2RlIC0+IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jIDogYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuY1NlcGFyYXRlIDpcbiAgICBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEZXB0aCA6IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJTdGVuY2lsIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xvck1hc2sgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGN1bGxGYWNlIDogY3VsbEZhY2VNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aE1hc2sgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoUmFuZ2UgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXNhYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyb250RmFjZSA6IGZyb250RmFjZURpciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UGFyYW1ldGVyIDogJ2EuICdhIHBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEVycm9yIDogZXJyb3JDb2RlIG1ldGhcblxuICBtZXRob2QgaGludCA6IGhpbnRUYXJnZXQgLT4gaGludE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzRW5hYmxlZCA6IGVuYWJsZUNhcCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcGl4ZWxTdG9yZWkgOiAnYS4gJ2EgcGl4ZWxTdG9yZVBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwb2x5Z29uT2Zmc2V0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNhbXBsZUNvdmVyYWdlIDogY2xhbXBmIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuY1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrIDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2tTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3AgOiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wU2VwYXJhdGUgOlxuICAgIGN1bGxGYWNlTW9kZSAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy40IFZpZXdpbmcgYW5kIGNsaXBwaW5nICopXG5cbiAgbWV0aG9kIHNjaXNzb3IgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNSBCdWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyXyA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfY3JlYXRlIDogYnVmZmVyVGFyZ2V0IC0+IHNpemVpcHRyIC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVCdWZmZXIgOiBidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUJ1ZmZlciA6IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCdWZmZXJQYXJhbWV0ZXIgOiAnYS4gYnVmZmVyVGFyZ2V0IC0+ICdhIGJ1ZmZlclBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzQnVmZmVyIDogYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy42IEZyYW1lYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyXyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXJTdGF0dXMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyVGV4dHVyZTJEIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciA6XG4gICAgJ2EuIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiAnYSBhdHRhY2hQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNyBSZW5kZXJidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXJfIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIgOiAnYS4gcmJUYXJnZXQgLT4gJ2EgcmVuZGVyYnVmZmVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1JlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgOiByYlRhcmdldCAtPiBmb3JtYXQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOCBUZXh0dXJlIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFRleHR1cmUgOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZV8gOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleEltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IHBpeGVsRm9ybWF0IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4U3ViSW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUZXh0dXJlIDogdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZW5lcmF0ZU1pcG1hcCA6IHRleFRhcmdldCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0VGV4UGFyYW1ldGVyIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNUZXh0dXJlIDogdGV4dHVyZSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfbmV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IHZvaWQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiB7W1xuICAgICAgbWV0aG9kIHRleFBhcmFtZXRlcmYgOiB0ZXhUYXJnZXQgLT4gdGV4UGFyYW0gLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG4gICAgIF19XG4gICopXG4gIG1ldGhvZCB0ZXhQYXJhbWV0ZXJpIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy45IFByb2dyYW1zIGFuZCBTaGFkZXJzICopXG5cbiAgbWV0aG9kIGF0dGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBpbGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNoYWRlciA6IHNoYWRlclR5cGUgLT4gc2hhZGVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGV0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRhY2hlZFNoYWRlcnMgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1QYXJhbWV0ZXIgOiAnYS4gcHJvZ3JhbSB0IC0+ICdhIHByb2dyYW1QYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1JbmZvTG9nIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUGFyYW1ldGVyIDogJ2EuIHNoYWRlciB0IC0+ICdhIHNoYWRlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IDpcbiAgICBzaGFkZXJUeXBlIC0+IHNoYWRlclByZWNpc2lvblR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uRm9ybWF0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJJbmZvTG9nIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGlzUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1NoYWRlciA6IHNoYWRlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmtQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdXNlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmFsaWRhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEwIFVuaWZvcm1zIGFuZCBhdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlQXR0cmliIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlVW5pZm9ybSA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm0gOiAnYSAnYi4gcHJvZ3JhbSB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IC0+ICdiIG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybUxvY2F0aW9uIDogJ2EuIHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYiA6ICdhLiB1aW50IC0+ICdhIHZlcnRleEF0dHJpYlBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliT2Zmc2V0IDogdWludCAtPiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gLT4gc2l6ZWlwdHIgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdl90eXBlZCA6XG4gICAgbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWkgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2X3R5cGVkIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdiA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmIDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2X3R5cGVkIDpcbiAgICBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpIDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2IDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdl90eXBlZCA6XG4gICAgWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZiA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2X3R5cGVkIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnYgOiBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpIDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdiA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGYgOlxuICAgICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnZfdHlwZWQgOlxuICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdiA6IFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGkgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdiA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXZfdHlwZWQgOlxuICAgIFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2IDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnZfdHlwZWQgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnYgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdl90eXBlZCA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdiA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2X3R5cGVkIDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmYgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZiA6XG4gICAgdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyIDpcbiAgICB1aW50IC0+IGludCAtPiBkYXRhVHlwZSAtPiBib29sIHQgLT4gc2l6ZWkgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjExIFdyaXRpbmcgdG8gdGhlIGRyYXdpbmcgYnVmZmVyICopXG5cbiAgbWV0aG9kIGNsZWFyIDogY2xlYXJCdWZmZXJNYXNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3QXJyYXlzIDogYmVnaW5Nb2RlIC0+IGludCAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0VsZW1lbnRzIDogYmVnaW5Nb2RlIC0+IHNpemVpIC0+IGRhdGFUeXBlIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmluaXNoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZsdXNoIDogdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTIgUmVhZGluZyBiYWNrIHBpeGVscyAqKVxuXG4gIG1ldGhvZCByZWFkUGl4ZWxzIDpcbiAgICAgICBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMyBEZXRlY3RpbmcgY29udGV4dCBsb3N0IGV2ZW50cyAqKVxuXG4gIG1ldGhvZCBpc0NvbnRleHRMb3N0IDogYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy4xNCBEZXRlY3RpbmcgYW5kIGVuYWJsaW5nIGV4dGVuc2lvbnMgKilcblxuICBtZXRob2QgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnNpb24gOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgdCBvcHQgbWV0aFxuXG4gICgqIFVudHlwZWQhICopXG4gICgqKiBDb25zdGFudHMgKilcblxuICBtZXRob2QgX0RFUFRIX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9JTlRTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfTE9PUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9GQU5fIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkUgOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfU0FUVVJBVEVfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19BRERfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RSRUFNX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RBVElDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFlOQU1JQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JBQ0sgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfQU5EX0JBQ0tfIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkQgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9fRVJST1JfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRU5VTV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9WQUxVRV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09VVF9PRl9NRU1PUllfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlRFWFRfTE9TVF9XRUJHTF8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NDVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ET05UX0NBUkVfIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkFTVEVTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05JQ0VTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UXyA6IGhpbnRUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9SR0JfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9BTFBIQV8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9DT0xPUl8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9XSURUSF8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9NT0RFXyA6IGN1bGxGYWNlTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfRkFDRV8gOiBmcm9udEZhY2VEaXIgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9XUklURU1BU0tfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DTEVBUl9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfRlVOQ18gOiBkZXB0aEZ1bmN0aW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0NMRUFSX1ZBTFVFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVklFV1BPUlQgOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfQk9YXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQ0xFQVJfVkFMVUVfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX1dSSVRFTUFTS18gOiBib29sIHQganNfYXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF9QQVJBTSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEFDS19BTElHTk1FTlRfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZJRVdQT1JUX0RJTVNfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVUJQSVhFTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVEX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVFTl9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxVRV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEFfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9VTklUU18gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRkFDVE9SXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfMkRfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9CVUZGRVJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX0lOVkVSVF8gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IFR5cGVkX2FycmF5LnVpbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UX1BBUkFNXyA6IGhpbnRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfU0laRV8gOiBpbnQgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9VU0FHRV8gOiBidWZmZXJVc2FnZSBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQllURSA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfRFQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSE9SVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0lOVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNl81XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQiA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0UgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0VfQUxQSEFfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFHTUVOVF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9BVFRSSUJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkFSWUlOR19WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFERVJfVFlQRV8gOiBzaGFkZXJUeXBlIHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBJTEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTX1BST0cgOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTktfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkFMSURBVEVfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVRUQUNIRURfU0hBREVSU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9VTklGT1JNU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9BVFRSSUJVVEVTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OXyA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1BST0dSQU1fIDogcHJvZ3JhbSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVORE9SIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkVSIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlNJT04gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9URVhUVVJFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQklORElOR18gOiBmcmFtZWJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JJTkRJTkdfIDogcmVuZGVyYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfUkVOREVSQlVGRkVSX1NJWkUgOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FVkVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVNTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVBVEVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT1RFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFdBWVMgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0tFRVAgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQTEFDRSA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WRVJUIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUiA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUFHX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NSU5fRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfU18gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfVF8gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfMkRfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTExIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQRUFUIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0xBTVBfVE9fRURHRV8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NSVJST1JFRF9SRVBFQVRfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl8yRF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSX0NVQkVfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXyA6IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6XG4gICAgYnVmZmVyIHQgb3B0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfVkVSVEVYX0FUVFJJQl8gOlxuICAgIFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVIgOiBmYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVIgOiByYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBNCA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1X0ExXyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1NjUgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UMTZfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVg4XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfV0lEVEhfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9IRUlHSFRfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfIDogZm9ybWF0IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9SRURfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRV8gOiBvYmplY3RUeXBlIGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfUkVOREVSQlVGRkVSIDpcbiAgICByZW5kZXJidWZmZXIgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1RFWFRVUkUgOiB0ZXh0dXJlIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRV8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQVRUQUNITUVOVDBfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9DT01QTEVURV8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF9QQVJBTSA6XG4gICAgY29sb3JzcGFjZUNvbnZlcnNpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkUgOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CUk9XU0VSX0RFRkFVTFRfV0VCR0xfIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiA1LjE0IFdlYkdMQ29udGV4dEV2ZW50ICopXG5cbmNsYXNzIHR5cGUgY29udGV4dEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRcblxuICBtZXRob2Qgc3RhdHVzTWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbGV0IHdlYmdsY29udGV4dGxvc3QgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0bG9zdFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dHJlc3RvcmVkID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dHJlc3RvcmVkXCJcblxuICBsZXQgd2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yXCJcbmVuZFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHRfIDoganNfc3RyaW5nIHQgLT4gY29udGV4dEF0dHJpYnV0ZXMgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgZ2V0Q29udGV4dCAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwid2ViZ2xcIikgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyAjIyAoZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpKVxuXG5sZXQgZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSBhdHRyaWJzID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBhdHRyaWJzIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikgYXR0cmlic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3QsIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlZ2V4cCA9IEpzLnJlZ0V4cCBKcy50XG5cbnR5cGUgcmVzdWx0ID0gSnMubWF0Y2hfcmVzdWx0IEpzLnRcblxubGV0IHJlZ2V4cCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnaVwiKVxuXG5sZXQgcmVnZXhwX3dpdGhfZmxhZyBzIGYgPVxuICBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIChcImdcIiBeIGYpKVxuXG5sZXQgYmx1bnRfc3RyX2FycmF5X2dldCBhIGkgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgYSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCBzdHJpbmdfbWF0Y2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5tYXAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpIEpzLm1hdGNoX3Jlc3VsdClcblxubGV0IHNlYXJjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvblxuICAgIChKcy5PcHQubWFwXG4gICAgICAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgKGZ1biByZXNfcHJlIC0+XG4gICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IHJlc19wcmUgaW5cbiAgICAgICAgIHJlcyMjLmluZGV4LCByZXMpKVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgPSBzZWFyY2hcblxubGV0IG1hdGNoZWRfc3RyaW5nIHIgPSBibHVudF9zdHJfYXJyYXlfZ2V0IHIgMFxuXG5sZXQgbWF0Y2hlZF9ncm91cCByIGkgPVxuICBKcy5PcHRkZWYudG9fb3B0aW9uIChKcy5PcHRkZWYubWFwIChKcy5hcnJheV9nZXQgciBpKSBKcy50b19ieXRlc3RyaW5nKVxuXG5sZXQgcXVvdGVfcmVwbF9yZSA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJbJF1cIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHF1b3RlX3JlcGwgcyA9IChKcy5ieXRlc3RyaW5nIHMpIyNyZXBsYWNlIHF1b3RlX3JlcGxfcmUgKEpzLnN0cmluZyBcIiQkJCRcIilcblxubGV0IGdsb2JhbF9yZXBsYWNlIHIgcyBzX2J5ID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHIgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCByZXBsYWNlX2ZpcnN0IHIgcyBzX2J5ID1cbiAgbGV0IGZsYWdzID1cbiAgICBtYXRjaCBKcy50b19ib29sIHIjIy5pZ25vcmVDYXNlLCBKcy50b19ib29sIHIjIy5tdWx0aWxpbmUgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEpzLnN0cmluZyBcIlwiXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtXCJcbiAgICB8IHRydWUsIGZhbHNlIC0+IEpzLnN0cmluZyBcImlcIlxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtaVwiXG4gIGluXG4gIGxldCByJyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIHIjIy5zb3VyY2UgZmxhZ3MgaW5cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByJyAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IGxpc3Rfb2ZfanNfYXJyYXkgYSA9XG4gIGxldCByZWMgYXV4IGFjY3UgaWR4ID1cbiAgICBpZiBpZHggPCAwIHRoZW4gYWNjdSBlbHNlIGF1eCAoYmx1bnRfc3RyX2FycmF5X2dldCBhIGlkeCA6OiBhY2N1KSAoaWR4IC0gMSlcbiAgaW5cbiAgYXV4IFtdIChhIyMubGVuZ3RoIC0gMSlcblxubGV0IHNwbGl0IHIgcyA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHAgcikpXG5cbmxldCBib3VuZGVkX3NwbGl0IHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cExpbWl0ZWQgciBpKSlcblxuKCogTW9yZSBjb25zdHJ1Y3RvcnMgKilcblxubGV0IHF1b3RlX3JlID0gcmVnZXhwIFwiW1xcXFxdWygpXFxcXFxcXFx8KyouP3t9XiRdXCJcblxubGV0IHF1b3RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHF1b3RlX3JlIChKcy5zdHJpbmcgXCJcXFxcJCZcIikpXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSByZWdleHAgKHF1b3RlIHMpXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gcmVnZXhwX2Nhc2VfZm9sZCAocXVvdGUgcylcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBVcmwgdGFtcGVyaW5nLiAqKVxuXG5sZXQgc3BsaXQgYyBzID0gSnMuc3RyX2FycmF5IChzIyNzcGxpdCAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSlcblxubGV0IHNwbGl0XzIgYyBzID1cbiAgbGV0IGluZGV4ID0gcyMjaW5kZXhPZiAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSBpblxuICBpZiBpbmRleCA8IDAgdGhlbiBKcy51bmRlZmluZWQgZWxzZSBKcy5kZWYgKHMjI3NsaWNlIDAgaW5kZXgsIHMjI3NsaWNlX2VuZCAoaW5kZXggKyAxKSlcblxuZXhjZXB0aW9uIExvY2FsX2V4blxuXG5sZXQgaW50ZXJydXB0ICgpID0gcmFpc2UgTG9jYWxfZXhuXG5cbigqIHVybCAoQUtBIHBlcmNlbnQpIGVuY29kaW5nL2RlY29kaW5nICopXG5cbmxldCBwbHVzX3JlID0gUmVnZXhwLnJlZ2V4cF9zdHJpbmcgXCIrXCJcblxubGV0IGVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiJTJCXCJcblxubGV0IHVuZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIgXCJcblxubGV0IHBsdXNfcmVfanNfc3RyaW5nID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlxcXFwrXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCB1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzID1cbiAgcGx1c19yZV9qc19zdHJpbmcjIy5sYXN0SW5kZXggOj0gMDtcbiAgcyMjcmVwbGFjZSBwbHVzX3JlX2pzX3N0cmluZyAoSnMuc3RyaW5nIFwiIFwiKVxuXG5sZXQgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlICh1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzKSlcblxubGV0IHVybGRlY29kZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgKHVuZXNjYXBlX3BsdXMgcykpKVxuXG4oKmxldCB1cmxlbmNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIHMpKilcblxubGV0IHVybGVuY29kZSA/KHdpdGhfcGx1cyA9IHRydWUpIHMgPVxuICBpZiB3aXRoX3BsdXNcbiAgdGhlbiBlc2NhcGVfcGx1cyAoSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKSlcbiAgZWxzZSBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpXG5cbnR5cGUgaHR0cF91cmwgPVxuICB7IGh1X2hvc3QgOiBzdHJpbmcgICgqKiBUaGUgaG9zdCBwYXJ0IG9mIHRoZSB1cmwuICopXG4gIDsgaHVfcG9ydCA6IGludCAgKCoqIFRoZSBwb3J0IGZvciB0aGUgY29ubmVjdGlvbiBpZiBhbnkuICopXG4gIDsgaHVfcGF0aCA6IHN0cmluZyBsaXN0ICAoKiogVGhlIHBhdGggc3BsaXQgb24gWycvJ10gY2hhcmFjdGVycy4gKilcbiAgOyBodV9wYXRoX3N0cmluZyA6IHN0cmluZyAgKCoqIFRoZSBvcmlnaW5hbCBlbnRpcmUgcGF0aC4gKilcbiAgOyBodV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgICAgICgqKiBBcmd1bWVudHMgYXMgYSBmaWVsZC12YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gbGlzdC4qKVxuICA7IGh1X2ZyYWdtZW50IDogc3RyaW5nICAoKiogVGhlIGZyYWdtZW50IHBhcnQgKGFmdGVyIHRoZSBbJyMnXSBjaGFyYWN0ZXIpLiAqKVxuICB9XG4oKiogVGhlIHR5cGUgZm9yIEhUVFAgdXJsLiAqKVxuXG50eXBlIGZpbGVfdXJsID1cbiAgeyBmdV9wYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBmdV9wYXRoX3N0cmluZyA6IHN0cmluZ1xuICA7IGZ1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgOyBmdV9mcmFnbWVudCA6IHN0cmluZ1xuICB9XG4oKiogVGhlIHR5cGUgZm9yIGxvY2FsIGZpbGUgdXJscy4gKilcblxudHlwZSB1cmwgPVxuICB8IEh0dHAgb2YgaHR0cF91cmxcbiAgfCBIdHRwcyBvZiBodHRwX3VybFxuICB8IEZpbGUgb2YgZmlsZV91cmxcbiAgICAgICgqKiBUaGUgdHlwZSBmb3IgdXJscy4gW0ZpbGVdIGlzIGZvciBsb2NhbCBmaWxlcyBhbmQgW0V4b3RpYyBzXSBpcyBmb3JcbiAgICB1bmtub3duL3Vuc3VwcG9ydGVkIHByb3RvY29scy4gKilcblxuZXhjZXB0aW9uIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbmxldCBpc19zZWN1cmUgcHJvdF9zdHJpbmcgPVxuICBtYXRjaCBKcy50b19ieXRlc3RyaW5nIHByb3Rfc3RyaW5nIyN0b0xvd2VyQ2FzZSB3aXRoXG4gIHwgXCJodHRwczpcIiB8IFwiaHR0cHNcIiAtPiB0cnVlXG4gIHwgXCJodHRwOlwiIHwgXCJodHRwXCIgLT4gZmFsc2VcbiAgfCBcImZpbGU6XCIgfCBcImZpbGVcIiB8IF8gLT4gcmFpc2UgTm90X2FuX2h0dHBfcHJvdG9jb2xcblxuKCogcG9ydCBudW1iZXIgKilcbmxldCBkZWZhdWx0X2h0dHBfcG9ydCA9IDgwXG5cbmxldCBkZWZhdWx0X2h0dHBzX3BvcnQgPSA0NDNcblxuKCogcGF0aCAqKVxubGV0IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGxldCBqID0gdHJ5IFN0cmluZy5pbmRleF9mcm9tIHMgaSAnLycgd2l0aCBOb3RfZm91bmQgLT4gbCBpblxuICAgIGxldCB3b3JkID0gU3RyaW5nLnN1YiBzIGkgKGogLSBpKSBpblxuICAgIGlmIGogPj0gbCB0aGVuIFsgd29yZCBdIGVsc2Ugd29yZCA6OiBhdXggKGogKyAxKVxuICBpblxuICBtYXRjaCBhdXggMCB3aXRoXG4gIHwgWyBcIlwiIF0gLT4gW11cbiAgfCBbIFwiXCI7IFwiXCIgXSAtPiBbIFwiXCIgXVxuICB8IGEgLT4gYVxuXG4oKiBBcmd1bWVudHMgKilcbmxldCBlbmNvZGVfYXJndW1lbnRzIGwgPVxuICBTdHJpbmcuY29uY2F0IFwiJlwiIChMaXN0Lm1hcCAoZnVuIChuLCB2KSAtPiB1cmxlbmNvZGUgbiBeIFwiPVwiIF4gdXJsZW5jb2RlIHYpIGwpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyBzID1cbiAgbGV0IGFyciA9IHNwbGl0ICcmJyBzIGluXG4gIGxldCBsZW4gPSBhcnIjIy5sZW5ndGggaW5cbiAgbGV0IG5hbWVfdmFsdWVfc3BsaXQgcyA9IHNwbGl0XzIgJz0nIHMgaW5cbiAgbGV0IHJlYyBhdXggYWNjIGlkeCA9XG4gICAgaWYgaWR4IDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGF1eFxuICAgICAgICAgIChKcy5PcHRkZWYuY2FzZSAoSnMuYXJyYXlfZ2V0IGFyciBpZHgpIGludGVycnVwdCAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgIEpzLk9wdGRlZi5jYXNlIChuYW1lX3ZhbHVlX3NwbGl0IHMpIGludGVycnVwdCAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBnZXQgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgIGdldCB4LCBnZXQgeSkpXG4gICAgICAgICAgOjogYWNjKVxuICAgICAgICAgIChwcmVkIGlkeClcbiAgICAgIHdpdGggTG9jYWxfZXhuIC0+IGF1eCBhY2MgKHByZWQgaWR4KVxuICBpblxuICBhdXggW10gKGxlbiAtIDEpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzIHMgPSBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgdXJsX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nXG4gICAgICAgXCJeKFtIaF1bVHRdW1R0XVtQcF1bU3NdPyk6Ly8oWzAtOWEtekEtWi4tXSt8XFxcXFtbMC05YS16QS1aLi1dK1xcXFxdfFxcXFxbWzAtOUEtRmEtZjouXStcXFxcXSk/KDooWzAtOV0rKSk/KC8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyk/JFwiKVxuXG5sZXQgZmlsZV9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZyBcIl4oW0ZmXVtJaV1bTGxdW0VlXSk6Ly8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyRcIilcblxubGV0IHVybF9vZl9qc19zdHJpbmcgcyA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKHVybF9yZSMjZXhlYyBzKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChmaWxlX3JlIyNleGVjIHMpXG4gICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmlsZVxuICAgICAgICAgICAgICAgeyBmdV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIDsgZnVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgICAgICAgIEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIH0pKSlcbiAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgIGxldCBzc2wgPSBpc19zZWN1cmUgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMSkgaW50ZXJydXB0KSBpblxuICAgICAgbGV0IHBvcnRfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IGlmIHNzbCB0aGVuIDQ0MyBlbHNlIDgwXG4gICAgICAgIHwgcyAtPiBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgIGluXG4gICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgdXJsID1cbiAgICAgICAgeyBodV9ob3N0ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgOyBodV9wb3J0ID1cbiAgICAgICAgICAgIHBvcnRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSkpXG4gICAgICAgIDsgaHVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgOyBodV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgIDsgaHVfYXJndW1lbnRzID1cbiAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDgpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgOyBodV9mcmFnbWVudCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxMCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgU29tZSAoaWYgc3NsIHRoZW4gSHR0cHMgdXJsIGVsc2UgSHR0cCB1cmwpKVxuXG5sZXQgdXJsX29mX3N0cmluZyBzID0gdXJsX29mX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgc3RyaW5nX29mX3VybCA9IGZ1bmN0aW9uXG4gIHwgRmlsZSB7IGZ1X3BhdGggPSBwYXRoOyBmdV9hcmd1bWVudHMgPSBhcmdzOyBmdV9mcmFnbWVudCA9IGZyYWc7IF8gfSAtPiAoXG4gICAgICBcImZpbGU6Ly9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHA6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgODAgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cHNcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHBzOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDQ0MyAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcblxubW9kdWxlIEN1cnJlbnQgPSBzdHJ1Y3RcbiAgbGV0IGwgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5PcHRkZWYucmV0dXJuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uKVxuICAgIHRoZW4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb25cbiAgICBlbHNlXG4gICAgICBsZXQgZW1wdHkgPSBKcy5zdHJpbmcgXCJcIiBpblxuICAgICAgb2JqZWN0JWpzXG4gICAgICAgIHZhbCBtdXRhYmxlIGhyZWYgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHByb3RvY29sID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0bmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcG9ydCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcGF0aG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHNlYXJjaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaGFzaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG9yaWdpbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICAgIG1ldGhvZCByZWxvYWQgPSAoKVxuXG4gICAgICAgIG1ldGhvZCByZXBsYWNlIF8gPSAoKVxuXG4gICAgICAgIG1ldGhvZCBhc3NpZ24gXyA9ICgpXG4gICAgICBlbmRcblxuICBsZXQgaG9zdCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ob3N0bmFtZVxuXG4gIGxldCBwcm90b2NvbCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wcm90b2NvbFxuXG4gIGxldCBwb3J0ID1cbiAgICAoZnVuICgpIC0+XG4gICAgICB0cnkgU29tZSAoaW50X29mX3N0cmluZyAoSnMudG9fYnl0ZXN0cmluZyBsIyMucG9ydCkpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmUpXG4gICAgICAoKVxuXG4gIGxldCBwYXRoX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wYXRobmFtZVxuXG4gIGxldCBwYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0cmluZ1xuXG4gIGxldCBhcmd1bWVudHMgPVxuICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAoaWYgSnMuZXF1YWxzIChsIyMuc2VhcmNoIyNjaGFyQXQgMCkgKEpzLnN0cmluZyBcIj9cIilcbiAgICAgICB0aGVuIGwjIy5zZWFyY2gjI3NsaWNlX2VuZCAxXG4gICAgICAgZWxzZSBsIyMuc2VhcmNoKVxuXG4gIGxldCBnZXRfZnJhZ21lbnQgKCkgPVxuICAgIGxldCBzID0gSnMudG9fYnl0ZXN0cmluZyBsIyMuaGFzaCBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgQ2hhci5lcXVhbCBzLlswXSAnIydcbiAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIGVsc2Ugc1xuXG4gIGxldCBzZXRfZnJhZ21lbnQgcyA9IGwjIy5oYXNoIDo9IEpzLmJ5dGVzdHJpbmcgc1xuXG4gIGxldCBnZXQgKCkgPSB1cmxfb2ZfanNfc3RyaW5nIGwjIy5ocmVmXG5cbiAgbGV0IHNldCB1ID0gbCMjLmhyZWYgOj0gSnMuYnl0ZXN0cmluZyAoc3RyaW5nX29mX3VybCB1KVxuXG4gIGxldCBhc19zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaHJlZlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbmV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbmxldCB1cGRhdGVfZmlsZSB+bmFtZSB+Y29udGVudCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IG5hbWUgaW5cbiAgb3V0cHV0X3N0cmluZyBvYyBjb250ZW50O1xuICBjbG9zZV9vdXQgb2NcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6XG4gIG91dF9jaGFubmVsIC0+IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbmxldCBzZXRfY2hhbm5lbF9mbHVzaGVyIChvdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsKSAoZiA6IHN0cmluZyAtPiB1bml0KSA9XG4gIGxldCBmJyA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayA9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIHMgLT4gZiAoSnMudG9fYnl0ZXN0cmluZyBzKSlcbiAgaW5cbiAgc2V0X2NoYW5uZWxfb3V0cHV0JyBvdXRfY2hhbm5lbCBmJ1xuXG5sZXQgc2V0X2NoYW5uZWxfZmlsbGVyIChpbl9jaGFubmVsIDogaW5fY2hhbm5lbCkgKGYgOiB1bml0IC0+IHN0cmluZykgPVxuICBsZXQgZicgOiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayBmIGluXG4gIHNldF9jaGFubmVsX2lucHV0JyBpbl9jaGFubmVsIGYnXG5cbmV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOlxuICBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbmV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxubGV0IG1vdW50IH5wYXRoIGYgPVxuICBtb3VudF9hdXRvbG9hZCBwYXRoIChKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJlZml4IHBhdGggLT4gZiB+cHJlZml4IH5wYXRoKSlcblxubGV0IHVubW91bnQgfnBhdGggPSB1bm1vdW50IHBhdGhcblxubGV0IGpzX29mX29jYW1sX3ZlcnNpb24gPVxuICBpZiBTdHJpbmcuZXF1YWwgTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb24gXCJcIlxuICB0aGVuIExpYl92ZXJzaW9uLnNcbiAgZWxzZSBMaWJfdmVyc2lvbi5zIF4gXCIrXCIgXiBMaWJfdmVyc2lvbi5naXRfdmVyc2lvblxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOSBBbGV4YW5kZXIgWWFuaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyU2l6ZSA9IG9iamVjdFxuICBtZXRob2QgaW5saW5lU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYmxvY2tTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm9yZGVyQm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50Qm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBib3ggOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb2JzZXJ2ZV93aXRoT3B0aW9ucyA6XG4gICAgI0RvbS5ub2RlIEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIDogcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IHJlc2l6ZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9SZXNpemVPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcmVzaXplT2JzZXJ2ZXJcblxubGV0IHJlc2l6ZU9ic2VydmVyIDpcbiAgICAoICAgKHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICByZXNpemVPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGJveCA6IEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbilcbiAgICAoKSA6IHJlc2l6ZU9ic2VydmVyIEpzLnQgPVxuICBsZXQgb2JzID0gbmV3JWpzIHJlc2l6ZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIChtYXRjaCBib3ggd2l0aFxuICB8IE5vbmUgLT4gb2JzIyNvYnNlcnZlIG5vZGVcbiAgfCBTb21lIGJveCAtPlxuICAgICAgbGV0IG9wdHMgPSBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSBpblxuICAgICAgb3B0cyMjLmJveCA6PSBib3g7XG4gICAgICBvYnMjI29ic2VydmVfd2l0aE9wdGlvbnMgbm9kZSBvcHRzKTtcbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDIxIFBoaWxpcCBXaGl0ZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgZW50cnlUeXBlcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVudHJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRUaW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGdldEVudHJpZXMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA6XG4gICAgKCAgIChwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0IEpzLnQgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlIH5lbnRyeV90eXBlcyB+ZiA9XG4gIGxldCBlbnRyeV90eXBlcyA9IGVudHJ5X3R5cGVzIHw+IExpc3QubWFwIEpzLnN0cmluZyB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IGluXG4gIGxldCBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBsZXQgKCkgPSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IyMuZW50cnlUeXBlcyA6PSBlbnRyeV90eXBlcyBpblxuICBsZXQgb2JzID0gbmV3JWpzIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgY2hpbGRMaXN0IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJ0cmVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVGaWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvblJlY29yZCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZW1vdmVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lc3BhY2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgOiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NdXRhdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhjaGlsZF9saXN0IDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVzIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YSA6IGJvb2wgb3B0aW9uKVxuICAgID8oc3VidHJlZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfZmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCBvcHRpb24pXG4gICAgKCkgOiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgPVxuICBsZXQgb3B0X2l0ZXIgeCBmID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBtdXRhdGlvbk9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCBjZmcgPSBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoaWxkX2xpc3QgKGZ1biB2IC0+IGNmZyMjLmNoaWxkTGlzdCA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVzIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVzIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIHN1YnRyZWUgKGZ1biB2IC0+IGNmZyMjLnN1YnRyZWUgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlT2xkVmFsdWUgOj0gdikgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6PSB2KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGF0dHJpYnV0ZV9maWx0ZXIgKGZ1biBsIC0+XG4gICAgICAgIGNmZyMjLmF0dHJpYnV0ZUZpbHRlciA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSlcbiAgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIG5vZGUgY2ZnIGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBQaWVycmUgQ2hhbWJhcnQgMjAxMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSA8ID4gSnMudFxuXG5sZXQgb2JqID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSAodiA6ICdhKSA9XG4gICgqICdfJyBpcyBhZGRlZCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvYmplY3RzIG1ldGhvZHMgKilcbiAgSnMuVW5zYWZlLnNldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpIHZcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpID1cbiAgSnMuVW5zYWZlLmRlbGV0ZSB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgOiAnYSBKcy5PcHRkZWYudCA9XG4gIEpzLlVuc2FmZS5nZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCA9XG4gIGxldCBrZXlfYXJyYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50ID1cbiAgICBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdCMja2V5cyB0XG4gIGluXG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgZm9yIGkgPSAwIHRvIHByZWQga2V5X2FycmF5IyMubGVuZ3RoIGRvXG4gICAgbGV0IGtleSA9XG4gICAgICBKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQga2V5X2FycmF5IGkpIChmdW4gKCkgLT4gZmFpbHdpdGggXCJKc3RhYmxlLmtleXNcIilcbiAgICBpblxuICAgIHJlcyA6PSBrZXkjI3N1YnN0cmluZyAwIChwcmVkIGtleSMjLmxlbmd0aCkgOjogIXJlc1xuICBkb25lO1xuICBMaXN0LnJldiAhcmVzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IEdyw6lnb2lyZSBIZW5yeSAyMDEwLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHBhcnNlXyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuIGpzX3N0cmluZyB0IC0+ICgnYiB0LCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeV8gOlxuICAgICdhICdiICdjICdkLiAnYSAtPiAoJ2IsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQganNvbiA6IGpzb24gSnMudCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgaW5wdXRfcmV2aXZlciA9XG4gIGxldCByZXZpdmVyIF90aGlzIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgdmFsdWUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIE9iai5yZXByICh0b19ieXRlc3RyaW5nIChVbnNhZmUuY29lcmNlIHZhbHVlKSlcbiAgICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgSnMuYXJyYXlfZW1wdHlcbiAgICAgICAgICAgICYmIChVbnNhZmUuY29lcmNlIHZhbHVlKSMjLmxlbmd0aCA9PSA0XG4gICAgICAgICAgICAmJiBVbnNhZmUuZ2V0IHZhbHVlIDAgPT0gMjU1XG4gICAgdGhlblxuICAgICAgT2JqLnJlcHJcbiAgICAgICAgKEpzb29fcnVudGltZS5JbnQ2NC5jcmVhdGVfaW50NjRfbG9fbWlfaGlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMSlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMilcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMykpXG4gICAgZWxzZSBPYmoucmVwciB2YWx1ZVxuICBpblxuICB3cmFwX21ldGhfY2FsbGJhY2sgcmV2aXZlclxuXG5sZXQgdW5zYWZlX2lucHV0IHMgPSBqc29uIyNwYXJzZV8gcyBpbnB1dF9yZXZpdmVyXG5cbmNsYXNzIHR5cGUgb2JqID0gb2JqZWN0XG4gIG1ldGhvZCBjb25zdHJ1Y3RvciA6ICdhLiAnYSBjb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBtbEludDY0X2NvbnN0ciA9XG4gIGxldCBkdW1teV9pbnQ2NCA9IDFMIGluXG4gIGxldCBkdW1teV9vYmogOiBvYmogdCA9IE9iai5tYWdpYyBkdW1teV9pbnQ2NCBpblxuICBkdW1teV9vYmojIy5jb25zdHJ1Y3RvclxuXG5sZXQgb3V0cHV0X3Jldml2ZXIgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgdmFsdWUpID0gT2JqLnN0cmluZ190YWdcbiAgdGhlbiBPYmoucmVwciAoYnl0ZXN0cmluZyAoT2JqLm1hZ2ljIHZhbHVlIDogc3RyaW5nKSlcbiAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIG1sSW50NjRfY29uc3RyXG4gIHRoZW5cbiAgICBsZXQgdmFsdWUgPSBVbnNhZmUuY29lcmNlIHZhbHVlIGluXG4gICAgT2JqLnJlcHIgKGFycmF5IFt8IDI1NTsgdmFsdWUjIy5sbzsgdmFsdWUjIy5taTsgdmFsdWUjIy5oaSB8XSlcbiAgZWxzZSBPYmoucmVwciB2YWx1ZVxuXG5sZXQgb3V0cHV0IG9iaiA9IGpzb24jI3N0cmluZ2lmeV8gb2JqIChKcy53cmFwX2NhbGxiYWNrIG91dHB1dF9yZXZpdmVyKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gICgqIFRoZSB0eXBlIG9mIENTUyBjb2xvcnMuIEZpcnN0IGJ5IG5hbWUgYW5kIHRoZW4gYnkgY29uc3RydWN0b3IuICopXG4gIHR5cGUgbmFtZSA9XG4gICAgfCBBbGljZWJsdWVcbiAgICB8IEFudGlxdWV3aGl0ZVxuICAgIHwgQXF1YVxuICAgIHwgQXF1YW1hcmluZVxuICAgIHwgQXp1cmVcbiAgICB8IEJlaWdlXG4gICAgfCBCaXNxdWVcbiAgICB8IEJsYWNrXG4gICAgfCBCbGFuY2hlZGFsbW9uZFxuICAgIHwgQmx1ZVxuICAgIHwgQmx1ZXZpb2xldFxuICAgIHwgQnJvd25cbiAgICB8IEJ1cmx5d29vZFxuICAgIHwgQ2FkZXRibHVlXG4gICAgfCBDaGFydHJldXNlXG4gICAgfCBDaG9jb2xhdGVcbiAgICB8IENvcmFsXG4gICAgfCBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgQ29ybnNpbGtcbiAgICB8IENyaW1zb25cbiAgICB8IEN5YW5cbiAgICB8IERhcmtibHVlXG4gICAgfCBEYXJrY3lhblxuICAgIHwgRGFya2dvbGRlbnJvZFxuICAgIHwgRGFya2dyYXlcbiAgICB8IERhcmtncmVlblxuICAgIHwgRGFya2dyZXlcbiAgICB8IERhcmtraGFraVxuICAgIHwgRGFya21hZ2VudGFcbiAgICB8IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBEYXJrb3JhbmdlXG4gICAgfCBEYXJrb3JjaGlkXG4gICAgfCBEYXJrcmVkXG4gICAgfCBEYXJrc2FsbW9uXG4gICAgfCBEYXJrc2VhZ3JlZW5cbiAgICB8IERhcmtzbGF0ZWJsdWVcbiAgICB8IERhcmtzbGF0ZWdyYXlcbiAgICB8IERhcmtzbGF0ZWdyZXlcbiAgICB8IERhcmt0dXJxdW9pc2VcbiAgICB8IERhcmt2aW9sZXRcbiAgICB8IERlZXBwaW5rXG4gICAgfCBEZWVwc2t5Ymx1ZVxuICAgIHwgRGltZ3JheVxuICAgIHwgRGltZ3JleVxuICAgIHwgRG9kZ2VyYmx1ZVxuICAgIHwgRmlyZWJyaWNrXG4gICAgfCBGbG9yYWx3aGl0ZVxuICAgIHwgRm9yZXN0Z3JlZW5cbiAgICB8IEZ1Y2hzaWFcbiAgICB8IEdhaW5zYm9yb1xuICAgIHwgR2hvc3R3aGl0ZVxuICAgIHwgR29sZFxuICAgIHwgR29sZGVucm9kXG4gICAgfCBHcmF5XG4gICAgfCBHcmV5XG4gICAgfCBHcmVlblxuICAgIHwgR3JlZW55ZWxsb3dcbiAgICB8IEhvbmV5ZGV3XG4gICAgfCBIb3RwaW5rXG4gICAgfCBJbmRpYW5yZWRcbiAgICB8IEluZGlnb1xuICAgIHwgSXZvcnlcbiAgICB8IEtoYWtpXG4gICAgfCBMYXZlbmRlclxuICAgIHwgTGF2ZW5kZXJibHVzaFxuICAgIHwgTGF3bmdyZWVuXG4gICAgfCBMZW1vbmNoaWZmb25cbiAgICB8IExpZ2h0Ymx1ZVxuICAgIHwgTGlnaHRjb3JhbFxuICAgIHwgTGlnaHRjeWFuXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgTGlnaHRncmF5XG4gICAgfCBMaWdodGdyZWVuXG4gICAgfCBMaWdodGdyZXlcbiAgICB8IExpZ2h0cGlua1xuICAgIHwgTGlnaHRzYWxtb25cbiAgICB8IExpZ2h0c2VhZ3JlZW5cbiAgICB8IExpZ2h0c2t5Ymx1ZVxuICAgIHwgTGlnaHRzbGF0ZWdyYXlcbiAgICB8IExpZ2h0c2xhdGVncmV5XG4gICAgfCBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgTGlnaHR5ZWxsb3dcbiAgICB8IExpbWVcbiAgICB8IExpbWVncmVlblxuICAgIHwgTGluZW5cbiAgICB8IE1hZ2VudGFcbiAgICB8IE1hcm9vblxuICAgIHwgTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgTWVkaXVtYmx1ZVxuICAgIHwgTWVkaXVtb3JjaGlkXG4gICAgfCBNZWRpdW1wdXJwbGVcbiAgICB8IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBNZWRpdW10dXJxdW9pc2VcbiAgICB8IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgTWlkbmlnaHRibHVlXG4gICAgfCBNaW50Y3JlYW1cbiAgICB8IE1pc3R5cm9zZVxuICAgIHwgTW9jY2FzaW5cbiAgICB8IE5hdmFqb3doaXRlXG4gICAgfCBOYXZ5XG4gICAgfCBPbGRsYWNlXG4gICAgfCBPbGl2ZVxuICAgIHwgT2xpdmVkcmFiXG4gICAgfCBPcmFuZ2VcbiAgICB8IE9yYW5nZXJlZFxuICAgIHwgT3JjaGlkXG4gICAgfCBQYWxlZ29sZGVucm9kXG4gICAgfCBQYWxlZ3JlZW5cbiAgICB8IFBhbGV0dXJxdW9pc2VcbiAgICB8IFBhbGV2aW9sZXRyZWRcbiAgICB8IFBhcGF5YXdoaXBcbiAgICB8IFBlYWNocHVmZlxuICAgIHwgUGVydVxuICAgIHwgUGlua1xuICAgIHwgUGx1bVxuICAgIHwgUG93ZGVyYmx1ZVxuICAgIHwgUHVycGxlXG4gICAgfCBSZWRcbiAgICB8IFJvc3licm93blxuICAgIHwgUm95YWxibHVlXG4gICAgfCBTYWRkbGVicm93blxuICAgIHwgU2FsbW9uXG4gICAgfCBTYW5keWJyb3duXG4gICAgfCBTZWFncmVlblxuICAgIHwgU2Vhc2hlbGxcbiAgICB8IFNpZW5uYVxuICAgIHwgU2lsdmVyXG4gICAgfCBTa3libHVlXG4gICAgfCBTbGF0ZWJsdWVcbiAgICB8IFNsYXRlZ3JheVxuICAgIHwgU2xhdGVncmV5XG4gICAgfCBTbm93XG4gICAgfCBTcHJpbmdncmVlblxuICAgIHwgU3RlZWxibHVlXG4gICAgfCBUYW5cbiAgICB8IFRlYWxcbiAgICB8IFRoaXN0bGVcbiAgICB8IFRvbWF0b1xuICAgIHwgVHVycXVvaXNlXG4gICAgfCBWaW9sZXRcbiAgICB8IFdoZWF0XG4gICAgfCBXaGl0ZVxuICAgIHwgV2hpdGVzbW9rZVxuICAgIHwgWWVsbG93XG4gICAgfCBZZWxsb3dncmVlblxuXG4gIGxldCBzdHJpbmdfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gXCJhbGljZWJsdWVcIlxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IFwiYW50aXF1ZXdoaXRlXCJcbiAgICB8IEFxdWEgLT4gXCJhcXVhXCJcbiAgICB8IEFxdWFtYXJpbmUgLT4gXCJhcXVhbWFyaW5lXCJcbiAgICB8IEF6dXJlIC0+IFwiYXp1cmVcIlxuICAgIHwgQmVpZ2UgLT4gXCJiZWlnZVwiXG4gICAgfCBCaXNxdWUgLT4gXCJiaXNxdWVcIlxuICAgIHwgQmxhY2sgLT4gXCJibGFja1wiXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiBcImJsYW5jaGVkYWxtb25kXCJcbiAgICB8IEJsdWUgLT4gXCJibHVlXCJcbiAgICB8IEJsdWV2aW9sZXQgLT4gXCJibHVldmlvbGV0XCJcbiAgICB8IEJyb3duIC0+IFwiYnJvd25cIlxuICAgIHwgQnVybHl3b29kIC0+IFwiYnVybHl3b29kXCJcbiAgICB8IENhZGV0Ymx1ZSAtPiBcImNhZGV0Ymx1ZVwiXG4gICAgfCBDaGFydHJldXNlIC0+IFwiY2hhcnRyZXVzZVwiXG4gICAgfCBDaG9jb2xhdGUgLT4gXCJjaG9jb2xhdGVcIlxuICAgIHwgQ29yYWwgLT4gXCJjb3JhbFwiXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiBcImNvcm5mbG93ZXJibHVlXCJcbiAgICB8IENvcm5zaWxrIC0+IFwiY29ybnNpbGtcIlxuICAgIHwgQ3JpbXNvbiAtPiBcImNyaW1zb25cIlxuICAgIHwgQ3lhbiAtPiBcImN5YW5cIlxuICAgIHwgRGFya2JsdWUgLT4gXCJkYXJrYmx1ZVwiXG4gICAgfCBEYXJrY3lhbiAtPiBcImRhcmtjeWFuXCJcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gXCJkYXJrZ29sZGVucm9kXCJcbiAgICB8IERhcmtncmF5IC0+IFwiZGFya2dyYXlcIlxuICAgIHwgRGFya2dyZWVuIC0+IFwiZGFya2dyZWVuXCJcbiAgICB8IERhcmtncmV5IC0+IFwiZGFya2dyZXlcIlxuICAgIHwgRGFya2toYWtpIC0+IFwiZGFya2toYWtpXCJcbiAgICB8IERhcmttYWdlbnRhIC0+IFwiZGFya21hZ2VudGFcIlxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gXCJkYXJrb2xpdmVncmVlblwiXG4gICAgfCBEYXJrb3JhbmdlIC0+IFwiZGFya29yYW5nZVwiXG4gICAgfCBEYXJrb3JjaGlkIC0+IFwiZGFya29yY2hpZFwiXG4gICAgfCBEYXJrcmVkIC0+IFwiZGFya3JlZFwiXG4gICAgfCBEYXJrc2FsbW9uIC0+IFwiZGFya3NhbG1vblwiXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gXCJkYXJrc2VhZ3JlZW5cIlxuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiBcImRhcmtzbGF0ZWJsdWVcIlxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiBcImRhcmtzbGF0ZWdyYXlcIlxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiBcImRhcmtzbGF0ZWdyZXlcIlxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiBcImRhcmt0dXJxdW9pc2VcIlxuICAgIHwgRGFya3Zpb2xldCAtPiBcImRhcmt2aW9sZXRcIlxuICAgIHwgRGVlcHBpbmsgLT4gXCJkZWVwcGlua1wiXG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiBcImRlZXBza3libHVlXCJcbiAgICB8IERpbWdyYXkgLT4gXCJkaW1ncmF5XCJcbiAgICB8IERpbWdyZXkgLT4gXCJkaW1ncmV5XCJcbiAgICB8IERvZGdlcmJsdWUgLT4gXCJkb2RnZXJibHVlXCJcbiAgICB8IEZpcmVicmljayAtPiBcImZpcmVicmlja1wiXG4gICAgfCBGbG9yYWx3aGl0ZSAtPiBcImZsb3JhbHdoaXRlXCJcbiAgICB8IEZvcmVzdGdyZWVuIC0+IFwiZm9yZXN0Z3JlZW5cIlxuICAgIHwgRnVjaHNpYSAtPiBcImZ1Y2hzaWFcIlxuICAgIHwgR2FpbnNib3JvIC0+IFwiZ2FpbnNib3JvXCJcbiAgICB8IEdob3N0d2hpdGUgLT4gXCJnaG9zdHdoaXRlXCJcbiAgICB8IEdvbGQgLT4gXCJnb2xkXCJcbiAgICB8IEdvbGRlbnJvZCAtPiBcImdvbGRlbnJvZFwiXG4gICAgfCBHcmF5IC0+IFwiZ3JheVwiXG4gICAgfCBHcmVlbiAtPiBcImdyZWVuXCJcbiAgICB8IEdyZWVueWVsbG93IC0+IFwiZ3JlZW55ZWxsb3dcIlxuICAgIHwgR3JleSAtPiBcImdyZXlcIlxuICAgIHwgSG9uZXlkZXcgLT4gXCJob25leWRld1wiXG4gICAgfCBIb3RwaW5rIC0+IFwiaG90cGlua1wiXG4gICAgfCBJbmRpYW5yZWQgLT4gXCJpbmRpYW5yZWRcIlxuICAgIHwgSW5kaWdvIC0+IFwiaW5kaWdvXCJcbiAgICB8IEl2b3J5IC0+IFwiaXZvcnlcIlxuICAgIHwgS2hha2kgLT4gXCJraGFraVwiXG4gICAgfCBMYXZlbmRlciAtPiBcImxhdmVuZGVyXCJcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gXCJsYXZlbmRlcmJsdXNoXCJcbiAgICB8IExhd25ncmVlbiAtPiBcImxhd25ncmVlblwiXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gXCJsZW1vbmNoaWZmb25cIlxuICAgIHwgTGlnaHRibHVlIC0+IFwibGlnaHRibHVlXCJcbiAgICB8IExpZ2h0Y29yYWwgLT4gXCJsaWdodGNvcmFsXCJcbiAgICB8IExpZ2h0Y3lhbiAtPiBcImxpZ2h0Y3lhblwiXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICB8IExpZ2h0Z3JheSAtPiBcImxpZ2h0Z3JheVwiXG4gICAgfCBMaWdodGdyZWVuIC0+IFwibGlnaHRncmVlblwiXG4gICAgfCBMaWdodGdyZXkgLT4gXCJsaWdodGdyZXlcIlxuICAgIHwgTGlnaHRwaW5rIC0+IFwibGlnaHRwaW5rXCJcbiAgICB8IExpZ2h0c2FsbW9uIC0+IFwibGlnaHRzYWxtb25cIlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgIHwgTGlnaHRza3libHVlIC0+IFwibGlnaHRza3libHVlXCJcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICB8IExpZ2h0eWVsbG93IC0+IFwibGlnaHR5ZWxsb3dcIlxuICAgIHwgTGltZSAtPiBcImxpbWVcIlxuICAgIHwgTGltZWdyZWVuIC0+IFwibGltZWdyZWVuXCJcbiAgICB8IExpbmVuIC0+IFwibGluZW5cIlxuICAgIHwgTWFnZW50YSAtPiBcIm1hZ2VudGFcIlxuICAgIHwgTWFyb29uIC0+IFwibWFyb29uXCJcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICB8IE1lZGl1bWJsdWUgLT4gXCJtZWRpdW1ibHVlXCJcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiBcIm1lZGl1bW9yY2hpZFwiXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gXCJtZWRpdW1wdXJwbGVcIlxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gXCJtZWRpdW1zZWFncmVlblwiXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgfCBNaW50Y3JlYW0gLT4gXCJtaW50Y3JlYW1cIlxuICAgIHwgTWlzdHlyb3NlIC0+IFwibWlzdHlyb3NlXCJcbiAgICB8IE1vY2Nhc2luIC0+IFwibW9jY2FzaW5cIlxuICAgIHwgTmF2YWpvd2hpdGUgLT4gXCJuYXZham93aGl0ZVwiXG4gICAgfCBOYXZ5IC0+IFwibmF2eVwiXG4gICAgfCBPbGRsYWNlIC0+IFwib2xkbGFjZVwiXG4gICAgfCBPbGl2ZSAtPiBcIm9saXZlXCJcbiAgICB8IE9saXZlZHJhYiAtPiBcIm9saXZlZHJhYlwiXG4gICAgfCBPcmFuZ2UgLT4gXCJvcmFuZ2VcIlxuICAgIHwgT3JhbmdlcmVkIC0+IFwib3JhbmdlcmVkXCJcbiAgICB8IE9yY2hpZCAtPiBcIm9yY2hpZFwiXG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgfCBQYWxlZ3JlZW4gLT4gXCJwYWxlZ3JlZW5cIlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiBcInBhbGV0dXJxdW9pc2VcIlxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiBcInBhbGV2aW9sZXRyZWRcIlxuICAgIHwgUGFwYXlhd2hpcCAtPiBcInBhcGF5YXdoaXBcIlxuICAgIHwgUGVhY2hwdWZmIC0+IFwicGVhY2hwdWZmXCJcbiAgICB8IFBlcnUgLT4gXCJwZXJ1XCJcbiAgICB8IFBpbmsgLT4gXCJwaW5rXCJcbiAgICB8IFBsdW0gLT4gXCJwbHVtXCJcbiAgICB8IFBvd2RlcmJsdWUgLT4gXCJwb3dkZXJibHVlXCJcbiAgICB8IFB1cnBsZSAtPiBcInB1cnBsZVwiXG4gICAgfCBSZWQgLT4gXCJyZWRcIlxuICAgIHwgUm9zeWJyb3duIC0+IFwicm9zeWJyb3duXCJcbiAgICB8IFJveWFsYmx1ZSAtPiBcInJveWFsYmx1ZVwiXG4gICAgfCBTYWRkbGVicm93biAtPiBcInNhZGRsZWJyb3duXCJcbiAgICB8IFNhbG1vbiAtPiBcInNhbG1vblwiXG4gICAgfCBTYW5keWJyb3duIC0+IFwic2FuZHlicm93blwiXG4gICAgfCBTZWFncmVlbiAtPiBcInNlYWdyZWVuXCJcbiAgICB8IFNlYXNoZWxsIC0+IFwic2Vhc2hlbGxcIlxuICAgIHwgU2llbm5hIC0+IFwic2llbm5hXCJcbiAgICB8IFNpbHZlciAtPiBcInNpbHZlclwiXG4gICAgfCBTa3libHVlIC0+IFwic2t5Ymx1ZVwiXG4gICAgfCBTbGF0ZWJsdWUgLT4gXCJzbGF0ZWJsdWVcIlxuICAgIHwgU2xhdGVncmF5IC0+IFwic2xhdGVncmF5XCJcbiAgICB8IFNsYXRlZ3JleSAtPiBcInNsYXRlZ3JleVwiXG4gICAgfCBTbm93IC0+IFwic25vd1wiXG4gICAgfCBTcHJpbmdncmVlbiAtPiBcInNwcmluZ2dyZWVuXCJcbiAgICB8IFN0ZWVsYmx1ZSAtPiBcInN0ZWVsYmx1ZVwiXG4gICAgfCBUYW4gLT4gXCJ0YW5cIlxuICAgIHwgVGVhbCAtPiBcInRlYWxcIlxuICAgIHwgVGhpc3RsZSAtPiBcInRoaXN0bGVcIlxuICAgIHwgVG9tYXRvIC0+IFwidG9tYXRvXCJcbiAgICB8IFR1cnF1b2lzZSAtPiBcInR1cnF1b2lzZVwiXG4gICAgfCBWaW9sZXQgLT4gXCJ2aW9sZXRcIlxuICAgIHwgV2hlYXQgLT4gXCJ3aGVhdFwiXG4gICAgfCBXaGl0ZSAtPiBcIndoaXRlXCJcbiAgICB8IFdoaXRlc21va2UgLT4gXCJ3aGl0ZXNtb2tlXCJcbiAgICB8IFllbGxvdyAtPiBcInllbGxvd1wiXG4gICAgfCBZZWxsb3dncmVlbiAtPiBcInllbGxvd2dyZWVuXCJcblxuICBsZXQgbmFtZV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJhbGljZWJsdWVcIiAtPiBBbGljZWJsdWVcbiAgICB8IFwiYW50aXF1ZXdoaXRlXCIgLT4gQW50aXF1ZXdoaXRlXG4gICAgfCBcImFxdWFcIiAtPiBBcXVhXG4gICAgfCBcImFxdWFtYXJpbmVcIiAtPiBBcXVhbWFyaW5lXG4gICAgfCBcImF6dXJlXCIgLT4gQXp1cmVcbiAgICB8IFwiYmVpZ2VcIiAtPiBCZWlnZVxuICAgIHwgXCJiaXNxdWVcIiAtPiBCaXNxdWVcbiAgICB8IFwiYmxhY2tcIiAtPiBCbGFja1xuICAgIHwgXCJibGFuY2hlZGFsbW9uZFwiIC0+IEJsYW5jaGVkYWxtb25kXG4gICAgfCBcImJsdWVcIiAtPiBCbHVlXG4gICAgfCBcImJsdWV2aW9sZXRcIiAtPiBCbHVldmlvbGV0XG4gICAgfCBcImJyb3duXCIgLT4gQnJvd25cbiAgICB8IFwiYnVybHl3b29kXCIgLT4gQnVybHl3b29kXG4gICAgfCBcImNhZGV0Ymx1ZVwiIC0+IENhZGV0Ymx1ZVxuICAgIHwgXCJjaGFydHJldXNlXCIgLT4gQ2hhcnRyZXVzZVxuICAgIHwgXCJjaG9jb2xhdGVcIiAtPiBDaG9jb2xhdGVcbiAgICB8IFwiY29yYWxcIiAtPiBDb3JhbFxuICAgIHwgXCJjb3JuZmxvd2VyYmx1ZVwiIC0+IENvcm5mbG93ZXJibHVlXG4gICAgfCBcImNvcm5zaWxrXCIgLT4gQ29ybnNpbGtcbiAgICB8IFwiY3JpbXNvblwiIC0+IENyaW1zb25cbiAgICB8IFwiY3lhblwiIC0+IEN5YW5cbiAgICB8IFwiZGFya2JsdWVcIiAtPiBEYXJrYmx1ZVxuICAgIHwgXCJkYXJrY3lhblwiIC0+IERhcmtjeWFuXG4gICAgfCBcImRhcmtnb2xkZW5yb2RcIiAtPiBEYXJrZ29sZGVucm9kXG4gICAgfCBcImRhcmtncmF5XCIgLT4gRGFya2dyYXlcbiAgICB8IFwiZGFya2dyZWVuXCIgLT4gRGFya2dyZWVuXG4gICAgfCBcImRhcmtncmV5XCIgLT4gRGFya2dyZXlcbiAgICB8IFwiZGFya2toYWtpXCIgLT4gRGFya2toYWtpXG4gICAgfCBcImRhcmttYWdlbnRhXCIgLT4gRGFya21hZ2VudGFcbiAgICB8IFwiZGFya29saXZlZ3JlZW5cIiAtPiBEYXJrb2xpdmVncmVlblxuICAgIHwgXCJkYXJrb3JhbmdlXCIgLT4gRGFya29yYW5nZVxuICAgIHwgXCJkYXJrb3JjaGlkXCIgLT4gRGFya29yY2hpZFxuICAgIHwgXCJkYXJrcmVkXCIgLT4gRGFya3JlZFxuICAgIHwgXCJkYXJrc2FsbW9uXCIgLT4gRGFya3NhbG1vblxuICAgIHwgXCJkYXJrc2VhZ3JlZW5cIiAtPiBEYXJrc2VhZ3JlZW5cbiAgICB8IFwiZGFya3NsYXRlYmx1ZVwiIC0+IERhcmtzbGF0ZWJsdWVcbiAgICB8IFwiZGFya3NsYXRlZ3JheVwiIC0+IERhcmtzbGF0ZWdyYXlcbiAgICB8IFwiZGFya3NsYXRlZ3JleVwiIC0+IERhcmtzbGF0ZWdyZXlcbiAgICB8IFwiZGFya3R1cnF1b2lzZVwiIC0+IERhcmt0dXJxdW9pc2VcbiAgICB8IFwiZGFya3Zpb2xldFwiIC0+IERhcmt2aW9sZXRcbiAgICB8IFwiZGVlcHBpbmtcIiAtPiBEZWVwcGlua1xuICAgIHwgXCJkZWVwc2t5Ymx1ZVwiIC0+IERlZXBza3libHVlXG4gICAgfCBcImRpbWdyYXlcIiAtPiBEaW1ncmF5XG4gICAgfCBcImRpbWdyZXlcIiAtPiBEaW1ncmV5XG4gICAgfCBcImRvZGdlcmJsdWVcIiAtPiBEb2RnZXJibHVlXG4gICAgfCBcImZpcmVicmlja1wiIC0+IEZpcmVicmlja1xuICAgIHwgXCJmbG9yYWx3aGl0ZVwiIC0+IEZsb3JhbHdoaXRlXG4gICAgfCBcImZvcmVzdGdyZWVuXCIgLT4gRm9yZXN0Z3JlZW5cbiAgICB8IFwiZnVjaHNpYVwiIC0+IEZ1Y2hzaWFcbiAgICB8IFwiZ2FpbnNib3JvXCIgLT4gR2FpbnNib3JvXG4gICAgfCBcImdob3N0d2hpdGVcIiAtPiBHaG9zdHdoaXRlXG4gICAgfCBcImdvbGRcIiAtPiBHb2xkXG4gICAgfCBcImdvbGRlbnJvZFwiIC0+IEdvbGRlbnJvZFxuICAgIHwgXCJncmF5XCIgLT4gR3JheVxuICAgIHwgXCJncmVlblwiIC0+IEdyZWVuXG4gICAgfCBcImdyZWVueWVsbG93XCIgLT4gR3JlZW55ZWxsb3dcbiAgICB8IFwiZ3JleVwiIC0+IEdyZXlcbiAgICB8IFwiaG9uZXlkZXdcIiAtPiBIb25leWRld1xuICAgIHwgXCJob3RwaW5rXCIgLT4gSG90cGlua1xuICAgIHwgXCJpbmRpYW5yZWRcIiAtPiBJbmRpYW5yZWRcbiAgICB8IFwiaW5kaWdvXCIgLT4gSW5kaWdvXG4gICAgfCBcIml2b3J5XCIgLT4gSXZvcnlcbiAgICB8IFwia2hha2lcIiAtPiBLaGFraVxuICAgIHwgXCJsYXZlbmRlclwiIC0+IExhdmVuZGVyXG4gICAgfCBcImxhdmVuZGVyYmx1c2hcIiAtPiBMYXZlbmRlcmJsdXNoXG4gICAgfCBcImxhd25ncmVlblwiIC0+IExhd25ncmVlblxuICAgIHwgXCJsZW1vbmNoaWZmb25cIiAtPiBMZW1vbmNoaWZmb25cbiAgICB8IFwibGlnaHRibHVlXCIgLT4gTGlnaHRibHVlXG4gICAgfCBcImxpZ2h0Y29yYWxcIiAtPiBMaWdodGNvcmFsXG4gICAgfCBcImxpZ2h0Y3lhblwiIC0+IExpZ2h0Y3lhblxuICAgIHwgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiIC0+IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBcImxpZ2h0Z3JheVwiIC0+IExpZ2h0Z3JheVxuICAgIHwgXCJsaWdodGdyZWVuXCIgLT4gTGlnaHRncmVlblxuICAgIHwgXCJsaWdodGdyZXlcIiAtPiBMaWdodGdyZXlcbiAgICB8IFwibGlnaHRwaW5rXCIgLT4gTGlnaHRwaW5rXG4gICAgfCBcImxpZ2h0c2FsbW9uXCIgLT4gTGlnaHRzYWxtb25cbiAgICB8IFwibGlnaHRzZWFncmVlblwiIC0+IExpZ2h0c2VhZ3JlZW5cbiAgICB8IFwibGlnaHRza3libHVlXCIgLT4gTGlnaHRza3libHVlXG4gICAgfCBcImxpZ2h0c2xhdGVncmF5XCIgLT4gTGlnaHRzbGF0ZWdyYXlcbiAgICB8IFwibGlnaHRzbGF0ZWdyZXlcIiAtPiBMaWdodHNsYXRlZ3JleVxuICAgIHwgXCJsaWdodHN0ZWVsYmx1ZVwiIC0+IExpZ2h0c3RlZWxibHVlXG4gICAgfCBcImxpZ2h0eWVsbG93XCIgLT4gTGlnaHR5ZWxsb3dcbiAgICB8IFwibGltZVwiIC0+IExpbWVcbiAgICB8IFwibGltZWdyZWVuXCIgLT4gTGltZWdyZWVuXG4gICAgfCBcImxpbmVuXCIgLT4gTGluZW5cbiAgICB8IFwibWFnZW50YVwiIC0+IE1hZ2VudGFcbiAgICB8IFwibWFyb29uXCIgLT4gTWFyb29uXG4gICAgfCBcIm1lZGl1bWFxdWFtYXJpbmVcIiAtPiBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBcIm1lZGl1bWJsdWVcIiAtPiBNZWRpdW1ibHVlXG4gICAgfCBcIm1lZGl1bW9yY2hpZFwiIC0+IE1lZGl1bW9yY2hpZFxuICAgIHwgXCJtZWRpdW1wdXJwbGVcIiAtPiBNZWRpdW1wdXJwbGVcbiAgICB8IFwibWVkaXVtc2VhZ3JlZW5cIiAtPiBNZWRpdW1zZWFncmVlblxuICAgIHwgXCJtZWRpdW1zbGF0ZWJsdWVcIiAtPiBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IFwibWVkaXVtc3ByaW5nZ3JlZW5cIiAtPiBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgXCJtZWRpdW10dXJxdW9pc2VcIiAtPiBNZWRpdW10dXJxdW9pc2VcbiAgICB8IFwibWVkaXVtdmlvbGV0cmVkXCIgLT4gTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBcIm1pZG5pZ2h0Ymx1ZVwiIC0+IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgXCJtaW50Y3JlYW1cIiAtPiBNaW50Y3JlYW1cbiAgICB8IFwibWlzdHlyb3NlXCIgLT4gTWlzdHlyb3NlXG4gICAgfCBcIm1vY2Nhc2luXCIgLT4gTW9jY2FzaW5cbiAgICB8IFwibmF2YWpvd2hpdGVcIiAtPiBOYXZham93aGl0ZVxuICAgIHwgXCJuYXZ5XCIgLT4gTmF2eVxuICAgIHwgXCJvbGRsYWNlXCIgLT4gT2xkbGFjZVxuICAgIHwgXCJvbGl2ZVwiIC0+IE9saXZlXG4gICAgfCBcIm9saXZlZHJhYlwiIC0+IE9saXZlZHJhYlxuICAgIHwgXCJvcmFuZ2VcIiAtPiBPcmFuZ2VcbiAgICB8IFwib3JhbmdlcmVkXCIgLT4gT3JhbmdlcmVkXG4gICAgfCBcIm9yY2hpZFwiIC0+IE9yY2hpZFxuICAgIHwgXCJwYWxlZ29sZGVucm9kXCIgLT4gUGFsZWdvbGRlbnJvZFxuICAgIHwgXCJwYWxlZ3JlZW5cIiAtPiBQYWxlZ3JlZW5cbiAgICB8IFwicGFsZXR1cnF1b2lzZVwiIC0+IFBhbGV0dXJxdW9pc2VcbiAgICB8IFwicGFsZXZpb2xldHJlZFwiIC0+IFBhbGV2aW9sZXRyZWRcbiAgICB8IFwicGFwYXlhd2hpcFwiIC0+IFBhcGF5YXdoaXBcbiAgICB8IFwicGVhY2hwdWZmXCIgLT4gUGVhY2hwdWZmXG4gICAgfCBcInBlcnVcIiAtPiBQZXJ1XG4gICAgfCBcInBpbmtcIiAtPiBQaW5rXG4gICAgfCBcInBsdW1cIiAtPiBQbHVtXG4gICAgfCBcInBvd2RlcmJsdWVcIiAtPiBQb3dkZXJibHVlXG4gICAgfCBcInB1cnBsZVwiIC0+IFB1cnBsZVxuICAgIHwgXCJyZWRcIiAtPiBSZWRcbiAgICB8IFwicm9zeWJyb3duXCIgLT4gUm9zeWJyb3duXG4gICAgfCBcInJveWFsYmx1ZVwiIC0+IFJveWFsYmx1ZVxuICAgIHwgXCJzYWRkbGVicm93blwiIC0+IFNhZGRsZWJyb3duXG4gICAgfCBcInNhbG1vblwiIC0+IFNhbG1vblxuICAgIHwgXCJzYW5keWJyb3duXCIgLT4gU2FuZHlicm93blxuICAgIHwgXCJzZWFncmVlblwiIC0+IFNlYWdyZWVuXG4gICAgfCBcInNlYXNoZWxsXCIgLT4gU2Vhc2hlbGxcbiAgICB8IFwic2llbm5hXCIgLT4gU2llbm5hXG4gICAgfCBcInNpbHZlclwiIC0+IFNpbHZlclxuICAgIHwgXCJza3libHVlXCIgLT4gU2t5Ymx1ZVxuICAgIHwgXCJzbGF0ZWJsdWVcIiAtPiBTbGF0ZWJsdWVcbiAgICB8IFwic2xhdGVncmF5XCIgLT4gU2xhdGVncmF5XG4gICAgfCBcInNsYXRlZ3JleVwiIC0+IFNsYXRlZ3JleVxuICAgIHwgXCJzbm93XCIgLT4gU25vd1xuICAgIHwgXCJzcHJpbmdncmVlblwiIC0+IFNwcmluZ2dyZWVuXG4gICAgfCBcInN0ZWVsYmx1ZVwiIC0+IFN0ZWVsYmx1ZVxuICAgIHwgXCJ0YW5cIiAtPiBUYW5cbiAgICB8IFwidGVhbFwiIC0+IFRlYWxcbiAgICB8IFwidGhpc3RsZVwiIC0+IFRoaXN0bGVcbiAgICB8IFwidG9tYXRvXCIgLT4gVG9tYXRvXG4gICAgfCBcInR1cnF1b2lzZVwiIC0+IFR1cnF1b2lzZVxuICAgIHwgXCJ2aW9sZXRcIiAtPiBWaW9sZXRcbiAgICB8IFwid2hlYXRcIiAtPiBXaGVhdFxuICAgIHwgXCJ3aGl0ZVwiIC0+IFdoaXRlXG4gICAgfCBcIndoaXRlc21va2VcIiAtPiBXaGl0ZXNtb2tlXG4gICAgfCBcInllbGxvd1wiIC0+IFllbGxvd1xuICAgIHwgXCJ5ZWxsb3dncmVlblwiIC0+IFllbGxvd2dyZWVuXG4gICAgfCBzIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3IgbmFtZVwiKSlcblxuICBsZXQgcmdiX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IDI0MCwgMjQ4LCAyNTVcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiAyNTAsIDIzNSwgMjE1XG4gICAgfCBBcXVhIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBBcXVhbWFyaW5lIC0+IDEyNywgMjU1LCAyMTJcbiAgICB8IEF6dXJlIC0+IDI0MCwgMjU1LCAyNTVcbiAgICB8IEJlaWdlIC0+IDI0NSwgMjQ1LCAyMjBcbiAgICB8IEJpc3F1ZSAtPiAyNTUsIDIyOCwgMTk2XG4gICAgfCBCbGFjayAtPiAwLCAwLCAwXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiAyNTUsIDIzNSwgMjA1XG4gICAgfCBCbHVlIC0+IDAsIDAsIDI1NVxuICAgIHwgQmx1ZXZpb2xldCAtPiAxMzgsIDQzLCAyMjZcbiAgICB8IEJyb3duIC0+IDE2NSwgNDIsIDQyXG4gICAgfCBCdXJseXdvb2QgLT4gMjIyLCAxODQsIDEzNVxuICAgIHwgQ2FkZXRibHVlIC0+IDk1LCAxNTgsIDE2MFxuICAgIHwgQ2hhcnRyZXVzZSAtPiAxMjcsIDI1NSwgMFxuICAgIHwgQ2hvY29sYXRlIC0+IDIxMCwgMTA1LCAzMFxuICAgIHwgQ29yYWwgLT4gMjU1LCAxMjcsIDgwXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiAxMDAsIDE0OSwgMjM3XG4gICAgfCBDb3Juc2lsayAtPiAyNTUsIDI0OCwgMjIwXG4gICAgfCBDcmltc29uIC0+IDIyMCwgMjAsIDYwXG4gICAgfCBDeWFuIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBEYXJrYmx1ZSAtPiAwLCAwLCAxMzlcbiAgICB8IERhcmtjeWFuIC0+IDAsIDEzOSwgMTM5XG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IDE4NCwgMTM0LCAxMVxuICAgIHwgRGFya2dyYXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2dyZWVuIC0+IDAsIDEwMCwgMFxuICAgIHwgRGFya2dyZXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2toYWtpIC0+IDE4OSwgMTgzLCAxMDdcbiAgICB8IERhcmttYWdlbnRhIC0+IDEzOSwgMCwgMTM5XG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiA4NSwgMTA3LCA0N1xuICAgIHwgRGFya29yYW5nZSAtPiAyNTUsIDE0MCwgMFxuICAgIHwgRGFya29yY2hpZCAtPiAxNTMsIDUwLCAyMDRcbiAgICB8IERhcmtyZWQgLT4gMTM5LCAwLCAwXG4gICAgfCBEYXJrc2FsbW9uIC0+IDIzMywgMTUwLCAxMjJcbiAgICB8IERhcmtzZWFncmVlbiAtPiAxNDMsIDE4OCwgMTQzXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IDcyLCA2MSwgMTM5XG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiAwLCAyMDYsIDIwOVxuICAgIHwgRGFya3Zpb2xldCAtPiAxNDgsIDAsIDIxMVxuICAgIHwgRGVlcHBpbmsgLT4gMjU1LCAyMCwgMTQ3XG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiAwLCAxOTEsIDI1NVxuICAgIHwgRGltZ3JheSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEaW1ncmV5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERvZGdlcmJsdWUgLT4gMzAsIDE0NCwgMjU1XG4gICAgfCBGaXJlYnJpY2sgLT4gMTc4LCAzNCwgMzRcbiAgICB8IEZsb3JhbHdoaXRlIC0+IDI1NSwgMjUwLCAyNDBcbiAgICB8IEZvcmVzdGdyZWVuIC0+IDM0LCAxMzksIDM0XG4gICAgfCBGdWNoc2lhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBHYWluc2Jvcm8gLT4gMjIwLCAyMjAsIDIyMFxuICAgIHwgR2hvc3R3aGl0ZSAtPiAyNDgsIDI0OCwgMjU1XG4gICAgfCBHb2xkIC0+IDI1NSwgMjE1LCAwXG4gICAgfCBHb2xkZW5yb2QgLT4gMjE4LCAxNjUsIDMyXG4gICAgfCBHcmF5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEdyZWVuIC0+IDAsIDEyOCwgMFxuICAgIHwgR3JlZW55ZWxsb3cgLT4gMTczLCAyNTUsIDQ3XG4gICAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEhvbmV5ZGV3IC0+IDI0MCwgMjU1LCAyNDBcbiAgICB8IEhvdHBpbmsgLT4gMjU1LCAxMDUsIDE4MFxuICAgIHwgSW5kaWFucmVkIC0+IDIwNSwgOTIsIDkyXG4gICAgfCBJbmRpZ28gLT4gNzUsIDAsIDEzMFxuICAgIHwgSXZvcnkgLT4gMjU1LCAyNTUsIDI0MFxuICAgIHwgS2hha2kgLT4gMjQwLCAyMzAsIDE0MFxuICAgIHwgTGF2ZW5kZXIgLT4gMjMwLCAyMzAsIDI1MFxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiAyNTUsIDI0MCwgMjQ1XG4gICAgfCBMYXduZ3JlZW4gLT4gMTI0LCAyNTIsIDBcbiAgICB8IExlbW9uY2hpZmZvbiAtPiAyNTUsIDI1MCwgMjA1XG4gICAgfCBMaWdodGJsdWUgLT4gMTczLCAyMTYsIDIzMFxuICAgIHwgTGlnaHRjb3JhbCAtPiAyNDAsIDEyOCwgMTI4XG4gICAgfCBMaWdodGN5YW4gLT4gMjI0LCAyNTUsIDI1NVxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gMjUwLCAyNTAsIDIxMFxuICAgIHwgTGlnaHRncmF5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0Z3JlZW4gLT4gMTQ0LCAyMzgsIDE0NFxuICAgIHwgTGlnaHRncmV5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0cGluayAtPiAyNTUsIDE4MiwgMTkzXG4gICAgfCBMaWdodHNhbG1vbiAtPiAyNTUsIDE2MCwgMTIyXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IDMyLCAxNzgsIDE3MFxuICAgIHwgTGlnaHRza3libHVlIC0+IDEzNSwgMjA2LCAyNTBcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IDE3NiwgMTk2LCAyMjJcbiAgICB8IExpZ2h0eWVsbG93IC0+IDI1NSwgMjU1LCAyMjRcbiAgICB8IExpbWUgLT4gMCwgMjU1LCAwXG4gICAgfCBMaW1lZ3JlZW4gLT4gNTAsIDIwNSwgNTBcbiAgICB8IExpbmVuIC0+IDI1MCwgMjQwLCAyMzBcbiAgICB8IE1hZ2VudGEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IE1hcm9vbiAtPiAxMjgsIDAsIDBcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gMTAyLCAyMDUsIDE3MFxuICAgIHwgTWVkaXVtYmx1ZSAtPiAwLCAwLCAyMDVcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiAxODYsIDg1LCAyMTFcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiAxNDcsIDExMiwgMjE5XG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiA2MCwgMTc5LCAxMTNcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiAxMjMsIDEwNCwgMjM4XG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiAwLCAyNTAsIDE1NFxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IDcyLCAyMDksIDIwNFxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IDE5OSwgMjEsIDEzM1xuICAgIHwgTWlkbmlnaHRibHVlIC0+IDI1LCAyNSwgMTEyXG4gICAgfCBNaW50Y3JlYW0gLT4gMjQ1LCAyNTUsIDI1MFxuICAgIHwgTWlzdHlyb3NlIC0+IDI1NSwgMjI4LCAyMjVcbiAgICB8IE1vY2Nhc2luIC0+IDI1NSwgMjI4LCAxODFcbiAgICB8IE5hdmFqb3doaXRlIC0+IDI1NSwgMjIyLCAxNzNcbiAgICB8IE5hdnkgLT4gMCwgMCwgMTI4XG4gICAgfCBPbGRsYWNlIC0+IDI1MywgMjQ1LCAyMzBcbiAgICB8IE9saXZlIC0+IDEyOCwgMTI4LCAwXG4gICAgfCBPbGl2ZWRyYWIgLT4gMTA3LCAxNDIsIDM1XG4gICAgfCBPcmFuZ2UgLT4gMjU1LCAxNjUsIDBcbiAgICB8IE9yYW5nZXJlZCAtPiAyNTUsIDY5LCAwXG4gICAgfCBPcmNoaWQgLT4gMjE4LCAxMTIsIDIxNFxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiAyMzgsIDIzMiwgMTcwXG4gICAgfCBQYWxlZ3JlZW4gLT4gMTUyLCAyNTEsIDE1MlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiAxNzUsIDIzOCwgMjM4XG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IDIxOSwgMTEyLCAxNDdcbiAgICB8IFBhcGF5YXdoaXAgLT4gMjU1LCAyMzksIDIxM1xuICAgIHwgUGVhY2hwdWZmIC0+IDI1NSwgMjE4LCAxODVcbiAgICB8IFBlcnUgLT4gMjA1LCAxMzMsIDYzXG4gICAgfCBQaW5rIC0+IDI1NSwgMTkyLCAyMDNcbiAgICB8IFBsdW0gLT4gMjIxLCAxNjAsIDIyMVxuICAgIHwgUG93ZGVyYmx1ZSAtPiAxNzYsIDIyNCwgMjMwXG4gICAgfCBQdXJwbGUgLT4gMTI4LCAwLCAxMjhcbiAgICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgICB8IFJvc3licm93biAtPiAxODgsIDE0MywgMTQzXG4gICAgfCBSb3lhbGJsdWUgLT4gNjUsIDEwNSwgMjI1XG4gICAgfCBTYWRkbGVicm93biAtPiAxMzksIDY5LCAxOVxuICAgIHwgU2FsbW9uIC0+IDI1MCwgMTI4LCAxMTRcbiAgICB8IFNhbmR5YnJvd24gLT4gMjQ0LCAxNjQsIDk2XG4gICAgfCBTZWFncmVlbiAtPiA0NiwgMTM5LCA4N1xuICAgIHwgU2Vhc2hlbGwgLT4gMjU1LCAyNDUsIDIzOFxuICAgIHwgU2llbm5hIC0+IDE2MCwgODIsIDQ1XG4gICAgfCBTaWx2ZXIgLT4gMTkyLCAxOTIsIDE5MlxuICAgIHwgU2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjM1XG4gICAgfCBTbGF0ZWJsdWUgLT4gMTA2LCA5MCwgMjA1XG4gICAgfCBTbGF0ZWdyYXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU2xhdGVncmV5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNub3cgLT4gMjU1LCAyNTAsIDI1MFxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gMCwgMjU1LCAxMjdcbiAgICB8IFN0ZWVsYmx1ZSAtPiA3MCwgMTMwLCAxODBcbiAgICB8IFRhbiAtPiAyMTAsIDE4MCwgMTQwXG4gICAgfCBUZWFsIC0+IDAsIDEyOCwgMTI4XG4gICAgfCBUaGlzdGxlIC0+IDIxNiwgMTkxLCAyMTZcbiAgICB8IFRvbWF0byAtPiAyNTUsIDk5LCA3MVxuICAgIHwgVHVycXVvaXNlIC0+IDY0LCAyMjQsIDIwOFxuICAgIHwgVmlvbGV0IC0+IDIzOCwgMTMwLCAyMzhcbiAgICB8IFdoZWF0IC0+IDI0NSwgMjIyLCAxNzlcbiAgICB8IFdoaXRlIC0+IDI1NSwgMjU1LCAyNTVcbiAgICB8IFdoaXRlc21va2UgLT4gMjQ1LCAyNDUsIDI0NVxuICAgIHwgWWVsbG93IC0+IDI1NSwgMjU1LCAwXG4gICAgfCBZZWxsb3dncmVlbiAtPiAxNTQsIDIwNSwgNTBcblxuICB0eXBlIHQgPVxuICAgIHwgTmFtZSBvZiBuYW1lXG4gICAgfCBSR0Igb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJlZCwgR3JlZW4gYW5kIEJsdWUgdmFsdWVzLiBDbGlwcGVkIHRvIFtbMC4uMjU1XV0gYnkgbW9zdCAoQWxsPylcbiAgICAgICAgICAgIGJyb3dzZXJzLiAqKVxuICAgIHwgUkdCX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBhcmUgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiAqKVxuICAgIHwgUkdCQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIFJHQiB3aXRoIGFkZGl0aW9uYWwgdHJhbnNwYXJlbmN5IGFyZ3VtZW50LiBPcGFjaXR5IHNob3VsZCBiZSBpblxuICAgICAgICAgICAgWzAuXSAoY29tcGxldGVseSB0cmFuc3BhcmVudCkgYW5kIFsxLl0gKGNvbXBsZXRlbHkgb3BhcXVlKS4gKilcbiAgICB8IFJHQkFfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgc3BlY2lmaWVkIGFzIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gQWxwaGFcbiAgICAgICAgICAgIGNoYW5uZWwgKG9wYWNpdHkpIGlzIHN0aWxsIGEgWzAuXSB0byBbMS5dIGZsb2F0LiAqKVxuICAgIHwgSFNMIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBIdWUsIFNhdHVyYXRpb24gYW5kIExpZ2h0bmVzcyB2YWx1ZXMuIEh1ZSBpcyBhbiBhbmdsZSBpbiBkZWdyZWUgKGluXG4gICAgICAgICAgICBpbnRlcnZhbCBbWzAuLjM2MFtdKS4gU2F0dXJhdGlvbiBpcyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBjb2xvcmxlc3MuIExpZ2h0bmVzcyBpcyBhbHNvIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGJsYWNrLiAqKVxuICAgIHwgSFNMQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIEhTTCB3aXRoIGFuIG9wYWNpdHkgYXJndW1lbnQgYmV0d2VlbiBbMC5dIGFuZCBbMS5dLiAqKVxuXG4gIGxldCByZ2IgP2EgciBnIGIgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBSR0IgKHIsIGcsIGIpXG4gICAgfCBTb21lIGEgLT4gUkdCQSAociwgZywgYiwgYSlcblxuICBsZXQgaHNsID9hIGggcyBsID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gSFNMIChoLCBzLCBsKVxuICAgIHwgU29tZSBhIC0+IEhTTEEgKGgsIHMsIGwsIGEpXG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBzdHJpbmdfb2ZfbmFtZSBuXG4gICAgfCBSR0IgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkLCVkLCVkKVwiIHIgZyBiXG4gICAgfCBSR0JfcGVyY2VudCAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQlJSwlZCUlLCVkJSUpXCIgciBnIGJcbiAgICB8IFJHQkEgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCwlZCwlZCwlZilcIiByIGcgYiBhXG4gICAgfCBSR0JBX3BlcmNlbnQgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCUlLCVkJSUsJWQlJSwlZilcIiByIGcgYiBhXG4gICAgfCBIU0wgKGgsIHMsIGwpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsKCVkLCVkJSUsJWQlJSlcIiBoIHMgbFxuICAgIHwgSFNMQSAoaCwgcywgbCwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2xhKCVkLCVkJSUsJWQlJSwlZilcIiBoIHMgbCBhXG5cbiAgbGV0IGhleF9vZl9yZ2IgKHJlZCwgZ3JlZW4sIGJsdWUpID1cbiAgICBsZXQgaW5fcmFuZ2UgaSA9XG4gICAgICBpZiBpIDwgMCB8fCBpID4gMjU1XG4gICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzdHJpbmdfb2ZfaW50IGkgXiBcIiBpcyBvdXQgb2YgdmFsaWQgcmFuZ2VcIikpXG4gICAgaW5cbiAgICBpbl9yYW5nZSByZWQ7XG4gICAgaW5fcmFuZ2UgZ3JlZW47XG4gICAgaW5fcmFuZ2UgYmx1ZTtcbiAgICBQcmludGYuc3ByaW50ZiBcIiMlMDJYJTAyWCUwMlhcIiByZWQgZ3JlZW4gYmx1ZVxuXG4gICgqIE9jYW1sIDwtPiBKUyByZXByZXNlbnRhdGlvbiAqKVxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gICgqIFRPRE8/IGJlIG1vcmUgcmVzdHJpY3RpdmUsIGNsaXAgdmFsdWVzIGludG8gc3RhbmRhcmQgcmFuZ2UgKilcbiAgbGV0IGpzX3Rfb2ZfanNfc3RyaW5nIHMgPVxuICAgIGxldCByZ2JfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5oc2xcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGlmIEpzLnRvX2Jvb2wgKHJnYl9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xhX3JlIyN0ZXN0IHMpXG4gICAgdGhlbiBzXG4gICAgZWxzZSBpZiBMaXN0Lm1lbVxuICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIHMpXG4gICAgICAgICAgICAgIFsgXCJhbGljZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYW50aXF1ZXdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFcIlxuICAgICAgICAgICAgICA7IFwiYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJhenVyZVwiXG4gICAgICAgICAgICAgIDsgXCJiZWlnZVwiXG4gICAgICAgICAgICAgIDsgXCJiaXNxdWVcIlxuICAgICAgICAgICAgICA7IFwiYmxhY2tcIlxuICAgICAgICAgICAgICA7IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibHVldmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImJyb3duXCJcbiAgICAgICAgICAgICAgOyBcImJ1cmx5d29vZFwiXG4gICAgICAgICAgICAgIDsgXCJjYWRldGJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY2hhcnRyZXVzZVwiXG4gICAgICAgICAgICAgIDsgXCJjaG9jb2xhdGVcIlxuICAgICAgICAgICAgICA7IFwiY29yYWxcIlxuICAgICAgICAgICAgICA7IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY29ybnNpbGtcIlxuICAgICAgICAgICAgICA7IFwiY3JpbXNvblwiXG4gICAgICAgICAgICAgIDsgXCJjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrbWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb2xpdmVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3JlZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmt2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRvZGdlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZmlyZWJyaWNrXCJcbiAgICAgICAgICAgICAgOyBcImZsb3JhbHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImZvcmVzdGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImZ1Y2hzaWFcIlxuICAgICAgICAgICAgICA7IFwiZ2FpbnNib3JvXCJcbiAgICAgICAgICAgICAgOyBcImdob3N0d2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZ29sZFwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJncmVlbnllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJncmV5XCJcbiAgICAgICAgICAgICAgOyBcImhvbmV5ZGV3XCJcbiAgICAgICAgICAgICAgOyBcImhvdHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWFucmVkXCJcbiAgICAgICAgICAgICAgOyBcImluZGlnb1wiXG4gICAgICAgICAgICAgIDsgXCJpdm9yeVwiXG4gICAgICAgICAgICAgIDsgXCJraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlclwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlcmJsdXNoXCJcbiAgICAgICAgICAgICAgOyBcImxhd25ncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsZW1vbmNoaWZmb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y29yYWxcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHBpbmtcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHR5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGltZVwiXG4gICAgICAgICAgICAgIDsgXCJsaW1lZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGluZW5cIlxuICAgICAgICAgICAgICA7IFwibWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJtYXJvb25cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1ibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bW9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1wdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwibWlkbmlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1pbnRjcmVhbVwiXG4gICAgICAgICAgICAgIDsgXCJtaXN0eXJvc2VcIlxuICAgICAgICAgICAgICA7IFwibW9jY2FzaW5cIlxuICAgICAgICAgICAgICA7IFwibmF2YWpvd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwibmF2eVwiXG4gICAgICAgICAgICAgIDsgXCJvbGRsYWNlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlZHJhYlwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlcmVkXCJcbiAgICAgICAgICAgICAgOyBcIm9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV2aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwicGFwYXlhd2hpcFwiXG4gICAgICAgICAgICAgIDsgXCJwZWFjaHB1ZmZcIlxuICAgICAgICAgICAgICA7IFwicGVydVwiXG4gICAgICAgICAgICAgIDsgXCJwaW5rXCJcbiAgICAgICAgICAgICAgOyBcInBsdW1cIlxuICAgICAgICAgICAgICA7IFwicG93ZGVyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJwdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwicmVkXCJcbiAgICAgICAgICAgICAgOyBcInJvc3licm93blwiXG4gICAgICAgICAgICAgIDsgXCJyb3lhbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2FkZGxlYnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcInNhbmR5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic2Vhc2hlbGxcIlxuICAgICAgICAgICAgICA7IFwic2llbm5hXCJcbiAgICAgICAgICAgICAgOyBcInNpbHZlclwiXG4gICAgICAgICAgICAgIDsgXCJza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcInNub3dcIlxuICAgICAgICAgICAgICA7IFwic3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInRhblwiXG4gICAgICAgICAgICAgIDsgXCJ0ZWFsXCJcbiAgICAgICAgICAgICAgOyBcInRoaXN0bGVcIlxuICAgICAgICAgICAgICA7IFwidG9tYXRvXCJcbiAgICAgICAgICAgICAgOyBcInR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJ2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwid2hlYXRcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVzbW9rZVwiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93Z3JlZW5cIlxuICAgICAgICAgICAgICBdXG4gICAgdGhlbiBzXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoSnMudG9fc3RyaW5nIHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSlcblxuICBsZXQgbmFtZSBjbiA9IEpzLnN0cmluZyAoc3RyaW5nX29mX25hbWUgY24pXG5cbiAgbGV0IGpzID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBuYW1lIG5cbiAgICB8IChSR0IgXyB8IFJHQl9wZXJjZW50IF8gfCBSR0JBIF8gfCBSR0JBX3BlcmNlbnQgXyB8IEhTTCBfIHwgSFNMQSBfKSBhcyBjIC0+XG4gICAgICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX3QgYylcblxuICBsZXQgbWwgYyA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgYyBpblxuICAgIHRyeSBOYW1lIChuYW1lX29mX3N0cmluZyBzKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IChcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSkgaW5cbiAgICAgIGxldCByZV9yZ2IgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiksKFxcXFxkKikoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9yZ2JfcGN0ID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopJSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfaHNsID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihoc2xhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCBpX29mX3NfbyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgIHwgU29tZSBpIC0+IChcbiAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGlcbiAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gaSBeIFwiKTogXCIgXiBzKSkpXG4gICAgICBpblxuICAgICAgbGV0IGZfb2ZfcyBmID1cbiAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBmIF4gXCIpOiBcIiBeIHMpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiIHMgMCB3aXRoXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IFJHQkEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2JfcGN0IHMgMCB3aXRoXG4gICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQl9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFJHQkFfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfaHNsIHMgMCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbFwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBIU0wgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIU0xBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKCkpKSlcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gICgqIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNsZW5ndGhzICopXG5cbiAgKCogVE9ETzpcbiAgICAge1tcbiAgICAgICB0eXBlIGpzX3QgPSBwcml2YXRlIEpzLnN0cmluZyBKcy50XG4gICAgICAgdmFsIGpzX3Rfb2ZfdFxuICAgICAgIHZhbCB0X29mX2pzX3RcbiAgICAgICB2YWwgdF9vZl9zdHJpbmdcbiAgICAgXX1cbiAgKilcblxuICB0eXBlIHQgPVxuICAgIHwgWmVyb1xuICAgICgqIHJlbGF0aXZlICopXG4gICAgfCBFbSBvZiBmbG9hdFxuICAgIHwgRXggb2YgZmxvYXRcbiAgICB8IFB4IG9mIGZsb2F0XG4gICAgfCBHZCBvZiBmbG9hdFxuICAgIHwgUmVtIG9mIGZsb2F0XG4gICAgfCBWdyBvZiBmbG9hdFxuICAgIHwgVmggb2YgZmxvYXRcbiAgICB8IFZtIG9mIGZsb2F0XG4gICAgfCBDaCBvZiBmbG9hdFxuICAgICgqIGFic29sdXRlICopXG4gICAgfCBNbSBvZiBmbG9hdFxuICAgIHwgQ20gb2YgZmxvYXRcbiAgICB8IEluIG9mIGZsb2F0XG4gICAgfCBQdCBvZiBmbG9hdFxuICAgIHwgUGMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgWmVybyAtPiBcIjBcIlxuICAgIHwgRW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZW1cIlxuICAgIHwgRXggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZXhcIlxuICAgIHwgUHggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHhcIlxuICAgIHwgR2QgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ2RcIlxuICAgIHwgUmVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJlbVwiXG4gICAgfCBWdyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2d1wiXG4gICAgfCBWaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2aFwiXG4gICAgfCBWbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2bVwiXG4gICAgfCBDaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjaFwiXG4gICAgfCBNbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJtbVwiXG4gICAgfCBDbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjbVwiXG4gICAgfCBJbiBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJpblwiXG4gICAgfCBQdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwdFwiXG4gICAgfCBQYyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwY1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgdCA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgdCBpblxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiMFwiXG4gICAgdGhlbiBaZXJvXG4gICAgZWxzZVxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pXFxcXHMqKFxcXFxTKikkXCIgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IGYgPVxuICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgXCJlbVwiIC0+IEVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJleFwiIC0+IEV4IGZcbiAgICAgICAgICB8IFNvbWUgXCJweFwiIC0+IFB4IGZcbiAgICAgICAgICB8IFNvbWUgXCJnZFwiIC0+IEdkIGZcbiAgICAgICAgICB8IFNvbWUgXCJyZW1cIiAtPiBSZW0gZlxuICAgICAgICAgIHwgU29tZSBcInZ3XCIgLT4gVncgZlxuICAgICAgICAgIHwgU29tZSBcInZoXCIgLT4gVmggZlxuICAgICAgICAgIHwgU29tZSBcInZtXCIgLT4gVm0gZlxuICAgICAgICAgIHwgU29tZSBcImNoXCIgLT4gQ2ggZlxuICAgICAgICAgIHwgU29tZSBcIm1tXCIgLT4gTW0gZlxuICAgICAgICAgIHwgU29tZSBcImNtXCIgLT4gQ20gZlxuICAgICAgICAgIHwgU29tZSBcImluXCIgLT4gSW4gZlxuICAgICAgICAgIHwgU29tZSBcInB0XCIgLT4gUHQgZlxuICAgICAgICAgIHwgU29tZSBcInBjXCIgLT4gUGMgZlxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKCkpXG5lbmRcblxubW9kdWxlIEFuZ2xlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBEZWcgb2YgZmxvYXRcbiAgICB8IEdyYWQgb2YgZmxvYXRcbiAgICB8IFJhZCBvZiBmbG9hdFxuICAgIHwgVHVybnMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgRGVnIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImRlZ1wiXG4gICAgfCBHcmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdyYWRcIlxuICAgIHwgUmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJhZFwiXG4gICAgfCBUdXJucyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ0dXJuc1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgaiA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgaiBpblxuICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKSkoZGVnfGdyYWR8cmFkfHR1cm5zKSRcIiBpblxuICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgfCBTb21lIHIgLT4gKFxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICB8IFNvbWUgXCJkZWdcIiAtPiBEZWcgZlxuICAgICAgICB8IFNvbWUgXCJncmFkXCIgLT4gR3JhZCBmXG4gICAgICAgIHwgU29tZSBcInJhZFwiIC0+IFJhZCBmXG4gICAgICAgIHwgU29tZSBcInR1cm5zXCIgLT4gVHVybnMgZlxuICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqKiBKYXZhc2NyaXB0IGV2ZW50cy4gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVHlwID0gRG9tX2h0bWwuRXZlbnRcblxudHlwZSBsaXN0ZW5lciA9IERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBsaXN0ZW4gPyhjYXB0dXJlID0gZmFsc2UpIHRhcmdldCB0eXAgY2IgPVxuICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyXG4gICAgdGFyZ2V0XG4gICAgdHlwXG4gICAgKERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIG4gZSAtPiBKcy5ib29sIChjYiBuIGUpKSlcbiAgICAoSnMuYm9vbCBjYXB0dXJlKVxuXG5sZXQgc3RvcF9saXN0ZW4gPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICogQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5sZXQgeG1sbnMgPSBKcy5zdHJpbmcgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG5cbigqIHRyYW5zbGF0ZSBzcGVjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2lkbC5odG1sICopXG4oKiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwgKilcblxudHlwZSBlcnJvcl9jb2RlID1cbiAgfCBXUk9OR19UWVBFX0VSUlxuICB8IElOVkFMSURfVkFMVUVfRVJSXG4gIHwgTUFUUklYX05PVF9JTlZFUlRBQkxFXG5cbmNsYXNzIHR5cGUgc3ZnX2Vycm9yID0gb2JqZWN0XG4gIGluaGVyaXQgSnMuZXJyb3JcblxuICBtZXRob2QgY29kZSA6IGVycm9yX2NvZGUgdCByZWFkb25seV9wcm9wXG5lbmRcblxuZXhjZXB0aW9uIFNWR0Vycm9yIG9mIHN2Z19lcnJvclxuXG50eXBlIGxlbmd0aFVuaXRUeXBlID1cbiAgfCBMRU5HVEhUWVBFX1VOS05PV05cbiAgfCBMRU5HVEhUWVBFX05VTUJFUlxuICB8IExFTkdUSFRZUEVfUEVSQ0VOVEFHRVxuICB8IExFTkdUSFRZUEVfRU1TXG4gIHwgTEVOR1RIVFlQRV9FWFNcbiAgfCBMRU5HVEhUWVBFX1BYXG4gIHwgTEVOR1RIVFlQRV9DTVxuICB8IExFTkdUSFRZUEVfTU1cbiAgfCBMRU5HVEhUWVBFX0lOXG4gIHwgTEVOR1RIVFlQRV9QVFxuICB8IExFTkdUSFRZUEVfUENcblxudHlwZSBhbmdsZVVuaXRUeXBlID1cbiAgfCBBTkdMRVRZUEVfVU5LTk9XTlxuICB8IEFOR0xFVFlQRV9VTlNQRUNJRklFRFxuICB8IEFOR0xFVFlQRV9ERUdcbiAgfCBBTkdMRVRZUEVfUkFEXG4gIHwgQU5HTEVUWVBFX0dSQURcblxudHlwZSBjb2xvclR5cGUgPVxuICB8IENPTE9SVFlQRV9VTktOT1dOXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SXG4gIHwgQ09MT1JUWVBFX0NVUlJFTlRDT0xPUlxuXG50eXBlIGFsaWdubWVudFR5cGUgPVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWFxuXG50eXBlIG1lZXRPclNsaWNlVHlwZSA9XG4gIHwgTUVFVE9SU0xJQ0VfVU5LTk9XTlxuICB8IE1FRVRPUlNMSUNFX01FRVRcbiAgfCBNRUVUT1JTTElDRV9TTElDRVxuXG50eXBlIHRyYW5zZm9ybVR5cGUgPVxuICB8IFRSQU5TRk9STV9VTktOT1dOXG4gIHwgVFJBTlNGT1JNX01BVFJJWFxuICB8IFRSQU5TRk9STV9UUkFOU0xBVEVcbiAgfCBUUkFOU0ZPUk1fU0NBTEVcbiAgfCBUUkFOU0ZPUk1fUk9UQVRFXG4gIHwgVFJBTlNGT1JNX1NLRVdYXG4gIHwgVFJBTlNGT1JNX1NLRVdZXG5cbnR5cGUgem9vbUFuZFBhblR5cGUgPVxuICB8IFpPT01BTkRQQU5fVU5LTk9XTlxuICB8IFpPT01BTkRQQU5fRElTQUJMRVxuICB8IFpPT01BTkRQQU5fTUFHTklGWVxuXG50eXBlIGxlbmd0aEFkanVzdCA9XG4gIHwgTEVOR1RIQURKVVNUX1VOS05PV05cbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR1xuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTXG5cbnR5cGUgdW5pdFR5cGUgPVxuICB8IFVOSVRfVFlQRV9VTktOT1dOXG4gIHwgVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFXG4gIHwgVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YXG5cbigqIGludGVyZmFjZSBTVkdSZW5kZXJpbmdJbnRlbnQgKilcbnR5cGUgaW50ZW50VHlwZSA9XG4gIHwgUkVOREVSSU5HX0lOVEVOVF9VTktOT1dOXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BVVRPXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9QRVJDRVBUVUFMXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUNcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1NBVFVSQVRJT05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQ1xuXG4oKiBQYXRoIFNlZ21lbnQgVHlwZXMgKilcbnR5cGUgcGF0aFNlZ21lbnRUeXBlID1cbiAgfCBQQVRIU0VHX1VOS05PV05cbiAgfCBQQVRIU0VHX0NMT1NFUEFUSFxuICB8IFBBVEhTRUdfTU9WRVRPX0FCU1xuICB8IFBBVEhTRUdfTU9WRVRPX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTFxuICB8IFBBVEhTRUdfQVJDX0FCU1xuICB8IFBBVEhTRUdfQVJDX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMXG5cbigqIHRleHRQYXRoIE1ldGhvZCBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aE1ldGhvZFR5cGUgPVxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0hcblxuKCogdGV4dFBhdGggU3BhY2luZyBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aFNwYWNpbmdUeXBlID1cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUT1xuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUXG5cbigqIFNwcmVhZCBNZXRob2QgVHlwZXMgKilcbnR5cGUgc3ByZWFkTWV0aG9kVHlwZSA9XG4gIHwgU1BSRUFETUVUSE9EX1VOS05PV05cbiAgfCBTUFJFQURNRVRIT0RfUEFEXG4gIHwgU1BSRUFETUVUSE9EX1JFRkxFQ1RcbiAgfCBTUFJFQURNRVRIT0RfUkVQRUFUXG5cbnR5cGUgc3VzcGVuZEhhbmRsZUlEXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIFsnYV0gYW5pbWF0ZWQgPSBvYmplY3RcbiAgbWV0aG9kIGJhc2VWYWwgOiAnYSBwcm9wXG5cbiAgbWV0aG9kIGFuaW1WYWwgOiAnYSBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIGxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIG51bWJlck9mSXRlbXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbml0aWFsaXplIDogJ2EgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgaW5zZXJ0SXRlbUJlZm9yZSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VJdGVtIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZEl0ZW0gOiAnYSAtPiAnYSBtZXRoXG5lbmRcblxuKCoqKiopXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50ICopXG5jbGFzcyB0eXBlIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sYmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJTVkdFbGVtZW50IDogc3ZnRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRTdHJpbmcgKilcbmFuZCBhbmltYXRlZFN0cmluZyA9IFtqc19zdHJpbmcgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQm9vbGVhbiAqKVxuYW5kIGFuaW1hdGVkQm9vbGVhbiA9IFtib29sIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHJpbmdMaXN0ICopXG5hbmQgc3RyaW5nTGlzdCA9IFtqc19zdHJpbmcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiAqKVxuYW5kIGFuaW1hdGVkRW51bWVyYXRpb24gPSBbaW50ICgqc2hvcnQqKV0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkSW50ZWdlciAqKVxuYW5kIGFuaW1hdGVkSW50ZWdlciA9IFtpbnRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlciAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyID0gW251bWJlcl90XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTnVtYmVyTGlzdCAqKVxuYW5kIG51bWJlckxpc3QgPSBbbnVtYmVyIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyTGlzdCA9IFtudW1iZXJMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGggKilcbmFuZCBsZW5ndGggPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogbGVuZ3RoVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoICopXG5hbmQgYW5pbWF0ZWRMZW5ndGggPSBbbGVuZ3RoIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGhMaXN0ICopXG5hbmQgbGVuZ3RoTGlzdCA9IFtsZW5ndGggdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ICopXG5hbmQgYW5pbWF0ZWRMZW5ndGhMaXN0ID0gW2xlbmd0aExpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuZ2xlICopXG5hbmQgYW5nbGUgPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogYW5nbGVVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQW5nbGUgKilcbmFuZCBhbmltYXRlZEFuZ2xlID0gW2FuZ2xlIHRdIGFuaW1hdGVkXG5cbigqIFhYWFhYIE1vdmUgaXQgKilcbmFuZCByZ2JDb2xvciA9IG9iamVjdCBlbmRcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yICopXG5hbmQgY29sb3IgPSBvYmplY3RcbiAgKCogWFhYIGluaGVyaXQgY3NzVmFsdWUgKilcbiAgbWV0aG9kIGNvbG9yVHlwZSA6IGNvbG9yVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJnYkNvbG9yIDogcmdiQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGljY0NvbG9yIDogaWNjQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9yIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9ySUNDQ29sb3IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Q29sb3IgOiBjb2xvclR5cGUgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0lDQ0NvbG9yICopXG5hbmQgaWNjQ29sb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvbG9yUHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3JzIDogbnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdCAqKVxuYW5kIHJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUmVjdCAqKVxuYW5kIGFuaW1hdGVkUmVjdCA9IFtyZWN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHlsYWJsZSAqKVxuYW5kIHN0eWxhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBjbGFzc05hbWUgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3R5bGUgOiBEb21faHRtbC5jc3NTdHlsZURlY2xhcmF0aW9uIHQgcmVhZG9ubHlfcHJvcFxuICAoKiAgIENTU1ZhbHVlIGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xvY2F0YWJsZSAqKVxuYW5kIGxvY2F0YWJsZSA9IG9iamVjdFxuICBtZXRob2QgbmVhcmVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QkJveCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2NyZWVuQ1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQgOiBlbGVtZW50IHQgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1hYmxlICopXG5hbmQgdHJhbnNmb3JtYWJsZSA9IG9iamVjdFxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1Rlc3RzICopXG5hbmQgdGVzdHMgPSBvYmplY3RcbiAgbWV0aG9kIHJlcXVpcmVkRmVhdHVyZXMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZEV4dGVuc2lvbnMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzeXN0ZW1MYW5ndWFnZSA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhhc0V4dGVuc2lvbiA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xhbmdTcGFjZSAqKVxuYW5kIGxhbmdTcGFjZSA9IG9iamVjdFxuICBtZXRob2QgeG1sbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sc3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgKilcbmFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gb2JqZWN0XG4gIG1ldGhvZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIDogYW5pbWF0ZWRCb29sZWFuIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdCb3ggKilcbmFuZCBmaXRUb1ZpZXdCb3ggPSBvYmplY3RcbiAgbWV0aG9kIHZpZXdCb3ggOiBhbmltYXRlZFJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW8gOiBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21BbmRQYW4gKilcbmFuZCB6b29tQW5kUGFuID0gb2JqZWN0XG4gIG1ldGhvZCB6b29tQW5kUGFuIDogem9vbUFuZFBhblR5cGUgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3U3BlYyAqKVxuYW5kIHZpZXdTcGVjID0gb2JqZWN0XG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IHRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3Qm94U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm1TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXRTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSAqKVxuYW5kIHVyaVJlZmVyZW5jZSA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDU1NSdWxlIDogQ1NTUnVsZSAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT0xPUl9QUk9GSUxFX1JVTEUgPSA3OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0RvY3VtZW50ICopXG5hbmQgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudEV2ZW50ICopXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEVsZW1lbnQgOiBzdmdFbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbiAgKCogcm9vdEVsZW1lbnQgd2lsbCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbiBhbiBodG1sIGNvbnRleHQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU1ZHRWxlbWVudCAqKVxuYW5kIHN2Z0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50ZXZlbnQsIHZpZXdjc3MsIGRvY3VtZW50Y3NzICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTY3JpcHRUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IHJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZUN1cnJlbnRWaWV3IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFZpZXcgOiB2aWV3U3BlYyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFNjYWxlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VHJhbnNsYXRlIDogcG9pbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1c3BlbmRSZWRyYXcgOiBpbnQgLT4gc3VzcGVuZEhhbmRsZUlEIG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3IDogc3VzcGVuZEhhbmRsZUlEIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXdBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yY2VSZWRyYXcgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVucGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbnNQYXVzZWQgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0Q3VycmVudFRpbWUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEludGVyc2VjdGlvbkxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmNsb3N1cmVMaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgY2hlY2tJbnRlcnNlY3Rpb24gOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBjaGVja0VuY2xvc3VyZSA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGRlc2VsZWN0QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR051bWJlciA6IG51bWJlciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTGVuZ3RoIDogbGVuZ3RoIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdBbmdsZSA6IGFuZ2xlIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQb2ludCA6IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdNYXRyaXggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1JlY3QgOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggdCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gRG9tLmVsZW1lbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dFbGVtZW50ICopXG5hbmQgZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVmc0VsZW1lbnQgKilcbmFuZCBkZWZzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0Rlc2NFbGVtZW50ICopXG5hbmQgZGVzY0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RpdGxlRWxlbWVudCAqKVxuYW5kIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3ltYm9sRWxlbWVudCAqKVxuYW5kIHN5bWJvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VzZUVsZW1lbnQgKilcbmFuZCB1c2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRJbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGVsZW1lbnRJbnN0YW5jZSA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgOiB1c2VFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogZWxlbWVudEluc3RhbmNlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50SW5zdGFuY2VMaXN0ICopXG5hbmQgZWxlbWVudEluc3RhbmNlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBlbGVtZW50SW5zdGFuY2UgdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJbWFnZUVsZW1lbnQgKilcbmFuZCBpbWFnZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbiAgKCogcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5lbmRcblxuYW5kIHN3aXRjaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbigqIFhYWCBkZXByZWNhdGVkID0+IGludGVyZmFjZSBHZXRTVkdEb2N1bWVudCA9PiBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpICopXG5cbigqIGludGVyZmFjZSBTVkdTdHlsZUVsZW1lbnQgKilcbmFuZCBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnQgKilcbmFuZCBwb2ludCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4VHJhbnNmb3JtIDogbWF0cml4IHQgLT4gcG9pbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50TGlzdCAqKVxuYW5kIHBvaW50TGlzdCA9IFtwb2ludCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdNYXRyaXggKilcbmFuZCBtYXRyaXggPSBvYmplY3RcbiAgbWV0aG9kIGEgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGMgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGYgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGx5IDogbWF0cml4IHQgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBpbnZlcnNlIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZU5vblVuaWZvcm0gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlRnJvbVZlY3RvciA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBZIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WCA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1kgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybSAqKVxuYW5kIHRyYW5zZm9ybSA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiB0cmFuc2Zvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4IDogbWF0cml4IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0TWF0cml4IDogbWF0cml4IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSb3RhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1ggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1kgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtTGlzdCAqKVxuYW5kIHRyYW5zZm9ybUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbdHJhbnNmb3JtIHRdIGxpc3RcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnNvbGlkYXRlIDogdHJhbnNmb3JtIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QgKilcbmFuZCBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBbdHJhbnNmb3JtTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIHByZXNlcnZlQXNwZWN0UmF0aW8gPSBvYmplY3RcbiAgbWV0aG9kIGFsaWduIDogYWxpZ25tZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lZXRPclNsaWNlIDogbWVldE9yU2xpY2VUeXBlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gW3ByZXNlcnZlQXNwZWN0UmF0aW8gdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWcgKilcbmFuZCBwYXRoU2VnID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnVHlwZSA6IHBhdGhTZWdtZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdGhTZWdUeXBlQXNMZXR0ZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDbG9zZVBhdGggKilcbmFuZCBwYXRoU2VnQ2xvc2VQYXRoID0gcGF0aFNlZ1xuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9SZWwgKilcbmFuZCBwYXRoU2VnTW92ZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY1JlbCopXG5hbmQgcGF0aFNlZ0FyYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGFyZ2VBcmNGbGFnIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3dlZXBGbGFnIDogYm9vbCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCAgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnTGlzdCA9IFtwYXRoU2VnIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUGF0aERhdGEgKilcbmFuZCBhbmltYXRlZFBhdGhEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBub3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoRWxlbWVudCAqKVxuYW5kIHBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUGF0aERhdGFcblxuICBtZXRob2QgcGF0aExlbmd0aCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRUb3RhbExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0UG9pbnRBdExlbmd0aCA6IG51bWJlcl90IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXRoU2VnQXRMZW5ndGggOiBudW1iZXJfdCAtPiBpbnRcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aCA6IHBhdGhTZWdDbG9zZVBhdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0RWxlbWVudCAqKVxuYW5kIHJlY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDaXJjbGVFbGVtZW50ICopXG5hbmQgY2lyY2xlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxsaXBzZUVsZW1lbnQgKilcbmFuZCBlbGxpcHNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUG9pbnRzICopXG5hbmQgYW5pbWF0ZWRQb2ludHMgPSBvYmplY3RcbiAgbWV0aG9kIHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlsaW5lRWxlbWVudCAqKVxuYW5kIHBvbHlMaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5Z29uRWxlbWVudCAqKVxuYW5kIHBvbHlnb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRDb250ZW50RWxlbWVudCAqKVxuYW5kIHRleHRDb250ZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0ZXh0TGVuZ3RoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aEFkanVzdCA6IGxlbmd0aEFkanVzdCBhbmltYXRlZCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TnVtYmVyT2ZDaGFycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkVGV4dExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3ViU3RyaW5nTGVuZ3RoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN0YXJ0UG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuZFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnRPZkNoYXIgOiBpbnQgLT4gcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Um90YXRpb25PZkNoYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDaGFyTnVtQXRQb3NpdGlvbiA6IHBvaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdFN1YlN0cmluZyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgKilcbmFuZCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm90YXRlIDogYW5pbWF0ZWROdW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0RWxlbWVudCAqKVxuYW5kIHRleHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbmFuZCB0c3BhbkVsZW1lbnQgPSB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbmFuZCB0cmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UGF0aEVsZW1lbnQgKilcbmFuZCB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgPSBbdGV4dFBhdGhNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50U3BhY2luZyA9IFt0ZXh0UGF0aFNwYWNpbmdUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0aG9kXyA6IHRleHRQYXRoRWxlbWVudE1ldGhvZCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwYWNpbmcgOiB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRGVmRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRGVmRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEl0ZW1FbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhSZWZFbGVtZW50ICopXG5hbmQgZ2x5cGhSZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhaW50IDogU1ZHQ29sb3IgeyAqKVxuXG4oKiAgIC8vIFBhaW50IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FID0gMTAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiA9IDEwMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSA9IDEwMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SID0gMTA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiA9IDEwNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1IgPSAxMDY7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJID0gMTA3OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOyAqKVxuXG4oKiAgIHZvaWQgc2V0VXJpKGluIERPTVN0cmluZyB1cmkpOyAqKVxuKCogICB2b2lkIHNldFBhaW50KGluIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZSwgaW4gRE9NU3RyaW5nIHVyaSwgaW4gRE9NU3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcgaWNjQ29sb3IpIHJhaXNlcyhTVkdFeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR01hcmtlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1N0eWxhYmxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaXRUb1ZpZXdCb3ggeyAqKVxuXG4oKiAgIC8vIE1hcmtlciBVbml0IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0gMjsgKilcblxuKCogICAvLyBNYXJrZXIgT3JpZW50YXRpb24gVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FVVE8gPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BTkdMRSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXJrZXJVbml0czsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlcldpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VySGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcmllbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRBbmdsZSBvcmllbnRBbmdsZTsgKilcblxuKCogICB2b2lkIHNldE9yaWVudFRvQXV0bygpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICB2b2lkIHNldE9yaWVudFRvQW5nbGUoaW4gU1ZHQW5nbGUgYW5nbGUpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWw7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVSdWxlIDogU1ZHQ1NTUnVsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmMgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZSBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudCBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBhbmltYXRlZFNwcmVhZE1ldGhvZCA9IFtzcHJlYWRNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgZ3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZ3JhZGllbnRVbml0czsgKilcbiAgbWV0aG9kIGdyYWRpZW50VHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcHJlYWRNZXRob2QgOiBhbmltYXRlZFNwcmVhZE1ldGhvZCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50ICopXG5hbmQgbGluZWFyR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCAqKVxuYW5kIHJhZGlhbEdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N0b3BFbGVtZW50ICopXG5hbmQgc3RvcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBvZmZzZXQgOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0dGVybkVsZW1lbnQgKilcbmFuZCBwYXR0ZXJuRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVyblVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Db250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCBwYXR0ZXJuVHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NsaXBQYXRoRWxlbWVudCAqKVxuYW5kIGNsaXBQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gY2xpcFBhdGhVbml0czsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFza0VsZW1lbnQgKilcbmFuZCBtYXNrRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza0NvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyRWxlbWVudCAqKVxuYW5kIGZpbHRlckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZpbHRlclVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHByaW1pdGl2ZVVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNYIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNZIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRGaWx0ZXJSZXMgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBTVkdTdHlsYWJsZSB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHdpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggaGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgcmVzdWx0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQmxlbmRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQmxlbmQgTW9kZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX05PUk1BTCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfREFSS0VOID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9MSUdIVEVOID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtb2RlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29sb3IgTWF0cml4IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHZhbHVlczsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG5cbigqICAgLy8gQ29tcG9uZW50IFRyYW5zZmVyIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQSA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB0YWJsZVZhbHVlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNsb3BlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgaW50ZXJjZXB0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYW1wbGl0dWRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBvZmZzZXQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jUkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jR0VsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQUVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbXBvc2l0ZSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9JTiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUCA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1IgPSA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQyA9IDY7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsyOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrNDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEVkZ2UgTW9kZSBWYWx1ZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1dSQVAgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfTk9ORSA9IDM7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IGtlcm5lbE1hdHJpeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpdmlzb3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiaWFzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZWRnZU1vZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRCb29sZWFuIHByZXNlcnZlQWxwaGE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGlmZnVzZUNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGF6aW11dGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBlbGV2YXRpb247ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BvdExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRaOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGxpbWl0aW5nQ29uZUFuZ2xlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDaGFubmVsIFNlbGVjdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0cgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9CID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB4Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB5Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRmxvb2RFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25YOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWTsgKilcblxuKCogICB2b2lkIHNldFN0ZERldmlhdGlvbihpbiBmbG9hdCBzdGREZXZpYXRpb25YLCBpbiBmbG9hdCBzdGREZXZpYXRpb25ZKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUltYWdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZU5vZGVFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gTW9ycGhvbG9neSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1g7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFT2Zmc2V0RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUaWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gVHVyYnVsZW5jZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSA9IDI7ICopXG5cbigqICAgLy8gU3RpdGNoIE9wdGlvbnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1NUSVRDSCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBudW1PY3RhdmVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2VlZDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gc3RpdGNoVGlsZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ3Vyc29yRWxlbWVudCAqKVxuYW5kIGN1cnNvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBRWxlbWVudCAqKVxuYW5kIGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB0YXJnZXQgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld0VsZW1lbnQgKilcbmFuZCB2aWV3RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2NyaXB0RWxlbWVudCAqKVxuYW5kIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6IFVJRXZlbnQgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBwcmV2aW91c1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgcHJldmlvdXNUcmFuc2xhdGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBuZXdTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IG5ld1RyYW5zbGF0ZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgKCogaW5oZXJpdCBlbGVtZW50VGltZUNvbnRyb2wgKilcbiAgbWV0aG9kIHRhcmdldEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTdGFydFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaW1wbGVEdXJhdGlvbiA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUVsZW1lbnQgKilcbmFuZCBhbmltYXRlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NldEVsZW1lbnQgKilcbmFuZCBzZXRFbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRlTW90aW9uRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01QYXRoRWxlbWVudCAqKVxuYW5kIG1QYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlQ29sb3JFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUNvbG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ICopXG5hbmQgYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RWxlbWVudCAqKVxuYW5kIGZvbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCopXG5hbmQgZ2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSEtlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR1ZLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVNyY0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VTcmNFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VVcmlFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlVXJpRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUZvcm1hdEVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZU5hbWVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlTmFtZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNZXRhZGF0YUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbWV0YWRhdGFFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9yZWlnbk9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnROUyB4bWxucyAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUEgZG9jIDogYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaCBkb2MgOiBhbHRHbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhEZWYgZG9jIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoZGVmXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoSXRlbSBkb2MgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoaXRlbVwiXG5cbmxldCBjcmVhdGVBbmltYXRlIGRvYyA6IGFuaW1hdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZUNvbG9yIGRvYyA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZWNvbG9yXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVNb3Rpb24gZG9jIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZW1vdGlvblwiXG5cbmxldCBjcmVhdGVBbmltYXRlVHJhbnNmb3JtIGRvYyA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG5sZXQgY3JlYXRlQ2lyY2xlIGRvYyA6IGNpcmNsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2lyY2xlXCJcblxubGV0IGNyZWF0ZUNsaXBQYXRoIGRvYyA6IGNsaXBQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjbGlwcGF0aFwiXG5cbigqIGxldCBjcmVhdGVDb2xvclByb2ZpbGUgZG9jIDogY29sb3JQcm9maWxlIHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbG9yLXByb2ZpbGVcIiAqKVxubGV0IGNyZWF0ZUN1cnNvciBkb2MgOiBjdXJzb3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImN1cnNvclwiXG5cbmxldCBjcmVhdGVEZWZzIGRvYyA6IGRlZnNFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlZnNcIlxuXG5sZXQgY3JlYXRlRGVzYyBkb2MgOiBkZXNjRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZXNjXCJcblxubGV0IGNyZWF0ZUVsbGlwc2UgZG9jIDogZWxsaXBzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZWxsaXBzZVwiXG5cbigqIGxldCBjcmVhdGVGZSogKilcbmxldCBjcmVhdGVGaWx0ZXIgZG9jIDogZmlsdGVyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWx0ZXJcIlxuXG5sZXQgY3JlYXRlRm9udCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZUZvcm1hdCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtZm9ybWF0XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlTmFtZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtbmFtZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZVNyYyBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2Utc3JjXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlVXJpIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS11cmlcIlxuXG5sZXQgY3JlYXRlRm9yZWlnbk9iamVjdCBkb2MgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JlaWduT2JqZWN0XCJcblxubGV0IGNyZWF0ZUcgZG9jIDogZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ1wiXG5cbmxldCBjcmVhdGVHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhcIlxuXG5sZXQgY3JlYXRlR2x5cGhSZWYgZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBocmVmXCJcblxubGV0IGNyZWF0ZWhrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGtlcm5cIlxuXG5sZXQgY3JlYXRlSW1hZ2UgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltYWdlXCJcblxubGV0IGNyZWF0ZUxpbmVFbGVtZW50IGRvYyA6IGxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVcIlxuXG5sZXQgY3JlYXRlTGluZWFyRWxlbWVudCBkb2MgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZWFyZ3JhZGllbnRcIlxuXG4oKiBsZXQgY3JlYXRlTWFya2VyIGRvYyA6IG1hcmtlckVsZW1lbnQgKilcbmxldCBjcmVhdGVNYXNrIGRvYyA6IG1hc2tFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hc2tcIlxuXG5sZXQgY3JlYXRlTWV0YURhdGEgZG9jIDogbWV0YWRhdGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFkYXRhXCJcblxubGV0IGNyZWF0ZU1pc3NpbmdHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWlzc2luZy1nbHlwaFwiXG5cbmxldCBjcmVhdGVNUGF0aCBkb2MgOiBtUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibXBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0aCBkb2MgOiBwYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXRoXCJcblxubGV0IGNyZWF0ZVBhdHRlcm4gZG9jIDogcGF0dGVybkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0dGVyblwiXG5cbmxldCBjcmVhdGVQb2x5Z29uIGRvYyA6IHBvbHlnb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlnb25cIlxuXG5sZXQgY3JlYXRlUG9seWxpbmUgZG9jIDogcG9seUxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlsaW5lXCJcblxubGV0IGNyZWF0ZVJhZGlhbGdyYWRpZW50IGRvYyA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyYWRpYWxncmFkaWVudFwiXG5cbmxldCBjcmVhdGVSZWN0IGRvYyA6IHJlY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJlY3RcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVNldCBkb2MgOiBzZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNldFwiXG5cbmxldCBjcmVhdGVTdG9wIGRvYyA6IHN0b3BFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0b3BcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZVN2ZyBkb2MgOiBzdmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN2Z1wiXG5cbmxldCBjcmVhdGVTd2l0Y2ggZG9jIDogc3dpdGNoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzd2l0Y2hcIlxuXG5sZXQgY3JlYXRlU3ltYm9sIGRvYyA6IHN5bWJvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ltYm9sXCJcblxubGV0IGNyZWF0ZVRleHRFbGVtZW50IGRvYyA6IHRleHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRcIlxuXG5sZXQgY3JlYXRlVGV4dHBhdGggZG9jIDogdGV4dFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRwYXRoXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVUcmVmIGRvYyA6IHRyZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyZWZcIlxuXG5sZXQgY3JlYXRlVHNwYW4gZG9jIDogdHNwYW5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRzcGFuXCJcblxubGV0IGNyZWF0ZVVzZSBkb2MgOiB1c2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVzZVwiXG5cbmxldCBjcmVhdGVWaWV3IGRvYyA6IHZpZXdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZXdcIlxuXG5sZXQgY3JlYXRldmtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2a2VyblwiXG5cbigqKioqKVxuXG5sZXQgc3ZnX2VsZW1lbnQgOiBlbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9TVkdFbGVtZW50XG5cbmxldCBkb2N1bWVudCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgOiBlbGVtZW50IHQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gZSAtPiBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBlIGVsc2UgcmFpc2UgTm90X2ZvdW5kKVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgKGUgOiAjRG9tLm5vZGUgSnMudCkgOiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgKGUgOiAjZWxlbWVudCB0KSB0YWcgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA6IGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhXCJcblxuICBsZXQgYWx0R2x5cGggZSA6IGFsdEdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiBlIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGRlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSBlIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhpdGVtXCJcblxuICBsZXQgYW5pbWF0ZSBlIDogYW5pbWF0ZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgZSA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVjb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gZSA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlbW90aW9uXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSBlIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCBvcHQgPVxuICAgIHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbiAgbGV0IGNpcmNsZSBlIDogY2lyY2xlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2lyY2xlXCJcblxuICBsZXQgY2xpcFBhdGggZSA6IGNsaXBQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2xpcHBhdGhcIlxuXG4gICgqIGxldCBDb2xvclByb2ZpbGUgZSA6IGNvbG9yUHJvZmlsZSB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY29sb3ItcHJvZmlsZVwiICopXG4gIGxldCBjdXJzb3IgZSA6IGN1cnNvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImN1cnNvclwiXG5cbiAgbGV0IGRlZnMgZSA6IGRlZnNFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZWZzXCJcblxuICBsZXQgZGVzYyBlIDogZGVzY0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlc2NcIlxuXG4gIGxldCBlbGxpcHNlIGUgOiBlbGxpcHNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZWxsaXBzZVwiXG5cbiAgKCogbGV0IEZlKiAqKVxuICBsZXQgZmlsdGVyIGUgOiBmaWx0ZXJFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmaWx0ZXJcIlxuXG4gIGxldCBmb250IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udFwiXG5cbiAgbGV0IGZvbnRGYWNlIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udEZhY2VGb3JtYXQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtZm9ybWF0XCJcblxuICBsZXQgZm9udEZhY2VOYW1lIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIGxldCBmb250RmFjZVNyYyBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250RmFjZVVyaSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb3JlaWduT2JqZWN0IGUgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9yZWlnbm9iamVjdFwiXG5cbiAgbGV0IGcgZSA6IGdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnXCJcblxuICBsZXQgZ2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhcIlxuXG4gIGxldCBnbHlwaFJlZiBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaHJlZlwiXG5cbiAgbGV0IGhrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJoa2VyblwiXG5cbiAgbGV0IGltYWdlIGUgOiBpbWFnZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImltYWdlXCJcblxuICBsZXQgbGluZUVsZW1lbnQgZSA6IGxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lXCJcblxuICBsZXQgbGluZWFyRWxlbWVudCBlIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lYXJncmFkaWVudFwiXG5cbiAgKCogbGV0IE1hcmtlciBlIDogbWFya2VyRWxlbWVudCAqKVxuICBsZXQgbWFzayBlIDogbWFza0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1hc2tcIlxuXG4gIGxldCBtZXRhRGF0YSBlIDogbWV0YWRhdGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtZXRhZGF0YVwiXG5cbiAgbGV0IG1pc3NpbmdHbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgbVBhdGggZSA6IG1QYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibXBhdGhcIlxuXG4gIGxldCBwYXRoIGUgOiBwYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0aFwiXG5cbiAgbGV0IHBhdHRlcm4gZSA6IHBhdHRlcm5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXR0ZXJuXCJcblxuICBsZXQgcG9seWdvbiBlIDogcG9seWdvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlnb25cIlxuXG4gIGxldCBwb2x5bGluZSBlIDogcG9seUxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHJhZGlhbGdyYWRpZW50IGUgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJhZGlhbGdyYWRpZW50XCJcblxuICBsZXQgcmVjdCBlIDogcmVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJlY3RcIlxuXG4gIGxldCBzY3JpcHQgZSA6IHNjcmlwdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNjcmlwdFwiXG5cbiAgbGV0IHNldCBlIDogc2V0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2V0XCJcblxuICBsZXQgc3RvcCBlIDogc3RvcEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0b3BcIlxuXG4gIGxldCBzdHlsZSBlIDogc3R5bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdHlsZVwiXG5cbiAgbGV0IHN2ZyBlIDogc3ZnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ZnXCJcblxuICBsZXQgc3dpdGNoIGUgOiBzd2l0Y2hFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzd2l0Y2hcIlxuXG4gIGxldCBzeW1ib2wgZSA6IHN5bWJvbEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN5bWJvbFwiXG5cbiAgbGV0IHRleHRFbGVtZW50IGUgOiB0ZXh0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dFwiXG5cbiAgbGV0IHRleHRwYXRoIGUgOiB0ZXh0UGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRwYXRoXCJcblxuICBsZXQgdGl0bGUgZSA6IHRpdGxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGl0bGVcIlxuXG4gIGxldCB0cmVmIGUgOiB0cmVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHJlZlwiXG5cbiAgbGV0IHRzcGFuIGUgOiB0c3BhbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRzcGFuXCJcblxuICBsZXQgdXNlIGUgOiB1c2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ1c2VcIlxuXG4gIGxldCB2aWV3IGUgOiB2aWV3RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmlld1wiXG5cbiAgbGV0IHZrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2a2VyblwiXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFNvdXJjZSAqKVxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG50eXBlIHN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0RXZlbnRJZCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbiAgKCogbWV0aG9kIHNvdXJjZSA6IHVuaXQgKilcbmVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50U291cmNlID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHVybCA6IHN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2l0aENyZWRlbnRpYWxzIGIgOiBvcHRpb25zIHQgPVxuICBsZXQgaW5pdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBpbml0IyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgYjtcbiAgaW5pdFxuXG5sZXQgZXZlbnRTb3VyY2UgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBldmVudFNvdXJjZV9vcHRpb25zID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgY29uc29sZSA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ182IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ183IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzggOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mbyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2FybiA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3IgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMSA6IGJvb2wgdCAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMiA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8zIDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNCA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNSA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpcnhtbCA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYWNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWQgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cEVuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWVFbmQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5leHRlcm5hbCBnZXRfY29uc29sZSA6IHVuaXQgLT4gY29uc29sZSB0ID0gXCJjYW1sX2pzX2dldF9jb25zb2xlXCJcblxubGV0IGNvbnNvbGUgPSBnZXRfY29uc29sZSAoKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zaXRpb25FcnJvckNvZGVcblxudHlwZSB3YXRjaElkXG5cbmNsYXNzIHR5cGUgY29vcmRpbmF0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxhdGl0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb25naXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlQWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkaW5nIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlZWQgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvb3JkcyA6IGNvb3JkaW5hdGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lc3RhbXAgOiBKcy5kYXRlIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgZW5hYmxlSGlnaEFjY3VyYWN5IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lb3V0IDogaW50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heGltdW1BZ2UgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIF9QRVJNSVNTSU9OX0RFTklFRF8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT1NJVElPTl9VTkFWQUlMQUJMRV8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9USU1FT1VUIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZ2VvbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGdldEN1cnJlbnRQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgd2F0Y2hQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB3YXRjaElkIEpzLm1ldGhcblxuICBtZXRob2QgY2xlYXJXYXRjaCA6IHdhdGNoSWQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Bvc2l0aW9uX29wdGlvbnMgKCkgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGdlb2xvY2F0aW9uID1cbiAgbGV0IHggPSBKcy5VbnNhZmUuZ2xvYmFsIyMubmF2aWdhdG9yIGluXG4gIGlmIEpzLk9wdGRlZi50ZXN0IHggdGhlbiB4IyMuZ2VvbG9jYXRpb24gZWxzZSB4XG5cbigqIHVuZGVmaW5lZCAqKVxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgZ2VvbG9jYXRpb25cbiIsImNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdW5kaW5nQ2xpZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RCb3VuZHMgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJhdGlvIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0ludGVyc2VjdGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGQgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkcyA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wdGlvbnMgKCkgOiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudCA9XG4gIEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlciA6XG4gICAgKCAgICggICBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudFxuICAgICAgICAgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnRcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTaGFyZWQgPSBzaWdcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICB2YWwgb2JqZWN0X29wdGlvbnMgOiB1bml0IC0+IG9iamVjdF9vcHRpb25zIEpzLnRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNoYXJlZCA6IFNoYXJlZCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvYmplY3Rfb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29sbGF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjb2xsYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2FnZSA9IEpzLnN0cmluZyBcInNvcnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBzZW5zaXRpdml0eSA9IEpzLnN0cmluZyBcInZhcmlhbnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBpZ25vcmVQdW5jdHVhdGlvbiA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1lcmljID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhc2VGaXJzdCA9IEpzLnN0cmluZyBcImZhbHNlXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFyZSA6IChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiBpbnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBEYXRlVGltZUZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5UGVyaW9kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXJDeWNsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0TWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgZGF0ZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjYWxlbmRhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXlQZXJpb2QgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIxMiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyQ3ljbGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZm9ybWF0TWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgd2Vla2RheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBlcmEgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgeWVhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtb250aCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW51dGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2Vjb25kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmVOYW1lID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMuZGF0ZSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5kYXRlIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTnVtYmVyRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYWN0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lTaWduIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG5vdGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNpZ25EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nTW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdQcmlvcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdJbmNyZW1lbnQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRyYWlsaW5nWmVyb0Rpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGNvbXBhY3REaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeVNpZ24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgbm90YXRpb24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNpZ25EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHN0eWxlID0gSnMuc3RyaW5nIFwiZGVjaW1hbFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdW5pdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdXNlR3JvdXBpbmcgPSBKcy5fdHJ1ZVxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ01vZGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdQcmlvcml0eSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ0luY3JlbWVudCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0cmFpbGluZ1plcm9EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQbHVyYWxSdWxlcyA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcGx1cmFsQ2F0ZWdvcmllcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBfdHlwZSA9IEpzLnN0cmluZyBcImNhcmRpbmFsXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2Qgc2VsZWN0IDogSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRsID0gb2JqZWN0XG4gIG1ldGhvZCBfQ29sbGF0b3IgOiBDb2xsYXRvci5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRGF0ZVRpbWVGb3JtYXQgOiBEYXRlVGltZUZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTnVtYmVyRm9ybWF0IDogTnVtYmVyRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QbHVyYWxSdWxlcyA6IFBsdXJhbFJ1bGVzLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENhbm9uaWNhbExvY2FsZXMgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGludGwgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGxcblxubGV0IGNvbGxhdG9yX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9Db2xsYXRvclxuXG5sZXQgZGF0ZVRpbWVGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0RhdGVUaW1lRm9ybWF0XG5cbmxldCBudW1iZXJGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX051bWJlckZvcm1hdFxuXG5sZXQgcGx1cmFsUnVsZXNfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX1BsdXJhbFJ1bGVzXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRsXG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR2FicmllbCBSYWRhbm5lIDxkcnVweW9nK2NhbWxAem9oby5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gIHR5cGUgKC0nYSwgJ2IpIGZ0XG4gIHZhbCBmbWFwIDogKCdhLCAnYikgZnQgLT4gJ2EgdCAtPiAnYiB0XG5cbiAgdHlwZSAnYSB0bGlzdFxuICB2YWwgbmlsIDogdW5pdCAtPiAnYSB0bGlzdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgdCAtPiAnYSB0bGlzdFxuICB2YWwgY29ucyA6ICdhIHQgLT4gJ2EgdGxpc3QgLT4gJ2EgdGxpc3RcbiAgdmFsIGFwcGVuZCA6ICdhIHRsaXN0IC0+ICdhIHRsaXN0IC0+ICdhIHRsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsICdiKSBmdCAtPiAnYSB0bGlzdCAtPiAnYiB0bGlzdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE5vV3JhcCA9XG4gIFQgd2l0aCB0eXBlICdhIHQgPSAnYVxuICAgICBhbmQgdHlwZSAnYSB0bGlzdCA9ICdhIGxpc3RcbiAgICAgYW5kIHR5cGUgKC0nYSwgJ2IpIGZ0ID0gJ2EgLT4gJ2JcblxubW9kdWxlIE5vV3JhcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuICB0eXBlICdhIHRsaXN0ID0gJ2EgbGlzdFxuICB0eXBlICgtJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG4gIGV4dGVybmFsIHJldHVybiA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgZm1hcCBmIDogICdhIHQgLT4gJ2IgdCA9IGZcblxuICBsZXQgbmlsICgpID0gW11cbiAgbGV0IHNpbmdsZXRvbiB4ID0gW3hdXG4gIGxldCBjb25zIHggeHMgPSB4Ojp4c1xuICBsZXQgYXBwZW5kIHggeT0geEB5XG4gIGxldCBtYXAgPSBMaXN0Lm1hcFxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDE4IEdhYnJpZWwgUmFkYW5uZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxudHlwZSBuYW1lID0gc3RyaW5nICogc3RyaW5nXG5cbigqKiBJbnB1dCAqKVxuXG50eXBlIHNpZ25hbCA9IFtcbiAgfCBgQ29tbWVudCBvZiBzdHJpbmdcbiAgfCBgRW5kX2VsZW1lbnRcbiAgfCBgU3RhcnRfZWxlbWVudCBvZiBuYW1lICogKG5hbWUgKiBzdHJpbmcpIGxpc3RcbiAgfCBgVGV4dCBvZiBzdHJpbmcgbGlzdFxuXVxuXG5leGNlcHRpb24gTWFsZm9ybWVkX3N0cmVhbVxuXG5tb2R1bGUgSW1wb3J0XG4gICAgKFhtbCA6IFhtbF9zaWdzLlQpXG49IHN0cnVjdFxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biBhIGIgLT4gWG1sLlcuKGNvbnMgKHJldHVybiBhKSBiKSlcbiAgICAgIGwgKFhtbC5XLm5pbCAoKSlcblxuICBsZXQgbWtfYXR0cmlicyBhdHRycyA9XG4gICAgKCogVE9ETzogVGhpcyBpcyBub3QgdmVyeSBzdHJ1Y3R1cmVkICopXG4gICAgbGV0IGYgKChfLG5hbWUpLCB2KSA9IFhtbC5zdHJpbmdfYXR0cmliIG5hbWUgKFhtbC5XLnJldHVybiB2KSBpblxuICAgIExpc3QubWFwIGYgYXR0cnNcblxuICBsZXQgcmVjIG1rIGNoaWxkcmVuIChzZXEgOiBzaWduYWwgU2VxLnQpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IENvbnMgKGBDb21tZW50IHMsIHEpIC0+XG4gICAgICBtayAoWG1sLmNvbW1lbnQgcyA6OiBjaGlsZHJlbikgcVxuICAgIHwgQ29ucyAoYFRleHQgcywgcSkgLT5cbiAgICAgIG1rIChMaXN0Lm1hcCAoZnVuIHggLT4gWG1sLnBjZGF0YSBAQCBYbWwuVy5yZXR1cm4geCkgcyBAIGNoaWxkcmVuKSBxXG4gICAgfCBDb25zIChgU3RhcnRfZWxlbWVudCAoKF8sIG5hbWUpLCBhdHRycyksIHEpIC0+XG4gICAgICBsZXQgYSA9IG1rX2F0dHJpYnMgYXR0cnMgaW5cbiAgICAgIGxldCBzdWJfY2hpbGRyZW4sIHJlc3QgPSBtayBbXSBxIGluXG4gICAgICBtayAoWG1sLm5vZGUgfmEgbmFtZSBzdWJfY2hpbGRyZW4gOjogY2hpbGRyZW4pIHJlc3RcbiAgICB8IENvbnMgKGBFbmRfZWxlbWVudCwgcmVzdCkgLT5cbiAgICAgIG9mX2xpc3QgKExpc3QucmV2IGNoaWxkcmVuKSwgcmVzdFxuICAgIHwgTmlsIC0+XG4gICAgICBvZl9saXN0IChMaXN0LnJldiBjaGlsZHJlbiksIFNlcS5lbXB0eVxuXG4gIGxldCBvZl9zZXEgc2VxID1cbiAgICBsZXQgbCwgcmVzdCA9IG1rIFtdIHNlcSBpblxuICAgIG1hdGNoIHJlc3QgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiBsXG4gICAgfCBfIC0+IHJhaXNlIE1hbGZvcm1lZF9zdHJlYW1cblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA4IFZpbmNlbnQgQmFsYXQsIE1hdXJpY2lvIEZlcm5hbmRlelxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5sZXQgaXNfY29udHJvbCBjID1cbiAgbGV0IGNjID0gQ2hhci5jb2RlIGMgaW5cbiAgKGNjIDw9IDggfHwgY2MgPSAxMSB8fCBjYyA9IDEyIHx8ICgxNCA8PSBjYyAmJiBjYyA8PSAzMSkgfHwgY2MgPSAxMjcpXG5cbmxldCBhZGRfdW5zYWZlX2NoYXIgYiA9IGZ1bmN0aW9uXG4gIHwgJzwnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImbHQ7XCJcbiAgfCAnPicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZndDtcIlxuICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gIHwgJyYnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gIHwgYyB3aGVuIGlzX2NvbnRyb2wgYyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImI1wiIDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfaW50IChDaGFyLmNvZGUgYykpIDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiO1wiXG4gIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG5cbmxldCBlbmNvZGVfdW5zYWZlX2NoYXIgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBTdHJpbmcuaXRlciAoYWRkX3Vuc2FmZV9jaGFyIGIpIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBlbmNvZGVfdW5zYWZlX2NoYXJfYW5kX2F0IHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgbGV0IGYgPSBmdW5jdGlvblxuICAgIHwgJ0AnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImIzY0O1wiXG4gICAgfCBjIC0+IGFkZF91bnNhZmVfY2hhciBiIGNcbiAgaW5cbiAgU3RyaW5nLml0ZXIgZiBzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgY29tcG9zZV9kZWNsID8odmVyc2lvbiA9IFwiMS4wXCIpID8oZW5jb2RpbmcgPSBcIlVURi04XCIpICgpID1cbiAgRm9ybWF0LnNwcmludGZcbiAgICB7fDw/eG1sIHZlcnNpb249XCIlc1wiIGVuY29kaW5nPVwiJXNcIj8+XFxufH1cbiAgICB2ZXJzaW9uIGVuY29kaW5nXG5cbmxldCBjb21wb3NlX2RvY3R5cGUgZHQgYXJncyA9XG4gIGxldCBwcF9hcmdzIGZtdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiIFBVQkxJQyAlYVwiXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOkZvcm1hdC5wcF9wcmludF9zcGFjZVxuICAgICAgICAgICAoZnVuIGZtdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIpKVxuICAgICAgICBsXG4gIGluXG4gIEZvcm1hdC5hc3ByaW50ZlxuICAgIFwiPCFET0NUWVBFICVzJWE+XCJcbiAgICBkdFxuICAgIHBwX2FyZ3MgYXJnc1xuXG5sZXQgcmVfZW5kX2NvbW1lbnQgPSBSZS4oY29tcGlsZSBAQCBhbHQgW1xuICBzZXEgWyBib3MgOyBzdHIgXCI+XCIgXSA7XG4gIHNlcSBbIGJvcyA7IHN0ciBcIi0+XCIgXSA7XG4gIHN0ciBcIi0tPlwiIDtcbiAgc3RyIFwiLS0hPlwiIDtcbl0pXG5sZXQgZXNjYXBlX2NvbW1lbnQgcyA9XG4gIGxldCBmIGcgPSBtYXRjaCBSZS5Hcm91cC5nZXQgZyAwIHdpdGhcbiAgICB8IFwiPlwiIC0+IFwiJmd0O1wiXG4gICAgfCBcIi0+XCIgLT4gXCItJmd0O1wiXG4gICAgfCBcIi0tPlwiIC0+IFwiLS0mZ3Q7XCJcbiAgICB8IFwiLS0hPlwiIC0+IFwiLS0hJmd0O1wiXG4gICAgfCBzIC0+IHNcbiAgaW5cbiAgUmUucmVwbGFjZSB+YWxsOnRydWUgcmVfZW5kX2NvbW1lbnQgfmYgc1xuXG4oKiBjb3BpZWQgZm9ybSBqc19vZl9vY2FtbDogY29tcGlsZXIvamF2YXNjcmlwdC5tbCAqKVxubGV0IHBwX251bWJlciBmbXQgdiA9XG4gIGlmIHYgPSBpbmZpbml0eVxuICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiSW5maW5pdHlcIlxuICBlbHNlIGlmIHYgPSBuZWdfaW5maW5pdHlcbiAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIi1JbmZpbml0eVwiXG4gIGVsc2UgaWYgdiA8PiB2XG4gIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOYU5cIlxuICBlbHNlXG4gICAgbGV0IHZpbnQgPSBpbnRfb2ZfZmxvYXQgdiBpblxuICAgICgqIGNvbXBpbGVyIDEwMDAgaW50byAxZTMgKilcbiAgICBpZiBmbG9hdF9vZl9pbnQgdmludCA9IHZcbiAgICB0aGVuXG4gICAgICBsZXQgcmVjIGRpdiBuIGkgPVxuICAgICAgICBpZiBuIDw+IDAgJiYgbiBtb2QgMTAgPSAwXG4gICAgICAgIHRoZW4gZGl2IChuLzEwKSAoc3VjYyBpKVxuICAgICAgICBlbHNlXG4gICAgICAgIGlmIGkgPiAyXG4gICAgICAgIHRoZW4gRm9ybWF0LmZwcmludGYgZm10IFwiJWRlJWRcIiBuIGlcbiAgICAgICAgZWxzZSBGb3JtYXQucHBfcHJpbnRfaW50IGZtdCB2aW50IGluXG4gICAgICBkaXYgdmludCAwXG4gICAgZWxzZVxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjEyZ1wiIHYgaW5cbiAgICAgIGlmIHYgPSBmbG9hdF9vZl9zdHJpbmcgczFcbiAgICAgIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgczFcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHMyID0gUHJpbnRmLnNwcmludGYgXCIlLjE1Z1wiIHYgaW5cbiAgICAgICAgaWYgdiA9IGZsb2F0X29mX3N0cmluZyBzMlxuICAgICAgICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHMyXG4gICAgICAgIGVsc2UgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiUuMThnXCIgdlxuXG5sZXQgc3RyaW5nX29mX251bWJlciB2ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcF9udW1iZXIgdlxuXG5tb2R1bGUgVXRmOCA9IHN0cnVjdFxuICB0eXBlIHV0ZjggPSBzdHJpbmdcblxuICBsZXQgbm9ybWFsaXplIHNyYyA9XG4gICAgbGV0IHdhcm4gPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzcmMpIGluXG4gICAgVXV0Zi5TdHJpbmcuZm9sZF91dGZfOFxuICAgICAgKGZ1biBfIF8gZCAtPlxuICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICB8IGBVY2hhciBjb2RlIC0+IFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgY29kZVxuICAgICAgICAgfCBgTWFsZm9ybWVkIF8gLT5cbiAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgVXV0Zi51X3JlcDtcbiAgICAgICAgICAgICAgIHdhcm46PXRydWUpXG4gICAgICAoKSBzcmM7XG4gICAgKEJ1ZmZlci5jb250ZW50cyBidWZmZXIsICF3YXJuKVxuXG4gIGxldCBub3JtYWxpemF0aW9uX25lZWRlZCBzcmMgPVxuICAgIGxldCByZWMgbG9vcCBzcmMgaSBsID1cbiAgICAgIGkgPCBsICYmXG4gICAgICBtYXRjaCBzcmMuW2ldIHdpdGhcbiAgICAgICgqIENoYXJhY3RlcnMgdGhhdCBuZWVkIHRvIGJlIGVuY29kZWQgaW4gSFRNTCAqKVxuICAgICAgfCAnXFwwMzQnIHwgJ1xcMDM4JyB8ICdcXDA2MCcgfCdcXDA2MicgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAoKiBBU0NJSSBjaGFyYWN0ZXJzICopXG4gICAgICB8ICdcXDAwOScgfCAnXFwwMTAnIHwgJ1xcMDEzJyB8ICdcXDAzMicuLidcXDEyNicgLT5cbiAgICAgICAgICBsb29wIHNyYyAoaSArIDEpIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICBpblxuICAgIGxvb3Agc3JjIDAgKFN0cmluZy5sZW5ndGggc3JjKVxuXG4gIGxldCBub3JtYWxpemVfaHRtbCBzcmMgPVxuICAgIGlmIG5vcm1hbGl6YXRpb25fbmVlZGVkIHNyYyB0aGVuIGJlZ2luXG4gICAgICBsZXQgd2FybiA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggc3JjKSBpblxuICAgICAgVXV0Zi5TdHJpbmcuZm9sZF91dGZfOFxuICAgICAgICAoZnVuIF8gXyBkIC0+XG4gICAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgICB8IGBVY2hhciB1IC0+XG4gICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gICAgICAgICAgICAgICB8IDM0IC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgIHwgMzggLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImYW1wO1wiXG4gICAgICAgICAgICAgICB8IDYwIC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmx0O1wiXG4gICAgICAgICAgICAgICB8IDYyIC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmd0O1wiXG4gICAgICAgICAgICAgICB8IGNvZGUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgdSA9XG4gICAgICAgICAgICAgICAgICAgICAoKiBJbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaHRtbFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGFyYWN0ZXJfZW5jb2RpbmdzX2luX0hUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sICopXG4gICAgICAgICAgICAgICAgICAgICBpZiAoKiBBLiBjb250cm9sIEMwICopXG4gICAgICAgICAgICAgICAgICAgICAgIChjb2RlIDw9IDMxICYmIGNvZGUgPD4gOSAmJiBjb2RlIDw+IDEwICYmIGNvZGUgPD4gMTMpXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEIuIERFTCArIGNvbnRyb2wgQzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSBpbnZhbGlkIGluIGh0bWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSBkaXNjb3VyYWdlZCBpbiB4bWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAweDg1IHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBsZXQncyBkaXNjYXJkIGl0IGFueXdheSAqKVxuICAgICAgICAgICAgICAgICAgICAgICB8fCAoY29kZSA+PSAxMjcgJiYgY29kZSA8PSAxNTkpXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEMuIFVURi0xNiBzdXJyb2dhdGUgaGFsdmVzIDogYWxyZWFkeSBkaXNjYXJkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdXV0ZiB8fCAoY29kZSA+PSAweEQ4MDAgJiYgY29kZSA8PSAweERGRkYpICopXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEQuIEJPTSByZWxhdGVkICopXG4gICAgICAgICAgICAgICAgICAgICAgIHx8IGNvZGUgbGFuZCAweEZGRkYgPSAweEZGRkVcbiAgICAgICAgICAgICAgICAgICAgICAgfHwgY29kZSBsYW5kIDB4RkZGRiA9IDB4RkZGRlxuICAgICAgICAgICAgICAgICAgICAgdGhlbiAod2Fybjo9dHJ1ZTsgVXV0Zi51X3JlcClcbiAgICAgICAgICAgICAgICAgICAgIGVsc2UgdVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciB1XG4gICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgfCBgTWFsZm9ybWVkIF8gLT5cbiAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgVXV0Zi51X3JlcDtcbiAgICAgICAgICAgICAgIHdhcm46PXRydWUpXG4gICAgICAgICgpIHNyYztcbiAgICAgIChCdWZmZXIuY29udGVudHMgYnVmZmVyLCAhd2FybilcbiAgICBlbmQgZWxzZVxuICAgICAgKHNyYywgZmFsc2UpXG5cbmVuZFxuXG5tb2R1bGUgdHlwZSBUYWdMaXN0ID0gc2lnIHZhbCBlbXB0eXRhZ3MgOiBzdHJpbmcgbGlzdCBlbmRcblxuKCoqIEZvcm1hdCBiYXNlZCBwcmludGVycyAqKVxuXG5sZXQgcHBfbm9vcCBfZm10IF8gPSAoKVxuXG5tb2R1bGUgTWFrZV9mbXRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKEkgOiBUYWdMaXN0KSA9XG5zdHJ1Y3RcbiAgb3BlbiBYbWxcblxuICBsZXQgb3Blbl9ib3ggaW5kZW50IGZtdCA9IGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9vcGVuX2JveCBmbXQgMCBlbHNlICgpXG4gIGxldCBjbG9zZV9ib3ggaW5kZW50IGZtdCA9IGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpIGVsc2UgKClcbiAgbGV0IHNwIGluZGVudCBmbXQgPVxuICAgIGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKCkgZWxzZSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIlxuICBsZXQgY3V0IGluZGVudCBmbXQgPVxuICAgIGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpIGVsc2UgKClcblxuICBtb2R1bGUgUyA9IFNldC5NYWtlKFN0cmluZylcbiAgbGV0IGlzX2VtcHR5dGFnID0gbWF0Y2ggSS5lbXB0eXRhZ3Mgd2l0aFxuICAgIHwgW10gLT4gZnVuIF8gLT4gZmFsc2VcbiAgICB8IGwgLT5cbiAgICAgIGxldCBzZXQgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBTLmFkZCB4IHMpIFMuZW1wdHkgbCBpblxuICAgICAgZnVuIHggLT4gUy5tZW0geCBzZXRcblxuICBsZXQgcHBfZW5jb2RlIGVuY29kZSBpbmRlbnQgZm10IHMgPVxuICAgIGxldCBzID0gZW5jb2RlIHMgaW5cbiAgICBpZiBpbmRlbnQgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFslYUBdXCIgRm9ybWF0LnBwX3ByaW50X3RleHQgc1xuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHNcblxuICBsZXQgcHBfc2VwIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBTcGFjZSAtPiBmdW4gZm10ICgpIC0+IHNwIGluZGVudCBmbXRcbiAgICB8IENvbW1hIC0+IGZ1biBmbXQgKCkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiLCV0XCIgKHNwIGluZGVudClcblxuICBsZXQgcHBfYXR0cmliX3ZhbHVlIGVuY29kZSBpbmRlbnQgZm10IGEgPSBtYXRjaCBhY29udGVudCBhIHdpdGhcbiAgICB8IEFGbG9hdCBmIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlYVxcXCJcIiBwcF9udW1iZXIgZlxuICAgIHwgQUludCBpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlZFxcXCJcIiBpXG4gICAgfCBBU3RyIHMgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIChlbmNvZGUgcylcbiAgICB8IEFTdHJMIChzZXAsIHNsaXN0KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVhXFxcIlwiXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOihwcF9zZXAgaW5kZW50IHNlcClcbiAgICAgICAgICAgKHBwX2VuY29kZSBlbmNvZGUgaW5kZW50KSkgc2xpc3RcblxuICBsZXQgcHBfYXR0cmliIGVuY29kZSBpbmRlbnQgZm10IGEgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdFxuICAgICAgXCIldCVzPSVhXCIgKHNwIGluZGVudCkgKGFuYW1lIGEpIChwcF9hdHRyaWJfdmFsdWUgZW5jb2RlIGluZGVudCkgYVxuXG4gIGxldCBwcF9hdHRyaWJzIGVuY29kZSBpbmRlbnQgPVxuICAgIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXA6cHBfbm9vcCAocHBfYXR0cmliIGVuY29kZSBpbmRlbnQpXG5cbiAgbGV0IHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50IGZtdCAodGFnLCBhdHRycykgPVxuICAgIG9wZW5fYm94IGluZGVudCBmbXQgO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzJWEldFwiIHRhZyAocHBfYXR0cmlicyBlbmNvZGUgaW5kZW50KSBhdHRycyAoY3V0IGluZGVudCk7XG4gICAgY2xvc2VfYm94IGluZGVudCBmbXRcblxuICBsZXQgcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRycyA9XG4gICAgaWYgaXNfZW1wdHl0YWcgdGFnIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwlYS8+XCIgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICBlbHNlIGJlZ2luXG4gICAgICBvcGVuX2JveCBpbmRlbnQgZm10IDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwlYT4ldDwvJXM+XCJcbiAgICAgICAgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIHRhZyA7XG4gICAgICBjbG9zZV9ib3ggaW5kZW50IGZtdFxuICAgIGVuZFxuXG4gIGxldCByZWMgcHBfdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgIHwgW10gLT4gcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRyc1xuICAgIHwgXyAtPlxuICAgICAgb3Blbl9ib3ggaW5kZW50IGZtdCA7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JXQlYT4ldCVhJXQldDwvJXM+XCJcbiAgICAgICAgKG9wZW5fYm94IGluZGVudClcbiAgICAgICAgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIChwcF9lbHRzIGVuY29kZSBpbmRlbnQpIGNoaWxkcmVuXG4gICAgICAgIChjbG9zZV9ib3ggaW5kZW50KVxuICAgICAgICAoY3V0IGluZGVudClcbiAgICAgICAgdGFnIDtcbiAgICAgIGNsb3NlX2JveCBpbmRlbnQgZm10XG5cbiAgYW5kIHBwX2VsdCBlbmNvZGUgaW5kZW50IGZtdCBlbHQgPSBtYXRjaCBjb250ZW50IGVsdCB3aXRoXG4gICAgfCBDb21tZW50IHRleHRlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8IS0tJXMtLT5cIiAoZXNjYXBlX2NvbW1lbnQgdGV4dGUpXG5cbiAgICB8IEVudGl0eSBlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCImJXM7XCIgZVxuXG4gICAgfCBQQ0RBVEEgdGV4dGUgLT5cbiAgICAgIHBwX2VuY29kZSBlbmNvZGUgaW5kZW50IGZtdCB0ZXh0ZVxuXG4gICAgfCBFbmNvZGVkUENEQVRBIHRleHRlIC0+XG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCB0ZXh0ZVxuXG4gICAgfCBOb2RlIChuYW1lLCB4aF9hdHRycywgeGhfdGFnbGlzdCkgLT5cbiAgICAgIHBwX3RhZyBlbmNvZGUgaW5kZW50IGZtdCBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3RcblxuICAgIHwgTGVhZiAobmFtZSwgeGhfYXR0cnMpIC0+XG4gICAgICBwcF9jbG9zZWR0YWcgZW5jb2RlIGluZGVudCBmbXQgbmFtZSB4aF9hdHRyc1xuXG4gICAgfCBFbXB0eSAtPiAoKVxuXG4gIGFuZCBwcF9lbHRzIGVuY29kZSBpbmRlbnQgPVxuICAgIEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGN1dCBpbmRlbnQgZm10KVxuICAgICAgKHBwX2VsdCBlbmNvZGUgaW5kZW50KVxuXG4gIGxldCBwcCA/KGVuY29kZT1lbmNvZGVfdW5zYWZlX2NoYXIpID8oaW5kZW50PWZhbHNlKSAoKSA9XG4gICAgcHBfZWx0IGVuY29kZSBpbmRlbnRcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkX2ZtdFxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoVHlwZWRfeG1sIDogWG1sX3NpZ3MuVHlwZWRfeG1sIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBQID0gTWFrZV9mbXQoWG1sKShUeXBlZF94bWwuSW5mbylcblxuICAoKiBBZGQgYW4geG1sbnMgdGFnIG9uIHRoZSBodG1sIGVsZW1lbnQgaWYgaXQncyBub3QgYWxyZWFkeSBwcmVzZW50ICopXG4gIGxldCBwcmVwYXJlX2RvY3VtZW50IGRvYyA9XG4gICAgbGV0IGRvYyA9IFR5cGVkX3htbC5kb2NfdG9lbHQgZG9jIGluXG4gICAgbWF0Y2ggWG1sLmNvbnRlbnQgZG9jIHdpdGhcbiAgICB8IFhtbC5Ob2RlIChuLCBhLCBjKSAtPlxuICAgICAgbGV0IGEgPVxuICAgICAgICBpZiBMaXN0LmV4aXN0cyAoZnVuIGEgLT4gWG1sLmFuYW1lIGEgPSBcInhtbG5zXCIpIGFcbiAgICAgICAgdGhlbiBhXG4gICAgICAgIGVsc2UgWG1sLnN0cmluZ19hdHRyaWIgXCJ4bWxuc1wiIFR5cGVkX3htbC5JbmZvLm5hbWVzcGFjZSA6OiBhXG4gICAgICBpblxuICAgICAgWG1sLm5vZGUgfmEgbiBjXG4gICAgfCBfIC0+IGRvY1xuXG4gIGxldCBwcF9lbHQgPyhlbmNvZGU9ZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGluZGVudD1mYWxzZSkgKCkgZm10IGZvcmV0ID1cbiAgICBQLnBwX2VsdCBlbmNvZGUgaW5kZW50IGZtdCAoVHlwZWRfeG1sLnRvZWx0IGZvcmV0KVxuXG4gIGxldCBwcCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgPyhpbmRlbnQ9ZmFsc2UpID9hZHZlcnQgKCkgZm10IGRvYyA9XG4gICAgRm9ybWF0LnBwX29wZW5fdmJveCBmbXQgMCA7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXNALFwiIFR5cGVkX3htbC5JbmZvLmRvY3R5cGUgO1xuXG4gICAgYmVnaW4gbWF0Y2ggYWR2ZXJ0IHdpdGhcbiAgICAgIHwgU29tZSBzIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwhLS0gJXMgLS0+QCxcIiBzXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBlbmQgO1xuXG4gICAgUC5wcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgKHByZXBhcmVfZG9jdW1lbnQgZG9jKSA7XG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCk7XG5cbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoSSA6IFRhZ0xpc3QpXG4gICAgKE8gOiBYbWxfc2lncy5PdXRwdXQpID1cbnN0cnVjdFxuXG4gIGxldCAoKyspID0gTy5jb25jYXRcblxuICBvcGVuIFhtbFxuXG4gIGxldCBzZXBhcmF0b3JfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFNwYWNlIC0+IFwiIFwiXG4gICAgfCBDb21tYSAtPiBcIiwgXCJcblxuICBsZXQgYXR0cmliX3ZhbHVlX3RvX3N0cmluZyBlbmNvZGUgYSA9IG1hdGNoIGFjb250ZW50IGEgd2l0aFxuICAgIHwgQUZsb2F0IGYgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCIgKHN0cmluZ19vZl9udW1iZXIgZilcbiAgICB8IEFJbnQgaSAtPiBQcmludGYuc3ByaW50ZiBcIlxcXCIlZFxcXCJcIiBpXG4gICAgfCBBU3RyIHMgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCIgKGVuY29kZSBzKVxuICAgIHwgQVN0ckwgKHNlcCwgc2xpc3QpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlxcXCIlc1xcXCJcIlxuICAgICAgICAoZW5jb2RlIChTdHJpbmcuY29uY2F0IChzZXBhcmF0b3JfdG9fc3RyaW5nIHNlcCkgc2xpc3QpKVxuXG4gIGxldCBhdHRyaWJfdG9fc3RyaW5nIGVuY29kZSBhID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPSVzXCIgKGFuYW1lIGEpIChhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIGVuY29kZSBhKVxuXG4gIGxldCByZWMgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzID0gbWF0Y2ggYXR0cnMgd2l0aFxuICAgIHwgW10gLT4gTy5lbXB0eVxuICAgIHwgYXR0cjo6cXVldWUgLT5cbiAgICAgIE8ucHV0IChcIiBcIl4gYXR0cmliX3RvX3N0cmluZyBlbmNvZGUgYXR0cilcbiAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBxdWV1ZVxuXG4gIGFuZCB4aF9wcmludF9jbG9zZWR0YWcgZW5jb2RlIHRhZyBhdHRycyA9XG4gICAgaWYgSS5lbXB0eXRhZ3MgPSBbXSB8fCBMaXN0Lm1lbSB0YWcgSS5lbXB0eXRhZ3NcbiAgICB0aGVuXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCBcIiAvPlwiKVxuICAgIGVsc2VcbiAgICAgIChPLnB1dCAoXCI8XCJedGFnKVxuICAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRyc1xuICAgICAgICsrIE8ucHV0IChcIj48L1wiXnRhZ15cIj5cIikpXG5cbiAgYW5kIHhoX3ByaW50X3RhZyBlbmNvZGUgdGFnIGF0dHJzIHRhZ2xpc3QgPVxuICAgIGlmIHRhZ2xpc3QgPSBbXVxuICAgIHRoZW4geGhfcHJpbnRfY2xvc2VkdGFnIGVuY29kZSB0YWcgYXR0cnNcbiAgICBlbHNlXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCBcIj5cIlxuICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHRhZ2xpc3RcbiAgICAgICArKyBPLnB1dCAoXCI8L1wiXnRhZ15cIj5cIikpXG5cbiAgYW5kIHByaW50X25vZGVzIGVuY29kZSBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3QgcXVldWUgPVxuICAgIHhoX3ByaW50X3RhZyBlbmNvZGUgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0XG4gICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICBhbmQgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgdGFnbGlzdCA9XG4gICAgbWF0Y2ggdGFnbGlzdCB3aXRoXG5cbiAgICB8IFtdIC0+IE8uZW1wdHlcblxuICAgIHwgZWx0IDo6IHF1ZXVlIC0+IG1hdGNoIGNvbnRlbnQgZWx0IHdpdGhcblxuICAgICAgfCBDb21tZW50IHRleHRlIC0+XG4gICAgICAgIE8ucHV0IChcIjwhLS1cIl4oZW5jb2RlIHRleHRlKV5cIi0tPlwiKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IEVudGl0eSBlIC0+XG4gICAgICAgIE8ucHV0IChcIiZcIl5lXlwiO1wiKSAoKiBubyBlbmNvZGluZyAqKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgICBPLnB1dCAoZW5jb2RlIHRleHRlKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IEVuY29kZWRQQ0RBVEEgdGV4dGUgLT5cbiAgICAgICAgTy5wdXQgdGV4dGVcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBOb2RlIChuYW1lLCB4aF9hdHRycywgeGhfdGFnbGlzdCkgLT5cbiAgICAgICAgcHJpbnRfbm9kZXMgZW5jb2RlIG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdCBxdWV1ZVxuXG4gICAgICB8IExlYWYgKG5hbWUsIHhoX2F0dHJzKSAtPlxuICAgICAgICBwcmludF9ub2RlcyBlbmNvZGUgbmFtZSB4aF9hdHRycyBbXSBxdWV1ZVxuXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgbGV0IHByaW50X2xpc3QgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpIGZvcmV0ID1cbiAgICBPLm1ha2UgKHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIGZvcmV0KVxuXG5lbmRcblxubW9kdWxlIE1ha2VfdHlwZWRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKVxuICAgIChPIDogWG1sX3NpZ3MuT3V0cHV0KSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgUCA9IE1ha2UoWG1sKShUeXBlZF94bWwuSW5mbykoTylcbiAgbGV0ICgrKykgPSBPLmNvbmNhdFxuXG4gIGxldCBwcmludF9saXN0ID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSBmb3JldCA9XG4gICAgTy5tYWtlIChQLnhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIChMaXN0Lm1hcCBUeXBlZF94bWwudG9lbHQgZm9yZXQpKVxuXG4gIGxldCBwcmludCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgPyhhZHZlcnQgPSBcIlwiKSBkb2MgPVxuICAgIGxldCBkb2MgPSBUeXBlZF94bWwuZG9jX3RvZWx0IGRvYyBpblxuICAgIGxldCBkb2MgPSBtYXRjaCBYbWwuY29udGVudCBkb2Mgd2l0aFxuICAgICAgfCBYbWwuTm9kZSAobiwgYSwgYykgLT5cbiAgICAgICAgbGV0IGEgPVxuICAgICAgICAgIGlmIExpc3QuZXhpc3RzIChmdW4gYSAtPiBYbWwuYW5hbWUgYSA9IFwieG1sbnNcIikgYVxuICAgICAgICAgIHRoZW4gYVxuICAgICAgICAgIGVsc2UgWG1sLnN0cmluZ19hdHRyaWIgXCJ4bWxuc1wiIFR5cGVkX3htbC5JbmZvLm5hbWVzcGFjZSA6OiBhXG4gICAgICAgIGluXG4gICAgICAgIFhtbC5ub2RlIH5hIG4gY1xuICAgICAgfCBfIC0+IGRvYyBpblxuICAgIE8ubWFrZVxuICAgICAgKE8ucHV0IFR5cGVkX3htbC5JbmZvLmRvY3R5cGVcbiAgICAgICArKyBPLnB1dCAoaWYgYWR2ZXJ0IDw+IFwiXCIgdGhlbiAoXCI8IS0tIFwiIF4gYWR2ZXJ0IF4gXCIgLS0+XFxuXCIpIGVsc2UgXCJcXG5cIilcbiAgICAgICArKyBQLnhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIFtkb2NdKVxuXG5lbmRcblxubW9kdWxlIFNpbXBsZV9vdXRwdXQoTSA6IHNpZyB2YWwgcHV0OiBzdHJpbmcgLT4gdW5pdCBlbmQpID0gc3RydWN0XG4gIHR5cGUgb3V0ID0gdW5pdFxuICB0eXBlIG0gPSB1bml0IC0+IHVuaXRcbiAgbGV0IGVtcHR5ICgpID0gKClcbiAgbGV0IGNvbmNhdCBmMSBmMiAoKSA9IGYxICgpOyBmMiAoKVxuICBsZXQgcHV0IHMgKCkgPSBNLnB1dCBzXG4gIGxldCBtYWtlIGYgPSBmICgpXG5lbmRcblxubW9kdWxlIE1ha2Vfc2ltcGxlXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChJIDogVGFnTGlzdCkgPVxuc3RydWN0XG5cbiAgbGV0IHByaW50X2xpc3Qgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID0gTWFrZShYbWwpKEkpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50X2xpc3RcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkX3NpbXBsZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoVHlwZWRfeG1sIDogWG1sX3NpZ3MuVHlwZWRfeG1sIHdpdGggIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG5zdHJ1Y3RcblxuICBsZXQgcHJpbnRfbGlzdCB+b3V0cHV0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgTWFrZV90eXBlZChYbWwpKFR5cGVkX3htbCkoU2ltcGxlX291dHB1dChzdHJ1Y3QgbGV0IHB1dCA9IG91dHB1dCBlbmQpKSBpblxuICAgIE0ucHJpbnRfbGlzdFxuXG4gIGxldCBwcmludCB+b3V0cHV0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgTWFrZV90eXBlZChYbWwpKFR5cGVkX3htbCkoU2ltcGxlX291dHB1dChzdHJ1Y3QgbGV0IHB1dCA9IG91dHB1dCBlbmQpKSBpblxuICAgIE0ucHJpbnRcblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTWFrZShYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSkgPSBzdHJ1Y3RcblxuICBvcGVuIFhtbFxuXG4gICgqKiBJdGVyYXRvcnMgKilcblxuICBsZXQgYW1hcDEgZiBuID1cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfIC0+IG5cbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+IGxlYWYgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPiBub2RlIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZSBlbHRzXG5cbiAgbGV0IHJlYyBhbWFwIGYgbiA9XG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXyAtPiBuXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBsZWFmIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZVxuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgIG5vZGUgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lIChMaXN0Lm1hcCAoYW1hcCBmKSBlbHRzKVxuXG4gIGxldCByZWMgYWRkX2Zsb2F0X2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZV1cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfZmxvYXRfYXR0cmliIGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBRmxvYXQgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IGZsb2F0X2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfaW50X2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtpbnRfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgaW50X2F0dHJpYiBuYW1lIHZhbHVlIDo6IHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IGFkZF9pbnRfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCByZWMgcm1fYXR0cmliIGlzX2F0dHJpYiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBybV9hdHRyaWIgaXNfYXR0cmliIHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IHJtX2F0dHJpYiBpc19hdHRyaWIgdGFpbFxuXG4gIGxldCBtYXBfaW50X2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQUludCB2YWx1ZSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gaW50X2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlIDo6IHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IGFkZF9zdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfc3RyaW5nX2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ciB2YWx1ZSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gc3RyaW5nX2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtzcGFjZV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXV1cbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChTcGFjZSwgdmFsdWVzJykgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBzcGFjZV9zZXBfYXR0cmliIG5hbWUgKHZhbHVlIDo6IHZhbHVlcycpIDo6IHRhaWxcbiAgICAgIHwgXyB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIHNwYWNlX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdIDo6IHRhaWxcbiAgICAgIHwgXyAtPiBoZWFkIDo6IGFkZF9zcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCByZWMgYWRkX2NvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbY29tbWFfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV1dXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoQ29tbWEsIHZhbHVlcycpIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgY29tbWFfc2VwX2F0dHJpYiBuYW1lICh2YWx1ZSA6OiB2YWx1ZXMnKSA6OiB0YWlsXG4gICAgICB8IF8gd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBjb21tYV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXSA6OiB0YWlsXG4gICAgICB8IF8gLT4gaGVhZCA6OiBhZGRfY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIHJtX2F0dHJpYl9mcm9tX2xpc3QgaXNfYXR0cmliIGlzX3ZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoc2VwLCB2YWx1ZXMpIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBMaXN0LmZpbHRlciAoZnVuIHYgLT4gbm90IChpc192YWx1ZSB2KSkgdmFsdWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IHRhaWxcbiAgICAgICAgICB8IHZhbHVlcycgLT5cbiAgICAgICAgICAgIG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICAgICB8IFNwYWNlIC0+IHNwYWNlX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIHZhbHVlcycgOjogdGFpbFxuICAgICAgICAgICAgfCBDb21tYSAtPiBjb21tYV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSB2YWx1ZXMnIDo6IHRhaWxcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gaGVhZCA6OiBybV9hdHRyaWJfZnJvbV9saXN0IGlzX2F0dHJpYiBpc192YWx1ZSB0YWlsXG5cbiAgbGV0IG1hcF9zdHJpbmdfYXR0cmliX2luX2xpc3QgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChzZXAsIHZhbHVlcykgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICAgfCBDb21tYSAtPiBjb21tYV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSAoTGlzdC5tYXAgZiB2YWx1ZXMpXG4gICAgICAgICAgfCBTcGFjZSAtPiBzcGFjZV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSAoTGlzdC5tYXAgZiB2YWx1ZXMpXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgZm9sZCBvZl9lbXB0eSBvZl9jb21tZW50IG9mX3R4dCBvZl9lbmNvZGVkcGNkYXRhIG9mX2VudGl0eVxuICAgICAgb2ZfbGVhZiBvZl9ub2RlIG4gPVxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCBFbXB0eSAtPiBvZl9lbXB0eSAoKVxuICAgIHwgQ29tbWVudCBzIC0+IG9mX2NvbW1lbnQgc1xuICAgIHwgUENEQVRBIHMgLT4gb2ZfdHh0IHNcbiAgICB8IEVuY29kZWRQQ0RBVEEgcyAtPiBvZl9lbmNvZGVkcGNkYXRhIHNcbiAgICB8IEVudGl0eSBzIC0+IG9mX2VudGl0eSBzXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBvZl9sZWFmIG5hbWUgYXR0cmlic1xuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgIG9mX25vZGUgbmFtZSBhdHRyaWJzXG4gICAgICAgIChMaXN0Lm1hcCAoZm9sZCBvZl9lbXB0eSBvZl9jb21tZW50IG9mX3R4dCBvZl9lbmNvZGVkcGNkYXRhIG9mX2VudGl0eSBvZl9sZWFmIG9mX25vZGUpIGVsdHMpXG5cbiAgbGV0IGFsbF9lbnRpdGllcyBlbHQgPVxuICAgIGxldCBmIF8gPSBbXSBpblxuICAgIGZvbGQgZiBmIGYgZiBmXG4gICAgICAoZnVuIF9lbmFtZSBfYXR0cmlicyAtPiBbXSkgKGZ1biBfZW5hbWUgX2F0dHJpYnMgZWx0cyAtPiBMaXN0LmZsYXR0ZW4gZWx0cylcbiAgICAgIGVsdFxuXG4gIGxldCBmbGF0bWFwIGYgbCA9IExpc3QuY29uY2F0IChMaXN0Lm1hcCBmIGwpXG5cbiAgbGV0IHRyYW5zbGF0ZSByb290X2xlYWYgcm9vdF9ub2RlIHN1Yl9sZWFmIHN1Yl9ub2RlIHVwZGF0ZV9zdGF0ZSBzdGF0ZSBuID1cbiAgICBsZXQgcmVjIHRyYW5zbGF0ZScgc3RhdGUgIG4gPVxuICAgICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICAgIHwgKEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXykgLT4gW25dXG4gICAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+XG4gICAgICAgIHN1Yl9sZWFmIHN0YXRlIG5hbWUgYXR0cmlic1xuICAgICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgICBzdWJfbm9kZSBzdGF0ZSBuYW1lIGF0dHJpYnNcbiAgICAgICAgICAoZmxhdG1hcCAodHJhbnNsYXRlJyAodXBkYXRlX3N0YXRlIG5hbWUgYXR0cmlicyBzdGF0ZSkpIGVsdHMpXG4gICAgaW5cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgKEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXykgLT4gblxuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT5cbiAgICAgIHJvb3RfbGVhZiBuYW1lIGF0dHJpYnNcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICByb290X25vZGUgbmFtZSBhdHRyaWJzIChmbGF0bWFwICh0cmFuc2xhdGUnIHN0YXRlKSBlbHRzKVxuXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgU2ltb24gQ2FzdGVsbGFuXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgQ2VjaWxlIEhlcmJlbGluXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgVmluY2VudCBCYWxhdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxuKCoqIFR5cGUgaW5zdGFudGlhdGlvbnMgZm9yIFNWRyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBiYXNpYyBkYXRhIHR5cGVzIGZvciBkYXRhLCBhdHRyaWJ1dGVzXG4gICAgYW5kIGVsZW1lbnQgb2NjdXJyaW5nIGluIFNWRyBkb2N1bWVudHMuXG4gICAgSXQgaXMgYmFzZWQgb24gdGhlIHNwZWNpZmljYXRpb24gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy8uXG5cbiAgICBUaGlzIG1vZHVsZSBpcyBleHBlcmltZW50YWwsIGl0IG1heSBsYWNrIG9mIHNvbWUgYXR0cmlidXRlcyxcbiAgICBhbmQgdGhlIGludGVyZmFjZSBpcyB2ZXJ5IGxvdyBsZXZlbCBhbmQgZG8gbm90IHRha2UgZGVlcGx5IGludG8gYWNjb3VudFxuICAgIHRoZSBuZWVkcyBvZiBTVkcgZWxlbWVudHMuICopXG5cbm9wZW4gU3ZnX3R5cGVzXG5cbm9wZW4gVW5pdFxuXG5sZXQgc3RyaW5nX29mX2lyaSB4ID0gUHJpbnRmLnNwcmludGYgXCJ1cmwoJXMpXCIgeFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdFxuXG4gICgqIGxldCByZWwgeCAgICAgPSAoeCwgTm9uZSkgKilcbiAgKCogbGV0IGRlZyB4ICAgICA9ICh4LCBTb21lIGBEZWcpICopXG4gICgqIGxldCBncmFkIHggICAgPSAoeCwgU29tZSBgR3JhZCkgKilcbiAgKCogbGV0IHJhZCB4ICAgICA9ICh4LCBTb21lIGBSYWQpICopXG4gICgqIGxldCBtcyB4ICAgICAgPSAoeCwgU29tZSBgTXMpICopXG4gICgqIGxldCBzIHggICAgICAgPSAoeCwgU29tZSBgUykgKilcbiAgKCogbGV0IGVtIHggICAgICA9ICh4LCBTb21lIGBFbSkgKilcbiAgKCogbGV0IGV4IHggICAgICA9ICh4LCBTb21lIGBFeCkgKilcbiAgKCogbGV0IHB4IHggICAgICA9ICh4LCBTb21lIGBQeCkgKilcbiAgKCogbGV0IGluXyB4ICAgICA9ICh4LCBTb21lIGBJbikgKilcbiAgKCogbGV0IGNtIHggICAgICA9ICh4LCBTb21lIGBDbSkgKilcbiAgKCogbGV0IG1tIHggICAgICA9ICh4LCBTb21lIGBNbSkgKilcbiAgKCogbGV0IHB0IHggICAgICA9ICh4LCBTb21lIGBQdCkgKilcbiAgKCogbGV0IHBjIHggICAgICA9ICh4LCBTb21lIGBQYykgKilcbiAgKCogbGV0IHBlcmNlbnQgeCA9ICh4LCBTb21lIGBQZXJjZW50KSAqKVxuICAoKiBsZXQgaHogeCAgICAgID0gKHgsIFNvbWUgYEh6KSAqKVxuICAoKiBsZXQga2h6IHggICAgID0gKHgsIFNvbWUgYEtIeikgKilcblxuICBsZXQgdG9fc3RyaW5nIGYgKG4sIHVuaXQpID0gUHJpbnRmLnNwcmludGYgXCIlZyVzXCIgbiBiZWdpblxuICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgIHwgU29tZSB1bml0IC0+IGYgdW5pdFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gIGVuZFxuXG4gIGxldCBhbmdsZV9uYW1lcyA9IGZ1bmN0aW9uIGBEZWcgLT4gXCJkZWdcIiB8IGBHcmFkIC0+IFwiZ3JhZFwiIHwgYFJhZCAtPiBcInJhZFwiXG4gIGxldCBzdHJpbmdfb2ZfYW5nbGUgYSA9IHRvX3N0cmluZyBhbmdsZV9uYW1lcyBhXG5cbiAgKCogbGV0IHRpbWVfbmFtZXMgPSBmdW5jdGlvbiBgTXMgLT4gXCJtc1wiIHwgYFMgLT4gXCJzXCIgKilcbiAgKCogbGV0IHN0cmluZ19vZl90aW1lIGEgPSB0b19zdHJpbmcgdGltZV9uYW1lcyBhICopXG5cbiAgbGV0IGxlbmd0aF9uYW1lcyA9IGZ1bmN0aW9uXG4gICAgfCBgRW0gLT4gXCJlbVwiIHwgYEV4IC0+IFwiZXhcIiB8IGBQeCAtPiBcInB4XCIgfCBgSW4gLT4gXCJpblwiIHwgYENtIC0+IFwiY21cIlxuICAgIHwgYE1tIC0+IFwibW1cIiB8IGBQdCAtPiBcInB0XCIgfCBgUGMgLT4gXCJwY1wiIHwgYFBlcmNlbnQgLT4gXCIlXCJcbiAgbGV0IHN0cmluZ19vZl9sZW5ndGggKGE6IGxlbmd0aCkgPSB0b19zdHJpbmcgbGVuZ3RoX25hbWVzIGFcblxuICAoKiBsZXQgZnJlcV9uYW1lcyA9IGZ1bmN0aW9uIGBIeiAtPiBcIkh6XCIgfCBgS0h6IC0+IFwia0h6XCIgKilcbiAgKCogbGV0IHN0cmluZ19vZl9mcmVxIGEgPSB0b19zdHJpbmcgZnJlcV9uYW1lcyBhICopXG5cbmVuZFxuXG5vcGVuIFVuaXRcblxubGV0IG9wdF9jb25jYXQgPyhzZXA9XCIgXCIpIHMgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IHMgXiBzZXAgXiAoZiB4KVxuICB8IE5vbmUgLT4gc1xuXG5sZXQgbGlzdCA/KHNlcD1cIiBcIikgZiBsID0gU3RyaW5nLmNvbmNhdCBzZXAgKExpc3QubWFwIGYgbClcblxubGV0IHN0cmluZ19vZl9jb2xvciBzID0gc1xuKCogRm9yIG5vdyBqdXN0IHN0cmluZywgd2UgbWF5IHdhbnQgc29tZXRoaW5nIGJldHRlciBpbiB0aGUgZnV0dXJlLiAqKVxuXG5sZXQgc3RyaW5nX29mX2ljY2NvbG9yIHMgPSBzXG5cbmxldCBzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgPSBmdW5jdGlvblxuICB8IGBOb25lIC0+IFwibm9uZVwiXG4gIHwgYEN1cnJlbnRDb2xvciAtPiBcImN1cnJlbnRDb2xvclwiXG4gIHwgYENvbG9yIChjLCBpY2MpIC0+IG9wdF9jb25jYXQgKHN0cmluZ19vZl9jb2xvciBjKSBzdHJpbmdfb2ZfaWNjY29sb3IgaWNjXG5cbmxldCBzdHJpbmdfb2ZfcGFpbnQgPSBmdW5jdGlvblxuICB8IGBJY2MgKGlyaSwgTm9uZSkgLT4gc3RyaW5nX29mX2lyaSBpcmlcbiAgfCBgSWNjIChpcmksIFNvbWUgYikgLT5cbiAgICAoc3RyaW5nX29mX2lyaSBpcmkpIF5cIiBcIl4gKHN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyBiKVxuICB8ICNwYWludF93aGl0b3V0X2ljYyBhcyBjIC0+IHN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyBjXG5cbmxldCBzdHJpbmdfb2ZfZmlsbF9ydWxlID0gZnVuY3Rpb25cbiAgfCBgTm9uemVybyAtPiBcIm5vbnplcm9cIlxuICB8IGBFdmVub2RkIC0+IFwiZXZlbm9kZFwiXG5cbm1vZHVsZSBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnNcblxuICAgIChYbWwgOiBYbWxfc2lncy5UKVxuICAgIChDIDogU3ZnX3NpZ3MuV3JhcHBlZF9mdW5jdGlvbnMgd2l0aCBtb2R1bGUgWG1sID0gWG1sKSA9XG5cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcbiAgbW9kdWxlIFcgPSBYbWwuV1xuXG4gIG1vZHVsZSBJbmZvID0gc3RydWN0XG4gICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwiaW1hZ2Uvc3ZnK3htbFwiXG4gICAgbGV0IGFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMgPSBbXVxuICAgIGxldCBlbXB0eXRhZ3MgPSBbXVxuICAgIGxldCB2ZXJzaW9uID0gXCJTVkcgMS4xXCJcbiAgICBsZXQgc3RhbmRhcmQgPSBcImh0dHA6Ly93d3cudzMub3JnL1RSL3N2ZzExL1wiXG4gICAgbGV0IG5hbWVzcGFjZSA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIGxldCBkb2N0eXBlID1cbiAgICAgIFhtbF9wcmludC5jb21wb3NlX2RvY3R5cGVcInN2Z1wiXG4gICAgICAgIFtcIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOXCI7XG4gICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZFwiXVxuICBlbmRcblxuICB0eXBlIHVyaSA9IFhtbC51cmlcbiAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuICBsZXQgdXJpX29mX3N0cmluZyA9IFhtbC51cmlfb2Zfc3RyaW5nXG5cblxuICAoKiBNYW5kYXRvcnkgWE1MIHN0dWZmLiAqKVxuXG4gIHR5cGUgJ2EgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gIHR5cGUgKydhIGVsdCA9IFhtbC5lbHRcblxuICB0eXBlICdhIHdyYXAgPSAnYSBXLnRcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgdHlwZSAoJ2EsICdiKSBudWxsYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiB1bml0IC0+ICdiIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHVuYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAnYiBlbHQgd3JhcCAtPiAnYyBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBzdGFyID1cbiAgICA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICgnYiBlbHQpIGxpc3Rfd3JhcCAtPiAnYyBlbHRcblxuICBsZXQgdG90IHggPSB4XG5cbiAgbGV0IHRvdGwgeCA9IHhcblxuICBsZXQgdG9lbHQgeCA9IHhcblxuICBsZXQgdG9lbHRsIHggPSB4XG5cbiAgbGV0IHRvX2F0dHJpYiB4ID0geFxuXG4gIGxldCBudWxsYXJ5IHRhZyA/YSAoKSA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLm5pbCAoKSlcblxuICBsZXQgdW5hcnkgdGFnID9hIGVsdCA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLnNpbmdsZXRvbiBlbHQpXG5cbiAgbGV0IHN0YXIgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gIHR5cGUgYWx0Z2x5cGhkZWZfY29udGVudCA9XG4gICAgWyBgUmVmIG9mIChnbHlwaHJlZiBlbHQpIGxpc3RcbiAgICB8IGBJdGVtIG9mIChhbHRnbHlwaGl0ZW0gZWx0KSBsaXN0XG4gICAgXVxuXG4gIGxldCB0b194bWxhdHRyaWJzIHggPSB4XG5cbiAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgKCogd3JhcCBDIG1vZHVsZSBmdW5jdGlvbnMgKilcblxuICBsZXQgc3RyaW5nX29mX2Nvb3JkID0gQy5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGggPSBDLnN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aHMgPSBDLnN0cmluZ19vZl9sZW5ndGhzXG5cbiAgKCogQ3VzdG9tIFhNTCBhdHRyaWJ1dGVzICopXG5cbiAgbGV0IHVzZXJfYXR0cmliIGYgbmFtZSB2ID1cbiAgICBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChXLmZtYXAgZiB2KVxuXG4gIGxldCBudW1iZXJfYXR0cmliID0gZmxvYXRfYXR0cmliXG5cbiAgKCogZm9yIG5vdyBzdHJpbmdfYXR0cmliLCB3ZSBtYXkgd2FudCBzb21ldGhpbmcgYmV0dGVyIGluIHRoZVxuICAgICBmdXR1cmUuICopXG4gIGxldCBjb2xvcl9hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICgqIFNWRyBhdHRyaWJ1dGVzICopXG5cbiAgbGV0IG1ldGFkYXRhID9hIGNoaWxkcmVuID0gWG1sLm5vZGUgP2EgXCJtZXRhZGF0YVwiIGNoaWxkcmVuXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgP2EgY2hpbGRyZW4gPSBYbWwubm9kZSA/YSBcImZvcmVpZ25PYmplY3RcIiBjaGlsZHJlblxuXG4gIGxldCB0eHQgcyA9IFhtbC5wY2RhdGEgc1xuICBsZXQgcGNkYXRhID0gdHh0XG5cbiAgKCogZ2VuZXJhdGVkICopXG4gIGxldCBhX3ZlcnNpb24gPSBzdHJpbmdfYXR0cmliIFwidmVyc2lvblwiXG5cbiAgbGV0IGFfYmFzZVByb2ZpbGUgPSBzdHJpbmdfYXR0cmliIFwiYmFzZVByb2ZpbGVcIlxuXG4gIGxldCBhX3ggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4XCJcblxuICBsZXQgYV95ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieVwiXG5cbiAgbGV0IGFfd2lkdGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwid2lkdGhcIlxuXG4gIGxldCBhX2hlaWdodCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJoZWlnaHRcIlxuXG4gIGxldCBhX3ByZXNlcnZlQXNwZWN0UmF0aW8gPVxuICAgIHN0cmluZ19hdHRyaWIgXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCJcblxuICBsZXQgYV9jb250ZW50U2NyaXB0VHlwZSA9XG4gICAgc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRTY3JpcHRUeXBlXCJcblxuICBsZXQgYV9jb250ZW50U3R5bGVUeXBlID0gc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRTdHlsZVR5cGVcIlxuXG4gIGxldCBhX3pvb21BbmRQYW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ6b29tQW5kU3BhblwiIHhcblxuICBsZXQgYV9ocmVmID0gc3RyaW5nX2F0dHJpYiBcImhyZWZcIlxuXG4gIGxldCBhX3hsaW5rX2hyZWYgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6aHJlZlwiXG5cbiAgbGV0IGFfcmVxdWlyZWRGZWF0dXJlcyA9XG4gICAgWG1sLnNwYWNlX3NlcF9hdHRyaWIgXCJyZXF1aXJlZEZlYXR1cmVzXCJcblxuICBsZXQgYV9yZXF1aXJlZEV4dGVuc2lvbnMgPVxuICAgIFhtbC5zcGFjZV9zZXBfYXR0cmliIFwicmVxdWlyZWRFeHRlbnNpb25cIlxuXG4gIGxldCBhX3N5c3RlbUxhbmd1YWdlID1cbiAgICBYbWwuY29tbWFfc2VwX2F0dHJpYiBcInN5c3RlbUxhbmd1YWdlXCJcblxuICBsZXQgYV9leHRlcm5hbFJlc3NvdXJjZXNSZXF1aXJlZCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYm9vbCBcImV4dGVybmFsUmVzc291cmNlc1JlcXVpcmVkXCJcblxuICBsZXQgYV9pZCA9IHN0cmluZ19hdHRyaWIgXCJpZFwiXG5cbiAgbGV0IGFfdXNlcl9kYXRhIG5hbWUgPSBzdHJpbmdfYXR0cmliIChcImRhdGEtXCIgXiBuYW1lKVxuXG4gIGxldCBhX3htbF9iYXNlID0gc3RyaW5nX2F0dHJpYiBcInhtbDpiYXNlXCJcblxuICBsZXQgYV94bWxfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6bGFuZ1wiXG5cbiAgbGV0IGFfeG1sX3NwYWNlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sOnNwYWNlXCIgeFxuXG4gIGxldCBhX3R5cGUgPSBzdHJpbmdfYXR0cmliIFwidHlwZVwiXG5cbiAgbGV0IGFfbWVkaWEgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcIm1lZGlhXCJcblxuICBsZXQgYV94bGlua190aXRsZSA9IHN0cmluZ19hdHRyaWIgXCJ4bGluazp0aXRsZVwiXG5cbiAgbGV0IGFfY2xhc3MgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYiBcImNsYXNzXCJcblxuICBsZXQgYV9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJzdHlsZVwiXG5cbiAgbGV0IGFfdHJhbnNmb3JtID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfdHJhbnNmb3JtcyBcInRyYW5zZm9ybVwiXG5cbiAgbGV0IGFfdmlld0JveCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ZvdXJmbG9hdHMgXCJ2aWV3Qm94XCJcblxuICBsZXQgYV9kID0gc3RyaW5nX2F0dHJpYiBcImRcIlxuXG4gIGxldCBhX3BhdGhMZW5ndGggPSBudW1iZXJfYXR0cmliIFwicGF0aExlbmd0aFwiXG5cbiAgbGV0IGFfcnggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwicnhcIlxuXG4gIGxldCBhX3J5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJ5XCJcblxuICBsZXQgYV9jeCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJjeFwiXG5cbiAgbGV0IGFfY3kgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiY3lcIlxuXG4gIGxldCBhX3IgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiclwiXG5cbiAgbGV0IGFfeDEgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4MVwiXG5cbiAgbGV0IGFfeTEgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ5MVwiXG5cbiAgbGV0IGFfeDIgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4MlwiXG5cbiAgbGV0IGFfeTIgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ5MlwiXG5cbiAgbGV0IGFfcG9pbnRzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY29vcmRzIFwicG9pbnRzXCJcblxuICBsZXQgYV94X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcInhcIlxuXG4gIGxldCBhX3lfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwieVwiXG5cbiAgbGV0IGFfZHggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkeFwiXG5cbiAgbGV0IGFfZHkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkeVwiXG5cbiAgbGV0IGFfZHhfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwiZHhcIlxuXG4gIGxldCBhX2R5X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcImR5XCJcblxuICBsZXQgYV9sZW5ndGhBZGp1c3QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJsZW5ndGhBZGp1c3RcIiB4XG5cbiAgbGV0IGFfdGV4dExlbmd0aCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJ0ZXh0TGVuZ3RoXCJcblxuICBsZXQgYV90ZXh0X2FuY2hvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtYW5jaG9yXCIgeFxuXG4gIGxldCBhX3RleHRfZGVjb3JhdGlvbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtZGVjb3JhdGlvblwiIHhcblxuICBsZXQgYV90ZXh0X3JlbmRlcmluZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtcmVuZGVyaW5nXCIgeFxuXG4gIGxldCBhX3JvdGF0ZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJyb3RhdGVcIlxuXG4gIGxldCBhX3N0YXJ0T2Zmc2V0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInN0YXJ0T2Zmc2V0XCJcblxuICBsZXQgYV9tZXRob2QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtZXRob2RcIiB4XG5cbiAgbGV0IGFfc3BhY2luZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNwYWNpbmdcIiB4XG5cbiAgbGV0IGFfZ2x5cGhSZWYgPSBzdHJpbmdfYXR0cmliIFwiZ2x5cGhSZWZcIlxuXG4gIGxldCBhX2Zvcm1hdCA9IHN0cmluZ19hdHRyaWIgXCJmb3JtYXRcIlxuXG4gIGxldCBhX21hcmtlclVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFya2VyVW5pdHNcIiB4XG5cbiAgbGV0IGFfcmVmWCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInJlZlhcIlxuXG4gIGxldCBhX3JlZlkgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJyZWZZXCJcblxuICBsZXQgYV9tYXJrZXJXaWR0aCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJtYXJrZXJXaWR0aFwiXG5cbiAgbGV0IGFfbWFya2VySGVpZ2h0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcIm1hcmtlckhlaWdodFwiXG5cbiAgbGV0IGFfb3JpZW50IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX29yaWVudCBcIm9yaWVudFwiIHhcblxuICBsZXQgYV9sb2NhbCA9IHN0cmluZ19hdHRyaWIgXCJsb2NhbFwiXG5cbiAgbGV0IGFfcmVuZGVyaW5nX2ludGVudCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJlbmRlcmluZy1pbnRlbnRcIiB4XG5cbiAgbGV0IGFfZ3JhZGllbnRVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImdyYWRpZW50VW5pdHNcIiB4XG5cbiAgbGV0IGFfZ3JhZGllbnRUcmFuc2Zvcm0gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJncmFkaWVudFRyYW5zZm9ybVwiXG5cbiAgbGV0IGFfc3ByZWFkTWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3ByZWFkTWV0aG9kXCIgeFxuXG4gIGxldCBhX2Z4ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwiZnhcIlxuXG4gIGxldCBhX2Z5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwiZnlcIlxuXG4gIGxldCBhX29mZnNldCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9vZmZzZXQgXCJvZmZzZXRcIiB4XG5cbiAgbGV0IGFfcGF0dGVyblVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicGF0dGVyblVuaXRzXCIgeFxuXG4gIGxldCBhX3BhdHRlcm5Db250ZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwYXR0ZXJuQ29udGVudFVuaXRzXCIgeFxuXG4gIGxldCBhX3BhdHRlcm5UcmFuc2Zvcm0geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfdHJhbnNmb3JtcyBcInBhdHRlcm5UcmFuc2Zvcm1cIiB4XG5cbiAgbGV0IGFfY2xpcFBhdGhVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNsaXBQYXRoVW5pdHNcIiB4XG5cbiAgbGV0IGFfbWFza1VuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFza1VuaXRzXCIgeFxuXG4gIGxldCBhX21hc2tDb250ZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtYXNrQ29udGVudFVuaXRzXCIgeFxuXG4gIGxldCBhX3ByaW1pdGl2ZVVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicHJpbWl0aXZlVW5pdHNcIiB4XG5cbiAgbGV0IGFfZmlsdGVyUmVzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwiZmlsdGVyUmVzVW5pdHNcIlxuXG4gIGxldCBhX3Jlc3VsdCA9IHN0cmluZ19hdHRyaWIgXCJyZXN1bHRcIlxuXG4gIGxldCBhX2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2luX3ZhbHVlIFwiaW5cIiB4XG5cbiAgbGV0IGFfaW4yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2luX3ZhbHVlIFwiaW4yXCIgeFxuXG4gIGxldCBhX2F6aW11dGggPSBudW1iZXJfYXR0cmliIFwiYXppbXV0aFwiXG5cbiAgbGV0IGFfZWxldmF0aW9uID0gbnVtYmVyX2F0dHJpYiBcImVsZXZhdGlvblwiXG5cbiAgbGV0IGFfcG9pbnRzQXRYID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WFwiXG5cbiAgbGV0IGFfcG9pbnRzQXRZID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WVwiXG5cbiAgbGV0IGFfcG9pbnRzQXRaID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WlwiXG5cbiAgbGV0IGFfc3BlY3VsYXJFeHBvbmVudCA9IG51bWJlcl9hdHRyaWIgXCJzcGVjdWxhckV4cG9uZW50XCJcblxuICBsZXQgYV9zcGVjdWxhckNvbnN0YW50ID0gbnVtYmVyX2F0dHJpYiBcInNwZWN1bGFyQ29uc3RhbnRcIlxuXG4gIGxldCBhX2xpbWl0aW5nQ29uZUFuZ2xlID0gbnVtYmVyX2F0dHJpYiBcImxpbWl0aW5nQ29uZUFuZ2xlXCJcblxuICBsZXQgYV9tb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibW9kZVwiIHhcblxuICBsZXQgYV9mZUNvbG9yTWF0cml4X3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3ZhbHVlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJ2YWx1ZXNcIlxuXG4gIGxldCBhX3RyYW5zZmVyX3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3RhYmxlVmFsdWVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcInRhYmxlVmFsdWVzXCJcblxuICBsZXQgYV9pbnRlcmNlcHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJpbnRlcmNlcHRcIlxuXG4gIGxldCBhX2FtcGxpdHVkZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFtcGxpdHVkZVwiXG5cbiAgbGV0IGFfZXhwb25lbnQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJleHBvbmVudFwiXG5cbiAgbGV0IGFfdHJhbnNmZXJfb2Zmc2V0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib2Zmc2V0XCJcblxuICBsZXQgYV9mZUNvbXBvc2l0ZV9vcGVyYXRvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9wZXJhdG9yXCIgeFxuXG4gIGxldCBhX2sxID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazFcIlxuXG4gIGxldCBhX2syID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazJcIlxuXG4gIGxldCBhX2szID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazNcIlxuXG4gIGxldCBhX2s0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazRcIlxuXG4gIGxldCBhX29yZGVyID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcIm9yZGVyXCJcblxuICBsZXQgYV9rZXJuZWxNYXRyaXggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwia2VybmVsTWF0cml4XCJcblxuICBsZXQgYV9kaXZpc29yID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZGl2aXNvclwiXG5cbiAgbGV0IGFfYmlhcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImJpYXNcIlxuXG4gIGxldCBhX2tlcm5lbFVuaXRMZW5ndGggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJrZXJuZWxVbml0TGVuZ3RoXCJcblxuICBsZXQgYV90YXJnZXRYID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW50IFwidGFyZ2V0WFwiXG5cbiAgbGV0IGFfdGFyZ2V0WSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcInRhcmdldFlcIlxuXG4gIGxldCBhX2VkZ2VNb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGFyZ2V0WVwiIHhcblxuICBsZXQgYV9wcmVzZXJ2ZUFscGhhID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYm9vbCBcInByZXNlcnZlQWxwaGFcIlxuXG4gIGxldCBhX3N1cmZhY2VTY2FsZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN1cmZhY2VTY2FsZVwiXG5cbiAgbGV0IGFfZGlmZnVzZUNvbnN0YW50ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkaWZmdXNlQ29uc3RhbnRcIlxuXG4gIGxldCBhX3NjYWxlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic2NhbGVcIlxuXG4gIGxldCBhX3hDaGFubmVsU2VsZWN0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4Q2hhbm5lbFNlbGVjdG9yXCIgeFxuXG4gIGxldCBhX3lDaGFubmVsU2VsZWN0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ5Q2hhbm5lbFNlbGVjdG9yXCIgeFxuXG4gIGxldCBhX3N0ZERldmlhdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcInN0ZERldmlhdGlvblwiXG5cbiAgbGV0IGFfZmVNb3JwaG9sb2d5X29wZXJhdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwib3BlcmF0b3JcIiB4XG5cbiAgbGV0IGFfcmFkaXVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcInJhZGl1c1wiXG5cbiAgbGV0IGFfYmFzZUZyZW5xdWVuY3kgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJiYXNlRnJlcXVlbmN5XCJcblxuICBsZXQgYV9udW1PY3RhdmVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW50IFwibnVtT2N0YXZlc1wiXG5cbiAgbGV0IGFfc2VlZCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNlZWRcIlxuXG4gIGxldCBhX3N0aXRjaFRpbGVzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3RpdGNoVGlsZXNcIiB4XG5cbiAgbGV0IGFfZmVUdXJidWxlbmNlX3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3hsaW5rX3Nob3cgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bGluazpzaG93XCIgeFxuXG4gIGxldCBhX3hsaW5rX2FjdHVhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bGluazphY3R1YXRlXCIgeFxuXG4gIGxldCBhX3RhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJ4bGluazp0YXJnZXRcIlxuXG4gIGxldCBhX3ZpZXdUYXJnZXQgPSBzdHJpbmdfYXR0cmliIFwidmlld1RhcmdldFwiXG5cbiAgbGV0IGFfYXR0cmlidXRlTmFtZSA9IHN0cmluZ19hdHRyaWIgXCJhdHRyaWJ1dGVOYW1lXCJcblxuICBsZXQgYV9hdHRyaWJ1dGVUeXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYXR0cmlidXRlVHlwZVwiIHhcblxuICBsZXQgYV9iZWdpbiA9IHN0cmluZ19hdHRyaWIgXCJiZWdpblwiXG5cbiAgbGV0IGFfZHVyID0gc3RyaW5nX2F0dHJpYiBcImR1clwiXG5cbiAgbGV0IGFfbWluID0gc3RyaW5nX2F0dHJpYiBcIm1pblwiXG5cbiAgbGV0IGFfbWF4ID0gc3RyaW5nX2F0dHJpYiBcIm1heFwiXG5cbiAgbGV0IGFfcmVzdGFydCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJlc3RhcnRcIiB4XG5cbiAgbGV0IGFfcmVwZWF0Q291bnQgPSBzdHJpbmdfYXR0cmliIFwicmVwZWF0Q291bnRcIlxuXG4gIGxldCBhX3JlcGVhdER1ciA9IHN0cmluZ19hdHRyaWIgXCJyZXBlYXREdXJcIlxuXG4gIGxldCBhX2ZpbGwgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9wYWludCBcImZpbGxcIlxuXG4gIGxldCBhX2FuaW1hdGlvbl9maWxsIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZmlsbFwiIHhcblxuICBsZXQgYV9maWxsX3J1bGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9maWxsX3J1bGUgXCJmaWxsLXJ1bGVcIlxuXG4gIGxldCBhX2NhbGNNb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiY2FsY01vZGVcIiB4XG5cbiAgbGV0IGFfYW5pbWF0aW9uX3ZhbHVlcyA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwidmFsdWVzXCJcblxuICBsZXQgYV9rZXlUaW1lcyA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwia2V5VGltZXNcIlxuXG4gIGxldCBhX2tleVNwbGluZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcImtleVNwbGluZXNcIlxuXG4gIGxldCBhX2Zyb20gPSBzdHJpbmdfYXR0cmliIFwiZnJvbVwiXG5cbiAgbGV0IGFfdG8gPSBzdHJpbmdfYXR0cmliIFwidG9cIlxuXG4gIGxldCBhX2J5ID0gc3RyaW5nX2F0dHJpYiBcImJ5XCJcblxuICBsZXQgYV9hZGRpdGl2ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFkZGl0aXZlXCIgeFxuXG4gIGxldCBhX2FjY3VtdWxhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhY2N1bXVsYXRlXCIgeFxuXG4gIGxldCBhX2tleVBvaW50cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uIFwia2V5UG9pbnRzXCJcblxuICBsZXQgYV9wYXRoID0gc3RyaW5nX2F0dHJpYiBcInBhdGhcIlxuXG4gIGxldCBhX2FuaW1hdGVUcmFuc2Zvcm1fdHlwZSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCJcblxuICBsZXQgYV9ob3Jpel9vcmlnaW5feCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LW9yaWdpbi14XCJcblxuICBsZXQgYV9ob3Jpel9vcmlnaW5feSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LW9yaWdpbi15XCJcblxuICBsZXQgYV9ob3Jpel9hZHZfeCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LWFkdi14XCJcblxuICBsZXQgYV92ZXJ0X29yaWdpbl94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidmVydC1vcmlnaW4teFwiXG5cbiAgbGV0IGFfdmVydF9vcmlnaW5feSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInZlcnQtb3JpZ2luLXlcIlxuXG4gIGxldCBhX3ZlcnRfYWR2X3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2ZXJ0LWFkdi15XCJcblxuICBsZXQgYV91bmljb2RlID0gc3RyaW5nX2F0dHJpYiBcInVuaWNvZGVcIlxuXG4gIGxldCBhX2dseXBoX25hbWUgPSBzdHJpbmdfYXR0cmliIFwiZ2x5cGhuYW1lXCJcblxuICBsZXQgYV9vcmllbnRhdGlvbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9yaWVudGF0aW9uXCIgeFxuXG4gIGxldCBhX2FyYWJpY19mb3JtIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYXJhYmljLWZvcm1cIiB4XG5cbiAgbGV0IGFfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJsYW5nXCJcblxuICBsZXQgYV91MSA9IHN0cmluZ19hdHRyaWIgXCJ1MVwiXG5cbiAgbGV0IGFfdTIgPSBzdHJpbmdfYXR0cmliIFwidTJcIlxuXG4gIGxldCBhX2cxID0gc3RyaW5nX2F0dHJpYiBcImcxXCJcblxuICBsZXQgYV9nMiA9IHN0cmluZ19hdHRyaWIgXCJnMlwiXG5cbiAgbGV0IGFfayA9IHN0cmluZ19hdHRyaWIgXCJrXCJcblxuICBsZXQgYV9mb250X2ZhbWlseSA9IHN0cmluZ19hdHRyaWIgXCJmb250LWZhbWlseVwiXG5cbiAgbGV0IGFfZm9udF9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJmb250LXN0eWxlXCJcblxuICBsZXQgYV9mb250X3ZhcmlhbnQgPSBzdHJpbmdfYXR0cmliIFwiZm9udC12YXJpYW50XCJcblxuICBsZXQgYV9mb250X3dlaWdodCA9IHN0cmluZ19hdHRyaWIgXCJmb250LXdlaWdodFwiXG5cbiAgbGV0IGFfZm9udF9zdHJldGNoID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtc3RyZXRjaFwiXG5cbiAgbGV0IGFfZm9udF9zaXplID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtc2l6ZVwiXG5cbiAgbGV0IGFfdW5pY29kZV9yYW5nZSA9IHN0cmluZ19hdHRyaWIgXCJ1bmljb2RlLXJhbmdlXCJcblxuICBsZXQgYV91bml0c19wZXJfZW0gPSBzdHJpbmdfYXR0cmliIFwidW5pdHMtcGVyLWVtXCJcblxuICBsZXQgYV9zdGVtdiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0ZW12XCJcblxuICBsZXQgYV9zdGVtaCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0ZW1oXCJcblxuICBsZXQgYV9zbG9wZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNsb3BlXCJcblxuICBsZXQgYV9jYXBfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiY2FwLWhlaWdodFwiXG5cbiAgbGV0IGFfeF9oZWlnaHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ4LWhlaWdodFwiXG5cbiAgbGV0IGFfYWNjZW50X2hlaWdodCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFjY2VudC1oZWlnaHRcIlxuXG4gIGxldCBhX2FzY2VudCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFzY2VudFwiXG5cbiAgbGV0IGFfd2lkdGhzID0gc3RyaW5nX2F0dHJpYiBcIndpZHRoc1wiXG5cbiAgbGV0IGFfYmJveCA9IHN0cmluZ19hdHRyaWIgXCJiYm94XCJcblxuICBsZXQgYV9pZGVvZ3JhcGhpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImlkZW9ncmFwaGljXCJcblxuICBsZXQgYV9hbHBoYWJldGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYWxwaGFiZXRpY1wiXG5cbiAgbGV0IGFfbWF0aGVtYXRpY2FsID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwibWF0aGVtYXRpY2FsXCJcblxuICBsZXQgYV9oYW5naW5nID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaGFuZ2luZ1wiXG5cbiAgbGV0IGFfdmlkZW9ncmFwaGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1pZGVvZ3JhcGhpY1wiXG5cbiAgbGV0IGFfdl9hbHBoYWJldGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1hbHBoYWJldGljXCJcblxuICBsZXQgYV92X21hdGhlbWF0aWNhbCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtbWF0aGVtYXRpY2FsXCJcblxuICBsZXQgYV92X2hhbmdpbmcgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LWhhbmdpbmdcIlxuXG4gIGxldCBhX3VuZGVybGluZV9wb3NpdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidW5kZXJsaW5lLXBvc2l0aW9uXCJcblxuICBsZXQgYV91bmRlcmxpbmVfdGhpY2tuZXNzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ1bmRlcmxpbmUtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9zdHJpa2V0aHJvdWdoX3Bvc2l0aW9uID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uXCJcblxuICBsZXQgYV9zdHJpa2V0aHJvdWdoX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RyaWtldGhyb3VnaC10aGlja25lc3NcIlxuXG4gIGxldCBhX292ZXJsaW5lX3Bvc2l0aW9uID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib3ZlcmxpbmUtcG9zaXRpb25cIlxuXG4gIGxldCBhX292ZXJsaW5lX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib3ZlcmxpbmUtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9zdHJpbmcgPSBzdHJpbmdfYXR0cmliIFwic3RyaW5nXCJcblxuICBsZXQgYV9uYW1lID0gc3RyaW5nX2F0dHJpYiBcIm5hbWVcIlxuXG4gIGxldCBhX2FsaWdubWVudF9iYXNlbGluZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUgXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiB4XG5cbiAgbGV0IGFfZG9taW5hbnRfYmFzZWxpbmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUgXCJkb21pbmFudC1iYXNlbGluZVwiIHhcblxuICAoKiogSmF2YXNjcmlwdCBldmVudHMgKilcblxuICBsZXQgYV9vbmFib3J0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hYm9ydFwiXG4gIGxldCBhX29uYWN0aXZhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFjdGl2YXRlXCJcbiAgbGV0IGFfb25iZWdpbiA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVnaW5cIlxuICBsZXQgYV9vbmVuZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW5kXCJcbiAgbGV0IGFfb25lcnJvciA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZXJyb3JcIlxuICBsZXQgYV9vbmZvY3VzaW4gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvY3VzaW5cIlxuICBsZXQgYV9vbmZvY3Vzb3V0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c291dFwiXG4gIGxldCBhX29ubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZFwiXG4gIGxldCBhX29ucmVwZWF0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZXBlYXRcIlxuICBsZXQgYV9vbnJlc2l6ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVzaXplXCJcbiAgbGV0IGFfb25zY3JvbGwgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNjcm9sbFwiXG4gIGxldCBhX29udW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib251bmxvYWRcIlxuICBsZXQgYV9vbnpvb20gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnpvb21cIlxuXG4gICgqKiBKYXZhc2NyaXB0IG1vdXNlIGV2ZW50cyAqKVxuXG4gIGxldCBhX29uY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNsaWNrXCJcbiAgbGV0IGFfb25tb3VzZWRvd24gPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlZG93blwiXG4gIGxldCBhX29ubW91c2V1cCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V1cFwiXG4gIGxldCBhX29ubW91c2VvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW92ZXJcIlxuICBsZXQgYV9vbm1vdXNlb3V0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW91dFwiXG4gIGxldCBhX29ubW91c2Vtb3ZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW1vdmVcIlxuXG4gICgqKiBKYXZhc2NyaXB0IHRvdWNoIGV2ZW50cyAqKVxuICBsZXQgYV9vbnRvdWNoc3RhcnQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoc3RhcnRcIlxuICBsZXQgYV9vbnRvdWNoZW5kID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGVuZFwiXG4gIGxldCBhX29udG91Y2htb3ZlID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaG1vdmVcIlxuICBsZXQgYV9vbnRvdWNoY2FuY2VsID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGNhbmNlbFwiXG5cbiAgbGV0IGFfc3RvcF9jb2xvciA9IGNvbG9yX2F0dHJpYiBcInN0b3AtY29sb3JcIlxuXG4gIGxldCBhX3N0b3Bfb3BhY2l0eSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0b3Atb3BhY2l0eVwiXG5cbiAgbGV0IGFfc3Ryb2tlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcGFpbnQgXCJzdHJva2VcIlxuXG4gIGxldCBhX3N0cm9rZV93aWR0aCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xlbmd0aCBcInN0cm9rZS13aWR0aFwiXG5cbiAgbGV0IGFfc3Ryb2tlX2xpbmVjYXAgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzdHJva2UtbGluZWNhcFwiIHhcblxuICBsZXQgYV9zdHJva2VfbGluZWpvaW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzdHJva2UtbGluZWpvaW5cIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX21pdGVybGltaXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cm9rZS1taXRlcmxpbWl0XCJcblxuICBsZXQgYV9zdHJva2VfZGFzaGFycmF5IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3N0cm9rZWRhc2hhcnJheSBcInN0cm9rZS1kYXNoYXJyYXlcIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX2Rhc2hvZmZzZXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xlbmd0aCBcInN0cm9rZS1kYXNob2Zmc2V0XCJcblxuICBsZXQgYV9zdHJva2Vfb3BhY2l0eSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3Ryb2tlLW9wYWNpdHlcIlxuXG4gICgqIHhsaW5rIG5hbWVzcGFjZSBnaXZlbiBhIG5pY2tuYW1lIHNpbmNlIHNvbWUgYXR0cmlidXRlcyBtYW5kYXRlZCBieVxuICAgICB0aGUgc3ZnIHN0YW5kYXJkIHN1Y2ggYXMgeGxpbms6aHJlZiBsaXZlIGluIHRoYXQgbmFtZXNwYWNlLCBhbmQgd2VcbiAgICAgcmVmZXIgdG8gdGhlbSBhcyBcInhsaW5rOndoYXRldmVyXCIgKHNlZSBhX3hsaW5rX2hyZWYgb3IgYV94bGlua3Nob3cpXG4gICopXG4gIGxldCBzdmcgPyhhID0gW10pIGNoaWxkcmVuID1cbiAgICBsZXQgYXR0cmlicyA9XG4gICAgICBzdHJpbmdfYXR0cmliIFwieG1sbnNcIiAoVy5yZXR1cm4gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiKVxuICAgICAgOjogc3RyaW5nX2F0dHJpYiBcInhtbG5zOnhsaW5rXCIgKFcucmV0dXJuIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiKVxuICAgICAgOjogdG9feG1sYXR0cmlicyBhXG4gICAgaW5cbiAgICBzdGFyIH5hOihhdHRyaWJzKSBcInN2Z1wiIGNoaWxkcmVuXG5cbiAgKCogYWxzbyBnZW5lcmF0ZWQgKilcbiAgbGV0IGcgPSBzdGFyIFwiZ1wiXG5cbiAgbGV0IGRlZnMgPSBzdGFyIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgPSB1bmFyeSBcImRlc2NcIlxuXG4gIGxldCB0aXRsZSA9IHVuYXJ5IFwidGl0bGVcIlxuXG4gIGxldCBzeW1ib2wgPSBzdGFyIFwic3ltYm9sXCJcblxuICBsZXQgdXNlID0gc3RhciBcInVzZVwiXG5cbiAgbGV0IGltYWdlID0gc3RhciBcImltYWdlXCJcblxuICBsZXQgc3dpdGNoID0gc3RhciBcInN3aXRjaFwiXG5cbiAgbGV0IHN0eWxlID0gdW5hcnkgXCJzdHlsZVwiXG5cbiAgbGV0IHBhdGggPSBzdGFyIFwicGF0aFwiXG5cbiAgbGV0IHJlY3QgPSBzdGFyIFwicmVjdFwiXG5cbiAgbGV0IGNpcmNsZSA9IHN0YXIgXCJjaXJjbGVcIlxuXG4gIGxldCBlbGxpcHNlID0gc3RhciBcImVsbGlwc2VcIlxuXG4gIGxldCBsaW5lID0gc3RhciBcImxpbmVcIlxuXG4gIGxldCBwb2x5bGluZSA9IHN0YXIgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHBvbHlnb24gPSBzdGFyIFwicG9seWdvblwiXG5cbiAgbGV0IHRleHQgPSBzdGFyIFwidGV4dFwiXG5cbiAgbGV0IHRzcGFuID0gc3RhciBcInRzcGFuXCJcblxuICBsZXQgdHJlZiA9IHN0YXIgXCJ0cmVmXCJcblxuICBsZXQgdGV4dFBhdGggPSBzdGFyIFwidGV4dFBhdGhcIlxuXG4gIGxldCBhbHRHbHlwaCA9IHVuYXJ5IFwiYWx0R2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiA9IHVuYXJ5IFwiYWx0R2x5cGhEZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gPSBzdGFyIFwiYWx0R2x5cGhJdGVtXCJcblxuICBsZXQgZ2x5cGhSZWYgPSBudWxsYXJ5IFwiZ2x5cGhSZWZcIlxuXG4gIGxldCBtYXJrZXIgPSBzdGFyIFwibWFya2VyXCJcblxuICBsZXQgY29sb3JfcHJvZmlsZSA9IHN0YXIgXCJjb2xvci1wcm9maWxlXCJcblxuICBsZXQgbGluZWFyR3JhZGllbnQgPSBzdGFyIFwibGluZWFyR3JhZGllbnRcIlxuXG4gIGxldCByYWRpYWxHcmFkaWVudCA9IHN0YXIgXCJyYWRpYWxHcmFkaWVudFwiXG5cbiAgbGV0IHN0b3AgPSBzdGFyIFwic3RvcFwiXG5cbiAgbGV0IHBhdHRlcm4gPSBzdGFyIFwicGF0dGVyblwiXG5cbiAgbGV0IGNsaXBQYXRoID0gc3RhciBcImNsaXBQYXRoXCJcblxuICBsZXQgZmlsdGVyID0gc3RhciBcImZpbHRlclwiXG5cbiAgbGV0IGZlRGlzdGFudExpZ2h0ID0gc3RhciBcImZlRGlzdGFudExpZ2h0XCJcblxuICBsZXQgZmVQb2ludExpZ2h0ID0gc3RhciBcImZlUG9pbnRMaWdodFwiXG5cbiAgbGV0IGZlU3BvdExpZ2h0ID0gc3RhciBcImZlU3BvdExpZ2h0XCJcblxuICBsZXQgZmVCbGVuZCA9IHN0YXIgXCJmZUJsZW5kXCJcblxuICBsZXQgZmVDb2xvck1hdHJpeCA9IHN0YXIgXCJmZUNvbG9yTWF0cml4XCJcblxuICBsZXQgZmVDb21wb25lbnRUcmFuc2ZlciA9IHN0YXIgXCJmZUNvbXBvbmVudFRyYW5zZmVyXCJcblxuICBsZXQgZmVGdW5jQSA9IHN0YXIgXCJmZUZ1bmNBXCJcblxuICBsZXQgZmVGdW5jRyA9IHN0YXIgXCJmZUZ1bmNHXCJcblxuICBsZXQgZmVGdW5jQiA9IHN0YXIgXCJmZUZ1bmNCXCJcblxuICBsZXQgZmVGdW5jUiA9IHN0YXIgXCJmZUZ1bmNSXCJcblxuICBsZXQgZmVDb21wb3NpdGUgPSBzdGFyIFwiZmVDb21wb3NpdGVcIlxuXG4gIGxldCBmZUNvbnZvbHZlTWF0cml4ID0gc3RhciBcImZlQ29udm9sdmVNYXRyaXhcIlxuXG4gIGxldCBmZURpZmZ1c2VMaWdodGluZyA9IHN0YXIgXCJmZURpZmZ1c2VMaWdodGluZ1wiXG5cbiAgbGV0IGZlRGlzcGxhY2VtZW50TWFwID0gc3RhciBcImZlRGlzcGxhY2VtZW50TWFwXCJcblxuICBsZXQgZmVGbG9vZCA9IHN0YXIgXCJmZUZsb29kXCJcblxuICBsZXQgZmVHYXVzc2lhbkJsdXIgPSBzdGFyIFwiZmVHYXVzc2lhbkJsdXJcIlxuXG4gIGxldCBmZUltYWdlID0gc3RhciBcImZlSW1hZ2VcIlxuXG4gIGxldCBmZU1lcmdlID0gc3RhciBcImZlTWVyZ2VcIlxuXG4gIGxldCBmZU1vcnBob2xvZ3kgPSBzdGFyIFwiZmVNb3JwaG9sb2d5XCJcblxuICBsZXQgZmVPZmZzZXQgPSBzdGFyIFwiZmVPZmZzZXRcIlxuXG4gIGxldCBmZVNwZWN1bGFyTGlnaHRpbmcgPSBzdGFyIFwiZmVTcGVjdWxhckxpZ2h0aW5nXCJcblxuICBsZXQgZmVUaWxlID0gc3RhciBcImZlVGlsZVwiXG5cbiAgbGV0IGZlVHVyYnVsZW5jZSA9IHN0YXIgXCJmZVR1cmJ1bGVuY2VcIlxuXG4gIGxldCBjdXJzb3IgPSBzdGFyIFwiY3Vyc29yXCJcblxuICBsZXQgYSA9IHN0YXIgXCJhXCJcblxuICBsZXQgdmlldyA9IHN0YXIgXCJ2aWV3XCJcblxuICBsZXQgc2NyaXB0ID0gdW5hcnkgXCJzY3JpcHRcIlxuXG4gIGxldCBhbmltYXRlID0gc3RhciBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRpb24gPSBhbmltYXRlXG5cbiAgbGV0IHNldCA9IHN0YXIgXCJzZXRcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uID0gc3RhciBcImFuaW1hdGVNb3Rpb25cIlxuXG4gIGxldCBtcGF0aCA9IHN0YXIgXCJtcGF0aFwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciA9IHN0YXIgXCJhbmltYXRlQ29sb3JcIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtID0gc3RhciBcImFuaW1hdGVUcmFuc2Zvcm1cIlxuXG4gIGxldCBmb250ID0gc3RhciBcImZvbnRcIlxuXG4gIGxldCBnbHlwaCA9IHN0YXIgXCJnbHlwaFwiXG5cbiAgbGV0IG1pc3NpbmdfZ2x5cGggPSBzdGFyIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IGhrZXJuID0gbnVsbGFyeSBcImhrZXJuXCJcblxuICBsZXQgdmtlcm4gPSBudWxsYXJ5IFwidmtlcm5cIlxuXG4gIGxldCBmb250X2ZhY2UgPSBudWxsYXJ5IFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udF9mYWNlX3NyYyA9IHN0YXIgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udF9mYWNlX3VyaSA9IHN0YXIgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9udF9mYWNlX2Zvcm1hdCA9IG51bGxhcnkgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9udF9mYWNlX25hbWUgPSBudWxsYXJ5IFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIHR5cGUgZG9jID0gWyBgU3ZnIF0gZWx0XG4gIGxldCBkb2NfdG9lbHQgeCA9IHhcblxuICBtb2R1bGUgSSA9IFhtbF9zdHJlYW0uSW1wb3J0KFhtbClcbiAgbGV0IG9mX3NlcSBzID0gdG90bCBAQCBJLm9mX3NlcSBzXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuXG4gICAgbGV0IGRhdGEgcyA9IFhtbC5lbmNvZGVkcGNkYXRhIHNcblxuICAgIGxldCBsZWFmIHRhZyA/YSAoKSA9IFhtbC5sZWFmID9hIHRhZ1xuXG4gICAgbGV0IG5vZGUgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gICAgbGV0IGNvZXJjZV9lbHQgeCA9IHhcblxuICAgIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgICBsZXQgaW50X2F0dHJpYiA9IFhtbC5pbnRfYXR0cmliXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgICBsZXQgdXJpX2F0dHJpYiBhIHMgPSBYbWwudXJpX2F0dHJpYiBhIHNcblxuICAgIGxldCBzcGFjZV9zZXBfYXR0cmliID0gWG1sLnNwYWNlX3NlcF9hdHRyaWJcblxuICAgIGxldCBjb21tYV9zZXBfYXR0cmliID0gWG1sLmNvbW1hX3NlcF9hdHRyaWJcblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBXcmFwcGVkX2Z1bmN0aW9uc1xuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsJ2IpIFcuZnQgPSAnYSAtPiAnYikgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuXG4gIGxldCBzdHJpbmdfb2ZfYWxpZ25tZW50X2Jhc2VsaW5lID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgQmFzZWxpbmUgLT4gXCJiYXNlbGluZVwiXG4gICAgfCBgQmVmb3JlX2VkZ2UgLT4gXCJiZWZvcmUtZWRnZVwiXG4gICAgfCBgVGV4dF9iZWZvcmVfZWRnZSAtPiBcInRleHQtYmVmb3JlLWVkZ2VcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgQ2VudHJhbCAtPiBcImNlbnRyYWxcIlxuICAgIHwgYEFmdGVyX2VkZ2UgLT4gXCJhZnRlci1lZGdlXCJcbiAgICB8IGBUZXh0X2FmdGVyX2VkZ2UgLT4gXCJ0ZXh0LWFmdGVyLWVkZ2VcIlxuICAgIHwgYElkZW9ncmFwaGljIC0+IFwiaWRlb2dyYXBoaWNcIlxuICAgIHwgYEFscGhhYmV0aWMgLT4gXCJhbHBoYWJldGljXCJcbiAgICB8IGBIYW5naW5nLT4gXCJoYW5naW5nXCJcbiAgICB8IGBNYXRoZW1hdGljYWwgLT4gXCJtYXRoZW1hdGljYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcblxuICBsZXQgc3RyaW5nX29mX2JpZ192YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IGBBIC0+IFwiYVwiXG4gICAgfCBgQWJzb2x1dGVfY29sb3JpbWV0cmljIC0+IFwiYWJzb2x1dGVfY29sb3JpbWV0cmljXCJcbiAgICB8IGBBbGlnbiAtPiBcIlwiXG4gICAgfCBgQWx3YXlzIC0+IFwiYWx3YXlzXCJcbiAgICB8IGBBdG9wIC0+IFwiYXRvcFwiXG4gICAgfCBgQXJpdGhtZXRpYyAtPiBcImFyaXRobWV0aWNcIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBCIC0+IFwiYlwiXG4gICAgfCBgQmV2ZXIgLT4gXCJiZXZlbFwiXG4gICAgfCBgQmxpbmsgLT4gXCJibGlua1wiXG4gICAgfCBgQnV0dCAtPiBcImJ1dHRcIlxuICAgIHwgYENTUyAtPiBcIkNTU1wiXG4gICAgfCBgRGFya2VuIC0+IFwiZGFya2VuXCJcbiAgICB8IGBEZWZhdWx0IC0+IFwiZGVmYXVsdFwiXG4gICAgfCBgRGlsYXRlIC0+IFwiZGlsYXRlXCJcbiAgICB8IGBEaXNhYmxlIC0+IFwiZGlzYWJsZVwiXG4gICAgfCBgRGlzY3JldGUgLT4gXCJkaXNjcmV0ZVwiXG4gICAgfCBgRHVwbGljYXRlIC0+IFwiZHVwbGljYXRlXCJcbiAgICB8IGBFbmQgLT4gXCJlbmRcIlxuICAgIHwgYEVyb2RlIC0+IFwiZXJvZGVcIlxuICAgIHwgYEV4YWN0IC0+IFwiZXhhY3RcIlxuICAgIHwgYEZyYWN0YWxOb2lzZSAtPiBcImZyYWN0YWxOb2lzZVwiXG4gICAgfCBgRnJlZXplIC0+IFwiZnJlZXplXCJcbiAgICB8IGBIdWVSb3RhdGUgLT4gXCJodWVSb3RhdGVcIlxuICAgIHwgYEcgLT4gXCJnXCJcbiAgICB8IGBHYW1tYSAtPiBcImdhbW1hXCJcbiAgICB8IGBHZW9tZXRyaWNQcmVjaXNpb24gLT4gXCJnZW9tZXRyaWNQcmVjaXNpb25cIlxuICAgIHwgYEggLT4gXCJoXCJcbiAgICB8IGBJZGVudGl0eSAtPiBcImlkZW50aXR5XCJcbiAgICB8IGBJbiAtPiBcImluXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYElzb2xhdGVkIC0+IFwiaXNvbGF0ZWRcIlxuICAgIHwgYExpZ2h0ZW4gLT4gXCJsaWdodGVuXCJcbiAgICB8IGBMaW5lX3Rocm91Z2ggLT4gXCJsaW5lLXRocm91Z2hcIlxuICAgIHwgYExpbmVhciAtPiBcImxpbmVhclwiXG4gICAgfCBgTHVtaW5hbmNlVG9BbHBoYSAtPiBcImx1bWluYW5jZVRvQWxwaGFcIlxuICAgIHwgYE1hZ25pZnkgLT4gXCJtYWduaWZ5XCJcbiAgICB8IGBNYXRyaXggLT4gXCJtYXRyaXhcIlxuICAgIHwgYE1lZGlhbCAtPiBcIm1lZGlhbFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBNaXRlciAtPiBcIm1pdGVyXCJcbiAgICB8IGBNdWx0aXBseSAtPiBcIm11bHRpcGx5XCJcbiAgICB8IGBOZXZlciAtPiBcIm5ldmVyXCJcbiAgICB8IGBOZXcgLT4gXCJuZXdcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYE5vU3RpdGNoIC0+IFwibm9TdGl0Y2hcIlxuICAgIHwgYE9iamVjdEJvdW5kaW5nQm94IC0+IFwib2JqZWN0Qm91bmRpbmdCb3hcIlxuICAgIHwgYE9uTG9hZCAtPiBcIm9uTG9hZFwiXG4gICAgfCBgT25SZXF1ZXN0IC0+IFwib25SZXF1ZXN0XCJcbiAgICB8IGBPcHRpbWl6ZUxlZ2liaWxpdHkgLT4gXCJvcHRpbWl6ZUxlZ2liaWxpdHlcIlxuICAgIHwgYE9wdGltaXplU3BlZWQgLT4gXCJvcHRpbWl6ZVNwZWVkXCJcbiAgICB8IGBPdGhlciAtPiBcIm90aGVyXCJcbiAgICB8IGBPdXQgLT4gXCJvdXRcIlxuICAgIHwgYE92ZXIgLT4gXCJvdmVyXCJcbiAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICB8IGBQYWNlZCAtPiBcInBhY2VkXCJcbiAgICB8IGBQYWQgLT4gXCJwYWRcIlxuICAgIHwgYFBlcmNlcHR1YWwgLT4gXCJwZXJjZXB0dWFsXCJcbiAgICB8IGBQcmVzZXJ2ZSAtPiBcInByZXNlcnZlXCJcbiAgICB8IGBSIC0+IFwiclwiXG4gICAgfCBgUmVmbGVjdCAtPiBcInJlZmxlY3RcIlxuICAgIHwgYFJlbW92ZSAtPiBcInJlbW92ZVwiXG4gICAgfCBgUmVwZWF0IC0+IFwicmVwZWF0XCJcbiAgICB8IGBSZXBsYWNlIC0+IFwicmVwbGFjZVwiXG4gICAgfCBgUmVsYXRpdmVfY29sb3JpbWV0cmljIC0+IFwicmVsYXRpdmVfY29sb3JpbWV0cmljXCJcbiAgICB8IGBSb3RhdGUgLT4gXCJyb3RhdGVcIlxuICAgIHwgYFJvdW5kIC0+IFwicm91bmRcIlxuICAgIHwgYFNhdHVyYXRlIC0+IFwic2F0dXJhdGVcIlxuICAgIHwgYFNhdHVyYXRpb24gLT4gXCJzYXR1cmF0aW9uXCJcbiAgICB8IGBTY2FsZSAtPiBcInNjYWxlXCJcbiAgICB8IGBTY3JlZW4gLT4gXCJzY3JlZW5cIlxuICAgIHwgYFNrZXdYIC0+IFwic2tld1hcIlxuICAgIHwgYFNrZXdZIC0+IFwic2tld1lcIlxuICAgIHwgYFNwYWNpbmcgLT4gXCJzcGFjaW5nXCJcbiAgICB8IGBTcGFjaW5nQW5kR2x5cGhzIC0+IFwic3BhY2luZ0FuZEdseXBoc1wiXG4gICAgfCBgU3BsaW5lIC0+IFwic3BsaW5lXCJcbiAgICB8IGBTcXVhcmUgLT4gXCJzcXVhcmVcIlxuICAgIHwgYFN0YXJ0IC0+IFwic3RhcnRcIlxuICAgIHwgYFN0aXRjaCAtPiBcInN0aXRjaFwiXG4gICAgfCBgU3RyZXRjaCAtPiBcInN0cmV0Y2hcIlxuICAgIHwgYFN0cm9rZVdpZHRoIC0+IFwic3Ryb2tlLXdpZHRoXCJcbiAgICB8IGBTdW0gLT4gXCJzdW1cIlxuICAgIHwgYFRhYmxlIC0+IFwidGFibGVcIlxuICAgIHwgYFRlcm1pbmFsIC0+IFwidGVybWluYWxcIlxuICAgIHwgYFRyYW5zbGF0ZSAtPiBcInRyYW5zbGF0ZVwiXG4gICAgfCBgVHVyYnVsZW5jZSAtPiBcInR1cmJ1bGVuY2VcIlxuICAgIHwgYFVuZGVybGluZSAtPiBcInVuZGVybGluZVwiXG4gICAgfCBgVXNlclNwYWNlT25Vc2UgLT4gXCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgfCBgViAtPiBcInZcIlxuICAgIHwgYFdoZW5Ob3RBY3RpdmUgLT4gXCJ3aGVuTm90QWN0aXZlXCJcbiAgICB8IGBXcmFwIC0+IFwid3JhcFwiXG4gICAgfCBgWE1MIC0+IFwiWE1MXCJcbiAgICB8IGBYb3IgLT4gXCJ4b3JcIlxuXG4gIGxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5cbiAgbGV0IHN0cmluZ19vZl9jb29yZHMgPVxuICAgIGxpc3QgKGZ1biAoYSwgYikgLT4gUHJpbnRmLnNwcmludGYgXCIlZywgJWdcIiBhIGIpXG5cbiAgbGV0IHN0cmluZ19vZl9kb21pbmFudF9iYXNlbGluZSA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYFVzZV9zY3JpcHQgLT4gXCJ1c2VzY3JpcHRcIlxuICAgIHwgYE5vX2NoYW5nZSAtPiBcIm5vY2hhbmdlXCJcbiAgICB8IGBSZXNldF9zaXplIC0+IFwicmVzZXRzaXplXCJcbiAgICB8IGBJZGVvZ3JhcGhpYyAtPiBcImlkZW9ncmFwaGljXCJcbiAgICB8IGBBbHBoYWJldGljIC0+IFwiYWxwaGFiZXRpY1wiXG4gICAgfCBgSGFuZ2luZyAtPiBcImhhbmdpbmdcIlxuICAgIHwgYE1hdGhlbWF0aWNhbCAtPiBcIm1hdGhlbWF0aWNhbFwiXG4gICAgfCBgQ2VudHJhbCAtPiBcImNlbnRyYWxcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgVGV4dF9hZnRlcl9lZGdlIC0+IFwidGV4dGFmdGVyZWRnZVwiXG4gICAgfCBgVGV4dF9iZWZvcmVfZWRnZSAtPiBcInRleHRiZWZvcmVlZGdlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG5cblxuICBsZXQgc3RyaW5nX29mX2luX3ZhbHVlID0gZnVuY3Rpb25cbiAgICB8IGBTb3VyY2VHcmFwaGljIC0+IFwic291cmNlR3JhcGhpY1wiXG4gICAgfCBgU291cmNlQWxwaGEgLT4gXCJzb3VyY2VBbHBoYVwiXG4gICAgfCBgQmFja2dyb3VuZEltYWdlIC0+IFwiYmFja2dyb3VuZEltYWdlXCJcbiAgICB8IGBCYWNrZ3JvdW5kQWxwaGEgLT4gXCJiYWNrZ3JvdW5kQWxwaGFcIlxuICAgIHwgYEZpbGxQYWludCAtPiBcImZpbGxQYWludFwiXG4gICAgfCBgU3Ryb2tlUGFpbnQgLT4gXCJzdHJva2VQYWludFwiXG4gICAgfCBgUmVmIF9zdmcgLT4gX3N2Z1xuXG4gIGxldCBzdHJpbmdfb2ZfaW50ID0gc3RyaW5nX29mX2ludFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoID0gVW5pdC5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGhzID0gbGlzdCBzdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXIgPSBYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2ZfcGVyY2VudGFnZSB4ID0gKHN0cmluZ19vZl9udW1iZXIgeCkgXiBcIiVcIlxuXG4gIGxldCBzdHJpbmdfb2ZfZm91cmZsb2F0cyAoYSwgYiwgYywgZCkgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgJXNcIlxuICAgICAgKHN0cmluZ19vZl9udW1iZXIgYSkgKHN0cmluZ19vZl9udW1iZXIgYikgKHN0cmluZ19vZl9udW1iZXIgYykgKHN0cmluZ19vZl9udW1iZXIgZClcblxuICBsZXQgc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgPSBmdW5jdGlvblxuICAgIHwgeCwgU29tZSB5IC0+IFByaW50Zi5zcHJpbnRmIFwiJWcsICVnXCIgeCB5XG4gICAgfCB4LCBOb25lIC0+IFByaW50Zi5zcHJpbnRmIFwiJWdcIiB4XG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJzID0gbGlzdCBzdHJpbmdfb2ZfbnVtYmVyXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJzX3NlbWljb2xvbiA9IGxpc3QgfnNlcDpcIjsgXCIgc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2Zfb2Zmc2V0ID0gZnVuY3Rpb25cbiAgICB8IGBOdW1iZXIgeCAtPiBzdHJpbmdfb2ZfbnVtYmVyIHhcbiAgICB8IGBQZXJjZW50YWdlIHggLT4gc3RyaW5nX29mX3BlcmNlbnRhZ2UgeFxuXG4gIGxldCBzdHJpbmdfb2Zfb3JpZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gXCJhdXRvXCJcbiAgICB8IFNvbWUgX19zdmcgLT4gc3RyaW5nX29mX2FuZ2xlIF9fc3ZnXG5cbiAgbGV0IHN0cmluZ19vZl9wYWludCA9IHN0cmluZ19vZl9wYWludFxuXG4gIGxldCBzdHJpbmdfb2ZfZmlsbF9ydWxlID0gc3RyaW5nX29mX2ZpbGxfcnVsZVxuXG4gIGxldCBzdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFwibm9uZVwiXG4gICAgfCBsIC0+IGxpc3Qgc3RyaW5nX29mX2xlbmd0aCBsXG5cbiAgbGV0IHN0cmluZ19vZl90cmFuc2Zvcm0gPSBmdW5jdGlvblxuICAgIHwgYE1hdHJpeCAoYSwgYiwgYywgZCwgZSwgZikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwibWF0cml4KCVnICVnICVnICVnICVnICVnKVwiIGEgYiBjIGQgZSBmXG4gICAgfCBgVHJhbnNsYXRlIHggLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwidHJhbnNsYXRlKCVzKVwiXG4gICAgICAgIChzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciB4KVxuICAgIHwgYFNjYWxlIHggLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwic2NhbGUoJXMpXCIgKHN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIHgpXG4gICAgfCBgUm90YXRlICgoYW5nbGUsIHgpKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJyb3RhdGUoJXMgJXMpXCIgKHN0cmluZ19vZl9hbmdsZSBhbmdsZSlcbiAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgfCBTb21lICgoeCwgeSkpIC0+IFByaW50Zi5zcHJpbnRmIFwiJWcgJWdcIiB4IHlcbiAgICAgICAgIHwgTm9uZSAtPiBcIlwiKVxuICAgIHwgYFNrZXdYIGFuZ2xlIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNrZXdYKCVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG4gICAgfCBgU2tld1kgYW5nbGUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwic2tld1koJXMpXCIgKHN0cmluZ19vZl9hbmdsZSBhbmdsZSlcblxuICBsZXQgc3RyaW5nX29mX3RyYW5zZm9ybXMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX3RyYW5zZm9ybSBsKVxuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCAnYikgVy5mdCA9ICgnYSAtPiAnYikpID1cbiAgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zKFhtbCkoV3JhcHBlZF9mdW5jdGlvbnMoWG1sKSlcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDQgYnkgVGhvcnN0ZW4gT2hsIDxvaGxAcGh5c2lrLnVuaS13dWVyemJ1cmcuZGU+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMDcgYnkgVmluY2VudCBCYWxhdCwgR2FicmllbCBLZXJuZWlzXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgQ2VjaWxlIEhlcmJlbGluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zXG5cbiAgICAoWG1sIDogWG1sX3NpZ3MuVClcbiAgICAoQyA6IEh0bWxfc2lncy5XcmFwcGVkX2Z1bmN0aW9ucyB3aXRoIG1vZHVsZSBYbWwgPSBYbWwpXG4gICAgKFN2ZyA6IFN2Z19zaWdzLlQgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuXG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG5cbiAgbW9kdWxlIFcgPSBYbWwuV1xuXG4gIG1vZHVsZSBJbmZvID0gc3RydWN0XG4gICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwidGV4dC9odG1sXCJcbiAgICBsZXQgYWx0ZXJuYXRpdmVfY29udGVudF90eXBlcyA9IFtcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiO1wiYXBwbGljYXRpb24veG1sXCI7XCJ0ZXh0L3htbFwiXVxuICAgIGxldCB2ZXJzaW9uID0gXCJIVE1MNS1kcmFmdFwiXG4gICAgbGV0IHN0YW5kYXJkID0gXCJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9cIlxuICAgIGxldCBuYW1lc3BhY2UgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuICAgIGxldCBkb2N0eXBlID1cbiAgICAgIFhtbF9wcmludC5jb21wb3NlX2RvY3R5cGUgXCJodG1sXCIgW11cbiAgICBsZXQgZW1wdHl0YWdzID1cbiAgICAgIFsgXCJhcmVhXCI7IFwiYmFzZVwiOyBcImJyXCI7IFwiY29sXCI7IFwiY29tbWFuZFwiOyBcImVtYmVkXCI7IFwiaHJcIjsgXCJpbWdcIjtcbiAgICAgICAgXCJpbnB1dFwiOyBcImtleWdlblwiOyBcImxpbmtcIjsgXCJtZXRhXCI7IFwicGFyYW1cIjsgXCJzb3VyY2VcIjsgXCJ3YnJcIiBdXG4gIGVuZFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIFcudGxpc3RcblxuICB0eXBlIHVyaSA9IFhtbC51cmlcbiAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuICBsZXQgdXJpX29mX3N0cmluZyA9IFhtbC51cmlfb2Zfc3RyaW5nXG5cbiAgdHlwZSBpbWFnZV9jYW5kaWRhdGUgPVxuICAgIFsgYFVybCBvZiB1cmlcbiAgICB8IGBVcmxfd2lkdGggb2YgdXJpICogSHRtbF90eXBlcy5udW1iZXJcbiAgICB8IGBVcmxfcGl4ZWwgb2YgdXJpICogSHRtbF90eXBlcy5mbG9hdF9udW1iZXIgXVxuXG4gIHR5cGUgJ2EgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gIGxldCB0b194bWxhdHRyaWJzIHggPSB4XG4gIGxldCB0b19hdHRyaWIgeCA9IHhcblxuICAoKiBWQiAqKVxuICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gIGxldCBpbnRfYXR0cmliID0gWG1sLmludF9hdHRyaWJcblxuICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYlxuXG4gIGxldCBjb21tYV9zZXBfYXR0cmliID0gWG1sLmNvbW1hX3NlcF9hdHRyaWJcblxuICBsZXQgdXNlcl9hdHRyaWIgZiBuYW1lIHYgPSBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChXLmZtYXAgZiB2KVxuXG4gIGxldCBib29sX2F0dHJpYiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2xcblxuICBsZXQgY29uc3RhbnRfYXR0cmliIGEgKCkgPVxuICAgIHN0cmluZ19hdHRyaWIgYSAoVy5yZXR1cm4gYSlcblxuICBsZXQgbGlua3R5cGVzX2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xpbmt0eXBlcyBuYW1lIHhcblxuICBsZXQgbWVkaWFkZXNjX2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX21lZGlhZGVzYyBuYW1lIHhcblxuICBsZXQgc3Jjc2V0X2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NyY3NldCBuYW1lIHhcblxuICAoKiBDb3JlOiAqKVxuICBsZXQgYV9jbGFzcyA9IHNwYWNlX3NlcF9hdHRyaWIgXCJjbGFzc1wiXG5cbiAgbGV0IGFfaWQgPSBzdHJpbmdfYXR0cmliIFwiaWRcIlxuXG4gIGxldCBhX3VzZXJfZGF0YSBuYW1lID0gc3RyaW5nX2F0dHJpYiAoXCJkYXRhLVwiIF4gbmFtZSlcblxuICBsZXQgYV90aXRsZSA9IHN0cmluZ19hdHRyaWIgXCJ0aXRsZVwiXG5cbiAgKCogSTE4TjogKilcbiAgbGV0IGFfeG1sX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwieG1sOmxhbmdcIlxuICBsZXQgYV9sYW5nID0gc3RyaW5nX2F0dHJpYiBcImxhbmdcIlxuXG4gICgqIFN0eWxlOiAqKVxuICBsZXQgYV9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJzdHlsZVwiXG5cbiAgbGV0IGFfcHJvcGVydHkgPSBzdHJpbmdfYXR0cmliIFwicHJvcGVydHlcIlxuXG4gICgqIEV2ZW50czogKilcbiAgbGV0IGFfb25hYm9ydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWJvcnRcIlxuICBsZXQgYV9vbmFmdGVycHJpbnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFmdGVycHJpbnRcIlxuICBsZXQgYV9vbmJlZm9yZXByaW50ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25iZWZvcmVwcmludFwiXG4gIGxldCBhX29uYmVmb3JldW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25iZWZvcmV1bmxvYWRcIlxuICBsZXQgYV9vbmJsdXIgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJsdXJcIlxuICBsZXQgYV9vbmNhbnBsYXkgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNhbnBsYXlcIlxuICBsZXQgYV9vbmNhbnBsYXl0aHJvdWdoID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jYW5wbGF5dGhyb3VnaFwiXG4gIGxldCBhX29uY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jaGFuZ2VcIlxuICBsZXQgYV9vbmNsb3NlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jbG9zZVwiXG4gIGxldCBhX29uZHVyYXRpb25jaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmR1cmF0aW9uY2hhbmdlXCJcbiAgbGV0IGFfb25lbXB0aWVkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lbXB0aWVkXCJcbiAgbGV0IGFfb25lbmRlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW5kZWRcIlxuICBsZXQgYV9vbmVycm9yID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lcnJvclwiXG4gIGxldCBhX29uZm9jdXMgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvY3VzXCJcbiAgbGV0IGFfb25mb3JtY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb3JtY2hhbmdlXCJcbiAgbGV0IGFfb25mb3JtaW5wdXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvcm1pbnB1dFwiXG4gIGxldCBhX29uaGFzaGNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uaGFzaGNoYW5nZVwiXG4gIGxldCBhX29uaW5wdXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmlucHV0XCJcbiAgbGV0IGFfb25pbnZhbGlkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25pbnZhbGlkXCJcbiAgbGV0IGFfb25vZmZsaW5lID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25vZmZsaW5lXCJcbiAgbGV0IGFfb25vbmxpbmUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm9ubGluZVwiXG4gIGxldCBhX29ucGF1c2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBhdXNlXCJcbiAgbGV0IGFfb25wbGF5ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wbGF5XCJcbiAgbGV0IGFfb25wbGF5aW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wbGF5aW5nXCJcbiAgbGV0IGFfb25wYWdlaGlkZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGFnZWhpZGVcIlxuICBsZXQgYV9vbnBhZ2VzaG93ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wYWdlc2hvd1wiXG4gIGxldCBhX29ucG9wc3RhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBvcHN0YXRlXCJcbiAgbGV0IGFfb25wcm9ncmVzcyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucHJvZ3Jlc3NcIlxuICBsZXQgYV9vbnJhdGVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJhdGVjaGFuZ2VcIlxuICBsZXQgYV9vbnJlYWR5c3RhdGVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIlxuICBsZXQgYV9vbnJlZG8gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlZG9cIlxuICBsZXQgYV9vbnJlc2l6ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVzaXplXCJcbiAgbGV0IGFfb25zY3JvbGwgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNjcm9sbFwiXG4gIGxldCBhX29uc2Vla2VkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zZWVrZWRcIlxuICBsZXQgYV9vbnNlZWtpbmcgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNlZWtpbmdcIlxuICBsZXQgYV9vbnNlbGVjdCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2VsZWN0XCJcbiAgbGV0IGFfb25zaG93ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zaG93XCJcbiAgbGV0IGFfb25zdGFsbGVkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdGFsbGVkXCJcbiAgbGV0IGFfb25zdG9yYWdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdG9yYWdlXCJcbiAgbGV0IGFfb25zdWJtaXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN1Ym1pdFwiXG4gIGxldCBhX29uc3VzcGVuZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3VzcGVuZFwiXG4gIGxldCBhX29udGltZXVwZGF0ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udGltZXVwZGF0ZVwiXG4gIGxldCBhX29udW5kbyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5kb1wiXG4gIGxldCBhX29udW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib251bmxvYWRcIlxuICBsZXQgYV9vbnZvbHVtZWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udm9sdW1lY2hhbmdlXCJcbiAgbGV0IGFfb253YWl0aW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib253YWl0aW5nXCJcbiAgbGV0IGFfb25sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkXCJcbiAgbGV0IGFfb25sb2FkZWRkYXRhID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkZWRkYXRhXCJcbiAgbGV0IGFfb25sb2FkZWRtZXRhZGF0YSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZGVkbWV0YWRhdGFcIlxuICBsZXQgYV9vbmxvYWRzdGFydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZHN0YXJ0XCJcbiAgbGV0IGFfb25tZXNzYWdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tZXNzYWdlXCJcbiAgbGV0IGFfb25tb3VzZXdoZWVsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZXdoZWVsXCJcblxuICAoKiogSmF2YXNjcmlwdCBtb3VzZSBldmVudHMgKilcbiAgbGV0IGFfb25jbGljayA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2xpY2tcIlxuICBsZXQgYV9vbmNvbnRleHRtZW51ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jb250ZXh0bWVudVwiXG4gIGxldCBhX29uZGJsY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRibGNsaWNrXCJcbiAgbGV0IGFfb25kcmFnID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnXCJcbiAgbGV0IGFfb25kcmFnZW5kID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnZW5kXCJcbiAgbGV0IGFfb25kcmFnZW50ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdlbnRlclwiXG4gIGxldCBhX29uZHJhZ2xlYXZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnbGVhdmVcIlxuICBsZXQgYV9vbmRyYWdvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnb3ZlclwiXG4gIGxldCBhX29uZHJhZ3N0YXJ0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnc3RhcnRcIlxuICBsZXQgYV9vbmRyb3AgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyb3BcIlxuICBsZXQgYV9vbm1vdXNlZG93biA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vkb3duXCJcbiAgbGV0IGFfb25tb3VzZXVwID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZXVwXCJcbiAgbGV0IGFfb25tb3VzZW92ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3ZlclwiXG4gIGxldCBhX29ubW91c2Vtb3ZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW1vdmVcIlxuICBsZXQgYV9vbm1vdXNlb3V0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW91dFwiXG5cbiAgKCoqIEphdmFzY3JpcHQgdG91Y2ggZXZlbnRzICopXG4gIGxldCBhX29udG91Y2hzdGFydCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hzdGFydFwiXG4gIGxldCBhX29udG91Y2hlbmQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoZW5kXCJcbiAgbGV0IGFfb250b3VjaG1vdmUgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNobW92ZVwiXG4gIGxldCBhX29udG91Y2hjYW5jZWwgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoY2FuY2VsXCJcblxuICAoKiogSmF2YXNjcmlwdCBrZXlib2FyZCBldmVudHMgKilcbiAgbGV0IGFfb25rZXlwcmVzcyA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ua2V5cHJlc3NcIlxuICBsZXQgYV9vbmtleWRvd24gPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmtleWRvd25cIlxuICBsZXQgYV9vbmtleXVwID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25rZXl1cFwiXG5cbiAgKCogT3RoZXIgQXR0cmlidXRlcyAqKVxuICBsZXQgYV92ZXJzaW9uID0gc3RyaW5nX2F0dHJpYiBcInZlcnNpb25cIlxuXG4gIGxldCBhX3htbG5zIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sbnNcIiB4XG5cbiAgbGV0IGFfbWFuaWZlc3QgPSB1cmlfYXR0cmliIFwibWFuaWZlc3RcIlxuXG4gIGxldCBhX2NpdGUgPSB1cmlfYXR0cmliIFwiY2l0ZVwiXG5cbiAgbGV0IGFfeG1sX3NwYWNlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sOnNwYWNlXCIgeFxuXG4gIGxldCBhX2FjY2Vzc2tleSBjID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9jaGFyYWN0ZXIgXCJhY2Nlc3NrZXlcIiBjXG5cbiAgbGV0IGFfY2hhcnNldCA9IHN0cmluZ19hdHRyaWIgXCJjaGFyc2V0XCJcblxuICBsZXQgYV9hY2NlcHRfY2hhcnNldCA9IHNwYWNlX3NlcF9hdHRyaWIgXCJhY2NlcHQtY2hhcnNldFwiXG5cbiAgbGV0IGFfYWNjZXB0ID0gY29tbWFfc2VwX2F0dHJpYiBcImFjY2VwdFwiXG5cbiAgbGV0IGFfaHJlZiA9IHVyaV9hdHRyaWIgXCJocmVmXCJcblxuICBsZXQgYV9ocmVmbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJocmVmbGFuZ1wiXG5cbiAgbGV0IGFfZG93bmxvYWQgZmlsZSA9XG4gICAgdXNlcl9hdHRyaWIgKEMudW5vcHRpb25fc3RyaW5nKSBcImRvd25sb2FkXCIgZmlsZVxuXG4gIGxldCBhX3JlbCA9IGxpbmt0eXBlc19hdHRyaWIgXCJyZWxcIlxuXG4gIGxldCBhX3RhYmluZGV4ID0gaW50X2F0dHJpYiBcInRhYmluZGV4XCJcblxuICBsZXQgYV9taW1lX3R5cGUgPSBzdHJpbmdfYXR0cmliIFwidHlwZVwiXG5cbiAgbGV0IGFfYWx0ID0gc3RyaW5nX2F0dHJpYiBcImFsdFwiXG5cbiAgbGV0IGFfaGVpZ2h0IHAgPSBpbnRfYXR0cmliIFwiaGVpZ2h0XCIgcFxuXG4gIGxldCBhX3NyYyA9IHVyaV9hdHRyaWIgXCJzcmNcIlxuXG4gIGxldCBhX3dpZHRoIHAgPSBpbnRfYXR0cmliIFwid2lkdGhcIiBwXG5cbiAgbGV0IGFfbGFiZWxfZm9yID0gc3RyaW5nX2F0dHJpYiBcImZvclwiXG4gIGxldCBhX2ZvciA9IGFfbGFiZWxfZm9yXG5cbiAgbGV0IGFfb3V0cHV0X2ZvciA9IHNwYWNlX3NlcF9hdHRyaWIgXCJmb3JcIlxuICBsZXQgYV9mb3JfbGlzdCA9IGFfb3V0cHV0X2ZvclxuXG4gIGxldCBhX3NlbGVjdGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzZWxlY3RlZFwiXG5cbiAgbGV0IGFfdGV4dF92YWx1ZSA9IHN0cmluZ19hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfaW50X3ZhbHVlID0gaW50X2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV92YWx1ZSA9IHN0cmluZ19hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfZmxvYXRfdmFsdWUgPSBmbG9hdF9hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfYWN0aW9uID0gdXJpX2F0dHJpYiBcImFjdGlvblwiXG5cbiAgbGV0IGFfbWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWV0aG9kXCIgeFxuXG4gIGxldCBhX2Zvcm1tZXRob2QgeCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZm9ybW1ldGhvZFwiIHhcblxuICBsZXQgYV9lbmN0eXBlID0gc3RyaW5nX2F0dHJpYiBcImVuY3R5cGVcIlxuXG4gIGxldCBhX2NoZWNrZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImNoZWNrZWRcIlxuXG4gIGxldCBhX2Rpc2FibGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJkaXNhYmxlZFwiXG5cbiAgbGV0IGFfcmVhZG9ubHkgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInJlYWRvbmx5XCJcblxuICBsZXQgYV9tYXhsZW5ndGggPSBpbnRfYXR0cmliIFwibWF4bGVuZ3RoXCJcblxuICBsZXQgYV9taW5sZW5ndGggPSBpbnRfYXR0cmliIFwibWlubGVuZ3RoXCJcblxuICBsZXQgYV9uYW1lID0gc3RyaW5nX2F0dHJpYiBcIm5hbWVcIlxuXG4gIGxldCBhX2FsbG93ZnVsbHNjcmVlbiA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYWxsb3dmdWxsc2NyZWVuXCJcblxuICBsZXQgYV9hbGxvd3BheW1lbnRyZXF1ZXN0ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhbGxvd3BheW1lbnRyZXF1ZXN0XCJcblxuICBsZXQgYV9yZWZlcnJlcnBvbGljeSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9yZWZlcnJlcnBvbGljeSBcInJlZmVycmVycG9saWN5XCIgeFxuXG4gIGxldCBhX2F1dG9jb21wbGV0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9hdXRvY29tcGxldGUgXCJhdXRvY29tcGxldGVcIiB4XG5cbiAgbGV0IGFfYXN5bmMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImFzeW5jXCJcblxuICBsZXQgYV9hdXRvZm9jdXMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImF1dG9mb2N1c1wiXG5cbiAgbGV0IGFfYXV0b3BsYXkgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImF1dG9wbGF5XCJcblxuICBsZXQgYV9tdXRlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibXV0ZWRcIlxuXG4gIGxldCBhX2Nyb3Nzb3JpZ2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiY3Jvc3NvcmlnaW5cIiB4XG5cbiAgbGV0IGFfaW50ZWdyaXR5ID0gc3RyaW5nX2F0dHJpYiBcImludGVncml0eVwiXG5cbiAgbGV0IGFfbWVkaWFncm91cCA9IHN0cmluZ19hdHRyaWIgXCJtZWRpYWdyb3VwXCJcblxuICBsZXQgYV9jaGFsbGVuZ2UgPSBzdHJpbmdfYXR0cmliIFwiY2hhbGxlbmdlXCJcblxuICBsZXQgYV9jb250ZW50ZWRpdGFibGUgY2UgPVxuICAgIGJvb2xfYXR0cmliIFwiY29udGVudGVkaXRhYmxlXCIgY2VcblxuICBsZXQgYV9jb250ZXh0bWVudSA9IHN0cmluZ19hdHRyaWIgXCJjb250ZXh0bWVudVwiXG5cbiAgbGV0IGFfY29udHJvbHMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImNvbnRyb2xzXCJcblxuICBsZXQgYV9kaXIgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJkaXJcIiB4XG5cbiAgbGV0IGFfZHJhZ2dhYmxlIGQgPVxuICAgIGJvb2xfYXR0cmliIFwiZHJhZ2dhYmxlXCIgZFxuXG4gIGxldCBhX2Zvcm0gPSBzdHJpbmdfYXR0cmliIFwiZm9ybVwiXG5cbiAgbGV0IGFfZm9ybWFjdGlvbiA9IHVyaV9hdHRyaWIgXCJmb3JtYWN0aW9uXCJcblxuICBsZXQgYV9mb3JtZW5jdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJmb3JtZW5jdHlwZVwiXG5cbiAgbGV0IGFfZm9ybW5vdmFsaWRhdGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImZvcm1ub3ZhbGlkYXRlXCJcblxuICBsZXQgYV9mb3JtdGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcImZvcm10YXJnZXRcIlxuXG4gIGxldCBhX2hpZGRlbiA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiaGlkZGVuXCJcblxuICBsZXQgYV9oaWdoID0gZmxvYXRfYXR0cmliIFwiaGlnaFwiXG5cbiAgbGV0IGFfaWNvbiA9IHVyaV9hdHRyaWIgXCJpY29uXCJcblxuICBsZXQgYV9pc21hcCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiaXNtYXBcIlxuXG4gIGxldCBhX2tleXR5cGUgPSBzdHJpbmdfYXR0cmliIFwia2V5dHlwZVwiXG5cbiAgbGV0IGFfbGlzdCA9IHN0cmluZ19hdHRyaWIgXCJsaXN0XCJcblxuICBsZXQgYV9sb29wID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJsb29wXCJcblxuICBsZXQgYV9sb3cgPSBmbG9hdF9hdHRyaWIgXCJsb3dcIlxuXG4gIGxldCBhX21heCA9IGZsb2F0X2F0dHJpYiBcIm1heFwiXG5cbiAgbGV0IGFfaW5wdXRfbWF4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lIFwibWF4XCJcblxuICBsZXQgYV9taW4gPSBmbG9hdF9hdHRyaWIgXCJtaW5cIlxuXG4gIGxldCBhX2lucHV0X21pbiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcl9kYXRldGltZSBcIm1pblwiXG5cbiAgbGV0IGFfaW5wdXRtb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiaW5wdXRtb2RlXCIgeFxuXG4gIGxldCBhX25vdmFsaWRhdGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm5vdmFsaWRhdGVcIlxuXG4gIGxldCBhX29wZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm9wZW5cIlxuXG4gIGxldCBhX29wdGltdW0gPSBmbG9hdF9hdHRyaWIgXCJvcHRpbXVtXCJcblxuICBsZXQgYV9wYXR0ZXJuID0gc3RyaW5nX2F0dHJpYiBcInBhdHRlcm5cIlxuXG4gIGxldCBhX3BsYWNlaG9sZGVyID0gc3RyaW5nX2F0dHJpYiBcInBsYWNlaG9sZGVyXCJcblxuICBsZXQgYV9wb3N0ZXIgPSB1cmlfYXR0cmliIFwicG9zdGVyXCJcblxuICBsZXQgYV9wcmVsb2FkIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicHJlbG9hZFwiIHhcblxuICBsZXQgYV9wdWJkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJwdWJkYXRlXCJcblxuICBsZXQgYV9yYWRpb2dyb3VwID0gc3RyaW5nX2F0dHJpYiBcInJhZGlvZ3JvdXBcIlxuXG4gIGxldCBhX3JlcXVpcmVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZXF1aXJlZFwiXG5cbiAgbGV0IGFfcmV2ZXJzZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInJlc2VydmVkXCJcblxuICBsZXQgYV9zYW5kYm94IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NhbmRib3ggXCJzYW5kYm94XCIgeFxuXG4gIGxldCBhX3NwZWxsY2hlY2sgc2MgPVxuICAgIGJvb2xfYXR0cmliIFwic3BlbGxjaGVja1wiIHNjXG5cbiAgbGV0IGFfc2NvcGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzY29wZWRcIlxuXG4gIGxldCBhX3NlYW1sZXNzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzZWFtbGVzc1wiXG5cbiAgbGV0IGFfc2l6ZXMgc2l6ZXMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NpemVzIFwic2l6ZXNcIiBzaXplc1xuXG4gIGxldCBhX3NwYW4gPSBpbnRfYXR0cmliIFwic3BhblwiXG5cbiAgKCpsZXQgYV9zcmNkb2MqKVxuICBsZXQgYV9zcmNsYW5nID0gc3RyaW5nX2F0dHJpYiBcInhtbDpsYW5nXCJcblxuICBsZXQgYV9zcmNzZXQgPSBzcmNzZXRfYXR0cmliIFwic3Jjc2V0XCJcblxuICBsZXQgYV9pbWdfc2l6ZXMgPSBjb21tYV9zZXBfYXR0cmliIFwic2l6ZXNcIlxuXG4gIGxldCBhX3N0YXJ0ID0gaW50X2F0dHJpYiBcInN0YXJ0XCJcblxuICBsZXQgYV9zdGVwIHN0ZXAgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3N0ZXAgXCJzdGVwXCIgc3RlcFxuXG4gIGxldCBhX3RyYW5zbGF0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRyYW5zbGF0ZVwiIHhcbiAgXG4gIGxldCBhX3dyYXAgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ3cmFwXCIgeFxuXG4gIGxldCBhX3NpemUgPSBpbnRfYXR0cmliIFwic2l6ZVwiXG5cbiAgbGV0IGFfaW5wdXRfdHlwZSBpdCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5wdXRfdHlwZSBcInR5cGVcIiBpdFxuXG4gIGxldCBhX21lbnVfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfY29tbWFuZF90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV9idXR0b25fdHlwZSBidCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5wdXRfdHlwZSBcInR5cGVcIiBidFxuXG4gIGxldCBhX3NjcmlwdF90eXBlIHNjID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc2NyaXB0X3R5cGUgXCJ0eXBlXCIgc2NcblxuICBsZXQgYV9tdWx0aXBsZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibXVsdGlwbGVcIlxuXG4gIGxldCBhX2NvbHMgPSBpbnRfYXR0cmliIFwiY29sc1wiXG5cbiAgbGV0IGFfcm93cyA9IGludF9hdHRyaWIgXCJyb3dzXCJcblxuICBsZXQgYV9zdW1tYXJ5ID0gc3RyaW5nX2F0dHJpYiBcInN1bW1hcnlcIlxuXG4gIGxldCBhX2FsaWduIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYWxpZ25cIiB4XG5cbiAgbGV0IGFfYXhpcyA9IHN0cmluZ19hdHRyaWIgXCJheGlzXCJcblxuICBsZXQgYV9jb2xzcGFuID0gaW50X2F0dHJpYiBcImNvbHNwYW5cIlxuXG4gIGxldCBhX2hlYWRlcnMgPSBzcGFjZV9zZXBfYXR0cmliIFwiaGVhZGVyc1wiXG5cbiAgbGV0IGFfcm93c3BhbiA9IGludF9hdHRyaWIgXCJyb3dzcGFuXCJcblxuICBsZXQgYV9zY29wZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNjb3BlXCIgeFxuXG4gIGxldCBhX2JvcmRlciA9IGludF9hdHRyaWIgXCJib3JkZXJcIlxuXG4gIGxldCBhX3J1bGVzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicnVsZXNcIiB4XG5cbiAgbGV0IGFfY2hhciBjID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9jaGFyYWN0ZXIgXCJjaGFyXCIgY1xuXG4gIGxldCBhX2RhdGEgPSB1cmlfYXR0cmliIFwiZGF0YVwiXG5cbiAgbGV0IGFfY29kZXR5cGUgPSBzdHJpbmdfYXR0cmliIFwiY29kZXR5cGVcIlxuXG4gIGxldCBhX2ZyYW1lYm9yZGVyIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZnJhbWVib3JkZXJcIiB4XG5cbiAgbGV0IGFfbWFyZ2luaGVpZ2h0ID0gaW50X2F0dHJpYiBcIm1hcmdpbmhlaWdodFwiXG5cbiAgbGV0IGFfbWFyZ2lud2lkdGggPSBpbnRfYXR0cmliIFwibWFyZ2lud2lkdGhcIlxuXG4gIGxldCBhX3Njcm9sbGluZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNjcm9sbGluZ1wiIHhcblxuICBsZXQgYV90YXJnZXQgPSBzdHJpbmdfYXR0cmliIFwidGFyZ2V0XCJcblxuICBsZXQgYV9jb250ZW50ID0gc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRcIlxuXG4gIGxldCBhX2h0dHBfZXF1aXYgPSBzdHJpbmdfYXR0cmliIFwiaHR0cC1lcXVpdlwiXG5cbiAgbGV0IGFfbWVkaWEgPSBtZWRpYWRlc2NfYXR0cmliIFwibWVkaWFcIlxuXG4gICgqIEFSSUEgKilcblxuICBsZXQgYV9yb2xlID0gc3BhY2Vfc2VwX2F0dHJpYiBcInJvbGVcIlxuXG4gIGxldCBhX2FyaWEgbmFtZSA9IHNwYWNlX3NlcF9hdHRyaWIgKFwiYXJpYS1cIiBeIG5hbWUpXG5cbiAgdHlwZSAnYSBlbHQgPSBYbWwuZWx0XG5cbiAgdHlwZSAoJ2EsICdiKSBudWxsYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiB1bml0IC0+ICdiIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHVuYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAnYiBlbHQgd3JhcCAtPiAnYyBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBzdGFyID1cbiAgICA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICgnYiBlbHQpIGxpc3Rfd3JhcCAtPiAnYyBlbHRcblxuICBsZXQgdGVybWluYWwgdGFnID9hICgpID0gWG1sLmxlYWYgP2EgdGFnXG5cbiAgbGV0IHVuYXJ5IHRhZyA/YSBlbHQgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5zaW5nbGV0b24gZWx0KVxuXG4gIGxldCBzdGFyIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICBsZXQgcGx1cyB0YWcgP2EgZWx0IGVsdHMgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5jb25zIGVsdCBlbHRzKVxuXG4gIGxldCBvcHRpb25fY29ucyBvcHQgZWx0cyA9XG4gICAgbWF0Y2ggb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gZWx0c1xuICAgIHwgU29tZSB4IC0+IFcuY29ucyB4IGVsdHNcblxuICBsZXQgYm9keSA9IHN0YXIgXCJib2R5XCJcblxuICBsZXQgaGVhZCA9IHBsdXMgXCJoZWFkXCJcblxuICBsZXQgdGl0bGUgPSB1bmFyeSBcInRpdGxlXCJcblxuICBsZXQgaHRtbCA/YSBoZWFkIGJvZHkgPVxuICAgIGxldCBjb250ZW50ID0gVy5jb25zIGhlYWQgKFcuc2luZ2xldG9uIGJvZHkpIGluXG4gICAgWG1sLm5vZGUgP2EgXCJodG1sXCIgY29udGVudFxuXG4gIGxldCBmb290ZXIgPSBzdGFyIFwiZm9vdGVyXCJcblxuICBsZXQgaGVhZGVyID0gc3RhciBcImhlYWRlclwiXG5cbiAgbGV0IHNlY3Rpb24gPSBzdGFyIFwic2VjdGlvblwiXG5cbiAgbGV0IG5hdiA9IHN0YXIgXCJuYXZcIlxuXG4gIGxldCB0eHQgcyA9IFhtbC5wY2RhdGEgc1xuICBsZXQgcGNkYXRhID0gdHh0XG5cbiAgbGV0IGVudGl0eSA9IFhtbC5lbnRpdHlcblxuICBsZXQgc3BhY2UgKCkgPSBlbnRpdHkgXCJuYnNwXCJcblxuICBsZXQgY2RhdGEgPSBYbWwuY2RhdGFcblxuICBsZXQgY2RhdGFfc2NyaXB0ID0gWG1sLmNkYXRhX3NjcmlwdFxuXG4gIGxldCBjZGF0YV9zdHlsZSA9IFhtbC5jZGF0YV9zdHlsZVxuXG4gIGxldCBoMSA9IHN0YXIgXCJoMVwiXG5cbiAgbGV0IGgyID0gc3RhciBcImgyXCJcblxuICBsZXQgaDMgPSBzdGFyIFwiaDNcIlxuXG4gIGxldCBoNCA9IHN0YXIgXCJoNFwiXG5cbiAgbGV0IGg1ID0gc3RhciBcImg1XCJcblxuICBsZXQgaDYgPSBzdGFyIFwiaDZcIlxuXG4gIGxldCBoZ3JvdXAgPSBzdGFyIFwiaGdyb3VwXCJcblxuICBsZXQgYWRkcmVzcyA9IHN0YXIgXCJhZGRyZXNzXCJcblxuICBsZXQgYmxvY2txdW90ZSA9IHN0YXIgXCJibG9ja3F1b3RlXCJcblxuICBsZXQgZGlhbG9nID0gc3RhciBcImRpYWxvZ1wiXG5cbiAgbGV0IGRpdiA9IHN0YXIgXCJkaXZcIlxuXG4gIGxldCBwID0gc3RhciBcInBcIlxuXG4gIGxldCBwcmUgPSBzdGFyIFwicHJlXCJcblxuICBsZXQgYWJiciA9IHN0YXIgXCJhYmJyXCJcblxuICBsZXQgYnIgPSB0ZXJtaW5hbCBcImJyXCJcblxuICBsZXQgY2l0ZSA9IHN0YXIgXCJjaXRlXCJcblxuICBsZXQgY29kZSA9IHN0YXIgXCJjb2RlXCJcblxuICBsZXQgZGZuID0gc3RhciBcImRmblwiXG5cbiAgbGV0IGVtID0gc3RhciBcImVtXCJcblxuICBsZXQga2JkID0gc3RhciBcImtiZFwiXG5cbiAgbGV0IHEgPSBzdGFyIFwicVwiXG5cbiAgbGV0IHNhbXAgPSBzdGFyIFwic2FtcFwiXG5cbiAgbGV0IHNwYW4gPSBzdGFyIFwic3BhblwiXG5cbiAgbGV0IHN0cm9uZyA9IHN0YXIgXCJzdHJvbmdcIlxuXG4gIGxldCB0aW1lID0gc3RhciBcInRpbWVcIlxuXG4gIGxldCB2YXIgPSBzdGFyIFwidmFyXCJcblxuICBsZXQgYSA9IHN0YXIgXCJhXCJcblxuICBsZXQgZGwgPSBzdGFyIFwiZGxcIlxuXG4gIGxldCBvbCA9IHN0YXIgXCJvbFwiXG5cbiAgbGV0IHVsID0gc3RhciBcInVsXCJcblxuICBsZXQgZGQgPSBzdGFyIFwiZGRcIlxuXG4gIGxldCBkdCA9IHN0YXIgXCJkdFwiXG5cbiAgbGV0IGxpID0gc3RhciBcImxpXCJcblxuICBsZXQgaHIgPSB0ZXJtaW5hbCBcImhyXCJcblxuICBsZXQgYiA9IHN0YXIgXCJiXCJcblxuICBsZXQgaSA9IHN0YXIgXCJpXCJcblxuICBsZXQgdSA9IHN0YXIgXCJ1XCJcblxuICBsZXQgc21hbGwgPSBzdGFyIFwic21hbGxcIlxuXG4gIGxldCBzdWIgPSBzdGFyIFwic3ViXCJcblxuICBsZXQgc3VwID0gc3RhciBcInN1cFwiXG5cbiAgbGV0IG1hcmsgPSBzdGFyIFwibWFya1wiXG5cbiAgbGV0IHJwID0gc3RhciBcInJwXCJcblxuICBsZXQgcnQgPSBzdGFyIFwicnRcIlxuXG4gIGxldCBydWJ5ID0gc3RhciBcInJ1YnlcIlxuXG4gIGxldCB3YnIgPSB0ZXJtaW5hbCBcIndiclwiXG5cbiAgKCogVkIgKilcbiAgdHlwZSBzaGFwZSA9IFsgfCBgUmVjdCB8IGBDaXJjbGUgfCBgUG9seSB8IGBEZWZhdWx0IF1cblxuICBsZXQgYmRvIH5kaXIgPyhhID0gW10pIGVsdHMgPSBYbWwubm9kZSB+YTogKChhX2RpciBkaXIpIDo6IGEpIFwiYmRvXCIgZWx0c1xuXG4gIGxldCBhX2RhdGV0aW1lID0gc3RyaW5nX2F0dHJpYiBcImRhdGV0aW1lXCJcblxuICBsZXQgYV9zaGFwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNoYXBlXCIgeFxuXG4gIGxldCBhX2Nvb3JkcyBjb29yZHMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJjb29yZHNcIiBjb29yZHNcblxuICBsZXQgYV91c2VtYXAgPSBzdHJpbmdfYXR0cmliIFwidXNlbWFwXCJcblxuICBsZXQgYV9kZWZlciA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiZGVmZXJcIlxuXG4gIGxldCBhX2xhYmVsID0gc3RyaW5nX2F0dHJpYiBcImxhYmVsXCJcblxuICBsZXQgYXJlYSB+YWx0ID8oYSA9IFtdKSAoKSA9IFhtbC5sZWFmIH5hOiAoKGFfYWx0IGFsdCkgOjogYSkgXCJhcmVhXCJcblxuICBsZXQgbWFwID0gc3RhciBcIm1hcFwiXG5cbiAgbGV0IGRlbCA9IHN0YXIgXCJkZWxcIlxuXG4gIGxldCBpbnMgPSBzdGFyIFwiaW5zXCJcblxuICBsZXQgc2NyaXB0ID0gdW5hcnkgXCJzY3JpcHRcIlxuXG4gIGxldCBub3NjcmlwdCA9IHN0YXIgXCJub3NjcmlwdFwiXG5cbiAgbGV0IHRlbXBsYXRlID0gc3RhciBcInRlbXBsYXRlXCJcblxuICBsZXQgYXJ0aWNsZSA9IHN0YXIgXCJhcnRpY2xlXCJcblxuICBsZXQgYXNpZGUgPSBzdGFyIFwiYXNpZGVcIlxuXG4gIGxldCBtYWluID0gc3RhciBcIm1haW5cIlxuXG4gIGxldCB2aWRlb19hdWRpbyBuYW1lID9zcmMgP3NyY3MgPyhhID0gW10pIGVsdHMgPVxuICAgIGxldCBhID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gYVxuICAgICAgfCBTb21lIHVyaSAtPiAoYV9zcmMgdXJpKSA6OiBhXG4gICAgaW5cbiAgICBtYXRjaCBzcmNzIHdpdGhcbiAgICB8IE5vbmUgLT4gWG1sLm5vZGUgbmFtZSB+YSBlbHRzXG4gICAgfCBTb21lIHNyY3MgLT4gWG1sLm5vZGUgbmFtZSB+YSAoVy5hcHBlbmQgc3JjcyBlbHRzKVxuXG4gIGxldCBhdWRpbyA9IHZpZGVvX2F1ZGlvIFwiYXVkaW9cIlxuXG4gIGxldCB2aWRlbyA9IHZpZGVvX2F1ZGlvIFwidmlkZW9cIlxuXG4gIGxldCBjYW52YXMgPSBzdGFyIFwiY2FudmFzXCJcblxuICBsZXQgY29tbWFuZCB+bGFiZWwgPyhhID0gW10pICgpID1cbiAgICBYbWwubGVhZiB+YTogKChhX2xhYmVsIGxhYmVsKSA6OiBhKSBcImNvbW1hbmRcIlxuXG4gIGxldCBtZW51ID9jaGlsZHJlbiA/YSAoKSA9XG4gICAgbGV0IGNoaWxkcmVuID0gbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFcubmlsICgpXG4gICAgICB8IFNvbWUgKGBMaXMgbClcbiAgICAgIHwgU29tZSAoYEZsb3dzIGwpIC0+IGwgaW5cbiAgICBYbWwubm9kZSA/YSBcIm1lbnVcIiBjaGlsZHJlblxuXG4gIGxldCBlbWJlZCA9IHRlcm1pbmFsIFwiZW1iZWRcIlxuXG4gIGxldCBzb3VyY2UgPSB0ZXJtaW5hbCBcInNvdXJjZVwiXG5cbiAgbGV0IG1ldGVyID0gc3RhciBcIm1ldGVyXCJcblxuICBsZXQgb3V0cHV0X2VsdCA9IHN0YXIgXCJvdXRwdXRcIlxuXG4gIGxldCBmb3JtID0gc3RhciBcImZvcm1cIlxuXG4gIGxldCBzdmcgPyhhID0gW10pIGNoaWxkcmVuID1cbiAgICBTdmcudG9lbHQgKFN2Zy5zdmcgfmEgY2hpbGRyZW4pXG5cbiAgbGV0IGlucHV0ID0gdGVybWluYWwgXCJpbnB1dFwiXG5cbiAgbGV0IGtleWdlbiA9IHRlcm1pbmFsIFwia2V5Z2VuXCJcblxuICBsZXQgbGFiZWwgPSBzdGFyIFwibGFiZWxcIlxuXG4gIGxldCBvcHRpb24gPSB1bmFyeSBcIm9wdGlvblwiXG5cbiAgbGV0IHNlbGVjdCA9IHN0YXIgXCJzZWxlY3RcIlxuXG4gIGxldCB0ZXh0YXJlYSA9IHVuYXJ5IFwidGV4dGFyZWFcIlxuXG4gIGxldCBidXR0b24gPSBzdGFyIFwiYnV0dG9uXCJcblxuICBsZXQgZGF0YWxpc3QgP2NoaWxkcmVuID9hICgpID1cbiAgICBsZXQgY2hpbGRyZW4gPSBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gVy5uaWwgKClcbiAgICAgIHwgU29tZSAoYE9wdGlvbnMgeCB8IGBQaHJhcyB4KSAtPiB4IGluXG4gICAgWG1sLm5vZGUgP2EgXCJkYXRhbGlzdFwiIGNoaWxkcmVuXG5cbiAgbGV0IHByb2dyZXNzID0gc3RhciBcInByb2dyZXNzXCJcblxuICBsZXQgbGVnZW5kID0gc3RhciBcImxlZ2VuZFwiXG5cbiAgbGV0IGRldGFpbHMgc3VtbWFyeSA/YSBjaGlsZHJlbiA9XG4gICAgcGx1cyBcImRldGFpbHNcIiA/YSBzdW1tYXJ5IGNoaWxkcmVuXG5cbiAgbGV0IHN1bW1hcnkgPSBzdGFyIFwic3VtbWFyeVwiXG5cbiAgbGV0IGZpZWxkc2V0ID9sZWdlbmQgP2EgZWx0cyA9XG4gICAgWG1sLm5vZGUgP2EgXCJmaWVsZHNldFwiIChvcHRpb25fY29ucyBsZWdlbmQgZWx0cylcblxuICBsZXQgb3B0Z3JvdXAgfmxhYmVsID8oYSA9IFtdKSBlbHRzID1cbiAgICBYbWwubm9kZSB+YTogKChhX2xhYmVsIGxhYmVsKSA6OiBhKSBcIm9wdGdyb3VwXCIgZWx0c1xuXG4gIGxldCBmaWdjYXB0aW9uID0gc3RhciBcImZpZ2NhcHRpb25cIlxuICBsZXQgZmlndXJlID9maWdjYXB0aW9uID9hIGVsdHMgPVxuICAgIGxldCBjb250ZW50ID0gbWF0Y2ggZmlnY2FwdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWx0c1xuICAgICAgfCBTb21lIChgVG9wIGMpIC0+IFcuY29ucyBjIGVsdHNcbiAgICAgIHwgU29tZSAoYEJvdHRvbSBjKSAtPiBXLmFwcGVuZCBlbHRzIChXLnNpbmdsZXRvbiBjKVxuICAgIGluXG4gICAgWG1sLm5vZGUgP2EgXCJmaWd1cmVcIiBjb250ZW50XG5cbiAgbGV0IGNhcHRpb24gPSBzdGFyIFwiY2FwdGlvblwiXG5cbiAgbGV0IHRhYmxleCA/Y2FwdGlvbiA/Y29sdW1ucyA/dGhlYWQgP3Rmb290ID9hIGVsdHMgPVxuICAgIGxldCBjb250ZW50ID0gb3B0aW9uX2NvbnMgdGhlYWQgKG9wdGlvbl9jb25zIHRmb290IGVsdHMpIGluXG4gICAgbGV0IGNvbnRlbnQgPSBtYXRjaCBjb2x1bW5zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjb250ZW50XG4gICAgICB8IFNvbWUgY29sdW1ucyAtPiBXLmFwcGVuZCBjb2x1bW5zIGNvbnRlbnQgaW5cbiAgICBsZXQgY29udGVudCA9IG9wdGlvbl9jb25zIGNhcHRpb24gY29udGVudCBpblxuICAgIFhtbC5ub2RlID9hIFwidGFibGVcIiBjb250ZW50XG5cbiAgbGV0IHRhYmxlID0gdGFibGV4XG5cbiAgbGV0IHRkID0gc3RhciBcInRkXCJcblxuICBsZXQgdGggPSBzdGFyIFwidGhcIlxuXG4gIGxldCB0ciA9IHN0YXIgXCJ0clwiXG5cbiAgbGV0IGNvbGdyb3VwID0gc3RhciBcImNvbGdyb3VwXCJcblxuICBsZXQgY29sID0gdGVybWluYWwgXCJjb2xcIlxuXG4gIGxldCB0aGVhZCA9IHN0YXIgXCJ0aGVhZFwiXG5cbiAgbGV0IHRib2R5ID0gc3RhciBcInRib2R5XCJcblxuICBsZXQgdGZvb3QgPSBzdGFyIFwidGZvb3RcIlxuXG4gIGxldCBpZnJhbWUgPSBzdGFyIFwiaWZyYW1lXCJcblxuICBsZXQgb2JqZWN0XyA/cGFyYW1zID8oYSA9IFtdKSBlbHRzID1cbiAgICBsZXQgZWx0cyA9IG1hdGNoIHBhcmFtcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWx0c1xuICAgICAgfCBTb21lIGUgLT4gVy5hcHBlbmQgZSBlbHRzIGluXG4gICAgWG1sLm5vZGUgfmEgXCJvYmplY3RcIiBlbHRzXG5cbiAgbGV0IHBhcmFtID0gdGVybWluYWwgXCJwYXJhbVwiXG5cbiAgbGV0IGltZyB+c3JjIH5hbHQgPyhhID0gW10pICgpID1cbiAgICBsZXQgYSA9IChhX3NyYyBzcmMpIDo6IChhX2FsdCBhbHQpIDo6IGEgaW5cbiAgICBYbWwubGVhZiB+YSBcImltZ1wiXG5cbiAgbGV0IHBpY3R1cmUgfmltZyA/YSBlbHRzID1cbiAgICBsZXQgdGFpbF9ub2RlID0gVy5jb25zIGltZyAoVy5uaWwgKCkpIGluXG4gICAgbGV0IGNvbnRlbnQgPSBXLmFwcGVuZCBlbHRzIHRhaWxfbm9kZSBpblxuICAgIFhtbC5ub2RlID9hIFwicGljdHVyZVwiIGNvbnRlbnRcblxuICBsZXQgbWV0YSA9IHRlcm1pbmFsIFwibWV0YVwiXG5cbiAgbGV0IHN0eWxlID8oYSA9IFtdKSBlbHRzID0gWG1sLm5vZGUgfmEgXCJzdHlsZVwiIGVsdHNcblxuICBsZXQgbGluayB+cmVsIH5ocmVmID8oYSA9IFtdKSAoKSA9XG4gICAgWG1sLmxlYWYgfmE6ICgoYV9yZWwgcmVsKSA6OiAoYV9ocmVmIGhyZWYpIDo6IGEpIFwibGlua1wiXG5cbiAgbGV0IGJhc2UgPSB0ZXJtaW5hbCBcImJhc2VcIlxuXG4gICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICgqIENvbnZlcnNpb24gZnJvbSBhbmQgdG8gWG1sIG1vZHVsZSAqKVxuICBsZXQgdG90IHggPSB4XG5cbiAgbGV0IHRvdGwgeCA9IHhcblxuICBsZXQgdG9lbHQgeCA9IHhcblxuICBsZXQgdG9lbHRsIHggPSB4XG5cbiAgdHlwZSBkb2MgID0gWyBgSHRtbCBdIGVsdFxuICBsZXQgZG9jX3RvZWx0IHggPSB4XG5cbiAgbW9kdWxlIEkgPSBYbWxfc3RyZWFtLkltcG9ydChYbWwpXG4gIGxldCBvZl9zZXEgcyA9IHRvdGwgQEAgSS5vZl9zZXEgc1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcblxuICAgIGxldCBkYXRhIHMgPSBYbWwuZW5jb2RlZHBjZGF0YSBzXG5cbiAgICBsZXQgbGVhZiB0YWcgP2EgKCkgPSBYbWwubGVhZiA/YSB0YWdcblxuICAgIGxldCBub2RlIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICAgIGxldCBjb2VyY2VfZWx0IHggPSB4XG5cbiAgICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gICAgbGV0IGludF9hdHRyaWIgPSBYbWwuaW50X2F0dHJpYlxuXG4gICAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiA9IFhtbC5zcGFjZV9zZXBfYXR0cmliXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgV3JhcHBlZF9mdW5jdGlvbnNcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCdiKSBXLmZ0ID0gJ2EgLT4gJ2IpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcblxuICBsZXQgc3RyaW5nX29mX3NhbmRib3hfdG9rZW4gPSBmdW5jdGlvblxuICAgIHwgYEFsbG93X2Zvcm1zIC0+IFwiYWxsb3ctZm9ybXNcIlxuICAgIHwgYEFsbG93X3BvaW50ZXJfbG9jayAtPiBcImFsbG93LXBvaW50ZXItbG9ja1wiXG4gICAgfCBgQWxsb3dfcG9wdXBzIC0+IFwiYWxsb3ctcG9wdXBzXCJcbiAgICB8IGBBbGxvd190b3BfbmF2aWdhdGlvbiAtPiBcImFsbG93LXRvcC1uYXZpZ2F0aW9uXCJcbiAgICB8IGBBbGxvd19zYW1lX29yaWdpbiAtPiBcImFsbG93LXNhbWUtb3JpZ2luXCJcbiAgICB8IGBBbGxvd19zY3JpcHQgLT4gXCJhbGxvdy1zY3JpcHRcIlxuXG4gIGxldCBzdHJpbmdfb2ZfbGlua3R5cGUgPSBmdW5jdGlvblxuICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgfCBgQXJjaGl2ZXMgLT4gXCJhcmNoaXZlc1wiXG4gICAgfCBgQXV0aG9yIC0+IFwiYXV0aG9yXCJcbiAgICB8IGBCb29rbWFyayAtPiBcImJvb2ttYXJrXCJcbiAgICB8IGBDYW5vbmljYWwgLT4gXCJjYW5vbmljYWxcIlxuICAgIHwgYERuc19wcmVmZXRjaCAtPiBcImRucy1wcmVmZXRjaFwiXG4gICAgfCBgRXh0ZXJuYWwgLT4gXCJleHRlcm5hbFwiXG4gICAgfCBgRmlyc3QgLT4gXCJmaXJzdFwiXG4gICAgfCBgSGVscCAtPiBcImhlbHBcIlxuICAgIHwgYEljb24gLT4gXCJpY29uXCJcbiAgICB8IGBJbmRleCAtPiBcImluZGV4XCJcbiAgICB8IGBMYXN0IC0+IFwibGFzdFwiXG4gICAgfCBgTGljZW5zZSAtPiBcImxpY2Vuc2VcIlxuICAgIHwgYE1hbmlmZXN0IC0+IFwibWFuaWZlc3RcIlxuICAgIHwgYE1lIC0+IFwibWVcIlxuICAgIHwgYE1vZHVsZXByZWxvYWQgLT4gXCJtb2R1bGVwcmVsb2FkXCJcbiAgICB8IGBOZXh0IC0+IFwibmV4dFwiXG4gICAgfCBgTm9mb2xsb3cgLT4gXCJub2ZvbGxvd1wiXG4gICAgfCBgTm9vcGVuZXIgLT4gXCJub29wZW5lclwiXG4gICAgfCBgTm9yZWZlcnJlciAtPiBcIm5vcmVmZXJyZXJcIlxuICAgIHwgYE9wZW5lciAtPiBcIm9wZW5lclwiXG4gICAgfCBgUGluZ2JhY2sgLT4gXCJwaW5nYmFja1wiXG4gICAgfCBgUHJlY29ubmVjdCAtPiBcInByZWNvbm5lY3RcIlxuICAgIHwgYFByZWZldGNoIC0+IFwicHJlZmV0Y2hcIlxuICAgIHwgYFByZWxvYWQgLT4gXCJwcmVsb2FkXCJcbiAgICB8IGBQcmVyZW5kZXIgLT4gXCJwcmVyZW5kZXJcIlxuICAgIHwgYFByZXYgLT4gXCJwcmV2XCJcbiAgICB8IGBTZWFyY2ggLT4gXCJzZWFyY2hcIlxuICAgIHwgYFN0eWxlc2hlZXQgLT4gXCJzdHlsZXNoZWV0XCJcbiAgICB8IGBTaWRlYmFyIC0+IFwic2lkZWJhclwiXG4gICAgfCBgVGFnIC0+IFwidGFnXCJcbiAgICB8IGBVcCAtPiBcInVwXCJcbiAgICB8IGBPdGhlciBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX21lZGlhZGVzY190b2tlbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IGBBbGwgLT4gXCJhbGxcIlxuICAgIHwgYEF1cmFsIC0+IFwiYXVyYWxcIlxuICAgIHwgYEJyYWlsbGUgLT4gXCJicmFpbGxlXCJcbiAgICB8IGBFbWJvc3NlZCAtPiBcImVtYm9zc2VkXCJcbiAgICB8IGBIYW5kaGVsZCAtPiBcImhhbmRoZWxkXCJcbiAgICB8IGBQcmludCAtPiBcInByaW50XCJcbiAgICB8IGBQcm9qZWN0aW9uIC0+IFwicHJvamVjdGlvblwiXG4gICAgfCBgU2NyZWVuIC0+IFwic2NyZWVuXCJcbiAgICB8IGBTcGVlY2ggLT4gXCJzcGVlY2hcIlxuICAgIHwgYFR0eSAtPiBcInR0eVwiXG4gICAgfCBgVHYgLT4gXCJ0dlwiXG4gICAgfCBgUmF3X21lZGlhZGVzYyBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX3JlZmVycmVycG9saWN5ID0gZnVuY3Rpb25cbiAgICB8IGBFbXB0eSAtPiBcIlwiXG4gICAgfCBgTm9fcmVmZXJyZXIgLT4gXCJuby1yZWZlcnJlclwiXG4gICAgfCBgTm9fcmVmZXJyZXJfd2hlbl9kb3duZ3JhZGUgLT4gXCJuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZVwiXG4gICAgfCBgT3JpZ2luIC0+IFwib3JpZ2luXCJcbiAgICB8IGBPcmlnaW5fd2hlbl9jcm9zc19vcmlnaW4gLT4gXCJvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5cIlxuICAgIHwgYFNhbWVfb3JpZ2luIC0+IFwic2FtZS1vcmlnaW5cIlxuICAgIHwgYFN0cmljdF9vcmlnaW4gLT4gXCJzdHJpY3Qtb3JpZ2luXCJcbiAgICB8IGBTdHJpY3Rfb3JpZ2luX3doZW5fY3Jvc3Nfb3JpZ2luIC0+IFwic3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpblwiXG4gICAgfCBgVW5zYWZlX3VybCAtPiBcInVuc2FmZS11cmxcIlxuXG4gIGxldCBzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgYEFub255bW91cyAtPiBcImFub255bW91c1wiXG4gICAgfCBgQXN5bmMgLT4gXCJhc3luY1wiXG4gICAgfCBgQXV0b2ZvY3VzIC0+IFwiYXV0b2ZvY3VzXCJcbiAgICB8IGBBdXRvcGxheSAtPiBcImF1dG9wbGF5XCJcbiAgICB8IGBDaGVja2VkIC0+IFwiY2hlY2tlZFwiXG4gICAgfCBgRGVmZXIgLT4gXCJkZWZlclwiXG4gICAgfCBgRGlzYWJsZWQgLT4gXCJkaXNhYmxlZFwiXG4gICAgfCBgTXV0ZWQgLT4gXCJtdXRlZFwiXG4gICAgfCBgUmVhZE9ubHkgLT4gXCJyZWFkb25seVwiXG4gICAgfCBgUmVjdCAtPiBcInJlY3RcIlxuICAgIHwgYFNlbGVjdGVkIC0+IFwic2VsZWN0ZWRcIlxuICAgIHwgYFVzZV9jcmVkZW50aWFscyAtPiBcInVzZS1jcmVkZW50aWFsc1wiXG4gICAgfCBgVzNfb3JnXzE5OTlfeGh0bWwgLT4gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcbiAgICB8IGBBbGwgLT4gXCJhbGxcIlxuICAgIHwgYFByZXNlcnZlIC0+IFwicHJlc2VydmVcIlxuICAgIHwgYERlZmF1bHQgLT4gXCJkZWZhdWx0XCJcbiAgICB8IGBDb250cm9scyAtPiBcImNvbnRyb2xzXCJcbiAgICB8IGBMdHIgLT4gXCJsdHJcIlxuICAgIHwgYFJ0bCAtPiBcInJ0bFwiXG4gICAgfCBgR2V0IC0+IFwiR0VUXCJcbiAgICB8IGBQb3N0IC0+IFwiUE9TVFwiXG4gICAgfCBgRm9ybW5vdmFsaWRhdGUgLT4gXCJmb3Jtbm92YWxpZGF0ZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBJc21hcCAtPiBcImlzbWFwXCJcbiAgICB8IGBMb29wIC0+IFwibG9vcFwiXG4gICAgfCBgTm92YWxpZGF0ZSAtPiBcIm5vdmFsaWRhdGVcIlxuICAgIHwgYE9wZW4gLT4gXCJvcGVuXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTWV0YWRhdGEgLT4gXCJtZXRhZGF0YVwiXG4gICAgfCBgQXVkaW8gLT4gXCJhdWRpb1wiXG4gICAgfCBgUHViZGF0ZSAtPiBcInB1YmRhdGVcIlxuICAgIHwgYFJlcXVpcmVkIC0+IFwicmVxdWlyZWRcIlxuICAgIHwgYFJldmVyc2VkIC0+IFwicmVzZXJ2ZWRcIlxuICAgIHwgYFNjb3BlZCAtPiBcInNjb3BlZFwiXG4gICAgfCBgU2VhbWxlc3MgLT4gXCJzZWFtbGVzc1wiXG4gICAgfCBgQW55IC0+IFwiYW55XCJcbiAgICB8IGBTb2Z0IC0+IFwic29mdFwiXG4gICAgfCBgSGFyZCAtPiBcImhhcmRcIlxuICAgIHwgYENvbnRleHQgLT4gXCJjb250ZXh0XCJcbiAgICB8IGBUb29sYmFyIC0+IFwidG9vbGJhclwiXG4gICAgfCBgQ29tbWFuZCAtPiBcImNvbW1hbmRcIlxuICAgIHwgYENoZWNrYm94IC0+IFwiY2hlY2tib3hcIlxuICAgIHwgYFJhZGlvIC0+IFwicmFkaW9cIlxuICAgIHwgYE11bHRpcGxlIC0+IFwibXVsdGlwbGVcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBKdXN0aWZ5IC0+IFwianVzdGlmeVwiXG4gICAgfCBgQ2hhciAtPiBcImNoYXJcIlxuICAgIHwgYFJvdyAtPiBcInJvd1wiXG4gICAgfCBgQ29sIC0+IFwiY29sXCJcbiAgICB8IGBSb3dncm91cCAtPiBcInJvd2dyb3VwXCJcbiAgICB8IGBDb2xncm91cCAtPiBcImNvbGdyb3VwXCJcbiAgICB8IGBHcm91cHMgLT4gXCJncm91cHNcIlxuICAgIHwgYFJvd3MgLT4gXCJyb3dzXCJcbiAgICB8IGBDb2xzIC0+IFwiY29sc1wiXG4gICAgfCBgWmVybyAtPiBcIjBcIlxuICAgIHwgYE9uZSAtPiBcIjFcIlxuICAgIHwgYFllcyAtPiBcInllc1wiXG4gICAgfCBgTm8gLT4gXCJub1wiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYENpcmNsZSAtPiBcImNpcmNsZVwiXG4gICAgfCBgUG9seSAtPiBcInBvbHlcIlxuICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgfCBgQXJjaGl2ZXMgLT4gXCJhcmNoaXZlc1wiXG4gICAgfCBgQXV0aG9yIC0+IFwiYXV0aG9yXCJcbiAgICB8IGBCb29rbWFyayAtPiBcImJvb2ttYXJrXCJcbiAgICB8IGBFeHRlcm5hbCAtPiBcImV4dGVybmFsXCJcbiAgICB8IGBGaXJzdCAtPiBcImZpcnN0XCJcbiAgICB8IGBIZWxwIC0+IFwiaGVscFwiXG4gICAgfCBgSWNvbiAtPiBcImljb25cIlxuICAgIHwgYEluZGV4IC0+IFwiaW5kZXhcIlxuICAgIHwgYExhc3QgLT4gXCJsYXN0XCJcbiAgICB8IGBMaWNlbnNlIC0+IFwibGljZW5zZVwiXG4gICAgfCBgTmV4dCAtPiBcIm5leHRcIlxuICAgIHwgYE5vZm9sbG93IC0+IFwibm9mb2xsb3dcIlxuICAgIHwgYE5vcmVmZXJyZXIgLT4gXCJub3JlZmVycmVyXCJcbiAgICB8IGBQaW5nYmFjayAtPiBcInBpbmdiYWNrXCJcbiAgICB8IGBQcmVmZXRjaCAtPiBcInByZWZldGNoXCJcbiAgICB8IGBQcmV2IC0+IFwicHJldlwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdHlsZXNoZWV0IC0+IFwic3R5bGVzaGVldFwiXG4gICAgfCBgU2lkZWJhciAtPiBcInNpZGViYXJcIlxuICAgIHwgYFRhZyAtPiBcInRhZ1wiXG4gICAgfCBgVXAgLT4gXCJ1cFwiXG4gICAgfCBgVmVyYmF0aW0gLT4gXCJ2ZXJiYXRpbVwiXG4gICAgfCBgTGF0aW4gLT4gXCJsYXRpblwiXG4gICAgfCBgTGF0aW5fbmFtZSAtPiBcImxhdGluLW5hbWVcIlxuICAgIHwgYExhdGluX3Byb3NlIC0+IFwibGF0aW4tcHJvc2VcIlxuICAgIHwgYEZ1bGxfd2lkdGhfbGF0aW4gLT4gXCJmdWxsLXdpZHRoLWxhdGluXCJcbiAgICB8IGBLYW5hIC0+IFwia2FuYVwiXG4gICAgfCBgS2F0YWthbmEgLT4gXCJrYXRha2FuYVwiXG4gICAgfCBgTnVtZXJpYyAtPiBcIm51bWVyaWNcIlxuICAgIHwgYFRlbCAtPiBcInRlbFwiXG4gICAgfCBgRW1haWwgLT4gXCJlbWFpbFwiXG4gICAgfCBgVXJsIC0+IFwidXJsXCJcbiAgICB8IGBUZXh0IC0+IFwidGV4dFwiXG4gICAgfCBgRGVjaW1hbCAtPiBcImRlY2ltYWxcIlxuICAgIHwgYE90aGVyIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfaW5wdXRfdHlwZSA9IGZ1bmN0aW9uXG4gICAgfCBgQnV0dG9uIC0+IFwiYnV0dG9uXCJcbiAgICB8IGBDaGVja2JveCAtPiBcImNoZWNrYm94XCJcbiAgICB8IGBDb2xvciAtPiBcImNvbG9yXCJcbiAgICB8IGBEYXRlIC0+IFwiZGF0ZVwiXG4gICAgfCBgRGF0ZXRpbWUgLT4gXCJkYXRldGltZVwiXG4gICAgfCBgRGF0ZXRpbWVfbG9jYWwgLT4gXCJkYXRldGltZS1sb2NhbFwiXG4gICAgfCBgRW1haWwgLT4gXCJlbWFpbFwiXG4gICAgfCBgRmlsZSAtPiBcImZpbGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgSW1hZ2UgLT4gXCJpbWFnZVwiXG4gICAgfCBgTW9udGggLT4gXCJtb250aFwiXG4gICAgfCBgTnVtYmVyIC0+IFwibnVtYmVyXCJcbiAgICB8IGBQYXNzd29yZCAtPiBcInBhc3N3b3JkXCJcbiAgICB8IGBSYWRpbyAtPiBcInJhZGlvXCJcbiAgICB8IGBSYW5nZSAtPiBcInJhbmdlXCJcbiAgICB8IGBSZWFkb25seSAtPiBcInJlYWRvbmx5XCJcbiAgICB8IGBSZXNldCAtPiBcInJlc2V0XCJcbiAgICB8IGBTZWFyY2ggLT4gXCJzZWFyY2hcIlxuICAgIHwgYFN1Ym1pdCAtPiBcInN1Ym1pdFwiXG4gICAgfCBgVGVsIC0+IFwidGVsXCJcbiAgICB8IGBUZXh0IC0+IFwidGV4dFwiXG4gICAgfCBgVGltZSAtPiBcInRpbWVcIlxuICAgIHwgYFVybCAtPiBcInVybFwiXG4gICAgfCBgV2VlayAtPiBcIndlZWtcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2NyaXB0X3R5cGUgPSBmdW5jdGlvblxuICB8IGBKYXZhc2NyaXB0IC0+IFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiXG4gIHwgYE1vZHVsZSAtPiBcIm1vZHVsZVwiXG4gIHwgYE1pbWUgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUgPSBmdW5jdGlvblxuICAgIHwgYE51bWJlciBuIC0+IHN0cmluZ19vZl9pbnQgblxuICAgIHwgYERhdGV0aW1lIHQgLT4gdFxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhcmFjdGVyID0gU3RyaW5nLm1ha2UgMVxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyID0gc3RyaW5nX29mX2ludFxuXG4gIGxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5cbiAgbGV0IG9ub2ZmX29mX2Jvb2wgPSBmdW5jdGlvblxuICAgIHwgZmFsc2UgLT4gXCJvZmZcIlxuICAgIHwgdHJ1ZSAtPiBcIm9uXCJcblxuICBsZXQgdW5vcHRpb25fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IFwiXCJcblxuICBsZXQgc3RyaW5nX29mX3N0ZXAgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IFhtbF9wcmludC5zdHJpbmdfb2ZfbnVtYmVyIHhcbiAgICB8IE5vbmUgLT4gXCJhbnlcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2l6ZXMgPSBmdW5jdGlvblxuICAgIHwgU29tZSBsIC0+XG4gICAgICBTdHJpbmcuY29uY2F0IFwiIFwiXG4gICAgICAgIChMaXN0Lm1hcCAoZnVuICh4LCB5KSAtPiBQcmludGYuc3ByaW50ZiBcIiVkeCVkXCIgeCB5KSBsKVxuICAgIHwgTm9uZSAtPlxuICAgICAgXCJhbnlcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2FuZGJveCBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVycyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbnVtYmVyIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9tZWRpYWRlc2MgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4gbClcblxuICBsZXQgc3RyaW5nX29mX2xpbmt0eXBlcyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbGlua3R5cGUgbClcblxuICB0eXBlIGltYWdlX2NhbmRpZGF0ZSA9XG4gICAgWyBgVXJsIG9mIFhtbC51cmlcbiAgICB8IGBVcmxfd2lkdGggb2YgWG1sLnVyaSAqIEh0bWxfdHlwZXMubnVtYmVyXG4gICAgfCBgVXJsX3BpeGVsIG9mIFhtbC51cmkgKiBIdG1sX3R5cGVzLmZsb2F0X251bWJlciBdXG5cbiAgbGV0IHN0cmluZ19vZl9zcmNzZXQgKGwgOiBbPCBpbWFnZV9jYW5kaWRhdGVdIGxpc3QpID1cbiAgICBsZXQgZiA9IGZ1bmN0aW9uXG4gICAgfCBgVXJsIHVybCAtPiBYbWwuc3RyaW5nX29mX3VyaSB1cmxcbiAgICB8IGBVcmxfd2lkdGggKHVybCwgdikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXN3XCIgKFhtbC5zdHJpbmdfb2ZfdXJpIHVybCkgKHN0cmluZ19vZl9udW1iZXIgdilcbiAgICB8IGBVcmxfcGl4ZWwgKHVybCwgdikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXN4XCIgKFhtbC5zdHJpbmdfb2ZfdXJpIHVybCkgKFhtbF9wcmludC5zdHJpbmdfb2ZfbnVtYmVyIHYpXG4gICAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgZiBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfYXV0b2NvbXBsZXRlIChsIDogSHRtbF90eXBlcy5hdXRvY29tcGxldGVfb3B0aW9uKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBgT24gfCBgVG9rZW5zIFtdIC0+IFwib25cIlxuICAgIHwgYE9mZiAtPiBcIm9mZlwiXG4gICAgfCBgVG9rZW5zIHN0cnMgLT4gU3RyaW5nLmNvbmNhdCBcIiBcIiBzdHJzXG5cbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsICdiKSBXLmZ0ID0gJ2EgLT4gJ2IpXG4gICAgKFN2ZyA6IFN2Z19zaWdzLlQgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuICBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnMoWG1sKShXcmFwcGVkX2Z1bmN0aW9ucyhYbWwpKShTdmcpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDA3IEdhYnJpZWwgS2VybmVpc1xuICogQ29weXJpZ2h0IChDKSAyMDEwIENlY2lsZSBIZXJiZWxpblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxuXG5tb2R1bGUgTSA9IHN0cnVjdFxuXG4gIG1vZHVsZSBXID0gWG1sX3dyYXAuTm9XcmFwXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2FcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBsaXN0XG5cbiAgdHlwZSB1cmkgPSBzdHJpbmdcbiAgbGV0IHVyaV9vZl9zdHJpbmcgcyA9IHNcbiAgbGV0IHN0cmluZ19vZl91cmkgcyA9IHNcblxuICB0eXBlIHNlcGFyYXRvciA9IFNwYWNlIHwgQ29tbWFcblxuICAoKiogQXR0cmlidXRlcyAqKVxuXG4gIHR5cGUgYW5hbWUgPSBzdHJpbmdcbiAgdHlwZSBhY29udGVudCA9XG4gICAgfCBBRmxvYXQgb2YgZmxvYXRcbiAgICB8IEFJbnQgb2YgaW50XG4gICAgfCBBU3RyIG9mIHN0cmluZ1xuICAgIHwgQVN0ckwgb2Ygc2VwYXJhdG9yICogc3RyaW5nIGxpc3RcbiAgdHlwZSBhdHRyaWIgPSBhbmFtZSAqIGFjb250ZW50XG5cbiAgdHlwZSBldmVudF9oYW5kbGVyID0gc3RyaW5nXG4gIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBzdHJpbmdcbiAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gc3RyaW5nXG5cbiAgbGV0IGFjb250ZW50IChfLCBhKSA9IGFcbiAgbGV0IGFuYW1lIChuYW1lLCBfKSA9IG5hbWVcblxuICBsZXQgZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBRmxvYXQgdmFsdWVcbiAgbGV0IGludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFJbnQgdmFsdWVcbiAgbGV0IHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoU3BhY2UsIHZhbHVlcylcbiAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoQ29tbWEsIHZhbHVlcylcbiAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB1cmlfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB1cmlzX2F0dHJpYiBuYW1lIHZhbHVlcyA9IG5hbWUsIEFTdHJMIChTcGFjZSwgdmFsdWVzKVxuXG5cbiAgKCoqIEVsZW1lbnQgKilcblxuICB0eXBlIGVuYW1lID0gc3RyaW5nXG4gIHR5cGUgZWNvbnRlbnQgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbW1lbnQgb2Ygc3RyaW5nXG4gICAgfCBFbmNvZGVkUENEQVRBIG9mIHN0cmluZ1xuICAgIHwgUENEQVRBIG9mIHN0cmluZ1xuICAgIHwgRW50aXR5IG9mIHN0cmluZ1xuICAgIHwgTGVhZiBvZiBlbmFtZSAqIGF0dHJpYiBsaXN0XG4gICAgfCBOb2RlIG9mIGVuYW1lICogYXR0cmliIGxpc3QgKiBlY29udGVudCBsaXN0XG5cbiAgdHlwZSBlbHQgPSAgZWNvbnRlbnRcblxuICBsZXQgY29udGVudCBlbHQgPSBlbHRcblxuICBsZXQgZW1wdHkgKCkgPSBFbXB0eVxuXG4gIGxldCBjb21tZW50IGMgPSBDb21tZW50IGNcblxuICBsZXQgcGNkYXRhIGQgPSBQQ0RBVEEgZFxuICBsZXQgZW5jb2RlZHBjZGF0YSBkID0gRW5jb2RlZFBDREFUQSBkXG4gIGxldCBlbnRpdHkgZSA9IEVudGl0eSBlXG5cbiAgKCogRm9yIHNlY3VyaXR5IHJlYXNvbnMsIHdlIGRvIG5vdCBhbGxvdyBcIl1dPlwiIGluc2lkZSBDREFUQVxuICAgICAoYXMgdGhpcyBzdHJpbmcgaXMgdG8gYmUgY29uc2lkZXJlZCBhcyB0aGUgZW5kIG9mIHRoZSBjZGF0YSlcbiAgKilcbiAgbGV0IHJlX2VuZF9jZGF0YSA9IFJlLihjb21waWxlIEBAIHN0ciBcIl1dPlwiKVxuICBsZXQgZW5jb2RlZF9jZGF0YSBzMSBzMiBzID1cbiAgICBlbmNvZGVkcGNkYXRhXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJcXG4lc1xcbiVzXFxuJXNcXG5cIlxuICAgICAgICAgczFcbiAgICAgICAgIChSZS5yZXBsYWNlX3N0cmluZyB+YWxsOnRydWUgcmVfZW5kX2NkYXRhIH5ieTpcIlwiIHMpXG4gICAgICAgICBzMiApXG5cbiAgbGV0IGNkYXRhID0gZW5jb2RlZF9jZGF0YSBcIjwhW0NEQVRBW1wiIFwiXV0+XCJcbiAgbGV0IGNkYXRhX3NjcmlwdCA9IGVuY29kZWRfY2RhdGEgXCIvLzwhW0NEQVRBW1wiIFwiLy9dXT5cIlxuICBsZXQgY2RhdGFfc3R5bGUgPSBlbmNvZGVkX2NkYXRhIFwiLyogPCFbQ0RBVEFbICovXCIgXCIvKiBdXT4gKi9cIlxuXG4gIGxldCBsZWFmID8oYT1bXSkgbmFtZSA9IExlYWYgKG5hbWUsIGEpXG4gIGxldCBub2RlID8oYT1bXSkgbmFtZSBjaGlsZHJlbiA9IE5vZGUgKG5hbWUsIGEsIGNoaWxkcmVuKVxuXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIFhtbF9wcmludC5NYWtlX3NpbXBsZShNKShzdHJ1Y3QgbGV0IGVtcHR5dGFncyA9IFtdIGVuZClcbltAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5pbmNsdWRlIFhtbF9pdGVyLk1ha2UoTSlcbmluY2x1ZGUgWG1sX3ByaW50Lk1ha2VfZm10KE0pKHN0cnVjdCBsZXQgZW1wdHl0YWdzID0gW10gZW5kKVxuXG5pbmNsdWRlIFhtbF9zdHJlYW0uSW1wb3J0KE0pXG5sZXQgcHJpbnQgZm10IHggPSBwcmludF9saXN0IH5vdXRwdXQ6KEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10KSBbeF1cbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNID0gU3ZnX2YuTWFrZShUeXhtbF94bWwpXG5tb2R1bGUgUCA9IFhtbF9wcmludC5NYWtlX3R5cGVkX2ZtdChUeXhtbF94bWwpKE0pXG5tb2R1bGUgTWFrZV9wcmludGVyID0gWG1sX3ByaW50Lk1ha2VfdHlwZWQoVHl4bWxfeG1sKShNKVxuW0BAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cblxuaW5jbHVkZSBNXG5pbmNsdWRlIFBcblxubGV0IF9wcCA9IHBwICgpXG5sZXQgX3BwX2VsdCA9IHBwX2VsdCAoKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE0gPSBIdG1sX2YuTWFrZShUeXhtbF94bWwpKFR5eG1sX3N2Zylcbm1vZHVsZSBQID0gWG1sX3ByaW50Lk1ha2VfdHlwZWRfZm10KFR5eG1sX3htbCkoTSlcbm1vZHVsZSBNYWtlX3ByaW50ZXIgPSBYbWxfcHJpbnQuTWFrZV90eXBlZChUeXhtbF94bWwpKE0pXG5bQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuaW5jbHVkZSBNXG5pbmNsdWRlIFBcblxubGV0IF9wcCA9IHBwICgpXG5sZXQgX3BwX2VsdCA9IHBwX2VsdCAoKVxuIiwiKCogUmVhY3RpdmVEYXRhXG4gKiBodHRwczovL2dpdGh1Yi5jb20vaGh1Z28vcmVhY3RpdmVEYXRhXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSB0eXBlIERBVEEgPSBzaWdcbiAgdHlwZSAnYSBkYXRhXG4gIHR5cGUgJ2EgcGF0Y2hcbiAgdmFsIG1lcmdlIDogJ2EgcGF0Y2ggLT4gJ2EgZGF0YSAtPiAnYSBkYXRhXG4gIHZhbCBtYXBfcGF0Y2ggOiAoJ2EgLT4gJ2IpIC0+ICdhIHBhdGNoIC0+ICdiIHBhdGNoXG4gIHZhbCBtYXBfZGF0YSA6ICgnYSAtPiAnYikgLT4gJ2EgZGF0YSAtPiAnYiBkYXRhXG4gIHZhbCBlbXB0eSA6ICdhIGRhdGFcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YSAtPiBib29sXG4gIHZhbCBkaWZmIDogZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YSAtPiAnYSBwYXRjaFxuZW5kXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGRhdGFcbiAgdHlwZSAnYSBwYXRjaFxuICB0eXBlICdhIG1zZyA9IFBhdGNoIG9mICdhIHBhdGNoIHwgU2V0IG9mICdhIGRhdGFcbiAgdHlwZSAnYSBoYW5kbGVcbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgY3JlYXRlIDogJ2EgZGF0YSAtPiAnYSB0ICogJ2EgaGFuZGxlXG4gIHZhbCBmcm9tX2V2ZW50IDogJ2EgZGF0YSAtPiAnYSBtc2cgUmVhY3QuRS50IC0+ICdhIHRcbiAgdmFsIGZyb21fc2lnbmFsIDogP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIFJlYWN0LlMudCAtPiAnYSB0XG4gIHZhbCBjb25zdCA6ICdhIGRhdGEgLT4gJ2EgdFxuICB2YWwgcGF0Y2ggOiAnYSBoYW5kbGUgLT4gJ2EgcGF0Y2ggLT4gdW5pdFxuICB2YWwgc2V0ICAgOiAnYSBoYW5kbGUgLT4gJ2EgZGF0YSAtPiB1bml0XG4gIHZhbCBtYXBfbXNnIDogKCdhIC0+ICdiKSAtPiAnYSBtc2cgLT4gJ2IgbXNnXG4gIHZhbCBtYXAgOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhIGRhdGFcbiAgdmFsIGZvbGQgOiAoJ2EgLT4gJ2IgbXNnIC0+ICdhKSAtPiAnYiB0IC0+ICdhIC0+ICdhIFJlYWN0LnNpZ25hbFxuICB2YWwgc2lnbmFsIDogP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIGRhdGEgUmVhY3QuUy50XG4gIHZhbCBldmVudCA6ICdhIHQgLT4gJ2EgbXNnIFJlYWN0LkUudFxuZW5kXG5cbm1vZHVsZSBNYWtlKEQgOiBEQVRBKSA6XG4gIFMgd2l0aCB0eXBlICdhIGRhdGEgPSAnYSBELmRhdGFcbiAgICAgYW5kIHR5cGUgJ2EgcGF0Y2ggPSAnYSBELnBhdGNoID0gc3RydWN0XG5cbiAgdHlwZSAnYSBkYXRhID0gJ2EgRC5kYXRhXG4gIHR5cGUgJ2EgcGF0Y2ggPSAnYSBELnBhdGNoXG4gIGxldCBtZXJnZSA9IEQubWVyZ2VcbiAgbGV0IG1hcF9wYXRjaCA9IEQubWFwX3BhdGNoXG4gIGxldCBtYXBfZGF0YSA9IEQubWFwX2RhdGFcblxuICB0eXBlICdhIG1zZyA9XG4gICAgfCBQYXRjaCBvZiAnYSBwYXRjaFxuICAgIHwgU2V0IG9mICdhIGRhdGFcblxuICB0eXBlICdhIGhhbmRsZSA9ID9zdGVwOlJlYWN0LnN0ZXAgLT4gJ2EgbXNnIC0+IHVuaXRcblxuICB0eXBlICdhIG11dCA9IHtcbiAgICBjdXJyZW50IDogJ2EgZGF0YSByZWY7XG4gICAgZXZlbnQgOiAnYSBtc2cgUmVhY3QuRS50O1xuICB9XG5cbiAgdHlwZSAnYSB0ID1cbiAgICB8IENvbnN0IG9mICdhIGRhdGFcbiAgICB8IE11dCBvZiAnYSBtdXRcblxuICBsZXQgZW1wdHkgPSBDb25zdCBELmVtcHR5XG5cbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBsZXQgaW5pdGlhbF9ldmVudCxzZW5kID0gUmVhY3QuRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiBsIGluXG4gICAgbGV0IGV2ZW50ID0gUmVhY3QuRS5tYXAgKGZ1biBtc2cgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICB8IFNldCBsIC0+IGN1cnJlbnQgOj0gbDtcbiAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgIGVuZDtcbiAgICAgICAgbXNnKSBpbml0aWFsX2V2ZW50IGluXG4gICAgTXV0IHtjdXJyZW50O2V2ZW50fSxzZW5kXG5cbiAgbGV0IGZyb21fZXZlbnQgbCBpbml0aWFsX2V2ZW50ID1cbiAgICBsZXQgY3VycmVudCA9IHJlZiBsIGluXG4gICAgbGV0IGV2ZW50ID0gUmVhY3QuRS5tYXAgKGZ1biBtc2cgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICB8IFNldCBsIC0+IGN1cnJlbnQgOj0gbDtcbiAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgIGVuZDtcbiAgICAgICAgbXNnKSBpbml0aWFsX2V2ZW50IGluXG4gICAgTXV0IHtjdXJyZW50O2V2ZW50fVxuXG4gIGxldCBjb25zdCB4ID0gQ29uc3QgeFxuXG4gIGxldCBtYXBfbXNnIChmIDogJ2EgLT4gJ2IpIDogJ2EgbXNnIC0+ICdiIG1zZyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgbCAtPiBTZXQgKG1hcF9kYXRhIGYgbClcbiAgICB8IFBhdGNoIHAgLT4gUGF0Y2ggKG1hcF9wYXRjaCBmIHApXG5cbiAgbGV0IG1hcCBmIHMgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgeCAtPiBDb25zdCAobWFwX2RhdGEgZiB4KVxuICAgIHwgTXV0IHMgLT5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIChtYXBfZGF0YSBmICEocy5jdXJyZW50KSkgaW5cbiAgICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgICAgbGV0IG1zZyA9IG1hcF9tc2cgZiBtc2cgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIG1zZykgcy5ldmVudCBpblxuICAgICAgTXV0IHtjdXJyZW50IDtldmVudH1cblxuICBsZXQgdmFsdWUgcyA9IG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgYyAtPiBjXG4gICAgfCBNdXQgcyAtPiAhKHMuY3VycmVudClcblxuICBsZXQgZXZlbnQgcyA9IG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgXyAtPiBSZWFjdC5FLm5ldmVyXG4gICAgfCBNdXQgcyAtPiBzLmV2ZW50XG5cbiAgbGV0IHBhdGNoIChzIDogJ2EgaGFuZGxlKSBwID0gcyAoUGF0Y2ggcClcblxuICBsZXQgc2V0IChzIDogJ2EgaGFuZGxlKSBwID0gcyAoU2V0IHApXG5cbiAgbGV0IGZvbGQgZiBzIGFjYyA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBjIC0+IFJlYWN0LlMuY29uc3QgKGYgYWNjIChTZXQgYykpXG4gICAgfCBNdXQgcyAtPlxuICAgICAgbGV0IGFjYyA9IGYgYWNjIChTZXQgKCEocy5jdXJyZW50KSkpIGluXG4gICAgICBSZWFjdC5TLmZvbGQgZiBhY2Mgcy5ldmVudFxuXG4gIGxldCBzaWduYWwgPyhlcSA9ICg9KSkgKHMgOiAnYSB0KSA6ICdhIGRhdGEgUmVhY3QuUy50ID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IGMgLT4gUmVhY3QuUy5jb25zdCBjXG4gICAgfCBNdXQgcyAtPlxuICAgICAgUmVhY3QuUy5mb2xkIH5lcTooRC5lcXVhbCBlcSkgKGZ1biBsIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBsXG4gICAgICAgICAgfCBQYXRjaCBwIC0+IG1lcmdlIHAgbCkgKCEocy5jdXJyZW50KSkgcy5ldmVudFxuXG4gIGxldCBmcm9tX3NpZ25hbCA/KGVxID0gKD0pKSBzID1cbiAgICBsZXQgZiBkJyBkID0gUGF0Y2ggKEQuZGlmZiB+ZXEgZCBkJykgaW5cbiAgICBmcm9tX2V2ZW50IChSZWFjdC5TLnZhbHVlIHMpIChSZWFjdC5TLmRpZmYgZiBzKVxuXG5lbmRcblxubW9kdWxlIERhdGFMaXN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgZGF0YSA9ICdhIGxpc3RcbiAgdHlwZSAnYSBwID1cbiAgICB8IEkgb2YgaW50ICogJ2FcbiAgICB8IFIgb2YgaW50XG4gICAgfCBVIG9mIGludCAqICdhXG4gICAgfCBYIG9mIGludCAqIGludFxuICB0eXBlICdhIHBhdGNoID0gJ2EgcCBsaXN0XG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBtYXBfZGF0YSA9IExpc3QubWFwXG4gIGxldCBtYXBfcGF0Y2ggZiA9IGZ1bmN0aW9uXG4gICAgfCBJIChpLHgpIC0+IEkgKGksIGYgeClcbiAgICB8IFIgaSAtPiBSIGlcbiAgICB8IFggKGksaikgLT4gWCAoaSxqKVxuICAgIHwgVSAoaSx4KSAtPiBVIChpLGYgeClcbiAgbGV0IG1hcF9wYXRjaCBmID0gTGlzdC5tYXAgKG1hcF9wYXRjaCBmKVxuXG4gIGxldCBtZXJnZV9wIG9wIGwgPVxuICAgIG1hdGNoIG9wIHdpdGhcbiAgICB8IEkgKGknLHgpIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyAxICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IHJlYyBhdXggYWNjIG4gbCA9IG1hdGNoIG4sbCB3aXRoXG4gICAgICAgIHwgMCxsIC0+IExpc3QucmV2X2FwcGVuZCBhY2MgKHg6OmwpXG4gICAgICAgIHwgXyxbXSAtPiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiXG4gICAgICAgIHwgbix4Ojp4cyAtPiBhdXggKHg6OmFjYykgKHByZWQgbikgeHNcbiAgICAgIGluIGF1eCBbXSBpIGxcbiAgICB8IFIgaScgLT5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gTGlzdC5sZW5ndGggbCArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCByZWMgYXV4IGFjYyBuIGwgPSBtYXRjaCBuLGwgd2l0aFxuICAgICAgICB8IDAsXzo6bCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIGxcbiAgICAgICAgfCBfLFtdIC0+IGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCJcbiAgICAgICAgfCBuLHg6OnhzIC0+IGF1eCAoeDo6YWNjKSAocHJlZCBuKSB4c1xuICAgICAgaW4gYXV4IFtdIGkgbFxuICAgIHwgVSAoaScseCkgLT5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gTGlzdC5sZW5ndGggbCArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gICAgICBhLihpKSA8LSB4O1xuICAgICAgQXJyYXkudG9fbGlzdCBhXG4gICAgfCBYIChpJyxvZmZzZXQpIC0+XG4gICAgICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIGxlbiArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCB2ID0gYS4oaSkgaW5cbiAgICAgIGlmIG9mZnNldCA+IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgKGkgKyBvZmZzZXQgPj0gbGVuKSB0aGVuIGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCI7XG4gICAgICAgIGZvciBqID0gaSB0byBpICsgb2Zmc2V0IC0gMSBkb1xuICAgICAgICAgIGEuKGopIDwtIGEuKGogKyAxKVxuICAgICAgICBkb25lO1xuICAgICAgICBhLihpK29mZnNldCkgPC0gdlxuICAgICAgZW5kXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIChpICsgb2Zmc2V0IDwgMCkgdGhlbiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiO1xuICAgICAgICBmb3IgaiA9IGkgZG93bnRvIGkgKyBvZmZzZXQgKyAxIGRvXG4gICAgICAgICAgYS4oaikgPC0gYS4oaiAtIDEpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGEuKGkrb2Zmc2V0KSA8LSB2XG4gICAgICBlbmQ7XG4gICAgICBBcnJheS50b19saXN0IGFcblxuICAoKiBhY2N1bXVsYXRlcyBpbnRvIGFjYyBpIHVubW9kaWZpZWQgZWxlbWVudHMgZnJvbSBsICopXG4gIGxldCByZWMgbGluZWFyX21lcmdlX2Z3ZCB+YWNjIGkgbCA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIGkgPiAwIHRoZW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBoIDo6IGwgLT5cbiAgICAgICAgbGV0IGFjYyA9IGggOjogYWNjIGluXG4gICAgICAgIGxpbmVhcl9tZXJnZV9md2QgfmFjYyAoaSAtIDEpIGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJpbnZhbGlkIGluZGV4XCJcbiAgICBlbHNlXG4gICAgICBsLCBhY2NcblxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZSB+YWNjIGkwIHAgbCA9XG4gICAgbGV0IGwsIGFjYyA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgKEkgKGksIF8pIHwgUiBpIHwgVSAoaSwgXykpIDo6IF8gd2hlbiBpID4gaTAgLT5cbiAgICAgICAgbGluZWFyX21lcmdlX2Z3ZCB+YWNjIChpIC0gaTApIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBsLCBhY2NcbiAgICBpblxuICAgIG1hdGNoIHAsIGwgd2l0aFxuICAgIHwgSSAoaSwgeCkgOjogcCwgXyAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwICh4IDo6IGwpXG4gICAgfCBSIGkgOjogcCwgXyA6OiBsIC0+XG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYyBpIHAgbFxuICAgIHwgUiBfIDo6IF8sIFtdIC0+XG4gICAgICBpbnZhbGlkX2FyZyBcIm1lcmdlOiBpbnZhbGlkIGluZGV4XCJcbiAgICB8IFUgKGksIHgpIDo6IHAsIF8gOjogbCAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwICh4IDo6IGwpXG4gICAgfCBVIChfLCBfKSA6OiBfLCBbXSAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJtZXJnZTogaW52YWxpZCBpbmRleFwiXG4gICAgfCBbXSwgbCAtPlxuICAgICAgTGlzdC5yZXZfYXBwZW5kIGFjYyBsXG4gICAgfCBYIChfLCBfKSA6OiBfLCBfIC0+XG4gICAgICBmYWlsd2l0aCBcImxpbmVhcl9tZXJnZTogWCBub3Qgc3VwcG9ydGVkXCJcblxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZWFibGUgfm4gcCA9XG4gICAgYXNzZXJ0IChuID49IDApO1xuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwgKEkgKGksIF8pIHwgUiBpIHwgVSAoaSwgXykpIDo6IHAgd2hlbiBpID49IG4gLT5cbiAgICAgICgqIG5lZ2F0aXZlIGkncyBydWxlZCBvdXQgKGFtb25nIG90aGVycykgKilcbiAgICAgIGxpbmVhcl9tZXJnZWFibGUgfm46aSBwXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBbXSAtPlxuICAgICAgdHJ1ZVxuXG4gIGxldCBtZXJnZSBwIGwgPVxuICAgIGlmIGxpbmVhcl9tZXJnZWFibGUgfm46MCBwIHRoZW5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjOltdIDAgcCBsXG4gICAgZWxzZVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsIHggLT4gbWVyZ2VfcCB4IGwpIGwgcFxuXG4gIGxldCByZWMgZXF1YWwgZiBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiB3aGVuIGYgeDEgeDIgLT5cbiAgICAgIGVxdWFsIGYgbDEgbDJcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgXyA6OiBfICwgXyA6OiBfXG4gICAgfCBfIDo6IF8gLCBbXVxuICAgIHwgW10gICAgICwgXyA6OiBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCBtZW0gKHR5cGUgdSkgbCA9XG4gICAgbGV0IG1vZHVsZSBIID1cbiAgICAgIEhhc2h0YmwuTWFrZVxuICAgICAgICAoc3RydWN0IHR5cGUgdCA9IHUgbGV0IGhhc2ggPSBIYXNodGJsLmhhc2ggbGV0IGVxdWFsID0gKD09KSBlbmQpIGluXG4gICAgbGV0IGggPSBILmNyZWF0ZSAxNiBpblxuICAgIExpc3QuaXRlciAoZnVuIHggLT4gSC5hZGQgaCB4ICgpKSBsO1xuICAgIEgubWVtIGhcblxuICBsZXQgZm9sZF9kaWZmID8oZXEgPSAoPSkpIH5hY2MgfnJlbW92ZSB+YWRkIGx4IGx5ID1cbiAgICBsZXQgbWVteCA9IG1lbSBseFxuICAgIGFuZCBtZW15ID0gbWVtIGx5IGluXG4gICAgbGV0IHJlYyBmIH5hY2MgfmxlZnQgbHggbHkgbiA9XG4gICAgICBtYXRjaCBseCwgbHkgd2l0aFxuICAgICAgKCogdHJhaWxpbmcgZWxlbWVudHMgdG8gYmUgcmVtb3ZlZCAqKVxuICAgICAgfCBfIDo6IGx4LCBbXSAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBbXSBuXG4gICAgICAoKiB0cmFpbGluZyBlbGVtZW50cyB0byBiZSBhZGRlZCAqKVxuICAgICAgfCBbXSwgeSA6OiBseSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IFtdIGx5IChuICsgMSlcbiAgICAgICgqIGRvbmUhICopXG4gICAgICB8IFtdLCBbXSAtPlxuICAgICAgICBhY2NcbiAgICAgICgqIHNhbWUgKilcbiAgICAgIHwgeCA6OiBseCwgeSA6OiBseSB3aGVuIGVxIHggeSAtPlxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggbHkgKG4gKyAxKVxuICAgICAgKCogeCBuZWVkcyB0byBiZSByZW1vdmVkIGZvciBzdXJlICopXG4gICAgICB8IHggOjogbHgsIF8gOjogXyB3aGVuIG5vdCAobWVteSB4KSAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBseSBuXG4gICAgICAoKiB5IG5lZWRzIHRvIGJlIGFkZGVkIGZvciBzdXJlICopXG4gICAgICB8IF8gOjogXywgeSA6OiBseSB3aGVuIG5vdCAobWVteCB5KSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IGx5IChuICsgMSlcbiAgICAgICgqIG5vIG1vcmUgY2VydGFpbnR5LCB+bGVmdCBkZWNpZGVzIHdoYXQgdG8gcmVjdXIgb24gKilcbiAgICAgIHwgXyA6OiBseCwgXyA6OiBfIHdoZW4gbGVmdCAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdDpmYWxzZSBseCBseSBuXG4gICAgICB8IF8gOjogXywgeSA6OiBseSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0OnRydWUgbHggbHkgKG4gKyAxKVxuICAgIGluXG4gICAgZiB+YWNjIH5sZWZ0OnRydWUgbHggbHkgMFxuXG4gIGxldCByZWMgbGlzdF9yZXYgPyhhY2MgPSBbXSkgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgYWNjID0gaCA6OiBhY2MgaW5cbiAgICAgIGxpc3RfcmV2IH5hY2MgdFxuICAgIHwgW10gLT5cbiAgICAgIGFjY1xuXG4gIGxldCBkaWZmIH5lcSB4IHkgPVxuICAgIGxldCBhZGQgYWNjIGkgdiA9IEkgKGksIHYpIDo6IGFjY1xuICAgIGFuZCByZW1vdmUgYWNjIGkgPSBSIGkgOjogYWNjXG4gICAgYW5kIGFjYyA9IFtdIGluXG4gICAgbGlzdF9yZXYgKGZvbGRfZGlmZiB+ZXEgfmFjYyB+YWRkIH5yZW1vdmUgeCB5KVxuXG5lbmRcblxubW9kdWxlIFJMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoRGF0YUxpc3QpXG4gIG1vZHVsZSBEID0gRGF0YUxpc3RcbiAgdHlwZSAnYSBwID0gJ2EgRC5wID1cbiAgICB8IEkgb2YgaW50ICogJ2FcbiAgICB8IFIgb2YgaW50XG4gICAgfCBVIG9mIGludCAqICdhXG4gICAgfCBYIG9mIGludCAqIGludFxuXG4gIGxldCBjb25zIHggcyA9IHBhdGNoIHMgW0QuSSAoMCx4KV1cbiAgbGV0IHNub2MgeCBzID0gcGF0Y2ggcyBbRC5JICgtMSx4KV1cbiAgbGV0IGluc2VydCB4IGkgcyA9IHBhdGNoIHMgW0QuSSAoaSx4KV1cbiAgbGV0IHVwZGF0ZSB4IGkgcyA9IHBhdGNoIHMgW0QuVSAoaSx4KV1cbiAgbGV0IG1vdmUgaSBqIHMgPSBwYXRjaCBzIFtELlggKGksaildXG4gIGxldCByZW1vdmUgaSBzID0gcGF0Y2ggcyBbRC5SIGldXG5cbiAgbGV0IGluZGV4ID8oZXEgPSAoPSkpIGwgeCA9XG4gICAgbGV0IHJlYyBmIG4gPSBmdW5jdGlvblxuICAgICAgfCBoZCA6OiBfIHdoZW4gZXEgaGQgeCAtPiBuXG4gICAgICB8IF8gOjogdGwgLT4gZiAobiArIDEpIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIGluXG4gICAgZiAwIGxcblxuICBsZXQgdXBkYXRlX2VxID9lcSAoZGF0YSwgaGFuZGxlKSB4IHkgPVxuICAgIGxldCBpID0gaW5kZXggP2VxICh2YWx1ZSBkYXRhKSB4IGluXG4gICAgdXBkYXRlIHkgaSBoYW5kbGVcblxuICBsZXQgcmVtb3ZlX2xhc3QgKGRhdGEsIGhhbmRsZSkgPVxuICAgIHJlbW92ZSAoTGlzdC5sZW5ndGggKHZhbHVlIGRhdGEpIC0gMSkgaGFuZGxlXG5cbiAgbGV0IHJlbW92ZV9lcSA/ZXEgKGRhdGEsIGhhbmRsZSkgeCA9XG4gICAgbGV0IGkgPSBpbmRleCA/ZXEgKHZhbHVlIGRhdGEpIHggaW5cbiAgICByZW1vdmUgaSBoYW5kbGVcblxuICBsZXQgc2luZ2xldG9uIHggPSBjb25zdCBbeF1cblxuICBsZXQgc2luZ2xldG9uX3MgcyA9XG4gICAgbGV0IGZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBsZXQgZSxzZW5kID0gUmVhY3QuRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID0gZnJvbV9ldmVudCBbXSBlIGluXG4gICAgbGV0IF8gPSBSZWFjdC5TLm1hcCAoZnVuIHggLT5cbiAgICAgICAgaWYgIWZpcnN0XG4gICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICBmaXJzdDo9ZmFsc2U7XG4gICAgICAgICAgc2VuZCAoUGF0Y2ggW0koMCx4KV0pXG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIHNlbmQgKFBhdGNoIFtVKDAseCldKSkgcyBpblxuICAgIHJlc3VsdFxuXG4gIGxldCBjb25jYXQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCA9IGZ1biB4IHkgLT5cbiAgICBsZXQgdjEgPSB2YWx1ZSB4XG4gICAgYW5kIHYyID0gdmFsdWUgeSBpblxuICAgIGxldCBzaXplMSA9IHJlZiAwXG4gICAgYW5kIHNpemUyID0gcmVmIDAgaW5cbiAgICBsZXQgc2l6ZV93aXRoX3BhdGNoIHNpemV4IDogJ2EgRC5wIC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCAoRC5JIF8pIC0+IGluY3Igc2l6ZXhcbiAgICAgIHwgKEQuUiBfKSAtPiBkZWNyIHNpemV4XG4gICAgICB8IChELlggXyB8IEQuVSBfKSAtPiAoKSBpblxuICAgIGxldCBzaXplX3dpdGhfc2V0IHNpemV4IGwgPSBzaXpleDo9TGlzdC5sZW5ndGggbCBpblxuXG4gICAgc2l6ZV93aXRoX3NldCBzaXplMSB2MTtcbiAgICBzaXplX3dpdGhfc2V0IHNpemUyIHYyO1xuXG4gICAgbGV0IHVwZGF0ZV9wYXRjaDEgPSBMaXN0Lm1hcCAoZnVuIHAgLT5cbiAgICAgICAgbGV0IG0gPSBtYXRjaCBwIHdpdGhcbiAgICAgICAgICB8IEQuSSAocG9zLHgpIC0+XG4gICAgICAgICAgICBsZXQgaSA9IGlmIHBvcyA8IDAgdGhlbiBwb3MgLSAhc2l6ZTIgZWxzZSBwb3MgaW5cbiAgICAgICAgICAgIEQuSSAoaSwgeClcbiAgICAgICAgICB8IEQuUiBwb3MgICAgIC0+IEQuUiAgKGlmIHBvcyA8IDAgdGhlbiBwb3MgLSAhc2l6ZTIgZWxzZSBwb3MpXG4gICAgICAgICAgfCBELlUgKHBvcyx4KSAtPiBELlUgKChpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zKSwgeClcbiAgICAgICAgICB8IEQuWCAoaSxqKSAtPiAgIEQuWCAoKGlmIGkgPCAwIHRoZW4gaSAtICFzaXplMiBlbHNlIGkpLGopXG4gICAgICAgIGluXG4gICAgICAgIHNpemVfd2l0aF9wYXRjaCBzaXplMSBtO1xuICAgICAgICBtKSBpblxuICAgIGxldCB1cGRhdGVfcGF0Y2gyID0gTGlzdC5tYXAgKGZ1biBwIC0+XG4gICAgICAgIGxldCBtID0gbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgfCBELkkgKHBvcyx4KSAtPiBELkkgKChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKSwgeClcbiAgICAgICAgICB8IEQuUiBwb3MgICAgIC0+IEQuUiAgKGlmIHBvcyA8IDAgdGhlbiBwb3MgZWxzZSAhc2l6ZTEgKyBwb3MpXG4gICAgICAgICAgfCBELlUgKHBvcyx4KSAtPiBELlUgKChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKSwgeClcbiAgICAgICAgICB8IEQuWCAoaSxqKSAtPiAgIEQuWCAoKGlmIGkgPCAwIHRoZW4gaSBlbHNlICFzaXplMSArIGkpLGopXG4gICAgICAgIGluXG4gICAgICAgIHNpemVfd2l0aF9wYXRjaCBzaXplMiBtO1xuICAgICAgICBtKSBpblxuICAgIGxldCB0dXBsZV9ldiA9XG4gICAgICBSZWFjdC5FLm1lcmdlIChmdW4gYWNjIHggLT5cbiAgICAgICAgICBtYXRjaCBhY2MseCB3aXRoXG4gICAgICAgICAgfCAoTm9uZSxwMiksYEUxIHggLT4gU29tZSB4LHAyXG4gICAgICAgICAgfCAocDEsTm9uZSksYEUyIHggLT4gcDEsIFNvbWUgeFxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChOb25lLE5vbmUpXG4gICAgICAgIFtSZWFjdC5FLm1hcCAoZnVuIGUgLT4gYEUxIGUpIChldmVudCB4KTtcbiAgICAgICAgIFJlYWN0LkUubWFwIChmdW4gZSAtPiBgRTIgZSkgKGV2ZW50IHkpXSBpblxuICAgIGxldCBtZXJnZWRfZXYgPSBSZWFjdC5FLm1hcCAoZnVuIHAgLT5cbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgU29tZSAoU2V0IHAxKSwgU29tZSAoU2V0IHAyKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgcDE7XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBwMjtcbiAgICAgICAgICBTZXQgKHAxIEAgcDIpXG4gICAgICAgIHwgU29tZSAoU2V0IHAxKSwgTm9uZSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgcDE7XG4gICAgICAgICAgU2V0IChwMSBAIHZhbHVlIHkpXG4gICAgICAgIHwgTm9uZSwgU29tZSAoU2V0IHAyKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgcDI7XG4gICAgICAgICAgU2V0ICh2YWx1ZSB4IEAgcDIgKVxuICAgICAgICB8IFNvbWUgKFBhdGNoIHAxKSwgU29tZSAoUGF0Y2ggcDIpIC0+XG4gICAgICAgICAgbGV0IHAxID0gdXBkYXRlX3BhdGNoMSBwMSBpblxuICAgICAgICAgIGxldCBwMiA9IHVwZGF0ZV9wYXRjaDIgcDIgaW5cbiAgICAgICAgICBQYXRjaCAocDEgQCBwMilcbiAgICAgICAgfCBTb21lIChQYXRjaCBwMSksIE5vbmUgLT4gUGF0Y2ggKHVwZGF0ZV9wYXRjaDEgcDEpXG4gICAgICAgIHwgTm9uZSwgU29tZSAoUGF0Y2ggcDIpIC0+IFBhdGNoICh1cGRhdGVfcGF0Y2gyIHAyKVxuICAgICAgICB8IFNvbWUgKFBhdGNoIF8pLCBTb21lIChTZXQgczIpIC0+XG4gICAgICAgICAgbGV0IHMxID0gdmFsdWUgeCBpblxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgczE7XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBzMjtcbiAgICAgICAgICBTZXQoczEgQCBzMilcbiAgICAgICAgfCBTb21lIChTZXQgczEpLCBTb21lIChQYXRjaCBfKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgczE7XG4gICAgICAgICAgbGV0IHMyID0gdmFsdWUgeSBpblxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgczI7XG4gICAgICAgICAgU2V0KHMxIEAgczIpXG4gICAgICAgIHwgTm9uZSxOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKSB0dXBsZV9ldiBpblxuICAgIGZyb21fZXZlbnQgKHYxIEAgdjIpIG1lcmdlZF9ldlxuXG4gIGxldCBpbnZlcnNlIDogJ2EgLiAnYSBwIC0+ICdhIHAgPSBmdW5jdGlvblxuICAgIHwgSSAoaSx4KSAtPiBJKC1pLTEsIHgpXG4gICAgfCBVIChpLHgpIC0+IFUoLWktMSwgeClcbiAgICB8IFIgaSAtPiBSICgtaS0xKVxuICAgIHwgWCAoaSxqKSAtPiBYICgtaS0xLC1qKVxuXG4gIGxldCByZXYgdCA9XG4gICAgbGV0IGUgPSBSZWFjdC5FLm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXQgbCAtPiBTZXQgKExpc3QucmV2IGwpXG4gICAgICAgIHwgUGF0Y2ggcCAtPiBQYXRjaCAoTGlzdC5tYXAgaW52ZXJzZSBwKSkgIChldmVudCB0KVxuICAgIGluXG4gICAgZnJvbV9ldmVudCAoTGlzdC5yZXYgKHZhbHVlIHQpKSBlXG5cbiAgbGV0IGZpbHRlciBwcmVkIGwgPVxuICAgIGxldCBtb2R1bGUgSW50TWFwID0gTWFwLk1ha2UoSW50KSBpblxuXG4gICAgbGV0IGluZGV4ID0gcmVmIEludE1hcC5lbXB0eSBpblxuICAgIGxldCBzaXplID0gcmVmIDAgaW5cblxuICAgIGxldCBmaWx0ZXJfbGlzdCBsID1cbiAgICAgIGxldCByZWMgYXV4IChsOiAnYSBsaXN0KSByZXMgdGhlaXJfaSBteV9pID0gbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmVzXG4gICAgICAgIHwgeDo6eHMgLT5cbiAgICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCB0aGVpcl9pIChteV9pICsgMSkgIWluZGV4O1xuICAgICAgICAgICAgICAgYXV4IHhzICh4OjpyZXMpICh0aGVpcl9pICsgMSkgKG15X2kgKyAxKVxuICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIGF1eCB4cyByZXMgKHRoZWlyX2kgKyAxKSBteV9pXG4gICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2l6ZSA6PSBMaXN0Lmxlbmd0aCBsO1xuICAgICAgaW5kZXggOj0gSW50TWFwLmVtcHR5O1xuICAgICAgTGlzdC5yZXYgKGF1eCBsIFtdIDAgKC0xKSlcbiAgICBpblxuXG4gICAgbGV0IG5vcm1hbGlzZSBpID0gaWYgaSA8IDAgdGhlbiAhc2l6ZSArIDEgKyBpIGVsc2UgaSBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9pbnNlcnQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgdmlzaWJsZSA9XG4gICAgICBsZXQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgPSBub3JtYWxpc2UgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgaW5cbiAgICAgIGxldCBsZWZ0X2Fsb25lLCBkaXNwbGFjZWQsIHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgdXBkYXRhYmxlcyA9IG1hdGNoIGRpc3BsYWNlZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB1cGRhdGFibGVzXG4gICAgICAgIHwgU29tZSBkaXNwbGFjZWRfaW5fZmlsdGVyZWQgLT5cbiAgICAgICAgICAgSW50TWFwLmFkZCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCBkaXNwbGFjZWRfaW5fZmlsdGVyZWQgdXBkYXRhYmxlc1xuICAgICAgaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBsZXQgbmV3X2pfZmlsdGVyZWQgPSBpZiB2aXNpYmxlIHRoZW4gal9maWx0ZXJlZF9saXN0ICsgMSBlbHNlIGpfZmlsdGVyZWRfbGlzdCBpblxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChqX2Z1bGxfbGlzdCArIDEpIG5ld19qX2ZpbHRlcmVkICFpbmRleFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXMgaW5cbiAgICAgIGxldCBpbnNlcnRfcG9zX2ZpbHRlcmVkID0gaWYgSW50TWFwLmlzX2VtcHR5IGxlZnRfYWxvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIGxlZnRfYWxvbmUpKSArIDFcbiAgICAgIGluXG4gICAgICBpZiB2aXNpYmxlIHRoZW4gaW5kZXggOj0gSW50TWFwLmFkZCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCBpbnNlcnRfcG9zX2ZpbHRlcmVkICFpbmRleDtcbiAgICAgIGluY3Igc2l6ZTtcbiAgICAgIGluc2VydF9wb3NfZmlsdGVyZWRcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9yZW1vdmUgcmVtb3ZlX3Bvc19mdWxsX2xpc3QgPVxuICAgICAgbGV0IHdhc192aXNpYmxlID0gSW50TWFwLm1lbSByZW1vdmVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCBfLF8sdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCByZW1vdmVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBsZXQgbmV3X2ogPSBpZiB3YXNfdmlzaWJsZSB0aGVuIGpfZmlsdGVyZWRfbGlzdCBlbHNlIGpfZmlsdGVyZWRfbGlzdCAtIDEgaW5cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoal9mdWxsX2xpc3QgLSAxKSBuZXdfaiAhaW5kZXhcbiAgICAgIGluXG4gICAgICBpZiBub3QgKEludE1hcC5pc19lbXB0eSAhaW5kZXgpXG4gICAgICB0aGVuXG4gICAgICAgIGxldCBsYXN0X2ksIF8gPSBJbnRNYXAubWF4X2JpbmRpbmcgIWluZGV4IGluXG4gICAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgbGFzdF9pICFpbmRleFxuICAgICAgZWxzZSAoKTtcbiAgICAgIGRlY3Igc2l6ZTtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXNcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF91cGRhdGVfZGVsZXRlIHVwZGF0ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCBfLCBfLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgal9mdWxsX2xpc3QgKGpfZmlsdGVyZWRfbGlzdCAtIDEpICFpbmRleFxuICAgICAgaW5cbiAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgdXBkYXRlX3Bvc19mdWxsX2xpc3QgIWluZGV4O1xuICAgICAgSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlc1xuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X3VwZGF0ZV9pbnNlcnQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgPVxuICAgICAgbGV0IGxlZnRfYWxvbmUsIG5vbmUsIHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBhc3NlcnQgKG5vbmUgPSBOb25lKTtcbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIGpfZnVsbF9saXN0IChqX2ZpbHRlcmVkX2xpc3QgKyAxKSAhaW5kZXhcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3Bvc19maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IHByZXZpb3VzX3Bvc19maWx0ZXJlZCA9IHRyeSAoc25kIChJbnRNYXAubWF4X2JpbmRpbmcgbGVmdF9hbG9uZSkpIHdpdGggTm90X2ZvdW5kIC0+ICgtMSkgaW5cbiAgICAgICAgcHJldmlvdXNfcG9zX2ZpbHRlcmVkICsgMVxuICAgICAgaW5cbiAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgbmV3X3Bvc19maWx0ZXJlZF9saXN0ICFpbmRleDtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXM7XG4gICAgICBuZXdfcG9zX2ZpbHRlcmVkX2xpc3RcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9tb3ZlIGZyb21fZnVsbF9saXN0IHRvX2Z1bGxfbGlzdCB0b19maWx0ZXJlZCA9XG4gICAgICBsZXQgd2FzX3Zpc2libGUgPSBtYXRjaCB0b19maWx0ZXJlZCB3aXRoIHwgU29tZSBfIC0+IHRydWUgfCBOb25lIC0+IGZhbHNlIGluXG4gICAgICBsZXQgZm9yd2FyZCA9IGZyb21fZnVsbF9saXN0IDwgdG9fZnVsbF9saXN0IGluXG4gICAgICBpZiBmb3J3YXJkIHRoZW5cbiAgICAgICAgZm9yIGlfZnVsbCA9IGZyb21fZnVsbF9saXN0ICsgMSB0byB0b19mdWxsX2xpc3QgZG9cbiAgICAgICAgICBsZXQgZGVsdGEgPSBpZiB3YXNfdmlzaWJsZSB0aGVuICgtMSkgZWxzZSAwIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgaV9maWx0ZXJlZCA9IEludE1hcC5maW5kIGlfZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgIGxldCBuZXdfdmFsID0gaV9maWx0ZXJlZCArIGRlbHRhIGluXG4gICAgICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChpX2Z1bGwgLSAxKSBuZXdfdmFsICFpbmRleFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vdF9mb3VuZCAtPiAoKVxuICAgICAgICBkb25lXG4gICAgICBlbHNlXG4gICAgICAgIGZvciBpX2Z1bGwgPSBmcm9tX2Z1bGxfbGlzdCAtIDEgZG93bnRvIHRvX2Z1bGxfbGlzdCBkb1xuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGRlbHRhID0gaWYgd2FzX3Zpc2libGUgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgbGV0IGlfZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBpX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICBsZXQgbmV3X3ZhbCA9IGlfZmlsdGVyZWQgKyBkZWx0YSBpblxuICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoaV9mdWxsICsgMSkgbmV3X3ZhbCAhaW5kZXhcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb3RfZm91bmQgLT4gKClcbiAgICAgICAgZG9uZTtcbiAgICAgIG1hdGNoIHRvX2ZpbHRlcmVkIHdpdGhcbiAgICAgIHwgU29tZSB0b19maWx0ZXJlZCAtPlxuICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCB0b19mdWxsX2xpc3QgdG9fZmlsdGVyZWQgIWluZGV4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgdG9fZnVsbF9saXN0ICFpbmRleFxuICAgIGluXG5cbiAgICBsZXQgY29udmVydF9wID0gZnVuY3Rpb25cbiAgICAgIHwgSSAoaSwgeCkgLT5cbiAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgdGhlblxuICAgICAgICAgICBsZXQgbXlfaSA9IHVwZGF0ZV9pbmRleF9pbnNlcnQgaSB0cnVlIGluXG4gICAgICAgICAgIFtJIChteV9pLCB4KV1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICBpZ25vcmUgKHVwZGF0ZV9pbmRleF9pbnNlcnQgaSBmYWxzZSk7XG4gICAgICAgICAgICAgW11cbiAgICAgICAgICAgZW5kXG4gICAgICB8IFIgaSAtPlxuICAgICAgICAgbGV0IGkgPSBub3JtYWxpc2UgaSBpblxuICAgICAgICAgbGV0IHJldCA9IHRyeSBsZXQgaiA9IEludE1hcC5maW5kIGkgIWluZGV4IGluIFtSIGpdIHdpdGggfCBOb3RfZm91bmQgLT4gW10gaW5cbiAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9pbmRleF9yZW1vdmUgaSBpblxuICAgICAgICAgcmV0XG4gICAgICB8IFUgKGksIHgpIC0+XG4gICAgICAgICBsZXQgaSA9IG5vcm1hbGlzZSBpIGluXG4gICAgICAgICBiZWdpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgb2xkX2ogPSBJbnRNYXAuZmluZCBpICFpbmRleCBpblxuICAgICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICAgIHRoZW4gW1UgKG9sZF9qLCB4KV1cbiAgICAgICAgICAgICBlbHNlICh1cGRhdGVfaW5kZXhfdXBkYXRlX2RlbGV0ZSBpOyBbUiBvbGRfal0pXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgbmV3X2ogPSB1cGRhdGVfaW5kZXhfdXBkYXRlX2luc2VydCBpIGluXG4gICAgICAgICAgICAgICAgW0kgKG5ld19qLCB4KV1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICBlbmRcbiAgICAgIHwgWCAob3JpZ2luX2Z1bGwsIG9mZnNldF9mdWxsKSAtPlxuICAgICAgICAgbGV0IG9yaWdpbl9mdWxsID0gbm9ybWFsaXNlIG9yaWdpbl9mdWxsIGluXG4gICAgICAgICBsZXQgZGVzdF9mdWxsID0gb3JpZ2luX2Z1bGwgKyBvZmZzZXRfZnVsbCBpblxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIGxldCBvcmlnaW5fZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBvcmlnaW5fZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgbGV0IGRlc3RfZmlsdGVyZWQgPVxuICAgICAgICAgICAgIHRyeSBJbnRNYXAuZmluZCBkZXN0X2Z1bGwgIWluZGV4XG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNtYWxsX29uZXMsIF8sIF8gPSBJbnRNYXAuc3BsaXQgb3JpZ2luX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICAgICAgaWYgSW50TWFwLmlzX2VtcHR5IHNtYWxsX29uZXNcbiAgICAgICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgICAgICBlbHNlIHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIHNtYWxsX29uZXMpICsgMVxuICAgICAgICAgICBpblxuICAgICAgICAgICB1cGRhdGVfaW5kZXhfbW92ZSBvcmlnaW5fZnVsbCBkZXN0X2Z1bGwgKFNvbWUgZGVzdF9maWx0ZXJlZCk7XG4gICAgICAgICAgIGlmIGRlc3RfZmlsdGVyZWQgIT0gb3JpZ2luX2ZpbHRlcmVkXG4gICAgICAgICAgIHRoZW4gW1ggKG9yaWdpbl9maWx0ZXJlZCwgZGVzdF9maWx0ZXJlZCAtIG9yaWdpbl9maWx0ZXJlZCldXG4gICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAoKiBtb3ZpbmcgYW4gZWxlbWVudCB0aGF0IHdhcyBmaWx0ZXJlZCBvdXQgKilcbiAgICAgICAgICAgIHVwZGF0ZV9pbmRleF9tb3ZlIG9yaWdpbl9mdWxsIGRlc3RfZnVsbCBOb25lO1xuICAgICAgICAgICAgW11cbiAgICBpblxuXG4gICAgbGV0IGZpbHRlcl9lID0gZnVuY3Rpb25cbiAgICAgIHwgU2V0IGwgLT4gU2V0IChmaWx0ZXJfbGlzdCBsKVxuICAgICAgfCBQYXRjaCBwIC0+XG4gICAgICAgICBQYXRjaCAoTGlzdC5jb25jYXQgKExpc3QubWFwIGNvbnZlcnRfcCBwKSlcbiAgICBpblxuICAgIGxldCBlID0gUmVhY3QuRS5tYXAgZmlsdGVyX2UgKGV2ZW50IGwpIGluXG4gICAgZnJvbV9ldmVudCAoZmlsdGVyX2xpc3QgKHZhbHVlIGwpKSBlXG5cbiAgbW9kdWxlIEludFNldCA9IFNldC5NYWtlIChJbnQpXG5cbiAgbGV0IGZvcl9hbGwgZm4gZGF0YSA9XG4gICAgbGV0IG1heWJlX3VwZGF0ZSBhY2MgaSB2ID0gaWYgZm4gdiB0aGVuIGFjYyBlbHNlIEludFNldC5hZGQgaSBhY2MgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBsZXQgcmVjIGZvbGQgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IHYgOjogdGwgLT4gZm9sZCAoaSArIDEpIChtYXliZV91cGRhdGUgYWNjIGkgdikgdGxcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIGluXG4gICAgICBmb2xkIDAgSW50U2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2lkeF9hZnRlciBpIGYgYWNjID1cbiAgICAgIEludFNldC5tYXAgKGZ1biBpJyAtPiBpZiBpJyA+PSBpIHRoZW4gZiBpJyAxIGVsc2UgaScpIGFjY1xuICAgIGluXG4gICAgbGV0IGYgPSBmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNldCB4IC0+IGluaXQgeFxuICAgICAgfCBQYXRjaCB1cGRhdGVzIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFggKGksIGknKSAtPlxuICAgICAgICAgICAgICAgaWYgSW50U2V0Lm1lbSBpIGFjYyA9IEludFNldC5tZW0gaScgYWNjXG4gICAgICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgICAgZWxzZSBpZiBJbnRTZXQubWVtIGkgYWNjXG4gICAgICAgICAgICAgICB0aGVuIEludFNldC5hZGQgaScgKEludFNldC5yZW1vdmUgaSBhY2MpXG4gICAgICAgICAgICAgICBlbHNlIEludFNldC5hZGQgaSAoSW50U2V0LnJlbW92ZSBpJyBhY2MpXG4gICAgICAgICAgICAgfCBSIGkgLT5cbiAgICAgICAgICAgICAgIHVwZGF0ZV9pZHhfYWZ0ZXIgaSAoLSkgKEludFNldC5yZW1vdmUgaSBhY2MpXG4gICAgICAgICAgICAgfCBJIChpLCB2KSAtPlxuICAgICAgICAgICAgICAgbGV0IGFjYyA9IHVwZGF0ZV9pZHhfYWZ0ZXIgaSAoKykgYWNjIGluXG4gICAgICAgICAgICAgICBtYXliZV91cGRhdGUgYWNjIGkgdlxuICAgICAgICAgICAgIHwgVSAoaSwgdikgLT5cbiAgICAgICAgICAgICAgIG1heWJlX3VwZGF0ZSAoSW50U2V0LnJlbW92ZSBpIGFjYykgaSB2KVxuICAgICAgICAgIGFjY1xuICAgICAgICAgIHVwZGF0ZXNcbiAgICBpblxuICAgIFJlYWN0LlMuZm9sZCBmIChpbml0ICh2YWx1ZSBkYXRhKSkgKGV2ZW50IGRhdGEpXG4gICAgfD4gUmVhY3QuUy5tYXAgSW50U2V0LmlzX2VtcHR5XG5cbmVuZFxuXG5tb2R1bGUgUk1hcChNIDogTWFwLlMpID0gc3RydWN0XG5cbiAgbW9kdWxlIERhdGEgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgZGF0YSA9ICdhIE0udFxuXG4gICAgdHlwZSAnYSBwID0gW2BBZGQgb2YgKE0ua2V5ICogJ2EpIHwgYERlbCBvZiBNLmtleV1cblxuICAgIHR5cGUgJ2EgcGF0Y2ggPSAnYSBwIGxpc3RcblxuICAgIGxldCBtZXJnZV9wIHAgcyA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgYEFkZCAoayxhKSAtPiBNLmFkZCBrIGEgc1xuICAgICAgfCBgRGVsIGsgLT4gTS5yZW1vdmUgayBzXG5cbiAgICBsZXQgbWVyZ2UgcCBhY2MgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBwIC0+IG1lcmdlX3AgcCBhY2MpIGFjYyBwXG5cbiAgICBsZXQgbWFwX3AgZiA9IGZ1bmN0aW9uXG4gICAgICB8IGBBZGQgKGssYSkgLT4gYEFkZCAoayxmIGEpXG4gICAgICB8IGBEZWwgayAtPiBgRGVsIGtcblxuICAgIGxldCBtYXBfcGF0Y2ggZiA9IExpc3QubWFwIChtYXBfcCBmKVxuXG4gICAgbGV0IG1hcF9kYXRhIGYgZCA9IE0ubWFwIGYgZFxuXG4gICAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuXG4gICAgbGV0IGVxdWFsIGYgPSBNLmVxdWFsIGZcblxuICAgIGxldCBkaWZmIH5lcSB4IHkgPVxuICAgICAgbGV0IG0gPVxuICAgICAgICBsZXQgZyBfa2V5IHYgdyA9XG4gICAgICAgICAgbWF0Y2ggdiwgdyB3aXRoXG4gICAgICAgICAgfCBTb21lIHYsIFNvbWUgdyB3aGVuIGVxIHYgdyAtPlxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIHwgU29tZSBfLCBTb21lIHcgLT5cbiAgICAgICAgICAgIFNvbWUgKGBVIHcpXG4gICAgICAgICAgfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICAgIFNvbWUgYERcbiAgICAgICAgICB8IE5vbmUsIFNvbWUgdiAtPlxuICAgICAgICAgICAgU29tZSAoYEEgdilcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgTS5tZXJnZSBnIHggeVxuICAgICAgYW5kIGcga2V5IHggYWNjID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgYFUgdiAtPlxuICAgICAgICAgIGBEZWwga2V5IDo6IGBBZGQgKGtleSwgdikgOjogYWNjXG4gICAgICAgIHwgYEQgLT5cbiAgICAgICAgICBgRGVsIGtleSA6OiBhY2NcbiAgICAgICAgfCBgQSB2IC0+XG4gICAgICAgICAgYEFkZCAoa2V5LCB2KSA6OiBhY2NcbiAgICAgIGFuZCBhY2MgPSBbXSBpblxuICAgICAgTGlzdC5yZXYgKE0uZm9sZCBnIG0gYWNjKVxuXG4gIGVuZFxuXG4gIGluY2x1ZGUgTWFrZShEYXRhKVxuXG4gIGxldCBmaWx0ZXIgcHJlZCBtID1cblxuICAgIGxldCBjb252ZXJ0X3AgPSBmdW5jdGlvblxuICAgICAgfCBgQWRkIChrLHYpIC0+XG4gICAgICAgICBpZiBwcmVkIGsgdlxuICAgICAgICAgdGhlbiBbYEFkZCAoayx2KV1cbiAgICAgICAgIGVsc2UgW11cbiAgICAgIHwgYERlbCBrIC0+IFtgRGVsIGtdXG4gICAgaW5cblxuICAgIGxldCBmaWx0ZXJfZSA9IGZ1bmN0aW9uXG4gICAgICB8IFNldCBtIC0+IFNldCAoTS5maWx0ZXIgcHJlZCBtKVxuICAgICAgfCBQYXRjaCBwIC0+IFBhdGNoIChMaXN0LmNvbmNhdCAoTGlzdC5tYXAgY29udmVydF9wIHApKVxuICAgIGluXG5cbiAgICBsZXQgZSA9IFJlYWN0LkUubWFwIGZpbHRlcl9lIChldmVudCBtKSBpblxuICAgIGZyb21fZXZlbnQgKE0uZmlsdGVyIHByZWQgKHZhbHVlIG0pKSBlXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX3R5eG1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuVHl4bWxfY2FzdCAqKVxubW9kdWxlIFR5eG1sX2Nhc3QgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfY2FzdFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5UeXhtbF9jYXN0X3NpZ3MgKilcbm1vZHVsZSBUeXhtbF9jYXN0X3NpZ3MgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfY2FzdF9zaWdzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLlR5eG1sX2pzICopXG5tb2R1bGUgVHl4bWxfanMgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfanNcblxubW9kdWxlIEpzX29mX29jYW1sX3R5eG1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogaW50KSB5ID0geCA8IHlcblxuICBsZXQgKCA8PSApICh4IDogaW50KSB5ID0geCA8PSB5XG5cbiAgbGV0ICggPD4gKSAoeCA6IGludCkgeSA9IHggPD4geVxuXG4gIGxldCAoID0gKSAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0ICggPiApICh4IDogaW50KSB5ID0geCA+IHlcblxuICBsZXQgKCA+PSApICh4IDogaW50KSB5ID0geCA+PSB5XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuXG4gIGxldCBlcXVhbCAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgTWFrZVRvIChDIDogc2lnXG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGVsdCA6ICdhIGVsdCAtPiBEb20ubm9kZSBKcy50XG5lbmQpIDogVHl4bWxfY2FzdF9zaWdzLlRPIHdpdGggdHlwZSAnYSBlbHQgPSAnYSBDLmVsdCA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEMuZWx0XG5cbiAgbGV0IHJlYnVpbGRfbm9kZSBfIHggPSBKcy5VbnNhZmUuY29lcmNlIChDLmVsdCB4KVxuXG4gIGxldCBvZl9lbGVtZW50IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VsZW1lbnRcIiBlbHRcblxuICBsZXQgb2Zfbm9kZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ub2RlXCIgZWx0XG5cbiAgbGV0IG9mX3BjZGF0YSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wY2RhdGFcIiBlbHRcblxuICBsZXQgb2ZfaHRtbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9odG1sXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZFwiIGVsdFxuXG4gIGxldCBvZl9saW5rIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpbmtcIiBlbHRcblxuICBsZXQgb2ZfdGl0bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGl0bGVcIiBlbHRcblxuICBsZXQgb2ZfbWV0YSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZXRhXCIgZWx0XG5cbiAgbGV0IG9mX2Jhc2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmFzZVwiIGVsdFxuXG4gIGxldCBvZl9zdHlsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdHlsZVwiIGVsdFxuXG4gIGxldCBvZl9ib2R5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JvZHlcIiBlbHRcblxuICBsZXQgb2ZfZm9ybSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9mb3JtXCIgZWx0XG5cbiAgbGV0IG9mX29wdGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX29wdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRpb25cIiBlbHRcblxuICBsZXQgb2Zfc2VsZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlbGVjdFwiIGVsdFxuXG4gIGxldCBvZl9pbnB1dCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbnB1dFwiIGVsdFxuXG4gIGxldCBvZl90ZXh0YXJlYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90ZXh0YXJlYVwiIGVsdFxuXG4gIGxldCBvZl9idXR0b24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYnV0dG9uXCIgZWx0XG5cbiAgbGV0IG9mX2xhYmVsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xhYmVsXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZWxkc2V0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZWxkc2V0XCIgZWx0XG5cbiAgbGV0IG9mX2xlZ2VuZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sZWdlbmRcIiBlbHRcblxuICBsZXQgb2ZfdWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdWxcIiBlbHRcblxuICBsZXQgb2Zfb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb2xcIiBlbHRcblxuICBsZXQgb2ZfZGwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGxcIiBlbHRcblxuICBsZXQgb2ZfbGkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlcIiBlbHRcblxuICBsZXQgb2ZfZGl2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RpdlwiIGVsdFxuXG4gIGxldCBvZl9wIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BcIiBlbHRcblxuICBsZXQgb2ZfaGVhZGluZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkaW5nXCIgZWx0XG5cbiAgbGV0IG9mX2Jsb2NrcXVvdGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmxvY2txdW90ZVwiIGVsdFxuXG4gIGxldCBvZl9wcmUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcHJlXCIgZWx0XG5cbiAgbGV0IG9mX2JyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JyXCIgZWx0XG5cbiAgbGV0IG9mX2hyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hyXCIgZWx0XG5cbiAgbGV0IG9mX2lucyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbnNcIiBlbHRcblxuICBsZXQgb2ZfZGVsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RlbFwiIGVsdFxuXG4gIGxldCBvZl9hIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FcIiBlbHRcblxuICBsZXQgb2ZfaW1nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ltZ1wiIGVsdFxuXG4gIGxldCBvZl9vYmplY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb2JqZWN0XCIgZWx0XG5cbiAgbGV0IG9mX3BhcmFtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFtXCIgZWx0XG5cbiAgbGV0IG9mX2FyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJlYVwiIGVsdFxuXG4gIGxldCBvZl9tYXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFwXCIgZWx0XG5cbiAgbGV0IG9mX3NjcmlwdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2ZfdGQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGRcIiBlbHRcblxuICBsZXQgb2ZfdHIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdHJcIiBlbHRcblxuICBsZXQgb2ZfY29sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvbFwiIGVsdFxuXG4gIGxldCBvZl90Zm9vdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90Zm9vdFwiIGVsdFxuXG4gIGxldCBvZl90aGVhZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aGVhZFwiIGVsdFxuXG4gIGxldCBvZl90Ym9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90Ym9keVwiIGVsdFxuXG4gIGxldCBvZl9jYXB0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfdGFibGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVcIiBlbHRcblxuICBsZXQgb2ZfY2FudmFzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NhbnZhc1wiIGVsdFxuXG4gIGxldCBvZl9pZnJhbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaWZyYW1lXCIgZWx0XG5cbiAgbGV0IG9mX2F1ZGlvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2F1ZGlvXCIgZWx0XG5cbiAgbGV0IG9mX3ZpZGVvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZpZGVvXCIgZWx0XG5cbiAgKCogRG9tX2h0bWwuaGVhZGluZ0VsZW1lbnQgKilcblxuICBsZXQgb2ZfaDEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDFcIiBlbHRcblxuICBsZXQgb2ZfaDIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDJcIiBlbHRcblxuICBsZXQgb2ZfaDMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDNcIiBlbHRcblxuICBsZXQgb2ZfaDQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDRcIiBlbHRcblxuICBsZXQgb2ZfaDUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDVcIiBlbHRcblxuICBsZXQgb2ZfaDYgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDZcIiBlbHRcblxuICAoKiBEb21faHRtbC5lbGVtZW50ICopXG5cbiAgbGV0IG9mX2FiYnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYWJiclwiIGVsdFxuXG4gIGxldCBvZl9hZGRyZXNzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FkZHJlc3NcIiBlbHRcblxuICBsZXQgb2ZfYXJ0aWNsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hcnRpY2xlXCIgZWx0XG5cbiAgbGV0IG9mX2FzaWRlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FzaWRlXCIgZWx0XG5cbiAgbGV0IG9mX2IgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYlwiIGVsdFxuXG4gIGxldCBvZl9iZG8gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmRvXCIgZWx0XG5cbiAgbGV0IG9mX2NpdGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY2l0ZVwiIGVsdFxuXG4gIGxldCBvZl9jb2RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvZGVcIiBlbHRcblxuICBsZXQgb2ZfY29sZ3JvdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29sZ3JvdXBcIiBlbHRcblxuICBsZXQgb2ZfY29tbWFuZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb21tYW5kXCIgZWx0XG5cbiAgbGV0IG9mX2RhdGFsaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RhdGFsaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2RkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RkXCIgZWx0XG5cbiAgbGV0IG9mX2RldGFpbHMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGV0YWlsc1wiIGVsdFxuXG4gIGxldCBvZl9kZm4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGZuXCIgZWx0XG5cbiAgbGV0IG9mX2R0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2R0XCIgZWx0XG5cbiAgbGV0IG9mX2VtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VtXCIgZWx0XG5cbiAgbGV0IG9mX2VtYmVkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VtYmVkXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZ2NhcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZmlnY2FwdGlvblwiIGVsdFxuXG4gIGxldCBvZl9maWd1cmUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZmlndXJlXCIgZWx0XG5cbiAgbGV0IG9mX2Zvb3RlciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9mb290ZXJcIiBlbHRcblxuICBsZXQgb2ZfaGVhZGVyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRlclwiIGVsdFxuXG4gIGxldCBvZl9oZ3JvdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX2kgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaVwiIGVsdFxuXG4gIGxldCBvZl9rYmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfa2JkXCIgZWx0XG5cbiAgbGV0IG9mX2tleWdlbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9rZXlnZW5cIiBlbHRcblxuICBsZXQgb2ZfbWFpbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tYWluXCIgZWx0XG5cbiAgbGV0IG9mX21hcmsgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFya1wiIGVsdFxuXG4gIGxldCBvZl9tZW51IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21lbnVcIiBlbHRcblxuICBsZXQgb2ZfbWV0ZXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0ZXJcIiBlbHRcblxuICBsZXQgb2ZfbmF2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX25hdlwiIGVsdFxuXG4gIGxldCBvZl9ub3NjcmlwdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ub3NjcmlwdFwiIGVsdFxuXG4gIGxldCBvZl9vdXRwdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3V0cHV0XCIgZWx0XG5cbiAgbGV0IG9mX3Byb2dyZXNzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3Byb2dyZXNzXCIgZWx0XG5cbiAgbGV0IG9mX3EgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcVwiIGVsdFxuXG4gIGxldCBvZl9ycCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ycFwiIGVsdFxuXG4gIGxldCBvZl9ydCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ydFwiIGVsdFxuXG4gIGxldCBvZl9ydWJ5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3J1YnlcIiBlbHRcblxuICBsZXQgb2Zfc2FtcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zYW1wXCIgZWx0XG5cbiAgbGV0IG9mX3NlY3Rpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2VjdGlvblwiIGVsdFxuXG4gIGxldCBvZl9zbWFsbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zbWFsbFwiIGVsdFxuXG4gIGxldCBvZl9zb3VyY2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc291cmNlXCIgZWx0XG5cbiAgbGV0IG9mX3NwYW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3BhblwiIGVsdFxuXG4gIGxldCBvZl9zdHJvbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3Ryb25nXCIgZWx0XG5cbiAgbGV0IG9mX3N1YiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdWJcIiBlbHRcblxuICBsZXQgb2Zfc3VtbWFyeSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdW1tYXJ5XCIgZWx0XG5cbiAgbGV0IG9mX3N1cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdXBcIiBlbHRcblxuICBsZXQgb2ZfdGggZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGhcIiBlbHRcblxuICBsZXQgb2ZfdGltZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aW1lXCIgZWx0XG5cbiAgbGV0IG9mX3UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdVwiIGVsdFxuXG4gIGxldCBvZl92YXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdmFyXCIgZWx0XG5cbiAgbGV0IG9mX3diciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl93YnJcIiBlbHRcbmVuZFxuXG5tb2R1bGUgTWFrZU9mIChDIDogc2lnXG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGVsdCA6IERvbS5ub2RlIEpzLnQgLT4gJ2EgZWx0XG5lbmQpIDogVHl4bWxfY2FzdF9zaWdzLk9GIHdpdGggdHlwZSAnYSBlbHQgPSAnYSBDLmVsdCA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEMuZWx0XG5cbiAgbGV0IHJlYnVpbGRfbm9kZSBfIHggPSBDLmVsdCAoSnMuVW5zYWZlLmNvZXJjZSB4KVxuXG4gIGxldCBvZl9lbGVtZW50IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VsZW1lbnRcIiBlbHRcblxuICBsZXQgb2ZfaHRtbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9odG1sXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZFwiIGVsdFxuXG4gIGxldCBvZl9saW5rIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpbmtcIiBlbHRcblxuICBsZXQgb2ZfdGl0bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGl0bGVcIiBlbHRcblxuICBsZXQgb2ZfbWV0YSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZXRhXCIgZWx0XG5cbiAgbGV0IG9mX2Jhc2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmFzZVwiIGVsdFxuXG4gIGxldCBvZl9zdHlsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdHlsZVwiIGVsdFxuXG4gIGxldCBvZl9ib2R5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JvZHlcIiBlbHRcblxuICBsZXQgb2ZfZm9ybSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9mb3JtXCIgZWx0XG5cbiAgbGV0IG9mX29wdEdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdEdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX29wdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRpb25cIiBlbHRcblxuICBsZXQgb2Zfc2VsZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlbGVjdFwiIGVsdFxuXG4gIGxldCBvZl9pbnB1dCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbnB1dFwiIGVsdFxuXG4gIGxldCBvZl90ZXh0QXJlYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90ZXh0QXJlYVwiIGVsdFxuXG4gIGxldCBvZl9idXR0b24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYnV0dG9uXCIgZWx0XG5cbiAgbGV0IG9mX2xhYmVsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xhYmVsXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZWxkU2V0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZWxkU2V0XCIgZWx0XG5cbiAgbGV0IG9mX2xlZ2VuZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sZWdlbmRcIiBlbHRcblxuICBsZXQgb2ZfdUxpc3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdUxpc3RcIiBlbHRcblxuICBsZXQgb2Zfb0xpc3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb0xpc3RcIiBlbHRcblxuICBsZXQgb2ZfZExpc3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZExpc3RcIiBlbHRcblxuICBsZXQgb2ZfbGkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlcIiBlbHRcblxuICBsZXQgb2ZfZGl2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RpdlwiIGVsdFxuXG4gIGxldCBvZl9wYXJhZ3JhcGggZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGFyYWdyYXBoXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRpbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGluZ1wiIGVsdFxuXG4gIGxldCBvZl9xdW90ZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9xdW90ZVwiIGVsdFxuXG4gIGxldCBvZl9wcmUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcHJlXCIgZWx0XG5cbiAgbGV0IG9mX2JyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JyXCIgZWx0XG5cbiAgbGV0IG9mX2hyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hyXCIgZWx0XG5cbiAgbGV0IG9mX21vZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tb2RcIiBlbHRcblxuICBsZXQgb2ZfYW5jaG9yIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FuY2hvclwiIGVsdFxuXG4gIGxldCBvZl9pbWFnZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbWFnZVwiIGVsdFxuXG4gIGxldCBvZl9vYmplY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb2JqZWN0XCIgZWx0XG5cbiAgbGV0IG9mX3BhcmFtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFtXCIgZWx0XG5cbiAgbGV0IG9mX2FyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJlYVwiIGVsdFxuXG4gIGxldCBvZl9tYXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFwXCIgZWx0XG5cbiAgbGV0IG9mX3NjcmlwdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2ZfZW1iZWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZW1iZWRcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVDZWxsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlQ2VsbFwiIGVsdFxuXG4gIGxldCBvZl90YWJsZVJvdyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZVJvd1wiIGVsdFxuXG4gIGxldCBvZl90YWJsZUNvbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNvbFwiIGVsdFxuXG4gIGxldCBvZl90YWJsZVNlY3Rpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVTZWN0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlQ2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfdGFibGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVcIiBlbHRcblxuICBsZXQgb2ZfY2FudmFzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NhbnZhc1wiIGVsdFxuXG4gIGxldCBvZl9pRnJhbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaUZyYW1lXCIgZWx0XG5cbiAgbGV0IG9mX2F1ZGlvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2F1ZGlvXCIgZWx0XG5cbiAgbGV0IG9mX3ZpZGVvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZpZGVvXCIgZWx0XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5sZXQganNfc3RyaW5nX29mX2Zsb2F0IGYgPSAoSnMubnVtYmVyX29mX2Zsb2F0IGYpIyN0b1N0cmluZ1xuXG5sZXQganNfc3RyaW5nX29mX2ludCBpID0gKEpzLm51bWJlcl9vZl9mbG9hdCAoZmxvYXRfb2ZfaW50IGkpKSMjdG9TdHJpbmdcblxubW9kdWxlIHR5cGUgWE1MID1cbiAgWG1sX3NpZ3MuVFxuICAgIHdpdGggdHlwZSB1cmkgPSBzdHJpbmdcbiAgICAgYW5kIHR5cGUgZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gYm9vbFxuICAgICBhbmQgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwubW91c2VFdmVudCBKcy50IC0+IGJvb2xcbiAgICAgYW5kIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmtleWJvYXJkRXZlbnQgSnMudCAtPiBib29sXG4gICAgIGFuZCB0eXBlIGVsdCA9IERvbS5ub2RlIEpzLnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3ZWFrTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBzZXQgOiAnYSAtPiAnYiAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZ2V0IDogJ2EgLT4gJ2IgSnMuT3B0ZGVmLnQgSnMubWV0aFxuZW5kXG5cbmxldCByZXRhaW4gPVxuICBsZXQgbWFwIDogKERvbS5ub2RlIEpzLnQsIE9iai50IEpzLmpzX2FycmF5IEpzLnQpIHdlYWtNYXAgSnMudCA9XG4gICAgbGV0IHdlYWtNYXAgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYWtNYXAgaW5cbiAgICBuZXclanMgd2Vha01hcFxuICBpblxuICBmdW4gKHR5cGUgYSkgbm9kZSB+KGtlZXBtZSA6IGEpIC0+XG4gICAgbGV0IHByZXYgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2UgKG1hcCMjZ2V0IG5vZGUpIChmdW4gKCkgLT4gbmV3JWpzIEpzLmFycmF5X2VtcHR5KSAoZnVuIHggLT4geClcbiAgICBpblxuICAgIGxldCAoXyA6IGludCkgPSBwcmV2IyNwdXNoIChPYmoucmVwciBrZWVwbWUpIGluXG4gICAgbWFwIyNzZXQgbm9kZSBwcmV2XG5cbm1vZHVsZSBYbWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIFcgPSBYbWxfd3JhcC5Ob1dyYXBcblxuICB0eXBlICdhIHdyYXAgPSAnYVxuXG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgbGlzdFxuXG4gIHR5cGUgdXJpID0gc3RyaW5nXG5cbiAgbGV0IHVyaV9vZl9zdHJpbmcgcyA9IHNcblxuICBsZXQgc3RyaW5nX29mX3VyaSBzID0gc1xuXG4gIHR5cGUgYW5hbWUgPSBzdHJpbmdcblxuICB0eXBlIGV2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5ldmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmtleWJvYXJkRXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwudG91Y2hFdmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIGF0dHJpYl9rID1cbiAgICB8IEV2ZW50IG9mIGV2ZW50X2hhbmRsZXJcbiAgICB8IE1vdXNlRXZlbnQgb2YgbW91c2VfZXZlbnRfaGFuZGxlclxuICAgIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZF9ldmVudF9oYW5kbGVyXG4gICAgfCBUb3VjaEV2ZW50IG9mIHRvdWNoX2V2ZW50X2hhbmRsZXJcbiAgICB8IEF0dHIgb2YgSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uIFJlYWN0LlMudFxuXG4gIHR5cGUgYXR0cmliID0gYW5hbWUgKiBhdHRyaWJfa1xuXG4gIGxldCBhdHRyIG5hbWUgdiA9IG5hbWUsIEF0dHIgKFJlYWN0LlMuY29uc3QgKFNvbWUgdikpXG5cbiAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHZhbHVlIDogYXR0cmliID0gYXR0ciBuYW1lIChqc19zdHJpbmdfb2ZfZmxvYXQgdmFsdWUpXG5cbiAgbGV0IGludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoanNfc3RyaW5nX29mX2ludCB2YWx1ZSlcblxuICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgdmFsdWUpXG5cbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiB2YWx1ZXMpKVxuXG4gIGxldCBjb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIsXCIgdmFsdWVzKSlcblxuICBsZXQgZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiBldmVudF9oYW5kbGVyKSA9IG5hbWUsIEV2ZW50IHZhbHVlXG5cbiAgbGV0IG1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDogbW91c2VfZXZlbnRfaGFuZGxlcikgPVxuICAgIG5hbWUsIE1vdXNlRXZlbnQgdmFsdWVcblxuICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiBrZXlib2FyZF9ldmVudF9oYW5kbGVyKSA9XG4gICAgbmFtZSwgS2V5Ym9hcmRFdmVudCB2YWx1ZVxuXG4gIGxldCB0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IHRvdWNoX2V2ZW50X2hhbmRsZXIpID1cbiAgICBuYW1lLCBUb3VjaEV2ZW50IHZhbHVlXG5cbiAgbGV0IHVyaV9hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIHZhbHVlKVxuXG4gIGxldCB1cmlzX2F0dHJpYiBuYW1lIHZhbHVlcyA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIHZhbHVlcykpXG5cbiAgKCoqIEVsZW1lbnQgKilcblxuICB0eXBlIGVsdCA9IERvbS5ub2RlIEpzLnRcblxuICB0eXBlIGVuYW1lID0gc3RyaW5nXG5cbiAgbGV0IGVtcHR5ICgpID0gKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVEb2N1bWVudEZyYWdtZW50IDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IGNvbW1lbnQgYyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlQ29tbWVudCAoSnMuc3RyaW5nIGMpIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IHBjZGF0YSBzID0gKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVUZXh0Tm9kZSAoSnMuc3RyaW5nIHMpIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IGVuY29kZWRwY2RhdGEgcyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBzKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBlbnRpdHkgPVxuICAgIGxldCBzdHJpbmdfZm9sZCBzIH5wb3MgfmluaXQgfmYgPVxuICAgICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgICAgZm9yIGkgPSBwb3MgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBsZXQgYyA9IHMuW2ldIGluXG4gICAgICAgIHIgOj0gZiAhciBjXG4gICAgICBkb25lO1xuICAgICAgIXJcbiAgICBpblxuICAgIGxldCBpbnZhbGlkX2VudGl0eSBlID0gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiSW52YWxpZCBlbnRpdHkgJVNcIiBlKSBpblxuICAgIGxldCBpbnRfb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICB8ICcwJyAuLiAnOScgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnMCcpXG4gICAgICB8ICdhJyAuLiAnZicgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnYScgKyAxMClcbiAgICAgIHwgJ0EnIC4uICdGJyBhcyB4IC0+IFNvbWUgKENoYXIuY29kZSB4IC0gQ2hhci5jb2RlICdBJyArIDEwKVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBwYXJzZV9pbnQgfnBvcyB+YmFzZSBlID1cbiAgICAgIHN0cmluZ19mb2xkIGUgfnBvcyB+aW5pdDowIH5mOihmdW4gYWNjIHggLT5cbiAgICAgICAgICBtYXRjaCBpbnRfb2ZfY2hhciB4IHdpdGhcbiAgICAgICAgICB8IFNvbWUgZCB3aGVuIGQgPCBiYXNlIC0+IChhY2MgKiBiYXNlKSArIGRcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gaW52YWxpZF9lbnRpdHkgZSlcbiAgICBpblxuICAgIGxldCBpc19hbHBoYV9udW0gPSBmdW5jdGlvblxuICAgICAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBmdW4gZSAtPlxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggZSBpblxuICAgICAgbGV0IHN0ciA9XG4gICAgICAgIGlmIGxlbiA+PSAxICYmIENoYXIuZXF1YWwgZS5bMF0gJyMnXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICBpZiBsZW4gPj0gMiAmJiAoQ2hhci5lcXVhbCBlLlsxXSAneCcgfHwgQ2hhci5lcXVhbCBlLlsxXSAnWCcpXG4gICAgICAgICAgICB0aGVuIHBhcnNlX2ludCB+cG9zOjIgfmJhc2U6MTYgZVxuICAgICAgICAgICAgZWxzZSBwYXJzZV9pbnQgfnBvczoxIH5iYXNlOjEwIGVcbiAgICAgICAgICBpblxuICAgICAgICAgIEpzLnN0cmluZ19jb25zdHIjI2Zyb21DaGFyQ29kZSBpXG4gICAgICAgIGVsc2UgaWYgc3RyaW5nX2ZvbGQgZSB+cG9zOjAgfmluaXQ6dHJ1ZSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgICAgICAgICAgICAgICgqIFRoaXMgaXMgbm90IHF1aXRlIHJpZ2h0IGFjY29yZGluZyB0b1xuICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL3d3dy54bWwuY29tL2F4bWwvdGFyZ2V0Lmh0bWwjTlQtTmFtZS5cbiAgICAgICAgICAgICAgICAgICAgICAgYnV0IGl0IHNlZW1zIHRvIGNvdmVyIGFsbCBodG1sNSBlbnRpdGllc1xuICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL2Rldi53My5vcmcvaHRtbDUvaHRtbC1hdXRob3IvY2hhcnJlZiAqKVxuICAgICAgICAgICAgICAgICAgICBhY2MgJiYgaXNfYWxwaGFfbnVtIHgpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IFwicXVvdFwiIC0+IEpzLnN0cmluZyBcIlxcXCJcIlxuICAgICAgICAgIHwgXCJhbXBcIiAtPiBKcy5zdHJpbmcgXCImXCJcbiAgICAgICAgICB8IFwiYXBvc1wiIC0+IEpzLnN0cmluZyBcIidcIlxuICAgICAgICAgIHwgXCJsdFwiIC0+IEpzLnN0cmluZyBcIjxcIlxuICAgICAgICAgIHwgXCJndFwiIC0+IEpzLnN0cmluZyBcIj5cIlxuICAgICAgICAgIHwgXCJcIiAtPiBpbnZhbGlkX2VudGl0eSBlXG4gICAgICAgICAgfCBfIC0+IERvbV9odG1sLmRlY29kZV9odG1sX2VudGl0aWVzIChKcy5zdHJpbmcgKFwiJlwiIF4gZSBeIFwiO1wiKSlcbiAgICAgICAgZWxzZSBpbnZhbGlkX2VudGl0eSBlXG4gICAgICBpblxuICAgICAgKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVUZXh0Tm9kZSBzdHIgOj4gRG9tLm5vZGUgSnMudClcblxuICAoKiBUT0RPOiBmaXggZ2V0X3Byb3BcbiAgICAgaXQgb25seSB3b3JrIHdoZW4gaHRtbCBhdHRyaWJ1dGUgYW5kIGRvbSBwcm9wZXJ0eSBuYW1lcyBjb3JyZXNwb25kLlxuICAgICBmaW5kIGEgd2F5IHRvIGdldCBkb20gcHJvcGVydHkgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGh0bWwgYXR0cmlidXRlXG4gICopXG5cbiAgbGV0IGdldF9wcm9wIG5vZGUgbmFtZSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgbm9kZSBuYW1lKSB0aGVuIFNvbWUgbmFtZSBlbHNlIE5vbmVcblxuICBsZXQgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG5hbWUgZiA9XG4gICAgbWF0Y2ggZ2V0X3Byb3Agbm9kZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgbiAtPiAoIHRyeSBmIG4gd2l0aCBfIC0+ICgpKVxuICAgIHwgTm9uZSAtPiAoKVxuXG4gIGxldCBhdHRhY2hfYXR0cmlicyBub2RlIGwgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAobicsIGF0dCkgLT5cbiAgICAgICAgbGV0IG4gPSBKcy5zdHJpbmcgbicgaW5cbiAgICAgICAgbWF0Y2ggYXR0IHdpdGhcbiAgICAgICAgfCBBdHRyIGEgLT5cbiAgICAgICAgICAgIGxldCAoa2VlcG1lIDogdW5pdCBSZWFjdC5TLnQpID1cbiAgICAgICAgICAgICAgUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgKG5vZGUjI3NldEF0dHJpYnV0ZSBuIHYpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG4nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFwic3R5bGVcIiAtPiBub2RlIyMuc3R5bGUjIy5jc3NUZXh0IDo9IHZcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG4gKGZ1biBuYW1lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbmFtZSB2KSlcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWdub3JlIChub2RlIyNyZW1vdmVBdHRyaWJ1dGUgbik7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbicgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJzdHlsZVwiIC0+IG5vZGUjIy5zdHlsZSMjLmNzc1RleHQgOj0gSnMuc3RyaW5nIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG4gKGZ1biBuYW1lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbmFtZSBKcy5udWxsKSkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJldGFpbiAobm9kZSA6PiBEb20ubm9kZSBKcy50KSB+a2VlcG1lXG4gICAgICAgIHwgRXZlbnQgaCAtPiBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSlcbiAgICAgICAgfCBNb3VzZUV2ZW50IGggLT5cbiAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKVxuICAgICAgICB8IEtleWJvYXJkRXZlbnQgaCAtPlxuICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpXG4gICAgICAgIHwgVG91Y2hFdmVudCBoIC0+XG4gICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSkpXG4gICAgICBsXG5cbiAgbGV0IGxlYWYgPyhhID0gW10pIG5hbWUgPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGNoaWxkcmVuID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgTGlzdC5pdGVyIChmdW4gYyAtPiBpZ25vcmUgKGUjI2FwcGVuZENoaWxkIGMpKSBjaGlsZHJlbjtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBjZGF0YSBzID0gcGNkYXRhIHNcblxuICBsZXQgY2RhdGFfc2NyaXB0IHMgPSBjZGF0YSBzXG5cbiAgbGV0IGNkYXRhX3N0eWxlIHMgPSBjZGF0YSBzXG5lbmRcblxubW9kdWxlIFhtbF9TdmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYbWxcblxuICBsZXQgbGVhZiA/KGEgPSBbXSkgbmFtZSA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGNoaWxkcmVuID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50TlMgRG9tX3N2Zy54bWxucyAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIExpc3QuaXRlciAoZnVuIGMgLT4gaWdub3JlIChlIyNhcHBlbmRDaGlsZCBjKSkgY2hpbGRyZW47XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcbmVuZFxuXG5tb2R1bGUgU3ZnID0gU3ZnX2YuTWFrZSAoWG1sX1N2Zylcbm1vZHVsZSBIdG1sID0gSHRtbF9mLk1ha2UgKFhtbCkgKFN2Zylcbm1vZHVsZSBIdG1sNSA9IEh0bWxcblxubW9kdWxlIFRvX2RvbSA9IFR5eG1sX2Nhc3QuTWFrZVRvIChzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBIdG1sLmVsdFxuXG4gIGxldCBlbHQgPSBIdG1sLnRvZWx0XG5lbmQpXG5cbm1vZHVsZSBPZl9kb20gPSBUeXhtbF9jYXN0Lk1ha2VPZiAoc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgSHRtbC5lbHRcblxuICBsZXQgZWx0ID0gSHRtbC50b3RcbmVuZClcblxubW9kdWxlIFJlZ2lzdGVyID0gc3RydWN0XG4gIGxldCByZW1vdmVDaGlsZHJlbiAobm9kZSA6ICNEb20uZWxlbWVudCBKcy50KSA9XG4gICAgbGV0IGwgPSBub2RlIyMuY2hpbGROb2RlcyBpblxuICAgIGZvciBpID0gMCB0byBsIyMubGVuZ3RoIC0gMSBkb1xuICAgICAgSnMuT3B0Lml0ZXIgKGwjI2l0ZW0gaSkgKGZ1biB4IC0+IGlnbm9yZSAobm9kZSMjcmVtb3ZlQ2hpbGQgeCkpXG4gICAgZG9uZVxuXG4gIGxldCBhZGRfdG8gPyhrZWVwID0gdHJ1ZSkgbm9kZSBjb250ZW50ID1cbiAgICBpZiBub3Qga2VlcCB0aGVuIHJlbW92ZUNoaWxkcmVuIG5vZGU7XG4gICAgTGlzdC5pdGVyIChmdW4geCAtPiBEb20uYXBwZW5kQ2hpbGQgbm9kZSAoVG9fZG9tLm9mX2VsZW1lbnQgeCkpIGNvbnRlbnRcblxuICBsZXQgaWQgP2tlZXAgaWQgY29udGVudCA9XG4gICAgbGV0IG5vZGUgPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZCBpZCBpblxuICAgIGFkZF90byA/a2VlcCBub2RlIGNvbnRlbnRcblxuICBsZXQgYm9keSA/a2VlcCBjb250ZW50ID0gYWRkX3RvID9rZWVwIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSBjb250ZW50XG5cbiAgbGV0IGhlYWQgP2tlZXAgY29udGVudCA9IGFkZF90byA/a2VlcCBEb21faHRtbC5kb2N1bWVudCMjLmhlYWQgY29udGVudFxuXG4gIGxldCBodG1sID9oZWFkIGJvZHkgPVxuICAgIChtYXRjaCBoZWFkIHdpdGhcbiAgICB8IFNvbWUgaCAtPiBEb21faHRtbC5kb2N1bWVudCMjLmhlYWQgOj0gVG9fZG9tLm9mX2hlYWQgaFxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgRG9tX2h0bWwuZG9jdW1lbnQjIy5ib2R5IDo9IFRvX2RvbS5vZl9ib2R5IGJvZHk7XG4gICAgKClcbmVuZFxuXG5tb2R1bGUgV3JhcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBSZWFjdC5zaWduYWxcblxuICB0eXBlICdhIHRsaXN0ID0gJ2EgUmVhY3RpdmVEYXRhLlJMaXN0LnRcblxuICB0eXBlICgnYSwgJ2IpIGZ0ID0gJ2EgLT4gJ2JcblxuICBsZXQgcmV0dXJuID0gUmVhY3QuUy5jb25zdFxuXG4gIGxldCBmbWFwIGYgPSBSZWFjdC5TLm1hcCBmXG5cbiAgbGV0IG5pbCAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxuXG4gIGxldCBzaW5nbGV0b24gPSBSZWFjdGl2ZURhdGEuUkxpc3Quc2luZ2xldG9uX3NcblxuICBsZXQgY29ucyB4IHhzID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdCAoc2luZ2xldG9uIHgpIHhzXG5cbiAgbGV0IG1hcCBmID0gUmVhY3RpdmVEYXRhLlJMaXN0Lm1hcCBmXG5cbiAgbGV0IGFwcGVuZCB4IHkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuY29uY2F0IHggeVxuZW5kXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG4gIG9wZW4gUmVhY3RpdmVEYXRhXG4gIG9wZW4gUkxpc3RcblxuICBsZXQgaW5zZXJ0QXQgZG9tIGkgeCA9XG4gICAgbGV0IG5vZGVzID0gZG9tIyMuY2hpbGROb2RlcyBpblxuICAgIGFzc2VydCAoaSA8PSBub2RlcyMjLmxlbmd0aCk7XG4gICAgaWYgaSA9IG5vZGVzIyMubGVuZ3RoXG4gICAgdGhlbiBpZ25vcmUgKGRvbSMjYXBwZW5kQ2hpbGQgKHggOj4gRG9tLm5vZGUgSnMudCkpXG4gICAgZWxzZSBpZ25vcmUgKGRvbSMjaW5zZXJ0QmVmb3JlIHggKG5vZGVzIyNpdGVtIGkpKVxuXG4gIGxldCBtZXJnZV9vbmVfcGF0Y2ggKGRvbSA6IERvbS5ub2RlIEpzLnQpIChwIDogRG9tLm5vZGUgSnMudCBwKSA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBJIChpLCB4KSAtPlxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIDEgKyBpIGVsc2UgaSBpblxuICAgICAgICBpbnNlcnRBdCBkb20gaSB4XG4gICAgfCBSIGkgLT5cbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyBpIGVsc2UgaSBpblxuICAgICAgICBsZXQgbm9kZXMgPSBkb20jIy5jaGlsZE5vZGVzIGluXG4gICAgICAgIGFzc2VydCAoaSA+PSAwICYmIGkgPCBub2RlcyMjLmxlbmd0aCk7XG4gICAgICAgIEpzLk9wdC5pdGVyIChub2RlcyMjaXRlbSBpKSAoZnVuIG4gLT4gRG9tLnJlbW92ZUNoaWxkIGRvbSBuKVxuICAgIHwgVSAoaSwgeCkgLT4gKFxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIGkgZWxzZSBpIGluXG4gICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gKGRvbSMjLmNoaWxkTm9kZXMjI2l0ZW0gaSkgd2l0aFxuICAgICAgICB8IFNvbWUgb2xkIC0+IGlnbm9yZSAoZG9tIyNyZXBsYWNlQ2hpbGQgeCBvbGQpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBYIChpLCBtb3ZlKSAtPiAoXG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgaSBlbHNlIGkgaW5cbiAgICAgICAgaWYgbW92ZSA9IDBcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggSnMuT3B0LnRvX29wdGlvbiAoZG9tIyMuY2hpbGROb2RlcyMjaXRlbSBpKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGknIC0+IGluc2VydEF0IGRvbSAoaSArIGlmIG1vdmUgPiAwIHRoZW4gbW92ZSArIDEgZWxzZSBtb3ZlKSBpJ1xuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IHJlYyByZW1vdmVDaGlsZHJlbiBkb20gPVxuICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gZG9tIyMubGFzdENoaWxkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYyAtPlxuICAgICAgICBpZ25vcmUgKGRvbSMjcmVtb3ZlQ2hpbGQgYyk7XG4gICAgICAgIHJlbW92ZUNoaWxkcmVuIGRvbVxuXG4gIGxldCBtZXJnZV9tc2cgKGRvbSA6IERvbS5ub2RlIEpzLnQpIChtc2cgOiBEb20ubm9kZSBKcy50IG1zZykgPVxuICAgIG1hdGNoIG1zZyB3aXRoXG4gICAgfCBTZXQgbCAtPlxuICAgICAgICAoKiBGb3JtYXQuZXByaW50ZiBcInJlcGxhY2UgYWxsQC5cIjsgKilcbiAgICAgICAgcmVtb3ZlQ2hpbGRyZW4gZG9tO1xuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBsIC0+IGlnbm9yZSAoZG9tIyNhcHBlbmRDaGlsZCBsKSkgbFxuICAgIHwgUGF0Y2ggcCAtPlxuICAgICAgICAoKiBGb3JtYXQuZXByaW50ZiBcInBhdGNoQC5cIjsgKilcbiAgICAgICAgTGlzdC5pdGVyIChtZXJnZV9vbmVfcGF0Y2ggZG9tKSBwXG5cbiAgbGV0IHVwZGF0ZV9jaGlsZHJlbiAoZG9tIDogRG9tLm5vZGUgSnMudCkgKG5vZGVzIDogRG9tLm5vZGUgSnMudCB0KSA9XG4gICAgcmVtb3ZlQ2hpbGRyZW4gZG9tO1xuICAgIGxldCBrZWVwbWUgOiB1bml0IFJlYWN0LlMudCA9IGZvbGQgKGZ1biAoKSBtc2cgLT4gbWVyZ2VfbXNnIGRvbSBtc2cpIG5vZGVzICgpIGluXG4gICAgcmV0YWluIChkb20gOiBEb20ubm9kZSBKcy50KSB+a2VlcG1lO1xuICAgICgpXG5lbmRcblxubW9kdWxlIFIgPSBzdHJ1Y3RcbiAgbGV0IGZpbHRlcl9hdHRyaWIgKG5hbWUsIGEpIG9uID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFhtbC5FdmVudCBfIHwgWG1sLk1vdXNlRXZlbnQgXyB8IFhtbC5LZXlib2FyZEV2ZW50IF8gfCBYbWwuVG91Y2hFdmVudCBfIC0+XG4gICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiZmlsdGVyX2F0dHJpYiBub3QgaW1wbGVtZW50ZWQgZm9yIGV2ZW50IGhhbmRsZXJcIilcbiAgICB8IFhtbC5BdHRyIGEgLT4gbmFtZSwgWG1sLkF0dHIgKFJlYWN0LlMubDIgKGZ1biBvbiBhIC0+IGlmIG9uIHRoZW4gYSBlbHNlIE5vbmUpIG9uIGEpXG5cbiAgbGV0IGF0dGFjaF9hdHRyaWJzID0gWG1sLmF0dGFjaF9hdHRyaWJzXG5cbiAgbW9kdWxlIFhtbCA9IHN0cnVjdFxuICAgIG1vZHVsZSBXID0gV3JhcFxuXG4gICAgdHlwZSAnYSB3cmFwID0gJ2EgVy50XG5cbiAgICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIFcudGxpc3RcblxuICAgIHR5cGUgdXJpID0gWG1sLnVyaVxuXG4gICAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuXG4gICAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG4gICAgdHlwZSBhbmFtZSA9IFhtbC5hbmFtZVxuXG4gICAgdHlwZSBldmVudF9oYW5kbGVyID0gWG1sLmV2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gICAgbGV0IGF0dHIgbmFtZSBmIHMgPVxuICAgICAgbGV0IGEgPSBXLmZtYXAgZiBzIGluXG4gICAgICBuYW1lLCBYbWwuQXR0ciBhXG5cbiAgICBsZXQgZmxvYXRfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoanNfc3RyaW5nX29mX2Zsb2F0IGYpKSBzXG5cbiAgICBsZXQgaW50X2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKGpzX3N0cmluZ19vZl9pbnQgZikpIHNcblxuICAgIGxldCBzdHJpbmdfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIGYpKSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHMgPVxuICAgICAgYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgZikpKSBzXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHMgPVxuICAgICAgYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIsXCIgZikpKSBzXG5cbiAgICBsZXQgZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IG1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCBrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IHVyaV9hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgZikpIHNcblxuICAgIGxldCB1cmlzX2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiBmKSkpIHNcblxuICAgIHR5cGUgZWx0ID0gWG1sLmVsdFxuXG4gICAgdHlwZSBlbmFtZSA9IFhtbC5lbmFtZVxuXG4gICAgbGV0IGVtcHR5ID0gWG1sLmVtcHR5XG5cbiAgICBsZXQgY29tbWVudCA9IFhtbC5jb21tZW50XG5cbiAgICBsZXQgcGNkYXRhIHMgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBcIlwiKSBpblxuICAgICAgbGV0IGtlZXBtZSA9IFJlYWN0LlMubWFwIChmdW4gcyAtPiBlIyMuZGF0YSA6PSBKcy5zdHJpbmcgcykgcyBpblxuICAgICAgcmV0YWluIChlIDo+IERvbS5ub2RlIEpzLnQpIH5rZWVwbWU7XG4gICAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gICAgbGV0IGVuY29kZWRwY2RhdGEgcyA9IHBjZGF0YSBzXG5cbiAgICBsZXQgZW50aXR5IHMgPSBYbWwuZW50aXR5IHNcblxuICAgIGxldCBsZWFmID0gWG1sLmxlYWZcblxuICAgIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGwgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgICBVdGlsLnVwZGF0ZV9jaGlsZHJlbiAoZSA6PiBEb20ubm9kZSBKcy50KSBsO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICAgIGxldCBjZGF0YSA9IFhtbC5jZGF0YVxuXG4gICAgbGV0IGNkYXRhX3NjcmlwdCA9IFhtbC5jZGF0YV9zY3JpcHRcblxuICAgIGxldCBjZGF0YV9zdHlsZSA9IFhtbC5jZGF0YV9zdHlsZVxuICBlbmRcblxuICBtb2R1bGUgWG1sX1N2ZyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWG1sXG5cbiAgICBsZXQgbGVhZiA9IFhtbF9TdmcubGVhZlxuXG4gICAgbGV0IG5vZGUgPyhhID0gW10pIG5hbWUgbCA9XG4gICAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50TlMgRG9tX3N2Zy54bWxucyAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgICBVdGlsLnVwZGF0ZV9jaGlsZHJlbiAoZSA6PiBEb20ubm9kZSBKcy50KSBsO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcbiAgZW5kXG5cbiAgbW9kdWxlIFN2ZyA9IFN2Z19mLk1ha2UgKFhtbF9TdmcpXG4gIG1vZHVsZSBIdG1sID0gSHRtbF9mLk1ha2UgKFhtbCkgKFN2ZylcbiAgbW9kdWxlIEh0bWw1ID0gSHRtbFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgcHJldiA6ICdhIHQ7XG4gIG11dGFibGUgbmV4dCA6ICdhIHQ7XG59XG5cbnR5cGUgJ2Egbm9kZSA9IHtcbiAgbm9kZV9wcmV2IDogJ2EgdDtcbiAgbm9kZV9uZXh0IDogJ2EgdDtcbiAgbXV0YWJsZSBub2RlX2RhdGEgOiAnYTtcbiAgbXV0YWJsZSBub2RlX2FjdGl2ZSA6IGJvb2w7XG59XG5cbmV4dGVybmFsIHNlcV9vZl9ub2RlIDogJ2Egbm9kZSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbm9kZV9vZl9zZXEgOiAnYSB0IC0+ICdhIG5vZGUgPSBcIiVpZGVudGl0eVwiXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3BlcmF0aW9ucyBvbiBub2RlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGdldCBub2RlID1cbiAgbm9kZS5ub2RlX2RhdGFcblxubGV0IHNldCBub2RlIGRhdGEgPVxuICBub2RlLm5vZGVfZGF0YSA8LSBkYXRhXG5cbmxldCByZW1vdmUgbm9kZSA9XG4gIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBiZWdpblxuICAgIG5vZGUubm9kZV9hY3RpdmUgPC0gZmFsc2U7XG4gICAgbGV0IHNlcSA9IHNlcV9vZl9ub2RlIG5vZGUgaW5cbiAgICBzZXEucHJldi5uZXh0IDwtIHNlcS5uZXh0O1xuICAgIHNlcS5uZXh0LnByZXYgPC0gc2VxLnByZXZcbiAgZW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3BlcmF0aW9ucyBvbiBzZXF1ZW5jZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCByZWMgc2VxID0geyBwcmV2ID0gc2VxOyBuZXh0ID0gc2VxIH0gaW5cbiAgc2VxXG5cbmxldCBjbGVhciBzZXEgPVxuICBzZXEucHJldiA8LSBzZXE7XG4gIHNlcS5uZXh0IDwtIHNlcVxuXG5sZXQgaXNfZW1wdHkgc2VxID0gc2VxLm5leHQgPT0gc2VxXG5cbmxldCBsZW5ndGggc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgbGVuID1cbiAgICBpZiBjdXJyID09IHNlcSB0aGVuXG4gICAgICBsZW5cbiAgICBlbHNlXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW4gbG9vcCBub2RlLm5vZGVfbmV4dCAobGVuICsgMSlcbiAgaW5cbiAgbG9vcCBzZXEubmV4dCAwXG5cbmxldCBhZGRfbCBkYXRhIHNlcSA9XG4gIGxldCBub2RlID0geyBub2RlX3ByZXYgPSBzZXE7IG5vZGVfbmV4dCA9IHNlcS5uZXh0OyBub2RlX2RhdGEgPSBkYXRhOyBub2RlX2FjdGl2ZSA9IHRydWUgfSBpblxuICBzZXEubmV4dC5wcmV2IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIHNlcS5uZXh0IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIG5vZGVcblxubGV0IGFkZF9yIGRhdGEgc2VxID1cbiAgbGV0IG5vZGUgPSB7IG5vZGVfcHJldiA9IHNlcS5wcmV2OyBub2RlX25leHQgPSBzZXE7IG5vZGVfZGF0YSA9IGRhdGE7IG5vZGVfYWN0aXZlID0gdHJ1ZSB9IGluXG4gIHNlcS5wcmV2Lm5leHQgPC0gc2VxX29mX25vZGUgbm9kZTtcbiAgc2VxLnByZXYgPC0gc2VxX29mX25vZGUgbm9kZTtcbiAgbm9kZVxuXG5sZXQgdGFrZV9sIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgcmFpc2UgRW1wdHlcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLm5leHQgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBub2RlLm5vZGVfZGF0YVxuICBlbmRcblxubGV0IHRha2VfciBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIHJhaXNlIEVtcHR5XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5wcmV2IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX29wdF9sIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgTm9uZVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEubmV4dCBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIFNvbWUgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX29wdF9yIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgTm9uZVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEucHJldiBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIFNvbWUgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0cmFuc2Zlcl9sIHMxIHMyID1cbiAgczIubmV4dC5wcmV2IDwtIHMxLnByZXY7XG4gIHMxLnByZXYubmV4dCA8LSBzMi5uZXh0O1xuICBzMi5uZXh0IDwtIHMxLm5leHQ7XG4gIHMxLm5leHQucHJldiA8LSBzMjtcbiAgczEucHJldiA8LSBzMTtcbiAgczEubmV4dCA8LSBzMVxuXG5sZXQgdHJhbnNmZXJfciBzMSBzMiA9XG4gIHMyLnByZXYubmV4dCA8LSBzMS5uZXh0O1xuICBzMS5uZXh0LnByZXYgPC0gczIucHJldjtcbiAgczIucHJldiA8LSBzMS5wcmV2O1xuICBzMS5wcmV2Lm5leHQgPC0gczI7XG4gIHMxLnByZXYgPC0gczE7XG4gIHMxLm5leHQgPC0gczFcblxubGV0IGl0ZXJfbCBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuIGJlZ2luXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBmIG5vZGUubm9kZV9kYXRhO1xuICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5uZXh0XG5cbmxldCBpdGVyX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlLm5vZGVfZGF0YTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEucHJldlxuXG5sZXQgaXRlcl9ub2RlX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlO1xuICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5uZXh0XG5cbmxldCBpdGVyX25vZGVfciBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuIGJlZ2luXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBmIG5vZGU7XG4gICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGZvbGRfbCBmIHNlcSBhY2MgPVxuICBsZXQgcmVjIGxvb3AgY3VyciBhY2MgPVxuICAgIGlmIGN1cnIgPT0gc2VxIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX25leHQgKGYgbm9kZS5ub2RlX2RhdGEgYWNjKVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0IGFjY1xuICBpblxuICBsb29wIHNlcS5uZXh0IGFjY1xuXG5sZXQgZm9sZF9yIGYgc2VxIGFjYyA9XG4gIGxldCByZWMgbG9vcCBjdXJyIGFjYyA9XG4gICAgaWYgY3VyciA9PSBzZXEgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldiAoZiBub2RlLm5vZGVfZGF0YSBhY2MpXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXYgYWNjXG4gIGluXG4gIGxvb3Agc2VxLnByZXYgYWNjXG5cbmxldCBmaW5kX25vZGVfbCBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBpZiBmIG5vZGUubm9kZV9kYXRhIHRoZW5cbiAgICAgICAgICBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgICBlbHNlXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbHNlXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgZmluZF9ub2RlX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgaWYgZiBub2RlLm5vZGVfZGF0YSB0aGVuXG4gICAgICAgICAgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZWxzZVxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGZpbmRfbm9kZV9vcHRfbCBmIHNlcSA9XG4gIHRyeSBTb21lIChmaW5kX25vZGVfbCBmIHNlcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZmluZF9ub2RlX29wdF9yIGYgc2VxID1cbiAgdHJ5IFNvbWUgKGZpbmRfbm9kZV9yIGYgc2VxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIFJlYWRpbmcgZ3VpZGVcblxuICAgV2VsY29tZSB0byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEx3dCBjb3JlISBUaGlzIGlzIGEgYmlnIGZpbGUsIGJ1dCB3ZVxuICAgaG9wZSB0aGF0IHJlYWRpbmcgaXQgKHBhcnRzIGF0IGEgdGltZSEpIHdpbGwgbm90IGJlIHNjYXJ5IDopIEhlcmUgaXMgd2h5OlxuXG5cbiAgICogU2VjdGlvbmluZ1xuXG4gICBUaGUgY29kZSBpcyBicm9rZW4gdXAgaW50byBzZWN0aW9ucywgZWFjaCBvbmUgb2Ygd2hpY2ggaXMgYW4gaW50ZXJuYWwgbW9kdWxlLlxuICAgTW9zdCBvZiB0aGUgbW9kdWxlcyBoYXZlIGEgc2lnbmF0dXJlLCB3aGljaCBzZXJ2ZXMgYXMgYSBuZWF0IHRhYmxlIG9mXG4gICBjb250ZW50cy5cblxuICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVhZCB0aGlzIGZpbGUgd2l0aCBjb2RlIGZvbGRpbmcgZW5hYmxlZC4gSWYgeW91XG4gICBmb2xkIGFsbCB0aGUgbW9kdWxlcywgeW91IGNhbiB2aXN1YWxpemUgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIEx3dCBxdWl0ZVxuICAgZWFzaWx5LiBZb3UgY2FuIHRoZW4gZXhwYW5kIG1vZHVsZXMgYXMgbmVlZGVkLCBkZXBlbmRpbmcgb24gd2hhdCBwYXJ0IG9mIHRoZVxuICAgaW1wbGVtZW50YXRpb24geW91IGFyZSBpbnRlcmVzdGVkIGluLiBXaXRob3V0IGNvZGUgZm9sZGluZywgeW91IGZhY2UgYW5cbiAgIGludGltaWRhdGluZyB3YWxsIG9mIGNvZGUgOiggWW91IGNhbiBzdGlsbCB2aXN1YWxseSBwYXJzZSB0aGUgZmlsZSwgaG93ZXZlcixcbiAgIGJlY2F1c2UgdGhlcmUgYXJlIHBsZW50eSBvZiBibGFuayBsaW5lcyB0byBoZWxwIHNlY3Rpb24gdGhpbmdzIG9mZi4gWW91IGNhblxuICAgYWxzbyB2aWV3IHRoaXMgZmlsZSBmb2xkZWQgb25saW5lOlxuXG4gICAgIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FhbnRyb24vOWZhYjBiZGVhZDk4YTYwZmNjZjA2ZTAxODkxODY4NjNcbiAgICAgaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYWFudHJvbi85N2I1ODUyMGQ1YmI0ODU4Y2NhYzZmNTQ3MDBhMjRkN1xuXG4gICBUaGUgc2lnbmF0dXJlcyBhcmUgdW51c3VhbDogYmlnIGNvbW1lbnRzIGFyZSBhYnNlbnQuIFRoZXkgYXJlIG1vdmVkIGludG8gdGhlXG4gICBtb2R1bGVzLCBzbyB0aGF0IHRoZXkgYXJlIGhpZGRlbiBieSBjb2RlIGZvbGRpbmcgd2hlbiB5b3UgKHRoZSByZWFkZXIhKSBhcmVcbiAgIG5vdCBpbnRlcmVzdGVkIGluIHRob3NlIG1vZHVsZXMuXG5cblxuICAgKiBEb2N1bWVudGF0aW9uXG5cbiAgIFRoZSBkb2N1bWVudGF0aW9uIGJlZ2lucyB3aXRoIGFuIG92ZXJ2aWV3IG9mIG1ham9yIGNvbmNlcHRzIGFuZCBjb21wb25lbnRzLlxuICAgVGhpcyBvdmVydmlldyBwdXRzIGV2ZXJ5dGhpbmcgaW50byBjb250ZXh0LiBZb3UgZG9uJ3QgaGF2ZSB0byByZWFkIHRoZSB3aG9sZVxuICAgdGhpbmcuIFRoZSBvdmVydmlldyBiZWdpbnMgd2l0aCBiYXNpYyBjb25jZXB0cywgbW92ZXMgb24gdG8gYWR2YW5jZWQgb25lcyxcbiAgIGFuZCB0aGVuIGdldHMgaW50byB0aGUgdHJ1bHkgZXNvdGVyaWMuIFlvdSBjYW4gcmVhZCBhYm91dCBlYWNoIGNvbmNlcHQgb24gYW5cbiAgIGFzLW5lZWRlZCBiYXNpcy4gSG93ZXZlciwgb25jZSB5b3UgaGF2ZSByZWFkIHRoZSB3aG9sZSBvdmVydmlldywgeW91IHdpbGwgYmVcbiAgIGF3YXJlIG9mICpldmVyeXRoaW5nKiB0aGF0IGlzIG5lZWRlZCB0byB1bmRlcnN0YW5kLCBhbmQgd29yayB3aXRoLCB0aGUgY29yZVxuICAgb2YgTHd0LlxuXG4gICBMaXR0ZXJlZCBpbiB0aGUgY29kZSBhcmUgYWRkaXRpb25hbCBjb21tZW50cywgdGhhdCBnbyBpbi1kZXB0aCBvbiB2YXJpb3VzXG4gICBsb2NhbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBvcHBvcnR1bml0aWVzLCByZWdyZXRzLCBhbmQgdGhlIGxpa2UuXG5cbiAgIFRoZSBzZWN0aW9ucyAobW9kdWxlcykgb2YgdGhlIGNvZGUgY29ycmVzcG9uZCBjbG9zZWx5IHRvIHNlY3Rpb25zIG9mIHRoZVxuICAgb3ZlcnZpZXcuXG5cblxuICAgKiBXaGl0ZXNwYWNlXG5cbiAgIFRoZSB0b3RhbCBsaW5lIGNvdW50IG9mIHRoaXMgZmlsZSBtYXkgc2VlbSBmcmlnaHRlbmluZywgYnV0IG9uZSB0aGlyZCBvZiBpdFxuICAgaXMgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMsIGJvdGggdGhlcmUgdG8gaGVscCB5b3UgcmVhZCB0aGUgcmVtYWluaW5nIHR3b1xuICAgdGhpcmRzIVxuXG4gICBBbHNvLCB3aXRoaW4gdGhvc2UgdHdvIHRoaXJkcywgdGhlcmUgYXJlIGxhcmdlIGdyb3VwcyBvZiBmdW5jdGlvbnMgdGhhdCBhcmVcbiAgIHJlcGV0aXRpdmUgYW5kIGZvcm11bGFpYywgc28gdGhlcmUgaXMgbXVjaCBsZXNzIGNvbmNlcHR1YWxseS11bmlxdWUgY29kZSBpblxuICAgTHd0IHRoYW4geW91IG1pZ2h0IHRoaW5rIGF0IGZpcnN0LlxuXG5cbiAgICogUGxlYXNlIGVkaXQgdGhlIGNvZGUgYW5kIHRoZSBkb2NzIVxuXG4gICBUaGlzIGNvZGUgaXMgbWVhbnQgdG8gYmUgcmVhZGFibGUsIGFuZCB0byBiZSBlZGl0ZWQuIElmIHlvdSBhcmUgcmVhZGluZ1xuICAgc29tZXRoaW5nLCBhbmQgdGhpbmsgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHRvIGV4cHJlc3MgaXQsIHBsZWFzZSBnbyBhaGVhZCBhbmRcbiAgIG9wZW4gYSBwdWxsIHJlcXVlc3QgdG8gdGhlIEx3dCByZXBvc2l0b3J5IGF0XG5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0XG5cbiAgIEV2ZW4gaWYgeW91ciBwdWxsIHJlcXVlc3Qgc29tZWhvdyBkb2Vzbid0IGdldCBtZXJnZWQsIHlvdSB3aWxsIGhhdmUgZWR1Y2F0ZWRcbiAgIHRoZSBtYWludGFpbmVycywgbm90IHRvIG1lbnRpb24gb3RoZXIgY29udHJpYnV0b3JzLCBhbmQgdXNlcnMuIFRoaXMgaXMgdHJ1ZVxuICAgZXZlbiBpZiB0aGUgY2hhbmdlIGlzIHRyaXZpYWwgLS0gc29tZXRpbWVzLCBtYWludGFpbmVycyBqdXN0IG5lZWQgdG8gYmVcbiAgIGVkdWNhdGVkIG11bHRpcGxlIHRpbWVzIGJlZm9yZSB0aGV5IHNlZSB0aGUgd2lzZG9tIG9mIGl0IDovXG5cbiAgIExpa2V3aXNlLCBpZiB5b3Ugd291bGQgbGlrZSB0byBtYWtlIGEgY29kZSBjb250cmlidXRpb24gdG8gdGhlIEx3dCBjb3JlLCBpdFxuICAgaXMgcXVpdGUgd2VsY29tZSwgYW5kIHdlIGhvcGUgdGhhdCB0aGlzIGNvZGUgaXMgcmVhZGFibGUgZW5vdWdoIGZvciB5b3UgdG8gYmVcbiAgIGFibGUgdG8gbWFrZSBpdCFcblxuXG4gICBFbmpveSEgKilcblxuXG5cbigqIE92ZXJ2aWV3XG5cbiAgIEluIHRoaXMgZmlsZSwgdGhlcmUgaXMgYSBcIm1vZGVsXCIgZnVuY3Rpb24gLS0gW0x3dC5iaW5kXSAtLSB3aGljaCBwdWxsc1xuICAgdG9nZXRoZXIgbWFueSAodGhvdWdoIG5vdCBhbGwpIG9mIHRoZSBjb25jZXB0cyBhbmQgaGVscGVycyBkaXNjdXNzZWQgaW4gdGhpc1xuICAgb3ZlcnZpZXcuIFRvIGZpbmQgaXQsIHNlYXJjaCBmb3IgXCJsZXQgYmluZCxcIiBhbmQgeW91IGNhbiBleGFtaW5lIGl0IHdoaWxlXG4gICByZWFkaW5nIHRoZSBvdmVydmlldy4gVGhlIGF1dGhvcnMgb2YgdGhpcyBmaWxlIGludGVuZCB0byBwdXQgZXh0cmEgZWZmb3J0XG4gICBpbnRvIHdyaXRpbmcgbmljZSBjb21tZW50cyBpbnNpZGUgW0x3dC5iaW5kXSA6KVxuXG5cbiAgIDAuIE1haW4gbWVjaGFuaXNtIGFuZCB0d28gYXNwZWN0c1xuXG4gICBUaGUgTHd0IGludGVyZmFjZSAoW2x3dC5tbGldKSBwcm92aWRlcyBvbmUgbWFpbiBtZWNoYW5pc20sIHByb21pc2VzLCBhbmQgdHdvXG4gICBcImFzcGVjdHMsXCIgd2hpY2ggYXJlICpub3QqIG5lY2Vzc2FyeSB0byB1bmRlcnN0YW5kIHRoZSBtYWluIG1lY2hhbmlzbVxuICAgcHJvbWlzZXMsIGJ1dCB0aGV5IGFyZSBzdGlsbCB0aGVyZTpcblxuICAgLSBwcm9taXNlIGNhbmNlbGxhdGlvblxuICAgLSBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2VcblxuICAgSWYgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBjYW5jZWxsYXRpb24gb3Igc3RvcmFnZSwgeW91IGNhbiBpZ25vcmUgdGhlc2VcbiAgIHR3byBjb21wbGljYXRpb25zLCBhbmQgc3RpbGwgZ2V0IGEgcHJldHR5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZS4gVG9cbiAgIGhlbHAsIGFsbCBpZGVudGlmaWVycyByZWxhdGVkIHRvIGNhbmNlbGxhdGlvbiBjb250YWluIHRoZSBzdHJpbmcgXCJjYW5jZWwsXCJcbiAgIGFuZCBhbGwgaWRlbnRpZmllcnMgcmVsYXRlZCB0byBzdG9yYWdlIGNvbnRhaW4gXCJzdG9yYWdlLlwiXG5cblxuICAgMS4gUHJvbWlzZXNcblxuICAgQSBwcm9taXNlIGlzIGEgY2VsbCB0aGF0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIHN0YXRlczogXCJyZXNvbHZlZFwiIG9yXG4gICBcInBlbmRpbmcuXCJcblxuICAgLSBSZXNvbHZlZCBwcm9taXNlc1xuXG4gICAgIEEgcmVzb2x2ZWQgcHJvbWlzZSBpcyBlaXRoZXIgXCJmdWxmaWxsZWRcIiB3aXRoIGEgdmFsdWUsIG9yIFwicmVqZWN0ZWRcIiB3aXRoXG4gICAgIGFuIGV4Y2VwdGlvbi4gVGhlIHN0YXRlIG9mIGEgcmVzb2x2ZWQgcHJvbWlzZSB3aWxsIG5ldmVyIGNoYW5nZSBhZ2FpbjogYVxuICAgICByZXNvbHZlZCBwcm9taXNlIGlzIGltbXV0YWJsZS4gQSByZXNvbHZlZCBwcm9taXNlIGlzIGJhc2ljYWxseSBlcXVpdmFsZW50XG4gICAgIHRvIGFuIFsoJ2EsIGV4bikgU3RkbGliLnJlc3VsdF0uIFJlc29sdmVkIHByb21pc2VzIGFyZSBwcm9kdWNlZCBpbiB0d29cbiAgICAgd2F5czpcblxuICAgICAtIFtMd3QucmV0dXJuXSwgW0x3dC5mYWlsXSwgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBwcm9kdWNlIFwidHJpdmlhbFwiXG4gICAgICAgcHJvbWlzZXMgdGhhdCBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgc3RhcnQuXG4gICAgIC0gVGhlIG90aGVyIHdheSBpcyB0byByZXNvbHZlIGEgcHJvbWlzZSB0aGF0IHN0YXJ0ZWQgb3V0IHBlbmRpbmcuXG5cbiAgICAgTm90ZSB0aGF0IHJlamVjdGVkIHByb21pc2VzIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIHVuaGFuZGxlZCBleGNlcHRpb25zLlxuXG4gICAtIFBlbmRpbmcgcHJvbWlzZXNcblxuICAgICAuLi5hcmUgdGhvc2UgdGhhdCBtYXkgYmVjb21lIHJlc29sdmVkIGluIHRoZSBmdXR1cmUuIEVhY2ggcGVuZGluZyBwcm9taXNlXG4gICAgIGNhcnJpZXMgYSBsaXN0IG9mIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBhZGRlZCBieSBmdW5jdGlvbnMgbGlrZVxuICAgICBbTHd0LmJpbmRdLCBhbmQgY2FsbGVkIGJ5IEx3dCBpZi93aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLiBUaGVzZVxuICAgICBjYWxsYmFja3MgdHlwaWNhbGx5IGVuZCB1cCByZXNvbHZpbmcgYWRkaXRpb25hbCBwcm9taXNlczsgc2VlIHNlY3Rpb25cbiAgICAgXCJSZXNvbHV0aW9uIGxvb3BcIiBiZWxvdy5cblxuICAgICBQZW5kaW5nIHByb21pc2VzIGFyZSBwcm9kdWNlZCBpbiB0aHJlZSB3YXlzLCBhY2NvcmRpbmcgdG8gaG93IHRoZXkgY2FuIGJlXG4gICAgIHJlc29sdmVkOlxuXG4gICAgIC0gSW5pdGlhbCBwcm9taXNlc1xuXG4gICAgICAgLi4uYXJlIGNyZWF0ZWQgYnkgW0x3dC53YWl0XSBhbmQgW0x3dC50YXNrXS4gVGhlIHVzZXIgb2YgTHd0IHJlc29sdmVzXG4gICAgICAgdGhlc2UgcHJvbWlzZXMgbWFudWFsbHksIHRocm91Z2ggdGhlIHJlc29sdmVycyByZXR1cm5lZCBieSB0aG9zZVxuICAgICAgIGZ1bmN0aW9ucy5cblxuICAgICAtIFNlcXVlbnRpYWwgY29tcG9zaXRpb25cblxuICAgICAgIEZvciBleGFtcGxlLCBbTHd0LmJpbmRdLiBUaGVzZSBwcm9taXNlcyBvbmx5IGFyZSBvbmx5IHJlc29sdmVkIHdoZW4gdGhlXG4gICAgICAgcHJlY2VkaW5nIHNlcXVlbmNlIG9mIHByb21pc2VzIHJlc29sdmVzLiBUaGUgdXNlciBjYW5ub3QgcmVzb2x2ZSB0aGVzZVxuICAgICAgIHByb21pc2VzIGRpcmVjdGx5IChidXQgc2VlIHRoZSBzZWN0aW9uIG9uIGNhbmNlbGxhdGlvbiBiZWxvdykuXG5cbiAgICAgLSBDb25jdXJyZW50IGNvbXBvc2l0aW9uXG5cbiAgICAgICBGb3IgZXhhbXBsZSwgW0x3dC5qb2luXSBvciBbTHd0LmNob29zZV0uIFRoZXNlIHByb21pc2VzIGFyZSBvbmx5IHJlc29sdmVkXG4gICAgICAgd2hlbiBhbGwgb3Igb25lIG9mIGEgc2V0IG9mIFwicHJlY2VkaW5nXCIgcHJvbWlzZXMgcmVzb2x2ZS4gVGhlIHVzZXIgY2Fubm90XG4gICAgICAgcmVzb2x2ZSB0aGVzZSBwcm9taXNlcyBkaXJlY3RseSAoYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb25cbiAgICAgICBiZWxvdykuXG5cblxuICAgMi4gUmVzb2x2ZXJzXG5cbiAgIFJlc29sdmVycyBhcmUgZ2l2ZW4gdG8gdGhlIHVzZXIgYnkgW0x3dC53YWl0XSBhbmQgW0x3dC50YXNrXSwgYW5kIGNhbiBiZSB1c2VkXG4gICBieSB0aGUgdXNlciB0byByZXNvbHZlIHRoZSBjb3JyZXNwb25kaW5nIHByb21pc2VzLiBOb3RlIHRoYXQgdGhpcyBtZWFucyB0aGVcbiAgIHVzZXIgb25seSBldmVyIGdldHMgcmVzb2x2ZXJzIGZvciBpbml0aWFsIHByb21pc2VzLlxuXG4gICBJbnRlcm5hbGx5LCByZXNvbHZlcnMgYXJlIHRoZSBleGFjdCBzYW1lIG9iamVjdHMgYXMgdGhlIHByb21pc2VzIHRoZXlcbiAgIHJlc29sdmUsIGV2ZW4gdGhvdWdoIHRoZSByZXNvbHZlciBpcyBleHBvc2VkIGFzIGEgcmVmZXJlbmNlIG9mIGEgZGlmZmVyZW50XG4gICB0eXBlIGJ5IFtsd3QubWxpXS4gRm9yIGRldGFpbHMgb24gd2h5LCBzZWUgc2VjdGlvbiBcIlR5cGUgc3lzdGVtIGFidXNlXCIgYmVsb3cuXG5cblxuICAgMy4gQ2FsbGJhY2tzXG5cbiAgIC4uLmFyZSBhdHRhY2hlZCBieSBMd3QgdG8gcGVuZGluZyBwcm9taXNlcywgYW5kIGFyZSBydW4gYnkgTHd0IGlmL3doZW4gdGhvc2VcbiAgIHByb21pc2VzIGFyZSByZXNvbHZlZC4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgZGlyZWN0bHkgZXhwb3NlZCB0aHJvdWdoXG4gICBbbHd0Lm1saV0gLS0gdGhleSBhcmUgYSBsb3ctbGV2ZWwgbWVjaGFuaXNtLiBGb3IgZXhhbXBsZSwgdG8gaW1wbGVtZW50XG4gICBbTHd0LmJpbmQgcCBmXSwgTHd0IGF0dGFjaGVzIGEgY2FsbGJhY2sgdG8gW3BdIHRoYXQgZG9lcyBzb21lIGludGVybmFsIEx3dFxuICAgYm9vay1rZWVwaW5nLCBhbmQgdGhlbiBjYWxscyBbZl0gaWYgW3BdIGlzIGZ1bGZpbGxlZCwgYW5kIGRvZXMgc29tZXRoaW5nIGVsc2VcbiAgIGlmIFtwXSBpcyByZWplY3RlZC5cblxuICAgQ2FsbGJhY2tzIGNvbWUgaW4gdHdvIGZsYXZvcnM6IHJlZ3VsYXIgY2FsbGJhY2tzIGFuZCBjYW5jZWwgY2FsbGJhY2tzLiBUaGVcbiAgIG9ubHkgbWF0ZXJpYWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtIGFyZSB0aGF0OlxuXG4gICAtIHJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBhbHdheXMgY2FsbGVkIHdoZW4gYSBwcm9taXNlIGlzIHJlc29sdmVkLCBidXQgY2FuY2VsXG4gICAgIGNhbGxiYWNrcyBhcmUgY2FsbGVkLCBpbiBhZGRpdGlvbiwgb25seSBpZiB0aGUgcHJvbWlzZSBpcyBjYW5jZWxlZCwgYW5kXG4gICAtIGFsbCBjYW5jZWwgY2FsbGJhY2tzIG9mIGEgcHJvbWlzZSBhcmUgY2FsbGVkIGJlZm9yZSBhbnkgcmVndWxhciBjYWxsYmFja1xuICAgICBpcyBjYWxsZWQuXG5cbiAgIENhbmNlbGxhdGlvbiBpcyBhIHNwZWNpYWwgY2FzZSBvZiByZXNvbHV0aW9uLCBpbiBwYXJ0aWN1bGFyLCBhIHNwZWNpYWwgY2FzZVxuICAgb2YgcmVqZWN0aW9uLCBidXQgc2VlIHRoZSBzZWN0aW9uIG9uIGNhbmNlbGxhdGlvbiBsYXRlciBiZWxvdy5cblxuXG4gICA0LiBSZXNvbHV0aW9uIGxvb3BcblxuICAgUmVzb2x2aW5nIGEgcGVuZGluZyBwcm9taXNlIHRyaWdnZXJzIGl0cyBjYWxsYmFja3MsIGFuZCB0aG9zZSBtaWdodCByZXNvbHZlXG4gICBtb3JlIHBlbmRpbmcgcHJvbWlzZXMsIHRyaWdnZXJpbmcgbW9yZSBjYWxsYmFja3MsIGV0Yy4gVGhpcyBiZWhhdmlvciBpcyB0aGVcbiAgICpyZXNvbHV0aW9uIGxvb3AqLiBMd3QgaGFzIHNvbWUgbWFjaGluZXJ5IHRvIGF2b2lkIHN0YWNrIG92ZXJmbG93IGFuZCBvdGhlclxuICAgdW5mb3J0dW5hdGUgc2l0dWF0aW9ucyBkdXJpbmcgdGhpcyBsb29wLlxuXG4gICBUaGlzIGNoYWluaW5nIG9mIHByb21pc2UgcmVzb2x1dGlvbnMgdGhyb3VnaCBjYWxsYmFja3MgY2FuIGJlIHNlZW4gYXMgYSBraW5kXG4gICBvZiBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGgsIGluIHdoaWNoIHRoZSBub2RlcyBhcmUgcGVuZGluZyBwcm9taXNlcywgYW5kIHRoZVxuICAgZWRnZXMgYXJlIGNhbGxiYWNrcy4gRHVyaW5nIHRoZSByZXNvbHV0aW9uIGxvb3AsIEx3dCBzdGFydHMgYXQgc29tZSBpbml0aWFsXG4gICBwcm9taXNlIHRoYXQgaXMgZ2V0dGluZyByZXNvbHZlZCBieSB0aGUgdXNlciwgYW5kIHJlY3Vyc2l2ZWx5IHJlc29sdmVzIGFsbFxuICAgZGVwZW5kZW50IHByb21pc2VzLiBUaGUgZ3JhcGggaXMgbW9kaWZpZWQ6IHJlc29sdmVkIHByb21pc2VzIGFyZSBubyBsb25nZXJcbiAgIHBlbmRpbmcsIHNvIHRoZXkgYXJlIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBncmFwaC5cblxuICAgU29tZSBvZiB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIGV4cGxpY2l0IHRvIEx3dCwgZS5nLiB0aGUgY2FsbGJhY2tzIHJlZ2lzdGVyZWRcbiAgIGJ5IFtMd3QuYmluZF0uIE90aGVycyBhcmUgbm90IHZpc2libGUgdG8gTHd0LCBiZWNhdXNlIHRoZSB1c2VyIGNhbiBhbHdheXNcbiAgIHJlZ2lzdGVyIGEgY2FsbGJhY2sgdXNpbmcgYSBmdW5jdGlvbiBsaWtlIFtMd3Qub25fc3VjY2Vzc10sIGFuZCB1c2UgdGhhdFxuICAgY2FsbGJhY2sgdG8gcmVzb2x2ZSBhbm90aGVyIGluaXRpYWwgcHJvbWlzZS4gQWxsIHRoZSBleHBsaWNpdCBkZXBlbmRlbmNpZXNcbiAgIGFyZSBjcmVhdGVkIGJ5IEx3dCdzIG93biBzZXF1ZW50aWFsIGFuZCBjb25jdXJyZW50IGNvbXBvc2l0aW9uIGZ1bmN0aW9uc1xuICAgKHNvLCBbTHd0LmJpbmRdLCBbTHd0LmpvaW5dLCBldGMpLiBXaGV0aGVyIGRlcGVuZGVuY2llcyBhcmUgZXhwbGljaXQgb3Igbm90XG4gICBpcyByZWxldmFudCBvbmx5IHRvIGNhbmNlbGxhdGlvbi5cblxuXG4gICA1LiBDYW5jZWxsYXRpb25cblxuICAgQXMgZGVzY3JpYmVkIGFib3ZlLCBvcmRpbmFyeSBwcm9taXNlIHJlc29sdXRpb24gcHJvY2VlZHMgZnJvbSBhbiBpbml0aWFsXG4gICBwcm9taXNlLCBmb3J3YXJkIGFsb25nIGNhbGxiYWNrcyB0aHJvdWdoIHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBTaW5jZSBpdFxuICAgc3RhcnRzIGZyb20gYW4gaW5pdGlhbCBwcm9taXNlLCBpdCBjYW4gb25seSBiZSB0cmlnZ2VyZWQgdXNpbmcgYSByZXNvbHZlci5cblxuICAgQ2FuY2VsbGF0aW9uIGlzIGEgc29ydCBvZiBkdWFsIHRvIG9yZGluYXJ5IHJlc29sdXRpb24uIEluc3RlYWQgb2Ygc3RhcnRpbmcgYXRcbiAgIGFuIGluaXRpYWwgcHJvbWlzZS9yZXNvbHZlciwgY2FuY2VsbGF0aW9uIHN0YXJ0cyBhdCAqYW55KiBwcm9taXNlLiBJdCB0aGVuXG4gICBnb2VzICpiYWNrd2FyZHMqIHRocm91Z2ggdGhlIGV4cGxpY2l0IGRlcGVuZGVuY3kgZ3JhcGgsIGxvb2tpbmcgZm9yXG4gICBjYW5jZWxhYmxlIGluaXRpYWwgcHJvbWlzZXMgdG8gY2FuY2VsIC0tIHRob3NlIHRoYXQgd2VyZSBjcmVhdGVkIGJ5XG4gICBbTHd0LnRhc2tdLiBBZnRlciBmaW5kaW5nIHRoZW0sIGNhbmNlbGxhdGlvbiByZXNvbHZlcyB0aGVtIG5vcm1hbGx5IHdpdGhcbiAgIFtSZWplY3RlZCBMd3QuQ2FuY2VsZWRdLCBjYXVzaW5nIGFuIG9yZGluYXJ5IHByb21pc2UgcmVzb2x1dGlvbiBwcm9jZXNzLlxuXG4gICBUbyBzdW1tYXJpemUsIGNhbmNlbGxhdGlvbiBpcyBhIHdheSB0byB0cmlnZ2VyIGFuICpvcmRpbmFyeSogcmVzb2x1dGlvbiBvZlxuICAgcHJvbWlzZXMgY3JlYXRlZCB3aXRoIFtMd3QudGFza10sIGJ5IGZpcnN0IHNlYXJjaGluZyBmb3IgdGhlbSBpbiB0aGUgcHJvbWlzZVxuICAgZGVwZW5kZW5jeSBncmFwaCAod2hpY2ggaXMgYXNzZW1ibGVkIGJ5IFtMd3QuYmluZF0sIFtMd3Quam9pbl0sIGV0YykuXG5cbiAgIFRoaXMgYmFja3dhcmRzIHNlYXJjaCBpcyB0cmlnZ2VyZWQgb25seSBieSBbTHd0LmNhbmNlbF0uIEl0IGlzIGFsc28gcG9zc2libGVcbiAgIGZvciB0aGUgdXNlciB0byBjYW5jZWwgYSBwcm9taXNlIGRpcmVjdGx5IGJ5IHJlamVjdGluZyBpdCB3aXRoXG4gICBbTHd0LkNhbmNlbGVkXSwgYnV0IGluIGFsbCBjYXNlcyB3aGVyZSB0aGUgdXNlciBjYW4gZG8gc28sIHRoZSBzZWFyY2ggd291bGRcbiAgIGJlIHJlZHVuZGFudCBhbnl3YXkgLS0gdGhlIHVzZXIgaGFzIG9ubHkgdHdvIHdheXMgb2YgZGlyZWN0bHkgcmVqZWN0aW5nIGFcbiAgIHByb21pc2Ugd2l0aCBbTHd0LkNhbmNlbGVkXSAob3IgYW55IGV4Y2VwdGlvbiwgZm9yIHRoYXQgbWF0dGVyKTpcblxuICAgLSBUaGUgdXNlciBjYW4gY3JlYXRlIGFuIGluaXRpYWwgcHJvbWlzZSwgdGhlbiByZWplY3QgaXQgdGhyb3VnaCBpdHNcbiAgICAgcmVzb2x2ZXIuIFRoZSBzZWFyY2ggaXMgcmVkdW5kYW50IGJlY2F1c2UgaXQgd291bGQgZmluZCBvbmx5IHRoZSBzYW1lXG4gICAgIGluaXRpYWwgcHJvbWlzZSB0byBjYW5jZWwuXG4gICAtIFRoZSB1c2VyIGNhbiBjcmVhdGUgYSB0cml2aWFsIHByb21pc2UgYnkgY2FsbGluZyBbTHd0LmZhaWwgTHd0LkNhbmNlbGVkXS5cbiAgICAgVGhlIHNlYXJjaCBpcyBhZ2FpbiByZWR1bmRhbnQ7IGluIHRoaXMgY2FzZSBpdCB3b3VsZCBmaW5kIG5vdGhpbmcgdG9cbiAgICAgY2FuY2VsLlxuXG4gICBOb3RlIHRoYXQgdGhlcmUgaXMgYSBxdWlyazogb25seSBwcm9taXNlcyBjcmVhdGVkIGJ5IFtMd3QudGFza10gYXJlXG4gICBzdXNjZXB0aWJsZSB0byBiZWluZyBjYW5jZWxlZCBieSBbTHd0LmNhbmNlbF0sIGJ1dCB0aGUgdXNlciBjYW4gbWFudWFsbHlcbiAgIGNhbmNlbCBpbml0aWFsIHByb21pc2VzIGNyZWF0ZWQgYnkgYm90aCBbTHd0LnRhc2tdIGFuZCBbTHd0LndhaXRdLlxuXG4gICBEdWUgdG8gW0x3dC5jYW5jZWxdLCBwcm9taXNlIGNhbmNlbGxhdGlvbiwgYW5kIHRoZXJlZm9yZSByZXNvbHV0aW9uLCBjYW4gYmVcbiAgIGluaXRpYXRlZCBieSB0aGUgdXNlciB3aXRob3V0IGFjY2VzcyB0byBhIHJlc29sdmVyLiBUaGlzIGlzIGltcG9ydGFudCBmb3JcbiAgIHJlYXNvbmluZyBhYm91dCBzdGF0ZSBjaGFuZ2VzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBMd3QsIGFuZCBpcyByZWZlcmVuY2VkXG4gICBpbiBzb21lIGltcGxlbWVudGF0aW9uIGRldGFpbCBjb21tZW50cy5cblxuXG4gICA2LiBObyBJL09cblxuICAgVGhlIEx3dCBjb3JlIGRlbGliZXJhdGVseSBkb2Vzbid0IGRvIEkvTy4gVGhlIHJlc29sdXRpb24gbG9vcCBzdG9wcyBydW5uaW5nXG4gICBvbmNlIG5vIHByb21pc2VzIGNhbiBiZSByZXNvbHZlZCBpbW1lZGlhdGVseS4gSXQgaGFzIHRvIGJlIHJlc3RhcnRlZCBsYXRlclxuICAgYnkgc29tZSBzdXJyb3VuZGluZyBJL08gbG9vcC4gVGhpcyBJL08gbG9vcCB0eXBpY2FsbHkga2VlcHMgdHJhY2sgb2YgcGVuZGluZ1xuICAgcHJvbWlzZXMgdGhhdCByZXByZXNlbnQgYmxvY2tlZCBvciBpbi1wcm9ncmVzcyBJL087IG90aGVyIHBlbmRpbmcgcHJvbWlzZXNcbiAgIHRoYXQgaW5kaXJlY3RseSBkZXBlbmQgb24gSS9PIGFyZSBub3QgZXhwbGljaXRseSB0cmFja2VkLiBUaGV5IGFyZSByZXRhaW5lZFxuICAgaW4gbWVtb3J5IGJ5IHJlZmVyZW5jZXMgY2FwdHVyZWQgaW5zaWRlIGNhbGxiYWNrcy5cblxuICAgT24gVW5peCBhbmQgV2luZG93cywgYSBzZXBhcmF0ZSB0b3AtbGV2ZWwgbG9vcCwgdHlwaWNhbGx5IFtMd3RfbWFpbi5ydW5dLCBpc1xuICAgbmVjZXNzYXJ5IHRvIHJlcGVhdGVkbHkgY2FsbCBbc2VsZWN0XSwgW2Vwb2xsXSwgb3IgW2tldmVudF0sIGFuZCByZXNvbHZlXG4gICBibG9ja2VkIEkvTyBwcm9taXNlcy5cblxuICAgSW4gSmF2YVNjcmlwdCwgcmVmZXJlbmNlcyB0byBwcm9taXNlcyBhcmUgcmV0YWluZWQgYnkgSmF2YVNjcmlwdCBjb2RlLCB3aGljaFxuICAgaXMsIGluIHR1cm4sIHRyaWdnZXJlZCBieSB0aGUgSlMgZW5naW5lLiBJbiBvdGhlciB3b3JkcywgdGhlIHRvcC1sZXZlbCBsb29wXG4gICBpcyBidXJpZWQgaW5zaWRlIHRoZSBKUyBlbmdpbmUuXG5cbiAgIFRoaXMgc2VwYXJhdGlvbiBvZiB0aGUgTHd0IGNvcmUgZnJvbSB0aGUgdG9wLWxldmVsIEkvTyBsb29wIGtlZXBzIHRoZSBjb3JlXG4gICBwb3J0YWJsZS5cblxuXG4gICA3LiBQcm9taXNlIFwicHJveHlpbmdcIlxuXG4gICBJbiBbTHd0LmJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XSwgdGhlIG91dGVyIFsnYiB0XSBpcyBjcmVhdGVkIGJ5XG4gICBbYmluZF0gZmlyc3QsIGFuZCByZXR1cm5lZCB0byB0aGUgdXNlci4gVGhlIGlubmVyIFsnYiB0XSBpcyBjcmVhdGVkIGJ5IHRoZVxuICAgdXNlciBsYXRlciwgYW5kIHRoZW4gcmV0dXJuZWQgdG8gW2JpbmRdLiBBdCB0aGF0IHBvaW50LCBbYmluZF0gbmVlZHMgdG8gbWFrZVxuICAgdGhlIGlubmVyIGFuZCBvdXRlciBbJ2IgdF1zIGJlaGF2ZSBpZGVudGljYWxseS5cblxuICAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgbWFraW5nIG9uZSBvZiB0aGUgcHJvbWlzZXMgcG9pbnQgdG8gdGhlIG90aGVyLiBUaGVcbiAgIGZpcnN0IG9mIHRoZSBwcm9taXNlcyB0aHVzIGJlY29tZXMgYSBcInByb3h5LFwiIGFuZCB0aGUgb3RoZXIgaXMgaXRzXG4gICBcInVuZGVybHlpbmdcIiBwcm9taXNlLlxuXG4gICBBZnRlciB0aGF0LCBhbGwgb3BlcmF0aW9ucyB0aGF0IHdvdWxkIGJlIHBlcmZvcm1lZCBieSBMd3Qgb24gdGhlIHByb3h5IGFyZVxuICAgaW5zdGVhZCBwZXJmb3JtZWQgb24gdGhlIHVuZGVybHlpbmcgcHJvbWlzZS4gVGhpcyBpcyBlbnN1cmVkIGJ5IHRoZSBudW1lcm91c1xuICAgY2FsbHMgdG8gdGhlIGludGVybmFsIGZ1bmN0aW9uIFt1bmRlcmx5aW5nXSBpbiB0aGlzIGZpbGUuXG5cbiAgIEJlY2F1c2Ugb2YgdGhlIHBlcnZhc2l2ZSB1c2Ugb2YgW3VuZGVybHlpbmddLCBwcm94aWVzIGNhbiBiZSBtb3JlIG9yIGxlc3NcbiAgIGlnbm9yZWQgb24gYSBmaXJzdCByZWFkaW5nIHRoZSBjb2RlLiBIb3dldmVyLCBiZWNvbWluZyBhIHByb3h5IGlzIGEga2luZCBvZlxuICAgc3RhdGUgY2hhbmdlLCBhbmQgYW55IHByb21pc2UgdGhhdCBpcyByZXR1cm5lZCBieSBhIGNhbGxiYWNrIHRvIFtiaW5kXSwgb3IgdG9cbiAgIGEgc2ltaWxhciBMd3QgZnVuY3Rpb24sIG1pZ2h0IGJlY29tZSBhIHByb3h5LiBUaGF0IG1lYW5zOiBqdXN0IGFib3V0IGFueVxuICAgcHJvbWlzZSB0aGF0IGlzIGhhbmRlZCB0byB0aGUgdXNlciwgbWlnaHQgYmVjb21lIGEgcHJveHkgcHJvbWlzZSBieSB0aGUgbmV4dFxuICAgdGltZSBMd3Qgc2VlcyBpdC4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHJlYXNvbmluZyBhYm91dCBwb3NzaWJsZSBzdGF0ZVxuICAgY2hhbmdlcyBpbiBpbXBsZW1lbnRhdGlvbiBvZiBMd3QsIGFuZCBpcyByZWZlcmVuY2VkIGluIHNvbWUgaW1wbGVtZW50YXRpb25cbiAgIGRldGFpbCBjb21tZW50cy5cblxuXG4gICA4LiBTZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2VcblxuICAgTHd0IGhhcyBhIGdsb2JhbCBrZXktdmFsdWUgbWFwLiBUaGUgbWFwIGNhbiBiZSBwcmVzZXJ2ZWQgYWNyb3NzIHNlcXVlbnRpYWxcbiAgIGNvbXBvc2l0aW9uIGZ1bmN0aW9ucywgc28gdGhhdCBpdCBoYXMgdGhlIHNhbWUgc3RhdGUgaW4gdGhlIHVzZXIncyBjYWxsYmFja1xuICAgW2ZdIGFzIGl0IGRpZCBhdCB0aGUgdGltZSB0aGUgdXNlciBjYWxsZWQgW0x3dC5iaW5kIHAgZl0uXG5cbiAgIFRoZSBkZXRhaWxzIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhbmQgZGlzY3Vzc2VkIGluIG1vZHVsZVxuICAgW1NlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZV0uIFRoZSBtYWluIHRoaW5nIHRvIGJlIGF3YXJlIG9mIGlzIHRoZSBtYW55XG4gICByZWZlcmVuY2VzIHRvIFtjdXJyZW50X3N0b3JhZ2VdIHRocm91Z2hvdXQgTHd0LCB3aGljaCBhcmUgbmVlZGVkIHRvIHByb3Blcmx5XG4gICBzYXZlIGFuZCByZXN0b3JlIHRoZSBtYXBwaW5nLlxuXG5cbiAgIDkuIFR5cGUgc3lzdGVtIGFidXNlXG5cbiAgIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSB0eXBlIHN5c3RlbSBzb21ld2hhdCBleHRlbnNpdmVseS4gR2VudGxlXG4gICBpbnRyb2R1Y3Rpb25zIGNhbiBiZSBmb3VuZCBoZXJlOlxuXG4gICAgIGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC8xNjEvN1xuICAgICBodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvMTYxLzE2XG5cbiAgIEEgc2hvcnQgc3VtbWFyeSBmb2xsb3dzLlxuXG4gICBUaGUgcHJvbWlzZSBzdGF0ZSBpcywgaW50ZXJuYWxseSwgYSBHQURUIHdoaWNoIGVuY29kZXMgdGhlIHN0YXRlIGluIGl0cyB0eXBlXG4gICBwYXJhbWV0ZXJzLiBUaHVzLCBpZiB5b3UgZG8gW2xldCBwID0gdW5kZXJseWluZyBwXSwgdGhlIHNoYWRvd2luZyByZWZlcmVuY2VcbiAgIFtwXSBpcyBzdGF0aWNhbGx5IGtub3duICpub3QqIHRvIGJlIGEgcHJveHksIGFuZCB0aGUgY29tcGlsZXIga25vd3MgdGhhdCB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgbWF0Y2ggY2FzZSBbUHJveHkgX10gaXMgaW1wb3NzaWJsZS5cblxuICAgVGhlIGV4dGVybmFsIHByb21pc2UgdHlwZSwgWydhIHRdLCBhbmQgdGhlIGV4dGVybmFsIHJlc29sdmVyIHR5cGUsIFsnYSB1XSxcbiAgIGFyZSBub3QgR0FEVHMuIEZ1cnRoZXJtb3JlLCB0aGV5IGFyZSwgcmVzcGVjdGl2ZWx5LCBjb3ZhcmlhbnQgYW5kXG4gICBjb250cmF2YXJpYW50IGluIFsnYV0sIHdoaWxlIHRoZSBpbnRlcm5hbCBwcm9taXNlIHR5cGUgaXMgaW52YXJpYW50IGluIFsnYV0uXG4gICBGb3IgdGhlc2UgcmVhc29ucywgdGhlcmUgYXJlIG5hc3R5IGNhc3RzIGJldHdlZW4gWydhIHRdLCBbJ2EgdV0sIGFuZCB0aGVcbiAgIGludGVybmFsIHByb21pc2UgdHlwZS4gVGhlIGltcGxlbWVudGF0aW9uIGlzLCBvZiBjb3Vyc2UsIHdyaXR0ZW4gaW4gdGVybXMgb2ZcbiAgIHRoZSBpbnRlcm5hbCB0eXBlLlxuXG4gICBDYXN0aW5nIGZyb20gYW4gWydhIHRdIHRvIGFuIGludGVybmFsIHByb21pc2UgcHJvZHVjZXMgYSByZWZlcmVuY2UgZm9yXG4gICB3aGljaCB0aGUgc3RhdGUgaXMgXCJ1bmtub3duXCI6IHRoaXMgaXMgc2ltdWxhdGVkIHdpdGggYSBoZWxwZXIgR0FEVCwgd2hpY2hcbiAgIGVuY29kZXMgZXhpc3RlbnRpYWwgdHlwZXMuIFRoZXJlIGFyZSBzZXZlcmFsIHNpbWlsYXIgY2FzdHMsIHdoaWNoIGFyZSB1c2VkXG4gICB0byBkb2N1bWVudCBwb3NzaWJsZSBzdGF0ZSBjaGFuZ2VzIGJldHdlZW4gdGhlIHRpbWUgYSBwcm9taXNlIGlzIGNyZWF0ZWQsXG4gICBhbmQgdGhlIGxhdGVyIHRpbWUgaXQgaXMgdXNlZCBpbiBhIGNhbGxiYWNrLiBZb3UgY2FuIHNlZSB0aGVzZSBjYXN0cyBpblxuICAgYWN0aW9uIGluIFtMd3QuYmluZF0uIFRoZSBjYXN0IHN5bnRheCBpcyBwcmV0dHkgbGlnaHQsIGFuZCwgYmVzaWRlcyBiZWluZ1xuICAgY29tbWVudGVkIGluIFtiaW5kXSwgYWxsIHN1Y2ggY2FzdHMgYXJlIGRvY3VtZW50ZWQgaW4gbW9kdWxlcyBbUHVibGljX3R5cGVzXVxuICAgYW5kIFtCYXNpY19oZWxwZXJzXS5cblxuXG4gICBJZiB5b3UndmUgbWFkZSBpdCB0aGlzIGZhciwgeW91IGFyZSBhbiBMd3QgZXhwZXJ0ISBSZWpvaWNlISAqKVxuXG5cblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxuKCogU29tZSBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UgdHlwZXNcblxuICAgU2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIGlzIGRlZmluZWQgYW5kIGRvY3VtZW50ZWQgbGF0ZXIsIGluIG1vZHVsZVxuICAgW1NlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZV0uIEhvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIG1lbnRpb25lZCBpblxuICAgdGhlIGRlZmluaXRpb24gb2YgW3Byb21pc2VdLCBzbyB0aGV5IG11c3QgYmUgZGVmaW5lZCBoZXJlIGZpcnN0LiAqKVxubW9kdWxlIFN0b3JhZ2VfbWFwID1cbiAgTWFwLk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZClcbnR5cGUgc3RvcmFnZSA9ICh1bml0IC0+IHVuaXQpIFN0b3JhZ2VfbWFwLnRcblxuXG5cbm1vZHVsZSBNYWluX2ludGVybmFsX3R5cGVzID1cbnN0cnVjdFxuICAoKiBQaGFudG9tIHR5cGVzIGZvciB1c2Ugd2l0aCB0eXBlcyBbcHJvbWlzZV0gYW5kIFtzdGF0ZV0uIFRoZXNlIGFyZSBuZXZlclxuICAgICBjb25zdHJ1Y3RlZDsgdGhlIHB1cnBvc2Ugb2YgdGhlIGNvbnN0cnVjdG9ycyBpcyB0byBwcm92ZSB0byB0aGUgdHlwZVxuICAgICBjaGVja2VyIHRoYXQgdGhlc2UgdHlwZXMgYXJlIGRpc3RpbmN0IGZyb20gZWFjaCBvdGhlci4gV2FybmluZyAzNywgXCJ1bnVzZWRcbiAgICAgY29uc3RydWN0b3IsXCIgdGhlcmVmb3JlIGhhcyB0byBiZSB0ZW1wb3JhcmlseSBzdXBwcmVzc2VkLiAqKVxuXG4gIFtAQEBvY2FtbC53YXJuaW5nIFwiLTM3XCJdXG5cbiAgdHlwZSB1bmRlcmx5aW5nID0gcHJpdmF0ZSBVbmRlcmx5aW5nX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG4gIHR5cGUgcHJveHkgPSBwcml2YXRlIFByb3h5X2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG5cbiAgdHlwZSByZXNvbHZlZCA9IHByaXZhdGUgUmVzb2x2ZWRfYW5kX3RoaXNfY29uc3RydWN0b3JfaXNfbm90X3VzZWRcbiAgdHlwZSBwZW5kaW5nID0gcHJpdmF0ZSBQZW5kaW5nX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG5cbiAgW0BAQG9jYW1sLndhcm5pbmcgXCIrMzdcIl1cblxuXG5cbiAgKCogUHJvbWlzZXMgcHJvcGVyLiAqKVxuXG4gIHR5cGUgKCdhLCAndSwgJ2MpIHByb21pc2UgPSB7XG4gICAgbXV0YWJsZSBzdGF0ZSA6ICgnYSwgJ3UsICdjKSBzdGF0ZTtcbiAgfVxuXG4gIGFuZCAoXywgXywgXykgc3RhdGUgPVxuICAgIHwgRnVsZmlsbGVkIDogJ2EgICAgICAgICAgICAgICAgICAtPiAoJ2EsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZVxuICAgIHwgUmVqZWN0ZWQgIDogZXhuICAgICAgICAgICAgICAgICAtPiAoIF8sIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZVxuICAgIHwgUGVuZGluZyAgIDogJ2EgY2FsbGJhY2tzICAgICAgICAtPiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpICBzdGF0ZVxuICAgIHwgUHJveHkgICAgIDogKCdhLCBfLCAnYykgcHJvbWlzZSAtPiAoJ2EsIHByb3h5LCAgICAgICdjKSAgICAgICBzdGF0ZVxuXG4gICgqIE5vdGU6XG5cbiAgICAgQSBwcm9taXNlIHdob3NlIHN0YXRlIGlzIFtQcm94eSBfXSBpcyBhIFwicHJveHlcIiBwcm9taXNlLiBBIHByb21pc2Ugd2hvc2VcbiAgICAgc3RhdGUgaXMgKm5vdCogW1Byb3h5IF9dIGlzIGFuIFwidW5kZXJseWluZ1wiIHByb21pc2UuXG5cbiAgICAgVGhlIFwidW5kZXJseWluZyBwcm9taXNlIG9mIFtwXVwiIGlzOlxuXG4gICAgIC0gW3BdLCBpZiBbcF0gaXMgaXRzZWxmIHVuZGVybHlpbmcuXG4gICAgIC0gT3RoZXJ3aXNlLCBbcF0gaXMgYSBwcm94eSBhbmQgaGFzIHN0YXRlIFtQcm94eSBwJ10uIFRoZSB1bmRlcmx5aW5nXG4gICAgICAgcHJvbWlzZSBvZiBbcF0gaXMgdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBvZiBbcCddLlxuXG4gICAgIEluIG90aGVyIHdvcmRzLCB0byBmaW5kIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgYSBwcm94eSwgTHd0IGZvbGxvd3MgdGhlXG4gICAgIFtQcm94eSBfXSBsaW5rcyB0byB0aGUgZW5kLiAqKVxuXG4gICgqIE5vdGU6XG5cbiAgICAgV2hlbiBhIHByb21pc2UgaXMgcmVzb2x2ZWQsIG9yIGJlY29tZXMgYSBwcm94eSwgaXRzIHN0YXRlIGZpZWxkIGlzXG4gICAgIG11dGF0ZWQuIFRoaXMgaW52YWxpZGF0ZXMgdGhlIHR5cGUgaW52YXJpYW50cyBvbiB0aGUgcHJvbWlzZS4gU2VlIGludGVybmFsXG4gICAgIGZ1bmN0aW9uIFtzZXRfcHJvbWlzZV9zdGF0ZV0gZm9yIGRldGFpbHMgYWJvdXQgdGhhdC5cblxuICAgICBXaGVuIGFuIEx3dCBmdW5jdGlvbiBoYXMgYSByZWZlcmVuY2UgdG8gYSBwcm9taXNlLCBhbmQgYWxzbyByZWdpc3RlcnMgYVxuICAgICBjYWxsYmFjayB0aGF0IGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBwcm9taXNlLCB0aGUgaW52YXJpYW50cyBvbiB0aGVcbiAgICAgcmVmZXJlbmNlIG1heSBiZWNvbWUgaW52YWxpZCBieSB0aGUgdGltZSB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLiBBbGwgc3VjaFxuICAgICBjYWxsYmFja3MgaGF2ZSBjb21tZW50cyBleHBsYWluaW5nIHdoYXQgdGhlIHZhbGlkIGludmFyaWFudHMgYXJlIGF0IHRoYXRcbiAgICAgcG9pbnQsIGFuZC9vciBjYXN0cyB0byAoMSkgZ2V0IHRoZSBjb3JyZWN0IHR5cGluZyBhbmQgKDIpIGRvY3VtZW50IHRoZVxuICAgICBwb3RlbnRpYWwgc3RhdGUgY2hhbmdlIGZvciByZWFkZXJzIG9mIHRoZSBjb2RlLiAqKVxuXG5cblxuICAoKiBDYWxsYmFjayBpbmZvcm1hdGlvbiBmb3IgcGVuZGluZyBwcm9taXNlcy4gKilcblxuICBhbmQgJ2EgY2FsbGJhY2tzID0ge1xuICAgIG11dGFibGUgcmVndWxhcl9jYWxsYmFja3MgOiAnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3Q7XG4gICAgbXV0YWJsZSBjYW5jZWxfY2FsbGJhY2tzICA6ICdhIGNhbmNlbF9jYWxsYmFja19saXN0O1xuICAgIG11dGFibGUgaG93X3RvX2NhbmNlbCAgICAgOiBob3dfdG9fY2FuY2VsO1xuICAgIG11dGFibGUgY2xlYW51cHNfZGVmZXJyZWQgOiBpbnQ7XG4gIH1cblxuICBhbmQgJ2EgcmVndWxhcl9jYWxsYmFjayA9ICdhIHJlc29sdmVkX3N0YXRlIC0+IHVuaXRcblxuICBhbmQgY2FuY2VsX2NhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbiAgYW5kICdhIHJlc29sdmVkX3N0YXRlID0gKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcblxuICBhbmQgaG93X3RvX2NhbmNlbCA9XG4gICAgfCBOb3RfY2FuY2VsYWJsZSAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd190b19jYW5jZWxcbiAgICB8IENhbmNlbF90aGlzX3Byb21pc2UgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG93X3RvX2NhbmNlbFxuICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgICAgIDogKF8sIF8sIF8pIHByb21pc2UgICAgICAtPiBob3dfdG9fY2FuY2VsXG4gICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgOiAoXywgXywgXykgcHJvbWlzZSBsaXN0IC0+IGhvd190b19jYW5jZWxcblxuICBhbmQgJ2EgcmVndWxhcl9jYWxsYmFja19saXN0ID1cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBvZlxuICAgICAgJ2EgcmVndWxhcl9jYWxsYmFja19saXN0ICogJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIG9mXG4gICAgICAnYSByZWd1bGFyX2NhbGxiYWNrXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgb2ZcbiAgICAgICdhIHJlZ3VsYXJfY2FsbGJhY2sgb3B0aW9uIHJlZlxuXG4gIGFuZCBfIGNhbmNlbF9jYWxsYmFja19saXN0ID1cbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5IDpcbiAgICAgIF8gY2FuY2VsX2NhbGxiYWNrX2xpc3RcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCA6XG4gICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdCAqICdhIGNhbmNlbF9jYWxsYmFja19saXN0IC0+XG4gICAgICAgICdhIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayA6XG4gICAgICBzdG9yYWdlICogY2FuY2VsX2NhbGxiYWNrIC0+XG4gICAgICAgIF8gY2FuY2VsX2NhbGxiYWNrX2xpc3RcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIDpcbiAgICAgICgnYSwgXywgXykgcHJvbWlzZSBMd3Rfc2VxdWVuY2Uubm9kZSAtPlxuICAgICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuXG4gICgqIE5vdGVzOlxuXG4gICAgIFRoZXNlIHR5cGUgZGVmaW5pdGlvbnMgYXJlIGd1aWx0eSBvZiBwZXJmb3JtaW5nIHNldmVyYWwgb3B0aW1pemF0aW9ucyxcbiAgICAgd2l0aG91dCB3aGljaCB0aGV5IHdvdWxkIGJlIG11Y2ggZWFzaWVyIHRvIHVuZGVyc3RhbmQuXG5cbiAgICAgLSBUaGUgdHlwZSBwYXJhbWV0ZXJzIG9mIFsnYSByZXNvbHZlZF9zdGF0ZV0gZ3VhcmFudGVlIHRoYXQgaXQgaXMgZWl0aGVyXG4gICAgICAgW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10uIFNvLCBpdCBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgWygnYSwgZXhuKSBTdGRsaWIucmVzdWx0XSwgYW5kLCBpbmRlZWQsIHNob3VsZCBoYXZlIGFuIGlkZW50aWNhbFxuICAgICAgIG1lbW9yeSByZXByZXNlbnRhdGlvbi5cblxuICAgICAtIEFzIHBlciB0aGUgT3ZlcnZpZXcsIHRoZXJlIGFyZSByZWd1bGFyIGNhbGxiYWNrcyBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cbiAgICAgICBDYW5jZWwgY2FsbGJhY2tzIGFyZSBjYWxsZWQgb25seSBvbiBjYW5jZWxsYXRpb24sIGFuZCwgdGhlbiwgYmVmb3JlIGFueVxuICAgICAgIHJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBjYWxsZWQuXG5cbiAgICAgICBEZXNwaXRlIHRoZSBkaWZmZXJlbnQgdHlwZXMgZm9yIHRoZSB0d28ga2luZHMgb2YgY2FsbGJhY2tzLCB0aGV5IGFyZVxuICAgICAgIG90aGVyd2lzZSB0aGUgc2FtZS4gQ2FuY2VsIGNhbGxiYWNrcyBqdXN0IGRvbid0IG5lZWQgYSByZXN1bHQgc3RhdGVcbiAgICAgICBhcmd1bWVudCwgYmVjYXVzZSBpdCBpcyBrbm93biB0byBiZSBbUmVqZWN0ZWQgQ2FuY2VsZWRdLlxuXG4gICAgIC0gUmVndWxhciBjYWxsYmFja3MgYXJlIG5vdCBhbGxvd2VkIHRvIHJhaXNlIGV4Y2VwdGlvbnMuIEFsbCByZWd1bGFyXG4gICAgICAgY2FsbGJhY2tzIGFyZSBjcmVhdGVkIGluIHRoaXMgZmlsZSwgc28gdGhpcyBjYW4gYmUgY2hlY2tlZC5cblxuICAgICAgIENhbmNlbCBjYWxsYmFja3MgY2FuIHJhaXNlIGV4Y2VwdGlvbnMsIGJ1dCBpZiB0aGV5IGRvIHNvLCB0aGUgZXhjZXB0aW9uc1xuICAgICAgIGFyZSBwYXNzZWQgdG8gW2FzeW5jX2V4Y2VwdGlvbl9ob29rXS5cblxuICAgICAtIFtob3dfdG9fY2FuY2VsXSBpbXBsZW1lbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG1lbnRpb25lZCBpbiB0aGVcbiAgICAgICBPdmVydmlldy4gSXQgaXMgdHJhdmVyc2VkIGJhY2t3YXJkcyBkdXJpbmcgW0x3dC5jYW5jZWxdLiBJdCBpcyBhIEdBRFRcbiAgICAgICBiZWNhdXNlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGFjdHVhbCB0eXBlcyBvZiB0aGUgcHJvbWlzZSByZWZlcmVuY2VzXG4gICAgICAgc3RvcmVkLCBvciB0aGVpciBpbnZhcmlhbnRzLiBUaGUgY29uc3RydWN0b3JzIGNvcnJlc3BvbmQgdG8gcGVuZGluZ1xuICAgICAgIHByb21pc2Uga2luZHMgYXMgZm9sbG93czpcbiAgICAgICAgIC0gW05vdF9jYW5jZWxhYmxlXTogaW5pdGlhbCwgW0x3dC53YWl0XS5cbiAgICAgICAgIC0gW0NhbmNlbF90aGlzX3Byb21pc2VdOiBpbml0aWFsLCBbTHd0LnRhc2tdLlxuICAgICAgICAgLSBbUHJvcGFnYXRlX2NhbmNlbF90b19vbmVdOiBzZXF1ZW50aWFsIGNvbXBvc2l0aW9uLCBlLmcuIFtMd3QuYmluZF0uXG4gICAgICAgICAtIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdOiBjb25jdXJyZW50IGNvbXBvc2l0aW9uLCBlLmcuXG4gICAgICAgICAgIFtMd3Quam9pbl0uXG5cbiAgICAgLSBUaGUgdHdvIGNhbGxiYWNrIGxpc3QgdHlwZXMgYXJlIG9yZGluYXJ5IGFwcGVuZC1mcmllbmRseSBsaXN0cywgd2l0aCB0d29cbiAgICAgICBvcHRpbWl6YXRpb25zIGlubGluZWQ6XG5cbiAgICAgICAtIFsnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3RdIGFwcGFyZW50bHkgaGFzIHR3byBcImtpbmRzXCIgb2YgcmVndWxhclxuICAgICAgICAgY2FsbGJhY2tzLCBpbXBsaWNpdGx5IHJlbW92ZWQgYW5kIGV4cGxpY2l0bHkgcmVtb3ZhYmxlLiBBbGwgY2FsbGJhY2tzXG4gICAgICAgICBhcmUgcmVtb3ZhYmxlLiBJdCdzIGp1c3QgdGhhdCwgZm9yIHNvbWUgY2FsbGJhY2tzLCB0aGV5IHdpbGwgb25seSBiZVxuICAgICAgICAgcmVtb3ZlZCBhdCB0aGUgc2FtZSB0aW1lIHRoYXQgdGhlIHByb21pc2UgdGhleSBhcmUgYXR0YWNoZWQgdG8gYmVjb21lc1xuICAgICAgICAgcmVzb2x2ZWQuIFdoZW4gdGhhdCBoYXBwZW5zLCB0aGUgZW50aXJlIHN0YXRlIG9mIHRoYXQgcHJvbWlzZSBjaGFuZ2VzXG4gICAgICAgICB0byBbRnVsZmlsbGVkIF9dIG9yIFtSZWplY3RlZCBfXSwgYW5kIHRoZSByZWZlcmVuY2UgdG8gdGhlIHdob2xlXG4gICAgICAgICBjYWxsYmFjayBsaXN0IGlzIHNpbXBseSBsb3N0LiBUaGlzIFwicmVtb3Zlc1wiIHRoZSBjYWxsYmFjay4gRm9yIHRoZXNlXG4gICAgICAgICBjYWxsYmFja3MsIFsnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3RdIGF0dGVtcHRzIHRvIHRyaW0gYW4gb3B0aW9uIGFuZCBhXG4gICAgICAgICByZWZlcmVuY2UgY2VsbCB3aXRoIHRoZVxuICAgICAgICAgW1JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2tdIGNvbnN0cnVjdG9yLlxuXG4gICAgICAgLSBbJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3RdIGhhc1xuICAgICAgICAgW0NhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGVdLCB3aGljaCBpcyB0aGUgc2FtZSBhc1xuICAgICAgICAgW0NhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIChfLCAoZnVuIF8gLT5cbiAgICAgICAgICAgTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlKSldLlxuICAgICAgICAgVGhpcyB3YXMgcHJvYmFibHkgZG9uZSB0byBhdm9pZCBhIGNsb3N1cmUgYWxsb2NhdGlvbi5cblxuICAgICAtIFRoZSBbY2xlYW51cHNfZGVmZXJyZWRdIGZpZWxkIGlzIGV4cGxhaW5lZCBpbiBtb2R1bGVcbiAgICAgICBbUGVuZGluZ19jYWxsYmFja3NdLiAqKVxuZW5kXG5vcGVuIE1haW5faW50ZXJuYWxfdHlwZXNcblxuXG5cbm1vZHVsZSBQdWJsaWNfdHlwZXMgPVxuc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgdHlwZSAtJ2EgdVxuXG4gIGxldCB0b19wdWJsaWNfcHJvbWlzZSA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAnYSB0ID0gT2JqLm1hZ2ljXG4gIGxldCB0b19wdWJsaWNfcmVzb2x2ZXIgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgdSA9IE9iai5tYWdpY1xuXG4gIHR5cGUgXyBwYWNrZWRfcHJvbWlzZSA9XG4gICAgfCBJbnRlcm5hbCA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAnYSBwYWNrZWRfcHJvbWlzZVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgbGV0IHRvX2ludGVybmFsX3Byb21pc2UgKHAgOiAnYSB0KSA6ICdhIHBhY2tlZF9wcm9taXNlID1cbiAgICBJbnRlcm5hbCAoT2JqLm1hZ2ljIHApXG4gIGxldCB0b19pbnRlcm5hbF9yZXNvbHZlciAociA6ICdhIHUpIDogJ2EgcGFja2VkX3Byb21pc2UgPVxuICAgIEludGVybmFsIChPYmoubWFnaWMgcilcblxuICAoKiBNb3N0IGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBwdWJsaWMgcHJvbWlzZSAoWydhIHRdKSBjb252ZXJ0IGl0IHRvIGFuXG4gICAgIGludGVybmFsIHByb21pc2UgYXMgZm9sbG93czpcblxuICAgICAgICgqIHAgOiAnYSB0ICopXG5cbiAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgICAgKCogcCA6ICgnYSwgdSwgYykgcHJvbWlzZSwgd2hlcmUgdSBhbmQgYyBhcmUgZnJlc2ggdHlwZXMsIGkuZS4gdGhlXG4gICAgICAgICAgaW52YXJpYW50cyBvbiBwIGFyZSB1bmtub3duLiAqKVxuXG4gICAgIFRoaXMgY2FzdCBpcyBhIG5vLW9wIGNhc3QuIEl0IG9ubHkgcHJvZHVjZXMgYSByZWZlcmVuY2Ugd2l0aCBhIGRpZmZlcmVudFxuICAgICB0eXBlLiBUaGUgaW50cm9kdWN0aW9uIGFuZCBpbW1lZGlhdGUgZWxpbWluYXRpb24gb2YgW0ludGVybmFsIF9dIHNlZW1zIHRvXG4gICAgIGJlIG9wdGltaXplZCBhd2F5IGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgT0NhbWwgdGhhdCBkb24ndCBoYXZlIEZsYW1iZGFcbiAgICAgYW5kIGRvbid0IHN1cHBvcnQgW1tAQG9jYW1sLnVuYm94ZWRdXS4gKilcblxuICAoKiBUaGlzIGNvdWxkIHByb2JhYmx5IHNhdmUgYW4gYWxsb2NhdGlvbiBieSB1c2luZyBbT2JqLm1hZ2ljXS4gKilcbiAgbGV0IHN0YXRlX29mX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IEZ1bGZpbGxlZCB4XG4gICAgfCBFcnJvciBleG4gLT4gUmVqZWN0ZWQgZXhuXG5lbmRcbmluY2x1ZGUgUHVibGljX3R5cGVzXG5cblxuXG5tb2R1bGUgQmFzaWNfaGVscGVycyA6XG5zaWdcbiAgdmFsIGlkZW50aWNhbCA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gYm9vbFxuICB2YWwgdW5kZXJseWluZyA6ICgnYSwgJ3UsICdjKSBwcm9taXNlIC0+ICgnYSwgdW5kZXJseWluZywgJ2MpIHByb21pc2VcblxuICB0eXBlICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkID1cbiAgICB8IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb2YgKCdhLCAndSwgJ2MpIHByb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuICB2YWwgc2V0X3Byb21pc2Vfc3RhdGUgOlxuICAgICgnYSwgXywgXykgcHJvbWlzZSAtPiAoJ2EsICd1LCAnYykgc3RhdGUgLT4gKCdhLCAndSwgJ2MpIHN0YXRlX2NoYW5nZWRcblxuICB0eXBlICdhIG1heV9ub3dfYmVfcHJveHkgPVxuICAgIHwgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IDpcbiAgICAgICgnYSwgXywgcGVuZGluZykgcHJvbWlzZSAtPiAnYSBtYXlfbm93X2JlX3Byb3h5XG4gICAgW0BAb2NhbWwudW5ib3hlZF1cbiAgdmFsIG1heV9ub3dfYmVfcHJveHkgOlxuICAgICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSAtPiAnYSBtYXlfbm93X2JlX3Byb3h5XG5lbmQgPVxuc3RydWN0XG4gICgqIENoZWNrcyBwaHlzaWNhbCBlcXVhbGl0eSAoWz09XSkgb2YgdHdvIGludGVybmFsIHByb21pc2VzLiBVbmxpa2UgWz09XSwgZG9lc1xuICAgICBub3QgZm9yY2UgdW5pZmljYXRpb24gb2YgdGhlaXIgaW52YXJpYW50cy4gKilcbiAgbGV0IGlkZW50aWNhbCBwMSBwMiA9XG4gICAgKHRvX3B1YmxpY19wcm9taXNlIHAxKSA9PSAodG9fcHVibGljX3Byb21pc2UgcDIpXG5cbiAgKCogW3VuZGVybHlpbmcgcF0gZXZhbHVhdGVzIHRvIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgW3BdLlxuXG4gICAgIElmIG11bHRpcGxlIFtQcm94eSBfXSBsaW5rcyBhcmUgdHJhdmVyc2VkLCBbdW5kZXJseWluZ10gdXBkYXRlcyBhbGwgdGhlXG4gICAgIHByb3hpZXMgdG8gcG9pbnQgaW1tZWRpYXRlbHkgdG8gdGhlaXIgZmluYWwgdW5kZXJseWluZyBwcm9taXNlLiAqKVxuICBsZXQgcmVjIHVuZGVybHlpbmdcbiAgICAgIDogdHlwZSB1IGMuICgnYSwgdSwgYykgcHJvbWlzZSAtPiAoJ2EsIHVuZGVybHlpbmcsIGMpIHByb21pc2UgPVxuICAgIGZ1biBwIC0+XG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IChwIDogKF8sIHVuZGVybHlpbmcsIF8pIHByb21pc2UpXG4gICAgfCBSZWplY3RlZCBfIC0+IHBcbiAgICB8IFBlbmRpbmcgXyAtPiBwXG4gICAgfCBQcm94eSBwJyAtPlxuICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgIGlmIG5vdCAoaWRlbnRpY2FsIHAnJyBwJykgdGhlblxuICAgICAgICBwLnN0YXRlIDwtIFByb3h5IHAnJztcbiAgICAgIHAnJ1xuXG5cblxuICB0eXBlICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkID1cbiAgICB8IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb2YgKCdhLCAndSwgJ2MpIHByb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBzZXRfcHJvbWlzZV9zdGF0ZSBwIHN0YXRlID1cbiAgICBsZXQgcCA6IChfLCBfLCBfKSBwcm9taXNlID0gT2JqLm1hZ2ljIHAgaW5cbiAgICBwLnN0YXRlIDwtIHN0YXRlO1xuICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcFxuXG4gICgqIFtzZXRfcHJvbWlzZV9zdGF0ZSBwIHN0YXRlXSBtdXRhdGVzIHRoZSBzdGF0ZSBvZiBbcF0sIGFuZCBldmFsdWF0ZXMgdG8gYVxuICAgICAod3JhcHBlZCkgcmVmZXJlbmNlIHRvIFtwXSB3aXRoIHRoZSBzYW1lIGludmFyaWFudHMgYXMgb24gW3N0YXRlXS4gVGhlXG4gICAgIG9yaWdpbmFsIHJlZmVyZW5jZSBbcF0gc2hvdWxkIGJlIHNoYWRvd2VkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uOlxuXG4gICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9IHNldF9wcm9taXNlX3N0YXRlIHAgKEZ1bGZpbGxlZCA0MikgaW4gLi4uXG5cbiAgICAgVGhpcyBpcyBhIGtpbmQgb2YgY2hlYXAgaW1pdGF0aW9uIG9mIGxpbmVhciB0eXBpbmcsIHdoaWNoIGlzIGdvb2QgZW5vdWdoXG4gICAgIGZvciB0aGUgbmVlZHMgb2YgW2x3dC5tbF0uXG5cbiAgICAgSW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgdHJhbnNpdGl2ZWx5IGNhbGwgW3NldF9wcm9taXNlX3N0YXRlXSBsaWtld2lzZVxuICAgICByZXR1cm4gdGhlIG5ldyByZWZlcmVuY2UuIFRoaXMgZW5kcyBhdCBzb21lIHRvcC1sZXZlbCBmdW5jdGlvbiwgdHlwaWNhbGx5XG4gICAgIGVpdGhlciBhIGNhbGxiYWNrIG9yIGEgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuIFRoZXJlLCB0aGUgbmV3IHJlZmVyZW5jZVxuICAgICBpcyBzdGlsbCBib3VuZCwgYnV0IGlzIHRoZW4gZXhwbGljaXRseSBpZ25vcmVkLlxuXG4gICAgIFRoZSBzdGF0ZSBvZiBhIHByb21pc2UgaXMgbmV2ZXIgdXBkYXRlZCBkaXJlY3RseSBvdXRzaWRlIHRoaXMgbW9kdWxlXG4gICAgIFtCYXNpY19oZWxwZXJzXS4gQWxsIHVwZGF0ZXMgZWxzZXdoZXJlIGFyZSBkb25lIHRocm91Z2hcbiAgICAgW3NldF9wcm9taXNlX3N0YXRlXS5cblxuICAgICBUbyBhdm9pZCBwcm9ibGVtcyB3aXRoIHR5cGUtbGV2ZWwgaW52YXJpYW50cyBub3QgbWF0Y2hpbmcgcmVhbGl0eSwgZGF0YVxuICAgICBzdHJ1Y3R1cmVzIGRvIG5vdCBzdG9yZSBwcm9taXNlcyB3aXRoIGNvbmNyZXRlIGludmFyaWFudHMgLS0gZXhjZXB0XG4gICAgIHJlc29sdmVkIHByb21pc2VzLCB3aGljaCBhcmUgaW1tdXRhYmxlLiBJbmRlZWQsIGlmIG9uZSBsb29rcyBhdFxuICAgICBkZWZpbml0aW9ucyBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjYW4gc3RvcmUgcGVuZGluZyBwcm9taXNlcywgZS5nLiB0aGVcbiAgICAgW2hvd190b19jYW5jZWxdIGdyYXBoLCB0aGUgaW52YXJpYW50cyBhcmUgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkLlxuXG4gICAgIE5vdGU6IGl0J3MgcG9zc2libGUgdG8gc3RhdGljYWxseSBkaXNhbGxvdyB0aGUgc2V0dGluZyBvZiB0aGUgW3N0YXRlXSBmaWVsZFxuICAgICBieSBtYWtpbmcgdHlwZSBbcHJvbWlzZV0gcHJpdmF0ZS4gSG93ZXZlciwgdGhhdCBzZWVtcyB0byByZXF1aXJlIHdyaXRpbmcgYVxuICAgICBzaWduYXR1cmUgdGhhdCBpcyBhIG5lYXItZHVwbGljYXRlIG9mIFtNYWluX2ludGVybmFsX3R5cGVzXSwgb3Igc29tZSBhYnVzZVxuICAgICBvZiBmdW5jdG9ycy4gKilcblxuXG5cbiAgdHlwZSAnYSBtYXlfbm93X2JlX3Byb3h5ID1cbiAgICB8IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSA6XG4gICAgICAoJ2EsIF8sIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgbGV0IG1heV9ub3dfYmVfcHJveHkgcCA9IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwXG5cbiAgKCogTWFueSBmdW5jdGlvbnMsIGZvciBleGFtcGxlIFtMd3QuYmluZF0gYW5kIFtMd3Quam9pbl0sIGNyZWF0ZSBhIGZyZXNoXG4gICAgIHBlbmRpbmcgcHJvbWlzZSBbcF0gYW5kIHJldHVybiBpdCB0byB0aGUgdXNlci5cblxuICAgICBUaGV5IGRvIG5vdCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIHJlc29sdmVyLiBUaGF0IG1lYW5zIHRoYXQgb25seSB0aGVcbiAgICAgZnVuY3Rpb24gaXRzZWxmICh0eXBpY2FsbHksIGEgY2FsbGJhY2sgcmVnaXN0ZXJlZCBieSBpdCkgY2FuIHJlc29sdmUgW3BdLlxuICAgICBUaGUgb25seSB0aGluZyB0aGUgdXNlciBjYW4gZG8gZGlyZWN0bHkgaXMgdHJ5IHRvIGNhbmNlbCBbcF0sIGJ1dCwgc2luY2VcbiAgICAgW3BdIGlzIG5vdCBhbiBpbml0aWFsIHByb21pc2UsIHRoZSBjYW5jZWxsYXRpb24gYXR0ZW1wdCBzaW1wbHkgcHJvcGFnYXRlc1xuICAgICBwYXN0IFtwXSB0byBbcF0ncyBwcmVkZWNlc3NvcnMuIElmIHRoYXQgZXZlbnR1YWxseSByZXN1bHRzIGluIGNhbmNlbGluZ1xuICAgICBbcF0sIGl0IHdpbGwgYmUgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbXMgb2YgdGhlIGZ1bmN0aW9uIChlLmcuXG4gICAgIFtMd3QuYmluZF0ncyBjYWxsYmFjaykuXG5cbiAgICAgQXMgYSByZXN1bHQsIHRoZSBvbmx5IHBvc3NpYmxlIHN0YXRlIGNoYW5nZSwgYmVmb3JlIHRoZSBjYWxsYmFjaywgaXMgdGhhdFxuICAgICBbcF0gbWF5IGhhdmUgYmVjb21lIGEgcHJveHkuIE5vdyxcblxuICAgICAtIElmIFtwXSBkb2VzIG5vdCB1bmRlcmdvIHRoaXMgc3RhdGUgY2hhbmdlIGFuZCBiZWNvbWUgYSBwcm94eSwgaXQgcmVtYWluc1xuICAgICAgIGFuIHVuZGVybHlpbmcsIHBlbmRpbmcgcHJvbWlzZS5cbiAgICAgLSBJZiBbcF0gZG9lcyBiZWNvbWUgYSBwcm94eSwgaXQgd2lsbCBiZSBhIHByb3h5IGZvciBhbm90aGVyIHByb21pc2UgW3AnXVxuICAgICAgIGNyZWF0ZWQgZnJlc2ggYnkgW0x3dC5iaW5kXSwgdG8gd2hpY2ggdGhpcyBzYW1lIGFyZ3VtZW50IGFwcGxpZXMuIFNlZVxuICAgICAgIFttYWtlX2ludG9fcHJveHldLlxuXG4gICAgIFNvLCBieSBpbmR1Y3Rpb24gb24gdGhlIGxlbmd0aCBvZiB0aGUgcHJveHkgKFtQcm94eSBfXSkgY2hhaW4sIGF0IHRoZSB0aW1lXG4gICAgIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQsIFtwXSBpcyBlaXRoZXIgYW4gdW5kZXJseWluZywgcGVuZGluZyBwcm9taXNlLCBvciBhXG4gICAgIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS5cblxuICAgICBUaGUgY2FzdFxuXG4gICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluIC4uLlxuXG4gICAgIGVuY29kZXMgdGhlIHBvc3NpYmlsaXR5IG9mIHRoaXMgc3RhdGUgY2hhbmdlLiBJdCByZXBsYWNlcyBhIHJlZmVyZW5jZVxuXG4gICAgICAgcCA6ICgnYSwgdW5kZXJseWluZywgcGVuZGluZylcblxuICAgICB3aXRoXG5cbiAgICAgICBwIDogKCdhLCAkVW5rbm93biwgcGVuZGluZylcblxuICAgICBhbmQgaXMgdHlwaWNhbGx5IHNlZW4gYXQgdGhlIGJlZ2lubmluZyBvZiBjYWxsYmFja3MgcmVnaXN0ZXJlZCBieVxuICAgICBbTHd0LmJpbmRdIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucy5cblxuICAgICBUaGUgY2FzdCBpcyBhIG5vLW9wIGNhc3QuIFRoZSBpbnRyb2R1Y3Rpb24gYW5kIGltbWVkaWF0ZSBlbGltaW5hdGlvbiBvZlxuICAgICBbU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBfXSBzZWVtcyB0byBiZSBvcHRpbWl6ZWQgYXdheSBldmVuIG9uIG9sZCB2ZXJzaW9uc1xuICAgICBvZiBPQ2FtbC4gKilcbmVuZFxub3BlbiBCYXNpY19oZWxwZXJzXG5cbigqIFNtYWxsIGhlbHBlcnMgdG8gYXZvaWQgY2F0Y2hpbmcgb2NhbWwtcnVudGltZSBleGNlcHRpb25zICopXG5tb2R1bGUgRXhjZXB0aW9uX2ZpbHRlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBleG4gLT4gYm9vbFxuICBsZXQgaGFuZGxlX2FsbCA9IGZ1biBfIC0+IHRydWVcbiAgbGV0IGhhbmRsZV9hbGxfZXhjZXB0X3J1bnRpbWUgPSBmdW5jdGlvblxuICAgIHwgT3V0X29mX21lbW9yeSAtPiBmYWxzZVxuICAgIHwgU3RhY2tfb3ZlcmZsb3cgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICBsZXQgdiA9XG4gICAgKCogRGVmYXVsdCB2YWx1ZTogdGhlIGxlZ2FjeSBiZWhhdmlvdXIgdG8gYXZvaWQgYnJlYWtpbmcgcHJvZ3JhbXMgKilcbiAgICByZWYgaGFuZGxlX2FsbFxuICBsZXQgc2V0IGYgPSB2IDo9IGZcbiAgbGV0IHJ1biBlID0gIXYgZVxuZW5kXG5cbm1vZHVsZSBTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2UgOlxuc2lnXG4gICgqIFB1YmxpYyBpbnRlcmZhY2UgKilcbiAgdHlwZSAndiBrZXlcbiAgdmFsIG5ld19rZXkgOiB1bml0IC0+IF8ga2V5XG4gIHZhbCBnZXQgOiAndiBrZXkgLT4gJ3Ygb3B0aW9uXG4gIHZhbCB3aXRoX3ZhbHVlIDogJ3Yga2V5IC0+ICd2IG9wdGlvbiAtPiAodW5pdCAtPiAnYikgLT4gJ2JcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgKilcbiAgdmFsIGN1cnJlbnRfc3RvcmFnZSA6IHN0b3JhZ2UgcmVmXG5lbmQgPVxuc3RydWN0XG4gICgqIFRoZSBpZGVhIGJlaGluZCBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UgaXMgdG8gcHJlc2VydmUgc29tZSB2YWx1ZXNcbiAgICAgZHVyaW5nIGEgY2FsbCB0byBbYmluZF0gb3Igb3RoZXIgc2VxdWVudGlhbCBjb21wb3NpdGlvbiBvcGVyYXRpb24sIGFuZFxuICAgICByZXN0b3JlIHRob3NlIHZhbHVlcyBpbiB0aGUgY2FsbGJhY2sgZnVuY3Rpb246XG5cbiAgICAgICBMd3Qud2l0aF92YWx1ZSBteV9rZXkgKFNvbWUgXCJmb29cIikgKGZ1biAoKSAtPlxuICAgICAgIHAgPnw9IGZ1biAoKSAtPlxuICAgICAgIGFzc2VydCAoTHd0LmdldCBteV9rZXkgPSBTb21lIFwiZm9vXCIpKVxuICAgICAgICAgKCogV2lsbCBzdWNjZWVkIGV2ZW4gaWYgdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgbGF0ZXIuICopXG5cbiAgICAgTm90ZSB0aGF0IGl0IGRvZXMgbm90IG1hdHRlciB0aGF0IHRoZSBjYWxsYmFjayBpcyBkZWZpbmVkIHdpdGhpbiBhblxuICAgICBhcmd1bWVudCBvZiBbd2l0aF92YWx1ZV0sIGkuZS4sIHRoaXMgZG9lcyB0aGUgc2FtZTpcblxuICAgICAgIGxldCBmID0gZnVuICgpIC0+IGFzc2VydCAoTHd0LmdldCBteV9rZXkgPSBTb21lIFwiZm9vXCIpIGluXG4gICAgICAgTHd0LndpdGhfdmFsdWUgbXlfa2V5IChTb21lIFwiZm9vXCIpIChmdW4gKCkgLT4gcCA+fD0gZilcblxuICAgICBBbGwgdGhhdCBtYXR0ZXJzIGlzIHRoYXQgdGhlIHRvcC1tb3N0IHNlcXVlbmNpbmcgb3BlcmF0aW9uIChpbiB0aGlzIGNhc2UsXG4gICAgIG1hcCkgaXMgZXhlY3V0ZWQgYnkgdGhhdCBhcmd1bWVudC5cblxuICAgICBUaGlzIGlzIGltcGxlbWVudGVkIHVzaW5nIGEgc2luZ2xlIGdsb2JhbCBoZXRlcm9nZW5lb3VzIGtleS12YWx1ZSBtYXAuXG4gICAgIFNlcXVlbnRpYWwgY29tcG9zaXRpb24gZnVuY3Rpb25zIHNuYXBzaG90IHRoaXMgbWFwIHdoZW4gdGhleSBhcmUgY2FsbGVkLFxuICAgICBhbmQgcmVzdG9yZSB0aGUgc25hcHNob3QgcmlnaHQgYmVmb3JlIGNhbGxpbmcgdGhlIHVzZXIncyBjYWxsYmFjay4gVGhlIHNhbWVcbiAgICAgaGFwcGVucyBmb3IgY2FuY2VsIHRyaWdnZXJzIGFkZGVkIGJ5IFtvbl9jYW5jZWxdLlxuXG4gICAgIE1haW50YWluZXIncyBub3RlOiBJIHRoaW5rIHVzaW5nIHRoaXMgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNjb3VyYWdlZCBpblxuICAgICBuZXcgY29kZS4gKilcblxuICB0eXBlICd2IGtleSA9IHtcbiAgICBpZCA6IGludDtcbiAgICBtdXRhYmxlIHZhbHVlIDogJ3Ygb3B0aW9uO1xuICB9XG5cbiAgbGV0IG5leHRfa2V5X2lkID0gcmVmIDBcblxuICBsZXQgbmV3X2tleSAoKSA9XG4gICAgbGV0IGlkID0gIW5leHRfa2V5X2lkIGluXG4gICAgbmV4dF9rZXlfaWQgOj0gaWQgKyAxO1xuICAgIHtpZCA9IGlkOyB2YWx1ZSA9IE5vbmV9XG5cbiAgbGV0IGN1cnJlbnRfc3RvcmFnZSA9IHJlZiBTdG9yYWdlX21hcC5lbXB0eVxuXG4gIGxldCBnZXQga2V5ID1cbiAgICBpZiBTdG9yYWdlX21hcC5tZW0ga2V5LmlkICFjdXJyZW50X3N0b3JhZ2UgdGhlbiBiZWdpblxuICAgICAgbGV0IHJlZnJlc2ggPSBTdG9yYWdlX21hcC5maW5kIGtleS5pZCAhY3VycmVudF9zdG9yYWdlIGluXG4gICAgICByZWZyZXNoICgpO1xuICAgICAgbGV0IHZhbHVlID0ga2V5LnZhbHVlIGluXG4gICAgICBrZXkudmFsdWUgPC0gTm9uZTtcbiAgICAgIHZhbHVlXG4gICAgZW5kXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB3aXRoX3ZhbHVlIGtleSB2YWx1ZSBmID1cbiAgICBsZXQgbmV3X3N0b3JhZ2UgPVxuICAgICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgbGV0IHJlZnJlc2ggPSBmdW4gKCkgLT4ga2V5LnZhbHVlIDwtIHZhbHVlIGluXG4gICAgICAgIFN0b3JhZ2VfbWFwLmFkZCBrZXkuaWQgcmVmcmVzaCAhY3VycmVudF9zdG9yYWdlXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgU3RvcmFnZV9tYXAucmVtb3ZlIGtleS5pZCAhY3VycmVudF9zdG9yYWdlXG4gICAgaW5cblxuICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBuZXdfc3RvcmFnZTtcbiAgICB0cnlcbiAgICAgIGxldCByZXN1bHQgPSBmICgpIGluXG4gICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgIHJlc3VsdFxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgIHJhaXNlIGV4blxuZW5kXG5pbmNsdWRlIFNlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZVxuXG5cblxubW9kdWxlIFBlbmRpbmdfY2FsbGJhY2tzIDpcbnNpZ1xuICAoKiBNdXRhdGluZyBjYWxsYmFjayBsaXN0cyBhdHRhY2hlZCB0byBwZW5kaW5nIHByb21pc2VzICopXG4gIHZhbCBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIDpcbiAgICAnYSBjYWxsYmFja3MgLT4gJ2EgcmVndWxhcl9jYWxsYmFjayAtPiB1bml0XG4gIHZhbCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiA6XG4gICAgJ2EgdCBsaXN0IC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX3JlbW92ZV9mdW5jdGlvbiA6XG4gICAgJ2EgdCBsaXN0IC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gY2FuY2VsX2NhbGxiYWNrXG4gIHZhbCBhZGRfY2FuY2VsX2NhbGxiYWNrIDogJ2EgY2FsbGJhY2tzIC0+IGNhbmNlbF9jYWxsYmFjayAtPiB1bml0XG4gIHZhbCBtZXJnZV9jYWxsYmFja3MgOiBmcm9tOidhIGNhbGxiYWNrcyAtPiBpbnRvOidhIGNhbGxiYWNrcyAtPiB1bml0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBjb25jYXRfcmVndWxhcl9jYWxsYmFja3MgbDEgbDIgPVxuICAgIGJlZ2luIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHksIF8gLT4gbDJcbiAgICB8IF8sIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPiBsMVxuICAgIHwgXywgXyAtPiBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChsMSwgbDIpXG4gICAgZW5kIFtAb2NhbWwud2FybmluZyBcIi00XCJdXG5cbiAgbGV0IGNvbmNhdF9jYW5jZWxfY2FsbGJhY2tzIGwxIGwyID1cbiAgICBiZWdpbiBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHksIF8gLT4gbDJcbiAgICB8IF8sIENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5IC0+IGwxXG4gICAgfCBfLCBfIC0+IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCAobDEsIGwyKVxuICAgIGVuZCBbQG9jYW1sLndhcm5pbmcgXCItNFwiXVxuXG4gICgqIEluIGEgY2FsbGJhY2sgbGlzdCwgZmlsdGVycyBvdXQgY2VsbHMgb2YgZXhwbGljaXRseSByZW1vdmFibGUgY2FsbGJhY2tzXG4gICAgIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQuICopXG4gIGxldCByZWMgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgPSBmdW5jdGlvblxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIHtjb250ZW50cyA9IE5vbmV9IC0+XG4gICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcblxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIHtjb250ZW50cyA9IFNvbWUgX31cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgX1xuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IGFzIGNhbGxiYWNrcyAtPlxuICAgICAgY2FsbGJhY2tzXG5cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGwxLCBsMikgLT5cbiAgICAgIGxldCBsMSA9IGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzIGwxIGluXG4gICAgICBsZXQgbDIgPSBjbGVhbl91cF9jYWxsYmFja19jZWxscyBsMiBpblxuICAgICAgY29uY2F0X3JlZ3VsYXJfY2FsbGJhY2tzIGwxIGwyXG5cbiAgKCogU2VlIFtjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsXSBhbmQgW21lcmdlX2NhbGxiYWNrc10uICopXG4gIGxldCBjbGVhbnVwX3Rocm90dGxlID0gNDJcblxuICAoKiBFeHBsaWNpdGx5IHJlbW92YWJsZSBjYWxsYmFja3MgYXJlIGFkZGVkIChtYWlubHkpIGJ5IFtMd3QuY2hvb3NlXSBhbmQgaXRzXG4gICAgIHNpbWlsYXIgZnVuY3Rpb25zLiBJbiBbTHd0LmNob29zZSBbcDsgcCddXSwgaWYgW3AnXSByZXNvbHZlcyBmaXJzdCwgdGhlXG4gICAgIGNhbGxiYWNrIGFkZGVkIGJ5IFtMd3QuY2hvb3NlXSB0byBbcF0gaXMgcmVtb3ZlZC5cblxuICAgICBUaGUgcmVtb3ZhbCBpdHNlbGYgaXMgYWNjb21wbGlzaGVkIHdoZW4gdGhpcyBmdW5jdGlvbiBjbGVhcnMgdGhlIHJlZmVyZW5jZVxuICAgICBjZWxsIFtjZWxsXSwgd2hpY2ggY29udGFpbnMgdGhlIHJlZmVyZW5jZSB0byB0aGF0IGNhbGxiYWNrLlxuXG4gICAgIElmIFtwXSBpcyBhIGxvbmctcGVuZGluZyBwcm9taXNlIHRoYXQgcmVwZWF0ZWRseSBwYXJ0aWNpcGF0ZXMgaW5cbiAgICAgW0x3dC5jaG9vc2VdLCBwZXJoYXBzIGluIGEgbG9vcCwgaXQgd2lsbCBhY2N1bXVsYXRlIGEgbGFyZ2UgbnVtYmVyIG9mXG4gICAgIGNsZWFyZWQgcmVmZXJlbmNlIGNlbGxzIGluIHRoaXMgZmFzaGlvbi4gVG8gYXZvaWQgYSBtZW1vcnkgbGVhaywgdGhleSBtdXN0XG4gICAgIGJlIGNsZWFuZWQgdXAuIEhvd2V2ZXIsIHRoZSBjZWxscyBhcmUgbm90IGNsZWFuZWQgdXAgb24gKmV2ZXJ5KiByZW1vdmFsLFxuICAgICBwcmVzdW1hYmx5IGJlY2F1c2Ugc2Nhbm5pbmcgdGhlIGNhbGxiYWNrIGxpc3QgdGhhdCBvZnRlbiwgYW5kIHJlYnVpbGRpbmdcbiAgICAgaXQsIGNhbiBnZXQgZXhwZW5zaXZlLlxuXG4gICAgIENsZWFudXAgaXMgdGhyb3R0bGVkIGJ5IG1haW50YWluaW5nIGEgY291bnRlciwgW2NsZWFudXBzX2RlZmVycmVkXSwgb24gZWFjaFxuICAgICBwZW5kaW5nIHByb21pc2UuIFRoZSBjb3VudGVyIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSB0aGlzIGZ1bmN0aW9uIHdhbnRzXG4gICAgIHRvIGNsZWFuIHRoZSBjYWxsYmFjayBsaXN0IChyaWdodCBhZnRlciBjbGVhcmluZyBhIGNlbGwpLiBXaGVuIHRoZSBjb3VudGVyXG4gICAgIHJlYWNoZXMgW2NsZWFudXBfdGhyb3R0bGVdLCB0aGUgY2FsbGJhY2sgbGlzdCBpcyBhY3R1YWxseSBzY2FubmVkIGFuZFxuICAgICBjbGVhcmVkIGNhbGxiYWNrIGNlbGxzIGFyZSByZW1vdmVkLiAqKVxuICBsZXQgY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbCBjZWxsIH5vcmlnaW5hbGx5X2FkZGVkX3RvOnBzID1cbiAgICBjZWxsIDo9IE5vbmU7XG5cbiAgICAoKiBHbyB0aHJvdWdoIHRoZSBwcm9taXNlcyB0aGUgY2VsbCBoYWQgb3JpZ2luYWxseSBiZWVuIGFkZGVkIHRvLCBhbmQgZWl0aGVyXG4gICAgICAgZGVmZXIgYSBjbGVhbnVwLCBvciBhY3R1YWxseSBjbGVhbiB1cCB0aGVpciBjYWxsYmFjayBsaXN0cy4gKilcbiAgICBwcyB8PiBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgKCogU29tZSBvZiB0aGUgcHJvbWlzZXMgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIHJlc29sdmVkIGF0IHRoZSB0aW1lIHRoaXNcbiAgICAgICAgIGZ1bmN0aW9uIGlzIGNhbGxlZC4gKilcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT4gKClcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPiAoKVxuXG4gICAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICAgIG1hdGNoIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyB3aXRoXG4gICAgICAgICgqIElmIHRoZSBwcm9taXNlIGhhcyBvbmx5IG9uZSByZWd1bGFyIGNhbGxiYWNrLCBhbmQgaXQgaXMgcmVtb3ZhYmxlLCBpdFxuICAgICAgICAgICBtdXN0IGhhdmUgYmVlbiB0aGUgY2VsbCBjbGVhcmVkIGluIHRoaXMgZnVuY3Rpb24sIGFib3ZlLiBJbiB0aGF0XG4gICAgICAgICAgIGNhc2UsIGp1c3Qgc2V0IGl0cyBjYWxsYmFjayBsaXN0IHRvIGVtcHR5LiAqKVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBfIC0+XG4gICAgICAgICAgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIDwtIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuXG4gICAgICAgICgqIE1haW50YWluZXIncyBub3RlOiBJIHRoaW5rIHRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IHRyeSB0byB0cmlnZ2VyIGFcbiAgICAgICAgICAgY2xlYW51cCBpbiB0aGUgZmlyc3QgdHdvIGNhc2VzLCBidXQgSSBhbSBwcmVzZXJ2aW5nIHRoZW0gZm9yIG5vdywgYXNcbiAgICAgICAgICAgdGhpcyBpcyBob3cgdGhlIGNvZGUgd2FzIHdyaXR0ZW4gaW4gdGhlIHBhc3QuICopXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBfXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBfIC0+XG4gICAgICAgICAgbGV0IGNsZWFudXBzX2RlZmVycmVkID0gY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkICsgMSBpblxuICAgICAgICAgIGlmIGNsZWFudXBzX2RlZmVycmVkID4gY2xlYW51cF90aHJvdHRsZSB0aGVuIGJlZ2luXG4gICAgICAgICAgICBjYWxsYmFja3MuY2xlYW51cHNfZGVmZXJyZWQgPC0gMDtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LVxuICAgICAgICAgICAgICBjbGVhbl91cF9jYWxsYmFja19jZWxscyBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3NcbiAgICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgICAgY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkIDwtIGNsZWFudXBzX2RlZmVycmVkKVxuXG4gICgqIENvbmNhdGVuYXRlcyBib3RoIGtpbmRzIG9mIGNhbGxiYWNrcyBvbiBbfmZyb21dIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxpc3RzXG4gICAgIG9mIFt+aW50b10uIFRoZSBjYWxsYmFjayBsaXN0cyBvbiBbfmZyb21dIGFyZSAqbm90KiB0aGVuIGNsZWFyZWQsIGJlY2F1c2VcbiAgICAgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBieSBbU2VxdWVudGlhbF9jb21wb3NpdGlvbi5tYWtlX2ludG9fcHJveHldLFxuICAgICB3aGljaCBpbW1lZGlhdGVseSBjaGFuZ2VzIHRoZSBzdGF0ZSBvZiBbfmZyb21dIGFuZCBsb3NlcyByZWZlcmVuY2VzIHRvIHRoZVxuICAgICBvcmlnaW5hbCBjYWxsYmFjayBsaXN0cy5cblxuICAgICBUaGUgW2NsZWFudXBzX2RlZmVycmVkXSBmaWVsZHMgb2YgYm90aCBwcm9taXNlcyBhcmUgc3VtbWVkLCBhbmQgaWYgdGhlIHN1bVxuICAgICBleGNlZWRzIFtjbGVhbnVwX3Rocm90dGxlXSwgYSBjbGVhbnVwIG9mIHJlZ3VsYXIgY2FsbGJhY2tzIGlzIHRyaWdnZXJlZC5cbiAgICAgVGhpcyBpcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrczsgc2VlXG4gICAgIFtjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsXS4gKilcbiAgbGV0IG1lcmdlX2NhbGxiYWNrcyB+ZnJvbSB+aW50byA9XG4gICAgbGV0IHJlZ3VsYXJfY2FsbGJhY2tzID1cbiAgICAgIGNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyBpbnRvLnJlZ3VsYXJfY2FsbGJhY2tzIGZyb20ucmVndWxhcl9jYWxsYmFja3MgaW5cbiAgICBsZXQgY2xlYW51cHNfZGVmZXJyZWQgPSBpbnRvLmNsZWFudXBzX2RlZmVycmVkICsgZnJvbS5jbGVhbnVwc19kZWZlcnJlZCBpblxuXG4gICAgbGV0IHJlZ3VsYXJfY2FsbGJhY2tzLCBjbGVhbnVwc19kZWZlcnJlZCA9XG4gICAgICBpZiBjbGVhbnVwc19kZWZlcnJlZCA+IGNsZWFudXBfdGhyb3R0bGUgdGhlblxuICAgICAgICBjbGVhbl91cF9jYWxsYmFja19jZWxscyByZWd1bGFyX2NhbGxiYWNrcywgMFxuICAgICAgZWxzZVxuICAgICAgICByZWd1bGFyX2NhbGxiYWNrcywgY2xlYW51cHNfZGVmZXJyZWRcbiAgICBpblxuXG4gICAgbGV0IGNhbmNlbF9jYWxsYmFja3MgPVxuICAgICAgY29uY2F0X2NhbmNlbF9jYWxsYmFja3MgaW50by5jYW5jZWxfY2FsbGJhY2tzIGZyb20uY2FuY2VsX2NhbGxiYWNrcyBpblxuXG4gICAgaW50by5yZWd1bGFyX2NhbGxiYWNrcyA8LSByZWd1bGFyX2NhbGxiYWNrcztcbiAgICBpbnRvLmNhbmNlbF9jYWxsYmFja3MgPC0gY2FuY2VsX2NhbGxiYWNrcztcbiAgICBpbnRvLmNsZWFudXBzX2RlZmVycmVkIDwtIGNsZWFudXBzX2RlZmVycmVkXG5cblxuXG4gICgqIEdlbmVyYWwsIGludGVybmFsLCBmdW5jdGlvbiBmb3IgYWRkaW5nIGEgcmVndWxhciBjYWxsYmFjay4gKilcbiAgbGV0IGFkZF9yZWd1bGFyX2NhbGxiYWNrX2xpc3Rfbm9kZSBjYWxsYmFja3Mgbm9kZSA9XG4gICAgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIDwtXG4gICAgICBtYXRjaCBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3Mgd2l0aFxuICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgbm9kZVxuICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIF9cbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIF9cbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBfIGFzIGV4aXN0aW5nIC0+XG4gICAgICAgIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgKG5vZGUsIGV4aXN0aW5nKVxuXG4gIGxldCBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIGNhbGxiYWNrcyBmID1cbiAgICBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGVcbiAgICAgIGNhbGxiYWNrcyAoUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBmKVxuXG4gICgqIEFkZHMgW2NhbGxiYWNrXSBhcyByZW1vdmFibGUgdG8gZWFjaCBwcm9taXNlIGluIFtwc10uIFRoZSBmaXJzdCBwcm9taXNlIGluXG4gICAgIFtwc10gdG8gdHJpZ2dlciBbY2FsbGJhY2tdIHJlbW92ZXMgW2NhbGxiYWNrXSBmcm9tIHRoZSBvdGhlciBwcm9taXNlczsgdGhpc1xuICAgICBndWFyYW50ZWVzIHRoYXQgW2NhbGxiYWNrXSBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlLiBBbGwgdGhlIHByb21pc2VzIGluIFtwc11cbiAgICAgbXVzdCBiZSBwZW5kaW5nLlxuXG4gICAgIFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGluZGlyZWN0bHkgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFtMd3QuY2hvb3NlXSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuICopXG4gIGxldCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfY2VsbCBwcyBmID1cbiAgICBsZXQgcmVjIGNlbGwgPSByZWYgKFNvbWUgc2VsZl9yZW1vdmluZ19jYWxsYmFja193cmFwcGVyKVxuICAgIGFuZCBzZWxmX3JlbW92aW5nX2NhbGxiYWNrX3dyYXBwZXIgcmVzdWx0ID1cbiAgICAgIGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwcztcbiAgICAgIGYgcmVzdWx0XG4gICAgaW5cblxuICAgIGxldCBub2RlID0gUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIGNlbGwgaW5cbiAgICBwcyB8PiBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPiBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUgY2FsbGJhY2tzIG5vZGVcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFJlamVjdGVkIF8gLT4gYXNzZXJ0IGZhbHNlKTtcblxuICAgIGNlbGxcblxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgZiA9XG4gICAgaWdub3JlIChhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfY2VsbCBwcyBmKVxuXG4gICgqIFRoaXMgaXMgYmFzaWNhbGx5IGp1c3QgdG8gc3VwcG9ydCBbTHd0LnByb3RlY3RlZF0sIHdoaWNoIG5lZWRzIHRvIHJlbW92ZVxuICAgICB0aGUgY2FsbGJhY2sgaW4gY2lyY3Vtc3RhbmNlcyBvdGhlciB0aGFuIHRoZSBjYWxsYmFjayBiZWluZyBjYWxsZWQuICopXG4gIGxldCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfcmVtb3ZlX2Z1bmN0aW9uIHBzIGYgPVxuICAgIGxldCBjZWxsID0gYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZiBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbCBjZWxsIH5vcmlnaW5hbGx5X2FkZGVkX3RvOnBzXG5cbiAgbGV0IGFkZF9jYW5jZWxfY2FsbGJhY2sgY2FsbGJhY2tzIGYgPVxuICAgIGxldCBub2RlID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgKCFjdXJyZW50X3N0b3JhZ2UsIGYpIGluXG5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgbWF0Y2ggY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3Mgd2l0aFxuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPlxuICAgICAgICBub2RlXG5cbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgX1xuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBfXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCBfIC0+XG4gICAgICAgIENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCAobm9kZSwgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MpXG5lbmRcbm9wZW4gUGVuZGluZ19jYWxsYmFja3NcblxuXG5cbm1vZHVsZSBSZXNvbHV0aW9uX2xvb3AgOlxuc2lnXG4gICgqIEFsbCB1c2VyLXByb3ZpZGVkIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGJ5IEx3dCBvbmx5IHRocm91Z2ggdGhpcyBtb2R1bGUuIEl0XG4gICAgIHRyYWNrcyB0aGUgY3VycmVudCBjYWxsYmFjayBzdGFjayBkZXB0aCwgYW5kIGRlY2lkZXMgd2hldGhlciBlYWNoIGNhbGxiYWNrXG4gICAgIGNhbGwgc2hvdWxkIGJlIGRlZmVycmVkIG9yIG5vdC4gKilcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgdXNlZCBvbmx5IGluIHRoaXMgbW9kdWxlIEx3dCAqKVxuICB2YWwgcmVzb2x2ZSA6XG4gICAgP2FsbG93X2RlZmVycmluZzpib29sIC0+XG4gICAgP21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aDppbnQgLT5cbiAgICAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UgLT5cbiAgICAnYSByZXNvbHZlZF9zdGF0ZSAtPlxuICAgICAgKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVfY2hhbmdlZFxuXG4gIHZhbCBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0gOlxuICAgID9hbGxvd19kZWZlcnJpbmc6Ym9vbCAtPlxuICAgID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6aW50IC0+XG4gICAgKCdhIGNhbGxiYWNrcykgLT5cbiAgICAnYSByZXNvbHZlZF9zdGF0ZSAtPlxuICAgICAgdW5pdFxuXG4gIHZhbCBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQgOlxuICAgID9ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6Ym9vbCAtPlxuICAgIGNhbGxiYWNrOih1bml0IC0+ICdhKSAtPlxuICAgIGlmX2RlZmVycmVkOih1bml0IC0+ICdhICogJ2IgcmVndWxhcl9jYWxsYmFjayAqICdiIHJlc29sdmVkX3N0YXRlKSAtPlxuICAgICAgJ2FcblxuICB2YWwgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSBleHBvc2VkIHRvIG90aGVyIG1vZHVsZXMgaW4gTHd0ICopXG4gIHZhbCBhYmFuZG9uX3dha2V1cHMgOiB1bml0IC0+IHVuaXRcblxuICAoKiBQdWJsaWMgaW50ZXJmYWNlICopXG4gIGV4Y2VwdGlvbiBDYW5jZWxlZFxuXG4gIHZhbCBhc3luY19leGNlcHRpb25faG9vayA6IChleG4gLT4gdW5pdCkgcmVmXG5lbmQgPVxuc3RydWN0XG4gICgqIFdoZW4gTHd0IG5lZWRzIHRvIGNhbGwgYSBjYWxsYmFjaywgaXQgZW50ZXJzIHRoZSByZXNvbHV0aW9uIGxvb3AuIFRoaXNcbiAgICAgdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBMd3Qgc2V0cyB0aGUgc3RhdGUgb2Ygb25lIHByb21pc2UgdG8gW0Z1bGZpbGxlZCBfXVxuICAgICBvciBbUmVqZWN0ZWQgX10uIFRoZSBjYWxsYmFja3MgdGhhdCB3ZXJlIGF0dGFjaGVkIHRvIHRoZSBwcm9taXNlIHdoZW4gaXRcbiAgICAgd2FzIHBlbmRpbmcgbXVzdCB0aGVuIGJlIGNhbGxlZC5cblxuICAgICBUaGlzIGFsc28gaGFwcGVucyBpbiBhIGZldyBvdGhlciBzaXR1YXRpb25zLiBGb3IgZXhhbXBsZSwgd2hlbiBbTHd0LmJpbmRdXG4gICAgIGlzIGNhbGxlZCBvbiBhIHByb21pc2UsIGJ1dCB0aGF0IHByb21pc2UgaXMgYWxyZWFkeSByZXNvbHZlZCwgdGhlIGNhbGxiYWNrXG4gICAgIHBhc3NlZCB0byBbYmluZF0gbXVzdCBiZSBjYWxsZWQuXG5cbiAgICAgVGhlIGNhbGxiYWNrcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSByZXNvbHV0aW9uIGxvb3AgbWlnaHQgcmVzb2x2ZSBtb3JlXG4gICAgIHByb21pc2VzLCB0cmlnZ2VyaW5nIG1vcmUgY2FsbGJhY2tzLCBhbmQgc28gb24uIFRoaXMgaXMgd2hhdCBtYWtlcyB0aGVcbiAgICAgcmVzb2x1dGlvbiBsb29wIGEge2UgbG9vcH0uXG5cbiAgICAgTHd0IGdlbmVyYWxseSB0cmllcyB0byBjYWxsIGVhY2ggY2FsbGJhY2sgaW1tZWRpYXRlbHkuIEhvd2V2ZXIsIHRoaXMgY2FuXG4gICAgIGxlYWQgdG8gYSBwcm9ncmVzc2l2ZSBkZWVwZW5pbmcgb2YgdGhlIGNhbGwgc3RhY2ssIHVudGlsIHRoZXJlIGlzIGEgc3RhY2tcbiAgICAgb3ZlcmZsb3cuIFRoaXMgY2FuJ3QgYmUgYXZvaWRlZCBieSBkb2luZyB0YWlsIGNhbGxzLCBiZWNhdXNlIEx3dCBhbHdheXNcbiAgICAgbmVlZHMgdG8gZG8gZXhjZXB0aW9uIGhhbmRsaW5nIGFyb3VuZCBjYWxsYmFja3MgY2FsbHM6IGVhY2ggY2FsbGJhY2sgY2FsbFxuICAgICBpcyBmb2xsb3dlZCBieSBhbiBleGNlcHRpb24gaGFuZGxlci4gSW5zdGVhZCwgd2hhdCBMd3QgZG9lcyBpcyB0cmFjayB0aGVcbiAgICAgY3VycmVudCBjYWxsYmFjayBjYWxsIGRlcHRoLiBPbmNlIHRoYXQgZGVwdGggcmVhY2hlcyBhIGNlcnRhaW4gbnVtYmVyLFxuICAgICBbZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGhdLCBkZWZpbmVkIGJlbG93LCBmdXJ0aGVyIGNhbGxiYWNrc1xuICAgICBhcmUgZGVmZXJyZWQgaW50byBhIHF1ZXVlIGluc3RlYWQuIFRoYXQgcXVldWUgaXMgZHJhaW5lZCB3aGVuIEx3dCBleGl0c1xuICAgICBmcm9tIHRoZSB0b3AtbW9zdCBjYWxsYmFjayBjYWxsIHRoYXQgdHJpZ2dlcmVkIHRoZSByZXNvbHV0aW9uIGxvb3AgaW4gdGhlXG4gICAgIGZpcnN0IHBsYWNlLlxuXG4gICAgIFRvIGVuc3VyZSB0aGF0IHRoaXMgZGVmZXJyYWwgbWVjaGFuaXNtIGlzIGFsd2F5cyBwcm9wZXJseSBpbnZva2VkLCBhbGxcbiAgICAgY2FsbGJhY2tzIGNhbGxlZCBieSBMd3QgYXJlIGNhbGxlZCB0aHJvdWdoIG9uZSBvZiB0aHJlZSBmdW5jdGlvbnMgcHJvdmlkZWRcbiAgICAgYnkgdGhpcyBtb2R1bGU6XG5cbiAgICAgLSBbcmVzb2x2ZV0sIHdoaWNoIGNhbGxzIGFsbCB0aGUgY2FsbGJhY2tzIGFzc29jaWF0ZWQgdG8gYSBwZW5kaW5nIHByb21pc2VcbiAgICAgICAoYW5kIHJlc29sdmVzIGl0LCBjaGFuZ2luZyBpdHMgc3RhdGUpLlxuICAgICAtIFtydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1dLCB3aGljaCBpcyBpbnRlcm5hbGx5IHVzZWQgYnkgW3Jlc29sdmVdIHRvXG4gICAgICAgY2FsbCBjYWxsYmFja3MgdGhhdCBhcmUgaW4gYSByZWNvcmQgb2YgdHlwZSBbJ2EgY2FsbGJhY2tzXSwgd2hpY2ggcmVjb3Jkc1xuICAgICAgIGFyZSBhc3NvY2lhdGVkIHdpdGggcGVuZGluZyBwcm9taXNlcy4gVGhpcyBmdW5jdGlvbiBpcyBleHBvc2VkIGJlY2F1c2VcbiAgICAgICB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBbTHd0LmNhbmNlbF0gbmVlZHMgdG8gY2FsbCBpdCBkaXJlY3RseS5cbiAgICAgICBQcm9taXNlIHJlc29sdXRpb24gYW5kIGNhbGxiYWNrIGNhbGxpbmcgYXJlIHNlcGFyYXRlZCBpbiBhIHVuaXF1ZSB3YXkgaW5cbiAgICAgICBbY2FuY2VsXS5cbiAgICAgLSBbcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XSwgd2hpY2ggaXMgdXNlZCBieSBbTHd0LmJpbmRdIGFuZCBzaW1pbGFyXG4gICAgICAgZnVuY3Rpb25zIHRvIGNhbGwgc2luZ2xlIGNhbGxiYWNrcyB3aGVuIHRoZSBwcm9taXNlcyBwYXNzZWQgdG9cbiAgICAgICBbTHd0LmJpbmRdLCBldGMuLCBhcmUgYWxyZWFkeSByZXNvbHZlZC5cblxuICAgICBDdXJyZW50IEx3dCBhY3R1YWxseSBoYXMgYSBtZXNzeSBtaXggb2YgY2FsbGJhY2stY2FsbGluZyBiZWhhdmlvcnMuIEZvclxuICAgICBleGFtcGxlLCBbTHd0LmJpbmRdIGlzIGV4cGVjdGVkIHRvIGFsd2F5cyBjYWxsIGl0cyBjYWxsYmFjayBpbW1lZGlhdGVseSxcbiAgICAgd2hpbGUgW0x3dC53YWtldXBfbGF0ZXJdIGlzIGV4cGVjdGVkIHRvIGRlZmVyIGFsbCBjYWxsYmFja3Mgb2YgdGhlIHByb21pc2VcbiAgICAgcmVzb2x2ZWQsIHtlIHVubGVzc30gTHd0IGlzIG5vdCBhbHJlYWR5IGluc2lkZSB0aGUgcmVzb2x1dGlvbiBsb29wLlxuXG4gICAgIFdlIHBsYW5uZWQgdG8gbWFrZSB0aGVzZSBiZWhhdmlvcnMgdW5pZm9ybSBpbiBMd3QgNC4wLjAsIGJ1dCBkZWNpZGVkXG4gICAgIGFnYWluc3QgaXQgZHVlIHRvIHRoZSByaXNrIG9mIGJyZWFraW5nIHVzZXJzLiBTZWVcblxuICAgICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzUwMFxuICAgICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzUxOVxuXG4gICAgIEFzIHBhcnQgb2YgdGhlIHByZXBhcmF0aW9uIGZvciB0aGUgY2hhbmdlLCB0aGUgYWJvdmUgY2FsbGJhY2staW52b2tpbmdcbiAgICAgZnVuY3Rpb25zIHN1cHBvcnQgc2V2ZXJhbCBvcHRpb25hbCBhcmd1bWVudHMgdG8gZW11bGF0ZSB0aGUgdmFyaW91c1xuICAgICBiZWhhdmlvcnMuIFdlIGRlY2lkZWQgbm90IHRvIHJlbW92ZSB0aGlzIG1hY2hpbmVyeSwgYmVjYXVzZSB3ZSBtaWdodCB3YW50XG4gICAgIHRvIGV4cG9zZSBkaWZmZXJlbnQgQVBJcyB0byBMd3QgaW4gdGhlIGZ1dHVyZS5cblxuICAgICAtIFt+YWxsb3dfZGVmZXJyaW5nOmZhbHNlXSBhbGxvd3MgaWdub3JpbmcgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoLCBhbmRcbiAgICAgICBjYWxsaW5nIHRoZSBjYWxsYmFja3MgaW1tZWRpYXRlbHkuIFRoaXMgZW11bGF0ZXMgdGhlIG9sZCByZXNvbHV0aW9uXG4gICAgICAgYmVoYXZpb3IuXG4gICAgIC0gW35tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6MV0gYWxsb3dzIGxpbWl0aW5nIHRoZSBkZXB0aCB3aGljaFxuICAgICAgIHRyaWdnZXJzIGRlZmVycmFsIG9uIGEgcGVyLWNhbGwtc2l0ZSBiYXNpcy4gVGhpcyBpcyB1c2VkIGJ5XG4gICAgICAgW0x3dC53YWtldXBfbGF0ZXJdLlxuICAgICAtIFt+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVdIGlzIGxpa2VcbiAgICAgICBbfmFsbG93X2RlZmVycmluZzpmYWxzZV0sIHdoaWNoIGlnbm9yZXMgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoLlxuICAgICAgIEhvd2V2ZXIsIHRvIGVuc3VyZSB0aGF0IHRoZSBjYWxsYmFjayBpcyB0YWlsLWNhbGxlZCwgTHd0IGRvZXNuJ3QgZXZlblxuICAgICAgIHVwZGF0ZSB0aGUgY2FsbGJhY2sgc3RhY2sgZGVwdGggZm9yIHRoZSBiZW5lZml0IG9mICpvdGhlciogY2FsbGJhY2tcbiAgICAgICBjYWxscy4gSXQganVzdCBibGluZGx5IGNhbGxzIHRoZSBjYWxsYmFjay5cblxuICAgICBTZWUgZGlzY3Vzc2lvbiBvZiBjYWxsYmFjay1jYWxsaW5nIHNlbWFudGljcyBpbjpcblxuICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9pc3N1ZXMvMzI5XG5cbiAgICAgKiBDb250ZXh0XG5cbiAgICAgVGhlIHJlc29sdXRpb24gbG9vcCBlZmZlY3RpdmVseSBoYW5kbGVzIGFsbCBwcm9taXNlcyB0aGF0IGNhbiBiZSByZXNvbHZlZFxuICAgICBpbW1lZGlhdGVseSwgd2l0aG91dCBibG9ja2luZyBvbiBJL08uIEEgY29tcGxldGUgcHJvZ3JhbSB0aGF0IGRvZXMgSS9PXG4gICAgIGNhbGxzIFtMd3RfbWFpbi5ydW5dLiBTZWUgXCJObyBJL09cIiBpbiB0aGUgT3ZlcnZpZXcuICopXG5cblxuXG4gIGxldCBhc3luY19leGNlcHRpb25faG9vayA9XG4gICAgcmVmIChmdW4gZXhuIC0+XG4gICAgICBwcmVycl9zdHJpbmcgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiO1xuICAgICAgcHJlcnJfc3RyaW5nIChQcmludGV4Yy50b19zdHJpbmcgZXhuKTtcbiAgICAgIHByZXJyX2NoYXIgJ1xcbic7XG4gICAgICBQcmludGV4Yy5wcmludF9iYWNrdHJhY2Ugc3RkZXJyO1xuICAgICAgZmx1c2ggc3RkZXJyO1xuICAgICAgZXhpdCAyKVxuXG4gIGxldCBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHYgPVxuICAgICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNhcmUgaWYgW2ZdIGV2YWx1YXRlcyB0byBhIHByb21pc2UuIEluXG4gICAgICAgcGFydGljdWxhciwgaWYgW2Ygdl0gZXZhbHVhdGVzIHRvIFtwXSBhbmQgW3BdIGlzIGFscmVhZHkgcmVqZWN0ZWQgb3Igd2lsbFxuICAgICAgIGJlIHJlamVjdCBsYXRlciwgaXQgaXMgbm90IHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uIHRvIHBhc3NcbiAgICAgICB0aGUgZXhjZXB0aW9uIHRvIFshYXN5bmNfZXhjZXB0aW9uX2hvb2tdLiAqKVxuICAgIHRyeSBmIHZcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuXG5cblxuICBleGNlcHRpb24gQ2FuY2VsZWRcblxuXG5cbiAgKCogUnVucyB0aGUgY2FsbGJhY2tzIChmb3JtZXJseSkgYXNzb2NpYXRlZCB0byBhIHByb21pc2UuIENhbmNlbCBjYWxsYmFja3MgYXJlXG4gICAgIHJ1biBmaXJzdCwgaWYgdGhlIHByb21pc2Ugd2FzIGNhbmNlbGVkLiBUaGVzZSBhcmUgZm9sbG93ZWQgYnkgcmVndWxhclxuICAgICBjYWxsYmFja3MuXG5cbiAgICAgVGhlIHJlYXNvbiBmb3IgdGhlIFwiZm9ybWVybHlcIiBpcyB0aGF0IHRoZSBwcm9taXNlJ3Mgc3RhdGUgaGFzIGFscmVhZHkgYmVlblxuICAgICBzZXQgdG8gW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10sIHNvIHRoZSBjYWxsYmFja3MgYXJlIG5vIGxvbmdlclxuICAgICByZWFjaGFibGUgdGhyb3VnaCB0aGUgcHJvbWlzZSByZWZlcmVuY2UuIFRoaXMgaXMgd2h5IHRoZSBkaXJlY3QgW2NhbGxiYWNrc11cbiAgICAgcmVjb3JkIG11c3QgYmUgZ2l2ZW4gdG8gdGhpcyBmdW5jdGlvbi4gKilcbiAgbGV0IHJ1bl9jYWxsYmFja3NcbiAgICAgIChjYWxsYmFja3MgOiAnYSBjYWxsYmFja3MpXG4gICAgICAocmVzdWx0IDogJ2EgcmVzb2x2ZWRfc3RhdGUpIDogdW5pdCA9XG5cbiAgICBsZXQgcnVuX2NhbmNlbF9jYWxsYmFja3MgZnMgPVxuICAgICAgbGV0IHJlYyBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdCA9XG4gICAgICAgIG1hdGNoIGZzIHdpdGhcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPlxuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgKHN0b3JhZ2UsIGYpIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHN0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKTtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGUgLT5cbiAgICAgICAgICBMd3Rfc2VxdWVuY2UucmVtb3ZlIG5vZGU7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGZzLCBmcycpIC0+XG4gICAgICAgICAgaXRlcl9jYWxsYmFja19saXN0IGZzIChmcyc6OnJlc3QpXG5cbiAgICAgIGFuZCBpdGVyX2xpc3QgcmVzdCA9XG4gICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgZnM6OnJlc3QgLT4gaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3RcblxuICAgICAgaW5cblxuICAgICAgaXRlcl9jYWxsYmFja19saXN0IGZzIFtdXG4gICAgaW5cblxuICAgIGxldCBydW5fcmVndWxhcl9jYWxsYmFja3MgZnMgPVxuICAgICAgbGV0IHJlYyBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdCA9XG4gICAgICAgIG1hdGNoIGZzIHdpdGhcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgZiAtPlxuICAgICAgICAgIGYgcmVzdWx0O1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrXG4gICAgICAgICAgICB7Y29udGVudHMgPSBOb25lfSAtPlxuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrXG4gICAgICAgICAgICB7Y29udGVudHMgPSBTb21lIGZ9IC0+XG4gICAgICAgICAgZiByZXN1bHQ7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChmcywgZnMnKSAtPlxuICAgICAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyAoZnMnOjpyZXN0KVxuXG4gICAgICBhbmQgaXRlcl9saXN0IHJlc3QgPVxuICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGZzOjpyZXN0IC0+IGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0XG5cbiAgICAgIGluXG5cbiAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyBbXVxuICAgIGluXG5cbiAgICAoKiBQYXR0ZXJuIG1hdGNoaW5nIGlzIG11Y2ggZmFzdGVyIHRoYW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbi4gKilcbiAgICBsZXQgaXNfY2FuY2VsZWQgPVxuICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT4gdHJ1ZVxuICAgICAgfCBSZWplY3RlZCBfIC0+IGZhbHNlXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19jYW5jZWxlZCB0aGVuXG4gICAgICBydW5fY2FuY2VsX2NhbGxiYWNrcyBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcztcbiAgICBydW5fcmVndWxhcl9jYWxsYmFja3MgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzXG5cblxuXG4gIGxldCBkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IDQyXG5cbiAgbGV0IGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IHJlZiAwXG5cbiAgdHlwZSBkZWZlcnJlZF9jYWxsYmFja3MgPVxuICAgIERlZmVycmVkIDogKCdhIGNhbGxiYWNrcyAqICdhIHJlc29sdmVkX3N0YXRlKSAtPiBkZWZlcnJlZF9jYWxsYmFja3NcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBkZWZlcnJlZF9jYWxsYmFja3MgOiBkZWZlcnJlZF9jYWxsYmFja3MgUXVldWUudCA9IFF1ZXVlLmNyZWF0ZSAoKVxuXG4gICgqIEJlZm9yZSBlbnRlcmluZyBhIHJlc29sdXRpb24gbG9vcCwgaXQgaXMgbmVjZXNzYXJ5IHRvIHRha2UgYSBzbmFwc2hvdCBvZlxuICAgICB0aGUgY3VycmVudCBzdGF0ZSBvZiBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UuIFRoaXMgaXMgYmVjYXVzZSBtYW55IG9mXG4gICAgIHRoZSBjYWxsYmFja3MgdGhhdCB3aWxsIGJlIHJ1biB3aWxsIG1vZGlmeSB0aGUgc3RvcmFnZS4gVGhlIHN0b3JhZ2UgaXNcbiAgICAgcmVzdG9yZWQgdG8gdGhlIHNuYXBzaG90IHdoZW4gdGhlIHJlc29sdXRpb24gbG9vcCBpcyBleGl0ZWQuICopXG4gIGxldCBlbnRlcl9yZXNvbHV0aW9uX2xvb3AgKCkgPVxuICAgIGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA6PSAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoICsgMTtcbiAgICBsZXQgc3RvcmFnZV9zbmFwc2hvdCA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cbiAgICBzdG9yYWdlX3NuYXBzaG90XG5cbiAgbGV0IGxlYXZlX3Jlc29sdXRpb25fbG9vcCAoc3RvcmFnZV9zbmFwc2hvdCA6IHN0b3JhZ2UpIDogdW5pdCA9XG4gICAgaWYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IDEgdGhlbiBiZWdpblxuICAgICAgd2hpbGUgbm90IChRdWV1ZS5pc19lbXB0eSBkZWZlcnJlZF9jYWxsYmFja3MpIGRvXG4gICAgICAgIGxldCBEZWZlcnJlZCAoY2FsbGJhY2tzLCByZXN1bHQpID0gUXVldWUucG9wIGRlZmVycmVkX2NhbGxiYWNrcyBpblxuICAgICAgICBydW5fY2FsbGJhY2tzIGNhbGxiYWNrcyByZXN1bHRcbiAgICAgIGRvbmVcbiAgICBlbmQ7XG4gICAgY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIDo9ICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggLSAxO1xuICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzdG9yYWdlX3NuYXBzaG90XG5cbiAgbGV0IHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgZiA9XG4gICAgbGV0IHN0b3JhZ2Vfc25hcHNob3QgPSBlbnRlcl9yZXNvbHV0aW9uX2xvb3AgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICAgIGxlYXZlX3Jlc29sdXRpb25fbG9vcCBzdG9yYWdlX3NuYXBzaG90O1xuICAgIHJlc3VsdFxuXG4gICgqIFRoaXMgaXMgYmFzaWNhbGx5IGEgaGFjayB0byBmaXggaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2lzc3Vlcy80OC5cbiAgICAgSWYgY3VycmVudGx5IHJlc29sdmluZyBwcm9taXNlcywgaXQgaW1tZWRpYXRlbHkgZXhpdHMgYWxsIHJlY3Vyc2l2ZVxuICAgICBlbnRyaWVzIG9mIHRoZSByZXNvbHV0aW9uIGxvb3AsIGdvZXMgdG8gdGhlIHRvcCBsZXZlbCwgcnVucyBhbnkgZGVmZXJyZWRcbiAgICAgY2FsbGJhY2tzLCBhbmQgZXhpdHMgdGhlIHRvcC1sZXZlbCByZXNvbHV0aW9uIGxvb3AuXG5cbiAgICAgVGhlIG5hbWUgc2hvdWxkIHByb2JhYmx5IGJlIFthYmFvbmRvbl9yZXNvbHV0aW9uX2xvb3BdLiAqKVxuICBsZXQgYWJhbmRvbl93YWtldXBzICgpID1cbiAgICBpZiAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIDw+IDAgdGhlblxuICAgICAgbGVhdmVfcmVzb2x1dGlvbl9sb29wIFN0b3JhZ2VfbWFwLmVtcHR5XG5cblxuXG4gIGxldCBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgID8oYWxsb3dfZGVmZXJyaW5nID0gdHJ1ZSlcbiAgICAgID8obWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoID0gZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGgpXG4gICAgICBjYWxsYmFja3MgcmVzdWx0ID1cblxuICAgIGxldCBzaG91bGRfZGVmZXIgPVxuICAgICAgYWxsb3dfZGVmZXJyaW5nXG4gICAgICAmJiAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoID49IG1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgIGluXG5cbiAgICBpZiBzaG91bGRfZGVmZXIgdGhlblxuICAgICAgUXVldWUucHVzaCAoRGVmZXJyZWQgKGNhbGxiYWNrcywgcmVzdWx0KSkgZGVmZXJyZWRfY2FsbGJhY2tzXG4gICAgZWxzZVxuICAgICAgcnVuX2luX3Jlc29sdXRpb25fbG9vcCAoZnVuICgpIC0+XG4gICAgICAgIHJ1bl9jYWxsYmFja3MgY2FsbGJhY2tzIHJlc3VsdClcblxuICBsZXQgcmVzb2x2ZSA/YWxsb3dfZGVmZXJyaW5nID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggcCByZXN1bHQgPVxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBsZXQgcCA9IHNldF9wcm9taXNlX3N0YXRlIHAgcmVzdWx0IGluXG5cbiAgICBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgID9hbGxvd19kZWZlcnJpbmcgP21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCBjYWxsYmFja3MgcmVzdWx0O1xuXG4gICAgcFxuXG4gIGxldCBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgID8ocnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsID0gZmFsc2UpXG4gICAgICB+Y2FsbGJhY2s6ZlxuICAgICAgfmlmX2RlZmVycmVkID1cblxuICAgIGlmIHJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbCB0aGVuXG4gICAgICBmICgpXG5cbiAgICBlbHNlXG4gICAgICBsZXQgc2hvdWxkX2RlZmVyID1cbiAgICAgICAgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgICAgICAgID49IGRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoXG4gICAgICBpblxuXG4gICAgICBpZiBzaG91bGRfZGVmZXIgdGhlbiBiZWdpblxuICAgICAgICBsZXQgaW1tZWRpYXRlX3Jlc3VsdCwgZGVmZXJyZWRfY2FsbGJhY2ssIGRlZmVycmVkX3Jlc3VsdCA9XG4gICAgICAgICAgaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgbGV0IGRlZmVycmVkX3JlY29yZCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVndWxhcl9jYWxsYmFja3MgPVxuICAgICAgICAgICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrXG4gICAgICAgICAgICAgICAgZGVmZXJyZWRfY2FsbGJhY2s7XG4gICAgICAgICAgICBjYW5jZWxfY2FsbGJhY2tzID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgICAgICBob3dfdG9fY2FuY2VsID0gTm90X2NhbmNlbGFibGU7XG4gICAgICAgICAgICBjbGVhbnVwc19kZWZlcnJlZCA9IDBcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIFF1ZXVlLnB1c2hcbiAgICAgICAgICAoRGVmZXJyZWQgKGRlZmVycmVkX3JlY29yZCwgZGVmZXJyZWRfcmVzdWx0KSkgZGVmZXJyZWRfY2FsbGJhY2tzO1xuICAgICAgICBpbW1lZGlhdGVfcmVzdWx0XG4gICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgcnVuX2luX3Jlc29sdXRpb25fbG9vcCAoZnVuICgpIC0+XG4gICAgICAgICAgZiAoKSlcbmVuZFxuaW5jbHVkZSBSZXNvbHV0aW9uX2xvb3BcblxuXG5cbm1vZHVsZSBSZXNvbHZpbmcgOlxuc2lnXG4gIHZhbCB3YWtldXBfbGF0ZXJfcmVzdWx0IDogJ2EgdSAtPiAoJ2EsIGV4bikgcmVzdWx0IC0+IHVuaXRcbiAgdmFsIHdha2V1cF9sYXRlciA6ICdhIHUgLT4gJ2EgLT4gdW5pdFxuICB2YWwgd2FrZXVwX2xhdGVyX2V4biA6IF8gdSAtPiBleG4gLT4gdW5pdFxuXG4gIHZhbCB3YWtldXBfcmVzdWx0IDogJ2EgdSAtPiAoJ2EsIGV4bikgcmVzdWx0IC0+IHVuaXRcbiAgdmFsIHdha2V1cCA6ICdhIHUgLT4gJ2EgLT4gdW5pdFxuICB2YWwgd2FrZXVwX2V4biA6IF8gdSAtPiBleG4gLT4gdW5pdFxuXG4gIHZhbCBjYW5jZWwgOiAnYSB0IC0+IHVuaXRcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZGV2aWF0ZXMgZnJvbSB0aGUgXCJpZGVhbFwiIGNhbGxiYWNrIGRlZmVycmFsXG4gICAgIGJlaGF2aW9yOiBpdCBydW5zIGNhbGxiYWNrcyBkaXJlY3RseSBvbiB0aGUgY3VycmVudCBzdGFjay4gSXQgc2hvdWxkXG4gICAgIHRoZXJlZm9yZSBiZSBwb3NzaWJsZSB0byBjYXVzZSBhIHN0YWNrIG92ZXJmbG93IHVzaW5nIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCB3YWtldXBfZ2VuZXJhbCBhcGlfZnVuY3Rpb25fbmFtZSByIHJlc3VsdCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9yZXNvbHZlciByIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgICgpXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHJlc3VsdCA9IHN0YXRlX29mX3Jlc3VsdCByZXN1bHQgaW5cbiAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPSByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgIGlnbm9yZSBwXG5cbiAgbGV0IHdha2V1cF9yZXN1bHQgciByZXN1bHQgPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cF9yZXN1bHRcIiByIHJlc3VsdFxuICBsZXQgd2FrZXVwIHIgdiA9IHdha2V1cF9nZW5lcmFsIFwid2FrZXVwXCIgciAoT2sgdilcbiAgbGV0IHdha2V1cF9leG4gciBleG4gPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cF9leG5cIiByIChFcnJvciBleG4pXG5cbiAgbGV0IHdha2V1cF9sYXRlcl9nZW5lcmFsIGFwaV9mdW5jdGlvbl9uYW1lIHIgcmVzdWx0ID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Jlc29sdmVyIHIgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBSZWplY3RlZCBDYW5jZWxlZCAtPlxuICAgICAgKClcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcblxuICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICBsZXQgcmVzdWx0ID0gc3RhdGVfb2ZfcmVzdWx0IHJlc3VsdCBpblxuICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgIHJlc29sdmUgfm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aDoxIHAgcmVzdWx0IGluXG4gICAgICBpZ25vcmUgcFxuXG4gIGxldCB3YWtldXBfbGF0ZXJfcmVzdWx0IHIgcmVzdWx0ID1cbiAgICB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBcIndha2V1cF9sYXRlcl9yZXN1bHRcIiByIHJlc3VsdFxuICBsZXQgd2FrZXVwX2xhdGVyIHIgdiA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJcIiByIChPayB2KVxuICBsZXQgd2FrZXVwX2xhdGVyX2V4biByIGV4biA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJfZXhuXCIgciAoRXJyb3IgZXhuKVxuXG5cblxuICB0eXBlIHBhY2tlZF9jYWxsYmFja3MgPVxuICAgIHwgUGFja2VkIDogXyBjYWxsYmFja3MgLT4gcGFja2VkX2NhbGxiYWNrc1xuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgKCogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZGV2aWF0ZXMgZnJvbSB0aGUgXCJpZGVhbFwiIGNhbGxiYWNrIGRlZmVycmFsXG4gICAgIGJlaGF2aW9yOiBpdCBydW5zIGNhbGxiYWNrcyBkaXJlY3RseSBvbiB0aGUgY3VycmVudCBzdGFjay4gSXQgc2hvdWxkXG4gICAgIHRoZXJlZm9yZSBiZSBwb3NzaWJsZSB0byBjYXVzZSBhIHN0YWNrIG92ZXJmbG93IHVzaW5nIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCBjYW5jZWwgcCA9XG4gICAgbGV0IGNhbmNlbGVkX3Jlc3VsdCA9IFJlamVjdGVkIENhbmNlbGVkIGluXG5cbiAgICAoKiBXYWxrcyB0aGUgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoIGJhY2t3YXJkcywgbG9va2luZyBmb3IgY2FuY2VsYWJsZVxuICAgICAgIGluaXRpYWwgcHJvbWlzZXMsIGFuZCBjYW5jZWxzIChvbmx5KSB0aGVtLlxuXG4gICAgICAgRm91bmQgaW5pdGlhbCBwcm9taXNlcyBhcmUgY2FuY2VsZWQgaW1tZWRpYXRlbHksIGFzIHRoZXkgYXJlIGZvdW5kLCBieVxuICAgICAgIHNldHRpbmcgdGhlaXIgc3RhdGUgdG8gW1JlamVjdGVkIENhbmNlbGVkXS4gVGhpcyBpcyB0byBwcmV2ZW50IHRoZW0gZnJvbVxuICAgICAgIGJlaW5nIFwiZm91bmQgdHdpY2VcIiBpZiB0aGV5IGFyZSByZWFjaGFibGUgYnkgdHdvIG9yIG1vcmUgZGlzdGluY3QgcGF0aHNcbiAgICAgICB0aHJvdWdoIHRoZSBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGguXG5cbiAgICAgICBUaGUgY2FsbGJhY2tzIG9mIHRoZXNlIGluaXRpYWwgcHJvbWlzZXMgYXJlIHRoZW4gcnVuLCBpbiBhIHNlcGFyYXRlXG4gICAgICAgcGhhc2UuIFRoZXNlIGNhbGxiYWNrcyBwcm9wYWdhdGUgY2FuY2VsbGF0aW9uIGZvcndhcmRzIHRvIGFueSBkZXBlbmRlbnRcbiAgICAgICBwcm9taXNlcy4gU2VlIFwiQ2FuY2VsbGF0aW9uXCIgaW4gdGhlIE92ZXJ2aWV3LiAqKVxuICAgIGxldCBwcm9wYWdhdGVfY2FuY2VsIDogKF8sIF8sIF8pIHByb21pc2UgLT4gcGFja2VkX2NhbGxiYWNrcyBsaXN0ID1cbiAgICAgICAgZnVuIHAgLT5cbiAgICAgIGxldCByZWMgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyA6XG4gICAgICAgICAgJ2EgJ3UgJ2MuIHBhY2tlZF9jYWxsYmFja3MgbGlzdCAtPiAoJ2EsICd1LCAnYykgcHJvbWlzZSAtPlxuICAgICAgICAgICAgcGFja2VkX2NhbGxiYWNrcyBsaXN0ID1cbiAgICAgICAgICBmdW4gKHR5cGUgYykgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIChwIDogKF8sIF8sIGMpIHByb21pc2UpIC0+XG5cbiAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgICAgICgqIElmIHRoZSBwcm9taXNlIGlzIG5vdCBzdGlsbCBwZW5kaW5nLCBpdCBjYW4ndCBiZSBjYW5jZWxlZC4gKilcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgIGNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcblxuICAgICAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICAgICAgbWF0Y2ggY2FsbGJhY2tzLmhvd190b19jYW5jZWwgd2l0aFxuICAgICAgICAgIHwgTm90X2NhbmNlbGFibGUgLT5cbiAgICAgICAgICAgIGNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICAgIHwgQ2FuY2VsX3RoaXNfcHJvbWlzZSAtPlxuICAgICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICAgIHNldF9wcm9taXNlX3N0YXRlIHAgY2FuY2VsZWRfcmVzdWx0IGluXG4gICAgICAgICAgICBpZ25vcmUgcDtcbiAgICAgICAgICAgIChQYWNrZWQgY2FsbGJhY2tzKTo6Y2FsbGJhY2tzX2FjY3VtdWxhdG9yXG4gICAgICAgICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwJyAtPlxuICAgICAgICAgICAgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBjYWxsYmFja3NfYWNjdW11bGF0b3IgcCdcbiAgICAgICAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcyAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBjYWxsYmFja3NfYWNjdW11bGF0b3IgcHNcbiAgICAgIGluXG4gICAgICBjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIFtdIHBcbiAgICBpblxuXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgY2FsbGJhY2tzID0gcHJvcGFnYXRlX2NhbmNlbCBwIGluXG5cbiAgICBjYWxsYmFja3MgfD4gTGlzdC5pdGVyIChmdW4gKFBhY2tlZCBjYWxsYmFja3MpIC0+XG4gICAgICBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgICAgfmFsbG93X2RlZmVycmluZzpmYWxzZSBjYWxsYmFja3MgY2FuY2VsZWRfcmVzdWx0KVxuZW5kXG5pbmNsdWRlIFJlc29sdmluZ1xuXG5cblxubW9kdWxlIFRyaXZpYWxfcHJvbWlzZXMgOlxuc2lnXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gIHZhbCBmYWlsIDogZXhuIC0+IF8gdFxuICB2YWwgb2ZfcmVzdWx0IDogKCdhLCBleG4pIHJlc3VsdCAtPiAnYSB0XG5cbiAgdmFsIHJldHVybl91bml0IDogdW5pdCB0XG4gIHZhbCByZXR1cm5fdHJ1ZSA6IGJvb2wgdFxuICB2YWwgcmV0dXJuX2ZhbHNlIDogYm9vbCB0XG4gIHZhbCByZXR1cm5fbm9uZSA6IF8gb3B0aW9uIHRcbiAgdmFsIHJldHVybl9zb21lIDogJ2EgLT4gJ2Egb3B0aW9uIHRcbiAgdmFsIHJldHVybl9vayA6ICdhIC0+ICgnYSwgXykgcmVzdWx0IHRcbiAgdmFsIHJldHVybl9lcnJvciA6ICdlIC0+IChfLCAnZSkgcmVzdWx0IHRcbiAgdmFsIHJldHVybl9uaWwgOiBfIGxpc3QgdFxuXG4gIHZhbCBmYWlsX3dpdGggOiBzdHJpbmcgLT4gXyB0XG4gIHZhbCBmYWlsX2ludmFsaWRfYXJnIDogc3RyaW5nIC0+IF8gdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgcmV0dXJuIHYgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IEZ1bGZpbGxlZCB2fVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0ID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBzdGF0ZV9vZl9yZXN1bHQgcmVzdWx0fVxuXG4gIGxldCBmYWlsIGV4biA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgZXhufVxuXG4gIGxldCByZXR1cm5fdW5pdCA9IHJldHVybiAoKVxuICBsZXQgcmV0dXJuX25vbmUgPSByZXR1cm4gTm9uZVxuICBsZXQgcmV0dXJuX3NvbWUgeCA9IHJldHVybiAoU29tZSB4KVxuICBsZXQgcmV0dXJuX25pbCA9IHJldHVybiBbXVxuICBsZXQgcmV0dXJuX3RydWUgPSByZXR1cm4gdHJ1ZVxuICBsZXQgcmV0dXJuX2ZhbHNlID0gcmV0dXJuIGZhbHNlXG4gIGxldCByZXR1cm5fb2sgeCA9IHJldHVybiAoT2sgeClcbiAgbGV0IHJldHVybl9lcnJvciB4ID0gcmV0dXJuIChFcnJvciB4KVxuXG4gIGxldCBmYWlsX3dpdGggbXNnID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBSZWplY3RlZCAoRmFpbHVyZSBtc2cpfVxuXG4gIGxldCBmYWlsX2ludmFsaWRfYXJnIG1zZyA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKEludmFsaWRfYXJndW1lbnQgbXNnKX1cbmVuZFxuaW5jbHVkZSBUcml2aWFsX3Byb21pc2VzXG5cblxuXG5tb2R1bGUgUGVuZGluZ19wcm9taXNlcyA6XG5zaWdcbiAgKCogSW50ZXJuYWwgKilcbiAgdmFsIG5ld19wZW5kaW5nIDpcbiAgICBob3dfdG9fY2FuY2VsOmhvd190b19jYW5jZWwgLT4gKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlXG4gIHZhbCBwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgOiBfIHQgbGlzdCAtPiBob3dfdG9fY2FuY2VsXG5cbiAgKCogSW5pdGlhbCBwZW5kaW5nIHByb21pc2VzIChwdWJsaWMpICopXG4gIHZhbCB3YWl0IDogdW5pdCAtPiAnYSB0ICogJ2EgdVxuICB2YWwgdGFzayA6IHVuaXQgLT4gJ2EgdCAqICdhIHVcblxuICB2YWwgYWRkX3Rhc2tfciA6ICdhIHUgTHd0X3NlcXVlbmNlLnQgLT4gJ2EgdFxuICB2YWwgYWRkX3Rhc2tfbCA6ICdhIHUgTHd0X3NlcXVlbmNlLnQgLT4gJ2EgdFxuXG4gIHZhbCBwcm90ZWN0ZWQgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG5vX2NhbmNlbCA6ICdhIHQgLT4gJ2EgdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWwgPVxuICAgIGxldCBzdGF0ZSA9XG4gICAgICBQZW5kaW5nIHtcbiAgICAgICAgcmVndWxhcl9jYWxsYmFja3MgPSBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgIGNhbmNlbF9jYWxsYmFja3MgPSBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eTtcbiAgICAgICAgaG93X3RvX2NhbmNlbDtcbiAgICAgICAgY2xlYW51cHNfZGVmZXJyZWQgPSAwO1xuICAgICAgfVxuICAgIGluXG4gICAge3N0YXRlfVxuXG4gIGxldCBwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMgPVxuICAgICgqIFVzaW5nIGEgZGlydHkgY2FzdCBoZXJlIHRvIGF2b2lkIHJlYnVpbGRpbmcgdGhlIGxpc3QgOiggTm90IGJvdGhlcmluZ1xuICAgICAgIHdpdGggdGhlIGludmFyaWFudHMsIGJlY2F1c2UgW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbF0gcGFja3MgdGhlbSxcbiAgICAgICBhbmQgY29kZSB0aGF0IG1hdGNoZXMgb24gW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbF0gZG9lc24ndCBjYXJlIGFib3V0XG4gICAgICAgdGhlbSBhbnl3YXkuICopXG4gICAgbGV0IGNhc3RfcHJvbWlzZV9saXN0IDogJ2EgdCBsaXN0IC0+ICgnYSwgXywgXykgcHJvbWlzZSBsaXN0ID0gT2JqLm1hZ2ljIGluXG4gICAgUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIChjYXN0X3Byb21pc2VfbGlzdCBwcylcblxuXG5cbiAgbGV0IHdhaXQgKCkgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Tm90X2NhbmNlbGFibGUgaW5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwLCB0b19wdWJsaWNfcmVzb2x2ZXIgcFxuXG4gIGxldCB0YXNrICgpID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwLCB0b19wdWJsaWNfcmVzb2x2ZXIgcFxuXG5cblxuXG4gIGxldCBjYXN0X3NlcXVlbmNlX25vZGVcbiAgICAgIChub2RlIDogJ2EgdSBMd3Rfc2VxdWVuY2Uubm9kZSlcbiAgICAgIChfYWN0dWFsX2NvbnRlbnQ6KCdhLCAndSwgJ2MpIHByb21pc2UpXG4gICAgICAgIDogKCdhLCAndSwgJ2MpIHByb21pc2UgTHd0X3NlcXVlbmNlLm5vZGUgPVxuICAgIE9iai5tYWdpYyBub2RlXG5cbiAgbGV0IGFkZF90YXNrX3Igc2VxdWVuY2UgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9yICh0b19wdWJsaWNfcmVzb2x2ZXIgcCkgc2VxdWVuY2UgaW5cbiAgICBsZXQgbm9kZSA9IGNhc3Rfc2VxdWVuY2Vfbm9kZSBub2RlIHAgaW5cblxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZTtcblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICBsZXQgYWRkX3Rhc2tfbCBzZXF1ZW5jZSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG4gICAgbGV0IG5vZGUgPSBMd3Rfc2VxdWVuY2UuYWRkX2wgKHRvX3B1YmxpY19yZXNvbHZlciBwKSBzZXF1ZW5jZSBpblxuICAgIGxldCBub2RlID0gY2FzdF9zZXF1ZW5jZV9ub2RlIG5vZGUgcCBpblxuXG4gICAgbGV0IFBlbmRpbmcgY2FsbGJhY2tzID0gcC5zdGF0ZSBpblxuICAgIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIDwtXG4gICAgICBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlO1xuXG4gICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG5cblxuICBsZXQgcHJvdGVjdGVkIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gcFxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnID0gbWF5X25vd19iZV9wcm94eSBwJyBpblxuICAgICAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICAgICgqIEluIHRoaXMgY2FsbGJhY2ssIFtwJ10gd2lsbCBlaXRoZXIgc3RpbGwgaXRzZWxmIGJlIHBlbmRpbmcsIG9yIGl0XG4gICAgICAgICAgIHdpbGwgaGF2ZSBiZWNvbWUgYSBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuIFRoZSByZWFzb25pbmcgZm9yXG4gICAgICAgICAgIHRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIGluIHRoZSBjb21tZW50IGF0IFttYXlfbm93X2JlX3Byb3h5XS4gVGhlXG4gICAgICAgICAgIGRpZmZlcmVuY2VzIGFyZTpcblxuICAgICAgICAgICAtIFtwJ10gKmlzKiBhbiBpbml0aWFsIHByb21pc2UsIHNvIGl0ICpjYW4qIGdldCBjYW5jZWxlZC4gSG93ZXZlciwgaWZcbiAgICAgICAgICAgICBpdCBkb2VzLCB0aGUgW29uX2NhbmNlbF0gaGFuZGxlciBpbnN0YWxsZWQgYmVsb3cgd2lsbCByZW1vdmUgdGhpc1xuICAgICAgICAgICAgIGNhbGxiYWNrLlxuICAgICAgICAgICAtIFtwJ10gbmV2ZXIgZ2V0cyBwYXNzZWQgdG8gW21ha2VfaW50b19wcm94eV0sIHRoZSBvbmx5IGVmZmVjdCBvZlxuICAgICAgICAgICAgIHdoaWNoIGlzIHRoYXQgaXQgY2Fubm90IGJlIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgYW5vdGhlclxuICAgICAgICAgICAgIChwcm94eSkgcHJvbWlzZS4gU28sIFtwJ10gY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBoZWFkIG9mIGEgY2hhaW4gb2ZcbiAgICAgICAgICAgICBbUHJveHkgX10gbGlua3MsIGFuZCBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gd29ycnkgYWJvdXQgd2hldGhlciB0aGVcbiAgICAgICAgICAgICBpbmR1Y3RpdmUgcmVhc29uaW5nIGF0IFttYXlfbm93X2JlX3Byb3h5XSBhcHBsaWVzLiAqKVxuXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcgcF9yZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHAnXG4gICAgICBpblxuXG4gICAgICBsZXQgcmVtb3ZlX3RoZV9jYWxsYmFjayA9XG4gICAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9yZW1vdmVfZnVuY3Rpb25cbiAgICAgICAgICBbcF0gY2FsbGJhY2tcbiAgICAgIGluXG5cbiAgICAgIGxldCBQZW5kaW5nIHAnX2NhbGxiYWNrcyA9IHAnLnN0YXRlIGluXG4gICAgICBhZGRfY2FuY2VsX2NhbGxiYWNrIHAnX2NhbGxiYWNrcyByZW1vdmVfdGhlX2NhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuXG4gIGxldCBub19jYW5jZWwgcCA9XG4gICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiBwXG4gICAgfCBSZWplY3RlZCBfIC0+IHBcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Tm90X2NhbmNlbGFibGUgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJyA9IG1heV9ub3dfYmVfcHJveHkgcCcgaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICAoKiBJbiB0aGlzIGNhbGxiYWNrLCBbcCddIHdpbGwgZWl0aGVyIHN0aWxsIGl0c2VsZiBiZSBwZW5kaW5nLCBvciBpdFxuICAgICAgICAgICB3aWxsIGhhdmUgYmVjb21lIGEgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGUgcmVhc29uaW5nIGZvclxuICAgICAgICAgICB0aGlzIGlzIGFzIGluIFtwcm90ZWN0ZWRdIGFuZCBbbWF5X25vd19iZV9wcm94eV0sIGJ1dCBldmVuIHNpbXBsZXIsXG4gICAgICAgICAgIGJlY2F1c2UgW3AnXSBpcyBub3QgY2FuY2VsYWJsZS4gKilcblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnIHBfcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwJ1xuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHAnXG5lbmRcbmluY2x1ZGUgUGVuZGluZ19wcm9taXNlc1xuXG5cblxubW9kdWxlIFNlcXVlbnRpYWxfY29tcG9zaXRpb24gOlxuc2lnXG4gICgqIE1haW4gaW50ZXJmYWNlIChwdWJsaWMpICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuICB2YWwgY2F0Y2ggOiAodW5pdCAtPiAnYSB0KSAtPiAoZXhuIC0+ICdhIHQpIC0+ICdhIHRcbiAgdmFsIGZpbmFsaXplIDogKHVuaXQgLT4gJ2EgdCkgLT4gKHVuaXQgLT4gdW5pdCB0KSAtPiAnYSB0XG4gIHZhbCB0cnlfYmluZCA6ICh1bml0IC0+ICdhIHQpIC0+ICgnYSAtPiAnYiB0KSAtPiAoZXhuIC0+ICdiIHQpIC0+ICdiIHRcblxuICAoKiBDYW5jZWwgY2FsbGJhY2tzIChwdWJsaWMpLiAqKVxuICB2YWwgb25fY2FuY2VsIDogJ2EgdCAtPiAodW5pdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCogTm9uLXByb21pc2UgY2FsbGJhY2tzIChwdWJsaWMpICopXG4gIHZhbCBvbl9zdWNjZXNzIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgb25fZmFpbHVyZSA6IF8gdCAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX3Rlcm1pbmF0aW9uIDogXyB0IC0+ICh1bml0IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX2FueSA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IChleG4gLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqIEJhY2t0cmFjZSBzdXBwb3J0IChpbnRlcm5hbDsgZm9yIHVzZSBieSB0aGUgUFBYKSAqKVxuICB2YWwgYmFja3RyYWNlX2JpbmQgOlxuICAgIChleG4gLT4gZXhuKSAtPiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCBiYWNrdHJhY2VfY2F0Y2ggOlxuICAgIChleG4gLT4gZXhuKSAtPiAodW5pdCAtPiAnYSB0KSAtPiAoZXhuIC0+ICdhIHQpIC0+ICdhIHRcbiAgdmFsIGJhY2t0cmFjZV9maW5hbGl6ZSA6XG4gICAgKGV4biAtPiBleG4pIC0+ICh1bml0IC0+ICdhIHQpIC0+ICh1bml0IC0+IHVuaXQgdCkgLT4gJ2EgdFxuICB2YWwgYmFja3RyYWNlX3RyeV9iaW5kIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gKHVuaXQgLT4gJ2EgdCkgLT4gKCdhIC0+ICdiIHQpIC0+IChleG4gLT4gJ2IgdCkgLT4gJ2IgdFxuZW5kID1cbnN0cnVjdFxuICAoKiBUaGVyZSBhcmUgZml2ZSBwcmltYXJ5IHNlcXVlbnRpYWwgY29tcG9zaXRpb24gZnVuY3Rpb25zOiBbYmluZF0sIFttYXBdLFxuICAgICBbY2F0Y2hdLCBbZmluYWxpemVdLCBhbmQgW3RyeV9iaW5kXS4gT2YgdGhlc2UsIFt0cnlfYmluZF0gaXMgdGhlIG1vc3RcbiAgICAgZ2VuZXJhbCAtLSBhbGwgdGhlIG90aGVycyBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgaXQuXG5cbiAgICAgTHd0IGNvbmZsYXRlcyBjb25jdXJyZW5jeSB3aXRoIGVycm9yIHByb3BhZ2F0aW9uLiBJZiBMd3QgZGlkIG5vdCBkbyB0aGlzLFxuICAgICB0aGVyZSB3b3VsZCBiZSBvbmx5IHR3byBwcmltYXJ5IGZ1bmN0aW9uczogW2JpbmRdIGFuZCBbbWFwXSwgYW5kLCBvZiB0aGVzZVxuICAgICB0d28sIFtiaW5kXSBpcyB0aGUgbW9zdCBnZW5lcmFsLiBTaW5jZSBbYmluZF0gaXMgdGhlIG1vc3QgcmVsZXZhbnRcbiAgICAgc3BlY2lmaWNhbGx5IHRvIGNvbmN1cnJlbmN5LCBhbmQgaXMgYWxzbyB0aGUgbW9zdCBmYW1pbGlhciBmdW5jdGlvbiBpbiBMd3QsXG4gICAgIGl0cyBpbXBsZW1lbnRhdGlvbiBzZXJ2ZXMgYXMgYSBraW5kIG9mIFwibW9kZWxcIiBmb3IgdGhlIHJlc3QuIEl0IGlzIHRoZSBtb3N0XG4gICAgIGNvbW1lbnRlZCwgYW5kIGFsbCB0aGUgb3RoZXIgZnVuY3Rpb25zIGZvbGxvdyBhIHNpbWlsYXIgcGF0dGVybiB0byBbYmluZF0uXG5cbiAgICAgRm91ciBvZiB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaGF2ZSBbYmFja3RyYWNlXypdIHZlcnNpb25zLCB3aGljaCBhcmUgbm90XG4gICAgIHRydWx5IHB1YmxpYywgYW5kIGV4aXN0IHRvIHN1cHBvcnQgdGhlIFBQWC4gW2JhY2t0cmFjZV9tYXBdIGRvZXMgbm90IGV4aXN0XG4gICAgIGJlY2F1c2UgdGhlIFBQWCBkb2VzIG5vdCBuZWVkIGl0LlxuXG4gICAgIFRoZSByZW1haW5pbmcgZm91ciBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGF0dGFjaCBcImxvd2VyLWxldmVsLWlzaFwiXG4gICAgIG5vbi1wcm9taXNlLXByb2R1Y2luZyBjYWxsYmFja3MgdG8gcHJvbWlzZXM6IHRoZXNlIGFyZSB0aGUgW29uXypdXG4gICAgIGZ1bmN0aW9ucy4gT2YgdGhlc2UsIFtvbl9hbnldIGlzIHRoZSBtb3N0IGdlbmVyYWwuIElmIEx3dCBkaWQgbm90IGNvbmZsYXRlXG4gICAgIGNvbmN1cnJlbmN5IHdpdGggZXJyb3IgaGFuZGxpbmcsIHRoZXJlIHdvdWxkIG9ubHkgYmUgb25lOiBbb25fc3VjY2Vzc10uICopXG5cblxuXG4gICgqIE1ha2VzIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSBpbnRvIGEgcHJveHkgb2YgW35vdXRlcl9wcm9taXNlXS4gQWZ0ZXJcbiAgICAgW21ha2VfaW50b19wcm94eV0sIHRoZXNlIHR3byBwcm9taXNlIHJlZmVyZW5jZXMgXCJiZWhhdmUgaWRlbnRpY2FsbHkuXCJcblxuICAgICBOb3RlIHRoYXQgdGhpcyBpcyBub3Qgc3ltbWV0cmljOiBbdXNlcl9wcm92aWRlZF9wcm9taXNlXSBhbHdheXMgYmVjb21lcyB0aGVcbiAgICAgcHJveHkuIFttYWtlX2ludG9fcHJveHldIGlzIGNhbGxlZCBvbmx5IGJ5IFtiaW5kXSBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaW5cbiAgICAgdGhpcyBtb2R1bGUuIFRoaXMgbWVhbnMgdGhhdDpcblxuICAgICAtIHRoZSBvbmx5IHdheSBmb3IgYSBwcm9taXNlIHRvIGJlY29tZSBhIHByb3h5IGlzIGJ5IGJlaW5nIHJldHVybmVkIGZyb21cbiAgICAgICB0aGUgY2FsbGJhY2sgZ2l2ZW4gYnkgdGhlIHVzZXIgdG8gW2JpbmRdLCBvciBhIHNpbWlsYXIgZnVuY3Rpb24sIGFuZFxuICAgICAtIHRoZSBvbmx5IHdheSBmb3IgYSBwcm9taXNlIHRvIGJlY29tZSB1bmRlcmx5aW5nIGZvciBhIHByb21pc2Ugb3RoZXIgdGhhblxuICAgICAgIGl0c2VsZiBpcyB0byBiZSB0aGUgb3V0ZXIgcHJvbWlzZSBvcmlnaW5hbGx5IHJldHVybmVkIHRvIHRoZSB1c2VyIGZyb21cbiAgICAgICBbYmluZF0sIG9yIGEgc2ltaWxhciBmdW5jdGlvbi5cblxuICAgICBUaGVzZSB0d28gZmFjdHMgYXJlIGltcG9ydGFudCBmb3IgcmVhc29uaW5nIGFib3V0IGhvdyBhbmQgd2hpY2ggcHJvbWlzZXNcbiAgICAgY2FuIGJlY29tZSBwcm94aWVzLCB1bmRlcmx5aW5nLCBldGMuOyBpbiBwYXJ0aWN1bGFyLCBpdCBpcyB1c2VkIGluIHRoZVxuICAgICBhcmd1bWVudCBpbiBbbWF5X25vd19iZV9wcm94eV0gZm9yIGNvcnJlY3QgcHJlZGljdGlvbnMgYWJvdXQgc3RhdGUgY2hhbmdlcy5cblxuICAgICBbfm91dGVyX3Byb21pc2VdIGlzIGFsd2F5cyBhIHBlbmRpbmcgcHJvbWlzZSB3aGVuIFttYWtlX2ludG9fcHJveHldIGlzXG4gICAgIGNhbGxlZDsgZm9yIHRoZSBleHBsYW5hdGlvbiwgc2VlIFttYXlfbm93X2JlX3Byb3h5XSAodGhvdWdoIHRoZSBjYWxsZXIgb2ZcbiAgICAgW21ha2VfaW50b19wcm94eV0gYWx3YXlzIGNhbGxzIFt1bmRlcmx5aW5nXSBmaXJzdCB0byBwYXNzIHRoZSB1bmRlcmx5aW5nXG4gICAgIHBlbmRpbmcgcHJvbWlzZSB0byBbbWFrZV9pbnRvX3Byb3h5XSkuXG5cbiAgICAgVGhlIHJlYXNvbnMgcHJveHlpbmcgaXMgdXNlZCwgaW5zdGVhZCBvZiBhZGRpbmcgYSBjYWxsYmFjayB0b1xuICAgICBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gdG8gcmVzb2x2ZSBbfm91dGVyX3Byb21pc2VdIHdoZW4gdGhlIGZvcm1lclxuICAgICBiZWNvbWVzIHJlc29sdmVkIHByb2JhYmx5IGFyZTpcblxuICAgICAtIFByb21pc2VzIGhhdmUgbW9yZSBiZWhhdmlvcnMgdGhhbiByZXNvbHV0aW9uLiBPbmUgd291bGQgaGF2ZSB0byBhZGQgYVxuICAgICAgIGNhbmNlbGxhdGlvbiBoYW5kbGVyIHRvIFt+b3V0ZXJfcHJvbWlzZV0gdG8gcHJvcGFnYXRlIHRoZSBjYW5jZWxsYXRpb25cbiAgICAgICBiYWNrIHRvIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSwgZm9yIGV4YW1wbGUuIEl0IG1heSBiZSBlYXNpZXIgdG8ganVzdFxuICAgICAgIHRoaW5rIG9mIHRoZW0gYXMgdGhlIHNhbWUgcHJvbWlzZS5cbiAgICAgLSBJZiB1c2luZyBjYWxsYmFja3MsIHJlc29sdmluZyBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gd291bGQgbm90XG4gICAgICAgaW1tZWRpYXRlbHkgcmVzb2x2ZSBbfm91dGVyX3Byb21pc2VdLiBBbm90aGVyIGNhbGxiYWNrIGFkZGVkIHRvXG4gICAgICAgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIG1pZ2h0IHNlZSBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gcmVzb2x2ZWQsXG4gICAgICAgYnV0IFt+b3V0ZXJfcHJvbWlzZV0gc3RpbGwgcGVuZGluZywgZGVwZW5kaW5nIG9uIHRoZSBvcmRlciBpbiB3aGljaFxuICAgICAgIGNhbGxiYWNrcyBhcmUgcnVuLiAqKVxuICBsZXQgbWFrZV9pbnRvX3Byb3h5XG4gICAgICAodHlwZSBjKVxuICAgICAgfihvdXRlcl9wcm9taXNlIDogKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlKVxuICAgICAgfih1c2VyX3Byb3ZpZGVkX3Byb21pc2UgOiAoJ2EsIF8sIGMpIHByb21pc2UpXG4gICAgICAgIDogKCdhLCB1bmRlcmx5aW5nLCBjKSBzdGF0ZV9jaGFuZ2VkID1cblxuICAgICgqIFVzaW5nIFtwJ10gYXMgaXQncyB0aGUgbmFtZSB1c2VkIGluc2lkZSBbYmluZF0sIGV0Yy4sIGZvciBwcm9taXNlcyB3aXRoXG4gICAgICAgdGhpcyByb2xlIC0tIFtwJ10gaXMgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVzZXIncyBmdW5jdGlvbi4gKilcbiAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHVzZXJfcHJvdmlkZWRfcHJvbWlzZSBpblxuXG4gICAgaWYgaWRlbnRpY2FsIHAnIG91dGVyX3Byb21pc2UgdGhlblxuICAgICAgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJ1xuICAgICAgKCogV2UgcmVhbGx5IHdhbnQgdG8gcmV0dXJuIFtTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG91dGVyX3Byb21pc2VdLCBidXRcbiAgICAgICAgIHRoZSByZWZlcmVuY2UgdGhyb3VnaCBbcCddIGhhcyB0aGUgcmlnaHQgdHlwZS4gKilcblxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHAnLnN0YXRlIHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIG91dGVyX3Byb21pc2UgcCcuc3RhdGVcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2Ugb3V0ZXJfcHJvbWlzZSBwJy5zdGF0ZVxuXG4gICAgICB8IFBlbmRpbmcgcCdfY2FsbGJhY2tzIC0+XG4gICAgICAgIGxldCBQZW5kaW5nIG91dGVyX2NhbGxiYWNrcyA9IG91dGVyX3Byb21pc2Uuc3RhdGUgaW5cblxuICAgICAgICBtZXJnZV9jYWxsYmFja3MgfmZyb206cCdfY2FsbGJhY2tzIH5pbnRvOm91dGVyX2NhbGxiYWNrcztcbiAgICAgICAgb3V0ZXJfY2FsbGJhY2tzLmhvd190b19jYW5jZWwgPC0gcCdfY2FsbGJhY2tzLmhvd190b19jYW5jZWw7XG5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHNldF9wcm9taXNlX3N0YXRlIHAnIChQcm94eSBvdXRlcl9wcm9taXNlKSBpblxuICAgICAgICBpZ25vcmUgcCc7XG5cbiAgICAgICAgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvdXRlcl9wcm9taXNlXG4gICAgICAgICgqIFRoZSBzdGF0ZSBoYXNuJ3QgYWN0dWFsbHkgY2hhbmdlZCwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gd3JhcFxuICAgICAgICAgICBbb3V0ZXJfcHJvbWlzZV0gZm9yIHR5cGUgY2hlY2tpbmcuICopXG5cbiAgICAgICAgKCogVGhlIHN0YXRlIG9mIFtwJ10gbWF5IGluc3RlYWQgaGF2ZSBjaGFuZ2VkIC0tIGl0IG1heSBoYXZlIGJlY29tZSBhXG4gICAgICAgICAgIHByb3h5LiBIb3dldmVyLCBjYWxsZXJzIG9mIFttYWtlX2ludG9fcHJveHldIGRvbid0IGtub3cgaWZcbiAgICAgICAgICAgW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gd2FzIGEgcHJveHkgb3Igbm90ICh0aGF0J3Mgd2h5IHdlIGNhbGxcbiAgICAgICAgICAgdW5kZXJseWluZyBvbiBpdCBhdCB0aGUgdG9wIG9mIHRoaXMgZnVuY3Rpb24sIHRvIGdldCBbcCddKS4gV2UgY2FuXG4gICAgICAgICAgIHRoZXJlZm9yZSB0YWtlIGEgZGFuZ2Vyb3VzIHNob3J0Y3V0IGFuZCBub3QgYm90aGVyIHJldHVybmluZyBhIG5ld1xuICAgICAgICAgICByZWZlcmVuY2UgdG8gW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gZm9yIHNoYWRvd2luZy4gKilcblxuXG5cbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IGEgbG90IG9mIHRoZSBjb2RlIGJlbG93IGNhbiBwcm9iYWJseSBiZSBkZWR1cGxpY2F0ZWQgaW5cbiAgICAgc29tZSB3YXksIGVzcGVjaWFsbHkgaWYgYXNzdW1pbmcgRmxhbWJkYS4gKilcblxuICBsZXQgYmluZCBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgICgqIEluIGNhc2UgW0x3dC5iaW5kXSBuZWVkcyB0byBkZWZlciB0aGUgY2FsbCB0byBbZl0sIHRoaXMgZnVuY3Rpb24gd2lsbCBiZVxuICAgICAgIGNhbGxlZCB0byBjcmVhdGU6XG5cbiAgICAgICAxLiBUaGUgcHJvbWlzZSwgW3AnJ10sIHRoYXQgbXVzdCBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGltbWVkaWF0ZWx5LlxuICAgICAgIDIuIFRoZSBjYWxsYmFjayB0aGF0IHJlc29sdmVzIFtwJyddLlxuXG4gICAgICAgW0x3dC5iaW5kXSBkZWZlcnMgdGhlIGNhbGwgdG8gW2ZdIGluIHR3byBjaXJjdW1zdGFuY2VzOlxuXG4gICAgICAgMS4gVGhlIHByb21pc2UgW3BdIGlzIHBlbmRpbmcuXG4gICAgICAgMi4gVGhlIHByb21pc2UgW3BdIGlzIGZ1bGZpbGxlZCwgYnV0IHRoZSBjdXJyZW50IGNhbGxiYWNrIGNhbGwgbmVzdGluZ1xuICAgICAgICAgIGRlcHRoIGlzIHN1Y2ggdGhhdCB0aGUgY2FsbCB0byBbZl0gbXVzdCBnbyBpbnRvIHRoZSBjYWxsYmFjayBxdWV1ZSwgaW5cbiAgICAgICAgICBvcmRlciB0byBhdm9pZCBzdGFjayBvdmVyZmxvdy5cblxuICAgICAgTWVjaGFuaXNtICgyKSBpcyBjdXJyZW50bHkgZGlzYWJsZWQuIEl0IG1heSBiZSB1c2VkIGluIGFuIGFsdGVybmF0aXZlIEx3dFxuICAgICAgQVBJLlxuXG4gICAgICBGdW5jdGlvbnMgb3RoZXIgdGhhbiBbTHd0LmJpbmRdIGhhdmUgYW5hbG9nb3VzIGRlZmVycmFsIGJlaGF2aW9yLiAqKVxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cbiAgICAgICgqIFRoZSByZXN1bHQgcHJvbWlzZSBpcyBhIGZyZXNoIHBlbmRpbmcgcHJvbWlzZS5cblxuICAgICAgICAgSW5pdGlhbGx5LCB0cnlpbmcgdG8gY2FuY2VsIHRoaXMgZnJlc2ggcGVuZGluZyBwcm9taXNlIFtwJyddIHdpbGxcbiAgICAgICAgIHByb3BhZ2F0ZSB0aGUgY2FuY2VsbGF0aW9uIGF0dGVtcHQgdG8gW3BdIChiYWNrd2FyZHMgdGhyb3VnaCB0aGVcbiAgICAgICAgIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaCkuIElmL3doZW4gW3BdIGlzIGZ1bGZpbGxlZCwgTHd0IHdpbGwgY2FsbCB0aGVcbiAgICAgICAgIHVzZXIncyBjYWxsYmFjayBbZl0gYmVsb3csIHdoaWNoIHdpbGwgcHJvdmlkZSBhIG5ldyBwcm9taXNlIFtwJ10sIGFuZFxuICAgICAgICAgW3AnXSB3aWxsIGJlY29tZSBhIHByb3h5IG9mIFtwJyddLiBBdCB0aGF0IHBvaW50LCB0cnlpbmcgdG8gY2FuY2VsXG4gICAgICAgICBbcCcnXSB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gdHJ5aW5nIHRvIGNhbmNlbCBbcCddLCBzbyB0aGUgYmVoYXZpb3Igd2lsbFxuICAgICAgICAgZGVwZW5kIG9uIGhvdyB0aGUgdXNlciBvYnRhaW5lZCBbcCddLiAqKVxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGYgdiB3aXRoIGV4blxuICAgICAgICAgICAgd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cbiAgICAgICAgICAoKiBSdW4gdGhlIHVzZXIncyBmdW5jdGlvbiBbZl0uICopXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG4gICAgICAgICAgKCogW3AnJ10gd2FzIGFuIHVuZGVybHlpbmcgcHJvbWlzZSB3aGVuIGl0IHdhcyBjcmVhdGVkIGFib3ZlLCBidXQgaXRcbiAgICAgICAgICAgICBtYXkgaGF2ZSBiZWNvbWUgYSBwcm94eSBieSB0aGUgdGltZSB0aGlzIGNvZGUgaXMgYmVpbmcgZXhlY3V0ZWQuXG4gICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgZWl0aGVyIGFuIHVuZGVybHlpbmcgcGVuZGluZyBwcm9taXNlLCBvciBhXG4gICAgICAgICAgICAgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGVyZWZvcmUsIFttYXlfbm93X2JlX3Byb3h5XSBwcm9kdWNlc1xuICAgICAgICAgICAgIGEgcmVmZXJlbmNlIHdpdGggdGhlIHJpZ2h0IHR5cGUgdmFyaWFibGVzLiBXZSBpbW1lZGlhdGVseSBnZXRcbiAgICAgICAgICAgICBbcCcnXSdzIGN1cnJlbnQgdW5kZXJseWluZyBwcm9taXNlLiAqKVxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgICAgICAoKiBNYWtlIHRoZSBvdXRlciBwcm9taXNlIFtwJyddIGJlaGF2aW9yYWxseSBpZGVudGljYWwgdG8gdGhlIHByb21pc2VcbiAgICAgICAgICAgICBbcCddIHJldHVybmVkIGJ5IFtmXSBieSBtYWtpbmcgW3AnXSBpbnRvIGEgcHJveHkgb2YgW3AnJ10uICopXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGxldCBiYWNrdHJhY2VfYmluZCBhZGRfbG9jIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGYgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIChSZWplY3RlZCAoYWRkX2xvYyBleG4pKSBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKGFkZF9sb2MgZXhuKX1cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgbWFwIGYgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcnX3Jlc3VsdCA9XG4gICAgICAgICAgICB0cnkgRnVsZmlsbGVkIChmIHYpIHdpdGggZXhuXG4gICAgICAgICAgICB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBSZWplY3RlZCBleG5cbiAgICAgICAgICBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcCcnX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2VcbiAgICAgICAgICAgIHtzdGF0ZSA9XG4gICAgICAgICAgICAgIHRyeSBGdWxmaWxsZWQgKGYgdilcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gUmVqZWN0ZWQgZXhufSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBjYXRjaCBmIGggPVxuICAgIGxldCBwID1cbiAgICAgIHRyeSBmICgpXG4gICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgIGluXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX2NhdGNoIGFkZF9sb2MgZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaCAoYWRkX2xvYyBleG4pKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgdHJ5X2JpbmQgZiBmJyBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmJyB2XG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmJyB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX3RyeV9iaW5kIGFkZF9sb2MgZiBmJyBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmJyB2XG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGYnIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaCAoYWRkX2xvYyBleG4pKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgZmluYWxpemUgZiBmJyA9XG4gICAgdHJ5X2JpbmQgZlxuICAgICAgKGZ1biB4IC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IHJldHVybiB4KSlcbiAgICAgIChmdW4gZSAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiBmYWlsIGUpKVxuXG4gIGxldCBiYWNrdHJhY2VfZmluYWxpemUgYWRkX2xvYyBmIGYnID1cbiAgICBiYWNrdHJhY2VfdHJ5X2JpbmQgYWRkX2xvYyBmXG4gICAgICAoZnVuIHggLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gcmV0dXJuIHgpKVxuICAgICAgKGZ1biBlIC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IGZhaWwgKGFkZF9sb2MgZSkpKVxuXG5cblxuICBsZXQgb25fY2FuY2VsIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBSZWplY3RlZCBDYW5jZWxlZCAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICgoKSwgKGZ1biBfIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpLCBGdWxmaWxsZWQgKCkpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT5cbiAgICAgIGFkZF9jYW5jZWxfY2FsbGJhY2sgY2FsbGJhY2tzIGZcblxuXG5cbiAgbGV0IG9uX3N1Y2Nlc3MgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biByZXN1bHQgLT5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdlxuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX2ZhaWx1cmUgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biByZXN1bHQgLT5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIGV4blxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgb25fdGVybWluYXRpb24gcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biBfcmVzdWx0IC0+XG4gICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX2FueSBwIGYgZyA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHZcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGcgZXhuXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBnIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuZW5kXG5pbmNsdWRlIFNlcXVlbnRpYWxfY29tcG9zaXRpb25cblxuXG4oKiBUaGlzIGJlbG9uZ3Mgd2l0aCB0aGUgW3Byb3RlY3RlZF0gYW5kIHN1Y2gsIGJ1dCBpdCBkZXBlbmRzIG9uIHByaW1pdGl2ZXMgZnJvbVxuICAgW1NlcXVlbnRpYWxfY29tcG9zaXRpb25dLiAqKVxubGV0IHdyYXBfaW5fY2FuY2VsYWJsZSBwID1cbiBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuIGxldCBwX3VuZGVybHlpbmcgPSB1bmRlcmx5aW5nIHBfaW50ZXJuYWwgaW5cbiBtYXRjaCBwX3VuZGVybHlpbmcuc3RhdGUgd2l0aFxuIHwgRnVsZmlsbGVkIF8gLT4gcFxuIHwgUmVqZWN0ZWQgXyAtPiBwXG4gfCBQZW5kaW5nIF8gLT5cbiAgIGxldCBwJywgciA9IHRhc2sgKCkgaW5cbiAgIG9uX2NhbmNlbCBwJyAoZnVuICgpIC0+IGNhbmNlbCBwKTtcbiAgIG9uX2FueSBwICh3YWtldXAgcikgKHdha2V1cF9leG4gcik7XG4gICBwJ1xuXG5cbm1vZHVsZSBDb25jdXJyZW50X2NvbXBvc2l0aW9uIDpcbnNpZ1xuICB2YWwgZG9udF93YWl0IDogKHVuaXQgLT4gXyB0KSAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGFzeW5jIDogKHVuaXQgLT4gXyB0KSAtPiB1bml0XG4gIHZhbCBpZ25vcmVfcmVzdWx0IDogXyB0IC0+IHVuaXRcblxuICB2YWwgYm90aCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgam9pbiA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuICB2YWwgYWxsIDogKCdhIHQpIGxpc3QgLT4gKCdhIGxpc3QpIHRcblxuICB2YWwgY2hvb3NlIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIHBpY2sgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuXG4gIHZhbCBuY2hvb3NlIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuICB2YWwgbnBpY2sgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgdmFsIG5jaG9vc2Vfc3BsaXQgOiAnYSB0IGxpc3QgLT4gKCdhIGxpc3QgKiAnYSB0IGxpc3QpIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBkb250X3dhaXQgZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgaCBleG5cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGggZXhuXG4gICAgICBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBhc3luYyBmID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgaWdub3JlX3Jlc3VsdCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJlcmFpc2UgZXhuXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICAhYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuXG4gICAgICBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG5cblxuICBsZXQgam9pbiBwcyA9XG4gICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgIGxldCBudW1iZXJfcGVuZGluZ19pbl9wcyA9IHJlZiAwIGluXG4gICAgbGV0IGpvaW5fcmVzdWx0ID0gcmVmIChGdWxmaWxsZWQgKCkpIGluXG5cbiAgICAoKiBDYWxsYmFjayBhdHRhY2hlZCB0byBlYWNoIHByb21pc2UgaW4gW3BzXSB0aGF0IGlzIHN0aWxsIHBlbmRpbmcgYXQgdGhlXG4gICAgICAgdGltZSBbam9pbl0gaXMgY2FsbGVkLiAqKVxuICAgIGxldCBjYWxsYmFjayBuZXdfcmVzdWx0ID1cbiAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcgPSBtYXlfbm93X2JlX3Byb3h5IHAnIGluXG5cbiAgICAgIGJlZ2luIG1hdGNoIG5ld19yZXN1bHQgd2l0aFxuICAgICAgfCBGdWxmaWxsZWQgKCkgLT4gKClcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgKCogRm9yIHRoZSBmaXJzdCBwcm9taXNlIGluIFtwc10gdG8gYmUgcmVqZWN0ZWQsIHNldCB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgW2pvaW5dIHRvIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9uLi4gKilcbiAgICAgICAgbWF0Y2ggIWpvaW5fcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgKCkgLT4gam9pbl9yZXN1bHQgOj0gbmV3X3Jlc3VsdFxuICAgICAgICB8IFJlamVjdGVkIF8gLT4gKClcbiAgICAgIGVuZDtcblxuICAgICAgKCogSW4gYWxsIGNhc2VzLCBkZWNyZW1lbnQgdGhlIG51bWJlciBvZiBwcm9taXNlcyBzdGlsbCBwZW5kaW5nLCBhbmRcbiAgICAgICAgIHJlc29sdmUgdGhlIFtqb2luXSBvbmNlIGFsbCBwcm9taXNlcyByZXNvbHZlLiAqKVxuICAgICAgbnVtYmVyX3BlbmRpbmdfaW5fcHMgOj0gIW51bWJlcl9wZW5kaW5nX2luX3BzIC0gMTtcbiAgICAgIGlmICFudW1iZXJfcGVuZGluZ19pbl9wcyA9IDAgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgKHVuZGVybHlpbmcgcCcpICFqb2luX3Jlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcCdcbiAgICAgIGVuZFxuICAgIGluXG5cbiAgICAoKiBBdHRhY2ggdGhlIGFib3ZlIGNhbGxiYWNrLiBTaW11bHRhbmVvdXNseSBjb3VudCBob3cgbWFueSBwZW5kaW5nIHByb21pc2VzXG4gICAgICAgdGhlcmUgYXJlIGluIFtwc10gKGluaXRpYWxseSkuIElmIHRoYXQgbnVtYmVyIGlzIHplcm8sIHRoZSBbam9pbl0gbXVzdFxuICAgICAgIHJlc29sdmUgaW1tZWRpYXRlbHkuICopXG4gICAgbGV0IHJlYyBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwcyA9XG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmICFudW1iZXJfcGVuZGluZ19pbl9wcyA9IDAgdGhlblxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9ICFqb2luX3Jlc3VsdH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHAnXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgICAgIG51bWJlcl9wZW5kaW5nX2luX3BzIDo9ICFudW1iZXJfcGVuZGluZ19pbl9wcyArIDE7XG4gICAgICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgICAgICBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgICgqIEFzIGluIHRoZSBjYWxsYmFjayBhYm92ZSwgYnV0IGZvciBhbHJlYWR5LXJlc29sdmVkIHByb21pc2VzIGluXG4gICAgICAgICAgICAgW3BzXTogcmVqZWN0IHRoZSBbam9pbl0gd2l0aCB0aGUgc2FtZSBleGNlcHRpb24gYXMgaW4gdGhlIGZpcnN0XG4gICAgICAgICAgICAgcmVqZWN0ZWQgcHJvbWlzZSBmb3VuZC4gW2pvaW5dIHN0aWxsIHdhaXRzIGZvciBhbnkgcGVuZGluZyBwcm9taXNlc1xuICAgICAgICAgICAgIGJlZm9yZSBhY3R1YWxseSByZXNvbHZpbmcsIHRob3VnaC4gKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCAham9pbl9yZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRnVsZmlsbGVkICgpIC0+IGpvaW5fcmVzdWx0IDo9IHBfcmVzdWx0O1xuICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwc1xuXG4gICAgICAgIHwgRnVsZmlsbGVkICgpIC0+XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcbiAgICBpblxuXG4gICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAoKiB0aGlzIGlzIDMgd29yZHMsIHNtYWxsZXIgdGhhbiB0aGUgMiB0aW1lcyAyIHdvcmRzIGEgcGFpciBvZiByZWZlcmVuY2VzXG4gICAgIHdvdWxkIHRha2UuICopXG4gIHR5cGUgKCdhLCdiKSBwYWlyID0ge1xuICAgIG11dGFibGUgeDE6ICdhIG9wdGlvbjtcbiAgICBtdXRhYmxlIHgyOiAnYiBvcHRpb247XG4gIH1cblxuICBsZXQgYm90aCBwMSBwMiA9XG4gICAgbGV0IHBhaXIgPSB7eDEgPSBOb25lOyB4MiA9IE5vbmV9IGluXG4gICAgbGV0IHAxJyA9IGJpbmQgcDEgKGZ1biB2IC0+IHBhaXIueDEgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkgaW5cbiAgICBsZXQgcDInID0gYmluZCBwMiAoZnVuIHYgLT4gcGFpci54MiA8LSBTb21lIHY7IHJldHVybl91bml0KSBpblxuICAgIGpvaW4gW3AxJzsgcDInXSB8PiBtYXAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggcGFpci54MSwgcGFpci54MiB3aXRoXG4gICAgICB8IFNvbWUgdjEsIFNvbWUgdjIgLT4gdjEsIHYyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBhbGwgcHMgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+IHJldHVybl9uaWxcbiAgICB8IFt4XSAtPiBtYXAgKGZ1biB5IC0+IFt5XSkgeFxuICAgIHwgW3g7IHldIC0+IG1hcCAoZnVuICh4LCB5KSAtPiBbeDsgeV0pIChib3RoIHggeSlcbiAgICB8IF8gLT5cbiAgICAgIGxldCB2cyA9IEFycmF5Lm1ha2UgKExpc3QubGVuZ3RoIHBzKSBOb25lIGluXG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXBpIChmdW4gaW5kZXggcCAtPlxuICAgICAgICBiaW5kIHAgKGZ1biB2IC0+IHZzLihpbmRleCkgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkpXG4gICAgICB8PiBqb2luXG4gICAgICB8PiBtYXAgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCByZWMgdG9fbGlzdF91bm9wdCBpIGFjYyA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHZzIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IHRvX2xpc3RfdW5vcHQgKGkgLSAxKSAoeDo6YWNjKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdG9fbGlzdF91bm9wdCAoQXJyYXkubGVuZ3RoIHZzIC0gMSkgW10pXG5cbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IHRoZSBuZXh0IGZldyBmdW5jdGlvbnMgYXJlIGhlbHBlcnMgZm9yIFtjaG9vc2VdIGFuZFxuICAgICBbcGlja10uIFBlcmhhcHMgdGhleSBzaG91bGQgYmUgZmFjdG9yZWQgaW50byBzb21lIGtpbmQgb2YgZ2VuZXJpY1xuICAgICBbY2hvb3NlXS9bcGlja10gaW1wbGVtZW50YXRpb24sIHdoaWNoIG1heSBhY3R1YWxseSBiZSBvcHRpbWFsIGFueXdheSB3aXRoXG4gICAgIEZsYW1iZGEuICopXG5cbiAgbGV0IGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIChwcyA6ICdhIHQgbGlzdCkgPVxuICAgIGxldCByZWMgY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCB0b3RhbCByZWplY3RlZCBwcyA9XG4gICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgIHwgW10gLT4gRXJyb3IgKHRvdGFsLCByZWplY3RlZClcbiAgICAgICB8IHAgOjogcHMgLT5cbiAgICAgICAgICAgIGxldCBJbnRlcm5hbCBxID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgICAgICBtYXRjaCAodW5kZXJseWluZyBxKS5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHNcbiAgICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkICh0b3RhbCArIDEpIChwIDo6IHJlamVjdGVkKSBwc1xuICAgICAgICAgICAgfCBQZW5kaW5nIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCB0b3RhbCByZWplY3RlZCBwc1xuICAgIGluXG4gICAgbGV0IHJlYyBjb3VudF9mdWxmaWxsZWQgdG90YWwgcHMgPVxuICAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgICB8IFtdIC0+IE9rIHRvdGFsXG4gICAgICAgfCBwIDo6IHBzIC0+XG4gICAgICAgICAgICBsZXQgSW50ZXJuYWwgcSA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcSkuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBGdWxmaWxsZWQgXyAtPiBjb3VudF9mdWxmaWxsZWQgKHRvdGFsICsgMSkgcHNcbiAgICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIDEgW3BdIHBzXG4gICAgICAgICAgICB8IFBlbmRpbmcgXyAtPiBjb3VudF9mdWxmaWxsZWQgdG90YWwgcHNcbiAgICBpblxuICAgIGNvdW50X2Z1bGZpbGxlZCAwIHBzXG5cbiAgKCogRXZhbHVhdGVzIHRvIHRoZSBbbl10aCBwcm9taXNlIGluIFtwc10sIGFtb25nIG9ubHkgdGhvc2UgcHJvbWlzZXMgaW4gW3BzXVxuICAgICB0aGF0IGFyZSByZXNvbHZlZC4gVGhlIGNhbGxlciBpcyBleHBlY3RlZCB0byBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgYXRcbiAgICAgbGVhc3QgW25dIHJlc29sdmVkIHByb21pc2VzIGluIFtwc10uICopXG4gIGxldCByZWMgbnRoX3Jlc29sdmVkIChwcyA6ICdhIHQgbGlzdCkgKG4gOiBpbnQpIDogJ2EgdCA9XG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgfCBwOjpwcyAtPlxuICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICBtYXRjaCAodW5kZXJseWluZyBwJykuc3RhdGUgd2l0aFxuICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgbnRoX3Jlc29sdmVkIHBzIG5cblxuICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiBwXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkIHBzIChuIC0gMSlcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiBwXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkIHBzIChuIC0gMSlcblxuICAoKiBMaWtlIFtudGhfcmVzb2x2ZWRdLCBidXQgY2FuY2VscyBhbGwgcGVuZGluZyBwcm9taXNlcyBmb3VuZCB3aGlsZVxuICAgICB0cmF2ZXJzaW5nIFtwc10uICopXG4gIGxldCByZWMgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyAocHMgOiAnYSB0IGxpc3QpIChuIDogaW50KSA6ICdhIHQgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCcpLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgIGNhbmNlbCBwO1xuICAgICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIG5cblxuICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiAoTGlzdC5pdGVyIGNhbmNlbCBwczsgcClcbiAgICAgICAgZWxzZSBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIChuIC0gMSlcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiAoTGlzdC5pdGVyIGNhbmNlbCBwczsgcClcbiAgICAgICAgZWxzZSBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIChuIC0gMSlcblxuICAoKiBUaGUgUFJORyBzdGF0ZSBpcyBpbml0aWFsaXplZCB3aXRoIGEgY29uc3RhbnQgdG8gbWFrZSBub24tSU8tYmFzZWQgcHJvZ3JhbXNcbiAgICAgZGV0ZXJtaW5pc3RpYy4gKilcbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IGlzIHRoaXMgbmVjZXNzYXJ5PyAqKVxuICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlIFt8fF0pXG5cbiAgbGV0IGNob29zZSBwcyA9XG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkx3dC5jaG9vc2UgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIG1hdGNoIGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIHBzIHdpdGhcbiAgICB8IE9rIDAgLT5cbiAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHBcbiAgICAgIGluXG4gICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBPayAxIC0+XG4gICAgICBudGhfcmVzb2x2ZWQgcHMgMFxuXG4gICAgfCBPayBuIC0+XG4gICAgICBudGhfcmVzb2x2ZWQgcHMgKFJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgcHJuZykgbilcblxuICAgIHwgRXJyb3IgKG4sIHBzKSAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgbGV0IHBpY2sgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJMd3QucGljayBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbWF0Y2ggY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4gcHMgd2l0aFxuICAgIHwgT2sgMCAtPlxuICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcFxuICAgICAgaW5cbiAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IE9rIDEgLT5cbiAgICAgIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgcHMgMFxuXG4gICAgfCBPayBuIC0+XG4gICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzXG4gICAgICAgIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgICB8IEVycm9yIChuLCBxcykgLT5cbiAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICBudGhfcmVzb2x2ZWQgcXMgKFJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgcHJuZykgbilcblxuXG5cbiAgKCogSWYgW25jaG9vc2UgcHNdIG9yIFtucGljayBwc10gZm91bmQgYWxsIHByb21pc2VzIGluIFtwc10gcGVuZGluZywgdGhlXG4gICAgIGNhbGxiYWNrIGFkZGVkIHRvIGVhY2ggcHJvbWlzZSBpbiBbcHNdIGV2ZW50dWFsbHkgY2FsbHMgdGhpcyBmdW5jdGlvbi4gVGhlXG4gICAgIGZ1bmN0aW9uIGNvbGxlY3RzIHByb21pc2VzIGluIFtwc10gdGhhdCBoYXZlIGJlY29tZSBmdWxmaWxsZWQsIG9yIGZpbmRzIG9uZVxuICAgICBwcm9taXNlIGluIFtwc10gdGhhdCBoYXMgYmVlbiByZWplY3RlZC4gSXQgdGhlbiByZXR1cm5zIHRoZSBkZXNpcmVkIHN0YXRlXG4gICAgIG9mIHRoZSBmaW5hbCBwcm9taXNlOiBlaXRoZXIgdGhlIGxpc3Qgb2YgcmVzdWx0cyBjb2xsZWN0ZWQsIG9yIHRoZVxuICAgICBleGNlcHRpb24gZm91bmQuICopXG4gIGxldCByZWMgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZ1xuICAgICAgKHJlc3VsdHMgOiAnYSBsaXN0KVxuICAgICAgKHBzIDogJ2EgdCBsaXN0KSA6XG4gICAgICAgICgnYSBsaXN0IHJlc29sdmVkX3N0YXRlKSA9XG5cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgRnVsZmlsbGVkIChMaXN0LnJldiByZXN1bHRzKVxuXG4gICAgfCBwOjpwcyAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nICh2OjpyZXN1bHRzKSBwc1xuXG4gICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgIHJlc3VsdFxuXG4gICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nIHJlc3VsdHMgcHNcblxuICBsZXQgbmNob29zZSBwcyA9XG4gICAgKCogSWYgYXQgbGVhc3Qgb25lIHByb21pc2UgaW4gW3BzXSBpcyBmb3VuZCBmdWxmaWxsZWQsIHRoaXMgZnVuY3Rpb24gaXNcbiAgICAgICBjYWxsZWQgdG8gZmluZCBhbGwgc3VjaCBwcm9taXNlcy4gKilcbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIFwiTHd0Lm5jaG9vc2UgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwcyA9XG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCAodjo6YWNjKSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzXG4gICAgaW5cblxuICAgICgqIExvb2tzIGZvciBhbHJlYWR5LXJlc29sdmVkIHByb21pc2VzIGluIFtwc10uIElmIG5vbmUgYXJlIGZ1bGZpbGxlZCBvclxuICAgICAgIHJlamVjdGVkLCBhZGRzIGEgY2FsbGJhY2sgdG8gYWxsIHByb21pc2VzIGluIFtwc10gKGFsbCBvZiB3aGljaCBhcmVcbiAgICAgICBwZW5kaW5nKS4gKilcbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgW10gcHMgaW5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwXG4gICAgICAgIGluXG4gICAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgW3ZdIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMgaW5cbiAgICBwXG5cbiAgKCogU2VlIFtuY2hvb3NlXS4gVGhpcyBmdW5jdGlvbiBkaWZmZXJzIG9ubHkgaW4gaGF2aW5nIGFkZGl0aW9uYWwgY2FsbHMgdG9cbiAgICAgW2NhbmNlbF0uICopXG4gIGxldCBucGljayBwcyA9XG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkx3dC5ucGljayBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbGV0IHJlYyBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICByZXR1cm4gKExpc3QucmV2IGFjYylcblxuICAgICAgfCBwOjpwcycgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkICh2OjphY2MpIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHMnXG4gICAgaW5cblxuICAgIGxldCByZWMgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMnID1cbiAgICAgIG1hdGNoIHBzJyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgICBsZXQgY2FsbGJhY2sgX3Jlc3VsdCA9XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyBbXSBwcyBpblxuICAgICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBbdl0gcHMnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMnXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMgaW5cbiAgICBwXG5cblxuXG4gICgqIFNhbWUgZ2VuZXJhbCBwYXR0ZXJuIGFzIFtucGlja10gYW5kIFtuY2hvb3NlXS4gKilcbiAgbGV0IG5jaG9vc2Vfc3BsaXQgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgXCJMd3QubmNob29zZV9zcGxpdCBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbGV0IHJlYyBmaW5pc2hcbiAgICAgICAgKHRvX3Jlc29sdmUgOiAoJ2EgbGlzdCAqICdhIHQgbGlzdCwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSlcbiAgICAgICAgKGZ1bGZpbGxlZCA6ICdhIGxpc3QpXG4gICAgICAgIChwZW5kaW5nIDogJ2EgdCBsaXN0KVxuICAgICAgICAocHMgOiAnYSB0IGxpc3QpXG4gICAgICAgICAgOiAoJ2EgbGlzdCAqICdhIHQgbGlzdCwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlX2NoYW5nZWQgPVxuXG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSB0b19yZXNvbHZlXG4gICAgICAgICAgKEZ1bGZpbGxlZCAoTGlzdC5yZXYgZnVsZmlsbGVkLCBMaXN0LnJldiBwZW5kaW5nKSlcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBmaW5pc2ggdG9fcmVzb2x2ZSAodjo6ZnVsZmlsbGVkKSBwZW5kaW5nIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSB0b19yZXNvbHZlIHJlc3VsdFxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgZmluaXNoIHRvX3Jlc29sdmUgZnVsZmlsbGVkIChwOjpwZW5kaW5nKSBwc1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyByZXN1bHRzIHBlbmRpbmcgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogc2hvdWxkIHRoZSBwZW5kaW5nIHByb21pc2UgbGlzdCBhbHNvIGJlXG4gICAgICAgICAgIHJldmVyc2VkPyBJdCBpcyByZXZlcnNlZCBpbiBmaW5pc2guICopXG4gICAgICAgIHJldHVybiAoTGlzdC5yZXYgcmVzdWx0cywgcGVuZGluZylcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgKHY6OnJlc3VsdHMpIHBlbmRpbmcgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHJlc3VsdHMgKHA6OnBlbmRpbmcpIHBzXG4gICAgaW5cblxuICAgIGxldCByZWMgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcGVuZGluZ19hY2MgcHMnID1cbiAgICAgIG1hdGNoIHBzJyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgICBsZXQgY2FsbGJhY2sgX3Jlc3VsdCA9XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID0gZmluaXNoIHAgW10gW10gcHMgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBbdl0gcGVuZGluZ19hY2MgcHMnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIChwOjpwZW5kaW5nX2FjYykgcHMnXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgW10gcHMgaW5cbiAgICBwXG5lbmRcbmluY2x1ZGUgQ29uY3VycmVudF9jb21wb3NpdGlvblxuXG5cblxubW9kdWxlIE1pc2NlbGxhbmVvdXMgOlxuc2lnXG4gICgqIFByb21pc2Ugc3RhdGUgcXVlcnkgKilcbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBSZXR1cm4gb2YgJ2FcbiAgICB8IEZhaWwgb2YgZXhuXG4gICAgfCBTbGVlcFxuXG4gIHZhbCBzdGF0ZSA6ICdhIHQgLT4gJ2Egc3RhdGVcbiAgdmFsIGlzX3NsZWVwaW5nIDogJ2EgdCAtPiBib29sXG4gIHZhbCBkZWJ1Z19zdGF0ZV9pcyA6ICdhIHN0YXRlIC0+ICdhIHQgLT4gYm9vbCB0XG5cbiAgKCogRnVuY3Rpb24gbGlmdGVycyAqKVxuICB2YWwgYXBwbHkgOiAoJ2EgLT4gJ2IgdCkgLT4gJ2EgLT4gJ2IgdFxuXG4gIHZhbCB3cmFwIDpcbiAgICAodW5pdCAtPiAnYikgLT5cbiAgICAnYiB0XG4gIHZhbCB3cmFwMSA6XG4gICAgKCdhMSAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdiIHQpXG4gIHZhbCB3cmFwMiA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2IgdClcbiAgdmFsIHdyYXAzIDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdiIHQpXG4gIHZhbCB3cmFwNCA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdiIHQpXG4gIHZhbCB3cmFwNSA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2IgdClcbiAgdmFsIHdyYXA2IDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdiIHQpXG4gIHZhbCB3cmFwNyA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdiIHQpXG5cbiAgKCogUGF1c2VkIHByb21pc2VzICopXG4gIHZhbCBwYXVzZSA6IHVuaXQgLT4gdW5pdCB0XG4gIHZhbCB3YWtldXBfcGF1c2VkIDogdW5pdCAtPiB1bml0XG4gIHZhbCBwYXVzZWRfY291bnQgOiB1bml0IC0+IGludFxuICB2YWwgcmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIgOiAoaW50IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGFiYW5kb25fcGF1c2VkIDogdW5pdCAtPiB1bml0XG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlIGZvciBvdGhlciBtb2R1bGVzIGluIEx3dCAqKVxuICB2YWwgcG9sbCA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5lbmQgPVxuc3RydWN0XG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUmV0dXJuIG9mICdhXG4gICAgfCBGYWlsIG9mIGV4blxuICAgIHwgU2xlZXBcblxuICBleHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbiAgbGV0IHN0YXRlIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT4gUmV0dXJuIHZcbiAgICB8IFJlamVjdGVkIGV4biAtPiBGYWlsIGV4blxuICAgIHwgUGVuZGluZyBfIC0+IFNsZWVwXG5cbiAgbGV0IGRlYnVnX3N0YXRlX2lzIGV4cGVjdGVkX3N0YXRlIHAgPVxuICAgIHJldHVybiAoc3RhdGUgcCA9IGV4cGVjdGVkX3N0YXRlKVxuXG4gIGxldCBpc19zbGVlcGluZyBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IGZhbHNlXG4gICAgfCBSZWplY3RlZCBfIC0+IGZhbHNlXG4gICAgfCBQZW5kaW5nIF8gLT4gdHJ1ZVxuXG4gIGxldCBwb2xsIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgZSAtPiByZXJhaXNlIGVcbiAgICB8IEZ1bGZpbGxlZCB2IC0+IFNvbWUgdlxuICAgIHwgUGVuZGluZyBfIC0+IE5vbmVcblxuXG5cbiAgbGV0IGFwcGx5IGYgeCA9XG4gICAgdHJ5IGYgeCB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwIGYgPVxuICAgIHRyeSByZXR1cm4gKGYgKCkpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDEgZiB4MSA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSlcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwMiBmIHgxIHgyID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAzIGYgeDEgeDIgeDMgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDQgZiB4MSB4MiB4MyB4NCA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NClcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNSBmIHgxIHgyIHgzIHg0IHg1ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0IHg1KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA2IGYgeDEgeDIgeDMgeDQgeDUgeDYgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQgeDUgeDYpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDcgZiB4MSB4MiB4MyB4NCB4NSB4NiB4NyA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NCB4NSB4NiB4NylcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG5cblxuICBsZXQgcGF1c2VfaG9vayA9IHJlZiBpZ25vcmVcblxuICBsZXQgcGF1c2VkID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKVxuICBsZXQgcGF1c2VkX2NvdW50ID0gcmVmIDBcblxuICBsZXQgcGF1c2UgKCkgPVxuICAgIGxldCBwID0gYWRkX3Rhc2tfciBwYXVzZWQgaW5cbiAgICBpbmNyIHBhdXNlZF9jb3VudDtcbiAgICAhcGF1c2VfaG9vayAhcGF1c2VkX2NvdW50O1xuICAgIHBcblxuICBsZXQgd2FrZXVwX3BhdXNlZCAoKSA9XG4gICAgaWYgTHd0X3NlcXVlbmNlLmlzX2VtcHR5IHBhdXNlZCB0aGVuXG4gICAgICBwYXVzZWRfY291bnQgOj0gMFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB0bXAgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIGluXG4gICAgICBMd3Rfc2VxdWVuY2UudHJhbnNmZXJfciBwYXVzZWQgdG1wO1xuICAgICAgcGF1c2VkX2NvdW50IDo9IDA7XG4gICAgICBMd3Rfc2VxdWVuY2UuaXRlcl9sIChmdW4gciAtPiB3YWtldXAgciAoKSkgdG1wXG4gICAgZW5kXG5cbiAgbGV0IHJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIGYgPSBwYXVzZV9ob29rIDo9IGZcblxuICBsZXQgYWJhbmRvbl9wYXVzZWQgKCkgPVxuICAgIEx3dF9zZXF1ZW5jZS5jbGVhciBwYXVzZWQ7XG4gICAgcGF1c2VkX2NvdW50IDo9IDBcblxuICBsZXQgcGF1c2VkX2NvdW50ICgpID0gIXBhdXNlZF9jb3VudFxuZW5kXG5pbmNsdWRlIE1pc2NlbGxhbmVvdXNcblxubW9kdWxlIExldF9zeW50YXggPVxuc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID1cbiAgc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgdCB+ZiA9IG1hcCBmIHRcbiAgICBsZXQgYmluZCB0IH5mID0gYmluZCB0IGZcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9XG4gICAgc3RydWN0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbmZpeCA9XG5zdHJ1Y3RcbiAgbGV0ICg+Pj0pID0gYmluZFxuICBsZXQgKD08PCkgZiBwID0gYmluZCBwIGZcbiAgbGV0ICg+fD0pIHAgZiA9IG1hcCBmIHBcbiAgbGV0ICg9fDwpID0gbWFwXG4gIGxldCAoPCY+KSBwIHAnID0gam9pbiBbcDsgcCddXG4gIGxldCAoPD8+KSBwIHAnID0gY2hvb3NlIFtwOyBwJ11cblxuICBpbmNsdWRlIExldF9zeW50YXhcbmVuZFxuaW5jbHVkZSAoIEluZml4IDogbW9kdWxlIHR5cGUgb2YgSW5maXggd2l0aCBtb2R1bGUgTGV0X3N5bnRheCA6PSBMZXRfc3ludGF4LkxldF9zeW50YXggKVxuXG5tb2R1bGUgU3ludGF4ID1cbnN0cnVjdFxuICBsZXQgKGxldCopID0gYmluZFxuICBsZXQgKGFuZCopID0gYm90aFxuXG4gIGxldCAobGV0KykgeCBmID0gbWFwIGYgeFxuICBsZXQgKGFuZCspID0gYm90aFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbmV4Y2VwdGlvbiBPZmZcblxudHlwZSBvbl9zd2l0Y2ggPSB7XG4gIG11dGFibGUgaG9va3MgOiAodW5pdCAtPiB1bml0IEx3dC50KSBsaXN0O1xufVxuXG50eXBlIHN0YXRlID1cbiAgfCBTdF9vbiBvZiBvbl9zd2l0Y2hcbiAgfCBTdF9vZmZcblxudHlwZSB0ID0geyBtdXRhYmxlIHN0YXRlIDogc3RhdGUgfVxuXG5sZXQgY3JlYXRlICgpID0geyBzdGF0ZSA9IFN0X29uIHsgaG9va3MgPSBbXSB9IH1cblxubGV0IGlzX29uIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaC5zdGF0ZSB3aXRoXG4gIHwgU3Rfb24gXyAtPiB0cnVlXG4gIHwgU3Rfb2ZmIC0+IGZhbHNlXG5cbmxldCBjaGVjayA9IGZ1bmN0aW9uXG4gIHwgU29tZXsgc3RhdGUgPSBTdF9vZmYgfSAtPiByYWlzZSBPZmZcbiAgfCBTb21lIHtzdGF0ZSA9IFN0X29uIF99IHwgTm9uZSAtPiAoKVxuXG5sZXQgYWRkX2hvb2sgc3dpdGNoIGhvb2sgPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29uIG9zIH0gLT5cbiAgICBvcy5ob29rcyA8LSBob29rIDo6IG9zLmhvb2tzXG4gIHwgU29tZSB7IHN0YXRlID0gU3Rfb2ZmIH0gLT5cbiAgICByYWlzZSBPZmZcbiAgfCBOb25lIC0+XG4gICAgKClcblxubGV0IGFkZF9ob29rX29yX2V4ZWMgc3dpdGNoIGhvb2sgPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29uIG9zIH0gLT5cbiAgICBvcy5ob29rcyA8LSBob29rIDo6IG9zLmhvb2tzO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29mZiB9IC0+XG4gICAgaG9vayAoKVxuICB8IE5vbmUgLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHR1cm5fb2ZmIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaC5zdGF0ZSB3aXRoXG4gIHwgU3Rfb24geyBob29rcyA9IGhvb2tzIH0gLT5cbiAgICBzd2l0Y2guc3RhdGUgPC0gU3Rfb2ZmO1xuICAgIEx3dC5qb2luIChMaXN0Lm1hcCAoZnVuIGhvb2sgLT4gTHd0LmFwcGx5IGhvb2sgKCkpIGhvb2tzKVxuICB8IFN0X29mZiAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgd2l0aF9zd2l0Y2ggZm4gPVxuICBsZXQgc3dpdGNoID0gY3JlYXRlICgpIGluXG4gIEx3dC5maW5hbGl6ZVxuICAgIChmdW4gKCkgLT4gZm4gc3dpdGNoKVxuICAgIChmdW4gKCkgLT4gdHVybl9vZmYgc3dpdGNoKVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5vcGVuIEx3dC5TeW50YXhcbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgKydhIG5vZGUgPSBOaWwgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZSBMd3QudFxuXG5sZXQgcmV0dXJuX25pbCA9IEx3dC5yZXR1cm4gTmlsXG5cbmxldCBlbXB0eSA6ICdhIHQgPSBmdW4gKCkgLT4gcmV0dXJuX25pbFxuXG5sZXQgcmV0dXJuICh4IDogJ2EpIDogJ2EgdCA9IGZ1biAoKSAtPiBMd3QucmV0dXJuIChDb25zICh4LCBlbXB0eSkpXG5cbmxldCByZXR1cm5fbHd0ICh4IDogJ2EgTHd0LnQpIDogJ2EgdCA9IGZ1biAoKSAtPlxuICAgbGV0KyB4ID0geCBpblxuICAgQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggdCAoKSA9IEx3dC5yZXR1cm4gKENvbnMgKHgsIHQpKVxuXG5sZXQgY29uc19sd3QgeCB0ICgpID1cbiAgIGxldCsgeCA9IHggaW5cbiAgIENvbnMgKHgsIHQpXG5cbigqIEEgbm90ZSBvbiByZWN1cnNpbmcgdGhyb3VnaCB0aGUgc2VxczpcbiAgIFdoZW4gdHJhdmVyc2luZyBhIHNlcSwgdGhlIGZpcnN0IHRpbWUgd2UgZXZhbHVhdGUgYSBzdXNwZW5kZWQgbm9kZSB3ZSBhcmVcbiAgIG9uIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBiaW5kICg+Pj0pLiBJbiB0aGF0IGNhc2UsIHdlIHVzZSBhcHBseSB0byBjYXB0dXJlXG4gICBleGNlcHRpb25zIGludG8gcHJvbWlzZSByZWplY3Rpb24uXG5cbiAgIFRoaXMgaXMgb25seSBuZWVkZWQgb24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBiZWNhdXNlIHdlIGFyZSB3aXRoaW4gYSBjYWxsYmFja1xuICAgcGFzc2VkIHRvIEx3dCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGEgYmluZCBhZnRlciB0aGF0LlxuXG4gICBUaHJvdWdob3V0IHRoaXMgZmlsZSB3ZSB1c2UgdGhlIHNhbWUgY29kZSBwYXR0ZXJuIHRvIGFjaGlldmUgdGhpczogd2VcbiAgIHNoYWRvdyB0aGUgcmVjdXJzaXZlIHRyYXZlcnNhbCBmdW5jdGlvbiB3aXRoIGFuIGlkZW50aWNhbC1idXQtZm9yLXRoZS1hcHBseVxuICAgbm9uLXJlY3Vyc2l2ZSBjb3B5LiAqKVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBzZXExICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBzZXEyICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMikpXG5sZXQgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIEx3dC5hcHBseSBzZXExICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBzZXEyICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMikpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID58PSBmdW5jdGlvblxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcCBmIG5leHQpXG5sZXQgbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+fD0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIG1hcF9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCsgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwX3MgZiBuZXh0KVxubGV0IG1hcF9zIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQrIHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcF9zIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dCkgKSlcbmxldCBmaWx0ZXJfbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpICkpXG5cbmxldCByZWMgZmlsdGVyX21hcF9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0KiB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwX3MgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwX3MgZiBuZXh0KSApKVxubGV0IGZpbHRlcl9tYXBfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQqIHggPSBmIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXBfcyBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXBfcyBmIG5leHQpICkpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCBvayA9IGYgeCBpblxuICAgICAgaWYgb2sgdGhlbiBMd3QucmV0dXJuIChDb25zICh4LCBmaWx0ZXIgZiBuZXh0KSkgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5sZXQgZmlsdGVyIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyIGYgbmV4dCkpIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGZpbHRlcl9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCogb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyX3MgZiBuZXh0KSkgZWxzZSBmaWx0ZXJfcyBmIG5leHQgKClcbmxldCBmaWx0ZXJfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KiBvayA9IGYgeCBpblxuICAgICAgaWYgb2sgdGhlbiBMd3QucmV0dXJuIChDb25zICh4LCBmaWx0ZXJfcyBmIG5leHQpKSBlbHNlIGZpbHRlcl9zIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGZsYXRfbWFwX2FwcCBmIChmIHgpIG5leHQgKClcblxuKCogdGhpcyBpcyBbYXBwZW5kIHNlcSAoZmxhdF9tYXAgZiB0YWlsKV0gKilcbmFuZCBmbGF0X21hcF9hcHAgZiBzZXEgdGFpbCAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gZmxhdF9tYXAgZiB0YWlsICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmxhdF9tYXBfYXBwIGYgbmV4dCB0YWlsKSlcblxubGV0IGZsYXRfbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBmbGF0X21hcF9hcHAgZiAoZiB4KSBuZXh0ICgpXG5cbmxldCBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGxldCBhdXggZiBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBhdXggZiBhY2Mgc2VxXG5cbmxldCBmb2xkX2xlZnRfcyBmIGFjYyBzZXEgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGxldCBhdXggZiBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQqIGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgaXRlciBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBhdXggbmV4dFxuICBpblxuICBsZXQgYXV4IHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgaXRlcl9zIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQqICgpID0gZiB4IGluXG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGxldCBhdXggc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiAoKSA9IGYgeCBpblxuICAgICAgICBhdXggbmV4dFxuICBpblxuICBhdXggc2VxXG5cbmxldCBpdGVyX3AgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LmpvaW4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgcCA9IGYgeCBpblxuICAgICAgICBhdXggKHA6OmFjYykgbmV4dFxuICBpblxuICBsZXQgYXV4IGFjYyBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LmpvaW4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgcCA9IGYgeCBpblxuICAgICAgICBhdXggKHA6OmFjYykgbmV4dFxuICBpblxuICBhdXggW10gc2VxXG5cbmxldCBpdGVyX24gPyhtYXhfY29uY3VycmVuY3kgPSAxKSBmIHNlcSA9XG4gIGJlZ2luXG4gICAgaWYgbWF4X2NvbmN1cnJlbmN5IDw9IDAgdGhlblxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiTHd0X3NlcS5pdGVyX246IG1heF9jb25jdXJyZW5jeSBtdXN0IGJlID4gMCwgJWQgZ2l2ZW5cIlxuICAgICAgICAgIG1heF9jb25jdXJyZW5jeVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIG1lc3NhZ2VcbiAgZW5kO1xuICBsZXQgcmVjIGxvb3AgcnVubmluZyBhdmFpbGFibGUgc2VxID1cbiAgICBiZWdpblxuICAgICAgaWYgYXZhaWxhYmxlID4gMCB0aGVuIChcbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlKVxuICAgICAgKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEx3dC5uY2hvb3NlX3NwbGl0IHJ1bm5pbmcgPj49IGZ1biAoY29tcGxldGUsIHJ1bm5pbmcpIC0+XG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSArIExpc3QubGVuZ3RoIGNvbXBsZXRlKVxuICAgICAgKVxuICAgIGVuZCA+Pj0gZnVuIChydW5uaW5nLCBhdmFpbGFibGUpIC0+XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICBMd3Quam9pbiBydW5uaW5nXG4gICAgfCBDb25zIChlbHQsIHNlcSkgLT5cbiAgICAgIGxvb3AgKGYgZWx0IDo6IHJ1bm5pbmcpIChwcmVkIGF2YWlsYWJsZSkgc2VxXG4gIGluXG4gICgqIGJlY2F1c2UgdGhlIHJlY3Vyc2lvbiBpcyBtb3JlIGNvbXBsaWNhdGVkIGhlcmUsIHdlIGFwcGx5IHRoZSBzZXEgZGlyZWN0bHkgYXRcbiAgICAgdGhlIGNhbGwtc2l0ZSBpbnN0ZWFkICopXG4gIGxvb3AgW10gbWF4X2NvbmN1cnJlbmN5IChmdW4gKCkgLT4gTHd0LmFwcGx5IHNlcSAoKSlcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkIGYgdScpKVxuICB8IGV4Y2VwdGlvbiBleGMgd2hlbiBMd3QuRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhjIC0+IEx3dC5mYWlsIGV4Y1xuXG5sZXQgcmVjIHVuZm9sZF9sd3QgZiB1ICgpID1cbiAgbGV0KiB4ID0gZiB1IGluXG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gcmV0dXJuX25pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBMd3QucmV0dXJuIChDb25zICh4LCB1bmZvbGRfbHd0IGYgdScpKVxubGV0IHVuZm9sZF9sd3QgZiB1ICgpID1cbiAgbGV0KiB4ID0gTHd0LmFwcGx5IGYgdSBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkX2x3dCBmIHUnKSlcblxubGV0IHJlYyBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBlbXB0eVxuICB8IGggOjogdCAtPiBjb25zIGggKG9mX2xpc3QgdClcblxubGV0IHJlYyB0b19saXN0IHNlcSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTHd0LnJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGxldCsgbCA9IHRvX2xpc3QgbmV4dCBpblxuICAgIHggOjogbFxubGV0IHRvX2xpc3Qgc2VxID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTHd0LnJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGxldCsgbCA9IHRvX2xpc3QgbmV4dCBpblxuICAgIHggOjogbFxuXG5sZXQgcmVjIG9mX3NlcSBzZXEgKCkgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gcmV0dXJuX25pbFxuICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgIEx3dC5yZXR1cm4gKENvbnMgKHgsIChvZl9zZXEgbmV4dCkpKVxuICB8IGV4Y2VwdGlvbiBleG4gd2hlbiBMd3QuRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IEx3dC5mYWlsIGV4blxuXG5sZXQgcmVjIG9mX3NlcV9sd3QgKHNlcTogJ2EgTHd0LnQgU2VxLnQpOiAnYSB0ID0gZnVuICgpIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gcmV0dXJuX25pbFxuICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgbGV0KyB4ID0geCBpblxuICAgICAgIGxldCBuZXh0ID0gb2Zfc2VxX2x3dCBuZXh0IGluXG4gICAgICAgQ29ucyAoeCwgbmV4dClcbmxldCBvZl9zZXFfbHd0IChzZXE6ICdhIEx3dC50IFNlcS50KTogJ2EgdCA9IGZ1biAoKSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgICAgIGxldCsgeCA9IHggaW5cbiAgICAgICBsZXQgbmV4dCA9IG9mX3NlcV9sd3QgbmV4dCBpblxuICAgICAgIENvbnMgKHgsIG5leHQpXG4gICAgfCBleGNlcHRpb24gZXhjIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4YyAtPiBMd3QuZmFpbCBleGNcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5leGNlcHRpb24gQ2xvc2VkXG5leGNlcHRpb24gRnVsbFxuZXhjZXB0aW9uIEVtcHR5XG5cbigqIEEgbm9kZSBpbiBhIHF1ZXVlIG9mIHBlbmRpbmcgZGF0YS4gKilcbnR5cGUgJ2Egbm9kZSA9IHtcbiAgbXV0YWJsZSBuZXh0IDogJ2Egbm9kZTtcbiAgKCogTmV4dCBub2RlIGluIHRoZSBxdWV1ZS4gRm9yIHRoZSBsYXN0IG5vZGUgaXQgcG9pbnRzIHRvIGl0c2VsZi4gKilcbiAgbXV0YWJsZSBkYXRhIDogJ2Egb3B0aW9uO1xuICAoKiBEYXRhIG9mIHRoaXMgbm9kZS4gRm9yIHRoZSBsYXN0IG5vZGUgaXQgaXMgYWx3YXlzIFtOb25lXS4gKilcbn1cblxuKCogTm90ZTogYSBxdWV1ZSBmb3IgYW4gZXhoYXVzdGVkIHN0cmVhbSBpcyByZXByZXNlbnRlZCBieSBhIG5vZGVcbiAgIGNvbnRhaW5pbmcgW05vbmVdIGZvbGxvd2VkIGJ5IGEgbm9kZSB3aXRoIGl0c2VsZiBhcyBuZXh0IGFuZCBbTm9uZV1cbiAgIGFzIGRhdGEuICopXG5cbmxldCBuZXdfbm9kZSAoKSA9XG4gIGxldCByZWMgbm9kZSA9IHsgbmV4dCA9IG5vZGU7IGRhdGEgPSBOb25lIH0gaW5cbiAgbm9kZVxuXG4oKiBUeXBlIG9mIGEgc3RyZWFtIHNvdXJjZSB1c2luZyBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSBuZXcgZWxlbWVudHMuICopXG50eXBlICdhIGZyb20gPSB7XG4gIGZyb21fY3JlYXRlIDogdW5pdCAtPiAnYSBvcHRpb24gTHd0LnQ7XG4gICgqIEZ1bmN0aW9uIHVzZWQgdG8gY3JlYXRlIG5ldyBlbGVtZW50cy4gKilcbiAgbXV0YWJsZSBmcm9tX3RocmVhZCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCB3aGljaDpcblxuICAgICAtIHdhaXQgZm9yIHRoZSB0aHJlYWQgcmV0dXJuZWQgYnkgdGhlIGxhc3QgY2FsbCB0byBbZnJvbV9uZXh0XSxcbiAgICAgLSBhZGQgdGhlIG5leHQgZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZS5cblxuICAgICBJZiBpdCBpcyBhIHNsZWVwaW5nIHRocmVhZCwgdGhlbiBpdCBtdXN0IGJlIHVzZWQgaW5zdGVhZCBvZiBjcmVhdGluZyBhXG4gICAgIG5ldyBvbmUgd2l0aCBbZnJvbV9jcmVhdGVdLiAqKVxufVxuXG4oKiBUeXBlIG9mIGEgc3RyZWFtIHNvdXJjZSBmb3IgcHVzaCBzdHJlYW1zLiAqKVxudHlwZSBwdXNoID0ge1xuICBtdXRhYmxlIHB1c2hfc2lnbmFsIDogdW5pdCBMd3QudDtcbiAgKCogVGhyZWFkIHNpZ25hbGVkIHdoZW4gYSBuZXcgZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RyZWFtLiAqKVxuICBtdXRhYmxlIHB1c2hfd2FpdGluZyA6IGJvb2w7XG4gICgqIElzIGEgdGhyZWFkIHdhaXRpbmcgb24gW3B1c2hfc2lnbmFsXSA/ICopXG4gIG11dGFibGUgcHVzaF9leHRlcm5hbCA6IE9iai50IFtAb2NhbWwud2FybmluZyBcIi02OVwiXTtcbiAgKCogUmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIHNvdXJjZS4gKilcbn1cblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgZm9yIGJvdW5kZWQtcHVzaCBzdHJlYW1zLiAqKVxudHlwZSAnYSBwdXNoX2JvdW5kZWQgPSB7XG4gIG11dGFibGUgcHVzaGJfc2lnbmFsIDogdW5pdCBMd3QudDtcbiAgKCogVGhyZWFkIHNpZ25hbGVkIHdoZW4gYSBuZXcgZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RyZWFtLiAqKVxuICBtdXRhYmxlIHB1c2hiX3dhaXRpbmcgOiBib29sO1xuICAoKiBJcyBhIHRocmVhZCB3YWl0aW5nIG9uIFtwdXNoYl9zaWduYWxdID8gKilcbiAgbXV0YWJsZSBwdXNoYl9zaXplIDogaW50O1xuICAoKiBTaXplIG9mIHRoZSBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwdXNoYl9jb3VudCA6IGludDtcbiAgKCogQ3VycmVudCBsZW5ndGggb2YgdGhlIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHB1c2hiX3BlbmRpbmcgOiAnYSBvcHRpb247XG4gICgqIFRoZSBuZXh0IGVsZW1lbnQgdG8gcHVzaCBpZiBhIHRocmVhZCBibG9ja2VkIG9uIHB1c2guIFdlIHN0b3JlIGl0XG4gICAgIGhlcmUgdG8gYmUgc3VyZSBpdCB3aWxsIGJlIHRoZSBmaXJzdCBlbGVtZW50IHRvIGJlIGFkZGVkIHdoZW5cbiAgICAgc3BhY2UgYmVjb21lcyBhdmFpbGFibGUuICopXG4gIG11dGFibGUgcHVzaGJfcHVzaF93YWl0ZXIgOiB1bml0IEx3dC50O1xuICBtdXRhYmxlIHB1c2hiX3B1c2hfd2FrZW5lciA6IHVuaXQgTHd0LnU7XG4gICgqIFRocmVhZCBibG9ja2VkIG9uIHB1c2guICopXG4gIG11dGFibGUgcHVzaGJfZXh0ZXJuYWwgOiBPYmoudCBbQG9jYW1sLndhcm5pbmcgXCItNjlcIl07XG4gICgqIFJlZmVyZW5jZSB0byBhbiBleHRlcm5hbCBzb3VyY2UuICopXG59XG5cbigqIFNvdXJjZSBvZiBhIHN0cmVhbS4gKilcbnR5cGUgJ2Egc291cmNlID1cbiAgfCBGcm9tIG9mICdhIGZyb21cbiAgfCBGcm9tX2RpcmVjdCBvZiAodW5pdCAtPiAnYSBvcHRpb24pXG4gIHwgUHVzaCBvZiBwdXNoXG4gIHwgUHVzaF9ib3VuZGVkIG9mICdhIHB1c2hfYm91bmRlZFxuXG50eXBlICdhIHQgPSB7XG4gIHNvdXJjZSA6ICdhIHNvdXJjZTtcbiAgKCogVGhlIHNvdXJjZSBvZiB0aGUgc3RyZWFtLiAqKVxuICBjbG9zZSA6IHVuaXQgTHd0LnU7XG4gICgqIEEgd2FrZW5lciBmb3IgYSB0aHJlYWQgdGhhdCBzbGVlcHMgdW50aWwgdGhlIHN0cmVhbSBpcyBjbG9zZWQuICopXG4gIGNsb3NlZCA6IHVuaXQgTHd0LnQ7XG4gICgqIEEgd2FpdGVyIGZvciBhIHRocmVhZCB0aGF0IHNsZWVwcyB1bnRpbCB0aGUgc3RyZWFtIGlzIGNsb3NlZC4gKilcbiAgbXV0YWJsZSBub2RlIDogJ2Egbm9kZTtcbiAgKCogUG9pbnRlciB0byBmaXJzdCBwZW5kaW5nIGVsZW1lbnQsIG9yIHRvIFtsYXN0XSBpZiB0aGVyZSBpcyBub1xuICAgICBwZW5kaW5nIGVsZW1lbnQuICopXG4gIGxhc3QgOiAnYSBub2RlIHJlZjtcbiAgKCogTm9kZSBtYXJraW5nIHRoZSBlbmQgb2YgdGhlIHF1ZXVlIG9mIHBlbmRpbmcgZWxlbWVudHMuICopXG59XG5cbmNsYXNzIHR5cGUgWydhXSBib3VuZGVkX3B1c2ggPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnRcbiAgbWV0aG9kIHJlc2l6ZSA6IGludCAtPiB1bml0XG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgY2xvc2UgOiB1bml0XG4gIG1ldGhvZCBjb3VudCA6IGludFxuICBtZXRob2QgYmxvY2tlZCA6IGJvb2xcbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2xcbiAgbWV0aG9kIHNldF9yZWZlcmVuY2UgOiAnYS4gJ2EgLT4gdW5pdFxuZW5kXG5cbigqIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gY2xvbmVzIGlzIHRoZSBwb2ludGVyIHRvIHRoZSBmaXJzdFxuICAgcGVuZGluZyBlbGVtZW50LiAqKVxubGV0IGNsb25lIHMgPVxuICAobWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICAgfCBQdXNoX2JvdW5kZWQgXyAtPiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uY2xvbmVcIlxuICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+ICgpKTtcbiAge1xuICAgIHNvdXJjZSA9IHMuc291cmNlO1xuICAgIGNsb3NlID0gcy5jbG9zZTtcbiAgICBjbG9zZWQgPSBzLmNsb3NlZDtcbiAgICBub2RlID0gcy5ub2RlO1xuICAgIGxhc3QgPSBzLmxhc3Q7XG4gIH1cblxubGV0IGZyb21fc291cmNlIHNvdXJjZSA9XG4gIGxldCBub2RlID0gbmV3X25vZGUgKCkgaW5cbiAgbGV0IGNsb3NlZCwgY2xvc2UgPSBMd3Qud2FpdCAoKSBpblxuICB7IHNvdXJjZSA7IGNsb3NlIDsgY2xvc2VkIDsgbm9kZSA7IGxhc3QgPSByZWYgbm9kZSB9XG5cbmxldCBmcm9tIGYgPVxuICBmcm9tX3NvdXJjZSAoRnJvbSB7IGZyb21fY3JlYXRlID0gZjsgZnJvbV90aHJlYWQgPSBMd3QucmV0dXJuX3VuaXQgfSlcblxubGV0IGZyb21fZGlyZWN0IGYgPVxuICBmcm9tX3NvdXJjZSAoRnJvbV9kaXJlY3QgZilcblxubGV0IGNsb3NlZCBzID0gcy5jbG9zZWRcblxubGV0IGlzX2Nsb3NlZCBzID1cbiAgbm90IChMd3QuaXNfc2xlZXBpbmcgKGNsb3NlZCBzKSlcblxubGV0IGVucXVldWUnIGUgbGFzdCA9XG4gIGxldCBub2RlID0gIWxhc3RcbiAgYW5kIG5ld19sYXN0ID0gbmV3X25vZGUgKCkgaW5cbiAgbm9kZS5kYXRhIDwtIGU7XG4gIG5vZGUubmV4dCA8LSBuZXdfbGFzdDtcbiAgbGFzdCA6PSBuZXdfbGFzdFxuXG5sZXQgZW5xdWV1ZSBlIHMgPVxuICBlbnF1ZXVlJyBlIHMubGFzdFxuXG5sZXQgY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpID1cbiAgKCogQ3JlYXRlIHRoZSBzb3VyY2UgZm9yIG5vdGlmaWNhdGlvbnMgb2YgbmV3IGVsZW1lbnRzLiAqKVxuICBsZXQgc291cmNlLCBwdXNoX3NpZ25hbF9yZXNvbHZlciA9XG4gICAgbGV0IHB1c2hfc2lnbmFsLCBwdXNoX3NpZ25hbF9yZXNvbHZlciA9IEx3dC53YWl0ICgpIGluXG4gICAgKHsgcHVzaF9zaWduYWw7XG4gICAgICAgcHVzaF93YWl0aW5nID0gZmFsc2U7XG4gICAgICAgcHVzaF9leHRlcm5hbCA9IE9iai5yZXByICgpIH0sXG4gICAgIHJlZiBwdXNoX3NpZ25hbF9yZXNvbHZlcilcbiAgaW5cbiAgbGV0IHQgPSBmcm9tX3NvdXJjZSAoUHVzaCBzb3VyY2UpIGluXG4gICgqIFtwdXNoXSBzaG91bGQgbm90IGNsb3NlIG92ZXIgW3RdIHNvIHRoYXQgaXQgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW5cbiAgICogdGhlcmUgYXJlIHN0aWxsIHJlZmVyZW5jZXMgdG8gW3B1c2hdLiBVbnBhY2sgYWxsIHRoZSBjb21wb25lbnRzIG9mIFt0XVxuICAgKiB0aGF0IFtwdXNoXSBuZWVkcyBhbmQgcmVmZXJlbmNlIHRob3NlIGlkZW50aWZpZXJzIGluc3RlYWQuICopXG4gIGxldCBjbG9zZSA9IHQuY2xvc2UgYW5kIGNsb3NlZCA9IHQuY2xvc2VkIGFuZCBsYXN0ID0gdC5sYXN0IGluXG4gICgqIFRoZSBwdXNoIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJlYW0uICopXG4gIGxldCBwdXNoIHggPVxuICAgIGlmIG5vdCAoTHd0LmlzX3NsZWVwaW5nIGNsb3NlZCkgdGhlbiByYWlzZSBDbG9zZWQ7XG4gICAgKCogUHVzaCB0aGUgZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICBlbnF1ZXVlJyB4IGxhc3Q7XG4gICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgZWxlbWVudC4gKilcbiAgICBpZiBzb3VyY2UucHVzaF93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgIHNvdXJjZS5wdXNoX3dhaXRpbmcgPC0gZmFsc2U7XG4gICAgICAoKiBVcGRhdGUgdGhyZWFkcy4gKilcbiAgICAgIGxldCBvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSAhcHVzaF9zaWduYWxfcmVzb2x2ZXIgaW5cbiAgICAgIGxldCBuZXdfd2FpdGVyLCBuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICAgc291cmNlLnB1c2hfc2lnbmFsIDwtIG5ld193YWl0ZXI7XG4gICAgICBwdXNoX3NpZ25hbF9yZXNvbHZlciA6PSBuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXI7XG4gICAgICAoKiBTaWduYWwgdGhhdCBhIG5ldyB2YWx1ZSBoYXMgYmVlbiByZWNlaXZlZC4gKilcbiAgICAgIEx3dC53YWtldXBfbGF0ZXIgb2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyICgpXG4gICAgZW5kO1xuICAgICgqIERvIHRoaXMgYXQgdGhlIGVuZCBpbiBjYXNlIG9uZSBvZiB0aGUgZnVuY3Rpb24gcmFpc2UgYW5cbiAgICAgICBleGNlcHRpb24uICopXG4gICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIGNsb3NlICgpXG4gIGluXG4gICh0LCBwdXNoLCBmdW4geCAtPiBzb3VyY2UucHVzaF9leHRlcm5hbCA8LSBPYmoucmVwciB4KVxuXG5sZXQgcmV0dXJuIGEgPVxuICBsZXQgc3RyZWFtLCBwdXNoLCBfID0gY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gIHB1c2ggKFNvbWUgYSk7XG4gIHB1c2ggTm9uZTtcbiAgc3RyZWFtXG5cbmxldCByZXR1cm5fbHd0IGEgPVxuICBsZXQgc291cmNlLCBwdXNoLCBfID0gY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gIEx3dC5kb250X3dhaXRcbiAgICAoZnVuICgpIC0+XG4gICAgICBMd3QuYmluZCBhIChmdW4geCAtPlxuICAgICAgICBwdXNoIChTb21lIHgpO1xuICAgICAgICBwdXNoIE5vbmU7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG4gICAgKGZ1biBfZXhjIC0+IHB1c2ggTm9uZSk7XG4gIHNvdXJjZVxuXG5sZXQgb2Zfc2VxIHMgPVxuICBsZXQgcyA9IHJlZiBzIGluXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFzICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgIHwgU2VxLkNvbnMgKGVsdCwgcycpIC0+IHMgOj0gcyc7IFNvbWUgZWx0XG4gIGluXG4gIGZyb21fZGlyZWN0IGdldFxuXG5sZXQgb2ZfbHd0X3NlcSBzID1cbiAgbGV0IHMgPSByZWYgcyBpblxuICBsZXQgZ2V0ICgpID1cbiAgICAhcyAoKSA+fD0gZnVuY3Rpb25cbiAgICB8IEx3dF9zZXEuTmlsIC0+IE5vbmVcbiAgICB8IEx3dF9zZXEuQ29ucyAoZWx0LCBzJykgLT4gcyA6PSBzJzsgU29tZSBlbHRcbiAgaW5cbiAgZnJvbSBnZXRcblxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IHNvdXJjZSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICAoc291cmNlLCBwdXNoKVxuXG5sZXQgb2ZfaXRlciBpdGVyIGkgPVxuICBsZXQgc3RyZWFtLCBwdXNoID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgKGZ1biB4IC0+IHB1c2ggKFNvbWUgeCkpIGk7XG4gIHB1c2ggTm9uZTtcbiAgc3RyZWFtXG5cbmxldCBvZl9saXN0IGwgPVxuICBvZl9pdGVyIExpc3QuaXRlciBsXG5cbmxldCBvZl9hcnJheSBhID1cbiAgb2ZfaXRlciBBcnJheS5pdGVyIGFcblxubGV0IG9mX3N0cmluZyBzID1cbiAgb2ZfaXRlciBTdHJpbmcuaXRlciBzXG5cbigqIEFkZCB0aGUgcGVuZGluZyBlbGVtZW50IHRvIHRoZSBxdWV1ZSBhbmQgbm90aWZ5IHRoZSBibG9ja2VkIHB1c2hlZC5cblxuICAgUHJlY29uZGl0aW9uOiBpbmZvLnB1c2hiX3BlbmRpbmcgPSBTb21lIF9cblxuICAgVGhpcyBkb2VzIG5vdCBtb2RpZnkgaW5mby5wdXNoYl9jb3VudC4gKilcbmxldCBub3RpZnlfcHVzaGVyIGluZm8gbGFzdCA9XG4gICgqIFB1c2ggdGhlIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gIGVucXVldWUnIGluZm8ucHVzaGJfcGVuZGluZyBsYXN0O1xuICAoKiBDbGVhciBwZW5kaW5nIGVsZW1lbnQuICopXG4gIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAoKiBXYWtldXAgdGhlIHB1c2hlci4gKilcbiAgbGV0IG9sZF93YWtlbmVyID0gaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgaW5cbiAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gIGluZm8ucHVzaGJfcHVzaF93YWl0ZXIgPC0gd2FpdGVyO1xuICBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciA8LSB3YWtlbmVyO1xuICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG5cbmNsYXNzIFsnYV0gYm91bmRlZF9wdXNoX2ltcGwgKGluZm8gOiAnYSBwdXNoX2JvdW5kZWQpIHdha2VuZXJfY2VsbCBsYXN0IGNsb3NlID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGNsb3NlZCA9IGZhbHNlXG5cbiAgbWV0aG9kIHNpemUgPVxuICAgIGluZm8ucHVzaGJfc2l6ZVxuXG4gIG1ldGhvZCByZXNpemUgc2l6ZSA9XG4gICAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uYm91bmRlZF9wdXNoI3Jlc2l6ZVwiO1xuICAgIGluZm8ucHVzaGJfc2l6ZSA8LSBzaXplO1xuICAgIGlmIGluZm8ucHVzaGJfY291bnQgPCBpbmZvLnB1c2hiX3NpemUgJiYgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmUgdGhlbiBiZWdpblxuICAgICAgaW5mby5wdXNoYl9jb3VudCA8LSBpbmZvLnB1c2hiX2NvdW50ICsgMTtcbiAgICAgIG5vdGlmeV9wdXNoZXIgaW5mbyBsYXN0XG4gICAgZW5kXG5cbiAgbWV0aG9kIHB1c2ggeCA9XG4gICAgaWYgY2xvc2VkIHRoZW5cbiAgICAgIEx3dC5mYWlsIENsb3NlZFxuICAgIGVsc2UgaWYgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmUgdGhlblxuICAgICAgTHd0LmZhaWwgRnVsbFxuICAgIGVsc2UgaWYgaW5mby5wdXNoYl9jb3VudCA+PSBpbmZvLnB1c2hiX3NpemUgdGhlbiBiZWdpblxuICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIFNvbWUgeDtcbiAgICAgIEx3dC5jYXRjaFxuICAgICAgICAoZnVuICgpIC0+IGluZm8ucHVzaGJfcHVzaF93YWl0ZXIpXG4gICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgIHwgTHd0LkNhbmNlbGVkIC0+XG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIE5vbmU7XG4gICAgICAgICAgICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wdXNoX3dhaXRlciA8LSB3YWl0ZXI7XG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgPC0gd2FrZW5lcjtcbiAgICAgICAgICAgICBMd3QuZmFpbCBleG5cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgTHd0LmZhaWwgZXhuKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBQdXNoIHRoZSBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgZW5xdWV1ZScgKFNvbWUgeCkgbGFzdDtcbiAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCArIDE7XG4gICAgICAoKiBTZW5kIGEgc2lnbmFsIGlmIGF0IGxlYXN0IG9uZSB0aHJlYWQgaXMgd2FpdGluZyBmb3IgYSBuZXdcbiAgICAgICAgIGVsZW1lbnQuICopXG4gICAgICBpZiBpbmZvLnB1c2hiX3dhaXRpbmcgdGhlbiBiZWdpblxuICAgICAgICBpbmZvLnB1c2hiX3dhaXRpbmcgPC0gZmFsc2U7XG4gICAgICAgICgqIFVwZGF0ZSB0aHJlYWRzLiAqKVxuICAgICAgICBsZXQgb2xkX3dha2VuZXIgPSAhd2FrZW5lcl9jZWxsIGluXG4gICAgICAgIGxldCBuZXdfd2FpdGVyLCBuZXdfd2FrZW5lciA9IEx3dC53YWl0ICgpIGluXG4gICAgICAgIGluZm8ucHVzaGJfc2lnbmFsIDwtIG5ld193YWl0ZXI7XG4gICAgICAgIHdha2VuZXJfY2VsbCA6PSBuZXdfd2FrZW5lcjtcbiAgICAgICAgKCogU2lnbmFsIHRoYXQgYSBuZXcgdmFsdWUgaGFzIGJlZW4gcmVjZWl2ZWQuICopXG4gICAgICAgIEx3dC53YWtldXBfbGF0ZXIgb2xkX3dha2VuZXIgKClcbiAgICAgIGVuZDtcbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVuZFxuXG4gIG1ldGhvZCBjbG9zZSA9XG4gICAgaWYgbm90IGNsb3NlZCB0aGVuIGJlZ2luXG4gICAgICBjbG9zZWQgPC0gdHJ1ZTtcbiAgICAgIGxldCBub2RlID0gIWxhc3QgYW5kIG5ld19sYXN0ID0gbmV3X25vZGUgKCkgaW5cbiAgICAgIG5vZGUuZGF0YSA8LSBOb25lO1xuICAgICAgbm9kZS5uZXh0IDwtIG5ld19sYXN0O1xuICAgICAgbGFzdCA6PSBuZXdfbGFzdDtcbiAgICAgIGlmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIE5vbmU7XG4gICAgICAgIEx3dC53YWtldXBfbGF0ZXJfZXhuIGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIENsb3NlZFxuICAgICAgZW5kO1xuICAgICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgICBlbGVtZW50LiAqKVxuICAgICAgaWYgaW5mby5wdXNoYl93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgICBsZXQgb2xkX3dha2VuZXIgPSAhd2FrZW5lcl9jZWxsIGluXG4gICAgICAgICgqIFNpZ25hbCB0aGF0IGEgbmV3IHZhbHVlIGhhcyBiZWVuIHJlY2VpdmVkLiAqKVxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG4gICAgICBlbmQ7XG4gICAgICBMd3Qud2FrZXVwIGNsb3NlICgpO1xuICAgIGVuZFxuXG4gIG1ldGhvZCBjb3VudCA9XG4gICAgaW5mby5wdXNoYl9jb3VudFxuXG4gIG1ldGhvZCBibG9ja2VkID1cbiAgICBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZVxuXG4gIG1ldGhvZCBjbG9zZWQgPVxuICAgIGNsb3NlZFxuXG4gIG1ldGhvZCBzZXRfcmVmZXJlbmNlIDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biB4IC0+IGluZm8ucHVzaGJfZXh0ZXJuYWwgPC0gT2JqLnJlcHIgeFxuZW5kXG5cbmxldCBjcmVhdGVfYm91bmRlZCBzaXplID1cbiAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uY3JlYXRlX2JvdW5kZWRcIjtcbiAgKCogQ3JlYXRlIHRoZSBzb3VyY2UgZm9yIG5vdGlmaWNhdGlvbnMgb2YgbmV3IGVsZW1lbnRzLiAqKVxuICBsZXQgaW5mbywgd2FrZW5lcl9jZWxsID1cbiAgICBsZXQgd2FpdGVyLCB3YWtlbmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICBsZXQgcHVzaF93YWl0ZXIsIHB1c2hfd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgKHsgcHVzaGJfc2lnbmFsID0gd2FpdGVyO1xuICAgICAgIHB1c2hiX3dhaXRpbmcgPSBmYWxzZTtcbiAgICAgICBwdXNoYl9zaXplID0gc2l6ZTtcbiAgICAgICBwdXNoYl9jb3VudCA9IDA7XG4gICAgICAgcHVzaGJfcGVuZGluZyA9IE5vbmU7XG4gICAgICAgcHVzaGJfcHVzaF93YWl0ZXIgPSBwdXNoX3dhaXRlcjtcbiAgICAgICBwdXNoYl9wdXNoX3dha2VuZXIgPSBwdXNoX3dha2VuZXI7XG4gICAgICAgcHVzaGJfZXh0ZXJuYWwgPSBPYmoucmVwciAoKSB9LFxuICAgICByZWYgd2FrZW5lcilcbiAgaW5cbiAgbGV0IHQgPSBmcm9tX3NvdXJjZSAoUHVzaF9ib3VuZGVkIGluZm8pIGluXG4gICh0LCBuZXcgYm91bmRlZF9wdXNoX2ltcGwgaW5mbyB3YWtlbmVyX2NlbGwgdC5sYXN0IHQuY2xvc2UpXG5cbigqIFdhaXQgZm9yIGEgbmV3IGVsZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHF1ZXVlIG9mIHBlbmRpbmcgZWxlbWVudFxuICAgb2YgdGhlIHN0cmVhbS4gKilcbmxldCBmZWVkIHMgPVxuICBtYXRjaCBzLnNvdXJjZSB3aXRoXG4gIHwgRnJvbSBmcm9tIC0+XG4gICAgKCogVGhlcmUgaXMgYWxyZWFkeSBhIHRocmVhZCBzdGFydGVkIHRvIGNyZWF0ZSBhIG5ldyBlbGVtZW50LFxuICAgICAgIHdhaXQgZm9yIHRoaXMgb25lIHRvIHRlcm1pbmF0ZS4gKilcbiAgICBpZiBMd3QuaXNfc2xlZXBpbmcgZnJvbS5mcm9tX3RocmVhZCB0aGVuXG4gICAgICBMd3QucHJvdGVjdGVkIGZyb20uZnJvbV90aHJlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBPdGhlcndpc2UgcmVxdWVzdCBhIG5ldyBlbGVtZW50LiAqKVxuICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgIGZyb20uZnJvbV9jcmVhdGUgKCkgPj49IGZ1biB4IC0+XG4gICAgICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgICAgIGVucXVldWUgeCBzO1xuICAgICAgICBpZiB4ID0gTm9uZSB0aGVuIEx3dC53YWtldXAgcy5jbG9zZSAoKTtcbiAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICBpblxuICAgICAgKCogQWxsb3cgb3RoZXIgdGhyZWFkcyB0byBhY2Nlc3MgdGhpcyB0aHJlYWQuICopXG4gICAgICBmcm9tLmZyb21fdGhyZWFkIDwtIHRocmVhZDtcbiAgICAgIEx3dC5wcm90ZWN0ZWQgdGhyZWFkXG4gICAgZW5kXG4gIHwgRnJvbV9kaXJlY3QgZiAtPlxuICAgIGxldCB4ID0gZiAoKSBpblxuICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgZW5xdWV1ZSB4IHM7XG4gICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIHMuY2xvc2UgKCk7XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgUHVzaCBwdXNoIC0+XG4gICAgcHVzaC5wdXNoX3dhaXRpbmcgPC0gdHJ1ZTtcbiAgICBMd3QucHJvdGVjdGVkIHB1c2gucHVzaF9zaWduYWxcbiAgfCBQdXNoX2JvdW5kZWQgcHVzaCAtPlxuICAgIHB1c2gucHVzaGJfd2FpdGluZyA8LSB0cnVlO1xuICAgIEx3dC5wcm90ZWN0ZWQgcHVzaC5wdXNoYl9zaWduYWxcblxuKCogUmVtb3ZlIFtub2RlXSBmcm9tIHRoZSB0b3Agb2YgdGhlIHF1ZXVlLCBvciBkbyBub3RoaW5nIGlmIGl0IHdhc1xuICAgYWxyZWFkeSBjb25zdW1lZC5cblxuICAgUHJlY29uZGl0aW9uOiBub2RlLmRhdGEgPD4gTm9uZVxuKilcbmxldCBjb25zdW1lIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gcy5ub2RlIHRoZW4gYmVnaW5cbiAgICBzLm5vZGUgPC0gbm9kZS5uZXh0O1xuICAgIG1hdGNoIHMuc291cmNlIHdpdGhcbiAgICB8IFB1c2hfYm91bmRlZCBpbmZvIC0+XG4gICAgICBpZiBpbmZvLnB1c2hiX3BlbmRpbmcgPSBOb25lIHRoZW5cbiAgICAgICAgaW5mby5wdXNoYl9jb3VudCA8LSBpbmZvLnB1c2hiX2NvdW50IC0gMVxuICAgICAgZWxzZVxuICAgICAgICBub3RpZnlfcHVzaGVyIGluZm8gcy5sYXN0XG4gICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+XG4gICAgICAoKVxuICBlbmRcblxubGV0IHJlYyBwZWVrX3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gcGVla19yZWMgcyBub2RlXG4gIGVsc2VcbiAgICBMd3QucmV0dXJuIG5vZGUuZGF0YVxuXG5sZXQgcGVlayBzID0gcGVla19yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBucGVla19yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5wZWVrX3JlYyBub2RlIGFjYyBuIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIG5wZWVrX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IG5wZWVrIG4gcyA9IG5wZWVrX3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgZ2V0X3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZ2V0X3JlYyBzIG5vZGVcbiAgZWxzZSBiZWdpblxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybiBub2RlLmRhdGFcbiAgZW5kXG5cbmxldCBnZXQgcyA9IGdldF9yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBnZXRfZXhuX3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgTHd0LnRyeV9iaW5kXG4gICAgICAoZnVuICgpIC0+IGZlZWQgcylcbiAgICAgIChmdW4gKCkgLT4gZ2V0X2V4bl9yZWMgcyBub2RlKVxuICAgICAgKGZ1biBleG4gLT4gTHd0LnJldHVybiAoU29tZSAoUmVzdWx0LkVycm9yIGV4bikpKVxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgTHd0LnJldHVybiAoU29tZSAoUmVzdWx0Lk9rIHZhbHVlKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgd3JhcF9leG4gcyA9IGZyb20gKGZ1biAoKSAtPiBnZXRfZXhuX3JlYyBzIHMubm9kZSlcblxubGV0IHJlYyBuZ2V0X3JlYyBub2RlIGFjYyBuIHMgPVxuICBpZiBuIDw9IDAgdGhlblxuICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gbmdldF9yZWMgbm9kZSBhY2MgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBzLm5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbmdldF9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBuZ2V0IG4gcyA9IG5nZXRfcmVjIHMubm9kZSBbXSBuIHNcblxubGV0IHJlYyBnZXRfd2hpbGVfcmVjIG5vZGUgYWNjIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBnZXRfd2hpbGVfcmVjIG5vZGUgYWNjIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlbiBiZWdpblxuICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgZ2V0X3doaWxlX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSBmIHNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IGdldF93aGlsZSBmIHMgPSBnZXRfd2hpbGVfcmVjIHMubm9kZSBbXSBmIHNcblxubGV0IHJlYyBnZXRfd2hpbGVfc19yZWMgbm9kZSBhY2MgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGdldF93aGlsZV9zX3JlYyBub2RlIGFjYyBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT4gYmVnaW5cbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgICBnZXRfd2hpbGVfc19yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgZiBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgICBlbmRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IGdldF93aGlsZV9zIGYgcyA9IGdldF93aGlsZV9zX3JlYyBzLm5vZGUgW10gZiBzXG5cbmxldCByZWMgbmV4dF9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5leHRfcmVjIHMgbm9kZVxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBMd3QucmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5mYWlsIEVtcHR5XG5cbmxldCBuZXh0IHMgPSBuZXh0X3JlYyBzIHMubm9kZVxuXG5sZXQgcmVjIGxhc3RfbmV3X3JlYyBub2RlIHggcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGxhc3RfbmV3X3JlYyBub2RlIHggc1xuICAgIHwgTHd0LkZhaWwgZXhuIC0+XG4gICAgICBMd3QuZmFpbCBleG5cbiAgICB8IEx3dC5TbGVlcCAtPlxuICAgICAgTHd0LnJldHVybiB4XG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxhc3RfbmV3X3JlYyBub2RlLm5leHQgeCBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIHhcblxubGV0IGxhc3RfbmV3IHMgPVxuICBsZXQgbm9kZSA9IHMubm9kZSBpblxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IG5leHQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiB4IC0+XG4gICAgICBsYXN0X25ld19yZWMgbm9kZSB4IHNcbiAgICB8IEx3dC5GYWlsIF8gfCBMd3QuU2xlZXAgLT5cbiAgICAgIHRocmVhZFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsYXN0X25ld19yZWMgbm9kZS5uZXh0IHggc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LmZhaWwgRW1wdHlcblxubGV0IHJlYyB0b19saXN0X3JlYyBub2RlIGFjYyBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHRvX2xpc3RfcmVjIG5vZGUgYWNjIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgdG9fbGlzdF9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgdG9fbGlzdCBzID0gdG9fbGlzdF9yZWMgcy5ub2RlIFtdIHNcblxubGV0IHJlYyB0b19zdHJpbmdfcmVjIG5vZGUgYnVmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gdG9fc3RyaW5nX3JlYyBub2RlIGJ1ZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgeDtcbiAgICAgIHRvX3N0cmluZ19yZWMgbm9kZS5uZXh0IGJ1ZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG5sZXQgdG9fc3RyaW5nIHMgPSB0b19zdHJpbmdfcmVjIHMubm9kZSAoQnVmZmVyLmNyZWF0ZSAxMjgpIHNcblxubGV0IGp1bmsgcyA9XG4gIGxldCBub2RlID0gcy5ub2RlIGluXG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW4gYmVnaW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPlxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybl91bml0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgaWYgbm9kZS5kYXRhIDw+IE5vbmUgdGhlbiBjb25zdW1lIHMgbm9kZTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZW5kXG5cbmxldCByZWMgbmp1bmtfcmVjIG5vZGUgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gbmp1bmtfcmVjIG5vZGUgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIG5qdW5rX3JlYyBub2RlLm5leHQgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG5qdW5rIG4gcyA9IG5qdW5rX3JlYyBzLm5vZGUgbiBzXG5cbmxldCByZWMganVua193aGlsZV9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4ganVua193aGlsZV9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGp1bmtfd2hpbGVfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX3doaWxlIGYgcyA9IGp1bmtfd2hpbGVfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBqdW5rX3doaWxlX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGp1bmtfd2hpbGVfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT4gYmVnaW5cbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgICBqdW5rX3doaWxlX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGp1bmtfd2hpbGVfcyBmIHMgPSBqdW5rX3doaWxlX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBqdW5rX29sZF9yZWMgbm9kZSBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAganVua19vbGRfcmVjIG5vZGUgc1xuICAgIHwgTHd0LkZhaWwgZXhuIC0+XG4gICAgICBMd3QuZmFpbCBleG5cbiAgICB8IEx3dC5TbGVlcCAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGp1bmtfb2xkX3JlYyBub2RlLm5leHQgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX29sZCBzID0ganVua19vbGRfcmVjIHMubm9kZSBzXG5cbmxldCByZWMgZ2V0X2F2YWlsYWJsZV9yZWMgbm9kZSBhY2MgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGdldF9hdmFpbGFibGVfcmVjIG5vZGUgYWNjIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgcmFpc2UgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBnZXRfYXZhaWxhYmxlX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMaXN0LnJldiBhY2NcblxubGV0IGdldF9hdmFpbGFibGUgcyA9IGdldF9hdmFpbGFibGVfcmVjIHMubm9kZSBbXSBzXG5cbmxldCByZWMgZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMaXN0LnJldiBhY2NcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBub2RlIGFjYyBuIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgcmFpc2UgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggcy5ub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG5cbmxldCBnZXRfYXZhaWxhYmxlX3VwX3RvIG4gcyA9IGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIHMubm9kZSBbXSBuIHNcblxubGV0IHJlYyBpc19lbXB0eSBzID1cbiAgaWYgcy5ub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXNfZW1wdHkgc1xuICBlbHNlXG4gICAgTHd0LnJldHVybiAocy5ub2RlLmRhdGEgPSBOb25lKVxuXG5sZXQgbWFwIGYgcyA9XG4gIGZyb20gKGZ1biAoKSAtPiBnZXQgcyA+fD0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT5cbiAgICBsZXQgeCA9IGYgeCBpblxuICAgIFNvbWUgeFxuICB8IE5vbmUgLT5cbiAgICBOb25lKVxuXG5sZXQgbWFwX3MgZiBzID1cbiAgZnJvbSAoZnVuICgpIC0+IGdldCBzID4+PSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPlxuICAgIGYgeCA+fD0gKGZ1biB4IC0+IFNvbWUgeClcbiAgfCBOb25lIC0+XG4gICAgTHd0LnJldHVybl9ub25lKVxuXG5sZXQgZmlsdGVyIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW5cbiAgICAgICAgdFxuICAgICAgZWxzZVxuICAgICAgICBuZXh0ICgpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBmaWx0ZXJfcyBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0IHMgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgdFxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgbmV4dCAoKVxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICB0XG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX21hcCBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGdldCBzID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICBMd3QucmV0dXJuIHhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIG5leHQgKCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBmaWx0ZXJfbWFwX3MgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHQgPSBmIHggaW5cbiAgICAgICh0ID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICB0XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBuZXh0ICgpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgbWFwX2xpc3QgZiBzID1cbiAgbGV0IHBlbmRpbmdzID0gcmVmIFtdIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXBlbmRpbmdzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIGxldCBsID0gZiB4IGluXG4gICAgICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgICAgbmV4dCAoKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgTHd0LnJldHVybl9ub25lKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgTHd0LnJldHVybiAoU29tZSB4KVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IG1hcF9saXN0X3MgZiBzID1cbiAgbGV0IHBlbmRpbmdzID0gcmVmIFtdIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXBlbmRpbmdzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIGYgeCA+Pj0gZnVuIGwgLT5cbiAgICAgICAgIHBlbmRpbmdzIDo9IGw7XG4gICAgICAgICBuZXh0ICgpXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBMd3QucmV0dXJuX25vbmUpXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHBlbmRpbmdzIDo9IGw7XG4gICAgICBMd3QucmV0dXJuIChTb21lIHgpXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmxhdHRlbiBzID1cbiAgbWFwX2xpc3QgKGZ1biBsIC0+IGwpIHNcblxubGV0IHJlYyBmb2xkX3JlYyBub2RlIGYgcyBhY2MgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZm9sZF9yZWMgbm9kZSBmIHMgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCBhY2MgPSBmIHggYWNjIGluXG4gICAgICBmb2xkX3JlYyBub2RlLm5leHQgZiBzIGFjY1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcblxubGV0IGZvbGQgZiBzIGFjYyA9IGZvbGRfcmVjIHMubm9kZSBmIHMgYWNjXG5cbmxldCByZWMgZm9sZF9zX3JlYyBub2RlIGYgcyBhY2MgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZm9sZF9zX3JlYyBub2RlIGYgcyBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZiB4IGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZm9sZF9zX3JlYyBub2RlLm5leHQgZiBzIGFjY1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcblxubGV0IGZvbGRfcyBmIHMgYWNjID0gZm9sZF9zX3JlYyBzLm5vZGUgZiBzIGFjY1xuXG5sZXQgcmVjIGl0ZXJfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGl0ZXJfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCAoKSA9IGYgeCBpblxuICAgICAgaXRlcl9yZWMgbm9kZS5uZXh0IGYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyIGYgcyA9IGl0ZXJfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBpdGVyX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGl0ZXJfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZiB4ID4+PSBmdW4gKCkgLT5cbiAgICAgIGl0ZXJfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyX3MgZiBzID0gaXRlcl9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgaXRlcl9wX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3BfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCByZXMgPSBmIHggaW5cbiAgICAgIGxldCByZXN0ID0gaXRlcl9wX3JlYyBub2RlLm5leHQgZiBzIGluXG4gICAgICByZXMgPj49IGZ1biAoKSAtPiByZXN0XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGl0ZXJfcCBmIHMgPSBpdGVyX3BfcmVjIHMubm9kZSBmIHNcblxubGV0IGl0ZXJfbiA/KG1heF9jb25jdXJyZW5jeSA9IDEpIGYgc3RyZWFtID1cbiAgYmVnaW5cbiAgICBpZiBtYXhfY29uY3VycmVuY3kgPD0gMCB0aGVuXG4gICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJMd3Rfc3RyZWFtLml0ZXJfbjogbWF4X2NvbmN1cnJlbmN5IG11c3QgYmUgPiAwLCAlZCBnaXZlblwiXG4gICAgICAgICAgbWF4X2NvbmN1cnJlbmN5XG4gICAgICBpblxuICAgICAgaW52YWxpZF9hcmcgbWVzc2FnZVxuICBlbmQ7XG4gIGxldCByZWMgbG9vcCBydW5uaW5nIGF2YWlsYWJsZSA9XG4gICAgYmVnaW5cbiAgICAgIGlmIGF2YWlsYWJsZSA+IDAgdGhlbiAoXG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSlcbiAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICBMd3QubmNob29zZV9zcGxpdCBydW5uaW5nID4+PSBmdW4gKGNvbXBsZXRlLCBydW5uaW5nKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUgKyBMaXN0Lmxlbmd0aCBjb21wbGV0ZSlcbiAgICAgIClcbiAgICBlbmQgPj49IGZ1biAocnVubmluZywgYXZhaWxhYmxlKSAtPlxuICAgIGdldCBzdHJlYW0gPj49IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3Quam9pbiBydW5uaW5nXG4gICAgfCBTb21lIGVsdCAtPlxuICAgICAgbG9vcCAoZiBlbHQgOjogcnVubmluZykgKHByZWQgYXZhaWxhYmxlKVxuICBpblxuICBsb29wIFtdIG1heF9jb25jdXJyZW5jeVxuXG5sZXQgcmVjIGZpbmRfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IGFzIG9wdCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm4gb3B0XG4gICAgICBlbHNlXG4gICAgICAgIGZpbmRfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZCBmIHMgPSBmaW5kX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgZmluZF9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IGFzIG9wdCAtPiBiZWdpblxuICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIG9wdFxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgZmluZF9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbmRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZF9zIGYgcyA9IGZpbmRfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfbWFwX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX21hcF9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIGlmIHggPSBOb25lIHRoZW5cbiAgICAgICAgZmluZF9tYXBfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmRfbWFwIGYgcyA9IGZpbmRfbWFwX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgZmluZF9tYXBfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9tYXBfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHQgPSBmIHggaW5cbiAgICAgICh0ID4+PSBmdW5jdGlvblxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZmluZF9tYXBfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICB0KVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kX21hcF9zIGYgcyA9IGZpbmRfbWFwX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IGNvbWJpbmUgczEgczIgPVxuICBsZXQgbmV4dCAoKSA9XG4gICAgbGV0IHQxID0gZ2V0IHMxIGFuZCB0MiA9IGdldCBzMiBpblxuICAgIHQxID4+PSBmdW4gbjEgLT5cbiAgICB0MiA+Pj0gZnVuIG4yIC0+XG4gICAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT5cbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUoeDEsIHgyKSlcbiAgICB8IF8gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIGxldCBjdXJyZW50X3MgPSByZWYgczEgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCAhY3VycmVudF9zIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgXyAtPlxuICAgICAgdFxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgIWN1cnJlbnRfcyA9PSBzMiB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBjdXJyZW50X3MgOj0gczI7XG4gICAgICAgIG5leHQgKClcbiAgICAgIGVuZFxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGNvbmNhdCBzX3RvcCA9XG4gIGxldCBjdXJyZW50X3MgPSByZWYgKGZyb20gKGZ1biAoKSAtPiBMd3QucmV0dXJuX25vbmUpKSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0ICFjdXJyZW50X3MgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSBfIC0+XG4gICAgICB0XG4gICAgfCBOb25lIC0+XG4gICAgICBnZXQgc190b3AgPj49IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgcyAtPlxuICAgICAgICBjdXJyZW50X3MgOj0gcztcbiAgICAgICAgbmV4dCAoKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGNob29zZSBzdHJlYW1zID1cbiAgbGV0IHNvdXJjZSBzID0gKHMsIGdldCBzID58PSBmdW4geCAtPiAocywgeCkpIGluXG4gIGxldCBzdHJlYW1zID0gcmVmIChMaXN0Lm1hcCBzb3VyY2Ugc3RyZWFtcykgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBtYXRjaCAhc3RyZWFtcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gICAgfCBsIC0+XG4gICAgICBMd3QuY2hvb3NlIChMaXN0Lm1hcCBzbmQgbCkgPj49IGZ1biAocywgeCkgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZW1vdmVfYXNzcSBzIGwgaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgc3RyZWFtcyA6PSBzb3VyY2UgcyA6OiBsO1xuICAgICAgICBMd3QucmV0dXJuIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBzdHJlYW1zIDo9IGw7XG4gICAgICAgIG5leHQgKClcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBwYXJzZSBzIGYgPVxuICAobWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICAgfCBQdXNoX2JvdW5kZWQgXyAtPiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0ucGFyc2VcIlxuICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+ICgpKTtcbiAgbGV0IG5vZGUgPSBzLm5vZGUgaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBmIHMpXG4gICAgKGZ1biBleG4gLT5cbiAgICAgICBzLm5vZGUgPC0gbm9kZTtcbiAgICAgICBMd3QuZmFpbCBleG4pXG5cbmxldCBoZXhkdW1wIHN0cmVhbSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDgwIGFuZCBudW0gPSByZWYgMCBpblxuICBmcm9tIGJlZ2luIGZ1biBfIC0+XG4gICAgbmdldCAxNiBzdHJlYW0gPj49IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gICAgfCBsIC0+XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTA4eHwgIFwiICFudW07XG4gICAgICBudW0gOj0gIW51bSArIDE2O1xuICAgICAgbGV0IHJlYyBieXRlcyBwb3MgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgYmxhbmtzIHBvc1xuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgIGlmIHBvcyA9IDggdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBidWYgXCIlMDJ4IFwiIChDaGFyLmNvZGUgeCk7XG4gICAgICAgICAgYnl0ZXMgKHBvcyArIDEpIGxcbiAgICAgIGFuZCBibGFua3MgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMTYgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIHBvcyA9IDggdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiICAgIFwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiICAgXCI7XG4gICAgICAgICAgYmxhbmtzIChwb3MgKyAxKVxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBieXRlcyAwIGw7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIgfFwiO1xuICAgICAgTGlzdC5pdGVyIChmdW4gY2ggLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoaWYgY2ggPj0gJ1xceDIwJyAmJiBjaCA8PSAnXFx4N2UnIHRoZW4gY2ggZWxzZSAnLicpKSBsO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnfCc7XG4gICAgICBMd3QucmV0dXJuIChTb21lKEJ1ZmZlci5jb250ZW50cyBidWYpKVxuICBlbmRcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG4oKiogTW9kdWxlIFtMd3RfcmVzdWx0XTogZXhwbGljaXQgZXJyb3IgaGFuZGxpbmcgKilcblxub3BlbiBSZXN1bHRcblxudHlwZSAoKydhLCArJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCBMd3QudFxuXG5sZXQgcmV0dXJuIHggPSBMd3QucmV0dXJuIChPayB4KVxubGV0IGZhaWwgZSA9IEx3dC5yZXR1cm4gKEVycm9yIGUpXG5cbmxldCBsaWZ0ID0gTHd0LnJldHVyblxubGV0IG9rIHggPSBMd3QubWFwIChmdW4geSAtPiBPayB5KSB4XG5sZXQgZXJyb3IgeCA9IEx3dC5tYXAgKGZ1biB5IC0+IEVycm9yIHkpIHhcblxubGV0IG1hcCBmIGUgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgfCBPayB4IC0+IE9rIChmIHgpKVxuICAgIGVcblxubGV0IG1hcF9lcnJvciBmIGUgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKGYgZSlcbiAgICAgIHwgT2sgeCAtPiBPayB4KVxuICAgIGVcbmxldCBtYXBfZXJyIGYgZSA9IG1hcF9lcnJvciBmIGVcblxubGV0IGNhdGNoIGUgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IG9rIChlICgpKSlcbiAgICBmYWlsXG5cbmxldCBnZXRfZXhuIGUgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gTHd0LnJldHVybiB4XG4gICAgICB8IEVycm9yIGUgLT4gTHd0LmZhaWwgZSlcblxubGV0IGJpbmQgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5yZXR1cm4gKEVycm9yIGUpXG4gICAgICB8IE9rIHggLT4gZiB4KVxuICAgICAgXG5sZXQgYmluZF9lcnJvciBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgICB8IE9rIHggLT4gTHd0LnJldHVybiAoT2sgeCkpXG4gICAgICBcbmxldCBiaW5kX2x3dCBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gb2sgKGYgeClcbiAgICAgIHwgRXJyb3IgZSAtPiBmYWlsIGUpXG5cbmxldCBiaW5kX3Jlc3VsdCBlIGYgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgfCBPayB4IC0+IGYgeClcbiAgICBlXG5cbmxldCBiaW5kX2x3dF9lcnJvciBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gTHd0LmJpbmQgKGYgZSkgZmFpbFxuICAgICAgfCBPayB4IC0+IHJldHVybiB4KVxubGV0IGJpbmRfbHd0X2VyciBlIGYgPSBiaW5kX2x3dF9lcnJvciBlIGZcblxubGV0IGJvdGggYSBiID1cbiAgbGV0IHMgPSByZWYgTm9uZSBpblxuICBsZXQgc2V0X29uY2UgZSA9XG4gICAgbWF0Y2ggIXMgd2l0aFxuICAgIHwgTm9uZSAtPiBzOj0gU29tZSBlXG4gICAgfCBTb21lIF8gLT4gKClcbiAgaW5cbiAgbGV0IChhLGIpID0gbWFwX2Vycm9yIHNldF9vbmNlIGEsbWFwX2Vycm9yIHNldF9vbmNlIGIgaW5cbiAgbGV0IHNvbWVfYXNzZXJ0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGUgLT4gRXJyb3IgZVxuICBpblxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHgsIE9rIHkgLT4gT2sgKHgseSlcbiAgICAgIHwgRXJyb3IgXywgT2sgX1xuICAgICAgfCBPayBfLEVycm9yIF9cbiAgICAgIHwgRXJyb3IgXywgRXJyb3IgXyAtPiBzb21lX2Fzc2VydCAhcylcbiAgICAoTHd0LmJvdGggYSBiKVxuXG5sZXQgaXRlciBmIHIgPVxuICBMd3QuYmluZCByXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gZiB4XG4gICAgICB8IEVycm9yIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgaXRlcl9lcnJvciBmIHIgPVxuICBMd3QuYmluZCByXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgICB8IE9rIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICg+Pj0pID0gYmluZFxuICBsZXQgKD58PSkgZSBmID0gbWFwIGYgZVxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgdCB+ZiA9IG1hcCBmIHRcbiAgICBsZXQgYmluZCB0IH5mID0gYmluZCB0IGZcbiAgICBsZXQgYm90aCA9IGJvdGhcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3RcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5bnRheCA9IHN0cnVjdFxuICBsZXQgKGxldCopID0gYmluZFxuICBsZXQgKGFuZCopID0gYm90aFxuXG4gIGxldCAobGV0KykgeCBmID0gbWFwIGYgeFxuICBsZXQgKGFuZCspID0gYm90aFxuZW5kXG5cbmluY2x1ZGUgSW5maXhcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuICB2YWwgZW1wdHk6IHRcbiAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gIHZhbCBmaW5kX21pbjogdCAtPiBlbHRcbiAgdmFsIGxvb2t1cF9taW46IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX21pbjogdCAtPiB0XG4gIHZhbCBzaXplOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGVsdCA9IE9yZC50KSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBPcmQudFxuXG4gIHR5cGUgdCA9IHRyZWUgbGlzdFxuICBhbmQgdHJlZSA9IE5vZGUgb2YgZWx0ICogaW50ICogdHJlZSBsaXN0XG5cbiAgbGV0IHJvb3QgKE5vZGUgKHgsIF8sIF8pKSA9IHhcbiAgbGV0IHJhbmsgKE5vZGUgKF8sIHIsIF8pKSA9IHJcbiAgbGV0IGxpbmsgKE5vZGUgKHgxLCByMSwgYzEpIGFzIHQxKSAoTm9kZSAoeDIsIHIyLCBjMikgYXMgdDIpID1cbiAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHgxIHgyIGluXG4gICAgaWYgYyA8PSAwIHRoZW4gTm9kZSAoeDEsIHIxICsgMSwgdDI6OmMxKSBlbHNlIE5vZGUoeDIsIHIyICsgMSwgdDE6OmMyKVxuICBsZXQgcmVjIGlucyB0ID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgIC0+XG4gICAgICBbdF1cbiAgICB8ICh0Jzo6XykgYXMgdHMgd2hlbiByYW5rIHQgPCByYW5rIHQnIC0+XG4gICAgICB0Ojp0c1xuICAgIHwgdCc6OnRzIC0+XG4gICAgICBpbnMgKGxpbmsgdCB0JykgdHNcblxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgaXNfZW1wdHkgdHMgPSB0cyA9IFtdXG4gIGxldCBhZGQgeCB0cyA9IGlucyAoTm9kZSAoeCwgMCwgW10pKSB0c1xuICBsZXQgcmVjIHVuaW9uIHRzIHRzJyA9XG4gICAgbWF0Y2ggdHMsIHRzJyB3aXRoXG4gICAgICAoW10sIF8pIC0+IHRzJ1xuICAgIHwgKF8sIFtdKSAtPiB0c1xuICAgIHwgKHQxOjp0czEsIHQyOjp0czIpICAtPlxuICAgICAgaWYgcmFuayB0MSA8IHJhbmsgdDIgdGhlbiB0MSA6OiB1bmlvbiB0czEgKHQyOjp0czIpXG4gICAgICBlbHNlIGlmIHJhbmsgdDIgPCByYW5rIHQxIHRoZW4gdDIgOjogdW5pb24gKHQxOjp0czEpIHRzMlxuICAgICAgZWxzZSBpbnMgKGxpbmsgdDEgdDIpICh1bmlvbiB0czEgdHMyKVxuXG4gIGxldCByZWMgZmluZF9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAgICAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IFt0XSAgIC0+IHJvb3QgdFxuICAgIHwgdDo6dHMgLT5cbiAgICAgIGxldCB4ID0gZmluZF9taW4gdHMgaW5cbiAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgKHJvb3QgdCkgeCBpblxuICAgICAgaWYgYyA8IDAgdGhlbiByb290IHQgZWxzZSB4XG5cbiAgbGV0IHJlYyBsb29rdXBfbWluID1cbiAgICBmdW5jdGlvblxuICAgIHwgW10gICAgLT4gTm9uZVxuICAgIHwgW3RdICAgLT4gU29tZSAocm9vdCB0KVxuICAgIHwgdDo6dHMgLT5cbiAgICAgIG1hdGNoIGxvb2t1cF9taW4gdHMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB4IGFzIHJlc3VsdCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIHggaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBTb21lIChyb290IHQpIGVsc2UgcmVzdWx0XG5cbiAgbGV0IHJlYyBnZXRfbWluID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBbdF0gICAtPiAodCwgW10pXG4gICAgfCB0Ojp0cyAtPlxuICAgICAgbGV0ICh0JywgdHMnKSA9IGdldF9taW4gdHMgaW5cbiAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgKHJvb3QgdCkgKHJvb3QgdCcpIGluXG4gICAgICBpZiBjIDwgMCB0aGVuICh0LCB0cykgZWxzZSAodCcsIHQ6OnRzJylcblxuICBsZXQgcmVtb3ZlX21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgdHMgLT5cbiAgICAgIGxldCAoTm9kZSAoXywgXywgYyksIHRzKSA9IGdldF9taW4gdHMgaW5cbiAgICAgIHVuaW9uIChMaXN0LnJldiBjKSB0c1xuXG4gIGxldCByZWMgc2l6ZSBsID1cbiAgICBsZXQgc2l6ZXRyZWUgKE5vZGUgKF8sXyx0bCkpID0gMSArIHNpemUgdGwgaW5cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIHMgdCAtPiBzICsgc2l6ZXRyZWUgdCkgMCBsXG5lbmRcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogQSBzdXJ2ZXkgYW5kIG1lYXN1cmVtZW50cyBvZiBtb3JlIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGZvdW5kIGF0OlxuXG4gICAgaHR0cHM6Ly9qc3Rob21hcy5naXRodWIuaW8vbWFwLWNvbXBhcmlzb24uaHRtbFxuXG4gICBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC8zNDcuICopXG5sZXQgdGFpbF9yZWN1cnNpdmVfbWFwIGYgbCA9XG4gIExpc3QucmV2IChMaXN0LnJldl9tYXAgZiBsKVxuXG5sZXQgdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkOjp0bCAtPiAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pICgoZiBpIGhkKTo6YWNjKSAoaSArIDEpIHRsXG4gIGluXG4gIGlubmVyIFtdIDAgbFxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcmVjIGl0ZXJfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1biAoKSAtPlxuICAgIGl0ZXJfcyBmIGxcblxubGV0IGl0ZXJfcCBmIGwgPVxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIEx3dC5qb2luIHRzXG5cbmxldCByZWMgaXRlcmlfcyBpIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IChmIGkpIHggPj49IGZ1biAoKSAtPlxuICAgIGl0ZXJpX3MgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpX3MgZiBsID0gaXRlcmlfcyAwIGYgbFxuXG5sZXQgaXRlcmlfcCBmIGwgPVxuICBsZXQgZicgaSA9IEx3dC5hcHBseSAoZiBpKSBpblxuICBsZXQgdHMgPSB0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiBmJyBsIGluXG4gIEx3dC5qb2luIHRzXG5cbmxldCBtYXBfcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuIHIgLT5cbiAgICAgIChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHI6OmFjYykgdGxcbiAgaW5cbiAgaW5uZXIgW10gbFxuXG5sZXQgcmVjIF9jb2xsZWN0X3JldiBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybiBhY2NcbiAgfCB0Ojp0cyAtPlxuICAgIHQgPj49IGZ1biBpIC0+XG4gICAgKF9jb2xsZWN0X3JldiBbQG9jYW1sLnRhaWxjYWxsXSkgKGk6OmFjYykgdHNcblxubGV0IG1hcF9wIGYgbCA9XG4gIGxldCB0cyA9IExpc3QucmV2X21hcCAoTHd0LmFwcGx5IGYpIGwgaW5cbiAgX2NvbGxlY3RfcmV2IFtdIHRzXG5cbmxldCBmaWx0ZXJfbWFwX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IExpc3QucmV2IGFjYyB8PiBMd3QucmV0dXJuXG4gICAgfCBoZDo6dGwgLT5cbiAgICAgIEx3dC5hcHBseSBmIGhkID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lIHYgLT4gKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAodjo6YWNjKSB0bFxuICAgICAgfCBOb25lIC0+IChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgYWNjIHRsXG4gIGluXG4gIGlubmVyIFtdIGxcblxubGV0IGZpbHRlcl9tYXBfcCBmIGwgPVxuICBsZXQgcmVjIF9jb2xsZWN0X29wdGlvbmFsX3JldiBhY2MgPSBmdW5jdGlvblxuICB8IFtdICAgIC0+IEx3dC5yZXR1cm4gYWNjXG4gIHwgdDo6dHMgLT5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB2IC0+IChfY29sbGVjdF9vcHRpb25hbF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pICh2OjphY2MpIHRzXG4gICAgfCBOb25lIC0+IChfY29sbGVjdF9vcHRpb25hbF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pIGFjYyB0c1xuICBpblxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIF9jb2xsZWN0X29wdGlvbmFsX3JldiBbXSB0c1xuXG5sZXQgbWFwaV9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjIGkgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IExpc3QucmV2IGFjYyB8PiBMd3QucmV0dXJuXG4gICAgfCBoZDo6dGwgLT5cbiAgICAgIEx3dC5hcHBseSAoZiBpKSBoZCA+Pj0gZnVuIHYgLT5cbiAgICAgIChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHY6OmFjYykgKGkrMSkgdGxcbiAgaW5cbiAgaW5uZXIgW10gMCBsXG5cbmxldCBtYXBpX3AgZiBsID1cbiAgbGV0IGYnIGkgPSBMd3QuYXBwbHkgKGYgaSkgaW5cbiAgbGV0IHRzID0gdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZicgbCBpblxuICBfY29sbGVjdF9yZXYgW10gdHNcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZF9zIGFjYyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuIHggLT5cbiAgICByZXZfbWFwX2FwcGVuZF9zICh4IDo6IGFjYykgZiBsXG5cbmxldCByZXZfbWFwX3MgZiBsID1cbiAgcmV2X21hcF9hcHBlbmRfcyBbXSBmIGxcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZF9wIGFjYyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGFjY1xuICB8IHggOjogbCAtPlxuICAgIHJldl9tYXBfYXBwZW5kX3BcbiAgICAgIChMd3QuYXBwbHkgZiB4ID4+PSBmdW4geCAtPlxuICAgICAgIGFjYyA+fD0gZnVuIGwgLT5cbiAgICAgICB4IDo6IGwpIGYgbFxuXG5sZXQgcmV2X21hcF9wIGYgbCA9XG4gIHJldl9tYXBfYXBwZW5kX3AgTHd0LnJldHVybl9uaWwgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0X3MgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybiBhY2NcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgKGYgYWNjKSB4ID4+PSBmdW4gYWNjIC0+XG4gICAgKGZvbGRfbGVmdF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGFjYyBsXG5cbmxldCBmb2xkX3JpZ2h0X3MgZiBsIGFjYyA9XG4gIGxldCByZWMgaW5uZXIgZiBhID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMd3QucmV0dXJuIGFcbiAgICB8IGhkOjp0bCAtPiAoTHd0LmFwcGx5IChmIGhkKSBhKSA+Pj0gZnVuIGEnIC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIGYgYScgdGxcbiAgaW5cbiAgaW5uZXIgZiBhY2MgKExpc3QucmV2IGwpXG5cbmxldCByZWMgZm9yX2FsbF9zIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybl90cnVlXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIChmb3JfYWxsX3MgW0BvY2FtbC50YWlsY2FsbF0pIGYgbFxuICAgIHwgZmFsc2UgLT5cbiAgICAgIEx3dC5yZXR1cm5fZmFsc2VcblxubGV0IGZvcl9hbGxfcCBmIGwgPVxuICBtYXBfcCBmIGwgPj49IGZ1biBibCAtPiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IHgpIGJsIHw+IEx3dC5yZXR1cm5cblxubGV0IHJlYyBleGlzdHNfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fZmFsc2VcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgTHd0LnJldHVybl90cnVlXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKGV4aXN0c19zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcblxubGV0IGV4aXN0c19wIGYgbCA9XG4gIG1hcF9wIGYgbCA+Pj0gZnVuIGJsIC0+IExpc3QuZXhpc3RzIChmdW4geCAtPiB4KSBibCB8PiBMd3QucmV0dXJuXG5cbmxldCByZWMgZmluZF9zIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LmZhaWwgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIEx3dC5yZXR1cm4geFxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChmaW5kX3MgW0BvY2FtbC50YWlsY2FsbF0pIGYgbFxuXG5sZXQgX29wdGlvbmFsaXplIGYgeCA9XG4gIGYgeCA+Pj0gZnVuIGIgLT4gaWYgYiB0aGVuIEx3dC5yZXR1cm4gKFNvbWUgeCkgZWxzZSBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbHRlcl9zIGYgbCA9XG4gIGZpbHRlcl9tYXBfcyAoX29wdGlvbmFsaXplIGYpIGxcblxubGV0IGZpbHRlcl9wIGYgbCA9XG4gICBmaWx0ZXJfbWFwX3AgKF9vcHRpb25hbGl6ZSBmKSBsXG5cbmxldCBwYXJ0aXRpb25fcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYzEgYWNjMiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjMSwgTGlzdC5yZXYgYWNjMilcbiAgICB8IGhkOjp0bCAtPiBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuIGIgLT5cbiAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgaW5uZXIgKGhkOjphY2MxKSBhY2MyIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbm5lciBhY2MxIChoZDo6YWNjMikgdGxcbiAgaW5cbiAgaW5uZXIgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX3AgZiBsID1cbiAgbGV0IGcgeCA9IEx3dC5hcHBseSBmIHggPj49IGZ1biBiIC0+IEx3dC5yZXR1cm4gKGIsIHgpIGluXG4gIG1hcF9wIGcgbCA+Pj0gZnVuIHRsIC0+XG4gIGxldCBncm91cDEgPSB0YWlsX3JlY3Vyc2l2ZV9tYXAgc25kIEBAIExpc3QuZmlsdGVyIGZzdCB0bCBpblxuICBsZXQgZ3JvdXAyID1cbiAgICB0YWlsX3JlY3Vyc2l2ZV9tYXAgc25kIEBAIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgQEAgZnN0IHgpIHRsIGluXG4gIEx3dC5yZXR1cm4gKGdyb3VwMSwgZ3JvdXAyKVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICdhIHQgPSB7XG4gIGNyZWF0ZSA6IHVuaXQgLT4gJ2EgTHd0LnQ7XG4gICgqIENyZWF0ZSBhIG5ldyBwb29sIG1lbWJlci4gKilcbiAgY2hlY2sgOiAnYSAtPiAoYm9vbCAtPiB1bml0KSAtPiB1bml0O1xuICAoKiBDaGVjayB2YWxpZGl0eSBvZiBhIHBvb2wgbWVtYmVyIHdoZW4gdXNlIHJlc3VsdGVkIGluIGZhaWxlZCBwcm9taXNlLiAqKVxuICB2YWxpZGF0ZSA6ICdhIC0+IGJvb2wgTHd0LnQ7XG4gICgqIFZhbGlkYXRlIGFuIGV4aXN0aW5nIGZyZWUgcG9vbCBtZW1iZXIgYmVmb3JlIHVzZS4gKilcbiAgZGlzcG9zZSA6ICdhIC0+IHVuaXQgTHd0LnQ7XG4gICgqIERpc3Bvc2Ugb2YgYSBwb29sIG1lbWJlci4gKilcbiAgY2xlYXJlZCA6IGJvb2wgcmVmIHJlZjtcbiAgKCogSGF2ZSB0aGUgY3VycmVudCBwb29sIGVsZW1lbnRzIGJlZW4gY2xlYXJlZCBvdXQ/ICopXG4gIG1heCA6IGludDtcbiAgKCogU2l6ZSBvZiB0aGUgcG9vbC4gKilcbiAgbXV0YWJsZSBjb3VudCA6IGludDtcbiAgKCogTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBwb29sLiAqKVxuICBsaXN0IDogJ2EgUXVldWUudDtcbiAgKCogQXZhaWxhYmxlIHBvb2wgbWVtYmVycy4gKilcbiAgd2FpdGVycyA6ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50O1xuICAoKiBQcm9taXNlIHJlc29sdmVycyB3YWl0aW5nIGZvciBhIGZyZWUgbWVtYmVyLiAqKVxufVxuXG5sZXQgY3JlYXRlIG0gPyh2YWxpZGF0ZSA9IGZ1biBfIC0+IEx3dC5yZXR1cm5fdHJ1ZSkgPyhjaGVjayA9IGZ1biBfIGYgLT4gZiB0cnVlKSA/KGRpc3Bvc2UgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpIGNyZWF0ZSA9XG4gIHsgbWF4ID0gbTtcbiAgICBjcmVhdGUgPSBjcmVhdGU7XG4gICAgdmFsaWRhdGUgPSB2YWxpZGF0ZTtcbiAgICBjaGVjayA9IGNoZWNrO1xuICAgIGRpc3Bvc2UgPSBkaXNwb3NlO1xuICAgIGNsZWFyZWQgPSByZWYgKHJlZiBmYWxzZSk7XG4gICAgY291bnQgPSAwO1xuICAgIGxpc3QgPSBRdWV1ZS5jcmVhdGUgKCk7XG4gICAgd2FpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG4oKiBDcmVhdGUgYSBwb29sIG1lbWJlci4gKilcbmxldCBjcmVhdGVfbWVtYmVyIHAgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICAgKCogTXVzdCBiZSBkb25lIGJlZm9yZSBwLmNyZWF0ZSB0byBwcmV2ZW50IG90aGVyIHJlc29sdmVycyBmcm9tXG4gICAgICAgICAgY3JlYXRpbmcgbmV3IG1lbWJlcnMgaWYgdGhlIGxpbWl0IGlzIHJlYWNoZWQuICopXG4gICAgICAgcC5jb3VudCA8LSBwLmNvdW50ICsgMTtcbiAgICAgICBwLmNyZWF0ZSAoKSlcbiAgICAoZnVuIGV4biAtPlxuICAgICAgICgqIENyZWF0aW9uIGZhaWxlZCwgc28gZG9uJ3QgaW5jcmVtZW50IGNvdW50LiAqKVxuICAgICAgIHAuY291bnQgPC0gcC5jb3VudCAtIDE7XG4gICAgICAgTHd0LmZhaWwgZXhuKVxuXG4oKiBSZWxlYXNlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgcmVsZWFzZSBwIGMgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBwLndhaXRlcnMgd2l0aFxuICB8IFNvbWUgd2FrZW5lciAtPlxuICAgICgqIEEgcHJvbWlzZSByZXNvbHZlciBpcyB3YWl0aW5nLCBnaXZlIGl0IHRoZSBwb29sIG1lbWJlci4gKilcbiAgICBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgY1xuICB8IE5vbmUgLT5cbiAgICAoKiBObyBvbmUgaXMgd2FpdGluZywgcXVldWUgaXQuICopXG4gICAgUXVldWUucHVzaCBjIHAubGlzdFxuXG4oKiBEaXNwb3NlIG9mIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgZGlzcG9zZSBwIGMgPVxuICBwLmRpc3Bvc2UgYyA+Pj0gZnVuICgpIC0+XG4gIHAuY291bnQgPC0gcC5jb3VudCAtIDE7XG4gIEx3dC5yZXR1cm5fdW5pdFxuXG4oKiBDcmVhdGUgYSBuZXcgbWVtYmVyIHdoZW4gb25lIGlzIHRocm93biBhd2F5LiAqKVxubGV0IHJlcGxhY2VfZGlzcG9zZWQgcCA9XG4gIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIHAud2FpdGVycyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIE5vIG9uZSBpcyB3YWl0aW5nLCBkbyBub3QgY3JlYXRlIGEgbmV3IG1lbWJlciB0byBhdm9pZFxuICAgICAgIGxvc2luZyBhbiBlcnJvciBpZiBjcmVhdGlvbiBmYWlscy4gKilcbiAgICAoKVxuICB8IFNvbWUgd2FrZW5lciAtPlxuICAgIEx3dC5vbl9hbnlcbiAgICAgIChMd3QuYXBwbHkgcC5jcmVhdGUgKCkpXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgIEx3dC53YWtldXBfbGF0ZXIgd2FrZW5lciBjKVxuICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICgqIENyZWF0aW9uIGZhaWxlZCwgbm90aWZ5IHRoZSB3YWl0ZXIgb2YgdGhlIGZhaWx1cmUuICopXG4gICAgICAgICBMd3Qud2FrZXVwX2xhdGVyX2V4biB3YWtlbmVyIGV4bilcblxuKCogVmVyaWZ5IGEgbWVtYmVyIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSB1c2luZyBpdC4gKilcbmxldCB2YWxpZGF0ZV9hbmRfcmV0dXJuIHAgYyA9XG4gIEx3dC50cnlfYmluZFxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgcC52YWxpZGF0ZSBjKVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gY1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgKCogUmVtb3ZlIHRoaXMgbWVtYmVyIGFuZCBjcmVhdGUgYSBuZXcgb25lLiAqKVxuICAgICAgICAgIGRpc3Bvc2UgcCBjID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICBjcmVhdGVfbWVtYmVyIHApXG4gICAgICAoZnVuIGUgLT5cbiAgICAgICAgICgqIFZhbGlkYXRpb24gZmFpbGVkOiBjcmVhdGUgYSBuZXcgbWVtYmVyIGlmIGF0IGxlYXN0IG9uZVxuICAgICAgICAgICAgcmVzb2x2ZXIgaXMgd2FpdGluZy4gKilcbiAgICAgICAgIGRpc3Bvc2UgcCBjID4+PSBmdW4gKCkgLT5cbiAgICAgICAgIHJlcGxhY2VfZGlzcG9zZWQgcDtcbiAgICAgICAgIEx3dC5mYWlsIGUpXG5cbigqIEFjcXVpcmUgYSBwb29sIG1lbWJlci4gKilcbmxldCBhY3F1aXJlIHAgPVxuICBpZiBRdWV1ZS5pc19lbXB0eSBwLmxpc3QgdGhlblxuICAgICgqIE5vIG1vcmUgYXZhaWxhYmxlIG1lbWJlci4gKilcbiAgICBpZiBwLmNvdW50IDwgcC5tYXggdGhlblxuICAgICAgKCogTGltaXQgbm90IHJlYWNoZWQ6IGNyZWF0ZSBhIG5ldyBvbmUuICopXG4gICAgICBjcmVhdGVfbWVtYmVyIHBcbiAgICBlbHNlXG4gICAgICAoKiBMaW1pdCByZWFjaGVkOiB3YWl0IGZvciBhIGZyZWUgb25lLiAqKVxuICAgICAgKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBwLndhaXRlcnMgPj49IHZhbGlkYXRlX2FuZF9yZXR1cm4gcFxuICBlbHNlXG4gICAgKCogVGFrZSB0aGUgZmlyc3QgZnJlZSBtZW1iZXIgYW5kIHZhbGlkYXRlIGl0LiAqKVxuICAgIGxldCBjID0gUXVldWUudGFrZSBwLmxpc3QgaW5cbiAgICB2YWxpZGF0ZV9hbmRfcmV0dXJuIHAgY1xuXG4oKiBSZWxlYXNlIGEgbWVtYmVyIHdoZW4gdXNlIHJlc3VsdGVkIGluIGZhaWxlZCBwcm9taXNlIGlmIHRoZSBtZW1iZXJcbiAgIGlzIHN0aWxsIHZhbGlkLiAqKVxubGV0IGNoZWNrX2FuZF9yZWxlYXNlIHAgYyBjbGVhcmVkID1cbiAgbGV0IG9rID0gcmVmIGZhbHNlIGluXG4gIHAuY2hlY2sgYyAoZnVuIHJlc3VsdCAtPiBvayA6PSByZXN1bHQpO1xuICBpZiBjbGVhcmVkIHx8IG5vdCAhb2sgdGhlbiAoXG4gICAgKCogRWxlbWVudCBpcyBub3Qgb2sgb3IgdGhlIHBvb2wgd2FzIGNsZWFyZWQgLSBkaXNwb3NlIG9mIGl0ICopXG4gICAgZGlzcG9zZSBwIGNcbiAgKVxuICBlbHNlIChcbiAgICAoKiBFbGVtZW50IGlzIG9rIC0gcmVsZWFzZSBpdCBiYWNrIHRvIHRoZSBwb29sICopXG4gICAgcmVsZWFzZSBwIGM7XG4gICAgTHd0LnJldHVybl91bml0XG4gIClcblxubGV0IHVzZSBwIGYgPVxuICBhY3F1aXJlIHAgPj49IGZ1biBjIC0+XG4gICgqIENhcHR1cmUgdGhlIGN1cnJlbnQgY2xlYXJlZCBzdGF0ZSBzbyB3ZSBjYW4gc2VlIGlmIGl0IGNoYW5nZXMgd2hpbGUgdGhpc1xuICAgICBlbGVtZW50IGlzIGluIHVzZSAqKVxuICBsZXQgY2xlYXJlZCA9ICEocC5jbGVhcmVkKSBpblxuICBsZXQgcHJvbWlzZSA9XG4gICAgTHd0LmNhdGNoXG4gICAgICAoZnVuICgpIC0+IGYgYylcbiAgICAgIChmdW4gZSAtPlxuICAgICAgICAgY2hlY2tfYW5kX3JlbGVhc2UgcCBjICFjbGVhcmVkID4+PSBmdW4gKCkgLT5cbiAgICAgICAgIEx3dC5mYWlsIGUpXG4gIGluXG4gIHByb21pc2UgPj49IGZ1biBfIC0+XG4gIGlmICFjbGVhcmVkIHRoZW4gKFxuICAgICgqIHAgd2FzIGNsZWFyZWQgd2hpbGUgcHJvbWlzZSB3YXMgcmVzb2x2aW5nIC0gZGlzcG9zZSBvZiB0aGlzIGVsZW1lbnQgKilcbiAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgcHJvbWlzZVxuICApXG4gIGVsc2UgKFxuICAgIHJlbGVhc2UgcCBjO1xuICAgIHByb21pc2VcbiAgKVxuXG5sZXQgY2xlYXIgcCA9XG4gIGxldCBlbGVtZW50cyA9IFF1ZXVlLmZvbGQgKGZ1biBsIGVsZW1lbnQgLT4gZWxlbWVudCA6OiBsKSBbXSBwLmxpc3QgaW5cbiAgUXVldWUuY2xlYXIgcC5saXN0O1xuICAoKiBJbmRpY2F0ZSB0byBhbnkgY3VycmVudGx5IGluLXVzZSBlbGVtZW50cyB0aGF0IHdlIGNsZWFyZWQgdGhlIHBvb2wgKilcbiAgbGV0IG9sZF9jbGVhcmVkID0gIShwLmNsZWFyZWQpIGluXG4gIG9sZF9jbGVhcmVkIDo9IHRydWU7XG4gIHAuY2xlYXJlZCA6PSByZWYgZmFsc2U7XG4gIEx3dF9saXN0Lml0ZXJfcyAoZGlzcG9zZSBwKSBlbGVtZW50c1xuXG5sZXQgd2FpdF9xdWV1ZV9sZW5ndGggcCA9IEx3dF9zZXF1ZW5jZS5sZW5ndGggcC53YWl0ZXJzXG4iLCIoKiBPQ2FtbCBwcm9taXNlIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvbHd0XG4gKiBDb3B5cmlnaHQgKGMpIDIwMDksIE1ldGF3ZWIgVGVjaG5vbG9naWVzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gKiBhcmUgbWV0OlxuICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcbiAqICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gKiAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWRcbiAqICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE1FVEFXRUIgVEVDSE5PTE9HSUVTIGBgQVMgSVMnJyBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSXG4gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBCRVxuICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUlxuICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0ZcbiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUlxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksXG4gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRVxuICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTlxuICogSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKilcblxuKCogVGhpcyBjb2RlIGlzIGFkYXB0ZWQgZnJvbVxuICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTAxMDAxMjE1NDI1L2h0dHA6Ly9laWdlbmNsYXNzLm9yZzo4MC9oaWtpL2xpZ2h0d2VpZ2h0LXRocmVhZHMtd2l0aC1sd3QuICopXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBtdmFyX2NvbnRlbnRzIDogJ2Egb3B0aW9uO1xuICAoKiBDdXJyZW50IGNvbnRlbnRzICopXG5cbiAgd3JpdGVycyA6ICgnYSAqIHVuaXQgTHd0LnUpIEx3dF9zZXF1ZW5jZS50O1xuICAoKiBUaHJlYWRzIHdhaXRpbmcgdG8gcHV0IGEgdmFsdWUgKilcblxuICByZWFkZXJzIDogJ2EgTHd0LnUgTHd0X3NlcXVlbmNlLnQ7XG4gICgqIFRocmVhZHMgd2FpdGluZyBmb3IgYSB2YWx1ZSAqKVxufVxuXG5sZXQgY3JlYXRlX2VtcHR5ICgpID1cbiAgeyBtdmFyX2NvbnRlbnRzID0gTm9uZTtcbiAgICB3cml0ZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKTtcbiAgICByZWFkZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSB9XG5cbmxldCBjcmVhdGUgdiA9XG4gIHsgbXZhcl9jb250ZW50cyA9IFNvbWUgdjtcbiAgICB3cml0ZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKTtcbiAgICByZWFkZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSB9XG5cbmxldCBwdXQgbXZhciB2ID1cbiAgbWF0Y2ggbXZhci5tdmFyX2NvbnRlbnRzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgYmVnaW4gbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgbXZhci5yZWFkZXJzIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtdmFyLm12YXJfY29udGVudHMgPC0gU29tZSB2XG4gICAgICB8IFNvbWUgdyAtPlxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIHcgdlxuICAgIGVuZDtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCBTb21lIF8gLT5cbiAgICBsZXQgKHJlcywgdykgPSBMd3QudGFzayAoKSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9yICh2LCB3KSBtdmFyLndyaXRlcnMgaW5cbiAgICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuIF8gLT4gTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlKTtcbiAgICByZXNcblxubGV0IG5leHRfd3JpdGVyIG12YXIgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBtdmFyLndyaXRlcnMgd2l0aFxuICB8IFNvbWUodicsIHcpIC0+XG4gICAgbXZhci5tdmFyX2NvbnRlbnRzIDwtIFNvbWUgdic7XG4gICAgTHd0Lndha2V1cF9sYXRlciB3ICgpXG4gIHwgTm9uZSAtPlxuICAgIG12YXIubXZhcl9jb250ZW50cyA8LSBOb25lXG5cbmxldCB0YWtlX2F2YWlsYWJsZSBtdmFyID1cbiAgbWF0Y2ggbXZhci5tdmFyX2NvbnRlbnRzIHdpdGhcbiAgfCBTb21lIHYgLT5cbiAgICBuZXh0X3dyaXRlciBtdmFyO1xuICAgIFNvbWUgdlxuICB8IE5vbmUgLT5cbiAgICBOb25lXG5cbmxldCB0YWtlIG12YXIgPVxuICBtYXRjaCB0YWtlX2F2YWlsYWJsZSBtdmFyIHdpdGhcbiAgfCBTb21lIHYgLT4gTHd0LnJldHVybiB2XG4gIHwgTm9uZSAtPiAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIG12YXIucmVhZGVyc1xuXG5sZXQgaXNfZW1wdHkgbXZhciA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBsb2NrZWQgOiBib29sOyB3YWl0ZXJzIDogdW5pdCBMd3QudSBMd3Rfc2VxdWVuY2UudCAgfVxuXG5sZXQgY3JlYXRlICgpID0geyBsb2NrZWQgPSBmYWxzZTsgd2FpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgbG9jayBtID1cbiAgaWYgbS5sb2NrZWQgdGhlblxuICAgIChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgbS53YWl0ZXJzXG4gIGVsc2UgYmVnaW5cbiAgICBtLmxvY2tlZCA8LSB0cnVlO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbmRcblxubGV0IHVubG9jayBtID1cbiAgaWYgbS5sb2NrZWQgdGhlbiBiZWdpblxuICAgIGlmIEx3dF9zZXF1ZW5jZS5pc19lbXB0eSBtLndhaXRlcnMgdGhlblxuICAgICAgbS5sb2NrZWQgPC0gZmFsc2VcbiAgICBlbHNlXG4gICAgICAoKiBXZSBkbyBub3QgdXNlIFtMd3Qud2FrZXVwXSBoZXJlIHRvIGF2b2lkIGEgc3RhY2sgb3ZlcmZsb3dcbiAgICAgICAgIHdoZW4gdW5sb2NraW5nIGEgbG90IG9mIHRocmVhZHMuICopXG4gICAgICBMd3Qud2FrZXVwX2xhdGVyIChMd3Rfc2VxdWVuY2UudGFrZV9sIG0ud2FpdGVycykgKClcbiAgZW5kXG5cbmxldCB3aXRoX2xvY2sgbSBmID1cbiAgbG9jayBtID4+PSBmdW4gKCkgLT5cbiAgTHd0LmZpbmFsaXplIGYgKGZ1biAoKSAtPiB1bmxvY2sgbTsgTHd0LnJldHVybl91bml0KVxuXG5sZXQgaXNfbG9ja2VkIG0gPSBtLmxvY2tlZFxubGV0IGlzX2VtcHR5IG0gPSBMd3Rfc2VxdWVuY2UuaXNfZW1wdHkgbS53YWl0ZXJzXG4iLCIoKiBPQ2FtbCBwcm9taXNlIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvbHd0XG4gKiBDb3B5cmlnaHQgKGMpIDIwMDksIE1ldGF3ZWIgVGVjaG5vbG9naWVzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gKiBhcmUgbWV0OlxuICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcbiAqICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gKiAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWRcbiAqICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE1FVEFXRUIgVEVDSE5PTE9HSUVTIGBgQVMgSVMnJyBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSXG4gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBCRVxuICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUlxuICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0ZcbiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUlxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksXG4gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRVxuICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTlxuICogSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKilcblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxudHlwZSAnYSB0ID0gJ2EgTHd0LnUgTHd0X3NlcXVlbmNlLnRcblxubGV0IGNyZWF0ZSA9IEx3dF9zZXF1ZW5jZS5jcmVhdGVcblxubGV0IHdhaXQgP211dGV4IGN2YXIgPVxuICBsZXQgd2FpdGVyID0gKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBjdmFyIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbXV0ZXggd2l0aFxuICAgIHwgU29tZSBtIC0+IEx3dF9tdXRleC51bmxvY2sgbVxuICAgIHwgTm9uZSAtPiAoKVxuICBpblxuICBMd3QuZmluYWxpemVcbiAgICAoZnVuICgpIC0+IHdhaXRlcilcbiAgICAoZnVuICgpIC0+XG4gICAgICAgbWF0Y2ggbXV0ZXggd2l0aFxuICAgICAgIHwgU29tZSBtIC0+IEx3dF9tdXRleC5sb2NrIG1cbiAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2lnbmFsIGN2YXIgYXJnID1cbiAgdHJ5XG4gICAgTHd0Lndha2V1cF9sYXRlciAoTHd0X3NlcXVlbmNlLnRha2VfbCBjdmFyKSBhcmdcbiAgd2l0aCBMd3Rfc2VxdWVuY2UuRW1wdHkgLT5cbiAgICAoKVxuXG5sZXQgYnJvYWRjYXN0IGN2YXIgYXJnID1cbiAgbGV0IHdha2VuZXJzID0gTHd0X3NlcXVlbmNlLmZvbGRfciAoZnVuIHggbCAtPiB4IDo6IGwpIGN2YXIgW10gaW5cbiAgTHd0X3NlcXVlbmNlLml0ZXJfbm9kZV9sIEx3dF9zZXF1ZW5jZS5yZW1vdmUgY3ZhcjtcbiAgTGlzdC5pdGVyIChmdW4gd2FrZW5lciAtPiBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgYXJnKSB3YWtlbmVyc1xuXG5sZXQgYnJvYWRjYXN0X2V4biBjdmFyIGV4biA9XG4gIGxldCB3YWtlbmVycyA9IEx3dF9zZXF1ZW5jZS5mb2xkX3IgKGZ1biB4IGwgLT4geCA6OiBsKSBjdmFyIFtdIGluXG4gIEx3dF9zZXF1ZW5jZS5pdGVyX25vZGVfbCBMd3Rfc2VxdWVuY2UucmVtb3ZlIGN2YXI7XG4gIExpc3QuaXRlciAoZnVuIHdha2VuZXIgLT4gTHd0Lndha2V1cF9sYXRlcl9leG4gd2FrZW5lciBleG4pIHdha2VuZXJzXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgJ2EgZXZlbnQgPSAnYSBSZWFjdC5ldmVudFxudHlwZSAnYSBzaWduYWwgPSAnYSBSZWFjdC5zaWduYWxcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBSZWFjdC5FXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBMd3Qtc3BlY2lmaWMgdXRpbGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgZmluYWxpc2UgZiBfID0gZiAoKVxuXG4gIGxldCB3aXRoX2ZpbmFsaXNlciBmIGV2ZW50ID1cbiAgICBsZXQgciA9IHJlZiAoKSBpblxuICAgIEdjLmZpbmFsaXNlIChmaW5hbGlzZSBmKSByO1xuICAgIG1hcCAoZnVuIHggLT4gaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHIpOyB4KSBldmVudFxuXG4gIGxldCBuZXh0IGV2ID1cbiAgICBsZXQgd2FpdGVyLCB3YWtlbmVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICBsZXQgZXYgPSBtYXAgKGZ1biB4IC0+IEx3dC53YWtldXAgd2FrZW5lciB4KSAob25jZSBldikgaW5cbiAgICBMd3Qub25fY2FuY2VsIHdhaXRlciAoZnVuICgpIC0+IHN0b3AgZXYpO1xuICAgIHdhaXRlclxuXG4gIGxldCBsaW1pdCBmIGUgPVxuICAgICgqIFRocmVhZCB3aGljaCBwcmV2ZW50cyBbZV0gZnJvbSBvY2N1cnJpbmcgd2hpbGUgaXQgaXMgc2xlZXBpbmcgKilcbiAgICBsZXQgbGltaXRlciA9IHJlZiBMd3QucmV0dXJuX3VuaXQgaW5cblxuICAgICgqIFRoZSBvY2N1cnJlbmNlIHRoYXQgaXMgZGVsYXllZCB1bnRpbCB0aGUgbGltaXRlciByZXR1cm5zLiAqKVxuICAgIGxldCBkZWxheWVkID0gcmVmIE5vbmUgaW5cblxuICAgICgqIFRoZSByZXN1bHRpbmcgZXZlbnQuICopXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICgqIFRoZSBsaW1pdGVyIGlzIHNsZWVwaW5nLCB3ZSBxdWV1ZSB0aGUgZXZlbnQgZm9yIGxhdGVyXG4gICAgICAgICAgICAgICAgZGVsaXZlcmluZy4gKilcbiAgICAgICAgICAgICBtYXRjaCAhZGVsYXllZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIGNlbGwgLT5cbiAgICAgICAgICAgICAgICgqIEFuIG9jY3VycmVuY2UgaXMgYWxyZWFkeSBxdWV1ZWQsIHJlcGxhY2UgaXQuICopXG4gICAgICAgICAgICAgICBjZWxsIDo9IHg7XG4gICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgY2VsbCA9IHJlZiB4IGluXG4gICAgICAgICAgICAgICBkZWxheWVkIDo9IFNvbWUgY2VsbDtcbiAgICAgICAgICAgICAgIEx3dC5vbl9zdWNjZXNzICFsaW1pdGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9ICFjZWxsIGluXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICAgICAgICBwdXNoIHgpO1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICgqIFNldCB0aGUgbGltaXRlciBmb3IgZnV0dXJlIGV2ZW50cy4gKilcbiAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgKCogU2VuZCB0aGUgb2NjdXJyZW5jZSBub3cuICopXG4gICAgICAgICAgICAgcHVzaCB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kKVxuICAgICAgICBlXG4gICAgaW5cblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGNhbmNlbF90aHJlYWQgdCAoKSA9XG4gICAgTHd0LmNhbmNlbCB0XG5cbiAgbGV0IGZyb20gZiA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGYgKCkgPj49IGZ1biB4IC0+XG4gICAgICBwdXNoIHg7XG4gICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsZXQgdCA9IEx3dC5wYXVzZSAoKSA+Pj0gbG9vcCBpblxuICAgIHdpdGhfZmluYWxpc2VyIChjYW5jZWxfdGhyZWFkIHQpIGV2ZW50XG5cbiAgbGV0IHRvX3N0cmVhbSBldmVudCA9XG4gICAgbGV0IHN0cmVhbSwgcHVzaCwgc2V0X3JlZiA9IEx3dF9zdHJlYW0uY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gICAgc2V0X3JlZiAobWFwIChmdW4geCAtPiBwdXNoIChTb21lIHgpKSBldmVudCk7XG4gICAgc3RyZWFtXG5cbiAgbGV0IG9mX3N0cmVhbSBzdHJlYW0gPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCB0ID1cbiAgICAgIEx3dC5wYXVzZSAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICBMd3Rfc3RyZWFtLml0ZXIgKGZ1biB2IC0+IHRyeSBwdXNoIHYgd2l0aCBleG4gLT4gIUx3dC5hc3luY19leGNlcHRpb25faG9vayBleG4pIHN0cmVhbSBpblxuICAgIHdpdGhfZmluYWxpc2VyIChjYW5jZWxfdGhyZWFkIHQpIGV2ZW50XG5cbiAgbGV0IGRlbGF5IHRocmVhZCA9XG4gICAgbWF0Y2ggTHd0LnBvbGwgdGhyZWFkIHdpdGhcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgZVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGV2ZW50LCBzZW5kID0gY3JlYXRlICgpIGluXG4gICAgICBMd3Qub25fc3VjY2VzcyB0aHJlYWQgKGZ1biBlIC0+IHNlbmQgZTsgc3RvcCBldmVudCk7XG4gICAgICBzd2l0Y2ggbmV2ZXIgZXZlbnRcblxuICBsZXQga2VlcGVkID0gcmVmIFtdXG5cbiAgbGV0IGtlZXAgZSA9XG4gICAga2VlcGVkIDo9IG1hcCBpZ25vcmUgZSA6OiAha2VlcGVkXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBFdmVudCB0cmFuc2Zvcm1hdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgcnVuX3AgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4gdCAtPiBMd3Qub25fc3VjY2VzcyB0IChmdW4gdiAtPiBwdXNoIHYpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgcnVuX3MgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB0IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB0KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSkgZVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgbWFwX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW4gdiAtPiBwdXNoIHYpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgbWFwX3MgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpIGVcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGFwcF9wIGVmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3MgKGYgeCkgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChhcHAgKG1hcCAoZnVuIGYgeCAtPiAoZiwgeCkpIGVmKSBlKVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgYXBwX3MgZWYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChhcHAgKG1hcCAoZnVuIGYgeCAtPiAoZiwgeCkpIGVmKSBlKVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZmlsdGVyX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW5jdGlvbiB0cnVlIC0+IHB1c2ggeCB8IGZhbHNlIC0+ICgpKTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZpbHRlcl9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmbWFwX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmbWFwX3MgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBkaWZmX3MgZiBlID1cbiAgICBsZXQgcHJldmlvdXMgPSByZWYgTm9uZSBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBtYXRjaCAhcHJldmlvdXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBwcmV2aW91cyA6PSBTb21lIHg7XG4gICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICB8IFNvbWUgeSAtPlxuICAgICAgICAgICAgIHByZXZpb3VzIDo9IFNvbWUgeDtcbiAgICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHggeSkpXG4gICAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgICBlXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBhY2N1bV9zIGVmIGFjYyA9XG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4gZiAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgIWFjYykpIChmdW4geCAtPiBhY2MgOj0geDsgcHVzaCB4KTsgTm9uZSkgZWYgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmb2xkX3MgZiBhY2MgZSA9XG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgIWFjYyB4KSkgKGZ1biB4IC0+IGFjYyA6PSB4OyBwdXNoIHgpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgcmVjIHJldl9mb2xkIGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBMd3QucmV0dXJuIGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICByZXZfZm9sZCBmIGFjYyBsID4+PSBmdW4gYWNjIC0+XG4gICAgICBmIGFjYyB4XG5cbiAgbGV0IG1lcmdlX3MgZiBhY2MgZWwgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gbCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gcmV2X2ZvbGQgZiBhY2MgbCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChtZXJnZSAoZnVuIGFjYyB4IC0+IHggOjogYWNjKSBbXSBlbClcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5lbmRcblxubW9kdWxlIFMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBSZWFjdC5TXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBMd3Qtc3BlY2lmaWMgdXRpbGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgZmluYWxpc2UgZiBfID0gZiAoKVxuXG4gIGxldCB3aXRoX2ZpbmFsaXNlciBmIHNpZ25hbCA9XG4gICAgbGV0IHIgPSByZWYgKCkgaW5cbiAgICBHYy5maW5hbGlzZSAoZmluYWxpc2UgZikgcjtcbiAgICBtYXBcbiAgICAgIChmdW4geCAtPiBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgcik7IHgpXG4gICAgICBzaWduYWxcblxuICBsZXQgbGltaXQgP2VxIGYgcyA9XG4gICAgKCogVGhyZWFkIHdoaWNoIHByZXZlbnQgW3NdIHRvIGNoYW5nZXMgd2hpbGUgaXQgaXMgc2xlZXBpbmcgKilcbiAgICBsZXQgbGltaXRlciA9IHJlZiAoZiAoKSkgaW5cblxuICAgICgqIFRoZSBvY2N1cnJlbmNlIHRoYXQgaXMgZGVsYXllZCB1bnRpbCB0aGUgbGltaXRlciByZXR1cm5zLiAqKVxuICAgIGxldCBkZWxheWVkID0gcmVmIE5vbmUgaW5cblxuICAgICgqIFRoZSByZXN1bHRpbmcgZXZlbnQuICopXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAoKiBUaGUgbGltaXRlciBpcyBzbGVlcGluZywgd2UgcXVldWUgdGhlIGV2ZW50IGZvciBsYXRlclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJpbmcuICopXG4gICAgICAgICAgICAgbWF0Y2ggIWRlbGF5ZWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBjZWxsIC0+XG4gICAgICAgICAgICAgICAoKiBBbiBvY2N1cnJlbmNlIGlzIGFscmVhZHkgcXVldWVkLCByZXBsYWNlIGl0LiAqKVxuICAgICAgICAgICAgICAgY2VsbCA6PSB4O1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbGV0IGNlbGwgPSByZWYgeCBpblxuICAgICAgICAgICAgICAgZGVsYXllZCA6PSBTb21lIGNlbGw7XG4gICAgICAgICAgICAgICBMd3Qub25fc3VjY2VzcyAhbGltaXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCB4ID0gIWNlbGwgaW5cbiAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZTtcbiAgICAgICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAgICAgIHB1c2ggeCk7XG4gICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgKCogU2V0IHRoZSBsaW1pdGVyIGZvciBmdXR1cmUgZXZlbnRzLiAqKVxuICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAoKiBTZW5kIHRoZSBvY2N1cnJlbmNlIG5vdy4gKilcbiAgICAgICAgICAgICBwdXNoIHg7XG4gICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cblxuICAgIGhvbGQgP2VxICh2YWx1ZSBzKSAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSlcblxuICBsZXQga2VlcGVkID0gcmVmIFtdXG5cbiAgbGV0IGtlZXAgcyA9XG4gICAga2VlcGVkIDo9IG1hcCBpZ25vcmUgcyA6OiAha2VlcGVkXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBTaWduYWwgdHJhbnNmb3JtYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgcnVuX3MgP2VxIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHQgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHQpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHZhbHVlIHMpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBtYXBfcyA/ZXEgZiBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGFwcF9zID9lcSBzZiBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChFLmFwcCAoRS5tYXAgKGZ1biBmIHggLT4gKGYsIHgpKSAoY2hhbmdlcyBzZikpIChjaGFuZ2VzIHMpKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+ICh2YWx1ZSBzZikgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZmlsdGVyX3MgP2VxIGYgaSBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IEUuZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIChjaGFuZ2VzIHMpIGluXG4gICAgbGV0IHggPSB2YWx1ZSBzIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkgPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcbiAgICB8IGZhbHNlIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSBpIChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZm1hcF9zID9lcSBmIGkgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBFLmZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIFNvbWUgeCAtPiBwdXNoIHggfCBOb25lIC0+ICgpKTsgTm9uZSkgKGNoYW5nZXMgcykgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIGkgKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBkaWZmX3MgZiBzID1cbiAgICBsZXQgcHJldmlvdXMgPSByZWYgKHZhbHVlIHMpIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBsZXQgeSA9ICFwcmV2aW91cyBpblxuICAgICAgICAgICBwcmV2aW91cyA6PSB4O1xuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4IHkpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBzYW1wbGVfcyBmIGUgcyA9XG4gICAgRS5tYXBfcyAoZnVuIHggLT4gZiB4ICh2YWx1ZSBzKSkgZVxuXG4gIGxldCBhY2N1bV9zID9lcSBlZiBpID1cbiAgICBob2xkID9lcSBpIChFLmFjY3VtX3MgZWYgaSlcblxuICBsZXQgZm9sZF9zID9lcSBmIGkgZSA9XG4gICAgaG9sZCA/ZXEgaSAoRS5mb2xkX3MgZiBpIGUpXG5cbiAgbGV0IHJlYyByZXZfZm9sZCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgcmV2X2ZvbGQgZiBhY2MgbCA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZiBhY2MgeFxuXG4gIGxldCBtZXJnZV9zID9lcSBmIGFjYyBzbCA9XG4gICAgbGV0IHMgPSBtZXJnZSAoZnVuIGFjYyB4IC0+IHggOjogYWNjKSBbXSBzbCBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjIGwpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGwxX3MgP2VxIGYgczEgPVxuICAgIG1hcF9zID9lcSBmIHMxXG5cbiAgbGV0IGwyX3MgP2VxIGYgczEgczIgPVxuICAgICgqIFNvbWUgZGV0YWlscyBhYm91dCB0aGUgdXNlIG9mIFtmdW4gXyBfIC0+IGZhbHNlXSBvblxuICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzg5MyNwdWxscmVxdWVzdHJldmlldy03ODMwODM0OTYgKilcbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyKSAtPiBmIHgxIHgyKSAobDIgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIC0+ICh4MSwgeDIpKSBzMSBzMilcblxuICBsZXQgbDNfcyA/ZXEgZiBzMSBzMiBzMyA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMpIC0+IGYgeDEgeDIgeDMpIChsMyB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMtPiAoeDEsIHgyLCB4MykpIHMxIHMyIHMzKVxuXG4gIGxldCBsNF9zID9lcSBmIHMxIHMyIHMzIHM0ID1cbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyLCB4MywgeDQpIC0+IGYgeDEgeDIgeDMgeDQpIChsNCB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQtPiAoeDEsIHgyLCB4MywgeDQpKSBzMSBzMiBzMyBzNClcblxuICBsZXQgbDVfcyA/ZXEgZiBzMSBzMiBzMyBzNCBzNSA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0LCB4NSkgLT4gZiB4MSB4MiB4MyB4NCB4NSkgKGw1IH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiB4MyB4NCB4NS0+ICh4MSwgeDIsIHgzLCB4NCwgeDUpKSBzMSBzMiBzMyBzNCBzNSlcblxuICBsZXQgbDZfcyA/ZXEgZiBzMSBzMiBzMyBzNCBzNSBzNiA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYpIC0+IGYgeDEgeDIgeDMgeDQgeDUgeDYpIChsNiB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQgeDUgeDYtPiAoeDEsIHgyLCB4MywgeDQsIHg1LCB4NikpIHMxIHMyIHMzIHM0IHM1IHM2KVxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTW9uYWRpYyBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJldHVybiA9XG4gICAgY29uc3RcblxuICBsZXQgYmluZF9zID9lcSBzIGYgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKHN3aXRjaCA/ZXEgKGhvbGQgfmVxOiggPT0gKSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSkpXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9sd3RfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2ZpbGUgKilcbm1vZHVsZSBMd3RfZmlsZSA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcyAqKVxubW9kdWxlIEx3dF9qcyA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzICopXG5tb2R1bGUgTHd0X2pzX2V2ZW50cyA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2pzb25wICopXG5tb2R1bGUgTHd0X2pzb25wID0gSnNfb2Zfb2NhbWxfbHd0X19Md3RfanNvbnBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF94bWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIEx3dF94bWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX2x3dF9fTHd0X3htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9sd3RfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBpbnQpIHkgPSB4IDwgeVxuXG4gIGxldCAoIDw9ICkgKHggOiBpbnQpIHkgPSB4IDw9IHlcblxuICBsZXQgKCA8PiApICh4IDogaW50KSB5ID0geCA8PiB5XG5cbiAgbGV0ICggPSApICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgKCA+ICkgKHggOiBpbnQpIHkgPSB4ID4geVxuXG4gIGxldCAoID49ICkgKHggOiBpbnQpIHkgPSB4ID49IHlcblxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG5cbiAgbGV0IGVxdWFsICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gSnNcbm9wZW4gWG1sSHR0cFJlcXVlc3Rcbm9wZW4hIEltcG9ydFxuXG5sZXQgZW5jb2RlX3VybCBsID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFwiJlwiXG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBVcmwudXJsZW5jb2RlIG5hbWUgXiBcIj1cIiBeIFVybC51cmxlbmNvZGUgKHRvX3N0cmluZyBzKVxuICAgICAgICAgfCBuYW1lLCBgRmlsZSBzIC0+IFVybC51cmxlbmNvZGUgbmFtZSBeIFwiPVwiIF4gVXJsLnVybGVuY29kZSAodG9fc3RyaW5nIHMjIy5uYW1lKSlcbiAgICAgICBsKVxuXG4oKiBIaWdoZXIgbGV2ZWwgaW50ZXJmYWNlOiAqKVxuXG50eXBlICdyZXNwb25zZSBnZW5lcmljX2h0dHBfZnJhbWUgPVxuICB7IHVybCA6IHN0cmluZ1xuICA7IGNvZGUgOiBpbnRcbiAgOyBoZWFkZXJzIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gIDsgY29udGVudF94bWwgOiB1bml0IC0+IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdGlvblxuICB9XG4oKiogdHlwZSBvZiB0aGUgaHR0cCBoZWFkZXJzICopXG5cbnR5cGUgaHR0cF9mcmFtZSA9IHN0cmluZyBnZW5lcmljX2h0dHBfZnJhbWVcblxuZXhjZXB0aW9uIFdyb25nX2hlYWRlcnMgb2YgKGludCAqIChzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikpXG5cbmxldCBkZWZhdWx0X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEpzLk9wdC5jYXNlIHJlcSMjLnJlc3BvbnNlVGV4dCAoZnVuICgpIC0+IFwiXCIpIChmdW4geCAtPiBKcy50b19zdHJpbmcgeClcbiAgOyBjb250ZW50X3htbCA9XG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gcmVxIyMucmVzcG9uc2VYTUwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZG9jIC0+IGlmIEpzLnNvbWUgZG9jIyMuZG9jdW1lbnRFbGVtZW50ID09IEpzLm51bGwgdGhlbiBOb25lIGVsc2UgU29tZSBkb2MpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCB0ZXh0X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEpzLk9wdC5jYXNlIHJlcSMjLnJlc3BvbnNlVGV4dCAoZnVuICgpIC0+IEpzLnN0cmluZyBcIlwiKSAoZnVuIHggLT4geClcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgZG9jdW1lbnRfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5kb2N1bWVudCByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBqc29uX3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uanNvbiByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBibG9iX3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uYmxvYiByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBhcnJheWJ1ZmZlcl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGhhc19nZXRfYXJncyB1cmwgPVxuICB0cnlcbiAgICBpZ25vcmUgKFN0cmluZy5pbmRleCB1cmwgJz8nKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCBwZXJmb3JtX3Jhd1xuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgPyhjaGVja19oZWFkZXJzID0gZnVuIF8gXyAtPiB0cnVlKVxuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/Y29udGVudHNcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgKHR5cGUgcmVzcHR5cGUpXG4gICAgfihyZXNwb25zZV90eXBlIDogcmVzcHR5cGUgcmVzcG9uc2UpXG4gICAgdXJsID1cbiAgbGV0IGNvbnRlbnRzX25vcm1hbGl6YXRpb24gPSBmdW5jdGlvblxuICAgIHwgYFBPU1RfZm9ybSBhcmdzIC0+XG4gICAgICAgIGxldCBvbmx5X3N0cmluZ3MgPVxuICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IF8sIGBTdHJpbmcgXyAtPiB0cnVlXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZvcm1fY29udGVudHMgPVxuICAgICAgICAgIGlmIG9ubHlfc3RyaW5ncyB0aGVuIGBGaWVsZHMgKHJlZiBbXSkgZWxzZSBGb3JtLmVtcHR5X2Zvcm1fY29udGVudHMgKClcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKG5hbWUsIHZhbHVlKSAtPiBGb3JtLmFwcGVuZCBmb3JtX2NvbnRlbnRzIChuYW1lLCB2YWx1ZSkpIGFyZ3M7XG4gICAgICAgIGBGb3JtX2NvbnRlbnRzIGZvcm1fY29udGVudHNcbiAgICB8IChgU3RyaW5nIF8gfCBgRm9ybV9jb250ZW50cyBfKSBhcyB4IC0+IHhcbiAgICB8IGBCbG9iIGIgLT4gYEJsb2IgKGIgOiAjRmlsZS5ibG9iIEpzLnQgOj4gRmlsZS5ibG9iIEpzLnQpXG4gIGluXG4gIGxldCBjb250ZW50cyA9XG4gICAgbWF0Y2ggY29udGVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGMgLT4gU29tZSAoY29udGVudHNfbm9ybWFsaXphdGlvbiBjKVxuICBpblxuICBsZXQgbWV0aG9kX3RvX3N0cmluZyBtID1cbiAgICBtYXRjaCBtIHdpdGhcbiAgICB8IGBHRVQgLT4gXCJHRVRcIlxuICAgIHwgYFBPU1QgLT4gXCJQT1NUXCJcbiAgICB8IGBIRUFEIC0+IFwiSEVBRFwiXG4gICAgfCBgUFVUIC0+IFwiUFVUXCJcbiAgICB8IGBERUxFVEUgLT4gXCJERUxFVEVcIlxuICAgIHwgYE9QVElPTlMgLT4gXCJPUFRJT05TXCJcbiAgICB8IGBQQVRDSCAtPiBcIlBBVENIXCJcbiAgaW5cbiAgbGV0IG1ldGhvZF8sIGNvbnRlbnRfdHlwZSA9XG4gICAgbGV0IG92ZXJyaWRlX21ldGhvZCBtID1cbiAgICAgIG1hdGNoIG92ZXJyaWRlX21ldGhvZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbVxuICAgICAgfCBTb21lIHYgLT4gbWV0aG9kX3RvX3N0cmluZyB2XG4gICAgaW5cbiAgICBsZXQgb3ZlcnJpZGVfY29udGVudF90eXBlIGMgPVxuICAgICAgbWF0Y2ggY29udGVudF90eXBlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTb21lIGNcbiAgICAgIHwgU29tZSBfIC0+IGNvbnRlbnRfdHlwZVxuICAgIGluXG4gICAgbWF0Y2ggY29udGVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBvdmVycmlkZV9tZXRob2QgXCJHRVRcIiwgY29udGVudF90eXBlXG4gICAgfCBTb21lIChgRm9ybV9jb250ZW50cyBmb3JtKSAtPiAoXG4gICAgICAgIG1hdGNoIGZvcm0gd2l0aFxuICAgICAgICB8IGBGaWVsZHMgX3N0cmluZ3MgLT5cbiAgICAgICAgICAgICggb3ZlcnJpZGVfbWV0aG9kIFwiUE9TVFwiXG4gICAgICAgICAgICAsIG92ZXJyaWRlX2NvbnRlbnRfdHlwZSBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiIClcbiAgICAgICAgfCBgRm9ybURhdGEgXyAtPiBvdmVycmlkZV9tZXRob2QgXCJQT1NUXCIsIGNvbnRlbnRfdHlwZSlcbiAgICB8IFNvbWUgKGBTdHJpbmcgXyB8IGBCbG9iIF8pIC0+IG92ZXJyaWRlX21ldGhvZCBcIlBPU1RcIiwgY29udGVudF90eXBlXG4gIGluXG4gIGxldCB1cmwgPVxuICAgIGlmIFBvbHkuKGdldF9hcmdzID0gW10pXG4gICAgdGhlbiB1cmxcbiAgICBlbHNlIHVybCBeIChpZiBoYXNfZ2V0X2FyZ3MgdXJsIHRoZW4gXCImXCIgZWxzZSBcIj9cIikgXiBVcmwuZW5jb2RlX2FyZ3VtZW50cyBnZXRfYXJnc1xuICBpblxuICBsZXQgKHJlcyA6IHJlc3B0eXBlIGdlbmVyaWNfaHR0cF9mcmFtZSBMd3QudCksIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgcmVxID0gY3JlYXRlICgpIGluXG4gIHJlcSMjX29wZW4gKEpzLnN0cmluZyBtZXRob2RfKSAoSnMuc3RyaW5nIHVybCkgSnMuX3RydWU7XG4gIChtYXRjaCBvdmVycmlkZV9taW1lX3R5cGUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIG1pbWVfdHlwZSAtPiByZXEjI292ZXJyaWRlTWltZVR5cGUgKEpzLnN0cmluZyBtaW1lX3R5cGUpKTtcbiAgKG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICB8IEFycmF5QnVmZmVyIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiXG4gIHwgQmxvYiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYmxvYlwiXG4gIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgfCBKU09OIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJqc29uXCJcbiAgfCBUZXh0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0XCJcbiAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIChtYXRjaCB3aXRoX2NyZWRlbnRpYWxzIHdpdGhcbiAgfCBTb21lIGMgLT4gcmVxIyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgY1xuICB8IE5vbmUgLT4gKCkpO1xuICAobWF0Y2ggY29udGVudF90eXBlIHdpdGhcbiAgfCBTb21lIGNvbnRlbnRfdHlwZSAtPlxuICAgICAgcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgXCJDb250ZW50LXR5cGVcIikgKEpzLnN0cmluZyBjb250ZW50X3R5cGUpXG4gIHwgXyAtPiAoKSk7XG4gIExpc3QuaXRlciAoZnVuIChuLCB2KSAtPiByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBuKSAoSnMuc3RyaW5nIHYpKSBoZWFkZXJzO1xuICBsZXQgaGVhZGVycyBzID1cbiAgICBPcHQuY2FzZVxuICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAoZnVuIHYgLT4gU29tZSAoSnMudG9fc3RyaW5nIHYpKVxuICBpblxuICBsZXQgZG9fY2hlY2tfaGVhZGVycyA9XG4gICAgbGV0IHN0ID0gcmVmIGBOb3RfeWV0IGluXG4gICAgZnVuICgpIC0+XG4gICAgICBpZiBQb2x5Lighc3QgPSBgTm90X3lldClcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgY2hlY2tfaGVhZGVycyByZXEjIy5zdGF0dXMgaGVhZGVyc1xuICAgICAgICB0aGVuIHN0IDo9IGBQYXNzZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgTHd0Lndha2V1cF9leG4gdyAoV3JvbmdfaGVhZGVycyAocmVxIyMuc3RhdHVzLCBoZWFkZXJzKSk7XG4gICAgICAgICAgc3QgOj0gYEZhaWxlZDtcbiAgICAgICAgICByZXEjI2Fib3J0KTtcbiAgICAgIFBvbHkuKCFzdCA8PiBgRmFpbGVkKVxuICBpblxuICByZXEjIy5vbnJlYWR5c3RhdGVjaGFuZ2UgOj1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPlxuICAgICAgICBtYXRjaCByZXEjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICAgICAgKCogSUUgZG9lc24ndCBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBmb3IgSEVBREVSU19SRUNFSVZFRC5cbiAgICAgICAgICAgICBzbyB3ZSB3YWl0IHRpbCBMT0FESU5HIHRvIGNoZWNrIGhlYWRlcnMuIFNlZTpcbiAgICAgICAgICAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzQzNjEodj12cy44NSkuYXNweCAqKVxuICAgICAgICB8IEhFQURFUlNfUkVDRUlWRUQgd2hlbiBub3QgRG9tX2h0bWwub25JRSAtPiBpZ25vcmUgKGRvX2NoZWNrX2hlYWRlcnMgKCkpXG4gICAgICAgIHwgTE9BRElORyB3aGVuIERvbV9odG1sLm9uSUUgLT4gaWdub3JlIChkb19jaGVja19oZWFkZXJzICgpKVxuICAgICAgICB8IERPTkUgLT5cbiAgICAgICAgICAgICgqIElmIHdlIGRpZG4ndCBjYXRjaCBhIHByZXZpb3VzIGV2ZW50LCB3ZSBjaGVjayB0aGUgaGVhZGVyLiAqKVxuICAgICAgICAgICAgaWYgZG9fY2hlY2tfaGVhZGVycyAoKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgOiByZXNwdHlwZSBnZW5lcmljX2h0dHBfZnJhbWUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQXJyYXlCdWZmZXIgLT4gYXJyYXlidWZmZXJfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgQmxvYiAtPiBibG9iX3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IERvY3VtZW50IC0+IGRvY3VtZW50X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IEpTT04gLT4ganNvbl9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBUZXh0IC0+IHRleHRfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgRGVmYXVsdCAtPiBkZWZhdWx0X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0Lndha2V1cCB3IHJlc3BvbnNlXG4gICAgICAgIHwgXyAtPiAoKSk7XG4gIChtYXRjaCBwcm9ncmVzcyB3aXRoXG4gIHwgU29tZSBwcm9ncmVzcyAtPlxuICAgICAgcmVxIyMub25wcm9ncmVzcyA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgIHByb2dyZXNzIGUjIy5sb2FkZWQgZSMjLnRvdGFsO1xuICAgICAgICAgICAgSnMuX3RydWUpXG4gIHwgTm9uZSAtPiAoKSk7XG4gIE9wdGRlZi5pdGVyIHJlcSMjLnVwbG9hZCAoZnVuIHVwbG9hZCAtPlxuICAgICAgbWF0Y2ggdXBsb2FkX3Byb2dyZXNzIHdpdGhcbiAgICAgIHwgU29tZSB1cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgICAgICB1cGxvYWQjIy5vbnByb2dyZXNzIDo9XG4gICAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAgICB1cGxvYWRfcHJvZ3Jlc3MgZSMjLmxvYWRlZCBlIyMudG90YWw7XG4gICAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAobWF0Y2ggY29udGVudHMgd2l0aFxuICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgfCBTb21lIChgRm9ybV9jb250ZW50cyAoYEZpZWxkcyBsKSkgLT4gcmVxIyNzZW5kIChKcy5zb21lIChzdHJpbmcgKGVuY29kZV91cmwgIWwpKSlcbiAgfCBTb21lIChgRm9ybV9jb250ZW50cyAoYEZvcm1EYXRhIGYpKSAtPiByZXEjI3NlbmRfZm9ybURhdGEgZlxuICB8IFNvbWUgKGBTdHJpbmcgcykgLT4gcmVxIyNzZW5kIChKcy5zb21lIChKcy5zdHJpbmcgcykpXG4gIHwgU29tZSAoYEJsb2IgYikgLT4gcmVxIyNzZW5kX2Jsb2IgYik7XG4gIEx3dC5vbl9jYW5jZWwgcmVzIChmdW4gKCkgLT4gcmVxIyNhYm9ydCk7XG4gIHJlc1xuXG5sZXQgcGVyZm9ybV9yYXdfdXJsXG4gICAgPyhoZWFkZXJzID0gW10pXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgID8oZ2V0X2FyZ3MgPSBbXSlcbiAgICA/Y2hlY2tfaGVhZGVyc1xuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/Y29udGVudHNcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgdXJsID1cbiAgcGVyZm9ybV9yYXdcbiAgICB+aGVhZGVyc1xuICAgID9jb250ZW50X3R5cGVcbiAgICB+Z2V0X2FyZ3NcbiAgICA/Y29udGVudHNcbiAgICA/Y2hlY2tfaGVhZGVyc1xuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdFxuICAgIHVybFxuXG5sZXQgcGVyZm9ybVxuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIHVybCA9XG4gIHBlcmZvcm1fcmF3XG4gICAgfmhlYWRlcnNcbiAgICA/Y29udGVudF90eXBlXG4gICAgfmdldF9hcmdzXG4gICAgP2NvbnRlbnRzXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIH5yZXNwb25zZV90eXBlOkRlZmF1bHRcbiAgICAoVXJsLnN0cmluZ19vZl91cmwgdXJsKVxuXG5sZXQgZ2V0IHMgPSBwZXJmb3JtX3Jhd191cmwgc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5sZXQgc2xlZXAgZCA9XG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGlkID0gRG9tX2h0bWwuc2V0VGltZW91dCAoTHd0Lndha2V1cCB3KSAoZCAqLiAxMDAwLikgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IChmdW4gKCkgLT4gRG9tX2h0bWwuY2xlYXJUaW1lb3V0IGlkKTtcbiAgdFxuXG5sZXQgeWllbGQgKCkgPSBzbGVlcCAwLlxuXG5sZXQgd2FrZXVwID0gZnVuY3Rpb25cbiAgfCAxIC0+XG4gICAgICBpZ25vcmVcbiAgICAgICAgKERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBMd3Qud2FrZXVwX3BhdXNlZCkgKEpzLmZsb2F0IDAuKSlcbiAgfCBfIC0+ICgpXG5cbmxldCAoKSA9IEx3dC5yZWdpc3Rlcl9wYXVzZV9ub3RpZmllciB3YWtldXBcblxubGV0IHByZXJyX3N0cmluZyBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKVxuXG5sZXQgXyA9XG4gIEx3dC5hc3luY19leGNlcHRpb25faG9vayA6PVxuICAgIGZ1biBleG4gLT5cbiAgICAgIHByZXJyX3N0cmluZyBcIkV4Y2VwdGlvbiBkdXJpbmcgTHd0LmFzeW5jOiBcIjtcbiAgICAgIHByZXJyX3N0cmluZyAoUHJpbnRleGMudG9fc3RyaW5nIGV4bik7XG4gICAgICBQcmludGV4Yy5wcmludF9iYWNrdHJhY2Ugc3RkZXJyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IHJlYyByYW5kb21faWRlbnRpZmllciBzaXplID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIHNpemUgaW5cbiAgZm9yIF9pID0gMCB0byBzaXplIC0gMSBkb1xuICAgIEJ1ZmZlci5hZGRfY2hhciBiIChDaGFyLmNociAoOTcgKyBSYW5kb20uaW50IDI2KSlcbiAgZG9uZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYiBpblxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmdldCBEb21faHRtbC53aW5kb3cgKEpzLnN0cmluZyBzKSlcbiAgdGhlbiAoKiBuYW1lIGFscmVhZHkgaW4gdXNlLCBjaG9vc2UgYW5vdGhlciBvbmUqKVxuICAgIHJhbmRvbV9pZGVudGlmaWVyIHNpemVcbiAgZWxzZSBzXG5cbmxldCByYXdfY2FsbCBuYW1lIHVyaSBlcnJvcl9jYiB1c2VyX2NiID1cbiAgbGV0IHNjcmlwdCA9IERvbV9odG1sLihjcmVhdGVTY3JpcHQgZG9jdW1lbnQpIGluXG4gIGxldCBmaW5hbGl6ZSAoKSA9XG4gICAgSnMuVW5zYWZlLmRlbGV0ZSBEb21faHRtbC53aW5kb3cgKEpzLnN0cmluZyBuYW1lKTtcbiAgICBKcy5PcHQuaXRlciBzY3JpcHQjIy5wYXJlbnROb2RlIChmdW4gcGFyZW50IC0+IERvbS5yZW1vdmVDaGlsZCBwYXJlbnQgc2NyaXB0KVxuICBpblxuICBsZXQgZXhlY3V0ZWQgPSByZWYgZmFsc2UgaW5cbiAgSnMuVW5zYWZlLnNldFxuICAgIERvbV9odG1sLndpbmRvd1xuICAgIChKcy5zdHJpbmcgbmFtZSlcbiAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHggLT5cbiAgICAgICAgIGV4ZWN1dGVkIDo9IHRydWU7XG4gICAgICAgICBmaW5hbGl6ZSAoKTtcbiAgICAgICAgIHVzZXJfY2IgeCkpO1xuICBzY3JpcHQjIy5zcmMgOj0gSnMuc3RyaW5nIHVyaTtcbiAgc2NyaXB0IyMuX3R5cGUgOj0gSnMuc3RyaW5nIFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gIHNjcmlwdCMjLmFzeW5jIDo9IEpzLl90cnVlO1xuICAoKEpzLlVuc2FmZS5jb2VyY2Ugc2NyaXB0KSMjLm9uZXJyb3JcbiAgOj0gZnVuIHggLT5cbiAgZmluYWxpemUgKCk7XG4gIGVycm9yX2NiIHgpO1xuICAoKEpzLlVuc2FmZS5jb2VyY2Ugc2NyaXB0KSMjLm9ubG9hZFxuICA6PSBmdW4geCAtPlxuICBMd3QuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgTHd0LmJpbmQgKEx3dF9qcy5zbGVlcCAxLikgKGZ1biAoKSAtPlxuICAgICAgICAgIGlmICFleGVjdXRlZFxuICAgICAgICAgIHRoZW4gTHd0LnJldHVybl91bml0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBGaXJlYnVnLmNvbnNvbGUjI3dhcm5cbiAgICAgICAgICAgICAgKEpzLnN0cmluZyBcIkpzb25wOiBzY3JpcHQgbG9hZGVkIGJ1dCBjYWxsYmFjayBub3QgZXhlY3V0ZWRcIik7XG4gICAgICAgICAgICBmaW5hbGl6ZSAoKTtcbiAgICAgICAgICAgIGVycm9yX2NiIHg7XG4gICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpKSkpO1xuICBsZXQgaW5pdCAoKSA9IGlnbm9yZSAoRG9tLmFwcGVuZENoaWxkIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSBzY3JpcHQpIGluXG4gIGluaXQsIGZpbmFsaXplXG5cbmxldCBjYWxsXyBwcmVmaXggbWFrZV91cmkgZXJyb3JfY2IgdXNlcl9jYiA9XG4gIGxldCBuYW1lID0gcHJlZml4IF4gcmFuZG9tX2lkZW50aWZpZXIgMTAgaW5cbiAgbGV0IHVyaSA9IG1ha2VfdXJpIG5hbWUgaW5cbiAgcmF3X2NhbGwgbmFtZSB1cmkgZXJyb3JfY2IgdXNlcl9jYlxuXG5sZXQgY2FsbF9jdXN0b21fdXJsID90aW1lb3V0ID8ocHJlZml4ID0gXCJcIikgbWFrZV91cmkgPVxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBpbml0LCBmaW5hbGl6ZSA9IGNhbGxfIHByZWZpeCBtYWtlX3VyaSAoZnVuIF8gLT4gTHd0LmNhbmNlbCB0KSAoTHd0Lndha2V1cCB3KSBpblxuICBMd3Qub25fY2FuY2VsIHQgZmluYWxpemU7XG4gIGxldCBuZXdfdCA9XG4gICAgbWF0Y2ggdGltZW91dCB3aXRoXG4gICAgfCBOb25lIC0+IHRcbiAgICB8IFNvbWUgZGVsYXkgLT5cbiAgICAgICAgbGV0IHdhaXQgPVxuICAgICAgICAgIEx3dC5iaW5kIChMd3RfanMuc2xlZXAgZGVsYXkpIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LmNhbmNlbCB0O1xuICAgICAgICAgICAgICB0KVxuICAgICAgICBpblxuICAgICAgICBMd3QuY2hvb3NlIFsgd2FpdDsgdCBdXG4gIGluXG4gIGluaXQgKCk7XG4gIG5ld190XG5cbmxldCBhZGRfcGFyYW0gbmFtZSB2YWx1ZSBsID1cbiAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuICh4LCBfKSAtPiBub3QgKFN0cmluZy5lcXVhbCB4IG5hbWUpKSBsIGluXG4gIChuYW1lLCB2YWx1ZSkgOjogbFxuXG5sZXQgY2FsbCA/dGltZW91dCA/KHBhcmFtID0gXCJjYWxsYmFja1wiKSA/KHByZWZpeCA9IFwiXCIpIHVybCA9XG4gIGxldCBtYWtlX3VyaSBjYm5hbWUgPVxuICAgIG1hdGNoIFVybC51cmxfb2Zfc3RyaW5nIHVybCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiSnNvbnAuY2FsbDogQ2Fubm90IHBhcnNlIHVybFwiXG4gICAgfCBTb21lIHVybCAtPlxuICAgICAgICBsZXQgbmV3X3VybCA9XG4gICAgICAgICAgbWF0Y2ggdXJsIHdpdGhcbiAgICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT5cbiAgICAgICAgICAgICAgVXJsLkh0dHBcbiAgICAgICAgICAgICAgICB7IGh0dHAgd2l0aFxuICAgICAgICAgICAgICAgICAgVXJsLmh1X2FyZ3VtZW50cyA9IGFkZF9wYXJhbSBwYXJhbSBjYm5hbWUgaHR0cC5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgIHwgVXJsLkh0dHBzIGh0dHAgLT5cbiAgICAgICAgICAgICAgVXJsLkh0dHBzXG4gICAgICAgICAgICAgICAgeyBodHRwIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5odV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT5cbiAgICAgICAgICAgICAgVXJsLkZpbGVcbiAgICAgICAgICAgICAgICB7IGZpbGUgd2l0aFxuICAgICAgICAgICAgICAgICAgVXJsLmZ1X2FyZ3VtZW50cyA9IGFkZF9wYXJhbSBwYXJhbSBjYm5hbWUgZmlsZS5VcmwuZnVfYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBVcmwuc3RyaW5nX29mX3VybCBuZXdfdXJsXG4gIGluXG4gIGNhbGxfY3VzdG9tX3VybCA/dGltZW91dCB+cHJlZml4IG1ha2VfdXJpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFZpbmNlbnQgQmFsYXRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0ICggPj49ICkgPSBMd3QuYmluZFxuXG5sZXQgYXN5bmMgZiA9IEx3dC5hc3luYyAoZnVuICgpIC0+IEx3dF9qcy55aWVsZCAoKSA+Pj0gZilcblxubGV0IG9wdF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IG1ha2VfZXZlbnQgZXZlbnRfa2luZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbGV0IGVsID0gcmVmIEpzLm51bGwgaW5cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgY2FuY2VsICgpID0gSnMuT3B0Lml0ZXIgIWVsIERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IGNhbmNlbDtcbiAgZWwgOj1cbiAgICBKcy5zb21lXG4gICAgICAoRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgICAgICAgP2NhcHR1cmU6KG9wdF9tYXAgSnMuYm9vbCB1c2VfY2FwdHVyZSlcbiAgICAgICAgID9wYXNzaXZlOihvcHRfbWFwIEpzLmJvb2wgcGFzc2l2ZSlcbiAgICAgICAgIHRhcmdldFxuICAgICAgICAgZXZlbnRfa2luZFxuICAgICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biAoZXYgOiAjRG9tX2h0bWwuZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgY2FuY2VsICgpO1xuICAgICAgICAgICAgICBMd3Qud2FrZXVwIHcgZXY7XG4gICAgICAgICAgICAgIEpzLmJvb2wgdHJ1ZSkpXG4gICAgICAgICAoKiB0cnVlIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gcHJldmVudCBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXNlciBjYW4gdXNlIHRoZSBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUuICopKTtcbiAgdFxuXG5sZXQgY2F0Y2hfY2FuY2VsIGYgeCA9XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gZiB4KVxuICAgIChmdW5jdGlvblxuICAgICAgfCBMd3QuQ2FuY2VsZWQgLT4gTHd0LnJldHVybiAoKVxuICAgICAgfCBlIC0+IEx3dC5mYWlsIGUpXG5cbmxldCB3aXRoX2Vycm9yX2xvZyBmIHggPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IGYgeClcbiAgICAoZnVuIGUgLT5cbiAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKFByaW50ZXhjLnRvX3N0cmluZyBlKSk7XG4gICAgICBMd3QucmV0dXJuICgpKVxuXG5sZXQgc2VxX2xvb3AgZXZoID8oY2FuY2VsX2hhbmRsZXIgPSBmYWxzZSkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY3VyID0gcmVmIChMd3QuZmFpbCAoRmFpbHVyZSBcIkx3dF9qc19ldmVudFwiKSkgaW5cbiAgKCogVXNpbmcgTHd0LmZhaWwgYXMgZGVmYXVsdCwgdG8gYmUgcG9seW1vcnBoaWMgKilcbiAgbGV0IGN1cl9oYW5kbGVyID0gcmVmIChMd3QucmV0dXJuICgpKSBpblxuICBsZXQgbHQsIF9sdyA9IEx3dC50YXNrICgpIGluXG4gIEx3dC5vbl9jYW5jZWwgbHQgKGZ1biAoKSAtPlxuICAgICAgTHd0LmNhbmNlbCAhY3VyO1xuICAgICAgaWYgY2FuY2VsX2hhbmRsZXIgdGhlbiBMd3QuY2FuY2VsICFjdXJfaGFuZGxlcjtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBhdXggKCkgPVxuICAgIGlmIG5vdCAhY2FuY2VsbGVkXG4gICAgICAgKCogSW4gdGhlIGNhc2UgaXQgaGFzIGJlZW4gY2FuY2VsbGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBwcmV2aW91cyBoYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHdlIGRvIG5vdCByZWluc3RhbGwgdGhlIGV2ZW50IGhhbmRsZXIgKilcbiAgICB0aGVuIChcbiAgICAgIGxldCB0ID0gZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaW5cbiAgICAgIGN1ciA6PSB0O1xuICAgICAgdFxuICAgICAgPj49IGZ1biBlIC0+XG4gICAgICBjdXJfaGFuZGxlciA6PSB3aXRoX2Vycm9yX2xvZyAoaGFuZGxlciBlKSBsdDtcbiAgICAgICFjdXJfaGFuZGxlciA+Pj0gYXV4KVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBhdXgpO1xuICBsdFxuXG5sZXQgYXN5bmNfbG9vcCBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY3VyID0gcmVmIChMd3QuZmFpbCAoRmFpbHVyZSBcIkx3dF9qc19ldmVudFwiKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBhdXggKCkgPVxuICAgIGlmIG5vdCAhY2FuY2VsbGVkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdCA9IGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGluXG4gICAgICBjdXIgOj0gdDtcbiAgICAgIHRcbiAgICAgID4+PSBmdW4gZSAtPlxuICAgICAgTHd0LmFzeW5jIChmdW4gKCkgLT4gd2l0aF9lcnJvcl9sb2cgKGhhbmRsZXIgZSkgbHQpO1xuICAgICAgYXV4ICgpKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBhdXgpO1xuICBsdFxuXG5sZXQgYnVmZmVyZWRfbG9vcFxuICAgIGV2aFxuICAgID8oY2FuY2VsX2hhbmRsZXIgPSBmYWxzZSlcbiAgICA/KGNhbmNlbF9xdWV1ZSA9IHRydWUpXG4gICAgP3VzZV9jYXB0dXJlXG4gICAgP3Bhc3NpdmVcbiAgICB0YXJnZXRcbiAgICBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcXVldWUgPSByZWYgW10gaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gIGxldCBjdXJfaGFuZGxlciA9IHJlZiAoTHd0LnJldHVybiAoKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgc3Bhd24gPSBMd3RfY29uZGl0aW9uLmNyZWF0ZSAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGlmIGNhbmNlbF9oYW5kbGVyIHRoZW4gTHd0LmNhbmNlbCAhY3VyX2hhbmRsZXI7XG4gICAgICBpZiBjYW5jZWxfcXVldWUgdGhlbiBxdWV1ZSA6PSBbXTtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBzcGF3bmVyICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHQgPSBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBpblxuICAgICAgY3VyIDo9IHQ7XG4gICAgICB0XG4gICAgICA+Pj0gZnVuIGUgLT5cbiAgICAgIHF1ZXVlIDo9IGUgOjogIXF1ZXVlO1xuICAgICAgTHd0X2NvbmRpdGlvbi5zaWduYWwgc3Bhd24gKCk7XG4gICAgICBzcGF3bmVyICgpKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBsZXQgcmVjIHJ1bm5lciAoKSA9XG4gICAgY3VyX2hhbmRsZXIgOj0gTHd0LnJldHVybiAoKTtcbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggIXF1ZXVlIHdpdGhcbiAgICAgIHwgW10gLT4gTHd0X2NvbmRpdGlvbi53YWl0IHNwYXduID4+PSBydW5uZXJcbiAgICAgIHwgZSA6OiB0bCAtPlxuICAgICAgICAgIHF1ZXVlIDo9IHRsO1xuICAgICAgICAgIGN1cl9oYW5kbGVyIDo9IHdpdGhfZXJyb3JfbG9nIChoYW5kbGVyIGUpIGx0O1xuICAgICAgICAgICFjdXJfaGFuZGxlciA+Pj0gcnVubmVyKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBzcGF3bmVyKTtcbiAgTHd0LmFzeW5jIHJ1bm5lcjtcbiAgbHRcblxubGV0IGZ1bmNfbGltaXRlZF9sb29wIGV2ZW50IGxpbWl0ZWRfZnVuYyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGhhbmRsZXIgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBhc3luY19sb29wIGV2ZW50ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgKGZ1biBldiBsdCAtPlxuICAgICAgaW5jciBjb3VudDtcbiAgICAgIGxldCBuYiA9ICFjb3VudCBpblxuICAgICAgbGltaXRlZF9mdW5jICgpID4+PSBmdW4gXyAtPiBpZiAhY291bnQgPSBuYiB0aGVuIGhhbmRsZXIgZXYgbHQgZWxzZSBMd3QucmV0dXJuICgpKVxuXG5sZXQgbGltaXRlZF9sb29wIGV2ZW50ID8oZWxhcHNlZF90aW1lID0gMC4xKSA9XG4gIGZ1bmNfbGltaXRlZF9sb29wIGV2ZW50IChmdW4gKCkgLT4gTHd0X2pzLnNsZWVwIGVsYXBzZWRfdGltZSlcblxubGV0IGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNvcHkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY29weSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBhc3RlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBhc3RlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRibGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRibGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2V1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2Vtb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm1vdXNlbW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZW91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBrZXlwcmVzcyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5rZXlwcmVzcyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBrZXlkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmtleWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5dXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQua2V5dXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBpbnB1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5pbnB1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0aW1ldXBkYXRlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRpbWV1cGRhdGUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ3N0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2VudGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnbGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ2xlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcm9wID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyb3AgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZm9jdXMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZm9jdXMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgYmx1ciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5ibHVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc3VibWl0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN1Ym1pdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzZWxlY3QgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2VsZWN0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGFib3J0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmFib3J0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVycm9yID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmVycm9yID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvYWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjYW5wbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNhbnBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2FucGxheXRocm91Z2ggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY2FucGxheXRocm91Z2ggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHVyYXRpb25jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHVyYXRpb25jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZW1wdGllZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lbXB0aWVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVuZGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmVuZGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvYWRlZGRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZGVkZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkZWRtZXRhZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkZWRtZXRhZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2Fkc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBhdXNlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBhdXNlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwbGF5aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBsYXlpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcmF0ZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5yYXRlY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNlZWtlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zZWVrZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2Vla2luZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zZWVraW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHN0YWxsZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc3RhbGxlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzdXNwZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN1c3BlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdm9sdW1lY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnZvbHVtZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB3YWl0aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LndhaXRpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG4oKiBzcGVjaWFsIGNhc2UgZm9yIG1vdXNld2hlZWwsIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiB0aGUgYnJvd3NlciAqKVxubGV0IG1vdXNld2hlZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIGxldCBlbCA9IHJlZiBKcy5udWxsIGluXG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGNhbmNlbCAoKSA9IEpzLk9wdC5pdGVyICFlbCBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIGluXG4gIEx3dC5vbl9jYW5jZWwgdCBjYW5jZWw7XG4gIGVsIDo9XG4gICAgSnMuc29tZVxuICAgICAgKERvbV9odG1sLmFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICAgICAgID9jYXB0dXJlOihvcHRfbWFwIEpzLmJvb2wgdXNlX2NhcHR1cmUpXG4gICAgICAgICA/cGFzc2l2ZToob3B0X21hcCBKcy5ib29sIHBhc3NpdmUpXG4gICAgICAgICB0YXJnZXRcbiAgICAgICAgIChmdW4gKGV2IDogI0RvbV9odG1sLmV2ZW50IEpzLnQpIH5keCB+ZHkgLT5cbiAgICAgICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgZXY7XG4gICAgICAgICAgIGNhbmNlbCAoKTtcbiAgICAgICAgICAgTHd0Lndha2V1cCB3IChldiwgKGR4LCBkeSkpO1xuICAgICAgICAgICBKcy5ib29sIHRydWUpXG4gICAgICAgICAoKiB0cnVlIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gcHJldmVudCBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXNlciBjYW4gdXNlIHRoZSBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUuICopKTtcbiAgdFxuXG4oKiBsZXQgX0RPTU1vdXNlU2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5fRE9NTW91c2VTY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuKilcblxubGV0IHdoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LndoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudG91Y2hzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaG1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudG91Y2htb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb3N0cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZ290cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZ290cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmVudGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJjYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcmRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmxlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVybW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVybW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcm92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcnVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJ1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0cmFuc2l0aW9uZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25lbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbnN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25zdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCB0cmFuc2l0aW9ucnVuID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25ydW4gP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IGNsaWNrcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjbGljayA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNvcGllcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjb3B5ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwYXN0ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGFzdGUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkYmxjbGlja3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZGJsY2xpY2sgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZWRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlZG93biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNldXBzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNldXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZW92ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlbW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2Vtb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2VvdXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlb3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQga2V5cHJlc3NlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBrZXlwcmVzcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGtleWRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGtleWRvd24gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBrZXl1cHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Aga2V5dXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGlucHV0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBpbnB1dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRpbWV1cGRhdGVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRpbWV1cGRhdGUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdzdGFydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdlbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnZW50ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdlbnRlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdsZWF2ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ2xlYXZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyb3BzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyb3AgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZXdoZWVscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZXdoZWVsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgd2hlZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHdoZWVsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hzdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdG91Y2hzdGFydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNobW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdG91Y2htb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hjYW5jZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoY2FuY2VsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZm9jdXNlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBmb2N1cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGJsdXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGJsdXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzY3JvbGxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNjcm9sbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHN1Ym1pdHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3VibWl0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2VsZWN0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWxlY3QgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBhYm9ydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgYWJvcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlcnJvcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZXJyb3IgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb2FkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY2FucGxheXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2FucGxheSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNhbnBsYXl0aHJvdWdocyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjYW5wbGF5dGhyb3VnaCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGR1cmF0aW9uY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkdXJhdGlvbmNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGVtcHRpZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVtcHRpZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlbmRlZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZW5kZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb2FkZWRkYXRhcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkZWRkYXRhID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZGVkbWV0YWRhdGFzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvYWRlZG1ldGFkYXRhID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZHN0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2Fkc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwYXVzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGF1c2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwbGF5cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwbGF5ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGxheWluZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGxheWluZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHJhdGVjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHJhdGVjaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzZWVrZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNlZWtlZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNlZWtpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNlZWtpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzdGFsbGVkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzdGFsbGVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc3VzcGVuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3VzcGVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHZvbHVtZWNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agdm9sdW1lY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgd2FpdGluZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agd2FpdGluZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvc3Rwb2ludGVyY2FwdHVyZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9zdHBvaW50ZXJjYXB0dXJlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZ290cG9pbnRlcmNhcHR1cmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGdvdHBvaW50ZXJjYXB0dXJlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmVudGVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyZW50ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyY2FuY2VscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyY2FuY2VsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJkb3duID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmxlYXZlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVybGVhdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVybW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcm1vdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyb3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyb3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm92ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJvdmVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcnVwcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVydXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0cmFuc2l0aW9uZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9uZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbnN0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9uc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0cmFuc2l0aW9ucnVucyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9ucnVuID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbmNhbmNlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbmNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lICgpID1cbiAgbGV0IHQsIHMgPSBMd3Qud2FpdCAoKSBpblxuICBsZXQgKF8gOiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCkgPVxuICAgIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIChfIDogSnMubnVtYmVyX3QpIC0+IEx3dC53YWtldXAgcyAoKSkpXG4gIGluXG4gIHRcblxubGV0IG9ubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZCBEb21faHRtbC53aW5kb3dcblxubGV0IGRvbUNvbnRlbnRMb2FkZWQgPVxuICBsZXQgY29tcGxldGUgPSBKcy5zdHJpbmcgXCJjb21wbGV0ZVwiIGluXG4gIGxldCBkb2MgPSBEb21faHRtbC53aW5kb3cjIy5kb2N1bWVudCBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBkb2MjIy5yZWFkeVN0YXRlID09IGNvbXBsZXRlXG4gICAgdGhlbiBMd3QucmV0dXJuX3VuaXRcbiAgICBlbHNlXG4gICAgICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gICAgICBsZXQgd2FrZXVwIHcgXyA9IGlmIEx3dC5pc19zbGVlcGluZyB0IHRoZW4gTHd0Lndha2V1cCB3ICgpIGluXG4gICAgICBsZXQgd2FrZXVwX2V4biB3IGUgPSBpZiBMd3QuaXNfc2xlZXBpbmcgdCB0aGVuIEx3dC53YWtldXBfZXhuIHcgZSBpblxuICAgICAgKCogaHR0cHM6Ly9naXRodWIuY29tL2RwZXJpbmkvQ29udGVudExvYWRlZC9ibG9iL21hc3Rlci9zcmMvY29udGVudGxvYWRlZC5qcyAqKVxuICAgICAgbGV0IHJlZ3VsYXIgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRvbUNvbnRlbnRMb2FkZWQgZG9jIGluXG4gICAgICBMd3Qub25fYW55IHJlZ3VsYXIgKHdha2V1cCB3KSAod2FrZXVwX2V4biB3KTtcbiAgICAgICgqIGllOCAqKVxuICAgICAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPVxuICAgICAgICBhc3luY19sb29wXG4gICAgICAgICAgKG1ha2VfZXZlbnQgKERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiKSlcbiAgICAgICAgICBkb2NcbiAgICAgICAgICAoZnVuIGUgXyAtPlxuICAgICAgICAgICAgaWYgZG9jIyMucmVhZHlTdGF0ZSA9PSBjb21wbGV0ZSB0aGVuIHdha2V1cCB3IGU7XG4gICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICBpblxuICAgICAgKCogZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqKVxuICAgICAgbGV0IGluaXQgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgRG9tX2h0bWwud2luZG93IGluXG4gICAgICBMd3Qub25fYW55IGluaXQgKHdha2V1cCB3KSAod2FrZXVwX2V4biB3KTtcbiAgICAgICgqIGNsZWFuIGFuZCByZXR1cm4gKilcbiAgICAgIEx3dC5iaW5kIHQgKGZ1biBfZSAtPlxuICAgICAgICAgIEx3dC5jYW5jZWwgcmVndWxhcjtcbiAgICAgICAgICBMd3QuY2FuY2VsIHJlYWR5c3RhdGVjaGFuZ2U7XG4gICAgICAgICAgTHd0LmNhbmNlbCBpbml0O1xuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcblxubGV0IG9udW5sb2FkICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC51bmxvYWQgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbmJlZm9yZXVubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuYmVmb3JldW5sb2FkIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25yZXNpemUgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnJlc2l6ZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm9yaWVudGF0aW9uY2hhbmdlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25wb3BzdGF0ZSAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9wc3RhdGUgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbmhhc2hjaGFuZ2UgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lmhhc2hjaGFuZ2UgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXplICgpID0gTHd0LnBpY2sgWyBvbnJlc2l6ZSAoKTsgb25vcmllbnRhdGlvbmNoYW5nZSAoKSBdXG5cbmxldCBvbnJlc2l6ZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbnJlc2l6ZSAoKSkgKCkgdFxuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZXMgdCA9XG4gIHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlICgpKSAoKSB0XG5cbmxldCBvbnBvcHN0YXRlcyB0ID0gc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ucG9wc3RhdGUgKCkpICgpIHRcblxubGV0IG9uaGFzaGNoYW5nZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbmhhc2hjaGFuZ2UgKCkpICgpIHRcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2VzX29yX29ucmVzaXplcyB0ID1cbiAgc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpemUgKCkpICgpIHRcblxubGV0IGxpbWl0ZWRfb25yZXNpemVzID9lbGFwc2VkX3RpbWUgdCA9XG4gIGxpbWl0ZWRfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25yZXNpemUgKCkpID9lbGFwc2VkX3RpbWUgKCkgdFxuXG5sZXQgbGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3BcbiAgICAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZSAoKSlcbiAgICA/ZWxhcHNlZF90aW1lXG4gICAgKClcbiAgICB0XG5cbmxldCBsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzX29yX29ucmVzaXplcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3BcbiAgICAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZV9vcl9vbnJlc2l6ZSAoKSlcbiAgICA/ZWxhcHNlZF90aW1lXG4gICAgKClcbiAgICB0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuIEZpbGVcbm9wZW4hIEltcG9ydFxuXG5sZXQgcmVhZF93aXRoX2ZpbGVyZWFkZXIgKGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyKSBraW5kIGZpbGUgPVxuICBsZXQgcmVhZGVyID0gbmV3JWpzIGZpbGVSZWFkZXIgaW5cbiAgbGV0IHJlcywgdyA9IEx3dC50YXNrICgpIGluXG4gIHJlYWRlciMjLm9ubG9hZGVuZCA6PVxuICAgIGhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgIGlmIHJlYWRlciMjLnJlYWR5U3RhdGUgPT0gRE9ORVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTHd0Lndha2V1cFxuICAgICAgICAgICAgd1xuICAgICAgICAgICAgKG1hdGNoIE9wdC50b19vcHRpb24gKENvZXJjZVRvLnN0cmluZyByZWFkZXIjIy5yZXN1bHQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogY2FuJ3QgaGFwcGVuOiBjYWxsZWQgd2l0aCBnb29kIHJlYWRBc18gKilcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IHMpXG4gICAgICAgIGVsc2UgKCk7XG4gICAgICAgICgqIENDQyBUT0RPOiBoYW5kbGUgZXJyb3JzICopXG4gICAgICAgIEpzLl9mYWxzZSk7XG4gIEx3dC5vbl9jYW5jZWwgcmVzIChmdW4gKCkgLT4gcmVhZGVyIyNhYm9ydCk7XG4gIChtYXRjaCBraW5kIHdpdGhcbiAgfCBgQmluYXJ5U3RyaW5nIC0+IHJlYWRlciMjcmVhZEFzQmluYXJ5U3RyaW5nIGZpbGVcbiAgfCBgVGV4dCAtPiByZWFkZXIjI3JlYWRBc1RleHQgZmlsZVxuICB8IGBUZXh0X3dpdGhFbmNvZGluZyBlIC0+IHJlYWRlciMjcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgZmlsZSBlXG4gIHwgYERhdGFVUkwgLT4gcmVhZGVyIyNyZWFkQXNEYXRhVVJMIGZpbGUpO1xuICByZXNcblxubGV0IHJlYWRlciBraW5kIGZpbGUgPSByZWFkX3dpdGhfZmlsZXJlYWRlciBmaWxlUmVhZGVyIGtpbmQgZmlsZVxuXG5sZXQgcmVhZEFzQmluYXJ5U3RyaW5nIGZpbGUgPSByZWFkZXIgYEJpbmFyeVN0cmluZyBmaWxlXG5cbmxldCByZWFkQXNUZXh0IGZpbGUgPSByZWFkZXIgYFRleHQgZmlsZVxuXG5sZXQgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgZmlsZSBlID0gcmVhZGVyIChgVGV4dF93aXRoRW5jb2RpbmcgZSkgZmlsZVxuXG5sZXQgcmVhZEFzRGF0YVVSTCBmaWxlID0gcmVhZGVyIGBEYXRhVVJMIGZpbGVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0XG4gIGluY2x1ZGUgTHd0X3htbEh0dHBSZXF1ZXN0XG5lbmRcblxubW9kdWxlIEZpbGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc19vZl9vY2FtbC5GaWxlXG4gIGluY2x1ZGUgTHd0X2ZpbGVcbmVuZFxuXG5tb2R1bGUgSnNvbnAgPSBMd3RfanNvbnBcbm1vZHVsZSBMd3RfanMgPSBMd3RfanNcbm1vZHVsZSBMd3RfanNfZXZlbnRzID0gTHd0X2pzX2V2ZW50c1xuIiwibW9kdWxlIFMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIHZhbHVlOiAnYSByZWY7XG4gICAgaG9va3M6ICgnYSAtPiB1bml0KSBsaXN0IHJlZjtcbiAgICBlcTogJ2EgLT4gJ2EgLT4gYm9vbDtcbiAgICBzaWduYWw6ICdhIFJlYWN0LnNpZ25hbDtcbiAgICBzZXRfc2lnbmFsOiA/c3RlcDpSZWFjdC5zdGVwIC0+ICdhIC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgY3JlYXRlID8oZXEgOiAnYSAtPiAnYSAtPiBib29sID0gKCA9ICkpIChhIDogJ2EpIDogJ2EgdCA9XG4gICAgbGV0IHNpZ25hbCwgc2V0X3NpZ25hbCA9IFJlYWN0LlMuY3JlYXRlIGEgaW5cbiAgICB7IHZhbHVlID0gcmVmIGE7IGhvb2tzID0gcmVmIFtdOyBlcTsgc2lnbmFsOyBzZXRfc2lnbmFsIH1cblxuICBsZXQgcmVnaXN0ZXIgaG9va2VkIGYgPSBob29rZWQuaG9va3MgOj0gZiA6OiAhKGhvb2tlZC5ob29rcylcbiAgbGV0IHYgaG9va2VkID0gIShob29rZWQudmFsdWUpXG5cbiAgbGV0IHNldCBob29rZWQgdmFsdWUgPVxuICAgIGlmIG5vdCAoaG9va2VkLmVxIHZhbHVlICEoaG9va2VkLnZhbHVlKSkgdGhlbiAoXG4gICAgICBMaXN0Lml0ZXIgKGZ1biBmIC0+IGYgdmFsdWUpICEoaG9va2VkLmhvb2tzKTtcbiAgICAgIGhvb2tlZC52YWx1ZSA6PSB2YWx1ZTtcbiAgICAgIGhvb2tlZC5zZXRfc2lnbmFsIHZhbHVlXG4gICAgKVxuXG4gIGxldCBiaW5kID9lcSBob29rZWQgZiA9XG4gICAgbGV0IG5ld19ob29rZWQgPSBjcmVhdGUgP2VxIChmICh2IGhvb2tlZCkpIGluXG4gICAgcmVnaXN0ZXIgaG9va2VkIChmdW4gdmFsdWUgLT4gc2V0IG5ld19ob29rZWQgKGYgdmFsdWUpKTtcbiAgICBuZXdfaG9va2VkXG5cbiAgbGV0IHRvX3JlYWN0X3NpZ25hbCBob29rZWQgPSBob29rZWQuc2lnbmFsXG5lbmRcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIGhvb2tzOiAoJ2EgLT4gdW5pdCkgbGlzdCByZWY7XG4gICAgZXZlbnQ6ICdhIFJlYWN0LmV2ZW50O1xuICAgIHNlbmRfZXZlbnQ6ID9zdGVwOlJlYWN0LnN0ZXAgLT4gJ2EgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBjcmVhdGUgKCkgOiAnYSB0ID1cbiAgICBsZXQgZXZlbnQsIHNlbmRfZXZlbnQgPSBSZWFjdC5FLmNyZWF0ZSAoKSBpblxuICAgIHsgaG9va3MgPSByZWYgW107IGV2ZW50OyBzZW5kX2V2ZW50IH1cblxuICBsZXQgcmVnaXN0ZXIgaG9va2VkIGYgPSBob29rZWQuaG9va3MgOj0gZiA6OiAhKGhvb2tlZC5ob29rcylcblxuICBsZXQgc2VuZCBob29rZWQgdmFsdWUgPVxuICAgIExpc3QuaXRlciAoZnVuIGYgLT4gZiB2YWx1ZSkgIShob29rZWQuaG9va3MpO1xuICAgIGhvb2tlZC5zZW5kX2V2ZW50IHZhbHVlXG5cbiAgbGV0IG1hcCBob29rZWQgZiA9XG4gICAgbGV0IG5ld19ob29rZWQgPSBjcmVhdGUgKCkgaW5cbiAgICByZWdpc3RlciBob29rZWQgKGZ1biB2YWx1ZSAtPiBzZW5kIG5ld19ob29rZWQgKGYgdmFsdWUpKTtcbiAgICBuZXdfaG9va2VkXG5cbiAgbGV0IHRvX3JlYWN0X2V2ZW50IGhvb2tlZCA9IGhvb2tlZC5ldmVudFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBuZWVkIHRvIHNwZWNpZnkgbWVzc2FnZXMgd2hlcmUgdGhlcmUgaXMgYW4gZXJyb3IgKilcbmxldCB0b3NzIDogJ2EgJ2IuICdhIC0+ICdiID1cbiBmdW4gZSAtPlxuICBsZXQgKCkgPVxuICAgIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJ0b3NzXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgZSB8XVxuICBpblxuICBhc3NlcnQgZmFsc2VcblxubGV0IGlkIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImlkXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGRlYnVnIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImRlYnVnXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGluZm8gdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaW5mb1wiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBub3RpY2UgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwibm90aWNlXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IHdhcm5pbmcgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwid2FybmluZ1wiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBlcnJvciB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJlcnJvclwiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBmYXRhbCB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJmYXRhbFwiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBqcXVlcnlfb24gKHNlbGVjdG9yIDogc3RyaW5nKSAoZXZlbnQgOiBzdHJpbmcpIGhhbmRsZXIgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJqcXVlcnlPblwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgc2VsZWN0b3IpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGV2ZW50KTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgaGFuZGxlcjtcbiAgICB8XVxuXG5sZXQgb3B0aW9uX3N0cmluZyAoaWQgOiBzdHJpbmcgb3B0aW9uKSA9XG4gIG1hdGNoIGlkIHdpdGhcbiAgfCBTb21lIGlkIC0+IEpzLnNvbWUgKEpzLnN0cmluZyBpZClcbiAgfCBOb25lIC0+IEpzLm51bGxcblxubGV0IHBsb3RQTkcgPyhwbG90U3R5bGVJZCA6IHN0cmluZyBvcHRpb24pIChwbG90RGl2SWQgOiBzdHJpbmcpICh0aXRsZSA6IHN0cmluZylcbiAgICAocGxvdE5hbWUgOiBzdHJpbmcpID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwicGxvdFBOR1wiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdERpdklkKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB0aXRsZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdE5hbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAob3B0aW9uX3N0cmluZyBwbG90U3R5bGVJZCk7XG4gICAgfF1cblxubGV0IHBsb3RTVkcgPyhwbG90U3R5bGVJZCA6IHN0cmluZyBvcHRpb24pIChwbG90RGl2SWQgOiBzdHJpbmcpICh0aXRsZSA6IHN0cmluZylcbiAgICAocGxvdE5hbWUgOiBzdHJpbmcpID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwicGxvdFNWR1wiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdERpdklkKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB0aXRsZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdE5hbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAob3B0aW9uX3N0cmluZyBwbG90U3R5bGVJZCk7XG4gICAgfF1cblxubGV0IHNhdmVGaWxlIH4oZGF0YSA6ICdhIEpzLnQpIH4obWltZSA6IHN0cmluZykgfihmaWxlbmFtZSA6IHN0cmluZykgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwic2F2ZUZpbGVcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCBkYXRhO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIG1pbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGZpbGVuYW1lKTtcbiAgICB8XVxuXG50eXBlIG1ldGggPSBbIGBERUxFVEUgfCBgR0VUIHwgYEhFQUQgfCBgT1BUSU9OUyB8IGBQQVRDSCB8IGBQT1NUIHwgYFBVVCBdXG5cbmxldCBtZXRob2RfdG9fc3RyaW5nIDogbWV0aCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IGBERUxFVEUgLT4gXCJERUxFVEVcIlxuICB8IGBHRVQgLT4gXCJHRVRcIlxuICB8IGBIRUFEIC0+IFwiSEVBRFwiXG4gIHwgYE9QVElPTlMgLT4gXCJPUFRJT05TXCJcbiAgfCBgUEFUQ0ggLT4gXCJQQVRDSFwiXG4gIHwgYFBPU1QgLT4gXCJQT1NUXCJcbiAgfCBgUFVUIC0+IFwiUFVUXCJcblxubGV0IGFqYXhfcmVxdWVzdCA/KHRpbWVvdXQgOiBmbG9hdCBvcHRpb24pIH4odXJsIDogc3RyaW5nKSB+KG1ldGggOiBtZXRoKVxuICAgID8oZGF0YSA6IHN0cmluZyBvcHRpb24pIH4oaGFuZGxlciA6IGludCAtPiBzdHJpbmcgLT4gdW5pdCkgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJhamF4UmVxdWVzdFwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdXJsKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAobWV0aG9kX3RvX3N0cmluZyBtZXRoKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy5PcHQub3B0aW9uXG4gICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gU29tZSAoSnMuc3RyaW5nIGRhdGEpKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4gc3RhdHVzIHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIGRlYnVnXG4gICAgICAgICAgICAgICAgIChKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgKFwicmVxdWVzdCBcIiBeIHVybCBeIFwiIGFuc3dlcjogXCIgXiBzdHJpbmdfb2ZfaW50IHN0YXR1cykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSBkZWJ1ZyByZXNwb25zZSBpblxuICAgICAgICAgICAgIGhhbmRsZXIgc3RhdHVzIChKcy50b19zdHJpbmcgcmVzcG9uc2UpKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy5PcHQub3B0aW9uXG4gICAgICAgICAgIChtYXRjaCB0aW1lb3V0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgfCBTb21lIHRpbWVvdXQgLT4gU29tZSB0aW1lb3V0KSk7XG4gICAgfF1cblxuKCogVGhpcyBpcyB0byBoYW5kbGUgZXJyb3JzIGJlaW5nIGxvc3QgaW4gYXN5bmNzXG4gICBzbyB0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgYXN5bmMgY2FsbHMgaW4gdGhlXG4gICBjb2RlLlxuKilcbmxldCBhc3luYyBsb2MgKHRhc2sgOiB1bml0IC0+ICdhIEx3dC50KSA6IHVuaXQgPVxuICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzX2V2ZW50cy5hc3luYyAoZnVuICgpIC0+XG4gICAgICBMd3QuY2F0Y2ggdGFzayAoZnVuIGV4biAtPlxuICAgICAgICAgIGxldCAoKSA9IGluZm8gKEpzLnN0cmluZyAobG9jIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bikpIGluXG4gICAgICAgICAgbGV0ICgpID0gZGVidWcgKEpzLnN0cmluZyAoUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSkpIGluXG4gICAgICAgICAgTHd0LnJldHVybl91bml0KSlcblxubGV0IGd1aWQgKCkgOiBzdHJpbmcgPVxuICBKcy50b19zdHJpbmcgKEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJndWlkXCIpIFt8fF0pXG5cbmxldCBtb2RhbCB+KGlkIDogc3RyaW5nKSB+KGFjdGlvbiA6IHN0cmluZykgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwibW9kYWxcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgYWN0aW9uKSB8XVxuXG5sZXQgZWxlbWVudF9kYXRhIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAobGFiZWwgOiBzdHJpbmcpIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJlbGVtZW50RGF0YVwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudDsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGxhYmVsKSB8XVxuXG5sZXQgY3JlYXRlX3NvcnQgKGlkIDogc3RyaW5nKSAoaGFuZGxlciA6IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gJ2IgLT4gdW5pdCkgOlxuICAgIHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJjcmVhdGVTb3J0XCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBoYW5kbGVyIHxdXG5cbmxldCBjaGlsZHJlbl92YWx1ZSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgKHNlbGVjdG9yIDogc3RyaW5nKVxuICAgIChtYXAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gJ2EpIDogJ2EgbGlzdCA9XG4gIEFycmF5LnRvX2xpc3RcbiAgICAoSnMudG9fYXJyYXlcbiAgICAgICAoSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgICAgICAgKEpzLlVuc2FmZS5qc19leHByIFwiY2hpbGRyZW5WYWx1ZVwiKVxuICAgICAgICAgIFt8XG4gICAgICAgICAgICBKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQ7XG4gICAgICAgICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgc2VsZWN0b3IpO1xuICAgICAgICAgICAgSnMuVW5zYWZlLmluamVjdCBtYXA7XG4gICAgICAgICAgfF0pKVxuXG5sZXQgaGlkZV9jb2RlbWlycm9yICgpIDogdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJoaWRlQ29kZU1pcnJvclwiKSBbfHxdXG5cbmxldCBzaG93X2NvZGVtaXJyb3IgKCkgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcInNob3dDb2RlTWlycm9yXCIpIFt8fF1cbiIsImxldCByZXZfc3BsaXQgbCA9XG4gIGxldCByZWMgaW5uZXIgeHMgeXMgPSBmdW5jdGlvblxuICAgIHwgKHgsIHkpIDo6IHh5cyAtPlxuICAgICAgIGlubmVyICh4Ojp4cykgKHk6OnlzKSB4eXNcbiAgICB8IFtdIC0+ICh4cywgeXMpXG4gIGluXG4gIGlubmVyIFtdIFtdIGxcblxudHlwZSB3cmFwID0gW1xuICB8IGBXcmFwX2F0b21zXG4gIHwgYEFsd2F5c193cmFwXG4gIHwgYE5ldmVyX3dyYXBcbiAgfCBgRm9yY2VfYnJlYWtzXG4gIHwgYEZvcmNlX2JyZWFrc19yZWNcbiAgfCBgTm9fYnJlYWtzXG5dXG5cbnR5cGUgbGFiZWxfYnJlYWsgPSBbXG4gIHwgYEF1dG9cbiAgfCBgQWx3YXlzXG4gIHwgYEFsd2F5c19yZWNcbiAgfCBgTmV2ZXJcbl1cblxudHlwZSBzdHlsZV9uYW1lID0gc3RyaW5nXG50eXBlIHN0eWxlID0ge1xuICB0YWdfb3BlbiA6IHN0cmluZztcbiAgdGFnX2Nsb3NlIDogc3RyaW5nXG59XG5cbnR5cGUgYXRvbV9wYXJhbSA9IHtcbiAgYXRvbV9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xufVxuXG5sZXQgYXRvbSA9IHtcbiAgYXRvbV9zdHlsZSA9IE5vbmVcbn1cblxudHlwZSBsaXN0X3BhcmFtID0ge1xuICBzcGFjZV9hZnRlcl9vcGVuaW5nIDogYm9vbDtcbiAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIDogYm9vbDtcbiAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA6IGJvb2w7XG4gIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA6IGJvb2w7XG4gIHNwYWNlX2JlZm9yZV9jbG9zaW5nIDogYm9vbDtcbiAgc3RpY2tfdG9fbGFiZWwgOiBib29sO1xuICBhbGlnbl9jbG9zaW5nIDogYm9vbDtcbiAgd3JhcF9ib2R5IDogd3JhcDtcbiAgaW5kZW50X2JvZHkgOiBpbnQ7XG4gIGxpc3Rfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgb3BlbmluZ19zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBib2R5X3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIHNlcGFyYXRvcl9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBjbG9zaW5nX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBsaXN0ID0ge1xuICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gdHJ1ZTtcbiAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IGZhbHNlO1xuICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlO1xuICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IHRydWU7XG4gIHN0aWNrX3RvX2xhYmVsID0gdHJ1ZTtcbiAgYWxpZ25fY2xvc2luZyA9IHRydWU7XG4gIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICBpbmRlbnRfYm9keSA9IDI7XG4gIGxpc3Rfc3R5bGUgPSBOb25lO1xuICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgYm9keV9zdHlsZSA9IE5vbmU7XG4gIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xufVxuXG50eXBlIGxhYmVsX3BhcmFtID0ge1xuICBsYWJlbF9icmVhazogbGFiZWxfYnJlYWs7XG4gIHNwYWNlX2FmdGVyX2xhYmVsIDogYm9vbDtcbiAgaW5kZW50X2FmdGVyX2xhYmVsIDogaW50O1xuICBsYWJlbF9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xufVxuXG5sZXQgbGFiZWwgPSB7XG4gIGxhYmVsX2JyZWFrID0gYEF1dG87XG4gIHNwYWNlX2FmdGVyX2xhYmVsID0gdHJ1ZTtcbiAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgbGFiZWxfc3R5bGUgPSBOb25lO1xufVxuXG50eXBlIHQgPVxuICAgIEF0b20gb2Ygc3RyaW5nICogYXRvbV9wYXJhbVxuICB8IExpc3Qgb2YgKHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAqIGxpc3RfcGFyYW0pICogdCBsaXN0XG4gIHwgTGFiZWwgb2YgKHQgKiBsYWJlbF9wYXJhbSkgKiB0XG4gIHwgQ3VzdG9tIG9mIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpXG5cbnR5cGUgZXNjYXBlID1cbiAgICBbIGBOb25lXG4gICAgfCBgRXNjYXBlIG9mXG4gICAgICAgICgoc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdClcbiAgICB8IGBFc2NhcGVfc3RyaW5nIG9mIChzdHJpbmcgLT4gc3RyaW5nKSBdXG5cbnR5cGUgc3R5bGVzID0gKHN0eWxlX25hbWUgKiBzdHlsZSkgbGlzdFxuXG4oKlxuICAgVHJhbnNmb3JtIGEgdHJlZSBzdGFydGluZyBmcm9tIHRoZSBsZWF2ZXMsIHByb3BhZ2F0aW5nIGFuZCBtZXJnaW5nXG4gICBhY2N1bXVsYXRvcnMgdW50aWwgcmVhY2hpbmcgdGhlIHJvb3QuXG4qKVxubGV0IHByb3BhZ2F0ZV9mcm9tX2xlYWZfdG9fcm9vdFxuICB+aW5pdF9hY2MgICgqIGNyZWF0ZSBpbml0aWFsIGFjY3VtdWxhdG9yIGZvciBhIGxlYWYgKilcbiAgfm1lcmdlX2FjYyAoKiBtZXJnZSB0d28gYWNjdW11bGF0b3JzIGNvbWluZyBmcm9tIGNoaWxkIG5vZGVzICopXG4gIH5tYXBfbm9kZSAgKCogKG5vZGUsIGFjYykgLT4gKG5vZGUsIGFjYykgKilcbiAgeCA9XG5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBdG9tIF8gLT5cbiAgICAgICAgbGV0IGFjYyA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbWFwX25vZGUgeCBhY2NcbiAgICB8IExpc3QgKHBhcmFtLCBjaGlsZHJlbikgLT5cbiAgICAgICAgbGV0IG5ld19jaGlsZHJlbiwgYWNjcyA9IHJldl9zcGxpdCAoTGlzdC5yZXZfbWFwIGF1eCBjaGlsZHJlbikgaW5cbiAgICAgICAgbGV0IGFjYyA9IExpc3QuZm9sZF9sZWZ0IG1lcmdlX2FjYyAoaW5pdF9hY2MgeCkgYWNjcyBpblxuICAgICAgICBtYXBfbm9kZSAoTGlzdCAocGFyYW0sIG5ld19jaGlsZHJlbikpIGFjY1xuICAgIHwgTGFiZWwgKCh4MSwgcGFyYW0pLCB4MikgLT5cbiAgICAgICAgbGV0IGFjYzAgPSBpbml0X2FjYyB4IGluXG4gICAgICAgIGxldCBuZXdfeDEsIGFjYzEgPSBhdXggeDEgaW5cbiAgICAgICAgbGV0IG5ld194MiwgYWNjMiA9IGF1eCB4MiBpblxuICAgICAgICBsZXQgYWNjID0gbWVyZ2VfYWNjIChtZXJnZV9hY2MgYWNjMCBhY2MxKSBhY2MyIGluXG4gICAgICAgIG1hcF9ub2RlIChMYWJlbCAoKG5ld194MSwgcGFyYW0pLCBuZXdfeDIpKSBhY2NcbiAgICB8IEN1c3RvbSBfIC0+XG4gICAgICAgIGxldCBhY2MgPSBpbml0X2FjYyB4IGluXG4gICAgICAgIG1hcF9ub2RlIHggYWNjXG4gIGluXG4gIGF1eCB4XG5cbigqXG4gICBDb252ZXJ0IHdyYXBwYWJsZSBsaXN0cyBpbnRvIHZlcnRpY2FsIGxpc3RzIGlmIGFueSBvZiB0aGVpciBkZXNjZW5kYW50c1xuICAgaGFzIHRoZSBhdHRyaWJ1dGUgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrc19yZWMuXG4qKVxubGV0IHByb3BhZ2F0ZV9mb3JjZWRfYnJlYWtzIHggPVxuICAoKiBhY2MgPSB3aGV0aGVyIHRvIGZvcmNlIGJyZWFrcyBpbiB3cmFwcGFibGUgbGlzdHMgb3IgbGFiZWxzICopXG4gIGxldCBpbml0X2FjYyA9IGZ1bmN0aW9uXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYzsgXyB9KSwgXylcbiAgICB8IExhYmVsICgoXywgeyBsYWJlbF9icmVhayA9IGBBbHdheXNfcmVjOyBfIH0pLCBfKSAtPiB0cnVlXG4gICAgfCBBdG9tIF9cbiAgICB8IExhYmVsIF9cbiAgICB8IEN1c3RvbSBfXG4gICAgfCBMaXN0IF8gLT4gZmFsc2VcbiAgaW5cbiAgbGV0IG1lcmdlX2FjYyBmb3JjZV9icmVha3MxIGZvcmNlX2JyZWFrczIgPVxuICAgIGZvcmNlX2JyZWFrczEgfHwgZm9yY2VfYnJlYWtzMlxuICBpblxuICBsZXQgbWFwX25vZGUgeCBmb3JjZV9icmVha3MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrc19yZWM7IF8gfSksIF8pIC0+IHgsIHRydWVcbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3M7IF8gfSksIF8pIC0+IHgsIGZvcmNlX2JyZWFrc1xuXG4gICAgfCBMaXN0ICgob3AsIHNlcCwgY2wsICh7IHdyYXBfYm9keSA9IChgV3JhcF9hdG9tc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBOZXZlcl93cmFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFsd2F5c193cmFwKTsgXyB9IGFzIHApKSxcbiAgICAgICAgICAgIGNoaWxkcmVuKSAtPlxuICAgICAgICBpZiBmb3JjZV9icmVha3MgdGhlblxuICAgICAgICAgIGxldCBwID0geyBwIHdpdGggd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrcyB9IGluXG4gICAgICAgICAgTGlzdCAoKG9wLCBzZXAsIGNsLCBwKSwgY2hpbGRyZW4pLCB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB4LCBmYWxzZVxuXG4gICAgfCBMYWJlbCAoKGEsICh7IGxhYmVsX2JyZWFrID0gYEF1dG87IF8gfSBhcyBscCkpLCBiKSAtPlxuICAgICAgICBpZiBmb3JjZV9icmVha3MgdGhlblxuICAgICAgICAgIGxldCBscCA9IHsgbHAgd2l0aCBsYWJlbF9icmVhayA9IGBBbHdheXMgfSBpblxuICAgICAgICAgIExhYmVsICgoYSwgbHApLCBiKSwgdHJ1ZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgeCwgZmFsc2VcblxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYE5vX2JyZWFrczsgXyB9KSwgXylcbiAgICB8IExhYmVsICgoXywgeyBsYWJlbF9icmVhayA9IChgQWx3YXlzIHwgYEFsd2F5c19yZWMgfCBgTmV2ZXIpOyBfIH0pLCBfKVxuICAgIHwgQXRvbSBfXG4gICAgfCBDdXN0b20gXyAtPiB4LCBmb3JjZV9icmVha3NcbiAgaW5cbiAgbGV0IG5ld194LCBfZm9yY2VkX2JyZWFrcyA9XG4gICAgcHJvcGFnYXRlX2Zyb21fbGVhZl90b19yb290XG4gICAgICB+aW5pdF9hY2NcbiAgICAgIH5tZXJnZV9hY2NcbiAgICAgIH5tYXBfbm9kZVxuICAgICAgeFxuICBpblxuICBuZXdfeFxuXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuICAoKlxuICAgICBSZXdyaXRlIHRoZSB0cmVlIHRvIGJlIHByaW50ZWQuXG4gICAgIEN1cnJlbnRseSwgdGhpcyBpcyB1c2VkIG9ubHkgdG8gaGFuZGxlIGBGb3JjZV9icmVha3NfcmVjLlxuICAqKVxuICBsZXQgcmV3cml0ZSB4ID0gcHJvcGFnYXRlX2ZvcmNlZF9icmVha3MgeFxuXG4gICgqXG4gICAgUmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgbWFya19vcGVuX3RhZyBhbmQgbWFya19jbG9zZV90YWdcbiAgICBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgY2FsbGluZyBwcF9vdXRwdXRfc3RyaW5nIG9uY2UuXG4gICAgSXQncyBhIHJlYXNvbmFibGUgYXNzdW1wdGlvbiBhbHRob3VnaCBub3QgZ3VhcmFudGVlZCBieSB0aGVcbiAgICBkb2N1bWVudGF0aW9uIG9mIHRoZSBGb3JtYXQgbW9kdWxlLlxuICAqKVxuICBsZXQgc2V0X2VzY2FwZSBmbXQgZXNjYXBlID1cbiAgICBsZXQgcHJpbnQwLCBmbHVzaDAgPSBGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIGZtdCAoKSBpblxuICAgIGxldCB0YWdmMCA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSBpblxuXG4gICAgbGV0IGlzX3RhZyA9IHJlZiBmYWxzZSBpblxuXG4gICAgbGV0IG1vdCB0YWcgPVxuICAgICAgaXNfdGFnIDo9IHRydWU7XG4gICAgICB0YWdmMC5tYXJrX29wZW5fc3RhZyB0YWdcbiAgICBpblxuXG4gICAgbGV0IG1jdCB0YWcgPVxuICAgICAgaXNfdGFnIDo9IHRydWU7XG4gICAgICB0YWdmMC5tYXJrX2Nsb3NlX3N0YWcgdGFnXG4gICAgaW5cblxuICAgIGxldCBwcmludCBzIHAgbiA9XG4gICAgICBpZiAhaXNfdGFnIHRoZW5cbiAgICAgICAgKHByaW50MCBzIHAgbjtcbiAgICAgICAgIGlzX3RhZyA6PSBmYWxzZSlcbiAgICAgIGVsc2VcbiAgICAgICAgZXNjYXBlIHByaW50MCBzIHAgblxuICAgIGluXG5cbiAgICBsZXQgdGFnZiA9IHtcbiAgICAgIHRhZ2YwIHdpdGhcbiAgICAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdFxuICAgIH1cbiAgICBpblxuICAgIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgZm10IHByaW50IGZsdXNoMDtcbiAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgdGFnZlxuXG5cbiAgbGV0IHNldF9lc2NhcGVfc3RyaW5nIGZtdCBlc2MgPVxuICAgIGxldCBlc2NhcGUgcHJpbnQgcyBwIG4gPVxuICAgICAgbGV0IHMwID0gU3RyaW5nLnN1YiBzIHAgbiBpblxuICAgICAgbGV0IHMxID0gZXNjIHMwIGluXG4gICAgICBwcmludCBzMSAwIChTdHJpbmcubGVuZ3RoIHMxKVxuICAgIGluXG4gICAgc2V0X2VzY2FwZSBmbXQgZXNjYXBlXG5cblxuICBsZXQgZGVmaW5lX3N0eWxlcyBmbXQgZXNjYXBlIGwgPVxuICAgIGlmIGwgPD4gW10gdGhlbiAoXG4gICAgICBGb3JtYXQucHBfc2V0X3RhZ3MgZm10IHRydWU7XG4gICAgICBsZXQgdGJsMSA9IEhhc2h0YmwuY3JlYXRlICgyICogTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgIGxldCB0YmwyID0gSGFzaHRibC5jcmVhdGUgKDIgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgTGlzdC5pdGVyIChcbiAgICAgICAgZnVuIChzdHlsZV9uYW1lLCBzdHlsZSkgLT5cbiAgICAgICAgICBIYXNodGJsLmFkZCB0YmwxIHN0eWxlX25hbWUgc3R5bGUudGFnX29wZW47XG4gICAgICAgICAgSGFzaHRibC5hZGQgdGJsMiBzdHlsZV9uYW1lIHN0eWxlLnRhZ19jbG9zZVxuICAgICAgKSBsO1xuICAgICAgbGV0IG1hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICAgICAgICB8IEZvcm1hdC5TdHJpbmdfdGFnIHN0eWxlX25hbWUgLT5cbiAgICAgICAgICAgICh0cnkgSGFzaHRibC5maW5kIHRibDEgc3R5bGVfbmFtZVxuICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIpXG4gICAgICAgIHwgXyAtPiBcIlwiXG4gICAgICBpblxuICAgICAgbGV0IG1hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgICAgICAgfCBGb3JtYXQuU3RyaW5nX3RhZyBzdHlsZV9uYW1lIC0+XG4gICAgICAgICAgICAodHJ5IEhhc2h0YmwuZmluZCB0YmwyIHN0eWxlX25hbWVcbiAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFwiXCJcbiAgICAgIGluXG5cbiAgICAgIGxldCB0YWdmID0ge1xuICAgICAgICAoRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpKSB3aXRoXG4gICAgICAgICAgbWFya19vcGVuX3N0YWcgPSBtYXJrX29wZW5fdGFnO1xuICAgICAgICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1hcmtfY2xvc2VfdGFnXG4gICAgICB9XG4gICAgICBpblxuICAgICAgRm9ybWF0LnBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10IHRhZ2ZcbiAgICApO1xuXG4gICAgKG1hdGNoIGVzY2FwZSB3aXRoXG4gICAgICAgICBgTm9uZSAtPiAoKVxuICAgICAgIHwgYEVzY2FwZSBlc2MgLT4gc2V0X2VzY2FwZSBmbXQgZXNjXG4gICAgICAgfCBgRXNjYXBlX3N0cmluZyBlc2MgLT4gc2V0X2VzY2FwZV9zdHJpbmcgZm10IGVzYylcblxuXG4gIGxldCBwcF9vcGVuX3hib3ggZm10IHAgaW5kZW50ID1cbiAgICBtYXRjaCBwLndyYXBfYm9keSB3aXRoXG4gICAgICAgIGBBbHdheXNfd3JhcFxuICAgICAgfCBgTmV2ZXJfd3JhcFxuICAgICAgfCBgV3JhcF9hdG9tcyAtPiBGb3JtYXQucHBfb3Blbl9odmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBGb3JjZV9icmVha3NcbiAgICAgIHwgYEZvcmNlX2JyZWFrc19yZWMgLT4gRm9ybWF0LnBwX29wZW5fdmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBOb19icmVha3MgLT4gRm9ybWF0LnBwX29wZW5faGJveCBmbXQgKClcblxuICBsZXQgZXh0cmFfYm94IHAgbCA9XG4gICAgbGV0IHdyYXAgPVxuICAgICAgbWF0Y2ggcC53cmFwX2JvZHkgd2l0aFxuICAgICAgICAgIGBBbHdheXNfd3JhcCAtPiB0cnVlXG4gICAgICAgIHwgYE5ldmVyX3dyYXBcbiAgICAgICAgfCBgRm9yY2VfYnJlYWtzXG4gICAgICAgIHwgYEZvcmNlX2JyZWFrc19yZWNcbiAgICAgICAgfCBgTm9fYnJlYWtzIC0+IGZhbHNlXG4gICAgICAgIHwgYFdyYXBfYXRvbXMgLT5cbiAgICAgICAgICAgIExpc3QuZm9yX2FsbCAoZnVuY3Rpb24gQXRvbSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsXG4gICAgaW5cbiAgICBpZiB3cmFwIHRoZW5cbiAgICAgICgoZnVuIGZtdCAtPiBGb3JtYXQucHBfb3Blbl9ob3Zib3ggZm10IDApLFxuICAgICAgIChmdW4gZm10IC0+IEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpKSlcbiAgICBlbHNlXG4gICAgICAoKGZ1biBfIC0+ICgpKSxcbiAgICAgICAoZnVuIF8gLT4gKCkpKVxuXG5cbiAgbGV0IHBwX29wZW5fbm9uYWxpZ25lZF9ib3ggZm10IHAgaW5kZW50IGwgPVxuICAgIG1hdGNoIHAud3JhcF9ib2R5IHdpdGhcbiAgICAgICAgYEFsd2F5c193cmFwIC0+IEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBOZXZlcl93cmFwIC0+IEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYFdyYXBfYXRvbXMgLT5cbiAgICAgICAgICBpZiBMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uIEF0b20gXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbCB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfb3Blbl9ob3Zib3ggZm10IGluZGVudFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYEZvcmNlX2JyZWFrc1xuICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlYyAtPiBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5vX2JyZWFrcyAtPiBGb3JtYXQucHBfb3Blbl9oYm94IGZtdCAoKVxuXG5cbiAgbGV0IG9wZW5fdGFnIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT4gRm9ybWF0LnBwX29wZW5fc3RhZyBmbXQgKEZvcm1hdC5TdHJpbmdfdGFnIHMpXG5cbiAgbGV0IGNsb3NlX3RhZyBmbXQgPSBmdW5jdGlvblxuICAgICAgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBfIC0+IEZvcm1hdC5wcF9jbG9zZV9zdGFnIGZtdCAoKVxuXG4gIGxldCB0YWdfc3RyaW5nIGZtdCBvIHMgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgICAgICBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHNcbiAgICAgIHwgU29tZSB0YWcgLT5cbiAgICAgICAgICBGb3JtYXQucHBfb3Blbl9zdGFnIGZtdCAoRm9ybWF0LlN0cmluZ190YWcgdGFnKTtcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzO1xuICAgICAgICAgIEZvcm1hdC5wcF9jbG9zZV9zdGFnIGZtdCAoKVxuXG4gIGxldCByZWMgZnByaW50X3QgZm10ID0gZnVuY3Rpb25cbiAgICAgIEF0b20gKHMsIHApIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuYXRvbV9zdHlsZSBzO1xuXG4gICAgfCBMaXN0ICgoXywgXywgXywgcCkgYXMgcGFyYW0sIGwpIC0+XG4gICAgICAgIG9wZW5fdGFnIGZtdCBwLmxpc3Rfc3R5bGU7XG4gICAgICAgIGlmIHAuYWxpZ25fY2xvc2luZyB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3QgZm10IE5vbmUgcGFyYW0gbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3QyIGZtdCBwYXJhbSBsO1xuICAgICAgICBjbG9zZV90YWcgZm10IHAubGlzdF9zdHlsZVxuXG4gICAgfCBMYWJlbCAobGFiZWwsIHgpIC0+IGZwcmludF9wYWlyIGZtdCBsYWJlbCB4XG4gICAgfCBDdXN0b20gZiAtPiBmIGZtdFxuXG4gIGFuZCBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsID1cbiAgICBvcGVuX3RhZyBmbXQgcC5ib2R5X3N0eWxlO1xuICAgIGZwcmludF90IGZtdCBoZDtcbiAgICBMaXN0Lml0ZXIgKFxuICAgICAgZnVuIHggLT5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcbiAgICBjbG9zZV90YWcgZm10IHAuYm9keV9zdHlsZVxuXG4gIGFuZCBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX3JpZ2h0IGZtdCBwIHNlcCBoZCB0bCA9XG4gICAgb3Blbl90YWcgZm10IHAuYm9keV9zdHlsZTtcbiAgICBmcHJpbnRfdCBmbXQgaGQ7XG4gICAgTGlzdC5pdGVyIChcbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuc2VwYXJhdG9yX3N0eWxlIHNlcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICBmcHJpbnRfdCBmbXQgeFxuICAgICkgdGw7XG4gICAgY2xvc2VfdGFnIGZtdCBwLmJvZHlfc3R5bGVcblxuICBhbmQgZnByaW50X29wdF9sYWJlbCBmbXQgPSBmdW5jdGlvblxuICAgICAgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAobGFiLCBscCkgLT5cbiAgICAgICAgb3Blbl90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICBmcHJpbnRfdCBmbXQgbGFiO1xuICAgICAgICBjbG9zZV90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCJcblxuICAoKiBFaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBsaXN0ICopXG4gIGFuZCBmcHJpbnRfbGlzdCBmbXQgbGFiZWwgKChvcCwgX3NlcCwgY2wsIHApIGFzIHBhcmFtKSA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPlxuICAgICAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgfHwgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG4gICAgfCBoZCA6OiB0bCBhcyBsIC0+XG5cbiAgICAgICAgaWYgdGwgPSBbXSB8fCBwLnNlcGFyYXRvcnNfc3RpY2tfbGVmdCB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3Rfc3RpY2tfbGVmdCBmbXQgbGFiZWwgcGFyYW0gaGQgdGwgbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3Rfc3RpY2tfcmlnaHQgZm10IGxhYmVsIHBhcmFtIGhkIHRsIGxcblxuXG4gIGFuZCBmcHJpbnRfbGlzdF9zdGlja19sZWZ0IGZtdCBsYWJlbCAob3AsIHNlcCwgY2wsIHApIGhkIHRsIGwgPVxuICAgIGxldCBpbmRlbnQgPSBwLmluZGVudF9ib2R5IGluXG4gICAgcHBfb3Blbl94Ym94IGZtdCBwIGluZGVudDtcbiAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcblxuICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcblxuICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG5cbiAgICBsZXQgb3Blbl9leHRyYSwgY2xvc2VfZXh0cmEgPSBleHRyYV9ib3ggcCBsIGluXG4gICAgb3Blbl9leHRyYSBmbXQ7XG4gICAgZnByaW50X2xpc3RfYm9keV9zdGlja19sZWZ0IGZtdCBwIHNlcCBoZCB0bDtcbiAgICBjbG9zZV9leHRyYSBmbXQ7XG5cbiAgICBpZiBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSAoLWluZGVudClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgKC1pbmRlbnQpO1xuICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbDtcbiAgICBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKVxuXG4gIGFuZCBmcHJpbnRfbGlzdF9zdGlja19yaWdodCBmbXQgbGFiZWwgKG9wLCBzZXAsIGNsLCBwKSBoZCB0bCBsID1cbiAgICBsZXQgYmFzZV9pbmRlbnQgPSBwLmluZGVudF9ib2R5IGluXG4gICAgbGV0IHNlcF9pbmRlbnQgPVxuICAgICAgU3RyaW5nLmxlbmd0aCBzZXAgKyAoaWYgcC5zcGFjZV9hZnRlcl9zZXBhcmF0b3IgdGhlbiAxIGVsc2UgMClcbiAgICBpblxuICAgIGxldCBpbmRlbnQgPSBiYXNlX2luZGVudCArIHNlcF9pbmRlbnQgaW5cblxuICAgIHBwX29wZW5feGJveCBmbXQgcCBpbmRlbnQ7XG4gICAgZnByaW50X29wdF9sYWJlbCBmbXQgbGFiZWw7XG5cbiAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG5cbiAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpO1xuXG4gICAgbGV0IG9wZW5fZXh0cmEsIGNsb3NlX2V4dHJhID0gZXh0cmFfYm94IHAgbCBpblxuICAgIG9wZW5fZXh0cmEgZm10O1xuXG4gICAgZnByaW50X3QgZm10IGhkO1xuICAgIExpc3QuaXRlciAoXG4gICAgICBmdW4geCAtPlxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSAoLXNlcF9pbmRlbnQpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgKC1zZXBfaW5kZW50KTtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcblxuICAgIGNsb3NlX2V4dHJhIGZtdDtcblxuICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtaW5kZW50KVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLWluZGVudCk7XG4gICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cblxuXG4gICgqIGFsaWduX2Nsb3NpbmcgPSBmYWxzZSAqKVxuICBhbmQgZnByaW50X2xpc3QyIGZtdCAob3AsIHNlcCwgY2wsIHApID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHx8IHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2xcblxuICAgIHwgaGQgOjogdGwgYXMgbCAtPlxuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG5cbiAgICAgICAgcHBfb3Blbl9ub25hbGlnbmVkX2JveCBmbXQgcCAwIGwgO1xuICAgICAgICBpZiBwLnNlcGFyYXRvcnNfc3RpY2tfbGVmdCB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3RfYm9keV9zdGlja19sZWZ0IGZtdCBwIHNlcCBoZCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3RfYm9keV9zdGlja19yaWdodCBmbXQgcCBzZXAgaGQgdGw7XG4gICAgICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpO1xuXG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2xcblxuXG4gICgqIFByaW50aW5nIGEgbGFiZWw6dmFsdWUgcGFpci5cblxuICAgICBUaGUgb3BlbmluZyBicmFja2V0IHN0YXlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGtleSwgbm8gbWF0dGVyIHdoYXQsXG4gICAgIGFuZCB0aGUgY2xvc2luZyBicmFja2V0IGlzIGVpdGhlciBvbiB0aGUgc2FtZSBsaW5lXG4gICAgIG9yIHZlcnRpY2FsbHkgYWxpZ25lZCB3aXRoIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGtleS5cbiAgKilcbiAgYW5kIGZwcmludF9wYWlyIGZtdCAoKGxhYiwgbHApIGFzIGxhYmVsKSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgTGlzdCAoKG9wLCBzZXAsIGNsLCBwKSwgbCkgd2hlbiBwLnN0aWNrX3RvX2xhYmVsICYmIHAuYWxpZ25fY2xvc2luZyAtPlxuICAgICAgICAgIGZwcmludF9saXN0IGZtdCAoU29tZSBsYWJlbCkgKG9wLCBzZXAsIGNsLCBwKSBsXG5cbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBpbmRlbnQgPSBscC5pbmRlbnRfYWZ0ZXJfbGFiZWwgaW5cbiAgICAgICAgICBGb3JtYXQucHBfb3Blbl9odmJveCBmbXQgMDtcblxuICAgICAgICAgIG9wZW5fdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcbiAgICAgICAgICBmcHJpbnRfdCBmbXQgbGFiO1xuICAgICAgICAgIGNsb3NlX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG5cbiAgICAgICAgICAobWF0Y2ggbHAubGFiZWxfYnJlYWsgd2l0aFxuICAgICAgICAgICB8IGBBdXRvIC0+XG4gICAgICAgICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSBpbmRlbnRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwIGluZGVudFxuICAgICAgICAgICB8IGBBbHdheXNcbiAgICAgICAgICAgfCBgQWx3YXlzX3JlYyAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LnBwX2ZvcmNlX25ld2xpbmUgZm10ICgpO1xuICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgKFN0cmluZy5tYWtlIGluZGVudCAnICcpXG4gICAgICAgICAgIHwgYE5ldmVyIC0+XG4gICAgICAgICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9jaGFyIGZtdCAnICdcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICApO1xuICAgICAgICAgIGZwcmludF90IGZtdCB4O1xuICAgICAgICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cbiAgbGV0IHRvX2Zvcm1hdHRlciBmbXQgeCA9XG4gICAgbGV0IHggPSByZXdyaXRlIHggaW5cbiAgICBmcHJpbnRfdCBmbXQgeDtcbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgbGV0IHRvX2J1ZmZlciA/KGVzY2FwZSA9IGBOb25lKSA/KHN0eWxlcyA9IFtdKSBidWYgeCA9XG4gICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgIGRlZmluZV9zdHlsZXMgZm10IGVzY2FwZSBzdHlsZXM7XG4gICAgdG9fZm9ybWF0dGVyIGZtdCB4XG5cbiAgbGV0IHRvX3N0cmluZyA/ZXNjYXBlID9zdHlsZXMgeCA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNTAwIGluXG4gICAgdG9fYnVmZmVyID9lc2NhcGUgP3N0eWxlcyBidWYgeDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHRvX2NoYW5uZWwgPyhlc2NhcGUgPSBgTm9uZSkgPyhzdHlsZXMgPSBbXSkgb2MgeCA9XG4gICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICBkZWZpbmVfc3R5bGVzIGZtdCBlc2NhcGUgc3R5bGVzO1xuICAgIHRvX2Zvcm1hdHRlciBmbXQgeFxuXG4gIGxldCB0b19zdGRvdXQgP2VzY2FwZSA/c3R5bGVzIHggPSB0b19jaGFubmVsID9lc2NhcGUgP3N0eWxlcyBzdGRvdXQgeFxuICBsZXQgdG9fc3RkZXJyID9lc2NhcGUgP3N0eWxlcyB4ID0gdG9fY2hhbm5lbCA/ZXNjYXBlID9zdHlsZXMgc3RkZXJyIHhcblxuZW5kXG5cblxuXG5cbm1vZHVsZSBDb21wYWN0ID1cbnN0cnVjdFxuICBvcGVuIFByaW50ZlxuXG4gIGxldCByZWMgZnByaW50X3QgYnVmID0gZnVuY3Rpb25cbiAgICAgIEF0b20gKHMsIF8pIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzXG4gICAgfCBMaXN0IChwYXJhbSwgbCkgLT4gZnByaW50X2xpc3QgYnVmIHBhcmFtIGxcbiAgICB8IExhYmVsIChsYWJlbCwgeCkgLT4gZnByaW50X3BhaXIgYnVmIGxhYmVsIHhcbiAgICB8IEN1c3RvbSBmIC0+XG4gICAgICAgICgqIFdpbGwgbW9zdCBsaWtlbHkgbm90IGJlIGNvbXBhY3QgKilcbiAgICAgICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgICAgICBmIGZtdDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuXG4gIGFuZCBmcHJpbnRfbGlzdCBidWYgKG9wLCBzZXAsIGNsLCBfKSA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiBicHJpbnRmIGJ1ZiBcIiVzJXNcIiBvcCBjbFxuICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgb3A7XG4gICAgICAgIGZwcmludF90IGJ1ZiB4O1xuICAgICAgICBMaXN0Lml0ZXIgKFxuICAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgICAgICAgICAgZnByaW50X3QgYnVmIHhcbiAgICAgICAgKSB0bDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGNsXG5cbiAgYW5kIGZwcmludF9wYWlyIGJ1ZiAobGFiZWwsIF8pIHggPVxuICAgIGZwcmludF90IGJ1ZiBsYWJlbDtcbiAgICBmcHJpbnRfdCBidWYgeFxuXG5cbiAgbGV0IHRvX2J1ZmZlciBidWYgeCA9IGZwcmludF90IGJ1ZiB4XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA1MDAgaW5cbiAgICB0b19idWZmZXIgYnVmIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCB0b19mb3JtYXR0ZXIgZm10IHggPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHggaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiIHM7XG4gICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuXG4gIGxldCB0b19jaGFubmVsIG9jIHggPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDUwMCBpblxuICAgIHRvX2J1ZmZlciBidWYgeDtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBidWZcblxuICBsZXQgdG9fc3Rkb3V0IHggPSB0b19jaGFubmVsIHN0ZG91dCB4XG4gIGxldCB0b19zdGRlcnIgeCA9IHRvX2NoYW5uZWwgc3RkZXJyIHhcbmVuZFxuXG5cblxuXG4oKiBPYnNvbGV0ZSAqKVxubW9kdWxlIFBhcmFtID1cbnN0cnVjdFxuICBsZXQgbGlzdF90cnVlID0ge1xuICAgIHNwYWNlX2FmdGVyX29wZW5pbmcgPSB0cnVlO1xuICAgIHNwYWNlX2FmdGVyX3NlcGFyYXRvciA9IHRydWU7XG4gICAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IHRydWU7XG4gICAgc2VwYXJhdG9yc19zdGlja19sZWZ0ID0gdHJ1ZTtcbiAgICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IHRydWU7XG4gICAgc3RpY2tfdG9fbGFiZWwgPSB0cnVlO1xuICAgIGFsaWduX2Nsb3NpbmcgPSB0cnVlO1xuICAgIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICAgIGluZGVudF9ib2R5ID0gMjtcbiAgICBsaXN0X3N0eWxlID0gTm9uZTtcbiAgICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgICBib2R5X3N0eWxlID0gTm9uZTtcbiAgICBzZXBhcmF0b3Jfc3R5bGUgPSBOb25lO1xuICAgIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xuICB9XG5cbiAgbGV0IGxpc3RfZmFsc2UgPSB7XG4gICAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IGZhbHNlO1xuICAgIHNwYWNlX2FmdGVyX3NlcGFyYXRvciA9IGZhbHNlO1xuICAgIHNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgPSBmYWxzZTtcbiAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSBmYWxzZTtcbiAgICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IGZhbHNlO1xuICAgIHN0aWNrX3RvX2xhYmVsID0gZmFsc2U7XG4gICAgYWxpZ25fY2xvc2luZyA9IGZhbHNlO1xuICAgIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICAgIGluZGVudF9ib2R5ID0gMjtcbiAgICBsaXN0X3N0eWxlID0gTm9uZTtcbiAgICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgICBib2R5X3N0eWxlID0gTm9uZTtcbiAgICBzZXBhcmF0b3Jfc3R5bGUgPSBOb25lO1xuICAgIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xuICB9XG5cbiAgbGV0IGxhYmVsX3RydWUgPSB7XG4gICAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgICBzcGFjZV9hZnRlcl9sYWJlbCA9IHRydWU7XG4gICAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgICBsYWJlbF9zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGFiZWxfZmFsc2UgPSB7XG4gICAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgICBzcGFjZV9hZnRlcl9sYWJlbCA9IGZhbHNlO1xuICAgIGluZGVudF9hZnRlcl9sYWJlbCA9IDI7XG4gICAgbGFiZWxfc3R5bGUgPSBOb25lO1xuICB9XG5lbmRcbiIsImV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IGVycm9yIHMgPSByYWlzZSAoRXJyb3IgcylcblxuXG4oKlxuICBEZWJ1Z2dpbmcgdXRpbGl0aWVzLlxuKilcblxubGV0IHN0cmluZzhfb2ZfaW50IHggPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gIGZvciBpID0gMCB0byA3IGRvXG4gICAgQnl0ZXMuc2V0IHMgKDctaSkgKENoYXIuY2hyICgweGZmIGxhbmQgKHggbHNyICg4ICogaSkpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHNcblxubGV0IHN0cmluZzRfb2ZfaW50IHggPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gIGZvciBpID0gMCB0byAzIGRvXG4gICAgQnl0ZXMuc2V0IHMgKDMtaSkgKENoYXIuY2hyICgweGZmIGxhbmQgKHggbHNyICg4ICogaSkpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHNcblxubGV0IHByaW50X2JpdHMgPyhwb3MgPSAwKSA/bGVuIHMgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBwb3MgPCAwIHx8IChwb3MgPiAwICYmIHBvcyA+PSBzbGVuKSB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCaV91dGlsLnByaW50X2JpdHNcIjtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgTm9uZSAtPiBzbGVuIC0gcG9zXG4gICAgICB8IFNvbWUgbGVuIC0+XG4gICAgICAgICAgaWYgbGVuID4gc2xlbiAtIHBvcyB0aGVuIGludmFsaWRfYXJnIFwiQmlfdXRpbC5wcmludF9iaXRzXCJcbiAgICAgICAgICBlbHNlIGxlblxuICBpblxuXG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIChsZW4gKiA5KSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBrID0gaSAqIDkgaW5cbiAgICBsZXQgeCA9IENoYXIuY29kZSBzLltwb3MraV0gaW5cbiAgICBmb3IgaiA9IDAgdG8gNyBkb1xuICAgICAgQnl0ZXMuc2V0IHIgKGsraikgKGlmICh4IGxzciAoNyAtIGopKSBsYW5kIDEgPSAwIHRoZW4gJzAnIGVsc2UgJzEnKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IHIgKGsrOCkgKGlmIChpICsgMSkgbW9kIDggPSAwIHRoZW4gJ1xcbicgZWxzZSAnICcpXG4gIGRvbmU7XG4gIEJ5dGVzLnRvX3N0cmluZyByXG5cbigqIGludCBzaXplIGluIGJpdHMgKilcbmxldCBpbnRfc2l6ZSA9XG4gIGxldCBjID0gcmVmIDAgaW5cbiAgbGV0IHIgPSByZWYgKC0xKSBpblxuICB3aGlsZSAhciA8PiAwIGRvXG4gICAgciA6PSAhciBsc3IgMTtcbiAgICBpbmNyIGNcbiAgZG9uZTtcbiAgIWNcbiIsInR5cGUgdHlwZV9pZCA9IGludFxuXG5sZXQgZHVtbXlfdHlwZV9pZCA9IDBcblxubGV0IGNyZWF0ZV90eXBlX2lkID1cbiAgbGV0IG4gPSByZWYgZHVtbXlfdHlwZV9pZCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIG47XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwiQmlfc2hhcmUuUmRfcG9seS5jcmVhdGVfdHlwZV9pZDogXFxcbiAgICAgICAgICAgICAgICBleGhhdXN0ZWQgYXZhaWxhYmxlIHR5cGVfaWQnc1wiXG4gICAgZWxzZVxuICAgICAgIW5cblxubW9kdWxlIFdyID1cbnN0cnVjdFxuICBtb2R1bGUgSCA9IEhhc2h0YmwuTWFrZSAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSBPYmoudCAqIHR5cGVfaWRcbiAgICAgIGxldCBlcXVhbCAoeDEsIHQxKSAoeDIsIHQyKSA9IHgxID09IHgyICYmIHQxID09IHQyXG4gICAgICBsZXQgaGFzaCA9IEhhc2h0YmwuaGFzaFxuICAgIGVuZFxuICApXG5cbiAgdHlwZSB0YmwgPSBpbnQgSC50XG5cbiAgbGV0IGNyZWF0ZSA9IEguY3JlYXRlXG4gIGxldCBjbGVhciB0YmwgPVxuICAgIGlmIEgubGVuZ3RoIHRibCA+IDAgdGhlblxuICAgICAgSC5jbGVhciB0YmxcblxuICBsZXQgcHV0IHRibCBrIHBvcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgcG9zMCA9IEguZmluZCB0YmwgKE9iai5tYWdpYyBrKSBpblxuICAgICAgcG9zIC0gcG9zMFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBILmFkZCB0YmwgKE9iai5tYWdpYyBrKSBwb3M7XG4gICAgICAwXG5lbmRcblxubW9kdWxlIFJkID1cbnN0cnVjdFxuICB0eXBlIHRibCA9ICgoaW50ICogdHlwZV9pZCksIE9iai50KSBIYXNodGJsLnRcblxuICBsZXQgY3JlYXRlIG4gPSBIYXNodGJsLmNyZWF0ZSBuXG4gIGxldCBjbGVhciA9IEhhc2h0YmwuY2xlYXJcblxuICBsZXQgcHV0IHRibCBwb3MgeCA9XG4gICAgSGFzaHRibC5hZGQgdGJsIHBvcyB4XG5cbiAgbGV0IGdldCB0YmwgcG9zID1cbiAgICB0cnkgSGFzaHRibC5maW5kIHRibCBwb3NcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIHJlZmVyZW5jZSlcIlxuZW5kXG4iLCJ0eXBlIHQgPSB7XG4gIG11dGFibGUgaV9zIDogYnl0ZXM7XG4gIG11dGFibGUgaV9wb3MgOiBpbnQ7XG4gIG11dGFibGUgaV9sZW4gOiBpbnQ7XG4gIG11dGFibGUgaV9vZmZzIDogaW50O1xuICBtdXRhYmxlIGlfbWF4X2xlbiA6IGludDtcbiAgaV9yZWZpbGwgOiAodCAtPiBpbnQgLT4gdW5pdCk7XG4gIGlfc2hhcmVkIDogQmlfc2hhcmUuUmQudGJsO1xufVxuXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbmxldCB0cnlfcHJlcmVhZCBpYiBuID1cbiAgaWYgaWIuaV9sZW4gLSBpYi5pX3BvcyA8IG4gdGhlbiAoXG4gICAgaWIuaV9yZWZpbGwgaWIgbjtcbiAgICBtaW4gKGliLmlfbGVuIC0gaWIuaV9wb3MpIG5cbiAgKVxuICBlbHNlXG4gICAgblxuXG5sZXQgcmVhZCBpYiBuID1cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGlmIGliLmlfbGVuIC0gcG9zID49IG4gdGhlbiAoXG4gICAgaWIuaV9wb3MgPC0gcG9zICsgbjtcbiAgICBwb3NcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgbiA+PSBuIHRoZW5cbiAgICAgIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICAgICAgaWIuaV9wb3MgPC0gaWIuaV9wb3MgKyBuO1xuICAgICAgcG9zXG4gICAgZWxzZVxuICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG5cbmxldCByZWFkX2NoYXIgaWIgPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPiAwIHRoZW4gKFxuICAgIGxldCBjID0gQnl0ZXMudW5zYWZlX2dldCBpYi5pX3MgcG9zIGluXG4gICAgaWIuaV9wb3MgPC0gcG9zICsgMTtcbiAgICBjXG4gIClcbiAgZWxzZVxuICAgIGlmIHRyeV9wcmVyZWFkIGliIDEgPiAwIHRoZW5cbiAgICAgIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICAgICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3MgaW5cbiAgICAgIGliLmlfcG9zIDwtIHBvcyArIDE7XG4gICAgICBjXG4gICAgZWxzZVxuICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG5cbmxldCBwZWVrIGliID1cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGlmIGliLmlfbGVuIC0gcG9zID4gMCB0aGVuIChcbiAgICBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3NcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgMSA+IDAgdGhlblxuICAgICAgQnl0ZXMudW5zYWZlX2dldCBpYi5pX3MgaWIuaV9wb3NcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IGZyb21fYnl0ZXMgPyhwb3MgPSAwKSA/KHNocmxlbiA9IDE2KSBzID0ge1xuICBpX3MgPSBzO1xuICBpX3BvcyA9IHBvcztcbiAgaV9sZW4gPSBCeXRlcy5sZW5ndGggcztcbiAgaV9vZmZzID0gLXBvcztcbiAgaV9tYXhfbGVuID0gQnl0ZXMubGVuZ3RoIHM7XG4gIGlfcmVmaWxsID0gKGZ1biBpYiBuIC0+ICgpKTtcbiAgaV9zaGFyZWQgPSBCaV9zaGFyZS5SZC5jcmVhdGUgc2hybGVuO1xufVxuXG5sZXQgZnJvbV9zdHJpbmcgP3BvcyA/c2hybGVuIHMgPSBmcm9tX2J5dGVzID9wb3MgP3NocmxlbiAoQnl0ZXMub2Zfc3RyaW5nIHMpXG5cbigqXG4gIExpa2UgUGVydmFzaXZlcy5yZWFsbHlfaW5wdXQgYnV0IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlc1xuICByZWFkIGluc3RlYWQgb2YgcmFpc2luZyBFbmRfb2ZfZmlsZSB3aGVuIHRoZSBlbmQgb2YgZmlsZSBpcyByZWFjaGVkLlxuKilcbmxldCByZWMgbm90X3JlYWxseV9pbnB1dCBpYyBzIHBvcyBsZW4gYWNjdSA9XG4gIGxldCBuID0gaW5wdXQgaWMgcyBwb3MgbGVuIGluXG4gIGlmIG4gPCBsZW4gJiYgbiA+IDAgdGhlblxuICAgIG5vdF9yZWFsbHlfaW5wdXQgaWMgcyAocG9zICsgbikgKGxlbiAtIG4pIChhY2N1ICsgbilcbiAgZWxzZVxuICAgIGFjY3UgKyBuXG5cbmxldCByZWZpbGxfZnJvbV9jaGFubmVsIGljIGliIG4gPVxuICBpZiBuID4gaWIuaV9tYXhfbGVuIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJpX2luYnVmLnJlZmlsbF9mcm9tX2NoYW5uZWxcIlxuICBlbHNlIChcbiAgICBsZXQgcmVtX2xlbiA9IGliLmlfbGVuIC0gaWIuaV9wb3MgaW5cbiAgICBpZiByZW1fbGVuIDwgbiB0aGVuXG4gICAgICBsZXQgcyA9IGliLmlfcyBpblxuICAgICAgQnl0ZXMuYmxpdCBzIGliLmlfcG9zIHMgMCByZW1fbGVuO1xuICAgICAgbGV0IHRvX3JlYWQgPSBuIC0gcmVtX2xlbiBpblxuICAgICAgbGV0IHJlYWxseV9yZWFkID0gbm90X3JlYWxseV9pbnB1dCBpYyBzIHJlbV9sZW4gdG9fcmVhZCAwIGluXG4gICAgICBpYi5pX29mZnMgPC0gaWIuaV9vZmZzICsgaWIuaV9wb3M7XG4gICAgICBpYi5pX3BvcyA8LSAwO1xuICAgICAgaWIuaV9sZW4gPC0gcmVtX2xlbiArIHJlYWxseV9yZWFkXG4gIClcblxubGV0IGZyb21fY2hhbm5lbCA/KGxlbiA9IDQwOTYpID8oc2hybGVuID0gMTYpIGljID0ge1xuICBpX3MgPSBCeXRlcy5jcmVhdGUgbGVuO1xuICBpX3BvcyA9IDA7XG4gIGlfbGVuID0gMDtcbiAgaV9vZmZzID0gMDtcbiAgaV9tYXhfbGVuID0gbGVuO1xuICBpX3JlZmlsbCA9IHJlZmlsbF9mcm9tX2NoYW5uZWwgaWM7XG4gIGlfc2hhcmVkID0gQmlfc2hhcmUuUmQuY3JlYXRlIHNocmxlbjtcbn1cbiIsInR5cGUgdCA9IHtcbiAgbXV0YWJsZSBvX3MgOiBieXRlcztcbiAgbXV0YWJsZSBvX21heF9sZW4gOiBpbnQ7XG4gIG11dGFibGUgb19sZW4gOiBpbnQ7XG4gIG11dGFibGUgb19vZmZzIDogaW50O1xuICBvX2luaXRfbGVuIDogaW50O1xuICBvX21ha2Vfcm9vbSA6ICh0IC0+IGludCAtPiB1bml0KTtcbiAgbXV0YWJsZSBvX3NoYXJlZCA6IEJpX3NoYXJlLldyLnRibDtcbiAgb19zaGFyZWRfaW5pdF9sZW4gOiBpbnQ7XG59XG5cbmxldCByZWFsbHlfZXh0ZW5kIGIgbiA9XG4gIGxldCBzbGVuMCA9IGIub19tYXhfbGVuIGluXG4gIGxldCByZXFsZW4gPSBiLm9fbGVuICsgbiBpblxuICBsZXQgc2xlbiA9XG4gICAgbGV0IHggPSBtYXggcmVxbGVuICgyICogc2xlbjApIGluXG4gICAgaWYgeCA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiB4XG4gICAgZWxzZVxuICAgICAgaWYgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIDwgcmVxbGVuIHRoZW5cblx0aW52YWxpZF9hcmcgXCJCdWYuZXh0ZW5kOiByZWFjaGVkIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFwiXG4gICAgICBlbHNlXG5cdFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBzbGVuIGluXG4gIEJ5dGVzLmJsaXQgYi5vX3MgMCBzIDAgYi5vX2xlbjtcbiAgYi5vX3MgPC0gcztcbiAgYi5vX21heF9sZW4gPC0gc2xlblxuXG5sZXQgZmx1c2hfdG9fb3V0cHV0IGFic3RyYWN0X291dHB1dCBiIG4gPVxuICBhYnN0cmFjdF9vdXRwdXQgKEJ5dGVzLnRvX3N0cmluZyBiLm9fcykgMCBiLm9fbGVuO1xuICBiLm9fb2ZmcyA8LSBiLm9fb2ZmcyArIGIub19sZW47XG4gIGIub19sZW4gPC0gMDtcbiAgaWYgbiA+IGIub19tYXhfbGVuIHRoZW5cbiAgICByZWFsbHlfZXh0ZW5kIGIgblxuXG5sZXQgZmx1c2hfdG9fY2hhbm5lbCBvYyA9IGZsdXNoX3RvX291dHB1dCAob3V0cHV0X3N1YnN0cmluZyBvYylcblxuXG5sZXQgY3JlYXRlID8obWFrZV9yb29tID0gcmVhbGx5X2V4dGVuZCkgPyhzaHJsZW4gPSAxNikgbiA9IHtcbiAgb19zID0gQnl0ZXMuY3JlYXRlIG47XG4gIG9fbWF4X2xlbiA9IG47XG4gIG9fbGVuID0gMDtcbiAgb19vZmZzID0gMDtcbiAgb19pbml0X2xlbiA9IG47XG4gIG9fbWFrZV9yb29tID0gbWFrZV9yb29tO1xuICBvX3NoYXJlZCA9IEJpX3NoYXJlLldyLmNyZWF0ZSBzaHJsZW47XG4gIG9fc2hhcmVkX2luaXRfbGVuID0gc2hybGVuO1xufVxuXG5sZXQgY3JlYXRlX2NoYW5uZWxfd3JpdGVyID8obGVuID0gNDA5NikgP3NocmxlbiBvYyA9XG4gIGNyZWF0ZSB+bWFrZV9yb29tOihmbHVzaF90b19jaGFubmVsIG9jKSA/c2hybGVuIGxlblxuXG5sZXQgZmx1c2hfY2hhbm5lbF93cml0ZXIgYiA9XG4gIGIub19tYWtlX3Jvb20gYiAwXG5cbmxldCBjcmVhdGVfb3V0cHV0X3dyaXRlciA/KGxlbiA9IDQwOTYpID9zaHJsZW4gb3V0ID1cbiAgY3JlYXRlIH5tYWtlX3Jvb206KGZsdXNoX3RvX291dHB1dCBvdXQjb3V0cHV0KSA/c2hybGVuIGxlblxuXG5sZXQgZmx1c2hfb3V0cHV0X3dyaXRlciA9IGZsdXNoX2NoYW5uZWxfd3JpdGVyXG5cblxuKCpcbiAgR3VhcmFudGVlIHRoYXQgdGhlIGJ1ZmZlciBzdHJpbmcgaGFzIGVub3VnaCByb29tIGZvciBuIGFkZGl0aW9uYWwgYnl0ZXMuXG4qKVxubGV0IGV4dGVuZCBiIG4gPVxuICBpZiBiLm9fbGVuICsgbiA+IGIub19tYXhfbGVuIHRoZW5cbiAgICBiLm9fbWFrZV9yb29tIGIgblxuXG5sZXQgYWxsb2MgYiBuID1cbiAgZXh0ZW5kIGIgbjtcbiAgbGV0IHBvcyA9IGIub19sZW4gaW5cbiAgYi5vX2xlbiA8LSBwb3MgKyBuO1xuICBwb3NcblxubGV0IGFkZF9zdWIgYmxpdCBiIHMgcG9zIGxlbiA9XG4gIGV4dGVuZCBiIGxlbjtcbiAgYmxpdCBzIHBvcyBiLm9fcyBiLm9fbGVuIGxlbjtcbiAgYi5vX2xlbiA8LSBiLm9fbGVuICsgbGVuXG5cbmxldCBhZGRfc3Vic3RyaW5nID0gYWRkX3N1YiBTdHJpbmcuYmxpdFxubGV0IGFkZF9zdWJieXRlcyA9IGFkZF9zdWIgQnl0ZXMuYmxpdFxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBhZGRfc3Vic3RyaW5nIGIgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZGRfYnl0ZXMgYiBzID1cbiAgYWRkX3N1YmJ5dGVzIGIgcyAwIChCeXRlcy5sZW5ndGggcylcblxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGFsbG9jIGIgMSBpblxuICBCeXRlcy5zZXQgYi5vX3MgcG9zIGNcblxubGV0IHVuc2FmZV9hZGRfY2hhciBiIGMgPVxuICBsZXQgbGVuID0gYi5vX2xlbiBpblxuICBCeXRlcy5zZXQgYi5vX3MgbGVuIGM7XG4gIGIub19sZW4gPC0gbGVuICsgMVxuXG5sZXQgYWRkX2NoYXIyIGIgYzEgYzIgPVxuICBsZXQgcG9zID0gYWxsb2MgYiAyIGluXG4gIGxldCBzID0gYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyBjMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgYzJcblxubGV0IGFkZF9jaGFyNCBiIGMxIGMyIGMzIGM0ID1cbiAgbGV0IHBvcyA9IGFsbG9jIGIgNCBpblxuICBsZXQgcyA9IGIub19zIGluXG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyBwb3MgYzE7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzEpIGMyO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysyKSBjMztcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMykgYzRcblxuXG5cbmxldCBjbGVhciBiID1cbiAgYi5vX29mZnMgPC0gMDtcbiAgYi5vX2xlbiA8LSAwO1xuICBCaV9zaGFyZS5Xci5jbGVhciBiLm9fc2hhcmVkXG5cbmxldCByZXNldCBiID1cbiAgaWYgQnl0ZXMubGVuZ3RoIGIub19zIDw+IGIub19pbml0X2xlbiB0aGVuXG4gICAgYi5vX3MgPC0gQnl0ZXMuY3JlYXRlIGIub19pbml0X2xlbjtcbiAgYi5vX29mZnMgPC0gMDtcbiAgYi5vX2xlbiA8LSAwO1xuICBiLm9fc2hhcmVkIDwtIEJpX3NoYXJlLldyLmNyZWF0ZSBiLm9fc2hhcmVkX2luaXRfbGVuXG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLm9fcyAwIGIub19sZW5cbiIsIigqIFZhcmlhYmxlLWJ5dGUgZW5jb2Rpbmcgb2YgOC1ieXRlIGludGVnZXJzIChzdGFydGluZyBmcm9tIDApLiAqKVxuXG5vcGVuIFByaW50Zlxub3BlbiBCaV9vdXRidWZcbm9wZW4gQmlfaW5idWZcblxudHlwZSB1aW50ID0gaW50XG5cbigqIE1heGltdW0gbGVuZ3RoIG9mIGEgdmludCBkZWNvZGFibGUgaW50byBhbiBPQ2FtbCBpbnQsXG4gICBtYXhpbXVtIHZhbHVlIG9mIHRoZSBoaWdoZXN0IGJ5dGUgb2YgdGhlIGxhcmdlc3QgdmludCBzdXBwb3J0ZWQgKilcbmxldCBtYXhfdmludF9ieXRlcywgbWF4X2hpZ2hlc3RfYnl0ZSA9XG4gIGlmIEJpX3V0aWwuaW50X3NpemUgbW9kIDcgPSAwIHRoZW5cbiAgICBsZXQgbSA9IEJpX3V0aWwuaW50X3NpemUgLyA3IGluXG4gICAgbGV0IGggPSAxIGxzbCA3IC0gMSBpblxuICAgIG0sIGhcbiAgZWxzZVxuICAgIGxldCBtID0gQmlfdXRpbC5pbnRfc2l6ZSAvIDcgKyAxIGluXG4gICAgbGV0IGggPSAxIGxzbCAoQmlfdXRpbC5pbnRfc2l6ZSBtb2QgNykgLSAxIGluXG4gICAgbSwgaFxuXG5sZXQgY2hlY2tfaGlnaGVzdF9ieXRlIHggPVxuICBpZiB4ID4gbWF4X2hpZ2hlc3RfYnl0ZSB0aGVuXG4gICAgQmlfdXRpbC5lcnJvciBcIlZpbnQgZXhjZWVkaW5nIHJhbmdlIG9mIE9DYW1sIGludHNcIlxuXG5cbmxldCB1bnNpZ25lZF9vZl9zaWduZWQgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgKCpcbiAgICAgIDAgLT4gMFxuICAgICAgMSAtPiAyXG4gICAgICAyIC0+IDRcbiAgICAgIDMgLT4gNlxuICAgICopXG4gICAgaSBsc2wgMVxuICBlbHNlXG4gICAgKCpcbiAgICAgIC0xIC0+IDFcbiAgICAgIC0yIC0+IDNcbiAgICAgIC0zIC0+IDVcbiAgICAqKVxuICAgICgoLTEtaSkgbHNsIDEpIGxvciAxXG5cbmxldCBzaWduZWRfb2ZfdW5zaWduZWQgaSA9XG4gIGlmIGkgbGFuZCAxID0gMCB0aGVuIGkgbHNyIDFcbiAgZWxzZSAtMSAtIChpIGxzciAxKVxuXG5sZXQgd3JpdGVfdXZpbnQgYnVmIGkgID1cbiAgQmlfb3V0YnVmLmV4dGVuZCBidWYgbWF4X3ZpbnRfYnl0ZXM7XG5cbiAgbGV0IHggPSByZWYgaSBpblxuICB3aGlsZSAheCBsc3IgNyA8PiAwIGRvXG4gICAgbGV0IGJ5dGUgPSAweDgwIGxvciAoIXggbGFuZCAweDdmKSBpblxuICAgIEJpX291dGJ1Zi51bnNhZmVfYWRkX2NoYXIgYnVmIChDaGFyLmNociBieXRlKTtcbiAgICB4IDo9ICF4IGxzciA3O1xuICBkb25lO1xuICBCaV9vdXRidWYudW5zYWZlX2FkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgIXgpXG5cbmxldCB3cml0ZV9zdmludCBidWYgaSA9XG4gIHdyaXRlX3V2aW50IGJ1ZiAodW5zaWduZWRfb2Zfc2lnbmVkIGkpXG5cbigqIGNvbnZlbmllbmNlICopXG5sZXQgdXZpbnRfb2ZfdWludCA/YnVmIGkgPVxuICBsZXQgYnVmZmVyID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgfCBOb25lIC0+IEJpX291dGJ1Zi5jcmVhdGUgMTBcbiAgICAgIHwgU29tZSBiIC0+IGJcbiAgaW5cbiAgQmlfb3V0YnVmLmNsZWFyIGJ1ZmZlcjtcbiAgd3JpdGVfdXZpbnQgYnVmZmVyIGk7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBidWZmZXJcblxubGV0IHN2aW50X29mX2ludCA/YnVmIGkgPVxuICB1dmludF9vZl91aW50ID9idWYgKHVuc2lnbmVkX29mX3NpZ25lZCBpKVxuXG5cbmxldCByZWFkX3V2aW50IGliID1cbiAgbGV0IGF2YWlsID0gQmlfaW5idWYudHJ5X3ByZXJlYWQgaWIgbWF4X3ZpbnRfYnl0ZXMgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGxldCB4ID0gcmVmIDAgaW5cbiAgKHRyeVxuICAgICBmb3IgaSA9IDAgdG8gYXZhaWwgLSAxIGRvXG4gICAgICAgbGV0IGIgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChwb3MraSkpIGluXG4gICAgICAgeCA6PSAoKGIgbGFuZCAweDdmKSBsc2wgKDcqaSkpIGxvciAheDtcbiAgICAgICBpZiBiIDwgMHg4MCB0aGVuIChcblx0IGliLmlfcG9zIDwtIHBvcyArIGkgKyAxO1xuXHQgaWYgaSArIDEgPSBtYXhfdmludF9ieXRlcyB0aGVuXG5cdCAgIGNoZWNrX2hpZ2hlc3RfYnl0ZSBiO1xuXHQgcmFpc2UgRXhpdFxuICAgICAgIClcbiAgICAgZG9uZTtcbiAgICAgQmlfdXRpbC5lcnJvciBcIlVudGVybWluYXRlZCB2aW50IG9yIHZpbnQgZXhjZWVkaW5nIHJhbmdlIG9mIE9DYW1sIGludHNcIlxuICAgd2l0aCBFeGl0IC0+ICgpXG4gICk7XG4gICF4XG5cblxubGV0IHJlYWRfc3ZpbnQgaWIgPVxuICBzaWduZWRfb2ZfdW5zaWduZWQgKHJlYWRfdXZpbnQgaWIpXG5cbigqIGNvbnZlbmllbmNlICopXG5cbmxldCBjaGVja19lbmRfb2ZfaW5wdXQgaWIgPVxuICBpZiBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiAxID4gMCB0aGVuXG4gICAgQmlfdXRpbC5lcnJvciBcIkp1bmsgaW5wdXQgYWZ0ZXIgZW5kIG9mIHZpbnRcIlxuXG5sZXQgdWludF9vZl91dmludCBzID1cbiAgbGV0IGliID0gQmlfaW5idWYuZnJvbV9zdHJpbmcgcyBpblxuICBsZXQgeCA9IHJlYWRfdXZpbnQgaWIgaW5cbiAgY2hlY2tfZW5kX29mX2lucHV0IGliO1xuICB4XG5cbmxldCBpbnRfb2Zfc3ZpbnQgcyA9XG4gIGxldCBpYiA9IEJpX2luYnVmLmZyb21fc3RyaW5nIHMgaW5cbiAgbGV0IHggPSByZWFkX3N2aW50IGliIGluXG4gIGNoZWNrX2VuZF9vZl9pbnB1dCBpYjtcbiAgeFxuXG5cbigqXG4gIFRlc3RpbmdcbiopXG5cbmxldCBzdHJpbmdfb2ZfbGlzdCBsID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSAxMDAgaW5cbiAgTGlzdC5pdGVyICh3cml0ZV91dmludCBvYikgbDtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIG9iXG5cbmxldCByZWMgcmVhZF9saXN0IGliID1cbiAgaWYgaWIuaV9wb3MgPCBpYi5pX2xlbiB0aGVuXG4gICAgbGV0IHggPSByZWFkX3V2aW50IGliIGluXG4gICAgeCA6OiByZWFkX2xpc3QgaWJcbiAgZWxzZVxuICAgIFtdXG5cbmxldCBsaXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9saXN0IChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKVxuXG5sZXQgcHJpbnRfbGlzdCBsID1cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4gaSAtPlxuICAgICAgcHJpbnRmIFwiZGVjICVpXFxuaGV4ICV4XFxuYmluICVzXFxuXCIgaSBpXG5cdChCaV91dGlsLnByaW50X2JpdHMgKEJpX3V0aWwuc3RyaW5nOF9vZl9pbnQgaSkpXG4gICkgbFxuXG5sZXQgdGVzdCAoKSA9XG4gIGxldCBsID0gW1xuICAgIDA7XG4gICAgMHhmZmZmZmZmO1xuICAgICgweDAxMDIwMzA0IGxzbCAzMikgbG9yIDB4MDUwNjA3MDg7XG4gICAgbWF4X2ludDtcbiAgICBtaW5faW50XG4gIF0gaW5cbiAgcHJpbnRmIFwiSW5wdXQ6XFxuXCI7XG4gIHByaW50X2xpc3QgbDtcbiAgbGV0IGwnID0gbGlzdF9vZl9zdHJpbmcgKHN0cmluZ19vZl9saXN0IGwpIGluXG4gIHByaW50ZiBcIk91dHB1dDpcXG5cIjtcbiAgcHJpbnRfbGlzdCBsJztcbiAgaWYgbCA9IGwnIHRoZW5cbiAgICBwcmludF9lbmRsaW5lIFwiU1VDQ0VTU1wiXG4gIGVsc2VcbiAgICBwcmludF9lbmRsaW5lIFwiRkFJTFVSRVwiXG4iLCJvcGVuIFByaW50ZlxuXG5sZXQgZXJyb3IgcyA9IGZhaWx3aXRoIChcIkJpX3N0cmVhbTogXCIgXiBzKVxuXG5sZXQgaW5wdXRfaW50NjQgaWMgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICAgIDY0IC0+XG4gICAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDggZG9cbiAgICAgICAgICBuIDo9ICghbiBsc2wgOCkgbG9yIChpbnB1dF9ieXRlIGljKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgICAgICBlcnJvciBcIkNvcnJ1cHRlZCBzdHJlYW06IGV4Y2Vzc2l2ZSBjaHVuayBsZW5ndGhcIjtcbiAgICAgICAgIW5cbiAgICB8IDMyIC0+XG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgaWYgaW5wdXRfYnl0ZSBpYyA8PiAwIHRoZW5cbiAgICAgICAgICAgIGVycm9yIFwiQ2h1bmsgbGVuZ3RoIGV4Y2VlZHMgc3VwcG9ydGVkIHJhbmdlIG9uIHRoaXMgcGxhdGZvcm1cIlxuICAgICAgICBkb25lO1xuICAgICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgbiA6PSAoIW4gbHNsIDgpIGxvciAoaW5wdXRfYnl0ZSBpYyk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICAgICAgZXJyb3IgXCJDaHVuayBsZW5ndGggZXhjZWVkcyBzdXBwb3J0ZWQgcmFuZ2Ugb24gdGhpcyBwbGF0Zm9ybVwiO1xuICAgICAgICAhblxuICAgIHwgbiAtPlxuICAgICAgICBlcnJvciAoc3ByaW50ZiBcInVuc3VwcG9ydGVkIHdvcmQgc2l6ZSAoJWkpXCIgbilcblxubGV0IG91dHB1dF9pbnQ2NCBvYyBuID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgICA2NCAtPlxuICAgICAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgICAgIGZvciBpID0gMSB0byA4IGRvXG4gICAgICAgICAgb3V0cHV0X2NoYXIgb2MgKGNoYXJfb2ZfaW50ICghbiBsc3IgNTYpKTtcbiAgICAgICAgICBuIDo9ICFuIGxzbCA4XG4gICAgICAgIGRvbmVcbiAgICB8IDMyIC0+XG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICAgICAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgb3V0cHV0X2NoYXIgb2MgKGNoYXJfb2ZfaW50ICghbiBsc3IgMjQpKTtcbiAgICAgICAgICBuIDo9ICFuIGxzbCA4XG4gICAgICAgIGRvbmVcbiAgICB8IG4gLT5cbiAgICAgICAgZXJyb3IgKHNwcmludGYgXCJ1bnN1cHBvcnRlZCB3b3JkIHNpemUgKCVpKVwiIG4pXG5cbmxldCByZWMgcmVhZF9jaHVuayBvZl9zdHJpbmcgaWMgPVxuICBtYXRjaCBpbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICdcXDAwMScgLT5cbiAgICAgICAgbGV0IGxlbiA9IGlucHV0X2ludDY0IGljIGluXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICBcIkNvcnJ1cHRlZCBzdHJlYW06IGV4Y2Vzc2l2ZSBjaHVuayBsZW5ndGggKCVpIGJ5dGVzKVwiIGxlbik7XG4gICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgICAgICAgU29tZSAob2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcykpXG5cbiAgICB8ICdcXDAwMCcgLT4gTm9uZVxuXG4gICAgfCBjIC0+IGVycm9yIChzcHJpbnRmIFwiQ29ycnVwdGVkIHN0cmVhbTogJUNcIiBjKVxuXG5cbmxldCBmbGF0dGVuIHN0ID1cbiAgbGV0IGEgPSByZWYgW3wgfF0gaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCByZWMgbmV4dCBpID1cbiAgICBpZiAhcG9zID49IEFycmF5Lmxlbmd0aCAhYSB0aGVuIChcbiAgICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0IHdpdGhcbiAgICAgICAgICBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGEnIC0+XG4gICAgICAgICAgICBTdHJlYW0uanVuayBzdDtcbiAgICAgICAgICAgIGEgOj0gYSc7XG4gICAgICAgICAgICBwb3MgOj0gMDtcbiAgICAgICAgICAgIG5leHQgaVxuICAgIClcbiAgICBlbHNlIChcbiAgICAgIGxldCB4ID0gKCFhKS4oIXBvcykgaW5cbiAgICAgIGluY3IgcG9zO1xuICAgICAgU29tZSB4XG4gICAgKVxuICBpblxuICBTdHJlYW0uZnJvbSBuZXh0XG5cblxubGV0IHJlYWRfc3RyZWFtIG9mX3N0cmluZyBpYyA9XG4gIGZsYXR0ZW4gKFN0cmVhbS5mcm9tIChmdW4gaSAtPiByZWFkX2NodW5rIG9mX3N0cmluZyBpYykpXG5cbmxldCByZXZfYXJyYXlfb2ZfbGlzdCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPiBbfHxdXG4gICAgfCB4IDo6IHRsIC0+XG4gICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICBtYXRjaCAhciB3aXRoXG4gICAgICAgICAgICAgIGhkIDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgYS4oaSkgPC0gaGQ7XG4gICAgICAgICAgICAgICAgciA6PSB0bDtcbiAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFcblxubGV0IHdyaXRlX3N0cmVhbSA/KGNodW5rX2xlbiA9IDEwMjQpIHRvX3N0cmluZyBvYyBzdCA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBsZXQgZmx1c2hfY2h1bmsgKCkgPVxuICAgIGxldCBhID0gcmV2X2FycmF5X29mX2xpc3QgIWFjYyBpblxuICAgIGFjYyA6PSBbXTtcbiAgICBuIDo9IDA7XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgYSBpblxuICAgIG91dHB1dF9jaGFyIG9jICdcXDAwMSc7XG4gICAgb3V0cHV0X2ludDY0IG9jIChTdHJpbmcubGVuZ3RoIHMpO1xuICAgIG91dHB1dF9zdHJpbmcgb2Mgc1xuICBpblxuICBTdHJlYW0uaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGluY3IgbjtcbiAgICAgIGFjYyA6PSB4IDo6ICFhY2M7XG4gICAgICBpZiAhbiA+PSBjaHVua19sZW4gdGhlblxuICAgICAgICBmbHVzaF9jaHVuayAoKVxuICApIHN0O1xuICBpZiAhbiA+IDAgdGhlblxuICAgIGZsdXNoX2NodW5rICgpO1xuICBvdXRwdXRfY2hhciBvYyAnXFwwMDAnXG5cblxubGV0IHRlc3QgbCA9XG4gIExpc3QuaXRlciAoZnVuIHggLT4gYXNzZXJ0ICh4ID49IDAgJiYgeCA8PSA5KSkgbDtcbiAgbGV0IHRvX3N0cmluZyBhID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgKEFycmF5LnRvX2xpc3QgYSkpXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgQXJyYXkuaW5pdCAoU3RyaW5nLmxlbmd0aCBzKSAoZnVuIGkgLT4gaW50X29mX3N0cmluZyAoU3RyaW5nLm1ha2UgMSBzLltpXSkpXG4gIGluXG4gIGxldCBzdCA9IFN0cmVhbS5vZl9saXN0IGwgaW5cbiAgbGV0IG9jID0gb3Blbl9vdXQgXCJ0ZXN0LXN0cmVhbS5kYXRcIiBpblxuICB3cml0ZV9zdHJlYW0gfmNodW5rX2xlbjoyIHRvX3N0cmluZyBvYyBzdDtcbiAgY2xvc2Vfb3V0IG9jO1xuXG4gIGxldCBpYyA9IG9wZW5faW4gXCJ0ZXN0LXN0cmVhbS5kYXRcIiBpblxuICBsZXQgc3QnID0gcmVhZF9zdHJlYW0gb2Zfc3RyaW5nIGljIGluXG4gIGxldCBsJyA9IHJlZiBbXSBpblxuICBTdHJlYW0uaXRlciAoZnVuIGkgLT4gbCcgOj0gaSA6OiAhbCcpIHN0JztcbiAgY2xvc2VfaW4gaWM7XG4gIGwgPSBMaXN0LnJldiAhbCdcbiIsIm9wZW4gUHJpbnRmXG5cbm9wZW4gQmlfb3V0YnVmXG5vcGVuIEJpX2luYnVmXG5cbnR5cGUgbm9kZV90YWcgPSBpbnRcblxubGV0IGJvb2xfdGFnID0gMFxubGV0IGludDhfdGFnID0gMVxubGV0IGludDE2X3RhZyA9IDJcbmxldCBpbnQzMl90YWcgPSAzXG5sZXQgaW50NjRfdGFnID0gNFxubGV0IGZsb2F0MzJfdGFnID0gMTFcbmxldCBmbG9hdDY0X3RhZyA9IDEyXG5sZXQgdXZpbnRfdGFnID0gMTZcbmxldCBzdmludF90YWcgPSAxN1xubGV0IHN0cmluZ190YWcgPSAxOFxubGV0IGFycmF5X3RhZyA9IDE5XG5sZXQgdHVwbGVfdGFnID0gMjBcbmxldCByZWNvcmRfdGFnID0gMjFcbmxldCBudW1fdmFyaWFudF90YWcgPSAyMlxubGV0IHZhcmlhbnRfdGFnID0gMjNcbmxldCB1bml0X3RhZyA9IDI0XG5sZXQgdGFibGVfdGFnID0gMjVcbmxldCBzaGFyZWRfdGFnID0gMjZcblxudHlwZSBoYXNoID0gaW50XG5cbigqXG4gIERhdGEgdHJlZSwgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4qKVxudHlwZSB0cmVlID1cbiAgICBbIGBVbml0XG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50OCBvZiBjaGFyXG4gICAgfCBgSW50MTYgb2YgaW50XG4gICAgfCBgSW50MzIgb2YgSW50MzIudFxuICAgIHwgYEludDY0IG9mIEludDY0LnRcbiAgICB8IGBGbG9hdDMyIG9mIGZsb2F0XG4gICAgfCBgRmxvYXQ2NCBvZiBmbG9hdFxuICAgIHwgYFV2aW50IG9mIGludFxuICAgIHwgYFN2aW50IG9mIGludFxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBBcnJheSBvZiAobm9kZV90YWcgKiB0cmVlIGFycmF5KSBvcHRpb25cbiAgICB8IGBUdXBsZSBvZiB0cmVlIGFycmF5XG4gICAgfCBgUmVjb3JkIG9mIChzdHJpbmcgb3B0aW9uICogaGFzaCAqIHRyZWUpIGFycmF5XG4gICAgfCBgTnVtX3ZhcmlhbnQgb2YgKGludCAqIHRyZWUgb3B0aW9uKVxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyBvcHRpb24gKiBoYXNoICogdHJlZSBvcHRpb24pXG4gICAgfCBgVGFibGUgb2Zcblx0KChzdHJpbmcgb3B0aW9uICogaGFzaCAqIG5vZGVfdGFnKSBhcnJheSAqIHRyZWUgYXJyYXkgYXJyYXkpIG9wdGlvblxuICAgIHwgYFNoYXJlZCBvZiB0cmVlIF1cblxuKCogZXh0ZW5kIHNpZ24gYml0ICopXG5sZXQgbWFrZV9zaWduZWQgeCA9XG4gIGlmIHggPiAweDNGRkZGRkZGIHRoZW4geCAtICgxIGxzbCAzMSkgZWxzZSB4XG5cbigqXG4gIFNhbWUgZnVuY3Rpb24gYXMgdGhlIG9uZSB1c2VkIGZvciBPQ2FtbCB2YXJpYW50cyBhbmQgb2JqZWN0IG1ldGhvZHMuXG4qKVxubGV0IGhhc2hfbmFtZSBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIG1ha2Vfc2lnbmVkICFhY2N1XG5cblxuKCpcbiAgU3RydWN0dXJlIG9mIGEgaGFzaHRhZzogNCBieXRlcyxcblxuICBhcmdiaXQgN2JpdHMgOGJpdHMgOGJpdHMgOGJpdHNcbiAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgICAgICAgICAgIDMxLWJpdCBoYXNoXG5cbiAgYXJnYml0ID0gMSBpZmYgaGFzaHRhZyBpcyBmb2xsb3dlZCBieSBhbiBhcmd1bWVudCwgdGhpcyBpcyBhbHdheXMgMSBmb3JcbiAgICAgICAgICAgcmVjb3JkIGZpZWxkcy5cblxuKilcblxubGV0IG1hc2tfMzFiaXQgPVxuICBsZXQgbiA9IEJpX3V0aWwuaW50X3NpemUgLSAzMSBpblxuICBhc3NlcnQgKG4gPj0gMCk7XG4gIGZ1biB4IC0+ICh4IGxzbCBuKSBsc3IgblxuXG5sZXQgd3JpdGVfaGFzaHRhZyBvYiBoIGhhc19hcmcgPVxuICBsZXQgaCA9IG1hc2tfMzFiaXQgaCBpblxuICBsZXQgcG9zID0gQmlfb3V0YnVmLmFsbG9jIG9iIDQgaW5cbiAgbGV0IHMgPSBvYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMykgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMikgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyAoXG4gICAgQ2hhci5jaHIgKFxuICAgICAgaWYgaGFzX2FyZyB0aGVuIGggbG9yIDB4ODBcbiAgICAgIGVsc2UgaFxuICAgIClcbiAgKVxuXG5sZXQgc3RyaW5nX29mX2hhc2h0YWcgaCBoYXNfYXJnID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSA0IGluXG4gIHdyaXRlX2hhc2h0YWcgb2IgaCBoYXNfYXJnO1xuICBCaV9vdXRidWYuY29udGVudHMgb2JcblxubGV0IHJlYWRfaGFzaHRhZyBpYiBjb250ID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHgwID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgcyBpKSBpblxuICBsZXQgaGFzX2FyZyA9IHgwID49IDB4ODAgaW5cbiAgbGV0IHgxID0gKHgwIGxhbmQgMHg3ZikgbHNsIDI0IGluXG4gIGxldCB4MiA9IChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzEpKSkgbHNsIDE2IGluXG4gIGxldCB4MyA9IChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzIpKSkgbHNsIDggaW5cbiAgbGV0IHg0ID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgcyAoaSszKSkgaW5cbiAgbGV0IGggPSBtYWtlX3NpZ25lZCAoeDEgbG9yIHgyIGxvciB4MyBsb3IgeDQpIGluXG5cbiAgY29udCBpYiBoIGhhc19hcmdcblxuXG5sZXQgcmVhZF9maWVsZF9oYXNodGFnIGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHgwID0gQ2hhci5jb2RlIChCeXRlcy51bnNhZmVfZ2V0IHMgaSkgaW5cbiAgaWYgeDAgPCAweDgwIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgZmllbGQgaGFzaHRhZylcIjtcbiAgbGV0IHgxID0gKHgwIGxhbmQgMHg3ZikgbHNsIDI0IGluXG4gIGxldCB4MiA9IChDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSsxKSkpIGxzbCAxNiBpblxuICBsZXQgeDMgPSAoQ2hhci5jb2RlIChCeXRlcy51bnNhZmVfZ2V0IHMgKGkrMikpKSBsc2wgOCBpblxuICBsZXQgeDQgPSBDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSszKSkgaW5cbiAgbWFrZV9zaWduZWQgKHgxIGxvciB4MiBsb3IgeDMgbG9yIHg0KVxuXG5cbnR5cGUgaW50NyA9IGludFxuXG5sZXQgd3JpdGVfbnVtdGFnIG9iIGkgaGFzX2FyZyA9XG4gIGlmIGkgPCAwIHx8IGkgPiAweDdmIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgbnVtdGFnKVwiO1xuICBsZXQgeCA9XG4gICAgaWYgaGFzX2FyZyB0aGVuIGkgbG9yIDB4ODBcbiAgICBlbHNlIGlcbiAgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociB4KVxuXG5sZXQgcmVhZF9udW10YWcgaWIgY29udCA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiAxIGluXG4gIGxldCB4ID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgaWIuaV9zIGkpIGluXG4gIGxldCBoYXNfYXJnID0geCA+PSAweDgwIGluXG4gIGNvbnQgaWIgKHggbGFuZCAweDdmKSBoYXNfYXJnXG5cbmxldCBtYWtlX3VuaGFzaCBsID1cbiAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICg0ICogTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4gcyAtPlxuICAgICAgbGV0IGggPSBoYXNoX25hbWUgcyBpblxuICAgICAgdHJ5XG5cdG1hdGNoIEhhc2h0YmwuZmluZCB0YmwgaCB3aXRoXG5cdCAgICBTb21lIHMnIC0+XG5cdCAgICAgIGlmIHMgPD4gcycgdGhlblxuXHRcdGZhaWx3aXRoIChcblx0XHQgIHNwcmludGZcblx0XHQgICAgXCJCaV9pby5tYWtlX3VuaGFzaDogXFxcbiAgICAgICAgICAgICAgICAgICAgICVTIGFuZCAlUyBoYXZlIHRoZSBzYW1lIGhhc2gsIHBsZWFzZSBwaWNrIGFub3RoZXIgbmFtZVwiXG5cdFx0ICAgIHMgcydcblx0XHQpXG5cdCAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiBIYXNodGJsLmFkZCB0YmwgaCAoU29tZSBzKVxuICApIGw7XG4gIGZ1biBoIC0+XG4gICAgdHJ5IEhhc2h0YmwuZmluZCB0YmwgaFxuICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuXG5sZXQgd3JpdGVfdGFnIG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIHgpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iICdcXHgwMCdcblxubGV0IHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoaWYgeCB0aGVuICdcXHgwMScgZWxzZSAnXFx4MDAnKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfY2hhciBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIHhcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDggb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgeClcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDE2IG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4IGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHggbGFuZCAweGZmKSlcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHggPVxuICBsZXQgaGlnaCA9IEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDE2KSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIChoaWdoIGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKGhpZ2ggbGFuZCAweGZmKSk7XG4gIGxldCBsb3cgPSBJbnQzMi50b19pbnQgeCBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgobG93IGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAobG93IGxhbmQgMHhmZikpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9mbG9hdDMyIG9iIHggPVxuICB3cml0ZV91bnRhZ2dlZF9pbnQzMiBvYiAoSW50MzIuYml0c19vZl9mbG9hdCB4KVxuXG5sZXQgZmxvYXRfZW5kaWFubmVzcyA9IGxhenkgKFxuICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCAoT2JqLm1hZ2ljIDEuMCkgMCB3aXRoXG4gICAgICAnXFx4M2YnIC0+IGBCaWdcbiAgICB8ICdcXHgwMCcgLT4gYExpdHRsZVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbilcblxubGV0IHJlYWRfdW50YWdnZWRfZmxvYXQ2NCBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA4IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmouZG91YmxlX3RhZyA4IGluXG4gIChtYXRjaCBMYXp5LmZvcmNlIGZsb2F0X2VuZGlhbm5lc3Mgd2l0aFxuICAgICAgIGBMaXR0bGUgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgKE9iai5vYmogeCkgKDctaikgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaStqKSlcblx0IGRvbmVcbiAgICAgfCBgQmlnIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IChPYmoub2JqIHgpIGogKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaStqKSlcblx0IGRvbmVcbiAgKTtcbiAgKE9iai5vYmogeCA6IGZsb2F0KVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4ID1cbiAgbGV0IGkgPSBCaV9vdXRidWYuYWxsb2Mgb2IgOCBpblxuICBsZXQgcyA9IG9iLm9fcyBpblxuICAobWF0Y2ggTGF6eS5mb3JjZSBmbG9hdF9lbmRpYW5uZXNzIHdpdGhcbiAgICAgICBgTGl0dGxlIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IHMgKGkraikgKFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgeCkgKDctaikpXG5cdCBkb25lXG4gICAgIHwgYEJpZyAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCBzIChpK2opIChTdHJpbmcudW5zYWZlX2dldCAoT2JqLm1hZ2ljIHgpIGopXG5cdCBkb25lXG4gIClcblxuKCpcbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4ID1cbiAgbGV0IHg0ID0gSW50NjQudG9faW50IChJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggNDgpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHg0IGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHg0IGxhbmQgMHhmZikpO1xuICBsZXQgeDMgPSBJbnQ2NC50b19pbnQgKEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAzMikgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoKHgzIGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDMgbGFuZCAweGZmKSk7XG4gIGxldCB4MiA9IEludDY0LnRvX2ludCAoSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDE2KSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDIgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MiBsYW5kIDB4ZmYpKTtcbiAgbGV0IHgxID0gSW50NjQudG9faW50IHggaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoKHgxIGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDEgbGFuZCAweGZmKSlcbiopXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4ID1cbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiAoSW50NjQuZmxvYXRfb2ZfYml0cyB4KVxuXG5cbmxldCBzYWZldHlfdGVzdCAoKSA9XG4gIGxldCBzID0gXCJcXHgzZlxceGYwXFx4MDZcXHgwNVxceDA0XFx4MDNcXHgwMlxceDAxXCIgaW5cbiAgbGV0IHggPSAxLjAwMTQ2OTYyNzA2NjUxMjg4IGluXG4gIGxldCB5ID0gcmVhZF91bnRhZ2dlZF9mbG9hdDY0IChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKSBpblxuICBpZiB4IDw+IHkgdGhlblxuICAgIGFzc2VydCBmYWxzZTtcbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSA4IGluXG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeDtcbiAgaWYgQmlfb3V0YnVmLmNvbnRlbnRzIG9iIDw+IHMgdGhlblxuICAgIGFzc2VydCBmYWxzZVxuXG5cblxubGV0IHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiBzID1cbiAgQmlfdmludC53cml0ZV91dmludCBvYiAoU3RyaW5nLmxlbmd0aCBzKTtcbiAgQmlfb3V0YnVmLmFkZF9zdHJpbmcgb2Igc1xuXG5sZXQgd3JpdGVfdW50YWdnZWRfdXZpbnQgPSBCaV92aW50LndyaXRlX3V2aW50XG5sZXQgd3JpdGVfdW50YWdnZWRfc3ZpbnQgPSBCaV92aW50LndyaXRlX3N2aW50XG5cbmxldCB3cml0ZV91bml0IG9iICgpID1cbiAgd3JpdGVfdGFnIG9iIHVuaXRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICB3cml0ZV90YWcgb2IgYm9vbF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeFxuXG5sZXQgd3JpdGVfY2hhciBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHhcblxubGV0IHdyaXRlX2ludDggb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQ4X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50OCBvYiB4XG5cbmxldCB3cml0ZV9pbnQxNiBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDE2X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeFxuXG5sZXQgd3JpdGVfaW50MzIgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQzMl90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHhcblxubGV0IHdyaXRlX2ludDY0IG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50NjRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4XG5cbmxldCB3cml0ZV9mbG9hdDMyIG9iIHggPVxuICB3cml0ZV90YWcgb2IgZmxvYXQzMl90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeFxuXG5sZXQgd3JpdGVfZmxvYXQ2NCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGZsb2F0NjRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHhcblxubGV0IHdyaXRlX3N0cmluZyBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHN0cmluZ190YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiB4XG5cbmxldCB3cml0ZV91dmludCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHV2aW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfdXZpbnQgb2IgeFxuXG5sZXQgd3JpdGVfc3ZpbnQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBzdmludF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3N2aW50IG9iIHhcblxuXG5cblxubGV0IHJlYyB3cml0ZV90IG9iIHRhZ2dlZCAoeCA6IHRyZWUpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgVW5pdCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB1bml0X3RhZztcblx0d3JpdGVfdW50YWdnZWRfdW5pdCBvYiAoKVxuXG4gICAgfCBgQm9vbCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGJvb2xfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9ib29sIG9iIHhcblxuICAgIHwgYEludDggeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQ4X3RhZztcblx0d3JpdGVfdW50YWdnZWRfY2hhciBvYiB4XG5cbiAgICB8IGBJbnQxNiB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDE2X3RhZztcblx0d3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeFxuXG4gICAgfCBgSW50MzIgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQzMl90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHhcblxuICAgIHwgYEludDY0IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50NjRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4XG5cbiAgICB8IGBGbG9hdDMyIHggLT5cbiAgICAgICAgaWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgZmxvYXQzMl90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeFxuXG4gICAgfCBgRmxvYXQ2NCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGZsb2F0NjRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHhcblxuICAgIHwgYFV2aW50IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdXZpbnRfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIHhcblxuICAgIHwgYFN2aW50IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2Igc3ZpbnRfdGFnO1xuXHRCaV92aW50LndyaXRlX3N2aW50IG9iIHhcblxuICAgIHwgYFN0cmluZyBzIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHN0cmluZ190YWc7XG5cdHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiBzXG5cbiAgICB8IGBBcnJheSBvIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGFycmF5X3RhZztcblx0KG1hdGNoIG8gd2l0aFxuXHQgICAgIE5vbmUgLT4gQmlfdmludC53cml0ZV91dmludCBvYiAwXG5cdCAgIHwgU29tZSAobm9kZV90YWcsIGEpIC0+XG5cdCAgICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cblx0ICAgICAgIEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgbGVuO1xuXHQgICAgICAgaWYgbGVuID4gMCB0aGVuIChcblx0XHQgd3JpdGVfdGFnIG9iIG5vZGVfdGFnO1xuXHRcdCBBcnJheS5pdGVyICh3cml0ZV90IG9iIGZhbHNlKSBhXG5cdCAgICAgICApXG5cdClcblxuICAgIHwgYFR1cGxlIGEgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdHVwbGVfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIChBcnJheS5sZW5ndGggYSk7XG5cdEFycmF5Lml0ZXIgKHdyaXRlX3Qgb2IgdHJ1ZSkgYVxuXG4gICAgfCBgUmVjb3JkIGEgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgcmVjb3JkX3RhZztcblx0QmlfdmludC53cml0ZV91dmludCBvYiAoQXJyYXkubGVuZ3RoIGEpO1xuICAgICAgICBBcnJheS5pdGVyICh3cml0ZV9maWVsZCBvYikgYVxuXG4gICAgfCBgTnVtX3ZhcmlhbnQgKGksIHgpIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIG51bV92YXJpYW50X3RhZztcblx0d3JpdGVfbnVtdGFnIG9iIGkgKHggPD4gTm9uZSk7XG5cdChtYXRjaCB4IHdpdGhcblx0ICAgICBOb25lIC0+ICgpXG5cdCAgIHwgU29tZSB2IC0+IHdyaXRlX3Qgb2IgdHJ1ZSB2KVxuXG4gICAgfCBgVmFyaWFudCAobywgaCwgeCkgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdmFyaWFudF90YWc7XG5cdHdyaXRlX2hhc2h0YWcgb2IgaCAoeCA8PiBOb25lKTtcblx0KG1hdGNoIHggd2l0aFxuXHQgICAgIE5vbmUgLT4gKClcblx0ICAgfCBTb21lIHYgLT4gd3JpdGVfdCBvYiB0cnVlIHYpXG5cbiAgICB8IGBUYWJsZSBvIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHRhYmxlX3RhZztcblx0KG1hdGNoIG8gd2l0aFxuXHQgICAgIE5vbmUgLT4gQmlfdmludC53cml0ZV91dmludCBvYiAwXG5cdCAgIHwgU29tZSAoZmllbGRzLCBhKSAtPlxuXHQgICAgICAgbGV0IHJvd19udW0gPSBBcnJheS5sZW5ndGggYSBpblxuXHQgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiByb3dfbnVtO1xuXHQgICAgICAgaWYgcm93X251bSA+IDAgdGhlblxuXHRcdCBsZXQgY29sX251bSA9IEFycmF5Lmxlbmd0aCBmaWVsZHMgaW5cblx0XHQgQmlfdmludC53cml0ZV91dmludCBvYiBjb2xfbnVtO1xuXHRcdCBBcnJheS5pdGVyIChcblx0XHQgICBmdW4gKG5hbWUsIGgsIHRhZykgLT5cblx0XHQgICAgIHdyaXRlX2hhc2h0YWcgb2IgaCB0cnVlO1xuXHRcdCAgICAgd3JpdGVfdGFnIG9iIHRhZ1xuXHRcdCApIGZpZWxkcztcblx0XHQgaWYgcm93X251bSA+IDAgdGhlbiAoXG5cdFx0ICAgZm9yIGkgPSAwIHRvIHJvd19udW0gLSAxIGRvXG5cdFx0ICAgICBsZXQgYWkgPSBhLihpKSBpblxuXHRcdCAgICAgaWYgQXJyYXkubGVuZ3RoIGFpIDw+IGNvbF9udW0gdGhlblxuXHRcdCAgICAgICBpbnZhbGlkX2FyZyBcIkJpX2lvLndyaXRlX3Q6IE1hbGZvcm1lZCBgVGFibGVcIjtcblx0XHQgICAgIGZvciBqID0gMCB0byBjb2xfbnVtIC0gMSBkb1xuXHRcdCAgICAgICB3cml0ZV90IG9iIGZhbHNlIGFpLihqKVxuXHRcdCAgICAgZG9uZVxuXHRcdCAgIGRvbmVcblx0XHQgKVxuXHQpXG5cbiAgICB8IGBTaGFyZWQgeCAtPlxuICAgICAgICBpZiB0YWdnZWQgdGhlblxuICAgICAgICAgIHdyaXRlX3RhZyBvYiBzaGFyZWRfdGFnO1xuICAgICAgICBsZXQgb2Zmc2V0ID1cbiAgICAgICAgICBCaV9zaGFyZS5Xci5wdXQgb2Iub19zaGFyZWRcbiAgICAgICAgICAgICh4LCBCaV9zaGFyZS5kdW1teV90eXBlX2lkKSAob2Iub19vZmZzICsgb2Iub19sZW4pIGluXG4gICAgICAgIEJpX3ZpbnQud3JpdGVfdXZpbnQgb2Igb2Zmc2V0O1xuICAgICAgICBpZiBvZmZzZXQgPSAwIHRoZW5cbiAgICAgICAgICB3cml0ZV90IG9iIHRydWUgeFxuXG5hbmQgd3JpdGVfZmllbGQgb2IgKHMsIGgsIHgpID1cbiAgd3JpdGVfaGFzaHRhZyBvYiBoIHRydWU7XG4gIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmxldCB3cml0ZV90cmVlIG9iIHggPVxuICB3cml0ZV90IG9iIHRydWUgeFxuXG5sZXQgc3RyaW5nX29mX3RyZWUgeCA9XG4gIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGUgMTAwMCBpblxuICB3cml0ZV90cmVlIG9iIHg7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBvYlxuXG5sZXQgdGFnX29mX3RyZWUgKHggOiB0cmVlKSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYFVuaXQgLT4gdW5pdF90YWdcbiAgICB8IGBCb29sIF8gLT4gYm9vbF90YWdcbiAgICB8IGBJbnQ4IF8gLT4gaW50OF90YWdcbiAgICB8IGBJbnQxNiBfIC0+IGludDE2X3RhZ1xuICAgIHwgYEludDMyIF8gLT4gaW50MzJfdGFnXG4gICAgfCBgSW50NjQgXyAtPiBpbnQ2NF90YWdcbiAgICB8IGBGbG9hdDMyIF8gLT4gZmxvYXQzMl90YWdcbiAgICB8IGBGbG9hdDY0IF8gLT4gZmxvYXQ2NF90YWdcbiAgICB8IGBVdmludCBfIC0+IHV2aW50X3RhZ1xuICAgIHwgYFN2aW50IF8gLT4gc3ZpbnRfdGFnXG4gICAgfCBgU3RyaW5nIF8gLT4gc3RyaW5nX3RhZ1xuICAgIHwgYEFycmF5IF8gLT4gYXJyYXlfdGFnXG4gICAgfCBgVHVwbGUgXyAtPiB0dXBsZV90YWdcbiAgICB8IGBSZWNvcmQgXyAtPiByZWNvcmRfdGFnXG4gICAgfCBgTnVtX3ZhcmlhbnQgXyAtPiBudW1fdmFyaWFudF90YWdcbiAgICB8IGBWYXJpYW50IF8gLT4gdmFyaWFudF90YWdcbiAgICB8IGBUYWJsZSBfIC0+IHRhYmxlX3RhZ1xuICAgIHwgYFNoYXJlZCBfIC0+IHNoYXJlZF90YWdcblxuXG5sZXQgcmVhZF90YWcgaWIgPVxuICBDaGFyLmNvZGUgKEJpX2luYnVmLnJlYWRfY2hhciBpYilcblxubGV0IHJlYWRfdW50YWdnZWRfdW5pdCBpYiA9XG4gIG1hdGNoIEJpX2luYnVmLnJlYWRfY2hhciBpYiB3aXRoXG4gICAgICAnXFx4MDAnIC0+ICgpXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAodW5pdCB2YWx1ZSlcIlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9ib29sIGliID1cbiAgbWF0Y2ggQmlfaW5idWYucmVhZF9jaGFyIGliIHdpdGhcbiAgICAgICdcXHgwMCcgLT4gZmFsc2VcbiAgICB8ICdcXHgwMScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGJvb2wgdmFsdWUpXCJcblxubGV0IHJlYWRfdW50YWdnZWRfY2hhciBpYiA9IEJpX2luYnVmLnJlYWRfY2hhciBpYlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ4IGliID1cbiAgQ2hhci5jb2RlIChCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIpXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDE2IGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDIgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgKChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzEpKSlcblxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQzMiBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA0IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCBnZXRfY29kZSBzIGkgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpIGluXG4gIGxldCB4MSA9XG4gICAgSW50MzIub2ZfaW50ICgoKGdldF9jb2RlIHMgKGkgICkpIGxzbCA4KSBsb3IgKGdldF9jb2RlIHMgKGkrMSkpKSBpblxuICBsZXQgeDIgPVxuICAgIEludDMyLm9mX2ludCAoKChnZXRfY29kZSBzIChpKzIpKSBsc2wgOCkgbG9yIChnZXRfY29kZSBzIChpKzMpKSkgaW5cbiAgSW50MzIubG9nb3IgKEludDMyLnNoaWZ0X2xlZnQgeDEgMTYpIHgyXG5cbmxldCByZWFkX3VudGFnZ2VkX2Zsb2F0MzIgaWIgPVxuICBJbnQzMi5mbG9hdF9vZl9iaXRzIChyZWFkX3VudGFnZ2VkX2ludDMyIGliKVxuXG4oKlxubGV0IHJlYWRfdW50YWdnZWRfaW50NjQgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgOCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDEgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSAgXSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krMV0pKSBpblxuICBsZXQgeDIgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSsyXSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krM10pKSBpblxuICBsZXQgeDMgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSs0XSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krNV0pKSBpblxuICBsZXQgeDQgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSs2XSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krN10pKSBpblxuICBJbnQ2NC5sb2dvciAoSW50NjQuc2hpZnRfbGVmdCB4MSA0OClcbiAgICAoSW50NjQubG9nb3IgKEludDY0LnNoaWZ0X2xlZnQgeDIgMzIpXG4gICAgICAgKEludDY0LmxvZ29yIChJbnQ2NC5zaGlmdF9sZWZ0IHgzIDE2KSB4NCkpXG4qKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ2NCBpYiA9XG4gIEludDY0LmJpdHNfb2ZfZmxvYXQgKHJlYWRfdW50YWdnZWRfZmxvYXQ2NCBpYilcblxuXG5cbmxldCByZWFkX3VudGFnZ2VkX3N0cmluZyBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCByZW0gPSByZWYgbGVuIGluXG4gIHdoaWxlICFyZW0gPiAwIGRvXG4gICAgbGV0IGJ5dGVzX3JlYWQgPSBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiAhcmVtIGluXG4gICAgaWYgYnl0ZXNfcmVhZCA9IDAgdGhlblxuICAgICAgQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChzdHJpbmcpXCJcbiAgICBlbHNlIChcbiAgICAgIEJ5dGVzLmJsaXQgaWIuaV9zIGliLmlfcG9zIHN0ciAhcG9zIGJ5dGVzX3JlYWQ7XG4gICAgICBpYi5pX3BvcyA8LSBpYi5pX3BvcyArIGJ5dGVzX3JlYWQ7XG4gICAgICBwb3MgOj0gIXBvcyArIGJ5dGVzX3JlYWQ7XG4gICAgICByZW0gOj0gIXJlbSAtIGJ5dGVzX3JlYWRcbiAgICApXG4gIGRvbmU7XG4gIEJ5dGVzLnRvX3N0cmluZyBzdHJcblxubGV0IHJlYWRfdW50YWdnZWRfdXZpbnQgPSBCaV92aW50LnJlYWRfdXZpbnRcbmxldCByZWFkX3VudGFnZ2VkX3N2aW50ID0gQmlfdmludC5yZWFkX3N2aW50XG5cbmxldCByZWFkX3VuaXQgaWIgPSByZWFkX3VudGFnZ2VkX3VuaXQgaWI7IGBVbml0XG5cbmxldCByZWFkX2Jvb2wgaWIgPSBgQm9vbCAocmVhZF91bnRhZ2dlZF9ib29sIGliKVxuXG5sZXQgcmVhZF9pbnQ4IGliID0gYEludDggKHJlYWRfdW50YWdnZWRfY2hhciBpYilcblxubGV0IHJlYWRfaW50MTYgaWIgPSBgSW50MTYgKHJlYWRfdW50YWdnZWRfaW50MTYgaWIpXG5cbmxldCByZWFkX2ludDMyIGliID0gYEludDMyIChyZWFkX3VudGFnZ2VkX2ludDMyIGliKVxuXG5sZXQgcmVhZF9pbnQ2NCBpYiA9IGBJbnQ2NCAocmVhZF91bnRhZ2dlZF9pbnQ2NCBpYilcblxubGV0IHJlYWRfZmxvYXQzMiBpYiA9XG4gIGBGbG9hdDMyIChyZWFkX3VudGFnZ2VkX2Zsb2F0MzIgaWIpXG5cbmxldCByZWFkX2Zsb2F0NjQgaWIgPVxuICBgRmxvYXQ2NCAocmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliKVxuXG5sZXQgcmVhZF91dmludCBpYiA9IGBVdmludCAocmVhZF91bnRhZ2dlZF91dmludCBpYilcbmxldCByZWFkX3N2aW50IGliID0gYFN2aW50IChyZWFkX3VudGFnZ2VkX3N2aW50IGliKVxuXG5sZXQgcmVhZF9zdHJpbmcgaWIgPSBgU3RyaW5nIChyZWFkX3VudGFnZ2VkX3N0cmluZyBpYilcblxubGV0IHByaW50IHMgPSBwcmludF9zdHJpbmcgczsgcHJpbnRfbmV3bGluZSAoKVxuXG5sZXQgcmVhZF90cmVlID8odW5oYXNoID0gbWFrZV91bmhhc2ggW10pIGliIDogdHJlZSA9XG5cbiAgbGV0IHJlYyByZWFkX2FycmF5IGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgaWYgbGVuID0gMCB0aGVuIGBBcnJheSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG4gICAgICBsZXQgcmVhZCA9IHJlYWRlcl9vZl90YWcgdGFnIGluXG4gICAgICBgQXJyYXkgKFNvbWUgKHRhZywgQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWQgaWIpKSlcblxuICBhbmQgcmVhZF90dXBsZSBpYiA9XG4gICAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGBUdXBsZSAoQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWRfdHJlZSBpYikpXG5cbiAgYW5kIHJlYWRfZmllbGQgaWIgPVxuICAgIGxldCBoID0gcmVhZF9maWVsZF9oYXNodGFnIGliIGluXG4gICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuICAgIGxldCB4ID0gcmVhZF90cmVlIGliIGluXG4gICAgKG5hbWUsIGgsIHgpXG5cbiAgYW5kIHJlYWRfcmVjb3JkIGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgYFJlY29yZCAoQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWRfZmllbGQgaWIpKVxuXG4gIGFuZCByZWFkX251bV92YXJpYW50X2NvbnQgaWIgaSBoYXNfYXJnID1cbiAgICBsZXQgeCA9XG4gICAgICBpZiBoYXNfYXJnIHRoZW5cblx0U29tZSAocmVhZF90cmVlIGliKVxuICAgICAgZWxzZVxuXHROb25lXG4gICAgaW5cbiAgICBgTnVtX3ZhcmlhbnQgKGksIHgpXG5cbiAgYW5kIHJlYWRfbnVtX3ZhcmlhbnQgaWIgPVxuICAgIHJlYWRfbnVtdGFnIGliIHJlYWRfbnVtX3ZhcmlhbnRfY29udFxuXG4gIGFuZCByZWFkX3ZhcmlhbnRfY29udCBpYiBoIGhhc19hcmcgPVxuICAgIGxldCBuYW1lID0gdW5oYXNoIGggaW5cbiAgICBsZXQgeCA9XG4gICAgICBpZiBoYXNfYXJnIHRoZW5cblx0U29tZSAocmVhZF90cmVlIGliKVxuICAgICAgZWxzZVxuXHROb25lXG4gICAgaW5cbiAgICBgVmFyaWFudCAobmFtZSwgaCwgeClcblxuICBhbmQgcmVhZF92YXJpYW50IGliID1cbiAgICByZWFkX2hhc2h0YWcgaWIgcmVhZF92YXJpYW50X2NvbnRcblxuICBhbmQgcmVhZF90YWJsZSBpYiA9XG4gICAgbGV0IHJvd19udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiByb3dfbnVtID0gMCB0aGVuXG4gICAgICBgVGFibGUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBjb2xfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgICBsZXQgZmllbGRzID1cblx0QXJyYXkuaW5pdCBjb2xfbnVtIChcblx0ICBmdW4gXyAtPlxuXHQgICAgbGV0IGggPSByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgaW5cblx0ICAgIGxldCBuYW1lID0gdW5oYXNoIGggaW5cblx0ICAgIGxldCB0YWcgPSByZWFkX3RhZyBpYiBpblxuXHQgICAgKG5hbWUsIGgsIHRhZylcblx0KVxuICAgICAgaW5cbiAgICAgIGxldCByZWFkZXJzID1cblx0QXJyYXkubWFwIChmdW4gKG5hbWUsIGgsIHRhZykgLT4gcmVhZGVyX29mX3RhZyB0YWcpIGZpZWxkcyBpblxuICAgICAgbGV0IGEgPVxuXHRBcnJheS5pbml0IHJvd19udW1cblx0ICAoZnVuIF8gLT5cblx0ICAgICBBcnJheS5pbml0IGNvbF9udW0gKGZ1biBqIC0+IHJlYWRlcnMuKGopIGliKSlcbiAgICAgIGluXG4gICAgICBgVGFibGUgKFNvbWUgKGZpZWxkcywgYSkpXG5cbiAgYW5kIHJlYWRfc2hhcmVkIGliID1cbiAgICBsZXQgcG9zID0gaWIuaV9vZmZzICsgaWIuaV9wb3MgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgaWYgb2Zmc2V0ID0gMCB0aGVuXG4gICAgICBsZXQgcmVjIHIgPSBgU2hhcmVkIHIgaW5cbiAgICAgIEJpX3NoYXJlLlJkLnB1dCBpYi5pX3NoYXJlZFxuICAgICAgICAocG9zLCBCaV9zaGFyZS5kdW1teV90eXBlX2lkKSAoT2JqLnJlcHIgcik7XG4gICAgICBsZXQgeCA9IHJlYWRfdHJlZSBpYiBpblxuICAgICAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgcikgMSAoT2JqLnJlcHIgeCk7XG4gICAgICByXG4gICAgZWxzZVxuICAgICAgT2JqLm9iaiAoQmlfc2hhcmUuUmQuZ2V0IGliLmlfc2hhcmVkXG4gICAgICAgICAgICAgICAgIChwb3MgLSBvZmZzZXQsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpKVxuXG4gIGFuZCByZWFkZXJfb2ZfdGFnID0gZnVuY3Rpb25cbiAgICAgIDAgKCogYm9vbCAqKSAtPiByZWFkX2Jvb2xcbiAgICB8IDEgKCogaW50OCAqKSAtPiByZWFkX2ludDhcbiAgICB8IDIgKCogaW50MTYgKikgLT4gcmVhZF9pbnQxNlxuICAgIHwgMyAoKiBpbnQzMiAqKSAtPiByZWFkX2ludDMyXG4gICAgfCA0ICgqIGludDY0ICopIC0+IHJlYWRfaW50NjRcbiAgICB8IDExICgqIGZsb2F0MzIgKikgLT4gcmVhZF9mbG9hdDMyXG4gICAgfCAxMiAoKiBmbG9hdDY0ICopIC0+IHJlYWRfZmxvYXQ2NFxuICAgIHwgMTYgKCogdXZpbnQgKikgLT4gcmVhZF91dmludFxuICAgIHwgMTcgKCogc3ZpbnQgKikgLT4gcmVhZF9zdmludFxuICAgIHwgMTggKCogc3RyaW5nICopIC0+IHJlYWRfc3RyaW5nXG4gICAgfCAxOSAoKiBhcnJheSAqKSAtPiByZWFkX2FycmF5XG4gICAgfCAyMCAoKiB0dXBsZSAqKSAtPiByZWFkX3R1cGxlXG4gICAgfCAyMSAoKiByZWNvcmQgKikgLT4gcmVhZF9yZWNvcmRcbiAgICB8IDIyICgqIG51bV92YXJpYW50ICopIC0+IHJlYWRfbnVtX3ZhcmlhbnRcbiAgICB8IDIzICgqIHZhcmlhbnQgKikgLT4gcmVhZF92YXJpYW50XG4gICAgfCAyNCAoKiB1bml0ICopIC0+IHJlYWRfdW5pdFxuICAgIHwgMjUgKCogdGFibGUgKikgLT4gcmVhZF90YWJsZVxuICAgIHwgMjYgKCogc2hhcmVkICopIC0+IHJlYWRfc2hhcmVkXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCB0YWcpXCJcblxuICBhbmQgcmVhZF90cmVlIGliIDogdHJlZSA9XG4gICAgcmVhZGVyX29mX3RhZyAocmVhZF90YWcgaWIpIGliXG5cbiAgaW5cbiAgcmVhZF90cmVlIGliXG5cbmxldCB0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMgPSByZWFkX3RyZWUgP3VuaGFzaCAoQmlfaW5idWYuZnJvbV9zdHJpbmcgcylcblxuXG5sZXQgc2tpcF9ieXRlcyBpYiBuID0gaWdub3JlIChCaV9pbmJ1Zi5yZWFkIGliIG4pXG5cbmxldCBza2lwX3VuaXQgaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2Jvb2wgaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2ludDggaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2ludDE2IGliID0gc2tpcF9ieXRlcyBpYiAyXG5sZXQgc2tpcF9pbnQzMiBpYiA9IHNraXBfYnl0ZXMgaWIgNFxubGV0IHNraXBfaW50NjQgaWIgPSBza2lwX2J5dGVzIGliIDhcbmxldCBza2lwX2Zsb2F0MzIgaWIgPSBza2lwX2J5dGVzIGliIDRcbmxldCBza2lwX2Zsb2F0NjQgaWIgPSBza2lwX2J5dGVzIGliIDhcbmxldCBza2lwX3V2aW50IGliID0gaWdub3JlIChyZWFkX3VudGFnZ2VkX3V2aW50IGliKVxubGV0IHNraXBfc3ZpbnQgaWIgPSBpZ25vcmUgKHJlYWRfdW50YWdnZWRfc3ZpbnQgaWIpXG5cbmxldCBza2lwX3N0cmluZyBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgc2tpcF9ieXRlcyBpYiBsZW5cblxubGV0IHJlYyBza2lwX2FycmF5IGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiBsZW4gPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCB0YWcgPSByZWFkX3RhZyBpYiBpblxuICAgIGxldCByZWFkID0gc2tpcHBlcl9vZl90YWcgdGFnIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiBkb1xuICAgICAgcmVhZCBpYlxuICAgIGRvbmVcblxuYW5kIHNraXBfdHVwbGUgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGZvciBpID0gMSB0byBsZW4gZG9cbiAgICBza2lwIGliXG4gIGRvbmVcblxuYW5kIHNraXBfZmllbGQgaWIgPVxuICBpZ25vcmUgKHJlYWRfZmllbGRfaGFzaHRhZyBpYik7XG4gIHNraXAgaWJcblxuYW5kIHNraXBfcmVjb3JkIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBmb3IgaSA9IDEgdG8gbGVuIGRvXG4gICAgc2tpcF9maWVsZCBpYlxuICBkb25lXG5cbmFuZCBza2lwX251bV92YXJpYW50X2NvbnQgaWIgaSBoYXNfYXJnID1cbiAgaWYgaGFzX2FyZyB0aGVuXG4gICAgc2tpcCBpYlxuXG5hbmQgc2tpcF9udW1fdmFyaWFudCBpYiA9XG4gIHJlYWRfbnVtdGFnIGliIHNraXBfbnVtX3ZhcmlhbnRfY29udFxuXG5hbmQgc2tpcF92YXJpYW50X2NvbnQgaWIgaCBoYXNfYXJnID1cbiAgaWYgaGFzX2FyZyB0aGVuXG4gICAgc2tpcCBpYlxuXG5hbmQgc2tpcF92YXJpYW50IGliID1cbiAgcmVhZF9oYXNodGFnIGliIHNraXBfdmFyaWFudF9jb250XG5cbmFuZCBza2lwX3RhYmxlIGliID1cbiAgbGV0IHJvd19udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgaWYgcm93X251bSA9IDAgdGhlblxuICAgICgpXG4gIGVsc2VcbiAgICBsZXQgY29sX251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGxldCByZWFkZXJzID1cbiAgICAgIEFycmF5LmluaXQgY29sX251bSAoXG5cdGZ1biBfIC0+XG5cdCAgaWdub3JlIChyZWFkX2ZpZWxkX2hhc2h0YWcgaWIpO1xuXHQgIHNraXBwZXJfb2ZfdGFnIChyZWFkX3RhZyBpYilcbiAgICAgIClcbiAgICBpblxuICAgIGZvciBpID0gMSB0byByb3dfbnVtIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gY29sX251bSBkb1xuXHRyZWFkZXJzLihqKSBpYlxuICAgICAgZG9uZVxuICAgIGRvbmVcblxuYW5kIHNraXBwZXJfb2ZfdGFnID0gZnVuY3Rpb25cbiAgICAwICgqIGJvb2wgKikgLT4gc2tpcF9ib29sXG4gIHwgMSAoKiBpbnQ4ICopIC0+IHNraXBfaW50OFxuICB8IDIgKCogaW50MTYgKikgLT4gc2tpcF9pbnQxNlxuICB8IDMgKCogaW50MzIgKikgLT4gc2tpcF9pbnQzMlxuICB8IDQgKCogaW50NjQgKikgLT4gc2tpcF9pbnQ2NFxuICB8IDExICgqIGZsb2F0MzIgKikgLT4gc2tpcF9mbG9hdDMyXG4gIHwgMTIgKCogZmxvYXQ2NCAqKSAtPiBza2lwX2Zsb2F0NjRcbiAgfCAxNiAoKiB1dmludCAqKSAtPiBza2lwX3V2aW50XG4gIHwgMTcgKCogc3ZpbnQgKikgLT4gc2tpcF9zdmludFxuICB8IDE4ICgqIHN0cmluZyAqKSAtPiBza2lwX3N0cmluZ1xuICB8IDE5ICgqIGFycmF5ICopIC0+IHNraXBfYXJyYXlcbiAgfCAyMCAoKiB0dXBsZSAqKSAtPiBza2lwX3R1cGxlXG4gIHwgMjEgKCogcmVjb3JkICopIC0+IHNraXBfcmVjb3JkXG4gIHwgMjIgKCogbnVtX3ZhcmlhbnQgKikgLT4gc2tpcF9udW1fdmFyaWFudFxuICB8IDIzICgqIHZhcmlhbnQgKikgLT4gc2tpcF92YXJpYW50XG4gIHwgMjQgKCogdW5pdCAqKSAtPiBza2lwX3VuaXRcbiAgfCAyNSAoKiB0YWJsZSAqKSAtPiBza2lwX3RhYmxlXG4gIHwgXyAtPiBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgdGFnKVwiXG5cbmFuZCBza2lwIGliIDogdW5pdCA9XG4gIHNraXBwZXJfb2ZfdGFnIChyZWFkX3RhZyBpYikgaWJcblxuXG4oKiBFcXVpdmFsZW50IG9mIEFycmF5Lm1hcCB0aGF0IGd1YXJhbnRlZXMgYSBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG5sZXQgYXJyYXlfbWFwIGYgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBpZiBsZW4gPSAwIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgciA9IEFycmF5Lm1ha2UgbGVuIChmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIClcblxuXG5tb2R1bGUgUHAgPVxuc3RydWN0XG4gIG9wZW4gRWFzeV9mb3JtYXRcblxuICBsZXQgYXJyYXkgPSBsaXN0XG4gIGxldCByZWNvcmQgPSBsaXN0XG4gIGxldCB0dXBsZSA9IHsgbGlzdCB3aXRoXG5cdFx0ICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gZmFsc2U7XG5cdFx0ICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IGZhbHNlO1xuXHRcdCAgYWxpZ25fY2xvc2luZyA9IGZhbHNlIH1cbiAgbGV0IHZhcmlhbnQgPSB7IGxpc3Qgd2l0aFxuXHRcdCAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlIH1cblxuICBsZXQgbWFwIGYgYSA9IEFycmF5LnRvX2xpc3QgKGFycmF5X21hcCBmIGEpXG5cbiAgbGV0IHJlYyBmb3JtYXQgc2hhcmVkICh4IDogdHJlZSkgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgICBgVW5pdCAtPiBBdG9tIChcInVuaXRcIiwgYXRvbSlcbiAgICAgIHwgYEJvb2wgeCAtPiBBdG9tICgoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKSwgYXRvbSlcbiAgICAgIHwgYEludDggeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDJ4XCIgKENoYXIuY29kZSB4KSwgYXRvbSlcbiAgICAgIHwgYEludDE2IHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTA0eFwiIHgsIGF0b20pXG4gICAgICB8IGBJbnQzMiB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwOGx4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEludDY0IHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTAxNkx4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEZsb2F0MzIgeCAtPiBBdG9tIChzdHJpbmdfb2ZfZmxvYXQgeCwgYXRvbSlcbiAgICAgIHwgYEZsb2F0NjQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfZmxvYXQgeCwgYXRvbSlcbiAgICAgIHwgYFV2aW50IHggLT4gQXRvbSAoc3RyaW5nX29mX2ludCB4LCBhdG9tKVxuICAgICAgfCBgU3ZpbnQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfaW50IHgsIGF0b20pXG4gICAgICB8IGBTdHJpbmcgcyAtPiBBdG9tIChzcHJpbnRmIFwiJVNcIiBzLCBhdG9tKVxuICAgICAgfCBgQXJyYXkgTm9uZSAtPiBBdG9tIChcIltdXCIsIGF0b20pXG4gICAgICB8IGBBcnJheSAoU29tZSAoXywgYSkpIC0+XG4gICAgICAgICAgTGlzdCAoKFwiW1wiLCBcIixcIiwgXCJdXCIsIGFycmF5KSwgbWFwIChmb3JtYXQgc2hhcmVkKSBhKVxuICAgICAgfCBgVHVwbGUgYSAtPiBMaXN0ICgoXCIoXCIsIFwiLFwiLCBcIilcIiwgdHVwbGUpLCBtYXAgKGZvcm1hdCBzaGFyZWQpIGEpXG4gICAgICB8IGBSZWNvcmQgYSAtPiBMaXN0ICgoXCJ7XCIsIFwiLFwiLCBcIn1cIiwgcmVjb3JkKSwgbWFwIChmb3JtYXRfZmllbGQgc2hhcmVkKSBhKVxuICAgICAgfCBgTnVtX3ZhcmlhbnQgKGksIG8pIC0+XG5cdCAgbGV0IHN1ZmZpeCA9XG5cdCAgICBpZiBpID0gMCB0aGVuIFwiXCJcblx0ICAgIGVsc2Ugc3RyaW5nX29mX2ludCBpXG5cdCAgaW5cblx0ICAobWF0Y2ggbyB3aXRoXG5cdCAgICAgICBOb25lIC0+IEF0b20gKFwiTm9uZVwiIF4gc3VmZml4LCBhdG9tKVxuXHQgICAgIHwgU29tZSB4IC0+XG5cdFx0IGxldCBjb25zID0gQXRvbSAoXCJTb21lXCIgXiBzdWZmaXgsIGF0b20pIGluXG5cdFx0IExhYmVsICgoY29ucywgbGFiZWwpLCBmb3JtYXQgc2hhcmVkIHgpKVxuICAgICAgfCBgVmFyaWFudCAob3B0X25hbWUsIGgsIG8pIC0+XG5cdCAgbGV0IG5hbWUgPVxuXHQgICAgbWF0Y2ggb3B0X25hbWUgd2l0aFxuXHRcdE5vbmUgLT4gc3ByaW50ZiBcIiMlMDhseFwiIChJbnQzMi5vZl9pbnQgaClcblx0ICAgICAgfCBTb21lIHMgLT4gc3ByaW50ZiBcIiVTXCIgc1xuXHQgIGluXG5cdCAgKG1hdGNoIG8gd2l0aFxuXHQgICAgICAgTm9uZSAtPiBBdG9tIChcIjxcIiBeIG5hbWUgXiBcIj5cIiwgYXRvbSlcblx0ICAgICB8IFNvbWUgeCAtPlxuXHRcdCBMaXN0ICgoXCI8XCIsIFwiXCIsIFwiPlwiLCB0dXBsZSksXG4gICAgICAgICAgICAgICAgICAgICAgIFsgTGFiZWwgKChBdG9tIChuYW1lIF4gXCI6XCIsIGF0b20pLCBsYWJlbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCBzaGFyZWQgeCkgXSlcblx0ICApXG4gICAgICB8IGBUYWJsZSBOb25lIC0+IEF0b20gKFwiW11cIiwgYXRvbSlcbiAgICAgIHwgYFRhYmxlIChTb21lIChoZWFkZXIsIGFhKSkgLT5cblx0ICBsZXQgcmVjb3JkX2FycmF5ID1cblx0ICAgIGBBcnJheSAoXG5cdCAgICAgIFNvbWUgKFxuXHRcdHJlY29yZF90YWcsXG5cdFx0QXJyYXkubWFwIChcblx0XHQgIGZ1biBhIC0+XG5cdFx0ICAgIGBSZWNvcmQgKFxuXHRcdCAgICAgIEFycmF5Lm1hcGkgKFxuXHRcdFx0ZnVuIGkgeCAtPlxuXHRcdFx0ICBsZXQgcywgaCwgXyA9IGhlYWRlci4oaSkgaW5cblx0XHRcdCAgKHMsIGgsIHgpXG5cdFx0ICAgICAgKSBhXG5cdFx0ICAgIClcblx0XHQpIGFhXG5cdCAgICAgIClcblx0ICAgICkgaW5cblx0ICBmb3JtYXQgc2hhcmVkIHJlY29yZF9hcnJheVxuXG4gICAgICB8IGBTaGFyZWQgeCAtPlxuICAgICAgICAgIGxldCB0YmwsIHAgPSBzaGFyZWQgaW5cbiAgICAgICAgICBpbmNyIHA7XG4gICAgICAgICAgbGV0IHBvcyA9ICFwIGluXG4gICAgICAgICAgbGV0IG9mZnNldCA9IEJpX3NoYXJlLldyLnB1dCB0YmwgKHgsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIHBvcyBpblxuICAgICAgICAgIGlmIG9mZnNldCA9IDAgdGhlblxuICAgICAgICAgICAgTGFiZWwgKChBdG9tIChzcHJpbnRmIFwic2hhcmVkJWkgLT5cIiBwb3MsIGF0b20pLCBsYWJlbCksXG4gICAgICAgICAgICAgICAgICAgZm9ybWF0IHNoYXJlZCB4KVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEF0b20gKHNwcmludGYgXCJzaGFyZWQlaVwiIChwb3MgLSBvZmZzZXQpLCBhdG9tKVxuXG4gIGFuZCBmb3JtYXRfZmllbGQgc2hhcmVkIChvLCBoLCB4KSA9XG4gICAgbGV0IHMgPVxuICAgICAgbWF0Y2ggbyB3aXRoXG5cdCAgTm9uZSAtPiBzcHJpbnRmIFwiIyUwOGx4XCIgKEludDMyLm9mX2ludCBoKVxuXHR8IFNvbWUgcyAtPiBzcHJpbnRmIFwiJVNcIiBzXG4gICAgaW5cbiAgICBMYWJlbCAoKEF0b20gKHNwcmludGYgXCIlczpcIiBzLCBhdG9tKSwgbGFiZWwpLCBmb3JtYXQgc2hhcmVkIHgpXG5lbmRcblxubGV0IGluaXQgKCkgPSAoQmlfc2hhcmUuV3IuY3JlYXRlIDUxMiwgcmVmIDApXG5cbmxldCB2aWV3X29mX3RyZWUgdCA9XG4gIEVhc3lfZm9ybWF0LlByZXR0eS50b19zdHJpbmcgKFBwLmZvcm1hdCAoaW5pdCAoKSkgdClcblxubGV0IHByaW50X3ZpZXdfb2ZfdHJlZSB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX3N0ZG91dCAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgb3V0cHV0X3ZpZXdfb2ZfdHJlZSBvYyB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX2NoYW5uZWwgb2MgKFBwLmZvcm1hdCAoaW5pdCAoKSkgdClcblxubGV0IHZpZXcgP3VuaGFzaCBzID1cbiAgdmlld19vZl90cmVlICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG5cbmxldCBwcmludF92aWV3ID91bmhhc2ggcyA9XG4gIHByaW50X3ZpZXdfb2ZfdHJlZSAodHJlZV9vZl9zdHJpbmcgP3VuaGFzaCBzKVxuXG5sZXQgb3V0cHV0X3ZpZXcgP3VuaGFzaCBvYyBzID1cbiAgb3V0cHV0X3ZpZXdfb2ZfdHJlZSBvYyAodHJlZV9vZl9zdHJpbmcgP3VuaGFzaCBzKVxuIiwib3BlbiBQcmludGZcblxuKCpcbmxldCBzcGxpdCBzID0gU3RyLnNwbGl0IChTdHIucmVnZXhwIFwiLFwiKSBzXG4qKVxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgbGV0IHN0b3AgPSByZWYgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgZm9yIGkgPSAhc3RvcCAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiBzLltpXSA9ICcsJyB0aGVuIChcbiAgICAgIGxldCBzdGFydCA9IGkgKyAxIGluXG4gICAgICBhY2MgOj0gU3RyaW5nLnN1YiBzIHN0YXJ0ICghc3RvcCAtIHN0YXJ0KSA6OiAhYWNjO1xuICAgICAgc3RvcCA6PSBpXG4gICAgKVxuICBkb25lO1xuICBTdHJpbmcuc3ViIHMgMCAhc3RvcCA6OiAhYWNjXG5cblxubGV0IGxvYWRfbGluZXMgYWNjdSBzID1cbiAgbGV0IGljID0gb3Blbl9pbiBzIGluXG4gIGxldCBsID0gcmVmIGFjY3UgaW5cbiAgKHRyeVxuICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgbCA6PSBpbnB1dF9saW5lIGljIDo6IExpc3QucmV2ICFsXG4gICAgIGRvbmVcbiAgIHdpdGggRW5kX29mX2ZpbGUgLT5cbiAgICAgY2xvc2VfaW4gaWNcbiAgKTtcbiAgIWxcblxubGV0IGxvYWQgaWMgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMDAwIGluXG4gIHRyeVxuICAgIHdoaWxlIHRydWUgZG9cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKGlucHV0X2NoYXIgaWMpO1xuICAgIGRvbmU7XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHdpdGggRW5kX29mX2ZpbGUgLT5cbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCAoIC8vICkgPSBGaWxlbmFtZS5jb25jYXRcblxubGV0IGRlZmF1bHRfZGljdF9wYXRoICgpID1cbiAgdHJ5XG4gICAgbWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgICBcIlVuaXhcIiAtPiBTb21lIChTeXMuZ2V0ZW52IFwiSE9NRVwiIC8vIFwiLmJkdW1wLWRpY3RcIilcbiAgICAgIHwgXCJXaW4zMlwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FUEFUSFwiIC8vIFwiX2JkdW1wLWRpY3RcIilcbiAgICAgIHwgXCJDeWd3aW5cIiAtPiBTb21lIChTeXMuZ2V0ZW52IFwiSE9NRVwiIC8vIFwiLmJkdW1wLWRpY3RcIilcbiAgICAgIHwgXyAtPiBOb25lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgTm9uZVxuXG5sZXQgbG9hZF9kaWN0aW9uYXJ5IGRpY19maWxlIGFjY3UgPVxuICBtYXRjaCBkaWNfZmlsZSB3aXRoXG4gICAgICBOb25lIC0+IGFjY3VcbiAgICB8IFNvbWUgZm4gLT5cbiAgICAgICAgaWYgU3lzLmZpbGVfZXhpc3RzIGZuIHRoZW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxvYWRfbGluZXMgYWNjdSBmblxuICAgICAgICAgIHdpdGggZSAtPlxuICAgICAgICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJDYW5ub3QgbG9hZCBkaWN0aW9uYXJ5IGZyb20gJVM6ICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm4gKFByaW50ZXhjLnRvX3N0cmluZyBlKSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjY3VcblxubGV0IHdyaXRlX3VuaXEgb2MgYSA9XG4gIGlmIEFycmF5Lmxlbmd0aCBhID4gMCB0aGVuIChcbiAgICBmcHJpbnRmIG9jIFwiJXNcXG5cIiBhLigwKTtcbiAgICBpZ25vcmUgKFxuICAgICAgQXJyYXkuZm9sZF9sZWZ0IChcbiAgICAgICAgZnVuIGxhc3QgeCAtPlxuICAgICAgICAgIGlmIGxhc3QgPD4geCB0aGVuXG4gICAgICAgICAgICBmcHJpbnRmIG9jIFwiJXNcXG5cIiB4O1xuICAgICAgICAgIHhcbiAgICAgICkgYS4oMCkgYVxuICAgIClcbiAgKVxuXG5sZXQgc2F2ZV9kaWN0aW9uYXJ5IGRpY19maWxlIGwgPVxuICBtYXRjaCBkaWNfZmlsZSB3aXRoXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIGZuIC0+XG4gICAgICAgIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gICAgICAgIEFycmF5LnNvcnQgU3RyaW5nLmNvbXBhcmUgYTtcbiAgICAgICAgbGV0IG9jID0gb3Blbl9vdXQgZm4gaW5cbiAgICAgICAgbGV0IGZpbmFsbHkgKCkgPSBjbG9zZV9vdXRfbm9lcnIgb2MgaW5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgd3JpdGVfdW5pcSBvYyBhO1xuICAgICAgICAgIGZpbmFsbHkgKClcbiAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgZmluYWxseSAoKTtcbiAgICAgICAgICByYWlzZSBlXG4iLCIjIDEgXCJjb21tb24ubWxcIlxubGV0IHZlcnNpb24gPSBcIjIuMS4wXCJcblxuZXhjZXB0aW9uIEpzb25fZXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBqc29uX2Vycm9yIHMgPSByYWlzZSAoSnNvbl9lcnJvciBzKVxuXG5leGNlcHRpb24gRW5kX29mX2FycmF5XG5leGNlcHRpb24gRW5kX29mX29iamVjdFxuZXhjZXB0aW9uIEVuZF9vZl90dXBsZVxuZXhjZXB0aW9uIEVuZF9vZl9pbnB1dFxuXG50eXBlIGluX3BhcmFtID0geyBzdHJpbmdfYnVmIDogQnVmZmVyLnQgfVxuXG5sZXQgY3JlYXRlX2luX3BhcmFtID8obGVuID0gMjU2KSAoKSA9IHsgc3RyaW5nX2J1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIH1cblxubGV0IHV0Zjhfb2ZfY29kZSBidWYgeCA9XG4gIGxldCBhZGQgPSBCdWZmZXIuYWRkX2NoYXIgaW5cblxuICAoKiBTdHJhaWdodCA8PSBkb2Vzbid0IHdvcmsgd2l0aCBzaWduZWQgMzEtYml0IGludHMgKilcbiAgbGV0IG1heGJpdHMgbiB4ID0geCBsc3IgbiA9IDAgaW5cblxuICBpZiBtYXhiaXRzIDcgeCB0aGVuICgqIDcgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociB4KVxuICBlbHNlIGlmIG1heGJpdHMgMTEgeCB0aGVuIChcbiAgICAoKiA1ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDAxMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMTYgeCB0aGVuIChcbiAgICAoKiA0ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTEwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMDAxMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjEgeCB0aGVuIChcbiAgICAoKiAzICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDAwMDExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjYgeCB0aGVuIChcbiAgICAoKiAyICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAwMDAwMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKG1heGJpdHMgMzEgeCk7XG4gICAgKCogMSArIDYgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTExMDAgbG9yICgoeCBsc3IgMzApIGxhbmQgMGIwMDAwMDAwMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcblxubGV0IGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqID1cbiAgbGV0IGhpZ2gxMCA9IGkgLSAweEQ4MDAgaW5cbiAgbGV0IGxvdzEwID0gaiAtIDB4REMwMCBpblxuICAweDEwMDAwICsgKChoaWdoMTAgbHNsIDEwKSBsb3IgbG93MTApXG5cbmxldCB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIGJ1ZiBpIGogPVxuICB1dGY4X29mX2NvZGUgYnVmIChjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgailcblxudHlwZSBsZXhlcl9zdGF0ZSA9IHtcbiAgYnVmIDogQnVmZmVyLnQ7ICgqIEJ1ZmZlciB1c2VkIHRvIGFjY3VtdWxhdGUgc3Vic3RyaW5ncyAqKVxuICBtdXRhYmxlIGxudW0gOiBpbnQ7ICgqIEN1cnJlbnQgbGluZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgKilcbiAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgICAoKiBBYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjdXJyZW50IGxpbmVcbiAgICAgICAgIChzdGFydGluZyBmcm9tIDApICopXG4gIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uOyAoKiBOYW1lIGRlc2NyaWJpbmcgdGhlIGlucHV0IGZpbGUgKilcbn1cblxubW9kdWxlIExleGVyX3N0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IGxleGVyX3N0YXRlID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuZW5kXG5cbmxldCBpbml0X2xleGVyID9idWYgP2ZuYW1lID8obG51bSA9IDEpICgpID1cbiAgbGV0IGJ1ZiA9IG1hdGNoIGJ1ZiB3aXRoIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAyNTYgfCBTb21lIGJ1ZiAtPiBidWYgaW5cbiAgeyBidWY7IGxudW07IGJvbCA9IDA7IGZuYW1lIH1cblxuIyAxIFwidHlwZS5tbFwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgXG4jIDggXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgXG4jIDExIFwidHlwZS5tbFwiXG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIFxuIyAxNCBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgXG4jIDE3IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDIwIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIFxuIyAyMyBcInR5cGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjUgXCJ0eXBlLm1sXCJcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXG4jIDI4IFwidHlwZS5tbFwiXG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgXG4jIDMxIFwidHlwZS5tbFwiXG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXG4jIDMzIFwidHlwZS5tbFwiXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG4jIDEgXCJ3cml0ZS5tbFwiXG4oKiBpbmNsdWRlZDogdHlwZS5tbCAqKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgdGVzdF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnNldCBzIGkgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIGpzb25fc3RyaW5nX29mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxuXG5sZXQgbWF4X2RpZ2l0cyA9XG4gIG1heFxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1heF9pbnQpKVxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1pbl9pbnQpKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBvcGVuIFByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB0ZXN0X2Zsb2F0ICgpID1cbiAgbGV0IGwgPSBbIDAuOyAxLjsgLTEuIF0gaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IDIuICouIHggKy4gMS4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggLy4gc3FydCAyLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiBzcXJ0IDMuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIGNvcyBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIDEuMjNlNTApIGwgaW5cbiAgbGV0IGwgPSBsIEAgWyBpbmZpbml0eTsgbmVnX2luZmluaXR5IF0gaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHMgPSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeCBpblxuICAgICAgbGV0IHkgPSBmbG9hdF9vZl9zdHJpbmcgcyBpblxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVnICVnICVTICVCXFxuXCIgeCB5IHMgKHggPSB5KVxuICApXG4gICAgbFxuXG4oKlxubGV0ICgpID0gdGVzdF9mbG9hdCAoKVxuKilcblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMjY0IFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDI2NyBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3MCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICBcbiMgMjczIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzYgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjc5IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICBcbiMgMjg0IFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIFxuIyAyODcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzMDYgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG4jIDMxMyBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzMyIFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDMzNSBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDMzOCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgXG4jIDM0MSBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ0IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0NyBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0OSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICBcbiMgMzUyIFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICBcbiMgMzU1IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG4jIDM1OCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDM3OSBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbiMgMzkxIFwid3JpdGUubWxcIlxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg1IFwid3JpdGUubWxcIlxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4OSBcIndyaXRlLm1sXCJcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICBcbiMgNDk1IFwid3JpdGUubWxcIlxuICB8IHggLT4geFxuIyAxIFwibW9ub21vcnBoaWMubWxcIlxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAxNSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyMSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDMzIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDM5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDcxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgODQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgXG4jIDEwNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTAgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTMgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgXG4jIDEyMiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzcgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE0NiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxNCBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4jIDEgXCJwcmV0dHkubWxcIlxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIFxuIyA3OCBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIFxuIyA4MSBcInByZXR0eS5tbFwiXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA4OSBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIFxuIyA5MiBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA5NSBcInByZXR0eS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDk4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDEwMCBcInByZXR0eS5tbFwiXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgXG4jIDExOSBcInByZXR0eS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIFxuIyAxMzIgXCJwcmV0dHkubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDEzNSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDEzOSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDE0NiBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDE1MCBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbiMgMTU2IFwicHJldHR5Lm1sXCJcbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG4jIDE3IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEgXCJ3cml0ZTIubWxcIlxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMjggXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgQmFzaWMgPVxuc3RydWN0XG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgOCBcInR5cGUubWxcIlxuICAgIHwgYEludCBvZiBpbnRcbiAgICBcbiMgMTQgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIFxuIyAyMCBcInR5cGUubWxcIlxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICBcbiMgMjUgXCJ0eXBlLm1sXCJcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXG4jIDMzIFwidHlwZS5tbFwiXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG4jIDEgXCJ3cml0ZS5tbFwiXG4oKiBpbmNsdWRlZDogdHlwZS5tbCAqKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgdGVzdF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnNldCBzIGkgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIGpzb25fc3RyaW5nX29mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxuXG5sZXQgbWF4X2RpZ2l0cyA9XG4gIG1heFxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1heF9pbnQpKVxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1pbl9pbnQpKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBvcGVuIFByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB0ZXN0X2Zsb2F0ICgpID1cbiAgbGV0IGwgPSBbIDAuOyAxLjsgLTEuIF0gaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IDIuICouIHggKy4gMS4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggLy4gc3FydCAyLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiBzcXJ0IDMuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIGNvcyBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIDEuMjNlNTApIGwgaW5cbiAgbGV0IGwgPSBsIEAgWyBpbmZpbml0eTsgbmVnX2luZmluaXR5IF0gaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHMgPSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeCBpblxuICAgICAgbGV0IHkgPSBmbG9hdF9vZl9zdHJpbmcgcyBpblxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVnICVnICVTICVCXFxuXCIgeCB5IHMgKHggPSB5KVxuICApXG4gICAgbFxuXG4oKlxubGV0ICgpID0gdGVzdF9mbG9hdCAoKVxuKilcblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMjY0IFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDI3MCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICBcbiMgMjc2IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDI4MSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG5cbiMgMjkwIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG4jIDMyNSBcIndyaXRlLm1sXCJcbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDMzMiBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAzMzggXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIFxuIyAzNDQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuXG4jIDM1OCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDM1IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDc4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgXG4jIDgxIFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDg5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgXG4jIDEwMCBcInByZXR0eS5tbFwiXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG5cbiMgMTU2IFwicHJldHR5Lm1sXCJcbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG4jIDM4IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDIxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA0NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbiMgOTkgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIFxuIyAxMDcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEzIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE1NSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IF8gLT4gZmFsc2VcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDIgXCJsaWIvcmVhZC5tbGxcIlxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IExleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBzcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIHNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBzcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIGpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IHJlYWRfanVuayA9IHJlZiAoZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSAhcmVhZF9qdW5rIGxleGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cbiAgXG4jIDExMyBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cblxuICBcbiMgMTQxIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IHNldF9maWxlX25hbWUgdiBmbmFtZSA9XG4gICAgdi5mbmFtZSA8LSBmbmFtZVxuXG4gIGxldCBuZXdsaW5lIHYgbGV4YnVmID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cbiAgdHlwZSB0dXBsZV9raW5kID0gWyBgUGFyZW50aGVzaXMgfCBgU3F1YXJlX2JyYWNrZXQgXVxuXG5cbiMgMTYxIFwibGliL3JlYWQubWxcIlxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQwXFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMTUwXFwwMDFcXDE1MVxcMDAxXFwxNTRcXDAwMVxcMTY4XFwwMDFcXFxuICAgIFxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNzJcXDAwMVxcMTczXFwwMDFcXDE4MVxcMDAxXFwxODRcXDAwMVxcMTg1XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTNcXDAwMVxcMTk1XFwwMDFcXDE5NlxcMDAxXFwxOTdcXDAwMVxcMjAwXFwwMDFcXDIwM1xcMDAxXFwyMjNcXDAwMVxcXG4gICAgXFwyMjVcXDAwMVxcMjI4XFwwMDFcXDI0OVxcMDAxXFwyNTFcXDAwMVxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXFxuICAgIFxcMDEzXFwwMDJcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDAwXFwwMDBcXDAwNVxcMDAyXFwwMDZcXDAwMlxcMDA3XFwwMDJcXDAwOFxcMDAyXFxcbiAgICBcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDAxNVxcMDAyXFwwMTZcXDAwMlxcXG4gICAgXFwwMTdcXDAwMlxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDIxXFwwMDJcXDAyMlxcMDAyXFwwMjNcXDAwMlxcMDI0XFwwMDJcXFxuICAgIFxcMDI1XFwwMDJcXDAyNlxcMDAyXFwwMjdcXDAwMlxcMDI4XFwwMDJcXDAyOVxcMDAyXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFxcbiAgICBcXDAzM1xcMDAyXFwwMDNcXDAwMlwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDNcXDAwMlxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDEyNlxcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXFxuICAgIFxcMjIxXFwwMDFcXDAwM1xcMDAyXFwyNTNcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwM1xcMDAyXFxcbiAgICBcXDI0MVxcMDAxXFwwMDNcXDAwMlxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDAwM1xcMDAyXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwM1xcMDAyXFwxOThcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwwMDFcXDAwMlxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDAwMlxcMDAyXFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwwMDRcXDAwMlxcMDA1XFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwwMDZcXDAwMlxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwwMDdcXDAwMlxcMTIyXFwwMDFcXDAwOFxcMDAyXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwwMTJcXDAwMlxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDk4XFwwMDBcXDAxNVxcMDAyXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwwMTZcXDAwMlxcXG4gICAgXFwyMjBcXDAwMVxcMDE3XFwwMDJcXDI1MVxcMDAxXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMDIxXFwwMDJcXDE5NFxcMDAxXFwwOThcXDAwMFxcMDIyXFwwMDJcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMDIzXFwwMDJcXFxuICAgIFxcMjM4XFwwMDFcXDAyNFxcMDAyXFwyNTFcXDAwMVxcMjM4XFwwMDFcXDAyNVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDAyNlxcMDAyXFwxOTdcXDAwMVxcMDI3XFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDI4XFwwMDJcXDE5NFxcMDAxXFwwMjlcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcblxuIyAxMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDM4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5hblxuICAgICAgICAgICAgICAgIFxuIyAxOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDU0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBpbmZpbml0eVxuICAgICAgICAgICAgICAgIFxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDY1IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICBcbiMgMjExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgKGZpbmlzaF9zdHJpbmcgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgXG4jIDIxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDk4IFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSlcbiAgICAgICAgICAgICAgICAgXG4jIDIyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE3OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDMwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTkgLT5cblxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAxMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjIzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcblxuIyAxMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjM1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcblxuIyAxMjY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjY1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjc3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG5cbiMgMTI5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuXG4jIDEzMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuXG4jIDEzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcblxuIyAxMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG5cbiMgMTMxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuXG4jIDEzMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxubGV0XG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG5cbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG5cbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgdXRmOF9vZl9jb2RlIHYuYnVmIHhcbiAgICAgICAgIClcblxuIyAxMzU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzU2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcblxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzYxIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDE0MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG5cbiMgMTQxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG5cbiMgMTQzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAxNDM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG5cbiMgMTQ1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcblxuIyAxNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAxNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuXG4jIDE1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcblxuIyAxNTU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTU4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcblxuIyAxNTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTYzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTU2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTU4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMTU4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjEyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTYxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYyOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYyOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjg4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzA1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTcwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzE1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTcyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzQ2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE3NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTc2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODA2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODExIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTg0NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg0OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcblxuIyAxODY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODcwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuXG4jIDE4NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuXG4jIDE4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpIClcblxuIyAxODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODg1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuXG4jIDE5MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTEyIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTkyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTUzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cbmxldFxuXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cblxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG5cbiMgMTk2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxOTg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG5cbiMgMTk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDYzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjA2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjA4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDkwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxMDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIxMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjExMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA2MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgNjM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDIxNTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTU2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjE2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTczIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxNzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjAxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjQ1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjUzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjYxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzA1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMjQxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDI0MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ0MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjU1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjE0IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjY1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNjc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjc2IFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjY4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjY5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyNjk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcblxuIyAyNzE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzE3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNzIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzIyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzI3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI3NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3NTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyNzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzcxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDkzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODQ2IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDk0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA5NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODczIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODg1IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjg4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI4OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcblxuIyAyOTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI5MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjkxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG5cbiMgMjkzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAyOTM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjk2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyOTY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTcxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDUwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDU1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzA1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTIzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzEyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMxMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzE0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcblxuIyAzMTY2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTY3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTcxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTcyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTc3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMzE4OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE4OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcblxuIyAzMjEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjExIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDMyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBqdW5rIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgNTEzXG5hbmQgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5sZXhlbWUgbGV4YnVmIClcblxuIyAzMjM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cblxuIyAxMDU1IFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDEwNTYgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCAoKSA9XG4gICAgcmVhZF9qdW5rIDo9IGp1bmtcblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IGluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuXG4jIDM0MDggXCJsaWIvcmVhZC5tbFwiXG4jIDQyIFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFV0aWwgPVxuc3RydWN0XG4jIDEgXCJ1dGlsLm1sXCJcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgXG4jIDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICBcbiMgMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICBcbiMgMTggXCJ1dGlsLm1sXCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIFxuIyA3MCBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIFxuIyA3MyBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IGZcbiAgXG4jIDc1IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgNzkgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgXG4jIDgyIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIFxuIyA4NCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIFxuIyA4OSBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IGZcbiAgXG4jIDkxIFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDk1IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIFxuIyA5NyBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIFxuIyAxMDIgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gaVxuICBcbiMgMTA0IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTA4IFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICBcbiMgMTEwIFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICBcbiMgMTE3IFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgXG4jIDExOSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDEyMyBcInV0aWwubWxcIlxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgXG4jIDEyNSBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgXG4jIDE3MiBcInV0aWwubWxcIlxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE3NCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxODEgXCJ1dGlsLm1sXCJcbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE4MyBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMTkwIFwidXRpbC5tbFwiXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgXG4jIDE5MyBcInV0aWwubWxcIlxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAxOTUgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgXG4jIDIwMiBcInV0aWwubWxcIlxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICBcbiMgMjA0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG4jIDQ1IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDQ5IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG5cbm1vZHVsZSBTYWZlID1cbnN0cnVjdFxuIyAxIFwidHlwZS5tbFwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgXG4jIDggXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgXG4jIDExIFwidHlwZS5tbFwiXG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIFxuIyAxNCBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgXG4jIDIwIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMjggXCJ0eXBlLm1sXCJcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICBcbiMgMzEgXCJ0eXBlLm1sXCJcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcInNhZmUubWxcIlxubGV0IHJlYyB0b19iYXNpYyA6IHQgLT4gQmFzaWMudCA9IGZ1bmN0aW9uXG4gIHwgKGBOdWxsIHwgYEJvb2wgXyB8IGBJbnQgXyB8IGBGbG9hdCBfIHwgYFN0cmluZyBfKSBhcyB4IC0+IHhcbiAgfCBgSW50bGl0IHMgLT4gYFN0cmluZyBzXG4gIHwgYExpc3QgbCB8IGBUdXBsZSBsIC0+IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHRvX2Jhc2ljIGwpKVxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBgQXNzb2MgKExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHRvX2Jhc2ljIHYpKSBsKSlcbiAgfCBgVmFyaWFudCAoaywgTm9uZSkgLT4gYFN0cmluZyBrXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgLT4gYExpc3QgWyBgU3RyaW5nIGs7IHRvX2Jhc2ljIHYgXVxuIyAxIFwid3JpdGUubWxcIlxuKCogaW5jbHVkZWQ6IHR5cGUubWwgKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHRlc3Rfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy5zZXQgcyBpIChDaGFyLmNociBpKVxuICBkb25lO1xuICBqc29uX3N0cmluZ19vZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cblxubGV0IG1heF9kaWdpdHMgPVxuICBtYXhcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtYXhfaW50KSlcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtaW5faW50KSlcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgb3BlbiBQcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgdGVzdF9mbG9hdCAoKSA9XG4gIGxldCBsID0gWyAwLjsgMS47IC0xLiBdIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiAyLiAqLiB4ICsuIDEuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4IC8uIHNxcnQgMi4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gc3FydCAzLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCBjb3MgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiAxLjIzZTUwKSBsIGluXG4gIGxldCBsID0gbCBAIFsgaW5maW5pdHk7IG5lZ19pbmZpbml0eSBdIGluXG4gIExpc3QuaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzID0gUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHggaW5cbiAgICAgIGxldCB5ID0gZmxvYXRfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlZyAlZyAlUyAlQlxcblwiIHggeSBzICh4ID0geSlcbiAgKVxuICAgIGxcblxuKCpcbmxldCAoKSA9IHRlc3RfZmxvYXQgKClcbiopXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDI2NCBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAyNjcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzAgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgXG4jIDI3NiBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAyODEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIFxuIyAyODQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgXG4jIDI4NyBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG4jIDI5MCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDMwNiBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbiMgMzEzIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxuIyAzMjUgXCJ3cml0ZS5tbFwiXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAzMzIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMzM1IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzM4IFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICBcbiMgMzQ0IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0OSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICBcbiMgMzUyIFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICBcbiMgMzU1IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG4jIDM1OCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDM3OSBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbiMgMzkxIFwid3JpdGUubWxcIlxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg1IFwid3JpdGUubWxcIlxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4OSBcIndyaXRlLm1sXCJcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICBcbiMgNDk1IFwid3JpdGUubWxcIlxuICB8IHggLT4geFxuIyA2MiBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4jIDEgXCJwcmV0dHkubWxcIlxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIFxuIyA3OCBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIFxuIyA4MSBcInByZXR0eS5tbFwiXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA4OSBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIFxuIyA5MiBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyAxMDAgXCJwcmV0dHkubWxcIlxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIFxuIyAxMTkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICBcbiMgMTMyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxMzUgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIFxuIyAxMzkgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxNDYgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIFxuIyAxNTAgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG4jIDE1NiBcInByZXR0eS5tbFwiXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuIyA2NSBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyAxIFwibW9ub21vcnBoaWMubWxcIlxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAxNSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyMSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzMgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNDQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNzEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA4NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG4jIDk5IFwibW9ub21vcnBoaWMubWxcIlxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICBcbiMgMTA3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIFxuIyAxMjQgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTM3IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICBcbiMgMTM5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxNDYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgXG4jIDE1NSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IF8gLT4gZmFsc2VcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDIgXCJsaWIvcmVhZC5tbGxcIlxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IExleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBzcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIHNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBzcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIGpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IHJlYWRfanVuayA9IHJlZiAoZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSAhcmVhZF9qdW5rIGxleGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBgSW50bGl0IChsZXhlbWUgbGV4YnVmKVxuXG4gIFxuIyAxMTMgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICBcbiMgMTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBcbiMgMTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuXG4gIFxuIyAxNDEgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgc2V0X2ZpbGVfbmFtZSB2IGZuYW1lID1cbiAgICB2LmZuYW1lIDwtIGZuYW1lXG5cbiAgbGV0IG5ld2xpbmUgdiBsZXhidWYgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuICB0eXBlIHR1cGxlX2tpbmQgPSBbIGBQYXJlbnRoZXNpcyB8IGBTcXVhcmVfYnJhY2tldCBdXG5cblxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDBcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NFxcMDAxXFwxNjhcXDAwMVxcXG4gICAgXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE3MlxcMDAxXFwxNzNcXDAwMVxcMTgxXFwwMDFcXDE4NFxcMDAxXFwxODVcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5M1xcMDAxXFwxOTVcXDAwMVxcMTk2XFwwMDFcXDE5N1xcMDAxXFwyMDBcXDAwMVxcMjAzXFwwMDFcXDIyM1xcMDAxXFxcbiAgICBcXDIyNVxcMDAxXFwyMjhcXDAwMVxcMjQ5XFwwMDFcXDI1MVxcMDAxXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcXG4gICAgXFwwMTNcXDAwMlxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMDBcXDAwMFxcMDA1XFwwMDJcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuICAgIFxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDE1XFwwMDJcXDAxNlxcMDAyXFxcbiAgICBcXDAxN1xcMDAyXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMjRcXDAwMlxcXG4gICAgXFwwMjVcXDAwMlxcMDI2XFwwMDJcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXFxuICAgIFxcMDMzXFwwMDJcXDAwM1xcMDAyXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwM1xcMDAyXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMTI2XFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDAwM1xcMDAyXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcXG4gICAgXFwyMjFcXDAwMVxcMDAzXFwwMDJcXDI1M1xcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAzXFwwMDJcXFxuICAgIFxcMjQxXFwwMDFcXDAwM1xcMDAyXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDAzXFwwMDJcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAzXFwwMDJcXDE5OFxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDAwMVxcMDAyXFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMDAyXFwwMDJcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDAwNFxcMDAyXFwwMDVcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDAwNlxcMDAyXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDAwN1xcMDAyXFwxMjJcXDAwMVxcMDA4XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDAxMlxcMDAyXFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwOThcXDAwMFxcMDE1XFwwMDJcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDAxNlxcMDAyXFxcbiAgICBcXDIyMFxcMDAxXFwwMTdcXDAwMlxcMjUxXFwwMDFcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwwMjFcXDAwMlxcMTk0XFwwMDFcXDA5OFxcMDAwXFwwMjJcXDAwMlxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwwMjNcXDAwMlxcXG4gICAgXFwyMzhcXDAwMVxcMDI0XFwwMDJcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMDI1XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMDI2XFwwMDJcXDE5N1xcMDAxXFwwMjdcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMjhcXDAwMlxcMTk0XFwwMDFcXDAyOVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcblxuIyAxMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA0MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAxOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgXG4jIDE5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIFxuIyAyMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDc2IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICBcbiMgMjE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDkzIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICBcbiMgMjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEzNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYFR1cGxlIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICBcbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnMgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYFZhcmlhbnQgKGNvbnMsIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgICBcbiMgMzAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDExOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjA4IFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjEzIFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOSAtPlxuXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDEyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuXG4jIDEyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuXG4jIDEyNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG5cbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcblxuIyAxMjk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG5cbiMgMTMwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG5cbiMgMTMwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuXG4jIDEzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcblxuIyAxMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE5IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG5cbiMgMTMyMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMyNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5sZXRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcblxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cblxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB1dGY4X29mX2NvZGUgdi5idWYgeFxuICAgICAgICAgKVxuXG4jIDEzNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG5cbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMTQwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcblxuIyAxNDExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDEyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcblxuIyAxNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDE0MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcblxuIyAxNDU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDU5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuXG4jIDE0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDE0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG5cbiMgMTU1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuXG4jIDE1NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuXG4jIDE1NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTY4IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTU3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAxNTg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTkwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTk1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjAwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjI4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjI5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTY0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY4MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzAwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzEwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzI1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTczOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTczOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTc2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTc3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzg4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODE2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODQ4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODUzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuXG4jIDE4NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG5cbiMgMTg3NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG5cbiMgMTg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikgKVxuXG4jIDE4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG5cbiMgMTkwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxubGV0XG5cbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG5cbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcblxuIyAxOTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTYzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTY4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDE5ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcblxuIyAxOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTk2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDY4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjA3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMDg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwOTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjEwMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjEwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTEyIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjExNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDYxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgICAgIFxuIyA2MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjE1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTYxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjE3NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjI4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjIzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzEwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjMyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAyNDE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDE1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMjQxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDI1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDQxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTU1IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNTU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTYwIFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTcwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIFxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDgyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjUxIFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjU2IFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI2NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyNjgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNjkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI2OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjcwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuXG4jIDI3MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI3MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjczMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjczMiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjc0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI3NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgXG4jIDkzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODQ2IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzwnO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA5NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODczIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODg1IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjg4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI4OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcblxuIyAyOTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI5MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjkxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG5cbiMgMjkzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAyOTM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjk2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyOTY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTcxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDUwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDU1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzA1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTIzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzEyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMxMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzE0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcblxuIyAzMTY2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTY3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTcxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTcyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTc3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMzE4OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE4OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcblxuIyAzMjEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjExIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDMyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBqdW5rIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgNTEzXG5hbmQgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5sZXhlbWUgbGV4YnVmIClcblxuIyAzMjM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cblxuIyAxMDU1IFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDEwNTYgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCAoKSA9XG4gICAgcmVhZF9qdW5rIDo9IGp1bmtcblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IGluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuXG4jIDM0MDggXCJsaWIvcmVhZC5tbFwiXG4jIDY5IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFV0aWwgPVxuc3RydWN0XG4jIDEgXCJ1dGlsLm1sXCJcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgXG4jIDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICBcbiMgMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICBcbiMgMTggXCJ1dGlsLm1sXCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIFxuIyA3MCBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIFxuIyA3MyBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IGZcbiAgXG4jIDc1IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgNzkgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgXG4jIDgyIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIFxuIyA4NCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIFxuIyA4OSBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IGZcbiAgXG4jIDkxIFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDk1IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIFxuIyA5NyBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIFxuIyAxMDIgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gaVxuICBcbiMgMTA0IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTA4IFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICBcbiMgMTEwIFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICBcbiMgMTE3IFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgXG4jIDExOSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDEyMyBcInV0aWwubWxcIlxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgXG4jIDEyNSBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgXG4jIDE3MiBcInV0aWwubWxcIlxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE3NCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxODEgXCJ1dGlsLm1sXCJcbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE4MyBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMTkwIFwidXRpbC5tbFwiXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgXG4jIDE5MyBcInV0aWwubWxcIlxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAxOTUgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgXG4jIDIwMiBcInV0aWwubWxcIlxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICBcbiMgMjA0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG4jIDcyIFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDc5IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG5cbm1vZHVsZSBSYXcgPVxuc3RydWN0XG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgMTEgXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDE3IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDIzIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMjggXCJ0eXBlLm1sXCJcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICBcbiMgMzEgXCJ0eXBlLm1sXCJcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzMgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3OSBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI4MSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgXG4jIDI4NCBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICBcbiMgMjg3IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMjkwIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzA2IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuIyAzMTMgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG4jIDMyNSBcIndyaXRlLm1sXCJcbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDMzNSBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0MSBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ3IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIFxuIyAzNTIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIFxuIyAzNTUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzc5IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODUgXCJ3cml0ZS5tbFwiXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg5IFwid3JpdGUubWxcIlxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDkwIFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDkyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDk1IFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTggXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICBcbiMgMTE5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgXG4jIDEzMiBcInByZXR0eS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTM3IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nbGl0IHMgaW5cbiAgICAgICAgICBcbiMgMTM5IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTQ4IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nbGl0IHMgaW5cbiAgICAgICAgICBcbiMgMTUwIFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgOTMgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDE1IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDI3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA0NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA3MSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDg0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbiMgOTkgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExNiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBhLCBgRmxvYXRsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMjIgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IGEsIGBTdHJpbmdsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMjQgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTM3IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICBcbiMgMTM5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxNDYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgXG4jIDE1NSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IF8gLT4gZmFsc2VcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDIgXCJsaWIvcmVhZC5tbGxcIlxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IExleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBzcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIHNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBzcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIGpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IHJlYWRfanVuayA9IHJlZiAoZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSAhcmVhZF9qdW5rIGxleGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgXG4jIDEwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGBJbnRsaXQgKGxleGVtZSBsZXhidWYpXG5cbiAgXG4jIDExMyBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgXG4jIDEzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGBJbnRsaXQgKGxleGVtZSBsZXhidWYpXG5cblxuICBcbiMgMTQxIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IHNldF9maWxlX25hbWUgdiBmbmFtZSA9XG4gICAgdi5mbmFtZSA8LSBmbmFtZVxuXG4gIGxldCBuZXdsaW5lIHYgbGV4YnVmID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cbiAgdHlwZSB0dXBsZV9raW5kID0gWyBgUGFyZW50aGVzaXMgfCBgU3F1YXJlX2JyYWNrZXQgXVxuXG5cbiMgMTYxIFwibGliL3JlYWQubWxcIlxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQwXFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMTUwXFwwMDFcXDE1MVxcMDAxXFwxNTRcXDAwMVxcMTY4XFwwMDFcXFxuICAgIFxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNzJcXDAwMVxcMTczXFwwMDFcXDE4MVxcMDAxXFwxODRcXDAwMVxcMTg1XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTNcXDAwMVxcMTk1XFwwMDFcXDE5NlxcMDAxXFwxOTdcXDAwMVxcMjAwXFwwMDFcXDIwM1xcMDAxXFwyMjNcXDAwMVxcXG4gICAgXFwyMjVcXDAwMVxcMjI4XFwwMDFcXDI0OVxcMDAxXFwyNTFcXDAwMVxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXFxuICAgIFxcMDEzXFwwMDJcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDAwXFwwMDBcXDAwNVxcMDAyXFwwMDZcXDAwMlxcMDA3XFwwMDJcXDAwOFxcMDAyXFxcbiAgICBcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDAxNVxcMDAyXFwwMTZcXDAwMlxcXG4gICAgXFwwMTdcXDAwMlxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDIxXFwwMDJcXDAyMlxcMDAyXFwwMjNcXDAwMlxcMDI0XFwwMDJcXFxuICAgIFxcMDI1XFwwMDJcXDAyNlxcMDAyXFwwMjdcXDAwMlxcMDI4XFwwMDJcXDAyOVxcMDAyXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFxcbiAgICBcXDAzM1xcMDAyXFwwMDNcXDAwMlwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDNcXDAwMlxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDEyNlxcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXFxuICAgIFxcMjIxXFwwMDFcXDAwM1xcMDAyXFwyNTNcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwM1xcMDAyXFxcbiAgICBcXDI0MVxcMDAxXFwwMDNcXDAwMlxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDAwM1xcMDAyXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwM1xcMDAyXFwxOThcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwwMDFcXDAwMlxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDAwMlxcMDAyXFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwwMDRcXDAwMlxcMDA1XFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwwMDZcXDAwMlxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwwMDdcXDAwMlxcMTIyXFwwMDFcXDAwOFxcMDAyXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwwMTJcXDAwMlxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDk4XFwwMDBcXDAxNVxcMDAyXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwwMTZcXDAwMlxcXG4gICAgXFwyMjBcXDAwMVxcMDE3XFwwMDJcXDI1MVxcMDAxXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMDIxXFwwMDJcXDE5NFxcMDAxXFwwOThcXDAwMFxcMDIyXFwwMDJcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMDIzXFwwMDJcXFxuICAgIFxcMjM4XFwwMDFcXDAyNFxcMDAyXFwyNTFcXDAwMVxcMjM4XFwwMDFcXDAyNVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDAyNlxcMDAyXFwxOTdcXDAwMVxcMDI3XFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDI4XFwwMDJcXDE5NFxcMDAxXFwwMjlcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcblxuIyAxMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDM4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiTmFOXCJcbiAgICAgICAgICAgICAgICBcbiMgMTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJJbmZpbml0eVwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiLUluZmluaXR5XCJcbiAgICAgICAgICAgICAgICBcbiMgMjExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nbGl0IChmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIFxuIyAyMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDg4IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgKGxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgIFxuIyAyMjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTM2IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTU1IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIFxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE3OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIFxuIyAzMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTE5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDE5IC0+XG5cbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMTIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG5cbiMgMTIzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQ3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG5cbiMgMTI2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcblxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuXG4jIDEyOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcblxuIyAxMzAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcblxuIyAxMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG5cbiMgMTMxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuXG4jIDEzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcblxuIyAxMzIzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzI0IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cbmxldFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG4gICAgICAgICApXG5cbiMgMTM1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG5cbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzY2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcblxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cblxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcblxuIyAxNDA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDA2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuXG4jIDE0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuXG4jIDE0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMTQzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDQ0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuXG4jIDE0NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG5cbiMgMTQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMTQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcblxuIyAxNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTUyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG5cbiMgMTU1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG5cbiMgMTU2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDE1ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTYxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjgyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjgzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTY4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE3MDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTcxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzM5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxNzYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTgwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODU4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG5cbiMgMTg2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcblxuIyAxODc0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODc1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcblxuIyAxODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODgwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSApXG5cbiMgMTg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcblxuIyAxOTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTA3IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTk1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5sZXRcblxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcblxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG5cbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuXG4jIDE5NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTk4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuXG4jIDE5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDAxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjAyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjA2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwNjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIwODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjA4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTAxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTAyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTA3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxMTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgNjE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgXG4jIDYzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyMTUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTUxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjE1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTc3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTc4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjA2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjMzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjI0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjY2IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjMwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzE1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzU0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzY2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzc2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjM4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDI0MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcblxuIyAyNDE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDIwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDMwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQ3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTUwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI1NTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTY1IFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTk2IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgXG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgODI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjcxIFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjY3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI2ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2ODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI2OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjY5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG5cbiMgMjcxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjcyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjcyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzMyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjc3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzc2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODIyIFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgOTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDk0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODgwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyODg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjg5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDI5MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjkxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcblxuIyAyOTMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDI5MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyOTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI5NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTc2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAzMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDM4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMDU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDYwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDY1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMTI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzEzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuXG4jIDMxNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAzMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTg5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuXG4jIDMyMTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMzIxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGp1bmsgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiA1MTNcbmFuZCBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLmxleGVtZSBsZXhidWYgKVxuXG4jIDMyMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuXG4jIDEwNTUgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMTA1NiBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0ICgpID1cbiAgICByZWFkX2p1bmsgOj0ganVua1xuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQgcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG5cbiMgMzQwOCBcImxpYi9yZWFkLm1sXCJcbiMgOTcgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgVXRpbCA9XG5zdHJ1Y3RcbiMgMSBcInV0aWwubWxcIlxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICBcbiMgMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICBcbiMgMTYgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nbGl0IF8gLT4gXCJzdHJpbmdsaXRcIlxuICBcbiMgMTggXCJ1dGlsLm1sXCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIFxuIyA3NSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDg0IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgXG4jIDkxIFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDk3IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgXG4jIDEwNCBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDExMCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgXG4jIDExOSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDEyNSBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgXG4jIDE3NCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxODMgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxOTUgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAyMDQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbiMgMTAwIFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEwNiBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIiwiXG50eXBlICdhIG9jYW1sX2FycmF5ID0gJ2EgYXJyYXlcblxubGV0IGlucHV0X2ZpbGUgZm5hbWUgcmVhZCA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gIHRyeVxuICAgIGxldCB4ID0gcmVhZCBpYyBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHhcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZVxuXG5sZXQgb3V0cHV0X2ZpbGUgZm5hbWUgd3JpdGUgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZm5hbWUgaW5cbiAgdHJ5XG4gICAgd3JpdGUgb2M7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbm1vZHVsZSBCaW5pb3UgPVxuc3RydWN0XG4gIHR5cGUgJ2EgcmVhZGVyID0gQmlfaW5idWYudCAtPiAnYVxuICB0eXBlICdhIHdyaXRlciA9IEJpX291dGJ1Zi50IC0+ICdhIC0+IHVuaXRcblxuICBsZXQgZnJvbV9jaGFubmVsID9sZW4gPyhzaHJsZW4gPSAwKSByZWFkIGljID1cbiAgICBsZXQgaWIgPSBCaV9pbmJ1Zi5mcm9tX2NoYW5uZWwgP2xlbiB+c2hybGVuIGljIGluXG4gICAgcmVhZCBpYlxuXG4gIGxldCBmcm9tX2ZpbGUgP2xlbiA/KHNocmxlbiA9IDApIHJlYWQgZm5hbWUgPVxuICAgIGlucHV0X2ZpbGUgZm5hbWUgKGZ1biBpYyAtPiBmcm9tX2NoYW5uZWwgP2xlbiB+c2hybGVuIHJlYWQgaWMpXG5cbiAgbGV0IHRvX2NoYW5uZWwgP2xlbiA/KHNocmxlbiA9IDApIHdyaXRlIG9jIHggPVxuICAgIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGVfY2hhbm5lbF93cml0ZXIgP2xlbiB+c2hybGVuIG9jIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCaV9vdXRidWYuZmx1c2hfY2hhbm5lbF93cml0ZXIgb2JcblxuICBsZXQgdG9fZmlsZSA/bGVuID8oc2hybGVuID0gMCkgd3JpdGUgZm5hbWUgeCA9XG4gICAgb3V0cHV0X2ZpbGUgZm5hbWUgKGZ1biBvYyAtPiB0b19jaGFubmVsID9sZW4gfnNocmxlbiB3cml0ZSBvYyB4KVxuZW5kXG5cbm1vZHVsZSBKc29uID1cbnN0cnVjdFxuICB0eXBlICdhIHJlYWRlciA9IFlvanNvbi5TYWZlLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gJ2FcbiAgdHlwZSAnYSB3cml0ZXIgPSBCdWZmZXIudCAtPiAnYSAtPiB1bml0XG5cbiAgbGV0IGZpbmlzaCBscyBsZXhidWYgPVxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgbHMgbGV4YnVmO1xuICAgIGlmIG5vdCAoWW9qc29uLlNhZmUucmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBZb2pzb24uanNvbl9lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWVcIlxuXG4gIGxldCBmcm9tX2xleGJ1ZiA/KHN0cmVhbSA9IGZhbHNlKSByZWFkIGxzIGxleGJ1ZiA9XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBscyBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiBZb2pzb24uU2FmZS5yZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBZb2pzb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWQgbHMgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIGxzIGxleGJ1ZjtcblxuICAgIHhcblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcmVhZCBzID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgZnJvbV9sZXhidWYgcmVhZCBscyBsZXhidWZcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIGZyb21fbGV4YnVmIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgaW5wdXRfZmlsZSBmbmFtZSAoZnVuIGljIC0+IGZyb21fY2hhbm5lbCA/YnVmIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpYylcblxuICAoKiBzZXFfdW5mb2xkIGlzIFNlcS51bmZvbGQsIG5lZWRlZCBmb3Igb2NhbWwgPCA0LjExICopXG4gIGxldCByZWMgc2VxX3VuZm9sZCBmIHUgKCkgPVxuICAgIG1hdGNoIGYgdSB3aXRoXG4gICAgfCBOb25lIC0+IFNlcS5OaWxcbiAgICB8IFNvbWUgKHgsIHUnKSAtPiBTZXEuQ29ucyAoeCwgc2VxX3VuZm9sZCBmIHUnKVxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIHJlYWQgbHMgbGV4YnVmID1cbiAgICBsZXQgZiAoKSA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHYgPSBmcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcmVhZCBscyBsZXhidWYgaW5cbiAgICAgICAgU29tZSAodiwgKCkpXG4gICAgICB3aXRoXG4gICAgICAgICAgWW9qc29uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgTm9uZVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggXyAtPiAoKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoKiBTZXEudW5mb2xkIGlzIG9ubHkgYXZhaWxhYmxlIGZyb20gb2NhbWwgNC4xMSAqKVxuICAgIHNlcV91bmZvbGQgZiAoKVxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiA/ZmluIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgP2ZpbiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW5fbm9lcnIgaWM7IGZpbiAoKSBpblxuICAgIHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpY1xuXG4gIGxldCBsaXN0X2Zyb21fc3RyaW5nID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IHNlcSA9IHNlcV9mcm9tX3N0cmluZyA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgaW5cbiAgICBMaXN0Lm9mX3NlcSBzZXFcblxuICBsZXQgbGlzdF9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgc2VxID0gc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgaW5cbiAgICBMaXN0Lm9mX3NlcSBzZXFcblxuICBsZXQgbGlzdF9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWU6c3JjID9sbnVtIHJlYWQgZm5hbWUgPVxuICAgIGxldCBmbmFtZTAgPVxuICAgICAgbWF0Y2ggc3JjIHdpdGhcbiAgICAgICAgICBOb25lIC0+IGZuYW1lXG4gICAgICAgIHwgU29tZSBzIC0+IHNcbiAgICBpblxuICAgIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luX25vZXJyIGljIGluXG4gICAgbGlzdF9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpY1xuXG4gIGxldCB0b19zdHJpbmcgPyhsZW4gPSAxMDI0KSB3cml0ZSB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlIG9iIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHRvX2NoYW5uZWwgPyhsZW4gPSAxMDI0KSB3cml0ZSBvYyB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlIG9iIHg7XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2JcblxuICBsZXQgdG9fZmlsZSA/bGVuIHdyaXRlIGZuYW1lIHggPVxuICAgIG91dHB1dF9maWxlIGZuYW1lIChmdW4gb2MgLT4gdG9fY2hhbm5lbCA/bGVuIHdyaXRlIG9jIHgpXG5cbiAgbGV0IHNlcV90b19zdHJpbmcgPyhsZW4gPSAxMDI0KSA/KGxmID0gXCJcXG5cIikgd3JpdGUgc2VxID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIFNlcS5pdGVyIChmdW4geCAtPiB3cml0ZSBvYiB4OyBCdWZmZXIuYWRkX3N0cmluZyBvYiBsZikgc2VxO1xuICAgIEJ1ZmZlci5jb250ZW50cyBvYlxuXG4gIGxldCBzZXFfdG9fY2hhbm5lbCA/KGxlbiA9IDEwMjQpID8obGYgPSBcIlxcblwiKSB3cml0ZSBvYyBzZXEgPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgU2VxLml0ZXIgKGZ1biB4IC0+IHdyaXRlIG9iIHg7IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIGxmKSBzZXE7XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2JcblxuICBsZXQgc2VxX3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgc2VxID1cbiAgICBvdXRwdXRfZmlsZSBmbmFtZSAoZnVuIG9jIC0+IHNlcV90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIHNlcSlcblxuICBsZXQgbGlzdF90b19zdHJpbmcgP2xlbiA/bGYgd3JpdGUgbCA9XG4gICAgc2VxX3RvX3N0cmluZyA/bGVuID9sZiB3cml0ZSAoTGlzdC50b19zZXEgbClcblxuICBsZXQgbGlzdF90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIGwgPVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBsaXN0X3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgIGwgPVxuICAgIHNlcV90b19maWxlID9sZW4gP2xmIHdyaXRlIGZuYW1lIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyIGxvYyBuYW1lID1cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiRm91bmQgdW5rbm93biBKU09OIGZpZWxkICVzIHdoaWxlIGV4cGVjdGluZyB0eXBlIGRlZmluZWQgYXQ6ICVzXCJcbiAgICAgICAgbmFtZSBsb2NcbiAgICBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIGxldCB1bmtub3duX2ZpZWxkX2hhbmRsZXIgPSByZWYgcHJlc2V0X3Vua25vd25fZmllbGRfaGFuZGxlclxuZW5kXG5cbm1vZHVsZSBWYWxpZGF0aW9uID1cbnN0cnVjdFxuICB0eXBlIHBhdGhfZWxlbSA9IFsgYEZpZWxkIG9mIHN0cmluZyB8IGBJbmRleCBvZiBpbnQgXVxuICB0eXBlIHBhdGggPSBwYXRoX2VsZW0gbGlzdFxuXG4gIGxldCBzdHJpbmdfb2ZfcGF0aCBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKFxuICAgICAgTGlzdC5yZXZfbWFwIChcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IGBGaWVsZCBzIC0+IFwiLlwiIF4gc1xuICAgICAgICAgIHwgYEluZGV4IG4gLT4gXCJbXCIgXiBzdHJpbmdfb2ZfaW50IG4gXiBcIl1cIlxuICAgICAgKSBsXG4gICAgKVxuXG4gIHR5cGUgZXJyb3IgPSB7XG4gICAgZXJyb3JfcGF0aCA6IHBhdGg7XG4gICAgZXJyb3JfbXNnIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBlcnJvciA/bXNnIHBhdGggPSB7XG4gICAgZXJyb3JfcGF0aCA9IHBhdGg7XG4gICAgZXJyb3JfbXNnID0gbXNnO1xuICB9XG5cbiAgbGV0IHN0cmluZ19vZl9lcnJvciB4ID1cbiAgICBsZXQgcGF0aCA9IHN0cmluZ19vZl9wYXRoIHguZXJyb3JfcGF0aCBpblxuICAgIG1hdGNoIHguZXJyb3JfbXNnIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICAgIFwiVmFsaWRhdGlvbiBlcnJvcjsgcGF0aCA9IDxyb290PlwiIF4gcGF0aFxuICAgICAgfCBTb21lIG1zZyAtPlxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiVmFsaWRhdGlvbiBlcnJvcjogJXM7IHBhdGggPSA8cm9vdD4lc1wiIG1zZyBwYXRoXG5lbmRcbiIsImxldCB2YWxpZGF0ZV9saXN0IGYgcGF0aCBsID1cbiAgbGV0IHJlYyBsb29wIGYgcGF0aCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgc3VicGF0aCA9IGBJbmRleCBpIDo6IHBhdGggaW5cbiAgICAgICAgbWF0Y2ggZiBzdWJwYXRoIHggd2l0aFxuICAgICAgICAgICAgTm9uZSAtPiBsb29wIGYgcGF0aCAoaSsxKSBsXG4gICAgICAgICAgfCBlcnIgLT4gZXJyXG4gIGluXG4gIGxvb3AgZiBwYXRoIDAgbFxuXG5sZXQgdmFsaWRhdGVfYXJyYXkgZiBwYXRoIGEgPVxuICBsZXQgcmVjIGxvb3AgZiBwYXRoIGEgbGVuIGkgPVxuICAgIGlmIGkgPj0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKGBJbmRleCBpIDo6IHBhdGgpIGEuKGkpIHdpdGhcbiAgICAgICAgICBOb25lIC0+IGxvb3AgZiBwYXRoIGEgbGVuIChpKzEpXG4gICAgICAgIHwgZXJyIC0+IGVyclxuICBpblxuICBsb29wIGYgcGF0aCBhIChBcnJheS5sZW5ndGggYSkgMFxuXG5sZXQgdmFsaWRhdGVfb3B0aW9uIGYgcGF0aCA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IGYgcGF0aCB4XG4iLCIoKlxuICBSdW50aW1lIGxpYnJhcnkgZm9yIEpTT05cbiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgJ2Egd3JpdGUgPSBCdWZmZXIudCAtPiAnYSAtPiB1bml0XG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxuKCpcbiAgRXJyb3IgbWVzc2FnZXNcbiopXG5sZXQgZXJyb3IgcyA9IHJhaXNlIChFcnJvciBzKVxuXG5sZXQgZXJyb3Jfd2l0aF9saW5lIHAgcyA9XG4gIGxldCBzMiA9XG4gICAgbWF0Y2ggcC5Zb2pzb24uTGV4ZXJfc3RhdGUuZm5hbWUgd2l0aFxuICAgICAgU29tZSBmIC0+IHNwcmludGYgXCJGaWxlICVzLCBsaW5lICVpOlxcbiVzXCIgZiBwLllvanNvbi5MZXhlcl9zdGF0ZS5sbnVtIHNcbiAgICB8IE5vbmUgLT4gc3ByaW50ZiBcIkxpbmUgJWk6XFxuJXNcIiBwLllvanNvbi5MZXhlcl9zdGF0ZS5sbnVtIHNcbiAgaW5cbiAgcmFpc2UgKEVycm9yIHMyKVxuXG5cbmxldCBsaXN0X2l0ZXIgZiBzZXAgeCBsID1cbiAgbGV0IHJlYyBhdXggZiBzZXAgeCA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgeSA6OiBsIC0+XG4gICAgICAgIHNlcCB4O1xuICAgICAgICBmIHggeTtcbiAgICAgICAgYXV4IGYgc2VwIHggbFxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+ICgpXG4gICAgfCB5IDo6IGwgLT5cbiAgICAgICAgZiB4IHk7XG4gICAgICAgIGF1eCBmIHNlcCB4IGxcblxubGV0IGFycmF5X2l0ZXIgZiBzZXAgeCBhID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggYSBpblxuICBpZiBuID4gMCB0aGVuIChcbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSAwKTtcbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIHNlcCB4O1xuICAgICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lXG4gIClcblxubGV0IHdyaXRlX2NvbW1hIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgd3JpdGVfbGlzdCB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBsaXN0X2l0ZXIgd3JpdGVfaXRlbSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCB3cml0ZV9hcnJheSB3cml0ZV9pdGVtIG9iIGEgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBhcnJheV9pdGVyIHdyaXRlX2l0ZW0gd3JpdGVfY29tbWEgb2IgYTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgd3JpdGVfYXNzb2NfbGlzdCB3cml0ZV9rZXkgd3JpdGVfaXRlbSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgbGlzdF9pdGVyIChcbiAgICBmdW4gb2IgKGssIHYpIC0+XG4gICAgICB3cml0ZV9rZXkgb2IgaztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICB3cml0ZV9pdGVtIG9iIHZcbiAgKSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCB3cml0ZV9hc3NvY19hcnJheSB3cml0ZV9rZXkgd3JpdGVfaXRlbSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgYXJyYXlfaXRlciAoXG4gICAgZnVuIG9iIChrLCB2KSAtPlxuICAgICAgd3JpdGVfa2V5IG9iIGs7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgd3JpdGVfaXRlbSBvYiB2XG4gICkgd3JpdGVfY29tbWEgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5cbmxldCB3cml0ZV9vcHRpb24gd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjxcXFwiTm9uZVxcXCI+XCJcbiAgfCBTb21lIHggLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPFxcXCJTb21lXFxcIjpcIjtcbiAgICAgIHdyaXRlX2l0ZW0gb2IgeDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPlwiXG5cbmxldCB3cml0ZV9zdGRfb3B0aW9uIHdyaXRlX2l0ZW0gb2IgPSBmdW5jdGlvblxuICAgIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiTm9uZVxcXCJcIlxuICB8IFNvbWUgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNvbWVcXFwiLFwiO1xuICAgICAgd3JpdGVfaXRlbSBvYiB4O1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJdXCJcblxubGV0IHdyaXRlX251bGxhYmxlIHdyaXRlX2l0ZW0gb2IgPSBmdW5jdGlvblxuICAgIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcbiAgfCBTb21lIHggLT4gd3JpdGVfaXRlbSBvYiB4XG5cbmxldCB3cml0ZV9pbnRfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgWW9qc29uLlNhZmUud3JpdGVfaW50IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCB3cml0ZV9pbnQ4IG9iIHggPVxuICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2IgKGludF9vZl9jaGFyIHgpXG5cbmxldCB3cml0ZV9pbnQ4X2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDggb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHdyaXRlX2ludDMyIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoSW50MzIudG9fc3RyaW5nIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9pbnQzMiBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgd3JpdGVfaW50NjQgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChJbnQ2NC50b19zdHJpbmcgeClcblxubGV0IHdyaXRlX2ludDY0X2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDY0IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBtaW5fZmxvYXQgPSBmbG9hdCBtaW5faW50XG5sZXQgbWF4X2Zsb2F0ID0gZmxvYXQgbWF4X2ludFxuXG5sZXQgd3JpdGVfZmxvYXRfYXNfaW50IG9iIHggPVxuICBpZiB4ID49IG1pbl9mbG9hdCAmJiB4IDw9IG1heF9mbG9hdCB0aGVuXG4gICAgWW9qc29uLlNhZmUud3JpdGVfaW50IG9iXG4gICAgICAoaW50X29mX2Zsb2F0IChpZiB4IDwgMC4gdGhlbiB4IC0uIDAuNSBlbHNlIHggKy4gMC41KSlcbiAgZWxzZVxuICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgICAgICBGUF9ub3JtYWxcbiAgICAgIHwgRlBfc3Vibm9ybWFsXG4gICAgICB8IEZQX3plcm8gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgKFByaW50Zi5zcHJpbnRmIFwiJS4wZlwiIHgpXG4gICAgICB8IEZQX2luZmluaXRlIC0+IGVycm9yIFwiQ2Fubm90IGNvbnZlcnQgaW5mIG9yIC1pbmYgaW50byBhIEpTT04gaW50XCJcbiAgICAgIHwgRlBfbmFuIC0+IGVycm9yIFwiQ2Fubm90IGNvbnZlcnQgTmFOIGludG8gYSBKU09OIGludFwiXG5cbmxldCB3cml0ZV9mbG9hdF9hc19pbnRfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfZmxvYXRfYXNfaW50IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbnR5cGUgJ2EgcmVhZCA9IFlvanNvbi5sZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+ICdhXG5cbmxldCByZWFkX251bGwgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9udWxsIHAgbGJcblxubGV0IHJlYWRfYm9vbCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2Jvb2wgcCBsYlxuXG5sZXQgcmVhZF9pbnQgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQgcCBsYlxuXG5sZXQgcmVhZF9pbnQ4IHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50OCBwIGxiXG5cbmxldCByZWFkX2ludDMyIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50MzIgcCBsYlxuXG5sZXQgcmVhZF9pbnQ2NCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludDY0IHAgbGJcblxubGV0IHJlYWRfbnVtYmVyIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfbnVtYmVyIHAgbGJcblxubGV0IHJlYWRfc3RyaW5nIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nIHAgbGJcblxubGV0IHJlYWRfanNvbiBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2pzb24gcCBsYlxuXG5sZXQgcmVhZF9saXN0IHJlYWRfaXRlbSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2xpc3QgcmVhZF9pdGVtIHAgbGJcblxubGV0IHJlYWRfYXJyYXkgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfYXJyYXkgcmVhZF9pdGVtIHAgbGJcblxubGV0IHJlYWRfYXNzb2NfbGlzdF9yZXYgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIGxldCByZWFkIGFjYyBrIHAgbGIgPSAoaywgcmVhZF9pdGVtIHAgbGIpIDo6IGFjYyBpblxuICBZb2pzb24uU2FmZS5yZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkIFtdIHAgbGJcblxubGV0IHJlYWRfYXNzb2NfbGlzdCByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIExpc3QucmV2IChyZWFkX2Fzc29jX2xpc3RfcmV2IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiKVxuXG5sZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT4gW3wgfF1cbiAgICB8IHggOjogdGwgLT5cbiAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFcblxubGV0IHJlYWRfYXNzb2NfYXJyYXkgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIgPVxuICBhcnJheV9vZl9yZXZfbGlzdCAocmVhZF9hc3NvY19saXN0X3JldiByZWFkX2tleSByZWFkX2l0ZW0gcCBsYilcblxubGV0IHJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9jb2xvbiBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGJcblxubGV0IG1pc3NpbmdfdHVwbGVfZmllbGRzIHAgbGVuIHJlcV9maWVsZHMgPVxuICBsZXQgbWlzc2luZyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IChcbiAgICAgIGZ1biBpIGFjYyAtPiBpZiBpID49IGxlbiB0aGVuIGkgOjogYWNjIGVsc2UgYWNjXG4gICAgKSByZXFfZmllbGRzIFtdXG4gIGluXG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyB0dXBsZSBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoIG1pc3NpbmcgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgbWlzc2luZykpKVxuXG5sZXQgbWlzc2luZ19maWVsZCBwIGZpZWxkX25hbWUgPVxuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIk1pc3NpbmcgcmVjb3JkIGZpZWxkICVzXCIgZmllbGRfbmFtZSlcblxubGV0IG1pc3NpbmdfZmllbGRzIHAgYml0X2ZpZWxkcyBmaWVsZF9uYW1lcyA9XG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgZm9yIHogPSBBcnJheS5sZW5ndGggZmllbGRfbmFtZXMgLSAxIGRvd250byAwIGRvXG4gICAgbGV0IGkgPSB6IC8gMzEgaW5cbiAgICBsZXQgaiA9IHogbW9kIDMxIGluXG4gICAgaWYgYml0X2ZpZWxkcy4oaSkgbGFuZCAoMSBsc2wgaikgPSAwIHRoZW5cbiAgICAgIGFjYyA6PSBmaWVsZF9uYW1lcy4oeikgOjogIWFjY1xuICBkb25lO1xuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIk1pc3NpbmcgcmVjb3JkIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggIWFjYyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAhYWNjKSlcblxubGV0IGludmFsaWRfdmFyaWFudF90YWcgcCBzID1cbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJVbnN1cHBvcnRlZCB2YXJpYW50ICVTXCIgcylcblxubGV0IHJlYWRfd2l0aF9hZGFwdGVyIG5vcm1hbGl6ZSByZWFkZXIgcCBsYiA9XG4gIGxldCBhc3QgPSBZb2pzb24uU2FmZS5yZWFkX2pzb24gcCBsYiBpblxuICBsZXQgYXN0JyA9IG5vcm1hbGl6ZSBhc3QgaW5cbiAgbGV0IHMnID0gWW9qc29uLlNhZmUudG9fc3RyaW5nIGFzdCcgaW5cbiAgbGV0IGxiJyA9IExleGluZy5mcm9tX3N0cmluZyBzJyBpblxuICByZWFkZXIgcCBsYidcblxubGV0IHdyaXRlX3dpdGhfYWRhcHRlciByZXN0b3JlIHdyaXRlciBvYiB4ID1cbiAgbGV0IG9iX3RtcCA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICB3cml0ZXIgb2JfdG1wIHg7XG4gIGxldCBzX3RtcCA9IEJ1ZmZlci5jb250ZW50cyBvYl90bXAgaW5cbiAgbGV0IGFzdCA9IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHNfdG1wIGluXG4gIGxldCBhc3QnID0gcmVzdG9yZSBhc3QgaW5cbiAgWW9qc29uLlNhZmUudG9fYnVmZmVyIG9iIGFzdCdcblxuKCpcbiAgQ2hlY2tpbmcgYXQgcnVudGltZSB0aGF0IG91ciBhc3N1bXB0aW9ucyBvbiB1bnNwZWNpZmllZCBjb21waWxlciBiZWhhdmlvclxuICBzdGlsbCBob2xkLlxuICAgVE9ETzogd2hhdCBhcmUgdGhlc2UgYXNzdW1wdGlvbnMgYW5kIHdoaWNoIGNvbXBvbmVudCBtYWtlcyB0aGVtP1xuKilcbnR5cGUgdCA9IHtcbiAgX2EgOiBpbnQgb3B0aW9uO1xuICBfYiA6IGludDtcbn1cblxuKCogVGhpcyBtdXN0IGJlIGEgdGVzdCBmb3IgdGhlIHR5cGUgY2hlY2tlciBzaW5jZSB0aGUgZnVuY3Rpb24gaXNuJ3QgdXNlZFxuICAgYW55d2hlcmUuICopXG5sZXQgX3Rlc3QgKCkgPVxuICB7IHsgX2EgPSBOb25lOyBfYiA9IEFycmF5Lmxlbmd0aCBTeXMuYXJndiB9IHdpdGggX2EgPSBOb25lIH1cbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbigqXG4gIFJ1bnRpbWUgbGlicmFyeVxuKilcblxub3BlbiBQcmludGZcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG4oKlxuICBFcnJvciBtZXNzYWdlc1xuKilcbmxldCBlcnJvciBzID0gcmFpc2UgKEVycm9yIHMpXG5cbmxldCByZWFkX2Vycm9yICgpID1cbiAgZXJyb3IgXCJSZWFkIGVycm9yXCJcblxubGV0IHJlYWRfZXJyb3JfYXQgaWIgPVxuICBlcnJvciAoc3ByaW50ZiBcIlJlYWQgZXJyb3IgKCVpKVwiIGliLkJpX2luYnVmLmlfcG9zKVxuXG5sZXQgdGFnX2Vycm9yIHRhZyBzID1cbiAgZXJyb3IgKHNwcmludGYgXCJGb3VuZCB3cm9uZyB0YWcgJWkgZm9yICVzXCIgdGFnIHMpXG5cbmxldCB1bnN1cHBvcnRlZF92YXJpYW50IGggaGFzX2FyZyA9XG4gIGVycm9yIChzcHJpbnRmIFwiVW5zdXBwb3J0ZWQgdmFyaWFudCAoaGFzaD0laSwgYXJnPSVCKVwiIGggaGFzX2FyZylcblxuXG5sZXQgbWlzc2luZ190dXBsZV9maWVsZHMgbGVuIHJlcV9maWVsZHMgPVxuICBsZXQgbWlzc2luZyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IChcbiAgICAgIGZ1biBpIGFjYyAtPiBpZiBpID49IGxlbiB0aGVuIGkgOjogYWNjIGVsc2UgYWNjXG4gICAgKSByZXFfZmllbGRzIFtdXG4gIGluXG4gIGVycm9yIChzcHJpbnRmIFwiTWlzc2luZyB0dXBsZSBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoIG1pc3NpbmcgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgbWlzc2luZykpKVxuXG5cbmxldCBtaXNzaW5nX2ZpZWxkcyBiaXRfZmllbGRzIGZpZWxkX25hbWVzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBmb3IgeiA9IEFycmF5Lmxlbmd0aCBmaWVsZF9uYW1lcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgaSA9IHogLyAzMSBpblxuICAgIGxldCBqID0geiBtb2QgMzEgaW5cbiAgICBpZiBiaXRfZmllbGRzLihpKSBsYW5kICgxIGxzbCBqKSA9IDAgdGhlblxuICAgICAgYWNjIDo9IGZpZWxkX25hbWVzLih6KSA6OiAhYWNjXG4gIGRvbmU7XG4gIGVycm9yIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCAhYWNjID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiICFhY2MpKVxuXG5cbigqXG4gIFJlYWRlcnNcbiopXG5cbmxldCBnZXRfdW5pdF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8udW5pdF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfdW5pdFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcInVuaXRcIlxuXG5sZXQgcmVhZF91bml0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby51bml0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF91bml0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfYm9vbF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uYm9vbF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfYm9vbFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImJvb2xcIlxuXG5sZXQgcmVhZF9ib29sIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5ib29sX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9ib29sIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50X3JlYWRlciB0YWcgPVxuICBtYXRjaCB0YWcgd2l0aFxuICAgICAgMSAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDhcbiAgICB8IDIgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNlxuICAgIHwgMTYgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF91dmludFxuICAgIHwgMTcgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9zdmludFxuICAgIHwgXyAtPiB0YWdfZXJyb3IgdGFnIFwiaW50XCJcblxubGV0IHJlYWRfaW50IGliID1cbiAgbWF0Y2ggQmlfaW8ucmVhZF90YWcgaWIgd2l0aFxuICAgICAgMSAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDggaWJcbiAgICB8IDIgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNiBpYlxuICAgIHwgMTYgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF91dmludCBpYlxuICAgIHwgMTcgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9zdmludCBpYlxuICAgIHwgXyAtPiByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfY2hhcl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50OF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfY2hhclxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImNoYXJcIlxuXG5sZXQgcmVhZF9jaGFyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQ4X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9jaGFyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50MTZfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDE2X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImludDE2XCJcblxubGV0IHJlYWRfaW50MTYgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDE2X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludDMyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MzJcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJpbnQzMlwiXG5cbmxldCByZWFkX2ludDMyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MzIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnQ2NF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDY0XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiaW50NjRcIlxuXG5sZXQgcmVhZF9pbnQ2NCBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDY0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfZmxvYXQzMl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uZmxvYXQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQzMlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImZsb2F0MzJcIlxuXG5sZXQgZ2V0X2Zsb2F0NjRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmZsb2F0NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0NjRcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJmbG9hdDY0XCJcblxubGV0IGdldF9mbG9hdF9yZWFkZXIgPSBnZXRfZmxvYXQ2NF9yZWFkZXJcblxubGV0IHJlYWRfZmxvYXQzMiBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uZmxvYXQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9mbG9hdDY0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5mbG9hdDY0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2Zsb2F0ID0gcmVhZF9mbG9hdDY0XG5cbmxldCBnZXRfc3RyaW5nX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5zdHJpbmdfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3N0cmluZ1xuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcInN0cmluZ1wiXG5cbmxldCByZWFkX3N0cmluZyBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uc3RyaW5nX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9zdHJpbmcgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgcmVhZGVyID0gZ2V0X3JlYWRlciAoQmlfaW8ucmVhZF90YWcgaWIpIGluXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAocmVhZGVyIGliKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSAocmVhZGVyIGliKVxuICAgIGRvbmU7XG4gICAgYVxuXG5sZXQgcmVhZF9saXN0X3ZhbHVlIGdldF9yZWFkZXIgaWIgPVxuICBBcnJheS50b19saXN0IChyZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWIpXG5cbmxldCBnZXRfYXJyYXlfcmVhZGVyIGdldF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uYXJyYXlfdGFnIHRoZW5cbiAgICByZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXJcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJhcnJheVwiXG5cbmxldCBnZXRfbGlzdF9yZWFkZXIgZ2V0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5hcnJheV90YWcgdGhlblxuICAgIGZ1biBpYiAtPiBBcnJheS50b19saXN0IChyZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWIpXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwibGlzdFwiXG5cbmxldCByZWFkX2FycmF5IGdldF9yZWFkZXIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmFycmF5X3RhZyB0aGVuXG4gICAgcmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2xpc3QgcmVhZCBpYiA9XG4gIEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXkgcmVhZCBpYilcblxuXG4oKlxuICBXcml0ZXJzXG4qKVxuXG5sZXQgd3JpdGVfdGFnZ2VkIHRhZyB3cml0ZSBidWYgeCA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgdGFnO1xuICB3cml0ZSBidWYgeFxuXG5sZXQgd3JpdGVfdW50YWdnZWRfb3B0aW9uIHdyaXRlIGJ1ZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBOb25lIC0+IEJpX2lvLndyaXRlX251bXRhZyBidWYgMCBmYWxzZVxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJpX2lvLndyaXRlX251bXRhZyBidWYgMCB0cnVlO1xuICAgICAgICB3cml0ZSBidWYgeFxuXG5sZXQgd3JpdGVfb3B0aW9uIHdyaXRlIGJ1ZiB4ID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5udW1fdmFyaWFudF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX29wdGlvbiB3cml0ZSBidWYgeFxuXG5sZXQgYXJyYXlfaW5pdDIgbGVuIHggZiA9XG4gIGlmIGxlbiA9IDAgdGhlbiBbfCB8XVxuICBlbHNlXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAoZiAwIHgpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIChmIGkgeClcbiAgICBkb25lO1xuICAgIGFcblxubGV0IGFycmF5X2luaXQzIGxlbiB4IHkgZiA9XG4gIGlmIGxlbiA9IDAgdGhlbiBbfCB8XVxuICBlbHNlXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAoZiAwIHggeSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgKGYgaSB4IHkpXG4gICAgZG9uZTtcbiAgICBhXG5cbmxldCBhcnJheV9pdGVyMiBmIHggYSA9XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG5cbmxldCBhcnJheV9pdGVyMyBmIHggeSBhID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgIGYgeCB5IChBcnJheS51bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuXG5cbmxldCByZWMgbGlzdF9pdGVyMiBmIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmIHggeTtcbiAgICAgIGxpc3RfaXRlcjIgZiB4IGxcblxubGV0IHJlYyBsaXN0X2l0ZXIzIGYgeCB5ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHogOjogbCAtPlxuICAgICAgZiB4IHkgejtcbiAgICAgIGxpc3RfaXRlcjMgZiB4IHkgbFxuXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBCaV92aW50LndyaXRlX3V2aW50IGJ1ZiBsZW47XG4gIGlmIGxlbiA+IDAgdGhlbiAoXG4gICAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBjZWxsX3RhZztcbiAgICBhcnJheV9pdGVyMiB3cml0ZSBidWYgYVxuICApXG5cbmxldCB3cml0ZV9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYSA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgQmlfaW8uYXJyYXlfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfbGlzdCBjZWxsX3RhZyB3cml0ZSBidWYgbCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gIEJpX3ZpbnQud3JpdGVfdXZpbnQgYnVmIGxlbjtcbiAgaWYgbGVuID4gMCB0aGVuIChcbiAgICBCaV9pby53cml0ZV90YWcgYnVmIGNlbGxfdGFnO1xuICAgIGxpc3RfaXRlcjIgd3JpdGUgYnVmIGxcbiAgKVxuXG5sZXQgd3JpdGVfbGlzdCBjZWxsX3RhZyB3cml0ZSBidWYgbCA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgQmlfaW8uYXJyYXlfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsXG5cbigqXG4gIHNob3J0Y3V0IGZvciBnZXR0aW5nIHRoZSB0YWcgb2YgYSBwb2x5bW9ycGhpYyB2YXJpYW50IHNpbmNlXG4gIGJpbmlvdSB1c2VzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uXG4gICh1c2VmdWxuZXNzPylcbiopXG5sZXQgZ2V0X3BvbHlfdGFnICh4IDogWz4gXSkgPVxuICBsZXQgciA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLmlzX2Jsb2NrIHIgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgciAwKSA6IGludClcbiAgZWxzZVxuICAgIChPYmoub2JqIHIgOiBpbnQpXG5cbigqIFdlIHdhbnQgYW4gaWRlbnRpdHkgZnVuY3Rpb24gdGhhdCBpcyBub3QgaW5saW5lZCAqKVxudHlwZSBpZGVudGl0eV90ID0geyBtdXRhYmxlIF9pZGVudGl0eSA6ICdhLiAnYSAtPiAnYSB9XG5sZXQgaWRlbnRpdHlfcmVmID0geyBfaWRlbnRpdHkgPSAoZnVuIHggLT4geCkgfVxubGV0IGlkZW50aXR5IHggPSBpZGVudGl0eV9yZWYuX2lkZW50aXR5IHhcblxuKCpcbiAgQ2hlY2tpbmcgYXQgcnVudGltZSB0aGF0IG91ciBhc3N1bXB0aW9ucyBvbiB1bnNwZWNpZmllZCBjb21waWxlciBiZWhhdmlvclxuICBzdGlsbCBob2xkLlxuKilcblxudHlwZSB0ID0ge1xuICBfYSA6IGludCBvcHRpb247XG4gIF9iIDogaW50O1xufVxuXG5sZXQgY3JlYXRlICgpID1cbiAgeyB7IF9hID0gTm9uZTsgX2IgPSBBcnJheS5sZW5ndGggU3lzLmFyZ3YgfSB3aXRoIF9hID0gTm9uZSB9XG5cbigqXG4gICBUaGlzIGlzIGEgcnVudGltZSB0ZXN0IHRoYXQgY2hlY2tzIHdoZXRoZXIgb3VyIGFzc3VtcHRpb25zIGFib3V0XG4gICB0aGUgY29tcGlsZXIgc3RpbGwgaG9sZC5cblxuICAgV2UgZ2V0IHRoZSBmb2xsb3dpbmcgd2FybmluZyB3aGVuIHVzaW5nIGFuIE9DYW1sIGNvbXBpbGVyIGJ1aWx0XG4gICB3aXRoIHRoZSBmbGFtYmRhIG9wdGltaXphdGlvbi4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2Qgd2FybmluZ1xuICAgYW5kIHNob3VsZG4ndCBiZSBpZ25vcmVkIGlmIHRoZSBPQ2FtbC9iaW5pb3UgaXMgdG8gYmUgdXNlZC5cbiAgIFRoaXMgd29uJ3QgYWZmZWN0IHRoZSBPQ2FtbC9KU09OIGJhY2tlbmQuXG5cbiAgID4gV2FybmluZyA1OSBbZmxhbWJkYS1hc3NpZ25tZW50LXRvLW5vbi1tdXRhYmxlLXZhbHVlXTogQSBwb3RlbnRpYWxcbiAgID4gYXNzaWdubWVudCB0byBhIG5vbi1tdXRhYmxlIHZhbHVlIHdhcyBkZXRlY3RlZCBpbiB0aGlzIHNvdXJjZSBmaWxlLlxuICAgPiBTdWNoIGFzc2lnbm1lbnRzIG1heSBnZW5lcmF0ZSBpbmNvcnJlY3QgY29kZSB3aGVuIHVzaW5nIEZsYW1iZGEuXG4qKVxubGV0IHRlc3QgKCkgPVxuICBsZXQgciA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdiA9IFNvbWUgMTcgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgcikgMCAoT2JqLnJlcHIgdik7XG4gIGxldCBzYWZlX3IgPSBpZGVudGl0eSByIGluXG4gICgqIHIuX2EgaXMgaW5saW5lZCBieSBvY2FtbG9wdCBhbmQgZXF1YWxzIE5vbmVcbiAgICAgYmVjYXVzZSB0aGUgZmllbGQgaXMgc3VwcG9zZWQgdG8gYmUgaW1tdXRhYmxlLiAqKVxuICBhc3NlcnQgKHNhZmVfci5fYSA9IHYpXG5cbmxldCAoKSA9IHRlc3QgKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiIsIigqIEpzb24gYWRhcHRlcnMuIFNlZSAubWxpLiAqKVxuXG5sZXQgbm9ybWFsaXplX3R5cGVfZmllbGQgdHlwZV9maWVsZF9uYW1lICh4IDogWW9qc29uLlNhZmUudCkgOiBZb2pzb24uU2FmZS50ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYEFzc29jIGZpZWxkcyAtPlxuICAgICAgKG1hdGNoIExpc3QuYXNzb2MgdHlwZV9maWVsZF9uYW1lIGZpZWxkcyB3aXRoXG4gICAgICAgfCBgU3RyaW5nIHR5cGVfIC0+IGBMaXN0IFsgYFN0cmluZyB0eXBlXzsgeCBdXG4gICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IHhcbiAgICAgICB8IF8gLT4geCAoKiBtYWxmb3JtZWQgKilcbiAgICAgIClcbiAgfCBgU3RyaW5nIHR5cGVfIGFzIHggLT4geFxuICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxubGV0IHJlc3RvcmVfdHlwZV9maWVsZCB0eXBlX2ZpZWxkX25hbWUgKHggOiBZb2pzb24uU2FmZS50KSA6IFlvanNvbi5TYWZlLnQgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTGlzdCBbIGBTdHJpbmcgdHlwZV87IGBBc3NvYyBmaWVsZHMgXSAtPlxuICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICh0eXBlX2ZpZWxkX25hbWUsIGBTdHJpbmcgdHlwZV8pIDo6XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4gKGssIHYpIC0+IGsgPD4gdHlwZV9maWVsZF9uYW1lKSBmaWVsZHNcbiAgICAgIGluXG4gICAgICBgQXNzb2MgZmllbGRzXG4gIHwgYFN0cmluZyB0eXBlXyBhcyB4IC0+IHhcbiAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdmFsIG5vcm1hbGl6ZSA6IFlvanNvbi5TYWZlLnQgLT4gWW9qc29uLlNhZmUudFxuICB2YWwgcmVzdG9yZSA6IFlvanNvbi5TYWZlLnQgLT4gWW9qc29uLlNhZmUudFxuZW5kXG5cbm1vZHVsZSBUeXBlX2ZpZWxkID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFBhcmFtID0gc2lnXG4gICAgdmFsIHR5cGVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoUGFyYW0gOiBQYXJhbSkgOiBTID0gc3RydWN0XG4gICAgbGV0IG5vcm1hbGl6ZSA9IG5vcm1hbGl6ZV90eXBlX2ZpZWxkIFBhcmFtLnR5cGVfZmllbGRfbmFtZVxuXG4gICAgbGV0IHJlc3RvcmUgPSByZXN0b3JlX3R5cGVfZmllbGQgUGFyYW0udHlwZV9maWVsZF9uYW1lXG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X3BhcmFtIDogUGFyYW0gPSBzdHJ1Y3RcbiAgICBsZXQgdHlwZV9maWVsZF9uYW1lID0gXCJ0eXBlXCJcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlIChEZWZhdWx0X3BhcmFtKVxuZW5kXG5cbm1vZHVsZSBPbmVfZmllbGQgPSBzdHJ1Y3RcbiAgb3BlbiBZb2pzb24uU2FmZVxuXG4gIGxldCBub3JtYWxpemUgKHggOiB0KSA6IHQgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgYEFzc29jIFtuYW1lLCB2YWx1ZV0gLT4gYExpc3QgW2BTdHJpbmcgbmFtZTsgdmFsdWVdXG4gICAgfCBgU3RyaW5nIF8gYXMgeCAtPiB4XG4gICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbiAgbGV0IHJlc3RvcmUgKHggOiB0KSA6IHQgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgYExpc3QgW2BTdHJpbmcgbmFtZTsgdmFsdWVdIC0+IGBBc3NvYyBbbmFtZSwgdmFsdWVdXG4gICAgfCBgU3RyaW5nIF8gYXMgeCAtPiB4XG4gICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5lbmRcblxubW9kdWxlIFR5cGVfYW5kX3ZhbHVlX2ZpZWxkcyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBQYXJhbSA9IHNpZ1xuICAgIHZhbCB0eXBlX2ZpZWxkX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsdWVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBrbm93bl90YWdzIDogKHN0cmluZyBsaXN0ICogc3RyaW5nKSBvcHRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFBhcmFtIDogUGFyYW0pIDogUyA9IHN0cnVjdFxuICAgIG9wZW4gWW9qc29uLlNhZmVcbiAgICBvcGVuIFBhcmFtXG5cbiAgICBsZXQgaXNfa25vd25fdGFnID1cbiAgICAgIG1hdGNoIGtub3duX3RhZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IChmdW4gXyAtPiB0cnVlKVxuICAgICAgfCBTb21lIChsLCBfKSAtPlxuICAgICAgICAgIGxldCB0YmwgPSBIYXNodGJsLmNyZWF0ZSAoMiAqIExpc3QubGVuZ3RoIGwpIGluXG4gICAgICAgICAgTGlzdC5pdGVyIChmdW4geCAtPiBIYXNodGJsLmFkZCB0YmwgeCAoKSkgbDtcbiAgICAgICAgICBIYXNodGJsLm1lbSB0YmxcblxuICAgIGxldCBpc19jYXRjaF9hbGxfdGFnID1cbiAgICAgIG1hdGNoIGtub3duX3RhZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IChmdW4gXyAtPiBmYWxzZSlcbiAgICAgIHwgU29tZSAoXywgcykgLT4gKCg9KSBzKVxuXG4gICAgbGV0IGNhdGNoX2FsbF90YWcgKCkgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgKF8sIHMpIC0+IHNcblxuICAgIGxldCB3cmFwX3ZhcmlhbnQgdHlwZV8gdmFsdWUgPVxuICAgICAgbGV0IHZhcmlhbnQgPSBgTGlzdCBbYFN0cmluZyB0eXBlXzsgdmFsdWVdIGluXG4gICAgICBpZiBpc19rbm93bl90YWcgdHlwZV8gdGhlblxuICAgICAgICB2YXJpYW50XG4gICAgICBlbHNlXG4gICAgICAgIGBMaXN0IFsgYFN0cmluZyAoY2F0Y2hfYWxsX3RhZyAoKSk7IHZhcmlhbnQgXVxuXG4gICAgbGV0IHdyYXBfZW51bSB0eXBlXyA9XG4gICAgICBpZiBpc19rbm93bl90YWcgdHlwZV8gdGhlblxuICAgICAgICBgU3RyaW5nIHR5cGVfXG4gICAgICBlbHNlXG4gICAgICAgIGBMaXN0IFsgYFN0cmluZyAoY2F0Y2hfYWxsX3RhZyAoKSk7IGBOdWxsIF1cblxuICAgIGxldCBub3JtYWxpemUgKHggOiB0KSA6IHQgPVxuICAgICAgbGV0IG9wZW4gWW9qc29uLlNhZmUuVXRpbCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBBc3NvYyBmaWVsZHMgLT5cbiAgICAgICAgICBsZXQgdHlwZV8gPSBtZW1iZXIgdHlwZV9maWVsZF9uYW1lIHggfD4gdG9fc3RyaW5nIGluXG4gICAgICAgICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoZnVuICgoaywgdikgYXMgZmllbGQpIC0+XG4gICAgICAgICAgICAgIGlmIGsgPSB2YWx1ZV9maWVsZF9uYW1lIHRoZW4gKFxuICAgICAgICAgICAgICAgIGZvdW5kIDo9IHRydWU7XG4gICAgICAgICAgICAgICAgKGssIHdyYXBfdmFyaWFudCB0eXBlXyB2KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBmaWVsZFxuICAgICAgICAgICAgKSBmaWVsZHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgaWYgIWZvdW5kIHRoZW5cbiAgICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICh2YWx1ZV9maWVsZF9uYW1lLCB3cmFwX2VudW0gdHlwZV8pIDo6IGZpZWxkc1xuICAgICAgICAgIGluXG4gICAgICAgICAgYEFzc29jIGZpZWxkc1xuICAgICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbiAgICBsZXQgdW53cmFwX3ZhbHVlICh4IDogdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBTdHJpbmcgdGFnIC0+ICh0YWcsIE5vbmUpXG4gICAgICB8IGBMaXN0IFtgU3RyaW5nIHRhZzsgdl0gLT5cbiAgICAgICAgICBpZiBpc19jYXRjaF9hbGxfdGFnIHRhZyB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICAgICAgfCBgTGlzdCBbYFN0cmluZyByZWFsX3RhZzsgYE51bGxdIC0+IChyZWFsX3RhZywgTm9uZSlcbiAgICAgICAgICAgIHwgYExpc3QgW2BTdHJpbmcgcmVhbF90YWc7IHJlYWxfdl0gLT4gKHJlYWxfdGFnLCBTb21lIHJlYWxfdilcbiAgICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCAoXCJNYWxmb3JtZWQganNvbiBmaWVsZCBcIiBeIHZhbHVlX2ZpZWxkX25hbWUpXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICh0YWcsIFNvbWUgdilcbiAgICAgIHwgbWFsZm9ybWVkIC0+IGZhaWx3aXRoIChcIk1hbGZvcm1lZCBqc29uIGZpZWxkIFwiIF4gdmFsdWVfZmllbGRfbmFtZSlcblxuICAgIGxldCByZXN0b3JlICh4IDogdCkgOiB0ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgQXNzb2MgZmllbGRzIC0+XG4gICAgICAgICAgbGV0IHR5cGVfID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuICgoaywgdGFnZ2VkKSBhcyBmaWVsZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmIGsgPSB2YWx1ZV9maWVsZF9uYW1lIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCB0YWcsIG9wdF92YWx1ZSA9IHVud3JhcF92YWx1ZSB0YWdnZWQgaW5cbiAgICAgICAgICAgICAgICB0eXBlXyA6PSBTb21lIHRhZztcbiAgICAgICAgICAgICAgICBtYXRjaCBvcHRfdmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodmFsdWVfZmllbGRfbmFtZSwgdikgOjogYWNjXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZSBpZiBrID0gdHlwZV9maWVsZF9uYW1lIHRoZW5cbiAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZpZWxkIDo6IGFjY1xuICAgICAgICAgICAgICApIGZpZWxkcyBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBtYXRjaCAhdHlwZV8gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZpZWxkc1xuICAgICAgICAgICAgfCBTb21lIHRhZyAtPiAodHlwZV9maWVsZF9uYW1lLCBgU3RyaW5nIHRhZykgOjogZmllbGRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBgQXNzb2MgZmllbGRzXG4gICAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBBcnJheSB3aXRoIGR5bmFtaWMgc2l6ZVxuXG4gICAgSXQgdXNlcyBpbXBlcmF0aXZlIHN0eWxlcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIG1vZHVsZXMgKilcblxubW9kdWxlIER5bkFycmF5ID1cbmZ1bmN0b3JcbiAgKEcgOiBHZW5BcnJheS5HZW5BcnJheSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0ge1xuICAgICAgICBtdXRhYmxlIGFycmF5OiAnYSBHLnQ7XG4gICAgICAgIG11dGFibGUgY3VycmVudF9zaXplOiBpbnQ7XG4gICAgICAgIGRlZmF1bHQ6IGludCAtPiAnYTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSBuIGEgPVxuICAgICAgICB7IGFycmF5ID0gRy5jcmVhdGUgbiBhOyBjdXJyZW50X3NpemUgPSBuOyBkZWZhdWx0ID0gKGZ1biBfIC0+IGEpIH1cblxuICAgICAgbGV0IGxlbmd0aCBhID0gYS5jdXJyZW50X3NpemVcblxuICAgICAgbGV0IGV4cGFuZCB0ID1cbiAgICAgICAgbGV0IG4gPSBsZW5ndGggdCBpblxuICAgICAgICBsZXQgbicgPSBtYXggKG4gKyAxKSAobiAqIDIpIGluXG4gICAgICAgIGxldCBhcnJheScgPSBHLmluaXQgbicgdC5kZWZhdWx0IGluXG4gICAgICAgIGxldCAoKSA9IEcuYmxpdCB0LmFycmF5IDAgYXJyYXknIDAgbiBpblxuICAgICAgICBsZXQgKCkgPSB0LmFycmF5IDwtIGFycmF5JyBpblxuICAgICAgICB0LmN1cnJlbnRfc2l6ZSA8LSBuJ1xuXG4gICAgICBsZXQgZ2V0IGEgaSA9XG4gICAgICAgIGlmIGxlbmd0aCBhID4gaSB0aGVuXG4gICAgICAgICAgRy5nZXQgYS5hcnJheSBpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhLmRlZmF1bHQgaVxuXG4gICAgICBsZXQgcmVjIHNldCBhIGkgdiA9XG4gICAgICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgbiA+IGkgdGhlblxuICAgICAgICAgIEcuc2V0IGEuYXJyYXkgaSB2XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGV4cGFuZCBhIGluXG4gICAgICAgICAgc2V0IGEgaSB2XG4gICAgICAgIClcblxuICAgICAgbGV0IG1ha2UgPSBjcmVhdGVcbiAgICAgIGxldCBpbml0IG4gZiA9IHsgYXJyYXkgPSBHLmluaXQgbiBmOyBjdXJyZW50X3NpemUgPSBuOyBkZWZhdWx0ID0gZiB9XG5cbiAgICAgIGxldCBhcHBlbmQgYSBiID1cbiAgICAgICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICAgICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgbGV0IGMgPSBsYSArIGxiIGluXG4gICAgICAgIGluaXQgYyAoZnVuIHggLT5cbiAgICAgICAgICAgIGlmIHggPCBsYSB0aGVuXG4gICAgICAgICAgICAgIGdldCBhIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZ2V0IGIgKHggLSBsYSkpXG5cbiAgICAgIGxldCBjb25jYXQgbCA9XG4gICAgICAgIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biB4IC0+IGxlbmd0aCB4ID4gMCkgbCBpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNBcnJheS5jb25jYXRcIilcbiAgICAgICAgfCB0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgZWx0ID0gZ2V0IHQgMCBpblxuICAgICAgICAgIGxldCBjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzb2wgYSAtPiBzb2wgKyBsZW5ndGggYSkgMCBsIGluXG4gICAgICAgICAgbGV0IG0gPSBjcmVhdGUgYyBlbHQgaW5cbiAgICAgICAgICBsZXQgcmVjIGF1eCBrIGwgPVxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgICBsZXQgcyA9IGxlbmd0aCB0IGluXG4gICAgICAgICAgICAgIGxldCByZWMgYXV4MiBvZmZzZXQgayA9XG4gICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID0gcyB0aGVuXG4gICAgICAgICAgICAgICAgICBhdXggayBxXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBzZXQgbSBrIChnZXQgdCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgYXV4MiAob2Zmc2V0ICsgMSkgKGsgKyAxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXV4MiAwIGtcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGF1eCAwIGwgaW5cbiAgICAgICAgICBtXG5cbiAgICAgIGxldCBzdWIgYSBzdGFydCBsZW4gPVxuICAgICAgICBsZXQgc2l6ZSA9IGxlbmd0aCBhIGluXG4gICAgICAgIGlmIHN0YXJ0IDwgMCB8fCBsZW4gPCAwIHx8IHN0YXJ0ICsgbGVuID4gc2l6ZSB0aGVuXG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEeW5hbWljX2FycmF5LnN1YlwiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5pdCBsZW4gKGZ1biB4IC0+IGdldCBhICh4ICsgc3RhcnQpKVxuXG4gICAgICBsZXQgY29weSBhID1cbiAgICAgICAge1xuICAgICAgICAgIGFycmF5ID0gRy5jb3B5IGEuYXJyYXk7XG4gICAgICAgICAgY3VycmVudF9zaXplID0gYS5jdXJyZW50X3NpemU7XG4gICAgICAgICAgZGVmYXVsdCA9IGEuZGVmYXVsdDtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgZmlsbCBhIHN0YXJ0IGxlbiB4ID1cbiAgICAgICAgbGV0IHJlYyBhdXggayBpID1cbiAgICAgICAgICBpZiBrIDwgbGVuIHRoZW4gKFxuICAgICAgICAgICAgbGV0ICgpID0gc2V0IGEgaSB4IGluXG4gICAgICAgICAgICBhdXggKGsgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2l6ZSA9IGxlbmd0aCBhIGluXG4gICAgICAgIGlmIHN0YXJ0IDwgMCB8fCBsZW4gPCAwIHx8IHN0YXJ0ICsgbGVuID4gc2l6ZSB0aGVuXG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEeW5hbWljX2FycmF5LmZpbGxcIilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGF1eCAwIHN0YXJ0XG5cbiAgICAgIGxldCBvZl9saXN0IH5kZWZhdWx0IGwgPVxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudF9zaXplID0gTGlzdC5sZW5ndGggbDtcbiAgICAgICAgICBhcnJheSA9IEcub2ZfbGlzdCB+ZGVmYXVsdCBsO1xuICAgICAgICAgIGRlZmF1bHQgPSAoZnVuIF8gLT4gZGVmYXVsdCk7XG4gICAgICAgIH1cblxuICAgICAgbGV0IGl0ZXIgZiBhID0gRy5pdGVyIGYgYS5hcnJheVxuICAgICAgbGV0IGl0ZXJpIGYgYSA9IEcuaXRlcmkgZiBhLmFycmF5XG4gICAgICBsZXQgZm9sZF9sZWZ0aSBmIGIgYSA9IEcuZm9sZF9sZWZ0aSBmIGIgYS5hcnJheVxuICAgICAgbGV0IGZvbGRfcmlnaHRpIGYgYSBiID0gRy5mb2xkX3JpZ2h0aSBmIGEuYXJyYXkgYlxuICAgICAgbGV0IG1hcCBmIGEgPSBpbml0IChsZW5ndGggYSkgKGZ1biBpIC0+IGYgKGdldCBhIGkpKVxuXG4gICAgICBsZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgICAgICAgaWZcbiAgICAgICAgICBsZW4gPCAwIHx8IG9mczEgPCAwXG4gICAgICAgICAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgIHx8IG9mczIgPCAwXG4gICAgICAgICAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICAgICAgICB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgXCJEeW5hbWljQXJyYXkuYmxpdFwiXG4gICAgICAgIGVsc2UgaWYgb2ZzMSA8IG9mczIgdGhlblxuICAgICAgICAgICgqIFRvcC1kb3duIGNvcHkgKilcbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIEcuc2V0IGEyLmFycmF5IChvZnMyICsgaSkgKEcuZ2V0IGExLmFycmF5IChvZnMxICsgaSkpXG4gICAgICAgICAgZG9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogQm90dG9tLXVwIGNvcHkgKilcbiAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgICAgRy5zZXQgYTIuYXJyYXkgKG9mczIgKyBpKSAoRy5nZXQgYTEuYXJyYXkgKG9mczEgKyBpKSlcbiAgICAgICAgICBkb25lXG5cbiAgICAgIGxldCBwcmludCA/dHJhaWxpbmcgcHJfcyBwcl9hIGYgYSA9IEcucHJpbnQgP3RyYWlsaW5nIHByX3MgcHJfYSBmIGEuYXJyYXlcbiAgICBlbmQgOlxuICAgICAgR2VuQXJyYXkuR2VuQXJyYXkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSBVbmFyeSBvZiAnYSBhcnJheSB8IEJpbmFyeSBvZiAnYSBhcnJheSBhcnJheVxuXG5sZXQgbWF4X2FycmF5X3NpemUxID0gU3lzLm1heF9hcnJheV9sZW5ndGggKCogNSAqKVxuXG5sZXQgbWF4X2FycmF5X3NpemUyID1cbiAgaWYgZmxvYXRfb2ZfaW50IG1heF9hcnJheV9zaXplMSA+IHNxcnQgKGZsb2F0X29mX2ludCBtYXhfaW50KSB0aGVuXG4gICAgbWF4X2ludFxuICBlbHNlXG4gICAgbWF4X2FycmF5X3NpemUxICogbWF4X2FycmF5X3NpemUxXG5cbmxldCBldWNsaWRlZW4gcCBxID0gcCAvIHEsIHAgbW9kIHFcblxubGV0IGNyZWF0ZSBuIGEgPVxuICBpZiBuIDw9IG1heF9hcnJheV9zaXplMSB0aGVuXG4gICAgVW5hcnkgKEFycmF5Lm1ha2UgbiBhKVxuICBlbHNlIGlmIG4gPiBtYXhfYXJyYXlfc2l6ZTIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiR2VuQXJyYXk6IGFycmF5IHRvbyBsYXJnZVwiXG4gIGVsc2UgKFxuICAgIGxldCBtID1cbiAgICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIG4gbWF4X2FycmF5X3NpemUxIGluXG4gICAgICBsZXQgbCA9IEFycmF5Lm1ha2UgbWF4X2FycmF5X3NpemUxIGEgaW5cbiAgICAgIGxldCBtID1cbiAgICAgICAgQXJyYXkubWFrZVxuICAgICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICAgcFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgcCArIDEpXG4gICAgICAgICAgbFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgPVxuICAgICAgICBpZiBrID0gLTEgdGhlblxuICAgICAgICAgIG1cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbS4oaykgPC0gQXJyYXkubWFrZSBtYXhfYXJyYXlfc2l6ZTEgYTtcbiAgICAgICAgICBhdXggKGsgLSAxKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgaWYgcSA9IDAgdGhlblxuICAgICAgICBhdXggKHAgLSAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG0uKHApIDwtIEFycmF5Lm1ha2UgcSBhO1xuICAgICAgICBhdXggKHAgLSAxKVxuICAgICAgKVxuICAgIGluXG4gICAgQmluYXJ5IG1cbiAgKVxuXG5sZXQgbGVuZ3RoID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lmxlbmd0aCBhXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgcCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHEgPSBBcnJheS5sZW5ndGggKEFycmF5LnVuc2FmZV9nZXQgYSAocCAtIDEpKSBpblxuICAgICgocCAtIDEpICogbWF4X2FycmF5X3NpemUxKSArIHFcblxubGV0IGdldDIgYSBwIHEgPSBBcnJheS51bnNhZmVfZ2V0IChBcnJheS51bnNhZmVfZ2V0IGEgcCkgcVxuXG5sZXQgZ2V0IGEgaSA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IFVuYXJ5IGEgLT4gQXJyYXkudW5zYWZlX2dldCBhIGlcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIGkgbWF4X2FycmF5X3NpemUxIGluXG4gICAgZ2V0MiBhIHAgcVxuXG5sZXQgc2V0MiBhIHAgcSBqID0gQXJyYXkudW5zYWZlX3NldCAoQXJyYXkudW5zYWZlX2dldCBhIHApIHEgalxuXG5sZXQgc2V0IGEgaSBqID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS51bnNhZmVfc2V0IGEgaSBqXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgcCwgcSA9IGV1Y2xpZGVlbiBpIG1heF9hcnJheV9zaXplMSBpblxuICAgIHNldDIgYSBwIHEgalxuXG5sZXQgbWFrZSA9IGNyZWF0ZVxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB8fCBuID4gbWF4X2FycmF5X3NpemUyIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJCaWdfYXJyYXkuaW5pdCA6IFwiIF4gc3RyaW5nX29mX2ludCBuKSlcbiAgZWxzZSBpZiBuIDw9IG1heF9hcnJheV9zaXplMSB0aGVuXG4gICAgVW5hcnkgKEFycmF5LmluaXQgbiBmKVxuICBlbHNlIChcbiAgICBsZXQgbSA9XG4gICAgICBsZXQgcCwgcSA9IGV1Y2xpZGVlbiBuIG1heF9hcnJheV9zaXplMSBpblxuICAgICAgQXJyYXkuaW5pdFxuICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICBwXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHAgKyAxKVxuICAgICAgICAoZnVuIHAnIC0+XG4gICAgICAgICAgaWYgcCcgPSBwIHRoZW5cbiAgICAgICAgICAgIEFycmF5LmluaXQgcSAoZnVuIHggLT4gZiAoKHAgKiBtYXhfYXJyYXlfc2l6ZTEpICsgeCkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkuaW5pdCBtYXhfYXJyYXlfc2l6ZTEgKGZ1biB4IC0+IGYgKChwJyAqIG1heF9hcnJheV9zaXplMSkgKyB4KSkpXG4gICAgaW5cbiAgICBCaW5hcnkgbVxuICApXG5cbmxldCBhcHBlbmQgYSBiID1cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGMgPSBsYSArIGxiIGluXG4gIGluaXQgYyAoZnVuIHggLT5cbiAgICAgIGlmIHggPCBsYSB0aGVuXG4gICAgICAgIGdldCBhIHhcbiAgICAgIGVsc2VcbiAgICAgICAgZ2V0IGIgKHggLSBsYSkpXG5cbmxldCBjb25jYXQgbCA9XG4gIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biB4IC0+IGxlbmd0aCB4ID4gMCkgbCBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBVbmFyeSBbfHxdXG4gIHwgdCA6OiBfIC0+XG4gICAgbGV0IGVsdCA9IGdldCB0IDAgaW5cbiAgICBsZXQgYyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gc29sIGEgLT4gc29sICsgbGVuZ3RoIGEpIDAgbCBpblxuICAgIGxldCBtID0gY3JlYXRlIGMgZWx0IGluXG4gICAgbGV0IHJlYyBhdXggayBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBtXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgcyA9IGxlbmd0aCB0IGluXG4gICAgICAgIGxldCByZWMgYXV4MiBvZmZzZXQgayA9XG4gICAgICAgICAgaWYgb2Zmc2V0ID0gcyB0aGVuXG4gICAgICAgICAgICBhdXggayBxXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBzZXQgbSBrIChnZXQgdCBvZmZzZXQpO1xuICAgICAgICAgICAgYXV4MiAob2Zmc2V0ICsgMSkgKGsgKyAxKVxuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4MiAwIGtcbiAgICBpblxuICAgIGF1eCAwIGxcblxubGV0IHN1YiBhIHN0YXJ0IGxlbiA9XG4gIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkJpZ19hcnJheS5zdWJcIilcbiAgZWxzZSBpZiBzaXplID0gMCB0aGVuXG4gICAgVW5hcnkgW3x8XVxuICBlbHNlXG4gICAgaW5pdCBsZW4gKGZ1biB4IC0+IGdldCBhICh4ICsgc3RhcnQpKVxuXG5sZXQgY29weSA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBVbmFyeSAoQXJyYXkuY29weSBhKVxuICB8IEJpbmFyeSBiJyAtPlxuICAgIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIGInIGluXG4gICAgQmluYXJ5IChBcnJheS5pbml0IHNpemUgKGZ1biB4IC0+IEFycmF5LmNvcHkgYicuKHgpKSlcblxubGV0IGZpbGwgYSBzdGFydCBsZW4geCA9XG4gIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkJpZ19hcnJheS5maWxsXCIpXG4gIGVsc2UgKFxuICAgIGxldCByZWMgYXV4IGsgaSA9XG4gICAgICBpZiBrIDwgbGVuIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBzZXQgYSBpIHggaW5cbiAgICAgICAgYXV4IChrICsgMSkgKGkgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgc3RhcnRcbiAgKVxuXG5sZXQgb2ZfbGlzdCB+ZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gVW5hcnkgW3x8XVxuICB8IHQgOjogXyBhcyBsIC0+XG4gICAgbGV0IF9pa25vd3doYXRpbWRvaW5nID0gZGVmYXVsdCBpblxuICAgIGxldCBzaXplID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIHNpemUgdCBpblxuICAgIGxldCByZWMgYXV4IGsgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgKCkgPSBzZXQgYSBrIHQgaW5cbiAgICAgICAgYXV4IChrICsgMSkgcVxuICAgIGluXG4gICAgYXV4IDAgbFxuXG5sZXQgaXRlciBmID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lml0ZXIgZiBhXG4gIHwgQmluYXJ5IGEgLT4gQXJyYXkuaXRlciAoQXJyYXkuaXRlciBmKSBhXG5cbmxldCBpdGVyaSBmID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lml0ZXJpIGYgYVxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IGcgayBrJyA9IChrICogbWF4X2FycmF5X3NpemUxKSArIGsnIGluXG4gICAgQXJyYXkuaXRlcmkgKGZ1biBrIGEgLT4gQXJyYXkuaXRlcmkgKGZ1biBrJyBhIC0+IGYgKGcgayBrJykgYSkgYSkgYVxuXG5sZXQgZ2VuIGcxIGcyIGgxIGgyIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gaDEgKGcxIGYgYSlcbiAgfCBCaW5hcnkgYSAtPiBoMiAoZzIgKGcxIGYpIGEpXG5cbmxldCBtYXAgZiB4ID0gZ2VuIEFycmF5Lm1hcCBBcnJheS5tYXAgKGZ1biB4IC0+IFVuYXJ5IHgpIChmdW4geCAtPiBCaW5hcnkgeCkgZiB4XG5cbigqbGV0IGdlbmkgZzEgZzIgaDEgaDIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFVuYXJ5IGEgLT4gaDEgKGcxIGYgYSlcbiAgICAgIHwgQmluYXJ5IGIgLT5cbiAgaDJcbiAgICAoZzJcbiAgICAgICAoZnVuIHAgYSAtPlxuICAgICAgICBsZXQgbiA9IHAgKiBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICAgICAgZzFcbiAgIChmdW4gcSBhIC0+IGYgKHEgKyBuKSBhKVxuICAgYSlcbiAgICAgICBiKVxuXG4gICAgbGV0IG1hcGkgPVxuICAgICAgZ2VuaSBBcnJheS5tYXBpIEFycmF5Lm1hcGkgKGZ1biB4IC0+IFVuYXJ5IHgpIChmdW4geCAtPiBCaW5hcnkgeCkqKVxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWZcbiAgICBsZW4gPCAwIHx8IG9mczEgPCAwXG4gICAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgIHx8IG9mczIgPCAwXG4gICAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSBpZiBvZnMxIDwgb2ZzMiB0aGVuXG4gICAgKCogVG9wLWRvd24gY29weSAqKVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgc2V0IGEyIChvZnMyICsgaSkgKGdldCBhMSAob2ZzMSArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgICgqIEJvdHRvbS11cCBjb3B5ICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCBhMiAob2ZzMiArIGkpIChnZXQgYTEgKG9mczEgKyBpKSlcbiAgICBkb25lXG5cbmxldCBmb2xkX2xlZnRpIGYgaW5pdCBhID1cbiAgbGV0IHkgPSByZWYgaW5pdCBpblxuICBsZXQgKCkgPSBpdGVyaSAoZnVuIGkgZSAtPiB5IDo9IGYgaSAheSBlKSBhIGluXG4gICF5XG5cbmxldCBmb2xkX3JpZ2h0IGYgYSBpbml0ID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS5mb2xkX3JpZ2h0IGYgYSBpbml0XG4gIHwgQmluYXJ5IGEgLT4gQXJyYXkuZm9sZF9yaWdodCAoQXJyYXkuZm9sZF9yaWdodCBmKSBhIGluaXRcblxubGV0IGZvbGRfcmlnaHRpIGYgYSBpbml0ID1cbiAgbGV0IGcgayAoaSwgY3VycmVudCkgPSBpIC0gMSwgZiBpIGsgY3VycmVudCBpblxuICBzbmQgKGZvbGRfcmlnaHQgZyBhIChsZW5ndGggYSAtIDEsIGluaXQpKVxuXG5sZXQgcHJpbnQgPyh0cmFpbGluZyA9IGZ1biBfIC0+ICgpKSBwcl9zZXAgcHJfZWwgZiBhID1cbiAgbGV0IHJlYyBhdXggaSBmID1cbiAgICBpZiBpIDwgbGVuZ3RoIGEgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBwcl9lbCBpIGYgKGdldCBhIGkpIGluXG4gICAgICBpZiBpIDwgbGVuZ3RoIGEgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgICBhdXggKHN1Y2MgaSkgZlxuICAgICAgKSBlbHNlIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgdHJhaWxpbmcgZlxuICAgIClcbiAgaW5cbiAgYXV4IDAgZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGZsb2F0X2lzX3plcm8geCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICB8IEZQX3plcm8gLT4gdHJ1ZVxuICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IGZhbHNlXG5cbmxldCBwb3cgaSBqID1cbiAgbGV0ICgpID0gYXNzZXJ0ICgwIDw9IGopIGluXG4gIGxldCByZWMgYXV4IGkgayBhY2N1ID1cbiAgICBpZiBrID0gMCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBrIGxhbmQgMSA9IDAgdGhlblxuICAgICAgYXV4IGkgKGsgLyAyKSBhY2N1ICogYWNjdVxuICAgIGVsc2VcbiAgICAgIGF1eCBpIChrIC8gMikgKGkgKiBhY2N1ICogYWNjdSlcbiAgaW5cbiAgYXV4IGkgaiAxXG5cbmxldCBmYWN0IGkgPVxuICBsZXQgcmVjIGF1eCBpIGFjY3UgPVxuICAgIGlmIGkgPCAyIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlXG4gICAgICBhdXggKGkgLSAxKSAoaSAqIGFjY3UpXG4gIGluXG4gIGF1eCBpIDFcblxubGV0IGdldF9wcm9kdWN0X2ltYWdlX29jYyBzdGFydCBjb21iaW5lIGYgbCA9XG4gIGxldCBsID0gTGlzdC5zb3J0IGNvbXBhcmUgbCBpblxuICBsZXQgcmVjIGF1eCBsIG9sZCBvY2MgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBoIDo6IHQgd2hlbiBoID0gb2xkIC0+IGF1eCB0IG9sZCAoMSArIG9jYykgYWNjdVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGFjY3UgPSBjb21iaW5lIGFjY3UgKGYgb2NjKSBpblxuICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgfCBoIDo6IHQgLT4gYXV4IHQgaCAxIGFjY3VcbiAgICAgIHwgW10gLT4gYWNjdSlcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gMVxuICB8IGggOjogdCAtPiBhdXggdCBoIDEgc3RhcnRcblxubGV0IGdldF9wcm9kdWN0X2ltYWdlX29jY18yIHN0YXJ0IGNvbWJpbmUgZiBsMSBsMiA9XG4gIGxldCBsMSA9IExpc3Quc29ydCBjb21wYXJlIGwxIGluXG4gIGxldCBsMiA9IExpc3Quc29ydCBjb21wYXJlIGwyIGluXG4gIGxldCBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdLCAwXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCByZWMgYXV4IGwgaCBvY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXSwgb2NjXG4gICAgICAgIHwgaCcgOjogdCB3aGVuIGggPSBoJyAtPiBhdXggdCBoIChvY2MgKyAxKVxuICAgICAgICB8IF8gLT4gbCwgb2NjXG4gICAgICBpblxuICAgICAgYXV4IHQgaCAxXG4gIGluXG4gIGxldCByZWMgYXV4IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBoMSA6OiBfLCBoMiA6OiBfIHdoZW4gaDEgPSBoMiAtPlxuICAgICAgbGV0IGwxLCBvY2MxID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDEgaW5cbiAgICAgIGxldCBsMiwgb2NjMiA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwyIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiBvY2MxIG9jYzIpKVxuICAgIHwgaDEgOjogXywgaDIgOjogXyB3aGVuIGNvbXBhcmUgaDEgaDIgPCAwIC0+XG4gICAgICBsZXQgbDEsIG9jYzEgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMSBpblxuICAgICAgYXV4IGwxIGwyIChjb21iaW5lIGFjY3UgKGYgb2NjMSAwKSlcbiAgICB8IF8gOjogXywgXyA6OiBfIC0+XG4gICAgICBsZXQgbDIsIG9jYzIgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMiBpblxuICAgICAgYXV4IGwxIGwyIChjb21iaW5lIGFjY3UgKGYgMCBvY2MyKSlcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gYWNjdVxuICBpblxuICBhdXggbDEgbDIgc3RhcnRcblxubGV0IGRpdjIgeCA9IEludDY0LmRpdiB4IChJbnQ2NC5hZGQgSW50NjQub25lIEludDY0Lm9uZSlcblxubGV0IHBvdzY0IHggbiA9XG4gIGFzc2VydCAobiA+PSBJbnQ2NC56ZXJvKTtcbiAgbGV0IHJlYyBhdXggayBhY2N1ID1cbiAgICBpZiBrID0gSW50NjQuemVybyB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBJbnQ2NC5sb2dhbmQgayBJbnQ2NC5vbmUgPSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgIGF1eCAoZGl2MiBrKSAoSW50NjQubXVsIGFjY3UgYWNjdSlcbiAgICBlbHNlXG4gICAgICBhdXggKGRpdjIgaykgKEludDY0Lm11bCB4IChJbnQ2NC5tdWwgYWNjdSBhY2N1KSlcbiAgaW5cbiAgYXV4IG4gSW50NjQub25lXG5cbmxldCBjYW50b3JfcGFpcmluZyB4IHkgPVxuICBsZXQgcyA9IHggKyB5IGluXG4gIChzdWNjIHMgKiBzIC8gMikgKyB5XG5cbmxldCByZWFkX2lucHV0ICgpID1cbiAgbGV0IHJlYyBwYXJzZSBhY2MgaW5wdXQgPVxuICAgIG1hdGNoIFN0cmVhbS5uZXh0IGlucHV0IHdpdGhcbiAgICB8ICdcXG4nIC0+IGFjY1xuICAgIHwgYyAtPiBwYXJzZSAoUHJpbnRmLnNwcmludGYgXCIlcyVjXCIgYWNjIGMpIGlucHV0XG4gIGluXG4gIHRyeVxuICAgIGxldCB1c2VyX2lucHV0ID0gU3RyZWFtLm9mX2NoYW5uZWwgc3RkaW4gaW5cbiAgICBwYXJzZSBcIlwiIHVzZXJfaW5wdXRcbiAgd2l0aCBTdHJlYW0uRmFpbHVyZSAtPiBpbnZhbGlkX2FyZyBcIlRvb2xzLlJlYWRfaW5wdXQ6IGNhbm5vdCByZWFkIHN0cmVhbVwiXG5cbmxldCBub3RfYW5faWQgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA9IDBcbiAgfHxcbiAgbGV0IGkgPSBpbnRfb2ZfY2hhciBzLlswXSBpblxuICAoaSA8IDY1IHx8IGkgPiAxMjIgfHwgKGkgPiA5MCAmJiAoaSA8PiA5NSB8fCBTdHJpbmcubGVuZ3RoIHMgPSAxKSAmJiBpIDwgOTcpKVxuICB8fFxuICB0cnlcbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIGxldCBpID0gaW50X29mX2NoYXIgYyBpblxuICAgICAgICBpZlxuICAgICAgICAgIGkgPCA0OCB8fCBpID4gMTIyXG4gICAgICAgICAgfHwgKGkgPiA1NyAmJiAoaSA8IDY1IHx8IChpID4gOTAgJiYgaSA8PiA5NSAmJiBpIDwgOTcpKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZClcbiAgICAgIHM7XG4gICAgZmFsc2VcbiAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZVxuXG5sZXQgYXJyYXlfZm9sZF9sZWZ0X21hcGkgZiB4IGEgPVxuICBsZXQgeSA9IHJlZiB4IGluXG4gIGxldCBvID1cbiAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggYSkgKGZ1biBpIC0+XG4gICAgICAgIGxldCB5Jywgb3V0ID0gZiBpICF5IGEuKGkpIGluXG4gICAgICAgIGxldCAoKSA9IHkgOj0geScgaW5cbiAgICAgICAgb3V0KVxuICBpblxuICAheSwgb1xuXG5sZXQgYXJyYXlfbWFwX29mX2xpc3QgPVxuICBsZXQgcmVjIGZpbGwgZiBpIHYgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHggOjogbCAtPlxuICAgICAgQXJyYXkudW5zYWZlX3NldCB2IGkgKGYgeCk7XG4gICAgICBmaWxsIGYgKHN1Y2MgaSkgdiBsXG4gIGluXG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbfHxdXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIGxldCBsZW4gPSBzdWNjIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgbGV0IGFucyA9IEFycmF5Lm1ha2UgbGVuIChmIHgpIGluXG4gICAgICBsZXQgKCkgPSBmaWxsIGYgMSBhbnMgbCBpblxuICAgICAgYW5zXG5cbmxldCBhcnJheV9yZXZfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBvdXQgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICB8IGgnIDo6IHQnIC0+XG4gICAgICBsZXQgKCkgPSBBcnJheS51bnNhZmVfc2V0IG91dCBpIGgnIGluXG4gICAgICBmaWxsIG91dCAocHJlZCBpKSB0J1xuICBpblxuICBmdW5jdGlvblxuICB8IFtdIC0+IFt8fF1cbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgbCA9IHN1Y2MgKExpc3QubGVuZ3RoIHQpIGluXG4gICAgbGV0IG91dCA9IEFycmF5Lm1ha2UgbCBoIGluXG4gICAgbGV0ICgpID0gZmlsbCBvdXQgKGwgLSAyKSB0IGluXG4gICAgb3V0XG5cbmxldCBhcnJheV9yZXZfbWFwX29mX2xpc3QgPVxuICBsZXQgcmVjIGZpbGwgZiBvdXQgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICB8IGgnIDo6IHQnIC0+XG4gICAgICBsZXQgKCkgPSBBcnJheS51bnNhZmVfc2V0IG91dCBpIChmIGgnKSBpblxuICAgICAgZmlsbCBmIG91dCAocHJlZCBpKSB0J1xuICBpblxuICBmdW4gZiAtPiBmdW5jdGlvblxuICAgIHwgW10gLT4gW3x8XVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbCA9IHN1Y2MgKExpc3QubGVuZ3RoIHQpIGluXG4gICAgICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsIChmIGgpIGluXG4gICAgICBsZXQgKCkgPSBmaWxsIGYgb3V0IChsIC0gMikgdCBpblxuICAgICAgb3V0XG5cbmxldCBhcnJheV9mb2xkX2xlZnRpIGYgeCBhID1cbiAgbGV0IHkgPSByZWYgeCBpblxuICBsZXQgKCkgPSBBcnJheS5pdGVyaSAoZnVuIGkgZSAtPiB5IDo9IGYgaSAheSBlKSBhIGluXG4gICF5XG5cbmxldCByZWMgYXV4X2ZvbGRfcmlnaHRpIGkgZiBhIHggPVxuICBpZiBpIDwgMCB0aGVuXG4gICAgeFxuICBlbHNlXG4gICAgYXV4X2ZvbGRfcmlnaHRpIChwcmVkIGkpIGYgYSAoZiBpIGEuKGkpIHgpXG5cbmxldCBhcnJheV9mb2xkX3JpZ2h0aSBmIGEgeCA9IGF1eF9mb2xkX3JpZ2h0aSAoQXJyYXkubGVuZ3RoIGEgLSAxKSBmIGEgeFxuXG5sZXQgYXJyYXlfZm9sZF9sZWZ0MmkgZiB4IGExIGEyID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgaWYgbCA8PiBBcnJheS5sZW5ndGggYTIgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiYXJyYXlfZm9sZF9sZWZ0MmlcIilcbiAgZWxzZVxuICAgIGFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggZSAtPiBmIGkgeCBlIGEyLihpKSkgeCBhMVxuXG5sZXQgYXJyYXlfZmlsdGVyIGYgYSA9XG4gIGFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgYWNjIHggLT5cbiAgICAgIGlmIGYgaSB4IHRoZW5cbiAgICAgICAgaSA6OiBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjKVxuICAgIFtdIGFcblxubGV0IGFycmF5X21pbl9lcXVhbF9ub3RfbnVsbCBsMSBsMiA9XG4gIGlmIEFycmF5Lmxlbmd0aCBsMSA8PiBBcnJheS5sZW5ndGggbDIgdGhlblxuICAgIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBmIGogPVxuICAgICAgaWYgaiA9IEFycmF5Lmxlbmd0aCBsMSB0aGVuXG4gICAgICAgIFNvbWUgKFtdLCBbXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmIxLCBhZzEgPSBsMS4oaikgaW5cbiAgICAgICAgbGV0IG5iMiwgYWcyID0gbDIuKGopIGluXG4gICAgICAgIGlmIG5iMSA8PiBuYjIgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBpZiBuYjEgPSAwIHRoZW5cbiAgICAgICAgICBmIChzdWNjIGopXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWMgYXV4IGkgdmEgb3V0ID1cbiAgICAgICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggbDEgdGhlblxuICAgICAgICAgICAgICBTb21lIG91dFxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBuYjEsIGFnMSA9IGwxLihpKSBpblxuICAgICAgICAgICAgICBsZXQgbmIyLCBhZzIgPSBsMi4oaSkgaW5cbiAgICAgICAgICAgICAgaWYgbmIxIDw+IG5iMiB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlIGlmIG5iMSA+IDAgJiYgbmIxIDwgdmEgdGhlblxuICAgICAgICAgICAgICAgIGF1eCAoc3VjYyBpKSBuYjEgKGFnMSwgYWcyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIHZhIG91dFxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChzdWNjIGopIG5iMSAoYWcxLCBhZzIpXG4gICAgICAgIClcbiAgICAgIClcbiAgICBpblxuICAgIGYgMFxuICApXG5cbmxldCBhcnJheV9jb21wYXJlIGNvbXBhcmUgYSBiID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgbCcgPSBBcnJheS5sZW5ndGggYiBpblxuICBsZXQgZCA9IFN0ZGxpYi5jb21wYXJlIGwgbCcgaW5cbiAgbGV0IHJlYyBhdXhfYXJyYXlfY29tcGFyZSBrID1cbiAgICBpZiBrID49IGwgdGhlblxuICAgICAgMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG8gPSBjb21wYXJlIGEuKGspIGIuKGspIGluXG4gICAgICBpZiBvIDw+IDAgdGhlblxuICAgICAgICBvXG4gICAgICBlbHNlXG4gICAgICAgIGF1eF9hcnJheV9jb21wYXJlIChzdWNjIGspXG4gICAgKVxuICBpblxuICBpZiBkIDw+IDAgdGhlblxuICAgIGRcbiAgZWxzZVxuICAgIGF1eF9hcnJheV9jb21wYXJlIDBcblxubGV0IGl0ZXJpIGYgaSA9XG4gIGxldCByZWMgYXV4IGogPVxuICAgIGlmIGogPCBpIHRoZW4gKFxuICAgICAgbGV0ICgpID0gZiBqIGluXG4gICAgICBhdXggKHN1Y2MgailcbiAgICApXG4gIGluXG4gIGF1eCAwXG5cbmxldCByZWMgcmVjdGkgZiB4IGkgPVxuICBpZiAwIDwgaSB0aGVuIChcbiAgICBsZXQgaScgPSBwcmVkIGkgaW5cbiAgICByZWN0aSBmIChmIHggaScpIGknXG4gICkgZWxzZVxuICAgIHhcblxubGV0IG1pbl9wb3NfaW50X25vdF96ZXJvIChrZXlhLCBkYXRhYSkgKGtleWIsIGRhdGFiKSA9XG4gIGlmIGtleWEgPSAwIHRoZW5cbiAgICBrZXliLCBkYXRhYlxuICBlbHNlIGlmIGtleWIgPSAwIHRoZW5cbiAgICBrZXlhLCBkYXRhYVxuICBlbHNlIGlmIGNvbXBhcmUga2V5YSBrZXliID4gMCB0aGVuXG4gICAga2V5YiwgZGF0YWJcbiAgZWxzZVxuICAgIGtleWEsIGRhdGFhXG5cbmxldCBtYXhfcG9zX2ludF9ub3RfemVybyAoa2V5YSwgZGF0YWEpIChrZXliLCBkYXRhYikgPVxuICBpZiBjb21wYXJlIGtleWEga2V5YiA+IDAgdGhlblxuICAgIGtleWEsIGRhdGFhXG4gIGVsc2VcbiAgICBrZXliLCBkYXRhYlxuXG5sZXQgZm9sZF9vdmVyX3Blcm11dGF0aW9ucyBmIGwgYWNjdSA9XG4gIGxldCByZWMgYXV4IHRvX2RvIGRpc2NhcmRlZCBwZXJtdXRhdGlvbiBhY2N1ID1cbiAgICBtYXRjaCB0b19kbywgZGlzY2FyZGVkIHdpdGhcbiAgICB8IFtdLCBbXSAtPiBmIHBlcm11dGF0aW9uIGFjY3VcbiAgICB8IFtdLCBfIDo6IF8gLT4gYWNjdVxuICAgIHwgaCA6OiB0LCBfIC0+XG4gICAgICBsZXQgdG9fZG8xID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KSB0IGRpc2NhcmRlZCBpblxuICAgICAgbGV0IGFjY3UgPSBhdXggdG9fZG8xIFtdIChoIDo6IHBlcm11dGF0aW9uKSBhY2N1IGluXG4gICAgICBsZXQgYWNjdSA9IGF1eCB0IChoIDo6IGRpc2NhcmRlZCkgcGVybXV0YXRpb24gYWNjdSBpblxuICAgICAgYWNjdVxuICBpblxuICBhdXggbCBbXSBbXSBhY2N1XG5cbmxldCBnY2RfMiBhIGIgPVxuICBsZXQgcmVjIGF1eCBhIGIgPVxuICAgIGlmIGIgPSAwIHRoZW5cbiAgICAgIGFcbiAgICBlbHNlXG4gICAgICBhdXggYiAoYSBtb2QgYilcbiAgaW5cbiAgbGV0IGEgPSBhYnMgYSBpblxuICBsZXQgYiA9IGFicyBiIGluXG4gIGlmIGEgPCBiIHRoZW5cbiAgICBhdXggYiBhXG4gIGVsc2VcbiAgICBhdXggYSBiXG5cbmxldCBsY21fMiBhIGIgPSBhYnMgYSAqIGFicyBiIC8gZ2NkXzIgYSBiXG5cbmxldCBsY20gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IDBcbiAgfCBoIDo6IHQgLT4gTGlzdC5mb2xkX2xlZnQgbGNtXzIgaCB0XG5cbmxldCBnZXRfaW50ZXJ2YWxfbGlzdCBwIGkgaiA9XG4gIGxldCBhZGQgY3VycmVudCBvdXRwdXQgPVxuICAgIG1hdGNoIGN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRcbiAgICB8IFNvbWUgcCAtPiBwIDo6IG91dHB1dFxuICBpblxuICBsZXQgaW5zZXJ0IGsgY3VycmVudCA9XG4gICAgbWF0Y2ggY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgKGssIGspXG4gICAgfCBTb21lIChfLCBqKSAtPiBTb21lIChrLCBqKVxuICBpblxuICBsZXQgcmVjIGF1eCBwIGsgY3VycmVudCBvdXRwdXQgPVxuICAgIGlmIGsgPCBpIHRoZW5cbiAgICAgIGFkZCBjdXJyZW50IG91dHB1dFxuICAgIGVsc2UgaWYgcCBrIHRoZW5cbiAgICAgIGF1eCBwIChrIC0gMSkgKGluc2VydCBrIGN1cnJlbnQpIG91dHB1dFxuICAgIGVsc2VcbiAgICAgIGF1eCBwIChrIC0gMSkgTm9uZSAoYWRkIGN1cnJlbnQgb3V0cHV0KVxuICBpblxuICBhdXggcCBqIE5vbmUgW11cblxubGV0IGxvd2VyY2FzZSA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbmxldCBjYXBpdGFsaXplID0gU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcblxubGV0IHN0cmluZ19zcGxpdF9vbl9jaGFyIChkZWxpbWl0ZXIgOiBjaGFyKSAocyA6IHN0cmluZykgOlxuICAgIHN0cmluZyAqIHN0cmluZyBvcHRpb24gPVxuICB0cnlcbiAgICBsZXQgaW5kZXggPSBTdHJpbmcuaW5kZXggcyBkZWxpbWl0ZXIgaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgU3RyaW5nLnN1YiBzIDAgaW5kZXgsIFNvbWUgKFN0cmluZy5zdWIgcyAoaW5kZXggKyAxKSAobGVuZ3RoIC0gaW5kZXggLSAxKSlcbiAgd2l0aCBOb3RfZm91bmQgLT4gcywgTm9uZVxuXG5sZXQgc21hc2hfZHVwbGljYXRlX2luX29yZGVyZWRfbGlzdCBwIGwgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIkRVUEwgXFxuXCIgaW5cblxuICBsZXQgcmVjIGF1eCB0YWlsIG5vY2MgY3VycmVudCBhY2N1ID1cbiAgICBtYXRjaCB0YWlsIHdpdGhcbiAgICB8IFtdIC0+IChjdXJyZW50LCBub2NjKSA6OiBhY2N1XG4gICAgfCAoaCwgbikgOjogdCB3aGVuIHAgaCBjdXJyZW50ID0gMCAtPlxuICAgICAgKCpsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIkRVUEwgJWlcXG5cIiAobitub2NjKSBpbiopXG4gICAgICBhdXggdCAobiArIG5vY2MpIGN1cnJlbnQgYWNjdVxuICAgIHwgKGgsIG4pIDo6IHQgLT4gYXV4IHQgbiBoICgoY3VycmVudCwgbm9jYykgOjogYWNjdSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCAoaCwgbikgOjogdCAtPiBhdXggdCBuIGggW11cblxubGV0IGNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIGV4dCA9XG4gIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIGV4dCB0aGVuXG4gICAgRmlsZW5hbWUuY2hvcF9zdWZmaXggbmFtZSBleHRcbiAgZWxzZVxuICAgIEZpbGVuYW1lLnJlbW92ZV9leHRlbnNpb24gbmFtZVxuXG5sZXQgZmluZF9hdmFpbGFibGVfbmFtZSB+YWxyZWFkeV90aGVyZSBuYW1lIH5mYWN1bHRhdGl2ZSB+ZXh0ID1cbiAgbGV0IGV4dCA9XG4gICAgbWF0Y2ggZXh0IHdpdGhcbiAgICB8IFNvbWUgZSAtPiBlXG4gICAgfCBOb25lIC0+IEZpbGVuYW1lLmV4dGVuc2lvbiBuYW1lXG4gIGluXG4gIGxldCBiYXNlID0gY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0IGluXG4gIGlmIGFscmVhZHlfdGhlcmUgKGJhc2UgXiBleHQpIHRoZW4gKFxuICAgIGxldCBiYXNlJyA9XG4gICAgICBpZiBmYWN1bHRhdGl2ZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgYmFzZSBeIFwiX1wiIF4gZmFjdWx0YXRpdmVcbiAgICAgIGVsc2VcbiAgICAgICAgYmFzZVxuICAgIGluXG4gICAgaWYgYWxyZWFkeV90aGVyZSAoYmFzZScgXiBleHQpIHRoZW4gKFxuICAgICAgbGV0IHYgPSByZWYgMCBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2hpbGUgYWxyZWFkeV90aGVyZSAoYmFzZScgXiBcIn5cIiBeIHN0cmluZ19vZl9pbnQgIXYgXiBleHQpIGRvXG4gICAgICAgICAgaW5jciB2XG4gICAgICAgIGRvbmVcbiAgICAgIGluXG4gICAgICBiYXNlJyBeIFwiflwiIF4gc3RyaW5nX29mX2ludCAhdiBeIGV4dFxuICAgICkgZWxzZVxuICAgICAgYmFzZScgXiBleHRcbiAgKSBlbHNlXG4gICAgYmFzZSBeIGV4dFxuXG5sZXQgZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIDogY2hhciA9ICdcXHgxZScgKCogXCJcXHRcIiAqKVxuXG5sZXQgZ2V0X3JlZiByZWYgPVxuICBsZXQgaSA9ICFyZWYgaW5cbiAgbGV0ICgpID0gcmVmIDo9IGkgKyAxIGluXG4gIGlcblxubGV0IHJlbW92ZV9kb3VibGVfZWxlbWVudHMgbCA9XG4gIGxldCBsID0gTGlzdC5zb3J0IGNvbXBhcmUgbCBpblxuICBsZXQgcmVjIGF1eCBsIGFjY3Ugb2xkID1cbiAgICBtYXRjaCBsLCBvbGQgd2l0aFxuICAgIHwgW10sIF8gLT4gYWNjdVxuICAgIHwgaCA6OiB0LCBTb21lIGgnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IGFjY3Ugb2xkXG4gICAgfCBoIDo6IHQsIChOb25lIHwgU29tZSBfKSAtPiBhdXggdCAoaCA6OiBhY2N1KSAoU29tZSBoKVxuICBpblxuICBhdXggbCBbXSBOb25lXG5cbmxldCBmcm9tX25fdG9fMCBuID1cbiAgbGV0IHJlYyBhdXggayBhY2MgPVxuICAgIGlmIGsgPiBuIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGF1eCAoayArIDEpIChrIDo6IGFjYylcbiAgaW5cbiAgYXV4IDAgW11cblxubGV0IGNsZWFyIGEgPSBBcnJheS5pdGVyaSAoZnVuIGkgXyAtPiBhLihpKSA8LSBbXSkgYVxuXG5sZXQgc29ydF9ieV9wcmlvcml0eSBmIG4gPVxuICBsZXQgYSA9IEFycmF5Lm1ha2UgKG4gKyAxKSBbXSBpblxuICBsZXQga2V5cyA9IGZyb21fbl90b18wIG4gaW5cbiAgbGV0IHNvcnQgbCA9XG4gICAgbGV0IHJlYyBhdXggbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBrID0gZiBoIGluXG4gICAgICAgIGxldCAoKSA9IGEuKGspIDwtIGggOjogYS4oaykgaW5cbiAgICAgICAgYXV4IHRcbiAgICBpblxuICAgIGxldCAoKSA9IGF1eCBsIGluXG4gICAgbGV0IG91dHB1dCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3Qga2V5IC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGVsdCAtPiBlbHQgOjogbGlzdCkgbGlzdCBhLihrZXkpKVxuICAgICAgICBbXSBrZXlzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBjbGVhciBhIGluXG4gICAgb3V0cHV0XG4gIGluXG4gIHNvcnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBpbml0aWFsX2J1ZmZlcl9zaXplID0gMHgxMDAwXG5cbmxldCB3cml0ZV90b19jaGFubmVsIGYgZCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgbGV0ICgpID0gZiBiIHggaW5cbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgZCBiXG5cbmxldCBzdHJpbmdfb2Zfd3JpdGUgZiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICBsZXQgKCkgPSBmIG9iIHggaW5cbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX29mX3N0cmluZyBmIHggPVxuICBsZXQgbGV4X3N0ID0gWW9qc29uLkJhc2ljLmluaXRfbGV4ZXIgKCkgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgeCBpblxuICBmIGxleF9zdCBsZXhfYnVmXG5cbmxldCByZWFkX2JldHdlZW5fc3BhY2VzIGYgbGV4X3N0IGxleF9idWYgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgeCA9IGYgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgbGV4X3N0IGxleF9idWYgaW5cbiAgeFxuXG5sZXQgcmVhZF9uZXh0X2l0ZW0gZiBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgc3QgYiBpblxuICByZWFkX2JldHdlZW5fc3BhY2VzIGYgc3QgYlxuXG5sZXQgYnVpbGRfbXNnIHMgPSBcIk5vdCBhIGNvcnJlY3QgXCIgXiBzXG5sZXQgb2Zfc3RyaW5nIChzIDogc3RyaW5nKSA9IGBTdHJpbmcgc1xuXG5sZXQgdG9fc3RyaW5nID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwic3RyaW5nXCIpID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIChzIDogc3RyaW5nKSAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX2ludCAocyA6IGludCkgPSBgSW50IHNcblxubGV0IHRvX2ludCA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcImludFwiKSA9IGZ1bmN0aW9uXG4gIHwgYEludCAocyA6IGludCkgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl9ib29sIChzIDogYm9vbCkgPVxuICBgU3RyaW5nXG4gICAgKGlmIHMgdGhlblxuICAgICAgIFwidHJ1ZVwiXG4gICAgIGVsc2VcbiAgICAgICBcImZhbHNlXCIpXG5cbmxldCB0b19ib29sID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYm9vbGVhblwiKSA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcInRydWVcIiAtPiB0cnVlXG4gIHwgYFN0cmluZyBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfdW5pdCAoKSA9IGBOdWxsXG5cbmxldCB0b191bml0ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwidW5pdFwiKSA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gKClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2Zfb3B0aW9uIHRvX2pzb24gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIHggLT5cbiAgICAobWF0Y2ggdG9fanNvbiB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IGZhaWx3aXRoIFwiYW1iaWd1b3VzIEpzb25VdGlsLm9mX29wdGlvblwiXG4gICAgfCB4IC0+IHgpXG5cbmxldCB0b19vcHRpb24gPSBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cblxubGV0IHdyaXRlX29wdGlvbiBmIG9iID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG9iICgpXG4gIHwgU29tZSB4IC0+IGYgb2IgeFxuXG5sZXQgcmVhZF9vcHRpb24gZiBwIGxiID1cbiAgaWYgWW9qc29uLkJhc2ljLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIChmIHAgbGIpXG5cbmxldCBvZl9saXN0IHRvX2pzb24gbCA9IGBMaXN0IChMaXN0LnJldl9tYXAgdG9fanNvbiAoTGlzdC5yZXYgbCkpXG5cbmxldCB0b19saXN0ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwibGlzdFwiKSBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIHggLT5cbiAgICAodHJ5IExpc3QucmV2X21hcCBvZl9qc29uIChMaXN0LnJldiBsKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgYE51bGwgLT4gW11cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgd3JpdGVfY29tbWEgb2IgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgaXRlcjIgZl9lbHQgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICB3cml0ZV9jb21tYSB4O1xuICAgIGZfZWx0IHggeTtcbiAgICBpdGVyMiBmX2VsdCB4IGxcblxubGV0IHdyaXRlX2xpc3QgZiBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgZiBvYiB5O1xuICAgICAgaXRlcjIgZiBvYiBsXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IG9mX2FycmF5IHRvX2pzb24gYSA9XG4gIGBMaXN0IChBcnJheS5mb2xkX3JpZ2h0IChmdW4geCBhY2MgLT4gdG9fanNvbiB4IDo6IGFjYykgYSBbXSlcblxubGV0IHRvX2FycmF5ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYXJyYXlcIikgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCBvZl9qc29uIGxcbiAgfCBgTnVsbCAtPiBbfHxdXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2FycmF5IGYgb2IgbCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID0gaWYgQXJyYXkubGVuZ3RoIGwgPiAwIHRoZW4gZiBvYiBsLigwKSBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgZiBvYiBsLihzdWNjIGkpKVxuICAgICAgKHByZWQgKEFycmF5Lmxlbmd0aCBsKSlcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgcmVjIGl0ZXJfc2VxIG9iID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGYgOjogcSAtPlxuICAgIGxldCAoKSA9IHdyaXRlX2NvbW1hIG9iIGluXG4gICAgbGV0ICgpID0gZiBvYiBpblxuICAgIGl0ZXJfc2VxIG9iIHFcblxubGV0IHdyaXRlX3NlcXVlbmNlIG9iIGwgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgZiA6OiBxIC0+XG4gICAgICBsZXQgKCkgPSBmIG9iIGluXG4gICAgICBpdGVyX3NlcSBvYiBxXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHJlYWRfdmFyaWFudCByZWFkX2lkIHJlYWQgc3QgYiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xiciBzdCBiIGluXG4gIGxldCBjc3QgPSByZWFkX2JldHdlZW5fc3BhY2VzIHJlYWRfaWQgc3QgYiBpblxuICBsZXQgb3V0ID0gcmVhZCBzdCBiIGNzdCBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9yYnIgc3QgYiBpblxuICBvdXRcblxubGV0IHNtYXJ0X2Fzc29jIGwgPVxuICBgQXNzb2NcbiAgICAoTGlzdC5yZXZcbiAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBfLCAoYE51bGwgfCBgQXNzb2MgW10gfCBgTGlzdCBbXSkgLT4gYWNjXG4gICAgICAgICAgICB8IHggLT4geCA6OiBhY2MpXG4gICAgICAgICAgW10gbCkpXG5cbmxldCBvZl9hc3NvYyB0b19qc29uIGwgPSBgQXNzb2MgKExpc3QucmV2X21hcCB0b19qc29uIChMaXN0LnJldiBsKSlcblxubGV0IHRvX2Fzc29jID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYXNzb2NpYXRpb25cIikgb2ZfanNvbiBqc29uID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnkgTGlzdC5yZXZfbWFwIG9mX2pzb24gKExpc3QucmV2IGwpXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCBgTnVsbCAtPiBbXVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9maWVsZCBuYSBmIG9iIHggPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIG5hIGluXG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnOicgaW5cbiAgZiBvYiB4XG5cbmxldCBvZl9wYWlyID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgdG9fanNvbjEgdG9fanNvbjIgKGEsIGIpID1cbiAgYEFzc29jIFsgbGFiMSwgdG9fanNvbjEgYTsgbGFiMiwgdG9fanNvbjIgYiBdXG5cbmxldCB0b190cmlwbGUgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSA/KGxhYjMgPSBcInRoaXJkXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJ0cmlwbGVcIikgb2ZfanNvbjEgb2ZfanNvbjIgb2ZfanNvbjMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICAoIG9mX2pzb24xIChMaXN0LmFzc29jIGxhYjEgbCksXG4gICAgICAgICBvZl9qc29uMiAoTGlzdC5hc3NvYyBsYWIyIGwpLFxuICAgICAgICAgb2ZfanNvbjMgKExpc3QuYXNzb2MgbGFiMyBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfdHJpcGxlID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgPyhsYWIzID0gXCJ0aGlyZFwiKSB0b19qc29uMVxuICAgIHRvX2pzb24yIHRvX2pzb24zIChhLCBiLCBjKSA9XG4gIGBBc3NvYyBbIGxhYjEsIHRvX2pzb24xIGE7IGxhYjIsIHRvX2pzb24yIGI7IGxhYjMsIHRvX2pzb24zIGMgXVxuXG5sZXQgdG9fcGFpciA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwicGFpclwiKVxuICAgIG9mX2pzb24xIG9mX2pzb24yID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5IG9mX2pzb24xIChMaXN0LmFzc29jIGxhYjEgbCksIG9mX2pzb24yIChMaXN0LmFzc29jIGxhYjIgbClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9jb21wYWN0X3BhaXIgZiBnIG9iICh4LCB5KSA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID0gZiBvYiB4IGluXG4gIGxldCAoKSA9IHdyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IGcgb2IgeSBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWFkX2NvbXBhY3RfcGFpciBmIGcgc3QgYiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xiciBzdCBiIGluXG4gIGxldCB4ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyBmIHN0IGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgc3QgYiBpblxuICBsZXQgeSA9IHJlYWRfYmV0d2Vlbl9zcGFjZXMgZyBzdCBiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBzdCBiIGluXG4gIHgsIHlcblxubGV0IGNvbXBhY3RfdG9fcGFpciBmIGcgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgeDsgeSBdIC0+IGYgeCwgZyB5XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb21wYWN0IHBhaXJcIiwgeCkpXG5cbmxldCBvZl9tYXAgPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpIH5mb2xkIGtleV90b19qc29uXG4gICAgdmFsdWVfdG9fanNvbiBtYXAgPVxuICBgTGlzdFxuICAgIChMaXN0LnJldlxuICAgICAgIChmb2xkXG4gICAgICAgICAgKGZ1biAoa2V5IDogJ2tleSkgKHZhbHVlIDogJ3ZhbHVlKSAobGlzdCA6IFlvanNvbi5CYXNpYy50IGxpc3QpIC0+XG4gICAgICAgICAgICBgQXNzb2MgWyBsYWJfa2V5LCBrZXlfdG9fanNvbiBrZXk7IGxhYl92YWx1ZSwgdmFsdWVfdG9fanNvbiB2YWx1ZSBdXG4gICAgICAgICAgICA6OiBsaXN0KVxuICAgICAgICAgIG1hcCBbXSkpXG5cbmxldCB0b19tYXAgPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJtYXBcIikgfmFkZCB+ZW1wdHkganNvbl90b19rZXkganNvbl90b192YWx1ZSA9XG4gIGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1hcCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBhZGRcbiAgICAgICAgICAgICAgIChqc29uX3RvX2tleSAoTGlzdC5hc3NvYyBsYWJfa2V5IGwpKVxuICAgICAgICAgICAgICAgKGpzb25fdG9fdmFsdWUgKExpc3QuYXNzb2MgbGFiX3ZhbHVlIGwpKVxuICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICAgICAgZW1wdHkgbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl91bml4X2xhYmVsID0gZnVuY3Rpb25cbiAgfCBVbml4TGFiZWxzLkUyQklHIC0+IGBBc3NvYyBbIFwiRTJCSUdcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFDQ0VTIC0+IGBBc3NvYyBbIFwiRUFDQ0VTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBR0FJTiAtPiBgQXNzb2MgWyBcIkVBR0FJTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQkFERiAtPiBgQXNzb2MgWyBcIkVCQURGXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVCVVNZIC0+IGBBc3NvYyBbIFwiRUJVU1lcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNISUxEIC0+IGBBc3NvYyBbIFwiRUNISUxEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVERUFETEsgLT4gYEFzc29jIFsgXCJFREVBRExLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVET00gLT4gYEFzc29jIFsgXCJFRE9NXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVFWElTVCAtPiBgQXNzb2MgWyBcIkVFWElTVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRkFVTFQgLT4gYEFzc29jIFsgXCJFRkFVTFRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUZCSUcgLT4gYEFzc29jIFsgXCJFRkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5UUiAtPiBgQXNzb2MgWyBcIkVJTlRSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlZBTCAtPiBgQXNzb2MgWyBcIkVJTlZBTFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU8gLT4gYEFzc29jIFsgXCJFSU9cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlTRElSIC0+IGBBc3NvYyBbIFwiRUlTRElSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVNRklMRSAtPiBgQXNzb2MgWyBcIkVNRklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTUxJTksgLT4gYEFzc29jIFsgXCJFTUxJTktcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5BTUVUT09MT05HIC0+IGBBc3NvYyBbIFwiRU5BTUVUT09MT05HXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORklMRSAtPiBgQXNzb2MgWyBcIkVORklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9ERVYgLT4gYEFzc29jIFsgXCJFTk9ERVZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PRU5UIC0+IGBBc3NvYyBbIFwiRU5PRU5UXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0VYRUMgLT4gYEFzc29jIFsgXCJFTk9FWEVDXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0xDSyAtPiBgQXNzb2MgWyBcIkVOT0xDS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9NRU0gLT4gYEFzc29jIFsgXCJFTk9NRU1cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PU1BDIC0+IGBBc3NvYyBbIFwiRU5PU1BDXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1NZUyAtPiBgQXNzb2MgWyBcIkVOT1NZU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9URElSIC0+IGBBc3NvYyBbIFwiRU5PVERJUlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9URU1QVFkgLT4gYEFzc29jIFsgXCJFTk9URU1QVFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVFRZIC0+IGBBc3NvYyBbIFwiRU5PVFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOWElPIC0+IGBBc3NvYyBbIFwiRU5YSU9cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBFUk0gLT4gYEFzc29jIFsgXCJFUEVSTVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUElQRSAtPiBgQXNzb2MgWyBcIkVQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVSQU5HRSAtPiBgQXNzb2MgWyBcIkVSQU5HRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUk9GUyAtPiBgQXNzb2MgWyBcIkVST0ZTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTUElQRSAtPiBgQXNzb2MgWyBcIkVTUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU1JDSCAtPiBgQXNzb2MgWyBcIkVTUkNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVYREVWIC0+IGBBc3NvYyBbIFwiRVhERVZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVdPVUxEQkxPQ0sgLT4gYEFzc29jIFsgXCJFV09VTERCTE9DS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5QUk9HUkVTUyAtPiBgQXNzb2MgWyBcIkVJTlBST0dSRVNTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBTFJFQURZIC0+IGBBc3NvYyBbIFwiRUFMUkVBRFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVFNPQ0sgLT4gYEFzc29jIFsgXCJFTk9UU09DS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FREVTVEFERFJSRVEgLT4gYEFzc29jIFsgXCJFREVTVEFERFJSRVFcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU1TR1NJWkUgLT4gYEFzc29jIFsgXCJFTVNHU0laRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUFJPVE9UWVBFIC0+IGBBc3NvYyBbIFwiRVBST1RPVFlQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9QUk9UT09QVCAtPiBgQXNzb2MgWyBcIkVOT1BST1RPT1BUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQUk9UT05PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU09DS1ROT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU9QTk9UU1VQUCAtPiBgQXNzb2MgWyBcIkVPUE5PVFNVUFBcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUREUklOVVNFIC0+IGBBc3NvYyBbIFwiRUFERFJJTlVTRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUREUk5PVEFWQUlMIC0+IGBBc3NvYyBbIFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkVURE9XTiAtPiBgQXNzb2MgWyBcIkVORVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORVRVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5FVFJFU0VUIC0+IGBBc3NvYyBbIFwiRU5FVFJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OQUJPUlRFRCAtPiBgQXNzb2MgWyBcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ09OTlJFU0VUIC0+IGBBc3NvYyBbIFwiRUNPTk5SRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9CVUZTIC0+IGBBc3NvYyBbIFwiRU5PQlVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSVNDT05OIC0+IGBBc3NvYyBbIFwiRUlTQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UQ09OTiAtPiBgQXNzb2MgWyBcIkVOT1RDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTSFVURE9XTiAtPiBgQXNzb2MgWyBcIkVTSFVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FVE9PTUFOWVJFRlMgLT4gYEFzc29jIFsgXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVRJTUVET1VUIC0+IGBBc3NvYyBbIFwiRVRJTUVET1VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OUkVGVVNFRCAtPiBgQXNzb2MgWyBcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSE9TVERPV04gLT4gYEFzc29jIFsgXCJFSE9TVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUhPU1RVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVMT09QIC0+IGBBc3NvYyBbIFwiRUxPT1BcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU9WRVJGTE9XIC0+IGBBc3NvYyBbIFwiRU9WRVJGTE9XXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVVTktOT1dORVJSIGludCAtPiBgQXNzb2MgWyBcIkVVTktOT1dORVJSXCIsIG9mX2ludCBpbnQgXVxuXG5sZXQgKHRvX3VuaXhfbGFiZWwgOiBZb2pzb24uQmFzaWMudCAtPiBVbml4TGFiZWxzLmVycm9yKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiRTJCSUdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FMkJJR1xuICB8IGBBc3NvYyBbIChcIkVBQ0NFU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBQ0NFU1xuICB8IGBBc3NvYyBbIChcIkVBR0FJTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBR0FJTlxuICB8IGBBc3NvYyBbIChcIkVCQURGXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUJBREZcbiAgfCBgQXNzb2MgWyAoXCJFQlVTWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVCVVNZXG4gIHwgYEFzc29jIFsgKFwiRUNISUxEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNISUxEXG4gIHwgYEFzc29jIFsgKFwiRURFQURMS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVERUFETEtcbiAgfCBgQXNzb2MgWyAoXCJFRE9NXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRURPTVxuICB8IGBBc3NvYyBbIChcIkVFWElTVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVFWElTVFxuICB8IGBBc3NvYyBbIChcIkVGQVVMVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVGQVVMVFxuICB8IGBBc3NvYyBbIChcIkVGQklHXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUZCSUdcbiAgfCBgQXNzb2MgWyAoXCJFSU5UUlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlRSXG4gIHwgYEFzc29jIFsgKFwiRUlOVkFMXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOVkFMXG4gIHwgYEFzc29jIFsgKFwiRUlPXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlPXG4gIHwgYEFzc29jIFsgKFwiRUlTRElSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlTRElSXG4gIHwgYEFzc29jIFsgKFwiRU1GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU1MSU5LXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1MSU5LXG4gIHwgYEFzc29jIFsgKFwiRU5BTUVUT09MT05HXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5BTUVUT09MT05HXG4gIHwgYEFzc29jIFsgKFwiRU5GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU5PREVWXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PREVWXG4gIHwgYEFzc29jIFsgKFwiRU5PRU5UXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PRU5UXG4gIHwgYEFzc29jIFsgKFwiRU5PRVhFQ1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0VYRUNcbiAgfCBgQXNzb2MgWyAoXCJFTk9MQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9MQ0tcbiAgfCBgQXNzb2MgWyAoXCJFTk9NRU1cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9NRU1cbiAgfCBgQXNzb2MgWyAoXCJFTk9TUENcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9TUENcbiAgfCBgQXNzb2MgWyAoXCJFTk9TWVNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9TWVNcbiAgfCBgQXNzb2MgWyAoXCJFTk9URElSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVERJUlxuICB8IGBBc3NvYyBbIChcIkVOT1RFTVBUWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RFTVBUWVxuICB8IGBBc3NvYyBbIChcIkVOT1RUWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RUWVxuICB8IGBBc3NvYyBbIChcIkVOWElPXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5YSU9cbiAgfCBgQXNzb2MgWyAoXCJFUEVSTVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQRVJNXG4gIHwgYEFzc29jIFsgKFwiRVBJUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUElQRVxuICB8IGBBc3NvYyBbIChcIkVSQU5HRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVSQU5HRVxuICB8IGBBc3NvYyBbIChcIkVST0ZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVJPRlNcbiAgfCBgQXNzb2MgWyAoXCJFU1BJUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU1BJUEVcbiAgfCBgQXNzb2MgWyAoXCJFU1JDSFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTUkNIXG4gIHwgYEFzc29jIFsgKFwiRVhERVZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FWERFVlxuICB8IGBBc3NvYyBbIChcIkVXT1VMREJMT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVdPVUxEQkxPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlBST0dSRVNTXG4gIHwgYEFzc29jIFsgKFwiRUFMUkVBRFlcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUxSRUFEWVxuICB8IGBBc3NvYyBbIChcIkVOT1RTT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVFNPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFREVTVEFERFJSRVFcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FREVTVEFERFJSRVFcbiAgfCBgQXNzb2MgWyAoXCJFTVNHU0laRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVNU0dTSVpFXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPVFlQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQUk9UT1RZUEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9QUk9UT09QVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1BST1RPT1BUXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBST1RPTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNPQ0tUTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRU9QTk9UU1VQUFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVPUE5PVFNVUFBcbiAgfCBgQXNzb2MgWyAoXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUEZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUREUklOVVNFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFERFJJTlVTRVxuICB8IGBBc3NvYyBbIChcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUREUk5PVEFWQUlMXG4gIHwgYEFzc29jIFsgKFwiRU5FVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVORVRVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5FVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTkVUUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVUUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTkFCT1JURURcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTkFCT1JURURcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5SRVNFVFxuICB8IGBBc3NvYyBbIChcIkVOT0JVRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9CVUZTXG4gIHwgYEFzc29jIFsgKFwiRUlTQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJU0NPTk5cbiAgfCBgQXNzb2MgWyAoXCJFTk9UQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RDT05OXG4gIHwgYEFzc29jIFsgKFwiRVNIVVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNIVVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRVRPT01BTllSRUZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVRPT01BTllSRUZTXG4gIHwgYEFzc29jIFsgKFwiRVRJTUVET1VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVRJTUVET1VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5SRUZVU0VEXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUhPU1RET1dOXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUhPU1RVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRUxPT1BcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTE9PUFxuICB8IGBBc3NvYyBbIChcIkVPVkVSRkxPV1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVPVkVSRkxPV1xuICB8IGBBc3NvYyBbIChcIkVVTktOT1dORVJSXCIsIGludCkgXSAtPiBVbml4TGFiZWxzLkVVTktOT1dORVJSICh0b19pbnQgaW50KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGJ1aWxkX21zZyBcInVuaXggbGFiZWxzIGVycm9yXCIsIHgpKVxuXG5sZXQgb2ZfdW5peF9lcnJvciA9IGZ1bmN0aW9uXG4gIHwgVW5peC5FMkJJRyAtPiBgQXNzb2MgWyBcIkUyQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBQ0NFUyAtPiBgQXNzb2MgWyBcIkVBQ0NFU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUdBSU4gLT4gYEFzc29jIFsgXCJFQUdBSU5cIiwgYE51bGwgXVxuICB8IFVuaXguRUJBREYgLT4gYEFzc29jIFsgXCJFQkFERlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQlVTWSAtPiBgQXNzb2MgWyBcIkVCVVNZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDSElMRCAtPiBgQXNzb2MgWyBcIkVDSElMRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FREVBRExLIC0+IGBBc3NvYyBbIFwiRURFQURMS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FRE9NIC0+IGBBc3NvYyBbIFwiRURPTVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FRVhJU1QgLT4gYEFzc29jIFsgXCJFRVhJU1RcIiwgYE51bGwgXVxuICB8IFVuaXguRUZBVUxUIC0+IGBBc3NvYyBbIFwiRUZBVUxUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVGQklHIC0+IGBBc3NvYyBbIFwiRUZCSUdcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOVFIgLT4gYEFzc29jIFsgXCJFSU5UUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5WQUwgLT4gYEFzc29jIFsgXCJFSU5WQUxcIiwgYE51bGwgXVxuICB8IFVuaXguRUlPIC0+IGBBc3NvYyBbIFwiRUlPXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJU0RJUiAtPiBgQXNzb2MgWyBcIkVJU0RJUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTUZJTEUgLT4gYEFzc29jIFsgXCJFTUZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU1MSU5LIC0+IGBBc3NvYyBbIFwiRU1MSU5LXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOQU1FVE9PTE9ORyAtPiBgQXNzb2MgWyBcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkZJTEUgLT4gYEFzc29jIFsgXCJFTkZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PREVWIC0+IGBBc3NvYyBbIFwiRU5PREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0VOVCAtPiBgQXNzb2MgWyBcIkVOT0VOVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9FWEVDIC0+IGBBc3NvYyBbIFwiRU5PRVhFQ1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9MQ0sgLT4gYEFzc29jIFsgXCJFTk9MQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PTUVNIC0+IGBBc3NvYyBbIFwiRU5PTUVNXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1NQQyAtPiBgQXNzb2MgWyBcIkVOT1NQQ1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9TWVMgLT4gYEFzc29jIFsgXCJFTk9TWVNcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVERJUiAtPiBgQXNzb2MgWyBcIkVOT1RESVJcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVEVNUFRZIC0+IGBBc3NvYyBbIFwiRU5PVEVNUFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RUWSAtPiBgQXNzb2MgWyBcIkVOT1RUWVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTlhJTyAtPiBgQXNzb2MgWyBcIkVOWElPXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQRVJNIC0+IGBBc3NvYyBbIFwiRVBFUk1cIiwgYE51bGwgXVxuICB8IFVuaXguRVBJUEUgLT4gYEFzc29jIFsgXCJFUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUkFOR0UgLT4gYEFzc29jIFsgXCJFUkFOR0VcIiwgYE51bGwgXVxuICB8IFVuaXguRVJPRlMgLT4gYEFzc29jIFsgXCJFUk9GU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FU1BJUEUgLT4gYEFzc29jIFsgXCJFU1BJUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRVNSQ0ggLT4gYEFzc29jIFsgXCJFU1JDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FWERFViAtPiBgQXNzb2MgWyBcIkVYREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVXT1VMREJMT0NLIC0+IGBBc3NvYyBbIFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOUFJPR1JFU1MgLT4gYEFzc29jIFsgXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUxSRUFEWSAtPiBgQXNzb2MgWyBcIkVBTFJFQURZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RTT0NLIC0+IGBBc3NvYyBbIFwiRU5PVFNPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRURFU1RBRERSUkVRIC0+IGBBc3NvYyBbIFwiRURFU1RBRERSUkVRXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVNU0dTSVpFIC0+IGBBc3NvYyBbIFwiRU1TR1NJWkVcIiwgYE51bGwgXVxuICB8IFVuaXguRVBST1RPVFlQRSAtPiBgQXNzb2MgWyBcIkVQUk9UT1RZUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PUFJPVE9PUFQgLT4gYEFzc29jIFsgXCJFTk9QUk9UT09QVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUFJPVE9OT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRVNPQ0tUTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVPUE5PVFNVUFAgLT4gYEFzc29jIFsgXCJFT1BOT1RTVVBQXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRUFERFJJTlVTRSAtPiBgQXNzb2MgWyBcIkVBRERSSU5VU0VcIiwgYE51bGwgXVxuICB8IFVuaXguRUFERFJOT1RBVkFJTCAtPiBgQXNzb2MgWyBcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwgXVxuICB8IFVuaXguRU5FVERPV04gLT4gYEFzc29jIFsgXCJFTkVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkVUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVORVRVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORVRSRVNFVCAtPiBgQXNzb2MgWyBcIkVORVRSRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTkFCT1JURUQgLT4gYEFzc29jIFsgXCJFQ09OTkFCT1JURURcIiwgYE51bGwgXVxuICB8IFVuaXguRUNPTk5SRVNFVCAtPiBgQXNzb2MgWyBcIkVDT05OUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PQlVGUyAtPiBgQXNzb2MgWyBcIkVOT0JVRlNcIiwgYE51bGwgXVxuICB8IFVuaXguRUlTQ09OTiAtPiBgQXNzb2MgWyBcIkVJU0NPTk5cIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVENPTk4gLT4gYEFzc29jIFsgXCJFTk9UQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU0hVVERPV04gLT4gYEFzc29jIFsgXCJFU0hVVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXguRVRPT01BTllSRUZTIC0+IGBBc3NvYyBbIFwiRVRPT01BTllSRUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVUSU1FRE9VVCAtPiBgQXNzb2MgWyBcIkVUSU1FRE9VVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTlJFRlVTRUQgLT4gYEFzc29jIFsgXCJFQ09OTlJFRlVTRURcIiwgYE51bGwgXVxuICB8IFVuaXguRUhPU1RET1dOIC0+IGBBc3NvYyBbIFwiRUhPU1RET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVIT1NUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTE9PUCAtPiBgQXNzb2MgWyBcIkVMT09QXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVPVkVSRkxPVyAtPiBgQXNzb2MgWyBcIkVPVkVSRkxPV1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FVU5LTk9XTkVSUiBpbnQgLT4gYEFzc29jIFsgXCJFVU5LTk9XTkVSUlwiLCBvZl9pbnQgaW50IF1cblxubGV0ICh0b191bml4X2Vycm9yIDogWW9qc29uLkJhc2ljLnQgLT4gVW5peC5lcnJvcikgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcIkUyQklHXCIsIGBOdWxsKSBdIC0+IFVuaXguRTJCSUdcbiAgfCBgQXNzb2MgWyAoXCJFQUNDRVNcIiwgYE51bGwpIF0gLT4gVW5peC5FQUNDRVNcbiAgfCBgQXNzb2MgWyAoXCJFQUdBSU5cIiwgYE51bGwpIF0gLT4gVW5peC5FQUdBSU5cbiAgfCBgQXNzb2MgWyAoXCJFQkFERlwiLCBgTnVsbCkgXSAtPiBVbml4LkVCQURGXG4gIHwgYEFzc29jIFsgKFwiRUJVU1lcIiwgYE51bGwpIF0gLT4gVW5peC5FQlVTWVxuICB8IGBBc3NvYyBbIChcIkVDSElMRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDSElMRFxuICB8IGBBc3NvYyBbIChcIkVERUFETEtcIiwgYE51bGwpIF0gLT4gVW5peC5FREVBRExLXG4gIHwgYEFzc29jIFsgKFwiRURPTVwiLCBgTnVsbCkgXSAtPiBVbml4LkVET01cbiAgfCBgQXNzb2MgWyAoXCJFRVhJU1RcIiwgYE51bGwpIF0gLT4gVW5peC5FRVhJU1RcbiAgfCBgQXNzb2MgWyAoXCJFRkFVTFRcIiwgYE51bGwpIF0gLT4gVW5peC5FRkFVTFRcbiAgfCBgQXNzb2MgWyAoXCJFRkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4LkVGQklHXG4gIHwgYEFzc29jIFsgKFwiRUlOVFJcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5UUlxuICB8IGBBc3NvYyBbIChcIkVJTlZBTFwiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlZBTFxuICB8IGBBc3NvYyBbIChcIkVJT1wiLCBgTnVsbCkgXSAtPiBVbml4LkVJT1xuICB8IGBBc3NvYyBbIChcIkVJU0RJUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJU0RJUlxuICB8IGBBc3NvYyBbIChcIkVNRklMRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVNRklMRVxuICB8IGBBc3NvYyBbIChcIkVNTElOS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVNTElOS1xuICB8IGBBc3NvYyBbIChcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOQU1FVE9PTE9OR1xuICB8IGBBc3NvYyBbIChcIkVORklMRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVORklMRVxuICB8IGBBc3NvYyBbIChcIkVOT0RFVlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0RFVlxuICB8IGBBc3NvYyBbIChcIkVOT0VOVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0VOVFxuICB8IGBBc3NvYyBbIChcIkVOT0VYRUNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9FWEVDXG4gIHwgYEFzc29jIFsgKFwiRU5PTENLXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PTENLXG4gIHwgYEFzc29jIFsgKFwiRU5PTUVNXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PTUVNXG4gIHwgYEFzc29jIFsgKFwiRU5PU1BDXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PU1BDXG4gIHwgYEFzc29jIFsgKFwiRU5PU1lTXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PU1lTXG4gIHwgYEFzc29jIFsgKFwiRU5PVERJUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RESVJcbiAgfCBgQXNzb2MgWyAoXCJFTk9URU1QVFlcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9URU1QVFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UVFlcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UVFlcbiAgfCBgQXNzb2MgWyAoXCJFTlhJT1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOWElPXG4gIHwgYEFzc29jIFsgKFwiRVBFUk1cIiwgYE51bGwpIF0gLT4gVW5peC5FUEVSTVxuICB8IGBBc3NvYyBbIChcIkVQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBJUEVcbiAgfCBgQXNzb2MgWyAoXCJFUkFOR0VcIiwgYE51bGwpIF0gLT4gVW5peC5FUkFOR0VcbiAgfCBgQXNzb2MgWyAoXCJFUk9GU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVST0ZTXG4gIHwgYEFzc29jIFsgKFwiRVNQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVNSQ0hcIiwgYE51bGwpIF0gLT4gVW5peC5FU1JDSFxuICB8IGBBc3NvYyBbIChcIkVYREVWXCIsIGBOdWxsKSBdIC0+IFVuaXguRVhERVZcbiAgfCBgQXNzb2MgWyAoXCJFV09VTERCTE9DS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVXT1VMREJMT0NLXG4gIHwgYEFzc29jIFsgKFwiRUlOUFJPR1JFU1NcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5QUk9HUkVTU1xuICB8IGBBc3NvYyBbIChcIkVBTFJFQURZXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFMUkVBRFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UU09DS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RTT0NLXG4gIHwgYEFzc29jIFsgKFwiRURFU1RBRERSUkVRXCIsIGBOdWxsKSBdIC0+IFVuaXguRURFU1RBRERSUkVRXG4gIHwgYEFzc29jIFsgKFwiRU1TR1NJWkVcIiwgYE51bGwpIF0gLT4gVW5peC5FTVNHU0laRVxuICB8IGBBc3NvYyBbIChcIkVQUk9UT1RZUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FUFJPVE9UWVBFXG4gIHwgYEFzc29jIFsgKFwiRU5PUFJPVE9PUFRcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9QUk9UT09QVFxuICB8IGBBc3NvYyBbIChcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVQUk9UT05PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVTT0NLVE5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVPUE5PVFNVUFBcIiwgYE51bGwpIF0gLT4gVW5peC5FT1BOT1RTVVBQXG4gIHwgYEFzc29jIFsgKFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFERFJJTlVTRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVBRERSSU5VU0VcbiAgfCBgQXNzb2MgWyAoXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFERFJOT1RBVkFJTFxuICB8IGBBc3NvYyBbIChcIkVORVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVORVRVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRU5FVFJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVFJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5BQk9SVEVEXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFTk9CVUZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PQlVGU1xuICB8IGBBc3NvYyBbIChcIkVJU0NPTk5cIiwgYE51bGwpIF0gLT4gVW5peC5FSVNDT05OXG4gIHwgYEFzc29jIFsgKFwiRU5PVENPTk5cIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UQ09OTlxuICB8IGBBc3NvYyBbIChcIkVTSFVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVTSFVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVUT09NQU5ZUkVGU1xuICB8IGBBc3NvYyBbIChcIkVUSU1FRE9VVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVUSU1FRE9VVFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OUkVGVVNFRFxuICB8IGBBc3NvYyBbIChcIkVIT1NURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVIT1NURE9XTlxuICB8IGBBc3NvYyBbIChcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVIT1NUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVMT09QXCIsIGBOdWxsKSBdIC0+IFVuaXguRUxPT1BcbiAgfCBgQXNzb2MgWyAoXCJFT1ZFUkZMT1dcIiwgYE51bGwpIF0gLT4gVW5peC5FT1ZFUkZMT1dcbiAgfCBgQXNzb2MgWyAoXCJFVU5LTk9XTkVSUlwiLCBpbnQpIF0gLT4gVW5peC5FVU5LTk9XTkVSUiAodG9faW50IGludClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChidWlsZF9tc2cgXCJ1bml4IGVycm9yXCIsIHgpKVxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIFlvanNvbi5CYXNpYy53cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHN0b3AgPSBTdG9wIG9mICdiIHwgU3VjY2VzcyBvZiAnYVxuXG5sZXQgc3VjY2VzcyBhID0gU3VjY2VzcyBhXG5sZXQgc3RvcCBhID0gU3RvcCBhXG5cbmxldCBzdWNjZXNzX29yX3N0b3AgZiBnIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTdWNjZXNzIGEgLT4gZiBhXG4gIHwgU3RvcCBhIC0+IGcgYVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG5lbmRcblxudHlwZSAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EpIHdpdGhfbG9nX3dyYXAgPVxuICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uIC0+IGV4biAtPiAnZXJyb3IpIC0+XG4gICdwYXJhbWV0ZXJzIC0+XG4gICdlcnJvciAtPlxuICAnYVxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCBpc19zaW5nbGV0b24gOiB0IC0+IGJvb2xcbiAgdmFsIGFkZCA6IGVsdCAtPiB0IC0+IHRcblxuICB2YWwgYWRkX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlIDogZWx0IC0+IHQgLT4gdFxuXG4gIHZhbCBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiBib29sICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiBib29sICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBzcGxpdCA6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuICB2YWwgZGlzam9pbnRfdW5pb24gOiB0IC0+IHQgLT4gdCBvcHRpb25cbiAgdmFsIGludGVyIDogdCAtPiB0IC0+IHRcblxuICB2YWwgbWludXMgOiB0IC0+IHQgLT4gdFxuICAoKiogW21pbnVzIGEgYl0gY29udGFpbnMgZWxlbWVudHMgb2YgW2FdIHRoYXQgYXJlIG5vdCBpbiBbYl0gKilcblxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiB0XG4gICgqKiBbZGlmZiBhIGJdID0gW21pbnVzICh1bmlvbiBhIGIpIChpbnRlciBhIGIpXSAqKVxuXG4gIHZhbCBtaW51c193aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCB1bmlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBkaXNqb2ludF91bmlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBpbnRlcl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBkaWZmX3dpdGhfbG9ncyA6ICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuICAoKiB2YWwgc3BsaXRfd2l0aF9sb2dzOlxuICAgICAgICAoJ3BhcmFtZXRlcnMsJ2Vycm9yLGVsdCAtPiB0IC0+ICdlcnJvciAqICggdCAqIGJvb2wgKiB0KSkgd2l0aF9sb2dfd3JhcCAqKVxuXG4gIHZhbCBzaXplIDogdCAtPiBpbnRcbiAgdmFsIG1lbSA6IGVsdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuXG4gIHZhbCBmaWx0ZXJfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgKGVsdCAtPiBib29sKSAtPiB0IC0+ICdlcnJvciAqIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBwYXJ0aXRpb24gOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcblxuICB2YWwgcGFydGl0aW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIChlbHQgLT4gYm9vbCkgLT4gdCAtPiAnZXJyb3IgKiB0ICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3Vic2V0IDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGZvbGRfaW52IDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJhbmRvbSA6IFJhbmRvbS5TdGF0ZS50IC0+IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHNldFxuICB0eXBlICsnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIHNpemUgOiAnYSB0IC0+IGludFxuICB2YWwgcm9vdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIG1heF9rZXkgOiAnYSB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIGFkZCA6IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHJlbW92ZSA6IGVsdCAtPiAnYSB0IC0+ICdhIHRcblxuICB2YWwgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgZWx0IC0+ICdhIC0+ICdhIHQgLT4gJ2Vycm9yICogYm9vbCAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogYm9vbCAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcG9wIDogZWx0IC0+ICdhIHQgLT4gJ2Egb3B0aW9uICogJ2EgdFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRfb3B0aW9uIDogZWx0IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2RlZmF1bHQgOiAnYSAtPiBlbHQgLT4gJ2EgdCAtPiAnYVxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSBvcHRpb24pIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIC0+IGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhKSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1lbSA6IGVsdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGRpZmYgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHVuaW9uIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVwZGF0ZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBkaWZmX3ByZWQgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG5cbiAgdmFsIGFkZF93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGpvaW5fd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgJ2EgdCAtPiBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHNwbGl0X3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICgnYSB0ICogJ2Egb3B0aW9uICogJ2EgdCkgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgdXBkYXRlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1hcDJfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiAnYSAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2IgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdiIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2Vycm9yICogJ2MgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBtYXAyel93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdhIC0+ICdlcnJvciAqICdhKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2Vycm9yICogJ2EgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb2xkMnpfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnYyAtPlxuICAgICAgJ2Vycm9yICogJ2MgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZDJfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2MgLT5cbiAgICAgICdlcnJvciAqICdjIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICdhIHQgLT5cbiAgICAgICdiIHQgLT5cbiAgICAgICdjIC0+XG4gICAgICAnZXJyb3IgKiAnYyApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2Vycm9yKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2Vycm9yIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfcHJlZF93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1lcmdlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHVuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKGVsdCAtPiAnYSAtPiAnZXJyb3IgKiAnYiAtPiAnZXJyb3IgKiAnYikgLT5cbiAgICAgIHNldCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgLT5cbiAgICAgICdlcnJvciAqICdiIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoZWx0IC0+ICdhIC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgKGVsdCAtPiAnZXJyb3IgKiAnYiAtPiAnZXJyb3IgKiAnYikgLT5cbiAgICAgIHNldCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgLT5cbiAgICAgICdlcnJvciAqICdiIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGl0ZXIgOiAoZWx0IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcblxuICB2YWwgZm9sZF93aXRoX2ludGVycnVwdGlvbiA6XG4gICAgKGVsdCAtPiAnYSAtPiAnYiAtPiAoJ2IsICdjKSBTdG9wLnN0b3ApIC0+ICdhIHQgLT4gJ2IgLT4gKCdiLCAnYykgU3RvcC5zdG9wXG5cbiAgdmFsIG1vbmFkaWNfZm9sZDIgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2EgLT4gJ2MgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2IgLT4gJ2MgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIG1vbmFkaWNfZm9sZDJfc3BhcnNlIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnY1xuXG4gIHZhbCBtb25hZGljX2l0ZXIyX3NwYXJzZSA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnbWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXJcblxuICB2YWwgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIG1hcGkgOiAoZWx0IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBtYXAyIDogKCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBmaWx0ZXJfb25lIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IChlbHQgKiAnYSkgb3B0aW9uXG4gIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGJpbmRpbmdzIDogJ2EgdCAtPiAoZWx0ICogJ2EpIGxpc3RcblxuICB2YWwgcHJpbnQgOlxuICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgdCAtPiB1bml0XG5cbiAgdmFsIG9mX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgP2Vycm9yX21zZzpzdHJpbmcgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gZWx0KSAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiAndmFsdWUpIC0+XG4gICAgWW9qc29uLkJhc2ljLnQgLT5cbiAgICAndmFsdWUgdFxuXG4gIHZhbCB0b19qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgIChlbHQgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgKCd2YWx1ZSAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAndmFsdWUgdCAtPlxuICAgIFlvanNvbi5CYXNpYy50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGVsdFxuXG4gIG1vZHVsZSBTZXQgOiBTZXQgd2l0aCB0eXBlIGVsdCA9IGVsdFxuICBtb2R1bGUgTWFwIDogTWFwIHdpdGggdHlwZSBlbHQgPSBlbHQgYW5kIHR5cGUgc2V0ID0gU2V0LnRcbmVuZFxuXG5leGNlcHRpb24gRGVhZENvZGVJc05vdERlYWQgb2Ygc3RyaW5nXG5cbm1vZHVsZSBNYWtlIChPcmQgOiBPcmRlcmVkVHlwZSkgOiBTIHdpdGggdHlwZSBlbHQgPSBPcmQudCA9IHN0cnVjdFxuICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgbW9kdWxlIFNldCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcblxuICAgIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEVtcHR5IHwgTm9kZSBvZiB0ICogZWx0ICogdCAqIGludCAqIGludFxuXG4gICAgICB2YWwgZW1wdHkgOiB0XG4gICAgICB2YWwgaGVpZ2h0IDogdCAtPiBpbnRcbiAgICAgIHZhbCBzaXplIDogdCAtPiBpbnRcbiAgICAgIHZhbCBub2RlIDogdCAtPiBlbHQgLT4gdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2YgdCAqIGVsdCAqIHQgKiBpbnQgKiBpbnRcblxuICAgICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcblxuICAgICAgbGV0IHNpemUgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG5cbiAgICAgIGxldCBub2RlIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgICBsZXQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAgICAgTm9kZVxuICAgICAgICAgICggbGVmdCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAoaWYgaGwgPiBociB0aGVuXG4gICAgICAgICAgICAgICBobFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGhyKVxuICAgICAgICAgICAgKyAxLFxuICAgICAgICAgICAgc2l6ZSBsZWZ0ICsgc2l6ZSByaWdodCArIDEgKVxuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gUHJpdmF0ZS50XG5cbiAgICBsZXQgZW1wdHkgPSBQcml2YXRlLmVtcHR5XG4gICAgbGV0IGhlaWdodCA9IFByaXZhdGUuaGVpZ2h0XG4gICAgbGV0IHNpemUgPSBQcml2YXRlLnNpemVcbiAgICBsZXQgbm9kZSA9IFByaXZhdGUubm9kZVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIC0+IGZhbHNlXG5cbiAgICBsZXQgc2luZ2xldG9uIHZhbHVlID0gbm9kZSBlbXB0eSB2YWx1ZSBlbXB0eVxuXG4gICAgbGV0IGlzX3NpbmdsZXRvbiBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKHNldDEsIF8sIHNldDIsIF8sIF8pIC0+IGlzX2VtcHR5IHNldDEgJiYgaXNfZW1wdHkgc2V0MlxuXG4gICAgbGV0IGJhbGFuY2UgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBsZXQgaGVpZ2h0X2xlZnQgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgbGV0IGhlaWdodF9yaWdodCA9IGhlaWdodCByaWdodCBpblxuICAgICAgaWYgaGVpZ2h0X2xlZnQgPiBoZWlnaHRfcmlnaHQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDIyMlwiKVxuICAgICAgICAoKiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCBsZWZ0bGVmdCA+PSBoZWlnaHQgbGVmdHJpZ2h0IHRoZW5cbiAgICAgICAgICAgIG5vZGUgbGVmdGxlZnQgbGVmdHZhbHVlIChub2RlIGxlZnRyaWdodCB2YWx1ZSByaWdodClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGxlZnRyaWdodCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjI5XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCBsZWZ0bGVmdCA8IGhlaWdodCBsZWZ0cmlnaHQgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0cmlnaHRsZWZ0LCBsZWZ0cmlnaHR2YWx1ZSwgbGVmdHJpZ2h0cmlnaHQsIF8sIF8pXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgICAgICAobm9kZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgbGVmdHJpZ2h0bGVmdClcbiAgICAgICAgICAgICAgICBsZWZ0cmlnaHR2YWx1ZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnRyaWdodHJpZ2h0IHZhbHVlIHJpZ2h0KVxuICAgICAgICAgIClcbiAgICAgICkgZWxzZSBpZiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDIzOFwiKVxuICAgICAgICAoKiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAocmlnaHRsZWZ0LCByaWdodHZhbHVlLCByaWdodHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCByaWdodHJpZ2h0ID49IGhlaWdodCByaWdodGxlZnQgdGhlblxuICAgICAgICAgICAgbm9kZSAobm9kZSBsZWZ0IHZhbHVlIHJpZ2h0bGVmdCkgcmlnaHR2YWx1ZSByaWdodHJpZ2h0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByaWdodGxlZnQgd2l0aFxuICAgICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDI0NVwiKVxuICAgICAgICAgICAgKCogMCA8PSBoZWlnaHQgcmlnaHRyaWdodCA8IGhlaWdodCByaWdodGxlZnQgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnRsZWZ0LCByaWdodGxlZnR2YWx1ZSwgcmlnaHRsZWZ0cmlnaHQsIF8sIF8pXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgICAgICAobm9kZSBsZWZ0IHZhbHVlIHJpZ2h0bGVmdGxlZnQpXG4gICAgICAgICAgICAgICAgcmlnaHRsZWZ0dmFsdWVcbiAgICAgICAgICAgICAgICAobm9kZSByaWdodGxlZnRyaWdodCByaWdodHZhbHVlIHJpZ2h0cmlnaHQpXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgbGV0IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIHRyeSBlcnJvciwgYmFsYW5jZSBsZWZ0IHZhbHVlIHJpZ2h0XG4gICAgICB3aXRoIERlYWRDb2RlSXNOb3REZWFkIGxvYyAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSAobG9jIF4gXCIgU2V0IGludmFyaWFudCBpcyBicm9rZW4sIGtlZXAgb24gd2l0aCB1bmJhbGFuY2VkIHNldFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuU0VULmJhbGFuY2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgKCoqIEJld2FyZSBzb21lIGNvZGUgcmVsaWVzIG9uIHRoZSBpbnZhcmlhbnQgW2FkZCB4IHMgPT0gc10gaWZmIFttZW0geCBzXSAqKVxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgdFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBvID0gYWRkIHggbCBpblxuICAgICAgICAgIGlmIG8gPT0gbCB0aGVuXG4gICAgICAgICAgICB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBvIHYgclxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBvID0gYWRkIHggciBpblxuICAgICAgICAgIGlmIG8gPT0gciB0aGVuXG4gICAgICAgICAgICB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsIHYgb1xuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbCBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgdHJ1ZSwgc2luZ2xldG9uIG5ld192YWxcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZV9zZXQsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIG5ld192YWwgdmFsdWVfc2V0IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZmFsc2UsIHNldFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWwgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgKVxuXG4gICAgbGV0IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBzZXQgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChcIlNldE1hcCBsaW5lIDMwMFwiIF4gXCIgYW4gYWxyZWFkeSBlbHQgaGFzIGJlZW4gYWRkZWQgdG8gYSBzZXRcIikpXG4gICAgICAgICAgICAoRmFpbHVyZSBcIlNldF9hbmRfTWFwLlNFVC5hZGRcIilcbiAgICAgIGluXG4gICAgICBlcnJvciwgc2V0XG5cbiAgICBsZXQgYWRkX2V2ZW5faWZfaXRfZXhpc3RzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsdWUgc2V0ID1cbiAgICAgIGxldCBlcnJvciwgXywgc2V0ID1cbiAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsdWUgc2V0XG4gICAgICBpblxuICAgICAgZXJyb3IsIHNldFxuXG4gICAgbGV0IHJlYyBqb2luIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGFkZCB2YWx1ZSByaWdodFxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGFkZCB2YWx1ZSBsZWZ0XG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIGxlZnRoZWlnaHQsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAocmlnaHRsZWZ0LCByaWdodHZhbHVlLCByaWdodHJpZ2h0LCByaWdodGhlaWdodCwgXykgKSAtPlxuICAgICAgICBpZiBsZWZ0aGVpZ2h0ID4gcmlnaHRoZWlnaHQgKyAyIHRoZW4gKFxuICAgICAgICAgIGxldCByaWdodCcgPSBqb2luIGxlZnRyaWdodCB2YWx1ZSByaWdodCBpblxuICAgICAgICAgIGJhbGFuY2UgbGVmdGxlZnQgbGVmdHZhbHVlIHJpZ2h0J1xuICAgICAgICApIGVsc2UgaWYgcmlnaHRoZWlnaHQgPiBsZWZ0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdCcgPSBqb2luIGxlZnQgdmFsdWUgcmlnaHRsZWZ0IGluXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0JyByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgcmVjIHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gdmFsdWUsIHJpZ2h0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluLCBsZWZ0JyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnRsZWZ0IGxlZnR2YWx1ZSBsZWZ0cmlnaHQgaW5cbiAgICAgICAgbWluLCBiYWxhbmNlIGxlZnQnIHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibWluX2VsdF93aXRoX2xvZ3MsIGxpbmUgMzAzXCIpXG4gICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCB2LCBfLCBfLCBfKSAtPiBlcnJvciwgU29tZSB2XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgXywgXywgXywgXykgLT5cbiAgICAgICAgbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSBcInJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncywgbGluZSAzMTFcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIF8sIHJpZ2h0LCBfLCBfKSAtPiBlcnJvciwgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgIHJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdFxuICAgICAgICBpblxuICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUgcmlnaHRcblxuICAgIGxldCBtZXJnZSBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluMiwgc2V0MicgPSBzYWZlX2V4dHJhY3RfbWluX2VsdCBsZWZ0MiB2YWx1ZTIgcmlnaHQyIGluXG4gICAgICAgIGJhbGFuY2Ugc2V0MSBtaW4yIHNldDInXG5cbiAgICBsZXQgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0MiA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZWx0X29wdCA9IG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyIGluXG4gICAgICAgIChtYXRjaCBlbHRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibWVyZ2Vfd2l0aF9sb2dzLGxpbmUgMzM5XCIpXG4gICAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHNldDFcbiAgICAgICAgfCBTb21lIGVsdCAtPiBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBlbHQgbGVmdDIpXG5cbiAgICBsZXQgcmVjIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSByaWdodFxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnRcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnRsZWZ0LCBsZWZ0dmFsdWUsIGxlZnRyaWdodCwgbGVmdGhlaWdodCwgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIHJpZ2h0aGVpZ2h0LCBfKSApIC0+XG4gICAgICAgIGlmIGxlZnRoZWlnaHQgPiByaWdodGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRyaWdodCB2YWx1ZSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRsZWZ0IGxlZnR2YWx1ZSByaWdodCdcbiAgICAgICAgKSBlbHNlIGlmIHJpZ2h0aGVpZ2h0ID4gbGVmdGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCB2YWx1ZSByaWdodGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgbGV0IGNvbmNhdCBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluMiwgc2V0MicgPSBzYWZlX2V4dHJhY3RfbWluX2VsdCBsZWZ0MiB2YWx1ZTIgcmlnaHQyIGluXG4gICAgICAgIGpvaW4gc2V0MSBtaW4yIHNldDInXG5cbiAgICBsZXQgY29uY2F0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgbGVmdDIgPVxuICAgICAgICAgIHJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGVsdF9vcHQgPSBtaW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MiBpblxuICAgICAgICAobWF0Y2ggZWx0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcImNvbmNhdF93aXRoX2xvZ3MsbGluZSAzOTBcIilcbiAgICAgICAgICAgICAgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgc2V0MVxuICAgICAgICB8IFNvbWUgZWx0IC0+IGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIGVsdCBsZWZ0MilcblxuICAgIGxldCByZWMgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzcGxpdF92YWwgc2V0ID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIChlbXB0eSwgZmFsc2UsIGVtcHR5KVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHNldF92YWwsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNwbGl0X3ZhbCBzZXRfdmFsIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgKGxlZnQsIHRydWUsIHJpZ2h0KVxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnRsZWZ0LCBib29sLCByaWdodGxlZnQpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc3BsaXRfdmFsIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHRyaWdodCA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHRsZWZ0IHNldF92YWwgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdGxlZnQsIGJvb2wsIHJpZ2h0cmlnaHQpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdHJpZ2h0LCBib29sLCByaWdodHJpZ2h0KSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNwbGl0X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0bGVmdCA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBzZXRfdmFsIGxlZnRyaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodClcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IGFzIHNldCAtPiBzZXRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZV9zZXQsIHJpZ2h0LCBfLCBfKSBhcyBzZXQgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2YWx1ZSB2YWx1ZV9zZXQgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIG1lcmdlIGxlZnQgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdCcgPSByZW1vdmUgdmFsdWUgbGVmdCBpblxuICAgICAgICAgIGlmIGxlZnQgPT0gbGVmdCcgdGhlblxuICAgICAgICAgICAgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgcmlnaHQnID0gcmVtb3ZlIHZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgaWYgcmlnaHQgPT0gcmlnaHQnIHRoZW5cbiAgICAgICAgICAgIHNldFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJhbGFuY2UgbGVmdCB2YWx1ZV9zZXQgcmlnaHQnXG4gICAgICAgIClcblxuICAgIGxldCByZWMgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IGFzIHNldCAtPiBlcnJvciwgZmFsc2UsIHNldFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIGFzIHNldCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHZhbHVlIHZhbHVlX3NldCBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9IG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCByaWdodCBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBzZXRcbiAgICAgICAgKSBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsZWZ0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZWZ0ID09IGxlZnQnIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA0NTRcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHJpZ2h0ID09IHJpZ2h0JyB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiU2V0TWFwIGxpbmUgNDY3XCIpXG4gICAgICAgICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVtb3ZlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgc2V0ID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgc2V0ID1cbiAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgZXJyb3IsIHNldFxuICAgICAgZWxzZVxuICAgICAgICAoIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgKFwiU2V0TWFwIGxpbmUgNDgxXCJcbiAgICAgICAgICAgICAgXiBcIkF0dGVtcHQgdG8gcmVtb3ZlIGFuIGVsdCB0aGF0IGRvZXMgbm90IGV4aXN0XCIpKVxuICAgICAgICAgICAgTm90X2ZvdW5kLFxuICAgICAgICAgIHNldCApXG5cbiAgICBsZXQgcmVjIHNwbGl0IHNwbGl0X3ZhbHVlIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBmYWxzZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBzZXRfdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNwbGl0X3ZhbHVlIHNldF92YWx1ZSBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgbGVmdCwgdHJ1ZSwgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdGxlZnQsIGJvb2wsIHJpZ2h0bGVmdCA9IHNwbGl0IHNwbGl0X3ZhbHVlIGxlZnQgaW5cbiAgICAgICAgICBsZXQgcmlnaHRyaWdodCA9IGpvaW4gcmlnaHRsZWZ0IHNldF92YWx1ZSByaWdodCBpblxuICAgICAgICAgIGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnRyaWdodCwgYm9vbCwgcmlnaHRyaWdodCA9IHNwbGl0IHNwbGl0X3ZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgbGV0IGxlZnRsZWZ0ID0gam9pbiBsZWZ0IHNldF92YWx1ZSBsZWZ0cmlnaHQgaW5cbiAgICAgICAgICBsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodFxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlblxuICAgICAgICAgICAgYWRkIHZhbHVlMiBzZXQxXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGVmdDIsIF8sIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgICBsZXQgbGVmdCcgPSB1bmlvbiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICAgICAgbGV0IHJpZ2h0JyA9IHVuaW9uIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgICAgIGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuXG4gICAgICAgICAgYWRkIHZhbHVlMSBzZXQyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsZWZ0MSwgXywgcmlnaHQxID0gc3BsaXQgdmFsdWUyIHNldDEgaW5cbiAgICAgICAgICBsZXQgbGVmdCcgPSB1bmlvbiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICAgIGxldCByaWdodCcgPSB1bmlvbiByaWdodDEgcmlnaHQyIGluXG4gICAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTIgcmlnaHQnXG4gICAgICAgIClcblxuICAgIGxldCByZWMgZGlzam9pbnRfdW5pb24gc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IFNvbWUgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IFNvbWUgc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlbiAoXG4gICAgICAgICAgICBsZXQgb3V0ID0gYWRkIHZhbHVlMiBzZXQxIGluXG4gICAgICAgICAgICBpZiBvdXQgPT0gc2V0MSB0aGVuXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGxlZnQyLCBfLCByaWdodDIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICAgICAgbWF0Y2ggZGlzam9pbnRfdW5pb24gbGVmdDEgbGVmdDIsIGRpc2pvaW50X3VuaW9uIHJpZ2h0MSByaWdodDIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGxlZnQnLCBTb21lIHJpZ2h0JyAtPiBTb21lIChqb2luIGxlZnQnIHZhbHVlMSByaWdodCcpXG4gICAgICAgICAgICB8IF8sIF8gLT4gTm9uZVxuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuIChcbiAgICAgICAgICBsZXQgb3V0ID0gYWRkIHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgaWYgc2V0MiA9PSBvdXQgdGhlblxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNvbWUgb3V0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBfLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgc2V0MSBpblxuICAgICAgICAgIG1hdGNoIGRpc2pvaW50X3VuaW9uIGxlZnQxIGxlZnQyLCBkaXNqb2ludF91bmlvbiByaWdodDEgcmlnaHQyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgbGVmdCcsIFNvbWUgcmlnaHQnIC0+IFNvbWUgKGpvaW4gbGVmdCcgdmFsdWUyIHJpZ2h0JylcbiAgICAgICAgICB8IF8sIF8gLT4gTm9uZVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlblxuICAgICAgICAgICAgYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIHNldDFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBfLCByaWdodDIpID1cbiAgICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMSByaWdodCdcbiAgICAgICAgICApXG4gICAgICAgIGVsc2UgaWYgaGVpZ2h0MSA9IDEgdGhlblxuICAgICAgICAgIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQxLCBfLCByaWdodDEpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIHNldDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMiByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHVuaW9uX3dpdGhfbG9ncyB3IHAgZSBzIHMnID0gdW5pb25fZ2VuIGFkZF9ldmVuX2lmX2l0X2V4aXN0cyB3IHAgZSBzIHMnXG4gICAgbGV0IGRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyB3IHAgZSBzIHMnID0gdW5pb25fZ2VuIGFkZF93aXRoX2xvZ3MgdyBwIGUgcyBzJ1xuXG4gICAgbGV0IHN1dHVyZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgbGVmdCcgPSBmIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgcmlnaHQnID0gZiByaWdodDEgcmlnaHQyIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGNvbmNhdCBsZWZ0JyByaWdodCdcblxuICAgIGxldCBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIChsZWZ0MiwgYm9vbCwgcmlnaHQyKSBmID1cbiAgICAgIGxldCBsZWZ0JyA9IGYgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCByaWdodCcgPSBmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBjb25jYXQgbGVmdCcgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBpbnRlciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgdHJpcGxlMiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgIHN1dHVyZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSB0cmlwbGUyIGludGVyXG5cbiAgICBsZXQgc3V0dXJlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgZWxzZVxuICAgICAgICBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodCdcblxuICAgIGxldCBzdXR1cmVfbm90X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMSByaWdodCdcblxuICAgIGxldCByZWMgaW50ZXJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IG1oJywgdHJpcGxlMiA9IHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgbWgnIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTJcbiAgICAgICAgICBpbnRlcl93aXRoX2xvZ3NcblxuICAgIGxldCByZWMgZGlmZiBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCB0cmlwbGUyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlX25vdCAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSB0cmlwbGUyIGRpZmZcblxuICAgIGxldCByZWMgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0cmlwbGUyID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAgIHRyaXBsZTIgZGlmZl93aXRoX2xvZ3NcblxuICAgIGxldCByZWMgbWludXMgc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVtcHR5XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IHRyaXBsZTIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgbWludXNcblxuICAgIGxldCByZWMgbWludXNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIGVtcHR5XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgdHJpcGxlMiA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MlxuICAgICAgICBpblxuICAgICAgICBzdXR1cmVfbm90X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgICB0cmlwbGUyIG1pbnVzX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBtZW0gc2VhcmNoZWRfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgc2V0X3ZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSBzZWFyY2hlZF92YWx1ZSBzZXRfdmFsdWUgaW5cbiAgICAgICAgYyA9PSAwXG4gICAgICAgIHx8IG1lbSBzZWFyY2hlZF92YWx1ZVxuICAgICAgICAgICAgIChpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmlnaHQpXG5cbiAgICBsZXQgZmlsdGVyIHAgc2V0ID1cbiAgICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBmaWx0XG4gICAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkIHZhbHVlIGFjY3VcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgICAgbGVmdClcbiAgICAgICAgICAgIHJpZ2h0XG4gICAgICBpblxuICAgICAgZmlsdCBlbXB0eSBzZXRcblxuICAgIGxldCBmaWx0ZXJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwIHNldCA9XG4gICAgICBsZXQgcmVjIGZpbHQgYWNjdSBzZXQgPVxuICAgICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGFjY3UgaW5cbiAgICAgICAgICBmaWx0XG4gICAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbGlzdFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBmaWx0IChlcnJvciwgZW1wdHkpIHNldFxuXG4gICAgbGV0IHBhcnRpdGlvbiBwIHNldCA9XG4gICAgICBsZXQgcmVjIHBhcnQgKCh0LCBmKSBhcyBhY2N1KSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgcGFydFxuICAgICAgICAgICAgKHBhcnRcbiAgICAgICAgICAgICAgIChpZiBwIHZhbHVlIHRoZW5cbiAgICAgICAgICAgICAgICAgIGFkZCB2YWx1ZSB0LCBmXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgdCwgYWRkIHZhbHVlIGYpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBwYXJ0IChlbXB0eSwgZW1wdHkpIHNldFxuXG4gICAgbGV0IHBhcnRpdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHAgc2V0ID1cbiAgICAgIGxldCByZWMgcGFydCAoKHJoLCB0LCBmKSBhcyBhY2N1KSBzZXQgPVxuICAgICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIHBhcnRcbiAgICAgICAgICAgIChwYXJ0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgcmggdmFsdWUgdCBpblxuICAgICAgICAgICAgICAgICAgYSwgYiwgZlxuICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYyA9IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIHJoIHZhbHVlIGYgaW5cbiAgICAgICAgICAgICAgICAgIGEsIHQsIGNcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgbGVmdClcbiAgICAgICAgICAgIHJpZ2h0XG4gICAgICBpblxuICAgICAgcGFydCAoZXJyb3IsIGVtcHR5LCBlbXB0eSkgc2V0XG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIGVudW0gPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVudW1cbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGNvbnNfZW51bSAoTW9yZSAodmFsdWUsIHJpZ2h0LCBlbnVtKSkgbGVmdFxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgfCBNb3JlICh2MSwgcjEsIGUxKSwgTW9yZSAodjIsIHIyLCBlMikgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgICAgIGNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gZTEgcjEpIChjb25zX2VudW0gZTIgcjIpXG5cbiAgICBsZXQgY29tcGFyZSBzZXQxIHNldDIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBFbmQgc2V0MSkgKGNvbnNfZW51bSBFbmQgc2V0MilcblxuICAgIGxldCBlcXVhbCBzZXQxIHNldDIgPSBjb21wYXJlIHNldDEgc2V0MiA9PSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSApIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdmFsdWUxIHZhbHVlMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgc3Vic2V0IGxlZnQxIGxlZnQyICYmIHN1YnNldCByaWdodDEgcmlnaHQyXG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgIHN1YnNldCAobm9kZSBsZWZ0MSB2YWx1ZTEgZW1wdHkpIGxlZnQyICYmIHN1YnNldCByaWdodDEgc2V0MlxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3Vic2V0IChub2RlIGVtcHR5IHZhbHVlMSByaWdodDEpIHJpZ2h0MiAmJiBzdWJzZXQgbGVmdDEgc2V0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgKCkgPSBpdGVyIGYgbGVmdCBpblxuICAgICAgICBsZXQgKCkgPSBmIHZhbHVlIGluXG4gICAgICAgIGl0ZXIgZiByaWdodFxuXG4gICAgbGV0IHJlYyBmb2xkIGYgc2V0IGFjY3UgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBmb2xkIGYgcmlnaHQgKGYgdmFsdWUgKGZvbGQgZiBsZWZ0IGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb2xkX2ludiBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9pbnYgZiBsIChmIHYgKGZvbGRfaW52IGYgciBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBwIHZhbHVlICYmIGZvcl9hbGwgcCBsZWZ0ICYmIGZvcl9hbGwgcCByaWdodFxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIHAgdmFsdWUgfHwgZXhpc3RzIHAgbGVmdCB8fCBleGlzdHMgcCByaWdodFxuXG4gICAgbGV0IGVsZW1lbnRzIHNldCA9XG4gICAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBlbGVtZW50c19hdXggKHZhbHVlIDo6IGVsZW1lbnRzX2F1eCBhY2N1IHJpZ2h0KSBsZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNldFxuXG4gICAgbGV0IHJlYyBhdXhfcHJpbnQgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gKClcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1cIiBPcmQucHJpbnQga2V5XG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCByaWdodCwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXSxAICVhXCIgT3JkLnByaW50IGtleSBhdXhfcHJpbnQgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWFAXVwiIGF1eF9wcmludCBsZWZ0IE9yZC5wcmludCBrZXlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhQF0sQCAlYVwiIGF1eF9wcmludCBsZWZ0IE9yZC5wcmludCBrZXlcbiAgICAgICAgICBhdXhfcHJpbnQgcmlnaHRcblxuICAgIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDg4XFx4ODVcIlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyBhcyBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAW3slYX1AXVwiIGF1eF9wcmludCBtXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxlZnRcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIHYsIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIF8sIHJpZ2h0LCBfLCBfKSAtPiBtYXhfZWx0IHJpZ2h0XG5cbiAgICBsZXQgY2hvb3NlID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgdiwgXywgXywgXykgLT4gU29tZSB2XG5cbiAgICBsZXQgcmVjIGZpbmRfYWNjIGFpbV9hY2MgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCBrZXksIHIsIF8sIGFjYykgLT5cbiAgICAgICAgaWYgYWltX2FjYyA+PSBhY2MgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGFjY19sID0gc2l6ZSBsIGluXG4gICAgICAgICAgbGV0IGFjY19yID0gc2l6ZSByIGluXG4gICAgICAgICAgaWYgYWNjX2wgPiBhaW1fYWNjIHRoZW5cbiAgICAgICAgICAgIGZpbmRfYWNjIGFpbV9hY2MgbFxuICAgICAgICAgIGVsc2UgaWYgYWNjX3IgKyBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICAgICAgZmluZF9hY2MgKGFpbV9hY2MgLSBhY2NfbCkgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNvbWUga2V5XG4gICAgICAgIClcblxuICAgICgqIGxldCByZWMgZmluZF9hY2MgayBtID1cbiAgICAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCBrZXksIHIsIF8sIF8pIC0+XG4gICAgICAgICAgICBsZXQgcyA9IHNpemUgbCBpblxuICAgICAgICAgICAgaWYgayA8IHMgdGhlbiBmaW5kX2FjYyBrIGxcbiAgICAgICAgICAgICAgZWxzZSBpZiBrID0gcyB0aGVuIFNvbWUga2V5XG4gICAgICAgICAgICAgIGVsc2UgZmluZF9hY2MgKGsgLSBzIC0gMSkgciAqKVxuXG4gICAgbGV0IHJhbmRvbSBycyBtID1cbiAgICAgIGxldCBzID0gc2l6ZSBtIGluXG4gICAgICBpZiBzID0gMCB0aGVuXG4gICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgZmluZF9hY2MgKFJhbmRvbS5TdGF0ZS5pbnQgcnMgKHNpemUgbSkpIG1cblxuICAgICgqIGxldCBhZGQgPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gYWRkX3dpdGhfbG9nc1xuICAgICAgIGxldCBzcGxpdCA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBzcGxpdF93aXRoX2xvZ3NcbiAgICAgICBsZXQgcmVtb3ZlID0gIExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSByZW1vdmVfd2l0aF9sb2dzXG4gICAgICAgbGV0IHVuaW9uID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHVuaW9uX3dpdGhfbG9nc1xuICAgICAgIGxldCBpbnRlciA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBpbnRlcl93aXRoX2xvZ3NcbiAgICAgICBsZXQgZGlmZiA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBkaWZmX3dpdGhfbG9nc1xuICAgICAgIGxldCBtaW51cyA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBtaW51c193aXRoX2xvZ3NcbiAgICAgICBsZXQgZmlsdGVyID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGZpbHRlcl93aXRoX2xvZ3NcbiAgICAgICBsZXQgcGFydGl0aW9uID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2Zvcl9LYVNpbSBwYXJ0aXRpb25fd2l0aF9sb2dzXG4gICAgKilcbiAgZW5kXG5cbiAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAoKiBNYXAgaW1wbGVtZW50YXRpb24qKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgICAgdHlwZSArJ2RhdGEgdCA9IHByaXZhdGVcbiAgICAgICAgfCBFbXB0eVxuICAgICAgICB8IE5vZGUgb2YgJ2RhdGEgdCAqIGVsdCAqICdkYXRhICogJ2RhdGEgdCAqIGludCAqIGludFxuXG4gICAgICB2YWwgZW1wdHkgOiAnYSB0XG4gICAgICB2YWwgaGVpZ2h0IDogJ2EgdCAtPiBpbnRcbiAgICAgIHZhbCBzaXplIDogJ2EgdCAtPiBpbnRcbiAgICAgIHZhbCBub2RlIDogJ2EgdCAtPiBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlICsnZGF0YSB0ID1cbiAgICAgICAgfCBFbXB0eVxuICAgICAgICB8IE5vZGUgb2YgJ2RhdGEgdCAqIGVsdCAqICdkYXRhICogJ2RhdGEgdCAqIGludCAqIGludFxuXG4gICAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgaCwgXykgLT4gaFxuXG4gICAgICBsZXQgc2l6ZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIF8sIHMpIC0+IHNcblxuICAgICAgbGV0IG5vZGUgbGVmdCBrZXkwIGRhdGEgcmlnaHQgPVxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgICBsZXQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAgICAgTm9kZVxuICAgICAgICAgICggbGVmdCxcbiAgICAgICAgICAgIGtleTAsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAoMVxuICAgICAgICAgICAgK1xuICAgICAgICAgICAgaWYgaGwgPiBociB0aGVuXG4gICAgICAgICAgICAgIGhsXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGhyKSxcbiAgICAgICAgICAgIDEgKyBzaXplIGxlZnQgKyBzaXplIHJpZ2h0IClcbiAgICBlbmRcblxuICAgIHR5cGUgKydhIHQgPSAnYSBQcml2YXRlLnRcblxuICAgIGxldCBlbXB0eSA9IFByaXZhdGUuZW1wdHlcbiAgICBsZXQgaGVpZ2h0ID0gUHJpdmF0ZS5oZWlnaHRcbiAgICBsZXQgc2l6ZSA9IFByaXZhdGUuc2l6ZVxuICAgIGxldCBub2RlID0gUHJpdmF0ZS5ub2RlXG5cbiAgICB0eXBlIHNldCA9IFNldC50XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT4gZmFsc2VcblxuICAgIGxldCByb290ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgeCwgZCwgXywgXywgXykgLT4gU29tZSAoeCwgZClcblxuICAgIGxldCByZWMgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIGssIF8sIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+IFNvbWUga1xuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIF8sIF8sIG0sIF8sIF8pIC0+IG1heF9rZXkgbVxuXG4gICAgbGV0IGJhbGFuY2UgbGVmdCBrZXkgZGF0YSByaWdodCA9XG4gICAgICBsZXQgaGVpZ2h0X2xlZnQgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgbGV0IGhlaWdodF9yaWdodCA9IGhlaWdodCByaWdodCBpblxuICAgICAgaWYgaGVpZ2h0X2xlZnQgPiBoZWlnaHRfcmlnaHQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDgyOFwiKVxuICAgICAgICAoKiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDAsIGtleTAsIGRhdGEwLCByaWdodDAsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IGxlZnQwID49IGhlaWdodCByaWdodDAgdGhlblxuICAgICAgICAgICAgbm9kZSBsZWZ0MCBrZXkwIGRhdGEwIChub2RlIHJpZ2h0MCBrZXkgZGF0YSByaWdodClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJpZ2h0MCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgODM1XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCBsZWZ0MCA8IGhlaWdodCByaWdodDAgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnQwIGtleTAgZGF0YTAgbGVmdDEpXG4gICAgICAgICAgICAgICAga2V5MSBkYXRhMVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0MSBrZXkgZGF0YSByaWdodClcbiAgICAgICAgICApXG4gICAgICApIGVsc2UgaWYgaGVpZ2h0X3JpZ2h0ID4gaGVpZ2h0X2xlZnQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4NDRcIilcbiAgICAgICAgKCogaGVpZ2h0X3JpZ2h0ID4gaGVpZ2h0X2xlZnQgKyAyID49IDIgKilcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQwLCBrZXkwLCBkYXRhMCwgcmlnaHQwLCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCByaWdodDAgPj0gaGVpZ2h0IGxlZnQwIHRoZW5cbiAgICAgICAgICAgIG5vZGUgKG5vZGUgbGVmdCBrZXkgZGF0YSBsZWZ0MCkga2V5MCBkYXRhMCByaWdodDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGxlZnQwIHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4NTFcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IHJpZ2h0MCA8IGhlaWdodCBsZWZ0MCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgICAgICBub2RlIChub2RlIGxlZnQga2V5IGRhdGEgbGVmdDEpIGtleTEgZGF0YTFcbiAgICAgICAgICAgICAgICAobm9kZSByaWdodDEga2V5MCBkYXRhMCByaWdodDApXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIG5vZGUgbGVmdCBrZXkgZGF0YSByaWdodFxuXG4gICAgbGV0IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleSBkYXRhIHJpZ2h0ID1cbiAgICAgIHRyeSBlcnJvciwgYmFsYW5jZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG4gICAgICB3aXRoIERlYWRDb2RlSXNOb3REZWFkIGxvYyAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSAobG9jIF4gXCIgTWFwIGludmFyaWFudCBpcyBicm9rZW4sIGtlZXAgb24gd2l0aCB1bmJhbGFuY2VkIG1hcFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuTWFwLmJhbGFuY2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCBrZXkgZGF0YSByaWdodFxuXG4gICAgbGV0IHJlYyBhZGQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG5vZGUgZW1wdHkga2V5IGRhdGEgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhX21hcCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBub2RlIGxlZnQga2V5X21hcCBkYXRhIHJpZ2h0XG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgYmFsYW5jZSAoYWRkIGtleSBkYXRhIGxlZnQpIGtleV9tYXAgZGF0YV9tYXAgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJhbGFuY2UgbGVmdCBrZXlfbWFwIGRhdGFfbWFwIChhZGQga2V5IGRhdGEgcmlnaHQpXG5cbiAgICBsZXQgcmVjIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHRydWUsIG5vZGUgZW1wdHkga2V5IGRhdGEgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhX21hcCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZmFsc2UsIG5vZGUgbGVmdCBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGxlZnQnIGtleV9tYXAgZGF0YV9tYXAgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGxlZnQga2V5X21hcCBkYXRhX21hcCByaWdodCdcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgKVxuXG4gICAgbGV0IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbWFwID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhIG1hcFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgbWFwXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGEsIGIsIF8sIF8gPSBfX1BPU19fIGluXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXIgZXJyb3IgXCJzZXRNYXAubWwgXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoYSBeIFwiIGxpbmU6IFwiIF4gc3RyaW5nX29mX2ludCBiXG4gICAgICAgICAgICAgIF4gXCI6IEF0dGVtcHQgdG8gYWRkIGFuIGFzc29jaWF0aW9uIG92ZXIgYSBmb3JtZXIgb25lIGluIGEgbWFwXCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5NYXAuYWRkXCIpLFxuICAgICAgICAgIG1hcCApXG4gICAgICApXG5cbiAgICBsZXQgcmVjIGV4dHJhY3RfbWluX2JpbmRpbmcgbWFwIGtleSBkYXRhIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoa2V5LCBkYXRhKSwgbWFwJ1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluLCBsZWZ0JyA9IGV4dHJhY3RfbWluX2JpbmRpbmcgbGVmdDIga2V5MiBkYXRhMiByaWdodDIgaW5cbiAgICAgICAgbWluLCBiYWxhbmNlIGxlZnQnIGtleSBkYXRhIG1hcCdcblxuICAgIGxldCByZWMgZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcCBrZXkgZGF0YVxuICAgICAgICBtYXAnID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsICgoa2V5LCBkYXRhKSwgbWFwJylcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobWluLCBsZWZ0JykgPVxuICAgICAgICAgIGV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MiBrZXkyIGRhdGEyXG4gICAgICAgICAgICByaWdodDJcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIChtaW4sIGJhbGFuY2UgbGVmdCcga2V5IGRhdGEgbWFwJylcblxuICAgIGxldCBtZXJnZSBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwMlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICAobWF0Y2ggbWFwMiB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAxXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgLT5cbiAgICAgICAgICBsZXQgKGtleTMsIGRhdGEzKSwgbGVmdCcgPVxuICAgICAgICAgICAgZXh0cmFjdF9taW5fYmluZGluZyBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZSBtYXAxIGtleTMgZGF0YTMgbGVmdCcpXG5cbiAgICBsZXQgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgKG1hdGNoIG1hcDIgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDFcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgKChrZXkzLCBkYXRhMyksIGxlZnQnKSA9XG4gICAgICAgICAgICBleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDIga2V5MiBkYXRhMlxuICAgICAgICAgICAgICByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIGtleTMgZGF0YTMgbGVmdCcpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0XG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgYmFsYW5jZSAocmVtb3ZlIGtleSBsZWZ0KSBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJhbGFuY2UgbGVmdCBrZXlfbWFwIGRhdGEgKHJlbW92ZSBrZXkgcmlnaHQpXG5cbiAgICBsZXQgcmVjIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcCA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBmYWxzZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPSBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgcmlnaHQgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbWFwXG4gICAgICAgICkgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbGVmdCcgPT0gbGVmdCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiU2V0TWFwIGxpbmUgOTYxXCIpXG4gICAgICAgICAgICAgICAgICAoZmFpbHdpdGggXCJJbnZhcmlhbnQgaXMgYnJva2VuXCIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcga2V5X21hcCBkYXRhIHJpZ2h0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmlnaHQnID09IHJpZ2h0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA5NzhcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleV9tYXAgZGF0YSByaWdodCdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVtb3ZlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcCA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIG1hcCA9XG4gICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgbWFwXG4gICAgICBlbHNlXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoXCJTZXRNYXAgbGluZSA5OTRcIlxuICAgICAgICAgICAgICBeIFwiVHJ5IHRvIHJlbW92ZSBhbiBhc3NvY2lhdGlvbiB0aGF0IGlzIG5vdCBkZWZpbmVkIGluIE1hcC5yZW1vdmVcIlxuICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgIChmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJUcnkgdG8gcmVtb3ZlIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gTWFwLnJlbW92ZVwiKSxcbiAgICAgICAgICBtYXAgKVxuXG4gICAgbGV0IHJlYyBwb3AgeCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgbSAtPiBOb25lLCBtXG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgZCwgciwgXywgXykgYXMgbSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgU29tZSBkLCBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBwb3AgeCBsIHdpdGhcbiAgICAgICAgICB8IChOb25lIGFzIG8pLCBfIC0+IG8sIG1cbiAgICAgICAgICB8IChTb21lIF8gYXMgbyksIHQgLT4gbywgYmFsYW5jZSB0IHYgZCByXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcG9wIHggciB3aXRoXG4gICAgICAgICAgfCAoTm9uZSBhcyBvKSwgXyAtPiBvLCBtXG4gICAgICAgICAgfCAoU29tZSBfIGFzIG8pLCB0IC0+IG8sIGJhbGFuY2UgbCB2IGQgdFxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGpvaW4gbGVmdCBrZXkgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggYmFsYW5jZSBsZWZ0IGtleSB2YWx1ZSByaWdodCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMTAxM1wiKSAoKiBCeSBjYXNlIGFuYWx5c2lzICopXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIGFzIG1hcDIgLT5cbiAgICAgICAgbGV0IGggPSBoZWlnaHQgbGVmdDIgLSBoZWlnaHQgcmlnaHQyIGluXG4gICAgICAgIGlmIGggPiAyIHx8IGggPCAtMiB0aGVuXG4gICAgICAgICAgam9pbiBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MlxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWFwMlxuXG4gICAgbGV0IHJlYyBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBrZXkgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5IHZhbHVlIHJpZ2h0IHdpdGhcbiAgICAgIHwgZXJyb3IsIFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIFwiTWFwLmpvaW5fd2l0aF9sb2dzLCBsaW5lIDk4NiwgdGhlIG91dHB1dCBvZiBiYWxhbmNlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICBiZSBlbXB0eVwiKVxuICAgICAgICAgICAgKGZhaWx3aXRoIFwidGhlIG91dHB1dCBvZiBiYWxhbmNlIHNob3VsZCBub3QgYmUgZW1wdHlcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGVtcHR5XG4gICAgICB8IGVycm9yLCAoUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgYXMgbWFwMikgLT5cbiAgICAgICAgbGV0IGggPSBoZWlnaHQgbGVmdDIgLSBoZWlnaHQgcmlnaHQyIGluXG4gICAgICAgIGlmIGggPiAyIHx8IGggPCAtMiB0aGVuXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlcnJvciwgbWFwMlxuXG4gICAgbGV0IHJlYyBzcGxpdCB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIE5vbmUsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSB2YWx1ZSBrZXkxIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGxlZnQxLCBTb21lIGRhdGExLCByaWdodDFcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlIGxlZnQxIGluXG4gICAgICAgICAgbGV0IHJpZ2h0MicgPSBqb2luIHJpZ2h0MiBrZXkxIGRhdGExIHJpZ2h0MSBpblxuICAgICAgICAgIGxlZnQyLCBkYXRhMiwgcmlnaHQyJ1xuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlIHJpZ2h0MSBpblxuICAgICAgICAgIGxldCBsZWZ0MicgPSBqb2luIGxlZnQxIGtleTEgZGF0YTEgbGVmdDIgaW5cbiAgICAgICAgICBsZWZ0MicsIGRhdGEyLCByaWdodDJcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIG1hcCA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCAoZW1wdHksIE5vbmUsIGVtcHR5KVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUgdmFsdWUga2V5MSBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgKGxlZnQxLCBTb21lIGRhdGExLCByaWdodDEpXG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsZWZ0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodDInID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDIga2V5MSBkYXRhMSByaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDInKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHJpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0MicgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGtleTEgZGF0YTEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdDInLCBkYXRhMiwgcmlnaHQyKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGRpZmYgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICBsZXQgb2xlZnQxLCBvbGVmdDIgPSBkaWZmIGxlZnQxIGxlZnQyIGluXG4gICAgICAgIGxldCBvcmlnaHQxLCBvcmlnaHQyID0gZGlmZiByaWdodDEgcmlnaHQyIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4geCA9IGRhdGExIC0+IG1lcmdlIG9sZWZ0MSBvcmlnaHQxLCBtZXJnZSBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIGpvaW4gb2xlZnQyIGtleTEgZGF0YTIgb3JpZ2h0MlxuICAgICAgICB8IE5vbmUgLT4gam9pbiBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxLCBtZXJnZSBvbGVmdDIgb3JpZ2h0MilcblxuICAgIGxldCByZWMgdW5pb24gbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1hcDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtYXAxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCBkYXRhMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIGRhdGEyLCByaWdodDIsIGhlaWdodDIsIF8pICkgLT5cbiAgICAgICAgaWYgaGVpZ2h0MSA+PSBoZWlnaHQyIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0Miwgb3BfZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBtYXAyIGluXG4gICAgICAgICAgam9pbiAodW5pb24gbGVmdDEgbGVmdDIpIHZhbHVlMVxuICAgICAgICAgICAgKG1hdGNoIG9wX2RhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgKHVuaW9uIHJpZ2h0MSByaWdodDIpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBvcF9kYXRhMSwgcmlnaHQxID0gc3BsaXQgdmFsdWUyIG1hcDEgaW5cbiAgICAgICAgICBqb2luICh1bmlvbiBsZWZ0MSBsZWZ0MikgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEyXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gZDEpXG4gICAgICAgICAgICAodW5pb24gcmlnaHQxIHJpZ2h0MilcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgbWFwMlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBtYXAxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCBkYXRhMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIGRhdGEyLCByaWdodDIsIGhlaWdodDIsIF8pICkgLT5cbiAgICAgICAgaWYgaGVpZ2h0MSA+PSBoZWlnaHQyIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBvcF9kYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBtYXAyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQnID1cbiAgICAgICAgICAgIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMVxuICAgICAgICAgICAgKG1hdGNoIG9wX2RhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgcmlnaHQnXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDEsIG9wX2RhdGExLCByaWdodDEpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIG1hcDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEyXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gZDEpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyB1cGRhdGUgbWFwMSBtYXAyID1cbiAgICAgIGlmIG1hcDEgPT0gbWFwMiB0aGVuXG4gICAgICAgIG1hcDJcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG1hcDJcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICAgIGpvaW4gKHVwZGF0ZSBsZWZ0MSBsZWZ0Mikga2V5MVxuICAgICAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgKHVwZGF0ZSByaWdodDEgcmlnaHQyKVxuICAgICAgKVxuXG4gICAgbGV0IHJlYyB1cGRhdGVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgaWYgbWFwMSA9PSBtYXAyIHRoZW5cbiAgICAgICAgZXJyb3IsIG1hcDJcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBtYXAyXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdXBkYXRlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVwZGF0ZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXkxXG4gICAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgIClcblxuICAgIGxldCByZWMgZGlmZl9wcmVkIHByZWQgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICBsZXQgb2xlZnQxLCBvbGVmdDIgPSBkaWZmX3ByZWQgcHJlZCBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICBsZXQgb3JpZ2h0MSwgb3JpZ2h0MiA9IGRpZmZfcHJlZCBwcmVkIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBwcmVkIHggZGF0YTEgLT4gbWVyZ2Ugb2xlZnQxIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgam9pbiBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgIHwgTm9uZSAtPiBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCBfLCBfLCBfKSAtPiBTb21lIChrZXksIGRhdGEpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgXywgXywgXywgXywgXykgLT4gbWluX2VsdCBsZWZ0XG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0aW9uIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgU29tZSBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX29wdGlvbiBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9kZWZhdWx0IGQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBkXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX2RlZmF1bHQgZCBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9vcHRpb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibGluZSA2NTlcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgU29tZSBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX29wdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5XG4gICAgICAgICAgICAoaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgICAgICBsZWZ0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgcmlnaHQpXG5cbiAgICBsZXQgcmVjIGZpbmRfZGVmYXVsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcImxpbmUgNjY5XCIpIE5vdF9mb3VuZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgZFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfZGVmYXVsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZCBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgbWVtIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBfLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGNtcCA9PSAwXG4gICAgICAgIHx8XG4gICAgICAgIGlmIGNtcCA+IDAgdGhlblxuICAgICAgICAgIG1lbSBrZXkgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1lbSBrZXkgbGVmdFxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfb25lIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgaWYgcCBrZXkgdmFsdWUgdGhlblxuICAgICAgICAgIFNvbWUgKGtleSwgdmFsdWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGZpbHRlcl9vbmUgcCBsZWZ0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX29uZSBwIHJpZ2h0XG4gICAgICAgICAgfCBvdXQgLT4gb3V0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCAoKSA9IGl0ZXIgZiBsZWZ0IGluXG4gICAgICAgIGxldCAoKSA9IGYga2V5IGRhdGEgaW5cbiAgICAgICAgaXRlciBmIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGZvbGQgZiByaWdodCAoZiBrZXkgZGF0YSAoZm9sZCBmIGxlZnQgdmFsdWUpKVxuXG4gICAgbGV0IHJlYyBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbWFwIHZhbHVlID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2UsIFN0b3Auc3VjY2VzcyB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBvdXRwdXRsID0gZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIGxlZnQgdmFsdWUgaW5cbiAgICAgICAgbGV0IGludGVycnVwdGVkLCB2YWx1ZSA9IG91dHB1dGwgaW5cbiAgICAgICAgaWYgaW50ZXJydXB0ZWQgdGhlblxuICAgICAgICAgIG91dHB1dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgIGxldCB2YWxfb3B0ID1cbiAgICAgICAgICAgICAgICB0cnkgU29tZSAoZiBrZXkgZGF0YSB2YWx1ZSkgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCB2YWxfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHRydWUsIFN0b3Auc3VjY2VzcyB2YWx1ZVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAgICAgICAoZnVuIHYgLT4gZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIHJpZ2h0IHYpXG4gICAgICAgICAgICAgICAgICAoZnVuIHYgLT4gZmFsc2UsIFN0b3Auc3RvcCB2KVxuICAgICAgICAgICAgICAgICAgdilcbiAgICAgICAgICAgIChmdW4geCAtPiBmYWxzZSwgU3RvcC5zdG9wIHgpXG4gICAgICAgICAgICB2YWx1ZVxuXG4gICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUgPVxuICAgICAgc25kIChmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbWFwIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGQgcGFyYW0gZXJyIGYgbWFwIHZhbHVlID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyLCB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnInLCB2YWx1ZScgPSBtb25hZGljX2ZvbGQgcGFyYW0gZXJyIGYgbGVmdCB2YWx1ZSBpblxuICAgICAgICBsZXQgZXJyJycsIHZhbHVlJycgPSBmIHBhcmFtIGVycicga2V5IGRhdGEgdmFsdWUnIGluXG4gICAgICAgIG1vbmFkaWNfZm9sZCBwYXJhbSBlcnInJyBmIHJpZ2h0IHZhbHVlJydcblxuICAgIGxldCByZWMgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIG1hcDEgbWFwMiByZXMgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIFByaXZhdGUuRW1wdHkgLT4gcmgsIHJlc1xuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIHJoIGggbWFwMiByZXNcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyByaCBnIG1hcDEgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID0gbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIGxlZnQxIGxlZnQyIHJlcyBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGcgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMSByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoJycgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID0gbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIGxlZnQxIGxlZnQyIHJlcyBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGYgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoJycgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBtb25hZGljX2ZvbGQyX3NwYXJzZSBwYXJhbWV0ZXJzIHJoIGYgbWFwMSBtYXAyIHJlcyA9XG4gICAgICBsZXQgaWQgXyB4IF8gXyB5ID0geCwgeSBpblxuICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgaWQgaWQgbWFwMSBtYXAyIHJlc1xuXG4gICAgbGV0IG1vbmFkaWNfaXRlcjJfc3BhcnNlIHBhcmFtZXRlcnMgcmggZiBtYXAxIG1hcDIgPVxuICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgIG1vbmFkaWNfZm9sZDJfc3BhcnNlIHBhcmFtZXRlcnMgcmhcbiAgICAgICAgICAoZnVuIHAgZSBrIGEgYiAoKSAtPiBmIHAgZSBrIGEgYiwgKCkpXG4gICAgICAgICAgbWFwMSBtYXAyICgpXG4gICAgICBpblxuICAgICAgZXJyb3JcblxuICAgIGxldCByZWMgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBzZXQgbWFwIHJlcyA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBTZXQuUHJpdmF0ZS5FbXB0eSAtPiByaCwgcmVzXG4gICAgICB8IFNldC5Qcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPVxuICAgICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoJyBmIHJpZ2h0MSByaWdodDIgcmVzJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID1cbiAgICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmgnJywgcmVzJycgPSBmIHBhcmFtZXRlcnMgcmgnIGtleTEgZGF0YTIgcmVzJyBpblxuICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoJycgZiByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbm9kZSAobWFwaSBmIGxlZnQpIGtleSAoZiBrZXkgZGF0YSkgKG1hcGkgZiByaWdodClcblxuICAgIGxldCBtYXAgZiBzID0gbWFwaSAoZnVuIF8geCAtPiBmIHgpIHNcblxuICAgIGxldCByZWMgbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3JzLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvcnMsIGxlZnQnID0gbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgbGVmdCBpblxuICAgICAgICBsZXQgZXJyb3JzLCBkYXRhJyA9IGYgcGFyYW1ldGVycyBlcnJvcnMgZGF0YSBpblxuICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IG1hcF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIHJpZ2h0IGluXG4gICAgICAgIGVycm9yLCBub2RlIGxlZnQnIGtleSBkYXRhJyByaWdodCdcblxuICAgIGxldCByZWMgbWFwMiBmIG1hcCBtYXAnID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwJ1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbGVmdDIsIGRhdGEyLCByaWdodDIgPSBzcGxpdCBrZXkxIG1hcCcgaW5cbiAgICAgICAgam9pbiAobWFwMiBmIGxlZnQxIGxlZnQyKSBrZXkxXG4gICAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZGF0YTFcbiAgICAgICAgICB8IFNvbWUgZDIgLT4gZiBkYXRhMSBkMilcbiAgICAgICAgICAobWFwMiBmIHJpZ2h0MSByaWdodDIpXG5cbiAgICBsZXQgcmVjIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBtYXAyIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9ycywgZW1wdHlcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPiBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZyBtYXAyKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgZXJyb3JzLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9ycywgbGVmdCcgPVxuICAgICAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggbGVmdDEgbGVmdDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID1cbiAgICAgICAgICBtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGYgcGFyYW1ldGVycyBlcnJvciBkYXRhMVxuICAgICAgICAgIHwgU29tZSBkMiAtPiBoIHBhcmFtZXRlcnMgZXJyb3JzIGRhdGExIGQyXG4gICAgICAgIGluXG4gICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXkxIGRhdGEnIHJpZ2h0J1xuXG4gICAgbGV0IG1hcDJ6X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzID1cbiAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnNcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNDgsIGluY29tcGF0aWJsZSBtYXBzIGluIG1hcDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNTEsIGluY29tcGF0aWJsZSBtYXBzIGluIG1hcDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcblxuICAgIGxldCByZWMgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCBtYXAxIG1hcDIgcmVzID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCByZXNcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyBlcnJvciBnIG1hcDIgcmVzXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gbW9uYWRpY19mb2xkIHBhcmFtZXRlcnMgZXJyb3IgZiBtYXAxIHJlc1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBtYXAyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnJyA9IGYgcGFyYW1ldGVycyBlcnJvciBrZXkxIGRhdGExIHJlcycgaW5cbiAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIHJpZ2h0MSByaWdodDIgcmVzJydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gaCBwYXJhbWV0ZXJzIGVycm9yIChrZXkxIDogZWx0KSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IGZvbGQyel93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yID1cbiAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIF8gXyBhIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAgIChTb21lIFwibGluZSAxMjQ4LCBpbmNvbXBhdGlibGUgbWFwcyBpbiBmb2xkMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgXyBfIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNTEsIGluY29tcGF0aWJsZSBtYXBzIGluIGZvbGQyel9zYWZlXCIpIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGEpXG5cbiAgICBsZXQgcmVjIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbWFwMSBtYXAyIHJlcyA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHJlc1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBtYXAyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiByaWdodDEgcmlnaHQyIHJlcydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgZGF0YTEgZGF0YTIgcmVzJyBpblxuICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIG1hcDEgbWFwMiA9XG4gICAgICBsZXQgZXJyb3IsIF8gPVxuICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyIGVyciBhIGIgYyBfIC0+IGYgcGFyIGVyciBhIGIgYywgKCkpXG4gICAgICAgICAgbWFwMSBtYXAyICgpXG4gICAgICBpblxuICAgICAgZXJyb3JcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgcCBrZXkgZGF0YSAmJiBmb3JfYWxsIHAgcmlnaHQgJiYgZm9yX2FsbCBwIGxlZnRcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIHYsIGQsIHIsIF8sIF8pIC0+IGNvbnNfZW51bSBsIChNb3JlICh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggZTEsIGUyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgICAgICAgY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgICAgIGNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBjb21wYXJlXG4gICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgaWYgY21wIHggeSB0aGVuXG4gICAgICAgICAgICAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgMSlcbiAgICAgICAgbTEgbTJcbiAgICAgID09IDBcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCBkLCByLCBfLCBfKSAtPlxuICAgICAgICBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9IGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgcmVjIGF1eF9wcmludCBwciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgZGF0YSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEtPkAsJWFAXVwiIE9yZC5wcmludCBrZXkgcHIgZGF0YVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLT4lYUBdLEAgJWFcIiBPcmQucHJpbnQga2V5IHByIGRhdGEgKGF1eF9wcmludCBwcilcbiAgICAgICAgICByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLEAgQFslYS0+JWFAXVwiIChhdXhfcHJpbnQgcHIpIGxlZnQgT3JkLnByaW50IGtleSBwclxuICAgICAgICAgIGRhdGFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhLT4lYUBdLEAgJWFcIiAoYXV4X3ByaW50IHByKSBsZWZ0IE9yZC5wcmludFxuICAgICAgICAgIGtleSBwciBkYXRhIChhdXhfcHJpbnQgcHIpIHJpZ2h0XG5cbiAgICBsZXQgcHJpbnQgcHIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXFx4RTJcXHg4OFxceDg1XCJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gYXMgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFt7JWF9QF1cIiAoYXV4X3ByaW50IHByKSBtXG5cbiAgICBsZXQgcmVjIGRpZmZfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGVmdDEsIG9sZWZ0MiA9XG4gICAgICAgICAgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb3JpZ2h0MSwgb3JpZ2h0MiA9XG4gICAgICAgICAgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiB4ID0gZGF0YTEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMlxuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMilcblxuICAgIGxldCByZWMgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGVmdDEsIG9sZWZ0MiA9XG4gICAgICAgICAgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCBsZWZ0MSBsZWZ0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9yaWdodDEsIG9yaWdodDIgPVxuICAgICAgICAgIGRpZmZfcHJlZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHByZWQgcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHByZWQgeCBkYXRhMSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yKVxuXG4gICAgbGV0IHJlYyBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICBlcnJvciBmIGcgc2V0IG1hcCByZXMgPVxuICAgICAgbWF0Y2ggc2V0LCBtYXAgd2l0aFxuICAgICAgfCBTZXQuUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgcmVzXG4gICAgICB8IFNldC5Qcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcFxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgZXJyb3IgZiBnIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnJyA9IGcga2V5MSAoZXJyb3IsIHJlcycpIGluXG4gICAgICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnNcbiAgICAgICAgICAgIGVycm9yIGYgZyByaWdodDEgcmlnaHQyIHJlcycnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgICBlcnJvciBmIGcgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBrZXkxIGRhdGEyIChlcnJvciwgcmVzJykgaW5cbiAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgZXJyb3IgZiBnIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgc2V0IG1hcCByZXMgPVxuICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgZlxuICAgICAgICAoZnVuIF8geCAtPiB4KVxuICAgICAgICBzZXQgbWFwIHJlc1xuXG4gICAgbGV0IHRvX2pzb24gPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpID1cbiAgICAgIEpzb25VdGlsLm9mX21hcCB+bGFiX2tleSB+bGFiX3ZhbHVlIH5mb2xkXG5cbiAgICBsZXQgb2ZfanNvbiA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIilcbiAgICAgICAgPyhlcnJvcl9tc2cgPSBKc29uVXRpbC5idWlsZF9tc2cgXCJtYXBcIikgPVxuICAgICAgSnNvblV0aWwudG9fbWFwIH5sYWJfa2V5IH5sYWJfdmFsdWUgfmVycm9yX21zZyB+YWRkIH5lbXB0eVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uID0gc2lnXG4gIHR5cGUgZWx0X2FcbiAgdHlwZSBlbHRfYlxuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSBzZXRfYVxuICB0eXBlIHNldF9iXG5cbiAgdmFsIHByb2pfbWFwIDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+ICdiIC0+ICgnYiAtPiAnYSAtPiAnYikgLT4gJ2EgbWFwX2EgLT4gJ2IgbWFwX2JcblxuICB2YWwgcHJval9tYXBfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+ICdiIC0+ICdhIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2JcblxuICB2YWwgcHJval9zZXQgOiAoZWx0X2EgLT4gZWx0X2IpIC0+IHNldF9hIC0+IHNldF9iXG5cbiAgdmFsIHByb2pfc2V0X21vbmFkaWMgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHRfYSAtPiAnbWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBzZXRfYSAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqIHNldF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXQgOiAoZWx0X2EgLT4gZWx0X2IpIC0+IHNldF9hIC0+IHNldF9hIG1hcF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXRfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdF9hIC0+ICdtZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIHNldF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvaiAoQSA6IFMpIChCIDogUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIFNBID0gQS5TZXRcbiAgbW9kdWxlIFNCID0gQi5TZXRcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBzZXRfYSA9IFNBLnRcbiAgdHlwZSBzZXRfYiA9IFNCLnRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcblxuICBsZXQgcHJval9tYXAgZiBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYlxuICAgICAgICAgIChtZXJnZSAoTUIuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYiBtYXBfYikgZGF0YV9hKVxuICAgICAgICAgIG1hcF9iKVxuICAgICAgbWFwIE1CLmVtcHR5XG5cbiAgbGV0IHByb2pfbWFwX21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBpZGVudGl0eV9lbHQgbW9uYWRpY19tZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQgaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1vbmFkaWNfbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgIChNQi5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9iIG1hcF9iKVxuICAgICAgICAgICAgZGF0YV9hXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZXIsIE1CLmFkZCBrZXlfYiBkYXRhJyBtYXBfYilcbiAgICAgIG1hcCAoaGFuZGxlciwgTUIuZW1wdHkpXG5cbiAgbGV0IHByb2pfc2V0IGYgc2V0X2EgPSBTQS5mb2xkIChmdW4ga2V5X2EgLT4gU0IuYWRkIChmIGtleV9hKSkgc2V0X2EgU0IuZW1wdHlcblxuICBsZXQgcHJval9zZXRfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChoYW5kbGVyLCBzZXRfYikgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGtleV9iID0gZiBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYSBpblxuICAgICAgICBoYW5kbGVyLCBTQi5hZGQga2V5X2Igc2V0X2IpXG4gICAgICBzZXRfYSAoaGFuZGxlciwgU0IuZW1wdHkpXG5cbiAgbGV0IHBhcnRpdGlvbl9zZXQgZiBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYiAoU0EuYWRkIGtleV9hIChNQi5maW5kX2RlZmF1bHQgU0EuZW1wdHkga2V5X2IgbWFwX2IpKSBtYXBfYilcbiAgICAgIHNldF9hIE1CLmVtcHR5XG5cbiAgbGV0IHBhcnRpdGlvbl9zZXRfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGtleV9iID0gZiBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYSBpblxuICAgICAgICAoIGhhbmRsZXIsXG4gICAgICAgICAgTUIuYWRkIGtleV9iXG4gICAgICAgICAgICAoU0EuYWRkIGtleV9hIChNQi5maW5kX2RlZmF1bHQgU0EuZW1wdHkga2V5X2IgbWFwX2IpKVxuICAgICAgICAgICAgbWFwX2IgKSlcbiAgICAgIHNldF9hIChoYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuKCogdG9kbzogYWRkIHRoZSBmb2xsb3dpbmcgIHRlc3QgdG8gdGhlIHNhbml0eSB0ZXN0cyAqKVxuXG4oKlxuKCogZm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIGNvZGU6ICopXG5cbm1vZHVsZSBJbnRNYXAgPSBNYWtlKHN0cnVjdCB0eXBlIHQgPSBpbnQgbGV0IGNvbXBhcmUgPSBjb21wYXJlIGVuZClcbm1vZHVsZSBQID0gUHJvaihJbnRNYXApKEludE1hcClcblxuXG5sZXQgZiA9IExpc3QuZm9sZF9sZWZ0XG4oZnVuIG1hcCAoYSxiKSAtPiBJbnRNYXAuTWFwLmFkZCBhIGIgbWFwKVxuSW50TWFwLk1hcC5lbXB0eVxuWzEsWzI7M107MixbMzs0XTs1LFs2OzddOzgsWzEyOzEzXV1cblxuKCogYmFkIGltcGxlbWVudGF0aW9uIChxdWFkcmF0aWMgdGltZSBjb21wbGV4aXR5KSAqKVxubGV0IGcgPSBQLnByb2ogKGZ1biBpIC0+IGkgbW9kIDIpIFtdIChMaXN0LmFwcGVuZCkgZlxuXG4oKiBnb29kIGltcGxlbWVudGF0aW9uIChsaW5lYXIgdGltZSBjb21wbGV4aXR5KSopXG5sZXQgZycgPSBJbnRNYXAuTWFwLm1hcCBMaXN0LnJldiAoUC5wcm9qIChmdW4gaSAtPiBpIG1vZCAyKSBbXSAoZnVuIHggeSAtPiBMaXN0LmFwcGVuZCAoTGlzdC5yZXYgeSkgeCkgZilcblxuXG5sZXQgZHVtcCAoczpzdHJpbmcpIGYgPVxuICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVzOiBcXG5cIiBzIGluXG4gIGxldCBfID0gSW50TWFwLk1hcC5pdGVyXG4oZnVuIGEgbCAtPlxubGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCIgICVpOlwiIGEgaW5cbmxldCBfID0gTGlzdC5pdGVyIChQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlaSxcIikgbCBpblxubGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpbiAoKSlcbmYgaW5cbiAgKClcbmxldCBfID0gZHVtcCBcImZcIiBmXG5sZXQgXyA9IGR1bXAgXCJnXCIgZ1xubGV0IF8gPSBkdW1wIFwiZydcIiBnJ1xuXG4oKiBzaG91bGQgZHVtcDogKilcbigqXG5cbmY6XG4gIDE6MiwzLFxuICAyOjMsNCxcbiAgNTo2LDcsXG4gIDg6MTIsMTMsXG5nOlxuICAwOjMsNCwxMiwxMyxcbiAgMToyLDMsNiw3LFxuICopXG4gKilcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbjIgPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgZWx0X2NcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgJ2EgbWFwX2NcblxuICB2YWwgcHJvajIgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ2IgLT4gJ2EgLT4gJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnYiBtYXBfYyBtYXBfYlxuXG4gIHZhbCBwcm9qMl9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+ICdiIC0+ICdhIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvajIgKEEgOiBTKSAoQiA6IFMpIChDIDogUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIE1DID0gQy5NYXBcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBlbHRfYyA9IE1DLmVsdFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuICB0eXBlICdhIG1hcF9jID0gJ2EgTUMudFxuXG4gIGxldCBwcm9qMiBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgbWFwX2IgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQi5maW5kX2RlZmF1bHQgTUMuZW1wdHkga2V5X2IgbWFwX2IgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9XG4gICAgICAgICAgTUMuYWRkIGtleV9jXG4gICAgICAgICAgICAobWVyZ2UgKE1DLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2Mgc3VibWFwKSBkYXRhX2EpXG4gICAgICAgICAgICBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCBNQi5lbXB0eVxuXG4gIGxldCBwcm9qMl9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUIuZmluZF9kZWZhdWx0IE1DLmVtcHR5IGtleV9iIG1hcF9iIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBkYXRhJyA9XG4gICAgICAgICAgbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgIChNQy5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcClcbiAgICAgICAgICAgIGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUMuYWRkIGtleV9jIGRhdGEnIHN1Ym1hcCBpblxuICAgICAgICBoYW5kbGVyLCBNQi5hZGQga2V5X2Igc3VibWFwIG1hcF9iKVxuICAgICAgbWFwIChoYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGludF9jb21wYXJlICh4IDogaW50KSB5ID0gU3RkbGliLmNvbXBhcmUgeCB5XG5cbmxldCBpbnRfcGFpcl9jb21wYXJlIChwLCBxKSAocCcsIHEnKSA9XG4gIGxldCBvID0gaW50X2NvbXBhcmUgcCBwJyBpblxuICBpZiBvID0gMCB0aGVuXG4gICAgaW50X2NvbXBhcmUgcSBxJ1xuICBlbHNlXG4gICAgb1xuXG5sZXQgc3RyaW5nX3BhaXJfY29tcGFyZSAocCwgcSkgKHAnLCBxJykgPVxuICBsZXQgbyA9IFN0cmluZy5jb21wYXJlIHAgcCcgaW5cbiAgaWYgbyA9IDAgdGhlblxuICAgIFN0cmluZy5jb21wYXJlIHEgcSdcbiAgZWxzZVxuICAgIG9cblxubGV0IHBhaXJfZXF1YWwgZXFhIGVxYiAoeGEsIHhiKSAoeWEsIHliKSA9IGVxYSB4YSB5YSAmJiBlcWIgeGIgeWJcblxubW9kdWxlIFN0cmluZ1NldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG5lbmQpXG5cbm1vZHVsZSBTdHJpbmdTZXQgPSBTdHJpbmdTZXRNYXAuU2V0XG5tb2R1bGUgU3RyaW5nTWFwID0gU3RyaW5nU2V0TWFwLk1hcFxuXG5tb2R1bGUgU3RyaW5nMlNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBzdHJpbmdfcGFpcl9jb21wYXJlXG4gIGxldCBwcmludCBmIChhLCBiKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIoJXMsICVzKVwiIGEgYlxuZW5kKVxuXG5tb2R1bGUgU3RyaW5nMk1hcCA9IFN0cmluZzJTZXRNYXAuTWFwXG5cbm1vZHVsZSBJbnRTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBjb21wYXJlID0gaW50X2NvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kKVxuXG5tb2R1bGUgSW50U2V0ID0gSW50U2V0TWFwLlNldFxubW9kdWxlIEludE1hcCA9IEludFNldE1hcC5NYXBcblxubW9kdWxlIEludDJTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGludCAqIGludFxuXG4gIGxldCBjb21wYXJlID0gaW50X3BhaXJfY29tcGFyZVxuICBsZXQgcHJpbnQgZiAoYSwgYikgPSBGb3JtYXQuZnByaW50ZiBmIFwiKCVpLCAlaSlcIiBhIGJcbmVuZClcblxubW9kdWxlIEludDJTZXQgPSBJbnQyU2V0TWFwLlNldFxubW9kdWxlIEludDJNYXAgPSBJbnQyU2V0TWFwLk1hcFxuXG5tb2R1bGUgQ2hhclNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gY2hhclxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfY2hhclxuZW5kKVxuXG5tb2R1bGUgQ2hhclNldCA9IENoYXJTZXRNYXAuU2V0XG5tb2R1bGUgQ2hhck1hcCA9IENoYXJTZXRNYXAuTWFwXG5tb2R1bGUgRHluQXJyYXkgPSBEeW5hbWljQXJyYXkuRHluQXJyYXkgKExhcmdlQXJyYXkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdW5zb21lIGRlZmF1bHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgYSAtPiBhXG5cbmxldCB1bnNvbWVfb3JfcmFpc2VcbiAgICA/KGV4Y2VwID0gSW52YWxpZF9hcmd1bWVudCBcInVuc29tZV9vcl9yYWlzZSB3YXMgcGFzc2VkIGEgTm9uZVwiKSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiByYWlzZSBleGNlcFxuICB8IFNvbWUgYSAtPiBhXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgfCBOb25lIC0+IE5vbmVcblxubGV0IGJpbmQgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBvIC0+IGYgb1xuXG5sZXQgZm9sZCBmIHggPSBmdW5jdGlvblxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgeSAtPiBmIHggeVxuXG5sZXQgZXF1YWwgZXEgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXEgeCB5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBvc2l0aW9uID0geyBjaHI6IGludDsgbGluZTogaW50IH1cbnR5cGUgdCA9IHsgZmlsZTogc3RyaW5nOyBmcm9tX3Bvc2l0aW9uOiBwb3NpdGlvbjsgdG9fcG9zaXRpb246IHBvc2l0aW9uIH1cbnR5cGUgJ2EgYW5ub3RlZCA9ICdhICogdFxuXG5sZXQgdiAodiwgXykgPSB2XG5sZXQgZ2V0X2Fubm90IChfLCBhbm5vdCkgPSBhbm5vdFxubGV0IGNvcHlfYW5ub3QgKF8sIGxvYykgYSA9IGEsIGxvY1xubGV0IG1hcF9hbm5vdCBmIChhLCBsb2MpID0gZiBhLCBsb2NcblxubGV0IG9mX3BvcyBzdGFydF9sb2NhdGlvbiBlbmRfbG9jYXRpb24gPVxuICBsZXQgKCkgPVxuICAgIGFzc2VydCAoc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19mbmFtZSA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2ZuYW1lKVxuICBpblxuICB7XG4gICAgZmlsZSA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfZm5hbWU7XG4gICAgZnJvbV9wb3NpdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGNociA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfY251bSAtIHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfYm9sO1xuICAgICAgICBsaW5lID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19sbnVtO1xuICAgICAgfTtcbiAgICB0b19wb3NpdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGNociA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2NudW0gLSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19ib2w7XG4gICAgICAgIGxpbmUgPSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19sbnVtO1xuICAgICAgfTtcbiAgfVxuXG5sZXQgZHVtbXlfcG9zaXRpb24gPVxuICB7XG4gICAgY2hyID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2NudW0gLSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfYm9sO1xuICAgIGxpbmUgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfbG51bTtcbiAgfVxuXG5sZXQgZHVtbXkgPVxuICB7XG4gICAgZmlsZSA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZTtcbiAgICBmcm9tX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb247XG4gICAgdG9fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvbjtcbiAgfVxuXG5sZXQgYW5ub3Rfd2l0aF9kdW1teSB4ID0geCwgZHVtbXlcblxubGV0IGlzX2R1bW15IGxvYyA9XG4gIGxvYy5maWxlID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lXG4gICYmIGxvYy5mcm9tX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb25cbiAgJiYgbG9jLnRvX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb25cblxubGV0IGlzX2Fubm90ZWRfd2l0aF9kdW1teSAoXywgbG9jKSA9IGlzX2R1bW15IGxvY1xuXG5sZXQgcHJpbnQgZiBsb2MgPVxuICBsZXQgcHJfZiBmID1cbiAgICBpZiBsb2MuZmlsZSA8PiBcIlwiIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkZpbGUgXFxcIiVzXFxcIiwgXCIgbG9jLmZpbGVcbiAgaW5cbiAgbGV0IHByX2wgZiA9XG4gICAgaWYgbG9jLmZyb21fcG9zaXRpb24ubGluZSA9IGxvYy50b19wb3NpdGlvbi5saW5lIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJsaW5lICVpXCIgbG9jLmZyb21fcG9zaXRpb24ubGluZVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJsaW5lcyAlaS0laVwiIGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmUgbG9jLnRvX3Bvc2l0aW9uLmxpbmVcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiV0JXQsIGNoYXJhY3RlcnMgJWktJWk6XCIgcHJfZiBwcl9sIGxvYy5mcm9tX3Bvc2l0aW9uLmNoclxuICAgIGxvYy50b19wb3NpdGlvbi5jaHJcblxubGV0IHRvX3N0cmluZyBsb2MgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludCBsb2NcbmxldCBwcmludF9hbm5vdGVkIHByIGYgKHgsIGwpID0gRm9ybWF0LmZwcmludGYgZiBcIiVhQCAlYVwiIHByaW50IGwgcHIgeFxuXG5sZXQgcmVhZF9wb3NpdGlvbiBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBJbnQgbGluZSk7IChcImNoclwiLCBgSW50IGNocikgXVxuICB8IGBBc3NvYyBbIChcImNoclwiLCBgSW50IGNocik7IChcImxpbmVcIiwgYEludCBsaW5lKSBdIC0+XG4gICAgeyBsaW5lOyBjaHIgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwb3NpdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3Bvc2l0aW9uIG9iIHsgbGluZTsgY2hyIH0gPVxuICBZb2pzb24ud3JpdGVfYXNzb2Mgb2IgWyBcImxpbmVcIiwgYEludCBsaW5lOyBcImNoclwiLCBgSW50IGNociBdXG5cbmxldCB0b19jb21wYWN0X3lvanNvbiBkZWNscyBsb2MgPVxuICBpZiBpc19kdW1teSBsb2MgdGhlblxuICAgIGBOdWxsXG4gIGVsc2VcbiAgICBgQXNzb2NcbiAgICAgICgoaWYgbG9jLmZyb21fcG9zaXRpb24ubGluZSA8PiBsb2MudG9fcG9zaXRpb24ubGluZSB0aGVuXG4gICAgICAgICAgZnVuIGwgLT5cbiAgICAgICAgKFwiZWxpbmVcIiwgYEludCBsb2MudG9fcG9zaXRpb24ubGluZSkgOjogbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnVuIGwgLT5cbiAgICAgICAgbClcbiAgICAgICAgIFtcbiAgICAgICAgICAgKCBcImZpbGVcIixcbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZCAoTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbG9jLmZpbGUpIGRlY2xzXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBpIC0+IGBJbnQgaVxuICAgICAgICAgICAgIHwgTm9uZSAtPiBgU3RyaW5nIGxvYy5maWxlICk7XG4gICAgICAgICAgIFwiYmxpbmVcIiwgYEludCBsb2MuZnJvbV9wb3NpdGlvbi5saW5lO1xuICAgICAgICAgICBcImJjaHJcIiwgYEludCBsb2MuZnJvbV9wb3NpdGlvbi5jaHI7XG4gICAgICAgICAgIFwiZWNoclwiLCBgSW50IGxvYy50b19wb3NpdGlvbi5jaHI7XG4gICAgICAgICBdKVxuXG5sZXQgb2ZfY29tcGFjdF95b2pzb24gPyhmaWxlbmFtZXMgPSBbfHxdKSA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gZHVtbXlcbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8PSA1IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBmaWxlID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJmaWxlXCIgbCB3aXRoXG4gICAgICAgICB8IGBTdHJpbmcgeCAtPiB4XG4gICAgICAgICB8IGBJbnQgaSAtPiBmaWxlbmFtZXMuKGkpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCBvZl9saW5lID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJibGluZVwiIGwgd2l0aFxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgb2ZfY2hyID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJiY2hyXCIgbCB3aXRoXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCB0b19jaHIgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImVjaHJcIiBsIHdpdGhcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IHRvX2xpbmUgPVxuICAgICAgICAgbWF0Y2ggWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZWxpbmVcIiB4IHdpdGhcbiAgICAgICAgIHwgYE51bGwgLT4gb2ZfbGluZVxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlO1xuICAgICAgICAgZnJvbV9wb3NpdGlvbiA9IHsgbGluZSA9IG9mX2xpbmU7IGNociA9IG9mX2NociB9O1xuICAgICAgICAgdG9fcG9zaXRpb24gPSB7IGxpbmUgPSB0b19saW5lOyBjaHIgPSB0b19jaHIgfTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBhcnJvd19ub3RhdGlvblwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuXG5sZXQgeW9qc29uX29mX2Fubm90ZWQgP2ZpbGVuYW1lcyBmICh4LCBsKSA9XG4gIGxldCBqcCA9IHRvX2NvbXBhY3RfeW9qc29uIGZpbGVuYW1lcyBsIGluXG4gIGlmIGpwID0gYE51bGwgdGhlblxuICAgIGBBc3NvYyBbIFwidmFsXCIsIGYgeCBdXG4gIGVsc2VcbiAgICBgQXNzb2MgWyBcInZhbFwiLCBmIHg7IFwibG9jXCIsIGpwIF1cblxubGV0IGFubm90ZWRfb2ZfeW9qc29uID9maWxlbmFtZXMgZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIHgpOyAoXCJsb2NcIiwgbCkgXSB8IGBBc3NvYyBbIChcImxvY1wiLCBsKTsgKFwidmFsXCIsIHgpIF0gLT5cbiAgICBmIHgsIG9mX2NvbXBhY3RfeW9qc29uID9maWxlbmFtZXMgbFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCB4KSBdIC0+IGYgeCwgZHVtbXlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9yYW5nZSBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9fY29tcGFjdF95b2pzb24gTm9uZSBmKVxuXG5sZXQgc3RyaW5nX29mX3JhbmdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3JhbmdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9yYW5nZSBwIGxiID1cbiAgb2ZfY29tcGFjdF95b2pzb24gP2ZpbGVuYW1lczpOb25lIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCByYW5nZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmFuZ2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IGlzX2luY2x1ZGVkX2luIGZpbGUgeyBsaW5lOyBjaHIgfSByYW5nZSA9XG4gIGZpbGUgPSByYW5nZS5maWxlXG4gICYmIGxpbmUgPj0gcmFuZ2UuZnJvbV9wb3NpdGlvbi5saW5lXG4gICYmIGxpbmUgPD0gcmFuZ2UudG9fcG9zaXRpb24ubGluZVxuICAmJiAobGluZSA8PiByYW5nZS5mcm9tX3Bvc2l0aW9uLmxpbmUgfHwgY2hyID49IHJhbmdlLmZyb21fcG9zaXRpb24uY2hyKVxuICAmJiAobGluZSA8PiByYW5nZS50b19wb3NpdGlvbi5saW5lIHx8IGNociA8PSByYW5nZS50b19wb3NpdGlvbi5jaHIpXG5cbmxldCBtZXJnZSBiIGUgPVxuICBsZXQgKCkgPSBhc3NlcnQgKGIuZmlsZSA9IGUuZmlsZSkgaW5cbiAge1xuICAgIGZpbGUgPSBiLmZpbGU7XG4gICAgZnJvbV9wb3NpdGlvbiA9IGIuZnJvbV9wb3NpdGlvbjtcbiAgICB0b19wb3NpdGlvbiA9IGUudG9fcG9zaXRpb247XG4gIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gRm9ybWF0XG5cbmxldCBsaXN0aSA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGwgPVxuICBsZXQgcmVjIGF1eCBhY2MgZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyBlbCBdIC0+XG4gICAgICBsZXQgKCkgPSBwcl9lbCBhY2MgZiBlbCBpblxuICAgICAgdHJhaWxpbmcgZlxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgKCkgPSBwcl9lbCBhY2MgZiBoIGluXG4gICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgYXV4IChzdWNjIGFjYykgZiB0XG4gIGluXG4gIGF1eCAwIGYgbFxuXG5sZXQgbGlzdCA/dHJhaWxpbmcgcHJfc2VwIHByX2VsIGYgbCA9XG4gIGxpc3RpID90cmFpbGluZyBwcl9zZXAgKGZ1biBfIGYgeCAtPiBwcl9lbCBmIHgpIGYgbFxuXG5sZXQgc2V0ID90cmFpbGluZyBlbGVtZW50cyBwcl9zZXAgcHJfZWwgZiBzZXQgPVxuICBsaXN0ID90cmFpbGluZyBwcl9zZXAgcHJfZWwgZiAoZWxlbWVudHMgc2V0KVxuXG5sZXQgaGFzaHRibCBwcl9zZXAgcHJfZWwgZiB0YmwgPVxuICBsaXN0IHByX3NlcCBwcl9lbCBmIChIYXNodGJsLmZvbGQgKGZ1biBhIGIgbCAtPiAoYSwgYikgOjogbCkgdGJsIFtdKVxuXG5sZXQgYm90dG9tIGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDhBXFx4QTVcIlxubGV0IG51IGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhDRVxceEJEXCJcbmxldCBlbXB0eV9zZXQgZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4ODhcXHg4NVwiXG5sZXQgY29tbWEgZiA9IGZwcmludGYgZiBcIixAIFwiXG5sZXQgZG90IGYgPSBmcHJpbnRmIGYgXCIuXCJcbmxldCBjb21wYWN0X2NvbW1hIGYgPSBmcHJpbnRmIGYgXCIsQCxcIlxubGV0IGNvbG9uIGYgPSBmcHJpbnRmIGYgXCI7QCBcIlxubGV0IHNwYWNlIGYgPSBwcF9wcmludF9zcGFjZSBmICgpXG5sZXQgY3V0IGYgPSBwcF9wcmludF9jdXQgZiAoKVxubGV0IGVtcHR5IF8gPSAoKVxubGV0IHVuaXQgXyAoKSA9ICgpXG5sZXQgcGFpciBwcGEgcHBiIGYgKGEsIGIpID0gZnByaW50ZiBmIFwiKCVhLCAlYSlcIiBwcGEgYSBwcGIgYlxuXG5sZXQgb3B0aW9uID8od2l0aF9zcGFjZSA9IHRydWUpIHByIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICBmcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBpZiB3aXRoX3NwYWNlIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZiAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gICAgICBwciB4XG5cbmxldCBhcnJheSA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGEgPVxuICBsZXQgcmVjIGF1eCBpIGYgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggYSB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByX2VsIGkgZiBhLihpKSBpblxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIC0gMSB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gcHJfc2VwIGYgaW5cbiAgICAgICAgYXV4IChzdWNjIGkpIGZcbiAgICAgICkgZWxzZSBpZiBpID4gMCB0aGVuXG4gICAgICAgIHRyYWlsaW5nIGZcbiAgICApXG4gIGluXG4gIGF1eCAwIGZcblxubGV0IHBsYWluX2FycmF5IHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVhXCIgaSBwcl9lbCBhLihpKSBpblxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIC0gMSB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCI7QCwldFwiIChhdXggKHN1Y2MgaSkpXG4gICAgKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiW3wldHxdXCIgKGF1eCAwKVxuXG5sZXQgZXJyb3IgcHIgeCA9IGVwcmludGYgXCIlYUAuXCIgKExvYy5wcmludF9hbm5vdGVkIHByKSB4XG5cbmxldCBsaXN0X3RvX3N0cmluZyBwcl9zZXAgcHJfZWwgKCkgbCA9XG4gIGxldCByZWMgYXV4ICgpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IFsgZWwgXSAtPiBwcl9lbCAoKSBlbFxuICAgIHwgaCA6OiB0IC0+IHNwcmludGYgXCIlYSV0JWFcIiBwcl9lbCBoIHByX3NlcCBhdXggdFxuICBpblxuICBhdXggKCkgbFxuXG5sZXQgc2V0X3RvX3N0cmluZyBlbGVtZW50cyBwcl9zZXAgcHJfZWwgKCkgc2V0ID1cbiAgbGlzdF90b19zdHJpbmcgcHJfc2VwIHByX2VsICgpIChlbGVtZW50cyBzZXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IGludFxudHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHQgKiBrZXkgKiB0ICogaW50ICogSW50NjQudFxuKCpOb2RlKGxlZnQsa2V5LHJpZ2h0LGhlaWdodCxhY2MpKilcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcblxubGV0IGFjY3ZhbCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMExcbiAgfCBOb2RlIChfLCBfLCBfLCBfLCBhY2MpIC0+IGFjY1xuXG5sZXQgdG90YWwgPSBhY2N2YWxcblxubGV0IHdlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMExcbiAgfCBOb2RlIChsLCBfLCByLCBfLCBhY2MpIC0+IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpXG5cbmxldCByZWMgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gUHAuZW1wdHlfc2V0IGZcbiAgfCBOb2RlIChsLCBrLCByLCBfLCBhY2MpIGFzIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+PCVkLCVMaSglTGkpPkAsWyVhQCx8JWFALF1cIiBrIGFjYyAod2VpZ2h0IHgpXG4gICAgICBwcmludCBsIHByaW50IHJcblxubGV0IGNyZWF0ZSBsIGtleSBhY2MgciA9XG4gIGxldCBobCA9IGhlaWdodCBsIGluXG4gIGxldCBociA9IGhlaWdodCByIGluXG4gIE5vZGUgKGwsIGtleSwgciwgc3VjYyAobWluIGhsIGhyKSwgYWNjKVxuXG5sZXQgYmFsIGwgeCB3IHIgPVxuICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICBsZXQgaHIgPSBoZWlnaHQgciBpblxuICBpZiBobCA+IGhyICsgMiB0aGVuIChcbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgIHwgTm9kZSAobGwsIGx2LCBsciwgXywgYWNjX2wpIC0+XG4gICAgICBsZXQgYWNjX3IgPSBhY2N2YWwgciBpblxuICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgIGNyZWF0ZSBsbCBsdlxuICAgICAgICAgIChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcilcbiAgICAgICAgICAoY3JlYXRlIGxyIHggKEludDY0LmFkZCAoSW50NjQuYWRkIHcgKGFjY3ZhbCBscikpIGFjY19yKSByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBhY2NfbHJyID0gYWNjdmFsIGxyciBpblxuICAgICAgICAgIGNyZWF0ZVxuICAgICAgICAgICAgKGNyZWF0ZSBsbCBsdiAoSW50NjQuc3ViIGFjY19sIGFjY19scnIpIGxybClcbiAgICAgICAgICAgIGxydlxuICAgICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgICAgKGNyZWF0ZSBscnIgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2xyciB3KSBhY2NfcikgcilcbiAgICAgIClcbiAgKSBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gKFxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLmJhbFwiXG4gICAgfCBOb2RlIChybCwgcnYsIHJyLCBfLCBhY2NfcikgLT5cbiAgICAgIGxldCBhY2NfbCA9IGFjY3ZhbCBsIGluXG4gICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgY3JlYXRlXG4gICAgICAgICAgKGNyZWF0ZSBsIHggKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIChhY2N2YWwgcmwpKSBybClcbiAgICAgICAgICBydlxuICAgICAgICAgIChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcilcbiAgICAgICAgICByclxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBhY2NfcmxsID0gYWNjdmFsIHJsbCBpblxuICAgICAgICAgIGNyZWF0ZVxuICAgICAgICAgICAgKGNyZWF0ZSBsIHggKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19ybGwpIHJsbClcbiAgICAgICAgICAgIHJsdlxuICAgICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgICAgKGNyZWF0ZSBybHIgcnYgKEludDY0LnN1YiBhY2NfciBhY2NfcmxsKSBycilcbiAgICAgIClcbiAgKSBlbHNlIChcbiAgICBsZXQgYWNjX2wgPSBhY2N2YWwgbCBpblxuICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpIHJcbiAgKVxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBOb2RlIF8gLT4gZmFsc2VcblxubGV0IHJlYyBhZGQga2V5IHdlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9kZSAoRW1wdHksIGtleSwgRW1wdHksIDEsIEludDY0Lm9mX2ludCB3ZWlnaHQpXG4gIHwgTm9kZSAobCwga2V5JywgciwgaCwgYWNjKSAtPlxuICAgIGlmIGtleSA9IGtleScgdGhlblxuICAgICAgTm9kZVxuICAgICAgICAoIGwsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHIsXG4gICAgICAgICAgaCxcbiAgICAgICAgICBJbnQ2NC5hZGQgKEludDY0LmFkZCAoSW50NjQub2ZfaW50IHdlaWdodCkgKGFjY3ZhbCBsKSkgKGFjY3ZhbCByKSApXG4gICAgZWxzZSAoXG4gICAgICBsZXQgd2VpZ2h0JyA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgICBpZiBrZXkgPCBrZXknIHRoZW5cbiAgICAgICAgYmFsIChhZGQga2V5IHdlaWdodCBsKSBrZXknIHdlaWdodCcgclxuICAgICAgZWxzZVxuICAgICAgICBiYWwgbCBrZXknIHdlaWdodCcgKGFkZCBrZXkgd2VpZ2h0IHIpXG4gICAgKVxuXG5sZXQgcmVjIGZpbmRfYWNjIGFpbV9hY2MgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IE5vZGUgKGwsIGtleSwgciwgXywgYWNjKSAtPlxuICAgIGlmIGFpbV9hY2MgPj0gYWNjIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFjY19sID0gYWNjdmFsIGwgaW5cbiAgICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgICBpZiBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICBmaW5kX2FjYyBhaW1fYWNjIGxcbiAgICAgIGVsc2UgaWYgSW50NjQuYWRkIGFjY19yIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgIGZpbmRfYWNjIChJbnQ2NC5zdWIgYWltX2FjYyBhY2NfbCkgclxuICAgICAgZWxzZVxuICAgICAgICBrZXlcbiAgICApXG5cbmxldCByZWMgbWVtIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBOb2RlIChsLCBrZXknLCByLCBfLCBfKSAtPlxuICAgIGxldCBjID0gTW9kcy5pbnRfY29tcGFyZSBrZXkga2V5JyBpblxuICAgIGMgPSAwXG4gICAgfHwgbWVtIGtleVxuICAgICAgICAgKGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByKVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBOb2RlIChFbXB0eSwgeCwgciwgXywgYWNjKSAtPiB4LCBJbnQ2NC5zdWIgYWNjIChhY2N2YWwgcilcbiAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fYmluZGluZyBsXG5cbmxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAucmVtb3ZlX21pbl9lbHRcIlxuICB8IE5vZGUgKEVtcHR5LCBfLCByLCBfLCBfKSAtPiByXG4gIHwgTm9kZSAobCwgeCwgciwgXywgYWNjKSAtPlxuICAgIGxldCB3ZWlnaHQgPSBJbnQ2NC5zdWIgKEludDY0LnN1YiBhY2MgKGFjY3ZhbCBsKSkgKGFjY3ZhbCByKSBpblxuICAgIGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHggd2VpZ2h0IHJcblxubGV0IG1lcmdlIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBFbXB0eSwgdCAtPiB0XG4gIHwgdCwgRW1wdHkgLT4gdFxuICB8IE5vZGUgXywgTm9kZSBfIC0+XG4gICAgbGV0IHgsIHcgPSBtaW5fYmluZGluZyB0MiBpblxuICAgIGJhbCB0MSB4IHcgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxubGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBOb2RlIChsLCB2LCByLCBfLCBhY2MpIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIHggdiBpblxuICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgIG1lcmdlIGwgclxuICAgIGVsc2UgKFxuICAgICAgbGV0IHdlaWdodCA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgIGJhbCAocmVtb3ZlIHggbCkgdiB3ZWlnaHQgclxuICAgICAgZWxzZVxuICAgICAgICBiYWwgbCB2IHdlaWdodCAocmVtb3ZlIHggcilcbiAgICApXG4oKlxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTm9kZShsLCB2LCByLCBfLF8pIGFzIHggLT4gaXRlciBmIGw7IGYgdiAod2VpZ2h0IHgpOyBpdGVyIGYgclxuXG5sZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICBtYXRjaCBtIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTm9kZShsLCB2LCByLCBfLF8pIGFzIHggLT4gZm9sZCBmIHIgKGYgdiAod2VpZ2h0IHgpIChmb2xkIGYgbCBhY2N1KSlcbiopXG5cbigqKlJldHVybnMgKGtleSx2YWx1ZSkgYXQgcmFuZG9tIGluIHRoZSB0cmVlKilcbmxldCByYW5kb20gc3RhdGUgbSA9XG4gIHRyeVxuICAgIGxldCByID0gUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlIChhY2N2YWwgbSkgaW5cbiAgICBmaW5kX2FjYyByIG1cbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLnJhbmRvbV92YWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0dXMgPVxuICBbIGBPS1xuICB8IGBBY2NlcHRlZFxuICB8IGBDcmVhdGVkXG4gIHwgYEJhZF9yZXF1ZXN0XG4gIHwgYENvbmZsaWN0XG4gIHwgYE5vdF9mb3VuZFxuICB8IGBSZXF1ZXN0X3RpbWVvdXQgXVxuKCoqIFRoZSBzdWJzZXQgb2YgW0NvaHR0cC5Db2RlLnN0YXR1c10gd2UgbmVlZCAqKVxuXG50eXBlIG1lc3NhZ2UgPSB7XG4gIHNldmVyaXR5OiBMb2dzLmxldmVsO1xuICB0ZXh0OiBzdHJpbmc7ICgqc2hvdWxkIGJlIGFuIGFsZ2VicmFpYyB0eXBlKilcbiAgcmFuZ2U6IExvYy50IG9wdGlvbjtcbn1cblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICB2YWx1ZTogKCdhLCAnYikgUmVzdWx0LnJlc3VsdDtcbiAgc3RhdHVzOiBzdGF0dXM7XG4gIG1lc3NhZ2VzOiBtZXNzYWdlIGxpc3Q7XG59XG5cbmxldCB3cml0ZV9zZXZlcml0eSBvYiB4ID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdcIicgaW5cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgKExvZ3MubGV2ZWxfdG9fc3RyaW5nIChTb21lIHgpKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgcmVhZF9zZXZlcml0eSBwIGxiID1cbiAgbWF0Y2ggTG9ncy5sZXZlbF9vZl9zdHJpbmcgKFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiKSB3aXRoXG4gIHwgUmVzdWx0Lk9rIChTb21lIHgpIC0+IHhcbiAgfCBSZXN1bHQuT2sgTm9uZSAtPiByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgXCJNZXNzYWdlIG9mIG5vIHNldmVyaXR5XCIpXG4gIHwgUmVzdWx0LkVycm9yIChgTXNnIHgpIC0+XG4gICAgcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIChcIldoaWxlIHJlYWRpbmcgc2V2ZXJpdHk6IFwiIF4geCkpXG5cbmxldCB3cml0ZV9zdGF0dXMgb2IgPSBmdW5jdGlvblxuICB8IGBPSyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjIwMFwiXG4gIHwgYEFjY2VwdGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAyXCJcbiAgfCBgQ3JlYXRlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjIwMVwiXG4gIHwgYEJhZF9yZXF1ZXN0IC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiNDAwXCJcbiAgfCBgQ29uZmxpY3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDlcIlxuICB8IGBOb3RfZm91bmQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDRcIlxuICB8IGBSZXF1ZXN0X3RpbWVvdXQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDhcIlxuXG5sZXQgcmVhZF9zdGF0dXMgcCBsYiA9XG4gIG1hdGNoIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiIHdpdGhcbiAgfCAyMDAgLT4gYE9LXG4gIHwgMjAyIC0+IGBBY2NlcHRlZFxuICB8IDIwMSAtPiBgQ3JlYXRlZFxuICB8IDQwMCAtPiBgQmFkX3JlcXVlc3RcbiAgfCA0MDkgLT4gYENvbmZsaWN0XG4gIHwgNDA0IC0+IGBOb3RfZm91bmRcbiAgfCA0MDggLT4gYFJlcXVlc3RfdGltZW91dFxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5Kc29uX2Vycm9yXG4gICAgICAgICAoXCJTdGF0dXMgXCIgXiBzdHJpbmdfb2ZfaW50IHggXiBcIiBpcyBvdXQgb2YgdGhlIHNjb3BlIG9mIEthcHBhXCIpKVxuXG5sZXQgd3JpdGVfbWVzc2FnZSBvYiB7IHNldmVyaXR5OyB0ZXh0OyByYW5nZSB9ID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInNldmVyaXR5XCIgd3JpdGVfc2V2ZXJpdHkgb2Igc2V2ZXJpdHkgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJ0ZXh0XCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiB0ZXh0IGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSByIC0+XG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJyYW5nZVwiIExvYy53cml0ZV9yYW5nZSBvYiByXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfbWVzc2FnZSBwIGxiID1cbiAgbGV0IHNldmVyaXR5LCB0ZXh0LCByYW5nZSA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChzLCB0LCByKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNldmVyaXR5XCIgdGhlblxuICAgICAgICAgIHJlYWRfc2V2ZXJpdHkgcCBsYiwgdCwgclxuICAgICAgICBlbHNlIGlmIGtleSA9IFwidGV4dFwiIHRoZW5cbiAgICAgICAgICBzLCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgclxuICAgICAgICBlbHNlIGlmIGtleSA9IFwicmFuZ2VcIiB0aGVuXG4gICAgICAgICAgcywgdCwgU29tZSAoTG9jLnJlYWRfcmFuZ2UgcCBsYilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciAoXCJObyBmaWVsZCBcIiBeIGtleSBeIFwiIGV4cGVjdGVkIGluIG1lc3NhZ2VcIikpKVxuICAgICAgKExvZ3MuQXBwLCBcIlwiLCBOb25lKSBwIGxiXG4gIGluXG4gIHsgc2V2ZXJpdHk7IHRleHQ7IHJhbmdlIH1cblxubGV0IHByaW50X21lc3NhZ2UgZiB7IHJhbmdlOyB0ZXh0OyBfIH0gPVxuICBtYXRjaCByYW5nZSB3aXRoXG4gIHwgU29tZSByYW5nZSAtPiBMb2MucHJpbnRfYW5ub3RlZCBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHRleHQsIHJhbmdlKVxuICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHRleHRcblxubGV0IHdyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiA9IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayB4OyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiT2tcXFwiLFwiO1xuICAgIHdyaXRlX19vayBvYiB4O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgd3JpdGVfc3RhdHVzIG9iIHN0YXR1cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgIEpzb25VdGlsLndyaXRlX2xpc3Qgd3JpdGVfbWVzc2FnZSBvYiBtZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciB4OyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiRXJyb3JcXFwiLFwiO1xuICAgIHdyaXRlX19lcnJvciBvYiB4O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgd3JpdGVfc3RhdHVzIG9iIHN0YXR1cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgIEpzb25VdGlsLndyaXRlX2xpc3Qgd3JpdGVfbWVzc2FnZSBvYiBtZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCBzdHJpbmdfb2ZfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfdF9jb250ZW50IGYgcCBsYiA9XG4gIGxldCB2ID0gZiBwIGxiIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgcCBsYiBpblxuICBsZXQgcyA9IHJlYWRfc3RhdHVzIHAgbGIgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIHYsIHMsIFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgcmVhZF9tZXNzYWdlIHAgbGJcblxubGV0IHJlYWRfdCByZWFkX19vayByZWFkX19lcnJvciBwIGxiID1cbiAgbGV0IGF1eF9yZWFkX3QgY2xvc2luZyBwIGxiID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIGxldCBvdXQgPVxuICAgICAgWW9qc29uLkJhc2ljLm1hcF9pZGVudCBwXG4gICAgICAgIChmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YiBzIHBvcyBsZW4gd2l0aFxuICAgICAgICAgIHwgXCJPa1wiIC0+XG4gICAgICAgICAgICBsZXQgdiwgc3RhdHVzLCBtZXNzYWdlcyA9IHJlYWRfdF9jb250ZW50IHJlYWRfX29rIHAgbGIgaW5cbiAgICAgICAgICAgIHsgdmFsdWUgPSBSZXN1bHQuT2sgdjsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgICAgICAgfCBcIkVycm9yXCIgLT5cbiAgICAgICAgICAgIGxldCB2LCBzdGF0dXMsIG1lc3NhZ2VzID0gcmVhZF90X2NvbnRlbnQgcmVhZF9fZXJyb3IgcCBsYiBpblxuICAgICAgICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciB2OyBzdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChZb2pzb24uSnNvbl9lcnJvclxuICAgICAgICAgICAgICAgICAoXCJGaWVsZCBcXFwiXCIgXiB4IF4gXCJcXFwiIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgcmVzdWx0IHR5cGVcIikpKVxuICAgICAgICBsYlxuICAgIGluXG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBjbG9zaW5nIHAgbGI7XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBvdXRcbiAgaW5cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICB8IGBFZGd5X2JyYWNrZXQgLT4gYXV4X3JlYWRfdCBZb2pzb24uQmFzaWMucmVhZF9ndCBwIGxiXG4gIHwgYERvdWJsZV9xdW90ZSAtPiByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgXCJOb3Qgb2YgcmVzdWx0IHR5cGVcIilcbiAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gYXV4X3JlYWRfdCBZb2pzb24uQmFzaWMucmVhZF9yYnIgcCBsYlxuXG5sZXQgdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgbGlmdCA/KG9rX3N0YXR1cyA9IGBPSykgPyhlcnJvcl9zdGF0dXMgPSBgQmFkX3JlcXVlc3QpID0gZnVuY3Rpb25cbiAgfCBSZXN1bHQuT2sgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBva19zdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuICB8IFJlc3VsdC5FcnJvciBfIGFzIHZhbHVlIC0+IHsgdmFsdWU7IHN0YXR1cyA9IGVycm9yX3N0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG5cbmxldCBmb2xkIH4ob2sgOiAnb2sgLT4gJ2EpIH4oZXJyb3IgOiAnZXJyb3IgLT4gJ2EpIDogKCdvaywgJ2Vycm9yKSB0IC0+ICdhID1cbiAgZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIG87IF8gfSAtPiBvayBvXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBlOyBfIH0gLT4gZXJyb3IgZVxuXG5sZXQgYmluZCA6XG4gICAgdHlwZSBvayBhIGVyci5cbiAgICA/b3ZlcndyaXRlX3N0YXR1czpzdGF0dXMgLT5cbiAgICA/ZXJyb3Jfc3RhdHVzOnN0YXR1cyAtPlxuICAgIChvayAtPiAoYSwgZXJyKSBSZXN1bHQucmVzdWx0KSAtPlxuICAgIChvaywgZXJyKSB0IC0+XG4gICAgKGEsIGVycikgdCA9XG4gZnVuID9vdmVyd3JpdGVfc3RhdHVzID8oZXJyb3Jfc3RhdHVzID0gYEJhZF9yZXF1ZXN0KSBvayAtPiBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUgLT4gZVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gICAgKG1hdGNoIG9rIG8gd2l0aFxuICAgIHwgUmVzdWx0LkVycm9yIF8gYXMgdmFsdWUgLT4geyB2YWx1ZTsgc3RhdHVzID0gZXJyb3Jfc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgfCBSZXN1bHQuT2sgXyBhcyB2YWx1ZSAtPlxuICAgICAgKG1hdGNoIG92ZXJ3cml0ZV9zdGF0dXMgd2l0aFxuICAgICAgfCBOb25lIC0+IHsgdmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfVxuICAgICAgfCBTb21lIHN0YXR1cyAtPiB7IHZhbHVlOyBzdGF0dXM7IG1lc3NhZ2VzIH0pKVxuXG5sZXQgbWFwIDogdHlwZSBvayBhIGVyci4gKG9rIC0+IGEpIC0+IChvaywgZXJyKSB0IC0+IChhLCBlcnIpIHQgPVxuIGZ1biBvayAtPiBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gICAgeyB2YWx1ZSA9IFJlc3VsdC5PayAob2sgbyk7IHN0YXR1czsgbWVzc2FnZXMgfVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUgLT4gZVxuXG5sZXQgbWFwMiA6XG4gICAgdHlwZSBhIGIgb2sgZXJyLiAoYSAtPiBiIC0+IG9rKSAtPiAoYSwgZXJyKSB0IC0+IChiLCBlcnIpIHQgLT4gKG9rLCBlcnIpIHQgPVxuIGZ1biBmIGEgYiAtPlxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoIHsgdmFsdWUgPSBSZXN1bHQuT2sgYTsgbWVzc2FnZXM7IF8gfSxcbiAgICAgIHsgdmFsdWUgPSBSZXN1bHQuT2sgYjsgc3RhdHVzOyBtZXNzYWdlcyA9IG0nIH0gKSAtPlxuICAgIHtcbiAgICAgIHZhbHVlID0gUmVzdWx0Lk9rIChmIGEgYik7XG4gICAgICBzdGF0dXM7XG4gICAgICBtZXNzYWdlcyA9IExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbScpIG1lc3NhZ2VzO1xuICAgIH1cbiAgfCAoeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSksIF8gLT4gZVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgXzsgXyB9LCAoeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSkgLT4gZVxuXG5sZXQgZXJyb3IgPyhzdGF0dXMgPSBgQmFkX3JlcXVlc3QpIChlcnJvciA6ICdlcnJvcikgOiAoJ29rLCAnZXJyb3IpIHQgPVxuICB7IHZhbHVlID0gUmVzdWx0LkVycm9yIGVycm9yOyBzdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuXG5sZXQgb2sgPyhzdGF0dXMgPSBgT0spIChvayA6ICdvaykgOiAoJ29rLCAnZXJyb3IpIHQgPVxuICB7IHZhbHVlID0gUmVzdWx0Lk9rIG9rOyBzdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuZXhjZXB0aW9uIE5vdEJpamVjdGl2ZVxuZXhjZXB0aW9uIENsYXNoaW5nXG5cbmxldCBzcGVjaWFsX3ZhbCA9IG1heF9pbnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGltbWVkaWF0ZTogaW50IGFycmF5O1xuICBtdXRhYmxlIGRlbGF5ZWQ6ICh0ICogdCkgb3B0aW9uO1xuICBtdXRhYmxlIGlzX2lkZW50aXR5OiBib29sO1xuICBtdXRhYmxlIGRzdHM6IE1vZHMuSW50U2V0LnQ7XG59XG5cbmxldCBlbXB0eSAoKSA9XG4gIHtcbiAgICBpbW1lZGlhdGUgPSBbfHxdO1xuICAgIGRlbGF5ZWQgPSBOb25lO1xuICAgIGlzX2lkZW50aXR5ID0gdHJ1ZTtcbiAgICBkc3RzID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gIH1cblxubGV0IGR1bW15ID0gZW1wdHkgKClcblxubGV0IGlkZW50aXR5IGwgPVxuICBsZXQgbWF4ID0gTGlzdC5mb2xkX2xlZnQgbWF4IDAgbCBpblxuICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoc3VjYyBtYXgpIHNwZWNpYWxfdmFsIGluXG4gIGxldCAoKSA9IExpc3QuaXRlciAoZnVuIHggLT4gaW1tZWRpYXRlLih4KSA8LSB4KSBsIGluXG4gIHtcbiAgICBpbW1lZGlhdGU7XG4gICAgZGVsYXllZCA9IE5vbmU7XG4gICAgaXNfaWRlbnRpdHkgPSB0cnVlO1xuICAgIGRzdHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBvdXQgeCAtPiBNb2RzLkludFNldC5hZGQgeCBvdXQpIE1vZHMuSW50U2V0LmVtcHR5IGw7XG4gIH1cblxubGV0IGlzX2lkZW50aXR5IGkgPSBpLmlzX2lkZW50aXR5XG5cbmxldCByZWMgY29tcHV0ZSBrIGkgPVxuICBsZXQgdiA9IGkuaW1tZWRpYXRlLihrKSBpblxuICBpZiB2IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICB2XG4gIGVsc2UgKFxuICAgIG1hdGNoIGkuZGVsYXllZCB3aXRoXG4gICAgfCBOb25lIC0+IHNwZWNpYWxfdmFsXG4gICAgfCBTb21lICh4LCB5KSAtPlxuICAgICAgaWYgayA+PSBBcnJheS5sZW5ndGggeC5pbW1lZGlhdGUgdGhlblxuICAgICAgICBzcGVjaWFsX3ZhbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB2JyA9IGNvbXB1dGUgayB4IGluXG4gICAgICAgIGlmIHYnID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgIHNwZWNpYWxfdmFsXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2JycgPSBjb21wdXRlIHYnIHkgaW5cbiAgICAgICAgICBsZXQgbyA9XG4gICAgICAgICAgICBpZiB2JycgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgICAgIHYnXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHYnJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gaS5pbW1lZGlhdGUuKGspIDwtIG8gaW5cbiAgICAgICAgICBvXG4gICAgICAgIClcbiAgICAgIClcbiAgKVxuXG5sZXQgZm9yY2UgaSA9XG4gIGlmIGkuZGVsYXllZCA8PiBOb25lIHRoZW4gKFxuICAgIGxldCAoKSA9IEFycmF5Lml0ZXJpIChmdW4gayBfIC0+IGlnbm9yZSAoY29tcHV0ZSBrIGkpKSBpLmltbWVkaWF0ZSBpblxuICAgIGkuZGVsYXllZCA8LSBOb25lXG4gIClcblxubGV0IHRvX2xpc3QgaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgdiAtPlxuICAgICAgaWYgdiA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgIChpLCB2KSA6OiBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjKVxuICAgIFtdIGkuaW1tZWRpYXRlXG4gIHw+IExpc3QucmV2XG5cbmxldCBpbWFnZSBpID0gaS5kc3RzXG5cbmxldCB1bnNhZmVfZnVuY3Rpb25uYWxfYWRkIHggeSBpID1cbiAgbGV0IGwgPSBtYXggKEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSkgKHggKyAxKSBpblxuICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSBsIHNwZWNpYWxfdmFsIGluXG4gIGxldCAoKSA9IEFycmF5LmJsaXQgaS5pbW1lZGlhdGUgMCBpbW1lZGlhdGUgMCAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSBpblxuICBsZXQgKCkgPSBpbW1lZGlhdGUuKHgpIDwtIHkgaW5cbiAge1xuICAgIGltbWVkaWF0ZTtcbiAgICBkZWxheWVkID0gaS5kZWxheWVkO1xuICAgIGlzX2lkZW50aXR5ID0gaS5pc19pZGVudGl0eSAmJiB4ID09IHk7XG4gICAgZHN0cyA9IE1vZHMuSW50U2V0LmFkZCB5IGkuZHN0cztcbiAgfVxuXG5sZXQgYWRkIH5kZWJ1Z19tb2RlIHggeSBpID1cbiAgbGV0IG5vdF9vayA9XG4gICAgZGVidWdfbW9kZSAmJiB4IDwgQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlICYmIGkuaW1tZWRpYXRlLih4KSA8PiBzcGVjaWFsX3ZhbFxuICBpblxuICBpZiBub3Rfb2sgdGhlblxuICAgIHJhaXNlIENsYXNoaW5nXG4gIGVsc2UgKFxuICAgIGxldCBpJyA9IHVuc2FmZV9mdW5jdGlvbm5hbF9hZGQgeCB5IGkgaW5cbiAgICBpZiBpLmRzdHMgPT0gaScuZHN0cyB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSBpJ1xuICApXG5cbmxldCB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeCB5IGkgPVxuICBsZXQgKCkgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlIGluXG4gICAgaWYgeCA+PSBsIHRoZW4gKFxuICAgICAgbGV0IGltbWVkaWF0ZSA9IEFycmF5Lm1ha2UgKHN1Y2MgeCkgc3BlY2lhbF92YWwgaW5cbiAgICAgIGxldCAoKSA9IEFycmF5LmJsaXQgaS5pbW1lZGlhdGUgMCBpbW1lZGlhdGUgMCBsIGluXG4gICAgICBsZXQgKCkgPSBpbW1lZGlhdGUuKHgpIDwtIHkgaW5cbiAgICAgIGkuaW1tZWRpYXRlIDwtIGltbWVkaWF0ZVxuICAgICkgZWxzZVxuICAgICAgaS5pbW1lZGlhdGUuKHgpIDwtIHlcbiAgaW5cbiAgbGV0ICgpID0gaS5pc19pZGVudGl0eSA8LSBpLmlzX2lkZW50aXR5ICYmIHggPT0geSBpblxuICBpLmRzdHMgPC0gTW9kcy5JbnRTZXQuYWRkIHkgaS5kc3RzXG5cbmxldCBpbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSB4IHkgaSA9XG4gIGxldCBub3Rfb2sgPVxuICAgIGRlYnVnX21vZGUgJiYgeCA8IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSAmJiBpLmltbWVkaWF0ZS4oeCkgPD4gc3BlY2lhbF92YWxcbiAgaW5cbiAgaWYgbm90X29rIHRoZW5cbiAgICByYWlzZSBDbGFzaGluZ1xuICBlbHNlIChcbiAgICBsZXQgb3JpZ2luID0gaS5kc3RzIGluXG4gICAgbGV0ICgpID0gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHggeSBpIGluXG4gICAgbm90IChpLmRzdHMgPT0gb3JpZ2luKVxuICApXG5cbmxldCByZWMgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21faWRlbnRpdHkgbWF4IGlkIHN1YnN0IHByZSA9IGZ1bmN0aW9uXG4gIHwgXyB3aGVuIHByZSA9IGlkIC0+IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCBwcmUgbWF4IHN1YnN0XG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0ICgpID0gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHByZSBoIHN1YnN0IGluXG4gICAgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21faWRlbnRpdHkgbWF4IGlkIHN1YnN0IGggdFxuXG5sZXQgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21fbGlzdCB+c3RvcF9hdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJSZW5hbWluZy5jeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0XCJcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPSBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBoIHN0b3BfYXQgb3V0IGggdCBpblxuICAgIG91dFxuXG5sZXQgbWVtIHggaSA9IHggPCBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgJiYgY29tcHV0ZSB4IGkgPD4gc3BlY2lhbF92YWxcblxubGV0IGZvbGQgZiBpIGFjYyA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgdiAtPlxuICAgICAgaWYgdiA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIGYgaSB2IGFjYylcbiAgICBhY2MgaS5pbW1lZGlhdGVcblxubGV0IGFwcGx5IH5kZWJ1Z19tb2RlIGkgeCA9XG4gIGlmIChub3QgaS5pc19pZGVudGl0eSkgfHwgZGVidWdfbW9kZSB0aGVuIChcbiAgICBsZXQgYyA9IGNvbXB1dGUgeCBpIGluXG4gICAgaWYgYyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgIHJhaXNlIFVuZGVmaW5lZFxuICAgIGVsc2VcbiAgICAgIGNcbiAgKSBlbHNlXG4gICAgeFxuXG5sZXQgY29tcG9zZSB+ZGVidWdfbW9kZSBleHRlbnNpYmxlIGkgaScgPVxuICBpZiAobm90IGkuaXNfaWRlbnRpdHkpIHx8IGV4dGVuc2libGUgfHwgZGVidWdfbW9kZSB0aGVuXG4gICAge1xuICAgICAgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSBzcGVjaWFsX3ZhbDtcbiAgICAgIGRlbGF5ZWQgPSBTb21lIChpLCBpJyk7XG4gICAgICBpc19pZGVudGl0eSA9IGkuaXNfaWRlbnRpdHkgJiYgaScuaXNfaWRlbnRpdHk7XG4gICAgICBkc3RzID1cbiAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gdicgc2V0IC0+XG4gICAgICAgICAgICBsZXQgdicnID0gY29tcHV0ZSB2JyBpJyBpblxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuYWRkIHYnJyBzZXQpXG4gICAgICAgICAgaS5kc3RzIE1vZHMuSW50U2V0LmVtcHR5O1xuICAgIH1cbiAgKCogbGV0IHNpZ21hLGlzX2lkID1cbiAgICAgICBNb2RzLkludE1hcC5mb2xkIChmdW4geCB5IChvdXQsaXNfaWQpIC0+XG4gICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHkgaScuc2lnbWEgd2l0aFxuICAgICAgICAgICB8IFNvbWUgeiAtPiAoTW9kcy5JbnRNYXAuYWRkIHggeiBvdXQsaXNfaWQgJiYgeD09eilcbiAgICAgICAgICAgfCBOb25lIC0+IChvdXQsaXNfaWQgJiYgeD09eSlcbiAgICAgICAgICkgaS5zaWdtYSAoaS5zaWdtYSx0cnVlKVxuICAgICBpblxuICAgICB7c2lnbWE9c2lnbWEgOyBpc19pZGVudGl0eT1pc19pZCA7IGRzdHMgPSBpJy5kc3RzfVxuICAqKVxuICBlbHNlXG4gICAgaSdcblxubGV0IGludmVyc2UgaSA9XG4gIGlmIGkuaXNfaWRlbnRpdHkgdGhlblxuICAgIGlcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IGVtcHR5ICgpIGluXG4gICAgbGV0ICgpID0gZm9yY2UgaSBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIHggeSAtPlxuICAgICAgICAgIGlmIHkgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgeSA8IEFycmF5Lmxlbmd0aCBvdXQuaW1tZWRpYXRlICYmIG91dC5pbW1lZGlhdGUuKHkpIDw+IHNwZWNpYWxfdmFsXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIE5vdEJpamVjdGl2ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeSB4IG91dClcbiAgICAgICAgaS5pbW1lZGlhdGVcbiAgICBpblxuICAgIG91dFxuICApXG5cbmxldCBjb21wYXJlIGkgaScgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGxldCAoKSA9IGZvcmNlIGknIGluXG4gIFRvb2xzLmFycmF5X2NvbXBhcmUgTW9kcy5pbnRfY29tcGFyZSBpLmltbWVkaWF0ZSBpJy5pbW1lZGlhdGVcblxubGV0IGVxdWFsIGkgaScgPSBjb21wYXJlIGkgaScgPSAwXG5cbmxldCBtaW5fZWx0IGkgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSBpblxuICBsZXQgcmVjIGF1eF9taW5fZWx0IGsgPVxuICAgIGlmIGsgPj0gbCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbyA9IGNvbXB1dGUgayBpIGluXG4gICAgICBpZiBvID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICBhdXhfbWluX2VsdCAoc3VjYyBrKVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChrLCBvKVxuICAgIClcbiAgaW5cbiAgYXV4X21pbl9lbHQgMFxuXG5sZXQgcHJpbnQgZiBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBpZ25vcmVcbiAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgIChmdW4gc3JjIGIgZHN0IC0+XG4gICAgICAgICBpZiBzcmMgPD4gZHN0ICYmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuIChcbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlaS0+JWlcIlxuICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgUHAuY29tbWFcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgIHNyYyBkc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgIGIpXG4gICAgICAgZmFsc2UgaS5pbW1lZGlhdGUpXG5cbmxldCBwcmludF9mdWxsIGYgaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbKCVhKUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBzcmMgZiBkc3QgLT5cbiAgICAgICAgIGlmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgIGlmIHNyYyA8PiBkc3QgdGhlblxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaS0+JWlcIiBzcmMgZHN0XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGYgc3JjKSlcbiAgICBpLmltbWVkaWF0ZVxuXG5sZXQgdG9feW9qc29uIGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGBMaXN0XG4gICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAoZnVuIHNyYyBhY2MgZHN0IC0+XG4gICAgICAgICBpZiBkc3QgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgICBgTGlzdCBbIGBJbnQgc3JjOyBgSW50IGRzdCBdIDo6IGFjY1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBhY2MpXG4gICAgICAgW10gaS5pbW1lZGlhdGUpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT5cbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYExpc3QgWyBgSW50IHNyYzsgYEludCBkc3QgXSBhcyB4IC0+XG4gICAgICAgICAgICBpZiBub3QgKGltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlOmZhbHNlIHNyYyBkc3Qgb3V0KSB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJlbmFtaW5nIGl0ZW1cIiwgeCkpXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmcgaXRlbVwiLCB4KSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIG91dFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJlbmFtaW5nXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0cmVlID0ge1xuICBtYXNrOiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbiAgdW5tYXNrOiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbiAgbXV0YWJsZSBuZXdfbWFzazogaW50O1xuICBtdXRhYmxlIGluZl9saXN0OiBNb2RzLkludFNldC50O1xuICBzaXplOiBpbnQ7XG4gIHdlaWdodF9vZl9ub2RlczogZmxvYXQgYXJyYXk7XG4gIHdlaWdodF9vZl9zdWJ0cmVlczogZmxvYXQgYXJyYXk7XG4gIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyOiBpbnQgbGlzdCBhcnJheTtcbiAgdW5iYWxhbmNlZF9ldmVudHM6IGJvb2wgYXJyYXk7XG4gIGxheWVyOiBpbnQgYXJyYXk7XG4gIG11dGFibGUgY29uc2lzdGVudDogYm9vbDtcbn1cblxubGV0IG1hc2sgdCBpID1cbiAgdHJ5IEhhc2h0YmwuZmluZCB0Lm1hc2sgaVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBtID0gdC5uZXdfbWFzayBpblxuICAgIGxldCAoKSA9IHQubmV3X21hc2sgPC0gbSArIDEgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgdC5tYXNrIGkgbSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSB0LnVubWFzayBtIGkgaW5cbiAgICBtXG5cbmxldCB1bm1hc2sgdCBtID1cbiAgdHJ5IEhhc2h0YmwuZmluZCB0LnVubWFzayBtXG4gIHdpdGggTm90X2ZvdW5kIC0+IGludmFsaWRfYXJnIFwiUmFuZG9tX3RyZWU6IGluY29oZXJlbnQgaGFzaFwiXG5cbmxldCBpc19pbmZpbml0ZSBpIHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIE1vZHMuSW50U2V0Lm1lbSBpIHQuaW5mX2xpc3RcblxubGV0IGZpbmQgaSB0ID1cbiAgbGV0IGkgPSBtYXNrIHQgaSBpblxuICB0LndlaWdodF9vZl9ub2Rlcy4oaSlcblxubGV0IGNvcHkgdCA9XG4gIHtcbiAgICBtYXNrID0gSGFzaHRibC5jb3B5IHQubWFzaztcbiAgICB1bm1hc2sgPSBIYXNodGJsLmNvcHkgdC51bm1hc2s7XG4gICAgbmV3X21hc2sgPSB0Lm5ld19tYXNrO1xuICAgIHNpemUgPSB0LnNpemU7XG4gICAgKCpcdHRvdGFsID0gdC50b3RhbCA7KilcbiAgICB3ZWlnaHRfb2Zfbm9kZXMgPSBBcnJheS5jb3B5IHQud2VpZ2h0X29mX25vZGVzO1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlcyA9IEFycmF5LmNvcHkgdC53ZWlnaHRfb2Zfc3VidHJlZXM7XG4gICAgbGF5ZXIgPSBBcnJheS5jb3B5IHQubGF5ZXI7XG4gICAgY29uc2lzdGVudCA9IHQuY29uc2lzdGVudDtcbiAgICB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciA9IEFycmF5LmNvcHkgdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllcjtcbiAgICB1bmJhbGFuY2VkX2V2ZW50cyA9IEFycmF5LmNvcHkgdC51bmJhbGFuY2VkX2V2ZW50cztcbiAgICBpbmZfbGlzdCA9IE1vZHMuSW50U2V0LmVtcHR5O1xuICB9XG5cbmxldCBjb3B5X3ZlY3RfaW4gdCB0MSA9IEFycmF5Lml0ZXJpIChmdW4gaSBhIC0+IHQxLihpKSA8LSBhKSB0XG5cbmxldCBjb3B5X2luIHQxIHQyID1cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLndlaWdodF9vZl9ub2RlcyB0Mi53ZWlnaHRfb2Zfbm9kZXMgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLndlaWdodF9vZl9zdWJ0cmVlcyB0Mi53ZWlnaHRfb2Zfc3VidHJlZXMgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLmxheWVyIHQyLmxheWVyIGluXG4gIGxldCAoKSA9IGNvcHlfdmVjdF9pbiB0MS51bmJhbGFuY2VkX2V2ZW50cyB0Mi51bmJhbGFuY2VkX2V2ZW50cyBpblxuICBsZXQgKCkgPVxuICAgIGNvcHlfdmVjdF9pbiB0MS51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciB0Mi51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllclxuICBpblxuICBsZXQgKCkgPSB0Mi5jb25zaXN0ZW50IDwtIHQxLmNvbnNpc3RlbnQgaW5cbiAgdDJcblxubGV0IGlzX3Jvb3QgaSA9IGkgPSAxXG5cbmxldCBkZWNsYXJlX3VuYmFsYW5jZWQgaSB0ID1cbiAgbGV0ICgpID1cbiAgICBpZiBub3QgdC51bmJhbGFuY2VkX2V2ZW50cy4oaSkgdGhlbiAoXG4gICAgICBsZXQgbCA9IHQubGF5ZXIuKGkpIGluXG4gICAgICBsZXQgKCkgPSB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSA8LSB0cnVlIGluXG4gICAgICB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyLihsKSA8LSBpIDo6IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGwpXG4gICAgKVxuICBpblxuICB0LmNvbnNpc3RlbnQgPC0gZmFsc2VcblxubGV0IHVwZGF0ZV9zdHJ1Y3R1cmUgdCA9XG4gIGlmIHQuY29uc2lzdGVudCB0aGVuXG4gICAgdFxuICBlbHNlIChcbiAgICBsZXQgbl9sYXllciA9IHQubGF5ZXIuKHQuc2l6ZSkgaW5cbiAgICBsZXQgdXBkYXRlX3N0cnVjdHVyZV9hdXggaSA9XG4gICAgICBsZXQgKCkgPVxuICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oaSkgPC1cbiAgICAgICAgICAodC53ZWlnaHRfb2Zfbm9kZXMuKGkpXG4gICAgICAgICAgKy4gKGlmIDIgKiBpID4gdC5zaXplIHRoZW5cbiAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKDIgKiBpKSlcbiAgICAgICAgICArLlxuICAgICAgICAgIGlmICgyICogaSkgKyAxID4gdC5zaXplIHRoZW5cbiAgICAgICAgICAgIDAuXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKCgyICogaSkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSA8LSBmYWxzZSBpblxuICAgICAgaWYgbm90IChpc19yb290IGkpIHRoZW4gKFxuICAgICAgICBsZXQgZmF0aGVyID0gaSAvIDIgaW5cbiAgICAgICAgZGVjbGFyZV91bmJhbGFuY2VkIGZhdGhlciB0XG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbCA9IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGspIGluXG4gICAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGspIDwtIFtdIGluXG4gICAgICAgIGxldCAoKSA9IExpc3QuaXRlciB1cGRhdGVfc3RydWN0dXJlX2F1eCBsIGluXG4gICAgICAgIGF1eCAoayAtIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBhdXggbl9sYXllciBpblxuICAgIGxldCAoKSA9IHQuY29uc2lzdGVudCA8LSB0cnVlIGluXG4gICAgdFxuICApXG5cbmxldCBjcmVhdGUgbiA9XG4gIGxldCB0X25vZGUgPSBBcnJheS5tYWtlIChuICsgMSkgMC4gaW5cbiAgbGV0IHRfc3VidHJlZSA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwLiBpblxuICBsZXQgbGF5ZXIgPSBBcnJheS5tYWtlIChuICsgMSkgMCBpblxuICBsZXQgKCkgPVxuICAgIGxldCByZWMgYXV4IGsgY3VycmVudF9sYXllciBsYXllcl9lbmQgPVxuICAgICAgaWYgayA8PSBuIHRoZW5cbiAgICAgICAgaWYgayA+IGxheWVyX2VuZCB0aGVuXG4gICAgICAgICAgYXV4IGsgKGN1cnJlbnRfbGF5ZXIgKyAxKSAoKDIgKiBsYXllcl9lbmQpICsgMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gbGF5ZXIuKGspIDwtIGN1cnJlbnRfbGF5ZXIgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSBjdXJyZW50X2xheWVyIGxheWVyX2VuZFxuICAgICAgICApXG4gICAgaW5cbiAgICBhdXggMSAxIDFcbiAgaW5cbiAgbGV0IHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyID0gQXJyYXkubWFrZSAobGF5ZXIuKG4pICsgMSkgW10gaW5cbiAgbGV0IHVuYmFsYW5jZWRfZXZlbnRzID0gQXJyYXkubWFrZSAobiArIDEpIGZhbHNlIGluXG4gIHtcbiAgICBzaXplID0gbjtcbiAgICAoKlx0dG90YWwgPSAwLjsqKVxuICAgIG5ld19tYXNrID0gMTtcbiAgICBtYXNrID0gSGFzaHRibC5jcmVhdGUgKG4gKyAxKTtcbiAgICB1bm1hc2sgPSBIYXNodGJsLmNyZWF0ZSAobiArIDEpO1xuICAgIGluZl9saXN0ID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gICAgY29uc2lzdGVudCA9IHRydWU7XG4gICAgd2VpZ2h0X29mX25vZGVzID0gdF9ub2RlO1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlcyA9IHRfc3VidHJlZTtcbiAgICB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllcjtcbiAgICB1bmJhbGFuY2VkX2V2ZW50cztcbiAgICBsYXllcjtcbiAgfVxuXG5sZXQgYWRkIGkgdyB0ID1cbiAgbGV0IGkgPSBtYXNrIHQgaSBpblxuICBpZiB3IDwgMC4gdGhlblxuICAgIGZhaWx3aXRoIFwiTmVnYXRpdmUgdmFsdWUgZm9yYmlkZGVuIGluIFJhbmRvbV90cmVlXCJcbiAgZWxzZSAoXG4gICAgbGV0IHcgPVxuICAgICAgaWYgdyA9IGluZmluaXR5IHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSB0LmluZl9saXN0IDwtIE1vZHMuSW50U2V0LmFkZCBpIHQuaW5mX2xpc3QgaW5cbiAgICAgICAgMC5cbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IHQuaW5mX2xpc3QgPC0gTW9kcy5JbnRTZXQucmVtb3ZlIGkgdC5pbmZfbGlzdCBpblxuICAgICAgICB3XG4gICAgICApXG4gICAgaW5cbiAgICAoKlx0bGV0IHRvdGFsID0gdC50b3RhbCAtLiB0LndlaWdodF9vZl9ub2Rlcy4oaSkgKy4gdyBpbiopXG4gICAgbGV0ICgpID0gdC53ZWlnaHRfb2Zfbm9kZXMuKGkpIDwtIHcgaW5cbiAgICBsZXQgKCkgPSBkZWNsYXJlX3VuYmFsYW5jZWQgaSB0IGluXG4gICAgKCkgKCp0LnRvdGFsIDwtIChtYXggMC4wIHRvdGFsKSAoKm5vdCBzYXRpc2ZhY3RvcnkqKSopXG4gIClcblxubGV0IHRvdGFsIHQgPVxuICBpZiBNb2RzLkludFNldC5pc19lbXB0eSB0LmluZl9saXN0IHRoZW4gKFxuICAgIGxldCB0ID0gdXBkYXRlX3N0cnVjdHVyZSB0IGluXG4gICAgaWYgdC5zaXplID0gMCB0aGVuXG4gICAgICAwLlxuICAgIGVsc2VcbiAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLigxKVxuICApIGVsc2VcbiAgICBpbmZpbml0eVxuXG5sZXQgcmFuZG9tIHJzIHQgPVxuICBtYXRjaCBNb2RzLkludFNldC5yYW5kb20gcnMgdC5pbmZfbGlzdCB3aXRoXG4gIHwgU29tZSB4IC0+IHVubWFzayB0IHgsIGluZmluaXR5XG4gIHwgTm9uZSAtPlxuICAgIGxldCB0ID0gdXBkYXRlX3N0cnVjdHVyZSB0IGluXG4gICAgbGV0IGEgPSB0b3RhbCB0IGluXG4gICAgaWYgYSA8PSAwLiB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gUmFuZG9tLlN0YXRlLmZsb2F0IHJzIGEgaW5cbiAgICAgIGxldCByZWMgZmluZCBpIHIgPVxuICAgICAgICBsZXQgbm9kZSA9IHQud2VpZ2h0X29mX25vZGVzLihpKSBpblxuICAgICAgICBpZiByIDwgbm9kZSB0aGVuXG4gICAgICAgICAgaSwgbm9kZVxuICAgICAgICBlbHNlIGlmIDIgKiBpID4gdC5zaXplIHRoZW5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHInID0gciAtLiBub2RlIGluXG4gICAgICAgICAgbGV0IGxzb24gPSAyICogaSBpblxuICAgICAgICAgIGxldCByc29uID0gKDIgKiBpKSArIDEgaW5cbiAgICAgICAgICBsZXQgbGVmdCA9IHQud2VpZ2h0X29mX3N1YnRyZWVzLihsc29uKSBpblxuICAgICAgICAgIGlmIHInIDwgbGVmdCB0aGVuXG4gICAgICAgICAgICBmaW5kIGxzb24gcidcbiAgICAgICAgICBlbHNlIGlmIHJzb24gPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZCByc29uIChyJyAtLiBsZWZ0KVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IHJlcCwgdyA9IGZpbmQgMSByIGluXG4gICAgICB1bm1hc2sgdCByZXAsIHdcbiAgICApXG5cbigqIFRPRE9cbiAgICB3ZWlnaHRfb2Zfc3VidHJlZXM6IGZsb2F0IGFycmF5IDtcbiAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyOiBpbnQgbGlzdCBhcnJheSA7XG4qKVxubGV0IGRlYnVnX3ByaW50IGYgdCA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJXNjb25zaXN0ZW50OkAgW1wiXG4gICAgICAoaWYgdC5jb25zaXN0ZW50IHRoZW5cbiAgICAgICAgIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcInVuXCIpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5pdGVyXG4gICAgICAoZnVuIGkgayAtPlxuICAgICAgICBsZXQgYmFsID1cbiAgICAgICAgICBpZiB0LnVuYmFsYW5jZWRfZXZlbnRzLihrKSB0aGVuXG4gICAgICAgICAgICBcIiFcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludiA9XG4gICAgICAgICAgaWYgSGFzaHRibC5maW5kIHQubWFzayBrID0gaSB0aGVuXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCIgbm90IGludm9sdXRpdmVcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgaW5mID1cbiAgICAgICAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB0LndlaWdodF9vZl9ub2Rlcy4oaykgd2l0aFxuICAgICAgICAgIHwgRlBfaW5maW5pdGUgd2hlbiBNb2RzLkludFNldC5tZW0gayB0LmluZl9saXN0IC0+IFwiXCJcbiAgICAgICAgICB8IEZQX2luZmluaXRlIC0+IFwiIG5vdCBpbiBpbmZfbGlzdFwiXG4gICAgICAgICAgfCBfIHdoZW4gbm90IChNb2RzLkludFNldC5tZW0gayB0LmluZl9saXN0KSAtPiBcIlwiXG4gICAgICAgICAgfCBGUF9ub3JtYWwgfCBGUF96ZXJvIHwgRlBfbmFuIHwgRlBfc3Vibm9ybWFsIC0+IFwiIGluIGluZl9saXN0XCJcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJWk6JWYlcyVzLEAsXCIgYmFsIGkgdC53ZWlnaHRfb2Zfbm9kZXMuKGspIGluZiBpbnYpXG4gICAgICB0LnVubWFza1xuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiXUBdXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBncmFwaF9wYWdlIHRpdGxlID9zdWJ0aXRsZSBkZXBzIGhlYWRlciBjb3JlIGYgPVxuICBsZXQgZGVwZW5kZW5jeSBmIHQgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8c2NyaXB0IHNyYz1cXFwiJXNcXFwiIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj48L3NjcmlwdD5cIiB0XG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PjwhZG9jdHlwZSBodG1sPkAsQCw8aHRtbD5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGhlYWQ+QCw8bWV0YSBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPiV0PC90aXRsZT5ALFwiIHRpdGxlIGluXG4gIGxldCAoKSA9IFBwLmxpc3QgfnRyYWlsaW5nOlBwLnNwYWNlIFBwLnNwYWNlIGRlcGVuZGVuY3kgZiBkZXBzIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIldEBdQCw8L2hlYWQ+QCxcIiBoZWFkZXIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48Ym9keT5ALDxkaXYgY2xhc3M9XFxcImNvbnRhaW5lclxcXCI+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8aDE+QFsldCV0QF08L2gxPkAsXCIgdGl0bGUgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIHN1YnRpdGxlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJALDxzbWFsbD4ldDwvc21hbGw+XCIgdClcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiV0QCw8L2Rpdj5AXUAsPC9ib2R5PkAsPC9odG1sPkBdQC5cIiBjb3JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJpbl9hbGdfb3AgPSBNVUxUIHwgU1VNIHwgRElWIHwgTUlOVVMgfCBQT1cgfCBNT0RVTE8gfCBNSU4gfCBNQVhcbnR5cGUgdW5fYWxnX29wID0gTE9HIHwgU1FSVCB8IEVYUCB8IFNJTlVTIHwgQ09TSU5VUyB8IFRBTiB8IElOVCB8IFVNSU5VU1xuXG50eXBlIHN0YXRlX2FsZ19vcCA9XG4gIHwgQ1BVVElNRVxuICB8IFRJTUVfVkFSXG4gIHwgRVZFTlRfVkFSXG4gIHwgTlVMTF9FVkVOVF9WQVJcbiAgfCBUTUFYX1ZBUlxuICB8IEVNQVhfVkFSXG5cbnR5cGUgYmluX2Jvb2xfb3AgPSBBTkQgfCBPUlxudHlwZSB1bl9ib29sX29wID0gTk9UXG50eXBlIGNvbXBhcmVfb3AgPSBHUkVBVEVSIHwgU01BTExFUiB8IEVRVUFMIHwgRElGRlxudHlwZSByZXZfZGVwID0gQUxHIG9mIGludCB8IFJVTEUgb2YgaW50IHwgTU9ESUYgb2YgaW50XG5cbmxldCBiaW5fYWxnX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTVVMVCAtPiBcIipcIlxuICB8IFNVTSAtPiBcIitcIlxuICB8IERJViAtPiBcIi9cIlxuICB8IE1JTlVTIC0+IFwiLVwiXG4gIHwgUE9XIC0+IFwiXlwiXG4gIHwgTU9EVUxPIC0+IFwiW21vZF1cIlxuICB8IE1JTiAtPiBcIlttaW5dXCJcbiAgfCBNQVggLT4gXCJbbWF4XVwiXG5cbmxldCBiaW5fYWxnX29wX2lzX3ByZWZpeCA9IGZ1bmN0aW9uXG4gIHwgTUFYIHwgTUlOIC0+IHRydWVcbiAgfCBNVUxUIHwgU1VNIHwgRElWIHwgTUlOVVMgfCBQT1cgfCBNT0RVTE8gLT4gZmFsc2VcblxubGV0IHByaW50X2Jpbl9hbGdfb3AgZnggeCBmeSB5IGYgb3AgPVxuICBpZiBiaW5fYWxnX29wX2lzX3ByZWZpeCBvcCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzICglYSkgKCVhKVwiIChiaW5fYWxnX29wX3RvX3N0cmluZyBvcCkgZnggeCBmeSB5XG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhICVzICVhKVwiIGZ4IHggKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKSBmeSB5XG5cbmxldCBiaW5fYWxnX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChiaW5fYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IGJpbl9hbGdfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIipcIiAtPiBNVUxUXG4gIHwgYFN0cmluZyBcIitcIiAtPiBTVU1cbiAgfCBgU3RyaW5nIFwiL1wiIC0+IERJVlxuICB8IGBTdHJpbmcgXCItXCIgLT4gTUlOVVNcbiAgfCBgU3RyaW5nIFwiXlwiIC0+IFBPV1xuICB8IGBTdHJpbmcgXCJbbW9kXVwiIC0+IE1PRFVMT1xuICB8IGBTdHJpbmcgXCJbbWluXVwiIC0+IE1JTlxuICB8IGBTdHJpbmcgXCJbbWF4XVwiIC0+IE1BWFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGJpbl9hbGdfb3BcIiwgeCkpXG5cbmxldCB1bl9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBDT1NJTlVTIC0+IFwiW2Nvc11cIlxuICB8IFNJTlVTIC0+IFwiW3Npbl1cIlxuICB8IFRBTiAtPiBcIlt0YW5dXCJcbiAgfCBFWFAgLT4gXCJbZXhwXVwiXG4gIHwgU1FSVCAtPiBcIltzcXJ0XVwiXG4gIHwgSU5UIC0+IFwiW2ludF1cIlxuICB8IExPRyAtPiBcIltsb2ddXCJcbiAgfCBVTUlOVVMgLT4gXCItXCJcblxubGV0IHByaW50X3VuX2FsZ19vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmICh1bl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxubGV0IHVuX2FsZ19vcF90b19qc29uIG9wID0gYFN0cmluZyAodW5fYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHVuX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW2Nvc11cIiAtPiBDT1NJTlVTXG4gIHwgYFN0cmluZyBcIltzaW5dXCIgLT4gU0lOVVNcbiAgfCBgU3RyaW5nIFwiW3Rhbl1cIiAtPiBUQU5cbiAgfCBgU3RyaW5nIFwiW2V4cF1cIiAtPiBFWFBcbiAgfCBgU3RyaW5nIFwiW3NxcnRdXCIgLT4gU1FSVFxuICB8IGBTdHJpbmcgXCJbaW50XVwiIC0+IElOVFxuICB8IGBTdHJpbmcgXCJbbG9nXVwiIC0+IExPR1xuICB8IGBTdHJpbmcgXCItXCIgLT4gVU1JTlVTXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgdW5fYWxnX29wXCIsIHgpKVxuXG5sZXQgc3RhdGVfYWxnX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQ1BVVElNRSAtPiBcIltUc2ltXVwiXG4gIHwgVElNRV9WQVIgLT4gXCJbVF1cIlxuICB8IEVWRU5UX1ZBUiAtPiBcIltFXVwiXG4gIHwgTlVMTF9FVkVOVF9WQVIgLT4gXCJbRS1dXCJcbiAgfCBUTUFYX1ZBUiAtPiBcIltUbWF4XVwiXG4gIHwgRU1BWF9WQVIgLT4gXCJbRW1heF1cIlxuXG5sZXQgcHJpbnRfc3RhdGVfYWxnX29wIGYgb3AgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0YXRlX2FsZ19vcF90b19zdHJpbmcgb3ApXG5cbmxldCBzdGF0ZV9hbGdfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKHN0YXRlX2FsZ19vcF90b19zdHJpbmcgb3ApXG5cbmxldCBzdGF0ZV9hbGdfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIltUc2ltXVwiIC0+IENQVVRJTUVcbiAgfCBgU3RyaW5nIFwiW1RdXCIgLT4gVElNRV9WQVJcbiAgfCBgU3RyaW5nIFwiW0VdXCIgLT4gRVZFTlRfVkFSXG4gIHwgYFN0cmluZyBcIltFLV1cIiAtPiBOVUxMX0VWRU5UX1ZBUlxuICB8IGBTdHJpbmcgXCJbVG1heF1cIiAtPiBUTUFYX1ZBUlxuICB8IGBTdHJpbmcgXCJbRW1heF1cIiAtPiBFTUFYX1ZBUlxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHN0YXRlX2FsZ19vcFwiLCB4KSlcblxubGV0IGJpbl9ib29sX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQU5EIC0+IFwiJiZcIlxuICB8IE9SIC0+IFwifHxcIlxuXG5sZXQgcHJpbnRfYmluX2Jvb2xfb3AgZiBvcCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoYmluX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxubGV0IGJpbl9ib29sX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChiaW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5cbmxldCBiaW5fYm9vbF9vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiJiZcIiAtPiBBTkRcbiAgfCBgU3RyaW5nIFwifHxcIiAtPiBPUlxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGJvb2xlYW4gb3BcIiwgeCkpXG5cbmxldCB1bl9ib29sX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTk9UIC0+IFwiW25vdF1cIlxuXG5sZXQgcHJpbnRfdW5fYm9vbF9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmICh1bl9ib29sX29wX3RvX3N0cmluZyBvcClcbmxldCB1bl9ib29sX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nICh1bl9ib29sX29wX3RvX3N0cmluZyBvcClcblxubGV0IHVuX2Jvb2xfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIltub3RdXCIgLT4gTk9UXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYm9vbGVhbiBvcFwiLCB4KSlcblxubGV0IGNvbXBhcmVfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBHUkVBVEVSIC0+IFwiPlwiXG4gIHwgU01BTExFUiAtPiBcIjxcIlxuICB8IEVRVUFMIC0+IFwiPVwiXG4gIHwgRElGRiAtPiBcIiE9XCJcblxubGV0IHByaW50X2NvbXBhcmVfb3AgZiBvcCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoY29tcGFyZV9vcF90b19zdHJpbmcgb3ApXG5sZXQgY29tcGFyZV9vcF90b19qc29uIG9wID0gYFN0cmluZyAoY29tcGFyZV9vcF90b19zdHJpbmcgb3ApXG5cbmxldCBjb21wYXJlX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCI+XCIgLT4gR1JFQVRFUlxuICB8IGBTdHJpbmcgXCI8XCIgLT4gU01BTExFUlxuICB8IGBTdHJpbmcgXCI9XCIgLT4gRVFVQUxcbiAgfCBgU3RyaW5nIFwiIT1cIiAtPiBESUZGXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgY29tcGFyZV9vcFwiLCB4KSlcblxubGV0IHByaW50X3Jldl9kZXAgZiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSBpZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwicmF0ZV9vZl9ydWxlIFslaV1cIiBpZFxuICAoKlwicmF0ZSBvZiBydWxlICclYSdcIiAoTW9kZWwucHJpbnRfcnVsZSBlbnYpIGlkKilcbiAgfCBBTEcgaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcImFsZ2VicmFpYyB2YXJpYWJsZSBbJWldXCIgaWRcbiAgKCpcInZhcmlhYmxlICclYSdcIiAoTW9kZWwucHJpbnRfYWxnIGVudikgaWQqKVxuICB8IE1PRElGIGlkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJpbnRlcnZlbnRpb24gWyVpXVwiIGlkXG5cbmxldCByZXZfZGVwX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJSVUxFXCI7IGBJbnQgaWQgXVxuICB8IEFMRyBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJBTEdcIjsgYEludCBpZCBdXG4gIHwgTU9ESUYgaWQgLT4gYExpc3QgWyBgU3RyaW5nIFwiTU9ESUZcIjsgYEludCBpZCBdXG5cbmxldCByZXZfZGVwX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUlVMRVwiOyBgSW50IGlkIF0gLT4gUlVMRSBpZFxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkFMR1wiOyBgSW50IGlkIF0gLT4gQUxHIGlkXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiTU9ESUZcIjsgYEludCBpZCBdIC0+IE1PRElGIGlkXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgcmV2X2RlcFwiLCB4KSlcblxubW9kdWxlIERlcFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gcmV2X2RlcFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBwcmludF9yZXZfZGVwXG5lbmQpXG5cbm1vZHVsZSBEZXBTZXQgPSBEZXBTZXRNYXAuU2V0XG5cbmxldCBkZXBzZXRfdG9feW9qc29uIHggPVxuICBgTGlzdCAoRGVwU2V0LmZvbGQgKGZ1biB4IGEgLT4gcmV2X2RlcF90b195b2pzb24geCA6OiBhKSB4IFtdKVxuXG5sZXQgZGVwc2V0X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRGVwU2V0LmVtcHR5XG4gIHwgYExpc3QgbCAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB4IC0+IERlcFNldC5hZGQgKHJldl9kZXBfb2ZfeW9qc29uIHgpIGFjYylcbiAgICAgIERlcFNldC5lbXB0eSBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGRlcHNldFwiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IEYgb2YgZmxvYXQgfCBJIG9mIGludCB8IEk2NCBvZiBJbnQ2NC50XG5cbmxldCBjYXN0X2Jpbl9vcCB+b3BfZiA/b3BfaSA/b3BfaTY0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IEYgeCwgRiB5IC0+IEYgKG9wX2YgeCB5KVxuICB8IEkgeCwgRiB5IC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSB5KVxuICB8IEYgeCwgSSB5IC0+IEYgKG9wX2YgeCAoZmxvYXRfb2ZfaW50IHkpKVxuICB8IEkgeCwgSSB5IC0+XG4gICAgKG1hdGNoIG9wX2kgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChmbG9hdF9vZl9pbnQgeCkgKGZsb2F0X29mX2ludCB5KSlcbiAgICB8IFNvbWUgb3BfaSAtPiBJIChvcF9pIHggeSkpXG4gIHwgSSB4LCBJNjQgeSAtPlxuICAgIChtYXRjaCBvcF9pNjQgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChmbG9hdF9vZl9pbnQgeCkgKEludDY0LnRvX2Zsb2F0IHkpKVxuICAgIHwgU29tZSBvcF9pNjQgLT4gSTY0IChvcF9pNjQgKEludDY0Lm9mX2ludCB4KSB5KSlcbiAgfCBJNjQgeCwgSSB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIChmbG9hdF9vZl9pbnQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4IChJbnQ2NC5vZl9pbnQgeSkpKVxuICB8IEk2NCB4LCBJNjQgeSAtPlxuICAgIChtYXRjaCBvcF9pNjQgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChJbnQ2NC50b19mbG9hdCB4KSAoSW50NjQudG9fZmxvYXQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4IHkpKVxuICB8IEYgeCwgSTY0IHkgLT4gRiAob3BfZiB4IChJbnQ2NC50b19mbG9hdCB5KSlcbiAgfCBJNjQgeCwgRiB5IC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIHkpXG5cbmxldCBjYXN0X3VuX29wID9vcF9mID9vcF9pID9vcF9pNjQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEYgeCAtPlxuICAgIChtYXRjaCBvcF9mIHdpdGhcbiAgICB8IFNvbWUgb3BfZiAtPiBGIChvcF9mIHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfaSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuXCJcbiAgICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgKGludF9vZl9mbG9hdCB4KSkpKVxuICB8IEk2NCB4IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4KVxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIG9wX2Ygd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiY2FzdF91bl9vcFwiXG4gICAgICB8IFNvbWUgb3BfZiAtPiBGIChvcF9mIChJbnQ2NC50b19mbG9hdCB4KSkpKVxuICB8IEkgeCAtPlxuICAgIChtYXRjaCBvcF9pIHdpdGhcbiAgICB8IFNvbWUgb3BfaSAtPiBJIChvcF9pIHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuX29wXCJcbiAgICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSkpKVxuXG5sZXQgY29tcGFyZSBuMSBuMiA9XG4gIG1hdGNoIG4xLCBuMiB3aXRoXG4gIHwgRiB4LCBGIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgSSB4LCBJIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgRiB4LCBJIHkgLT4gU3RkbGliLmNvbXBhcmUgeCAoZmxvYXRfb2ZfaW50IHkpXG4gIHwgSSB4LCBGIHkgLT4gU3RkbGliLmNvbXBhcmUgKGZsb2F0X29mX2ludCB4KSB5XG4gIHwgSSB4LCBJNjQgeSAtPiBTdGRsaWIuY29tcGFyZSAoSW50NjQub2ZfaW50IHgpIHlcbiAgfCBJNjQgeCwgSTY0IHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgSTY0IHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IChJbnQ2NC5vZl9pbnQgeSlcbiAgfCBGIHgsIEk2NCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggKEludDY0LnRvX2Zsb2F0IHkpXG4gIHwgSTY0IHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSAoSW50NjQudG9fZmxvYXQgeCkgeVxuXG5sZXQgaXNfZ3JlYXRlciBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPiAwXG5sZXQgaXNfc21hbGxlciBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPCAwXG5sZXQgaXNfZXF1YWwgbjEgbjIgPSBjb21wYXJlIG4xIG4yID0gMFxubGV0IGFkZCBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggKy4gKSB+b3BfaTooICsgKSB+b3BfaTY0OkludDY0LmFkZCBuMSBuMlxubGV0IHN1YiBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggLS4gKSB+b3BfaTooIC0gKSB+b3BfaTY0OkludDY0LnN1YiBuMSBuMlxubGV0IG11bHQgbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjooICouICkgfm9wX2k6KCAqICkgfm9wX2k2NDpJbnQ2NC5tdWwgbjEgbjJcbmxldCBtaW4gbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjptaW4gfm9wX2k6bWluIH5vcF9pNjQ6bWluIG4xIG4yXG5sZXQgbWF4IG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6bWF4IH5vcF9pOm1heCB+b3BfaTY0Om1heCBuMSBuMlxuXG5sZXQgcmVtIG4xIG4yID1cbiAgY2FzdF9iaW5fb3Agfm9wX2k6KCBtb2QgKSB+b3BfaTY0OkludDY0LnJlbSB+b3BfZjptb2RfZmxvYXQgbjEgbjJcblxubGV0IGludGVybmFsX2RpdiBuMSBuMiA9XG4gIGNhc3RfYmluX29wIH5vcF9pOiggLyApIH5vcF9pNjQ6SW50NjQuZGl2IH5vcF9mOiggLy4gKSBuMSBuMlxuXG5sZXQgc3VjYyBuID0gY2FzdF91bl9vcCB+b3BfZjooKCArLiApIDEuKSB+b3BfaTpzdWNjIH5vcF9pNjQ6SW50NjQuc3VjYyBuXG5sZXQgcHJlZCBuID0gY2FzdF91bl9vcCB+b3BfZjooZnVuIHggLT4geCAtLiAxLikgfm9wX2k6cHJlZCB+b3BfaTY0OkludDY0LnByZWQgblxubGV0IG5lZyBuID0gY2FzdF91bl9vcCB+b3BfZjooIH4tLiApIH5vcF9pOiggfi0gKSB+b3BfaTY0OkludDY0Lm5lZyBuXG5cbmxldCB0b19mbG9hdCBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgSSB4IC0+IFNvbWUgKGZsb2F0X29mX2ludCB4KVxuICB8IEk2NCB4IC0+IFNvbWUgKEludDY0LnRvX2Zsb2F0IHgpXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBTb21lIHhcbiAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IE5vbmUpXG5cbmxldCB0b19pbnQgbiA9XG4gIG1hdGNoIG4gd2l0aFxuICB8IEYgeCAtPiBpbnRfb2ZfZmxvYXQgeFxuICB8IEkgeCAtPiB4XG4gIHwgSTY0IHggLT4gSW50NjQudG9faW50IHggKCpNaWdodCBleGNlZWQgdGhlYmlnZ2VzdCAzMiBiaXRzIGludGVnZXIqKVxuXG5sZXQgemVybyA9IEkgMFxuXG5sZXQgaXNfemVybyA9IGZ1bmN0aW9uXG4gIHwgSTY0IHggLT4geCA9IEludDY0Lnplcm9cbiAgfCBJIHggLT4geCA9IDBcbiAgfCBGIHggLT4gVG9vbHMuZmxvYXRfaXNfemVybyB4XG5cbmxldCBvbmUgPSBJIDFcblxubGV0IGlzX3N0cmljdGx5X3Bvc2l0aXZlID0gZnVuY3Rpb25cbiAgfCBGIHggLT4geCA+IDAuXG4gIHwgSSB4IC0+IHggPiAwXG4gIHwgSTY0IHggLT4geCA+IEludDY0Lnplcm9cblxubGV0IHBvc19wb3cgbjEgbjIgPVxuICBjYXN0X2Jpbl9vcCB+b3BfZjooICoqICkgfm9wX2k6VG9vbHMucG93IH5vcF9pNjQ6VG9vbHMucG93NjQgbjEgbjJcblxubGV0IHBvdyB4IG4gPVxuICBpZiBpc196ZXJvIG4gfHwgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuXG4gICAgcG9zX3BvdyB4IG5cbiAgZWxzZSAoXG4gICAgbWF0Y2ggdG9fZmxvYXQgeCB3aXRoXG4gICAgfCBTb21lIHggLT4gcG9zX3BvdyAoRiAoMS4gLy4geCkpIChuZWcgbilcbiAgICB8IE5vbmUgLT4gRiBuYW5cbiAgKVxuXG5sZXQgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIChzdHJpbmdfb2ZfZmxvYXQgeClcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEkgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiB4XG5cbmxldCBwcmV0dHlfcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZ1wiIHhcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEkgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiB4XG5cbmxldCBwcmludF9vcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEYgeCAtPlxuICAgIChtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX3plcm8gfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIChzdHJpbmdfb2ZfZmxvYXQgeClcbiAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+ICgpKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gc3RyaW5nX29mX2Zsb2F0IHhcbiAgfCBJNjQgeCAtPiBJbnQ2NC50b19zdHJpbmcgeFxuICB8IEkgeCAtPiBzdHJpbmdfb2ZfaW50IHhcblxubGV0IHJlYyBpdGVyaSBmIHggbiA9XG4gIGlmIGlzX3N0cmljdGx5X3Bvc2l0aXZlIG4gdGhlblxuICAgIGl0ZXJpIGYgKGYgbiB4KSAocHJlZCBuKVxuICBlbHNlXG4gICAgeFxuXG5sZXQgcmVjIG1heWJlX2l0ZXJpIGYgeCBuID1cbiAgaWYgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuIChcbiAgICBtYXRjaCBmIG4geCB3aXRoXG4gICAgfCBOb25lIC0+IHhcbiAgICB8IFNvbWUgeCcgLT4gbWF5YmVfaXRlcmkgZiB4JyAocHJlZCBuKVxuICApIGVsc2VcbiAgICB4XG5cbmxldCBvZl9zdHJpbmcgeCA9XG4gIHRyeSBJIChpbnRfb2Zfc3RyaW5nIHgpIHdpdGggRmFpbHVyZSBfIC0+IEYgKGZsb2F0X29mX3N0cmluZyB4KVxuXG5sZXQgdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBJIHggLT4gYEludCB4XG4gIHwgSTY0IHggLT4gYFN0cmluZyAoSW50NjQudG9fc3RyaW5nIHgpXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBgRmxvYXQgeFxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gYFN0cmluZyAoc3RyaW5nX29mX2Zsb2F0IHgpKVxuXG5sZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IHggLT4gSSB4XG4gIHwgYEZsb2F0IHggLT4gRiB4XG4gIHwgYFN0cmluZyBuIGFzIHggLT5cbiAgICAodHJ5IEk2NCAoSW50NjQub2Zfc3RyaW5nIG4pXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgKHRyeSBGIChmbG9hdF9vZl9zdHJpbmcgbilcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gTmJyXCIsIHgpKSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gTmJyXCIsIHgpKVxuXG5sZXQgd3JpdGVfdCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9feW9qc29uIGYpXG5cbmxldCBzdHJpbmdfb2ZfdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF90IHAgbGIgPSBvZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcbmxldCB0X29mX3N0cmluZyBzID0gcmVhZF90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBvZl9iaW5fYWxnX29wID0gZnVuY3Rpb25cbiAgfCBPcGVyYXRvci5NVUxUIC0+IG11bHRcbiAgfCBPcGVyYXRvci5TVU0gLT4gYWRkXG4gIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgZnVuIHggeSAtPlxuICAgICAgaWYgKG5vdCAoaXNfemVybyB5KSkgJiYgaXNfemVybyAocmVtIHggeSkgdGhlblxuICAgICAgICBpbnRlcm5hbF9kaXYgeCB5XG4gICAgICBlbHNlXG4gICAgICAgIGNhc3RfYmluX29wIH5vcF9mOiggLy4gKSB4IHlcbiAgfCBPcGVyYXRvci5NSU5VUyAtPiBzdWJcbiAgfCBPcGVyYXRvci5NT0RVTE8gLT4gcmVtXG4gIHwgT3BlcmF0b3IuTUlOIC0+IG1pblxuICB8IE9wZXJhdG9yLk1BWCAtPiBtYXhcbiAgfCBPcGVyYXRvci5QT1cgLT4gcG93XG5cbmxldCBvZl91bl9hbGdfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkxPRyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmxvZyB4XG4gIHwgT3BlcmF0b3IuU1FSVCAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnNxcnQgeFxuICB8IE9wZXJhdG9yLkVYUCAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmV4cCB4XG4gIHwgT3BlcmF0b3IuU0lOVVMgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpzaW4geFxuICB8IE9wZXJhdG9yLkNPU0lOVVMgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpjb3MgeFxuICB8IE9wZXJhdG9yLlRBTiAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnRhbiB4XG4gIHwgT3BlcmF0b3IuSU5UIC0+XG4gICAgZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfaTooZnVuIG4gLT4gbikgfm9wX2k2NDooZnVuIG4gLT4gbikgeFxuICB8IE9wZXJhdG9yLlVNSU5VUyAtPiBuZWdcblxubGV0IG9mX2NvbXBhcmVfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkdSRUFURVIgLT4gaXNfZ3JlYXRlclxuICB8IE9wZXJhdG9yLlNNQUxMRVIgLT4gaXNfc21hbGxlclxuICB8IE9wZXJhdG9yLkVRVUFMIC0+IGlzX2VxdWFsXG4gIHwgT3BlcmF0b3IuRElGRiAtPiBmdW4gdiB2JyAtPiBub3QgKGlzX2VxdWFsIHYgdicpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gU3ludGF4X0Vycm9yIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuZXhjZXB0aW9uIE1hbGZvcm1lZF9EZWNsIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuZXhjZXB0aW9uIEludGVybmFsX0Vycm9yIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuXG5sZXQgd2FybmluZ19idWZmZXIgOiAoTG9jLnQgb3B0aW9uICogKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkpIGxpc3QgcmVmID1cbiAgcmVmIFtdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IGRlY2xzOiAoc3RyaW5nICogJ2EpIGFycmF5OyBmaW5kZXI6IGludCBNb2RzLlN0cmluZ01hcC50IH1cblxubGV0IG5hbWVfbWFwX29mX2FycmF5ID9mb3JiaWRkZW4gYSA9XG4gIGxldCBiYWQgPVxuICAgIG1hdGNoIGZvcmJpZGRlbiB3aXRoXG4gICAgfCBOb25lIC0+IGZ1biBfIC0+IGZhbHNlXG4gICAgfCBTb21lIHMgLT4gZnVuIHggLT4gTW9kcy5TdHJpbmdTZXQubWVtIHggc1xuICBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIG1hcCAoKHgsIHBvcyksIF8pIC0+XG4gICAgICBpZiBiYWQgeCB8fCBNb2RzLlN0cmluZ01hcC5tZW0geCBtYXAgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiTGFiZWwgJ1wiIF4geCBeIFwiJyBhbHJlYWR5IGRlZmluZWRcIiwgcG9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgTW9kcy5TdHJpbmdNYXAuZW1wdHkgYVxuXG5sZXQgY3JlYXRlID9mb3JiaWRkZW4gYSA9XG4gIHtcbiAgICBkZWNscyA9IEFycmF5Lm1hcCAoZnVuICgoeCwgXyksIHkpIC0+IHgsIHkpIGE7XG4gICAgZmluZGVyID0gbmFtZV9tYXBfb2ZfYXJyYXkgP2ZvcmJpZGRlbiBhO1xuICB9XG5cbmxldCBjcmVhdGVfZnJvbV9saXN0ID9mb3JiaWRkZW4gbCA9IGNyZWF0ZSA/Zm9yYmlkZGVuIChBcnJheS5vZl9saXN0IGwpXG5cbigqIFRPRE8gc2VlIGlmIHdlIHNob3VsZCBrZWVwIHRoaXMgKilcbmxldCBjcmVhdGVfbm9fbG9jID9mb3JiaWRkZW4gYSA9XG4gIEFycmF5Lm1hcCAoZnVuICh4LCB5KSAtPiAoeCwgTG9jLmR1bW15KSwgeSkgYSB8PiBjcmVhdGUgP2ZvcmJpZGRlblxuXG5sZXQgc2l6ZSBuZCA9IEFycmF5Lmxlbmd0aCBuZC5kZWNsc1xubGV0IGVsdF9uYW1lIG5kIGkgPSBmc3QgbmQuZGVjbHMuKGkpXG5cbmxldCBlbHRfaWQgPyhraW5kID0gXCJlbGVtZW50XCIpIG5kIChzLCBwb3MpID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gcyBuZC5maW5kZXIgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIlxcXCIlc1xcXCIgaXMgbm90IGEgZGVjbGFyZWQgJXMuXCIgcyBraW5kLCBwb3MpKVxuXG5sZXQgcHJpbnQgfnNlcCBwcCBmIG5kID1cbiAgUHAuYXJyYXkgc2VwIChmdW4gaSBmIChuLCBlbCkgLT4gcHAgaSBuIGYgZWwpIGYgbmQuZGVjbHNcblxubGV0IGRlYnVnX3ByaW50IHByIGYgbmQgPVxuICBwcmludCB+c2VwOlBwLnNwYWNlXG4gICAgKGZ1biBpIG4gZiBlbCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslaT4lczogQFs8Mj4lYUBdQF1cIiBpIG4gcHIgZWwpXG4gICAgZiBuZFxuXG5sZXQgZm9sZCBmIGFjYyBuZCA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIGFjYyAobmEsIHgpIC0+IGYgaSBuYSBhY2MgeCkgYWNjIG5kLmRlY2xzXG5cbmxldCBtYXAgZiBuZCA9XG4gIHsgZGVjbHMgPSBBcnJheS5tYXAgKGZ1biAocywgdikgLT4gcywgZiBzIHYpIG5kLmRlY2xzOyBmaW5kZXIgPSBuZC5maW5kZXIgfVxuXG5sZXQgbWFwaSBmIG5kID1cbiAge1xuICAgIGRlY2xzID0gQXJyYXkubWFwaSAoZnVuIGkgKHMsIHYpIC0+IHMsIGYgaSBzIHYpIG5kLmRlY2xzO1xuICAgIGZpbmRlciA9IG5kLmZpbmRlcjtcbiAgfVxuXG5sZXQgZWx0X3ZhbCBuZCBpID0gc25kIG5kLmRlY2xzLihpKVxuXG5sZXQgdG9fanNvbiBhdXggbmQgPVxuICBgTGlzdFxuICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoeCwgYSkgYWNjIC0+IGBBc3NvYyBbIFwibmFtZVwiLCBgU3RyaW5nIHg7IFwiZGVjbFwiLCBhdXggYSBdIDo6IGFjYylcbiAgICAgICBuZC5kZWNscyBbXSlcblxubGV0IG9mX2pzb24gYXV4ID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+XG4gICAgbGV0IGRlY2xzID1cbiAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYEFzc29jIFsgKFwibmFtZVwiLCBgU3RyaW5nIHgpOyAoXCJkZWNsXCIsIGEpIF1cbiAgICAgICAgICB8IGBBc3NvYyBbIChcImRlY2xcIiwgYSk7IChcIm5hbWVcIiwgYFN0cmluZyB4KSBdIC0+XG4gICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCBhdXggYVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgdmFsaWQgTmFtZWREZWNsIGVsZW1lbnRcIiwgeCkpKVxuICAgICAgICBsXG4gICAgaW5cbiAgICBjcmVhdGUgZGVjbHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHZhbGlkIE5hbWVkRGVjbFwiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCByZW1vdmVfc3VmZml4X2FmdGVyX2xhc3Rfb2NjdXJyZW5jZSBwIGxpc3QgPVxuICBsZXQgcmVjIGF1eCBsaXN0IGJ1ZmZlciBvdXRwdXQgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgaCA6OiB0IHdoZW4gcCBoIC0+IGF1eCB0IFtdICgoaCA6OiBidWZmZXIpIDo6IG91dHB1dClcbiAgICB8IGggOjogdCAtPiBhdXggdCAoaCA6OiBidWZmZXIpIG91dHB1dFxuICAgIHwgW10gLT4gb3V0cHV0XG4gIGluXG4gIGxldCByZXZfY29uY2F0IGxpc3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCAoZnVuIG91dHB1dCBhIC0+IGEgOjogb3V0cHV0KSkgW10gbGlzdFxuICBpblxuICByZXZfY29uY2F0IChhdXggbGlzdCBbXSBbXSlcblxubGV0IHJlYyBsYXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcImxpc3RfbGFzdFwiXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogbCAtPiBsYXN0IGxcblxubGV0IHJlYyBhdXhfcG9wX2xhc3QgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcImxpc3RfcG9wX2xhc3RcIlxuICB8IFsgeCBdIC0+IExpc3QucmV2IGFjYywgeFxuICB8IGggOjogdCAtPiBhdXhfcG9wX2xhc3QgKGggOjogYWNjKSB0XG5cbmxldCBwb3BfbGFzdCBsID0gYXV4X3BvcF9sYXN0IFtdIGxcblxubGV0IGNvbnNfb3B0aW9uIGggdCA9XG4gIG1hdGNoIGggd2l0aFxuICB8IFNvbWUgeCAtPiB4IDo6IHRcbiAgfCBOb25lIC0+IHRcblxubGV0IHJlYyBzbWFydF9maWx0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgdCA6OiBxIGFzIGwgLT5cbiAgICBsZXQgcScgPSBzbWFydF9maWx0ZXIgZiBxIGluXG4gICAgaWYgZiB0IHRoZW5cbiAgICAgIGlmIHEgPT0gcScgdGhlblxuICAgICAgICBsXG4gICAgICBlbHNlXG4gICAgICAgIHQgOjogcSdcbiAgICBlbHNlXG4gICAgICBxJ1xuICB8IGwgLT4gbFxuXG5sZXQgcmVjIHNtYXJ0X21hcCBmID0gZnVuY3Rpb25cbiAgfCB0IDo6IHEgYXMgbCAtPlxuICAgIGxldCBxJyA9IHNtYXJ0X21hcCBmIHEgaW5cbiAgICBsZXQgdCcgPSBmIHQgaW5cbiAgICBpZiB0JyA9PSB0ICYmIHEnID09IHEgdGhlblxuICAgICAgbFxuICAgIGVsc2VcbiAgICAgIHQnIDo6IHEnXG4gIHwgbCAtPiBsXG5cbmxldCByZXZfbWFwaSBmIGwgPVxuICBsZXQgcmVjIGF1eF9tYXBpIGkgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaCA6OiBxIC0+IGF1eF9tYXBpIChwcmVkIGkpIChmIGkgaCA6OiBhY2MpIHFcbiAgaW5cbiAgYXV4X21hcGkgKExpc3QubGVuZ3RoIGwgLSAxKSBbXSBsXG5cbmxldCByZWMgbWFwX29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IGggOjogcSAtPiBjb25zX29wdGlvbiAoZiBoKSAobWFwX29wdGlvbiBmIHEpXG5cbmxldCBleGlzdHNfdW5pcSBmIGwgPVxuICBsZXQgcmVjIHNlY29uZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoIDo6IHQgLT4gKG5vdCAoZiBoKSkgJiYgc2Vjb25kIHRcbiAgaW5cbiAgbGV0IHJlYyBmaXJzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZiBmIGggdGhlblxuICAgICAgICBzZWNvbmQgdFxuICAgICAgZWxzZVxuICAgICAgICBmaXJzdCB0XG4gIGluXG4gIGZpcnN0IGxcblxubGV0IG1lcmdlX3VuaXEgY21wIGwxIGwyID1cbiAgbGV0IHJlYyBhdXhfbWVyZ2VfdW5pcSBsMSBsMiBrID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIF8gLT4gayBsMlxuICAgIHwgXywgW10gLT4gayBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICBhdXhfbWVyZ2VfdW5pcSB0MSBsMiAoZnVuIG8gLT5cbiAgICAgICAgICAgIGlmIG8gPT0gdDEgdGhlblxuICAgICAgICAgICAgICBrIGwxXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGsgKGgxIDo6IG8pKVxuICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIGwxIHQyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MiB0aGVuXG4gICAgICAgICAgICAgIGsgbDJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDIgOjogbykpXG4gICAgICBlbHNlXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIHQxIHQyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MSB0aGVuXG4gICAgICAgICAgICAgIGsgbDFcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDEgOjogbykpXG4gIGluXG4gIGF1eF9tZXJnZV91bmlxIGwxIGwyIChmdW4geCAtPiB4KVxuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGYgbCBhY2MgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgZiB0IChmIGggOjogYWNjKVxuXG5sZXQgcmVjIG1hcF9mbGF0dGVuIGYgPSBmdW5jdGlvblxuICAoKiBsaXN0X2JpbmQgKilcbiAgfCBbXSAtPiBbXVxuICB8IGggOjogdCAtPiBMaXN0LmFwcGVuZCAoZiBoKSAobWFwX2ZsYXR0ZW4gZiB0KVxuKCogTGlzdC5yZXZcbiAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiBMaXN0LnJldl9hcHBlbmQgeSB4KSBbXSAoTGlzdC5yZXZfbWFwIGYgbCkpXG4qKVxuXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2RvdWJsZSBsID1cbiAgbGV0IHJlYyBhdXggbGFzdCBsIGFjYyA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBoIDo6IHEgd2hlbiBsYXN0ID0gaCAtPiBhdXggbGFzdCBxIGFjY1xuICAgIHwgaCA6OiBxIC0+IGF1eCBoIHEgKGggOjogYWNjKVxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiBxIC0+IGF1eCBoIHEgWyBoIF1cblxubGV0IHJlYyBmb2xkX3JpZ2h0X21hcCBmIGwgeCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdLCB4XG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0IHQnLCB4JyA9IGZvbGRfcmlnaHRfbWFwIGYgdCB4IGluXG4gICAgbGV0IGgnLCB4JycgPSBmIGggeCcgaW5cbiAgICBoJyA6OiB0JywgeCcnXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIHggbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB4XG4gIHwgW10sIF8gOjogXyB8IF8gOjogXywgW10gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJsaXN0X2ZvbGRfbGVmdDJcIilcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT4gZm9sZF9sZWZ0MiBmIChmIHggaDEgaDIpIHQxIHQyXG5cbmxldCByYW5kb20gcnMgbCA9IExpc3QubnRoIGwgKFJhbmRvbS5TdGF0ZS5pbnQgcnMgKExpc3QubGVuZ3RoIGwpKVxuXG5sZXQgZmluZF9vcHRpb24gKHAgOiAnYSAtPiBib29sKSAobCA6ICdhIGxpc3QpIDogJ2Egb3B0aW9uID1cbiAgdHJ5IFNvbWUgKExpc3QuZmluZCBwIGwpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoICQkICkgPSBjb25zX29wdGlvblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGJhZzogaW50IE1vZHMuRHluQXJyYXkudDtcbiAgbXV0YWJsZSBzaXplOiBpbnQ7XG4gIGRpY3Q6IChpbnQsIGludCkgSGFzaHRibC50O1xufVxuXG5sZXQgY3JlYXRlIHNpemUgPVxuICB7IHNpemUgPSAwOyBiYWcgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSBzaXplICgtMSk7IGRpY3QgPSBIYXNodGJsLmNyZWF0ZSBzaXplIH1cblxubGV0IHByaW50IGYgcyA9XG4gIGlmIHMuc2l6ZSA8PSAwIHRoZW5cbiAgICBQcC5lbXB0eV9zZXQgZlxuICBlbHNlIChcbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJ7IFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBpID0gMCB0byBzLnNpemUgLSAyIGRvXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZiAoTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgaSk7XG4gICAgICAgIFBwLmNvbW1hIGZcbiAgICAgIGRvbmVcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9pbnQgZiAoTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgKHMuc2l6ZSAtIDEpKSBpblxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB9XCJcbiAgKVxuXG5sZXQgaXNfZW1wdHkgcyA9IHMuc2l6ZSA9IDBcblxubGV0IGFkZCB4IHMgPVxuICBpZiBub3QgKEhhc2h0YmwubWVtIHMuZGljdCB4KSB0aGVuIChcbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBzLmJhZyBzLnNpemUgeCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBzLmRpY3QgeCBzLnNpemUgaW5cbiAgICBzLnNpemUgPC0gc3VjYyBzLnNpemVcbiAgKVxuXG5sZXQgcmVtb3ZlIHggcyA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBIYXNodGJsLmZpbmQgcy5kaWN0IHggaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlbW92ZSBzLmRpY3QgeCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwb3MgPCBzLnNpemUgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgbGFzdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIChzLnNpemUgLSAxKSBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2Ugcy5kaWN0IGxhc3QgcG9zIGluXG4gICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHMuYmFnIHBvcyBsYXN0XG4gICAgICApXG4gICAgaW5cbiAgICBzLnNpemUgPC0gcHJlZCBzLnNpemVcbiAgd2l0aCBOb3RfZm91bmQgLT4gKClcblxubGV0IHNpemUgcyA9IHMuc2l6ZVxuXG5sZXQgcmFuZG9tIHJzIHMgPVxuICBpZiBzLnNpemUgPCAxIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyAoUmFuZG9tLlN0YXRlLmludCBycyBzLnNpemUpKVxuXG5sZXQgZm9sZCBmIHMgYWNjID1cbiAgVG9vbHMucmVjdGkgKGZ1biBhY2MgaSAtPiBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyBpKSBhY2MpIGFjYyBzLnNpemVcblxubGV0IG1lbSB4IHMgPSBIYXNodGJsLm1lbSBzLmRpY3QgeFxuIiwidHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG5sZXQgY3JlYXRlIF9pIF9kZWZhdWx0ID0gW11cbmxldCBhZGQgeCB0ID0geCA6OiB0XG5sZXQgaXRlciBmIHQgPSBMaXN0Lml0ZXIgZiAoTGlzdC5yZXYgdClcbmxldCBjbGVhbiBfID0gW11cbiIsIm1vZHVsZSB0eXBlIEhhc2ggPSBzaWdcbiAgdHlwZSBoYXNoZWRfbGlzdFxuICB0eXBlIGVsdFxuICB0eXBlIGNhY2hlXG5cbiAgdmFsIGludF9vZl9oYXNoZWRfbGlzdCA6IGhhc2hlZF9saXN0IC0+IGludFxuICB2YWwgY29tcGFyZSA6IGhhc2hlZF9saXN0IC0+IGhhc2hlZF9saXN0IC0+IGludFxuICB2YWwgaW5pdCA6IHVuaXQgLT4gY2FjaGVcbiAgdmFsIGhhc2ggOiBjYWNoZSAtPiBlbHQgbGlzdCAtPiBjYWNoZSAqIGhhc2hlZF9saXN0XG4gIHZhbCBjb25zIDogY2FjaGUgLT4gZWx0IC0+IGhhc2hlZF9saXN0IC0+IGNhY2hlICogaGFzaGVkX2xpc3RcbiAgdmFsIGVtcHR5IDogaGFzaGVkX2xpc3RcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiBoYXNoZWRfbGlzdCAtPiB1bml0XG4gIHZhbCBwcmludF9jYWNoZSA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gY2FjaGUgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBNYWtlID1cbmZ1bmN0b3JcbiAgKEEgOiBTZXRNYXAuT3JkZXJlZFR5cGUpXG4gIC0+XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gQS50XG4gICAgdHlwZSBlbHRfaWQgPSBpbnRcbiAgICB0eXBlIGhhc2hlZF9saXN0ID0gaW50XG5cbiAgICBsZXQgaW50X29mX2hhc2hlZF9saXN0IChoIDogaGFzaGVkX2xpc3QpIDogaW50ID0gaFxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gICAgbW9kdWxlIFNldE1hcCA9IFNldE1hcC5NYWtlIChBKVxuXG4gICAgdHlwZSBjYWNoZSA9IHtcbiAgICAgIGRpY3Rpb25hcnk6IGVsdF9pZCBTZXRNYXAuTWFwLnQ7XG4gICAgICBuZXh0X2VsdF9pZDogZWx0X2lkO1xuICAgICAgY29uczogaGFzaGVkX2xpc3Qgb3B0aW9uIE1vZHMuRHluQXJyYXkudCBvcHRpb24gTW9kcy5EeW5BcnJheS50O1xuICAgICAgbmV4dF9saXN0X2lkOiBoYXNoZWRfbGlzdDtcbiAgICB9XG5cbiAgICBsZXQgZnN0X2VsdF9pZCA9IDFcbiAgICBsZXQgbmV4dF9lbHRfaWQgPSBzdWNjXG5cbiAgICBsZXQgZnJlc2hfZWx0X2lkIGNhY2hlID1cbiAgICAgICggY2FjaGUubmV4dF9lbHRfaWQsXG4gICAgICAgIHsgY2FjaGUgd2l0aCBuZXh0X2VsdF9pZCA9IG5leHRfZWx0X2lkIGNhY2hlLm5leHRfZWx0X2lkIH0gKVxuXG4gICAgbGV0IGZzdF9saXN0X2lkID0gMVxuICAgIGxldCBuZXh0X2xpc3RfaWQgPSBzdWNjXG5cbiAgICBsZXQgZnJlc2hfbGlzdF9pZCBjYWNoZSA9XG4gICAgICAoIHsgY2FjaGUgd2l0aCBuZXh0X2xpc3RfaWQgPSBuZXh0X2xpc3RfaWQgY2FjaGUubmV4dF9saXN0X2lkIH0sXG4gICAgICAgIGNhY2hlLm5leHRfbGlzdF9pZCApXG5cbiAgICBsZXQgaW5pdCAoKSA9XG4gICAgICB7XG4gICAgICAgIGRpY3Rpb25hcnkgPSBTZXRNYXAuTWFwLmVtcHR5O1xuICAgICAgICBuZXh0X2VsdF9pZCA9IGZzdF9lbHRfaWQ7XG4gICAgICAgIGNvbnMgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSAwIE5vbmU7XG4gICAgICAgIG5leHRfbGlzdF9pZCA9IGZzdF9saXN0X2lkO1xuICAgICAgfVxuXG4gICAgbGV0IGVtcHR5ID0gMFxuXG4gICAgbGV0IGhhc2hfZWx0IGNhY2hlIGVsdCA9XG4gICAgICBtYXRjaCBTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIGVsdCBjYWNoZS5kaWN0aW9uYXJ5IHdpdGhcbiAgICAgIHwgU29tZSBpIC0+IGNhY2hlLCBpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGlkLCBjYWNoZSA9IGZyZXNoX2VsdF9pZCBjYWNoZSBpblxuICAgICAgICB7IGNhY2hlIHdpdGggZGljdGlvbmFyeSA9IFNldE1hcC5NYXAuYWRkIGVsdCBpZCBjYWNoZS5kaWN0aW9uYXJ5IH0sIGlkXG5cbiAgICBsZXQgY29ucyBjYWNoZSBoZWFkIHRhaWwgPVxuICAgICAgbGV0IGNhY2hlLCBoYXNoX2hlYWQgPSBoYXNoX2VsdCBjYWNoZSBoZWFkIGluXG4gICAgICBsZXQgc3VidGFiID1cbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgY2FjaGUuY29ucyBoYXNoX2hlYWQgd2l0aFxuICAgICAgICB8IFNvbWUgc3VidGFiIC0+IHN1YnRhYlxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgc3VidGFiID0gTW9kcy5EeW5BcnJheS5jcmVhdGUgMCBOb25lIGluXG4gICAgICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2FjaGUuY29ucyBoYXNoX2hlYWQgKFNvbWUgc3VidGFiKSBpblxuICAgICAgICAgIHN1YnRhYlxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHN1YnRhYiB0YWlsIHdpdGhcbiAgICAgIHwgU29tZSBoYXNoIC0+IGNhY2hlLCBoYXNoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGNhY2hlLCBoYXNoID0gZnJlc2hfbGlzdF9pZCBjYWNoZSBpblxuICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBzdWJ0YWIgdGFpbCAoU29tZSBoYXNoKSBpblxuICAgICAgICBjYWNoZSwgaGFzaFxuXG4gICAgbGV0IHJlYyBoYXNoIGNhY2hlIGxpc3QgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGNhY2hlLCBlbXB0eVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IGNhY2hlLCB0ID0gaGFzaCBjYWNoZSB0IGluXG4gICAgICAgIGNvbnMgY2FjaGUgaCB0XG5cbiAgICBsZXQgcHJpbnQgZm9ybWF0dGVyID0gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiJWlcIlxuXG4gICAgbGV0IHByaW50X2NhY2hlIGZvcm1hdHRlciBjYWNoZSA9XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXJcbiAgICAgICAgICBcIkNhY2hlXFxuIG5leHRfZnJlc2hfbGlzdF9pZDogJWk7IG5leHRfZnJlc2hfZWx0X2lkOiAlaVxcblwiXG4gICAgICAgICAgY2FjaGUubmV4dF9saXN0X2lkIGNhY2hlLm5leHRfZWx0X2lkXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgU2V0TWFwLk1hcC5pdGVyXG4gICAgICAgICAgKGZ1biBhIGkgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiRElDOiVhOiVpXFxuXCIgQS5wcmludCBhIGkpXG4gICAgICAgICAgY2FjaGUuZGljdGlvbmFyeVxuICAgICAgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBhIG9wdCAtPlxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG9wdCAtPlxuICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAgICAgICAoZnVuIGIgayAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGsgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgU29tZSBrIC0+IEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiglaSwlaSktPiVpIFxcblwiIGEgYiBrKVxuICAgICAgICAgICAgICBvcHQpXG4gICAgICAgIGNhY2hlLmNvbnNcbiAgZW5kXG4iLCJ0eXBlIHQgPSB7IG51bTogaW50OyBkZW46IGludCB9XG5cbmxldCBzaWduIGYgPVxuICBpZiBmLm51bSA9IDAgdGhlblxuICAgIHsgbnVtID0gMDsgZGVuID0gMSB9XG4gIGVsc2UgaWYgZi5kZW4gPCAwIHRoZW5cbiAgICB7IG51bSA9IC1mLm51bTsgZGVuID0gLWYuZGVuIH1cbiAgZWxzZVxuICAgIGZcblxubGV0IHNpbXBsaWZ5IGYgPVxuICBsZXQgZ2NkID0gVG9vbHMuZ2NkXzIgZi5udW0gZi5kZW4gaW5cbiAgc2lnbiB7IG51bSA9IGYubnVtIC8gZ2NkOyBkZW4gPSBmLmRlbiAvIGdjZCB9XG5cbmxldCBhZGQgYSBiID1cbiAgc2ltcGxpZnkgeyBudW0gPSAoYS5udW0gKiBiLmRlbikgKyAoYi5udW0gKiBhLmRlbik7IGRlbiA9IGIuZGVuICogYS5kZW4gfVxuXG5sZXQgb3AgZiA9IHsgZiB3aXRoIG51bSA9IC1mLm51bSB9XG5sZXQgc3ViIGEgYiA9IGFkZCBhIChvcCBiKVxubGV0IG11bHQgYSBiID0gc2ltcGxpZnkgeyBudW0gPSBhLm51bSAqIGIubnVtOyBkZW4gPSBhLmRlbiAqIGIuZGVuIH1cblxubGV0IGludiBhID1cbiAgaWYgYS5udW0gPSAwIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIHsgbnVtID0gYS5kZW47IGRlbiA9IGEubnVtIH1cblxubGV0IGRpdiBhIGIgPVxuICBtYXRjaCBpbnYgYiB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBiX2ludiAtPiBTb21lIChtdWx0IGEgYl9pbnYpXG5cbmxldCB6ZXJvID0geyBudW0gPSAwOyBkZW4gPSAxIH1cbmxldCBpc19lcXVhbCBhIGIgPSBhID0gYlxubGV0IG9mX2ludCBpID0gc2ltcGxpZnkgeyBudW0gPSBpOyBkZW4gPSAxIH1cbmxldCBpc196ZXJvIGEgPSBhLm51bSA9IDBcbmxldCBvbmUgPSBvZl9pbnQgMVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyB3YWl0aW5nX2VsdHM6ICdhIGxpc3Q7IGxpc3Q6ICdhIGxpc3QgfVxuXG5sZXQgZW1wdHkgPSB7IHdhaXRpbmdfZWx0cyA9IFtdOyBsaXN0ID0gW10gfVxubGV0IGlzX2VtcHR5IHQgPSB0LndhaXRpbmdfZWx0cyA9IFtdICYmIHQubGlzdCA9IFtdXG5sZXQgcHVzaCBhIHQgPSB7IHQgd2l0aCB3YWl0aW5nX2VsdHMgPSBhIDo6IHQud2FpdGluZ19lbHRzIH1cblxubGV0IHJlYyBwb3AgdCA9XG4gIG1hdGNoIHQubGlzdCB3aXRoXG4gIHwgaGVhZCA6OiB0YWlsIC0+IHsgdCB3aXRoIGxpc3QgPSB0YWlsIH0sIFNvbWUgaGVhZFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQud2FpdGluZ19lbHRzIHdpdGhcbiAgICB8IFtdIC0+IHQsIE5vbmVcbiAgICB8IGxpc3QgLT4gcG9wIHsgd2FpdGluZ19lbHRzID0gW107IGxpc3QgPSBMaXN0LnJldiBsaXN0IH0pXG4iLCIoKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEpvbmF0aGFuIERlcnF1ZSAtIE1JVCBsaWNlbnNlZCAqKVxuXG5sZXQgKCAmJiYgKSA9IEludDMyLmxvZ2FuZFxubGV0ICggXl5eICkgPSBJbnQzMi5sb2d4b3JcbmxldCAoID4+PiApID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuXG5sZXQgY3JjX3RhYmxlID1cbiAgW3xcbiAgICAweDAwMDAwMDAwbDtcbiAgICAweDc3MDczMDk2bDtcbiAgICAweGVlMGU2MTJjbDtcbiAgICAweDk5MDk1MWJhbDtcbiAgICAweDA3NmRjNDE5bDtcbiAgICAweDcwNmFmNDhmbDtcbiAgICAweGU5NjNhNTM1bDtcbiAgICAweDllNjQ5NWEzbDtcbiAgICAweDBlZGI4ODMybDtcbiAgICAweDc5ZGNiOGE0bDtcbiAgICAweGUwZDVlOTFlbDtcbiAgICAweDk3ZDJkOTg4bDtcbiAgICAweDA5YjY0YzJibDtcbiAgICAweDdlYjE3Y2JkbDtcbiAgICAweGU3YjgyZDA3bDtcbiAgICAweDkwYmYxZDkxbDtcbiAgICAweDFkYjcxMDY0bDtcbiAgICAweDZhYjAyMGYybDtcbiAgICAweGYzYjk3MTQ4bDtcbiAgICAweDg0YmU0MWRlbDtcbiAgICAweDFhZGFkNDdkbDtcbiAgICAweDZkZGRlNGVibDtcbiAgICAweGY0ZDRiNTUxbDtcbiAgICAweDgzZDM4NWM3bDtcbiAgICAweDEzNmM5ODU2bDtcbiAgICAweDY0NmJhOGMwbDtcbiAgICAweGZkNjJmOTdhbDtcbiAgICAweDhhNjVjOWVjbDtcbiAgICAweDE0MDE1YzRmbDtcbiAgICAweDYzMDY2Y2Q5bDtcbiAgICAweGZhMGYzZDYzbDtcbiAgICAweDhkMDgwZGY1bDtcbiAgICAweDNiNmUyMGM4bDtcbiAgICAweDRjNjkxMDVlbDtcbiAgICAweGQ1NjA0MWU0bDtcbiAgICAweGEyNjc3MTcybDtcbiAgICAweDNjMDNlNGQxbDtcbiAgICAweDRiMDRkNDQ3bDtcbiAgICAweGQyMGQ4NWZkbDtcbiAgICAweGE1MGFiNTZibDtcbiAgICAweDM1YjVhOGZhbDtcbiAgICAweDQyYjI5ODZjbDtcbiAgICAweGRiYmJjOWQ2bDtcbiAgICAweGFjYmNmOTQwbDtcbiAgICAweDMyZDg2Y2UzbDtcbiAgICAweDQ1ZGY1Yzc1bDtcbiAgICAweGRjZDYwZGNmbDtcbiAgICAweGFiZDEzZDU5bDtcbiAgICAweDI2ZDkzMGFjbDtcbiAgICAweDUxZGUwMDNhbDtcbiAgICAweGM4ZDc1MTgwbDtcbiAgICAweGJmZDA2MTE2bDtcbiAgICAweDIxYjRmNGI1bDtcbiAgICAweDU2YjNjNDIzbDtcbiAgICAweGNmYmE5NTk5bDtcbiAgICAweGI4YmRhNTBmbDtcbiAgICAweDI4MDJiODllbDtcbiAgICAweDVmMDU4ODA4bDtcbiAgICAweGM2MGNkOWIybDtcbiAgICAweGIxMGJlOTI0bDtcbiAgICAweDJmNmY3Yzg3bDtcbiAgICAweDU4Njg0YzExbDtcbiAgICAweGMxNjExZGFibDtcbiAgICAweGI2NjYyZDNkbDtcbiAgICAweDc2ZGM0MTkwbDtcbiAgICAweDAxZGI3MTA2bDtcbiAgICAweDk4ZDIyMGJjbDtcbiAgICAweGVmZDUxMDJhbDtcbiAgICAweDcxYjE4NTg5bDtcbiAgICAweDA2YjZiNTFmbDtcbiAgICAweDlmYmZlNGE1bDtcbiAgICAweGU4YjhkNDMzbDtcbiAgICAweDc4MDdjOWEybDtcbiAgICAweDBmMDBmOTM0bDtcbiAgICAweDk2MDlhODhlbDtcbiAgICAweGUxMGU5ODE4bDtcbiAgICAweDdmNmEwZGJibDtcbiAgICAweDA4NmQzZDJkbDtcbiAgICAweDkxNjQ2Yzk3bDtcbiAgICAweGU2NjM1YzAxbDtcbiAgICAweDZiNmI1MWY0bDtcbiAgICAweDFjNmM2MTYybDtcbiAgICAweDg1NjUzMGQ4bDtcbiAgICAweGYyNjIwMDRlbDtcbiAgICAweDZjMDY5NWVkbDtcbiAgICAweDFiMDFhNTdibDtcbiAgICAweDgyMDhmNGMxbDtcbiAgICAweGY1MGZjNDU3bDtcbiAgICAweDY1YjBkOWM2bDtcbiAgICAweDEyYjdlOTUwbDtcbiAgICAweDhiYmViOGVhbDtcbiAgICAweGZjYjk4ODdjbDtcbiAgICAweDYyZGQxZGRmbDtcbiAgICAweDE1ZGEyZDQ5bDtcbiAgICAweDhjZDM3Y2YzbDtcbiAgICAweGZiZDQ0YzY1bDtcbiAgICAweDRkYjI2MTU4bDtcbiAgICAweDNhYjU1MWNlbDtcbiAgICAweGEzYmMwMDc0bDtcbiAgICAweGQ0YmIzMGUybDtcbiAgICAweDRhZGZhNTQxbDtcbiAgICAweDNkZDg5NWQ3bDtcbiAgICAweGE0ZDFjNDZkbDtcbiAgICAweGQzZDZmNGZibDtcbiAgICAweDQzNjllOTZhbDtcbiAgICAweDM0NmVkOWZjbDtcbiAgICAweGFkNjc4ODQ2bDtcbiAgICAweGRhNjBiOGQwbDtcbiAgICAweDQ0MDQyZDczbDtcbiAgICAweDMzMDMxZGU1bDtcbiAgICAweGFhMGE0YzVmbDtcbiAgICAweGRkMGQ3Y2M5bDtcbiAgICAweDUwMDU3MTNjbDtcbiAgICAweDI3MDI0MWFhbDtcbiAgICAweGJlMGIxMDEwbDtcbiAgICAweGM5MGMyMDg2bDtcbiAgICAweDU3NjhiNTI1bDtcbiAgICAweDIwNmY4NWIzbDtcbiAgICAweGI5NjZkNDA5bDtcbiAgICAweGNlNjFlNDlmbDtcbiAgICAweDVlZGVmOTBlbDtcbiAgICAweDI5ZDljOTk4bDtcbiAgICAweGIwZDA5ODIybDtcbiAgICAweGM3ZDdhOGI0bDtcbiAgICAweDU5YjMzZDE3bDtcbiAgICAweDJlYjQwZDgxbDtcbiAgICAweGI3YmQ1YzNibDtcbiAgICAweGMwYmE2Y2FkbDtcbiAgICAweGVkYjg4MzIwbDtcbiAgICAweDlhYmZiM2I2bDtcbiAgICAweDAzYjZlMjBjbDtcbiAgICAweDc0YjFkMjlhbDtcbiAgICAweGVhZDU0NzM5bDtcbiAgICAweDlkZDI3N2FmbDtcbiAgICAweDA0ZGIyNjE1bDtcbiAgICAweDczZGMxNjgzbDtcbiAgICAweGUzNjMwYjEybDtcbiAgICAweDk0NjQzYjg0bDtcbiAgICAweDBkNmQ2YTNlbDtcbiAgICAweDdhNmE1YWE4bDtcbiAgICAweGU0MGVjZjBibDtcbiAgICAweDkzMDlmZjlkbDtcbiAgICAweDBhMDBhZTI3bDtcbiAgICAweDdkMDc5ZWIxbDtcbiAgICAweGYwMGY5MzQ0bDtcbiAgICAweDg3MDhhM2QybDtcbiAgICAweDFlMDFmMjY4bDtcbiAgICAweDY5MDZjMmZlbDtcbiAgICAweGY3NjI1NzVkbDtcbiAgICAweDgwNjU2N2NibDtcbiAgICAweDE5NmMzNjcxbDtcbiAgICAweDZlNmIwNmU3bDtcbiAgICAweGZlZDQxYjc2bDtcbiAgICAweDg5ZDMyYmUwbDtcbiAgICAweDEwZGE3YTVhbDtcbiAgICAweDY3ZGQ0YWNjbDtcbiAgICAweGY5YjlkZjZmbDtcbiAgICAweDhlYmVlZmY5bDtcbiAgICAweDE3YjdiZTQzbDtcbiAgICAweDYwYjA4ZWQ1bDtcbiAgICAweGQ2ZDZhM2U4bDtcbiAgICAweGExZDE5MzdlbDtcbiAgICAweDM4ZDhjMmM0bDtcbiAgICAweDRmZGZmMjUybDtcbiAgICAweGQxYmI2N2YxbDtcbiAgICAweGE2YmM1NzY3bDtcbiAgICAweDNmYjUwNmRkbDtcbiAgICAweDQ4YjIzNjRibDtcbiAgICAweGQ4MGQyYmRhbDtcbiAgICAweGFmMGExYjRjbDtcbiAgICAweDM2MDM0YWY2bDtcbiAgICAweDQxMDQ3YTYwbDtcbiAgICAweGRmNjBlZmMzbDtcbiAgICAweGE4NjdkZjU1bDtcbiAgICAweDMxNmU4ZWVmbDtcbiAgICAweDQ2NjliZTc5bDtcbiAgICAweGNiNjFiMzhjbDtcbiAgICAweGJjNjY4MzFhbDtcbiAgICAweDI1NmZkMmEwbDtcbiAgICAweDUyNjhlMjM2bDtcbiAgICAweGNjMGM3Nzk1bDtcbiAgICAweGJiMGI0NzAzbDtcbiAgICAweDIyMDIxNmI5bDtcbiAgICAweDU1MDUyNjJmbDtcbiAgICAweGM1YmEzYmJlbDtcbiAgICAweGIyYmQwYjI4bDtcbiAgICAweDJiYjQ1YTkybDtcbiAgICAweDVjYjM2YTA0bDtcbiAgICAweGMyZDdmZmE3bDtcbiAgICAweGI1ZDBjZjMxbDtcbiAgICAweDJjZDk5ZThibDtcbiAgICAweDViZGVhZTFkbDtcbiAgICAweDliNjRjMmIwbDtcbiAgICAweGVjNjNmMjI2bDtcbiAgICAweDc1NmFhMzljbDtcbiAgICAweDAyNmQ5MzBhbDtcbiAgICAweDljMDkwNmE5bDtcbiAgICAweGViMGUzNjNmbDtcbiAgICAweDcyMDc2Nzg1bDtcbiAgICAweDA1MDA1NzEzbDtcbiAgICAweDk1YmY0YTgybDtcbiAgICAweGUyYjg3YTE0bDtcbiAgICAweDdiYjEyYmFlbDtcbiAgICAweDBjYjYxYjM4bDtcbiAgICAweDkyZDI4ZTlibDtcbiAgICAweGU1ZDViZTBkbDtcbiAgICAweDdjZGNlZmI3bDtcbiAgICAweDBiZGJkZjIxbDtcbiAgICAweDg2ZDNkMmQ0bDtcbiAgICAweGYxZDRlMjQybDtcbiAgICAweDY4ZGRiM2Y4bDtcbiAgICAweDFmZGE4MzZlbDtcbiAgICAweDgxYmUxNmNkbDtcbiAgICAweGY2YjkyNjVibDtcbiAgICAweDZmYjA3N2UxbDtcbiAgICAweDE4Yjc0Nzc3bDtcbiAgICAweDg4MDg1YWU2bDtcbiAgICAweGZmMGY2YTcwbDtcbiAgICAweDY2MDYzYmNhbDtcbiAgICAweDExMDEwYjVjbDtcbiAgICAweDhmNjU5ZWZmbDtcbiAgICAweGY4NjJhZTY5bDtcbiAgICAweDYxNmJmZmQzbDtcbiAgICAweDE2NmNjZjQ1bDtcbiAgICAweGEwMGFlMjc4bDtcbiAgICAweGQ3MGRkMmVlbDtcbiAgICAweDRlMDQ4MzU0bDtcbiAgICAweDM5MDNiM2MybDtcbiAgICAweGE3NjcyNjYxbDtcbiAgICAweGQwNjAxNmY3bDtcbiAgICAweDQ5Njk0NzRkbDtcbiAgICAweDNlNmU3N2RibDtcbiAgICAweGFlZDE2YTRhbDtcbiAgICAweGQ5ZDY1YWRjbDtcbiAgICAweDQwZGYwYjY2bDtcbiAgICAweDM3ZDgzYmYwbDtcbiAgICAweGE5YmNhZTUzbDtcbiAgICAweGRlYmI5ZWM1bDtcbiAgICAweDQ3YjJjZjdmbDtcbiAgICAweDMwYjVmZmU5bDtcbiAgICAweGJkYmRmMjFjbDtcbiAgICAweGNhYmFjMjhhbDtcbiAgICAweDUzYjM5MzMwbDtcbiAgICAweDI0YjRhM2E2bDtcbiAgICAweGJhZDAzNjA1bDtcbiAgICAweGNkZDcwNjkzbDtcbiAgICAweDU0ZGU1NzI5bDtcbiAgICAweDIzZDk2N2JmbDtcbiAgICAweGIzNjY3YTJlbDtcbiAgICAweGM0NjE0YWI4bDtcbiAgICAweDVkNjgxYjAybDtcbiAgICAweDJhNmYyYjk0bDtcbiAgICAweGI0MGJiZTM3bDtcbiAgICAweGMzMGM4ZWExbDtcbiAgICAweDVhMDVkZjFibDtcbiAgICAweDJkMDJlZjhkbDtcbiAgfF1cblxubGV0IHN0cmluZ19mb2xkX2xlZnQgZiBhY2Mgc3RyIG9mZnNldCBsZW5ndGggPVxuICBsZXQgYWNjX3IgPSByZWYgYWNjIGluXG4gIGZvciBpID0gb2Zmc2V0IHRvIG9mZnNldCArIGxlbmd0aCAtIDEgZG9cbiAgICBhY2NfciA6PSBmICFhY2NfciAoU3RyaW5nLmdldCBzdHIgaSlcbiAgZG9uZTtcbiAgIWFjY19yXG5cbigqbGV0IGJpZ3N0cmluZ19mb2xkX2xlZnQgZiBhY2Mgc3RyID1cbiAgbGV0IGFjY19yID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IDAgdG8gKEJpZ2FycmF5LkFycmF5MS5kaW0gc3RyKSAtIDEgZG9cbiAgICBhY2NfciA6PSBmICFhY2NfciBAQCBCaWdhcnJheS5BcnJheTEuZ2V0IHN0ciBpXG4gIGRvbmU7XG4gICFhY2NfclxuKilcbnR5cGUgdCA9IGludDMyXG5cbmxldCB1cGRhdGVfY3JjIGFjYyBjID1cbiAgbGV0IGluZGV4ID0gSW50MzIudG9faW50IChhY2MgXl5eIEludDMyLm9mX2ludCAoaW50X29mX2NoYXIgYykgJiYmIDB4ZmZsKSBpblxuICBjcmNfdGFibGUuKGluZGV4KSBeXl4gKGFjYyA+Pj4gOCkgJiYmIDB4ZmZmZmZmZmZsXG5cbmxldCBzdHJpbmcgPyhjcmMgPSAwbCkgc3RyIG9mZnNldCBsZW5ndGggPVxuICBzdHJpbmdfZm9sZF9sZWZ0IHVwZGF0ZV9jcmMgKGNyYyBeXl4gMHhmZmZmZmZmZmwpIHN0ciBvZmZzZXQgbGVuZ3RoXG4gIF5eXiAweGZmZmZmZmZmbFxuXG4oKmxldCBiaWdzdHJpbmcgPyhjcmM9MGwpIHN0ciA9XG4gIChiaWdzdHJpbmdfZm9sZF9sZWZ0IHVwZGF0ZV9jcmMgKGNyYyBeXl4gMHhmZmZmZmZmZmwpIHN0cikgXl5eIDB4ZmZmZmZmZmZsXG4qKVxuKCpcbmxldCBkaWdlc3QgKGNyYyA6IHQpID8ob2ZmID0gMCkgP2xlbiBidWYgPVxuICBsZXQgbGVuID0gbWF0Y2ggbGVuIHdpdGggU29tZSBsZW4gLT4gbGVuIHwgTm9uZSAtPiBDc3RydWN0LmxlbiBidWYgLSBvZmYgaW5cbiAgY3N0cnVjdCB+Y3JjOihjcmMgOj4gaW50MzIpIChDc3RydWN0LnN1YiBidWYgb2ZmIGxlbilcblxubGV0IGRpZ2VzdHYgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyB2IC0+IGRpZ2VzdCBhY2MgdilcblxubGV0IGRpZ2VzdGMgKGNyYyA6IHQpIGJ5dGUgPVxuICAodXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgKENoYXIuY2hyIGJ5dGUpKSBeXl4gMHhmZmZmZmZmZmxcblxubGV0IGRpZ2VzdHMgKGNyYyA6IHQpID8ob2ZmID0gMCkgP2xlbiBidWYgPVxuICBsZXQgbGVuID0gbWF0Y2ggbGVuIHdpdGggU29tZSBsZW4gLT4gbGVuIHwgTm9uZSAtPiBCeXRlcy5sZW5ndGggYnVmIC0gb2ZmIGluXG4gIGJ5dGVzIH5jcmM6KGNyYyA6PiBpbnQzMikgYnVmIG9mZiBsZW5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiB0IC0+IGludDMyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgcHAgcHBmIHYgPSBGbXQucGYgcHBmIFwiJTA0bHhcIiAodiA6PiBpbnQzMilcblxubGV0IGRlZmF1bHQgPSAwbFxuXG5sZXQgZXEgPSBJbnQzMi5lcXVhbFxubGV0IG5lcSBhIGIgPSBub3QgKGVxIGEgYilcbiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvbG9yID0gUmVkIHwgR3JleSB8IExpZ2h0Ymx1ZSB8IEJsYWNrXG5cbmxldCB0cmlwbGVfb2ZfY29sb3IgPSBmdW5jdGlvblxuICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgfCBMaWdodGJsdWUgLT4gMCwgMCwgMTI4XG4gIHwgQmxhY2sgLT4gMCwgMCwgMFxuIiwidHlwZSAnYSB0ID0ge1xuICBzaXplOiBpbnQ7XG4gIGRlZmF1bHQ6ICdhO1xuICBtdXRhYmxlIHN0YXJ0OiBpbnQ7XG4gIG11dGFibGUgZmluYWw6IGludDtcbiAgY29udGVudDogJ2EgYXJyYXk7XG59XG5cbmxldCBjcmVhdGUgaSBkZWZhdWx0ID1cbiAgbGV0IHNpemUgPSBtYXggaSAyIGluXG4gIHsgc2l6ZTsgZGVmYXVsdDsgc3RhcnQgPSAwOyBmaW5hbCA9IDA7IGNvbnRlbnQgPSBBcnJheS5tYWtlIHNpemUgZGVmYXVsdCB9XG5cbmxldCBzdWNjIGkgdCA9XG4gIGlmIGkgPSB0LnNpemUgLSAxIHRoZW5cbiAgICAwXG4gIGVsc2VcbiAgICBzdWNjIGlcblxubGV0IGZ1bGwgdCA9IHN1Y2MgdC5maW5hbCB0ID0gdC5zdGFydFxubGV0IGZyZWVfb25lIHQgPSB0LnN0YXJ0IDwtIHN1Y2MgdC5zdGFydCB0XG5cbmxldCBhZGQgeCB0ID1cbiAgbGV0ICgpID0gaWYgZnVsbCB0IHRoZW4gZnJlZV9vbmUgdCBpblxuICBsZXQgKCkgPSB0LmNvbnRlbnQuKHQuZmluYWwpIDwtIHggaW5cbiAgbGV0ICgpID0gdC5maW5hbCA8LSBzdWNjIHQuZmluYWwgdCBpblxuICB0XG5cbmxldCBpdGVyIGYgdCA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPD4gdC5maW5hbCB0aGVuIChcbiAgICAgIGxldCAoKSA9IGYgdC5jb250ZW50LihpKSBpblxuICAgICAgYXV4IChzdWNjIGkgdClcbiAgICApXG4gIGluXG4gIGF1eCB0LnN0YXJ0XG5cbmxldCBjbGVhbiB0ID1cbiAgbGV0IHJlYyBhdXggayA9XG4gICAgaWYgayA9IHQuc2l6ZSB0aGVuXG4gICAgICB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgKCkgPSB0LmNvbnRlbnQuKGspIDwtIHQuZGVmYXVsdCBpblxuICAgICAgYXV4IChrICsgMSlcbiAgICApXG4gIGluXG4gIGF1eCAwXG4iLCIoKipcbiAgKiBjYWNoZS5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI3LzAzLzIwMTJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjcvMDMvMjAxMlxuICAqICpcbiAgKlxuICAqIEl0IHVzZXMgaW1wZXJhdGl2ZSBzdHlsZXMgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBtb2R1bGVzXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIENhY2hlID0gc2lnXG4gIG1vZHVsZSBPIDogU2V0TWFwLk9yZGVyZWRUeXBlXG5cbiAgdHlwZSB0XG5cbiAgdmFsIGxhc3QgOiB0IC0+IE8udCBvcHRpb25cbiAgdmFsIGNyZWF0ZSA6IGludCBvcHRpb24gLT4gdFxuICB2YWwgYWRkIDogTy50IC0+IHQgLT4gdFxuICB2YWwgZm9sZCA6IChPLnQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGl0ZXIgOiAoTy50IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBDYWNoZSA9XG5mdW5jdG9yXG4gIChPTyA6IFNldE1hcC5PcmRlcmVkVHlwZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgbW9kdWxlIE8gPSBPT1xuICAgICAgbW9kdWxlIFNNID0gU2V0TWFwLk1ha2UgKE8pXG4gICAgICBtb2R1bGUgUyA9IFNNLlNldFxuXG4gICAgICB0eXBlIGZpbml0ZV9jYWNoZSA9IHtcbiAgICAgICAgc2l6ZTogaW50O1xuICAgICAgICBvZmZzZXQ6IGludDtcbiAgICAgICAgY2FjaGU6IE8udCBvcHRpb24gYXJyYXk7XG4gICAgICAgIGJhZzogUy50O1xuICAgICAgICBsYXN0OiBPLnQgb3B0aW9uO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlX2Zpbml0ZSBuID1cbiAgICAgICAge1xuICAgICAgICAgIHNpemUgPSBuO1xuICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgY2FjaGUgPSBBcnJheS5tYWtlIG4gTm9uZTtcbiAgICAgICAgICBiYWcgPSBTLmVtcHR5O1xuICAgICAgICAgIGxhc3QgPSBOb25lO1xuICAgICAgICB9XG5cbiAgICAgIGxldCBuZXh0IHQgPVxuICAgICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgaW5cbiAgICAgICAgaWYgb2Zmc2V0ID0gdC5zaXplIC0gMSB0aGVuXG4gICAgICAgICAgeyB0IHdpdGggb2Zmc2V0ID0gMCB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7IHQgd2l0aCBvZmZzZXQgPSBvZmZzZXQgKyAxIH1cblxuICAgICAgbGV0IGFkZF9maW5pdGUga2V5IHQgPVxuICAgICAgICBsZXQgdCA9IHsgdCB3aXRoIGxhc3QgPSBTb21lIGtleSB9IGluXG4gICAgICAgIGlmIFMubWVtIGtleSB0LmJhZyB0aGVuXG4gICAgICAgICAgdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdCA9IHsgdCB3aXRoIGJhZyA9IFMuYWRkIGtleSB0LmJhZyB9IGluXG4gICAgICAgICAgbGV0IHQgPSBuZXh0IHQgaW5cbiAgICAgICAgICBsZXQgb3ZlcndyaXR0ZW5fdmFsdWUgPSB0LmNhY2hlLih0Lm9mZnNldCkgaW5cbiAgICAgICAgICBsZXQgdCA9XG4gICAgICAgICAgICBtYXRjaCBvdmVyd3JpdHRlbl92YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gdFxuICAgICAgICAgICAgfCBTb21lIG92ZXJ3cml0dGVuX3ZhbHVlIC0+XG4gICAgICAgICAgICAgIHsgdCB3aXRoIGJhZyA9IFMucmVtb3ZlIG92ZXJ3cml0dGVuX3ZhbHVlIHQuYmFnIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBfID0gdC5jYWNoZS4odC5vZmZzZXQpIDwtIFNvbWUga2V5IGluXG4gICAgICAgICAgdFxuICAgICAgICApXG5cbiAgICAgIGxldCBsYXN0X2Zpbml0ZSB0ID0gdC5sYXN0XG5cbiAgICAgIHR5cGUgaW5maW5pdGVfY2FjaGUgPSB7IGluZl9iYWc6IFMudDsgbGFzdDogTy50IG9wdGlvbiB9XG4gICAgICB0eXBlIHQgPSBGaW5pdGUgb2YgZmluaXRlX2NhY2hlIHwgSW5maW5pdGUgb2YgaW5maW5pdGVfY2FjaGVcblxuICAgICAgbGV0IGNyZWF0ZV9pbmZpbml0ZSA9IHsgaW5mX2JhZyA9IFMuZW1wdHk7IGxhc3QgPSBOb25lIH1cblxuICAgICAgbGV0IGFkZF9pbmZpbml0ZSBrZXkgdCA9XG4gICAgICAgIHsgaW5mX2JhZyA9IFMuYWRkIGtleSB0LmluZl9iYWc7IGxhc3QgPSBTb21lIGtleSB9XG5cbiAgICAgIGxldCBjcmVhdGUgc2l6ZSA9XG4gICAgICAgIG1hdGNoIHNpemUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSW5maW5pdGUgY3JlYXRlX2luZmluaXRlXG4gICAgICAgIHwgU29tZSBhIC0+IEZpbml0ZSAoY3JlYXRlX2Zpbml0ZSBhKVxuXG4gICAgICBsZXQgbGFzdCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gbGFzdF9maW5pdGUgdFxuICAgICAgICB8IEluZmluaXRlIHQgLT4gdC5sYXN0XG5cbiAgICAgIGxldCBhZGQga2V5IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBGaW5pdGUgKGFkZF9maW5pdGUga2V5IHQpXG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiBJbmZpbml0ZSAoYWRkX2luZmluaXRlIGtleSB0KVxuXG4gICAgICBsZXQgZm9sZCBmIHQgYSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IFMuZm9sZCBmIHQuYmFnIGFcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IFMuZm9sZCBmIHQuaW5mX2JhZyBhXG5cbiAgICAgIGxldCBpdGVyIGYgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IFMuaXRlciBmIHQuYmFnXG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiBTLml0ZXIgZiB0LmluZl9iYWdcbiAgICBlbmQgOlxuICAgICAgQ2FjaGUgd2l0aCB0eXBlIE8udCA9IE9PLnQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZyb20pIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG5tb2R1bGUgQkEgPSBCaWdhcnJheS5BcnJheTFcblxudHlwZSBiaWdzdHJpbmcgPVxuICAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgYnVmZmVyOiBiaWdzdHJpbmc7XG4gIG11dGFibGUgcG9zaXRpb246IGludDtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgaW5pdGlhbF9idWZmZXI6IGJpZ3N0cmluZztcbn1cblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IG4gPVxuICAgIGlmIG4gPCAxIHRoZW5cbiAgICAgIDFcbiAgICBlbHNlXG4gICAgICBuXG4gIGluXG4gIGxldCBuID1cbiAgICBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2VcbiAgICAgIG5cbiAgaW5cbiAgbGV0IHMgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBuIGluXG4gIHsgYnVmZmVyID0gczsgcG9zaXRpb24gPSAwOyBsZW5ndGggPSBuOyBpbml0aWFsX2J1ZmZlciA9IHMgfVxuXG5sZXQgY29udGVudHMgYiA9XG4gIGxldCBvdXQgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBiLnBvc2l0aW9uIGluXG4gIGxldCAoKSA9IEJBLmJsaXQgKEJBLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb24pIG91dCBpblxuICBvdXRcblxuKCpsZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCQS5zdWIgYi5idWZmZXIgb2ZzIGxlblxuKilcbigqXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCQS5ibGl0IChzdWIgc3JjIHNyY29mZiBsZW4pXG4gICAgICAoQmlnc3RyaW5nLnN1YiAoQmlnc3RyaW5nLm9mX2FycmF5IEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgZHN0KSBkc3RvZmYgbGVuKVxuKilcblxubGV0IG50aCBiIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IGIucG9zaXRpb24gdGhlblxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2VcbiAgICBCQS51bnNhZmVfZ2V0IGIuYnVmZmVyIG9mc1xuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgYi5idWZmZXIgPC0gYi5pbml0aWFsX2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gQkEuZGltIGIuYnVmZmVyXG5cbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IGxlbiA9IGIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICB3aGlsZSBiLnBvc2l0aW9uICsgbW9yZSA+ICFuZXdfbGVuIGRvXG4gICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW5cbiAgZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgIGlmIGIucG9zaXRpb24gKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2VcbiAgICAgIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gIGxldCBuZXdfYnVmZmVyID0gQkEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCQS5ibGl0IChCQS5zdWIgYi5idWZmZXIgMCBiLnBvc2l0aW9uKSAoQkEuc3ViIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uKTtcbiAgYi5idWZmZXIgPC0gbmV3X2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gIW5ld19sZW5cblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG4oKlxuIGxldCBhZGRfdXRmXzhfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgIGFkZF9jaGFyIGIgKENoYXIudW5zYWZlX2NociB1KVxuIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhDMCBsb3IgKHUgbHNyIDYpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAzID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAzO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RTAgbG9yICh1IGxzciAxMikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgM1xuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEYwIGxvciAodSBsc3IgMTgpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiopXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlbiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAoYi5wb3NpdGlvbiArIGkpIChTdHJpbmcuZ2V0IHMgKG9mZnNldCArIGkpKVxuICBkb25lO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID0gYWRkX3N1YnN0cmluZyBiIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKlxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgZnJvbSBbaWNdIGludG8gW2JdLiAqKVxubGV0IHJlYyBhZGRfY2hhbm5lbF9yZWMgYiBpYyBsZW4gPVxuICBpZiBsZW4gPiAwIHRoZW4gKFxuICAgIGxldCBuID0gaW5wdXQgaWMgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICAgIGlmIG4gPSAwIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIGFkZF9jaGFubmVsX3JlYyBiIGljIChsZW4tbikgICAoKiBuIDw9IGxlbiAqKVxuICApXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBhZGRfY2hhbm5lbF9yZWMgYiBpYyBsZW5cblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyAoTHd0X2J5dGVzLnRvX2J5dGVzIGIuYnVmZmVyKSAwIGIucG9zaXRpb25cbiopXG4oKmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgICB8ICcoJyAtPiAnKSdcbiAgICB8ICd7JyAtPiAnfSdcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG4gIGxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gICAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuICBsZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gICAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICAgIHwgXyAtPiBpIGluXG4gICAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4gICgqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG4gIGxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gICAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgICAoKiBSZWd1bGFyIGlkZW50ICopXG4gICAgfCBfIC0+XG4gICAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbiAgKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG4gIGxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gICAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgICB8ICckJyAtPlxuICAgICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgZW5kIGVsc2VcbiAgICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICAgIHN1YnN0ICcgJyAwXG5cbiAgbGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgICBlbHNlXG4gICAgICAgIGIucG9zaXRpb24gPC0gbGVuXG4qKVxuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA5IENpdHJpeCBTeXN0ZW1zIEluYy5cbiAqIENvcHlyaWdodCAoYykgMjAxMCBUaG9tYXMgR2F6YWduYWlyZSA8dGhvbWFzQGdhemFnbmFpcmUuY29tPlxuICpcbiAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZVxuICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFU1xuICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1JcbiAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVNcbiAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTlxuICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0ZcbiAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4gKlxuICopXG5cbmxldCBkZWZhdWx0X2FscGhhYmV0ID1cbiAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCJcblxubGV0IHVyaV9zYWZlX2FscGhhYmV0ID1cbiAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fXCJcblxubGV0IHBhZGRpbmcgPSAnPSdcblxubGV0IG9mX2NoYXIgPyhhbHBoYWJldCA9IGRlZmF1bHRfYWxwaGFiZXQpIHggPVxuICBpZiB4ID0gcGFkZGluZyB0aGVuXG4gICAgMFxuICBlbHNlXG4gICAgU3RyaW5nLmluZGV4IGFscGhhYmV0IHhcblxubGV0IHRvX2NoYXIgPyhhbHBoYWJldCA9IGRlZmF1bHRfYWxwaGFiZXQpIHggPSBhbHBoYWJldC5beF1cblxubGV0IGRlY29kZSA/YWxwaGFiZXQgaW5wdXQgPVxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBsZXQgaW5wdXQgPVxuICAgIGlmIGxlbmd0aCBtb2QgNCA9IDAgdGhlblxuICAgICAgaW5wdXRcbiAgICBlbHNlXG4gICAgICBpbnB1dCBeIFN0cmluZy5tYWtlICg0IC0gKGxlbmd0aCBtb2QgNCkpIHBhZGRpbmdcbiAgaW5cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgbGV0IHdvcmRzID0gbGVuZ3RoIC8gNCBpblxuICBsZXQgcGFkZGluZyA9XG4gICAgbWF0Y2ggbGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gMFxuICAgIHwgXyB3aGVuIGlucHV0LltsZW5ndGggLSAyXSA9IHBhZGRpbmcgLT4gMlxuICAgIHwgXyB3aGVuIGlucHV0LltsZW5ndGggLSAxXSA9IHBhZGRpbmcgLT4gMVxuICAgIHwgXyAtPiAwXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIEJpZ2FycmF5LkFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dFxuICAgICAgKCh3b3JkcyAqIDMpIC0gcGFkZGluZylcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIHdvcmRzIC0gMSBkb1xuICAgIGxldCBhID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAwKSlcbiAgICBhbmQgYiA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMSkpXG4gICAgYW5kIGMgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDIpKVxuICAgIGFuZCBkID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAzKSkgaW5cbiAgICBsZXQgbiA9IChhIGxzbCAxOCkgbG9yIChiIGxzbCAxMikgbG9yIChjIGxzbCA2KSBsb3IgZCBpblxuICAgIGxldCB4ID0gKG4gbHNyIDE2KSBsYW5kIDI1NSBhbmQgeSA9IChuIGxzciA4KSBsYW5kIDI1NSBhbmQgeiA9IG4gbGFuZCAyNTUgaW5cbiAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDApIChjaGFyX29mX2ludCB4KTtcbiAgICBpZiBpIDw+IHdvcmRzIC0gMSB8fCBwYWRkaW5nIDwgMiB0aGVuXG4gICAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDEpIChjaGFyX29mX2ludCB5KTtcbiAgICBpZiBpIDw+IHdvcmRzIC0gMSB8fCBwYWRkaW5nIDwgMSB0aGVuXG4gICAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDIpIChjaGFyX29mX2ludCB6KVxuICBkb25lO1xuICBvdXRwdXRcblxubGV0IGVuY29kZSA/KHBhZCA9IHRydWUpID9hbHBoYWJldCBpbnB1dCA9XG4gIGxldCBsZW5ndGggPSBCaWdhcnJheS5BcnJheTEuZGltIGlucHV0IGluXG4gIGxldCB3b3JkcyA9IChsZW5ndGggKyAyKSAvIDMgaW5cbiAgKCogcm91bmRlZCB1cCAqKVxuICBsZXQgcGFkZGluZ19sZW4gPVxuICAgIGlmIGxlbmd0aCBtb2QgMyA9IDAgdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIDMgLSAobGVuZ3RoIG1vZCAzKVxuICBpblxuICBsZXQgb3V0cHV0ID0gQnl0ZXMubWFrZSAod29yZHMgKiA0KSAnXFwwMDAnIGluXG4gIGxldCBnZXQgaSA9XG4gICAgaWYgaSA+PSBsZW5ndGggdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIGludF9vZl9jaGFyIChCaWdhcnJheS5BcnJheTEuZ2V0IGlucHV0IGkpXG4gIGluXG4gIGZvciBpID0gMCB0byB3b3JkcyAtIDEgZG9cbiAgICBsZXQgeCA9IGdldCAoKDMgKiBpKSArIDApXG4gICAgYW5kIHkgPSBnZXQgKCgzICogaSkgKyAxKVxuICAgIGFuZCB6ID0gZ2V0ICgoMyAqIGkpICsgMikgaW5cbiAgICBsZXQgbiA9ICh4IGxzbCAxNikgbG9yICh5IGxzbCA4KSBsb3IgeiBpblxuICAgIGxldCBhID0gKG4gbHNyIDE4KSBsYW5kIDYzXG4gICAgYW5kIGIgPSAobiBsc3IgMTIpIGxhbmQgNjNcbiAgICBhbmQgYyA9IChuIGxzciA2KSBsYW5kIDYzXG4gICAgYW5kIGQgPSBuIGxhbmQgNjMgaW5cbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMCkgKHRvX2NoYXIgP2FscGhhYmV0IGEpO1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAxKSAodG9fY2hhciA/YWxwaGFiZXQgYik7XG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDIpICh0b19jaGFyID9hbHBoYWJldCBjKTtcbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMykgKHRvX2NoYXIgP2FscGhhYmV0IGQpXG4gIGRvbmU7XG4gIGZvciBpID0gMSB0byBwYWRkaW5nX2xlbiBkb1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKEJ5dGVzLmxlbmd0aCBvdXRwdXQgLSBpKSBwYWRkaW5nXG4gIGRvbmU7XG4gIGlmIHBhZCB0aGVuXG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBvdXRwdXRcbiAgZWxzZVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgb3V0cHV0IDAgKEJ5dGVzLmxlbmd0aCBvdXRwdXQgLSBwYWRkaW5nX2xlbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgbGlua3MgPVxuICB8IExJTktTIG9mICgoaW50ICogaW50KSAqIGludCkgbGlzdFxuICB8IFdIQVRFVkVSXG4gIHwgU09NRVxuICB8IFRZUEUgb2Ygc3RyaW5nICogc3RyaW5nXG5cbnR5cGUgY2NfcG9ydCA9IHtcbiAgcG9ydF9saW5rczogbGlua3M7XG4gIHBvcnRfc3RhdGVzOiBzdHJpbmcgbGlzdCBvcHRpb247ICAoKiogW05vbmVdIG1lYW5zIFdIQVRFVkVSICopXG59XG5cbnR5cGUgc2l0ZSA9IFBvcnQgb2YgY2NfcG9ydCB8IENvdW50ZXIgb2YgaW50XG50eXBlIGNjX3NpdGUgPSB7IHNpdGVfbmFtZTogc3RyaW5nOyBzaXRlX3R5cGU6IHNpdGUgfVxuXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogc3RyaW5nO1xuICBub2RlX2lkOiBpbnQgb3B0aW9uO1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxuXG50eXBlIGNvbm5lY3RlZF9jb21wb25lbnQgPSBjY19ub2RlIG9wdGlvbiBhcnJheSBhcnJheVxuXG5tb2R1bGUgTGlua1NldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gKGludCAqIGludCkgKiBpbnRcblxuICBsZXQgcHJpbnQgPVxuICAgIFBwLnBhaXJcbiAgICAgIChQcC5wYWlyIEZvcm1hdC5wcF9wcmludF9pbnQgRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIEZvcm1hdC5wcF9wcmludF9pbnRcblxuICBsZXQgY29tcGFyZSAoeCwgeSkgKHgnLCB5JykgPVxuICAgIGxldCBjID0gTW9kcy5pbnRfcGFpcl9jb21wYXJlIHggeCcgaW5cbiAgICBpZiBjID0gMCB0aGVuXG4gICAgICBNb2RzLmludF9jb21wYXJlIHkgeSdcbiAgICBlbHNlXG4gICAgICBjXG5lbmQpXG5cbmxldCBwcmludF9saW5rIChkYW5nbGluZywgZnJlZV9pZCkgcCBmID0gZnVuY3Rpb25cbiAgfCBXSEFURVZFUiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbI11cIlxuICB8IFNPTUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiW19dXCJcbiAgfCBUWVBFIChzaSwgdHkpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJbJXMuJXNdXCIgc2kgdHlcbiAgfCBMSU5LUyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIlxuICB8IExJTktTIGwgLT5cbiAgICBsZXQgbXlzZWxmID1cbiAgICAgIHJlZiAoTGlua1NldE1hcC5NYXAuZmluZF9kZWZhdWx0IExpbmtTZXRNYXAuTWFwLmVtcHR5IHAgIWRhbmdsaW5nKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWFdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIHAnIC0+XG4gICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICAgaWYgcCA9IHAnIHRoZW5cbiAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgICAgICAgIChMaW5rU2V0TWFwLk1hcC5maW5kX29wdGlvbiBwKVxuICAgICAgICAgICAgICAgICAgICAgKExpbmtTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIHAnICFkYW5nbGluZylcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBpbmNyIGZyZWVfaWQgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBteXNlbGYgOj0gTGlua1NldE1hcC5NYXAuYWRkIHAnICFmcmVlX2lkICFteXNlbGYgaW5cbiAgICAgICAgICAgICAgICAgICAhZnJlZV9pZFxuICAgICAgICAgICAgICAgICB8IFNvbWUgdmEgLT4gdmFcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaVwiIGkpKVxuICAgICAgICBsXG4gICAgaW5cbiAgICBkYW5nbGluZyA6PSBMaW5rU2V0TWFwLk1hcC5hZGQgcCAhbXlzZWxmICFkYW5nbGluZ1xuXG5sZXQgcHJpbnRfcG9ydCB3aXRoX2xpbmsgbm9kZSBwIGlkIGYgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwieyN9XCJcbiAgICAgIHwgU29tZSBbXSAtPiAoKVxuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIlxuICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIGkpKVxuICAgICAgICAgIGwpXG4gICAgcC5wb3J0X3N0YXRlc1xuICAgIChtYXRjaCB3aXRoX2xpbmsgd2l0aFxuICAgIHwgU29tZSBwYWNrIC0+IHByaW50X2xpbmsgcGFjayAobm9kZSwgaWQpXG4gICAgfCBOb25lIC0+IGZ1biBfIF8gLT4gKCkpXG4gICAgcC5wb3J0X2xpbmtzXG5cbmxldCBwcmludF9pbnRmIHdpdGhfbGluayBub2RlID1cbiAgUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpZCBmIHNpIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiBzaS5zaXRlX25hbWUgaW5cbiAgICAgIG1hdGNoIHNpLnNpdGVfdHlwZSB3aXRoXG4gICAgICB8IFBvcnQgcCAtPiBwcmludF9wb3J0IHdpdGhfbGluayBub2RlIHAgaWQgZlxuICAgICAgfCBDb3VudGVyIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIns9JWl9XCIgaSlcblxubGV0IHByaW50X2FnZW50IHdpdGhfaWQgbGluayBub2RlIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgU29tZSBhZyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVzKEBbPGg+JWFAXSlcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwieCVpOlwiIGkpKVxuICAgICAgKGlmIHdpdGhfaWQgdGhlblxuICAgICAgICAgYWcubm9kZV9pZFxuICAgICAgIGVsc2VcbiAgICAgICAgIE5vbmUpXG4gICAgICBhZy5ub2RlX3R5cGUgKHByaW50X2ludGYgbGluayBub2RlKSBhZy5ub2RlX3NpdGVzXG5cbmxldCBwcmludF9jYyBmIG1peCA9XG4gIGxldCBsaW5rID0gU29tZSAocmVmIExpbmtTZXRNYXAuTWFwLmVtcHR5LCByZWYgMCkgaW5cbiAgUHAuYXJyYXlcbiAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXFxAIFwiKVxuICAgIChmdW4gYWwgLT4gUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBhciAtPiBwcmludF9hZ2VudCB0cnVlIGxpbmsgKGFsLCBhcikpKVxuICAgIGYgbWl4XG5cbmxldCBnZXRfY29sb3IgPVxuICBsZXQgc3RvcmUgPSBIYXNodGJsLmNyZWF0ZSAxMCBpblxuICBmdW4gaSAtPlxuICAgIHRyeSBIYXNodGJsLmZpbmQgc3RvcmUgaVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgdiA9XG4gICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiIyV4JXgleFwiIChSYW5kb20uaW50IDI1NSkgKFJhbmRvbS5pbnQgMjU1KVxuICAgICAgICAgIChSYW5kb20uaW50IDI1NSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBIYXNodGJsLmFkZCBzdG9yZSBpIHYgaW5cbiAgICAgIHZcblxubGV0IHByaW50X2RvdF9jYyBuYl9jYyBmIG1peCA9XG4gIFBwLmFycmF5IFBwLmVtcHR5XG4gICAgKGZ1biBpbCAtPlxuICAgICAgUHAuYXJyYXkgUHAuZW1wdHkgKGZ1biBpciBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgYWcgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICBcIm5vZGUlZF8lZF8lZCBbbGFiZWwgPSBcXFwiQFs8aD4lYUBdXFxcIiwgY29sb3IgPSBcXFwiJXNcXFwiLCBcXFxuICAgICAgICAgICAgIHN0eWxlPWZpbGxlZF07QCxcIlxuICAgICAgICAgICAgbmJfY2MgaWwgaXJcbiAgICAgICAgICAgIChwcmludF9hZ2VudCBmYWxzZSBOb25lIChpbCwgaXIpKVxuICAgICAgICAgICAgKFNvbWUgYWcpIChnZXRfY29sb3IgYWcubm9kZV90eXBlKTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwibm9kZSVkXyVkXyVkIC0+IGNvdW50ZXIlZCBbc3R5bGU9aW52aXNdO0AsXCIgbmJfY2MgaWxcbiAgICAgICAgICAgIGlyIG5iX2NjKSlcbiAgICBmIG1peDtcbiAgaWdub3JlXG4gIEBAIEFycmF5Lml0ZXJpXG4gICAgICAgKGZ1biBhbCAtPlxuICAgICAgICAgQXJyYXkuaXRlcmkgKGZ1biBhciAtPiBmdW5jdGlvblxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGFnIC0+XG4gICAgICAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAgICAgIChmdW4gcyBzaSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX3R5cGUgd2l0aFxuICAgICAgICAgICAgICAgICB8IENvdW50ZXIgXyAtPiAoKVxuICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfbGlua3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgV0hBVEVWRVIgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBTT01FIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgVFlQRSAoX3NpLCBfdHkpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgTElOS1MgbGlua3MgLT5cbiAgICAgICAgICAgICAgICAgICAgIFBwLmxpc3QgUHAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmICgoYWwnLCBhcicpLCBzJykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWwgPCBhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChhbCA9IGFsJyAmJiAoYXIgPCBhcicgfHwgKGFyID0gYXInICYmIHMgPCBzJykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbWl4LihhbCcpLihhcicpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhZycgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibm9kZSVkXyVkXyVkIC0+IG5vZGUlZF8lZF8lZCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFpbGxhYmVsPVxcXCIlc1xcXCIsIGhlYWRsYWJlbD1cXFwiJXNcXFwiLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXI9bm9uZV07QCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iX2NjIGFsIGFyIG5iX2NjIGFsJyBhcicgc2kuc2l0ZV9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWcnLm5vZGVfc2l0ZXMuKHMnKS5zaXRlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICBmIGxpbmtzKSlcbiAgICAgICAgICAgICAgIGFnLm5vZGVfc2l0ZXMpKVxuICAgICAgIG1peFxuXG4oKlxudHlwZSBjY19ub2RlID0ge1xuICBub2RlX3R5cGU6IHN0cmluZztcbiAgbm9kZV9zaXRlczogY2Nfc2l0ZSBhcnJheTtcbn1cbnR5cGUgY29ubmVjdGVkX2NvbXBvbmVudCA9IGNjX25vZGUgYXJyYXlcbiAqKVxuXG5sZXQgd3JpdGVfY2NfcG9ydCBvYiBwID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicG9ydF9saW5rc1wiXG4gICAgICAoZnVuIG9iIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgV0hBVEVWRVIgLT4gWW9qc29uLkJhc2ljLndyaXRlX251bGwgb2IgKClcbiAgICAgICAgfCBTT01FIC0+IFlvanNvbi5CYXNpYy53cml0ZV9ib29sIG9iIHRydWVcbiAgICAgICAgfCBUWVBFIChzaSwgdHkpIC0+XG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJ7XFxcInNpdGVfbmFtZVxcXCI6XFxcIlwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc2kgaW5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCIsXFxcImFnZW50X3R5cGVcXFwiOlxcXCJcIiBpblxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHR5IGluXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwifVwiXG4gICAgICAgIHwgTElOS1MgbCAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXJcbiAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludFxuICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICAgICAgICBvYiBsKVxuICAgICAgb2IgcC5wb3J0X2xpbmtzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3J0X3N0YXRlc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfb3B0aW9uIChKc29uVXRpbC53cml0ZV9saXN0IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcpKVxuICAgICAgb2IgcC5wb3J0X3N0YXRlc1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCB3cml0ZV9zaXRlIG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggZi5zaXRlX3R5cGUgd2l0aFxuICAgIHwgQ291bnRlciBpIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwiY291bnRlclwiIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnIGluXG4gICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGlcbiAgICB8IFBvcnQgcCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcInBvcnRcIiBpblxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICcsJyBpblxuICAgICAgd3JpdGVfY2NfcG9ydCBvYiBwXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHdyaXRlX2NjX3NpdGUgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNpdGVfbmFtZVwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgZi5zaXRlX25hbWVcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJzaXRlX3R5cGVcIiB3cml0ZV9zaXRlIG9iIGYgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgbGlua3Nfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBXSEFURVZFUlxuICB8IGBCb29sIGIgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgYiBpblxuICAgIFNPTUVcbiAgfCBgQXNzb2MgWyAoXCJzaXRlX25hbWVcIiwgYFN0cmluZyBzaSk7IChcImFnZW50X3R5cGVcIiwgYFN0cmluZyB0eSkgXVxuICB8IGBBc3NvYyBbIChcImFnZW50X3R5cGVcIiwgYFN0cmluZyB0eSk7IChcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpKSBdIC0+XG4gICAgVFlQRSAoc2ksIHR5KVxuICB8IGBMaXN0IF8gYXMgeCAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBOb25lIGluXG4gICAgTElOS1NcbiAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAoSnNvblV0aWwuY29tcGFjdF90b19wYWlyXG4gICAgICAgICAgICAoSnNvblV0aWwuY29tcGFjdF90b19wYWlyXG4gICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpXG4gICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpKVxuICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnKSlcbiAgICAgICAgIHgpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgY2NfcG9ydFwiLCB4KSlcblxubGV0IHJlYWRfY2NfcG9ydCBwIGxiID1cbiAgbGV0IHBvcnRfbGlua3MsIHBvcnRfc3RhdGVzID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHMsIGkpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwicG9ydF9saW5rc1wiIHRoZW5cbiAgICAgICAgICBsaW5rc19vZl95b2pzb24gKFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiksIGlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInBvcnRfc3RhdGVzXCIpIGluXG4gICAgICAgICAgKCBzLFxuICAgICAgICAgICAgSnNvblV0aWwucmVhZF9vcHRpb25cbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nKVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgKSlcbiAgICAgIChMSU5LUyBbXSwgU29tZSBbXSkgcCBsYlxuICBpblxuICB7IHBvcnRfbGlua3M7IHBvcnRfc3RhdGVzIH1cblxubGV0IHJlYWRfc2l0ZSBwIGxiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHAgbGIgaW5cbiAgbGV0IGtleSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgcCBsYiBpblxuICBsZXQgb3V0ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzXG4gICAgICAoZnVuIHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJjb3VudGVyXCIgdGhlblxuICAgICAgICAgIENvdW50ZXIgKFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwicG9ydFwiKSBpblxuICAgICAgICAgIFBvcnQgKHJlYWRfY2NfcG9ydCBwIGxiKVxuICAgICAgICApKVxuICAgICAgcCBsYlxuICBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9yYnIgcCBsYiBpblxuICBvdXRcblxubGV0IHJlYWRfY2Nfc2l0ZSBwIGxiID1cbiAgbGV0IHNpdGVfbmFtZSwgc2l0ZV90eXBlID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKG4sIHMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2l0ZV9uYW1lXCIgdGhlblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJzaXRlX3R5cGVcIikgaW5cbiAgICAgICAgICBuLCByZWFkX3NpdGUgcCBsYlxuICAgICAgICApKVxuICAgICAgKFwiXCIsIENvdW50ZXIgKC0xKSkgcCBsYlxuICBpblxuICB7IHNpdGVfbmFtZTsgc2l0ZV90eXBlIH1cblxubGV0IHdyaXRlX2NjX25vZGUgb2IgeCA9XG4gIEpzb25VdGlsLndyaXRlX29wdGlvblxuICAgIChmdW4gb2IgZiAtPlxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJub2RlX3R5cGVcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iXG4gICAgICAgICAgZi5ub2RlX3R5cGVcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggZi5ub2RlX2lkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBub2RlX2lkIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibm9kZV9pZFwiIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2Igbm9kZV9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfY29tbWEgb2JcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm5vZGVfc2l0ZXNcIlxuICAgICAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSB3cml0ZV9jY19zaXRlKVxuICAgICAgICAgIG9iIGYubm9kZV9zaXRlc1xuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfScpXG4gICAgb2IgeFxuXG5sZXQgcmVhZF9jY19ub2RlIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX29wdGlvblxuICAgIChmdW4gcCBsYiAtPlxuICAgICAgbGV0IG5vZGVfaWQsIG5vZGVfdHlwZSwgbm9kZV9zaXRlcyA9XG4gICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgICAgIChmdW4gKGlkLCBuLCBzKSBrZXkgcCBsYiAtPlxuICAgICAgICAgICAgaWYga2V5ID0gXCJub2RlX2lkXCIgdGhlblxuICAgICAgICAgICAgICBTb21lIChZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiksIG4sIHNcbiAgICAgICAgICAgIGVsc2UgaWYga2V5ID0gXCJub2RlX3R5cGVcIiB0aGVuXG4gICAgICAgICAgICAgIGlkLCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJub2RlX3NpdGVzXCIpIGluXG4gICAgICAgICAgICAgIGlkLCBuLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSByZWFkX2NjX3NpdGUgcCBsYlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICAoTm9uZSwgXCJcIiwgW3x8XSkgcCBsYlxuICAgICAgaW5cbiAgICAgIHsgbm9kZV9pZDsgbm9kZV90eXBlOyBub2RlX3NpdGVzIH0pXG4gICAgcCBsYlxuXG5sZXQgd3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCBvYiBmID1cbiAgSnNvblV0aWwud3JpdGVfYXJyYXkgKEpzb25VdGlsLndyaXRlX2FycmF5IHdyaXRlX2NjX25vZGUpIG9iIGZcblxubGV0IHJlYWRfY29ubmVjdGVkX2NvbXBvbmVudCBvYiBmID1cbiAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IHJlYWRfY2Nfbm9kZSkgb2IgZlxuXG5sZXQgc3RyaW5nX29mX2Nvbm5lY3RlZF9jb21wb25lbnQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgbGV0ICgpID0gd3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCBvYiB4IGluXG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfY29ubmVjdGVkX2NvbXBvbmVudCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjb3VudGVyX2luZm8gPSB7XG4gIGNvdW50ZXJfaW5mb19taW46IGludCBvcHRpb247XG4gIGNvdW50ZXJfaW5mb19tYXg6IGludCBvcHRpb247XG4gIGNvdW50ZXJfZGVmYXVsdF92YWx1ZTogaW50O1xufVxuXG50eXBlICdsaW5rcyBzaXRlX3NpZyA9IHtcbiAgaW50ZXJuYWxfc3RhdGU6IHVuaXQgTmFtZWREZWNscy50O1xuICBsaW5rczogJ2xpbmtzIG9wdGlvbjtcbiAgY291bnRlcl9pbmZvOiBjb3VudGVyX2luZm8gb3B0aW9uO1xufVxuXG50eXBlIHQgPSBib29sIGFycmF5IGFycmF5IHNpdGVfc2lnIE5hbWVkRGVjbHMudFxuXG5sZXQgZm9sZCBmID0gTmFtZWREZWNscy5mb2xkIChmdW4gaSBuIG8gXyAtPiBmIGkgbiBvKVxuXG5sZXQgbnVtX29mX3NpdGUgP2FnZW50X25hbWUgc2l0ZV9uYW1lIHNpZ25hdHVyZSA9XG4gIGxldCBraW5kID1cbiAgICBtYXRjaCBhZ2VudF9uYW1lIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJzaXRlIG5hbWVcIlxuICAgIHwgU29tZSBhZ2VudF9uYW1lIC0+IFwic2l0ZSBuYW1lIGZvciBhZ2VudCBcIiBeIGFnZW50X25hbWVcbiAgaW5cbiAgTmFtZWREZWNscy5lbHRfaWQgfmtpbmQgc2lnbmF0dXJlIHNpdGVfbmFtZVxuXG5sZXQgc2l0ZV9vZl9udW0gYWRkciBzaWduYXR1cmUgPVxuICB0cnkgTmFtZWREZWNscy5lbHRfbmFtZSBzaWduYXR1cmUgYWRkclxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IG51bV9vZl9pbnRlcm5hbF9zdGF0ZSBzaXRlX2lkIHN0YXRlIHNpZ25hdHVyZSA9XG4gIHRyeVxuICAgIGxldCBzaXRlX25hbWUsIHNpdGVfc2lnID0gc2lnbmF0dXJlLk5hbWVkRGVjbHMuZGVjbHMuKHNpdGVfaWQpIGluXG4gICAgTmFtZWREZWNscy5lbHRfaWRcbiAgICAgIH5raW5kOihcImludGVybmFsIHN0YXRlIGZvciBzaXRlIFwiIF4gc2l0ZV9uYW1lKVxuICAgICAgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGUgc3RhdGVcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBpbnRlcm5hbF9zdGF0ZV9vZl9zaXRlX2lkIHNpdGVfaWQgdmFsX2lkIHNpZ25hdHVyZSA9XG4gIHRyeVxuICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgc2l0ZV9pZCBpblxuICAgIE5hbWVkRGVjbHMuZWx0X25hbWUgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGUgdmFsX2lkXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgY291bnRlcl9vZl9zaXRlX2lkIHNpdGVfaWQgc2lnbmF0dXJlID1cbiAgdHJ5IChOYW1lZERlY2xzLmVsdF92YWwgc2lnbmF0dXJlIHNpdGVfaWQpLmNvdW50ZXJfaW5mb1xuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGhhc19jb3VudGVyIHNpZ25hdHVyZSA9XG4gIGZvbGRcbiAgICAoZnVuIHBfaWQgXyBvayAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgcF9pZCBpblxuICAgICAgICBvayB8fCBub3QgKHNpdGVfc2lnLmNvdW50ZXJfaW5mbyA9IE5vbmUpXG4gICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgZmFsc2Ugc2lnbmF0dXJlXG5cbigqXG5sZXQgcmVhZF9wb3NpdGlvbiBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBJbnQgbGluZSk7IChcImNoclwiLCBgSW50IGNocikgXVxuICB8IGBBc3NvYyBbIChcImNoclwiLCBgSW50IGNocik7IChcImxpbmVcIiwgYEludCBsaW5lKSBdIC0+XG4gICAgeyBsaW5lOyBjaHIgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwb3NpdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3Bvc2l0aW9uIG9iIHsgbGluZTsgY2hyIH0gPVxuICBZb2pzb24ud3JpdGVfYXNzb2Mgb2IgWyBcImxpbmVcIiwgYEludCBsaW5lOyBcImNoclwiLCBgSW50IGNociBdXG4qKVxuXG5sZXQgb25lX3RvX2pzb24gPVxuICBOYW1lZERlY2xzLnRvX2pzb24gKGZ1biBzaWduYXR1cmUgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbXG4gICAgICAgICAgKCBcImludGVybmFsX3N0YXRlXCIsXG4gICAgICAgICAgICBOYW1lZERlY2xzLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgc2lnbmF0dXJlLmludGVybmFsX3N0YXRlICk7XG4gICAgICAgICAgKCBcImxpbmtzXCIsXG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBsaW5rcyAtPlxuICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBhIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCAoQXJyYXkuZm9sZF9yaWdodCAoZnVuIGIgYyAtPiBgQm9vbCBiIDo6IGMpIGEgW10pXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgIGxpbmtzIFtdKSlcbiAgICAgICAgICAgICAgc2lnbmF0dXJlLmxpbmtzICk7XG4gICAgICAgICAgKCBcImNvdW50ZXJfaW5mb1wiLFxuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gYyAtPlxuICAgICAgICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAoIFwibWluXCIsXG4gICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIChmdW4geCAtPiBgSW50IHgpIGMuY291bnRlcl9pbmZvX21pbiApO1xuICAgICAgICAgICAgICAgICAgICAoIFwibWF4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIChmdW4geCAtPiBgSW50IHgpIGMuY291bnRlcl9pbmZvX21heCApO1xuICAgICAgICAgICAgICAgICAgICBcImRlZmF1bHRcIiwgYEludCBjLmNvdW50ZXJfZGVmYXVsdF92YWx1ZTtcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIHNpZ25hdHVyZS5jb3VudGVyX2luZm8gKTtcbiAgICAgICAgXSlcblxubGV0IG9uZV9vZl9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gYm9vbCBhcnJheSBhcnJheSBzaXRlX3NpZyBOYW1lZERlY2xzLnQgPVxuICBOYW1lZERlY2xzLm9mX2pzb24gKGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbF9zdGF0ZVwiLCBhKTsgKFwibGlua3NcIiwgYik7IChcImNvdW50ZXJfaW5mb1wiLCBjKSBdIC0+XG4gICAgICB7XG4gICAgICAgIGludGVybmFsX3N0YXRlID1cbiAgICAgICAgICBOYW1lZERlY2xzLm9mX2pzb25cbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGE7XG4gICAgICAgIGxpbmtzID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCcgLT5cbiAgICAgICAgICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEJvb2wgYiAtPiBiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGwnXG4gICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgYjtcbiAgICAgICAgY291bnRlcl9pbmZvID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IGBBc3NvY1xuICAgICAgICAgICAgICAgICAgWyAoXCJtaW5cIiwgYzFfb3B0KTsgKFwibWF4XCIsIGMyX29wdCk7IChcImRlZmF1bHRcIiwgYEludCBjMykgXSAtPlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19taW4gPVxuICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBjIC0+IGNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICAgICBjMV9vcHQ7XG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2luZm9fbWF4ID1cbiAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGBJbnQgYyAtPiBjXG4gICAgICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgYzJfb3B0O1xuICAgICAgICAgICAgICAgICAgY291bnRlcl9kZWZhdWx0X3ZhbHVlID0gYzM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICBjO1xuICAgICAgfVxuICAgIHwgeCAtPlxuICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcblxudHlwZSBjb3VudGVyX2FnZW50X2luZm8gPSB7IGlkOiBpbnQ7IGFyaXR5OiBpbnQ7IHBvcnRzOiBpbnQgKiBpbnQgfVxuXG50eXBlIHMgPSB7XG4gIGFnZW50X3NpZ3M6IHQgTmFtZWREZWNscy50O1xuICBjb3VudGVyX2FnZW50X2luZm86IGNvdW50ZXJfYWdlbnRfaW5mbyBvcHRpb247XG59XG5cbmxldCBzaXplIHNpZ3MgPSBOYW1lZERlY2xzLnNpemUgc2lncy5hZ2VudF9zaWdzXG5sZXQgZ2V0IHNpZ3MgYWdlbnRfaWQgPSBOYW1lZERlY2xzLmVsdF92YWwgc2lncy5hZ2VudF9zaWdzIGFnZW50X2lkXG5sZXQgYXJpdHkgc2lncyBhZ2VudF9pZCA9IE5hbWVkRGVjbHMuc2l6ZSAoZ2V0IHNpZ3MgYWdlbnRfaWQpXG5cbmxldCBtYXhfYXJpdHkgc2lncyA9XG4gIE5hbWVkRGVjbHMuZm9sZCAoZnVuIF8gXyB4IGEgLT4gbWF4IHggKE5hbWVkRGVjbHMuc2l6ZSBhKSkgMCBzaWdzLmFnZW50X3NpZ3NcblxubGV0IGFnZW50X29mX251bSBpIHNpZ3MgPSBOYW1lZERlY2xzLmVsdF9uYW1lIHNpZ3MuYWdlbnRfc2lncyBpXG5cbmxldCBudW1fb2ZfYWdlbnQgbmFtZSBzaWdzID1cbiAgTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJhZ2VudFwiIHNpZ3MuYWdlbnRfc2lncyBuYW1lXG5cbmxldCBpZF9vZl9zaXRlICgoYWdlbnRfbmFtZSwgXykgYXMgYWdlbnRfdHkpIHNpdGVfbmFtZSBzaWdzID1cbiAgbGV0IG4gPSBudW1fb2ZfYWdlbnQgYWdlbnRfdHkgc2lncyBpblxuICBudW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBzaXRlX25hbWUgKGdldCBzaWdzIG4pXG5cbmxldCBzaXRlX29mX2lkIGFnZW50X2lkIHNpdGVfaWQgc2lncyA9IHNpdGVfb2ZfbnVtIHNpdGVfaWQgKGdldCBzaWdzIGFnZW50X2lkKVxuXG5sZXQgaWRfb2ZfaW50ZXJuYWxfc3RhdGUgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eSkgc2l0ZV9uYW1lIHN0YXRlIHNpZ3MgPVxuICBsZXQgbiA9IG51bV9vZl9hZ2VudCBhZ2VudF90eSBzaWdzIGluXG4gIGxldCBzaWduYXR1cmUgPSBnZXQgc2lncyBuIGluXG4gIGxldCBzaXRlX2lkID0gbnVtX29mX3NpdGUgfmFnZW50X25hbWUgc2l0ZV9uYW1lIHNpZ25hdHVyZSBpblxuICBudW1fb2ZfaW50ZXJuYWxfc3RhdGUgc2l0ZV9pZCBzdGF0ZSBzaWduYXR1cmVcblxubGV0IGludGVybmFsX3N0YXRlX29mX2lkIGFnZW50X2lkIGlkX3NpdGUgaWRfc3RhdGUgc2lncyA9XG4gIGludGVybmFsX3N0YXRlX29mX3NpdGVfaWQgaWRfc2l0ZSBpZF9zdGF0ZSAoZ2V0IHNpZ3MgYWdlbnRfaWQpXG5cbmxldCBpbnRlcm5hbF9zdGF0ZXNfbnVtYmVyIGFnZW50X2lkIHNpdGVfaWQgc2lncyA9XG4gIHRyeVxuICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCAoZ2V0IHNpZ3MgYWdlbnRfaWQpIHNpdGVfaWQgaW5cbiAgICBOYW1lZERlY2xzLnNpemUgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGVcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBkZWZhdWx0X2ludGVybmFsX3N0YXRlIGFnZW50X2lkIHNpdGVfaWQgc2lncyA9XG4gIHRyeVxuICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCAoZ2V0IHNpZ3MgYWdlbnRfaWQpIHNpdGVfaWQgaW5cbiAgICBpZiBOYW1lZERlY2xzLnNpemUgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGUgPSAwIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIDBcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcIlNpZ25hdHVyZS5kZWZhdWx0X251bV92YWx1ZTogaW52YWxpZCBzaXRlIGlkZW50aWZpZXJcIlxuXG5sZXQgcmVjIGFsbG93ZWRfbGluayBhZzEgczEgYWcyIHMyIHNpZ3MgPVxuICBpZiBhZzEgPiBhZzIgdGhlblxuICAgIGFsbG93ZWRfbGluayBhZzIgczIgYWcxIHMxIHNpZ3NcbiAgZWxzZSAoXG4gICAgdHJ5XG4gICAgICBtYXRjaCAoTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZzEpIHMxKS5saW5rcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIGwgLT4gbC4oYWcyIC0gYWcxKS4oczIpXG4gICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgIGludmFsaWRfYXJnIFwiU2lnbmF0dXJlLmFsbG93ZWRfbGluazogaW52YWxpZCBzaXRlIGlkZW50aWZpZXJcIlxuICApXG5cbmxldCBjcmVhdGUgfmNvdW50ZXJzX3Blcl9hZ2VudCBhZ2VudF9zaWdzID1cbiAge1xuICAgIGFnZW50X3NpZ3M7XG4gICAgY291bnRlcl9hZ2VudF9pbmZvID1cbiAgICAgIChpZiBjb3VudGVyc19wZXJfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgKCogSWYgdGhlcmUgaXMgYSBjb3VudGVyIGFnZW50LCB3ZSBjaG9vc2UgMCBmb3IgaXRzIGFnZW50IGlkIGFuZCAwIGFuZCAxIGFzIGl0cyBwb3J0IGlkcyAqKVxuICAgICAgICAgU29tZSB7IGlkID0gMDsgYXJpdHkgPSAyOyBwb3J0cyA9IDAsIDEgfSk7XG4gIH1cblxubGV0IGlzX2NvdW50ZXJfYWdlbnQgc2lncyBhZ2VudF9pZCA9XG4gIG1hdGNoIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBhZ2VudF9pbmZvIC0+IGFnZW50X2lkID0gYWdlbnRfaW5mby5pZFxuXG5sZXQgcG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnZW50X2lkID1cbiAgbWF0Y2ggc2lncy5jb3VudGVyX2FnZW50X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYWdlbnRfaW5mbyAtPlxuICAgIGlmIGFnZW50X2lkID0gYWdlbnRfaW5mby5pZCB0aGVuXG4gICAgICBTb21lIGFnZW50X2luZm8ucG9ydHNcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmxldCBzaXRlX2lzX2NvdW50ZXIgc2lncyBhZ190eSBpZCA9XG4gIGNvdW50ZXJfb2Zfc2l0ZV9pZCBpZCAoZ2V0IHNpZ3MgYWdfdHkpIDw+IE5vbmVcblxubGV0IGdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyA9XG4gIG1hdGNoIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTm8gY291bnRlciBhZ2VudFwiXG4gIHwgU29tZSBjb3VudGVyX2FnZW50X2luZm8gLT4gY291bnRlcl9hZ2VudF9pbmZvXG5cbmxldCBpbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCA6IHN0cmluZyA9IFwiX19pbnZlcnRlZFwiXG5cbmxldCBpc19pbnZlcnRlZF9jb3VudGVyIChjb3VudGVyX25hbWUgOiBzdHJpbmcpIDogYm9vbCA9XG4gIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDppbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCBjb3VudGVyX25hbWVcblxubGV0IHByaW50X2FnZW50IHNpZ3MgZiBhZ190eSA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBAQCBhZ2VudF9vZl9udW0gYWdfdHkgc2lnc1xuXG5sZXQgcHJpbnRfc2l0ZSBzaWdzIGFnX3R5IGYgaWQgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgQEAgc2l0ZV9vZl9pZCBhZ190eSBpZCBzaWdzXG5cbmxldCBwcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUgZiBpZCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBAQCBpbnRlcm5hbF9zdGF0ZV9vZl9pZCBhZ190eSBzaXRlIGlkIHNpZ3NcblxubGV0IHByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcHJpbnRfc2l0ZSBzaWdzIGFnX3R5IGYgc2l0ZVxuICB8IFNvbWUgaWQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXN7JXN9XCJcbiAgICAgIChzaXRlX29mX2lkIGFnX3R5IHNpdGUgc2lncylcbiAgICAgIChpbnRlcm5hbF9zdGF0ZV9vZl9pZCBhZ190eSBzaXRlIGlkIHNpZ3MpXG5cbmxldCBwcmludF9jb3VudGVyX2luZm8gZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYyAtPlxuICAgIChtYXRjaCBjLmNvdW50ZXJfaW5mb19taW4sIGMuY291bnRlcl9pbmZvX21heCB3aXRoXG4gICAgfCBTb21lIGksIFNvbWUgaiB3aGVuIGkgPSBjLmNvdW50ZXJfZGVmYXVsdF92YWx1ZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIns9JWQvKz0lZH1cIiBpIGpcbiAgICB8IGlfb3B0LCBqX29wdCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInstPSVzLz0lZC8rPSVzfVwiXG4gICAgICAgIChtYXRjaCBpX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIi1vb1wiXG4gICAgICAgIHwgU29tZSBpIC0+IEZvcm1hdC5zcHJpbnRmIFwiJWRcIiBpKVxuICAgICAgICBjLmNvdW50ZXJfZGVmYXVsdF92YWx1ZVxuICAgICAgICAobWF0Y2ggal9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCItb29cIlxuICAgICAgICB8IFNvbWUgaSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVkXCIgaSkpXG5cbmxldCBwcmludF9jb3VudGVyIHNpZ3MgYWdfdHkgZiBpZCA9XG4gIHByaW50X2NvdW50ZXJfaW5mbyBmIChjb3VudGVyX29mX3NpdGVfaWQgaWQgKGdldCBzaWdzIGFnX3R5KSlcblxubGV0IHByaW50X29uZSA/KHNpZ3MgOiBzIG9wdGlvbikgKGkgOiBpbnQpIChmIDogRm9ybWF0LmZvcm1hdHRlcilcbiAgICAoc2lnbmF0dXJlIDogdCkgPVxuICBsZXQgcHBfaW50IGYgeCA9XG4gICAgaWYgTmFtZWREZWNscy5zaXplIHggPiAwIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCJcbiAgICAgICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIF8gbmEgZiAoKSAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIG5hKSlcbiAgICAgICAgeFxuICBpblxuICBsZXQgcHBfbGluayA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+IGZ1biBfIF8gXyAtPiAoKVxuICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICBmdW4gaSBmIC0+IChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGxpbmtzIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslYV1cIlxuICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gYWcgLT5cbiAgICAgICAgICAgICAgICAgUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBzaSBmIGIgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChwcmludF9zaXRlIHNpZ3MgKGkgKyBhZykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2kgKHByaW50X2FnZW50IHNpZ3MpIChpICsgYWcpKSkpXG4gICAgICAgICAgICBsaW5rcylcbiAgaW5cbiAgKE5hbWVkRGVjbHMucHJpbnRcbiAgICAgfnNlcDooZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIixALFwiKVxuICAgICAoZnVuIF8gbmFtZSBmIHNpdGVfc2lnIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJWElYSVhXCIgbmFtZSBwcF9pbnQgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGVcbiAgICAgICAgIChwcF9saW5rIGkpIHNpdGVfc2lnLmxpbmtzIHByaW50X2NvdW50ZXJfaW5mbyBzaXRlX3NpZy5jb3VudGVyX2luZm8pKVxuICAgIGYgc2lnbmF0dXJlXG5cbmxldCBwcmludCBmIHNpZ3MgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCJcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gaSBuIGYgc2kgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUlYWdlbnQ6ICVzKCVhKUBdXCIgbiAocHJpbnRfb25lIH5zaWdzIGkpIHNpKSlcbiAgICBzaWdzLmFnZW50X3NpZ3NcblxubGV0IHRvX2pzb24gc2lncyA9IE5hbWVkRGVjbHMudG9fanNvbiBvbmVfdG9fanNvbiBzaWdzLmFnZW50X3NpZ3NcblxubGV0IG9mX2pzb24gdiA9XG4gIGxldCBhZ2VudF9zaWdzIDogJ2Egc2l0ZV9zaWcgTmFtZWREZWNscy50IE5hbWVkRGVjbHMudCA9XG4gICAgTmFtZWREZWNscy5vZl9qc29uIG9uZV9vZl9qc29uIHZcbiAgaW5cbiAgbWF0Y2hcbiAgICBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBcIl9fY291bnRlcl9hZ2VudFwiIGFnZW50X3NpZ3MuTmFtZWREZWNscy5maW5kZXJcbiAgd2l0aFxuICB8IFNvbWUgaWQgLT5cbiAgICBsZXQgYWdlbnRfc2lnbmF0dXJlID0gTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3MgaWQgaW5cbiAgICBsZXQgcG9ydHMgPVxuICAgICAgKCBudW1fb2Zfc2l0ZSAoXCJhXCIsIExvYy5kdW1teSkgYWdlbnRfc2lnbmF0dXJlLFxuICAgICAgICBudW1fb2Zfc2l0ZSAoXCJiXCIsIExvYy5kdW1teSkgYWdlbnRfc2lnbmF0dXJlIClcbiAgICBpblxuICAgIHsgYWdlbnRfc2lnczsgY291bnRlcl9hZ2VudF9pbmZvID0gU29tZSB7IGlkOyBhcml0eSA9IDI7IHBvcnRzIH0gfVxuICB8IE5vbmUgLT4geyBhZ2VudF9zaWdzOyBjb3VudGVyX2FnZW50X2luZm8gPSBOb25lIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY2Nfc2l0ZSA9IHsgc2l0ZV9saW5rOiAoaW50ICogaW50KSBvcHRpb247IHNpdGVfc3RhdGU6IGludCBvcHRpb24gfVxuXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogaW50O1xuICBub2RlX2lkX2luX3dpdG5lc3M6IGludDtcbiAgbm9kZV9zaXRlczogY2Nfc2l0ZSBhcnJheTtcbn1cblxudHlwZSBjb25uZWN0ZWRfY29tcG9uZW50ID0gY2Nfbm9kZSBhcnJheVxuXG5sZXQgcmVjIGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiIGRvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8ICh4LCB5KSA6OiBxIC0+XG4gICAgbGV0IG8gPSBhLih4KSBpblxuICAgIGxldCBwID0gYi4oeSkgaW5cbiAgICBvLm5vZGVfdHlwZSA9IHAubm9kZV90eXBlXG4gICAgJiZcbiAgICBsZXQgaV9vayA9XG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAoZnVuIF8gYiB4IHkgLT5cbiAgICAgICAgICBiXG4gICAgICAgICAgJiZcbiAgICAgICAgICBtYXRjaCB4LnNpdGVfc3RhdGUsIHkuc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPiBhID0gYlxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgfCAoU29tZSBfIHwgTm9uZSksIF8gLT4gZmFsc2UpXG4gICAgICAgIHRydWUgby5ub2RlX3NpdGVzIHAubm9kZV9zaXRlc1xuICAgIGluXG4gICAgaV9va1xuICAgICYmXG4gICAgKG1hdGNoXG4gICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0MmlcbiAgICAgICAgIChmdW4gXyBjIHggeSAtPlxuICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNcbiAgICAgICAgICAgfCBTb21lIHRvZG8gLT5cbiAgICAgICAgICAgICAobWF0Y2ggeC5zaXRlX2xpbmssIHkuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IGNcbiAgICAgICAgICAgICB8IFNvbWUgKGEsIHMpLCBTb21lIChiLCBzJykgLT5cbiAgICAgICAgICAgICAgIGlmIHMgPD4gcycgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAoIExpc3QuZmluZF9hbGwgKGZ1biAoYScsIGInKSAtPiBhID0gYScgfHwgYiA9IGInKSBkb24sXG4gICAgICAgICAgICAgICAgICAgICBMaXN0LmZpbmRfYWxsIChmdW4gKGEnLCBiJykgLT4gYSA9IGEnIHx8IGIgPSBiJykgdG9kbyApXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXywgXyB8IF8sIF8gOjogXyA6OiBfIHwgWyBfIF0sIFsgXyBdIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgfCBbIChhJywgYicpIF0sIFtdIHwgW10sIFsgKGEnLCBiJykgXSAtPlxuICAgICAgICAgICAgICAgICAgIGlmIGEgPSBhJyAmJiBiID0gYicgdGhlblxuICAgICAgICAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgfCBbXSwgW10gLT4gU29tZSAoKGEsIGIpIDo6IHRvZG8pXG4gICAgICAgICAgICAgICApKSlcbiAgICAgICAgIChTb21lIHEpIG8ubm9kZV9zaXRlcyBwLm5vZGVfc2l0ZXNcbiAgICAgd2l0aFxuICAgIHwgU29tZSB0b2RvJyAtPiBhZ2VudHNfYXJlX2NvbXBhdGlibGVzIGEgYiAoKHgsIHkpIDo6IGRvbikgdG9kbydcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBjbGFzc2lmeV9ieV90eXBlIHNpZ3MgbWl4ID1cbiAgbGV0IGxlbiA9IFNpZ25hdHVyZS5zaXplIHNpZ3MgaW5cbiAgbGV0IG91dCA9IEFycmF5Lm1ha2UgbGVuICgwLCBbXSkgaW5cbiAgbGV0IGNsYXNzaWZ5IGlkIGFnID1cbiAgICBsZXQgbmIsIGFncyA9IG91dC4oYWcubm9kZV90eXBlKSBpblxuICAgIG91dC4oYWcubm9kZV90eXBlKSA8LSBzdWNjIG5iLCBpZCA6OiBhZ3NcbiAgaW5cbiAgbGV0ICgpID0gQXJyYXkuaXRlcmkgY2xhc3NpZnkgbWl4IGluXG4gIG91dFxuXG5sZXQgZXF1YWwgY2J0X2EgYSBjYnRfYiBiID1cbiAgbWF0Y2ggVG9vbHMuYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIGNidF9hIGNidF9iIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSAoW10sIGFncykgLT4gYWdzID0gW11cbiAgfCBTb21lIChoMSA6OiBfLCBhZ3MpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYm9vbCBhZyAtPiBib29sIHx8IGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiIFtdIFsgaDEsIGFnIF0pXG4gICAgICBmYWxzZSBhZ3NcblxubGV0IGhhc2hfcHJpbWUgPSAyOVxuXG5sZXQgY29hcnNlX2hhc2ggY2J0ID1cbiAgQXJyYXkuZm9sZF9yaWdodCAoZnVuIChsLCBfKSBhY2MgLT4gbCArIChoYXNoX3ByaW1lICogYWNjKSkgY2J0IDBcblxudHlwZSB0ID0gKGludCAqIChpbnQgKiBpbnQgbGlzdCkgYXJyYXkgKiBjb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0IE1vZHMuSW50TWFwLnRcblxubGV0IGVtcHR5ID0gTW9kcy5JbnRNYXAuZW1wdHlcblxubGV0IGluY3JlbWVudF9pbl9zbmFwc2hvdCB+cmF3IHNpZ3MgeCBzID1cbiAgbGV0IGNidF94ID0gY2xhc3NpZnlfYnlfdHlwZSBzaWdzIHggaW5cbiAgbGV0IGhzID0gY29hcnNlX2hhc2ggY2J0X3ggaW5cbiAgbGV0IGwgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaHMgcyBpblxuICBsZXQgcmVjIGF1eF9pbmNyZW1lbnQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gWyAxLCBjYnRfeCwgeCBdXG4gICAgfCAoKG4sIGNidF95LCB5KSBhcyBoKSA6OiB0IC0+XG4gICAgICBpZiBlcXVhbCBjYnRfeCB4IGNidF95IHkgdGhlblxuICAgICAgICAoc3VjYyBuLCBjYnRfeSwgeSkgOjogdFxuICAgICAgZWxzZVxuICAgICAgICBoIDo6IGF1eF9pbmNyZW1lbnQgdFxuICBpblxuICBNb2RzLkludE1hcC5hZGQgaHNcbiAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAoMSwgY2J0X3gsIHgpIDo6IGxcbiAgICAgZWxzZVxuICAgICAgIGF1eF9pbmNyZW1lbnQgbClcbiAgICBzXG5cbmxldCByZWMgY291bnRlcl92YWx1ZSBjYyAobmlkLCBzaWQpIGNvdW50ID1cbiAgbGV0IGFnID0gY2MuKG5pZCkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaWQgYWNjIHNpIC0+XG4gICAgICBpZiBpZCA9IHNpZCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHNpLnNpdGVfbGluayB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIHggLT4gY291bnRlcl92YWx1ZSBjYyB4IChhY2MgKyAxKVxuICAgICAgKSlcbiAgICBjb3VudCBhZy5ub2RlX3NpdGVzXG5cbmxldCBjY190b191c2VyX2NjID8oa2VlcF9pbnZlcnRlZF9jb3VudGVycyA6IGJvb2wgPSBmYWxzZSkgfmRlYnVnX21vZGUgfnJhdyBzaWdzXG4gICAgY2MgPVxuICBsZXQgciA6IFJlbmFtaW5nLnQgPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBsZXQgKGNjX2xpc3Rfd2l0aG91dF9jb3VudGVycywgaW5kZXhlcywgXykgOiBjY19ub2RlIGxpc3QgKiBSZW5hbWluZy50ICogaW50ID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgKGFjYywgaW5kZXhlcywgcG9zKSBhZyAtPlxuICAgICAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGFnLm5vZGVfdHlwZSB0aGVuXG4gICAgICAgICAgYWNjLCBpbmRleGVzLCBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGluZGV4ZXMnID1cbiAgICAgICAgICAgIGlmIGkgPSBwb3MgdGhlblxuICAgICAgICAgICAgICBpbmRleGVzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGkgcG9zIGluZGV4ZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkluamVjdGl2aXR5IG9mIHJlbmFtaW5nIGluIHNuYXBzaG90XCIpKVxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiByXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhZyA6OiBhY2MsIGluZGV4ZXMnLCBwb3MgKyAxXG4gICAgICAgICkpXG4gICAgICAoW10sIHIsIDApIGNjXG4gIGluXG4gIGxldCBjY193aXRob3V0X2NvdW50ZXJzIDogY2Nfbm9kZSBhcnJheSA9XG4gICAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgY2NfbGlzdF93aXRob3V0X2NvdW50ZXJzKVxuICBpblxuICBbfFxuICAgIEFycmF5Lm1hcFxuICAgICAgKGZ1biBhZyAtPlxuICAgICAgICBsZXQgbm9kZV9zaXRlc19hbGwgOiBVc2VyX2dyYXBoLmNjX3NpdGUgYXJyYXkgPVxuICAgICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAgIChmdW4gaWQgc2kgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID1cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWcubm9kZV90eXBlKVxuICAgICAgICAgICAgICAgICAgICBpZDtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAobGV0IHBvcnRfc3RhdGVzID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpLnNpdGVfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFNvbWUgW11cbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZy5ub2RlX3R5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggc2kuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzO1xuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgfCBTb21lIChkbl9pZCwgcykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBkbl9pZCcgPVxuICAgICAgICAgICAgICAgICAgICAgICB0cnkgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5kZXhlcyBkbl9pZFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFJlbmFtaW5nLlVuZGVmaW5lZCB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBkbl9pZFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgY2MuKGRuX2lkKS5ub2RlX3R5cGVcbiAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Db3VudGVyIChjb3VudGVyX3ZhbHVlIGNjIChkbl9pZCwgcykgMClcbiAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5MSU5LUyBbICgwLCBkbl9pZCcpLCBzIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgYWcubm9kZV9zaXRlc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbm9kZV9zaXRlcyA6IFVzZXJfZ3JhcGguY2Nfc2l0ZSBhcnJheSA9XG4gICAgICAgICAgaWYga2VlcF9pbnZlcnRlZF9jb3VudGVycyB0aGVuXG4gICAgICAgICAgICBub2RlX3NpdGVzX2FsbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqIFJlbW92ZSBpbnZlcnRlZCBjb3VudGVycyBmcm9tIHVzZXIgc25hcHNob3QgKilcbiAgICAgICAgICAgIG5vZGVfc2l0ZXNfYWxsIHw+IEFycmF5LnRvX2xpc3RcbiAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIChmdW4gKHNpdGUgOiBVc2VyX2dyYXBoLmNjX3NpdGUpIDogYm9vbCAtPlxuICAgICAgICAgICAgICAgICAgIG5vdCAoU2lnbmF0dXJlLmlzX2ludmVydGVkX2NvdW50ZXIgc2l0ZS5zaXRlX25hbWUpKVxuICAgICAgICAgICAgfD4gQXJyYXkub2ZfbGlzdFxuICAgICAgICBpblxuXG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfaWQgPVxuICAgICAgICAgICAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAgICAgICAgICAgU29tZSBhZy5ub2RlX2lkX2luX3dpdG5lc3NcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSk7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfdHlwZSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSBhZy5ub2RlX3R5cGU7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfc2l0ZXM7XG4gICAgICAgICAgfSlcbiAgICAgIGNjX3dpdGhvdXRfY291bnRlcnM7XG4gIHxdXG5cbmxldCBmb2xkIGYgeCBzID1cbiAgTW9kcy5JbnRNYXAuZm9sZFxuICAgIChmdW4gXyBsIGFjYyAtPiBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgKG5iLCBfLCBjYykgLT4gZiBhIG5iIGNjKSBhY2MgbClcbiAgICBzIHhcblxubGV0IGV4cG9ydCB+ZGVidWdfbW9kZSB+cmF3IHNpZ3MgcyA9XG4gIGZvbGQgKGZ1biBhIHggeSAtPiAoeCwgY2NfdG9fdXNlcl9jYyB+ZGVidWdfbW9kZSB+cmF3IHNpZ3MgeSkgOjogYSkgW10gc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50ICogaW50XG4oKiogYWdlbnRfaWQgKiBhZ2VudF90eXBlICopXG5cbnR5cGUgYWcgPSB0XG5cbmxldCBtYWtlIH5pZCB+c29ydCA9IGlkLCBzb3J0XG5cbmxldCBwcmludCA/c2lncyB+d2l0aF9pZCBmIChpLCB0eSkgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgdHkgKGZ1biBmIC0+XG4gICAgICAgIGlmIHdpdGhfaWQgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiLyolaSovXCIgaSlcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJuJWlcIiBpXG5cbmxldCBwcmludF9zaXRlID9zaWdzIChpLCBhZ2VudCkgZiBpZCA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnZW50IGYgaWRcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJuJWlzJWlcIiBpIGlkXG5cbmxldCBwcmludF9pbnRlcm5hbCA/c2lncyAoaSwgYWdlbnQpIHNpdGUgZiBpZCA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnZW50IHNpdGUgZiAoU29tZSBpZClcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJuJWlzJWl+JWlcIiBpIHNpdGUgaWRcblxubGV0IHByaW50X3Jhd19pbnRlcm5hbCA/c2lncyAoaSwgYWdlbnQpIHNpdGUgZiBpZCA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ2VudCBzaXRlIGYgaWRcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJuJWlzJWl+JWlcIiBpIHNpdGUgaWRcblxubGV0IHJlbmFtZSB+ZGVidWdfbW9kZSBpbmogKG5faWQsIG5fdHkpID1cbiAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIG5faWQsIG5fdHlcblxubGV0IHNvcnQgKF8sIHR5KSA9IHR5XG5sZXQgaWQgKGlkLCBfKSA9IGlkXG5sZXQgY29tcGFyZSAoaWQxLCBfKSAoaWQyLCBfKSA9IE1vZHMuaW50X2NvbXBhcmUgaWQxIGlkMlxubGV0IGpzb25fZGljdGlvbm5hcnkgPSBcIlxcXCJhZ2VudFxcXCI6e1xcXCJpZFxcXCI6MCxcXFwidHlwZVxcXCI6MX1cIlxuXG5sZXQgd3JpdGVfanNvbiBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBhXG5cbmxldCByZWFkX2pzb24gcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludCBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxuXG5sZXQgdG9fanNvbiAoaWQsIHR5KSA9IGBMaXN0IFsgYEludCBpZDsgYEludCB0eSBdXG5cbmxldCBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgaWQ7IGBJbnQgdHkgXSAtPiBpZCwgdHlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5cbm1vZHVsZSBTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGFnXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IHByaW50ID9zaWdzOk5vbmUgfndpdGhfaWQ6dHJ1ZVxuZW5kKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEVkZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQWdlbnQudCAqIGludFxuICAoKiogYWdlbnQgKiBzaXRlICopXG5cbiAgbGV0IF9jb21wYXJlICgobiwgXyksIHMpICgobicsIF8pLCBzJykgPVxuICAgIGxldCBjID0gTW9kcy5pbnRfY29tcGFyZSBuIG4nIGluXG4gICAgaWYgYyA8PiAwIHRoZW5cbiAgICAgIGNcbiAgICBlbHNlXG4gICAgICBNb2RzLmludF9jb21wYXJlIHMgcydcblxuICAoKiBsZXQgZHVtbXlfbGluayA9ICgoLTEsLTEpLC0xKSAqKVxuZW5kXG5cbigqIGZ1bmN0aW9ucyB1c2luZyB0aGUgY2FjaGUgYXJlIHJlc3BvbnNpYmxlIG9mIHJlc2V0aW5nIHRoZSBjYWNoZSBhdCBleGl0ICopXG5tb2R1bGUgQ2FjaGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHRlc3RzOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICAgIGJhZzogaW50IE1vZHMuRHluQXJyYXkudDtcbiAgICBtdXRhYmxlIGxpbWl0OiBpbnQ7XG4gIH1cblxuICBsZXQgaW50X2wgPSAzMSAoKlN5cy5pbnRfc2l6ZSopXG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgeyB0ZXN0cyA9IE1vZHMuRHluQXJyYXkubWFrZSAxIDA7IGJhZyA9IE1vZHMuRHluQXJyYXkubWFrZSAxIDA7IGxpbWl0ID0gMCB9XG5cbiAgbGV0IG1hcmsgdCBpID1cbiAgICBsZXQgeCA9IGkgLyBpbnRfbCBpblxuICAgIGxldCBvbGQgPSBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIHggaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgb2xkID0gMCB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdC5iYWcgdC5saW1pdCB4IGluXG4gICAgICAgIHQubGltaXQgPC0gc3VjYyB0LmxpbWl0XG4gICAgICApXG4gICAgaW5cbiAgICBNb2RzLkR5bkFycmF5LnNldCB0LnRlc3RzIHggKG9sZCBsb3IgKDEgbHNsIChpIG1vZCBpbnRfbCkpKVxuXG4gIGxldCB0ZXN0IHQgaSA9XG4gICAgTW9kcy5EeW5BcnJheS5nZXQgdC50ZXN0cyAoaSAvIGludF9sKSBsYW5kICgxIGxzbCAoaSBtb2QgaW50X2wpKSA8PiAwXG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIGxldCAoKSA9XG4gICAgICBUb29scy5pdGVyaVxuICAgICAgICAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgdC50ZXN0cyAoTW9kcy5EeW5BcnJheS5nZXQgdC5iYWcgaSkgMClcbiAgICAgICAgdC5saW1pdFxuICAgIGluXG4gICAgdC5saW1pdCA8LSAwXG5cbiAgbGV0IGl0ZXJpX3Jlc2V0IGYgdCA9XG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4gayAtPlxuICAgICAgICAgIGxldCBpID0gTW9kcy5EeW5BcnJheS5nZXQgdC5iYWcgayBpblxuICAgICAgICAgIGxldCB2ID0gTW9kcy5EeW5BcnJheS5nZXQgdC50ZXN0cyBpIGluXG4gICAgICAgICAgaWYgdiA8PiAwIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGludF9sICogaSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgICAgICAgICAoZnVuIGogLT4gaWYgdiBsYW5kICgxIGxzbCBqKSA8PiAwIHRoZW4gZiAoYWNjICsgaikpXG4gICAgICAgICAgICAgICAgaW50X2xcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNb2RzLkR5bkFycmF5LnNldCB0LnRlc3RzIGkgMFxuICAgICAgICAgICkpXG4gICAgICAgIHQubGltaXRcbiAgICBpblxuICAgIHQubGltaXQgPC0gMFxuZW5kXG5cbmxldCBnbHVlX2Nvbm5lY3RlZF9jb21wb25lbnQgbGlua3MgY2FjaGUgY2NzIG5vZGUxIG5vZGUyID1cbiAgbGV0IGNjX2lkX29wID0gTW9kcy5EeW5BcnJheS5nZXQgY2NzIG5vZGUyIGluXG4gIGxldCByZWMgZXhwbG9yZV9zaXRlIGlkIHNpdGUgbmV4dCA9XG4gICAgaWYgc2l0ZSA9IDAgdGhlblxuICAgICAgbmV4dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKS4ocHJlZCBzaXRlKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZXhwbG9yZV9zaXRlIGlkIChwcmVkIHNpdGUpIG5leHRcbiAgICAgIHwgU29tZSAoKGlkJywgXyksIF8pIC0+XG4gICAgICAgIGlmIE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBpZCcgPSBjY19pZF9vcCB8fCBDYWNoZS50ZXN0IGNhY2hlIGlkJyB0aGVuXG4gICAgICAgICAgZXhwbG9yZV9zaXRlIGlkIChwcmVkIHNpdGUpIG5leHRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBpZCcgaW5cbiAgICAgICAgICBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgKGlkJyA6OiBuZXh0KVxuICAgICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGlzX2luX2NjIG5leHQgPSBmdW5jdGlvblxuICAgIHwgaWQgOjogdG9kb3MgLT5cbiAgICAgIGlzX2luX2NjXG4gICAgICAgIChleHBsb3JlX3NpdGUgaWQgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSBuZXh0KVxuICAgICAgICB0b2Rvc1xuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgQ2FjaGUuaXRlcmlfcmVzZXQgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBpIGNjX2lkX29wKSBjYWNoZVxuICAgICAgfCBfIC0+IGlzX2luX2NjIFtdIG5leHQpXG4gIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgbm9kZTEgaW5cbiAgaXNfaW5fY2MgW10gWyBub2RlMSBdXG5cbmxldCBzZXBhcmF0ZV9jb25uZWN0ZWRfY29tcG9uZW50IGxpbmtzIChjYWNoZTEsIGNhY2hlMikgY2NzIG5vZGUxIG5vZGUyID1cbiAgbGV0IG9sZF9jY19pZCA9IE9wdGlvbl91dGlsLnVuc29tZSAoLTEpIChNb2RzLkR5bkFycmF5LmdldCBjY3Mgbm9kZTEpIGluXG4gIGxldCByZWMgaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgc2l0ZSBuZXh0ID1cbiAgICBpZiBzaXRlID0gMCB0aGVuXG4gICAgICBTb21lIG5leHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkuKHByZWQgc2l0ZSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGluc3BlY3Rfc2l0ZSBjYWNoZSA/ZHN0X2NhY2hlIGlkIChwcmVkIHNpdGUpIG5leHRcbiAgICAgIHwgU29tZSAoKGlkJywgXyksIF8pIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgbWF0Y2ggZHN0X2NhY2hlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICB8IFNvbWUgZGMgLT4gQ2FjaGUudGVzdCBkYyBpZCdcbiAgICAgICAgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBpZiBDYWNoZS50ZXN0IGNhY2hlIGlkJyB0aGVuXG4gICAgICAgICAgaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGluc3BlY3Rfc2l0ZSBjYWNoZSA/ZHN0X2NhY2hlIGlkIChwcmVkIHNpdGUpIChpZCcgOjogbmV4dClcbiAgICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IHJlYyBtYXJrX25ld19jYyBvcmlnIGNhY2hlIG5leHQgPSBmdW5jdGlvblxuICAgIHwgaWQgOjogdG9kb3MgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgaW5zcGVjdF9zaXRlIGNhY2hlIGlkIChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSkgbmV4dFxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSBuZXh0JyAtPiBtYXJrX25ld19jYyBvcmlnIGNhY2hlIG5leHQnIHRvZG9zKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBDYWNoZS5pdGVyaV9yZXNldCAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGkgKFNvbWUgb3JpZykpIGNhY2hlXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKG9sZF9jY19pZCwgb3JpZylcbiAgICAgIHwgXyAtPiBtYXJrX25ld19jYyBvcmlnIGNhY2hlIFtdIG5leHQpXG4gIGluXG4gIGxldCByZWMgaW5fc2FtZV9jYyBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIG90aGVyX25leHQgdGhpc19vcmlnIHRoaXNfY2FjaGVcbiAgICAgIHRoaXNfbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBpbnNwZWN0X3NpdGUgdGhpc19jYWNoZSB+ZHN0X2NhY2hlOm90aGVyX2NhY2hlIGlkXG4gICAgICAgICAgIChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSlcbiAgICAgICAgICAgdGhpc19uZXh0XG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IHRoaXNfY2FjaGUgaW5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgb3RoZXJfY2FjaGUgaW5cbiAgICAgICAgTm9uZVxuICAgICAgfCBTb21lIG5leHQnIC0+XG4gICAgICAgIGluX3NhbWVfY2Mgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBvdGhlcl9uZXh0IHRoaXNfb3JpZyB0aGlzX2NhY2hlIG5leHQnXG4gICAgICAgICAgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIHRoaXNfbmV4dCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmIENhY2hlLnRlc3QgdGhpc19jYWNoZSBvbGRfY2NfaWQgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgdGhpc19jYWNoZSBpblxuICAgICAgICAgIG1hcmtfbmV3X2NjIG90aGVyX29yaWcgb3RoZXJfY2FjaGUgW10gb3RoZXJfbmV4dFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IG90aGVyX2NhY2hlIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENhY2hlLml0ZXJpX3Jlc2V0XG4gICAgICAgICAgICAgIChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaSAoU29tZSB0aGlzX29yaWcpKVxuICAgICAgICAgICAgICB0aGlzX2NhY2hlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lIChvbGRfY2NfaWQsIHRoaXNfb3JpZylcbiAgICAgICAgKVxuICAgICAgfCBfIC0+XG4gICAgICAgIGluX3NhbWVfY2MgdGhpc19vcmlnIHRoaXNfY2FjaGUgdGhpc19uZXh0IG90aGVyX29yaWcgb3RoZXJfY2FjaGUgW11cbiAgICAgICAgICBvdGhlcl9uZXh0KVxuICBpblxuICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlMSBub2RlMSBpblxuICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlMiBub2RlMiBpblxuICBpbl9zYW1lX2NjIG5vZGUxIGNhY2hlMSBbIG5vZGUxIF0gbm9kZTIgY2FjaGUyIFtdIFsgbm9kZTIgXVxuXG50eXBlIHRhYmxlcyA9IHtcbiAgY29ubmVjdDogRWRnZS50IG9wdGlvbiBhcnJheSBNb2RzLkR5bkFycmF5LnQ7XG4gIHN0YXRlOiBpbnQgb3B0aW9uIGFycmF5IE1vZHMuRHluQXJyYXkudDtcbiAgc29ydDogaW50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQ7XG4gIGNvbm5lY3RlZF9jb21wb25lbnQ6IGludCBvcHRpb24gTW9kcy5EeW5BcnJheS50IG9wdGlvbjtcbiAgY2FjaGVzOiBDYWNoZS50ICogQ2FjaGUudDtcbn1cblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIHRhYmxlczogdGFibGVzIG9wdGlvbjtcbiAgbWlzc2luZ3M6IE1vZHMuSW50MlNldC50O1xuICBmcmVlX2lkOiBpbnQgKiBpbnQgbGlzdDtcbn1cbigqKiAoYWdlbnQsc2l0ZSAtPiBiaW5kaW5nX3N0YXRlOyBtaXNzaW5ncyk7XG4gICAgYWdlbnQsc2l0ZSAtPiBpbnRlcm5hbF9zdGF0ZTsgYWdlbnQgLT4gc29ydDsgZnJlZV9pZFxuICAgIHRoZSBmcmVlIHNpdGVzIGFyZSBuZWl0aGVyIGluIG1pc3NpbmdzIG5vciBpbiBsaW5raW5nX2Rlc3RpbmF0aW9uICopXG5cbmxldCBlbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gIHtcbiAgICB0YWJsZXMgPVxuICAgICAgU29tZVxuICAgICAgICB7XG4gICAgICAgICAgY29ubmVjdCA9IE1vZHMuRHluQXJyYXkubWFrZSAxIFt8fF07XG4gICAgICAgICAgc3RhdGUgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSBbfHxdO1xuICAgICAgICAgIHNvcnQgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSBOb25lO1xuICAgICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnQgPVxuICAgICAgICAgICAgKGlmIHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgdGhlblxuICAgICAgICAgICAgICAgU29tZSAoTW9kcy5EeW5BcnJheS5tYWtlIDEgTm9uZSlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICBjYWNoZXMgPSBDYWNoZS5jcmVhdGUgKCksIENhY2hlLmNyZWF0ZSAoKTtcbiAgICAgICAgfTtcbiAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5lbXB0eTtcbiAgICBmcmVlX2lkID0gMCwgW107XG4gIH1cblxubGV0IGNvcHkgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICB7XG4gICAgICB0YWJsZXMgPVxuICAgICAgICBTb21lXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29ubmVjdCA9IE1vZHMuRHluQXJyYXkubWFwIEFycmF5LmNvcHkgdGFibGVzLmNvbm5lY3Q7XG4gICAgICAgICAgICBzdGF0ZSA9IE1vZHMuRHluQXJyYXkubWFwIEFycmF5LmNvcHkgdGFibGVzLnN0YXRlO1xuICAgICAgICAgICAgc29ydCA9IE1vZHMuRHluQXJyYXkuY29weSB0YWJsZXMuc29ydDtcbiAgICAgICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnQgPVxuICAgICAgICAgICAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgY2NzIC0+IFNvbWUgKE1vZHMuRHluQXJyYXkuY29weSBjY3MpKTtcbiAgICAgICAgICAgIGNhY2hlcyA9IENhY2hlLmNyZWF0ZSAoKSwgQ2FjaGUuY3JlYXRlICgpO1xuICAgICAgICAgIH07XG4gICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgIG1pc3NpbmdzID0gZ3JhcGgubWlzc2luZ3M7XG4gICAgfVxuXG50eXBlIHN0YXRzID0geyBuYl9hZ2VudHM6IGludCB9XG5cbmxldCBzdGF0cyBncmFwaCA9XG4gIGxldCB0b3BfaWQsIGZyZWVfaWRzID0gZ3JhcGguZnJlZV9pZCBpblxuICB7IG5iX2FnZW50cyA9IHRvcF9pZCAtIExpc3QubGVuZ3RoIGZyZWVfaWRzIH1cblxubGV0IGFkZF9hZ2VudCA/aWQgc2lncyB0eSBncmFwaCA9XG4gIGxldCBhciA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5IGluXG4gIGxldCBhbCA9IEFycmF5Lm1ha2UgYXIgTm9uZSBpblxuICBsZXQgYWkgPSBBcnJheS5tYWtlIGFyIE5vbmUgaW5cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgaCwgZnJlZV9pZCA9XG4gICAgICBtYXRjaCBpZCB3aXRoXG4gICAgICB8IFNvbWUgaWQgLT5cbiAgICAgICAgKCBpZCxcbiAgICAgICAgICBsZXQgbmV3X2lkLCBsID0gZ3JhcGguZnJlZV9pZCBpblxuICAgICAgICAgIGlmIGlkIDwgbmV3X2lkIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggTGlzdC5wYXJ0aXRpb24gKGZ1biBpIC0+IGkgPSBpZCkgbCB3aXRoXG4gICAgICAgICAgICB8IFsgXyBdLCB0IC0+IG5ld19pZCwgdFxuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAoXCJUcnkgdG8gYWRkIGFuIGFnZW50IHdpdGggYSB0aGUgZnJlZSBpZCBcIlxuICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IGlkKSkpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAoIHN1Y2MgaWQsXG4gICAgICAgICAgICAgIFRvb2xzLnJlY3RpIChmdW4gYWNjIGsgLT4gKGsgKyBuZXdfaWQpIDo6IGFjYykgbCAoaWQgLSBuZXdfaWQpICkgKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBncmFwaC5mcmVlX2lkIHdpdGhcbiAgICAgICAgfCBuZXdfaWQsIGggOjogdCAtPiBoLCAobmV3X2lkLCB0KVxuICAgICAgICB8IG5ld19pZCwgW10gLT4gbmV3X2lkLCAoc3VjYyBuZXdfaWQsIFtdKSlcbiAgICBpblxuICAgIGxldCBtaXNzaW5ncycgPVxuICAgICAgVG9vbHMucmVjdGkgKGZ1biBhIHMgLT4gTW9kcy5JbnQyU2V0LmFkZCAoaCwgcykgYSkgZ3JhcGgubWlzc2luZ3MgYXJcbiAgICBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5jb25uZWN0IGggYWwgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc3RhdGUgaCBhaSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zb3J0IGggKFNvbWUgdHkpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaCAoU29tZSBoKVxuICAgIGluXG4gICAgaCwgeyB0YWJsZXMgPSBTb21lIHRhYmxlczsgbWlzc2luZ3MgPSBtaXNzaW5ncyc7IGZyZWVfaWQgfVxuXG5sZXQgYWRkX2ZyZWUgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocykgPC0gTm9uZSBpblxuICAgIHtcbiAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgbWlzc2luZ3MgPSBNb2RzLkludDJTZXQucmVtb3ZlIChhZywgcykgZ3JhcGgubWlzc2luZ3M7XG4gICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICB9XG5cbmxldCBhZGRfaW50ZXJuYWwgYWcgcyBpIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgPC0gU29tZSBpIGluXG4gICAgeyB0YWJsZXMgPSBTb21lIHRhYmxlczsgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5nczsgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQgfVxuXG5sZXQgYWRkX2xpbmsgKGFnLCB0eSkgcyAoYWcnLCB0eScpIHMnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocykgPC0gU29tZSAoKGFnJywgdHknKSwgcycpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnJykuKHMnKSA8LSBTb21lICgoYWcsIHR5KSwgcylcbiAgICBpblxuICAgIGxldCBvdXQgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MgLT5cbiAgICAgICAgbGV0IGkgPSBPcHRpb25fdXRpbC51bnNvbWUgKC0xKSAoTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnKSBpblxuICAgICAgICBsZXQgaiA9IE9wdGlvbl91dGlsLnVuc29tZSAoLTIpIChNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcnKSBpblxuICAgICAgICBpZiBpID0gaiB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgZ2x1ZV9jb25uZWN0ZWRfY29tcG9uZW50IHRhYmxlcy5jb25uZWN0IChmc3QgdGFibGVzLmNhY2hlcykgY2NzIGFnXG4gICAgICAgICAgICAgIGFnJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZSAoaiwgaSlcbiAgICAgICAgKVxuICAgIGluXG4gICAgKCB7XG4gICAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgICBtaXNzaW5ncyA9XG4gICAgICAgICAgTW9kcy5JbnQyU2V0LnJlbW92ZSAoYWcsIHMpXG4gICAgICAgICAgICAoTW9kcy5JbnQyU2V0LnJlbW92ZSAoYWcnLCBzJykgZ3JhcGgubWlzc2luZ3MpO1xuICAgICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgIH0sXG4gICAgICBvdXQgKVxuXG5sZXQgcmVtb3ZlX2FnZW50IGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuY29ubmVjdCBhZyBbfHxdIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnN0YXRlIGFnIFt8fF0gaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc29ydCBhZyBOb25lIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgYWcgTm9uZVxuICAgIGluXG4gICAge1xuICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5maWx0ZXIgKGZ1biAoYWcnLCBfKSAtPiBhZyA8PiBhZycpIGdyYXBoLm1pc3NpbmdzO1xuICAgICAgZnJlZV9pZCA9XG4gICAgICAgIChsZXQgbmV3X2lkLCBpZHMgPSBncmFwaC5mcmVlX2lkIGluXG4gICAgICAgICBuZXdfaWQsIGFnIDo6IGlkcyk7XG4gICAgfVxuXG5sZXQgcmVtb3ZlX2ZyZWUgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gYXNzZXJ0ICgoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA9IE5vbmUpIGluXG4gICAge1xuICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5hZGQgKGFnLCBzKSBncmFwaC5taXNzaW5ncztcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgIH1cblxubGV0IGdldF9pbnRlcm5hbCBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSB3aXRoXG4gICAgfCBTb21lIGkgLT4gaVxuICAgIHwgTm9uZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiU2l0ZSBcIiBeIHN0cmluZ19vZl9pbnQgcyBeIFwiIG9mIGFnZW50IFwiIF4gc3RyaW5nX29mX2ludCBhZ1xuICAgICAgIF4gXCIgaGFzIG5vIGludGVybmFsIHN0YXRlIGluIHRoZSBjdXJyZW50IGdyYXBoLlwiKSlcblxubGV0IGdldF9zaXRlcyBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBhcnIgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcgaW5cbiAgICBBcnJheS5sZW5ndGggYXJyXG5cbmxldCBnZXRfc29ydCBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIChtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBhZyB3aXRoXG4gICAgfCBTb21lIHR5IC0+IHR5XG4gICAgfCBOb25lIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJBZ2VudCBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBoYXMgbm8gdHlwZSBpbiB0aGUgY3VycmVudCBncmFwaC5cIikpXG5cbmxldCByZW1vdmVfaW50ZXJuYWwgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0IGkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgPC0gTm9uZSBpblxuICAgIChtYXRjaCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICggaSxcbiAgICAgICAge1xuICAgICAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgICAgIG1pc3NpbmdzID0gZ3JhcGgubWlzc2luZ3M7XG4gICAgICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICAgIH0gKSlcblxubGV0IHJlbW92ZV9saW5rIGFnIHMgYWcnIHMnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnJykuKHMnKSA8LSBOb25lIGluXG4gICAgbGV0IG91dCA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPlxuICAgICAgICBzZXBhcmF0ZV9jb25uZWN0ZWRfY29tcG9uZW50IHRhYmxlcy5jb25uZWN0IHRhYmxlcy5jYWNoZXMgY2NzIGFnIGFnJ1xuICAgIGluXG4gICAgKCB7XG4gICAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgICBtaXNzaW5ncyA9XG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmFkZCAoYWcsIHMpIChNb2RzLkludDJTZXQuYWRkIChhZycsIHMnKSBncmFwaC5taXNzaW5ncyk7XG4gICAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgfSxcbiAgICAgIG91dCApXG5cbmxldCBpc19hZ2VudCAoYWcsIHR5KSBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIChtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBhZyB3aXRoXG4gICAgfCBTb21lIHR5JyAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0ICh0eSA9IHR5JykgaW5cbiAgICAgIHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG5cbmxldCBpc19hZ2VudF9pZCBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIDw+IE5vbmVcblxubGV0IGlzX2ZyZWUgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICB0IDw+IFt8fF0gJiYgdC4ocykgPSBOb25lXG5cbmxldCBpc19pbnRlcm5hbCBpIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZyBpblxuICAgIHQgPD4gW3x8XVxuICAgICYmXG4gICAgKG1hdGNoIHQuKHMpIHdpdGhcbiAgICB8IFNvbWUgaiAtPiBqID0gaVxuICAgIHwgTm9uZSAtPiBmYWxzZSlcblxubGV0IGxpbmtfZXhpc3RzIGFnIHMgYWcnIHMnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIHQgPD4gW3x8XVxuICAgICYmXG4gICAgKG1hdGNoIHQuKHMpIHdpdGhcbiAgICB8IFNvbWUgKChhZycnLCBfKSwgcycnKSAtPiBhZycgPSBhZycnICYmIHMnID0gcycnXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuXG5sZXQgZXhpc3RzX2ZyZXNoIGFnIHMgdHkgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgaWYgdCA9IFt8fF0gdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggdC4ocykgd2l0aFxuICAgICAgfCBTb21lICgoYWcnLCB0eScpLCBzJycpIC0+XG4gICAgICAgIGlmIHR5JyA9IHR5ICYmIHMnID0gcycnIHRoZW5cbiAgICAgICAgICBTb21lIGFnJ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICApXG5cbmxldCBsaW5rX2Rlc3RpbmF0aW9uIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT4gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocylcblxubGV0IGl0ZXJfbmVpZ2hib3JzIGYgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgYWdfdGFibGUgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIEFycmF5Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHMgLT4gZiAoZnN0IHMpKVxuICAgICAgYWdfdGFibGVcblxubGV0IGFsbF9hZ2VudHNfd2hlcmUgZiBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBvdXQgPSBJbnRDb2xsZWN0aW9uLmNyZWF0ZSAwIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpZCAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB0eSB3aGVuIGYgKGlkLCB0eSkgLT4gSW50Q29sbGVjdGlvbi5hZGQgaWQgb3V0XG4gICAgICAgICAgfCBfIC0+ICgpKVxuICAgICAgICB0YWJsZXMuc29ydFxuICAgIGluXG4gICAgb3V0XG5cbmxldCBpbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgYWcgYWcnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICBcImluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCB3aGlsZSBub3QgdHJhY2tpbmcgY2NzXCIpKVxuICAgIHwgU29tZSBjY3MgLT4gTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnID0gTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnJylcblxubGV0IGdldF9jb25uZWN0ZWRfY29tcG9uZW50IGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICBcImdldF9jb25uZWN0ZWRfY29tcG9uZW50IHdoaWxlIG5vdCB0cmFja2luZyBjY3NcIikpXG4gICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcpXG5cbigqKiBUaGUgc25hcHNob3QgbWFjaGluZXJ5ICopXG5sZXQgb25lX2Nvbm5lY3RlZF9jb21wb25lbnQgKHNpZ3MgOiBTaWduYXR1cmUucykgKHR5IDogaW50KSAobm9kZSA6IGludClcbiAgICAoZ3JhcGggOiB0YWJsZXMpIDogU25hcHNob3QuY2Nfbm9kZSBhcnJheSA9XG4gIGxldCByZWMgYnVpbGQgKGlkIDogaW50KVxuICAgICAgKGFjYyA6IChpbnQgKiBpbnQgKiAoRWRnZS50IG9wdGlvbiAqIGludCBvcHRpb24pIGxpc3QpIGxpc3QpXG4gICAgICAoa25vd24gOiBpbnQgTW9kcy5JbnRNYXAudCkgOiAoaW50ICogaW50KSBsaXN0IC0+IFNuYXBzaG90LmNjX25vZGUgYXJyYXkgPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgVG9vbHMuYXJyYXlfcmV2X21hcF9vZl9saXN0XG4gICAgICAgIChmdW4gKG5vZGVfaWRfaW5fd2l0bmVzcywgbm9kZV90eXBlLCBzaXRlcykgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX2lkX2luX3dpdG5lc3M7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX3R5cGU7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX3NpdGVzID1cbiAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChsaW5rLCBzaXRlX3N0YXRlKSAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBTbmFwc2hvdC5zaXRlX2xpbmsgPVxuICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKG4sIF8pLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgKC0xKSBuIGtub3duLCBzKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGluaztcbiAgICAgICAgICAgICAgICAgICAgU25hcHNob3Quc2l0ZV9zdGF0ZTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgc2l0ZXM7XG4gICAgICAgICAgfSlcbiAgICAgICAgYWNjXG4gICAgfCAobm9kZSwgdHkpIDo6IHRvZG9zIC0+XG4gICAgICBpZiBDYWNoZS50ZXN0IChmc3QgZ3JhcGguY2FjaGVzKSBub2RlIHRoZW5cbiAgICAgICAgYnVpbGQgaWQgYWNjIGtub3duIHRvZG9zXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgZ3JhcGguc29ydCBub2RlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRWRnZXMub25lX2Nvbm5lY3RlZF9jb21wb25lbnRcIlxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgKGZzdCBncmFwaC5jYWNoZXMpIG5vZGUgaW5cbiAgICAgICAgICBsZXQga25vd24nID0gTW9kcy5JbnRNYXAuYWRkIG5vZGUgaWQga25vd24gaW5cbiAgICAgICAgICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eSBpblxuICAgICAgICAgIGxldCB0b2RvcycsIHBvcnRzID1cbiAgICAgICAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgIChmdW4gKHRvZG9zLCBhY2MpIGkgLT5cbiAgICAgICAgICAgICAgICBsZXQgbGluayA9IChNb2RzLkR5bkFycmF5LmdldCBncmFwaC5jb25uZWN0IG5vZGUpLihpKSBpblxuICAgICAgICAgICAgICAgICggKG1hdGNoIGxpbmsgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRvZG9zXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKCgobicsIF8pIGFzIHApLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBNb2RzLkludE1hcC5tZW0gbicga25vd24nIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICB0b2Rvc1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgcCA6OiB0b2RvcyksXG4gICAgICAgICAgICAgICAgICAobGluaywgKE1vZHMuRHluQXJyYXkuZ2V0IGdyYXBoLnN0YXRlIG5vZGUpLihpKSkgOjogYWNjICkpXG4gICAgICAgICAgICAgICh0b2RvcywgW10pIGFyaXR5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBidWlsZCAoc3VjYyBpZCkgKChub2RlLCB0eSwgcG9ydHMpIDo6IGFjYykga25vd24nIHRvZG9zJ1xuICAgICAgKVxuICBpblxuICBidWlsZCAwIFtdIE1vZHMuSW50TWFwLmVtcHR5IFsgbm9kZSwgdHkgXVxuXG5sZXQgc3BlY2llcyB+ZGVidWdfbW9kZSBzaWdzIHJvb3QgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgc3BlY2llID1cbiAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IHJvb3Qgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAoXCJTb3J0IG9mIG5vZGUgdW5hdmFpbGFibGUgXCIgXiBzdHJpbmdfb2ZfaW50IHJvb3QpKSlcbiAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICBTbmFwc2hvdC5jY190b191c2VyX2NjIH5kZWJ1Z19tb2RlIH5yYXc6dHJ1ZSBzaWdzXG4gICAgICAgICAgKG9uZV9jb25uZWN0ZWRfY29tcG9uZW50IHNpZ3MgdHkgcm9vdCB0YWJsZXMpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgc3BlY2llXG5cbmxldCByZWMgYXV4X2J1aWxkX3NuYXBzaG90IChyYXcgOiBib29sKSAoc2lncyA6IFNpZ25hdHVyZS5zKSAodGFibGVzIDogdGFibGVzKVxuICAgIChjY3MgOiBTbmFwc2hvdC50KSAobm9kZSA6IGludCkgOiBTbmFwc2hvdC50ID1cbiAgaWYgbm9kZSA9IE1vZHMuRHluQXJyYXkubGVuZ3RoIHRhYmxlcy5zb3J0IHRoZW4gKFxuICAgICgqIFdlIHdlbnQgdGhyb3VnaCBhbGwgbm9kZXMsIHdlIHJldHVybiB0aGUgZnVsbCBzbmFwc2hvdCAqKVxuICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICBjY3NcbiAgKSBlbHNlIGlmIENhY2hlLnRlc3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBub2RlIHRoZW5cbiAgICAoKiBBbHJlYWR5IGluIGNhY2hlLCB3ZSBjb250aW51ZSB0byB0aGUgbmV4dCBub2RlICopXG4gICAgYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBjY3MgKHN1Y2Mgbm9kZSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXMgY2NzIChzdWNjIG5vZGUpXG4gICAgfCBTb21lICh0eSA6IGludCkgLT5cbiAgICAgIGxldCBvdXQgPSBvbmVfY29ubmVjdGVkX2NvbXBvbmVudCBzaWdzIHR5IG5vZGUgdGFibGVzIGluXG4gICAgICBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzXG4gICAgICAgIChTbmFwc2hvdC5pbmNyZW1lbnRfaW5fc25hcHNob3QgfnJhdyBzaWdzIG91dCBjY3MpXG4gICAgICAgIChzdWNjIG5vZGUpXG4gIClcblxubGV0IGJ1aWxkX3NuYXBzaG90IH4ocmF3IDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucykgKGdyYXBoIDogdCkgOiBTbmFwc2hvdC50ID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+IGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXMgU25hcHNob3QuZW1wdHkgMFxuXG5sZXQgYnVpbGRfdXNlcl9zbmFwc2hvdCB+KGRlYnVnX21vZGUgOiBib29sKSB+KHJhdyA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKGdyYXBoIDogdCkgOiAoaW50ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0ID1cbiAgU25hcHNob3QuZXhwb3J0IH5kZWJ1Z19tb2RlIH5yYXcgc2lncyAoYnVpbGRfc25hcHNob3QgfnJhdyBzaWdzIGdyYXBoKVxuXG5sZXQgZGVidWdfcHJpbnQgZiBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiT1VUREFURURAIFwiXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgcHJpbnRfc2l0ZXMgYWcgPVxuICAgICAgUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBzIGYgbCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaSV0JXRcIiBzXG4gICAgICAgICAgICAobWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBpbnQgLT4gZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIn4laVwiIGludFxuICAgICAgICAgICAgfCBOb25lIC0+IGZ1biBfIC0+ICgpKVxuICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBpZiBNb2RzLkludDJTZXQubWVtIChhZywgcykgZ3JhcGgubWlzc2luZ3MgdGhlblxuICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiP1wiXG4gICAgICAgICAgICAgIHwgU29tZSAoKGFnJywgdHknKSwgcycpIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi0+JWk6JWkuJWlcIiBhZycgdHknIHMnKSlcbiAgICBpblxuICAgIE1vZHMuRHluQXJyYXkucHJpbnQgUHAuZW1wdHlcbiAgICAgIChmdW4gYWcgZiBhIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICAgICAgfCBTb21lIHR5IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaTolaShAWyVhQF0pQCBcIiBhZyB0eSAocHJpbnRfc2l0ZXMgYWcpIGFcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgYSA9IFt8fF0gdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWk6Tk9UWVBFKEBbJWFAXSlAIFwiIGFnIChwcmludF9zaXRlcyBhZykgYSlcbiAgICAgIGYgdGFibGVzLmNvbm5lY3RcblxudHlwZSBwYXRoID0gKChBZ2VudC50ICogaW50KSAqIChBZ2VudC50ICogaW50KSkgbGlzdFxuKCoqICgoYWdlbnRfaWQsIGFnZW50X25hbWUpLHNpdGVfbmFtZSkgKilcblxubGV0IHJlYyBwcmludF9wYXRoID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFBwLmVtcHR5X3NldCBmXG4gIHwgWyAoKGFnLCBzKSwgKGFnJywgcycpKSBdIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhQCwtJWEuJWFcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICBzXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZycpXG4gICAgICBzJ1xuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZydcbiAgfCAoKGFnLCBzKSwgKCgocCcsIF8pIGFzIGFnJyksIHMnKSkgOjogKCgoKHAnJywgXyksIF8pLCBfKSA6OiBfIGFzIGwpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhQCwtJWEuJXQlYVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgIHNcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnJylcbiAgICAgIHMnXG4gICAgICAoZnVuIGYgLT5cbiAgICAgICAgaWYgcCcgPD4gcCcnIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEjI1wiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZycpXG4gICAgICAocHJpbnRfcGF0aCA/c2lncykgbFxuXG5sZXQgZW1wdHlfcGF0aCA9IFtdXG5sZXQgc2luZ2xldG9uX3BhdGggbiBzIG4nIHMnID0gWyAobiwgcyksIChuJywgcycpIF1cbmxldCByZXZfcGF0aCBsID0gTGlzdC5yZXZfbWFwIChmdW4gKHgsIHkpIC0+IHksIHgpIGxcblxubGV0IGlzX3ZhbGlkX3BhdGggcCBncmFwaCA9XG4gIExpc3QuZm9yX2FsbFxuICAgIChmdW4gKCgoYWcsIF8pLCBzKSwgKChhZycsIF8pLCBzJykpIC0+IGxpbmtfZXhpc3RzIGFnIHMgYWcnIHMnIGdyYXBoKVxuICAgIHBcblxubGV0IGJyZWFkdGhfZmlyc3RfdHJhdmVyc2FsIH5sb29waW5nID9tYXhfZGlzdGFuY2Ugc3RvcF9vbl9maW5kIGlzX2ludGVyZXN0aW5nXG4gICAgbGlua3MgY2FjaGUgb3V0IHRvZG9zID1cbiAgbGV0IHJlYyBsb29rX2VhY2hfc2l0ZSAoKCgoaWQsIF8pIGFzIGFnKSwgcGF0aCkgYXMgeCkgc2l0ZVxuICAgICAgKChvdXQsIG5leHQpIGFzIGFjYykgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIFNvbWUgKGZhbHNlLCBvdXQsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29rX2VhY2hfc2l0ZSB4IChwcmVkIHNpdGUpIGFjY1xuICAgICAgfCBTb21lICgoKChpZCcsIF8pIGFzIGFnJyksIHNpdGUnKSBhcyB5KSAtPlxuICAgICAgICBpZiBhZycgPSBmc3QgbG9vcGluZyAmJiBzaXRlJyA8PiBzbmQgbG9vcGluZyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBsb29rX2VhY2hfc2l0ZSB4IChwcmVkIHNpdGUpIGFjY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGxldCBwYXRoJyA9ICh5LCAoYWcsIHByZWQgc2l0ZSkpIDo6IHBhdGggaW5cbiAgICAgICAgICBsZXQgbmV4dCcgPSAoYWcnLCBwYXRoJykgOjogbmV4dCBpblxuICAgICAgICAgIGxldCBvdXQnLCBzdG9yZSA9XG4gICAgICAgICAgICBtYXRjaCBpc19pbnRlcmVzdGluZyBhZycgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4gKCh4LCBpZCcpLCBwYXRoJykgOjogb3V0LCB0cnVlXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0LCBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgc3RvcmUgJiYgc3RvcF9vbl9maW5kIHRoZW5cbiAgICAgICAgICAgIFNvbWUgKHRydWUsIG91dCcsIG5leHQnKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgKG91dCcsIG5leHQnKVxuICAgICAgICApXG4gICAgKVxuICBpblxuICAoKiBkZXB0aCA9IG51bWJlciBvZiBlZGdlcyBiZXR3ZWVuIHJvb3QgYW5kIG5vZGUgKilcbiAgbGV0IHJlYyBhdXggZGVwdGggb3V0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgKCgoaWQsIF8pLCBfKSBhcyB4KSA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBsb29rX2VhY2hfc2l0ZSB4IChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSkgKG91dCwgbmV4dClcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAoc3RvcCwgb3V0JywgbmV4dCcpIC0+XG4gICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgIG91dCdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGF1eCBkZXB0aCBvdXQnIG5leHQnIHRvZG9zKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgW10gLT4gb3V0XG4gICAgICAoKiBlbmQgd2hlbiBhbGwgZ3JhcGggdHJhdmVyc2VkIGFuZCByZXR1cm4gdGhlIGxpc3Qgb2YgcGF0aHMgKilcbiAgICAgIHwgXyAtPlxuICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgfCBTb21lIGQgd2hlbiBkIDw9IGRlcHRoIC0+IG91dFxuICAgICAgICAoKiBzdG9wIHdoZW4gdGhlIG1heCBkaXN0YW5jZSBpcyByZWFjaGVkICopXG4gICAgICAgIHwgU29tZSBfIC0+IGF1eCAoZGVwdGggKyAxKSBvdXQgW10gbmV4dFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGRlcHRoIG91dCBbXSBuZXh0KSlcbiAgaW5cbiAgYXV4IDEgb3V0IFtdIHRvZG9zXG5cbigqIG5vZGVzX3g6IGFnZW50X2lkIGxpc3QgPSAoaW50ICogaW50KSBsaXN0XG4gICBub2Rlc195OiBhZGVudF9pZCBsaXN0ID0gaW50IGxpc3QgKilcbmxldCBhcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZ3JhcGggbm9kZXNfeCBub2Rlc195ID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgaWZcbiAgICAgIGluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudFxuICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzX3gpKVxuICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzX3kpKVxuICAgICAgICBncmFwaFxuICAgIHRoZW4gKFxuICAgICAgKCogbG9vayBmb3IgdGhlIGNsb3Nlc3Qgbm9kZSBpbiBub2Rlc195ICopXG4gICAgICBsZXQgaXNfaW5fbm9kZXNfeSB6ID1cbiAgICAgICAgaWYgTGlzdC5tZW0geiBub2Rlc195IHRoZW5cbiAgICAgICAgICBTb21lICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgKCogYnJlYWR0aCBmaXJzdCBzZWFyY2ggaXMgY2FsbGVkIG9uIGEgbGlzdCBvZiBzaXRlcztcbiAgICAgICAgIHN0YXJ0IHRoZSBicmVhZHRoIGZpcnN0IHNlYXJjaCB3aXRoIHRoZSBib3VuZGFyaWVzIG9mIG5vZGVzX3gsXG4gICAgICAgICB0aGF0IGlzIGFsbCBzaXRlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gb3RoZXIgbm9kZXMgaW4geFxuICAgICAgICAgYW5kIHdpdGggYWxsIG5vZGVzIGluIG5vZGVzX3ggbWFya2VkIGFzIGRvbmUgKilcbiAgICAgIGxldCBwcmVwYXJlID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyAoKGlkLCBfKSBhcyBhZykgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgKGZzdCB0YWJsZXMuY2FjaGVzKSBpZCBpblxuICAgICAgICAgICAgKGFnLCBbXSkgOjogYWNjKVxuICAgICAgICAgIFtdIG5vZGVzX3hcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBicmVhZHRoX2ZpcnN0X3RyYXZlcnNhbFxuICAgICAgICAgIH5sb29waW5nOigoLTEsIC0xKSwgLTEpXG4gICAgICAgICAgP21heF9kaXN0YW5jZSB0cnVlIGlzX2luX25vZGVzX3kgdGFibGVzLmNvbm5lY3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBbXVxuICAgICAgICAgIHByZXBhcmVcbiAgICAgIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgICAgICBOb25lXG4gICAgICB8IFsgKF8sIHApIF0gLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgICAgICBTb21lIHBcbiAgICAgIHwgXyA6OiBfIC0+IGZhaWx3aXRoIFwiRWRnZXMuYXJlX3RoZXlfY29ubmVjdGVkIGNvbXBsZXRlbHkgYnJva2VuXCJcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWJzdHJhY3QgPSBFeGlzdGluZyBvZiBpbnQgfCBGcmVzaCBvZiBBZ2VudC50XG50eXBlICdhIHBvcnQgPSAnYSAqIGludFxudHlwZSAnYSBhcnJvdyA9IFRvTm9kZSBvZiAnYSBwb3J0IHwgVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBvZiBpbnRcbnR5cGUgJ2Egc3RlcCA9ICdhIHBvcnQgKiAnYSBhcnJvd1xudHlwZSAnYSB0ID0gJ2Egc3RlcCBsaXN0XG5cbmxldCBwcmludF9pZCBzaWdzIGYgPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGlkIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpZFxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYS0laVwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgdHkgaWRcblxubGV0IHByaW50X2lkX3NpdGUgP3NvdXJjZSBzaWdzIGZpbmRfdHkgbiA9XG4gIGxldCB0eSA9XG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCBGcmVzaCAoXywgdHkpIC0+IHR5XG4gICAgfCBFeGlzdGluZyBpZCAtPlxuICAgICAgKG1hdGNoIHNvdXJjZSB3aXRoXG4gICAgICB8IFNvbWUgKEZyZXNoIChpZCcsIHR5KSkgd2hlbiBpZCA9IGlkJyAtPiB0eVxuICAgICAgfCBOb25lIHwgU29tZSAoRnJlc2ggXyB8IEV4aXN0aW5nIF8pIC0+IGZpbmRfdHkgaWQpXG4gIGluXG4gIFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgdHlcblxubGV0IHByaW50X2lkX2ludGVybmFsX3N0YXRlIHNpZ3MgZmluZF90eSBuID1cbiAgU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lnc1xuICAgIChtYXRjaCBuIHdpdGhcbiAgICB8IEV4aXN0aW5nIGlkIC0+IGZpbmRfdHkgaWRcbiAgICB8IEZyZXNoIChfLCB0eSkgLT4gdHkpXG5cbmxldCBpZF91cF90b19hbHBoYV90b195b2pzb24gPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGkgLT4gYEludCBpXG4gIHwgRnJlc2ggZiAtPiBBZ2VudC50b19qc29uIGZcblxubGV0IGlkX3VwX3RvX2FscGhhX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IEV4aXN0aW5nIGlcbiAgfCB4IC0+IEZyZXNoIChBZ2VudC5vZl9qc29uIHgpXG5cbmxldCBwb3J0X3RvX3lvanNvbiAoYSwgcykgPSBgTGlzdCBbIGlkX3VwX3RvX2FscGhhX3RvX3lvanNvbiBhOyBgSW50IHMgXVxuXG5sZXQgcG9ydF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYTsgYEludCBzIF0gLT4gaWRfdXBfdG9fYWxwaGFfb2ZfeW9qc29uIGEsIHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uIHBvcnRcIiwgeCkpXG5cbmxldCBhcnJvd190b195b2pzb24gPSBmdW5jdGlvblxuICB8IFRvTm9kZSBwIC0+IHBvcnRfdG9feW9qc29uIHBcbiAgfCBUb05vdGhpbmcgLT4gYE51bGxcbiAgfCBUb0ludGVybmFsIGkgLT4gYEludCBpXG5cbmxldCBhcnJvd19vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IFRvTm90aGluZ1xuICB8IGBJbnQgaSAtPiBUb0ludGVybmFsIGlcbiAgfCB4IC0+IFRvTm9kZSAocG9ydF9vZl95b2pzb24geClcblxubGV0IHN0ZXBfdG9feW9qc29uIChwLCBhKSA9IGBMaXN0IFsgcG9ydF90b195b2pzb24gcDsgYXJyb3dfdG9feW9qc29uIGEgXVxuXG5sZXQgc3RlcF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgcDsgYSBdIC0+IHBvcnRfb2ZfeW9qc29uIHAsIGFycm93X29mX3lvanNvbiBhXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgbmF2aWdhdGlvbiBzdGVwXCIsIHgpKVxuXG5sZXQgdG9feW9qc29uIGwgPSBgTGlzdCAoTGlzdC5tYXAgc3RlcF90b195b2pzb24gbClcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBzdGVwX29mX3lvanNvbiBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgbmF2aWdhdGlvblwiLCB4KSlcblxubGV0IGV4dGVuZCBmID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBfIC0+IGZcbiAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBpZiB4ID0gaWQgdGhlblxuICAgICAgICB0eVxuICAgICAgZWxzZVxuICAgICAgICBmIHhcblxubGV0IHJlYyBwcmludCBzaWdzIGZpbmRfdHkgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvTm90aGluZykgOjogdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItJWEoJWFbLl0pLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9zaXRlIHNpZ3MgZmluZF90eSBzb3VyY2UpXG4gICAgICBzaXRlXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIGZpbmRfdHkgc291cmNlKSlcbiAgICAgIHRcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvTm9kZSAoaWQsIHBvcnQpKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYVslYS4lYV0pLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9zaXRlIHNpZ3MgZmluZF90eSBzb3VyY2UpXG4gICAgICBzaXRlXG4gICAgICAocHJpbnRfaWRfc2l0ZSB+c291cmNlIHNpZ3MgZmluZF90eSBpZClcbiAgICAgIHBvcnQgKHByaW50X2lkIHNpZ3MpIGlkXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIChleHRlbmQgZmluZF90eSBpZCkgc291cmNlKSlcbiAgICAgIHRcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvSW50ZXJuYWwgaSkgOjogdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItJWEoJWEpLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGZpbmRfdHkgc291cmNlIHNpdGUpXG4gICAgICAoU29tZSBpKVxuICAgICAgKHByaW50IHNpZ3MgKGV4dGVuZCBmaW5kX3R5IHNvdXJjZSkpXG4gICAgICB0XG5cbmxldCBjb21wYXRpYmxlX2ZyZXNoX3BvaW50IH5kZWJ1Z19tb2RlIGUgKHNpZCwgc3R5KSBzc2l0ZSBhcnJvdyA9XG4gIG1hdGNoIGUsIGFycm93IHdpdGhcbiAgfCBfLCBUb05vZGUgKEV4aXN0aW5nIF8sIF8pIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgIFwiTmF2aWdhdGlvbi5jb21wYXRpYmxlX2ZyZXNoX3BvaW50IGRvZXMgbm90IGRlYWwgd2l0aCBleGlzdGluZyBcXFxuICAgICAgICAgICAgIGFycm93XCIpKVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCB4KSwgVG9Ob3RoaW5nIC0+XG4gICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHggPSBUb05vdGhpbmcgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBTb21lIGlualxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIHgpLCBUb0ludGVybmFsIGkgLT5cbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgeCA9IFRvSW50ZXJuYWwgaSB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIFNvbWUgaW5qXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSksXG4gICAgICBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSApIC0+XG4gICAgKCogbGluayBiZXR3ZWVuIDIgYWdlbnRzICopXG4gICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHR5JyA9IHN0eScgJiYgc2l0ZScgPSBzc2l0ZScgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmogdGhlblxuICAgICAgICAgIFNvbWUgaW5qXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2UgaWYgdHkgPSBzdHknICYmIHNpdGUgPSBzc2l0ZScgJiYgdHknID0gc3R5ICYmIHNpdGUnID0gc3NpdGUgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCcgaW5qIHRoZW5cbiAgICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCBpbmogdGhlblxuICAgICAgICAgIFNvbWUgaW5qXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICggKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKVxuICAgICAgfCAoRnJlc2ggKGlkJywgdHkpLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCwgc2l0ZScpICksXG4gICAgICBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSApIC0+XG4gICAgKCogc2VsZi1saW5rIGluIGFnZW50ICopXG4gICAgaWZcbiAgICAgICgoc3NpdGUgPSBzaXRlICYmIHNzaXRlJyA9IHNpdGUnKSB8fCAoc3NpdGUnID0gc2l0ZSAmJiBzc2l0ZSA9IHNpdGUnKSlcbiAgICAgICYmIGlkID0gaWQnICYmIHNpZCA9IHNpZCcgJiYgdHkgPSBzdHkgJiYgc3R5ID0gc3R5J1xuICAgIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgU29tZSBpbmpcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgXywgXyksIF8pLCBfIC0+IE5vbmVcbiAgfCAoKEZyZXNoIF8sIF8pLCAoVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBfKSksIFRvTm9kZSBfIC0+IE5vbmVcblxubGV0IGNvbXBhdGlibGVfcG9pbnQgfmRlYnVnX21vZGUgaW5qIGUgZScgPVxuICBtYXRjaCBlLCBlJyB3aXRoXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm90aGluZyksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGlualxuICAgICAgJiYgZSA9ICgoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpLCBUb05vdGhpbmcpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvSW50ZXJuYWwgaSksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGlualxuICAgICAgJiYgZSA9ICgoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpLCBUb0ludGVybmFsIGkpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykpLCBlIC0+XG4gICAgaWZcbiAgICAgIFJlbmFtaW5nLm1lbSBpZCBpbmogJiYgUmVuYW1pbmcubWVtIGlkJyBpbmpcbiAgICAgICYmIChlXG4gICAgICAgICAgPSAoIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksXG4gICAgICAgICAgICAgIFRvTm9kZSAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCcpLCBzaXRlJykgKVxuICAgICAgICAgfHwgZVxuICAgICAgICAgICAgPSAoIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkJyksIHNpdGUnKSxcbiAgICAgICAgICAgICAgICBUb05vZGUgKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSApKVxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykpLFxuICAgICAgKChFeGlzdGluZyBzaWQsIHNzaXRlKSwgVG9Ob2RlIChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUnKSkgKVxuICB8ICggKChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykpLFxuICAgICAgKChFeGlzdGluZyBzaWQsIHNzaXRlKSwgVG9Ob2RlIChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUnKSkgKVxuICB8ICggKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUpLCBUb05vZGUgKEV4aXN0aW5nIHNpZCwgc3NpdGUnKSkgKVxuICB8ICggKChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUpLCBUb05vZGUgKEV4aXN0aW5nIHNpZCwgc3NpdGUnKSkgKSAtPlxuICAgIGlmXG4gICAgICB0eScgPSB0eVxuICAgICAgJiYgKG5vdCAoUmVuYW1pbmcubWVtIGlkJyBpbmopKVxuICAgICAgJiYgKChzc2l0ZSA9IHNpdGUgJiYgc3NpdGUnID0gc2l0ZScpXG4gICAgICAgICB8fCAoaWQgPSBpZCcgJiYgc3NpdGUgPSBzaXRlJyAmJiBzc2l0ZScgPSBzaXRlKSlcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmogd2l0aFxuICAgICAgfCBTb21lIGluaidcbiAgICAgICAgd2hlbiBSZW5hbWluZy5tZW0gaWQgaW5qJyAmJiBzaWQgPSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGlkIC0+XG4gICAgICAgIFNvbWUgaW5qJ1xuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIF8sIF8pLCBUb05vZGUgKEZyZXNoIF8sIF8pKSwgKCgoRnJlc2ggXyB8IEV4aXN0aW5nIF8pLCBfKSwgXykgLT5cbiAgICBOb25lXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm90aGluZyksICgoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpLCB4KSAtPlxuICAgIGlmIHR5ID0gdHknICYmIHNpdGUgPSBzaXRlJyAmJiB4ID0gVG9Ob3RoaW5nICYmIG5vdCAoUmVuYW1pbmcubWVtIGlkIGluailcbiAgICB0aGVuXG4gICAgICBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgaWQnIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSwgKChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJyksIHgpIC0+XG4gICAgaWYgdHkgPSB0eScgJiYgc2l0ZSA9IHNpdGUnICYmIHggPSBUb0ludGVybmFsIGkgJiYgbm90IChSZW5hbWluZy5tZW0gaWQgaW5qKVxuICAgIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpKSxcbiAgICAgICgoRnJlc2ggKHNpZCwgc3R5KSwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSkgKSAtPlxuICAgIGlmIChub3QgKFJlbmFtaW5nLm1lbSBpZCBpbmopKSAmJiBub3QgKFJlbmFtaW5nLm1lbSBpZCcgaW5qKSB0aGVuXG4gICAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgdHknID0gc3R5JyAmJiBzaXRlJyA9IHNzaXRlJyB0aGVuIChcbiAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCcgaW5qJyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJycgLT4gU29tZSBpbmonJylcbiAgICAgICkgZWxzZSBpZiB0eSA9IHN0eScgJiYgc2l0ZSA9IHNzaXRlJyAmJiB0eScgPSBzdHkgJiYgc2l0ZScgPSBzc2l0ZSB0aGVuIChcbiAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCcgaW5qIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQgaW5qJyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJycgLT4gU29tZSBpbmonJylcbiAgICAgICkgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRnJlc2ggXywgXyksIF8pLCAoKEZyZXNoIF8sIF8pLCBfKSAtPiBOb25lXG4gIHwgKChGcmVzaCBfLCBfKSwgXyksICgoRXhpc3RpbmcgXywgXyksIF8pIC0+IE5vbmVcblxubGV0IHJlYyBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBnb2FsIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IGggOjogdCAtPlxuICAgIChtYXRjaCBjb21wYXRpYmxlX3BvaW50IH5kZWJ1Z19tb2RlIGluaiBoIGdvYWwgd2l0aFxuICAgIHwgTm9uZSAtPiBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBnb2FsIChoIDo6IGFjYykgdFxuICAgIHwgU29tZSBpbmonIC0+IFNvbWUgKGluaicsIExpc3QucmV2X2FwcGVuZCBhY2MgdCkpXG5cbmxldCByZWMgaXNfc3VibmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpbmogbmF2ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTb21lIChpbmosIG5hdilcbiAgfCBoIDo6IHQgLT5cbiAgICAobWF0Y2ggYXV4X3N1YiB+ZGVidWdfbW9kZSBpbmogaCBbXSBuYXYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChpbmonLCBuYXYnKSAtPiBpc19zdWJuYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGluaicgbmF2JyB0KVxuXG5sZXQgcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluajJjYyA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgbiAtPiBpbmoyY2MsIEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoyY2MgbilcbiAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgIGxldCBpbWcgPSBSZW5hbWluZy5pbWFnZSBpbmoyY2MgaW5cbiAgICBsZXQgaWQnID1cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpZCBpbWcgdGhlbiAoXG4gICAgICAgIG1hdGNoIE1vZHMuSW50U2V0Lm1heF9lbHQgaW1nIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIGkgLT4gc3VjYyBpXG4gICAgICApIGVsc2VcbiAgICAgICAgaWRcbiAgICBpblxuICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgaWQnIGluajJjYyB3aXRoXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBpbmonIC0+IGluaicsIEZyZXNoIChpZCcsIHR5KSlcblxubGV0IHJlYyByZW5hbWUgfmRlYnVnX21vZGUgaW5qMmNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbmoyY2MsIFtdXG4gIHwgKCh4LCBpKSwgKChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pIGFzIGEpKSA6OiB0IC0+XG4gICAgbGV0IGluaiwgeCcgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjIHggaW5cbiAgICBsZXQgaW5qJywgdCcgPSByZW5hbWUgfmRlYnVnX21vZGUgaW5qIHQgaW5cbiAgICBpbmonLCAoKHgnLCBpKSwgYSkgOjogdCdcbiAgfCAoKHgsIGkpLCBUb05vZGUgKHksIGopKSA6OiB0IC0+XG4gICAgbGV0IGluaiwgeCcgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjIHggaW5cbiAgICBsZXQgaW5qJywgeScgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qIHkgaW5cbiAgICBsZXQgaW5qJycsIHQnID0gcmVuYW1lIH5kZWJ1Z19tb2RlIGluaicgdCBpblxuICAgIGluaicnLCAoKHgnLCBpKSwgVG9Ob2RlICh5JywgaikpIDo6IHQnXG5cbmxldCBjaGVja19lZGdlIGdyYXBoID0gZnVuY3Rpb25cbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvTm90aGluZyAtPiBFZGdlcy5pc19mcmVlIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvSW50ZXJuYWwgaSAtPiBFZGdlcy5pc19pbnRlcm5hbCBpIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCBfKSwgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vdGhpbmcgLT4gRWRnZXMuaXNfZnJlZSBpZCBzaXRlIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgaWQgc2l0ZSBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgXyksIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG5cbigqaW5qIGlzIHRoZSBwYXJ0aWFsIGluamVjdGlvbiBidWlsdCBzbyBmYXI6IGluajphYnMtPmNvbmNyZXRlKilcbmxldCBkc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgVG9Ob3RoaW5nIC0+XG4gICAgaWYgRWRnZXMuaXNfZnJlZSByb290IHNpdGUgZ3JhcGggdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvSW50ZXJuYWwgaSAtPlxuICAgIGlmIEVkZ2VzLmlzX2ludGVybmFsIGkgcm9vdCBzaXRlIGdyYXBoIHRoZW5cbiAgICAgIFNvbWUgaW5qJ1xuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgaWZcbiAgICAgIEVkZ2VzLmxpbmtfZXhpc3RzIHJvb3Qgc2l0ZVxuICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBpZCcpXG4gICAgICAgIHNpdGUnIGdyYXBoXG4gICAgdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykgLT5cbiAgICAobWF0Y2ggRWRnZXMuZXhpc3RzX2ZyZXNoIHJvb3Qgc2l0ZSB0eSBzaXRlJyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbm9kZSAtPiBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIG5vZGUgaW5qJylcblxubGV0IGluamVjdGlvbl9mb3Jfb25lX21vcmVfZWRnZSB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggPSBmdW5jdGlvblxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIGRzdCAtPlxuICAgIGRzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaiBncmFwaFxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZClcbiAgICAgIHNpdGUgZHN0XG4gIHwgKEZyZXNoIChpZCwgcnR5KSwgc2l0ZSksIGRzdCAtPlxuICAgIChtYXRjaCByb290IHdpdGhcbiAgICB8IFNvbWUgKHJvb3QsIHJ0eScpIHdoZW4gcnR5ID0gcnR5JyAtPlxuICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCByb290IGluaiB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGluaicgLT4gZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qJyBncmFwaCByb290IHNpdGUgZHN0KVxuICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW1wZXJhdGl2ZV9kc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgVG9Ob3RoaW5nIC0+IEVkZ2VzLmlzX2ZyZWUgcm9vdCBzaXRlIGdyYXBoXG4gIHwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgcm9vdCBzaXRlIGdyYXBoXG4gIHwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIHJvb3Qgc2l0ZVxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgaWQnKVxuICAgICAgc2l0ZScgZ3JhcGhcbiAgfCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpIC0+XG4gICAgKG1hdGNoIEVkZ2VzLmV4aXN0c19mcmVzaCByb290IHNpdGUgdHkgc2l0ZScgZ3JhcGggd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBub2RlIC0+IFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkJyBub2RlIGluaicpXG5cbmxldCBpbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoID0gZnVuY3Rpb25cbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBkc3QgLT5cbiAgICBpbXBlcmF0aXZlX2RzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaiBncmFwaFxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZClcbiAgICAgIHNpdGUgZHN0XG4gIHwgKEZyZXNoIChpZCwgcnR5KSwgc2l0ZSksIGRzdCAtPlxuICAgIChtYXRjaCByb290IHdpdGhcbiAgICB8IFNvbWUgKHJvb3QsIHJ0eScpIHdoZW4gcnR5ID0gcnR5JyAtPlxuICAgICAgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgcm9vdCBpbmpcbiAgICAgICYmIGltcGVyYXRpdmVfZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoIHJvb3Qgc2l0ZSBkc3RcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBpZCwgc2l0ZSAtPiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQsIHNpdGVcbiAgfCBGcmVzaCAoaWQsIF8pLCBzaXRlIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCwgc2l0ZVxuXG5sZXQgY29uY3JldGl6ZV9hcnJvdyB+ZGVidWdfbW9kZSBpbmogPSBmdW5jdGlvblxuICB8IChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pIGFzIHggLT4geFxuICB8IFRvTm9kZSB4IC0+IFRvTm9kZSAoY29uY3JldGl6ZV9wb3J0IH5kZWJ1Z19tb2RlIGluaiB4KVxuXG5sZXQgY29uY3JldGl6ZSB+ZGVidWdfbW9kZSByb290IGdyYXBoIG5hdiA9XG4gIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBsZXQgb3V0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBvdXQgKChwLCBkc3QpIGFzIHN0ZXApIC0+XG4gICAgICAgIG1hdGNoIG91dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBvdXRcbiAgICAgICAgfCBTb21lIChyb290LCBhY2MpIC0+XG4gICAgICAgICAgaWYgaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCBzdGVwIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHN0ID1cbiAgICAgICAgICAgICAgKCBjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qIHAsXG4gICAgICAgICAgICAgICAgY29uY3JldGl6ZV9hcnJvdyB+ZGVidWdfbW9kZSBpbmogZHN0IClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lIChOb25lLCBzdCA6OiBhY2MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgKFNvbWUgKFNvbWUgcm9vdCwgW10pKVxuICAgICAgbmF2XG4gIGluXG4gIE9wdGlvbl91dGlsLm1hcCAoZnVuIChfLCBsKSAtPiBMaXN0LnJldiBsKSBvdXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaW50ZXJuYWwgPSBpbnQgb3B0aW9uXG50eXBlIGxpbmsgPSBGUkVFIHwgVkFMIG9mIGludFxudHlwZSBhZ2VudCA9IHsgYV90eXBlOiBpbnQ7IGFfcG9ydHM6IGxpbmsgYXJyYXk7IGFfaW50czogaW50ZXJuYWwgYXJyYXkgfVxudHlwZSB0ID0gYWdlbnQgbGlzdFxuXG5sZXQgY29weV9hZ2VudCBhZ2VudCA9XG4gIHtcbiAgICBhX3R5cGUgPSBhZ2VudC5hX3R5cGU7XG4gICAgYV9wb3J0cyA9IEFycmF5LmNvcHkgYWdlbnQuYV9wb3J0cztcbiAgICBhX2ludHMgPSBBcnJheS5jb3B5IGFnZW50LmFfaW50cztcbiAgfVxuXG50eXBlIGluY3JfdCA9IHtcbiAgZmF0aGVyOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICByYW5rOiAoaW50ICogKGJvb2wgKiBib29sKSkgTW9kcy5EeW5BcnJheS50O1xufVxuXG5sZXQgY3JlYXRlIG4gPVxuICB7XG4gICAgZmF0aGVyID0gTW9kcy5EeW5BcnJheS5pbml0IG4gKGZ1biBpIC0+IGkpO1xuICAgIHJhbmsgPSBNb2RzLkR5bkFycmF5Lm1ha2UgbiAoMSwgKHRydWUsIGZhbHNlKSk7XG4gIH1cblxubGV0IHJlYyBmaW5kX2F1eCBhIGkgPVxuICBsZXQgYWkgPVxuICAgIGlmIE1vZHMuRHluQXJyYXkubGVuZ3RoIGEgPD0gaSB0aGVuXG4gICAgICBpXG4gICAgZWxzZVxuICAgICAgTW9kcy5EeW5BcnJheS5nZXQgYSBpXG4gIGluXG4gIGlmIGFpID09IGkgdGhlblxuICAgIGlcbiAgZWxzZSAoXG4gICAgbGV0IHJvb3QgPSBmaW5kX2F1eCBhIGFpIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgYSBpIHJvb3QgaW5cbiAgICByb290XG4gIClcblxubGV0IGZpbmQgaCB4ID0gZmluZF9hdXggaC5mYXRoZXIgeFxubGV0IGNvbWJpbmVfcmFua3MgKGl4LCAoYngsIF8pKSAoaXksIChieSwgXykpID0gaXggKyBpeSwgKGJ4ICYmIGJ5LCB0cnVlKVxuXG5sZXQgdW5pb24gaCB4IHkgPVxuICBsZXQgcm9vdF94ID0gZmluZCBoIHggaW5cbiAgbGV0IHJvb3RfeSA9IGZpbmQgaCB5IGluXG4gIGlmIHJvb3RfeCA9PSByb290X3kgdGhlblxuICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCByYW5rX3ggPSBNb2RzLkR5bkFycmF5LmdldCBoLnJhbmsgcm9vdF94IGluXG4gICAgbGV0IHJhbmtfeSA9IE1vZHMuRHluQXJyYXkuZ2V0IGgucmFuayByb290X3kgaW5cbiAgICBpZiBmc3QgcmFua194ID4gZnN0IHJhbmtfeSB0aGVuIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3ggKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeSByb290X3hcbiAgICApIGVsc2UgaWYgZnN0IHJhbmtfeCA8IGZzdCByYW5rX3kgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBoLnJhbmsgcm9vdF95IChjb21iaW5lX3JhbmtzIHJhbmtfeCByYW5rX3kpIGluXG4gICAgICBNb2RzLkR5bkFycmF5LnNldCBoLmZhdGhlciByb290X3ggcm9vdF95XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3ggKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeSByb290X3hcbiAgICApXG4gIClcblxubGV0IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggPVxuICBsZXQgdCA9IGNyZWF0ZSAxIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGFnIC0+XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5hX3R5cGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSAoYmVmb3JlLCBhZnRlcikgLT5cbiAgICAgICAgICAgIGxldCBhID0gYWcuYV9wb3J0cy4oYWZ0ZXIpIGluXG4gICAgICAgICAgICBsZXQgYiA9IGFnLmFfcG9ydHMuKGJlZm9yZSkgaW5cbiAgICAgICAgICAgIChtYXRjaCBiIHdpdGhcbiAgICAgICAgICAgIHwgRlJFRSAtPiAoKVxuICAgICAgICAgICAgfCBWQUwgbG5rX2IgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IEZSRUUgLT5cbiAgICAgICAgICAgICAgICAoKiBpbiB0aGlzIGNhc2UgdGhlIGVuZHBvaW50IG9mIHRoZSBjaGFpbiBvZiBpbmNyZW1lbnRzIGlzIHJhdzpcbiAgICAgICAgICAgICAgICAgICB0aGUgYWdlbnQgaXMgY3JlYXRlZCB3aXRoIGEgY291bnRlciB2YWx1ZSopXG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBmaW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5yYW5rIHJvb3QgKHMgLSAxLCAodHJ1ZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgVkFMIGxua19hIC0+IHVuaW9uIHQgbG5rX2IgbG5rX2EpKSlcbiAgICAgICAgbWl4XG4gIGluXG4gIHRcblxubGV0IHByaW50X2xpbmsgfm5vQ291bnRlcnMgY291bnRlcl9hZ2VudHMgZiA9IGZ1bmN0aW9uXG4gIHwgRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIlxuICB8IFZBTCBpIC0+XG4gICAgKHRyeVxuICAgICAgIGxldCByb290ID0gZmluZCBjb3VudGVyX2FnZW50cyBpIGluXG4gICAgICAgbGV0IGNvdW50ZXIsIChfLCBpc19jb3VudGVyKSA9XG4gICAgICAgICBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVyX2FnZW50cy5yYW5rIHJvb3RcbiAgICAgICBpblxuICAgICAgIGlmIGlzX2NvdW50ZXIgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIns9JWR9XCIgY291bnRlclxuICAgICAgIGVsc2VcbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWldXCIgaVxuICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGkpXG5cbmxldCBhdXhfcHBfc2kgc2lncyBhIHMgZiBpID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYSBzIGYgaVxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggaSB3aXRoXG4gICAgfCBTb21lIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpeyVpfVwiIHMgaVxuICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgcylcblxubGV0IHByaW50X2ludGYgfm5vQ291bnRlcnMgd2l0aF9saW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGFnX3R5IGYgKHBvcnRzLCBpbnRzKVxuICAgID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFcIlxuICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgIChhdXhfcHBfc2kgc2lncyBhZ190eSBpKSBpbnRzLihpKVxuICAgICAgICAgIChpZiB3aXRoX2xpbmsgdGhlblxuICAgICAgICAgICAgIHByaW50X2xpbmsgfm5vQ291bnRlcnMgY291bnRlcl9hZ2VudHNcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGZ1biBfIF8gLT5cbiAgICAgICAgICAgKCkpXG4gICAgICAgICAgcG9ydHMuKGkpXG4gICAgICBpblxuICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBhdXhfcHBfYWcgc2lncyBmIGEgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MgZiBhXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgYVxuXG5sZXQgcHJpbnRfYWdlbnQgfm5vQ291bnRlcnMgY3JlYXRlZCBsaW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGYgYWcgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKSV0XCIgKGF1eF9wcF9hZyBzaWdzKSBhZy5hX3R5cGVcbiAgICAocHJpbnRfaW50ZiB+bm9Db3VudGVycyBsaW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGFnLmFfdHlwZSlcbiAgICAoYWcuYV9wb3J0cywgYWcuYV9pbnRzKSAoZnVuIGYgLT5cbiAgICAgIGlmIGNyZWF0ZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIrXCIpXG5cbmxldCBwcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZCB+aW5pdGlhbF9jb21tYSA/c2lncyBmIG1peCA9XG4gIGxldCBjb3VudGVyX2FnZW50cyA9IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggaW5cbiAgbGV0IHJlYyBhdXhfcHJpbnQgc29tZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZlxuICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICAgICAgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBoLmFfdHlwZSAmJiBub3Qgbm9Db3VudGVyc1xuICAgICAgdGhlblxuICAgICAgICBhdXhfcHJpbnQgc29tZSB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gaWYgc29tZSB0aGVuIFBwLmNvbW1hIGYgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9hZ2VudCB+bm9Db3VudGVycyBjcmVhdGVkIHRydWUgP3NpZ3MgY291bnRlcl9hZ2VudHMgZiBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9wcmludCB0cnVlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4X3ByaW50IGluaXRpYWxfY29tbWEgbWl4XG5cbmxldCBhZ2VudF90b19qc29uIGEgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcInR5cGVcIiwgYEludCBhLmFfdHlwZTtcbiAgICAgICggXCJzaXRlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBGUkVFIC0+IGBOdWxsXG4gICAgICAgICAgICAgICB8IFZBTCBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICBhLmFfcG9ydHMgW10pICk7XG4gICAgICAoIFwiaW50ZXJuYWxzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICBhLmFfaW50cyBbXSkgKTtcbiAgICBdXG5cbmxldCBhZ2VudF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSkgXVxuICB8IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0KTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJzaXRlc1wiLCBgTGlzdCBzKSBdXG4gIHwgYEFzc29jIFsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcInNpdGVzXCIsIGBMaXN0IHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJ0eXBlXCIsIGBJbnQgdCkgXVxuICB8IGBBc3NvYyBbIChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInR5cGVcIiwgYEludCB0KSBdXG4gIHwgYEFzc29jIFsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcInR5cGVcIiwgYEludCB0KTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpIF0gLT5cbiAgICB7XG4gICAgICBhX3R5cGUgPSB0O1xuICAgICAgYV9wb3J0cyA9XG4gICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBOdWxsIC0+IEZSRUVcbiAgICAgICAgICAgIHwgYEludCBwIC0+IFZBTCBwXG4gICAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBzaXRlIGxpbmtcIiwgeCkpKVxuICAgICAgICAgIHM7XG4gICAgICBhX2ludHMgPVxuICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgTnVsbCAtPiBOb25lXG4gICAgICAgICAgICB8IGBJbnQgcCAtPiBTb21lIHBcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGludGVybmFsIHN0YXRlXCIsIHgpKSlcbiAgICAgICAgICBpO1xuICAgIH1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcmF3X2FnZW50XCIsIHgpKVxuXG5sZXQgdG9fanNvbiBtID0gYExpc3QgKExpc3QubWFwIGFnZW50X3RvX2pzb24gbSlcblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgYWdlbnRfb2ZfanNvbiBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJhd19taXh0dXJlXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwZXJ2YXNpdmVzX2Jvb2wgPSBib29sXG5cbnR5cGUgKCdtaXgsICdpZCkgZSA9XG4gIHwgQklOX0FMR19PUCBvZlxuICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgfCBVTl9BTEdfT1Agb2YgT3BlcmF0b3IudW5fYWxnX29wICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IFNUQVRFX0FMR19PUCBvZiBPcGVyYXRvci5zdGF0ZV9hbGdfb3BcbiAgfCBBTEdfVkFSIG9mICdpZFxuICB8IEtBUFBBX0lOU1RBTkNFIG9mICdtaXhcbiAgfCBUT0tFTl9JRCBvZiAnaWRcbiAgfCBDT05TVCBvZiBOYnIudFxuICB8IElGIG9mXG4gICAgICAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IERJRkZfVE9LRU4gb2YgKCgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWQgKiAnaWQpXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBvZiAoKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZCAqICdtaXgpXG5cbmFuZCAoJ21peCwgJ2lkKSBib29sID1cbiAgfCBUUlVFXG4gIHwgRkFMU0VcbiAgfCBCSU5fQk9PTF9PUCBvZlxuICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BcbiAgICAgICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gIHwgVU5fQk9PTF9PUCBvZiBPcGVyYXRvci51bl9ib29sX29wICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICB8IENPTVBBUkVfT1Agb2ZcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3BcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG5cbmxldCByZWMgZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5iaW5fYWxnX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGI7XG4gICAgICBdXG4gIHwgVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci51bl9hbGdfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgIF1cbiAgfCBTVEFURV9BTEdfT1Agb3AgLT4gT3BlcmF0b3Iuc3RhdGVfYWxnX29wX3RvX2pzb24gb3BcbiAgfCBBTEdfVkFSIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiVkFSXCI7IGZfaWQgaSBdXG4gIHwgS0FQUEFfSU5TVEFOQ0UgY2MgLT4gYExpc3QgWyBgU3RyaW5nIFwiTUlYXCI7IGZfbWl4IGNjIF1cbiAgfCBUT0tFTl9JRCBpIC0+IGBMaXN0IFsgYFN0cmluZyBcIlRPS0VOXCI7IGZfaWQgaSBdXG4gIHwgQ09OU1QgbiAtPiBOYnIudG9feW9qc29uIG5cbiAgfCBJRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiSUZcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGNvbmQ7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIHllcztcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgbm87XG4gICAgICBdXG4gIHwgRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkRJRkZfVE9LRU5cIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGV4cHI7XG4gICAgICAgIGZfaWQgdG9rZW47XG4gICAgICBdXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4dHVyZSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElGRl9NSVhUVVJFXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBleHByO1xuICAgICAgICBmX21peCBtaXh0dXJlO1xuICAgICAgXVxuXG5hbmQgYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBUUlVFIC0+IGBCb29sIHRydWVcbiAgfCBGQUxTRSAtPiBgQm9vbCBmYWxzZVxuICB8IFVOX0JPT0xfT1AgKG9wLCBhKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLnVuX2Jvb2xfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGE7XG4gICAgICBdXG4gIHwgQklOX0JPT0xfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmJpbl9ib29sX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYjtcbiAgICAgIF1cbiAgfCBDT01QQVJFX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5jb21wYXJlX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGI7XG4gICAgICBdXG5cbmxldCByZWMgZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESUZGX01JWFRVUkVcIjsgZXhwcjsgbWl4dHVyZSBdIC0+XG4gICAgRElGRl9LQVBQQV9JTlNUQU5DRVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBleHByLFxuICAgICAgICBmX21peCBtaXh0dXJlIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESUZGX1RPS0VOXCI7IGV4cHI7IHRvayBdIC0+XG4gICAgRElGRl9UT0tFTlxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBleHByLFxuICAgICAgICBmX2lkIHRvayApXG4gIHwgYExpc3QgWyBvcDsgYTsgYiBdIC0+XG4gICAgQklOX0FMR19PUFxuICAgICAgKCBPcGVyYXRvci5iaW5fYWxnX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGEsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGJcbiAgICAgIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJWQVJcIjsgaSBdIC0+IEFMR19WQVIgKGZfaWQgaSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJUT0tFTlwiOyBpIF0gLT4gVE9LRU5fSUQgKGZfaWQgaSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJNSVhcIjsgY2MgXSAtPiBLQVBQQV9JTlNUQU5DRSAoZl9taXggY2MpXG4gIHwgYExpc3QgWyBvcDsgYSBdIC0+XG4gICAgVU5fQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLnVuX2FsZ19vcF9vZl9qc29uIG9wLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhXG4gICAgICApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiSUZcIjsgY29uZDsgeWVzOyBubyBdIC0+XG4gICAgSUZcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGNvbmQsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIHllcyxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgbm9cbiAgICAgIClcbiAgfCB4IC0+XG4gICAgKHRyeSBTVEFURV9BTEdfT1AgKE9wZXJhdG9yLnN0YXRlX2FsZ19vcF9vZl9qc29uIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgKHRyeSBDT05TVCAoTmJyLm9mX3lvanNvbiB4KVxuICAgICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgQWxnX2V4cHJcIiwgeCkpKSlcblxuYW5kIGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPlxuICAgIGlmIGIgdGhlblxuICAgICAgVFJVRVxuICAgIGVsc2VcbiAgICAgIEZBTFNFXG4gIHwgYExpc3QgWyBvcDsgYSBdIC0+XG4gICAgVU5fQk9PTF9PUFxuICAgICAgKCBPcGVyYXRvci51bl9ib29sX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhIClcbiAgfCBgTGlzdCBbIG9wOyBhOyBiIF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBCSU5fQk9PTF9PUFxuICAgICAgICAgKCBPcGVyYXRvci5iaW5fYm9vbF9vcF9vZl9qc29uIG9wLFxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgYSxcbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgIGIgKVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBDT01QQVJFX09QXG4gICAgICAgICAgICAoIE9wZXJhdG9yLmNvbXBhcmVfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICAgICBiIClcbiAgICAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbCBleHByXCIsIHgpKSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbF9leHByXCIsIHgpKVxuXG5sZXQgcmVjIHByaW50IHByX21peCBwcl90b2sgcHJfdmFyIGYgPSBmdW5jdGlvblxuICB8IENPTlNUIG4gLT4gTmJyLnByaW50IGYgblxuICB8IEFMR19WQVIgbGFiIC0+IHByX3ZhciBmIGxhYlxuICB8IEtBUFBBX0lOU1RBTkNFIGFzdCAtPiBwcl9taXggZiBhc3RcbiAgfCBUT0tFTl9JRCB0ayAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIHByX3RvayB0a1xuICB8IFNUQVRFX0FMR19PUCBvcCAtPiBPcGVyYXRvci5wcmludF9zdGF0ZV9hbGdfb3AgZiBvcFxuICB8IEJJTl9BTEdfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBPcGVyYXRvci5wcmludF9iaW5fYWxnX29wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiIGYgb3BcbiAgfCBVTl9BTEdfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhKCVhKVwiIE9wZXJhdG9yLnByaW50X3VuX2FsZ19vcCBvcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYVxuICB8IElGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSBbP10gJWEgWzpdICVhXCJcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgY29uZFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgeWVzXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBub1xuICB8IERJRkZfVE9LRU4gKChleHByLCBfKSwgdG9rKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkaWZmKCVhLCVhKVwiIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgZXhwciBwcl90b2sgdG9rXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoKGV4cHIsIF8pLCBtaXh0dXJlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkaWZmKCVhLCVhKVwiXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBleHByIHByX21peCBtaXh0dXJlXG5cbmFuZCBwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyIGYgPSBmdW5jdGlvblxuICB8IFRSVUUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlt0cnVlXVwiXG4gIHwgRkFMU0UgLT4gRm9ybWF0LmZwcmludGYgZiBcIltmYWxzZV1cIlxuICB8IFVOX0JPT0xfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICglYSlcIiBPcGVyYXRvci5wcmludF91bl9ib29sX29wIG9wXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGFcbiAgfCBCSU5fQk9PTF9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJWEgJWEpXCJcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYSBPcGVyYXRvci5wcmludF9iaW5fYm9vbF9vcCBvcFxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiXG4gIHwgQ09NUEFSRV9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJWEgJWEpXCJcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGEgT3BlcmF0b3IucHJpbnRfY29tcGFyZV9vcCBvcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYlxuXG5sZXQgY29uc3QgbiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChDT05TVCBuKVxubGV0IGludCBpID0gY29uc3QgKE5ici5JIGkpXG5sZXQgZmxvYXQgZiA9IGNvbnN0IChOYnIuRiBmKVxubGV0IGFkZCBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5TVU0sIGUxLCBlMikpXG5sZXQgbWludXMgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuTUlOVVMsIGUxLCBlMikpXG5sZXQgbXVsdCBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBlMSwgZTIpKVxubGV0IGRpdiBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGUxLCBlMikpXG5sZXQgcG93IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLlBPVywgZTEsIGUyKSlcbmxldCBsb2cgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5MT0csIGUxKSlcblxubGV0IGxuIGUxID1cbiAgKCogSkY6IElmIEkgcmVtZW1uYmVyIHdlbGwgKilcbiAgZGl2IChsb2cgZTEpIChsb2cgKGludCAxMCkpXG5cbmxldCBzaW4gZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5TSU5VUywgZTEpKVxubGV0IGNvcyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLkNPU0lOVVMsIGUxKSlcbmxldCB1bWludXMgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5VTUlOVVMsIGUxKSlcbmxldCBzcXJ0IGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuU1FSVCwgZTEpKVxuXG5sZXQgcmVjIGFkZF9kZXAgKChpbl90LCBpbl9lLCB0b2tzX2QsIG91dCkgYXMgeCkgZCA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gYWRkX2RlcCAoYWRkX2RlcCB4IGQgYSkgZCBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgX1xuICAoKiB3aGVuIHdlIGRpZmZlcmVudGlhdGUgYWdhaW5zdCBhIHZhcmlhYmxlLCB0aGUgcmVzdWx0IG1heSBkZXBlbmQgb24gdGhpcyB2YXJpYWJsZSBvbmx5IGlmIHRoZSB2YXJpYWJsZSBvY2N1cnMgaW4gdGhlIGRpZmZlcm50aWF0ZWQgZXhwcmVzc2lvbiAqKVxuICAgIC0+XG4gICAgYWRkX2RlcCB4IGQgYVxuICB8IEFMR19WQVIgaiwgXyAtPlxuICAgIGxldCAoKSA9IG91dC4oaikgPC0gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIG91dC4oaikgaW5cbiAgICB4XG4gIHwgKEtBUFBBX0lOU1RBTkNFIF8gfCBDT05TVCBfKSwgXyAtPiB4XG4gIHwgVE9LRU5fSUQgaSwgXyAtPlxuICAgIGxldCAoKSA9IHRva3NfZC4oaSkgPC0gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIHRva3NfZC4oaSkgaW5cbiAgICB4XG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYWRkX2RlcCAoYWRkX2RlcCAoYWRkX2RlcF9ib29sIHggZCBjb25kKSBkIHllcykgZCBub1xuICB8IFNUQVRFX0FMR19PUCBvcCwgXyAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5FTUFYX1ZBUiB8IE9wZXJhdG9yLlRNQVhfVkFSIC0+IHhcbiAgICB8IE9wZXJhdG9yLlRJTUVfVkFSIC0+IE9wZXJhdG9yLkRlcFNldC5hZGQgZCBpbl90LCBpbl9lLCB0b2tzX2QsIG91dFxuICAgIHwgT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIC0+XG4gICAgICBpbl90LCBPcGVyYXRvci5EZXBTZXQuYWRkIGQgaW5fZSwgdG9rc19kLCBvdXQpXG5cbmFuZCBhZGRfZGVwX2Jvb2wgeCBkID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiB4XG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYWRkX2RlcF9ib29sIHggZCBhXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGFkZF9kZXBfYm9vbCAoYWRkX2RlcF9ib29sIHggZCBhKSBkIGJcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBhZGRfZGVwIChhZGRfZGVwIHggZCBhKSBkIGJcblxubGV0IHJlYyBoYXNfbWl4IDpcbiAgICB0eXBlIGEuID92YXJfZGVjbHM6KCdiIC0+ICgnYywgJ2IpIGUpIC0+IChhLCAnYikgZSAtPiBwZXJ2YXNpdmVzX2Jvb2wgPVxuIGZ1biA/dmFyX2RlY2xzIC0+IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBVTl9BTEdfT1AgKF8sIChhLCBfKSlcbiAgfCBESUZGX1RPS0VOICgoYSwgXyksIF8pXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoKGEsIF8pLCBfKSAtPlxuICAgICgqIHdoZW4gd2UgZGlmZmVyZW50aWF0ZSBhZ2FpbnN0IGEgdmFyaWFibGUsIHRoZSByZXN1bHQgbWF5IGRlcGVuZCBvbiB0aGlzIHZhcmlhYmxlIG9ubHkgaWYgdGhlIHZhcmlhYmxlIG9jY3VycyBpbiB0aGUgZGlmZmVybnRpYXRlZCBleHByZXNzaW9uICopXG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGFcbiAgfCBTVEFURV9BTEdfT1AgXyB8IENPTlNUIF8gLT4gZmFsc2VcbiAgfCBUT0tFTl9JRCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyAtPiB0cnVlXG4gIHwgSUYgKChjb25kLCBfKSwgKHllcywgXyksIChubywgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIHllcyB8fCBoYXNfbWl4ID92YXJfZGVjbHMgbm9cbiAgICB8fCBib29sX2hhc19taXggP3Zhcl9kZWNscyBjb25kXG4gIHwgQUxHX1ZBUiBpIC0+XG4gICAgKG1hdGNoIHZhcl9kZWNscyB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGYgLT4gaGFzX21peCA/dmFyX2RlY2xzIChmIGkpKVxuXG5hbmQgYm9vbF9oYXNfbWl4IDpcbiAgICB0eXBlIGEuID92YXJfZGVjbHM6KCdiIC0+ICgnYywgJ2IpIGUpIC0+IChhLCAnYikgYm9vbCAtPiBwZXJ2YXNpdmVzX2Jvb2wgPVxuIGZ1biA/dmFyX2RlY2xzIC0+IGZ1bmN0aW9uXG4gIHwgVFJVRSB8IEZBTFNFIC0+IGZhbHNlXG4gIHwgQ09NUEFSRV9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgYm9vbF9oYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBib29sX2hhc19taXggP3Zhcl9kZWNscyBiXG4gIHwgVU5fQk9PTF9PUCAoXywgKGEsIF8pKSAtPiBib29sX2hhc19taXggP3Zhcl9kZWNscyBhXG5cbmxldCByZWMgaXNfY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IENPTlNUIF8sIF8gLT4gdHJ1ZVxuICB8IElGIChhLCBiLCBjKSwgXyAtPiBib29sX2lzX2NvbnN0YW50IGEgJiYgaXNfY29uc3RhbnQgYiAmJiBpc19jb25zdGFudCBjXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gaXNfY29uc3RhbnQgYSAmJiBpc19jb25zdGFudCBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSB8IERJRkZfVE9LRU4gKGEsIF8pKSwgXyAtPlxuICAgIGlzX2NvbnN0YW50IGFcbiAgfCAoQUxHX1ZBUiBfIHwgU1RBVEVfQUxHX09QIF8gfCBUT0tFTl9JRCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyksIF8gLT4gZmFsc2VcblxuYW5kIGJvb2xfaXNfY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHRydWVcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBpc19jb25zdGFudCBhICYmIGlzX2NvbnN0YW50IGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gYm9vbF9pc19jb25zdGFudCBhICYmIGJvb2xfaXNfY29uc3RhbnQgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaXNfY29uc3RhbnQgYVxuXG5sZXQgcmVjIGlzX3RpbWVfaG9tb2dlbmVvdXMgPSBmdW5jdGlvblxuICB8IENPTlNUIF8sIF8gLT4gdHJ1ZVxuICB8IElGIChhLCBiLCBjKSwgXyAtPlxuICAgIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBhICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgYiAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGNcbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBpc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSB8IERJRkZfVE9LRU4gKGEsIF8pKSwgXyAtPlxuICAgIGlzX3RpbWVfaG9tb2dlbmVvdXMgYVxuICB8ICggU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApLFxuICAgICAgXyApXG4gIHwgQUxHX1ZBUiBfLCBfXG4gIHwgVE9LRU5fSUQgXywgX1xuICB8IEtBUFBBX0lOU1RBTkNFIF8sIF8gLT5cbiAgICB0cnVlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSLCBfIC0+IGZhbHNlXG5cbmFuZCBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHRydWVcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBpc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYVxuXG5sZXQgcmVjIGF1eF9leHRyYWN0X2NjIGFjYyA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIGFjYyBhKSBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgXyAtPlxuICAgIGF1eF9leHRyYWN0X2NjIGFjYyBhXG4gIHwgKEFMR19WQVIgXyB8IENPTlNUIF8gfCBUT0tFTl9JRCBfIHwgU1RBVEVfQUxHX09QIF8pLCBfIC0+IGFjY1xuICB8IEtBUFBBX0lOU1RBTkNFIGksIF8gLT4gaSA6OiBhY2NcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgKGV4dHJhY3RfY2NfYm9vbCBhY2MgY29uZCkgeWVzKSBub1xuXG5hbmQgZXh0cmFjdF9jY19ib29sIGFjYyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gYWNjXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGV4dHJhY3RfY2NfYm9vbCAoZXh0cmFjdF9jY19ib29sIGFjYyBhKSBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gZXh0cmFjdF9jY19ib29sIGFjYyBhXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT4gYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIGFjYyBhKSBiXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIHggPSBhdXhfZXh0cmFjdF9jYyBbXSB4XG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIHggPSBleHRyYWN0X2NjX2Jvb2wgW10geFxuXG5sZXQgc2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCB0b2tzIHZhcnMgPVxuICBsZXQgaW5fdCA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgaW5fZSA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgdG9rc19kID0gQXJyYXkubWFrZSAoTmFtZWREZWNscy5zaXplIHRva3MpIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIHZhcnMpIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIHggKF8sIHkpIC0+IGFkZF9kZXAgeCAoT3BlcmF0b3IuQUxHIGkpIHkpXG4gICAgKGluX3QsIGluX2UsIHRva3NfZCwgb3V0KSB2YXJzXG5cbmxldCByZWMgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzID1cbiAgZnVuY3Rpb25cbiAgfCAoQklOX0FMR19PUCAob3AsIGEsIGIpLCBwb3MpIGFzIHggLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhLFxuICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGJcbiAgICAgICApXG4gICAgIHdpdGhcbiAgICB8IChDT05TVCBjMSwgXyksIChDT05TVCBjMiwgXykgLT4gQ09OU1QgKE5ici5vZl9iaW5fYWxnX29wIG9wIGMxIGMyKSwgcG9zXG4gICAgfCAoICgoICggQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICAgfCBESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfXG4gICAgICAgICAgIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgICAgXyApIGFzIGEnKSxcbiAgICAgICAgKCggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICB8IERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF9cbiAgICAgICAgICAgfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICAgICBfICkgYXMgYicpICkgLT5cbiAgICAgIGlmIGEgPT0gYScgJiYgYiA9PSBiJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgQklOX0FMR19PUCAob3AsIGEnLCBiJyksIHBvcylcbiAgfCAoVU5fQUxHX09QIChvcCwgYSksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIGMsIF8gLT4gQ09OU1QgKE5ici5vZl91bl9hbGdfb3Agb3AgYyksIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBVTl9BTEdfT1AgKG9wLCBhJyksIHBvcylcbiAgfCAoRElGRl9UT0tFTiAoYSwgdCksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIF8sIF8gLT5cbiAgICAgICgqIHRoZSBkZXJpdmF0aXZlIG9mIGEgY29uc3RhbnQgaXMgemVybyAqKVxuICAgICAgQ09OU1QgTmJyLnplcm8sIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgSUYgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBESUZGX1RPS0VOIChhJywgdCksIHBvcylcbiAgfCAoRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgbSksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIF8sIF8gLT5cbiAgICAgICgqIHRoZSBkZXJpdmF0aXZlIG9mIGEgY29uc3RhbnQgaXMgemVybyAqKVxuICAgICAgQ09OU1QgTmJyLnplcm8sIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBESUZGX0tBUFBBX0lOU1RBTkNFIChhJywgbSksIHBvcylcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuRU1BWF9WQVIsIHBvcyAtPlxuICAgICggQ09OU1RcbiAgICAgICAgKG1hdGNoIG1heF9ldmVudHMgd2l0aFxuICAgICAgICB8IFNvbWUgbiAtPiBOYnIuSSBuXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgICAgICBcIltFbWF4XSBjb25zdGFudCBpcyBldmFsdWF0ZWQgdG8gaW5maW5pdHlcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIE5ici5GIGluZmluaXR5KSxcbiAgICAgIHBvcyApXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRNQVhfVkFSLCBwb3MgLT5cbiAgICAoIENPTlNUXG4gICAgICAgIChtYXRjaCBtYXhfdGltZSB3aXRoXG4gICAgICAgIHwgU29tZSB0IC0+IE5ici5GIHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICAgIFwiW1RtYXhdIGNvbnN0YW50IGlzIGV2YWx1YXRlZCB0byBpbmZpbml0eVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTmJyLkYgaW5maW5pdHkpLFxuICAgICAgcG9zIClcbiAgfCAoIFNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5USU1FX1ZBUiB8IE9wZXJhdG9yLkVWRU5UX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSICksXG4gICAgICBfICkgYXMgeCAtPlxuICAgIHhcbiAgfCAoQUxHX1ZBUiBpLCBwb3MpIGFzIHggLT5cbiAgICBpZiBMaXN0Lm1lbSBpIHVwZGF0ZWRfdmFycyB0aGVuXG4gICAgICB4XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB2YXJzLihpKSB3aXRoXG4gICAgICB8IF8sICgoKENPTlNUIF8gfCBBTEdfVkFSIF8pIGFzIHkpLCBfKSAtPiB5LCBwb3NcbiAgICAgIHwgKCBfLFxuICAgICAgICAgICggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICAgfCBUT0tFTl9JRCBfIHwgSUYgXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IERJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgeFxuICAgIClcbiAgfCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyksIF8pIGFzIHggLT4geFxuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgIH52YXJzIGNvbmRcbiAgICAgd2l0aFxuICAgIHwgVFJVRSwgXyAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIHllc1xuICAgIHwgRkFMU0UsIF8gLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBub1xuICAgIHwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgY29uZCcgLT5cbiAgICAgICggSUZcbiAgICAgICAgICAoIGNvbmQnLFxuICAgICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgIH52YXJzIHllcyxcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgICB+dmFycyBubyApLFxuICAgICAgICBwb3MgKSlcblxuYW5kIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzID1cbiAgZnVuY3Rpb25cbiAgfCAoKFRSVUUgfCBGQUxTRSksIF8pIGFzIHggLT4geFxuICB8IFVOX0JPT0xfT1AgKG9wLCBhKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICB+dmFycyBhLFxuICAgICAgICAgb3AgKVxuICAgICB3aXRoXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk5PVCAtPiBGQUxTRSwgcG9zXG4gICAgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5OT1QgLT4gVFJVRSwgcG9zXG4gICAgfCAoKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgYScpLCBfIC0+XG4gICAgICBVTl9CT09MX09QIChvcCwgYScpLCBwb3MpXG4gIHwgQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICB+dmFycyBhLFxuICAgICAgICAgb3AgKVxuICAgICB3aXRoXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk9SIC0+IFRSVUUsIHBvc1xuICAgIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuQU5EIC0+IEZBTFNFLCBwb3NcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuQU5EIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuT1IgLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzXG4gICAgICAgIGJcbiAgICB8ICgoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBhJyksIF8gLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgIH52YXJzIGIsXG4gICAgICAgICAgIG9wIClcbiAgICAgICB3aXRoXG4gICAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuT1IgLT4gVFJVRSwgcG9zXG4gICAgICB8IChGQUxTRSwgXyksIE9wZXJhdG9yLkFORCAtPiBGQUxTRSwgcG9zXG4gICAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuQU5EIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuT1IgLT4gYSdcbiAgICAgIHwgKCgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGInKSwgXyAtPlxuICAgICAgICBCSU5fQk9PTF9PUCAob3AsIGEnLCBiJyksIHBvcykpXG4gIHwgQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgYScgPVxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICBpblxuICAgIGxldCBiJyA9XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYlxuICAgIGluXG4gICAgKG1hdGNoIGEnLCBiJyB3aXRoXG4gICAgfCAoQ09OU1QgbjEsIF8pLCAoQ09OU1QgbjIsIF8pIC0+XG4gICAgICBpZiBOYnIub2ZfY29tcGFyZV9vcCBvcCBuMSBuMiB0aGVuXG4gICAgICAgIFRSVUUsIHBvc1xuICAgICAgZWxzZVxuICAgICAgICBGQUxTRSwgcG9zXG4gICAgfCAoICggKCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBESUZGX1RPS0VOIF8gfCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgX1xuICAgICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgICB8IElGIF8gKSxcbiAgICAgICAgICBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQ09NUEFSRV9PUCAob3AsIGEnLCBiJyksIHBvcylcblxubGV0IHJlYyBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgKChpbl90LCBfLCBfLCBkZXBzKSBhcyB2YXJzX2RlcHMpID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IChVTl9BTEdfT1AgKF8sIGEpIHwgRElGRl9UT0tFTiAoYSwgXykgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSksIF8gLT5cbiAgICBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfKSwgXyAtPiBmYWxzZVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiwgXyAtPiB0cnVlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLkVWRU5UX1ZBUiwgXyAtPiBub3Qgb25seV90aW1lXG4gIHwgKCBTVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSICksXG4gICAgICBfICkgLT5cbiAgICBmYWxzZVxuICB8IEFMR19WQVIgaSwgXyAtPlxuICAgIGxldCByZWMgYXV4IGogPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0Lm1lbSAoT3BlcmF0b3IuQUxHIGopIGluX3RcbiAgICAgIHx8IE9wZXJhdG9yLkRlcFNldC5leGlzdHNcbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBPcGVyYXRvci5BTEcgayAtPiBhdXgga1xuICAgICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBfIHwgT3BlcmF0b3IuTU9ESUYgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgZGVwcy4oailcbiAgICBpblxuICAgIGF1eCBpXG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGNvbmRcbiAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIHllc1xuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgbm9cblxuYW5kIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gZmFsc2VcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuXG5sZXQgcmVjIGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgPSBmdW5jdGlvblxuICB8IFRSVUUgfCBGQUxTRSAtPiBmYWxzZVxuICB8IFVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwgKGEsIF8pKSAtPiBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzIGFcbiAgfCBCSU5fQk9PTF9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyBhIHx8IGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgYlxuICB8IENPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGxldCBvbmx5X3RpbWUgPSB0cnVlIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLkVRVUFMXG4gICAgICB3aGVuIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgICAgICAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGIgLT5cbiAgICAgIHRydWVcbiAgICB8IE9wZXJhdG9yLkVRVUFMIHwgT3BlcmF0b3IuU01BTExFUiB8IE9wZXJhdG9yLkdSRUFURVIgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgICBmYWxzZSlcblxubGV0IHJlYyBtYXBfb25fbWl4dHVyZSBmID0gZnVuY3Rpb25cbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBwIC0+IGYgaSwgcFxuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXywgXyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICBcIkFsZ19leHByLm1hcF9vbl9taXh0dXJlIGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIG9mIERJRkZfS0FQUEFfSU5TVEFOQ0VcIlxuICB8IChDT05TVCBfLCBfKSBhcyB4IC0+IHhcbiAgfCAoQUxHX1ZBUiBfLCBfKSBhcyB4IC0+IHhcbiAgfCAoVE9LRU5fSUQgXywgXykgYXMgeCAtPiB4XG4gIHwgRElGRl9UT0tFTiAoYSwgaSksIHAgLT4gRElGRl9UT0tFTiAobWFwX29uX21peHR1cmUgZiBhLCBpKSwgcFxuICB8IChTVEFURV9BTEdfT1AgXywgXykgYXMgeCAtPiB4XG4gIHwgQklOX0FMR19PUCAobywgeCwgeSksIHAgLT5cbiAgICBCSU5fQUxHX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcbiAgfCBVTl9BTEdfT1AgKG8sIHgpLCBwIC0+IFVOX0FMR19PUCAobywgbWFwX29uX21peHR1cmUgZiB4KSwgcFxuICB8IElGIChiLCB4LCB5KSwgcCAtPlxuICAgIElGIChtYXBfYm9vbF9vbl9taXh0dXJlIGYgYiwgbWFwX29uX21peHR1cmUgZiB4LCBtYXBfb25fbWl4dHVyZSBmIHkpLCBwXG5cbmFuZCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgPSBmdW5jdGlvblxuICB8IChUUlVFLCBfKSBhcyB4IC0+IHhcbiAgfCAoRkFMU0UsIF8pIGFzIHggLT4geFxuICB8IEJJTl9CT09MX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIEJJTl9CT09MX09QIChvLCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeCwgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHkpLCBwXG4gIHwgVU5fQk9PTF9PUCAobywgeCksIHAgLT4gVU5fQk9PTF9PUCAobywgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHgpLCBwXG4gIHwgQ09NUEFSRV9PUCAobywgeCwgeSksIHAgLT5cbiAgICBDT01QQVJFX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcblxubGV0IHJlYyBmb2xkX29uX21peHR1cmUgZiB4ID0gZnVuY3Rpb25cbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBfIC0+IGYgeCBpXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfLCBfIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiQWxnX2V4cHIuZm9sZF9vbl9taXh0dXJlIGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIG9mIERJRkZfS0FQUEFfSU5TVEFOQ0VcIlxuICB8IENPTlNUIF8sIF8gLT4geFxuICB8IEFMR19WQVIgXywgXyAtPiB4XG4gIHwgVE9LRU5fSUQgXywgXyAtPiB4XG4gIHwgRElGRl9UT0tFTiAoYSwgXyksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgeCBhXG4gIHwgU1RBVEVfQUxHX09QIF8sIF8gLT4geFxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IGEpIGJcbiAgfCBVTl9BTEdfT1AgKF8sIGEpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIHggYVxuICB8IElGIChiLCB1LCB2KSwgXyAtPlxuICAgIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IHUpIHYpIGJcblxuYW5kIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCA9IGZ1bmN0aW9uXG4gIHwgVFJVRSwgXyAtPiB4XG4gIHwgRkFMU0UsIF8gLT4geFxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgKGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCBhKSBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gZm9sZF9ib29sX29uX21peHR1cmUgZiB4IGFcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgeCBhKSBiXG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgKEJJTl9BTEdfT1AgKG9wYSwgYTEsIGEyKSwgXyksIChCSU5fQUxHX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4gIHwgKCAoQklOX0FMR19PUCBfLCBfKSxcbiAgICAgICggKCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICBfICkgKVxuICB8ICggKCAoIFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSxcbiAgICAgIChCSU5fQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChVTl9BTEdfT1AgKG9wYSwgYTEpLCBfKSwgKFVOX0FMR19PUCAob3BiLCBiMSksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxXG4gIHwgKCAoVU5fQUxHX09QIF8sIF8pLFxuICAgICAgKCAoIFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgIHwgSUYgXyApLFxuICAgICAgICBfICkgKVxuICB8ICggKCAoIFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgIHwgSUYgXyApLFxuICAgICAgICBfICksXG4gICAgICAoVU5fQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChTVEFURV9BTEdfT1Agb3BhLCBfKSwgKFNUQVRFX0FMR19PUCBvcGIsIF8pIC0+IG9wYSA9IG9wYlxuICB8ICggKFNUQVRFX0FMR19PUCBfLCBfKSxcbiAgICAgICgoQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pIClcbiAgfCAoICgoQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLFxuICAgICAgKFNUQVRFX0FMR19PUCBfLCBfKSApIC0+XG4gICAgZmFsc2VcbiAgfCAoQUxHX1ZBUiBpZDEsIF8pLCAoQUxHX1ZBUiBpZDIsIF8pIC0+IGlkMSA9IGlkMlxuICB8IChBTEdfVkFSIF8sIF8pLCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLCAoQUxHX1ZBUiBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEtBUFBBX0lOU1RBTkNFIG1peDEsIF8pLCAoS0FQUEFfSU5TVEFOQ0UgbWl4MiwgXykgLT4gbWl4MSA9IG1peDJcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXywgXyksICgoVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXylcbiAgfCAoKFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLCAoS0FQUEFfSU5TVEFOQ0UgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChUT0tFTl9JRCBpZDEsIF8pLCAoVE9LRU5fSUQgaWQyLCBfKSAtPiBpZDEgPSBpZDJcbiAgfCAoVE9LRU5fSUQgXywgXyksICgoQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoQ09OU1QgXyB8IElGIF8pLCBfKSwgKFRPS0VOX0lEIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoQ09OU1QgYzEsIF8pLCAoQ09OU1QgYzIsIF8pIC0+IE5ici5pc19lcXVhbCBjMSBjMlxuICB8IChDT05TVCBfLCBfKSwgKElGIF8sIF8pIHwgKElGIF8sIF8pLCAoQ09OU1QgXywgXykgLT4gZmFsc2VcbiAgfCAoSUYgKGNvbmRhLCBhMSwgYTIpLCBfKSwgKElGIChjb25kYiwgYjEsIGIyKSwgXykgLT5cbiAgICBlcXVhbF9ib29sIGNvbmRhIGNvbmRiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4gIHwgKChESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8pLCBfKSwgX1xuICB8IF8sICgoRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfKSwgXykgLT5cbiAgICBhc3NlcnQgZmFsc2VcblxuYW5kIGVxdWFsX2Jvb2wgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgKFRSVUUsIF8pLCAoVFJVRSwgXykgLT4gdHJ1ZVxuICB8IChUUlVFLCBfKSwgKChGQUxTRSB8IEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKVxuICB8ICgoRkFMU0UgfCBCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXyksIChUUlVFLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEZBTFNFLCBfKSwgKEZBTFNFLCBfKSAtPiB0cnVlXG4gIHwgKEZBTFNFLCBfKSwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXylcbiAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSwgKEZBTFNFLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKFVOX0JPT0xfT1AgKG9wYSwgYSksIF8pLCAoVU5fQk9PTF9PUCAob3BiLCBiKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWxfYm9vbCBhIGJcbiAgfCAoVU5fQk9PTF9PUCBfLCBfKSwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfKSwgXylcbiAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8pLCBfKSwgKFVOX0JPT0xfT1AgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChCSU5fQk9PTF9PUCAob3BhLCBhMSwgYTIpLCBfKSwgKEJJTl9CT09MX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsX2Jvb2wgYTEgYjEgJiYgZXF1YWxfYm9vbCBhMiBiMlxuICB8IChCSU5fQk9PTF9PUCBfLCBfKSwgKENPTVBBUkVfT1AgXywgXykgfCAoQ09NUEFSRV9PUCBfLCBfKSwgKEJJTl9CT09MX09QIF8sIF8pXG4gICAgLT5cbiAgICBmYWxzZVxuICB8IChDT01QQVJFX09QIChvcGEsIGExLCBhMiksIF8pLCAoQ09NUEFSRV9PUCAob3BiLCBiMSwgYjIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbCBhMSBiMSAmJiBlcXVhbCBhMiBiMlxuIiwiKCoqXG4gICogY29udGFjdF9tYXAubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCAmIEx5IEtpbSBRdXllbiwgcHJvamVjdCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogQ3JlYXRpb246IDIwMTcsIHRoZSAyM3JkIG9mIEp1bmVcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNSAyMDE3PlxuICAqXG4gICogQ29tcHV0ZSBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50IGluIGNvbnRhY3QgbWFwXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGVcbiAgKiBlbiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuXG4gICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHQgPSAoTW9kcy5JbnRTZXQudCAqIE1vZHMuSW50MlNldC50KSBhcnJheSBhcnJheVxuXG5sZXQgdG9feW9qc29uIGEgPVxuICBsZXQgaW50bHNfdG9fanNvbiBhID1cbiAgICBgTGlzdCAoTW9kcy5JbnRTZXQuZm9sZCAoZnVuIGIgYWNjIC0+IGBJbnQgYiA6OiBhY2MpIGEgW10pXG4gIGluXG4gIGxldCBwYWlybHNfdG9fanNvbiBhID1cbiAgICBgTGlzdFxuICAgICAgKE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAoZnVuIChiLCBjKSBhY2MgLT4gYExpc3QgWyBgSW50IGI7IGBJbnQgYyBdIDo6IGFjYylcbiAgICAgICAgIGEgW10pXG4gIGluXG4gIGxldCBhcnJheV90b19qc29uIGEgPVxuICAgIGBMaXN0XG4gICAgICAoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIGFjYyAoYSwgYikgLT4gYExpc3QgWyBpbnRsc190b19qc29uIGE7IHBhaXJsc190b19qc29uIGIgXSA6OiBhY2MpXG4gICAgICAgICBbXSBhKVxuICBpblxuICBgTGlzdCAoQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjIHQgLT4gYXJyYXlfdG9fanNvbiB0IDo6IGFjYykgW10gYSlcblxubGV0IG9mX3lvanNvbiAoYSA6IFlvanNvbi5CYXNpYy50KSA9XG4gIGxldCBpbnRsc19vZl9qc29uIGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBJbnQgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhY2NcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTFcIiwgeCkpKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgYVxuICBpblxuICBsZXQgcGFpcmxzX29mX2pzb24gYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExpc3QgWyBgSW50IGI7IGBJbnQgYyBdIC0+IE1vZHMuSW50MlNldC5hZGQgKGIsIGMpIGFjY1xuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhMlwiLCB4KSkpXG4gICAgICBNb2RzLkludDJTZXQuZW1wdHkgYVxuICBpblxuICBsZXQgYXJyYXlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgTGlzdCBscyAtPlxuICAgICAgKG1hdGNoIGxzIHdpdGhcbiAgICAgIHwgWyBgTGlzdCBhOyBgTGlzdCBiIF0gLT4gaW50bHNfb2ZfanNvbiBhLCBwYWlybHNfb2ZfanNvbiBiXG4gICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGEzXCIsIHgpKVxuICBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBgTGlzdCBhcnJheTEgLT5cbiAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYExpc3QgYXJyYXkyIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IGFycmF5X29mX2pzb24gYXJyYXkyXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGE0XCIsIHgpKSlcbiAgICAgIGFycmF5MVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBjb250YWN0IG1hcFwiLCB4KSlcblxubGV0IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHNpZ3MgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gYWcgZiBpbnRmIC0+XG4gICAgICAgICBpZiAobm90IChTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGFnKSkgfHwgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiUlYWdlbnQ6QCAlYShAWyVhQF0pQF1cIlxuICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICBhZ1xuICAgICAgICAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIHMgZiAoaXMsIGxzKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgU2lnbmF0dXJlLnNpdGVfaXNfY291bnRlciBzaWdzIGFnIHMgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2NvdW50ZXIgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJXQldEBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKE1vZHMuSW50U2V0LmlzX2VtcHR5IGlzKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7QFslYUBdfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBwLnNldCBNb2RzLkludFNldC5lbGVtZW50cyBQcC5zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZyBzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcylcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGxzKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJALFtAWyVhQF1dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50MlNldC5lbGVtZW50cyBQcC5zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAoYWQsIHNkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzKSkpXG4gICAgICAgICAgICAgaW50ZikpXG4gICAgY1xuXG5sZXQgY3V0X2F0IGkgcycgbCA9XG4gIGxldCByZWMgYXV4X2N1dF9hdCBvID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8ICgoKGosIHMpLCBfKSBhcyBoKSA6OiB0IC0+XG4gICAgICBpZiBpID0gaiB0aGVuXG4gICAgICAgIGlmIHMgPj0gcycgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUgKGggOjogbylcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X2N1dF9hdCAoaCA6OiBvKSB0XG4gIGluXG4gIGF1eF9jdXRfYXQgW10gbFxuXG5sZXQgZ2V0X2N5Y2xlcyBjb250YWN0X21hcCA9XG4gIGxldCByZWMgZGZzICgoa25vd24sIG91dCkgYXMgYWNjKSBwYXRoIGkgbGFzdF9zID1cbiAgICBpZiBNb2RzLkludFNldC5tZW0gaSBrbm93biB0aGVuIChcbiAgICAgIG1hdGNoIGN1dF9hdCBpIGxhc3RfcyBwYXRoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSB4IC0+IGtub3duLCB4IDo6IG91dFxuICAgICkgZWxzZSAoXG4gICAgICBsZXQga25vd24nID0gTW9kcy5JbnRTZXQuYWRkIGkga25vd24gaW5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBzIGFjYyAoXywgbCkgLT5cbiAgICAgICAgICBpZiBzID0gbGFzdF9zIHRoZW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gKCh0eSwgcycpIGFzIHgpIGFjYyAtPiBkZnMgYWNjICgoKGksIHMpLCB4KSA6OiBwYXRoKSB0eSBzJylcbiAgICAgICAgICAgICAgbCBhY2MpXG4gICAgICAgIChrbm93bicsIG91dCkgY29udGFjdF9tYXAuKGkpXG4gICAgKVxuICBpblxuICBsZXQgcmVjIHNjYW4gKChrbm93biwgb3V0KSBhcyBhY2MpIGkgPVxuICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgIG91dFxuICAgIGVsc2VcbiAgICAgIHNjYW5cbiAgICAgICAgKGlmIE1vZHMuSW50U2V0Lm1lbSBpIGtub3duIHRoZW5cbiAgICAgICAgICAgYWNjXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGRmcyBhY2MgW10gaSAoLTEpKVxuICAgICAgICAocHJlZCBpKVxuICBpblxuICBzY2FuIChNb2RzLkludFNldC5lbXB0eSwgW10pIChBcnJheS5sZW5ndGggY29udGFjdF9tYXAgLSAxKVxuXG5sZXQgcHJpbnRfY3ljbGVzIHNpZ3MgZm9ybSBjb250YWN0X21hcCA9XG4gIGxldCBvID0gZ2V0X2N5Y2xlcyBjb250YWN0X21hcCBpblxuICBQcC5saXN0IFBwLnNwYWNlXG4gICAgKFBwLmxpc3QgUHAuZW1wdHkgKGZ1biBmICgoYWcsIHMpLCAoYWcnLCBzJykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWEtJWEuXCJcbiAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICBhZ1xuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgc1xuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZycpXG4gICAgICAgICAgIHMnKSlcbiAgICBmb3JtIG9cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMyBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcmluZ19sZXZlbCA9IE5vX3NoYXJpbmcgfCBDb21wYXRpYmxlX3BhdHRlcm5zIHwgTWF4X3NoYXJpbmdcblxubGV0IHNoYXJpbmdfbGV2ZWxfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwibm9fc2hhcmluZ1wiIC0+IE5vX3NoYXJpbmdcbiAgfCBgU3RyaW5nIFwiY29tcGF0aWJsZV9wYXR0ZXJuc1wiIC0+IENvbXBhdGlibGVfcGF0dGVybnNcbiAgfCBgU3RyaW5nIFwibWF4X3NoYXJpbmdcIiAtPiBNYXhfc2hhcmluZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHNoYXJpbmdfbGV2ZWxcIiwgeCkpXG5cbmxldCB3cml0ZV9zaGFyaW5nX2xldmVsIG9iID0gZnVuY3Rpb25cbiAgfCBOb19zaGFyaW5nIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJub19zaGFyaW5nXCJcbiAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJjb21wYXRpYmxlX3BhdHRlcm5zXCJcbiAgfCBNYXhfc2hhcmluZyAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwibWF4X3NoYXJpbmdcIlxuXG5sZXQgc3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwgP2xlbjooXyA9IDEwMjQpID0gZnVuY3Rpb25cbiAgfCBOb19zaGFyaW5nIC0+IFwiXFxcIm5vX3NoYXJpbmdcXFwiXCJcbiAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+IFwiXFxcImNvbXBhdGlibGVfcGF0dGVybnNcXFwiXCJcbiAgfCBNYXhfc2hhcmluZyAtPiBcIlxcXCJtYXhfc2hhcmluZ1xcXCJcIlxuXG5sZXQgcmVhZF9zaGFyaW5nX2xldmVsIHAgbGIgPVxuICBzaGFyaW5nX2xldmVsX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgc2hhcmluZ19sZXZlbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2hhcmluZ19sZXZlbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIGxpbmsgPSBVblNwZWMgfCBGcmVlIHwgTGluayBvZiBpbnQgKiBpbnQgICgqKiBub2RlX2lkLCBzaXRlX2lkICopXG5cbnR5cGUgY2MgPSB7XG4gIG5vZGVzX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICBub2RlczogKGxpbmsgKiBpbnQpIGFycmF5IE1vZHMuSW50TWFwLnQ7XG4gICgqcGF0dGVybiBncmFwaCBpZCAtPiBbfC4uLiAobGlua19qLHN0YXRlX2opLi4ufF0gaS5lIGFnZW50X2lkIG9uIHNpdGVfaiBoYXNcbiAgICBhIGxpbmsgbGlua19qIGFuZCBpbnRlcm5hbCBzdGF0ZSBzdGF0ZV9qICgtMSBtZWFucyBhbnkpICopXG4gIHJlY29nbl9uYXY6IE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi50O1xufVxuKCoqIFRoZSBsaW5rIG9mIHNpdGUgayBvZiBub2RlIGkgaXMgW2ZzdCBub2RlcyhpKS4oayldLlxuXG4gICAgVGhlIGludGVybmFsIHN0YXRlIG9mIHNpdGUgayBvZiBub2RlIGkgaXMgW3NuZCBub2RlcyhpKS4oayldLiBBXG4gICAgbmVnYXRpdmUgbnVtYmVyIG1lYW5zIFVuU3BlYy4gKilcblxudHlwZSB0ID0gY2NcbnR5cGUgaWQgPSBpbnRcblxubGV0IGRlYnVnX3ByaW50X2lkIGZtdCBpZCA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgaWRcbmxldCBzaXplX29mX2NjIGNjID0gTW9kcy5JbnRNYXAuc2l6ZSBjYy5ub2Rlc1xubGV0IGNvbXBhcmVfY2Fub25pY2FscyBjYyBjYycgPSBNb2RzLmludF9jb21wYXJlIGNjIGNjJ1xubGV0IGlzX2VxdWFsX2Nhbm9uaWNhbHMgY2MgY2MnID0gY29tcGFyZV9jYW5vbmljYWxzIGNjIGNjJyA9IDBcbmxldCBoYXNoX3ByaW1lID0gMjlcblxubGV0IGNvYXJzZV9oYXNoIGNjID1cbiAgbGV0IHBsdXNfaW50ZXJuYWwgYWNjIHMgaSA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgVG9vbHMuY2FudG9yX3BhaXJpbmcgKHN1Y2MgcykgKHN1Y2MgaSkgKyBhY2NcbiAgaW5cbiAgbGV0IG5vZGVfc2hhcGUgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gbiBlIGFjYyAtPlxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgKGZ1biBzIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBVblNwZWMsIGkgLT4gcGx1c19pbnRlcm5hbCBhY2MgcyBpXG4gICAgICAgICAgICB8IEZyZWUsIGkgLT4gcGx1c19pbnRlcm5hbCAoMyArIChzICogMykgKyBhY2MpIHMgaVxuICAgICAgICAgICAgfCBMaW5rIChuJywgcycpLCBpIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MnID0gcGx1c19pbnRlcm5hbCBhY2MgcyBpIGluXG4gICAgICAgICAgICAgIGxldCBleHRyYSA9IFRvb2xzLmNhbnRvcl9wYWlyaW5nICgxICsgbWluIHMgcycpICgxICsgbWF4IHMgcycpIGluXG4gICAgICAgICAgICAgIGlmIChuID0gbicgJiYgcyA8IHMnKSB8fCBuIDwgbicgdGhlblxuICAgICAgICAgICAgICAgIChleHRyYSAqIDcpICsgYWNjJ1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICBhY2MgZSlcbiAgICAgIGNjLm5vZGVzIDBcbiAgaW5cbiAgQXJyYXkuZm9sZF9yaWdodFxuICAgIChmdW4gbCBhY2MgLT4gTGlzdC5sZW5ndGggbCArIChoYXNoX3ByaW1lICogYWNjKSlcbiAgICBjYy5ub2Rlc19ieV90eXBlIG5vZGVfc2hhcGVcblxubGV0IGlkX3RvX3lvanNvbiBjYyA9IGBJbnQgY2NcblxubGV0IGlkX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBjYyAtPiBjY1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgcGF0dGVybiBpZFwiLCB4KSlcblxubW9kdWxlIFNldCA9IE1vZHMuSW50U2V0XG5tb2R1bGUgTWFwID0gTW9kcy5JbnRNYXBcblxubW9kdWxlIE9ic01hcCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vZHMuRHluQXJyYXlcblxuICBsZXQgZHVtbXkgeCA9IG1ha2UgMCB4XG5lbmRcblxubGV0IGVtcHR5X2NjIHNpZ3MgPVxuICBsZXQgbmJ0ID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lncykgW10gaW5cbiAgeyBub2Rlc19ieV90eXBlID0gbmJ0OyByZWNvZ25fbmF2ID0gW107IG5vZGVzID0gTW9kcy5JbnRNYXAuZW1wdHkgfVxuXG5sZXQgcmF3X2ZpbmRfdHkgdHlzIGlkID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIExpc3QubWVtIGlkIHR5cy4oaSkgdGhlblxuICAgICAgaVxuICAgIGVsc2VcbiAgICAgIGF1eCAocHJlZCBpKVxuICBpblxuICBhdXggKEFycmF5Lmxlbmd0aCB0eXMgLSAxKVxuXG5sZXQgZmluZF90eSBjYyBpZCA9IHJhd19maW5kX3R5IGNjLm5vZGVzX2J5X3R5cGUgaWRcblxubGV0IGFkZF9vcmlnaW4gZGVwcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBkZXBzXG4gIHwgU29tZSB4IC0+IE9wZXJhdG9yLkRlcFNldC5hZGQgeCBkZXBzXG5cbmxldCByZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIGNjID0gY2MucmVjb2duX25hdlxuXG4oKiogRXJyb3JzICopXG5sZXQgYWxyZWFkeV9zcGVjaWZpZWQgP3NpZ3MgeCBpID1cbiAgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJTaXRlICVhIG9mIGFnZW50ICVhIGFscmVhZHkgc3BlY2lmaWVkXCJcbiAgICAgICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyB4KSBpXG4gICAgICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOmZhbHNlKVxuICAgICAgICAgIHgpKVxuXG5sZXQgZGFuZ2xpbmdfbm9kZSB+c2lncyB0eXMgeCA9XG4gIEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQ2Fubm90IHByb2NlZWQgYmVjYXVzZSBsYXN0IGRlY2xhcmVkIGFnZW50ICVhLyolaSovJWFcIlxuICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAocmF3X2ZpbmRfdHkgdHlzIHgpIHggRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgICAgICAgIFwiIGlzIG5vdCBsaW5rZWQgdG8gaXRzIGNvbm5lY3RlZCBjb21wb25lbnQuXCIpKVxuXG5sZXQgaWRlbnRpdHlfaW5qZWN0aW9uIGNjID1cbiAgUmVuYW1pbmcuaWRlbnRpdHlcbiAgICAoQXJyYXkuZm9sZF9sZWZ0IChmdW4geCB5IC0+IExpc3QucmV2X2FwcGVuZCB5IHgpIFtdIGNjLm5vZGVzX2J5X3R5cGUpXG5cbigqKiBwaWNrIGEgcm9vdCBpbiB0aGUgQ0MuIEFueSByb290IHdvcmtzLlxuICAgIEluIHRoaXMgY2FzZSBwaWNrIHRoZSBmaXJzdCBub2RlIG9mIHNtYWxsZXN0IHR5cGUgKilcbmxldCByYXdfZmluZF9yb290IG5vZGVzX2J5X3R5cGUgPVxuICBsZXQgcmVjIGF1eCB0eSA9XG4gICAgaWYgdHkgPSBBcnJheS5sZW5ndGggbm9kZXNfYnlfdHlwZSB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBub2Rlc19ieV90eXBlLih0eSkgd2l0aFxuICAgICAgfCBbXSAtPiBhdXggKHN1Y2MgdHkpXG4gICAgICB8IGggOjogXyAtPiBTb21lIChoLCB0eSlcbiAgICApXG4gIGluXG4gIGF1eCAwXG5cbmxldCBmaW5kX3Jvb3QgY2MgPSByYXdfZmluZF9yb290IGNjLm5vZGVzX2J5X3R5cGVcblxubGV0IHdlaWdodCBjYyA9XG4gIGxldCBsaW5rcywgZG91YmxlID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgQXJyYXkuZm9sZF9yaWdodCAoZnVuIChpLCBzKSAobCwgZCkgLT5cbiAgICAgICAgICAgIGlmIGkgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgKCBzdWNjXG4gICAgICAgICAgICAgICAgICAoaWYgcyA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBzdWNjIGxcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBsKSxcbiAgICAgICAgICAgICAgICBpZiBpIDw+IEZyZWUgdGhlblxuICAgICAgICAgICAgICAgICAgc3VjYyBkXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgZCApXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICggKGlmIHMgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgIHN1Y2MgbFxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgbCksXG4gICAgICAgICAgICAgICAgZCApKSlcbiAgICAgIGNjLm5vZGVzICgwLCAwKVxuICBpblxuICBsaW5rcyAtIChkb3VibGUgLyAyKVxuXG5sZXQgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgP3Bvc3NpYmlsaXRpZXMgfnN0cmljdCByb290MSBjYzEgcm9vdDIgY2MyID1cbiAgbGV0IHRpY2sgeCA9XG4gICAgbWF0Y2ggcG9zc2liaWxpdGllcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT4gcyA6PSBNb2RzLkludDJTZXQucmVtb3ZlIHggIXNcbiAgaW5cbiAgbGV0IHJlYyBhdXggYXRfbGVhc3Rfb25lX2VkZ2UgcmVuYW1lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBpZiBhdF9sZWFzdF9vbmVfZWRnZSB0aGVuXG4gICAgICAgIFNvbWUgcmVuYW1lLCBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmUsIE5vbmVcbiAgICB8ICgobywgcCkgYXMgcGFpcikgOjogdG9kb3MgLT5cbiAgICAgIGxldCAoKSA9IHRpY2sgcGFpciBpblxuICAgICAgKG1hdGNoXG4gICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgICAoZnVuIGkgYyAobHgsIGl4KSAobHksIGl5KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSwgXyAtPiBjXG4gICAgICAgICAgICAgfCBTb21lIChvbmVfZWRnZSwgdG9kbywgcmVuKSwgXyAtPlxuICAgICAgICAgICAgICAgaWYgKChub3Qgc3RyaWN0KSAmJiAoaXggPSAtMSB8fCBpeSA9IC0xKSkgfHwgaXggPSBpeSB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBMaW5rIF8sIEZyZWUgfCBGcmVlLCBMaW5rIF8gLT5cbiAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBGcmVlIHwgRnJlZSwgVW5TcGVjIHwgTGluayBfLCBVblNwZWMgfCBVblNwZWMsIExpbmsgX1xuICAgICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgICAgaWYgc3RyaWN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBTb21lIChvbmVfZWRnZSB8fCAoaXggPD4gLTEgJiYgaXggPSBpeSksIHRvZG8sIHJlbiksIE5vbmVcbiAgICAgICAgICAgICAgICAgfCBVblNwZWMsIFVuU3BlYyAtPlxuICAgICAgICAgICAgICAgICAgIFNvbWUgKG9uZV9lZGdlIHx8IChpeCA8PiAtMSAmJiBpeCA9IGl5KSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IEZyZWUsIEZyZWUgLT4gU29tZSAodHJ1ZSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IExpbmsgKG4xLCBzMSksIExpbmsgKG4yLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBzMSA9IHMyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBuMSByZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBpZiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZW4gbjEgPSBuMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAodHJ1ZSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBuMSBuMiByZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcicgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaW5kX3R5IGNjMSBuMSA9IGZpbmRfdHkgY2MyIG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgKHRydWUsIChuMSwgbjIpIDo6IHRvZG8sIHInKSwgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIHRydWUpKVxuICAgICAgICAgICAoU29tZSAoYXRfbGVhc3Rfb25lX2VkZ2UsIHRvZG9zLCByZW5hbWUpLCBOb25lKVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gbyBjYzEubm9kZXMpXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBwIGNjMi5ub2RlcylcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUsIGNvbmZsaWN0IC0+IE5vbmUsIGNvbmZsaWN0XG4gICAgICB8IFNvbWUgKG9uZV9lZGdlcycsIHRvZG9zJywgcmVuJyksIF8gLT4gYXV4IG9uZV9lZGdlcycgcmVuJyB0b2RvcycpXG4gIGluXG4gIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSByb290MSByb290MiAoUmVuYW1pbmcuZW1wdHkgKCkpIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgciAtPlxuICAgIGxldCBhX3NpbmdsZV9hZ2VudCA9XG4gICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBiIChsLCBpKSAtPiBiICYmIGkgPSAtMSAmJiBsID0gVW5TcGVjKVxuICAgICAgICB0cnVlXG4gICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSByb290MSBjYzEubm9kZXMpXG4gICAgICB8fCBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgKGZ1biBiIChsLCBpKSAtPiBiICYmIGkgPSAtMSAmJiBsID0gVW5TcGVjKVxuICAgICAgICAgICB0cnVlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSByb290MiBjYzIubm9kZXMpXG4gICAgaW5cbiAgICBhdXggYV9zaW5nbGVfYWdlbnQgciBbIHJvb3QxLCByb290MiBdXG5cbigqKiBAcmV0dXJuIGluamVjdGlvbiBmcm9tIGEgdG8gYiAqKVxubGV0IGVxdWFsIH5kZWJ1Z19tb2RlIGEgYiA9XG4gIG1hdGNoXG4gICAgVG9vbHMuYXJyYXlfbWluX2VxdWFsX25vdF9udWxsXG4gICAgICAoQXJyYXkubWFwIChmdW4geCAtPiBMaXN0Lmxlbmd0aCB4LCB4KSBhLm5vZGVzX2J5X3R5cGUpXG4gICAgICAoQXJyYXkubWFwIChmdW4geCAtPiBMaXN0Lmxlbmd0aCB4LCB4KSBiLm5vZGVzX2J5X3R5cGUpXG4gIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChbXSwgYWdzKSAtPlxuICAgIGlmIGFncyA9IFtdIHRoZW5cbiAgICAgIFNvbWUgKFJlbmFtaW5nLmVtcHR5ICgpKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBTb21lIChoMSA6OiBfLCBhZ3MpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYm9vbCBhZyAtPlxuICAgICAgICBtYXRjaCBib29sIHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gYm9vbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcmVuYW1lLCBfID0gYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnN0cmljdDp0cnVlIGgxIGEgYWcgYiBpblxuICAgICAgICAgIHJlbmFtZSlcbiAgICAgIE5vbmUgYWdzXG5cbmxldCBhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGEgPVxuICBtYXRjaFxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeCAtPiBUb29scy5taW5fcG9zX2ludF9ub3RfemVybyBhY2MgKExpc3QubGVuZ3RoIHgsIHgpKVxuICAgICAgKDAsIFtdKSBhLm5vZGVzX2J5X3R5cGVcbiAgd2l0aFxuICB8IF8sIFtdIC0+IFsgUmVuYW1pbmcuZW1wdHkgKCkgXVxuICB8IF8sIChoIDo6IF8gYXMgbCkgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgYWcgLT5cbiAgICAgICAgbWF0Y2ggYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnN0cmljdDp0cnVlIGggYSBhZyBhIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IGFjY1xuICAgICAgICB8IFNvbWUgciwgXyAtPiByIDo6IGFjYylcbiAgICAgIFtdIGxcblxubGV0IHBvdGVudGlhbF9wYWlyaW5nIHNpZ3MgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgIChmdW4geCBhY2MgbGEgbGIgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgeCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIGIgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTW9kcy5JbnQyU2V0LmFkZCAoYSwgYikgYWNjKSBhY2MgbGEpXG4gICAgICAgICAgYWNjIGxiKVxuICAgIE1vZHMuSW50MlNldC5lbXB0eVxuXG5sZXQgbWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgYSBiID1cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPVxuICAgIHJlZiAocG90ZW50aWFsX3BhaXJpbmcgc2lncyBhLm5vZGVzX2J5X3R5cGUgYi5ub2Rlc19ieV90eXBlKVxuICBpblxuICBsZXQgcmVjIGZvcl9vbmVfcm9vdCBhY2MgPVxuICAgIG1hdGNoIE1vZHMuSW50MlNldC5jaG9vc2UgIXBvc3NpYmlsaXRpZXMgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5wb3NzaWJpbGl0aWVzIH5zdHJpY3Q6ZmFsc2UgeCBhIHkgYlxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSwgXyAtPiBmb3Jfb25lX3Jvb3QgYWNjXG4gICAgICB8IFNvbWUgciwgXyAtPiBmb3Jfb25lX3Jvb3QgKHIgOjogYWNjKSlcbiAgaW5cbiAgZm9yX29uZV9yb290IFtdXG5cbigqdHVybnMgYSBjYyBpbnRvIGEgcGF0aCg6bGlzdCkgaW4gdGhlIGRvbWFpbiopXG5sZXQgcmF3X3RvX25hdmlnYXRpb24gKGZ1bGwgOiBib29sKSBub2Rlc19ieV90eXBlIG5vZGVzID1cbiAgbGV0IHJlYyBidWlsZF9mb3IgKGZpcnN0LCBvdXQpIGRvbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBMaXN0LnJldiBvdXRcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IGZpcnN0Jywgb3V0JywgdG9kbyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIGkgKChmaXJzdCwgYW5zLCByZSkgYXMgYWNjKSAobCwgcykgLT5cbiAgICAgICAgICAgIGxldCAoKGZpcnN0JywgYW5zJywgXykgYXMgYWNjJykgPVxuICAgICAgICAgICAgICBpZiAoZnVsbCB8fCBmaXJzdCkgJiYgcyA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBzIClcbiAgICAgICAgICAgICAgICAgIDo6IGFucyxcbiAgICAgICAgICAgICAgICAgIHJlIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBVblNwZWMgLT4gYWNjJ1xuICAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgIGlmIGZ1bGwgfHwgZmlyc3QnIHRoZW5cbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRnJlc2ggKGgsIHJhd19maW5kX3R5IG5vZGVzX2J5X3R5cGUgaClcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgaSApLFxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm90aGluZyApXG4gICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgcmUgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgfCBMaW5rIChuLCBsKSAtPlxuICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSBuIGRvbiB8fCAobiA9IGggJiYgaSA+IGwpIHRoZW5cbiAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgIGVsc2UgaWYgbiA9IGggfHwgTGlzdC5tZW0gbiByZSB0aGVuXG4gICAgICAgICAgICAgICAgaWYgZnVsbCB8fCBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgbiwgbCkgKVxuICAgICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgICByZSApXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICggKCAoaWYgZmlyc3QnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkV4aXN0aW5nIGgpLFxuICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGVcbiAgICAgICAgICAgICAgICAgICAgICAoTmF2aWdhdGlvbi5GcmVzaCAobiwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBuKSwgbCkgKVxuICAgICAgICAgICAgICAgICAgOjogYW5zJyxcbiAgICAgICAgICAgICAgICAgIG4gOjogcmUgKSlcbiAgICAgICAgICAoZmlyc3QsIG91dCwgdClcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaCBub2RlcylcbiAgICAgIGluXG4gICAgICBidWlsZF9mb3IgKGZpcnN0Jywgb3V0JykgKGggOjogZG9uKSB0b2RvXG4gIGluXG4gIG1hdGNoIHJhd19maW5kX3Jvb3Qgbm9kZXNfYnlfdHlwZSB3aXRoXG4gIHwgTm9uZSAtPiBbXSAoKmVtcHR5IHBhdGggZm9yIHgwKilcbiAgfCBTb21lICh4LCBfKSAtPlxuICAgICgqKGFnX3NvcnQsYWdfaWQpKilcbiAgICBidWlsZF9mb3IgKHRydWUsIFtdKSAoKndpcCopIFtdICgqYWxyZWFkeV9kb25lKikgWyB4IF1cbigqdG9kbyopXG5cbmxldCByZWMgc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHIgPSBmdW5jdGlvblxuICB8IFtdLCBfIC0+IHJcbiAgfCBfIDo6IF8sIFtdIC0+IGFzc2VydCBmYWxzZVxuICB8ICh4IDo6IHEgYXMgbCksIHkgOjogcScgLT5cbiAgICBpZiB4ID0geSB0aGVuIChcbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSB4IHkgciB3aXRoXG4gICAgICB8IFNvbWUgcicgLT4gc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHInIChxLCBxJylcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGZzdHMsIGxzdCA9IExpc3RfdXRpbC5wb3BfbGFzdCBsIGluXG4gICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgbHN0IHkgciB3aXRoXG4gICAgICB8IFNvbWUgcicgLT4gc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHInIChmc3RzLCBxJylcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICApXG5cbmxldCBtaW5pbWl6ZV9yZW5hbWluZyB+ZGVidWdfbW9kZSBkc3RfbmJ0IHJlZl9uYnQgPVxuICBsZXQgcmUgPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biB0eSByIGlkcyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgciAoaWRzLCByZWZfbmJ0Lih0eSkpKVxuICAgIHJlIGRzdF9uYnRcblxubGV0IG1pbmltaXplIH5kZWJ1Z19tb2RlIGNhbmRfbmJ0IGNhbmRfbm9kZXMgcmVmX25idCA9XG4gIGxldCByZSA9IG1pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGNhbmRfbmJ0IHJlZl9uYnQgaW5cbiAgbGV0IHJlX2ltZyA9IFJlbmFtaW5nLmltYWdlIHJlIGluXG4gIGxldCBub2Rlc19ieV90eXBlID1cbiAgICBBcnJheS5tYXAgKExpc3QuZmlsdGVyIChmdW4gYSAtPiBNb2RzLkludFNldC5tZW0gYSByZV9pbWcpKSByZWZfbmJ0XG4gIGluXG4gIGxldCBub2RlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBpZCBzaXRlcyBhY2MgLT5cbiAgICAgICAgbGV0IHNpdGVzJyA9XG4gICAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgaSAtPiBMaW5rIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZSBuLCBzKSwgaVxuICAgICAgICAgICAgICB8ICgoVW5TcGVjIHwgRnJlZSksIF8pIGFzIHggLT4geClcbiAgICAgICAgICAgIHNpdGVzXG4gICAgICAgIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgcmUgaWQpIHNpdGVzJyBhY2MpXG4gICAgICBjYW5kX25vZGVzIE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIHtcbiAgICBub2Rlc19ieV90eXBlO1xuICAgIG5vZGVzO1xuICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICB9XG5cbigqIHJldHVybnMgYSBsaXN0IG9mIGNjIHdoZXJlIGVhY2ggY2MgaXMgaW5jbHVkZWQgaW4gY2MxKilcbmxldCBpbmZzIH5kZWJ1Z19tb2RlIHNpZ3MgY2MxIGNjMiA9XG4gIGxldCBwb3NzaWJpbGl0aWVzID1cbiAgICByZWYgKHBvdGVudGlhbF9wYWlyaW5nIHNpZ3MgY2MxLm5vZGVzX2J5X3R5cGUgY2MyLm5vZGVzX2J5X3R5cGUpXG4gIGluXG4gIGxldCByZWMgYXV4IHJlbmFtZSBub2RlcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBub2Rlc1xuICAgIHwgKChvLCBwKSBhcyBwYWlyKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0ICgpID0gcG9zc2liaWxpdGllcyA6PSBNb2RzLkludDJTZXQucmVtb3ZlIHBhaXIgIXBvc3NpYmlsaXRpZXMgaW5cbiAgICAgIGxldCBsbmsxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gbyBjYzEubm9kZXMgaW5cbiAgICAgIGxldCAodG9kb3MnLCByZW4nKSwgb3V0bCA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdF9tYXBpXG4gICAgICAgICAgKGZ1biBrICgodG9kbywgcmVuKSBhcyBhY2MpIChseSwgaXkpIC0+XG4gICAgICAgICAgICBsZXQgbHgsIGl4ID0gbG5rMS4oaykgaW5cbiAgICAgICAgICAgIG1hdGNoIGx4LCBseSB3aXRoXG4gICAgICAgICAgICB8IExpbmsgXywgRnJlZVxuICAgICAgICAgICAgfCBGcmVlLCBMaW5rIF9cbiAgICAgICAgICAgIHwgTGluayBfLCBVblNwZWNcbiAgICAgICAgICAgIHwgVW5TcGVjLCBMaW5rIF9cbiAgICAgICAgICAgIHwgVW5TcGVjLCBGcmVlXG4gICAgICAgICAgICB8IEZyZWUsIFVuU3BlY1xuICAgICAgICAgICAgfCBVblNwZWMsIFVuU3BlYyAtPlxuICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgIHwgRnJlZSwgRnJlZSAtPlxuICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAoIEZyZWUsXG4gICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICB8IChMaW5rIChuMSwgczEpIGFzIHgpLCBMaW5rIChuMiwgczIpIC0+XG4gICAgICAgICAgICAgIGlmIHMxID0gczIgdGhlblxuICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBuMSByZW4gdGhlblxuICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICggKGlmIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlbiBuMSA9IG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBuMSBuMiByZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHInIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfdHkgY2MxIG4xID0gZmluZF90eSBjYzIgbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICggKChuMSwgbjIpIDo6IHRvZG8sIHInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICggeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICAgKCBVblNwZWMsXG4gICAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAtMSApICkpXG4gICAgICAgICAgKHRvZG9zLCByZW5hbWUpXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHAgY2MyLm5vZGVzKVxuICAgICAgaW5cbiAgICAgIGlmIEFycmF5LmZvbGRfbGVmdCAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgbCA9IFVuU3BlYyAmJiBpIDwgMCkgdHJ1ZSBvdXRsXG4gICAgICB0aGVuXG4gICAgICAgIGF1eCByZW4nIG5vZGVzIHRvZG9zJ1xuICAgICAgZWxzZVxuICAgICAgICBhdXggcmVuJyAoTW9kcy5JbnRNYXAuYWRkIG8gb3V0bCBub2RlcykgdG9kb3MnXG4gIGluXG5cbiAgbGV0IHJlYyBmb3Jfb25lX3Jvb3QgYWNjID1cbiAgICBtYXRjaCBNb2RzLkludDJTZXQuY2hvb3NlICFwb3NzaWJpbGl0aWVzIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIChyb290MSwgcm9vdDIpIC0+XG4gICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHJvb3QxIHJvb3QyIChSZW5hbWluZy5lbXB0eSAoKSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIHIgLT5cbiAgICAgICAgbGV0IG5vZGVzID0gYXV4IHIgTW9kcy5JbnRNYXAuZW1wdHkgWyByb290MSwgcm9vdDIgXSBpblxuICAgICAgICBsZXQgYWNjJyA9XG4gICAgICAgICAgaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgbm9kZXMgdGhlblxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbm9kZXNfYnlfdHlwZSA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcFxuICAgICAgICAgICAgICAgIChMaXN0LmZpbHRlciAoZnVuIGEgLT4gTW9kcy5JbnRNYXAubWVtIGEgbm9kZXMpKVxuICAgICAgICAgICAgICAgIGNjMS5ub2Rlc19ieV90eXBlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWluaW1pemUgfmRlYnVnX21vZGUgbm9kZXNfYnlfdHlwZSBub2RlcyBjYzEubm9kZXNfYnlfdHlwZSA6OiBhY2NcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGZvcl9vbmVfcm9vdCBhY2MnKVxuICBpblxuICBmb3Jfb25lX3Jvb3QgW11cblxuKCogcmVuYW1pbmcgaXMgYSB0b3RhbCBtb3JwaGlzbSBmcm9tIGNjMScgdG8gY2MyOyBjYzEnIGlzIGluY2x1ZGVkIGluIGNjMSAqKVxubGV0IGludGVyc2VjdGlvbiByZW5hbWluZyBjYzEgY2MyID1cbiAgbGV0IG5vZGVzLCBpbWFnZSA9XG4gICAgUmVuYW1pbmcuZm9sZFxuICAgICAgKGZ1biBpIGogKChhY2NuLCBsKSBhcyBhY2MpIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgY2MxLm5vZGVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgbm9kZXMxIC0+XG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGogY2MyLm5vZGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgfCBTb21lIG5vZGVzMiAtPlxuICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAgICAgICAoZnVuIGsgKGwyLCBpMikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsMSwgaTEgPSBub2RlczEuKGspIGluXG4gICAgICAgICAgICAgICAgICAoIChpZiBsMSA9IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIFVuU3BlY1xuICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBsMiksXG4gICAgICAgICAgICAgICAgICAgIGlmIGkxID0gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpMiApKVxuICAgICAgICAgICAgICAgIG5vZGVzMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBqIG91dCBhY2NuLCBqIDo6IGwpKVxuICAgICAgcmVuYW1pbmcgKE1vZHMuSW50TWFwLmVtcHR5LCBbXSlcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPVxuICAgIEFycmF5Lm1hcCAoTGlzdC5maWx0ZXIgKGZ1biBhIC0+IExpc3QubWVtIGEgaW1hZ2UpKSBjYzIubm9kZXNfYnlfdHlwZVxuICBpblxuICB7XG4gICAgbm9kZXNfYnlfdHlwZTtcbiAgICBub2RlcztcbiAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSBub2RlcztcbiAgfVxuXG50eXBlIGV4dHJlbWl0eSA9IE9wZW4gfCBDbG9zZWRcblxubGV0IGZldGNoX2V4aXRfc2l0ZSBfc2lncyBzaWQgPSBzaWQrMVxubGV0IHJlYyBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKG5pZCwgc2lkKSBjb3VudCA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIG5pZCBub2RlcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcInBlbmRpbmcgYm9uZHMgZW5jb3VudGVyZWQgd2hlbiBjb21wdXRpbmcgdGhlIGxlbmd0aCBvZiBhIGNoYWluIChjb3VudGVycylcIlxuICB8IFNvbWUgYWcgLT5cbiAgICBsZXQgb3RoZXIgPSBmZXRjaF9leGl0X3NpdGUgc2lncyBzaWQgaW5cbiAgICBsZXQgKGVsLF8pID0gYWcuKG90aGVyKSBpblxuICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgIHwgVW5TcGVjIC0+IGNvdW50LCBPcGVuXG4gICAgICB8IEZyZWUgLT4gY291bnQsIENsb3NlZFxuICAgICAgfCBMaW5rIChkbiwgZGkpIC0+XG4gICAgICAgICAgICAgY291bnRlcl92YWx1ZSBzaWdzIG5vZGVzIChkbiwgZGkpIChjb3VudCArIDEpXG5cbmxldCBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKG5pZCwgc2lkKSA9XG4gIGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAobmlkLCBzaWQpIDBcblxubGV0IGNvdW50ZXJfdmFsdWVfY2Mgc2lncyBjYyAobmlkLCBzaWQpID1cbiAgbGV0IG5vZGVzID0gY2Mubm9kZXMgaW5cbiAgbGV0IGNvdW50LCBleHRyZW1pdHkgPSBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKG5pZCwgc2lkKSBpblxuICBsZXQgKCkgPSBtYXRjaCBleHRyZW1pdHkgd2l0aCBPcGVuIC0+IGZhaWx3aXRoIFwicGVuZGluZyBib25kcyBlbmNvdW50ZXJlZCB3aGVuIGNvbXB1dGluZyB0aGUgbGVuZ3RoIG9mIGEgY2hhaW4gKGNvdW50ZXJzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENsb3NlZCAtPiAoKVxuICBpbiBjb3VudFxuXG5sZXQgZG90Y29tbWEgZG90bmV0ID1cbiAgaWYgZG90bmV0IHRoZW5cbiAgICBmdW4gZm10IC0+XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixcIlxuICBlbHNlXG4gICAgUHAuc3BhY2VcblxubGV0IHByaW50X2NjIH5ub0NvdW50ZXJzID8oZG90bmV0ID0gZmFsc2UpID8oZnVsbF9zcGVjaWVzID0gZmFsc2UpID9zaWdzID9jY19pZFxuICAgIH53aXRoX2lkIGYgY2MgPVxuICBsZXQgcHJpbnRfaW50ZiAoKGFnX2ksIF8pIGFzIGFnKSBsaW5rX2lkcyBuZWlnaCA9XG4gICAgc25kXG4gICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgKGZ1biBwIChub3RfZW1wdHksICgoZnJlZSwgbGlua19pZHMpIGFzIG91dCkpIChlbCwgc3QpIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYVwiXG4gICAgICAgICAgICAgICAgIChpZiBub3RfZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICBkb3Rjb21tYSBkb3RuZXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBwKVxuICAgICAgICAgICAgICAgICBzdFxuICAgICAgICAgICAgIGVsc2UgaWYgZWwgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRvdGNvbW1hIGRvdG5ldFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICAgICAgICAgICAgIHBcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgICAgICB8IFVuU3BlYyAtPlxuICAgICAgICAgICAgIGlmIHN0ID49IDAgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBpZiBmdWxsX3NwZWNpZXMgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIiBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICBub3RfZW1wdHksIG91dFxuICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIiBpblxuICAgICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICAgICB8IExpbmsgKGRzdF9hLCBkc3RfcCkgLT5cbiAgICAgICAgICAgICBsZXQgZHN0X3R5ID0gZmluZF90eSBjYyBkc3RfYSBpblxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBkc3RfdHkgJiYgbm90IG5vQ291bnRlcnNcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCAoY291bnRlcixraW5kKSA9IGNvdW50ZXJfdmFsdWUgc2lncyBjYy5ub2RlcyAoZHN0X2EsIGRzdF9wKSBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JXMlZH1cIlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2gga2luZCB3aXRoIENsb3NlZCAtPiBcIj1cIiB8IE9wZW4gLT4gXCI+PVwiKVxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgIGxldCBpLCBvdXQnID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnQyTWFwLmZpbmRfb3B0aW9uIChkc3RfYSwgZHN0X3ApIGxpbmtfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHggLT4geCwgb3V0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGZyZWUsIChzdWNjIGZyZWUsIE1vZHMuSW50Mk1hcC5hZGQgKGFnX2ksIHApIGZyZWUgbGlua19pZHMpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlslaV1cIiBpIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXQnXG4gICAgICAgICAgICAgKSlcbiAgICAgICAgIChmYWxzZSwgbGlua19pZHMpIG5laWdoKVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNjX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2NfaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcIi8qY2MlaSovQCBcIiBjY19pZFxuICBpblxuICBsZXQgXywgXyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biB4IGVsIChub3RfZW1wdHksIGxpbmtfaWRzKSAtPlxuICAgICAgICBsZXQgYWdfeCA9IHgsIGZpbmRfdHkgY2MgeCBpblxuICAgICAgICBpZlxuICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICAgIChub3QgKFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgKHNuZCBhZ194KSkpIHx8IG5vQ291bnRlcnNcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldEBbPGg+JWEoXCJcbiAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgIGlmIGRvdG5ldCB0aGVuXG4gICAgICAgICAgICAgICAgICAgZnVuIGZtdCAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIuXCJcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIFBwLmNvbW1hXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQpXG4gICAgICAgICAgICAgIGFnX3hcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvdXQgPSBwcmludF9pbnRmIGFnX3ggbGlua19pZHMgZWwgaW5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiKUBdXCIgaW5cbiAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbm90X2VtcHR5LCBsaW5rX2lkcylcbiAgICAgIGNjLm5vZGVzXG4gICAgICAoZmFsc2UsICgxLCBNb2RzLkludDJNYXAuZW1wdHkpKVxuICBpblxuICAoKVxuXG5sZXQgcHJpbnRfY2NfYXNfaWQgc2lncyBmIGNjID1cbiAgbGV0IHByaW50X2ludGYgKChhZ19pLCBfKSBhcyBhZykgbGlua19pZHMgbmVpZ2ggPVxuICAgIHNuZFxuICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgIChmdW4gcCAobm90X2VtcHR5LCAoKGZyZWUsIGxpbmtfaWRzKSBhcyBvdXQpKSAoZWwsIHN0KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIGlmIGVsIDw+IFVuU3BlYyB8fCBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfXCJcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlIH5zaWdzIGFnKVxuICAgICAgICAgICAgICAgICBwXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifiVhXCIgKEFnZW50LnByaW50X3Jhd19pbnRlcm5hbCB+c2lncyBhZyBwKSBzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICAgICAgIHwgVW5TcGVjIC0+IG5vdF9lbXB0eSB8fCBzdCA+PSAwLCBvdXRcbiAgICAgICAgICAgfCBGcmVlIC0+IHRydWUsIG91dFxuICAgICAgICAgICB8IExpbmsgKGRzdF9hLCBkc3RfcCkgLT5cbiAgICAgICAgICAgICBsZXQgZHN0X3R5ID0gZmluZF90eSBjYyBkc3RfYSBpblxuICAgICAgICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgZHN0X3R5IHRoZW4gKFxuICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIsZXh0cmVtaXR5ICA9IGNvdW50ZXJfdmFsdWUgc2lncyBjYy5ub2RlcyAoZHN0X2EsIGRzdF9wKSAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIGV4dHJlbWl0eSB3aXRoIE9wZW4gLT4gZmFpbHdpdGggKFwiYm9uZHMgc2hvdWxkIG5vdCBiZSBvcGVuZWRcIikgfCBDbG9zZWQgLT4gKCkgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ+KyVkXCIgY291bnRlciBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgIGxldCBpLCBvdXQnID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnQyTWFwLmZpbmRfb3B0aW9uIChkc3RfYSwgZHN0X3ApIGxpbmtfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHggLT4geCwgb3V0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGZyZWUsIChzdWNjIGZyZWUsIE1vZHMuSW50Mk1hcC5hZGQgKGFnX2ksIHApIGZyZWUgbGlua19pZHMpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn4laVwiIGkgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dCdcbiAgICAgICAgICAgICApKVxuICAgICAgICAgKGZhbHNlLCBsaW5rX2lkcykgbmVpZ2gpXG4gIGluXG4gIGxldCBfLCBfID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHggZWwgKG5vdF9lbXB0eSwgbGlua19pZHMpIC0+XG4gICAgICAgIGxldCBhZ194ID0geCwgZmluZF90eSBjYyB4IGluXG4gICAgICAgIGlmIG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyAoc25kIGFnX3gpKSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QFs8aD4lYV9fXCJcbiAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfX1wiXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAoQWdlbnQucHJpbnQgfnNpZ3MgfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgICAgIGFnX3hcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvdXQgPSBwcmludF9pbnRmIGFnX3ggbGlua19pZHMgZWwgaW5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF1cIiBpblxuICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub3RfZW1wdHksIGxpbmtfaWRzKVxuICAgICAgY2Mubm9kZXNcbiAgICAgIChmYWxzZSwgKDEsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG4gIGluXG4gICgpXG5cbmxldCB0b195b2pzb24gY2MgPVxuICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGNjLm5vZGVzIHdpdGhcbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSBtIC0+XG4gICAgbGV0IHMgPSBzdWNjIG0gaW5cbiAgICBsZXQgc29ydHMgPSBBcnJheS5tYWtlIHMgTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIHR5IC0+IExpc3QuaXRlciAoZnVuIGlkIC0+IHNvcnRzLihpZCkgPC0gU29tZSB0eSkpXG4gICAgICAgIGNjLm5vZGVzX2J5X3R5cGVcbiAgICBpblxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwic29ydHNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICBzb3J0cyBbXSkgKTtcbiAgICAgICAgKCBcIm5vZGVzXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgKGZ1biBhY2MgaSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBjYy5ub2RlcyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAobCwgcykgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGcmVlIC0+IGBCb29sIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGluayAobiwgcykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYEFzc29jIFsgXCJub2RlXCIsIGBJbnQgbjsgXCJzaXRlXCIsIGBJbnQgcyBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVuU3BlYyAtPiBgQm9vbCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcyA8IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYE51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgSW50IHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgYSBbXSkpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIFtdIHMpICk7XG4gICAgICBdXG5cbmxldCBvZl95b2pzb24gc2lnX2RlY2wgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInNvcnRzXCIsIGBMaXN0IHMpOyAoXCJub2Rlc1wiLCBgTGlzdCBuKSBdXG4gIHwgYEFzc29jIFsgKFwibm9kZXNcIiwgYExpc3Qgbik7IChcInNvcnRzXCIsIGBMaXN0IHMpIF0gLT5cbiAgICBsZXQgXywgbm9kZXMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoaSwgYWNjKSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgYE51bGwgLT4gc3VjYyBpLCBhY2NcbiAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICggc3VjYyBpLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgIChUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBCb29sIGI7IGBOdWxsIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKCAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAtMSApXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBgQXNzb2MgWyAoXCJub2RlXCIsIGBJbnQgbik7IChcInNpdGVcIiwgYEludCBzKSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBBc3NvYyBbIChcInNpdGVcIiwgYEludCBzKTsgKFwibm9kZVwiLCBgSW50IG4pIF0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGBOdWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTGluayAobiwgcyksIC0xXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYEJvb2wgYjsgYEludCBzIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKCAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBzIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGBBc3NvYyBbIChcIm5vZGVcIiwgYEludCBuKTsgKFwic2l0ZVwiLCBgSW50IHMpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFzc29jIFsgKFwic2l0ZVwiLCBgSW50IHMpOyAoXCJub2RlXCIsIGBJbnQgbikgXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYEludCBzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIExpbmsgKG4sIHMpLCBzdFxuICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbm9kZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICAgICAgICBhY2MgKVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG5vZGUgbGlua3NcIiwgeCkpKVxuICAgICAgICAoMCwgTW9kcy5JbnRNYXAuZW1wdHkpIG5cbiAgICBpblxuICAgIGxldCBub2Rlc19ieV90eXBlID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lnX2RlY2wpIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTnVsbCAtPiAoKVxuICAgICAgICAgIHwgYEludCB0eSAtPiBub2Rlc19ieV90eXBlLih0eSkgPC0gaSA6OiBub2Rlc19ieV90eXBlLih0eSlcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3Jvbmcgbm9kZSB0eXBlXCIsIHgpKSlcbiAgICAgICAgc1xuICAgIGluXG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gICAgfVxuICB8IGBOdWxsIC0+IGVtcHR5X2NjIHNpZ19kZWNsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwYXR0ZXJuXCIsIHgpKVxuXG5sZXQgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSByZXNlcnZlZF9pZHMgZnJlZV9pZCBpbmoxX3RvXzIgY2MxIGNjMiA9XG4gIGxldCBpbWcgPSBSZW5hbWluZy5pbWFnZSBpbmoxX3RvXzIgaW5cbiAgbGV0IGF2YWlsYWJsZV9pZHMgPVxuICAgIEFycmF5Lm1hcFxuICAgICAgKExpc3QuZmlsdGVyIChmdW4gaWQgLT4gbm90IChNb2RzLkludFNldC5tZW0gaWQgaW1nKSkpXG4gICAgICByZXNlcnZlZF9pZHNcbiAgaW5cbiAgbGV0IHVzZWRfaWRzID1cbiAgICBBcnJheS5tYXBcbiAgICAgIChMaXN0X3V0aWwubWFwX29wdGlvbiAoZnVuIGlkIC0+XG4gICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBpZCBpbmoxX3RvXzIgdGhlblxuICAgICAgICAgICAgIFNvbWUgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajFfdG9fMiBpZClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE5vbmUpKVxuICAgICAgY2MxLm5vZGVzX2J5X3R5cGVcbiAgaW5cbiAgbGV0IGF2YWlsYWJsZV9pbl9jYzEgPVxuICAgIEFycmF5Lm1hcGlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKExpc3QubWVtIHggY2MxLm5vZGVzX2J5X3R5cGUuKGkpKSkgbClcbiAgICAgIHJlc2VydmVkX2lkc1xuICBpblxuICBsZXQgZnJlZV9pZF9mb3JfY2MxID0gcmVmIGZyZWVfaWQgaW5cblxuICBsZXQgZ2V0X2NjMiBqICgoKGluajEsIGZyZWVfaWQpLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKSBhcyBwYWNrKSA9XG4gICAgaWYgUmVuYW1pbmcubWVtIGogaW5qMiB0aGVuXG4gICAgICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoyIGosIHBhY2tcbiAgICBlbHNlIChcbiAgICAgIGxldCB0eSA9IGZpbmRfdHkgY2MyIGogaW5cbiAgICAgIGxldCBpbWcsIGZyZWVfaWQnID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2lkcy4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmcmVlX2lkLCBzdWNjIGZyZWVfaWRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaWRzLih0eSkgPC0gdCBpblxuICAgICAgICAgIGgsIGZyZWVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB1c2VkX2lkcy4odHkpIDwtIGltZyA6OiB1c2VkX2lkcy4odHkpIGluXG4gICAgICBsZXQgbyA9XG4gICAgICAgIG1hdGNoIGF2YWlsYWJsZV9pbl9jYzEuKHR5KSB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgeCA9ICFmcmVlX2lkX2Zvcl9jYzEgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpbmNyIGZyZWVfaWRfZm9yX2NjMSBpblxuICAgICAgICAgIHhcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaW5fY2MxLih0eSkgPC0gdCBpblxuICAgICAgICAgIGhcbiAgICAgIGluXG4gICAgICAoIGltZyxcbiAgICAgICAgKCAoIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgbyBpbWcgaW5qMSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAgIGZyZWVfaWQnICksXG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBqIGltZyBpbmoyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgKHRvZG9zMSwgKGosIGltZykgOjogdG9kb3MyKSApIClcbiAgICApXG4gIGluXG5cbiAgbGV0IGdldF9jYzEgaSAoKChpbmoxLCBmcmVlX2lkKSwgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSkgYXMgcGFjaykgPVxuICAgIGlmIFJlbmFtaW5nLm1lbSBpIGluajEgdGhlblxuICAgICAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMSBpLCBwYWNrXG4gICAgZWxzZSAoXG4gICAgICBsZXQgdHkgPSBmaW5kX3R5IGNjMSBpIGluXG4gICAgICBsZXQgaW1nLCBmcmVlX2lkJyA9XG4gICAgICAgIG1hdGNoIGF2YWlsYWJsZV9pZHMuKHR5KSB3aXRoXG4gICAgICAgIHwgW10gLT4gZnJlZV9pZCwgc3VjYyBmcmVlX2lkXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgbGV0ICgpID0gYXZhaWxhYmxlX2lkcy4odHkpIDwtIHQgaW5cbiAgICAgICAgICBoLCBmcmVlX2lkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gdXNlZF9pZHMuKHR5KSA8LSBpbWcgOjogdXNlZF9pZHMuKHR5KSBpblxuICAgICAgKCBpbWcsXG4gICAgICAgICggKCAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGkgaW1nIGluajEgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgICBmcmVlX2lkJyApLFxuICAgICAgICAgIGluajIsXG4gICAgICAgICAgKChpLCBpbWcpIDo6IHRvZG9zMSwgdG9kb3MyKSApIClcbiAgICApXG4gIGluXG4gIGxldCBwYWNrJywgbm9kZXMgPVxuICAgIGxldCByZWMgZ2x1ZSBwYWNrIGluajIgbm9kZXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSwgW10gLT4gcGFjaywgbm9kZXNcbiAgICAgIHwgW10sIChpLCBqKSA6OiB0b2RvczIgLT5cbiAgICAgICAgbGV0IG5vZGVzaSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIGkgY2MyLm5vZGVzIGluXG4gICAgICAgIGxldCBub2Rlc28gPSBBcnJheS5jb3B5IG5vZGVzaSBpblxuICAgICAgICBsZXQgcGFjaycsIGluajInLCB0b2RvcycgPVxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgIChmdW4gayBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCAoVW5TcGVjIHwgRnJlZSksIF8gLT4gYWNjXG4gICAgICAgICAgICAgIHwgTGluayAobiwgcyksIHN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMiBuIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdCBpblxuICAgICAgICAgICAgICAgIGFjYycpXG4gICAgICAgICAgICAocGFjaywgaW5qMiwgKFtdLCB0b2RvczIpKVxuICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgIGluXG4gICAgICAgIGdsdWUgcGFjaycgaW5qMicgKE1vZHMuSW50TWFwLmFkZCBqIG5vZGVzbyBub2RlcykgdG9kb3MnXG4gICAgICB8IChpLCBqKSA6OiB0b2RvczEsIHRvZG9zMiAtPlxuICAgICAgICBsZXQgbm9kZXNpID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaSBjYzEubm9kZXMgaW5cbiAgICAgICAgbGV0IG5vZGVzbyA9IEFycmF5LmNvcHkgbm9kZXNpIGluXG4gICAgICAgIGxldCBwYWNrJywgaW5qMicsIHRvZG9zJyA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBjYzIubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIGsgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCAoVW5TcGVjIHwgRnJlZSksIF8gLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3QgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuJywgYWNjJyA9IGdldF9jYzEgbiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdCBpblxuICAgICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICAgICAgKHBhY2ssIGluajIsICh0b2RvczEsIHRvZG9zMikpXG4gICAgICAgICAgICAgIG5vZGVzaVxuICAgICAgICAgIHwgU29tZSBub2Rlc2ogLT5cbiAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgKGZ1biBrIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRnJlZSwgXyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHN0aiA9IG5vZGVzai4oaykgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIHN0aiA8PiAtMSB0aGVuIG5vZGVzby4oaykgPC0gRnJlZSwgc3RqIGluXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdGkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBfLCBzdGogPSBub2Rlc2ouKGspIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc3RvID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHN0aVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBuJywgYWNjJyA9IGdldF9jYzEgbiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdG8gaW5cbiAgICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgICB8IFVuU3BlYywgc3RpIC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggbm9kZXNqLihrKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFVuU3BlYywgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIHN0aiA8PiAtMSB0aGVuIG5vZGVzby4oaykgPC0gVW5TcGVjLCBzdGogaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICB8IEZyZWUsIHN0aiAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIG5vZGVzby4oaykgPC1cbiAgICAgICAgICAgICAgICAgICAgICAgICggRnJlZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aSApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdG8gPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIHN0aiA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMiBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBub2Rlc28uKGspIDwtIExpbmsgKG4nLCBzKSwgc3RvIGluXG4gICAgICAgICAgICAgICAgICAgIGFjYycpKVxuICAgICAgICAgICAgICAocGFjaywgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSlcbiAgICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgIGluXG4gICAgICAgIGdsdWUgcGFjaycgaW5qMicgKE1vZHMuSW50TWFwLmFkZCBqIG5vZGVzbyBub2RlcykgdG9kb3MnXG4gICAgaW5cbiAgICBnbHVlIChpbmoxX3RvXzIsIGZyZWVfaWQpXG4gICAgICAoUmVuYW1pbmcuaWRlbnRpdHkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIGltZykpXG4gICAgICBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgKFJlbmFtaW5nLnRvX2xpc3QgaW5qMV90b18yLCBbXSlcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYXAgKExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlKSB1c2VkX2lkcyBpblxuICBsZXQgKCkgPVxuICAgIEFycmF5Lml0ZXJpXG4gICAgICAoZnVuIGkgeCAtPlxuICAgICAgICByZXNlcnZlZF9pZHMuKGkpIDwtXG4gICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgTW9kcy5pbnRfY29tcGFyZSBub2Rlc19ieV90eXBlLihpKSB4KVxuICAgICAgYXZhaWxhYmxlX2lkc1xuICBpblxuICAoIHBhY2snLFxuICAgIHtcbiAgICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgICBub2RlcztcbiAgICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICAgIH0gKVxuXG5sZXQgYnVpbGRfbmF2aWdhdGlvbl9iZXR3ZWVuIH5kZWJ1Z19tb2RlIGlual9kX3RvX28gY2NfbyBjY19kID1cbiAgbGV0IHJlYyBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCBuZXh0X3JvdW5kIHJlY29nbiBpbnRlcm4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIG5leHRfcm91bmQgPSBbXSB0aGVuXG4gICAgICAgIExpc3QucmV2X2FwcGVuZCByZWNvZ24gaW50ZXJuXG4gICAgICBlbHNlXG4gICAgICAgIGhhbmRsZV9saW5rcyBkaXNjb3ZlcmVkIFtdIHJlY29nbiBpbnRlcm4gbmV4dF9yb3VuZFxuICAgIHwgKCgoaSwgaiwgcyksIChuJywgcycpKSBhcyBoKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0IG4gPSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmpfZF90b19vIG4nIGluXG4gICAgICAobWF0Y2ggTW9kcy5JbnRTZXQubWVtIGogZGlzY292ZXJlZCwgTW9kcy5JbnRTZXQubWVtIG4nIGRpc2NvdmVyZWQgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgKGggOjogbmV4dF9yb3VuZCkgcmVjb2duIGludGVybiB0b2Rvc1xuICAgICAgfCB0cnVlLCB0cnVlIC0+XG4gICAgICAgIGxldCBpbnRlcm4nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLFxuICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgbiwgcycpIClcbiAgICAgICAgICA6OiBpbnRlcm5cbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgbmV4dF9yb3VuZCByZWNvZ24gaW50ZXJuJyB0b2Rvc1xuICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICBsZXQgcmVjb2duJyA9XG4gICAgICAgICAgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBpLCBzKSxcbiAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChuLCBmaW5kX3R5IGNjX2QgbicpLCBzJykgKVxuICAgICAgICAgIDo6IHJlY29nblxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfbGlua3NcbiAgICAgICAgICAoTW9kcy5JbnRTZXQuYWRkIG4nIGRpc2NvdmVyZWQpXG4gICAgICAgICAgbmV4dF9yb3VuZCByZWNvZ24nIGludGVybiB0b2Rvc1xuICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICBsZXQgcmVjb2duJyA9XG4gICAgICAgICAgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBzJyksXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCAoaSwgZmluZF90eSBjY19kIGopLCBzKSApXG4gICAgICAgICAgOjogcmVjb2duXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9saW5rc1xuICAgICAgICAgIChNb2RzLkludFNldC5hZGQgaiBkaXNjb3ZlcmVkKVxuICAgICAgICAgIG5leHRfcm91bmQgcmVjb2duJyBpbnRlcm4gdG9kb3MpXG4gIGluXG4gIGxldCBkaXNjb3YsIGFsbF9saW5rcywgaW50ZXJuID1cbiAgICBSZW5hbWluZy5mb2xkXG4gICAgICAoZnVuIGogaSAoZGlzYywgbGlua3MsIGludGVyKSAtPlxuICAgICAgICBsZXQgbm9kZXNkID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaiBjY19kLm5vZGVzIGluXG4gICAgICAgIGxldCBkaXNjJywgbm9kZXNvID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGNjX28ubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkaXNjLCBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggbm9kZXNkKSAoVW5TcGVjLCAtMSlcbiAgICAgICAgICB8IFNvbWUgbm9kZXNvIC0+IE1vZHMuSW50U2V0LmFkZCBqIGRpc2MsIG5vZGVzb1xuICAgICAgICBpblxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgIChmdW4gcyAoKGRpcywgbGksIGludCkgYXMgYWNjKSAob2wsIG9zKSAoZGwsIGRzKSAtPlxuICAgICAgICAgICAgbGV0ICgoXywgXywgaW50JykgYXMgYWNjJykgPVxuICAgICAgICAgICAgICBpZiBvcyA9IC0xICYmIGRzIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAoIGRpcyxcbiAgICAgICAgICAgICAgICAgIGxpLFxuICAgICAgICAgICAgICAgICAgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgZHMpIDo6IGludFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIG9sIDw+IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBkbCB3aXRoXG4gICAgICAgICAgICAgIHwgVW5TcGVjIC0+IGFjYydcbiAgICAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgICAgKCBkaXMsXG4gICAgICAgICAgICAgICAgICBsaSxcbiAgICAgICAgICAgICAgICAgICgoTmF2aWdhdGlvbi5FeGlzdGluZyBpLCBzKSwgTmF2aWdhdGlvbi5Ub05vdGhpbmcpIDo6IGludCcgKVxuICAgICAgICAgICAgICB8IExpbmsgKG4sIHMnKSAtPlxuICAgICAgICAgICAgICAgIGlmIG4gPiAoKmxhKikgaiB8fCAobiA9IGogJiYgcyA+IHMnKSB0aGVuXG4gICAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgZGlzLCAoKGksIGosIHMpLCAobiwgcycpKSA6OiBsaSwgaW50J1xuICAgICAgICAgICAgKSlcbiAgICAgICAgICAoZGlzYycsIGxpbmtzLCBpbnRlcikgbm9kZXNvIG5vZGVzZClcbiAgICAgIGlual9kX3RvX29cbiAgICAgIChNb2RzLkludFNldC5lbXB0eSwgW10sIFtdKVxuICBpblxuICBoYW5kbGVfbGlua3MgZGlzY292IFtdIFtdIGludGVybiBhbGxfbGlua3NcblxubW9kdWxlIEVudiA6IHNpZ1xuICB0eXBlIHRyYW5zaXRpb24gPSB7XG4gICAgbmV4dDogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG4gICAgZHN0OiBpZDsgKCogaWQgb2YgY2MgYW5kIGFsc28gYWRkcmVzcyBpbiB0aGUgRW52LmRvbWFpbiBtYXAqKVxuICAgIGluajogUmVuYW1pbmcudDsgKCogRnJvbSBkc3QgVG8gKFwidGhpc1wiIGNjICsgZXh0cmEgZWRnZSkgKilcbiAgfVxuXG4gIHR5cGUgcG9pbnQgPSB7XG4gICAgY29udGVudDogY2M7XG4gICAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xuICAgIGRlcHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIG11dGFibGUgc29uczogdHJhbnNpdGlvbiBsaXN0O1xuICB9XG5cbiAgdmFsIGNvbnRlbnQgOiBwb2ludCAtPiBjY1xuICB2YWwgcm9vdHMgOiBwb2ludCAtPiAoaW50IGxpc3QgKCppZHMqKSAqIGludCAoKnR5KikpIG9wdGlvblxuICB2YWwgZGVwcyA6IHBvaW50IC0+IE9wZXJhdG9yLkRlcFNldC50XG4gIHZhbCBzb25zIDogcG9pbnQgLT4gdHJhbnNpdGlvbiBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBtYXhfb2JzOiBpbnQ7XG4gICAgZG9tYWluOiBwb2ludCBhcnJheTtcbiAgICBlbGVtZW50YXJpZXM6IChOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uc3RlcCAqIGlkKSBsaXN0IGFycmF5IGFycmF5O1xuICAgIHNpbmdsZV9hZ2VudF9wb2ludHM6IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb24gYXJyYXk7XG4gIH1cblxuICB2YWwgZ2V0IDogdCAtPiBpZCAtPiBwb2ludFxuICB2YWwgZ2V0X3NpbmdsZV9hZ2VudCA6IGludCAtPiB0IC0+IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb25cbiAgdmFsIHRvX25hdmlnYXRpb24gOiB0IC0+IGlkIC0+IE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi50XG5cbiAgdmFsIGdldF9lbGVtZW50YXJ5IDpcbiAgICBkZWJ1Z19tb2RlOmJvb2wgLT5cbiAgICB0IC0+XG4gICAgQWdlbnQudCAtPlxuICAgIGludCAtPlxuICAgIE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5hcnJvdyAtPlxuICAgIChpZCAqIHBvaW50ICogUmVuYW1pbmcudCkgb3B0aW9uXG5cbiAgdmFsIHNpZ25hdHVyZXMgOiB0IC0+IFNpZ25hdHVyZS5zXG4gIHZhbCBuZXdfb2JzX21hcCA6IHQgLT4gKGlkIC0+ICdhKSAtPiAnYSBPYnNNYXAudFxuICB2YWwgcHJpbnQgOiBub0NvdW50ZXJzOmJvb2wgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX3lvanNvbiA6IHQgLT4gWW9qc29uLkJhc2ljLnRcbiAgdmFsIG9mX3lvanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRyYW5zaXRpb24gPSB7XG4gICAgbmV4dDogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG4gICAgZHN0OiBpZDsgKCogaWQgb2YgY2MgYW5kIGFsc28gYWRkcmVzcyBpbiB0aGUgRW52LmRvbWFpbiBtYXAqKVxuICAgIGluajogUmVuYW1pbmcudDsgKCogRnJvbSBkc3QgVG8gKFwidGhpc1wiIGNjICsgZXh0cmEgZWRnZSkgKilcbiAgfVxuXG4gIHR5cGUgcG9pbnQgPSB7XG4gICAgY29udGVudDogY2M7XG4gICAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xuICAgIGRlcHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIG11dGFibGUgc29uczogdHJhbnNpdGlvbiBsaXN0O1xuICB9XG5cbiAgbGV0IGNvbnRlbnQgcCA9IHAuY29udGVudFxuICBsZXQgcm9vdHMgcCA9IHAucm9vdHNcbiAgbGV0IGRlcHMgcCA9IHAuZGVwc1xuICBsZXQgc29ucyBwID0gcC5zb25zXG5cbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBtYXhfb2JzOiBpbnQ7XG4gICAgZG9tYWluOiBwb2ludCBhcnJheTtcbiAgICBlbGVtZW50YXJpZXM6IChOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uc3RlcCAqIGlkKSBsaXN0IGFycmF5IGFycmF5O1xuICAgIHNpbmdsZV9hZ2VudF9wb2ludHM6IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb24gYXJyYXk7XG4gIH1cblxuICBsZXQgc2lnbmF0dXJlcyBlbnYgPSBlbnYuc2lnX2RlY2xcblxuICBsZXQgcHJpbnQgfm5vQ291bnRlcnMgZiBlbnYgPVxuICAgIGxldCBwcF9wb2ludCBwX2lkIGYgcCA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+QFs8aD4lYUBdQCAldC0+IEBbKCVhKUBdQF1cIlxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBwcmludF9jYyB+bm9Db3VudGVycyB+c2lnczplbnYuc2lnX2RlY2wgfmNjX2lkOnBfaWQgfndpdGhfaWQ6dHJ1ZSB4KVxuICAgICAgICBwLmNvbnRlbnRcbiAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgaWYgcC5yb290cyA8PiBOb25lIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAW1slYV1AXUAgXCJcbiAgICAgICAgICAgICAgKFBwLnNldCBPcGVyYXRvci5EZXBTZXQuZWxlbWVudHMgUHAuc3BhY2UgT3BlcmF0b3IucHJpbnRfcmV2X2RlcClcbiAgICAgICAgICAgICAgcC5kZXBzKVxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgcyAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhKCVhKUAgJWlAXVwiXG4gICAgICAgICAgICAgICAoTmF2aWdhdGlvbi5wcmludCBlbnYuc2lnX2RlY2wgKGZpbmRfdHkgcC5jb250ZW50KSlcbiAgICAgICAgICAgICAgIHMubmV4dCBSZW5hbWluZy5wcmludCBzLmluaiBzLmRzdCkpXG4gICAgICAgIHAuc29uc1xuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiIChQcC5hcnJheSBQcC5zcGFjZSBwcF9wb2ludCkgZW52LmRvbWFpblxuXG4gIGxldCBnZXRfc2luZ2xlX2FnZW50IHR5IGVudiA9IGVudi5zaW5nbGVfYWdlbnRfcG9pbnRzLih0eSlcbiAgbGV0IGdldCBlbnYgY2NfaWQgPSBlbnYuZG9tYWluLihjY19pZClcblxuICBsZXQgdG9fbmF2aWdhdGlvbiBlbnYgaWQgPVxuICAgIGxldCBjYyA9IChnZXQgZW52IGlkKS5jb250ZW50IGluXG4gICAgcmF3X3RvX25hdmlnYXRpb24gdHJ1ZSBjYy5ub2Rlc19ieV90eXBlIGNjLm5vZGVzXG5cbiAgbGV0IHRyYW5zaXRpb25fdG9feW9qc29uIHQgPVxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImRzdFwiLCBgSW50IHQuZHN0O1xuICAgICAgICBcImlualwiLCBSZW5hbWluZy50b195b2pzb24gdC5pbmo7XG4gICAgICAgIFwibmF2XCIsIE5hdmlnYXRpb24udG9feW9qc29uIHQubmV4dDtcbiAgICAgIF1cblxuICBsZXQgdHJhbnNpdGlvbl9vZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiZHN0XCIsIGBJbnQgZHN0KTsgKFwiaW5qXCIsIHIpOyAoXCJuYXZcIiwgbikgXVxuICAgIHwgYEFzc29jIFsgKFwiZHN0XCIsIGBJbnQgZHN0KTsgKFwibmF2XCIsIG4pOyAoXCJpbmpcIiwgcikgXVxuICAgIHwgYEFzc29jIFsgKFwiaW5qXCIsIHIpOyAoXCJuYXZcIiwgbik7IChcImRzdFwiLCBgSW50IGRzdCkgXVxuICAgIHwgYEFzc29jIFsgKFwibmF2XCIsIG4pOyAoXCJpbmpcIiwgcik7IChcImRzdFwiLCBgSW50IGRzdCkgXVxuICAgIHwgYEFzc29jIFsgKFwiaW5qXCIsIHIpOyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJuYXZcIiwgbikgXVxuICAgIHwgYEFzc29jIFsgKFwibmF2XCIsIG4pOyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJpbmpcIiwgcikgXSAtPlxuICAgICAgeyBkc3Q7IGluaiA9IFJlbmFtaW5nLm9mX3lvanNvbiByOyBuZXh0ID0gTmF2aWdhdGlvbi5vZl95b2pzb24gbiB9XG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB0cmFuc2l0aW9uXCIsIHgpKVxuXG4gIGxldCBwb2ludF90b195b2pzb24gcCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiY29udGVudFwiLCB0b195b2pzb24gcC5jb250ZW50O1xuICAgICAgICAoIFwicm9vdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgIChmdW4gKGlkcywgdHkpIC0+XG4gICAgICAgICAgICAgIGBMaXN0IFsgYExpc3QgKExpc3QubWFwIEpzb25VdGlsLm9mX2ludCBpZHMpOyBgSW50IHR5IF0pXG4gICAgICAgICAgICBwLnJvb3RzICk7XG4gICAgICAgIFwiZGVwc1wiLCBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uIHAuZGVwcztcbiAgICAgICAgXCJzb25zXCIsIGBMaXN0IChMaXN0Lm1hcCB0cmFuc2l0aW9uX3RvX3lvanNvbiBwLnNvbnMpO1xuICAgICAgXVxuXG4gIGxldCBwb2ludF9vZl95b2pzb24gc2lnX2RlY2wgPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGNvbnRlbnQgPSBvZl95b2pzb24gc2lnX2RlY2wgKExpc3QuYXNzb2MgXCJjb250ZW50XCIgbCk7XG4gICAgICAgICAgIHJvb3RzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInJvb3RzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTnVsbCAtPiBOb25lXG4gICAgICAgICAgICAgfCBgTGlzdCBbIGBMaXN0IGlkczsgYEludCB0eSBdIC0+XG4gICAgICAgICAgICAgICBTb21lIChMaXN0Lm1hcCBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgaWRzLCB0eSlcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgZGVwcyA9IE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb24gKExpc3QuYXNzb2MgXCJkZXBzXCIgbCk7XG4gICAgICAgICAgIHNvbnMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwic29uc1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCB0cmFuc2l0aW9uX29mX3lvanNvbiBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkb21haW4gcG9pbnRcIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZG9tYWluIHBvaW50XCIsIHgpKVxuXG4gIGxldCB0b195b2pzb24gZW52ID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJzaWduYXR1cmVzXCIsIFNpZ25hdHVyZS50b19qc29uIGVudi5zaWdfZGVjbDtcbiAgICAgICAgKCBcInNpbmdsZV9hZ2VudHNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgfCBTb21lIChpZCwgX2RlcHMpIC0+IGBJbnQgaWQpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5zaW5nbGVfYWdlbnRfcG9pbnRzIFtdKSApO1xuICAgICAgICAoIFwiZWxlbWVudGFyaWVzXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3QsIGQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYExpc3QgWyBOYXZpZ2F0aW9uLnN0ZXBfdG9feW9qc29uIHN0OyBgSW50IGQgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgICB4IFtdKVxuICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICBlbnYuZWxlbWVudGFyaWVzIFtdKSApO1xuICAgICAgICAoIFwiZGFnXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+IHBvaW50X3RvX3lvanNvbiB4IDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5kb21haW4gW10pICk7XG4gICAgICAgICggXCJpZF9ieV90eXBlXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+IGBMaXN0IChMaXN0Lm1hcCAoZnVuIGkgLT4gYEludCBpKSB4KSA6OiBhY2MpXG4gICAgICAgICAgICAgICBlbnYuaWRfYnlfdHlwZSBbXSkgKTtcbiAgICAgICAgXCJtYXhfb2JzXCIsIGBJbnQgZW52Lm1heF9vYnM7XG4gICAgICBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgIGxldCBzaWdfZGVjbCA9IFNpZ25hdHVyZS5vZl9qc29uIChMaXN0LmFzc29jIFwic2lnbmF0dXJlc1wiIGwpIGluXG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIHNpZ19kZWNsO1xuICAgICAgICAgICBzaW5nbGVfYWdlbnRfcG9pbnRzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInNpbmdsZV9hZ2VudHNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgfCBgSW50IGkgLT4gaSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBzaW5nbGVfYWdlbnRcIiwgeCkpKSlcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBlbGVtZW50YXJpZXMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZWxlbWVudGFyaWVzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIHM7IGBJbnQgZCBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLnN0ZXBfb2ZfeW9qc29uIHMsIGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgZG9tYWluID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImRhZ1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAocG9pbnRfb2ZfeW9qc29uIHNpZ19kZWNsKSBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGlkX2J5X3R5cGUgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiaWRfYnlfdHlwZVwiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgbWF4X29icyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJtYXhfb2JzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgfVxuICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgdXBkYXRlIGRvbWFpblwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB1cGRhdGUgZG9tYWluXCIsIHgpKVxuXG4gIGxldCBuZXdfb2JzX21hcCBlbnYgZiA9IE1vZHMuRHluQXJyYXkuaW5pdCBlbnYubWF4X29icyBmXG5cbiAgbGV0IGdldF9lbGVtZW50YXJ5IH5kZWJ1Z19tb2RlIGRvbWFpbiAoKF8sIHR5KSBhcyBub2RlKSBzIGFycm93ID1cbiAgICBsZXQgc2EgPSBkb21haW4uZWxlbWVudGFyaWVzLih0eSkgaW5cbiAgICBsZXQgcmVjIGZpbmRfZ29vZF9lZGdlID0gZnVuY3Rpb25cbiAgICAgICgqb25lIHNob3VsZCB1c2UgYSBoYXNoIGhlcmUqKVxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IChzdCwgY2NfaWQpIDo6IHRhaWwgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE5hdmlnYXRpb24uY29tcGF0aWJsZV9mcmVzaF9wb2ludCB+ZGVidWdfbW9kZSBzdCBub2RlIHMgYXJyb3dcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmRfZ29vZF9lZGdlIHRhaWxcbiAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICBsZXQgZHN0ID0gZ2V0IGRvbWFpbiBjY19pZCBpblxuICAgICAgICAgIFNvbWUgKGNjX2lkLCBkc3QsIGluaicpKVxuICAgIGluXG4gICAgZmluZF9nb29kX2VkZ2Ugc2EuKHMpXG5lbmRcblxubGV0IHByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQgZiBpZCA9XG4gIG1hdGNoIGRvbWFpbiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgaWRcbiAgfCBTb21lIGVudiAtPlxuICAgIGxldCBjY19pZCA9XG4gICAgICBpZiB3aXRoX2lkIHRoZW5cbiAgICAgICAgU29tZSBpZFxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBwcmludF9jYyB+bm9Db3VudGVycyB+c2lnczooRW52LnNpZ25hdHVyZXMgZW52KSA/Y2NfaWQgfndpdGhfaWQgZlxuICAgICAgZW52LkVudi5kb21haW4uKGlkKS5FbnYuY29udGVudFxuXG5sZXQgZW1iZWRkaW5nc190b19mdWxseV9zcGVjaWZpZWQgfmRlYnVnX21vZGUgZG9tYWluIGFfaWQgYiA9XG4gIGxldCBhID0gZG9tYWluLkVudi5kb21haW4uKGFfaWQpLkVudi5jb250ZW50IGluXG4gIG1hdGNoIGZpbmRfcm9vdCBhIHdpdGhcbiAgfCBOb25lIC0+IFsgUmVuYW1pbmcuZW1wdHkgKCkgXVxuICB8IFNvbWUgKGgsIHR5KSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBhZyAtPlxuICAgICAgICBtYXRjaCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OmZhbHNlIGggYSBhZyBiIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IGFjY1xuICAgICAgICB8IFNvbWUgciwgXyAtPiByIDo6IGFjYylcbiAgICAgIFtdIGIubm9kZXNfYnlfdHlwZS4odHkpXG5cbnR5cGUgcHJlcG9pbnQgPSB7XG4gIHBfaWQ6IGlkO1xuICBlbGVtZW50OiBjYztcbiAgZGVwZW5kaW5nOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xufVxuXG50eXBlIHdvcmsgPSB7XG4gIHNpZ3M6IFNpZ25hdHVyZS5zO1xuICBjY19lbnY6IHByZXBvaW50IGxpc3QgTW9kcy5JbnRNYXAudCBNb2RzLkludE1hcC50O1xuICByZXNlcnZlZF9pZDogaW50IGxpc3QgYXJyYXk7XG4gIHVzZWRfaWQ6IGludCBsaXN0IGFycmF5O1xuICBmcmVlX2lkOiBpbnQ7XG4gIGNjX25vZGVzOiAobGluayAqIGludCkgYXJyYXkgTW9kcy5JbnRNYXAudDtcbiAgZGFuZ2xpbmc6IGludDsgKCogbm9kZV9pZCAqKVxufVxuXG5tb2R1bGUgUHJlRW52ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBzaWdfZGVjbDogU2lnbmF0dXJlLnM7XG4gICAgaWRfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gICAgbmJfaWQ6IGludDtcbiAgICBkb21haW46IHByZXBvaW50IGxpc3QgTW9kcy5JbnRNYXAudCBNb2RzLkludE1hcC50O1xuICAgIG11dGFibGUgdXNlZF9ieV9hX2JlZ2luX25ldzogYm9vbDtcbiAgfVxuXG4gIHR5cGUgc3RhdCA9IHsgc3RhdF9ub2RlczogaW50OyBzdGF0X25hdl9zdGVwczogaW50IH1cblxuICBsZXQgZnJlc2ggc2lncyBpZF9ieV90eXBlIG5iX2lkIGRvbWFpbiA9XG4gICAgeyBzaWdfZGVjbCA9IHNpZ3M7IGlkX2J5X3R5cGU7IG5iX2lkOyBkb21haW47IHVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZSB9XG5cbiAgbGV0IGVtcHR5IHNpZ3MgPVxuICAgIGxldCBuYnQnID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lncykgW10gaW5cbiAgICBmcmVzaCBzaWdzIG5idCcgMSBNb2RzLkludE1hcC5lbXB0eVxuXG4gIGxldCBjaGVja192aXRhbGl0eSBlbnYgPSBhc3NlcnQgKGVudi51c2VkX2J5X2FfYmVnaW5fbmV3ID0gZmFsc2UpXG5cbiAgbGV0IHRvX3dvcmsgZW52ID1cbiAgICBsZXQgKCkgPSBjaGVja192aXRhbGl0eSBlbnYgaW5cbiAgICBsZXQgKCkgPSBlbnYudXNlZF9ieV9hX2JlZ2luX25ldyA8LSB0cnVlIGluXG4gICAge1xuICAgICAgc2lncyA9IGVudi5zaWdfZGVjbDtcbiAgICAgIGNjX2VudiA9IGVudi5kb21haW47XG4gICAgICByZXNlcnZlZF9pZCA9IGVudi5pZF9ieV90eXBlO1xuICAgICAgdXNlZF9pZCA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBlbnYuaWRfYnlfdHlwZSkgW107XG4gICAgICBmcmVlX2lkID0gZW52Lm5iX2lkO1xuICAgICAgY2Nfbm9kZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgIGRhbmdsaW5nID0gMDtcbiAgICB9XG5cbiAgbGV0IHNpZ3MgZW52ID0gZW52LnNpZ19kZWNsXG5cbiAgbGV0IGVtcHR5X3BvaW50IHNpZ3MgPVxuICAgIHtcbiAgICAgIEVudi5jb250ZW50ID0gZW1wdHlfY2Mgc2lncztcbiAgICAgIEVudi5yb290cyA9IE5vbmU7XG4gICAgICBFbnYuZGVwcyA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eTtcbiAgICAgIEVudi5zb25zID0gW107XG4gICAgfVxuXG4gIGxldCBmaWxsX2VsZW0gc2lncyBib3R0b20gPVxuICAgIGxldCBlbGVtZW50YXJpZXMgPVxuICAgICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLnNpemUgc2lncykgKGZ1biBpIC0+XG4gICAgICAgICAgQXJyYXkubWFrZSAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgaSkgW10pXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHAuZWxlbWVudC5yZWNvZ25fbmF2IHdpdGhcbiAgICAgICAgICAgICAgfCBbXSB8ICgoTmF2aWdhdGlvbi5FeGlzdGluZyBfLCBfKSwgXykgOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgfCAoKE5hdmlnYXRpb24uRnJlc2ggXywgXyksIF8pIDo6IF8gOjogXyAtPiAoKVxuICAgICAgICAgICAgICB8IFsgKCgoTmF2aWdhdGlvbi5GcmVzaCAoXywgdHkxKSwgczEpLCBhcnIpIGFzIHN0ZXApIF0gLT5cbiAgICAgICAgICAgICAgICBsZXQgc2ExID0gZWxlbWVudGFyaWVzLih0eTEpIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gc2ExLihzMSkgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2ExLihzMSkgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggYXJyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChfLCB0eTIpLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgIGlmIHR5MSA9IHR5MiAmJiBzMSA8PiBzMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHNhMS4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMS4oczIpXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNhMiA9IGVsZW1lbnRhcmllcy4odHkyKSBpblxuICAgICAgICAgICAgICAgICAgICBzYTIuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTIuKHMyKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgXywgczIpIC0+XG4gICAgICAgICAgICAgICAgICBzYTEuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTEuKHMyKVxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vdGhpbmcgfCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgXyAtPiAoKSkpKVxuICAgICAgICBib3R0b21cbiAgICBpblxuICAgIGVsZW1lbnRhcmllc1xuXG4gIGxldCBwcmVzZW50X2luX2RzdCB+ZGVidWdfbW9kZSBkc3QgaW5qMmRzdCBuYXYgPVxuICAgIGxldCByZWMgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTb21lIGluaidcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkZyZXNoIF8sIF8pLCBfKSA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSwgTmF2aWdhdGlvbi5Ub05vdGhpbmcpIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBmc3Qgbi4oc2kpID0gRnJlZSB0aGVuXG4gICAgICAgICAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBpKSA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgc25kIG4uKHNpKSA9IGkgdGhlblxuICAgICAgICAgICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICB8ICggKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSxcbiAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBhZycsIHNpJykgKVxuICAgICAgICA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgZnN0IG4uKHNpKSA9IExpbmsgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcnLCBzaScpIHRoZW5cbiAgICAgICAgICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgfCAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksXG4gICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKGFnJywgdHknKSwgc2knKSApXG4gICAgICAgIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICAobWF0Y2ggbi4oc2kpIHdpdGhcbiAgICAgICAgICB8IExpbmsgKGFnbCwgc2lsKSwgXyAtPlxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYWdsIGRzdC5ub2Rlc19ieV90eXBlLih0eScpICYmIHNpJyA9IHNpbCB0aGVuIChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGFnJyBhZ2wgaW5qJyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBpbmonIC0+IGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgfCAoRnJlZSB8IFVuU3BlYyksIF8gLT4gTm9uZSkpXG4gICAgaW5cbiAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qMmRzdCBuYXZcblxuICBsZXQgcmVjIGluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluIGRzdF9pZCBkc3RcbiAgICAgIGluajJkc3QgcF9pZCA9XG4gICAgaWYgcF9pZCA9IGRzdF9pZCB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9pbnQgPSBkb21haW4uKHBfaWQpIGluXG4gICAgICBsZXQgcmVjIGluc2VydF9uYXZfc29ucyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgKGlual9lMnN1cCwgXyksIHN1cCA9XG4gICAgICAgICAgICBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgaW5qMmRzdFxuICAgICAgICAgICAgICBwb2ludC5FbnYuY29udGVudCBkc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBlcXVhbCB+ZGVidWdfbW9kZSBzdXAgZHN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGlual9zdXAyZHN0IC0+XG4gICAgICAgICAgICBsZXQgaW5qX2RzdDJwID1cbiAgICAgICAgICAgICAgUmVuYW1pbmcuaW52ZXJzZVxuICAgICAgICAgICAgICAgIChSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIGlual9lMnN1cCBpbmpfc3VwMmRzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbmF2ID1cbiAgICAgICAgICAgICAgYnVpbGRfbmF2aWdhdGlvbl9iZXR3ZWVuIH5kZWJ1Z19tb2RlIGlual9kc3QycCBwb2ludC5FbnYuY29udGVudFxuICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvaW50LkVudi5zb25zIDwtXG4gICAgICAgICAgICAgICAgeyBFbnYuZHN0ID0gZHN0X2lkOyBFbnYuaW5qID0gaW5qX2RzdDJwOyBFbnYubmV4dCA9IG5hdiB9XG4gICAgICAgICAgICAgICAgOjogcG9pbnQuRW52LnNvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMaXN0Lmxlbmd0aCBuYXYpXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHByZXNlbnRfaW5fZHN0IH5kZWJ1Z19tb2RlIGRzdCBpbmoyZHN0IGguRW52Lm5leHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbnNlcnRfbmF2X3NvbnMgdFxuICAgICAgICAgIHwgU29tZSBpbmpfcCcyZHN0IC0+XG4gICAgICAgICAgICBpbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpZF9ieV90eXBlIG5iX2lkIGRvbWFpbiBkc3RfaWQgZHN0XG4gICAgICAgICAgICAgIChSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIGguRW52LmluaiBpbmpfcCcyZHN0KVxuICAgICAgICAgICAgICBoLkVudi5kc3QpXG4gICAgICBpblxuICAgICAgaW5zZXJ0X25hdl9zb25zIHBvaW50LkVudi5zb25zXG4gICAgKVxuXG4gIGxldCBhZGRfY2MgfmRlYnVnX21vZGUgfnRvcGxldmVsID9vcmlnaW4gZW52IHBfaWQgZWxlbWVudCA9XG4gICAgbGV0IHcgPSB3ZWlnaHQgZWxlbWVudCBpblxuICAgIGxldCBoYXNoID0gY29hcnNlX2hhc2ggZWxlbWVudCBpblxuICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHJvb3RzID1cbiAgICAgICAgICBpZiB0b3BsZXZlbCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGZpbmRfcm9vdCBlbGVtZW50IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgKHJpZCwgcnR5KSAtPlxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgKCBMaXN0LnNvcnQgTW9kcy5pbnRfY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biByIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHIgcmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAoYXV0b21vcnBoaXNtcyB+ZGVidWdfbW9kZSBlbGVtZW50KSksXG4gICAgICAgICAgICAgICAgICBydHkgKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgTm9uZVxuICAgICAgICBpblxuICAgICAgICAoIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcF9pZDtcbiAgICAgICAgICAgICAgZWxlbWVudDtcbiAgICAgICAgICAgICAgcm9vdHM7XG4gICAgICAgICAgICAgIGRlcGVuZGluZyA9IGFkZF9vcmlnaW4gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IG9yaWdpbjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgXSxcbiAgICAgICAgICBpZGVudGl0eV9pbmplY3Rpb24gZWxlbWVudCxcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBfaWQgKVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoIGVxdWFsIH5kZWJ1Z19tb2RlIGVsZW1lbnQgaC5lbGVtZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGEsIGIsIGMsIGQgPSBhdXggdCBpblxuICAgICAgICAgIGggOjogYSwgYiwgYywgZFxuICAgICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIGxldCByb290cyA9XG4gICAgICAgICAgICBpZiBoLnJvb3RzIDw+IE5vbmUgfHwgbm90IHRvcGxldmVsIHRoZW5cbiAgICAgICAgICAgICAgaC5yb290c1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIGZpbmRfcm9vdCBlbGVtZW50IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChyaWQsIHJ0eSkgLT5cbiAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAoIExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biByIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHIgcmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgcnR5IClcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBwX2lkID0gaC5wX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50ID0gaC5lbGVtZW50O1xuICAgICAgICAgICAgICBkZXBlbmRpbmcgPSBhZGRfb3JpZ2luIGguZGVwZW5kaW5nIG9yaWdpbjtcbiAgICAgICAgICAgICAgcm9vdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6OiB0LFxuICAgICAgICAgICAgcixcbiAgICAgICAgICAgIGguZWxlbWVudCxcbiAgICAgICAgICAgIGgucF9pZCApKVxuICAgIGluXG4gICAgbGV0IGVudl93ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IHcgZW52IGluXG4gICAgbGV0IGVudl93X2gsIHIsIG91dCwgb3V0X2lkID1cbiAgICAgIGF1eCAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhhc2ggZW52X3cpXG4gICAgaW5cbiAgICBNb2RzLkludE1hcC5hZGQgdyAoTW9kcy5JbnRNYXAuYWRkIGhhc2ggZW52X3dfaCBlbnZfdykgZW52LCByLCBvdXQsIG91dF9pZFxuXG4gIGxldCByZWMgc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgdGhpcyBtYXhfbCBsZXZlbFxuICAgICAgKChfLCBkb21haW4pIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIGxldmVsIDwgbWF4X2wgdGhlblxuICAgICAgICBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIChzdWNjIGxldmVsKSBhY2NcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgIChmdW4gXyAtPiBMaXN0LnJldl9hcHBlbmQpXG4gICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSAoc3VjYyBsZXZlbCkgZG9tYWluKVxuICAgICAgICAgICAgIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBhY2NcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG5ld3MgPVxuICAgICAgICBtYXRjaCBzaGFyaW5nIHdpdGhcbiAgICAgICAgfCBOb19zaGFyaW5nIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IE1heF9zaGFyaW5nIC0+IGluZnMgc2lncyB+ZGVidWdfbW9kZSB0aGlzLmVsZW1lbnQgaC5lbGVtZW50XG4gICAgICAgIHwgQ29tcGF0aWJsZV9wYXR0ZXJucyAtPlxuICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgKGZ1biByIC0+IGludGVyc2VjdGlvbiByIHRoaXMuZWxlbWVudCBoLmVsZW1lbnQpXG4gICAgICAgICAgICAobWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgdGhpcy5lbGVtZW50IGguZWxlbWVudClcbiAgICAgIGluXG4gICAgICBsZXQgYWNjJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAobWlkLCBhY2MpIGNjIC0+XG4gICAgICAgICAgICBsZXQgaWQnID0gc3VjYyBtaWQgaW5cbiAgICAgICAgICAgIGxldCB4LCBfLCBfLCBpZCA9IGFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6ZmFsc2UgYWNjIGlkJyBjYyBpblxuICAgICAgICAgICAgKCAoaWYgaWQgPSBpZCcgdGhlblxuICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBtaWQpLFxuICAgICAgICAgICAgICB4ICkpXG4gICAgICAgICAgYWNjIG5ld3NcbiAgICAgIGluXG4gICAgICBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIGxldmVsIGFjYycgdFxuXG4gIGxldCByZWMgc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCBsZXZlbFxuICAgICAgKChfLCBkb21haW4pIGFzIGFjYykgPVxuICAgIGlmIGxldmVsIDwgMiB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGxldmVsIGRvbWFpbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCAocHJlZCBsZXZlbCkgYWNjXG4gICAgICB8IFNvbWUgbGlzdCAtPlxuICAgICAgICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbWF4X2wgKHByZWQgbGV2ZWwpIGFjY1xuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICBhdXggKHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGggbWF4X2wgbGV2ZWwgYWNjIHQpIHRcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGFjYyAoTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8gLT4gTGlzdC5yZXZfYXBwZW5kKSBsaXN0IFtdKVxuICAgIClcblxuICBsZXQgc2F0dXJhdGUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBkb21haW4gPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLm1heF9rZXkgZG9tYWluIHdpdGhcbiAgICB8IE5vbmUgLT4gMCwgZG9tYWluXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGxldCBzaSA9XG4gICAgICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIGwgbSAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbSBwIC0+IG1heCBtIHAucF9pZCkgbSBsKSlcbiAgICAgICAgICBkb21haW4gMFxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzaGFyaW5nIHdpdGhcbiAgICAgIHwgTm9fc2hhcmluZyAtPiBzaSwgZG9tYWluXG4gICAgICB8IENvbXBhdGlibGVfcGF0dGVybnMgfCBNYXhfc2hhcmluZyAtPlxuICAgICAgICBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGwgbCAoc2ksIGRvbWFpbikpXG5cbiAgbGV0IG9mX2VudiBlbnYgPVxuICAgIGxldCBhZGRfY2MgYWNjIHAgPVxuICAgICAgbGV0IHcgPSB3ZWlnaHQgcC5lbGVtZW50IGluXG4gICAgICBsZXQgaGFzaCA9IGNvYXJzZV9oYXNoIHAuZWxlbWVudCBpblxuICAgICAgbGV0IGFjY193ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IHcgYWNjIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgd1xuICAgICAgICAoTW9kcy5JbnRNYXAuYWRkIGhhc2hcbiAgICAgICAgICAgKHAgOjogTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhhc2ggYWNjX3cpXG4gICAgICAgICAgIGFjY193KVxuICAgICAgICBhY2NcbiAgICBpblxuICAgIGxldCBkb21haW4nID1cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBwX2lkIGFjYyBwIC0+XG4gICAgICAgICAgYWRkX2NjIGFjY1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50ID0gcC5FbnYuY29udGVudDtcbiAgICAgICAgICAgICAgZGVwZW5kaW5nID0gcC5FbnYuZGVwcztcbiAgICAgICAgICAgICAgcm9vdHMgPSBwLkVudi5yb290cztcbiAgICAgICAgICAgIH0pXG4gICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IGVudi5FbnYuZG9tYWluXG4gICAgaW5cbiAgICB7XG4gICAgICBzaWdfZGVjbCA9IGVudi5FbnYuc2lnX2RlY2w7XG4gICAgICBuYl9pZCA9IHN1Y2MgKEFycmF5LmZvbGRfbGVmdCAoTGlzdC5mb2xkX2xlZnQgbWF4KSAwIGVudi5FbnYuaWRfYnlfdHlwZSk7XG4gICAgICBpZF9ieV90eXBlID0gZW52LkVudi5pZF9ieV90eXBlO1xuICAgICAgZG9tYWluID0gZG9tYWluJztcbiAgICAgIHVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZTtcbiAgICB9XG5cbiAgbGV0IGRlYnVnX3ByaW50IGYgZW52ID1cbiAgICBQcC5hcnJheSBQcC5jb21tYVxuICAgICAgKGZ1biB0eSBmIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVkOiAldFwiIHR5IChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIltcIjtcbiAgICAgICAgICAgIFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGEgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgYSkgZiBsO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIl1cIikpXG4gICAgICBmIGVudi5pZF9ieV90eXBlO1xuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ1c2VkX2J5X2FfYmVnaW5fbmV3ID0gJUJALlwiIGVudi51c2VkX2J5X2FfYmVnaW5fbmV3XG5lbmRcblxuKCoqIE9wZXJhdGlvbiB0byBjcmVhdGUgY2MgKilcbmxldCBjaGVja19kYW5nbGluZyB3ayA9XG4gIGlmIHdrLmRhbmdsaW5nIDw+IDAgdGhlblxuICAgIHJhaXNlIChkYW5nbGluZ19ub2RlIH5zaWdzOndrLnNpZ3Mgd2sudXNlZF9pZCB3ay5kYW5nbGluZylcblxubGV0IGJlZ2luX25ldyBlbnYgPSBQcmVFbnYudG9fd29yayBlbnZcblxubGV0IGZyZXNoX2NjX2lkIGRvbWFpbiA9XG4gIHN1Y2NcbiAgICAoTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT5cbiAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBwIC0+IG1heCBhY2MgcC5wX2lkKSBhY2MgeCkpXG4gICAgICAgZG9tYWluIDApXG5cbmxldCByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiB3ayA9XG4gIGxldCAoKSA9IGNoZWNrX2RhbmdsaW5nIHdrIGluXG4gICgqIHJlYnVpbGQgZW52ICopXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICB3ay5yZXNlcnZlZF9pZC4oaSkgPC0gTGlzdC5yZXZfYXBwZW5kIHdrLnVzZWRfaWQuKGkpIHdrLnJlc2VydmVkX2lkLihpKSlcbiAgICAgIChBcnJheS5sZW5ndGggd2sudXNlZF9pZClcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYXAgTGlzdC5yZXYgd2sudXNlZF9pZCBpblxuICBsZXQgY2NfY2FuZGlkYXRlID1cbiAgICB7XG4gICAgICBub2Rlc19ieV90eXBlO1xuICAgICAgbm9kZXMgPSB3ay5jY19ub2RlcztcbiAgICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIHdrLmNjX25vZGVzO1xuICAgIH1cbiAgaW5cbiAgbGV0IHByZWVudiwgciwgb3V0LCBvdXRfaWQgPVxuICAgIFByZUVudi5hZGRfY2MgfmRlYnVnX21vZGUgfnRvcGxldmVsID9vcmlnaW4gd2suY2NfZW52XG4gICAgICAoZnJlc2hfY2NfaWQgd2suY2NfZW52KSBjY19jYW5kaWRhdGVcbiAgaW5cbiAgUHJlRW52LmZyZXNoIHdrLnNpZ3Mgd2sucmVzZXJ2ZWRfaWQgd2suZnJlZV9pZCBwcmVlbnYsIHIsIG91dCwgb3V0X2lkXG5cbmxldCBmaW5pc2hfbmV3IH5kZWJ1Z19tb2RlID9vcmlnaW4gd2sgPVxuICByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6dHJ1ZSA/b3JpZ2luIHdrXG5cbmxldCBuZXdfbGluayB3ayAoKCh4LCBfKSBhcyBuMSksIGkpICgoKHksIF8pIGFzIG4yKSwgaikgPVxuICBsZXQgeF9uID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0geCB3ay5jY19ub2RlcyBpblxuICBsZXQgeV9uID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0geSB3ay5jY19ub2RlcyBpblxuICBtYXRjaCB4X24uKGkpLCB5X24uKGopIHdpdGhcbiAgfCAoVW5TcGVjLCBzdHgpLCAoVW5TcGVjLCBzdHkpIC0+XG4gICAgbGV0ICgpID0geF9uLihpKSA8LSBMaW5rICh5LCBqKSwgc3R4IGluXG4gICAgbGV0ICgpID0geV9uLihqKSA8LSBMaW5rICh4LCBpKSwgc3R5IGluXG4gICAgaWYgd2suZGFuZ2xpbmcgPSB4IHx8IHdrLmRhbmdsaW5nID0geSB0aGVuXG4gICAgICB7IHdrIHdpdGggZGFuZ2xpbmcgPSAwIH1cbiAgICBlbHNlXG4gICAgICB3a1xuICB8ICgoRnJlZSB8IExpbmsgXyksIF8pLCBfIC0+IHJhaXNlIChhbHJlYWR5X3NwZWNpZmllZCB+c2lnczp3ay5zaWdzIG4xIGkpXG4gIHwgXywgKChGcmVlIHwgTGluayBfKSwgXykgLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbjIgailcblxubGV0IG5ld19mcmVlIHdrICgoKHgsIF8pIGFzIG4pLCBpKSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIG1hdGNoIHhfbi4oaSkgd2l0aFxuICB8IFVuU3BlYywgc3QgLT5cbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIEZyZWUsIHN0IGluXG4gICAgd2tcbiAgfCAoRnJlZSB8IExpbmsgXyksIF8gLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbiBpKVxuXG5sZXQgbmV3X2ludGVybmFsX3N0YXRlIHdrICgoKHgsIF8pIGFzIG4pLCBpKSB2YSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIGxldCBsLCBzID0geF9uLihpKSBpblxuICBpZiBzID49IDAgdGhlblxuICAgIHJhaXNlIChhbHJlYWR5X3NwZWNpZmllZCB+c2lnczp3ay5zaWdzIG4gaSlcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0geF9uLihpKSA8LSBsLCB2YSBpblxuICAgIHdrXG4gIClcblxubGV0IG5ld19ub2RlIHdrIHR5cGVfaWQgPVxuICBsZXQgKCkgPSBjaGVja19kYW5nbGluZyB3ayBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgd2suc2lncyB0eXBlX2lkIGluXG4gIG1hdGNoIHdrLnJlc2VydmVkX2lkLih0eXBlX2lkKSB3aXRoXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0ICgpID0gd2sudXNlZF9pZC4odHlwZV9pZCkgPC0gaCA6OiB3ay51c2VkX2lkLih0eXBlX2lkKSBpblxuICAgIGxldCAoKSA9IHdrLnJlc2VydmVkX2lkLih0eXBlX2lkKSA8LSB0IGluXG4gICAgbGV0IG5vZGUgPSBoLCB0eXBlX2lkIGluXG4gICAgKCBub2RlLFxuICAgICAge1xuICAgICAgICBzaWdzID0gd2suc2lncztcbiAgICAgICAgY2NfZW52ID0gd2suY2NfZW52O1xuICAgICAgICByZXNlcnZlZF9pZCA9IHdrLnJlc2VydmVkX2lkO1xuICAgICAgICB1c2VkX2lkID0gd2sudXNlZF9pZDtcbiAgICAgICAgZnJlZV9pZCA9IHdrLmZyZWVfaWQ7XG4gICAgICAgIGRhbmdsaW5nID1cbiAgICAgICAgICAoaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgd2suY2Nfbm9kZXMgdGhlblxuICAgICAgICAgICAgIDBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGgpO1xuICAgICAgICBjY19ub2RlcyA9IE1vZHMuSW50TWFwLmFkZCBoIChBcnJheS5tYWtlIGFyaXR5IChVblNwZWMsIC0xKSkgd2suY2Nfbm9kZXM7XG4gICAgICB9IClcbiAgfCBbXSAtPlxuICAgIGxldCAoKSA9IHdrLnVzZWRfaWQuKHR5cGVfaWQpIDwtIHdrLmZyZWVfaWQgOjogd2sudXNlZF9pZC4odHlwZV9pZCkgaW5cbiAgICBsZXQgbm9kZSA9IHdrLmZyZWVfaWQsIHR5cGVfaWQgaW5cbiAgICAoIG5vZGUsXG4gICAgICB7XG4gICAgICAgIHNpZ3MgPSB3ay5zaWdzO1xuICAgICAgICBjY19lbnYgPSB3ay5jY19lbnY7XG4gICAgICAgIHJlc2VydmVkX2lkID0gd2sucmVzZXJ2ZWRfaWQ7XG4gICAgICAgIHVzZWRfaWQgPSB3ay51c2VkX2lkO1xuICAgICAgICBmcmVlX2lkID0gc3VjYyB3ay5mcmVlX2lkO1xuICAgICAgICBkYW5nbGluZyA9XG4gICAgICAgICAgKGlmIE1vZHMuSW50TWFwLmlzX2VtcHR5IHdrLmNjX25vZGVzIHRoZW5cbiAgICAgICAgICAgICAwXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB3ay5mcmVlX2lkKTtcbiAgICAgICAgY2Nfbm9kZXMgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCB3ay5mcmVlX2lkIChBcnJheS5tYWtlIGFyaXR5IChVblNwZWMsIC0xKSkgd2suY2Nfbm9kZXM7XG4gICAgICB9IClcblxubGV0IG1pbmltYWxfZW52IH5kZWJ1Z19tb2RlIGVudiBjb250YWN0X21hcCA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHR5IC0+XG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcyBhY2MgKGludHMsIGxpbmtzKSAtPlxuICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgIGxldCB3ID0gbmV3X2ZyZWUgdyAobiwgcykgaW5cbiAgICAgICAgICBsZXQgYWNjJywgXywgXywgXyA9IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3IGluXG4gICAgICAgICAgbGV0IGFjYycnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAgICAgKGZ1biBpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgICAgICAgIGxldCB3ID0gbmV3X2ludGVybmFsX3N0YXRlIHcgKG4sIHMpIGkgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0LCBfLCBfLCBfID1cbiAgICAgICAgICAgICAgICAgIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvdXQpXG4gICAgICAgICAgICAgIGludHMgYWNjJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAgIChmdW4gKHR5JywgcycpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgdyA9IGJlZ2luX25ldyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgICAgIGxldCBuJywgdyA9IG5ld19ub2RlIHcgdHknIGluXG4gICAgICAgICAgICAgIGxldCB3ID0gbmV3X2xpbmsgdyAobiwgcykgKG4nLCBzJykgaW5cbiAgICAgICAgICAgICAgbGV0IG91dCwgXywgXywgXyA9IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3IGluXG4gICAgICAgICAgICAgIGlmIHR5ID0gdHknICYmIHMgPCBzJyB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgdyA9IGJlZ2luX25ldyBvdXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgbiwgdyA9IG5ld19ub2RlIHcgdHkgaW5cbiAgICAgICAgICAgICAgICBsZXQgdyA9IG5ld19saW5rIHcgKG4sIHMpIChuLCBzJykgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0JywgXywgXywgXyA9XG4gICAgICAgICAgICAgICAgICByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6ZmFsc2Ugd1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgb3V0J1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBvdXQpXG4gICAgICAgICAgICBsaW5rcyBhY2MnJykpXG4gICAgZW52IGNvbnRhY3RfbWFwXG5cbmxldCBmb2xkX2J5X3R5cGUgZiBjYyBhY2MgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBhZ2VudF90eXBlIGFjYyBsaXN0X3BvcyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgcG9zIC0+XG4gICAgICAgICAgbGV0IGludGYgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBwb3MgY2Mubm9kZXMgaW5cbiAgICAgICAgICBmIH5wb3MgfmFnZW50X3R5cGUgaW50ZiBhY2MpXG4gICAgICAgIGFjYyBsaXN0X3BvcylcbiAgICBhY2MgY2Mubm9kZXNfYnlfdHlwZVxuXG5sZXQgZm9sZCBmIGNjIGFjYyA9IE1vZHMuSW50TWFwLmZvbGQgZiBjYy5ub2RlcyBhY2NcblxubGV0IGZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIGVudiBjb250YWN0X21hcCA9XG4gIGxldCBzaWdzID0gUHJlRW52LnNpZ3MgZW52IGluXG4gIGxldCBlbnYgPSBtaW5pbWFsX2VudiB+ZGVidWdfbW9kZSBlbnYgY29udGFjdF9tYXAgaW5cbiAgbGV0IHNpLCBjb21wbGV0ZV9kb21haW4gPVxuICAgIFByZUVudi5zYXR1cmF0ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGVudi5QcmVFbnYuZG9tYWluXG4gIGluXG4gIGxldCBkb21haW4gPSBBcnJheS5tYWtlIChzdWNjIHNpKSAoUHJlRW52LmVtcHR5X3BvaW50IGVudi5QcmVFbnYuc2lnX2RlY2wpIGluXG4gIGxldCBzaW5nbGVzID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IDEgY29tcGxldGVfZG9tYWluIGluXG4gIGxldCBlbGVtZW50YXJpZXMgPSBQcmVFbnYuZmlsbF9lbGVtIGVudi5QcmVFbnYuc2lnX2RlY2wgc2luZ2xlcyBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+XG4gICAgICAgICAgICBkb21haW4uKHgucF9pZCkgPC1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0geC5lbGVtZW50O1xuICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgRW52LmRlcHMgPSB4LmRlcGVuZGluZztcbiAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSB4LnJvb3RzO1xuICAgICAgICAgICAgICB9KSlcbiAgICAgIHNpbmdsZXNcbiAgaW5cbiAgbGV0IHN0YXRfbmF2X3N0ZXBzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGxldmVsIGRvbWFpbl9sZXZlbCBhY2NfbGV2ZWwgLT5cbiAgICAgICAgaWYgbGV2ZWwgPD0gMSB0aGVuXG4gICAgICAgICAgYWNjX2xldmVsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAoZnVuIF8gbCBhY2MgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGFjYyB4IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBkb21haW4uKHgucF9pZCkgPC1cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYuY29udGVudCA9IHguZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSB4LnJvb3RzO1xuICAgICAgICAgICAgICAgICAgICAgICAgRW52LmRlcHMgPSB4LmRlcGVuZGluZztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAoZnVuIF8gbGwgYWNjbCAtPlxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgZS5lbGVtZW50IHguZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5qcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBpbmpfZV94IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZUVudi5pbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5QcmVFbnYuaWRfYnlfdHlwZSBlbnYuUHJlRW52Lm5iX2lkIGRvbWFpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucF9pZCB4LmVsZW1lbnQgaW5qX2VfeCBlLnBfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgaW5qcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2wgbGwpXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZXMgYWNjKVxuICAgICAgICAgICAgICAgIGFjYyBsKVxuICAgICAgICAgICAgZG9tYWluX2xldmVsIGFjY19sZXZlbClcbiAgICAgIGNvbXBsZXRlX2RvbWFpbiAwXG4gIGluXG4gIGxldCBsZXZlbDAgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgMCBjb21wbGV0ZV9kb21haW4gaW5cbiAgbGV0IHNpbmdsZV9hZ2VudF9wb2ludHMgPVxuICAgIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBlbnYuUHJlRW52LmlkX2J5X3R5cGUpIE5vbmVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IHAuZWxlbWVudCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAoXywgdHkpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgZG9tYWluLihwLnBfaWQpIDwtXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0gcC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSBwLnJvb3RzO1xuICAgICAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHAuZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgICAgICBFbnYuc29ucyA9IFtdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzaW5nbGVfYWdlbnRfcG9pbnRzLih0eSkgPC0gU29tZSAocC5wX2lkLCBwLmRlcGVuZGluZykpKVxuICAgICAgbGV2ZWwwXG4gIGluXG4gICgge1xuICAgICAgRW52LnNpZ19kZWNsID0gZW52LlByZUVudi5zaWdfZGVjbDtcbiAgICAgIEVudi5pZF9ieV90eXBlID0gZW52LlByZUVudi5pZF9ieV90eXBlO1xuICAgICAgRW52Lm1heF9vYnMgPSBmcmVzaF9jY19pZCBlbnYuUHJlRW52LmRvbWFpbjtcbiAgICAgIEVudi5kb21haW47XG4gICAgICBFbnYuZWxlbWVudGFyaWVzO1xuICAgICAgRW52LnNpbmdsZV9hZ2VudF9wb2ludHM7XG4gICAgfSxcbiAgICB7IHN0YXRfbm9kZXMgPSBzaTsgUHJlRW52LnN0YXRfbmF2X3N0ZXBzIH0gKVxuXG5sZXQgbWVyZ2Vfb25faW5mIH5kZWJ1Z19tb2RlIGVudiBtIGcxIGcyID1cbiAgbGV0IG1fbGlzdCA9IFJlbmFtaW5nLnRvX2xpc3QgbSBpblxuICBsZXQgcm9vdDEsIHJvb3QyID0gTGlzdC5oZCBtX2xpc3QgaW5cbiAgbGV0IHBhaXJpbmcgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAoYSwgYikgLT4gTW9kcy5JbnQyU2V0LmFkZCAoYSwgYikgYWNjKVxuICAgICAgTW9kcy5JbnQyU2V0LmVtcHR5IG1fbGlzdFxuICBpblxuICBsZXQgcG9zc2liaWxpdGllcyA9IHJlZiBwYWlyaW5nIGluXG4gIG1hdGNoXG4gICAgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnBvc3NpYmlsaXRpZXMgfnN0cmljdDpmYWxzZSByb290MSBnMSByb290MiBnMlxuICB3aXRoXG4gIHwgU29tZSBtJywgXyAtPlxuICAgIGxldCBfLCBwdXNob3V0ID1cbiAgICAgIG1lcmdlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgZW52LlByZUVudi5pZF9ieV90eXBlIGVudi5QcmVFbnYubmJfaWQgbScgZzFcbiAgICAgICAgZzJcbiAgICBpblxuICAgIFNvbWUgcHVzaG91dCwgTm9uZVxuICB8IE5vbmUsIGNvbmZsaWN0IC0+IE5vbmUsIGNvbmZsaWN0XG5cbmxldCBsZW5ndGggY2MgPSBNb2RzLkludE1hcC5zaXplIGNjLm5vZGVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBSZW5hbWluZy50IE1vZHMuSW50TWFwLnQgKiBNb2RzLkludFNldC50XG4oKiAobWFwLHNldClcbiAgIG1hcDogcG9pbnRfaSAtPiAobm9kZV9qKGkpIC0+IGlkX25vZGVfZ3JhcGhfaW5fY3VycmVudF9tYXRjaGluZylcbiAgIHNldDpjb2RvbWFpbiBvZiBjdXJyZW50IG1hdGNoaW5nICopXG5cbnR5cGUgbWF0Y2hpbmcgPSB0XG5cbmxldCBlbXB0eSA9IE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludFNldC5lbXB0eVxuXG5sZXQgYWRkX2NjIChpbmosIGNvKSBpZCByID1cbiAgbGV0IGMgPSBSZW5hbWluZy5pbWFnZSByIGluXG4gIG1hdGNoIE1vZHMuSW50U2V0LmRpc2pvaW50X3VuaW9uIGNvIGMgd2l0aFxuICB8IFNvbWUgY28nIC0+IFNvbWUgKE1vZHMuSW50TWFwLmFkZCBpZCByIGluaiwgY28nKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgZGVidWdfcHJpbnQgZiAobSwgX2NvKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyglYSlAXVwiXG4gICAgKFBwLnNldCBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5jb21tYSAoZnVuIGYgKGNjaWQsIG5tKSAtPlxuICAgICAgICAgUHAuc2V0IFJlbmFtaW5nLnRvX2xpc3QgUHAuY29tbWFcbiAgICAgICAgICAgKGZ1biBmIChub2RlLCBkc3QpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaTolaS0+JWlcIiBjY2lkIG5vZGUgZHN0KVxuICAgICAgICAgICBmIG5tKSlcbiAgICBtXG5cbmxldCByZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2NfaWQgcm9vdCA9XG4gIGxldCBwb2ludCA9IFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NfaWQgaW5cbiAgbWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJNYXRjaGluZy5yZWNvbnN0cnVjdCBjYyBlcnJvclwiXG4gICgqLSBybSAtIGFkZCA6IGludCAtPiBpbnQgLT4gUmVuYW1pbmcudCAtPiBSZW5hbWluZy50ICopXG4gIHwgU29tZSAocmlkcywgcnR5KSAtPlxuICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgIGxldCBfLCBpbmplY3RpdmUgPVxuICAgICAgbWF0Y2ggUGF0dGVybi5yZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIChQYXR0ZXJuLkVudi5jb250ZW50IHBvaW50KSB3aXRoXG4gICAgICB8IF8gOjogXyBhcyBuYXYgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChyb290LCBpbmplY3RpdmUpIG5hdiAtPlxuICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICBpbmplY3RpdmVcbiAgICAgICAgICAgICAgJiYgTmF2aWdhdGlvbi5pbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoXG4gICAgICAgICAgICAgICAgICAgbmF2ICkpXG4gICAgICAgICAgKFNvbWUgKHJvb3QsIHJ0eSksIHRydWUpXG4gICAgICAgICAgbmF2XG4gICAgICAoKi0gcm0gLSBmaW5kX3Jvb3Q6IGNjIC0+ICh0eXBlLCBub2RlKSBvcHRpb24gKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCBOb25lLFxuICAgICAgICAgIChtYXRjaCByaWRzIHdpdGhcbiAgICAgICAgICB8IFsgcmlkIF0gLT4gUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgcmlkIHJvb3QgaW5qXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKSApXG4gICAgaW5cbiAgICBpZiBpbmplY3RpdmUgdGhlblxuICAgICAgaW5qXG4gICAgZWxzZVxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiTWF0Y2hpbmcucmVjb25zdHJ1Y3QgcmVuYW1pbmcgZXJyb3IgYXQgcm9vdCBcIiBeIHN0cmluZ19vZl9pbnQgcm9vdClcblxuKCogcmVjb25zdHJ1Y3Q6IFBhdHRlcm4uRW52LnQgLT4gRWRnZXMudCAtPiB0IC0+IGludCAtPiBQYXR0ZXJuLmlkIC0+XG4gICBpbnQgLT4gdCBvcHRpb24qKVxubGV0IHJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBpbmogaWQgY2NfaWQgcm9vdCA9XG4gIGxldCByZW5hbWUgPSByZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2NfaWQgcm9vdCBpblxuICBtYXRjaCBNb2RzLkludFNldC5kaXNqb2ludF91bmlvbiAoUmVuYW1pbmcuaW1hZ2UgcmVuYW1lKSAoc25kIGluaikgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgY28gLT4gU29tZSAoTW9kcy5JbnRNYXAuYWRkIGlkIHJlbmFtZSAoZnN0IGluaiksIGNvKVxuXG5sZXQgcmVjIGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIHJvb3QgaW5qID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgaCA6OiB0IC0+XG4gICAgTmF2aWdhdGlvbi5pbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoIGhcbiAgICAmJiBhdXhfaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBncmFwaCBOb25lIGluaiB0XG5cbmxldCBpc19yb290X29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCAoKF8sIHJ0eSkgYXMgcm9vdCkgY2NfaWQgPVxuICBsZXQgcG9pbnQgPSBQYXR0ZXJuLkVudi5nZXQgZG9tYWluIGNjX2lkIGluXG4gIG1hdGNoIFBhdHRlcm4ucmVjb25zdHJ1Y3Rpb25fbmF2aWdhdGlvbiAoUGF0dGVybi5FbnYuY29udGVudCBwb2ludCkgd2l0aFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIFBhdHRlcm4uRW52LnJvb3RzIHBvaW50IHdpdGhcbiAgICB8IFNvbWUgKF8sIHJ0eScpIC0+IHJ0eSA9IHJ0eSdcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG4gIHwgbmF2IC0+IGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIChTb21lIHJvb3QpIChSZW5hbWluZy5lbXB0eSAoKSkgbmF2XG5cbmxldCByb290c19vZiB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2MgPVxuICBFZGdlcy5hbGxfYWdlbnRzX3doZXJlXG4gICAgKGZ1biB4IC0+IGlzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIHggY2MpXG4gICAgZ3JhcGhcblxuKCogZ2V0IDogKENvbnRlbnRBZ2VudC50ICogaW50KSAtPiB0IC0+IGludCAqKVxubGV0IGdldCB+ZGVidWdfbW9kZSAoKG5vZGUsIF8pLCBpZCkgKHQsIF8pID1cbiAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBSZW5hbWluZy5kdW1teSBpZCB0KSBub2RlXG5cbmxldCBlbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBjY3MgKHQsIF8pID1cbiAgbGV0IG91dCA9IEFycmF5Lm1ha2UgKE1vZHMuSW50TWFwLnNpemUgdCkgW10gaW5cbiAgbGV0ICgpID1cbiAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAoZnVuIGlkIG1hcCAtPlxuICAgICAgICBvdXQuKGlkKSA8LVxuICAgICAgICAgIFJlbmFtaW5nLmZvbGRcbiAgICAgICAgICAgIChmdW4gaSBvdXQgYWNjIC0+XG4gICAgICAgICAgICAgICggb3V0LFxuICAgICAgICAgICAgICAgIFBhdHRlcm4uZmluZF90eVxuICAgICAgICAgICAgICAgICAgKFBhdHRlcm4uRW52LmNvbnRlbnQgKFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NzLihpZCkpKVxuICAgICAgICAgICAgICAgICAgaSApXG4gICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgIG1hcCBbXSlcbiAgICAgIHRcbiAgaW5cbiAgb3V0XG5cbm1vZHVsZSBDYWNoZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYXR0ZXJuLmlkICogKGludCAqIGludCkgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKGEsIGEnKSAoYiwgYicpID1cbiAgICBsZXQgYyA9IFBhdHRlcm4uY29tcGFyZV9jYW5vbmljYWxzIGEgYiBpblxuICAgIGlmIGMgPSAwIHRoZW4gKFxuICAgICAgbWF0Y2ggYScsIGInIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgICB8IE5vbmUsIFNvbWUgXyAtPiAxXG4gICAgICB8IFNvbWUgXywgTm9uZSAtPiAtMVxuICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBNb2RzLmludF9wYWlyX2NvbXBhcmUgeCB5XG4gICAgKSBlbHNlXG4gICAgICBjXG5cbiAgbGV0IHByaW50IGYgKGEsIGEnKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWFcIlxuICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnM6dHJ1ZSA/ZG9tYWluOk5vbmUgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFcbiAgICAgIChQcC5vcHRpb24gKFBwLnBhaXIgRm9ybWF0LnBwX3ByaW50X2ludCBGb3JtYXQucHBfcHJpbnRfaW50KSlcbiAgICAgIGEnXG5lbmRcblxubW9kdWxlIENhY2hlU2V0TWFwID0gU2V0TWFwLk1ha2UgKENhY2hlKVxuXG50eXBlIGNhY2hlID0gQ2FjaGVTZXRNYXAuU2V0LnRcblxubGV0IGVtcHR5X2NhY2hlID0gQ2FjaGVTZXRNYXAuU2V0LmVtcHR5XG5cbmxldCBzdXJ2aXZlX25hdiB+ZGVidWdfbW9kZSBpbmogZ3JhcGggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gaW5qIHN0ZXAgLT5cbiAgICAgIG1hdGNoIGluaiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW5qXG4gICAgICB8IFNvbWUgaW5qIC0+XG4gICAgICAgIE5hdmlnYXRpb24uaW5qZWN0aW9uX2Zvcl9vbmVfbW9yZV9lZGdlIH5kZWJ1Z19tb2RlIGluaiBncmFwaCBzdGVwKVxuICAgIChTb21lIGluailcblxuKCplZGdlczogbGlzdCBvZiBjb25jcmV0ZSBlZGdlcyxcbiAgICByZXR1cm5zIHRoZSByb290cyBvZiBvYnNlcnZhYmxlcyB0aGF0IGFyZSBhYm92ZSBpbiB0aGUgZG9tYWluKilcbmxldCBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoICgob3V0LCBjYWNoZSkgYXMgYWNjKSBub2RlIHNpdGUgYXJyb3cgPVxuICBsZXQgcmVjIGF1eF9mcm9tX2VkZ2VzIGNhY2hlICgob2JzLCByZXZfZGVwcykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2MsIGNhY2hlXG4gICAgfCAocGlkLCBwb2ludCwgaW5qX3BvaW50MmdyYXBoKSA6OiByZW1haW5zIC0+XG4gICAgICBsZXQgYWNjJyA9XG4gICAgICAgIG1hdGNoIFBhdHRlcm4uRW52LnJvb3RzIHBvaW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgKGlkcywgdHkpIC0+XG4gICAgICAgICAgKCBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIGFjYyBpZCAtPlxuICAgICAgICAgICAgICAgIChwaWQsIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmpfcG9pbnQyZ3JhcGggaWQsIHR5KSlcbiAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgIG9icyBpZHMsXG4gICAgICAgICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gcmV2X2RlcHMgKFBhdHRlcm4uRW52LmRlcHMgcG9pbnQpIClcbiAgICAgIGluXG4gICAgICBsZXQgcmVtYWlucycsIGNhY2hlJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoKHJlLCBjYSkgYXMgcGFpcikgc29uIC0+XG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBzdXJ2aXZlX25hdiB+ZGVidWdfbW9kZSBpbmpfcG9pbnQyZ3JhcGggZ3JhcGggc29uLlBhdHRlcm4uRW52Lm5leHRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwYWlyXG4gICAgICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgICAgICBsZXQgcmVuYW1lID1cbiAgICAgICAgICAgICAgICBSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIHNvbi5QYXR0ZXJuLkVudi5pbmogaW5qJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgY2EnID1cbiAgICAgICAgICAgICAgICBDYWNoZVNldE1hcC5TZXQuYWRkXG4gICAgICAgICAgICAgICAgICAoc29uLlBhdHRlcm4uRW52LmRzdCwgUmVuYW1pbmcubWluX2VsdCByZW5hbWUpXG4gICAgICAgICAgICAgICAgICBjYVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBpZiBjYSA9PSBjYScgdGhlblxuICAgICAgICAgICAgICAgIHBhaXJcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IHAnID0gUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBzb24uUGF0dGVybi5FbnYuZHN0IGluXG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSBzb24uUGF0dGVybi5FbnYuZHN0LCBwJywgcmVuYW1lIGluXG4gICAgICAgICAgICAgICAgbmV4dCA6OiByZSwgY2EnXG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgKHJlbWFpbnMsIGNhY2hlKSAoUGF0dGVybi5FbnYuc29ucyBwb2ludClcbiAgICAgIGluXG4gICAgICBhdXhfZnJvbV9lZGdlcyBjYWNoZScgYWNjJyByZW1haW5zJ1xuICBpblxuICBtYXRjaCBQYXR0ZXJuLkVudi5nZXRfZWxlbWVudGFyeSB+ZGVidWdfbW9kZSBkb21haW4gbm9kZSBzaXRlIGFycm93IHdpdGhcbiAgfCBOb25lIC0+IGFjY1xuICB8IFNvbWUgeCAtPlxuICAgIGF1eF9mcm9tX2VkZ2VzXG4gICAgICAoKigqdW5uZWNlc3NhcnkqKUNhY2hlU2V0TWFwLlNldC5hZGQgKGNjX2lkLFJlbmFtaW5nLm1pbl9lbHQgaW5qJykqKVxuICAgICAgY2FjaGUgb3V0IFsgeCBdXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2FnZW50IGRvbWFpbiBncmFwaCAoKChvYnMsIHJkZXBzKSwgY2FjaGUpIGFzIGFjYylcbiAgICAoKF8sIHR5KSBhcyBub2RlKSA9XG4gIGlmIEVkZ2VzLmlzX2FnZW50IG5vZGUgZ3JhcGggdGhlbiAoXG4gICAgbWF0Y2ggUGF0dGVybi5FbnYuZ2V0X3NpbmdsZV9hZ2VudCB0eSBkb21haW4gd2l0aFxuICAgIHwgU29tZSAoY2MsIGRlcHMpIC0+XG4gICAgICAoKGNjLCBub2RlKSA6OiBvYnMsIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZGVwcyBkZXBzKSwgY2FjaGVcbiAgICB8IE5vbmUgLT4gYWNjXG4gICkgZWxzZVxuICAgIGFjY1xuXG5sZXQgb2JzZXJ2YWJsZXNfZnJvbV9mcmVlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlID1cbiAgZnJvbV9lZGdlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIE5hdmlnYXRpb24uVG9Ob3RoaW5nXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIGlkID1cbiAgZnJvbV9lZGdlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIChOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgaWQpXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2xpbmsgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBuIHNpdGUgbicgc2l0ZScgPVxuICBmcm9tX2VkZ2UgZG9tYWluIH5kZWJ1Z19tb2RlIGdyYXBoIGFjYyBuIHNpdGVcbiAgICAoTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggbicsIHNpdGUnKSlcblxubW9kdWxlIEFnZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEV4aXN0aW5nIG9mIEFnZW50LnQgKiBpbnQgfCBGcmVzaCBvZiBpbnQgKiBpbnQgKCogdHlwZSwgaWQgKilcblxuICBsZXQgcmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQnKSBhcyB4IC0+XG4gICAgICBpZiBpZCA8PiBpZCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG4nID0gQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGluaiBuIGluXG4gICAgICAgIGlmIG4gPT0gbicgdGhlblxuICAgICAgICAgIHhcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEV4aXN0aW5nIChuJywgaWQnKVxuICAgICAgKVxuICAgIHwgRnJlc2ggXyBhcyB4IC0+IHhcblxuICBsZXQgcHJpbnQgP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEvKiVpKi9cIiAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSkgbiBpZFxuICAgIHwgRnJlc2ggKHR5LCBpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLyoldCAlaSovXCJcbiAgICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludFxuICAgICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgdHkgUHAubnUgaVxuXG4gIGxldCBwcmludF9zaXRlID9zaWdzIHBsYWNlIGYgc2l0ZSA9XG4gICAgbWF0Y2ggcGxhY2Ugd2l0aFxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LnByaW50X3NpdGUgP3NpZ3MgbiBmIHNpdGVcbiAgICB8IEZyZXNoICh0eSwgXykgLT5cbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgc2l0ZVxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyB0eSBmIHNpdGUpXG5cbiAgbGV0IHByaW50X2ludGVybmFsID9zaWdzIHBsYWNlIHNpdGUgZiBpZCA9XG4gICAgbWF0Y2ggcGxhY2Ugd2l0aFxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIG4gc2l0ZSBmIGlkXG4gICAgfCBGcmVzaCAodHksIF8pIC0+XG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpfiVpXCIgc2l0ZSBpZFxuICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyB0eSBzaXRlIGYgKFNvbWUgaWQpKVxuXG4gIGxldCBnZXRfdHlwZSA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQuc29ydCBuXG4gICAgfCBGcmVzaCAoaSwgXykgLT4gaVxuXG4gIGxldCBnZXRfaWQgPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LmlkIG5cbiAgICB8IEZyZXNoIChfLCBpKSAtPiBpXG5cbiAgbGV0IGlzX2ZyZXNoID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIF8gLT4gZmFsc2VcbiAgICB8IEZyZXNoIF8gLT4gdHJ1ZVxuXG4gIGxldCBjb25jcmV0aXplIH5kZWJ1Z19tb2RlIChpbmpfbm9kZXMsIGlual9mcmVzaCkgPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIGlkKSAtPiBnZXQgfmRlYnVnX21vZGUgKG4sIGlkKSBpbmpfbm9kZXMsIEFnZW50LnNvcnQgblxuICAgIHwgRnJlc2ggKHR5LCBpZCkgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBpbmpfZnJlc2ggd2l0aFxuICAgICAgfCBTb21lIHggLT4geCwgdHlcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IHRvX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgdHkpIC0+XG4gICAgICAoYEFzc29jXG4gICAgICAgICBbXG4gICAgICAgICAgICggXCJFeGlzdGluZ1wiLFxuICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIGBBc3NvYyBbIFwiYWdlbnRcIiwgQWdlbnQudG9fanNvbiBuIF07IGBBc3NvYyBbIFwidHlwZVwiLCBgSW50IHR5IF07XG4gICAgICAgICAgICAgICBdICk7XG4gICAgICAgICBdXG4gICAgICAgIDogWW9qc29uLkJhc2ljLnQpXG4gICAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgICAgYEFzc29jIFsgXCJGcmVzaFwiLCBgQXNzb2MgWyBcImlkXCIsIGBJbnQgaWQ7IFwidHlwZVwiLCBgSW50IHR5IF0gXVxuXG4gIGxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiRXhpc3RpbmdcIiwgYExpc3QgbGlzdCkgXSAtPlxuICAgICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbIGBBc3NvYyBbIChcImFnZW50XCIsIGEpIF07IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0eSkgXSBdIC0+XG4gICAgICAgIEV4aXN0aW5nIChBZ2VudC5vZl9qc29uIGEsIHR5KVxuICAgICAgfCB4IDo6IF8gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcbiAgICAgIHwgW10gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCBgTnVsbCkpKVxuICAgIHwgYEFzc29jIFsgKFwiRnJlc2hcIiwgYSkgXSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBgQXNzb2MgWyAoXCJpZFwiLCBgSW50IGlkKTsgKFwidHlwZVwiLCBgSW50IHR5KSBdIC0+IEZyZXNoIChpZCwgdHkpXG4gICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWdlbnRfbmFtZSA9IGludFxudHlwZSBzaXRlX25hbWUgPSBpbnRcbnR5cGUgaW50ZXJuYWxfc3RhdGUgPSBpbnRcbnR5cGUgYmluZGluZ190eXBlID0gYWdlbnRfbmFtZSAqIHNpdGVfbmFtZVxudHlwZSBhYnN0cmFjdCA9IE1hdGNoaW5nLkFnZW50LnRcbnR5cGUgY29uY3JldGUgPSBBZ2VudC50XG50eXBlICdhIHNpdGUgPSAnYSAqIHNpdGVfbmFtZVxuXG50eXBlICdhIHRlc3QgPVxuICB8IElzX0hlcmUgb2YgJ2FcbiAgfCBIYXNfSW50ZXJuYWwgb2YgJ2Egc2l0ZSAqIGludGVybmFsX3N0YXRlXG4gIHwgSXNfRnJlZSBvZiAnYSBzaXRlXG4gIHwgSXNfQm91bmQgb2YgJ2Egc2l0ZVxuICB8IEhhc19CaW5kaW5nX3R5cGUgb2YgJ2Egc2l0ZSAqIGJpbmRpbmdfdHlwZVxuICB8IElzX0JvdW5kX3RvIG9mICdhIHNpdGUgKiAnYSBzaXRlXG5cbnR5cGUgJ2EgYWN0aW9uID1cbiAgfCBDcmVhdGUgb2YgJ2EgKiAoc2l0ZV9uYW1lICogaW50ZXJuYWxfc3RhdGUgb3B0aW9uKSBsaXN0ICgqIHBvdXJxdW9pIMOnYSAqKVxuICB8IE1vZF9pbnRlcm5hbCBvZiAnYSBzaXRlICogaW50ZXJuYWxfc3RhdGVcbiAgfCBCaW5kIG9mICdhIHNpdGUgKiAnYSBzaXRlXG4gIHwgQmluZF90byBvZiAnYSBzaXRlICogJ2Egc2l0ZVxuICB8IEZyZWUgb2YgJ2Egc2l0ZVxuICB8IFJlbW92ZSBvZiAnYVxuXG4oKiBUaGUgc2VtYW50aWNzIG9mIGNvbmNyZXRlIGFjdGlvbnMgc2VlbXMgdG8gYmUgdGhlIGZvbGxvd2luZyBvbmUuXG5cbiAgIC0gV2hlbiBhbiBhZ2VudCBpcyByZW1vdmVkLCBubyBvdGhlciBhY3Rpb24gaXMgc3RvcmVkIGFib3V0IGl0IChpbmNsdWRpbmcgYm9uZCByZWxlYXNpbmcpLlxuICAgLSBDcmVhdGVkIGFnZW50cyBhcmUgY3JlYXRlZCB3aXRob3V0IGRlZmF1bHQgYmluZGluZy9pbnRlcm5hbCBzdGF0ZXMuXG4gICAtIEJvbmRzIGFyZSBpbnNlcnRlZCB0aGFua3MgdG8gdHdvIHN5bW1ldHJpYyBhY3Rpb25zIChCaW5kX3RvIC4uLikgKilcblxubGV0IHdlaWdodCBhY3Rpb24gPVxuICBtYXRjaCBhY3Rpb24gd2l0aFxuICB8IENyZWF0ZSBfIC0+IDFcbiAgfCBNb2RfaW50ZXJuYWwgXyB8IEJpbmQgXyB8IEJpbmRfdG8gXyB8IEZyZWUgXyAtPiAyXG4gIHwgUmVtb3ZlIF8gLT4gMFxuXG5sZXQgd2VpZ2h0X3JldmVyc2UgYWN0aW9uID1cbiAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgfCBDcmVhdGUgXyAtPiAxXG4gIHwgTW9kX2ludGVybmFsIF8gfCBCaW5kIF8gfCBCaW5kX3RvIF8gfCBGcmVlIF8gLT4gMFxuICB8IFJlbW92ZSBfIC0+IDJcblxubGV0IHNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3QgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodCAyXG5sZXQgc29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdF9yZXZlcnNlID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHRfcmV2ZXJzZSAyXG5sZXQgc29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdCA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0IDJcbmxldCBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0X3JldmVyc2UgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodF9yZXZlcnNlIDJcblxudHlwZSAnYSBiaW5kaW5nX3N0YXRlID1cbiAgfCBBTllcbiAgfCBGUkVFXG4gIHwgQk9VTkRcbiAgfCBCT1VORF9UWVBFIG9mIGJpbmRpbmdfdHlwZVxuICB8IEJPVU5EX3RvIG9mICdhIHNpdGVcblxudHlwZSAnYSBldmVudCA9IHtcbiAgdGVzdHM6ICdhIHRlc3QgbGlzdCBsaXN0O1xuICBhY3Rpb25zOiAnYSBhY3Rpb24gbGlzdDtcbiAgc2lkZV9lZmZlY3RzX3NyYzogKCdhIHNpdGUgKiAnYSBiaW5kaW5nX3N0YXRlKSBsaXN0O1xuICBzaWRlX2VmZmVjdHNfZHN0OiAnYSBzaXRlIGxpc3Q7XG4gIGNvbm5lY3Rpdml0eV90ZXN0czogJ2EgdGVzdCBsaXN0O1xufVxuXG5sZXQgZW1wdHlfZXZlbnQgPVxuICB7XG4gICAgdGVzdHMgPSBbXTtcbiAgICBhY3Rpb25zID0gW107XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9IFtdO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPSBbXTtcbiAgICBjb25uZWN0aXZpdHlfdGVzdHMgPSBbXTtcbiAgfVxuXG5sZXQgY29uY3JldGl6ZV9iaW5kaW5nX3N0YXRlIH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgQU5ZIC0+IEFOWVxuICB8IEZSRUUgLT4gRlJFRVxuICB8IEJPVU5EIC0+IEJPVU5EXG4gIHwgQk9VTkRfVFlQRSBidCAtPiBCT1VORF9UWVBFIGJ0XG4gIHwgQk9VTkRfdG8gKHBsLCBzKSAtPlxuICAgIEJPVU5EX3RvIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcblxubGV0IGNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICB8IElzX0hlcmUgcGwgLT4gSXNfSGVyZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwpXG4gIHwgSGFzX0ludGVybmFsICgocGwsIHMpLCBpKSAtPlxuICAgIEhhc19JbnRlcm5hbCAoKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSwgaSlcbiAgfCBJc19GcmVlIChwbCwgcykgLT5cbiAgICBJc19GcmVlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgfCBJc19Cb3VuZCAocGwsIHMpIC0+XG4gICAgSXNfQm91bmQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChwbCwgcyksIHQpIC0+XG4gICAgSGFzX0JpbmRpbmdfdHlwZSAoKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSwgdClcbiAgfCBJc19Cb3VuZF90byAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIElzX0JvdW5kX3RvXG4gICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCcsIHMnKSApXG5cbmxldCBjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICB8IENyZWF0ZSAocGwsIGkpIC0+XG4gICAgQ3JlYXRlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgaSlcbiAgfCBNb2RfaW50ZXJuYWwgKChwbCwgcyksIGkpIC0+XG4gICAgTW9kX2ludGVybmFsICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCBpKVxuICB8IEJpbmQgKChwbCwgcyksIChwbCcsIHMnKSkgLT5cbiAgICBCaW5kXG4gICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCcsIHMnKSApXG4gIHwgQmluZF90byAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIEJpbmRfdG9cbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcbiAgfCBGcmVlIChwbCwgcykgLT4gRnJlZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gIHwgUmVtb3ZlIHBsIC0+IFJlbW92ZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwpXG5cbmxldCB0cnlfY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qMmdyYXBoIGFjdGlvbnMgPVxuICB0cnkgU29tZSAoY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qMmdyYXBoIGFjdGlvbnMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbigqIFRoZSBhY3Rpb24gaXMgZGVhbGluZyB3aXRoIGEgZnJlc2ggYWdlbnQgKilcblxubGV0IGNvbmNyZXRpemVfZXZlbnQgfmRlYnVnX21vZGUgaW5qMmdyYXBoIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdC5tYXAgKExpc3QucmV2X21hcCAoY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCkpIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9XG4gICAgICAoKiBhY3Rpb25zIGFyZSByZW9yZGVyZWQgdGhlIGZvbGxvd2luZyB3YXk6XG4gICAgICAgICAxKSBSZW1vdmUgYWN0aW9uc1xuICAgICAgICAgMikgQ3JlYXRpb24gYWN0aW9uc1xuICAgICAgICAgMykgQW55dGhpbmcgZWxzZS4qKVxuICAgICAgc29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdFxuICAgICAgICAoTGlzdC5yZXZfbWFwIChjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGgpIGUuYWN0aW9ucyk7XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAoKHBsLCBzKSwgYikgLT5cbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgICAgICBjb25jcmV0aXplX2JpbmRpbmdfc3RhdGUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIGIgKSlcbiAgICAgICAgZS5zaWRlX2VmZmVjdHNfc3JjO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKHBsLCBzKSAtPiBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgICAgICAgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0LnJldl9tYXAgKGNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGgpIGUuY29ubmVjdGl2aXR5X3Rlc3RzO1xuICB9XG5cbmxldCBtYXBfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFcbiAgfCBIYXNfSW50ZXJuYWwgKChhLCBfKSwgXylcbiAgfCBJc19GcmVlIChhLCBfKVxuICB8IElzX0JvdW5kIChhLCBfKVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChhLCBfKSwgXylcbiAgfCBJc19Cb3VuZF90byAoKGEsIF8pLCBfKSAtPlxuICAgIGYgYVxuXG5sZXQgbWFwX2FjdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKGEsIF8pXG4gIHwgTW9kX2ludGVybmFsICgoYSwgXyksIF8pXG4gIHwgQmluZCAoKGEsIF8pLCBfKVxuICB8IEJpbmRfdG8gKChhLCBfKSwgXylcbiAgfCBGcmVlIChhLCBfKVxuICB8IFJlbW92ZSBhIC0+XG4gICAgZiBhXG5cbmxldCBtYXRjaF90ZXN0cyA9IGZ1bmN0aW9uXG4gICgqIGFic3RyYWN0LCBjb25jcmV0ZSopXG4gIHwgSXNfSGVyZSBhLCBJc19IZXJlIGIgLT4gTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICB8IEhhc19JbnRlcm5hbCAoKGEsIHMpLCBpKSwgSGFzX0ludGVybmFsICgoYiwgdCksIGopIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdCAmJiBpID0galxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChhLCBzKSwgYyksIEhhc19CaW5kaW5nX3R5cGUgKChiLCB0KSwgZCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0ICYmIGMgPSBkXG4gIHwgSXNfRnJlZSAoYSwgcyksIElzX0ZyZWUgKGIsIHQpIHwgSXNfQm91bmQgKGEsIHMpLCBJc19Cb3VuZCAoYiwgdCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0XG4gIHwgSXNfQm91bmRfdG8gKChhLCBzKSwgKGMsIHUpKSwgSXNfQm91bmRfdG8gKChiLCB0KSwgKGQsIHYpKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgICAmJiBzID0gdFxuICAgICYmIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGMgPSBBZ2VudC5zb3J0IGRcbiAgICAmJiB1ID0gdlxuICB8IElzX0hlcmUgXywgX1xuICB8IEhhc19JbnRlcm5hbCBfLCBfXG4gIHwgSXNfRnJlZSBfLCBfXG4gIHwgSXNfQm91bmQgXywgX1xuICB8IElzX0JvdW5kX3RvIF8sIF9cbiAgfCBIYXNfQmluZGluZ190eXBlIF8sIF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgbWF0Y2hfYWN0aW9ucyA9IGZ1bmN0aW9uXG4gICgqIGFic3RyYWN0LCBjb25jcmV0ZSopXG4gIHwgQ3JlYXRlIChhLCBhbHMpLCBDcmVhdGUgKGIsIGJscykgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gICAgJiYgTGlzdC5mb2xkX2xlZnQyXG4gICAgICAgICAoZnVuIG9rIChzLCBpKSAodCwgaikgLT4gb2sgJiYgcyA9IHQgJiYgaSA9IGopXG4gICAgICAgICB0cnVlIGFscyBibHNcbiAgfCBNb2RfaW50ZXJuYWwgKChhLCBzKSwgaSksIE1vZF9pbnRlcm5hbCAoKGIsIHQpLCBqKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHQgJiYgaSA9IGpcbiAgfCBCaW5kICgoYSwgcyksIChjLCB1KSksIEJpbmQgKChiLCB0KSwgKGQsIHYpKVxuICB8IEJpbmRfdG8gKChhLCBzKSwgKGMsIHUpKSwgQmluZF90byAoKGIsIHQpLCAoZCwgdikpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICAgICYmIHMgPSB0XG4gICAgJiYgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYyA9IEFnZW50LnNvcnQgZFxuICAgICYmIHUgPSB2XG4gIHwgRnJlZSAoYSwgcyksIEZyZWUgKGIsIHQpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdFxuICB8IFJlbW92ZSBhLCBSZW1vdmUgYiAtPiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gIHwgQ3JlYXRlIF8sIF9cbiAgfCBNb2RfaW50ZXJuYWwgXywgX1xuICB8IEJpbmQgXywgX1xuICB8IEJpbmRfdG8gXywgX1xuICB8IEZyZWUgXywgX1xuICB8IFJlbW92ZSBfLCBfIC0+XG4gICAgZmFsc2VcblxubGV0IGdldF9pZHMgZiBhdXggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGEgLT5cbiAgICAgIGxldCBpZCA9IGYgYSBpblxuICAgICAgaWYgTGlzdC5tZW0gaWQgYWNjIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIGlkIDo6IGFjYylcbiAgICBhdXhcblxubGV0IHJlYyBtYXRjaF9xdWFya3MgYV9xdWFya3MgY19xdWFya3MgZm1hdGNoID1cbiAgbWF0Y2ggYV9xdWFya3Mgd2l0aFxuICB8IGFxIDo6IGFxcyAtPlxuICAgIGxldCBjcXMsIHJlc3QgPSBMaXN0LnBhcnRpdGlvbiAoZnVuIGNxIC0+IGZtYXRjaCAoYXEsIGNxKSkgY19xdWFya3MgaW5cbiAgICBpZiBjcXMgPSBbXSB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoX3F1YXJrcyBhcXMgcmVzdCBmbWF0Y2hcbiAgfCBbXSAtPiBjX3F1YXJrcyA9IFtdXG5cbmxldCByZWMgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGN0ZXN0cyBjYWN0aW9ucyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcImFic3RyYWN0IGFuZCBjb25jcmV0IHF1YXJrcyBkb24ndCBtYXRjaFwiKSlcbiAgfCBjaWQgOjogdGwgLT5cbiAgICBsZXQgY3Rlc3RzJyA9XG4gICAgICBMaXN0LmZpbHRlciAoZnVuIHRlc3QgLT4gbWFwX3Rlc3QgKGZ1biBhIC0+IEFnZW50LmlkIGEgPSBjaWQpIHRlc3QpIGN0ZXN0c1xuICAgIGluXG4gICAgbGV0IGNhY3Rpb25zJyA9XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuIGFjdCAtPiBtYXBfYWN0aW9uIChmdW4gYSAtPiBBZ2VudC5pZCBhID0gY2lkKSBhY3QpXG4gICAgICAgIGNhY3Rpb25zXG4gICAgaW5cbiAgICBpZlxuICAgICAgbWF0Y2hfcXVhcmtzIHRlc3RzIGN0ZXN0cycgbWF0Y2hfdGVzdHNcbiAgICAgICYmIG1hdGNoX3F1YXJrcyBhY3Rpb25zIGNhY3Rpb25zJyBtYXRjaF9hY3Rpb25zXG4gICAgdGhlblxuICAgICAgY2lkXG4gICAgZWxzZVxuICAgICAgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGN0ZXN0cyBjYWN0aW9ucyB0bFxuXG5sZXQgbWF0Y2hpbmdfYWJzdHJhY3RfY29uY3JldGUgfmRlYnVnX21vZGUgYWUgY2UgPVxuICBsZXQgYWVfdGVzdHMgPSBMaXN0LmZsYXR0ZW4gYWUudGVzdHMgaW5cbiAgbGV0IGNlX3Rlc3RzID0gTGlzdC5mbGF0dGVuIGNlLnRlc3RzIGluXG4gIGxldCBhYnN0cmFjdF9pZHMgPVxuICAgIGdldF9pZHNcbiAgICAgIChtYXBfYWN0aW9uIE1hdGNoaW5nLkFnZW50LmdldF9pZClcbiAgICAgIChnZXRfaWRzIChtYXBfdGVzdCBNYXRjaGluZy5BZ2VudC5nZXRfaWQpIFtdIGFlX3Rlc3RzKVxuICAgICAgYWUuYWN0aW9uc1xuICBpblxuICBsZXQgY29uY3JldGVfaWRzID1cbiAgICBnZXRfaWRzIChtYXBfYWN0aW9uIEFnZW50LmlkKVxuICAgICAgKGdldF9pZHMgKG1hcF90ZXN0IEFnZW50LmlkKSBbXSBjZV90ZXN0cylcbiAgICAgIGNlLmFjdGlvbnNcbiAgaW5cbiAgbGV0IGF2YWlsYWJsZV9pZHMgdXNlZCA9XG4gICAgTGlzdC5maWx0ZXJcbiAgICAgIChmdW4gaSAtPiBub3QgKE1vZHMuSW50U2V0Lm1lbSBpIChSZW5hbWluZy5pbWFnZSB1c2VkKSkpXG4gICAgICBjb25jcmV0ZV9pZHNcbiAgaW5cbiAgbGV0IHBhcnRpdGlvbiBmbWFwIGkgPVxuICAgIExpc3QucGFydGl0aW9uIChmdW4gcSAtPiBmbWFwIChmdW4gYSAtPiBNYXRjaGluZy5BZ2VudC5nZXRfaWQgYSA9IGkpIHEpXG4gIGluXG4gIGxldCBtYXRjaGluZyA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCBpbmplY3RpdmUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBpIC0+XG4gICAgICAgIGFjY1xuICAgICAgICAmJlxuICAgICAgICBsZXQgdGVzdHMsIF8gPSBwYXJ0aXRpb24gbWFwX3Rlc3QgaSBhZV90ZXN0cyBpblxuICAgICAgICBsZXQgYWN0aW9ucywgXyA9IHBhcnRpdGlvbiBtYXBfYWN0aW9uIGkgYWUuYWN0aW9ucyBpblxuICAgICAgICBsZXQgaiA9XG4gICAgICAgICAgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGNlX3Rlc3RzIGNlLmFjdGlvbnMgKGF2YWlsYWJsZV9pZHMgbWF0Y2hpbmcpXG4gICAgICAgIGluXG4gICAgICAgIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGkgaiBtYXRjaGluZylcbiAgICAgIHRydWUgYWJzdHJhY3RfaWRzXG4gIGluXG4gIGlmIGluamVjdGl2ZSB0aGVuXG4gICAgU29tZSBtYXRjaGluZ1xuICBlbHNlXG4gICAgTm9uZVxuXG5sZXQgc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYgKChpZCwgbmEpIGFzIGFnZW50KSA9XG4gIHRyeVxuICAgIGlmIGYgaWQgPT0gaWQgdGhlblxuICAgICAgYWdlbnRcbiAgICBlbHNlXG4gICAgICBmIGlkLCBuYVxuICB3aXRoIE5vdF9mb3VuZCAtPiBhZ2VudFxuXG5sZXQgc3Vic3RfbWFwX3NpdGUgZiAoKGFnLCBzKSBhcyBzaXRlKSA9XG4gIGxldCBhZycgPSBmIGFnIGluXG4gIGlmIGFnID09IGFnJyB0aGVuXG4gICAgc2l0ZVxuICBlbHNlXG4gICAgYWcnLCBzXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFnZW50IGFzIHggLT5cbiAgICBsZXQgYWdlbnQnID0gZiBhZ2VudCBpblxuICAgIGlmIGFnZW50ID09IGFnZW50JyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfSGVyZSBhZ2VudCdcbiAgfCBIYXNfSW50ZXJuYWwgKHNpdGUsIGludGVybmFsX3N0YXRlKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSGFzX0ludGVybmFsIChzaXRlJywgaW50ZXJuYWxfc3RhdGUpXG4gIHwgSXNfRnJlZSBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19GcmVlIHNpdGUnXG4gIHwgSXNfQm91bmQgc2l0ZSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfQm91bmQgc2l0ZSdcbiAgfCBIYXNfQmluZGluZ190eXBlIChzaXRlLCBiaW5kaW5nX3R5cGUpIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBIYXNfQmluZGluZ190eXBlIChzaXRlJywgYmluZGluZ190eXBlKVxuICB8IElzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIGFzIHggLT5cbiAgICBsZXQgc2l0ZTEnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlMSBpblxuICAgIGxldCBzaXRlMicgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUyIGluXG4gICAgaWYgc2l0ZTEgPT0gc2l0ZTEnICYmIHNpdGUyID09IHNpdGUyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfQm91bmRfdG8gKHNpdGUxJywgc2l0ZTInKVxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3RcbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF90ZXN0IH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZicgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYWdlbnQsIGxpc3QpIGFzIHggLT5cbiAgICBsZXQgYWdlbnQnID0gZicgYWdlbnQgaW5cbiAgICBpZiBhZ2VudCA9PSBhZ2VudCcgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIENyZWF0ZSAoYWdlbnQnLCBsaXN0KVxuICB8IE1vZF9pbnRlcm5hbCAoc2l0ZSwgaSkgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYnIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBNb2RfaW50ZXJuYWwgKHNpdGUnLCBpKVxuICB8IEJpbmQgKHMxLCBzMikgYXMgeCAtPlxuICAgIGxldCBzMScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMSBpblxuICAgIGxldCBzMicgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMiBpblxuICAgIGlmIHMxID09IHMxJyAmJiBzMiA9PSBzMicgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJpbmQgKHMxJywgczInKVxuICB8IEJpbmRfdG8gKHMxLCBzMikgYXMgeCAtPlxuICAgIGxldCBzMScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMSBpblxuICAgIGxldCBzMicgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMiBpblxuICAgIGlmIHMxID09IHMxJyAmJiBzMiA9PSBzMicgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJpbmRfdG8gKHMxJywgczInKVxuICB8IEZyZWUgc2l0ZSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZicgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEZyZWUgc2l0ZSdcbiAgfCBSZW1vdmUgYWdlbnQgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmIGFnZW50IGluXG4gICAgaWYgYWdlbnQgPT0gYWdlbnQnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBSZW1vdmUgYWdlbnQnXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIGYgeCA9IHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZiB4XG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uXG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3RfYWN0aW9uIH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwX2JpbmRpbmdfc3RhdGUgZiA9IGZ1bmN0aW9uXG4gIHwgKEFOWSB8IEZSRUUgfCBCT1VORCB8IEJPVU5EX1RZUEUgXykgYXMgeCAtPiB4XG4gIHwgQk9VTkRfdG8gKGFnLCBzKSBhcyB4IC0+XG4gICAgbGV0IGFnJyA9IGYgYWcgaW5cbiAgICBpZiBhZyA9PSBhZycgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJPVU5EX3RvIChhZycsIHMpXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgZiAoKHNpdGUsIGJzdGF0ZSkgYXMgeCkgPVxuICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgbGV0IGJzdGF0ZScgPSBzdWJzdF9tYXBfYmluZGluZ19zdGF0ZSBmIGJzdGF0ZSBpblxuICBpZiBzaXRlID09IHNpdGUnICYmIGJzdGF0ZSA9PSBic3RhdGUnIHRoZW5cbiAgICB4XG4gIGVsc2VcbiAgICBzaXRlJywgYnN0YXRlJ1xuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0XG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3Rfc2lkZV9lZmZlY3QgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCBmIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikpXG4gICAgICAgIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gZikgZS5hY3Rpb25zO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IGYpIGUuc2lkZV9lZmZlY3RzX3NyYztcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX3NpdGUgZikgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSBlLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgfVxuXG5sZXQgc3Vic3RfbWFwMl9hZ2VudF9pbl9ldmVudCBmIGYnIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikpXG4gICAgICAgIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZicpIGUuYWN0aW9ucztcbiAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCBmKSBlLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9zaXRlIGYpIGUuc2lkZV9lZmZlY3RzX2RzdDtcbiAgICBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikgZS5jb25uZWN0aXZpdHlfdGVzdHM7XG4gIH1cblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGYgZicgeCA9XG4gIHN1YnN0X21hcDJfYWdlbnRfaW5fZXZlbnRcbiAgICAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpXG4gICAgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmJylcbiAgICB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudFxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X2V2ZW50IH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2V2ZW50IChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzIGYgKGFnZW50LCBpZCkgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgIGFnZW50XG4gICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWdlbnQpXG4gICAgaWRcblxubGV0IHByaW50X2NvbmNyZXRlX3Rlc3QgP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBhZ2VudCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19IZXJlKCVhKVwiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZ2VudFxuICB8IEhhc19JbnRlcm5hbCAoKGFnLCBpZCksIGludCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSGFzX0ludGVybmFsKCVhLiVhKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgYWcgaWQpXG4gICAgICBpbnRcbiAgfCBJc19GcmVlIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfRnJlZSglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IElzX0JvdW5kIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfQm91bmQoJWEpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgfCBIYXNfQmluZGluZ190eXBlIChzaXRlLCAodHksIHNpZCkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJ0eXBlKCVhLCV0KVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gICAgICAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWkuJWlcIiB0eSBzaWRcbiAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgdHlcbiAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5KVxuICAgICAgICAgICAgc2lkKVxuICB8IElzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0JvdW5kKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG5cbmxldCBwcmludF9jb25jcmV0ZV9hY3Rpb24gP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlICgoKF8sIHR5KSBhcyBhZ2VudCksIGxpc3QpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkNyZWF0ZSglYVtAWzxoPiVhQF1dKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnZW50XG4gICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgKHgsIHkpIC0+XG4gICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIHR5IHggZiB5XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCB5IHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIHhcbiAgICAgICAgICAgICB8IFNvbWUgeSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWkuJWlcIiB4IHkpKSlcbiAgICAgIGxpc3RcbiAgfCBNb2RfaW50ZXJuYWwgKChhZywgaWQpLCBpbnQpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIk1vZCglYS4lYSlcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIGFnIGlkKVxuICAgICAgaW50XG4gIHwgQmluZCAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJCaW5kKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG4gIHwgQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJCaW5kX3RvKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG4gIHwgRnJlZSBzaXRlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkZyZWUoJWEpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgfCBSZW1vdmUgYWdlbnQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiUmVtb3ZlKCVhKVwiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZ2VudFxuXG5sZXQgcHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZSA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiKlwiXG4gIHwgRlJFRSAtPiAoKVxuICB8IEJPVU5EIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiFfXCJcbiAgfCBCT1VORF9UWVBFIChzLCBhKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIhJWEuJWFcIlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIGFcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIHNcbiAgfCBCT1VORF90byAoKGFnX2lkLCBhZyksIHMpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYV8laS4lYVwiXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lnc1xuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBhZyBhZ19pZFxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ1xuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBzXG5cbmxldCBqc29uX2RpY3Rpb25uYXJ5ID1cbiAgXCJcXFwiYmluZGluZ190eXBlXFxcIjp7XFxcInR5cGVcXFwiOjAsXFxcInNpdGVcXFwiOjF9LFxcXCJxdWFya1xcXCI6e1xcXCJhZ2VudFxcXCI6MCxcXFwic2l0ZVxcXCI6MX0sXFxcInRlc3RcXFwiOltcXFwiSXNfaGVyZVxcXCIsXFxcIkhhc19JbnRlcm5hbFxcXCIsXFxcIklzX0ZyZWVcXFwiLFxcXCJJc19Cb3VuZFxcXCIsXFxcIkhhc19CaW5kaW5nX3R5cGVcXFwiLFxcXCJJc19Cb3VuZF90b1xcXCJdLFxcXCJhY3Rpb25zXFxcIjpbXFxcIkNyZWF0ZVxcXCIsXFxcIk1vZF9pbnRlcm5hbFxcXCIsXFxcIkJpbmRcXFwiLFxcXCJCaW5kX3RvXFxcIixcXFwiRnJlZVxcXCIsXFxcIlJlbW92ZVxcXCJdLFxcXCJiaW5kaW5nX3N0YXRlXFxcIjpbXFxcIkFOWVxcXCIsXFxcIkZSRUVcXFwiLFxcXCJCT1VORFxcXCIsXFxcIkJPVU5EX1RZUEVcXFwiLFxcXCJCT1VORF90b1xcXCJdLFxcXCJldmVudFxcXCI6e1xcXCJ0ZXN0c1xcXCI6MCxcXFwiYWN0aW9uc1xcXCI6MSxcXFwic2lkZV9lZmZlY3Rfc3JjXFxcIjoyLFxcXCJzaWRlX2VmZmVjdF9kc3RcXFwiOjMsXFxcImNvbm5lY3Rpdml0eV90ZXN0c1xcXCI6NH1cIlxuXG5sZXQgd3JpdGVfYmluZGluZ190eXBlIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfYmluZGluZ190eXBlIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9pbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGJcblxubGV0IGJpbmRpbmdfdHlwZV90b19qc29uICh0eSwgcykgPSBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdXG5cbmxldCBiaW5kaW5nX3R5cGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IHR5OyBgSW50IHMgXSAtPiB0eSwgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgYmluZGluZ190eXBlXCIsIHgpKVxuXG5sZXQgd3JpdGVfcXVhcmsgZiBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIGYgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBhXG5cbmxldCByZWFkX3F1YXJrIGYgcCBsYiA9IEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIGYgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGJcbmxldCBxdWFya190b19qc29uIGYgKGFnLCBzKSA9IGBMaXN0IFsgZiBhZzsgYEludCBzIF1cblxubGV0IHF1YXJrX29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBhZzsgYEludCBzIF0gLT4gZiBhZywgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHF1YXJrXCIsIHgpKVxuXG5sZXQgd3JpdGVfdGVzdCBmIG9iIHQgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCB0IHdpdGhcbiAgICB8IElzX0hlcmUgYSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7IChmdW4gbyAtPiBmIG8gYSkgXVxuICAgIHwgSGFzX0ludGVybmFsIChzLCBpKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGkpO1xuICAgICAgXVxuICAgIHwgSXNfRnJlZSBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMik7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXVxuICAgIHwgSXNfQm91bmQgcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF1cbiAgICB8IEhhc19CaW5kaW5nX3R5cGUgKHMsIGIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gb2IgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiA0KTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX2JpbmRpbmdfdHlwZSBvYiBiKTtcbiAgICAgIF1cbiAgICB8IElzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gb2IgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiA1KTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMxKTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMyKTtcbiAgICAgIF0pXG5cbmxldCByZWFkX3Rlc3QgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCB5ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIElzX0hlcmUgeVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgaSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIEhhc19JbnRlcm5hbCAocywgaSlcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfRnJlZSBzXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIElzX0JvdW5kIHNcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IGJpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gcmVhZF9iaW5kaW5nX3R5cGUgc3QgYiBpblxuICAgICAgICBIYXNfQmluZGluZ190eXBlIChzLCBiaSlcbiAgICAgIHwgNSAtPlxuICAgICAgICBsZXQgczEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBzMiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfQm91bmRfdG8gKHMxLCBzMilcbiAgICAgIHwgXyAtPiBZb2pzb24uanNvbl9lcnJvciBcIldyb25nIHRlc3RcIiAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCB0ZXN0X3RvX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBhIC0+IGBMaXN0IFsgYEludCAwOyBmIGEgXVxuICB8IEhhc19JbnRlcm5hbCAocywgaSkgLT4gYExpc3QgWyBgSW50IDE7IHF1YXJrX3RvX2pzb24gZiBzOyBgSW50IGkgXVxuICB8IElzX0ZyZWUgcyAtPiBgTGlzdCBbIGBJbnQgMjsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IElzX0JvdW5kIHMgLT4gYExpc3QgWyBgSW50IDM7IHF1YXJrX3RvX2pzb24gZiBzIF1cbiAgfCBIYXNfQmluZGluZ190eXBlIChzLCBiKSAtPlxuICAgIGBMaXN0IFsgYEludCA0OyBxdWFya190b19qc29uIGYgczsgYmluZGluZ190eXBlX3RvX2pzb24gYiBdXG4gIHwgSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICBgTGlzdCBbIGBJbnQgNTsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuXG5sZXQgdGVzdF9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwOyBhIF0gLT4gSXNfSGVyZSAoZiBhKVxuICB8IGBMaXN0IFsgYEludCAxOyBzOyBgSW50IGkgXSAtPiBIYXNfSW50ZXJuYWwgKHF1YXJrX29mX2pzb24gZiBzLCBpKVxuICB8IGBMaXN0IFsgYEludCAyOyBzIF0gLT4gSXNfRnJlZSAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDM7IHMgXSAtPiBJc19Cb3VuZCAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDQ7IHM7IGIgXSAtPlxuICAgIEhhc19CaW5kaW5nX3R5cGUgKHF1YXJrX29mX2pzb24gZiBzLCBiaW5kaW5nX3R5cGVfb2ZfanNvbiBiKVxuICB8IGBMaXN0IFsgYEludCA1OyBzMTsgczIgXSAtPlxuICAgIElzX0JvdW5kX3RvIChxdWFya19vZl9qc29uIGYgczEsIHF1YXJrX29mX2pzb24gZiBzMilcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIHRlc3RcIiwgeCkpXG5cbmxldCB3cml0ZV9hY3Rpb24gZiBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggYSB3aXRoXG4gICAgfCBDcmVhdGUgKGFnLCBpbmZvKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApO1xuICAgICAgICAoZnVuIG8gLT4gZiBvIGFnKTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfb3B0aW9uIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpKVxuICAgICAgICAgICAgbyBpbmZvKTtcbiAgICAgIF1cbiAgICB8IE1vZF9pbnRlcm5hbCAocywgaSkgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyBpKTtcbiAgICAgIF1cbiAgICB8IEJpbmQgKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczIpO1xuICAgICAgXVxuICAgIHwgQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMik7XG4gICAgICBdXG4gICAgfCBGcmVlIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA0KTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdXG4gICAgfCBSZW1vdmUgYSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNSk7IChmdW4gbyAtPiBmIG8gYSkgXSlcblxubGV0IHJlYWRfYWN0aW9uIGYgc3QgYiA9XG4gIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAoZnVuIHN0IGIgLT4gZnVuY3Rpb25cbiAgICAgIHwgMCAtPlxuICAgICAgICBsZXQgYWcgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfb3B0aW9uIFlvanNvbi5CYXNpYy5yZWFkX2ludCkpKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBDcmVhdGUgKGFnLCBpbmZvKVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgaSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIE1vZF9pbnRlcm5hbCAocywgaSlcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQgczEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBzMiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgQmluZCAoczEsIHMyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCaW5kX3RvIChzMSwgczIpXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEZyZWUgc1xuICAgICAgfCA1IC0+XG4gICAgICAgIGxldCBhID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIFJlbW92ZSBhXG4gICAgICB8IF8gLT4gWW9qc29uLmpzb25fZXJyb3IgXCJXcm9uZyBhY3Rpb25cIiAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCBhY3Rpb25fdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKGFnLCBpbmZvKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMDtcbiAgICAgICAgZiBhZztcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuIChzLCBpKSAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgKGBJbnQgc1xuICAgICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBbIGBJbnQgaSBdKSkpXG4gICAgICAgICAgICAgaW5mbyk7XG4gICAgICBdXG4gIHwgTW9kX2ludGVybmFsIChzLCBpKSAtPiBgTGlzdCBbIGBJbnQgMTsgcXVhcmtfdG9fanNvbiBmIHM7IGBJbnQgaSBdXG4gIHwgQmluZCAoczEsIHMyKSAtPiBgTGlzdCBbIGBJbnQgMjsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuICB8IEJpbmRfdG8gKHMxLCBzMikgLT4gYExpc3QgWyBgSW50IDM7IHF1YXJrX3RvX2pzb24gZiBzMTsgcXVhcmtfdG9fanNvbiBmIHMyIF1cbiAgfCBGcmVlIHMgLT4gYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzIF1cbiAgfCBSZW1vdmUgYSAtPiBgTGlzdCBbIGBJbnQgNTsgZiBhIF1cblxubGV0IGFjdGlvbl9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwOyBhZzsgYExpc3QgaW5mbyBdIC0+XG4gICAgQ3JlYXRlXG4gICAgICAoIGYgYWcsXG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBMaXN0IFsgYEludCBzIF0gLT4gcywgTm9uZVxuICAgICAgICAgICAgfCBgTGlzdCBbIGBJbnQgczsgYEludCBpIF0gLT4gcywgU29tZSBpXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhY3Rpb24gaW5mb1wiLCB4KSkpXG4gICAgICAgICAgaW5mbyApXG4gIHwgYExpc3QgWyBgSW50IDE7IHM7IGBJbnQgaSBdIC0+IE1vZF9pbnRlcm5hbCAocXVhcmtfb2ZfanNvbiBmIHMsIGkpXG4gIHwgYExpc3QgWyBgSW50IDI7IHMxOyBzMiBdIC0+IEJpbmQgKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IGBMaXN0IFsgYEludCAzOyBzMTsgczIgXSAtPiBCaW5kX3RvIChxdWFya19vZl9qc29uIGYgczEsIHF1YXJrX29mX2pzb24gZiBzMilcbiAgfCBgTGlzdCBbIGBJbnQgNDsgcyBdIC0+IEZyZWUgKHF1YXJrX29mX2pzb24gZiBzKVxuICB8IGBMaXN0IFsgYEludCA1OyBhIF0gLT4gUmVtb3ZlIChmIGEpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBhY3Rpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9iaW5kaW5nX3N0YXRlIGYgb2IgYmYgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBiZiB3aXRoXG4gICAgfCBBTlkgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApIF1cbiAgICB8IEZSRUUgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpIF1cbiAgICB8IEJPVU5EIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKSBdXG4gICAgfCBCT1VORF9UWVBFIGIgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTsgKGZ1biBvIC0+IHdyaXRlX2JpbmRpbmdfdHlwZSBvIGIpO1xuICAgICAgXVxuICAgIHwgQk9VTkRfdG8gcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF0pXG5cbmxldCByZWFkX2JpbmRpbmdfc3RhdGUgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+IEFOWVxuICAgICAgfCAxIC0+IEZSRUVcbiAgICAgIHwgMiAtPiBCT1VORFxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBiID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gcmVhZF9iaW5kaW5nX3R5cGUgc3QgYiBpblxuICAgICAgICBCT1VORF9UWVBFIGJcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgQk9VTkRfdG8gc1xuICAgICAgfCBfIC0+IFlvanNvbi5qc29uX2Vycm9yIFwiV3JvbmcgYmluZGluZyBzdGF0ZVwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IGJpbmRpbmdfc3RhdGVfdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gYExpc3QgWyBgSW50IDAgXVxuICB8IEZSRUUgLT4gYExpc3QgWyBgSW50IDEgXVxuICB8IEJPVU5EIC0+IGBMaXN0IFsgYEludCAyIF1cbiAgfCBCT1VORF9UWVBFIGIgLT4gYExpc3QgWyBgSW50IDM7IGJpbmRpbmdfdHlwZV90b19qc29uIGIgXVxuICB8IEJPVU5EX3RvIHMgLT4gYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzIF1cblxubGV0IGJpbmRpbmdfc3RhdGVfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgMCBdIC0+IEFOWVxuICB8IGBMaXN0IFsgYEludCAxIF0gLT4gRlJFRVxuICB8IGBMaXN0IFsgYEludCAyIF0gLT4gQk9VTkRcbiAgfCBgTGlzdCBbIGBJbnQgMzsgYExpc3QgWyBgSW50IHR5OyBgSW50IHMgXSBdIC0+IEJPVU5EX1RZUEUgKHR5LCBzKVxuICB8IGBMaXN0IFsgYEludCA0OyBgTGlzdCBbIGFnOyBgSW50IHMgXSBdIC0+IEJPVU5EX3RvIChmIGFnLCBzKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGJpbmRpbmdfc3RhdGVcIiwgeCkpXG5cbmxldCB3cml0ZV9ldmVudCBmIG9iIGUgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIFtcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0IChKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV90ZXN0IGYpKSBvIGUudGVzdHMpO1xuICAgICAgKGZ1biBvIC0+IEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX2FjdGlvbiBmKSBvIGUuYWN0aW9ucyk7XG4gICAgICAoZnVuIG8gLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgKHdyaXRlX3F1YXJrIGYpICh3cml0ZV9iaW5kaW5nX3N0YXRlIGYpKVxuICAgICAgICAgIG8gZS5zaWRlX2VmZmVjdHNfc3JjKTtcbiAgICAgIChmdW4gbyAtPiBKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV9xdWFyayBmKSBvIGUuc2lkZV9lZmZlY3RzX2RzdCk7XG4gICAgICAoZnVuIG8gLT4gSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfdGVzdCBmKSBvIGUuY29ubmVjdGl2aXR5X3Rlc3RzKTtcbiAgICBdXG5cbmxldCByZWFkX2V2ZW50IGYgc3QgYiA9XG4gIEpzb25VdGlsLnJlYWRfdmFyaWFudFxuICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX3Rlc3QgZikpKVxuICAgIChmdW4gc3QgYiB0ZXN0cyAtPlxuICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF9hY3Rpb24gZikpIHN0IGJcbiAgICAgIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgKHJlYWRfcXVhcmsgZikgKHJlYWRfYmluZGluZ19zdGF0ZSBmKSkpXG4gICAgICAgICAgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfcXVhcmsgZikpIHN0IGJcbiAgICAgIGluXG4gICAgICBsZXQgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfdGVzdCBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIHsgdGVzdHM7IGFjdGlvbnM7IHNpZGVfZWZmZWN0c19zcmM7IHNpZGVfZWZmZWN0c19kc3Q7IGNvbm5lY3Rpdml0eV90ZXN0cyB9KVxuICAgIHN0IGJcblxubGV0IGV2ZW50X3RvX2pzb24gZiBlID1cbiAgYExpc3RcbiAgICBbXG4gICAgICBgTGlzdFxuICAgICAgICAoTGlzdC5tYXAgKGZ1biBjY3QgLT4gYExpc3QgKExpc3QubWFwICh0ZXN0X3RvX2pzb24gZikgY2N0KSkgZS50ZXN0cyk7XG4gICAgICBgTGlzdCAoTGlzdC5tYXAgKGFjdGlvbl90b19qc29uIGYpIGUuYWN0aW9ucyk7XG4gICAgICBgTGlzdFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biAocywgYikgLT5cbiAgICAgICAgICAgICBgTGlzdCBbIHF1YXJrX3RvX2pzb24gZiBzOyBiaW5kaW5nX3N0YXRlX3RvX2pzb24gZiBiIF0pXG4gICAgICAgICAgIGUuc2lkZV9lZmZlY3RzX3NyYyk7XG4gICAgICBgTGlzdCAoTGlzdC5tYXAgKHF1YXJrX3RvX2pzb24gZikgZS5zaWRlX2VmZmVjdHNfZHN0KTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAodGVzdF90b19qc29uIGYpIGUuY29ubmVjdGl2aXR5X3Rlc3RzKTtcbiAgICBdXG5cbmxldCBldmVudF9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYExpc3QgdDsgYExpc3QgYTsgYExpc3Qgc19lX3NyYzsgYExpc3Qgc19lX2RzdDsgYExpc3QgY190IF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IGNjbCAtPiBMaXN0Lm1hcCAodGVzdF9vZl9qc29uIGYpIGNjbFxuICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICB0O1xuICAgICAgICAgYWN0aW9ucyA9IExpc3QubWFwIChhY3Rpb25fb2ZfanNvbiBmKSBhO1xuICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgczsgYiBdIC0+IHF1YXJrX29mX2pzb24gZiBzLCBiaW5kaW5nX3N0YXRlX29mX2pzb24gZiBiXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHNfZV9zcmM7XG4gICAgICAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdC5tYXAgKHF1YXJrX29mX2pzb24gZikgc19lX2RzdDtcbiAgICAgICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9IExpc3QubWFwICh0ZXN0X29mX2pzb24gZikgY190O1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZXZlbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGV2ZW50XCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFRyYW5zZm9ybWF0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBZ2VudCBvZiAnYVxuICAgIHwgRnJlZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBMaW5rZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlICogJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIG9mICdhIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgb2ZcbiAgICAgICAgJ2EgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZSAqIEluc3RhbnRpYXRpb24uaW50ZXJuYWxfc3RhdGVcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIG9mICdhIEluc3RhbnRpYXRpb24uc2l0ZVxuXG4gIGxldCB0b195b2pzb24gPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBgQXNzb2MgWyBcIkFnZW50XCIsIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhIF1cbiAgICB8IEZyZWVkIChhLCBzKSAtPlxuICAgICAgYEFzc29jIFsgXCJGcmVlZFwiLCBgTGlzdCBbIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhOyBgSW50IHMgXSBdXG4gICAgfCBMaW5rZWQgKChhLCBzKSwgKGIsIHQpKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiTGlua2VkXCIsXG4gICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7XG4gICAgICAgICAgICAgICAgYEludCBzO1xuICAgICAgICAgICAgICAgIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBiO1xuICAgICAgICAgICAgICAgIGBJbnQgdDtcbiAgICAgICAgICAgICAgXSApO1xuICAgICAgICBdXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChhLCBzKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFsgXCJOZWdhdGl2ZVdoYXRFdmVyXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWRcIixcbiAgICAgICAgICAgIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgczsgYEludCBpIF0gKTtcbiAgICAgICAgXVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgWyBcIk5lZ2F0aXZlSW50ZXJuYWxpemVkXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcIkFnZW50XCIsIGEpIF0gLT4gQWdlbnQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhKVxuICAgIHwgYEFzc29jIFsgKFwiRnJlZWRcIiwgYExpc3QgWyBhOyBgSW50IHMgXSkgXSAtPlxuICAgICAgRnJlZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgYEFzc29jIFsgKFwiTGlua2VkXCIsIGBMaXN0IFsgYTsgYEludCBzOyBiOyBgSW50IHQgXSkgXSAtPlxuICAgICAgTGlua2VkICgoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpLCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGIsIHQpKVxuICAgIHwgYEFzc29jIFsgKFwiTmVnYXRpdmVXaGF0RXZlclwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcylcbiAgICB8IGBBc3NvYyBbIChcIlBvc2l0aXZlSW50ZXJuYWxpemVkXCIsIGBMaXN0IFsgYTsgYEludCBzOyBgSW50IGkgXSkgXSAtPlxuICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzLCBpKVxuICAgIHwgYEFzc29jIFsgKFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBhOyBgSW50IHMgXSkgXSAtPlxuICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuXG4gIGxldCByZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qID0gZnVuY3Rpb25cbiAgICB8IEZyZWVkIChwLCBzKSBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIEZyZWVkIChwJywgcylcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgTmVnYXRpdmVXaGF0RXZlciAocCcsIHMpXG4gICAgfCBMaW5rZWQgKChwMSwgczEpLCAocDIsIHMyKSkgYXMgeCAtPlxuICAgICAgbGV0IHAxJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcDEgaW5cbiAgICAgIGxldCBwMicgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAyIGluXG4gICAgICBpZiBwMSA9PSBwMScgJiYgcDIgPT0gcDInIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBMaW5rZWQgKChwMScsIHMxKSwgKHAyJywgczIpKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMsIGkpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAnLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAnLCBzKVxuICAgIHwgQWdlbnQgcCBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIEFnZW50IHAnXG5cbiAgbGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IG4gLT4gQWdlbnQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4pXG4gICAgfCBGcmVlZCAobiwgcykgLT5cbiAgICAgIEZyZWVkIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzKVxuICAgIHwgTGlua2VkICgobiwgcyksIChuJywgcycpKSAtPlxuICAgICAgTGlua2VkXG4gICAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpLFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuJywgcycpIClcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKG4sIHMpIC0+XG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMsIGkpIC0+XG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcywgaSlcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChuLCBzKSAtPlxuICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG5cbiAgbGV0IG1hcF9mb2xkX2FnZW50IGYgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQWdlbnQgYSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgQWdlbnQgYScsIGFjYydcbiAgICB8IEZyZWVkIChhLCBzKSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgRnJlZWQgKGEnLCBzKSwgYWNjJ1xuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpIC0+XG4gICAgICBsZXQgYTEnLCBhY2MnID0gZiBhMSBhY2MgaW5cbiAgICAgIGxldCBhMicsIGFjYycnID0gZiBhMiBhY2MnIGluXG4gICAgICBMaW5rZWQgKChhMScsIHMxKSwgKGEyJywgczIpKSwgYWNjJydcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChhJywgcyksIGFjYydcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEnLCBzLCBpKSwgYWNjJ1xuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoYScsIHMpLCBhY2MnXG5cbiAgbGV0IG1hcF9hZ2VudCBmID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IGEgLT4gQWdlbnQgKGYgYSlcbiAgICB8IEZyZWVkIChhLCBzKSAtPiBGcmVlZCAoZiBhLCBzKVxuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpIC0+IExpbmtlZCAoKGYgYTEsIHMxKSwgKGYgYTIsIHMyKSlcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+IE5lZ2F0aXZlV2hhdEV2ZXIgKGYgYSwgcylcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPiBQb3NpdGl2ZUludGVybmFsaXplZCAoZiBhLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChmIGEsIHMpXG5cbiAgbGV0IGZvbGRfYWdlbnQgZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBmIGFjYyBhXG4gICAgfCBGcmVlZCAoYSwgXykgLT4gZiBhY2MgYVxuICAgIHwgTGlua2VkICgoYTEsIF8pLCAoYTIsIF8pKSAtPiBmIChmIGFjYyBhMSkgYTJcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIF8pIC0+IGYgYWNjIGFcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBfLCBfKSAtPiBmIGFjYyBhXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgXykgLT4gZiBhY2MgYVxuXG4gIGxldCBlcXVhbCBmIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBZ2VudCBhLCBBZ2VudCBhJyAtPiBmIGEgYSdcbiAgICB8ICggQWdlbnQgXyxcbiAgICAgICAgKCBGcmVlZCBfIHwgTGlua2VkIF8gfCBOZWdhdGl2ZVdoYXRFdmVyIF8gfCBQb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyApIClcbiAgICB8IF8sIEFnZW50IF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBGcmVlZCAoYSwgcyksIEZyZWVkIChhJywgcycpIC0+IHMgPSBzJyAmJiBmIGEgYSdcbiAgICB8ICggRnJlZWQgXyxcbiAgICAgICAgKCBMaW5rZWQgXyB8IE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfICkgKVxuICAgIHwgXywgRnJlZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IExpbmtlZCAoKGExLCBzMSksIChhMiwgczIpKSwgTGlua2VkICgoYTEnLCBzMScpLCAoYTInLCBzMicpKSAtPlxuICAgICAgKHMxID0gczEnICYmIHMyID0gczInICYmIGYgYTEgYTEnICYmIGYgYTIgYTInKVxuICAgICAgfHwgKHMxID0gczInICYmIHMyID0gczEnICYmIGYgYTEgYTInICYmIGYgYTIgYTEnKVxuICAgIHwgKCBMaW5rZWQgXyxcbiAgICAgICAgKE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF8gfCBOZWdhdGl2ZUludGVybmFsaXplZCBfKSApXG4gICAgfCBfLCBMaW5rZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpLCBOZWdhdGl2ZVdoYXRFdmVyIChhJywgcycpIC0+IHMgPSBzJyAmJiBmIGEgYSdcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgXywgKFBvc2l0aXZlSW50ZXJuYWxpemVkIF8gfCBOZWdhdGl2ZUludGVybmFsaXplZCBfKVxuICAgIHwgXywgTmVnYXRpdmVXaGF0RXZlciBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpLCBOZWdhdGl2ZUludGVybmFsaXplZCAoYScsIHMnKSAtPlxuICAgICAgcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXywgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXywgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEnLCBzJywgaScpIC0+XG4gICAgICBpID0gaScgJiYgcyA9IHMnICYmIGYgYSBhJ1xuXG4gIGxldCBwcmludCA/c2lncyBmID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IHAgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncykgcFxuICAgIHwgRnJlZWQgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ICV0QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcClcbiAgICAgICAgcyBQcC5ib3R0b21cbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ID8/P0BdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHApXG4gICAgICAgIHNcbiAgICB8IExpbmtlZCAoKHAxLCBzMSksIChwMiwgczIpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWEgPSAlYS4lYUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwMVxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwMSlcbiAgICAgICAgczFcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwMlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwMilcbiAgICAgICAgczJcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChwLCBzLCBpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWEgPUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBwIHMpXG4gICAgICAgIGlcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChwLCBzKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWF+ID1AXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwKVxuICAgICAgICBzXG5cbiAgbGV0IGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgKCgoYSwgXyksIF8pIGFzIHApIChkb24sIG91dCkgPVxuICAgIGlmIExpc3QubWVtIHAgZG9uIHx8IExpc3QubWVtIGEgY3JlYXRlZF9hZ2VudHMgdGhlblxuICAgICAgZG9uLCBvdXRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxua19kc3QgcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcCA6OiBkb24sIEZyZWVkIHAgOjogb3V0XG4gICAgICB8IFNvbWUgcCcgLT4gcCA6OiBwJyA6OiBkb24sIExpbmtlZCAocCwgcCcpIDo6IG91dFxuICAgIClcblxuICBsZXQgYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9uID0gZnVuY3Rpb25cbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWdfaWQsIF8pLCBfKSAtPiBTb21lIGFnX2lkXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF9cbiAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICBOb25lXG5cbiAgbGV0IGFnZW50c19jcmVhdGVkX2J5X2FjdGlvbnMgYWN0aW9ucyA9XG4gICAgTGlzdF91dGlsLm1hcF9vcHRpb24gYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9uIGFjdGlvbnNcblxuICBsZXQgbmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lncyBsbmtfZHN0IGFjdGlvbnMgPVxuICAgIGxldCBjcmVhdGVkX2FnZW50cyA9IGFnZW50c19jcmVhdGVkX2J5X2FjdGlvbnMgYWN0aW9ucyBpblxuICAgIHNuZFxuICAgICAgKExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgKGZ1biB4ICgoZG9uLCBvdXQpIGFzIGFjYykgLT5cbiAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKF8sIF8pIC0+IGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoKChpZCwgXyksIF8pIGFzIHApLCBfKSAtPlxuICAgICAgICAgICAgIGlmIExpc3QubWVtIGlkIGNyZWF0ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgIGRvbiwgb3V0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgZG9uLCBOZWdhdGl2ZUludGVybmFsaXplZCBwIDo6IG91dFxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAocDEsIHAyKSB8IEluc3RhbnRpYXRpb24uQmluZF90byAocDEsIHAyKSAtPlxuICAgICAgICAgICAgIGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcDFcbiAgICAgICAgICAgICAgIChnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IHAyIGFjYylcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcCAtPlxuICAgICAgICAgICAgIGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcCBhY2NcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKF8sIHR5KSBhcyBhKSAtPlxuICAgICAgICAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAoZnVuIHN0IHMgLT4gZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCAoYSwgcykgc3QpXG4gICAgICAgICAgICAgICAoZG9uLCBBZ2VudCBhIDo6IG91dClcbiAgICAgICAgICAgICAgIChTaWduYXR1cmUuYXJpdHkgc2lncyB0eSkpXG4gICAgICAgICBhY3Rpb25zIChbXSwgW10pKVxuXG4gIGxldCBwb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIHNpZGVfZWZmZWN0X2RzdHMgYWN0aW9ucyA9XG4gICAgbGV0IHJlbSwgcmV2ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKChyZW0sIG91dCkgYXMgYWNjKSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKCgoXywgdHkpIGFzIGEpLCBfKSAtPlxuICAgICAgICAgICAgKCBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgIChmdW4gc3QgcyAtPiAoYSwgcykgOjogc3QpXG4gICAgICAgICAgICAgICAgcmVtIChTaWduYXR1cmUuYXJpdHkgc2lncyB0eSksXG4gICAgICAgICAgICAgIEFnZW50IGEgOjogb3V0IClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoYSwgcyksIGkpIC0+XG4gICAgICAgICAgICByZW0sIFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSA6OiBvdXRcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAocDEsIHAyKSB8IEluc3RhbnRpYXRpb24uQmluZF90byAocDEsIHAyKSAtPlxuICAgICAgICAgICAgKCBMaXN0LmZpbHRlciAoZnVuIHAgLT4gcCA8PiBwMSAmJiBwIDw+IHAyKSByZW0sXG4gICAgICAgICAgICAgIExpbmtlZCAocDEsIHAyKSA6OiBvdXQgKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHAgLT5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gcCcgLT4gcCcgPD4gcCkgcmVtLCBGcmVlZCBwIDo6IG91dFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPiBhY2MpXG4gICAgICAgIChbXSwgW10pIGFjdGlvbnNcbiAgICBpblxuICAgIExpc3QucmV2X2FwcGVuZCByZXZcbiAgICAgIChMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgIChmdW4gcCAtPiBGcmVlZCBwKVxuICAgICAgICAgcmVtXG4gICAgICAgICAoTGlzdC5tYXAgKGZ1biBwIC0+IEZyZWVkIHApIHNpZGVfZWZmZWN0X2RzdHMpKVxuZW5kXG5cbnR5cGUgYWxnX2V4cHIgPSAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmVcblxudHlwZSBlbGVtZW50YXJ5X3J1bGUgPSB7XG4gIHJhdGU6IGFsZ19leHByIExvYy5hbm5vdGVkO1xuICB1bmFyeV9yYXRlOiAoYWxnX2V4cHIgTG9jLmFubm90ZWQgKiBhbGdfZXhwciBvcHRpb24pIG9wdGlvbjtcbiAgY29ubmVjdGVkX2NvbXBvbmVudHM6IFBhdHRlcm4uaWQgYXJyYXk7ICgqaWQgLT4gY2MqKVxuICByZW1vdmVkOiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IFRyYW5zZm9ybWF0aW9uLnQgbGlzdDtcbiAgaW5zZXJ0ZWQ6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgVHJhbnNmb3JtYXRpb24udCBsaXN0O1xuICBkZWx0YV90b2tlbnM6IChhbGdfZXhwciBMb2MuYW5ub3RlZCAqIGludCkgbGlzdDtcbiAgc3ludGFjdGljX3J1bGU6IGludDsgICgqKiBbMF0gbWVhbnMgZ2VuZXJhdGVkIGZvciBwZXJ0dXJiYXRpb24uICopXG4gIGluc3RhbnRpYXRpb25zOiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24uZXZlbnQ7XG59XG5cbmxldCBleHRyYWN0X2NjX2lkcyByID0gci5jb25uZWN0ZWRfY29tcG9uZW50c1xubGV0IGV4dHJhY3RfYWJzdHJhY3RfZXZlbnQgciA9IHIuaW5zdGFudGlhdGlvbnNcblxubGV0IGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb24pKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgcnVsZV90b195b2pzb24gfmZpbGVuYW1lcyByID1cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICAoIFwicmF0ZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIHIucmF0ZVxuICAgICAgKTtcbiAgICAgICggXCJ1bmFyeV9yYXRlXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpKSlcbiAgICAgICAgICByLnVuYXJ5X3JhdGUgKTtcbiAgICAgICggXCJjb25uZWN0ZWRfY29tcG9uZW50c1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiByLmNvbm5lY3RlZF9jb21wb25lbnRzICk7XG4gICAgICBcInJlbW92ZWRcIiwgSnNvblV0aWwub2ZfbGlzdCBUcmFuc2Zvcm1hdGlvbi50b195b2pzb24gci5yZW1vdmVkO1xuICAgICAgXCJpbnNlcnRlZFwiLCBKc29uVXRpbC5vZl9saXN0IFRyYW5zZm9ybWF0aW9uLnRvX3lvanNvbiByLmluc2VydGVkO1xuICAgICAgKCBcImRlbHRhX3Rva2Vuc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50KVxuICAgICAgICAgIHIuZGVsdGFfdG9rZW5zICk7XG4gICAgICBcInN5bnRhY3RpY19ydWxlXCIsIGBJbnQgci5zeW50YWN0aWNfcnVsZTtcbiAgICAgICggXCJpbnN0YW50aWF0aW9uc1wiLFxuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIHIuaW5zdGFudGlhdGlvbnMgKTtcbiAgICBdXG5cbmxldCBydWxlX29mX3lvanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBtYXRjaCByIHdpdGhcbiAgfCAoYEFzc29jIGwgOiBZb2pzb24uQmFzaWMudCkgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICByYXRlID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJyYXRlXCIgbCk7XG4gICAgICAgICB1bmFyeV9yYXRlID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInVuYXJ5X3JhdGVcIiB4KTtcbiAgICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29ubmVjdGVkX2NvbXBvbmVudHNcIiB4KTtcbiAgICAgICAgIHJlbW92ZWQgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0IFRyYW5zZm9ybWF0aW9uLm9mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJyZW1vdmVkXCIgeCk7XG4gICAgICAgICBpbnNlcnRlZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgVHJhbnNmb3JtYXRpb24ub2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImluc2VydGVkXCIgeCk7XG4gICAgICAgICBkZWx0YV90b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlbHRhX3Rva2Vuc1wiIHgpO1xuICAgICAgICAgc3ludGFjdGljX3J1bGUgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgXCJzeW50YWN0aWNfcnVsZVwiIGwpO1xuICAgICAgICAgaW5zdGFudGlhdGlvbnMgPVxuICAgICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X29mX2pzb24gTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJpbnN0YW50aWF0aW9uc1wiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVsZW1lbnRhcnkgcnVsZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWxlbWVudGFyeSBydWxlXCIsIHgpKVxuXG5sZXQgZnVsbHlfc3BlY2lmaWVkX3BhdHRlcm5fdG9fcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIGNjID1cbiAgbGV0IF8sIHRyID1cbiAgICBQYXR0ZXJuLmZvbGRfYnlfdHlwZVxuICAgICAgKGZ1biB+cG9zIH5hZ2VudF90eXBlIGludGYgKGVtYiwgZykgLT5cbiAgICAgICAgbGV0IGEgPSBwb3MsIGFnZW50X3R5cGUgaW5cbiAgICAgICAgbGV0IGcnID0gVHJhbnNmb3JtYXRpb24uQWdlbnQgYSA6OiBnIGluXG4gICAgICAgIGxldCBlbWInID0gTW9kcy5JbnRNYXAuYWRkIHBvcyBhIGVtYiBpblxuICAgICAgICAoIGVtYicsXG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBzaXRlIGFjYyAobCwgaSkgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYycgPVxuICAgICAgICAgICAgICAgIGlmIGkgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHNpdGUsIGkpIDo6IGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBQYXR0ZXJuLlVuU3BlYyB8IFBhdHRlcm4uRnJlZSAtPlxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uLkZyZWVkIChhLCBzaXRlKSA6OiBhY2MnXG4gICAgICAgICAgICAgIHwgUGF0dGVybi5MaW5rICh4JywgcycpIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgnIGVtYicgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2MnXG4gICAgICAgICAgICAgICAgfCBTb21lIGFnJyAtPlxuICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uTGlua2VkICgoYSwgc2l0ZSksIChhZycsIHMnKSkgOjogYWNjJykpXG4gICAgICAgICAgICBnJyBpbnRmICkpXG4gICAgICBjYyAoTW9kcy5JbnRNYXAuZW1wdHksIFtdKVxuICBpblxuICBMaXN0LnJldiB0clxuXG50eXBlICdhbGdfZXhwciBwcmludF9leHByID1cbiAgfCBTdHJfcGV4cHIgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG4gIHwgQWxnX3BleHByIG9mICdhbGdfZXhwciBMb2MuYW5ub3RlZFxuXG5sZXQgcHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgU3RyX3BleHByIHMgLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nIHNcbiAgfCBBbGdfcGV4cHIgYSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwiQVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgIGEgKTtcbiAgICAgIF1cblxubGV0IHByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBBc3NvYyBbIChcIkFcIiwgeCkgXSAtPlxuICAgICh0cnlcbiAgICAgICBBbGdfcGV4cHJcbiAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgICB4KVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBwcmludCBleHByXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgKHRyeVxuICAgICAgIFN0cl9wZXhwclxuICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHByaW50IGV4cHJcIiwgeCkpKVxuXG5sZXQgbWFwX2V4cHJfcHJpbnQgZiB4ID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gYXMgeCAtPiB4XG4gICAgICB8IEFsZ19wZXhwciBlIC0+IEFsZ19wZXhwciAoZiBlKSlcbiAgICB4XG5cbmxldCBmb2xkX2V4cHJfcHJpbnQgZiBhY2MgeCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gLT4gYWNjXG4gICAgICB8IEFsZ19wZXhwciBlIC0+IGYgYWNjIGUpXG4gICAgYWNjIHhcblxudHlwZSBkaW5fa2luZCA9IEFCU09MVVRFIHwgUkVMQVRJVkUgfCBQUk9CQUJJTElUWVxuXG5sZXQgZGluX2tpbmRfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBBQlNPTFVURSAtPiBgU3RyaW5nIFwiQUJTT0xVVEVcIlxuICB8IFJFTEFUSVZFIC0+IGBTdHJpbmcgXCJSRUxBVElWRVwiXG4gIHwgUFJPQkFCSUxJVFkgLT4gYFN0cmluZyBcIlBST0JBQklMSVRZXCJcblxubGV0IGRpbl9raW5kX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkFCU09MVVRFXCIgLT4gQUJTT0xVVEVcbiAgfCBgU3RyaW5nIFwiUkVMQVRJVkVcIiAtPiBSRUxBVElWRVxuICB8IGBTdHJpbmcgXCJQUk9CQUJJTElUWVwiIC0+IFBST0JBQklMSVRZXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZGluX2tpbmRcIiwgeCkpXG5cbmxldCB3cml0ZV9kaW5fa2luZCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAoZGluX2tpbmRfdG9feW9qc29uIGYpXG5cbmxldCBzdHJpbmdfb2ZfZGluX2tpbmQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2tpbmQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX2Rpbl9raW5kIHAgbGIgPVxuICBkaW5fa2luZF9vZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcblxubGV0IGRpbl9raW5kX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5fa2luZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIG1vZGlmaWNhdGlvbiA9XG4gIHwgSVRFUl9SVUxFIG9mIGFsZ19leHByIExvYy5hbm5vdGVkICogZWxlbWVudGFyeV9ydWxlXG4gIHwgVVBEQVRFIG9mIGludCAqIGFsZ19leHByIExvYy5hbm5vdGVkXG4gIHwgU05BUFNIT1Qgb2YgYm9vbCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IFNUT1Agb2YgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgQ0ZMT1cgb2ZcbiAgICAgIHN0cmluZyBvcHRpb25cbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3RcbiAgfCBESU4gb2YgZGluX2tpbmQgKiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBESU5PRkYgb2YgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgQ0ZMT1dPRkYgb2Ygc3RyaW5nIG9wdGlvbiAqIFBhdHRlcm4uaWQgYXJyYXlcbiAgfCBQTE9URU5UUllcbiAgfCBQUklOVCBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3QgKiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBTUEVDSUVTIG9mXG4gICAgICBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3RcbiAgfCBTUEVDSUVTX09GRiBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcblxubGV0IHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyA9XG4gIHByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pKVxuICAgIEpzb25VdGlsLm9mX2ludFxuXG5sZXQgcHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgcHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBtb2RpZmljYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IElURVJfUlVMRSAobiwgcikgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIjtcbiAgICAgICAgKCBcInJlcGVhdHNcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIG4gKTtcbiAgICAgICAgXCJydWxlXCIsIHJ1bGVfdG9feW9qc29uIH5maWxlbmFtZXMgcjtcbiAgICAgIF1cbiAgfCBVUERBVEUgKHYsIGUpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIjtcbiAgICAgICAgXCJ2YXJcIiwgYEludCB2O1xuICAgICAgICAoIFwidmFsdWVcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGUgKTtcbiAgICAgIF1cbiAgfCBTTkFQU0hPVCAocmF3LCBmKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiO1xuICAgICAgICBcInJhd1wiLCBgQm9vbCByYXc7XG4gICAgICAgIFwiZmlsZVwiLCBKc29uVXRpbC5vZl9saXN0IChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGY7XG4gICAgICBdXG4gIHwgU1RPUCBmIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIjtcbiAgICAgICAgXCJmaWxlXCIsIEpzb25VdGlsLm9mX2xpc3QgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZjtcbiAgICAgIF1cbiAgfCBDRkxPVyAobmFtZSwgaWRzLCB0ZXN0cykgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiQ0ZMT1dcIjtcbiAgICAgICAgXCJuYW1lXCIsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcgbmFtZTtcbiAgICAgICAgXCJwYXR0ZXJuXCIsIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIGlkcztcbiAgICAgICAgKCBcInRlc3RzXCIsXG4gICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnRlc3RfdG9fanNvbiBNYXRjaGluZy5BZ2VudC50b195b2pzb24pKVxuICAgICAgICAgICAgdGVzdHMgKTtcbiAgICAgIF1cbiAgfCBDRkxPV09GRiAobmFtZSwgaWRzKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiQ0ZMT1dPRkZcIjtcbiAgICAgICAgXCJuYW1lXCIsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcgbmFtZTtcbiAgICAgICAgXCJwYXR0ZXJuXCIsIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIGlkcztcbiAgICAgIF1cbiAgfCBESU4gKGtpbmQsIGYpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIjtcbiAgICAgICAgXCJraW5kXCIsIGRpbl9raW5kX3RvX3lvanNvbiBraW5kO1xuICAgICAgICBcImZpbGVcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGYpO1xuICAgICAgXVxuICB8IERJTk9GRiBmIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiO1xuICAgICAgICBcImZpbGVcIiwgSnNvblV0aWwub2ZfbGlzdCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmO1xuICAgICAgXVxuICB8IFBMT1RFTlRSWSAtPiBgQXNzb2MgWyBcImFjdGlvblwiLCBgU3RyaW5nIFwiUExPVE5PV1wiIF1cbiAgfCBQUklOVCAoZiwgdCkgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCI7XG4gICAgICAgIFwidGV4dFwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgdCk7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG4gIHwgU1BFQ0lFUyAoZiwgaWRzLCB0ZXN0cykgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU1wiO1xuICAgICAgICBcImZpbGVcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGYpO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgICAoIFwidGVzdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF90b19qc29uIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbikpXG4gICAgICAgICAgICB0ZXN0cyApO1xuICAgICAgXVxuICB8IFNQRUNJRVNfT0ZGIGYgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNQRUNJRVNfT0ZGXCI7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG5cbmxldCBtb2RpZmljYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcImZpbGVcIiwgYExpc3QgZik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICAgIC0+XG4gICAgUFJJTlRcbiAgICAgICggTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgZixcbiAgICAgICAgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgdCApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdIC0+XG4gICAgUFJJTlQgKFtdLCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSB0KVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJraW5kXCIsIGtpbmQpIF1cbiAgfCBgQXNzb2MgWyAoXCJraW5kXCIsIGtpbmQpOyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImtpbmRcIiwga2luZCk7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImtpbmRcIiwga2luZCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGYpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwia2luZFwiLCBraW5kKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwia2luZFwiLCBraW5kKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIikgXSAtPlxuICAgIERJTiAoZGluX2tpbmRfb2ZfeW9qc29uIGtpbmQsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGYpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhclwiLCBgSW50IHYpOyAoXCJ2YWx1ZVwiLCBlKSBdXG4gIHwgYEFzc29jIFsgKFwidmFyXCIsIGBJbnQgdik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpOyAoXCJ2YWx1ZVwiLCBlKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhbHVlXCIsIGUpOyAoXCJ2YXJcIiwgYEludCB2KSBdXG4gIHwgYEFzc29jIFsgKFwidmFyXCIsIGBJbnQgdik7IChcInZhbHVlXCIsIGUpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidmFsdWVcIiwgZSk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpOyAoXCJ2YXJcIiwgYEludCB2KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsdWVcIiwgZSk7IChcInZhclwiLCBgSW50IHYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKSBdIC0+XG4gICAgVVBEQVRFXG4gICAgICAodiwgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBlKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicmVwZWF0c1wiLCBuKTsgKFwicnVsZVwiLCByKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJydWxlXCIsIHIpOyAoXCJyZXBlYXRzXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJ1bGVcIiwgcikgXVxuICB8IGBBc3NvYyBbIChcInJ1bGVcIiwgcik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicmVwZWF0c1wiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwicmVwZWF0c1wiLCBuKTsgKFwicnVsZVwiLCByKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJydWxlXCIsIHIpOyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIikgXSAtPlxuICAgIElURVJfUlVMRVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIG4sXG4gICAgICAgIHJ1bGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgciApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQTE9UTk9XXCIpIF0gLT4gUExPVEVOVFJZXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpIF0gLT5cbiAgICBESU5PRkYgKExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIik7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpIF0gLT5cbiAgICBESU5PRkYgW11cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF0gLT5cbiAgICBTTkFQU0hPVCAoZmFsc2UsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gICAgLT5cbiAgICBTTkFQU0hPVCAocmF3LCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBsKVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvYyBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdIC0+XG4gICAgU05BUFNIT1QgKHJhdywgW10pXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF0gLT5cbiAgICBTTkFQU0hPVCAoZmFsc2UsIFtdKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpIF0gLT5cbiAgICBTVE9QIChMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBsKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKSBdIC0+XG4gICAgU1RPUCBbXVxuICB8IGBBc3NvYyBfIGFzIGwgd2hlbiBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhY3Rpb25cIiBsID0gYFN0cmluZyBcIkNGTE9XXCIgLT5cbiAgICBDRkxPV1xuICAgICAgKCBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibmFtZVwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJwYXR0ZXJuXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnRlc3Rfb2ZfanNvbiBNYXRjaGluZy5BZ2VudC5vZl95b2pzb24pKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0ZXN0c1wiIGwpIClcbiAgfCBgQXNzb2MgXyBhcyBsIHdoZW4gWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWN0aW9uXCIgbCA9IGBTdHJpbmcgXCJDRkxPV09GRlwiXG4gICAgLT5cbiAgICBDRkxPV09GRlxuICAgICAgKCBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibmFtZVwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJwYXR0ZXJuXCIgbCkgKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIik7IChcImZpbGVcIiwgcCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgcCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIikgXSAtPlxuICAgIFNQRUNJRVNfT0ZGIChKc29uVXRpbC50b19saXN0IChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIHApXG4gIHwgYEFzc29jIF8gYXMgbCB3aGVuIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFjdGlvblwiIGwgPSBgU3RyaW5nIFwiU1BFQ0lFU1wiXG4gICAgLT5cbiAgICBTUEVDSUVTXG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJmaWxlXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF9vZl9qc29uIE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbikpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRlc3RzXCIgbCkgKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbnR5cGUgcGVydHVyYmF0aW9uID0ge1xuICBhbGFybTogTmJyLnQgb3B0aW9uO1xuICBwcmVjb25kaXRpb246IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZDtcbiAgZWZmZWN0OiBtb2RpZmljYXRpb24gbGlzdDtcbiAgcmVwZWF0OiAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQ7XG4gIG5lZWRzX2JhY2t0cmFjazogYm9vbDtcbn1cblxubGV0IGJvb2xfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pKVxuICAgIEpzb25VdGlsLm9mX2ludFxuXG5sZXQgYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBwZXJ0dXJiYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMgcCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwiYWxhcm1cIiwgSnNvblV0aWwub2Zfb3B0aW9uIChmdW4gbiAtPiBOYnIudG9feW9qc29uIG4pIHAuYWxhcm07XG4gICAgICAoIFwiY29uZGl0aW9uXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICBwLnByZWNvbmRpdGlvbiApO1xuICAgICAgXCJlZmZlY3RcIiwgSnNvblV0aWwub2ZfbGlzdCAobW9kaWZpY2F0aW9uX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBwLmVmZmVjdDtcbiAgICAgICggXCJyZXBlYXRcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIHAucmVwZWF0ICk7XG4gICAgICBcIm5lZWRzX2JhY2t0cmFja1wiLCBgQm9vbCBwLm5lZWRzX2JhY2t0cmFjaztcbiAgICBdXG5cbmxldCBwZXJ0dXJiYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNSAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBhbGFybSA9IEpzb25VdGlsLnRvX29wdGlvbiBOYnIub2ZfeW9qc29uIChMaXN0LmFzc29jIFwiYWxhcm1cIiBsKTtcbiAgICAgICAgIHByZWNvbmRpdGlvbiA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImNvbmRpdGlvblwiIGwpO1xuICAgICAgICAgZWZmZWN0ID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChtb2RpZmljYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJlZmZlY3RcIiBsKTtcbiAgICAgICAgIHJlcGVhdCA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJlcGVhdFwiIGwpO1xuICAgICAgICAgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgQm9vbCBiIC0+IGJcbiAgICAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGJvb2xcIiwgeCkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwibmVlZHNfYmFja3RyYWNrXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcGVydHVyYmF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcGVydHVyYmF0aW9uXCIsIHgpKVxuXG5sZXQgZXhpc3RzX21vZGlmaWNhdGlvbiBjaGVjayBsID1cbiAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gYWNjIHx8IExpc3QuZXhpc3RzIGNoZWNrIHAuZWZmZWN0KSBmYWxzZSBsXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIGUgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBhIC0+IExpc3QucmV2X2FwcGVuZCAoQXJyYXkudG9fbGlzdCBhKSBhY2MpKVxuICAgIGFjY1xuICAgIChBbGdfZXhwci5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIGUpXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgZSA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IGEpIGFjYykpXG4gICAgW11cbiAgICAoQWxnX2V4cHIuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIGUpXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3J1bGUgYWNjIHIgPVxuICBsZXQgYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjICh4LCBfKSAtPiBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIHgpXG4gICAgICBhY2Mgci5kZWx0YV90b2tlbnNcbiAgaW5cbiAgbGV0IGIgPVxuICAgIG1hdGNoIHIudW5hcnlfcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGFcbiAgICB8IFNvbWUgKHgsIF8pIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhIHhcbiAgaW5cbiAgbGV0IGMgPSBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYiByLnJhdGUgaW5cbiAgTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IHIuY29ubmVjdGVkX2NvbXBvbmVudHMpIGNcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICB8IFN0cl9wZXhwciBfIC0+IGFjY1xuICAgICAgfCBBbGdfcGV4cHIgZSAtPiBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIGUpXG4gICAgYWNjIHhcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9uIGFjYyA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcnVsZVxuICAgICAgKGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSlcbiAgICAgIHJcbiAgfCBVUERBVEUgKF8sIGUpIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZVxuICB8IFNOQVBTSE9UIChfLCBwKSB8IFNUT1AgcCB8IFNQRUNJRVNfT0ZGIHAgfCBESU4gKF8sIHApIHwgRElOT0ZGIHAgLT5cbiAgICBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3ByaW50IGFjYyBwXG4gIHwgUFJJTlQgKGZuLCBwKSAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnRcbiAgICAgIChleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3ByaW50IGFjYyBwKVxuICAgICAgZm5cbiAgfCBDRkxPVyAoXywgeCwgXykgfCBDRkxPV09GRiAoXywgeCkgfCBTUEVDSUVTIChfLCB4LCBfKSAtPlxuICAgIExpc3QucmV2X2FwcGVuZCAoQXJyYXkudG9fbGlzdCB4KSBhY2NcbiAgfCBQTE9URU5UUlkgLT4gYWNjXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbnMgbCA9XG4gIExpc3QuZm9sZF9sZWZ0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9uIFtdIGxcblxubGV0IG1hcF9leHByX3J1bGUgZiB4ID1cbiAge1xuICAgIHJhdGUgPSBmIHgucmF0ZTtcbiAgICB1bmFyeV9yYXRlID0gT3B0aW9uX3V0aWwubWFwIChmdW4gKHgsIGQpIC0+IGYgeCwgZCkgeC51bmFyeV9yYXRlO1xuICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID0geC5jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICByZW1vdmVkID0geC5yZW1vdmVkO1xuICAgIGluc2VydGVkID0geC5pbnNlcnRlZDtcbiAgICBkZWx0YV90b2tlbnMgPSBMaXN0Lm1hcCAoZnVuICh4LCB0KSAtPiBmIHgsIHQpIHguZGVsdGFfdG9rZW5zO1xuICAgIHN5bnRhY3RpY19ydWxlID0geC5zeW50YWN0aWNfcnVsZTtcbiAgICBpbnN0YW50aWF0aW9ucyA9IHguaW5zdGFudGlhdGlvbnM7XG4gIH1cblxubGV0IGZvbGRfZXhwcl9ydWxlIGYgeCByID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyAoeSwgXykgLT4gZiBhY2MgeSlcbiAgICAoT3B0aW9uX3V0aWwuZm9sZCAoZnVuIGEgKGUsIF8pIC0+IGYgYSBlKSAoZiB4IHIucmF0ZSkgci51bmFyeV9yYXRlKVxuICAgIHIuZGVsdGFfdG9rZW5zXG5cbmxldCBtYXBfZXhwcl9tb2RpZmljYXRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPiBJVEVSX1JVTEUgKGYgZSwgbWFwX2V4cHJfcnVsZSBmIHIpXG4gIHwgVVBEQVRFIChpLCBlKSAtPiBVUERBVEUgKGksIGYgZSlcbiAgfCBTTkFQU0hPVCAocmF3LCBwKSAtPiBTTkFQU0hPVCAocmF3LCBtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgU1RPUCBwIC0+IFNUT1AgKG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBQUklOVCAoZm4sIHApIC0+IFBSSU5UIChtYXBfZXhwcl9wcmludCBmIGZuLCBtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgRElOIChiLCBwKSAtPiBESU4gKGIsIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBESU5PRkYgcCAtPiBESU5PRkYgKG1hcF9leHByX3ByaW50IGYgcClcbiAgfCAoQ0ZMT1cgXyB8IENGTE9XT0ZGIF8gfCBTUEVDSUVTX09GRiBfIHwgUExPVEVOVFJZKSBhcyB4IC0+IHhcbiAgfCBTUEVDSUVTIChwLCB4LCB0KSAtPiBTUEVDSUVTIChtYXBfZXhwcl9wcmludCBmIHAsIHgsIHQpXG5cbmxldCBmb2xkX2V4cHJfbW9kaWZpY2F0aW9uIGYgeCA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPiBmb2xkX2V4cHJfcnVsZSBmIChmIHggZSkgclxuICB8IFVQREFURSAoXywgZSkgLT4gZiB4IGVcbiAgfCBTTkFQU0hPVCAoXywgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgU1RPUCBwIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IFBSSU5UIChmbiwgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgKGZvbGRfZXhwcl9wcmludCBmIHggcCkgZm5cbiAgfCBESU4gKF8sIHApIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IERJTk9GRiBwIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IENGTE9XIF8gfCBDRkxPV09GRiBfIHwgU1BFQ0lFU19PRkYgXyB8IFBMT1RFTlRSWSAtPiB4XG4gIHwgU1BFQ0lFUyAocCwgXywgXykgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG5cbmxldCBtYXBfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sIHggPVxuICB7XG4gICAgYWxhcm0gPSB4LmFsYXJtO1xuICAgIHByZWNvbmRpdGlvbiA9IGZfYm9vbCB4LnByZWNvbmRpdGlvbjtcbiAgICBlZmZlY3QgPSBMaXN0Lm1hcCAobWFwX2V4cHJfbW9kaWZpY2F0aW9uIGZfYWxnKSB4LmVmZmVjdDtcbiAgICByZXBlYXQgPSBmX2Jvb2wgeC5yZXBlYXQ7XG4gICAgbmVlZHNfYmFja3RyYWNrID0geC5uZWVkc19iYWNrdHJhY2s7XG4gIH1cblxubGV0IGZvbGRfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sIGFjYyB4ID1cbiAgbGV0IGExID0gZl9ib29sIGFjYyB4LnByZWNvbmRpdGlvbiBpblxuICBsZXQgYTIgPSBMaXN0LmZvbGRfbGVmdCAoZm9sZF9leHByX21vZGlmaWNhdGlvbiBmX2FsZykgYTEgeC5lZmZlY3QgaW5cbiAgZl9ib29sIGEyIHgucmVwZWF0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2Fubm90KSBsaW5rID1cbiAgfCBBTllfRlJFRVxuICB8IExOS19WQUxVRSBvZiBpbnQgKiAnYW5ub3RcbiAgfCBMTktfRlJFRVxuICB8IExOS19BTllcbiAgfCBMTktfU09NRVxuICB8IExOS19UWVBFIG9mICdhICogJ2EgICgqKiBwb3J0ICogYWdlbnRfdHlwZSAqKVxuXG50eXBlIHN3aXRjaGluZyA9IExpbmtlZCBvZiBpbnQgfCBGcmVlZCB8IE1haW50YWluZWQgfCBFcmFzZWRcblxudHlwZSBydWxlX2ludGVybmFsID1cbiAgfCBJX0FOWVxuICB8IElfQU5ZX0NIQU5HRUQgb2YgaW50XG4gIHwgSV9BTllfRVJBU0VEXG4gIHwgSV9WQUxfQ0hBTkdFRCBvZiBpbnQgKiBpbnRcbiAgfCBJX1ZBTF9FUkFTRUQgb2YgaW50XG5cbnR5cGUgcnVsZV9hZ2VudCA9IHtcbiAgcmFfdHlwZTogaW50O1xuICByYV9lcmFzZWQ6IGJvb2w7XG4gIHJhX3BvcnRzOiAoKGludCwgaW50ICogaW50KSBsaW5rIExvYy5hbm5vdGVkICogc3dpdGNoaW5nKSBhcnJheTtcbiAgcmFfaW50czogcnVsZV9pbnRlcm5hbCBhcnJheTtcbiAgcmFfc3ludGF4OlxuICAgICgoKGludCwgaW50ICogaW50KSBsaW5rIExvYy5hbm5vdGVkICogc3dpdGNoaW5nKSBhcnJheVxuICAgICogcnVsZV9pbnRlcm5hbCBhcnJheSlcbiAgICBvcHRpb247XG59XG5cbnR5cGUgcnVsZV9taXh0dXJlID0gcnVsZV9hZ2VudCBsaXN0XG5cbnR5cGUgcnVsZSA9IHtcbiAgcl9taXg6IHJ1bGVfbWl4dHVyZTtcbiAgcl9jcmVhdGVkOiBSYXdfbWl4dHVyZS50O1xuICByX2RlbHRhX3Rva2VuczogKChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIGludCkgbGlzdDtcbiAgcl9yYXRlOiAocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQ7XG4gIHJfdW5fcmF0ZTpcbiAgICAoKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gICAgKiAocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgcl9lZGl0X3N0eWxlOiBib29sO1xufVxuXG5sZXQgcHJpbnRfbGluayBwcl9wb3J0IHByX3R5cGUgcHJfYW5ub3QgZiA9IGZ1bmN0aW9uXG4gIHwgQU5ZX0ZSRUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiI1wiXG4gIHwgTE5LX1RZUEUgKHAsIGEpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiIChwcl9wb3J0IGEpIHAgcHJfdHlwZSBhXG4gIHwgTE5LX0FOWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCJcbiAgfCBMTktfRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBMTktfU09NRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfXCJcbiAgfCBMTktfVkFMVUUgKGksIGEpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaSVhXCIgaSBwcl9hbm5vdCBhXG5cbmxldCBsaW5rX3RvX2pzb24gcG9ydF90b19qc29uIHR5cGVfdG9fanNvbiBhbm5vdF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBBTllfRlJFRSAtPiBgU3RyaW5nIFwiQU5ZX0ZSRUVcIlxuICB8IExOS19GUkVFIC0+IGBTdHJpbmcgXCJGUkVFXCJcbiAgfCBMTktfVFlQRSAocCwgYSkgLT4gYExpc3QgWyBwb3J0X3RvX2pzb24gYSBwOyB0eXBlX3RvX2pzb24gYSBdXG4gIHwgTE5LX0FOWSAtPiBgTnVsbFxuICB8IExOS19TT01FIC0+IGBTdHJpbmcgXCJTT01FXCJcbiAgfCBMTktfVkFMVUUgKGksIGEpIC0+IGBMaXN0IChgSW50IGkgOjogYW5ub3RfdG9fanNvbiBhKVxuXG5sZXQgbGlua19vZl9qc29uIHBvcnRfb2ZfanNvbiB0eXBlX29mX2pzb24gYW5ub3RlZF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQU5ZX0ZSRUVcIiAtPiBBTllfRlJFRVxuICB8IGBTdHJpbmcgXCJGUkVFXCIgLT4gTE5LX0ZSRUVcbiAgfCBgTGlzdCBbIHA7IGEgXSAtPlxuICAgIGxldCB4ID0gdHlwZV9vZl9qc29uIGEgaW5cbiAgICBMTktfVFlQRSAocG9ydF9vZl9qc29uIHggcCwgeClcbiAgfCBgTnVsbCAtPiBMTktfQU5ZXG4gIHwgYFN0cmluZyBcIlNPTUVcIiAtPiBMTktfU09NRVxuICB8IGBMaXN0IChgSW50IGkgOjogKChbXSB8IF8gOjogXyA6OiBfKSBhcyBhKSkgLT5cbiAgICBMTktfVkFMVUUgKGksIGFubm90ZWRfb2ZfanNvbiBhKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGxpbmtcIiwgeCkpXG5cbmxldCBwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncyBmIChzLCBhKSA9XG4gIGlmIGx0eXBlcyB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi8qJWEuJWEqL1wiXG4gICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhKVxuICAgICAgc1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgYVxuXG5sZXQgcHJpbnRfcnVsZV9pbnRlcm5hbCBzaWdzIH5zaG93X2VyYXNlZCBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+ICgpXG4gIHwgSV9BTllfQ0hBTkdFRCBqIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInsjLyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBqXG4gIHwgSV9BTllfRVJBU0VEIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInsjJXR9XCIgKGZ1biBmIC0+XG4gICAgICAgIGlmIHNob3dfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLS1cIilcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgIGlmIGkgPD4gaiB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhLyVhfVwiXG4gICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKVxuICAgICAgICBpXG4gICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKVxuICAgICAgICBqXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgaVxuICB8IElfVkFMX0VSQVNFRCBpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYSV0fVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBpXG4gICAgICAoZnVuIGYgLT4gaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiKVxuXG5sZXQgcnVsZV9pbnRlcm5hbF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBJX0FOWSAtPiBgTnVsbFxuICB8IElfQU5ZX0NIQU5HRUQgaiAtPiBgTGlzdCBbIGBTdHJpbmcgXCJBTllcIjsgYEludCBqIF1cbiAgfCBJX0FOWV9FUkFTRUQgLT4gYFN0cmluZyBcIkVSQVNFRFwiXG4gIHwgSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT4gYExpc3QgWyBgSW50IGk7IGBJbnQgaiBdXG4gIHwgSV9WQUxfRVJBU0VEIGkgLT4gYExpc3QgWyBgSW50IGk7IGBTdHJpbmcgXCJFUkFTRURcIiBdXG5cbmxldCBydWxlX2ludGVybmFsX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IElfQU5ZXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQU5ZXCI7IGBJbnQgaiBdIC0+IElfQU5ZX0NIQU5HRUQgalxuICB8IGBTdHJpbmcgXCJFUkFTRURcIiAtPiBJX0FOWV9FUkFTRURcbiAgfCBgTGlzdCBbIGBJbnQgaTsgYEludCBqIF0gLT4gSV9WQUxfQ0hBTkdFRCAoaSwgailcbiAgfCBgTGlzdCBbIGBJbnQgaTsgYFN0cmluZyBcIkVSQVNFRFwiIF0gLT4gSV9WQUxfRVJBU0VEIGlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBydWxlX2ludGVybmFsXCIsIHgpKVxuXG5sZXQgcHJpbnRfc3dpdGNoaW5nIH5zaG93X2VyYXNlZCBmID0gZnVuY3Rpb25cbiAgfCBMaW5rZWQgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLyVpXCIgaVxuICB8IEZyZWVkIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi8uXCJcbiAgfCBNYWludGFpbmVkIC0+ICgpXG4gIHwgRXJhc2VkIC0+IGlmIHNob3dfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLS1cIlxuXG5sZXQgc3dpdGNoaW5nX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEZyZWVkIC0+IGBTdHJpbmcgXCJGcmVlZFwiXG4gIHwgTWFpbnRhaW5lZCAtPiBgU3RyaW5nIFwiTWFpbnRhaW5lZFwiXG4gIHwgRXJhc2VkIC0+IGBTdHJpbmcgXCJFcmFzZWRcIlxuICB8IExpbmtlZCBpIC0+IEpzb25VdGlsLm9mX2ludCBpXG5cbmxldCBzd2l0Y2hpbmdfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkZyZWVkXCIgLT4gRnJlZWRcbiAgfCBgU3RyaW5nIFwiTWFpbnRhaW5lZFwiIC0+IE1haW50YWluZWRcbiAgfCBgU3RyaW5nIFwiRXJhc2VkXCIgLT4gRXJhc2VkXG4gIHwgeCAtPiBMaW5rZWQgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOlwiSW52YWxpZCBTd2l0Y2hpbmdcIiB4KVxuXG5sZXQgcHJpbnRfcnVsZV9saW5rIHNpZ3MgfnNob3dfZXJhc2VkIH5sdHlwZXMgZiAoKGUsIF8pLCBzKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWElYV1cIlxuICAgIChwcmludF9saW5rXG4gICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgIChwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncykpXG4gICAgZVxuICAgIChwcmludF9zd2l0Y2hpbmcgfnNob3dfZXJhc2VkKVxuICAgIHNcblxubGV0IHByaW50X2NvdW50ZXJfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBjLCB0cnVlIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9JWlcIiBjXG4gIHwgYywgZmFsc2UgLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiBjXG5cbmxldCBwcmludF9jb3VudGVyX2RlbHRhIGNvdW50ZXJzIGogZiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExpbmtlZCBpIC0+XG4gICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIGNvdW50ZXJzIGkgaW5cbiAgICBsZXQgcywgKF8sIGlzX2NvdW50ZXIpID0gTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcnMuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgbGV0IGRlbHRhID1cbiAgICAgIGlmIGlzX2NvdW50ZXIgdGhlblxuICAgICAgICBzIC0gMVxuICAgICAgZWxzZVxuICAgICAgICBqIC0gaVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi8rPSVkXCIgZGVsdGFcbiAgfCBGcmVlZCAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQ2Fubm90IGVyYXNlIGFsbCBpbmNyZW1lbnQgYWdlbnRzXCIpKVxuICB8IE1haW50YWluZWQgLT4gKClcbiAgfCBFcmFzZWQgLT4gKClcblxubGV0IHByaW50X3J1bGVfaW50ZiB+bm9Db3VudGVycyBzaWdzIH5zaG93X2VyYXNlZCB+bHR5cGVzIGFnX3R5IGZcbiAgICAocG9ydHMsIGludHMsIGNvdW50ZXJzLCBjcmVhdGVkX2NvdW50ZXJzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlblxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIE1haW50YWluZWQgLT4gaW50cy4oaSkgPD4gSV9BTllcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIChFcmFzZWQgfCBGcmVlZCB8IExpbmtlZCBfKVxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBBTllfRlJFRSB8IExOS19GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IChlLCBfKSwgc3dpdGNoID0gcG9ydHMuKGkpIGluXG4gICAgICAgIGxldCBpc19jb3VudGVyID1cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfQU5ZIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+IGZhbHNlXG4gICAgICAgICAgfCBMTktfVkFMVUUgKGosIF8pIC0+XG4gICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgY291bnRlcnMgaiBpblxuICAgICAgICAgICAgICAgbGV0IGMsIChlcSwgaXNfY291bnRlcicpID1cbiAgICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcnMuUmF3X21peHR1cmUucmFuayByb290XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgaWYgaXNfY291bnRlcicgJiYgbm90IG5vQ291bnRlcnMgdGhlbiAoXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVheyVhJWF9XCJcbiAgICAgICAgICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgICAgICAgICBpIHByaW50X2NvdW50ZXJfdGVzdFxuICAgICAgICAgICAgICAgICAgIChjIC0gMSwgZXEpXG4gICAgICAgICAgICAgICAgICAgKHByaW50X2NvdW50ZXJfZGVsdGEgY3JlYXRlZF9jb3VudGVycyBqKVxuICAgICAgICAgICAgICAgICAgIHN3aXRjaDtcbiAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2UpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgbm90IGlzX2NvdW50ZXIgdGhlblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYSVhXCJcbiAgICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgICBpXG4gICAgICAgICAgICAgIChwcmludF9ydWxlX2ludGVybmFsIHNpZ3MgfnNob3dfZXJhc2VkIGFnX3R5IGkpXG4gICAgICAgICAgICAgIGludHMuKGkpXG4gICAgICAgICAgICAgIChwcmludF9ydWxlX2xpbmsgc2lncyB+c2hvd19lcmFzZWQgfmx0eXBlcylcbiAgICAgICAgICAgICAgcG9ydHMuKGkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggPVxuICBsZXQgdCA9IFJhd19taXh0dXJlLmNyZWF0ZSAxIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGFnIC0+XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5yYV90eXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgKGJlZm9yZSwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICBsZXQgKGEsIF8pLCBfID0gYWcucmFfcG9ydHMuKGFmdGVyKSBpblxuICAgICAgICAgICAgbGV0IChiLCBfKSwgXyA9IGFnLnJhX3BvcnRzLihiZWZvcmUpIGluXG4gICAgICAgICAgICAobWF0Y2ggYiB3aXRoXG4gICAgICAgICAgICB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfQU5ZIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+ICgpXG4gICAgICAgICAgICB8IExOS19WQUxVRSAobG5rX2IsIF8pIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgfCBMTktfVkFMVUUgKGxua19hLCBfKSAtPiBSYXdfbWl4dHVyZS51bmlvbiB0IGxua19iIGxua19hXG4gICAgICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSAtPlxuICAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCB0IGxua19iIGluXG4gICAgICAgICAgICAgICAgbGV0IHMsIF8gPSBNb2RzLkR5bkFycmF5LmdldCB0LlJhd19taXh0dXJlLnJhbmsgcm9vdCBpblxuICAgICAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQuUmF3X21peHR1cmUucmFuayByb290IChzLCAodHJ1ZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgTE5LX0FOWSAtPlxuICAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCB0IGxua19iIGluXG4gICAgICAgICAgICAgICAgbGV0IHMsIF8gPSBNb2RzLkR5bkFycmF5LmdldCB0LlJhd19taXh0dXJlLnJhbmsgcm9vdCBpblxuICAgICAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQuUmF3X21peHR1cmUucmFuayByb290IChzLCAoZmFsc2UsIHRydWUpKVxuICAgICAgICAgICAgICB8IExOS19UWVBFIF8gfCBMTktfU09NRSAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlBvcnQgYSBvZiBfX2NvdW50ZXJfYWdlbnQgYWdlbnQgbm90IHdlbGwgc3BlY2lmaWVkXCIpKSkpKVxuICAgICAgICBtaXhcbiAgaW5cbiAgdFxuXG5sZXQgcHJpbnRfcnVsZV9hZ2VudCB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgY291bnRlcnMgY3JlYXRlZF9jb3VudGVycyBmIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSkldFwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgYWcucmFfdHlwZVxuICAgIChwcmludF9ydWxlX2ludGYgfm5vQ291bnRlcnMgc2lncyB+c2hvd19lcmFzZWQ6ZmFsc2Ugfmx0eXBlcyBhZy5yYV90eXBlKVxuICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cywgY291bnRlcnMsIGNyZWF0ZWRfY291bnRlcnMpIChmdW4gZiAtPlxuICAgICAgaWYgYWcucmFfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLVwiKVxuXG5sZXQgcHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjcmVhdGVkIGYgbWl4ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRzID0gdW5pb25fZmluZF9jb3VudGVycyAoU29tZSBzaWdzKSBtaXggaW5cbiAgbGV0IGNyZWF0ZWRfaW5jciA9IFJhd19taXh0dXJlLnVuaW9uX2ZpbmRfY291bnRlcnMgKFNvbWUgc2lncykgY3JlYXRlZCBpblxuICBsZXQgcmVjIGF1eF9wcmludCBzb21lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgaC5yYV90eXBlICYmIG5vdCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgYXV4X3ByaW50IHNvbWUgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IGlmIHNvbWUgdGhlbiBQcC5jb21tYSBmIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcHJpbnRfcnVsZV9hZ2VudCB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgY291bnRlcl9hZ2VudHMgY3JlYXRlZF9pbmNyXG4gICAgICAgICAgICBmIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X3ByaW50IHRydWUgdFxuICAgICAgKVxuICBpblxuICBhdXhfcHJpbnQgZmFsc2UgbWl4XG5cbmxldCBwcmludF9pbnRlcm5hbF9saHMgc2lncyBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+ICgpXG4gIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsjfVwiXG4gIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcblxubGV0IHByaW50X2ludGVybmFsX3JocyBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIGogfCBJX1ZBTF9DSEFOR0VEIChfLCBqKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGpcbiAgfCBJX0FOWV9FUkFTRUQgfCBJX1ZBTF9FUkFTRUQgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHByaW50X2xpbmtfbGhzIH5sdHlwZXMgc2lncyBmICgoZSwgXyksIF8pID1cbiAgcHJpbnRfbGlua1xuICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAocHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MpXG4gICAgZiBlXG5cbmxldCBwcmludF9saW5rX3JocyB+bHR5cGVzIHNpZ3MgZiAoKGUsIF8pLCBzKSA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IExpbmtlZCBpIC0+XG4gICAgcHJpbnRfbGlua1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAoZnVuIF8gKCkgLT4gKCkpXG4gICAgICBmXG4gICAgICAoTE5LX1ZBTFVFIChpLCAoKSkpXG4gIHwgRnJlZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgTWFpbnRhaW5lZCAtPlxuICAgIHByaW50X2xpbmtcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKVxuICAgICAgZiBlXG4gIHwgRXJhc2VkIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcHJpbnRfaW50Zl9saHMgfmx0eXBlcyBzaWdzIGFnX3R5IGYgKHBvcnRzLCBpbnRzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlblxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgICAgfCAoKExOS19TT01FIHwgTE5LX0ZSRUUgfCBBTllfRlJFRSB8IExOS19UWVBFIF8gfCBMTktfVkFMVUUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgXyAtPlxuICAgICAgICAgIChtYXRjaCBpbnRzLihpKSB3aXRoXG4gICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0VSQVNFRCB8IElfQU5ZX0NIQU5HRUQgXyAtPiBmYWxzZVxuICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCBfIHwgSV9WQUxfRVJBU0VEIF8gLT4gdHJ1ZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFbJWFdXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICBpXG4gICAgICAgICAgICAocHJpbnRfaW50ZXJuYWxfbGhzIHNpZ3MgYWdfdHkgaSlcbiAgICAgICAgICAgIGludHMuKGkpXG4gICAgICAgICAgICAocHJpbnRfbGlua19saHMgfmx0eXBlcyBzaWdzKVxuICAgICAgICAgICAgcG9ydHMuKGkpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSAoc3VjYyBpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGF1eCBlbXB0eSAoc3VjYyBpKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBwcmludF9pbnRmX3JocyB+bHR5cGVzIHNpZ3MgYWdfdHkgZiAocG9ydHMsIGludHMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBMTktfRlJFRSB8IEFOWV9GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCAoRXJhc2VkIHwgRnJlZWQgfCBMaW5rZWQgXykgLT4gdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgTWFpbnRhaW5lZCAtPlxuICAgICAgICAgIChtYXRjaCBpbnRzLihpKSB3aXRoXG4gICAgICAgICAgfCBJX0FOWSAtPiBmYWxzZVxuICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT4gaSA8PiBqXG4gICAgICAgICAgfCBJX0FOWV9FUkFTRUQgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX1ZBTF9FUkFTRUQgXyAtPiB0cnVlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVslYV1cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgIGlcbiAgICAgICAgICAgIChwcmludF9pbnRlcm5hbF9yaHMgc2lncyBhZ190eSBpKVxuICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgIChwcmludF9saW5rX3JocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHByaW50X2FnZW50X2xocyB+bHR5cGVzIHNpZ3MgZiBhZyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pXCJcbiAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgYWcucmFfdHlwZVxuICAgIChwcmludF9pbnRmX2xocyB+bHR5cGVzIHNpZ3MgYWcucmFfdHlwZSlcbiAgICAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMpXG5cbmxldCBwcmludF9hZ2VudF9yaHMgfmx0eXBlcyBzaWdzIGYgYWcgPVxuICBpZiBub3QgYWcucmFfZXJhc2VkIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKVwiXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICBhZy5yYV90eXBlXG4gICAgICAocHJpbnRfaW50Zl9yaHMgfmx0eXBlcyBzaWdzIGFnLnJhX3R5cGUpXG4gICAgICAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMpXG5cbmxldCBwcmludF9yaHMgfm5vQ291bnRlcnMgfmx0eXBlcyBzaWdzIGNyZWF0ZWQgZiBtaXggPVxuICBsZXQgcmVjIGF1eCBlbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmluaXRpYWxfY29tbWE6KG5vdCBlbXB0eSkgfmNyZWF0ZWQ6ZmFsc2VcbiAgICAgICAgfnNpZ3MgZiBjcmVhdGVkXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGgucmFfZXJhc2VkIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldC5cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuY29tbWEpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSB0XG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLmNvbW1hKVxuICAgICAgICAgICAgKHByaW50X2FnZW50X3JocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSB0XG4gICAgICApXG4gIGluXG4gIGF1eCB0cnVlIG1peFxuXG5sZXQgcHJpbnRfcmF0ZXMgfm5vQ291bnRlcnMgc2lncyBwcl90b2sgcHJfdmFyIGYgciA9XG4gIGxldCBsdHlwZXMgPSBmYWxzZSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiIEBAICVhJXRcIlxuICAgIChBbGdfZXhwci5wcmludFxuICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIFtdKVxuICAgICAgICAgICBtKVxuICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgKGZzdCByLnJfcmF0ZSlcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIucl91bl9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lICgocmEsIF8pLCBtYXhfZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWElYX1cIlxuICAgICAgICAgIChBbGdfZXhwci5wcmludFxuICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIFtdKVxuICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgcmFcbiAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiAobWQsIF8pIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCJcbiAgICAgICAgICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgICAgICAgICBwcl90b2sgcHJfdmFyKVxuICAgICAgICAgICAgICAgICBtZCkpXG4gICAgICAgICAgbWF4X2Rpc3QpXG5cbmxldCBwcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsIHNpZ3MgcHJfdG9rIHByX3ZhciBmIHIgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4ldCV0JWEldEBdXCJcbiAgICAoZnVuIGYgLT5cbiAgICAgIGlmIGZ1bGwgfHwgci5yX2VkaXRfc3R5bGUgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2Ugci5yX2NyZWF0ZWQpXG4gICAgICAgICAgci5yX21peFxuICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6KHIucl9taXggPD4gW10pIH5zaWdzKVxuICAgICAgICAgIHIucl9jcmVhdGVkXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0JWEgLT4gJWFcIlxuICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChwcmludF9hZ2VudF9saHMgfmx0eXBlczpmYWxzZSBzaWdzKSlcbiAgICAgICAgICByLnJfbWl4XG4gICAgICAgICAgKGZ1biBmIC0+IGlmIHIucl9taXggPD4gW10gJiYgci5yX2NyZWF0ZWQgPD4gW10gdGhlbiBQcC5jb21tYSBmKVxuICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIikpXG4gICAgICAgICAgci5yX2NyZWF0ZWRcbiAgICAgICAgICAocHJpbnRfcmhzIH5ub0NvdW50ZXJzIH5sdHlwZXM6ZmFsc2Ugc2lncyByLnJfY3JlYXRlZClcbiAgICAgICAgICByLnJfbWl4KVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5yX2RlbHRhX3Rva2VucyB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IF8gOjogXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgfCBcIilcbiAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgKChuYiwgXyksIHRrKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCJcbiAgICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2UgW10pXG4gICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgICBwcl90b2sgcHJfdmFyKVxuICAgICAgICAgICBuYiBwcl90b2sgdGspKVxuICAgIHIucl9kZWx0YV90b2tlbnNcbiAgICAoZnVuIGYgLT4gaWYgZnVsbCB0aGVuIHByaW50X3JhdGVzIH5ub0NvdW50ZXJzIHNpZ3MgcHJfdG9rIHByX3ZhciBmIHIpXG5cbmxldCBydWxlX2FnZW50X3RvX2pzb24gZmlsZW5hbWVzIGEgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcInR5cGVcIiwgYEludCBhLnJhX3R5cGU7XG4gICAgICAoIFwiYmluZGluZ3NcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKGUsIHMpIGMgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgKGxpbmtfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHMsIGEpIC0+IFsgYEludCBzOyBgSW50IGEgXSkpXG4gICAgICAgICAgICAgICAgICAgICBlO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaGluZ190b19qc29uIHM7XG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIDo6IGMpXG4gICAgICAgICAgICAgYS5yYV9wb3J0cyBbXSkgKTtcbiAgICAgICggXCJzdGF0ZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4geCBjIC0+IHJ1bGVfaW50ZXJuYWxfdG9fanNvbiB4IDo6IGMpXG4gICAgICAgICAgICAgYS5yYV9pbnRzIFtdKSApO1xuICAgICAgXCJlcmFzZWRcIiwgYEJvb2wgYS5yYV9lcmFzZWQ7XG4gICAgXVxuXG5sZXQgcnVsZV9hZ2VudF9vZl9qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBwb3J0cyA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiYmluZGluZ3NcIiBsIHdpdGhcbiAgICAgICAgIHwgYExpc3QgcyAtPlxuICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBgTGlzdCBbIGU7IHMgXSAtPlxuICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAobGlua19vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbIGBJbnQgczsgYEludCBhIF0gLT4gcywgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgICAgICAgICAgICAgICAgICAgIGUsXG4gICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nX29mX2pzb24gcyApXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHNcbiAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICBpblxuICAgICAgIGxldCBpbnRzID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJzdGF0ZXNcIiBsIHdpdGhcbiAgICAgICAgIHwgYExpc3QgcyAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCBydWxlX2ludGVybmFsX29mX2pzb24gc1xuICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgcmFfdHlwZSA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBcInR5cGVcIiBsKTtcbiAgICAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgICByYV9pbnRzID0gaW50cztcbiAgICAgICAgIHJhX2VyYXNlZCA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2wgKExpc3QuYXNzb2MgXCJlcmFzZWRcIiBsKTtcbiAgICAgICAgIHJhX3N5bnRheCA9IFNvbWUgKHBvcnRzLCBpbnRzKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBydWxlX2FnZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcnVsZV9hZ2VudFwiLCB4KSlcblxubGV0IHJ1bGVfbWl4dHVyZV90b19qc29uIGZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLm9mX2xpc3QgKHJ1bGVfYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpXG5cbmxldCBydWxlX21peHR1cmVfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBKc29uVXRpbC50b19saXN0IChydWxlX2FnZW50X29mX2pzb24gZmlsZW5hbWVzKVxuXG5sZXQgbGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChydWxlX21peHR1cmVfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKHJ1bGVfbWl4dHVyZV9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHJ1bGVfdG9fanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcIm1peHR1cmVcIiwgcnVsZV9taXh0dXJlX3RvX2pzb24gZmlsZW5hbWVzIHIucl9taXg7XG4gICAgICBcImNyZWF0ZWRcIiwgUmF3X21peHR1cmUudG9fanNvbiByLnJfY3JlYXRlZDtcbiAgICAgICggXCJkZWx0YV90b2tlbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwidmFsXCIgfmxhYjI6XCJ0b2tcIlxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQpXG4gICAgICAgICAgci5yX2RlbHRhX3Rva2VucyApO1xuICAgICAgKCBcInJhdGVcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykgci5yX3JhdGVcbiAgICAgICk7XG4gICAgICAoIFwidW5hcnlfcmF0ZVwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKSkpXG4gICAgICAgICAgci5yX3VuX3JhdGUgKTtcbiAgICAgIFwiZWRpdF9zdHlsZVwiLCBgQm9vbCByLnJfZWRpdF9zdHlsZTtcbiAgICBdXG5cbmxldCBydWxlX29mX2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPCA3IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJfbWl4ID0gcnVsZV9taXh0dXJlX29mX2pzb24gZmlsZW5hbWVzIChMaXN0LmFzc29jIFwibWl4dHVyZVwiIGwpO1xuICAgICAgICAgcl9jcmVhdGVkID0gUmF3X21peHR1cmUub2ZfanNvbiAoTGlzdC5hc3NvYyBcImNyZWF0ZWRcIiBsKTtcbiAgICAgICAgIHJfZGVsdGFfdG9rZW5zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5sYWIxOlwidmFsXCIgfmxhYjI6XCJ0b2tcIlxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJkZWx0YV90b2tlbnNcIiBsKTtcbiAgICAgICAgIHJfcmF0ZSA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJhdGVcIiBsKTtcbiAgICAgICAgIHJfdW5fcmF0ZSA9XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSkpKVxuICAgICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidW5hcnlfcmF0ZVwiIGwpXG4gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKTtcbiAgICAgICAgIHJfZWRpdF9zdHlsZSA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2wgKExpc3QuYXNzb2MgXCJlZGl0X3N0eWxlXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBydWxlXCIsIHgpKVxuXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBvcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IF8gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQSBtb2RpZmljYXRpb24gaXMgZm9yYmlkZGVuIGhlcmUuXCIsIHBvcykpXG5cbmxldCByYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKFwiSW4gYSBwYXR0ZXJuLCBhIHNpdGUgY2Fubm90IGhhdmUgc2V2ZXJhbCBpbnRlcm5hbCBzdGF0ZXMuXCIsIHBvcykpXG5cbmxldCByYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzIH5zaWRlIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJUaGUgXCIgXiBzdGF0dXMgXiBcIiBzdGF0ZSBvZiBhZ2VudCAnXCIgXiBhZ2VudF9uYW1lIF4gXCInLCBzaXRlICdcIiBeIG5hXG4gICAgICAgICBeIFwiJyBvbiB0aGUgXCIgXiBzaWRlIF4gXCIgaGFuZCBzaWRlIGlzIHVuZGVyc3BlY2lmaWVkXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlNpdGUgJ1wiIF4gbmEgXiBcIicgb2NjdXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoaXMgYWdlbnQgJ1wiIF4gYWdlbnRfbmFtZVxuICAgICAgICAgXiBcIidcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJTaXRlICdcIiBeIG5hIF4gXCInIG9jY3VycyBib3RoIGFzIHBvcnQgYW5kIGFzIGNvdW50ZXIgaW4gJ1wiXG4gICAgICAgICBeIGFnZW50X25hbWUgXiBcIidcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlRoZSBsaW5rICdcIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgXiBcIicgb2NjdXJzIG9ubHkgb25lIHRpbWUgaW4gdGhlIG1peHR1cmUuXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQgaSBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiVGhlIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpIF4gXCInIHNob3VsZCBiZSBtYWRlIGZyZWUgaW4gdGhlIHNpdGUgJ1wiXG4gICAgICAgICBeIG5hIF4gXCInIG9mIGFnZW50ICdcIiBeIGFnZW50X25hbWVcbiAgICAgICAgIF4gXCInLCBzaW5jZSBpdCB3aWxsIG1hZGUgYmUgZnJlZSBieSBzaWRlLWVmZmVjdC5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgY29weV9ydWxlX2FnZW50IGEgPVxuICBsZXQgcCA9IEFycmF5LmNvcHkgYS5yYV9wb3J0cyBpblxuICBsZXQgaSA9IEFycmF5LmNvcHkgYS5yYV9pbnRzIGluXG4gIHtcbiAgICByYV90eXBlID0gYS5yYV90eXBlO1xuICAgIHJhX2VyYXNlZCA9IGEucmFfZXJhc2VkO1xuICAgIHJhX3BvcnRzID0gcDtcbiAgICByYV9pbnRzID0gaTtcbiAgICByYV9zeW50YXggPVxuICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gXyAtPiBBcnJheS5jb3B5IHAsIEFycmF5LmNvcHkgaSkgYS5yYV9zeW50YXg7XG4gIH1cblxubGV0IGFnZW50X3RvX2VyYXNlZCBzaWdzIHIgPVxuICBsZXQgcmFfcG9ydHMgPSBBcnJheS5tYXAgKGZ1biAoYSwgXykgLT4gYSwgRXJhc2VkKSByLnJhX3BvcnRzIGluXG4gIGxldCByYV9pbnRzID1cbiAgICBBcnJheS5tYXBpXG4gICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IElfVkFMX0VSQVNFRCBpXG4gICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAobWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgci5yYV90eXBlIGogc2lncyB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gSV9BTllfRVJBU0VEXG4gICAgICAgICAgfCBOb25lIC0+IElfQU5ZKSlcbiAgICAgIHIucmFfaW50c1xuICBpblxuICB7XG4gICAgcmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICByYV9lcmFzZWQgPSB0cnVlO1xuICAgIHJhX3BvcnRzO1xuICAgIHJhX2ludHM7XG4gICAgcmFfc3ludGF4ID1cbiAgICAgIChtYXRjaCByLnJhX3N5bnRheCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIF8gLT4gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKSk7XG4gIH1cblxubGV0IHRvX2VyYXNlZCAoc2lncyA6IFNpZ25hdHVyZS5zKSAoeCA6IHJ1bGVfbWl4dHVyZSkgOiBydWxlX21peHR1cmUgPVxuICBMaXN0Lm1hcCAoYWdlbnRfdG9fZXJhc2VkIHNpZ3MpIHhcblxubGV0IHRvX21haW50YWluZWQgKHggOiBydWxlX21peHR1cmUpIDogcnVsZV9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIHIgLT5cbiAgICAgIGxldCBwb3J0cyA9IEFycmF5Lm1hcCAoZnVuIChhLCBfKSAtPiBhLCBNYWludGFpbmVkKSByLnJhX3BvcnRzIGluXG4gICAgICBsZXQgaW50cyA9XG4gICAgICAgIEFycmF5Lm1hcFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IElfVkFMX0NIQU5HRUQgKGksIGkpXG4gICAgICAgICAgICB8IElfQU5ZIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+IElfQU5ZKVxuICAgICAgICAgIHIucmFfaW50c1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgcmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgIHJhX2ludHMgPSBpbnRzO1xuICAgICAgICByYV9zeW50YXggPVxuICAgICAgICAgIChtYXRjaCByLnJhX3N5bnRheCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgXyAtPiBTb21lIChwb3J0cywgaW50cykpO1xuICAgICAgfSlcbiAgICB4XG5cbmxldCB0b19yYXdfbWl4dHVyZSBzaWdzIHggPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gciAtPlxuICAgICAgbGV0IGludGVybmFscyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPiBTb21lIGlcbiAgICAgICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAgICAgU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgci5yYV90eXBlIGogc2lncylcbiAgICAgICAgICByLnJhX2ludHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9ydHMgPVxuICAgICAgICBBcnJheS5tYXBpXG4gICAgICAgICAgKGZ1biBqIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IChMTktfU09NRSwgcG9zIHwgTE5LX1RZUEUgXywgcG9zKSwgXyAtPlxuICAgICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIHIucmFfdHlwZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcG9ydF9uYW1lID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHIucmFfdHlwZSkgalxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICByYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgICAgYWdlbnRfbmFtZSAocG9ydF9uYW1lLCBwb3MpXG4gICAgICAgICAgICB8IChMTktfVkFMVUUgKGksIF8pLCBfKSwgXyAtPiBSYXdfbWl4dHVyZS5WQUwgaVxuICAgICAgICAgICAgfCAoKExOS19BTlkgfCBBTllfRlJFRSB8IExOS19GUkVFKSwgXyksIF8gLT4gUmF3X21peHR1cmUuRlJFRSlcbiAgICAgICAgICByLnJhX3BvcnRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSByLnJhX3R5cGU7XG4gICAgICAgIFJhd19taXh0dXJlLmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgUmF3X21peHR1cmUuYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgfSlcbiAgICB4XG5cbmxldCBtYXhfbGlua19pZCByID1cbiAgbGV0IG1heF9zIG0gPSBmdW5jdGlvblxuICAgIHwgTGlua2VkIGkgLT4gbWF4IGkgbVxuICAgIHwgRnJlZWQgfCBNYWludGFpbmVkIHwgRXJhc2VkIC0+IG1cbiAgaW5cbiAgbGV0IG1heF9saW5rX2lkX3NpdGVzIG1heF9pZCBhZyA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1heF9pZCAtPiBmdW5jdGlvblxuICAgICAgICB8IChMTktfVkFMVUUgKGosIF8pLCBfKSwgcyAtPiBtYXhfcyAobWF4IGogbWF4X2lkKSBzXG4gICAgICAgIHwgKChMTktfVFlQRSBfIHwgTE5LX1NPTUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBBTllfRlJFRSksIF8pLCBzIC0+XG4gICAgICAgICAgbWF4X3MgbWF4X2lkIHMpXG4gICAgICBtYXhfaWQgYWcucmFfcG9ydHNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgbWF4X2xpbmtfaWRfc2l0ZXMgMCByXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbGlua19vY2N1cmVuY2VfZmFpbHVyZSBrZXkgcG9zID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICggXCJCdWc6IExpbmsgXCIgXiBzdHJpbmdfb2ZfaW50IGtleVxuICAgICAgICAgXiBcIiBpcyBwcm9ibGVtYXRpYyEgTEthcHBhIGlzIGVpdGhlciBicm9rZW5cIlxuICAgICAgICAgXiBcIiBvciB1bnVzZWQhIFBsZWFzZSByZXBvcnQuXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgcF9pZCA9XG4gIHNuZCBjb250YWN0X21hcC4odHlfaWQpLihwX2lkKVxuXG5sZXQgZmluZF9pbXBsaWNpdF9pbmZvcyBjb250YWN0X21hcCBhZ3MgPVxuICBsZXQgbmV3X3N3aXRjaCA9IGZ1bmN0aW9uXG4gICAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBMS2FwcGEuTWFpbnRhaW5lZFxuICAgIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkVyYXNlZCAtPiBMS2FwcGEuRnJlZWRcbiAgaW5cbiAgbGV0IHJlYyBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIGkgPVxuICAgIGxldCB0eV9pZCA9IGFnLkxLYXBwYS5yYV90eXBlIGluXG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuIChcbiAgICAgIGxldCBjdXJyZW50JyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgIH1cbiAgICAgICAgOjogY3VycmVudFxuICAgICAgaW5cbiAgICAgIGF1eF9hZ3MgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50JyB0b2RvcyBhZ190YWlsXG4gICAgKSBlbHNlIChcbiAgICAgIG1hdGNoIHBvcnRzLihpKSB3aXRoXG4gICAgICB8IChMS2FwcGEuTE5LX1RZUEUgKHAsIGEpLCBfKSwgcyAtPlxuICAgICAgICBsZXQgb3JfdHkgPSBpLCB0eV9pZCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHBvcnRzLihpKSA8LVxuICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsIChwLCBhKSkpLCBzXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9vbmUgKHN1Y2MgZnJlZV9pZCkgcHJldmlvdXMgY3VycmVudFxuICAgICAgICAgICgoZnJlZV9pZCwgKHAsIGEpLCBvcl90eSwgbmV3X3N3aXRjaCBzKSA6OiB0b2RvcylcbiAgICAgICAgICBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX1NPTUUsIF8pLCBzIC0+XG4gICAgICAgIGxldCBvcl90eSA9IGksIHR5X2lkIGluXG4gICAgICAgIE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAgKGZ1biAoYSwgcCkgcHJldicgLT5cbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IHBvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsIChwLCBhKSkpLCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRvZG9zJyA9IChmcmVlX2lkLCAocCwgYSksIG9yX3R5LCBuZXdfc3dpdGNoIHMpIDo6IHRvZG9zIGluXG4gICAgICAgICAgICBhdXhfb25lIChzdWNjIGZyZWVfaWQpIHByZXYnIGN1cnJlbnQgdG9kb3MnIGFnX3RhaWwgYWcgcG9ydHMnXG4gICAgICAgICAgICAgIChzdWNjIGkpKVxuICAgICAgICAgIChwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIGkpXG4gICAgICAgICAgcHJldmlvdXNcbiAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgXywgXyksIF8gLT5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBwb3MpLCAoKExLYXBwYS5NYWludGFpbmVkIHwgTEthcHBhLkVyYXNlZCkgYXMgcykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAoKiBEbyBub3QgbWFrZSB0ZXN0IGlmIGJlaW5nIGZyZWUgaXMgdGhlIG9ubHkgcG9zc2liaWxpdHkgKilcbiAgICAgICAgICBpZiBNb2RzLkludDJTZXQuaXNfZW1wdHkgKHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgaSlcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBwb3J0cy4oaSkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgTEthcHBhLkZyZWVkIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQSBmcmVlIHNpdGUgY2Fubm90IGJlIGZyZWVkXCJcbiAgICAgIHwgKExLYXBwYS5MTktfRlJFRSwgXyksIExLYXBwYS5MaW5rZWQgXyAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgTEthcHBhLk1haW50YWluZWQgLT5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBwb3MpLFxuICAgICAgICAgICgoTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5GcmVlZCkgYXMgcykgKSAtPlxuICAgICAgICBpZlxuICAgICAgICAgIE1vZHMuSW50MlNldC5pc19lbXB0eSAocG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBpKVxuICAgICAgICAgICYmIHMgPSBMS2FwcGEuRnJlZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogRG8gbm90IG1ha2UgdGVzdCBpcyBiZWluZyBmcmVlIGlzIHRoZSBvbmx5IHBvc3NpYmlsaXR5ICopXG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKGkpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICApXG4gIGFuZCBhdXhfYWdzIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoTGlzdC5yZXYgY3VycmVudCwgdG9kb3MpIDo6IHByZXZpb3VzXG4gICAgfCBhZyA6OiBhZ190YWlsIC0+XG4gICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIGFnLkxLYXBwYS5yYV9wb3J0cyAwXG4gIGluXG4gIGF1eF9hZ3MgKHN1Y2MgKExLYXBwYS5tYXhfbGlua19pZCBhZ3MpKSBbXSBbXSBbXSBhZ3NcblxubGV0IGNvbXBsZXRlX3dpdGhfY2FuZGlkYXRlIG91dHMgcHJldnMgYWcgYWdfdGFpbCBpZCB0b2RvIHBfaWQgZHN0X2luZm8gcF9zd2l0Y2hcbiAgICA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgYWNjIHBvcnQgLT5cbiAgICAgIGlmIGkgPD4gcF9pZCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgcyAtPlxuICAgICAgICAgIGlmIHMgPSBMS2FwcGEuTWFpbnRhaW5lZCB0aGVuIChcbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IGFnLkxLYXBwYS5yYV9wb3J0cyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LVxuICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSwgcF9zd2l0Y2hcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIExpc3QucmV2X2FwcGVuZCBwcmV2c1xuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZy5MS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cyc7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2ludHMgPSBhZy5MS2FwcGEucmFfaW50cztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IGFnX3RhaWwpLFxuICAgICAgICAgICAgICB0b2RvIClcbiAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICkgZWxzZSBpZiBzID0gTEthcHBhLkVyYXNlZCAmJiBwX3N3aXRjaCA9IExLYXBwYS5GcmVlZCB0aGVuIChcbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IGFnLkxLYXBwYS5yYV9wb3J0cyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LVxuICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgIHRvZG8gKVxuICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSAoaywgeCksIF8pLCBzIC0+XG4gICAgICAgICAgaWYgeCA9IGRzdF9pbmZvIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChqLCBfLCAocCcsIGEnKSwgc3cnKSAtPlxuICAgICAgICAgICAgICAgICAgaiA9IGsgJiYgaSA9IHAnICYmIGEnID0gYWcuTEthcHBhLnJhX3R5cGUgJiYgc3cnID0gcF9zd2l0Y2gpXG4gICAgICAgICAgICAgICAgdG9kb1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIF8gXSwgdG9kbycgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIHgpKSwgc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIExpc3QucmV2X2FwcGVuZCBwcmV2c1xuICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cyc7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgICB0b2RvJyApXG4gICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgfCBbXSwgXyAtPiBhY2NcbiAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCAoKExLYXBwYS5MTktfVFlQRSBfIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkxOS19TT01FKSwgXyksIF8gLT4gYWNjXG4gICAgICApKVxuICAgIG91dHMgYWcuTEthcHBhLnJhX3BvcnRzXG5cbmxldCBuZXdfYWdlbnRfd2l0aF9vbmVfbGluayBzaWdzIHR5X2lkIHBvcnQgbGluayBkc3RfaW5mbyBzd2l0Y2ggPVxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eV9pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCAoKSA9XG4gICAgcG9ydHMuKHBvcnQpIDwtXG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAobGluaywgZHN0X2luZm8pKSwgc3dpdGNoXG4gIGluXG4gIHtcbiAgICBMS2FwcGEucmFfdHlwZSA9IHR5X2lkO1xuICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzO1xuICAgIExLYXBwYS5yYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgIExLYXBwYS5yYV9lcmFzZWQgPSBmYWxzZTtcbiAgICBMS2FwcGEucmFfc3ludGF4ID0gTm9uZTtcbiAgfVxuXG5sZXQgcmVjIGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkICgoKHBvcnQsIHR5X2lkKSwgZHN0X2luZm8sIHMpIGFzIGluZm8pIGFjY1xuICAgIG91dCB0b2RvID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgICggTGlzdC5yZXZfYXBwZW5kIGFjY1xuICAgICAgICBbIG5ld19hZ2VudF93aXRoX29uZV9saW5rIHNpZ3MgdHlfaWQgcG9ydCBpZCBkc3RfaW5mbyBzIF0sXG4gICAgICB0b2RvIClcbiAgICA6OiBvdXRcbiAgfCBhZyA6OiBhZ190YWlsIC0+XG4gICAgbGV0IG91dF90YWlsID1cbiAgICAgIGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkIGluZm8gKGFnIDo6IGFjYykgb3V0IHRvZG8gYWdfdGFpbFxuICAgIGluXG4gICAgaWYgdHlfaWQgPSBhZy5MS2FwcGEucmFfdHlwZSB0aGVuXG4gICAgICBjb21wbGV0ZV93aXRoX2NhbmRpZGF0ZSBvdXRfdGFpbCBhY2MgYWcgYWdfdGFpbCBpZCB0b2RvIHBvcnQgZHN0X2luZm8gc1xuICAgIGVsc2VcbiAgICAgIG91dF90YWlsXG5cbmxldCBhZGRfaW1wbGljaXRfaW5mb3Mgc2lncyBsID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgKG0sIFtdKSA6OiB0IC0+IGF1eCAobSA6OiBhY2MpIHRcbiAgICB8IChtLCAoaWQsIGluZm8sIGRzdF9pbmZvLCBzKSA6OiB0b2RvJykgOjogdCAtPlxuICAgICAgYXV4IGFjYyAoYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgKGluZm8sIGRzdF9pbmZvLCBzKSBbXSB0IHRvZG8nIG0pXG4gIGluXG4gIGF1eCBbXSBsXG5cbmxldCBpc19saW5rZWRfb25fcG9ydCBtZSBpIGlkID0gZnVuY3Rpb25cbiAgfCAoTEthcHBhLkxOS19WQUxVRSAoaiwgXyksIF8pLCBfIHdoZW4gaSA9IGogLT4gaWQgPD4gbWVcbiAgfCAoICggKCBMS2FwcGEuTE5LX1ZBTFVFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1RZUEUgX1xuICAgICAgICB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIGZhbHNlXG5cbmxldCBpc19saW5rZWRfb24gaSBhZyA9XG4gIFRvb2xzLmFycmF5X2ZpbHRlciAoaXNfbGlua2VkX29uX3BvcnQgKC0xKSBpKSBhZy5MS2FwcGEucmFfcG9ydHMgPD4gW11cblxubGV0IGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uICgocmVtb3ZlZCwgYWRkZWQpIGFzIHRyYW5zZikgbGlua3NfdHJhbnNmIHBsYWNlXG4gICAgc2l0ZSAoY2FuZCwgXykgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBMS2FwcGEuRnJlZWQgLT5cbiAgICAoIChjYW5kIDo6IHJlbW92ZWQsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlKSA6OiBhZGRlZCksXG4gICAgICBsaW5rc190cmFuc2YgKVxuICB8IExLYXBwYS5NYWludGFpbmVkIC0+IHRyYW5zZiwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLkVyYXNlZCAtPiAoY2FuZCA6OiByZW1vdmVkLCBhZGRlZCksIGxpbmtzX3RyYW5zZlxuICB8IExLYXBwYS5MaW5rZWQgaSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGxpbmtzX3RyYW5zZiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZSkgbGlua3NfdHJhbnNmIGluXG4gICAgICAoY2FuZCA6OiByZW1vdmVkLCBhZGRlZCksIGxpbmtzX3RyYW5zZidcbiAgICB8IFNvbWUgZHN0JyAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rc190cmFuc2YgaW5cbiAgICAgICggKCBjYW5kIDo6IHJlbW92ZWQsXG4gICAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZSksIGRzdCcpIDo6IGFkZGVkICksXG4gICAgICAgIGxpbmtzX3RyYW5zZicgKSlcblxubGV0IGRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiAoKHJlbW92ZWQsIGFkZGVkKSBhcyB0cmFuc2YpIGxpbmtzX3RyYW5zZlxuICAgIHBsYWNlIHNpdGUgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBMS2FwcGEuRnJlZWQgLT5cbiAgICAoIChyZW1vdmVkLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChwbGFjZSwgc2l0ZSkgOjogYWRkZWQpLFxuICAgICAgbGlua3NfdHJhbnNmIClcbiAgfCBMS2FwcGEuRXJhc2VkIC0+IHRyYW5zZiwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuTGlua2VkIGkgLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBsaW5rc190cmFuc2Ygd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5hZGQgaSAocGxhY2UsIHNpdGUpIGxpbmtzX3RyYW5zZiBpblxuICAgICAgdHJhbnNmLCBsaW5rc190cmFuc2YnXG4gICAgfCBTb21lIGRzdCcgLT5cbiAgICAgIGxldCBsaW5rc190cmFuc2YnID0gTW9kcy5JbnRNYXAucmVtb3ZlIGkgbGlua3NfdHJhbnNmIGluXG4gICAgICAoICggcmVtb3ZlZCxcbiAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlKSwgZHN0JykgOjogYWRkZWQgKSxcbiAgICAgICAgbGlua3NfdHJhbnNmJyApKVxuXG5sZXQgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zIHBsIHMgPSBmdW5jdGlvblxuICB8IExLYXBwYS5GcmVlZCAtPiBJbnN0YW50aWF0aW9uLkZyZWUgKHBsLCBzKSA6OiBhY3Rpb25zXG4gIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLk1haW50YWluZWQgfCBMS2FwcGEuRXJhc2VkIC0+IGFjdGlvbnNcblxubGV0IGFkZF9zaWRlX3NpdGUgc2lkZV9zaXRlcyBidCBwbCBzID0gZnVuY3Rpb25cbiAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRXJhc2VkIC0+XG4gICAgKChwbCwgcyksIGJ0KSA6OiBzaWRlX3NpdGVzXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gc2lkZV9zaXRlc1xuXG5sZXQgYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0cyBwbCBzID0gZnVuY3Rpb25cbiAgfCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSwgTEthcHBhLkZyZWVkIC0+IChwbCwgcykgOjogc2lkZV9lZmZlY3RzXG4gIHwgKCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSxcbiAgICAgIChMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pIClcbiAgfCAoICggKCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVFlQRSBfXG4gICAgICAgIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIHNpZGVfZWZmZWN0c1xuXG5sZXQgYWRkX2V4dHJhX3NpZGVfZWZmZWN0cyBzaWRlX2VmZmVjdHMgcGxhY2UgcmVmaW5lZCA9XG4gIGxldCByZWMgYXV4IHNpZGVfZWZmZWN0cyBzaXRlX2lkID1cbiAgICBpZiBzaXRlX2lkIDwgMCB0aGVuXG4gICAgICBzaWRlX2VmZmVjdHNcbiAgICBlbHNlXG4gICAgICBhdXhcbiAgICAgICAgKGFkZF9mcmVlZF9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdHMgcGxhY2Ugc2l0ZV9pZCByZWZpbmVkLihzaXRlX2lkKSlcbiAgICAgICAgKHByZWQgc2l0ZV9pZClcbiAgaW5cbiAgYXV4IHNpZGVfZWZmZWN0cyAocHJlZCAoQXJyYXkubGVuZ3RoIHJlZmluZWQpKVxuXG4oKiBEZWFscyB3aXRoIHRlc3RzLCBlcmFzdXJlIGludGVybmFsIHN0YXRlIGNoYW5nZSBhbmQgcmVsZWFzZSAoYnV0XG4gICBub3QgYmluZGluZykqKVxubGV0IG1ha2VfaW5zdGFudGlhdGlvbiBwbGFjZSBsaW5rcyBldmVudCByZWZfcG9ydHMgaXNfZXJhc2VkID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAge1xuICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPSBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICBhZGRfZXh0cmFfc2lkZV9lZmZlY3RzIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCBwbGFjZVxuICAgICAgICAgIHJlZl9wb3J0cztcbiAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID0gZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgfVxuICB8IFNvbWUgKHBvcnRzLCBpbnRzKSAtPlxuICAgIChtYXRjaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgdGhpc19jY190ZXN0cyA6OiBvX2NjX3Rlc3RzIC0+XG4gICAgICBsZXQgcmVjIGF1eCBzaXRlX2lkIHRlc3RzIGFjdGlvbnMgc2lkZV9lZmZlY3RzX3NyYyBzaWRlX2VmZmVjdHNfZHN0IGxpbmtzXG4gICAgICAgICAgPVxuICAgICAgICBpZiBzaXRlX2lkID49IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICAgICAge1xuICAgICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IHRlc3RzIDo6IG9fY2NfdGVzdHM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgIH1cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHRlc3RzJywgYWN0aW9ucycgPVxuICAgICAgICAgICAgbWF0Y2ggaW50cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTlkgfCBMS2FwcGEuSV9BTllfRVJBU0VEIC0+IHRlc3RzLCBhY3Rpb25zXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIGogLT5cbiAgICAgICAgICAgICAgdGVzdHMsIEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBqKSA6OiBhY3Rpb25zXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiB0ZXN0cyxcbiAgICAgICAgICAgICAgICBpZiBpIDw+IGogdGhlblxuICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGopIDo6IGFjdGlvbnNcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zIClcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBpIC0+XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiB0ZXN0cywgYWN0aW9uc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RzJycsIGFjdGlvbnMnJywgc2lkZV9zaXRlcycsIHNpZGVfZWZmZWN0cycsIGxpbmtzJyA9XG4gICAgICAgICAgICBtYXRjaCBwb3J0cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQgLT5cbiAgICAgICAgICAgICAgICAgIGFkZF9mcmVlZF9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdHNfZHN0IHBsYWNlIHNpdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgcmVmX3BvcnRzLihzaXRlX2lkKVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5GcmVlZCAtPlxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBhZGRfc2lkZV9zaXRlIHNpZGVfZWZmZWN0c19zcmMgSW5zdGFudGlhdGlvbi5BTlkgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0cycsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSXNfRnJlZSAocGxhY2UsIHNpdGVfaWQpIDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfc3JjLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSXNfQm91bmQgKHBsYWNlLCBzaXRlX2lkKSA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgYWRkX3NpZGVfc2l0ZSBzaWRlX2VmZmVjdHNfc3JjIEluc3RhbnRpYXRpb24uQk9VTkQgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgIGxpbmtzIClcbiAgICAgICAgICAgIHwgKExLYXBwYS5MTktfVFlQRSAoYiwgYSksIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlICgocGxhY2UsIHNpdGVfaWQpLCAoYSwgYikpXG4gICAgICAgICAgICAgICAgOjogdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIGFkZF9zaWRlX3NpdGUgc2lkZV9lZmZlY3RzX3NyY1xuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uQk9VTkRfVFlQRSAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChpLCBfKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgbGlua3Mgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICggeCA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMsXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAucmVtb3ZlIGkgbGlua3MgKVxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAoIHRlc3RzJyxcbiAgICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgICBsaW5rcyApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChzdWNjIHNpdGVfaWQpIHRlc3RzJycgYWN0aW9ucycnIHNpZGVfc2l0ZXMnIHNpZGVfZWZmZWN0cycgbGlua3MnXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggMFxuICAgICAgICAoSW5zdGFudGlhdGlvbi5Jc19IZXJlIHBsYWNlIDo6IHRoaXNfY2NfdGVzdHMpXG4gICAgICAgIChpZiBpc19lcmFzZWQgdGhlblxuICAgICAgICAgICBJbnN0YW50aWF0aW9uLlJlbW92ZSBwbGFjZSA6OiBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmNcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IGxpbmtzKVxuXG5sZXQgcmVjIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayByZWdpc3RlcmVkX2xpbmtzXG4gICAgKChyZW1vdmVkLCBhZGRlZCkgYXMgdHJhbnNmKSBsaW5rc190cmFuc2YgaW5zdGFudGlhdGlvbnMgcmVtYWlucyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByZWdpc3RlcmVkX2xpbmtzIHdpdGhcbiAgICB8IE5vbmUgLT4gd2ssIHRyYW5zZiwgbGlua3NfdHJhbnNmLCBpbnN0YW50aWF0aW9ucywgcmVtYWluc1xuICAgIHwgU29tZSAoa2V5LCBfKSAtPiBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGtleSBMb2MuZHVtbXkpXG4gIHwgYWcgOjogYWdfbCAtPlxuICAgIGxldCBub2RlLCB3ayA9IFBhdHRlcm4ubmV3X25vZGUgd2sgYWcuTEthcHBhLnJhX3R5cGUgaW5cbiAgICBsZXQgcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAobm9kZSwgaWQpIGluXG4gICAgbGV0IHRyYW5zZicgPVxuICAgICAgaWYgYWcuTEthcHBhLnJhX2VyYXNlZCB0aGVuXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgcGxhY2UgOjogcmVtb3ZlZCwgYWRkZWRcbiAgICAgIGVsc2VcbiAgICAgICAgdHJhbnNmXG4gICAgaW5cbiAgICBsZXQgcmVjIGhhbmRsZV9wb3J0cyB3ayByX2wgY19sIChyZW1vdmVkLCBhZGRlZCkgbF90IHJlIGFjYyBzaXRlX2lkID1cbiAgICAgIGlmIHNpdGVfaWQgPSBBcnJheS5sZW5ndGggYWcuTEthcHBhLnJhX3BvcnRzIHRoZW4gKFxuICAgICAgICBsZXQgaW5zdGFudGlhdGlvbnMnID1cbiAgICAgICAgICBtYWtlX2luc3RhbnRpYXRpb24gcGxhY2UgY19sIGluc3RhbnRpYXRpb25zIGFnLkxLYXBwYS5yYV9wb3J0c1xuICAgICAgICAgICAgYWcuTEthcHBhLnJhX2VyYXNlZCBhZy5MS2FwcGEucmFfc3ludGF4XG4gICAgICAgIGluXG4gICAgICAgIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayByX2wgKHJlbW92ZWQsIGFkZGVkKSBsX3QgaW5zdGFudGlhdGlvbnMnIHJlXG4gICAgICAgICAgYWNjXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgdHJhbnNmLCB3aycgPVxuICAgICAgICAgIG1hdGNoIGFnLkxLYXBwYS5yYV9pbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBMS2FwcGEuSV9BTlkgLT4gKHJlbW92ZWQsIGFkZGVkKSwgd2tcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAgICggKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgIGFkZGVkICksXG4gICAgICAgICAgICAgIHdrIClcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIGogLT5cbiAgICAgICAgICAgICggKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZCwgailcbiAgICAgICAgICAgICAgICA6OiBhZGRlZCApLFxuICAgICAgICAgICAgICB3ayApXG4gICAgICAgICAgfCBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT5cbiAgICAgICAgICAgICggKGlmIGkgPSBqIHRoZW5cbiAgICAgICAgICAgICAgICAgcmVtb3ZlZCwgYWRkZWRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgICAgICAgICAgICAocGxhY2UsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgOjogcmVtb3ZlZCxcbiAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgICAgICAgICAgICAocGxhY2UsIHNpdGVfaWQsIGopXG4gICAgICAgICAgICAgICAgICAgOjogYWRkZWQgKSksXG4gICAgICAgICAgICAgIFBhdHRlcm4ubmV3X2ludGVybmFsX3N0YXRlIHdrIChub2RlLCBzaXRlX2lkKSBpIClcbiAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9FUkFTRUQgaSAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgYWRkZWQgKSxcbiAgICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgd2sgKG5vZGUsIHNpdGVfaWQpIGkgKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhZy5MS2FwcGEucmFfcG9ydHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgcG9zKSwgcyAtPlxuICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciAocGxhY2UsIHNpdGVfaWQpLFxuICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJyByX2wgY19sIHRyYW5zZicgbF90JyByZSBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgcyAtPlxuICAgICAgICAgIGxldCB3aycnID0gUGF0dGVybi5uZXdfZnJlZSB3aycgKG5vZGUsIHNpdGVfaWQpIGluXG4gICAgICAgICAgbGV0IHRyYW5zZicsIGxfdCcgPVxuICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChwbGFjZSwgc2l0ZV9pZCksIE5vbmUpXG4gICAgICAgICAgICAgIHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIHJfbCBjX2wgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICB8ICgoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19UWVBFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICBcIlRyeSB0byBjcmVhdGUgdGhlIGNvbm5lY3RlZCBjb21wb25lbnRzIG9mIGFuIGFtYmlndW91cyBcXFxuICAgICAgICAgICAgICAgICAgIG1peHR1cmUuXCIpKVxuICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChpLCBfKSwgcG9zKSwgcyAtPlxuICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIHJfbCB3aXRoXG4gICAgICAgICAgfCBTb21lICgobm9kZScsIHNpdGUnKSBhcyBkc3QpIC0+XG4gICAgICAgICAgICBsZXQgZHN0X3BsYWNlID0gTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKG5vZGUnLCBpZCksIHNpdGUnIGluXG4gICAgICAgICAgICBsZXQgd2snJyA9IFBhdHRlcm4ubmV3X2xpbmsgd2snIChub2RlLCBzaXRlX2lkKSBkc3QgaW5cbiAgICAgICAgICAgIGxldCBjX2wnID1cbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0X3BsYWNlKSlcbiAgICAgICAgICAgICAgICBjX2xcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZV9pZCksIGRzdF9wbGFjZSksXG4gICAgICAgICAgICAgICAgICBTb21lIHBvcyApXG4gICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIChNb2RzLkludE1hcC5yZW1vdmUgaSByX2wpIGNfbCcgdHJhbnNmJyBsX3QnIHJlXG4gICAgICAgICAgICAgIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9maWx0ZXJcbiAgICAgICAgICAgICAgICAgKGlzX2xpbmtlZF9vbl9wb3J0IHNpdGVfaWQgaSlcbiAgICAgICAgICAgICAgICAgYWcuTEthcHBhLnJhX3BvcnRzXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIHNpdGVfaWQnIF1cbiAgICAgICAgICAgICgqIGxpbmsgYmV0d2VlbiAyIHNpdGVzIG9mIDEgYWdlbnQgKilcbiAgICAgICAgICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IG5vdCAoaXNfbGlua2VkX29uIGkgeCkpIGFjY1xuICAgICAgICAgICAgICAgICAgICYmIExpc3QuZm9yX2FsbCAoZnVuIHggLT4gbm90IChpc19saW5rZWRfb24gaSB4KSkgcmUgLT5cbiAgICAgICAgICAgICAgbGV0IHdrJycsICh0cmFuc2YnLCBsX3QnKSA9XG4gICAgICAgICAgICAgICAgaWYgc2l0ZV9pZCcgPiBzaXRlX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgICggUGF0dGVybi5uZXdfbGluayB3aycgKG5vZGUsIHNpdGVfaWQpIChub2RlLCBzaXRlX2lkJyksXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFjZSwgc2l0ZV9pZCksIChwbGFjZSwgc2l0ZV9pZCcpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgICAgICAgICBzIClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICB3aycsIGRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB0cmFuc2YgbF90IHBsYWNlIHNpdGVfaWQgc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgY19sJyA9XG4gICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvXG4gICAgICAgICAgICAgICAgICAgICAoKHBsYWNlLCBzaXRlX2lkKSwgKHBsYWNlLCBzaXRlX2lkJykpKVxuICAgICAgICAgICAgICAgICAgY19sXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIHJfbCBjX2wnIHRyYW5zZicgbF90JyByZSBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgIHwgXyA6OiBfIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3NcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKCogbGluayBiZXR3ZWVuIDIgYWdlbnRzICopXG4gICAgICAgICAgICAgIGxldCByX2wnID0gTW9kcy5JbnRNYXAuYWRkIGkgKG5vZGUsIHNpdGVfaWQpIHJfbCBpblxuICAgICAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICAgICAgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBMaXN0LnBhcnRpdGlvbiAoaXNfbGlua2VkX29uIGkpIHJlIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSwgcmUnIC0+XG4gICAgICAgICAgICAgICAgaWYgTGlzdF91dGlsLmV4aXN0c191bmlxIChpc19saW5rZWRfb24gaSkgYWNjIHRoZW5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycgcl9sJyBjX2wgdHJhbnNmJyBsX3QnIHJlJyBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGkgcG9zXG4gICAgICAgICAgICAgIHwgWyBuIF0sIHJlJ1xuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4geCAtPiBub3QgKGlzX2xpbmtlZF9vbiBpIHgpKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBoYW5kbGVfcG9ydHMgd2snIHJfbCcgY19sIHRyYW5zZicgbF90JyByZScgKG4gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgICAgfCBfLCBfIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3MpKSlcbiAgICAgIClcbiAgICBpblxuICAgIGhhbmRsZV9wb3J0cyB3ayByZWdpc3RlcmVkX2xpbmtzIE1vZHMuSW50TWFwLmVtcHR5IHRyYW5zZicgbGlua3NfdHJhbnNmXG4gICAgICByZW1haW5zIGFnX2wgMFxuXG5sZXQgcmVjIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyAocmVtb3ZlZCwgYWRkZWQpIGxpbmtzX3RyYW5zZiBjcmVhdGVfYWN0aW9uc1xuICAgIGFjdGlvbnMgZnJlc2ggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgbGlua3NfdHJhbnNmIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2X2FwcGVuZCBhY3Rpb25zIGNyZWF0ZV9hY3Rpb25zLCAoTGlzdC5yZXYgcmVtb3ZlZCwgTGlzdC5yZXYgYWRkZWQpXG4gICAgfCBTb21lIChpLCBfKSAtPiBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGkgTG9jLmR1bW15KVxuICB8IGFnIDo6IGFnX2wgLT5cbiAgICBsZXQgcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5GcmVzaCAoYWcuUmF3X21peHR1cmUuYV90eXBlLCBmcmVzaCkgaW5cbiAgICBsZXQgcmVjIGhhbmRsZV9wb3J0cyBhZGRlZCBsX3QgYWN0aW9ucyBpbnRmIHNpdGVfaWQgPVxuICAgICAgaWYgc2l0ZV9pZCA9IEFycmF5Lmxlbmd0aCBhZy5SYXdfbWl4dHVyZS5hX3BvcnRzIHRoZW4gKFxuICAgICAgICBsZXQgY3JlYXRlX2FjdGlvbnMnID1cbiAgICAgICAgICBJbnN0YW50aWF0aW9uLkNyZWF0ZSAocGxhY2UsIExpc3QucmV2IGludGYpIDo6IGNyZWF0ZV9hY3Rpb25zXG4gICAgICAgIGluXG4gICAgICAgIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyAocmVtb3ZlZCwgYWRkZWQpIGxfdCBjcmVhdGVfYWN0aW9ucycgYWN0aW9uc1xuICAgICAgICAgIChzdWNjIGZyZXNoKSBhZ19sXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgYWRkZWQnLCBhY3Rpb25zJywgcG9pbnQgPVxuICAgICAgICAgIG1hdGNoIGFnLlJhd19taXh0dXJlLmFfaW50cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhZGRlZCwgYWN0aW9ucywgKHNpdGVfaWQsIE5vbmUpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAocGxhY2UsIHNpdGVfaWQsIGkpXG4gICAgICAgICAgICAgIDo6IGFkZGVkLFxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKHBsYWNlLCBzaXRlX2lkKSwgaSkgOjogYWN0aW9ucyxcbiAgICAgICAgICAgICAgKHNpdGVfaWQsIFNvbWUgaSkgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWRkZWQnJywgYWN0aW9ucycnLCBsX3QnID1cbiAgICAgICAgICBtYXRjaCBhZy5SYXdfbWl4dHVyZS5hX3BvcnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBSYXdfbWl4dHVyZS5GUkVFIC0+XG4gICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlX2lkKSA6OiBhZGRlZCcsXG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uRnJlZSAocGxhY2UsIHNpdGVfaWQpIDo6IGFjdGlvbnMnLFxuICAgICAgICAgICAgICBsX3QgKVxuICAgICAgICAgIHwgUmF3X21peHR1cmUuVkFMIGkgLT5cbiAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaSBsX3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGRzdCwgbF90JyAtPlxuICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgocGxhY2UsIHNpdGVfaWQpLCBkc3QpXG4gICAgICAgICAgICAgICAgOjogYWRkZWQnLFxuICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uQmluZF90byAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0KVxuICAgICAgICAgICAgICAgIDo6IEluc3RhbnRpYXRpb24uQmluZF90byAoZHN0LCAocGxhY2UsIHNpdGVfaWQpKVxuICAgICAgICAgICAgICAgIDo6IGFjdGlvbnMnLFxuICAgICAgICAgICAgICAgIGxfdCcgKVxuICAgICAgICAgICAgfCBOb25lLCBsX3QgLT5cbiAgICAgICAgICAgICAgbGV0IGxfdCcgPSBNb2RzLkludE1hcC5hZGQgaSAocGxhY2UsIHNpdGVfaWQpIGxfdCBpblxuICAgICAgICAgICAgICBhZGRlZCcsIGFjdGlvbnMnLCBsX3QnKVxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfcG9ydHMgYWRkZWQnJyBsX3QnIGFjdGlvbnMnJyAocG9pbnQgOjogaW50ZikgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgIClcbiAgICBpblxuICAgIGhhbmRsZV9wb3J0c1xuICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgcGxhY2UgOjogYWRkZWQpXG4gICAgICBsaW5rc190cmFuc2YgYWN0aW9ucyBbXSAwXG5cbmxldCBpbmNyX29yaWdpbiA9IGZ1bmN0aW9uXG4gIHwgKE9wZXJhdG9yLkFMRyBfIHwgT3BlcmF0b3IuTU9ESUYgXykgYXMgeCAtPiB4XG4gIHwgT3BlcmF0b3IuUlVMRSBpIC0+IE9wZXJhdG9yLlJVTEUgKHN1Y2MgaSlcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX29mX21peHR1cmUgfmRlYnVnX21vZGUgY3JlYXRlZCBtaXggKGVudiwgb3JpZ2luKSA9XG4gIGxldCBzaWdzID0gUGF0dGVybi5QcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IHJlYyBhdXggZW52IHRyYW5zZm9ybWF0aW9ucyBpbnN0YW50aWF0aW9ucyBsaW5rc190cmFuc2YgYWNjIGlkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBsZXQgcmVtb3ZlZCwgYWRkZWQgPSB0cmFuc2Zvcm1hdGlvbnMgaW5cbiAgICAgIGxldCBhY3Rpb25zJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY3MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKCgoYXgsIF8pIGFzIHgpLCAoKGF5LCBfKSBhcyB5KSlcbiAgICAgICAgICAgICAgd2hlbiBNYXRjaGluZy5BZ2VudC5pc19mcmVzaCBheCB8fCBNYXRjaGluZy5BZ2VudC5pc19mcmVzaCBheSAtPlxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHgsIHkpIDo6IGFjc1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kICh4LCB5KSA6OiBhY3NcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBfIC0+XG4gICAgICAgICAgICAgIGFjcylcbiAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnMgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb25zJyA9IExpc3QucmV2IHJlbW92ZWQsIExpc3QucmV2IGFkZGVkIGluXG4gICAgICBsZXQgYWN0aW9ucycnLCB0cmFuc2Zvcm1hdGlvbnMnJyA9XG4gICAgICAgIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyB0cmFuc2Zvcm1hdGlvbnMnIGxpbmtzX3RyYW5zZiBbXSBhY3Rpb25zJyAwXG4gICAgICAgICAgY3JlYXRlZFxuICAgICAgaW5cbiAgICAgICggKCBvcmlnaW4sXG4gICAgICAgICAgVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgYWNjLFxuICAgICAgICAgIHsgaW5zdGFudGlhdGlvbnMgd2l0aCBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhY3Rpb25zJycgfSxcbiAgICAgICAgICB0cmFuc2Zvcm1hdGlvbnMnJyApLFxuICAgICAgICAoZW52LCBPcHRpb25fdXRpbC5tYXAgaW5jcl9vcmlnaW4gb3JpZ2luKSApXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCB3ayA9IFBhdHRlcm4uYmVnaW5fbmV3IGVudiBpblxuICAgICAgbGV0IGluc3RhbnRpYXRpb25zJyA9XG4gICAgICAgIHtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gW10gOjogaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IHdrX291dCwgKHJlbW92ZWQsIGFkZGVkKSwgbF90LCBldmVudCwgcmVtYWlucyA9XG4gICAgICAgIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayBNb2RzLkludE1hcC5lbXB0eSB0cmFuc2Zvcm1hdGlvbnNcbiAgICAgICAgICBsaW5rc190cmFuc2YgaW5zdGFudGlhdGlvbnMnIHQgWyBoIF1cbiAgICAgIGluXG4gICAgICBsZXQgZW52JywgaW5qLCBjYywgY2NfaWQgPVxuICAgICAgICBQYXR0ZXJuLmZpbmlzaF9uZXcgfmRlYnVnX21vZGUgP29yaWdpbiB3a19vdXRcbiAgICAgIGluXG4gICAgICBsZXQgYWRkZWQnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopXG4gICAgICAgICAgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgcmVtb3ZlZCcgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluailcbiAgICAgICAgICByZW1vdmVkXG4gICAgICBpblxuICAgICAgbGV0IGV2ZW50JyA9XG4gICAgICAgIEluc3RhbnRpYXRpb24ucmVuYW1lX2Fic3RyYWN0X2V2ZW50IH5kZWJ1Z19tb2RlIGlkIGluaiBldmVudFxuICAgICAgaW5cbiAgICAgIGxldCBsX3QnID1cbiAgICAgICAgTW9kcy5JbnRNYXAubWFwXG4gICAgICAgICAgKGZ1biAoKHAsIHMpIGFzIHgpIC0+XG4gICAgICAgICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgICAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHAnLCBzKVxuICAgICAgICAgIGxfdFxuICAgICAgaW5cbiAgICAgIGF1eCBlbnYnIChyZW1vdmVkJywgYWRkZWQnKSBldmVudCcgbF90JyAoKGNjX2lkLCBjYykgOjogYWNjKSAoc3VjYyBpZClcbiAgICAgICAgcmVtYWluc1xuICBpblxuICBhdXggZW52IChbXSwgW10pIEluc3RhbnRpYXRpb24uZW1wdHlfZXZlbnQgTW9kcy5JbnRNYXAuZW1wdHkgW10gMCBtaXhcblxubGV0IHJ1bGVfbWl4dHVyZXNfb2ZfYW1iaWd1b3VzX3J1bGUgY29udGFjdF9tYXAgc2lncyBwcmVjb21wX21peHMgPVxuICBhZGRfaW1wbGljaXRfaW5mb3Mgc2lnc1xuICAgIChmaW5kX2ltcGxpY2l0X2luZm9zIGNvbnRhY3RfbWFwXG4gICAgICAgKExpc3QucmV2IChMaXN0LnJldl9tYXAgTEthcHBhLmNvcHlfcnVsZV9hZ2VudCBwcmVjb21wX21peHMpKSlcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfcnVsZSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gcHJlY29tcF9taXhzIGNyZWF0ZWQgPVxuICBsZXQgbm9Db3VudGVycyA9IGRlYnVnX21vZGUgaW5cbiAgbGV0IHNpZ3MgPSBQYXR0ZXJuLlByZUVudi5zaWdzIGVudiBpblxuICBsZXQgYWxsX21peHMgPVxuICAgIHJ1bGVfbWl4dHVyZXNfb2ZfYW1iaWd1b3VzX3J1bGUgY29udGFjdF9tYXAgc2lncyBwcmVjb21wX21peHNcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBjb21waWxlX21vZGVfb24gdGhlblxuICAgICAgRm9ybWF0LmVwcmludGYgXCJAWzx2Pl9fX19fKCVpKUAsJWFAXUAuXCIgKExpc3QubGVuZ3RoIGFsbF9taXhzKVxuICAgICAgICAoUHAubGlzdCBQcC5jdXQgKGZ1biBmIHggLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSVhQF1cIlxuICAgICAgICAgICAgICAgKExLYXBwYS5wcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzOnRydWUgY3JlYXRlZClcbiAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTooeCA8PiBbXSkgfnNpZ3MpXG4gICAgICAgICAgICAgICAoTGlzdC5yZXYgY3JlYXRlZCkpKVxuICAgICAgICBhbGxfbWl4c1xuICBpblxuICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAoY29ubmVjdGVkX2NvbXBvbmVudHNfb2ZfbWl4dHVyZSB+ZGVidWdfbW9kZSBjcmVhdGVkKVxuICAgIGFsbF9taXhzIChlbnYsIG9yaWdpbilcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gbWl4ID1cbiAgbGV0IHJ1bGVzLCAoY2NfZW52LCBfKSA9XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICAgIGNvbnRhY3RfbWFwIGVudiA/b3JpZ2luIG1peCBbXVxuICBpblxuICAoIGNjX2VudixcbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IF8sIGwsIGV2ZW50LCAoW10sIFtdKSAtPiBsLCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICBydWxlcyApXG5cbmxldCBhdXhfbGthcHBhX29mX3BhdHRlcm4gZnJlZV9pZCBwID1cbiAgUGF0dGVybi5mb2xkX2J5X3R5cGVcbiAgICAoZnVuIH5wb3MgfmFnZW50X3R5cGUgaW50ZiAoYWNjLCBsbmtfcGFjaykgLT5cbiAgICAgIGxldCByYV9wb3J0cyA9XG4gICAgICAgIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBpbnRmKVxuICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gICAgICBpblxuICAgICAgbGV0IHJhX2ludHMgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggaW50ZikgTEthcHBhLklfQU5ZIGluXG4gICAgICBsZXQgb3V0ID1cbiAgICAgICAge1xuICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWdlbnRfdHlwZTtcbiAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IE5vbmU7XG4gICAgICAgICAgTEthcHBhLnJhX3BvcnRzO1xuICAgICAgICAgIExLYXBwYS5yYV9pbnRzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGFjYycgPSBNb2RzLkludE1hcC5hZGQgcG9zIG91dCBhY2MgaW5cbiAgICAgIGxldCBsbmtfcGFjaycgPVxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgKGZ1biBzaXRlICgoZnJlZV9pZCwga25vd25fc3JjKSBhcyBwYWNrKSAobGluaywgaW50KSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgaW50IDw+IC0xIHRoZW4gcmFfaW50cy4oc2l0ZSkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGludCwgaW50KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGxpbmsgd2l0aFxuICAgICAgICAgICAgfCBQYXR0ZXJuLlVuU3BlYyAtPiBwYWNrXG4gICAgICAgICAgICB8IFBhdHRlcm4uRnJlZSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHJhX3BvcnRzLihzaXRlKSA8LVxuICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwYWNrXG4gICAgICAgICAgICB8IFBhdHRlcm4uTGluayAoZHN0X2EsIGRzdF9zKSAtPlxuICAgICAgICAgICAgICBsZXQgc3JjX2luZm8gPSBzaXRlLCBhZ2VudF90eXBlIGluXG4gICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3Rfcykga25vd25fc3JjIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIChpZCwgZHN0X2luZm8pIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHJhX3BvcnRzLihzaXRlKSA8LVxuICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSxcbiAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBvdXQgZHN0X2EgYWNjJykuTEthcHBhLnJhX3BvcnRzLihkc3RfcykgPC1cbiAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIHNyY19pbmZvKSksXG4gICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFja1xuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAoIHN1Y2MgZnJlZV9pZCxcbiAgICAgICAgICAgICAgICAgIE1vZHMuSW50Mk1hcC5hZGQgKHBvcywgc2l0ZSkgKGZyZWVfaWQsIHNyY19pbmZvKSBrbm93bl9zcmMgKSkpXG4gICAgICAgICAgbG5rX3BhY2sgaW50ZlxuICAgICAgaW5cbiAgICAgIGFjYycsIGxua19wYWNrJylcbiAgICBwXG4gICAgKE1vZHMuSW50TWFwLmVtcHR5LCAoZnJlZV9pZCwgTW9kcy5JbnQyTWFwLmVtcHR5KSlcblxubGV0IHJlZ2lzdGVyX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgZnJlZV9pZCB0cmFuc2ZzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuICgoZmlkLCBmcikgYXMgcGFjaykgLT4gZnVuY3Rpb25cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8pIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChNYXRjaGluZy5BZ2VudC5GcmVzaCAoYV90eXBlLCBpZCkpIC0+XG4gICAgICAgIGxldCBzaSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFfdHlwZSBpblxuICAgICAgICBsZXQgbiA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV90eXBlO1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IEFycmF5Lm1ha2Ugc2kgUmF3X21peHR1cmUuRlJFRTtcbiAgICAgICAgICAgIFJhd19taXh0dXJlLmFfaW50cyA9IEFycmF5Lm1ha2Ugc2kgTm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGZpZCwgTW9kcy5JbnRNYXAuYWRkIGlkIG4gZnJcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkLCBfKSwgY2NfaWQpLCBzLCBpKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAobWF0Y2ggYS5MS2FwcGEucmFfaW50cy4ocykgd2l0aFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTllfQ0hBTkdFRCBfIHwgTEthcHBhLklfQU5ZX0VSQVNFRFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9WQUxfRVJBU0VEIF8gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChqLCBrKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGogPSBrKSBpblxuICAgICAgICAgICAgICBhLkxLYXBwYS5yYV9pbnRzLihzKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaiwgaSlcbiAgICAgICAgICAgIHwgTEthcHBhLklfQU5ZIC0+IGEuTEthcHBhLnJhX2ludHMuKHMpIDwtIExLYXBwYS5JX0FOWV9DSEFOR0VEIGkpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2tcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpLCBzLCBpKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfaW50cy4ocykgPC0gU29tZSBpXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2tcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXykgLT4gZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQsIF8pLCBjY19pZCksIHMpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4ocykgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMpIDwtIHRlc3QsIExLYXBwYS5GcmVlZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQxLCBfKSwgY2NfaWQxKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQyLCBfKSwgY2NfaWQyKSwgczIpICkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZDEgbWl4cy4oY2NfaWQxKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIGxldCB0ZXN0LCBlZGl0ID0gYS5MS2FwcGEucmFfcG9ydHMuKHMxKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4oczEpIDwtIHRlc3QsIExLYXBwYS5MaW5rZWQgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMiBtaXhzLihjY19pZDIpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMikgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMxKSxcbiAgICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGVpZCwgXyksIGNjX2lkKSwgczIpIClcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGVpZCwgXyksIGNjX2lkKSwgczIpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMxKSApIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9wb3J0cy4oczEpIDwtIFJhd19taXh0dXJlLlZBTCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gZWlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIGxldCB0ZXN0LCBlZGl0ID0gYS5MS2FwcGEucmFfcG9ydHMuKHMyKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIDwtIHRlc3QsIExLYXBwYS5MaW5rZWQgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBzdWNjIGZpZCwgZnJcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQxKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZDIpLCBzMikgKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMSBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMSkgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZDIgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9wb3J0cy4oczIpIDwtIFJhd19taXh0dXJlLlZBTCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmcilcbiAgICAoZnJlZV9pZCwgTW9kcy5JbnRNYXAuZW1wdHkpXG4gICAgdHJhbnNmc1xuICB8PiBzbmRcblxubGV0IGFkZF9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnMgc2lncyBtaXhzIHRyYW5zZnMgPVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSwgXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKF8sIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSlcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXykgLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8sIF8pLCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXykpXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8sIF8pIC0+XG4gICAgICAgICgpXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZCwgXyksIGNjX2lkKSkgLT5cbiAgICAgICAgbGV0IGFnID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhXG4gICAgICAgIGluXG4gICAgICAgIG1peHMuKGNjX2lkKSA8LVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpZCAoTEthcHBhLmFnZW50X3RvX2VyYXNlZCBzaWdzIGFnKSBtaXhzLihjY19pZCkpXG4gICAgdHJhbnNmc1xuXG5sZXQgbGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSBzaWdzIGRvbWFpbiByID1cbiAgbGV0IG5iX2NjID0gQXJyYXkubGVuZ3RoIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpblxuICBsZXQgbWl4cyA9IEFycmF5Lm1ha2UgbmJfY2MgTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgbGV0IGZyZWVfaWQgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gY2NfaWQgZnJlZV9pZCBjYyAtPlxuICAgICAgICBsZXQgb3V0LCAoZnJlZV9pZCcsIF8pID1cbiAgICAgICAgICBhdXhfbGthcHBhX29mX3BhdHRlcm4gZnJlZV9pZFxuICAgICAgICAgICAgKFBhdHRlcm4uRW52LmNvbnRlbnQgKFBhdHRlcm4uRW52LmdldCBkb21haW4gY2MpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBtaXhzLihjY19pZCkgPC0gb3V0IGluXG4gICAgICAgIGZyZWVfaWQnKVxuICAgICAgMSByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgaW5cbiAgbGV0IG5ld3MgPVxuICAgIHJlZ2lzdGVyX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgZnJlZV9pZCByLlByaW1pdGl2ZXMuaW5zZXJ0ZWRcbiAgaW5cbiAgbGV0ICgpID0gYWRkX25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgci5QcmltaXRpdmVzLnJlbW92ZWQgaW5cbiAgbGV0IHJfbWl4ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYSBiIC0+IE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIHggYWNjIC0+IHggOjogYWNjKSBiIGEpXG4gICAgICBbXSBtaXhzXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgbGV0IHJfY3JlYXRlZCA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT4geCA6OiBhY2MpIG5ld3MgW10gfD4gTGlzdC5yZXZcbiAgaW5cbiAgcl9taXgsIHJfY3JlYXRlZFxuKCp7XG4gIExLYXBwYS5yX21peDsgTEthcHBhLnJfY3JlYXRlZDsgTEthcHBhLnJfZWRpdF9zdHlsZSA9IHRydWU7XG4gIExLYXBwYS5yX3JhdGUgPSByLlByaW1pdGl2ZXMucmF0ZTtcbiAgTEthcHBhLnJfdW5fcmF0ZSA9IHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlO1xuICBMS2FwcGEucl9kZWx0YV90b2tlbnMgPSByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zO1xuICB9KilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvZl9zbmFwc2hvdCBnID1cbiAgbGV0IG91dCwgXyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBub2RlIChhY2MsIHBhY2spIGFnIC0+XG4gICAgICAgIGxldCByYV90eXBlID0gYWcuU25hcHNob3Qubm9kZV90eXBlIGluXG4gICAgICAgIGxldCBhciA9IEFycmF5Lmxlbmd0aCBhZy5TbmFwc2hvdC5ub2RlX3NpdGVzIGluXG4gICAgICAgIGxldCByYV9wb3J0cyA9XG4gICAgICAgICAgQXJyYXkubWFrZSBhciAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhX2ludHMgPSBBcnJheS5tYWtlIGFyIExLYXBwYS5JX0FOWSBpblxuICAgICAgICBsZXQgcGFjaycgPVxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgIChmdW4gaWQgKChkYW5nbGluZywgZnJlZV9pZCkgYXMgcGFjaykgcCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHAuU25hcHNob3Quc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gcmFfaW50cy4oaWQpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBwLlNuYXBzaG90LnNpdGVfbGluayB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwYWNrXG4gICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50Mk1hcC5wb3AgcyBkYW5nbGluZyB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHZhLCBkYW5nbGluZycgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHJhX3BvcnRzLihpZCkgPC1cbiAgICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFICh2YSwgKC0xLCAtMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBkYW5nbGluZycsIGZyZWVfaWRcbiAgICAgICAgICAgICAgICB8IE5vbmUsIGRhbmdsaW5nJyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKGlkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsICgtMSwgLTEpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnQyTWFwLmFkZCAobm9kZSwgaWQpIGZyZWVfaWQgZGFuZ2xpbmcnLCBzdWNjIGZyZWVfaWQpKVxuICAgICAgICAgICAgcGFjayBhZy5TbmFwc2hvdC5ub2RlX3NpdGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCByYSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJhX3BvcnRzO1xuICAgICAgICAgICAgcmFfaW50cztcbiAgICAgICAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcmFfcG9ydHMsIEFycmF5LmNvcHkgcmFfaW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICByYSA6OiBhY2MsIHBhY2snKVxuICAgICAgKFtdLCAoTW9kcy5JbnQyTWFwLmVtcHR5LCAxKSlcbiAgICAgIGdcbiAgaW5cbiAgb3V0XG5cbmxldCBwYXR0ZXJuc19vZl9taXh0dXJlIH5kZWJ1Z19tb2RlIGNvbnRhY3RfbWFwIHNpZ3MgcHJlX2VudiBlID1cbiAgbGV0IHNuYXAgPSBFZGdlcy5idWlsZF9zbmFwc2hvdCB+cmF3OmZhbHNlIHNpZ3MgZSBpblxuICBsZXQgcHJlX2VudicsIGFjYyA9XG4gICAgU25hcHNob3QuZm9sZFxuICAgICAgKGZ1biAoY2NfY2FjaGUsIGFjYykgaSBtIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmVcbiAgICAgICAgICAgIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb246ZmFsc2UgY29udGFjdF9tYXAgY2NfY2FjaGVcbiAgICAgICAgICAgIChvZl9zbmFwc2hvdCBtKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgY2NfY2FjaGUnLCBbIChbfCAoXywgeCkgfF0sIF8pIF0gLT5cbiAgICAgICAgICBjY19jYWNoZScsIFRvb2xzLnJlY3RpIChmdW4gYSBfIC0+IHggOjogYSkgYWNjIGlcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIChwcmVfZW52LCBbXSkgc25hcFxuICBpblxuICBwcmVfZW52JywgYWNjXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGZpbGVuYW1lczogc3RyaW5nIGxpc3Q7XG4gIGRvbWFpbjogUGF0dGVybi5FbnYudDtcbiAgdG9rZW5zOiB1bml0IE5hbWVkRGVjbHMudDtcbiAgYWxnczogUHJpbWl0aXZlcy5hbGdfZXhwciBMb2MuYW5ub3RlZCBOYW1lZERlY2xzLnQ7XG4gIG9ic2VydmFibGVzOiBQcmltaXRpdmVzLmFsZ19leHByIExvYy5hbm5vdGVkIGFycmF5O1xuICBhc3RfcnVsZXM6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogTEthcHBhLnJ1bGUgTG9jLmFubm90ZWQpIGFycmF5O1xuICBydWxlczogUHJpbWl0aXZlcy5lbGVtZW50YXJ5X3J1bGUgYXJyYXk7XG4gIGludGVydmVudGlvbnM6IFByaW1pdGl2ZXMucGVydHVyYmF0aW9uIGFycmF5O1xuICBkZXBlbmRlbmNpZXNfaW5fdGltZTogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gIGRlcGVuZGVuY2llc19pbl9ldmVudDogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXM6IE9wZXJhdG9yLkRlcFNldC50IGFycmF5O1xuICB0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXM6IE9wZXJhdG9yLkRlcFNldC50IGFycmF5O1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbn1cblxubGV0IGluaXQgfmZpbGVuYW1lcyBkb21haW4gdG9rZW5zIGFsZ3MgKGRlcHNfaW5fdCwgZGVwc19pbl9lLCB0b2tfcmQsIGFsZ19yZClcbiAgICAoYXN0X3J1bGVzLCBydWxlcykgb2JzZXJ2YWJsZXMgaW50ZXJ2ZW50aW9ucyBjb250YWN0X21hcCA9XG4gIHtcbiAgICBmaWxlbmFtZXM7XG4gICAgZG9tYWluO1xuICAgIHRva2VucztcbiAgICBhc3RfcnVsZXM7XG4gICAgcnVsZXM7XG4gICAgYWxncztcbiAgICBvYnNlcnZhYmxlcztcbiAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID0gYWxnX3JkO1xuICAgIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9IHRva19yZDtcbiAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9IGRlcHNfaW5fdDtcbiAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPSBkZXBzX2luX2U7XG4gICAgaW50ZXJ2ZW50aW9ucztcbiAgICBjb250YWN0X21hcDtcbiAgfVxuXG5sZXQgZGVjb25zdHJ1Y3QgZW52ID1cbiAgKCBlbnYuZmlsZW5hbWVzLFxuICAgIGVudi5kb21haW4sXG4gICAgZW52LnRva2VucyxcbiAgICBlbnYuYWxncyxcbiAgICAoIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZSxcbiAgICAgIGVudi5kZXBlbmRlbmNpZXNfaW5fZXZlbnQsXG4gICAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLFxuICAgICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKSxcbiAgICAoZW52LmFzdF9ydWxlcywgZW52LnJ1bGVzKSxcbiAgICBlbnYub2JzZXJ2YWJsZXMsXG4gICAgZW52LmludGVydmVudGlvbnMsXG4gICAgZW52LmNvbnRhY3RfbWFwIClcblxubGV0IGRvbWFpbiBlbnYgPSBlbnYuZG9tYWluXG5sZXQgZ2V0X29icyBlbnYgPSBlbnYub2JzZXJ2YWJsZXNcbmxldCBnZXRfcnVsZXMgZW52ID0gZW52LnJ1bGVzXG5sZXQgbmV3X2RvbWFpbiBkb21haW4gZW52ID0geyBlbnYgd2l0aCBkb21haW4gfVxubGV0IHNpZ25hdHVyZXMgZW52ID0gUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBlbnYuZG9tYWluXG5sZXQgdG9rZW5zX2ZpbmRlciBlbnYgPSBlbnYudG9rZW5zLk5hbWVkRGVjbHMuZmluZGVyXG5sZXQgYWxnc19maW5kZXIgZW52ID0gZW52LmFsZ3MuTmFtZWREZWNscy5maW5kZXJcbmxldCBjb250YWN0X21hcCBlbnYgPSBlbnYuY29udGFjdF9tYXBcbmxldCBudW1fb2ZfYWdlbnQgbm1lIGVudiA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgbm1lIChzaWduYXR1cmVzIGVudilcblxubGV0IGZvbGRfcnVsZXMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggcnVsZSAtPiBmIGkgeCBydWxlKSB4IGVudi5ydWxlc1xuXG5sZXQgZm9sZF9wZXJ0dXJiYXRpb25zIGYgeCBlbnYgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gaSB4IHAgLT4gZiBpIHggcCkgeCBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgZ2V0X3J1bGUgZW52IGkgPSBlbnYucnVsZXMuKGkpXG5sZXQgZ2V0X2FzdF9ydWxlX3dpdGhfbGFiZWwgZW52IGkgPSBlbnYuYXN0X3J1bGVzLihpIC0gMSlcbmxldCBnZXRfYXN0X3J1bGUgZW52IGkgPSBmc3QgKHNuZCAoZ2V0X2FzdF9ydWxlX3dpdGhfbGFiZWwgZW52IGkpKVxuXG5sZXQgZm9sZF9hc3RfcnVsZXMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgeCAoXywgX3J1bGUpIC0+XG4gICAgICBsZXQgbGthcHBhX3J1bGUgPSBnZXRfYXN0X3J1bGUgZW52IGkgaW5cbiAgICAgIGYgaSB4IGxrYXBwYV9ydWxlKVxuICAgIHggZW52LmFzdF9ydWxlc1xuXG5sZXQgZ2V0X2FzdF9ydWxlX3JhdGVfcG9zIH51bmFyeSBlbnYgaSA9XG4gIGlmIHVuYXJ5IHRoZW4gKFxuICAgIG1hdGNoIChmc3QgKHNuZCBlbnYuYXN0X3J1bGVzLihpIC0gMSkpKS5MS2FwcGEucl91bl9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJObyB1bmFyeSByYXRlIHRvIGdldCBwb3NpdGlvbiBvZlwiXG4gICAgfCBTb21lICgoXywgcG9zKSwgXykgLT4gcG9zXG4gICkgZWxzZVxuICAgIHNuZCAoZnN0IChzbmQgZW52LmFzdF9ydWxlcy4oaSAtIDEpKSkuTEthcHBhLnJfcmF0ZVxuXG5sZXQgbmJfcnVsZXMgZW52ID0gQXJyYXkubGVuZ3RoIGVudi5ydWxlc1xuXG5sZXQgbnVtc19vZl9ydWxlIG5hbWUgZW52ID1cbiAgZm9sZF9ydWxlc1xuICAgIChmdW4gaSBhY2MgciAtPlxuICAgICAgbWF0Y2ggZW52LmFzdF9ydWxlcy4ocHJlZCByLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUpIHdpdGhcbiAgICAgIHwgU29tZSAoeCwgXyksIF8gLT5cbiAgICAgICAgaWYgeCA9IG5hbWUgdGhlblxuICAgICAgICAgIGkgOjogYWNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhY2NcbiAgICAgIHwgTm9uZSwgXyAtPiBhY2MpXG4gICAgW10gZW52XG5cbmxldCBuYl9zeW50YWN0aWNfcnVsZXMgZW52ID0gQXJyYXkubGVuZ3RoIGVudi5hc3RfcnVsZXNcbmxldCBudW1fb2ZfYWxnIHMgZW52ID0gTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJ2YXJpYWJsZVwiIGVudi5hbGdzIHNcbmxldCBnZXRfYWxnIGVudiBpID0gZnN0IEBAIE5hbWVkRGVjbHMuZWx0X3ZhbCBlbnYuYWxncyBpXG5sZXQgZ2V0X2FsZ3MgZW52ID0gZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xubGV0IG5iX2FsZ3MgZW52ID0gTmFtZWREZWNscy5zaXplIGVudi5hbGdzXG5sZXQgbnVtX29mX3Rva2VuIHN0ciBlbnYgPSBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcInRva2VuXCIgZW52LnRva2VucyBzdHJcbmxldCBuYl90b2tlbnMgZW52ID0gTmFtZWREZWNscy5zaXplIGVudi50b2tlbnNcbmxldCBnZXRfcGVydHVyYmF0aW9uIGVudiBpID0gZW52LmludGVydmVudGlvbnMuKGkpXG5sZXQgbmJfcGVydHVyYmF0aW9ucyBlbnYgPSBBcnJheS5sZW5ndGggZW52LmludGVydmVudGlvbnNcbmxldCBnZXRfYWxnX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBpID0gZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMuKGkpXG5sZXQgZ2V0X3Rva2VuX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBpID0gZW52LnRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcy4oaSlcblxubGV0IGFsbF9kZXBlbmRlbmNpZXMgZW52ID1cbiAgKCBlbnYuZGVwZW5kZW5jaWVzX2luX3RpbWUsXG4gICAgZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCxcbiAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLFxuICAgIGVudi5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzIClcblxubGV0IHByaW50X2FnZW50ID9lbnYgZiBpID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FnZW50XyVpXCIgaVxuICB8IFNvbWUgZW52IC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCAoc2lnbmF0dXJlcyBlbnYpIGYgaVxuXG5sZXQgcHJpbnRfYWxnID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX19hbGdfJWlcIiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IG5hbWUgPSBOYW1lZERlY2xzLmVsdF9uYW1lIGVudi5hbGdzIGlkIGluXG4gICAgbGV0IHNwZWNpYWwgPSBUb29scy5ub3RfYW5faWQgbmFtZSBpblxuICAgIGxldCAoKSA9IGlmIHNwZWNpYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCInXCIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgbmFtZSBpblxuICAgIGlmIHNwZWNpYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCInXCJcblxubGV0IHByaW50X3Rva2VuID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX190b2tlbl8laVwiIGlkXG4gIHwgU29tZSBlbnYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKE5hbWVkRGVjbHMuZWx0X25hbWUgZW52LnRva2VucyBpZClcblxubGV0IHByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiBpID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FzdF9ydWxlXyVpXCIgaVxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IHNpZ3MgPSBzaWduYXR1cmVzIGVudiBpblxuICAgIGlmIGkgPSAwIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkludGVydmVudGlvbnNcIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZW52LmFzdF9ydWxlcy4ocHJlZCBpKSB3aXRoXG4gICAgICB8IFNvbWUgKG5hLCBfKSwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgbmFcbiAgICAgIHwgTm9uZSwgKHIsIF8pIC0+XG4gICAgICAgIExLYXBwYS5wcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOmZhbHNlIHNpZ3MgKHByaW50X3Rva2VuIH5lbnYpXG4gICAgICAgICAgKHByaW50X2FsZyB+ZW52KSBmIHJcbiAgICApXG5cbmxldCBwcmludF9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX19ydWxlXyVpXCIgaWRcbiAgfCBTb21lIGVudiAtPlxuICAgIHByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzIH5lbnYgZiBlbnYucnVsZXMuKGlkKS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlXG5cbmxldCBtYXBfb2JzZXJ2YWJsZXMgZiBlbnYgPSBBcnJheS5tYXAgKGZ1biAoeCwgXykgLT4gZiB4KSBlbnYub2JzZXJ2YWJsZXNcblxubGV0IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHByX2FsZyA/cHJfcnVsZSBwcl9wZXJ0IGYgZW52ID1cbiAgbGV0IHNpZ3MgPSBzaWduYXR1cmVzIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWEldEAsJWEldCVhQCwldCV0JWFAXVwiXG4gICAgKENvbnRhY3RfbWFwLnByaW50X2thcHBhIH5ub0NvdW50ZXJzIHNpZ3MpXG4gICAgZW52LmNvbnRhY3RfbWFwXG4gICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIF8gbiBmICgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSV0b2tlbjogJXNcIiBuKSlcbiAgICBlbnYudG9rZW5zXG4gICAgKGZ1biBmIC0+IGlmIGVudi50b2tlbnMuTmFtZWREZWNscy5kZWNscyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gaSBuIGYgKGUsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJXZhcjovKiVpKi8gJyVzJyAlYUBdXCIgaSBuIChwcl9hbGcgZW52KSBlKSlcbiAgICBlbnYuYWxnc1xuICAgIChmdW4gZiAtPiBpZiBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzIDw+IFt8fF0gdGhlbiBQcC5zcGFjZSBmKVxuICAgIChQcC5hcnJheSBQcC5zcGFjZSB+dHJhaWxpbmc6UHAuc3BhY2UgKGZ1biBfIGYgKGUsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJXBsb3Q6ICVhQF1cIiAocHJfYWxnIGVudikgZSkpXG4gICAgZW52Lm9ic2VydmFibGVzXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCBwcl9ydWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBQcC5hcnJheSBQcC5zcGFjZSB+dHJhaWxpbmc6UHAuc3BhY2VcbiAgICAgICAgICAoZnVuIF8gZiAobmEsIChlLCBfKSkgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgICAgICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKG5hLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnIFwiIG5hKSlcbiAgICAgICAgICAgICAgbmFcbiAgICAgICAgICAgICAgKExLYXBwYS5wcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOnRydWUgc2lncyAocHJpbnRfdG9rZW4gfmVudilcbiAgICAgICAgICAgICAgICAgKHByaW50X2FsZyB+ZW52KSlcbiAgICAgICAgICAgICAgZSlcbiAgICAgICAgICBmIGVudi5hc3RfcnVsZXNcbiAgICAgIHwgU29tZSBwcl9ydWxlIC0+XG4gICAgICAgIFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZVxuICAgICAgICAgIChmdW4gXyBmIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWFAXVwiIChwcl9ydWxlIGVudikgcilcbiAgICAgICAgICBmIGVudi5ydWxlcylcbiAgICAoZnVuIGYgLT4gaWYgZW52LmludGVydmVudGlvbnMgPD4gW3x8XSB0aGVuIFBwLnNwYWNlIGYpXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIHAgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPi8qJWkqLyVhQF1cIiBpIChwcl9wZXJ0IGVudikgcCkpXG4gICAgZW52LmludGVydmVudGlvbnNcblxubGV0IHByaW50IH5ub0NvdW50ZXJzIHByX2FsZyBwcl9ydWxlIHByX3BlcnQgZiBlbnYgPVxuICBsZXQgKCkgPSBwcmludF9rYXBwYSB+bm9Db3VudGVycyBwcl9hbGcgcHJfcGVydCBmIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQCxAWzx2PkBbPHYgMj5SdWxlczpALCVhQF1AXVwiXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIHIgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzwyPiVpOkAgJWFAXVwiIGkgKHByX3J1bGUgZW52KSByKSlcbiAgICBlbnYucnVsZXNcblxubGV0IGNoZWNrX2lmX2NvdW50ZXJfaXNfZmlsbGVkX2Vub3VnaCB4ID1cbiAgaWZcbiAgICBub3RcbiAgICBAQCBQcmltaXRpdmVzLmV4aXN0c19tb2RpZmljYXRpb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1RPUCBfIC0+IHRydWVcbiAgICAgICAgICAgfCBQcmltaXRpdmVzLklURVJfUlVMRSBfIHwgUHJpbWl0aXZlcy5VUERBVEUgX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgXyB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuRElOIF9cbiAgICAgICAgICAgfCBQcmltaXRpdmVzLkRJTk9GRiBfIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QTE9URU5UUllcbiAgICAgICAgICAgfCBQcmltaXRpdmVzLlBSSU5UIF8gfCBQcmltaXRpdmVzLlNQRUNJRVMgX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgeC5pbnRlcnZlbnRpb25zXG4gIHRoZW5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIlRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIHNpbXVsYXRpb24gdG8gc3RvcC5cIikpXG5cbmxldCBvdmVyd3JpdGVfdmFycyBhbGdfb3ZlcndyaXRlIGVudiA9XG4gIGxldCBhbGdzJyA9XG4gICAgQXJyYXkubWFwXG4gICAgICAoZnVuICh4LCB5KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCB5KVxuICAgICAgZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaSwgdikgLT4gYWxncycuKGkpIDwtIGZzdCBhbGdzJy4oaSksIExvYy5hbm5vdF93aXRoX2R1bW15IHYpXG4gICAgICBhbGdfb3ZlcndyaXRlXG4gIGluXG4gIHsgZW52IHdpdGggYWxncyA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ3MnIH1cblxubGV0IGZvbGRfYWxnX2V4cHIgZl9hbGcgZl9ib29sIHggZW52ID1cbiAgbGV0IHgxID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgKF8sIHkpIC0+IGZfYWxnIGFjYyB5KSB4IGVudi5hbGdzLk5hbWVkRGVjbHMuZGVjbHNcbiAgaW5cbiAgbGV0IHgyID0gQXJyYXkuZm9sZF9sZWZ0IGZfYWxnIHgxIGVudi5vYnNlcnZhYmxlcyBpblxuICBsZXQgeDMgPSBBcnJheS5mb2xkX2xlZnQgKFByaW1pdGl2ZXMuZm9sZF9leHByX3J1bGUgZl9hbGcpIHgyIGVudi5ydWxlcyBpblxuICBBcnJheS5mb2xkX2xlZnRcbiAgICAoUHJpbWl0aXZlcy5mb2xkX2V4cHJfcGVydHVyYmF0aW9uIGZfYWxnIGZfYm9vbClcbiAgICB4MyBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgZm9sZF9taXh0dXJlX2luX2V4cHIgZiA9XG4gIGZvbGRfYWxnX2V4cHIgKEFsZ19leHByLmZvbGRfb25fbWl4dHVyZSBmKSAoQWxnX2V4cHIuZm9sZF9ib29sX29uX21peHR1cmUgZilcblxubGV0IHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgIH5hbGdfb3ZlcndyaXRlIHggPVxuICBsZXQgYWxncycgPVxuICAgIEFycmF5Lm1hcCAoZnVuICh4LCB5KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCB5KSB4LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaSwgdikgLT4gYWxncycuKGkpIDwtIGZzdCBhbGdzJy4oaSksIExvYy5hbm5vdF93aXRoX2R1bW15IHYpXG4gICAgICBhbGdfb3ZlcndyaXRlXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSAobmEsIHYpIC0+XG4gICAgICAgIGFsZ3MnLihpKSA8LVxuICAgICAgICAgICggbmEsXG4gICAgICAgICAgICBBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycgdiApKVxuICAgICAgYWxncydcbiAgaW5cbiAge1xuICAgIGZpbGVuYW1lcyA9IHguZmlsZW5hbWVzO1xuICAgIGRvbWFpbiA9IHguZG9tYWluO1xuICAgIHRva2VucyA9IHgudG9rZW5zO1xuICAgIGFsZ3MgPSBOYW1lZERlY2xzLmNyZWF0ZSBhbGdzJztcbiAgICBvYnNlcnZhYmxlcyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJylcbiAgICAgICAgeC5vYnNlcnZhYmxlcztcbiAgICBhc3RfcnVsZXMgPSB4LmFzdF9ydWxlcztcbiAgICBydWxlcyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKFByaW1pdGl2ZXMubWFwX2V4cHJfcnVsZVxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKSlcbiAgICAgICAgeC5ydWxlcztcbiAgICBpbnRlcnZlbnRpb25zID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5tYXBfZXhwcl9wZXJ0dXJiYXRpb25cbiAgICAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJylcbiAgICAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKSlcbiAgICAgICAgeC5pbnRlcnZlbnRpb25zO1xuICAgIGRlcGVuZGVuY2llc19pbl90aW1lID0geC5kZXBlbmRlbmNpZXNfaW5fdGltZTtcbiAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPSB4LmRlcGVuZGVuY2llc19pbl9ldmVudDtcbiAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID0geC5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzO1xuICAgIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9IHgudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzO1xuICAgIGNvbnRhY3RfbWFwID0geC5jb250YWN0X21hcDtcbiAgfVxuXG5sZXQga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pXG5cbmxldCB0b195b2pzb24gZW52ID1cbiAgbGV0IGZpbGVzID1cbiAgICBBcnJheS5vZl9saXN0IChMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWUgOjogZW52LmZpbGVuYW1lcylcbiAgaW5cbiAgbGV0IGZpbGVuYW1lcyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIG1hcCB4IC0+IE1vZHMuU3RyaW5nTWFwLmFkZCB4IGkgbWFwKVxuICAgICAgTW9kcy5TdHJpbmdNYXAuZW1wdHkgZmlsZXNcbiAgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJmaWxlbmFtZXNcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2Zfc3RyaW5nIGZpbGVzO1xuICAgICAgXCJ1cGRhdGVcIiwgUGF0dGVybi5FbnYudG9feW9qc29uIChkb21haW4gZW52KTtcbiAgICAgIFwidG9rZW5zXCIsIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSBlbnYudG9rZW5zO1xuICAgICAgKCBcImFsZ3NcIixcbiAgICAgICAgTmFtZWREZWNscy50b19qc29uXG4gICAgICAgICAgKGZ1biAoeCwgXykgLT5cbiAgICAgICAgICAgIEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uXG4gICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB4KVxuICAgICAgICAgIGVudi5hbGdzICk7XG4gICAgICAoIFwib2JzZXJ2YWJsZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKHgsIF8pIGwgLT5cbiAgICAgICAgICAgICAgIEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uXG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB4XG4gICAgICAgICAgICAgICA6OiBsKVxuICAgICAgICAgICAgIGVudi5vYnNlcnZhYmxlcyBbXSkgKTtcbiAgICAgICggXCJhc3RfcnVsZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKG4sIChyLCBfKSkgbCAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBuIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKG4sIF8pIC0+IGBTdHJpbmcgbik7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJ1bGVfdG9fanNvbiB+ZmlsZW5hbWVzIHI7XG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIDo6IGwpXG4gICAgICAgICAgICAgZW52LmFzdF9ydWxlcyBbXSkgKTtcbiAgICAgICggXCJlbGVtZW50YXJ5X3J1bGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IChQcmltaXRpdmVzLnJ1bGVfdG9feW9qc29uIH5maWxlbmFtZXMpIGVudi5ydWxlcyApO1xuICAgICAgXCJjb250YWN0X21hcFwiLCBDb250YWN0X21hcC50b195b2pzb24gZW52LmNvbnRhY3RfbWFwO1xuICAgICAgKCBcImludGVydmVudGlvbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXlcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wZXJ0dXJiYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgZW52LmludGVydmVudGlvbnMgKTtcbiAgICAgIFwiZGVwZW5kZW5jaWVzX2luX3RpbWVcIiwgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvbiBlbnYuZGVwZW5kZW5jaWVzX2luX3RpbWU7XG4gICAgICAoIFwiZGVwZW5kZW5jaWVzX2luX2V2ZW50XCIsXG4gICAgICAgIE9wZXJhdG9yLmRlcHNldF90b195b2pzb24gZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCApO1xuICAgICAgKCBcImFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvblxuICAgICAgICAgIGVudi5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzICk7XG4gICAgICAoIFwidG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IE9wZXJhdG9yLmRlcHNldF90b195b2pzb25cbiAgICAgICAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzICk7XG4gICAgXVxuXG5sZXQga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb24pXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMTMgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGVuYW1lcyA9XG4gICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJmaWxlbmFtZXNcIiBsKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgZmlsZW5hbWVzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBmaWxlbmFtZXMpO1xuICAgICAgICAgZG9tYWluID0gUGF0dGVybi5FbnYub2ZfeW9qc29uIChMaXN0LmFzc29jIFwidXBkYXRlXCIgbCk7XG4gICAgICAgICB0b2tlbnMgPSBOYW1lZERlY2xzLm9mX2pzb24gKGZ1biBfIC0+ICgpKSAoTGlzdC5hc3NvYyBcInRva2Vuc1wiIGwpO1xuICAgICAgICAgYWxncyA9XG4gICAgICAgICAgIE5hbWVkRGVjbHMub2ZfanNvblxuICAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgICAgICAgICB4KSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImFsZ3NcIiBsKTtcbiAgICAgICAgIG9ic2VydmFibGVzID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJvYnNlcnZhYmxlc1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IG8gLT5cbiAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgeCkpXG4gICAgICAgICAgICAgICBvXG4gICAgICAgICAgIHwgYE51bGwgLT4gW3x8XVxuICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIGFzdF9ydWxlcyA9XG4gICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiYXN0X3J1bGVzXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbyAtPlxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBOdWxsOyByIF0gLT5cbiAgICAgICAgICAgICAgICAgICBOb25lLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLnJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzIHIpXG4gICAgICAgICAgICAgICAgIHwgYExpc3QgWyBgU3RyaW5nIG47IHIgXSAtPlxuICAgICAgICAgICAgICAgICAgICggU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgbiksXG4gICAgICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLnJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzIHIpIClcbiAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgIG9cbiAgICAgICAgICAgfCBgTnVsbCAtPiBbfHxdXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgcnVsZXMgPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImVsZW1lbnRhcnlfcnVsZXNcIiBsIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdCBvIC0+XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKFByaW1pdGl2ZXMucnVsZV9vZl95b2pzb24gfmZpbGVuYW1lcykgb1xuICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIGludGVydmVudGlvbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAgIChQcmltaXRpdmVzLnBlcnR1cmJhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiaW50ZXJ2ZW50aW9uc1wiIHgpO1xuICAgICAgICAgZGVwZW5kZW5jaWVzX2luX3RpbWUgPVxuICAgICAgICAgICBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlcGVuZGVuY2llc19pbl90aW1lXCIgeCk7XG4gICAgICAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPVxuICAgICAgICAgICBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlcGVuZGVuY2llc19pbl9ldmVudFwiIHgpO1xuICAgICAgICAgYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5IE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiIHgpO1xuICAgICAgICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIiB4KTtcbiAgICAgICAgIGNvbnRhY3RfbWFwID0gQ29udGFjdF9tYXAub2ZfeW9qc29uIChMaXN0LmFzc29jIFwiY29udGFjdF9tYXBcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKVxuXG5sZXQgdW5hcnlfcGF0dGVybnMgZW52ID1cbiAgZm9sZF9ydWxlc1xuICAgIChmdW4gXyBhY2MgciAtPlxuICAgICAgbWF0Y2ggci5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgUGF0dGVybi5TZXQuYWRkXG4gICAgICAgICAgci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKVxuICAgICAgICAgIChQYXR0ZXJuLlNldC5hZGQgci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigxKSBhY2MpKVxuICAgIFBhdHRlcm4uU2V0LmVtcHR5IGVudlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNjX21peCB+bm9Db3VudGVycyA/ZW52IGYgbWl4ID1cbiAgbGV0IGRvbWFpbiA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlIC0+IFNvbWUgKE1vZGVsLmRvbWFpbiBlKVxuICBpblxuICBtYXRjaCBtaXggd2l0aFxuICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIwXCJcbiAgfCBfIC0+XG4gICAgUHAubGlzdFxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgK0AgXCIpXG4gICAgICAoZnVuIGYgY2NzIC0+XG4gICAgICAgIFBwLmFycmF5XG4gICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIqXCIpXG4gICAgICAgICAgKGZ1biBfIGYgY2MgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDpmYWxzZSlcbiAgICAgICAgICAgICAgY2MpXG4gICAgICAgICAgZiBjY3MpXG4gICAgICBmIG1peFxuXG5sZXQgYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudiA9XG4gIEFsZ19leHByLnByaW50IChjY19taXggfm5vQ291bnRlcnMgP2VudikgKE1vZGVsLnByaW50X3Rva2VuID9lbnYpXG4gICAgKE1vZGVsLnByaW50X2FsZyA/ZW52KVxuXG5sZXQgYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYgPVxuICBBbGdfZXhwci5wcmludF9ib29sIChjY19taXggfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChNb2RlbC5wcmludF90b2tlbiA/ZW52KSBpKVxuICAgIChNb2RlbC5wcmludF9hbGcgP2VudilcblxubGV0IHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudiBmID1cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52IGYgYWxnXG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbIFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIF0gLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgfCAoWyBQcmltaXRpdmVzLkFsZ19wZXhwciBfIF0gfCBfIDo6IF8gOjogXykgYXMgZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEpXCIgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIuXCIpIGF1eCkgZVxuXG5sZXQgcHJpbnRfZXhwcl92YWwgYWxnX3ZhbCBmIGUgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHN0clxuICAgIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgKGFsZywgXykgLT4gTmJyLnByaW50IGYgKGFsZ192YWwgYWxnKVxuICBpblxuICBQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfY3V0IGYgKCkpIGF1eCBmIGVcblxubGV0IGRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbCBlbnYgZiByID1cbiAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICBsZXQgcl9taXgsIHJfY3JlYXRlZCA9XG4gICAgUGF0dGVybl9jb21waWxlci5sa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgKE1vZGVsLmRvbWFpbiBlbnYpIHJcbiAgaW5cbiAgbGV0IHByX2FsZyBmIChhLCBfKSA9IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYgZiBhIGluXG4gIGxldCBwcl90b2sgZiAodmEsIHRvaykgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIHByX2FsZyB2YSAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgdG9rXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhJXQlYSV0XCJcbiAgICAoTEthcHBhLnByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2Ugcl9jcmVhdGVkKVxuICAgIHJfbWl4XG4gICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWUgfmluaXRpYWxfY29tbWE6KHJfbWl4IDw+IFtdKVxuICAgICAgIH5zaWdzKVxuICAgIHJfY3JlYXRlZFxuICAgIChpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW5cbiAgICAgICBmdW4gZiAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwifEAgXCJcbiAgICAgZWxzZVxuICAgICAgIFBwLmVtcHR5KVxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3Rvaykgci5QcmltaXRpdmVzLmRlbHRhX3Rva2Vuc1xuICAgIChmdW4gZiAtPlxuICAgICAgaWYgZnVsbCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAIEBAICVhJXRcIiBwcl9hbGcgci5QcmltaXRpdmVzLnJhdGUgKGZ1biBmIC0+XG4gICAgICAgICAgICBtYXRjaCByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAocmF0ZSwgZGlzdCkgLT5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWElYX1cIiBwcl9hbGcgcmF0ZVxuICAgICAgICAgICAgICAgIChQcC5vcHRpb24gKGZ1biBmIG1kIC0+XG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCIgKGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpIG1kKSlcbiAgICAgICAgICAgICAgICBkaXN0KSlcblxubGV0IGVsZW1lbnRhcnlfcnVsZSB+bm9Db3VudGVycyA/ZW52IGYgciA9XG4gIGxldCBkb21haW4sIHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgZSAtPiBTb21lIChNb2RlbC5kb21haW4gZSksIFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZSlcbiAgaW5cbiAgbGV0IHByX2FsZyBmIChhLCBfKSA9IGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYgZiBhIGluXG4gIGxldCBwcl90b2sgZiAodmEsIHRvaykgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIHByX2FsZyB2YSAoTW9kZWwucHJpbnRfdG9rZW4gP2VudikgdG9rXG4gIGluXG4gIGxldCBwcl90cmFucyBmIHQgPSBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnByaW50ID9zaWdzIGYgdCBpblxuICBsZXQgYm94ZWRfY2MgaSBmIGNjID1cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl9ib3ggZiAyIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ludCBmIGkgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCI6IFwiIGluXG4gICAgbGV0ICgpID0gUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOnRydWUgZiBjYyBpblxuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZiAoKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiKGFzdDogJWkpQCBAW0BbJWFAXSV0QFslYUBdQF1AIC0tIEBbJWFAXUAgKysgQFslYUBdQCBAQCVhJXRcIlxuICAgIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZVxuICAgIChQcC5hcnJheSBQcC5jb21tYSBib3hlZF9jYylcbiAgICByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAoaWYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucyA8PiBbXSB0aGVuXG4gICAgICAgZnVuIGYgLT5cbiAgICAgRm9ybWF0LmZwcmludGYgZiBcInxAIFwiXG4gICAgIGVsc2VcbiAgICAgICBQcC5lbXB0eSlcbiAgICAoUHAubGlzdCBQcC5jb21tYSBwcl90b2spIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnNcbiAgICAoUHAubGlzdCBQcC5jb21tYSBwcl90cmFucylcbiAgICByLlByaW1pdGl2ZXMucmVtb3ZlZFxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3RyYW5zKVxuICAgIHIuUHJpbWl0aXZlcy5pbnNlcnRlZCBwcl9hbGcgci5QcmltaXRpdmVzLnJhdGVcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChyYXRlLCBkaXN0KSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiIHByX2FsZyByYXRlXG4gICAgICAgICAgKFBwLm9wdGlvbiAoZnVuIGYgbWQgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIiAoYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudikgbWQpKVxuICAgICAgICAgIGRpc3QpXG5cbmxldCBtb2RpZmljYXRpb24gfm5vQ291bnRlcnMgP2VudiBmIG0gPVxuICBsZXQgZG9tYWluID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGUgLT4gU29tZSAoTW9kZWwuZG9tYWluIGUpXG4gIGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IFByaW1pdGl2ZXMuUFJJTlQgKG5tZSwgdmEpIC0+XG4gICAgaWYgbm1lIDw+IFtdIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGICVhID4gJWFcIlxuICAgICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgICB2YVxuICAgICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgICBubWVcbiAgICBlbHNlXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFBSSU5URiAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIHZhXG4gIHwgUHJpbWl0aXZlcy5QTE9URU5UUlkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiJFBMT1RFTlRSWVwiXG4gIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgKChuLCBfKSwgcnVsZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJEFQUExZICVhICVhXCJcbiAgICAgIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgblxuICAgICAgKG1hdGNoIGVudiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzID9lbnZcbiAgICAgIHwgU29tZSBlbnYgLT4gZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOmZhbHNlIGVudilcbiAgICAgIHJ1bGVcbiAgfCBQcmltaXRpdmVzLlVQREFURSAoaWQsICh2YSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRVUERBVEUgJWEgJWFcIiAoTW9kZWwucHJpbnRfYWxnID9lbnYpIGlkXG4gICAgICAoYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgIHZhXG4gIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCAocmF3LCBmbikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNOQVBTSE9UICVhJXRcIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmbiAoZnVuIGYgLT5cbiAgICAgICAgaWYgcmF3IHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFt0cnVlXVwiKVxuICB8IFByaW1pdGl2ZXMuU1RPUCBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU1RPUCAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG4gIHwgUHJpbWl0aXZlcy5ESU4gKGtpbmQsIGZuKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOICVhICV0W3RydWVdXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiYWJzb2x1dGVcXFwiIFwiXG4gICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJwcm9iYWJpbGl0eVxcXCIgXCIpXG4gIHwgUHJpbWl0aXZlcy5ESU5PRkYgZm4gLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiAlYSBbZmFsc2VdXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgfCBQcmltaXRpdmVzLkNGTE9XIChfbmFtZSwgY2MsIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyBAWyVhQF0gW3RydWVdXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gIHwgUHJpbWl0aXZlcy5DRkxPV09GRiAoXywgY2MpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyAlYSBbZmFsc2VdXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTIChmbiwgY2MsIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIEBbJWFAXSBbdHJ1ZV0gPiAlYVwiXG4gICAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBfIC0+XG4gICAgICAgICAgIFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDpmYWxzZSkpXG4gICAgICBjY1xuICAgICAgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgIGZuXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU1BFQ0lFU19PRiBbZmFsc2VdID4gJWFcIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuXG5sZXQgcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzID9lbnYgZiBwZXJ0ID1cbiAgbGV0IGF1eF9hbGFybSBmID1cbiAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJhbGFybSAlYSBcIiBOYnIucHJpbnQgblxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJSVtb2Q6ICV0JWEgZG8gJWFyZXBlYXQgJWFcIiBhdXhfYWxhcm1cbiAgICAoYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvbiAobW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzID9lbnYpKVxuICAgIHBlcnQuUHJpbWl0aXZlcy5lZmZlY3RcbiAgICAoYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucmVwZWF0KVxuXG5sZXQgZW52IH5ub0NvdW50ZXJzIGYgZW52ID1cbiAgTW9kZWwucHJpbnQgfm5vQ291bnRlcnNcbiAgICAoZnVuIGVudiAtPiBhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgIChmdW4gZW52IC0+IGVsZW1lbnRhcnlfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgIChmdW4gZW52IC0+IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyB+ZW52KVxuICAgIGYgZW52XG5cbmxldCBlbnZfa2FwcGEgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludF9rYXBwYSB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgZiBlbnZcblxubGV0IGRlY29tcGlsZWRfZW52IH5ub0NvdW50ZXJzIGYgZW52ID1cbiAgTW9kZWwucHJpbnRfa2FwcGEgfm5vQ291bnRlcnNcbiAgICAoZnVuIGVudiAtPiBhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgIH5wcl9ydWxlOihkZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6dHJ1ZSlcbiAgICAoZnVuIGVudiAtPiBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgfmVudilcbiAgICBmIGVudlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwZXJpb2QgPSBERSBvZiBpbnQgfCBEVCBvZiBmbG9hdFxuXG50eXBlIHQgPSB7XG4gIHByb2dyZXNzU2l6ZTogaW50O1xuICBwcm9ncmVzc0NoYXI6IGNoYXI7XG4gIGR1bXBJZkRlYWRsb2NrZWQ6IGJvb2w7XG4gIGluaXRpYWw6IGZsb2F0IG9wdGlvbjtcbiAgbWF4Q29uc2VjdXRpdmVDbGFzaDogaW50O1xuICBvdXRwdXRGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbiAgcGxvdFBlcmlvZDogcGVyaW9kIG9wdGlvbjtcbiAgc2VlZDogaW50IG9wdGlvbjtcbiAgdHJhY2VGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbiAgZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWU6IHN0cmluZyBvcHRpb247XG59XG5cbmxldCBlbXB0eSA9XG4gIHtcbiAgICBwcm9ncmVzc1NpemUgPSA3MDtcbiAgICBwcm9ncmVzc0NoYXIgPSAnIyc7XG4gICAgZHVtcElmRGVhZGxvY2tlZCA9IHRydWU7XG4gICAgaW5pdGlhbCA9IE5vbmU7XG4gICAgbWF4Q29uc2VjdXRpdmVDbGFzaCA9IDM7XG4gICAgc2VlZCA9IE5vbmU7XG4gICAgdHJhY2VGaWxlTmFtZSA9IE5vbmU7XG4gICAgcGxvdFBlcmlvZCA9IE5vbmU7XG4gICAgb3V0cHV0RmlsZU5hbWUgPSBOb25lO1xuICAgIGRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lID0gTm9uZTtcbiAgfVxuXG5sZXQgcGFyc2UgcmVzdWx0ID1cbiAgbGV0IGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IGYgPVxuICAgIG1hdGNoIHZhbHVlX2xpc3Qgd2l0aFxuICAgIHwgWyAodiwgcG9zKSBdIC0+IGYgdiBwb3NcbiAgICB8IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHBhcmFtZXRlciBcIiBeIHBhcmFtLCBwb3NfcCkpXG4gIGluXG4gIGxldCBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0ID1cbiAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHZhbHVlIHBvc192IC0+XG4gICAgICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgICAgfCBcInRydWVcIiB8IFwieWVzXCIgLT4gdHJ1ZVxuICAgICAgICB8IFwiZmFsc2VcIiB8IFwibm9cIiAtPiBmYWxzZVxuICAgICAgICB8IF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gZXJyb3IgXiBcIiBzaG91bGQgYmUgZWl0aGVyIFxcXCJ5ZXNcXFwiIG9yIFxcXCJub1xcXCJcIiwgcG9zX3YpKSlcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIChjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIGNmbG93RmlsZSlcbiAgICAgICAgICgocGFyYW0sIHBvc19wKSwgdmFsdWVfbGlzdCkgLT5cbiAgICAgIG1hdGNoIHBhcmFtIHdpdGhcbiAgICAgIHwgXCJkaXNwbGF5Q29tcHJlc3Npb25cIiAtPlxuICAgICAgICBsZXQgcmVjIHBhcnNlIChhLCBiLCBjKSBsID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IChcInN0cm9uZ1wiLCBfKSA6OiB0bCAtPiBwYXJzZSAoYSwgYiwgdHJ1ZSkgdGxcbiAgICAgICAgICB8IChcIndlYWtcIiwgXykgOjogdGwgLT4gcGFyc2UgKGEsIHRydWUsIGMpIHRsXG4gICAgICAgICAgfCAoXCJub25lXCIsIF8pIDo6IHRsIC0+IHBhcnNlICh0cnVlLCBiLCBjKSB0bFxuICAgICAgICAgIHwgW10gLT4gY29uZiwgKGEsIGIsIGMpLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlXG4gICAgICAgICAgfCAoZXJyb3IsIHBvcykgOjogXyAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKFwiVW5rbm93biB2YWx1ZSBcIiBeIGVycm9yIF4gXCIgZm9yIGNvbXByZXNzaW9uIG1vZGVcIiwgcG9zKSlcbiAgICAgICAgaW5cbiAgICAgICAgcGFyc2Ugc3RvcnlfY29tcHJlc3Npb24gdmFsdWVfbGlzdFxuICAgICAgfCBcImNmbG93RmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHggXyAtPlxuICAgICAgICAgICAgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBTb21lIHgpXG4gICAgICB8IFwic2VlZFwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBwIC0+XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBzZWVkID0gU29tZSAoaW50X29mX3N0cmluZyBzKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKVxuICAgICAgfCBcIlQwXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIGluaXRpYWwgPSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcykgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhIGZsb2F0XCIsIHApKSlcbiAgICAgIHwgXCJwbG90UGVyaW9kXCIgLT5cbiAgICAgICAgKG1hdGNoIHZhbHVlX2xpc3Qgd2l0aFxuICAgICAgICB8IFsgKHMsIHApIF0gLT5cbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBwbG90UGVyaW9kID0gU29tZSAoRFQgKGZsb2F0X29mX3N0cmluZyBzKSkgfSxcbiAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgcCkpKVxuICAgICAgICB8IFsgKHMsIHNwKTsgKHUsIHVwKSBdIC0+XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIHUgPSBcImVcIiB8fCB1ID0gXCJldmVudFwiIHx8IHUgPSBcImV2ZW50c1wiIHx8IHUgPSBcIkV2ZW50XCJcbiAgICAgICAgICAgIHx8IHUgPSBcIkV2ZW50c1wiXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBwbG90UGVyaW9kID0gU29tZSAoREUgKGludF9vZl9zdHJpbmcgcykpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBzcCkpXG4gICAgICAgICAgKSBlbHNlIGlmXG4gICAgICAgICAgICAgIHUgPSBcInQudS5cIiB8fCB1ID0gXCJ0aW1lIHVuaXRzXCIgfHwgdSA9IFwiVGltZSB1bml0c1wiXG4gICAgICAgICAgICAgIHx8IHUgPSBcInRpbWUgdW5pdFwiIHx8IHUgPSBcIlRpbWUgdW5pdFwiXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChEVCAoZmxvYXRfb2Zfc3RyaW5nIHMpKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgc3ApKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiSW5jb3JyZWN0IHVuaXQgXCIgXiB1LCB1cCkpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVyIFwiIF4gcGFyYW0sIHBvc19wKSkpXG4gICAgICB8IFwib3V0cHV0RmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBvdXRwdXRGaWxlTmFtZSA9IFNvbWUgcyB9LFxuICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgIGNmbG93RmlsZSApKVxuICAgICAgfCBcInRyYWNlRmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCB0cmFjZUZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwiZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZSA9IFNvbWUgcyB9LFxuICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgIGNmbG93RmlsZSApKVxuICAgICAgfCBcInByb2dyZXNzQmFyU2l6ZVwiIC0+XG4gICAgICAgICgge1xuICAgICAgICAgICAgY29uZiB3aXRoXG4gICAgICAgICAgICBwcm9ncmVzc1NpemUgPVxuICAgICAgICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHYgcCAtPlxuICAgICAgICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgdlxuICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gdiBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHApKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgfCBcInByb2dyZXNzQmFyU3ltYm9sXCIgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBjb25mIHdpdGhcbiAgICAgICAgICAgIHByb2dyZXNzQ2hhciA9XG4gICAgICAgICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICAgICAgICB0cnkgU3RyaW5nLnVuc2FmZV9nZXQgdiAwXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gdiBeIFwiIHNob3VsZCBiZSBhIGNoYXJhY3RlclwiLCBwKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgIHwgXCJkdW1wSWZEZWFkbG9ja2VkXCIgLT5cbiAgICAgICAgKCB7IGNvbmYgd2l0aCBkdW1wSWZEZWFkbG9ja2VkID0gZ2V0X2Jvb2xfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCB9LFxuICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICB8IFwibWF4Q29uc2VjdXRpdmVDbGFzaFwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBtYXhDb25zZWN1dGl2ZUNsYXNoID0gaW50X29mX3N0cmluZyB2IH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKVxuICAgICAgfCBcImRvdENmbG93c1wiIC0+XG4gICAgICAgIGxldCBmb3JtYXRDZmxvdyA9IGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBfIC0+IHYpIGluXG4gICAgICAgIGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlXG4gICAgICAoKiBpZiBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IHRoZW5cbiAgICAgICAgIChzdG9yeV9jb21wcmVzc2lvbiwgRG90KSBlbHNlXG4gICAgICAgICAoc3RvcnlfY29tcHJlc3Npb24sIEh0bWwpKilcbiAgICAgIHwgXyBhcyBlcnJvciAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIlVua25vd24gcGFyYW1ldGVyIFwiIF4gZXJyb3IsIHBvc19wKSkpXG4gICAgKGVtcHR5LCAoZmFsc2UsIGZhbHNlLCBmYWxzZSksIFwiZG90XCIsIE5vbmUpXG4gICAgcmVzdWx0XG5cbmxldCBwcmludCBmIGNvbmYgPVxuICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl92Ym94IGYgMCBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInNlZWRcXFwiIFxcXCIlaVxcXCJALFwiKVxuICAgICAgZiBjb25mLnNlZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJkdW1wSWZEZWFkbG9ja2VkXFxcIiBcXFwiJWJcXFwiQCxcIlxuICAgICAgY29uZi5kdW1wSWZEZWFkbG9ja2VkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwibWF4Q29uc2VjdXRpdmVDbGFzaFxcXCIgXFxcIiVpXFxcIkAsXCJcbiAgICAgIGNvbmYubWF4Q29uc2VjdXRpdmVDbGFzaFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInByb2dyZXNzQmFyU2l6ZVxcXCIgXFxcIiVpXFxcIkAsXCIgY29uZi5wcm9ncmVzc1NpemVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwcm9ncmVzc0JhclN5bWJvbFxcXCIgXFxcIiVjXFxcIkAsXCIgY29uZi5wcm9ncmVzc0NoYXJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJUMFxcXCIgXFxcIiVnXFxcIkAsXCIpXG4gICAgICBmIGNvbmYuaW5pdGlhbFxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgREUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwbG90UGVyaW9kXFxcIiBcXFwiJWlcXFwiIFxcXCJldmVudHNcXFwiQCxcIiBpXG4gICAgICAgIHwgRFQgdCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwbG90UGVyaW9kXFxcIiBcXFwiJWdcXFwiIFxcXCJ0LnUuXFxcIkAsXCIgdClcbiAgICAgIGYgY29uZi5wbG90UGVyaW9kXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwib3V0cHV0RmlsZU5hbWVcXFwiIFxcXCIlc1xcXCJALFwiKVxuICAgICAgZiBjb25mLm91dHB1dEZpbGVOYW1lXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwidHJhY2VGaWxlTmFtZVxcXCIgXFxcIiVzXFxcIkAsXCIpXG4gICAgICBmIGNvbmYudHJhY2VGaWxlTmFtZVxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcImRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lXFxcIiBcXFwiJXNcXFwiQCxcIilcbiAgICAgIGYgY29uZi5kZWx0YUFjdGl2aXRpZXNGaWxlTmFtZVxuICBpblxuICBGb3JtYXQucHBfY2xvc2VfYm94IGYgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkaXZpZGVfZXhwcl9ieV9pbnQgZSBpID1cbiAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAoQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgIChPcGVyYXRvci5ESVYsIGUsIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCAoTmJyLkkgaSkpKSlcblxudHlwZSAoJ2EsICdiKSBjb3JyZWN0ZWRfcmF0ZV9jb25zdCA9IHtcbiAgbnVtOiBOYnIudDtcbiAgZGVuOiBOYnIudDtcbiAgdmFyOiAoJ2EsICdiKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbjtcbn1cblxubGV0IHJlYyBzaW1wbGlmeSA/KHJvb3Rfb25seSA9IGZhbHNlKSBleHByID1cbiAgbWF0Y2ggZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MgLT5cbiAgICBsZXQgYSwgYiA9XG4gICAgICBpZiByb290X29ubHkgdGhlblxuICAgICAgICBhLCBiXG4gICAgICBlbHNlXG4gICAgICAgIHNpbXBsaWZ5IGEsIHNpbXBsaWZ5IGJcbiAgICBpblxuICAgIGxldCByb290X29ubHkgPSB0cnVlIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlNVTSAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLmFkZCBhIGIpLCBsb2NcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBfIHdoZW4gTmJyLmlzX3plcm8gYSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc196ZXJvIGIgLT4gYVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLnN1YiBhIGIpLCBsb2NcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX3plcm8gYiAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5tdWx0IGEgYiksIGxvY1xuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYScsIF8pLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEnIE5ici56ZXJvIC0+IGFcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGInLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiJyBOYnIuemVybyAtPiBiXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgXyB3aGVuIE5ici5pc19lcXVhbCBhIE5ici5vbmUgLT4gYlxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKCAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCksXG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBjLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykpLCBfICkgKVxuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCBjKSwgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgYywgKEFsZ19leHByLkNPTlNUIGIsIF8pKSwgXyApLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSApIC0+XG4gICAgICAgICgqIGEqKGIqYykgLT4gKGEqYikqYyBpZiBhICYgYiBhcmUgY29uc3RhbnQgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIChOYnIubXVsdCBhIGIpLCBsb2NfY3N0KSwgYyksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfKSApXG4gICAgICB8ICggKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCBjKSwgXyksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpICkgLT5cbiAgICAgICAgKCogYSooYi9jKSAtPiAoYSpiKS9jIGlmIGEgJiBiIGFyZSBjb25zdGFudCAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCAoTmJyLm11bHQgYSBiKSwgbG9jX2NzdCksIGMpLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBiLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLCBfKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCkgKVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBiLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLCBfKSApXG4gICAgICAgIHdoZW4gKG5vdCAoTmJyLmlzX3plcm8gYykpICYmIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogYSooYi9jKSAtPiAoKGEvYykqYikgaWYgYSAmIGMgYXJlIGNvbnN0YW50ICBhbmQgY3xhICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKCBPcGVyYXRvci5NVUxULFxuICAgICAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBhIGMpLCBsb2NfY3N0KSxcbiAgICAgICAgICAgICAgICBiICksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgICAoICggT3BlcmF0b3IuRElWIHwgT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLlNVTSB8IE9wZXJhdG9yLk1JTlVTXG4gICAgICAgICAgICAgICAgICB8IE9wZXJhdG9yLlBPVyB8IE9wZXJhdG9yLk1PRFVMTyB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgIF8gKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKVxuICAgICAgICB3aGVuIChub3QgKE5ici5pc196ZXJvIGIpKSAmJiBOYnIuaXNfemVybyAoTmJyLnJlbSBhIGIpIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGEgYiksIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBiKSxcbiAgICAgICAgICAgIGxvY19iaW4gKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYywgXykgKVxuICAgICAgICB3aGVuIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogKGEqYi9jKSAmIGN8YSAtPiAoKGMvYSkqYikqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICggT3BlcmF0b3IuTVVMVCxcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYyBhKSwgbG9jX2JpbiksXG4gICAgICAgICAgICAgICAgYiApLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGIsIChBbGdfZXhwci5DT05TVCBhLCBfKSksXG4gICAgICAgICAgICBsb2NfYmluICksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGMsIF8pIClcbiAgICAgICAgd2hlbiBOYnIuaXNfemVybyAoTmJyLnJlbSBhIGMpIC0+XG4gICAgICAgICgqIChiKmEvYykgJiBjfGEgLT4gKChjL2EpKmIpKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoIE9wZXJhdG9yLk1VTFQsXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGMgYSksIGxvY19iaW4pLFxuICAgICAgICAgICAgICAgIGIgKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggYSxcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLFxuICAgICAgICAgICAgbG9jZGl2ICkgKSAtPlxuICAgICAgICAoKiAoYS9iL2MpIC0+IGEvKGIqYykgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuRElWLCBhLCBBbGdfZXhwci4oQ09OU1QgKE5ici5tdWx0IGIgYyksIGxvY2RpdikpLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICAgKCAoIE9wZXJhdG9yLkRJViB8IE9wZXJhdG9yLk1VTFQgfCBPcGVyYXRvci5TVU0gfCBPcGVyYXRvci5NSU5VU1xuICAgICAgICAgICAgICAgICAgfCBPcGVyYXRvci5QT1cgfCBPcGVyYXRvci5NT0RVTE8gfCBPcGVyYXRvci5NSU4gfCBPcGVyYXRvci5NQVhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF8sXG4gICAgICAgICAgICAgICAgICBfIClcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLlBPVyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXylcbiAgICAgICAgd2hlbiBOYnIuaXNfc21hbGxlciBhIChOYnIuSSAxMSlcbiAgICAgICAgICAgICAmJiBOYnIuaXNfZ3JlYXRlciBiIE5ici56ZXJvXG4gICAgICAgICAgICAgJiYgTmJyLmlzX3NtYWxsZXIgYiAoTmJyLkkgMTEpIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIucG93IGEgYiksIGxvY1xuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5NT0RVTE8gLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWCAtPiBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jIC0+XG4gICAgbGV0IGEgPSBzaW1wbGlmeSBhIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIC0+IEFsZ19leHByLkNPTlNUIChOYnIubmVnIGEpLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICBfICkgLT5cbiAgICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgICB8IE9wZXJhdG9yLkNPU0lOVVMgfCBPcGVyYXRvci5FWFAgLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgIHwgQWxnX2V4cHIuQ09OU1QgYSwgXyB3aGVuIE5ici5pc196ZXJvIGEgLT4gQWxnX2V4cHIuQ09OU1QgTmJyLm9uZSwgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuU0lOVVMgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgIHwgQWxnX2V4cHIuQ09OU1QgYSwgXyB3aGVuIE5ici5pc19lcXVhbCBhIE5ici5vbmUgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8sIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICBfICkgLT5cbiAgICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgICB8IE9wZXJhdG9yLlNRUlQgfCBPcGVyYXRvci5MT0cgfCBPcGVyYXRvci5JTlQgLT5cbiAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4KSwgbG9jIC0+XG4gICAgbGV0IGV4cHIgPSBzaW1wbGlmeSBleHByIGluXG4gICAgKG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPiBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICBfICkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIG1peCksIGxvYylcbiAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIGxvYyAtPlxuICAgIGxldCBleHByID0gc2ltcGxpZnkgZXhwciBpblxuICAgIChtYXRjaCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkNPTlNUIF8sIF8gLT4gQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8sIGxvY1xuICAgIHwgKCAoIEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgXyApIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIGxvYylcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXywgX1xuICB8IEFsZ19leHByLkFMR19WQVIgXywgX1xuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8sIF9cbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBfLCBfXG4gIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPlxuICAgIGV4cHJcbiAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubyksIGxvYyAtPlxuICAgIGxldCBjb25kLCB5ZXMsIG5vID0gc2ltcGxpZnlfYm9vbCBjb25kLCBzaW1wbGlmeSB5ZXMsIHNpbXBsaWZ5IG5vIGluXG4gICAgKG1hdGNoIGNvbmQgd2l0aFxuICAgIHwgQWxnX2V4cHIuVFJVRSwgXyAtPiB5ZXNcbiAgICB8IEFsZ19leHByLkZBTFNFLCBfIC0+IG5vXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSwgX1xuICAgIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pLCBfXG4gICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKSwgXyAtPlxuICAgICAgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pLCBsb2MpXG5cbmFuZCBzaW1wbGlmeV9ib29sIGV4cHJfYm9vbCA9XG4gIG1hdGNoIGV4cHJfYm9vbCB3aXRoXG4gIHwgQWxnX2V4cHIuVFJVRSwgXyB8IEFsZ19leHByLkZBTFNFLCBfIC0+IGV4cHJfYm9vbFxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSwgbG9jIC0+XG4gICAgKG1hdGNoIHNpbXBsaWZ5X2Jvb2wgYSB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFLCBfIC0+IEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICB8IEFsZ19leHByLkZBTFNFLCBfIC0+IEFsZ19leHByLlRSVUUsIGxvY1xuICAgIHwgKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXyksIF9cbiAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXyksIF9cbiAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXyksIF8gKSBhcyBhJyAtPlxuICAgICAgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEnKSwgbG9jKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIGxvYyAtPlxuICAgIGxldCBhLCBiID0gc2ltcGxpZnlfYm9vbCBhLCBzaW1wbGlmeV9ib29sIGIgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuQU5EIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5UUlVFLCBfKSwgXyAtPiBiXG4gICAgICB8IChBbGdfZXhwci5GQUxTRSwgXyksIF8gLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuVFJVRSwgXykgLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuRkFMU0UsIF8pIC0+IGJcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuT1IgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLlRSVUUsIF8pLCBfIC0+IGFcbiAgICAgIHwgKEFsZ19leHByLkZBTFNFLCBfKSwgXyAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5UUlVFLCBfKSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5GQUxTRSwgXykgLT4gYVxuICAgICAgfCAoICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBsb2MpKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgbG9jIC0+XG4gICAgbGV0IGEsIGIgPSBzaW1wbGlmeSBhLCBzaW1wbGlmeSBiIGluXG4gICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgLT5cbiAgICAgIChtYXRjaCBvcCB3aXRoXG4gICAgICB8IE9wZXJhdG9yLkdSRUFURVIgLT5cbiAgICAgICAgaWYgTmJyLmlzX2dyZWF0ZXIgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgIHwgT3BlcmF0b3IuU01BTExFUiAtPlxuICAgICAgICBpZiBOYnIuaXNfc21hbGxlciBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5FUVVBTCAtPlxuICAgICAgICBpZiBOYnIuaXNfZXF1YWwgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgIHwgT3BlcmF0b3IuRElGRiAtPlxuICAgICAgICBpZiBOYnIuaXNfZXF1YWwgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2MpXG4gICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyApLFxuICAgICAgICAgIF8gKSxcbiAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgXyApICkgLT5cbiAgICAgIEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgbG9jKVxuXG5sZXQgc2ltcGxpZnkgZXhwciA9XG4gIGxldCByb290X29ubHkgPSBmYWxzZSBpblxuICBzaW1wbGlmeSB+cm9vdF9vbmx5IGV4cHJcblxubGV0IHJlYyBjbGVhbiBleHByID1cbiAgbGV0IGV4cHIgPSBmc3QgZXhwciBpblxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGNsZWFuIGEsIGNsZWFuIGIpKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0FMR19PUCAob3AsIGNsZWFuIGEpKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIGR0KSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5ESUZGX1RPS0VOIChjbGVhbiBleHByLCBkdCkpXG4gIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgZHQpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGNsZWFuIGV4cHIsIGR0KSlcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuQ09OU1QgXyAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IGV4cHJcbiAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuSUYgKGNsZWFuX2Jvb2wgY29uZCwgY2xlYW4geWVzLCBjbGVhbiBubykpXG5cbmFuZCBjbGVhbl9ib29sIGV4cHJfYm9vbCA9XG4gIGxldCBleHByID0gZnN0IGV4cHJfYm9vbCBpblxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4gTG9jLmFubm90X3dpdGhfZHVtbXkgZXhwclxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5VTl9CT09MX09QIChvcCwgY2xlYW5fYm9vbCBhKSlcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgY2xlYW5fYm9vbCBhLCBjbGVhbl9ib29sIGIpKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT01QQVJFX09QIChvcCwgY2xlYW4gYSwgY2xlYW4gYikpXG5cbmxldCByZWMgZ2V0X2NvcnJlY3RlZF9yYXRlIGUgPVxuICBtYXRjaCBlIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSwgZSksIF9cbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBlLCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlIC0+XG4gICAgICBTb21lIHsgY29ycmVjdGVkX3JhdGUgd2l0aCBudW0gPSBOYnIubXVsdCBjc3QgY29ycmVjdGVkX3JhdGUubnVtIH0pXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBlLCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlIC0+XG4gICAgICBTb21lIHsgY29ycmVjdGVkX3JhdGUgd2l0aCBkZW4gPSBOYnIubXVsdCBjc3QgY29ycmVjdGVkX3JhdGUuZGVuIH0pXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuU1VNLCBlMSwgZTIpLCBfIC0+XG4gICAgKG1hdGNoIGdldF9jb3JyZWN0ZWRfcmF0ZSBlMSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUxIC0+XG4gICAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUyIHdpdGhcbiAgICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZTJcbiAgICAgICAgd2hlbiBjb21wYXJlIGNvcnJlY3RlZF9yYXRlMS52YXIgY29ycmVjdGVkX3JhdGUyLnZhciA9IDBcbiAgICAgICAgICAgICAmJiBOYnIuaXNfZXF1YWwgY29ycmVjdGVkX3JhdGUxLmRlbiBjb3JyZWN0ZWRfcmF0ZTIuZGVuIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0ZWRfcmF0ZTEgd2l0aFxuICAgICAgICAgICAgbnVtID0gTmJyLmFkZCBjb3JyZWN0ZWRfcmF0ZTEubnVtIGNvcnJlY3RlZF9yYXRlMi5udW07XG4gICAgICAgICAgfVxuICAgICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlMlxuICAgICAgICB3aGVuIGNvbXBhcmUgY29ycmVjdGVkX3JhdGUxLnZhciBjb3JyZWN0ZWRfcmF0ZTIudmFyID0gMCAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29ycmVjdGVkX3JhdGUxIHdpdGhcbiAgICAgICAgICAgIG51bSA9XG4gICAgICAgICAgICAgIE5ici5hZGRcbiAgICAgICAgICAgICAgICAoTmJyLm11bHQgY29ycmVjdGVkX3JhdGUyLmRlbiBjb3JyZWN0ZWRfcmF0ZTEubnVtKVxuICAgICAgICAgICAgICAgIChOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5udW0pO1xuICAgICAgICAgICAgZGVuID0gTmJyLm11bHQgY29ycmVjdGVkX3JhdGUxLmRlbiBjb3JyZWN0ZWRfcmF0ZTIuZGVuO1xuICAgICAgICAgIH1cbiAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKSlcbiAgfCAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgKCAoIE9wZXJhdG9yLk1VTFQgfCBPcGVyYXRvci5ESVYgfCBPcGVyYXRvci5NSU5VUyB8IE9wZXJhdG9yLlBPV1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9EVUxPIHwgT3BlcmF0b3IuTUFYIHwgT3BlcmF0b3IuTUlOICksXG4gICAgICAgICAgXyxcbiAgICAgICAgICBfICksXG4gICAgICBfIClcbiAgfCAoICggQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gX1xuICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5JRiBfICksXG4gICAgICBfICkgLT5cbiAgICBOb25lXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfLCBfIC0+IFNvbWUgeyB2YXIgPSBTb21lIGU7IG51bSA9IE5ici5vbmU7IGRlbiA9IE5ici5vbmUgfVxuICB8IEFsZ19leHByLkNPTlNUIGNzdCwgXyAtPiBTb21lIHsgdmFyID0gTm9uZTsgbnVtID0gY3N0OyBkZW4gPSBOYnIub25lIH1cblxubGV0IGdldF9jb3JyZWN0ZWRfcmF0ZSBlID0gZ2V0X2NvcnJlY3RlZF9yYXRlIChjbGVhbiBlKVxuXG5sZXQgcHJpbnQgcHJfdmFyIGYgY29ycmVjdGVkX3JhdGVfY29uc3QgPVxuICBtYXRjaCBjb3JyZWN0ZWRfcmF0ZV9jb25zdCB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTm9uZVwiXG4gIHwgU29tZSBhIC0+XG4gICAgKG1hdGNoIGEudmFyIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiglYS8lYSkuJWFcIiBOYnIucHJpbnQgYS5udW0gTmJyLnByaW50IGEuZGVuIHByX3ZhciBhLnZhclxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiKCVhLyVhKVwiIE5ici5wcmludCBhLm51bSBOYnIucHJpbnQgYS5kZW4pXG5cbmxldCBuZWNlc3NhcmlseV9lcXVhbCBhX29wdCBiX29wdCA9XG4gIG1hdGNoIGFfb3B0LCBiX29wdCB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgIE9wdGlvbl91dGlsLmVxdWFsIEFsZ19leHByLmVxdWFsIGEudmFyIGIudmFyXG4gICAgJiYgTmJyLmlzX2VxdWFsIChOYnIubXVsdCBhLm51bSBiLmRlbikgKE5ici5tdWx0IGEuZGVuIGIubnVtKVxuXG5sZXQgZGVwIGVtcHR5IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52ID90aW1lX3ZhciBleHByID1cbiAgbGV0IHJlYyBhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZXhwciBhY2N1ID1cbiAgICBtYXRjaCBmc3QgZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChfLCBlMSwgZTIpIHwgQWxnX2V4cHIuSUYgKF8sIGUxLCBlMikgLT5cbiAgICAgIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBlMVxuICAgICAgICAoYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUyIGFjY3UpXG4gICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKF8sIGUpXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChlLCBfKVxuICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZSwgXykgLT5cbiAgICAgIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBlIGFjY3VcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiAtPlxuICAgICAgKG1hdGNoIHRpbWVfdmFyIHdpdGhcbiAgICAgIHwgU29tZSBpZCAtPiBhZGRfbWl4dHVyZSBpZCBhY2N1XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICggXCJBIHZhcmlhYmxlIGZvciB0aW1lIHNoYWxsIGJlIHByb3ZpZGVkIHRvIGFuYWx5c2UgdGhlIFxcXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jZXMgaW4gYSB0aW1lLWRlcGVuZGVudCBleHByZXNzaW9uXCIsXG4gICAgICAgICAgICAgICBzbmQgZXhwciApKSlcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVIgKSAtPlxuICAgICAgYWNjdVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBpZCAtPiB1bmlvbiAoZGVwX2VudiBpZCkgYWNjdVxuICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgbWl4IC0+IGFkZF9taXh0dXJlIG1peCBhY2N1XG4gICAgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBhZGRfdG9rZW4gaWQgYWNjdVxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXyAtPiBhY2N1XG4gIGluXG4gIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBleHByIGVtcHR5XG5cbmxldCByZWMgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHIgPVxuICBtYXRjaCBmc3QgZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuSUYgKGIsIGUxLCBlMikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgKEFsZ19leHByLklGXG4gICAgICAgICAoIGIsXG4gICAgICAgICAgIGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSxcbiAgICAgICAgICAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyICkpXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGUxLCBlMikgLT5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgICBBbGdfZXhwci5hZGRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSlcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMilcbiAgICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAgIEFsZ19leHByLmFkZFxuICAgICAgICAoQWxnX2V4cHIubXVsdCBlMSAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKSlcbiAgICAgICAgKEFsZ19leHByLm11bHQgZTIgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkpXG4gICAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubWludXNcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSlcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMilcbiAgICB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWCAtPiBBbGdfZXhwci5pbnQgMFxuICAgIHwgT3BlcmF0b3IuTU9EVUxPIC0+IGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMVxuICAgIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgICBBbGdfZXhwci5kaXZcbiAgICAgICAgKEFsZ19leHByLm1pbnVzXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpIGUyKVxuICAgICAgICAgICAoQWxnX2V4cHIubXVsdCAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKSBlMSkpXG4gICAgICAgIChBbGdfZXhwci5wb3cgZTIgKEFsZ19leHByLmludCAyKSlcbiAgICB8IE9wZXJhdG9yLlBPVyAtPlxuICAgICAgKCogKHVedikqKHYnKmxuKHUpK3YqdScvdSkgKilcbiAgICAgIEFsZ19leHByLm11bHQgKEFsZ19leHByLnBvdyBlMSBlMilcbiAgICAgICAgKEFsZ19leHByLmFkZFxuICAgICAgICAgICAoQWxnX2V4cHIubXVsdFxuICAgICAgICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgICAgICAgICAgICAoQWxnX2V4cHIubG4gZTEpKVxuICAgICAgICAgICAoQWxnX2V4cHIuZGl2XG4gICAgICAgICAgICAgIChBbGdfZXhwci5tdWx0IGUyIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpKVxuICAgICAgICAgICAgICBlMSkpKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGUpIC0+XG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgICAgQWxnX2V4cHIudW1pbnVzIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICB8IE9wZXJhdG9yLkNPU0lOVVMgLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIudW1pbnVzIChBbGdfZXhwci5zaW4gZSkpXG4gICAgfCBPcGVyYXRvci5TSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubXVsdCAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpIChBbGdfZXhwci5jb3MgZSlcbiAgICB8IE9wZXJhdG9yLkxPRyAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci5kaXYgKEFsZ19leHByLmludCAxKSBlKVxuICAgIHwgT3BlcmF0b3IuU1FSVCAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci5kaXYgKEFsZ19leHByLmludCAoLTEpKSAoQWxnX2V4cHIuc3FydCBlKSlcbiAgICB8IE9wZXJhdG9yLkVYUCAtPiBBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSkgZVxuICAgIHwgT3BlcmF0b3IuVEFOIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmFkZCAoQWxnX2V4cHIuaW50IDEpIChBbGdfZXhwci5wb3cgZSAoQWxnX2V4cHIuaW50IDIpKSlcbiAgICB8IE9wZXJhdG9yLklOVCAtPiBBbGdfZXhwci5pbnQgMClcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIgLT4gZl90aW1lICgpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUlxuICAgICAgfCBPcGVyYXRvci5UTUFYX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSICkgLT5cbiAgICBBbGdfZXhwci5pbnQgMFxuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG1peCAtPiBmX21peCBtaXhcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBmX3Rva2VuIGlkXG4gIHwgQWxnX2V4cHIuQ09OU1QgXyAtPiBBbGdfZXhwci5pbnQgMFxuICB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgIC0+XG4gICAgZl9zeW1iIGV4cHJcblxubGV0IGRpZmZfdG9rZW4gZXhwciB0b2tlbiA9XG4gIGxldCBmX21peCBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgbGV0IGZfdG9rZW4gYSA9XG4gICAgaWYgYSA9IHRva2VuIHRoZW5cbiAgICAgIEFsZ19leHByLmludCAxXG4gICAgZWxzZVxuICAgICAgQWxnX2V4cHIuaW50IDBcbiAgaW5cbiAgbGV0IGZfc3ltYiBleHByID0gQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGZfdGltZSBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHJcblxubGV0IGRpZmZfbWl4dHVyZSA/dGltZV92YXIgZXhwciBtaXh0dXJlID1cbiAgbGV0IGZfbWl4IGEgPVxuICAgIGlmIGEgPSBtaXh0dXJlIHRoZW5cbiAgICAgIEFsZ19leHByLmludCAxXG4gICAgZWxzZVxuICAgICAgQWxnX2V4cHIuaW50IDBcbiAgaW5cbiAgbGV0IGZfdG9rZW4gXyA9IEFsZ19leHByLmludCAwIGluXG4gIGxldCBmX3N5bWIgZXhwciA9IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIG1peHR1cmUpLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGZfdGltZSAoKSA9XG4gICAgbWF0Y2ggdGltZV92YXIgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gbWl4dHVyZSA9IGIgLT4gQWxnX2V4cHIuaW50IDFcbiAgICB8IFNvbWUgXyAtPiBBbGdfZXhwci5pbnQgMFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkEgdGltZS1kZXBlbmRlbnQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgZGlmZmVyZW50aWF0ZWQgd2l0aG91dCBcXFxuICAgICAgICAgICAgICBzcGVjaWZ5aW5nIGEgdmFyaWFibGUgZm9yIHRpbWUgcHJvZ3Jlc3NcIixcbiAgICAgICAgICAgICBMb2MuZHVtbXkgKSlcbiAgaW5cbiAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHJcblxubGV0IGZvbGRfb3Zlcl9taXhfaW5fbGlzdCBmIG1peCBhY2N1ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjY3UgYXJyYXlfaWQgLT5cbiAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjY3UgcGlkIC0+IGYgcGlkIGFjY3UpIGFjY3UgYXJyYXlfaWQpXG4gICAgYWNjdSBtaXhcblxubGV0IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3UgPVxuICBsZXQgbCA9IEFsZ19leHByLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgZXhwciBpblxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjY3UgbWl4IC0+IGZvbGRfb3Zlcl9taXhfaW5fbGlzdCBmIG1peCBhY2N1KSBhY2N1IGxcblxubGV0IGZvbGRfb3Zlcl9taXh0dXJlc19pbl9hbGdfZXhwcnMgZiBtb2RlbCBhY2N1ID1cbiAgbGV0IGFsZ3NfZXhwciA9IE1vZGVsLmdldF9hbGdzIG1vZGVsIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9IE1vZGVsLmdldF9vYnMgbW9kZWwgaW5cbiAgKCphbGdzKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IChfLCBtaXgpIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBtaXggYWNjdSlcbiAgICAgIGFjY3UgYWxnc19leHByXG4gIGluXG4gICgqb2JzZXJ2YXRpb25zKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IG1peCAtPiBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgbWl4IGFjY3UpXG4gICAgICBhY2N1IG9ic2VydmFibGVzXG4gIGluXG4gICgqcnVsZXMqKVxuICBsZXQgcnVsZXMgPSBNb2RlbC5nZXRfcnVsZXMgbW9kZWwgaW5cbiAgKCpyYXRlKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IGVsZW1lbnRhcnlfcnVsZSAtPlxuICAgICAgICBsZXQgcmF0ZSA9IGVsZW1lbnRhcnlfcnVsZS5QcmltaXRpdmVzLnJhdGUgaW5cbiAgICAgICAgbGV0IGFjY3UgPSBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgcmF0ZSBhY2N1IGluXG4gICAgICAgICgqdW5hcnlfcmF0ZSopXG4gICAgICAgIGxldCB1bmFyeV9yYXRlID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSBpblxuICAgICAgICBsZXQgYWNjdSA9XG4gICAgICAgICAgbWF0Y2ggdW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgICB8IFNvbWUgKGV4cHIsIF8pIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgKCpkZWx0YSB0b2tlbnMqKVxuICAgICAgICBsZXQgZGVsdGFfdG9rZW5zID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIGluXG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhY2N1IChleHByLCBfKSAtPiBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgZXhwciBhY2N1KVxuICAgICAgICAgICAgYWNjdSBkZWx0YV90b2tlbnNcbiAgICAgICAgaW5cbiAgICAgICAgYWNjdSlcbiAgICAgIGFjY3UgcnVsZXNcbiAgaW5cbiAgYWNjdVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFNpbXVsYXRpb25faW5mbyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7XG4gICAgc3RvcnlfaWQ6IGludDtcbiAgICBzdG9yeV90aW1lOiBmbG9hdDtcbiAgICBzdG9yeV9ldmVudDogaW50O1xuICAgIHByb2ZpbGluZ19pbmZvOiAnYTtcbiAgfVxuICAoKiB0eXBlIG9mIGRhdGEgdG8gYmUgZ2l2ZW4gd2l0aCBvYnNlcnZhYmxlcyBmb3Igc3RvcnkgY29tcHJlc3Npb25cbiAgICAgKHN1Y2ggYXMgZGF0ZSB3aGVuIHRoZSBvYnMgaXMgdHJpZ2dlcmVkKilcblxuICBsZXQgdXBkYXRlX3Byb2ZpbGluZ19pbmZvIGEgaW5mbyA9XG4gICAge1xuICAgICAgc3RvcnlfaWQgPSBpbmZvLnN0b3J5X2lkO1xuICAgICAgc3RvcnlfdGltZSA9IGluZm8uc3RvcnlfdGltZTtcbiAgICAgIHN0b3J5X2V2ZW50ID0gaW5mby5zdG9yeV9ldmVudDtcbiAgICAgIHByb2ZpbGluZ19pbmZvID0gYTtcbiAgICB9XG5cbiAgbGV0IGV2ZW50IGEgPSBhLnN0b3J5X2V2ZW50XG4gIGxldCBzdG9yeV9pZCBhID0gYS5zdG9yeV9pZFxuICBsZXQgY29tcGFyZV9ieV9zdG9yeV9pZCB4IHkgPSBNb2RzLmludF9jb21wYXJlIHguc3RvcnlfaWQgeS5zdG9yeV9pZFxuXG4gIGxldCBkdW1teSBhID1cbiAgICB7IHN0b3J5X2lkID0gMDsgc3RvcnlfdGltZSA9IDAuOyBzdG9yeV9ldmVudCA9IDA7IHByb2ZpbGluZ19pbmZvID0gYSB9XG5cbiAgbGV0IGpzb25fZGljdGlvbm5hcnkgPVxuICAgIFwiXFxcInNpbXVsYXRpb25faW5mb1xcXCI6e1xcXCJpZFxcXCI6MCxcXFwidGltZVxcXCI6MSxcXFwiZXZlbnRcXFwiOjIsXFxcInByb2ZpbGluZ1xcXCI6M31cIlxuXG4gIGxldCB0b19qc29uIGYgeCA9XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCB4LnN0b3J5X2lkO1xuICAgICAgICBgRmxvYXQgeC5zdG9yeV90aW1lO1xuICAgICAgICBgSW50IHguc3RvcnlfZXZlbnQ7XG4gICAgICAgIGYgeC5wcm9maWxpbmdfaW5mbztcbiAgICAgIF1cblxuICBsZXQgb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgICB8IGBMaXN0IFsgYEludCBzdG9yeV9pZDsgYEZsb2F0IHN0b3J5X3RpbWU7IGBJbnQgc3RvcnlfZXZlbnQ7IGluZm8gXSAtPlxuICAgICAgeyBzdG9yeV9pZDsgc3RvcnlfdGltZTsgc3RvcnlfZXZlbnQ7IHByb2ZpbGluZ19pbmZvID0gZiBpbmZvIH1cbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgc2ltdWxhdGlvbl9pbmZvXCIsIHgpKVxuXG4gIGxldCB3cml0ZV9qc29uIGYgb2IgeCA9XG4gICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4LnN0b3J5X2lkKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvIHguc3RvcnlfdGltZSk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8geC5zdG9yeV9ldmVudCk7XG4gICAgICAgIChmdW4gbyAtPiBmIG8geC5wcm9maWxpbmdfaW5mbyk7XG4gICAgICBdXG5cbiAgbGV0IHJlYWRfanNvbiBmIHN0IGIgPVxuICAgIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAgIChmdW4gc3QgYiBzdG9yeV9pZCAtPlxuICAgICAgICBsZXQgc3RvcnlfdGltZSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0b3J5X2V2ZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IHByb2ZpbGluZ19pbmZvID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIHsgc3RvcnlfaWQ7IHN0b3J5X3RpbWU7IHN0b3J5X2V2ZW50OyBwcm9maWxpbmdfaW5mbyB9KVxuICAgICAgc3QgYlxuZW5kXG5cbnR5cGUgZXZlbnRfa2luZCA9XG4gIHwgUlVMRSBvZiBpbnRcbiAgfCBJTklUIG9mIGludCBsaXN0ICgqIHRoZSBhZ2VudHMgKilcbiAgfCBQRVJUIG9mIHN0cmluZyAoKiB0aGUgcnVsZSAqKVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgeCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IFJVTEUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUlVMRSglaSlcIiBpXG4gICAgfCBJTklUIGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJTklUKCVhKVwiIChQcC5saXN0IFBwLmNvbW1hIEZvcm1hdC5wcF9wcmludF9pbnQpIGxcbiAgICB8IFBFUlQgcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUEVSVCglcylcIiBzKVxuICB8IFNvbWUgZW52IC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgUEVSVCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBzXG4gICAgfCBSVUxFIHJfaWQgLT4gTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52IGYgcl9pZFxuICAgIHwgSU5JVCBzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSW50cm8gQFs8aD4lYUBdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgICBzKVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgPSBmdW5jdGlvblxuICB8IFJVTEUgcl9pZCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVhXFxcIiwgc2hhcGU9JXMsIHN0eWxlPSVzLCBmaWxsY29sb3IgPSAlc11cIlxuICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudilcbiAgICAgIHJfaWQgXCJpbnZob3VzZVwiIFwiZmlsbGVkXCIgXCJsaWdodGJsdWVcIlxuICB8IElOSVQgcyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiW2xhYmVsPVxcXCJJbnRybyBAWzxoPiVhQF1cXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvcj1ncmVlbl1cIlxuICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgcyBcImhvdXNlXCIgXCJmaWxsZWRcIlxuICB8IFBFUlQgcyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVzXFxcIiwgc2hhcGU9JXMsIHN0eWxlPSVzLCBmaWxsY29sb3IgPSAlc11cIiBzXG4gICAgICBcImludmhvdXNlXCIgXCJmaWxsZWRcIiBcImdyZWVuXCJcblxudHlwZSBzdGVwID1cbiAgfCBTdWJzIG9mIGludCAqIGludFxuICB8IFJ1bGUgb2ZcbiAgICAgIGludCAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5ldmVudCAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBQZXJ0IG9mXG4gICAgICBzdHJpbmdcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmV2ZW50XG4gICAgICAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBJbml0IG9mIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdFxuICB8IE9icyBvZlxuICAgICAgc3RyaW5nXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICAgICAgKiB1bml0IFNpbXVsYXRpb25faW5mby50XG4gIHwgRHVtbXkgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IHN0ZXAgbGlzdFxuXG5sZXQgc3Vic19zdGVwIGEgYiA9IFN1YnMgKGEsIGIpXG5sZXQgZHVtbXlfc3RlcCB4ID0gRHVtbXkgeFxubGV0IHByaW50X3N1YnMgX2YgKF9hLCBfYikgPSAoKVxuXG5sZXQgcHJpbnRfc2l0ZSA/ZW52IGYgKChhZ19pZCwgYWcpLCBzKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYV8laS4lYVwiIChNb2RlbC5wcmludF9hZ2VudCA/ZW52KSBhZyBhZ19pZFxuICAgIChtYXRjaCBlbnYgd2l0aFxuICAgIHwgU29tZSBlbnYgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSBhZ1xuICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgIHNcblxubGV0IHByaW50X2luaXQgfmNvbXBhY3QgP2VudiBsb2cgYWN0aW9ucyA9XG4gIGxldCBzaWdzID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGVudiAtPiBTb21lIChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgaW5cbiAgaWYgY29tcGFjdCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgbG9nIFwiSU5JVFwiXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBsb2cgXCIqKipAWzwxPklOSVQ6JWFAXSoqKlwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV9hY3Rpb24gP3NpZ3MpKVxuICAgICAgYWN0aW9uc1xuXG5sZXQgcHJpbnRfc2lkZV9lZmZlY3RzID9lbnYgPVxuICBQcC5saXN0XG4gICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiBcIilcbiAgICAoZnVuIGYgKHNpdGUsIHN0YXRlKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlNpZGVfZWZmZWN0cyglYSwlYSlcIiAocHJpbnRfc2l0ZSA/ZW52KSBzaXRlXG4gICAgICAgIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2JpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgP3NpZ3M6KE9wdGlvbl91dGlsLm1hcCBNb2RlbC5zaWduYXR1cmVzIGVudikpXG4gICAgICAgIHN0YXRlKVxuXG5sZXQgcHJpbnRfZXZlbnQgfmNvbXBhY3QgP2VudiBsb2cgKGV2X2tpbmQsIGUpID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBwcmludF9ldmVudF9raW5kID9lbnYgbG9nIGV2X2tpbmRcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGxvZ1xuICAgICAgXCJAWyoqKlJlZmluZWQgZXZlbnQ6KioqQCwqIEthcHBhX3J1bGUgJWEgU3RvcnkgZW5jb2Rpbmc6JWElYSVhQF1cIlxuICAgICAgKHByaW50X2V2ZW50X2tpbmQgP2VudikgZXZfa2luZFxuICAgICAgKFBwLmxpc3QgUHAuZW1wdHlcbiAgICAgICAgIChQcC5saXN0IFBwLmVtcHR5IChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgP3NpZ3MpKSlcbiAgICAgIChlLkluc3RhbnRpYXRpb24udGVzdHMgQCBbIGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgXSlcbiAgICAgIChQcC5saXN0IFBwLmVtcHR5IChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncykpXG4gICAgICBlLkluc3RhbnRpYXRpb24uYWN0aW9ucyAocHJpbnRfc2lkZV9lZmZlY3RzID9lbnYpXG4gICAgICBlLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuXG5sZXQgcHJpbnRfb2JzIH5jb21wYWN0ID9lbnYgZiAoZXZfa2luZCwgdGVzdHMsIF8pID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiT0JTICVzXCIgZXZfa2luZFxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIioqKkBbPDE+T0JTICVzOiVhQF0qKipcIiBldl9raW5kXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZVxuICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCA/c2lncykpKVxuICAgICAgdGVzdHNcblxubGV0IHByaW50X3N0ZXAgPyhjb21wYWN0ID0gZmFsc2UpID9lbnYgZiA9IGZ1bmN0aW9uXG4gIHwgU3VicyAoYSwgYikgLT4gcHJpbnRfc3VicyBmIChhLCBiKVxuICB8IFJ1bGUgKHgsIHksIF96KSAtPiBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGYgKFJVTEUgeCwgeSlcbiAgfCBQZXJ0ICh4LCB5LCBfeikgLT4gcHJpbnRfZXZlbnQgfmNvbXBhY3QgP2VudiBmIChQRVJUIHgsIHkpXG4gIHwgSW5pdCBhIC0+IHByaW50X2luaXQgfmNvbXBhY3QgP2VudiBmIGFcbiAgfCBPYnMgKGEsIGIsIGMpIC0+IHByaW50X29icyB+Y29tcGFjdCA/ZW52IGYgKGEsIGIsIGMpXG4gIHwgRHVtbXkgXyAtPiAoKVxuXG5sZXQgZ2V0X3R5cGVzX2Zyb21faW5pdCBhID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyBhY3Rpb24gLT5cbiAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoXywgYXR5cGUpLCBfKSAtPiBhdHlwZSA6OiBhY2NcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgIC0+XG4gICAgICAgIGFjYylcbiAgICBbXSBhXG5cbmxldCBwcmludF9sYWJlbF9vZl9zdGVwID9lbnYgZiB4ID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgU3VicyBfIC0+ICgpXG4gICAgfCBSdWxlICh4LCBfLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWlcIiB4XG4gICAgfCBQZXJ0ICh4LCBfLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiB4XG4gICAgfCBJbml0IGEgLT5cbiAgICAgIGxldCBsID0gZ2V0X3R5cGVzX2Zyb21faW5pdCBhIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSU5JVCglYSlcIiAoUHAubGlzdCBQcC5jb21tYSBGb3JtYXQucHBfcHJpbnRfaW50KSBsXG4gICAgfCBPYnMgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHhcbiAgICB8IER1bW15IF8gLT4gKCkpXG4gIHwgU29tZSBlbnYgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBTdWJzIF8gLT4gKClcbiAgICB8IFJ1bGUgKHgsIF8sIF8pIC0+IE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudiBmIHhcbiAgICB8IFBlcnQgKHgsIF8sIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgfCBJbml0IGEgLT5cbiAgICAgIGxldCBsID0gZ2V0X3R5cGVzX2Zyb21faW5pdCBhIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSW50cm8gQFs8aD4lYUBdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgICBsXG4gICAgfCBPYnMgKHgsIF8sIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgfCBEdW1teSBfIC0+ICgpKVxuXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gIFwiXFxcInN0ZXBcXFwiOltcXFwiU3Vic1xcXCIsXFxcIlJ1bGVcXFwiLFxcXCJQZXJ0XFxcIixcXFwiSW5pdFxcXCIsXFxcIk9ic1xcXCIsXFxcIkR1bW15XFxcIl1cIlxuXG5sZXQgd3JpdGVfc3RlcCBvYiBzID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggcyB3aXRoXG4gICAgfCBTdWJzIChhLCBiKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGEpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGIpO1xuICAgICAgXVxuICAgIHwgUnVsZSAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+IEluc3RhbnRpYXRpb24ud3JpdGVfZXZlbnQgQWdlbnQud3JpdGVfanNvbiBvIHkpO1xuICAgICAgICAoZnVuIG8gLT4gU2ltdWxhdGlvbl9pbmZvLndyaXRlX2pzb24gWW9qc29uLkJhc2ljLndyaXRlX251bGwgbyB6KTtcbiAgICAgIF1cbiAgICB8IFBlcnQgKHgsIHksIHopIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMik7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG8geCk7XG4gICAgICAgIChmdW4gbyAtPiBJbnN0YW50aWF0aW9uLndyaXRlX2V2ZW50IEFnZW50LndyaXRlX2pzb24gbyB5KTtcbiAgICAgICAgKGZ1biBvIC0+IFNpbXVsYXRpb25faW5mby53cml0ZV9qc29uIFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG8geik7XG4gICAgICBdXG4gICAgfCBJbml0IGEgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdCAoSW5zdGFudGlhdGlvbi53cml0ZV9hY3Rpb24gQWdlbnQud3JpdGVfanNvbikgbyBhKTtcbiAgICAgIF1cbiAgICB8IE9icyAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA0KTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3QgKEluc3RhbnRpYXRpb24ud3JpdGVfdGVzdCBBZ2VudC53cml0ZV9qc29uKSlcbiAgICAgICAgICAgIG8geSk7XG4gICAgICAgIChmdW4gbyAtPiBTaW11bGF0aW9uX2luZm8ud3JpdGVfanNvbiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvIHopO1xuICAgICAgXVxuICAgIHwgRHVtbXkgXyAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNSkgXSlcblxubGV0IHJlYWRfc3RlcCBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCBhID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IGIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBTdWJzIChhLCBiKVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2V2ZW50IEFnZW50LnJlYWRfanNvbilcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBSdWxlICh4LCB5LCB6KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2V2ZW50IEFnZW50LnJlYWRfanNvbilcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBQZXJ0ICh4LCB5LCB6KVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBsID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RfcmV2XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2FjdGlvbiBBZ2VudC5yZWFkX2pzb24pKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBJbml0IChMaXN0LnJldiBsKVxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfdGVzdCBBZ2VudC5yZWFkX2pzb24pKSlcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBPYnMgKHgsIHksIHopXG4gICAgICB8IDUgLT4gRHVtbXkgXCJcIlxuICAgICAgfCBfIC0+IHJhaXNlIChZb2pzb24uanNvbl9lcnJvciBcIkludmFsaWQgc3RlcFwiKVxuICAgICAgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgc3RlcF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IFN1YnMgKGEsIGIpIC0+IGBMaXN0IFsgYEludCAwOyBgSW50IGE7IGBJbnQgYiBdXG4gIHwgUnVsZSAoeCwgeSwgeikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDE7XG4gICAgICAgIGBJbnQgeDtcbiAgICAgICAgSW5zdGFudGlhdGlvbi5ldmVudF90b19qc29uIEFnZW50LnRvX2pzb24geTtcbiAgICAgICAgU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgejtcbiAgICAgIF1cbiAgfCBQZXJ0ICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMjtcbiAgICAgICAgYFN0cmluZyB4O1xuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gQWdlbnQudG9fanNvbiB5O1xuICAgICAgICBTaW11bGF0aW9uX2luZm8udG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSB6O1xuICAgICAgXVxuICB8IEluaXQgYSAtPlxuICAgIGxldCByZXZfYWN0aW9ucyA9XG4gICAgICBMaXN0LnJldl9tYXAgKEluc3RhbnRpYXRpb24uYWN0aW9uX3RvX2pzb24gQWdlbnQudG9fanNvbikgYVxuICAgIGluXG4gICAgYExpc3QgWyBgSW50IDM7IGBMaXN0IChMaXN0LnJldiByZXZfYWN0aW9ucykgXVxuICB8IE9icyAoeCwgeSwgeikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDQ7XG4gICAgICAgIGBTdHJpbmcgeDtcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuIHogLT5cbiAgICAgICAgICAgICAgIGBMaXN0IChMaXN0Lm1hcCAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gQWdlbnQudG9fanNvbikgeikpXG4gICAgICAgICAgICAgeSk7XG4gICAgICAgIFNpbXVsYXRpb25faW5mby50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHo7XG4gICAgICBdXG4gIHwgRHVtbXkgXyAtPiBgTGlzdCBbIGBJbnQgNSBdXG5cbmxldCB3cml0ZV9qc29uID0gSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9zdGVwXG5sZXQgcmVhZF9qc29uIHN0IGIgPSBMaXN0LnJldiAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdF9yZXYgcmVhZF9zdGVwIHN0IGIpXG5cbmxldCBzdHJpbmdfb2Zfc3RlcCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zdGVwIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgc3RlcF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc3RlcCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgc3RlcF9pc19vYnMgPSBmdW5jdGlvblxuICB8IE9icyBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgSW5pdCBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX2luaXQgPSBmdW5jdGlvblxuICB8IEluaXQgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgUGVydCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3N1YnMgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgUGVydCBfIHwgSW5pdCBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3J1bGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgXyAtPiB0cnVlXG4gIHwgUGVydCBfIHwgSW5pdCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3BlcnQgPSBmdW5jdGlvblxuICB8IFBlcnQgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgSW5pdCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgT2JzIChfLCBfLCBpbmZvKSB8IFJ1bGUgKF8sIF8sIGluZm8pIHwgUGVydCAoXywgXywgaW5mbykgLT4gU29tZSBpbmZvXG4gIHwgSW5pdCBfIC0+IFNvbWUgKFNpbXVsYXRpb25faW5mby5kdW1teSAoKSlcbiAgfCBTdWJzIF8gfCBEdW1teSBfIC0+IE5vbmVcblxubGV0IGNyZWF0aW9uX29mX2FjdGlvbnMgb3AgYWN0aW9ucyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBsIC0+IGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICh4LCBfKSAtPiBvcCB4IDo6IGxcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgIC0+XG4gICAgICAgIGwpXG4gICAgW10gYWN0aW9uc1xuXG5sZXQgY3JlYXRpb25fb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgUnVsZSAoXywgeyBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhYzsgXyB9LCBfKVxuICB8IFBlcnQgKF8sIHsgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gYWM7IF8gfSwgXylcbiAgfCBJbml0IGFjIC0+XG4gICAgY3JlYXRpb25fb2ZfYWN0aW9ucyBmc3QgYWNcbiAgfCBPYnMgXyB8IER1bW15IF8gfCBTdWJzIF8gLT4gW11cblxubGV0IGhhc19jcmVhdGlvbl9vZl9zdGVwIHggPSBjcmVhdGlvbl9vZl9zdGVwIHggPD4gW11cblxubGV0IHRlc3RzX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiBbXVxuICB8IFJ1bGUgKF8sIGUsIF8pIHwgUGVydCAoXywgZSwgXykgLT5cbiAgICBMaXN0LmZvbGRfcmlnaHQgTGlzdC5hcHBlbmQgZS5JbnN0YW50aWF0aW9uLnRlc3RzXG4gICAgICBlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzXG4gIHwgSW5pdCBfIC0+IFtdXG4gIHwgT2JzIChfLCB4LCBfKSAtPiBMaXN0LmNvbmNhdCB4XG4gIHwgRHVtbXkgXyAtPiBbXVxuXG5sZXQgYWN0aW9uc19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBTdWJzIF8gLT4gW10sIFtdXG4gIHwgUnVsZSAoXywgZSwgXykgfCBQZXJ0IChfLCBlLCBfKSAtPlxuICAgIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zLCBlLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuICB8IEluaXQgeSAtPiB5LCBbXVxuICB8IE9icyAoXywgXywgXykgLT4gW10sIFtdXG4gIHwgRHVtbXkgXyAtPiBbXSwgW11cblxubGV0IHNpZGVfZWZmZWN0c19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBSdWxlIChfLCBlLCBfKSB8IFBlcnQgKF8sIGUsIF8pIC0+IGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gIHwgU3VicyBfIHwgT2JzIF8gfCBEdW1teSBfIHwgSW5pdCBfIC0+IFtdXG5cbmxldCBpbml0X3RyYWNlX2ZpbGUgfnV1aWQgZW52IGRlc2MgPVxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJ7XFxuXFxcInV1aWRcXFwiIDogXFxcIlwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyAoc3RyaW5nX29mX2ludCB1dWlkKSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJcXFwiLFxcblxcXCJkaWN0XFxcIjp7XCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIEFnZW50Lmpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiLFwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBJbnN0YW50aWF0aW9uLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiLFwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBTaW11bGF0aW9uX2luZm8uanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIGpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwifSxcXG5cXFwibW9kZWxcXFwiOlwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy50b19jaGFubmVsIGRlc2MgKE1vZGVsLnRvX3lvanNvbiBlbnYpIGluXG4gIG91dHB1dF9zdHJpbmcgZGVzYyBcIixcXG5cXFwidHJhY2VcXFwiOltcIlxuXG5sZXQgYXNzZXJ0X2ZpZWxkIGlkZW50IHggPVxuICBpZiBpZGVudCA8PiB4IHRoZW5cbiAgICBZb2pzb24uanNvbl9lcnJvclxuICAgICAgKFwidHJhY2UgbGFja3MgdGhlIGZpZWxkIFxcXCJcIiBeIHggXiBcIlxcXCIgKGF0IHRoZSByaWdodCBwbGFjZSlcIilcblxubGV0IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCBpZGVudCA9XG4gICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZlxuICBpblxuICBsZXQgaWRlbnQnLCB1dWlkID1cbiAgICBpZiBpZGVudCA9IFwidXVpZFwiIHRoZW4gKFxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29sb24gbGV4X3N0IGxleF9idWYgaW5cbiAgICAgIGxldCB1dWlkID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgbGV4X3N0IGxleF9idWZcbiAgICAgIGluXG4gICAgICBsZXQgdXVpZCA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHV1aWQpIHdpdGggXyAtPiBOb25lIGluXG4gICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiwgdXVpZFxuICAgICkgZWxzZVxuICAgICAgaWRlbnQsIE5vbmVcbiAgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50JyBcImRpY3RcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5za2lwX2pzb24gbGV4X3N0IGxleF9idWYgaW5cbiAgdXVpZFxuXG5sZXQgZm9sZF90cmFjZSBmIGluaXQgbGV4X3N0IGxleF9idWYgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sY3VybCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgXyA9IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJtb2RlbFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLm9mX3lvanNvblxuICAgICAgKEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBsZXhfc3QgbGV4X2J1ZilcbiAgaW5cbiAgbGV0IGlkZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaWRlbnQgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50IFwidHJhY2VcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgb3V0ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzXG4gICAgICAoWW9qc29uLkJhc2ljLnJlYWRfc2VxdWVuY2VcbiAgICAgICAgIChmdW4gYWNjIHggeSAtPiBmIGVudiBhY2MgKHJlYWRfc3RlcCB4IHkpKVxuICAgICAgICAgKGluaXQgZW52KSlcbiAgICAgIGxleF9zdCBsZXhfYnVmXG4gIGluXG4gIGxldCAoKSA9XG4gICAgdHJ5IFlvanNvbi5CYXNpYy5yZWFkX29iamVjdF9lbmQgbGV4X2J1ZiB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+ICgpXG4gIGluXG4gIGVudiwgb3V0XG5cbmxldCBmb2xkX3RyYWNlX2ZpbGUgZiBpbml0IGZuYW1lID1cbiAgbGV0IGRlc2MgPSBvcGVuX2luIGZuYW1lIGluXG4gIGxldCBsZXhfYnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkZXNjIGluXG4gIGxldCBsZXhfc3QgPSBZb2pzb24uaW5pdF9sZXhlciB+Zm5hbWUgKCkgaW5cbiAgbGV0IG91dCA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgKGZvbGRfdHJhY2UgZiBpbml0KSBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBjbG9zZV9pbiBkZXNjIGluXG4gIG91dFxuXG5sZXQgZ2V0X2hlYWRlcnNfZnJvbV9maWxlIGZuYW1lID1cbiAgbGV0IGRlc2MgPSBvcGVuX2luIGZuYW1lIGluXG4gIGxldCBsZXhfYnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkZXNjIGluXG4gIGxldCBsZXhfc3QgPSBZb2pzb24uaW5pdF9sZXhlciB+Zm5hbWUgKCkgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGN1cmwgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IHV1aWQgPSByZWFkX3RyYWNlX2hlYWRlcnMgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IGlkZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaWRlbnQgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50IFwibW9kZWxcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgZW52ID1cbiAgICBNb2RlbC5vZl95b2pzb25cbiAgICAgIChKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2pzb24gbGV4X3N0IGxleF9idWYpXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX2luIGRlc2MgaW5cbiAgdXVpZCwgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRWZmaWNpZW5jeSA6IHNpZ1xuICB0eXBlIHQgPSB7XG4gICAgY29uc2VjdXRpdmU6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGNvbnNlY3V0aXZlX2Jsb2NrZWQ6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfYmluYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBub19tb3JlX3VuYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBjbGFzaGluZ19pbnN0YW5jZTogaW50O1xuICAgIG11dGFibGUgdGltZV9jb3JyZWN0aW9uOiBpbnQ7XG4gIH1cblxuICB2YWwgaW5pdCA6IGludCAtPiB0XG4gIHZhbCBuYiA6IHQgLT4gaW50XG4gIHZhbCBuYl9jb25zZWN1dGl2ZSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gaW50XG4gIHZhbCBuYl9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiBpbnRcbiAgdmFsIHByaW50X2RldGFpbCA6IGN1cnJlbnRfZXZlbnQ6aW50IC0+IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCByZXNldF9jb25zZWN1dGl2ZSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gdFxuICB2YWwgcmVzZXRfY29uc2VjdXRpdmVfYmxvY2tlZCA6IHQgLT4gdFxuICB2YWwgaW5jcl9ub19tb3JlX2JpbmFyeSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gdFxuICB2YWwgaW5jcl9ub19tb3JlX3VuYXJ5IDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX2NsYXNoaW5nX2luc3RhbmNlIDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX3RpbWVfY29ycmVjdGlvbiA6IHQgLT4gdFxuICB2YWwgaW5jcl9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiB0XG4gIHZhbCB3cml0ZV90IDogQnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCBzdHJpbmdfb2ZfdCA6ID9sZW46aW50IC0+IHQgLT4gc3RyaW5nXG4gIHZhbCByZWFkX3QgOiBZb2pzb24uU2FmZS5sZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgdmFsIHRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29uc2VjdXRpdmU6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGNvbnNlY3V0aXZlX2Jsb2NrZWQ6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfYmluYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBub19tb3JlX3VuYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBjbGFzaGluZ19pbnN0YW5jZTogaW50O1xuICAgIG11dGFibGUgdGltZV9jb3JyZWN0aW9uOiBpbnQ7XG4gIH1cblxuICBsZXQgaW5pdCBzaXplID1cbiAgICB7XG4gICAgICBjb25zZWN1dGl2ZSA9IEFycmF5Lm1ha2Ugc2l6ZSAwO1xuICAgICAgY29uc2VjdXRpdmVfYmxvY2tlZCA9IDA7XG4gICAgICBub19tb3JlX2JpbmFyeSA9IDA7XG4gICAgICBub19tb3JlX3VuYXJ5ID0gMDtcbiAgICAgIGNsYXNoaW5nX2luc3RhbmNlID0gMDtcbiAgICAgIHRpbWVfY29ycmVjdGlvbiA9IDA7XG4gICAgfVxuXG4gIGxldCBuYiB0ID1cbiAgICB0Lm5vX21vcmVfYmluYXJ5ICsgdC5ub19tb3JlX3VuYXJ5ICsgdC5jbGFzaGluZ19pbnN0YW5jZSArIHQudGltZV9jb3JyZWN0aW9uXG5cbiAgbGV0IG5iX2NvbnNlY3V0aXZlIH5ydWxlX2lkIHQgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKVxuICBsZXQgbmJfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID0gdC5jb25zZWN1dGl2ZV9ibG9ja2VkXG5cbiAgbGV0IHJlc2V0X2NvbnNlY3V0aXZlIH5ydWxlX2lkIHQgPVxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIDAgaW5cbiAgICB0XG5cbiAgbGV0IHJlc2V0X2NvbnNlY3V0aXZlX2Jsb2NrZWQgdCA9XG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZV9ibG9ja2VkIDwtIDAgaW5cbiAgICB0XG5cbiAgbGV0IGluY3JfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgPC0gc3VjYyB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgaW5cbiAgICB0XG5cbiAgbGV0IGluY3Jfbm9fbW9yZV9iaW5hcnkgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5ub19tb3JlX2JpbmFyeSA8LSBzdWNjIHQubm9fbW9yZV9iaW5hcnkgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSA8LSBzdWNjIHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIGluXG4gICAgdFxuXG4gIGxldCBpbmNyX25vX21vcmVfdW5hcnkgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5ub19tb3JlX3VuYXJ5IDwtIHN1Y2MgdC5ub19tb3JlX3VuYXJ5IGluXG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gc3VjYyB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSBpblxuICAgIHRcblxuICBsZXQgaW5jcl9jbGFzaGluZ19pbnN0YW5jZSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNsYXNoaW5nX2luc3RhbmNlIDwtIHN1Y2MgdC5jbGFzaGluZ19pbnN0YW5jZSBpblxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIHN1Y2MgdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgaW5cbiAgICB0XG5cbiAgbGV0IGluY3JfdGltZV9jb3JyZWN0aW9uIHQgPVxuICAgIGxldCAoKSA9IHQudGltZV9jb3JyZWN0aW9uIDwtIHN1Y2MgdC50aW1lX2NvcnJlY3Rpb24gaW5cbiAgICB0XG5cbiAgbGV0IHByaW50X2RldGFpbCB+Y3VycmVudF9ldmVudCBmIHQgPVxuICAgIGxldCBhbGwgPSBmbG9hdF9vZl9pbnQgKG5iIHQpIGluXG4gICAgbGV0IGV2ZW50cyA9IGZsb2F0X29mX2ludCBjdXJyZW50X2V2ZW50IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBmIDAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgYWxsID4gMC4gdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJAWyUuMmYlJSBvZiBldmVudCBsb29wcyB3ZXJlIHByb2R1Y3RpdmUuQCBOdWxsIGV2ZW50IGNhdXNlOkBdQCxcIlxuICAgICAgICAgICgxMDAuICouIGV2ZW50cyAvLiAoYWxsICsuIGV2ZW50cykpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC5ub19tb3JlX3VuYXJ5ID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcdFZhbGlkIGVtYmVkZGluZyBidXQgbm8gbG9uZ2VyIHVuYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5ub19tb3JlX3VuYXJ5IC8uIGFsbClcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiB0Lm5vX21vcmVfYmluYXJ5ID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcdFZhbGlkIGVtYmVkZGluZyBidXQgbm90IGJpbmFyeSB3aGVuIHJlcXVpcmVkOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQubm9fbW9yZV9iaW5hcnkgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQuY2xhc2hpbmdfaW5zdGFuY2UgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcdENsYXNoaW5nIGluc3RhbmNlOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQuY2xhc2hpbmdfaW5zdGFuY2UgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQudGltZV9jb3JyZWN0aW9uID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXHRQZXJ0dXJiYXRpb24gaW50ZXJydXB0aW5nIHRpbWUgYWR2YW5jZTogJS4yZiUlQCxcIlxuICAgICAgICAgICgxMDAuICouIGZsb2F0X29mX2ludCB0LnRpbWVfY29ycmVjdGlvbiAvLiBhbGwpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1cIlxuXG4gIGxldCB0b195b2pzb24gdCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiY29uc2VjdXRpdmVcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2ZfaW50IHQuY29uc2VjdXRpdmU7XG4gICAgICAgIFwiY29uc2VjdXRpdmVfYmxvY2tlZFwiLCBgSW50IHQuY29uc2VjdXRpdmVfYmxvY2tlZDtcbiAgICAgICAgXCJub19tb3JlX2JpbmFyeVwiLCBgSW50IHQubm9fbW9yZV9iaW5hcnk7XG4gICAgICAgIFwibm9fbW9yZV91bmFyeVwiLCBgSW50IHQubm9fbW9yZV91bmFyeTtcbiAgICAgICAgXCJjbGFzaGluZ19pbnN0YW5jZVwiLCBgSW50IHQuY2xhc2hpbmdfaW5zdGFuY2U7XG4gICAgICAgIFwidGltZV9jb3JyZWN0aW9uXCIsIGBJbnQgdC50aW1lX2NvcnJlY3Rpb247XG4gICAgICBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgIHtcbiAgICAgICAgY29uc2VjdXRpdmUgPVxuICAgICAgICAgIChKc29uVXRpbC50b19hcnJheSBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29uc2VjdXRpdmVcIiB4KTtcbiAgICAgICAgY29uc2VjdXRpdmVfYmxvY2tlZCA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29uc2VjdXRpdmVfYmxvY2tlZFwiIHgpO1xuICAgICAgICBub19tb3JlX2JpbmFyeSA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJub19tb3JlX2JpbmFyeVwiIHgpO1xuICAgICAgICBub19tb3JlX3VuYXJ5ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vX21vcmVfdW5hcnlcIiB4KTtcbiAgICAgICAgY2xhc2hpbmdfaW5zdGFuY2UgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludFxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImNsYXNoaW5nX2luc3RhbmNlXCIgeCk7XG4gICAgICAgIHRpbWVfY29ycmVjdGlvbiA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGltZV9jb3JyZWN0aW9uXCIgeCk7XG4gICAgICB9XG4gICAgfCB4IC0+XG4gICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHNpbXVsYXRpb24gZWZmaWNpZW5jeVwiLCB4KSlcblxuICBsZXQgd3JpdGVfdCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9feW9qc29uIGYpXG5cbiAgbGV0IHN0cmluZ19vZl90ID8obGVuID0gMTAyNCkgeCA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICB3cml0ZV90IG9iIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHJlYWRfdCBwIGxiID0gb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG4gIGxldCB0X29mX3N0cmluZyBzID0gcmVhZF90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5lbmRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIHRpbWU6IGZsb2F0O1xuICBtdXRhYmxlIGV2ZW50czogaW50O1xuICBtdXRhYmxlIHN0b3JpZXM6IGludDtcbiAgbXV0YWJsZSBsYXN0X3BvaW50OiBpbnQ7XG4gIG11dGFibGUgc3RhdF9udWxsOiBFZmZpY2llbmN5LnQ7XG4gIGluaXRfdGltZTogZmxvYXQ7XG4gIGluaXRfZXZlbnQ6IGludDtcbiAgbXV0YWJsZSBwbG90X3BlcmlvZDogQ29uZmlndXJhdGlvbi5wZXJpb2Q7XG4gIG11dGFibGUgbWF4X3RpbWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBtYXhfZXZlbnQ6IGludCBvcHRpb247XG59XG5cbmxldCBjdXJyZW50X3N0b3J5IGMgPSBjLnN0b3JpZXNcbmxldCBjdXJyZW50X3RpbWUgYyA9IGMudGltZVxubGV0IGN1cnJlbnRfZXZlbnQgYyA9IGMuZXZlbnRzXG5sZXQgbmJfbnVsbF9ldmVudCBjID0gRWZmaWNpZW5jeS5uYiBjLnN0YXRfbnVsbFxuXG5sZXQgY29uc2VjdXRpdmVfbnVsbF9ldmVudCB+cnVsZV9pZCBjID1cbiAgRWZmaWNpZW5jeS5uYl9jb25zZWN1dGl2ZSB+cnVsZV9pZCBjLnN0YXRfbnVsbFxuXG5sZXQgY29uc2VjdXRpdmVfYmxvY2tlZCBjID0gRWZmaWNpZW5jeS5uYl9jb25zZWN1dGl2ZV9ibG9ja2VkIGMuc3RhdF9udWxsXG5sZXQgaW5jX3N0b3JpZXMgYyA9IGMuc3RvcmllcyA8LSBjLnN0b3JpZXMgKyAxXG5sZXQgaW5jX2V2ZW50cyBjID0gYy5ldmVudHMgPC0gYy5ldmVudHMgKyAxXG5cbmxldCBjaGVja190aW1lIGMgPVxuICBtYXRjaCBjLm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBjLnRpbWUgPD0gbWF4XG5cbmxldCBjaGVja19vdXRwdXRfdGltZSBjIG90ID1cbiAgbWF0Y2ggYy5tYXhfdGltZSB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBtYXggLT4gb3QgPD0gbWF4XG5cbmxldCBjaGVja19ldmVudHMgYyA9XG4gIG1hdGNoIGMubWF4X2V2ZW50IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBjLmV2ZW50cyA8IG1heFxuXG5sZXQgb25lX3RpbWVfYWR2YW5jZSBjIGR0ID1cbiAgbGV0ICgpID0gYy50aW1lIDwtIGMudGltZSArLiBkdCBpblxuICBjaGVja190aW1lIGNcblxubGV0IG9uZV9jb25zdHJ1Y3RpdmVfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kucmVzZXRfY29uc2VjdXRpdmUgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5yZXNldF9jb25zZWN1dGl2ZV9ibG9ja2VkIGMuc3RhdF9udWxsIGluXG4gIGxldCAoKSA9IGluY19ldmVudHMgYyBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX25vX21vcmVfYmluYXJ5IH5ydWxlX2lkIGMuc3RhdF9udWxsIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX25vX21vcmVfdW5hcnlfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl9ub19tb3JlX3VuYXJ5IH5ydWxlX2lkIGMuc3RhdF9udWxsIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50IH5ydWxlX2lkIGMgPVxuICBsZXQgKCkgPVxuICAgIGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl9jbGFzaGluZ19pbnN0YW5jZSB+cnVsZV9pZCBjLnN0YXRfbnVsbFxuICBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgP3RpIGMgPVxuICBtYXRjaCBPcHRpb25fdXRpbC5iaW5kIE5ici50b19mbG9hdCB0aSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgdGkgLT5cbiAgICBsZXQgKCkgPSBjLnRpbWUgPC0gdGkgaW5cbiAgICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3JfdGltZV9jb3JyZWN0aW9uIGMuc3RhdF9udWxsIGluXG4gICAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfYmxvY2tlZF9ldmVudCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBnZXRfZWZmaWNpZW5jeSBjID0gYy5zdGF0X251bGxcblxubGV0IHByaW50X2VmZmljaWVuY3kgZiBjID1cbiAgRWZmaWNpZW5jeS5wcmludF9kZXRhaWwgfmN1cnJlbnRfZXZlbnQ6KGN1cnJlbnRfZXZlbnQgYykgZiBjLnN0YXRfbnVsbFxuXG5sZXQgaW5pdF90aW1lIGMgPSBjLmluaXRfdGltZVxubGV0IG1heF90aW1lIGMgPSBjLm1heF90aW1lXG5sZXQgbWF4X2V2ZW50cyBjID0gYy5tYXhfZXZlbnRcbmxldCBwbG90X3BlcmlvZCBjID0gYy5wbG90X3BlcmlvZFxuXG5sZXQgdGltZV9yYXRpbyB0ID1cbiAgbWF0Y2ggdC5tYXhfdGltZSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB0bWF4IC0+XG4gICAgaWYgdG1heCA+IHQuaW5pdF90aW1lIHRoZW5cbiAgICAgIFNvbWUgKCh0LnRpbWUgLS4gdC5pbml0X3RpbWUpIC8uICh0bWF4IC0uIHQuaW5pdF90aW1lKSlcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmxldCBldmVudF9yYXRpbyB0ID1cbiAgbWF0Y2ggdC5tYXhfZXZlbnQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZW1heCAtPlxuICAgIGlmIGVtYXggPSAwIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lXG4gICAgICAgIChmbG9hdF9vZl9pbnQgKHQuZXZlbnRzIC0gdC5pbml0X2V2ZW50KVxuICAgICAgICAvLiBmbG9hdF9vZl9pbnQgKGVtYXggLSB0LmluaXRfZXZlbnQpKVxuXG5sZXQgc2V0X21heF90aW1lIGMgdCA9IGMubWF4X3RpbWUgPC0gdFxubGV0IHNldF9tYXhfZXZlbnRzIGMgZSA9IGMubWF4X2V2ZW50IDwtIGVcblxubGV0IHRyYWNrZWRfZXZlbnRzIChjb3VudGVyIDogdCkgOiBpbnQgb3B0aW9uID1cbiAgaWYgY291bnRlci5zdG9yaWVzID49IDAgdGhlblxuICAgIFNvbWUgY291bnRlci5zdG9yaWVzXG4gIGVsc2VcbiAgICBOb25lXG5cbmxldCBzZXRfcGxvdF9wZXJpb2QgKHQgOiB0KSBwbG90X3BlcmlvZCA6IHVuaXQgPSB0LnBsb3RfcGVyaW9kIDwtIHBsb3RfcGVyaW9kXG5cbmxldCBjcmVhdGUgPyhpbml0X3QgPSAwLikgPyhpbml0X2UgPSAwKSA/bWF4X3RpbWUgP21heF9ldmVudCB+cGxvdF9wZXJpb2RcbiAgICB+bmJfcnVsZXMgKCkgPVxuICB7XG4gICAgdGltZSA9IGluaXRfdDtcbiAgICBldmVudHMgPSBpbml0X2U7XG4gICAgc3RvcmllcyA9IC0xO1xuICAgIHN0YXRfbnVsbCA9IEVmZmljaWVuY3kuaW5pdCBuYl9ydWxlcztcbiAgICBwbG90X3BlcmlvZDtcbiAgICBpbml0X3RpbWUgPSBpbml0X3Q7XG4gICAgaW5pdF9ldmVudCA9IGluaXRfZTtcbiAgICBtYXhfdGltZTtcbiAgICBtYXhfZXZlbnQ7XG4gICAgbGFzdF9wb2ludCA9IDA7XG4gIH1cblxubGV0IHJlaW5pdGlhbGl6ZSBjb3VudGVyID1cbiAgY291bnRlci50aW1lIDwtIGNvdW50ZXIuaW5pdF90aW1lO1xuICBjb3VudGVyLmV2ZW50cyA8LSBjb3VudGVyLmluaXRfZXZlbnQ7XG4gIGNvdW50ZXIuc3RvcmllcyA8LSAtMTtcbiAgY291bnRlci5sYXN0X3BvaW50IDwtIDA7XG4gIGNvdW50ZXIuc3RhdF9udWxsIDwtXG4gICAgRWZmaWNpZW5jeS5pbml0IChBcnJheS5sZW5ndGggY291bnRlci5zdGF0X251bGwuRWZmaWNpZW5jeS5jb25zZWN1dGl2ZSlcblxubGV0IG5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gYyA9XG4gIHtcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPSBjdXJyZW50X3N0b3J5IGM7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUgPSBjdXJyZW50X3RpbWUgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQgPSBjdXJyZW50X2V2ZW50IGMgKyAxO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5wcm9maWxpbmdfaW5mbyA9ICgpO1xuICB9XG5cbmxldCBjdXJyZW50X3NpbXVsYXRpb25faW5mbyBjID1cbiAge1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGN1cnJlbnRfc3RvcnkgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSA9IGN1cnJlbnRfdGltZSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCA9IGN1cnJlbnRfZXZlbnQgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8ucHJvZmlsaW5nX2luZm8gPSAoKTtcbiAgfVxuXG5sZXQgbmV4dF9zdG9yeSBjID1cbiAgbGV0ICgpID0gaW5jX3N0b3JpZXMgYyBpblxuICBuZXh0X3N0ZXBfc2ltdWxhdGlvbl9pbmZvIGNcblxubGV0IHBvc2l0aXZlX3Bsb3RfcGVyaW9kIGNvdW50ZXIgPVxuICBtYXRjaCBwbG90X3BlcmlvZCBjb3VudGVyIHdpdGhcbiAgfCBDb25maWd1cmF0aW9uLkRFIGUgLT4gZSA+IDBcbiAgfCBDb25maWd1cmF0aW9uLkRUIHQgLT4gdCA+IDAuXG5cbmxldCBuZXh0X3BvaW50IGNvdW50ZXIgZHQgPVxuICBtYXRjaCBjb3VudGVyLnBsb3RfcGVyaW9kIHdpdGhcbiAgfCBDb25maWd1cmF0aW9uLkRUIGRUIC0+XG4gICAgaWYgZFQgPD0gMC4gdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIGludF9vZl9mbG9hdFxuICAgICAgICAoKG1pblxuICAgICAgICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSBpbmZpbml0eSAobWF4X3RpbWUgY291bnRlcikpXG4gICAgICAgICAgICAoZHQgKy4gY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAtLiBjb3VudGVyLmluaXRfdGltZSlcbiAgICAgICAgLy4gZFQpXG4gIHwgQ29uZmlndXJhdGlvbi5ERSBkRSAtPlxuICAgIGlmIGRFIDw9IDAgdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIChjdXJyZW50X2V2ZW50IGNvdW50ZXIgLSBjb3VudGVyLmluaXRfZXZlbnQpIC8gZEVcblxubGV0IHRvX3Bsb3RfcG9pbnRzIGNvdW50ZXIgZHQgPVxuICBsZXQgbmV4dCA9IG5leHRfcG9pbnQgY291bnRlciBkdCBpblxuICBsZXQgbGFzdCA9IGNvdW50ZXIubGFzdF9wb2ludCBpblxuICBsZXQgKCkgPSBjb3VudGVyLmxhc3RfcG9pbnQgPC0gbmV4dCBpblxuICBsZXQgbiA9IG5leHQgLSBsYXN0IGluXG4gIG1hdGNoIGNvdW50ZXIucGxvdF9wZXJpb2Qgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uRFQgZFQgLT5cbiAgICAoIHNuZFxuICAgICAgICAoVG9vbHMucmVjdGlcbiAgICAgICAgICAgKGZ1biAodGltZSwgYWNjKSBfIC0+XG4gICAgICAgICAgICAgKCB0aW1lIC0uIGRULFxuICAgICAgICAgICAgICAgaWYgY2hlY2tfb3V0cHV0X3RpbWUgY291bnRlciB0aW1lIHRoZW5cbiAgICAgICAgICAgICAgICAgdGltZSA6OiBhY2NcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYWNjICkpXG4gICAgICAgICAgIChjb3VudGVyLmluaXRfdGltZSArLiAoZmxvYXRfb2ZfaW50IG5leHQgKi4gZFQpLCBbXSlcbiAgICAgICAgICAgbiksXG4gICAgICBjb3VudGVyIClcbiAgfCBDb25maWd1cmF0aW9uLkRFIF8gLT5cbiAgICBpZiBuID0gMSB0aGVuXG4gICAgICBbIGNvdW50ZXIudGltZSBdLCBjb3VudGVyXG4gICAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgICBbXSwgY291bnRlclxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIChcIkNvdW50ZXIudG9fcGxvdF9wb2ludHM6IGludmFsaWQgaW5jcmVtZW50IFwiIF4gc3RyaW5nX29mX2ludCBuKVxuXG5sZXQgZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdCA9XG4gIGxldCBwb2ludHMsIGNvdW50ZXInID0gdG9fcGxvdF9wb2ludHMgY291bnRlciBkdCBpblxuICBMaXN0Lml0ZXIgKGZ1biB0aW1lIC0+IG91dHB1dHMgY291bnRlcicgdGltZSkgcG9pbnRzXG5cbmxldCBmYWtlX3RpbWUgdCB0aW1lID0geyB0IHdpdGggdGltZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcHJpbnRfaW5pdGlhbF9pbnB1dHMgP3V1aWQgY29uZiBlbnYgaW5wdXRzX2Zvcm0gaW5pdCA9XG4gIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCB1dWlkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdXVpZCAtPiBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALlwiIHV1aWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIiVhQC4lYUAuXCIgQ29uZmlndXJhdGlvbi5wcmludCBjb25mXG4gICAgICAoS2FwcGFfcHJpbnRlci5lbnZfa2FwcGEgfm5vQ291bnRlcnMpXG4gICAgICBlbnZcbiAgaW5cbiAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIkAuQFs8dj4lYUBdQC5cIlxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAobiwgcikgLT5cbiAgICAgICAgIGxldCBfLCBpbnNfZnJlc2ggPVxuICAgICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUgc2lncyAoTW9kZWwuZG9tYWluIGVudikgclxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIGlmIGluc19mcmVzaCA8PiBbXSB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDpAIEBbJWFAXUAgQFslYUBdQF1cIlxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDpmYWxzZVxuICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTpmYWxzZSB+c2lncylcbiAgICAgICAgICAgICAgICAgaW5zX2ZyZXNoXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW4gRm9ybWF0LnBwX3ByaW50X3NwYWNlIGYgKClcbiAgICAgICAgICAgKVxuICAgICAgICAgaW5cbiAgICAgICAgIFBwLmxpc3QgUHAuc3BhY2VcbiAgICAgICAgICAgKGZ1biBmIChuYiwgdGspIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDpAIEBbJWFAXUAgJWFAXVwiXG4gICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgICAgKGZzdCAoQWxnX2V4cHIubXVsdCAoTG9jLmFubm90X3dpdGhfZHVtbXkgbikgbmIpKVxuICAgICAgICAgICAgICAgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIHRrKVxuICAgICAgICAgICBmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMpKVxuICAgIGluaXRcblxudHlwZSBzbmFwc2hvdCA9IHtcbiAgc25hcHNob3RfZXZlbnQ6IGludDtcbiAgc25hcHNob3RfdGltZTogZmxvYXQ7XG4gIHNuYXBzaG90X2FnZW50czogKGludCAqIFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudCkgbGlzdDtcbiAgc25hcHNob3RfdG9rZW5zOiAoc3RyaW5nICogTmJyLnQpIGFycmF5O1xufVxuXG5sZXQgcHJpbnRfc25hcHNob3QgP3V1aWQgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4vLyBTbmFwc2hvdCBbRXZlbnQ6ICVkXUAsXCJcbiAgICAgICgqXCIsIFRpbWU6ICVmXCIqKSBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSUlZGVmOiBcXFwiVDBcXFwiIFxcXCIlc1xcXCJALEAsJWFALCVhQF1ALlwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALFwiIHgpKVxuICAgIHV1aWRcbiAgICAoSnNvblV0aWwuc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHMuc25hcHNob3RfdGltZSlcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGksIG1peCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj4lJWluaXQ6ICVpIC8qJWkgYWdlbnRzKi8gJWFAXVwiIGlcbiAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdCAoZnVuIHMgZSAtPiBzICsgQXJyYXkubGVuZ3RoIGUpIDAgbWl4KVxuICAgICAgICAgICBVc2VyX2dyYXBoLnByaW50X2NjIG1peCkpXG4gICAgcy5zbmFwc2hvdF9hZ2VudHNcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBfIGYgKG5hLCBlbCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVhICVzXCIgTmJyLnByaW50IGVsIG5hKSlcbiAgICBzLnNuYXBzaG90X3Rva2Vuc1xuXG5sZXQgcHJpbnRfZG90X3NuYXBzaG90ID91dWlkIGYgcyA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+Ly8gU25hcHNob3QgW0V2ZW50OiAlZF1ALFwiXG4gICAgICAoKlwiLCBUaW1lOiAlZlwiKikgcy5zbmFwc2hvdF9ldmVudFxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWFkaWdyYXBoIEd7QCwlYUAsJWF9QF1ALlwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALFwiIHgpKVxuICAgIHV1aWRcbiAgICAoUHAubGlzdGkgUHAuY3V0IChmdW4gaSBmIChuYiwgbWl4KSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj5zdWJncmFwaCBjbHVzdGVyJWR7QCxcIiBpO1xuICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICBcImNvdW50ZXIlZCBbbGFiZWwgPSBcXFwiJWQgaW5zdGFuY2UocylcXFwiLCBzaGFwZT1ub25lXTtALCVhfUBdXCIgaSBuYlxuICAgICAgICAgICAoVXNlcl9ncmFwaC5wcmludF9kb3RfY2MgaSlcbiAgICAgICAgICAgbWl4KSlcbiAgICBzLnNuYXBzaG90X2FnZW50c1xuICAgIChQcC5hcnJheSBQcC5jdXQgKGZ1biBpIGYgKG5hLCBlbCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ0b2tlbl8lZCBbbGFiZWwgPSBcXFwiJXMgKCVhKVxcXCIgLCBzaGFwZT1ub25lXVwiIGkgbmFcbiAgICAgICAgICAgTmJyLnByaW50IGVsKSlcbiAgICBzLnNuYXBzaG90X3Rva2Vuc1xuXG5sZXQgd3JpdGVfc25hcHNob3Qgb2IgcyA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X2V2ZW50XCIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYlxuICAgICAgcy5zbmFwc2hvdF9ldmVudFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfdGltZVwiIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvYlxuICAgICAgcy5zbmFwc2hvdF90aW1lXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF9hZ2VudHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludFxuICAgICAgICAgICAgVXNlcl9ncmFwaC53cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50KSlcbiAgICAgIG9iIHMuc25hcHNob3RfYWdlbnRzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF90b2tlbnNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5XG4gICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgTmJyLndyaXRlX3QpKVxuICAgICAgb2Igcy5zbmFwc2hvdF90b2tlbnNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9zbmFwc2hvdCBwIGxiID1cbiAgbGV0IHNuYXBzaG90X2V2ZW50LCBzbmFwc2hvdF90aW1lLCBzbmFwc2hvdF9hZ2VudHMsIHNuYXBzaG90X3Rva2VucyA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChlLCB0aSwgYSwgdCkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzbmFwc2hvdF9ldmVudFwiIHRoZW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgdGksIGEsIHRcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcInNuYXBzaG90X3RpbWVcIiB0aGVuXG4gICAgICAgICAgZSwgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHAgbGIsIGEsIHRcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcInNuYXBzaG90X2FnZW50c1wiIHRoZW5cbiAgICAgICAgICAoIGUsXG4gICAgICAgICAgICB0aSxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnJlYWRfY29ubmVjdGVkX2NvbXBvbmVudClcbiAgICAgICAgICAgICAgcCBsYixcbiAgICAgICAgICAgIHQgKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwic25hcHNob3RfdG9rZW5zXCIpIGluXG4gICAgICAgICAgKCBlLFxuICAgICAgICAgICAgdGksXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXlcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBOYnIucmVhZF90KVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgKSlcbiAgICAgICgtMSwgbmFuLCBbXSwgW3x8XSkgcCBsYlxuICBpblxuICB7IHNuYXBzaG90X2V2ZW50OyBzbmFwc2hvdF90aW1lOyBzbmFwc2hvdF9hZ2VudHM7IHNuYXBzaG90X3Rva2VucyB9XG5cbmxldCBzdHJpbmdfb2Zfc25hcHNob3QgPSBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGUgd3JpdGVfc25hcHNob3RcblxubGV0IHNuYXBzaG90X29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIGRpbl9kYXRhID0ge1xuICBkaW5fa2luZDogUHJpbWl0aXZlcy5kaW5fa2luZDtcbiAgZGluX3N0YXJ0OiBmbG9hdDtcbiAgZGluX2hpdHM6IGludCBhcnJheTtcbiAgZGluX2ZsdXhzOiBmbG9hdCBhcnJheSBhcnJheTtcbn1cblxudHlwZSBkaW4gPSB7IGRpbl9ydWxlczogc3RyaW5nIGFycmF5OyBkaW5fZGF0YTogZGluX2RhdGE7IGRpbl9lbmQ6IGZsb2F0IH1cblxubGV0IHdyaXRlX2RpbiBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2tpbmRcIiBQcmltaXRpdmVzLndyaXRlX2Rpbl9raW5kIG9iXG4gICAgICBmLmRpbl9kYXRhLmRpbl9raW5kXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fc3RhcnRcIiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQgb2JcbiAgICAgIGYuZGluX2RhdGEuZGluX3N0YXJ0XG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fZW5kXCIgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG9iIGYuZGluX2VuZFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX3J1bGVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nKVxuICAgICAgb2IgZi5kaW5fcnVsZXNcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9oaXRzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgb2IgZi5kaW5fZGF0YS5kaW5faGl0c1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2ZsdXhzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSAoSnNvblV0aWwud3JpdGVfYXJyYXkgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0KSlcbiAgICAgIG9iIGYuZGluX2RhdGEuZGluX2ZsdXhzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfZGluIHAgbGIgPVxuICBsZXQgZGluX2tpbmQsIGRpbl9zdGFydCwgZGluX2hpdHMsIGRpbl9mbHV4cywgZGluX3J1bGVzLCBkaW5fZW5kID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGssIHMsIGgsIGYsIHIsIGUpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwiZGluX2tpbmRcIiB0aGVuXG4gICAgICAgICAgUHJpbWl0aXZlcy5yZWFkX2Rpbl9raW5kIHAgbGIsIHMsIGgsIGYsIHIsIGVcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9zdGFydFwiIHRoZW5cbiAgICAgICAgICBrLCBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgcCBsYiwgaCwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX2hpdHNcIiB0aGVuXG4gICAgICAgICAgaywgcywgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIsIGYsIHIsIGVcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9mbHV4c1wiIHRoZW5cbiAgICAgICAgICAoIGssXG4gICAgICAgICAgICBzLFxuICAgICAgICAgICAgaCxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5XG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIpXG4gICAgICAgICAgICAgIHAgbGIsXG4gICAgICAgICAgICByLFxuICAgICAgICAgICAgZSApXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5fZW5kXCIgdGhlblxuICAgICAgICAgIGssIHMsIGgsIGYsIHIsIFlvanNvbi5CYXNpYy5yZWFkX251bWJlciBwIGxiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJkaW5fcnVsZXNcIikgaW5cbiAgICAgICAgICBrLCBzLCBoLCBmLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgZVxuICAgICAgICApKVxuICAgICAgKFByaW1pdGl2ZXMuQUJTT0xVVEUsIG5hbiwgW3x8XSwgW3x8XSwgW3x8XSwgbmFuKVxuICAgICAgcCBsYlxuICBpblxuICB7XG4gICAgZGluX3J1bGVzO1xuICAgIGRpbl9lbmQ7XG4gICAgZGluX2RhdGEgPSB7IGRpbl9raW5kOyBkaW5fc3RhcnQ7IGRpbl9oaXRzOyBkaW5fZmx1eHMgfTtcbiAgfVxuXG5sZXQgc3RyaW5nX29mX2RpbiA9IEpzb25VdGlsLnN0cmluZ19vZl93cml0ZSB3cml0ZV9kaW5cblxubGV0IGRpbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBwcmludF9kb3RfZGluID91dWlkIGRlc2MgZmx1eCA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIkBbPHY+JWFcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIixALFwiIHgpKVxuICAgICAgdXVpZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgIFwiZGlncmFwaCBHeyBsYWJlbD1cXFwiRHluYW1pYyBpbmZsdWVuY2UgbmV0d29ya1xcXCIgOyBsYWJlbGxvYz1cXFwidFxcXCIgOyBcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJub2RlIFtzaGFwZT1ib3gsc3R5bGU9ZmlsbGVkLGZpbGxjb2xvcj1saWdodHNreWJsdWVdQCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLmFycmF5XG4gICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAoZnVuIHMgLT5cbiAgICAgICAgUHAuYXJyYXkgUHAuZW1wdHkgKGZ1biBkIGYgdiAtPlxuICAgICAgICAgICAgaWYgdiA9IDAuIHRoZW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgY29sb3IsIGFycm93aGVhZCA9XG4gICAgICAgICAgICAgICAgaWYgdiA8IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgIFwicmVkM1wiLCBcInRlZVwiXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgXCJncmVlbjNcIiwgXCJub3JtYWxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgXCJAWzxoPlxcXCIlc1xcXCIgLT4gXFxcIiVzXFxcIiBcXFxuICAgICAgICAgICAgICAgICBbd2VpZ2h0PSVkLGxhYmVsPVxcXCIlLjNmXFxcIixjb2xvcj0lcyxhcnJvd2hlYWQ9JXNdO0BdQCxcIlxuICAgICAgICAgICAgICAgIGZsdXguZGluX3J1bGVzLihzKSBmbHV4LmRpbl9ydWxlcy4oZClcbiAgICAgICAgICAgICAgICAoYWJzIChpbnRfb2ZfZmxvYXQgdikpXG4gICAgICAgICAgICAgICAgdiBjb2xvciBhcnJvd2hlYWRcbiAgICAgICAgICAgICkpKVxuICAgICAgZGVzYyBmbHV4LmRpbl9kYXRhLmRpbl9mbHV4c1xuICBpblxuICBGb3JtYXQuZnByaW50ZiBkZXNjIFwifUBdQC5cIlxuXG5sZXQgcHJpbnRfaHRtbF9kaW4gZGVzYyBmbHV4ID1cbiAgUHBfaHRtbC5ncmFwaF9wYWdlXG4gICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkR5bmFtaWMgaW5mbHVlbmNlIG1hcFwiKVxuICAgIH5zdWJ0aXRsZTooZnVuIGYgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICBcImJldHdlZW4gdCA9IDxzcGFuIGlkPVxcXCJiZWdpbl90aW1lXFxcIj48L3NwYW4+cyBhbmQgdCA9IDxzcGFuIFxcXG4gICAgICAgICBpZD1cXFwiZW5kX3RpbWVcXFwiPjwvc3Bhbj5zICg8c3BhbiBpZD1cXFwibmJfZXZlbnRzXFxcIj48L3NwYW4+IGV2ZW50cylcIilcbiAgICBbXG4gICAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52NC5taW4uanNcIjtcbiAgICAgIFwiaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuMy4xLm1pbi5qc1wiO1xuICAgIF1cbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHN0eWxlPkAsLmNob3JkIHBhdGgge0AgZmlsbC1vcGFjaXR5OiAuNjc7QCBcIlxuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJzdHJva2U6ICMwMDA7QCBzdHJva2Utd2lkdGg6IC41cHg7QCB9QF1ALDwvc3R5bGU+XCIpXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRpdiBpZD1cXFwiZmx1eF9jb250YWluZXJcXFwiPjwvZGl2PkAsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxmb3JtPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsYWJlbCBmb3I9XFxcImNvcnJlY3Rpb25cXFwiPkNvcnJlY3Rpb248L2xhYmVsPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8c2VsZWN0IGlkPVxcXCJzZWxlY3RfY29ycmVjdGlvblxcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCIgXFxcbiAgICAgICAgICAgaWQ9XFxcImNvcnJlY3Rpb25cXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPG9wdGlvbiB2YWx1ZT1cXFwibm9uZVxcXCI+Tm9uZTwvb3B0aW9uPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8b3B0aW9uIHZhbHVlPVxcXCJoaXRzXFxcIj5SdWxlIG9jY3VyZW5jZXM8L29wdGlvbj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiPG9wdGlvbiB2YWx1ZT1cXFwidGltZVxcXCI+VGltZTwvb3B0aW9uPkBdQCw8L3NlbGVjdD5ALDwvZGl2PkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8aW5wdXQgaWQ9XFxcInRvZ2dsZV9zZWxlY3RlZF9ydWxlc1xcXCIgdHlwZT1cXFwiYnV0dG9uXFxcIiB2YWx1ZT1cXFwiVG9nZ2xlIFxcXG4gICAgICAgICAgIHNlbGVjdGVkIHJ1bGVzXFxcIj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48bGFiZWwgY2xhc3M9XFxcImNoZWNrYm94LWlubGluZVxcXCI+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiPGlucHV0IGlkPVxcXCJjaGVja2JveF9zZWxmX2luZmx1ZW5jZVxcXCIgdHlwZT1cXFwiY2hlY2tib3hcXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiUnVsZXMgc2VsZiBpbmZsdWVuY2VAXUAsPC9sYWJlbD5AXUAsPC9mb3JtPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGZvcm0gaWQ9XFxcIm1lbnVcXFwiPjwvZm9ybT5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwlc0AsPC9zY3JpcHQ+QF1ALFwiXG4gICAgICAgICAgUmVzb3VyY2Vfc3RyaW5ncy5jb21tb25fanNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwlc0AsPC9zY3JpcHQ+QF1ALFwiXG4gICAgICAgICAgUmVzb3VyY2Vfc3RyaW5ncy5mbHV4X2pzXG4gICAgICBpblxuXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJAWzx2IDI+PHNjcmlwdD5ALFxcXCJ1c2Ugc3RyaWN0XFxcIkAsQFt2YXIgZmx1eCA9QCAlcztAXUAsXCJcbiAgICAgICAgICAoc3RyaW5nX29mX2RpbiBmbHV4KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgaWRzID0ge0BbQCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJiZWdpblRpbWVJZFxcXCIgOiBcXFwiYmVnaW5fdGltZVxcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJlbmRUaW1lSWRcXFwiIDogXFxcImVuZF90aW1lXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInNlbGVjdENvcnJlY3Rpb25JZFxcXCIgOiBcXFwic2VsZWN0X2NvcnJlY3Rpb25cXFwiLEAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIm5iRXZlbnRzSWRcXFwiIDogXFxcIm5iX2V2ZW50c1xcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJydWxlc0NoZWNrYm94ZXNJZFxcXCIgOiBcXFwibWVudVxcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcXCJ0b2dnbGVSdWxlc0lkXFxcIiA6IFxcXCJ0b2dnbGVfc2VsZWN0ZWRfcnVsZXNcXFwiLEAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJcXFwiY2hlY2tib3hTZWxmSW5mbHVlbmNlSWRcXFwiIDogXFxcImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlXFxcIn07QF1AIFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpeyBAW0AsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgZmx1eF9tYXAgPSBuZXcgZmx1eE1hcChpZHMpO0AgXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJmbHV4X21hcC5zZXRGbHV4KGZsdXgpOyB9OyBAXUAsXCIgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAsPC9zY3JpcHQ+XCIpXG4gICAgZGVzY1xuXG50eXBlIHBsb3QgPSB7IHBsb3RfbGVnZW5kOiBzdHJpbmcgYXJyYXk7IHBsb3Rfc2VyaWVzOiBmbG9hdCBvcHRpb24gYXJyYXkgbGlzdCB9XG5cbmxldCBhZGRfcGxvdF9saW5lIG5ld19vYnNlcnZhYmxlcyBwbG90ID1cbiAgbGV0IG5ld192YWx1ZXMgPSBBcnJheS5tYXAgKGZ1biBuYnIgLT4gTmJyLnRvX2Zsb2F0IG5icikgbmV3X29ic2VydmFibGVzIGluXG4gIHtcbiAgICBwbG90X2xlZ2VuZCA9IHBsb3QucGxvdF9sZWdlbmQ7XG4gICAgcGxvdF9zZXJpZXMgPSBuZXdfdmFsdWVzIDo6IHBsb3QucGxvdF9zZXJpZXM7XG4gIH1cblxubGV0IGluaXRfcGxvdCBlbnYgPVxuICBsZXQgbm9Db3VudGVycyA9IGZhbHNlIGluXG4gIGxldCBwbG90X2xlZ2VuZCA9XG4gICAgTW9kZWwubWFwX29ic2VydmFibGVzXG4gICAgICAoZnVuIG8gLT5cbiAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgKEthcHBhX3ByaW50ZXIuYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudikgbylcbiAgICAgIGVudlxuICBpblxuICB7IHBsb3RfbGVnZW5kOyBwbG90X3NlcmllcyA9IFtdIH1cblxubGV0IHdyaXRlX3Bsb3Qgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImxlZ2VuZFwiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZylcbiAgICAgIG9iIGYucGxvdF9sZWdlbmRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNlcmllc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IChKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0KSkpXG4gICAgICBvYiBmLnBsb3Rfc2VyaWVzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfcGxvdCBwIGxiID1cbiAgbGV0IHBsb3RfbGVnZW5kLCBwbG90X3NlcmllcyA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChsLCBzKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNlcmllc1wiIHRoZW5cbiAgICAgICAgICAoIGwsXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9hcnJheVxuICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9vcHRpb24gWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyKSlcbiAgICAgICAgICAgICAgcCBsYiApXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJsZWdlbmRcIikgaW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgc1xuICAgICAgICApKVxuICAgICAgKFt8fF0sIFtdKSBwIGxiXG4gIGluXG4gIHsgcGxvdF9sZWdlbmQ7IHBsb3Rfc2VyaWVzIH1cblxubGV0IHN0cmluZ19vZl9wbG90ID0gSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlIHdyaXRlX3Bsb3RcblxubGV0IHBsb3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IHByaW50X3Bsb3Rfc2VwIGlzX3RzdiBmID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgKGlmIGlzX3RzdiB0aGVuXG4gICAgICAgXCJcXHRcIlxuICAgICBlbHNlXG4gICAgICAgXCIsXCIpXG5cbmxldCBwcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2IGYgYSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhQF1ALlwiXG4gICAgKFBwLmFycmF5IChwcmludF9wbG90X3NlcCBpc190c3YpIChmdW4gXyBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiB4KSlcbiAgICBhXG5cbmxldCBwcmludF9wbG90X2xpbmUgfmlzX3RzdiBwcCBmIGwgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYUBdQC5cIlxuICAgIChQcC5hcnJheSAocHJpbnRfcGxvdF9zZXAgaXNfdHN2KSAoZnVuIF8gLT4gcHApKVxuICAgIGxcblxubGV0IGV4cG9ydF9wbG90IH5pc190c3YgcGxvdCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhJWFcIlxuICAgIChwcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2KVxuICAgIHBsb3QucGxvdF9sZWdlbmRcbiAgICAoUHAubGlzdCBQcC5lbXB0eVxuICAgICAgIChwcmludF9wbG90X2xpbmUgfmlzX3RzdiAoUHAub3B0aW9uIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWVcIikpKSlcbiAgICAoTGlzdC5yZXYgcGxvdC5wbG90X3NlcmllcylcblxubGV0IHByaW50X3dhcm5pbmcgP3BvcyBmIG1zZyA9XG4gIGxldCBwciBmICgpID0gRm9ybWF0LmZwcmludGYgZiBcIldhcm5pbmc6IEBbJXRAXVwiIG1zZyBpblxuICBtYXRjaCBwb3Mgd2l0aFxuICB8IFNvbWUgcG9zIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1ALlwiIChMb2MucHJpbnRfYW5ub3RlZCBwcikgKCgpLCBwb3MpXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdQC5cIiBwciAoKVxuXG50eXBlIGZpbGVfbGluZSA9IHsgZmlsZV9saW5lX25hbWU6IHN0cmluZyBvcHRpb247IGZpbGVfbGluZV90ZXh0OiBzdHJpbmcgfVxuXG50eXBlIHQgPVxuICB8IERJTiBvZiBzdHJpbmcgKiBkaW5cbiAgfCBEZWx0YUFjdGl2aXRpZXMgb2YgaW50ICogKGludCAqIChmbG9hdCAqIGZsb2F0KSkgbGlzdFxuICB8IFBsb3Qgb2YgTmJyLnQgYXJyYXkgICgqKiBNdXN0IGhhdmUgbGVuZ3RoID49IDEgKGF0IGxlYXN0IFtUXSBvciBbRV0pICopXG4gIHwgUHJpbnQgb2YgZmlsZV9saW5lXG4gIHwgVHJhY2VTdGVwIG9mIFRyYWNlLnN0ZXBcbiAgfCBTbmFwc2hvdCBvZiBzdHJpbmcgKiBzbmFwc2hvdFxuICB8IExvZyBvZiBzdHJpbmdcbiAgfCBTcGVjaWVzIG9mIHN0cmluZyAqIGZsb2F0ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG4gIHwgV2FybmluZyBvZiBMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNyZWF0ZV9mbHV4IGVudiBjb3VudGVyIGRpbl9raW5kID1cbiAgbGV0IHNpemUgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52ICsgMSBpblxuICB7XG4gICAgRGF0YS5kaW5fa2luZDtcbiAgICBEYXRhLmRpbl9zdGFydCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXI7XG4gICAgRGF0YS5kaW5faGl0cyA9IEFycmF5Lm1ha2Ugc2l6ZSAwO1xuICAgIERhdGEuZGluX2ZsdXhzID0gQXJyYXkubWFrZV9tYXRyaXggc2l6ZSBzaXplIDAuO1xuICB9XG5cbmxldCBpbmNyX2ZsdXhfZmx1eCBvZl9ydWxlIG9uX3J1bGUgdiBmbHV4ID1cbiAgZmx1eC5EYXRhLmRpbl9mbHV4cy4ob2ZfcnVsZSkuKG9uX3J1bGUpIDwtXG4gICAgZmx1eC5EYXRhLmRpbl9mbHV4cy4ob2ZfcnVsZSkuKG9uX3J1bGUpICsuIHZcblxubGV0IGluY3JfZmx1eF9oaXQgb2ZfcnVsZSBmbHV4ID1cbiAgZmx1eC5EYXRhLmRpbl9oaXRzLihvZl9ydWxlKSA8LSBzdWNjIGZsdXguRGF0YS5kaW5faGl0cy4ob2ZfcnVsZSlcblxubGV0IHN0b3BfZmx1eCBlbnYgY291bnRlciBkaW5fZGF0YSA9XG4gIGxldCBzaXplID0gTW9kZWwubmJfc3ludGFjdGljX3J1bGVzIGVudiArIDEgaW5cbiAgbGV0IGRpbl9ydWxlcyA9XG4gICAgQXJyYXkuaW5pdCBzaXplIChmdW4geCAtPlxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KSB4KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGRpbl9kYXRhLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiAoKVxuICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT5cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAtPlxuICAgICAgICAgIEFycmF5Lml0ZXJpIChmdW4gaiB4IC0+XG4gICAgICAgICAgICAgIGRpbl9kYXRhLkRhdGEuZGluX2ZsdXhzLihpKS4oaikgPC1cbiAgICAgICAgICAgICAgICAoaWYgZGluX2RhdGEuRGF0YS5kaW5faGl0cy4oaSkgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICB4IC8uIGZsb2F0X29mX2ludCBkaW5fZGF0YS5EYXRhLmRpbl9oaXRzLihpKSkpKVxuICAgICAgICBkaW5fZGF0YS5EYXRhLmRpbl9mbHV4c1xuICBpblxuICB7IERhdGEuZGluX3J1bGVzOyBEYXRhLmRpbl9kYXRhOyBEYXRhLmRpbl9lbmQgPSBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgKCogcGF0IC0+IHNldCBvZiByb290cyAqKVxuICBvZl9wYXR0ZXJuczogSW50Q29sbGVjdGlvbi50IFBhdHRlcm4uT2JzTWFwLnQ7XG4gICgqIHBhdCAtPiBjYyAtPiBzZXQgb2Ygcm9vdHMgKilcbiAgb2ZfdW5hcnlfcGF0dGVybnM6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudCBQYXR0ZXJuLk9ic01hcC50O1xufVxuXG50eXBlIG1vZF9jY3NfY2FjaGUgPSAoaW50LCB1bml0KSBIYXNodGJsLnRcblxubGV0IGVtcHR5IGVudiA9XG4gIHtcbiAgICBvZl9wYXR0ZXJucyA9XG4gICAgICBQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+XG4gICAgICAgICAgSW50Q29sbGVjdGlvbi5jcmVhdGUgNjQpO1xuICAgIG9mX3VuYXJ5X3BhdHRlcm5zID1cbiAgICAgIFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT4gTW9kcy5JbnRNYXAuZW1wdHkpO1xuICB9XG5cbmxldCBpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlIHBhdHRlcm4gbWF0Y2hpbmdzID1cbiAgaWYgSW50Q29sbGVjdGlvbi5pc19lbXB0eSAoUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3BhdHRlcm5zIHBhdHRlcm4pIHRoZW5cbiAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybiBtYXRjaGluZ3NcblxubGV0IGFkZF9pbnRzZXRfaW5faW50bWFwIGlkIHNldCBtYXAgPVxuICBpZiBNb2RzLkludFNldC5pc19lbXB0eSBzZXQgdGhlblxuICAgIE1vZHMuSW50TWFwLnJlbW92ZSBpZCBtYXBcbiAgZWxzZVxuICAgIE1vZHMuSW50TWFwLmFkZCBpZCBzZXQgbWFwXG5cbigqIEJyZWFrIGFwYXJ0IGNvbm5lY3RlZCBjb21wb25lbnQ6XG4gICBVcGRhdGUgXCJyb290cyBvZiB1bmFyeSBwYXR0ZXJuc1wiXG4gICBFYXN5LCBJIHNob3VsZCBub3QgaGF2ZSB0byByZXdyaXRlIHRoaXMuXG4gICBTaG91bGQgY2FjaGVzIGJlIGhhbmRsZWQgYXQgdGhpcyBsZXZlbCA/IEkgZG8gbnQgdGhpbmsgc29cbiAgIGFuZCBJIHdpbGwgcHJvYmFibHkgY2xlYW4gdGhpcy5cbiopXG5sZXQgYnJlYWtfYXBhcnRfY2Mgc3RhdGUgZWRnZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChvcmlnaW5fY2MsIG5ld19jYykgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBtb2RfY29ubiAtPlxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm4gbmV3X2NjICgpIGluXG4gICAgICAgIEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubiBvcmlnaW5fY2MgKClcbiAgICBpblxuICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAoZnVuIGNjX2lkIGNjX21hcCAtPlxuICAgICAgICBsZXQgb3NldCA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IG9yaWdpbl9jYyBjY19tYXBcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90IChNb2RzLkludFNldC5pc19lbXB0eSBvc2V0KSB0aGVuIChcbiAgICAgICAgICBsZXQgbnNldCwgb3NldCcgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQucGFydGl0aW9uXG4gICAgICAgICAgICAgIChmdW4geCAtPiBFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCB4IGVkZ2VzID0gU29tZSBuZXdfY2MpXG4gICAgICAgICAgICAgIG9zZXRcbiAgICAgICAgICBpblxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBjY19pZFxuICAgICAgICAgICAgKGFkZF9pbnRzZXRfaW5faW50bWFwIG5ld19jYyBuc2V0XG4gICAgICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgb3JpZ2luX2NjIG9zZXQnIGNjX21hcCkpXG4gICAgICAgICkpXG4gICAgICBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJuc1xuXG4oKiBTYW1lOiBub3QgdmVyeSBzdWJ0bGUuIFlvdSBqdXN0IHByb3BhZ2F0ZS4gKilcbmxldCBtZXJnZV9jYyBzdGF0ZSA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKGNjMSwgY2MyKSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIG1vZF9jb25uZWN0aXZpdHkgLT5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2MyICgpIGluXG4gICAgICAgIEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubmVjdGl2aXR5IGNjMSAoKVxuICAgIGluXG4gICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgIChmdW4gY2NfaWQgY2NfbWFwIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLnBvcCBjYzIgY2NfbWFwIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+ICgpXG4gICAgICAgIHwgU29tZSBzZXQyLCBjY19tYXAnIC0+XG4gICAgICAgICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MxIGNjX21hcCBpblxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBjY19pZFxuICAgICAgICAgICAgKGFkZF9pbnRzZXRfaW5faW50bWFwIGNjMSAoTW9kcy5JbnRTZXQudW5pb24gc2V0MSBzZXQyKSBjY19tYXAnKSlcbiAgICAgIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIE1vc3Qgb2YgdGhlIGNvZGUgaXMgdG8gZGVhbCB3aXRoIHVuYXJ5X2luc3RhbmNlcy5cbiAgIERvZXMgbm90aGluZyBmYW5jeS5cbiAgIEFsc28gdGFrZXMgdGhlIGNhY2hlIGFzIGFuIGFyZ3VtZW50ICopXG5sZXQgdXBkYXRlX3Jvb3RzIHN0YXRlIGlzX2FkZCB1bmFyeV9jY3MgZWRnZXMgbW9kX2Nvbm5lY3Rpdml0eSBwYXR0ZXJuIHJvb3QgPVxuICBsZXQgdmEgPSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybiBpblxuICBsZXQgKCkgPVxuICAgIChpZiBpc19hZGQgdGhlblxuICAgICAgIEludENvbGxlY3Rpb24uYWRkXG4gICAgIGVsc2VcbiAgICAgICBJbnRDb2xsZWN0aW9uLnJlbW92ZSlcbiAgICAgIHJvb3QgdmFcbiAgaW5cbiAgaWYgUGF0dGVybi5TZXQubWVtIHBhdHRlcm4gdW5hcnlfY2NzIHRoZW4gKFxuICAgIGxldCBjY19tYXAgPSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnMgcGF0dGVybiBpblxuICAgIGxldCBjY19pZCA9XG4gICAgICAoKiBUaGUgb25seSBjYXNlIHdoZXJlIGdldF9jb25uZWN0ZWRfY29tcG9uZW50IGlzIE5vbmUgaXMgd2hlblxuICAgICAgICAgW25vdCBpc19hZGRdIGFuZCBbcm9vdF0gaGFzIGp1c3QgYmVlbiBlcmFzZWQhIEJ1dCwganVzdFxuICAgICAgICAgYmVmb3JlIGJlaW5nIGVyYXNlZCwgd2Uga25vdyB0aGF0IGFuIGFnZW50IGlzIGluIGl0cyBvd25cbiAgICAgICAgIGNvbm5lY3RlZCBjb21wb25lbnQuLi4gKilcbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZSByb290IChFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCByb290IGVkZ2VzKVxuICAgIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2NfaWQgKCkgaW5cbiAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjX2lkIGNjX21hcCBpblxuICAgIGxldCBzZXQnID1cbiAgICAgIChpZiBpc19hZGQgdGhlblxuICAgICAgICAgTW9kcy5JbnRTZXQuYWRkXG4gICAgICAgZWxzZVxuICAgICAgICAgTW9kcy5JbnRTZXQucmVtb3ZlKVxuICAgICAgICByb290IHNldFxuICAgIGluXG4gICAgbGV0IGNjX21hcCcgPSBhZGRfaW50c2V0X2luX2ludG1hcCBjY19pZCBzZXQnIGNjX21hcCBpblxuICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXR0ZXJuIGNjX21hcCdcbiAgKVxuXG5sZXQgbnVtYmVyIHIgcGF0ID0gSW50Q29sbGVjdGlvbi5zaXplIChQYXR0ZXJuLk9ic01hcC5nZXQgci5vZl9wYXR0ZXJucyBwYXQpXG5cbmxldCBwcmludF9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiByb290c19vZl9wYXR0ZXJucyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChQYXR0ZXJuLk9ic01hcC5wcmludCBQcC5zcGFjZSAoZnVuIHBhdHRlcm4gZiByb290cyAtPlxuICAgICAgICAgaWYgSW50Q29sbGVjdGlvbi5zaXplIHJvb3RzID4gMCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyMgQFslYUBdID09PkAgQFslYUBdQF1cIlxuICAgICAgICAgICAgIChQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSlcbiAgICAgICAgICAgICBwYXR0ZXJuIEludENvbGxlY3Rpb24ucHJpbnQgcm9vdHMpKVxuICAgIHJvb3RzX29mX3BhdHRlcm5zXG5cbmxldCBwcmludF91bmFyeV9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiByb290c19vZl9wYXR0ZXJucyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3Y+JWFAXVwiXG4gICAgKFBhdHRlcm4uT2JzTWFwLnByaW50IFBwLnNwYWNlIChmdW4gcGF0dGVybiBmIHJvb3RfbWFwcyAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbIyBAWyVhQF0gPT0+QCBAWyVhQF1AXVwiXG4gICAgICAgICAgIChQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSlcbiAgICAgICAgICAgcGF0dGVyblxuICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLnNwYWNlIChmdW4gZiAoX2NjX2lkLCByb290cykgLT5cbiAgICAgICAgICAgICAgICBNb2RzLkludFNldC5wcmludCBmIHJvb3RzKSlcbiAgICAgICAgICAgcm9vdF9tYXBzKSlcbiAgICByb290c19vZl9wYXR0ZXJuc1xuXG5sZXQgZGVidWdfcHJpbnQgZiBzdGF0ZSA9XG4gIGxldCBub0NvdW50ZXJzID0gdHJ1ZSBpblxuICBsZXQgZG9tYWluID0gTm9uZSBpblxuICBsZXQgKCkgPSBwcmludF9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiBzdGF0ZS5vZl9wYXR0ZXJucyBpblxuICBwcmludF91bmFyeV9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJuc1xuXG4oKiBVc2VmdWwgc2hvcnRjdXRzICopXG5cbmxldCBvZl9wYXR0ZXJuIHBhdF9pZCBzdGF0ZSA9XG4gIHRyeSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0X2lkXG4gIHdpdGggTm90X2ZvdW5kIC0+IEludENvbGxlY3Rpb24uY3JlYXRlIDFcblxubGV0IG9mX3VuYXJ5X3BhdHRlcm4gcGF0X2lkIHN0YXRlID1cbiAgdHJ5IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXRfaWRcbiAgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRNYXAuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgKCogRm9yIGNvdW50ZXJmYWN0dWFsIHNpbXVsYXRpb24sIHRoZXJlIHdvdWxkIGJlIHR3byBvZiB0aGVzZS4gKilcbiAgcm9vdHM6IFJvb3RzLnQ7XG59XG5cbnR5cGUgbWVzc2FnZSA9IHVuaXRcblxubGV0IHJlY2VpdmVfbWVzc2FnZSBfIHN0ID0gc3RcbmxldCBlbXB0eSBlbnYgPSB7IHJvb3RzID0gUm9vdHMuZW1wdHkgZW52IH1cblxubGV0IGluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUgcGF0dGVybiBtYXRjaGluZ3MgPVxuICBSb290cy5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlLnJvb3RzIHBhdHRlcm4gbWF0Y2hpbmdzXG5cbmxldCBicmVha19hcGFydF9jYyBzdGF0ZSBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBjY3MgPVxuICBSb290cy5icmVha19hcGFydF9jYyBzdGF0ZS5yb290cyBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBjY3NcblxubGV0IG1lcmdlX2NjIHN0YXRlID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjcyA9XG4gIFJvb3RzLm1lcmdlX2NjIHN0YXRlLnJvb3RzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjc1xuXG5sZXQgdXBkYXRlX3Jvb3RzIHN0YXRlIGlzX2FkZCB1bmFyeV9jY3MgZWRnZXMgbW9kX2Nvbm5lY3Rpdml0eSBwYXR0ZXJuIHJvb3QgPVxuICBSb290cy51cGRhdGVfcm9vdHMgc3RhdGUucm9vdHMgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm5cbiAgICByb290XG5cbigqKiB7MiBDaGVja2luZyBpbnN0YW5jZXN9ICopXG5cbmxldCBpc192YWxpZCBzdGF0ZSBwYXQgcm9vdCA9XG4gIEludENvbGxlY3Rpb24ubWVtIHJvb3QgKFJvb3RzLm9mX3BhdHRlcm4gcGF0IHN0YXRlLnJvb3RzKVxuXG4oKiogezIgQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyB9ICopXG5cbmxldCBudW1iZXJfb2ZfaW5zdGFuY2VzID9ydWxlX2lkOl8gc3QgcGF0cyA9XG4gIEFycmF5LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIHBhdHRlcm4gLT4gYWNjICogUm9vdHMubnVtYmVyIHN0LnJvb3RzIHBhdHRlcm4pXG4gICAgMSBwYXRzXG5cbmxldCBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjID9ydWxlX2lkOl8gc3QgKHBhdDEsIHBhdDIpID1cbiAgbGV0IG1hcDEgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDEgc3Qucm9vdHMgaW5cbiAgbGV0IG1hcDIgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDIgc3Qucm9vdHMgaW5cbiAgZnVuIGNjIC0+XG4gICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMSBpblxuICAgIGxldCBzZXQyID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDIgaW5cbiAgICBNb2RzLkludFNldC5zaXplIHNldDEgKiBNb2RzLkludFNldC5zaXplIHNldDJcblxuKCogezYgUGljayBpbnN0YW5jZXMgfSAqKVxuXG5sZXQgcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyA/cnVsZV9pZDpfIHN0IHJhbmRvbV9zdGF0ZSAocGF0MSwgcGF0MikgPVxuICBsZXQgbWFwMSA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MSBzdC5yb290cyBpblxuICBsZXQgbWFwMiA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MiBzdC5yb290cyBpblxuICBmdW4gY2MgLT5cbiAgICBsZXQgcm9vdDEgPVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lICgtMSlcbiAgICAgICAgKE1vZHMuSW50U2V0LnJhbmRvbSByYW5kb21fc3RhdGVcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAxKSlcbiAgICBpblxuICAgIGxldCByb290MiA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWUgKC0xKVxuICAgICAgICAoTW9kcy5JbnRTZXQucmFuZG9tIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDIpKVxuICAgIGluXG4gICAgcm9vdDEsIHJvb3QyXG5cbigqIFdlIHByb3ZpZGUgYSBjdXN0b20gbW9uYWRpYyBmb2xkIGZ1bmN0aW9uIHRvIGJlXG4gICBsYXp5IGluIGRyYXdpbmcgcmFuZG9tIG51bWJlcnMgKilcbmxldCBmb2xkX3BpY2tlZF9pbnN0YW5jZSA/cnVsZV9pZDpfIHN0IHJhbmRvbV9zdGF0ZSBwYXRzIH5pbml0IGYgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9XG4gICAgaWYgaSA+PSBBcnJheS5sZW5ndGggcGF0cyB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGFjYyAtPlxuICAgICAgICBsZXQgcGF0ID0gcGF0cy4oaSkgaW5cbiAgICAgICAgbGV0IHJvb3Rfb3B0ID1cbiAgICAgICAgICBJbnRDb2xsZWN0aW9uLnJhbmRvbSByYW5kb21fc3RhdGUgKFJvb3RzLm9mX3BhdHRlcm4gcGF0IHN0LnJvb3RzKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcm9vdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgcm9vdCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBmIGkgcGF0IHJvb3QgYWNjIGluXG4gICAgICAgICAgYXV4IChpICsgMSkgYWNjKVxuICAgIClcbiAgaW5cbiAgYXV4IDAgKFNvbWUgaW5pdClcblxuKCoqIHs2IEVudW1lcmF0ZSBpbnN0YW5jZXN9ICopXG5cbmxldCBwcm9jZXNzX2V4Y3AgPVxuICBsZXQgbm9fbm9fbm8gXyA9IGZhbHNlIGluXG4gIGZ1biBwYXRzIC0+IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vX25vX25vLCAtMVxuICAgIHwgU29tZSAocGF0LCByb290KSAtPlxuICAgICAgbGV0IHNlbnRfdG9fZml4ZWRfcm9vdCBqID0gUGF0dGVybi5pc19lcXVhbF9jYW5vbmljYWxzIHBhdCBwYXRzLihqKSBpblxuICAgICAgc2VudF90b19maXhlZF9yb290LCByb290XG5cbigqIFRoaXMgaXMgdGhlIGxlZ2l0aW1hdGUgYW5kIGVmZmljaWVudCB2ZXJzaW9uLiAqKVxubGV0IGZvbGRfaW5zdGFuY2VzID9ydWxlX2lkOl8gP2V4Y3Agc3QgcGF0cyB+aW5pdCBmID1cbiAgbGV0IHNlbnRfdG9fZXhjcF9yb290LCBleGNwX3Jvb3QgPSBwcm9jZXNzX2V4Y3AgcGF0cyBleGNwIGluXG5cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggcGF0cyBpblxuICBsZXQgdGFiID0gQXJyYXkubWFrZSBuICgtMSkgaW5cbiAgbGV0IHJlYyBhdXggaSBhY2MgPVxuICAgIGlmIGkgPj0gbiB0aGVuXG4gICAgICBmIHRhYiBhY2NcbiAgICBlbHNlIGlmIHNlbnRfdG9fZXhjcF9yb290IGkgdGhlbiAoXG4gICAgICB0YWIuKGkpIDwtIGV4Y3Bfcm9vdDtcbiAgICAgIGF1eCAoaSArIDEpIGFjY1xuICAgICkgZWxzZSAoXG4gICAgICBsZXQgaXRoX3Jvb3RzID0gUm9vdHMub2ZfcGF0dGVybiBwYXRzLihpKSBzdC5yb290cyBpblxuICAgICAgSW50Q29sbGVjdGlvbi5mb2xkXG4gICAgICAgIChmdW4gciBhY2MgLT5cbiAgICAgICAgICB0YWIuKGkpIDwtIHI7XG4gICAgICAgICAgYXV4IChpICsgMSkgYWNjKVxuICAgICAgICBpdGhfcm9vdHMgYWNjXG4gICAgKVxuICBpblxuICBhdXggMCBpbml0XG5cbmxldCBtYXBfZm9sZDIgbWFwMSBtYXAyIH5pbml0IGYgPVxuICBNb2RzLkludE1hcC5tb25hZGljX2ZvbGQyX3NwYXJzZSAoKSAoKVxuICAgIChmdW4gKCkgKCkga2V5IHgxIHgyIGFjYyAtPiAoKSwgZiBrZXkgeDEgeDIgYWNjKVxuICAgIG1hcDEgbWFwMiBpbml0XG4gIHw+IHNuZFxuXG5sZXQgZm9sZF91bmFyeV9pbnN0YW5jZXMgP3J1bGVfaWQ6XyBzdCAocGF0MSwgcGF0MikgfmluaXQgZiA9XG4gIGxldCBtYXAxID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQxIHN0LnJvb3RzIGluXG4gIGxldCBtYXAyID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQyIHN0LnJvb3RzIGluXG4gIG1hcF9mb2xkMiBtYXAxIG1hcDIgfmluaXQgKGZ1biBfIHNldDEgc2V0MiBhY2MgLT5cbiAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgKGZ1biByb290MSBhY2MgLT5cbiAgICAgICAgICBNb2RzLkludFNldC5mb2xkIChmdW4gcm9vdDIgYWNjIC0+IGYgKHJvb3QxLCByb290MikgYWNjKSBzZXQyIGFjYylcbiAgICAgICAgc2V0MSBhY2MpXG5cbigqKiB7NiBEZWJ1ZyBmdW5jdGlvbnN9ICopXG5cbmxldCBkZWJ1Z19wcmludCBmIHN0YXRlID0gUm9vdHMuZGVidWdfcHJpbnQgZiBzdGF0ZS5yb290c1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHZhbHVlX3N0YXRlX2FsZ19vcCBjb3VudGVyID8odGltZSA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpID0gZnVuY3Rpb25cbiAgfCBPcGVyYXRvci5DUFVUSU1FIC0+IE5ici5GIChTeXMudGltZSAoKSlcbiAgfCBPcGVyYXRvci5USU1FX1ZBUiAtPiBOYnIuRiB0aW1lXG4gIHwgT3BlcmF0b3IuRVZFTlRfVkFSIC0+IE5ici5JIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcilcbiAgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUiAtPiBOYnIuSSAoQ291bnRlci5uYl9udWxsX2V2ZW50IGNvdW50ZXIpXG4gIHwgT3BlcmF0b3IuRU1BWF9WQVIgLT5cbiAgICAobWF0Y2ggQ291bnRlci5tYXhfZXZlbnRzIGNvdW50ZXIgd2l0aFxuICAgIHwgU29tZSBuIC0+IE5ici5JIG5cbiAgICB8IE5vbmUgLT4gTmJyLkYgaW5maW5pdHkpXG4gIHwgT3BlcmF0b3IuVE1BWF9WQVIgLT5cbiAgICAobWF0Y2ggQ291bnRlci5tYXhfdGltZSBjb3VudGVyIHdpdGhcbiAgICB8IFNvbWUgdCAtPiBOYnIuRiB0XG4gICAgfCBOb25lIC0+IE5ici5GIGluZmluaXR5KVxuXG50eXBlIChfLCBfKSBzdGFjayA9XG4gIHwgUkVUVVJOIDogKCdhLCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0FMRyA6XG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChOYnIudCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoTmJyLnQsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfQ09NUCA6XG4gICAgICBPcGVyYXRvci5jb21wYXJlX29wICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19JRiA6XG4gICAgICBQcmltaXRpdmVzLmFsZ19leHByICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChOYnIudCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoYm9vbCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19CT09MIDpcbiAgICAgIE9wZXJhdG9yLmJpbl9ib29sX29wXG4gICAgICAqIChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbFxuICAgICAgKiAoYm9vbCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoYm9vbCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9BTEcgOlxuICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcCAqIE5ici50ICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9DT01QIDpcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3AgKiBOYnIudCAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9VTiA6IE9wZXJhdG9yLnVuX2FsZ19vcCAqIChOYnIudCwgJ2EpIHN0YWNrIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9CT09MIDogT3BlcmF0b3IudW5fYm9vbF9vcCAqIChib29sLCAnYSkgc3RhY2sgLT4gKGJvb2wsICdhKSBzdGFja1xuXG5sZXQgcmVjIGV4ZWNfYWxnIDpcbiAgICB0eXBlIGEuXG4gICAgQ291bnRlci50IC0+XG4gICAgP3RpbWU6ZmxvYXQgLT5cbiAgICBnZXRfYWxnOihpbnQgLT4gUHJpbWl0aXZlcy5hbGdfZXhwcikgLT5cbiAgICBnZXRfbWl4OihQYXR0ZXJuLmlkIGFycmF5IGxpc3QgLT4gTmJyLnQpIC0+XG4gICAgZ2V0X3RvazooaW50IC0+IE5ici50KSAtPlxuICAgIChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuZSAtPlxuICAgIChOYnIudCwgYSkgc3RhY2sgLT5cbiAgICBhID1cbiBmdW4gY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgc2sgLT5cbiAgbWF0Y2ggYWxnIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhXG4gICAgICAoVE9fRVhFQ19BTEcgKG9wLCBiLCBzaykpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKGEsIF8pKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYSAoVE9fQ09NUFVURV9VTiAob3AsIHNrKSlcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1Agb3AgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgICh2YWx1ZV9zdGF0ZV9hbGdfb3AgY291bnRlciA/dGltZSBvcClcbiAgICAgIHNrXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X2FsZyBpKSBza1xuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGNjcyAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X21peCBjY3MpIHNrXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgaSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X3RvayBpKSBza1xuICB8IEFsZ19leHByLkNPTlNUIG4gLT4gd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIG4gc2tcbiAgfCBBbGdfZXhwci5JRiAoKGNvbmQsIF8pLCAoeWVzLCBfKSwgKG5vLCBfKSkgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBjb25kXG4gICAgICAoVE9fRVhFQ19JRiAoeWVzLCBubywgc2spKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ2Fubm90IGV2YWx1dGF0ZSBkZXJpdmF0aXZlcyBpbiBleHByZXNzaW9uXCIsIExvYy5kdW1teSkpXG5cbmFuZCBleGVjX2Jvb2wgOlxuICAgIHR5cGUgYS5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sIC0+XG4gICAgKGJvb2wsIGEpIHN0YWNrIC0+XG4gICAgYSA9XG4gZnVuIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciBzayAtPlxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFIC0+IHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayB0cnVlIHNrXG4gIHwgQWxnX2V4cHIuRkFMU0UgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZmFsc2Ugc2tcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgKGEsIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19DT01QVVRFX0JPT0wgKG9wLCBzaykpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhXG4gICAgICAoVE9fRVhFQ19CT09MIChvcCwgYiwgc2spKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0NPTVAgKG9wLCBiLCBzaykpXG5cbmFuZCB3aXRoX3ZhbHVlIDpcbiAgICB0eXBlIGEgYi5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgYSAtPlxuICAgIChhLCBiKSBzdGFjayAtPlxuICAgIGIgPVxuIGZ1biBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIG4gLT4gZnVuY3Rpb25cbiAgfCBSRVRVUk4gLT4gblxuICB8IFRPX0VYRUNfQUxHIChvcCwgYWxnLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZ1xuICAgICAgKFRPX0NPTVBVVEVfQUxHIChvcCwgbiwgc2spKVxuICB8IFRPX0NPTVBVVEVfQUxHIChvcCwgbjEsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKE5ici5vZl9iaW5fYWxnX29wIG9wIG4xIG4pXG4gICAgICBza1xuICB8IFRPX0NPTVBVVEVfVU4gKG9wLCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKE5ici5vZl91bl9hbGdfb3Agb3AgbilcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19DT01QIChvcCwgYWxnLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZ1xuICAgICAgKFRPX0NPTVBVVEVfQ09NUCAob3AsIG4sIHNrKSlcbiAgfCBUT19DT01QVVRFX0NPTVAgKG9wLCBuMSwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoTmJyLm9mX2NvbXBhcmVfb3Agb3AgbjEgbilcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19JRiAoeWVzLCBubywgc2spIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKGlmIG4gdGhlblxuICAgICAgICAgeWVzXG4gICAgICAgZWxzZVxuICAgICAgICAgbm8pXG4gICAgICBza1xuICB8IFRPX0VYRUNfQk9PTCAoT3BlcmF0b3IuT1IsIF8sIHNrKSB3aGVuIG4gLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgdHJ1ZSBza1xuICB8IFRPX0VYRUNfQk9PTCAoT3BlcmF0b3IuQU5ELCBfLCBzaykgd2hlbiBub3QgbiAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBmYWxzZSBza1xuICB8IFRPX0VYRUNfQk9PTCAoKE9wZXJhdG9yLk9SIHwgT3BlcmF0b3IuQU5EKSwgZXhwciwgc2spIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciBza1xuICB8IFRPX0NPTVBVVEVfQk9PTCAoT3BlcmF0b3IuTk9ULCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKG5vdCBuKSBza1xuXG5sZXQgdmFsdWVfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgPVxuICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIFJFVFVSTlxuXG5sZXQgdmFsdWVfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnID1cbiAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgUkVUVVJOXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHByZWNvbXB1dGVkID0ge1xuICB1bmFyeV9wYXR0ZXJuczogUGF0dGVybi5TZXQudDtcbiAgYWx3YXlzX291dGRhdGVkOiBPcGVyYXRvci5EZXBTZXQudDtcbn1cblxubW9kdWxlIE1ha2UgKEluc3RhbmNlcyA6IEluc3RhbmNlc19zaWcuUykgPSBzdHJ1Y3RcbiAgdHlwZSBldmVudF9wcmVkaWNhdGUgPVxuICAgIGludCBvcHRpb24gLT5cbiAgICBNYXRjaGluZy50IC0+XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCAtPlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCAtPlxuICAgIGJvb2xcblxuICB0eXBlIGltcGVyYXRpdmVfZmllbGRzID0ge1xuICAgIHByZWNvbXB1dGVkOiBwcmVjb21wdXRlZDtcbiAgICBpbnN0YW5jZXM6IEluc3RhbmNlcy50O1xuICAgIHZhcmlhYmxlc19jYWNoZTogTmJyLnQgYXJyYXk7XG4gICAgdmFyaWFibGVzX292ZXJ3cml0ZTogUHJpbWl0aXZlcy5hbGdfZXhwciBvcHRpb24gYXJyYXk7XG4gICAgdG9rZW5zOiBOYnIudCBhcnJheTtcbiAgICBhY3Rpdml0aWVzOiBSYW5kb21fdHJlZS50cmVlO1xuICAgICAgICAoKiBwYWlyIG51bWJlcnMgYXJlIHJlZ3VsYXIgcnVsZSwgb2RkIHVuYXJ5IGluc3RhbmNlcyAqKVxuICAgIHJhbmRvbV9zdGF0ZTogUmFuZG9tLlN0YXRlLnQ7XG4gICAgc3RvcnlfbWFjaGluZXJ5OlxuICAgICAgKHN0cmluZyAoKm9icyBuYW1lKilcbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3QpXG4gICAgICBsaXN0XG4gICAgICBQYXR0ZXJuLk9ic01hcC50XG4gICAgICAoKmN1cnJlbnRseSB0cmFja2VkIGNjcyAqKVxuICAgICAgb3B0aW9uO1xuICAgIHNwZWNpZXM6XG4gICAgICAoc3RyaW5nICgqZmlsZW5hbWUqKVxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5ICgqd2l0aCBvbmx5IG9uZSBwYXR0ZXJuKilcbiAgICAgICogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0KVxuICAgICAgbGlzdFxuICAgICAgUGF0dGVybi5PYnNNYXAudDtcbiAgICBjaGFuZ2VkX2Nvbm5lY3Rpdml0eTogKGludCwgdW5pdCkgSGFzaHRibC50O1xuICAgICAgICAoKiBzZXQgb2YgY2NzIHRoYXQgaGF2ZSBjaGFuZ2VkICopXG4gIH1cblxuICB0eXBlIGluc3RhbmNlID1cbiAgICBib29sXG4gICAgKiBpbnRcbiAgICAqIChLYXBwYV90ZXJtcy5NYXRjaGluZy50ICogaW50IGxpc3QgKiBLYXBwYV9zaXRlX2dyYXBocy5FZGdlcy5wYXRoIG9wdGlvbilcbiAgICAgIG9wdGlvblxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIG91dGRhdGVkOiBib29sO1xuICAgICgqIFdpdGhvdXQgcmVjdGFuZ3VsYXIgYXBwcm94aW1hdGlvbiAqKVxuICAgIG1hdGNoaW5nc19vZl9ydWxlOiAoTWF0Y2hpbmcudCAqIGludCBsaXN0KSBsaXN0IE1vZHMuSW50TWFwLnQ7XG4gICAgdW5hcnlfY2FuZGlkYXRlczpcbiAgICAgICgqIHJ1bGVfaWQgLT4gbGlzdCBvZiBtYXRjaGluZ3MgKilcbiAgICAgIChNYXRjaGluZy50ICogaW50IGxpc3QgKiBFZGdlcy5wYXRoIG9wdGlvbikgbGlzdCBNb2RzLkludE1hcC50O1xuICAgICgqIHJ1bGUgLT4gY2MgLT4gbnVtYmVyX2luc3RhbmNlcyAoYWN0aXZpdHkgcGVyIGNjKSAqKVxuICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYzogVmFsTWFwLnQgTW9kcy5JbnRNYXAudDtcbiAgICBlZGdlczogRWRnZXMudDtcbiAgICBpbXA6IGltcGVyYXRpdmVfZmllbGRzO1xuICAgIG91dGRhdGVkX2VsZW1lbnRzOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgICBldmVudHNfdG9fYmxvY2s6IGV2ZW50X3ByZWRpY2F0ZSBvcHRpb247XG4gIH1cblxuICBsZXQgZ2V0X2VkZ2VzIHN0ID0gc3QuZWRnZXNcblxuICBsZXQgc3VtX2luc3RhbmNlc19udW1iZXJzID9ydWxlX2lkIGluc3RzIGwgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjIHggLT4gYWMgKyBJbnN0YW5jZXMubnVtYmVyX29mX2luc3RhbmNlcyA/cnVsZV9pZCBpbnN0cyB4KVxuICAgICAgMCBsXG5cbiAgdHlwZSByZXN1bHQgPSBDbGFzaCB8IENvcnJlY3RlZCB8IEJsb2NrZWQgfCBTdWNjZXNzIG9mIHRcblxuICBsZXQgcmF3X2dldF9hbGcgZW52IG92ZXJ3ciBpID1cbiAgICBtYXRjaCBvdmVyd3IuKGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTW9kZWwuZ2V0X2FsZyBlbnYgaVxuICAgIHwgU29tZSBleHByIC0+IGV4cHJcblxuICBsZXQgdmFsdWVfYm9vbCBjb3VudGVyIHN0YXRlIGV4cHIgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIEV4cHJfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCBjb3VudGVyXG4gICAgICB+Z2V0X2FsZzooZnVuIGkgLT4gQWxnX2V4cHIuQ09OU1Qgc3RhdGUuaW1wLnZhcmlhYmxlc19jYWNoZS4oaSkpXG4gICAgICB+Z2V0X21peDooZnVuIHBhdHRlcm5zIC0+XG4gICAgICAgIE5ici5JIChzdW1faW5zdGFuY2VzX251bWJlcnMgc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJucykpXG4gICAgICB+Z2V0X3RvazooZnVuIGkgLT4gc3RhdGUuaW1wLnRva2Vucy4oaSkpXG4gICAgICBleHByXG5cbiAgbGV0IHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGFsZyA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgRXhwcl9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlclxuICAgICAgfmdldF9hbGc6KGZ1biBpIC0+IEFsZ19leHByLkNPTlNUIHN0YXRlLmltcC52YXJpYWJsZXNfY2FjaGUuKGkpKVxuICAgICAgfmdldF9taXg6KGZ1biBwYXR0ZXJucyAtPlxuICAgICAgICBOYnIuSSAoc3VtX2luc3RhbmNlc19udW1iZXJzIHN0YXRlLmltcC5pbnN0YW5jZXMgcGF0dGVybnMpKVxuICAgICAgfmdldF90b2s6KGZ1biBpIC0+IHN0YXRlLmltcC50b2tlbnMuKGkpKVxuICAgICAgYWxnXG5cbiAgbGV0IHJlY29tcHV0ZSBlbnYgY291bnRlciBzdGF0ZSBpID1cbiAgICBzdGF0ZS5pbXAudmFyaWFibGVzX2NhY2hlLihpKSA8LVxuICAgICAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgKHJhd19nZXRfYWxnIGVudiBzdGF0ZS5pbXAudmFyaWFibGVzX292ZXJ3cml0ZSBpKVxuXG4gIGxldCBhY3Rpdml0eSBzdGF0ZSA9IFJhbmRvbV90cmVlLnRvdGFsIHN0YXRlLmltcC5hY3Rpdml0aWVzXG4gIGxldCBnZXRfYWN0aXZpdHkgcnVsZSBzdGF0ZSA9IFJhbmRvbV90cmVlLmZpbmQgcnVsZSBzdGF0ZS5pbXAuYWN0aXZpdGllc1xuICBsZXQgc2V0X2FjdGl2aXR5IHJ1bGUgdiBzdGF0ZSA9IFJhbmRvbV90cmVlLmFkZCBydWxlIHYgc3RhdGUuaW1wLmFjdGl2aXRpZXNcbiAgbGV0IHBpY2tfcnVsZSBydCBzdGF0ZSA9IGZzdCAoUmFuZG9tX3RyZWUucmFuZG9tIHJ0IHN0YXRlLmltcC5hY3Rpdml0aWVzKVxuXG4gIGxldCBpbml0aWFsX2FjdGl2aXR5IH5vdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlID1cbiAgICBNb2RlbC5mb2xkX3J1bGVzXG4gICAgICAoZnVuIGkgKCkgcnVsZSAtPlxuICAgICAgICBpZiBBcnJheS5sZW5ndGggcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzID0gMCB0aGVuIChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTmJyLnRvX2Zsb2F0IEBAIHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIChmc3QgcnVsZS5QcmltaXRpdmVzLnJhdGUpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICggU29tZSAoc25kIHJ1bGUuUHJpbWl0aXZlcy5yYXRlKSxcbiAgICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vQ291bnRlcnMgPSBmYWxzZSBpblxuXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiUHJvYmxlbWF0aWMgcnVsZSByYXRlIHJlcGxhY2VkIGJ5IDBcIjtcbiAgICAgICAgICAgICAgICAgICAgIEthcHBhX3ByaW50ZXIuZWxlbWVudGFyeV9ydWxlIH5lbnYgfm5vQ291bnRlcnMgZiBydWxlICkpXG4gICAgICAgICAgfCBTb21lIHJhdGUgLT4gc2V0X2FjdGl2aXR5ICgyICogaSkgcmF0ZSBzdGF0ZVxuICAgICAgICApKVxuICAgICAgKCkgZW52XG5cbiAgbGV0IGVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlIHJhbmRvbV9zdGF0ZSBlbnYgY291bnRlciA9XG4gICAgbGV0IGFjdGl2aXR5X3RyZWUgPSBSYW5kb21fdHJlZS5jcmVhdGUgKDIgKiBNb2RlbC5uYl9ydWxlcyBlbnYpIGluXG4gICAgbGV0IHVuYXJ5X3BhdHRlcm5zID0gTW9kZWwudW5hcnlfcGF0dGVybnMgZW52IGluXG4gICAgbGV0IGFsd2F5c19vdXRkYXRlZCA9XG4gICAgICBsZXQgZGVwc19pbl90LCBkZXBzX2luX2UsIF8sIF8gPSBNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudiBpblxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIGRlcHNfaW5fdCBkZXBzX2luX2VcbiAgICBpblxuICAgIGxldCB3aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID0gbm90IChQYXR0ZXJuLlNldC5pc19lbXB0eSB1bmFyeV9wYXR0ZXJucykgaW5cbiAgICBsZXQgdmFyaWFibGVzX292ZXJ3cml0ZSA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX2FsZ3MgZW52KSBOb25lIGluXG4gICAgbGV0IHZhcmlhYmxlc19jYWNoZSA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX2FsZ3MgZW52KSBOYnIuemVybyBpblxuICAgIGxldCBjYW5kID1cbiAgICAgIHtcbiAgICAgICAgaW1wID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpdml0aWVzID0gYWN0aXZpdHlfdHJlZTtcbiAgICAgICAgICAgIHByZWNvbXB1dGVkID0geyB1bmFyeV9wYXR0ZXJuczsgYWx3YXlzX291dGRhdGVkIH07XG4gICAgICAgICAgICBpbnN0YW5jZXMgPSBJbnN0YW5jZXMuZW1wdHkgZW52O1xuICAgICAgICAgICAgdmFyaWFibGVzX292ZXJ3cml0ZTtcbiAgICAgICAgICAgIHZhcmlhYmxlc19jYWNoZTtcbiAgICAgICAgICAgIHRva2VucyA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX3Rva2VucyBlbnYpIE5ici56ZXJvO1xuICAgICAgICAgICAgcmFuZG9tX3N0YXRlO1xuICAgICAgICAgICAgc3RvcnlfbWFjaGluZXJ5ID1cbiAgICAgICAgICAgICAgKGlmIHdpdGhfdHJhY2UgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIChQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+IFtdKSlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSk7XG4gICAgICAgICAgICBzcGVjaWVzID0gUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPiBbXSk7XG4gICAgICAgICAgICBjaGFuZ2VkX2Nvbm5lY3Rpdml0eSA9IEhhc2h0YmwuY3JlYXRlIDMyO1xuICAgICAgICAgIH07XG4gICAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICAgIGVkZ2VzID0gRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gYWx3YXlzX291dGRhdGVkO1xuICAgICAgICBldmVudHNfdG9fYmxvY2sgPSBOb25lO1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gVG9vbHMuaXRlcmkgKHJlY29tcHV0ZSBlbnYgY291bnRlciBjYW5kKSAoTW9kZWwubmJfYWxncyBlbnYpIGluXG4gICAgbGV0ICgpID0gaW5pdGlhbF9hY3Rpdml0eSB+b3V0cHV0cyBlbnYgY291bnRlciBjYW5kIGluXG4gICAgY2FuZFxuXG4gIGxldCBjb25jcmV0ZV9hY3Rpb25zX2Zvcl9pbmNvbXBsZXRlX2luaiB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nID1cbiAgICBsZXQgYWJzdHJhY3RfYWN0aW9ucyA9XG4gICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgaW5qID0gbWF0Y2hpbmcsIE1vZHMuSW50TWFwLmVtcHR5IGluXG4gICAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAgIChJbnN0YW50aWF0aW9uLnRyeV9jb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmopXG4gICAgICBhYnN0cmFjdF9hY3Rpb25zXG5cbiAgbGV0IGNvbmNyZXRlX3Rlc3RzIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgPVxuICAgIGxldCBhYnN0cmFjdF90ZXN0cyA9XG4gICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi50ZXN0cyB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgbGV0IGluaiA9IG1hdGNoaW5nLCBNb2RzLkludE1hcC5lbXB0eSBpblxuICAgIExpc3QubWFwIChJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmopIGFic3RyYWN0X3Rlc3RzXG5cbiAgbGV0IGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgP3J1bGVfaWQgcnVsZSBtYXRjaGluZyA9XG4gICAgbWF0Y2ggc3RhdGUuZXZlbnRzX3RvX2Jsb2NrIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgdG9fYmxvY2sgLT5cbiAgICAgIGxldCBhY3Rpb25zID1cbiAgICAgICAgY29uY3JldGVfYWN0aW9uc19mb3JfaW5jb21wbGV0ZV9pbmogfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZ1xuICAgICAgaW5cbiAgICAgIGxldCB0ZXN0cyA9IGNvbmNyZXRlX3Rlc3RzIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgaW5cbiAgICAgIHRvX2Jsb2NrIHJ1bGVfaWQgbWF0Y2hpbmcgdGVzdHMgYWN0aW9uc1xuXG4gIGxldCBzZXRfZXZlbnRzX3RvX2Jsb2NrIHByZWRpY2F0ZSBzdGF0ZSA9XG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gcHJlZGljYXRlO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICB9XG5cbiAgbGV0IGluc3RhbmNlX3RvX21hdGNoaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbnN0YW5jZSBwYXR0ZXJucyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIG1hdGNoaW5nIHJvb3QgLT5cbiAgICAgICAgbWF0Y2ggbWF0Y2hpbmcgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgbWF0Y2hpbmcgLT5cbiAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgbWF0Y2hpbmcgaSBwYXR0ZXJucy4oaSlcbiAgICAgICAgICAgIHJvb3QpXG4gICAgICAoU29tZSBNYXRjaGluZy5lbXB0eSkgaW5zdGFuY2VcblxuICBsZXQgYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgP2V4Y3AgP3VuYXJ5X3JhdGUgP3J1bGVfaWQgc3RhdGVfaW5zdHMgZG9tYWluXG4gICAgICBlZGdlcyBwYXR0ZXJuYSA9XG4gICAgbGV0IG91dCA9XG4gICAgICBJbnN0YW5jZXMuZm9sZF9pbnN0YW5jZXMgP2V4Y3AgP3J1bGVfaWQgc3RhdGVfaW5zdHMgcGF0dGVybmEgfmluaXQ6W11cbiAgICAgICAgKGZ1biBpbnN0YW5jZSBhY2MgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgaW5zdGFuY2VfdG9fbWF0Y2hpbmcgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluc3RhbmNlIHBhdHRlcm5hXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgbWF0Y2hpbmcgLT5cbiAgICAgICAgICAgIGxldCByZXZfcm9vdHMgPSBBcnJheS5mb2xkX2xlZnQgKGZ1biB0IGggLT4gaCA6OiB0KSBbXSBpbnN0YW5jZSBpblxuICAgICAgICAgICAgKG1hdGNoaW5nLCByZXZfcm9vdHMpIDo6IGFjYylcbiAgICBpblxuICAgIG1hdGNoIHVuYXJ5X3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRcbiAgICB8IFNvbWUgKF8sIE5vbmUpIC0+XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IF8sIFsgcjE7IHIyIF0gLT4gbm90IChFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgcjEgcjIgZWRnZXMpXG4gICAgICAgICAgfCBfLCBfIC0+IGZhbHNlKVxuICAgICAgICBvdXRcbiAgICB8IFNvbWUgKF8sIChTb21lIF8gYXMgbWF4X2Rpc3RhbmNlKSkgLT5cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4gKGluaiwgXykgLT5cbiAgICAgICAgICBsZXQgbm9kZXMgPSBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBwYXR0ZXJuYSBpbmogaW5cbiAgICAgICAgICBOb25lID0gRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIGVkZ2VzIG5vZGVzLigwKSBub2Rlcy4oMSkpXG4gICAgICAgIG91dFxuXG4gIGxldCBwb3BfZXhhY3RfbWF0Y2hpbmdzIG1hdGNoaW5nc19vZl9ydWxlIHJ1bGUgPVxuICAgIHNuZCAoTW9kcy5JbnRNYXAucG9wIHJ1bGUgbWF0Y2hpbmdzX29mX3J1bGUpXG5cbiAgbGV0IHBpY2tfYV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHJhbmRvbV9zdGF0ZSBkb21haW4gZWRnZXMgP3J1bGVfaWRcbiAgICAgIHJ1bGUgPVxuICAgIGxldCBmcm9tX3BhdHRlcm5zICgpID1cbiAgICAgIGxldCBwYXRzID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGluXG4gICAgICBJbnN0YW5jZXMuZm9sZF9waWNrZWRfaW5zdGFuY2UgP3J1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlcyByYW5kb21fc3RhdGVcbiAgICAgICAgcGF0cyB+aW5pdDooTWF0Y2hpbmcuZW1wdHksIFtdLCBOb25lKVxuICAgICAgICAoZnVuIGlkIHBhdHRlcm4gcm9vdCAoaW5qLCByZXZfcm9vdHMsIF8pIC0+XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbmogaWQgcGF0dGVybiByb290XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGluaicgLT4gU29tZSAoaW5qJywgcm9vdCA6OiByZXZfcm9vdHMsIE5vbmUpKVxuICAgIGluXG4gICAgbWF0Y2ggcnVsZV9pZCB3aXRoXG4gICAgfCBOb25lIC0+IGZyb21fcGF0dGVybnMgKClcbiAgICB8IFNvbWUgaWQgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZSB3aXRoXG4gICAgICB8IFNvbWUgW10gLT4gTm9uZVxuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgbGV0IGEsIGIgPSBMaXN0X3V0aWwucmFuZG9tIHJhbmRvbV9zdGF0ZSBsIGluXG4gICAgICAgIFNvbWUgKGEsIGIsIE5vbmUpXG4gICAgICB8IE5vbmUgLT4gZnJvbV9wYXR0ZXJucyAoKSlcblxuICBsZXQgYWRqdXN0X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID91bmFyeV9yYXRlIHN0YXRlIGRvbWFpbiBlZGdlc1xuICAgICAgY2NzIHJ1bGUgPVxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlID91bmFyeV9yYXRlIH5ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXMgZG9tYWluXG4gICAgICAgIGVkZ2VzIGNjc1xuICAgIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgaWYgc3RhdGUuZXZlbnRzX3RvX2Jsb2NrID0gTm9uZSB0aGVuXG4gICAgICAgIG1hdGNoZXNcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2hlc1xuICAgICAgICB8PiBMaXN0LmZpbHRlciAoZnVuIChtYXRjaGluZywgXykgLT5cbiAgICAgICAgICAgICAgIG5vdCAoaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSB+cnVsZV9pZCBydWxlIG1hdGNoaW5nKSlcbiAgICBpblxuICAgICggTGlzdC5sZW5ndGggbWF0Y2hlcyxcbiAgICAgIHtcbiAgICAgICAgc3RhdGUgd2l0aFxuICAgICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgbWF0Y2hlcyBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIH0gKVxuXG4gICgqIFdpdGggcmVjdGFuZ3VsYXIgYXBwcm94aW1hdGlvbiAqKVxuICBsZXQgY29tcHV0ZV91bmFyeV9udW1iZXIgaW5zdGFuY2VzXG4gICAgICAobmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCB1bmFyeV9jYW5kaWRhdGVzKSBtb2RpZmllZF9jY3MgcnVsZVxuICAgICAgcnVsZV9pZCA9XG4gICAgbGV0IHBhdDEgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApIGluXG4gICAgbGV0IHBhdDIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG5cbiAgICBsZXQgbnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyA9XG4gICAgICBJbnN0YW5jZXMubnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyB+cnVsZV9pZCBpbnN0YW5jZXMgKHBhdDEsIHBhdDIpXG4gICAgaW5cblxuICAgIGxldCBvbGRfcGFjayA9XG4gICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgVmFsTWFwLmVtcHR5IHJ1bGVfaWRcbiAgICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjXG4gICAgaW5cbiAgICBsZXQgbmV3X3BhY2sgPVxuICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgIChmdW4gY2MgKCkgaV9pbnN0IC0+XG4gICAgICAgICAgbGV0IG5ld192ID0gbnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyBjYyBpblxuICAgICAgICAgIGlmIG5ld192ID0gMCB0aGVuXG4gICAgICAgICAgICBWYWxNYXAucmVtb3ZlIGNjIGlfaW5zdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFZhbE1hcC5hZGQgY2MgbmV3X3YgaV9pbnN0KVxuICAgICAgICBtb2RpZmllZF9jY3Mgb2xkX3BhY2tcbiAgICBpblxuICAgIGxldCB2YSA9IFZhbE1hcC50b3RhbCBuZXdfcGFjayBpblxuICAgIGxldCBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MnID1cbiAgICAgIGlmIHZhID0gMEwgdGhlblxuICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgcnVsZV9pZCBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgbmV3X3BhY2sgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjXG4gICAgaW5cbiAgICBsZXQgXywgdW5hcnlfY2FuZGlkYXRlcycgPVxuICAgICAgKCogSW52YWxpZGF0ZXMgdGhlIGNhY2hlICopXG4gICAgICBNb2RzLkludE1hcC5wb3AgcnVsZV9pZCB1bmFyeV9jYW5kaWRhdGVzXG4gICAgaW5cbiAgICB2YSwgKG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYycsIHVuYXJ5X2NhbmRpZGF0ZXMnKVxuXG4gIGxldCBwaWNrX2FfdW5hcnlfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSByYW5kb21fc3RhdGUgZG9tYWluIGVkZ2VzXG4gICAgICB+cnVsZV9pZCBydWxlID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBydWxlX2lkIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXMgd2l0aFxuICAgIHwgU29tZSBsIC0+XG4gICAgICBsZXQgaW5qLCByb290cywgcGF0aCA9IExpc3RfdXRpbC5yYW5kb20gcmFuZG9tX3N0YXRlIGwgaW5cbiAgICAgIFNvbWUgKGluaiwgcm9vdHMsIHBhdGgpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgcGF0MSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICAgIGxldCBwYXQyID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigxKSBpblxuICAgICAgbGV0IHBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MgPVxuICAgICAgICBJbnN0YW5jZXMucGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyB+cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgICAgcmFuZG9tX3N0YXRlIChwYXQxLCBwYXQyKVxuICAgICAgaW5cbiAgICAgIGxldCBjY19pZCA9XG4gICAgICAgIFZhbE1hcC5yYW5kb20gcmFuZG9tX3N0YXRlXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBWYWxNYXAuZW1wdHkgcnVsZV9pZFxuICAgICAgICAgICAgIHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYylcbiAgICAgIGluXG4gICAgICBsZXQgcm9vdDEsIHJvb3QyID0gcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyBjY19pZCBpblxuXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gRm9ybWF0LnByaW50ZiBcIkBbT24gcm9vdHM6QCAlaUAgJWlAXUAuXCIgcm9vdDEgcm9vdDJcbiAgICAgIGluXG4gICAgICBsZXQgcGF0dGVybjEgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApIGluXG4gICAgICBsZXQgcGF0dGVybjIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG4gICAgICBsZXQgaW5qMSA9XG4gICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBNYXRjaGluZy5lbXB0eSAwIHBhdHRlcm4xXG4gICAgICAgICAgcm9vdDFcbiAgICAgIGluXG4gICAgICAobWF0Y2ggaW5qMSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGluaiAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluaiAxIHBhdHRlcm4yIHJvb3QyXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBpbmpfb3V0IC0+IFNvbWUgKGlual9vdXQsIFsgcm9vdDI7IHJvb3QxIF0sIE5vbmUpKSlcblxuICBsZXQgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID9tYXhfZGlzdGFuY2Ugc3RhdGVcbiAgICAgIGRvbWFpbiBncmFwaCBwYXRzIHJ1bGUgPVxuICAgIGxldCBwYXR0ZXJuMSA9IHBhdHMuKDApIGluXG4gICAgbGV0IHBhdHRlcm4yID0gcGF0cy4oMSkgaW5cbiAgICBsZXQgY2FuZHMsIGxlbiA9XG4gICAgICBJbnN0YW5jZXMuZm9sZF91bmFyeV9pbnN0YW5jZXMgfnJ1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAocGF0dGVybjEsIHBhdHRlcm4yKSB+aW5pdDooW10sIDApXG4gICAgICAgIChmdW4gKHJvb3QxLCByb290MikgKChsaXN0LCBsZW4pIGFzIG91dCkgLT5cbiAgICAgICAgICBsZXQgaW5qMSA9XG4gICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggTWF0Y2hpbmcuZW1wdHkgMFxuICAgICAgICAgICAgICBwYXR0ZXJuMSByb290MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggaW5qMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgIHwgU29tZSBpbmogLT5cbiAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGluaiAxIHBhdHRlcm4yXG4gICAgICAgICAgICAgICAgIHJvb3QyXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG1heF9kaXN0YW5jZSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAoaW5qJywgWyByb290Mjsgcm9vdDEgXSwgTm9uZSkgOjogbGlzdCwgc3VjYyBsZW5cbiAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBwYXRzIGluaicgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZ3JhcGggbm9kZXMuKDApIG5vZGVzLigxKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgICAgICAgIHwgU29tZSBfIGFzIHAgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgfnJ1bGVfaWQgcnVsZSBpbmonIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgb3V0XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChpbmonLCBbIHJvb3QyOyByb290MSBdLCBwKSA6OiBsaXN0LCBzdWNjIGxlbikpKSlcbiAgICBpblxuICAgIGxldCB1bmFyeV9jYW5kaWRhdGVzID1cbiAgICAgIGlmIGxlbiA9IDAgdGhlblxuICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgcnVsZV9pZCBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzXG4gICAgICBlbHNlXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBydWxlX2lkIGNhbmRzIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICBpblxuICAgIGxlbiwgeyBzdGF0ZSB3aXRoIHVuYXJ5X2NhbmRpZGF0ZXMgfVxuXG4gIGxldCBwcmludCBlbnYgZiBzdGF0ZSA9XG4gICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoaSwgbWl4KSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVpbml0OiAlaSBAWzxoPiVhQF1cIiBpIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4KSlcbiAgICAgIChFZGdlcy5idWlsZF91c2VyX3NuYXBzaG90IH5kZWJ1Z19tb2RlOmZhbHNlIH5yYXc6ZmFsc2Ugc2lncyBzdGF0ZS5lZGdlcylcbiAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGkgZiBlbCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVpbml0OiAlYSAlYVwiIE5ici5wcmludCBlbFxuICAgICAgICAgICAgIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSBpKSlcbiAgICAgIHN0YXRlLmltcC50b2tlbnNcblxuICBsZXQgZGVidWdfcHJpbnQgZiBzdGF0ZSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALCVhQCwlYUBdXCIgRWRnZXMuZGVidWdfcHJpbnQgc3RhdGUuZWRnZXNcbiAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGkgZiBlbCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgdG9rZW5fJWlcIiBOYnIucHJpbnQgZWwgaSkpXG4gICAgICBzdGF0ZS5pbXAudG9rZW5zIEluc3RhbmNlcy5kZWJ1Z19wcmludCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG5cbiAgdHlwZSBzdGF0cyA9IHsgbWl4dHVyZV9zdGF0czogRWRnZXMuc3RhdHMgfVxuXG4gIGxldCBzdGF0cyBzdGF0ZSA9IHsgbWl4dHVyZV9zdGF0cyA9IEVkZ2VzLnN0YXRzIHN0YXRlLmVkZ2VzIH1cblxuICBsZXQgcHJpbnRfc3RhdHMgZiBzdGF0ZSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVpIGFnZW50c1wiIChzdGF0cyBzdGF0ZSkubWl4dHVyZV9zdGF0cy5FZGdlcy5uYl9hZ2VudHNcblxuICBsZXQgbmV3X3BsYWNlIGZyZWVfaWQgKGlual9ub2RlcywgaW5qX2ZyZXNoKSA9IGZ1bmN0aW9uXG4gICAgfCBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfIC0+IGZhaWx3aXRoIFwiUnVsZV9pbnRlcnByZXRlci5uZXdfcGxhY2VcIlxuICAgIHwgTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSAtPlxuICAgICAgaW5qX25vZGVzLCBNb2RzLkludE1hcC5hZGQgaWQgZnJlZV9pZCBpbmpfZnJlc2hcblxuICBsZXQgYXBwbHlfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb24gP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgaW5zdGFuY2VzXG4gICAgICAoc2lkZV9lZmZlY3RzLCBlZGdlcykgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoaWQsIF8pIC0+XG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMucmVtb3ZlX2FnZW50IGlkIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoKGlkLCBfKSwgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfZnJlZSBpZCBzIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKCgoaWQsIF8pLCBzKSwgKChpZCcsIF8pLCBzJykpIC0+XG4gICAgICBsZXQgZWRnZXMnLCBjY19tb2RpZiA9IEVkZ2VzLnJlbW92ZV9saW5rIGlkIHMgaWQnIHMnIGVkZ2VzIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBJbnN0YW5jZXMuYnJlYWtfYXBhcnRfY2MgaW5zdGFuY2VzIGVkZ2VzJyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgIGNjX21vZGlmXG4gICAgICBpblxuICAgICAgc2lkZV9lZmZlY3RzLCBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciAoKChpZCwgXyksIHMpIGFzIG4pIC0+XG4gICAgICAobWF0Y2ggTGlzdC5wYXJ0aXRpb24gKGZ1biB4IC0+IHggPSBuKSBzaWRlX2VmZmVjdHMgd2l0aFxuICAgICAgfCBfIDo6IF8sIHNpZGVfZWZmZWN0cycgLT4gc2lkZV9lZmZlY3RzJywgZWRnZXNcbiAgICAgIHwgW10sIF8gLT5cbiAgICAgICAgKG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gaWQgcyBlZGdlcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzaWRlX2VmZmVjdHMsIEVkZ2VzLnJlbW92ZV9mcmVlIGlkIHMgZWRnZXNcbiAgICAgICAgfCBTb21lICgoKGlkJywgXykgYXMgbmMnKSwgcycpIC0+XG4gICAgICAgICAgbGV0IGVkZ2VzJywgY2NfbW9kaWYgPSBFZGdlcy5yZW1vdmVfbGluayBpZCBzIGlkJyBzJyBlZGdlcyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBJbnN0YW5jZXMuYnJlYWtfYXBhcnRfY2MgaW5zdGFuY2VzIGVkZ2VzJyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICAgICBjY19tb2RpZlxuICAgICAgICAgIGluXG4gICAgICAgICAgKG5jJywgcycpIDo6IHNpZGVfZWZmZWN0cywgZWRnZXMnKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWQgaW4gbmVnYXRpdmUgdXBkYXRlXCIpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAoKGlkLCBfKSwgcykgLT5cbiAgICAgIGxldCBfLCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfaW50ZXJuYWwgaWQgcyBlZGdlcyBpblxuICAgICAgc2lkZV9lZmZlY3RzLCBlZGdlcydcblxuICBsZXQgYXBwbHlfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgc2lncyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgaW5zdGFuY2VzIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cywgZWRnZXMpID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgbiAtPlxuICAgICAgbGV0IG5jLCBpbmoyZ3JhcGgnLCBlZGdlcycgPVxuICAgICAgICBsZXQgdHkgPSBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBuIGluXG4gICAgICAgIGxldCBpZCwgZWRnZXMnID0gRWRnZXMuYWRkX2FnZW50IHNpZ3MgdHkgZWRnZXMgaW5cbiAgICAgICAgKGlkLCB0eSksIG5ld19wbGFjZSBpZCBpbmoyZ3JhcGggbiwgZWRnZXMnXG4gICAgICBpblxuICAgICAgKGluajJncmFwaCcsIHNpZGVfZWZmZWN0cywgZWRnZXMnKSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuY1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobiwgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIGxldCAoKGlkLCBfKSBhcyBuYykgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuIGluXG4gICAgICAoKihBLDIzKSopXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ZyZWUgaWQgcyBlZGdlcyBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfZmlsdGVyIChmdW4geCAtPiB4IDw+IChuYywgcykpIHNpZGVfZWZmZWN0c1xuICAgICAgaW5cbiAgICAgIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cycsIGVkZ2VzJyksIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKG5jLCBzKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChuLCBzKSwgKG4nLCBzJykpIC0+XG4gICAgICBsZXQgbmMgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuIGluXG4gICAgICBsZXQgbmMnID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbicgaW5cbiAgICAgIGxldCBlZGdlcycsIG1vZGlmX2NjID0gRWRnZXMuYWRkX2xpbmsgbmMgcyBuYycgcycgZWRnZXMgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHMnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X2ZpbHRlclxuICAgICAgICAgIChmdW4geCAtPiB4IDw+IChuYywgcykgJiYgeCA8PiAobmMnLCBzJykpXG4gICAgICAgICAgc2lkZV9lZmZlY3RzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSW5zdGFuY2VzLm1lcmdlX2NjIGluc3RhbmNlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBtb2RpZl9jYyBpblxuICAgICAgKCAoaW5qMmdyYXBoLCBzaWRlX2VmZmVjdHMnLCBlZGdlcycpLFxuICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSApXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVXaGF0RXZlciBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChuLCBzLCBpKSAtPlxuICAgICAgbGV0ICgoaWQsIF8pIGFzIG5jKSA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfaW50ZXJuYWwgaWQgcyBpIGVkZ2VzIGluXG4gICAgICAoIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cywgZWRnZXMnKSxcbiAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAobmMsIHMsIGkpIClcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWQgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuXG4gIGxldCBhcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiBzaWdzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICBpbnN0YW5jZXMgZWRnZXMgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoaWQsIHR5KSAtPlxuICAgICAgbGV0IF8sIGVkZ2VzJyA9IEVkZ2VzLmFkZF9hZ2VudCB+aWQgc2lncyB0eSBlZGdlcyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9mcmVlIGlkIHMgZWRnZXMgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChuYywgcyksIChuYycsIHMnKSkgLT5cbiAgICAgIGxldCBlZGdlcycsIG1vZGlmX2NjID0gRWRnZXMuYWRkX2xpbmsgbmMgcyBuYycgcycgZWRnZXMgaW5cbiAgICAgIGxldCAoKSA9IEluc3RhbmNlcy5tZXJnZV9jYyBpbnN0YW5jZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgbW9kaWZfY2MgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIk5lZ2F0aXZlV2hhdEV2ZXIgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAoKGlkLCBfKSwgcywgaSkgLT5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfaW50ZXJuYWwgaWQgcyBpIGVkZ2VzIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWQgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuXG4gIGxldCBvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgbmMgLT5cbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fYWdlbnQgZG9tYWluIGVkZ2VzIGFjYyBuY1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9saW5rIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBuYycgcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG5jLCBzLCBpKSAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgaVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAoKChpZCwgXykgYXMgbmMpLCBzKSAtPlxuICAgICAgbGV0IGkgPSBFZGdlcy5nZXRfaW50ZXJuYWwgaWQgcyBlZGdlcyBpblxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgaVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBpZCBzIGVkZ2VzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzXG4gICAgICB8IFNvbWUgKG5jJywgcycpIC0+XG4gICAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fbGluayB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgbmMnIHMnKVxuXG4gIGxldCBvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbnMgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIHRyYW5zID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcylcbiAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgdHJhbnNcbiAgICB8PiBmc3RcblxuICBsZXQgcGF0aF90ZXN0cyBwYXRoIHRlc3RzID1cbiAgICBsZXQga25vd25fYWdlbnRzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSAoaWQsIF8pIC0+IE1vZHMuSW50U2V0LmFkZCBpZCBhY2NcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF9cbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyAtPlxuICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIE1vZHMuSW50U2V0LmVtcHR5IHRlc3RzXG4gICAgaW5cbiAgICBsZXQgcHJldGVzdHMgPVxuICAgICAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAgICAgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgeCA8PiBhICYmIHggPD4gYiAmJiB5IDw+IGEgJiYgeSA8PiBiXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgXyB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgU29tZSAoSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoeCwgeSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgcGF0aFxuICAgIGluXG4gICAgbGV0IF8sIHBhdGhfdGVzdHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoYWcsIHRlKSAoKCgoaWQsIF8pIGFzIGEpLCBfKSwgKCgoaWQnLCBfKSBhcyBhJyksIF8pKSAtPlxuICAgICAgICAgIGxldCBhZycsIHRlJyA9XG4gICAgICAgICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQgYWcgdGhlblxuICAgICAgICAgICAgICBhZywgdGVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTW9kcy5JbnRTZXQuYWRkIGlkIGFnLCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYSA6OiB0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGlkJyBhZycgdGhlblxuICAgICAgICAgICAgYWcnLCB0ZSdcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNb2RzLkludFNldC5hZGQgaWQnIGFnJywgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGEnIDo6IHRlJylcbiAgICAgICAgKGtub3duX2FnZW50cywgcHJldGVzdHMpIHBhdGhcbiAgICBpblxuICAgIHBhdGhfdGVzdHNcblxuICBsZXQgc3RlcF9vZl9ldmVudCBjb3VudGVyID0gZnVuY3Rpb25cbiAgICB8IFRyYWNlLklOSVQgXywgZSAtPiBUcmFjZS5Jbml0IGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgfCBUcmFjZS5SVUxFIHIsIHggLT5cbiAgICAgIFRyYWNlLlJ1bGUgKHIsIHgsIENvdW50ZXIubmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyBjb3VudGVyKVxuICAgIHwgVHJhY2UuUEVSVCBwLCB4IC0+XG4gICAgICBUcmFjZS5QZXJ0IChwLCB4LCBDb3VudGVyLmN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIGNvdW50ZXIpXG5cbiAgbGV0IHN0b3JlX2V2ZW50IH5kZWJ1Z19tb2RlIGNvdW50ZXIgaW5qMmdyYXBoIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcbiAgICAgIGV2ZW50X2tpbmQgP3BhdGggZXh0cmFfc2lkZV9lZmZlY3RzIHJ1bGUgb3V0cHV0cyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIGxldCBjZXZlbnQgPVxuICAgICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfZXZlbnQgfmRlYnVnX21vZGUgaW5qMmdyYXBoXG4gICAgICAgICAgcnVsZS5QcmltaXRpdmVzLmluc3RhbnRpYXRpb25zXG4gICAgICBpblxuICAgICAgbGV0IGZ1bGxfY29uY3JldGVfZXZlbnQgPVxuICAgICAgICB7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGNldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGNldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID0gY2V2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgTGlzdC5yZXZfYXBwZW5kIGV4dHJhX3NpZGVfZWZmZWN0c1xuICAgICAgICAgICAgICBjZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgIChtYXRjaCBwYXRoIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgfCBTb21lIE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFNvbWUgKFNvbWUgcGF0aCkgLT4gcGF0aF90ZXN0cyBwYXRoIGNldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzKTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5UcmFjZVN0ZXBcbiAgICAgICAgICAgICAoc3RlcF9vZl9ldmVudCBjb3VudGVyIChldmVudF9raW5kLCBmdWxsX2NvbmNyZXRlX2V2ZW50KSkpXG4gICAgICBpblxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGksIHgpIC0+XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuVHJhY2VTdGVwIChUcmFjZS5PYnMgKGksIHgsIENvdW50ZXIubmV4dF9zdG9yeSBjb3VudGVyKSkpKVxuICAgICAgICBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzXG5cbiAgbGV0IGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzIG9icyBhY2MgdHJhY2tlZCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChwYXR0ZXJuLCAocm9vdCwgXykpIC0+XG4gICAgICAgIHRyeVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjYyAoZm4sIHBhdHRlcm5zLCBfKSAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBvayBwaWQgLT5cbiAgICAgICAgICAgICAgICAgICAgUGF0dGVybi5jb21wYXJlX2Nhbm9uaWNhbHMgcGlkIHBhdHRlcm4gPSAwIHx8IG9rKVxuICAgICAgICAgICAgICAgICAgZmFsc2UgcGF0dGVybnNcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IHNwZWMgPSBFZGdlcy5zcGVjaWVzIH5kZWJ1Z19tb2RlIHNpZ3Mgcm9vdCBlZGdlcyBpblxuICAgICAgICAgICAgICAgIChmbiwgcGF0dGVybnMsIHNwZWMpIDo6IGFjY1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIChQYXR0ZXJuLk9ic01hcC5nZXQgdHJhY2tlZCBwYXR0ZXJuKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBhY2MpXG4gICAgICBhY2Mgb2JzXG5cbiAgbGV0IHN0b3JlX29icyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5zdGFuY2VzIG9icyBhY2MgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgdHJhY2tlZCAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgKHBhdHRlcm4sIChyb290LCBfKSkgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gYWNjIChldiwgcGF0dGVybnMsIHRlc3RzKSAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyAoaW5qLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5jb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmosIE1vZHMuSW50TWFwLmVtcHR5KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoZXYsIHRlc3RzJykgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICAoYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgaW5zdGFuY2VzIH5leGNwOihwYXR0ZXJuLCByb290KVxuICAgICAgICAgICAgICAgICAgICAgZG9tYWluIGVkZ2VzIHBhdHRlcm5zKSlcbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIChQYXR0ZXJuLk9ic01hcC5nZXQgdHJhY2tlZCBwYXR0ZXJuKVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGFjYylcbiAgICAgICAgYWNjIG9ic1xuXG4gIGxldCB1cGRhdGVfZWRnZXMgfmRlYnVnX21vZGUgb3V0cHV0cyBjb3VudGVyIGRvbWFpbiBpbmpfbm9kZXMgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgP3BhdGggcnVsZSBzaWdzID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAoKk5lZ2F0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGNvbmNyZXRlX3JlbW92ZWQgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uY29uY3JldGl6ZSB+ZGVidWdfbW9kZVxuICAgICAgICAgICAoaW5qX25vZGVzLCBNb2RzLkludE1hcC5lbXB0eSkpXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKGRlbF9vYnMsIGRlbF9kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIHN0YXRlLmVkZ2VzKVxuICAgICAgICAoKFtdLCBPcGVyYXRvci5EZXBTZXQuZW1wdHkpLCBNYXRjaGluZy5lbXB0eV9jYWNoZSlcbiAgICAgICAgY29uY3JldGVfcmVtb3ZlZFxuICAgIGluXG4gICAgbGV0IHNpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAoW10sIHN0YXRlLmVkZ2VzKSBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyBmYWxzZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzX2FmdGVyX25lZ1xuICAgICAgICAgICAgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBwYXQgcm9vdClcbiAgICAgICAgZGVsX29ic1xuICAgIGluXG4gICAgKCpQb3NpdGl2ZSB1cGRhdGUqKVxuICAgIGxldCAoZmluYWxfaW5qMmdyYXBoLCByZW1haW5pbmdfc2lkZV9lZmZlY3RzLCBlZGdlcycpLCBjb25jcmV0ZV9pbnNlcnRlZCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICh4LCBwKSBoIC0+XG4gICAgICAgICAgbGV0IHgnLCBoJyA9XG4gICAgICAgICAgICBhcHBseV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAoUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBkb21haW4pXG4gICAgICAgICAgICAgIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlIHN0YXRlLmltcC5pbnN0YW5jZXMgeCBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICB4JywgaCcgOjogcClcbiAgICAgICAgKCgoaW5qX25vZGVzLCBNb2RzLkludE1hcC5lbXB0eSksIHNpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnKSwgW10pXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0IGVkZ2VzJycsIGNvbmNyZXRlX2luc2VydGVkJyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlLCBpKSAoKChpZCwgXykgYXMgbmMpLCBzKSAtPlxuICAgICAgICAgIEVkZ2VzLmFkZF9mcmVlIGlkIHMgZSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpIDo6IGkpXG4gICAgICAgIChlZGdlcycsIGNvbmNyZXRlX2luc2VydGVkKVxuICAgICAgICByZW1haW5pbmdfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgKG5ld19vYnMsIG5ld19kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJycpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9pbnNlcnRlZCdcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHRydWVcbiAgICAgICAgICAgIHN0YXRlLmltcC5wcmVjb21wdXRlZC51bmFyeV9wYXR0ZXJucyBlZGdlcycnIG1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgIHBhdCByb290KVxuICAgICAgICBuZXdfb2JzXG4gICAgaW5cbiAgICAoKlN0b3JlIGV2ZW50KilcbiAgICBsZXQgbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlcyA9XG4gICAgICBzdG9yZV9vYnMgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJycgc3RhdGUuaW1wLmluc3RhbmNlcyBuZXdfb2JzIFtdXG4gICAgICAgIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdG9yZV9ldmVudCB+ZGVidWdfbW9kZSBjb3VudGVyIGZpbmFsX2luajJncmFwaCBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzXG4gICAgICAgIGV2ZW50X2tpbmQgP3BhdGggcmVtYWluaW5nX3NpZGVfZWZmZWN0cyBydWxlIG91dHB1dHNcbiAgICAgICAgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeVxuICAgIGluXG4gICAgKCpQcmludCBzcGVjaWVzKilcbiAgICBsZXQgc3BlY2llcyA9XG4gICAgICBnZXRfc3BlY2llc19vYnMgfmRlYnVnX21vZGUgc2lncyBlZGdlcycnIG5ld19vYnMgW10gc3RhdGUuaW1wLnNwZWNpZXNcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoZmlsZSwgXywgbWl4dHVyZSkgLT5cbiAgICAgICAgICBvdXRwdXRzIChEYXRhLlNwZWNpZXMgKGZpbGUsIENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIsIG1peHR1cmUpKSlcbiAgICAgICAgc3BlY2llc1xuICAgIGluXG4gICAgbGV0IHJldl9kZXBzID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50c1xuICAgICAgICAoT3BlcmF0b3IuRGVwU2V0LnVuaW9uIGRlbF9kZXBzIG5ld19kZXBzKVxuICAgIGluXG4gICAge1xuICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgIGltcCA9IHN0YXRlLmltcDtcbiAgICAgIG1hdGNoaW5nc19vZl9ydWxlID0gc3RhdGUubWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICB1bmFyeV9jYW5kaWRhdGVzID0gc3RhdGUudW5hcnlfY2FuZGlkYXRlcztcbiAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyA9IHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgIGVkZ2VzID0gZWRnZXMnJztcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gcmV2X2RlcHM7XG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgfVxuXG4gIGxldCB1cGRhdGVfZWRnZXNfZnJvbV9hY3Rpb25zIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIHNpZ3MgY291bnRlciBkb21haW4gc3RhdGVcbiAgICAgIChhY3Rpb25zLCBzaWRlX2VmZmVjdF9kc3QpID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAoKk5lZ2F0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGxua19kc3QgKChhLCBfKSwgcykgPSBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGEgcyBzdGF0ZS5lZGdlcyBpblxuICAgIGxldCBjb25jcmV0ZV9yZW1vdmVkID1cbiAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ubmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lncyBsbmtfZHN0XG4gICAgICAgIGFjdGlvbnNcbiAgICBpblxuICAgIGxldCAoZGVsX29icywgZGVsX2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgX3NpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAoW10sIHN0YXRlLmVkZ2VzKSBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyBmYWxzZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzX2FmdGVyX25lZ1xuICAgICAgICAgICAgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBwYXQgcm9vdClcbiAgICAgICAgZGVsX29ic1xuICAgIGluXG4gICAgKCpQb3NpdGl2ZSB1cGRhdGUqKVxuICAgIGxldCBjb25jcmV0ZV9pbnNlcnRlZCA9XG4gICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3NcbiAgICAgICAgc2lkZV9lZmZlY3RfZHN0IGFjdGlvbnNcbiAgICBpblxuICAgIGxldCBlZGdlcycgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4IGggLT5cbiAgICAgICAgICBhcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgICAgKFBhdHRlcm4uRW52LnNpZ25hdHVyZXMgZG9tYWluKVxuICAgICAgICAgICAgfm1vZF9jb25uZWN0aXZpdHlfc3RvcmUgc3RhdGUuaW1wLmluc3RhbmNlcyB4IGgpXG4gICAgICAgIGVkZ2VzX2FmdGVyX25lZyBjb25jcmV0ZV9pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0IChuZXdfb2JzLCBuZXdfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcycpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgdHJ1ZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzJyBtb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgICBwYXQgcm9vdClcbiAgICAgICAgbmV3X29ic1xuICAgIGluXG4gICAgKCpQcmludCBzcGVjaWVzKilcbiAgICBsZXQgc3BlY2llcyA9XG4gICAgICBnZXRfc3BlY2llc19vYnMgfmRlYnVnX21vZGUgc2lncyBlZGdlcycgbmV3X29icyBbXSBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChmaWxlLCBfLCBtaXh0dXJlKSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuU3BlY2llcyAoZmlsZSwgQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciwgbWl4dHVyZSkpKVxuICAgICAgICBzcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgcmV2X2RlcHMgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzXG4gICAgICAgIChPcGVyYXRvci5EZXBTZXQudW5pb24gZGVsX2RlcHMgbmV3X2RlcHMpXG4gICAgaW5cbiAgICB7XG4gICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyA9IHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzO1xuICAgICAgZWRnZXMgPSBlZGdlcyc7XG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9IHJldl9kZXBzO1xuICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gc3RhdGUuZXZlbnRzX3RvX2Jsb2NrO1xuICAgIH1cblxuICBsZXQgbWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUgZCA9IE5ici50b19pbnQgKHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGQpXG5cbiAgKCogY2NfdmEgaXMgdGhlIG51bWJlciBvZiBlbWJlZGRpbmdzLiBJdCBvbmx5IGhhc1xuICAgICB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSByYXRlIGNvbnN0YW50IG9mIHRoZSBydWxlICopXG4gIGxldCBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSBpZCBzeW50YXhfaWQgcmF0ZSBjY192YVxuICAgICAgPVxuICAgIGxldCAoKSA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbJXN1bGUgJWEgaGFzIG5vdyAlaSBpbnN0YW5jZXMuQF1ALlwiXG4gICAgICAgICAgKGlmIGlkIG1vZCAyID0gMSB0aGVuXG4gICAgICAgICAgICAgXCJVbmFyeSByXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiUlwiKVxuICAgICAgICAgIChNb2RlbC5wcmludF9ydWxlIH5ub0NvdW50ZXJzOnRydWUgfmVudilcbiAgICAgICAgICAoaWQgLyAyKSBjY192YVxuICAgIGluXG4gICAgbGV0IGFjdCA9XG4gICAgICBtYXRjaCBOYnIudG9fZmxvYXQgQEAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgY2NfdmEgPSAwIHRoZW5cbiAgICAgICAgICAwLlxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5maW5pdHlcbiAgICAgIHwgU29tZSByYXRlIC0+IHJhdGUgKi4gZmxvYXRfb2ZfaW50IGNjX3ZhXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgYWN0IDwgMC4gdGhlbiAoXG4gICAgICAgIGxldCB1bmFyeSA9IGlkIG1vZCAyID0gMSBpblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJBdCB0PSUuMmYgJXNjdGl2aXR5IG9mIHJ1bGUgJWEgaGFzIGJlY29tZSBuZWdhdGl2ZSAoJWYpXCJcbiAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgIChpZiB1bmFyeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFwiVW5hcnkgXCJcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgXCJcIilcbiAgICAgICAgICAgICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZW52KVxuICAgICAgICAgICAgICAgICBpZCBhY3QsXG4gICAgICAgICAgICAgICBNb2RlbC5nZXRfYXN0X3J1bGVfcmF0ZV9wb3MgfnVuYXJ5IGVudiBzeW50YXhfaWQgKSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBvbGRfYWN0ID0gZ2V0X2FjdGl2aXR5IGlkIHN0YXRlIGluXG4gICAgbGV0ICgpID0gc2V0X2FjdGl2aXR5IGlkIGFjdCBzdGF0ZSBpblxuICAgIHN0b3JlIHN5bnRheF9pZCBvbGRfYWN0IGFjdFxuXG4gIGxldCB1cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSBrbm93bl9wZXJ0c1xuICAgICAgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCB1bmFyeV9ydWxlX3VwZGF0ZSBtb2RpZmllZF9jYyBpbnN0YW5jZXMgaSBwYWNrIHJ1bGUgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHBhY2tcbiAgICAgIHwgU29tZSAodW5yYXRlLCBfKSAtPlxuICAgICAgICBsZXQgdmEsIHBhY2snID1cbiAgICAgICAgICBjb21wdXRlX3VuYXJ5X251bWJlciBpbnN0YW5jZXMgcGFjayBtb2RpZmllZF9jYyBydWxlIGlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICAgKCgyICogaSkgKyAxKVxuICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlIChmc3QgdW5yYXRlKSAoSW50NjQudG9faW50IHZhKVxuICAgICAgICBpblxuICAgICAgICBwYWNrJ1xuICAgIGluXG4gICAgbGV0IHJlYyBhdXggZGVwIGFjYyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQuZm9sZFxuICAgICAgICAoZnVuIGRlcCAoKGV4YWN0X21hdGNoaW5ncywgcGVydHMpIGFzIGFjYykgLT5cbiAgICAgICAgICBtYXRjaCBkZXAgd2l0aFxuICAgICAgICAgIHwgT3BlcmF0b3IuQUxHIGogLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHJlY29tcHV0ZSBlbnYgY291bnRlciBzdGF0ZSBqIGluXG4gICAgICAgICAgICBhdXggKE1vZGVsLmdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGopIGFjY1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9ESUYgcCAtPiBleGFjdF9tYXRjaGluZ3MsIHAgOjogcGVydHNcbiAgICAgICAgICB8IE9wZXJhdG9yLlJVTEUgaSAtPlxuICAgICAgICAgICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgaSBpblxuICAgICAgICAgICAgbGV0IHBhdHRlcm5fdmEgPVxuICAgICAgICAgICAgICBJbnN0YW5jZXMubnVtYmVyX29mX2luc3RhbmNlcyB+cnVsZV9pZDppIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSAoMiAqIGkpXG4gICAgICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlIChmc3QgcnVsZS5QcmltaXRpdmVzLnJhdGUpXG4gICAgICAgICAgICAgICAgcGF0dGVybl92YVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBvcF9leGFjdF9tYXRjaGluZ3MgZXhhY3RfbWF0Y2hpbmdzIGksIHBlcnRzKVxuICAgICAgICBkZXAgYWNjXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hpbmdzX29mX3J1bGUsIHBlcnRzID1cbiAgICAgIGF1eCBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cyAoc3RhdGUubWF0Y2hpbmdzX29mX3J1bGUsIGtub3duX3BlcnRzKVxuICAgIGluXG4gICAgbGV0IG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgdW5hcnlfY2FuZGlkYXRlcyA9XG4gICAgICBpZiBIYXNodGJsLmxlbmd0aCBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgPSAwIHRoZW5cbiAgICAgICAgc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgTW9kZWwuZm9sZF9ydWxlc1xuICAgICAgICAgICAgKHVuYXJ5X3J1bGVfdXBkYXRlIHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eVxuICAgICAgICAgICAgICAgc3RhdGUuaW1wLmluc3RhbmNlcylcbiAgICAgICAgICAgIChzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXMpXG4gICAgICAgICAgICBlbnZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXNldCBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAgICAgb3V0XG4gICAgICApXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgICBlZGdlcyA9IHN0YXRlLmVkZ2VzO1xuICAgICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2M7XG4gICAgICAgIHVuYXJ5X2NhbmRpZGF0ZXM7XG4gICAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gc3RhdGUuaW1wLnByZWNvbXB1dGVkLmFsd2F5c19vdXRkYXRlZDtcbiAgICAgIH0sXG4gICAgICBwZXJ0cyApXG5cbiAgbGV0IG92ZXJ3cml0ZV92YXIgaSBjb3VudGVyIHN0YXRlIGV4cHIgPVxuICAgIGxldCAoKSA9XG4gICAgICBzdGF0ZS5pbXAudmFyaWFibGVzX292ZXJ3cml0ZS4oaSkgPC1cbiAgICAgICAgU29tZSAoQWxnX2V4cHIuQ09OU1QgKHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGV4cHIpKVxuICAgIGluXG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPVxuICAgICAgICBPcGVyYXRvci5EZXBTZXQuYWRkIChPcGVyYXRvci5BTEcgaSkgc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHM7XG4gICAgfVxuXG4gIGxldCB1cGRhdGVfdG9rZW5zIGVudiBjb3VudGVyIHN0YXRlIGluamVjdGVkID1cbiAgICBsZXQgaW5qZWN0ZWQnID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuICgoZXhwciwgXyksIGkpIC0+IHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGV4cHIsIGkpXG4gICAgICAgIGluamVjdGVkXG4gICAgaW5cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biByZGVwcyAodmEsIGkpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBzdGF0ZS5pbXAudG9rZW5zLihpKSA8LSBOYnIuYWRkIHN0YXRlLmltcC50b2tlbnMuKGkpIHZhIGluXG4gICAgICAgICAgICBsZXQgZGVwcycgPSBNb2RlbC5nZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgaW5cbiAgICAgICAgICAgIGlmIE9wZXJhdG9yLkRlcFNldC5pc19lbXB0eSBkZXBzJyB0aGVuXG4gICAgICAgICAgICAgIHJkZXBzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZGVwcyBkZXBzJylcbiAgICAgICAgICBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cyBpbmplY3RlZCc7XG4gICAgfVxuXG4gIGxldCB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZCA/cGF0aFxuICAgICAgcnVsZSA/cnVsZV9pZCBpbmogPVxuICAgIGlmIGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgP3J1bGVfaWQgcnVsZSBpbmogdGhlblxuICAgICAgQmxvY2tlZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgdXBkYXRlX3Rva2VucyBlbnYgY291bnRlciBzdGF0ZSBydWxlLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zXG4gICAgICBpblxuICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgdXBkYXRlX2VkZ2VzIH5kZWJ1Z19tb2RlIG91dHB1dHMgY291bnRlciAoTW9kZWwuZG9tYWluIGVudikgaW5qIHN0YXRlXG4gICAgICAgICAgZXZlbnRfa2luZCA/cGF0aCBydWxlIChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgICAgIGluXG4gICAgICBTdWNjZXNzIHN0YXRlXG4gICAgKVxuXG4gIGxldCBhcHBseV9naXZlbl91bmFyeV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQ2xhc2hcbiAgICB8IFNvbWUgKGluaiwgX3Jldl9yb290cywgcGF0aCkgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0IHN0YXRlJyA9XG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0ZSB3aXRoXG4gICAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPVxuICAgICAgICAgICAgT3BlcmF0b3IuRGVwU2V0LmFkZCAoT3BlcmF0b3IuUlVMRSBydWxlX2lkKSBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBwYXRoIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZScgZXZlbnRfa2luZFxuICAgICAgICAgIH5wYXRoIHJ1bGUgfnJ1bGVfaWQgaW5qXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG1heF9kaXN0YW5jZSA9XG4gICAgICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIChfLCBkaXN0X29wdCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBkaXN0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUnIGQpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICBsZXQgbm9kZXMgPVxuICAgICAgICAgIE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluXG4gICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5qXG4gICAgICAgIGluXG4gICAgICAgIGlmIG1heF9kaXN0YW5jZSA9IE5vbmUgJiYgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSA9IE5vbmUgdGhlblxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnRcbiAgICAgICAgICAgICAgKGZzdCAoTGlzdC5oZCBub2Rlcy4oMCkpKVxuICAgICAgICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzLigxKSkpXG4gICAgICAgICAgICAgIHN0YXRlLmVkZ2VzXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlJ1xuICAgICAgICAgICAgICBldmVudF9raW5kIH5wYXRoOk5vbmUgcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBDb3JyZWN0ZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBzdGF0ZS5lZGdlcyBub2Rlcy4oMCkgbm9kZXMuKDEpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBDb3JyZWN0ZWRcbiAgICAgICAgICB8IFNvbWUgXyBhcyBwYXRoIC0+XG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUnXG4gICAgICAgICAgICAgIGV2ZW50X2tpbmQgfnBhdGggcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgICAgKSlcblxuICBsZXQgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IENsYXNoXG4gICAgfCBTb21lIChpbmosIHJldl9yb290cywgX3BhdGgpIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0IHJvb3RzID0gVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgcmV2X3Jvb3RzIGluXG4gICAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbT24gcm9vdHM6QCBAWyVhQF1AXUAuXCJcbiAgICAgICAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIF8gLT4gRm9ybWF0LnBwX3ByaW50X2ludCkpXG4gICAgICAgICAgICByb290c1xuICAgICAgICApXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgIHJ1bGUgP3J1bGVfaWQgaW5qXG4gICAgICB8IFNvbWUgKF8sIG1heF9kaXN0YW5jZSkgLT5cbiAgICAgICAgKG1hdGNoIG1heF9kaXN0YW5jZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCByZXZfcm9vdHMgd2l0aFxuICAgICAgICAgIHwgWyByb290MTsgcm9vdDAgXSAtPlxuICAgICAgICAgICAgaWYgRWRnZXMuaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHJvb3QwIHJvb3QxIHN0YXRlLmVkZ2VzIHRoZW5cbiAgICAgICAgICAgICAgQ29ycmVjdGVkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICAgICAgIGV2ZW50X2tpbmQgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJhcHBseV9naXZlbl9ydWxlIHVuYXJ5IHJ1bGUgd2l0aG91dCAyIHBhdHRlcm5zXCIpXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAgICAgICBsZXQgZGlzdCcgPSBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkaXN0KSBpblxuICAgICAgICAgIGxldCBub2RlcyA9XG4gICAgICAgICAgICBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpblxuICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5qXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2U6ZGlzdCcgc3RhdGUuZWRnZXMgbm9kZXMuKDApXG4gICAgICAgICAgICAgICBub2Rlcy4oMSlcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmRcbiAgICAgICAgICAgICAgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgICAgICB8IFNvbWUgXyAtPiBDb3JyZWN0ZWQpKSlcblxuICBsZXQgYXBwbHlfZ2l2ZW5fcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID1cbiAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgIGxldCBpbnN0ID1cbiAgICAgIHBpY2tfYV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgZG9tYWluXG4gICAgICAgIHN0YXRlLmVkZ2VzID9ydWxlX2lkIHJ1bGVcbiAgICBpblxuICAgIGFwcGx5X2dpdmVuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgaW5zdFxuXG4gIGxldCBmb3JjZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmQgP3J1bGVfaWQgcnVsZVxuICAgICAgPVxuICAgIG1hdGNoXG4gICAgICBhcHBseV9naXZlbl9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgIGV2ZW50X2tpbmQgcnVsZVxuICAgIHdpdGhcbiAgICB8IFN1Y2Nlc3Mgb3V0IC0+IFNvbWUgb3V0XG4gICAgfCBDb3JyZWN0ZWQgfCBCbG9ja2VkIHwgQ2xhc2ggLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0IHVuYXJ5X3JhdGUgPVxuICAgICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAobG9jLCBkaXN0X29wdCkgLT5cbiAgICAgICAgICAobWF0Y2ggZGlzdF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBTb21lIChsb2MsIE5vbmUpXG4gICAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobG9jLCBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkKSkpXG4gICAgICBpblxuICAgICAgKG1hdGNoXG4gICAgICAgICBhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSA/cnVsZV9pZCA/dW5hcnlfcmF0ZSBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgICAgIChNb2RlbC5kb21haW4gZW52KSBzdGF0ZS5lZGdlcyBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAgICB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJBdCB0PSVmLCAlYSBkb2VzIG5vdCBhcHBseSAoYW55bW9yZSlcIlxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgICAoVHJhY2UucHJpbnRfZXZlbnRfa2luZCB+ZW52KVxuICAgICAgICAgICAgICAgICAgICAgZXZlbnRfa2luZCApKVxuICAgICAgICBpblxuICAgICAgICBOb25lXG4gICAgICB8IGwgLT5cbiAgICAgICAgbGV0IGgsIF8gPSBMaXN0X3V0aWwucmFuZG9tIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgbCBpblxuICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgICAgcnVsZSA/cnVsZV9pZCBoXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBvdXQgd2l0aFxuICAgICAgICB8IFN1Y2Nlc3Mgb3V0IC0+IFNvbWUgb3V0XG4gICAgICAgIHwgQmxvY2tlZCAtPiBOb25lXG4gICAgICAgIHwgQ2xhc2ggfCBDb3JyZWN0ZWQgLT4gYXNzZXJ0IGZhbHNlKSlcblxuICBsZXQgYWRqdXN0X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IHVuYXJ5X3JhdGUgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAobG9jLCBkaXN0X29wdCkgLT5cbiAgICAgICAgKG1hdGNoIGRpc3Rfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGxvYywgTm9uZSlcbiAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobG9jLCBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkKSkpXG4gICAgaW5cbiAgICBsZXQgYWN0LCBzdGF0ZSA9XG4gICAgICBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP3VuYXJ5X3JhdGUgc3RhdGUgZG9tYWluXG4gICAgICAgIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBydWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgc3RhdGUgKDIgKiBydWxlX2lkKSBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGVcbiAgICAgICAgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSkgYWN0XG4gICAgaW5cbiAgICBzdGF0ZVxuXG4gICgqIFJlZGVmaW5lcyBgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzYCAqKVxuICBsZXQgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IG1heF9kaXN0YW5jZSA9XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4gKF8sIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUpIGRpc3Rfb3B0KVxuICAgICAgICBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZVxuICAgIGluXG4gICAgbGV0IGFjdCwgc3RhdGUgPVxuICAgICAgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID9tYXhfZGlzdGFuY2Ugc3RhdGVcbiAgICAgICAgZG9tYWluIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBydWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lICh1bnJhdGUsIF8pIC0+XG4gICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlXG4gICAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgICBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICgoMiAqIHJ1bGVfaWQpICsgMSlcbiAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCB1bnJhdGUpIGFjdFxuICAgIGluXG4gICAgc3RhdGVcblxuICBsZXQgaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUgcGF0dGVybiA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEluc3RhbmNlcy5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlLmltcC5pbnN0YW5jZXMgcGF0dGVyblxuICAgICAgICAoTWF0Y2hpbmcucm9vdHNfb2YgfmRlYnVnX21vZGUgZG9tYWluIHN0YXRlLmVkZ2VzIHBhdHRlcm4pXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IHNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXcgZW52IGNvdW50ZXIgc3RhdGUgPVxuICAgIHtcbiAgICAgIERhdGEuc25hcHNob3RfZXZlbnQgPSBDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcjtcbiAgICAgIERhdGEuc25hcHNob3RfdGltZSA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXI7XG4gICAgICBEYXRhLnNuYXBzaG90X2FnZW50cyA9XG4gICAgICAgIEVkZ2VzLmJ1aWxkX3VzZXJfc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gICAgICAgICAgc3RhdGUuZWRnZXM7XG4gICAgICBEYXRhLnNuYXBzaG90X3Rva2VucyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGkgeCAtPiBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSBpLCB4KVxuICAgICAgICAgIHN0YXRlLmltcC50b2tlbnM7XG4gICAgfVxuXG4gIGxldCBwaWNrX2FuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIGVudiBzdGF0ZSA9XG4gICAgbGV0IGNob2ljZSA9IHBpY2tfcnVsZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIHN0YXRlIGluXG4gICAgbGV0IHJ1bGVfaWQgPSBjaG9pY2UgLyAyIGluXG4gICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgKCBjaG9pY2UgbW9kIDIgPSAxLFxuICAgICAgcnVsZV9pZCxcbiAgICAgIGlmIGNob2ljZSBtb2QgMiA9IDEgdGhlblxuICAgICAgICBwaWNrX2FfdW5hcnlfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlXG4gICAgICAgICAgZG9tYWluIHN0YXRlLmVkZ2VzIH5ydWxlX2lkIHJ1bGVcbiAgICAgIGVsc2VcbiAgICAgICAgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBkb21haW5cbiAgICAgICAgICBzdGF0ZS5lZGdlcyB+cnVsZV9pZCBydWxlIClcblxuICBsZXQgaXNfY29ycmVjdF9pbnN0YW5jZSBlbnYgZ3JhcGggKGlzX3VuYXJ5LCBydWxlX2lkLCBpbnN0YW5jZSkgPVxuICAgIG1hdGNoIGluc3RhbmNlIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSAoX2luaiwgaW52X3Jvb3RzLCBwYXRoKSAtPlxuICAgICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgICAgbGV0IHBhdHMgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgIChmdW4gXyBiIGNjIHIgLT4gYiAmJiBJbnN0YW5jZXMuaXNfdmFsaWQgZ3JhcGguaW1wLmluc3RhbmNlcyBjYyByKVxuICAgICAgICB0cnVlIHBhdHNcbiAgICAgICAgKFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IGludl9yb290cylcbiAgICAgICYmICgobm90IGlzX3VuYXJ5KVxuICAgICAgICAgfHxcbiAgICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICAgfCBTb21lIHAgLT4gRWRnZXMuaXNfdmFsaWRfcGF0aCBwIGdyYXBoLmVkZ2VzXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIGludl9yb290cyB3aXRoXG4gICAgICAgICAgIHwgWyB4OyB5IF0gLT4gRWRnZXMuaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHggeSBncmFwaC5lZGdlc1xuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcblxuICBsZXQgYXBwbHlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP21heENvbnNlY3V0aXZlQmxvY2tlZFxuICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXIgZ3JhcGggKGlzX3VuYXJ5LCBydWxlX2lkLCBpbnN0YW5jZSkgPVxuICAgIGxldCBjYXVzZSA9IFRyYWNlLlJVTEUgcnVsZV9pZCBpblxuICAgIGxldCBydWxlID0gTW9kZWwuZ2V0X3J1bGUgZW52IHJ1bGVfaWQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJAWzx2PkBbQXBwbGllZEAgJXQlaTpAXUAgQFslYUBdQF1ALlwiXG4gICAgICAgICAgKGZ1biBmIC0+IGlmIGlzX3VuYXJ5IHRoZW4gRm9ybWF0LmZwcmludGYgZiBcInVuYXJ5QCBcIilcbiAgICAgICAgICBydWxlX2lkXG4gICAgICAgICAgKEthcHBhX3ByaW50ZXIuZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzOnRydWUgfmZ1bGw6dHJ1ZSBlbnYpXG4gICAgICAgICAgcnVsZVxuICAgICAgKCpSdWxlX2ludGVycHJldGVyLnByaW50X2Rpc3QgZW52IGdyYXBoIHJ1bGVfaWQqKVxuICAgIGluXG4gICAgbGV0IGFwcGx5X2dpdmVuID1cbiAgICAgIGlmIGlzX3VuYXJ5IHRoZW5cbiAgICAgICAgYXBwbHlfZ2l2ZW5fdW5hcnlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfnJ1bGVfaWRcbiAgICAgIGVsc2VcbiAgICAgICAgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfnJ1bGVfaWRcbiAgICBpblxuICAgIG1hdGNoIGFwcGx5X2dpdmVuIGVudiBjb3VudGVyIGdyYXBoIGNhdXNlIHJ1bGUgaW5zdGFuY2Ugd2l0aFxuICAgIHwgU3VjY2VzcyBncmFwaCcgLT5cbiAgICAgIGxldCBmaW5hbF9zdGVwID0gbm90IChDb3VudGVyLm9uZV9jb25zdHJ1Y3RpdmVfZXZlbnQgfnJ1bGVfaWQgY291bnRlcikgaW5cbiAgICAgIFNvbWUgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlLCBmaW5hbF9zdGVwLCBncmFwaCdcbiAgICB8IChDbGFzaCB8IENvcnJlY3RlZCB8IEJsb2NrZWQpIGFzIG91dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID1cbiAgICAgICAgaWYgb3V0ID0gQ2xhc2ggdGhlblxuICAgICAgICAgIENvdW50ZXIub25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgICAgZWxzZSBpZiBvdXQgPSBCbG9ja2VkIHRoZW5cbiAgICAgICAgICBDb3VudGVyLm9uZV9ibG9ja2VkX2V2ZW50IGNvdW50ZXJcbiAgICAgICAgZWxzZSBpZiBpc191bmFyeSB0aGVuXG4gICAgICAgICAgQ291bnRlci5vbmVfbm9fbW9yZV91bmFyeV9ldmVudCB+cnVsZV9pZCBjb3VudGVyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBDb3VudGVyLm9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCB+cnVsZV9pZCBjb3VudGVyXG4gICAgICBpblxuICAgICAgaWZcbiAgICAgICAgQ291bnRlci5jb25zZWN1dGl2ZV9udWxsX2V2ZW50IH5ydWxlX2lkIGNvdW50ZXIgPCBtYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICAgICYmXG4gICAgICAgIG1hdGNoIG1heENvbnNlY3V0aXZlQmxvY2tlZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBuIC0+IENvdW50ZXIuY29uc2VjdXRpdmVfYmxvY2tlZCBjb3VudGVyIDwgblxuICAgICAgdGhlblxuICAgICAgICBOb25lLCBub3QgY29udGludWUsIGdyYXBoXG4gICAgICBlbHNlXG4gICAgICAgICggTm9uZSxcbiAgICAgICAgICBub3QgY29udGludWUsXG4gICAgICAgICAgaWYgaXNfdW5hcnkgdGhlblxuICAgICAgICAgICAgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgIHJ1bGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgZ3JhcGggcnVsZSApXG5cbiAgbGV0IGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHRwYXR0ZXJuID1cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBwYXR0ZXJuIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IFBhdHRlcm4uT2JzTWFwLmdldCB0cGF0dGVybiBwYXR0ZXJuIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHRwYXR0ZXJuIHBhdHRlcm4gKChuYW1lLCBwYXR0ZXJucywgdGVzdHMpIDo6IGFjYykpXG4gICAgICAgIHBhdHRlcm5zXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IGFkZF90cmFja2VkIH5vdXRwdXRzIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIG1hdGNoIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJPYnNlcnZhYmxlICVzIHNob3VsZCBiZSB0cmFja2VkIGJ1dCB0aGUgdHJhY2UgaXMgbm90IHN0b3JlZFwiXG4gICAgICAgICAgICAgICAgICAgbmFtZSApKVxuICAgICAgaW5cbiAgICAgIHN0YXRlXG4gICAgfCBTb21lIHRwYXR0ZXJuIC0+IGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHRwYXR0ZXJuXG5cbiAgbGV0IHJlbW92ZV90cmFja2VkIHBhdHRlcm5zIG5hbWUgc3RhdGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIG1hdGNoIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGF0ZVxuICAgIHwgU29tZSB0cGF0dGVybiAtPlxuICAgICAgKG1hdGNoIG5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICAgICAgbGV0IHRlc3RlciAoXywgZWwsIF8pID1cbiAgICAgICAgICBub3RcbiAgICAgICAgICBAQCBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgICAoZnVuIGkgYiB4IC0+IGIgJiYgUGF0dGVybi5pc19lcXVhbF9jYW5vbmljYWxzIHggZWwuKGkpKVxuICAgICAgICAgICAgICAgdHJ1ZSBwYXR0ZXJuc1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgICAgIChmdW4gcGF0dGVybiAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gUGF0dGVybi5PYnNNYXAuZ2V0IHRwYXR0ZXJuIHBhdHRlcm4gaW5cbiAgICAgICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHRwYXR0ZXJuIHBhdHRlcm4gKExpc3QuZmlsdGVyIHRlc3RlciBhY2MpKVxuICAgICAgICAgICAgcGF0dGVybnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfVxuICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgICAgICBsZXQgdGVzdGVyIChuLCBfLCBfKSA9IG5vdCAoU3RyaW5nLmNvbXBhcmUgbmFtZSBuID0gMCkgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgICAgICAgKGZ1biBjY19pZCBwbGlzdCAtPlxuICAgICAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gY2NfaWQgKExpc3QuZmlsdGVyIHRlc3RlciBwbGlzdCkpXG4gICAgICAgICAgICB0cGF0dGVyblxuICAgICAgICBpblxuICAgICAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9KVxuXG4gIGxldCBhZGRfdHJhY2tlZF9zcGVjaWVzIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgPVxuICAgIGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHN0YXRlLmltcC5zcGVjaWVzXG5cbiAgbGV0IHJlbW92ZV90cmFja2VkX3NwZWNpZXMgbmFtZSBzdGF0ZSA9XG4gICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgIGxldCB0ZXN0ZXIgKG4sIF8sIF8pID0gbm90IChTdHJpbmcuY29tcGFyZSBuYW1lIG4gPSAwKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgICAoZnVuIGNjX2lkIHBsaXN0IC0+XG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLmltcC5zcGVjaWVzIGNjX2lkIChMaXN0LmZpbHRlciB0ZXN0ZXIgcGxpc3QpKVxuICAgICAgICBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfVxuXG4gIGxldCBnZXRfcmFuZG9tX3N0YXRlIHN0YXRlID0gc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZVxuXG4gIGxldCBzZW5kX2luc3RhbmNlc19tZXNzYWdlIG1zZyBzdGF0ZSA9XG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgaW1wID1cbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlLmltcCB3aXRoXG4gICAgICAgICAgaW5zdGFuY2VzID0gSW5zdGFuY2VzLnJlY2VpdmVfbWVzc2FnZSBtc2cgc3RhdGUuaW1wLmluc3RhbmNlcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgbGV0IGFkZF9vdXRkYXRlZF9kZXBlbmRlbmNpZXMgbmV3X2RlcHMgc3RhdGUgPVxuICAgIGxldCBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gbmV3X2RlcHMgc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHNcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZF9lbGVtZW50cyB9XG5cbiAgbGV0IGRlYnVnX3ByaW50X2luc3RhbmNlcyBmIHN0ID0gSW5zdGFuY2VzLmRlYnVnX3ByaW50IGYgc3QuaW1wLmluc3RhbmNlc1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGluaXRfc3RvcHBpbmdfdGltZXM6IChOYnIudCAqIGludCkgbGlzdDtcbiAgbXV0YWJsZSBzdG9wcGluZ190aW1lczogKE5ici50ICogaW50KSBsaXN0O1xuICBwZXJ0dXJiYXRpb25zX2FsaXZlOiBib29sIGFycmF5O1xuICB0aW1lX2RlcGVuZGVudF9wZXJ0czogaW50IGxpc3Q7XG4gIG11dGFibGUgZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zOiBpbnQgbGlzdDtcbiAgcGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQ6IGJvb2wgYXJyYXk7XG4gICgqIGludGVybmFsIGFycmF5IGZvciBwZXJ0dXJiYXRlIGZ1bmN0aW9uIChnbG9iYWwgdG8gYXZvaWQgdXNlbGVzcyBhbGxvYykgKilcbiAgbXV0YWJsZSBmbHV4OiAoc3RyaW5nICogRGF0YS5kaW5fZGF0YSkgbGlzdDtcbiAgd2l0aF9kZWx0YV9hY3Rpdml0aWVzOiBib29sO1xufVxuXG5sZXQgY29tcGFyZV9zdG9wcyAodDEsIHAxKSAodDIsIHAyKSA9XG4gIGxldCB0ID0gTmJyLmNvbXBhcmUgdDEgdDIgaW5cbiAgaWYgdCA9IDAgdGhlblxuICAgIGNvbXBhcmUgcDEgcDJcbiAgZWxzZVxuICAgIHRcblxubGV0IGVtcHR5IH53aXRoX2RlbHRhX2FjdGl2aXRpZXMgY291bnRlciBlbnYgPVxuICBsZXQgdDAgPSBDb3VudGVyLmluaXRfdGltZSBjb3VudGVyIGluXG4gIGxldCBzdG9wcGluZ190aW1lcyA9XG4gICAgbGV0IGFsZ3NfZGVwcyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgTW9kZWwuZm9sZF9wZXJ0dXJiYXRpb25zXG4gICAgICAoZnVuIGkgYWNjIHggLT5cbiAgICAgICAgbWF0Y2ggeC5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBsZXQgayA9IDEuICsuIGZsb29yICh0MCAvLiBPcHRpb25fdXRpbC51bnNvbWUgMC4gKE5ici50b19mbG9hdCBuKSkgaW5cbiAgICAgICAgICAoTmJyLm11bHQgKE5ici5GIGspIG4sIGkpIDo6IGFjY1xuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIGFsZ3NfZGVwc1xuICAgICAgICAgICAgICAgIChmc3QgeC5QcmltaXRpdmVzLnByZWNvbmRpdGlvbilcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggXCJFcXVhbGl0eSB0ZXN0IG9uIHRpbWUgcmVxdWlyZXMgYW4gYWxhcm1cIixcbiAgICAgICAgICAgICAgICAgICAgIHNuZCB4LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIGFsZ3NfZGVwcyAoZnN0IHguUHJpbWl0aXZlcy5yZXBlYXQpXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoIFwiRXF1YWxpdHkgdGVzdCBvbiB0aW1lIHJlcXVpcmVzIGFuIGFsYXJtXCIsXG4gICAgICAgICAgICAgICAgICAgICBzbmQgeC5QcmltaXRpdmVzLnJlcGVhdCApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWNjKVxuICAgICAgW10gZW52XG4gIGluXG4gIGxldCBzdG9wcyA9IExpc3Quc29ydCBjb21wYXJlX3N0b3BzIHN0b3BwaW5nX3RpbWVzIGluXG4gIGxldCB0aW1lX2RlcGVuZGVudF9wZXJ0cyA9XG4gICAgbGV0IHJlYyBhdXggZGVwIGFjYyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQuZm9sZFxuICAgICAgICAoZnVuIGRlcCBwZXJ0cyAtPlxuICAgICAgICAgIG1hdGNoIGRlcCB3aXRoXG4gICAgICAgICAgfCBPcGVyYXRvci5BTEcgaiAtPlxuICAgICAgICAgICAgYXV4IChNb2RlbC5nZXRfYWxnX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBqKSBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9ESUYgcCAtPlxuICAgICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgTW9kcy5pbnRfY29tcGFyZSBbIHAgXSBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBfIC0+IHBlcnRzKVxuICAgICAgICBkZXAgYWNjXG4gICAgaW5cbiAgICBhdXhcbiAgICAgIChsZXQgeCwgXywgXywgXyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgICAgeClcbiAgICAgIFtdXG4gIGluXG4gIHtcbiAgICBpbml0X3N0b3BwaW5nX3RpbWVzID0gc3RvcHM7XG4gICAgc3RvcHBpbmdfdGltZXMgPSBzdG9wcztcbiAgICBwZXJ0dXJiYXRpb25zX2FsaXZlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfcGVydHVyYmF0aW9ucyBlbnYpIHRydWU7XG4gICAgZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zID0gW107XG4gICAgdGltZV9kZXBlbmRlbnRfcGVydHM7XG4gICAgcGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9wZXJ0dXJiYXRpb25zIGVudikgdHJ1ZTtcbiAgICBmbHV4ID0gW107XG4gICAgd2l0aF9kZWx0YV9hY3Rpdml0aWVzO1xuICB9XG5cbmxldCBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIGNvdW50ZXIgPVxuICBNb2RlbC5tYXBfb2JzZXJ2YWJsZXMgKFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgZ3JhcGgpIGVudlxuXG5sZXQgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgbW9kaWZpY2F0aW9uID1cbiAgbGV0IHByaW50X2V4cHJfdmFsID1cbiAgICBLYXBwYV9wcmludGVyLnByaW50X2V4cHJfdmFsIChSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIGdyYXBoKVxuICBpblxuICBtYXRjaCBtb2RpZmljYXRpb24gd2l0aFxuICB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFICgodiwgXyksIHIpIC0+XG4gICAgbGV0IHRleHQgPVxuICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCJcbiAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmRlYnVnX21vZGUgfmVudilcbiAgICAgICAgbW9kaWZpY2F0aW9uXG4gICAgaW5cbiAgICBsZXQgZ3JhcGgnID1cbiAgICAgIE5ici5tYXliZV9pdGVyaVxuICAgICAgICAoZnVuIF8gZyAtPlxuICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuZm9yY2VfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBnXG4gICAgICAgICAgICAoVHJhY2UuUEVSVCB0ZXh0KSByKVxuICAgICAgICBncmFwaFxuICAgICAgICAoUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBncmFwaCB2KVxuICAgIGluXG4gICAgbGV0IGdyYXBoJycsIGV4dHJhJyA9XG4gICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgIGVudiBjb3VudGVyIGdyYXBoJyBleHRyYVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoJycsIHN0YXRlLCBleHRyYSdcbiAgfCBQcmltaXRpdmVzLlVQREFURSAoaSwgKGV4cHIsIF8pKSAtPlxuICAgIGxldCBncmFwaCcgPSBSdWxlX2ludGVycHJldGVyLm92ZXJ3cml0ZV92YXIgaSBjb3VudGVyIGdyYXBoIGV4cHIgaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmEnID1cbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGgnIGV4dHJhXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgnJywgc3RhdGUsIGV4dHJhJ1xuICB8IFByaW1pdGl2ZXMuU1RPUCBwZXhwciAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwZXhwciA8PiBbXSB0aGVuIChcbiAgICAgICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBwZXhwciBpblxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuU25hcHNob3RcbiAgICAgICAgICAgICAoIGZpbGUsXG4gICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLnNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXc6ZmFsc2UgZW52IGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgZ3JhcGggKSlcbiAgICAgIClcbiAgICBpblxuICAgIHRydWUsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlBSSU5UIChwZV9maWxlLCBwZV9leHByKSAtPlxuICAgIGxldCBmaWxlX29wdCA9XG4gICAgICBtYXRjaCBwZV9maWxlIHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIC0+IFNvbWUgKEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBlX2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgbGluZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBlX2V4cHIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgb3V0cHV0c1xuICAgICAgICAoRGF0YS5QcmludFxuICAgICAgICAgICB7IERhdGEuZmlsZV9saW5lX25hbWUgPSBmaWxlX29wdDsgRGF0YS5maWxlX2xpbmVfdGV4dCA9IGxpbmUgfSlcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5QTE9URU5UUlkgLT5cbiAgICBsZXQgKCkgPSBvdXRwdXRzIChEYXRhLlBsb3QgKG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggY291bnRlcikpIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIChyYXcsIHBleHByKSAtPlxuICAgIGxldCBmaWxlID1cbiAgICAgIGlmIHBleHByID0gW10gdGhlblxuICAgICAgICBcInNuYXAua2FcIlxuICAgICAgZWxzZVxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBwZXhwclxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG91dHB1dHNcbiAgICAgICAgKERhdGEuU25hcHNob3RcbiAgICAgICAgICAgKGZpbGUsIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyBlbnYgY291bnRlciBncmFwaCkpXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuQ0ZMT1cgKG5hbWUsIGNjLCB0ZXN0cykgLT5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBtYXRjaCBuYW1lIHdpdGhcbiAgICAgIHwgU29tZSBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIlxuICAgICAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgIFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgICAgICBjY1xuICAgIGluXG4gICAgKCBmYWxzZSxcbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYWRkX3RyYWNrZWQgfm91dHB1dHMgY2MgbmFtZSB0ZXN0cyBncmFwaCxcbiAgICAgIHN0YXRlLFxuICAgICAgZXh0cmEgKVxuICB8IFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKG5hbWUsIGNjKSAtPlxuICAgIGZhbHNlLCBSdWxlX2ludGVycHJldGVyLnJlbW92ZV90cmFja2VkIGNjIG5hbWUgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgZm4gLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIGZuIGluXG4gICAgZmFsc2UsIFJ1bGVfaW50ZXJwcmV0ZXIucmVtb3ZlX3RyYWNrZWRfc3BlY2llcyBmaWxlIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLkRJTiAocmVsLCBzKSAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcyBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKG5hbWUsIHgpIC0+IGZpbGUgPSBuYW1lICYmIHguRGF0YS5kaW5fa2luZCA9IHJlbClcbiAgICAgICAgICBzdGF0ZS5mbHV4XG4gICAgICB0aGVuXG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgIFwiQXQgdD0lZiwgZT0laTogdHJhY2tpbmcgRElOIGludG8gXFxcIiVzXFxcIiB3YXMgYWxyZWFkeSBvblwiXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgIGZpbGUgKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdGF0ZS5mbHV4IDwtIChmaWxlLCBGbHV4bWFwLmNyZWF0ZV9mbHV4IGVudiBjb3VudGVyIHJlbCkgOjogc3RhdGUuZmx1eFxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLkRJTk9GRiBzIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgbGV0IHRoZXNlLCBvdGhlcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gKGZ1biAobmFtZSwgXykgLT4gbmFtZSA9IGZpbGUpIHN0YXRlLmZsdXhcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAobmFtZSwgeCkgLT5cbiAgICAgICAgICBvdXRwdXRzIChEYXRhLkRJTiAobmFtZSwgRmx1eG1hcC5zdG9wX2ZsdXggZW52IGNvdW50ZXIgeCkpKVxuICAgICAgICB0aGVzZVxuICAgIGluXG4gICAgbGV0ICgpID0gc3RhdGUuZmx1eCA8LSBvdGhlcnMgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU1BFQ0lFUyAocywgY2MsIHRlc3RzKSAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcyBpblxuICAgICggZmFsc2UsXG4gICAgICBSdWxlX2ludGVycHJldGVyLmFkZF90cmFja2VkX3NwZWNpZXMgY2MgZmlsZSB0ZXN0cyBncmFwaCxcbiAgICAgIHN0YXRlLFxuICAgICAgZXh0cmEgKVxuXG5sZXQgcmVjIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgbWl4X2NoYW5nZWQgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkXG4gIHwgaSA6OiB0YWlsIC0+XG4gICAgbGV0IHBlcnQgPSBNb2RlbC5nZXRfcGVydHVyYmF0aW9uIGVudiBpIGluXG4gICAgbGV0IG1vZF9hbGFybSA9XG4gICAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSBfIC0+IGlzX2FsYXJtXG4gICAgaW5cbiAgICBpZlxuICAgICAgc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4oaSlcbiAgICAgICYmIHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKVxuICAgICAgJiYgUnVsZV9pbnRlcnByZXRlci52YWx1ZV9ib29sIGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgICAgJiYgbW9kX2FsYXJtXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWl4X2NoYW5nZWQgPSBtaXhfY2hhbmdlZCAmJiBwZXJ0LlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgsIHN0YXRlLCB0YWlsJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEpIGFzIGFjYykgZWZmZWN0IC0+XG4gICAgICAgICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGRvX21vZGlmaWNhdGlvbiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBleHRyYVxuICAgICAgICAgICAgICAgIGVmZmVjdClcbiAgICAgICAgICAoZmFsc2UsIGdyYXBoLCBzdGF0ZSwgdGFpbClcbiAgICAgICAgICBwZXJ0LlByaW1pdGl2ZXMuZWZmZWN0XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIGZhbHNlIGluXG4gICAgICBsZXQgYWxpdmUgPVxuICAgICAgICBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgY291bnRlciBncmFwaCAoZnN0IHBlcnQuUHJpbWl0aXZlcy5yZXBlYXQpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgYWxpdmUgJiYgcGVydC5QcmltaXRpdmVzLmFsYXJtID0gTm9uZSB0aGVuXG4gICAgICAgICAgc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIDwtIGkgOjogc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4oaSkgPC0gYWxpdmUgaW5cbiAgICAgIGxldCBtaXhfY2hhbmdlZCcgPSBtaXhfY2hhbmdlZCB8fCBwZXJ0LlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrIGluXG4gICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBtaXhfY2hhbmdlZCdcbiAgICAgIGVsc2VcbiAgICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBtaXhfY2hhbmdlZCcgdGFpbCdcbiAgICApIGVsc2VcbiAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgIG1peF9jaGFuZ2VkIHRhaWxcblxubGV0IGRvX21vZGlmaWNhdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgbGlzdCA9XG4gIGxldCBzdG9wLCBncmFwaCwgc3RhdGUsIGV4dHJhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEpIGFzIGFjYykgZWZmZWN0IC0+XG4gICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgIGFjY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgICAgICAgICBlZmZlY3QpXG4gICAgICAoZmFsc2UsIGdyYXBoLCBzdGF0ZSwgW10pIGxpc3RcbiAgaW5cbiAgaWYgc3RvcCB0aGVuXG4gICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBmYWxzZVxuICBlbHNlXG4gICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgIGZhbHNlIGV4dHJhXG5cbmxldCBpbml0aWFsaXplIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGgwIHN0YXRlMFxuICAgIGluaXRfbCA9XG4gIGxldCBtZ3JhcGggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1zdGF0ZSAoYWxnLCBjb21waWxlZF9ydWxlKSAtPlxuICAgICAgICBiaW5kIG1zdGF0ZSAoZnVuIChzdG9wLCBzdGF0ZSwgc3RhdGUwKSAtPlxuICAgICAgICAgICAgbGV0IHZhbHVlID0gUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBzdGF0ZSBhbGcgaW5cbiAgICAgICAgICAgIGxldCBhY3Rpb25zID1cbiAgICAgICAgICAgICAgY29tcGlsZWRfcnVsZS5QcmltaXRpdmVzLmluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBjcmVhdGlvbnNfc29ydCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBsIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICh4LCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSB4IDo6IGxcbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF9cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICAgIFtdIGFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgKCBzdG9wLFxuICAgICAgICAgICAgICAgIE5ici5pdGVyaVxuICAgICAgICAgICAgICAgICAgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLmFwcGx5X2dpdmVuX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyIHMgKFRyYWNlLklOSVQgY3JlYXRpb25zX3NvcnQpIGNvbXBpbGVkX3J1bGVcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuU3VjY2VzcyBzIC0+IHNcbiAgICAgICAgICAgICAgICAgICAgfCBSdWxlX2ludGVycHJldGVyLkNsYXNoIHwgUnVsZV9pbnRlcnByZXRlci5Db3JyZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgfCBSdWxlX2ludGVycHJldGVyLkJsb2NrZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkJ1Z2dlZCBpbml0aWFsIHJ1bGVcIikpKVxuICAgICAgICAgICAgICAgICAgc3RhdGUgdmFsdWUsXG4gICAgICAgICAgICAgICAgc3RhdGUwICkpKVxuICAgICAgKHJldHVybiAoZmFsc2UsIGdyYXBoMCwgc3RhdGUwKSlcbiAgICAgIGluaXRfbFxuICBpblxuICBiaW5kIG1ncmFwaCAoZnVuIChfLCBncmFwaCwgc3RhdGUwKSAtPlxuICAgICAgbGV0IG1pZF9ncmFwaCwgXyA9XG4gICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICAgIGVudiBjb3VudGVyIGdyYXBoIFtdXG4gICAgICBpblxuICAgICAgbGV0IHN0b3AsIGdyYXBoLCBzdGF0ZSwgXyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIGkgKChzdG9wLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkKSBhcyBhY2MpIF8gLT5cbiAgICAgICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06dHJ1ZSBlbnYgY291bnRlciBncmFwaFxuICAgICAgICAgICAgICAgIHN0YXRlIG1peF9jaGFuZ2VkIFsgaSBdKVxuICAgICAgICAgIChmYWxzZSwgbWlkX2dyYXBoLCBzdGF0ZTAsIGZhbHNlKVxuICAgICAgICAgIHN0YXRlMC5wZXJ0dXJiYXRpb25zX2FsaXZlXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAoZnVuIGkgXyAtPiBzdGF0ZTAucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgICAgc3RhdGUwLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgICBpblxuICAgICAgcmV0dXJuIChzdG9wLCBncmFwaCwgc3RhdGUpKVxuXG5sZXQgb25lX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICBpbnN0YW5jZSA9XG4gIGxldCBwcmV2X2FjdGl2aXR5ID0gUnVsZV9pbnRlcnByZXRlci5hY3Rpdml0eSBncmFwaCBpblxuICBsZXQgYWN0X3N0YWNrID0gcmVmIFtdIGluXG4gIGxldCBmaW5hbGl6ZV9yZWdpc3RyYXRpb24gbXlfc3ludGF4X3JkX2lkID1cbiAgICBtYXRjaCBzdGF0ZS5mbHV4LCBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgd2l0aFxuICAgIHwgW10sIGZhbHNlIC0+ICgpXG4gICAgfCBsLCBfIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgdGhlblxuICAgICAgICAgIG91dHB1dHMgKERhdGEuRGVsdGFBY3Rpdml0aWVzIChteV9zeW50YXhfcmRfaWQsICFhY3Rfc3RhY2spKVxuICAgICAgaW5cbiAgICAgIGxldCBuX2FjdGl2aXR5ID0gUnVsZV9pbnRlcnByZXRlci5hY3Rpdml0eSBncmFwaCBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoXywgZmwpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBGbHV4bWFwLmluY3JfZmx1eF9oaXQgbXlfc3ludGF4X3JkX2lkIGZsIGluXG4gICAgICAgICAgICBtYXRjaCBmbC5EYXRhLmRpbl9raW5kIHdpdGhcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgLT4gKClcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPlxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoZnVuIChzeW50YXhfcmRfaWQsIChfLCBuZXdfYWN0KSkgLT5cbiAgICAgICAgICAgICAgICAgIEZsdXhtYXAuaW5jcl9mbHV4X2ZsdXggbXlfc3ludGF4X3JkX2lkIHN5bnRheF9yZF9pZFxuICAgICAgICAgICAgICAgICAgICAobGV0IGNhbmQgPSBuZXdfYWN0IC8uIG5fYWN0aXZpdHkgaW5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IGNhbmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBGUF9uYW4gfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBpbmZpbml0ZSAob3IgTmFOKSBhY3Rpdml0eSB2YXJpYXRpb24gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBpZ25vcmVkIGF0IHQ9JWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3QgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgMC5cbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBjYW5kKVxuICAgICAgICAgICAgICAgICAgICBmbClcbiAgICAgICAgICAgICAgICAhYWN0X3N0YWNrKVxuICAgICAgICAgIGxcbiAgICAgIGluXG4gICAgICBhY3Rfc3RhY2sgOj0gW11cbiAgaW5cbiAgKCogbGV0ICgpID0gKilcbiAgKCogICBGb3JtYXQuZXByaW50ZiBcIiVhQC5cIiAoUnVsZV9pbnRlcnByZXRlci5wcmludF9pbmplY3Rpb25zIGVudikgZ3JhcGggaW4gKilcbiAgbGV0IGFwcGxpZWRfcmlkX3N5bnRheCwgZmluYWxfc3RlcCwgZ3JhcGgnID1cbiAgICBSdWxlX2ludGVycHJldGVyLmFwcGx5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICBlbnYgY291bnRlciBncmFwaCBpbnN0YW5jZVxuICBpblxuICBtYXRjaCBhcHBsaWVkX3JpZF9zeW50YXggd2l0aFxuICB8IE5vbmUgLT4gZmluYWxfc3RlcCwgZ3JhcGgnLCBzdGF0ZVxuICB8IFNvbWUgc3ludGF4X3JpZCAtPlxuICAgIGxldCByZWdpc3Rlcl9uZXdfYWN0aXZpdHkgc3ludGF4X3JkX2lkIG9sZF9hY3QgbmV3X2FjdCA9XG4gICAgICBtYXRjaCBzdGF0ZS5mbHV4LCBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgd2l0aFxuICAgICAgfCBbXSwgZmFsc2UgLT4gKClcbiAgICAgIHwgbCwgXyAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGFjdF9zdGFjayA6PSAoc3ludGF4X3JkX2lkLCAob2xkX2FjdCwgbmV3X2FjdCkpIDo6ICFhY3Rfc3RhY2tcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoXywgZmwpIC0+XG4gICAgICAgICAgICBGbHV4bWFwLmluY3JfZmx1eF9mbHV4IHN5bnRheF9yaWQgc3ludGF4X3JkX2lkXG4gICAgICAgICAgICAgIChsZXQgY2FuZCA9XG4gICAgICAgICAgICAgICAgIG1hdGNoIGZsLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gbmV3X2FjdCAtLiBvbGRfYWN0XG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPiAtLihvbGRfYWN0IC8uIHByZXZfYWN0aXZpdHkpXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPlxuICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBvbGRfYWN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgKG5ld19hY3QgLS4gb2xkX2FjdCkgLy4gb2xkX2FjdFxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIG5ld19hY3QgLS4gb2xkX2FjdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IGNhbmQgd2l0aFxuICAgICAgICAgICAgICAgfCBGUF9uYW4gfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgIGxldCBjdCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBpbmZpbml0ZSAob3IgTmFOKSBhY3Rpdml0eSB2YXJpYXRpb24gaGFzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBpZ25vcmVkIGF0IHQ9JWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3QgKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgMC5cbiAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBjYW5kKVxuICAgICAgICAgICAgICBmbClcbiAgICAgICAgICBsXG4gICAgaW5cbiAgICBsZXQgZm9yY2VfdGVzdGVkID0gc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIGluXG4gICAgbGV0ICgpID0gc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIDwtIFtdIGluXG4gICAgbGV0IGdyYXBoJycsIGV4dHJhX3BlcnQgPVxuICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICByZWdpc3Rlcl9uZXdfYWN0aXZpdHkgZW52IGNvdW50ZXIgZ3JhcGgnIGZvcmNlX3Rlc3RlZFxuICAgIGluXG4gICAgbGV0ICgpID0gZmluYWxpemVfcmVnaXN0cmF0aW9uIHN5bnRheF9yaWQgaW5cbiAgICBsZXQgc3RvcCwgZ3JhcGgnJycsIHN0YXRlJywgX21peF9jaGFuZ2VkID1cbiAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoJycgc3RhdGVcbiAgICAgICAgZmFsc2UgZXh0cmFfcGVydFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSBfIC0+IHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKSA8LSB0cnVlKVxuICAgICAgICBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFs8dj5PYnRhaW5lZEAgJWFAXUAuXCJcbiAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5wcmludCBlbnYpXG4gICAgICAgICAgZ3JhcGgnJydcbiAgICBpblxuICAgIGZpbmFsX3N0ZXAgfHwgc3RvcCwgZ3JhcGgnJycsIHN0YXRlJ1xuXG5sZXQgcmVjIHBlcnR1cmJhdGVfdW50aWxfZmlyc3RfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIGVudiBjb3VudGVyIH5vdXRwdXRzXG4gICAgKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZHQpID1cbiAgbWF0Y2ggc3RhdGUuc3RvcHBpbmdfdGltZXMgd2l0aFxuICB8IFtdIC0+IHN0b3AsIGdyYXBoLCBzdGF0ZSwgZHQsIGZhbHNlXG4gIHwgKHRpLCBwZSkgOjogdGFpbCAtPlxuICAgIGlmIE5ici5pc19zbWFsbGVyIHRpIChOYnIuRiAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciArLiBkdCkpIHRoZW4gKFxuICAgICAgbGV0IHBlcnQgPSBNb2RlbC5nZXRfcGVydHVyYmF0aW9uIGVudiBwZSBpblxuICAgICAgaWYgbm90IHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgdGhlbiAoXG4gICAgICAgIGxldCBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIGR0JyA9XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE5ici50b19mbG9hdCAoTmJyLnN1YiB0aSAoTmJyLkYgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpKSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhbHNlLCBncmFwaCwgc3RhdGUsIGR0XG4gICAgICAgICAgfCBTb21lIGR0aSAtPlxuICAgICAgICAgICAgbGV0IGR0JyA9IGR0IC0uIGR0aSBpblxuICAgICAgICAgICAgKCpzZXQgdGltZSBmb3IgcGVydHVyYmF0ZSAqKVxuICAgICAgICAgICAgaWYgQ291bnRlci5vbmVfdGltZV9hZHZhbmNlIGNvdW50ZXIgZHRpIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBfID1cbiAgICAgICAgICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgICAgICBzdGF0ZSBmYWxzZSBbIHBlIF1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRhaWwnID1cbiAgICAgICAgICAgICAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0YWlsXG4gICAgICAgICAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICAgICAgICAgIGlmIHN0YXRlLnBlcnR1cmJhdGlvbnNfYWxpdmUuKHBlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIExpc3RfdXRpbC5tZXJnZV91bmlxIGNvbXBhcmVfc3RvcHMgWyBOYnIuYWRkIHRpIG4sIHBlIF0gdGFpbFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0YWlsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlJy5zdG9wcGluZ190aW1lcyA8LSB0YWlsJyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKHBlKSA8LSB0cnVlIGluXG4gICAgICAgICAgICAgICgqIEFyZ3VtZW50IHRvIHJlc2V0IG9ubHkgcGUgYW5kIG5vdCBhbGwgcGVydHMgaXMgXCJpZlxuICAgICAgICAgICAgICAgICB5b3UncmUgbm90IGJhY2t0cmFja2luZywgbm90aGluZyBkZXBlbmRzIHVwb25cbiAgICAgICAgICAgICAgICAgeW91XCIuLi4gV2UnZCBiZXR0ZXIgZ2V0IHN1cmUgb2YgdGhhdCA6LSkgKilcbiAgICAgICAgICAgICAgc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBkdCdcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICB0cnVlLCBncmFwaCwgc3RhdGUsIGR0J1xuICAgICAgICBpblxuXG4gICAgICAgIHBlcnR1cmJhdGVfdW50aWxfZmlyc3RfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIGVudiBjb3VudGVyIH5vdXRwdXRzXG4gICAgICAgICAgKHN0b3AnLCBncmFwaCcsIHN0YXRlJywgZHQnKVxuICAgICAgICAoKiBpZiBzb21lIHBlcnR1cmJhdGlvbiBuZWVkcyBiYWNrdHJhY2ssIHJldHVybiB0aGUgcGVydHVyYmF0aW9uICopXG4gICAgICApIGVsc2VcbiAgICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgdHJ1ZVxuICAgICkgZWxzZVxuICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgZmFsc2VcblxubGV0IHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBmdW5jdGlvblxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8ICh0aSwgcGUpIDo6IHRhaWwgLT5cbiAgICBsZXQgdGFpbCcgPVxuICAgICAgbWF0Y2ggKE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlKS5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0YWlsXG4gICAgICB8IFNvbWUgbiAtPiBMaXN0X3V0aWwubWVyZ2VfdW5pcSBjb21wYXJlX3N0b3BzIFsgTmJyLmFkZCB0aSBuLCBwZSBdIHRhaWxcbiAgICBpblxuICAgIGxldCAoKSA9IHN0YXRlLnN0b3BwaW5nX3RpbWVzIDwtIHRhaWwnIGluXG4gICAgaWYgQ291bnRlci5vbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IH50aSBjb3VudGVyIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICAgICAgbGV0IGNhbmQgPVxuICAgICAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjYW5kID4gMSB0aGVuIG91dHB1dHMgKERhdGEuUGxvdCBjYW5kKVxuICAgICAgICBpblxuICAgICAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHQ6MC5cbiAgICAgIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIF8gPVxuICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgICAgZmFsc2UgWyBwZSBdXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAoZnVuIGkgXyAtPiBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgICAgc3RhdGUnLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgICBpblxuICAgICAgc3RvcCwgZ3JhcGgnLCBzdGF0ZSdcbiAgICApIGVsc2VcbiAgICAgIHRydWUsIGdyYXBoLCBzdGF0ZVxuXG5sZXQgcmVndWxhcl9sb29wX2JvZHkgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXJcbiAgICBncmFwaCBzdGF0ZSBkdCA9XG4gIGxldCAoKSA9XG4gICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICBsZXQgY2FuZCA9XG4gICAgICAgIG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggKENvdW50ZXIuZmFrZV90aW1lIGNvdW50ZXInIHRpbWUpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgaW5cbiAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHRcbiAgaW5cbiAgbGV0IGNvbnRpbnVlID0gQ291bnRlci5vbmVfdGltZV9hZHZhbmNlIGNvdW50ZXIgZHQgaW5cbiAgbGV0IHBpY2tlZF9pbnN0YW5jZSA9XG4gICAgUnVsZV9pbnRlcnByZXRlci5waWNrX2FuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIGVudiBncmFwaFxuICBpblxuICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIG1peF9jaGFuZ2VkID1cbiAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgZmFsc2Ugc3RhdGUudGltZV9kZXBlbmRlbnRfcGVydHNcbiAgaW5cbiAgaWYgKG5vdCBjb250aW51ZSkgfHwgc3RvcCB0aGVuXG4gICAgdHJ1ZSwgZ3JhcGgnLCBzdGF0ZSdcbiAgZWxzZSBpZlxuICAgIChub3QgbWl4X2NoYW5nZWQpXG4gICAgfHwgUnVsZV9pbnRlcnByZXRlci5pc19jb3JyZWN0X2luc3RhbmNlIGVudiBncmFwaCcgcGlja2VkX2luc3RhbmNlXG4gIHRoZW5cbiAgICBvbmVfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCcgc3RhdGUnXG4gICAgICBwaWNrZWRfaW5zdGFuY2VcbiAgZWxzZVxuICAgIENvdW50ZXIub25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCBjb3VudGVyLCBncmFwaCcsIHN0YXRlJ1xuXG5sZXQgYV9sb29wIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5kdW1wSWZEZWFkbG9ja2VkIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudlxuICAgIGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBsZXQgYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gIGxldCByZCA9IFJhbmRvbS5TdGF0ZS5mbG9hdCAoUnVsZV9pbnRlcnByZXRlci5nZXRfcmFuZG9tX3N0YXRlIGdyYXBoKSAxLjAgaW5cbiAgbGV0IGR0ID0gYWJzX2Zsb2F0IChsb2cgcmQgLy4gYWN0aXZpdHkpIGluXG5cbiAgbGV0IG91dCA9XG4gICAgKCpBY3Rpdml0eSBpcyBudWxsIG9yIGR0IGlzIGluZmluaXRlKilcbiAgICBpZiAobm90IChhY3Rpdml0eSA+IDAuKSkgfHwgY2xhc3NpZnlfZmxvYXQgZHQgPSBGUF9pbmZpbml0ZSB0aGVuXG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKF8sIHBlKSAtPlxuICAgICAgICAgICAgKE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlKS5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjaylcbiAgICAgICAgICBzdGF0ZS5zdG9wcGluZ190aW1lc1xuICAgICAgdGhlblxuICAgICAgICBwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgICAgc3RhdGUuc3RvcHBpbmdfdGltZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGR1bXBJZkRlYWRsb2NrZWQgdGhlblxuICAgICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAgICAgICAoIFwiZGVhZGxvY2sua2FcIixcbiAgICAgICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLnNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXc6ZmFsc2UgZW52IGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgIGdyYXBoICkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICAgIFwiQSBkZWFkbG9jayB3YXMgcmVhY2hlZCBhZnRlciAlZCBldmVudHMgYW5kICVFcyAoQWN0aXZpdHkgXFxcbiAgICAgICAgICAgICAgICAgICAgICA9ICUuNWYpXCJcbiAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHkgKSlcbiAgICAgICAgaW5cbiAgICAgICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlXG4gICAgICApXG4gICAgZWxzZSAoXG4gICAgICAoKmFjdGl2aXR5IGlzIHBvc2l0aXZlKilcbiAgICAgIG1hdGNoIHN0YXRlLnN0b3BwaW5nX3RpbWVzIHdpdGhcbiAgICAgIHwgKHRpLCBfKSA6OiBfXG4gICAgICAgIHdoZW4gTmJyLmlzX3NtYWxsZXIgdGkgKE5ici5GIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyICsuIGR0KSkgLT5cbiAgICAgICAgbGV0IHN0b3AsIGdyYXBoJywgc3RhdGUnLCBkdCcsIG5lZWRzX2JhY2t0cmFjayA9XG4gICAgICAgICAgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAgICAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCBkdClcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmVlZHNfYmFja3RyYWNrIHRoZW5cbiAgICAgICAgICBwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoJ1xuICAgICAgICAgICAgc3RhdGUnIHN0YXRlJy5zdG9wcGluZ190aW1lc1xuICAgICAgICBlbHNlIGlmIHN0b3AgdGhlblxuICAgICAgICAgIHN0b3AsIGdyYXBoJywgc3RhdGUnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnZcbiAgICAgICAgICAgIGNvdW50ZXIgZ3JhcGgnIHN0YXRlJyBkdCdcbiAgICAgIHwgXyAtPlxuICAgICAgICByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlclxuICAgICAgICAgIGdyYXBoIHN0YXRlIGR0XG4gICAgKVxuICBpblxuICBvdXRcblxubGV0IGVuZF9vZl9zaW11bGF0aW9uIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlID1cbiAgbGV0IF8gPSBzdGF0ZS5pbml0X3N0b3BwaW5nX3RpbWVzIGluXG4gIGxldCAoKSA9XG4gICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICBsZXQgY2FuZCA9XG4gICAgICAgIG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggKENvdW50ZXIuZmFrZV90aW1lIGNvdW50ZXInIHRpbWUpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgaW5cbiAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHQ6MC5cbiAgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAobmFtZSwgZSkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgIFwiVHJhY2tpbmcgRElOIGludG8gXFxcIiVzXFxcIiB3YXMgbm90IHN0b3BwZWQgYmVmb3JlIGVuZCBvZiBcXFxuICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lICkpXG4gICAgICBpblxuICAgICAgb3V0cHV0cyAoRGF0YS5ESU4gKG5hbWUsIEZsdXhtYXAuc3RvcF9mbHV4IGVudiBjb3VudGVyIGUpKSlcbiAgICBzdGF0ZS5mbHV4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXRlID0ge1xuICBncmFwaDogRWRnZXMudDtcbiAgdGltZTogZmxvYXQ7XG4gIGV2ZW50OiBpbnQ7XG4gIGNvbm5lY3RlZF9jb21wb25lbnRzOiBBZ2VudC5TZXRNYXAuU2V0LnQgTW9kcy5JbnRNYXAudCBvcHRpb247XG59XG5cbnR5cGUgc3VtbWFyeSA9IHsgdW5hcnlfZGlzdGFuY2VzOiAoaW50ICogaW50KSBvcHRpb24gfVxuXG5sZXQgaW5pdF9zdGF0ZSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gIHtcbiAgICBncmFwaCA9IEVkZ2VzLmVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgIHRpbWUgPSAwLjtcbiAgICBldmVudCA9IDA7XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgKGlmIHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgdGhlblxuICAgICAgICAgU29tZSBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgIGVsc2VcbiAgICAgICAgIE5vbmUpO1xuICB9XG5cbmxldCBjY19vZl9hZ2VudCBhZyBlIHdvcmsgPVxuICBsZXQgcmVjIGZvbGRfYXJpdHlfbGlzdCBmIHggYXJpdHkgYWNjID1cbiAgICBpZiB4ID0gYXJpdHkgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgZm9sZF9hcml0eV9saXN0IGYgKHN1Y2MgeCkgYXJpdHkgKGYgYWNjIHgpXG4gIGluXG5cbiAgbGV0IGFkZF9hZ2VudCBhIGUgKHdvcmssIG1vcnBoaXNtLCB0b2RvcykgPVxuICAgIGxldCBhaWQgPSBBZ2VudC5pZCBhIGluXG4gICAgbGV0IGF0eXBlID0gQWdlbnQuc29ydCBhIGluXG4gICAgbGV0IGFyaXR5ID0gRWRnZXMuZ2V0X3NpdGVzIGFpZCBlIGluXG4gICAgbGV0IHdfYWdlbnQsIHdvcmsnID0gUGF0dGVybi5uZXdfbm9kZSB3b3JrIGF0eXBlIGluXG4gICAgbGV0IHRvZG9zJyA9IGZvbGRfYXJpdHlfbGlzdCAoZnVuIGFjYyB4IC0+IChhaWQsIHgpIDo6IGFjYykgMCBhcml0eSB0b2RvcyBpblxuICAgIGxldCB3b3JrJycgPVxuICAgICAgZm9sZF9hcml0eV9saXN0XG4gICAgICAgIChmdW4gdyB4IC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWwgPSBFZGdlcy5nZXRfaW50ZXJuYWwgYWlkIHggZSBpblxuICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgdyAod19hZ2VudCwgeCkgaW50ZXJuYWxcbiAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiB3KVxuICAgICAgICAwIGFyaXR5IHdvcmsnXG4gICAgaW5cbiAgICB3X2FnZW50LCB3b3JrJycsIChhaWQsIHdfYWdlbnQpIDo6IG1vcnBoaXNtLCB0b2RvcydcbiAgaW5cblxuICBsZXQgYWRkX2xpbmtzICh3b3JrLCBtb3JwaGlzbSwgdG9kb3MpIChhaWQsIHgpIGUgPVxuICAgIGxldCBfLCB3X2FnZW50ID0gTGlzdC5maW5kIChmdW4gKGlkLCBfKSAtPiBpZCA9IGFpZCkgbW9ycGhpc20gaW5cbiAgICBsZXQgbm90X2FnZW50IChpZCwgcykgPSBub3QgKGlkID0gYWlkICYmIHggPSBzKSBpblxuICAgIG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gYWlkIHggZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgd29yaycgPSBQYXR0ZXJuLm5ld19mcmVlIHdvcmsgKHdfYWdlbnQsIHgpIGluXG4gICAgICBsZXQgdG9kb3MnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50IHRvZG9zIGluXG4gICAgICB3b3JrJywgbW9ycGhpc20sIHRvZG9zJ1xuICAgIHwgU29tZSAoYiwgeSkgLT5cbiAgICAgIGxldCBiaWQgPSBBZ2VudC5pZCBiIGluXG4gICAgICBsZXQgbm90X2FnZW50cyAoaWQsIHMpID1cbiAgICAgICAgbm90X2FnZW50IChpZCwgcykgJiYgbm90IChpZCA9IEFnZW50LmlkIGIgJiYgcyA9IHkpXG4gICAgICBpblxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IF8sIHdiX2FnZW50ID0gTGlzdC5maW5kIChmdW4gKGlkLCBfKSAtPiBpZCA9IGJpZCkgbW9ycGhpc20gaW5cbiAgICAgICAgIGxldCB3b3JrJyA9IFBhdHRlcm4ubmV3X2xpbmsgd29yayAod19hZ2VudCwgeCkgKHdiX2FnZW50LCB5KSBpblxuICAgICAgICAgbGV0IHRvZG9zJyA9IExpc3QuZmlsdGVyIG5vdF9hZ2VudHMgdG9kb3MgaW5cbiAgICAgICAgIHdvcmsnLCBtb3JwaGlzbSwgdG9kb3MnXG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIGxldCB3Yl9hZ2VudCwgd29yaycsIG1vcnBoaXNtJywgdG9kb3MnID1cbiAgICAgICAgICAgYWRkX2FnZW50IGIgZSAod29yaywgbW9ycGhpc20sIHRvZG9zKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCB3b3JrJycgPSBQYXR0ZXJuLm5ld19saW5rIHdvcmsnICh3X2FnZW50LCB4KSAod2JfYWdlbnQsIHkpIGluXG4gICAgICAgICBsZXQgdG9kb3MnJyA9IExpc3QuZmlsdGVyIG5vdF9hZ2VudHMgdG9kb3MnIGluXG4gICAgICAgICB3b3JrJycsIG1vcnBoaXNtJywgdG9kb3MnJylcbiAgaW5cblxuICBsZXQgcmVjIHdvcmtpbmdfdG9kbyAod29yaywgbW9ycGhpc20sIHRvZG8pID1cbiAgICBtYXRjaCB0b2RvIHdpdGhcbiAgICB8IFtdIC0+IG1vcnBoaXNtLCB3b3JrXG4gICAgfCBwb3J0IDo6IF8gLT5cbiAgICAgIGxldCB3b3JrJywgbW9ycGhpc20nLCB0b2RvJyA9IGFkZF9saW5rcyAod29yaywgbW9ycGhpc20sIHRvZG8pIHBvcnQgZSBpblxuICAgICAgd29ya2luZ190b2RvICh3b3JrJywgbW9ycGhpc20nLCB0b2RvJylcbiAgaW5cblxuICBsZXQgXywgdywgbSwgdCA9IGFkZF9hZ2VudCBhZyBlICh3b3JrLCBbXSwgW10pIGluXG4gIHdvcmtpbmdfdG9kbyAodywgbSwgdClcblxubGV0IGNjX29mX3N0YXRlIH5kZWJ1Z19tb2RlIHMgZW52ID1cbiAgbGV0IGNjX29mX3Jvb3QgYWdlbnQgZScgPVxuICAgIGxldCB3b3JrID0gUGF0dGVybi5iZWdpbl9uZXcgZScgaW5cbiAgICBsZXQgbW9ycGhpc20sIHdvcmsnID0gY2Nfb2ZfYWdlbnQgYWdlbnQgcy5ncmFwaCB3b3JrIGluXG4gICAgbGV0IGVuLCBfLCBjLCBpID0gUGF0dGVybi5maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIHdvcmsnIGluXG4gICAgZW4sIExpc3QubWFwIChmdW4gKGNpZCwgKGFpZCwgXykpIC0+IGNpZCwgYWlkKSBtb3JwaGlzbSwgYywgaVxuICBpblxuICBtYXRjaCBzLmNvbm5lY3RlZF9jb21wb25lbnRzIHdpdGhcbiAgfCBTb21lIGNjX21hcHMgLT5cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHJvb3QgY2NfbWFwIChlLCBhY2MpIC0+XG4gICAgICAgIEFnZW50LlNldE1hcC5TZXQuZm9sZFxuICAgICAgICAgIChmdW4gYWdlbnQgKGUnLCBhY2MnKSAtPlxuICAgICAgICAgICAgaWYgQWdlbnQuaWQgYWdlbnQgPSByb290IHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZW4sIHIsIGMsIGkgPSBjY19vZl9yb290IGFnZW50IGUnIGluXG4gICAgICAgICAgICAgIGVuLCAociwgYywgaSkgOjogYWNjJ1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGUnLCBhY2MnKVxuICAgICAgICAgIGNjX21hcCAoZSwgYWNjKSlcbiAgICAgIGNjX21hcHMgKGVudiwgW10pXG4gIHwgTm9uZSAtPiBlbnYsIFtdXG5cbmxldCBicmVha19hcGFydF9jYyBncmFwaCBjY3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gY2NzXG4gIHwgU29tZSAob3JpZ2luX2NjLCBuZXdfY2MpIC0+XG4gICAgbGV0IHNldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBBZ2VudC5TZXRNYXAuU2V0LmVtcHR5IG9yaWdpbl9jYyBjY3MgaW5cbiAgICBpZiBBZ2VudC5TZXRNYXAuU2V0LmlzX2VtcHR5IHNldCB0aGVuXG4gICAgICBjY3NcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2V0LCBvc2V0JyA9XG4gICAgICAgIEFnZW50LlNldE1hcC5TZXQucGFydGl0aW9uXG4gICAgICAgICAgKGZ1biAoeCwgXykgLT4gRWRnZXMuZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgeCBncmFwaCA9IFNvbWUgbmV3X2NjKVxuICAgICAgICAgIHNldFxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBuZXdfY2MgbnNldCAoTW9kcy5JbnRNYXAuYWRkIG9yaWdpbl9jYyBvc2V0JyBjY3MpXG4gICAgKVxuXG5sZXQgbWVyZ2VfY2MgY2NzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGNjc1xuICB8IFNvbWUgKGNjMSwgY2MyKSAtPlxuICAgIGxldCBzZXQxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IEFnZW50LlNldE1hcC5TZXQuZW1wdHkgY2MxIGNjcyBpblxuICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgY2MyIGNjcyB3aXRoXG4gICAgfCBOb25lLCBfIC0+IGNjc1xuICAgIHwgU29tZSBzZXQyLCBjY3MnIC0+XG4gICAgICBNb2RzLkludE1hcC5hZGQgY2MxIChBZ2VudC5TZXRNYXAuU2V0LnVuaW9uIHNldDEgc2V0MikgY2NzJylcblxubGV0IGRvX25lZ2F0aXZlX3BhcnQgKChhLCBfKSwgcykgKGdyYXBoLCBjY3MpID1cbiAgbWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBhIHMgZ3JhcGggd2l0aFxuICB8IE5vbmUgLT4gRWRnZXMucmVtb3ZlX2ZyZWUgYSBzIGdyYXBoLCBjY3NcbiAgfCBTb21lICgoYScsIF8pLCBzJykgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY19jaGFuZ2UgPSBFZGdlcy5yZW1vdmVfbGluayBhIHMgYScgcycgZ3JhcGggaW5cbiAgICAoIGdyYXBoJyxcbiAgICAgIChtYXRjaCBjY3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MgLT4gU29tZSAoYnJlYWtfYXBhcnRfY2MgZ3JhcGgnIGNjcyBjY19jaGFuZ2UpKSApXG5cbmxldCBkb19hY3Rpb24gc2lncyAoKGdyYXBoLCBjY3MpIGFzIHBhY2spID0gZnVuY3Rpb25cbiAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChpZCwgdHkpIGFzIGFnKSwgX2dyYXBocykgLT5cbiAgICAoIHNuZCBAQCBFZGdlcy5hZGRfYWdlbnQgfmlkIHNpZ3MgdHkgZ3JhcGgsXG4gICAgICBPcHRpb25fdXRpbC5tYXAgKE1vZHMuSW50TWFwLmFkZCBpZCAoQWdlbnQuU2V0TWFwLlNldC5zaW5nbGV0b24gYWcpKSBjY3MgKVxuICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoKGEsIF8pLCBzKSwgaSkgLT5cbiAgICBFZGdlcy5hZGRfaW50ZXJuYWwgYSBzIGkgZ3JhcGgsIGNjc1xuICB8IEluc3RhbnRpYXRpb24uQmluZCAoKChhMSwgczEpIGFzIHgxKSwgKChhMiwgczIpIGFzIHgyKSlcbiAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKCgoYTEsIHMxKSBhcyB4MSksICgoYTIsIHMyKSBhcyB4MikpIC0+XG4gICAgbGV0IGdyYXBoJywgY2NzJyA9IGRvX25lZ2F0aXZlX3BhcnQgeDIgKGRvX25lZ2F0aXZlX3BhcnQgeDEgcGFjaykgaW5cbiAgICBsZXQgZ3JhcGgnJywgY2NfY2hhbmdlID0gRWRnZXMuYWRkX2xpbmsgYTEgczEgYTIgczIgZ3JhcGgnIGluXG4gICAgKCBncmFwaCcnLFxuICAgICAgKG1hdGNoIGNjcycgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MnIC0+IFNvbWUgKG1lcmdlX2NjIGNjcycgY2NfY2hhbmdlKSkgKVxuICB8IEluc3RhbnRpYXRpb24uRnJlZSAoKChhLCBfKSwgcykgYXMgeCkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID0gZG9fbmVnYXRpdmVfcGFydCB4IHBhY2sgaW5cbiAgICBFZGdlcy5hZGRfZnJlZSBhIHMgZ3JhcGgnLCBjY3MnXG4gIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgKChpZCwgdHkpIGFzIGEpIC0+XG4gICAgbGV0IGdyYXBoJywgY2NzJyA9XG4gICAgICBUb29scy5yZWN0aVxuICAgICAgICAoZnVuIHN0IHMgLT4gZG9fbmVnYXRpdmVfcGFydCAoYSwgcykgc3QpXG4gICAgICAgIHBhY2sgKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KVxuICAgIGluXG4gICAgKG1hdGNoIGNjcycgd2l0aFxuICAgIHwgTm9uZSAtPiBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZ3JhcGgnLCBOb25lXG4gICAgfCBTb21lIGNjcycgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaWQgY2NzJyB3aXRoXG4gICAgICB8IE5vbmUsIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgeCwgY2NzJycgLT5cbiAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChBZ2VudC5TZXRNYXAuU2V0LmlzX3NpbmdsZXRvbiB4KSBpblxuICAgICAgICBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZ3JhcGgnLCBTb21lIGNjcycnKSlcblxubGV0IGludm9sdmVkX2FnZW50cyBsID1cbiAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGEgLT4gU29tZSBhXG4gICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgX1xuICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF8gLT5cbiAgICAgICAgTm9uZSlcbiAgICBsXG5cbmxldCBzdG9yZV9kaXN0YW5jZXMgciBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbIF8gXSB8IF8gOjogXyA6OiBfIDo6IF8gLT4gTm9uZVxuICB8IFsgY2MxOyBjYzIgXSAtPlxuICAgIGxldCBjYzFfYWdzID0gaW52b2x2ZWRfYWdlbnRzIGNjMSBpblxuICAgIGxldCBjYzJfYWdzID0gaW52b2x2ZWRfYWdlbnRzIGNjMiBpblxuICAgIChtYXRjaCBFZGdlcy5hcmVfY29ubmVjdGVkIGdyYXBoIGNjMV9hZ3MgY2MyX2FncyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcGF0aCAtPiBTb21lIChyLCBMaXN0Lmxlbmd0aCBwYXRoKSlcblxubGV0IHRlc3RfcGFzc19vbiBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+IEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChhZywgcyksIHN0KSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIEVkZ2VzLmlzX2ludGVybmFsIHN0IChBZ2VudC5pZCBhZykgcyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSAoYWcsIHMpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgRWRnZXMuaXNfZnJlZSAoQWdlbnQuaWQgYWcpIHMgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIChhZywgcykgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBub3QgKEVkZ2VzLmlzX2ZyZWUgKEFnZW50LmlkIGFnKSBzIGdyYXBoKVxuICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKChhZywgcyksIChhZycsIHMnKSkgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBFZGdlcy5pc19hZ2VudCBhZycgZ3JhcGhcbiAgICAmJiBFZGdlcy5saW5rX2V4aXN0cyAoQWdlbnQuaWQgYWcpIHMgKEFnZW50LmlkIGFnJykgcycgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKChhZywgcyksIChhZ190eSwgcycpKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoXG4gICAgJiZcbiAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiAoQWdlbnQuaWQgYWcpIHMgZ3JhcGggd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSAoKF8sIGRzdF9hZ190eSksIGRzdF9zKSAtPiBkc3RfYWdfdHkgPSBhZ190eSAmJiBkc3RfcyA9IHMnKVxuXG5sZXQgdGVzdHNfcGFzc19vbiBncmFwaCB0ZXN0cyA9XG4gIExpc3QuZm9yX2FsbCAodGVzdF9wYXNzX29uIGdyYXBoKSAoTGlzdC5jb25jYXQgdGVzdHMpXG5cbmxldCBpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5EdW1teSBfIC0+IHRydWVcbiAgfCBUcmFjZS5SdWxlIChfciwgZXZlbnQsIF9pbmZvKSAtPlxuICAgIHRlc3RzX3Bhc3Nfb24gZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+IHRlc3RzX3Bhc3Nfb24gZ3JhcGggdGVzdHNcblxubGV0IGlzX3N0ZXBfdHJpZ2dlcmFibGUgc3RhdGUgPSBpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIHN0YXRlLmdyYXBoXG5cbigqIFRoZXJlIGlzIGEgc3VidGVsdHkgd2hlbiBleGVjdXRpbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zLiBJbmRlZWQsXG4gICB3aGVuZXZlciBhIHJ1bGUgYm90aCBjcmVhdGVzIGFuZCByZW1vdmVzIGFnZW50cywgdGhlcmUgaXMgY3VycmVudGx5XG4gICBubyBndWFyYW50ZWUgdGhhdCB0aGUgY3JlYXRpb24gYWN0aW9ucyBhcmUgcGxhY2VkIGJlZm9yZSB0aGUgcmVtb3ZhbFxuICAgYWN0aW9ucyBpbiBbZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXS4gVGhpcyBjYW4gYmUgYW4gaXNzdWUgaW4gYVxuICAgY2FzZSB3aGVyZSBhbiBldmVudCBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHR3byBhY3Rpb25zIGZvciBleGFtcGxlOlxuICAgW1wiY3JlYXRlIGFnZW50IHdpdGggaWQgOFwiLCBcInJlbW92ZSBhZ2VudCB3aXRoIGlkIDhcIl0uIEluIHRoaXMgY2FzZSxcbiAgIGFnZW50IGlkIDggaXMgbm90IGF2YWlsYWJsZSB3aGVuIHRoZSBjcmVhdGlvbiBhY3Rpb24gaXMgcGVyZm9ybWVkIGFuZFxuICAgc28gdGhlIFtFZGdlc10gbW9kdWxlIHRocm93cyBhbiBleGNlcHRpb24uXG5cbiAgIEFzIGEgdGVtcG9yYXJ5IGZpeCwgd2UgbWFrZSBzdXJlIHRoYXQgYWxsIGRlbGV0aW9uIGFjdGlvbnMgYXJlXG4gICBleGVjdXRlZCBmaXJzdC4gVGhpcyBpbXBsaWNpdGx5IGFzc3VtZXMgdGhhdCBhIHN0ZXAgZGVsZXRpbmcgYW4gYWdlbnRcbiAgIGNhbm5vdCBwZXJmb3JtIGFueSBvdGhlciBhY3Rpb24gaW52b2x2aW5nIHRoaXMgYWdlbnQuXG5cbiAgIFRPRE86IFNob3VsZG4ndCB3ZSByYXRoZXIgZW5zdXJlIHRoYXQgYWN0aW9ucyBhcmUgcHJvcGVybHkgc29ydGVkIGluXG4gICB0aGUgdHJhY2UgZmlsZSBpbiB0aGUgZmlyc3QgcGxhY2U/ICopXG5sZXQgZG9fYWN0aW9ucyBzaWdzIHN0IGFjdGlvbnMgPVxuICBsZXQgaXNfcmVtb3ZhbCA9XG4gICAgbGV0IG9wZW4gSW5zdGFudGlhdGlvbiBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBSZW1vdmUgXyAtPiB0cnVlXG4gICAgfCBDcmVhdGUgXyB8IE1vZF9pbnRlcm5hbCBfIHwgQmluZCBfIHwgQmluZF90byBfIHwgRnJlZSBfIC0+IGZhbHNlXG4gIGluXG4gIGxldCByZW1vdmFscywgb3RoZXJzID0gTGlzdC5wYXJ0aXRpb24gaXNfcmVtb3ZhbCBhY3Rpb25zIGluXG4gIGxldCBkb19pbl9vcmRlciBhY3Rpb25zIHN0ID0gTGlzdC5mb2xkX2xlZnQgKGRvX2FjdGlvbiBzaWdzKSBzdCBhY3Rpb25zIGluXG4gIHN0IHw+IGRvX2luX29yZGVyIHJlbW92YWxzIHw+IGRvX2luX29yZGVyIG90aGVyc1xuXG5sZXQgZG9fc3RlcCBzaWdzIHN0YXRlID0gZnVuY3Rpb25cbiAgfCBUcmFjZS5TdWJzIF8gLT4gc3RhdGUsIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9XG4gIHwgVHJhY2UuUnVsZSAoa2luZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgbGV0IHVuYXJ5X2Rpc3RhbmNlcyA9XG4gICAgICBpZiBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cyA9IE5vbmUgdGhlblxuICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIHN0b3JlX2Rpc3RhbmNlcyBraW5kIHN0YXRlLmdyYXBoIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgICBpblxuICAgIGxldCBwcmVncmFwaCwgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgZG9fYWN0aW9ucyBzaWdzXG4gICAgICAgIChzdGF0ZS5ncmFwaCwgc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHMpXG4gICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGdyYXBoID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZ3JhcGggKChpZCwgXyksIHMpIC0+IEVkZ2VzLmFkZF9mcmVlIGlkIHMgZ3JhcGgpXG4gICAgICAgIHByZWdyYXBoIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuICAgIGluXG4gICAgKCB7XG4gICAgICAgIGdyYXBoO1xuICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgICAgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQ7XG4gICAgICB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgfSApXG4gIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIGluZm8pIC0+XG4gICAgbGV0IHByZWdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3NcbiAgICAgICAgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cylcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgZ3JhcGggPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBncmFwaCAoKGlkLCBfKSwgcykgLT4gRWRnZXMuYWRkX2ZyZWUgaWQgcyBncmFwaClcbiAgICAgICAgcHJlZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGg7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgICB0aW1lID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgZXZlbnQgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudDtcbiAgICAgIH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfSApXG4gIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgbGV0IGdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3MgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cykgYWN0aW9uc1xuICAgIGluXG4gICAgKCB7IGdyYXBoOyBjb25uZWN0ZWRfY29tcG9uZW50czsgdGltZSA9IHN0YXRlLnRpbWU7IGV2ZW50ID0gc3RhdGUuZXZlbnQgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5PYnMgKF8sIF8sIGluZm8pIC0+XG4gICAgKCB7XG4gICAgICAgIGdyYXBoID0gc3RhdGUuZ3JhcGg7XG4gICAgICAgIHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lO1xuICAgICAgICBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9IHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5EdW1teSBfIC0+IHN0YXRlLCB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzeW50YXhfdmVyc2lvbiA9IFYzIHwgVjRcblxubGV0IG1lcmdlX3ZlcnNpb24gYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgVjQsIF8gfCBfLCBWNCAtPiBWNFxuICB8IFYzLCBWMyAtPiBWM1xuXG50eXBlIGludGVybmFsID0gc3RyaW5nIG9wdGlvbiBMb2MuYW5ub3RlZCBsaXN0XG5cbnR5cGUgcG9ydCA9IHtcbiAgcG9ydF9uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIHBvcnRfaW50OiBpbnRlcm5hbDtcbiAgcG9ydF9pbnRfbW9kOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uO1xuICBwb3J0X2xpbms6IChzdHJpbmcgTG9jLmFubm90ZWQsIHVuaXQpIExLYXBwYS5saW5rIExvYy5hbm5vdGVkIGxpc3Q7XG4gIHBvcnRfbGlua19tb2Q6IGludCBMb2MuYW5ub3RlZCBvcHRpb24gb3B0aW9uO1xufVxuXG4oKiBUT0RPIGNoYW5nZSBuYW1lLCBDVkFSIGlzIG5vdCBhIHRlc3Q/ICopXG4oKiBUT0RPIGRpc2NyaW1pbmF0ZSBiZXR3ZWVuIGNvdW50ZXIgZGVmaW5pdGlvbiBhbmQgY291bnRlciB0ZXN0ID8gKilcbigqIFRPRE86IGNoYW5nZSB0aGlzIHRvIENUWVBFID0gQ1RFU1QgKENURVNUVFlQRSAqIGludCkgfCBDVkFSIHN0cmluZz8gKilcblxudHlwZSBjb3VudGVyX3Rlc3QgPSBDRVEgb2YgaW50IHwgQ0dURSBvZiBpbnQgfCBDTFRFIG9mIGludCB8IENWQVIgb2Ygc3RyaW5nXG5cbnR5cGUgY291bnRlciA9IHtcbiAgY291bnRlcl9uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIGNvdW50ZXJfdGVzdDogY291bnRlcl90ZXN0IExvYy5hbm5vdGVkIG9wdGlvbjtcbiAgICAgICgqKiBJbiBhIHJ1bGU6IHdoYXQgdGVzdCBpcyBkb25lLCBpbiBhbiBhZ2VudCBkZWNsYXJhdGlvbjogdGhlIG1pbiB2YWx1ZSwgaW4gYW4gaW5pdCBkZWNsYXJhdGlvbjogdGhlIGluaXQgdmFsdWUsIE5vbmUgaWYgYWJzZW50ICopXG4gIGNvdW50ZXJfZGVsdGE6IGludCBMb2MuYW5ub3RlZDtcbiAgICAgICgqKiBJbiBhIHJ1bGU6IGNoYW5nZSBpbiBjb3VudGVyIHZhbHVlLCBpbiBhbiBhZ2VudCBkZWNsYXJhdGlvbjogbWF4IHZhbHVlIG9mIHRoZSBjb3VudGVyLCAwIGlmIGFic2VudCAqKVxufVxuXG50eXBlIHRyYW5zbGF0ZV9pbnQgPSBCQVNJU19NSU5VU19JTlBVVCBvZiBpbnRcblxubGV0IGFwcGx5X2ludCB0IGkgPVxuICBtYXRjaCB0IHdpdGhcbiAgICB8IEJBU0lTX01JTlVTX0lOUFVUIGQgLT4gZCAtIGlcblxubGV0IHJlb3JkZXJfYm91bmRzIHQgKGksaikgPVxuICBtYXRjaCB0IHdpdGhcbiAgICB8IEJBU0lTX01JTlVTX0lOUFVUIF8gLT4gaixpXG5cbnR5cGUgY29udmVyc2lvbl9pbmZvID1cbiAgICAgIHtcbiAgICAgICAgZnJvbV9zaWdfbmFtZTogc3RyaW5nIExvYy5hbm5vdGVkO1xuICAgICAgICBjb252ZXJ0X3ZhbHVlOiB0cmFuc2xhdGVfaW50O1xuICAgICAgICBjb252ZXJ0X2RlbHRhOiB0cmFuc2xhdGVfaW50O1xuICAgICAgfVxuKCoqIENvdW50ZXIgc3ludGF4IGZyb20gQVNULCBwcmVzZW50IGluIDMgY29udGV4dHMgd2l0aCBkaWZmZXJlbnQgbWVhbmluZ3M6IGFnZW50IGRlZmluaXRpb24sIHNwZWNpZXMgaW5pdCBkZWNsYXJhdGlvbiwgcnVsZSAqKVxuXG50eXBlIG9yaWdpbmUgPSBGcm9tX29yaWdpbmFsX2FzdCB8IEZyb21fY2x0ZV9lbGltaW5hdGlvbiBvZiBjb252ZXJzaW9uX2luZm9cblxudHlwZSBjb3VudGVyX3NpZyA9IHtcbiAgY291bnRlcl9zaWdfbmFtZTogc3RyaW5nIExvYy5hbm5vdGVkO1xuICBjb3VudGVyX3NpZ19taW46IGludCBvcHRpb24gTG9jLmFubm90ZWQgb3B0aW9uO1xuICBjb3VudGVyX3NpZ19tYXg6IGludCBvcHRpb24gTG9jLmFubm90ZWQgb3B0aW9uO1xuICBjb3VudGVyX3NpZ192aXNpYmxlOiBvcmlnaW5lO1xuICBjb3VudGVyX3NpZ19kZWZhdWx0OiBpbnQ7XG59XG5cbmxldCBjb3VudGVyX3NpZ19vZl9jb3VudGVyIChjIDogY291bnRlcikgOiBjb3VudGVyX3NpZyA9XG4gIGxldCAoY291bnRlcl9zaWdfbWluLCBjb3VudGVyX3NpZ19kZWZhdWx0KSA6IChpbnQgb3B0aW9uICogTG9jLnQpIG9wdGlvbiAqIGludFxuICAgICAgPVxuICAgIG1hdGNoIGMuY291bnRlcl90ZXN0IHdpdGhcbiAgICB8IFNvbWUgKENFUSBpLCBsb2MpIC0+IFNvbWUgKFNvbWUgaSwgbG9jKSwgaVxuICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF8gfCBDTFRFIF8gfCBDVkFSIF8pLCBfKSAtPiBOb25lLCAwXG4gIGluXG4gIGxldCBjb3VudGVyX3NpZ19tYXggPVxuICAgIG1hdGNoIGMuY291bnRlcl9kZWx0YSB3aXRoXG4gICAgfCBpLCBsb2MgLT4gU29tZSAoU29tZSBpLCBsb2MpXG4gIGluXG4gIHtcbiAgICBjb3VudGVyX3NpZ19uYW1lID0gYy5jb3VudGVyX25hbWU7XG4gICAgY291bnRlcl9zaWdfbWluO1xuICAgIGNvdW50ZXJfc2lnX21heDtcbiAgICBjb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPSBGcm9tX29yaWdpbmFsX2FzdDtcbiAgfVxuXG5sZXQgbWFrZV9pbnZlcnRlZF9jb3VudGVyX3NpZyAoY291bnRlciA6IGNvdW50ZXJfc2lnKVxuICAgIChjb3VudGVyX3NpZ19uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkKSA6IGNvdW50ZXJfc2lnID1cbiAgbGV0IGZfaW50ID1cbiAgICBtYXRjaCBjb3VudGVyLmNvdW50ZXJfc2lnX21heCwgY291bnRlci5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgIHwgU29tZSAoU29tZSBtYXgsIF8pLCBTb21lIChTb21lIG1pbiwgXykgLT5cbiAgICAgIEJBU0lTX01JTlVTX0lOUFVUIChtYXgrbWluKVxuICAgIHwgKE5vbmUgfCBTb21lIChOb25lLCBfKSksIF8gfCBfLCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSAtPlxuICAgICAgZmFpbHdpdGggXCJ1bmJvdW5kZWQgY291bnRlcnMgbm90IGltcGxlbWVudGVkIHlldFwiXG4gIGluXG4gIGxldCBmX29wID0gQkFTSVNfTUlOVVNfSU5QVVQgMCBpblxuICB7XG4gICAgY291bnRlciB3aXRoXG4gICAgY291bnRlcl9zaWdfbmFtZTtcbiAgICBjb3VudGVyX3NpZ192aXNpYmxlID1cbiAgICAgIEZyb21fY2x0ZV9lbGltaW5hdGlvblxuICAgICAge1xuICAgICAgICBmcm9tX3NpZ19uYW1lPWNvdW50ZXIuY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgY29udmVydF92YWx1ZT1mX2ludDtcbiAgICAgICAgY29udmVydF9kZWx0YT1mX29wO1xuICAgICAgfVxuICAgIDtcbiAgICBjb3VudGVyX3NpZ19kZWZhdWx0ID1cbiAgICAgIGFwcGx5X2ludCBmX2ludCBjb3VudGVyLmNvdW50ZXJfc2lnX2RlZmF1bHRcblxuICB9XG5cbnR5cGUgJ2NvdW50ZXIgc2l0ZSA9IFBvcnQgb2YgcG9ydCB8IENvdW50ZXIgb2YgJ2NvdW50ZXJcblxubGV0IG1hcF9jb3VudGVyc19pbl9zaXRlIGYgPSBmdW5jdGlvblxuICB8IFBvcnQgXyBhcyB4IC0+IHhcbiAgfCBDb3VudGVyIGNvIC0+IENvdW50ZXIgKGYgY28pXG5cbnR5cGUgYWdlbnRfbW9kID0gTm9Nb2QgfCBFcmFzZSB8IENyZWF0ZVxuXG50eXBlICdjb3VudGVyIHBhcmFtZXRyaWNfYWdlbnQgPVxuICB8IFByZXNlbnQgb2Ygc3RyaW5nIExvYy5hbm5vdGVkICogJ2NvdW50ZXIgc2l0ZSBsaXN0ICogYWdlbnRfbW9kXG4gIHwgQWJzZW50IG9mIExvYy50XG5cbnR5cGUgYWdlbnQgPSBjb3VudGVyIHBhcmFtZXRyaWNfYWdlbnRcbnR5cGUgYWdlbnRfc2lnID0gY291bnRlcl9zaWcgcGFyYW1ldHJpY19hZ2VudFxuXG4oKiBUT0RPOiBkb2N1bWVudCB3aHkgbGlzdCBsaXN0ICopXG50eXBlIG1peHR1cmUgPSBhZ2VudCBsaXN0IGxpc3RcblxudHlwZSBlZGl0X25vdGF0aW9uID0ge1xuICBtaXg6IG1peHR1cmU7XG4gIGRlbHRhX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xufVxuXG50eXBlIGFycm93X25vdGF0aW9uID0ge1xuICBsaHM6IG1peHR1cmU7XG4gIHJtX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xuICByaHM6IG1peHR1cmU7XG4gIGFkZF90b2tlbjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdDtcbn1cblxudHlwZSBydWxlX2NvbnRlbnQgPSBFZGl0IG9mIGVkaXRfbm90YXRpb24gfCBBcnJvdyBvZiBhcnJvd19ub3RhdGlvblxuXG50eXBlIHJ1bGUgPSB7XG4gIHJld3JpdGU6IHJ1bGVfY29udGVudDtcbiAgYmlkaXJlY3Rpb25hbDogYm9vbDtcbiAga19kZWY6IChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQ7XG4gIGtfdW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgKCprXzE6cmFkaXVzX29wdCopXG4gIGtfb3A6IChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uO1xuICBrX29wX3VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gICAgKiAobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICBvcHRpb247XG4gICAgICAoKnJhdGUgZm9yIGJhY2t3YXJkIHJ1bGUqKVxufVxuXG5sZXQgZmxpcF9sYWJlbCBzdHIgPSBzdHIgXiBcIl9vcFwiXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciA9XG4gIHwgQVBQTFkgb2YgKCgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogJ3J1bGUgTG9jLmFubm90ZWQpXG4gIHwgVVBEQVRFIG9mICgnaWQgTG9jLmFubm90ZWQgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZClcbiAgfCBTVE9QIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgU05BUFNIT1Qgb2YgYm9vbCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgUFJJTlQgb2ZcbiAgICAgICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gICAgICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgUExPVEVOVFJZXG4gIHwgQ0ZMT1dMQUJFTCBvZiAoYm9vbCAqIHN0cmluZyBMb2MuYW5ub3RlZClcbiAgfCBDRkxPV01JWCBvZiAoYm9vbCAqICdwYXR0ZXJuIExvYy5hbm5vdGVkKVxuICB8IERJTiBvZlxuICAgICAgUHJpbWl0aXZlcy5kaW5fa2luZFxuICAgICAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IERJTk9GRiBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IFNQRUNJRVNfT0Ygb2ZcbiAgICAgIGJvb2xcbiAgICAgICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgICAgICogJ3BhdHRlcm4gTG9jLmFubm90ZWRcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb24gPVxuICAoTmJyLnQgb3B0aW9uXG4gICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQgb3B0aW9uXG4gICogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciBsaXN0XG4gICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQgb3B0aW9uKVxuICBMb2MuYW5ub3RlZFxuXG50eXBlIGNvbmZpZ3VyYXRpb24gPSBzdHJpbmcgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdFxuXG50eXBlICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgPVxuICBzdHJpbmcgTG9jLmFubm90ZWQgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuXG50eXBlICgnbWl4dHVyZSwgJ2lkKSBpbml0X3QgPVxuICB8IElOSVRfTUlYIG9mICdtaXh0dXJlIExvYy5hbm5vdGVkXG4gIHwgSU5JVF9UT0sgb2YgJ2lkIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50ID1cbiAgKCogIHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAoKnZvbHVtZSopKilcbiAgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiAoJ21peHR1cmUsICdpZCkgaW5pdF90XG5cbnR5cGUgKCdhZ2VudCwgJ2FnZW50X2lkLCAncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGluc3RydWN0aW9uID1cbiAgfCBTSUcgb2YgJ2FnZW50X2lkXG4gIHwgVE9LRU5TSUcgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG4gIHwgVk9MU0lHIG9mIHN0cmluZyAqIGZsb2F0ICogc3RyaW5nICgqIHR5cGUsIHZvbHVtZSwgcGFyYW1ldGVyKilcbiAgfCBJTklUIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCkgaW5pdF9zdGF0ZW1lbnRcbiAgKCp2b2x1bWUsIGluaXQsIHBvc2l0aW9uICopXG4gIHwgREVDTEFSRSBvZiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmXG4gIHwgT0JTIG9mICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSopXG4gIHwgUExPVCBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICB8IFBFUlQgb2YgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uXG4gIHwgQ09ORklHIG9mIGNvbmZpZ3VyYXRpb25cbiAgfCBSVUxFIG9mIChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogJ3J1bGUgTG9jLmFubm90ZWQpXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgY29tbWFuZCA9XG4gIHwgUlVOIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkXG4gIHwgTU9ESUZZIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIG1vZGlmX2V4cHIgbGlzdFxuICB8IFFVSVRcblxudHlwZSAoJ2FnZW50LCAnYWdlbnRfc2lnLCAncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGNvbXBpbCA9IHtcbiAgZmlsZW5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgdmFyaWFibGVzOiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmIGxpc3Q7XG4gICAgICAoKiogcGF0dGVybiBkZWNsYXJhdGlvbiBmb3IgcmV1c2luZyBhcyB2YXJpYWJsZSBpbiBwZXJ0dXJiYXRpb25zXG4gICAgb3Iga2luZXRpYyByYXRlICopXG4gIHNpZ25hdHVyZXM6ICdhZ2VudF9zaWcgbGlzdDsgICgqKiBhZ2VudCBzaWduYXR1cmUgZGVjbGFyYXRpb24gKilcbiAgcnVsZXM6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogJ3J1bGUgTG9jLmFubm90ZWQpIGxpc3Q7XG4gICAgICAoKiogcnVsZXMgKHBvc3NpYmx5IG5hbWVkKTogW25hbWVfb3B0aW9uICogcnVsZV9kZWZpbml0aW9uXSAqKVxuICBvYnNlcnZhYmxlczogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgbGlzdDtcbiAgICAgICgqKiBsaXN0IG9mIHBhdHRlcm5zIHRvIHBsb3QgKilcbiAgaW5pdDogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkKSBpbml0X3N0YXRlbWVudCBsaXN0O1xuICAgICAgKCoqIGluaXRpYWwgZ3JhcGggZGVjbGFyYXRpb24gKilcbiAgcGVydHVyYmF0aW9uczogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uIGxpc3Q7XG4gIGNvbmZpZ3VyYXRpb25zOiBjb25maWd1cmF0aW9uIGxpc3Q7XG4gIHRva2Vuczogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3Q7XG4gIHZvbHVtZXM6IChzdHJpbmcgKiBmbG9hdCAqIHN0cmluZykgbGlzdDtcbn1cblxudHlwZSBwYXJzaW5nX2NvbXBpbCA9IChhZ2VudCwgYWdlbnRfc2lnLCBtaXh0dXJlLCBtaXh0dXJlLCBzdHJpbmcsIHJ1bGUpIGNvbXBpbFxuXG50eXBlIHBhcnNpbmdfaW5zdHJ1Y3Rpb24gPVxuICAoYWdlbnQsIGFnZW50X3NpZywgbWl4dHVyZSwgbWl4dHVyZSwgc3RyaW5nLCBydWxlKSBpbnN0cnVjdGlvblxuXG5sZXQgbm9fbW9yZV9zaXRlX29uX3JpZ2h0IGVycm9yIGxlZnQgcmlnaHQgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bnRlciBfIC0+IHRydWVcbiAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IENvdW50ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBQb3J0IHAnIC0+IGZzdCBwLnBvcnRfbmFtZSA9IGZzdCBwJy5wb3J0X25hbWUpXG4gICAgICAgICAgbGVmdFxuICAgICAgICB8fFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGVycm9yIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJTaXRlICdcIiBeIGZzdCBwLnBvcnRfbmFtZVxuICAgICAgICAgICAgICAgICAgIF4gXCInIHdhcyBub3QgbWVudGlvbm5lZCBpbiB0aGUgbGVmdC1oYW5kIHNpZGUuXCIsXG4gICAgICAgICAgICAgICAgICAgc25kIHAucG9ydF9uYW1lICkpXG4gICAgICAgIGluXG4gICAgICAgIGZhbHNlKVxuICAgIHJpZ2h0XG5cbmxldCBlbXB0eV9jb21waWwgPVxuICB7XG4gICAgZmlsZW5hbWVzID0gW107XG4gICAgdmFyaWFibGVzID0gW107XG4gICAgc2lnbmF0dXJlcyA9IFtdO1xuICAgIHJ1bGVzID0gW107XG4gICAgaW5pdCA9IFtdO1xuICAgIG9ic2VydmFibGVzID0gW107XG4gICAgcGVydHVyYmF0aW9ucyA9IFtdO1xuICAgIGNvbmZpZ3VyYXRpb25zID0gW107XG4gICAgdG9rZW5zID0gW107XG4gICAgdm9sdW1lcyA9IFtdO1xuICB9XG5cbigqXG4gIGxldCByZXZlcnNlIHJlcyA9XG4gIGxldCBsX3BhdCA9IExpc3QucmV2ICFyZXMucGF0dGVybnNcbiAgYW5kIGxfc2lnID0gTGlzdC5yZXYgIXJlcy5zaWduYXR1cmVzXG4gIGFuZCBsX3J1bCA9IExpc3QucmV2ICFyZXMucnVsZXNcbiAgYW5kIGxfaW5pID0gTGlzdC5yZXYgIXJlcy5pbml0XG4gIGFuZCBsX29icyA9IExpc3QucmV2ICFyZXMub2JzZXJ2YWJsZXNcbiAgaW5cbiAgcmVzOj17cGF0dGVybnM9bF9wYXQgOyBzaWduYXR1cmVzPWxfc2lnIDtcbiAgICAgICAgcnVsZXM9bF9ydWwgOyBpbml0ID0gbF9pbmkgOyBvYnNlcnZhYmxlcyA9IGxfb2JzfVxuKilcblxubGV0IHByaW50X2FzdF9saW5rIG1vZF9sIGYgbCA9XG4gIGlmIGwgPD4gW10gfHwgbW9kX2wgPD4gTm9uZSB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlslYSVhXVwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHgsIF8pIC0+XG4gICAgICAgICAgIExLYXBwYS5wcmludF9saW5rXG4gICAgICAgICAgICAgKGZ1biBfIGYgKHgsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4KVxuICAgICAgICAgICAgIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpXG4gICAgICAgICAgICAgKGZ1biBfICgpIC0+ICgpKVxuICAgICAgICAgICAgIGYgeCkpXG4gICAgICBsXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvJWFcIlxuICAgICAgICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBTb21lIChsLCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgbFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIilcbiAgICAgICAgICAgICB4KSlcbiAgICAgIG1vZF9sXG5cbmxldCBwcmludF9hc3RfaW50ZXJuYWwgbW9kX2kgZiBsID1cbiAgaWYgbCA8PiBbXSB8fCBtb2RfaSA8PiBOb25lIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhJWF9XCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgfCBTb21lIHgsIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICAgICAgIHwgTm9uZSwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCIpKVxuICAgICAgbFxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKGksIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJXNcIiBpKSlcbiAgICAgIG1vZF9pXG5cbmxldCBwcmludF9hc3RfcG9ydCBmIHAgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYSVhXCIgKGZzdCBwLnBvcnRfbmFtZSlcbiAgICAocHJpbnRfYXN0X2ludGVybmFsIHAucG9ydF9pbnRfbW9kKVxuICAgIHAucG9ydF9pbnRcbiAgICAocHJpbnRfYXN0X2xpbmsgcC5wb3J0X2xpbmtfbW9kKVxuICAgIHAucG9ydF9saW5rXG5cbmxldCBwcmludF9jb3VudGVyX3Rlc3QgZiA9IGZ1bmN0aW9uXG4gIHwgQ0VRIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj0laVwiIHhcbiAgfCBDR1RFIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiB4XG4gIHwgQ0xURSB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI8PSVpXCIgeFxuICB8IENWQVIgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVzXCIgeFxuXG5sZXQgcHJpbnRfY291bnRlcl9taW4gZiAoeCwgXykgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIj0lZFwiIHhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9LW9vXCJcblxubGV0IHByaW50X2NvdW50ZXJfbWF4IGYgKHgsIF8pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJWRcIiB4XG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLytvb1wiXG5cbmxldCBwcmludF9jb3VudGVyX2RlZmF1bHQgbWluIGYgeCA9XG4gIG1hdGNoIG1pbiB3aXRoXG4gIHwgU29tZSAoU29tZSBpLCBfKSB3aGVuIGkgPSB4IC0+ICgpXG4gIHwgTm9uZSB8IFNvbWUgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiKCVkKVwiIHhcblxubGV0IHByaW50X2NvdW50ZXJfZGVsdGEgdGVzdCBmIChkZWx0YSwgXykgPVxuICBpZiBkZWx0YSA8PiAwIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWErPSVkXCJcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiL1wiKSlcbiAgICAgIHRlc3QgZGVsdGFcblxubGV0IHByaW50X2NvdW50ZXIgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzeyVhJWF9XCIgKGZzdCBjLmNvdW50ZXJfbmFtZSlcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIHByaW50X2NvdW50ZXJfdGVzdClcbiAgICBjLmNvdW50ZXJfdGVzdFxuICAgIChwcmludF9jb3VudGVyX2RlbHRhIGMuY291bnRlcl90ZXN0KVxuICAgIGMuY291bnRlcl9kZWx0YVxuXG5sZXQgcHJpbnRfY291bnRlcl9zaWcgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzeyVhJWF9JWFcIiAoZnN0IGMuY291bnRlcl9zaWdfbmFtZSlcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIHByaW50X2NvdW50ZXJfbWluKVxuICAgIGMuY291bnRlcl9zaWdfbWluXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSBwcmludF9jb3VudGVyX21heClcbiAgICBjLmNvdW50ZXJfc2lnX21heFxuICAgIChwcmludF9jb3VudGVyX2RlZmF1bHQgYy5jb3VudGVyX3NpZ19taW4pXG4gICAgYy5jb3VudGVyX3NpZ19kZWZhdWx0XG5cbmxldCBwcmludF9hc3Rfc2l0ZSB+cHJpbnRfY291bnRlciBmID0gZnVuY3Rpb25cbiAgfCBQb3J0IHAgLT4gcHJpbnRfYXN0X3BvcnQgZiBwXG4gIHwgQ291bnRlciBjIC0+IHByaW50X2NvdW50ZXIgZiBjXG5cbmxldCBzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmdcblxubGV0IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzID1cbiAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBzdHJpbmdfb3B0aW9uX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzID1cbiAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG5cbmxldCBzdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKVxuXG5sZXQgY291bnRlcl90ZXN0X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IENFUSB4IC0+IGBBc3NvYyBbIFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDR1RFIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDTFRFIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJsdGVcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDVkFSIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiOyBcInZhbFwiLCBgU3RyaW5nIHggXVxuXG5sZXQgY291bnRlcl90ZXN0X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpIF0gLT5cbiAgICBDRVEgeFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIikgXVxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXSAtPlxuICAgIENHVEUgeFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJsdGVcIikgXVxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImx0ZVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXSAtPlxuICAgIENMVEUgeFxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpOyAoXCJ2YWxcIiwgYFN0cmluZyB4KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBTdHJpbmcgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpIF0gLT5cbiAgICBDVkFSIHhcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBjb3VudGVyIHRlc3RcIiwgeCkpXG5cbmxldCBwb3J0X3RvX2pzb24gZmlsZW5hbWVzIHAgPVxuICBsZXQgbW9kX2wgPVxuICAgIEpzb25VdGlsLm9mX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBgU3RyaW5nIFwiRlJFRVwiXG4gICAgICB8IFNvbWUgeCAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9pbnQgeClcbiAgaW5cbiAgbGV0IG1vZF9pID1cbiAgICBKc29uVXRpbC5vZl9vcHRpb24gKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZylcbiAgaW5cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcInBvcnRfbmFtZVwiLCBzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgcC5wb3J0X25hbWU7XG4gICAgICAoIFwicG9ydF9pbnRcIixcbiAgICAgICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIFwic3RhdGVcIixcbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgIChzdHJpbmdfb3B0aW9uX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIHAucG9ydF9pbnQgKTtcbiAgICAgICAgICAgIFwibW9kXCIsIG1vZF9pIHAucG9ydF9pbnRfbW9kO1xuICAgICAgICAgIF0gKTtcbiAgICAgICggXCJwb3J0X2xpbmtcIixcbiAgICAgICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIFwic3RhdGVcIixcbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChMS2FwcGEubGlua190b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gW10pKSlcbiAgICAgICAgICAgICAgICBwLnBvcnRfbGluayApO1xuICAgICAgICAgICAgXCJtb2RcIiwgbW9kX2wgcC5wb3J0X2xpbmtfbW9kO1xuICAgICAgICAgIF0gKTtcbiAgICBdXG5cbmxldCBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBsID1cbiAgbGV0IG1vZF9sID1cbiAgICBKc29uVXRpbC50b19vcHRpb24gKGZ1bmN0aW9uXG4gICAgICB8IGBTdHJpbmcgXCJGUkVFXCIgLT4gTm9uZVxuICAgICAgfCB4IC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpIHgpKVxuICBpblxuICBsZXQgbW9kX2kgPVxuICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSlcbiAgaW5cbiAgbGV0IHBvcnRfaW50LCBwb3J0X2ludF9tb2QgPVxuICAgIG1hdGNoIGkgd2l0aFxuICAgIHwgYEFzc29jIFtdIHwgYE51bGwgLT4gW10sIE5vbmVcbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGkpIF0gLT5cbiAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykgaSwgTm9uZVxuICAgIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pIF0gLT4gW10sIG1vZF9pIG1cbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGkpOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic3RhdGVcIiwgaSkgXVxuICAgICAgLT5cbiAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykgaSwgbW9kX2kgbVxuICAgIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgaW50ZXJuYWwgc3RhdGVzXCIsIGkpKVxuICBpblxuICBsZXQgcG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGBBc3NvYyBbXSB8IGBOdWxsIC0+IFtdLCBOb25lXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBsKSBdIC0+XG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoTEthcHBhLmxpbmtfb2ZfanNvblxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKSkpXG4gICAgICAgICAgbCxcbiAgICAgICAgTm9uZSApXG4gICAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSkgXSAtPiBbXSwgbW9kX2wgbVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgbCk7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJzdGF0ZVwiLCBsKSBdXG4gICAgICAtPlxuICAgICAgKCBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKExLYXBwYS5saW5rX29mX2pzb25cbiAgICAgICAgICAgICAgICAoZnVuIF8gLT4gc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSkpKVxuICAgICAgICAgIGwsXG4gICAgICAgIG1vZF9sIG0gKVxuICAgIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgbGluayBzdGF0ZXNcIiwgaSkpXG4gIGluXG4gIFBvcnRcbiAgICB7XG4gICAgICBwb3J0X25hbWUgPSBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcyBuO1xuICAgICAgcG9ydF9pbnQ7XG4gICAgICBwb3J0X2ludF9tb2Q7XG4gICAgICBwb3J0X2xpbms7XG4gICAgICBwb3J0X2xpbmtfbW9kO1xuICAgIH1cblxubGV0IHNpdGVfc2lnX29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF0gLT5cbiAgICBDb3VudGVyXG4gICAgICB7XG4gICAgICAgIGNvdW50ZXJfc2lnX25hbWUgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX3N0cmluZyBuO1xuICAgICAgICBjb3VudGVyX3NpZ19taW4gPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCkpXG4gICAgICAgICAgICBtaW47XG4gICAgICAgIGNvdW50ZXJfc2lnX21heCA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KSlcbiAgICAgICAgICAgIG1heDtcbiAgICAgICAgY291bnRlcl9zaWdfZGVmYXVsdCA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBkZWZhdWx0O1xuICAgICAgICBjb3VudGVyX3NpZ192aXNpYmxlID0gRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICB9XG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGBOdWxsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKSBdIC0+IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBgTnVsbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IHNpdGVfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfZGVsdGFcIiwgZCk7IChcImNvdW50ZXJfdGVzdFwiLCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfZGVsdGFcIiwgZCkgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfdGVzdFwiLCB0KTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl9uYW1lXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfdGVzdFwiLCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX25hbWVcIiwgbikgXSAtPlxuICAgIENvdW50ZXJcbiAgICAgIHtcbiAgICAgICAgY291bnRlcl9uYW1lID1cbiAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBZb2pzb24uQmFzaWMuVXRpbC50b19zdHJpbmcgbjtcbiAgICAgICAgY291bnRlcl90ZXN0ID1cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBjb3VudGVyX3Rlc3Rfb2ZfanNvbilcbiAgICAgICAgICAgIHQ7XG4gICAgICAgIGNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBkO1xuICAgICAgfVxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBgTnVsbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGBOdWxsIGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPiBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgYE51bGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBBU1QgYWdlbnRcIiwgeCkpXG5cbmxldCBjb3VudGVyX3RvX2pzb24gfmZpbGVuYW1lcyBjID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNvdW50ZXJfbmFtZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgYy5jb3VudGVyX25hbWUgKTtcbiAgICAgICggXCJjb3VudGVyX3Rlc3RcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGNvdW50ZXJfdGVzdF90b19qc29uKVxuICAgICAgICAgIGMuY291bnRlcl90ZXN0ICk7XG4gICAgICAoIFwiY291bnRlcl9kZWx0YVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9pbnQgYy5jb3VudGVyX2RlbHRhICk7XG4gICAgXVxuXG5sZXQgY291bnRlcl9zaWdfdG9fanNvbiB+ZmlsZW5hbWVzIGMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY291bnRlcl9zaWdfbmFtZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgYy5jb3VudGVyX3NpZ19uYW1lICk7XG4gICAgICAoIFwiY291bnRlcl9taW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpKVxuICAgICAgICAgIGMuY291bnRlcl9zaWdfbWluICk7XG4gICAgICAoIFwiY291bnRlcl9tYXhcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpKVxuICAgICAgICAgIGMuY291bnRlcl9zaWdfbWF4ICk7XG4gICAgICBcImNvdW50ZXJfZGVmYXVsdFwiLCBKc29uVXRpbC5vZl9pbnQgYy5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgIF1cblxubGV0IHNpdGVfdG9fanNvbiB+Y291bnRlcl90b19qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgUG9ydCBwIC0+IHBvcnRfdG9fanNvbiBmaWxlbmFtZXMgcFxuICB8IENvdW50ZXIgYyAtPiBjb3VudGVyX3RvX2pzb24gfmZpbGVuYW1lcyBjXG5cbmxldCBwcmludF9hZ2VudF9tb2QgZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIitcIlxuICB8IEVyYXNlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi1cIlxuICB8IE5vTW9kIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlwiXG5cbmxldCBwcmludF9hc3RfYWdlbnQgfnByaW50X2NvdW50ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgUHJlc2VudCAoKGFnZW50X25hbWUsIF8pLCBsLCBtKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyglYSklYVwiIGFnZW50X25hbWVcbiAgICAgIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIFwiKSAocHJpbnRfYXN0X3NpdGUgfnByaW50X2NvdW50ZXIpKVxuICAgICAgbCBwcmludF9hZ2VudF9tb2QgbVxuXG5sZXQgYWdlbnRfbW9kX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIC0+IGBTdHJpbmcgXCJjcmVhdGVkXCJcbiAgfCBFcmFzZSAtPiBgU3RyaW5nIFwiZXJhc2VcIlxuICB8IE5vTW9kIC0+IGBTdHJpbmcgXCJub19tb2RcIlxuXG5sZXQgYWdlbnRfbW9kX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcImNyZWF0ZWRcIiAtPiBDcmVhdGVcbiAgfCBgU3RyaW5nIFwiZXJhc2VcIiAtPiBFcmFzZVxuICB8IGBTdHJpbmcgXCJub19tb2RcIiAtPiBOb01vZFxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYWdlbnQgbW9kaWZpY2F0aW9uXCIsIHgpKVxuXG5sZXQgYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gYE51bGxcbiAgfCBQcmVzZW50IChuYSwgbCwgbSkgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcIm5hbWVcIiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nIG5hO1xuICAgICAgICBcInNpZ1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgIChzaXRlX3RvX2pzb24gfmNvdW50ZXJfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICBsO1xuICAgICAgICBcIm1vZFwiLCBhZ2VudF9tb2RfdG9feW9qc29uIG07XG4gICAgICBdXG5cbmxldCBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBBYnNlbnQgTG9jLmR1bW15XG4gIHwgYEFzc29jIFsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpOyAoXCJtb2RcIiwgbSkgXVxuICB8IGBBc3NvYyBbIChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKTsgKFwibW9kXCIsIG0pIF1cbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSk7IChcInNpZ1wiLCBzKSBdXG4gIHwgYEFzc29jIFsgKFwic2lnXCIsIHMpOyAoXCJtb2RcIiwgbSk7IChcIm5hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSk7IChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoc2l0ZV9vZl9qc29uIGZpbGVuYW1lcykgcyxcbiAgICAgICAgYWdlbnRfbW9kX29mX3lvanNvbiBtIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgW10sXG4gICAgICAgIGFnZW50X21vZF9vZl95b2pzb24gbSApXG4gIHwgYEFzc29jIFsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpIF0gfCBgQXNzb2MgWyAoXCJzaWdcIiwgcyk7IChcIm5hbWVcIiwgbikgXSAtPlxuICAgIFByZXNlbnRcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpIG4sXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHNpdGVfb2ZfanNvbiBmaWxlbmFtZXMpIHMsXG4gICAgICAgIE5vTW9kIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBbXSxcbiAgICAgICAgTm9Nb2QgKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IGFnZW50X3NpZ19vZl9qc29uID0gYWdlbnRfb2ZfanNvbiB+c2l0ZV9vZl9qc29uOnNpdGVfc2lnX29mX2pzb25cblxuKCogVE8gRE8gVHJhbnNmZXIgYmFjayBpbnZlcnRlZCBjb3VudGVycyAqKVxubGV0IGFnZW50X3NpZ190b19qc29uID1cbiAgYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uOmNvdW50ZXJfc2lnX3RvX2pzb25cblxubGV0IGFnZW50X29mX2pzb24gPSBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb25cbmxldCBhZ2VudF90b19qc29uID0gYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uXG5cbmxldCBwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyID1cbiAgUHAubGlzdFxuICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcXEAgXCIpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgKHByaW50X2FzdF9hZ2VudCB+cHJpbnRfY291bnRlcikpXG5cbmxldCB0b19lcmFzZWRfbWl4dHVyZSA9XG4gIExpc3QubWFwXG4gICAgKExpc3QubWFwIChmdW5jdGlvblxuICAgICAgfCBBYnNlbnQgcG9zIC0+IEFic2VudCBwb3NcbiAgICAgIHwgUHJlc2VudCAobiwgcywgXykgLT4gUHJlc2VudCAobiwgcywgRXJhc2UpKSlcblxubGV0IHRvX2NyZWF0ZWRfbWl4dHVyZSA9XG4gIExpc3QubWFwXG4gICAgKExpc3QubWFwIChmdW5jdGlvblxuICAgICAgfCBBYnNlbnQgcG9zIC0+IEFic2VudCBwb3NcbiAgICAgIHwgUHJlc2VudCAobiwgcywgXykgLT4gUHJlc2VudCAobiwgcywgQ3JlYXRlKSkpXG5cbmxldCB0b19kdW1teV91c2VyX2xpbmsgPSBmdW5jdGlvblxuICB8IFtdIHwgWyAoTEthcHBhLkxOS19BTlksIF8pIF0gLT4gVXNlcl9ncmFwaC5XSEFURVZFUlxuICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFtdXG4gIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoeCwgXyksIF8pIF0gLT4gVXNlcl9ncmFwaC5MSU5LUyBbICgtMSwgLTEpLCB4IF1cbiAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT4gVXNlcl9ncmFwaC5MSU5LUyBbXVxuICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXSAtPiBVc2VyX2dyYXBoLlNPTUVcbiAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKCh0eSwgXyksIChzaSwgXykpLCBfKSBdIC0+IFVzZXJfZ3JhcGguVFlQRSAodHksIHNpKVxuICB8IF8gOjogXyA6OiBfIC0+IGFzc2VydCBmYWxzZSAoKiBUT0RPICopXG5cbmxldCB0b19kdW1teV91c2VyX2ludGVybmFsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTb21lIFtdXG4gIHwgWyAoTm9uZSwgXykgXSAtPiBOb25lXG4gIHwgWyAoU29tZSBzdCwgXykgXSAtPiBTb21lIFsgc3QgXVxuICB8IF8gOjogXyA6OiBfIGFzIGwgLT4gU29tZSAoTGlzdF91dGlsLm1hcF9vcHRpb24gZnN0IGwpXG5cbmxldCB0b19kdW1teV91c2VyX3NpdGUgPSBmdW5jdGlvblxuICB8IFBvcnQgeyBwb3J0X25hbWU7IHBvcnRfaW50OyBwb3J0X2ludF9tb2QgPSBfOyBwb3J0X2xpbms7IHBvcnRfbGlua19tb2QgPSBfIH1cbiAgICAtPlxuICAgIHtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gZnN0IHBvcnRfbmFtZTtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAge1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gdG9fZHVtbXlfdXNlcl9saW5rIHBvcnRfbGluaztcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgPSB0b19kdW1teV91c2VyX2ludGVybmFsIHBvcnRfaW50O1xuICAgICAgICAgIH07XG4gICAgfVxuICB8IENvdW50ZXIgeyBjb3VudGVyX25hbWU7IGNvdW50ZXJfdGVzdCA9IF87IGNvdW50ZXJfZGVsdGEgPSBfIH0gLT5cbiAgICB7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9IGZzdCBjb3VudGVyX25hbWU7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9IFVzZXJfZ3JhcGguQ291bnRlciAoLTEpO1xuICAgICAgKCogVE9ETyAqKVxuICAgIH1cblxubGV0IHRvX2R1bW15X3VzZXJfYWdlbnQgPSBmdW5jdGlvblxuICB8IEFic2VudCBfIC0+IE5vbmVcbiAgfCBQcmVzZW50ICgobmEsIF8pLCBzLCBfbW9kcykgLT5cbiAgICBTb21lXG4gICAgICB7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV90eXBlID0gbmE7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV9pZCA9IE5vbmU7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV9zaXRlcyA9IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHRvX2R1bW15X3VzZXJfc2l0ZSBzO1xuICAgICAgfVxuXG5sZXQgc2V0dXBfbGluayBtICgobGluZSwgcm93KSwgc2l0ZSkgdmEgPVxuICBtYXRjaCBtLihsaW5lKS4ocm93KSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyBVc2VyX2dyYXBoLm5vZGVfc2l0ZXM7IF8gfSAtPlxuICAgIGxldCBzID0gbm9kZV9zaXRlcy4oc2l0ZSkgaW5cbiAgICAobWF0Y2ggcy5Vc2VyX2dyYXBoLnNpdGVfdHlwZSB3aXRoXG4gICAgfCBVc2VyX2dyYXBoLkNvdW50ZXIgXyAtPiAoKVxuICAgIHwgVXNlcl9ncmFwaC5Qb3J0IHAgLT5cbiAgICAgIG5vZGVfc2l0ZXMuKHNpdGUpIDwtXG4gICAgICAgIHtcbiAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9IHMuVXNlcl9ncmFwaC5zaXRlX25hbWU7XG4gICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFsgdmEgXTtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzID0gcC5Vc2VyX2dyYXBoLnBvcnRfc3RhdGVzO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICB9KVxuXG5sZXQgbWl4dHVyZV90b191c2VyX2dyYXBoIG0gPVxuICBsZXQgb3V0ID1cbiAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAoVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgdG9fZHVtbXlfdXNlcl9hZ2VudCkgbVxuICBpblxuICBsZXQgYWNjID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGxpbmUgLT5cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIHJvdyBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgfCBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzOyBfIH0gLT5cbiAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgKGZ1biBzaXRlIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7IFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgW107IF8gfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgKF8gOjogXyA6OiBfKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVXNlcl9ncmFwaC5XSEFURVZFUiB8IFVzZXJfZ3JhcGguU09NRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5UWVBFIChfLCBfKSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwgeyBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9IFVzZXJfZ3JhcGguQ291bnRlciBfOyBfIH0gLT4gYWNjXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbIChfLCBpZCkgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAucG9wIGlkIGFjYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUsIGFjYycgLT4gTW9kcy5JbnRNYXAuYWRkIGlkICgobGluZSwgcm93KSwgc2l0ZSkgYWNjJ1xuICAgICAgICAgICAgICAgICAgfCBTb21lIHZhLCBhY2MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YScgPSAobGluZSwgcm93KSwgc2l0ZSBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBzZXR1cF9saW5rIG91dCB2YSB2YScgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0dXBfbGluayBvdXQgdmEnIHZhIGluXG4gICAgICAgICAgICAgICAgICAgIGFjYycpKVxuICAgICAgICAgICAgICBhY2Mgbm9kZV9zaXRlcykpXG4gICAgICBNb2RzLkludE1hcC5lbXB0eSBvdXRcbiAgaW5cbiAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludE1hcC5pc19lbXB0eSBhY2MpIGluXG4gIG91dFxuXG5sZXQgaW5pdF90b19qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IElOSVRfTUlYIG0gLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJtaXh0dXJlXCI7IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfbWl4IG0gXVxuICB8IElOSVRfVE9LIHQgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwidG9rZW5cIjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl92YXIpIHQ7XG4gICAgICBdXG5cbmxldCBpbml0X29mX2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwibWl4dHVyZVwiOyBtIF0gLT5cbiAgICBJTklUX01JWCAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJ0b2tlblwiOyB0IF0gLT5cbiAgICBJTklUX1RPS1xuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIklOSVRfVE9LXCIpXG4gICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl92YXIpXG4gICAgICAgICB0KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBBc3QgaW5pdCBzdGF0ZW1lbnRcIiwgeCkpXG5cbmxldCBwcmludF90b2sgcHJfbWl4IHByX3RvayBwcl92YXIgZiAoKG5iLCBfKSwgKG4sIF8pKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIChBbGdfZXhwci5wcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgbmIgcHJfdG9rIG5cblxubGV0IHByaW50X29uZV9zaXplIHRrIGYgbWl4ID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXQlYVwiXG4gICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgbWl4XG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCB0ayB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IF8gOjogXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgfCBcIilcbiAgICAoUHAubGlzdFxuICAgICAgIChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgKyBcIilcbiAgICAgICAocHJpbnRfdG9rXG4gICAgICAgICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KSkpXG4gICAgdGtcblxubGV0IHByaW50X2Fycm93IGYgYmlkaXIgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgYmlkaXIgdGhlblxuICAgICAgIFwiPC0+XCJcbiAgICAgZWxzZVxuICAgICAgIFwiLT5cIilcblxubGV0IHByaW50X3Jhd19yYXRlIHByX21peCBwcl90b2sgcHJfdmFyIG9wIGYgKGRlZiwgXykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiIChBbGdfZXhwci5wcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgZGVmIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggb3Agd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKGQsIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIsICVhXCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBkKVxuXG5sZXQgcHJpbnRfYXN0X2FsZ19leHByID1cbiAgQWxnX2V4cHIucHJpbnRcbiAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG5cbmxldCBwcmludF9yYXRlc19vbmVfZGlyIHVuIGYgZGVmID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXRcIlxuICAgIChwcmludF9yYXdfcmF0ZVxuICAgICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpIG0pXG4gICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgICAgIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnXCIgeClcbiAgICAgICBOb25lKVxuICAgIGRlZlxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggdW4gd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKChkLCBfKSwgbWF4X2Rpc3QpIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJXR9XCIgcHJpbnRfYXN0X2FsZ19leHByIGQgKGZ1biBmIC0+XG4gICAgICAgICAgICBQcC5vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBmIChtZCwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIjolYVwiIHByaW50X2FzdF9hbGdfZXhwciBtZClcbiAgICAgICAgICAgICAgZiBtYXhfZGlzdCkpXG5cbmxldCBwcmludF9ydWxlX2NvbnRlbnQgfmJpZGlyZWN0aW9uYWwgZiA9IGZ1bmN0aW9uXG4gIHwgRWRpdCByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhIEBdXCIgKHByaW50X29uZV9zaXplIHIuZGVsdGFfdG9rZW4pIHIubWl4XG4gIHwgQXJyb3cgciAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhICVhQCAlYUBdXCJcbiAgICAgIChwcmludF9vbmVfc2l6ZSByLnJtX3Rva2VuKVxuICAgICAgci5saHMgcHJpbnRfYXJyb3cgYmlkaXJlY3Rpb25hbFxuICAgICAgKHByaW50X29uZV9zaXplIHIuYWRkX3Rva2VuKVxuICAgICAgci5yaHNcblxubGV0IHByaW50X2FzdF9ydWxlIGYgciA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhIEBAICVhJXRAXVwiXG4gICAgKHByaW50X3J1bGVfY29udGVudCB+YmlkaXJlY3Rpb25hbDpyLmJpZGlyZWN0aW9uYWwpIHIucmV3cml0ZVxuICAgIChwcmludF9yYXRlc19vbmVfZGlyIHIua191bikgci5rX2RlZiAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIua19vcCwgci5rX29wX3VuIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiAoKVxuICAgICAgfCBOb25lLCBfIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgLCAlYVwiXG4gICAgICAgICAgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX29wX3VuKVxuICAgICAgICAgIChBbGdfZXhwci5jb25zdCBOYnIuemVybylcbiAgICAgIHwgU29tZSBhLCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgLCAlYVwiIChwcmludF9yYXRlc19vbmVfZGlyIHIua19vcF91bikgYSlcblxubGV0IHByaW50X2NvbmZpZ3VyYXRpb24gZiAoKG4sIF8pLCBsKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlZGVmOiBcXFwiJXNcXFwiIEBbJWFAXUBdXCIgblxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiB4KSlcbiAgICBsXG5cbmxldCBwcmludF9pbml0IGYgPSBmdW5jdGlvblxuICB8IChuLCBfKSwgSU5JVF9NSVggKG0sIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVpbml0OiBAWyVhQF1AIEBbJWFAXUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgbVxuICB8IChuLCBfKSwgSU5JVF9UT0sgdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlaW5pdDogJWEgJWFAXVwiIHByaW50X2FzdF9hbGdfZXhwciBuXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHgsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4KSlcbiAgICAgIHRcblxubGV0IHByaW50X2FzdF9ib29sX2V4cHIgPVxuICBBbGdfZXhwci5wcmludF9ib29sXG4gICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuXG5sZXQgcHJpbnRfcHJpbnRfZXhwciBmID1cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBwcmludF9hc3RfYWxnX2V4cHIgZiBhbGdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIFxcXCIlc1xcXCJcIiBzdHJcbiAgfCAoWyBQcmltaXRpdmVzLkFsZ19wZXhwciBfIF0gfCBfIDo6IF8gOjogXykgYXMgZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAIChAWyVhQF0pXCJcbiAgICAgIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLlwiKSBhdXgpXG4gICAgICBlXG5cbmxldCBwcmludF9tb2RpZiBmID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoKG4sIF8pLCAociwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRBUFBMWSBAWyVhQF0gQFslYUBdO1wiIHByaW50X2FzdF9hbGdfZXhwciBuXG4gICAgICAocHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsOmZhbHNlKVxuICAgICAgci5yZXdyaXRlXG4gIHwgVVBEQVRFICgocywgXyksIChuLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFVQREFURSAnJXNAJyBAWyVhQF07XCIgcyBwcmludF9hc3RfYWxnX2V4cHIgblxuICB8IFNUT1AgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJFNUT1AlYTtcIiBwcmludF9wcmludF9leHByIHBcbiAgfCBTTkFQU0hPVCAocmF3LCBwKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU05BUFNIT1QlYSV0O1wiIHByaW50X3ByaW50X2V4cHIgcCAoZnVuIGYgLT5cbiAgICAgICAgaWYgcmF3IHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFt0cnVlXVwiKVxuICB8IFBSSU5UIChbXSwgeCkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYlYVwiIHByaW50X3ByaW50X2V4cHIgeFxuICB8IFBSSU5UIChmaWxlLCB4KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGJWEgPiVhXCIgcHJpbnRfcHJpbnRfZXhwciB4IHByaW50X3ByaW50X2V4cHIgZmlsZVxuICB8IFBMT1RFTlRSWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIkUExPVE5PVztcIlxuICB8IENGTE9XTEFCRUwgKG9uLCAocywgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyAnJXMnICVzO1wiIHNcbiAgICAgIChpZiBvbiB0aGVuXG4gICAgICAgICBcIlt0cnVlXVwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJbZmFsc2VdXCIpXG4gIHwgQ0ZMT1dNSVggKG9uLCAocCwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyBAWyVhQF0gJXM7XCJcbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgcFxuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgfCBESU4gKGssIHApIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRESU4lYSAldFt0cnVlXVwiIHByaW50X3ByaW50X2V4cHIgcCAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImFic29sdXRlXFxcIiBcIlxuICAgICAgICB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgLT4gKClcbiAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwicHJvYmFiaWxpdHlcXFwiIFwiKVxuICB8IERJTk9GRiBwIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOJWEgW2ZhbHNlXVwiIHByaW50X3ByaW50X2V4cHIgcFxuICB8IFNQRUNJRVNfT0YgKG9uLCBwLCAobSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIEBbJWFAXSAlcyA+JWE7XCJcbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgbVxuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgICAgIHByaW50X3ByaW50X2V4cHIgcFxuXG5sZXQgcHJpbnRfcGVydHVyYmF0aW9uIGYgKChhbGFybSwgY29uZCwgbW9kaWYsIHJlcCksIF8pID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVtb2Q6JWElYSBkb0AgQFslYUBdJWFAXVwiXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxhcm0gJWFcIiBOYnIucHJpbnQgaSkpXG4gICAgYWxhcm1cbiAgICAoUHAub3B0aW9uIChmdW4gZiAociwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIHByaW50X2FzdF9ib29sX2V4cHIgcikpXG4gICAgY29uZFxuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X21vZGlmKVxuICAgIG1vZGlmXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgKHIsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwicmVwZWF0IEBbJWFAXVwiIHByaW50X2FzdF9ib29sX2V4cHIgcikpXG4gICAgcmVwXG5cbmxldCBwcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsQCwlYUAsJWFALEAsJWFALEAsJWFALCVhQCxALCVhQCxALCVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfY29uZmlndXJhdGlvbilcbiAgICBjLmNvbmZpZ3VyYXRpb25zXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIGEgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlYWdlbnQ6QCBAWyVhQF1AXVwiXG4gICAgICAgICAgIChwcmludF9hc3RfYWdlbnQgfnByaW50X2NvdW50ZXI6cHJpbnRfY291bnRlcl9zaWcpXG4gICAgICAgICAgIGEpKVxuICAgIGMuc2lnbmF0dXJlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAocywgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUldG9rZW46ICVzXCIgcykpXG4gICAgYy50b2tlbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKChzLCBfKSwgKGEsIF8pKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSV2YXI6ICclcydAIEBbJWFAXUBdXCIgcyBwcmludF9hc3RfYWxnX2V4cHIgYSkpXG4gICAgYy52YXJpYWJsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGEsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJXBsb3Q6QCBAWyVhQF1AXVwiIHByaW50X2FzdF9hbGdfZXhwciBhKSlcbiAgICBjLm9ic2VydmFibGVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChzLCAociwgXykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFtAWyVhJWFAXUBdXCJcbiAgICAgICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKHMsIF8pIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiclcydAIFwiIHMpKVxuICAgICAgICAgICBzIHByaW50X2FzdF9ydWxlIHIpKVxuICAgIGMucnVsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9wZXJ0dXJiYXRpb24pXG4gICAgYy5wZXJ0dXJiYXRpb25zXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfaW5pdClcbiAgICBjLmluaXRcblxubGV0IGFycm93X25vdGF0aW9uX3RvX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgciA9XG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJsaHNcIiwgZl9taXggci5saHM7XG4gICAgICAoIFwicm1fdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIHIucm1fdG9rZW4gKTtcbiAgICAgIFwicmhzXCIsIGZfbWl4IHIucmhzO1xuICAgICAgKCBcImFkZF90b2tlblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgci5hZGRfdG9rZW4gKTtcbiAgICBdXG5cbmxldCBhcnJvd19ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8PSA0IC0+XG4gICAge1xuICAgICAgbGhzID0gZl9taXggKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImxoc1wiIHgpO1xuICAgICAgcm1fdG9rZW4gPVxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicm1fdG9rZW5cIiB4KTtcbiAgICAgIHJocyA9IGZfbWl4IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJyaHNcIiB4KTtcbiAgICAgIGFkZF90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhZGRfdG9rZW5cIiB4KTtcbiAgICB9XG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgYXJyb3dfbm90YXRpb25cIiwgeCkpXG5cbmxldCBlZGl0X25vdGF0aW9uX3RvX3lvanNvbiBmaWxlbmFtZXMgciA9XG4gIGxldCBtaXhfdG9fanNvbiA9XG4gICAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpKVxuICBpblxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwibWl4XCIsIG1peF90b19qc29uIHIubWl4O1xuICAgICAgKCBcImRlbHRhX3Rva2VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIEpzb25VdGlsLm9mX3N0cmluZykpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgci5kZWx0YV90b2tlbiApO1xuICAgIF1cblxubGV0IGVkaXRfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyByID1cbiAgbGV0IG1peF9vZl9qc29uID1cbiAgICBKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19saXN0IChhZ2VudF9vZl9qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIG1hdGNoIHIgd2l0aFxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDwgMyAtPlxuICAgIHtcbiAgICAgIG1peCA9IG1peF9vZl9qc29uIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJtaXhcIiB4KTtcbiAgICAgIGRlbHRhX3Rva2VuID1cbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlbHRhX3Rva2VuXCIgeCk7XG4gICAgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBlZGl0X25vdGF0aW9uXCIsIHgpKVxuXG5sZXQgcnVsZV9jb250ZW50X3RvX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IEVkaXQgciAtPiBgTGlzdCBbIGBTdHJpbmcgXCJlZGl0XCI7IGVkaXRfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyByIF1cbiAgfCBBcnJvdyByIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwiYXJyb3dcIjsgYXJyb3dfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByIF1cblxubGV0IHJ1bGVfY29udGVudF9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJlZGl0XCI7IHIgXSAtPiBFZGl0IChlZGl0X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgcilcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJhcnJvd1wiOyByIF0gLT5cbiAgICBBcnJvdyAoYXJyb3dfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlIGNvbnRlbnRcIiwgeCkpXG5cbmxldCBydWxlX3RvX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIgPVxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwicmV3cml0ZVwiLCBydWxlX2NvbnRlbnRfdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByLnJld3JpdGU7XG4gICAgICBcImJpZGlyZWN0aW9uYWxcIiwgYEJvb2wgci5iaWRpcmVjdGlvbmFsO1xuICAgICAgKCBcImtfZGVmXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgci5rX2RlZiApO1xuICAgICAgKCBcImtfdW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSkpKVxuICAgICAgICAgIHIua191biApO1xuICAgICAgKCBcImtfb3BcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgIHIua19vcCApO1xuICAgICAgKCBcImtfb3BfdW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSkpKVxuICAgICAgICAgIHIua19vcF91biApO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDYgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcmV3cml0ZSA9XG4gICAgICAgICAgIHJ1bGVfY29udGVudF9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJld3JpdGVcIiB4KTtcbiAgICAgICAgIGJpZGlyZWN0aW9uYWwgPVxuICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImJpZGlyZWN0aW9uYWxcIiB4KTtcbiAgICAgICAgIGtfZGVmID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19kZWZcIiB4KTtcbiAgICAgICAgIGtfdW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfdW5cIiB4KTtcbiAgICAgICAgIGtfb3AgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfb3BcIiB4KTtcbiAgICAgICAgIGtfb3BfdW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfb3BfdW5cIiB4KTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgcnVsZVwiLCB4KSlcblxubGV0IG1vZGlmX3RvX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoYWxnLCByKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJBUFBMWVwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZztcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIpIHI7XG4gICAgICBdXG4gIHwgVVBEQVRFIChpZCwgYWxnKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJVUERBVEVcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl92YXIgaWQ7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnO1xuICAgICAgXVxuICB8IFNUT1AgbCAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZyBcIlNUT1BcIlxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBTTkFQU0hPVCAocmF3LCBsKSAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZ1xuICAgICAgICAgKGlmIHJhdyB0aGVuXG4gICAgICAgICAgICBcIlJBV19TTkFQU0hPVFwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCJTTkFQU0hPVFwiKVxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBQUklOVCAoZmlsZSwgZXhwcikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiUFJJTlRcIjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZTtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZXhwcjtcbiAgICAgIF1cbiAgfCBQTE9URU5UUlkgLT4gYFN0cmluZyBcIlBMT1RFTlRSWVwiXG4gIHwgQ0ZMT1dMQUJFTCAoYiwgaWQpIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwiQ0ZMT1dMQUJFTFwiOyBgQm9vbCBiOyBzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgaWQgXVxuICB8IENGTE9XTUlYIChiLCBtKSAtPlxuICAgIGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XXCI7IGBCb29sIGI7IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfbWl4IG0gXVxuICB8IERJTiAoYiwgZmlsZSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElOXCI7XG4gICAgICAgIFByaW1pdGl2ZXMuZGluX2tpbmRfdG9feW9qc29uIGI7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGU7XG4gICAgICBdXG4gIHwgRElOT0ZGIGZpbGUgLT5cbiAgICBgTGlzdFxuICAgICAgKGBTdHJpbmcgXCJESU5PRkZcIlxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgZmlsZVxuICAgICAgKVxuICB8IFNQRUNJRVNfT0YgKGIsIGwsIG0pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIlNQRUNJRVNfT0ZcIjtcbiAgICAgICAgYEJvb2wgYjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgbDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbTtcbiAgICAgIF1cblxubGV0IG1vZGlmX29mX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJBUFBMWVwiOyBhbGc7IG1peCBdIC0+XG4gICAgQVBQTFlcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGcsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKHJ1bGVfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgbWl4IClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJVUERBVEVcIjsgaWQ7IGFsZyBdIC0+XG4gICAgVVBEQVRFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfdmFyIGlkLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZyApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJTVE9QXCIgOjogbCkgLT5cbiAgICBTVE9QIChMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiU05BUFNIT1RcIiA6OiBsKSAtPlxuICAgIFNOQVBTSE9UXG4gICAgICAoIGZhbHNlLFxuICAgICAgICBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsIClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIlJBV19TTkFQU0hPVFwiIDo6IGwpIC0+XG4gICAgU05BUFNIT1RcbiAgICAgICh0cnVlLCBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlBSSU5UXCI7IGZpbGU7IGV4cHIgXSAtPlxuICAgIFBSSU5UXG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGV4cHIgKVxuICB8IGBTdHJpbmcgXCJQTE9URU5UUllcIiAtPiBQTE9URU5UUllcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV0xBQkVMXCI7IGBCb29sIGI7IGlkIF0gLT5cbiAgICBDRkxPV0xBQkVMIChiLCBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcyBpZClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV1wiOyBgQm9vbCBiOyBtIF0gLT5cbiAgICBDRkxPV01JWCAoYiwgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESU5cIjsgYjsgZmlsZSBdIC0+XG4gICAgRElOXG4gICAgICAoIFByaW1pdGl2ZXMuZGluX2tpbmRfb2ZfeW9qc29uIGIsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUgKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiRElOT0ZGXCIgOjogZmlsZSkgLT5cbiAgICBESU5PRkZcbiAgICAgIChMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBmaWxlKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlNQRUNJRVNfT0ZcIjsgYEJvb2wgYjsgZmlsZTsgbSBdIC0+XG4gICAgU1BFQ0lFU19PRlxuICAgICAgKCBiLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtIClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbW9kaWZpY2F0aW9uXCIsIHgpKVxuXG5sZXQgbWVyZ2VfaW50ZXJuYWxfbW9kIGFjYyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBhY2NcbiAgfCBTb21lICh4LCBwb3MpIC0+XG4gICAgbGV0IHhfb3AgPSBTb21lIHggaW5cbiAgICBpZiBMaXN0LmV4aXN0cyAoZnVuICh4JywgXykgLT4geF9vcCA9IHgnKSBhY2MgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgKHhfb3AsIHBvcykgOjogYWNjXG5cbmxldCBtZXJnZV9pbnRlcm5hbHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoKHgsIF8pIGFzIHkpIC0+XG4gICAgICBpZlxuICAgICAgICB4ID0gTm9uZVxuICAgICAgICB8fCBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgIChmdW4gKHgnLCBfKSAtPlxuICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuZXF1YWwgKGZ1biB4IHgnIC0+IFN0cmluZy5jb21wYXJlIHggeCcgPSAwKSB4IHgnKVxuICAgICAgICAgICAgIGFjY1xuICAgICAgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgeSA6OiBhY2MpXG5cbmxldCByZWMgbWVyZ2Vfc2l0ZXNfY291bnRlciBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbIENvdW50ZXIgYyBdXG4gIHwgQ291bnRlciBjJyA6OiBfIGFzIGwgd2hlbiBmc3QgYy5jb3VudGVyX3NpZ19uYW1lID0gZnN0IGMnLmNvdW50ZXJfc2lnX25hbWVcbiAgICAtPlxuICAgIGxcbiAgfCAoKFBvcnQgXyB8IENvdW50ZXIgXykgYXMgaCkgOjogdCAtPiBoIDo6IG1lcmdlX3NpdGVzX2NvdW50ZXIgYyB0XG5cbmxldCByZWMgbWVyZ2Vfc2l0ZXNfcG9ydCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbIFBvcnQgeyBwIHdpdGggcG9ydF9saW5rID0gW10gfSBdXG4gIHwgUG9ydCBoIDo6IHQgd2hlbiBmc3QgcC5wb3J0X25hbWUgPSBmc3QgaC5wb3J0X25hbWUgLT5cbiAgICBQb3J0XG4gICAgICB7XG4gICAgICAgIGggd2l0aFxuICAgICAgICBwb3J0X2ludCA9XG4gICAgICAgICAgbWVyZ2VfaW50ZXJuYWxfbW9kXG4gICAgICAgICAgICAobWVyZ2VfaW50ZXJuYWxzIGgucG9ydF9pbnQgcC5wb3J0X2ludClcbiAgICAgICAgICAgIHAucG9ydF9pbnRfbW9kO1xuICAgICAgfVxuICAgIDo6IHRcbiAgfCAoKFBvcnQgXyB8IENvdW50ZXIgXykgYXMgaCkgOjogdCAtPiBoIDo6IG1lcmdlX3NpdGVzX3BvcnQgcCB0XG5cbmxldCBtZXJnZV9zaXRlcyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgfCBQb3J0IHAgLT4gbWVyZ2Vfc2l0ZXNfcG9ydCBwIGFjY1xuICAgIHwgQ291bnRlciBjIC0+IG1lcmdlX3NpdGVzX2NvdW50ZXIgKGNvdW50ZXJfc2lnX29mX2NvdW50ZXIgYykgYWNjKVxuXG5sZXQgbWVyZ2VfYWdlbnRzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAoYWNjIDogYWdlbnRfc2lnIGxpc3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBBYnNlbnQgXyAtPiBhY2NcbiAgICAgICB8IFByZXNlbnQgKCgobmEsIF8pIGFzIHgpLCAocyA6IGNvdW50ZXIgc2l0ZSBsaXN0KSwgXykgLT5cbiAgICAgICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIFByZXNlbnRcbiAgICAgICAgICAgICAgICAgKCB4LFxuICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgfCBQb3J0IHAgLT4gUG9ydCB7IHAgd2l0aCBwb3J0X2xpbmsgPSBbXSB9XG4gICAgICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBfIGFzIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXBfY291bnRlcnNfaW5fc2l0ZSBjb3VudGVyX3NpZ19vZl9jb3VudGVyIHgpXG4gICAgICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgICAgIE5vTW9kICk7XG4gICAgICAgICAgICAgXVxuICAgICAgICAgICB8IFByZXNlbnQgKChuYScsIF8pLCBzJywgXykgOjogdCB3aGVuIFN0cmluZy5jb21wYXJlIG5hIG5hJyA9IDAgLT5cbiAgICAgICAgICAgICBQcmVzZW50ICh4LCBtZXJnZV9zaXRlcyBzJyBzLCBOb01vZCkgOjogdFxuICAgICAgICAgICB8ICgoUHJlc2VudCBfIHwgQWJzZW50IF8pIGFzIGgpIDo6IHQgLT4gaCA6OiBhdXggdFxuICAgICAgICAgaW5cbiAgICAgICAgIGF1eCBhY2MpKVxuXG5sZXQgbWVyZ2VfdG9rZW5zID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKF8sICgobmEsIF8pIGFzIHRvaykpIC0+XG4gICAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gWyB0b2sgXVxuICAgICAgICB8IChuYScsIF8pIDo6IF8gYXMgbCB3aGVuIFN0cmluZy5jb21wYXJlIG5hIG5hJyA9IDAgLT4gbFxuICAgICAgICB8IGggOjogdCBhcyBsIC0+XG4gICAgICAgICAgbGV0IG8gPSBhdXggdCBpblxuICAgICAgICAgIGlmIHQgPT0gbyB0aGVuXG4gICAgICAgICAgICBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaCA6OiBvXG4gICAgICBpblxuICAgICAgYXV4IGFjYylcblxubGV0IHNpZ19mcm9tX2luaXRzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biAoYWdzLCB0b2tzKSAtPiBmdW5jdGlvblxuICAgIHwgXywgSU5JVF9NSVggKG0sIF8pIC0+IG1lcmdlX2FnZW50cyBhZ3MgbSwgdG9rc1xuICAgIHwgbmEsIElOSVRfVE9LIGwgLT4gYWdzLCBtZXJnZV90b2tlbnMgdG9rcyAoTGlzdC5tYXAgKGZ1biB4IC0+IG5hLCB4KSBsKSlcblxubGV0IHNpZ19mcm9tX3J1bGUgKGFncywgdG9rcykgciA9XG4gIG1hdGNoIHIucmV3cml0ZSB3aXRoXG4gIHwgRWRpdCBlIC0+IG1lcmdlX2FnZW50cyBhZ3MgZS5taXgsIG1lcmdlX3Rva2VucyB0b2tzIGUuZGVsdGFfdG9rZW5cbiAgfCBBcnJvdyBhIC0+XG4gICAgbGV0IGFncycsIHRva3MnID1cbiAgICAgIGlmIHIuYmlkaXJlY3Rpb25hbCB0aGVuXG4gICAgICAgIG1lcmdlX2FnZW50cyBhZ3MgYS5yaHMsIG1lcmdlX3Rva2VucyB0b2tzIGEuYWRkX3Rva2VuXG4gICAgICBlbHNlXG4gICAgICAgIGFncywgdG9rc1xuICAgIGluXG4gICAgbWVyZ2VfYWdlbnRzIGFncycgYS5saHMsIG1lcmdlX3Rva2VucyB0b2tzJyBhLnJtX3Rva2VuXG5cbmxldCBzaWdfZnJvbV9ydWxlcyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gcCAoXywgKHIsIF8pKSAtPiBzaWdfZnJvbV9ydWxlIHAgcilcblxubGV0IHNpZ19mcm9tX3BlcnRzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKChfLCBfLCBwLCBfKSwgXykgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gcCAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgQVBQTFkgKF8sIChyLCBfKSkgLT4gc2lnX2Zyb21fcnVsZSBwIHJcbiAgICAgICAgICB8IFVQREFURSBfIHwgU1RPUCBfIHwgU05BUFNIT1QgXyB8IFBSSU5UIF8gfCBQTE9URU5UUlkgfCBDRkxPV0xBQkVMIF9cbiAgICAgICAgICB8IENGTE9XTUlYIF8gfCBESU4gXyB8IERJTk9GRiBfIHwgU1BFQ0lFU19PRiBfIC0+XG4gICAgICAgICAgICBwKVxuICAgICAgICBhY2MgcClcblxubGV0IGluZmVyX2FnZW50X3NpZ25hdHVyZXMgciA9XG4gIGxldCBhY2MgPSBzaWdfZnJvbV9pbml0cyAoci5zaWduYXR1cmVzLCByLnRva2Vucykgci5pbml0IGluXG4gIGxldCBhY2MnID0gc2lnX2Zyb21fcnVsZXMgYWNjIHIucnVsZXMgaW5cbiAgbGV0IGFncywgdG9rcyA9IHNpZ19mcm9tX3BlcnRzIGFjYycgci5wZXJ0dXJiYXRpb25zIGluXG4gIHsgciB3aXRoIHNpZ25hdHVyZXMgPSBhZ3M7IHRva2VucyA9IHRva3MgfVxuXG5sZXQgc3BsaXRfbWl4dHVyZSBtID1cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biBsIChsaHMsIHJocykgLT5cbiAgICAgIGxldCBsbCwgcnIgPVxuICAgICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgICAoZnVuIGFnICgobGhzLCByaHMpIGFzIHBhY2spIC0+XG4gICAgICAgICAgICBtYXRjaCBhZyB3aXRoXG4gICAgICAgICAgICB8IEFic2VudCBfIC0+IHBhY2tcbiAgICAgICAgICAgIHwgUHJlc2VudCAoKChfLCBwb3MpIGFzIG5hKSwgaW50ZiwgbW9kaWYpIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBtb2RpZiB3aXRoXG4gICAgICAgICAgICAgIHwgQ3JlYXRlIC0+IEFic2VudCBwb3MgOjogbGhzLCBQcmVzZW50IChuYSwgaW50ZiwgTm9Nb2QpIDo6IHJoc1xuICAgICAgICAgICAgICB8IEVyYXNlIC0+IFByZXNlbnQgKG5hLCBpbnRmLCBOb01vZCkgOjogbGhzLCBBYnNlbnQgcG9zIDo6IHJoc1xuICAgICAgICAgICAgICB8IE5vTW9kIC0+XG4gICAgICAgICAgICAgICAgbGV0IGludGZsLCBpbnRmciA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIChsLCByKSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIFBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X25hbWUgPSBwLnBvcnRfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50ID0gcC5wb3J0X2ludDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50X21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmsgPSBwLnBvcnRfbGluaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGlua19tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IHAucG9ydF9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcC5wb3J0X2ludF9tb2Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gcC5wb3J0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKHgsIHBvcykgLT4gWyBTb21lIHgsIHBvcyBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50X21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcC5wb3J0X2xpbmtfbW9kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHAucG9ydF9saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgKGksIHBvcykpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcyBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGlua19tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogciApXG4gICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYyB3aXRoIGNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBOb25lIH0gOjogciApKVxuICAgICAgICAgICAgICAgICAgICAoW10sIFtdKSBpbnRmXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoIFByZXNlbnQgKG5hLCBpbnRmbCwgTm9Nb2QpIDo6IGxocyxcbiAgICAgICAgICAgICAgICAgIFByZXNlbnQgKG5hLCBpbnRmciwgTm9Nb2QpIDo6IHJocyApKSlcbiAgICAgICAgICBsIChbXSwgW10pXG4gICAgICBpblxuICAgICAgbGwgOjogbGhzLCByciA6OiByaHMpXG4gICAgbSAoW10sIFtdKVxuXG5sZXQgY29tcGlsX3RvX2pzb24gYyA9XG4gIGxldCBmaWxlcyA9XG4gICAgQXJyYXkub2ZfbGlzdCAoTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lIDo6IGMuZmlsZW5hbWVzKVxuICBpblxuICBsZXQgZmlsZW5hbWVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWFwIHggLT4gTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBmaWxlc1xuICBpblxuICBsZXQgbWl4X3RvX2pzb24gPVxuICAgIEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgaW5cbiAgbGV0IHZhcl90b19qc29uID0gSnNvblV0aWwub2Zfc3RyaW5nIGluXG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwiZmlsZW5hbWVzXCIsIEpzb25VdGlsLm9mX2FycmF5IEpzb25VdGlsLm9mX3N0cmluZyBmaWxlcztcbiAgICAgIFwic2lnbmF0dXJlc1wiLCBKc29uVXRpbC5vZl9saXN0IChhZ2VudF9zaWdfdG9fanNvbiBmaWxlbmFtZXMpIGMuc2lnbmF0dXJlcztcbiAgICAgIFwidG9rZW5zXCIsIEpzb25VdGlsLm9mX2xpc3QgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykgYy50b2tlbnM7XG4gICAgICAoIFwidmFyaWFibGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKSlcbiAgICAgICAgICBjLnZhcmlhYmxlcyApO1xuICAgICAgKCBcInJ1bGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKSlcbiAgICAgICAgICBjLnJ1bGVzICk7XG4gICAgICAoIFwib2JzZXJ2YWJsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICBjLm9ic2VydmFibGVzICk7XG4gICAgICAoIFwiaW5pdFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgKGluaXRfdG9fanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICBjLmluaXQgKTtcbiAgICAgICggXCJwZXJ0dXJiYXRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGZ1biAoYWxhcm0sIHByZSwgbW9kaWYsIHBvc3QpIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIE5ici50b195b2pzb24gYWxhcm07XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwcmU7XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgKG1vZGlmX3RvX2pzb24gZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKVxuICAgICAgICAgICAgICAgICAgICAgbW9kaWY7XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwb3N0O1xuICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBjLnBlcnR1cmJhdGlvbnMgKTtcbiAgICAgICggXCJjb25maWd1cmF0aW9uc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpKSlcbiAgICAgICAgICBjLmNvbmZpZ3VyYXRpb25zICk7XG4gICAgXVxuXG5sZXQgY29tcGlsX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gOSAtPlxuICAgIGxldCB2YXJfb2ZfanNvbiA9IEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUgaW5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGVuYW1lcyA9XG4gICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJmaWxlbmFtZXNcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IG1peF9vZl9qc29uID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2xpc3QgKGFnZW50X29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICBpblxuICAgICAgIHtcbiAgICAgICAgIGZpbGVuYW1lcyA9IExpc3QudGwgKEFycmF5LnRvX2xpc3QgZmlsZW5hbWVzKTtcbiAgICAgICAgIHNpZ25hdHVyZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHNpZ25hdHVyZVwiKVxuICAgICAgICAgICAgIChhZ2VudF9zaWdfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJzaWduYXR1cmVzXCIgbCk7XG4gICAgICAgICB0b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHRva2VuIHNpZ1wiKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInRva2Vuc1wiIGwpO1xuICAgICAgICAgdmFyaWFibGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCB2YXJpYWJsZXNcIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidmFyaWFibGVzXCIgbCk7XG4gICAgICAgICBydWxlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgcnVsZXNcIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAocnVsZV9vZl9qc29uIGZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicnVsZXNcIiBsKTtcbiAgICAgICAgIG9ic2VydmFibGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBvYnNlcnZhYmxlc1wiKVxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcIm9ic2VydmFibGVzXCIgbCk7XG4gICAgICAgICBpbml0ID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBpbml0XCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgKGluaXRfb2ZfanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImluaXRcIiBsKTtcbiAgICAgICAgIHBlcnR1cmJhdGlvbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHBlcnR1cmJhdGlvbnNcIilcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgYWxhcm07IHByZTsgbW9kaWY7IHBvc3QgXSAtPlxuICAgICAgICAgICAgICAgICAoIEpzb25VdGlsLnRvX29wdGlvbiBOYnIub2ZfeW9qc29uIGFsYXJtLFxuICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgICAgICAgICAgcHJlLFxuICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgIChtb2RpZl9vZl9qc29uIGZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbilcbiAgICAgICAgICAgICAgICAgICAgIG1vZGlmLFxuICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgICAgICAgICAgcG9zdCApXG4gICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgcGVydHVyYmF0aW9uXCIsIHgpKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJwZXJ0dXJiYXRpb25zXCIgbCk7XG4gICAgICAgICBjb25maWd1cmF0aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgY29uZmlndXJhdGlvblwiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19saXN0IChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiY29uZmlndXJhdGlvbnNcIiBsKTtcbiAgICAgICAgIHZvbHVtZXMgPSBbXTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUXCIsIHgpKVxuXG5sZXQgd3JpdGVfcGFyc2luZ19jb21waWwgYiBhc3QgPSBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiIChjb21waWxfdG9fanNvbiBhc3QpXG5sZXQgcmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiID0gY29tcGlsX29mX2pzb24gKFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYilcbmxldCBwcmludF9hc3RfbWl4ID0gcHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB3aXRoX2FnZW50X2NvdW50ZXJzID0ge1xuICBhZ2VudDogJ2E7XG4gIGNvdW50ZXJzOiAoQXN0LmNvdW50ZXIgKiBMS2FwcGEuc3dpdGNoaW5nKSBvcHRpb24gYXJyYXk7XG59XG5cbnR5cGUgcnVsZV9taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMgPVxuICBMS2FwcGEucnVsZV9hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzIGxpc3RcblxudHlwZSByYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgUmF3X21peHR1cmUuYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycyBsaXN0XG5cbnR5cGUgY3Zhcl92YWx1ZSA9IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogaW50IH1cblxuKCoqIFtjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwIGxzMSBsczJdXG4gKiBFYWNoIGVsZW1lbnQgb2YgW2xzMV0gZGVzY3JpYmVzIGEgc2V0dXAgb2YgY291bnRlciB2YXJpYWJsZXMsIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGJlaW5nIHRoZSBsaXN0IG9mIGVudGl0aWVzIHRvIGJlIHVzZWQgaW4gdGhlIG1vZGVsLCB3aGVyZSB2YXJpYWJsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBjb3VudGVycywgYW5kIHRoZSBzZWNvbmQgb25lIHRoZSBtYXBwaW5nIG9mIHZhcmlhYmxlcyB0byB0aGVpciB2YWx1ZXMsIHRoYXQgYWxsb3dzIHRvIGtub3cgd2hpY2ggaW5zdGFuY2Ugb2YgbW9kZWwgZW50aXRpZXMgd291bGQgYmUgY2hvc2VuIGluIHRoaXMgZ2l2ZW4gc2V0dXAuXG4gKiBbbHMyXSBhZGRzIGEgbmV3IGVudGl0eSB3aXRoIGRpZmZlcmVudCBraW5kcyBhY2NvcmRpbmcgdG8gdGhlIHZhcmlhYmxlIHZhbHVlcyBnaXZlbiBpbiB0aGUgbGlzdCBhcyBzZWNvbmQgbWVtYmVyIG9mIHRoZSB0dXBsZSwgd2hpY2ggaXMgdGhlbiBjb21iaW5lZCBpbiB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIG90aGVyIHNldHVwcywgY29tYmluaW5nIHRoZSBkaWZmZXJlbnQgdmFyaWFibGUgdmFsdWVzIHdoaWNoIHRob3NlIGFscmVhZHkgZGVmaW5lZC5cbiAqIE5vIGNoZWNrIGlzIGRvbmUgb24gdGhlIHVuaWNpdHkgb2YgdGhlIGRlc2NyaWJlZCB2YXJpYWJsZXMgYW5kIHRoZWlyIHZhbHVlcyAqKVxubGV0IGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXAgKGxzMSA6ICgnYSBsaXN0ICogJ2IgbGlzdCkgbGlzdClcbiAgICAobHMyIDogKCdhICogJ2IgbGlzdCkgbGlzdCkgOiAoJ2EgbGlzdCAqICdiIGxpc3QpIGxpc3QgPVxuICBpZiBsczEgPSBbXSB0aGVuXG4gICAgcmFpc2UgRXhpdCAoKkxpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIChiLCBkcykgLT4gKFsgYiBdLCBkcykgOjogYWNjKSBbXSBsczIqKVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChhLCBjcykgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MnIChiLCBkcykgLT4gKGIgOjogYSwgZHMgQCBjcykgOjogYWNjJykgYWNjIGxzMilcbiAgICAgIFtdIGxzMVxuXG5sZXQgdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIChrLCBhKSA9XG4gIGxldCB1cGRhdGVfaWQgcyBrID1cbiAgICBsZXQgY291bnRlcnNfbWF0Y2hpbmdfcywgXyA9XG4gICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAoZnVuIHZhcl92YWx1ZSAtPiBTdHJpbmcuY29tcGFyZSBzIHZhcl92YWx1ZS5uYW1lID0gMClcbiAgICAgICAgY291bnRlcl92YXJfdmFsdWVzXG4gICAgaW5cbiAgICBtYXRjaCBjb3VudGVyc19tYXRjaGluZ19zIHdpdGhcbiAgICB8IFsgdmFyX3ZhbHVlIF0gLT4gQWxnX2V4cHIuQ09OU1QgKE5ici5JIHZhcl92YWx1ZS52YWx1ZSlcbiAgICB8IFtdIC0+IGtcbiAgICB8IF8gOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiQ291bnRlciB2YXJpYWJsZSBcIiBeIHMgXiBcIiBhcHBlYXJzIHR3aWNlIGluIHJ1bGVcIiwgTG9jLmR1bW15KSlcbiAgaW5cbiAgbGV0IHJlYyB1cGRhdGVfYm9vbF9leHByIGsgPVxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgQWxnX2V4cHIuVFJVRSB8IEFsZ19leHByLkZBTFNFIC0+IGtcbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgKGsxLCBhMSksIChrMiwgYTIpKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0JPT0xfT1BcbiAgICAgICAgKG9wLCAodXBkYXRlX2Jvb2xfZXhwciBrMSwgYTEpLCAodXBkYXRlX2Jvb2xfZXhwciBrMiwgYTIpKVxuICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIChrLCBhKSkgLT5cbiAgICAgIEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCAodXBkYXRlX2Jvb2xfZXhwciBrLCBhKSlcbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpKVxuICBhbmQgdXBkYXRlX2V4cHIgayA9XG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKGsxLCBhMSksIChrMiwgYTIpKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsICh1cGRhdGVfZXhwciBrMSwgYTEpLCAodXBkYXRlX2V4cHIgazIsIGEyKSlcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIChrMSwgYTEpKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSkpXG4gICAgfCBBbGdfZXhwci5JRiAoKGsxLCBhMSksIChrMiwgYTIpLCAoazMsIGEzKSkgLT5cbiAgICAgIEFsZ19leHByLklGXG4gICAgICAgICgodXBkYXRlX2Jvb2xfZXhwciBrMSwgYTEpLCAodXBkYXRlX2V4cHIgazIsIGEyKSwgKHVwZGF0ZV9leHByIGszLCBhMykpXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOICgoazEsIGExKSwgazIpIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX1RPS0VOICgodXBkYXRlX2V4cHIgazEsIGExKSwgazIpXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgoaywgYSksIG0pIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgodXBkYXRlX2V4cHIgaywgYSksIG0pXG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGlkIHwgQWxnX2V4cHIuVE9LRU5fSUQgaWQgLT4gdXBkYXRlX2lkIGlkIGtcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgIGtcbiAgaW5cbiAgdXBkYXRlX2V4cHIgaywgYVxuXG5sZXQgY29sbGVjdF9pZHMgZXhwcl9saXN0IDogTW9kcy5TdHJpbmdTZXQudCA9XG4gIGxldCByZWMgYXV4X2V4cHIgZXhwciBhY2MgPVxuICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoXywgKGsxLCBfKSwgKGsyLCBfKSkgLT4gYXV4X2V4cHIgazIgKGF1eF9leHByIGsxIGFjYylcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAoXywgKGsxLCBfKSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKChrMSwgXyksIF8pXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgoazEsIF8pLCBfKSAtPlxuICAgICAgYXV4X2V4cHIgazEgYWNjXG4gICAgfCBBbGdfZXhwci5JRiAoKGsxLCBfKSwgKGsyLCBfKSwgKGszLCBfKSkgLT5cbiAgICAgIGF1eF9leHByIGszIChhdXhfZXhwciBrMiAoYXV4X2Jvb2wgazEgYWNjKSlcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBhdXhfaWQgaWQgYWNjXG4gICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgICBhY2NcbiAgYW5kIGF1eF9pZCBpZCBhY2MgPSBNb2RzLlN0cmluZ1NldC5hZGQgaWQgYWNjXG4gIGFuZCBhdXhfYm9vbCBleHByIGFjYyA9XG4gICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4gYWNjXG4gICAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgKGsxLCBfKSwgKGsyLCBfKSkgLT5cbiAgICAgIGF1eF9ib29sIGsyIChhdXhfYm9vbCBrMSBhY2MpXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCAoaywgXykpIC0+IGF1eF9ib29sIGsgYWNjXG4gICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPiBhdXhfZXhwciBrMiAoYXV4X2V4cHIgazEgYWNjKVxuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGV4cHJfb3B0IC0+XG4gICAgICBtYXRjaCBleHByX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgKGV4cHIsIF8pIC0+IGF1eF9leHByIGV4cHIgYWNjKVxuICAgIE1vZHMuU3RyaW5nU2V0LmVtcHR5IGV4cHJfbGlzdFxuXG5sZXQgbmFtZV9tYXRjaCAocywgXykgKHMnLCBfKSA9IFN0cmluZy5jb21wYXJlIHMgcycgPSAwXG5cbmxldCBwcmVwYXJlX2FnZW50IHJzaXRlcyBsc2l0ZXMgPVxuICBsZXQgcmVjIHByZXBhcmVfc2l0ZSBzaXRlcyBjID1cbiAgICBtYXRjaCBzaXRlcyB3aXRoXG4gICAgfCBbXSAtPiBbIEFzdC5Db3VudGVyIGMgXVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBoZCB3aXRoXG4gICAgICB8IEFzdC5Db3VudGVyIGMnIHdoZW4gbmFtZV9tYXRjaCBjLkFzdC5jb3VudGVyX25hbWUgYycuQXN0LmNvdW50ZXJfbmFtZSAtPlxuICAgICAgICBBc3QuQ291bnRlciB7IGMnIHdpdGggQXN0LmNvdW50ZXJfZGVsdGEgPSBjLkFzdC5jb3VudGVyX2RlbHRhIH0gOjogdGxcbiAgICAgIHwgQXN0LkNvdW50ZXIgXyB8IEFzdC5Qb3J0IF8gLT4gaGQgOjogcHJlcGFyZV9zaXRlIHRsIGMpXG4gIGluXG4gIGxldCBjb3VudGVycyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjJyByc2l0ZSAtPlxuICAgICAgICBtYXRjaCByc2l0ZSB3aXRoXG4gICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MnXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBjIDo6IGFjYycpXG4gICAgICBbXSByc2l0ZXNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgcHJlcGFyZV9zaXRlIGxzaXRlcyBjb3VudGVyc1xuXG4oKiAtIGFkZCBpbiB0aGUgbGhzIDogKGkpIGNvdW50ZXJzIG9ubHkgbWVudGlvbmVkIGluIHRoZSByaHMgYW5kIChpaSkgdGhlIGRlbHRhc1xuICAgLSBzeW50YWN0aWMgY2hlY2tzIG9mIG5vIHRlc3QgaW4gcmhzOyBubyBtb2RpZiBpbiBsaHMgKilcbmxldCBwcmVwYXJlX2NvdW50ZXJzIHJ1bGVzID1cbiAgbGV0IGNoZWNrX3N5bnRheCBzaXRlcyBmIGVycm9yID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gKClcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICAgICAgaWYgZiBjIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5Bc3QuY291bnRlcl9uYW1lIF4gZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjLkFzdC5jb3VudGVyX25hbWUgKSkpXG4gICAgICBzaXRlc1xuICBpblxuXG4gIGxldCByZWMgcHJlcGFyZV9saHNfcnVsZSByaHMgbGhzID1cbiAgICBtYXRjaCByaHMsIGxocyB3aXRoXG4gICAgfCBBc3QuUHJlc2VudCAocm5hLCByc2l0ZXMsIF8pIDo6IHIsIEFzdC5QcmVzZW50IChsbmEsIGxzaXRlcywgYikgOjogbCAtPlxuICAgICAgY2hlY2tfc3ludGF4IGxzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChMb2MudiBjLmNvdW50ZXJfZGVsdGEgPSAwKSlcbiAgICAgICAgXCIgaGFzIGEgbW9kaWYgaW4gdGhlIGxoc1wiO1xuICAgICAgY2hlY2tfc3ludGF4IHJzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChjLmNvdW50ZXJfdGVzdCA9IE5vbmUpKVxuICAgICAgICBcIiBoYXMgYSB0ZXN0IGluIHRoZSByaHNcIjtcbiAgICAgIGlmIFN0cmluZy5jb21wYXJlIChMb2MudiBybmEpIChMb2MudiBsbmEpID0gMCB0aGVuIChcbiAgICAgICAgbGV0IGxzaXRlcycgPSBwcmVwYXJlX2FnZW50IHJzaXRlcyBsc2l0ZXMgaW5cbiAgICAgICAgQXN0LlByZXNlbnQgKGxuYSwgbHNpdGVzJywgYikgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICAgICkgZWxzZVxuICAgICAgICBsaHNcbiAgICAgICgqVE9ETyB3ZSBzdG9wIG91ciBqb2IgaGVyZS4gTEthcHBhX2NvbXBpbGVyIHdpbGwgZGV0ZWN0XG4gICAgICAgIGxhdGVyIHRoYXQgdGhlcmUgaXMgYSBwcm9ibGVtICopXG4gICAgfCBfIDo6IHIsIChBc3QuQWJzZW50IF8gYXMgbGFnZW50KSA6OiBsIC0+XG4gICAgICAoKmNyZWF0ZWQgYWdlbnQqKVxuICAgICAgKCogVE9ETyBNYXliZSBzb21lIHN5bnRheCBjaGVjayBvbiByaHMgYXJlIG5lY2Vzc2FyeSBoZXJlICopXG4gICAgICBsYWdlbnQgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICB8IEFzdC5BYnNlbnQgXyA6OiByLCAoQXN0LlByZXNlbnQgKF8sIGxzaXRlcywgXykgYXMgbGFnZW50KSA6OiBsIC0+XG4gICAgICAoKmRlbGV0ZWQgIGFnZW50KilcbiAgICAgIGNoZWNrX3N5bnRheCBsc2l0ZXNcbiAgICAgICAgKGZ1biBjIC0+IG5vdCAoTG9jLnYgYy5Bc3QuY291bnRlcl9kZWx0YSA9IDApKVxuICAgICAgICBcIiBoYXMgYSBtb2RpZiBpbiB0aGUgbGhzXCI7XG4gICAgICBsYWdlbnQgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICB8IFtdLCB4IC0+XG4gICAgICB4XG4gICAgICAoKiBUT0RPIHggbXVzdCBiZSBbXSBidXQgaXQgaXMgZm9yIG5vdyBMS2FwcGFfY29tcGlsZXJcbiAgICAgICAgIGR1dHkgdG8gY29tcGxhaW4gKilcbiAgICB8IF94LCBbXSAtPiAoKlRPRE8gbGV0ICgpID0gYXNzZXJ0IChfeCA9IFtdKSBpbiopIFtdXG4gIGluXG5cbiAgbGV0IGF1eCAocnVsZSA6IEFzdC5ydWxlKSA6IEFzdC5ydWxlID1cbiAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgIHwgQXN0LkVkaXQgXyAtPiBydWxlXG4gICAgfCBBc3QuQXJyb3cgY29udGVudCAtPlxuICAgICAge1xuICAgICAgICBydWxlIHdpdGhcbiAgICAgICAgcmV3cml0ZSA9XG4gICAgICAgICAgQXN0LkFycm93XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICBBc3QubGhzID1cbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBwcmVwYXJlX2xoc19ydWxlIChMaXN0LmZsYXR0ZW4gY29udGVudC5yaHMpXG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmZsYXR0ZW4gY29udGVudC5saHMpO1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9O1xuICAgICAgfVxuICBpblxuICBMaXN0Lm1hcCAoZnVuIChzLCAociwgYSkpIC0+IHMsIChhdXggciwgYSkpIHJ1bGVzXG5cbmxldCBjb3VudGVyc19zaWduYXR1cmUgcyBhZ2VudHMgPVxuICBtYXRjaFxuICAgIExpc3QuZmluZFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGZhbHNlXG4gICAgICAgIHwgQXN0LlByZXNlbnQgKHMnLCBfLCBfKSAtPiBuYW1lX21hdGNoIHMgcycpXG4gICAgICBhZ2VudHNcbiAgd2l0aFxuICB8IEFzdC5BYnNlbnQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMnLCBfKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBzIC0+XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT4gYyA6OiBhY2NcbiAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYylcbiAgICAgIFtdIHNpdGVzJ1xuXG4oKiogW3NwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgdmFyX25hbWUgYW5ub3QgY291bnRlcl9kZWx0YSBjb3VudGVyX2RlZl0gdHJhbnNsYXRlcyBhIGNvdW50ZXIgQ1ZBUiB3aG9zZSB2YWx1ZSBhY3RzIHVwb24gdGhlIHJhdGUgZXhwcmVzc2lvbiBpbnRvIGEgcnVsZSBwZXIgcG9zc2libGUgdmFsdWUsIHRoYXQgYXJlIHNlbGVjdGVkIGJ5IGEgQ0VRwqBleHByZXNzaW9uLlxuICogKilcbmxldCBzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlICh2YXJfbmFtZSA6IHN0cmluZykgKGFubm90IDogTG9jLnQpXG4gICAgKGNvdW50ZXJfZGVsdGEgOiBpbnQgTG9jLmFubm90ZWQpIChjb3VudGVyX2RlZiA6IEFzdC5jb3VudGVyX3NpZykgOlxuICAgIChBc3QuY291bnRlciBBc3Quc2l0ZSAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9XG4gIGxldCAobWluX3ZhbHVlLCBtYXhfdmFsdWUpIDogaW50ICogaW50ID1cbiAgICBtYXRjaCBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgfCBTb21lIChTb21lIG1pbl9sb2MsIF8pLCBTb21lIChTb21lIG1heF9sb2MsIF8pIC0+IG1pbl9sb2MsIG1heF9sb2NcbiAgICB8IChOb25lIHwgU29tZSAoTm9uZSwgXykpLCBfIHwgXywgKE5vbmUgfCBTb21lIChOb25lLCBfKSkgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICggXCJJbnZhbGlkIGNvdW50ZXIgc2lnbmF0dXJlIC0gaGF2ZSB0byBzcGVjaWZ5IG1pbi9tYXggYm91bmRcIixcbiAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX25hbWUgKSlcbiAgaW5cbiAgKCogTWFrZSBDRVEgY291bnRlcnMgd2l0aCBhbGwgcG9zc2libGUgdmFsdWVzIG9mIHZhcmlhYmxlICopXG4gIGxldCByZWMgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSA6IGludCkgOlxuICAgICAgKEFzdC5jb3VudGVyIEFzdC5zaXRlICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID1cbiAgICBpZiB2YWx1ZSA+IG1heF92YWx1ZSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2UgaWZcbiAgICAgIHZhbHVlICsgTG9jLnYgY291bnRlcl9kZWx0YSA8PSBtYXhfdmFsdWVcbiAgICAgICYmIHZhbHVlICsgTG9jLnYgY291bnRlcl9kZWx0YSA+PSAwXG4gICAgdGhlblxuICAgICAgKCBBc3QuQ291bnRlclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19uYW1lO1xuICAgICAgICAgICAgY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNFUSB2YWx1ZSwgYW5ub3QpO1xuICAgICAgICAgICAgY291bnRlcl9kZWx0YTtcbiAgICAgICAgICB9LFxuICAgICAgICBbIHsgbmFtZSA9IHZhcl9uYW1lOyB2YWx1ZSB9IF0gKVxuICAgICAgOjogbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSArIDEpXG4gICAgZWxzZVxuICAgICAgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSArIDEpXG4gIGluXG4gIG1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbHVlcyBtaW5fdmFsdWVcblxubGV0IGhhc19jb3VudGVycyBjb21waWwgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW5jdGlvblxuICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgIHwgQXN0LlByZXNlbnQgKF8sIHNpdGVzLCBfKSAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQ291bnRlciBfIC0+IHRydWVcbiAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBmYWxzZSlcbiAgICAgICAgICBzaXRlcylcbiAgICBjb21waWwuQXN0LnNpZ25hdHVyZXNcblxuKCoqIFtzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzXSB+d2FybmluZyBydWxlcyBzaWduYXR1cmVzXSByZXBsYWNlcyBjb3VudGVycyB3aXRoIENWQVIgY29udHJhaW50cyB3aXRoIGNvdW50ZXJzIHdpdGggQ0VRIGNvbnRyYWludHMgaW4gW3J1bGVzXSwgaW4gbGlzdHMgd2l0aCB0aGUgdmFyaWFibGUgdmFsdWVzIGFzc29jaWF0ZWQsIHNvIHRoYXQgaW4gc2ltdWxhdGlvbiwgY29ycmVjdCBjb3VudGVyIGNvbmRpdGlvbnMgYXJlIGJlaW5nIHNlbGVjdGVkLiBUaGUgbWFpbiBvcGVyYXRpb24gaGFwcGVucyBpbiBbc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZV0gKilcbmxldCBzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nIHJ1bGVzIHNpZ25hdHVyZXMgPVxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZSBpZHMgY291bnRlcl9kZWZzID0gZnVuY3Rpb25cbiAgICB8IEFzdC5Qb3J0IHAgLT4gWyBBc3QuUG9ydCBwLCBbXSBdXG4gICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICBsZXQgZGVsdGEgPSBMb2MudiBjLkFzdC5jb3VudGVyX2RlbHRhIGluXG4gICAgICAobWF0Y2ggYy5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgfCBTb21lIChBc3QuQ0VRIHZhbHVlLCBfKSAtPlxuICAgICAgICBpZiBkZWx0YSA+IDAgfHwgYWJzIGRlbHRhIDw9IHZhbHVlIHRoZW5cbiAgICAgICAgICBbIEFzdC5Db3VudGVyIGMsIFtdIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLmNvdW50ZXJfbmFtZSBeIFwiIGJlY29tZXMgbmVnYXRpdmVcIixcbiAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjLmNvdW50ZXJfbmFtZSApKVxuICAgICAgfCBTb21lIChBc3QuQ0xURSBfdmFsdWUsIF9hbm5vdCkgLT5cbiAgICAgICAgZmFpbHdpdGggXCJub3QgaW1wbGVtZW50ZWRcIiAoKiBUT0RPwqBOT1cgKilcbiAgICAgIHwgU29tZSAoQXN0LkNHVEUgdmFsdWUsIGFubm90KSAtPlxuICAgICAgICBpZiB2YWx1ZSArIGRlbHRhIDwgMCB0aGVuXG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lIF4gXCIgYmVjb21lcyBuZWdhdGl2ZVwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuY291bnRlcl9uYW1lICkpO1xuICAgICAgICBpZiB2YWx1ZSA9IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yID0gXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWUgXiBcIjo+MCBhbHdheXMgaG9sZHNcIiBpblxuICAgICAgICAgIHdhcm5pbmcgfnBvczphbm5vdCAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIGVycm9yKVxuICAgICAgICApO1xuICAgICAgICBbIEFzdC5Db3VudGVyIGMsIFtdIF1cbiAgICAgIHwgU29tZSAoQXN0LkNWQVIgdmFyX25hbWUsIGFubm90KSB3aGVuIE1vZHMuU3RyaW5nU2V0Lm1lbSB2YXJfbmFtZSBpZHMgLT5cbiAgICAgICAgKCogSWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQgaW4gYW4gcmF0ZSBkZWZpbml0aW9uIGV4cHJlc3Npb24gKilcbiAgICAgICAgbGV0IGNvdW50ZXJfZGVmIDogQXN0LmNvdW50ZXJfc2lnID1cbiAgICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAgIChmdW4gY291bnRlciAtPlxuICAgICAgICAgICAgICBuYW1lX21hdGNoIGMuQXN0LmNvdW50ZXJfbmFtZSBjb3VudGVyLkFzdC5jb3VudGVyX3NpZ19uYW1lKVxuICAgICAgICAgICAgY291bnRlcl9kZWZzXG4gICAgICAgIGluXG5cbiAgICAgICAgc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZSB2YXJfbmFtZSBhbm5vdCBjLmNvdW50ZXJfZGVsdGFcbiAgICAgICAgICBjb3VudGVyX2RlZlxuICAgICAgfCBOb25lIHwgU29tZSAoQXN0LkNWQVIgXywgXykgLT5cbiAgICAgICAgaWYgZGVsdGEgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBjb3VudGVyX2RlbHRhIDogQXN0LmNvdW50ZXIgPVxuICAgICAgICAgICAgeyBjIHdpdGggY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNHVEUgKGFicyBkZWx0YSksIExvYy5kdW1teSkgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgWyBBc3QuQ291bnRlciBjb3VudGVyX2RlbHRhLCBbXSBdXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgICggQXN0LkNvdW50ZXIgeyBjIHdpdGggY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNHVEUgMCwgTG9jLmR1bW15KSB9LFxuICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgIF0pXG4gIGluXG5cbiAgbGV0IHJlYyBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlcyAoaWRzIDogTW9kcy5TdHJpbmdTZXQudClcbiAgICAgIChjb3VudGVyX2RlZnMgOiBBc3QuY291bnRlcl9zaWcgbGlzdCkgOlxuICAgICAgQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCAtPlxuICAgICAgKEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gWyBbXSwgW10gXVxuICAgIHwgcyA6OiB0IC0+XG4gICAgICBjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlcyBpZHMgY291bnRlcl9kZWZzIHQpXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlIGlkcyBjb3VudGVyX2RlZnMgcylcbiAgaW5cbiAgbGV0IHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX2FnZW50IChpZHMgOiBNb2RzLlN0cmluZ1NldC50KSA6XG4gICAgICBBc3QuYWdlbnQgLT4gKEFzdC5hZ2VudCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBBc3QuQWJzZW50IGwgLT4gWyBBc3QuQWJzZW50IGwsIFtdIF1cbiAgICB8IEFzdC5QcmVzZW50IChhZ2VudF9uYW1lLCBzaXRlcywgbW9kaWYpIC0+XG4gICAgICBsZXQgY291bnRlcl9kZWZzID0gY291bnRlcnNfc2lnbmF0dXJlIGFnZW50X25hbWUgc2lnbmF0dXJlcyBpblxuICAgICAgbGV0IHNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlcyA9XG4gICAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIGlkcyBjb3VudGVyX2RlZnMgc2l0ZXNcbiAgICAgIGluXG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIChzaXRlcycsIHZhcl92YWx1ZXMpIC0+XG4gICAgICAgICAgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzJywgbW9kaWYpLCB2YXJfdmFsdWVzKVxuICAgICAgICBzaXRlc19mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZXNcbiAgaW5cbiAgbGV0IHJlYyBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9taXh0dXJlIChpZHMgOiBNb2RzLlN0cmluZ1NldC50KSA6XG4gICAgICBBc3QuYWdlbnQgbGlzdCAtPiAoQXN0LmFnZW50IGxpc3QgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gWyBbXSwgW10gXVxuICAgIHwgYXN0X2FnZW50IDo6IHQgLT5cbiAgICAgIGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXBcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgaWRzIHQpXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9hZ2VudCBpZHMgYXN0X2FnZW50KVxuICBpblxuXG4gIGxldCB1cGRhdGVfb3B0X3JhdGUgY291bnRlcl92YXJfdmFsdWVzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSByIC0+IFNvbWUgKHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyByKVxuICBpblxuICBsZXQgdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChyMSwgcjIpIC0+XG4gICAgICBTb21lXG4gICAgICAgICggdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHIxLFxuICAgICAgICAgIHVwZGF0ZV9vcHRfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcjIgKVxuICBpblxuXG4gICgqIFRPRE8gW3NwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGVdIHJ1bGUgZXZhbHVlcyB0byBhIGxpc3Qgb2YgcnVsZXMgd2l0aCB0aGVpciBuYW1lcyAqKVxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZVxuICAgICAgKHJ1bGVfbmFtZSA6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgICAoKHJ1bGUsIGFubm90KSA6IEFzdC5ydWxlIExvYy5hbm5vdGVkKSA6XG4gICAgICAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSBsaXN0ID1cbiAgICBsZXQgbWl4X2xocyA9XG4gICAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBjb250ZW50IC0+IGNvbnRlbnQubWl4XG4gICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IGNvbnRlbnQubGhzXG4gICAgaW5cblxuICAgICgqIEZldGNoIGlkcyBmcm9tIHJ1bGUgcmF0ZXMgKilcbiAgICBsZXQgZXhwcnNfZnJvbV9yYXRlcyA6XG4gICAgICAgIChBc3QubWl4dHVyZSwgc3RyaW5nKSBLYXBwYV90ZXJtcy5BbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbiBsaXN0ID1cbiAgICAgIFsgU29tZSBydWxlLmtfZGVmOyBydWxlLmtfb3AgXVxuICAgICAgQCAobWF0Y2ggcnVsZS5rX3VuIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSByX2t1bl9yYXRlcyAtPiBbIFNvbWUgKGZzdCByX2t1bl9yYXRlcyk7IHNuZCByX2t1bl9yYXRlcyBdKVxuICAgICAgQFxuICAgICAgbWF0Y2ggcnVsZS5rX29wX3VuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHJfa19vcF91bl9yYXRlcyAtPlxuICAgICAgICBbIFNvbWUgKGZzdCByX2tfb3BfdW5fcmF0ZXMpOyBzbmQgcl9rX29wX3VuX3JhdGVzIF1cbiAgICBpblxuICAgIGxldCBpZHMgPSBjb2xsZWN0X2lkcyBleHByc19mcm9tX3JhdGVzIGluXG5cbiAgICBsZXQgbWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZSA6XG4gICAgICAgIChBc3QuYWdlbnQgbGlzdCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9XG4gICAgICBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9taXh0dXJlIGlkcyAoTGlzdC5mbGF0dGVuIG1peF9saHMpXG4gICAgaW5cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAobGhzLCBjb3VudGVyX3Zhcl92YWx1ZXMpIC0+XG4gICAgICAgICgqIEFwcGx5IGNvdW50ZXIgdmFyIHZhbHVlcyB0byByYXRlcyAqKVxuICAgICAgICBsZXQga19kZWYgPSB1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX2RlZiBpblxuICAgICAgICBsZXQga191biA9IHVwZGF0ZV9wYWlyX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHJ1bGUua191biBpblxuICAgICAgICBsZXQga19vcCA9IHVwZGF0ZV9vcHRfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX29wIGluXG4gICAgICAgIGxldCBrX29wX3VuID0gdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX29wX3VuIGluXG4gICAgICAgIGxldCBsaHMgPSBbIGxocyBdIGluXG4gICAgICAgIGxldCBuZXdfcnVsZV9uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiA9XG4gICAgICAgICAgaWYgY291bnRlcl92YXJfdmFsdWVzID0gW10gdGhlblxuICAgICAgICAgICAgcnVsZV9uYW1lXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBCdWlsZCBjb3VudGVyc19pZHNfYXNfc3RyaW5nLCB0aGF0IHdpbGwgYmUgdXNlZCB0byBidWlsZCBuZXcgcnVsZSBuYW1lcyAqKVxuICAgICAgICAgICAgbGV0IGNvdW50ZXJzX2lkc19hc19zdHJpbmcgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICgqIFRPRE8gc2hvdWxkIHdlIGFkZCBhIHNlcGFyYXRvci4gbWF5YmUgYWxzbyBhZGQgbmFtZSBvZiB2YXJpYWJsZT8gKilcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHZhcl92YWx1ZSAtPiBzdHJpbmdfb2ZfaW50IHZhcl92YWx1ZS52YWx1ZSBeIGFjYylcbiAgICAgICAgICAgICAgICBcIlwiIGNvdW50ZXJfdmFyX3ZhbHVlc1xuICAgICAgICAgICAgaW5cblxuICAgICAgICAgICAgbWF0Y2ggcnVsZV9uYW1lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lICgqIE5vIHJ1bGUgbmFtZSwgbmV3IHJ1bGVzIHdpbGwgaGF2ZSBubyBuYW1lIHRvbyAqKVxuICAgICAgICAgICAgfCBTb21lIChydWxlX25hbWVfc3RyaW5nLCBsb2NhbGl0eSkgLT5cbiAgICAgICAgICAgICAgKCogTWFrZSBhIG5ldyBuYW1lIGZvciBuZXcgcnVsZSBpbmNsdWRpbmcgY291bnRlcl92YXJfdmFsdWVzIGluZm8gKilcbiAgICAgICAgICAgICAgU29tZSAocnVsZV9uYW1lX3N0cmluZyBeIFwiX19cIiBeIGNvdW50ZXJzX2lkc19hc19zdHJpbmcsIGxvY2FsaXR5KVxuICAgICAgICAgIClcbiAgICAgICAgaW5cblxuICAgICAgICAoIG5ld19ydWxlX25hbWUsXG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIEFzdC5yZXdyaXRlID1cbiAgICAgICAgICAgICAgICAobWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IEFzdC5FZGl0IGNvbnRlbnQgLT4gQXN0LkVkaXQgeyBjb250ZW50IHdpdGggQXN0Lm1peCA9IGxocyB9XG4gICAgICAgICAgICAgICAgfCBBc3QuQXJyb3cgY29udGVudCAtPiBBc3QuQXJyb3cgeyBjb250ZW50IHdpdGggQXN0LmxocyB9KTtcbiAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHJ1bGUuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgICAgICAga19kZWY7XG4gICAgICAgICAgICAgIGtfdW47XG4gICAgICAgICAgICAgIGtfb3A7XG4gICAgICAgICAgICAgIGtfb3BfdW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW5ub3QgKSApKVxuICAgICAgbWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZVxuICBpblxuXG4gIGxldCBydWxlcyA9IHByZXBhcmVfY291bnRlcnMgcnVsZXMgaW5cblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIChydWxlX25hbWUsIHJ1bGVfYW5ub3RlZCkgLT5cbiAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGUgcnVsZV9uYW1lIHJ1bGVfYW5ub3RlZCBAIGFjYylcbiAgICBbXSBydWxlc1xuICAoKiBUT0RPOiBpcyByZXYgcmVsZXZhbnQgaGVyZT8gKilcbiAgfD4gTGlzdC5yZXZcblxubGV0IHNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmcgfmRlYnVnX21vZGVcbiAgICAoY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKSA9XG4gIGxldCBydWxlcyA9XG4gICAgc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZyBjb21waWwucnVsZXNcbiAgICAgIGNvbXBpbC5zaWduYXR1cmVzXG4gIGluXG4gICgqIERlYnVnIHByaW50aW5nICopXG4gIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIkAuYXN0IHJ1bGVzQC5cIjtcbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKHMsIChyLCBfKSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobCwgXykgLT4gbFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQC4lcyA9ICVhXCIgbGFiZWwgQXN0LnByaW50X2FzdF9ydWxlIHIpXG4gICAgICBydWxlc1xuICApO1xuICB7IGNvbXBpbCB3aXRoIEFzdC5ydWxlcyB9XG5cbmxldCBtYWtlX2NvdW50ZXJfYWdlbnQgc2lncyAoaXNfZmlyc3QsIChkc3QsIHJhX2VyYXNlZCkpIChpc19sYXN0LCBlcXVhbCkgaSBqXG4gICAgbG9jIChjcmVhdGVkIDogYm9vbCkgOiBMS2FwcGEucnVsZV9hZ2VudCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcmFfdHlwZSA9IGNvdW50ZXJfYWdlbnRfaW5mby5pZCBpblxuXG4gIGxldCByYV9wb3J0cyA9XG4gICAgQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHlcbiAgICAgICgoTEthcHBhLkxOS19GUkVFLCBsb2MpLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGJlZm9yZV9zd2l0Y2ggPVxuICAgIGlmIGlzX2ZpcnN0IHRoZW5cbiAgICAgIGlmIGNyZWF0ZWQgdGhlblxuICAgICAgICBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGVsc2UgaWYgcmFfZXJhc2VkIHRoZW5cbiAgICAgICAgTEthcHBhLkVyYXNlZFxuICAgICAgZWxzZVxuICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgIGVsc2VcbiAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGlzX2ZpcnN0IHRoZW5cbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGksIGRzdCksIGxvY1xuICAgIGVsc2VcbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGksIChyYV90eXBlLCBwb3J0X2EpKSwgbG9jXG4gIGluXG4gIGxldCAoKSA9IHJhX3BvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSwgYmVmb3JlX3N3aXRjaCBpblxuICBsZXQgYWZ0ZXIgPVxuICAgIGlmIGlzX2xhc3QgJiYgZXF1YWwgdGhlblxuICAgICAgTEthcHBhLkxOS19GUkVFLCBsb2NcbiAgICBlbHNlIGlmIGlzX2xhc3QgdGhlblxuICAgICAgTEthcHBhLkxOS19BTlksIGxvY1xuICAgIGVsc2VcbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGosIChyYV90eXBlLCBwb3J0X2IpKSwgbG9jXG4gIGluXG4gIGxldCAoKSA9XG4gICAgcmFfcG9ydHMuKHBvcnRfYSkgPC1cbiAgICAgICggYWZ0ZXIsXG4gICAgICAgIGlmIHJhX2VyYXNlZCB0aGVuXG4gICAgICAgICAgTEthcHBhLkVyYXNlZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICBpblxuICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgY291bnRlcl9hZ2VudF9pbmZvLmFyaXR5IExLYXBwYS5JX0FOWSBpblxuICB7XG4gICAgTEthcHBhLnJhX3R5cGU7XG4gICAgcmFfZXJhc2VkO1xuICAgIHJhX3BvcnRzO1xuICAgIHJhX2ludHM7XG4gICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKTtcbiAgfVxuXG5sZXQgcmF3X2NvdW50ZXJfYWdlbnQgKGlzX2ZpcnN0LCBmaXJzdF9saW5rKSAoaXNfbGFzdCwgbGFzdF9saW5rKSBpIGogc2lncyBlcXVhbFxuICAgIDogUmF3X21peHR1cmUuYWdlbnQgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iLCBwb3J0X2EgPSBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbGV0IHBvcnRzID0gQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHkgUmF3X21peHR1cmUuRlJFRSBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eSAoZnVuIGkgLT5cbiAgICAgICAgU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgY291bnRlcl9hZ2VudF9pbmZvLmlkIGkgc2lncylcbiAgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgUmF3X21peHR1cmUuVkFMIGZpcnN0X2xpbmtcbiAgICBlbHNlXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgaVxuICBpblxuICBsZXQgKCkgPSBwb3J0cy4ocG9ydF9iKSA8LSBiZWZvcmUgaW5cbiAgbGV0IGFmdGVyID1cbiAgICBpZiBpc19sYXN0ICYmIGVxdWFsIHRoZW5cbiAgICAgIFJhd19taXh0dXJlLkZSRUVcbiAgICBlbHNlIGlmIGlzX2xhc3QgdGhlblxuICAgICAgUmF3X21peHR1cmUuVkFMIGxhc3RfbGlua1xuICAgIGVsc2VcbiAgICAgIFJhd19taXh0dXJlLlZBTCBqXG4gIGluXG4gIGxldCAoKSA9IHBvcnRzLihwb3J0X2EpIDwtIGFmdGVyIGluXG4gIHtcbiAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSBjb3VudGVyX2FnZW50X2luZm8uaWQ7XG4gICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IHBvcnRzO1xuICAgIFJhd19taXh0dXJlLmFfaW50cyA9IGludGVybmFscztcbiAgfVxuXG5sZXQgcmVjIGFkZF9pbmNyIChpIDogaW50KSAoZmlyc3RfbGluayA6IGludCkgKGxhc3RfbGluayA6IGludCkgKGRlbHRhIDogaW50KVxuICAgIChlcXVhbCA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpIDogUmF3X21peHR1cmUuYWdlbnQgbGlzdCA9XG4gIGlmIGkgPSBkZWx0YSB0aGVuXG4gICAgW11cbiAgZWxzZSAoXG4gICAgbGV0IGlzX2ZpcnN0ID0gaSA9IDAgaW5cbiAgICBsZXQgaXNfbGFzdCA9IGkgPSBkZWx0YSAtIDEgaW5cbiAgICBsZXQgcmF3X2luY3IgPVxuICAgICAgcmF3X2NvdW50ZXJfYWdlbnQgKGlzX2ZpcnN0LCBmaXJzdF9saW5rKSAoaXNfbGFzdCwgbGFzdF9saW5rKVxuICAgICAgICAoZmlyc3RfbGluayArIGkpXG4gICAgICAgIChmaXJzdF9saW5rICsgaSArIDEpXG4gICAgICAgIHNpZ3MgZXF1YWxcbiAgICBpblxuICAgIHJhd19pbmNyIDo6IGFkZF9pbmNyIChpICsgMSkgZmlyc3RfbGluayBsYXN0X2xpbmsgZGVsdGEgZXF1YWwgc2lnc1xuICApXG5cbmxldCByZWMgbGlua19pbmNyIChzaWdzIDogU2lnbmF0dXJlLnMpIChpIDogaW50KSAobmIgOiBpbnQpXG4gICAgKGFnX2luZm8gOiAoaW50ICogaW50KSAqIGJvb2wpIChlcXVhbCA6IGJvb2wpIChsaW5rIDogaW50KSAobG9jIDogTG9jLnQpXG4gICAgKGRlbHRhIDogaW50KSA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICBpZiBpID0gbmIgdGhlblxuICAgIFtdXG4gIGVsc2UgKFxuICAgIGxldCBpc19maXJzdCA9IGkgPSAwIGluXG4gICAgbGV0IGlzX2xhc3QgPSBpID0gbmIgLSAxIGluXG4gICAgbGV0IHJhX2FnZW50ID1cbiAgICAgIG1ha2VfY291bnRlcl9hZ2VudCBzaWdzIChpc19maXJzdCwgYWdfaW5mbykgKGlzX2xhc3QsIGVxdWFsKSAobGluayArIGkpXG4gICAgICAgIChsaW5rICsgaSArIDEpXG4gICAgICAgIGxvYyAoZGVsdGEgPiAwKVxuICAgIGluXG4gICAgcmFfYWdlbnQgOjogbGlua19pbmNyIHNpZ3MgKGkgKyAxKSBuYiBhZ19pbmZvIGVxdWFsIGxpbmsgbG9jIGRlbHRhXG4gIClcblxubGV0IHJlYyBlcmFzZV9pbmNyIChzaWdzIDogU2lnbmF0dXJlLnMpIChpIDogaW50KSAoaW5jcnMgOiBMS2FwcGEucnVsZV9taXh0dXJlKVxuICAgIChkZWx0YSA6IGludCkgKGxpbmsgOiBpbnQpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIG1hdGNoIGluY3JzIHdpdGhcbiAgfCBpbmNyIDo6IGluY3JfcyAtPlxuICAgIGlmIGkgPSBhYnMgZGVsdGEgdGhlbiAoXG4gICAgICBsZXQgYmVmb3JlLCBfID0gaW5jci5MS2FwcGEucmFfcG9ydHMuKHBvcnRfYikgaW5cbiAgICAgIGluY3IuTEthcHBhLnJhX3BvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSwgTEthcHBhLkxpbmtlZCBsaW5rO1xuICAgICAgaW5jciA6OiBpbmNyX3NcbiAgICApIGVsc2UgKFxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIChhLCBfKSAtPiBpbmNyLkxLYXBwYS5yYV9wb3J0cy4oaSkgPC0gYSwgTEthcHBhLkVyYXNlZClcbiAgICAgICAgaW5jci5MS2FwcGEucmFfcG9ydHM7XG4gICAgICBsZXQgcnVsZV9hZ2VudCA9IHsgaW5jciB3aXRoIExLYXBwYS5yYV9lcmFzZWQgPSB0cnVlIH0gaW5cbiAgICAgIHJ1bGVfYWdlbnQgOjogZXJhc2VfaW5jciBzaWdzIChpICsgMSkgaW5jcl9zIGRlbHRhIGxpbmtcbiAgICApXG4gIHwgW10gLT4gW11cblxuKCoqIFJldHVybnMgbWl4dHVyZXMgZm9yIGFnZW50IHdpdGggc2l0ZSBjaGFuZ2VkIGZyb20gY291bnRlciB0byBwb3J0LCBhcyB3ZWxsIGFzIG5ldyBbbGlua19uYl0gYWZ0ZXIgcHJldmlvdXMgYWRkaXRpb25zXG4gKiBVc2VkIGJ5IFtjb21waWxlX2NvdW50ZXJfaW5fcnVsZV9hZ2VudF0qKVxubGV0IGNvdW50ZXJfYmVjb21lc19wb3J0IChzaWdzIDogU2lnbmF0dXJlLnMpIChyYSA6IExLYXBwYS5ydWxlX2FnZW50KVxuICAgIChwb3J0X2lkIDogaW50KSAoY291bnRlciA6IEFzdC5jb3VudGVyKSAoc3RhcnRfbGlua19uYiA6IGludCkgOlxuICAgIChMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCkgKiBpbnQgPVxuICAoKiBSZXR1cm5zIHBvc2l0aXZlIHBhcnQgb2YgdmFsdWUgKilcbiAgbGV0IHBvc2l0aXZlX3BhcnQgKGkgOiBpbnQpIDogaW50ID1cbiAgICBpZiBpIDwgMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaVxuICBpblxuXG4gIGxldCBsb2MgOiBMb2MudCA9IExvYy5nZXRfYW5ub3QgY291bnRlci5Bc3QuY291bnRlcl9uYW1lIGluXG4gIGxldCAoZGVsdGEsIGxvY19kZWx0YSkgOiBpbnQgKiBMb2MudCA9IGNvdW50ZXIuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgbGV0IGNvdW50ZXJfdGVzdCA6IEFzdC5jb3VudGVyX3Rlc3QgTG9jLmFubm90ZWQgPVxuICAgIE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZVxuICAgICAgfmV4Y2VwOlxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIlxuICAgICAgICAgICAgIF4gTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgXiBcIiBzaG91bGQgaGF2ZSBhIHRlc3QgYnkgbm93XCIsXG4gICAgICAgICAgICAgbG9jICkpXG4gICAgICBjb3VudGVyLkFzdC5jb3VudGVyX3Rlc3RcbiAgaW5cbiAgbGV0ICh0ZXN0LCBlcXVhbCkgOiBpbnQgKiBib29sID1cbiAgICBtYXRjaCBMb2MudiBjb3VudGVyX3Rlc3Qgd2l0aFxuICAgIHwgQXN0LkNWQVIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkNvdW50ZXIgXCJcbiAgICAgICAgICAgICBeIExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgIF4gXCIgZGVmaW5lcyBhIHZhcmlhYmxlLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IENFUSBcXFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMgYWZ0ZXIgcnVsZSBzcGxpdHRpbmdcIixcbiAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfdGVzdCApKVxuICAgIHwgQXN0LkNFUSBqIC0+IGosIHRydWVcbiAgICB8IEFzdC5DR1RFIGogLT4gaiwgZmFsc2VcbiAgICB8IEFzdC5DTFRFIF9qIC0+IGZhaWx3aXRoIFwibm90IGltcGxlbWVudGVkXCIgKCogVE9ET8Kgbm93ICopXG4gIGluXG4gIGxldCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkIDogaW50ID0gc3RhcnRfbGlua19uYiArIHRlc3QgKyAxIGluXG4gIGxldCBsaW5rX2Zvcl9lcmFzZWQgOiBpbnQgPSBzdGFydF9saW5rX25iICsgYWJzIGRlbHRhIGluXG4gIGxldCBhZ19pbmZvIDogKGludCAqIGludCkgKiBib29sID1cbiAgICAocG9ydF9pZCwgcmEuTEthcHBhLnJhX3R5cGUpLCByYS5MS2FwcGEucmFfZXJhc2VkXG4gIGluXG5cbiAgbGV0IHRlc3RfaW5jciA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICAgIGxpbmtfaW5jciBzaWdzIDAgKHRlc3QgKyAxKSBhZ19pbmZvIGVxdWFsIHN0YXJ0X2xpbmtfbmIgbG9jIGRlbHRhXG4gIGluXG4gIGxldCBhZGp1c3RfZGVsdGEgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgICBpZiBkZWx0YSA8IDAgdGhlblxuICAgICAgZXJhc2VfaW5jciBzaWdzIDAgdGVzdF9pbmNyIGRlbHRhIGxpbmtfZm9yX2VyYXNlZFxuICAgIGVsc2VcbiAgICAgIHRlc3RfaW5jclxuICBpblxuICBsZXQgY3JlYXRlZCA6IFJhd19taXh0dXJlLnQgPVxuICAgIGlmIGRlbHRhID4gMCB0aGVuXG4gICAgICBhZGRfaW5jciAwIHN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQgc3RhcnRfbGlua19uYiBkZWx0YSBmYWxzZSBzaWdzXG4gICAgZWxzZVxuICAgICAgW11cbiAgaW5cblxuICBpZiB0ZXN0ICsgZGVsdGEgPCAwIHRoZW5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChcIkNvdW50ZXIgdGVzdCBzaG91bGQgYmUgZ3JlYXRlciB0aGVuIGFicyhkZWx0YSlcIiwgbG9jX2RlbHRhKSk7XG5cbiAgbGV0IHN3aXRjaCA6IExLYXBwYS5zd2l0Y2hpbmcgPVxuICAgIGlmIGRlbHRhID0gMCB0aGVuXG4gICAgICBpZiByYS5MS2FwcGEucmFfZXJhc2VkIHRoZW5cbiAgICAgICAgTEthcHBhLkVyYXNlZFxuICAgICAgZWxzZVxuICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgIGVsc2UgaWYgZGVsdGEgPiAwIHRoZW5cbiAgICAgIExLYXBwYS5MaW5rZWQgc3RhcnRfbGlua19mb3JfY3JlYXRlZFxuICAgIGVsc2VcbiAgICAgIExLYXBwYS5MaW5rZWQgbGlua19mb3JfZXJhc2VkXG4gIGluXG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgOiBpbnQgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIHJhLkxLYXBwYS5yYV9wb3J0cy4ocG9ydF9pZCkgPC1cbiAgICAoIChMS2FwcGEuTE5LX1ZBTFVFIChzdGFydF9saW5rX25iLCAocG9ydF9iLCBjb3VudGVyX2FnZW50X2luZm8uaWQpKSwgbG9jKSxcbiAgICAgIHN3aXRjaCApO1xuICBsZXQgbmV3X2xpbmtfbmIgOiBpbnQgPSBzdGFydF9saW5rX25iICsgMSArIHRlc3QgKyBwb3NpdGl2ZV9wYXJ0IGRlbHRhIGluXG5cbiAgKGFkanVzdF9kZWx0YSwgY3JlYXRlZCksIG5ld19saW5rX25iXG5cbigqKiBDb21waWxlcyB0aGUgY291bnRlciBwcmVjb25kaXRpb24gaW4gYSBsZWZ0IGhhbmQgc2lkZSBtaXh0dXJlIG9mIGEgcnVsZSBpbnRvIGEgbWl4dHVyZSB3aGljaCB0ZXN0cyBkdW1teSBwb3NpdGlvbnNcbiAqIHJ1bGVfYWdlbnRfIC0gYWdlbnQgd2l0aCBjb3VudGVycyBpbiBhIHJ1bGVcbiAgIGxua19uYiAtIHRoZSBtYXggbGluayBudW1iZXIgdXNlZCBpbiB0aGUgcnVsZTtcbiAgIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIC0gaW5mbyBvbiB0aGUgY291bnRlciBhZ2VudFxuICAgcmV0dXJuczogYWdlbnQgd2l0aCBleHBsaWNpdCBjb3VudGVyczsgY3JlYXRlZCBpbmNyIGFnZW50cztcbiAgICAgICAgICAgIHRoZSBuZXh0IGxpbmsgbnVtYmVyIHRvIHVzZSAqKVxubGV0IGNvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50IChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKHJ1bGVfYWdlbnRfIDogTEthcHBhLnJ1bGVfYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycykgKGxua19uYiA6IGludCkgOlxuICAgIExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ICogaW50ID1cbiAgbGV0IChpbmNycywgbG5rX25iJykgOiAoTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQpIGxpc3QgKiBpbnQgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaWQgKGFjY19pbmNycywgbG5rX25iKSAtPiBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gYWNjX2luY3JzLCBsbmtfbmJcbiAgICAgICAgfCBTb21lIChjb3VudGVyLCBfKSAtPlxuICAgICAgICAgIGxldCBuZXdfaW5jcnMsIG5ld19sbmtfbmIgPVxuICAgICAgICAgICAgY291bnRlcl9iZWNvbWVzX3BvcnQgc2lncyBydWxlX2FnZW50Xy5hZ2VudCBpZCBjb3VudGVyIGxua19uYlxuICAgICAgICAgIGluXG4gICAgICAgICAgbmV3X2luY3JzIDo6IGFjY19pbmNycywgbmV3X2xua19uYlxuICAgICAgICAoKiBKRjogbGluayBpZHMgd2VyZSBjb2xsaWRpbmcgYWZ0ZXIgY291bnRlciBkZWNyZW1lbnRhdGlvbnMgLT4gSSBkbyBub3QgdGhpbmsgdGhhdCB3ZSBzaG91bGQgYWRkIGRlbHRhIHdoZW4gbmVnYXRpdmUgKikpXG4gICAgICAoW10sIGxua19uYikgcnVsZV9hZ2VudF8uY291bnRlcnNcbiAgaW5cbiAgbGV0IChhbHMsIGJscykgOiBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biAoYWxzLCBibHMpIChhLCBiKSAtPiBhIEAgYWxzLCBiIEAgYmxzKSAoW10sIFtdKSBpbmNyc1xuICBpblxuICBhbHMsIGJscywgbG5rX25iJ1xuXG4oKiogQ29tcGlsZXMgdGhlIGNvdW50ZXIgdmFsdWUgY2hhbmdlIGluIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgYSBydWxlIGludG8gZHVtbXkgY2hhaW4gY2hhbmdlcyAqKVxubGV0IGNvbXBpbGVfY291bnRlcl9pbl9yYXdfYWdlbnQgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAocmF3X2FnZW50XyA6IFJhd19taXh0dXJlLmFnZW50IHdpdGhfYWdlbnRfY291bnRlcnMpIChsbmtfbmIgOiBpbnQpIDpcbiAgICBSYXdfbWl4dHVyZS5hZ2VudCBsaXN0ICogaW50ID1cbiAgbGV0IHJhd19hZ2VudCA6IFJhd19taXh0dXJlLmFnZW50ID0gcmF3X2FnZW50Xy5hZ2VudCBpblxuICBsZXQgcG9ydHMgOiBSYXdfbWl4dHVyZS5saW5rIGFycmF5ID0gcmF3X2FnZW50LlJhd19taXh0dXJlLmFfcG9ydHMgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gcG9ydF9pZCAoYWNjLCBsbmtfbmIpIC0+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYWNjLCBsbmtfbmJcbiAgICAgIHwgU29tZSAoYywgXykgLT5cbiAgICAgICAgKG1hdGNoIGMuQXN0LmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgcmF3X2FnZW50LlJhd19taXh0dXJlLmFfdHlwZVxuICAgICAgICAgIGluXG4gICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJjb3VudGVyXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgIHwgU29tZSAodGVzdCwgXykgLT5cbiAgICAgICAgICAobWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBBc3QuQ0dURSBfIHwgQXN0LkNMVEUgXyB8IEFzdC5DVkFSIF8gLT5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgICAgcmF3X2FnZW50LlJhd19taXh0dXJlLmFfdHlwZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiY291bnRlclwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBBc3QuQ0VRIGogLT5cbiAgICAgICAgICAgIGxldCBwID0gUmF3X21peHR1cmUuVkFMIGxua19uYiBpblxuICAgICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBvcnRfaWQpIDwtIHAgaW5cbiAgICAgICAgICAgIGxldCBpbmNycyA9IGFkZF9pbmNyIDAgbG5rX25iIChsbmtfbmIgKyBqKSAoaiArIDEpIHRydWUgc2lncyBpblxuICAgICAgICAgICAgYWNjIEAgaW5jcnMsIGxua19uYiArIGogKyAxKSkpXG4gICAgKFtdLCBsbmtfbmIpIHJhd19hZ2VudF8uY291bnRlcnNcblxubGV0IHJhd19hZ2VudF9oYXNfY291bnRlcnMgKGFnXyA6ICdhIHdpdGhfYWdlbnRfY291bnRlcnMpIDogYm9vbCA9XG4gIEFycmF5LmZvbGRfbGVmdCAoZnVuIG9rIHggLT4geCA8PiBOb25lIHx8IG9rKSBmYWxzZSBhZ18uY291bnRlcnNcblxubGV0IHJ1bGVfYWdlbnRfaGFzX2NvdW50ZXJzIChydWxlX2FnZW50IDogTEthcHBhLnJ1bGVfYWdlbnQpXG4gICAgKHNpZ3MgOiBTaWduYXR1cmUucykgOiBib29sID1cbiAgU2lnbmF0dXJlLmhhc19jb3VudGVyIChTaWduYXR1cmUuZ2V0IHNpZ3MgcnVsZV9hZ2VudC5yYV90eXBlKVxuXG4oKiogW2NvbXBpbGVfY291bnRlcl9pbl9ydWxlIHNpZ3MgbWl4IGNyZWF0ZWRdIHRha2VzIHRoZSBpbnRpYWwgbWl4dHVyZSBmcm9tIGEgcnVsZSBbbWl4XSxcbiAqIGFuZCB0aGUgbWl4dHVyZSBvYnRhaW5lZCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgcnVsZSBbY3JlYXRlZF0sXG4gKiBib3RoIHdpdGggY291bnRlciBpbmZvcm1hdGlvbiwgYW5kIHJldHVybnMgdHdvIG1peHR1cmVzIGZvciBhIG5ldyBydWxlIHdpdGhvdXQgY291bnRlcnMsIGhhdmluZyBjb21waWxlZCB0aGUgY291bnRlciBsb2dpYyBpbnNpZGUgdGhlIHJ1bGUuXG4gKlxuICogLSBhZGRzIGluY3JlbWVudCBhZ2VudHMgdG8gdGhlIHJ1bGVfYWdlbnQgbWl4dHVyZVxuICAgLSBhZGRzIGluY3JlbWVudCBhZ2VudHMgdG8gdGhlIHJhdyBtaXh0dXJlXG4gICAtIGxpbmtzIHRoZSBhZ2VudHMgaW4gdGhlIG1peHR1cmUobGhzLHJocyxtaXgpIG9yIGluIHRoZSByYXcgbWl4dHVyZShjcmVhdGVkKVxuICAgICB0byB0aGUgaW5jcmVtZW50cyAqKVxubGV0IGNvbXBpbGVfY291bnRlcl9pbl9ydWxlIChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKG1peCA6IHJ1bGVfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzKVxuICAgIChjcmVhdGVkIDogcmF3X21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycykgOlxuICAgIExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgbGV0IGhhc19jb3VudGVycyA6IGJvb2wgPVxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfaGFzX2NvdW50ZXJzIHJ1bGVfYWdlbnRfLmFnZW50IHNpZ3MpXG4gICAgICBtaXhcbiAgICB8fCBMaXN0LmV4aXN0cyAoZnVuIHJhd19hZ2VudF8gLT4gcmF3X2FnZW50X2hhc19jb3VudGVycyByYXdfYWdlbnRfKSBjcmVhdGVkXG4gIGluXG4gIGlmIGhhc19jb3VudGVycyB0aGVuIChcbiAgICBsZXQgbG5rX25iIDogaW50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG0gOiBpbnQpIHJ1bGVfYWdlbnRfIC0+XG4gICAgICAgICAgbWF4IG0gKExLYXBwYS5tYXhfbGlua19pZCBbIHJ1bGVfYWdlbnRfLmFnZW50IF0pKVxuICAgICAgICAwIG1peFxuICAgIGluXG5cbiAgICBsZXQgKGluY3JzLCBpbmNyc19jcmVhdGVkLCBsbmtfbmInKSA6XG4gICAgICAgIExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ICogaW50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG1peF9pbmNyLCBjcmVhdGVkX2luY3IsIGxua19uYikgcnVsZV9hZ2VudF8gLT5cbiAgICAgICAgICBsZXQgbWl4X2luY3JfbmV3LCBjcmVhdGVkX2luY3JfbmV3LCBsbmtfbmInID1cbiAgICAgICAgICAgIGNvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50IHNpZ3MgcnVsZV9hZ2VudF8gbG5rX25iXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtaXhfaW5jcl9uZXcgQCBtaXhfaW5jciwgY3JlYXRlZF9pbmNyX25ldyBAIGNyZWF0ZWRfaW5jciwgbG5rX25iJyArIDEpXG4gICAgICAgIChbXSwgW10sIGxua19uYiArIDEpXG4gICAgICAgIG1peFxuICAgIGluXG4gICAgbGV0IGluY3JzX2NyZWF0ZWQnIDogUmF3X21peHR1cmUudCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChjcmVhdGVkX2luY3IsIGxua19uYikgcmF3X2FnZW50XyAtPlxuICAgICAgICAgIGxldCBjcmVhdGVkX2luY3JfbmV3LCBsbmtfbmInJyA9XG4gICAgICAgICAgICBjb21waWxlX2NvdW50ZXJfaW5fcmF3X2FnZW50IHNpZ3MgcmF3X2FnZW50XyBsbmtfbmJcbiAgICAgICAgICBpblxuICAgICAgICAgIGNyZWF0ZWRfaW5jcl9uZXcgQCBjcmVhdGVkX2luY3IsIGxua19uYicnKVxuICAgICAgICAoW10sIGxua19uYicgKyAxKVxuICAgICAgICBjcmVhdGVkXG4gICAgICB8PiBmc3RcbiAgICAgICgqIFdlIGRyb3AgdGhlIGxua19uYiBhcyB3ZSBkb24ndCBuZWVkIGluIHRoZSBmb2xsb3dpbmcgKilcbiAgICBpblxuXG4gICAgKCogUmV0dXJuIGluaXRpYWwgbWl4dHVyZXMgd2l0aCBuZXcgYWdlbnRzIGluIHJ1bGUgZnJvbSBjb3VudGVyIGNvbXBpbGF0aW9uICopXG4gICAgbGV0IHJ1bGVfYWdlbnRfbWl4IDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gICAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmQgKGZ1biBydWxlX2FnZW50XyAtPiBydWxlX2FnZW50Xy5hZ2VudCkgbWl4IGluY3JzXG4gICAgaW5cbiAgICBsZXQgcmF3X21peCA6IFJhd19taXh0dXJlLnQgPVxuICAgICAgTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAgIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfLmFnZW50KVxuICAgICAgICBjcmVhdGVkXG4gICAgICAgIChpbmNyc19jcmVhdGVkIEAgaW5jcnNfY3JlYXRlZCcpXG4gICAgaW5cbiAgICBydWxlX2FnZW50X21peCwgcmF3X21peFxuICApIGVsc2VcbiAgICAoIExpc3QucmV2X21hcCAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfLmFnZW50KSAoTGlzdC5yZXYgbWl4KSxcbiAgICAgIExpc3QucmV2X21hcCAoZnVuIHJhd19hZ2VudF8gLT4gcmF3X2FnZW50Xy5hZ2VudCkgKExpc3QucmV2IGNyZWF0ZWQpIClcblxubGV0IHJ1bGVfYWdlbnRfd2l0aF9tYXhfY291bnRlciBzaWdzIGMgKChhZ2VudF9uYW1lLCBsb2NfYWcpIGFzIGFnZW50X3R5cGUpIDpcbiAgICBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ2VudF90eXBlIHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPSBBcnJheS5tYWtlIGFyaXR5IExLYXBwYS5JX0FOWSBpblxuICBsZXQgY19uYSA9IGMuQXN0LmNvdW50ZXJfc2lnX25hbWUgaW5cbiAgbGV0IGNfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgY19uYSBzaWduIGluXG4gIGxldCBtYXhfdmFsLCBsb2MgPVxuICAgIG1hdGNoIGMuQXN0LmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgfCBTb21lIChTb21lIG1heCwgbG9jKSAtPiBtYXgsIGxvY1xuICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIGZzdCBjX25hIF4gXCIgaW4gXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgXiBcIiBzaG91bGQgaGF2ZSBhbiB1cHBlciBib3VuZFwiLFxuICAgICAgICAgICAgIGxvY19hZyApKVxuICBpblxuICBsZXQgbWF4X3ZhbCcgPSBtYXhfdmFsICsgMSBpblxuICBsZXQgaW5jcnMgPVxuICAgIGxpbmtfaW5jciBzaWdzIDAgKG1heF92YWwnICsgMSkgKChjX2lkLCBhZ19pZCksIGZhbHNlKSBmYWxzZSAxIGxvYyAoLTEpXG4gIGluXG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCBwID0gTEthcHBhLkxOS19WQUxVRSAoMSwgKHBvcnRfYiwgY291bnRlcl9hZ2VudF9pbmZvLmlkKSksIGxvYyBpblxuICBwb3J0cy4oY19pZCkgPC0gcCwgTEthcHBhLk1haW50YWluZWQ7XG4gIGxldCByYSA6IExLYXBwYS5ydWxlX2FnZW50ID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gIHJhIDo6IGluY3JzXG5cbmxldCBjb3VudGVyX3BlcnR1cmJhdGlvbiBzaWdzIGMgYWdlbnRfdHlwZSA9XG4gIGxldCBhbm5vdCA9IExvYy5nZXRfYW5ub3QgYy5Bc3QuY291bnRlcl9zaWdfbmFtZSBpblxuICBsZXQgZmlsZW5hbWUgPSBbIFByaW1pdGl2ZXMuU3RyX3BleHByIChcImNvdW50ZXJfcGVydHVyYmF0aW9uLmthXCIsIGFubm90KSBdIGluXG4gIGxldCBzdG9wX21lc3NhZ2UgPVxuICAgIFwiQ291bnRlciBcIlxuICAgIF4gTG9jLnYgYy5Bc3QuY291bnRlcl9zaWdfbmFtZVxuICAgIF4gXCIgb2YgYWdlbnQgXCIgXiBMb2MudiBhZ2VudF90eXBlIF4gXCIgcmVhY2hlZCBtYXhpbXVtXCJcbiAgaW5cbiAgbGV0IG1vZHMgPVxuICAgIFtcbiAgICAgIEFzdC5QUklOVCAoW10sIFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKFwiXCIsIGFubm90KSBdKTtcbiAgICAgIEFzdC5QUklOVCAoW10sIFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0b3BfbWVzc2FnZSwgYW5ub3QpIF0pO1xuICAgICAgQXN0LlNUT1AgZmlsZW5hbWU7XG4gICAgXVxuICBpblxuICBsZXQgdmFsX29mX2NvdW50ZXIgPVxuICAgIEFsZ19leHByLktBUFBBX0lOU1RBTkNFIChydWxlX2FnZW50X3dpdGhfbWF4X2NvdW50ZXIgc2lncyBjIGFnZW50X3R5cGUpXG4gIGluXG4gIGxldCBwcmUgPVxuICAgIEFsZ19leHByLkNPTVBBUkVfT1BcbiAgICAgICggT3BlcmF0b3IuRVFVQUwsXG4gICAgICAgICh2YWxfb2ZfY291bnRlciwgYW5ub3QpLFxuICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5JIDEpLCBhbm5vdCkgKVxuICBpblxuICAoIE5vbmUsXG4gICAgU29tZSAocHJlLCBMb2MuZ2V0X2Fubm90IGFnZW50X3R5cGUpLFxuICAgIG1vZHMsXG4gICAgU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIClcblxubGV0IGNvdW50ZXJzX3BlcnR1cmJhdGlvbnMgc2lncyBhc3Rfc2lncyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWNjXG4gICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIF8pIC0+XG4gICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAoZnVuIGFjYycgc2l0ZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MnXG4gICAgICAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICAgICAgICAgICAoY291bnRlcl9wZXJ0dXJiYXRpb24gc2lncyBjIGFnZW50X3R5cGUsIExvYy5nZXRfYW5ub3QgYWdlbnRfdHlwZSlcbiAgICAgICAgICAgICAgIDo6IGFjYycpXG4gICAgICAgICAgIGFjYyBzaXRlcykpXG4gICAgW10gYXN0X3NpZ3NcblxubGV0IG1ha2VfY291bnRlciBpIG5hbWUgPVxuICB7XG4gICAgQXN0LmNvdW50ZXJfbmFtZSA9IExvYy5hbm5vdF93aXRoX2R1bW15IG5hbWU7XG4gICAgY291bnRlcl90ZXN0ID0gU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFzdC5DRVEgaSkpO1xuICAgIGNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwO1xuICB9XG5cbmxldCBhZGRfY291bnRlcl90b19jb250YWN0X21hcCBzaWdzIGFkZF9saW5rX2NvbnRhY3RfbWFwID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiwgcG9ydF9hID0gY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGFkZF9saW5rX2NvbnRhY3RfbWFwIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2EgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uIChkZWx0YSwgbG9jKSA9XG4gIGlmIGRlbHRhICE9IDAgdGhlbiBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIGxvYyAoU29tZSBkZWx0YSlcblxubGV0IGFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMgc2lnbiBhc3RfY291bnRlcnMgcmEgYXJpdHkgYWdlbnRfbmFtZSBhdXggPVxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwb3J0X2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBvcnRfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmFpc2VfaWZfbW9kaWZpY2F0aW9uIGMuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdXggd2l0aFxuICAgICAgICAgIHwgU29tZSBmIC0+IGYgcG9ydF9pZFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC0gU29tZSAoYywgTEthcHBhLkVyYXNlZCk7XG4gICAgICAgIHBzZXQnKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgYXN0X2NvdW50ZXJzXG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9lZGl0X2NvdW50ZXJzIHNpZ3MgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eXBlKSBjb3VudGVycyByYVxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ2VudF90eXBlIHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHJhX2NvdW50ZXJzID0gQXJyYXkubWFrZSBhcml0eSBOb25lIGluXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2JcbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwb3J0X2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBvcnRfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBwb3J0X2lkIGluXG4gICAgICAgIGxldCAoKSA9IHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LSBTb21lIChjLCBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBjb3VudGVyc1xuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIHNpZ3MgKChhZ2VudF9uYW1lLCBsb2MpIGFzIGFnZW50X3R5cGUpIGxjIHJjIHJhXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBsZXQgKCkgPSBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2IgaW5cbiAgICBjLCBMS2FwcGEuTWFpbnRhaW5lZFxuICBpblxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IHJjX3IsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChyYywgY3NldCkgYyAtPlxuICAgICAgICBsZXQgKChuYSwgXykgYXMgY291bnRlcl9uYW1lKSA9IGMuQXN0LmNvdW50ZXJfbmFtZSBpblxuICAgICAgICBsZXQgY19pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjb3VudGVyX25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgY3NldCcgPSBNb2RzLkludFNldC5hZGQgY19pZCBjc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgY3NldCA9PSBjc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYycsIHJjJyA9XG4gICAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAgIChmdW4gcCAtPiBTdHJpbmcuY29tcGFyZSAoTG9jLnYgcC5Bc3QuY291bnRlcl9uYW1lKSBuYSA9IDApXG4gICAgICAgICAgICByY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYycnID1cbiAgICAgICAgICBtYXRjaCBjJyB3aXRoXG4gICAgICAgICAgfCBfIDo6IFtdIHwgW10gLT4gcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjIGNfaWRcbiAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmFfY291bnRlcnMuKGNfaWQpIDwtIFNvbWUgYycnIGluXG4gICAgICAgIHJjJywgY3NldCcpXG4gICAgICAocmMsIE1vZHMuSW50U2V0LmVtcHR5KSBsY1xuICBpblxuICBsZXQgXyA9XG4gICAgKCogdGVzdCBpZiBjb3VudGVyIG9mIHJocyBpcyBpbiB0aGUgc2lnbmF0dXJlICopXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYyAtPiBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lIHNpZ24pXG4gICAgICByY19yXG4gIGluXG4gIGlmIChub3QgKHJjID0gW10pKSAmJiBub3QgKHJjX3IgPSBbXSkgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ291bnRlcnMgaW4gXCIgXiBhZ2VudF9uYW1lIF4gXCIgc2hvdWxkIGhhdmUgdGVzdHMgYnkgbm93XCIsIGxvYykpO1xuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzICgoYWdlbnRfbmFtZSwgXykgYXMgYWdlbnRfdHlwZSkgY291bnRlcl9saXN0XG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgcmEgPVxuICBsZXQgYWdlbnRfaWQgOiBpbnQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgYWdlbnRfc2lnbmF0dXJlIDogU2lnbmF0dXJlLnQgPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdlbnRfaWQgaW5cbiAgbGV0IGFyaXR5IDogaW50ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdlbnRfaWQgaW5cbiAgbGV0IHJhX2NvdW50ZXJzIDogKEFzdC5jb3VudGVyICogTEthcHBhLnN3aXRjaGluZykgb3B0aW9uIGFycmF5ID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IE5vbmVcbiAgaW5cblxuICAoKiByZWdpc3RlciBhbGwgY291bnRlcnMgKHNwZWNpZmllZCBvciBub3QpIHdpdGggZGVmYXVsdCB2YWx1ZSAqKVxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gcG9ydF9pZCBfIC0+XG4gICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIHdpdGhcbiAgICAgIHwgU29tZSBjb3VudGVyX2luZm8gLT5cbiAgICAgICAgbGV0IGNvdW50ZXJfbmFtZSA9IFNpZ25hdHVyZS5zaXRlX29mX251bSBwb3J0X2lkIGFnZW50X3NpZ25hdHVyZSBpblxuICAgICAgICAodHJ5XG4gICAgICAgICAgICgqIGZpbmQgY291bnRlciBtYXRjaGluZyBwb3J0ICopXG4gICAgICAgICAgIGxldCBjIDogQXN0LmNvdW50ZXIgPVxuICAgICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgICAgKGZ1biBjJyAtPlxuICAgICAgICAgICAgICAgICBTdHJpbmcuY29tcGFyZSAoTG9jLnYgYycuQXN0LmNvdW50ZXJfbmFtZSkgY291bnRlcl9uYW1lID0gMClcbiAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC1cbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPSBjLkFzdC5jb3VudGVyX3Rlc3Q7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAwLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjb3VudGVyX25hbWUgfD4gTG9jLmFubm90X3dpdGhfZHVtbXk7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgIChBc3QuQ0VRIGNvdW50ZXJfaW5mby5jb3VudGVyX2RlZmF1bHRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICB8PiBMb2MuYW5ub3Rfd2l0aF9kdW1teSk7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAwLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkICkpXG4gICAgICB8IE5vbmUgLT4gKCkpXG4gICAgcmFfY291bnRlcnM7XG5cbiAgbGV0IHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnZW50X2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuICBpblxuICBsZXQgXyA6IE1vZHMuSW50U2V0LnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID1cbiAgICAgICAgICBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIGFnZW50X3NpZ25hdHVyZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAoKTtcbiAgICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICByZWdpc3Rlcl9jb3VudGVyX21vZGlmIHBvcnRfaWQ7XG4gICAgICAgICAgcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtIFNvbWUgKGMsIExLYXBwYS5NYWludGFpbmVkKTtcbiAgICAgICAgICBwc2V0JylcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGNvdW50ZXJfbGlzdFxuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG1hcF9vcHQgZiBvcHQgPSBtYXRjaCBvcHQgd2l0aCB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG5cbigqIFRPRE8gb3JpZ2luYWxseV9mcm9tIHRlcm0vbEthcHBhLm1sLCBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgaGVyZSAqKVxubGV0IHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCAocG9zIDogTG9jLnQpID0gZnVuY3Rpb25cbiAgfCBBc3QuTm9Nb2QgLT4gKClcbiAgfCBBc3QuRXJhc2UgfCBBc3QuQ3JlYXRlIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIkEgbW9kaWZpY2F0aW9uIGlzIGZvcmJpZGRlbiBoZXJlLlwiLCBwb3MpKVxuXG5sZXQgYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBzd2l0Y2ggPVxuICBsZXQgdHlfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGRzdF90eSBzaWdzIGluXG4gIGxldCBwX2lkID0gU2lnbmF0dXJlLmlkX29mX3NpdGUgZHN0X3R5IGRzdF9wIHNpZ3MgaW5cbiAgKExLYXBwYS5MTktfVFlQRSAocF9pZCwgdHlfaWQpLCBwb3MpLCBzd2l0Y2hcblxubGV0IGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCBzdHkgc3AgZHR5IGRwID1cbiAgbWF0Y2ggY29udGFjdF9tYXAgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNvbnRhY3RfbWFwIC0+XG4gICAgbGV0IHNpLCBzbCA9IGNvbnRhY3RfbWFwLihzdHkpLihzcCkgaW5cbiAgICBsZXQgZGksIGRsID0gY29udGFjdF9tYXAuKGR0eSkuKGRwKSBpblxuICAgIGxldCAoKSA9IGNvbnRhY3RfbWFwLihzdHkpLihzcCkgPC0gc2ksIE1vZHMuSW50MlNldC5hZGQgKGR0eSwgZHApIHNsIGluXG4gICAgY29udGFjdF9tYXAuKGR0eSkuKGRwKSA8LSBkaSwgTW9kcy5JbnQyU2V0LmFkZCAoc3R5LCBzcCkgZGxcblxubGV0IHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgP2RzdF90eSBzaWdzIHNvcnQgc2l0ZSA9XG4gIGxldCB3YXJuaW5nX2Zvcl9jb3VudGVycyA9XG4gICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBzb3J0IHRoZW5cbiAgICAgIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGRzdF90eSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBzIC0+IFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3Mgc1xuICAgIClcbiAgaW5cblxuICBpZiBub3Qgd2FybmluZ19mb3JfY291bnRlcnMgdGhlblxuICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwicnVsZSBpbmR1Y2VzIGEgbGluayBwZXJtdXRhdGlvbiBvbiBzaXRlICclYScgb2YgYWdlbnQgJyVhJ1wiXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3Mgc29ydClcbiAgICAgICAgICBzaXRlXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgIHNvcnQpXG5cbmxldCBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGFnX3R5IHBfaWQgcG9zID1cbiAgTEthcHBhLnJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQgaVxuICAgIChsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdHJfZm9ybWF0dGVyIFwiJWFcIlxuICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgYWdfdHlcbiAgICAgaW5cbiAgICAgRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpXG4gICAgKCAobGV0ICgpID1cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdHJfZm9ybWF0dGVyIFwiJWFcIlxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgcF9pZFxuICAgICAgIGluXG4gICAgICAgRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpLFxuICAgICAgcG9zIClcblxubGV0IGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcCBzaWdzID9jb250YWN0X21hcCBwb3MgaSBhZ190eSBwX2lkIHN3aXRjaFxuICAgIChsaW5rc19vbmUsIGxpbmtzX3R3bykgPVxuICBpZiBNb2RzLkludE1hcC5tZW0gaSBsaW5rc190d28gdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKCBcIlRoaXMgaXMgdGhlIHRoaXJkIG9jY3VyZW5jZSBvZiBsaW5rICdcIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICBeIFwiJyBpbiB0aGUgc2FtZSBtaXh0dXJlLlwiLFxuICAgICAgICAgICBwb3MgKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucG9wIGkgbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUsIG9uZScgLT5cbiAgICAgIGxldCBuZXdfbGluayA9XG4gICAgICAgIG1hdGNoIHN3aXRjaCB3aXRoXG4gICAgICAgIHwgTEthcHBhLkxpbmtlZCBqIC0+IFNvbWUgalxuICAgICAgICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBOb25lXG4gICAgICBpblxuICAgICAgKCAoKExLYXBwYS5MTktfVkFMVUUgKGksICgtMSwgLTEpKSwgcG9zKSwgc3dpdGNoKSxcbiAgICAgICAgKE1vZHMuSW50TWFwLmFkZCBpIChhZ190eSwgcF9pZCwgbmV3X2xpbmssIHBvcywgc3dpdGNoKSBvbmUnLCBsaW5rc190d28pXG4gICAgICApXG4gICAgfCBTb21lIChkc3RfdHksIGRzdF9wLCBkc3RfaWQsIHBvcycsIHN3aXRjaCcpLCBvbmUnIC0+XG4gICAgICBpZiBTaWduYXR1cmUuYWxsb3dlZF9saW5rIGFnX3R5IHBfaWQgZHN0X3R5IGRzdF9wIHNpZ3MgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCBhZ190eSBwX2lkIGRzdF90eSBkc3RfcCBpblxuICAgICAgICBsZXQgbWFpbnRhaW5lZCA9XG4gICAgICAgICAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5MaW5rZWQgaiAtPlxuICAgICAgICAgICAgbGV0IGxpbmtfc3dhcCA9IFNvbWUgaiA8PiBkc3RfaWQgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxpbmtfc3dhcCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCB3YXJuX29uX3N3YXAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgU29tZSB3YXJuaW5nIC0+XG4gICAgICAgICAgICAgICAgICBydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiB+d2FybmluZyB+cG9zIH5kc3RfdHkgc2lncyBhZ190eVxuICAgICAgICAgICAgICAgICAgICBwX2lkXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBub3QgbGlua19zd2FwXG4gICAgICAgICAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLk1haW50YWluZWQgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF9jaGVja19jb21wYXRpYmlsdHkgPVxuICAgICAgICAgIG1hdGNoIHN3aXRjaCwgc3dpdGNoJyB3aXRoXG4gICAgICAgICAgfCBMS2FwcGEuTWFpbnRhaW5lZCwgTEthcHBhLk1haW50YWluZWQgLT4gKClcbiAgICAgICAgICB8IExLYXBwYS5NYWludGFpbmVkLCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXylcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGFnX3R5IHBfaWQgcG9zXG4gICAgICAgICAgfCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyksIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgc2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIGkgc2lncyBkc3RfdHkgZHN0X3AgcG9zJ1xuICAgICAgICAgIHwgKCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyksXG4gICAgICAgICAgICAgIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSApIC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICAoICggKExLYXBwYS5MTktfVkFMVUUgKGksIChkc3RfcCwgZHN0X3R5KSksIHBvcyksXG4gICAgICAgICAgICBpZiBtYWludGFpbmVkIHRoZW5cbiAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgc3dpdGNoICksXG4gICAgICAgICAgKG9uZScsIE1vZHMuSW50TWFwLmFkZCBpIChhZ190eSwgcF9pZCwgbWFpbnRhaW5lZCkgbGlua3NfdHdvKSApXG4gICAgICApIGVsc2VcbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiRm9yYmlkZGVuIGxpbmsgdG8gYSAlYS4lYSBmcm9tIHNpZ25hdHVyZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGRzdF90eSlcbiAgICAgICAgICAgICAgICAgZHN0X3BcbiAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgICBkc3RfdHksXG4gICAgICAgICAgICAgICBwb3MgKSlcbiAgKVxuXG5sZXQgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZSBzaWdzXG4gICAgbGlua3NfYW5ub3QgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLkVyYXNlZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9XG4gICAgQXJyYXkuaW5pdCBhcml0eSAoZnVuIGkgLT5cbiAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgYWdfaWQgaSBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IExLYXBwYS5JX0FOWVxuICAgICAgICB8IFNvbWUgXyAtPiBMS2FwcGEuSV9BTllfRVJBU0VEKVxuICBpblxuICBsZXQgbGFubm90LCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAobGFubm90LCBwc2V0KSBwIC0+XG4gICAgICAgIGxldCAoKF8sIHBfcG9zKSBhcyBwb3J0X25hbWUpID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwX2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmtfbW9kLCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgXyAtPiAoKVxuICAgICAgICAgIHwgU29tZSBOb25lLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSksIF8pIF1cbiAgICAgICAgICAoKiBbaS8uXSBpcyBhbGxvd2VkIGluIGRlZ3JhZGVkIGFnZW50LlxuICAgICAgICAgICAgIEl0IHdpbGwgYmUgY2hlY2tlZCBsYXRlciB0aGF0IHRoZSBvdGhlciBzaXRlIHdpdGggbGluayBpZCBpIGlzIGFsc28gZnJlZWQgaW4gdGhlIHJ1bGUgKilcbiAgICAgICAgICAoKiBQbGVhc2Ugbm90ZSB0aGF0IGEgcnVsZSB3cml0dGVuIGFzIEEoeFsxXSktLEIoeFsxLy5dKS0gaXMgYWxsb3dlZCAqKVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgfCAoIFNvbWUgKE5vbmUgfCBTb21lIF8pLFxuICAgICAgICAgICAgICAoIFtdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoXywgKCkpLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19GUkVFLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKF8sIF8pLCBfKSBdXG4gICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gKSApIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfaW50IHdpdGhcbiAgICAgICAgICB8IFtdIHwgWyAoTm9uZSwgXykgXSAtPiAoKVxuICAgICAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdIC0+XG4gICAgICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgICAgIExLYXBwYS5JX1ZBTF9FUkFTRURcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduKVxuICAgICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuQU5ZX0ZSRUUsIHBvcyksIExLYXBwYS5FcmFzZWQgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSAtPlxuICAgICAgICAgIGxldCBwb3J0X25hbWUsIHBvcyA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICBwb3J0X25hbWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRXJhc2VkIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdIC0+XG4gICAgICAgICAgbGV0IHBvcnRfbmFtZSwgcG9zID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCAoWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10pIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB8IFtdIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuQU5ZX0ZSRUUsIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0IHZhLCBsYW5ub3QnID1cbiAgICAgICAgICAgIGxldCB3YXJuX29uX3N3YXAgPVxuICAgICAgICAgICAgICBpZiByX2VkaXRfc3R5bGUgdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFNvbWUgd2FybmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcCBzaWdzIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkVyYXNlZCBsYW5ub3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgICAgIGxhbm5vdCcsIHBzZXQnXG4gICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSkpXG4gICAgICAobGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KVxuICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICBpblxuICBsZXQgcmEgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IHRydWU7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMgc2lnbiBjb3VudGVyX2xpc3QgcmEgYXJpdHlcbiAgICAgIGFnZW50X25hbWUgTm9uZSxcbiAgICBsYW5ub3QgKVxuXG5sZXQgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZSBzaWdzXG4gICAgP2NvbnRhY3RfbWFwIHJhbm5vdCAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBzaW1wbGVfcG9ydF9saXN0ID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9IEFycmF5Lm1ha2UgYXJpdHkgUmF3X21peHR1cmUuRlJFRSBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGFyaXR5IChmdW4gaSAtPiBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ19pZCBpIHNpZ3MpXG4gIGluXG4gIGxldCBfLCByYW5ub3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChwc2V0LCByYW5ub3QpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2QgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2ludCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgWyAoTm9uZSwgXykgXSAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJpbnRlcm5hbFwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgIGFnZW50X25hbWUgcG9ydF9uYW1lXG4gICAgICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0gLT5cbiAgICAgICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgU29tZSAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduKVxuICAgICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSBfLCBfKSBdXG4gICAgICAgIHwgXyA6OiBfIDo6IF8gLT5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBwb3J0X25hbWVcbiAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WNCAtPlxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIHBvcnRfbmFtZVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIFJhd19taXh0dXJlLlZBTCBpIGluXG4gICAgICAgICAgbGV0IF8sIHJhbm5vdCcgPVxuICAgICAgICAgICAgbGV0IHdhcm5fb25fc3dhcCA9XG4gICAgICAgICAgICAgIGlmIHJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgU29tZSB3YXJuaW5nXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICAgICAgTEthcHBhLkZyZWVkIHJhbm5vdFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHNldCcsIHJhbm5vdCdcbiAgICAgICAgfCBbICgoTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19GUkVFKSwgXykgXSB8IFtdIC0+IHBzZXQnLCByYW5ub3QpXG4gICAgICAoTW9kcy5JbnRTZXQuZW1wdHksIHJhbm5vdClcbiAgICAgIHNpbXBsZV9wb3J0X2xpc3RcbiAgaW5cbiAgKCByYW5ub3QsXG4gICAge1xuICAgICAgUmF3X21peHR1cmUuYV90eXBlID0gYWdfaWQ7XG4gICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgfSApXG5cbmxldCB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgP3dhcm5faW5mb1xuICAgICgobGhzX2xpbmtzLCByaHNfbGlua3MpIGFzIGxpbmtzX2Fubm90KSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBMS2FwcGEuTWFpbnRhaW5lZCwgbGlua3NfYW5ub3RcbiAgfCBTb21lIHggLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggd2Fybl9pbmZvIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChzaXRlX25hbWUsIHBvcykgLT5cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgc2l0ZV9uYW1lKVxuICAgIGluXG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBMS2FwcGEuRnJlZWQsIGxpbmtzX2Fubm90XG4gICAgfCBTb21lIChqLCBwb3NfaikgLT5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwOk5vbmUgc2lncyA/Y29udGFjdF9tYXAgcG9zX2ogaiBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIExLYXBwYS5MaW5rZWQgaiwgKGxoc19saW5rcywgcmhzX2xpbmtzJykpXG5cbmxldCBhbm5vdGF0ZV9lZGl0X2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzID9jb250YWN0X21hcFxuICAgICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGxpbmtzX2Fubm90IHNpbXBsZV9wb3J0X2xpc3QgY291bnRlcl9saXN0ID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IHNjYW5fcG9ydCAobGlua3NfYW5ub3QsIHBzZXQpIHAgPVxuICAgIGxldCBwb3J0X25hbWUsIF8gPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWUgc2lnbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBpblxuICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgaW5cbiAgICBsZXQgbGlua3NfYW5ub3QnID1cbiAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICB8IFsgKChMS2FwcGEuTE5LX1NPTUUsIHBvcykgYXMgeCkgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0geCwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgfndhcm5faW5mbzoocG9ydF9uYW1lLCBwb3MpIHNpZ3NcbiAgICAgICAgICAgID9jb250YWN0X21hcCBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuQU5ZX0ZSRUUsIHBvcyksIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCAoW10gfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0pIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFtdIHdoZW4gcC5Bc3QucG9ydF9saW5rX21vZCA9IE5vbmUgLT4gbGlua3NfYW5ub3RcbiAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10gLT5cbiAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCAobGhzX2xpbmtzLCByaHNfbGlua3MpID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nID93YXJuX2luZm86Tm9uZSBzaWdzID9jb250YWN0X21hcFxuICAgICAgICAgICAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgICAgYnVpbGRfbGluayBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXA6XG4gICAgICAgICAgICAgIChpZiBpc19ydWxlIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBjb250YWN0X21hcClcbiAgICAgICAgICAgID93YXJuX29uX3N3YXA6Tm9uZSBwb3MgaSBhZ19pZCBwX2lkIG1vZGlmIGxoc19saW5rc1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgICB8IF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQsIHAuQXN0LnBvcnRfaW50X21vZCB3aXRoXG4gICAgICB8IChbIChOb25lLCBfKSBdIHwgW10pLCBOb25lIC0+ICgpXG4gICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgU29tZSB2YScgLT5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgIExLYXBwYS5JX1ZBTF9DSEFOR0VEXG4gICAgICAgICAgICAoIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbixcbiAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhJyBzaWduIClcbiAgICAgIHwgW10sIFNvbWUgKChfLCBwb3MpIGFzIHZhKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIHRoZW5cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImludGVybmFsIHN0YXRlIG9mIHNpdGUgJyVzJyBvZiBhZ2VudCAnJXMnIGlzIG1vZGlmaWVkIFxcXG4gICAgICAgICAgICAgICAgICAgYWx0aG91Z2ggaXQgaXMgbGVmdCB1bnBlY2lmaWVkIGluIHRoZSBsZWZ0IGhhbmQgc2lkZVwiXG4gICAgICAgICAgICAgICAgICBwb3J0X25hbWUgYWdlbnRfbmFtZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoXCJNb2RpZmllZCBpbnRlcm5hbCBzdGF0ZSBtdXN0IGFwcGVhciBvbiB0aGUgbGVmdFwiLCBwb3MpKVxuICAgICAgICBpblxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRUQgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCB2YSBzaWduKVxuICAgICAgfCBbIChOb25lLCBfKSBdLCBTb21lIHZhIC0+XG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRCAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhIHNpZ24pXG4gICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgTm9uZSAtPlxuICAgICAgICBsZXQgaV9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbiBpblxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpX2lkLCBpX2lkKVxuICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgIGluXG4gICAgbGlua3NfYW5ub3QnLCBwc2V0J1xuICBpblxuICBsZXQgYW5ub3RlZCcsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNjYW5fcG9ydCAobGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KSBzaW1wbGVfcG9ydF9saXN0XG4gIGluXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2VkaXRfY291bnRlcnMgc2lncyBhZ190eSBjb3VudGVyX2xpc3QgcmFcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApLFxuICAgIGFubm90ZWQnIClcblxubGV0IGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBsaW5rc19hbm5vdCBscCBycCBsYyByYyA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCByZWdpc3Rlcl9wb3J0X21vZGlmIHBfaWQgbG5rMSBwJyAoKGxoc19saW5rcywgcmhzX2xpbmtzKSBhcyBsaW5rc19hbm5vdCkgPVxuICAgIGxldCAoKSA9XG4gICAgICBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uXG4gICAgICAgIChMb2MuZ2V0X2Fubm90IHAnLkFzdC5wb3J0X25hbWUpXG4gICAgICAgIHAnLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgaW5cbiAgICBtYXRjaCBsbmsxLCBwJy5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvcykgXSwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFtcbiAgICAgICAgICAoIExLYXBwYS5MTktfVFlQRSAoKChkc3RfcCcnLCBfKSBhcyBkc3RfcCksICgoZHN0X3R5JycsIF8pIGFzIGRzdF90eSkpLFxuICAgICAgICAgICAgcG9zICk7XG4gICAgICAgIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVFlQRSAoKGRzdF9wJywgXyksIChkc3RfdHknLCBfKSksIF8pIF0gKVxuICAgICAgd2hlbiBkc3RfcCcnID0gZHN0X3AnICYmIGRzdF90eScnID0gZHN0X3R5JyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvcyBkc3RfdHkgZHN0X3AgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBfLFxuICAgICAgICAoIFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIF8sIF8pIF0gKSApIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSAtPlxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRnJlZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSwgW11cbiAgICAgIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRnJlZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCAoWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gfCBbXSksXG4gICAgICAgIChbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSB8IFtdKSApXG4gICAgICB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbXSwgW10gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5GcmVlZFxuICAgICAgICAgIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5GcmVlZFxuICAgICAgICAgIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zX2xpbmspIF0sIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3NfbGluayksIExLYXBwYS5MaW5rZWQgaSBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MnKSBdIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5MaW5rZWQgaSBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MnIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8ICggWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zJykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LVxuICAgICAgICAgIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCAoTEthcHBhLkxpbmtlZCBpKVxuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zJyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCAoIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSApIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCBbXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkxpbmtlZCBpXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvc19pKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChqLCAoKSksIHBvc19qKSBdICkgLT5cbiAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgcG9zX2kgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgKExLYXBwYS5MaW5rZWQgaikgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3NfaiBqIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3MnXG4gICAgfCAoIFtcbiAgICAgICAgICAoICggTEthcHBhLkxOS19WQUxVRSAoXywgKCkpXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRVxuICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKF8sIF8pXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfQU5ZICksXG4gICAgICAgICAgICBfICk7XG4gICAgICAgIF0sXG4gICAgICAgIFtdICkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFtdLCBbICgoTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkxOS19WQUxVRSAoXywgXykpLCBfKSBdXG4gICAgICAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKVxuICAgIHwgXywgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSlcbiAgaW5cbiAgbGV0IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgaW50MSBwJyA9XG4gICAgbGV0ICgpID1cbiAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb25cbiAgICAgICAgKExvYy5nZXRfYW5ub3QgcCcuQXN0LnBvcnRfbmFtZSlcbiAgICAgICAgcCcuQXN0LnBvcnRfaW50X21vZFxuICAgIGluXG4gICAgbWF0Y2ggaW50MSwgcCcuQXN0LnBvcnRfaW50IHdpdGhcbiAgICB8IFtdLCBbXSB8IFsgKE5vbmUsIF8pIF0sIFsgKE5vbmUsIF8pIF0gLT4gKClcbiAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgWyAoU29tZSB2YScsIHBvcycpIF0gLT5cbiAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgTEthcHBhLklfVkFMX0NIQU5HRURcbiAgICAgICAgICAoIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbixcbiAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEnLCBwb3MnKSBzaWduIClcbiAgICB8IFtdLCBbIChTb21lIHZhLCB2YXBvcykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJpbnRlcm5hbCBzdGF0ZSBvZiBzaXRlICclcycgb2YgYWdlbnQgJyVzJyBpcyBtb2RpZmllZCBhbHRob3VnaCBcXFxuICAgICAgICAgICAgICAgaXQgaXMgbGVmdCB1bnBlY2lmaWVkIGluIHRoZSBsZWZ0IGhhbmQgc2lkZVwiXG4gICAgICAgICAgICAgIG5hIGFnZW50X25hbWUpXG4gICAgICBpblxuICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRFxuICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCB2YXBvcykgc2lnbilcbiAgICB8IFsgKE5vbmUsIF8pIF0sIFsgKFNvbWUgdmEsIHZhcG9zKSBdIC0+XG4gICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEXG4gICAgICAgICAgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHZhcG9zKSBzaWduKVxuICAgIHwgW10sIFsgXyBdIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImludGVybmFsXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbIF8gXSwgKFsgKE5vbmUsIF8pIF0gfCBbXSkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiaW50ZXJuYWxcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gfCBfLCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgaW5cbiAgbGV0IGZpbmRfaW5fciAobmEsIHBvcykgcnAgPVxuICAgIGxldCBwJywgciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIHAgLT4gU3RyaW5nLmNvbXBhcmUgKExvYy52IHAuQXN0LnBvcnRfbmFtZSkgbmEgPSAwKSBycFxuICAgIGluXG4gICAgbWF0Y2ggcCcgd2l0aFxuICAgIHwgWyBwJyBdIC0+IHAnLCByXG4gICAgfCBbXSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgKG5hLCBwb3MpXG4gICAgfCBfIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSAobmEsIHBvcylcbiAgaW5cbiAgbGV0IHJwX3IsIGFubm90ZWQsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChycCwgYW5ub3RlZCwgcHNldCkgcCAtPlxuICAgICAgICBsZXQgKChfLCBwX3BvcykgYXMgcG9ydF9uYW1lKSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2QgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cblxuICAgICAgICBsZXQgcCcsIHJwJyA9IGZpbmRfaW5fciBwb3J0X25hbWUgcnAgaW5cbiAgICAgICAgbGV0IGFubm90ZWQnID0gcmVnaXN0ZXJfcG9ydF9tb2RpZiBwX2lkIHAuQXN0LnBvcnRfbGluayBwJyBhbm5vdGVkIGluXG4gICAgICAgIGxldCAoKSA9IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgcC5Bc3QucG9ydF9pbnQgcCcgaW5cbiAgICAgICAgcnAnLCBhbm5vdGVkJywgcHNldCcpXG4gICAgICAocnAsIGxpbmtzX2Fubm90LCBNb2RzLkludFNldC5lbXB0eSlcbiAgICAgIGxwXG4gIGluXG4gIGxldCBhbm5vdGVkJyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYW5ub3RlZCBwIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBbXSBwIGluXG4gICAgICAgIHJlZ2lzdGVyX3BvcnRfbW9kaWYgcF9pZFxuICAgICAgICAgIFsgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlkgXVxuICAgICAgICAgIHAgYW5ub3RlZClcbiAgICAgIGFubm90ZWQgcnBfclxuICBpblxuXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NvdW50ZXJzX3dpdGhfZGlmZiBzaWdzIGFnX3R5IGxjIHJjIHJhXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKSxcbiAgICBhbm5vdGVkJyApXG5cbmxldCByZWZlcl9saW5rc19hbm5vdCA/d2FybmluZyBzaWdzIGxpbmtzX2Fubm90IG1peCA9XG4gIExpc3QuaXRlclxuICAgIChmdW4gKHJhXyA6IExLYXBwYS5ydWxlX2FnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMpIC0+XG4gICAgICBsZXQgcmEgPSByYV8uYWdlbnQgaW5cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGosICgtMSwgLTEpKSwgcG9zKSwgbW9kcyAtPlxuICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGogbGlua3NfYW5ub3Qgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgKGRzdF90eSwgZHN0X3AsIG1haW50YWluZWQpIC0+XG4gICAgICAgICAgICAgIGxldCBtb2RzJyA9XG4gICAgICAgICAgICAgICAgaWYgbWFpbnRhaW5lZCB0aGVuXG4gICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1vZHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBtYXRjaCBtb2RzJyB3aXRoXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLk1haW50YWluZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IExLYXBwYS5MaW5rZWQgXyAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHdhcm5pbmcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgd2FybmluZyAtPlxuICAgICAgICAgICAgICAgICAgICBydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiB+d2FybmluZyB+cG9zIH5kc3RfdHkgc2lnc1xuICAgICAgICAgICAgICAgICAgICAgIHJhLkxLYXBwYS5yYV90eXBlIGkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhLkxLYXBwYS5yYV9wb3J0cy4oaSkgPC1cbiAgICAgICAgICAgICAgICAoTEthcHBhLkxOS19WQUxVRSAoaiwgKGRzdF9wLCBkc3RfdHkpKSwgcG9zKSwgbW9kcycpXG4gICAgICAgICAgfCAoICggKCBMS2FwcGEuTE5LX1ZBTFVFIF8gfCBMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5MTktfU09NRVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgICAgICAgICBfICksXG4gICAgICAgICAgICAgIF8gKSAtPlxuICAgICAgICAgICAgKCkpXG4gICAgICAgIHJhLkxLYXBwYS5yYV9wb3J0cylcbiAgICBtaXhcblxubGV0IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIGxzID1cbiAgbGV0IGEsIGIgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChwcywgY3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlBvcnQgcCAtPiBwIDo6IHBzLCBjc1xuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT4gcHMsIGMgOjogY3MpXG4gICAgICAoW10sIFtdKSBsc1xuICBpblxuICBMaXN0LnJldiBhLCBiXG5cbmxldCBmaW5hbF9ydWxlX3Nhbml0eSA/d2FybmluZyBzaWdzXG4gICAgKChsaHNfbGlua3Nfb25lLCBsaHNfbGlua3NfdHdvKSwgKHJoc19saW5rc19vbmUsIF8pKSBtaXggPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgbGhzX2xpbmtzX29uZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChpLCAoXywgXywgXywgcG9zLCBfKSkgLT4gTEthcHBhLnJhaXNlX2xpbmtfb25seV9vbmVfb2NjdXJlbmNlIGkgcG9zXG4gIGluXG4gIGxldCAoKSA9IHJlZmVyX2xpbmtzX2Fubm90ID93YXJuaW5nIHNpZ3MgbGhzX2xpbmtzX3R3byBtaXggaW5cbiAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByaHNfbGlua3Nfb25lIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuXG4oKlxuSXMgcmVzcG9uc2libGUgZm9yIHRoZSBjaGVjayB0aGF0OlxuLSBhZ2VudCBleGlzdHNcbi0gc2l0ZXMgZXhpc3Rcbi0gdW5pcXVlIHNpdGUgb2NjdXJlbmNlIC8gYWdlbnRcbi0gaW50ZXJuYWxfc3RhdGVzIGV4aXN0XG4tIHVuaXF1ZSBpbnRlcm5hbF9zdGF0ZSAvIHNpdGVcbi0gbGlua3MgYXBwZWFyIGV4YWN0bHkgdHdpY2VcbiopXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92MyB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIGluXG4gIGxldCByZWMgYXV4IGxpbmtzX2Fubm90IGFjYyBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBBc3QuQWJzZW50IHBvcyA6OiBfLCBfIHwgKEFzdC5QcmVzZW50IF8gOjogXyB8IFtdKSwgQXN0LkFic2VudCBwb3MgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgfCAoIEFzdC5QcmVzZW50ICgoKGxhZ2VudF9uYW1lLCBscG9zKSBhcyBhZ190eSksIGxhZ19zLCBsbW9kKSA6OiBsdCxcbiAgICAgICAgQXN0LlByZXNlbnQgKChyYWdlbnRfbmFtZSwgcnBvcyksIHJhZ19zLCBybW9kKSA6OiBydCApXG4gICAgICB3aGVuIFN0cmluZy5jb21wYXJlIGxhZ2VudF9uYW1lIHJhZ2VudF9uYW1lID0gMFxuICAgICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IHRydWUgbGFnX3MgcmFnX3MgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBscG9zIGxtb2Q7XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcnBvcyBybW9kO1xuICAgICAgbGV0IGxhZ19wLCBsYWdfYyA9IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIGxhZ19zIGluXG4gICAgICBsZXQgcmFnX3AsIHJhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgcmFnX3MgaW5cbiAgICAgIGxldCByYSwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgICAgICAgIGFnX3R5IGxpbmtzX2Fubm90IGxhZ19wIHJhZ19wIGxhZ19jIHJhZ19jXG4gICAgICBpblxuICAgICAgYXV4IGxpbmtzX2Fubm90JyAocmEgOjogYWNjKSBsdCBydFxuICAgIHwgKChBc3QuUHJlc2VudCBfIDo6IF8gfCBbXSkgYXMgZXJhc2VkKSwgYWRkZWQgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGFkZGVkIDw+IFtdIHRoZW5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiAoKVxuICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgobGFnLCBwb3MpLCBsYWdfcCwgXykgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgocmFnLCBfKSwgcmFnX3AsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuY29tcGFyZSBsYWcgcmFnID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgQXN0Lm5vX21vcmVfc2l0ZV9vbl9yaWdodCBmYWxzZSBsYWdfcCByYWdfcClcbiAgICAgICAgICAgICAgICAgICAgYWRkZWRcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSdWxlIGluZHVjZWQgZGVsZXRpb24gQU5EIGNyZWF0aW9uIG9mIHRoZSBhZ2VudCAlc1wiIGxhZykpXG4gICAgICAgICAgICBlcmFzZWRcbiAgICAgIGluXG4gICAgICBsZXQgbWl4LCBsbGlua3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGFjYywgbGFubm90KSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfbmFtZSksIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBtb2RpZjtcbiAgICAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJhLCBsYW5ub3QnID1cbiAgICAgICAgICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzIGxhbm5vdCBhZ2VudF9uYW1lIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICByYSA6OiBhY2MsIGxhbm5vdCcpXG4gICAgICAgICAgKGFjYywgZnN0IGxpbmtzX2Fubm90KVxuICAgICAgICAgIGVyYXNlZFxuICAgICAgaW5cbiAgICAgIGxldCBjbWl4LCBybGlua3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGFjYywgcmFubm90KSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfbmFtZSksIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBtb2RpZjtcbiAgICAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJhbm5vdCcsIHgnID1cbiAgICAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzID9jb250YWN0X21hcCByYW5ub3QgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgeCcnID1cbiAgICAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKVxuICAgICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgeCcnIDo6IGFjYywgcmFubm90JylcbiAgICAgICAgICAoW10sIHNuZCBsaW5rc19hbm5vdClcbiAgICAgICAgICBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IGZpbmFsX3J1bGVfc2FuaXR5IH53YXJuaW5nIHNpZ3MgKGxsaW5rcywgcmxpbmtzKSBtaXggaW5cbiAgICAgIExpc3QucmV2IG1peCwgTGlzdC5yZXYgY21peFxuICBpblxuICBhdXhcbiAgICAoIChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpLFxuICAgICAgKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSkgKVxuICAgIFtdIChMaXN0LmZsYXR0ZW4gbGhzKSAoTGlzdC5mbGF0dGVuIHJocylcblxubGV0IGFubm90YXRlX2xoc193aXRoX2RpZmZfdjQgfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgbGhzIHJocyA9XG4gIGxldCBzeW50YXhfdmVyc2lvbiA9IEFzdC5WNCBpblxuICBsZXQgcmVjIGF1eCBsaW5rc19hbm5vdCBtaXggY21peCBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBbXSwgW10gLT4gbGlua3NfYW5ub3QsIG1peCwgY21peFxuICAgIHwgQXN0LkFic2VudCBfIDo6IGx0LCBBc3QuQWJzZW50IF8gOjogcnQgLT4gYXV4IGxpbmtzX2Fubm90IG1peCBjbWl4IGx0IHJ0XG4gICAgfCAoIEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfdHlwZSksIHNpdGVzLCBsbW9kKSA6OiBsdCxcbiAgICAgICAgQXN0LkFic2VudCBfIDo6IHJ0ICkgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3MgbG1vZDtcbiAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgaW5cbiAgICAgIGxldCByYSwgbGFubm90JyA9XG4gICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6ZmFsc2Ugc2lnc1xuICAgICAgICAgIChmc3QgbGlua3NfYW5ub3QpIGFnZW50X3R5cGUgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgIGluXG4gICAgICBhdXggKGxhbm5vdCcsIHNuZCBsaW5rc19hbm5vdCkgKHJhIDo6IG1peCkgY21peCBsdCBydFxuICAgIHwgKCBBc3QuQWJzZW50IF8gOjogbHQsXG4gICAgICAgIEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfdHlwZSksIHNpdGVzLCBybW9kKSA6OiBydCApIC0+XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIHJtb2Q7XG4gICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3NcbiAgICAgICAgICA/Y29udGFjdF9tYXAgKHNuZCBsaW5rc19hbm5vdCkgYWdlbnRfdHlwZSBzaW1wbGVfcG9ydF9saXN0XG4gICAgICBpblxuICAgICAgbGV0IHgnJyA9XG4gICAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMgc2lncyBhZ2VudF90eXBlIGNvdW50ZXJfbGlzdFxuICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgeCdcbiAgICAgIGluXG4gICAgICBhdXggKGZzdCBsaW5rc19hbm5vdCwgcmFubm90JykgbWl4ICh4JycgOjogY21peCkgbHQgcnRcbiAgICB8ICggQXN0LlByZXNlbnQgKCgobGFnZW50X25hbWUsIGxwb3MpIGFzIGFnX3R5KSwgbGFnX3MsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuUHJlc2VudCAoKHJhZ2VudF9uYW1lLCBycG9zKSwgcmFnX3MsIHJtb2QpIDo6IHJ0ICkgLT5cbiAgICAgIGlmXG4gICAgICAgIFN0cmluZy5jb21wYXJlIGxhZ2VudF9uYW1lIHJhZ2VudF9uYW1lID0gMFxuICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IHRydWUgbGFnX3MgcmFnX3NcbiAgICAgIHRoZW4gKFxuICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgbHBvcyBsbW9kO1xuICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcnBvcyBybW9kO1xuICAgICAgICBsZXQgbGFnX3AsIGxhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbGFnX3MgaW5cbiAgICAgICAgbGV0IHJhZ19wLCByYWdfYyA9IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHJhZ19zIGluXG4gICAgICAgIGxldCByYSwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICBhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ190eSBsaW5rc19hbm5vdCBsYWdfcCByYWdfcCBsYWdfYyByYWdfY1xuICAgICAgICBpblxuICAgICAgICBhdXggbGlua3NfYW5ub3QnIChyYSA6OiBtaXgpIGNtaXggbHQgcnRcbiAgICAgICkgZWxzZVxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiTGVmdCBoYW5kIHNpZGUvcmlnaHQgaGFuZCBzaWRlIGFnZW50IG1pc21hdGNoXCIsIHJwb3MpKVxuICAgIHwgKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXywgW11cbiAgICB8IFtdLCAoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcG9zKSlcbiAgaW5cbiAgbGV0IHJlYyBhdXhfbGluZSBsaW5rc19hbm5vdCBtaXggY21peCBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIGxldCAoKSA9IGZpbmFsX3J1bGVfc2FuaXR5IH53YXJuaW5nIHNpZ3MgbGlua3NfYW5ub3QgbWl4IGluXG4gICAgICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcbiAgICB8IGhsIDo6IHRsLCBociA6OiB0ciAtPlxuICAgICAgbGV0IGxpbmtzX2Fubm90JywgbWl4JywgY21peCcgPSBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggaGwgaHIgaW5cbiAgICAgIGF1eF9saW5lIGxpbmtzX2Fubm90JyBtaXgnIGNtaXgnIHRsIHRyXG4gICAgfCAoKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXykgOjogXywgW11cbiAgICB8IFtdLCAoKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXykgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiTGVmdCBoYW5kIHNpZGUvcmlnaHQgaGFuZCBzaWRlIGFnZW50IG1pc21hdGNoXCIsIHBvcykpXG4gICAgfCBbXSA6OiBfLCBbXSB8IFtdLCBbXSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJJbnZhcmlhbnQgdmlvbGF0aW9uIGluIGFubm90YXRlX2xoc193aXRoLi4uXCIpKVxuICBpblxuICBhdXhfbGluZVxuICAgICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApXG4gICAgW10gW10gbGhzIHJoc1xuXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgbGhzIHJocyA9XG4gIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgfCBBc3QuVjMgLT4gYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92MyB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzXG4gIHwgQXN0LlY0IC0+IGFubm90YXRlX2xoc193aXRoX2RpZmZfdjQgfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgbGhzIHJoc1xuXG5sZXQgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzID9jb250YWN0X21hcFxuICAgIChtIDogQXN0Lm1peHR1cmUpIDpcbiAgICBDb3VudGVyc19jb21waWxlci5ydWxlX21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVyc1xuICAgICogQ291bnRlcnNfY29tcGlsZXIucmF3X21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycyA9XG4gICgqIG1peCBpcyB0aGUgbWl4dHVyZSBmcm9tIGluaXRpYWwgc3RhdGUgb2YgdGhlIHJ1bGUsIGNtaXggaXMgdGhlIG1peHR1cmUgYWZ0ZXIgdGhlIHJ1bGUgd2FzIGFwcGxpZWQgKilcbiAgbGV0IGxpbmtzX2Fubm90LCBtaXgsIGNtaXggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAobGFubm90LCBhY2MsIG5ld3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBsYW5ub3QsIGFjYywgbmV3c1xuICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggbW9kaWYgd2l0aFxuICAgICAgICAgICB8IEFzdC5Ob01vZCAtPlxuICAgICAgICAgICAgIGxldCBhLCBsYW5ub3QnID1cbiAgICAgICAgICAgICAgIGFubm90YXRlX2VkaXRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3NcbiAgICAgICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnZW50X3R5cGUgbGFubm90IHNpbXBsZV9wb3J0X2xpc3QgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsYW5ub3QnLCBhIDo6IGFjYywgbmV3c1xuICAgICAgICAgICB8IEFzdC5DcmVhdGUgLT5cbiAgICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTp0cnVlIHNpZ3MgP2NvbnRhY3RfbWFwIChzbmQgbGFubm90KSBhZ2VudF90eXBlXG4gICAgICAgICAgICAgICAgIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCB4JycgPVxuICAgICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgICAgICAgIHgnXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoZnN0IGxhbm5vdCwgcmFubm90JyksIGFjYywgeCcnIDo6IG5ld3NcbiAgICAgICAgICAgfCBBc3QuRXJhc2UgLT5cbiAgICAgICAgICAgICBsZXQgcmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTp0cnVlIHNpZ3MgKGZzdCBsYW5ub3QpIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChsYW5ub3QnLCBzbmQgbGFubm90KSwgcmEgOjogYWNjLCBuZXdzKSkpXG4gICAgICAoICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSkgKSxcbiAgICAgICAgW10sXG4gICAgICAgIFtdIClcbiAgICAgIG1cbiAgaW5cbiAgZmluYWxfcnVsZV9zYW5pdHkgP3dhcm5pbmc6Tm9uZSBzaWdzIGxpbmtzX2Fubm90IG1peDtcbiAgTGlzdC5yZXYgbWl4LCBMaXN0LnJldiBjbWl4XG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKG0gOiBBc3QubWl4dHVyZSkgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdCA9XG4gIGxldCAocmhzX2xpbmtzX29uZSwgXyksIGNtaXggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAocmFubm90LCBuZXdzKSAtPiBmdW5jdGlvblxuICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGNhbm5vdCBvY2N1cnMgaW4gY3JlYXRlZCBtaXh0dXJlc1wiLCBwb3MpKVxuICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIF9tb2RpZikgLT5cbiAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHJhbm5vdCcsIHgnID1cbiAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlOnRydWVcbiAgICAgICAgICAgICAgIHNpZ3MgP2NvbnRhY3RfbWFwIHJhbm5vdCBhZ2VudF90eXBlIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHgnJyA9XG4gICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgIHgnXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHJhbm5vdCcsIHgnJyA6OiBuZXdzKSlcbiAgICAgICgoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSwgW10pXG4gICAgICBtXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByaHNfbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGksIChfLCBfLCBfLCBwb3MsIF8pKSAtPiBMS2FwcGEucmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3NcbiAgaW5cbiAgTGlzdC5yZXYgY21peFxuXG5sZXQgZ2l2ZV9ydWxlX2xhYmVsIGJpZGlyZWN0aW9uYWwgKGlkLCBzZXQpIHByaW50ZXIgciA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoc3VjYyBpZCwgc2V0KSwgRm9ybWF0LmFzcHJpbnRmIFwiciVpOiAlYVwiIGlkIHByaW50ZXIgclxuICB8IFNvbWUgKGxhYiwgcG9zKSAtPlxuICAgIGxldCBzZXQnID0gTW9kcy5TdHJpbmdTZXQuYWRkIGxhYiBzZXQgaW5cbiAgICBpZiBzZXQgPT0gc2V0JyB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJBIHJ1bGUgbmFtZWQgJ1wiIF4gbGFiIF4gXCInIGFscmVhZHkgZXhpc3RzLlwiLCBwb3MpKVxuICAgIGVsc2UgaWYgYmlkaXJlY3Rpb25hbCB0aGVuIChcbiAgICAgIGxldCBzZXQnJyA9IE1vZHMuU3RyaW5nU2V0LmFkZCAoQXN0LmZsaXBfbGFiZWwgbGFiKSBzZXQnIGluXG4gICAgICBpZiBzZXQnID09IHNldCcnIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIkEgcnVsZSBuYW1lZCAnXCIgXiBBc3QuZmxpcF9sYWJlbCBsYWIgXiBcIicgYWxyZWFkeSBleGlzdHMuXCIsIHBvcykpXG4gICAgICBlbHNlXG4gICAgICAgIChpZCwgc2V0JycpLCBsYWJcbiAgICApIGVsc2VcbiAgICAgIChpZCwgc2V0JyksIGxhYlxuXG5sZXQgbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwIChwb3MgOiBMb2MudClcbiAgICAobWl4IDogQXN0Lm1peHR1cmUpID1cbiAgbWF0Y2hcbiAgICBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlOmZhbHNlIHNpZ3NcbiAgICAgID9jb250YWN0X21hcCBtaXhcbiAgd2l0aFxuICB8IHIsIFtdIC0+IGZzdCAoQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyByIFtdKVxuICB8IF8sIF8gLT5cbiAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoXCJBIG1peHR1cmUgY2Fubm90IGNyZWF0ZSBhZ2VudHNcIiwgcG9zKSlcblxubGV0IHJhd19taXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAobWl4IDogQXN0Lm1peHR1cmUpID1cbiAgbGV0IGIgPVxuICAgIGFubm90YXRlX2NyZWF0ZWRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgbWl4XG4gIGluXG4gIHNuZCAoQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBbXSBiKVxuXG5sZXQgY29udmVydF9hbGdfdmFyID9tYXhfYWxsb3dlZF92YXIgYWxncyBsYWIgcG9zID1cbiAgbGV0IGkgPVxuICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiBhbGdzIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAobGFiIF4gXCIgaXMgbm90IGEgZGVjbGFyZWQgdmFyaWFibGVcIiwgcG9zKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBtYXhfYWxsb3dlZF92YXIgd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlJlZmVyZW5jZSB0byBub3QgeWV0IGRlZmluZWQgJ1wiIF4gbGFiIF4gXCInIGlzIGZvcmJpZGRlbi5cIiwgcG9zKSlcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gKClcbiAgaW5cbiAgaVxuXG5sZXQgY29udmVydF90b2tlbl9uYW1lIHRrX25hbWUgdG9rIHBvcyA9XG4gIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIHRrX25hbWUgdG9rIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKHRrX25hbWUgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB0b2tlblwiLCBwb3MpKVxuXG5sZXQgcmVjIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA/bWF4X2FsbG93ZWRfdmFyXG4gICAgKGFsZywgcG9zKSA9XG4gICggKG1hdGNoIGFsZyB3aXRoXG4gICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBhc3QgLT5cbiAgICAgIEFsZ19leHByLktBUFBBX0lOU1RBTkNFXG4gICAgICAgIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBwb3MgYXN0KVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBsYWIgLT5cbiAgICAgIEFsZ19leHByLkFMR19WQVIgKGNvbnZlcnRfYWxnX3ZhciA/bWF4X2FsbG93ZWRfdmFyIGFsZ3MgbGFiIHBvcylcbiAgICB8IEFsZ19leHByLlRPS0VOX0lEIHRrX25hbWUgLT5cbiAgICAgIEFsZ19leHByLlRPS0VOX0lEIChjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zKVxuICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgYXN0KSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRVxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBleHByLFxuICAgICAgICAgIG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBhc3QgKVxuICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgdGtfbmFtZSkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU5cbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgZXhwcixcbiAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zIClcbiAgICB8IChBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkNPTlNUIF8pIGFzIHggLT4geFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGEsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGIgKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICAgIEFsZ19leHByLlVOX0FMR19PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBhIClcbiAgICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgICAgQWxnX2V4cHIuSUZcbiAgICAgICAgKCBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGNvbmQsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHllcyxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgbm8gKSksXG4gICAgcG9zIClcblxuYW5kIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgP21heF9hbGxvd2VkX3ZhciA9XG4gIGZ1bmN0aW9uXG4gIHwgKChBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UpLCBfKSBhcyB4IC0+IHhcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIHgsIHkpLCBwb3MgLT5cbiAgICAoIEFsZ19leHByLkJJTl9CT09MX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4LFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeSApLFxuICAgICAgcG9zIClcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgeCksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuVU5fQk9PTF9PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeCApLFxuICAgICAgcG9zIClcbiAgfCBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgeCwgeSksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuQ09NUEFSRV9PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4LFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ICksXG4gICAgICBwb3MgKVxuXG5sZXQgcHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgPSBmdW5jdGlvblxuICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gYXMgeCAtPiB4XG4gIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgeCAtPlxuICAgIFByaW1pdGl2ZXMuQWxnX3BleHByXG4gICAgICAoYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIHgpXG5cbigqIEludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiBmb3IgYSBydWxlLCB1c2VkIGJldHdlZW4gaW50ZXJuYWwgdHJhbnNsYXRpb25zICopXG50eXBlIHJ1bGVfaW50ZXJfcmVwID0ge1xuICBsYWJlbF9vcHQ6IChzdHJpbmcgKiBMb2MudCkgb3B0aW9uO1xuICBiaWRpcmVjdGlvbmFsOiBib29sOyAoKiBUT0RPIGNoZWNrICopXG4gIG1peHR1cmU6IExLYXBwYS5ydWxlX2FnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdDtcbiAgY3JlYXRlZF9taXg6IFJhd19taXh0dXJlLmFnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdDtcbiAgcm1fdG9rZW46XG4gICAgKCgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkpIGxpc3Q7XG4gIGFkZF90b2tlbjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSkgbGlzdDtcbiAga19kZWY6IChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQ7XG4gIGtfdW46XG4gICAgKCgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KVxuICAgICogKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpIG9wdGlvbilcbiAgICBvcHRpb247XG4gIHBvczogTG9jLnQ7XG59XG4oKiogSW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uIGZvciBydWxlIHR5cGUgKilcblxuKCoqIFthc3NlbWJsZV9ydWxlXSB0cmFuc2xhdGVzIGEgcnVsZV9pbnRlcl9yZXAgaW50byBhIExLYXBwYS5ydWxlICopXG5sZXQgYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gKHJ1bGUgOiBydWxlX2ludGVyX3JlcClcbiAgICAoc2lncyA6IFNpZ25hdHVyZS5zKSAodG9rIDogaW50IE1vZHMuU3RyaW5nTWFwLnQpXG4gICAgKGFsZ3MgOiBpbnQgTW9kcy5TdHJpbmdNYXAudCkgOiBMS2FwcGEucnVsZSA9XG4gIGxldCAocl9taXgsIHJfY3JlYXRlZCkgOiBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCA9XG4gICAgQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBydWxlLm1peHR1cmUgcnVsZS5jcmVhdGVkX21peFxuICBpblxuICBsZXQgcl9kZWx0YV90b2tlbnMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoYWwsICh0aywgcG9zKSkgLT5cbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuVU5fQUxHX09QIChPcGVyYXRvci5VTUlOVVMsIGFsKSkpLFxuICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0ayB0b2sgcG9zICkpXG4gICAgICBydWxlLnJtX3Rva2VuXG4gICAgfD4gTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAgICAoZnVuIChhbCwgKHRrLCBwb3MpKSAtPlxuICAgICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBhbCxcbiAgICAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGsgdG9rIHBvcyApKVxuICAgICAgICAgcnVsZS5hZGRfdG9rZW5cbiAgICB8PiBMaXN0LnJldlxuICBpblxuICBsZXQgcl9yYXRlID1cbiAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgcnVsZS5rX2RlZlxuICBpblxuICBsZXQgcl91bl9yYXRlID1cbiAgICBsZXQgcl9kaXN0IGQgPVxuICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgID9tYXhfYWxsb3dlZF92YXI6Tm9uZSBkXG4gICAgaW5cbiAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgIChmdW4gKHVuX3JhdGUnLCBkaXN0KSAtPlxuICAgICAgICBsZXQgdW5fcmF0ZScnID1cbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXI6Tm9uZSB1bl9yYXRlJ1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBkaXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGQgLT4gdW5fcmF0ZScnLCBTb21lIChyX2Rpc3QgZClcbiAgICAgICAgfCBOb25lIC0+IHVuX3JhdGUnJywgTm9uZSlcbiAgICAgIHJ1bGUua191blxuICBpblxuICB7XG4gICAgTEthcHBhLnJfbWl4O1xuICAgIHJfY3JlYXRlZDtcbiAgICByX2VkaXRfc3R5bGUgPSBydWxlLmJpZGlyZWN0aW9uYWw7XG4gICAgcl9kZWx0YV90b2tlbnM7XG4gICAgcl9yYXRlO1xuICAgIHJfdW5fcmF0ZTtcbiAgfVxuXG5sZXQgbW9kaWZfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgY29udGFjdF9tYXAgbW9kaWZcbiAgICBhY2MgPVxuICBtYXRjaCBtb2RpZiB3aXRoXG4gIHwgQXN0LkFQUExZIChuYiwgKGFzdF9ydWxlLCBwb3MpKSAtPlxuICAgIGxldCBydWxlIDogcnVsZV9pbnRlcl9yZXAgPVxuICAgICAgbWF0Y2ggYXN0X3J1bGUuQXN0LnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBydWxlX2NvbnRlbnQgLT5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNCB+aXNfcnVsZTp0cnVlXG4gICAgICAgICAgICBzaWdzIH5jb250YWN0X21hcCBydWxlX2NvbnRlbnQubWl4XG4gICAgICAgIGluXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQgPSBOb25lO1xuICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSB0cnVlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBydWxlX2NvbnRlbnQuZGVsdGFfdG9rZW47XG4gICAgICAgICAga19kZWYgPSBhc3RfcnVsZS5rX2RlZjtcbiAgICAgICAgICBrX3VuID0gYXN0X3J1bGUua191bjtcbiAgICAgICAgICBwb3M7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LkFycm93IHJ1bGVfY29udGVudCAtPlxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBydWxlX2NvbnRlbnQubGhzIHJ1bGVfY29udGVudC5yaHNcbiAgICAgICAgaW5cbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsX29wdCA9IE5vbmU7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBydWxlX2NvbnRlbnQucm1fdG9rZW47XG4gICAgICAgICAgYWRkX3Rva2VuID0gcnVsZV9jb250ZW50LmFkZF90b2tlbjtcbiAgICAgICAgICBrX2RlZiA9IGFzdF9ydWxlLmtfZGVmO1xuICAgICAgICAgIGtfdW4gPSBhc3RfcnVsZS5rX3VuO1xuICAgICAgICAgIHBvcztcbiAgICAgICAgfVxuICAgIGluXG4gICAgKCBBc3QuQVBQTFlcbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgbmIsXG4gICAgICAgICAgKGFzc2VtYmxlX3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHJ1bGUgc2lncyB0b2sgYWxncywgcG9zKSApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuVVBEQVRFICgobGFiLCBwb3MpLCBob3cpIC0+XG4gICAgbGV0IGkgPVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgIH5leGNlcDpcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIlZhcmlhYmxlIFwiIF4gbGFiIF4gXCIgaXMgbm90IGRlZmluZWRcIiwgcG9zKSlcbiAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiBhbGdzKVxuICAgIGluXG4gICAgKCBBc3QuVVBEQVRFXG4gICAgICAgICgoaSwgcG9zKSwgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGhvdyksXG4gICAgICBpIDo6IGFjYyApXG4gIHwgQXN0LlNUT1AgcCAtPlxuICAgICggQXN0LlNUT1BcbiAgICAgICAgKExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCksXG4gICAgICBhY2MgKVxuICB8IEFzdC5TTkFQU0hPVCAocmF3LCBwKSAtPlxuICAgICggQXN0LlNOQVBTSE9UXG4gICAgICAgICggcmF3LFxuICAgICAgICAgIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcFxuICAgICAgICApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuRElOIChyZWwsIHApIC0+XG4gICAgKCBBc3QuRElOXG4gICAgICAgICggcmVsLFxuICAgICAgICAgIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcFxuICAgICAgICApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuRElOT0ZGIHAgLT5cbiAgICAoIEFzdC5ESU5PRkZcbiAgICAgICAgKExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCksXG4gICAgICBhY2MgKVxuICB8IChBc3QuUExPVEVOVFJZIHwgQXN0LkNGTE9XTEFCRUwgKF8sIF8pKSBhcyB4IC0+IHgsIGFjY1xuICB8IEFzdC5QUklOVCAocCwgcCcpIC0+XG4gICAgKCBBc3QuUFJJTlRcbiAgICAgICAgKCBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHAsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwJ1xuICAgICAgICApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuQ0ZMT1dNSVggKGIsIChtLCBwb3MpKSAtPlxuICAgICggQXN0LkNGTE9XTUlYIChiLCAobWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgcG9zIG0sIHBvcykpLFxuICAgICAgYWNjIClcbiAgfCBBc3QuU1BFQ0lFU19PRiAoYiwgcCwgKG0sIHBvcykpIC0+XG4gICAgKCBBc3QuU1BFQ0lFU19PRlxuICAgICAgICAoIGIsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwLFxuICAgICAgICAgIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBwb3MgbSwgcG9zKSApLFxuICAgICAgYWNjIClcblxubGV0IHBlcnR1cmJhdGlvbl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgY29udGFjdF9tYXBcbiAgICAoKGFsYXJtLCBwcmUsIG1vZHMsIHBvc3QpLCBwb3MpIHVwX3ZhcnMgOlxuICAgIChfLCBfLCBfLCBfKSBBc3QucGVydHVyYmF0aW9uICogaW50IGxpc3QgPVxuICBsZXQgbW9kcycsIHVwX3ZhcnMnID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChtb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBjb250YWN0X21hcClcbiAgICAgIG1vZHMgdXBfdmFyc1xuICBpblxuICBsZXQgbWF4X2FsbG93ZWRfdmFyID0gTm9uZSBpblxuICAoICggKCBhbGFybSxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyKVxuICAgICAgICAgIHByZSxcbiAgICAgICAgbW9kcycsXG4gICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgIChib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcilcbiAgICAgICAgICBwb3N0ICksXG4gICAgICBwb3MgKSxcbiAgICB1cF92YXJzJyApXG5cbmxldCBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgY29udGFjdF9tYXAgPSBmdW5jdGlvblxuICB8IEFzdC5JTklUX01JWCAod2hvLCBwb3MpIC0+XG4gICAgQXN0LklOSVRfTUlYXG4gICAgICAocmF3X21peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcCB3aG8sIHBvcylcbiAgfCBBc3QuSU5JVF9UT0sgbGFiIC0+XG4gICAgQXN0LklOSVRfVE9LXG4gICAgICAoTGlzdC5tYXBcbiAgICAgICAgIChmdW4gKGxhYiwgcG9zKSAtPlxuICAgICAgICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBsYWIgdG9rIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHggLT4geCwgcG9zXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgKGxhYiBeIFwiIGlzIG5vdCBhIGRlY2xhcmVkIHRva2VuXCIsIHBvcykpKVxuICAgICAgICAgbGFiKVxuXG5sZXQgYWRkX3VuX3ZhcmlhYmxlIGtfdW4gYWNjIHJhdGVfdmFyID1cbiAgbWF0Y2gga191biB3aXRoXG4gIHwgTm9uZSAtPiBhY2MsIE5vbmVcbiAgfCBTb21lIChrLCBkaXN0KSAtPlxuICAgIGxldCBhY2NfdW4sIGsnID1cbiAgICAgIGlmIEFsZ19leHByLmhhc19taXggKExvYy52IGspIHRoZW5cbiAgICAgICAgKCAoTG9jLmFubm90X3dpdGhfZHVtbXkgcmF0ZV92YXIsIGspIDo6IGFjYyxcbiAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3ZhcikgKVxuICAgICAgZWxzZVxuICAgICAgICBhY2MsIGtcbiAgICBpblxuICAgIGFjY191biwgU29tZSAoaycsIGRpc3QpXG5cbnR5cGUgYWNjX2Z1bmN0aW9uX3J1bGVzID0ge1xuICBydWxlX25hbWVzOiBpbnQgKiBNb2RzLlN0cmluZ1NldC50O1xuICBleHRyYV92YXJzOlxuICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCkgbGlzdDtcbiAgY2xlYW5lZF9ydWxlczogcnVsZV9pbnRlcl9yZXAgbGlzdDtcbn1cblxuKCoqIFtuYW1lX2FuZF9wdXJpZnldIGNvbXBpbGVzIHRoZSBydWxlcyBmcm9tIEFzdC5ydWxlcyBpbnRvIHJ1bGVfaW50ZXJfcmVwLCBjYWxsZWQgaW4gYSBmb2xkICopXG5sZXQgbmFtZV9hbmRfcHVyaWZ5X3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgKGFjYyA6IGFjY19mdW5jdGlvbl9ydWxlcylcbiAgICAoKGxhYmVsX29wdCwgKGFzdF9ydWxlLCByX3BvcykpIDpcbiAgICAgIHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgOiBhY2NfZnVuY3Rpb25fcnVsZXMgPVxuICBsZXQgcnVsZV9uYW1lcycsIHJ1bGVfbGFiZWwgPVxuICAgIGdpdmVfcnVsZV9sYWJlbCBhc3RfcnVsZS5iaWRpcmVjdGlvbmFsIGFjYy5ydWxlX25hbWVzIEFzdC5wcmludF9hc3RfcnVsZVxuICAgICAgYXN0X3J1bGUgbGFiZWxfb3B0XG4gIGluXG4gIGxldCBhY2MnLCBrX2RlZiA9XG4gICAgaWYgQWxnX2V4cHIuaGFzX21peCAoTG9jLnYgYXN0X3J1bGUua19kZWYpIHRoZW4gKFxuICAgICAgbGV0IHJhdGVfdmFyID0gcnVsZV9sYWJlbCBeIFwiX3JhdGVcIiBpblxuICAgICAgKCAoTG9jLmFubm90X3dpdGhfZHVtbXkgcmF0ZV92YXIsIGFzdF9ydWxlLmtfZGVmKSA6OiBhY2MuZXh0cmFfdmFycyxcbiAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkFMR19WQVIgcmF0ZV92YXIpIClcbiAgICApIGVsc2VcbiAgICAgIGFjYy5leHRyYV92YXJzLCBhc3RfcnVsZS5Bc3Qua19kZWZcbiAgaW5cbiAgbGV0IGFjYycnLCBrX3VuID1cbiAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua191biBhY2MnIChydWxlX2xhYmVsIF4gXCJfdW5fcmF0ZVwiKVxuICBpblxuICBtYXRjaCBhc3RfcnVsZS5yZXdyaXRlIHdpdGhcbiAgfCBBc3QuRWRpdCBlIC0+XG4gICAgaWZcbiAgICAgIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwgfHwgYXN0X3J1bGUua19vcCA8PiBOb25lXG4gICAgICB8fCBhc3RfcnVsZS5rX29wX3VuIDw+IE5vbmVcbiAgICB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJSdWxlcyBpbiBlZGl0IG5vdGF0aW9uIGNhbm5vdCBiZSBiaWRpcmVjdGlvbmFsXCIsIHJfcG9zKSk7XG4gICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGU6dHJ1ZSBzaWdzXG4gICAgICAgIH5jb250YWN0X21hcCBlLkFzdC5taXhcbiAgICBpblxuICAgIHtcbiAgICAgIHJ1bGVfbmFtZXMgPSBydWxlX25hbWVzJztcbiAgICAgIGV4dHJhX3ZhcnMgPSBhY2MnJztcbiAgICAgIGNsZWFuZWRfcnVsZXMgPVxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWxfb3B0O1xuICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSB0cnVlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBlLkFzdC5kZWx0YV90b2tlbjtcbiAgICAgICAgICBrX2RlZjtcbiAgICAgICAgICBrX3VuO1xuICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICB9XG4gICAgICAgIDo6IGFjYy5jbGVhbmVkX3J1bGVzO1xuICAgIH1cbiAgfCBBc3QuQXJyb3cgYSAtPlxuICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICBhLkFzdC5saHMgYS5Bc3QucmhzXG4gICAgaW5cbiAgICBsZXQgcnVsZXMnID1cbiAgICAgIHtcbiAgICAgICAgbGFiZWxfb3B0O1xuICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgIG1peHR1cmU7XG4gICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICBybV90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICBhZGRfdG9rZW4gPSBhLkFzdC5hZGRfdG9rZW47XG4gICAgICAgIGtfZGVmO1xuICAgICAgICBrX3VuO1xuICAgICAgICBwb3MgPSByX3BvcztcbiAgICAgIH1cbiAgICAgIDo6IGFjYy5jbGVhbmVkX3J1bGVzXG4gICAgaW5cbiAgICBsZXQgYWNjJycnLCBydWxlcycnID1cbiAgICAgIG1hdGNoIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwsIGFzdF9ydWxlLmtfb3Agd2l0aFxuICAgICAgfCB0cnVlLCBTb21lIGsgd2hlbiBBbGdfZXhwci5oYXNfbWl4IChMb2MudiBrKSAtPlxuICAgICAgICBsZXQgcmF0ZV92YXIgPSBBc3QuZmxpcF9sYWJlbCBydWxlX2xhYmVsIF4gXCJfcmF0ZVwiIGluXG4gICAgICAgIGxldCByYXRlX3Zhcl91biA9IEFzdC5mbGlwX2xhYmVsIHJ1bGVfbGFiZWwgXiBcIl91bl9yYXRlXCIgaW5cbiAgICAgICAgbGV0IGFjY191biwga19vcF91biA9XG4gICAgICAgICAgYWRkX3VuX3ZhcmlhYmxlIGFzdF9ydWxlLmtfb3BfdW4gYWNjJycgcmF0ZV92YXJfdW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICAgICAgYS5Bc3QucmhzIGEuQXN0Lmxoc1xuICAgICAgICBpblxuICAgICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgaykgOjogYWNjX3VuLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsX29wdCA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIChsLCBwKSAtPiBBc3QuZmxpcF9sYWJlbCBsLCBwKSBsYWJlbF9vcHQ7XG4gICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgICBybV90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICAgICAga19kZWYgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3Zhcik7XG4gICAgICAgICAgICBrX3VuID0ga19vcF91bjtcbiAgICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICA6OiBydWxlcycgKVxuICAgICAgfCB0cnVlLCBTb21lIHJhdGUgLT5cbiAgICAgICAgbGV0IHJhdGVfdmFyX3VuID0gQXN0LmZsaXBfbGFiZWwgcnVsZV9sYWJlbCBeIFwiX3VuX3JhdGVcIiBpblxuICAgICAgICBsZXQgYWNjX3VuLCBrX29wX3VuID1cbiAgICAgICAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua19vcF91biBhY2MnJyByYXRlX3Zhcl91blxuICAgICAgICBpblxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBhLkFzdC5yaHMgYS5Bc3QubGhzXG4gICAgICAgIGluXG4gICAgICAgICggYWNjX3VuLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsX29wdCA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIChsLCBwKSAtPiBBc3QuZmxpcF9sYWJlbCBsLCBwKSBsYWJlbF9vcHQ7XG4gICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgICBybV90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICAgICAga19kZWYgPSByYXRlO1xuICAgICAgICAgICAga191biA9IGtfb3BfdW47XG4gICAgICAgICAgICBwb3MgPSByX3BvcztcbiAgICAgICAgICB9XG4gICAgICAgICAgOjogcnVsZXMnIClcbiAgICAgIHwgZmFsc2UsIE5vbmUgLT4gYWNjJycsIHJ1bGVzJ1xuICAgICAgfCBmYWxzZSwgU29tZSBfIHwgdHJ1ZSwgTm9uZSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBcIkluY29tcGF0aWJsZSBhcnJvdyBhbmQga2luZWN0aWMgcmF0ZSBmb3IgaW52ZXJzZSBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICByX3BvcyApKVxuICAgIGluXG4gICAgeyBydWxlX25hbWVzID0gcnVsZV9uYW1lcyc7IGV4dHJhX3ZhcnMgPSBhY2MnJyc7IGNsZWFuZWRfcnVsZXMgPSBydWxlcycnIH1cblxudHlwZSBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzID1cbiAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdCBTaWduYXR1cmUuc2l0ZV9zaWdcbigqKiBUZW1wb3JhcnkgdHlwZSB0byBzdG9yZSBzaXRlIHNpZ25hdHVyZSB3aXRoIGxpc3QgbGlua3MgaW5zdGVhZCBvZiBhcnJheSBhcnJheSBsaW5rcyAqKVxuXG4oKiogW3ByZXBhcmVfYWdlbnRfc2lnIH5zaXRlcyBldmFsdWF0ZXMgdG8gKHNpdGVfc2lncywgY291bnRlcl9saXN0KSB3aGljaCBkZXNjcmliZSBkYXRhIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgU2lnbmF0dXJlLnQgZm9yIGEgc2luZ2xlIGFnZW50KilcbmxldCBwcmVwYXJlX2FnZW50X3NpZyB+KHNpdGVzIDogQXN0LmNvdW50ZXJfc2lnIEFzdC5zaXRlIGxpc3QpIDpcbiAgICBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0ID1cbiAgbGV0ICggKHNpdGVfc2lnc19wcmVfbmFtZWRkZWNscyA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMpIGxpc3QpLFxuICAgICAgICAoY291bnRlcl9uYW1lcyA6IHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0KSApID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gc2l0ZSAoYWNjX3NpdGVfc2lncywgYWNjX2NvdW50ZXJfbmFtZXMpIC0+XG4gICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAoKiBUT0RPIHNlZSBpZiBjYW4gcmVtb3ZlIEFzdCBoZXJlICopXG4gICAgICAgIHwgQXN0LlBvcnQgcCAtPlxuICAgICAgICAgICggKCBwLnBvcnRfbmFtZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgICBOYW1lZERlY2xzLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAoVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHgsIHBvcyAtPiAoeCwgcG9zKSwgKClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUsIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBpbnRlcm5hbCBzdGF0ZSBpbnNpZGUgc2lnbmF0dXJlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIHAucG9ydF9pbnQpO1xuICAgICAgICAgICAgICAgIGxpbmtzID1cbiAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjX2xpbmtzJyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCAoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19BTlkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19saW5rcydcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1ZBTFVFIF8pLCBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJGb3JiaWRkZW4gbGluayBzdGF0dXMgaW5zaWRlIHNpZ25hdHVyZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKGEsIGIpLCBfIC0+IChhLCBiKSA6OiBhY2NfbGlua3MnKVxuICAgICAgICAgICAgICAgICAgICAgICBbXSBwLnBvcnRfbGluayk7XG4gICAgICAgICAgICAgICAgY291bnRlcl9pbmZvID0gTm9uZTtcbiAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICA6OiBhY2Nfc2l0ZV9zaWdzLFxuICAgICAgICAgICAgYWNjX2NvdW50ZXJfbmFtZXMgKVxuICAgICAgICB8IENvdW50ZXIgYyAtPlxuICAgICAgICAgICgqIFdlIGFyZSByZWFkaW5nIGhlcmUgYSBzaWduYXR1cmUsIG9ubHkgQ0VRIHRlc3RzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgICAgICggKCBjLkFzdC5jb3VudGVyX3NpZ19uYW1lLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxfc3RhdGUgPSBOYW1lZERlY2xzLmNyZWF0ZSBbfHxdO1xuICAgICAgICAgICAgICAgICgqIEFnZW50IHdpdGggY291bnRlciBjYW4gbGluayB0byBwb3J0IFtiXSBvbiBjb3VudGVyIGFnZW50IFtfX2NvdW50ZXJfYWdlbnRdICopXG4gICAgICAgICAgICAgICAgbGlua3MgPVxuICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teSBcImJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IFwiX19jb3VudGVyX2FnZW50XCIgKTtcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBjb3VudGVyX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYy5Bc3QuY291bnRlcl9zaWdfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLCBfKSAtPiBTb21lIGlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+IE5vbmUpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19tYXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGMuQXN0LmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSwgXykgLT4gU29tZSBpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKSAtPiBOb25lKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2RlZmF1bHRfdmFsdWUgPSBjLkFzdC5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgIDo6IGFjY19zaXRlX3NpZ3MsXG4gICAgICAgICAgICBjLmNvdW50ZXJfc2lnX25hbWUgOjogYWNjX2NvdW50ZXJfbmFtZXMgKSlcbiAgICAgIHNpdGVzIChbXSwgW10pXG4gIGluXG4gIE5hbWVkRGVjbHMuY3JlYXRlX2Zyb21fbGlzdCBzaXRlX3NpZ3NfcHJlX25hbWVkZGVjbHMsIGNvdW50ZXJfbmFtZXNcblxuKCoqIFttYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzIGNvdW50ZXJzX3Blcl9hZ2VudF0gZXZhbHVhdGVzIHRvXG4gIChjb3VudGVyX2FnZW50X25hbWUsIHNpdGVfc2lnc19jb3VudGVyX2FnZW50KSB3aGljaCBkZXNjcmliZSB0aGUgY291bnRlclxuICAgICAgYWdlbnQgYW5kIGl0cyBzaXRlIHNpZ25hdHVyZXMgd2l0aCBwb3NzaWJsZSBsaW5rcyB0byBvdGhlciBhZ2VudHMuXG4gICAgICBbY291bnRlcl9pbmZvXSBhc3NvY2lhdGVzIGVhY2ggYWdlbnQgdG8gYSBsaXN0IG9mIGNvdW50ZXIgcG9ydHMsIG9uZSBmb3IgZWFjaCBkZWZpbmVkIGNvdW50ZXIgKilcbmxldCBtYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzXG4gICAgKGNvdW50ZXJzX3Blcl9hZ2VudCA6ICgoc3RyaW5nICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSBsaXN0KSBsaXN0KSA6XG4gICAgKHN0cmluZyAqIExvYy50KVxuICAgICogKChzdHJpbmcgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0IFNpZ25hdHVyZS5zaXRlX3NpZyBOYW1lZERlY2xzLnRcbiAgICA9XG4gIGxldCBjb3VudGVyX2FnZW50X25hbWUgPSBcIl9fY291bnRlcl9hZ2VudFwiLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGFfcG9ydF9uYW1lID0gXCJhXCIsIExvYy5kdW1teSBpblxuICAoKiBhZnRlciBwb3J0ICopXG4gIGxldCBiX3BvcnRfbmFtZSA9IFwiYlwiLCBMb2MuZHVtbXkgaW5cblxuICAoKiBiZWZvcmUgcG9ydCAqKVxuXG4gICgqIFBvcnQgW2FdIGNhbiBsaW5rIHRvIHBvcnQgYiBvZiBhZ2VudCBvZiB0eXBlIGNvdW50ZXIgYWdlbnQgKilcbiAgbGV0IGFfcG9ydF9zaWcgPVxuICAgIHtcbiAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICBsaW5rcyA9IFNvbWUgWyBiX3BvcnRfbmFtZSwgY291bnRlcl9hZ2VudF9uYW1lIF07XG4gICAgICBjb3VudGVyX2luZm8gPSBOb25lO1xuICAgIH1cbiAgaW5cbiAgKCogUG9ydCBbYl0gY2FuIGxpbmsgdG8gcG9ydCBhIG9mIGFnZW50IG9mIHR5cGUgY291bnRlciBhZ2VudFxuICAgKiBPUiBmb3IgZWFjaCBhZ2VudCBbYWdlbnRfbmFtZV0gd2l0aCBjb3VudGVycywgdG8gdGhlaXIgcG9ydHNcbiAgICogW2FnZW50X2NvdW50ZXJfcG9ydF9uYW1lXSAqKVxuICBsZXQgYl9saW5rcyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChhZ2VudF9uYW1lLCBjb3VudGVyc19mcm9tX2FnZW50KSBhY2MgLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGFnZW50X2NvdW50ZXJfcG9ydF9uYW1lIC0+IGFnZW50X2NvdW50ZXJfcG9ydF9uYW1lLCBhZ2VudF9uYW1lKVxuICAgICAgICAgIGNvdW50ZXJzX2Zyb21fYWdlbnRcbiAgICAgICAgQCBhY2MpXG4gICAgICBjb3VudGVyc19wZXJfYWdlbnRcbiAgICAgIFsgYV9wb3J0X25hbWUsIGNvdW50ZXJfYWdlbnRfbmFtZSBdXG4gIGluXG4gIGxldCBiX3BvcnRfc2lnID1cbiAgICB7XG4gICAgICBTaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgPSBOYW1lZERlY2xzLmNyZWF0ZSBbfHxdO1xuICAgICAgbGlua3MgPSBTb21lIGJfbGlua3M7XG4gICAgICBjb3VudGVyX2luZm8gPSBOb25lO1xuICAgIH1cbiAgaW5cbiAgbGV0IHNpdGVfc2lnc19jb3VudGVyX2FnZW50ID1cbiAgICBOYW1lZERlY2xzLmNyZWF0ZSBbfCBhX3BvcnRfbmFtZSwgYV9wb3J0X3NpZzsgYl9wb3J0X25hbWUsIGJfcG9ydF9zaWcgfF1cbiAgaW5cbiAgY291bnRlcl9hZ2VudF9uYW1lLCBzaXRlX3NpZ3NfY291bnRlcl9hZ2VudFxuXG5sZXQgYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgfihidWlsZF9jb250YWN0X21hcCA6IGJvb2wpXG4gICAgKGFnZW50X3NpZ3NfcHJlIDogc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cyBOYW1lZERlY2xzLnQgTmFtZWREZWNscy50KSA6XG4gICAgU2lnbmF0dXJlLnQgTmFtZWREZWNscy50ID1cbiAgbGV0IHNpemVfc2lncyA9IE5hbWVkRGVjbHMuc2l6ZSBhZ2VudF9zaWdzX3ByZSBpblxuICBOYW1lZERlY2xzLm1hcGlcbiAgICAoZnVuIGFnX2lkIGFnX25hbWUgLT5cbiAgICAgIE5hbWVkRGVjbHMubWFwIChmdW4gc2l0ZV9uYW1lX2FnMSBzaXRlX3NpZyAtPlxuICAgICAgICAgIGlmIG5vdCBidWlsZF9jb250YWN0X21hcCB0aGVuXG4gICAgICAgICAgICB7IHNpdGVfc2lnIHdpdGggU2lnbmF0dXJlLmxpbmtzID0gTm9uZSB9XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBVcGRhdGUgbGlua3MgKilcbiAgICAgICAgICAgICgqIFRPRE8gaW1wcm92ZSBjb21tZW50IGFib3ZlICopXG4gICAgICAgICAgICBsZXQgc2l0ZV9saW5rcyA9XG4gICAgICAgICAgICAgIEFycmF5LmluaXQgKHNpemVfc2lncyAtIGFnX2lkKSAoZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIEFycmF5Lm1ha2VcbiAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuc2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3NfcHJlIChpICsgYWdfaWQpKSlcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKCgoc2l0ZV9uYW1lX2FnMiwgcG9zKSBhcyBzaXRlX25hbWUpLCAoKGFnMl9uYW1lLCBfKSBhcyBhZykpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFnMl9pZCA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwiYWdcIiBhZ2VudF9zaWdzX3ByZSBhZyBpblxuICAgICAgICAgICAgICAgIGxldCBzaXRlX2lkID1cbiAgICAgICAgICAgICAgICAgIE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwic2l0ZSBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzX3ByZSBhZzJfaWQpXG4gICAgICAgICAgICAgICAgICAgIHNpdGVfbmFtZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgYWcyX2lkID49IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgIHNpdGVfbGlua3MuKGFnMl9pZCAtIGFnX2lkKS4oc2l0ZV9pZCkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsZXQgc2hvdWxkX3JhaXNlX2Zvcl9taXNzaW5nX2xpbmsgPVxuICAgICAgICAgICAgICAgICAgbm90XG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgoeCwgXyksICh5LCBfKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gc2l0ZV9uYW1lX2FnMSAmJiB5ID0gYWdfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKChOYW1lZERlY2xzLmVsdF92YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lnc19wcmUgYWcyX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmxpbmtzIHw+IE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayB0aGVuXG4gICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZiBcIk5vIGxpbmsgdG8gJXMuJXMgZnJvbSAlcy4lcy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9uYW1lX2FnMSBhZ19uYW1lIHNpdGVfbmFtZV9hZzIgYWcyX25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlIHNpdGVfc2lnLmxpbmtzKTtcbiAgICAgICAgICAgIHsgc2l0ZV9zaWcgd2l0aCBTaWduYXR1cmUubGlua3MgPSBTb21lIHNpdGVfbGlua3MgfVxuICAgICAgICAgICkpKVxuICAgIGFnZW50X3NpZ3NfcHJlXG5cbmxldCBjcmVhdGVfc2lncyAobCA6IEFzdC5hZ2VudF9zaWcgbGlzdCkgOiBTaWduYXR1cmUucyA9XG4gICgqIENvbnRhY3QgbWFwIHNob3VsZCBiZSBidWlsdCBvbmx5IGlmIGEgc3BlY2lmaWMgbGluayBpcyBkZXNjcmliZWQgaW4gdGhlIGRlZmluaXRpb24gb2Ygc2lnbmF0dXJlICopXG4gIGxldCBidWlsZF9jb250YWN0X21hcCA6IGJvb2wgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYzAgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBmb3JiaWRkZW4gaW4gc2lnbmF0dXJlXCIsIHBvcykpXG4gICAgICAgIHwgQXN0LlByZXNlbnQgKF8sIHNpdGVzLCBfKSAtPlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjYzEgc2l0ZSAtPlxuICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3QuQ291bnRlciBfIC0+IGFjYzFcbiAgICAgICAgICAgICAgfCBBc3QuUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjMiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSksIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBhY2MyXG4gICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVkFMVUUgXyksIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBsaW5rIHN0YXR1cyBpbnNpZGUgYSBkZWZpbml0aW9uIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpXG4gICAgICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIChfLCBfKSwgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgYWNjMSBwLkFzdC5wb3J0X2xpbmspXG4gICAgICAgICAgICBhY2MwIHNpdGVzKVxuICAgICAgZmFsc2UgbFxuICBpblxuXG4gIGxldCAoIChzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgOlxuICAgICAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCkgbGlzdCksXG4gICAgICAgIChjb3VudGVyc19wZXJfYWdlbnQgOlxuICAgICAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdCkgbGlzdCkgKSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIGFnZW50IChhY2Nfc2lncywgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudCkgLT5cbiAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhY2Nfc2lncywgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF9uYW1lLCBzaXRlcywgXykgLT5cbiAgICAgICAgICBsZXQgc2l0ZV9zaWdzX25kLCBjb3VudGVyc19hZ2VudCA9IHByZXBhcmVfYWdlbnRfc2lnIH5zaXRlcyBpblxuICAgICAgICAgIGxldCBjb3VudGVycycgPVxuICAgICAgICAgICAgaWYgY291bnRlcnNfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgICAgICAgIGFjY19jb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKGFnZW50X25hbWUsIGNvdW50ZXJzX2FnZW50KSA6OiBhY2NfY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoYWdlbnRfbmFtZSwgc2l0ZV9zaWdzX25kKSA6OiBhY2Nfc2lncywgY291bnRlcnMnKVxuICAgICAgbCAoW10sIFtdKVxuICBpblxuXG4gIGxldCBhZ2VudF9zaWdzIDogU2lnbmF0dXJlLnQgTmFtZWREZWNscy50ID1cbiAgICAoaWYgY291bnRlcnNfcGVyX2FnZW50ID0gW10gdGhlblxuICAgICAgIHNpZ3Nfd2l0aF9saW5rc19hc19saXN0c1xuICAgICBlbHNlXG4gICAgICAgbWFrZV9jb3VudGVyX2FnZW50X3NpdGVfc2lncyBjb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICA6OiBzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMpXG4gICAgfD4gTmFtZWREZWNscy5jcmVhdGVfZnJvbV9saXN0XG4gICAgfD4gYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgfmJ1aWxkX2NvbnRhY3RfbWFwXG4gIGluXG5cbiAgKCogVE9ETyBzZWUgYWdlbnRfc2lncyBuYW1pbmdzICopXG4gIFNpZ25hdHVyZS5jcmVhdGUgfmNvdW50ZXJzX3Blcl9hZ2VudCBhZ2VudF9zaWdzXG5cbmxldCBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb250YWN0X21hcCB0b2sgYWxncyBpbml0cyA9XG4gIExpc3QubWFwXG4gICAgKGZ1biAoZXhwciwgaW5pKSAtPlxuICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgZXhwcixcbiAgICAgICAgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGNvbnRhY3RfbWFwIGluaSApKVxuICAgIGluaXRzXG5cbnR5cGUgYXN0X2NvbXBpbGVkX2RhdGEgPSB7XG4gIGFnZW50c19zaWc6IFNpZ25hdHVyZS5zO1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgdG9rZW5fbmFtZXM6IHVuaXQgTmFtZWREZWNscy50O1xuICBhbGdfdmFyc19maW5kZXI6IGludCBNb2RzLlN0cmluZ01hcC50O1xuICB1cGRhdGVkX2FsZ192YXJzOiBpbnQgbGlzdDtcbiAgcmVzdWx0OlxuICAgICggQXN0LmFnZW50LFxuICAgICAgQXN0LmFnZW50X3NpZyxcbiAgICAgIExLYXBwYS5ydWxlX21peHR1cmUsXG4gICAgICBSYXdfbWl4dHVyZS50LFxuICAgICAgaW50LFxuICAgICAgTEthcHBhLnJ1bGUgKVxuICAgIEFzdC5jb21waWw7XG4gICAgICAoKiogQ29tcGlsZWQgZGF0YSB3aGVyZSBpZGVudGlmaWVycyBhcmUgaSBBc3QuY29tcGlsIHdoZXJlIGlkZW50aWZpZXJzXG4gICAgICogYXJlIGludGVnZXJzIGFuZCBub3Qgc3RyaW5nLCBzeW50YWN0aWMgc3VnYXIgb24gcnVsZXMgYXJlIGV4cGFuc2VkXG4gICAgICogKHN5bnRhY3RpYyBzdWdhciBvbiBtaXh0dXJlIGFyZSBub3QpICopXG59XG5cbmxldCBpbnZlcnRlZF9jb3VudGVyX25hbWUgKG5hbWUgOiBzdHJpbmcpIDogc3RyaW5nID1cbiAgbmFtZSBeIFNpZ25hdHVyZS5pbnZlcnRlZF9jb3VudGVyX3N1ZmZpeFxuXG4oKiogRXZhbHVhdGVzIHRvIGEgYXN0X2NvbXBpbCB3aGVyZSBjbHRlIHRlc3RzIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGNndGUgdGVzdHMuXG4gKiBGb3IgdGhpcywgZm9yIGVhY2ggY291bnRlciB3aGVyZSBhIENMVEUgdGVzdCBpcyBwcmVzZW50LCB3aG9zZSB2YWx1ZXMgYXJlIGluIFtcXFthLCBiXFxdXSwgaW5pdGlhbGl6ZWQgYXQgW2ldIGFuZCBhZGQgYSBuZXcgY291bnRlciBiZWxvbmdpbmcgaW4gW2EsIGJdIGluaXRpYWxpemVkIGF0IFthK2ItaV0uXG4gKiBFYWNoIHRlc3QgWz4gdmFsdWVdIGlzIHRoZW4gdHJhbnNsYXRlZCBpbnRvIGEgdGVzdCB0byB0aGUgXCJpbnZlcnRlZFwiIGNvdW50ZXIgYXMgWzwgYStiLXZhbHVlXS5cbiAqIEVhY2ggZGVsdGEgWysgZGVsdGFdIGlzIHRyYW5zbGF0ZWQgaW50byBhIFstIGRlbHRhXSAqKVxuXG5cblxuXG5sZXQgdHJhbnNsYXRlX2NsdGVfaW50b19jZ3RlIChhc3RfY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKSA9XG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MyIGFnZW50X2xpc3QgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYzMgYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFjYzNcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVfbGlzdCwgXykgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGFjYzQgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjNFxuICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT4gZiBhY2M0IChMb2MudiBhZ2VudF9uYW1lKSBjb3VudGVyKVxuICAgICAgICAgICAgICBhY2MzIHNpdGVfbGlzdClcbiAgICAgICAgYWNjMiBhZ2VudF9saXN0KVxuICAgICAgYWNjIG1peHR1cmVcbiAgaW5cbiAgbGV0IHJlYyBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBleHByID1cbiAgICBtYXRjaCBMb2MudiBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKF8sIGUxLCBlMikgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZTEpIGUyXG4gICAgfCBVTl9BTEdfT1AgKF8sIGUpIHwgRElGRl9UT0tFTiAoZSwgXykgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyAtPiBhY2NcbiAgICB8IEtBUFBBX0lOU1RBTkNFIG1peHR1cmUgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgbWl4dHVyZVxuICAgIHwgSUYgKGViLCBlMSwgZTIpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTIpIGViXG4gICAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChlLCBtaXh0dXJlKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlKSBlXG4gIGFuZCBjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiBhY2MgYmV4cHIgPVxuICAgIG1hdGNoIExvYy52IGJleHByIHdpdGhcbiAgICB8IFRSVUUgfCBGQUxTRSAtPiBhY2NcbiAgICB8IEJJTl9CT09MX09QIChfLCBiZTEsIGJlMikgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2JleHByIGYgKGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIGFjYyBiZTEpIGJlMlxuICAgIHwgVU5fQk9PTF9PUCAoXywgYmUpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIGFjYyBiZVxuICAgIHwgQ09NUEFSRV9PUCAoXywgZTEsIGUyKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTJcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQgZiBhY2MgYmV4cHIgPVxuICAgIG1hdGNoIGJleHByIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSBlIC0+IGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIGFjYyBlXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fcnVsZSBmIGFjYyBydWxlID1cbiAgICBsZXQgcnVsZSA6IEFzdC5ydWxlID0gcnVsZSB8PiBMb2MudiBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgIHwgQXN0LkVkaXQgXyAtPiBhY2MgKCogbm8gY291bnRlciB0ZXN0IGFsbG93ZWQgaW4gZWRpdCBydWxlICopICgqIHRvIGRvICopXG4gICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIGNvbnRlbnQubGhzXG4gICAgaW5cbiAgICBsZXQgYWNjID1cbiAgICAgIG1hdGNoIHJ1bGUua191biB3aXRoIE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSAoZSwgU29tZSBlJykgLT5cbiAgICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlJyApIGVcbiAgICAgICAgfCBTb21lIChlLCBOb25lKSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgaW5cbiAgICBsZXQgYWNjID0gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgcnVsZS5rX2RlZiBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5rX29wX3VuIHdpdGggTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIChlLCBTb21lIGUnKSAtPlxuICAgICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUnICkgZVxuICAgICAgICB8IFNvbWUgKGUsIE5vbmUpIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICBpblxuICAgIGxldCBhY2M9XG4gICAgICBtYXRjaCBydWxlLmtfb3Agd2l0aCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgaW5cbiAgICBhY2NcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl92YXJpYWJsZSBmIGFjYyB2YXJpYWJsZV9kZWYgPVxuICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIChzbmQgdmFyaWFibGVfZGVmKVxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX29ic2VydmFibGUgZiBhY2Mgb2JzX2RlZiA9XG4gICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2Mgb2JzX2RlZlxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX2luaXQgZiBhY2MgaW5pdCA9XG4gICAgbGV0IGUsXyA9IGluaXQgaW5cbiAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fcHJpbnQgZiBhY2MgcCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBfIC0+IGFjY1xuICAgIHwgQWxnX3BleHByIGUgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX21vZCBmIGFjYyBtb2RfZGVmID1cbiAgICBtYXRjaCBtb2RfZGVmIHdpdGhcbiAgICB8IEFzdC5BUFBMWSAoZSxyKSAtPlxuICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIHIpIGVcbiAgICB8IFVQREFURSAoXyxlKSAtPlxuICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICB8IFNUT1AgbCB8IFNOQVBTSE9UIChfLGwpIHwgRElOIChfLCBsKSB8IERJTk9GRiBsIC0+XG4gICAgICAgTGlzdC5mb2xkX2xlZnQgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKSBhY2MgbFxuICAgIHwgUFJJTlQgKGwsIGwnKSAtPlxuICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKVxuICAgICAgICAgICgoTGlzdC5mb2xkX2xlZnQgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKSBhY2MgbCcpKVxuICAgICAgICAgICBsXG4gICAgfCBQTE9URU5UUllcbiAgICB8IENGTE9XTEFCRUwgXyAtPiBhY2NcbiAgICB8IENGTE9XTUlYIChfLCBwKSAtPlxuICAgICAgY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgKExvYy52IHApXG4gICAgfCBTUEVDSUVTX09GIChfLCBsLCBtKSAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKVxuICAgICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIChMb2MudiBtKSlcbiAgICAgICAgICAgIGxcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9wZXJ0dXJiYXRpb24gZiBhY2MgcGVydHVyYmF0aW9uID1cbiAgICBsZXQgKF8sYjFfb3B0LG1vZF9saXN0LGIyX29wdCkgPSBMb2MudiBwZXJ0dXJiYXRpb24gIGluXG4gICAgY291bnRlcl9mb2xkX2luX2JleHByX29wdCBmXG4gICAgICAoY291bnRlcl9mb2xkX2luX2JleHByX29wdCBmXG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChjb3VudGVyX2ZvbGRfaW5fbW9kIGYpXG4gICAgICAgICAgICAgIGFjYyBtb2RfbGlzdClcbiAgICAgICAgICBiMl9vcHQpXG4gICAgICBiMV9vcHRcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZCBmIGluaXQgID1cbiAgICBsZXQgbDEgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgciAtPiBjb3VudGVyX2ZvbGRfaW5fcnVsZSBmIGFjYyAoc25kIHIpKVxuICAgICAgICBpbml0IGFzdF9jb21waWwucnVsZXNcbiAgICBpblxuICAgIGxldCBsMiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChjb3VudGVyX2ZvbGRfaW5fdmFyaWFibGUgZilcbiAgICAgICAgICBsMSBhc3RfY29tcGlsLnZhcmlhYmxlc1xuICAgIGluXG4gICAgbGV0IGwzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9vYnNlcnZhYmxlIGYpXG4gICAgICAgICAgbDIgYXN0X2NvbXBpbC5vYnNlcnZhYmxlc1xuICAgIGluXG4gICAgbGV0IGw0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9pbml0IGYpXG4gICAgICAgICAgbDMgYXN0X2NvbXBpbC5pbml0XG4gICAgaW5cbiAgICBsZXQgbDUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoY291bnRlcl9mb2xkX2luX3BlcnR1cmJhdGlvbiBmKVxuICAgICAgICAgIGw0IGFzdF9jb21waWwucGVydHVyYmF0aW9uc1xuICAgIGluXG4gICAgbDVcbiAgaW5cbiAgKCogRmluZCBjb3VudGVycyB0aGF0IGhhdmUgQ0xURSB0ZXN0cywgYW5kIGJ1aWxkIGxpc3Q6IGFnZW50X25hbWUsIGNvdW50ZXJfbmFtZSwgc3VtX2JvdW5kc19yZWYgbGlzdC5cbiAgICogc3VtX2JvdW5kc19yZWYgaXMgdGhlbiBmaWxsZWQgd2hlbiByZWFkaW5nIHRoZSBzaWduYXR1cmUgYW5kIHVzZWQgdG8gc3BlY2lmeSBmb3IgaW52ZXJ0ZWQgY291bnRlciBpbml0IHZhbHVlIG9yIHRlc3QgdmFsdWUgYXMgW3N1bV9ib3VuZHNfcmVmIC0gdmFsdWVdICopXG4gIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHMgOlxuICAgIE1vZHMuU3RyaW5nU2V0LnQgTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgY291bnRlcl9mb2xkIChmdW4gbWFwIGFnZW50X25hbWUgY291bnRlciAtPlxuICAgICAgICBsZXQgY291bnRlcl9uYW1lID0gTG9jLnYgY291bnRlci5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgKCogRm9yYmlkIHByZWZpeCB0byBhdm9pZCBub25zZW5zZSBpbiBjb3VudGVyIGRlZmluaXRpb24gKilcbiAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2ludmVydGVkX2NvdW50ZXIgY291bnRlcl9uYW1lIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJjYW5ub3QgZW5kIGNvdW50ZXIgbmFtZSBieSBcXFwiXCJcbiAgICAgICAgICAgICAgICAgXiBTaWduYXR1cmUuaW52ZXJ0ZWRfY291bnRlcl9zdWZmaXggXiBcIlxcXCJcIixcbiAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyLmNvdW50ZXJfbmFtZSApKTtcbiAgICAgICAgKCogUmV0dXJuIGNvdW50ZXIgbmFtZSBhbG9uZyB3aXRoIG1hdGNoaW5nIGFnZW50X25hbWUgKilcbiAgICAgICAgbWF0Y2ggT3B0aW9uX3V0aWwubWFwIExvYy52IGNvdW50ZXIuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgfCBTb21lIChBc3QuQ0xURSBfKSAtPlxuICAgICAgICAgIGxldCBzaXRlcyA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBNb2RzLlN0cmluZ1NldC5lbXB0eSBhZ2VudF9uYW1lIG1hcCBpblxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBNb2RzLlN0cmluZ1NldC5tZW0gY291bnRlcl9uYW1lIHNpdGVzXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgbWFwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIGFnZW50X25hbWVcbiAgICAgICAgICAgICAgICAoTW9kcy5TdHJpbmdTZXQuYWRkIGNvdW50ZXJfbmFtZSBzaXRlcylcbiAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgfCBTb21lIChBc3QuQ0VRIF8pIHwgU29tZSAoQXN0LkNHVEUgXykgfCBTb21lIChBc3QuQ1ZBUiBfKSB8IE5vbmUgLT4gbWFwKSBNb2RzLlN0cmluZ01hcC5lbXB0eVxuICBpblxuICBsZXQgYWRkICh4LHkpIGRhdGEgbWFwID1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZFxuICAgICAgICB4XG4gICAgICAgIChNb2RzLlN0cmluZ01hcC5hZGQgeSBkYXRhXG4gICAgICAgICAgICAgIChNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgTW9kcy5TdHJpbmdNYXAuZW1wdHkgeCBtYXApKVxuICAgICAgICBtYXBcbiAgaW5cbiAgKCogQ3JlYXRlIG9wcG9zaXRlIGNvdW50ZXJzIHRoYXQgaGF2ZSB0aGUgc2FtZSB0ZXN0cyAqKVxuICBsZXQgKHNpZ25hdHVyZXMgOiBBc3QuYWdlbnRfc2lnIGxpc3QpLFxuICAgICAgKGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcCA6IEFzdC5jb252ZXJzaW9uX2luZm8gTW9kcy5TdHJpbmdNYXAudCBNb2RzLlN0cmluZ01hcC50KT1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoYWNjLG1hcCkgYWdlbnQgLT5cbiAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudDo6YWNjLCBtYXBcbiAgICAgICAgfCBQcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0LCBhZ2VudF9tb2QpIC0+XG4gICAgICAgICAgbGV0IGFnZW50X25hbWUgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgIE1vZHMuU3RyaW5nU2V0LnQgID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICBNb2RzLlN0cmluZ1NldC5lbXB0eSAgYWdlbnRfbmFtZSBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAobmV3X2NvdW50ZXJfc2l0ZXMgOiBBc3QuY291bnRlcl9zaWcgQXN0LnNpdGUgbGlzdCksXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGNvdW50ZXJfbmFtZSAoYWNjLG1hcCkgLT5cbiAgICAgICAgICAgICAgICAoKiBGaW5kIGNvdW50ZXIgdG8gaW52ZXJ0ICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfb3JpZyA6IEFzdC5jb3VudGVyX3NpZyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZpbmRfbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfc2lnX25hbWUgPSBjb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBjb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgICAgICAgIHNpdGVfbGlzdFxuICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgICAgICAgICAgaW5cblxuICAgICAgICAgICAgICAgICgqIE1ha2UgaW52ZXJ0ZWQgY291bnRlciBkZWNsYXJhdGlvbiAqKVxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZ19uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkID1cbiAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBuYW1lIC0+IGludmVydGVkX2NvdW50ZXJfbmFtZSBuYW1lKVxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF9jb3VudGVyX3NpZ19kZWZhdWx0LCBpbmZfYm91bmQsIHN1cF9ib3VuZCA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbWluLCBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbWF4XG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgbWluLCBfKSwgU29tZSAoU29tZSBtYXgsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1heCArIG1pbiAtIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19kZWZhdWx0LCBtaW4sIG1heFxuICAgICAgICAgICAgICAgICAgfCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSwgXyB8IF8sIChOb25lIHwgU29tZSAoTm9uZSwgXykpIC0+XG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ2Fubm90IHRha2UgdGhlIG9wcG9zaXRlIG9mIGFuIHVuYm91bmRlZCBjb3VudGVycyAgXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19uYW1lICkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF92YWx1ZSA9IEFzdC5CQVNJU19NSU5VU19JTlBVVCAoaW5mX2JvdW5kICsgc3VwX2JvdW5kKSBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2RlbHRhID0gQXN0LkJBU0lTX01JTlVTX0lOUFVUIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlIHggPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoTm9uZSxsb2MpIC0+IFNvbWUgKE5vbmUsbG9jKVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSxsb2MpIC0+IFNvbWUgKFNvbWUgKEFzdC5hcHBseV9pbnQgY29udmVydF92YWx1ZSBpKSwgbG9jKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlZl9taW4scmVmX21heCA9XG4gICAgICAgICAgICAgICAgICAgIEFzdC5yZW9yZGVyX2JvdW5kcyBjb252ZXJ0X3ZhbHVlIChjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbWluLGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19tYXgpIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX21pbiA9IHVwZGF0ZSByZWZfbWluIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX21heCA9IHVwZGF0ZSByZWZfbWF4IGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX2RlZmF1bHQgPVxuICAgICAgICAgICAgICAgICAgICBBc3QuYXBwbHlfaW50IGNvbnZlcnRfdmFsdWUgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX2RlZmF1bHQgaW5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF9pbmZvID1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmZyb21fc2lnX25hbWUgPSBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgY29udmVydF92YWx1ZSA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfZGVsdGEgO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX3Zpc2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgIEFzdC5Gcm9tX2NsdGVfZWxpbWluYXRpb24gY29udmVydF9pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoKiBXcml0ZSBpbiBzdW1fYm91bmRzX3JlZiB0aGUgc3VtIG9mIHRoZSBjb3VudGVyIGJvdW5kcyBhYm92ZSAqKVxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyID1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX25hbWU7XG4gICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW47XG4gICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19tYXg7XG4gICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIChBc3QuQ291bnRlciBjb3VudGVyKTo6YWNjLFxuICAgICAgICAgICAgICAgIGFkZFxuICAgICAgICAgICAgICAgICAgKGFnZW50X25hbWUsTG9jLnYgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX25hbWUpXG4gICAgICAgICAgICAgICAgICBjb252ZXJ0X2luZm8gbWFwKVxuICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudFxuICAgICAgICAgICAgICAoW10sbWFwKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0IEAgbmV3X2NvdW50ZXJfc2l0ZXMsIGFnZW50X21vZCkpOjphY2MsXG4gICAgICAgICAgIG1hcClcbiAgICAgIChbXSwgTW9kcy5TdHJpbmdNYXAuZW1wdHkpIChMaXN0LnJldiBhc3RfY29tcGlsLnNpZ25hdHVyZXMpXG4gIGluXG5cbiAgKCogSW4gcnVsZXMsIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgY291bnRlciB0ZXN0cyBhbmQgdGhlIGNvdW50ZXIgbW9kaWZpY2F0aW9ucyAqKVxuXG4gIGxldCByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IChtaXggOiBBc3QubWl4dHVyZSkgOiBBc3QubWl4dHVyZSA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50XG4gICAgICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgOiBzdHJpbmcgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOlxuICAgICAgICAgICAgICAgIEFzdC5jb252ZXJzaW9uX2luZm8gTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBhZ2VudF9uYW1lIGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiBBZGQgZGVsdGEgdG8gY291bnRlciBhcyBvcHBvc2l0ZSBkZWx0YXMgdG8gY291bnRlcl9kZWx0YSAqKVxuICAgICAgICAgICAgICBsZXQgKGFkZGVkX3NpdGVzLCBzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMpIDpcbiAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgKiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdF9tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHNpdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBjb252ZXJ0X2luZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEFzIHdlIGtub3cgdGhhdCB0aGlzIGNvdW50ZXIgdXNlcyBhIENMVEUgdGVzdCwgV2UgaW50cm9kdWNlIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBbY2x0ZV92YWx1ZV9vcl9ub25lXSBkaXNjcmltaW5hdGVzIHRoZSBjYXNlIHdoZXJlIHRoaXMgc2l0ZSBpbiB0aGlzIGV4cHJlc3Npb24gaGFzIGEgQ0xURSB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2x0ZV92YWx1ZV9vcl9ub25lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBMb2MudiB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DRVEgXyB8IENHVEUgXyB8IENWQVIgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0xURSB2YWx1ZSAtPiBTb21lIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjbHRlX3ZhbHVlX29yX25vbmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZXJlIGlzIGEgdGVzdCwgaXQgZG9lc24ndCBuZWVkIGludmVyc2lvbjogd2UgYWRkIGludmVydGVkIGNvdW50ZXIgd2l0aG91dCB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA9PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlIGNvdW50ZXIgdmFsdWUgaXMgY2hhbmdpbmcsIHdlIG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGludmVydGVkX2NvdW50ZXJfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVydGVkX2NvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuYXBwbHlfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X2luZm8uQXN0LmNvbnZlcnRfZGVsdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfZGVsdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVydGVkX2NvdW50ZXJfc2l0ZSA6OiBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRoZSB0ZXN0IGlzIENMVEUsIHdlIGludmVydCBpdCAqKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFNpdGUgd2l0aCBpbnZlcnRlZCBjb3VudGVyIHdpdGggQ0dURSB0ZXN0IGluc3RlYWQgb2YgQ0xURSB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdCBpbnZlcnRlZF9jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkNHVEUgKEFzdC5hcHBseV9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X2luZm8uQXN0LmNvbnZlcnRfdmFsdWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBMb2MuY29weV9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl90ZXN0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LmFwcGx5X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfaW5mby5Bc3QuY29udmVydF9kZWx0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfZGVsdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA9PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsIG5ld19zaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZSBjb3VudGVyIHZhbHVlIGlzIGNoYW5naW5nLCB3ZSBuZWVkIHRvIGFkZCBpdCB0byB0aGUgb3JpZ2luYWwgY291bnRlciB0b28gKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxfY291bnRlcl9zaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyIHsgY291bnRlciB3aXRoIGNvdW50ZXJfdGVzdCA9IE5vbmUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfY291bnRlcl9zaXRlIDo6IGFjYywgbmV3X3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpKVxuICAgICAgICAgICAgICAgICAgW10gc2l0ZV9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZXdfc2l0ZV9saXN0IDogQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCA9XG4gICAgICAgICAgICAgICAgc2l0ZV9saXN0X3dpdGhfb3Bwb3NpdGVfZGVsdGFzIEAgYWRkZWRfc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgQXN0LlByZXNlbnQgKGFnZW50X25hbWVfLCBuZXdfc2l0ZV9saXN0LCBhZ2VudF9tb2QpKVxuICAgICAgICAgIGFnZW50X2xpc3QpXG4gICAgICBtaXhcbiAgaW5cbiAgbGV0IGFkZF9pbnZlcnRlZF9jb3VudGVyX3RvX2luaXRfbWl4dHVyZSAobWl4IDogQXN0Lm1peHR1cmUpIDogQXN0Lm1peHR1cmUgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGFnZW50X2xpc3QgLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGFnZW50IC0+XG4gICAgICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudFxuICAgICAgICAgICAgfCBQcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0LCBhZ2VudF9tb2QpIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lIDogc3RyaW5nID0gTG9jLnYgYWdlbnRfbmFtZV8gaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOlxuICAgICAgICAgICAgICAgIEFzdC5jb252ZXJzaW9uX2luZm8gTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBhZ2VudF9uYW1lIGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcFxuICAgICAgICAgICAgICBpblxuKCpcbiAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgICAoc3RyaW5nICogc3RyaW5nICogaW50IHJlZikgbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gKGFnZW50X25hbWVfY291bnRlciwgXywgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRfbmFtZSA9IGFnZW50X25hbWVfY291bnRlcilcbiAgICAgICAgICAgICAgICAgIChmc3QgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzKVxuICAgICAgICAgICAgICBpbiopXG4gICAgICAgICAgICAgICgqIEFkZCBkZWx0YSB0byBjb3VudGVyIGFzIG9wcG9zaXRlIGRlbHRhcyB0byBjb3VudGVyX2RlbHRhICopXG4gICAgICAgICAgICAgIGxldCBhZGRlZF9zaXRlcyA6IEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjb3VudGVyIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUpIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgaW5mbyAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEFzIHdlIGtub3cgdGhhdCB0aGlzIGNvdW50ZXIgdXNlcyBhIENMVEUgdGVzdCwgV2UgaW50cm9kdWNlIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBzaG91bGQgaGF2ZSBDRVEgdGVzdCB2YWx1ZSBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuY291bnRlcl9uYW1lICkpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggTG9jLnYgdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNHVEUgXyB8IENMVEUgXyB8IENWQVIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgc2hvdWxkIGhhdmUgQ0VRIHRlc3QgdmFsdWUgaW4gaW5pdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgdGVzdCApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DRVEgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMb2MudiBjb3VudGVyLmNvdW50ZXJfZGVsdGEgPD4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBkZWx0YSBzaG91bGQgYmUgMCBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgdGVzdCApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3QgaW52ZXJ0ZWRfY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy5jb3B5X2Fubm90IHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DRVEgKEFzdC5hcHBseV9pbnQgaW5mby5Bc3QuY29udmVydF92YWx1ZSB2YWx1ZSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLkFzdC5jb3VudGVyX2RlbHRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwIHdpdGggYW5ub3QgYXMgdGVzdGVkIGFib3ZlICopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpKSkpXG4gICAgICAgICAgICAgICAgICBbXSBzaXRlX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5ld19zaXRlX2xpc3QgOiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBzaXRlX2xpc3QgQCBhZGRlZF9zaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZV8sIG5ld19zaXRlX2xpc3QsIGFnZW50X21vZCkpXG4gICAgICAgICAgYWdlbnRfbGlzdClcbiAgICAgIG1peFxuICBpblxuXG4gIGxldCBtYXBfZXhwciBleHByID1cbiAgICAgIEFsZ19leHByLm1hcF9vbl9taXh0dXJlXG4gICAgICAgIChmdW4geCAtPiBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAocmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCB4KSlcbiAgICAgICAgZXhwclxuICBpblxuICBsZXQgbWFwX2JleHByIGV4cHIgPVxuICAgICAgQWxnX2V4cHIubWFwX2Jvb2xfb25fbWl4dHVyZVxuICAgICAgICAoZnVuIHggLT4gQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgKHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgeCkpXG4gICAgICAgIGV4cHJcbiAgaW5cbiAgbGV0IG1hcF9ydWxlIHJ1bGUgPVxuICAgIGxldCByZXdyaXRlID1cbiAgICAgIG1hdGNoIHJ1bGUuQXN0LnJld3JpdGUgd2l0aFxuICAgICAgfCBFZGl0IGNvbnRlbnQgLT5cbiAgICAgICAgQXN0LkVkaXRcbiAgICAgICAgICB7IGNvbnRlbnQgd2l0aCBtaXggPSByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IGNvbnRlbnQubWl4IH1cbiAgICAgIHwgQXJyb3cgY29udGVudCAtPlxuICAgICAgICBBcnJvd1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgbGhzID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50LmxocztcbiAgICAgICAgICAgIHJocyA9IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgY29udGVudC5yaHM7XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IGtfZGVmID0gbWFwX2V4cHIgcnVsZS5rX2RlZiBpblxuICAgIGxldCBrX29wID0gbWFwX29wdCBtYXBfZXhwciBydWxlLmtfb3AgaW5cbiAgICBsZXQga191biA9IG1hcF9vcHQgKGZ1biAoYSxiKSAtPiBtYXBfZXhwciBhLCBtYXBfb3B0IG1hcF9leHByIGIpIHJ1bGUua191biBpblxuICAgIGxldCBrX29wX3VuID0gbWFwX29wdCAoZnVuIChhLGIpIC0+IG1hcF9leHByIGEsIG1hcF9vcHQgbWFwX2V4cHIgYikgcnVsZS5rX29wX3VuIGluXG4gICAgeyBydWxlIHdpdGggcmV3cml0ZSA7IGtfZGVmIDsga19vcCA7IGtfdW4gOyBrX29wX3VufVxuICBpblxuICBsZXQgcnVsZXMgOiAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSBsaXN0ID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gcnVsZV9kZWYgLT5cbiAgICAgICAgIGZzdCBydWxlX2RlZixcbiAgICAgICAgICBMb2MubWFwX2Fubm90IG1hcF9ydWxlIChzbmQgcnVsZV9kZWYpKVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwucnVsZXMpXG4gIGluXG5cbiAgbGV0IGluaXQgOiAoQXN0Lm1peHR1cmUsIEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC5pbml0X3N0YXRlbWVudCBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAocXVhbnRpdHlfYWxnX2V4cHIsIGluaXRfa2luZCkgLT5cbiAgICAgICAgKCBxdWFudGl0eV9hbGdfZXhwcixcbiAgICAgICAgICBtYXRjaCBpbml0X2tpbmQgd2l0aFxuICAgICAgICAgIHwgQXN0LklOSVRfVE9LIF8gLT4gaW5pdF9raW5kXG4gICAgICAgICAgfCBJTklUX01JWCBtaXhfIC0+XG4gICAgICAgICAgICBJTklUX01JWCAoTG9jLm1hcF9hbm5vdCBhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X21peHR1cmUgbWl4XykgKSlcbiAgICAgIGFzdF9jb21waWwuaW5pdFxuICBpblxuICBsZXQgdmFyaWFibGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAoYSwgYikgLT4gKGEsIG1hcF9leHByIGIpKVxuICAgICAgICAoTGlzdC5yZXYgYXN0X2NvbXBpbC52YXJpYWJsZXMpXG4gIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9IExpc3QucmV2X21hcCBtYXBfZXhwciAoTGlzdC5yZXYgYXN0X2NvbXBpbC5vYnNlcnZhYmxlcykgaW5cbiAgbGV0IG1hcF9wcmludCBhID1cbiAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBfIC0+IGFcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gQWxnX3BleHByIChtYXBfZXhwciBlKVxuICBpblxuICBsZXQgbWFwX21vZGlmIG1vZGlmID1cbiAgICAgIG1hdGNoIG1vZGlmIHdpdGhcbiAgICAgIHwgQXN0LkFQUExZIChhLHIpIC0+IEFzdC5BUFBMWSAobWFwX2V4cHIgYSxMb2MubWFwX2Fubm90IG1hcF9ydWxlIHIgKVxuICAgICAgfCBVUERBVEUgKGEsZSkgLT4gVVBEQVRFIChhLG1hcF9leHByIGUpXG4gICAgICB8IFNUT1AgbCAtPiBTVE9QIChMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICAgIHwgU05BUFNIT1QgKGIsbCkgLT4gU05BUFNIT1QgKGIsTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCkpXG4gICAgICB8IFBSSU5UIChsLGwnKSAtPlxuICAgICAgICAgIFBSSU5UKExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpLExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwnKSlcbiAgICAgIHwgUExPVEVOVFJZXG4gICAgICB8IENGTE9XTEFCRUwgXyAtPiBtb2RpZlxuICAgICAgfCBDRkxPV01JWCAoYixtaXh0dXJlKSAtPiBDRkxPV01JWChiLFxuICAgICAgICBMb2MubWFwX2Fubm90IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgbWl4dHVyZSlcbiAgICAgIHwgRElOIChhLCBsKSAtPiBESU4oYSwgTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCkpXG4gICAgICB8IERJTk9GRiBsIC0+IERJTk9GRihMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICAgIHwgU1BFQ0lFU19PRiAoYixsLG0pIC0+XG4gICAgICAgIFNQRUNJRVNfT0YoYixMaXN0LnJldl9tYXAgbWFwX3ByaW50IGwsTG9jLm1hcF9hbm5vdCByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IG0pXG4gIGluXG4gIGxldCBwZXJ0dXJiYXRpb25zID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gKChhLGIsYyxkKSwgZXh0KS0+IChhLG1hcF9vcHQgbWFwX2JleHByIGIsTGlzdC5yZXZfbWFwIG1hcF9tb2RpZiAoTGlzdC5yZXYgYyksbWFwX29wdCBtYXBfYmV4cHIgZCApLGV4dClcbiAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLnBlcnR1cmJhdGlvbnMpXG4gIGluXG4gIHthc3RfY29tcGlsIHdpdGggc2lnbmF0dXJlczsgcnVsZXM7IGluaXQ7IHZhcmlhYmxlczsgb2JzZXJ2YWJsZXM7IHBlcnR1cmJhdGlvbnN9XG5cbmxldCBjb21waWxfb2ZfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIH5zeW50YXhfdmVyc2lvbiB+dmFyX292ZXJ3cml0ZSBhc3RfY29tcGlsXG4gICAgPVxuICAoKiBUT0RPIHRlc3QgdGhpcyAqKVxuICAoKiBUcmFuc2xhdGUgQ0xURSB0ZXN0cyBpbiBhc3RfY29tcGlsIGludG8gQ0dURSB0ZXN0cyAqKVxuICBsZXQgYXN0X2NvbXBpbCA9IHRyYW5zbGF0ZV9jbHRlX2ludG9fY2d0ZSBhc3RfY29tcGlsIGluXG5cbiAgbGV0IGhhc19jb3VudGVycyA9IENvdW50ZXJzX2NvbXBpbGVyLmhhc19jb3VudGVycyBhc3RfY29tcGlsIGluXG4gIGxldCBhZ2VudF9zaWdfaXNfaW1wbGljaXQgPVxuICAgIGFzdF9jb21waWwuQXN0LnNpZ25hdHVyZXMgPSBbXSAmJiBhc3RfY29tcGlsLkFzdC50b2tlbnMgPSBbXVxuICBpblxuICAoKiBJbmZlciBhZ2VudCBzaWduYXR1cmVzIGlmIHRoZSBzaWduYXR1cmUgaXMgaW1wbGljaXQgKilcbiAgbGV0IGFzdF9jb21waWwgPVxuICAgIGlmIGFnZW50X3NpZ19pc19pbXBsaWNpdCAmJiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiaW1wbGljaXQgc2lnbmF0dXJlIGlzIGluY29tcGF0aWJsZSB3aXRoIGNvdW50ZXJzXCIsIExvYy5kdW1teSkpXG4gICAgZWxzZSBpZiBhZ2VudF9zaWdfaXNfaW1wbGljaXQgdGhlblxuICAgICAgQXN0LmluZmVyX2FnZW50X3NpZ25hdHVyZXMgYXN0X2NvbXBpbFxuICAgIGVsc2VcbiAgICAgIGFzdF9jb21waWxcbiAgaW5cbiAgKCogUmVtb3ZlIGNvdW50ZXIgZXF1YWxpdHkgdGVzdCB3aXRoIGEgdmFyaWFibGUgYnkgc3BsaXR0aW5nIGluIG9uZSBydWxlIHBlciB2YXJpYWJsZSB2YWx1ZSAqKVxuICBsZXQgYXN0X2NvbXBpbCA9XG4gICAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICAgIENvdW50ZXJzX2NvbXBpbGVyLnNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmdcbiAgICAgICAgfmRlYnVnX21vZGUgYXN0X2NvbXBpbFxuICAgIGVsc2VcbiAgICAgIGFzdF9jb21waWxcbiAgaW5cblxuICBsZXQgYWdlbnRzX3NpZyA6IFNpZ25hdHVyZS5zID0gY3JlYXRlX3NpZ3MgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyBpblxuICAoKiBTZXQgYW4gZW1wdHkgY29udGFjdCBtYXAgKilcbiAgbGV0IGNvbnRhY3RfbWFwIDogKE1vZHMuSW50U2V0LnQgKiBNb2RzLkludDJTZXQudCkgYXJyYXkgYXJyYXkgPVxuICAgIEFycmF5LmluaXQgKFNpZ25hdHVyZS5zaXplIGFnZW50c19zaWcpIChmdW4gaSAtPlxuICAgICAgICBBcnJheS5pbml0IChTaWduYXR1cmUuYXJpdHkgYWdlbnRzX3NpZyBpKSAoZnVuIHMgLT5cbiAgICAgICAgICAgICggVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgICAoZnVuIGEgayAtPiBNb2RzLkludFNldC5hZGQgayBhKVxuICAgICAgICAgICAgICAgIE1vZHMuSW50U2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZXNfbnVtYmVyIGkgcyBhZ2VudHNfc2lnKSxcbiAgICAgICAgICAgICAgTW9kcy5JbnQyU2V0LmVtcHR5ICkpKVxuICBpblxuICBsZXQgcnVsZV9uYW1lcywgZXh0cmFfdmFycywgY2xlYW5lZF9ydWxlcyA9XG4gICAgbGV0IGFjYyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAobmFtZV9hbmRfcHVyaWZ5X3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgfmNvbnRhY3RfbWFwKVxuICAgICAgICB7XG4gICAgICAgICAgcnVsZV9uYW1lcyA9IDAsIE1vZHMuU3RyaW5nU2V0LmVtcHR5O1xuICAgICAgICAgIGV4dHJhX3ZhcnMgPSBbXTtcbiAgICAgICAgICBjbGVhbmVkX3J1bGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYXN0X2NvbXBpbC5Bc3QucnVsZXNcbiAgICBpblxuICAgIHNuZCBhY2MucnVsZV9uYW1lcywgYWNjLmV4dHJhX3ZhcnMsIGFjYy5jbGVhbmVkX3J1bGVzXG4gIGluXG4gIGxldCBvdmVyd3JpdGVfdmFycyAodmFyX292ZXJ3cml0ZSA6IChzdHJpbmcgKiBOYnIudCkgbGlzdClcbiAgICAgICh2YXJzIDogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC52YXJpYWJsZV9kZWYgbGlzdCkgOlxuICAgICAgKHN0cmluZyAqIE5ici50KSBsaXN0ICogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC52YXJpYWJsZV9kZWYgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKG92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZywgYWNjX3ZhcnMpICgoKHgsIF8pLCBfKSBhcyB2YXIpIC0+XG4gICAgICAgIGxldCBtYXRjaHMsIG90aGVyX292ZXJ3cml0ZV92YXJzID1cbiAgICAgICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuICh4JywgXykgLT4geCA9IHgnKSBvdmVyd3JpdGVfdmFyc19yZW1haW5pbmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcHJlc2VudCA9XG4gICAgICAgICAgbWF0Y2ggbWF0Y2hzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IHZhciA6OiBhY2NfdmFyc1xuICAgICAgICAgIHwgWyAoeCwgdikgXSAtPiAoTG9jLmFubm90X3dpdGhfZHVtbXkgeCwgQWxnX2V4cHIuY29uc3QgdikgOjogYWNjX3ZhcnNcbiAgICAgICAgICB8ICh4LCBfKSA6OiBfIDo6IF8gLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJ2YXJpYWJsZSAnXCIgXiB4IF4gXCInIGlzIG92ZXJ3cml0dGVuIG1vcmUgdGhhbiBvbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgTG9jLmR1bW15ICkpXG4gICAgICAgIGluXG5cbiAgICAgICAgb3RoZXJfb3ZlcndyaXRlX3ZhcnMsIGFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcHJlc2VudClcbiAgICAgICh2YXJfb3ZlcndyaXRlLCBbXSkgdmFyc1xuICAgIHw+IGZ1biAodmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgcmV2X2FsZ192YXJzKSAtPlxuICAgIHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQsIExpc3QucmV2IHJldl9hbGdfdmFyc1xuICBpblxuICBsZXQgdmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFycyA9XG4gICAgb3ZlcndyaXRlX3ZhcnMgdmFyX292ZXJ3cml0ZSAoYXN0X2NvbXBpbC5Bc3QudmFyaWFibGVzIEAgZXh0cmFfdmFycylcbiAgaW5cbiAgbGV0IGFsZ192YXJzX2FycmF5ID1cbiAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgIChmdW4gKHgsIHYpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIEFsZ19leHByLmNvbnN0IHYpXG4gICAgICB2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkIGFsZ192YXJzX3dpdGhfcmV3cml0dGVuX3ZhcnNcbiAgICB8PiBBcnJheS5vZl9saXN0XG4gIGluXG4gIGxldCBhbGdfdmFyc19maW5kZXIgPVxuICAgIGFsZ192YXJzX2FycmF5IHw+IE5hbWVkRGVjbHMuY3JlYXRlIH5mb3JiaWRkZW46cnVsZV9uYW1lcyB8PiBmdW4gbmQgLT5cbiAgICBuZC5OYW1lZERlY2xzLmZpbmRlclxuICBpblxuICBsZXQgdG9rZW5fbmFtZXMgPVxuICAgIGFzdF9jb21waWwuQXN0LnRva2Vuc1xuICAgIHw+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChmdW4geCAtPiB4LCAoKSlcbiAgICB8PiBOYW1lZERlY2xzLmNyZWF0ZVxuICBpblxuICBsZXQgdG9rZW5zX2ZpbmRlciA9IHRva2VuX25hbWVzLk5hbWVkRGVjbHMuZmluZGVyIGluXG5cbiAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICBDb3VudGVyc19jb21waWxlci5hZGRfY291bnRlcl90b19jb250YWN0X21hcCBhZ2VudHNfc2lnXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgfmNvbnRhY3RfbWFwKTtcblxuICBsZXQgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnMsIHVwZGF0ZWRfYWxnX3ZhcnMgPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKHBlcnR1cmJhdGlvbl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlclxuICAgICAgICAgYWxnX3ZhcnNfZmluZGVyIGNvbnRhY3RfbWFwKVxuICAgICAgYXN0X2NvbXBpbC5Bc3QucGVydHVyYmF0aW9ucyBbXVxuICBpblxuICBsZXQgcGVydHVyYmF0aW9ucyA9XG4gICAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmNvdW50ZXJzX3BlcnR1cmJhdGlvbnMgYWdlbnRzX3NpZ1xuICAgICAgICBbIGFzdF9jb21waWwuQXN0LnNpZ25hdHVyZXMgXVxuICAgICAgQCBwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVyc1xuICAgIGVsc2VcbiAgICAgIHBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzXG4gIGluXG5cbiAgbGV0IHJ1bGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gKHJ1bGUgOiBydWxlX2ludGVyX3JlcCkgLT5cbiAgICAgICAgKCBydWxlLmxhYmVsX29wdCxcbiAgICAgICAgICAoIGFzc2VtYmxlX3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHJ1bGUgYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyXG4gICAgICAgICAgICAgIGFsZ192YXJzX2ZpbmRlcixcbiAgICAgICAgICAgIHJ1bGUucG9zICkgKSlcbiAgICAgIGNsZWFuZWRfcnVsZXNcbiAgaW5cblxuICBsZXQgdmFyaWFibGVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX3JpZ2h0aVxuICAgICAgKGZ1biBpIChsYWIsIGV4cHIpIGFjYyAtPlxuICAgICAgICAoIGxhYixcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5tYXhfYWxsb3dlZF92YXI6KHByZWQgaSlcbiAgICAgICAgICAgIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlciBhbGdfdmFyc19maW5kZXIgZXhwciApXG4gICAgICAgIDo6IGFjYylcbiAgICAgIGFsZ192YXJzX2FycmF5IFtdXG4gIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIGV4cHIgLT5cbiAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBhZ2VudHNfc2lnIHRva2Vuc19maW5kZXJcbiAgICAgICAgICBhbGdfdmFyc19maW5kZXIgZXhwcilcbiAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLm9ic2VydmFibGVzKVxuICBpblxuICBsZXQgaW5pdCA9XG4gICAgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgY29udGFjdF9tYXAgdG9rZW5zX2ZpbmRlclxuICAgICAgYWxnX3ZhcnNfZmluZGVyIGFzdF9jb21waWwuaW5pdFxuICBpblxuXG4gIHtcbiAgICBhZ2VudHNfc2lnO1xuICAgIGNvbnRhY3RfbWFwO1xuICAgIHRva2VuX25hbWVzO1xuICAgIGFsZ192YXJzX2ZpbmRlcjtcbiAgICB1cGRhdGVkX2FsZ192YXJzO1xuICAgIHJlc3VsdCA9XG4gICAgICB7XG4gICAgICAgIGZpbGVuYW1lcyA9IGFzdF9jb21waWwuZmlsZW5hbWVzO1xuICAgICAgICB2YXJpYWJsZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBvYnNlcnZhYmxlcztcbiAgICAgICAgaW5pdDtcbiAgICAgICAgcGVydHVyYmF0aW9ucztcbiAgICAgICAgdm9sdW1lcyA9IGFzdF9jb21waWwudm9sdW1lcztcbiAgICAgICAgdG9rZW5zID0gYXN0X2NvbXBpbC50b2tlbnM7XG4gICAgICAgIHNpZ25hdHVyZXMgPSBhc3RfY29tcGlsLnNpZ25hdHVyZXM7XG4gICAgICAgIGNvbmZpZ3VyYXRpb25zID0gYXN0X2NvbXBpbC5jb25maWd1cmF0aW9ucztcbiAgICAgIH07XG4gIH1cbiIsInR5cGUgdG9rZW4gPVxuICB8IEVPRlxuICB8IENPTU1BXG4gIHwgRE9UXG4gIHwgT1BfUEFSXG4gIHwgQ0xfUEFSXG4gIHwgT1BfQ1VSXG4gIHwgQ0xfQ1VSXG4gIHwgT1BfQlJBXG4gIHwgQ0xfQlJBXG4gIHwgQVRcbiAgfCBTRU1JQ09MT05cbiAgfCBQTFVTXG4gIHwgTUlOVVNcbiAgfCBNVUxUXG4gIHwgRElWXG4gIHwgTU9EXG4gIHwgTUFYXG4gIHwgTUlOXG4gIHwgU0lOVVNcbiAgfCBDT1NJTlVTXG4gIHwgVEFOXG4gIHwgUE9XXG4gIHwgQUJTXG4gIHwgU1FSVFxuICB8IEVYUE9ORU5UXG4gIHwgTE9HXG4gIHwgT1JcbiAgfCBBTkRcbiAgfCBOT1RcbiAgfCBUSEVOXG4gIHwgRUxTRVxuICB8IERJRkZcbiAgfCBFUVVBTFxuICB8IFNNQUxMRVJcbiAgfCBHUkVBVEVSXG4gIHwgVFJVRVxuICB8IEZBTFNFXG4gIHwgSU5GSU5JVFlcbiAgfCBTSEFSUFxuICB8IFVOREVSU0NPUkVcbiAgfCBQSVBFXG4gIHwgUkFSXG4gIHwgTFJBUlxuICB8IExBUlxuICB8IEVNQVhcbiAgfCBUTUFYXG4gIHwgQ1BVVElNRVxuICB8IFRJTUVcbiAgfCBFVkVOVFxuICB8IE5VTExfRVZFTlRcbiAgfCBDT0xPTlxuICB8IE5FV0xJTkVcbiAgfCBCQUNLU0xBU0hcbiAgfCBTSUdOQVRVUkVcbiAgfCBUT0tFTlxuICB8IElOSVRcbiAgfCBPQlNcbiAgfCBQTE9UXG4gIHwgUEVSVFxuICB8IENPTkZJR1xuICB8IEFQUExZXG4gIHwgREVMRVRFXG4gIHwgSU5UUk9cbiAgfCBTTkFQU0hPVFxuICB8IFNUT1BcbiAgfCBGTFVYXG4gIHwgVFJBQ0tcbiAgfCBBU1NJR05cbiAgfCBQUklOVEZcbiAgfCBQTE9URU5UUllcbiAgfCBTUEVDSUVTX09GXG4gIHwgRE9cbiAgfCBSRVBFQVRcbiAgfCBBTEFSTVxuICB8IFJVTlxuICB8IExFVFxuICB8IElOVCBvZiAoaW50KVxuICB8IEZMT0FUIG9mIChmbG9hdClcbiAgfCBJRCBvZiAoc3RyaW5nKVxuICB8IExBQkVMIG9mIChzdHJpbmcpXG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG4gIHwgU1BBQ0Ugb2YgKHN0cmluZylcbiAgfCBDT01NRU5UIG9mIChzdHJpbmcpXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgbGV0IGFkZF9wb3MgZSB4ID1cbiAgICAoeCxcbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGUpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiAgbGV0IGVuZF9wb3MgPSBQYXJzaW5nLnJoc19lbmRfcG9zXG4gIGxldCBzdGFydF9wb3MgPSBQYXJzaW5nLnJoc19zdGFydF9wb3NcblxuICBsZXQgaW50ZXJuYWxfbWVtb3J5ID0gcmVmIFtdXG4gIGxldCBhZGQgeCA9IGludGVybmFsX21lbW9yeSA6PSB4IDo6ICFpbnRlcm5hbF9tZW1vcnlcbiAgbGV0IG91dHB1dCAoKSA9XG4gICAgbGV0IG8gPSBMaXN0LnJldiAhaW50ZXJuYWxfbWVtb3J5IGluIGxldCAoKSA9IGludGVybmFsX21lbW9yeSA6PSBbXSBpbiBvXG4jIDEwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAgIDAgKCogRU9GICopO1xuICAyNTcgKCogQ09NTUEgKik7XG4gIDI1OCAoKiBET1QgKik7XG4gIDI1OSAoKiBPUF9QQVIgKik7XG4gIDI2MCAoKiBDTF9QQVIgKik7XG4gIDI2MSAoKiBPUF9DVVIgKik7XG4gIDI2MiAoKiBDTF9DVVIgKik7XG4gIDI2MyAoKiBPUF9CUkEgKik7XG4gIDI2NCAoKiBDTF9CUkEgKik7XG4gIDI2NSAoKiBBVCAqKTtcbiAgMjY2ICgqIFNFTUlDT0xPTiAqKTtcbiAgMjY3ICgqIFBMVVMgKik7XG4gIDI2OCAoKiBNSU5VUyAqKTtcbiAgMjY5ICgqIE1VTFQgKik7XG4gIDI3MCAoKiBESVYgKik7XG4gIDI3MSAoKiBNT0QgKik7XG4gIDI3MiAoKiBNQVggKik7XG4gIDI3MyAoKiBNSU4gKik7XG4gIDI3NCAoKiBTSU5VUyAqKTtcbiAgMjc1ICgqIENPU0lOVVMgKik7XG4gIDI3NiAoKiBUQU4gKik7XG4gIDI3NyAoKiBQT1cgKik7XG4gIDI3OCAoKiBBQlMgKik7XG4gIDI3OSAoKiBTUVJUICopO1xuICAyODAgKCogRVhQT05FTlQgKik7XG4gIDI4MSAoKiBMT0cgKik7XG4gIDI4MiAoKiBPUiAqKTtcbiAgMjgzICgqIEFORCAqKTtcbiAgMjg0ICgqIE5PVCAqKTtcbiAgMjg1ICgqIFRIRU4gKik7XG4gIDI4NiAoKiBFTFNFICopO1xuICAyODcgKCogRElGRiAqKTtcbiAgMjg4ICgqIEVRVUFMICopO1xuICAyODkgKCogU01BTExFUiAqKTtcbiAgMjkwICgqIEdSRUFURVIgKik7XG4gIDI5MSAoKiBUUlVFICopO1xuICAyOTIgKCogRkFMU0UgKik7XG4gIDI5MyAoKiBJTkZJTklUWSAqKTtcbiAgMjk0ICgqIFNIQVJQICopO1xuICAyOTUgKCogVU5ERVJTQ09SRSAqKTtcbiAgMjk2ICgqIFBJUEUgKik7XG4gIDI5NyAoKiBSQVIgKik7XG4gIDI5OCAoKiBMUkFSICopO1xuICAyOTkgKCogTEFSICopO1xuICAzMDAgKCogRU1BWCAqKTtcbiAgMzAxICgqIFRNQVggKik7XG4gIDMwMiAoKiBDUFVUSU1FICopO1xuICAzMDMgKCogVElNRSAqKTtcbiAgMzA0ICgqIEVWRU5UICopO1xuICAzMDUgKCogTlVMTF9FVkVOVCAqKTtcbiAgMzA2ICgqIENPTE9OICopO1xuICAzMDcgKCogTkVXTElORSAqKTtcbiAgMzA4ICgqIEJBQ0tTTEFTSCAqKTtcbiAgMzA5ICgqIFNJR05BVFVSRSAqKTtcbiAgMzEwICgqIFRPS0VOICopO1xuICAzMTEgKCogSU5JVCAqKTtcbiAgMzEyICgqIE9CUyAqKTtcbiAgMzEzICgqIFBMT1QgKik7XG4gIDMxNCAoKiBQRVJUICopO1xuICAzMTUgKCogQ09ORklHICopO1xuICAzMTYgKCogQVBQTFkgKik7XG4gIDMxNyAoKiBERUxFVEUgKik7XG4gIDMxOCAoKiBJTlRSTyAqKTtcbiAgMzE5ICgqIFNOQVBTSE9UICopO1xuICAzMjAgKCogU1RPUCAqKTtcbiAgMzIxICgqIEZMVVggKik7XG4gIDMyMiAoKiBUUkFDSyAqKTtcbiAgMzIzICgqIEFTU0lHTiAqKTtcbiAgMzI0ICgqIFBSSU5URiAqKTtcbiAgMzI1ICgqIFBMT1RFTlRSWSAqKTtcbiAgMzI2ICgqIFNQRUNJRVNfT0YgKik7XG4gIDMyNyAoKiBETyAqKTtcbiAgMzI4ICgqIFJFUEVBVCAqKTtcbiAgMzI5ICgqIEFMQVJNICopO1xuICAzMzAgKCogUlVOICopO1xuICAzMzEgKCogTEVUICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAzMzIgKCogSU5UICopO1xuICAzMzMgKCogRkxPQVQgKik7XG4gIDMzNCAoKiBJRCAqKTtcbiAgMzM1ICgqIExBQkVMICopO1xuICAzMzYgKCogU1RSSU5HICopO1xuICAzMzcgKCogU1BBQ0UgKik7XG4gIDMzOCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXFxuXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXFxuXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzNlxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzVcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXFxuXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXFxuXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXFxuXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDEwXFwwMDBcXDAwNlxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDdcXDAwMFxcMDExXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDBcXDI0NlxcMDAwXFxcblxcMDAwXFwwMDBcXDI0N1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMlxcMDAwXFwxMzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjRcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMDAwXFwyNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE4XFwwMDBcXDExOVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcblxcMDA3XFwwMDBcXDAwNlxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA3OVxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcblxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUzXFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMjM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMFxcMDAwXFwxMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTM4XFwwMDBcXDIyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwwMDBcXDAwMFxcMTY1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDE1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMVxcMDAwXFxcblxcMjI5XFwwMDBcXDIyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwwMDBcXDAwMFxcMDAwXFwxODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDAwMFxcMTcwXFwwMDBcXDExNVxcMDAwXFwxMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk2XFwwMDBcXDA5N1xcMDAwXFwwOThcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwwOTVcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMTIwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMjI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MVxcMDAwXFxcblxcMTYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMTM5XFwwMDBcXDEzN1xcMDAwXFxcblxcMTQxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MlxcMDAwXFwxODVcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwxOTVcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAwXFxcblxcMDkwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFxcblxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI0XFwwMDBcXDEyM1xcMDAwXFxcblxcMTIyXFwwMDBcXDEyN1xcMDAwXFwxMjlcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDBcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMTU0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNFxcMDAwXFxcblxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3OVxcMDAwXFwxNzZcXDAwMFxcMTc3XFwwMDBcXDAwMFxcMDAwXFwxOTlcXDAwMFxcMTk0XFwwMDBcXDA5M1xcMDAwXFxcblxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMTA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjIxXFwwMDBcXDIxN1xcMDAwXFwyMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzNcXDAwMFxcMDAwXFwwMDBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIwXFwwMDBcXDIxOFxcMDAwXFwxNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFxcblxcMTcxXFwwMDBcXDE3MlxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMFxcMDAwXFwwMDBcXDE2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFxcblxcMjA1XFwwMDBcXDIxNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDMwXFwwMDBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAwXFxcblxcMTQ3XFwwMDBcXDE0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMTE0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDE1XFwwMDBcXDAwMFxcMDAwXFwwMjlcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFxcblxcMDM1XFwwMDBcXDAzOFxcMDAwXFwwMzdcXDAwMFxcMDI1XFwwMDBcXDAyN1xcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcblxcMDE2XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDUxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDA0NVxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDA0NFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDEwXFwwMDBcXDAxM1xcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDEzMVxcMDAwXFwwOTNcXDAwMFxcMjQyXFwwMDFcXDI0M1xcMDAxXFxcblxcMDE1XFwwMDJcXDIzMFxcMDAxXFwyMzFcXDAwMVxcMDA4XFwwMDJcXDIwNVxcMDAxXFwyMzJcXDAwMVxcMjMzXFwwMDFcXDIzNFxcMDAxXFxcblxcMjM1XFwwMDFcXDAyMFxcMDAyXFwxNjJcXDAwMVxcMDk5XFwwMDFcXDEwMFxcMDAxXFwxNjNcXDAwMVxcMTc5XFwwMDFcXDAzOFxcMDAwXFxcblxcMTgxXFwwMDBcXDAzOVxcMDAwXFwwOTRcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwyMzZcXDAwMFxcMDk3XFwwMDBcXDA5OFxcMDAwXFxcblxcMDk5XFwwMDBcXDE4NlxcMDAwXFwxODdcXDAwMFxcMjIzXFwwMDBcXDEwMlxcMDAwXFwxMDNcXDAwMFxcMTA0XFwwMDBcXDA0MFxcMDAwXFxcblxcMTc3XFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMTQ5XFwwMDFcXDAzNlxcMDAxXFwxMjZcXDAwMFxcMDQzXFwwMDBcXDE5MlxcMDAwXFxcblxcMDE3XFwwMDFcXDE4OFxcMDAwXFwwOTZcXDAwMVxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMzJcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFxcblxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwOTJcXDAwMVxcMDkzXFwwMDFcXDExM1xcMDAwXFwxMzhcXDAwMVxcMTM5XFwwMDFcXDExNFxcMDAwXFxcblxcMDQ0XFwwMDBcXDA0NVxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDExNFxcMDAyXFxcblxcMDY1XFwyNTVcXDEyOVxcMjU1XFwxMzJcXDI1NVxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMThcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTExXFwwMDdcXDAwMFxcMDAwXFwwNDdcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMzZcXDI1NVxcMDE0XFwyNTVcXDE4M1xcMDAwXFxcblxcMDM5XFwwMDBcXDE5NlxcMjU1XFwwMDBcXDAwMFxcMDE4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwNzJcXDI1NVxcMTgzXFwwMDBcXDE0OFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMjU1XFxcblxcMTQ5XFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE3OFxcMjU1XFwwMzlcXDAwMVxcMTYwXFwwMDJcXDIwNFxcMDAwXFwxODNcXDAwMFxcMjIzXFwyNTVcXDIzOFxcMjU1XFxcblxcMDAwXFwwMDBcXDA2MVxcMDExXFwyNDFcXDI1NVxcMTk5XFwyNTVcXDExNVxcMDA5XFwwNjNcXDI1NVxcMTgzXFwwMDlcXDA1NVxcMDAwXFxcblxcMjA5XFwwMTJcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDYzXFwyNTVcXDIxN1xcMjU1XFwyMTFcXDAwMlxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDIxNlxcMjU1XFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDE0XFxcblxcMjUxXFwwMDlcXDA2M1xcMDEwXFwwNDZcXDAxMlxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwNDZcXDAxMlxcMTc0XFwyNTVcXDEzNVxcMDAxXFxcblxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDI1NVxcMDIzXFwwMTNcXDAwMFxcMDAwXFwxMTFcXDAwN1xcMDAwXFwwMDBcXDA5NVxcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFxcblxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwyNDlcXDAwMVxcMTA0XFwyNTVcXDE0NlxcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDEzM1xcMDAwXFxcblxcMDA0XFwwMDBcXDE2MFxcMDAyXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODRcXDI1NVxcMTgzXFwwMDBcXDEyNlxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMjU1XFwwNDdcXDI1NVxcMTExXFwwMTFcXDAwMFxcMDAwXFxcblxcMjE2XFwyNTVcXDA3MFxcMDEzXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDA0N1xcMjU1XFwwMDBcXDAwMFxcMDQ3XFwyNTVcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDEwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDA0M1xcMjU1XFxcblxcMTgzXFwwMDBcXDA3MFxcMDAxXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDIxN1xcMDAwXFxcblxcMjE2XFwwMDBcXDIwM1xcMjU1XFwxMTFcXDAwN1xcMjM1XFwwMDBcXDA3NlxcMjU1XFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwyMDVcXDAwMFxcMTgzXFwwMDBcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFxcblxcMTg3XFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFxcblxcMTcyXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDI1NVxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxMzFcXDAxMFxcMTk5XFwwMTBcXDAwMFxcMDAwXFwyMTBcXDAwMFxcMTA2XFwwMDlcXDE4M1xcMDAwXFxcblxcMTc0XFwwMDBcXDIxMlxcMjU1XFwxNzlcXDAwMFxcMDkzXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMTdcXDAwMVxcMDI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDExXFxcblxcMDM1XFwwMDFcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwNzBcXDAwMVxcMTgzXFwwMDBcXDA5M1xcMDE0XFxcblxcMDkzXFwwMTRcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMTRcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODdcXDAxNFxcMTg3XFwwMTRcXDA5M1xcMDE0XFwwOTZcXDAwM1xcMDAwXFwwMDBcXDE4N1xcMDE0XFxcblxcMDAwXFwwMDBcXDE3OFxcMjU1XFwxNzhcXDI1NVxcMDM5XFwwMDFcXDAzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDA5M1xcMDE0XFxcblxcMDQ3XFwyNTVcXDE2NFxcMDAyXFwwOTNcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDA0N1xcMDAxXFwwNzRcXDAwMVxcMDA3XFwwMDFcXDAwN1xcMDAxXFwxMDZcXDAwOVxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwNjFcXDI1NVxcMTA0XFwwMDFcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMTRcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMzdcXDAwM1xcMTE3XFwwMDFcXDE4M1xcMDAwXFwwNDZcXDAxMlxcMDcwXFwwMDFcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzM1xcMDAxXFwwMDFcXDAwMFxcMDczXFwwMDFcXDAwMFxcMDAwXFxcblxcMTU1XFwwMDFcXDE4M1xcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDExMVxcMDA3XFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDFcXDAwN1xcMDAxXFwxNzRcXDAwMFxcMjE4XFwyNTVcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODFcXDAwMVxcMTM2XFwwMDFcXDIwNVxcMDAxXFwwOTNcXDAxNFxcMDcwXFwwMTNcXDAzNVxcMDAxXFxcblxcMTgzXFwwMDBcXDA0NlxcMDEyXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDA3MFxcMDAwXFwyMjhcXDAwMVxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxNzBcXDAwMVxcMTgzXFwwMDBcXDI0N1xcMDAxXFxcblxcMDEzXFwwMDRcXDExMVxcMDA3XFwwOTNcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMjEyXFwyNTVcXDE2OVxcMDAxXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMjQ4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4N1xcMDE0XFwxMTlcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDAwNVxcMDAyXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODdcXDAxNFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDQ0XFwwMDFcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMjEyXFwyNTVcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMTJcXDAwMlxcMTgzXFwwMDBcXDAwN1xcMDAyXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDE2XFwwMDJcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMzRcXDAwMlxcMDE0XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMDE3XFwwMDJcXDAyM1xcMDAyXFwxNDNcXDI1NVxcMDI0XFwwMDJcXDAyNlxcMDAyXFwwNjhcXDAwMFxcMTgzXFwwMDBcXDE1MFxcMDAyXFxcblxcMTU5XFwwMDJcXDE1MVxcMDAyXFwyMzJcXDAwMFxcMTM5XFwwMDBcXDE5OFxcMDAyXFwxODNcXDAwMFxcMTYxXFwwMDJcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDAyXFwxNjZcXDAwMlxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMTcwXFwyNTVcXDAwMFxcMDAwXFwwOTdcXDAwMlxcMTY5XFwwMDJcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE2MVxcMjU1XFwxMDlcXDAwMlxcMTEwXFwwMDJcXDExMVxcMDAyXFwxNjhcXDI1NVxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDExN1xcMDAyXFwxMTZcXDAwM1xcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE3MFxcMjU1XFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDEyMFxcMDAyXFxcblxcMTkxXFwwMDJcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMjEzXFwwMDFcXDAwMFxcMDAwXFwxODNcXDAwMFxcMjAzXFwwMDJcXDE4M1xcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDEyMlxcMDA4XFwwMThcXDAwNlxcMTc0XFwwMDlcXDAxMVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAyXFwwNjhcXDAwMlxcXG5cXDA2OFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwNlxcXG5cXDE2MVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyM1xcMDAwXFwxMzJcXDAwMlxcMDExXFwwMTFcXDEwN1xcMjU1XFwwMTFcXDAxMVxcXG5cXDE0MFxcMDEyXFwxNDFcXDAwMlxcMTA3XFwyNTVcXDE0OVxcMDAxXFwwNzJcXDAwM1xcMTg4XFwwMDZcXDIwOFxcMDAyXFwwNTJcXDAwMVxcXG5cXDEyN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFwwMTFcXDAxMVxcXG5cXDAxMVxcMDExXFwyNDNcXDAwMVxcMDM5XFwwMDVcXDA5M1xcMDEyXFwyNDNcXDI1NVxcMTUxXFwwMDFcXDIxN1xcMDA0XFwwNDFcXDAwMFxcXG5cXDExMFxcMjU1XFwxMTdcXDAxM1xcMDAwXFwwMDBcXDE3NFxcMDA5XFwxNzlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcXG5cXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMDE1XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTBcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMVxcXG5cXDAwMFxcMDAwXFwyMjhcXDAwMlxcMjM1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDZcXDI1NVxcMDA2XFwwNjJcXDAwN1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjRcXDAxM1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMjU1XFwxMTBcXDI1NVxcXG5cXDE2MVxcMDExXFwwMDBcXDAwMFxcMjAzXFwwMDRcXDAwMFxcMDAwXFwyMzNcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDBcXDA0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDhcXDAwMlxcXG5cXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMTQwXFwwMTRcXDE0MFxcMDE0XFwxNDBcXDAxNFxcXG5cXDE0MFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFwxNDBcXDAxNFxcMDAwXFwwMDBcXDE0MFxcMDE0XFwxMzJcXDAwMlxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIyXFwwMDhcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMTIyXFwwMDhcXDAwMFxcMDAwXFwwMjNcXDAwOVxcXG5cXDAwMFxcMDAwXFwwOTZcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMTFcXDAxMVxcMDExXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDE3NFxcMDA5XFwwMDBcXDAwMFxcMTQxXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5OVxcMjU1XFwxMzJcXDAwMlxcMTQwXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDAxMVxcXG5cXDAzOFxcMDAwXFwwMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAyXFwwMDBcXDAwMFxcMTQwXFwwMTRcXDE0MFxcMDE0XFwwMzlcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDBcXDAxNFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNFxcMDE0XFwyMzRcXDAxNFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAxNFxcXG5cXDAwMFxcMDAwXFwyMDRcXDAwM1xcMDAwXFwwMDBcXDIzNFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAxNFxcMTEwXFwyNTVcXDEwOFxcMDA3XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzRcXDAwOVxcXG5cXDAwMFxcMDAwXFwyMjFcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDBcXDAxNFxcMjM2XFwwMDdcXDEyOVxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1MFxcMDAwXFwwOTNcXDAxMlxcMDAwXFwwMDBcXDAwMlxcMDAyXFwwNDFcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDJcXDAwMFxcMDAwXFwwODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTJcXDAwM1xcMTU1XFwwMDNcXDA1OVxcMDA0XFwxMzlcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDk5XFwyNTVcXDEzMlxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNzBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAxNFxcXG5cXDE3NFxcMDA5XFwwMDBcXDAwMFxcMTcyXFwwMDJcXDAwMFxcMDAwXFwyMDBcXDAwOFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNTNcXDAwMVxcMjIxXFwwMDJcXDAwMFxcMDAwXFwyNDJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAxNFxcXG5cXDIzM1xcMDEzXFwyNDVcXDAwMlxcMjUyXFwwMDJcXDAwMFxcMDAwXFwwOTNcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTVcXDAwM1xcMDA1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU0XFwwMDVcXDExM1xcMDA2XFwxNDBcXDAxNFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwOFxcMjMwXFwwMDhcXDAxOFxcMjU1XFwwOTlcXDI1NVxcXG5cXDAwMFxcMDAwXFwwNjVcXDAwNlxcMDAwXFwwMDBcXDAwNFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDVcXDIzNFxcMDE0XFwwMDBcXDAwMFxcXG5cXDE1M1xcMDAxXFwwMDVcXDAwM1xcMDAwXFwwMDBcXDI0MlxcMDAyXFwxMjJcXDAwOFxcMDAwXFwwMDBcXDIzNFxcMDE0XFwwMDBcXDAwMFxcXG5cXDIyN1xcMDA3XFwxOTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOFxcMDAxXFwxMzFcXDAwMVxcXG5cXDIyMVxcMDAyXFwxNjBcXDAwNlxcMDAwXFwwMDBcXDA5OVxcMjU1XFwxNDBcXDAxNFxcMTQwXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwyNTVcXDA5OVxcMjU1XFwwMDBcXDAwMFxcXG5cXDE1N1xcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NlxcMDA3XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjJcXDAwMVxcMDAwXFwwMDBcXDA5M1xcMDA2XFwwOTNcXDAwNlxcXG5cXDIyMVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDA4XFwwMDBcXDAwMFxcMjIxXFwwMDBcXDEzMVxcMDAxXFwwMDVcXDAwM1xcXG5cXDAwMFxcMDAwXFwwOTlcXDI1NVxcMTcwXFwwMDhcXDIzOFxcMDA1XFwwMjFcXDAwOFxcMDAwXFwwMDBcXDIzOVxcMDAyXFwyMzlcXDAwMlxcXG5cXDExOFxcMDAwXFwyMzlcXDAwMlxcMjM5XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEwXFwwMDJcXDAxMFxcMDAzXFwxNzhcXDAwMVxcXG5cXDAxMVxcMDAzXFwwMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNVxcMDAxXFwwNTlcXDAwM1xcMDEzXFwwMDNcXDAxMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyMlxcMDAxXFwwMDBcXDAwMFxcMDA1XFwwMDNcXDAwMFxcMDAwXFwwNzlcXDAwOFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDFcXDA5OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDI1NVxcMjQyXFwwMDBcXDAwMFxcMDAwXFwxOThcXDI1NVxcXG5cXDA2NVxcMDA2XFwxOTlcXDAwMlxcMTc4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcXG5cXDE5OVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5OVxcMDAyXFwxOTlcXDAwMlxcMTk0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzFcXDAwMVxcMjM1XFwwMDFcXDIzNVxcMDAxXFwwMjhcXDAwMlxcMDAwXFwwMDBcXDEzMlxcMDAyXFwxMjRcXDAwM1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAyXFwxOThcXDI1NVxcXG5cXDE1N1xcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwM1xcXG5cXDIzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwM1xcXG5cXDAxNVxcMDAzXFwyMzVcXDAwMVxcMDI2XFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5OVxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAzXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM1XFwwMDFcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzVcXDAwMVxcMDI4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDNcXDAwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAzXFwwMDBcXDAwMFxcMDI3XFwyNTRcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NlxcMjU0XFwwMDBcXDAwMFxcMDY2XFwyNTRcXDIwOFxcMjU1XFwwMjRcXDI1NFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYyXFwyNTRcXDEzOFxcMjU0XFwwNzdcXDI1NFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDEwN1xcMDAxXFwwNDVcXDI1NVxcMDQ4XFwwMDJcXFxuXFwwNTNcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwxMjNcXDI1NVxcMTMzXFwwMDNcXDAwMFxcMDAwXFwwMzBcXDAwM1xcMjUyXFwwMDNcXFxuXFwwNTNcXDI1NVxcMTQ5XFwyNTVcXDA4M1xcMDAzXFwxNDZcXDAwMlxcMTQ3XFwwMDJcXDAwMFxcMDAwXFwxNzlcXDAwM1xcMTg1XFwwMDNcXFxuXFwxMzZcXDAwMlxcMDAwXFwwMDBcXDE4NlxcMDAyXFwxMzRcXDI1NVxcMDM1XFwwMDNcXDIxNFxcMjU1XFwyNTJcXDI1NVxcMDQxXFwyNTVcXFxuXFwwMDBcXDAwMFxcMTI1XFwyNTVcXDIzOFxcMDAyXFwyMjBcXDI1NFxcMDAwXFwwMDBcXDExNVxcMjU1XFwxOTJcXDAwMlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDRcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSA0MTUzXG5sZXQgeXl0YWJsZSA9IFwiXFwwMTFcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMTdcXDAwMFxcMDE5XFwwMDBcXDAzMlxcMDAxXFwxNDVcXDAwMVxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMjJcXDAwMFxcXG5cXDEzM1xcMDAwXFwwNTlcXDAwMFxcMjMzXFwwMDBcXDIyNFxcMDAwXFwxMzdcXDAwMFxcMjE3XFwwMDFcXDIwOFxcMDAwXFwxMDBcXDAwMFxcXG5cXDEwMVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDIwMVxcMDAwXFwxNjlcXDAwMFxcMDU2XFwwMDBcXDEwNVxcMDAwXFwxMDZcXDAwMFxcXG5cXDI1MlxcMDAxXFwwMDFcXDAwMFxcMTA3XFwwMDBcXDEwOFxcMDAwXFwxMDlcXDAwMFxcMTEwXFwwMDBcXDExMVxcMDAwXFwxMTJcXDAwMFxcXG5cXDExNVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDExOFxcMDAwXFwxMTlcXDAwMFxcMDAxXFwwMDBcXDEyMlxcMDAwXFwwNDFcXDAwMlxcXG5cXDAwMVxcMDAwXFwwNjVcXDAwMVxcMTg3XFwwMDBcXDE5MlxcMDAxXFwyMDBcXDAwMFxcMTI4XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcXG5cXDAyNFxcMDAwXFwxNjhcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMzZcXDAwMFxcMTIxXFwwMDBcXDEzOFxcMDAwXFwxMzlcXDAwMFxcXG5cXDE0MFxcMDAwXFwxNDFcXDAwMVxcMTQyXFwwMDBcXDE0NFxcMDAwXFwwOTdcXDAwMVxcMTQ0XFwwMDFcXDE4OVxcMDAwXFwwOTFcXDAwMVxcXG5cXDAwNlxcMDAwXFwxNDdcXDAwMFxcMTQ4XFwwMDBcXDE0OVxcMDAwXFwxNTBcXDAwMFxcMTUxXFwwMDBcXDE1MlxcMDAwXFwxNTNcXDAwMFxcXG5cXDE1NFxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwxNThcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwwNThcXDAwMVxcXG5cXDE1OVxcMDAwXFwxNDFcXDAwMFxcMjA2XFwwMDFcXDA3OVxcMDAyXFwxNzRcXDAwMFxcMDE0XFwwMDBcXDAwMVxcMDAwXFwxMjBcXDAwMFxcXG5cXDA4MVxcMDAyXFwxNDVcXDAwMFxcMDQ1XFwwMDFcXDAxNFxcMDAwXFwwNDdcXDAwMVxcMDQ1XFwwMDJcXDE2MFxcMDAwXFwwNTZcXDAwMFxcXG5cXDA1MVxcMDAxXFwyNTNcXDAwMVxcMDAxXFwwMDBcXDA1N1xcMDAyXFwxNzFcXDAwMFxcMDMzXFwwMDFcXDAwMVxcMDAwXFwwNTZcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMjRcXDAwMFxcMDAxXFwwMDBcXDE3NlxcMDAwXFwxMjRcXDAwMVxcMTAwXFwwMDBcXDE5N1xcMDAwXFwwMDFcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjQ3XFwwMDFcXDAwN1xcMDAwXFwwNTBcXDAwMFxcMjA1XFwwMDBcXDIwNlxcMDAwXFwyMDdcXDAwMFxcXG5cXDA5OVxcMDAyXFwyMDlcXDAwMFxcMDQ0XFwwMDFcXDIxMFxcMDAwXFwwMzZcXDAwMFxcMDcwXFwwMDJcXDE0NFxcMDAwXFwyMThcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMDFcXDAwMFxcMjE4XFwwMDBcXDAxNVxcMDAwXFwyMDBcXDAwMVxcMDg2XFwwMDJcXDA5MVxcMDAxXFwwMjJcXDAwMlxcXG5cXDEwMFxcMDAwXFwyMzJcXDAwMFxcMDk4XFwwMDFcXDE0MlxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwyMzVcXDAwMFxcXG5cXDIzN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDE0M1xcMDAwXFwxNDZcXDAwMFxcMjM4XFwwMDBcXDIzOVxcMDAwXFwyNDBcXDAwMFxcXG5cXDI0MVxcMDAwXFwyNDJcXDAwMFxcMjQzXFwwMDBcXDI0NFxcMDAwXFwyNDVcXDAwMFxcMjQ2XFwwMDBcXDI0N1xcMDAwXFwyNTNcXDAwMFxcXG5cXDI1NFxcMDAwXFwyNTVcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDExM1xcMDAxXFwyMjJcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwNzFcXDAwMlxcMDA4XFwwMDFcXDAwOVxcMDAxXFwwMjRcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAwN1xcMDAwXFwwMTJcXDAwMVxcMjUwXFwwMDBcXDAwN1xcMDAwXFwwMjFcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDUwXFwwMDFcXDAwMVxcMDAwXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDA1MFxcMDAwXFwwMzFcXDAwMlxcXG5cXDE2MVxcMDAwXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDEyNFxcMDAwXFwwMjVcXDAwMVxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDU0XFwwMDFcXDE3MFxcMDAwXFwxMjVcXDAwMFxcMjI4XFwwMDFcXDEzN1xcMDAxXFwyMjhcXDAwMVxcXG5cXDE3NlxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDA5N1xcMDAxXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDIwMFxcMDAwXFwwMjRcXDAwMFxcMDI2XFwwMDJcXDIwMVxcMDAwXFwwMjdcXDAwMlxcMDQzXFwwMDFcXDE3NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDE3NlxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA3N1xcMDAxXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDA3OFxcMDAxXFwwMDFcXDAwMFxcXG5cXDA1NVxcMDAxXFwxNTZcXDAwMVxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwNzJcXDAwMlxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNzZcXDAwMlxcXG5cXDE3OFxcMDAwXFwyMTNcXDAwMVxcMTc5XFwwMDBcXDE1NVxcMDAxXFwwMDFcXDAwMFxcMjI5XFwwMDFcXDA2MVxcMDAxXFwyMjlcXDAwMVxcXG5cXDA2MlxcMDAxXFwxNzJcXDAwMFxcMDY0XFwwMDFcXDAzNlxcMDAwXFwyMjVcXDAwMFxcMDA3XFwwMDBcXDE3MlxcMDAxXFwwMjVcXDAwMFxcXG5cXDE2MFxcMDAxXFwxNjhcXDAwMVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwNzVcXDAwMVxcMDI0XFwwMDBcXDAxNFxcMDAxXFwxNzNcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDlcXDAwMFxcMjAyXFwwMDBcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDA4M1xcMDAxXFwwMjNcXDAwMFxcMDkwXFwwMDFcXDAwMVxcMDAwXFwxODJcXDAwMFxcMDc5XFwwMDFcXDA5NFxcMDAxXFwyMDFcXDAwMFxcXG5cXDE2OVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDAxXFwwMDBcXDE2OVxcMDAwXFwxODZcXDAwMVxcXG5cXDEwM1xcMDAxXFwwOThcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDdcXDAwMVxcMDM2XFwwMDBcXDIwMVxcMDAxXFwwMDFcXDAwMFxcXG5cXDExMFxcMDAxXFwwMDFcXDAwMFxcMTExXFwwMDFcXDExMlxcMDAxXFwwMDFcXDAwMFxcMTE0XFwwMDFcXDE4N1xcMDAwXFwwMDFcXDAwMFxcXG5cXDIwMFxcMDAwXFwxMTdcXDAwMVxcMDAxXFwwMDBcXDExOFxcMDAxXFwxODdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNjlcXDAwMFxcXG5cXDE2OVxcMDAwXFwxMDBcXDAwMFxcMTIyXFwwMDFcXDE2OFxcMDAwXFwxMjBcXDAwMVxcMTIxXFwwMDFcXDE4MFxcMDAwXFwyMjJcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMzBcXDAwMlxcMTYwXFwwMDFcXDE5MVxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI1XFwwMDFcXDA0NlxcMDAwXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDE2MVxcMDAxXFwwMjZcXDAwMFxcXG5cXDAyN1xcMDAwXFwwMTVcXDAwMVxcMDU1XFwwMDJcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTY4XFwwMDBcXDEzMlxcMDAxXFwxMzNcXDAwMVxcXG5cXDE3NFxcMDAwXFwwOTBcXDAwMVxcMDAxXFwwMDBcXDIwMVxcMDAwXFwxNjlcXDAwMFxcMTQyXFwwMDFcXDE3NFxcMDAwXFwwMThcXDAwMlxcXG5cXDE0M1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE0N1xcMDAxXFwxNjlcXDAwMFxcMjI4XFwwMDFcXDE1MFxcMDAxXFwxNTFcXDAwMVxcXG5cXDE1MlxcMDAxXFwyMjhcXDAwMVxcMjE4XFwwMDBcXDE1NFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5OFxcMDAwXFwxNTdcXDAwMVxcXG5cXDAwMVxcMDAwXFwyMjlcXDAwMFxcMTg3XFwwMDBcXDE4OFxcMDAxXFwyMDBcXDAwMFxcMDAxXFwwMDBcXDE3NFxcMDAwXFwxNzRcXDAwMFxcXG5cXDE3NFxcMDAwXFwxNjhcXDAwMFxcMDAxXFwwMDBcXDIxNFxcMDAxXFwwMDFcXDAwMFxcMjE1XFwwMDFcXDE0NFxcMDAwXFwxOTVcXDAwMFxcXG5cXDE2NlxcMDAxXFwxNjhcXDAwMFxcMTQ0XFwwMDBcXDAwMVxcMDAwXFwxNjlcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNDRcXDAwMFxcXG5cXDE0NFxcMDAwXFwyMzRcXDAwMFxcMDM4XFwwMDJcXDE0MlxcMDAwXFwwMzlcXDAwMlxcMjI5XFwwMDFcXDE3N1xcMDAxXFwxNDJcXDAwMFxcXG5cXDE3OFxcMDAxXFwyMjlcXDAwMVxcMTkxXFwwMDBcXDE2MVxcMDAxXFwxNDJcXDAwMFxcMTQyXFwwMDBcXDIxOFxcMDAwXFwxODVcXDAwMVxcXG5cXDE5MVxcMDAwXFwwNjNcXDAwMlxcMTg3XFwwMDFcXDA2NFxcMDAyXFwxNzRcXDAwMFxcMTg5XFwwMDFcXDAwMVxcMDAwXFwxOTBcXDAwMVxcXG5cXDA1NlxcMDAyXFwwMDFcXDAwMFxcMTk0XFwwMDFcXDE5NVxcMDAxXFwwOTBcXDAwMVxcMTk4XFwwMDFcXDI1MlxcMDAwXFwxMDBcXDAwMFxcXG5cXDIwMlxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwwMTNcXDAwMVxcXG5cXDAwMVxcMDAwXFwyMjZcXDAwMFxcMjA5XFwwMDFcXDIxMFxcMDAxXFwyMTFcXDAwMVxcMjMwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjE2XFwwMDFcXDE3NlxcMDAwXFwxNzhcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMDFcXDAwMFxcMjE5XFwwMDFcXDAwMVxcMDAwXFwwMjRcXDAwMVxcMjIxXFwwMDFcXDE0NFxcMDAwXFwyMjBcXDAwMVxcXG5cXDAwMVxcMDAwXFwyNTFcXDAwMFxcMDE5XFwwMDJcXDI0NFxcMDAxXFwwMDFcXDAwMFxcMjQ1XFwwMDFcXDI0NlxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjUwXFwwMDFcXDE0MlxcMDAwXFwyNTFcXDAwMVxcMjA0XFwwMDFcXDE5MVxcMDAwXFwxODVcXDAwMFxcXG5cXDI1NFxcMDAxXFwxOTRcXDAwMFxcMjU1XFwwMDFcXDA1M1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMlxcMDAyXFwwMDNcXDAwMlxcXG5cXDAwNFxcMDAyXFwwMDVcXDAwMlxcMDUyXFwwMDFcXDAxNlxcMDAxXFwwMDZcXDAwMlxcMDY1XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcXG5cXDAxMVxcMDAyXFwwMDdcXDAwMFxcMjExXFwwMDBcXDIxM1xcMDAwXFwyMTVcXDAwMFxcMDM2XFwwMDJcXDA1N1xcMDAxXFwwMTJcXDAwMlxcXG5cXDAxM1xcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjNcXDAwMVxcMDM3XFwwMDJcXDA4MVxcMDAwXFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwNzZcXDAwMVxcMDIxXFwwMDJcXDA2NlxcMDAyXFwwMDFcXDAwMFxcMDk1XFwwMDFcXDAyM1xcMDAyXFwwMzhcXDAwMVxcXG5cXDEwMVxcMDAxXFwwMzlcXDAwMVxcMDAxXFwwMDBcXDA5MFxcMDAyXFwwMDFcXDAwMFxcMDMyXFwwMDJcXDAwMVxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA5MVxcMDAyXFwwNDJcXDAwMlxcMDUzXFwwMDBcXDA0NFxcMDAyXFwxNzhcXDAwMVxcXG5cXDA0NlxcMDAyXFwwNDdcXDAwMlxcMDAxXFwwMDBcXDAyNFxcMDAwXFwwODdcXDAwMlxcMTA0XFwwMDFcXDA1MFxcMDAyXFwwNTFcXDAwMlxcXG5cXDAwMVxcMDAwXFwxMDVcXDAwMVxcMDUyXFwwMDJcXDA1M1xcMDAyXFwwNTRcXDAwMlxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwMDFcXDAwMFxcXG5cXDIwNFxcMDAxXFwwNThcXDAwMlxcMDU5XFwwMDJcXDA2MFxcMDAyXFwxMDlcXDAwMVxcMDYxXFwwMDJcXDA2MlxcMDAyXFwwMDFcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAxXFwwMDBcXDIzNlxcMDAxXFwwNTRcXDAwMFxcMjM3XFwwMDFcXDA2OVxcMDAyXFwxNzhcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMDAxXFwwMDBcXDA3N1xcMDAyXFwwNzhcXDAwMlxcXG5cXDEzNFxcMDAxXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMzVcXDAwMVxcMDAxXFwwMDBcXDA4MlxcMDAyXFwwODNcXDAwMlxcXG5cXDA4NFxcMDAyXFwwODVcXDAwMlxcMjA0XFwwMDFcXDAwMVxcMDAwXFwyMjJcXDAwMVxcMDg4XFwwMDJcXDAyOFxcMDAwXFwwMjlcXDAwMFxcXG5cXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMDg5XFwwMDJcXDEzNlxcMDAxXFwyMjNcXDAwMVxcXG5cXDIyNFxcMDAxXFwyMzhcXDAwMVxcMjM5XFwwMDFcXDEzNVxcMDAxXFwwOTJcXDAwMlxcMDkzXFwwMDJcXDAwMVxcMDAwXFwwNTNcXDAwMFxcXG5cXDA5NlxcMDAyXFwwOTdcXDAwMlxcMDIzXFwwMDBcXDAwMVxcMDAwXFwwMzVcXDAwMFxcMDk4XFwwMDJcXDAwMVxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzN1xcMDAwXFwxMDBcXDAwMlxcMDIzXFwwMDBcXDEwMlxcMDAyXFwyMjVcXDAwMVxcMjI2XFwwMDFcXDIyN1xcMDAxXFwwNDJcXDAwMVxcXG5cXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjI4XFwwMDFcXDE0NlxcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcXG5cXDE2NFxcMDAwXFwxNjVcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDA1NFxcMDAwXFwyNDBcXDAwMVxcXG5cXDE1M1xcMDAxXFwyNDFcXDAwMVxcMTU4XFwwMDFcXDEyOVxcMDAxXFwwNThcXDAwMVxcMDg1XFwwMDFcXDA4N1xcMDAxXFwwNDdcXDAwMFxcXG5cXDA0N1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA0N1xcMDAwXFwwMDFcXDAwMFxcMTU5XFwwMDFcXDEwMlxcMDAxXFwwNDdcXDAwMFxcXG5cXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDA1NlxcMDAwXFwwNTdcXDAwMFxcMjI5XFwwMDFcXDEwM1xcMDAwXFwwMDFcXDAwMFxcMDU4XFwwMDBcXDE2NFxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTE1XFwwMDFcXDExNlxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE2NVxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxMTlcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTY3XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwN1xcMDAxXFwyMDhcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxODBcXDAwMVxcXG5cXDAwMVxcMDAwXFwxODFcXDAwMVxcMTI4XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTMxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMjRcXDAwMFxcMDQ3XFwwMDBcXDAwMVxcMDAwXFwxMzZcXDAwMFxcXG5cXDAwMVxcMDAwXFwxNDhcXDAwMVxcMTgyXFwwMDFcXDAwMVxcMDAwXFwyMjdcXDAwMFxcMjI4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMjNcXDAwMVxcXG5cXDIyNFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwN1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTNcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTZcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTk5XFwwMDFcXDI0OFxcMDAwXFwwMDFcXDAwMFxcMjEyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDE0OFxcMDAxXFwwMzVcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMThcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMzBcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAyXFwwMDFcXDAwMFxcMDE2XFwwMDJcXDAwMVxcMDAwXFwwNzhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAzNlxcMDAwXFwwMTdcXDAwMlxcMDAxXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDA3XFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNDhcXDAwMFxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwMTRcXDAwMlxcXG5cXDAyNFxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwOFxcMDAwXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDAyNVxcMDAyXFwwMjhcXDAwMlxcXG5cXDAwMVxcMDAwXFwwMjlcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNDhcXDAwMVxcMjQ5XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcXG5cXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTA5XFwwMDBcXDAzM1xcMDAyXFwwMzVcXDAwMlxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcXG5cXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDIwMFxcMDAwXFwxMzBcXDAwMVxcMDM0XFwwMDJcXDIwMVxcMDAwXFwwNDhcXDAwMlxcXG5cXDA0M1xcMDAyXFwwNDlcXDAwMlxcMTY0XFwwMDBcXDE2NVxcMDAwXFwwNjdcXDAwMlxcMTAzXFwwMDBcXDEwM1xcMDAwXFwwNjhcXDAwMlxcXG5cXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcXG5cXDA3M1xcMDAyXFwwNzRcXDAwMlxcMDc1XFwwMDJcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcXG5cXDE2OFxcMDAwXFwxNjlcXDAwMFxcMDgwXFwwMDJcXDA5NFxcMDAyXFwwOTVcXDAwMlxcMTAzXFwwMDBcXDA0MFxcMDAyXFwyMzdcXDAwMVxcXG5cXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMzZcXDAwMFxcXG5cXDEwMVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEzNlxcMDAwXFwwMjRcXDAwMFxcMjAyXFwwMDBcXDEzNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDEzNlxcMDAwXFwxMzZcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDA1N1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcXG5cXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTEwXFwwMDBcXDIzOFxcMDAxXFwyMzlcXDAwMVxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcXG5cXDEwN1xcMDAwXFwxMDdcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDEzNlxcMDAwXFwxMzZcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMTNcXDAwMFxcXG5cXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcXG5cXDA2MVxcMDAwXFwxNDVcXDAwMFxcMjAzXFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDAwMVxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMVxcMDAwXFwyNDBcXDAwMVxcMDAxXFwwMDBcXDI0MVxcMDAxXFwwMTdcXDAwMFxcMTA3XFwwMDBcXDAwMVxcMDAwXFwxMzZcXDAwMFxcXG5cXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAzNlxcMDAwXFwwODhcXDAwMVxcMjQ5XFwwMDBcXDA3NFxcMDAxXFwxMjNcXDAwMFxcMDM3XFwwMDFcXDA0MlxcMDAxXFwxODNcXDAwMVxcXG5cXDIwNFxcMDAwXFwxODRcXDAwMVxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxOTlcXDAwMFxcMTk3XFwwMDFcXDEwN1xcMDAwXFwxNjRcXDAwMFxcXG5cXDE2NVxcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcXG5cXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTExXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcXG5cXDEwOFxcMDAwXFwxMDhcXDAwMFxcMDAxXFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzRcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA4XFwwMDFcXDE0MFxcMDAxXFwxNzNcXDAwMVxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMjdcXDAwMFxcXG5cXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwxMjNcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzhcXDAwMVxcMjM5XFwwMDFcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwyNDBcXDAwMVxcXG5cXDAwMFxcMDAwXFwyNDFcXDAwMVxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcXG5cXDEzNFxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcXG5cXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwODlcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcXG5cXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMVxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDE0OVxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEyNlxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMVxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxNTlcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcXG5cXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDhcXDAwMFxcMTY2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDIwNlxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcXG5cXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNTlcXDAwMFxcMTU5XFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAwXFwxNTlcXDAwMFxcXG5cXDE1OVxcMDAwXFwxNTlcXDAwMFxcMTU5XFwwMDBcXDE1OVxcMDAwXFwxNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcXG5cXDIxNlxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMFxcXG5cXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcMjE2XFwwMDBcXDIxNlxcMDAwXFwyMTZcXDAwMFxcXG5cXDIxNlxcMDAwXFwyMTZcXDAwMFxcMjE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE2XFwwMDBcXDIxNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODVcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcXG5cXDE2NlxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcXG5cXDE2NlxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcXG5cXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODVcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcXG5cXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwNjFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDE4NFxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAzMVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcXG5cXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwxMDZcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDIxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcXG5cXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcXG5cXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcXG5cXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcXG5cXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcXG5cXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyMDdcXDAwMFxcMDk5XFwwMDFcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXFxuXFwwNTFcXDAwMFxcMDE0XFwwMDBcXDE0MlxcMDAwXFwxMzRcXDAwMFxcMDU1XFwwMDBcXDE5M1xcMDAxXFwxMjJcXDAwMFxcMDE5XFwwMDBcXFxuXFwwMTlcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAxXFwwMjRcXDAwMFxcMDI1XFwwMDBcXFxuXFwyMTVcXDAwMVxcMDAwXFwwMDBcXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXFxuXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDEzXFwwMDJcXFxuXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXFxuXFwwMDJcXDAwMVxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA0MFxcMDAxXFwwNTZcXDAwMFxcMDU3XFwwMDBcXFxuXFwwNThcXDAwMFxcMDk0XFwwMDFcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDA0XFwwMDFcXFxuXFwwODJcXDAwMFxcMDEwXFwwMDFcXDE3N1xcMDAxXFwwNjBcXDAwMlxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcMDUyXFwwMDFcXFxuXFwwNjJcXDAwMlxcMDEwXFwwMDFcXDIyNFxcMDAwXFwwMTRcXDAwMVxcMjI2XFwwMDBcXDAxN1xcMDAyXFwwOTZcXDAwMFxcMDc4XFwwMDFcXFxuXFwyMzBcXDAwMFxcMjE2XFwwMDFcXDAwMFxcMDAxXFwwMzRcXDAwMlxcMTAyXFwwMDBcXDIwOVxcMDAwXFwwMDRcXDAwMVxcMjM1XFwwMDBcXFxuXFwwMjlcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwxMDZcXDAwMFxcMDY0XFwwMDFcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAyXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDIwOVxcMDAxXFwwNTFcXDAwMVxcMDA0XFwwMDFcXDExOVxcMDAwXFwxMjBcXDAwMFxcMTIxXFwwMDBcXFxuXFwwOTdcXDAwMlxcMTIzXFwwMDBcXDA4MFxcMDAxXFwxMjVcXDAwMFxcMDc4XFwwMDFcXDA0OVxcMDAyXFwwMDBcXDAwMFxcMTMxXFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMVxcMTY5XFwwMDFcXDA2OFxcMDAyXFwwOTRcXDAwMVxcMjU0XFwwMDFcXFxuXFwxNDBcXDAwMFxcMTQwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMTQ1XFwwMDBcXFxuXFwxNDdcXDAwMFxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAwXFwxNDlcXDAwMFxcMTUwXFwwMDBcXFxuXFwxNTFcXDAwMFxcMTUyXFwwMDBcXDE1M1xcMDAwXFwxNTRcXDAwMFxcMTU1XFwwMDBcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMTYxXFwwMDBcXFxuXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NFxcMDAwXFwxNjVcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXFxuXFwwNDZcXDAwMVxcMDAwXFwwMDFcXDE3MlxcMDAwXFwxNzNcXDAwMFxcMDEyXFwwMDFcXDE3NVxcMDAwXFwxNzZcXDAwMFxcMDAyXFwwMDFcXFxuXFwwNzhcXDAwMVxcMTc5XFwwMDBcXDE4MFxcMDAwXFwwNTFcXDAwMVxcMTgyXFwwMDBcXDA3OFxcMDAxXFwwNTFcXDAwMVxcMDAwXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDIyOVxcMDAwXFwwNzhcXDAwMVxcMTkwXFwwMDBcXDE5MVxcMDAwXFwwNzhcXDAwMVxcMDA2XFwwMDJcXFxuXFwwMTVcXDAwMVxcMTk1XFwwMDBcXDE5NlxcMDAwXFwwMDBcXDAwMVxcMTk4XFwwMDBcXDAwMFxcMDAxXFwwNTFcXDAwMVxcMjAxXFwwMDBcXFxuXFwyMDJcXDAwMFxcMjAzXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDA5XFwwMDFcXDAzOFxcMDAxXFwwOTJcXDAwMVxcMDM4XFwwMDFcXFxuXFwyMDdcXDAwMFxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMDBcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwyMTZcXDAwMFxcMjE3XFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAyXFwwMDFcXDA3NlxcMDAxXFwwMDNcXDAwMVxcMDc4XFwwMDFcXDIyM1xcMDAwXFwwMDVcXDAwMVxcMjI1XFwwMDBcXFxuXFwwMDdcXDAwMVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwwMDBcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMDNcXDAwMVxcMDM4XFwwMDFcXFxuXFwyMzRcXDAwMFxcMTExXFwwMDFcXDA1MVxcMDAxXFwwMzhcXDAwMVxcMDc2XFwwMDFcXDIzOVxcMDAwXFwyNDBcXDAwMFxcMDU0XFwwMDJcXFxuXFwwMDBcXDAwMVxcMTg5XFwwMDFcXDAwMlxcMDAxXFwxMTBcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwyNDhcXDAwMFxcMDc4XFwwMDFcXFxuXFwyNTBcXDAwMFxcMDI3XFwwMDFcXDI1MlxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1MVxcMDAxXFwxNDBcXDAwMVxcMDQwXFwwMDFcXFxuXFwwMDBcXDAwMVxcMTMzXFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA3XFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDI2XFwwMDFcXFxuXFwwODFcXDAwMVxcMDgyXFwwMDFcXDA1MFxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXFxuXFwwMThcXDAwMVxcMDAwXFwwMDBcXDAyM1xcMDAxXFwwNzhcXDAwMVxcMDc4XFwwMDFcXDA1MFxcMDAxXFwwMjRcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwNFxcMDAxXFwwMTBcXDAwMVxcMTU0XFwwMDFcXFxuXFwwMzRcXDAwMVxcMDc4XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDQwXFwwMDFcXDA3OFxcMDAxXFwxNzBcXDAwMVxcMDAyXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDA0XFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDA0XFwwMDFcXDA0N1xcMDAxXFwwMDRcXDAwMVxcMDEwXFwwMDFcXFxuXFwwMDRcXDAwMVxcMDUxXFwwMDFcXDAxMFxcMDAxXFwwNTNcXDAwMVxcMDEwXFwwMDFcXDAwNFxcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMDYxXFwwMDFcXDA2MVxcMDAxXFwwMTBcXDAwMVxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDM0XFwwMDFcXFxuXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNzhcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwODhcXDAwMVxcMDg5XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDk0XFwwMDFcXDAwNFxcMDAxXFwwNzJcXDAwMVxcMDcyXFwwMDFcXDA5NVxcMDAxXFwwMTBcXDAwMVxcMDMyXFwwMDFcXFxuXFwwOThcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAxXFwxMDFcXDAwMVxcMDgwXFwwMDFcXDAzOFxcMDAxXFwxMDRcXDAwMVxcMTA1XFwwMDFcXFxuXFwxMDZcXDAwMVxcMDM4XFwwMDFcXDExMFxcMDAxXFwxMDlcXDAwMVxcMDEyXFwwMDFcXDA3MlxcMDAxXFwwODBcXDAwMVxcMTEzXFwwMDFcXFxuXFwwNzJcXDAwMVxcMDM0XFwwMDFcXDA3MlxcMDAxXFwxNThcXDAwMVxcMDcyXFwwMDFcXDA4MFxcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAxXFwwMDVcXDAwMVxcMDAyXFwwMDFcXDAwN1xcMDAxXFwwMDBcXDAwMVxcMDczXFwwMDFcXFxuXFwxMzBcXDAwMVxcMDgwXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMTM0XFwwMDFcXDEzNVxcMDAxXFwxMzZcXDAwMVxcMDA5XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDQzXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwxNDRcXDAwMVxcMDA0XFwwMDFcXFxuXFwxNDZcXDAwMVxcMDc4XFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwxNTRcXDAwMVxcMTUzXFwwMDFcXFxuXFwwMTBcXDAwMVxcMDAwXFwwMDFcXDE1NlxcMDAxXFwwMDJcXDAwMVxcMDcyXFwwMDFcXDE1OVxcMDAxXFwwNzJcXDAwMVxcMTYxXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDE2NFxcMDAxXFwxNjVcXDAwMVxcMTY5XFwwMDFcXDE2N1xcMDAxXFwwMjFcXDAwMVxcMTcxXFwwMDFcXFxuXFwxNzFcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDc2XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMDQzXFwwMDFcXFxuXFwwNzhcXDAwMVxcMTM1XFwwMDBcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDEzOVxcMDAwXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDE5MVxcMDAxXFwxODlcXDAwMVxcMTkzXFwwMDFcXFxuXFwwMjlcXDAwMVxcMDc2XFwwMDFcXDE5NlxcMDAxXFwwNzhcXDAwMVxcMDcxXFwwMDFcXDE5OVxcMDAxXFwwNzJcXDAwMVxcMTk4XFwwMDFcXFxuXFwwNzhcXDAwMVxcMTU5XFwwMDBcXDI1MVxcMDAxXFwyMDVcXDAwMVxcMDc1XFwwMDFcXDIwN1xcMDAxXFwyMDhcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDIxMlxcMDAxXFwwNzJcXDAwMVxcMjE0XFwwMDFcXDIxNVxcMDAxXFwwNzJcXDAwMVxcMTA5XFwwMDBcXFxuXFwyMThcXDAwMVxcMTExXFwwMDBcXDIyMFxcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDIyM1xcMDAxXFwyMjRcXDAwMVxcMjI1XFwwMDFcXFxuXFwyMjZcXDAwMVxcMjI3XFwwMDFcXDAxMFxcMDAxXFwxODVcXDAwMFxcMjMwXFwwMDFcXDA3NlxcMDAxXFwyMzJcXDAwMVxcMjMzXFwwMDFcXFxuXFwyMzRcXDAwMVxcMDUxXFwwMDFcXDEyOFxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDAwNlxcMDAxXFwwMDRcXDAwMVxcMjQxXFwwMDFcXFxuXFwyNDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDJcXDAwMVxcMDQwXFwwMDFcXDAxNFxcMDAxXFwwMzdcXDAwMVxcMjA1XFwwMDBcXFxuXFwyMDZcXDAwMFxcMDc4XFwwMDFcXDI1MlxcMDAxXFwwNDRcXDAwMlxcMDMyXFwwMDFcXDA4MFxcMDAxXFwwMDBcXDAwMlxcMjEzXFwwMDBcXFxuXFwwNzhcXDAwMVxcMjE1XFwwMDBcXDAzOFxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDFcXDAwN1xcMDAyXFwwMDJcXDAwMVxcMDgxXFwwMDFcXFxuXFwwODJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMTRcXDAwMVxcMDE0XFwwMDJcXDAwNFxcMDAxXFwwMTZcXDAwMlxcMDE3XFwwMDJcXFxuXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDY5XFwwMDJcXDAwNVxcMDAxXFwwMjRcXDAwMlxcMDI1XFwwMDJcXFxuXFwwMTBcXDAwMVxcMDAxXFwwMDFcXDAyOFxcMDAyXFwwMjlcXDAwMlxcMDMwXFwwMDJcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXFxuXFwwMzRcXDAwMlxcMDM1XFwwMDJcXDAzNlxcMDAyXFwwMzdcXDAwMlxcMDAyXFwwMDFcXDAzOVxcMDAyXFwwNDBcXDAwMlxcMDE0XFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFwwNDhcXDAwMlxcMDQ5XFwwMDJcXFxuXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwMlxcMDAxXFwwNTZcXDAwMlxcMDU3XFwwMDJcXFxuXFwwMTBcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjEwXFwwMDBcXDA3NlxcMDAxXFwwNjRcXDAwMlxcMDY1XFwwMDJcXFxuXFwwNjZcXDAwMlxcMDY3XFwwMDJcXDA2OFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDA3MVxcMDAyXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA3OVxcMDAyXFwwNzJcXDAwMVxcMDExXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwMTBcXDAwMVxcMDg2XFwwMDJcXDA4N1xcMDAyXFwwNzJcXDAwMVxcMDc4XFwwMDFcXFxuXFwwOTBcXDAwMlxcMDkxXFwwMDJcXDAwNlxcMDAxXFwwNDBcXDAwMVxcMDc1XFwwMDFcXDA5NVxcMDAyXFwwODBcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDk5XFwwMDJcXDAxNFxcMDAxXFwxMDFcXDAwMlxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzOFxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwNzhcXDAwMVxcMDc2XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDc4XFwwMDFcXDAzNFxcMDAxXFwwODFcXDAwMVxcMDA0XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDAwMVxcMDAxXFwwMjhcXDAwMVxcMDYwXFwwMDFcXFxuXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXFxuXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDA3NFxcMDAxXFwwNzhcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDRcXDAwMVxcMDA3XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDU1XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAzMFxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwwMTVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAwNFxcMDAxXFwwMjFcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMDdcXDAwMVxcMDUwXFwwMDFcXDA4MFxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDA4M1xcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwNTBcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwwNzZcXDAwMVxcMDAwXFwwMDBcXFxuXFwwNzhcXDAwMVxcMTAzXFwwMDFcXDAwNlxcMDAxXFwwNTBcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDExXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXFxuXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDc1XFwwMDFcXDAwMFxcMDAxXFwwMDRcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDc4XFwwMDFcXFxuXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAwNFxcMDAxXFwwMDNcXDAwMVxcMDEwXFwwMDFcXDAwNlxcMDAxXFwwMTJcXDAwMVxcMDc4XFwwMDFcXFxuXFwxNTBcXDAwMVxcMTUxXFwwMDFcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDAxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDAzXFwwMDFcXDAwNVxcMDAxXFwwMzhcXDAwMVxcMDI4XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDA0XFwwMDFcXDA0MFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAxNFxcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAyOFxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXDI1NFxcMDAwXFwyNTVcXDAwMFxcMDE0XFwwMDFcXFxuXFwwMzJcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMzJcXDAwMVxcMDMyXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDMyXFwwMDFcXDA3MlxcMDAxXFwwNzhcXDAwMVxcMjEwXFwwMDFcXDIxMVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwMjFcXDAwMVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNzhcXDAwMVxcMDUyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXFxuXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXFxuXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA3NFxcMDAxXFwwNzVcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwN1xcMDAxXFwwMDNcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDhcXDAwMVxcMDA0XFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDc2XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDA3XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDA3OFxcMDAxXFwwNzZcXDAwMVxcMDA2XFwwMDFcXDA1MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDZcXDAwMVxcMDc4XFwwMDFcXDAwMVxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDA1MFxcMDAxXFwwMDBcXDAwMFxcMDA2XFwwMDFcXFxuXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDgwXFwwMDFcXDA0M1xcMDAxXFwwNzVcXDAwMVxcMDE0XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAzMlxcMDAxXFwwNzJcXDAwMVxcMDAzXFwwMDFcXDAzNFxcMDAxXFwwMDJcXDAwMVxcMDM4XFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDA2XFwwMDFcXDA3MlxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMzJcXDAwMVxcMDA2XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwNzhcXDAwMVxcMDA4XFwwMDFcXDA1MFxcMDAxXFwwMDhcXDAwMVxcMDcyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDIyXFwwMDFcXDE1OFxcMDAwXFwwMDZcXDAwMVxcMDQxXFwwMDBcXDIxMVxcMDAwXFwwMDJcXDAwMVxcMTUwXFwwMDFcXFxuXFwxMThcXDAwMFxcMTUxXFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMTE2XFwwMDBcXDE2NlxcMDAxXFwwNzVcXDAwMVxcMDExXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwOFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMTQyXFwwMDFcXFxuXFwwMTRcXDAwMVxcMDAyXFwwMDFcXDA0MFxcMDAxXFwwOTRcXDAwMVxcMTQxXFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDQ0XFwwMDBcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcMDMyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwwNzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwyNTVcXDI1NVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXFxuXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXFxuXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXFxuXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXFxuXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXFxuXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXFxuXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXFxuXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXFxuXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXFxuXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXFxuXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXFxuXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMTBcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXFxuXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXFxuXFwwNTlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXFxuXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXFxuXFwwNzVcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3MVxcMDAxXFwyNTVcXDI1NVxcMDEwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDYwXFwwMDFcXFxuXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXFxuXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAyOVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXFxuXFwwNTlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDExXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXFxuXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDc1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXFxuXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXFxuXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXFxuXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXFxuXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXFxuXFwwNTlcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzVcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwwMzRcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDUxXFwwMDFcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgxXFwwMDFcXFxuXFwwODJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXFxuXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXFxuXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDc4XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXFxuXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXFxuXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXFxuXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwMDNcXDAwMVxcMDczXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXFxuXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXFxuXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXFxuXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBFT0ZcXDAwMFxcXG4gIENPTU1BXFwwMDBcXFxuICBET1RcXDAwMFxcXG4gIE9QX1BBUlxcMDAwXFxcbiAgQ0xfUEFSXFwwMDBcXFxuICBPUF9DVVJcXDAwMFxcXG4gIENMX0NVUlxcMDAwXFxcbiAgT1BfQlJBXFwwMDBcXFxuICBDTF9CUkFcXDAwMFxcXG4gIEFUXFwwMDBcXFxuICBTRU1JQ09MT05cXDAwMFxcXG4gIFBMVVNcXDAwMFxcXG4gIE1JTlVTXFwwMDBcXFxuICBNVUxUXFwwMDBcXFxuICBESVZcXDAwMFxcXG4gIE1PRFxcMDAwXFxcbiAgTUFYXFwwMDBcXFxuICBNSU5cXDAwMFxcXG4gIFNJTlVTXFwwMDBcXFxuICBDT1NJTlVTXFwwMDBcXFxuICBUQU5cXDAwMFxcXG4gIFBPV1xcMDAwXFxcbiAgQUJTXFwwMDBcXFxuICBTUVJUXFwwMDBcXFxuICBFWFBPTkVOVFxcMDAwXFxcbiAgTE9HXFwwMDBcXFxuICBPUlxcMDAwXFxcbiAgQU5EXFwwMDBcXFxuICBOT1RcXDAwMFxcXG4gIFRIRU5cXDAwMFxcXG4gIEVMU0VcXDAwMFxcXG4gIERJRkZcXDAwMFxcXG4gIEVRVUFMXFwwMDBcXFxuICBTTUFMTEVSXFwwMDBcXFxuICBHUkVBVEVSXFwwMDBcXFxuICBUUlVFXFwwMDBcXFxuICBGQUxTRVxcMDAwXFxcbiAgSU5GSU5JVFlcXDAwMFxcXG4gIFNIQVJQXFwwMDBcXFxuICBVTkRFUlNDT1JFXFwwMDBcXFxuICBQSVBFXFwwMDBcXFxuICBSQVJcXDAwMFxcXG4gIExSQVJcXDAwMFxcXG4gIExBUlxcMDAwXFxcbiAgRU1BWFxcMDAwXFxcbiAgVE1BWFxcMDAwXFxcbiAgQ1BVVElNRVxcMDAwXFxcbiAgVElNRVxcMDAwXFxcbiAgRVZFTlRcXDAwMFxcXG4gIE5VTExfRVZFTlRcXDAwMFxcXG4gIENPTE9OXFwwMDBcXFxuICBORVdMSU5FXFwwMDBcXFxuICBCQUNLU0xBU0hcXDAwMFxcXG4gIFNJR05BVFVSRVxcMDAwXFxcbiAgVE9LRU5cXDAwMFxcXG4gIElOSVRcXDAwMFxcXG4gIE9CU1xcMDAwXFxcbiAgUExPVFxcMDAwXFxcbiAgUEVSVFxcMDAwXFxcbiAgQ09ORklHXFwwMDBcXFxuICBBUFBMWVxcMDAwXFxcbiAgREVMRVRFXFwwMDBcXFxuICBJTlRST1xcMDAwXFxcbiAgU05BUFNIT1RcXDAwMFxcXG4gIFNUT1BcXDAwMFxcXG4gIEZMVVhcXDAwMFxcXG4gIFRSQUNLXFwwMDBcXFxuICBBU1NJR05cXDAwMFxcXG4gIFBSSU5URlxcMDAwXFxcbiAgUExPVEVOVFJZXFwwMDBcXFxuICBTUEVDSUVTX09GXFwwMDBcXFxuICBET1xcMDAwXFxcbiAgUkVQRUFUXFwwMDBcXFxuICBBTEFSTVxcMDAwXFxcbiAgUlVOXFwwMDBcXFxuICBMRVRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBJTlRcXDAwMFxcXG4gIEZMT0FUXFwwMDBcXFxuICBJRFxcMDAwXFxcbiAgTEFCRUxcXDAwMFxcXG4gIFNUUklOR1xcMDAwXFxcbiAgU1BBQ0VcXDAwMFxcXG4gIENPTU1FTlRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBbXSApXG4jIDE2NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXCJcXG5cIjo6XzIgKVxuIyAxNjY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIF8xOjpfMiApXG4jIDE2NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMTo6XzIgKVxuIyAxNjgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBOYnIuRiBpbmZpbml0eSApXG4jIDE2ODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBmbG9hdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIE5ici5GIF8xIClcbiMgMTY5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBOYnIuSSBfMSApXG4jIDE3MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX0ZSRUUgKVxuIyAxNzA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgKExLYXBwYS5MTktfVkFMVUUgKF8xLCgpKSkgKVxuIyAxNzEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX1NPTUUgKVxuIyAxNzE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKExLYXBwYS5MTktfVFlQRSAoKF8xLHJoc19wb3MgMSksKF81LHJoc19wb3MgNSkpKSApXG4jIDE3MjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX0FOWSApXG4jIDE3MzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIHN0YXRlXCIpKSApXG4jIDE3NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAxNzUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMyApXG4jIDE3NjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgNzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF81IClcbiMgMTc3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIE5vbmUgKVxuIyAxNzc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgTm9uZSApXG4jIDE3ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IGludCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChTb21lIChfMywgcmhzX3BvcyAzKSkgKVxuIyAxNzkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgKVxuIyAxODAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgOTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAoIGFkZF9wb3MgMSAoU29tZSBfMSkgKVxuIyAxODA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIE5vbmUgKVxuIyAxODE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbXzFdIClcbiMgMTgyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMyApXG4jIDE4MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzUgKVxuIyAxODQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBOb25lIClcbiMgMTg0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChfMywgcmhzX3BvcyAzKSApXG4jIDE4NTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIClcbiMgMTg2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzIsIF8zKSApXG4jIDE4NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9saW5rKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgbGlua2luZyBzdGF0ZSBvciBtaXNzaW5nICddJ1wiLHJoc19wb3MgMikpIClcbiMgMTg4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2xpbmspKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZXMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSwgXzIpIClcbiMgMTg4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2ludGVybmFsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBpbnRlcm5hbCBzdGF0ZSBvciBtaXNzaW5nICd9J1wiLHJoc19wb3MgMykpIClcbiMgMTg5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2ludGVybmFsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF81LCByaHNfcG9zIDUpIClcbiMgMTkwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKC0gXzcsIHJoc19wb3MgNykgKVxuIyAxOTE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKC0gXzUsIHJoc19wb3MgNSkgKVxuIyAxOTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DRVEgXzMscmhzX3BvcyAzKSApXG4jIDE5MzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DR1RFIF81LHJoc19wb3MgNSkgKVxuIyAxOTQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ0xURSBfNSxyaHNfcG9zIDUpIClcbiMgMTk1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNWQVIgXzMscmhzX3BvcyAzKSApXG4jIDE5NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl9tb2RpZikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoTm9uZSwgXzEpIClcbiMgMTk2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoU29tZSBfMSwgTG9jLmFubm90X3dpdGhfZHVtbXkgMCkgKVxuIyAxOTc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl9tb2RpZikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChTb21lIF8xLF81KSApXG4jIDE5ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogaW50KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzEwID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggU29tZSAoU29tZSAoXzMpLHJoc19wb3MgMyksbWF0Y2ggXzcgd2l0aCAoYSxsb2MpIC0+IFNvbWUgKFNvbWUgKGEpLGxvYykgKVxuIyAyMDAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBpbnQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggU29tZSAoU29tZSAoXzMpLHJoc19wb3MgMyksTm9uZSApXG4jIDIwMTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzggaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjAyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzggaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjA0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIwNTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIwNzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2l0ZV9jb3VudGVyX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAoY291bnRlcl9zaWdfbWluLGNvdW50ZXJfc2lnX21heCkgPSBfNSBpblxuICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWU9KF8xLHJoc19wb3MgMSk7XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluO1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heDtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0PVxuICAgICAgICAgICAgICAgIChtYXRjaCBjb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXyktPiAwXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSxfKSAtPiBpICk7XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZT1Bc3QuRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICAgICAgICB9IClcbiMgMjA5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIxMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjExOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF84IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIxMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMTQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9IF81IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gKVxuIyAyMTYzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2l0ZV9jb3VudGVyKSBpblxuICAgIE9iai5yZXByKFxuIyAyMTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoY291bnRlcl90ZXN0LGNvdW50ZXJfZGVsdGEpID0gXzUgaW5cbiAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LmNvdW50ZXJfdGVzdDsgQXN0LmNvdW50ZXJfZGVsdGEgfSApXG4jIDIxNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIxODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBbXSApXG4jIDIxOTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgKVxuIyAyMTk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2UpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICggXzEgOjogXzIgKVxuIyAyMjA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3NpdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzQgKVxuIyAyMjE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIFtdIClcbiMgMjIyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2Vfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDEgKFwiTWFsZm9ybWVkIHNpdGUgZXhwcmVzc2lvblwiKSkpIClcbiMgMjIyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2Vfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9zaWcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2Vfc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMiApXG4jIDIyMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3NpdGVfc2lnKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzQgKVxuIyAyMjQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggQXN0Lk5vTW9kLHN0YXJ0X3BvcyAxLF8xIClcbiMgMjI1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5DcmVhdGUsZW5kX3BvcyAyLF8zIClcbiMgMjI2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuRXJhc2UsZW5kX3BvcyAyLF8zIClcbiMgMjI2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICggKEFzdC5BYnNlbnQgKHJoc19wb3MgMSksZW5kX3BvcyAxLF8yKSApXG4jIDIyNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJmYWNlKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IG1vZGlmLHBlbmQsYW4gPSBfNyBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoXzEscmhzX3BvcyAxKSwgXzUsIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIyODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMTAgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2UpIGluXG4gICAgbGV0IF8xMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IG1vZGlmLHBlbmQsYW4gPSBfMTEgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKF81LHJoc19wb3MgNSksIF85LCBtb2RpZikscGVuZCxhbikgKVxuIyAyMzAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMjMxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCAoQXN0LkFic2VudCAocmhzX3BvcyAxKSxlbmRfcG9zIDEsXzIpIClcbiMgMjMxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJmYWNlX3NpZykgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IG1vZGlmLHBlbmQsYW4gPSBfNyBpblxuICAgICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfNSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjMzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMTAgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2Vfc2lnKSBpblxuICAgIGxldCBfMTEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IG1vZGlmLHBlbmQsYW4gPSBfMTEgaW5cbiAgICAgICAgKEFzdC5QcmVzZW50ICgoXzUscmhzX3BvcyA1KSwgXzksIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIzNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl5fMV5cIidcIikpKSApXG4jIDIzNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWdlbnQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4oIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgbWF0Y2ggXzQgd2l0aFxuICB8ICh5Ojp6LHBlbmQscCkgLT4gKCh4Ojp5KTo6eixwZW5kLHApXG4gIHwgKFtdLF8sXykgLT5cbiAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgKGFkZF9wb3MgNCAoXCJhc3NlcnRpb24gZmFpbHVyZSBpbiBwYXR0ZXJuIHBhcnNpbmdcIikpKSApXG4jIDIzNjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FnZW50KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuKCBsZXQgKHgsXyxfKSA9IF8xIGluIGxldCAoeSxwZW5kLHApID0gXzQgaW4gKFt4XTo6eSxwZW5kLHApIClcbiMgMjM3NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggbGV0ICh4LHBlbmQscCkgPSBfMSBpbiAoW1t4XV0scGVuZCxwKSApXG4jIDIzODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5DT05TVCBfMSkgKVxuIyAyMzkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkgKVxuIyAyMzk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRNQVhfVkFSKSkgKVxuIyAyNDAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyOTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkNQVVRJTUUpKSApXG4jIDI0MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyA1IChBbGdfZXhwci5UT0tFTl9JRCAoXzMpKSApXG4jIDI0MTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluIGFkZF9wb3MgNCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgcCkgKVxuIyAyNDI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSIChfMSkpIClcbiMgMjQzMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSApXG4jIDI0NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSApXG4jIDI0NDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpIClcbiMgMjQ1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKSApXG4jIDI0NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzMgaW4geCApXG4jIDI0NjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb25zdGFudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBfMSApXG4jIDI0NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBfMSApXG4jIDI0ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCxfMyxfNSkpIClcbiMgMjQ5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLF8zLF81KSkgKVxuIyAyNTAwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCxfMykpIClcbiMgMjUwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUyxfMykpIClcbiMgMjUxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLF8zKSkgKVxuIyAyNTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTixfMykpIClcbiMgMjUzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsXzMpKSApXG4jIDI1NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCxfMykpIClcbiMgMjU0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csXzMpKSApXG4jIDI1NTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVU1JTlVTLF8zKSkgKVxuIyAyNTY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLGVuZF9wb3MgMSxfMikgKVxuIyAyNTcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh4LHkseikgPSBfNSBpblxuICAgICAgKGFkZF9wb3MgNCAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csXzEseCkpLHkseikgKVxuIyAyNTgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyNTkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NT0RVTE8seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjYwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19wcm9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjYxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19zdW0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQseCx5KSxcbiAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3N1bSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2MzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI2NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9faWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjY1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9faWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI2NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAzODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoaSxfLF8pID0gXzEgaW5cbiAgICAgIGxldCAodCxfLF8pID0gXzQgaW5cbiAgKChBbGdfZXhwci5JRihpLHQsXzcpLFxuICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSAoZW5kX3BvcyA3KSksZW5kX3BvcyA3LF84KSApXG4jIDI2OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCB0cnVlIClcbiMgMjY5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGZhbHNlIClcbiMgMjcwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzMgaW4geCApXG4jIDI3MTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIEFsZ19leHByLlRSVUUgKVxuIyAyNzE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgQWxnX2V4cHIuRkFMU0UgKVxuIyAyNzIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCxfMykpIClcbiMgMjczMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxlbmRfcG9zIDEsIF8yKSApXG4jIDI3MzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjc1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuU01BTExFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNzY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNzc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHJfY29tcCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI3OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX25vX29yKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByX2NvbXApIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyODExIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9ub19vcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcl9ub19vcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyODE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xfZXhwcl9ub19vcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjgzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0NTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHgsXyxfKSA9IF8yIGluIHggKVxuIyAyODM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiUHJvYmxlbWF0aWMgYm9vbGVhbiBleHByZXNzaW9uXCIpKSApXG4jIDI4NDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKGZhbHNlKVxuIyAyODUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICh0cnVlKVxuIyAyODU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbKF8xLChfMyxyaHNfcG9zIDMpKV0sZW5kX3BvcyAzLF80IClcbiMgMjg2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLGFuKSA9IF83IGluIChfMSwoXzMscmhzX3BvcyAzKSkgOjogbCxwZW5kLGFuIClcbiMgMjg4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggbGV0IChwLHBlbmQsYW4pID0gXzEgaW4gKHAsW10scGVuZCxhbikgKVxuIyAyODg4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzEgaW5cbiAgICAgIGxldCAodCxwZW5kLGFuKSA9IF80IGluIChwLCB0LCBwZW5kLCBhbikgKVxuIyAyODk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHQscGVuZCxhbikgPSBfMyBpbiAoW10sIHQsIHBlbmQsIGFuKSApXG4jIDI5MDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDQgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSApXG4jIDI5MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgMyBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIClcbiMgMjkyNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdydWxlX3NpZGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX3NpZGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSBfNCBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSxfMixwZW5kLGFuKSApXG4jIDI5MzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncnVsZV9zaWRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0ODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobGhzLHJtX3Rva2VuLF8sXykgPSBfMSBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuPVtdfSxfMixlbmRfcG9zIDIsXzMpIClcbiMgMjk0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX3NpZGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChyaHMsYWRkX3Rva2VuLHBlbmQsYW4pID0gXzMgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbj1bXTsgQXN0LnJoczsgQXN0LmFkZF90b2tlbn0sXzEscGVuZCxhbikgKVxuIyAyOTU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDk1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG1peCxkZWx0YV90b2tlbixwZW5kLGFuKSA9IF8xIGluXG4gICAgICAoQXN0LkVkaXQge0FzdC5taXg7IEFzdC5kZWx0YV90b2tlbn0sZmFsc2UscGVuZCxhbikgKVxuIyAyOTY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gKHgsTm9uZSkgKVxuIyAyOTcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gbGV0ICh5LF8sXykgPSBfNCBpbiAoeCwgU29tZSB5KSApXG4jIDI5ODEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGIscGVuZCxhbikgPSBfNiBpbiAoYixTb21lIF8zLHBlbmQsYW4pIClcbiMgMjk5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHgsXyxfKSA9IF8xIGluICh4LFNvbWUgXzQsZW5kX3BvcyA1LF82KSApXG4jIDMwMDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoYSxwZW5kLGFuKSA9IF8xIGluIChhLE5vbmUscGVuZCxhbikgKVxuIyAzMDA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggbGV0IChrMixrMSxwZW5kLGFuKSA9IF8zIGluIChrMixrMSxOb25lLE5vbmUscGVuZCxhbikgKVxuIyAzMDE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdyYXRlKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChrMixrMSxfLF8pID0gXzMgaW5cbiAgICAgIGxldCAoa2JhY2ssa2JhY2sxLHBlbmQsYW4pID0gXzYgaW5cbiAgICAgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSxwZW5kLGFuKSApXG4jIDMwMjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYmlyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4scG9zX2VuZCxfYW5ub3QpID0gXzIgaW5cbiAgICAgIGxldCAocmV3cml0ZSxiaWRpcmVjdGlvbmFsLF8sXykgPSBfMSBpblxuICAgICAgKHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0sTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBvc19lbmQpIClcbiMgMzA0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAyIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSApXG4jIDMwNDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh2LHBlbmQsYW4pID0gXzMgaW4gKChfMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgKVxuIyAzMDU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYscGVuZCxhbikgPSBfMyBpbiAoKF8xLHJoc19wb3MgMSksdixwZW5kLGFuKSApXG4jIDMwNjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSkgKVxuIyAzMDc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMzA4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSAoXCJsYWJlbCBleHBlY3RlZFwiKSkpIClcbiMgMzA5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAoIFsgXzEscmhzX3BvcyAxIF0gKVxuIyAzMDk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaWRfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEscmhzX3BvcyAxKSA6OiBfNSApXG4jIDMxMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNTUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHAscGVuZCxfKSA9IF8yIGluXG4gICAgICAodixBc3QuSU5JVF9NSVggKHAsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDIpIHBlbmQpKSApXG4jIDMxMTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gXzQgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpIClcbiMgMzEzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1NjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW4gKHYsQXN0LklOSVRfVE9LIF8yKSApXG4jIDMxMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzQgaW4gKHYsQXN0LklOSVRfVE9LIFtfMSxyaHNfcG9zIDFdKSlcbiMgMzE0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIk1hbGZvcm1lZCBpbml0aWFsIGNvbmRpdGlvblwiKSkgKVxuIyAzMTU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChbXzEsIHJoc19wb3MgMV0pXG4jIDMxNjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfMSxyaHNfcG9zIDEpOjpfMylcbiMgMzE3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgMSBfMSldLGVuZF9wb3MgMSxfMikgKVxuIyAzMTc5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBPYmoucmVwcihcbiMgNTgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF8xIGluIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgYV0scGVuZCxwKSApXG4jIDMxODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHJfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAzMTkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncHJpbnRfZXhwcl9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTg1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxhbikgPSBfMyBpbiAodixlbmRfcG9zIDQsYW4gQCBfNSkgKVxuIyAzMjAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGwscGVuZCxwKSA9IF81IGluIChQcmltaXRpdmVzLlN0cl9wZXhwciAoXzEsIHJoc19wb3MgMSk6OmwscGVuZCxwKSApXG4jIDMyMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcl9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGwscGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8xIGluXG4gICAgICAoUHJpbWl0aXZlcy5BbGdfcGV4cHIgdjo6bCxwZW5kLHApIClcbiMgMzIyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggKFtdLHN0YXJ0X3BvcyAxLF8xKSApXG4jIDMyMzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDMyMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF81IGluIChBc3QuVVBEQVRFICgoXzMscmhzX3BvcyAzKSxhKSxwZW5kLHApIClcbiMgMzI0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChhLHBlbmQscCkgPSBfNSBpbiAoQXN0LlVQREFURSAoKF8zLHJoc19wb3MgMyksYSkscGVuZCxwKSApXG4jIDMyNTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChBc3QuQ0ZMT1dMQUJFTCAoXzUsKF8zLHJoc19wb3MgMykpLGVuZF9wb3MgNSxfNikgKVxuIyAzMjY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwYXQsZXBhdCxfKSA9IF8zIGluXG4gICAgICAoQXN0LkNGTE9XTUlYIChfNCwocGF0LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBlcGF0KSksZW5kX3BvcyA0LCBfNSkgKVxuIyAzMjgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMyBpblxuICAgICAgKChpZiBfNCB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCkgZWxzZSBBc3QuRElOT0ZGIHApLFxuICAgICAgIGVuZF9wb3MgNCxfNSkgKVxuIyAzMjkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMyBpblxuICAgICAgaWYgXzYgJiYgXzQgPSBcImFic29sdXRlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxwKSxlbmRfcG9zIDYsXzcpXG4gICAgICBlbHNlIGlmIF82ICYmIF80ID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkscCksZW5kX3BvcyA2LF83KVxuICAgICAgZWxzZSBpZiBfNiAmJiBfNCA9IFwicmVsYXRpdmVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApLGVuZF9wb3MgNixfNylcbiAgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgNCkpIClcbiMgMzMxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYyNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChyZXdyaXRlLF8scGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgKHsgQXN0LnJld3JpdGU7IEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kKSksXG4gICAgICBwZW5kLGFuXG4gICAgKVxuIyAzMzI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDYzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChtLHBlbmQscCkgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgICBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fY3JlYXRlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzMzQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nIFxcXG4nJEFERCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgKVxuIyAzMzU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDY1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChtLHBlbmQscCkgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19lcmFzZWRfbWl4dHVyZSBtO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzMzc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSApXG4jIDMzODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocyxwZW5kLHApID0gXzIgaW4gKEFzdC5TTkFQU0hPVCAoZmFsc2UscykscGVuZCxwKSApXG4jIDMzOTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocyxfLF8pID0gXzIgaW4gKEFzdC5TTkFQU0hPVCAoXzMscyksZW5kX3BvcyAzLF80KSApXG4jIDM0MDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjcwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggbGV0IChzLHBlbmQscCkgPSBfMiBpbiAoQXN0LlNUT1AgcyxwZW5kLHApIClcbiMgMzQwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGYscGVuZCxwKSA9IF80IGluIGxldCAoYyxfLF8pID0gXzIgaW4gKEFzdC5QUklOVCAoZixjKSxwZW5kLHApIClcbiMgMzQxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYyxwZW5kLHApID0gXzIgaW4gKEFzdC5QUklOVCAoW10sYykscGVuZCxwKSApXG4jIDM0MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LlBMT1RFTlRSWSxlbmRfcG9zIDEsXzIpIClcbiMgMzQzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKFxuICAgICAgbGV0IChmaWxlLHBlbmQscCkgPSBfNyBpblxuICAgICAgbGV0IChwYXQscGVuZHAsXykgPSBfMyBpblxuICAgICAgKEFzdC5TUEVDSUVTX09GIChfNCxmaWxlLChwYXQsIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kcCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzNDQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgbGV0ICh2LHBlbmQscCkgPSBfNSBpblxuICAgbGV0IHRrID0gKF8xLHJoc19wb3MgMSkgaW5cbiAgICAoQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICh7QXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICBBc3QuRWRpdFxuICAgICAgICAgICAgICAgICAge0FzdC5taXg9W107XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuID1cbiAgICAgICAgICAgICAgICAgICAgICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsdiwoQWxnX2V4cHIuVE9LRU5fSUQgXzEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgIDQpIHBlbmQpKSxwZW5kLHApXG4gICApXG4jIDM0NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgKVxuIyAzNDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNzAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMiBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG4gICBleHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgKVxuIyAzNDg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAoXzEpXG4jIDM0OTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X29yX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZGluKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgIChfMSlcbiMgMzUwMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3Rfb3JfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8zIClcbiMgMzUxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0X29yX2lkaW4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gKFtlXSxlbmRfcG9zIDIsXzMpIClcbiMgMzUxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X29yX2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICggbGV0IChlLHAsYSkgPSBfMSBpbiAoW2VdLHAsYSkgKVxuIyAzNTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzUzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzNTQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZGluKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoZSxwLGEpID0gXzEgaW4gKFtlXSxwLGEpIClcbiMgMzU0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzU1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzMgKVxuIyAzNTY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IChlLF8sXykgPSAgXzMgaW4gZSxlbmRfcG9zIDYsXzcgKVxuIyAzNTc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzNTg1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnZWZmZWN0KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzU5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMiBpbiBlIClcbiMgMzYwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDczNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJQcm9ibGVtYXRpYyBlZmZlY3QgbGlzdFwiKSkgKVxuIyAzNjA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBOb25lIClcbiMgMzYxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25icikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzQgKVxuIyAzNjI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJhbGFybSB0YWtlcyBhIG51bWJlciBhcyBhcmd1bWVudFwiKSkgKVxuIyAzNjMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYixwZW5kLHApID0gXzMgaW4gKFNvbWUgYixwZW5kLHApIClcbiMgMzY0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDc1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKE5vbmUsIFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSxbXSkgKVxuIyAzNjQ2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAzNjUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwcmUsXyxfKSA9IF8yIGluXG4gICAgICBsZXQgKGUsXyxfKSA9IF81IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9IF82IGluXG4gICAgICAoXzEsU29tZSBwcmUsZSxwb3N0KSApXG4jIDM2NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfNCBpbiBsZXQgKHBvc3QsXyxfKSA9IF81IGluIChfMSxOb25lLGUscG9zdCkgKVxuIyAzNjc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocHJlLF8sXykgPSBfMiBpblxuICAgICAgbGV0IChlLF8sXykgPSBfNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSBfNiBpblxuICAgICAgKF8xLFNvbWUgcHJlLGUscG9zdCkgKVxuIyAzNjkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF80IGluXG4gICAgICAgICAgbGV0IChwb3N0LF8sXykgPSBfNSBpblxuICAgICAgICAgIChfMSxOb25lLGUscG9zdCkgKVxuIyAzNzAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc3NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkIChBc3QuUlVMRShTb21lIChfMSwgcmhzX3BvcyAxKSxfMykpIClcbiMgMzcxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF81IGluIGFkZCAoQXN0LkRFQ0xBUkUgKChfMSxyaHNfcG9zIDEpLHYpKSApXG4jIDM3MjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlKSBpblxuICAgIE9iai5yZXByKFxuIyA3NzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkIChBc3QuUlVMRSAoTm9uZSxfMSkpIClcbiMgMzcyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYSxfLF8pID0gXzMgaW4gYWRkIChBc3QuU0lHIGEpIClcbiMgMzczNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlXCIpKSApXG4jIDM3NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGQgKEFzdC5UT0tFTlNJRyAoXzMscmhzX3BvcyAzKSkgKVxuIyAzNzU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0LlBMT1QgdikgKVxuIyAzNzYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDNcbiAgICAgICAgICAgICAgICAgIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIFxcXG5hbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkgKVxuIyAzNzcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3OTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoaSx2LF8sXykgPSBfMyBpbiBhZGQgKEFzdC5ERUNMQVJFIChpLHYpKSApXG4jIDM3ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChpLHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0Lk9CUyAoaSx2KSkgKVxuIyAzNzg4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2luaXRfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChhbGcsaW5pdCkgPSBfMyBpbiBhZGQgKEFzdC5JTklUIChhbGcsaW5pdCkpIClcbiMgMzc5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGQgKEFzdC5QRVJUIChfMiwgcmhzX3BvcyAyKSkgKVxuIyAzODAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkIChBc3QuQ09ORklHICgoXzMscmhzX3BvcyAzKSxfNSkpIClcbiMgMzgxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NlbnRlbmNlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbW9kZWxfYm9keSkgaW5cbiAgICBPYmoucmVwcihcbiMgODAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMzgyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RlbF9ib2R5KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBvdXRwdXQgKCkgKVxuIyAzODI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZGVsX2JvZHkpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbW9kZWxfYm9keSkgaW5cbiAgICBPYmoucmVwcihcbiMgODA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAzODM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJJbmNvcnJlY3QgYmVnaW5uaW5nIG9mIHNlbnRlbmNlICEhIVwiKSkgKVxuIyAzODQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKSApXG4jIDM4NTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA4MTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHBhdXNlLF8sXykgPSBfNCBpbiBBc3QuUlVOIHBhdXNlIClcbiMgMzg1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgODE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlZmYsXyxfKSA9IF8yIGluIEFzdC5NT0RJRlkgW2VmZl0gKVxuIyAzODY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAoIEFzdC5RVUlUIClcbiMgMzg3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpIClcbiMgMzg4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbigqIEVudHJ5IG1vZGVsICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IGludGVyYWN0aXZlX2NvbW1hbmQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2Jvb2xfZXhwciAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBtb2RlbCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdClcbmxldCBpbnRlcmFjdGl2ZV9jb21tYW5kIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZClcbmxldCBzdGFuZGFsb25lX2VmZmVjdF9saXN0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KVxubGV0IHN0YW5kYWxvbmVfYm9vbF9leHByIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqL1xuLyogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqL1xuLyogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuJXtcbiAgbGV0IGFkZF9wb3MgZSB4ID1cbiAgICAoeCxcbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGUpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiAgbGV0IGVuZF9wb3MgPSBQYXJzaW5nLnJoc19lbmRfcG9zXG4gIGxldCBzdGFydF9wb3MgPSBQYXJzaW5nLnJoc19zdGFydF9wb3NcblxuICBsZXQgaW50ZXJuYWxfbWVtb3J5ID0gcmVmIFtdXG4gIGxldCBhZGQgeCA9IGludGVybmFsX21lbW9yeSA6PSB4IDo6ICFpbnRlcm5hbF9tZW1vcnlcbiAgbGV0IG91dHB1dCAoKSA9XG4gICAgbGV0IG8gPSBMaXN0LnJldiAhaW50ZXJuYWxfbWVtb3J5IGluIGxldCAoKSA9IGludGVybmFsX21lbW9yeSA6PSBbXSBpbiBvXG4lfVxuXG4ldG9rZW4gRU9GIENPTU1BIERPVCBPUF9QQVIgQ0xfUEFSIE9QX0NVUiBDTF9DVVIgT1BfQlJBIENMX0JSQSBBVCBTRU1JQ09MT05cbiV0b2tlbiBQTFVTIE1JTlVTIE1VTFQgRElWIE1PRCBNQVggTUlOIFNJTlVTIENPU0lOVVMgVEFOIFBPVyBBQlMgU1FSVCBFWFBPTkVOVFxuJXRva2VuIExPRyBPUiBBTkQgTk9UIFRIRU4gRUxTRSBESUZGIEVRVUFMIFNNQUxMRVIgR1JFQVRFUiBUUlVFIEZBTFNFIElORklOSVRZXG4ldG9rZW4gU0hBUlAgVU5ERVJTQ09SRSBQSVBFIFJBUiBMUkFSIExBUiBFTUFYIFRNQVggQ1BVVElNRSBUSU1FIEVWRU5UIE5VTExfRVZFTlRcbiV0b2tlbiBDT0xPTiBORVdMSU5FIEJBQ0tTTEFTSCBTSUdOQVRVUkUgVE9LRU4gSU5JVCBPQlMgUExPVCBQRVJUIENPTkZJRyBBUFBMWVxuJXRva2VuIERFTEVURSBJTlRSTyBTTkFQU0hPVCBTVE9QIEZMVVggVFJBQ0sgQVNTSUdOIFBSSU5URiBQTE9URU5UUlkgU1BFQ0lFU19PRlxuJXRva2VuIERPIFJFUEVBVCBBTEFSTSBSVU4gTEVUXG4ldG9rZW4gPGludD4gSU5UXG4ldG9rZW4gPGZsb2F0PiBGTE9BVFxuJXRva2VuIDxzdHJpbmc+IElEIExBQkVMIFNUUklOR1xuJXRva2VuIDxzdHJpbmc+IFNQQUNFIENPTU1FTlRcblxuJXN0YXJ0IG1vZGVsXG4ldHlwZSA8QXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdD4gbW9kZWxcblxuJXN0YXJ0IGludGVyYWN0aXZlX2NvbW1hbmRcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZD4gaW50ZXJhY3RpdmVfY29tbWFuZFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuJXR5cGVcbiAgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3Q+IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcblxuJXN0YXJ0IHN0YW5kYWxvbmVfYm9vbF9leHByXG4ldHlwZSA8KEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZD4gc3RhbmRhbG9uZV9ib29sX2V4cHJcblxuJSVcblxuYW5ub3RlZDpcbiAgfCB7IFtdIH1cbiAgfCBORVdMSU5FIGFubm90ZWQgeyBcIlxcblwiOjokMiB9XG4gIHwgU1BBQ0UgYW5ub3RlZCB7ICQxOjokMiB9XG4gIHwgQ09NTUVOVCBhbm5vdGVkIHsgJDE6OiQyIH1cbiAgO1xuXG5uYnI6XG4gIHwgSU5GSU5JVFkgeyBOYnIuRiBpbmZpbml0eSB9XG4gIHwgRkxPQVQgeyBOYnIuRiAkMSB9XG4gIHwgSU5UIHsgTmJyLkkgJDEgfVxuICA7XG5cbmxpbmtfc3RhdGU6XG4gIHwgRE9UIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfRlJFRSB9XG4gIHwgSU5UIHsgYWRkX3BvcyAxIChMS2FwcGEuTE5LX1ZBTFVFICgkMSwoKSkpIH1cbiAgfCBVTkRFUlNDT1JFIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfU09NRSB9XG4gIHwgSUQgYW5ub3RlZCBET1QgYW5ub3RlZCBJRFxuICAgIHsgYWRkX3BvcyA1IChMS2FwcGEuTE5LX1RZUEUgKCgkMSxyaHNfcG9zIDEpLCgkNSxyaHNfcG9zIDUpKSkgfVxuICB8IFNIQVJQIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfQU5ZIH1cbiAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBzdGF0ZVwiKSkgfVxuICA7XG5cbmxpbmtfc3RhdGVzOlxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCB7IFskMV0gfVxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCBsaW5rX3N0YXRlcyB7ICQxIDo6ICQzIH1cbiAgfCBsaW5rX3N0YXRlIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBsaW5rX3N0YXRlcyB7ICQxIDo6ICQ1IH1cbiAgO1xuXG5saW5rX21vZGlmOlxuICB8IHsgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgRE9UIGFubm90ZWQgeyBTb21lIE5vbmUgfVxuICB8IERJViBhbm5vdGVkIElOVCBhbm5vdGVkIHsgU29tZSAoU29tZSAoJDMsIHJoc19wb3MgMykpIH1cbiAgfCBESVYgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgfVxuICA7XG5cbmludGVybmFsX3N0YXRlOlxuICB8IElEIHsgYWRkX3BvcyAxIChTb21lICQxKSB9XG4gIHwgU0hBUlAgeyBhZGRfcG9zIDEgTm9uZSB9XG4gIDtcblxuaW50ZXJuYWxfc3RhdGVzOlxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgeyBbJDFdIH1cbiAgfCBpbnRlcm5hbF9zdGF0ZSBhbm5vdGVkIGludGVybmFsX3N0YXRlcyB7ICQxIDo6ICQzIH1cbiAgfCBpbnRlcm5hbF9zdGF0ZSBhbm5vdGVkIENPTU1BIGFubm90ZWQgaW50ZXJuYWxfc3RhdGVzIHsgJDEgOjogJDUgfVxuICA7XG5cbmludGVybmFsX21vZGlmOlxuICB8IHsgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgSUQgYW5ub3RlZCB7IFNvbWUgKCQzLCByaHNfcG9zIDMpIH1cbiAgfCBESVYgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgfVxuICA7XG5cbnNpdGVfbGluazpcbiAgfCBhbm5vdGVkIGxpbmtfc3RhdGVzIGxpbmtfbW9kaWYgQ0xfQlJBIHsgKCQyLCAkMykgfVxuICB8IGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBsaW5raW5nIHN0YXRlIG9yIG1pc3NpbmcgJ10nXCIscmhzX3BvcyAyKSkgfVxuICA7XG5cbnNpdGVfaW50ZXJuYWw6XG4gIHwgaW50ZXJuYWxfc3RhdGVzIGludGVybmFsX21vZGlmIENMX0NVUiB7ICgkMSwgJDIpIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGludGVybmFsIHN0YXRlIG9yIG1pc3NpbmcgJ30nXCIscmhzX3BvcyAzKSkgfVxuICA7XG5cbmNvdW50ZXJfbW9kaWY6XG4gIHwgUExVUyBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKCQ1LCByaHNfcG9zIDUpIH1cbiAgfCBQTFVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBNSU5VUyBhbm5vdGVkIElOVCB7ICgtICQ3LCByaHNfcG9zIDcpIH1cbiAgfCBNSU5VUyBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKC0gJDUsIHJoc19wb3MgNSkgfVxuICA7XG5cbmNvdW50ZXJfdGVzdDpcbiAgfCBFUVVBTCBhbm5vdGVkIElOVCB7IChBc3QuQ0VRICQzLHJoc19wb3MgMykgfVxuICB8IEdSRUFURVIgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7IChBc3QuQ0dURSAkNSxyaHNfcG9zIDUpIH1cbiAgfCBTTUFMTEVSIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoQXN0LkNMVEUgJDUscmhzX3BvcyA1KSB9XG4gIHwgRVFVQUwgYW5ub3RlZCBJRCB7IChBc3QuQ1ZBUiAkMyxyaHNfcG9zIDMpIH1cbiAgO1xuXG5zaXRlX2NvdW50ZXI6XG4gIHwgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkIHsgKE5vbmUsICQxKSB9XG4gIHwgY291bnRlcl90ZXN0IGFubm90ZWQgQ0xfQ1VSIGFubm90ZWQgeyAoU29tZSAkMSwgTG9jLmFubm90X3dpdGhfZHVtbXkgMCkgfVxuICB8IGNvdW50ZXJfdGVzdCBhbm5vdGVkIERJViBhbm5vdGVkIGNvdW50ZXJfbW9kaWYgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZFxuICAgIHsgKFNvbWUgJDEsJDUpIH1cbiAgO1xuXG5zaXRlX2NvdW50ZXJfc2lnOlxuICAgIHwgRVFVQUwgYW5ub3RlZCBJTlQgIGFubm90ZWQgRElWIGFubm90ZWQgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkXG4gICAgICB7IFNvbWUgKFNvbWUgKCQzKSxyaHNfcG9zIDMpLG1hdGNoICQ3IHdpdGggKGEsbG9jKSAtPiBTb21lIChTb21lIChhKSxsb2MpIH1cbiAgICB8IEVRVUFMIGFubm90ZWQgSU5UICBhbm5vdGVkIENMX0NVUiBhbm5vdGVkXG4gICAgICAgIHsgU29tZSAoU29tZSAoJDMpLHJoc19wb3MgMyksTm9uZSB9XG4gICAgO1xuXG4gIHNpdGVfc2lnOlxuICAgIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107XG4gICAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2NvdW50ZXJfc2lnXG4gICAgICB7IGxldCAoY291bnRlcl9zaWdfbWluLGNvdW50ZXJfc2lnX21heCkgPSAkNSBpblxuICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWU9KCQxLHJoc19wb3MgMSk7XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluO1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heDtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0PVxuICAgICAgICAgICAgICAgIChtYXRjaCBjb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXyktPiAwXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSxfKSAtPiBpICk7XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZT1Bc3QuRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICAgICAgICB9IH1cbiAgICB8IElEIGFubm90ZWRcbiAgICAgIHsgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgICA7XG5cbnNpdGU6XG4gIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkNCBpblxuICAgICAgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ4IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ4IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9jb3VudGVyXG4gICAgeyBsZXQgKGNvdW50ZXJfdGVzdCxjb3VudGVyX2RlbHRhKSA9ICQ1IGluXG4gICAgICBBc3QuQ291bnRlclxuICAgICAgICB7IEFzdC5jb3VudGVyX25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5jb3VudGVyX3Rlc3Q7IEFzdC5jb3VudGVyX2RlbHRhIH0gfVxuICB8IElEIGFubm90ZWRcbiAgICB7IEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgO1xuXG5pbnRlcmZhY2U6XG4gIHwgeyBbXSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgfVxuICB8IHNpdGUgaW50ZXJmYWNlIHsgJDEgOjogJDIgfVxuICB8IHNpdGUgQ09NTUEgYW5ub3RlZCBpbnRlcmZhY2UgeyAkMSA6OiAkNCB9XG4gIDtcblxuaW50ZXJmYWNlX3NpZzpcbiAgICB8IHsgW10gfVxuICAgIHwgZXJyb3JcbiAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDEgKFwiTWFsZm9ybWVkIHNpdGUgZXhwcmVzc2lvblwiKSkpIH1cbiAgICB8IHNpdGVfc2lnIGludGVyZmFjZV9zaWcgeyAkMSA6OiAkMiB9XG4gICAgfCBzaXRlX3NpZyBDT01NQSBhbm5vdGVkIGludGVyZmFjZV9zaWcgeyAkMSA6OiAkNCB9XG4gICAgO1xuXG5hZ2VudF9tb2RpZjpcbiAgfCBhbm5vdGVkIHsgQXN0Lk5vTW9kLHN0YXJ0X3BvcyAxLCQxIH1cbiAgfCBhbm5vdGVkIFBMVVMgYW5ub3RlZCB7IEFzdC5DcmVhdGUsZW5kX3BvcyAyLCQzIH1cbiAgfCBhbm5vdGVkIE1JTlVTIGFubm90ZWQgeyBBc3QuRXJhc2UsZW5kX3BvcyAyLCQzIH1cbiAgO1xuXG5hZ2VudDpcbiAgfCBET1QgYW5ub3RlZCB7IChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSwkMikgfVxuICB8IElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkNyBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDUsIG1vZGlmKSxwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBDT0xPTiBhbm5vdGVkIElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkMTEgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKCQ1LHJoc19wb3MgNSksICQ5LCBtb2RpZikscGVuZCxhbikgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgO1xuXG5hZ2VudF9zaWc6XG4gICAgfCBET1QgYW5ub3RlZCB7IChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSwkMikgfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2Vfc2lnIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQ3IGluXG4gICAgICAgIChBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQ1LCBtb2RpZikscGVuZCxhbikgfVxuICAgIHwgSUQgYW5ub3RlZCBDT0xPTiBhbm5vdGVkIElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlX3NpZyBDTF9QQVIgYWdlbnRfbW9kaWZcbiAgICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkMTEgaW5cbiAgICAgICAgKEFzdC5QcmVzZW50ICgoJDUscmhzX3BvcyA1KSwgJDksIG1vZGlmKSxwZW5kLGFuKSB9XG4gICAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDFeXCInXCIpKSkgfVxuICAgIDtcbnBhdHRlcm46XG4gIHwgYWdlbnQgQ09NTUEgYW5ub3RlZCBwYXR0ZXJuXG57IGxldCAoeCxfLF8pID0gJDEgaW5cbiAgbWF0Y2ggJDQgd2l0aFxuICB8ICh5Ojp6LHBlbmQscCkgLT4gKCh4Ojp5KTo6eixwZW5kLHApXG4gIHwgKFtdLF8sXykgLT5cbiAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgKGFkZF9wb3MgNCAoXCJhc3NlcnRpb24gZmFpbHVyZSBpbiBwYXR0ZXJuIHBhcnNpbmdcIikpKSB9XG4gIHwgYWdlbnQgQkFDS1NMQVNIIGFubm90ZWQgcGF0dGVyblxueyBsZXQgKHgsXyxfKSA9ICQxIGluIGxldCAoeSxwZW5kLHApID0gJDQgaW4gKFt4XTo6eSxwZW5kLHApIH1cbiAgfCBhZ2VudCB7IGxldCAoeCxwZW5kLHApID0gJDEgaW4gKFtbeF1dLHBlbmQscCkgfVxuICA7XG5cbmNvbnN0YW50OlxuICB8IG5iciB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQ09OU1QgJDEpIH1cbiAgfCBFTUFYIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkgfVxuICB8IFRNQVggeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSB9XG4gIHwgQ1BVVElNRSB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSkgfVxuICA7XG5cbnZhcmlhYmxlOlxuICB8IFBJUEUgYW5ub3RlZCBJRCBhbm5vdGVkIFBJUEUgeyBhZGRfcG9zIDUgKEFsZ19leHByLlRPS0VOX0lEICgkMykpIH1cbiAgfCBQSVBFIGFubm90ZWQgcGF0dGVybiBQSVBFXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQzIGluIGFkZF9wb3MgNCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgcCkgfVxuICB8IElEIHsgYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSICgkMSkpIH1cbiAgfCBMQUJFTCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKSB9XG4gIHwgVElNRSB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpIH1cbiAgfCBFVkVOVCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSB9XG4gIHwgTlVMTF9FVkVOVFxuICAgIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkgfVxuICA7XG5cbnNtYWxsX2FsZ19leHByOlxuICB8IE9QX1BBUiBhbm5vdGVkIGFsZ19leHByIENMX1BBUiB7IGxldCAoeCxfLF8pID0gJDMgaW4geCB9XG4gIHwgY29uc3RhbnQgeyAkMSB9XG4gIHwgdmFyaWFibGUgeyAkMSB9XG4gIHwgTUFYIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCwkMywkNSkpIH1cbiAgfCBNSU4gYW5ub3RlZCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLCQzLCQ1KSkgfVxuICB8IEVYUE9ORU5UIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCwkMykpIH1cbiAgfCBTSU5VUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUywkMykpIH1cbiAgfCBDT1NJTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsJDMpKSB9XG4gIHwgVEFOIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTiwkMykpIH1cbiAgfCBBQlMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULCQzKSkgfVxuICB8IFNRUlQgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCwkMykpIH1cbiAgfCBMT0cgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLCQzKSkgfVxuICB8IE1JTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUywkMykpIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19tb2Q6XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCB7ICgkMSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIFBPVyBhbm5vdGVkIGFsZ19leHByX3VwX3RvX21vZFxuICAgIHsgbGV0ICh4LHkseikgPSAkNSBpblxuICAgICAgKGFkZF9wb3MgNCAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csJDEseCkpLHkseikgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX3Byb2Q6XG4gIHwgYWxnX2V4cHJfdXBfdG9fbW9kIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX3Byb2QgTU9EIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fbW9kXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NT0RVTE8seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19zdW06XG4gIHwgYWxnX2V4cHJfdXBfdG9fcHJvZCB7ICQxIH1cbiAgfCBhbGdfZXhwcl91cF90b19zdW0gTVVMVCBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3Byb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCx4LHkpLFxuICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIERJViBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3Byb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9faWY6XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIFBMVVMgYW5ub3RlZCBhbGdfZXhwcl91cF90b19zdW1cbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgTUlOVVMgYW5ub3RlZCBhbGdfZXhwcl91cF90b19zdW1cbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cblxuYWxnX2V4cHI6XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgeyAkMSB9XG4gIHwgYm9vbF9leHByIFRIRU4gYW5ub3RlZCBhbGdfZXhwciBFTFNFIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZFxuICAgIHsgbGV0IChpLF8sXykgPSAkMSBpblxuICAgICAgbGV0ICh0LF8sXykgPSAkNCBpblxuICAoKEFsZ19leHByLklGKGksdCwkNyksXG4gICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIChlbmRfcG9zIDcpKSxlbmRfcG9zIDcsJDgpIH1cbiAgO1xuXG5ib29sZWFuOlxuICB8IFRSVUUgeyB0cnVlIH1cbiAgfCBGQUxTRSB7IGZhbHNlIH1cbiAgO1xuXG5zbWFsbF9ib29sX2V4cHI6XG4gIHwgT1BfUEFSIGFubm90ZWQgYm9vbF9leHByIENMX1BBUiB7IGxldCAoeCxfLF8pID0gJDMgaW4geCB9XG4gIHwgVFJVRSB7IGFkZF9wb3MgMSBBbGdfZXhwci5UUlVFIH1cbiAgfCBGQUxTRSB7IGFkZF9wb3MgMSBBbGdfZXhwci5GQUxTRSB9XG4gIHwgTk9UIGFubm90ZWQgc21hbGxfYm9vbF9leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULCQzKSkgfVxuICA7XG5cbmJvb2xfZXhwcl9jb21wOlxuICB8IHNtYWxsX2Jvb2xfZXhwciBhbm5vdGVkIHsgKCQxLGVuZF9wb3MgMSwgJDIpIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBHUkVBVEVSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIFNNQUxMRVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgRVFVQUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIERJRkYgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYm9vbF9leHByX25vX29yOlxuICB8IGJvb2xfZXhwcl9jb21wIHsgJDEgfVxuICB8IGJvb2xfZXhwcl9jb21wIEFORCBhbm5vdGVkIGJvb2xfZXhwcl9ub19vclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYm9vbF9leHByOlxuICB8IGJvb2xfZXhwcl9ub19vciB7ICQxIH1cbiAgfCBib29sX2V4cHJfbm9fb3IgT1IgYW5ub3RlZCBib29sX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuc3RhbmRhbG9uZV9ib29sX2V4cHI6XG4gIHwgYW5ub3RlZCBib29sX2V4cHIgRU9GIHsgbGV0ICh4LF8sXykgPSAkMiBpbiB4IH1cbiAgfCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJQcm9ibGVtYXRpYyBib29sZWFuIGV4cHJlc3Npb25cIikpIH1cbiAgO1xuXG5hcnJvdzpcbiAgfCBSQVIge2ZhbHNlfVxuICB8IExSQVIge3RydWV9XG4gIDtcblxuc3VtX3Rva2VuOlxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgSUQgYW5ub3RlZCB7IFsoJDEsKCQzLHJoc19wb3MgMykpXSxlbmRfcG9zIDMsJDQgfVxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgSUQgYW5ub3RlZCBDT01NQSBhbm5vdGVkIHN1bV90b2tlblxuICAgIHsgbGV0IChsLHBlbmQsYW4pID0gJDcgaW4gKCQxLCgkMyxyaHNfcG9zIDMpKSA6OiBsLHBlbmQsYW4gfVxuICA7XG5cbnJ1bGVfc2lkZTpcbiAgfCBwYXR0ZXJuIHsgbGV0IChwLHBlbmQsYW4pID0gJDEgaW4gKHAsW10scGVuZCxhbikgfVxuICB8IHBhdHRlcm4gUElQRSBhbm5vdGVkIHN1bV90b2tlblxuICAgIHsgbGV0IChwLF8sXykgPSAkMSBpblxuICAgICAgbGV0ICh0LHBlbmQsYW4pID0gJDQgaW4gKHAsIHQsIHBlbmQsIGFuKSB9XG4gIHwgUElQRSBhbm5vdGVkIHN1bV90b2tlbiB7IGxldCAodCxwZW5kLGFuKSA9ICQzIGluIChbXSwgdCwgcGVuZCwgYW4pIH1cbiAgfCBwYXR0ZXJuIFBJUEUgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDQgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSB9XG4gIHwgUElQRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgMyBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIH1cbiAgO1xuXG5ydWxlX2NvbnRlbnQ6XG4gIHwgcnVsZV9zaWRlIGFycm93IGFubm90ZWQgcnVsZV9zaWRlXG4gICAgeyBsZXQgKGxocyxybV90b2tlbixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9ICQ0IGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LCQyLHBlbmQsYW4pIH1cbiAgfCBydWxlX3NpZGUgYXJyb3cgYW5ub3RlZFxuICAgIHsgbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9ICQxIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW49W119LCQyLGVuZF9wb3MgMiwkMykgfVxuICB8IGFycm93IGFubm90ZWQgcnVsZV9zaWRlXG4gICAgeyBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSAkMyBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuPVtdOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSwkMSxwZW5kLGFuKSB9XG4gIHwgcnVsZV9zaWRlXG4gICAgeyBsZXQgKG1peCxkZWx0YV90b2tlbixwZW5kLGFuKSA9ICQxIGluXG4gICAgICAoQXN0LkVkaXQge0FzdC5taXg7IEFzdC5kZWx0YV90b2tlbn0sZmFsc2UscGVuZCxhbikgfVxuICA7XG5cbmFsZ193aXRoX3JhZGl1czpcbiAgfCBhbGdfZXhwciB7IGxldCAoeCxfLF8pID0gJDEgaW4gKHgsTm9uZSkgfVxuICB8IGFsZ19leHByIENPTE9OIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeCxfLF8pID0gJDEgaW4gbGV0ICh5LF8sXykgPSAkNCBpbiAoeCwgU29tZSB5KSB9XG4gIDtcblxucmF0ZTpcbiAgfCBPUF9DVVIgYW5ub3RlZCBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoYixwZW5kLGFuKSA9ICQ2IGluIChiLFNvbWUgJDMscGVuZCxhbikgfVxuICB8IGFsZ19leHByIE9QX0NVUiBhbm5vdGVkIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgYW5ub3RlZFxuICAgIHsgbGV0ICh4LF8sXykgPSAkMSBpbiAoeCxTb21lICQ0LGVuZF9wb3MgNSwkNikgfVxuICB8IGFsZ19leHByIHsgbGV0IChhLHBlbmQsYW4pID0gJDEgaW4gKGEsTm9uZSxwZW5kLGFuKSB9XG4gIDtcblxuYmlyYXRlOlxuICB8IEFUIGFubm90ZWQgcmF0ZSB7IGxldCAoazIsazEscGVuZCxhbikgPSAkMyBpbiAoazIsazEsTm9uZSxOb25lLHBlbmQsYW4pIH1cbiAgfCBBVCBhbm5vdGVkIHJhdGUgQ09NTUEgYW5ub3RlZCByYXRlXG4gICAgeyBsZXQgKGsyLGsxLF8sXykgPSAkMyBpblxuICAgICAgbGV0IChrYmFjayxrYmFjazEscGVuZCxhbikgPSAkNiBpblxuICAgICAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxLHBlbmQsYW4pIH1cbiAgO1xuXG5ydWxlOlxuICB8IHJ1bGVfY29udGVudCBiaXJhdGVcbiAgICB7IGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4scG9zX2VuZCxfYW5ub3QpID0gJDIgaW5cbiAgICAgIGxldCAocmV3cml0ZSxiaWRpcmVjdGlvbmFsLF8sXykgPSAkMSBpblxuICAgICAgKHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0sTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBvc19lbmQpIH1cbiAgfCBydWxlX2NvbnRlbnQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAyIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSB9XG4gIDtcblxudmFyaWFibGVfZGVjbGFyYXRpb246XG4gIHwgTEFCRUwgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixwZW5kLGFuKSA9ICQzIGluICgoJDEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIH1cbiAgfCBJRCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LHBlbmQsYW4pID0gJDMgaW4gKCgkMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgfVxuICB8IExBQkVMIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl4kMV5cIidcIikpKSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIChcImxhYmVsIGV4cGVjdGVkXCIpKSkgfVxuICA7XG5cbmlkX2xpc3Q6XG4gIHwgSUQgYW5ub3RlZCB7IFsgJDEscmhzX3BvcyAxIF0gfVxuICB8IElEIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBpZF9saXN0IHsgKCQxLHJoc19wb3MgMSkgOjogJDUgfVxuICA7XG5cbmluaXRfZGVjbGFyYXRpb246XG4gIHwgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0ICh2LF8sXykgPSAkMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSAkMiBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAyKSBwZW5kKSkgfVxuICB8IGFsZ19leHByIE9QX1BBUiBhbm5vdGVkIHBhdHRlcm4gQ0xfUEFSIGFubm90ZWRcbiAgICB7IGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gJDQgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpIH1cbiAgfCBhbGdfZXhwciBpZF9saXN0XG4gICAgeyBsZXQgKHYsXyxfKSA9ICQxIGluICh2LEFzdC5JTklUX1RPSyAkMikgfVxuLypcbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIGluaXRfZGVjbGFyYXRpb24gQ0xfQ1VSIGFubm90ZWRcbiAgICB7IGxldCAoXyxhbGcsaW5pdCkgPSAkNSBpbiAoU29tZSAoJDEscmhzX3BvcyAxKSxhbGcsaW5pdCkgfVxuKi9cbiAgfCBJRCBMQVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh2LF8sXykgPSAkNCBpbiAodixBc3QuSU5JVF9UT0sgWyQxLHJoc19wb3MgMV0pfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpIH1cbiAgO1xuXG52YWx1ZV9saXN0OlxuICB8IFNUUklORyBhbm5vdGVkIHtbJDEsIHJoc19wb3MgMV19XG4gIHwgU1RSSU5HIGFubm90ZWQgdmFsdWVfbGlzdCB7KCQxLHJoc19wb3MgMSk6OiQzfVxuICA7XG5cbm5vbmVtcHR5X3ByaW50X2V4cHI6XG4gIHwgU1RSSU5HIGFubm90ZWRcbiAgICB7IChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgMSAkMSldLGVuZF9wb3MgMSwkMikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmXG4gICAgeyBsZXQgKGEscGVuZCxwKSA9ICQxIGluIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgYV0scGVuZCxwKSB9XG4gIHwgcHJpbnRfZXhwcl9saXN0IHsgJDEgfVxuICB8IE9QX1BBUiBhbm5vdGVkIHByaW50X2V4cHJfbGlzdCBDTF9QQVIgYW5ub3RlZFxuICAgIHsgbGV0ICh2LF8sYW4pID0gJDMgaW4gKHYsZW5kX3BvcyA0LGFuIEAgJDUpIH1cbiAgO1xuXG5wcmludF9leHByX2xpc3Q6XG4gIHwgU1RSSU5HIGFubm90ZWQgRE9UIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwclxuICAgIHsgbGV0IChsLHBlbmQscCkgPSAkNSBpbiAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKCQxLCByaHNfcG9zIDEpOjpsLHBlbmQscCkgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIERPVCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHJcbiAgICB7IGxldCAobCxwZW5kLHApID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciB2OjpsLHBlbmQscCkgfVxuICA7XG5cbnByaW50X2V4cHI6XG4gIHwgYW5ub3RlZCB7IChbXSxzdGFydF9wb3MgMSwkMSkgfVxuICB8IGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwciB7ICQyIH1cbiAgO1xuXG5lZmZlY3Q6XG4gIHwgQVNTSUdOIGFubm90ZWQgSUQgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkNSBpbiAoQXN0LlVQREFURSAoKCQzLHJoc19wb3MgMyksYSkscGVuZCxwKSB9XG4gIHwgQVNTSUdOIGFubm90ZWQgTEFCRUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkNSBpbiAoQXN0LlVQREFURSAoKCQzLHJoc19wb3MgMyksYSkscGVuZCxwKSB9XG4gIHwgVFJBQ0sgYW5ub3RlZCBMQUJFTCBhbm5vdGVkIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgKEFzdC5DRkxPV0xBQkVMICgkNSwoJDMscmhzX3BvcyAzKSksZW5kX3BvcyA1LCQ2KSB9XG4gIHwgVFJBQ0sgYW5ub3RlZCBwYXR0ZXJuIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwYXQsZXBhdCxfKSA9ICQzIGluXG4gICAgICAoQXN0LkNGTE9XTUlYICgkNCwocGF0LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBlcGF0KSksZW5kX3BvcyA0LCAkNSkgfVxuICB8IEZMVVggYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpblxuICAgICAgKChpZiAkNCB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCkgZWxzZSBBc3QuRElOT0ZGIHApLFxuICAgICAgIGVuZF9wb3MgNCwkNSkgfVxuICB8IEZMVVggYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIFNUUklORyBhbm5vdGVkIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpblxuICAgICAgaWYgJDYgJiYgJDQgPSBcImFic29sdXRlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxwKSxlbmRfcG9zIDYsJDcpXG4gICAgICBlbHNlIGlmICQ2ICYmICQ0ID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkscCksZW5kX3BvcyA2LCQ3KVxuICAgICAgZWxzZSBpZiAkNiAmJiAkNCA9IFwicmVsYXRpdmVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApLGVuZF9wb3MgNiwkNylcbiAgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgNCkpIH1cbiAgfCBBUFBMWSBhbm5vdGVkIGFsZ19leHByIHJ1bGVfY29udGVudFxuICAgIHsgbGV0IChyZXdyaXRlLF8scGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgKHsgQXN0LnJld3JpdGU7IEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kKSksXG4gICAgICBwZW5kLGFuXG4gICAgfVxuICB8IElOVFJPIGFubm90ZWQgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0IChtLHBlbmQscCkgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgICBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fY3JlYXRlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgfVxuICB8IElOVFJPIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyBcXFxuJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIH1cbiAgfCBERUxFVEUgYW5ub3RlZCBhbGdfZXhwciBwYXR0ZXJuXG4gICAgeyBsZXQgKG0scGVuZCxwKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQzIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2VyYXNlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSB9XG4gIHwgREVMRVRFIGFubm90ZWQgZXJyb3JcbiAgICAgICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgfVxuICB8IFNOQVBTSE9UIHByaW50X2V4cHIgeyBsZXQgKHMscGVuZCxwKSA9ICQyIGluIChBc3QuU05BUFNIT1QgKGZhbHNlLHMpLHBlbmQscCkgfVxuICB8IFNOQVBTSE9UIHByaW50X2V4cHIgYm9vbGVhbiBhbm5vdGVkIHsgbGV0IChzLF8sXykgPSAkMiBpbiAoQXN0LlNOQVBTSE9UICgkMyxzKSxlbmRfcG9zIDMsJDQpIH1cbiAgfCBTVE9QIHByaW50X2V4cHIgeyBsZXQgKHMscGVuZCxwKSA9ICQyIGluIChBc3QuU1RPUCBzLHBlbmQscCkgfVxuICB8IFBSSU5URiBwcmludF9leHByIEdSRUFURVIgcHJpbnRfZXhwclxuICAgIHsgbGV0IChmLHBlbmQscCkgPSAkNCBpbiBsZXQgKGMsXyxfKSA9ICQyIGluIChBc3QuUFJJTlQgKGYsYykscGVuZCxwKSB9XG4gIHwgUFJJTlRGIHByaW50X2V4cHIgeyBsZXQgKGMscGVuZCxwKSA9ICQyIGluIChBc3QuUFJJTlQgKFtdLGMpLHBlbmQscCkgfVxuICB8IFBMT1RFTlRSWSBhbm5vdGVkIHsgKEFzdC5QTE9URU5UUlksZW5kX3BvcyAxLCQyKSB9XG4gIHwgU1BFQ0lFU19PRiBhbm5vdGVkIHBhdHRlcm4gYm9vbGVhbiBhbm5vdGVkIEdSRUFURVIgcHJpbnRfZXhwclxuICAgIHtcbiAgICAgIGxldCAoZmlsZSxwZW5kLHApID0gJDcgaW5cbiAgICAgIGxldCAocGF0LHBlbmRwLF8pID0gJDMgaW5cbiAgICAgIChBc3QuU1BFQ0lFU19PRiAoJDQsZmlsZSwocGF0LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgcGVuZHApKSxcbiAgICAgICBwZW5kLHApIH1cbiAgO1xuXG5pZGluOlxufCBJRCBhbm5vdGVkIExBUiBhbm5vdGVkIGFsZ19leHByIHtcbiAgIGxldCAodixwZW5kLHApID0gJDUgaW5cbiAgIGxldCB0ayA9ICgkMSxyaHNfcG9zIDEpIGluXG4gICAgKEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAoe0FzdC5yZXdyaXRlID1cbiAgICAgICAgICAgICAgQXN0LkVkaXRcbiAgICAgICAgICAgICAgICAgIHtBc3QubWl4PVtdO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHYsKEFsZ19leHByLlRPS0VOX0lEICQxLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zICA0KSBwZW5kKSkscGVuZCxwKVxuICAgfVxufCBJRCBhbm5vdGVkIExBUiBlcnJvclxuICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICdJRCA8LSBhbGdfZXhwcmVzc2lvbidcIikpIH1cbnwgSUQgZXJyb3JcbiAgICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbiAgIGV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSB9O1xuO1xuXG5lZmZlY3Rfb3JfaWRpbjpcbiAgfCBlZmZlY3QgeyQxfVxuICB8IGlkaW4geyQxfVxuXG5wYXJ0aWFsX2VmZmVjdF9saXN0OlxuICB8IE9QX1BBUiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgQ0xfUEFSIGFubm90ZWQgeyAkMyB9XG4gIHwgZWZmZWN0X29yX2lkaW4gU0VNSUNPTE9OIGFubm90ZWQgeyBsZXQgKGUsXyxfKSA9ICQxIGluIChbZV0sZW5kX3BvcyAyLCQzKSB9XG4gIHwgZWZmZWN0X29yX2lkaW4geyBsZXQgKGUscCxhKSA9ICQxIGluIChbZV0scCxhKSB9XG4gIHwgZWZmZWN0X29yX2lkaW4gU0VNSUNPTE9OIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdFxuICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuXG5wYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluOlxuICAgICAgfCBpZGluIFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICAgICAgfCBpZGluIHsgbGV0IChlLHAsYSkgPSAkMSBpbiAoW2VdLHAsYSkgfVxuICAgICAgfCBpZGluIFNFTUlDT0xPTiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RcbiAgICAgICAgICB7IGxldCAoZSxfLF8pID0gJDEgaW4gbGV0IChsLHBlbmQsYSkgPSAkNCBpbiAoZTo6bCxwZW5kLGEpIH1cblxuZWZmZWN0X2xpc3Q6XG4gIHwgT1BfUEFSIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBDTF9QQVIgYW5ub3RlZCB7ICQzIH1cbiAgfCBPUF9QQVIgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IENMX1BBUiBhbm5vdGVkIFNFTUlDT0xPTiBhbm5vdGVkIHtsZXQgKGUsXyxfKSA9ICAkMyBpbiBlLGVuZF9wb3MgNiwkNyB9XG4gIHwgZWZmZWN0IFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICB8IGVmZmVjdCBTRU1JQ09MT04gYW5ub3RlZCBlZmZlY3RfbGlzdFxuICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuICA7XG5cbnN0YW5kYWxvbmVfZWZmZWN0X2xpc3Q6XG4gIHwgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IEVPRiB7IGxldCAoZSxfLF8pID0gJDIgaW4gZSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiUHJvYmxlbWF0aWMgZWZmZWN0IGxpc3RcIikpIH1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fYWxhcm06XG4gIHwgYW5ub3RlZCB7IE5vbmUgfVxuICB8IGFubm90ZWQgQUxBUk0gYW5ub3RlZCBuYnIgYW5ub3RlZCB7IFNvbWUgJDQgfVxuICB8IGFubm90ZWQgQUxBUk0gZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiYWxhcm0gdGFrZXMgYSBudW1iZXIgYXMgYXJndW1lbnRcIikpIH1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQ6XG4gIHwgUkVQRUFUIGFubm90ZWQgYm9vbF9leHByIHsgbGV0IChiLHBlbmQscCkgPSAkMyBpbiAoU29tZSBiLHBlbmQscCkgfVxuXG5wZXJ0dXJiYXRpb25fcG9zdDpcbiAgfCB7IChOb25lLCBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCksW10pIH1cbiAgfCBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQgeyQxfVxuICA7XG5cbnBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbjpcbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGFubm90ZWQgZWZmZWN0X2xpc3QgcGVydHVyYmF0aW9uX3Bvc3RcbiAgICB7IGxldCAocHJlLF8sXykgPSAkMiBpblxuICAgICAgbGV0IChlLF8sXykgPSAkNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSAkNiBpblxuICAgICAgKCQxLFNvbWUgcHJlLGUscG9zdCkgfVxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBhbm5vdGVkIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyBsZXQgKGUsXyxfKSA9ICQ0IGluIGxldCAocG9zdCxfLF8pID0gJDUgaW4gKCQxLE5vbmUsZSxwb3N0KSB9XG5cbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbiBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWRcbiAgICB7IGxldCAocHJlLF8sXykgPSAkMiBpblxuICAgICAgbGV0IChlLF8sXykgPSAkNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSAkNiBpblxuICAgICAgKCQxLFNvbWUgcHJlLGUscG9zdCkgfVxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4gcGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkXG4gICAgICAgIHsgbGV0IChlLF8sXykgPSAkNCBpblxuICAgICAgICAgIGxldCAocG9zdCxfLF8pID0gJDUgaW5cbiAgICAgICAgICAoJDEsTm9uZSxlLHBvc3QpIH1cbiAgO1xuXG5zZW50ZW5jZTpcbiAgfCBMQUJFTCBhbm5vdGVkIHJ1bGVcbiAgICB7IGFkZCAoQXN0LlJVTEUoU29tZSAoJDEsIHJoc19wb3MgMSksJDMpKSB9XG4gIHwgTEFCRUwgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQ1IGluIGFkZCAoQXN0LkRFQ0xBUkUgKCgkMSxyaHNfcG9zIDEpLHYpKSB9XG4gIHwgcnVsZSB7IGFkZCAoQXN0LlJVTEUgKE5vbmUsJDEpKSB9XG4gIHwgU0lHTkFUVVJFIGFubm90ZWQgYWdlbnRfc2lnIHsgbGV0IChhLF8sXykgPSAkMyBpbiBhZGQgKEFzdC5TSUcgYSkgfVxuICB8IFNJR05BVFVSRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmVcIikpIH1cbiAgfCBUT0tFTiBhbm5vdGVkIElEIGFubm90ZWQgeyBhZGQgKEFzdC5UT0tFTlNJRyAoJDMscmhzX3BvcyAzKSkgfVxuICB8IFBMT1QgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixfLF8pID0gJDMgaW4gYWRkIChBc3QuUExPVCB2KSB9XG4gIHwgUExPVCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDNcbiAgICAgICAgICAgICAgICAgIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIFxcXG5hbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkgfVxuICB8IExFVCBhbm5vdGVkIHZhcmlhYmxlX2RlY2xhcmF0aW9uXG4gICAgeyBsZXQgKGksdixfLF8pID0gJDMgaW4gYWRkIChBc3QuREVDTEFSRSAoaSx2KSkgfVxuICB8IE9CUyBhbm5vdGVkIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHsgbGV0IChpLHYsXyxfKSA9ICQzIGluIGFkZCAoQXN0Lk9CUyAoaSx2KSkgfVxuICB8IElOSVQgYW5ub3RlZCBpbml0X2RlY2xhcmF0aW9uXG4gICAgeyBsZXQgKGFsZyxpbml0KSA9ICQzIGluIGFkZCAoQXN0LklOSVQgKGFsZyxpbml0KSkgfVxuICB8IFBFUlQgcGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uIHsgYWRkIChBc3QuUEVSVCAoJDIsIHJoc19wb3MgMikpIH1cbiAgfCBDT05GSUcgYW5ub3RlZCBTVFJJTkcgYW5ub3RlZCB2YWx1ZV9saXN0XG4gICAgeyBhZGQgKEFzdC5DT05GSUcgKCgkMyxyaHNfcG9zIDMpLCQ1KSkgfVxuICA7XG5cbm1vZGVsX2JvZHk6XG4gIHwgc2VudGVuY2UgbW9kZWxfYm9keSB7ICQyIH1cbiAgfCBFT0YgeyBvdXRwdXQgKCkgfVxuICA7XG5cbm1vZGVsOlxuICB8IGFubm90ZWQgbW9kZWxfYm9keSB7ICQyIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiSW5jb3JyZWN0IGJlZ2lubmluZyBvZiBzZW50ZW5jZSAhISFcIikpIH1cbiAgO1xuXG5pbnRlcmFjdGl2ZV9jb21tYW5kOlxuICB8IGFubm90ZWQgUlVOIGFubm90ZWQgU0VNSUNPTE9OIHsgQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIH1cbiAgfCBhbm5vdGVkIFJVTiBhbm5vdGVkIGJvb2xfZXhwciBTRU1JQ09MT04geyBsZXQgKHBhdXNlLF8sXykgPSAkNCBpbiBBc3QuUlVOIHBhdXNlIH1cbiAgfCBhbm5vdGVkIGVmZmVjdCBTRU1JQ09MT04geyBsZXQgKGVmZixfLF8pID0gJDIgaW4gQXN0Lk1PRElGWSBbZWZmXSB9XG4gIHwgYW5ub3RlZCBFT0YgeyBBc3QuUVVJVCB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpIH1cbiAgO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGFwcGVuZF90b19hc3RfY29tcGlsIHJldl9pbnN0ciBjb21waWwgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gciAtPiBmdW5jdGlvblxuICAgICAgfCBBc3QuUlVMRSBydSAtPiB7IHIgd2l0aCBBc3QucnVsZXMgPSBydSA6OiByLkFzdC5ydWxlcyB9XG4gICAgICB8IEFzdC5TSUcgYWcgLT4geyByIHdpdGggQXN0LnNpZ25hdHVyZXMgPSBhZyA6OiByLkFzdC5zaWduYXR1cmVzIH1cbiAgICAgIHwgQXN0LlRPS0VOU0lHIHN0cl9wb3MgLT4geyByIHdpdGggQXN0LnRva2VucyA9IHN0cl9wb3MgOjogci5Bc3QudG9rZW5zIH1cbiAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsIHZvbCwgdm9sX3BhcmFtKSAtPlxuICAgICAgICB7IHIgd2l0aCBBc3Qudm9sdW1lcyA9ICh2b2xfdHlwZSwgdm9sLCB2b2xfcGFyYW0pIDo6IHIuQXN0LnZvbHVtZXMgfVxuICAgICAgfCBBc3QuSU5JVCAoYWxnLCBpbml0X3QpIC0+XG4gICAgICAgIHsgciB3aXRoIEFzdC5pbml0ID0gKGFsZywgaW5pdF90KSA6OiByLkFzdC5pbml0IH1cbiAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+IHsgciB3aXRoIEFzdC52YXJpYWJsZXMgPSB2YXIgOjogci5Bc3QudmFyaWFibGVzIH1cbiAgICAgIHwgQXN0Lk9CUyAoKChsYmwsIHBvcyksIF8pIGFzIHZhcikgLT5cbiAgICAgICAgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG4gICAgICAgIHtcbiAgICAgICAgICByIHdpdGhcbiAgICAgICAgICBBc3QudmFyaWFibGVzID0gdmFyIDo6IHIuQXN0LnZhcmlhYmxlcztcbiAgICAgICAgICBBc3Qub2JzZXJ2YWJsZXMgPSAoQWxnX2V4cHIuQUxHX1ZBUiBsYmwsIHBvcykgOjogci5Bc3Qub2JzZXJ2YWJsZXM7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LlBMT1QgZXhwciAtPiB7IHIgd2l0aCBBc3Qub2JzZXJ2YWJsZXMgPSBleHByIDo6IHIuQXN0Lm9ic2VydmFibGVzIH1cbiAgICAgIHwgQXN0LlBFUlQgKChhbGFybSwgcHJlLCBlZmZlY3QsIG9wdCksIHBvcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC5wZXJ0dXJiYXRpb25zID1cbiAgICAgICAgICAgICgoYWxhcm0sIHByZSwgZWZmZWN0LCBvcHQpLCBwb3MpIDo6IHIuQXN0LnBlcnR1cmJhdGlvbnM7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSwgdmFsdWVfbGlzdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLCB2YWx1ZV9saXN0KSA6OiByLkFzdC5jb25maWd1cmF0aW9ucztcbiAgICAgICAgfSlcbiAgICBjb21waWwgKExpc3QucmV2IHJldl9pbnN0cilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbntcbm9wZW4gS3BhcnNlcjRcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cbn1cblxubGV0IGVvbCA9ICdcXHInPyAnXFxuJ1xubGV0IGJsYW5rID0gWycgJyAnXFx0J11cbmxldCBpbnRlZ2VyID0gWycwJy0nOSddK1xubGV0IHJlYWwgPVxuICAoWycwJy0nOSddKyBbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKSB8XG4gICgoKFsnMCctJzknXSsgJy4nIFsnMCctJzknXSopIHwgKCcuJyBbJzAnLSc5J10rKSlcbiAgICAoWydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKyk/KVxubGV0IGlkID0gWydfJyAnfiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJ34nICctJyAnKyddKyB8XG4gICAgICAgICBbJ2EnLSd6JyAnQSctJ1onXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICd+JyAnLScgJysnXSpcblxucnVsZSB0b2tlbiA9IHBhcnNlXG4gIHwgJy8nICcvJyAoW14nXFxyJydcXG4nXSogYXMgcykgKGVvbCB8IGVvZikge0xleGluZy5uZXdfbGluZSBsZXhidWY7IENPTU1FTlQgc31cbiAgfCAnLycgJyonIHtDT01NRU5UIChpbmxpbmVfY29tbWVudCBbXSBsZXhidWYpfVxuICB8IGVvbCB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IE5FV0xJTkUgfVxuICB8IGJsYW5rICsgYXMgeCB7IFNQQUNFIHggfVxuICB8ICcjJyB7IFNIQVJQIH1cbiAgfCBcIiYmXCIgeyBBTkQgfVxuICB8IFwifHxcIiB7IE9SIH1cbiAgfCBcIjwtPlwiIHsgTFJBUiB9XG4gIHwgXCI8LVwiIHtMQVJ9XG4gIHwgXCItPlwiIHsgUkFSIH1cbiAgfCBcIjw+XCIgeyBESUZGIH1cbiAgfCAnOicgeyBDT0xPTiB9XG4gIHwgJzsnIHsgU0VNSUNPTE9OIH1cbiAgfCAnQCcgeyBBVCB9XG4gIHwgJywnIHsgQ09NTUEgfVxuICB8ICdcXFxcJyB7QkFDS1NMQVNIfVxuICB8ICcoJyB7IE9QX1BBUiB9XG4gIHwgJyknIHsgQ0xfUEFSIH1cbiAgfCAnWycgeyBPUF9CUkEgfVxuICB8ICddJyB7IENMX0JSQSB9XG4gIHwgJ3snIHsgT1BfQ1VSIH1cbiAgfCAnfScgeyBDTF9DVVIgfVxuICB8ICd8JyB7IFBJUEUgfVxuICB8ICcuJyB7IERPVCB9XG4gIHwgJ18nIHsgVU5ERVJTQ09SRSB9XG4gIHwgJysnIHsgUExVUyB9XG4gIHwgJyonIHsgTVVMVCB9XG4gIHwgJy0nIHsgTUlOVVMgfVxuICB8ICdeJyB7IFBPVyB9XG4gIHwgJy8nIHsgRElWIH1cbiAgfCAnPCcgeyBTTUFMTEVSIH1cbiAgfCAnPicgeyBHUkVBVEVSIH1cbiAgfCAnPScgeyBFUVVBTCB9XG4gIHwgaW50ZWdlciBhcyBuIHsgSU5UIChpbnRfb2Zfc3RyaW5nIG4pIH1cbiAgfCByZWFsIGFzIGYgeyBGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpIH1cbiAgfCAnXFwnJyAoW14nXFxuJyAnXFwnJ10rIGFzIHgpICdcXCcneyBMQUJFTCh4KSB9XG4gIHwgJ1xcXCInIChbXidcXG4nICdcXFwiJ10qIGFzIHgpICdcXFwiJ3sgU1RSSU5HKHgpIH1cbiAgfCAnXFwnJyAoW14nXFxuJyAnXFwnJ10rIGFzIHMpIChlb2YgfCAnXFxuJylcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIGxhYmVsOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgJ1xcXCInIChbXidcXG4nICdcXFwiJ10rIGFzIHMpIChlb2YgfCAnXFxuJylcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZzogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8IGlkIGFzIHN0ciB7IGtleXdvcmRfb3JfaWQgc3RyIH1cbiAgfCAnJScgKGlkIGFzIGxhYikgJzonIHtcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuICAgIHwgXCJpbml0XCIgLT4gSU5JVFxuICAgIHwgXCJ2YXJcIiAtPiBMRVRcbiAgICB8IFwicGxvdFwiIC0+IFBMT1RcbiAgICB8IFwibW9kXCIgLT4gUEVSVFxuICAgIHwgXCJvYnNcIiAtPiBPQlNcbiAgICB8IFwiZGVmXCIgLT4gQ09ORklHXG4gICAgfCBcInRva2VuXCIgLT4gVE9LRU5cbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gZGlyZWN0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICB9XG4gIHwgJ1snIGJsYW5rKiAnPycgYmxhbmsqICddJyB7IFRIRU4gfVxuICB8ICdbJyBibGFuayogJzonIGJsYW5rKiAnXScgeyBFTFNFIH1cbiAgfCAnWycgYmxhbmsqIChpZCBhcyBsYWIpIGJsYW5rKiAnXScge1xuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcIkVcIiAtPiBFVkVOVFxuICAgIHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcbiAgICB8IFwiVFwiIC0+IFRJTUVcbiAgICB8IFwiVHNpbVwiIC0+IENQVVRJTUVcbiAgICB8IFwibG9nXCIgLT4gTE9HXG4gICAgfCBcInNpblwiIC0+IFNJTlVTXG4gICAgfCBcImNvc1wiIC0+IENPU0lOVVNcbiAgICB8IFwidGFuXCIgLT4gVEFOXG4gICAgfCBcImV4cFwiIC0+IEVYUE9ORU5UXG4gICAgfCBcImludFwiIC0+IEFCU1xuICAgIHwgXCJtb2RcIiAtPiBNT0RcbiAgICB8IFwic3FydFwiIC0+IFNRUlRcbiAgICB8IFwidHJ1ZVwiIC0+IFRSVUVcbiAgICB8IFwiZmFsc2VcIiAtPiBGQUxTRVxuICAgIHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuICAgIHwgXCJtYXhcIiAtPiBNQVhcbiAgICB8IFwibWluXCIgLT4gTUlOXG4gICAgfCBcIkVtYXhcIiAtPiBFTUFYXG4gICAgfCBcIlRtYXhcIiAtPiBUTUFYXG4gICAgfCBcIm5vdFwiIC0+IE5PVFxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBwcmltaXRpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCAnJCcgKGlkIGFzIHMpIHtcbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFwiQVBQTFlcIiAtPiBBUFBMWVxuICAgIHwgXCJERUxcIiAtPiBERUxFVEVcbiAgICB8IFwiQUREXCIgLT4gSU5UUk9cbiAgICB8IFwiU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuICAgIHwgXCJTVE9QXCIgLT4gU1RPUFxuICAgIHwgXCJESU5cIiAtPiBGTFVYXG4gICAgfCBcIlRSQUNLXCIgLT4gVFJBQ0tcbiAgICB8IFwiVVBEQVRFXCIgLT4gQVNTSUdOXG4gICAgfCBcIlBSSU5UXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBSSU5URlwiIC0+IFBSSU5URlxuICAgIHwgXCJQTE9URU5UUllcIiAtPiBQTE9URU5UUllcbiAgICB8IFwiUlVOXCIgLT4gUlVOXG4gICAgfCBcIlNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG4gICAgfCBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBpbnRlcnZlbnRpb246IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCBlb2YgeyBsZXhidWYuTGV4aW5nLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyBFT0YgfVxuICB8IF8gYXMgYyB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBjaGFyYWN0ZXI6IFwiXlN0cmluZy5tYWtlIDEgYyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpIH1cblxuYW5kIGlubGluZV9jb21tZW50IGFjYyA9IHBhcnNlXG4gIHwgKFteJ1xcbicgJyonICdcXFwiJyAnLyddICopIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgnLycgJy8nIFteJ1xccicnXFxuJ10qIGFzIHgpIGVvbFxuICAgIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCBlb2wgYXMgeCB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCcqJyBbXicvJyAnXFxuJyAnXFxcIiddKSBhcyB4IHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoJy8nIFteJyonICdcXG4nICdcXFwiJ10pIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICcqJyAnLycgeyBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgfVxuICB8IGVvZiB7IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSB9XG4gIHwgJyonICdcXG4nIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiKlxcblwiOjphY2MpIGxleGJ1ZiB9XG4gIHwgKCgnKicgfCAnLycpPyAnXFxcIicgW14nXFxuJyAnXFxcIiddKyAnXFxcIicpIGFzIHhcbiAgICB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCgnKicgfCAnLycpPyAnXFxcIicgW14nXFxuJyAnXFxcIiddKyAoZW9mIHwgJ1xcbicpKSBhcyB4XG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmcgaW4gY29tbWVudDogXCJeeCxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8ICcvJyAnKidcbiAgICB7IGlubGluZV9jb21tZW50IChcIiovXCI6OihpbmxpbmVfY29tbWVudCBbXCIvKlwiXSBsZXhidWYpOjogYWNjKSBsZXhidWYgfVxuICB8ICcvJyAnXFxuJyB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIi9cXG5cIjo6YWNjKSBsZXhidWYgfVxuXG5hbmQgcmVjb3ZlcnkgPSBwYXJzZVxuICB8IFteJ1xccicnXFxuJ10qIChlb2wgfCBlb2YpIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmfVxuXG57XG4gIGxldCByZWMgYXV4X21vZGVsIGVyciBsZXggPVxuICB0cnkgbGV0IG91dCA9IEtwYXJzZXI0Lm1vZGVsIHRva2VuIGxleCBpbiAob3V0LCBMaXN0LnJldiBlcnIpXG4gIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgZSAtPlxuICAgIGxldCAoKSA9IHJlY292ZXJ5IGxleCBpblxuICAgIGF1eF9tb2RlbCAoZTo6ZXJyKSBsZXhcblxuICBsZXQgbW9kZWwgbGV4ID0gYXV4X21vZGVsIFtdIGxleFxuXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmljID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmljIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAge2xleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCB3aXRoIExleGluZy5wb3NfZm5hbWUgPSBmaWN9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpYyA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmljIGluXG4gICAgbGV0IChvdXQsZXJyKSA9IG1vZGVsIGxleGJ1ZiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgbGV0ICgpID0gbWF0Y2ggZXJyIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgKG1zZyxwb3MpOjpfIC0+XG4gICAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICAgIGV4aXQgMyBpblxuICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICBDc3QuYXBwZW5kX3RvX2FzdF9jb21waWwgb3V0IGNvbXBpbFxufVxuIiwiIyA5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiBcbm9wZW4gS3BhcnNlcjRcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cblxuIyAxNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIwOVxcMjU1XFwyMTBcXDI1NVxcMDYyXFwwMDBcXDEyNFxcMDAwXFwyMDlcXDAwMFxcMDMzXFwwMDFcXDIzN1xcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxMTJcXDAwMVxcMjIzXFwyNTVcXDIyNFxcMjU1XFwyMjdcXDI1NVxcMjI5XFwyNTVcXDIzMFxcMjU1XFwxNzNcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMjM0XFwyNTVcXDIzNVxcMjU1XFwyMzZcXDI1NVxcMDMxXFwwMDJcXDIzOFxcMjU1XFwyMzlcXDI1NVxcMjQwXFwyNTVcXFxuICAgIFxcMjQxXFwyNTVcXDI0MlxcMjU1XFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMDI5XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDI1MVxcMjU1XFwyNDBcXDAwMFxcMjUzXFwyNTVcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMjU0XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMjUwXFwyNTVcXDI0OVxcMjU1XFwyNDVcXDI1NVxcMDkyXFwwMDBcXDI0OFxcMjU1XFwyNDZcXDI1NVxcMTQ1XFwwMDJcXFxuICAgIFxcMjI1XFwwMDJcXDE3MVxcMDAxXFwwMzJcXDAwMlxcMDgzXFwwMDNcXDIxNFxcMjU1XFwyMTNcXDI1NVxcMTk3XFwwMDNcXDIxMlxcMjU1XFxcbiAgICBcXDA2M1xcMDAyXFwwNzNcXDAwM1xcMjU1XFwwMDFcXDE0NFxcMDAxXFwwMjVcXDAwMlxcMDIxXFwwMDRcXDEwMFxcMDA0XFwxMTVcXDAwMlxcXG4gICAgXFwxMzBcXDAwMlxcMDQ4XFwwMDNcXDE3N1xcMDAwXFwyMThcXDI1NVxcMjIwXFwyNTVcXDIxOVxcMjU1XFwwODNcXDAwM1xcMjE3XFwyNTVcXFxuICAgIFxcMTM3XFwwMDRcXDIxN1xcMDA0XFwwNDFcXDAwNVxcMjE1XFwyNTVcXDEyMVxcMDA1XFwyMDFcXDAwNVxcMDI1XFwwMDZcXDE5N1xcMDAzXFxcbiAgICBcXDA4NFxcMDAzXFwyNDlcXDI1NVxcMTM0XFwwMDRcXDI1M1xcMjU1XFwxMzhcXDAwNlxcMTM5XFwwMDZcXDE0MFxcMDA2XFwyNDRcXDI1NVxcXG4gICAgXFwyNDVcXDI1NVxcMjUxXFwyNTVcXDAxM1xcMDAwXFwyNTRcXDI1NVxcMDA0XFwwMDBcXDAxN1xcMDAwXFwyNDhcXDI1NVxcMjUwXFwyNTVcXFxuICAgIFxcMjUyXFwyNTVcXDE5OFxcMDAzXFwyNDZcXDI1NVxcMjQ3XFwyNTVcXDIwN1xcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDAzOVxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMjJcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzlcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODVcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM5XFwwMDBcXDAzNVxcMDAwXFwwOTFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMzJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMVxcMDAwXFwwMTNcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMjhcXDAwMFxcMDE2XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAyN1xcMDAwXFwwMjZcXDAwMFxcMDI5XFwwMDBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMTlcXDAwMFxcMDEyXFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAxOFxcMDAwXFwwMzBcXDAwMFxcMDE3XFwwMDBcXDAwNlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDQyXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY3XFwwMDBcXDA3N1xcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA2OFxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwxMDJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzdcXDAwMFxcMDMzXFwwMDBcXDA3M1xcMDAwXFwwNDRcXDAwMFxcMDA1XFwwMDBcXDAzOFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAzOVxcMDAwXFwwNDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDYzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNDhcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1MVxcMDAwXFwwNzFcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTZcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMDk4XFwwMDBcXDA0OFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDk1XFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDk4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4M1xcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDkwXFwwMDBcXFxuICAgIFxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMzBcXDAwMFxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwNjZcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDEwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAzNlxcMDAwXFwwMzNcXDAwMFxcMDA0XFwwMDBcXDAyOVxcMDAwXFwwMDVcXDAwMFxcMDM2XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDM4XFwwMDBcXDAyOVxcMDAwXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwOTNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA4XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwMDlcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDA1MFxcMDAwXFwwNThcXDAwMFxcMDE1XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA1NlxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcXG4gICAgXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDU2XFwwMDBcXDAyMFxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDUxXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA3MFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDUxXFwwMDBcXDA3OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzlcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwODJcXDAwMFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAwXFwwODJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAyXFwwMDFcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDM4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDkzXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA4NFxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDQ4XFwwMDBcXDA2NlxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcXDI1NVxcMDAyXFwyNTVcXDI1NVxcMDA2XFwyNTVcXDI1NVxcMDA1XFwyNTVcXDI1NVxcMDA0XFwyNTVcXDI1NVxcMDAzXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwM1xcMjU1XFwwMDBcXDAwMlxcMDAxXFwwMDRcXDI1NVxcMDAwXFwwMDVcXDI1NVxcMDAwXFwwMDZcXDI1NVxcMDAxXFwyNTVcXFxuICAgIFxcMjU1XFwwMDBcXDAwMVxcMjU1XCI7XG59XG5cbmxldCByZWMgdG9rZW4gbGV4YnVmID1cbiAgbGV4YnVmLkxleGluZy5sZXhfbWVtIDwtIEFycmF5Lm1ha2UgNyAoLTEpOyBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLm5ld19lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzNSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgNzU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgMzUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgQ09NTUVOVCBzKVxuIyA3NjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgIChDT01NRU5UIChpbmxpbmVfY29tbWVudCBbXSBsZXhidWYpKVxuIyA3NjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBORVdMSU5FIClcbiMgNzczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMyAtPlxubGV0XG4jIDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIHhcbiMgNzc5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBTUEFDRSB4IClcbiMgNzgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNCAtPlxuIyAzOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU0hBUlAgKVxuIyA3ODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggQU5EIClcbiMgNzkzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNiAtPlxuIyA0MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIE9SIClcbiMgNzk4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNyAtPlxuIyA0MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgKCBMUkFSIClcbiMgODAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgOCAtPlxuIyA0MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoTEFSKVxuIyA4MDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA5IC0+XG4jIDQ0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggUkFSIClcbiMgODEzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNDUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBESUZGIClcbiMgODE4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNDYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENPTE9OIClcbiMgODIzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTIgLT5cbiMgNDcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNFTUlDT0xPTiApXG4jIDgyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEzIC0+XG4jIDQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBBVCApXG4jIDgzMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE0IC0+XG4jIDQ5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDT01NQSApXG4jIDgzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE1IC0+XG4jIDUwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgIChCQUNLU0xBU0gpXG4jIDg0MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE2IC0+XG4jIDUxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBPUF9QQVIgKVxuIyA4NDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA1MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ0xfUEFSIClcbiMgODUzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTggLT5cbiMgNTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE9QX0JSQSApXG4jIDg1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE5IC0+XG4jIDU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDTF9CUkEgKVxuIyA4NjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMCAtPlxuIyA1NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggT1BfQ1VSIClcbiMgODY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjEgLT5cbiMgNTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENMX0NVUiApXG4jIDg3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIyIC0+XG4jIDU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQSVBFIClcbiMgODc4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjMgLT5cbiMgNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIERPVCApXG4jIDg4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI0IC0+XG4jIDU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBVTkRFUlNDT1JFIClcbiMgODg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjUgLT5cbiMgNjAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBMVVMgKVxuIyA4OTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNiAtPlxuIyA2MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggTVVMVCApXG4jIDg5OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI3IC0+XG4jIDYyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBNSU5VUyApXG4jIDkwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI4IC0+XG4jIDYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQT1cgKVxuIyA5MDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyOSAtPlxuIyA2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggRElWIClcbiMgOTEzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzAgLT5cbiMgNjUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNNQUxMRVIgKVxuIyA5MTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMSAtPlxuIyA2NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggR1JFQVRFUiApXG4jIDkyMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMyIC0+XG4jIDY3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBFUVVBTCApXG4jIDkyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMzIC0+XG5sZXRcbiMgNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgblxuIyA5MzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIElOVCAoaW50X29mX3N0cmluZyBuKSApXG4jIDkzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM0IC0+XG5sZXRcbiMgNjkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgZlxuIyA5NDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNjkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAoIEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikgKVxuIyA5NDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzNSAtPlxubGV0XG4jIDcwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgOTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA3MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMQUJFTCh4KSApXG4jIDk1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM2IC0+XG5sZXRcbiMgNzEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA5NjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDcxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNUUklORyh4KSApXG4jIDk2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM3IC0+XG5sZXRcbiMgNzIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA5NzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyA3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBsYWJlbDogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyA5ODEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzOCAtPlxubGV0XG4jIDc3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgOTg3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgNzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDk5NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM5IC0+XG5sZXRcbiMgODIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgIHN0clxuIyAxMDAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDgyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgKCBrZXl3b3JkX29yX2lkIHN0ciApXG4jIDEwMDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MCAtPlxubGV0XG4jIDgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIGxhYlxuIyAxMDEwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcbiAgICB8IFwiaW5pdFwiIC0+IElOSVRcbiAgICB8IFwidmFyXCIgLT4gTEVUXG4gICAgfCBcInBsb3RcIiAtPiBQTE9UXG4gICAgfCBcIm1vZFwiIC0+IFBFUlRcbiAgICB8IFwib2JzXCIgLT4gT0JTXG4gICAgfCBcImRlZlwiIC0+IENPTkZJR1xuICAgIHwgXCJ0b2tlblwiIC0+IFRPS0VOXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGRpcmVjdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMDI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDEgLT5cbiMgOTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUSEVOIClcbiMgMTAzMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQyIC0+XG4jIDk5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRUxTRSApXG4jIDEwMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MyAtPlxubGV0XG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiXG4jIDEwNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMSkgaW5cbiMgMTAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcIkVcIiAtPiBFVkVOVFxuICAgIHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcbiAgICB8IFwiVFwiIC0+IFRJTUVcbiAgICB8IFwiVHNpbVwiIC0+IENQVVRJTUVcbiAgICB8IFwibG9nXCIgLT4gTE9HXG4gICAgfCBcInNpblwiIC0+IFNJTlVTXG4gICAgfCBcImNvc1wiIC0+IENPU0lOVVNcbiAgICB8IFwidGFuXCIgLT4gVEFOXG4gICAgfCBcImV4cFwiIC0+IEVYUE9ORU5UXG4gICAgfCBcImludFwiIC0+IEFCU1xuICAgIHwgXCJtb2RcIiAtPiBNT0RcbiAgICB8IFwic3FydFwiIC0+IFNRUlRcbiAgICB8IFwidHJ1ZVwiIC0+IFRSVUVcbiAgICB8IFwiZmFsc2VcIiAtPiBGQUxTRVxuICAgIHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuICAgIHwgXCJtYXhcIiAtPiBNQVhcbiAgICB8IFwibWluXCIgLT4gTUlOXG4gICAgfCBcIkVtYXhcIiAtPiBFTUFYXG4gICAgfCBcIlRtYXhcIiAtPiBUTUFYXG4gICAgfCBcIm5vdFwiIC0+IE5PVFxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBwcmltaXRpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIClcbiMgMTA3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQ0IC0+XG5sZXRcbiMgMTI3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIHNcbiMgMTA4MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgXCJBUFBMWVwiIC0+IEFQUExZXG4gICAgfCBcIkRFTFwiIC0+IERFTEVURVxuICAgIHwgXCJBRERcIiAtPiBJTlRST1xuICAgIHwgXCJTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG4gICAgfCBcIlNUT1BcIiAtPiBTVE9QXG4gICAgfCBcIkRJTlwiIC0+IEZMVVhcbiAgICB8IFwiVFJBQ0tcIiAtPiBUUkFDS1xuICAgIHwgXCJVUERBVEVcIiAtPiBBU1NJR05cbiAgICB8IFwiUFJJTlRcIiAtPiBQUklOVEZcbiAgICB8IFwiUFJJTlRGXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICAgIHwgXCJSVU5cIiAtPiBSVU5cbiAgICB8IFwiU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0ZcbiAgICB8IHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGludGVydmVudGlvbjogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMTAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDUgLT5cbiMgMTQ3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBsZXhidWYuTGV4aW5nLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyBFT0YgKVxuIyAxMTA4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDYgLT5cbmxldFxuIyAxNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgY1xuIyAxMTE0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gY2hhcmFjdGVyOiBcIl5TdHJpbmcubWFrZSAxIGMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSApXG4jIDExMjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGlubGluZV9jb21tZW50IGFjYyBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSAyICgtMSk7IF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBhY2MgbGV4YnVmIDc5XG5hbmQgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTEzNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTEzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyAxNTUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyAxNTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICB4XG4jIDExNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgaW5cbiMgMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGluXG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE3OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDUgLT5cbiMgMTYwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICggU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIClcbiMgMTE4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDYgLT5cbiMgMTYxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgKVxuIyAxMTg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNyAtPlxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiKlxcblwiOjphY2MpIGxleGJ1ZiApXG4jIDExOTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA4IC0+XG5sZXRcbiMgMTYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExOTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDEyMDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA5IC0+XG5sZXRcbiMgMTY1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTIwOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGluIGNvbW1lbnQ6IFwiXngsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgMTIxNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEwIC0+XG4jIDE3MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCBpbmxpbmVfY29tbWVudCAoXCIqL1wiOjooaW5saW5lX2NvbW1lbnQgW1wiLypcIl0gbGV4YnVmKTo6IGFjYykgbGV4YnVmIClcbiMgMTIyMSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDExIC0+XG4jIDE3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIvXFxuXCI6OmFjYykgbGV4YnVmIClcbiMgMTIyNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlY292ZXJ5IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIDEwMFxuYW5kIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmKVxuIyAxMjM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTc3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiBcbiAgbGV0IHJlYyBhdXhfbW9kZWwgZXJyIGxleCA9XG4gIHRyeSBsZXQgb3V0ID0gS3BhcnNlcjQubW9kZWwgdG9rZW4gbGV4IGluIChvdXQsIExpc3QucmV2IGVycilcbiAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciBlIC0+XG4gICAgbGV0ICgpID0gcmVjb3ZlcnkgbGV4IGluXG4gICAgYXV4X21vZGVsIChlOjplcnIpIGxleFxuXG4gIGxldCBtb2RlbCBsZXggPSBhdXhfbW9kZWwgW10gbGV4XG5cbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWMgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWMgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICB7bGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIHdpdGggTGV4aW5nLnBvc19mbmFtZSA9IGZpY30gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmljIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWMgaW5cbiAgICBsZXQgKG91dCxlcnIpID0gbW9kZWwgbGV4YnVmIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICBsZXQgKCkgPSBtYXRjaCBlcnIgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCAobXNnLHBvcyk6Ol8gLT5cbiAgICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgICAgZXhpdCAzIGluXG4gICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgIENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBvdXQgY29tcGlsXG5cbiMgMTI3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgaXRlbSA9IHsgcmFuazogaW50OyBjb250ZW50OiBzdHJpbmcgfVxuXG50eXBlIGNhdGFsb2cgPSB7XG4gIGVsZW1lbnRzOiAoc3RyaW5nLCBpdGVtKSBIYXNodGJsLnQ7XG4gIGluZGV4OiBzdHJpbmcgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgYXN0OiBBc3QucGFyc2luZ19jb21waWwgb3B0aW9uIHJlZjtcbn1cblxudHlwZSBjYXRhbG9nX2l0ZW0gPSB7IHBvc2l0aW9uOiBpbnQ7IGlkOiBzdHJpbmcgfVxuXG5sZXQgd3JpdGVfY2F0YWxvZ19pdGVtIG9iIHsgcG9zaXRpb247IGlkIH0gPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiaWRcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIGlkIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicG9zaXRpb25cIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIHBvc2l0aW9uIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfY2F0YWxvZ19pdGVtIHAgbGIgPVxuICBsZXQgcG9zaXRpb24sIGlkLCBjb3VudCA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChwb3MsIGksIGMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwicG9zaXRpb25cIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIsIGksIHN1Y2MgY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwiaWRcIikgaW5cbiAgICAgICAgICBwb3MsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzdWNjIGNcbiAgICAgICAgKSlcbiAgICAgICgtMSwgXCJcIiwgMCkgcCBsYlxuICBpblxuICBsZXQgKCkgPSBhc3NlcnQgKGNvdW50ID0gMikgaW5cbiAgeyBwb3NpdGlvbjsgaWQgfVxuXG5sZXQgY3JlYXRlICgpID1cbiAge1xuICAgIGVsZW1lbnRzID0gSGFzaHRibC5jcmVhdGUgMTtcbiAgICBpbmRleCA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDEgTm9uZTtcbiAgICBhc3QgPSByZWYgTm9uZTtcbiAgfVxuXG5sZXQgcHV0IH5wb3NpdGlvbjpyYW5rIH5pZCB+Y29udGVudCBjYXRhbG9nID1cbiAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGNhdGFsb2cuZWxlbWVudHMgaWQgeyByYW5rOyBjb250ZW50IH0gaW5cbiAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgY2F0YWxvZy5pbmRleCByYW5rIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIChTb21lIGlkKSBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcbiAgfCBTb21lIGFpZSAtPlxuICAgIFJlc3VsdC5FcnJvclxuICAgICAgKFwiU2xvdCBcIiBeIHN0cmluZ19vZl9pbnQgcmFuayBeIFwiIGlzIG5vdCBhdmFpbGFibGUuIFRoZXJlIGlzIGFscmVhZHkgXCJcbiAgICAgXiBhaWUpXG5cbmxldCBmaWxlX2NyZWF0ZSB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2cgPVxuICBpZiBIYXNodGJsLm1lbSBjYXRhbG9nLmVsZW1lbnRzIGlkIHRoZW5cbiAgICBSZXN1bHQuRXJyb3JcbiAgICAgIChcIkEgZmlsZSBjYWxsZWQgXFxcIlwiIF4gaWQgXiBcIlxcXCIgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBjYXRhbG9nXCIpXG4gIGVsc2VcbiAgICBwdXQgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG5cbmxldCBmaWxlX21vdmUgfnBvc2l0aW9uIH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiTWlzc2luZyBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGluIHRoZSBjYXRhbG9nXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiRmlsZSBjYXRhbG9nIGhhcyBzZXJpb3VzIHByb2JsZW1zXCJcbiAgfCBbIHsgcmFuazsgY29udGVudCB9IF0gLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgTm9uZSBpblxuICAgIHB1dCB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcblxubGV0IGZpbGVfcGF0Y2ggfmlkIGNvbnRlbnQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIlVua25vd24gZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIlwiKVxuICB8IF8gOjogXyA6OiBfIC0+IFJlc3VsdC5FcnJvciBcIlNlcmlvdXMgcHJvYmxlbXMgaW4gZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgXyB9IF0gLT5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgY2F0YWxvZy5lbGVtZW50cyBpZCB7IHJhbms7IGNvbnRlbnQgfSBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcblxubGV0IGZpbGVfZGVsZXRlIH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiTm8gZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIlwiKVxuICB8IF8gOjogXyA6OiBfIC0+IGZhaWx3aXRoIFwiQmlnIHRyb3VibGVzIGluIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IF8gfSBdIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlbW92ZSBjYXRhbG9nLmVsZW1lbnRzIGlkIGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuXG5sZXQgZmlsZV9nZXQgfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJGaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGRvZXMgbm90IGV4aXN0XCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiQ29ycnVwdGVkIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IGNvbnRlbnQgfSBdIC0+IFJlc3VsdC5PayAoY29udGVudCwgcmFuaylcblxubGV0IGNhdGFsb2cgY2F0YWxvZyA9XG4gIE1vZHMuRHluQXJyYXkuZm9sZF9yaWdodGlcbiAgICAoZnVuIHBvc2l0aW9uIHggYWNjIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSBpZCAtPiB7IHBvc2l0aW9uOyBpZCB9IDo6IGFjYylcbiAgICBjYXRhbG9nLmluZGV4IFtdXG5cbmxldCBwYXJzZSB5aWVsZCBjYXRhbG9nID1cbiAgbWF0Y2ggIShjYXRhbG9nLmFzdCkgd2l0aFxuICB8IFNvbWUgY29tcGlsZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBjb21waWxlKVxuICB8IE5vbmUgLT5cbiAgICBNb2RzLkR5bkFycmF5LmZvbGRfcmlnaHRpXG4gICAgICAoZnVuIF8geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZmlsZSA9IEhhc2h0YmwuZmluZCBjYXRhbG9nLmVsZW1lbnRzIHggaW5cbiAgICAgICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGZpbGUuY29udGVudCBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAgICAgICAgeyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3Agd2l0aCBMZXhpbmcucG9zX2ZuYW1lID0geCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhY2MgPj49IGZ1biAoY29tcGlsZSwgZXJyKSAtPlxuICAgICAgICAgIGxldCBjb21waWxlID1cbiAgICAgICAgICAgIHsgY29tcGlsZSB3aXRoIEFzdC5maWxlbmFtZXMgPSB4IDo6IGNvbXBpbGUuQXN0LmZpbGVuYW1lcyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QuY2F0Y2hcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LndyYXAxIEtsZXhlcjQubW9kZWwgbGV4YnVmID4+PSBmdW4gKGluc3RzLCBlcnInKSAtPlxuICAgICAgICAgICAgICB5aWVsZCAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBpbnN0cyBjb21waWxlLCBlcnInIEAgZXJyKSlcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSlcbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChtZXNzYWdlLCByYW5nZSlcbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChjb21waWxlLCAobWVzc2FnZSwgcmFuZ2UpIDo6IGVycilcbiAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgKCBjb21waWxlLFxuICAgICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoXCJSdW50aW1lIGVycm9yIFwiIF4gZXJyb3IpIDo6IGVyciApXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBQcmludGV4Yy50b19zdHJpbmcgZXhuIGluXG4gICAgICAgICAgICAgICAgTHd0LnJldHVybiAoY29tcGlsZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgbWVzc2FnZSA6OiBlcnIpKSlcbiAgICAgIGNhdGFsb2cuaW5kZXhcbiAgICAgIChMd3QucmV0dXJuIChBc3QuZW1wdHlfY29tcGlsLCBbXSkpXG4gICAgPj49ICggZnVuY3Rpb25cbiAgICB8IGNvbXBpbGUsIFtdIC0+XG4gICAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBTb21lIGNvbXBpbGUgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGNvbXBpbGUpXG4gICAgfCBfLCBlcnIgLT5cbiAgICAgIGxldCBlcnIgPVxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gKCh0ZXh0LCBwKSBhcyB4KSAtPlxuICAgICAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICAgICAgaWYgTG9jLmlzX2Fubm90ZWRfd2l0aF9kdW1teSB4IHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBTb21lIHBcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjsgcmFuZ2U7IHRleHQgfSlcbiAgICAgICAgICBlcnJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlcnIpIClcblxubGV0IG92ZXJ3cml0ZSBmaWxlbmFtZSBhc3QgY2F0YWxvZyA9XG4gIGxldCBjb250ZW50ID0gRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBBc3QucHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEgYXN0IGluXG4gIGxldCBpdCA9IHsgcmFuayA9IDA7IGNvbnRlbnQgfSBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlc2V0IGNhdGFsb2cuZWxlbWVudHMgaW5cbiAgbGV0ICgpID0gSGFzaHRibC5hZGQgY2F0YWxvZy5lbGVtZW50cyBmaWxlbmFtZSBpdCBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSBfIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggaSBOb25lKVxuICAgICAgY2F0YWxvZy5pbmRleFxuICBpblxuICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IDAgKFNvbWUgZmlsZW5hbWUpIGluXG4gIGNhdGFsb2cuYXN0IDo9IFNvbWUgYXN0XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBFT0ZcbiAgfCBORVdMSU5FXG4gIHwgU0VNSUNPTE9OXG4gIHwgQ09NTUFcbiAgfCBET1RcbiAgfCBPUF9QQVJcbiAgfCBDTF9QQVJcbiAgfCBPUF9DVVJcbiAgfCBDTF9DVVJcbiAgfCBBVFxuICB8IFRZUEVcbiAgfCBMQVJcbiAgfCBDUFVUSU1FXG4gIHwgRU1BWFxuICB8IFRNQVhcbiAgfCBQTE9URU5UUllcbiAgfCBERUxFVEVcbiAgfCBJTlRST1xuICB8IFRSQUNLXG4gIHwgRE9cbiAgfCBTRVRcbiAgfCBSRVBFQVRcbiAgfCBTUEVDSUVTX09GXG4gIHwgVU5USUxcbiAgfCBMT0dcbiAgfCBQTFVTXG4gIHwgTVVMVFxuICB8IE1JTlVTXG4gIHwgTUFYXG4gIHwgTUlOXG4gIHwgRElWXG4gIHwgU0lOVVNcbiAgfCBDT1NJTlVTXG4gIHwgVEFOXG4gIHwgUE9XXG4gIHwgQUJTXG4gIHwgTU9EVUxPXG4gIHwgU1FSVFxuICB8IEVYUE9ORU5UXG4gIHwgSU5GSU5JVFlcbiAgfCBUSU1FXG4gIHwgRVZFTlRcbiAgfCBOVUxMX0VWRU5UXG4gIHwgUElQRVxuICB8IEVRVUFMXG4gIHwgQU5EXG4gIHwgT1JcbiAgfCBOT1RcbiAgfCBHUkVBVEVSXG4gIHwgU01BTExFUlxuICB8IFRSVUVcbiAgfCBGQUxTRVxuICB8IERJRkZcbiAgfCBLQVBQQV9SQVJcbiAgfCBLQVBQQV9MUkFSXG4gIHwgS0FQUEFfTE5LXG4gIHwgU0lHTkFUVVJFXG4gIHwgSU5JVFxuICB8IExFVFxuICB8IFBMT1RcbiAgfCBQRVJUXG4gIHwgT0JTXG4gIHwgVE9LRU5cbiAgfCBDT05GSUdcbiAgfCBLQVBQQV9XTERcbiAgfCBLQVBQQV9TRU1JXG4gIHwgRkxVWFxuICB8IEFTU0lHTlxuICB8IFBSSU5URlxuICB8IFNUT1BcbiAgfCBTTkFQU0hPVFxuICB8IFJVTlxuICB8IFRIRU5cbiAgfCBFTFNFXG4gIHwgQUxBUk1cbiAgfCBBUFBMWVxuICB8IElOVCBvZiAoaW50KVxuICB8IElEIG9mIChzdHJpbmcpXG4gIHwgS0FQUEFfTVJLIG9mIChzdHJpbmcpXG4gIHwgTEFCRUwgb2YgKHN0cmluZylcbiAgfCBGTE9BVCBvZiAoZmxvYXQpXG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgbGV0IGFkZF9wb3MgeCA9XG4gICAgKHgsTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiMgOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgICAwICgqIEVPRiAqKTtcbiAgMjU3ICgqIE5FV0xJTkUgKik7XG4gIDI1OCAoKiBTRU1JQ09MT04gKik7XG4gIDI1OSAoKiBDT01NQSAqKTtcbiAgMjYwICgqIERPVCAqKTtcbiAgMjYxICgqIE9QX1BBUiAqKTtcbiAgMjYyICgqIENMX1BBUiAqKTtcbiAgMjYzICgqIE9QX0NVUiAqKTtcbiAgMjY0ICgqIENMX0NVUiAqKTtcbiAgMjY1ICgqIEFUICopO1xuICAyNjYgKCogVFlQRSAqKTtcbiAgMjY3ICgqIExBUiAqKTtcbiAgMjY4ICgqIENQVVRJTUUgKik7XG4gIDI2OSAoKiBFTUFYICopO1xuICAyNzAgKCogVE1BWCAqKTtcbiAgMjcxICgqIFBMT1RFTlRSWSAqKTtcbiAgMjcyICgqIERFTEVURSAqKTtcbiAgMjczICgqIElOVFJPICopO1xuICAyNzQgKCogVFJBQ0sgKik7XG4gIDI3NSAoKiBETyAqKTtcbiAgMjc2ICgqIFNFVCAqKTtcbiAgMjc3ICgqIFJFUEVBVCAqKTtcbiAgMjc4ICgqIFNQRUNJRVNfT0YgKik7XG4gIDI3OSAoKiBVTlRJTCAqKTtcbiAgMjgwICgqIExPRyAqKTtcbiAgMjgxICgqIFBMVVMgKik7XG4gIDI4MiAoKiBNVUxUICopO1xuICAyODMgKCogTUlOVVMgKik7XG4gIDI4NCAoKiBNQVggKik7XG4gIDI4NSAoKiBNSU4gKik7XG4gIDI4NiAoKiBESVYgKik7XG4gIDI4NyAoKiBTSU5VUyAqKTtcbiAgMjg4ICgqIENPU0lOVVMgKik7XG4gIDI4OSAoKiBUQU4gKik7XG4gIDI5MCAoKiBQT1cgKik7XG4gIDI5MSAoKiBBQlMgKik7XG4gIDI5MiAoKiBNT0RVTE8gKik7XG4gIDI5MyAoKiBTUVJUICopO1xuICAyOTQgKCogRVhQT05FTlQgKik7XG4gIDI5NSAoKiBJTkZJTklUWSAqKTtcbiAgMjk2ICgqIFRJTUUgKik7XG4gIDI5NyAoKiBFVkVOVCAqKTtcbiAgMjk4ICgqIE5VTExfRVZFTlQgKik7XG4gIDI5OSAoKiBQSVBFICopO1xuICAzMDAgKCogRVFVQUwgKik7XG4gIDMwMSAoKiBBTkQgKik7XG4gIDMwMiAoKiBPUiAqKTtcbiAgMzAzICgqIE5PVCAqKTtcbiAgMzA0ICgqIEdSRUFURVIgKik7XG4gIDMwNSAoKiBTTUFMTEVSICopO1xuICAzMDYgKCogVFJVRSAqKTtcbiAgMzA3ICgqIEZBTFNFICopO1xuICAzMDggKCogRElGRiAqKTtcbiAgMzA5ICgqIEtBUFBBX1JBUiAqKTtcbiAgMzEwICgqIEtBUFBBX0xSQVIgKik7XG4gIDMxMSAoKiBLQVBQQV9MTksgKik7XG4gIDMxMiAoKiBTSUdOQVRVUkUgKik7XG4gIDMxMyAoKiBJTklUICopO1xuICAzMTQgKCogTEVUICopO1xuICAzMTUgKCogUExPVCAqKTtcbiAgMzE2ICgqIFBFUlQgKik7XG4gIDMxNyAoKiBPQlMgKik7XG4gIDMxOCAoKiBUT0tFTiAqKTtcbiAgMzE5ICgqIENPTkZJRyAqKTtcbiAgMzIwICgqIEtBUFBBX1dMRCAqKTtcbiAgMzIxICgqIEtBUFBBX1NFTUkgKik7XG4gIDMyMiAoKiBGTFVYICopO1xuICAzMjMgKCogQVNTSUdOICopO1xuICAzMjQgKCogUFJJTlRGICopO1xuICAzMjUgKCogU1RPUCAqKTtcbiAgMzI2ICgqIFNOQVBTSE9UICopO1xuICAzMjcgKCogUlVOICopO1xuICAzMjggKCogVEhFTiAqKTtcbiAgMzI5ICgqIEVMU0UgKik7XG4gIDMzMCAoKiBBTEFSTSAqKTtcbiAgMzMxICgqIEFQUExZICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAzMzIgKCogSU5UICopO1xuICAzMzMgKCogSUQgKik7XG4gIDMzNCAoKiBLQVBQQV9NUksgKik7XG4gIDMzNSAoKiBMQUJFTCAqKTtcbiAgMzM2ICgqIEZMT0FUICopO1xuICAzMzcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEzXFwwMDBcXFxuXFwwMTNcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMDRcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAwNlxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXFxuXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzZcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAxNFxcMDAwXFwwMTRcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXFxuXFwwMzhcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXFxuXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXFxuXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQ0XFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1MFxcMDAwXFwxNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDBcXDIwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwM1xcMDAwXFwxMDFcXDAwMFxcMTAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5N1xcMDAwXFwxMDhcXDAwMFxcMTA5XFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA5OVxcMDAwXFwxMDZcXDAwMFxcMTA3XFwwMDBcXDA5OFxcMDAwXFwyMDdcXDAwMFxcMDAwXFwwMDBcXDEwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyNFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDExMlxcMDAwXFwxMTNcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXDAxN1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE4XFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFxcblxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MVxcMDAwXFxcblxcMTk5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMTE4XFwwMDBcXDExOVxcMDAwXFxcblxcMTIwXFwwMDBcXDEyMVxcMDAwXFwxMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDI3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDE0NVxcMDAwXFwxNTVcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFxcblxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwNDZcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMTExXFwwMDBcXDA2OFxcMDAwXFwxMTRcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFxcblxcMTA0XFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU4XFwwMDBcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMDQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDg1XFwwMDBcXDE4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFxcblxcMDg4XFwwMDBcXDAwMFxcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDBcXDA4N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMFxcMTY1XFwwMDBcXDAwMFxcMDAwXFwxODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5NVxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDEzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDBcXDAwMFxcMDAwXFwxNjBcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDAwXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDE3OVxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwxOTFcXDAwMFxcMTkzXFwwMDBcXDE5MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzZcXDAwMFxcMTk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTcwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE2N1xcMDAwXFwxNDhcXDAwMFxcMTgwXFwwMDBcXDAwMFxcMDAwXFwxODFcXDAwMFxcMTg4XFwwMDBcXDE4OVxcMDAwXFxcblxcMTc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTcxXFwwMDBcXDAwMFxcMDAwXFwxNzJcXDAwMFxcMTY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMTgyXFwwMDBcXDE3OFxcMDAwXFwxOTRcXDAwMFxcMTczXFwwMDBcXDE2OVxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMjJcXDAwMFxcMDQ3XFwwMDBcXDA1MFxcMDAwXFwwNzhcXDAwMFxcMDIzXFwwMDBcXDAyNFxcMDAwXFwwNzlcXDAwMFxcMDI1XFwwMDBcXFxuXFwwOTZcXDAwMFxcMTAwXFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMjAzXFwwMDBcXDE2NVxcMDAwXFwxMDlcXDAwMFxcMDgwXFwwMDBcXFxuXFwwNDZcXDAwMVxcMDkyXFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMjIyXFwwMDBcXDAyNlxcMDAwXFwxNDFcXDAwMFxcMDgyXFwwMDBcXFxuXFwwMjdcXDAwMFxcMTQyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDI4XFwwMDBcXDA5M1xcMDAwXFwxMjRcXDAwMFxcMTIxXFwwMDBcXFxuXFwwODVcXDAwMFxcMDg2XFwwMDBcXDIxMFxcMDAwXFwwMTdcXDAwMVxcMDI5XFwwMDBcXDAyM1xcMDAxXFwwMzBcXDAwMFxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDI0XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDc1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwwMDNcXDAwMlxcXG5cXDA4NVxcMDAyXFwxNjBcXDAwMlxcMTQ0XFwyNTVcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMlxcXG5cXDE4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDA0XFwwMzJcXDI1NVxcMTQ3XFwwMDRcXDIzM1xcMjU0XFwyMDFcXDAwNFxcXG5cXDAwNFxcMjU1XFwyMzNcXDI1NFxcMjE1XFwyNTRcXDIxN1xcMjU0XFwyMTJcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMDZcXDI1NVxcMTM4XFwyNTVcXDE3MlxcMDAwXFwwODlcXDI1NVxcMjMyXFwyNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0NFxcMjU1XFwwMDBcXDAwMFxcMjU1XFwwMDRcXDA1M1xcMDA1XFwwNjRcXDI1NVxcMjE1XFwwMDVcXDIxNVxcMDA1XFwxMDZcXDI1NVxcXG5cXDIxNVxcMDA1XFwyMTVcXDAwNVxcMjE1XFwwMDVcXDE2MVxcMDA1XFwxNDBcXDAwN1xcMDY4XFwyNTVcXDAwMFxcMDAwXFwwNTlcXDI1NVxcXG5cXDEzN1xcMjU1XFwwMDBcXDAwMFxcMTI3XFwwMDBcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwxNDBcXDAwN1xcMTQwXFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwyNTVcXDE0MVxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDI1NVxcXG5cXDAwMFxcMDAwXFwwMzJcXDAwN1xcMDE1XFwwMDFcXDI1MFxcMjU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMTlcXDI1NVxcMDc2XFwyNTVcXDAwMFxcMDAwXFwyMzRcXDAwNlxcMTA3XFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAxXFwyMzRcXDAwNlxcMTI5XFwyNTVcXDAwMFxcMDAwXFwwMThcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjBcXDI1NVxcXG5cXDIzNFxcMDA2XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwNFxcMTcyXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwNlxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwxODJcXDAwMVxcMjQ0XFwyNTVcXDI1MVxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDE4MFxcMDAwXFwxODBcXDAwMFxcMjM0XFwwMDZcXDA5NlxcMDAwXFwyNDVcXDI1NVxcXG5cXDE2MlxcMDAzXFwwOTBcXDI1NVxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDlcXDI1NVxcMTAxXFwwMDFcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMTQ0XFwyNTVcXDAwMFxcMDAwXFwxNzRcXDI1NVxcXG5cXDA0MlxcMjU1XFwwMDBcXDAwMFxcMTgwXFwwMDFcXDE0MFxcMDA3XFwxNDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMjU1XFwwOTlcXDAwMFxcMjM0XFwwMDZcXDAwMFxcMDAwXFwyMzRcXDAwNlxcXG5cXDIzNFxcMDA2XFwyMzRcXDAwNlxcMjM0XFwwMDZcXDAwMFxcMDAwXFwyMzRcXDAwNlxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDAwXFwwMDBcXDEyNVxcMjU1XFwxMTFcXDAwMFxcXG5cXDA4MFxcMDAwXFwxNjFcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFwyMzRcXDAwNlxcMjQ1XFwyNTVcXDIwNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAxXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMTcwXFwyNTVcXDAwMFxcMDAwXFwxNDRcXDI1NVxcXG5cXDA5MVxcMjU1XFwxNjBcXDI1NVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwyMzRcXDAwNlxcXG5cXDE3NVxcMDAwXFwyMThcXDAwMFxcMDA2XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTVcXDAwNVxcXG5cXDE4MFxcMDAwXFwyMTVcXDAwNVxcMTgwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDgzXFwwMDFcXDIxNVxcMDA1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDA4M1xcMDAxXFwwODNcXDAwMVxcMDgzXFwwMDFcXDIwN1xcMDAwXFwwMDBcXDI1NVxcXG5cXDA4OVxcMDAxXFwxODBcXDAwMVxcMDY1XFwwMDBcXDE4MFxcMDAxXFwwNjVcXDAwMFxcMDE2XFwwMDFcXDAxNlxcMDAxXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAxXFwwMzJcXDAwN1xcMDA4XFwyNTVcXDA0M1xcMDAxXFwwNTJcXDAwMVxcMDgzXFwwMDFcXDA4MFxcMDAxXFwxNDRcXDI1NVxcXG5cXDExN1xcMDAwXFwxNDRcXDI1NVxcMTQ0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwyNTVcXDAwMFxcMDAwXFwwOTVcXDAwMFxcXG5cXDA1MFxcMDAxXFwyMzRcXDAwNlxcMTI2XFwwMDZcXDA3MlxcMDA2XFwwMDBcXDAwMFxcMDI3XFwyNTVcXDA4MVxcMDAxXFwwOTdcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMTE5XFwwMDFcXDE0MFxcMDA3XFwwMzJcXDAwN1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc2XFwyNTVcXDA4NVxcMDAxXFwwMDdcXDI1NVxcMTA1XFwwMDFcXDE0MlxcMjU1XFwwMDBcXDAwMFxcXG5cXDEyMVxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDFcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzRcXDAwNlxcMDAwXFwwMDBcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwOTZcXDAwMVxcXG5cXDEyMFxcMDAxXFwyMzdcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcMTYzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5MVxcMDAxXFwwOTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDI1NVxcMDAwXFwwMDBcXDEyNVxcMDAxXFwwMTJcXDI1NVxcXG5cXDAzMVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAxXFwxNDBcXDI1NVxcMDAwXFwwMDBcXDIzNFxcMDA2XFwyNTBcXDI1NFxcXG5cXDI1MFxcMjU0XFwwMDBcXDAwMFxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwyNTVcXDEzM1xcMDAxXFwwMjFcXDI1NVxcXG5cXDAwMFxcMDAwXFwxNDNcXDAwMVxcMDAwXFwwMDBcXDE4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwwMDBcXDAwMFxcXG5cXDA1N1xcMjU1XFwwMDBcXDAwMFxcMDIyXFwyNTVcXDAyNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE3N1xcMDAxXFwwMzhcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTBcXDI1NFxcMTM1XFwwMDFcXDAwMFxcMDAwXFwxMThcXDI1NVxcXG5cXDAyNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDNcXDAwMVxcMTM4XFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDNcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDE2NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMVxcXG5cXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE4MFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDhcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE2OVxcMDAxXFwwOTZcXDAwMlxcMDk2XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDJcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMzXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NFxcMDAyXFwwMDBcXDAwMFxcXG5cXDA1N1xcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjhcXDAwM1xcMDAwXFwwMDBcXDIxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDNcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNjJcXDAwMFxcMTYxXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxOVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODVcXDAwMlxcMDM4XFwwMDNcXDE3OFxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNzlcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTlcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDJcXDE5OFxcMDAyXFwyMTNcXDAwMlxcMjQxXFwwMDJcXDAwNlxcMDAzXFwwNzRcXDAwM1xcXG5cXDAwMFxcMDAwXFwxNTFcXDAwMVxcMTY0XFwwMDBcXDIzMlxcMDAxXFwyNDVcXDAwMFxcMDAxXFwwMDBcXDA4M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA5NlxcMDAzXFwwMDBcXDAwMFxcMTI2XFwyNTVcXDAwMFxcMDAwXFwyMjNcXDAwMVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYxXFwwMDNcXDAwMFxcMDAwXFwxNDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwyNTVcXDAwMFxcMDAwXFwyNDFcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDI1NVxcMjI4XFwyNTVcXDIzN1xcMjU1XFwwMDBcXDAwMFxcXG5cXDIxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3M1xcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDIxOVxcMDAxXFwwMDBcXDAwMFxcMTIyXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMjU1XFwxNDVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMTczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIzN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzdcXDI1NVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDI0MlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjI4XFwwMDJcXDEyM1xcMDA0XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM2XFwwMDJcXDAwMFxcMDAwXFwwNTZcXDAwMlxcMjAwXFwyNTVcXDAwMFxcMDAwXFwxNTlcXDAwMlxcXG5cXDIyMVxcMDAxXFwwMTNcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwxMzNcXDI1NVxcMjQ3XFwyNTVcXDIzMVxcMjU1XFwyMTdcXDI1NVxcXG5cXDEzMlxcMDAyXFwyMThcXDI1NVxcMTg4XFwwMDRcXDIxNlxcMDAyXFwyMzNcXDI1NVxcMTY4XFwyNTVcXDE3MVxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDJcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDQ2XFwyNTVcXDAwMFxcMDAwXFwyNTBcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDJcXDE5OFxcMjU1XFwwNTRcXDI1NVxcMDY1XFwyNTVcXDAwMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjI2OFxubGV0IHl5dGFibGUgPSBcIlxcMDg4XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTg0XFwwMDBcXDExOFxcMDAwXFwxNDNcXDAwMFxcMTQ0XFwwMDBcXDE0N1xcMDAwXFwwMzRcXDAwMVxcMDM0XFwwMDFcXFxuXFwxNDFcXDAwMFxcMjIzXFwwMDBcXDA1MVxcMDAwXFwwOThcXDAwMVxcMTM2XFwwMDBcXDEzOFxcMDAwXFwyMjhcXDAwMFxcMDA3XFwwMDBcXFxuXFwwODFcXDAwMFxcMDM1XFwwMDFcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMDk4XFwwMDFcXDE3MlxcMDAwXFwxMTVcXDAwMFxcMTE2XFwwMDBcXFxuXFwxMDZcXDAwMFxcMTE5XFwwMDFcXDAzNFxcMDAxXFwxMzNcXDAwMFxcMjA2XFwwMDBcXDAzMFxcMDAxXFwxMDFcXDAwMVxcMDk0XFwwMDBcXFxuXFwwMzZcXDAwMVxcMDE2XFwwMDBcXDEwMlxcMDAxXFwxMTFcXDAwMFxcMDM1XFwwMDFcXDA5OFxcMDAxXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTEyXFwwMDBcXDE5MlxcMDAwXFwyNDBcXDAwMFxcMTczXFwwMDBcXDE5N1xcMDAwXFwwMjNcXDAwMFxcMjM3XFwwMDBcXFxuXFwxMTdcXDAwMFxcMjMyXFwwMDBcXDA5NVxcMDAxXFwwNTZcXDAwMVxcMTI2XFwwMDBcXDEwMVxcMDAwXFwwNjZcXDAwMFxcMTAyXFwwMDBcXFxuXFwxNDZcXDAwMFxcMTM4XFwwMDBcXDA2NVxcMDAwXFwxNDlcXDAwMFxcMDI0XFwwMDBcXDEzM1xcMDAwXFwwMjJcXDAwMFxcMDI4XFwwMDBcXFxuXFwxNTNcXDAwMFxcMTc1XFwwMDBcXDA5OVxcMDAxXFwxNDFcXDAwMFxcMDA5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMTc1XFwwMDBcXFxuXFwyMThcXDAwMFxcMDMzXFwwMDBcXDIxOVxcMDAwXFwwOTlcXDAwMVxcMTEwXFwwMDFcXDEwN1xcMDAwXFwxNDhcXDAwMFxcMjI1XFwwMDBcXFxuXFwxOTBcXDAwMFxcMjQxXFwwMDBcXDEzMFxcMDAwXFwxMTdcXDAwMVxcMDM3XFwwMDFcXDAzN1xcMDAxXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwwMTBcXDAwMFxcMTAwXFwwMDFcXDAxMVxcMDAwXFwxMjVcXDAwMFxcMDk5XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMTAzXFwwMDFcXFxuXFwwMDdcXDAwMFxcMTIwXFwwMDFcXDExM1xcMDAxXFwwOTZcXDAwMVxcMjEyXFwwMDBcXDAyNlxcMDAxXFwxNTNcXDAwMFxcMDI4XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDkxXFwwMDFcXDEwNFxcMDAxXFwxMDVcXDAwMVxcMDk1XFwwMDBcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDg5XFwwMDFcXFxuXFwyMDVcXDAwMFxcMTc1XFwwMDBcXDIxMVxcMDAwXFwyMTNcXDAwMFxcMjM4XFwwMDBcXDIzOVxcMDAwXFwxOThcXDAwMFxcMTY4XFwwMDBcXFxuXFwxNzVcXDAwMFxcMjAxXFwwMDBcXDA5MFxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDExMVxcMDAxXFwxNTFcXDAwMFxcMTcxXFwwMDBcXFxuXFwxODRcXDAwMFxcMTA3XFwwMDFcXDIzNlxcMDAwXFwxODRcXDAwMFxcMTE4XFwwMDFcXDAwN1xcMDAxXFwxODVcXDAwMFxcMTczXFwwMDBcXFxuXFwxNzRcXDAwMFxcMTE5XFwwMDBcXDE1MFxcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEwOFxcMDAxXFwxMzJcXDAwMFxcMTE0XFwwMDFcXFxuXFwxMjVcXDAwMVxcMTY2XFwwMDBcXDEyMFxcMDAwXFwxOThcXDAwMFxcMDMzXFwwMDBcXDE4N1xcMDAwXFwxOThcXDAwMFxcMDgwXFwwMDBcXFxuXFwxOTFcXDAwMFxcMTIxXFwwMDFcXDE4OFxcMDAwXFwxODRcXDAwMFxcMTY0XFwwMDBcXDIzNVxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDE3NVxcMDAwXFwxMjVcXDAwMFxcMTIyXFwwMDFcXDAzOFxcMDAwXFwxMjdcXDAwMVxcMDY2XFwwMDBcXFxuXFwxNjhcXDAwMFxcMDMzXFwwMDFcXDIyN1xcMDAwXFwwNzJcXDAwMVxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxOThcXDAwMFxcMTMwXFwwMDFcXFxuXFwxNzFcXDAwMFxcMTI4XFwwMDFcXDE1M1xcMDAwXFwyMzZcXDAwMFxcMTg0XFwwMDBcXDEzM1xcMDAxXFwxMzlcXDAwMFxcMDE1XFwwMDFcXFxuXFwxNDBcXDAwMFxcMjQ3XFwwMDBcXDI0OFxcMDAwXFwwMjFcXDAwMVxcMDA4XFwwMDFcXDE4NFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwMjlcXDAwMVxcMTI2XFwwMDFcXDA3M1xcMDAxXFwxODJcXDAwMFxcMDczXFwwMDFcXDAxNFxcMDAxXFwwMjVcXDAwMVxcMDY0XFwwMDFcXFxuXFwwMjdcXDAwMVxcMTg2XFwwMDBcXDAxM1xcMDAxXFwwNzRcXDAwMVxcMDc0XFwwMDBcXDA3NFxcMDAxXFwxMDZcXDAwMFxcMDA5XFwwMDFcXFxuXFwwNzdcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwwMDlcXDAwMFxcMTY4XFwwMDBcXDA0NVxcMDAwXFwwNThcXDAwMVxcMDQ2XFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMDY1XFwwMDFcXFxuXFwwNjZcXDAwMVxcMTcxXFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDE4OVxcMDAwXFwxODNcXDAwMFxcMTA2XFwwMDBcXFxuXFwwOTJcXDAwMFxcMTgzXFwwMDBcXDA3MFxcMDAxXFwxMDZcXDAwMFxcMDEwXFwwMDBcXDEwNlxcMDAwXFwwMTFcXDAwMFxcMTg3XFwwMDBcXFxuXFwyMDJcXDAwMFxcMTc1XFwwMDBcXDE4N1xcMDAwXFwyMTRcXDAwMFxcMTI3XFwwMDBcXDEwNlxcMDAwXFwwNDlcXDAwMVxcMDYzXFwwMDFcXFxuXFwyMTVcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDEwNlxcMDAwXFwwMTJcXDAwMFxcMTEzXFwwMDBcXFxuXFwyMTZcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTQxXFwwMDBcXDEyOVxcMDAwXFwxNDFcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDQzXFwwMDFcXFxuXFwwMDhcXDAwMFxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMDZcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAxNlxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDIzXFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDY2XFwwMDBcXFxuXFwwODBcXDAwMVxcMDgxXFwwMDFcXDEzOFxcMDAwXFwwNjVcXDAwMFxcMTM4XFwwMDBcXDAyNFxcMDAwXFwxMzNcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjhcXDAwMFxcMjE3XFwwMDBcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMTQxXFwwMDBcXDEyM1xcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAzM1xcMDAwXFwxNzRcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxNzRcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDExNVxcMDAxXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMDlcXDAwMVxcMTMwXFwwMDBcXDE3NVxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMDA4XFwwMDBcXDE4MFxcMDAwXFwyMjRcXDAwMFxcMTgxXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwwNTBcXDAwMVxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDFcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMjMxXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMDQ0XFwwMDFcXDE2OFxcMDAwXFwwNDVcXDAwMVxcMTY4XFwwMDBcXDI0MlxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDE3MVxcMDAwXFwxNDJcXDAwMFxcMTcxXFwwMDBcXDE0MlxcMDAwXFwxMjZcXDAwMFxcMDgwXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwwODBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMDgwXFwwMDBcXDEyNVxcMDAwXFwwODBcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDE0M1xcMDAwXFwwMThcXDAwMVxcMTQzXFwwMDBcXDAxOVxcMDAxXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMDAyXFwwMDFcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDAwM1xcMDAxXFwxMjVcXDAwMFxcMDA5XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDI0MFxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDE2OFxcMDAwXFwwMTBcXDAwMFxcMDIwXFwwMDFcXDAxMVxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxMjJcXDAwMFxcMTIzXFwwMDBcXDE3MVxcMDAwXFwwMjJcXDAwMVxcMTQ5XFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTI4XFwwMDBcXFxuXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDExN1xcMDAwXFwwOTJcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMDkyXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA5MlxcMDAwXFwxMjdcXDAwMFxcMDkyXFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA4OFxcMDAxXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxNzVcXDAwMFxcMTI3XFwwMDBcXFxuXFwxODVcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwNzNcXDAwMVxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwNTZcXDAwMFxcMDc0XFwwMDFcXDA1MlxcMDAxXFwwNTRcXDAwMVxcMTY4XFwwMDBcXFxuXFwwNDBcXDAwMVxcMTgwXFwwMDBcXDAzMlxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDEwNlxcMDAxXFwwNDFcXDAwMVxcMTcxXFwwMDBcXFxuXFwwNTdcXDAwMFxcMDUxXFwwMDFcXDE2OFxcMDAwXFwwODBcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE3MVxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNzNcXDAwMVxcMTIzXFwwMDBcXFxuXFwyMTdcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDA3XFwwMDBcXDA0MlxcMDAxXFwwNTlcXDAwMVxcMDc0XFwwMDFcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxODZcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYwXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjBcXDAwMVxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYxXFwwMDFcXFxuXFwxMjNcXDAwMFxcMDA5XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDc3XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYyXFwwMDFcXDAxMFxcMDAwXFwxNjhcXDAwMFxcMDExXFwwMDBcXFxuXFwwNjlcXDAwMVxcMDcxXFwwMDFcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTY4XFwwMDBcXDA3OVxcMDAxXFwxNzFcXDAwMFxcMDg0XFwwMDFcXFxuXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDA4NVxcMDAxXFwwODZcXDAwMVxcMTcxXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDEyXFwwMDBcXFxuXFwwODdcXDAwMVxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMzFcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDMyXFwwMDBcXFxuXFwxMjZcXDAwMFxcMDMxXFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDA5MlxcMDAxXFwwOTNcXDAwMVxcMDk0XFwwMDFcXFxuXFwwOTdcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTA2XFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMTJcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTIzXFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwwMzlcXDAwMFxcMTI2XFwwMDBcXDAwOVxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDA3NVxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDE3N1xcMDAwXFwwMTBcXDAwMFxcMTE2XFwwMDFcXFxuXFwwMTFcXDAwMFxcMTc5XFwwMDBcXDEyNFxcMDAxXFwxMjlcXDAwMVxcMDc2XFwwMDBcXDE4MFxcMDAwXFwxMzFcXDAwMVxcMTgxXFwwMDBcXFxuXFwxMzJcXDAwMVxcMDYwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTQ5XFwwMDBcXDE1NlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxNTlcXDAwMFxcMDYwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTU4XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwwNzhcXDAwMFxcMTI4XFwwMDBcXDE0OVxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxNjFcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxMTRcXDAwMFxcMDg3XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDExMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDEyXFwwMDFcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDA3M1xcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTk5XFwwMDBcXDEyOFxcMDAwXFwwODJcXDAwMVxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwyMzNcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxNjdcXDAwMFxcMDkzXFwwMDBcXFxuXFwyMDdcXDAwMFxcMDU1XFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDU3XFwwMDFcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTZcXDAwMFxcMDgwXFwwMDBcXDA1NlxcMDAwXFwwODRcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXFxuXFwwODBcXDAwMFxcMTA2XFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDg2XFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA3N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTZcXDAwMFxcMTQ3XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAxNFxcMDAwXFwwMTVcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwODBcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwMjFcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXFxuXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMTMxXFwwMDBcXFxuXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwNzVcXDAwMFxcMTMxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzFcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3NVxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNDZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMTQ2XFwwMDBcXDA3NVxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDkzXFwwMDBcXFxuXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXFxuXFwwOTNcXDAwMFxcMTQ2XFwwMDBcXDE0NlxcMDAwXFwwNDBcXDAwMFxcMTQ2XFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMTc4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3OVxcMDAwXFwwODRcXDAwMFxcMDg0XFwwMDBcXDA4NFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODFcXDAwMFxcMDg0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODRcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODZcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMDg2XFwwMDBcXDEwNlxcMDAwXFwwODZcXDAwMFxcMDc0XFwwMDBcXFxuXFwwODRcXDAwMFxcMDg0XFwwMDBcXDE0N1xcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDEwNlxcMDAwXFwwOTFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTlcXDAwMFxcMDM3XFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXDIyNlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMTQ3XFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXDE4MVxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXFxuXFwxOTZcXDAwMFxcMTM3XFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDEzN1xcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwxNTRcXDAwMFxcMTU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDBcXFxuXFwxNTlcXDAwMFxcMTYwXFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyOVxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDI0M1xcMDAwXFwyNDRcXDAwMFxcMjQ1XFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjQ5XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDA2XFwwMDFcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTBcXDAwMFxcMjUxXFwwMDBcXDI1MlxcMDAwXFwyNTNcXDAwMFxcMjU0XFwwMDBcXFxuXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDFcXDAxNlxcMDAxXFwyMDlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDk4XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXFxuXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMTk1XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMjAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMTM1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwMjZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDU2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMjZcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDBcXDEzM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDFcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAxXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFxcblxcMDIxXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDM3XFwwMDBcXDExN1xcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFxcblxcMDI1XFwwMDFcXDAwMFxcMDAwXFwwMDRcXDAwMVxcMDc3XFwwMDFcXDAxMFxcMDAxXFwwMDBcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDMzXFwwMDBcXDA4MVxcMDAxXFwwOTlcXDAwMFxcMDA1XFwwMDFcXDA0NVxcMDAxXFwxMDJcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAxXFxcblxcMDQzXFwwMDFcXDAwMVxcMDAxXFwwMjdcXDAwMVxcMDI1XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDA3OVxcMDAxXFxcblxcMDQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUyXFwwMDBcXDA3MlxcMDAxXFwwNTVcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFxcblxcMTI5XFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMDU1XFwwMDFcXDAyN1xcMDAxXFwwNzRcXDAwMVxcMDExXFwwMDFcXDEzNlxcMDAwXFxcblxcMDA1XFwwMDFcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDI3XFwwMDFcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDI1XFwwMDFcXDA3OFxcMDAxXFwwMjdcXDAwMVxcMDAzXFwwMDFcXDA1NVxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA2NVxcMDAxXFxcblxcMDAwXFwwMDBcXDA3NlxcMDAxXFwwNzhcXDAwMVxcMDc2XFwwMDFcXDEyNFxcMDAwXFwyMjVcXDAwMFxcMDkwXFwwMDBcXDIyN1xcMDAwXFxcblxcMDc4XFwwMDFcXDA2MFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDA1OFxcMDAxXFxcblxcMTE0XFwwMDBcXDA3MlxcMDAxXFwxMjRcXDAwMFxcMTI1XFwwMDBcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMTA2XFwwMDBcXDA0NFxcMDAxXFxcblxcMDcyXFwwMDFcXDEwOVxcMDAwXFwwNThcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDA1MlxcMDAxXFxcblxcMDAzXFwwMDFcXDA3NlxcMDAxXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFwxOTBcXDAwMFxcMDEwXFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNzdcXDAwMVxcMDc5XFwwMDFcXDA5MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAwNVxcMDAxXFwwMDlcXDAwMVxcMDAzXFwwMDFcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDc3XFwwMDFcXDEwMFxcMDAxXFwwMDVcXDAwMVxcMDMwXFwwMDFcXDA3N1xcMDAxXFwxNTBcXDAwMFxcMDE1XFwwMDFcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAxXFwwMjJcXDAwMVxcMTEzXFwwMDFcXDAzOVxcMDAxXFxcblxcMDQ0XFwwMDFcXDAwMlxcMDAxXFwwODFcXDAwMVxcMDMwXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDMwXFwwMDFcXDEyMlxcMDAxXFxcblxcMDUyXFwwMDFcXDExM1xcMDAxXFwxNjZcXDAwMFxcMDA2XFwwMDFcXDA1NVxcMDAxXFwxMjhcXDAwMVxcMDc3XFwwMDFcXDIwN1xcMDAwXFxcblxcMDc5XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMjExXFwwMDBcXDAxOVxcMDAxXFwwNjRcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMjMxXFwwMDBcXDA3NlxcMDAxXFwwNTVcXDAwMVxcMDA2XFwwMDFcXDA1NVxcMDAxXFwyMDdcXDAwMFxcMjI0XFwwMDBcXDAzMlxcMDAxXFxcblxcMjI2XFwwMDBcXDA3N1xcMDAxXFwyMDRcXDAwMFxcMDY0XFwwMDFcXDA3NlxcMDAxXFwwNjRcXDAwMVxcMDA1XFwwMDFcXDIwMFxcMDAwXFxcblxcMDgwXFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDA1XFwwMDFcXDA0NFxcMDAxXFwwNzVcXDAwMVxcMDIyXFwwMDFcXDA3N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA1MlxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMTFcXDAwMVxcMDAzXFwwMDFcXDAzMFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwNlxcMDAxXFwwMzdcXDAwMVxcMDM0XFwwMDFcXDAyNVxcMDAxXFwwMzZcXDAwMVxcMDI3XFwwMDFcXDAwM1xcMDAxXFxcblxcMDgxXFwwMDFcXDA3MlxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwNDRcXDAwMVxcMDE0XFwwMDFcXDAzMVxcMDAxXFxcblxcMDA1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNTJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFxcblxcMDA2XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFxcblxcMDA4XFwwMDFcXDAwMVxcMDAxXFwwMTBcXDAwMVxcMDAzXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwOFxcMDAxXFxcblxcMDAxXFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDc3XFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMDFcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMVxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwMVxcMDAxXFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwM1xcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAxXFwwMDFcXDA3N1xcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwMDFcXDAwMVxcMDAzXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwOTJcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDc5XFwwMDFcXDAxMFxcMDAxXFwwNzJcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDAwMVxcMDAxXFwwMzRcXDAwMVxcMDA0XFwwMDFcXDAzNlxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFxcblxcMDEwXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwNlxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDA0OVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDAyMVxcMDAxXFwwNDRcXDAwMVxcMDIzXFwwMDFcXDA0NFxcMDAxXFwwNDNcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTJcXDAwMVxcMDA2XFwwMDFcXDA1MlxcMDAxXFwwMDhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDA5XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAyMVxcMDAxXFwwMTBcXDAwMVxcMDIzXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDZcXDAwMVxcMDA1XFwwMDFcXDAwOFxcMDAxXFwwMDdcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDIxXFwwMDFcXDAyNVxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwNzdcXDAwMVxcMDM1XFwwMDFcXDAwNVxcMDAxXFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNDRcXDAwMVxcMDI1XFwwMDFcXDAwM1xcMDAxXFwwMjdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTJcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNDNcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAwOVxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMjFcXDAwMVxcMDEwXFwwMDFcXDAyM1xcMDAxXFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMzBcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFxcblxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDcyXFwwMDFcXDAzNVxcMDAxXFxcblxcMDEwXFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDU1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDA0NFxcMDAxXFxcblxcMDA2XFwwMDFcXDAzNFxcMDAxXFwwMjVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMzBcXDAwMVxcMDAzXFwwMDFcXDA1MlxcMDAxXFxcblxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwNDRcXDAwMVxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNTJcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDU1XFwwMDFcXDAxMFxcMDAxXFxcblxcMDc3XFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDA2NFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDc3XFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAwMFxcMDAwXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDAzXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDA0OFxcMDAxXFxcblxcMDM1XFwwMDFcXDAwNVxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAwXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwNlxcMDAxXFwwMjVcXDAwMVxcMDQ0XFwwMDFcXDAyN1xcMDAxXFxcblxcMDQ0XFwwMDFcXDAyNVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA0NFxcMDAxXFwwMjNcXDAwMVxcMDUyXFwwMDFcXDAwNlxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDhcXDAwMVxcMDQ0XFwwMDFcXDA1MlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA0M1xcMDAxXFxcblxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDEwXFwwMDFcXDA3M1xcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDNcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFxcblxcMDQ0XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAzMFxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMDQ0XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAwNFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDAwXFwwMDBcXDAzNVxcMDAxXFwwMDVcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDBcXDAwMFxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMjZcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFxcblxcMDI3XFwwMDFcXDAzMFxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDAwMFxcMDAwXFwwMzRcXDAwMVxcMDc3XFwwMDFcXDAzNlxcMDAxXFxcblxcMDc2XFwwMDFcXDA0OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFxcblxcMDA2XFwwMDFcXDA0OFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAwNlxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFxcblxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNzdcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDIxXFwwMDBcXDAwOFxcMDAwXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMThcXDAwMFxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDIwMlxcMDAwXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMDBcXDAwMFxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDEwN1xcMDAwXFwwMzVcXDAwMVxcMDQ3XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMTQ3XFwwMDBcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDcxXFwwMDBcXDAwMFxcMDAwXFxcblxcMTE4XFwwMDBcXDAyMFxcMDAxXFwwNDFcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFxcblxcMDczXFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDAwNlxcMDAxXFwwMjNcXDAwMVxcMDAwXFwwMDBcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMDIxXFwwMDFcXDAwMFxcMDAwXFwwMjNcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMjU1XFwyNTVcXDAyN1xcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwwMDFcXDAwMVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDA4MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMjU1XFwyNTVcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDA4MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDBcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDc5XFwwMDFcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDFcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMDA2XFwwMDFcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA1MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc3XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA5XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDAyMVxcMDAxXFwwNzJcXDAwMVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDA5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDA2XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDcyXFwwMDFcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDM0XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM2XFwwMDFcXDAwNlxcMDAxXFwwMDFcXDAwMVxcMjU1XFwyNTVcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA5XFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDAyMVxcMDAxXFwwMzZcXDAwMVxcMDIzXFwwMDFcXDA0NlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMjU1XFwyNTVcXDAwNlxcMDAxXFxcblxcMjU1XFwyNTVcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwNTJcXDAwMVxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcblxcMDE0XFwwMDBcXDAwNlxcMDAxXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFxcblxcMDIzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM2XFwwMDBcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA0M1xcMDAxXFwwMDRcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMDUyXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwwMzZcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwMVxcMDAwXFxcblxcMTAyXFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMjU1XFwyNTVcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExN1xcMDAwXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAwXFxcblxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMTM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzlcXDAwMFxcMTQwXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQ4XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxNzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDE3NVxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDE4OVxcMDAwXFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTc2XFwwMDBcXDE3N1xcMDAwXFwxNzhcXDAwMFxcMTc5XFwwMDBcXDE4MFxcMDAwXFxcblxcMTgxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMVxcMjI0XFwwMDBcXDI1NVxcMjU1XFwyMjZcXDAwMFxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFxcblxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAxOVxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDA3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgRU9GXFwwMDBcXFxuICBORVdMSU5FXFwwMDBcXFxuICBTRU1JQ09MT05cXDAwMFxcXG4gIENPTU1BXFwwMDBcXFxuICBET1RcXDAwMFxcXG4gIE9QX1BBUlxcMDAwXFxcbiAgQ0xfUEFSXFwwMDBcXFxuICBPUF9DVVJcXDAwMFxcXG4gIENMX0NVUlxcMDAwXFxcbiAgQVRcXDAwMFxcXG4gIFRZUEVcXDAwMFxcXG4gIExBUlxcMDAwXFxcbiAgQ1BVVElNRVxcMDAwXFxcbiAgRU1BWFxcMDAwXFxcbiAgVE1BWFxcMDAwXFxcbiAgUExPVEVOVFJZXFwwMDBcXFxuICBERUxFVEVcXDAwMFxcXG4gIElOVFJPXFwwMDBcXFxuICBUUkFDS1xcMDAwXFxcbiAgRE9cXDAwMFxcXG4gIFNFVFxcMDAwXFxcbiAgUkVQRUFUXFwwMDBcXFxuICBTUEVDSUVTX09GXFwwMDBcXFxuICBVTlRJTFxcMDAwXFxcbiAgTE9HXFwwMDBcXFxuICBQTFVTXFwwMDBcXFxuICBNVUxUXFwwMDBcXFxuICBNSU5VU1xcMDAwXFxcbiAgTUFYXFwwMDBcXFxuICBNSU5cXDAwMFxcXG4gIERJVlxcMDAwXFxcbiAgU0lOVVNcXDAwMFxcXG4gIENPU0lOVVNcXDAwMFxcXG4gIFRBTlxcMDAwXFxcbiAgUE9XXFwwMDBcXFxuICBBQlNcXDAwMFxcXG4gIE1PRFVMT1xcMDAwXFxcbiAgU1FSVFxcMDAwXFxcbiAgRVhQT05FTlRcXDAwMFxcXG4gIElORklOSVRZXFwwMDBcXFxuICBUSU1FXFwwMDBcXFxuICBFVkVOVFxcMDAwXFxcbiAgTlVMTF9FVkVOVFxcMDAwXFxcbiAgUElQRVxcMDAwXFxcbiAgRVFVQUxcXDAwMFxcXG4gIEFORFxcMDAwXFxcbiAgT1JcXDAwMFxcXG4gIE5PVFxcMDAwXFxcbiAgR1JFQVRFUlxcMDAwXFxcbiAgU01BTExFUlxcMDAwXFxcbiAgVFJVRVxcMDAwXFxcbiAgRkFMU0VcXDAwMFxcXG4gIERJRkZcXDAwMFxcXG4gIEtBUFBBX1JBUlxcMDAwXFxcbiAgS0FQUEFfTFJBUlxcMDAwXFxcbiAgS0FQUEFfTE5LXFwwMDBcXFxuICBTSUdOQVRVUkVcXDAwMFxcXG4gIElOSVRcXDAwMFxcXG4gIExFVFxcMDAwXFxcbiAgUExPVFxcMDAwXFxcbiAgUEVSVFxcMDAwXFxcbiAgT0JTXFwwMDBcXFxuICBUT0tFTlxcMDAwXFxcbiAgQ09ORklHXFwwMDBcXFxuICBLQVBQQV9XTERcXDAwMFxcXG4gIEtBUFBBX1NFTUlcXDAwMFxcXG4gIEZMVVhcXDAwMFxcXG4gIEFTU0lHTlxcMDAwXFxcbiAgUFJJTlRGXFwwMDBcXFxuICBTVE9QXFwwMDBcXFxuICBTTkFQU0hPVFxcMDAwXFxcbiAgUlVOXFwwMDBcXFxuICBUSEVOXFwwMDBcXFxuICBFTFNFXFwwMDBcXFxuICBBTEFSTVxcMDAwXFxcbiAgQVBQTFlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBJTlRcXDAwMFxcXG4gIElEXFwwMDBcXFxuICBLQVBQQV9NUktcXDAwMFxcXG4gIExBQkVMXFwwMDBcXFxuICBGTE9BVFxcMDAwXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSBpblxuICAgIE9iai5yZXByKFxuIyA1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTA3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduZXdsaW5lKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgIChmdW4gYyAtPiBjKVxuIyAxMDgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25ld2xpbmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoXzEpXG4jIDEwODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAobGV0IG91dCA9IChTb21lIChfMSwgcmhzX3BvcyAxKSxfMikgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSBfMyBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gb3V0OjpyLkFzdC5ydWxlc30pXG4jIDEwOTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKGZ1biBjIC0+IGxldCByID0gXzIgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IChOb25lLF8xKTo6ci5Bc3QucnVsZXN9KVxuIyAxMTA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAobGV0IG91dCA9ICgoXzEscmhzX3BvcyAxKSxfMykgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSBfNCBjIGluIHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IG91dDo6ci5Bc3QudmFyaWFibGVzfSlcbiMgMTExNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnN0cnVjdGlvbikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBmdW4gYyAtPiBsZXQgciA9IF8yIGMgaW5cblx0XHQgICAgICBtYXRjaCBfMSB3aXRoXG5cdFx0ICAgICAgfCBBc3QuUlVMRSBydSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnJ1bGVzID0gcnU6OnIuQXN0LnJ1bGVzfVxuXHRcdCAgICAgIHwgQXN0LlNJRyBhZyAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnNpZ25hdHVyZXM9YWc6OnIuQXN0LnNpZ25hdHVyZXN9XG5cdFx0ICAgICAgfCBBc3QuVE9LRU5TSUcgKHN0cl9wb3MpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudG9rZW5zPXN0cl9wb3M6OnIuQXN0LnRva2Vuc31cblx0XHQgICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qudm9sdW1lcz0odm9sX3R5cGUsdm9sLHZvbF9wYXJhbSk6OnIuQXN0LnZvbHVtZXN9XG5cdFx0ICAgICAgfCBBc3QuSU5JVCAoYWxnLGluaXRfdCkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5pbml0PShhbGcsaW5pdF90KTo6ci5Bc3QuaW5pdH1cblx0XHQgICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzfVxuXHRcdCAgICAgIHwgQXN0Lk9CUyAoKGxibCxwb3MpLF8gYXMgdmFyKSAtPlxuXHRcdFx0ICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuXHRcdFx0ICAge3Igd2l0aFxuXHRcdFx0ICAgICBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXM7XG5cdFx0XHQgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCxwb3MpXG5cdFx0XHRcdFx0XHQgOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QTE9UIGV4cHIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHI6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBFUlQgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuXHRcdFx0ICAgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKTo6ci5Bc3QucGVydHVyYmF0aW9uc31cblx0XHQgICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsdmFsdWVfbGlzdCkgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpOjpyLkFzdC5jb25maWd1cmF0aW9uc31cblx0XHQgIClcbiMgMTE1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJTeW50YXggZXJyb3JcIikpKVxuIyAxMTU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNJRyBfMilcbiMgMTE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChBc3QuVE9LRU5TSUcgKF8yLHJoc19wb3MgMikpXG4jIDExNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdFx0KGFkZF9wb3MgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlLCBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG9mIHRoZSBmb3JtICclYWdlbnQ6IEEoeCx5fnV+dix6KSdcIikpKVxuIyAxMTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW5pdF9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5JTklUIF8yKVxuIyAxMTg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSlcbiMgMTE5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkRFQ0xBUkUgXzIpXG4jIDEyMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5PQlMgXzIpXG4jIDEyMDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgIChBc3QuUExPVCBfMilcbiMgMTIxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIGFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSlcbiMgMTIyMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlBFUlQgKGFkZF9wb3MgXzIpKVxuIyAxMjI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChBc3QuQ09ORklHICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEyMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxBc3QuSU5JVF9NSVggKF8yLHJoc19wb3MgMikpIClcbiMgMTI0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsQXN0LklOSVRfTUlYIChfMywgcmhzX3BvcyAzKSkgKVxuIyAxMjUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoKF8zLEFzdC5JTklUX1RPSyBbXzEscmhzX3BvcyAxXSkpXG4jIDEyNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKChfMSxBc3QuSU5JVF9UT0sgW18yLHJoc19wb3MgMl0pKVxuIyAxMjY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKFtfMSwgcmhzX3BvcyAxXSlcbiMgMTI3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICgoXzEscmhzX3BvcyAxKTo6XzIpXG4jIDEyODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChOb25lKVxuIyAxMjkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChTb21lIF8yKVxuIyAxMjk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChOb25lKVxuIyAxMzAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIF8yKVxuIyAxMzEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsXzIpKSkpXG4jIDEzMTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxTb21lIF8yLF80LF81KSApXG4jIDEzMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsTm9uZSxfMyxfNCkgKVxuIyAxMzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICggKE5vbmUsU29tZSBfMixfNCxTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsXzYpKSkpKVxuIyAxMzQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCAoXzEsU29tZSBfMixfNCxOb25lKSlcbiMgMTM1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxMzYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxMzY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoW18xXSlcbiMgMTM3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMylcbiMgMTM4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKEFzdC5VUERBVEUgKChfMixyaHNfcG9zIDIpLF8zKSlcbiMgMTM5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChBc3QuVVBEQVRFICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEzOTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgKEFzdC5DRkxPV0xBQkVMIChfMywoXzIscmhzX3BvcyAyKSkpXG4jIDE0MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAoQXN0LkNGTE9XTUlYIChfMywoW18yXSxyaHNfcG9zIDIpKSlcbiMgMTQxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKGlmIF8zIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxfMikgZWxzZSBBc3QuRElOT0ZGIF8yKVxuIyAxNDIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChpZiBfNCAmJiBfMyA9IFwiYWJzb2x1dGVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUsXzIpXG5cdCAgIGVsc2UgaWYgXzQgJiYgXzMgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuXHQgICAgIEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFksXzIpXG5cdCAgIGVsc2UgaWYgXzQgJiYgXzMgPSBcInJlbGF0aXZlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLF8yKVxuXHQgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDMpKSlcbiMgMTQzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIEFzdC5BUFBMWShcblx0XHQgICBfMixcblx0XHQgICAoeyBBc3QucmV3cml0ZSA9IGZzdCBfMztcblx0XHQgICAgICBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuXHRcdCAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuXHRcdCAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG5cdFx0IClcbiMgMTQ1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKCBBc3QuQVBQTFkoXzIsXG4gICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0ICBBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgQXN0LnJocz1fMzsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0ICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgIClcbiMgMTQ2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpKVxuIyAxNDczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICggQXN0LkFQUExZKF8yLFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5BcnJvdyB7QXN0Lmxocz1fMzsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgIEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgIClcbiMgMTQ4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpKVxuIyAxNDk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChcbiAgICAgICBsZXQgdGsgPSAoXzEscmhzX3BvcyAxKSBpblxuICAgICAgICBBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgICAgYWRkX3Bvc1xuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0XG5cdFx0IHtBc3QubWl4PVtdO1xuXHRcdCAgQXN0LmRlbHRhX3Rva2VuID1cblx0XHQgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyxfMywoQWxnX2V4cHIuVE9LRU5fSUQgXzEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSkpXG4gICAgICAgKVxuIyAxNTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNOQVBTSE9UIChmYWxzZSxfMikpXG4jIDE1MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKEFzdC5TVE9QIF8yKVxuIyAxNTMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlBSSU5UIChfMixfNCkgKVxuIyAxNTM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKCBBc3QuUExPVEVOVFJZIClcbiMgMTU0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlNQRUNJRVNfT0YgKF80LF8yLChfMywgcmhzX3BvcyAzKSkpXG4jIDE1NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgIChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgXzEpXSlcbiMgMTU2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoW1ByaW1pdGl2ZXMuQWxnX3BleHByIF8xXSlcbiMgMTU2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKF8xLCByaHNfcG9zIDEpOjpfMylcbiMgMTU3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuQWxnX3BleHByIF8xOjpfMylcbiMgMTU4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKFtdKVxuIyAxNTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxNTk2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAodHJ1ZSlcbiMgMTYwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChmYWxzZSlcbiMgMTYwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoKF8xLHJoc19wb3MgMSksKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8yLHJoc19wb3MgMikpKVxuIyAxNjE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoKChfMSxyaHNfcG9zIDEpLF8yKSlcbiMgMTYyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCgoXzEscmhzX3BvcyAxKSxfMikpXG4jIDE2MzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgIChyYWlzZVxuXHQgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXl8xXlwiJ1wiKSkpXG5cdCAgICApXG4jIDE2NDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNjQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIEFsZ19leHByLlRSVUUpXG4jIDE2NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIEFsZ19leHByLkZBTFNFKVxuIyAxNjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE2NjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULF8yKSkpXG4jIDE2NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQsXzEsXzMpKSlcbiMgMTY4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IsXzEsXzMpKSlcbiMgMTY5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIsXzEsXzMpKSlcbiMgMTY5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIsXzEsXzMpKSlcbiMgMTcwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLF8xLF8zKSkpXG4jIDE3MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLF8xLF8zKSkpXG4jIDE3MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMTczMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAxNzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNzQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zICBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCArIC4uLiArIGFfbiB0X24sIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSlcbiMgMTc1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd0b2tlbl9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTc1NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgIChbKF8xLChfMixyaHNfcG9zIDIpKV0pXG4jIDE3NjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGwgPSBfNCBpbiAoXzEsKF8yLHJoc19wb3MgMikpOjpsKVxuIyAxNzc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoWyhfMSwoXzMscmhzX3BvcyAzKSldKVxuIyAxNzgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGwgPSBfNSBpbiAoXzEsKF8zLHJoc19wb3MgMykpOjpsKVxuIyAxNzkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYXJyb3cpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXzFdOyBBc3Qucm1fdG9rZW4gPSBfMjsgQXN0LnJocz1bXzRdOyBBc3QuYWRkX3Rva2VuID0gXzV9LFxuICAgICBfMylcbiMgMTgwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fycm93KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXzFdOyBBc3Qucm1fdG9rZW4gPSBfMjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IF80fSxcbiAgICAgXzMpXG4jIDE4MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IF8xOyBBc3QucmhzPVtfM107IEFzdC5hZGRfdG9rZW4gPSBfNH0sXG4gICAgIF8yKVxuIyAxODI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IF8xOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gXzN9LFxuICAgICBfMilcbiMgMTgzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzIxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBBc3QuRWRpdCB7QXN0Lm1peCA9IFtfMV07IEFzdC5kZWx0YV90b2tlbiA9IF8yfSxmYWxzZSApXG4jIDE4NDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIEFzdC5FZGl0IHtBc3QubWl4ID0gW107IEFzdC5kZWx0YV90b2tlbiA9IF8yfSxmYWxzZSApXG4jIDE4NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYmlyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4pID0gXzIgaW5cbiAgICAgIGxldCByZXdyaXRlLGJpZGlyZWN0aW9uYWwgPSBfMSBpblxuICAgICAgYWRkX3BvcyB7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9IClcbiMgMTg2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChmYWxzZSlcbiMgMTg2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhcnJvdykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICh0cnVlKVxuIyAxODc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICggTmJyLkYgaW5maW5pdHkgKVxuIyAxODgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogZmxvYXQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKCBOYnIuRiBfMSApXG4jIDE4ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICggTmJyLkkgXzEgKVxuIyAxODk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMzQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTlNUIF8xKSlcbiMgMTkwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQ2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkpXG4jIDE5MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpKVxuIyAxOTE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpKVxuIyAxOTIwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5UT0tFTl9JRCAoXzIpKSlcbiMgMTkyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZF9wb3MgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8yKSApXG4jIDE5MzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSlcbiMgMTk0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSIChfMSkpKVxuIyAxOTQ4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSlcbiMgMTk1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSlcbiMgMTk2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkpXG4jIDE5NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTk3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbnN0YW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzNjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChfMSlcbiMgMTk4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChfMSlcbiMgMTk4NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLF8yLF8zKSkpXG4jIDE5OTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTixfMixfMykpKVxuIyAyMDAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCxfMikpKVxuIyAyMDEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLF8yKSkpXG4jIDIwMTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLF8yKSkpXG4jIDIwMjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTixfMikpKVxuIyAyMDMxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsXzIpKSlcbiMgMjAzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsXzIpKSlcbiMgMjA0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLF8yKSkpXG4jIDIwNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUyxfMikpIClcbiMgMjA1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjA2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQsXzEsXzMpKSlcbiMgMjA3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSxfMSxfMykpKVxuIyAyMDgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYsXzEsXzMpKSlcbiMgMjA5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyxfMSxfMykpKVxuIyAyMDk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csXzEsXzMpKSlcbiMgMjEwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTU9EVUxPLF8xLF8zKSkpXG4jIDIxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDIxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLklGKF8xLF8zLF81KSkpXG4jIDIxMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKGxldCAoazIsazEpID0gXzIgaW4gKGsyLGsxLE5vbmUsTm9uZSkpXG4jIDIxMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncmF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKGsyLGsxKSA9IF8yIGluXG5cdFx0XHQgIGxldCAoa2JhY2ssa2JhY2sxKSA9IF80IGluXG5cdFx0XHQgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSkpXG4jIDIxNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpKVxuIyAyMTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEsU29tZSBfMykpXG4jIDIxNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLFNvbWUgXzMpIClcbiMgMjE2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKChfMSxOb25lKSlcbiMgMjE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICgoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxTb21lIF8yKSlcbiMgMjE4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKChfMSxTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLE5vbmUpKSlcbiMgMjE5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJtaXNzaW5nIHJ1bGUgcmF0ZVwiKSkpXG4jIDIxOTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICgoXzEsTm9uZSkpXG4jIDIyMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDEzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEsIFNvbWUgXzMpKVxuIyAyMjExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMjIxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSA6OiBfMylcbiMgMjIyNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMjMzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIFtbQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKV1dIClcbiMgMjI0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25fZW1wdHlfbWl4dHVyZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIFtBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF8zLCBBc3QuTm9Nb2QpIDo6IF82XSlcbiMgMjI1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25fZW1wdHlfbWl4dHVyZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIEFzdC5Ob01vZCApXG4jIDIyNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kX2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKCBBc3QuQ3JlYXRlIClcbiMgMjI2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RfYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuRXJhc2UgKVxuIyAyMjY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZF9hZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKSlcbiMgMjI3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzFeXCInXCIpKSkpXG4jIDIyODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdtb2RfYWdlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKEFzdC5QcmVzZW50ICgoXzIscmhzX3BvcyAyKSwgXzQsIF8xKSlcbiMgMjI5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbW9kX2FnZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8yXlwiJ1wiKSkpKVxuIyAyMzAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ0OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoW10pXG4jIDIzMDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncG9ydF9leHByZXNzaW9uX3NpZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8zKVxuIyAyMzE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW18xXSlcbiMgMjMyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAyMzI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncG9ydF9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzMpXG4jIDIzMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwb3J0X2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DRVEgXzIscmhzX3BvcyAyKSlcbiMgMjM1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChBc3QuQ0dURSBfMyxyaHNfcG9zIDMpKVxuIyAyMzU4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DTFRFIF8zLHJoc19wb3MgMykpXG4jIDIzNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICggU29tZSAoQXN0LkNWQVIgXzIscmhzX3BvcyAyKSlcbiMgMjM3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfMzsgfSApXG4jIDIzODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fMztcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF80OyB9IClcbiMgMjM5NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzU7IH0gKVxuIyAyNDA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fNTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzY7IH0gKVxuIyAyNDIwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKF80LHJoc19wb3MgNCl9IClcbiMgMjQzMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtXzUscmhzX3BvcyA1KX0gKVxuIyAyNDQyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IF8yO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IChfNSxyaHNfcG9zIDUpfSApXG4jIDI0NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gXzI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC0gXzYscmhzX3BvcyA2KX0gKVxuIyAyNDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1MDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBfMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwfSApXG4jIDI0NzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzM7IH0gKVxuIyAyNDg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9XzM7XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzQ7IH0gKVxuIyAyNTAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPVtdO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzU7IH0gKVxuIyAyNTEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fNTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZShfNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9IF82OyB9IClcbiMgMjUyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTI3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKCBBc3QuQ291bnRlclxuICAgIFx0ICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgXzQsIHJoc19wb3MgNCk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gXzQ7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjUzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChBc3QuQ291bnRlclxuICB7IEFzdC5jb3VudGVyX3NpZ19uYW1lID0gKF8xLHJoc19wb3MgMSk7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IE5vbmU7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC1fNSksIHJoc19wb3MgNSk7XG4gICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSAtXzU7XG4gICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoIGxldCBtaW4gPVxuICAgICAgICAgICAgbWF0Y2ggXzIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICAgaW4gQXN0LkNvdW50ZXJcbiAgICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSBfNSwgcmhzX3BvcyA1KTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjU3MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCBfMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC1fNiksIHJoc19wb3MgNik7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW4gO1xuICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjU5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBsZXQgbWluID1cbiAgICAgICAgICAgbWF0Y2ggXzIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICBpblxuICAgICAgIEFzdC5Db3VudGVyXG4gIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IE5vbmU7XG4gICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNjA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAyNjE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTb21lIF8xLHJoc19wb3MgMSk6Ol8yKVxuIyAyNjIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBhZnRlciBpbnRlcm5hbCBzdGF0ZVwiKSkpXG4jIDI2MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKE5vbmUpXG4jIDI2MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgTm9uZSlcbiMgMjY0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIChTb21lIChfMyxyaHNfcG9zIDMpKSlcbiMgMjY0OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgIChhZGRfcG9zIFwiSW5jb3JyZWN0IGxpbmsgbW9kaWZpY2F0aW9uXCIpKSlcbiMgMjY1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICgoTEthcHBhLkxOS19GUkVFLHJoc19wb3MgMikpXG4jIDI2NjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfVkFMVUUgKF8yLCgpKSxyaHNfcG9zIDIpKVxuIyAyNjY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfU09NRSxyaHNfcG9zIDIpKVxuIyAyNjc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoTEthcHBhLkxOS19UWVBFXG5cdFx0XHRcdCAgICAgICgoXzIscmhzX3BvcyAyKSwoXzQscmhzX3BvcyA0KSkpKVxuIyAyNjg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgTEthcHBhLkxOS19BTlkpXG4jIDI2OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyBcIkludmFsaWQgbGluayBzdGF0ZVwiKSkpXG4jIDI2OTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYV9saW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8yKVxuIyAyNzA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhX2xpbmtfc3RhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyNzEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYxNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKEFzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKSlcbiMgMjcxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlJVTiBfMilcbiMgMjcyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoQXN0Lk1PRElGWSBfMSlcbiMgMjczMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoQXN0LlFVSVQpXG4jIDI3MzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKSlcbiMgMjc0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbigqIEVudHJ5IHN0YXJ0X3J1bGUgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgaW50ZXJhY3RpdmVfY29tbWFuZCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2VmZmVjdF9saXN0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfYm9vbF9leHByICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHN0YXJ0X3J1bGUgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpXG5sZXQgaW50ZXJhY3RpdmVfY29tbWFuZCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpXG5sZXQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdClcbmxldCBzdGFuZGFsb25lX2Jvb2xfZXhwciAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZClcbjs7XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICovXG4vKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICovXG4vKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4le1xuICBsZXQgYWRkX3BvcyB4ID1cbiAgICAoeCxMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuJX1cblxuJXRva2VuIEVPRiBORVdMSU5FIFNFTUlDT0xPTiBDT01NQSBET1QgT1BfUEFSIENMX1BBUiBPUF9DVVIgQ0xfQ1VSIEFUIFRZUEUgTEFSXG4ldG9rZW4gQ1BVVElNRSBFTUFYIFRNQVggUExPVEVOVFJZIERFTEVURSBJTlRSTyBUUkFDSyBETyBTRVQgUkVQRUFUIFNQRUNJRVNfT0ZcbiV0b2tlbiBVTlRJTCBMT0cgUExVUyBNVUxUIE1JTlVTIE1BWCBNSU4gRElWIFNJTlVTIENPU0lOVVMgVEFOIFBPVyBBQlMgTU9EVUxPXG4ldG9rZW4gU1FSVCBFWFBPTkVOVCBJTkZJTklUWSBUSU1FIEVWRU5UIE5VTExfRVZFTlQgUElQRSBFUVVBTCBBTkQgT1IgTk9UXG4ldG9rZW4gR1JFQVRFUiBTTUFMTEVSIFRSVUUgRkFMU0UgRElGRiBLQVBQQV9SQVIgS0FQUEFfTFJBUiBLQVBQQV9MTktcbiV0b2tlbiBTSUdOQVRVUkUgSU5JVCBMRVQgUExPVCBQRVJUIE9CUyBUT0tFTiBDT05GSUcgS0FQUEFfV0xEIEtBUFBBX1NFTUlcbiV0b2tlbiBGTFVYIEFTU0lHTiBQUklOVEYgU1RPUCBTTkFQU0hPVCBSVU4gVEhFTiBFTFNFIEFMQVJNIEFQUExZXG4ldG9rZW4gPGludD4gSU5UXG4ldG9rZW4gPHN0cmluZz4gSURcbiV0b2tlbiA8c3RyaW5nPiBLQVBQQV9NUksgTEFCRUxcbiV0b2tlbiA8ZmxvYXQ+IEZMT0FUXG4ldG9rZW4gPHN0cmluZz4gU1RSSU5HXG5cbiVsZWZ0IE1JTlVTIFBMVVNcbiVsZWZ0IE1VTFQgRElWXG4lbGVmdCBNT0RVTE9cbiVyaWdodCBQT1dcbiVub25hc3NvYyBMT0cgU1FSVCBFWFBPTkVOVCBTSU5VUyBDT1NJTlVTIEFCUyBUQU5cblxuJWxlZnQgT1JcbiVsZWZ0IEFORFxuXG4lbm9uYXNzb2MgVEhFTlxuXG4lc3RhcnQgc3RhcnRfcnVsZVxuJXR5cGUgPEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWw+IHN0YXJ0X3J1bGVcblxuJXN0YXJ0IGludGVyYWN0aXZlX2NvbW1hbmRcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZD4gaW50ZXJhY3RpdmVfY29tbWFuZFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3Q+IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcblxuJXN0YXJ0IHN0YW5kYWxvbmVfYm9vbF9leHByXG4ldHlwZSA8KEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZD4gc3RhbmRhbG9uZV9ib29sX2V4cHJcblxuJSUgLypHcmFtbWFyIHJ1bGVzKi9cblxubmV3bGluZTpcbiAgICB8IE5FV0xJTkUgc3RhcnRfcnVsZSB7JDJ9XG4gICAgfCBFT0Yge2Z1biBjIC0+IGN9O1xuXG5zdGFydF9ydWxlOlxuICAgIHwgbmV3bGluZSB7JDF9XG4gICAgfCBMQUJFTCBydWxlX2V4cHJlc3Npb24gbmV3bGluZVxuICAgICAgICB7bGV0IG91dCA9IChTb21lICgkMSwgcmhzX3BvcyAxKSwkMikgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSAkMyBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gb3V0OjpyLkFzdC5ydWxlc319XG4gICAgfCBydWxlX2V4cHJlc3Npb24gbmV3bGluZVxuICAgICAgICB7ZnVuIGMgLT4gbGV0IHIgPSAkMiBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gKE5vbmUsJDEpOjpyLkFzdC5ydWxlc319XG4gICAgfCBMQUJFTCBFUVVBTCBhbGdfZXhwciBuZXdsaW5lXG4gICAgICAgIHtsZXQgb3V0ID0gKCgkMSxyaHNfcG9zIDEpLCQzKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9ICQ0IGMgaW4ge3Igd2l0aCBBc3QudmFyaWFibGVzID0gb3V0OjpyLkFzdC52YXJpYWJsZXN9fVxuICAgIHwgaW5zdHJ1Y3Rpb24gbmV3bGluZVxuXHRcdCAgeyBmdW4gYyAtPiBsZXQgciA9ICQyIGMgaW5cblx0XHQgICAgICBtYXRjaCAkMSB3aXRoXG5cdFx0ICAgICAgfCBBc3QuUlVMRSBydSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnJ1bGVzID0gcnU6OnIuQXN0LnJ1bGVzfVxuXHRcdCAgICAgIHwgQXN0LlNJRyBhZyAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnNpZ25hdHVyZXM9YWc6OnIuQXN0LnNpZ25hdHVyZXN9XG5cdFx0ICAgICAgfCBBc3QuVE9LRU5TSUcgKHN0cl9wb3MpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudG9rZW5zPXN0cl9wb3M6OnIuQXN0LnRva2Vuc31cblx0XHQgICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qudm9sdW1lcz0odm9sX3R5cGUsdm9sLHZvbF9wYXJhbSk6OnIuQXN0LnZvbHVtZXN9XG5cdFx0ICAgICAgfCBBc3QuSU5JVCAoYWxnLGluaXRfdCkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5pbml0PShhbGcsaW5pdF90KTo6ci5Bc3QuaW5pdH1cblx0XHQgICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzfVxuXHRcdCAgICAgIHwgQXN0Lk9CUyAoKGxibCxwb3MpLF8gYXMgdmFyKSAtPlxuXHRcdFx0ICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuXHRcdFx0ICAge3Igd2l0aFxuXHRcdFx0ICAgICBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXM7XG5cdFx0XHQgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCxwb3MpXG5cdFx0XHRcdFx0XHQgOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QTE9UIGV4cHIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHI6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBFUlQgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuXHRcdFx0ICAgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKTo6ci5Bc3QucGVydHVyYmF0aW9uc31cblx0XHQgICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsdmFsdWVfbGlzdCkgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpOjpyLkFzdC5jb25maWd1cmF0aW9uc31cblx0XHQgIH1cbiAgICB8IGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJTeW50YXggZXJyb3JcIikpfVxuICAgIDtcblxuaW5zdHJ1Y3Rpb246XG4gICAgfCBTSUdOQVRVUkUgYWdlbnRfZXhwcmVzc2lvbl9zaWcge0FzdC5TSUcgJDJ9XG4gICAgfCBUT0tFTiBJRCB7QXN0LlRPS0VOU0lHICgkMixyaHNfcG9zIDIpfVxuICAgIHwgU0lHTkFUVVJFIGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdFx0KGFkZF9wb3MgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlLCBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG9mIHRoZSBmb3JtICclYWdlbnQ6IEEoeCx5fnV+dix6KSdcIikpfVxuXG4gICAgfCBJTklUIGluaXRfZGVjbGFyYXRpb24ge0FzdC5JTklUICQyfVxuICAgIHwgSU5JVCBlcnJvclxuXHR7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKX1cblxuICAgIHwgTEVUIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHtBc3QuREVDTEFSRSAkMn1cbiAgICB8IE9CUyB2YXJpYWJsZV9kZWNsYXJhdGlvbiB7QXN0Lk9CUyAkMn1cbiAgICB8IFBMT1QgYWxnX2V4cHIge0FzdC5QTE9UICQyfVxuICAgIHwgUExPVCBlcnJvciB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBhbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSl9XG4gICAgfCBQRVJUIHBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbiB7QXN0LlBFUlQgKGFkZF9wb3MgJDIpfVxuICAgIHwgQ09ORklHIFNUUklORyB2YWx1ZV9saXN0XG5cdCAgICAge0FzdC5DT05GSUcgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICA7XG5cbmluaXRfZGVjbGFyYXRpb246XG4gICAgfCBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgIHsgKCQxLEFzdC5JTklUX01JWCAoJDIscmhzX3BvcyAyKSkgfVxuICAgIHwgYWxnX2V4cHIgT1BfUEFSIG5vbl9lbXB0eV9taXh0dXJlIENMX1BBUlxuICAgIHsgKCQxLEFzdC5JTklUX01JWCAoJDMsIHJoc19wb3MgMykpIH1cbiAgICB8IElEIExBUiBhbGdfZXhwciB7KCQzLEFzdC5JTklUX1RPSyBbJDEscmhzX3BvcyAxXSl9XG4gICAgfCBhbGdfZXhwciBJRCB7KCQxLEFzdC5JTklUX1RPSyBbJDIscmhzX3BvcyAyXSl9XG4gICAgO1xuXG52YWx1ZV9saXN0OlxuICAgIHwgU1RSSU5HIHtbJDEsIHJoc19wb3MgMV19XG4gICAgfCBTVFJJTkcgdmFsdWVfbGlzdCB7KCQxLHJoc19wb3MgMSk6OiQyfVxuICAgIDtcblxucGVydHVyYmF0aW9uX2FsYXJtOlxuICB7Tm9uZX1cbiAgfCBBTEFSTSBuYnIge1NvbWUgJDJ9XG5cbnBlcnR1cmJhdGlvbl9wb3N0OlxuICB7Tm9uZX1cbiAgfCBSRVBFQVQgYm9vbF9leHByIHtTb21lICQyfVxuICB8IFVOVElMIGJvb2xfZXhwclxuICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuXHQgeyBTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsJDIpKSl9XG5cblxucGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uOlxuICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBETyBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgKCQxLFNvbWUgJDIsJDQsJDUpIH1cbiAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgKCQxLE5vbmUsJDMsJDQpIH1cbiAgICB8IFJFUEVBVCBib29sX2V4cHIgRE8gZWZmZWN0X2xpc3QgVU5USUwgYm9vbF9leHByXG4gICAgICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuXHQgIHsgKE5vbmUsU29tZSAkMiwkNCxTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsJDYpKSkpfVxuICAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgU0VUIGVmZmVjdF9saXN0XG5cdFx0eyAoJDEsU29tZSAkMiwkNCxOb25lKX0gLypGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSovXG4gICAgO1xuXG5zdGFuZGFsb25lX2VmZmVjdF9saXN0OiBlZmZlY3RfbGlzdCBFT0YgeyQxfVxuXG5lZmZlY3RfbGlzdDpcbiAgICB8IE9QX1BBUiBlZmZlY3RfbGlzdCBDTF9QQVIgeyQyfVxuICAgIHwgZWZmZWN0IHtbJDFdfVxuICAgIHwgZWZmZWN0IFNFTUlDT0xPTiBlZmZlY3RfbGlzdCB7JDE6OiQzfVxuICAgIDtcblxuZWZmZWN0OlxuICAgIHwgQVNTSUdOIElEIGFsZ19leHByIC8qdXBkYXRpbmcgdGhlIHJhdGUgb2YgYSBydWxlKi9cblx0XHRcdFx0XHRcdCAgICAgIHtBc3QuVVBEQVRFICgoJDIscmhzX3BvcyAyKSwkMyl9XG4gICAgfCBBU1NJR04gTEFCRUwgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgcmF0ZSBvZiBhIHJ1bGUqL1xuXHRcdFx0XHRcdFx0ICAgICAge0FzdC5VUERBVEUgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICB8IFRSQUNLIExBQkVMIGJvb2xlYW5cblx0ICAgIHtBc3QuQ0ZMT1dMQUJFTCAoJDMsKCQyLHJoc19wb3MgMikpfVxuICAgIHwgVFJBQ0sgcGF0dGVybiBib29sZWFuXG5cdCAgICB7QXN0LkNGTE9XTUlYICgkMywoWyQyXSxyaHNfcG9zIDIpKX1cbiAgICB8IEZMVVggbm9uZW1wdHlfcHJpbnRfZXhwciBib29sZWFuXG5cdCAgIHtpZiAkMyB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsJDIpIGVsc2UgQXN0LkRJTk9GRiAkMn1cbiAgICB8IEZMVVggbm9uZW1wdHlfcHJpbnRfZXhwciBTVFJJTkcgYm9vbGVhblxuXHQgICB7aWYgJDQgJiYgJDMgPSBcImFic29sdXRlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLCQyKVxuXHQgICBlbHNlIGlmICQ0ICYmICQzID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cblx0ICAgICBBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLCQyKVxuXHQgICBlbHNlIGlmICQ0ICYmICQzID0gXCJyZWxhdGl2ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSwkMilcblx0ICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyAzKSl9XG4gICAgfCBBUFBMWSBzbWFsbF9hbGdfZXhwciBydWxlX2NvbnRlbnRcblx0XHQgeyBBc3QuQVBQTFkoXG5cdFx0ICAgJDIsXG5cdFx0ICAgKHsgQXN0LnJld3JpdGUgPSBmc3QgJDM7XG5cdFx0ICAgICAgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcblx0XHQgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcblx0XHQgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuXHRcdCB9XG4gICAgfCBJTlRSTyBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgICAgICB7IEFzdC5BUFBMWSgkMixcbiAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgIEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgICBBc3QucmhzPSQzOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICAgfVxuICAgIHwgSU5UUk8gZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKX1cbiAgICB8IERFTEVURSBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgICAgIHsgQXN0LkFQUExZKCQyLFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5BcnJvdyB7QXN0Lmxocz0kMzsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgIEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgIH1cblxuICAgIHwgREVMRVRFIGVycm9yXG4gICAgICAge3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSl9XG4gICAgfCBJRCBMQVIgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgdmFsdWUgb2YgYSB0b2tlbiovXG4gICAgICAge1xuICAgICAgIGxldCB0ayA9ICgkMSxyaHNfcG9zIDEpIGluXG4gICAgICAgIEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAgICBhZGRfcG9zXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXRcblx0XHQge0FzdC5taXg9W107XG5cdFx0ICBBc3QuZGVsdGFfdG9rZW4gPVxuXHRcdCAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLCQzLChBbGdfZXhwci5UT0tFTl9JRCAkMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9KSlcbiAgICAgICB9XG4gICAgfCBTTkFQU0hPVCBwcmludF9leHByIHtBc3QuU05BUFNIT1QgKGZhbHNlLCQyKX1cbiAgICB8IFNUT1AgcHJpbnRfZXhwciB7QXN0LlNUT1AgJDJ9XG4gICAgfCBQUklOVEYgcHJpbnRfZXhwciBTTUFMTEVSIHByaW50X2V4cHIgR1JFQVRFUiB7IEFzdC5QUklOVCAoJDIsJDQpIH1cbiAgICB8IFBMT1RFTlRSWSB7IEFzdC5QTE9URU5UUlkgfVxuICAgIHwgU1BFQ0lFU19PRiBub25lbXB0eV9wcmludF9leHByIG5vbl9lbXB0eV9taXh0dXJlIGJvb2xlYW4geyBBc3QuU1BFQ0lFU19PRiAoJDQsJDIsKCQzLCByaHNfcG9zIDMpKX1cbiAgICA7XG5cbm5vbmVtcHR5X3ByaW50X2V4cHI6XG4gICAgfCBTVFJJTkcge1tQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAkMSldfVxuICAgIHwgbWlkX2FsZ19leHByIHtbUHJpbWl0aXZlcy5BbGdfcGV4cHIgJDFdfVxuICAgIHwgU1RSSU5HIERPVCBub25lbXB0eV9wcmludF9leHByIHtQcmltaXRpdmVzLlN0cl9wZXhwciAoJDEsIHJoc19wb3MgMSk6OiQzfVxuICAgIHwgbWlkX2FsZ19leHByIERPVCBub25lbXB0eV9wcmludF9leHByIHtQcmltaXRpdmVzLkFsZ19wZXhwciAkMTo6JDN9XG4gICAgO1xucHJpbnRfZXhwcjpcbiAgICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgbm9uZW1wdHlfcHJpbnRfZXhwciB7JDF9XG5cbmJvb2xlYW46XG4gICAgfCBUUlVFIHt0cnVlfVxuICAgIHwgRkFMU0Uge2ZhbHNlfVxuICAgIDtcblxudmFyaWFibGVfZGVjbGFyYXRpb246XG4gICAgfCBMQUJFTCBub25fZW1wdHlfbWl4dHVyZVxuXHQgICB7ICgoJDEscmhzX3BvcyAxKSwoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgJDIscmhzX3BvcyAyKSl9XG4gICAgfCBMQUJFTCBhbGdfZXhwciB7KCgkMSxyaHNfcG9zIDEpLCQyKX1cbiAgICB8IElEIGFsZ19leHByIHsoKCQxLHJoc19wb3MgMSksJDIpfVxuICAgIHwgTEFCRUwgZXJyb3Jcblx0ICAgIHtyYWlzZVxuXHQgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpXG5cdCAgICB9XG4gICAgO1xuXG5zbWFsbF9ib29sX2V4cHI6XG4gICAgfCBPUF9QQVIgYm9vbF9leHByIENMX1BBUiB7JDJ9XG4gICAgfCBUUlVFIHthZGRfcG9zIEFsZ19leHByLlRSVUV9XG4gICAgfCBGQUxTRSB7YWRkX3BvcyBBbGdfZXhwci5GQUxTRX1cblxuYm9vbF9leHByOlxuICAgIHwgc21hbGxfYm9vbF9leHByIHsgJDEgfVxuICAgIHwgTk9UIHNtYWxsX2Jvb2xfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsJDIpKX1cbiAgICB8IGJvb2xfZXhwciBBTkQgYm9vbF9leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQsJDEsJDMpKX1cbiAgICB8IGJvb2xfZXhwciBPUiBib29sX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBHUkVBVEVSIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBTTUFMTEVSIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBFUVVBTCBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIERJRkYgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYsJDEsJDMpKX1cbiAgICA7XG5cbnN0YW5kYWxvbmVfYm9vbF9leHByOiBib29sX2V4cHIgRU9GIHskMX1cblxudG9rZW5fZXhwcjpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IFBJUEUgc3VtX3Rva2VuIHskMn1cbiAgICB8IFBJUEUgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wICsgLi4uICsgYV9uIHRfbiwgd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpfVxuICAgIDtcblxuc3VtX3Rva2VuOlxuICAgIHwgT1BfUEFSIHN1bV90b2tlbiBDTF9QQVIgeyQyfVxuICAgIHwgYWxnX2V4cHIgSUQge1soJDEsKCQyLHJoc19wb3MgMikpXX1cbiAgICB8IGFsZ19leHByIElEIFBMVVMgc3VtX3Rva2VuIHtsZXQgbCA9ICQ0IGluICgkMSwoJDIscmhzX3BvcyAyKSk6Omx9XG4gICAgfCBhbGdfZXhwciBUWVBFIElEIHtbKCQxLCgkMyxyaHNfcG9zIDMpKV19XG4gICAgfCBhbGdfZXhwciBUWVBFIElEIFBMVVMgc3VtX3Rva2VuIHtsZXQgbCA9ICQ1IGluICgkMSwoJDMscmhzX3BvcyAzKSk6Omx9XG5cbnJ1bGVfY29udGVudDpcbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHIgYXJyb3cgcGF0dGVybiB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bJDFdOyBBc3Qucm1fdG9rZW4gPSAkMjsgQXN0LnJocz1bJDRdOyBBc3QuYWRkX3Rva2VuID0gJDV9LFxuICAgICAkM31cbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHIgYXJyb3cgdG9rZW5fZXhwclxuICAgIHtBc3QuQXJyb3cge0FzdC5saHM9WyQxXTsgQXN0LnJtX3Rva2VuID0gJDI7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSAkNH0sXG4gICAgICQzfVxuICB8IHRva2VuX2V4cHIgYXJyb3cgcGF0dGVybiB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gJDE7IEFzdC5yaHM9WyQzXTsgQXN0LmFkZF90b2tlbiA9ICQ0fSxcbiAgICAgJDJ9XG4gIHwgdG9rZW5fZXhwciBhcnJvdyB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gJDE7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSAkM30sXG4gICAgICQyfVxuICB8IHBhdHRlcm4gdG9rZW5fZXhwclxuICAgIHsgQXN0LkVkaXQge0FzdC5taXggPSBbJDFdOyBBc3QuZGVsdGFfdG9rZW4gPSAkMn0sZmFsc2UgfTtcbiAgfCBQSVBFIHN1bV90b2tlblxuICAgIHsgQXN0LkVkaXQge0FzdC5taXggPSBbXTsgQXN0LmRlbHRhX3Rva2VuID0gJDJ9LGZhbHNlIH07XG5cbnJ1bGVfZXhwcmVzc2lvbjpcbiAgfCBydWxlX2NvbnRlbnQgYmlyYXRlXG4gICAgeyBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuKSA9ICQyIGluXG4gICAgICBsZXQgcmV3cml0ZSxiaWRpcmVjdGlvbmFsID0gJDEgaW5cbiAgICAgIGFkZF9wb3Mge1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSB9O1xuXG5hcnJvdzpcbiAgICB8IEtBUFBBX1JBUiB7ZmFsc2V9XG4gICAgfCBLQVBQQV9MUkFSIHt0cnVlfVxuICAgIDtcblxubmJyOlxuICAgIHwgSU5GSU5JVFkgeyBOYnIuRiBpbmZpbml0eSB9XG4gICAgfCBGTE9BVCB7IE5ici5GICQxIH1cbiAgICB8IElOVCB7IE5ici5JICQxIH1cblxuY29uc3RhbnQ6XG4gICAgfCBuYnIge2FkZF9wb3MgKEFsZ19leHByLkNPTlNUICQxKX1cbiAgICB8IEVNQVgge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKX1cbiAgICB8IFRNQVgge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKX1cbiAgICB8IENQVVRJTUUge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpfVxuICAgIDtcblxudmFyaWFibGU6XG4gICAgfCBQSVBFIElEIFBJUEUge2FkZF9wb3MgKEFsZ19leHByLlRPS0VOX0lEICgkMikpfVxuICAgIHwgUElQRSBub25fZW1wdHlfbWl4dHVyZSBQSVBFIHsgYWRkX3BvcyAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgJDIpIH1cbiAgICB8IElEIHthZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSICgkMSkpfVxuICAgIHwgTEFCRUwge2FkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKCQxKSl9XG4gICAgfCBUSU1FIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSl9XG4gICAgfCBFVkVOVCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKX1cbiAgICB8IE5VTExfRVZFTlQge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKX1cbiAgICA7XG5cbnNtYWxsX2FsZ19leHByOlxuICAgIHwgT1BfUEFSIGFsZ19leHByIENMX1BBUiB7JDJ9XG4gICAgfCBjb25zdGFudCB7JDF9XG4gICAgfCB2YXJpYWJsZSB7JDF9XG4gICAgfCBNQVggc21hbGxfYWxnX2V4cHIgc21hbGxfYWxnX2V4cHJcblx0ICB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsJDIsJDMpKX1cbiAgICB8IE1JTiBzbWFsbF9hbGdfZXhwciBzbWFsbF9hbGdfZXhwclxuXHQgIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTiwkMiwkMykpfVxuICAgIHwgRVhQT05FTlQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLCQyKSl9XG4gICAgfCBTSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUywkMikpfVxuICAgIHwgQ09TSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLCQyKSl9XG4gICAgfCBUQU4gbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLCQyKSl9XG4gICAgfCBBQlMgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULCQyKSl9XG4gICAgfCBTUVJUIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsJDIpKX1cbiAgICB8IExPRyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csJDIpKX1cbiAgICA7XG5cbm1pZF9hbGdfZXhwcjpcbiAgICB8IE1JTlVTIG1pZF9hbGdfZXhwciB7IGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsJDIpKSB9XG4gICAgfCBzbWFsbF9hbGdfZXhwciB7ICQxIH1cbiAgICB8IG1pZF9hbGdfZXhwciBNVUxUIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgUExVUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgRElWIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBNSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBQT1cgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVywkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIE1PRFVMTyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTU9EVUxPLCQxLCQzKSl9XG5cbmFsZ19leHByOlxuICAgIHwgbWlkX2FsZ19leHByIHskMX1cbiAgICB8IGJvb2xfZXhwciBUSEVOIGFsZ19leHByIEVMU0Ugc21hbGxfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLklGKCQxLCQzLCQ1KSl9XG5cbmJpcmF0ZTpcbiAgICB8IEFUIHJhdGUge2xldCAoazIsazEpID0gJDIgaW4gKGsyLGsxLE5vbmUsTm9uZSl9XG4gICAgfCBBVCByYXRlIENPTU1BIHJhdGUge2xldCAoazIsazEpID0gJDIgaW5cblx0XHRcdCAgbGV0IChrYmFjayxrYmFjazEpID0gJDQgaW5cblx0XHRcdCAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxKX1cbiAgICB8IGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpfVxuICAgIDtcblxucmF0ZTpcbiAgICB8IGFsZ19leHByIE9QX0NVUiBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIHsoJDEsU29tZSAkMyl9XG4gICAgfCBhbGdfZXhwciBPUF9QQVIgYWxnX3dpdGhfcmFkaXVzIENMX1BBUiB7ICgkMSxTb21lICQzKSB9XG4gICAgfCBhbGdfZXhwciB7KCQxLE5vbmUpfVxuICAgIHwgT1BfQ1VSIGFsZ193aXRoX3JhZGl1cyBDTF9DVVJcbiAgICAgIHsoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxTb21lICQyKX1cbiAgICB8IGFsZ19leHByIE9QX0NVUiBDTF9DVVJcbiAgICAgIHsoJDEsU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxOb25lKSl9XG4gICAgfCB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwibWlzc2luZyBydWxlIHJhdGVcIikpfVxuICAgIDtcblxuYWxnX3dpdGhfcmFkaXVzOlxuICAgIHwgYWxnX2V4cHIgeygkMSxOb25lKX1cbiAgICB8IGFsZ19leHByIFRZUEUgYWxnX2V4cHIgeygkMSwgU29tZSAkMyl9XG4gICAgO1xuXG5wYXR0ZXJuOlxuICAgIHwgT1BfUEFSIHBhdHRlcm4gQ0xfUEFSIHskMn1cbiAgICB8IGFnZW50X2V4cHJlc3Npb24gQ09NTUEgcGF0dGVybiB7JDEgOjogJDN9XG4gICAgfCBhZ2VudF9leHByZXNzaW9uIHtbJDFdfVxuO1xuXG5ub25fZW1wdHlfbWl4dHVyZTpcbiAgICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVJcbiAgICB7IFtbQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKV1dIH1cbiAgICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVIgQ09NTUEgcGF0dGVyblxuICAgIHsgW0FzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDMsIEFzdC5Ob01vZCkgOjogJDZdfVxuICAgIDtcblxubW9kX2FnZW50OlxuXHR8IHsgQXN0Lk5vTW9kIH1cblx0fCBQTFVTIHsgQXN0LkNyZWF0ZSB9XG5cdHwgTUlOVVMgeyBBc3QuRXJhc2UgfTtcblxuYWdlbnRfZXhwcmVzc2lvbl9zaWc6XG4gIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uX3NpZyBDTF9QQVIge0FzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDMsIEFzdC5Ob01vZCl9XG4gIHwgSUQgZXJyb3IgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQxXlwiJ1wiKSkpfVxuXG5hZ2VudF9leHByZXNzaW9uOlxuICAgIHwgbW9kX2FnZW50IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVJcblx0IHtBc3QuUHJlc2VudCAoKCQyLHJoc19wb3MgMiksICQ0LCAkMSl9XG4gICAgfCBtb2RfYWdlbnQgSUQgZXJyb3Jcblx0IHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDJeXCInXCIpKSl9XG4gICAgO1xuXG5pbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWc6XG4gICAgLyplbXB0eSovIHtbXX1cbiAgICB8IHBvcnRfZXhwcmVzc2lvbl9zaWcgQ09NTUEgaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnIHskMTo6JDN9XG4gICAgfCBwb3J0X2V4cHJlc3Npb25fc2lnIHtbJDFdfVxuICAgIDtcblxuaW50ZXJmYWNlX2V4cHJlc3Npb246XG4gIC8qZW1wdHkqLyB7W119XG4gICAgfCBwb3J0X2V4cHJlc3Npb24gQ09NTUEgaW50ZXJmYWNlX2V4cHJlc3Npb24geyQxOjokM31cbiAgICB8IHBvcnRfZXhwcmVzc2lvbiB7WyQxXX1cbiAgICA7XG5cbmNvdW50ZXJfdGVzdDpcbiAgIHwgVFlQRSBJTlQgeyBTb21lIChBc3QuQ0VRICQyLHJoc19wb3MgMil9XG4gICB8IFRZUEUgR1JFQVRFUiBJTlQgeyBTb21lIChBc3QuQ0dURSAkMyxyaHNfcG9zIDMpfVxuICAgfCBUWVBFIFNNQUxMRVIgSU5UIHsgU29tZSAoQXN0LkNMVEUgJDMscmhzX3BvcyAzKX1cbiAgIHwgVFlQRSBJRCB7IFNvbWUgKEFzdC5DVkFSICQyLHJoc19wb3MgMil9XG5cbnBvcnRfZXhwcmVzc2lvbjpcbiAgICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkMzsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDM7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNDsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ1OyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZSBsaW5rX3N0YXRlX21vZFxuXHQgeyBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQ1O1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNjsgfSB9XG4gICAgfCBJRCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKCQ0LHJoc19wb3MgNCl9IH1cbiAgICB8IElEIFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLSQ1LHJoc19wb3MgNSl9IH1cbiAgICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgkNSxyaHNfcG9zIDUpfSB9XG4gICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIE1JTlVTIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtICQ2LHJoc19wb3MgNil9IH1cbiAgIHwgSUQgY291bnRlcl90ZXN0XG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gTG9jLmFubm90X3dpdGhfZHVtbXkgMH0gfVxuICAgIDtcblxucG9ydF9leHByZXNzaW9uX3NpZzpcbiAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgbGlua19zdGF0ZV9tb2RcbiAgICBcdCB7IEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPVtdO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQzOyB9IH1cbiAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kMztcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNDsgfSB9XG4gIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlX21vZFxuICAgIFx0IHsgQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNTsgfSB9XG4gIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kNTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ2OyB9IH1cbiAgfCBJRCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgICAgIHsgQXN0LkNvdW50ZXJcbiAgICBcdCAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IE5vbmU7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICQ0LCByaHNfcG9zIDQpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9ICQ0O1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgICAge0FzdC5Db3VudGVyXG4gIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLSQ1KSwgcmhzX3BvcyA1KTtcbiAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IC0kNTtcbiAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgSU5UXG4gICAgICAgeyBsZXQgbWluID1cbiAgICAgICAgICAgIG1hdGNoICQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgIGluIEFzdC5Db3VudGVyXG4gICAgICAgICB7IEFzdC5jb3VudGVyX3NpZ19uYW1lID0gKCQxLHJoc19wb3MgMSk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgJDUsIHJoc19wb3MgNSk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gbWluO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICB7IGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCAkMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC0kNiksIHJoc19wb3MgNik7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW4gO1xuICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBjb3VudGVyX3Rlc3RcbiAgICAgIHsgbGV0IG1pbiA9XG4gICAgICAgICAgIG1hdGNoICQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgaW5cbiAgICAgICBBc3QuQ291bnRlclxuICB7IEFzdC5jb3VudGVyX3NpZ19uYW1lID0gKCQxLHJoc19wb3MgMSk7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgIEFzdC5jb3VudGVyX3NpZ19tYXggPSBOb25lO1xuICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gbWluO1xuICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cblxuXG5pbnRlcm5hbF9zdGF0ZTpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IEtBUFBBX01SSyBpbnRlcm5hbF9zdGF0ZSB7KFNvbWUgJDEscmhzX3BvcyAxKTo6JDJ9XG4gICAgfCBlcnJvclxuICAgICAgIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyBcIklzc3VlIGFmdGVyIGludGVybmFsIHN0YXRlXCIpKX1cbiAgICA7XG5cbmxpbmtfc3RhdGVfbW9kOlxuXHR8IHtOb25lfVxuXHR8IERJViBLQVBQQV9MTksgRE9UIHtTb21lIE5vbmV9XG5cdHwgRElWIEtBUFBBX0xOSyBJTlQge1NvbWUgKFNvbWUgKCQzLHJoc19wb3MgMykpfVxuXHR8IERJViBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgKGFkZF9wb3MgXCJJbmNvcnJlY3QgbGluayBtb2RpZmljYXRpb25cIikpfTtcblxuXG5hX2xpbmtfc3RhdGU6XG4gICAgfCBLQVBQQV9MTksgRE9UIHsoTEthcHBhLkxOS19GUkVFLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgSU5UIHsoTEthcHBhLkxOS19WQUxVRSAoJDIsKCkpLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgS0FQUEFfU0VNSSB7KExLYXBwYS5MTktfU09NRSxyaHNfcG9zIDIpfVxuICAgIHwgS0FQUEFfTE5LIElEIERPVCBJRCB7YWRkX3BvcyAoTEthcHBhLkxOS19UWVBFXG5cdFx0XHRcdCAgICAgICgoJDIscmhzX3BvcyAyKSwoJDQscmhzX3BvcyA0KSkpfVxuICAgIHwgS0FQUEFfV0xEIHthZGRfcG9zIExLYXBwYS5MTktfQU5ZfVxuICAgIHwgS0FQUEFfTE5LIGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIFwiSW52YWxpZCBsaW5rIHN0YXRlXCIpKX1cbjtcblxubGlua19zdGF0ZTpcblx0fCBhX2xpbmtfc3RhdGUgbGlua19zdGF0ZSB7JDE6OiQyfVxuXHR8IGFfbGlua19zdGF0ZSB7WyQxXX07XG5cbmludGVyYWN0aXZlX2NvbW1hbmQ6XG5cdHwgUlVOIE5FV0xJTkUge0FzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKX1cblx0fCBSVU4gYm9vbF9leHByIE5FV0xJTkUge0FzdC5SVU4gJDJ9XG5cdHwgZWZmZWN0X2xpc3QgTkVXTElORSB7QXN0Lk1PRElGWSAkMX1cblx0fCBFT0Yge0FzdC5RVUlUfVxuXHR8IGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSl9XG4lJVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxue1xuICBvcGVuIExleGluZ1xuICBvcGVuIEthcHBhUGFyc2VyXG5cbiAgbGV0IHJlYWNoX2VvZiBsZXhidWYgPVxuICAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZVxuXG4gbGV0IHJlc2V0X2VvZiBsZXhidWYgPVxuICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSBmYWxzZVxuXG4gbGV0IHBvc2l0aW9uIGxleGJ1ZiA9XG4gICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgIChwb3MucG9zX2ZuYW1lLCBwb3MucG9zX2xudW0sIHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJzZXRcIiBTRVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwidW50aWxcIiBVTlRJTCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5sZXQgc3BhY2VfY2hhcnMgPSBbJyAnOydcXG4nOydcXHQnXVxufVxuXG5sZXQgZW9sID0gJ1xccic/ICdcXG4nXG5sZXQgYmxhbmsgPSBbJyAnICdcXHQnXVxubGV0IGludGVnZXIgPSAoWycwJy0nOSddKylcbmxldCByZWFsID1cbiAgICAgKCgoKFsnMCctJzknXSsgKCcuJyBbJzAnLSc5J10qKT8pIHwgKCcuJyBbJzAnLSc5J10rKSlcblx0WydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKylcbiAgfCAoKFsnMCctJzknXSsgJy4nIFsnMCctJzknXSogKSB8IChbJzAnLSc5J10qICcuJyBbJzAnLSc5J10rKSkpXG5sZXQgaWQgPSAoJ18nKiBbJ2EnLSd6JyAnQSctJ1onXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICctJyAnKyddKiApXG5sZXQgaW50ZXJuYWxfc3RhdGUgPSAnficgKFsnMCctJzknICdhJy0neicgJ0EnLSdaJyAnXycgJy0nICcrJ10rKVxubGV0IHBlcnQgPSAnJCcgaWRcblxucnVsZSB0b2tlbiA9IHBhcnNlXG5cdCB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgdG9rZW4gbGV4YnVmfVxuXHQgfCBcIiYmXCIge0FORH1cblx0IHwgXCJ8fFwiIHtPUn1cblx0IHwgXCI8LT5cIiB7S0FQUEFfTFJBUn1cblx0IHwgXCItPlwiIHtLQVBQQV9SQVJ9XG5cdCB8IFwiPC1cIiB7TEFSfVxuXHQgfCBcIjw+XCIge0RJRkZ9XG5cdCB8IHBlcnQgYXMgcyB7bWF0Y2ggcyB3aXRoXG5cdFx0ICAgICAgfCBcIiRERUxcIiAtPiBERUxFVEVcblx0XHQgICAgICB8IFwiJEFERFwiIC0+IElOVFJPXG5cdFx0ICAgICAgfCBcIiRBUFBMWVwiIC0+IEFQUExZXG5cdFx0ICAgICAgfCBcIiRTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG5cdFx0ICAgICAgfCBcIiRTVE9QXCIgLT4gU1RPUFxuXHRcdCAgICAgIHwgXCIkRkxVWFwiIC0+IEZMVVhcblx0XHQgICAgICB8IFwiJFRSQUNLXCIgLT4gVFJBQ0tcblx0XHQgICAgICB8IFwiJFVQREFURVwiIC0+IEFTU0lHTlxuXHRcdCAgICAgIHwgXCIkUFJJTlRcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBSSU5URlwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG5cdFx0ICAgICAgfCBcIiRSVU5cIiAtPiBSVU5cblx0XHQgICAgICB8IFwiJFNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG5cdFx0ICAgICAgfCBzIC0+XG5cdFx0XHQgcmFpc2Vcblx0XHRcdCAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAgKFwiUGVydHVyYmF0aW9uIGVmZmVjdCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHQoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgICAgIH1cblx0IHwgJ1snIGJsYW5rKiAoaWQgYXMgbGFiKSBibGFuayogJ10nIHtcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJFXCIgLT4gRVZFTlRcblx0XHR8IFwiRS1cIiAtPiBOVUxMX0VWRU5UXG5cdFx0fCBcIlRcIiAtPiBUSU1FXG5cdFx0fCBcIlRzaW1cIiAtPiBDUFVUSU1FXG5cdFx0fCBcImxvZ1wiIC0+IExPR1xuXHRcdHwgXCJzaW5cIiAtPiBTSU5VU1xuXHRcdHwgXCJjb3NcIiAtPiBDT1NJTlVTXG5cdFx0fCBcInRhblwiIC0+IFRBTlxuXHRcdHwgXCJleHBcIiAtPiBFWFBPTkVOVFxuXHRcdHwgXCJpbnRcIiAtPiBBQlNcblx0XHR8IFwibW9kXCIgLT4gTU9EVUxPXG5cdFx0fCBcInNxcnRcIiAtPiBTUVJUXG5cdFx0fCBcInRydWVcIiAtPiBUUlVFXG5cdFx0fCBcImZhbHNlXCIgLT4gRkFMU0Vcblx0XHR8IFwicGlcIiAtPiBGTE9BVCAoMy4xNDE1OTI2NSlcblx0XHR8IFwibWF4XCIgLT4gTUFYXG5cdFx0fCBcIm1pblwiIC0+IE1JTlxuXHRcdHwgXCJFbWF4XCIgLT4gRU1BWFxuXHRcdHwgXCJUbWF4XCIgLT4gVE1BWFxuXHRcdHwgXCI/XCIgLT4gVEhFTlxuXHRcdHwgXCI6XCIgLT4gRUxTRVxuXHRcdHwgXCJub3RcIiAtPiBOT1Rcblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgIChcIlN5bWJvbCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgfVxuXHQgfCAnOicge1RZUEV9XG5cdCB8ICc7JyB7U0VNSUNPTE9OfVxuXHQgfCAnXFxcIicge2xldCBzdHIgPSByZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1ZiBpblxuXHRcdCBTVFJJTkcgc3RyfVxuXHQgfCBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FfVxuXHQgfCAnIycge2NvbW1lbnQgbGV4YnVmfVxuXHQgfCAnLycgJyonIHtpbmxpbmVfY29tbWVudCBsZXhidWY7IHRva2VuIGxleGJ1Zn1cblx0IHwgaW50ZWdlciBhcyBuIHt0cnkgSU5UIChpbnRfb2Zfc3RyaW5nIG4pXG5cdCB3aXRoIEZhaWx1cmUgXyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0IChuXlwiIGlzIGEgaW5jb3JyZWN0IGludGVnZXJcIixcblx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cblxuXHQgfCByZWFsIGFzIGYge0ZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZil9XG5cdCB8ICdcXCcnIChbXidcXG4nJ1xcJyddKyBhcyB4KSAnXFwnJ3tMQUJFTCh4KX1cblx0IHwgaWQgYXMgc3RyIHtrZXl3b3JkX29yX2lkIHN0cn1cblx0IHwgJ0AnIHtBVH1cblx0IHwgJywnIHtDT01NQX1cblx0IHwgJygnIHtPUF9QQVJ9XG5cdCB8ICcpJyB7Q0xfUEFSfVxuXHQgfCAneycge09QX0NVUn1cblx0IHwgJ30nIHtDTF9DVVJ9XG5cdCB8ICd8JyB7UElQRX1cblx0IHwgJy4nIHtET1R9XG5cdCB8ICcrJyB7UExVU31cblx0IHwgJyonIHtNVUxUfVxuXHQgfCAnLScge01JTlVTfVxuXHQgfCAnXicge1BPV31cblx0IHwgJy8nIHtESVZ9XG5cdCB8ICc8JyB7U01BTExFUn1cblx0IHwgJz4nIHtHUkVBVEVSfVxuXHQgfCAnPScge0VRVUFMfVxuXHQgfCAnJScgKGlkIGFzIGxhYikgJzonIHtcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuXHRcdHwgXCJpbml0XCIgLT4gSU5JVFxuXHRcdHwgXCJ2YXJcIiAtPiBMRVRcblx0XHR8IFwicGxvdFwiIC0+IFBMT1Rcblx0XHR8IFwibW9kXCIgLT4gUEVSVFxuXHRcdHwgXCJvYnNcIiAtPiBPQlNcblx0XHR8IFwiZGVmXCIgLT4gQ09ORklHXG5cdFx0fCBcInRva2VuXCIgLT4gVE9LRU5cblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChcIkluc3RydWN0aW9uIFxcXCJcIl5zXlwiXFxcIiBub3QgcmVjb2duaXplZFwiLFxuXHRcdFx0XHRcdExvYy5vZl9wb3Ncblx0XHRcdFx0XHQoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0XHQgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICB9XG5cdCB8ICchJyB7S0FQUEFfTE5LfVxuXHQgfCBpbnRlcm5hbF9zdGF0ZSBhcyBzIHtsZXQgaSA9IFN0cmluZy5pbmRleCBzICd+JyBpblxuXHRcdFx0XHRsZXQgciA9IFN0cmluZy5zdWIgcyAoaSsxKSAoU3RyaW5nLmxlbmd0aCBzLWktMSkgaW5cblx0XHRcdFx0S0FQUEFfTVJLIHJcblx0XHRcdCAgICAgICB9XG5cdCB8ICc/JyB7S0FQUEFfV0xEfVxuXHQgfCAnXycge0tBUFBBX1NFTUl9XG5cdCB8IGJsYW5rICB7dG9rZW4gbGV4YnVmfVxuXHQgfCBlb2Yge3JlYWNoX2VvZiBsZXhidWY7IEVPRn1cblx0IHwgXyBhcyBjIHtcblx0XHQgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgIChcImludmFsaWQgdXNlIG9mIGNoYXJhY3RlciBcIl4gU3RyaW5nLm1ha2UgMSBjLFxuXHRcdFx0ICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgIH1cblxuYW5kIHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCA9XG4gIHBhcnNlXG4gIHwgZW9mIHtTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpfVxuICB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1Zn1cbiAgfCBfIGFzIGMge2lmIExpc3QubWVtIGMgY2hhcl9saXN0XG5cdCAgICB0aGVuIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYylcblx0ICAgIGVsc2UgcmVhZF9sYWJlbCAoYzo6YWNjKSBjaGFyX2xpc3QgbGV4YnVmfVxuXG5hbmQgY29tbWVudCA9IHBhcnNlXG5cdCAgICB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkV9XG5cdCAgICB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyB0b2tlbiBsZXhidWZ9XG5cdCAgICB8IGVvZiB7RU9GfVxuXHQgICAgfCBfIHtjb21tZW50IGxleGJ1Zn1cblxuYW5kIGlubGluZV9jb21tZW50ID0gcGFyc2Vcblx0XHQgICB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmfVxuXHRcdCAgIHwgJyonICcvJyB7ICgpIH1cblx0XHQgICB8ICdcXFwiJ1xuXHRcdCAgICAgICB7aWdub3JlIChyZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1Zik7XG5cdFx0XHRpbmxpbmVfY29tbWVudCBsZXhidWZ9XG5cdFx0ICAgfCAnLycgJyonIHtpbmxpbmVfY29tbWVudCBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1Zn1cblx0XHQgICB8IF8ge2lubGluZV9jb21tZW50IGxleGJ1Zn1cbntcbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWxlID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmaWxlfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWxlIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICB0cnlcbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpbGUgaW5cbiAgICAgIGxldCBvdXQgPSBLYXBwYVBhcnNlci5zdGFydF9ydWxlIHRva2VuIGxleGJ1ZiBjb21waWwgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluIG91dFxuICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1zZyxwb3MpIC0+XG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgZXhpdCAzXG59XG4iLCIjIDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuIFxuICBvcGVuIExleGluZ1xuICBvcGVuIEthcHBhUGFyc2VyXG5cbiAgbGV0IHJlYWNoX2VvZiBsZXhidWYgPVxuICAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZVxuXG4gbGV0IHJlc2V0X2VvZiBsZXhidWYgPVxuICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSBmYWxzZVxuXG4gbGV0IHBvc2l0aW9uIGxleGJ1ZiA9XG4gICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgIChwb3MucG9zX2ZuYW1lLCBwb3MucG9zX2xudW0sIHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJzZXRcIiBTRVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwidW50aWxcIiBVTlRJTCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5sZXQgc3BhY2VfY2hhcnMgPSBbJyAnOydcXG4nOydcXHQnXVxuXG4jIDMxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjEzXFwyNTVcXDIxNFxcMjU1XFwyMTVcXDI1NVxcMjE3XFwyNTVcXDA4NFxcMDAwXFwyMTlcXDI1NVxcMTYwXFwwMDBcXFxuICAgIFxcMjIxXFwyNTVcXDIyMlxcMjU1XFwyMjVcXDI1NVxcMjI3XFwyNTVcXDIyOFxcMjU1XFwyMzFcXDI1NVxcMjMyXFwyNTVcXDIzM1xcMjU1XFxcbiAgICBcXDIzNFxcMjU1XFwyMzVcXDI1NVxcMjM2XFwyNTVcXDI0MFxcMDAwXFwwNDJcXDAwMVxcMTM2XFwwMDBcXDE1OVxcMDAwXFwxMTlcXDAwMVxcXG4gICAgXFwwNTFcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFwwMDFcXDAwMFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMTU3XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDAzNFxcMDAwXFwwODNcXDAwMFxcMDA2XFwwMDBcXDA5M1xcMDAwXFwxNjhcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDE3MFxcMDAxXFwyNTRcXDI1NVxcMjUzXFwyNTVcXDI0OVxcMjU1XFwwODBcXDAwMFxcMjUyXFwyNTVcXDI1MVxcMjU1XFwwMzlcXDAwMlxcXG4gICAgXFwwOTdcXDAwMlxcMjExXFwwMDJcXDAxM1xcMDAzXFwxMjdcXDAwM1xcMjQ3XFwyNTVcXDIxMlxcMDAyXFwyNDFcXDI1NVxcMTQyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDNcXDE1NVxcMDAxXFwxNzRcXDAwMlxcMTE3XFwwMDNcXDEzOFxcMDAwXFwyMzhcXDI1NVxcMTg1XFwwMDNcXDAwOVxcMDA0XFxcbiAgICBcXDA2N1xcMDA0XFwyMjBcXDI1NVxcMTQ3XFwwMDRcXDI0N1xcMDAxXFwyNTNcXDI1NVxcMjIzXFwwMDJcXDI1NVxcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjI1XFwwMDJcXDE3OFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzOVxcMDAyXFwyNTVcXDI1NVxcMDA1XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDAwNlxcMDAwXFwxNDNcXDAwM1xcMDA0XFwwMDVcXDI1MVxcMjU1XFwxMDFcXDAwMFxcMjUzXFwyNTVcXDA5N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMjU0XFwyNTVcXDI1MlxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDJcXDAwMFxcMjU1XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDM5XFwwMDBcXDA0MlxcMDAwXFwwMjZcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMjlcXDAwMFxcMDMyXFwwMDBcXDAyNVxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMzhcXDAwMFxcMDI3XFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDZcXDAwMFxcMDI4XFwwMDBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDA3XFwwMDBcXDAzNlxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAzM1xcMDAwXFwwMjJcXDAwMFxcMDI0XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDMwXFwwMDBcXDAyOVxcMDAwXFwwMzRcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMzFcXDAwMFxcMDM3XFwwMDBcXDA1NFxcMDAwXFwwMTBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE0XFwwMDBcXDAzNVxcMDAwXFwwMTNcXDAwMFxcMDA1XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNjZcXDAwMFxcMDQyXFwwMDBcXDA0MVxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNDVcXDAwMFxcMDkxXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA0M1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDU2XFwwMDBcXDA1MVxcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwNTVcXDAwMFxcMDUxXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNjlcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3MVxcMDAwXFwwNzNcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjdcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMzRcXDAwMFxcMDA1XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDQ0XFwwMDBcXDA4NVxcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwMzRcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDYwXFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjFcXDAwMFxcMDIwXFwwMDBcXDA2MFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMzFcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDM3XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDIzXFwwMDBcXDAzMVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwNDdcXDAwMFxcMDY3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1M1xcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNjlcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA2OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OVxcMDAwXFwwNTNcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwODJcXDAwMFxcMDgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgyXFwwMDBcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NFxcMDAwXFwyNTVcXDI1NVxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwxMzhcXDAwMFxcMjUyXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcXDI1NVxcMDAyXFwyNTVcXDI1NVxcMDAzXFwyNTVcXDI1NVxcMDAwXFwwMDJcXDAwMVxcMDAzXFwyNTVcIjtcbn1cblxubGV0IHJlYyB0b2tlbiBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSA0ICgtMSk7IF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgdG9rZW4gbGV4YnVmKVxuIyA2NDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDUxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChBTkQpXG4jIDY0NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKE9SKVxuIyA2NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAoS0FQUEFfTFJBUilcbiMgNjU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyA1NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoS0FQUEFfUkFSKVxuIyA2NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChMQVIpXG4jIDY2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDYgLT5cbiMgNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKERJRkYpXG4jIDY3MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDcgLT5cbmxldFxuIyA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICBzXG4jIDY3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChtYXRjaCBzIHdpdGhcblx0XHQgICAgICB8IFwiJERFTFwiIC0+IERFTEVURVxuXHRcdCAgICAgIHwgXCIkQUREXCIgLT4gSU5UUk9cblx0XHQgICAgICB8IFwiJEFQUExZXCIgLT4gQVBQTFlcblx0XHQgICAgICB8IFwiJFNOQVBTSE9UXCIgLT4gU05BUFNIT1Rcblx0XHQgICAgICB8IFwiJFNUT1BcIiAtPiBTVE9QXG5cdFx0ICAgICAgfCBcIiRGTFVYXCIgLT4gRkxVWFxuXHRcdCAgICAgIHwgXCIkVFJBQ0tcIiAtPiBUUkFDS1xuXHRcdCAgICAgIHwgXCIkVVBEQVRFXCIgLT4gQVNTSUdOXG5cdFx0ICAgICAgfCBcIiRQUklOVFwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUFJJTlRGXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQTE9URU5UUllcIiAtPiBQTE9URU5UUllcblx0XHQgICAgICB8IFwiJFJVTlwiIC0+IFJVTlxuXHRcdCAgICAgIHwgXCIkU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0Zcblx0XHQgICAgICB8IHMgLT5cblx0XHRcdCByYWlzZVxuXHRcdFx0ICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgICAoXCJQZXJ0dXJiYXRpb24gZWZmZWN0IFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgICAgKVxuIyA3MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA4IC0+XG5sZXRcbiMgNzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYlxuIyA3MDYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMSkgaW5cbiMgNzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiRVwiIC0+IEVWRU5UXG5cdFx0fCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuXHRcdHwgXCJUXCIgLT4gVElNRVxuXHRcdHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuXHRcdHwgXCJsb2dcIiAtPiBMT0dcblx0XHR8IFwic2luXCIgLT4gU0lOVVNcblx0XHR8IFwiY29zXCIgLT4gQ09TSU5VU1xuXHRcdHwgXCJ0YW5cIiAtPiBUQU5cblx0XHR8IFwiZXhwXCIgLT4gRVhQT05FTlRcblx0XHR8IFwiaW50XCIgLT4gQUJTXG5cdFx0fCBcIm1vZFwiIC0+IE1PRFVMT1xuXHRcdHwgXCJzcXJ0XCIgLT4gU1FSVFxuXHRcdHwgXCJ0cnVlXCIgLT4gVFJVRVxuXHRcdHwgXCJmYWxzZVwiIC0+IEZBTFNFXG5cdFx0fCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG5cdFx0fCBcIm1heFwiIC0+IE1BWFxuXHRcdHwgXCJtaW5cIiAtPiBNSU5cblx0XHR8IFwiRW1heFwiIC0+IEVNQVhcblx0XHR8IFwiVG1heFwiIC0+IFRNQVhcblx0XHR8IFwiP1wiIC0+IFRIRU5cblx0XHR8IFwiOlwiIC0+IEVMU0Vcblx0XHR8IFwibm90XCIgLT4gTk9UXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAoXCJTeW1ib2wgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIClcbiMgNzM5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMDggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoVFlQRSlcbiMgNzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbiMgMTA5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFNFTUlDT0xPTilcbiMgNzQ5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTEwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChsZXQgc3RyID0gcmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYgaW5cblx0XHQgU1RSSU5HIHN0cilcbiMgNzU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTIgLT5cbiMgMTEyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FKVxuIyA3NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMyAtPlxuIyAxMTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoY29tbWVudCBsZXhidWYpXG4jIDc2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE0IC0+XG4jIDExNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAoaW5saW5lX2NvbW1lbnQgbGV4YnVmOyB0b2tlbiBsZXhidWYpXG4jIDc3MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE1IC0+XG5sZXRcbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIG5cbiMgNzc2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDExNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICh0cnkgSU5UIChpbnRfb2Zfc3RyaW5nIG4pXG5cdCB3aXRoIEZhaWx1cmUgXyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0IChuXlwiIGlzIGEgaW5jb3JyZWN0IGludGVnZXJcIixcblx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgNzg0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTYgLT5cbmxldFxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgZlxuIyA3OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgKEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikpXG4jIDc5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE3IC0+XG5sZXRcbiMgMTIyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA4MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDEyMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTEFCRUwoeCkpXG4jIDgwNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE4IC0+XG5sZXRcbiMgMTIzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICBzdHJcbiMgODEwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChrZXl3b3JkX29yX2lkIHN0cilcbiMgODE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTkgLT5cbiMgMTI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEFUKVxuIyA4MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMCAtPlxuIyAxMjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQ09NTUEpXG4jIDgyNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIxIC0+XG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChPUF9QQVIpXG4jIDgyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIyIC0+XG4jIDEyNyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDTF9QQVIpXG4jIDgzNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIzIC0+XG4jIDEyOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChPUF9DVVIpXG4jIDgzOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI0IC0+XG4jIDEyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDTF9DVVIpXG4jIDg0NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI1IC0+XG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChQSVBFKVxuIyA4NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNiAtPlxuIyAxMzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRE9UKVxuIyA4NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNyAtPlxuIyAxMzIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoUExVUylcbiMgODU5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjggLT5cbiMgMTMzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE1VTFQpXG4jIDg2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI5IC0+XG4jIDEzNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChNSU5VUylcbiMgODY5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzAgLT5cbiMgMTM1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFBPVylcbiMgODc0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzEgLT5cbiMgMTM2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKERJVilcbiMgODc5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzIgLT5cbiMgMTM3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFNNQUxMRVIpXG4jIDg4NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMzIC0+XG4jIDEzOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChHUkVBVEVSKVxuIyA4ODkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNCAtPlxuIyAxMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRVFVQUwpXG4jIDg5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM1IC0+XG5sZXRcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIGxhYlxuIyA5MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoXG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcblx0XHR8IFwiaW5pdFwiIC0+IElOSVRcblx0XHR8IFwidmFyXCIgLT4gTEVUXG5cdFx0fCBcInBsb3RcIiAtPiBQTE9UXG5cdFx0fCBcIm1vZFwiIC0+IFBFUlRcblx0XHR8IFwib2JzXCIgLT4gT0JTXG5cdFx0fCBcImRlZlwiIC0+IENPTkZJR1xuXHRcdHwgXCJ0b2tlblwiIC0+IFRPS0VOXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoXCJJbnN0cnVjdGlvbiBcXFwiXCJec15cIlxcXCIgbm90IHJlY29nbml6ZWRcIixcblx0XHRcdFx0XHRMb2Mub2ZfcG9zXG5cdFx0XHRcdFx0KExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdFx0IChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgKVxuIyA5MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNiAtPlxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoS0FQUEFfTE5LKVxuIyA5MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNyAtPlxubGV0XG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgc1xuIyA5MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgaSA9IFN0cmluZy5pbmRleCBzICd+JyBpblxuXHRcdFx0XHRsZXQgciA9IFN0cmluZy5zdWIgcyAoaSsxKSAoU3RyaW5nLmxlbmd0aCBzLWktMSkgaW5cblx0XHRcdFx0S0FQUEFfTVJLIHJcblx0XHRcdCAgICAgICApXG4jIDkzOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM4IC0+XG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9XTEQpXG4jIDk0MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM5IC0+XG4jIDE2MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9TRU1JKVxuIyA5NDggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MCAtPlxuIyAxNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAodG9rZW4gbGV4YnVmKVxuIyA5NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MSAtPlxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAocmVhY2hfZW9mIGxleGJ1ZjsgRU9GKVxuIyA5NTggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MiAtPlxubGV0XG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICBjXG4jIDk2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChcblx0XHQgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgIChcImludmFsaWQgdXNlIG9mIGNoYXJhY3RlciBcIl4gU3RyaW5nLm1ha2UgMSBjLFxuXHRcdFx0ICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgIClcbiMgOTczIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGFiZWxfcmVjIGFjYyBjaGFyX2xpc3QgbGV4YnVmIDY3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpKVxuIyA5ODUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1ZilcbiMgOTkwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICBjXG4jIDk5NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChpZiBMaXN0Lm1lbSBjIGNoYXJfbGlzdFxuXHQgICAgdGhlbiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpXG5cdCAgICBlbHNlIHJlYWRfbGFiZWwgKGM6OmFjYykgY2hhcl9saXN0IGxleGJ1ZilcbiMgMTAwMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGNvbW1lbnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiA3NFxuYW5kIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTgyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FKVxuIyAxMDE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxODMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgdG9rZW4gbGV4YnVmKVxuIyAxMDE5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxODQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoRU9GKVxuIyAxMDI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAxODUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGNvbW1lbnQgbGV4YnVmKVxuIyAxMDI5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGlubGluZV9jb21tZW50IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgbGV4YnVmIDgzXG5hbmQgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTg4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA0MSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTg5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICggKCkgKVxuIyAxMDQ2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxOTEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGlnbm9yZSAocmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYpO1xuXHRcdFx0aW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDUyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAxOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAxOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA2MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDE5NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmlsZSA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZmlsZX0gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmlsZSA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgdHJ5XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWxlIGluXG4gICAgICBsZXQgb3V0ID0gS2FwcGFQYXJzZXIuc3RhcnRfcnVsZSB0b2tlbiBsZXhidWYgY29tcGlsIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpbiBvdXRcbiAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtc2cscG9zKSAtPlxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgIGV4aXQgM1xuXG4jIDEwODYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2F0YWxvZyA9IEtmaWxlcy5jcmVhdGUgKClcblxudHlwZSBfIGhhbmRsZSA9XG4gIHwgTm90aGluZyA6IHVuaXQgaGFuZGxlXG4gIHwgQ2F0YWxvZyA6IEtmaWxlcy5jYXRhbG9nX2l0ZW0gbGlzdCBoYW5kbGVcbiAgfCBJbmZvIDogKHN0cmluZyAqIGludCkgaGFuZGxlXG4gIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZVxuXG50eXBlIGJveCA9XG4gIHwgQiA6ICdhIGhhbmRsZSAqIGludCAqICgnYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IC0+IGJveFxuXG5sZXQgcmVwbHkgcG9zdCB3cml0ZV92IGlkIHYgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlXG4gICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpO1xuICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgIFJlc3VsdF91dGlsLndyaXRlX3Qgd3JpdGVfdlxuICAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9saXN0IFJlc3VsdF91dGlsLndyaXRlX21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgYiB2KTtcbiAgICAgICAgICBdKVxuICAgICAgKClcbiAgaW5cbiAgcG9zdCBtZXNzYWdlXG5cbmxldCB3cml0ZV9jYXRhbG9nX2l0ZW1zID0gSnNvblV0aWwud3JpdGVfbGlzdCBLZmlsZXMud3JpdGVfY2F0YWxvZ19pdGVtXG5cbmxldCBsaWZ0X2Fuc3dlciA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciB0ZXh0IC0+XG4gICAgUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgIFsgeyBSZXN1bHRfdXRpbC5yYW5nZSA9IE5vbmU7IHNldmVyaXR5ID0gTG9ncy5FcnJvcjsgdGV4dCB9IF1cblxubGV0IG9uX21lc3NhZ2UgeWllbGQgcG9zdCA9XG4gIGxldCBjdXJyZW50X2lkID0gcmVmIE5vbmUgaW5cbiAgZnVuIHRleHQgLT5cbiAgICB0cnlcbiAgICAgIEx3dC5iaW5kXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgICAgICAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCAoZnVuIHN0IGIgbXNnX2lkIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gY3VycmVudF9pZCA6PSBTb21lIG1zZ19pZCBpblxuICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyAoZnVuIHN0IGIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlQ2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuY2F0YWxvZyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKENhdGFsb2csIG1zZ19pZCwgUmVzdWx0X3V0aWwub2sgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlQ3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBLZmlsZXMuZmlsZV9jcmVhdGUgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlR2V0XCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfZ2V0IH5pZCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKEluZm8sIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlTW92ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfbW92ZSB+cG9zaXRpb24gfmlkIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVVcGRhdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfcGF0Y2ggfmlkIGNvbnRlbnQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZURlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX2RlbGV0ZSB+aWQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiUHJvamVjdFBhcnNlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LmJpbmQgKEtmaWxlcy5wYXJzZSB5aWVsZCBjYXRhbG9nKSAoZnVuIG91dCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoQXN0LCBtc2dfaWQsIG91dCkpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIlByb2plY3RPdmVyd3JpdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IEtmaWxlcy5vdmVyd3JpdGUgaWQgY29udGVudCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoQlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTm90aGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJJbnZhbGlkIGRpcmVjdGl2ZTogXCIgXiB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gKSkpKVxuICAgICAgICAgICAgICAgICAgc3QgYikpXG4gICAgICAgICAgIHRleHQpXG4gICAgICAgIChmdW4gYW5zd2VyIC0+XG4gICAgICAgICAgbGV0ICgpID0gY3VycmVudF9pZCA6PSBOb25lIGluXG4gICAgICAgICAgbWF0Y2ggYW5zd2VyIHdpdGhcbiAgICAgICAgICB8IEIgKENhdGFsb2csIG1zZ19pZCwgeCkgLT4gcmVwbHkgcG9zdCB3cml0ZV9jYXRhbG9nX2l0ZW1zIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChOb3RoaW5nLCBtc2dfaWQsIHgpIC0+XG4gICAgICAgICAgICByZXBseSBwb3N0IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChBc3QsIG1zZ19pZCwgeCkgLT4gcmVwbHkgcG9zdCBBc3Qud3JpdGVfcGFyc2luZ19jb21waWwgbXNnX2lkIHhcbiAgICAgICAgICB8IEIgKEluZm8sIG1zZ19pZCwgeCkgLT5cbiAgICAgICAgICAgIHJlcGx5IHBvc3RcbiAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nXG4gICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICAgICAgICAgIG1zZ19pZCB4KVxuICAgIHdpdGggZSAtPlxuICAgICAgKG1hdGNoICFjdXJyZW50X2lkIHdpdGhcbiAgICAgIHwgU29tZSBtc2dfaWQgLT5cbiAgICAgICAgcmVwbHkgcG9zdCBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBtc2dfaWRcbiAgICAgICAgICAoUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjtcbiAgICAgICAgICAgICAgICAgcmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJFeGNlcHRpb24gcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBlO1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICBdKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgfCBZb2pzb24uSnNvbl9lcnJvciB4IC0+XG4gICAgICAgICAgcG9zdFxuICAgICAgICAgICAgKFlvanNvbi50b19zdHJpbmdcbiAgICAgICAgICAgICAgIChgU3RyaW5nXG4gICAgICAgICAgICAgICAgICh4IF4gXCJcXG5NZXNzYWdlIGZvcm1hdCBtdXN0IGJlIFsgaWQsIFtcXFwiUmVxdWVzdFxcXCIsIC4uLiBdIF1cIikpKVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBTdHJpbmdcbiAgICAgICAgICAgICAgICAgKFwidW5leHBlY3RlZCBleGNlcHRpb246IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGVcbiAgICAgICAgICAgICAgICBeIFwiXFxuTWVzc2FnZSBmb3JtYXQgbXVzdCBiZSBbIGlkLCBbXFxcIlJlcXVlc3RcXFwiLCAuLi4gXSBdXCIpKSkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBBc3RcblxubGV0IHJlYyBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiAoYWxnLCBwb3MpID1cbiAgbWF0Y2ggYWxnIHdpdGhcbiAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBhc3QgLT5cbiAgICAobWF0Y2ggZG9tYWluIHdpdGhcbiAgICB8IFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikgLT5cbiAgICAgIGxldCBkb21haW4nLCBjY3MgPVxuICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZVxuICAgICAgICAgIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluID9vcmlnaW4gYXN0XG4gICAgICBpblxuICAgICAgbGV0IG91dF9jY3MgPSBMaXN0Lm1hcCAoZnVuICh4LCBfKSAtPiBBcnJheS5tYXAgZnN0IHgpIGNjcyBpblxuICAgICAgU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluJyksIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBvdXRfY2NzLCBwb3MpXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoXCJUaGVvcml0aWNhbGx5IHB1cmUgYWxnX2V4cHIgaGFzIGEgbWl4dHVyZVwiLCBwb3MpKSlcbiAgfCBBbGdfZXhwci5BTEdfVkFSIGkgLT4gZG9tYWluLCAoQWxnX2V4cHIuQUxHX1ZBUiBpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgaSAtPiBkb21haW4sIChBbGdfZXhwci5UT0tFTl9JRCBpLCBwb3MpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIG9wIC0+IGRvbWFpbiwgKEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCwgcG9zKVxuICB8IEFsZ19leHByLkNPTlNUIG4gLT4gZG9tYWluLCAoQWxnX2V4cHIuQ09OU1QgbiwgcG9zKVxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBsZXQgZG9tYWluJycsIGInID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhJywgYicpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgZG9tYWluJywgKEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEnKSwgcG9zKVxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIGxldCBkb21haW4nLCBjb25kJyA9XG4gICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gY29uZFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCB5ZXMnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIHllcyBpblxuICAgIGxldCBkb21haW4nJycsIG5vJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJycgbm8gaW5cbiAgICBkb21haW4nJycsIChBbGdfZXhwci5JRiAoY29uZCcsIHllcycsIG5vJyksIHBvcylcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChcIkNhbm5vdCBkZWFsIHdpdGggZGVyaXZhdGl2ZSBpbiBleHByZXNzaW9uc1wiLCBwb3MpKVxuXG5hbmQgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluID0gZnVuY3Rpb25cbiAgfCBBbGdfZXhwci5UUlVFLCBwb3MgLT4gZG9tYWluLCAoQWxnX2V4cHIuVFJVRSwgcG9zKVxuICB8IEFsZ19leHByLkZBTFNFLCBwb3MgLT4gZG9tYWluLCAoQWxnX2V4cHIuRkFMU0UsIHBvcylcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBkb21haW4nLCAoQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEnKSwgcG9zKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgYiBpblxuICAgIGRvbWFpbicnLCAoQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEnLCBiJyksIHBvcylcblxubGV0IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiAoYWxnLCBwb3MpID1cbiAgc25kIEBAIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gTm9uZSAoYWxnLCBwb3MpXG5cbmxldCBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uID9vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgKGFsZywgcG9zKSA9XG4gIG1hdGNoXG4gICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgKFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikpXG4gICAgICAoYWxnLCBwb3MpXG4gIHdpdGhcbiAgfCBTb21lIChfLCBfLCBkb21haW4pLCBhbGcgLT4gZG9tYWluLCBhbGdcbiAgfCBOb25lLCBfIC0+IGZhaWx3aXRoIFwiZG9tYWluIGhhcyBiZWVuIGxvc3QgaW4gRXhwci5jb21waWxlX2FsZ1wiXG5cbmxldCBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiA/b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgIChhbGcsIHBvcykgPVxuICBtYXRjaFxuICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAoU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluKSlcbiAgICAgIChhbGcsIHBvcylcbiAgd2l0aFxuICB8IFNvbWUgKF8sIF8sIGRvbWFpbiksIGFsZyAtPiBkb21haW4sIGFsZ1xuICB8IE5vbmUsIF8gLT4gZmFpbHdpdGggXCJkb21haW4gaGFzIGJlZW4gbG9zdCBpbiBFeHByLmNvbXBpbGVfYWxnXCJcblxubGV0IHRva2VuaWZ5IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGwgPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIChhbGdfZXhwciwgaWQpIChkb21haW4sIG91dCkgLT5cbiAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgICAgaW5cbiAgICAgIGRvbWFpbicsIChhbGcsIGlkKSA6OiBvdXQpXG4gICAgbCAoZG9tYWluLCBbXSlcblxuKCogdHJhbnNmb3JtIGFuIExLYXBwYSBydWxlIGludG8gYSBQcmltaXRpdmVzIHJ1bGUgKilcbmxldCBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgP2RlcHNfbWFjaGluZXJ5IH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBkb21haW4gfnN5bnRheF9yZWYgKHJ1bGUsIF8pID1cbiAgbGV0IGRvbWFpbicsIGRlbHRhX3Rva3MgPVxuICAgIHRva2VuaWZ5IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICBydWxlLkxLYXBwYS5yX2RlbHRhX3Rva2Vuc1xuICBpblxuICAoKiBsZXQgb25lX3NpZGUgc3ludGF4X3JlZiBsYWJlbCAoZG9tYWluLGRlcHNfbWFjaGluZXJ5LHVuYXJ5X2NjcyxhY2MpXG4gICAgICAgcmF0ZSB1bmFyeV9yYXRlIGxocyByaHMgcm0gYWRkID0qKVxuICBsZXQgb3JpZ2luLCBkZXBzID1cbiAgICBtYXRjaCBkZXBzX21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgKG8sIGQpIC0+IFNvbWUgbywgU29tZSBkXG4gIGluXG4gIGxldCB1bmFyeV9pbmZvcyA9XG4gICAgbGV0IGNycCA9XG4gICAgICBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gcnVsZS5MS2FwcGEucl9yYXRlXG4gICAgaW5cbiAgICBtYXRjaCBydWxlLkxLYXBwYS5yX3VuX3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmdW4gXyAtPiBjcnAsIE5vbmVcbiAgICB8IFNvbWUgKCgoXywgcG9zKSBhcyByYXRlKSwgZGlzdCkgLT5cbiAgICAgIGxldCBkaXN0JyA9XG4gICAgICAgIG1hdGNoIGRpc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZCAtPlxuICAgICAgICAgIGxldCBkJywgXyA9IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkIGluXG4gICAgICAgICAgU29tZSBkJ1xuICAgICAgaW5cbiAgICAgIGxldCB1bnJhdGUgPSBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gcmF0ZSBpblxuICAgICAgZnVuIGNjcyAtPlxuICAgICAgICAobWF0Y2ggQXJyYXkubGVuZ3RoIGNjcyB3aXRoXG4gICAgICAgIHwgMCB8IDEgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF90ZXh0IGZcbiAgICAgICAgICAgICAgICAgIFwiVXNlbGVzcyBtb2xlY3VsYXIgYW1iaWd1aXR5LCB0aGUgcnVsZXMgaXMgYWx3YXlzIGNvbnNpZGVyZWQgXFxcbiAgICAgICAgICAgICAgICAgICBhcyB1bmFyeS5cIilcbiAgICAgICAgICBpblxuICAgICAgICAgIHVucmF0ZSwgTm9uZVxuICAgICAgICB8IDIgLT4gY3JwLCBTb21lICh1bnJhdGUsIGRpc3QnKVxuICAgICAgICB8IG4gLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJVbmFyeSBydWxlIGRvZXMgbm90IGRlYWwgd2l0aCBcIiBeIHN0cmluZ19vZl9pbnQgblxuICAgICAgICAgICAgICAgICBeIFwiIGNvbm5lY3RlZCBjb21wb25lbnRzLlwiLFxuICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gIGluXG4gIGxldCBidWlsZCBkZXBzIChvcmlnaW4sIGNjcywgc3ludGF4LCAobmVnLCBwb3MpKSA9XG4gICAgbGV0IGNjcycgPSBBcnJheS5tYXAgZnN0IGNjcyBpblxuICAgIGxldCByYXRlLCB1bnJhdGUgPSB1bmFyeV9pbmZvcyBjY3MnIGluXG4gICAgKCBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICBtYXRjaCBvcmlnaW4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIG8gLT4gb1xuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwidWdseSBFdmFsLnJ1bGVfb2ZfYXN0XCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB4JyA9XG4gICAgICAgICAgICBtYXRjaCB1bnJhdGUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHhcbiAgICAgICAgICAgIHwgU29tZSAodXIsIF8pIC0+IEFsZ19leHByLmFkZF9kZXAgeCBvcmlnaW4gdXJcbiAgICAgICAgICBpblxuICAgICAgICAgIEFsZ19leHByLmFkZF9kZXAgeCcgb3JpZ2luIHJhdGUpXG4gICAgICAgIGRlcHMsXG4gICAgICB7XG4gICAgICAgIFByaW1pdGl2ZXMudW5hcnlfcmF0ZSA9IHVucmF0ZTtcbiAgICAgICAgUHJpbWl0aXZlcy5yYXRlO1xuICAgICAgICBQcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzID0gY2NzJztcbiAgICAgICAgUHJpbWl0aXZlcy5yZW1vdmVkID0gbmVnO1xuICAgICAgICBQcmltaXRpdmVzLmluc2VydGVkID0gcG9zO1xuICAgICAgICBQcmltaXRpdmVzLmRlbHRhX3Rva2VucyA9IGRlbHRhX3Rva3M7XG4gICAgICAgIFByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgPSBzeW50YXhfcmVmO1xuICAgICAgICBQcmltaXRpdmVzLmluc3RhbnRpYXRpb25zID0gc3ludGF4O1xuICAgICAgfSApXG4gIGluXG4gIGxldCBydWxlX21peHR1cmVzLCAoZG9tYWluJywgb3JpZ2luJykgPVxuICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlXG4gICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgP29yaWdpbiBydWxlLkxLYXBwYS5yX21peFxuICAgICAgcnVsZS5MS2FwcGEucl9jcmVhdGVkXG4gIGluXG4gIGxldCBkZXBzX2FsZ3MnLCBydWxlc19sID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gciAoZGVwc19hbGdzLCBvdXQpIC0+XG4gICAgICAgIGxldCBkZXBzX2FsZ3MnLCByJycgPSBidWlsZCBkZXBzX2FsZ3MgciBpblxuICAgICAgICBkZXBzX2FsZ3MnLCByJycgOjogb3V0KVxuICAgICAgcnVsZV9taXh0dXJlcyAoZGVwcywgW10pXG4gIGluXG4gICggZG9tYWluJyxcbiAgICAobWF0Y2ggb3JpZ2luJyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbyAtPlxuICAgICAgU29tZVxuICAgICAgICAoIG8sXG4gICAgICAgICAgbWF0Y2ggZGVwc19hbGdzJyB3aXRoXG4gICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcInVnbHkgRXZhbC5ydWxlX29mX2FzdFwiICkpLFxuICAgIHJ1bGVzX2wgKVxuXG5sZXQgb2JzX29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZGVwcyByZXMgPVxuICBsZXQgZG9tYWluLCBvdXQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChkb21haW4sIGNvbnQpIGFsZ19leHByIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBhbGdfcG9zID1cbiAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBhbGdfcG9zIDo6IGNvbnQpXG4gICAgICAoZG9tYWluLCBbXSkgcmVzLm9ic2VydmFibGVzXG4gIGluXG4gIGlmIExpc3QuZXhpc3RzIChBbGdfZXhwci5oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWU6ZmFsc2UgYWxnX2RlcHMpIG91dCB0aGVuXG4gICAgZG9tYWluLCBMaXN0LnJldiBvdXRcbiAgZWxzZVxuICAgICggZG9tYWluLFxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUilcbiAgICAgIDo6IExpc3QucmV2IG91dCApXG5cbmxldCBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gZXggPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIGVsIChkb21haW4sIG91dCkgLT5cbiAgICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgcyAtPiBkb21haW4sIFByaW1pdGl2ZXMuU3RyX3BleHByIHMgOjogb3V0XG4gICAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIGFzdF9hbGcgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYXN0X2FsZ1xuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBQcmltaXRpdmVzLkFsZ19wZXhwciBhbGcgOjogb3V0KVxuICAgIGV4IChkb21haW4sIFtdKVxuXG5sZXQgY2Zsb3dzX29mX2xhYmVsIH5kZWJ1Z19tb2RlIG9yaWdpbiB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBvblxuICAgIGFsZ3MgcnVsZXMgKGxhYmVsLCBwb3MpIHJldl9lZmZlY3RzID1cbiAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICBpZiBvbiB0aGVuXG4gICAgICBQcmltaXRpdmVzLkNGTE9XIChTb21lIGxhYmVsLCB4LCB0ZXN0cykgOjogbFxuICAgIGVsc2VcbiAgICAgIFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKFNvbWUgbGFiZWwsIHgpIDo6IGxcbiAgaW5cbiAgbGV0IG1peCA9XG4gICAgdHJ5XG4gICAgICBsZXQgXywgKHJ1bGUsIF8pID1cbiAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUsIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAobCwgXyksIF8gLT4gbCA9IGxhYmVsKVxuICAgICAgICAgIHJ1bGVzXG4gICAgICBpblxuICAgICAgTEthcHBhLnRvX21haW50YWluZWQgcnVsZS5MS2FwcGEucl9taXhcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IF8sICh2YXIsIF8pID0gTGlzdC5maW5kIChmdW4gKChsLCBfKSwgXykgLT4gbCA9IGxhYmVsKSBhbGdzIGluXG4gICAgICAgICBtYXRjaCB2YXIgd2l0aFxuICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gbWl4XG4gICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgX1xuICAgICAgICAgfCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gX1xuICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlXG4gICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICggXCJMYWJlbCAnXCIgXiBsYWJlbFxuICAgICAgICAgICAgICAgIF4gXCInIGRvZXMgbm90IHJlZmVyIHRvIGEgbm9uIGFtYmlndW91cyBLYXBwYSBleHByZXNzaW9uXCIsXG4gICAgICAgICAgICAgICAgcG9zICkpKVxuICBpblxuICBsZXQgZG9tYWluJywgY2NzID1cbiAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gfm9yaWdpbiBtaXhcbiAgaW5cbiAgKCBkb21haW4nLFxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4geCAoeSwgdCkgLT4gYWRkcyB0IHggKEFycmF5Lm1hcCBmc3QgeSkpIHJldl9lZmZlY3RzIGNjc1xuICApXG5cbmxldCBlZmZlY3RzX29mX21vZGlmIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIChkb21haW4sIHJldl9lZmZlY3RzKSA9IGZ1bmN0aW9uXG4gIHwgQVBQTFkgKGFsZ19leHByLCAoKF8sIHBvcykgYXMgcGFjaykpIC0+XG4gICAgbGV0IGRvbWFpbicsIGFsZ19wb3MgPVxuICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2V4cHJcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgXywgZWxlbV9ydWxlcyA9XG4gICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nXG4gICAgICAgIH5zeW50YXhfcmVmOjAgcGFja1xuICAgIGluXG4gICAgbGV0IGVsZW1fcnVsZSA9XG4gICAgICBtYXRjaCBlbGVtX3J1bGVzIHdpdGhcbiAgICAgIHwgWyByIF0gLT4gclxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJBbWJpZ3VvdXMgcnVsZSBpbiBtb2RpZml0aW9uIGlzIGltcG9zc2libGVcIiwgcG9zKSlcbiAgICBpblxuICAgIGRvbWFpbicnLCBQcmltaXRpdmVzLklURVJfUlVMRSAoYWxnX3BvcywgZWxlbV9ydWxlKSA6OiByZXZfZWZmZWN0c1xuICB8IFVQREFURSAoKGksIF8pLCBhbGdfZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgYWxnX3BvcyA9XG4gICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5VUERBVEUgKGksIGFsZ19wb3MpIDo6IHJldl9lZmZlY3RzXG4gIHwgU05BUFNIT1QgKHJhdywgcGV4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgICgqd2hlbiBzcGVjaWFsaXppbmcgc25hcHNob3RzIHRvIHBhcnRpY3VsYXIgbWl4dHVyZXMsIGFkZCB2YXJpYWJsZXMgYmVsb3cqKVxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgcGV4cHInKSA6OiByZXZfZWZmZWN0c1xuICB8IFNUT1AgcGV4cHIgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5TVE9QIHBleHByJyA6OiByZXZfZWZmZWN0c1xuICB8IENGTE9XTEFCRUwgKG9uLCBsYWIpIC0+XG4gICAgY2Zsb3dzX29mX2xhYmVsIH5kZWJ1Z19tb2RlIG9yaWdpbiB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBvblxuICAgICAgYXN0X2FsZ3MgYXN0X3J1bGVzIGxhYiByZXZfZWZmZWN0c1xuICB8IENGTE9XTUlYIChvbiwgKGFzdCwgXykpIC0+XG4gICAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICAgIGlmIG9uIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5DRkxPVyAoTm9uZSwgeCwgdGVzdHMpIDo6IGxcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbWl0aXZlcy5DRkxPV09GRiAoTm9uZSwgeCkgOjogbFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicsIGNjcyA9XG4gICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiB+b3JpZ2luIGFzdFxuICAgIGluXG4gICAgKCBkb21haW4nLFxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSlcbiAgICAgICAgcmV2X2VmZmVjdHMgY2NzIClcbiAgfCBESU4gKHJlbCwgcGV4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuRElOIChyZWwsIHBleHByJykgOjogcmV2X2VmZmVjdHNcbiAgfCBESU5PRkYgcGV4cHIgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5ESU5PRkYgcGV4cHInIDo6IHJldl9lZmZlY3RzXG4gIHwgQXN0LlBSSU5UIChwZXhwciwgcHJpbnQpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgcHJpbnQnID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgcHJpbnRcbiAgICBpblxuICAgIGRvbWFpbicnLCBQcmltaXRpdmVzLlBSSU5UIChwZXhwcicsIHByaW50JykgOjogcmV2X2VmZmVjdHNcbiAgfCBQTE9URU5UUlkgLT4gZG9tYWluLCBQcmltaXRpdmVzLlBMT1RFTlRSWSA6OiByZXZfZWZmZWN0c1xuICB8IFNQRUNJRVNfT0YgKG9uLCBwZXhwciwgKGFzdCwgcG9zKSkgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICAgIGlmIG9uIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5TUEVDSUVTIChwZXhwcicsIHgsIHRlc3RzKSA6OiBsXG4gICAgICBlbHNlXG4gICAgICAgIFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgcGV4cHInIDo6IGxcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgY2NzID1cbiAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyB+b3JpZ2luIGFzdFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChhcnIsIF8pIC0+XG4gICAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGFyciA+IDEgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIlNQRUNJRVNfT0YgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBvbmUgY29ubmVjdGVkIGNvbXBvbmVudFwiLFxuICAgICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgICAgICAgY2NzXG4gICAgaW5cbiAgICAoIGRvbWFpbicnLFxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSlcbiAgICAgICAgcmV2X2VmZmVjdHMgY2NzIClcblxubGV0IGVmZmVjdHNfb2ZfbW9kaWZzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBsID1cbiAgbGV0IGRvbWFpbicsIHJldl9lZmZlY3RzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGVmZmVjdHNfb2ZfbW9kaWYgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcClcbiAgICAgIChkb21haW4sIFtdKSBsXG4gIGluXG4gIGRvbWFpbicsIExpc3QucmV2IHJldl9lZmZlY3RzXG5cbmxldCBjb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2sgPVxuICBlZmZlY3RzX29mX21vZGlmcyBbXSBbXSAoT3BlcmF0b3IuTU9ESUYgKC0xKSlcblxuKCogaW50ZXJ2ZW50aW9ucyB3aXRob3V0IHByZSBhbmQgcG9zdCwgYnV0IHdpdGggYWxhcm0gYXJlIG5vdCBhcHBsaWVkXG4gICBhdCBpbml0aWFsaXNhdGlvbiAqKVxubGV0IHBlcnRfbm90X2luaXQgb3ZlcndyaXRlX3QwIHggeSB6ID1cbiAgbWF0Y2ggeCwgeSwgeiB3aXRoXG4gIHwgXywgU29tZSBwLCBfIC0+IHBcbiAgfCBTb21lIF8sIE5vbmUsIE5vbmUgLT5cbiAgICBsZXQgdF92YXIgPVxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUilcbiAgICBpblxuICAgIGxldCB0MCA9IE9wdGlvbl91dGlsLmZvbGQgKGZ1biBfIHggLT4gTmJyLkYgeCkgTmJyLnplcm8gb3ZlcndyaXRlX3QwIGluXG4gICAgbGV0IGluaXRfdCA9IExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCB0MCkgaW5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09NUEFSRV9PUCAoT3BlcmF0b3IuR1JFQVRFUiwgdF92YXIsIGluaXRfdCkpXG4gIHwgTm9uZSwgTm9uZSwgTm9uZSB8IFNvbWUgXywgTm9uZSwgU29tZSBfIHwgTm9uZSwgTm9uZSwgU29tZSBfIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuVFJVRVxuXG5sZXQgcGVydF9vZl9yZXN1bHQgfmRlYnVnX21vZGUgfndhcm5pbmcgP292ZXJ3cml0ZV90MCBhc3RfYWxncyBhc3RfcnVsZXNcbiAgICBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiByZXMgPVxuICBsZXQgZG9tYWluLCBvdXRfYWxnX2RlcHMsIF8sIGxwZXJ0LCB0cmFja2luZ19lbmFibGVkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZG9tYWluLCBhbGdfZGVwcywgcF9pZCwgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWQpXG4gICAgICAgICAgICgoYWxhcm0sIHByZV9leHByLCBtb2RpZl9leHByX2xpc3QsIG9wdF9wb3N0KSwgcG9zKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGFsYXJtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgICAgaWYgTmJyLmNvbXBhcmUgbiBOYnIuemVybyA8PSAwIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcImFsYXJtIGhhcyB0byBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC4wXCIsIHBvcykpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvcmlnaW4gPSBPcGVyYXRvci5NT0RJRiBwX2lkIGluXG4gICAgICAgIGxldCBwcmVfZXhwcicgPSBwZXJ0X25vdF9pbml0IG92ZXJ3cml0ZV90MCBhbGFybSBwcmVfZXhwciBvcHRfcG9zdCBpblxuICAgICAgICBsZXQgZG9tYWluJywgcHJlID1cbiAgICAgICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiB+b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgICAgICAgcHJlX2V4cHInXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhbGdfZGVwcycgPVxuICAgICAgICAgIG1hdGNoIGFsYXJtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBhbGdfZGVwc1xuICAgICAgICAgIHwgTm9uZSAtPiBBbGdfZXhwci5hZGRfZGVwX2Jvb2wgYWxnX2RlcHMgb3JpZ2luIHByZVxuICAgICAgICBpblxuICAgICAgICBsZXQgZG9tYWluLCBlZmZlY3RzID1cbiAgICAgICAgICBlZmZlY3RzX29mX21vZGlmcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgbW9kaWZfZXhwcl9saXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4sIG9wdCA9XG4gICAgICAgICAgbWF0Y2ggb3B0X3Bvc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkb21haW4sIE5vbmVcbiAgICAgICAgICB8IFNvbWUgcG9zdF9leHByIC0+XG4gICAgICAgICAgICBsZXQgZG9tYWluJywgKHBvc3QsIHBvc3RfcG9zKSA9XG4gICAgICAgICAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgICAgICAgICAgIHBvc3RfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGRvbWFpbicsIFNvbWUgKHBvc3QsIHBvc3RfcG9zKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFzX3RyYWNraW5nID1cbiAgICAgICAgICB0cmFja2luZ19lbmFibGVkXG4gICAgICAgICAgfHwgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBSSU5UIF9cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlVQREFURSBfIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5ESU4gXyB8IFByaW1pdGl2ZXMuRElOT0ZGIF8gfCBQcmltaXRpdmVzLlBMT1RFTlRSWVxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1RPUCBfIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgX1xuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5VUERBVEUgXyB8IFByaW1pdGl2ZXMuU1RPUCBfIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgX1xuICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QUklOVCBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfIHwgUHJpbWl0aXZlcy5ESU4gXyB8IFByaW1pdGl2ZXMuRElOT0ZGIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgcmVwZWF0ID1cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRVxuICAgICAgICAgIHwgU29tZSBwIC0+IHBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBlcnQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMuYWxhcm07XG4gICAgICAgICAgICBQcmltaXRpdmVzLnByZWNvbmRpdGlvbiA9IHByZTtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMuZWZmZWN0ID0gZWZmZWN0cztcbiAgICAgICAgICAgIFByaW1pdGl2ZXMucmVwZWF0O1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2s7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBkb21haW4sIGFsZ19kZXBzJywgc3VjYyBwX2lkLCBwZXJ0IDo6IGxwZXJ0LCBoYXNfdHJhY2tpbmcpXG4gICAgICAoZG9tYWluLCBhbGdfZGVwcywgMCwgW10sIGZhbHNlKVxuICAgICAgcmVzLnBlcnR1cmJhdGlvbnNcbiAgaW5cbiAgZG9tYWluLCBvdXRfYWxnX2RlcHMsIExpc3QucmV2IGxwZXJ0LCB0cmFja2luZ19lbmFibGVkXG5cbmxldCBjb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlIH53YXJuaW5nID9yZXNjYWxlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZW52XG4gICAgaW5pdHMgPVxuICBsZXQgaW5pdF9sLCBfID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChmdW4gKGFsZywgaW5pdF90KSBwcmVlbnYgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBBbGdfZXhwci5oYXNfbWl4IH52YXJfZGVjbHM6KE1vZGVsLmdldF9hbGcgZW52KSAoZnN0IGFsZykgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIkluaXRpYWwgcXVhbnRpdGllcyBjYW5ub3QgZGVwZW5kIG9uIGEgbnVtYmVyIG9mIG9jY3VyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgIHNuZCBhbGcgKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFsZyA9XG4gICAgICAgICAgbWF0Y2ggcmVzY2FsZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFsZ1xuICAgICAgICAgIHwgU29tZSByIC0+IEFsZ19leHByLm11bHQgYWxnIChBbGdfZXhwci5mbG9hdCByKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBpbml0X3Qgd2l0aFxuICAgICAgICB8IElOSVRfTUlYIChyYXdfbWl4LCBtaXhfcG9zKSAtPlxuICAgICAgICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBlbnYgaW5cbiAgICAgICAgICBsZXQgcHJlZW52JywgYWxnJyA9XG4gICAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudiBhbGdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmYWtlX3J1bGUgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBMS2FwcGEucl9taXggPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfY3JlYXRlZCA9IHJhd19taXg7XG4gICAgICAgICAgICAgIExLYXBwYS5yX2RlbHRhX3Rva2VucyA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9yYXRlID0gQWxnX2V4cHIuY29uc3QgTmJyLnplcm87XG4gICAgICAgICAgICAgIExLYXBwYS5yX3VuX3JhdGUgPSBOb25lO1xuICAgICAgICAgICAgICBMS2FwcGEucl9lZGl0X3N0eWxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVlbnYnJywgc3RhdGUnID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgICAgcHJlZW52JyB+c3ludGF4X3JlZjowIChmYWtlX3J1bGUsIG1peF9wb3MpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGRvbWFpbicnLCBfLCBbIGNvbXBpbGVkX3J1bGUgXSAtPlxuICAgICAgICAgICAgICAoZnN0IGFsZycsIGNvbXBpbGVkX3J1bGUpLCBkb21haW4nJ1xuICAgICAgICAgICAgfCBfLCBfLCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZiBcImluaXRpYWwgbWl4dHVyZSAlYSBpcyBwYXJ0aWFsbHkgZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6ZmFsc2UgfnNpZ3MpXG4gICAgICAgICAgICAgICAgICAgICAgIHJhd19taXgsXG4gICAgICAgICAgICAgICAgICAgICBtaXhfcG9zICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmVlbnYnJywgc3RhdGUnXG4gICAgICAgIHwgSU5JVF9UT0sgdGtfbCAtPlxuICAgICAgICAgIGxldCByX2RlbHRhX3Rva2VucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoZnVuICh0a19pZCwgX3Bvc190aykgLT4gYWxnLCB0a19pZCkgdGtfbFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZha2VfcnVsZSA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIExLYXBwYS5yX21peCA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9jcmVhdGVkID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX2RlbHRhX3Rva2VucztcbiAgICAgICAgICAgICAgTEthcHBhLnJfcmF0ZSA9IEFsZ19leHByLmNvbnN0IE5ici56ZXJvO1xuICAgICAgICAgICAgICBMS2FwcGEucl91bl9yYXRlID0gTm9uZTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZWRpdF9zdHlsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICAgICAgICAgICAgIHByZWVudiB+c3ludGF4X3JlZjowXG4gICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgZmFrZV9ydWxlKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBkb21haW4nJywgXywgWyBjb21waWxlZF9ydWxlIF0gLT5cbiAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCBOYnIub25lLCBjb21waWxlZF9ydWxlKSwgZG9tYWluJydcbiAgICAgICAgICB8IF8sIF8sIF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIGluaXRzXG4gICAgICAoUGF0dGVybi5QcmVFbnYuZW1wdHkgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSlcbiAgaW5cbiAgaW5pdF9sXG5cbmxldCBjb21waWxlX2FsZ192YXJzIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHZhcnMgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRfbWFwaVxuICAgIChmdW4gaSBkb21haW4gKGxibF9wb3MsIGFzdCkgLT5cbiAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIH5vcmlnaW46KE9wZXJhdG9yLkFMRyBpKVxuICAgICAgICAgIGNvbnRhY3RfbWFwIGRvbWFpbiBhc3RcbiAgICAgIGluXG4gICAgICBkb21haW4nLCAobGJsX3BvcywgYWxnKSlcbiAgICBkb21haW4gKEFycmF5Lm9mX2xpc3QgdmFycylcblxubGV0IGNvbXBpbGVfcnVsZXMgfmRlYnVnX21vZGUgfndhcm5pbmcgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgIGRvbWFpbiBydWxlcyA9XG4gIG1hdGNoXG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGRvbWFpbiwgc3ludGF4X3JlZiwgZGVwc19tYWNoaW5lcnksIGFjYykgKF8sIHJ1bGUpIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBvcmlnaW4nLCBjciA9XG4gICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9kZXBzX21hY2hpbmVyeSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAgICAgICBjb250YWN0X21hcCBkb21haW4gfnN5bnRheF9yZWYgcnVsZVxuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBzdWNjIHN5bnRheF9yZWYsIG9yaWdpbicsIExpc3QuYXBwZW5kIGNyIGFjYylcbiAgICAgIChkb21haW4sIDEsIFNvbWUgKE9wZXJhdG9yLlJVTEUgMCwgYWxnX2RlcHMpLCBbXSlcbiAgICAgIHJ1bGVzXG4gIHdpdGhcbiAgfCBmZG9tYWluLCBfLCBTb21lIChfLCBmYWxnX2RlcHMpLCBmcnVsZXMgLT5cbiAgICBmZG9tYWluLCBmYWxnX2RlcHMsIExpc3QucmV2IGZydWxlc1xuICB8IF8sIF8sIE5vbmUsIF8gLT4gZmFpbHdpdGggXCJUaGUgb3JpZ2luIG9mIEV2YWwuY29tcGlsZV9ydWxlcyBoYXMgYmVlbiBsb3N0XCJcblxuKCpsZXQgdHJhbnNsYXRlX2NvbnRhY3RfbWFwIHNpZ3Mga2FzYV9jb250YWN0X21hcCA9XG4gICAgbGV0IHdkbCA9IExvYy5hbm5vdF93aXRoX2R1bW15IGluXG4gICAgbGV0IHNvbCA9IEFycmF5LmluaXRcbiAgICAgICAgKFNpZ25hdHVyZS5zaXplIHNpZ3MpXG4gICAgICAgIChmdW4gaSAtPiBBcnJheS5tYWtlIChTaWduYXR1cmUuYXJpdHkgc2lncyBpKSAoW10sW10pKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgIChmdW4gYWdlbnRfbmFtZSBzaXRlcyAtPlxuICAgICAgICAgICBsZXQgaWRfYSA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgKHdkbCBhZ2VudF9uYW1lKSBzaWdzIGluXG4gICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAoZnVuIHNpdGVfbmFtZSAoc3RhdGVzLGxpbmtzKSAtPlxuICAgICAgICAgICAgICAgIGxldCBpZF9zID1cbiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZVxuICAgICAgICAgICAgICAgICAgICB+YWdlbnRfbmFtZSAod2RsIHNpdGVfbmFtZSkgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSBpblxuICAgICAgICAgICAgICAgIHNvbC4oaWRfYSkuKGlkX3MpIDwtXG4gICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gc3RhdGUgLT4gU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGlkX3MgKHdkbCBzdGF0ZSkgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSlcbiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcyxcbiAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZSxiKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkX2EgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX2FnZW50ICh3ZGwgYWdlbnRfbmFtZSkgc2lncyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkX2IgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+YWdlbnRfbmFtZSAod2RsIGIpIChTaWduYXR1cmUuZ2V0IHNpZ3MgaWRfYSkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChpZF9hLGlkX2IpKVxuICAgICAgICAgICAgICAgICAgICAgbGlua3MpKSBzaXRlcykga2FzYV9jb250YWN0X21hcCBpblxuICAgIHNvbFxuXG4gIGxldCBpbml0X2thc2EgY2FsbGVkX2Zyb20gc2lncyByZXN1bHQgPVxuICAgIGxldCBwcmVfa2FzYV9zdGF0ZSA9IEV4cG9ydF90b19LYVNpbS5pbml0IH5jb21waWw6cmVzdWx0IH5jYWxsZWRfZnJvbSAoKSBpblxuICAgIGxldCBrYXNhX3N0YXRlLGNvbnRhY3RfbWFwID0gRXhwb3J0X3RvX0thU2ltLmdldF9jb250YWN0X21hcCBwcmVfa2FzYV9zdGF0ZSBpblxuICAgIGxldCAoKSA9IEV4cG9ydF90b19LYVNpbS5kdW1wX2Vycm9yc19saWdodCBrYXNhX3N0YXRlIGluXG4gICAgdHJhbnNsYXRlX2NvbnRhY3RfbWFwIHNpZ3MgY29udGFjdF9tYXAsXG4gICAgRXhwb3J0X3RvX0thU2ltLmZsdXNoX2Vycm9ycyBrYXNhX3N0YXRlXG4qKVxubGV0IGNvbXBpbGUgfm91dHB1dHMgfnBhdXNlIH5yZXR1cm4gfnNoYXJpbmcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgID9vdmVyd3JpdGVfaW5pdCA/b3ZlcndyaXRlX3QwID9yZXNjYWxlX2luaXQgc2lnc19uZCB0a19uZCBjb250YWN0X21hcCByZXN1bHRcbiAgICA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCIrIEJ1aWxkaW5nIGluaXRpYWwgc2ltdWxhdGlvbiBjb25kaXRpb25zLi4uXCIpO1xuICBsZXQgcHJlZW52ID0gUGF0dGVybi5QcmVFbnYuZW1wdHkgc2lnc19uZCBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtdmFyaWFibGUgZGVjbGFyYXRpb25zXCIpO1xuICBsZXQgcHJlZW52JywgYWxnX2EgPVxuICAgIGNvbXBpbGVfYWxnX3ZhcnMgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnZcbiAgICAgIHJlc3VsdC5Bc3QudmFyaWFibGVzXG4gIGluXG4gIGxldCBhbGdfbmQgPSBOYW1lZERlY2xzLmNyZWF0ZSBhbGdfYSBpblxuICBsZXQgYWxnX2RlcHMgPSBBbGdfZXhwci5zZXR1cF9hbGdfdmFyc19yZXZfZGVwIHRrX25kIGFsZ19hIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1ydWxlc1wiKTtcbiAgbGV0IHByZWVudicsIGFsZ19kZXBzJywgY29tcGlsZWRfcnVsZXMgPVxuICAgIGNvbXBpbGVfcnVsZXMgfmRlYnVnX21vZGUgfndhcm5pbmcgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgICAgcHJlZW52JyByZXN1bHQuQXN0LnJ1bGVzXG4gIGluXG4gIGxldCBydWxlX25kID0gQXJyYXkub2ZfbGlzdCBjb21waWxlZF9ydWxlcyBpblxuXG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtaW50ZXJ2ZW50aW9uc1wiKTtcbiAgbGV0IHByZWVudiwgYWxnX2RlcHMnJywgcGVydCwgaGFzX3RyYWNraW5nID1cbiAgICBwZXJ0X29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/b3ZlcndyaXRlX3QwIHJlc3VsdC52YXJpYWJsZXNcbiAgICAgIHJlc3VsdC5ydWxlcyBhbGdfZGVwcycgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnYnIHJlc3VsdFxuICBpblxuXG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtb2JzZXJ2YWJsZXNcIik7XG4gIGxldCBwcmVlbnYsIG9icyA9XG4gICAgb2JzX29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudiBhbGdfZGVwc1xuICAgICAgcmVzdWx0XG4gIGluXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC11cGRhdGVfZG9tYWluIGNvbnN0cnVjdGlvblwiKTtcbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIGxldCBkb21haW4sIGRvbV9zdGF0cyA9XG4gICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBwcmVlbnYgY29udGFjdF9tYXBcbiAgaW5cbiAgb3V0cHV0c1xuICAgIChEYXRhLkxvZ1xuICAgICAgIChcIlxcdCBcIlxuICAgICAgIF4gc3RyaW5nX29mX2ludCBkb21fc3RhdHMuUGF0dGVybi5QcmVFbnYuc3RhdF9ub2Rlc1xuICAgICAgIF4gXCIgKHN1YilvYnNlcnZhYmxlcyBcIlxuICAgICAgIF4gc3RyaW5nX29mX2ludCBkb21fc3RhdHMuUGF0dGVybi5QcmVFbnYuc3RhdF9uYXZfc3RlcHNcbiAgICAgICBeIFwiIG5hdmlnYXRpb24gc3RlcHNcIikpO1xuXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLmluaXQgfmZpbGVuYW1lczpyZXN1bHQuZmlsZW5hbWVzIGRvbWFpbiB0a19uZCBhbGdfbmQgYWxnX2RlcHMnJ1xuICAgICAgKEFycmF5Lm9mX2xpc3QgcmVzdWx0LnJ1bGVzLCBydWxlX25kKVxuICAgICAgKEFycmF5Lm9mX2xpc3Qgb2JzKSAoQXJyYXkub2ZfbGlzdCBwZXJ0KSBjb250YWN0X21hcFxuICBpblxuXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1pbml0aWFsIGNvbmRpdGlvbnNcIik7XG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBsZXQgaW5pdF9sID1cbiAgICBjb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlIH53YXJuaW5nID9yZXNjYWxlOnJlc2NhbGVfaW5pdCB+Y29tcGlsZV9tb2RlX29uXG4gICAgICBjb250YWN0X21hcCBlbnZcbiAgICAgIChPcHRpb25fdXRpbC51bnNvbWUgcmVzdWx0LkFzdC5pbml0IG92ZXJ3cml0ZV9pbml0KVxuICBpblxuICByZXR1cm4gKGVudiwgaGFzX3RyYWNraW5nLCBpbml0X2wpXG5cbmxldCBidWlsZF9pbml0aWFsX3N0YXRlIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgY291bnRlciBlbnZcbiAgICB+d2l0aF90cmFjZSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzIHJhbmRvbV9zdGF0ZSBpbml0X2wgPVxuICBsZXQgZ3JhcGgwID1cbiAgICBSdWxlX2ludGVycHJldGVyLmVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlIHJhbmRvbV9zdGF0ZSBlbnYgY291bnRlclxuICBpblxuICBsZXQgc3RhdGUwID0gU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllcyBjb3VudGVyIGVudiBpblxuICBTdGF0ZV9pbnRlcnByZXRlci5pbml0aWFsaXplIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXJcbiAgICBncmFwaDAgc3RhdGUwIGluaXRfbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRvX2ludGVyYWN0aXZlX2RpcmVjdGl2ZXMgfmRlYnVnX21vZGUgfm91dHB1dHMgfnNoYXJpbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgY29udGFjdF9tYXAgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZSA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgbGV0IGNjX3ByZWVudiA9IFBhdHRlcm4uUHJlRW52Lm9mX2VudiAoTW9kZWwuZG9tYWluIGVudikgaW5cbiAgbGV0IGNvbnRhY3RfbWFwJyA9IEFycmF5Lm1hcCBBcnJheS5jb3B5IGNvbnRhY3RfbWFwIGluXG4gIGxldCBlJywgXyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAoTEthcHBhX2NvbXBpbGVyLm1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSAoTW9kZWwudG9rZW5zX2ZpbmRlciBlbnYpXG4gICAgICAgICAoTW9kZWwuYWxnc19maW5kZXIgZW52KSBjb250YWN0X21hcCcpXG4gICAgICBlIFtdXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWZcbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBuIC0+XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIHMgYiB4IC0+IGIgfHwgeCAhPSBjb250YWN0X21hcC4obikuKHMpKSlcbiAgICAgICAgZmFsc2UgY29udGFjdF9tYXAnXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQ3JlYXRpbmcgbmV3IGxpbmsgdHlwZSBpcyBmb3JiaWRkZW5cIikpXG4gIGluXG4gIGxldCBjY19wcmVlbnYnLCBlJycgPVxuICAgIEV2YWwuY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIH5kZWJ1Z19tb2RlIH53YXJuaW5nXG4gICAgICB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIGNvbnRhY3RfbWFwIGNjX3ByZWVudiBlJ1xuICBpblxuICBsZXQgZW52JywgZ3JhcGgnID1cbiAgICBpZiBjY19wcmVlbnYgPT0gY2NfcHJlZW52JyB0aGVuXG4gICAgICBlbnYsIGdyYXBoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZmVudiwgXyA9XG4gICAgICAgIFBhdHRlcm4uZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgY2NfcHJlZW52JyBjb250YWN0X21hcFxuICAgICAgaW5cbiAgICAgICggTW9kZWwubmV3X2RvbWFpbiBmZW52IGVudixcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGZlbnYpXG4gICAgICAgICAgZ3JhcGhcbiAgICAgICAgICAoUHJpbWl0aXZlcy5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbnMgZScnKSApXG4gICAgKVxuICBpblxuICBsZXQgb3N0b3AsIG9ncmFwaCwgb3N0YXRlLCBfID1cbiAgICBTdGF0ZV9pbnRlcnByZXRlci5kb19tb2RpZmljYXRpb25zIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudicgY291bnRlciBncmFwaCdcbiAgICAgIHN0YXRlIGUnJ1xuICBpblxuICBlJycsIChlbnYnLCAob3N0b3AsIG9ncmFwaCwgb3N0YXRlKSlcblxubGV0IGdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+c2hhcmluZyB+c3ludGF4X3ZlcnNpb24gY29udGFjdF9tYXBcbiAgICBlbnYgZ3JhcGggYiA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgbGV0IGNjX3ByZWVudiA9IFBhdHRlcm4uUHJlRW52Lm9mX2VudiAoTW9kZWwuZG9tYWluIGVudikgaW5cbiAgbGV0IGInID1cbiAgICBMS2FwcGFfY29tcGlsZXIuYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgKE1vZGVsLnRva2Vuc19maW5kZXIgZW52KSAoTW9kZWwuYWxnc19maW5kZXIgZW52KSBiXG4gIGluXG4gIGxldCBjY19wcmVlbnYnLCAoKGInJywgcG9zX2InJykgYXMgYnBvcycnKSA9XG4gICAgRXZhbC5jb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19wcmVlbnZcbiAgICAgIGInXG4gIGluXG4gIGxldCBlbnYnLCBncmFwaCcgPVxuICAgIGlmIGNjX3ByZWVudiA9PSBjY19wcmVlbnYnIHRoZW5cbiAgICAgIGVudiwgZ3JhcGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBmZW52LCBfID1cbiAgICAgICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBjY19wcmVlbnYnIGNvbnRhY3RfbWFwXG4gICAgICBpblxuICAgICAgKCBNb2RlbC5uZXdfZG9tYWluIGZlbnYgZW52LFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gfmRlYnVnX21vZGUgZmVudilcbiAgICAgICAgICBncmFwaFxuICAgICAgICAgIChQcmltaXRpdmVzLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBicG9zJycpIClcbiAgICApXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIChNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudikgYicnIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIltUXSBjYW4gb25seSBiZSB1c2VkIGluIGluZXF1YWxpdGllc1wiLCBwb3NfYicnKSlcbiAgaW5cbiAgZW52JywgZ3JhcGgnLCBiJydcblxubGV0IGZpbmRfYWxsX2VtYmVkZGluZ3MgfmRlYnVnX21vZGUgZW52IHRyID1cbiAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgbGV0IGR1bW15X2luc3RhbmNlcyA9IEluc3RhbmNlcy5lbXB0eSBlbnYgaW5cbiAgbGV0IGdyYXBoID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgP21vZF9jb25uZWN0aXZpdHlfc3RvcmU6Tm9uZSBkdW1teV9pbnN0YW5jZXMpXG4gICAgICAoRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM6ZmFsc2UpXG4gICAgICB0clxuICBpblxuICBsZXQgb3V0LCBfID1cbiAgICBSdWxlX2ludGVycHJldGVyLm9ic19mcm9tX3RyYW5zZm9ybWF0aW9ucyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggdHJcbiAgaW5cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChwLCAocm9vdCwgXykpIC0+XG4gICAgICBwLCBNYXRjaGluZy5yZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggcCByb290KVxuICAgIG91dFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKioqKioqKioqKioqKVxuKCogSlNvbiBsYWJlbHMqKVxuKCoqKioqKioqKioqKioqKVxuXG5sZXQgYWdlbnQgPSBcImFnZW50IG5hbWVcIlxubGV0IGNvbnRhY3RtYXAgPSBcImNvbnRhY3QgbWFwXCJcbmxldCBhY2N1cmFjeV9zdHJpbmcgPSBcImFjY3VyYWN5XCJcbmxldCBkZWFkX3J1bGVzID0gXCJkZWFkIHJ1bGVzXCJcbmxldCBkZWFkX2FnZW50cyA9IFwiZGVhZCBhZ2VudHNcIlxubGV0IG1hcCA9IFwibWFwXCJcbmxldCBpbnRlcmZhY2UgPSBcImludGVyZmFjZVwiXG5sZXQgc2l0ZSA9IFwic2l0ZSBuYW1lXCJcbmxldCBzdGF0ZXNsaXN0ID0gXCJzdGF0ZXMgbGlzdFwiXG5sZXQgc2l0ZW5hbWUgPSBcInNpdGVfbmFtZVwiXG5sZXQgc2l0ZXR5cGUgPSBcInNpdGVfdHlwZVwiXG5sZXQgc2l0ZWxpbmtzID0gXCJwb3J0X2xpbmtzXCJcbmxldCBzaXRlc3RhdGVzID0gXCJwb3J0X3N0YXRlc1wiXG5sZXQgc2l0ZW5vZGVuYW1lID0gXCJub2RlX3R5cGVcIlxubGV0IHNpdGVub2RlaWQgPSBcIm5vZGVfaWRcIlxubGV0IHNpdGVub2Rlc2l0ZXMgPSBcIm5vZGVfc2l0ZXNcIlxubGV0IGh5cCA9IFwic2l0ZSBncmFwaFwiXG5sZXQgcmVmaW5lbWVudCA9IFwic2l0ZSBncmFwaCBsaXN0XCJcbmxldCBkb21haW5fbmFtZSA9IFwiZG9tYWluIG5hbWVcIlxubGV0IHJlZmluZW1lbnRzX2xpc3QgPSBcInJlZmluZW1lbnRzIGxpc3RcIlxubGV0IHJlZmluZW1lbnRfbGVtbWFzID0gXCJyZWZpbmVtZW50IGxlbW1hc1wiXG5sZXQgcnVsZV9pZCA9IFwiaWRcIlxubGV0IGFnZW50X2lkID0gXCJpZFwiXG5sZXQgbGFiZWwgPSBcImxhYmVsXCJcbmxldCBhc3QgPSBcImFzdFwiXG5sZXQgcG9zaXRpb24gPSBcImxvY2F0aW9uXCJcbmxldCBwb3NpdGlvbl9saXN0ID0gXCJsb2NhdGlvbiBsaXN0XCJcbmxldCB2YXJpYWJsZSA9IFwidmFyaWFibGVcIlxubGV0IHJ1bGUgPSBcInJ1bGVcIlxubGV0IGRpcmVjdCA9IFwiZGlyZWN0XCJcbmxldCBzaWRlX2VmZmVjdCA9IFwic2lkZSBlZmZlY3RcIlxubGV0IHNvdXJjZSA9IFwic291cmNlXCJcbmxldCB0YXJnZXRfbWFwID0gXCJ0YXJnZXQgbWFwXCJcbmxldCB0YXJnZXQgPSBcInRhcmdldFwiXG5sZXQgbG9jYXRpb25fcGFpcl9saXN0ID0gXCJsb2NhdGlvbiBwYWlyIGxpc3RcIlxubGV0IHJocyA9IFwiUkhTXCJcbmxldCBsaHMgPSBcIkxIU1wiXG5sZXQgaW5mbHVlbmNlbWFwID0gXCJpbmZsdWVuY2UgbWFwXCJcbmxldCBub2Rlc29maW5mbHVlbmNlbWFwID0gXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCJcbmxldCB3YWtldXAgPSBcIndha2UtdXAgbWFwXCJcbmxldCBpbmhpYml0aW9uID0gXCJpbmhpYml0aW9uIG1hcFwiXG5sZXQgbm9kZXMgPSBcIm5vZGVzXCJcbmxldCB0b3RhbF9zdHJpbmcgPSBcInRvdGFsXCJcbmxldCBmd2Rfc3RyaW5nID0gXCJmd2RcIlxubGV0IGJ3ZF9zdHJpbmcgPSBcImJ3ZFwiXG5sZXQgb3JpZ2luID0gXCJvcmlnaW5cIlxubGV0IGRpcmVjdGlvbiA9IFwiZGlyZWN0aW9uXCJcbmxldCBydWxlX2hpZGRlbiA9IFwiaGlkZGVuXCJcbmxldCBzY2MgPSBcInNjY1wiXG5sZXQgYWNjdXJhY3lfY20gPSBcImFjY3VyYWN5X2NtXCJcbmxldCBhY2N1cmFjeV9zY2MgPSBcImFjY3VyYWN5X3NjY1wiXG5sZXQgY29udGFjdG1hcHNjYyA9IFwiY29udGFjdCBtYXAgc2NjXCJcbmxldCBjb3VudGVyID0gXCJjb3VudGVyXCJcbmxldCBpbmYgPSBcIm1pblwiXG5sZXQgc3VwID0gXCJtYXhcIlxubGV0IGtleSA9IFwia2V5XCJcbmxldCBsb2NhbGl0eSA9IFwibG9jYWxpdHlcIlxuXG4oKioqKioqKioqKioqKioqKioqKilcbigqIEFjY3VyYWN5IGxldmVscyAqKVxuKCoqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWNjdXJhY3lfbGV2ZWwgPSBMb3cgfCBNZWRpdW0gfCBIaWdoIHwgRnVsbFxuXG5sZXQgYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IE1lZGl1bTsgSGlnaDsgRnVsbCBdXG5sZXQgY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IEhpZ2ggXVxubGV0IGluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IE1lZGl1bTsgSGlnaCBdXG5sZXQgcmVkdWN0aW9uX2FjY3VyYWN5X2xldmVscyA9IFsgTG93OyBIaWdoIF1cblxubGV0IGFjY3VyYWN5X3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTG93IC0+IFwibG93XCJcbiAgfCBNZWRpdW0gLT4gXCJtZWRpdW1cIlxuICB8IEhpZ2ggLT4gXCJoaWdoXCJcbiAgfCBGdWxsIC0+IFwiZnVsbFwiXG5cbmxldCBhY2N1cmFjeV90b19qc29uIHggPSBKc29uVXRpbC5vZl9zdHJpbmcgKGFjY3VyYWN5X3RvX3N0cmluZyB4KVxuXG5sZXQgYWNjdXJhY3lfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImxvd1wiIC0+IFNvbWUgTG93XG4gIHwgXCJtZWRpdW1cIiAtPiBTb21lIE1lZGl1bVxuICB8IFwiaGlnaFwiIC0+IFNvbWUgSGlnaFxuICB8IFwiZnVsbFwiIC0+IFNvbWUgRnVsbFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgYWNjdXJhY3lfb2ZfanNvbiBqc29uID1cbiAgbWF0Y2ggYWNjdXJhY3lfb2Zfc3RyaW5nIChKc29uVXRpbC50b19zdHJpbmcganNvbikgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiYWNjdXJhY3kgbGV2ZWxcIiwganNvbikpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBY2N1cmFjeVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gYWNjdXJhY3lfbGV2ZWxcblxuICBsZXQgY29tcGFyZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTG93LCBMb3cgLT4gMFxuICAgIHwgTG93LCBfIC0+IC0xXG4gICAgfCBfLCBMb3cgLT4gMVxuICAgIHwgTWVkaXVtLCBNZWRpdW0gLT4gMFxuICAgIHwgTWVkaXVtLCBfIC0+IC0xXG4gICAgfCBfLCBNZWRpdW0gLT4gMVxuICAgIHwgSGlnaCwgSGlnaCAtPiAwXG4gICAgfCBIaWdoLCBfIC0+IC0xXG4gICAgfCBfLCBIaWdoIC0+IDFcbiAgICB8IEZ1bGwsIEZ1bGwgLT4gMFxuXG4gIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICB8IEZ1bGwgLT4gRm9ybWF0LmZwcmludGYgZiBcIkZ1bGxcIlxuICAgIHwgSGlnaCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiSGlnaFwiXG4gICAgfCBNZWRpdW0gLT4gRm9ybWF0LmZwcmludGYgZiBcIk1lZGl1bVwiXG4gICAgfCBMb3cgLT4gRm9ybWF0LmZwcmludGYgZiBcIkxvd1wiXG5lbmQpXG5cbm1vZHVsZSBBY2N1cmFjeU1hcCA9IEFjY3VyYWN5U2V0TWFwLk1hcFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogQ29udGFjdCBtYXAgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29udGFjdF9tYXAgPSBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcblxubGV0IHNpdGVfdHlwZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBVc2VyX2dyYXBoLkNvdW50ZXIgaSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJjb3VudGVyXCI7IGBJbnQgaSBdXG4gIHwgVXNlcl9ncmFwaC5Qb3J0IHAgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwicG9ydFwiO1xuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIHNpdGVsaW5rcyxcbiAgICAgICAgICAgICAgbWF0Y2ggcC5Vc2VyX2dyYXBoLnBvcnRfbGlua3Mgd2l0aFxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguTElOS1MgbCAtPlxuICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgICAgICAgIChmdW4gKCh4bCwgeHIpLCB5KSAtPlxuICAgICAgICAgICAgICAgICAgICBgTGlzdCBbIGBMaXN0IFsgYEludCB4bDsgYEludCB4ciBdOyBgSW50IHkgXSlcbiAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLldIQVRFVkVSIC0+IGBOdWxsXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5TT01FIC0+IGBCb29sIHRydWVcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlRZUEUgKHNpLCB0eSkgLT5cbiAgICAgICAgICAgICAgICBgQXNzb2MgWyBcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpOyBcInBvcnRfbmFtZVwiLCBgU3RyaW5nIHR5IF0gKTtcbiAgICAgICAgICAgICggc2l0ZXN0YXRlcyxcbiAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgICAgICAgICAgICAgIHAuVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyApO1xuICAgICAgICAgIF07XG4gICAgICBdXG5cbmxldCBzaXRlX3RvX2pzb24gc2l0ZSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHNpdGVuYW1lLCBKc29uVXRpbC5vZl9zdHJpbmcgc2l0ZS5Vc2VyX2dyYXBoLnNpdGVfbmFtZTtcbiAgICAgIHNpdGV0eXBlLCBzaXRlX3R5cGVfdG9fanNvbiBzaXRlLlVzZXJfZ3JhcGguc2l0ZV90eXBlO1xuICAgIF1cblxubGV0IHNpdGVfdHlwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJjb3VudGVyXCI7IGBJbnQgaSBdIC0+IFVzZXJfZ3JhcGguQ291bnRlciBpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwicG9ydFwiOyBgQXNzb2MgbCBdIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHBvcnRfbGlua3MgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVsaW5rcyBsIGluXG4gICAgICAgICBVc2VyX2dyYXBoLmxpbmtzX29mX3lvanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgcG9ydF9zdGF0ZXMgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVzdGF0ZXMgbCBpblxuICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzdGF0ZSBsaXN0XCJcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwic3RhdGVcIikpXG4gICAgICAgICAgIGpzb25cbiAgICAgICBpblxuICAgICAgIFVzZXJfZ3JhcGguUG9ydCB7IFVzZXJfZ3JhcGgucG9ydF9saW5rczsgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlIHR5cGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZSB0eXBlXCIsIHgpKVxuXG5sZXQgc2l0ZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBzaXRlX25hbWUgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVuYW1lIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgc2l0ZV90eXBlID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRldHlwZSBsIGluXG4gICAgICAgICBzaXRlX3R5cGVfb2ZfanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICB7IFVzZXJfZ3JhcGguc2l0ZV9uYW1lOyBVc2VyX2dyYXBoLnNpdGVfdHlwZSB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlXCIsIHgpKVxuXG5sZXQgc2l0ZV9ub2RlX3NpdGVzX3RvX2pzb24gbGlzdCA9IEpzb25VdGlsLm9mX2FycmF5IHNpdGVfdG9fanNvbiBsaXN0XG5cbmxldCBzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2FycmF5IH5lcnJvcl9tc2c6XCJzaXRlIG5vZGUgc2l0ZXNcIiBzaXRlX29mX2pzb25cblxubGV0IHNpdGVfbm9kZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSBub2RlIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIHNpdGVub2RlbmFtZSwgSnNvblV0aWwub2Zfc3RyaW5nIG5vZGUuVXNlcl9ncmFwaC5ub2RlX3R5cGU7XG4gICAgICAgIHNpdGVub2Rlc2l0ZXMsIHNpdGVfbm9kZV9zaXRlc190b19qc29uIG5vZGUuVXNlcl9ncmFwaC5ub2RlX3NpdGVzO1xuICAgICAgXVxuXG5sZXQgc2l0ZV9ub2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IG5vZGVfaWQgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jX29wdCBzaXRlbm9kZWlkIGwgaW5cbiAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IG5vZGVfdHlwZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5vZGVuYW1lIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgbm9kZV9zaXRlcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5vZGVzaXRlcyBsIGluXG4gICAgICAgICBzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3R5cGU7IFVzZXJfZ3JhcGgubm9kZV9pZDsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpXG5cbmxldCBjb250YWN0X21hcF90b19qc29uIGNvbnRhY3RfbWFwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBjb250YWN0bWFwLFxuICAgICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXAgYWNjdXJhY3lfdG9fanNvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9hcnJheSAoSnNvblV0aWwub2ZfYXJyYXkgc2l0ZV9ub2RlX3RvX2pzb24pKVxuICAgICAgICAgIGNvbnRhY3RfbWFwICk7XG4gICAgXVxuXG5sZXQgY29udGFjdF9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgY29udGFjdG1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJjb250YWN0IG1hcFwiKVxuICAgICAgICAgYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVzIGxpc3RcIilcbiAgICAgICAgICAgIChKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlcyBsaXN0XCIpXG4gICAgICAgICAgICAgICBzaXRlX25vZGVfb2ZfanNvbikpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiY29udGFjdCBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiY29udGFjdCBtYXBcIiwgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCpzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50KilcblxudHlwZSBzY2MgPSAoKHN0cmluZyAqIHN0cmluZykgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdCBsaXN0XG5cbmxldCBzdHJpbmdfcGFpcl90b19qc29uIChhLCBiKSA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6c2l0ZW5hbWUgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgSnNvblV0aWwub2Zfc3RyaW5nIChhLCBiKVxuXG5sZXQgc3RyaW5nX3BhaXJfb2ZfanNvbiAoanNvbiA6IFlvanNvbi5CYXNpYy50KSA6IHN0cmluZyAqIHN0cmluZyA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6c2l0ZW5hbWUgfmVycm9yX21zZzpcInNpdGVcIlxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzaXRlX25hbWVcIilcbiAgICBqc29uXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24gKGEsIGIpID1cbiAgSnNvblV0aWwub2ZfcGFpciBzdHJpbmdfcGFpcl90b19qc29uIHN0cmluZ19wYWlyX3RvX2pzb24gKGEsIGIpXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24ganNvbiA6IChzdHJpbmcgKiBzdHJpbmcpICogKHN0cmluZyAqIHN0cmluZykgPVxuICBKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJib25kXCIgc3RyaW5nX3BhaXJfb2ZfanNvbiBzdHJpbmdfcGFpcl9vZl9qc29uXG4gICAganNvblxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24gbCA9XG4gIEpzb25VdGlsLm9mX2xpc3Qgc3RyaW5nX3BhaXJfcGFpcl90b19qc29uIGxcblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0X29mX2JvbmRzXCIgc3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIGpzb25cblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvX2pzb24gbCA9XG4gIEpzb25VdGlsLm9mX2xpc3Qgc3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24gbFxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGlzdF9vZl9saXN0c19vZl9ib25kc1wiXG4gICAgc3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24ganNvblxuXG5sZXQgc2NjX3RvX2pzb24gKGNtX2FjYywgc2NjX2FjYywgc2NjKSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggY29udGFjdG1hcHNjYyxcbiAgICAgICAgSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOmFjY3VyYWN5X2NtIH5sYWIyOmFjY3VyYWN5X3NjYyB+bGFiMzptYXBcbiAgICAgICAgICBhY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X3RvX2pzb24gc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fanNvblxuICAgICAgICAgIChjbV9hY2MsIHNjY19hY2MsIHNjYykgKTtcbiAgICBdXG5cbmxldCBzY2Nfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgY29udGFjdG1hcHNjYyBsIGluXG4gICAgICAgSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOmFjY3VyYWN5X2NtIH5sYWIyOmFjY3VyYWN5X3NjYyB+bGFiMzptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6XCJzY2MgZGVjb21wb3NpdGlvblwiIGFjY3VyYWN5X29mX2pzb24gYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfanNvbiBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNjYyBkZWNvbXBvc2l0aW9uXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzY2MgZGVjb21wb3NpdGlvblwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKioqKioqKioqKioqKVxuKCogZGVhZCBydWxlcyAqKVxuKCoqKioqKioqKioqKioqKVxuXG50eXBlIHJ1bGVfZGlyZWN0aW9uID1cbiAgfCBEaXJlY3RfcnVsZVxuICB8IFJldmVyc2VfcnVsZVxuICB8IEJvdGhfZGlyZWN0aW9uc1xuICB8IER1bW15X3J1bGVfZGlyZWN0aW9uXG4gIHwgVmFyaWFibGVcblxudHlwZSBydWxlID0ge1xuICBydWxlX2lkOiBpbnQ7XG4gIHJ1bGVfbGFiZWw6IHN0cmluZztcbiAgcnVsZV9hc3Q6IHN0cmluZztcbiAgcnVsZV9wb3NpdGlvbjogTG9jLnQ7XG4gIHJ1bGVfZGlyZWN0aW9uOiBydWxlX2RpcmVjdGlvbjtcbiAgcnVsZV9oaWRkZW46IGJvb2w7XG59XG5cbmxldCBkaXJlY3Rpb25fdG9fanNvbiBkID1cbiAgbWF0Y2ggZCB3aXRoXG4gIHwgRGlyZWN0X3J1bGUgLT4gYFN0cmluZyBcImRpcmVjdFwiXG4gIHwgUmV2ZXJzZV9ydWxlIC0+IGBTdHJpbmcgXCJyZXZlcnNlXCJcbiAgfCBCb3RoX2RpcmVjdGlvbnMgLT4gYFN0cmluZyBcImJvdGhcIlxuICB8IER1bW15X3J1bGVfZGlyZWN0aW9uIC0+IGBTdHJpbmcgXCJkdW1teVwiXG4gIHwgVmFyaWFibGUgLT4gYFN0cmluZyBcInZhcmlhYmxlXCJcblxubGV0IGpzb25fdG9fZGlyZWN0aW9uIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBgU3RyaW5nIFwiZGlyZWN0XCIgLT4gRGlyZWN0X3J1bGVcbiAgfCBgU3RyaW5nIFwicmV2ZXJzZVwiIC0+IFJldmVyc2VfcnVsZVxuICB8IGBTdHJpbmcgXCJib3RoXCIgLT4gQm90aF9kaXJlY3Rpb25zXG4gIHwgYFN0cmluZyBcImR1bW15XCIgLT4gRHVtbXlfcnVsZV9kaXJlY3Rpb25cbiAgfCBgU3RyaW5nIFwidmFyaWFibGVcIiAtPiBWYXJpYWJsZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwicnVsZSBkaXJlY3Rpb25cIiwgeCkpXG5cbmxldCBydWxlX3RvX2pzb24gcnVsZSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHJ1bGVfaWQsIEpzb25VdGlsLm9mX2ludCBydWxlLnJ1bGVfaWQ7XG4gICAgICBsYWJlbCwgSnNvblV0aWwub2Zfc3RyaW5nIHJ1bGUucnVsZV9sYWJlbDtcbiAgICAgIGFzdCwgSnNvblV0aWwub2Zfc3RyaW5nIHJ1bGUucnVsZV9hc3Q7XG4gICAgICBwb3NpdGlvbiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBydWxlLnJ1bGVfcG9zaXRpb24pO1xuICAgICAgZGlyZWN0aW9uLCBkaXJlY3Rpb25fdG9fanNvbiBydWxlLnJ1bGVfZGlyZWN0aW9uO1xuICAgICAgcnVsZV9oaWRkZW4sIEpzb25VdGlsLm9mX2Jvb2wgcnVsZS5ydWxlX2hpZGRlbjtcbiAgICBdXG5cbmxldCBqc29uX3RvX3J1bGUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBydWxlX2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHJ1bGVfaWQgbCk7XG4gICAgICAgICBydWxlX2xhYmVsID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGxhYmVsIGwpO1xuICAgICAgICAgcnVsZV9hc3QgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgYXN0IGwpO1xuICAgICAgICAgcnVsZV9wb3NpdGlvbiA9XG4gICAgICAgICAgIHNuZFxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbiBsKSk7XG4gICAgICAgICBydWxlX2RpcmVjdGlvbiA9IGpzb25fdG9fZGlyZWN0aW9uIChMaXN0LmFzc29jIGRpcmVjdGlvbiBsKTtcbiAgICAgICAgIHJ1bGVfaGlkZGVuID0gSnNvblV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBydWxlX2hpZGRlbiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcIiBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcInJ1bGVcIiwgeCkpXG5cbnR5cGUgdmFyID0ge1xuICB2YXJfaWQ6IGludDtcbiAgdmFyX2xhYmVsOiBzdHJpbmc7XG4gIHZhcl9hc3Q6IHN0cmluZztcbiAgdmFyX3Bvc2l0aW9uOiBMb2MudDtcbn1cblxubGV0IHZhcl90b19qc29uIHZhciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHJ1bGVfaWQsIEpzb25VdGlsLm9mX2ludCB2YXIudmFyX2lkO1xuICAgICAgbGFiZWwsIEpzb25VdGlsLm9mX3N0cmluZyB2YXIudmFyX2xhYmVsO1xuICAgICAgYXN0LCBKc29uVXRpbC5vZl9zdHJpbmcgdmFyLnZhcl9hc3Q7XG4gICAgICBwb3NpdGlvbiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCB2YXIudmFyX3Bvc2l0aW9uKTtcbiAgICBdXG5cbmxldCBqc29uX3RvX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHZhcl9pZCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBydWxlX2lkIGwpO1xuICAgICAgICAgdmFyX2xhYmVsID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGxhYmVsIGwpO1xuICAgICAgICAgdmFyX2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICB2YXJfcG9zaXRpb24gPVxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgcG9zaXRpb24gbCkpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiIHZhclwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJ2YXJcIiwgeCkpXG5cbnR5cGUgKCdydWxlLCAndmFyKSBpbmZsdWVuY2Vfbm9kZSA9IFJ1bGUgb2YgJ3J1bGUgfCBWYXIgb2YgJ3ZhclxudHlwZSBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPSAoKGludCwgaW50KSBpbmZsdWVuY2Vfbm9kZSAqIExvYy50KSBsaXN0XG5cbmxldCBpbmZsdWVuY2Vfbm9kZV90b19qc29uIHJ1bGVfdG9fanNvbiB2YXJfdG9fanNvbiBhID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVmFyIGkgLT4gYEFzc29jIFsgdmFyaWFibGUsIHZhcl90b19qc29uIGkgXVxuICB8IFJ1bGUgaSAtPiBgQXNzb2MgWyBydWxlLCBydWxlX3RvX2pzb24gaSBdXG5cbmxldCBpbmZsdWVuY2Vfbm9kZV9vZl9qc29uIGpzb25fdG9fcnVsZSBqc29uX3RvX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gdmFyaWFibGUgLT4gVmFyIChqc29uX3RvX3ZhciBqc29uKVxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IHJ1bGUgLT4gUnVsZSAoanNvbl90b19ydWxlIGpzb24pXG4gIHwgeCAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIk5vdCBhIGNvcnJlY3QgaW5mbHVlbmNlIG5vZGVcIiBpblxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gSnNvblV0aWwub2ZfaW50IEpzb25VdGlsLm9mX2ludFxuXG5sZXQgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcInJ1bGUgaWRcIikpXG4gICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJ2YXIgaWRcIikpXG5cbmxldCBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX2xpc3RcbiAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTprZXkgfmxhYjI6bG9jYWxpdHkgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgIChmdW4gbG9jIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgbG9jKSkpXG5cbmxldCBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3RcbiAgICAoSnNvblV0aWwudG9fcGFpciB+bGFiMTprZXkgfmxhYjI6bG9jYWxpdHkgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgIChmdW4geCAtPlxuICAgICAgICAgc25kXG4gICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgIHgpKSlcblxubGV0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gcnVsZV90b19qc29uIHZhcl90b19qc29uXG5cbmxldCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV9vZl9qc29uIGpzb25fdG9fcnVsZSBqc29uX3RvX3ZhclxuXG5sZXQgc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgcnVsZSAtPiBSdWxlIHJ1bGUucnVsZV9pZFxuICB8IFZhciB2YXIgLT4gVmFyIHZhci52YXJfaWRcblxubGV0IHBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgciAtPiByLnJ1bGVfcG9zaXRpb25cbiAgfCBWYXIgdiAtPiB2LnZhcl9wb3NpdGlvblxuXG5tb2R1bGUgSW5mbHVlbmNlTm9kZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gKGludCwgaW50KSBpbmZsdWVuY2Vfbm9kZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICB8IFJ1bGUgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUnVsZSAlaVwiIHJcbiAgICB8IFZhciByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJWYXIgJWlcIiByXG5lbmQpXG5cbm1vZHVsZSBJbmZsdWVuY2VOb2RlTWFwID0gSW5mbHVlbmNlTm9kZVNldE1hcC5NYXBcblxuKCogUmVsYXRpb25zICopXG5cbnR5cGUgJ2EgcGFpciA9ICdhICogJ2FcbnR5cGUgbG9jYXRpb24gPSBEaXJlY3Qgb2YgaW50IHwgU2lkZV9lZmZlY3Qgb2YgaW50XG5cbmxldCBkdW1wX2xvY2F0aW9uIGZtdCA9IGZ1bmN0aW9uXG4gIHwgRGlyZWN0IGludCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlaVwiIGludFxuICB8IFNpZGVfZWZmZWN0IGludCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlaSpcIiBpbnRcblxubGV0IGR1bXBfbG9jYXRpb25fcGFpciBmbXQgKGEsIGIpID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiKCVhLCVhKVwiIGR1bXBfbG9jYXRpb24gYSBkdW1wX2xvY2F0aW9uIGJcblxubGV0IGR1bXBfbG9jYXRpb25fcGFpcl9saXN0IGZtdCBsID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiWyVhXVwiXG4gICAgKFBwLmxpc3QgKGZ1biBmbXQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCI7XCIpIGR1bXBfbG9jYXRpb25fcGFpcilcbiAgICBsXG5cbmxldCBzdHJpbmdfb2ZfbGFiZWxfbGlzdCBsID0gRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCBsXG5cbnR5cGUgaGFsZl9pbmZsdWVuY2VfbWFwID1cbiAgbG9jYXRpb24gcGFpciBsaXN0IEluZmx1ZW5jZU5vZGVNYXAudCBJbmZsdWVuY2VOb2RlTWFwLnRcblxudHlwZSBpbmZsdWVuY2VfbWFwID0ge1xuICBub2RlczogKHJ1bGUsIHZhcikgaW5mbHVlbmNlX25vZGUgbGlzdDtcbiAgcG9zaXRpdmU6IGhhbGZfaW5mbHVlbmNlX21hcDtcbiAgbmVnYXRpdmU6IGhhbGZfaW5mbHVlbmNlX21hcDtcbn1cblxuKCogTG9jYXRpb24gbGFiZWxzICopXG5sZXQgbG9jYXRpb25fdG9fanNvbiBhID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgRGlyZWN0IGkgLT4gYEFzc29jIFsgZGlyZWN0LCBKc29uVXRpbC5vZl9pbnQgaSBdXG4gIHwgU2lkZV9lZmZlY3QgaSAtPiBgQXNzb2MgWyBzaWRlX2VmZmVjdCwgSnNvblV0aWwub2ZfaW50IGkgXVxuXG5sZXQgbG9jYXRpb25fb2ZfanNvbiA/KGVycm9yX21zZyA9IFwiTm90IGEgY29ycmVjdCBsb2NhdGlvblwiKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gZGlyZWN0IC0+IERpcmVjdCAoSnNvblV0aWwudG9faW50IGpzb24pXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gc2lkZV9lZmZlY3QgLT5cbiAgICBTaWRlX2VmZmVjdCAoSnNvblV0aWwudG9faW50IGpzb24pXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uID1cbiAgSW5mbHVlbmNlTm9kZU1hcC50b19qc29uIH5sYWJfa2V5OnNvdXJjZSB+bGFiX3ZhbHVlOnRhcmdldF9tYXBcbiAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgKEluZmx1ZW5jZU5vZGVNYXAudG9fanNvbiB+bGFiX2tleTp0YXJnZXQgfmxhYl92YWx1ZTpsb2NhdGlvbl9wYWlyX2xpc3RcbiAgICAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpyaHMgfmxhYjI6bGhzIGxvY2F0aW9uX3RvX2pzb25cbiAgICAgICAgICAgICBsb2NhdGlvbl90b19qc29uKSkpXG5cbmxldCBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiA9XG4gIEluZmx1ZW5jZU5vZGVNYXAub2ZfanNvblxuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImFjdGl2YXRpb24gb3IgaW5oaWJpdGlvbiBtYXBcIilcbiAgICB+bGFiX2tleTpzb3VyY2UgfmxhYl92YWx1ZTp0YXJnZXRfbWFwIHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAoSW5mbHVlbmNlTm9kZU1hcC5vZl9qc29uIH5sYWJfa2V5OnRhcmdldCB+bGFiX3ZhbHVlOmxvY2F0aW9uX3BhaXJfbGlzdFxuICAgICAgIH5lcnJvcl9tc2c6XCJtYXAgb2YgbGlzdHMgb2YgcGFpcnMgb2YgbG9jYXRpb25zXCJcbiAgICAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImxpc3Qgb2YgcGFpciBvZiBsb2NhdGlvbnNcIlxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJcIiB+bGFiMTpyaHMgfmxhYjI6bGhzXG4gICAgICAgICAgICAgKGxvY2F0aW9uX29mX2pzb24gfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYXRpb25cIikpXG4gICAgICAgICAgICAgKGxvY2F0aW9uX29mX2pzb24gfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYXRpb25cIikpKSkpXG5cbigqIEluZmx1ZW5jZSBtYXAgKilcblxubGV0IG5vZGVzX2xpc3RfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG5sZXQgbm9kZXNfbGlzdF9vZl9qc29uID0gSnNvblV0aWwudG9fbGlzdCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cblxubGV0IGluZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBpbmZsdWVuY2VtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKGZ1biBpbmZsdWVuY2VfbWFwIC0+XG4gICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gaW5mbHVlbmNlX21hcC5ub2RlcztcbiAgICAgICAgICAgICAgICB3YWtldXAsIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAucG9zaXRpdmU7XG4gICAgICAgICAgICAgICAgaW5oaWJpdGlvbiwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5uZWdhdGl2ZTtcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICBpbmZsdWVuY2VfbWFwICk7XG4gICAgXVxuXG5sZXQgbm9kZXNfb2ZfaW5mbHVlbmNlX21hcF90b19qc29uIG5vZGVzX2xpc3QgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIG5vZGVzb2ZpbmZsdWVuY2VtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKGZ1biBub2Rlc19saXN0IC0+IGBBc3NvYyBbIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gbm9kZXNfbGlzdCBdKVxuICAgICAgICAgIG5vZGVzX2xpc3QgKTtcbiAgICBdXG5cbmxldCBub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIG5vZGVzb2ZpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcDFcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMSAtPlxuICAgICAgICAgICAgICh0cnkgbm9kZXNfbGlzdF9vZl9qc29uIChMaXN0LmFzc29jIG5vZGVzIGwpXG4gICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSlcblxubGV0IGxvY2FsX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwID1cbiAgbGV0IGFjY3VyYWN5LCB0b3RhbCwgYndkLCBmd2QsIG9yaWdpbl9vcHQsIGluZmx1ZW5jZV9tYXAgPSBpbmZsdWVuY2VfbWFwIGluXG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggaW5mbHVlbmNlbWFwLFxuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICBhY2N1cmFjeV9zdHJpbmcsIGFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3k7XG4gICAgICAgICAgICB0b3RhbF9zdHJpbmcsIEpzb25VdGlsLm9mX2ludCB0b3RhbDtcbiAgICAgICAgICAgIGZ3ZF9zdHJpbmcsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgZndkO1xuICAgICAgICAgICAgYndkX3N0cmluZywgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBid2Q7XG4gICAgICAgICAgICBvcmlnaW4sIEpzb25VdGlsLm9mX29wdGlvbiByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gb3JpZ2luX29wdDtcbiAgICAgICAgICAgICggbWFwLFxuICAgICAgICAgICAgICAoZnVuIGluZmx1ZW5jZV9tYXAgLT5cbiAgICAgICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMsIG5vZGVzX2xpc3RfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5vZGVzO1xuICAgICAgICAgICAgICAgICAgICB3YWtldXAsIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAucG9zaXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICggaW5oaWJpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5lZ2F0aXZlICk7XG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIGluZmx1ZW5jZV9tYXAgKTtcbiAgICAgICAgICBdICk7XG4gICAgXVxuXG5sZXQgaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcDFcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBub2RlcyA9IG5vZGVzX2xpc3Rfb2ZfanNvbiAoTGlzdC5hc3NvYyBub2RlcyBsKTtcbiAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2Mgd2FrZXVwIGwpO1xuICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgPVxuICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyBpbmhpYml0aW9uIGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG5sZXQgbG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIG1hdGNoIGpzb24gd2l0aFxuICAgICAgIHwgYEFzc29jIGwnIC0+XG4gICAgICAgICBsZXQgYWNjdXJhY3kgPSBhY2N1cmFjeV9vZl9qc29uIChMaXN0LmFzc29jIGFjY3VyYWN5X3N0cmluZyBsJykgaW5cbiAgICAgICAgIGxldCB0b3RhbCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyB0b3RhbF9zdHJpbmcgbCcpIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnID0gSnNvblV0aWwuYnVpbGRfbXNnIFwiZndkIHJhZGl1c1wiIGluXG4gICAgICAgICBsZXQgZndkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIGZ3ZF9zdHJpbmcgbCcpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGVycm9yX21zZyA9IEpzb25VdGlsLmJ1aWxkX21zZyBcImJ3ZCByYWRpdXNcIiBpblxuICAgICAgICAgbGV0IGJ3ZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBid2Rfc3RyaW5nIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAgKExpc3QuYXNzb2Mgb3JpZ2luIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBpbmZsdWVuY2VfbWFwID1cbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMgPSBub2Rlc19saXN0X29mX2pzb24gKExpc3QuYXNzb2Mgbm9kZXMgbCk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2Mgd2FrZXVwIGwpO1xuICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2MgaW5oaWJpdGlvbiBsKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIG1hcCBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBhY2N1cmFjeSwgdG90YWwsIGZ3ZCwgYndkLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIHJhaXNlXG4gICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKilcbigqIGRlYWQgcnVsZXMgICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGRlYWRfcnVsZXMgPSBydWxlIGxpc3RcblxubGV0IGRlYWRfcnVsZXNfdG9fanNvbiBqc29uID1cbiAgYEFzc29jIFsgZGVhZF9ydWxlcywgSnNvblV0aWwub2ZfbGlzdCBydWxlX3RvX2pzb24ganNvbiBdXG5cbmxldCBkZWFkX3J1bGVzX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIGFzIHggd2hlbiBzID0gZGVhZF9ydWxlcyAtPlxuICAgICh0cnkgSnNvblV0aWwudG9fbGlzdCBqc29uX3RvX3J1bGUganNvblxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9ydWxlcywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBkZWFkX3J1bGVzLCB4KSlcblxuKCoqKioqKioqKioqKioqKilcbigqIGRlYWQgYWdlbnRzICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGFnZW50X2tpbmQgPSB7XG4gIGFnZW50X2lkOiBpbnQ7XG4gIGFnZW50X2FzdDogc3RyaW5nO1xuICBhZ2VudF9wb3NpdGlvbjogTG9jLnQgbGlzdDtcbn1cblxubGV0IGpzb25fdG9fYWdlbnRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGFnZW50X2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIGFnZW50X2lkIGwpO1xuICAgICAgICAgYWdlbnRfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIGFnZW50X3Bvc2l0aW9uID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5IGxpc3RcIilcbiAgICAgICAgICAgICAoZnVuIGpzb24gLT5cbiAgICAgICAgICAgICAgIHNuZFxuICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5XCIpKVxuICAgICAgICAgICAgICAgICAgICBqc29uKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbl9saXN0IGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiYWdlbnQga2luZFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJhZ2VudCBraW5kXCIsIHgpKVxuXG5sZXQgYWdlbnRfa2luZF90b19qc29uIGFnZW50X2tpbmQgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBhZ2VudF9pZCwgSnNvblV0aWwub2ZfaW50IGFnZW50X2tpbmQuYWdlbnRfaWQ7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyBhZ2VudF9raW5kLmFnZW50X2FzdDtcbiAgICAgICggcG9zaXRpb25fbGlzdCxcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChmdW4gYSAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIGEpKVxuICAgICAgICAgIGFnZW50X2tpbmQuYWdlbnRfcG9zaXRpb24gKTtcbiAgICBdXG5cbnR5cGUgZGVhZF9hZ2VudHMgPSBhZ2VudF9raW5kIGxpc3RcblxubGV0IGpzb25fb2ZfZGVhZF9hZ2VudHMganNvbiA9XG4gIGBBc3NvYyBbIGRlYWRfYWdlbnRzLCBKc29uVXRpbC5vZl9saXN0IGFnZW50X2tpbmRfdG9fanNvbiBqc29uIF1cblxubGV0IGpzb25fdG9fZGVhZF9hZ2VudHMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIGFzIHggd2hlbiBzID0gZGVhZF9hZ2VudHMgLT5cbiAgICAodHJ5IEpzb25VdGlsLnRvX2xpc3QganNvbl90b19hZ2VudF9raW5kIGpzb25cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIGRlYWRfYWdlbnRzLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9hZ2VudHMsIHgpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9ucyAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IChydWxlICogKHN0cmluZyAqIHN0cmluZykgbGlzdCkgbGlzdFxuXG5sZXQgc2VwYXJhdGluZ190cmFuc2l0aW9uc190b19qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwicnVsZVwiIH5sYWIyOlwicG90ZW50aWFsLWNvbnRleHRzXCIgcnVsZV90b19qc29uXG4gICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInMxXCIgfmxhYjI6XCJzMlwiIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgICAgICAgIEpzb25VdGlsLm9mX3N0cmluZykpKVxuXG5sZXQgc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic2VwYXJhdGluZyB0cmFuc2l0aW9ucyBsaXN0XCJcbiAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwic2VwYXJhdGluZyB0cmFuc2l0aW9uXCIgfmxhYjE6XCJydWxlXCJcbiAgICAgICB+bGFiMjpcInBvdGVudGlhbC1jb250ZXh0c1wiIGpzb25fdG9fcnVsZVxuICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25zXCJcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwidHJhbnNpdGlvblwiIH5sYWIxOlwiczFcIiB+bGFiMjpcInMyXCJcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpKSlcblxuKCoqKioqKioqKioqKioqKilcbigqIENvbnN0cmFpbnRzICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGJpbmRpbmdfc3RhdGUgPVxuICB8IEZyZWVcbiAgfCBXaWxkY2FyZFxuICB8IEJvdW5kX3RvX3Vua25vd25cbiAgfCBCb3VuZF90byBvZiBpbnRcbiAgfCBCaW5kaW5nX3R5cGUgb2Ygc3RyaW5nICogc3RyaW5nXG5cbnR5cGUgYWdlbnQgPVxuICBzdHJpbmdcbiAgKiAoc3RyaW5nXG4gICAgKiBzdHJpbmcgb3B0aW9uXG4gICAgKiBiaW5kaW5nX3N0YXRlIG9wdGlvblxuICAgICogKGludCBvcHRpb24gKiBpbnQgb3B0aW9uKSBvcHRpb24pXG4gICAgbGlzdFxuXG50eXBlICdzaXRlX2dyYXBoIGxlbW1hID0geyBoeXA6ICdzaXRlX2dyYXBoOyByZWZpbmVtZW50OiAnc2l0ZV9ncmFwaCBsaXN0IH1cbnR5cGUgJ3NpdGVfZ3JhcGggcG9seV9jb25zdHJhaW50c19saXN0ID0gKHN0cmluZyAqICdzaXRlX2dyYXBoIGxlbW1hIGxpc3QpIGxpc3RcblxubGV0IGxlbW1hX3RvX2pzb24gc2l0ZV9ncmFwaF90b19qc29uIGpzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmh5cCB+bGFiMjpyZWZpbmVtZW50IHNpdGVfZ3JhcGhfdG9fanNvblxuICAgIChKc29uVXRpbC5vZl9saXN0IHNpdGVfZ3JhcGhfdG9fanNvbilcbiAgICAoanNvbi5oeXAsIGpzb24ucmVmaW5lbWVudClcblxubGV0IGxlbW1hX29mX2pzb24gc2l0ZV9ncmFwaF9vZl9qc29uIGpzb24gPVxuICBsZXQgYSwgYiA9XG4gICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTpoeXAgfmxhYjI6cmVmaW5lbWVudCB+ZXJyb3JfbXNnOlwibGVtbWFcIlxuICAgICAgc2l0ZV9ncmFwaF9vZl9qc29uXG4gICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwicmVmaW5lbWVudHMgbGlzdFwiIHNpdGVfZ3JhcGhfb2ZfanNvbilcbiAgICAgIGpzb25cbiAgaW5cbiAgeyBoeXAgPSBhOyByZWZpbmVtZW50ID0gYiB9XG5cbmxldCBnZXRfaHlwIGggPSBoLmh5cFxubGV0IGdldF9yZWZpbmVtZW50IHIgPSByLnJlZmluZW1lbnRcbmxldCBmcmVlID0gXCJcIlxubGV0IHdpbGRjYXJkID0gXCI/XCJcbmxldCBib3VuZCA9IFwiIV9cIlxubGV0IGJvbmRfaWQgPSBcImJvbmQgaWRcIlxubGV0IGJvdW5kX3RvID0gXCJib3VuZCB0b1wiXG5sZXQgYmluZGluZ190eXBlID0gXCJiaW5kaW5nIHR5cGVcIlxubGV0IHByb3AgPSBcInByb3BlcnR5IHN0YXRlXCJcbmxldCBiaW5kID0gXCJiaW5kaW5nIHN0YXRlXCJcbmxldCBiaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wgPSBcIi5cIlxubGV0IGZyZWVfYmFja2VuZF9zeW1ib2wgPSBcIi5cIlxubGV0IG1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfc3ltYm9sID0gXCJcIlxubGV0IHdpbGRjYXJkX2JhY2tlbmRfc3ltYm9sID0gXCIjXCJcbmxldCBib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm9sID0gXCJfXCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9pbnRyb2R1Y3Rpb25fYmFja2VuZF9zeW1ib2wgPSBcIn5cIlxubGV0IGludGVybmFsX3N0YXRlX2RlbGltaXRlcl9iYWNrZW5kX3N5bWJvbCA9IFwiLFwiXG5sZXQgYmluZGluZ19zdGF0ZV9kZWxpbWl0ZXJfYmFja2VuZF9zeW1ib2wgPSBcIixcIlxubGV0IGJpbmRpbmdfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbCA9IFwiW1wiXG5sZXQgYmluZGluZ19zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJdXCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ7XCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ9XCJcbmxldCBjb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2wgPSBcIntcIlxubGV0IGNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCA9IFwifVwiXG5sZXQgY291bnRlcl9zdGF0ZV9yYW5nZV9iYWNrZW5kX3N5bWJvbCA9IFwiIC4uIFwiXG5sZXQgb3Blbl9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID0gXCJbXCJcbmxldCBjbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID0gXCJdXCJcbmxldCBvcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPSBcIl1cIlxubGV0IGNsb3NlX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPSBcIltcIlxubGV0IHBsdXNfaW5maW5pdHlfc3ltYm9sID0gXCIrb29cIlxubGV0IG1pbnVzX2luZmluaXR5X3N5bWJvbCA9IFwiLW9vXCJcblxubGV0IHN0cmluZ19vZl9iaW5kaW5nX3R5cGUgPyhiaW5kaW5nX3R5cGVfc3ltYm9sID0gXCIuXCIpIH5hZ2VudF9uYW1lIH5zaXRlX25hbWVcbiAgICAoKSA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiJXMlcyVzXCIgc2l0ZV9uYW1lIGJpbmRpbmdfdHlwZV9zeW1ib2wgYWdlbnRfbmFtZVxuXG5sZXQgYmluZGluZ19zdGF0ZV9saWdodF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gZnJlZSAtPiBGcmVlXG4gIHwgYEFzc29jIFsgKHMsIGBOdWxsKSBdIHdoZW4gcyA9IHdpbGRjYXJkIC0+IFdpbGRjYXJkXG4gIHwgYEFzc29jIFsgKHMsIGBOdWxsKSBdIHdoZW4gcyA9IGJvdW5kX3RvIC0+IEJvdW5kX3RvX3Vua25vd25cbiAgfCBgQXNzb2MgWyAocywgaikgXSB3aGVuIHMgPSBib25kX2lkIC0+XG4gICAgbGV0IGkgPSBKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpcIndyb25nIGJpbmRpbmcgaWRcIiBqIGluXG4gICAgbGV0IGJvbmRfaW5kZXggPSBpIGluXG4gICAgQm91bmRfdG8gYm9uZF9pbmRleFxuICB8IGBBc3NvYyBbIChzLCBqKSBdIHdoZW4gcyA9IGJpbmRpbmdfdHlwZSAtPlxuICAgIGxldCBhZ2VudF9uYW1lLCBzaXRlX25hbWUgPVxuICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTpcImFnZW50XCIgfmxhYjI6XCJzaXRlXCIgfmVycm9yX21zZzpcImJpbmRpbmcgdHlwZVwiXG4gICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwic2l0ZSBuYW1lXCIpXG4gICAgICAgIGpcbiAgICBpblxuICAgIEJpbmRpbmdfdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwid3JvbmcgYmluZGluZyBzdGF0ZVwiLCB4KSlcblxubGV0IGJpbmRpbmdfc3RhdGVfbGlnaHRfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRnJlZSAtPiBgQXNzb2MgWyBmcmVlLCBgTnVsbCBdXG4gIHwgV2lsZGNhcmQgLT4gYEFzc29jIFsgd2lsZGNhcmQsIGBOdWxsIF1cbiAgfCBCb3VuZF90b191bmtub3duIC0+IGBBc3NvYyBbIGJvdW5kX3RvLCBgTnVsbCBdXG4gIHwgQm91bmRfdG8gYm9uZF9pbmRleCAtPiBgQXNzb2MgWyBib25kX2lkLCBKc29uVXRpbC5vZl9pbnQgYm9uZF9pbmRleCBdXG4gIHwgQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpIC0+XG4gICAgbGV0IGogPVxuICAgICAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcImFnZW50XCIgfmxhYjI6XCJzaXRlXCIgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgICAgIEpzb25VdGlsLm9mX3N0cmluZyAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKVxuICAgIGluXG4gICAgYEFzc29jIFsgYmluZGluZ190eXBlLCBqIF1cblxubGV0IGNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6aW5mIH5sYWIyOnN1cCB+ZXJyb3JfbXNnOlwid3JvbmcgY291bnRlciBzdGF0ZVwiXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6Y291bnRlcikpXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6Y291bnRlcikpXG5cbmxldCBjb3VudGVyX3N0YXRlX2xpZ2h0X3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmluZiB+bGFiMjpzdXBcbiAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludClcbiAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludClcblxubGV0IGludGVyZmFjZV9saWdodF90b19qc29uIGludGYgPVxuICBKc29uVXRpbC5vZl9tYXAgfmxhYl9rZXk6c2l0ZSB+bGFiX3ZhbHVlOnN0YXRlc2xpc3RcbiAgICB+Zm9sZDooZnVuIGYgYSB4IC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgKGssIGEsIGIsIGMpIC0+IGYgayAoYSwgYiwgYykgbGlzdCkgeCBhKVxuICAgICgqanNvbiAtPiBlbHQqKVxuICAgICAgKGZ1biBzaXRlIC0+IEpzb25VdGlsLm9mX3N0cmluZyBzaXRlKVxuICAgICgqanNvbiAtPiAndmFsdWUqKVxuICAgIChKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6cHJvcCB+bGFiMjpiaW5kIH5sYWIzOmNvdW50ZXJcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIGJpbmRpbmdfc3RhdGVfbGlnaHRfdG9fanNvbilcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIGNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbikpXG4gICAgaW50ZlxuXG5sZXQgaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLnRvX21hcCB+bGFiX2tleTpzaXRlIH5sYWJfdmFsdWU6c3RhdGVzbGlzdCB+ZXJyb3JfbXNnOmludGVyZmFjZVxuICAgIH5lbXB0eTpbXVxuICAgIH5hZGQ6KGZ1biBrIChhLCBiLCBjKSBsaXN0IC0+IChrLCBhLCBiLCBjKSA6OiBsaXN0KVxuICAgICgqanNvbiAtPiBlbHQqKVxuICAgICAgKGZ1biBqc29uIC0+IEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOnNpdGUganNvbilcbiAgICAoKmpzb24gLT4gJ3ZhbHVlKilcbiAgICAoSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOnByb3AgfmxhYjI6YmluZCB+bGFiMzpjb3VudGVyXG4gICAgICAgfmVycm9yX21zZzpcIndyb25nIGJpbmRpbmcgc3RhdGVcIlxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOnByb3ApKVxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gYmluZGluZ19zdGF0ZV9saWdodF9vZl9qc29uKVxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gY291bnRlcl9zdGF0ZV9saWdodF9vZl9qc29uKSlcbiAgICBqc29uXG5cbmxldCBhZ2VudF9nZW5fb2ZfanNvbiBpbnRlcmZhY2Vfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6aW50ZXJmYWNlIH5lcnJvcl9tc2c6XCJhZ2VudFwiXG4gICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgIGludGVyZmFjZV9vZl9qc29uXG5cbmxldCBwb2x5X2NvbnN0cmFpbnRzX2xpc3Rfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0XG4gICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcImNvbnN0cmFpbnRzIGxpc3RcIiB+bGFiMTpkb21haW5fbmFtZVxuICAgICAgIH5sYWIyOnJlZmluZW1lbnRzX2xpc3RcbiAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhYnN0cmFjdCBkb21haW5cIilcbiAgICAgICAoSnNvblV0aWwudG9fbGlzdCAobGVtbWFfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24pKSlcblxubGV0IGxlbW1hc19saXN0X29mX2pzb25fZ2VuIGludGVyZmFjZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyByZWZpbmVtZW50X2xlbW1hcyBsIGluXG4gICAgICAgcG9seV9jb25zdHJhaW50c19saXN0X29mX2pzb25cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzaXRlIGdyYXBoXCJcbiAgICAgICAgICAgIChhZ2VudF9nZW5fb2ZfanNvbiBpbnRlcmZhY2Vfb2ZfanNvbikpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcInJlZmluZW1lbnQgbGVtbWFzIGxpc3RcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJyZWZpbmVtZW50IGxlbW1hcyBsaXN0XCIsIHgpKVxuXG5sZXQgbGVtbWFzX2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgbGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4gaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24ganNvblxuXG5sZXQgYWdlbnRfZ2VuX3RvX2pzb24gaW50ZXJmYWNlX3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFnZW50IH5sYWIyOmludGVyZmFjZSBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICBpbnRlcmZhY2VfdG9fanNvblxuXG5sZXQgcG9seV9jb25zdHJhaW50c19saXN0X3RvX2pzb24gc2l0ZV9ncmFwaF90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmRvbWFpbl9uYW1lIH5sYWIyOnJlZmluZW1lbnRzX2xpc3RcbiAgICAgICBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdCAobGVtbWFfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24pKSlcbiAgICBjb25zdHJhaW50c1xuXG5sZXQgbGVtbWFzX2xpc3RfdG9fanNvbl9nZW4gaW50ZXJmYWNlX3RvX2pzb24gY29uc3RyYWludHMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIHJlZmluZW1lbnRfbGVtbWFzLFxuICAgICAgICBwb2x5X2NvbnN0cmFpbnRzX2xpc3RfdG9fanNvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IChhZ2VudF9nZW5fdG9fanNvbiBpbnRlcmZhY2VfdG9fanNvbikpXG4gICAgICAgICAgY29uc3RyYWludHMgKTtcbiAgICBdXG5cbmxldCBsZW1tYXNfbGlzdF90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgbGVtbWFzX2xpc3RfdG9fanNvbl9nZW4gaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24gY29uc3RyYWludHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCByYXdfdmVyc2lvbl9zdHJpbmcgPSBcIiRGb3JtYXQ6JUQkXCJcblxubGV0IGV4dHJhY3RfdGFnX3JlID1cbiAgUmUuY29tcGlsZVxuICAgIChSZS5zZXEgWyBSZS5zdHIgXCJ0YWc6IFwiOyBSZS5ncm91cCAoUmUucmVwIChSZS5jb21wbCBbIFJlLmNoYXIgJywnIF0pKSBdKVxuXG5sZXQgdmVyc2lvbl9zdHJpbmcgPVxuICBtYXRjaCBSZS5leGVjX29wdCBleHRyYWN0X3RhZ19yZSByYXdfdmVyc2lvbl9zdHJpbmcgd2l0aFxuICB8IFNvbWUgZ3IgLT4gUmUuR3JvdXAuZ2V0IGdyIDFcbiAgfCBOb25lIC0+IEdpdF92ZXJzaW9uLnRcblxubGV0IHZlcnNpb25fbXNnID0gXCJLYXBwYSBTaW11bGF0b3I6IFwiIF4gdmVyc2lvbl9zdHJpbmdcbmxldCB2ZXJzaW9uX2thc2FfZnVsbF9uYW1lID0gXCJLYXBwYSBTdGF0aWMgQW5hbHl6ZXIgKFwiIF4gdmVyc2lvbl9zdHJpbmcgXiBcIilcIlxubGV0IHZlcnNpb25fa2FkZV9mdWxsX25hbWUgPSBcIkthREUgKFwiIF4gdmVyc2lvbl9zdHJpbmcgXiBcIilcIlxubGV0IHRrX2lzX2luaXRpYWxpemVkID0gcmVmIGZhbHNlXG4iLCIoKiBTaW1pbGFyIHRvIE9DYW1sJ3Mgc3RhbmRhcmQgQXJnIG1vZHVsZSBidXQgd2l0aCBzb21lIGltcHJvdmVtZW50czpcbiAgIC0gb3B0aW9ucyBhcmUgY2xhc3NpZmllZCB3aXRoIHJlc3BlY3QgdG8gY2F0ZWdvcmllc1xuICAgLSBuZW9waHl0ZSAvIGV4cGVydCBtb2Rlc1xuICAgLSBoaWRkZW4gb3B0aW9uc1xuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWMgdHlwZSBpcyByZWFsbHkgZGlmZmVyZW50LlxuXG4gICBDb3B5cmlnaHQgKEMpIEFudG9pbmUgTWluZScgMjAwNlxuKilcblxubGV0IGV4cGVydF9tb2RlID0gcmVmIGZhbHNlICgqIHNob3dzIGV4cGVydCBvcHRpb25zICopXG5sZXQgZGV2X21vZGUgPSByZWYgZmFsc2UgKCogYWNjZXB0IF9BTExfIG9wdGlvbnMgKilcblxuKCogVHlwZXMgKilcbigqICoqKioqICopXG5cbnR5cGUga2V5ID0gc3RyaW5nICgqIGNvbW1hbmQtbGluZSBhcmd1bWVudCAqKVxudHlwZSBtc2cgPSBzdHJpbmcgKCogaGVscCBtZXNzYWdlICopXG5cbigqIHR5cGUgb2Ygb3B0aW9uICopXG50eXBlIGxldmVsID1cbiAgfCBOb3JtYWwgKCogYWx3YXlzIHNob3duICYgYWNjZXB0ZWQgKilcbiAgfCBFeHBlcnQgKCogc2hvd24gaW4gZXhwZXJ0IG9yIGRldmVsb3BwZXIgbW9kZSwgYWx3YXlzIGFjY2VwdGVkICopXG4gIHwgRGV2ZWxvcHBlciAoKiBvbmx5IHNob3duICYgYWNjZXB0ZWQgaW4gZGV2ZWxvcHBlciBtb2RlICopXG4gIHwgSGlkZGVuICgqIG5ldmVyIHNob3duICopXG5cbm1vZHVsZSBTdHJpbmdJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogaW50ICogbGV2ZWwgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKGEsIGIsIF8pIChjLCBkLCBfKSA9XG4gICAgbGV0IGNtcCA9IGNvbXBhcmUgYiBkIGluXG4gICAgaWYgY21wID0gMCB0aGVuXG4gICAgICBjb21wYXJlIGEgY1xuICAgIGVsc2VcbiAgICAgIGNtcFxuXG4gIGxldCBwcmludCBmbXQgKGEsIGIsIF8pID0gRm9ybWF0LmZwcmludGYgZm10IFwiJXM6JWlcIiBhIGJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nSW50U2V0TWFwID0gU2V0TWFwLk1ha2UgKFN0cmluZ0ludClcbm1vZHVsZSBTdHJpbmdJbnRNYXAgPSBTdHJpbmdJbnRTZXRNYXAuTWFwXG5tb2R1bGUgU3RyaW5nSW50U2V0ID0gU3RyaW5nSW50U2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ1NldE1hcCA9IE1vZHMuU3RyaW5nU2V0TWFwXG5tb2R1bGUgU3RyaW5nU2V0ID0gU3RyaW5nU2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ01hcCA9IFN0cmluZ1NldE1hcC5NYXBcblxubGV0IG1pbl9sZXZlbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb3JtYWwsIF8gfCBfLCBOb3JtYWwgLT4gTm9ybWFsXG4gIHwgRXhwZXJ0LCBfIHwgXywgRXhwZXJ0IC0+IEV4cGVydFxuICB8IERldmVsb3BwZXIsIF8gfCBfLCBEZXZlbG9wcGVyIC0+IERldmVsb3BwZXJcbiAgfCBIaWRkZW4sIEhpZGRlbiAtPiBIaWRkZW5cblxubGV0IG1heF9sZXZlbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBIaWRkZW4sIF8gfCBfLCBIaWRkZW4gLT4gSGlkZGVuXG4gIHwgRGV2ZWxvcHBlciwgXyB8IF8sIERldmVsb3BwZXIgLT4gRGV2ZWxvcHBlclxuICB8IEV4cGVydCwgXyB8IF8sIEV4cGVydCAtPiBFeHBlcnRcbiAgfCBOb3JtYWwsIE5vcm1hbCAtPiBOb3JtYWxcblxubGV0IG1heF9sZXZlbF9vcHQgYSBiID1cbiAgbWF0Y2ggYiB3aXRoXG4gIHwgTm9uZSAtPiBhXG4gIHwgU29tZSBiIC0+IG1heF9sZXZlbCBhIGJcblxudHlwZSBwb3NpdGlvbiA9IGludFxudHlwZSBjYXRlZ29yeSA9IHN0cmluZyAqIHBvc2l0aW9uICogbGV2ZWwgb3B0aW9uXG5cbnR5cGUgc3BlYyA9XG4gIHwgVm9pZCAoKiBUbyBza2lwIGEgbGluZSAqKVxuICB8IEJvb2wgb2YgYm9vbCByZWYgKCogU2V0cyBhIGJvb2xlYW4gdmFsdWUgKilcbiAgfCBJbnQgb2YgaW50IHJlZiAoKiBTZXRzIGFuIGludGVnZXIgdmFsdWUgKilcbiAgfCBJbnRfb3B0IG9mIGludCBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgaW50ZWdlciB2YWx1ZSAqKVxuICB8IFN0cmluZyBvZiBzdHJpbmcgcmVmICgqIFNldHMgYSBzdHJpbmcgdmFsdWUgKilcbiAgfCBTdHJpbmdfb3B0IG9mIHN0cmluZyBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgc3RyaW5nIHZhbHVlICopXG4gIHwgU3RyaW5nX2xpc3Qgb2Ygc3RyaW5nIGxpc3QgcmVmICgqIFNldHMgYSBsaXN0IG9mIHN0cmluZ3MgKilcbiAgfCBTdHJpbmdOYnJfbGlzdCBvZlxuICAgICAgKHN0cmluZyAqIHN0cmluZykgbGlzdCByZWYgKCogU2V0cyBhIGxpc3Qgb2YgcGFpcnMgb2Ygc3RyaW5ncyAqKVxuICB8IEZsb2F0IG9mIGZsb2F0IHJlZiAoKiBTZXRzIGEgZmxvYXQgdmFsdWUgKilcbiAgfCBGbG9hdF9vcHQgb2YgZmxvYXQgb3B0aW9uIHJlZiAoKiBTZXRzIGFuIG9wdGlvbmFsICBmbG9hdCB2YWx1ZSAqKVxuICAoKiBvbmUgb3Igc2V2ZXJhbCBvcHRpb25zIGFtb25nIGEgbGlzdCAqKVxuICB8IENob2ljZSBvZiAoa2V5ICogbXNnKSBsaXN0ICoga2V5IGxpc3QgKiBrZXkgcmVmXG4gIHwgQ2hvaWNlX2xpc3Qgb2YgKGtleSAqIG1zZykgbGlzdCAqIGtleSBsaXN0IHJlZlxuICAoKiBtZXRhLW9wdGlvbnMgdG8gc2V0IHNldmVyYWwgb3B0aW9ucyBhdCBvbmNlOlxuICAgICAtIDFzdCBvcHRpb24gbGlzdCBpcyBhcHBlbmRlZCBhcy1pcyB3aGVuIHRoZSBvcHRpb24gaXMgdXNlZFxuICAgICAtIHdoZW4gMi1zdCBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlIG1ldGEgb3B0aW9uIHRha2VzIGFuIGFyZ3VtZW50IHRoYXRcbiAgICAgaXMgcGFzc2VkIHRvIGVhY2ggb3B0aW9uIGluIHRoZSBsaXN0XG4gICAgIC0gdGhlIGtleXMgaW4gYm90aCBsaXN0cyBtdXN0IGFwcGVhciBhcyByZWd1bGFyIG9wdGlvbnMgYXMgd2VsbCFcbiAgKilcbiAgfCBNdWx0aSBvZiBrZXkgbGlzdCAqIGtleSBsaXN0XG4gICAgKCogbWV0YS1vcHRpb25zLCB0YWtlIGEgbGlzdCBvZiAoayxleHQpOmtleSpzdHJpbmcgYW5kIGdpdmUgdG8gdGhlIG9wdGlvbiBrIHRoZSBwYXJhbWV0ZXIgc15leHQgKilcbiAgfCBNdWx0aUV4dCBvZiAoa2V5ICogc3RyaW5nKSBsaXN0XG5cbnR5cGUgdCA9IChrZXkgKiBzcGVjICogbXNnICogKGNhdGVnb3J5ICogcG9zaXRpb24pIGxpc3QgKiBsZXZlbCkgbGlzdFxuXG4oKiBVdGlsaXRpZXMgKilcbigqICoqKioqKioqKiAqKVxuXG5sZXQgc2hvd19sZXZlbCAobHZsIDogbGV2ZWwpIDogYm9vbCA9XG4gIG1hdGNoIGx2bCB3aXRoXG4gIHwgTm9ybWFsIC0+IHRydWVcbiAgfCBFeHBlcnQgLT4gIWV4cGVydF9tb2RlXG4gIHwgRGV2ZWxvcHBlciAtPiAhZGV2X21vZGUgJiYgIWV4cGVydF9tb2RlXG4gIHwgSGlkZGVuIC0+IGZhbHNlXG5cbmxldCBzaG93X2xldmVsX29wdCAobHZsX29wdCA6IGxldmVsIG9wdGlvbikgOiBib29sID1cbiAgbWF0Y2ggbHZsX29wdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBsdmwgLT4gc2hvd19sZXZlbCBsdmxcblxubGV0IGFjY2VwdF9sZXZlbF9kaXNwbGF5IChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgfCBFeHBlcnQgLT4gdHJ1ZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlXG4gIHwgSGlkZGVuIC0+IGZhbHNlXG5cbmxldCBhY2NlcHRfbGV2ZWxfdXNlIChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgfCBFeHBlcnQgfCBIaWRkZW4gLT4gdHJ1ZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlXG5cbmxldCBpc2tleSAoayA6IGtleSkgPSBTdHJpbmcubGVuZ3RoIGsgPiAyICYmIGsuWzBdID0gJy0nICYmIGsuWzFdID0gJy0nXG5cbigqIC0tWFhYID0+IC0tbm8tWFhYICopXG5sZXQgbm9rZXkgKGsgOiBrZXkpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBrID4gMiAmJiBrLlswXSA9ICctJyAmJiBrLlsxXSA9ICctJyB0aGVuXG4gICAgXCItLW5vLVwiIF4gU3RyaW5nLnN1YiBrIDIgKFN0cmluZy5sZW5ndGggayAtIDIpXG4gIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBrID4gMSAmJiBrLlswXSA9ICctJyB0aGVuXG4gICAgXCItbm8tXCIgXiBTdHJpbmcuc3ViIGsgMSAoU3RyaW5nLmxlbmd0aCBrIC0gMSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChrIF4gXCIgb3B0aW9uIChubykgZG9lcyBub3QgYmVnaW4gd2l0aCAtLSBub3IgLVwiKVxuXG4oKiAtLVhYWCA9PiAtLShuby0pWFhYICopXG5sZXQgYWx0a2V5IChrIDoga2V5KSA9XG4gIGlmIFN0cmluZy5sZW5ndGggayA+IDIgJiYgay5bMF0gPSAnLScgJiYgay5bMV0gPSAnLScgdGhlblxuICAgIFwiLS0obm8tKVwiIF4gU3RyaW5nLnN1YiBrIDIgKFN0cmluZy5sZW5ndGggayAtIDIpXG4gIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBrID4gMSAmJiBrLlswXSA9ICctJyB0aGVuXG4gICAgXCItKG5vLSlcIiBeIFN0cmluZy5zdWIgayAxIChTdHJpbmcubGVuZ3RoIGsgLSAxKVxuICBlbHNlXG4gICAgZmFpbHdpdGggKGsgXiBcIiBvcHRpb24gKGFsdCkgZG9lcyBub3QgYmVnaW4gd2l0aCAtLSBub3QgLSBcIilcblxuKCogY3V0cyBhIHN0cmluZyBpbnRvIHNwYWNlLXNlcGFyYXRlZCBzdWItc3RyaW5ncyAqKVxubGV0IGN1dF9saXN0IChzIDogc3RyaW5nKSA6IHN0cmluZyBsaXN0ID1cbiAgbGV0IHJlYyBkb2l0IGFjY3VtIHBvcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgaSA9IFN0cmluZy5pbmRleF9mcm9tIHMgcG9zICcgJyBpblxuICAgICAgaWYgaSA9IHBvcyB0aGVuXG4gICAgICAgIGRvaXQgYWNjdW0gKGkgKyAxKVxuICAgICAgZWxzZVxuICAgICAgICBkb2l0IChTdHJpbmcuc3ViIHMgcG9zIChpIC0gcG9zKSA6OiBhY2N1bSkgKGkgKyAxKVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBpZiBwb3MgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBTdHJpbmcuc3ViIHMgcG9zIChTdHJpbmcubGVuZ3RoIHMgLSBwb3MpIDo6IGFjY3VtXG4gICAgICBlbHNlXG4gICAgICAgIGFjY3VtXG4gIGluXG4gIExpc3QucmV2IChkb2l0IFtdIDApXG5cbigqIG9yZGVyIGJ5IGNhdGVnb3J5ICopXG5sZXQgcCAoXywgXywgXywgbCwgXykgKF8sIF8sIF8sIGwnLCBfKSA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgfCBbIChfLCBpKSBdLCBbIChfLCBpJykgXSAtPiBjb21wYXJlIGkgaSdcbiAgfCAoW10gfCBfIDo6IF8gOjogXyksIF8gfCBfLCAoW10gfCBfIDo6IF8gOjogXykgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvcmRlciAoYSA6IHQpID1cbiAgbGV0IG9yZGVyZWQgPSByZWYgU3RyaW5nSW50TWFwLmVtcHR5IGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGEsIGIsIGMsIGNhdCwgbHZsKSAtPlxuICAgICAgaWYgYWNjZXB0X2xldmVsX3VzZSBsdmwgdGhlblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChjYXQsIGkpIC0+XG4gICAgICAgICAgICBsZXQgYXNzbywgb2xkX2x2bCA9XG4gICAgICAgICAgICAgIFN0cmluZ0ludE1hcC5maW5kX2RlZmF1bHQgKFtdLCBIaWRkZW4pIGNhdCAhb3JkZXJlZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG9yZGVyZWQgOj1cbiAgICAgICAgICAgICAgU3RyaW5nSW50TWFwLmFkZCBjYXRcbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIFsgY2F0LCBpIF0sIGx2bCkgOjogYXNzbywgbWluX2xldmVsIGx2bCBvbGRfbHZsKVxuICAgICAgICAgICAgICAgICFvcmRlcmVkKVxuICAgICAgICAgIGNhdClcbiAgICBhO1xuICBvcmRlcmVkIDo9IFN0cmluZ0ludE1hcC5tYXAgKGZ1biAoYSwgYikgLT4gTGlzdC5zb3J0IHAgYSwgYikgIW9yZGVyZWQ7XG4gICFvcmRlcmVkXG5cbigqIHNhbml0eSBjaGVja2luZyAqKVxubGV0IGNoZWNrIChhIDogdCkgPVxuICAoKiBjaGVjayBkdXBsaWNhdGVzICYgY29tcHV0ZSBvcHRpb24gbGlzdCAqKVxuICBsZXQgb3B0cyA9IHJlZiBTdHJpbmdTZXQuZW1wdHkgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoa2V5LCBiLCBfLCBfLCBfKSAtPlxuICAgICAgaWYgYiA9IFZvaWQgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSBpZiBTdHJpbmdTZXQubWVtIGtleSAhb3B0cyB8fCBTdHJpbmdTZXQubWVtIChub2tleSBrZXkpICFvcHRzIHRoZW5cbiAgICAgICAgZmFpbHdpdGggKFwiRHVwbGljYXRlIG9wdGlvbiBcIiBeIGtleSk7XG4gICAgICBvcHRzIDo9IFN0cmluZ1NldC5hZGQga2V5ICFvcHRzO1xuICAgICAgb3B0cyA6PSBTdHJpbmdTZXQuYWRkIChub2tleSBrZXkpICFvcHRzKVxuICAgIGE7XG4gICgqIGNoZWNrIHN1Yi1vcHRpb25zIGluIE11bGktb3B0aW9ucyAqKVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChrZXksIHQsIF8sIF8sIF8pIC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTXVsdGkgKGEsIGIpIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biBzIC0+XG4gICAgICAgICAgICAgIGlmIGlza2V5IHMgJiYgbm90IChTdHJpbmdTZXQubWVtIHMgIW9wdHMpIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCAoXCJVbmtub3duIG9wdGlvbiBcIiBeIHMgXiBcIiBpbiBtdWx0aS1vcHRpb24gXCIgXiBrZXkpKVxuICAgICAgICBpblxuICAgICAgICBmIGE7XG4gICAgICAgIGYgYlxuICAgICAgfCBWb2lkIHwgSW50IF8gfCBGbG9hdCBfIHwgQ2hvaWNlIF8gfCBCb29sIF8gfCBJbnRfb3B0IF8gfCBTdHJpbmcgX1xuICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfIHwgU3RyaW5nX29wdCBfIHwgU3RyaW5nX2xpc3QgXyB8IEZsb2F0X29wdCBfXG4gICAgICB8IENob2ljZV9saXN0IChfLCBfKVxuICAgICAgfCBNdWx0aUV4dCBfIC0+XG4gICAgICAgICgpKVxuICAgIGFcblxuKCogQ29tbWFuZC1saW5lIGludGVyZmFjZSAqKVxuKCogKioqKioqKioqKioqKioqKioqKioqKiAqKVxuXG4oKiBwcmludHMgYSBzdHJpbmcgd2l0aCBicmVha3MgaW5zdGVhZCBvZiBzcGFjZSAqKVxubGV0IHByaW50X21zZyBmIChzIDogc3RyaW5nKSA9XG4gIFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChjdXRfbGlzdCBzKVxuXG4oKiBkb2N1bWVudCB0aGUgb3B0aW9ucyBvbiB0aGUgc3RhbmRhcmQgb3V0cHV0ISAqKVxubGV0IHByaW50X29wdGlvbiB2ZXJib3NlIGYgKGtleSwgc3BlYywgbXNnLCBfY2F0LCBfbHZsKSA9XG4gIGxldCBrZXkyID0gYWx0a2V5IGtleSBpblxuICAobWF0Y2ggc3BlYyB3aXRoXG4gIHwgQm9vbCByIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgICAgKGRlZmF1bHQ6ICVzKUAuXCIga2V5MlxuICAgICAgKGlmICFyIHRoZW5cbiAgICAgICAgIFwiZW5hYmxlZFwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJkaXNhYmxlZFwiKVxuICB8IFZvaWQgLT4gKClcbiAgfCBJbnQgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8aW50PiAgIChkZWZhdWx0OiAlaSlALlwiIGtleSAhclxuICB8IEludF9vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6ICVpKUAuXCIga2V5MiBpKVxuICB8IFN0cmluZyByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IFwiXCIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5XG4gICAgfCBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0OiAlcylALlwiIGtleSBzKVxuICB8IFN0cmluZ19vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBcIlwiIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBTb21lIHMgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQgJXMpQC5cIiBrZXkyIHMpXG4gIHwgU3RyaW5nX2xpc3QgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IC4uLiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gLi4uICAgKGRlZmF1bHQgJWEpQC5cIiBrZXkyXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcpXG4gICAgICAgIGwpXG4gIHwgU3RyaW5nTmJyX2xpc3QgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IDwuLi4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBsIC0+XG4gICAgICBsZXQgcmVjIGF1eCBsaXN0ID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgKGgxLCBoMikgOjogdGFpbCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IDx2YWx1ZT4gKGRlZmF1bHQgJXMgJXMpXCIga2V5MiBoMSBoMlxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IHRhaWxcbiAgICAgICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIlxuICAgICAgaW5cbiAgICAgIGF1eCBsKVxuICB8IEZsb2F0IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGZsb2F0PiAgIChkZWZhdWx0ICVmKUAuXCIga2V5ICFyXG4gIHwgRmxvYXRfb3B0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8ZmxvYXQ+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSB2IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxmbG9hdD4gICAoZGVmYXVsdDogJWYpQC5cIiBrZXkyIHYpXG4gIHwgQ2hvaWNlIChsLCBfLCByKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIEBbJWFAXSBAICAoZGVmYXVsdDogJXMpQC5cIiBrZXlcbiAgICAgIChQcC5saXN0XG4gICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiB8QCBcIilcbiAgICAgICAgIChmdW4gZiAoa2V5LCBfbXNnKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYga2V5KSlcbiAgICAgIGwgIXJcbiAgfCBDaG9pY2VfbGlzdCAobCwgcikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyBAWyVhQF1ALlwiIGtleTJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoa2V5LCBfbXNnKSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVzJXNdXCIga2V5XG4gICAgICAgICAgICAgKGlmIExpc3QubWVtIGtleSAhciB0aGVuXG4gICAgICAgICAgICAgICAgXCIgKGRlZmF1bHQpXCJcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFwiXCIpKSlcbiAgICAgIGxcbiAgfCBNdWx0aSAoXywgW10pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzQC5cIiBrZXlcbiAgfCBNdWx0aSBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDx2YWx1ZT5ALlwiIGtleVxuICB8IE11bHRpRXh0IF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPHZhbHVlPkAuXCIga2V5KTtcblxuICAoKiBzaG93cyBkZXNjcmlwdGlvbiBpZiBpbiB2ZXJib3NlIG1vZGUgKilcbiAgaWYgdmVyYm9zZSAmJiBtc2cgPD4gXCJcIiB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIgICAgICBAWyVhQF1ALlwiIHByaW50X21zZyBtc2dcblxubGV0IHByaW50X2hlbHAgKGhlYWRlciA6IGJvb2wpICh2ZXJib3NlIDogYm9vbCkgZiAoYSA6IHQpID1cbiAgbGV0IG5iID0gcmVmIDAgaW5cblxuICAoKiBnZW5lcmFsIG9wdGlvbnMgKilcbiAgaWYgaGVhZGVyIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAuR2VuZXJhbCBvcHRpb25zQC5cIjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS1oZWxwICAgICAgICAgICAgVmVyYm9zZSBoZWxwQC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgIC1oICAgICAgICAgICAgICAgU2hvcnQgaGVscEAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0tdmVyc2lvbiAgICAgICAgIFNob3cgdmVyc2lvbiBudW1iZXJALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLWd1aSAgICAgICAgICAgICBHVUkgdG8gc2VsZWN0QC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS0obm8tKWV4cGVydCAgICAgRXhwZXJ0IG1vZGUgKG1vcmUgb3B0aW9ucylALlwiO1xuICBpbmNyIG5iO1xuICBpZiB2ZXJib3NlICYmIGhlYWRlciB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJALlwiO1xuXG4gICgqIGR1bXAgKilcbiAgU3RyaW5nSW50TWFwLml0ZXJcbiAgICAoZnVuIChjYXQsIF8sIGx2bF9vcHQpIChsLCBsdmwpIC0+XG4gICAgICBpZiBzaG93X2xldmVsX29wdCBsdmxfb3B0ICYmIHNob3dfbGV2ZWwgbHZsIHRoZW4gKFxuICAgICAgICBpZiBoZWFkZXIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiJXNALlwiIGNhdDtcbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoKF8sIF8sIF8sIF8sIGx2bCkgYXMgeCkgLT5cbiAgICAgICAgICAgIGlmIHNob3dfbGV2ZWwgbHZsIHRoZW4gKFxuICAgICAgICAgICAgICBpbmNyIG5iO1xuICAgICAgICAgICAgICBwcmludF9vcHRpb24gdmVyYm9zZSBmIHhcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgbDtcbiAgICAgICAgaWYgaGVhZGVyICYmIHZlcmJvc2UgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIlxuICAgICAgKSlcbiAgICAob3JkZXIgYSk7XG5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiglaSBvcHRpb25zKUAuXCIgIW5iXG5cbigqIHBhcnNlIHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBnaXZlbiBhcyBhIGxpc3Qgb2Ygc3RyaW5ncyxcbiAgIHJldHVybnMgdGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbnMgKGZpbGVuYW1lcykgaW4gcmV2ZXJzZSBvcmRlcilcbiopXG5sZXQgcGFyc2VfbGlzdCB+d2l0aF90ayA/dGl0bGUgKGEgOiB0KSAobCA6IHN0cmluZyBsaXN0KSA6IHN0cmluZyBsaXN0ID1cbiAgbGV0IGxvbmdfaGVscCA9IHJlZiBmYWxzZVxuICBhbmQgc2hvcnRfaGVscCA9IHJlZiBmYWxzZVxuICBhbmQgc2hvd192ZXJzaW9uID0gcmVmIGZhbHNlIGluXG5cbiAgbGV0IHJlYyBkb2l0IGFjY3VtID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBvcHQgOjogcmVtIC0+XG4gICAgICAoKiAtIG1lYW5zIG5vIG1vcmUgb3B0aW9uczogdGhlIHJlc3QgYXJlIGZpbGVuYW1lcyAqKVxuICAgICAgaWYgb3B0ID0gXCItXCIgdGhlblxuICAgICAgICBMaXN0LnJldl9hcHBlbmQgcmVtIGFjY3VtXG4gICAgICAoKiBoZWxwIG9wdGlvbnMgKilcbiAgICAgIGVsc2UgaWYgb3B0ID0gXCItaGVscFwiIHx8IG9wdCA9IFwiLS1oZWxwXCIgdGhlbiAoXG4gICAgICAgIGxvbmdfaGVscCA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLWhcIiB0aGVuIChcbiAgICAgICAgKCogc2hvcnRlciBsaXN0ICopXG4gICAgICAgIHNob3J0X2hlbHAgOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogdmVyc2lvbiBudW1iZXIgKilcbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi0tdmVyc2lvblwiIHRoZW4gKFxuICAgICAgICBzaG93X3ZlcnNpb24gOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogZXhwZXJ0ICopXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItLWV4cGVydFwiIHRoZW4gKFxuICAgICAgICBleHBlcnRfbW9kZSA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLS1uby1leHBlcnRcIiB0aGVuIChcbiAgICAgICAgZXhwZXJ0X21vZGUgOj0gZmFsc2U7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtICgqIHJlZ3VsYXIgb3B0aW9uLCBzdGFydGluZyB3aXRoIFwiLVwiICopXG4gICAgICApIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBvcHQgPiAxICYmIG9wdC5bMF0gPSAnLScgdGhlbiAoXG4gICAgICAgIGxldCAoKGtleSwgc3BlYywgXywgXywgXykgYXMgYWEpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgICAoZnVuIChrZXksIF9zcGVjLCBfbXNnLCBfY2F0LCBsdmwpIC0+XG4gICAgICAgICAgICAgICAgYWNjZXB0X2xldmVsX3VzZSBsdmwgJiYgKG9wdCA9IGtleSB8fCBvcHQgPSBub2tleSBrZXkpKVxuICAgICAgICAgICAgICBhXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIEZvcm1hdC5wcmludGZcbiAgICAgICAgICAgICAgXCJIZXJlIGlzIHRoZSBsaXN0IG9mIHJlY29nbml6ZWQgb3B0aW9uc0AuJWFALlVucmVjb2duaXplZCBcXFxuICAgICAgICAgICAgICAgb3B0aW9uOiAlc0AuQC5cIlxuICAgICAgICAgICAgICAocHJpbnRfaGVscCB0cnVlIGZhbHNlKSBhIG9wdDtcbiAgICAgICAgICAgIGZhaWx3aXRoIFwiYmFkIG9wdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW0gPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbWF0Y2ggc3BlYywgcmVtIHdpdGhcbiAgICAgICAgICAgIHwgQm9vbCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBvcHQgPSBrZXk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAwO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gaW50X29mX3N0cmluZyB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50X29wdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnRfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSAoaW50X29mX3N0cmluZyB2KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludF9vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZyByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmcgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gXCJcIjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX29wdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IFNvbWUgdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19saXN0IF8sIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+IHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IHYgOjogIXI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBbXTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IF8sIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+IHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfLCBbIF8gXSB3aGVuIG9wdCA9IGtleSAtPiBmYWlsd2l0aCBcImludmFsaWQgcGFpclwiXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IHIsIHYnIDo6IHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gKHYsIHYnKSA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAwLjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gZmxvYXRfb2Zfc3RyaW5nIHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdF9vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHYpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2UgKGwsIGwnLCByKSwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAobm90IChMaXN0LmV4aXN0cyAoZnVuIChrLCBfKSAtPiB2ID0gaykgbCkpXG4gICAgICAgICAgICAgICAgJiYgbm90IChMaXN0LmV4aXN0cyAoZnVuIGsgLT4gdiA9IGspIGwnKVxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIGNob2ljZVwiO1xuICAgICAgICAgICAgICByIDo9IHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2VfbGlzdCAobCwgciksIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgKGZ1biAoaywgXykgLT4gdiA9IGspIGwpIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImludmFsaWQgY2hvaWNlXCI7XG4gICAgICAgICAgICAgIHIgOj0gdiA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IENob2ljZV9saXN0IChfbCwgciksIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGkgKHgsIFtdKSwgcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZSAoZG9pdCBbXSB4KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpICh4LCB5KSwgdiA6OiByZW0gLT5cbiAgICAgICAgICAgICAgaWdub3JlIChkb2l0IFtdIHgpO1xuICAgICAgICAgICAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0IChmdW4gXyBsIC0+IGRvaXQgW10gWyBsOyB2IF0pIGFjY3VtIHkpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGlFeHQgbCwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gXyAobCwgcykgLT4gZG9pdCBbXSBbIGw7IHYgXiBzIF0pIGFjY3VtIGwpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGlFeHQgbCwgcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgIChmdW4gXyAobCwgcykgLT4gZG9pdCBbXSBbIG5va2V5IGw7IHMgXSlcbiAgICAgICAgICAgICAgICAgICBhY2N1bSBsKTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpIF8sIFtdIHwgKFZvaWQgfCBJbnQgXyB8IEZsb2F0IF8gfCBDaG9pY2UgXyksIF8gLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIG9wdGlvbiBvciBhcmd1bWVudFwiXG4gICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICBGb3JtYXQucHJpbnRmIFwiV3Jvbmcgb3B0aW9uIG9yIGFyZ3VtZW50IGZvciAlc0AuJWFcIiBvcHRcbiAgICAgICAgICAgICAgKHByaW50X29wdGlvbiBmYWxzZSkgYWE7XG4gICAgICAgICAgICBmYWlsd2l0aCBcImJhZCBvcHRpb25cIlxuICAgICAgICBpblxuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgICAoKiBkb2VzIG5vdCBzdGFydCB3aXRoIC0gPT4gdGhpcyBpcyBmaWxlbmFtZSAqKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGRvaXQgKG9wdCA6OiBhY2N1bSkgcmVtXG4gIGluXG5cbiAgbGV0IGZpbGVuYW1lcyA9IGRvaXQgW10gbCBpblxuICBpZiAhc2hvd192ZXJzaW9uIHRoZW4gKFxuICAgIEZvcm1hdC5wcmludGYgXCIlcyBALih3aXRoJXMgVGsgaW50ZXJmYWNlKUAuXCJcbiAgICAgIChtYXRjaCB0aXRsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lXG4gICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgKGlmIHdpdGhfdGsgdGhlblxuICAgICAgICAgXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwib3V0XCIpO1xuICAgIGV4aXQgMFxuICApIGVsc2UgaWYgIWxvbmdfaGVscCB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJWFcIiAocHJpbnRfaGVscCB0cnVlIHRydWUpIGE7XG4gICAgZXhpdCAwXG4gICkgZWxzZSBpZiAhc2hvcnRfaGVscCB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJWFcIiAocHJpbnRfaGVscCB0cnVlIGZhbHNlKSBhO1xuICAgIGV4aXQgMFxuICApO1xuICAoKiBMaXN0LmNvbmNhdCopIGZpbGVuYW1lcyAoKihMaXN0Lm1hcCBXb3JkZXhwLndvcmRleHAgZmlsZW5hbWVzKSopXG4iLCIoKiBMYWJsVEsgR1VJIGZvciBvcHRpb24gc2VsZWN0aW9uIFN1cGVyYXJnLlxuXG4gICBDb3B5cmlnaHQgKEMpIEFudG9pbmUgTWluZScgMjAwNlxuICAgTGlnaHQgVmVyc2lvbiAoSmVyb21lIEZlcmV0KVxuICAgVGhpcyBMSUdIVCB2ZXJzaW9uIGRvZXMgbm90IHJlcXVpcmUgbGFibHRrXG4qKVxuXG5leGNlcHRpb24gRXhpdCBvZiBzdHJpbmcgbGlzdFxuXG4oKiBNQUlOICopXG4oKiAqKioqICopXG5cbmxldCBwYXJzZSA/dGl0bGUgKGEgOiBTdXBlcmFyZy50KSAoZGVmIDogc3RyaW5nIGxpc3QgcmVmKSA9XG4gIFN1cGVyYXJnLmNoZWNrIGE7XG4gICgqIGRyb3AgdGhlIGZpcnN0IGNvbW1hbmQtbGluZSBhcmd1bWVudDogaXQgaXMgdGhlIGV4ZWN1dGFibGUgbmFtZSAqKVxuICBsZXQgYXJncyA9IExpc3QudGwgKEFycmF5LnRvX2xpc3QgU3lzLmFyZ3YpIGluXG4gICgqIGlmIG5vIGFyZ3VtZW50IG9yIFwiLS1ndWlcIiBnaXZlbiwgbGF1bmNoIHRoZSBndWksIG90aGVyd2lzZSwgcGFyc2UgYXJncyAqKVxuICBsZXQgcmVtID1cbiAgICBpZlxuICAgICAgYXJncyA9IFtdIHx8IGFyZ3MgPSBbIFwiLS1leHBlcnRcIiBdIHx8IGFyZ3MgPSBbIFwiLS1uby1leHBlcnRcIiBdXG4gICAgICB8fCBMaXN0LmV4aXN0cyAoKCA9ICkgXCItLWd1aVwiKSBhcmdzXG4gICAgdGhlblxuICAgICAgU3VwZXJhcmcucGFyc2VfbGlzdCB+d2l0aF90azpmYWxzZSA/dGl0bGUgYVxuICAgICAgICAoaWYgTGlzdC5leGlzdHMgKCggPSApIFwiLS1leHBlcnRcIikgYXJncyB0aGVuXG4gICAgICAgICAgIFsgXCItLWhlbHBcIjsgXCItLWV4cGVydFwiIF1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgWyBcIi0taGVscFwiIF0pXG4gICAgZWxzZVxuICAgICAgU3VwZXJhcmcucGFyc2VfbGlzdCB+d2l0aF90azpmYWxzZSA/dGl0bGUgYSBhcmdzXG4gIGluXG4gIGlmIHJlbSA8PiBbXSB0aGVuIGRlZiA6PSByZW1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkYXRhX3NldCA9IFwiRGF0YSBzZXRcIiwgMCwgTm9uZVxubGV0IG91dHB1dCA9IFwiT3V0cHV0XCIsIDEsIE5vbmVcbmxldCBzZW1hbnRpY3MgPSBcIlNlbWFudGljc1wiLCAyLCBOb25lXG5sZXQgaW50ZWdyYXRpb25fc2V0dGluZ3MgPSBcIkludGVncmF0aW9uIHNldHRpbmdzXCIsIDMsIE5vbmVcbmxldCBtb2RlbF9yZWR1Y3Rpb24gPSBcIk1vZGVsIHJlZHVjdGlvblwiLCA0LCBOb25lXG5sZXQgc3RhdGljX2FuYWx5c2lzID0gXCJTdGF0aWMgYW5hbHlzaXNcIiwgNSwgU29tZSBTdXBlcmFyZy5FeHBlcnRcbmxldCBkZWJ1Z19tb2RlID0gXCJEZWJ1ZyBtb2RlXCIsIDYsIFNvbWUgU3VwZXJhcmcuRXhwZXJ0XG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBiYWNrdHJhY2U6IGJvb2w7IG11dGFibGUgZGVidWc6IGJvb2wgfVxuXG50eXBlIHRfZ3VpID0ge1xuICBiYWNrdHJhY2VfZ3VpOiBib29sIHJlZjtcbiAgZGVidWdfZ3VpOiBib29sIHJlZjtcbiAgdmVyc2lvbl9ndWk6IGJvb2wgcmVmO1xuICBnbHV0dG9ueV9ndWk6IGJvb2wgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPSB7IGJhY2t0cmFjZSA9IGZhbHNlOyBkZWJ1ZyA9IGZhbHNlIH1cblxubGV0IGRlZmF1bHRfZ3VpID1cbiAge1xuICAgIGJhY2t0cmFjZV9ndWkgPSByZWYgZmFsc2U7XG4gICAgZGVidWdfZ3VpID0gcmVmIGZhbHNlO1xuICAgIHZlcnNpb25fZ3VpID0gcmVmIGZhbHNlO1xuICAgIGdsdXR0b255X2d1aSA9IHJlZiBmYWxzZTtcbiAgfVxuXG5sZXQgZG9fdmVyc2lvbiAoKSA9XG4gIEZvcm1hdC5wcmludF9zdHJpbmcgVmVyc2lvbi52ZXJzaW9uX21zZztcbiAgRm9ybWF0LnByaW50X25ld2xpbmUgKCk7XG4gIGV4aXQgMFxuXG5sZXQgZG9fZ2x1dHRvbnkgKCkgPVxuICBHYy5zZXQgeyAoR2MuZ2V0ICgpKSB3aXRoIEdjLnNwYWNlX292ZXJoZWFkID0gNTAwICgqZGVmYXVsdCA4MCopIH1cblxubGV0IGdldF9mcm9tX2d1aSB0X2d1aSA9XG4gIGxldCAoKSA9IGlmICEodF9ndWkudmVyc2lvbl9ndWkpIHRoZW4gZG9fdmVyc2lvbiAoKSBpblxuICBsZXQgKCkgPSBpZiAhKHRfZ3VpLmdsdXR0b255X2d1aSkgdGhlbiBkb19nbHV0dG9ueSAoKSBpblxuICB7IGJhY2t0cmFjZSA9ICEodF9ndWkuYmFja3RyYWNlX2d1aSk7IGRlYnVnID0gISh0X2d1aS5kZWJ1Z19ndWkpIH1cblxubGV0IGNvcHlfZnJvbV9ndWkgdF9ndWkgdCA9XG4gIGxldCB0X3RtcCA9IGdldF9mcm9tX2d1aSB0X2d1aSBpblxuICB0LmJhY2t0cmFjZSA8LSB0X3RtcC5iYWNrdHJhY2U7XG4gIHQuZGVidWcgPC0gdF90bXAuZGVidWdcblxubGV0IG9wdGlvbnNfZ2VuIHQgdF9ndWkgOlxuICAgIChzdHJpbmdcbiAgICAqIEFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBzdHJpbmdcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItLXZlcnNpb25cIixcbiAgICAgIEFyZy5Vbml0IGRvX3ZlcnNpb24sXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLnZlcnNpb25fZ3VpLFxuICAgICAgXCJkaXNwbGF5IHZlcnNpb24gbnVtYmVyXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItLWRlYnVnXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuZGVidWcgPC0gdHJ1ZSksXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLmRlYnVnX2d1aSxcbiAgICAgIFwiRW5hYmxlIGRlYnVnIG1vZGVcIixcbiAgICAgIFsgZGVidWdfbW9kZSwgMSBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gICAgKCBcIi0tYmFja3RyYWNlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuYmFja3RyYWNlIDwtIHRydWUpLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS5iYWNrdHJhY2VfZ3VpLFxuICAgICAgXCJCYWNrdHJhY2luZyBleGNlcHRpb25zXCIsXG4gICAgICBbIGRlYnVnX21vZGUsIDIgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItLWdsdXR0b255XCIsXG4gICAgICBBcmcuVW5pdCBkb19nbHV0dG9ueSxcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkuZ2x1dHRvbnlfZ3VpLFxuICAgICAgXCJMb3dlciBnYyBhY3Rpdml0eSBmb3IgYSBmYXN0ZXIgYnV0IG1lbW9yeSBpbnRlbnNpdmUgc2ltdWxhdGlvblwiLFxuICAgICAgWyBkZWJ1Z19tb2RlLCAzIF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgXVxuXG5sZXQgb3B0aW9ucyB0ID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgYiwgXywgYywgXywgXykgLT4gYSwgYiwgYylcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIHQgZGVmYXVsdF9ndWkpKVxuXG5sZXQgb3B0aW9uc19ndWkgdF9ndWkgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBfLCBiLCBjLCBkLCBlKSAtPiBhLCBiLCBjLCBkLCBlKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gZGVmYXVsdCB0X2d1aSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgaW5wdXRLYXBwYUZpbGVOYW1lczogc3RyaW5nIGxpc3Q7XG4gIG11dGFibGUgbWluVmFsdWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBtYXhWYWx1ZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIHBsb3RQZXJpb2Q6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBvdXRwdXREYXRhRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbiAgbXV0YWJsZSBiYXRjaG1vZGU6IGJvb2w7XG4gIG11dGFibGUgaW50ZXJhY3RpdmU6IGJvb2w7XG4gIG11dGFibGUgc3ludGF4VmVyc2lvbjogQXN0LnN5bnRheF92ZXJzaW9uO1xufVxuXG50eXBlIHRfZ3VpID0ge1xuICBpbnB1dEthcHBhRmlsZU5hbWVzX2d1aTogc3RyaW5nIGxpc3QgcmVmO1xuICBtaW5WYWx1ZV9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIG1heFZhbHVlX2d1aTogZmxvYXQgb3B0aW9uIHJlZjtcbiAgcGxvdFBlcmlvZF9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIG91dHB1dERhdGFGaWxlX2d1aTogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG91dHB1dERpcmVjdG9yeV9ndWk6IHN0cmluZyByZWY7XG4gIHN5bnRheFZlcnNpb25fZ3VpOiBzdHJpbmcgcmVmO1xuICBiYXRjaG1vZGVfZ3VpOiBzdHJpbmcgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lcyA9IFtdO1xuICAgIG1pblZhbHVlID0gTm9uZTtcbiAgICBtYXhWYWx1ZSA9IE5vbmU7XG4gICAgcGxvdFBlcmlvZCA9IE5vbmU7XG4gICAgb3V0cHV0RGF0YUZpbGUgPSBOb25lO1xuICAgIG91dHB1dERpcmVjdG9yeSA9IFwiLlwiO1xuICAgIHN5bnRheFZlcnNpb24gPSBBc3QuVjQ7XG4gICAgYmF0Y2htb2RlID0gZmFsc2U7XG4gICAgaW50ZXJhY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZGVmYXVsdF9ndWkgPVxuICB7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lc19ndWkgPSByZWYgW107XG4gICAgbWluVmFsdWVfZ3VpID0gcmVmIChTb21lIDAuKTtcbiAgICBtYXhWYWx1ZV9ndWkgPSByZWYgKFNvbWUgMS4pO1xuICAgIHBsb3RQZXJpb2RfZ3VpID0gcmVmIChTb21lIDAuMDEpO1xuICAgIG91dHB1dERhdGFGaWxlX2d1aSA9IHJlZiAoU29tZSBcImRhdGEuY3N2XCIpO1xuICAgIG91dHB1dERpcmVjdG9yeV9ndWkgPSByZWYgXCIuXCI7XG4gICAgc3ludGF4VmVyc2lvbl9ndWkgPSByZWYgXCI0XCI7XG4gICAgYmF0Y2htb2RlX2d1aSA9IHJlZiBcImludGVyYWN0aXZlXCI7XG4gIH1cblxubGV0IHJlYyBhdXggbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgKHYsIHZhcl92YWwpIDo6IHRhaWwgLT5cbiAgICBhdXggdGFpbFxuICAgICAgKCggdixcbiAgICAgICAgIHRyeSBOYnIub2Zfc3RyaW5nIHZhcl92YWxcbiAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgIHJhaXNlIChBcmcuQmFkIChcIlxcXCJcIiBeIHZhcl92YWwgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcIikpIClcbiAgICAgIDo6IGFjY3UpXG4gIHwgW10gLT4gYWNjdVxuXG5sZXQgZ2V0X2Zyb21fZ3VpIHRfZ3VpID1cbiAge1xuICAgIG1pblZhbHVlID0gISh0X2d1aS5taW5WYWx1ZV9ndWkpO1xuICAgIG1heFZhbHVlID0gISh0X2d1aS5tYXhWYWx1ZV9ndWkpO1xuICAgIHBsb3RQZXJpb2QgPSAhKHRfZ3VpLnBsb3RQZXJpb2RfZ3VpKTtcbiAgICBpbnB1dEthcHBhRmlsZU5hbWVzID0gISh0X2d1aS5pbnB1dEthcHBhRmlsZU5hbWVzX2d1aSk7XG4gICAgb3V0cHV0RGF0YUZpbGUgPSAhKHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSk7XG4gICAgb3V0cHV0RGlyZWN0b3J5ID0gISh0X2d1aS5vdXRwdXREaXJlY3RvcnlfZ3VpKTtcbiAgICBzeW50YXhWZXJzaW9uID1cbiAgICAgIChtYXRjaCAhKHRfZ3VpLnN5bnRheFZlcnNpb25fZ3VpKSB3aXRoXG4gICAgICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IEFzdC5WM1xuICAgICAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiBBc3QuVjRcbiAgICAgIHwgX3MgLT4gQXN0LlY0KTtcbiAgICBiYXRjaG1vZGUgPSBUb29scy5sb3dlcmNhc2UgISh0X2d1aS5iYXRjaG1vZGVfZ3VpKSA9IFwiYmF0Y2hcIjtcbiAgICBpbnRlcmFjdGl2ZSA9IFRvb2xzLmxvd2VyY2FzZSAhKHRfZ3VpLmJhdGNobW9kZV9ndWkpID0gXCJpbnRlcmFjdGl2ZVwiO1xuICB9XG5cbmxldCBjb3B5X2Zyb21fZ3VpIHRfZ3VpIHQgPVxuICBsZXQgdF90bXAgPSBnZXRfZnJvbV9ndWkgdF9ndWkgaW5cbiAgdC5taW5WYWx1ZSA8LSB0X3RtcC5taW5WYWx1ZTtcbiAgdC5tYXhWYWx1ZSA8LSB0X3RtcC5tYXhWYWx1ZTtcbiAgdC5wbG90UGVyaW9kIDwtIHRfdG1wLnBsb3RQZXJpb2Q7XG4gIHQuaW5wdXRLYXBwYUZpbGVOYW1lcyA8LSB0X3RtcC5pbnB1dEthcHBhRmlsZU5hbWVzO1xuICB0Lm91dHB1dERhdGFGaWxlIDwtIHRfdG1wLm91dHB1dERhdGFGaWxlO1xuICB0Lm91dHB1dERpcmVjdG9yeSA8LSB0X3RtcC5vdXRwdXREaXJlY3Rvcnk7XG4gIHQuc3ludGF4VmVyc2lvbiA8LSB0X3RtcC5zeW50YXhWZXJzaW9uO1xuICB0LmJhdGNobW9kZSA8LSB0X3RtcC5iYXRjaG1vZGU7XG4gIHQuaW50ZXJhY3RpdmUgPC0gdF90bXAuaW50ZXJhY3RpdmVcblxubGV0IG9wdGlvbnNfZ2VuICh0IDogdCkgKHRfZ3VpIDogdF9ndWkpIDpcbiAgICAoc3RyaW5nXG4gICAgKiBBcmcuc3BlY1xuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogc3RyaW5nXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLWlcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBmaWMgLT4gdC5pbnB1dEthcHBhRmlsZU5hbWVzIDwtIGZpYyA6OiB0LmlucHV0S2FwcGFGaWxlTmFtZXMpLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX2xpc3QgdF9ndWkuaW5wdXRLYXBwYUZpbGVOYW1lc19ndWksXG4gICAgICBcIm5hbWUgb2YgYSBrYXBwYSBmaWxlIHRvIHVzZSBhcyBpbnB1dCAoY2FuIGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgZm9yIFxcXG4gICAgICAgbXVsdGlwbGUgaW5wdXQgZmlsZXMpXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItaW5pdGlhbFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gdGltZSAtPiB0Lm1pblZhbHVlIDwtIFNvbWUgdGltZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWluVmFsdWVfZ3VpLFxuICAgICAgXCJNaW4gdGltZSBvZiBzaW11bGF0aW9uIChhcmJpdHJhcnkgdGltZSB1bml0KVwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMDsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDAgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItbFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gdGltZSAtPiB0Lm1heFZhbHVlIDwtIFNvbWUgdGltZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWF4VmFsdWVfZ3VpLFxuICAgICAgXCJMaW1pdCBvZiB0aGUgc2ltdWxhdGlvblwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMTsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItdFwiLFxuICAgICAgQXJnLkZsb2F0XG4gICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAgICAgKFwiT3B0aW9uICctdCcgaGFzIGJlZW4gcmVwbGFjZSBieSAnWy11IHRpbWVdIC1sIFwiXG4gICAgICAgICAgICAgIF4gc3RyaW5nX29mX2Zsb2F0IGYgXiBcIidcIikpKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5tYXhWYWx1ZV9ndWksXG4gICAgICBcIkRlcHJlY2F0ZWQgb3B0aW9uXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItcFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gcG9pbnROdW1iZXJWYWx1ZSAtPiB0LnBsb3RQZXJpb2QgPC0gU29tZSBwb2ludE51bWJlclZhbHVlKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5wbG90UGVyaW9kX2d1aSxcbiAgICAgIFwicGxvdCBwZXJpb2Q6IHRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBwb2ludHMgaW4gcGxvdCAoZGVmYXVsdDogMS4wKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMjsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDIgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItb1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIG91dHB1dERhdGFGaWxlIC0+IHQub3V0cHV0RGF0YUZpbGUgPC0gU29tZSBvdXRwdXREYXRhRmlsZSksXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMztcbiAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAzO1xuICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMztcbiAgICAgIF0sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBvdXRwdXREaXJlY3RvcnkgLT4gdC5vdXRwdXREaXJlY3RvcnkgPC0gb3V0cHV0RGlyZWN0b3J5KSxcbiAgICAgIFN1cGVyYXJnLlN0cmluZyB0X2d1aS5vdXRwdXREaXJlY3RvcnlfZ3VpLFxuICAgICAgXCJTcGVjaWZpZXMgZGlyZWN0b3J5IG5hbWUgd2hlcmUgb3V0cHV0IGZpbGUocykgc2hvdWxkIGJlIHN0b3JlZFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMTAwO1xuICAgICAgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItbW9kZVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICBpZiBtID0gXCJiYXRjaFwiIHRoZW5cbiAgICAgICAgICAgIHQuYmF0Y2htb2RlIDwtIHRydWVcbiAgICAgICAgICBlbHNlIGlmIG0gPSBcImludGVyYWN0aXZlXCIgdGhlblxuICAgICAgICAgICAgdC5pbnRlcmFjdGl2ZSA8LSB0cnVlKSxcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFsgXCJiYXRjaFwiLCBcImJhdGNoIG1vZGVcIjsgXCJpbnRlcmFjdGl2ZVwiLCBcImludGVyYWN0aXZlIG1vZGVcIiBdLFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHRfZ3VpLmJhdGNobW9kZV9ndWkgKSxcbiAgICAgIFwiZWl0aGVyIFxcXCJiYXRjaFxcXCIgdG8gbmV2ZXIgYXNrIGFueXRoaW5nIHRvIHRoZSB1c2VyIG9yIFxcXCJpbnRlcmFjdGl2ZVxcXCIgXFxcbiAgICAgICB0byBhc2sgc29tZXRoaW5nIGJlZm9yZSBkb2luZyBhbnl0aGluZ1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDc7IENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDcgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItc3ludGF4XCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IHQuc3ludGF4VmVyc2lvbiA8LSBBc3QuVjNcbiAgICAgICAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiB0LnN5bnRheFZlcnNpb24gPC0gQXN0LlY0XG4gICAgICAgIHwgcyAtPiByYWlzZSAoQXJnLkJhZCAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiIGlzIG5vdCBhIHZhbGlkIHN5bnRheCB2ZXJzaW9uXCIpKSksXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwidjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwiVjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwiNFwiLCBcIm5ld1wiO1xuICAgICAgICAgICAgXCJ2NFwiLCBcIm5ld1wiO1xuICAgICAgICAgICAgXCJWNFwiLCBcIm5ld1wiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgdF9ndWkuc3ludGF4VmVyc2lvbl9ndWkgKSxcbiAgICAgIFwiVXNlIGV4cGxpY2l0IG5vdGF0aW9uIGZvciBmcmVlIHNpdGVcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA4IF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgXVxuXG5sZXQgb3B0aW9ucyB0ID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgYiwgXywgYywgXywgXykgLT4gYSwgYiwgYylcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIHQgZGVmYXVsdF9ndWkpKVxuXG5sZXQgb3B0aW9uc19ndWkgdF9ndWkgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBfLCBiLCBjLCBkLCBlKSAtPiBhLCBiLCBjLCBkLCBlKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gZGVmYXVsdCB0X2d1aSkpXG4gIEAgW1xuICAgICAgKCBcIi0tb3V0cHV0LXBsb3RcIixcbiAgICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMTtcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMTtcbiAgICAgICAgXSxcbiAgICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgICAoIFwiLS1kYXRhLWZpbGVcIixcbiAgICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMjtcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMztcbiAgICAgICAgXSxcbiAgICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgXVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYXIgPSB7IG11dGFibGUgdGlja3M6IGludDsgYmFyX3NpemU6IGludDsgYmFyX2NoYXI6IGNoYXIgfVxuXG50eXBlIHRleHQgPSB7XG4gIG11dGFibGUgbGFzdF9sZW5ndGg6IGludDtcbiAgbXV0YWJsZSBsYXN0X2V2ZW50X25iOiBpbnQ7XG4gIG11dGFibGUgbGFzdF90aW1lOiBmbG9hdDtcbn1cblxudHlwZSB0ID0gQmFyIG9mIGJhciB8IFRleHQgb2YgdGV4dFxuXG5sZXQgaW5jX3RpY2sgYyA9IGMudGlja3MgPC0gYy50aWNrcyArIDFcblxubGV0IGNyZWF0ZSBiYXJfc2l6ZSBiYXJfY2hhciA9XG4gIGlmIFVuaXguaXNhdHR5IFVuaXguc3Rkb3V0IHRoZW5cbiAgICBUZXh0IHsgbGFzdF9sZW5ndGggPSAwOyBsYXN0X3RpbWUgPSAtNS47IGxhc3RfZXZlbnRfbmIgPSAwIH1cbiAgZWxzZSAoXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBfID0gYmFyX3NpemUgZG93bnRvIDEgZG9cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIl9cIlxuICAgICAgZG9uZVxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgICBCYXIgeyB0aWNrcyA9IDA7IGJhcl9zaXplOyBiYXJfY2hhciB9XG4gIClcblxubGV0IHBwX25vdF9udWxsIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICglLjJmJSUpXCIgKHggKi4gMTAwLilcbiAgfCBOb25lIC0+ICgpXG5cbmxldCBwcF90ZXh0IGRlbHRhX3QgdGltZSB0X3IgZXZlbnQgZV9yIGYgcyA9XG4gIGxldCBzdHJpbmcgPVxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiUuMmYgdGltZSB1bml0cyVhIGluICVpIGV2ZW50cyVhJXRcIiB0aW1lIHBwX25vdF9udWxsIHRfclxuICAgICAgZXZlbnQgcHBfbm90X251bGwgZV9yIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBkZWx0YV90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBkdCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgKGp1c3QgZGlkICUuMWYgZXZlbnRzL3MpXCJcbiAgICAgICAgICAgIChmbG9hdF9vZl9pbnQgKGV2ZW50IC0gcy5sYXN0X2V2ZW50X25iKSAvLiBkdCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJXMlc0A/XCJcbiAgICAgIChTdHJpbmcubWFrZSBzLmxhc3RfbGVuZ3RoICdcXGInKVxuICAgICAgc3RyaW5nXG4gICAgICAoU3RyaW5nLm1ha2UgKG1heCAwIChzLmxhc3RfbGVuZ3RoIC0gU3RyaW5nLmxlbmd0aCBzdHJpbmcpKSAnICcpXG4gIGluXG4gIHMubGFzdF9sZW5ndGggPC0gU3RyaW5nLmxlbmd0aCBzdHJpbmdcblxubGV0IHJlYyBhdXhfdGljayBzb21ldGhpbmcgcyBuID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBpZiBzb21ldGhpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpXG4gICAgZWxzZVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2NoYXIgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgcy5iYXJfY2hhciBpblxuICAgIGxldCAoKSA9IGluY190aWNrIHMgaW5cbiAgICBhdXhfdGljayB0cnVlIHMgKHByZWQgbilcbiAgKVxuXG5sZXQgdGljayB+ZWZmaWNpZW5jeSB0aW1lIHRfciBldmVudCBlX3IgPSBmdW5jdGlvblxuICB8IEJhciBzIC0+XG4gICAgbGV0IG5fdCA9IE9wdGlvbl91dGlsLnVuc29tZSAwLiB0X3IgKi4gZmxvYXRfb2ZfaW50IHMuYmFyX3NpemUgaW5cbiAgICBsZXQgbl9lID0gT3B0aW9uX3V0aWwudW5zb21lIDAuIGVfciAqLiBmbG9hdF9vZl9pbnQgcy5iYXJfc2l6ZSBpblxuICAgIGF1eF90aWNrIGZhbHNlIHMgKGludF9vZl9mbG9hdCAobWF4IG5fdCBuX2UpIC0gcy50aWNrcylcbiAgfCBUZXh0IHMgLT5cbiAgICBsZXQgcnVuID0gU3lzLnRpbWUgKCkgaW5cbiAgICBsZXQgZHQgPSBydW4gLS4gcy5sYXN0X3RpbWUgaW5cbiAgICBpZiBkdCA+IDAuNSB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBwX3RleHRcbiAgICAgICAgICAoaWYgZWZmaWNpZW5jeSB0aGVuXG4gICAgICAgICAgICAgU29tZSBkdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICB0aW1lIHRfciBldmVudCBlX3IgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHMubGFzdF9ldmVudF9uYiA8LSBldmVudCBpblxuICAgICAgcy5sYXN0X3RpbWUgPC0gU3lzLnRpbWUgKClcbiAgICApXG5cbmxldCBjb21wbGV0ZV9wcm9ncmVzc19iYXIgdGltZSBldmVudCB0ID1cbiAgKG1hdGNoIHQgd2l0aFxuICB8IEJhciB0IC0+IGF1eF90aWNrIGZhbHNlIHQgKHQuYmFyX3NpemUgLSB0LnRpY2tzKVxuICB8IFRleHQgcyAtPiBwcF90ZXh0IE5vbmUgdGltZSBOb25lIGV2ZW50IE5vbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgcyk7XG4gIEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb3V0cHV0RGlyTmFtZSA9IHJlZiBcIlwiXG5sZXQgbWFyc2hhbGl6ZWRPdXRGaWxlID0gcmVmIFwiXCJcbmxldCBjZmxvd0ZpbGVOYW1lID0gcmVmIFwiY2Zsb3cuZG90XCJcbmxldCBicmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nTmFtZSA9IHJlZiBcImNvbXByZXNzaW9uX3N0YXR1cy50eHRcIlxubGV0IHRhc2tzX3Byb2ZpbGluZ05hbWUgPSByZWYgXCJwcm9maWxpbmcuaHRtbFwiXG5sZXQgZmx1eEZpbGVOYW1lID0gcmVmIFwiXCJcblxubGV0IG1rX2Rpcl9yIGQgPVxuICBsZXQgcmVjIGF1eCBkID1cbiAgICBpZiBub3QgKFN5cy5maWxlX2V4aXN0cyBkKSB0aGVuIChcbiAgICAgIGxldCAoKSA9IGF1eCAoRmlsZW5hbWUuZGlybmFtZSBkKSBpblxuICAgICAgVW5peC5ta2RpciBkIDBvNzc1XG4gICAgKVxuICBpblxuICBVbml4LmhhbmRsZV91bml4X2Vycm9yIGF1eCBkXG5cbmxldCBvdmVyd3JpdGVfcGVybWlzc2lvbiA9IHJlZiBmYWxzZVxuXG5sZXQgcGF0aCBmID1cbiAgaWYgRmlsZW5hbWUuaXNfaW1wbGljaXQgZiB0aGVuXG4gICAgRmlsZW5hbWUuY29uY2F0ICFvdXRwdXREaXJOYW1lIGZcbiAgZWxzZVxuICAgIGZcblxubGV0IG9wZW5fb3V0IGYgPVxuICBsZXQgeCA9IHBhdGggZiBpblxuICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSB4KSBpblxuICBvcGVuX291dCB4XG5cbmxldCByZWMgYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UgdiBleHQgPVxuICB0cnlcbiAgICBvcGVuX291dF9nZW5cbiAgICAgIFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbDsgT3Blbl90ZXh0IF1cbiAgICAgIDBvNjY2XG4gICAgICAoYmFzZSBeIFwiflwiIF4gc3RyaW5nX29mX2ludCB2IF4gZXh0KVxuICB3aXRoIFN5c19lcnJvciBfIC0+IGF1eF9vcGVuX291dF9mcmVzaCBiYXNlIChzdWNjIHYpIGV4dFxuXG5sZXQgb3Blbl9vdXRfZnJlc2ggbmFtZSBjb25jYXRfbGlzdCBmYWN1bHRhdGl2ZSBleHQgPVxuICBsZXQgbmFtZSA9IHBhdGggbmFtZSBpblxuICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSBuYW1lKSBpblxuICBsZXQgdG1wX25hbWUgPSBUb29scy5jaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgaW5cbiAgbGV0IGJhc2UgPSBTdHJpbmcuY29uY2F0IFwiX1wiICh0bXBfbmFtZSA6OiBjb25jYXRfbGlzdCkgaW5cbiAgbGV0IG92ZXJfZmxhZyA9XG4gICAgaWYgIW92ZXJ3cml0ZV9wZXJtaXNzaW9uIHRoZW5cbiAgICAgIE9wZW5fdHJ1bmNcbiAgICBlbHNlXG4gICAgICBPcGVuX2V4Y2xcbiAgaW5cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgb3Zlcl9mbGFnOyBPcGVuX3RleHQgXSBpblxuICB0cnkgb3Blbl9vdXRfZ2VuIGZsYWdzIDBvNjY2IChiYXNlIF4gZXh0KVxuICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgbGV0IGJhc2UnID1cbiAgICAgIGlmIGZhY3VsdGF0aXZlIDw+IFwiXCIgdGhlblxuICAgICAgICBiYXNlIF4gXCJfXCIgXiBmYWN1bHRhdGl2ZVxuICAgICAgZWxzZVxuICAgICAgICBiYXNlXG4gICAgaW5cbiAgICAodHJ5IG9wZW5fb3V0X2dlbiBmbGFncyAwbzY2NiAoYmFzZScgXiBleHQpXG4gICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UnIDAgZXh0KVxuXG5sZXQgc2V0IG5hbWUgZXh0X29wdCA9XG4gIGlmICFuYW1lIDw+IFwiXCIgdGhlbiAoXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGV4dF9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICFuYW1lXG4gICAgICB8IFNvbWUgZXh0IC0+XG4gICAgICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCAhbmFtZSBleHQgdGhlblxuICAgICAgICAgICFuYW1lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAhbmFtZSBeIFwiLlwiIF4gZXh0XG4gICAgaW5cbiAgICBuYW1lIDo9IGZuYW1lXG4gIClcblxubGV0IHNldE91dHB1dE5hbWUgKCkgPVxuICBzZXQgZmx1eEZpbGVOYW1lIChTb21lIFwiZG90XCIpO1xuICBzZXQgbWFyc2hhbGl6ZWRPdXRGaWxlIE5vbmVcblxubGV0IGNoZWNrX25vdF9leGlzdHMgPSBmdW5jdGlvblxuICB8IFwiXCIgLT4gKClcbiAgfCBmaWxlIC0+XG4gICAgbGV0IGZpbGUgPSBwYXRoIGZpbGUgaW5cbiAgICBpZiBTeXMuZmlsZV9leGlzdHMgZmlsZSB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiRmlsZSAnJXMnIGFscmVhZHkgZXhpc3RzIGRvIHlvdSB3YW50IHRvIGVyYXNlICh5L04pP0AuXCJcbiAgICAgICAgICBmaWxlXG4gICAgICBpblxuICAgICAgbGV0IGFuc3dlciA9IFRvb2xzLnJlYWRfaW5wdXQgKCkgaW5cbiAgICAgIGlmXG4gICAgICAgIGFuc3dlciA8PiBcInlcIiAmJiBhbnN3ZXIgPD4gXCJZXCIgJiYgYW5zd2VyIDw+IFwieWVzXCIgJiYgYW5zd2VyIDw+IFwiWUVTXCJcbiAgICAgICAgJiYgYW5zd2VyIDw+IFwiWWVzXCJcbiAgICAgIHRoZW5cbiAgICAgICAgZXhpdCAxXG4gICAgICBlbHNlXG4gICAgICAgIG92ZXJ3cml0ZV9wZXJtaXNzaW9uIDo9IHRydWVcbiAgICApXG5cbmxldCBzZXRDaGVja0ZpbGVFeGlzdHMgfmJhdGNobW9kZSBvdXRwdXRGaWxlID1cbiAgbGV0ICgpID0gc2V0T3V0cHV0TmFtZSAoKSBpblxuICBpZiBiYXRjaG1vZGUgdGhlblxuICAgIG92ZXJ3cml0ZV9wZXJtaXNzaW9uIDo9IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gY2hlY2tfbm90X2V4aXN0cyAhZmx1eEZpbGVOYW1lIGluXG4gICAgbGV0ICgpID0gY2hlY2tfbm90X2V4aXN0cyAhbWFyc2hhbGl6ZWRPdXRGaWxlIGluXG4gICAgY2hlY2tfbm90X2V4aXN0cyBvdXRwdXRGaWxlXG4gIClcblxubGV0IHdpdGhfY2hhbm5lbCBzdHIgZiA9XG4gIGlmIHN0ciA8PiBcIlwiIHRoZW4gKFxuICAgIGxldCBkZXNjID0gb3Blbl9vdXQgc3RyIGluXG4gICAgbGV0ICgpID0gZiBkZXNjIGluXG4gICAgY2xvc2Vfb3V0IGRlc2NcbiAgKVxuXG5sZXQgd3JhcF9mb3JtYXR0ZXIgZiBkZXNjID1cbiAgbGV0IGZyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkZXNjIGluXG4gIGxldCAoKSA9IGYgZnIgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZyICgpXG5cbmxldCBzZXRfZGlyIHMgPVxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IHMpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBzO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IG1rX2Rpcl9yIHNcbiAgaW5cbiAgb3V0cHV0RGlyTmFtZSA6PSBzXG5cbmxldCBnZXRfZGlyICgpID0gIW91dHB1dERpck5hbWVcbmxldCBzZXRfbWFyc2hhbGl6ZWQgZiA9IG1hcnNoYWxpemVkT3V0RmlsZSA6PSBmXG5cbmxldCB3aXRoX21hcnNoYWxpemVkIGYgPVxuICBtYXRjaCAhbWFyc2hhbGl6ZWRPdXRGaWxlIHdpdGhcbiAgfCBcIlwiIC0+ICgpXG4gIHwgZmlsZSAtPlxuICAgIGxldCB4ID0gcGF0aCBmaWxlIGluXG4gICAgbGV0ICgpID0gbWtfZGlyX3IgKEZpbGVuYW1lLmRpcm5hbWUgeCkgaW5cbiAgICBsZXQgZCA9IG9wZW5fb3V0X2JpbiB4IGluXG4gICAgbGV0ICgpID0gZiBkIGluXG4gICAgY2xvc2Vfb3V0IGRcblxubGV0IHNldF9jZmxvdyBzID0gY2Zsb3dGaWxlTmFtZSA6PSBzXG5cbmxldCB3aXRoX2NmbG93X2ZpbGUgbCBlIGYgPVxuICBsZXQgZGVzYyA9IG9wZW5fb3V0X2ZyZXNoICFjZmxvd0ZpbGVOYW1lIGwgXCJcIiBlIGluXG4gIGxldCAoKSA9IHdyYXBfZm9ybWF0dGVyIGYgZGVzYyBpblxuICBjbG9zZV9vdXQgZGVzY1xuXG5sZXQgb3Blbl90YXNrc19wcm9maWxpbmcgKCkgPSBvcGVuX291dCAhdGFza3NfcHJvZmlsaW5nTmFtZVxuXG5sZXQgb3Blbl9icmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nICgpID1cbiAgb3Blbl9vdXQgIWJyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmdOYW1lXG5cbmxldCBzZXRfZmx1eCBubWUgZXZlbnQgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG5tZSB3aXRoXG4gICAgfCBcIlwiIC0+IGZsdXhGaWxlTmFtZSA6PSBcImZsdXhcIiBeIFwiX1wiIF4gc3RyaW5nX29mX2ludCBldmVudFxuICAgIHwgXyAtPiBmbHV4RmlsZU5hbWUgOj0gbm1lXG4gIGluXG4gIHNldCBmbHV4RmlsZU5hbWUgKFNvbWUgXCJkb3RcIilcblxubGV0IHdpdGhfZmx1eCBzdHIgZiA9XG4gIHdpdGhfY2hhbm5lbFxuICAgIChtYXRjaCBzdHIgd2l0aFxuICAgIHwgXCJcIiAtPiAhZmx1eEZpbGVOYW1lXG4gICAgfCBfIC0+IHN0cilcbiAgICBmXG5cbmxldCB3aXRoX3NuYXBzaG90IHN0ciBleHQgZXZlbnQgZiA9XG4gIGxldCBkZXNjID0gb3Blbl9vdXRfZnJlc2ggc3RyIFtdIChzdHJpbmdfb2ZfaW50IGV2ZW50KSBleHQgaW5cbiAgbGV0ICgpID0gZiBkZXNjIGluXG4gIGNsb3NlX291dCBkZXNjXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0b3JlID0ge1xuICBmaWxlOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyOiBzdHJpbmc7XG4gIGxlZ2VuZDogc3RyaW5nIGFycmF5O1xuICBtdXRhYmxlIHBvaW50czogTmJyLnQgYXJyYXkgbGlzdDtcbn1cblxubGV0IG5ld19maWxlIG5hbWUgPVxuICBsZXQgY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IG5hbWUgaW5cbiAgbGV0IGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW4gaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PD94bWwgdmVyc2lvbj1cXFwiMS4wXFxcIj8+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PCFET0NUWVBFQCBzdmdAIFBVQkxJQ0AgXFxcIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOXFxcIkAgXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIlxcXCJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGRcXFwiPkBdQCxALFwiXG4gIGluXG4gIGYsIGNoYW5cblxubGV0IGNsb3NlX2ZpbGUgZm9ybSBjaGFuID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZm9ybSBcIkBdQC5cIiBpblxuICBjbG9zZV9vdXQgY2hhblxuXG5sZXQgc3R5bGUgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3R5bGUgdHlwZT1cXFwidGV4dC9jc3NcXFwiID5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8IVtDREFUQVtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNsZWdlbmQgdGV4dCB7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidGV4dC1hbmNob3I6ZW5kO0AgYmFzZWxpbmUtc2hpZnQ6LS40ZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhpc190IHRleHQge0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInRleHQtYW5jaG9yOm1pZGRsZTtAIGJhc2VsaW5lLXNoaWZ0Oi0xZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhpc192YSB0ZXh0IHtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ0ZXh0LWFuY2hvcjplbmQ7QCBiYXNlbGluZS1zaGlmdDotLjRlbTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ9QF1ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2F4ZXMge0AsY29sb3I6YmxhY2s7QCxzdHJva2U6Y3VycmVudENvbG9yO1wiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALHN0cm9rZS1zaXplOjFweDtALH1AXUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIkBbPGh2IDI+I2F4ZXMgdGV4dCB7QCxzdHJva2U6bm9uZTtALGZpbGw6Y3VycmVudENvbG9yO0AsfUBdQCxcIlxuICBpblxuICAoKiBsZXQgKCkgPVxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jZGF0YSB1c2U6aG92ZXIge0AsZmlsbDpncmVlbjtALH1AXUAsXCIgaW4qKVxuICBGb3JtYXQuZnByaW50ZiBmIFwiXV0+QCw8L3N0eWxlPkAsQCxcIlxuXG5sZXQgY29sb3JzID0gW3wgXCJwZXJ1XCI7IFwiYmx1ZVwiOyBcInB1cnBsZVwiOyBcImdyZWVuXCIgfF1cbmxldCBzdHlsZXMgPSBbfCBcInBvaW50XCI7IFwicGx1c1wiOyBcImNyb3NzXCIgfF1cblxubGV0IGRlZnMgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGVmcz5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxwYXRoIGlkPVxcXCJwbHVzXFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIlwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgZD1cXFwiTS0zLjUsMCBoNyBNMCwtMy41IHY3XFxcIi8+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiPHBhdGggaWQ9XFxcImNyb3NzXFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIlwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiBkPVxcXCJNLTMuNSwtMy41IEwzLjUsMy41IE0zLjUsLTMuNSBMLTMuNSwzLjVcXFwiLz5ALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8Y2lyY2xlIGlkPVxcXCJwb2ludFxcXCIgY2xhc3M9XFxcInBvaW50XFxcIiByPVxcXCIyLjVcXFwiXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBzdHJva2U9XFxcIm5vbmVcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPkAsXCIgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjwvZGVmcz5ALEAsXCJcblxubGV0IGxlZ2VuZCB3IGYgYSA9XG4gIGxldCBwcF9saW5lIGknIGYgcyA9XG4gICAgaWYgaScgPiAwIHRoZW4gKFxuICAgICAgbGV0IGkgPSBwcmVkIGknIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD48dGV4dCB4PVxcXCIlaVxcXCIgeT1cXFwiJWlcXFwiPiVzPC90ZXh0PkBdQCxcIiAodyAtIDE1KVxuICAgICAgICAgICgxMCArIChpICogMTUpKVxuICAgICAgICAgIHNcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiPHVzZSB4bGluazpocmVmPVxcXCIjJXNcXFwiIHN0eWxlPVxcXCJjb2xvcjolc1xcXCIgeD1cXFwiJWlcXFwiIHk9XFxcIiVpXFxcIi8+XCJcbiAgICAgICAgc3R5bGVzLihpJyBtb2QgQXJyYXkubGVuZ3RoIHN0eWxlcylcbiAgICAgICAgY29sb3JzLihpJyBtb2QgQXJyYXkubGVuZ3RoIGNvbG9ycylcbiAgICAgICAgKHcgLSA3KVxuICAgICAgICAoMTAgKyAoaSAqIDE1KSlcbiAgICApXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxnIGlkPVxcXCJsZWdlbmRcXFwiPkAsJWFAXUAsPC9nPkAsQCxcIlxuICAgIChQcC5hcnJheSBQcC5jdXQgcHBfbGluZSkgYVxuXG5sZXQgZ2V0X2xpbWl0cyBsID1cbiAgbGV0IGR1bW15X3ZhbHVlcyA9IDAuLCAtMS4sIDEuIGluXG4gIGxldCByZWMgYXV4IHRfbWF4IHZhX21pbiB2YV9tYXggPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIHZhX21pbiA9IHZhX21heCB0aGVuXG4gICAgICAgIHRfbWF4LCB2YV9taW4gLS4gMS4sIHZhX21heCArLiAxLlxuICAgICAgZWxzZVxuICAgICAgICB0X21heCwgbWluIHZhX21pbiAwLiwgdmFfbWF4XG4gICAgfCB2YSA6OiBxIC0+XG4gICAgICBhdXhcbiAgICAgICAgKG1heCAoT3B0aW9uX3V0aWwudW5zb21lIDAuIChOYnIudG9fZmxvYXQgdmEuKDApKSkgdF9tYXgpXG4gICAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgIChmdW4gaSBhIHggLT5cbiAgICAgICAgICAgICBtYXRjaCBOYnIudG9fZmxvYXQgeCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHggd2hlbiBpIDw+IDAgLT4gbWluIGEgeFxuICAgICAgICAgICAgIHwgXyAtPiBhKVxuICAgICAgICAgICB2YV9taW4gdmEpXG4gICAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgIChmdW4gaSBhIHggLT5cbiAgICAgICAgICAgICBtYXRjaCBOYnIudG9fZmxvYXQgeCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHggd2hlbiBpIDw+IDAgLT4gbWF4IGEgeFxuICAgICAgICAgICAgIHwgXyAtPiBhKVxuICAgICAgICAgICB2YV9tYXggdmEpXG4gICAgICAgIHFcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZHVtbXlfdmFsdWVzXG4gIHwgdmEgOjogXyB3aGVuIEFycmF5Lmxlbmd0aCB2YSA8IDIgLT4gZHVtbXlfdmFsdWVzXG4gIHwgbCAtPiBhdXggMC4gaW5maW5pdHkgMC4gbFxuXG5sZXQgZHJhd19pbl9kYXRhICgodF9tYXgsIHZhX21pbiwgdmFfbWF4KSwgKHplcm9fdywgemVyb19oLCBkcmF3X3csIGRyYXdfaCkpID1cbiAgbGV0IGRlbHRhX3ZhID0gdmFfbWF4IC0uIHZhX21pbiBpblxuICBsZXQgemVyb193JyA9IGZsb2F0X29mX2ludCB6ZXJvX3cgaW5cbiAgbGV0IHplcm9faCcgPSBmbG9hdF9vZl9pbnQgemVyb19oIGluXG4gIGxldCBkcmF3X3cnID0gZmxvYXRfb2ZfaW50IGRyYXdfdyBpblxuICBsZXQgZHJhd19oJyA9IGZsb2F0X29mX2ludCBkcmF3X2ggaW5cbiAgZnVuIGYgeCB5IC0+XG4gICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IHkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5JyAtPlxuICAgICAgZlxuICAgICAgICAoemVyb193J1xuICAgICAgICArLiAoKE9wdGlvbl91dGlsLnVuc29tZSAwLiBAQCBOYnIudG9fZmxvYXQgeCkgKi4gZHJhd193JyAvLiB0X21heCkpXG4gICAgICAgICh6ZXJvX2gnIC0uICgoeScgLS4gdmFfbWluKSAqLiBkcmF3X2gnIC8uIGRlbHRhX3ZhKSlcblxubGV0IGdyYWR1YXRpb25fc3RlcCBkcmF3X2wgbWluX2dyYWRfbCB2YV9taW4gdmFfbWF4ID1cbiAgbGV0IG5icl9kZWx0YSA9IHZhX21heCAtLiB2YV9taW4gaW5cbiAgbGV0IGRlbHRhX3ZhID1cbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBuYnJfZGVsdGEgd2l0aFxuICAgIHwgRlBfemVybyAtPiAxLlxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gbmJyX2RlbHRhXG4gIGluXG4gIGxldCBuYl9ncmFkID0gY2VpbCAoZmxvYXQgZHJhd19sIC8uIGZsb2F0IG1pbl9ncmFkX2wpIGluXG4gIGxldCBleGFjdF9zdGVwID0gZGVsdGFfdmEgLy4gbmJfZ3JhZCBpblxuICBsZXQgZGVsdGFfZ3JhZCA9IDEwLiAqKiBsb2cxMCBleGFjdF9zdGVwIGluXG4gIGxldCB2YV9taW4nID0gZGVsdGFfZ3JhZCAqLiBmbG9vciAodmFfbWluIC8uIGV4YWN0X3N0ZXApIGluXG4gIGxldCB2YV9tYXgnID1cbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBuYnJfZGVsdGEgd2l0aFxuICAgIHwgRlBfemVybyAtPiB2YV9taW4nICsuIDEuXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPlxuICAgICAgZGVsdGFfZ3JhZCAqLiBjZWlsICh2YV9tYXggLy4gZXhhY3Rfc3RlcClcbiAgaW5cbiAgdmFfbWluJywgaW50X29mX2Zsb2F0IG5iX2dyYWQsIGRlbHRhX2dyYWQsIHZhX21heCdcblxubGV0IGF4aXMgKHcsIGgpIChiX29wLCBiX3csIGJfaCkgZiBsID1cbiAgbGV0IHRfbWF4LCB2YV9taW4sIHZhX21heCA9IGdldF9saW1pdHMgbCBpblxuICBsZXQgZGF0YV93ID0gdyAtIChiX29wICsgYl93KSBpblxuICBsZXQgZGF0YV9oID0gaCAtIChiX29wICsgYl9oKSBpblxuICBsZXQgXywgbmJfdywgZ3JhZF93LCB0X21heCcgPSBncmFkdWF0aW9uX3N0ZXAgZGF0YV93IGJfdyAwLiB0X21heCBpblxuICBsZXQgdmFfbWluJywgbmJfaCwgZ3JhZF9oLCB2YV9tYXgnID1cbiAgICBncmFkdWF0aW9uX3N0ZXAgZGF0YV9oIGJfdyB2YV9taW4gdmFfbWF4XG4gIGluXG4gIGxldCBkcmF3X2Z1biA9XG4gICAgZHJhd19pbl9kYXRhICgodF9tYXgnLCB2YV9taW4nLCB2YV9tYXgnKSwgKGJfdywgaCAtIGJfaCwgZGF0YV93LCBkYXRhX2gpKVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGcgaWQ9XFxcImF4ZXNcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGcgaWQ9XFxcImF4aXNfdmFcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT5PYnNlcnZhYmxlIHZhbHVlczwvdGl0bGU+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHBhdGggZD1cXFwiTSAlaSwlaSBMICVpLCVpXFxcIi8+QF1ALFwiIGJfdyBiX29wIGJfd1xuICAgICAgKGRhdGFfaCArIGJfb3ApXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgdiA9IGdyYWRfaCAqLiBmbG9hdCBpIGluXG4gICAgICAgIGRyYXdfZnVuXG4gICAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGV4dCB4PVxcXCIlZlxcXCIgeT1cXFwiJWZcXFwiPiUuM2c8L3RleHQ+QCxcIiAoeCAtLiA4LilcbiAgICAgICAgICAgICAgICB5IHZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxpbmUgeDE9XFxcIiVmXFxcIiB5MT1cXFwiJWZcXFwiIHgyPVxcXCIlZlxcXCIgeTI9XFxcIiVmXFxcIi8+QCxcIlxuICAgICAgICAgICAgICAoeCAtLiA1LikgeSAoeCArLiA1LikgeSlcbiAgICAgICAgICBOYnIuemVybyAoTmJyLkYgdikpXG4gICAgICAoc3VjYyBuYl9oKVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF08L2c+QCxAWzxodiAyPjxnIGlkPVxcXCJheGlzX3RcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT5UaW1lIChhcmJpdHJhcnkgdW5pdCk8L3RpdGxlPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxwYXRoIGQ9XFxcIk0gJWksJWkgTCAlaSwlaVxcXCIvPkBdQCxcIiBiX3cgKGggLSBiX2gpXG4gICAgICAodyAtIGJfb3ApIChoIC0gYl9oKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHYgPSBncmFkX3cgKi4gZmxvYXQgaSBpblxuICAgICAgICBkcmF3X2Z1blxuICAgICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRleHQgeD1cXFwiJWZcXFwiIHk9XFxcIiVmXFxcIj4lLjNnPC90ZXh0PkAsXCIgeFxuICAgICAgICAgICAgICAgICh5ICsuIDguKSB2XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsaW5lIHgxPVxcXCIlZlxcXCIgeTE9XFxcIiVmXFxcIiB4Mj1cXFwiJWZcXFwiIHkyPVxcXCIlZlxcXCIvPkAsXCJcbiAgICAgICAgICAgICAgeCAoeSAtLiA1LikgeCAoeSArLiA1LikpXG4gICAgICAgICAgKE5ici5GIHYpIChOYnIuRiB2YV9taW4nKSlcbiAgICAgIChzdWNjIG5iX3cpXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXTwvZz5ALDwvZz5ALEAsXCIgaW5cbiAgZHJhd19mdW5cblxubGV0IGRhdGEgZHJhd19mdW4gbCBmIHAgPVxuICBsZXQgb25lX3BvaW50IHMgdCBpIGYgdmEgPVxuICAgIGRyYXdfZnVuXG4gICAgICAoZnVuIHggeSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHVzZSB4bGluazpocmVmPVxcXCIjJXNcXFwiIHg9XFxcIiVmXFxcIiB5PVxcXCIlZlxcXCI+QCxcIlxuICAgICAgICAgICAgc3R5bGVzLihpIG1vZCBBcnJheS5sZW5ndGggc3R5bGVzKVxuICAgICAgICAgICAgeCB5XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXMgdD0lYSB2PSVhPC90aXRsZT5ALDwvdXNlPkBdQCxcIiBzXG4gICAgICAgICAgTmJyLnByZXR0eV9wcmludCB0IE5ici5wcmludCB2YSlcbiAgICAgIHQgdmFcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjxnIGlkPVxcXCJkYXRhXFxcIj5ALCVhPC9nPkAsQCxcIlxuICAgIChQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGkgZiBzIC0+XG4gICAgICAgICBpZiBpID4gMCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICBcIkBbPGh2IDI+PGcgaWQ9XFxcImRhdGFfJWlcXFwiIHN0eWxlPVxcXCJjb2xvcjolc1xcXCI+QCwlYUBdPC9nPkAsXCJcbiAgICAgICAgICAgICAocHJlZCBpKVxuICAgICAgICAgICAgIGNvbG9ycy4oaSBtb2QgQXJyYXkubGVuZ3RoIGNvbG9ycylcbiAgICAgICAgICAgICAoUHAubGlzdCBQcC5lbXB0eSAoZnVuIGYgZSAtPiBvbmVfcG9pbnQgcyBlLigwKSBpIGYgZS4oaSkpKVxuICAgICAgICAgICAgIHApKVxuICAgIGxcblxubGV0IGRyYXcgKCh3LCBoKSBhcyBzaXplKSBib3JkZXIgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxzdmdAIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCJAIFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ4bWxuczp4bGluaz1cXFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1xcXCJAIFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ3aWR0aD1cXFwiJWlcXFwiQCBoZWlnaHQ9XFxcIiVpXFxcIj5AXUAsXCIgdyBoIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lczwvdGl0bGU+QCw8ZGVzY3I+JXM8L2Rlc2NyPkAsQCxcIiBzLnRpdGxlIHMuZGVzY3JcbiAgaW5cbiAgbGV0ICgpID0gc3R5bGUgZiBpblxuICBsZXQgKCkgPSBkZWZzIGYgaW5cbiAgbGV0IGRyYXdfZnVuID0gYXhpcyBzaXplIGJvcmRlciBmIHMucG9pbnRzIGluXG4gIGxldCAoKSA9IGxlZ2VuZCB3IGYgcy5sZWdlbmQgaW5cbiAgbGV0ICgpID0gZGF0YSBkcmF3X2Z1biBzLmxlZ2VuZCBmIHMucG9pbnRzIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCI8L3N2Zz5cIlxuXG5sZXQgdG9fc3RyaW5nID8od2lkdGggPSA4MDApIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IHNpemUgPSB3aWR0aCwgaW50X29mX2Zsb2F0IChmbG9hdCB3aWR0aCAvLiBzcXJ0IDIuKSBpblxuICBsZXQgYm9yZGVyID0gMTAsIDcwLCAyNSBpblxuICBsZXQgKCkgPSBkcmF3IHNpemUgYm9yZGVyIGYgcyBpblxuICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBmICgpIGluXG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCB0b19maWxlIHMgPVxuICBsZXQgZm9ybSwgY2hhbiA9IG5ld19maWxlIHMuZmlsZSBpblxuICBsZXQgc2l6ZSA9IDgwMCwgNjAwIGluXG4gIGxldCBib3JkZXIgPSAxMCwgNzAsIDI1IGluXG4gIGxldCAoKSA9IGRyYXcgc2l6ZSBib3JkZXIgZm9ybSBzIGluXG4gIGNsb3NlX2ZpbGUgZm9ybSBjaGFuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKkV4cGVydCBtb2RlIHZhbHVlcyopXG5sZXQgZGVmYXVsdEV4dEFycmF5U2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdEdyYXBoU2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdExpZnRTZXRTaXplID0gcmVmIDVcbmxldCBkZWZhdWx0SGVhcFNpemUgPSByZWYgNVxubGV0IGRlYnVnX21vZGVPbiA9IHJlZiBmYWxzZVxuXG4oKiBleHBlcnQgb3B0aW9uIGZvciBzdG9yaWVzICopXG5cbigqIE51bWJlciBvZiBwb3RlbnRpYWwgc3RhdGVzIHRoYXQgYXJlIHB1dCBpbiB0aGUgY2FjaGUgcGVyIGJpbmRpbmcgc2l0ZSwgc28gYXMgdG8gaGFuZGxlciB3aXRoIHNpZGUgZWZmZWN0cyBpbiBzdG9yaWVzLiBOb25lIC0+IFVubGltaXRlZCBjYWNoZSAqKVxuXG4oKiogTWVtb3J5ICoqKVxubGV0IGNhY2hlX3NpemUgPSByZWYgKE5vbmUgOiBpbnQgb3B0aW9uKVxuXG4oKiBDdXQgY29uY3VycmVudCBldmVudHMgKGZvciBhbGwgb2JzZXJ2YWJsZXMpIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBibGFja2JvYXJkICopXG5cbigqKiBQcmVjb21wdXRhdGlvbiAqKilcbmxldCBkb19nbG9iYWxfY3V0ID0gdHJ1ZVxuXG4oKiBDdXQgcHNldWRvLWludmVyc2UgZXZlbnRzICopXG5sZXQgY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50ID0gdHJ1ZVxuXG4oKiBDdXQgY29uY3VycmVudCBldmVudHMgKGZvciB0aGUgY3VycmVudCBvYnNlcnZhbGUpIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBibGFja2JvYXJkICopXG5sZXQgZG9fbG9jYWxfY3V0ID0gdHJ1ZVxuXG4oKiBDdXQgc2VwYXJhYmxlIGNvbXBvbmVudHMgKilcbmxldCBkb19kZXRlY3Rfc2VwYXJhYmxlX2NvbXBvbmVudHMgPSB0cnVlXG5cbigqIFdoZW5ldmVyIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgYW4gZXZlbnQgaGFzIHRvIGJlIHNlbGVjdGVkIG9yLCBub3QsIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBub3QgdGhlIGxhc3Qgb25lIHRoYXQgY2FuIHBhcmZvcm0gYSByZXF1ZXN0ZWQgYWN0aW9uICopXG5cbigqKiBQcm9wYWdhdGlvbiBoZXVyaXN0aWNzICoqKVxubGV0IGxvb2tfdXBfZm9yX2JldHRlcl9jdXQgPSB0cnVlXG5cbigqIFdoZW5ldmVyIGFuIGV2ZW50IGlzIHJlbW92ZWQsIGNoZWNrZWQgd2hldGhlciB0aGVyZSBpcyBub3Qgb25seSBvbmUgbGVmdCB0byBwZXJmb3JtIGEgcmVxdWlyZWQgYWN0aW9uICopXG5sZXQgbG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0ID0gdHJ1ZVxubGV0IGxvZ19udW1iZXJfb2ZfY2F1c2FsX2Zsb3dzID0gdHJ1ZVxuXG4oKlVzZXIgZGVmaW5hYmxlIHZhbHVlcyopXG5sZXQgdGltZV9pbmRlcGVuZGVudCA9IHJlZiBmYWxzZVxubGV0IGJsYWNrbGlzdF9ldmVudHMgPSByZWYgZmFsc2VcblxuKCpYTFMgb3V0cHV0IGZvciB0aGUgZ3JpZHMgZHVyaW5nIGNvbXByZXNzaW9uKilcbmxldCBkdW1wX2dyaWRfYmVmb3JlX3dlYWtfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IGR1bXBfZ3JpZF9iZWZvcmVfc3Ryb25nX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ19zdHJvbmdfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IHhsc3dlYWtGaWxlTmFtZSA9IFwiZ3JpZF93ZWFrX2NvbXByZXNzaW9uXCJcbmxldCB4bHNzdHJvbmdGaWxlTmFtZSA9IFwiZ3JpZF9zdHJvbmdfY29tcHJlc3Npb25cIlxubGV0IGdldF9jYWNoZV9zaXplICgpID0gIWNhY2hlX3NpemVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBwcmludF9kZXNjIDogKHN0cmluZywgb3V0X2NoYW5uZWwgKiBGb3JtYXQuZm9ybWF0dGVyKSBIYXNodGJsLnQgPVxuICBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCBzcGVjaWVzX2Rlc2MgOiAoc3RyaW5nLCBvdXRfY2hhbm5lbCAqIEZvcm1hdC5mb3JtYXR0ZXIpIEhhc2h0YmwudCA9XG4gIEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHV1aWQgPSBSYW5kb20uU3RhdGUuYml0cyAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgZ2V0X2Rlc2MgZmlsZSB0YmwgPVxuICB0cnkgc25kIChIYXNodGJsLmZpbmQgdGJsIGZpbGUpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGRfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGUgaW5cbiAgICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gICAgSGFzaHRibC5hZGQgdGJsIGZpbGUgKGRfY2hhbiwgZCk7XG4gICAgZFxuXG5sZXQgY2xvc2VfZGVzYyAoKSA9XG4gIEhhc2h0YmwuaXRlciAoZnVuIF9maWxlIChkX2NoYW4sIF9kKSAtPiBjbG9zZV9vdXQgZF9jaGFuKSBwcmludF9kZXNjO1xuICBIYXNodGJsLml0ZXIgKGZ1biBfZmlsZSAoZF9jaGFuLCBfZCkgLT4gY2xvc2Vfb3V0IGRfY2hhbikgc3BlY2llc19kZXNjXG5cbmxldCBvdXRwdXRfZmx1eCBkaW5fbmFtZSBmbHV4ID1cbiAgS2FwcGFfZmlsZXMud2l0aF9mbHV4IGRpbl9uYW1lXG4gICAgKGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5odG1sXCIgdGhlblxuICAgICAgIEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2h0bWxfZGluIGYgZmx1eClcbiAgICAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuanNvblwiIHRoZW5cbiAgICAgICBmdW4gZCAtPlxuICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIERhdGEud3JpdGVfZGluIGQgZmx1eFxuICAgICBlbHNlXG4gICAgICAgS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfZG90X2RpbiB+dXVpZCBmIGZsdXgpKVxuXG5sZXQgYWN0c0Rlc2NyID0gcmVmIE5vbmVcbmxldCBlbXB0eUFjdHMgPSByZWYgdHJ1ZVxuXG5sZXQgaW5pdF9hY3Rpdml0aWVzIGVudiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgcyAtPlxuICAgIGxldCBub0NvdW50ZXJzID0gIVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gaW5cbiAgICBsZXQgZGVzYyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IHMgaW5cbiAgICBsZXQgZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZGVzYyBpblxuICAgIGxldCBuYl9yID0gTW9kZWwubmJfc3ludGFjdGljX3J1bGVzIGVudiBpblxuICAgIGxldCAoKSA9IGFjdHNEZXNjciA6PSBTb21lIChkZXNjLCBmb3JtLCBuYl9yKSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PntALHJ1bGVzOkBbW1wiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWFcXFwiLEAsXCJcbiAgICAgICAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgeClcbiAgICAgICAgbmJfclxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIlxcXCIlYVxcXCJdQF0sQCxkYXRhOltALFwiXG4gICAgICAoTW9kZWwucHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudilcbiAgICAgIG5iX3JcblxubGV0IGNsb3NlX2FjdGl2aXRpZXMgKCkgPVxuICBtYXRjaCAhYWN0c0Rlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoYywgZiwgXykgLT5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCxdfUBdQC5cIiBpblxuICAgIGNsb3NlX291dCBjXG5cbmxldCBvdXRwdXRfYWN0aXZpdGllcyByIGZsdXggPVxuICBtYXRjaCAhYWN0c0Rlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoXywgZiwgbGFzdCkgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgIWVtcHR5QWN0cyB0aGVuXG4gICAgICAgIGVtcHR5QWN0cyA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLEAsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAW1slaVwiIHIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIGkgPSAwIHRvIGxhc3QgZG9cbiAgICAgICAgbGV0IGssIGsnID0gdHJ5IExpc3QuYXNzb2MgaSBmbHV4IHdpdGggTm90X2ZvdW5kIC0+IDAuLCAwLiBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLCVmXCIgKGsnIC0uIGspXG4gICAgICBkb25lXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiXUBdXCJcblxudHlwZSBmZCA9IHsgZGVzYzogb3V0X2NoYW5uZWw7IGZvcm06IEZvcm1hdC5mb3JtYXR0ZXI7IGlzX3RzdjogYm9vbCB9XG5cbnR5cGUgZm9ybWF0ID1cbiAgfCBTdGFuZEJ5IG9mIChzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgYXJyYXkpXG4gIHwgUmF3IG9mIGZkXG4gIHwgU3ZnIG9mIFBwX3N2Zy5zdG9yZVxuXG5sZXQgcGxvdERlc2NyID0gcmVmIE5vbmVcblxubGV0IGNsb3NlX3Bsb3QgKCkgPVxuICBtYXRjaCAhcGxvdERlc2NyIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoU3RhbmRCeSBfKSAtPiAoKVxuICB8IFNvbWUgKFJhdyBwbG90KSAtPiBjbG9zZV9vdXQgcGxvdC5kZXNjXG4gIHwgU29tZSAoU3ZnIHMpIC0+IFBwX3N2Zy50b19maWxlIHNcblxubGV0IHRyYWNlRGVzY3IgPSByZWYgTm9uZVxubGV0IHRyYWNlTm90RW1wdHkgPSByZWYgZmFsc2VcblxubGV0IGNsb3NlX3RyYWNlICgpID1cbiAgbWF0Y2ggIXRyYWNlRGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRlc2MgLT5cbiAgICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJdXFxufVxcblwiIGluXG4gICAgbGV0ICgpID0gY2xvc2Vfb3V0IGRlc2MgaW5cbiAgICB0cmFjZURlc2NyIDo9IE5vbmVcblxubGV0IGluaXRpYWxpemUgYWN0aXZpdGllc19maWxlIHRyYWNlX2ZpbGUgcGxvdFBhY2sgZW52ID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCB0cmFjZV9maWxlIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPlxuICAgICAgbGV0IGRlc2MgPSBLYXBwYV9maWxlcy5vcGVuX291dCBzIGluXG4gICAgICBsZXQgKCkgPSBUcmFjZS5pbml0X3RyYWNlX2ZpbGUgfnV1aWQgZW52IGRlc2MgaW5cbiAgICAgIHRyYWNlRGVzY3IgOj0gU29tZSBkZXNjXG4gIGluXG4gIGxldCAoKSA9IGluaXRfYWN0aXZpdGllcyBlbnYgYWN0aXZpdGllc19maWxlIGluXG4gIG1hdGNoIHBsb3RQYWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBwYWNrIC0+IHBsb3REZXNjciA6PSBTb21lIChTdGFuZEJ5IHBhY2spXG5cbmxldCBsYXVuY2hfcGxvdCAoZmlsZW5hbWUsIHRpdGxlLCBoZWFkKSA9XG4gIGxldCBmb3JtYXQgPVxuICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlbmFtZSBcIi5zdmdcIiB0aGVuXG4gICAgICBTdmdcbiAgICAgICAge1xuICAgICAgICAgIFBwX3N2Zy5maWxlID0gZmlsZW5hbWU7XG4gICAgICAgICAgUHBfc3ZnLnRpdGxlO1xuICAgICAgICAgIFBwX3N2Zy5kZXNjciA9IFwiXFxcInV1aWRcXFwiIDogXFxcIlwiIF4gc3RyaW5nX29mX2ludCB1dWlkIF4gXCJcXFwiXCI7XG4gICAgICAgICAgUHBfc3ZnLmxlZ2VuZCA9IGhlYWQ7XG4gICAgICAgICAgUHBfc3ZnLnBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgZmlsZW5hbWUgaW5cbiAgICAgIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgICAgIGxldCBpc190c3YgPSBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZW5hbWUgXCIudHN2XCIgaW5cbiAgICAgIGxldCAoKSA9IGlmIG5vdCBpc190c3YgdGhlbiBGb3JtYXQuZnByaW50ZiBkIFwiIyAlc0AuXCIgdGl0bGUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIG5vdCBpc190c3YgdGhlbiBGb3JtYXQuZnByaW50ZiBkIFwiIyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiQC5cIiB1dWlkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRGF0YS5wcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2IGQgaGVhZCBpblxuICAgICAgUmF3IHsgZGVzYyA9IGRfY2hhbjsgZm9ybSA9IGQ7IGlzX3RzdiB9XG4gICAgKVxuICBpblxuICBwbG90RGVzY3IgOj0gU29tZSBmb3JtYXRcblxubGV0IHJlYyBwbG90X25vdyBsID1cbiAgbWF0Y2ggIXBsb3REZXNjciB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIChTdGFuZEJ5IHApIC0+XG4gICAgbGV0ICgpID0gbGF1bmNoX3Bsb3QgcCBpblxuICAgIHBsb3Rfbm93IGxcbiAgfCBTb21lIChSYXcgZmQpIC0+XG4gICAgRGF0YS5wcmludF9wbG90X2xpbmUgfmlzX3RzdjpmZC5pc190c3YgTmJyLnByaW50X29wdGlvbiBmZC5mb3JtIGxcbiAgfCBTb21lIChTdmcgcykgLT4gcy5QcF9zdmcucG9pbnRzIDwtIGwgOjogcy5QcF9zdmcucG9pbnRzXG5cbmxldCBzbmFwc2hvdCBmaWxlIHMgPVxuICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZSBcIi5kb3RcIiB0aGVuXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmRvdFwiIHMuRGF0YS5zbmFwc2hvdF9ldmVudFxuICAgICAgKEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2RvdF9zbmFwc2hvdCB+dXVpZCBmIHMpKVxuICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlIFwiLmpzb25cIiB0aGVuXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmpzb25cIiBzLkRhdGEuc25hcHNob3RfZXZlbnQgKGZ1biBkIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX3RvX2NoYW5uZWwgRGF0YS53cml0ZV9zbmFwc2hvdCBkIHMpXG4gIGVsc2VcbiAgICBLYXBwYV9maWxlcy53aXRoX3NuYXBzaG90IGZpbGUgXCIua2FcIiBzLkRhdGEuc25hcHNob3RfZXZlbnRcbiAgICAgIChLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9zbmFwc2hvdCB+dXVpZCBmIHMpKVxuXG5sZXQgcHJpbnRfc3BlY2llcyB0aW1lIGYgbWl4dHVyZSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlZzogQFs8aD4lYUBdQC5cIiB0aW1lIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4dHVyZVxuXG5sZXQgd2FybmluZ19idWZmZXIgOiAoTG9jLnQgb3B0aW9uICogKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkpIGxpc3QgcmVmID1cbiAgcmVmIFtdXG5cbmxldCBnbyA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5TbmFwc2hvdCAoZiwgcykgLT4gc25hcHNob3QgZiBzXG4gIHwgRGF0YS5ESU4gKG4sIGYpIC0+IG91dHB1dF9mbHV4IG4gZlxuICB8IERhdGEuRGVsdGFBY3Rpdml0aWVzIChyLCBmbHV4KSAtPiBvdXRwdXRfYWN0aXZpdGllcyByIGZsdXhcbiAgfCBEYXRhLlBsb3QgeCAtPiBwbG90X25vdyB4XG4gIHwgRGF0YS5QcmludCBwIC0+XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggcC5EYXRhLmZpbGVfbGluZV9uYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIHN0ZG91dFxuICAgICAgfCBTb21lIGZpbGUgLT4gZ2V0X2Rlc2MgZmlsZSBwcmludF9kZXNjXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiJXNALlwiIHAuRGF0YS5maWxlX2xpbmVfdGV4dFxuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LnByaW50ZiBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gd2FybmluZ19idWZmZXIgOj0gKHBvcywgbXNnKSA6OiAhd2FybmluZ19idWZmZXJcbiAgfCBEYXRhLlRyYWNlU3RlcCBzdGVwIC0+XG4gICAgKG1hdGNoICF0cmFjZURlc2NyIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgIXRyYWNlTm90RW1wdHkgdGhlblxuICAgICAgICAgIG91dHB1dF9jaGFyIGQgJywnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0cmFjZU5vdEVtcHR5IDo9IHRydWVcbiAgICAgIGluXG4gICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIFRyYWNlLndyaXRlX3N0ZXAgZCBzdGVwKVxuICB8IERhdGEuU3BlY2llcyAoZmlsZSwgdGltZSwgbWl4dHVyZSkgLT5cbiAgICBsZXQgZGVzYyA9IGdldF9kZXNjIGZpbGUgc3BlY2llc19kZXNjIGluXG4gICAgcHJpbnRfc3BlY2llcyB0aW1lIGRlc2MgbWl4dHVyZVxuXG5sZXQgaW5wdXRzRGVzYyA9IHJlZiBOb25lXG5cbmxldCBmbHVzaF93YXJuaW5nICgpID1cbiAgbGV0IGwgPSBMaXN0LnJldiAhd2FybmluZ19idWZmZXIgaW5cbiAgbGV0ICgpID0gd2FybmluZ19idWZmZXIgOj0gW10gaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIEZvcm1hdC5lcnJfZm9ybWF0dGVyIG1zZylcbiAgICBsXG5cbmxldCBjbG9zZV9pbnB1dCA/ZXZlbnQgKCkgPVxuICBtYXRjaCAhaW5wdXRzRGVzYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaW5wdXRzIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAgICAgKEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzKVxuICAgICAgICAgIFwiQC4lJW1vZDogW0VdID0gJWkgZG8gJFNUT1A7QC5cIiBldmVudFxuICAgIGluXG4gICAgY2xvc2Vfb3V0IGlucHV0c1xuXG5sZXQgY2xvc2UgP2V2ZW50ICgpID1cbiAgbGV0ICgpID0gY2xvc2VfcGxvdCAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV90cmFjZSAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV9hY3Rpdml0aWVzICgpIGluXG4gIGxldCAoKSA9IGZsdXNoX3dhcm5pbmcgKCkgaW5cbiAgbGV0ICgpID0gY2xvc2VfaW5wdXQgP2V2ZW50ICgpIGluXG4gIGNsb3NlX2Rlc2MgKClcblxubGV0IGluaXRpYWxfaW5wdXRzIGNvbmYgZW52IGluaXQgfmZpbGVuYW1lID1cbiAgbGV0IGlucHV0cyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0X2ZyZXNoIGZpbGVuYW1lIFtdIFwiXCIgXCIua2FcIiBpblxuICBsZXQgaW5wdXRzX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGlucHV0cyBpblxuICBsZXQgKCkgPSBEYXRhLnByaW50X2luaXRpYWxfaW5wdXRzIH51dWlkIGNvbmYgZW52IGlucHV0c19mb3JtIGluaXQgaW5cbiAgaW5wdXRzRGVzYyA6PSBTb21lIGlucHV0c1xuXG5sZXQgaW5wdXRfbW9kaWZpY2F0aW9ucyBlbnYgZXZlbnQgbW9kcyA9XG4gIG1hdGNoICFpbnB1dHNEZXNjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpbnB1dHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzKVxuICAgICAgXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiIGV2ZW50XG4gICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgIChLYXBwYV9wcmludGVyLm1vZGlmaWNhdGlvbiB+bm9Db3VudGVyczohUGFyYW1ldGVyLmRlYnVnX21vZGVPbiB+ZW52KSlcbiAgICAgIG1vZHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZGlyZWN0aXZlX3VuaXQgPSBUaW1lIHwgRXZlbnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGFsZ192YXJfb3ZlcndyaXRlOiAoc3RyaW5nICogTmJyLnQpIGxpc3Q7XG4gIG11dGFibGUgbWFyc2hhbGl6ZWRJbkZpbGU6IHN0cmluZztcbiAgbXV0YWJsZSBpbml0aWFsTWl4OiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIHJlc2NhbGU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBzZWVkVmFsdWU6IGludCBvcHRpb247XG4gIG11dGFibGUgdW5pdDogZGlyZWN0aXZlX3VuaXQ7XG4gIG11dGFibGUgbWFyc2hhbGl6ZU91dEZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgZG9tYWluT3V0cHV0RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSB0cmFjZUZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgbG9nRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBjb21waWxlX21vZGU6IGJvb2w7XG4gIG11dGFibGUgc2hhcmluZzogUGF0dGVybi5zaGFyaW5nX2xldmVsO1xuICBtdXRhYmxlIHNob3dFZmZpY2llbmN5OiBib29sO1xuICBtdXRhYmxlIHRpbWVJbmRlcGVuZGVudDogYm9vbDtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGFsZ192YXJfb3ZlcndyaXRlID0gW107XG4gICAgcmVzY2FsZSA9IE5vbmU7XG4gICAgbWFyc2hhbGl6ZWRJbkZpbGUgPSBcIlwiO1xuICAgIGluaXRpYWxNaXggPSBOb25lO1xuICAgIHNlZWRWYWx1ZSA9IE5vbmU7XG4gICAgdW5pdCA9IFRpbWU7XG4gICAgbWFyc2hhbGl6ZU91dEZpbGUgPSBOb25lO1xuICAgIGRvbWFpbk91dHB1dEZpbGUgPSBOb25lO1xuICAgIHRyYWNlRmlsZSA9IE5vbmU7XG4gICAgbG9nRmlsZSA9IFNvbWUgXCJpbnB1dHNcIjtcbiAgICBjb21waWxlX21vZGUgPSBmYWxzZTtcbiAgICBzaGFyaW5nID0gUGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zO1xuICAgIHNob3dFZmZpY2llbmN5ID0gZmFsc2U7XG4gICAgdGltZUluZGVwZW5kZW50ID0gZmFsc2U7XG4gIH1cblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6IChzdHJpbmcgKiBBcmcuc3BlYyAqIHN0cmluZykgbGlzdCA9XG4gIFtcbiAgICAoIFwiLW1peHR1cmVcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBmaWMgLT4gdC5pbml0aWFsTWl4IDwtIFNvbWUgZmljKSxcbiAgICAgIFwiVGFrZSB0aGUgaW5pdGlhbCBzdGF0ZSBmcm9tIHRoaXMgZmlsZSAoaWdub3JlICVpbml0IGZyb20gb3RoZXIgZmlsZXMpXCIgKTtcbiAgICAoIFwiLXZhclwiLFxuICAgICAgQXJnLlR1cGxlXG4gICAgICAgIChsZXQgdG1wX3Zhcl9uYW1lID0gcmVmIFwiXCIgaW5cbiAgICAgICAgIFtcbiAgICAgICAgICAgQXJnLlN0cmluZyAoZnVuIG5hbWUgLT4gdG1wX3Zhcl9uYW1lIDo9IG5hbWUpO1xuICAgICAgICAgICBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgKGZ1biB2YXJfdmFsIC0+XG4gICAgICAgICAgICAgICB0LmFsZ192YXJfb3ZlcndyaXRlIDwtXG4gICAgICAgICAgICAgICAgICggIXRtcF92YXJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICB0cnkgTmJyLm9mX3N0cmluZyB2YXJfdmFsXG4gICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChBcmcuQmFkIChcIlxcXCJcIiBeIHZhcl92YWwgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcIikpIClcbiAgICAgICAgICAgICAgICAgOjogdC5hbGdfdmFyX292ZXJ3cml0ZSk7XG4gICAgICAgICBdKSxcbiAgICAgIFwiU2V0IGEgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZVwiICk7XG4gICAgKCBcIi1sb2FkLXNpbVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIGZpbGUgLT4gdC5tYXJzaGFsaXplZEluRmlsZSA8LSBmaWxlKSxcbiAgICAgIFwibG9hZCBzaW11bGF0aW9uIHBhY2thZ2UgaW5zdGVhZCBvZiBrYXBwYSBmaWxlc1wiICk7XG4gICAgKCBcIi1yZXNjYWxlXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biBpIC0+IHQucmVzY2FsZSA8LSBTb21lIGkpLFxuICAgICAgXCJBcHBseSByZXNjYWxpbmcgZmFjdG9yIHRvIGluaXRpYWwgY29uZGl0aW9uXCIgKTtcbiAgICAoIFwiLXVcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXCJ0aW1lXCIgfCBcIlRpbWVcIiB8IFwidFwiIC0+IHQudW5pdCA8LSBUaW1lXG4gICAgICAgIHwgXCJldmVudFwiIHwgXCJldmVudHNcIiB8IFwiZVwiIHwgXCJFdmVudFwiIHwgXCJFdmVudHNcIiAtPiB0LnVuaXQgPC0gRXZlbnRcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlVucmVjb2duaXplZCB1bml0OiBcIiBeIHMpKSksXG4gICAgICBcInVuaXQgKHRpbWUvZXZlbnQpIGluIHdoaWNoIGxpbWl0IGFuZCBwbG90IHBlcmlvZCBhcmUgc3BlY2lmaWVkXCIgKTtcbiAgICAoIFwiLWVcIixcbiAgICAgIEFyZy5JbnRcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAoXCJPcHRpb24gJy1lJyBoYXMgYmVlbiByZXBsYWNlIGJ5ICctdSBldmVudCAtbCBcIlxuICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgZSBeIFwiJ1wiKSkpLFxuICAgICAgXCJEZXByZWNhdGVkIG9wdGlvblwiICk7XG4gICAgKCBcIi1tYWtlLXNpbVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIG1hcnNoYWxpemVPdXRGaWxlIC0+IHQubWFyc2hhbGl6ZU91dEZpbGUgPC0gU29tZSBtYXJzaGFsaXplT3V0RmlsZSksXG4gICAgICBcInNhdmUga2FwcGEgZmlsZXMgYXMgYSBzaW11bGF0aW9uIHBhY2thZ2VcIiApO1xuICAgICggXCItZHVtcC1jY1wiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIGRvbWFpbk91dHB1dEZpbGUgLT4gdC5kb21haW5PdXRwdXRGaWxlIDwtIFNvbWUgZG9tYWluT3V0cHV0RmlsZSksXG4gICAgICBcImZpbGUgbmFtZSBmb3IgZHVtcGluZyB0aGUgZG9tYWluIG9mIG9ic2VydmFibGVzXCIgKTtcbiAgICAoIFwiLXRyYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gdHJhY2VGaWxlIC0+IHQudHJhY2VGaWxlIDwtIFNvbWUgdHJhY2VGaWxlKSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkdW1waW5nIHRoZSBzaW11bGF0aW9uIHRyYWNlXCIgKTtcbiAgICAoIFwiLS10aW1lLWluZGVwZW5kZW50XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQudGltZUluZGVwZW5kZW50IDwtIHRydWUpLFxuICAgICAgXCJEaXNhYmxlIHRoZSB1c2Ugb2YgdGltZSBpcyBzdG9yeSBoZXVyaXRpY3MgKGZvciB0ZXN0IHN1aXRlKVwiICk7XG4gICAgKCBcIi1zZWVkXCIsXG4gICAgICBBcmcuSW50IChmdW4gaSAtPiB0LnNlZWRWYWx1ZSA8LSBTb21lIGkpLFxuICAgICAgXCJTZWVkIGZvciB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcIiApO1xuICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5zaG93RWZmaWNpZW5jeSA8LSB0cnVlKSxcbiAgICAgIFwiS2FTaW0gdGVsbHMgaG93IGZhc3QgaXQgcnVuc1wiICk7XG4gICAgKCBcIi1zaGFyaW5nXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwibm9cIiB8IFwibm9uZVwiIHwgXCJOb25lXCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTm9fc2hhcmluZ1xuICAgICAgICB8IFwiQ29tcGF0aWJsZVwiIC0+IHQuc2hhcmluZyA8LSBQYXR0ZXJuLk1heF9zaGFyaW5nXG4gICAgICAgIHwgXCJtYXhcIiB8IFwiTWF4XCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTWF4X3NoYXJpbmdcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlVucmVjb2duaXplZCBzaGFyaW5nIGxldmVsOiBcIiBeIHMpKSksXG4gICAgICBcIkxldmVsIG9mIHNoYXJpbmcgY29tcHV0ZWQgYmV0d2VlbiBwYXR0ZXJucyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gXFxcbiAgICAgICAoTm9uZS9Db21wYXRpYmxlL01heClcIiApO1xuICAgICggXCItLWNvbXBpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5jb21waWxlX21vZGUgPC0gdHJ1ZSksXG4gICAgICBcIkRpc3BsYXkgcnVsZSBjb21waWxhdGlvbiBhcyBhY3Rpb24gbGlzdFwiICk7XG4gICAgKCBcIi1sb2dcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBsb2dGaWxlIC0+IHQubG9nRmlsZSA8LSBTb21lIGxvZ0ZpbGUpLFxuICAgICAgXCJmaWxlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcmVnZW5lcmF0ZSB0aGUgZXhhY3Qgc2FtZSBzaW11bGF0aW9uXCIgKTtcbiAgICAoIFwiLS1uby1sb2dcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5sb2dGaWxlIDwtIE5vbmUpLFxuICAgICAgXCJEbyBub3QgZ2VuZXJhdGUgYSBmaWxlIHRvIHJlZG8gdGhlIGV4YWN0IHNhbWUgc2ltdWxhdGlvblwiICk7XG4gIF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcHJlcHJvY2Vzc2VkX2FzdCA9IHtcbiAgY29uZjogQ29uZmlndXJhdGlvbi50O1xuICBzdG9yeV9jb21wcmVzc2lvbjogYm9vbCAqIGJvb2wgKiBib29sO1xuICBmb3JtYXRDZmxvdzogc3RyaW5nO1xuICBjZmxvd0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIGFzdF9jb21waWxlZF9kYXRhOiBMS2FwcGFfY29tcGlsZXIuYXN0X2NvbXBpbGVkX2RhdGE7XG4gIG92ZXJ3cml0ZV9pbml0OlxuICAgIChMS2FwcGEucnVsZV9taXh0dXJlLCBSYXdfbWl4dHVyZS50LCBpbnQpIEFzdC5pbml0X3N0YXRlbWVudCBsaXN0IG9wdGlvbjtcbiAgb3ZlcndyaXRlX3QwOiBmbG9hdCBvcHRpb247XG59XG5cbnR5cGUgY29tcGlsYXRpb25fcmVzdWx0ID0ge1xuICBjb25mOiBDb25maWd1cmF0aW9uLnQ7XG4gIGVudjogTW9kZWwudDtcbiAgY29udGFjdF9tYXA6IENvbnRhY3RfbWFwLnQ7XG4gIHVwZGF0ZWRfYWxnX3ZhcnM6IGludCBsaXN0O1xuICBzdG9yeV9jb21wcmVzc2lvbjogKGJvb2wgKiBib29sICogYm9vbCkgb3B0aW9uO1xuICBmb3JtYXRDZmxvdzogc3RyaW5nO1xuICBjZmxvd0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIGluaXRfbDogKFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSkgbGlzdDtcbiAgY291bnRlcl9vcHQ6IENvdW50ZXIudCBvcHRpb247XG59XG5cbmxldCBwcmVwcm9jZXNzX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSA/a2FzaW1fYXJncyBjbGlfYXJnc1xuICAgIChhc3QgOiAoXywgXywgXywgXywgXywgXykgQXN0LmNvbXBpbCkgOiBwcmVwcm9jZXNzZWRfYXN0ID1cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgc2ltdWxhdGlvbiBwYXJhbWV0ZXJzQC5cIiBpblxuICBsZXQgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGUgPVxuICAgIENvbmZpZ3VyYXRpb24ucGFyc2UgYXN0LkFzdC5jb25maWd1cmF0aW9uc1xuICBpblxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBTYW5pdHkgY2hlY2tzQC5cIiBpblxuICBsZXQgc3ludGF4X3ZlcnNpb24gPSBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvbiBpblxuICBsZXQgdmFyX292ZXJ3cml0ZSwgaW5pdGlhbE1peCA9XG4gICAgbWF0Y2gga2FzaW1fYXJncyB3aXRoXG4gICAgfCBOb25lIC0+IFtdLCBOb25lXG4gICAgfCBTb21lIGthc2ltX2FyZ3MgLT5cbiAgICAgIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5hbGdfdmFyX292ZXJ3cml0ZSwga2FzaW1fYXJncy5LYXNpbV9hcmdzLmluaXRpYWxNaXhcbiAgaW5cbiAgbGV0IGFzdF9jb21waWxlZF9kYXRhIDogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhID1cbiAgICBMS2FwcGFfY29tcGlsZXIuY29tcGlsX29mX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSB+c3ludGF4X3ZlcnNpb25cbiAgICAgIH52YXJfb3ZlcndyaXRlIGFzdFxuICBpblxuICBsZXQgb3ZlcndyaXRlX2luaXQsIG92ZXJ3cml0ZV90MCA9XG4gICAgbWF0Y2ggaW5pdGlhbE1peCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgZmlsZSAtPlxuICAgICAgbGV0IGNvbXBpbCA9XG4gICAgICAgIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBBc3QuVjQgLT4gS2xleGVyNC5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyIEFzdC5lbXB0eV9jb21waWwgZmlsZVxuICAgICAgICB8IEFzdC5WMyAtPlxuICAgICAgICAgIEthcHBhTGV4ZXIuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciBBc3QuZW1wdHlfY29tcGlsIGZpbGVcbiAgICAgIGluXG4gICAgICBsZXQgY29uZiwgXywgXywgXyA9IENvbmZpZ3VyYXRpb24ucGFyc2UgY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyBpblxuICAgICAgKCBTb21lXG4gICAgICAgICAgKExLYXBwYV9jb21waWxlci5pbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnIGFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXMuTmFtZWREZWNscy5maW5kZXJcbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hbGdfdmFyc19maW5kZXIgY29tcGlsLkFzdC5pbml0KSxcbiAgICAgICAgY29uZi5Db25maWd1cmF0aW9uLmluaXRpYWwgKVxuICBpblxuICB7XG4gICAgY29uZjtcbiAgICBzdG9yeV9jb21wcmVzc2lvbjtcbiAgICBmb3JtYXRDZmxvdztcbiAgICBjZmxvd0ZpbGU7XG4gICAgYXN0X2NvbXBpbGVkX2RhdGE7XG4gICAgb3ZlcndyaXRlX2luaXQ7XG4gICAgb3ZlcndyaXRlX3QwO1xuICB9XG5cbmxldCBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBzeW50YXhfdmVyc2lvbiBmaWxlX2xpc3QgPVxuICBsZXQgY29tcGlsaW5nX2Z1bmN0aW9uID1cbiAgICBtYXRjaCBzeW50YXhfdmVyc2lvbiB3aXRoXG4gICAgfCBBc3QuVjQgLT4gS2xleGVyNC5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gICAgfCBBc3QuVjMgLT4gS2FwcGFMZXhlci5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0IGNvbXBpbGluZ19mdW5jdGlvbiBBc3QuZW1wdHlfY29tcGlsIGZpbGVfbGlzdFxuXG5sZXQgZ2V0X2FzdF9mcm9tX2NsaV9hcmdzIGNsaV9hcmdzID1cbiAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb25cbiAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lc1xuXG5sZXQgZ2V0X3ByZXByb2Nlc3NlZF9hc3RfZnJvbV9jbGlfYXJncyB+d2FybmluZyB+ZGVidWdfbW9kZVxuICAgID8oa2FzaW1fYXJncyA9IEthc2ltX2FyZ3MuZGVmYXVsdCkgY2xpX2FyZ3MgPVxuICBsZXQgYXN0IDpcbiAgICAgICggQXN0LmFnZW50LFxuICAgICAgICBBc3QuYWdlbnRfc2lnLFxuICAgICAgICBBc3QubWl4dHVyZSxcbiAgICAgICAgQXN0Lm1peHR1cmUsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgQXN0LnJ1bGUgKVxuICAgICAgQXN0LmNvbXBpbCA9XG4gICAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb25cbiAgICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5pbnB1dEthcHBhRmlsZU5hbWVzXG4gIGluXG4gIHByZXByb2Nlc3NfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIGNsaV9hcmdzIH5rYXNpbV9hcmdzIGFzdFxuXG50eXBlIGNvbXBpbGF0aW9uX3BhY2sgPSB7XG4gIGNvbXBpbGF0aW9uX3Jlc3VsdDogY29tcGlsYXRpb25fcmVzdWx0O1xuICBhbGdfb3ZlcndyaXRlOiAoaW50ICogUHJpbWl0aXZlcy5hbGdfZXhwcikgbGlzdDtcbiAgb3ZlcndyaXRlX3QwOiBmbG9hdCBvcHRpb247XG59XG5cbmxldCBnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3Qga2FzaW1fYXJncyB+KGNvbXBpbGVfbW9kZV9vbiA6IGJvb2wpXG4gICAgKHByZXByb2Nlc3NlZF9hc3QgOiBwcmVwcm9jZXNzZWRfYXN0KSA6IGNvbXBpbGF0aW9uX3BhY2sgPVxuICBsZXQgbiwgdywgcyA9IHByZXByb2Nlc3NlZF9hc3Quc3RvcnlfY29tcHJlc3Npb24gaW5cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgQ29tcGlsaW5nLi4uQC5cIiBpblxuICBsZXQgZW52LCBoYXNfdHJhY2tpbmcsIGluaXRfbCA9XG4gICAgRXZhbC5jb21waWxlIH5vdXRwdXRzOk91dHB1dHMuZ29cbiAgICAgIH5wYXVzZTooZnVuIGYgLT4gZiAoKSlcbiAgICAgIH5yZXR1cm46KGZ1biB4IC0+IHgpXG4gICAgICB+ZGVidWdfbW9kZTohUGFyYW1ldGVyLmRlYnVnX21vZGVPbiB+c2hhcmluZzprYXNpbV9hcmdzLkthc2ltX2FyZ3Muc2hhcmluZ1xuICAgICAgP3Jlc2NhbGVfaW5pdDprYXNpbV9hcmdzLkthc2ltX2FyZ3MucmVzY2FsZVxuICAgICAgP292ZXJ3cml0ZV9pbml0OnByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX2luaXRcbiAgICAgID9vdmVyd3JpdGVfdDA6cHJlcHJvY2Vzc2VkX2FzdC5vdmVyd3JpdGVfdDAgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnJlc3VsdFxuICBpblxuICBsZXQgc3RvcnlfY29tcHJlc3Npb24gPVxuICAgIGlmIGhhc190cmFja2luZyAmJiAobiB8fCB3IHx8IHMpIHRoZW5cbiAgICAgIFNvbWUgcHJlcHJvY2Vzc2VkX2FzdC5zdG9yeV9jb21wcmVzc2lvblxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgaW5cbiAge1xuICAgIGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gICAgICB7XG4gICAgICAgIGNvbmYgPSBwcmVwcm9jZXNzZWRfYXN0LmNvbmY7XG4gICAgICAgIGVudjtcbiAgICAgICAgY29udGFjdF9tYXAgPSBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwO1xuICAgICAgICB1cGRhdGVkX2FsZ192YXJzID0gcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS51cGRhdGVkX2FsZ192YXJzO1xuICAgICAgICBzdG9yeV9jb21wcmVzc2lvbjtcbiAgICAgICAgZm9ybWF0Q2Zsb3cgPSBwcmVwcm9jZXNzZWRfYXN0LmZvcm1hdENmbG93O1xuICAgICAgICBjZmxvd0ZpbGUgPSBwcmVwcm9jZXNzZWRfYXN0LmNmbG93RmlsZTtcbiAgICAgICAgaW5pdF9sO1xuICAgICAgICBjb3VudGVyX29wdCA9IE5vbmU7XG4gICAgICB9O1xuICAgIGFsZ19vdmVyd3JpdGUgPSBbXTtcbiAgICBvdmVyd3JpdGVfdDAgPSBwcmVwcm9jZXNzZWRfYXN0Lm92ZXJ3cml0ZV90MDtcbiAgfVxuXG5sZXQgZ2V0X3BhY2tfZnJvbV9tYXJzaGFsaXplZGZpbGUgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJncyBtYXJzaGFsaXplZF9maWxlXG4gICAgOiBjb21waWxhdGlvbl9wYWNrID1cbiAgYXNzZXJ0IChtYXJzaGFsaXplZF9maWxlIDw+IFwiXCIpO1xuICB0cnlcbiAgICBsZXQgZCA9IG9wZW5faW5fYmluIG1hcnNoYWxpemVkX2ZpbGUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXMgPD4gW10gdGhlblxuICAgICAgICB3YXJuaW5nIH5wb3M6TG9jLmR1bW15IChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgIFwiU2ltdWxhdGlvbiBwYWNrYWdlIGxvYWRlZCwgYWxsIGthcHBhIGZpbGVzIGFyZSBpZ25vcmVkXCIpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LnByaW50ZiBcIisgTG9hZGluZyBzaW11bGF0aW9uIHBhY2thZ2UgJXMuLi5ALlwiIG1hcnNoYWxpemVkX2ZpbGVcbiAgICBpblxuICAgIGxldCBjb21waWxhdGlvbl9yZXN1bHQgOiBjb21waWxhdGlvbl9yZXN1bHQgPSBNYXJzaGFsLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gU3RkbGliLmNsb3NlX2luIGQgaW5cbiAgICBsZXQgYWxnX292ZXJ3cml0ZSA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIChzLCB2KSAtPlxuICAgICAgICAgICggTW9kZWwubnVtX29mX2FsZyAoTG9jLmFubm90X3dpdGhfZHVtbXkgcykgY29tcGlsYXRpb25fcmVzdWx0LmVudixcbiAgICAgICAgICAgIEFsZ19leHByLkNPTlNUIHYgKSlcbiAgICAgICAga2FzaW1fYXJncy5LYXNpbV9hcmdzLmFsZ192YXJfb3ZlcndyaXRlXG4gICAgaW5cbiAgICBtYXRjaCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuaW5pdGlhbE1peCB3aXRoXG4gICAgfCBOb25lIC0+IHsgY29tcGlsYXRpb25fcmVzdWx0OyBhbGdfb3ZlcndyaXRlOyBvdmVyd3JpdGVfdDAgPSBOb25lIH1cbiAgICB8IFNvbWUgZmlsZSAtPlxuICAgICAgbGV0IGNvbXBpbCA9XG4gICAgICAgIGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uIFsgZmlsZSBdXG4gICAgICBpblxuICAgICAgbGV0IG92ZXJ3cml0ZV90MCA6IGZsb2F0IG9wdGlvbiA9XG4gICAgICAgIChDb25maWd1cmF0aW9uLnBhcnNlIGNvbXBpbC5Bc3QuY29uZmlndXJhdGlvbnMgfD4gZnVuIChhLCBfLCBfLCBfKSAtPiBhKVxuICAgICAgICB8PiBmdW4gY29uZiAtPiBjb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbFxuICAgICAgaW5cblxuICAgICAgbGV0IHJhd19pbml0cyA9XG4gICAgICAgIExLYXBwYV9jb21waWxlci5pbml0X29mX2FzdCB+d2FybmluZ1xuICAgICAgICAgIH5zeW50YXhfdmVyc2lvbjpjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYpXG4gICAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0LmNvbnRhY3RfbWFwXG4gICAgICAgICAgKE1vZGVsLnRva2Vuc19maW5kZXIgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICAoTW9kZWwuYWxnc19maW5kZXIgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICBjb21waWwuQXN0LmluaXRcbiAgICAgIGluXG4gICAgICBsZXQgaW5pdF9sID1cbiAgICAgICAgRXZhbC5jb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH53YXJuaW5nXG4gICAgICAgICAgP3Jlc2NhbGU6a2FzaW1fYXJncy5LYXNpbV9hcmdzLnJlc2NhbGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZVxuICAgICAgICAgIGNvbXBpbGF0aW9uX3Jlc3VsdC5jb250YWN0X21hcCBjb21waWxhdGlvbl9yZXN1bHQuZW52IHJhd19pbml0c1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0ID0geyBjb21waWxhdGlvbl9yZXN1bHQgd2l0aCBpbml0X2wgfTtcbiAgICAgICAgYWxnX292ZXJ3cml0ZTtcbiAgICAgICAgb3ZlcndyaXRlX3QwO1xuICAgICAgfVxuICB3aXRoXG4gIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCBfIGFzIGUgLT4gcmFpc2UgZVxuICB8IF9leG4gLT5cbiAgICBGb3JtYXQucHJpbnRmXG4gICAgICBcIlNpbXVsYXRpb24gcGFja2FnZSBzZWVtcyB0byBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIGEgZGlmZmVyZW50IHZlcnNpb24gXFxcbiAgICAgICBvZiBLYVNpbSwgYWJvcnRpbmcuLi5cIjtcbiAgICBleGl0IDFcblxubGV0IGdldF9jb21waWxhdGlvbl9mcm9tX3BhY2sgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJnc1xuICAgIChwYWNrIDogY29tcGlsYXRpb25fcGFjaykgOiBjb21waWxhdGlvbl9yZXN1bHQgPVxuICBsZXQgaW5pdF90X2Zyb21fZmlsZXMgPVxuICAgIE9wdGlvbl91dGlsLnVuc29tZVxuICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSAwLiBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbClcbiAgICAgIHBhY2sub3ZlcndyaXRlX3QwXG4gIGluXG4gIGxldCBpbml0X3QsIG1heF90aW1lLCBpbml0X2UsIG1heF9ldmVudCwgcGxvdF9wZXJpb2QgPVxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy51bml0IHdpdGhcbiAgICB8IEthc2ltX2FyZ3MuVGltZSAtPlxuICAgICAgKCBPcHRpb25fdXRpbC51bnNvbWUgaW5pdF90X2Zyb21fZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLm1pblZhbHVlLFxuICAgICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWF4VmFsdWUsXG4gICAgICAgIE5vbmUsXG4gICAgICAgIE5vbmUsXG4gICAgICAgIChtYXRjaCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MucGxvdFBlcmlvZCB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IENvbmZpZ3VyYXRpb24uRFQgYVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgKENvbmZpZ3VyYXRpb24uRFQgMS4pXG4gICAgICAgICAgICBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24ucGxvdFBlcmlvZCkgKVxuICAgIHwgS2FzaW1fYXJncy5FdmVudCAtPlxuICAgICAgKCBpbml0X3RfZnJvbV9maWxlcyxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgU29tZVxuICAgICAgICAgIChpbnRfb2ZfZmxvYXQgKE9wdGlvbl91dGlsLnVuc29tZSAwLiBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWluVmFsdWUpKSxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwIGludF9vZl9mbG9hdCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWF4VmFsdWUsXG4gICAgICAgIChtYXRjaCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MucGxvdFBlcmlvZCB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IENvbmZpZ3VyYXRpb24uREUgKGludF9vZl9mbG9hdCAoY2VpbCBhKSlcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwudW5zb21lIChDb25maWd1cmF0aW9uLkRFIDEpXG4gICAgICAgICAgICBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24ucGxvdFBlcmlvZCkgKVxuICBpblxuICBsZXQgY291bnRlciA9XG4gICAgQ291bnRlci5jcmVhdGUgfmluaXRfdCA/aW5pdF9lID9tYXhfdGltZSA/bWF4X2V2ZW50IH5wbG90X3BlcmlvZFxuICAgICAgfm5iX3J1bGVzOihNb2RlbC5uYl9ydWxlcyBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYpXG4gICAgICAoKVxuICBpblxuICBsZXQgZW52ID1cbiAgICBpZlxuICAgICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmJhdGNobW9kZVxuICAgICAgJiYga2FzaW1fYXJncy5LYXNpbV9hcmdzLm1hcnNoYWxpemVPdXRGaWxlID0gTm9uZVxuICAgIHRoZW5cbiAgICAgIE1vZGVsLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWU6KENvdW50ZXIubWF4X3RpbWUgY291bnRlcilcbiAgICAgICAgP21heF9ldmVudHM6KENvdW50ZXIubWF4X2V2ZW50cyBjb3VudGVyKVxuICAgICAgICB+dXBkYXRlZF92YXJzOnBhY2suY29tcGlsYXRpb25fcmVzdWx0LnVwZGF0ZWRfYWxnX3ZhcnNcbiAgICAgICAgfmFsZ19vdmVyd3JpdGU6cGFjay5hbGdfb3ZlcndyaXRlIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudlxuICAgIGVsc2VcbiAgICAgIE1vZGVsLm92ZXJ3cml0ZV92YXJzIHBhY2suYWxnX292ZXJ3cml0ZSBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5lbnZcbiAgaW5cbiAgeyBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdCB3aXRoIGVudjsgY291bnRlcl9vcHQgPSBTb21lIGNvdW50ZXIgfVxuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCB+d2FybmluZyA/KGNvbXBpbGVfbW9kZV9vbiA9IGZhbHNlKVxuICAgID8oa2FzaW1fYXJncyA9IEthc2ltX2FyZ3MuZGVmYXVsdCkgY2xpX2FyZ3MgcHJlcHJvY2Vzc2VkX2FzdCA6XG4gICAgY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgbGV0IHBhY2sgPVxuICAgIGdldF9wYWNrX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCBrYXNpbV9hcmdzIH5jb21waWxlX21vZGVfb24gcHJlcHJvY2Vzc2VkX2FzdFxuICBpblxuICBnZXRfY29tcGlsYXRpb25fZnJvbV9wYWNrIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3MgcGFja1xuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uIH53YXJuaW5nIH5kZWJ1Z19tb2RlID8oY29tcGlsZV9tb2RlX29uID0gZmFsc2UpXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gIGxldCAocGFjayA6IGNvbXBpbGF0aW9uX3BhY2spID1cbiAgICBtYXRjaCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MubWFyc2hhbGl6ZWRJbkZpbGUgd2l0aFxuICAgIHwgXCJcIiAtPlxuICAgICAgbGV0IHByZXByb2Nlc3NlZF9hc3QgPVxuICAgICAgICBnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV9hcmdzIH53YXJuaW5nIH5kZWJ1Z19tb2RlIGNsaV9hcmdzXG4gICAgICBpblxuICAgICAgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3MgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgICBwcmVwcm9jZXNzZWRfYXN0XG4gICAgfCBtYXJzaGFsaXplZF9maWxlIC0+XG4gICAgICBnZXRfcGFja19mcm9tX21hcnNoYWxpemVkZmlsZSB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgICAgIG1hcnNoYWxpemVkX2ZpbGVcbiAgaW5cbiAgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzIHBhY2tcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBkZWxpbWl0ZXI6IGNoYXIgfVxuXG5sZXQgZGVmYXVsdCA6IHQgPSB7IGRlbGltaXRlciA9IFRvb2xzLmRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlciB9XG5cbmxldCBvcHRpb25zICh0IDogdCkgOiAoc3RyaW5nICogQXJnLnNwZWMgKiBzdHJpbmcpIGxpc3QgPVxuICBbXG4gICAgKCBcIi0tZGVsaW1pdGVyXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGQgPSBTY2FuZi51bmVzY2FwZWQgZCBpblxuICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICBpZiAxID0gU3RyaW5nLmxlbmd0aCBkIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuZ2V0IGQgMFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJkZWxpbWV0ZXIgaGFzIG11bHRpcGxlIGNoYXJhY3RlcnMgJyVzJ1wiIGQpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHQuZGVsaW1pdGVyIDwtIGQgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgd2l0aCBTY2FuZi5TY2FuX2ZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgcmFpc2UgKEFyZy5CYWQgKEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHBhcnNlIGRlbGltZXRlciAnJXMnXCIgZCkpKSxcbiAgICAgIFwiRGVsaW1pdGVyIGZvciBtZXNzYWdlIHBhc3NpbmdcIiApO1xuICBdXG4iLCIoKipcbiAgKiBsb2dnZXJzLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI2LzAxLzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBlbmNvZGluZyA9XG4gIHwgTWF0cml4XG4gIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoXG4gIHwgSFRNTFxuICB8IEhUTUxfVGFidWxhclxuICB8IERPVFxuICB8IFRYVFxuICB8IFRYVF9UYWJ1bGFyXG4gIHwgWExTXG4gIHwgT2N0YXZlXG4gIHwgTWF0bGFiXG4gIHwgTWFwbGVcbiAgfCBNYXRoZW1hdGljYVxuICB8IFNCTUxcbiAgfCBET1RORVRcbiAgfCBKc29uXG4gIHwgR0VQSElcblxubW9kdWxlIHR5cGUgRm9ybWF0TWFwID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBhZGQgOiBlbmNvZGluZyAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbmQgOiBlbmNvZGluZyAtPiAnYSB0IC0+ICdhXG4gIHZhbCBlbXB0eSA6ICdhIHRcbmVuZFxuXG5tb2R1bGUgRm9ybWF0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBlbmNvZGluZ1xuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuZW5kKVxuXG50eXBlIHRva2VuID0gU3RyaW5nIG9mIHN0cmluZyB8IEJyZWFrYWJsZV9zcGFjZSB8IEJyZWFrYWJsZV9oaW50XG5cbnR5cGUgbG9nZ2VyID1cbiAgfCBERVZOVUxcbiAgfCBGb3JtYXR0ZXIgb2YgRm9ybWF0LmZvcm1hdHRlclxuICB8IENpcmN1bGFyX2J1ZmZlciBvZiBzdHJpbmcgQ2lyY3VsYXJfYnVmZmVycy50IHJlZlxuICB8IEluZmluaXRlX2J1ZmZlciBvZiBzdHJpbmcgSW5maW5pdGVfYnVmZmVycy50IHJlZlxuXG5sZXQgYnJlYWthYmxlIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBIVE1MX1RhYnVsYXIgfCBIVE1MIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgVFhUIC0+IHRydWVcbiAgfCBNYXRyaXggfCBKc29uIHwgTWF0aGVtYXRpY2EgfCBNYXRsYWIgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVQgfCBET1RcbiAgfCBHRVBISSB8IFRYVF9UYWJ1bGFyIHwgWExTIC0+XG4gICAgZmFsc2VcblxudHlwZSB0ID0ge1xuICBlbmNvZGluZzogZW5jb2Rpbmc7XG4gIGxvZ2dlcjogbG9nZ2VyO1xuICBjaGFubmVsX29wdDogb3V0X2NoYW5uZWwgb3B0aW9uO1xuICBtdXRhYmxlIGN1cnJlbnRfbGluZTogdG9rZW4gbGlzdDtcbn1cblxubGV0IGdldF9lbmNvZGluZ19mb3JtYXQgdCA9IHQuZW5jb2RpbmdcblxubGV0IGR1bW15X2h0bWxfbG9nZ2VyID1cbiAge1xuICAgICgqICBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5IDsqKVxuICAgIGVuY29kaW5nID0gSFRNTDtcbiAgICBsb2dnZXIgPSBERVZOVUw7XG4gICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgICAgbm9kZXMgPSByZWYgW107XG4gICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgfVxuXG5sZXQgZHVtbXlfdHh0X2xvZ2dlciA9XG4gIHtcbiAgICAoKiAgaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eSA7KilcbiAgICBlbmNvZGluZyA9IFRYVDtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgbG9nZ2VyID0gREVWTlVMO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgICAgbm9kZXMgPSByZWYgW107XG4gICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgfVxuXG4oKiBXYXJuaW5nLCB3ZSBoYXZlIHRvIGtlZXAgdGhlIGNoYXJhY3RlciBAIHdoZW4gaXQgaXMgZm9sbG93ZWQgYnkgYSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgYSBkaWdpdCBzaG91bGQgYmUgcHJlc2VydmVkICopXG5cbmxldCBkdW1wX2NsZWFuX3N0cmluZyBmbXQgPVxuICBTdHJpbmcuaXRlciAoZnVuIGEgLT5cbiAgICAgIGlmIGEgPSAnXFxuJyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVjXCIgYSlcblxubGV0IGNsZWFuX3N0cmluZyBzID1cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZmZlciBpblxuICBsZXQgKCkgPSBkdW1wX2NsZWFuX3N0cmluZyBmbXRfYnVmZmVyIHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlclxuXG5sZXQgY2xlYW4gZm10ID1cbiAgbGV0IHMgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgbGV0IGZtdF9idWZmZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBzIGluXG4gIEZvcm1hdC5rZnByaW50ZlxuICAgIChmdW4gXyAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgICAgIGR1bXBfY2xlYW5fc3RyaW5nIGZtdCAoQnVmZmVyLmNvbnRlbnRzIHMpKVxuICAgIGZtdF9idWZmZXJcblxubGV0IGZwcmludGYgPyhmcHJpbnRuZXdsaW5lID0gZmFsc2UpIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIsIGZwcmludG5ld2xpbmUgfHwgYnJlYWthYmxlIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgREVWTlVMLCBfIC0+IEZvcm1hdC5pZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlclxuICB8IEZvcm1hdHRlciBmbXQsIHRydWUgLT4gRm9ybWF0LmZwcmludGYgZm10XG4gIHwgRm9ybWF0dGVyIGZtdCwgZmFsc2UgLT4gY2xlYW4gZm10XG4gIHwgQ2lyY3VsYXJfYnVmZmVyIF8sIGJvb2wgfCBJbmZpbml0ZV9idWZmZXIgXywgYm9vbCAtPlxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gICAgbGV0IGZtdF9idWZmZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gICAgRm9ybWF0LmtmcHJpbnRmXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgICAgICAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC1cbiAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgIChpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGNsZWFuX3N0cmluZyBzdHIpXG4gICAgICAgICAgOjogbG9nZ2VyLmN1cnJlbnRfbGluZSlcbiAgICAgIGZtdF9idWZmZXJcblxubGV0IHByaW50X2JyZWFrYWJsZV9zcGFjZSBsb2dnZXIgPVxuICBpZiBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHRoZW4gKFxuICAgIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICAgIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gZnByaW50ZiBsb2dnZXIgXCJAIFwiXG4gICAgfCBDaXJjdWxhcl9idWZmZXIgXyB8IEluZmluaXRlX2J1ZmZlciBfIC0+XG4gICAgICBsb2dnZXIuY3VycmVudF9saW5lIDwtIEJyZWFrYWJsZV9zcGFjZSA6OiBsb2dnZXIuY3VycmVudF9saW5lXG4gICkgZWxzZVxuICAgIGZwcmludGYgbG9nZ2VyIFwiIFwiXG5cbmxldCBwcmludF9icmVha2FibGVfaGludCBsb2dnZXIgPVxuICBpZiBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHRoZW4gKFxuICAgIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICAgIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gZnByaW50ZiBsb2dnZXIgXCJALFwiXG4gICAgfCBDaXJjdWxhcl9idWZmZXIgXyB8IEluZmluaXRlX2J1ZmZlciBfIC0+XG4gICAgICBsb2dnZXIuY3VycmVudF9saW5lIDwtIEJyZWFrYWJsZV9oaW50IDo6IGxvZ2dlci5jdXJyZW50X2xpbmVcbiAgKSBlbHNlXG4gICAgZnByaW50ZiBsb2dnZXIgXCJcIlxuXG5sZXQgZW5kX29mX2xpbmVfc3ltYm9sIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTCB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCAtPiBcIjxCcj5cIlxuICB8IE1hdHJpeCB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUIHwgSnNvblxuICB8IEdFUEhJIHwgSFRNTF9UYWJ1bGFyIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICBcIlwiXG5cbmxldCBkdW1wX3Rva2VuIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBzXG4gIHwgQnJlYWthYmxlX3NwYWNlIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAIFwiXG4gIHwgQnJlYWthYmxlX2hpbnQgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAsXCJcblxubGV0IHByaW50X25ld2xpbmUgbG9nZ2VyID1cbiAgbGV0ICgpID1cbiAgICBmcHJpbnRmIH5mcHJpbnRuZXdsaW5lOnRydWUgbG9nZ2VyIFwiJXMldFwiIChlbmRfb2ZfbGluZV9zeW1ib2wgbG9nZ2VyKVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIGYgKCkpXG4gIGluXG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGJmIC0+XG4gICAgbGV0IGJmJyA9XG4gICAgICBDaXJjdWxhcl9idWZmZXJzLmFkZFxuICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAoUHAubGlzdCAoZnVuIF8gLT4gKCkpIGR1bXBfdG9rZW4pXG4gICAgICAgICAgIChMaXN0LnJldiBsb2dnZXIuY3VycmVudF9saW5lKSlcbiAgICAgICAgIWJmXG4gICAgaW5cbiAgICBsZXQgKCkgPSBiZiA6PSBiZicgaW5cbiAgICBsZXQgKCkgPSBsb2dnZXIuY3VycmVudF9saW5lIDwtIFtdIGluXG4gICAgKClcbiAgfCBJbmZpbml0ZV9idWZmZXIgYmYgLT5cbiAgICBsZXQgYmYnID1cbiAgICAgIEluZmluaXRlX2J1ZmZlcnMuYWRkXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgIChQcC5saXN0IChmdW4gXyAtPiAoKSkgZHVtcF90b2tlbilcbiAgICAgICAgICAgKExpc3QucmV2IGxvZ2dlci5jdXJyZW50X2xpbmUpKVxuICAgICAgICAhYmZcbiAgICBpblxuICAgIGxldCAoKSA9IGJmIDo9IGJmJyBpblxuICAgIGxldCAoKSA9IGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gW10gaW5cbiAgICAoKVxuXG5sZXQgcHJpbnRfY2VsbCBsb2dnZXIgcyA9XG4gIGxldCBvcGVuX2NlbGxfc3ltYm9sLCBjbG9zZV9jZWxsX3N5bWJvbCA9XG4gICAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgICB8IEhUTUxfVGFidWxhciAtPiBcIjxURD5cIiwgXCI8L1REPlwiXG4gICAgfCBUWFRfVGFidWxhciAtPiBcIlwiLCBcIlxcdFwiXG4gICAgfCBNYXRyaXggfCBHRVBISSB8IEpzb24gfCBNYXRoZW1hdGljYSB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTFxuICAgIHwgRE9UTkVUIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgSFRNTCB8IERPVCB8IFRYVCB8IFhMUyAtPlxuICAgICAgXCJcIiwgXCJcIlxuICBpblxuICBmcHJpbnRmIGxvZ2dlciBcIiVzJXMlc1wiIG9wZW5fY2VsbF9zeW1ib2wgcyBjbG9zZV9jZWxsX3N5bWJvbFxuXG5sZXQgZmx1c2hfbG9nZ2VyIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCAtPiAoKVxuICB8IEZvcm1hdHRlciBmbXQgLT4gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT4gKClcblxubGV0IGNsb3NlX2xvZ2dlciBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gICAgfCBIVE1MIC0+IGZwcmludGYgbG9nZ2VyIFwiPC9kaXY+XFxuPC9ib2R5PlxcblwiXG4gICAgfCBIVE1MX1RhYnVsYXIgLT4gZnByaW50ZiBsb2dnZXIgXCI8L1RBQkxFPlxcbjwvZGl2PlxcbjwvYm9keT5cIlxuICAgIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwifVxcblwiXG4gICAgfCBHRVBISSB8IEpzb24gfCBNYXRsYWIgfCBNYXRoZW1hdGljYSB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVFxuICAgIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICAgICgpXG4gIGluXG4gIGxldCAoKSA9IGZsdXNoX2xvZ2dlciBsb2dnZXIgaW5cbiAgKClcblxubGV0IHByaW50X3ByZWFtYmxlIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTCAtPiBmcHJpbnRmIGxvZ2dlciBcIjxib2R5PlxcbjxkaXY+XFxuXCJcbiAgfCBIVE1MX1RhYnVsYXIgLT4gZnByaW50ZiBsb2dnZXIgXCI8Ym9keT5cXG48ZGl2PlxcbjxUQUJMRT5cXG5cIlxuICB8IE1hdHJpeCAtPlxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwie1wiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBmcHJpbnRmIGxvZ2dlciBcIlxcXCJiaW9CZWdpblRpbWVcXFwiIDogMC4wMDAwMDBlKzAwLFwiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBmcHJpbnRmIGxvZ2dlciBcIlxcXCJiaW9FbmRUaW1lXFxcIiA6IDAuMDAwMDAwZSswMCxcIiBpblxuICAgIGxldCAoKSA9IHByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgKClcbiAgfCBHRVBISSB8IEpzb24gfCBNYXRsYWIgfCBNYXRoZW1hdGljYSB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVFxuICB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgWExTIC0+XG4gICAgKClcblxubGV0IG9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCA/KG1vZGUgPSBUWFQpIGNoYW5uZWwgPVxuICBsZXQgZm9ybWF0dGVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFubmVsIGluXG4gIGxldCBsb2dnZXIgPVxuICAgIHtcbiAgICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgICBsb2dnZXIgPSBGb3JtYXR0ZXIgZm9ybWF0dGVyO1xuICAgICAgY2hhbm5lbF9vcHQgPSBTb21lIGNoYW5uZWw7XG4gICAgICBlbmNvZGluZyA9IG1vZGU7XG4gICAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfcHJlYW1ibGUgbG9nZ2VyIGluXG4gIGxvZ2dlclxuXG5sZXQgb3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgPyhtb2RlID0gVFhUKSBmb3JtYXR0ZXIgPVxuICBsZXQgbG9nZ2VyID1cbiAgICB7XG4gICAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgICAgbG9nZ2VyID0gRm9ybWF0dGVyIGZvcm1hdHRlcjtcbiAgICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX2NpcmN1bGFyX2J1ZmZlciA/KG1vZGUgPSBUWFQpID8oc2l6ZSA9IDEwKSAoKSA9XG4gIHtcbiAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICBsb2dnZXIgPSBDaXJjdWxhcl9idWZmZXIgKHJlZiAoQ2lyY3VsYXJfYnVmZmVycy5jcmVhdGUgc2l6ZSBcIlwiKSk7XG4gICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbmxldCBvcGVuX2luZmluaXRlX2J1ZmZlciA/KG1vZGUgPSBUWFQpICgpID1cbiAgbGV0IGxvZ2dlciA9XG4gICAge1xuICAgICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICAgIGxvZ2dlciA9IEluZmluaXRlX2J1ZmZlciAocmVmIChJbmZpbml0ZV9idWZmZXJzLmNyZWF0ZSAwIFwiXCIpKTtcbiAgICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX3JvdyBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjx0cj5cIlxuICB8IE1hdHJpeCAtPiBmcHJpbnRmIGxvZ2dlciBcIltcIlxuICB8IEpzb24gfCBNYXRsYWIgfCBPY3RhdmUgfCBNYXRoZW1hdGljYSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVCB8IEhUTUxfR3JhcGhcbiAgfCBKc19HcmFwaCB8IFhMUyB8IEhUTUwgfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IEdFUEhJIC0+XG4gICAgKClcblxubGV0IGNsb3NlX3JvdyBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjx0cj5ALlwiXG4gIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwiXVxcblwiXG4gIHwgSnNvbiB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgTWF0aGVtYXRpY2EgfCBTQk1MIHwgRE9UTkVUIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoIHwgWExTIHwgSFRNTCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgR0VQSEkgLT5cbiAgICBmcHJpbnRmIGxvZ2dlciBcIkAuXCJcblxubGV0IGZvcm1hdHRlcl9vZl9sb2dnZXIgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgRm9ybWF0dGVyIGZtdCAtPiBTb21lIGZtdFxuICB8IERFVk5VTCB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT4gTm9uZVxuXG5sZXQgcmVkaXJlY3QgbG9nZ2VyIGZtdCA9IHsgbG9nZ2VyIHdpdGggbG9nZ2VyID0gRm9ybWF0dGVyIGZtdCB9XG5sZXQgcHJpbnRfYXNfbG9nZ2VyIGxvZ2dlciBmID0gZnByaW50ZiBsb2dnZXIgXCIldFwiIGZcblxubGV0IGZsdXNoX2J1ZmZlciBsb2dnZXIgZm10ID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgYSAtPiBDaXJjdWxhcl9idWZmZXJzLml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gSW5maW5pdGVfYnVmZmVycy5pdGVyIChGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiKSAhYlxuXG5sZXQgZmx1c2hfYW5kX2NsZWFuIGxvZ2dlciBmbXQgPVxuICBsZXQgKCkgPSBmbHVzaF9idWZmZXIgbG9nZ2VyIGZtdCBpblxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBhIC0+IGEgOj0gQ2lyY3VsYXJfYnVmZmVycy5jbGVhbiAhYVxuICB8IEluZmluaXRlX2J1ZmZlciBiIC0+IGIgOj0gSW5maW5pdGVfYnVmZmVycy5jbGVhbiAhYlxuXG5sZXQgZnByaW50ZiBsb2dnZXIgPSBmcHJpbnRmIH5mcHJpbnRuZXdsaW5lOmZhbHNlIGxvZ2dlclxubGV0IGNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciA9IGxvZ2dlci5jaGFubmVsX29wdFxuXG5sZXQgcHJpbnRfYmluZGluZ190eXBlIHQgPyhiaW5kaW5nX3R5cGVfc3ltYm9sID0gXCIuXCIpIH5hZ2VudF9uYW1lIH5zaXRlX25hbWUgKClcbiAgICA9XG4gIGZwcmludGYgdCBcIiVzXCJcbiAgICAoUHVibGljX2RhdGEuc3RyaW5nX29mX2JpbmRpbmdfdHlwZSB+YmluZGluZ190eXBlX3N5bWJvbCB+YWdlbnRfbmFtZVxuICAgICAgIH5zaXRlX25hbWUgKCkpXG5cbmxldCBkdW1wX2pzb24gbG9nZ2VyIGpzb24gPVxuICBsZXQgY2hhbm5lbF9vcHQgPSBjaGFubmVsX29mX2xvZ2dlciBsb2dnZXIgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBjaGFubmVsX29wdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGNoYW5uZWwgLT5cbiAgICAgIGxldCAoKSA9IFlvanNvbi5CYXNpYy50b19jaGFubmVsIGNoYW5uZWwganNvbiBpblxuICAgICAgKClcbiAgaW5cbiAgKClcblxubGV0IGxpbmVfdG9fanNvbiBsaW5lID0gYEFzc29jIFsgXCJsaW5lXCIsIEpzb25VdGlsLm9mX3N0cmluZyBsaW5lIF1cblxubGV0IGxpbmVfb2ZfanNvbiBqc29uID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIFsgKFwibGluZVwiLCBgU3RyaW5nIHMpIF0gLT4gc1xuICB8IF8gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxpbmVcIiwganNvbikpXG5cbmxldCBnZW5faXRlciBpdGVyIGxpc3QgPVxuICBsZXQgb3V0cHV0ID0gcmVmIFtdIGluXG4gIGxldCAoKSA9IGl0ZXIgKGZ1biBsaW5lIC0+IG91dHB1dCA6PSBsaW5lIDo6ICFvdXRwdXQpIGxpc3QgaW5cbiAgSnNvblV0aWwub2ZfbGlzdCBsaW5lX3RvX2pzb24gKExpc3QucmV2ICFvdXRwdXQpXG5cbmxldCBvZl9qc29uID0gSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGluZSBsaXN0XCIgbGluZV9vZl9qc29uXG5cbmxldCB0b19qc29uIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+IGBMaXN0IFtdXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGEgLT4gZ2VuX2l0ZXIgQ2lyY3VsYXJfYnVmZmVycy5pdGVyICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gZ2VuX2l0ZXIgSW5maW5pdGVfYnVmZmVycy5pdGVyICFiXG4iLCJsZXQgc3RyaW5nX29mX3VuX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5VTUlOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW51cy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiLVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5MT0cgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxsb2cvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImxvZ1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TUVJUIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cm9vdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwic3FydFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5FWFAgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxleHAvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImV4cFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHNpbi8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwic2luXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkNPU0lOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxjb3MvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImNvc1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjx0YW4vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcInRhblwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5JTlQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxmbG9vci8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiZmxvb3JcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfY29tcGFyZV9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuRVFVQUwgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxlcS8+XCJcbiAgICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgLT4gXCI9PVwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+IFwiPVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bmVxLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCIhPVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TTUFMTEVSIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bHQvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIjxcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuR1JFQVRFUiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGd0Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCI+XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX2Jpbl9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuTU9EVUxPIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cmVtLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtb2RcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUFYIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bWF4Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtYXhcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUlOIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bWluLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtaW5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8ZGl2aWRlLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCIvXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNVTSAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHBsdXMvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIitcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUlOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW51cy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiLVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NVUxUIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8dGltZXMvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIipcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cG93ZXIvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIioqXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX2Jpbl9ib29sX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5BTkQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxhbmQvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIiZcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuT1IgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxvci8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwifFwiXG4gICAgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl91bl9ib29sX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5OT1QgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxub3QvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIiFcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4iLCIoKipcbiAgKiBncmFwaF9sb2dnZXJzX3NpZy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgZGlyZWN0aW9uID0gRGlyZWN0IHwgUmV2ZXJzZSB8IFVuZGlyZWN0ZWQgfCBCb3RoXG50eXBlIHNoYXBlID0gSW52aXNpYmxlIHwgSG91c2UgfCBSZWN0IHwgRWxsaXBzZSB8IENpcmNsZSB8IEludmhvdXNlXG50eXBlIGhlYWRraW5kID0gTm9ybWFsIHwgVmVlIHwgVGVlIHwgTm9faGVhZFxudHlwZSBsaW5lc3R5bGUgPSBQbGFpbiB8IERvdHRlZCB8IERhc2hlZFxuXG50eXBlIGNvbG9yID1cbiAgfCBSZWRcbiAgfCBHcmVlblxuICB8IFdoaXRlXG4gIHwgQmx1ZVxuICB8IEJsYWNrXG4gIHwgTGlnaHRTa3lCbHVlXG4gIHwgUGFsZUdyZWVuXG4gIHwgQnJvd25cbiAgfCBZZWxsb3dcbiAgfCBHcmV5XG5cbnR5cGUgb3B0aW9ucyA9XG4gIHwgQ29sb3Igb2YgY29sb3JcbiAgfCBGaWxsQ29sb3Igb2YgY29sb3JcbiAgfCBMYWJlbCBvZiBzdHJpbmdcbiAgfCBXaWR0aCBvZiBpbnQgKCpwaXhlbCopXG4gIHwgSGVpZ2h0IG9mIGludCAoKnBpeGVsKilcbiAgfCBEaXJlY3Rpb24gb2YgZGlyZWN0aW9uXG4gIHwgU2hhcGUgb2Ygc2hhcGVcbiAgfCBBcnJvd0hlYWQgb2YgaGVhZGtpbmRcbiAgfCBBcnJvd1RhaWwgb2YgaGVhZGtpbmRcbiAgfCBMaW5lU3R5bGUgb2YgbGluZXN0eWxlXG4gIHwgT25DbGljayBvZiBZb2pzb24uQmFzaWMudFxuICB8IENvbnRleHR1YWxfaGVscCBvZiBzdHJpbmdcbiAgfCBQb3NpdGlvbiBvZiBMb2MudCBsaXN0XG5cbnR5cGUgZ3JhcGggPVxuICAoc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0ICogKHN0cmluZyAqIHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdFxuXG50eXBlIHQgPSB7XG4gIGxvZ2dlcjogTG9nZ2Vycy50O1xuICBpZF9tYXA6IGludCBNb2RzLlN0cmluZ01hcC50IHJlZjtcbiAgZnJlc2hfaWQ6IGludCByZWY7XG4gIG5vZGVzOiAoc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0IHJlZjtcbiAgZWRnZXM6IChzdHJpbmcgKiBzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgcmVmO1xuICBlZGdlc19tYXA6IG9wdGlvbnMgbGlzdCBsaXN0IE1vZHMuU3RyaW5nMk1hcC50IHJlZjtcbn1cblxubGV0IGxpZnQgdCA9IHQubG9nZ2VyXG5cbmxldCBleHRlbmRfbG9nZ2VyIGxvZ2dlciA9XG4gIHtcbiAgICBsb2dnZXI7XG4gICAgaWRfbWFwID0gcmVmIE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgbm9kZXMgPSByZWYgW107XG4gICAgZWRnZXMgPSByZWYgW107XG4gICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTtcbiAgfVxuXG5sZXQgcmVmcmVzaF9pZCB0ID1cbiAgbGV0ICgpID0gdC5pZF9tYXAgOj0gTW9kcy5TdHJpbmdNYXAuZW1wdHkgaW5cbiAgbGV0ICgpID0gdC5ub2RlcyA6PSBbXSBpblxuICBsZXQgKCkgPSB0LmVkZ2VzIDo9IFtdIGluXG4gIGxldCAoKSA9IHQuZnJlc2hfaWQgOj0gMSBpblxuICAoKVxuXG5sZXQgYWRkX25vZGUgdCBzIGQgPSB0Lm5vZGVzIDo9IChzLCBkKSA6OiAhKHQubm9kZXMpXG5cbmxldCBhZGRfZWRnZSB0IHMxIHMyIGQgPVxuICBsZXQgKCkgPSB0LmVkZ2VzIDo9IChzMSwgczIsIGQpIDo6ICEodC5lZGdlcykgaW5cbiAgbGV0IG1hcCA9ICEodC5lZGdlc19tYXApIGluXG4gIGxldCBvbGRfbGlzdCA9XG4gICAgbWF0Y2ggTW9kcy5TdHJpbmcyTWFwLmZpbmRfb3B0aW9uIChzMSwgczIpIG1hcCB3aXRoXG4gICAgfCBTb21lIGwgLT4gbFxuICAgIHwgTm9uZSAtPiBbXVxuICBpblxuICBsZXQgKCkgPSB0LmVkZ2VzX21hcCA6PSBNb2RzLlN0cmluZzJNYXAuYWRkIChzMSwgczIpIChkIDo6IG9sZF9saXN0KSBtYXAgaW5cbiAgKClcblxubGV0IGdyYXBoX29mX2xvZ2dlciBsb2dnZXIgPSBMaXN0LnJldiAhKGxvZ2dlci5ub2RlcyksIExpc3QucmV2ICEobG9nZ2VyLmVkZ2VzKVxubGV0IGdldF9lZGdlX21hcCB0ID0gISh0LmVkZ2VzX21hcClcbmxldCBnZXRfbm9kZXMgdCA9ICEodC5ub2RlcylcbmxldCBmcmVzaF9pZCBsb2dnZXIgPSBUb29scy5nZXRfcmVmIGxvZ2dlci5mcmVzaF9pZFxuXG5sZXQgaW50X29mX3N0cmluZ19pZCBsb2dnZXIgc3RyaW5nID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gc3RyaW5nICEobG9nZ2VyLmlkX21hcCkgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIGxldCBpID0gZnJlc2hfaWQgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gbG9nZ2VyLmlkX21hcCA6PSBNb2RzLlN0cmluZ01hcC5hZGQgc3RyaW5nIGkgIShsb2dnZXIuaWRfbWFwKSBpblxuICAgIGlcbiIsIigqKlxuICAqIGdyYXBoX2xvZ2dlcnMubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjMvMDUvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZG90X2NvbG9yX2VuY29kaW5nIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gXCJncmV5XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgLT4gXCJyZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IFwiZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IFwid2hpdGVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gXCJibHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBcImJsYWNrXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gXCIjODdjZWViXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gXCIjOThmYjk4XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBcImJyb3duXCJcblxubGV0IHN2Z19jb2xvcl9lbmNvZGluZyB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93IC0+IFwiI2ZmM1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBcIiNhYWFcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBcIiNmMDBcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IFwiIzBmMFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gXCIjZmZmXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IFwiIzAwZlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gXCIjMDAwXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gXCIjOGNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gXCIjOWY5XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBcIiNmYzlcIlxuXG50eXBlIG5vZGVfYXR0cmlidXRlID0ge1xuICBub2RlX2NvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIG5vZGVfZmlsbGNvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIG5vZGVfbGFiZWw6IHN0cmluZyBvcHRpb247XG4gIG5vZGVfd2lkdGg6IGludCBvcHRpb247XG4gIG5vZGVfaGVpZ2h0OiBpbnQgb3B0aW9uO1xuICBub2RlX3NoYXBlOiBHcmFwaF9sb2dnZXJzX3NpZy5zaGFwZSBvcHRpb247XG4gIG5vZGVfcG9zaXRpb25zOiBMb2MudCBsaXN0O1xuICBub2RlX2NvbnRleHR1YWxfaGVscDogc3RyaW5nIG9wdGlvbjtcbiAgbm9kZV9vbl9jbGljazogWW9qc29uLkJhc2ljLnQgb3B0aW9uO1xufVxuXG50eXBlIGVkZ2VfYXR0cmlidXRlID0ge1xuICBlZGdlX2NvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIGVkZ2VfbGFiZWw6IHN0cmluZyBsaXN0IG9wdGlvbjtcbiAgZWRnZV9zdHlsZTogR3JhcGhfbG9nZ2Vyc19zaWcubGluZXN0eWxlO1xuICBlZGdlX2RpcmVjdGlvbjogR3JhcGhfbG9nZ2Vyc19zaWcuZGlyZWN0aW9uO1xuICBlZGdlX2Fycm93aGVhZDogR3JhcGhfbG9nZ2Vyc19zaWcuaGVhZGtpbmQ7XG4gIGVkZ2VfYXJyb3d0YWlsOiBHcmFwaF9sb2dnZXJzX3NpZy5oZWFka2luZDtcbiAgZWRnZV9wb3NpdGlvbnM6IExvYy50IGxpc3Q7XG4gIGVkZ2VfY29udGV4dHVhbF9oZWxwOiBzdHJpbmcgb3B0aW9uO1xuICBlZGdlX29uX2NsaWNrOiBZb2pzb24uQmFzaWMudCBvcHRpb247XG59XG5cbmxldCBkdW1teV9ub2RlID1cbiAge1xuICAgIG5vZGVfY29sb3IgPSBOb25lO1xuICAgIG5vZGVfZmlsbGNvbG9yID0gTm9uZTtcbiAgICBub2RlX2xhYmVsID0gTm9uZTtcbiAgICBub2RlX3dpZHRoID0gTm9uZTtcbiAgICBub2RlX2hlaWdodCA9IE5vbmU7XG4gICAgbm9kZV9zaGFwZSA9IE5vbmU7XG4gICAgbm9kZV9wb3NpdGlvbnMgPSBbXTtcbiAgICBub2RlX29uX2NsaWNrID0gTm9uZTtcbiAgICBub2RlX2NvbnRleHR1YWxfaGVscCA9IE5vbmU7XG4gIH1cblxubGV0IGR1bW15X2VkZ2UgPVxuICB7XG4gICAgZWRnZV9jb2xvciA9IE5vbmU7XG4gICAgZWRnZV9sYWJlbCA9IE5vbmU7XG4gICAgZWRnZV9zdHlsZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluO1xuICAgIGVkZ2VfZGlyZWN0aW9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0O1xuICAgIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgIGVkZ2VfcG9zaXRpb25zID0gW107XG4gICAgZWRnZV9vbl9jbGljayA9IE5vbmU7XG4gICAgZWRnZV9jb250ZXh0dWFsX2hlbHAgPSBOb25lO1xuICB9XG5cbmxldCBpc19ub19ub2RlX2F0dHJpYnV0ZXMgbm9kZV9hdHRyaWJ1dGUgPSBub2RlX2F0dHJpYnV0ZSA9IGR1bW15X25vZGVcblxubGV0IGlzX25vX2VkZ2VfYXR0cmlidXRlcyBlZGdlX2F0dHJpYnV0ZSA9XG4gIGR1bW15X2VkZ2VcbiAgPSB7XG4gICAgICBlZGdlX2F0dHJpYnV0ZSB3aXRoXG4gICAgICBlZGdlX2RpcmVjdGlvbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdDtcbiAgICAgIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgICAgZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgfVxuXG5sZXQgYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIFwiXG4gIGVsc2VcbiAgICAoKVxuXG5sZXQgYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgPVxuICBpZiBib29sIHRoZW5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiwgXCJcbiAgZWxzZVxuICAgICgpXG5cbmxldCBodG1sX2RlcHMgPVxuICBbXG4gICAgXCJodHRwOi8vZDNqcy5vcmcvZDMudjMubWluLmpzXCI7XG4gICAgXCJodHRwOi8vY3BldHRpdHQuZ2l0aHViLmlvL3Byb2plY3QvZGFncmUtZDMvbGF0ZXN0L2RhZ3JlLWQzLm1pbi5qc1wiO1xuICBdXG5cbmxldCBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCA9XG4gIGxldCBiMSA9XG4gICAgbWF0Y2ggZmlsdGVyX2luIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGZvcm1hdCBsXG4gIGluXG4gIGIxICYmIG5vdCAoTGlzdC5tZW0gZm9ybWF0IGZpbHRlcl9vdXQpXG5cbmxldCBwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyBmIHRpdGxlID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxkaXYgY2xhc3M9XFxcImNvbnRhaW5lclxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGgxPkBbJXNAXTwvaDE+QCxcIiB0aXRsZSBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN2ZyB3aWR0aD05NjAgaGVpZ2h0PTYwMD48Zy8+PC9zdmc+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHNjcmlwdD5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDcmVhdGUgYSBuZXcgZGlyZWN0ZWQgZ3JhcGhALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBnID0gbmV3IGRhZ3JlRDMuZ3JhcGhsaWIuR3JhcGgoKS5zZXRHcmFwaCh7fSk7QCxcIlxuICBpblxuXG4gICgpXG5cbmxldCBwcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgPyhmaWx0ZXJfaW4gPSBOb25lKSA/KGZpbHRlcl9vdXQgPSBbXSlcbiAgICA/KGhlYWRlciA9IFtdKSB0aXRsZSA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBpZiBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCB0aGVuIChcbiAgICBtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIjJXNcIiB4IGluXG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgKCkpXG4gICAgICAgICAgaGVhZGVyXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJkaWdyYXBoIEd7XCIgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAoKVxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgICAgKCogSU4gUFJPR0VTUyAqKVxuICAgICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgIChtYXRjaCBmX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmIC0+IHByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIGYgdGl0bGUpXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggLT5cbiAgICAgIGxldCBmX29wdCA9IExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAobWF0Y2ggZl9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIjwhLS1ALFwiIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICBoZWFkZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCItLT5ALFwiIGluXG4gICAgICAgIGxldCBkZXBlbmRlbmN5IGYgdCA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxzY3JpcHQgc3JjPVxcXCIlc1xcXCIgY2hhcnNldD1cXFwidXRmLThcXFwiPjwvc2NyaXB0PlwiIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PCFkb2N0eXBlIGh0bWw+QCxALDxodG1sPkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48aGVhZD5ALDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5ALFwiIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXM8L3RpdGxlPkAsXCIgdGl0bGUgaW5cbiAgICAgICAgbGV0ICgpID0gUHAubGlzdCB+dHJhaWxpbmc6UHAuc3BhY2UgUHAuc3BhY2UgZGVwZW5kZW5jeSBmIGh0bWxfZGVwcyBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldEBdQCw8L2hlYWQ+QCxcIiAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCxcIiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkdCB7ZmxvYXQ6IGxlZnQ7IGNsZWFyOiBsZWZ0OyB3aWR0aDogMjBlbTt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkZCB7Zm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbjogMCAwIDAgMjFlbTt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIubm9kZSByZWN0IHtzdHJva2U6ICMzMzM7IGZpbGw6ICNmZmY7fUAsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcIi5lZGdlUGF0aCBwYXRoIHtzdHJva2U6ICMzMzM7IGZpbGw6ICMzMzM7IHN0cm9rZS13aWR0aDogXFxcbiAgICAgICAgICAgICAgICAgICAxLjVweDt9XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBdQCw8L3N0eWxlPlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxib2R5PkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlYW1ibGVfc2hhcmVkX2h0bWxfanMgZiB0aXRsZSBpblxuICAgICAgICAoKSlcbiAgICB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0aGVtYXRpY2FcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRcbiAgICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgKClcbiAgKVxuXG5sZXQgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgdGl0bGUgc3R5bGUgPVxuICBtYXRjaCBzdHlsZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGJvb2xcbiAgKCp8IFRlZSAtPlxuICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIlczogXFxcInRlZVxcXCJcIiB0aXRsZVxuICAgICAgICBpblxuICAgICAgICB0cnVlKilcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT5cbiAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzOiBcXFwidmVlXFxcIlwiIHRpdGxlXG4gICAgaW5cbiAgICB0cnVlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPlxuICAgICgqIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiJXM6IFxcXCJub25lXFxcIlwiIHRpdGxlXG4gICAgICAgaW5cbiAgICAgICB0cnVlKilcbiAgICBib29sXG5cbmxldCBtZXJnZSBzIHMnID1cbiAgaWYgcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgdGhlblxuICAgIHMnXG4gIGVsc2VcbiAgICBzXG5cbmxldCBtYXRyaXhfc3RyaW5nX29mX29wdGlvbnMgbCA9XG4gIGxldCBpID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gaSBsIC0+XG4gICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHggLT5cbiAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBpICogN1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gaVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gaSAqIDNcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBpICogLTFcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gaSAqIDVcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IGlcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBpICogMTFcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBpICogMTNcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gaSAqIDE3XG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gaSAqIDE5KVxuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgXyAtPlxuICAgICAgICAgICAgIGkpKVxuICAgICAgMSBsXG4gIGluXG4gIHN0cmluZ19vZl9pbnQgaVxuXG5sZXQgcHJpbnRfZm9vdF9zaGFyZWRfaHRtbF9qcyBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIE1vZHMuU3RyaW5nMk1hcC5pdGVyXG4gICAgICAoZnVuIChpZDEsIGlkMikgbGlzdCAtPlxuICAgICAgICBsZXQgbGlzdCA9IExpc3QucmV2IGxpc3QgaW5cbiAgICAgICAgbGV0IGlkMV9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZDEgaW5cbiAgICAgICAgbGV0IGlkMl9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZDIgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9lZGdlIGluXG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbl9saXN0IC0+XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgcyAtPlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfbGFiZWwgPSBTb21lIFsgcyBdIH1cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9sYWJlbCA9IFNvbWUgKHMgOjogXCIsXCIgOjogcycpIH0pXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb2xvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2NvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMnIHdoZW4gcyA9IHMnIC0+IGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfY29sb3IgPSBTb21lIEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfc3R5bGUgPSBzIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9kaXJlY3Rpb24gPSBzIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfYXJyb3d0YWlsID0gbWVyZ2UgcyBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX2Fycm93aGVhZCA9IG1lcmdlIHMgYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLmVkZ2VfcG9zaXRpb25zO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbnRleHR1YWxfaGVscCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfb25fY2xpY2sgPSBTb21lIGpzb24gfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggX1xuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfXG4gICAgICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyBvcHRpb25fbGlzdClcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMgbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgXCJnLnNldEVkZ2UoJWksJWkseyBcIiBpZDFfaW50IGlkMl9pbnRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9kaXJlY3Rpb24gd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkO1xuICAgICAgICAgICAgICBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3QgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQm90aCAtPiBhdHRyaWJ1dGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID0gZmFsc2UgaW5cbiAgICAgICAgbGV0IGJvb2wsIHNfb3B0ID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sLCBOb25lXG4gICAgICAgICAgfCBTb21lIHN0cmluZ19saXN0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImxhYmVsOiBcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAoZnVuIGZtdCAtPiBMaXN0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdHJpbmdfbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc19vcHQsIHMnID1cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMTAwIHRoZW5cbiAgICAgICAgICAgICAgICBTb21lIHMsIFN0cmluZy5zdWIgcyAwIDEwMCBeIFwiLi4uXCJcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIE5vbmUsIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXFxcIlwiIHMnXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZSwgc19vcHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCBjb2xvciA9IHN2Z19jb2xvcl9lbmNvZGluZyBzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJzdHlsZTogXFxcInN0cm9rZTogJXM7IGZpbGw6IHdoaXRlXFxcIiwgYXJyb3doZWFkU3R5bGU6IFxcXCJmaWxsOiBcXFxuICAgICAgICAgICAgICAgICAlczsgc3Ryb2tlOiAlc1xcXCJcIlxuICAgICAgICAgICAgICAgIGNvbG9yIGNvbG9yIGNvbG9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgXCJhcnJvd2hlYWRcIlxuICAgICAgICAgICAgYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZFxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgXCJhcnJvd3RhaWxcIlxuICAgICAgICAgICAgYXR0cmlidXRlcy5lZGdlX2Fycm93dGFpbFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiB9KTtALFwiIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggc19vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIjwhLS0lcy0tPlxcblwiIHNcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuZ2V0X2VkZ2VfbWFwIGxvZ2dlcilcbiAgaW5cbiAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgbWF0Y2ggZl9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcInZhciBzdmcgPSBkMy5zZWxlY3QoXFxcInN2Z1xcXCIpLGlubmVyID0gc3ZnLnNlbGVjdChcXFwiZ1xcXCIpO0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBTZXQgdXAgem9vbSBzdXBwb3J0QCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwidmFyIHpvb20gPSBkMy5iZWhhdmlvci56b29tKCkub24oXFxcInpvb21cXFwiLCBmdW5jdGlvbigpIHtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcImlubmVyLmF0dHIoXFxcInRyYW5zZm9ybVxcXCIsIFxcXCJ0cmFuc2xhdGUoXFxcIiArIGQzLmV2ZW50LnRyYW5zbGF0ZSArIFxcXCIpXFxcIiBcXFxuICAgICAgICAgK0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiXFxcInNjYWxlKFxcXCIgKyBkMy5ldmVudC5zY2FsZSArIFxcXCIpXFxcIik7QCx9KTtALHN2Zy5jYWxsKHpvb20pO1wiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIi8vIENyZWF0ZSB0aGUgcmVuZGVyZXJALCB2YXIgcmVuZGVyID0gbmV3IGRhZ3JlRDMucmVuZGVyKCk7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCIvLyBSdW4gdGhlIHJlbmRlcmVyLiBUaGlzIGlzIHdoYXQgZHJhd3MgdGhlIGZpbmFsIGdyYXBoLkAsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJyZW5kZXIoaW5uZXIsIGcpO0AsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIENlbnRlciB0aGUgZ3JhcGhALHZhciBpbml0aWFsU2NhbGUgPSAwLjc1O0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ6b29tQCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiLnRyYW5zbGF0ZShbKHN2Zy5hdHRyKFxcXCJ3aWR0aFxcXCIpIC0gZy5ncmFwaCgpLndpZHRoICogaW5pdGlhbFNjYWxlKSAvIFxcXG4gICAgICAgICAyLCAyMF0pQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5zY2FsZShpbml0aWFsU2NhbGUpQCwuZXZlbnQoc3ZnKTtALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJzdmcuYXR0cignaGVpZ2h0JywgZy5ncmFwaCgpLmhlaWdodCAqIGluaXRpYWxTY2FsZSArIDQwKTtcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsPC9zY3JpcHQ+XCIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCw8L2Rpdj5cIiBpblxuICAgICgpXG5cbmxldCBwcmludF9ncmFwaF9mb290IGxvZ2dlciA9XG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwifVwiIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgfCBMb2dnZXJzLk1hdHJpeCAtPlxuICAgIGxldCBub2RlcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdldF9ub2RlcyBsb2dnZXIgaW5cbiAgICBsZXQgZWRnZXMgPSBHcmFwaF9sb2dnZXJzX3NpZy5nZXRfZWRnZV9tYXAgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwicnVsZXNcXFwiIDpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzZXAgKHMsIF8pIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcXFwiJXNcXFwiXCIgc2VwIHNcbiAgICAgICAgICBpblxuICAgICAgICAgIFwiLCBcIilcbiAgICAgICAgXCJcIiBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJoaXRzXFxcIiA6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc2VwIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzMVwiIHNlcCBpblxuICAgICAgICAgIFwiLCBcIilcbiAgICAgICAgXCJcIiBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJmbHV4c1xcXCIgOlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGIgKHMxLCBfKSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBiIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIixcIiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBzZXAgKHMyLCBfKSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb2xvcl92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLlN0cmluZzJNYXAuZmluZF9vcHRpb24gKHMxLCBzMikgZWRnZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiMFwiXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3B0aW9ucyAtPiBtYXRyaXhfc3RyaW5nX29mX29wdGlvbnMgb3B0aW9uc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiJXMlc1wiIHNlcCBjb2xvcl92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgXCIsIFwiKVxuICAgICAgICAgICAgICBcIlwiIG5vZGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgdHJ1ZSlcbiAgICAgICAgZmFsc2Ugbm9kZXNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPiBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlclxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgIGxldCBmX29wdCA9IExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKG1hdGNoIGZfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgbGV0ICgpID0gcHJpbnRfZm9vdF9zaGFyZWRfaHRtbF9qcyBsb2dnZXIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALDwvYm9keT5AXUAsPC9odG1sPkBdQC5cIiBpblxuICAgICAgKCkpXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5TQk1MXG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlhMUyAtPlxuICAgICgpXG5cbmxldCBwcmludF9jb21tZW50IGxvZ2dlciA/KGZpbHRlcl9pbiA9IE5vbmUpID8oZmlsdGVyX291dCA9IFtdKSBzdHJpbmcgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgaWYgc2hhbGxfSV9kb19pdCBmb3JtYXQgZmlsdGVyX2luIGZpbHRlcl9vdXQgdGhlbiAoXG4gICAgbWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiMlc1wiIHN0cmluZ1xuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHN0cmluZ1xuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICAgIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICAoKVxuICApXG5cbmxldCBvcGVuX2Fzc28gbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcdDxwPjxkbD5cXG5cIlxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRyaXhcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRcbiAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgKClcblxubGV0IGNsb3NlX2Fzc28gbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcdFxcdDwvZGw+PC9wPlxcblwiXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZVxuICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hdHJpeFxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfYXNzbyBsb2dnZXIgc3RyaW5nMSBzdHJpbmcyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIvKiVzICVzKi9cIiBzdHJpbmcxIHN0cmluZzJcbiAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICBcIlxcdFxcdFxcdDxkdD4lczwvZHQ+PGRkPiVzPC9kZD5cIiBzdHJpbmcxIHN0cmluZzJcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5TQk1MXG4gIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhXG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgc2hhcGVfaW5fZG90IHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSAtPiBcInN0eWxlPWludmlzXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBcInNoYXBlPWludmhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZSAtPiBcInNoYXBlPWhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0IC0+IFwic2hhcGU9Ym94XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlIC0+IFwic2hhcGU9ZWxsaXBzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlIC0+IFwic2hhcGU9Y2lyY2xlXCJcblxubGV0IHNoYXBlX2luX2h0bWwgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IFNvbWUgXCJzdHlsZTogXFxcInZpc2liaWxpdHk6aGlkZGVuXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2UgLT4gU29tZSBcInNoYXBlOiBcXFwiaW52aG91c2VcXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJob3VzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gU29tZSBcInNoYXBlOiBcXFwicmVjdFxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gU29tZSBcInNoYXBlOiBcXFwiZWxsaXBzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZSAtPiBTb21lIFwic2hhcGU6IFxcXCJlbGxpcHNlXFxcIlwiXG5cbmxldCBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgXyA9IFwiLVwiXG5sZXQgc3RyaW5nX3R3b19vZl9saW5lc3R5bGVfaW5fZG90IF8gPSBcIi0tXCJcblxubGV0IHN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gXCI+XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCJ8PlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwifFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBcIlwiXG5cbmxldCBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3Qgc3R5bGUgPVxuICBtYXRjaCBzdHlsZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IFwiPFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IFwiPHxcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBcInxcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gXCJcIlxuXG5sZXQgcHJpbnRfbm9kZSBsb2dnZXIgPyhkaXJlY3RpdmVzID0gW10pIGlkID1cbiAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9ub2RlIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gICAgfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLlRYVFxuICAgIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfbGFiZWwgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX2NvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX2ZpbGxjb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfd2lkdGggPSBTb21lIGkgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IGkgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfaGVpZ2h0ID0gU29tZSBpIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9zaGFwZSA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLm5vZGVfcG9zaXRpb25zIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9vbl9jbGljayA9IFNvbWUganNvbiB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgcyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgbm9kZV9jb250ZXh0dWFsX2hlbHAgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+IFNvbWUgKHMnIF4gcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gX1xuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgXyAtPlxuICAgICAgICAgICAgYXR0cmlidXRlcylcbiAgICAgICAgYXR0cmlidXRlcyBkaXJlY3RpdmVzXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYVxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUxcbiAgICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5IVE1MIC0+XG4gICAgICBhdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcIiVzXFxcIlwiIGlkIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX25vZGVfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiBbXCIgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImxhYmVsPVxcXCIlc1xcXCJcIiBzdHJpbmdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfc2hhcGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCIlc1wiIChzaGFwZV9pbl9kb3Qgc2hhcGUpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3dpZHRoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIndpZHRoPVxcXCIlaXB4XFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfaGVpZ2h0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJoZWlnaHQ9XFxcIiVpcHhcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiY29sb3I9XFxcIiVzXFxcIlwiIChkb3RfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfZmlsbGNvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJmaWxsY29sb3I9XFxcIiVzXFxcIiBzdHlsZT1maWxsZWRcIiAoZG90X2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBpZiBib29sIHRoZW4gKCkgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJdO1wiIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICAoKVxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgIGxldCBpZF9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZCBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImcuc2V0Tm9kZSglaSwgeyBcIiBpZF9pbnRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBpc19ub19ub2RlX2F0dHJpYnV0ZXMgYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWRcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nIC0+IHN0cmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgc3RyaW5nID0gU3RyaW5nLmVzY2FwZWQgc3RyaW5nIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJsYWJlbDogXFxcIiVzXFxcIlwiIHN0cmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9zaGFwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICAobWF0Y2ggc2hhcGVfaW5faHRtbCBzaGFwZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBzaGFwZSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIiBzaGFwZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfd2lkdGggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJ3aWR0aDogXFxcIiVpXFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9oZWlnaHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJoZWlnaHQ6IFxcXCIlaVxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiY29sb3I6IFxcXCIlc1xcXCJcIiAoc3ZnX2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfZmlsbGNvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIHRydWUgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcInN0eWxlOiBcXFwiZmlsbDogJXNcXFwiIFwiIChzdmdfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgfSk7QCxcIiBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5UWFQgLT5cbiAgICAobWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiTm9kZTogJXNcIiBpZCBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpXG4gICAgfCBTb21lIGxhYmVsIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgXCJOb2RlOiVzLCBMYWJlbDolc1wiIGlkIGxhYmVsXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpKVxuICB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkpzb24gLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5hZGRfbm9kZSBsb2dnZXIgaWQgZGlyZWN0aXZlc1xuICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfZWRnZSBsb2dnZXIgPyhkaXJlY3RpdmVzID0gW10pID8ocHJlZml4ID0gXCJcIikgaWQxIGlkMiA9XG4gIGxldCBhdHRyaWJ1dGVzID0gZHVtbXlfZWRnZSBpblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICAgIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGhcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2xhYmVsID0gU29tZSBbIHMgXSB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9zdHlsZSA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfZGlyZWN0aW9uID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd3RhaWwgPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93aGVhZCA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9wb3NpdGlvbnMgPSBwIEAgYXR0cmlidXRlcy5lZGdlX3Bvc2l0aW9ucyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgcyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgZWRnZV9jb250ZXh0dWFsX2hlbHAgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+IFNvbWUgKHMnIF4gcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX29uX2NsaWNrID0gU29tZSBqc29uIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfIC0+XG4gICAgICAgICAgICBhdHRyaWJ1dGVzKVxuICAgICAgICBhdHRyaWJ1dGVzIGRpcmVjdGl2ZXNcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICAgIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFNcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIC0+XG4gICAgICBhdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCBkaXJlY3Rpb24gPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2RpcmVjdGlvbiB3aXRoXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPlxuICAgICAgICBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgICAgIF4gc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+XG4gICAgICAgIHN0cmluZ190d29fb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQm90aCAtPlxuICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICAgIF4gc3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgICAgICBeIHN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZSAtPlxuICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICAgIF4gc3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgIFwiXFxcIiVzXFxcIiAlcyBcXFwiJXNcXFwiXCIgaWQxIGRpcmVjdGlvbiBpZDJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBpc19ub19lZGdlX2F0dHJpYnV0ZXMgYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgW1wiIGluXG4gICAgICAgIGxldCBib29sID0gZmFsc2UgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwibGFiZWw9XFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgKExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIilcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgc3RyaW5nX2xpc3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiXCIgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9zdHlsZSB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiAtPiBib29sXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwic3R5bGU9XFxcImRvdHRlZFxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRhc2hlZCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJzdHlsZT1cXFwiZGFzaGVkXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcj1cXFwiJXNcXFwiXCIgKGRvdF9jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd2hlYWQgd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGJvb2xcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJ0ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93aGVhZD1cXFwidmVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJub25lXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93dGFpbCB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcInRlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3d0YWlsPVxcXCJ2ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcIm5vbmVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IGlmIGJvb2wgdGhlbiAoKSBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIl07XCIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLkhUTUwgLT5cbiAgICBsZXQgbGFiZWwgPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbIFwiXCIgXVxuICAgICAgfCBTb21lIHggLT4geFxuICAgIGluXG4gICAgbGV0IGFycm93ID1cbiAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd2hlYWQgd2l0aFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IFwiLS1cIlxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCItPlwiXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBcIi18XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICBcIiVzJXMgJXMgJXNcIiBwcmVmaXggaWQxIGFycm93IGlkMlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiKVxuICAgICAgICAoTGlzdC5yZXYgbGFiZWwpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmFkZF9lZGdlIGxvZ2dlciBpZDEgaWQyIGRpcmVjdGl2ZXNcbiAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWJcbiAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIC0+XG4gICAgKClcblxubGV0IHByaW50X29uZV90b19uX3JlbGF0aW9uIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSlcbiAgICA/KHN0eWxlX29uZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluKSA/KHN0eWxlX24gPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbilcbiAgICBpZCBpZGxpc3QgPVxuICBsZXQgZmljdGl0aW91cyA9IFwiRmljdGl0aW91c19cIiBeIGlkIGluXG4gIGxldCBkaXJlY3RpdmVzX2ZpY3QgPVxuICAgIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgICAgTGlzdC5yZXZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIFwiXCJcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGVcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCAwIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCAwXG4gICAgICAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrXG4gICAgICAgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuRE9UXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgTGlzdC5yZXZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIFwiXCJcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGVcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCAwIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCAwXG4gICAgICAgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfb25lID1cbiAgICBpZiBzdHlsZV9vbmUgPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiB0aGVuXG4gICAgICBkaXJlY3RpdmVzXG4gICAgZWxzZVxuICAgICAgTGlzdC5yZXYgKEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBzdHlsZV9vbmUgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfbiA9XG4gICAgaWYgc3R5bGVfbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIHRoZW5cbiAgICAgIGRpcmVjdGl2ZXNcbiAgICBlbHNlXG4gICAgICBMaXN0LnJldiAoR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHN0eWxlX24gOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IF8gPSBwcmludF9ub2RlIGxvZ2dlciBmaWN0aXRpb3VzIH5kaXJlY3RpdmVzOmRpcmVjdGl2ZXNfZmljdCBpblxuICBsZXQgXyA9IHByaW50X2VkZ2UgbG9nZ2VyIH5kaXJlY3RpdmVzOmRpcmVjdGl2ZXNfb25lIGZpY3RpdGlvdXMgaWQgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBpZCcgLT4gcHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19uIGZpY3RpdGlvdXMgaWQnKVxuICAgICAgaWRsaXN0XG4gIGluXG4gICgpXG5cbmxldCBfID1cbiAgbGV0IGYgdCB0JyA9IHQuZWRnZV9vbl9jbGljaywgdCcubm9kZV9vbl9jbGljayBpblxuICBmXG4iLCIoKipcbiAgKiBncmFwaF9qcy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkaXJlY3Rpb25fdG9fanNvbiBkaXJlY3Rpb24gPVxuICBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPiBgU3RyaW5nIFwiRGlyZWN0XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+IGBTdHJpbmcgXCJSZXZlcnNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+IGBTdHJpbmcgXCJVbmRpcmVjdGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+IGBTdHJpbmcgXCJCb3RoXCJcblxubGV0IHNoYXBlX3RvX2pzb24gc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IGBTdHJpbmcgXCJJbnZpc2libGVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IGBTdHJpbmcgXCJIb3VzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2UgLT4gYFN0cmluZyBcIkludmhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0IC0+IGBTdHJpbmcgXCJyZWN0XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlIC0+IGBTdHJpbmcgXCJlbGxpcHNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGUgLT4gYFN0cmluZyBcImNpcmNsZVwiXG5cbmxldCBoZWFka2luZF90b19qc29uIGhlYWRraW5kID1cbiAgbWF0Y2ggaGVhZGtpbmQgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBgU3RyaW5nIFwidmVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gYFN0cmluZyBcIlRlZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBgU3RyaW5nIFwidW5kaXJlY3RlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGBTdHJpbmcgXCJub3JtYWxcIlxuXG5sZXQgbGluZXN0eWxlX3RvX2pzb24gbGluZXN0eWxlID1cbiAgbWF0Y2ggbGluZXN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiAtPiBgU3RyaW5nIFwiUGxhaW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZCAtPiBgU3RyaW5nIFwiRG90dGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EYXNoZWQgLT4gYFN0cmluZyBcIkRhc2hlZFwiXG5cbmxldCBjb2xvcl90b19qc29uIGNvbG9yID1cbiAgbWF0Y2ggY29sb3Igd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBgU3RyaW5nIFwicmVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBgU3RyaW5nIFwiZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IGBTdHJpbmcgXCJ3aGl0ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBgU3RyaW5nIFwiYmx1ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gYFN0cmluZyBcImJsYWNrXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gYFN0cmluZyBcImxpZ2h0c2t5Ymx1ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IGBTdHJpbmcgXCJwYWxlZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IGBTdHJpbmcgXCJicm93blwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93IC0+IGBTdHJpbmcgXCJ5ZWxsb3dcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gYFN0cmluZyBcImdyZXlcIlxuXG5sZXQgZGlyZWN0aXZlX3RvX2pzb24gb3B0aW9uID1cbiAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBjb2xvciAtPiBcImNvbG9yXCIsIGNvbG9yX3RvX2pzb24gY29sb3JcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgY29sb3IgLT4gXCJmaWxsY29sb3JcIiwgY29sb3JfdG9fanNvbiBjb2xvclxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHN0cmluZyAtPiBcImxhYmVsXCIsIGBTdHJpbmcgc3RyaW5nXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggaW50IC0+IFwid2lkdGhcIiwgYEludCBpbnRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaW50IC0+IFwiaGVpZ2h0XCIsIGBJbnQgaW50XG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIGRpcmVjdGlvbiAtPlxuICAgIFwiZGlyZWN0aW9uXCIsIGRpcmVjdGlvbl90b19qc29uIGRpcmVjdGlvblxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIHNoYXBlIC0+IFwic2hhcGVcIiwgc2hhcGVfdG9fanNvbiBzaGFwZVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBoZWFka2luZCAtPlxuICAgIFwiYXJyb3doZWFkXCIsIGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgaGVhZGtpbmQgLT5cbiAgICBcImFycm93dGFpbFwiLCBoZWFka2luZF90b19qc29uIGhlYWRraW5kXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIGxpbmVzdHlsZSAtPlxuICAgIFwibGluZXN0eWxlXCIsIGxpbmVzdHlsZV90b19qc29uIGxpbmVzdHlsZVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAoIFwicG9zaXRpb25cIixcbiAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgKGZ1biBqc29uIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwganNvbikpXG4gICAgICAgIHAgKVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgXCJjb250ZXh0dWFsIGhlbHBcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHNcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT4gXCJvbl9jbGlja1wiLCBqc29uXG5cbmxldCBkaXJlY3RpdmVzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9hc3NvYyBkaXJlY3RpdmVfdG9fanNvblxuXG5sZXQgbm9kZV90b19qc29uIChpZCwgZGlyZWN0aXZlcykgPVxuICBgQXNzb2MgWyBcImlkXCIsIGBTdHJpbmcgaWQ7IFwiZGlyZWN0aXZlc1wiLCBkaXJlY3RpdmVzX3RvX2pzb24gZGlyZWN0aXZlcyBdXG5cbmxldCBlZGdlX3RvX2pzb24gKGlkMSwgaWQyLCBkaXJlY3RpdmVzKSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwic291cmNlXCIsIGBTdHJpbmcgaWQxO1xuICAgICAgXCJ0YXJnZXRcIiwgYFN0cmluZyBpZDI7XG4gICAgICBcImRpcmVjdGl2ZXNcIiwgZGlyZWN0aXZlc190b19qc29uIGRpcmVjdGl2ZXM7XG4gICAgXVxuXG5sZXQgbm9kZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3Qgbm9kZV90b19qc29uXG5sZXQgZWRnZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgZWRnZV90b19qc29uXG5cbmxldCB0b19qc29uIGdyYXBoIDogWW9qc29uLkJhc2ljLnQgPVxuICBgQXNzb2NcbiAgICBbIFwibm9kZXNcIiwgbm9kZXNfdG9fanNvbiAoZnN0IGdyYXBoKTsgXCJlZGdlc1wiLCBlZGdlc190b19qc29uIChzbmQgZ3JhcGgpIF1cblxubGV0IGxpbmVzdHlsZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiUGxhaW5cIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpblxuICB8IGBTdHJpbmcgXCJEb3R0ZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWRcbiAgfCBgU3RyaW5nIFwiRGFzaGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRGFzaGVkXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGhlYWRraW5kXCIsIHgpKVxuXG5sZXQgaGVhZGtpbmRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcInZlZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZVxuICB8IGBTdHJpbmcgXCJUZWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5UZWVcbiAgfCBgU3RyaW5nIFwidW5kaXJlY3RlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWRcbiAgfCBgU3RyaW5nIFwibm9ybWFsXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGhlYWRraW5kXCIsIHgpKVxuXG5sZXQgc2hhcGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkludmlzaWJsZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZVxuICB8IGBTdHJpbmcgXCJIb3VzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlXG4gIHwgYFN0cmluZyBcIkludmhvdXNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2VcbiAgfCBgU3RyaW5nIFwicmVjdFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3RcbiAgfCBgU3RyaW5nIFwiZWxsaXBzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcbiAgfCBgU3RyaW5nIFwiY2lyY2xlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHNoYXBlXCIsIHgpKVxuXG5sZXQgZGlyZWN0aW9uX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJEaXJlY3RcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3RcbiAgfCBgU3RyaW5nIFwiUmV2ZXJzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2VcbiAgfCBgU3RyaW5nIFwiVW5kaXJlY3RlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWRcbiAgfCBgU3RyaW5nIFwiQm90aFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGhcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZGlyZWN0aW9uXCIsIHgpKVxuXG5sZXQgY29sb3Jfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcImdyZXlcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5XG4gIHwgYFN0cmluZyBcInllbGxvd1wiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvd1xuICB8IGBTdHJpbmcgXCJyZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbiAgfCBgU3RyaW5nIFwiZ3JlZW5cIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlblxuICB8IGBTdHJpbmcgXCJ3aGl0ZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlXG4gIHwgYFN0cmluZyBcImJsdWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlXG4gIHwgYFN0cmluZyBcImJsYWNrXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2tcbiAgfCBgU3RyaW5nIFwibGlnaHRza3libHVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlXG4gIHwgYFN0cmluZyBcInBhbGVncmVlblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlblxuICB8IGBTdHJpbmcgXCJicm93blwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGNvbG9yXCIsIHgpKVxuXG5sZXQgZGlyZWN0aXZlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IFwiY29sb3JcIiwgY29sb3IgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgKGNvbG9yX29mX2pzb24gY29sb3IpXG4gIHwgXCJmaWxsY29sb3JcIiwgY29sb3IgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIChjb2xvcl9vZl9qc29uIGNvbG9yKVxuICB8IFwibGFiZWxcIiwgYFN0cmluZyBzdHJpbmcgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgc3RyaW5nXG4gIHwgXCJ3aWR0aFwiLCBgSW50IGludCAtPiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpbnRcbiAgfCBcImhlaWdodFwiLCBgSW50IGludCAtPiBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaW50XG4gIHwgXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIChkaXJlY3Rpb25fb2ZfanNvbiBkaXJlY3Rpb24pXG4gIHwgXCJzaGFwZVwiLCBzaGFwZSAtPiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAoc2hhcGVfb2ZfanNvbiBzaGFwZSlcbiAgfCBcImFycm93aGVhZFwiLCBoZWFka2luZCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCAoaGVhZGtpbmRfb2ZfanNvbiBoZWFka2luZClcbiAgfCBcImFycm93dGFpbFwiLCBoZWFka2luZCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCAoaGVhZGtpbmRfb2ZfanNvbiBoZWFka2luZClcbiAgfCBcImxpbmVzdHlsZVwiLCBsaW5lc3R5bGUgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgKGxpbmVzdHlsZV9vZl9qc29uIGxpbmVzdHlsZSlcbiAgfCBcInBvc2l0aW9uXCIsIHBvc19saXN0IC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb25cbiAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAoZnVuIGpzb24gLT5cbiAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgICAgP2Vycm9yX21zZzooU29tZSAoSnNvblV0aWwuYnVpbGRfbXNnIFwicG9zaXRpb25cIikpKVxuICAgICAgICAgICAgICAgIGpzb24pKVxuICAgICAgICAgcG9zX2xpc3QpXG4gIHwgXCJjb250ZXh0dWFsIGhlbHBcIiwgY29udGV4dHVhbF9oZWxwIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIChKc29uVXRpbC50b19zdHJpbmcgY29udGV4dHVhbF9oZWxwKVxuICB8IFwib25fY2xpY2tcIiwganNvbiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb25cbiAgfCBfLCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZGlyZWN0aXZlXCIsIHgpKVxuXG5sZXQgZGlyZWN0aXZlc19vZl9qc29uIGRpcmVjdGl2ZXMgPVxuICBKc29uVXRpbC50b19hc3NvY1xuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxpc3Qgb2YgZGlyZWN0aXZlc1wiKVxuICAgIGRpcmVjdGl2ZV9vZl9qc29uIGRpcmVjdGl2ZXNcblxubGV0IGlkX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgc3RyaW5nIC0+IHN0cmluZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBpZFwiLCB4KSlcblxubGV0IG5vZGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgICggaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImlkXCIgbCksXG4gICAgICAgICBkaXJlY3RpdmVzX29mX2pzb24gKExpc3QuYXNzb2MgXCJkaXJlY3RpdmVzXCIgbCkgKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5vZGVcIiwgeCkpXG5cbmxldCBlZGdlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICAoIGlkX29mX2pzb24gKExpc3QuYXNzb2MgXCJzb3VyY2VcIiBsKSxcbiAgICAgICAgIGlkX29mX2pzb24gKExpc3QuYXNzb2MgXCJ0YXJnZXRcIiBsKSxcbiAgICAgICAgIGRpcmVjdGl2ZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImRpcmVjdGl2ZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlZGdlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWRnZVwiLCB4KSlcblxubGV0IG5vZGVzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGUgbGlzdFwiKSBub2RlX29mX2pzb25cblxubGV0IGVkZ2VzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImVkZ2UgbGlzdFwiKSBlZGdlX29mX2pzb25cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICAoIG5vZGVzX29mX2pzb24gKExpc3QuYXNzb2MgXCJub2Rlc1wiIGwpLFxuICAgICAgICAgZWRnZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImVkZ2VzXCIgbCkgKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSlcbiIsInR5cGUgYnJlYWtfaGludCA9IFNwYWNlIHwgTm9fc3BhY2VcblxudHlwZSBzeW1ib2xfdGFibGUgPSB7XG4gIGFnZW50X29wZW46IHN0cmluZztcbiAgYWdlbnRfY2xvc2U6IHN0cmluZztcbiAgYWdlbnRfc2VwX2NvbW1hOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBhZ2VudF9zZXBfZG90OiBzdHJpbmcgKiBicmVha19oaW50O1xuICBhZ2VudF9zZXBfcGx1czogc3RyaW5nICogYnJlYWtfaGludDtcbiAgZ2hvc3RfYWdlbnQ6IHN0cmluZztcbiAgc2hvd19naG9zdDogYm9vbDtcbiAgaW50ZXJuYWxfc3RhdGVfc3ltYm9sOiBzdHJpbmc7XG4gIG9wZW5faW50ZXJuYWxfc3RhdGU6IHN0cmluZztcbiAgY2xvc2VfaW50ZXJuYWxfc3RhdGU6IHN0cmluZztcbiAgb3Blbl9pbnRlcm5hbF9zdGF0ZV9tb2Q6IHN0cmluZztcbiAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGludGVybmFsX3N0YXRlX21vZF9zeW1ib2w6IHN0cmluZztcbiAgaW50ZXJuYWxfc3RhdGVfYW55OiBzdHJpbmc7XG4gIG9wZW5fYmluZGluZ19zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIG1pc3NpbmdfYmluZGluZ19zdGF0ZTogc3RyaW5nO1xuICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbDogc3RyaW5nO1xuICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZDogc3RyaW5nO1xuICBmcmVlOiBzdHJpbmc7XG4gIGJvdW5kOiBzdHJpbmc7XG4gIGxpbmtfdG9fYW55OiBzdHJpbmc7XG4gIGxpbmtfdG9fc29tZTogc3RyaW5nO1xuICBhdDogc3RyaW5nO1xuICBzaXRlX3NlcDogc3RyaW5nICogYnJlYWtfaGludDtcbiAgYnR5cGVfc2VwOiBzdHJpbmc7XG4gIHVuaV9hcnJvdzogc3RyaW5nO1xuICByZXZfYXJyb3c6IHN0cmluZztcbiAgYmlfYXJyb3c6IHN0cmluZztcbiAgdW5pX2Fycm93X25vcG9seTogc3RyaW5nO1xuICByZXZfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIGJpX2Fycm93X25vcG9seTogc3RyaW5nO1xuICBicmVha2FibGU6IGJvb2w7XG4gIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZTogc3RyaW5nO1xuICBvcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmU6IHN0cmluZztcbiAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHk6IHN0cmluZztcbiAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZTogc3RyaW5nO1xuICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlOiBzdHJpbmc7XG4gIGNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eTogc3RyaW5nO1xuICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yOiBzdHJpbmc7XG4gIHBsdXNfaW5maW5pdHk6IHN0cmluZztcbiAgbWludXNfaW5maW5pdHk6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyX3N0YXRlOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmNlcTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJjZ3RlOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmN2YXI6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyZGVsdGE6IHN0cmluZztcbiAgb3Blbl9jb3VudGVydmFsOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJfc3RhdGU6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcmNlcTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY2d0ZTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY3Zhcjogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyZGVsdGE6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcnZhbDogc3RyaW5nO1xuICBjb3VudGVyY2VxX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyY2d0ZV9zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmN2YXJfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVydmFsX3N5bWJvbDogc3RyaW5nO1xufVxuXG5sZXQgc3ltYm9sX3RhYmxlX1YzID1cbiAge1xuICAgIGJvdW5kID0gXCIhXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBtaXNzaW5nX2JpbmRpbmdfc3RhdGUgPSBcIj9cIjtcbiAgICBsaW5rX3RvX2FueSA9IFwiP1wiO1xuICAgIGxpbmtfdG9fc29tZSA9IFwiIV9cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9zeW1ib2wgPSBcIn5cIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlID0gXCJcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZSA9IFwiXCI7XG4gICAgb3Blbl9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfbW9kX3N5bWJvbCA9IFwiL1wiO1xuICAgIGludGVybmFsX3N0YXRlX2FueSA9IFwiXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfYmluZGluZ19zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbCA9IFwiXCI7XG4gICAgZnJlZSA9IFwiXCI7XG4gICAgYXQgPSBcIi5cIjtcbiAgICBhZ2VudF9vcGVuID0gXCIoXCI7XG4gICAgYWdlbnRfY2xvc2UgPSBcIilcIjtcbiAgICBhZ2VudF9zZXBfY29tbWEgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLFwiLCBTcGFjZTtcbiAgICBidHlwZV9zZXAgPSBcIi5cIjtcbiAgICBzaXRlX3NlcCA9IFwiLFwiLCBOb19zcGFjZTtcbiAgICBnaG9zdF9hZ2VudCA9IFwiLlwiO1xuICAgIHNob3dfZ2hvc3QgPSBmYWxzZTtcbiAgICB1bmlfYXJyb3cgPSBcIi0+XCI7XG4gICAgcmV2X2Fycm93ID0gXCI8LVwiO1xuICAgIGJpX2Fycm93ID0gXCI8LT5cIjtcbiAgICB1bmlfYXJyb3dfbm9wb2x5ID0gXCItIS0+XCI7XG4gICAgcmV2X2Fycm93X25vcG9seSA9IFwiPC0hLVwiO1xuICAgIGJpX2Fycm93X25vcG9seSA9IFwiPC0hLT5cIjtcbiAgICBicmVha2FibGUgPSB0cnVlO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiW1wiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZSA9IFwiXVwiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luZmluaXR5ID0gXCJdXCI7XG4gICAgcGx1c19pbmZpbml0eSA9IFwiK29vXCI7XG4gICAgbWludXNfaW5maW5pdHkgPSBcIi1vb1wiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmUgPSBcIl1cIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJbXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5ID0gXCJbXCI7XG4gICAgaW50X2ludGVydmFsX3NlcGFyYXRvciA9IFwiIC4uIFwiO1xuICAgIG9wZW5fY291bnRlcl9zdGF0ZSA9IFwie1wiO1xuICAgIG9wZW5fY291bnRlcmNlcSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY2d0ZSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcnZhbCA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcl9zdGF0ZSA9IFwifVwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZXEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmRlbHRhID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjb3VudGVyY2VxX3N5bWJvbCA9IFwiPVwiO1xuICAgIGNvdW50ZXJjZ3RlX3N5bWJvbCA9IFwiPj1cIjtcbiAgICBjb3VudGVyY3Zhcl9zeW1ib2wgPSBcIjpcIjtcbiAgICBjb3VudGVydmFsX3N5bWJvbCA9IFwiOj1cIjtcbiAgICBjb3VudGVyZGVsdGFwbHVzX3N5bWJvbCA9IFwiK1wiO1xuICAgIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9IFwiLVwiO1xuICB9XG5cbmxldCBsaWdodGVuIHN5bWJvbF90YWJsZSA9XG4gIHsgc3ltYm9sX3RhYmxlIHdpdGggc2l0ZV9zZXAgPSBcIiBcIiwgc25kIHN5bWJvbF90YWJsZS5zaXRlX3NlcCB9XG5cbmxldCB0b19kb3RuZXQgc3ltYm9sX3RhYmxlID1cbiAge1xuICAgIHN5bWJvbF90YWJsZSB3aXRoXG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIiArXCIsIHNuZCBzeW1ib2xfdGFibGUuYWdlbnRfc2VwX3BsdXM7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLlwiLCBOb19zcGFjZTtcbiAgfVxuXG5sZXQgc3ltYm9sX3RhYmxlX1Y0ID1cbiAge1xuICAgIGJvdW5kID0gXCJcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGUgPSBcIltcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlID0gXCJdXCI7XG4gICAgbWlzc2luZ19iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBsaW5rX3RvX2FueSA9IFwiI1wiO1xuICAgIGxpbmtfdG9fc29tZSA9IFwiX1wiO1xuICAgIGludGVybmFsX3N0YXRlX3N5bWJvbCA9IFwiXCI7XG4gICAgb3Blbl9pbnRlcm5hbF9zdGF0ZSA9IFwie1wiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlID0gXCJ9XCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfYW55ID0gXCJ7I31cIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9tb2Rfc3ltYm9sID0gXCIvXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfYmluZGluZ19zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbCA9IFwiXCI7XG4gICAgZnJlZSA9IFwiLlwiO1xuICAgIGF0ID0gXCIuXCI7XG4gICAgYWdlbnRfb3BlbiA9IFwiKFwiO1xuICAgIGFnZW50X2Nsb3NlID0gXCIpXCI7XG4gICAgYWdlbnRfc2VwX2NvbW1hID0gXCIsXCIsIFNwYWNlO1xuICAgIGFnZW50X3NlcF9wbHVzID0gXCIsXCIsIFNwYWNlO1xuICAgIGFnZW50X3NlcF9kb3QgPSBcIixcIiwgU3BhY2U7XG4gICAgYnR5cGVfc2VwID0gXCIuXCI7XG4gICAgc2l0ZV9zZXAgPSBcIixcIiwgTm9fc3BhY2U7XG4gICAgZ2hvc3RfYWdlbnQgPSBcIi5cIjtcbiAgICBzaG93X2dob3N0ID0gdHJ1ZTtcbiAgICB1bmlfYXJyb3cgPSBcIi0+XCI7XG4gICAgcmV2X2Fycm93ID0gXCI8LVwiO1xuICAgIGJpX2Fycm93ID0gXCI8LT5cIjtcbiAgICB1bmlfYXJyb3dfbm9wb2x5ID0gXCItIS0+XCI7XG4gICAgcmV2X2Fycm93X25vcG9seSA9IFwiPC0hLVwiO1xuICAgIGJpX2Fycm93X25vcG9seSA9IFwiPC0hLT5cIjtcbiAgICBicmVha2FibGUgPSB0cnVlO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiW1wiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZSA9IFwiXVwiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luZmluaXR5ID0gXCJdXCI7XG4gICAgcGx1c19pbmZpbml0eSA9IFwiK29vXCI7XG4gICAgbWludXNfaW5maW5pdHkgPSBcIi1vb1wiO1xuICAgIG9wZW5fY291bnRlcl9zdGF0ZSA9IFwie1wiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmUgPSBcIl1cIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJbXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5ID0gXCJbXCI7XG4gICAgaW50X2ludGVydmFsX3NlcGFyYXRvciA9IFwiIC4uIFwiO1xuICAgIG9wZW5fY291bnRlcmNlcSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY2d0ZSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcnZhbCA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcl9zdGF0ZSA9IFwifVwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZXEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmRlbHRhID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjb3VudGVyY2VxX3N5bWJvbCA9IFwiPVwiO1xuICAgIGNvdW50ZXJjZ3RlX3N5bWJvbCA9IFwiPj1cIjtcbiAgICBjb3VudGVyY3Zhcl9zeW1ib2wgPSBcIjpcIjtcbiAgICBjb3VudGVydmFsX3N5bWJvbCA9IFwiOj1cIjtcbiAgICBjb3VudGVyZGVsdGFwbHVzX3N5bWJvbCA9IFwiK1wiO1xuICAgIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9IFwiLVwiO1xuICB9XG5cbmxldCBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZSA9IHsgc3ltYm9sX3RhYmxlIHdpdGggYnJlYWthYmxlID0gZmFsc2UgfVxubGV0IHN5bWJvbF90YWJsZV9WM19saWdodCA9IGxpZ2h0ZW4gc3ltYm9sX3RhYmxlX1YzXG5sZXQgc3ltYm9sX3RhYmxlX2RvdG5ldCA9IHRvX2RvdG5ldCBzeW1ib2xfdGFibGVfVjNcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfVjMgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9WM1xubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX1Y0XG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1YzX2xpZ2h0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfVjNfbGlnaHRcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfZG90bmV0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfZG90bmV0XG5cbmxldCB3aXRoX2RvdF9hbmRfcGx1cyBzeW1ib2xfdGFibGUgPVxuICB7XG4gICAgc3ltYm9sX3RhYmxlIHdpdGhcbiAgICBhZ2VudF9zZXBfcGx1cyA9IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQuYWdlbnRfc2VwX3BsdXM7XG4gICAgYWdlbnRfc2VwX2RvdCA9IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQuYWdlbnRfc2VwX2RvdDtcbiAgfVxuIiwiKCoqXG4gICAgKiByZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUubWxcbiAgICAqXG4gICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICAqXG4gICAgKiBDcmVhdGlvbjogMTIvMTAvMjAxMFxuICAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMjggMjAxOD5cbiAgICAqICpcbiAgICAqIFNpZ25hdHVyZSBmb3IgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIG1lbW9yeVxuICAgICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgcnVsZV9rZXkgPSBpbnRcblxudHlwZSBlbmdpbmVfc3RhdGUgPSB7XG4gIGNvbW1hbmRfbGluZTogc3RyaW5nIG9wdGlvbjtcbiAgd2FrZV91cF9tYXA6IChydWxlX2tleSAtPiBydWxlX2tleSBsaXN0KSBvcHRpb247XG59XG5cbmxldCBlbXB0eV9lbmdpbmVfc3RhdGUgPSB7IGNvbW1hbmRfbGluZSA9IE5vbmU7IHdha2VfdXBfbWFwID0gTm9uZSB9XG5sZXQgd2FrZV91cF9tYXAgZXJyb3IgZW5naW5lX3N0YXRlID0gZXJyb3IsIGVuZ2luZV9zdGF0ZS53YWtlX3VwX21hcFxuIiwiKCoqXG4gICAgKiBleGNlcHRpb24ubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8Tm92IDA0IDIwMTg+XG4gICAgKiAqXG4gICAgKiBUaGlzIGxpYnJhcnkgZGVjbGFyZXMgZXhjZXB0aW9uc1xuICAgICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHVuY2F1Z2h0X2V4Y2VwdGlvbiA9IHtcbiAgZmlsZV9uYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBtZXNzYWdlOiBzdHJpbmcgb3B0aW9uO1xuICBhbGFybTogZXhuO1xufVxuXG50eXBlIGNhdWdodF9leGNlcHRpb24gPSB7XG4gIHVuY2F1Z2h0X2V4Y2VwdGlvbjogdW5jYXVnaHRfZXhjZXB0aW9uO1xuICBjYWxsaW5nX3N0YWNrOiBzdHJpbmcgbGlzdDtcbn1cblxuZXhjZXB0aW9uIFVuY2F1Z2h0X2V4Y2VwdGlvbiBvZiB1bmNhdWdodF9leGNlcHRpb25cbmV4Y2VwdGlvbiBDYXVnaHRfZXhjZXB0aW9uIG9mIGNhdWdodF9leGNlcHRpb25cblxubGV0IHJlYyBleG5fdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRXhpdCAtPiBgQXNzb2MgWyBcIkV4aXRcIiwgYE51bGwgXVxuICB8IE5vdF9mb3VuZCAtPiBgQXNzb2MgWyBcIk5vdF9mb3VuZFwiLCBgTnVsbCBdXG4gIHwgQXJnLkJhZCB4IC0+IGBBc3NvYyBbIFwiQXJnLkJhZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3lzLkJyZWFrIC0+IGBBc3NvYyBbIFwiU3lzLkJyZWFrXCIsIGBOdWxsIF1cbiAgfCBTdGFjay5FbXB0eSAtPiBgQXNzb2MgWyBcIlN0YWNrLkVtcHR5XCIsIGBOdWxsIF1cbiAgfCBRdWV1ZS5FbXB0eSAtPiBgQXNzb2MgWyBcIlF1ZXVlLkVtcHR5XCIsIGBOdWxsIF1cbiAgfCBTdHJlYW0uRXJyb3IgeCAtPiBgQXNzb2MgWyBcIlN0cmVhbS5FcnJvclwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gYEFzc29jIFsgXCJTdHJlYW0uRmFpbHVyZVwiLCBgTnVsbCBdXG4gIHwgQXJnLkhlbHAgeCAtPiBgQXNzb2MgWyBcIkFyZy5IZWxwXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IGBBc3NvYyBbIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiLCBgTnVsbCBdXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gYEFzc29jIFsgXCJTY2FuX2ZhaWx1cmVcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IExhenkuVW5kZWZpbmVkIC0+IGBBc3NvYyBbIFwiTGF6eS5VbmRlZmluZWRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciAoYSwgYiwgYykgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcIlVuaXhMYWJlbHMuVW5peF9lcnJvclwiLFxuICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImZzdFwiLCBKc29uVXRpbC5vZl91bml4X2xhYmVsIGE7XG4gICAgICAgICAgICAgIFwic25kXCIsIEpzb25VdGlsLm9mX3N0cmluZyBiO1xuICAgICAgICAgICAgICBcInRyZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYztcbiAgICAgICAgICAgIF0gKTtcbiAgICAgIF1cbiAgfCBVbml4LlVuaXhfZXJyb3IgKGEsIGIsIGMpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJVbml4LlVuaXguZXJyb3JcIixcbiAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJmc3RcIiwgSnNvblV0aWwub2ZfdW5peF9lcnJvciBhO1xuICAgICAgICAgICAgICBcInNuZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYjtcbiAgICAgICAgICAgICAgXCJ0cmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGM7XG4gICAgICAgICAgICBdICk7XG4gICAgICBdXG4gIHwgRmFpbHVyZSB4IC0+IGBBc3NvYyBbIFwiRmFpbHVyZVwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gYEFzc29jIFsgXCJTdGFja19vdmVyZmxvd1wiLCBgTnVsbCBdXG4gIHwgQ2F1Z2h0X2V4Y2VwdGlvbiB4IC0+IGBBc3NvYyBbIFwiQ2F1Z2h0XCIsIGNhdWdodF9leGNlcHRpb25fdG9fanNvbiB4IF1cbiAgfCBVbmNhdWdodF9leGNlcHRpb24geCAtPiBgQXNzb2MgWyBcIlVuY2F1Z2h0XCIsIHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHggXVxuICB8IF8gLT4gYEFzc29jIFsgXCJVbmtub3duXCIsIGBOdWxsIF1cblxuYW5kIHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHVuY2F1Z2h0ID1cbiAgSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOlwiZmlsZV9uYW1lXCIgfmxhYjI6XCJtZXNzYWdlXCIgfmxhYjM6XCJleG5cIlxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgIGV4bl90b19qc29uXG4gICAgKHVuY2F1Z2h0LmZpbGVfbmFtZSwgdW5jYXVnaHQubWVzc2FnZSwgdW5jYXVnaHQuYWxhcm0pXG5cbmFuZCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24gY2F1Z2h0ID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInVuY2F1Z2h0X2V4Y2VwdGlvblwiIH5sYWIyOlwiY2FsbGluZ19zdGFja1wiXG4gICAgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAoSnNvblV0aWwub2ZfbGlzdCBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgKGNhdWdodC51bmNhdWdodF9leGNlcHRpb24sIGNhdWdodC5jYWxsaW5nX3N0YWNrKVxuXG5sZXQgcmVjIGV4bl9vZl9qc29uIChqc29uIDogWW9qc29uLkJhc2ljLnQpID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIFsgKFwiRXhpdFwiLCBgTnVsbCkgXSAtPiBFeGl0XG4gIHwgYEFzc29jIFsgKFwiTm90X2ZvdW5kXCIsIGBOdWxsKSBdIC0+IE5vdF9mb3VuZFxuICB8IGBBc3NvYyBbIChcIkFyZy5CYWRcIiwgeCkgXSAtPiBBcmcuQmFkIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJTeXMuQnJlYWtcIiwgYE51bGwpIF0gLT4gU3lzLkJyZWFrXG4gIHwgYEFzc29jIFsgKFwiU3RhY2suRW1wdHlcIiwgYE51bGwpIF0gLT4gU3RhY2suRW1wdHlcbiAgfCBgQXNzb2MgWyAoXCJRdWV1ZS5FbXB0eVwiLCBgTnVsbCkgXSAtPiBRdWV1ZS5FbXB0eVxuICB8IGBBc3NvYyBbIChcIlN0cmVhbS5FcnJvclwiLCB4KSBdIC0+IFN0cmVhbS5FcnJvciAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiU3RyZWFtLkZhaWx1cmVcIiwgYE51bGwpIF0gLT4gU3RyZWFtLkZhaWx1cmVcbiAgfCBgQXNzb2MgWyAoXCJBcmcuSGVscFwiLCB4KSBdIC0+IEFyZy5IZWxwIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIsIGBOdWxsKSBdIC0+IFBhcnNpbmcuUGFyc2VfZXJyb3JcbiAgfCBgQXNzb2MgWyAoXCJTY2FuX2ZhaWx1cmVcIiwgeCkgXSAtPiBTY2FuZi5TY2FuX2ZhaWx1cmUgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIkxhenkuVW5kZWZpbmVkXCIsIGBOdWxsKSBdIC0+IExhenkuVW5kZWZpbmVkXG4gIHwgYEFzc29jIFsgKFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIsIGBBc3NvYyBsKSBdIHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAgVW5peExhYmVscy5Vbml4X2Vycm9yXG4gICAgICAgICAoIEpzb25VdGlsLnRvX3VuaXhfbGFiZWwgKExpc3QuYXNzb2MgXCJmc3RcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwic25kXCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInRyZFwiIGwpIClcbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwidW5peCBsYWJlbHMgZXJyb3JcIiwganNvbikpKVxuICB8IGBBc3NvYyBbIChcIlVuaXguVW5peF9lcnJvclwiLCBgQXNzb2MgbCkgXSB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIFVuaXguVW5peF9lcnJvclxuICAgICAgICAgKCBKc29uVXRpbC50b191bml4X2xhYmVsIChMaXN0LmFzc29jIFwiZnN0XCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInNuZFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJ0cmRcIiBsKSApXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwidW5peCBlcnJvclwiLCBqc29uKSkpXG4gIHwgYEFzc29jIFsgKFwiRmFpbHVyZVwiLCB4KSBdIC0+IEZhaWx1cmUgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN0YWNrX292ZXJmbG93XCIsIGBOdWxsKSBdIC0+IFN0YWNrX292ZXJmbG93XG4gIHwgYEFzc29jIFsgKFwiQ2F1Z2h0XCIsIHgpIF0gLT4gQ2F1Z2h0X2V4Y2VwdGlvbiAoY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIHgpXG4gIHwgYEFzc29jIFsgKFwiVW5jYXVnaHRcIiwgeCkgXSAtPlxuICAgIFVuY2F1Z2h0X2V4Y2VwdGlvbiAodW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24geClcbiAgfCBgQXNzb2MgWyAoXCJVbmtub3duXCIsIGBOdWxsKSBdIC0+IEZhaWx1cmUgXCJVbmtub3duXCJcbiAgfCBfIC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImV4Y2VwdGlvblwiLCBqc29uKSlcblxuYW5kIHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIGpzb24gPVxuICBsZXQgYSwgYiwgYyA9XG4gICAgSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOlwiZmlsZV9uYW1lXCIgfmxhYjI6XCJtZXNzYWdlXCIgfmxhYjM6XCJleG5cIlxuICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJmaWxlX25hbWVcIikpXG4gICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcIm1lc3NhZ2VcIikpXG4gICAgICBleG5fb2ZfanNvbiBqc29uXG4gIGluXG4gIHsgZmlsZV9uYW1lID0gYTsgbWVzc2FnZSA9IGI7IGFsYXJtID0gYyB9XG5cbmFuZCBjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiID1cbiAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOlwidW5jYXVnaHRfZXhjZXB0aW9uXCIgfmxhYjI6XCJjYWxsaW5nX3N0YWNrXCJcbiAgICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uXG4gICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwiY2FsbGluZyBzdGFja1wiXG4gICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzdGFjayBlbHRcIikpXG4gICAgICBqc29uXG4gIGluXG4gIHsgdW5jYXVnaHRfZXhjZXB0aW9uID0gYTsgY2FsbGluZ19zdGFjayA9IGIgfVxuXG5sZXQgYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuID1cbiAgeyBmaWxlX25hbWU7IG1lc3NhZ2U7IGFsYXJtID0gZXhuIH1cblxubGV0IGJ1aWxkX2NhdWdodF9leGNlcHRpb24gZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIHN0YWNrID1cbiAge1xuICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbiA9IGJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4bjtcbiAgICBjYWxsaW5nX3N0YWNrID0gc3RhY2s7XG4gIH1cblxubGV0IHJhaXNlX2V4Y2VwdGlvbiBmaWxlX25hbWUgX2tleSBtZXNzYWdlIGV4biA9XG4gIHJhaXNlIChVbmNhdWdodF9leGNlcHRpb24geyBmaWxlX25hbWU7IG1lc3NhZ2U7IGFsYXJtID0gZXhuIH0pXG5cbmxldCByZWMgcHBfZXhjZXB0aW9uIGYgPSBmdW5jdGlvblxuICB8IEV4aXQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiRXhpdFwiXG4gIHwgTm90X2ZvdW5kIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIk5vdF9mb3VuZFwiXG4gIHwgQXJnLkJhZCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJBcmcuQmFkKCVzKVwiIHhcbiAgfCBTeXMuQnJlYWsgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3lzLkJyZWFrXCJcbiAgfCBTdGFjay5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdGFjay5FbXB0eVwiXG4gIHwgUXVldWUuRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiUXVldWUuRW1wdHlcIlxuICB8IFN0cmVhbS5FcnJvciB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJTdHJlYW0uRXJyb3IgJXNcIiB4XG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3RyZWFtLkZhaWx1cmVcIlxuICB8IEFyZy5IZWxwIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkFyZy5IZWxwKCVzKVwiIHhcbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIlxuICB8IFNjYW5mLlNjYW5fZmFpbHVyZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJTY2FuZi5TY2FuLmZhaWx1cmUoJXMpXCIgeFxuICB8IExhenkuVW5kZWZpbmVkIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkxhenkuVW5kZWZpbmVkXCJcbiAgfCBVbml4TGFiZWxzLlVuaXhfZXJyb3IgKGVyLCB4LCB5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbml4TGFiZWxzLlVuaXhfZXJyb3IoJXMsJXMsJXMpXCJcbiAgICAgIChVbml4TGFiZWxzLmVycm9yX21lc3NhZ2UgZXIpXG4gICAgICB4IHlcbiAgfCBVbml4LlVuaXhfZXJyb3IgKGVyLCB4LCB5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbml4LlVuaXhfZXJyb3IoJXMsJXMsJXMpXCIgKFVuaXguZXJyb3JfbWVzc2FnZSBlcikgeCB5XG4gIHwgRmFpbHVyZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJGYWlsdXJlKCVzKVwiIHhcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdGFja19vdmVyZmxvd1wiXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiVW5jYXVnaHRfZXhjZXB0aW9uKCVhKVwiIHBwX3VuY2F1Z2h0IHhcbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkNhdWdodF9leGNlcHRpb24oJWEpXCIgcHBfY2F1Z2h0IHhcbiAgfCBleGMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChQcmludGV4Yy50b19zdHJpbmcgZXhjKVxuXG5hbmQgcHBfdW5jYXVnaHQgZiB4ID1cbiAgbGV0IHdpdGhfc3BhY2UgPSBmYWxzZSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYSVhZXhjZXB0aW9uOkAgJWFAXVwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZSAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiZmlsZV9uYW1lOiAlczsgXCIgeCkpXG4gICAgeC5maWxlX25hbWVcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJtZXNzYWdlOiAlczsgXCIgeCkpXG4gICAgeC5tZXNzYWdlIHBwX2V4Y2VwdGlvbiB4LmFsYXJtXG5cbmFuZCBwcF9jYXVnaHQgZiB4ID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+Y2FsbGluZ19zdGFjazogJWE7ICVhQF1cIlxuICAgIChQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcpXG4gICAgeC5jYWxsaW5nX3N0YWNrIHBwX3VuY2F1Z2h0IHgudW5jYXVnaHRfZXhjZXB0aW9uXG5cbmxldCByZWMgc3RyaW5nbGlzdF9vZl9leGNlcHRpb24geCBzdGFjayA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEV4aXQgLT4gXCJFeGl0XCIgOjogc3RhY2tcbiAgfCBOb3RfZm91bmQgLT4gXCJOb3RfZm91bmRcIiA6OiBzdGFja1xuICB8IEFyZy5CYWQgeCAtPiBcIkFyZy5CYWQoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IFN5cy5CcmVhayAtPiBcIlN5cy5CcmVha1wiIDo6IHN0YWNrXG4gIHwgU3RhY2suRW1wdHkgLT4gXCJTdGFjay5FbXB0eVwiIDo6IHN0YWNrXG4gIHwgUXVldWUuRW1wdHkgLT4gXCJRdWV1ZS5FbXB0eVwiIDo6IHN0YWNrXG4gIHwgU3RyZWFtLkVycm9yIHggLT4gXCJTdHJlYW0uRXJyb3JcIiA6OiB4IDo6IHN0YWNrXG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gXCJTdHJlYW0uRmFpbHVyZVwiIDo6IHN0YWNrXG4gIHwgQXJnLkhlbHAgeCAtPiBcIkFyZy5IZWxwKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IFwiUGFyc2luZy5QYXJzZV9lcnJvclwiIDo6IHN0YWNrXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gXCJTY2FuZi5TY2FuLmZhaWx1cmUoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IExhenkuVW5kZWZpbmVkIC0+IFwiTGF6eS5VbmRlZmluZWRcIiA6OiBzdGFja1xuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciBfIC0+IFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIgOjogc3RhY2tcbiAgfCBVbml4LlVuaXhfZXJyb3IgXyAtPiBcIlVuaXguVW5peC5lcnJvclwiIDo6IHN0YWNrXG4gIHwgRmFpbHVyZSB4IC0+IFwiRmFpbHVyZShcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFja19vdmVyZmxvd1wiIDo6IHN0YWNrXG4gIHwgQ2F1Z2h0X2V4Y2VwdGlvbiB4IC0+XG4gICAgXCJDYXVnaHRfZXhjZXB0aW9uKFwiIDo6IHN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IHggKFwiKVwiIDo6IHN0YWNrKVxuICB8IFVuY2F1Z2h0X2V4Y2VwdGlvbiB4IC0+XG4gICAgXCJVbmNhdWdodF9leGNlcHRpb24oXCIgOjogc3RyaW5nbGlzdF9vZl91bmNhdWdodCB4IChcIilcIiA6OiBzdGFjaylcbiAgfCBfIC0+IFwiVW5rbm93blwiIDo6IHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHggc3RhY2sgPVxuICAobWF0Y2ggeC5maWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgZmlsZV9uYW1lIC0+IFwiZmlsZV9uYW1lOiBcIiBeIGZpbGVfbmFtZSBeIFwiOyBcIilcbiAgOjogKG1hdGNoIHgubWVzc2FnZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgIHwgU29tZSBtZXNzYWdlIC0+IFwibWVzc2FnZTogXCIgXiBtZXNzYWdlIF4gXCI7IFwiKVxuICA6OiBcImV4Y2VwdGlvbjpcIlxuICA6OiBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4LmFsYXJtIHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX2NhdWdodCB4IHN0YWNrID1cbiAgXCJjYWxsaW5nX3N0YWNrOiBcIlxuICA6OiAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzb2wgc3RyaW5nIC0+IHN0cmluZyA6OiBcIiwgXCIgOjogc29sKVxuICAgICAgICAoXCI7IFwiIDo6IHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgeC51bmNhdWdodF9leGNlcHRpb24gKFwiOyBcIiA6OiBzdGFjaykpKVxuICAgICAgIHguY2FsbGluZ19zdGFja1xuXG5hbmQgc3RyaW5nbGlzdF9vZl91bmNhdWdodF9saWdodCB4IHN0YWNrID1cbiAgKG1hdGNoIHguZmlsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGZpbGVfbmFtZSAtPiBcImZpbGVfbmFtZTogXCIgXiBmaWxlX25hbWUgXiBcIjsgXCIpXG4gIDo6IChtYXRjaCB4Lm1lc3NhZ2Ugd2l0aFxuICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICB8IFNvbWUgbWVzc2FnZSAtPiBcIm1lc3NhZ2U6IFwiIF4gbWVzc2FnZSBeIFwiOyBcIilcbiAgOjogXCJleGNlcHRpb246XCJcbiAgOjogc3RyaW5nbGlzdF9vZl9leGNlcHRpb24geC5hbGFybSBzdGFja1xuXG5hbmQgc3RyaW5nbGlzdF9vZl9jYXVnaHRfbGlnaHQgeCBzdGFjayA9XG4gIFwiY2FsbGluZ19zdGFjazogXCJcbiAgOjogKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc29sIHN0cmluZyAtPiBzdHJpbmcgOjogXCIsIFwiIDo6IHNvbClcbiAgICAgICAgKFwiOyBcIlxuICAgICAgICA6OiBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0X2xpZ2h0IHgudW5jYXVnaHRfZXhjZXB0aW9uIChcIjsgXCIgOjogc3RhY2spKSlcbiAgICAgICB4LmNhbGxpbmdfc3RhY2tcblxudHlwZSBtZXRob2RfaGFuZGxlciA9IHtcbiAgbWhfY2F1Z2h0X2Vycm9yX2xpc3Q6IGNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk6IGNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdDogdW5jYXVnaHRfZXhjZXB0aW9uIGxpc3Q7XG4gIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk6IHVuY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xufVxuXG5sZXQgdG9fanNvbiBtZXRob2RfaGFuZGxlciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJjYXVnaHRcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAgICAgICBtZXRob2RfaGFuZGxlci5taF9jYXVnaHRfZXJyb3JfbGlzdCApO1xuICAgICAgKCBcImNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IGNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpICk7XG4gICAgICAoIFwidW5jYXVnaHRcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgKTtcbiAgICAgICggXCJ1bmNhdWdodF90b191aVwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSApO1xuICAgIF1cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgY2F1Z2h0ID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IGNhdWdodF9leGNlcHRpb25fb2ZfanNvbikgKExpc3QuYXNzb2MgXCJjYXVnaHRcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IGNhdWdodF90b191aSA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCBjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24pXG4gICAgICAgICAgIChMaXN0LmFzc29jIFwiY2F1Z2h0X3RvX3VpXCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCB1bmNhdWdodCA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbikgKExpc3QuYXNzb2MgXCJ1bmNhdWdodFwiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgdW5jYXVnaHRfdG9fdWkgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24pXG4gICAgICAgICAgIChMaXN0LmFzc29jIFwidW5jYXVnaHRfdG9fdWlcIiBsKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgbWhfY2F1Z2h0X2Vycm9yX2xpc3QgPSBjYXVnaHQ7XG4gICAgICAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IGNhdWdodF90b191aTtcbiAgICAgICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgPSB1bmNhdWdodDtcbiAgICAgICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSB1bmNhdWdodF90b191aTtcbiAgICAgICB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiZXJyb3IgaGFuZGxlclwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJlcnJvciBoYW5kbGVyXCIsIHgpKVxuXG5sZXQgZW1wdHlfZXJyb3JfaGFuZGxlciA9XG4gIHtcbiAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdCA9IFtdO1xuICAgIG1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gW107XG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IFtdO1xuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSBbXTtcbiAgfVxuXG5sZXQgYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX3VpIHVuY2F1Z2h0IGVycm9yID1cbiAge1xuICAgIGVycm9yIHdpdGhcbiAgICBtaF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpID1cbiAgICAgIHVuY2F1Z2h0IDo6IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk7XG4gIH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvcl90b19vdGhlcnMgdW5jYXVnaHQgZXJyb3IgPVxuICB7XG4gICAgZXJyb3Igd2l0aFxuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgPSB1bmNhdWdodCA6OiBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0O1xuICB9XG5cbmxldCBhZGRfdW5jYXVnaHRfZXJyb3IgP3RvX3VpIHVuY2F1Z2h0IGVycm9yID1cbiAgbGV0IGVycm9yID1cbiAgICBtYXRjaCB0b191aSB3aXRoXG4gICAgfCBTb21lIGZhbHNlIHwgTm9uZSAtPiBlcnJvclxuICAgIHwgU29tZSB0cnVlIC0+IGFkZF91bmNhdWdodF9lcnJvcl90b191aSB1bmNhdWdodCBlcnJvclxuICBpblxuICBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fb3RoZXJzIHVuY2F1Z2h0IGVycm9yXG5cbmxldCBnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGVycm9yID0gZXJyb3IubWhfY2F1Z2h0X2Vycm9yX2xpc3RcbmxldCBnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIGVycm9yID0gZXJyb3IubWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWlcbmxldCBnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgZXJyb3IgPSBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0XG5sZXQgZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIGVycm9yID0gZXJyb3IubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aVxuXG5sZXQgaXNfZW1wdHlfZXJyb3JfaGFuZGxlciB4ID1cbiAgeC5taF9jYXVnaHRfZXJyb3JfbGlzdCA9IFtdICYmIHgubWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IFtdXG4iLCIoKipcbiAgKiBjb25maWcubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uL0FudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAyOCAyMDE4PlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnNcbiAgKiByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNVxuICAqIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxuXG5sZXQgZGF0ZSA9IFwiPDIwMTUuMDEuMjNcIlxubGV0IHZlcnNpb24gPSBcIjQuMDFcIlxubGV0IG91dHB1dF9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9jbV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9pbV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IHVuc2FmZSA9IHJlZiB0cnVlXG5sZXQgdHJhY2UgPSByZWYgZmFsc2VcbmxldCBzeW50YXhfdmVyc2lvbiA9IHJlZiBcIlY0XCJcbmxldCBkdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1ciA9IHJlZiBmYWxzZVxubGV0IGxvZyA9IHJlZiBzdGRvdXRcbmxldCBmb3JtYXR0ZXIgPSByZWYgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbmxldCBmaWxlID0gcmVmIChOb25lIDogc3RyaW5nIG9wdGlvbilcbmxldCBsaW5rX21vZGUgPSByZWYgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQm91bmRfaW5kaWNlc1xuXG4oKiogaW5mbHVlbmNlIG1hcCAqKVxubGV0IGRvX2luZmx1ZW5jZV9tYXAgPSByZWYgdHJ1ZVxuXG5sZXQgcnVsZV9zaGFwZSA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0XG5cbmxldCBydWxlX2NvbG9yID1cbiAgcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAoKlwiIzg3Y2VlYlwiICgqIGxpZ2h0IHNreSBibHVlICopKilcblxubGV0IHZhcmlhYmxlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcblxubGV0IHZhcmlhYmxlX2NvbG9yID1cbiAgcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAoKiBcIiM5OGZiOThcIiAoKlBhbGUgZ3JlZW4qKSopXG5cbmxldCBjZW50ZXJfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkXG5sZXQgd2FrZV91cF9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAoKlwiIzAwZmYwMFwiICgqR3JlZW4gKikqKVxubGV0IGluaGliaXRpb25fY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkICgqXCIjZmYwMDAwXCIgKCpyZWQqKSopXG5sZXQgd2FrZV91cF9hcnJvdyA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbmxldCBpbmhpYml0aW9uX2Fycm93ID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlRlZVxubGV0IGluZmx1ZW5jZV9tYXBfZmlsZSA9IHJlZiBcImluZmx1ZW5jZVwiXG5sZXQgaW5mbHVlbmNlX21hcF9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IHByb21wdF9mdWxsX3Zhcl9kZWYgPSByZWYgZmFsc2VcbmxldCBwcm9tcHRfZnVsbF9ydWxlX2RlZiA9IHJlZiBmYWxzZVxuXG5sZXQgbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdCA9XG4gIHJlZiBbICdcXFwiJywgWyAnXFxcXCc7ICdcXFwiJyBdOyAnXFxcXCcsIFsgJ1xcXFwnOyAnXFxcXCcgXSBdXG5cbigqKiBjb250YWN0IG1hcCopXG5sZXQgZG9fY29udGFjdF9tYXAgPSByZWYgdHJ1ZVxuXG5sZXQgZG9fc2NjID0gcmVmIGZhbHNlXG5sZXQgcHVyZV9jb250YWN0ID0gcmVmIGZhbHNlXG5sZXQgY29udGFjdF9tYXBfZmlsZSA9IHJlZiBcImNvbnRhY3RcIlxubGV0IGNvbnRhY3RfbWFwX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgYmluZGluZ19zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxubGV0IGJpbmRpbmdfc2l0ZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3dcbmxldCBpbnRlcm5hbF9zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcbmxldCBpbnRlcm5hbF9zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuXG5sZXQgY291bnRlcl9zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlXG5sZXQgY291bnRlcl9zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXlcbmxldCBhZ2VudF9zaGFwZV9hcnJheSA9IHJlZiAoW3x8XSA6IEdyYXBoX2xvZ2dlcnNfc2lnLnNoYXBlIG9wdGlvbiBhcnJheSlcbmxldCBhZ2VudF9jb2xvcl9hcnJheSA9IHJlZiAoW3x8XSA6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbiBhcnJheSlcbmxldCBhZ2VudF9zaGFwZV9kZWYgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxubGV0IGFnZW50X2NvbG9yX2RlZiA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlXG5sZXQgbGlua19jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xubGV0IGluZmx1ZW5jZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbmxldCBpbmZsdWVuY2VfYXJyb3cgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG5cbigqKmZsb3cgb2YgaW5mb3JtYXRpb246IGludGVybmFsOyBleHRlcm5hbCBmbG93KilcbmxldCBkb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiA9IHJlZiBmYWxzZVxuXG5sZXQgZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uID0gcmVmIGZhbHNlXG5cbigqY292ZXJpbmcgY2xhc3NlczogdGhpcyBwYXJhbWV0ZXIgZG9lcyBub3QgbWF0dGVyIGlmIGl0IGlzIHRydWUvZmFsc2UqKVxubGV0IGRvX3NpdGVfZGVwZW5kZW5jaWVzID0gcmVmIGZhbHNlXG5cbigqc2V0IHRvIHRydWUgaWYgb25lIHdhbnRzIHRvIHByaW50IGNvdmVyaW5nIGNsYXNzZXMqKVxubGV0IGR1bXBfc2l0ZV9kZXBlbmRlbmNpZXMgPSByZWYgZmFsc2VcblxuKCpSRU1BUks6IG9uZSBuZWVkcyB0byBzZXQgZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIHRvIHRydWUgZmlyc3QgdG8gYmVcbiAgYWJsZSB0byBhY3RpdmUgZGlmZmVyZW50IG91dHB1dCAqKVxubGV0IGRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgdmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgPSByZWYgXCJMb3dcIlxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IHJlZiB0cnVlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPSByZWYgZmFsc2VcbmxldCBoaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9IHJlZiB0cnVlXG5sZXQgaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9IHJlZiB0cnVlXG5sZXQgc21hc2hfcmVsYXRpb25zID0gcmVmIHRydWVcbmxldCB1c2VfbmF0dXJhbF9sYW5ndWFnZSA9IHJlZiBcImthcHBhXCJcbmxldCBjb21wdXRlX2xvY2FsX3RyYWNlcyA9IHJlZiBmYWxzZVxubGV0IHNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPSByZWYgdHJ1ZVxubGV0IHVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IHJlZiBmYWxzZVxubGV0IGFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9IHJlZiBmYWxzZVxubGV0IGFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9IHJlZiBmYWxzZVxubGV0IGRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZ2VzID0gcmVmIGZhbHNlXG5sZXQgbG9jYWxfdHJhY2VfcHJlZml4ID0gcmVmIFwiQWdlbnRfdHJhY2VfXCJcbmxldCBsb2NhbF90cmFjZV9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IGNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxuXG4oKiogYWNjdXJhY3kgKilcblxubGV0IHdpdGhfdmlld3NfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfZHluYW1pY19jb250YWN0X21hcCA9IHJlZiBcImR5bmFtaWNcIlxubGV0IHdpdGhfY291bnRlcnNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IGNvdW50ZXJfYW5hbHlzaXNfZG9tYWluID0gcmVmIFwibWlcIlxubGV0IHZpZXdfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJIaWdoXCJcbmxldCBpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiRGlyZWN0XCJcbmxldCBjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkxvd1wiXG5sZXQgc2NjX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiSGlnaFwiXG5cbigqIFN5bW1ldHJpZXMgKilcbmxldCBkb19zeW1tZXRyaWVzID0gcmVmIGZhbHNlXG5sZXQgcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiYmlvY2hlbWlzdFwiXG5cbigqIEJhY2tkb29ycyAtIHN0YXRzIGZvciBiZW5jaG1hcmtpbmcgKilcbmxldCBwcmludF9lZmZpY2llbmN5ID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3NjYyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ydWxlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX3RpbWluZyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX2ZpbGUgPSByZWYgXCJiZW5jaG1hcmsudGV4XCJcbmxldCBiYWNrZG9vcl9kaXJlY3RvcnkgPSByZWYgXCJcIlxuIiwiKCoqXG4gICogcGFyYW1ldGVycy5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24vQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMjAxMCwgdGhlIDE5dGggb2YgRGVjZW1iZXJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEphbiAwOCAyMDIwPlxuICAqICpcbiAgKiBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgd2hpY2ggYXJlIHBhc3NlZCB0aHJvdWdoIGZ1bmN0aW9ucyBjb21wdXRhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcblxubGV0IGFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbWVudGlvbmVkIGEgZXh0ID1cbiAgbGV0IHNpemVfYSA9IFN0cmluZy5sZW5ndGggYSBpblxuICBsZXQgc2l6ZV9leHQgPSBTdHJpbmcubGVuZ3RoIGV4dCBpblxuICB0cnlcbiAgICBpZiBzaXplX2EgPCBzaXplX2V4dCB8fCBTdHJpbmcuc3ViIGEgKHNpemVfYSAtIHNpemVfZXh0KSBzaXplX2V4dCA9IGV4dCB0aGVuXG4gICAgICBhXG4gICAgZWxzZVxuICAgICAgYSBeIGV4dFxuICB3aXRoIF8gLT4gYSBeIGV4dFxuXG5sZXQgb3Blbl9vdXQgYSBleHQgPVxuICAoKiBpdCB3b3VsZCBiZSBlYXNpZXIgd2l0aCBPQ2FtbCAzLjA0ICopXG4gIGxldCBhID0gYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tZW50aW9uZWQgYSBleHQgaW5cbiAgbGV0IGQgPSBGaWxlbmFtZS5kaXJuYW1lIGEgaW5cbiAgbGV0ICgpID1cbiAgICB0cnlcbiAgICAgIGlmIG5vdCAoU3lzLmlzX2RpcmVjdG9yeSBkKSB0aGVuIChcbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCInJXMnIGlzIG5vdCBhIGRpcmVjdG9yeUAuXCIgZDtcbiAgICAgICAgZXhpdCAxXG4gICAgICApXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBLYXBwYV9maWxlcy5ta19kaXJfciBkXG4gIGluXG4gIG9wZW5fb3V0IGFcblxubGV0IG9wZW5fYXBwZW5kIGEgZXh0ID1cbiAgbGV0IGEgPSBhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X21lbnRpb25lZCBhIGV4dCBpblxuICBsZXQgZCA9IEZpbGVuYW1lLmRpcm5hbWUgYSBpblxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IGQpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBkO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IEthcHBhX2ZpbGVzLm1rX2Rpcl9yIGRcbiAgaW5cbiAgdHJ5IG9wZW5fb3V0X2dlbiBbIE9wZW5fYXBwZW5kIF0gNTExIGEgd2l0aCBfIC0+IG9wZW5fb3V0IGEgZXh0XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxuXG5sZXQgZXh0X2Zvcm1hdCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UIC0+IFwiLmRvdFwiXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTCAtPiBcIi5odG1sXCJcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU0gLT4gXCIuZGltLmpzb25cIlxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJIC0+IFwiLmdleGZcIlxuXG5sZXQgZmV0Y2hfbGV2ZWxfZ2VuIHMgciA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhciB3aXRoXG4gIHwgXCJtdXRlXCIgfCBcIm5vbmVcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lXG4gIHwgXCJsb3dcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3dcbiAgfCBcIm1lZGl1bVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bVxuICB8IFwiaGlnaFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2hcbiAgfCBcImNvbXBsZXRlXCIgfCBcImZ1bGxcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsXG4gIHwgeCAtPlxuICAgIGxldCAoKSA9IFByaW50Zi5lcHJpbnRmIFwiJXM6ICVzIGlzIG5vdCBhIHZhbGlkIGxldmVsICEhIVwiIHMgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGZldGNoX2dyYXBoX2Zvcm1hdCBmID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFmIHdpdGhcbiAgfCBcImRvdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVFxuICB8IFwiaHRtbFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUxcbiAgfCBcImRpbVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTVxuICB8IFwiZ2VwaGlcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5HRVBISVxuICB8IHggLT5cbiAgICBsZXQgKCkgPSBQcmludGYuZXByaW50ZiBcIiVzIGlzIG5vdCBhIHZhbGlkIGdyYXBoIGZvcm1hdCAhISFcIiB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgciA9IGZldGNoX2xldmVsX2dlbiBcImFuIGFjY3VyYWN5XCIgclxubGV0IGZldGNoX3ZlcmJvc2l0eV9sZXZlbCByID0gZmV0Y2hfbGV2ZWxfZ2VuIFwiYSB2ZXJib3NpdHlcIiByXG5cbmxldCBmZXRjaF9yYXRlX2NvbnZlbnRpb24gZiA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhZiB3aXRoXG4gIHwgXCJrYXNpbVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vX2NvcnJlY3Rpb25cbiAgfCBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5EaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1xuICB8IFwiYmlvY2hlbWlzdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkJpb2NoZW1pc3RcbiAgfCB4IC0+XG4gICAgbGV0ICgpID0gUHJpbnRmLmVwcmludGYgXCIlcyBpcyBub3QgYSB2YWxpZCByYXRlIGNvbnZlbnRpb24gISEhXCIgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGdldF9zeW50YXhfdmVyc2lvbiAoKSA9XG4gIG1hdGNoICFDb25maWcuc3ludGF4X3ZlcnNpb24gd2l0aFxuICB8IFwiNFwiIHwgXCJ2NFwiIHwgXCJWNFwiIC0+IEFzdC5WNFxuICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IEFzdC5WM1xuICB8IF8gLT4gZmFpbHdpdGggXCJTeW50YXggdmVyc2lvbiBzaG91bGQgYmUgZWl0aGVyIFYzIG9yIFY0XCJcblxubGV0IGdldF9zeW1ib2xzICgpID1cbiAgbWF0Y2ggZ2V0X3N5bnRheF92ZXJzaW9uICgpIHdpdGhcbiAgfCBBc3QuVjMgLT4gU3ltYm9sX3RhYmxlLnN5bWJvbF90YWJsZV9WM1xuICB8IEFzdC5WNCAtPiBTeW1ib2xfdGFibGUuc3ltYm9sX3RhYmxlX1Y0XG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcCAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9mb3JtYXQgPVxuICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5pbmZsdWVuY2VfbWFwX2Zvcm1hdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9maWxlID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLmluZmx1ZW5jZV9tYXBfZmlsZSB3aXRoXG4gICAgICB8IFwiXCIgLT4gTm9uZVxuICAgICAgfCB4IC0+IFNvbWUgeCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZGlyZWN0b3J5ID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9pbV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgfCBcIlwiIC0+IFNvbWUgXCJcIlxuICAgICAgfCB4IC0+IFNvbWUgKHggXiBcIi9cIikpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfc2hhcGUgPSAhQ29uZmlnLnJ1bGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9jb2xvciA9ICFDb25maWcucnVsZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9zaGFwZSA9ICFDb25maWcudmFyaWFibGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfY29sb3IgPSAhQ29uZmlnLnZhcmlhYmxlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfY29sb3IgPSAhQ29uZmlnLndha2VfdXBfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9jb2xvciA9ICFDb25maWcuaW5oaWJpdGlvbl9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2Fycm93ID0gIUNvbmZpZy53YWtlX3VwX2Fycm93O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fYXJyb3cgPSAhQ29uZmlnLmluaGliaXRpb25fYXJyb3c7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfdmFyX2RlZiA9ICFDb25maWcucHJvbXB0X2Z1bGxfdmFyX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZiA9ICFDb25maWcucHJvbXB0X2Z1bGxfcnVsZV9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAoYSwgbCkgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5hZGQgYSBsIG1hcClcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5lbXB0eVxuICAgICAgICAhQ29uZmlnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3Q7XG4gIH1cblxubGV0IGdldF9jb250YWN0X21hcCAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9mb3JtYXQgPVxuICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5jb250YWN0X21hcF9mb3JtYXQ7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZmlsZSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5jb250YWN0X21hcF9maWxlIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICB8IHggLT4gU29tZSB4KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2NtX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gU29tZSBcIlwiXG4gICAgICB8IHggLT4gU29tZSAoeCBeIFwiL1wiKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHVyZV9jb250YWN0ID0gIUNvbmZpZy5wdXJlX2NvbnRhY3Q7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX3NoYXBlID0gIUNvbmZpZy5iaW5kaW5nX3NpdGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX2NvbG9yID0gIUNvbmZpZy5iaW5kaW5nX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9zaGFwZSA9ICFDb25maWcuaW50ZXJuYWxfc2l0ZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX2NvbG9yID0gIUNvbmZpZy5pbnRlcm5hbF9zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9zaGFwZSA9ICFDb25maWcuY291bnRlcl9zaXRlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9jb2xvciA9ICFDb25maWcuY291bnRlcl9zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X3NoYXBlX2FycmF5ID0gIUNvbmZpZy5hZ2VudF9zaGFwZV9hcnJheTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9hcnJheSA9ICFDb25maWcuYWdlbnRfY29sb3JfYXJyYXk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfZGVmID0gIUNvbmZpZy5hZ2VudF9zaGFwZV9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfZGVmID0gIUNvbmZpZy5hZ2VudF9jb2xvcl9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19jb2xvciA9ICFDb25maWcubGlua19jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfY29sb3IgPSAhQ29uZmlnLmluZmx1ZW5jZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfYXJyb3cgPSAhQ29uZmlnLmluZmx1ZW5jZV9hcnJvdztcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8wID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gICAgICBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pZ25vcmVfdHJpdmlhbF9sb3NhbmdlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9ucyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgICAgIHRydWU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgPSBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlcyA9XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1Q7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4ID0gXCJBZ2VudF90cmFjZV9cIjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCB4IC0+IHggXiBcIi9cIik7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMSA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzAgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMiA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzEgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMyA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSB0cnVlO1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzQgPVxuICB7XG4gICAgcmVhY2hhYmlsaXR5X21hcF8zIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IHRydWU7XG4gIH1cblxubGV0IGFkZF9kZWJ1Z2dpbmdfcGFyYW1ldGVyc190b19yZWFjaGFiaWxpdHlfbWFwIHJlYWNoYWJpbGl0eSA9XG4gIGxldCB0cmFjZSA9ICFDb25maWcudHJhY2UgaW5cbiAgbGV0IHJlYWNoYWJpbGl0eSA9XG4gICAge1xuICAgICAgcmVhY2hhYmlsaXR5IHdpdGhcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgICAgICAgIUNvbmZpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICAgICAgICAhQ29uZmlnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb247XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zbWFzaF9yZWxhdGlvbnMgPSAhQ29uZmlnLnNtYXNoX3JlbGF0aW9ucztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlID1cbiAgICAgICAgKG1hdGNoICFDb25maWcudXNlX25hdHVyYWxfbGFuZ3VhZ2Ugd2l0aFxuICAgICAgICB8IFwicmF3XCIgfCBcIlJBV1wiIHwgXCJSYXdcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5SYXdcbiAgICAgICAgfCBcImthcHBhXCIgfCBcIktBUFBBXCIgfCBcIkthcHBhXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FwcGFcbiAgICAgICAgfCBcIkVuZ2xpc2hcIiB8IFwiRU5HTElTSFwiIHwgXCJlbmdsaXNoXCIgLT5cbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5OYXR1cmFsX2xhbmd1YWdlXG4gICAgICAgIHwgXyAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYSk7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgICFDb25maWcuY29tcHV0ZV9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPVxuICAgICAgICAhQ29uZmlnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmlnbm9yZV90cml2aWFsX2xvc2FuZ2VzID1cbiAgICAgICAgIUNvbmZpZy5kb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmdlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9XG4gICAgICAgICFDb25maWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID1cbiAgICAgICAgIUNvbmZpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgIGZldGNoX2dyYXBoX2Zvcm1hdCBDb25maWcubG9jYWxfdHJhY2VfZm9ybWF0O1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4ID0gIUNvbmZpZy5sb2NhbF90cmFjZV9wcmVmaXg7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnkgPVxuICAgICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgICAgfCB4IC0+IHggXiBcIi9cIik7XG4gICAgfVxuICBpblxuICBpZiB0cmFjZSB0aGVuXG4gICAge1xuICAgICAgcmVhY2hhYmlsaXR5IHdpdGhcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWM7XG4gICAgfVxuICBlbHNlXG4gICAgcmVhY2hhYmlsaXR5XG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X21hcCAoKSA9XG4gIGFkZF9kZWJ1Z2dpbmdfcGFyYW1ldGVyc190b19yZWFjaGFiaWxpdHlfbWFwXG4gICAgKG1hdGNoXG4gICAgICAgZmV0Y2hfdmVyYm9zaXR5X2xldmVsIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpc1xuICAgICB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIC0+IHJlYWNoYWJpbGl0eV9tYXBfMFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93IC0+IHJlYWNoYWJpbGl0eV9tYXBfMVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtIC0+IHJlYWNoYWJpbGl0eV9tYXBfMlxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaCAtPiByZWFjaGFiaWxpdHlfbWFwXzNcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGwgLT4gcmVhY2hhYmlsaXR5X21hcF80KVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9wYXJhbWV0ZXJzICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdzID0gIUNvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNpdGVfYWNyb3NzX2JvbmRzID1cbiAgICAgICFDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbGxlbF9ib25kcyA9XG4gICAgICAhQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcnMgPSAhQ29uZmlnLndpdGhfY291bnRlcnNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHluYW1pY19jb250YWN0X21hcCA9XG4gICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcud2l0aF9keW5hbWljX2NvbnRhY3RfbWFwIHdpdGhcbiAgICAgIHwgXCJkeW5hbWljXCIgLT4gdHJ1ZVxuICAgICAgfCBcInN0YXRpY1wiIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9kb21haW4gPVxuICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLmNvdW50ZXJfYW5hbHlzaXNfZG9tYWluIHdpdGhcbiAgICAgIHwgXCJtaVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1pXG4gICAgICB8IFwib2N0YWdvblwiIHwgXCJvY3RcIiB8IFwib2N0b1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk9jdGFnb25zXG4gICAgICB8IFwiYWJzdHJhY3QtbXVsdGlzZXRcIiB8IFwiYW1cIiB8IFwiYWJzdHJhY3RfbXVsdGlzZXRcIiAtPlxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5BYnN0cmFjdF9tdWx0aXNldFxuICAgICAgfCBcIm5vbi1yZWxhdGlvbmFsXCIgfCBcIm5yXCIgfCBcIm5vbi1yZWxcIiB8IFwibm9uX3JlbFwiIHwgXCJub25fcmVsYXRpb25hbFwiIC0+XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbl9yZWxhdGlvbmFsXG4gICAgICB8IF8gLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWkpO1xuICB9XG5cbmxldCBvcGVuX3Rhc2tzX3Byb2ZpbGluZyA9XG4gIGxldCBjYWNoZSA9IHJlZiBOb25lIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFjYWNoZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgY2hhbm5lbCA9IEthcHBhX2ZpbGVzLm9wZW5fdGFza3NfcHJvZmlsaW5nICgpIGluXG4gICAgICBsZXQgKCkgPSBjYWNoZSA6PSBTb21lIGNoYW5uZWwgaW5cbiAgICAgIGNoYW5uZWxcbiAgICB8IFNvbWUgY2hhbm5lbCAtPiBjaGFubmVsXG5cbmxldCBmZXRjaF9iYWNrZG9vcnMgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3NjYyA9ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3NjYztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWdcbiAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX3RpbWluZyA9ICFDb25maWcuYmFja2Rvb3JfdGltaW5nO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2ZpbGUgPSAhQ29uZmlnLmJhY2tkb29yX2ZpbGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZGlyZWN0b3J5ID0gIUNvbmZpZy5iYWNrZG9vcl9kaXJlY3Rvcnk7XG4gIH1cblxubGV0IGdldF9wYXJhbWV0ZXJzID8oaHRtbF9tb2RlID0gdHJ1ZSkgfmNhbGxlZF9mcm9tICgpID1cbiAgbGV0IGNoYW5uZWwsIGNoYW5uZWxfZXJyLCBjaGFubmVsX2JhY2tkb29yLCBodG1sX21vZGUsIGNvbW1hbmQgPVxuICAgIG1hdGNoIGNhbGxlZF9mcm9tIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciAtPlxuICAgICAgTm9uZSwgTm9uZSwgTm9uZSwgZmFsc2UgfHwgaHRtbF9tb2RlLCBbfCBcIkthU2FcIjsgXCIoSW50ZXJyYWN0aXZlIG1vZGUpXCIgfF1cbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkludGVybmFsaXNlZCAtPlxuICAgICAgKCBTb21lIHN0ZG91dCxcbiAgICAgICAgU29tZSBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgU29tZSBzdGRvdXQsXG4gICAgICAgIGZhbHNlIHx8IGh0bWxfbW9kZSxcbiAgICAgICAgU3lzLmFyZ3YgKVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTaW0gLT5cbiAgICAgIFNvbWUgKG9wZW5fdGFza3NfcHJvZmlsaW5nICgpKSwgTm9uZSwgTm9uZSwgZmFsc2UgfHwgaHRtbF9tb2RlLCBTeXMuYXJndlxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAtPlxuICAgICAgKCAobWF0Y2hcbiAgICAgICAgICAgIUNvbmZpZy5vdXRwdXRfZGlyZWN0b3J5LCBcInByb2ZpbGluZ1wiLCBcIi5odG1sXCJcbiAgICAgICAgICAgKCp0ZW1wb3JhcnksIHRvIGRvOiBwcm92aWRlIGEgcGFyYW1ldGVyaXNhYmxlIGZpbGVuYW1lKilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBfLCBcIlwiLCBfIC0+IFNvbWUgc3Rkb3V0XG4gICAgICAgIHwgXCJcIiwgYSwgZXh0IC0+IFNvbWUgKG9wZW5fb3V0IGEgZXh0KVxuICAgICAgICB8IGEsIGIsIGV4dCAtPiBTb21lIChvcGVuX291dCAoYSBeIFwiL1wiIF4gYikgZXh0KSksXG4gICAgICAgIFNvbWUgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICAoICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZ1xuICAgICAgICAgICAgICAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfdGltaW5nXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyxcbiAgICAgICAgICAgICAhQ29uZmlnLmJhY2tkb29yX2RpcmVjdG9yeSxcbiAgICAgICAgICAgICAhQ29uZmlnLmJhY2tkb29yX2ZpbGUsXG4gICAgICAgICAgICAgXCIudGV4XCIgKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IGZhbHNlLCBfLCBfLCBfIC0+IE5vbmVcbiAgICAgICAgfCBfLCBfLCBcIlwiLCBfIC0+IFNvbWUgc3Rkb3V0XG4gICAgICAgIHwgXywgXCJcIiwgYSwgZXh0IC0+IFNvbWUgKG9wZW5fYXBwZW5kIGEgZXh0KVxuICAgICAgICB8IF8sIGEsIGIsIGV4dCAtPiBTb21lIChvcGVuX2FwcGVuZCAoYSBeIFwiL1wiIF4gYikgZXh0KSksXG4gICAgICAgIGZhbHNlIHx8IGh0bWxfbW9kZSxcbiAgICAgICAgU3lzLmFyZ3YgKVxuICBpblxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ludGF4X3ZlcnNpb24gPSBnZXRfc3ludGF4X3ZlcnNpb24gKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2NvbnRhY3RfbWFwID0gIUNvbmZpZy5kb19jb250YWN0X21hcDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2NjID0gIUNvbmZpZy5kb19zY2M7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2luZmx1ZW5jZV9tYXAgPSAhQ29uZmlnLmRvX2luZmx1ZW5jZV9tYXA7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAhQ29uZmlnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICFDb25maWcuZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zaXRlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIUNvbmZpZy5kb19zaXRlX2RlcGVuZGVuY2llcztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3ltbWV0cmllc19hbmFseXNpcyA9ICFDb25maWcuZG9fc3ltbWV0cmllcztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmF0ZV9jb252ZW50aW9uID1cbiAgICAgICAgICBmZXRjaF9yYXRlX2NvbnZlbnRpb24gQ29uZmlnLnJhdGVfY29udmVudGlvbjtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIUNvbmZpZy5kdW1wX3NpdGVfZGVwZW5kZW5jaWVzO1xuICAgICAgICAoKmRpZmZlcmVudCByZWFjaGFiaWxpdHkgb3V0cHV0KilcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzID1cbiAgICAgICAgICAhQ29uZmlnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcztcbiAgICAgICAgKCpHRVQgU1lNQk9MUyopXG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZpbGUgPSAhQ29uZmlnLmZpbGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnN5bWJvbHMgPSBnZXRfc3ltYm9scyAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9vdXRwdXQgPSBnZXRfaW5mbHVlbmNlX21hcCAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfb3V0cHV0ID0gZ2V0X2NvbnRhY3RfbWFwICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICAgICAgZ2V0X3JlYWNoYWJpbGl0eV9tYXAgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzID1cbiAgICAgICAgICBnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVuc2FmZSA9ICFDb25maWcudW5zYWZlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZSA9ICFDb25maWcudHJhY2U7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID1cbiAgICAgICAgICAhQ29uZmlnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXggPSBcIlwiO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrID0gW107XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfbW9kZSA9ICFDb25maWcubGlua19tb2RlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5rYXNhX3N0YXRlID1cbiAgICAgICAgICBSZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUuZW1wdHlfZW5naW5lX3N0YXRlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sYXVuY2hpbmdfZGF0ZSA9XG4gICAgICAgICAgVW5peC5sb2NhbHRpbWUgKFVuaXguZ2V0dGltZW9mZGF5ICgpKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGltZV9zaGlmdCA9XG4gICAgICAgICAgKGxldCB4ID0gVW5peC5nZXR0aW1lb2ZkYXkgKCkgaW5cbiAgICAgICAgICAgKFVuaXgubG9jYWx0aW1lIHgpLlVuaXgudG1faG91ciAtIChVbml4LmdtdGltZSB4KS5Vbml4LnRtX2hvdXIpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ob3N0bmFtZSA9XG4gICAgICAgICAgKHRyeSBVbml4LmdldGhvc3RuYW1lICgpIHdpdGggXyAtPiBcImphdmFzY3JpcHRcIik7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbW1hbmRfbGluZSA9IGNvbW1hbmQ7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3J0X3ZlcnNpb24gPSBWZXJzaW9uLnZlcnNpb25fc3RyaW5nO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uID0gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50a19pbnRlcmZhY2UgPSAhVmVyc2lvbi50a19pc19pbml0aWFsaXplZDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgd2l0aFxuICAgICAgICAgIHwgXCJpbmRpcmVjdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvd1xuICAgICAgICAgIHwgXCJkaXJlY3RcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW1cbiAgICAgICAgICB8IFwicmVhbGlzYWJsZVwiIHwgXCJyZWFsaXphYmxlXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaFxuICAgICAgICAgIHwgXyAtPiBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNjY19hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLnNjY19hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld19hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLnZpZXdfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxlZF9mcm9tO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5odG1sX21vZGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmVtcHR5X2hhc2h0Ymxfc2l6ZSA9IDE7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29ycyA9IGZldGNoX2JhY2tkb29ycyAoKTtcbiAgICAgIH07XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0ID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgXyAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyICFDb25maWcuZm9ybWF0dGVyKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfZXJyID1cbiAgICAgIChtYXRjaCBjaGFubmVsX2VyciB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgZm10IC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgZm10KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfYmFja2Rvb3IgPVxuICAgICAgKG1hdGNoIGNoYW5uZWxfYmFja2Rvb3Igd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGNoYW5uZWwgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgY2hhbm5lbCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHJlc3Npb25fc3RhdHVzID0gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByaW50X2VmZmljaWVuY3kgPSAhQ29uZmlnLnByaW50X2VmZmljaWVuY3k7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvZmlsZXIgPVxuICAgICAgKG1hdGNoIGNoYW5uZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGEgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6TG9nZ2Vycy5IVE1MX1RhYnVsYXIgYSk7XG4gIH1cblxubGV0IGR1bW15X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tID1cbiAgbGV0IGNhY2hlID0gcmVmIE5vbmUgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIWNhY2hlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwID0gZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpIGluXG4gICAgICBsZXQgKCkgPSBjYWNoZSA6PSBTb21lIHAgaW5cbiAgICAgIHBcbiAgICB8IFNvbWUgcCAtPiBwXG5cbmxldCBnZXRfYm91bmRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5ib3VuZFxubGV0IGdldF9vcGVuX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fYmluZGluZ19zdGF0ZVxubGV0IGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9iaW5kaW5nX3N0YXRlXG5cbmxldCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5taXNzaW5nX2JpbmRpbmdfc3RhdGVcblxubGV0IGdldF9saW5rX3RvX2FueV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubGlua190b19hbnlcbmxldCBnZXRfbGlua190b19zb21lXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5saW5rX3RvX3NvbWVcblxubGV0IGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmludGVybmFsX3N0YXRlX3N5bWJvbFxuXG5sZXQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50ZXJuYWxfc3RhdGVcbmxldCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludGVybmFsX3N0YXRlXG5sZXQgZ2V0X2ZyZWVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmZyZWVcbmxldCBnZXRfYXRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5hdFxubGV0IGdldF9hZ2VudF9vcGVuX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfb3BlblxubGV0IGdldF9hZ2VudF9jbG9zZV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X2Nsb3NlXG5cbmxldCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xIHN5bWJvbCA9XG4gIGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9jb21tYVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xIHN5bWJvbCA9IGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9wbHVzXG5sZXQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX2RvdFxubGV0IGdldF9idHlwZV9zZXBfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5idHlwZV9zZXBcbmxldCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuc2l0ZV9zZXBcbmxldCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5naG9zdF9hZ2VudFxubGV0IGdldF9kb193ZV9zaG93X2dob3N0XzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5zaG93X2dob3N0XG5sZXQgZ2V0X3VuaV9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnVuaV9hcnJvd1xubGV0IGdldF9yZXZfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5yZXZfYXJyb3dcbmxldCBnZXRfYmlfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5iaV9hcnJvd1xubGV0IGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYmlfYXJyb3dfbm9wb2x5XG5sZXQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUudW5pX2Fycm93X25vcG9seVxubGV0IGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnJldl9hcnJvd19ub3BvbHlcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2luZmluaXR5XG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eVxuXG5sZXQgZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5wbHVzX2luZmluaXR5XG5sZXQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubWludXNfaW5maW5pdHlcblxubGV0IGdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuaW50X2ludGVydmFsX3NlcGFyYXRvclxuXG5sZXQgZ2V0X29wZW5fY291bnRlcl9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyX3N0YXRlXG5sZXQgZ2V0X29wZW5fY291bnRlcmNlcV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY2VxXG5sZXQgZ2V0X29wZW5fY291bnRlcmN2YXJfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcmN2YXJcbmxldCBnZXRfb3Blbl9jb3VudGVyY2d0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY2d0ZVxubGV0IGdldF9vcGVuX2NvdW50ZXJkZWx0YV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyZGVsdGFcbmxldCBnZXRfb3Blbl9jb3VudGVydmFsXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJ2YWxcbmxldCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcl9zdGF0ZVxubGV0IGdldF9jbG9zZV9jb3VudGVyY2VxXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY2VxXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY3ZhclxubGV0IGdldF9jbG9zZV9jb3VudGVyY2d0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcmNndGVcbmxldCBnZXRfY2xvc2VfY291bnRlcmRlbHRhXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyZGVsdGFcbmxldCBnZXRfY2xvc2VfY291bnRlcnZhbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcnZhbFxubGV0IGdldF9jb3VudGVyY2VxX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmNlcV9zeW1ib2xcbmxldCBnZXRfY291bnRlcmN2YXJfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY3Zhcl9zeW1ib2xcbmxldCBnZXRfY291bnRlcmNndGVfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY2d0ZV9zeW1ib2xcblxubGV0IGdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmRlbHRhcGx1c19zeW1ib2xcblxubGV0IGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVydmFsX3N5bWJvbFxuXG4oKkluZmx1ZW5jZSopXG5sZXQgZ2V0X2ltX2Zvcm1hdF8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9mb3JtYXRcbmxldCBnZXRfaW1fZmlsZV8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9maWxlXG5cbmxldCBnZXRfaW1fZGlyZWN0b3J5XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2RpcmVjdG9yeVxuXG5sZXQgZ2V0X3J1bGVfc2hhcGVfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9zaGFwZVxubGV0IGdldF9ydWxlX2NvbG9yXzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfY29sb3JcblxubGV0IGdldF92YXJpYWJsZV9zaGFwZV8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9zaGFwZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX2NvbG9yXG5cbmxldCBnZXRfd2FrZV91cF9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2NvbG9yXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2NvbG9yXG5cbmxldCBnZXRfd2FrZV91cF9hcnJvd18xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2Fycm93XG5cbmxldCBnZXRfaW5oaWJpdGlvbl9hcnJvd18xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2Fycm93XG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF92YXJfZGVmXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWZfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfcnVsZV9kZWZcblxubGV0IGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGVcblxubGV0IGdldF9wdXJlX2NvbnRhY3RfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnB1cmVfY29udGFjdFxubGV0IGdldF9jbV9mb3JtYXRfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2Zvcm1hdFxubGV0IGdldF9jbV9maWxlXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9maWxlXG5sZXQgZ2V0X2NtX2RpcmVjdG9yeV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZGlyZWN0b3J5XG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX3NoYXBlXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX2NvbG9yXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xIGNtID1cbiAgY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9zaGFwZVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMSBjbSA9XG4gIGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfY29sb3JcblxubGV0IGdldF9jb3VudGVyX3NpdGVfc2hhcGVfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9zaGFwZVxubGV0IGdldF9jb3VudGVyX3NpdGVfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9jb2xvclxubGV0IGdldF9hZ2VudF9zaGFwZV9hcnJheV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfYXJyYXlcbmxldCBnZXRfYWdlbnRfY29sb3JfYXJyYXlfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2FycmF5XG5sZXQgZ2V0X2FnZW50X3NoYXBlX2RlZl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfZGVmXG5sZXQgZ2V0X2FnZW50X2NvbG9yX2RlZl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfZGVmXG5sZXQgZ2V0X2xpbmtfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfY29sb3JcbmxldCBnZXRfaW5mbHVlbmNlX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfY29sb3JcbmxldCBnZXRfaW5mbHVlbmNlX2Fycm93XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfYXJyb3dcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25fMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25cblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pY1xuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmZfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bFxuXG5sZXQgZ2V0X3NtYXNoX3JlbGF0aW9uc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9uc1xuXG5sZXQgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25fMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXG5cbmxldCBnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlc1xuXG5sZXQgZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xIHIgPVxuICBtYXRjaCByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5SYXcgLT4gZmFsc2VcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5hdHVyYWxfbGFuZ3VhZ2UgLT5cbiAgICB0cnVlXG5cbmxldCBnZXRfYmFja2VuZF9tb2RlXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2VcblxubGV0IGdldF9sb2NhbF90cmFjZV9mb3JtYXRfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9sb2NhbF90cmFjZXNcblxubGV0IGdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNcblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMSByIGIgPVxuICB7IHIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPSBiIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18xIHIgYiA9XG4gIHsgciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IGIgfVxuXG5sZXQgZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNcblxubGV0IGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc1xuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlc1xuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX3ByZWZpeFxubGV0IGdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnlfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnlcbmxldCBnZXRfdmlld19hbmFseXNpc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdzXG5cbmxldCBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaXRlX2Fjcm9zc19ib25kc1xuXG5sZXQgZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYWxsZWxfYm9uZHNcbmxldCBnZXRfZHluYW1pY19jb250YWN0X21hcF8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR5bmFtaWNfY29udGFjdF9tYXBcbmxldCBnZXRfY291bnRlcnNfYW5hbHlzaXNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyc1xubGV0IGdldF9jb3VudGVyc19kb21haW5fMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX2RvbWFpblxuXG5sZXQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N5bW1ldHJpZXNfYW5hbHlzaXNcblxubGV0IGdldF9yYXRlX2NvbnZlbnRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yYXRlX2NvbnZlbnRpb25cblxubGV0IGdldF9lbXB0eV9oYXNodGJsX3NpemVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5lbXB0eV9oYXNodGJsX3NpemVcblxubGV0IGdldF9zeW1ib2xzXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ltYm9sc1xubGV0IGdldF9maWxlXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZmlsZVxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX291dHB1dFxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfb3V0cHV0XG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dFxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNcblxubGV0IGdldF91bnNhZmVfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51bnNhZmVcbmxldCBnZXRfdHJhY2VfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZVxuXG5sZXQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJcblxubGV0IGdldF9wcmVmaXhfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXhcblxubGV0IGdldF9jYWxsX3N0YWNrXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbF9zdGFja1xuXG5sZXQgZ2V0X2xpbmtfbW9kZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfbW9kZVxuXG5sZXQgZ2V0X2thc2Ffc3RhdGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5rYXNhX3N0YXRlXG5cbmxldCBnZXRfZG9fY29udGFjdF9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19jb250YWN0X21hcFxuXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ludGF4X3ZlcnNpb25cblxubGV0IGdldF9kb19zY2NfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zY2NcblxubGV0IGdldF9kb19pbmZsdWVuY2VfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9faW5mbHVlbmNlX21hcFxuXG5sZXQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25cblxubGV0IGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25cblxubGV0IGdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NpdGVfZGVwZW5kZW5jaWVzXG5cbmxldCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfc2l0ZV9kZXBlbmRlbmNpZXNcblxuKCpyZWFjaGFiaWxpdHkgZGlmZmVyZW50IG91dHB1dCopXG5sZXQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpc1xuXG4oKiopXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNjY19hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3X2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfbGF1bmNoaW5nX2RhdGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbGV0IHQgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxhdW5jaGluZ19kYXRlIGluXG4gIGxldCBnbXQgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRpbWVfc2hpZnQgaW5cbiAgUHJpbnRmLnNwcmludGYgXCJBbmFseXNpcyBsYXVuY2hlZCBhdCAlMDRpLyUwMmkvJTAyaSAlMDJpOiUwMmk6JTAyaSAoR01UJStpKVwiXG4gICAgKHQuVW5peC50bV95ZWFyICsgMTkwMCkgKHQuVW5peC50bV9tb24gKyAxKSB0LlVuaXgudG1fbWRheSB0LlVuaXgudG1faG91clxuICAgIHQuVW5peC50bV9taW4gdC5Vbml4LnRtX3NlYyBnbXRcblxubGV0IGdldF9zaG9ydF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmVyc2lvblxuXG5sZXQgZ2V0X2Z1bGxfdmVyc2lvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBQcmludGYuc3ByaW50ZiBcIiVzICh3aXRoJXMgVGsgaW50ZXJmYWNlKVwiXG4gICAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uXG4gICAgKGlmIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGtfaW50ZXJmYWNlIHRoZW5cbiAgICAgICBcIlwiXG4gICAgIGVsc2VcbiAgICAgICBcIm91dFwiKVxuXG5sZXQgZ2V0X2xhdW5jaGVkX3doZXJlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaG9zdG5hbWVcblxubGV0IGdldF9jb21tYW5kX2xpbmVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21tYW5kX2xpbmVcblxubGV0IGdldF9tYXJzaGFsaXNhYmxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcblxubGV0IGdldF9sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlclxubGV0IGdldF9sb2dnZXJfZXJyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfZXJyXG5cbmxldCBnZXRfbG9nZ2VyX2JhY2tkb29yIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfYmFja2Rvb3JcblxuKCpsZXQgZ2V0X2Zvcm1hdHRlciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0dGVyXG4gIGxldCBzZXRfZm9ybWF0dGVyIHBhcmFtZXRlciBsb2dnZXIgPSB7cGFyYW1ldGVyIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0dGVyID0gbG9nZ2VyfSopXG5cbmxldCB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2NvbW1hbmRfbGluZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb21tYW5kX2xpbmVfMVxubGV0IGdldF9zaG9ydF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3Nob3J0X3ZlcnNpb25fMVxubGV0IGdldF9sYXVuY2hlZF93aGVyZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9sYXVuY2hlZF93aGVyZV8xXG5sZXQgZ2V0X2Z1bGxfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9mdWxsX3ZlcnNpb25fMVxubGV0IGdldF9sYXVuY2hpbmdfZGF0ZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9sYXVuY2hpbmdfZGF0ZV8xXG5cbmxldCBnZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUgcGFyYW1ldGVycyA9XG4gIFByaW50Zi5zcHJpbnRmIFwiJXMgb24gJXNcIlxuICAgIChnZXRfbGF1bmNoaW5nX2RhdGUgcGFyYW1ldGVycylcbiAgICAoZ2V0X2xhdW5jaGVkX3doZXJlIHBhcmFtZXRlcnMpXG5cbmxldCBnZXRfZG9fY29udGFjdF9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fY29udGFjdF9tYXBfMVxubGV0IGdldF9zeW50YXhfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zeW50YXhfdmVyc2lvbl8xXG5sZXQgZ2V0X2RvX3NjYyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zY2NfMVxubGV0IGdldF9kb19pbmZsdWVuY2VfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMVxuXG5sZXQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXzFcblxubGV0IGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uXzFcblxubGV0IGdldF9kb19zaXRlX2RlcGVuZGVuY2llcyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xXG5cbmxldCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzFcbigqcmVhY2hhYmlsaXR5IGFuYWx5c2lzIGluIGRpZmZlcmVudCBvdXRwdXQqKVxuXG4oKiopXG5sZXQgZ2V0X3N5bWJvbHMgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc3ltYm9sc18xXG5sZXQgZ2V0X2ZpbGUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZmlsZV8xXG5sZXQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllcyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb21wdXRlX3N5bW1ldHJpZXNfMVxubGV0IGdldF9yYXRlX2NvbnZlbnRpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmF0ZV9jb252ZW50aW9uXzFcbmxldCBnZXRfaW5mbHVlbmNlX21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9pbmZsdWVuY2VfbWFwXzFcbmxldCBnZXRfY29udGFjdF9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29udGFjdF9tYXBfMVxuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IGdldF9yZWFjaGFiaWxpdHlfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXzFcblxubGV0IGdldF91bnNhZmUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdW5zYWZlXzFcbmxldCBnZXRfdHJhY2UgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdHJhY2VfMVxuXG5sZXQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXzFcblxubGV0IGdldF9wcmVmaXggPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcHJlZml4XzFcbmxldCBnZXRfY2FsbF9zdGFjayA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jYWxsX3N0YWNrXzFcbmxldCBnZXRfbGlua19tb2RlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xpbmtfbW9kZV8xXG5cbmxldCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfdmlld19hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF92aWV3X2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF9lbXB0eV9oYXNodGJsX3NpemUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZW1wdHlfaGFzaHRibF9zaXplXzFcbmxldCB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9pbmZsdWVuY2VfbWFwXG5sZXQgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X2NvbnRhY3RfbWFwXG5sZXQgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfc3ltYm9sc1xuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X3JlYWNoYWJpbGl0eV9tYXBcblxubGV0IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBmID1cbiAgY29tcG9zZSBmIGdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc1xuXG4oKnN5bWJvbHMqKVxubGV0IGdldF9ib3VuZF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYm91bmRfc3ltYm9sXzFcbmxldCBnZXRfb3Blbl9iaW5kaW5nX3N0YXRlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xXG5cbmxldCBnZXRfY2xvc2VfYmluZGluZ19zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludGVybmFsX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzFcblxubGV0IGdldF9saW5rX3RvX2FueSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9saW5rX3RvX2FueV8xXG5sZXQgZ2V0X2xpbmtfdG9fc29tZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9saW5rX3RvX3NvbWVfMVxubGV0IGdldF9mcmVlX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9mcmVlXzFcbmxldCBnZXRfYXRfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2F0X3N5bWJvbF8xXG5sZXQgZ2V0X2FnZW50X29wZW5fc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X29wZW5fc3ltYm9sXzFcbmxldCBnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xXG5cbmxldCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbF8xXG5cbmxldCBnZXRfYnR5cGVfc2VwX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9idHlwZV9zZXBfc3ltYm9sXzFcblxubGV0IGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzFcblxubGV0IGdldF9naG9zdF9hZ2VudF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzFcbmxldCBnZXRfZG9fd2Vfc2hvd19naG9zdCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9kb193ZV9zaG93X2dob3N0XzFcbmxldCBnZXRfdW5pX2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF91bmlfYXJyb3dfc3ltYm9sXzFcbmxldCBnZXRfcmV2X2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9yZXZfYXJyb3dfc3ltYm9sXzFcbmxldCBnZXRfYmlfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2JpX2Fycm93X3N5bWJvbF8xXG5cbmxldCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2NvdW50ZXJfc3RhdGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY2VxID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmNlcV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmNndGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY2d0ZV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmN2YXIgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY3Zhcl8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmRlbHRhID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmRlbHRhXzFcbmxldCBnZXRfb3Blbl9jb3VudGVydmFsID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcnZhbF8xXG5cbmxldCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzFcblxubGV0IGdldF9jbG9zZV9jb3VudGVyY2VxID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMVxubGV0IGdldF9jbG9zZV9jb3VudGVyY2d0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyY2d0ZV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcmRlbHRhID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJ2YWwgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcnZhbF8xXG5sZXQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzFcbmxldCBnZXRfY291bnRlcmNndGVfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbF8xXG5sZXQgZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVydmFsX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVydmFsX3N5bWJvbF8xXG5sZXQgZ2V0X2ltX2Zvcm1hdCA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbV9mb3JtYXRfMVxubGV0IGdldF9pbV9maWxlID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2ltX2ZpbGVfMVxubGV0IGdldF9pbV9kaXJlY3RvcnkgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW1fZGlyZWN0b3J5XzFcbmxldCBnZXRfcnVsZV9zaGFwZSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9ydWxlX3NoYXBlXzFcbmxldCBnZXRfcnVsZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9ydWxlX2NvbG9yXzFcbmxldCBnZXRfdmFyaWFibGVfc2hhcGUgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfdmFyaWFibGVfc2hhcGVfMVxubGV0IGdldF92YXJpYWJsZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF92YXJpYWJsZV9jb2xvcl8xXG5sZXQgZ2V0X3dha2VfdXBfY29sb3IgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfd2FrZV91cF9jb2xvcl8xXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbmhpYml0aW9uX2NvbG9yXzFcblxubGV0IGdldF93YWtlX3VwX2Fycm93ID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3dha2VfdXBfYXJyb3dfMVxuXG5sZXQgZ2V0X2luaGliaXRpb25fYXJyb3cgPVxuICB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW5oaWJpdGlvbl9hcnJvd18xXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZiA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzFcblxubGV0IGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZiA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xXG5cbmxldCBnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdCA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzFcblxubGV0IGdldF9wdXJlX2NvbnRhY3QgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X3B1cmVfY29udGFjdF8xXG5sZXQgZ2V0X2NtX2Zvcm1hdCA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZm9ybWF0XzFcbmxldCBnZXRfY21fZmlsZSA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZmlsZV8xXG5sZXQgZ2V0X2NtX2RpcmVjdG9yeSA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZGlyZWN0b3J5XzFcblxubGV0IGdldF9iaW5kaW5nX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xXG5cbmxldCBnZXRfYmluZGluZ19zaXRlX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9iaW5kaW5nX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY291bnRlcl9zaXRlX3NoYXBlXzFcblxubGV0IGdldF9jb3VudGVyX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfYWdlbnRfc2hhcGVfYXJyYXkgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X3NoYXBlX2FycmF5XzFcblxubGV0IGdldF9hZ2VudF9jb2xvcl9hcnJheSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfY29sb3JfYXJyYXlfMVxuXG5sZXQgZ2V0X2FnZW50X3NoYXBlX2RlZiA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfc2hhcGVfZGVmXzFcbmxldCBnZXRfYWdlbnRfY29sb3JfZGVmID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9jb2xvcl9kZWZfMVxubGV0IGdldF9saW5rX2NvbG9yID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9saW5rX2NvbG9yXzFcbmxldCBnZXRfaW5mbHVlbmNlX2NvbG9yID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9pbmZsdWVuY2VfY29sb3JfMVxubGV0IGdldF9pbmZsdWVuY2VfYXJyb3cgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2luZmx1ZW5jZV9hcnJvd18xXG5cbigqYWRkIHJlYWNoYWJsaXR5KilcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHQgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0XzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWNfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZl8xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xfMVxuXG5sZXQgZ2V0X3Bvc3RfcHJvY2Vzc2luZyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9wb3N0X3Byb2Nlc3NpbmdfMVxuXG5sZXQgZ2V0X2JhY2tlbmRfbW9kZSA9IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9iYWNrZW5kX21vZGVfMVxuXG5sZXQgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZFxuICAgIGdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXzFcblxubGV0IGdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkXG4gICAgZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzXzFcblxubGV0IGdldF9zbWFzaF9yZWxhdGlvbnMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfc21hc2hfcmVsYXRpb25zXzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9mb3JtYXQgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzFcblxubGV0IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9jb21wdXRlX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xXG5cbmxldCBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzIgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgIHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMVxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0IGI7XG4gIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18yIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbl9pbl9sb2NhbF90cmFjZXNfMVxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0IGI7XG4gIH1cblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzJcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgYjtcbiAgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18yXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzIGI7XG4gIH1cblxubGV0IGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X2lnbm9yZV9sb2NhbF9sb3NhbmdlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xXG5cbmxldCBnZXRfdmlld19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfdmlld19hbmFseXNpc18xXG5cbmxldCBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGRcbiAgICBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkXG4gICAgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzXzFcblxubGV0IGdldF9keW5hbWljX2NvbnRhY3RfbWFwID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9keW5hbWljX2NvbnRhY3RfbWFwXzFcblxubGV0IGdldF9jb3VudGVyc19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfY291bnRlcnNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X2NvdW50ZXJzX2RvbWFpbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfY291bnRlcnNfZG9tYWluXzFcblxubGV0IGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgcCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSBwXG4gIHx8IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyBwXG5cbmxldCBzZXRfcHJlZml4XzEgbWFyc2hhbGlzYWJsZSBwcmVmaXggPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXggfVxuXG5sZXQgc2V0X2NhbGxfc3RhY2tfMSBtYXJzaGFsaXNhYmxlIGNhbGxfc3RhY2sgPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrIH1cblxubGV0IHNldF90cmFjZV8xIG1hcnNoYWxpc2FibGUgYm9vbCA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlID0gYm9vbCB9XG5cbmxldCB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgZiBwYXJhbWV0ZXJzIHByZWZpeCA9XG4gIHtcbiAgICBwYXJhbWV0ZXJzIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAgZiAoZ2V0X21hcnNoYWxpc2FibGUgcGFyYW1ldGVycykgcHJlZml4O1xuICB9XG5cbmxldCBzZXRfcHJlZml4ID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF9wcmVmaXhfMVxubGV0IHNldF9jYWxsX3N0YWNrID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF9jYWxsX3N0YWNrXzFcbmxldCBzZXRfdHJhY2UgPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X3RyYWNlXzFcblxubGV0IHVwZGF0ZV9wcmVmaXggcGFyYW1ldGVycyBzdWZmaXggPVxuICBzZXRfcHJlZml4IHBhcmFtZXRlcnMgKGdldF9wcmVmaXggcGFyYW1ldGVycyBeIHN1ZmZpeClcblxubGV0IHVwZGF0ZV9jYWxsX3N0YWNrIHBhcmFtZXRlcnMgYm9vbCBuYW1lID1cbiAgbGV0IHJlcF9ib29sID0gZ2V0X3RyYWNlIHBhcmFtZXRlcnMgfHwgYm9vbCBpblxuICBtYXRjaCBuYW1lLCBnZXRfdHJhY2UgcGFyYW1ldGVycyA9IGJvb2wgd2l0aFxuICB8IE5vbmUsIHRydWUgLT4gcGFyYW1ldGVyc1xuICB8IE5vbmUsIGZhbHNlIC0+IHNldF90cmFjZSBwYXJhbWV0ZXJzIHJlcF9ib29sXG4gIHwgU29tZSB4LCB0cnVlIC0+IHNldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMgKHggOjogZ2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycylcbiAgfCBTb21lIHgsIGZhbHNlIC0+XG4gICAgc2V0X2NhbGxfc3RhY2tcbiAgICAgIChzZXRfdHJhY2UgcGFyYW1ldGVycyByZXBfYm9vbClcbiAgICAgICh4IDo6IGdldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMpXG5cbmxldCBvcGVuX2luZmx1ZW5jZV9tYXBfZmlsZSBwYXJhbWV0ZXJzID1cbiAgbGV0IGNoYW5uZWwgPVxuICAgIG1hdGNoXG4gICAgICAoIGdldF9pbV9maWxlIHBhcmFtZXRlcnMsXG4gICAgICAgIGdldF9pbV9kaXJlY3RvcnkgcGFyYW1ldGVycyxcbiAgICAgICAgZXh0X2Zvcm1hdCAoZ2V0X2ltX2Zvcm1hdCBwYXJhbWV0ZXJzKSApXG4gICAgd2l0aFxuICAgIHwgTm9uZSwgXywgXyAtPiBzdGRvdXRcbiAgICB8IFNvbWUgYSwgTm9uZSwgZXh0IC0+IG9wZW5fb3V0IGEgZXh0XG4gICAgfCBTb21lIGEsIFNvbWUgZCwgZXh0IC0+IG9wZW5fb3V0IChkIF4gYSkgZXh0XG4gIGluXG4gIGxldCBmb3JtYXQgPVxuICAgIG1hdGNoIGdldF9pbV9mb3JtYXQgcGFyYW1ldGVycyB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1QgLT4gTG9nZ2Vycy5ET1RcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUwgLT4gTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU0gLT4gTG9nZ2Vycy5NYXRyaXhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJIC0+IExvZ2dlcnMuR0VQSElcbiAgaW5cbiAgbGV0IGxvZ2dlciA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOmZvcm1hdCBjaGFubmVsIGluXG4gIHsgcGFyYW1ldGVycyB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciB9XG5cbmxldCBvcGVuX2NvbnRhY3RfbWFwX2ZpbGUgcGFyYW1ldGVycyA9XG4gIGxldCBjaGFubmVsID1cbiAgICBtYXRjaFxuICAgICAgKCBnZXRfY21fZmlsZSBwYXJhbWV0ZXJzLFxuICAgICAgICBnZXRfY21fZGlyZWN0b3J5IHBhcmFtZXRlcnMsXG4gICAgICAgIGV4dF9mb3JtYXQgKGdldF9jbV9mb3JtYXQgcGFyYW1ldGVycykgKVxuICAgIHdpdGhcbiAgICB8IE5vbmUsIF8sIF8gLT4gc3Rkb3V0XG4gICAgfCBTb21lIGEsIE5vbmUsIGV4dCAtPiBvcGVuX291dCBhIGV4dFxuICAgIHwgU29tZSBhLCBTb21lIGQsIGV4dCAtPiBvcGVuX291dCAoZCBeIGEpIGV4dFxuICBpblxuICB7XG4gICAgcGFyYW1ldGVycyB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgY2hhbm5lbDtcbiAgfVxuXG5sZXQgcGVyc2lzdGVudF9tb2RlID0gZmFsc2VcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2luZmx1ZW5jZV9tYXBcbiAgICBwYXJhbWV0ZXIgPVxuICAobWF0Y2ggZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgcGFyYW1ldGVyIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaCB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvdyAtPlxuICAgIHRydWVcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIC0+IGZhbHNlKVxuICAmJiBnZXRfZG9faW5mbHVlbmNlX21hcCBwYXJhbWV0ZXJcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX3BlcnNpc3RlbnRfbW9kZVxuICAgIF8gPVxuICBwZXJzaXN0ZW50X21vZGVcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2NvbnRhY3RfbWFwXG4gICAgcGFyYW1ldGVyID1cbiAgZ2V0X2RvX2NvbnRhY3RfbWFwIHBhcmFtZXRlclxuICAmJlxuICBtYXRjaCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgcGFyYW1ldGVyIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW0gfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3cgLT4gdHJ1ZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbCAtPlxuICAgIGZhbHNlXG5cbmxldCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zIHBhcmFtZXRlciA9XG4gIGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX3BlcnNpc3RlbnRfbW9kZVxuICAgIHBhcmFtZXRlclxuICB8fCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9jb250YWN0X21hcFxuICAgICAgIHBhcmFtZXRlclxuICB8fCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9pbmZsdWVuY2VfbWFwXG4gICAgICAgcGFyYW1ldGVyXG5cbmxldCBnZXRfY2FsbGVkX2Zyb20gcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3NjY1xuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50c1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMSBiYWNrZG9vcnNcbiAgICA9XG4gIGJhY2tkb29yc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZ1xuICAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29yc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG5cbmxldCBnZXRfYmFja2Rvb3JfdGltaW5nXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX3RpbWluZ1xuXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGVfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZmlsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9kaXJlY3RvcnlcblxubGV0IGdldF9iYWNrZG9vcnMgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xXG4gICAgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX3RpbWluZ18yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfdGltaW5nXzEgZ2V0X2JhY2tkb29yc1xubGV0IGdldF9iYWNrZG9vcl9maWxlXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9maWxlXzEgZ2V0X2JhY2tkb29yc1xubGV0IGdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjYyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yXG4gICAgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yXG4gICAgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl90aW1pbmcgPSBjb21wb3NlIGdldF9iYWNrZG9vcl90aW1pbmdfMiBnZXRfbWFyc2hhbGlzYWJsZVxubGV0IGdldF9iYWNrZG9vcl9maWxlID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZmlsZV8yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeSA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9maWxlclxuXG5sZXQgZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXByZXNzaW9uX3N0YXR1c1xuXG5sZXQgZ2V0X2thc2Ffc3RhdGUgPSBjb21wb3NlIGdldF9rYXNhX3N0YXRlXzEgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IHNldF9wcmludF9lZmZpY2llbmN5IHBhcmFtZXRlciBib29sID1cbiAgeyBwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmludF9lZmZpY2llbmN5ID0gYm9vbCB9XG5cbmxldCBnZXRfcHJpbnRfZWZmaWNpZW5jeSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJpbnRfZWZmaWNpZW5jeVxuXG5sZXQgc2V0X2xvZ2dlciBwYXJhbWV0ZXIgbG9nZ2VyID1cbiAgeyBwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgfVxuXG5sZXQgc2F2ZV9lcnJvcl9saXN0IHBhcmFtZXRlciBlcnJvciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgZXJyb3JcblxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBiYXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgYmFyXG5cbmxldCByZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhclxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVcblxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVcbiIsIm9wZW4gU3VwZXJhcmdcblxudHlwZSBjb3VudCA9IEVtYmVkZGluZ3MgfCBPY2N1cnJlbmNlc1xuXG50eXBlIHQgPSB7XG4gIGJhY2tlbmQ6IHN0cmluZyByZWY7XG4gIHJ1bGVfcmF0ZV9jb252ZW50aW9uOiBzdHJpbmcgcmVmO1xuICByZWFjdGlvbl9yYXRlX2NvbnZlbnRpb246IHN0cmluZyByZWY7XG4gIGNvdW50OiBzdHJpbmcgcmVmO1xuICBpbnRlcm5hbF9tZWFuaW5nOiBzdHJpbmcgcmVmO1xuICBzaG93X3JlYWN0aW9uczogYm9vbCByZWY7XG4gIGNvbXB1dGVfamFjb2JpYW46IGJvb2wgcmVmO1xuICBvY3RhdmVfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWF0bGFiX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hcGxlX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hdGhlbWF0aWNhX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIHNibWxfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgZG90bmV0X291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIGRhdGFfZmlsZTogc3RyaW5nIG9wdGlvbiByZWY7XG4gIHdpdGhfc3ltbWV0cmllczogc3RyaW5nIHJlZjtcbiAgc2hvd19zeW1tZXRyaWVzOiBib29sIHJlZjtcbiAgdmlld3M6IGJvb2wgcmVmO1xuICBkYm9uZHM6IGJvb2wgcmVmO1xuICBzaXRlX2Fjcm9zczogYm9vbCByZWY7XG4gIG5vbm5lZ2F0aXZlOiBib29sIHJlZjtcbiAgc2hvd190aW1lX2FkdmFuY2U6IGJvb2wgcmVmO1xuICBpbml0aWFsX3N0ZXA6IGZsb2F0IHJlZjtcbiAgbWF4X3N0ZXA6IGZsb2F0IHJlZjtcbiAgcmVsYXRpdmVfdG9sZXJhbmNlOiBmbG9hdCByZWY7XG4gIGFic29sdXRlX3RvbGVyYW5jZTogZmxvYXQgcmVmO1xuICBzbWFzaF9yZWFjdGlvbnM6IGJvb2wgcmVmO1xuICBwcm9wYWdhdGVfY29uc3RhbnRzOiBib29sIHJlZjtcbiAgcHJpbnRfZWZmaWNpZW5jeTogYm9vbCByZWY7XG4gIG1heF9zaXplX2Zvcl9zcGVjaWVzOiBpbnQgb3B0aW9uIHJlZjtcbiAgY3N2X3NlcDogc3RyaW5nIHJlZjtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGJhY2tlbmQgPSByZWYgXCJvY3RhdmVcIjtcbiAgICBydWxlX3JhdGVfY29udmVudGlvbiA9IHJlZiBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgcmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICBjb3VudCA9IHJlZiBcIkVtYmVkZGluZ3NcIjtcbiAgICBpbnRlcm5hbF9tZWFuaW5nID0gcmVmIFwiRW1iZWRkaW5nc1wiO1xuICAgIHNob3dfcmVhY3Rpb25zID0gcmVmIHRydWU7XG4gICAgY29tcHV0ZV9qYWNvYmlhbiA9IHJlZiB0cnVlO1xuICAgIGRvdG5ldF9vdXRwdXQgPSByZWYgKFNvbWUgXCJuZXR3b3JrLm5ldFwiKTtcbiAgICBvY3RhdmVfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm1cIik7XG4gICAgbWF0bGFiX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5tXCIpO1xuICAgIG1hcGxlX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5td3NcIik7XG4gICAgbWF0aGVtYXRpY2Ffb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm5iXCIpO1xuICAgIHNibWxfb3V0cHV0ID0gcmVmIChTb21lIFwibmV0d29yay54bWxcIik7XG4gICAgZGF0YV9maWxlID0gcmVmIChTb21lIFwiZGF0YS5jc3ZcIik7XG4gICAgd2l0aF9zeW1tZXRyaWVzID0gcmVmIFwiTm9uZVwiO1xuICAgIHNob3dfc3ltbWV0cmllcyA9IHJlZiBmYWxzZTtcbiAgICB2aWV3cyA9IHJlZiB0cnVlO1xuICAgIGRib25kcyA9IHJlZiB0cnVlO1xuICAgIHNpdGVfYWNyb3NzID0gcmVmIHRydWU7XG4gICAgbm9ubmVnYXRpdmUgPSByZWYgZmFsc2U7XG4gICAgc2hvd190aW1lX2FkdmFuY2UgPSByZWYgZmFsc2U7XG4gICAgaW5pdGlhbF9zdGVwID0gcmVmIDAuMDAwMDE7XG4gICAgbWF4X3N0ZXAgPSByZWYgMC4wMjtcbiAgICBhYnNvbHV0ZV90b2xlcmFuY2UgPSByZWYgMC4wMDE7XG4gICAgcmVsYXRpdmVfdG9sZXJhbmNlID0gcmVmIDAuMDAxO1xuICAgIHNtYXNoX3JlYWN0aW9ucyA9IHJlZiBmYWxzZTtcbiAgICBwcm9wYWdhdGVfY29uc3RhbnRzID0gcmVmIGZhbHNlO1xuICAgIHByaW50X2VmZmljaWVuY3kgPSByZWYgZmFsc2U7XG4gICAgbWF4X3NpemVfZm9yX3NwZWNpZXMgPSByZWYgTm9uZTtcbiAgICBjc3Zfc2VwID0gcmVmIFwiIFwiO1xuICB9XG5cbmxldCBjb21iaW5lIGwxIGwyID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGxpc3QgYTEgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCAoYTIgOiBpbnQpIC0+IChhMSwgYTIpIDo6IGxpc3QpIGxpc3QgbDIpXG4gICAgW10gbDFcblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6XG4gICAgKFN1cGVyYXJnLmtleVxuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogU3VwZXJhcmcubXNnXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS12b2lkXCIsXG4gICAgICBTdXBlcmFyZy5Wb2lkLFxuICAgICAgXCJcIixcbiAgICAgIGNvbWJpbmVcbiAgICAgICAgW1xuICAgICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0O1xuICAgICAgICAgIENvbW1vbl9hcmdzLm91dHB1dDtcbiAgICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3M7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3M7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcztcbiAgICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlO1xuICAgICAgICBdXG4gICAgICAgIFsgNTA7IDUxOyA1MiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5NdWx0aUV4dFxuICAgICAgICBbXG4gICAgICAgICAgXCItLWRvdG5ldC1vdXRwdXRcIiwgXCIubmV0XCI7XG4gICAgICAgICAgXCItLW1hcGxlLW91dHB1dFwiLCBcIi5td3NcIjtcbiAgICAgICAgICBcIi0tbWF0aGVtYXRpY2Etb3V0cHV0XCIsIFwiLm5iXCI7XG4gICAgICAgICAgXCItLW1hdGxhYi1vdXRwdXRcIiwgXCIubVwiO1xuICAgICAgICAgIFwiLS1vY3RhdmUtb3V0cHV0XCIsIFwiLm1cIjtcbiAgICAgICAgICBcIi0tc2JtbC1vdXRwdXRcIiwgXCIueG1sXCI7XG4gICAgICAgIF0sXG4gICAgICBcIlByZWZpeCBmb3IgZmlsZSBuYW1lIG91dHB1dFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMTAxO1xuICAgICAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW9kZS1iYWNrZW5kXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcImRvdG5ldFwiLCBcImRvdG5ldCAoQk5HTCkgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJtYXBsZVwiLCBcIm1hcGxlIGJhY2tlbmQgKGluIHByb2dyZXNzKVwiO1xuICAgICAgICAgICAgXCJtYXRoZW1hdGljYVwiLCBcIm1hdGhlbWF0aWNhIGJhY2tlbmQgKGluIHByb2dyZXNzKVwiO1xuICAgICAgICAgICAgXCJtYXRsYWJcIiwgXCJtYXRsYWIgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJvY3RhdmVcIiwgXCJvY3RhdmUgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJzYm1sXCIsIFwic2JtbCBiYWNrZW5kXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIkRvdG5ldFwiO1xuICAgICAgICAgICAgXCJET1RORVRcIjtcbiAgICAgICAgICAgIFwiT2N0YXZlXCI7XG4gICAgICAgICAgICBcIk9DVEFWRVwiO1xuICAgICAgICAgICAgXCJNYXRsYWJcIjtcbiAgICAgICAgICAgIFwiTUFUTEFCXCI7XG4gICAgICAgICAgICBcIk1hdGhlbWF0aWNhXCI7XG4gICAgICAgICAgICBcIk1BVEhFTUFUSUNBXCI7XG4gICAgICAgICAgICBcIk1hcGxlXCI7XG4gICAgICAgICAgICBcIk1BUExFXCI7XG4gICAgICAgICAgICBcIlNibWxcIjtcbiAgICAgICAgICAgIFwiU0JNTFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5iYWNrZW5kICksXG4gICAgICBcIlNlbGVjdCB0aGUgYmFja2VuZCBmb3JtYXRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1kb3RuZXQtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQuZG90bmV0X291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBkb3RuZXQgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDIgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW1hcGxlLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm1hcGxlX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXBsZSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMyBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tbWF0aGVtYXRpY2Etb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWF0aGVtYXRpY2Ffb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hdGhlbWF0aWNhIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA0IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1tYXRsYWItb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWF0bGFiX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXRsYWIgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDUgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW9jdGF2ZS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5vY3RhdmVfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG9jdGF2ZSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNiBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tc2JtbC1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5zYm1sX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBzYm1sIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA3IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1wcm9wYWdhdGUtY29uc3RhbnRzXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJvcGFnYXRlX2NvbnN0YW50cyxcbiAgICAgIFwicHJvcGFnYXRlIGNvbnN0YW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDggXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLWNvbnN0YW50LXByb3BhZ2F0aW9uXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJvcGFnYXRlX2NvbnN0YW50cyxcbiAgICAgIFwicHJvcGFnYXRlIGNvbnN0YW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDkgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNzdi1zZXBhcmF0b3JcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZyB0LmNzdl9zZXAsXG4gICAgICBcInNlcGFyYXRvciBzeW1ib2wgaW4gQ1NWIGZpbGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJhdGUtY29udmVudGlvblwiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJLYVNpbVwiLCBcImRvIG5vdCBkaXZpZGUgYnkgYW55dGhpbmdcIjtcbiAgICAgICAgICAgICggXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzIHRoYXQgaW5kdWNlIFxcXG4gICAgICAgICAgICAgICBhbiBhdXRvIGFsc28gaW4gdGhlIHJoc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImthc2ltXCI7XG4gICAgICAgICAgICBcIktBU0lNXCI7XG4gICAgICAgICAgICBcIkthc2ltXCI7XG4gICAgICAgICAgICBcIkRJVklERV9CWV9OQlJfT0ZfQVVUT1NfSU5fTEhTXCI7XG4gICAgICAgICAgICBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgICAgICAgICBcImJpb2JoZW1pc3RcIjtcbiAgICAgICAgICAgIFwiQklPQ0hFTUlTVFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5ydWxlX3JhdGVfY29udmVudGlvbiApLFxuICAgICAgXCJjb252ZW50aW9uIGZvciBkaXZpZGluZyBjb25zdGFudCByYXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXJ1bGUtcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXMgdGhhdCBpbmR1Y2UgXFxcbiAgICAgICAgICAgICAgIGFuIGF1dG8gYWxzbyBpbiB0aGUgcmhzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwia2FzaW1cIjtcbiAgICAgICAgICAgIFwiS0FTSU1cIjtcbiAgICAgICAgICAgIFwiS2FzaW1cIjtcbiAgICAgICAgICAgIFwiRElWSURFX0JZX05CUl9PRl9BVVRPU19JTl9MSFNcIjtcbiAgICAgICAgICAgIFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICAgICAgICAgIFwiYmlvYmhlbWlzdFwiO1xuICAgICAgICAgICAgXCJCSU9DSEVNSVNUXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LnJ1bGVfcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzIChmb3IgcnVsZXMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmVhY3Rpb24tcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiByZWFjdGlvbnNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJlYWN0aW9ucyB0aGF0IFxcXG4gICAgICAgICAgICAgICBpbmR1Y2UgYW4gYXV0byBhbHNvIGluIHRoZSByaHNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJrYXNpbVwiO1xuICAgICAgICAgICAgXCJLQVNJTVwiO1xuICAgICAgICAgICAgXCJLYXNpbVwiO1xuICAgICAgICAgICAgXCJESVZJREVfQllfTkJSX09GX0FVVE9TX0lOX0xIU1wiO1xuICAgICAgICAgICAgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgICAgICAgICAgXCJiaW9iaGVtaXN0XCI7XG4gICAgICAgICAgICBcIkJJT0NIRU1JU1RcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQucmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzIChmb3IgcmVhY3Rpb25zKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNvdW50XCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICAoIFwiRW1iZWRkaW5nc1wiLFxuICAgICAgICAgICAgICBcImNvdW50IHRoZSBudW1iZXIgb2YgZW1iZWRkaW5ncyBvZiBwYXR0ZXJucyBpbnRvIHNwZWNpZXNcIiApO1xuICAgICAgICAgICAgXCJPY2N1cnJlbmNlc1wiLCBcImNvdW50IHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2Ygc3BlY2llc1wiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgWyBcImVtYmVkZGluZ3NcIjsgXCJFTUJFRERJTkdTXCI7IFwib2NjdXJyZW5jZXNcIjsgXCJPQ0NVUlJFTkNFU1wiIF0sXG4gICAgICAgICAgdC5jb3VudCApLFxuICAgICAgXCJ0dW5lIHdoZXRoZXIgd2UgY291bnQgaW4gZW1iZWRkaW5ncyBvciBpbiBvY2N1cnJlbmNlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDMgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWludGVybmFsLW1lYW5pbmdcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgICggXCJFbWJlZGRpbmdzXCIsXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGZvciBLYXBwYSBzcGVjaWVzIGRlbm90ZSBudW1iZXJzIG9mIGVtYmVkZGluZ3NcIiApO1xuICAgICAgICAgICAgKCBcIk9jY3VycmVuY2VzXCIsXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGZvciBLYXBwYSBzcGVjaWVzIGRlbm90ZSBudW1iZXJzIG9mIG9jY3VycmVuY2VzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFsgXCJlbWJlZGRpbmdzXCI7IFwiRU1CRURESU5HU1wiOyBcIm9jY3VycmVuY2VzXCI7IFwiT0NDVVJSRU5DRVNcIiBdLFxuICAgICAgICAgIHQuaW50ZXJuYWxfbWVhbmluZyApLFxuICAgICAgXCJ0dW5lIHRoZSBtZWFuaW5nIG9mIHZhcmlhYmxlIGZvciBLYXBwYSBzcGVjaWVzICh3aGV0aGVyIGl0IGlzIHRoZSBcXFxuICAgICAgIG51bWJlciBvZiBlbWJlZGRpbmdzIG9yIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNCBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tdHJ1bmNhdGVcIixcbiAgICAgIFN1cGVyYXJnLkludF9vcHQgdC5tYXhfc2l6ZV9mb3Jfc3BlY2llcyxcbiAgICAgIFwidHJ1bmNhdGUgdGhlIG5ldHdvcmsgYnkgZGlzY2FyZGluZyBzcGVjaWVzIHdpdGggc2l6ZSBncmVhdGVyIHRoYW4gdGhlIFxcXG4gICAgICAgYXJndW1lbnRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA0IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1tYXgtc2l6ZS1mb3Itc3BlY2llc1wiLFxuICAgICAgU3VwZXJhcmcuSW50X29wdCB0Lm1heF9zaXplX2Zvcl9zcGVjaWVzLFxuICAgICAgXCJ0cnVuY2F0ZSB0aGUgbmV0d29yayBieSBkaXNjYXJkaW5nIHNwZWNpZXMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiB0aGUgXFxcbiAgICAgICBhcmd1bWVudFwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDUgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXNob3ctcmVhY3Rpb25zXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd19yZWFjdGlvbnMsXG4gICAgICBcIkFubm90YXRlIE9ERXMgYnkgdGhlIGNvcnJlc3BvbmRpbmcgY2hlbWljYWwgcmVhY3Rpb25zXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXNtYXNoLXJlYWN0aW9uc1wiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNtYXNoX3JlYWN0aW9ucyxcbiAgICAgIFwiR2F0aGVyIGlkZW50aWNhbCByZWFjdGlvbnMgaW4gdGhlIE9ERXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMTsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNvbXB1dGUtamFjb2JpYW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5jb21wdXRlX2phY29iaWFuLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgY29tcHV0YXRpb24gb2YgdGhlIEphY29iaWFuIG9mIHRoZSBPREVzIFxcblxcXG4gICAgICAgXFx0IChub3QgYXZhaWxhYmxlIHlldClcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXdpdGgtc3ltbWV0cmllc1wiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJOb25lXCIsIFwibm8gc3ltbWV0cmllcyByZWR1Y3Rpb25cIjtcbiAgICAgICAgICAgICggXCJCYWNrd2FyZFwiLFxuICAgICAgICAgICAgICBcInVzZSB0aGUgc3ltbWV0cmllcyBzYXRpc2ZpZWQgYnkgdGhlIHJ1bGVzIGFuZCB0aGUgYWxnZWJyYWljIFxcXG4gICAgICAgICAgICAgICBleHByZXNzaW9uc1wiICk7XG4gICAgICAgICAgICAoIFwiRm9yd2FyZFwiLFxuICAgICAgICAgICAgICBcInVzZSB0aGUgc3ltbWV0cmllcyBzYXRpc2ZpZWQgYnkgdGhlIHJ1bGVzIGFuZCB0aGUgaW5pdGlhbCBzdGF0ZVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJub25lXCI7XG4gICAgICAgICAgICBcIk5PTkVcIjtcbiAgICAgICAgICAgIFwiQkFDS1dBUkRcIjtcbiAgICAgICAgICAgIFwiYmFja3dhcmRcIjtcbiAgICAgICAgICAgIFwiZm9yd2FyZFwiO1xuICAgICAgICAgICAgXCJGT1JXQVJEXCI7XG4gICAgICAgICAgICBcInRydWVcIjtcbiAgICAgICAgICAgIFwiVFJVRVwiO1xuICAgICAgICAgICAgXCJUcnVlXCI7XG4gICAgICAgICAgICBcImZhbHNlXCI7XG4gICAgICAgICAgICBcIkZBTFNFXCI7XG4gICAgICAgICAgICBcIkZhbHNlXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LndpdGhfc3ltbWV0cmllcyApLFxuICAgICAgXCJUdW5lIHdoaWNoIGtpbmQgb2YgYmlzaW11bGF0aW9uIGlzIHVzZWQgdG8gcmVkdWNlIHRoZSBzZXQgb2Ygc3BlY2llc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDU7IENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc2hvdy1zeW1tZXRyaWVzXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd19zeW1tZXRyaWVzLFxuICAgICAgXCJEaXNwbGF5IHRoZSBlcXVpdmFsZW5jZSByZWxhdGlvbnMgb3ZlciB0aGUgc2l0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS12aWV3cy1kb21haW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC52aWV3cyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdmlld3MgYW5hbHlzaXMgd2hlbiBkZXRlY3Rpbmcgc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMSBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LmRib25kcyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgZG91YmxlIGJvbmRzIGFuYWx5c2lzIHdoZW4gZGV0ZWN0aW5nIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDIgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLXNpdGUtYWNyb3NzLWJvbmRzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNpdGVfYWNyb3NzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgYW5hbHlzaXMgb2YgdGhlIHJlbGF0aW9uIGFtb25kIHRoZSBzdGF0ZXMgb2Ygc2l0ZXMgXFxcbiAgICAgICBpbiBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMyBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tbm9ubmVnYXRpdmVcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5ub25uZWdhdGl2ZSxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdGhlIGNvcnJlY3Rpb24gb2YgbmVnYXRpdmUgY29uY2VudHJhdGlvbnMgaW4gc3RpZmYgT0RFIFxcXG4gICAgICAgc3lzdGVtc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc2hvdy10aW1lLWFkdmFuY2VcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3RpbWVfYWR2YW5jZSxcbiAgICAgIFwiRGlzcGxheSB0aW1lIGFkdmFuY2UgZHVyaW5nIG51bWVyaWNhbCBpbnRlZ3JhdGlvblwiLFxuICAgICAgWyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1pbml0aWFsLXN0ZXBcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQuaW5pdGlhbF9zdGVwLFxuICAgICAgXCJJbml0aWFsIGludGVncmF0aW9uIHN0ZXBcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDQgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW1heC1zdGVwXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0Lm1heF9zdGVwLFxuICAgICAgXCJNYXhpbXVtIGludGVncmF0aW9uIHN0ZXBcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDUgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJlbGF0aXZlLXRvbGVyYW5jZVwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5yZWxhdGl2ZV90b2xlcmFuY2UsXG4gICAgICBcInRvbGVyYW5jZSB0byByZWxhdGl2ZSByb3VuZGluZyBlcnJvcnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDYgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWFic29sdXRlLXRvbGVyYW5jZVwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5hYnNvbHV0ZV90b2xlcmFuY2UsXG4gICAgICBcInRvbGVyYW5jZSB0byBhYnNvbHV0ZSByb3VuZGluZyBlcnJvcnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDcgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcmludF9lZmZpY2llbmN5LFxuICAgICAgXCJwcm9tcHQgQ1BVIHRpbWUgYW5kIHZhcmlvdXMgZGF0YXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMiBdLFxuICAgICAgRXhwZXJ0ICk7XG4gIF1cblxubGV0IGdldF9vcHRpb24gb3B0aW9ucyA9XG4gIGxldCB0aXRsZSA9IFZlcnNpb24udmVyc2lvbl9rYWRlX2Z1bGxfbmFtZSBpblxuICBsZXQgaW5wdXQgPSByZWYgW10gaW5cbiAgbGV0ICgpID0gU3VwZXJhcmdUay5wYXJzZSB+dGl0bGUgb3B0aW9ucyBpbnB1dCBpblxuICAhaW5wdXRcblxubGV0IGJ1aWxkX2thc2FfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gdCB0X2NvbW1vbiA9XG4gIENvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzIDo9ICEodC52aWV3cyk7XG4gIENvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIDo9ICEodC5kYm9uZHMpO1xuICBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyA6PSAhKHQuc2l0ZV9hY3Jvc3MpO1xuICBDb25maWcudHJhY2UgOj0gdF9jb21tb24uQ29tbW9uX2FyZ3MuZGVidWc7XG4gIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpXG4iLCIoKipcbiAqIGhlYWRlcnMubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbi9BbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMTQgMjAxNj5cbiAqICpcbiAqIFNvbWUgcGFyYW1ldGVyc1xuICogcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAqXG4gKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTVcbiAqIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcbmxldCBkb3RfY29tbWVudCA9IFwiI1wiXG5cbmxldCBoZWFkIHBhcmFtZXRlcnMgPVxuICBbXG4gICAgXCJUaGlzIGZpbGUgaGFzIGJlZW4gY29tcHV0ZWQgYnkgS2FTYTogYSBTdGF0aWMgQW5hbHl6ZXIgZm9yIEthcHBhIChcIlxuICAgIF4gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfc2hvcnRfdmVyc2lvbiBwYXJhbWV0ZXJzXG4gICAgXiBcIilcIjtcbiAgICBcIkRvd25sb2FkIHNvdXJjZXMvYmluYXJpZXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbVwiO1xuICAgIFwiXCI7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUgcGFyYW1ldGVycztcbiAgICBcIkNvbW1hbmQgbGluZSBpczogXCJcbiAgICBeIFN0cmluZy5jb25jYXQgXCIgXCJcbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIEFycmF5LnRvX2xpc3QgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbW1hbmRfbGluZSBwYXJhbWV0ZXJzKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IF90IDo6IHEgLT4gXCJLYVNhXCIgOjogcVxuICAgICAgICB8IFtdIC0+IFtdKTtcbiAgICBcIlwiO1xuICBdXG5cbmxldCBkb3RfdG9fcGRmID1cbiAgXCJQbGVhc2UgdXNlIGdyYXBodml6IChodHRwOi8vd3d3LmdyYXBodml6Lm9yZykgb3IgT21uaUdyYWZmbGUgdG8gZXhwb3J0IGl0IFxcXG4gICB0byBhIFBERlwiXG5cbmxldCBoZWFkX2luZmx1ZW5jZV9tYXBfaW5fZG90ID1cbiAgW1xuICAgIFwiVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mbHVlbmNlIG1hcCBpbiBkb3QuXCI7XG4gICAgZG90X3RvX3BkZjtcbiAgICBcIlwiO1xuICBdXG5cbmxldCBoZWFkX2NvbnRhY3RfbWFwX2luX2RvdCA9XG4gIFtcbiAgICBcIlRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnRhY3QgbWFwIGluIGRvdC5cIjtcbiAgICBkb3RfdG9fcGRmO1xuICAgIFwiXCI7XG4gIF1cbiIsIigqZmlsZSBuYW1lcyopXG5cbmxldCBpbnB1dCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXSAoKm5hbWUgb2YgdGhlIGthcHBhIGZpbGVzKilcbmxldCBvdXRwdXQgPSByZWYgXCJkYXRhLm91dFwiXG4iLCIoKipcbiAgKiBnZXRfb3B0aW9uLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMTgvMTIvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SmFuIDA4IDIwMjA+XG4gICogKlxuICAqIHByaW1pdGl2ZSB0byBwYXJzZSBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5vcGVuIFN1cGVyYXJnXG5cbmxldCBhY3Rpb25zID0gXCJBY3Rpb25zXCIsIDAsIE5vbmVcbmxldCBzeW50YXggPSBcIlN5bnRheFwiLCAxLCBOb25lXG5sZXQgb3V0cHV0ID0gXCJPdXRwdXRcIiwgMiwgTm9uZVxubGV0IHJlYWNoYWJpbGl0eSA9IFwiUmVhY2hhYmlsaXR5IGFuYWx5c2lzXCIsIDMsIE5vbmVcbmxldCB0cmFjZXMgPSBcIlRyYWNlIGFuYWx5c2lzXCIsIDQsIE5vbmVcbmxldCBjb250YWN0X21hcCA9IFwiQ29udGFjdCBtYXBcIiwgNSwgTm9uZVxubGV0IGluZmx1ZW5jZV9tYXAgPSBcIkluZmx1ZW5jZSBtYXBcIiwgNiwgTm9uZVxubGV0IGZsb3cgPSBcIkZsb3cgb2YgaW5mb3JtYXRpb25cIiwgNywgTm9uZVxubGV0IGRlYnVnID0gXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIiwgOCwgTm9uZVxuXG5sZXQgb3B0aW9ucyA9XG4gIExpc3QucmV2XG4gICAgW1xuICAgICAgKCBcIi0tZG8tYWxsXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLWNvbnRhY3QtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLWluZmx1ZW5jZS1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtcG90ZW50aWFsLWN5Y2xlc1wiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1zdG9jaGFzdGljLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJsYXVuY2ggZXZlcnl0aGluZ1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1yZXNldC1hbGxcIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtY29udGFjdC1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtaW5mbHVlbmNlLW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1wb3RlbnRpYWwtY3ljbGVzXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImxhdW5jaCBub3RoaW5nXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgIFwiLS12b2lkXCIsIFZvaWQsIFwiXCIsIFsgYWN0aW9ucywgMiBdLCBOb3JtYWw7XG4gICAgICAoIFwiLXN5bnRheFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJWM1wiLCBcInByZXZpb3VzIHZlcnNpb25cIjsgXCJWNFwiLCBcImN1cnJlbnQgdmVyc2lvblwiIF0sXG4gICAgICAgICAgICBbIFwiVjNcIjsgXCJWNFwiOyBcIjNcIjsgXCI0XCI7IFwidjNcIjsgXCJ2NFwiIF0sXG4gICAgICAgICAgICBDb25maWcuc3ludGF4X3ZlcnNpb24gKSxcbiAgICAgICAgXCJWZXJzaW9uIG9mIHRoZSBsZXhlci9wYXJzZXJcIixcbiAgICAgICAgWyBzeW50YXgsIDE7IGFjdGlvbnMsIDMwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1jb250YWN0LW1hcFwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19jb250YWN0X21hcCxcbiAgICAgICAgXCJjb21wdXRlIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIGFjdGlvbnMsIDI7IGNvbnRhY3RfbWFwLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1pbmZsdWVuY2UtbWFwXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX2luZmx1ZW5jZV9tYXAsXG4gICAgICAgIFwiY29tcHV0ZSB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIGFjdGlvbnMsIDM7IGluZmx1ZW5jZV9tYXAsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1pbmZsdWVuY2UtbWFwLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkluZGlyZWN0XCIsIFwiSWdub3JlIGdsdWluZyBjb21wYXRpYmlsaXR5XCI7XG4gICAgICAgICAgICAgIFwiRGlyZWN0XCIsIFwiSWdub3JlIHJlYWNoYWJsZSBzdGF0ZXNcIjtcbiAgICAgICAgICAgICAgXCJSZWFsaXNhYmxlXCIsIFwiVGFrZSBpbnRvIGFjY291bnQgcmVhY2hhYmxlIHN0YXRlc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsgXCJMb3dcIjsgXCJNZWRpdW1cIjsgXCJIaWdoXCI7IFwiRnVsbFwiIF0sXG4gICAgICAgICAgICBDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgaW5mbHVlbmNlX21hcCwgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24sXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBmbG93IG9mIGluZm9ybWF0aW9uIGluIHRoZSBPREUgXFxcbiAgICAgICAgIHNlbWFudGljc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDQ7IGZsb3csIDYgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXBvdGVudGlhbC1jeWNsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fc2NjLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIGJvbmRzIHRoYXQgbWF5IGJlIGludm9sdmVkIGluIHBvbHltZXJpc2F0aW9uXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNTsgY29udGFjdF9tYXAsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24sXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBmbG93IG9mIGluZm9ybWF0aW9uIGluIHRoZSBzdG9jaGFzdGljIFxcXG4gICAgICAgICBzZW1hbnRpY3NcIixcbiAgICAgICAgWyBhY3Rpb25zLCA2OyBmbG93LCA2IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzLFxuICAgICAgICBcIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgc3RhdGVzIG9mIGFnZW50IHNpdGVzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNzsgcmVhY2hhYmlsaXR5LCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZW5hYmxlLWV2ZXJ5LWRvbWFpblwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tY29udGFjdC1tYXAtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiZHluYW1pY1wiO1xuICAgICAgICAgICAgICBcIi0tdmlld3MtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJlbmFibGUgZXZlcnkgYWJzdHJhY3QgZG9tYWluXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZGlzYWJsZS1ldmVyeS1kb21haW5cIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcInN0YXRpY1wiO1xuICAgICAgICAgICAgICBcIi0tbm8tdmlld3MtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1kb3VibGUtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJkaXNhYmxlIGV2ZXJ5IGFic3RyYWN0IGRvbWFpblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgKCBcInN0YXRpY1wiLFxuICAgICAgICAgICAgICAgIFwiVmVyeSBjb2Fyc2Ugc3RhdGljIGFic3RyYWN0aW9uOiBldmVyeSBib25kIHRoYXQgb2NjdXJzIGluIFxcXG4gICAgICAgICAgICAgICAgIGluaXRpYWwgc3RhdGVzIGFuZCByaHMgb2YgcnVsZXMgaXMgY29uc2lkZXJlZFwiICk7XG4gICAgICAgICAgICAgICggXCJkeW5hbWljXCIsXG4gICAgICAgICAgICAgICAgXCJNb3JlIGFjY3VyYXRlIGFic3RyYWN0aW9uOiBvbmx5IHRoZSBib25kcyB0aGF0IG9jY3VyIGluIHRoZSBcXFxuICAgICAgICAgICAgICAgICBpbml0aWFsIHN0YXRlIG9yIGEgcnVsZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCBcXFxuICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHksIGFyZSBjb25zaWRlcmVkXCIgKTtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy53aXRoX2R5bmFtaWNfY29udGFjdF9tYXAgKSxcbiAgICAgICAgXCJjb250YWN0IG1hcCBkb21haW4gaXMgdXNlZCB0byBvdmVyLWFwcHJveGltYXRlIHNpZGUtZWZmZWN0c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXZpZXdzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBsb2NhbCB2aWV3cyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvdW50ZXJzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX2NvdW50ZXJzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBjb3VudGVyIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA1IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY291bnRlcnMtYWNjdXJhY3lcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwibm9uLXJlbGF0aW9uYWxcIiwgXCJMb3dlciBhbmQgdXBwZXIgYm91bmRzIGZvciBlYWNoIHZhcmlhYmxlXCI7XG4gICAgICAgICAgICAgICggXCJvY3RhZ29uc1wiLFxuICAgICAgICAgICAgICAgIFwiTG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBmb3IgZWFjaCB2YXJpYWJsZSwgIGFuIGVhY2ggc3VtIGFuZCBcXFxuICAgICAgICAgICAgICAgICBlYWNoIGRpZmZlcmVuY2UgYW1vbmcgdHdvIHZhcmlhYmxlc1wiICk7XG4gICAgICAgICAgICAgICggXCJtaVwiLFxuICAgICAgICAgICAgICAgIFwiQXBwcm94aW1hdGUgcmVkdWNlZCBwcm9kdWN0IGJldHdlZW4gaW50ZXJ2YWxzIGFuZCBhZmZpbmUgXFxcbiAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1wiICk7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcIm9jdFwiO1xuICAgICAgICAgICAgICBcIm9jdG9cIjtcbiAgICAgICAgICAgICAgXCJvY3RhZ29uXCI7XG4gICAgICAgICAgICAgIFwiTUlcIjtcbiAgICAgICAgICAgICAgXCJNaVwiO1xuICAgICAgICAgICAgICBcIk9jdFwiO1xuICAgICAgICAgICAgICBcIk9jdG9cIjtcbiAgICAgICAgICAgICAgXCJPY3RhZ29uXCI7XG4gICAgICAgICAgICAgIFwiT2N0YWdvbnNcIjtcbiAgICAgICAgICAgICAgXCJub24tcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIm5yXCI7XG4gICAgICAgICAgICAgIFwibm9uLXJlbFwiO1xuICAgICAgICAgICAgICBcIm5vbl9yZWxcIjtcbiAgICAgICAgICAgICAgXCJub25fcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIk5vbi1yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwiTnJcIjtcbiAgICAgICAgICAgICAgXCJOb24tcmVsXCI7XG4gICAgICAgICAgICAgIFwiTm9uX3JlbFwiO1xuICAgICAgICAgICAgICBcIk5vbl9yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgQ29uZmlnLmNvdW50ZXJfYW5hbHlzaXNfZG9tYWluICksXG4gICAgICAgIFwiQWJzdHJhY3QgZG9tYWluIGZvciBjb3VudGVyIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBkb3VibGUgYm9uZHMgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDcgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmcgdGhlIHN0YXRlcyBvZiBzaXRlcyBpbiBcXFxuICAgICAgICAgY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXNpdGVzLWFjY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmcgdGhlIHN0YXRlcyBvZiBzaXRlcyBpbiBcXFxuICAgICAgICAgY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOCBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWNvbXB1dGUtc3ltbWV0cmllc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zeW1tZXRyaWVzLFxuICAgICAgICBcIkxvb2sgdXAgZm9yIHBhaXJzIG9mIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDggXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS12ZXJib3NpdHktbGV2ZWwtZm9yLXZpZXctYW5hbHlzaXNcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTXV0ZVwiLCBcIk5vIGluZm9ybWF0aW9uIGRpc3BsYXllZFwiO1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcIlNob3cgYW5hbHlzaXMgcmVzdWx0IG9ubHlcIjtcbiAgICAgICAgICAgICAgXCJNZWRpdW1cIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIGFwcGxpZWRcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwiQWxzbyBzaG93IHdoZW4gbmV3IHZpZXdzIGFyZSBkaXNjb3ZlcmVkXCI7XG4gICAgICAgICAgICAgIFwiRnVsbFwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgcHV0IGluIHRoZSB3b3JraW5nIGxpc3RcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyApLFxuICAgICAgICBcIlR1bmUgdGhlIHZlcmJvc2l0eSBsZXZlbCBmb3IgdGhlIHZpZXcgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDkgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS12ZXJib3NpdHktbGV2ZWwtZm9yLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJNdXRlXCIsIFwiTm8gaW5mb3JtYXRpb24gZGlzcGxheWVkXCI7XG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiU2hvdyBhbmFseXNpcyByZXN1bHQgb25seVwiO1xuICAgICAgICAgICAgICBcIk1lZGl1bVwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgYXBwbGllZFwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJBbHNvIHNob3cgd2hlbiBwYXR0ZXJucyBhcmUgZGlzY292ZXJlZFwiO1xuICAgICAgICAgICAgICBcIkZ1bGxcIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIHB1dCBpbiB0aGUgd29ya2luZyBsaXN0XCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgKSxcbiAgICAgICAgXCJUdW5lIHRoZSB2ZXJib3NpdHkgbGV2ZWwgZm9yIHRoZSByZWFjaGFiaWxpdHkgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taGlkZS1vbmUtZC1yZWxhdGlvbnMtZnJvbS1jYXJ0ZXNpYW4tZGVjb21wb3NpdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uLFxuICAgICAgICBcIkZpbHRlciBvdXQgMS1kIHJlbGF0aW9ucyBmcm9tIHRoZSBDYXJ0ZXNpYW4gZGVjb21wb3NpdGlvblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTEgXSxcbiAgICAgICAgRGV2ZWxvcHBlciApO1xuICAgICAgKCBcIi0tc21hc2gtcmVsYXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnNtYXNoX3JlbGF0aW9ucyxcbiAgICAgICAgXCJSZWNvbWJpbmUgcmVsYXRpb25zIHRvIGdldCBhIG1vcmUgcHJlY2lzZSAmIGNvbXBhY3Qgb3V0cHV0XCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMiBdLFxuICAgICAgICBEZXZlbG9wcGVyICk7XG4gICAgICAoIFwiLS1vdXRwdXQtbW9kZS1mb3ItcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcInJhd1wiLCBcIm5vIHBvc3QtcHJvY2Vzc2luZ1wiO1xuICAgICAgICAgICAgICBcImthcHBhXCIsIFwia2FwcGEgbW9kZVwiO1xuICAgICAgICAgICAgICBcImVuZ2xpc2hcIiwgXCJuYXR1cmFsIGxhbmd1YWdlXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgKSxcbiAgICAgICAgXCJwb3N0LXByb2Nlc3MgcmVsYXRpb24gYW5kIG91dHB1dCB0aGUgcmVzdWx0IGluIHRoZSBjaG9zZW4gZm9ybWF0XCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtbG9jYWwtdHJhY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmNvbXB1dGVfbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIGxvY2FsIHRyYWNlcyBvZiBpbnRlcmVzdGluZyBwYXJ0cyBvZiBhZ2VudCBpbnRlcmZhY2VzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgOTsgdHJhY2VzLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tc2hvdy1ydWxlLW5hbWVzLWluLWxvY2FsLXRyYWNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIkFubm90YXRlIGVhY2ggdHJhbnNpdGlvbiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBydWxlcyBpbiB0cmFjZSBcXFxuICAgICAgICAgYWJzdHJhY3Rpb25cIixcbiAgICAgICAgWyB0cmFjZXMsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS11c2UtbWFjcm90cmFuc2l0aW9ucy1pbi1sb2NhbC10cmFjZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIlVzZSBtYWNyb3RyYW5zaXRpb25zIHRvIGdldCBhIGNvbXBhY3QgdHJhY2UgdXAgdG8gY2hhbmdlIG9mIHRoZSBcXFxuICAgICAgICAgaW50ZXJsZWF2aW5nIG9yZGVyIG9mIGNvbW11dGluZyBtaWNyb3RyYW5zaXRpb25zXCIsXG4gICAgICAgIFsgdHJhY2VzLCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taWdub3JlLXRyaXZpYWwtbG9zYW5nZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nZXMsXG4gICAgICAgIFwiRG8gbm90IHVzZSBtYWNyb3RyYW5zaXRpb25zIGZvciBzaW1wbGlmeWluZyB0cml2aWFsIGxvc2FuZ2VzXCIsXG4gICAgICAgIFsgdHJhY2VzLCAzIF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tYWRkLXNpbmd1bGFyLW1hY3Jvc3RhdGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyxcbiAgICAgICAgXCJDb21wbGV0ZSB0aGUgc2ltcGxpY2lhbCBjb21wbGV4ZXMgd2l0aCBzaW5ndWxhciBpbnRlcnNlY3Rpb24gb2YgXFxcbiAgICAgICAgIGhpZ2hlci1kaW1lbnNpb24gZmFjZXNcIixcbiAgICAgICAgWyB0cmFjZXMsIDQgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1hZGQtc2luZ3VsYXItbWljcm9zdGF0ZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzLFxuICAgICAgICBcIkNvbXBsZXRlIHRoZSBzaW1wbGljaWFsIGNvbXBsZXhlcyB3aXRoIHNpbmd1bGFyIGludGVyc2VjdGlvbiBvZiBcXFxuICAgICAgICAgaGlnaGVyLWRpbWVuc2lvbiBmYWNlc1wiLFxuICAgICAgICBbIHRyYWNlcywgNSBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWNvbXB1dGUtc2VwYXJhdGluZy10cmFuc2l0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgdHJhbnNpdGlvbnMgdGhhdCBzZXBhcmF0ZXMgc3Ryb25nbHkgY29ubmVjdGVkIHNldCBvZiBcXFxuICAgICAgICAgY29uZmlndXJhdGlvbnNcIixcbiAgICAgICAgWyBhY3Rpb25zLCAxMDsgdHJhY2VzLCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWRpcmVjdG9yeVwiLFxuICAgICAgICBNdWx0aUV4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtY29udGFjdC1tYXAtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXAtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWxvY2FsLXRyYWNlcy1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtbG9nLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgIF0sXG4gICAgICAgIFwiRGVmYXVsdCByZXBvc2l0b3J5IGZvciBvdXRwdXRzXCIsXG4gICAgICAgIFsgb3V0cHV0LCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCogQ09OVEFDVCBNQVAgKilcbiAgICAgICggXCItLW91dHB1dC1jb250YWN0LW1hcC1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfY21fZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgY29udGFjdCBtYXAgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgMDsgY29udGFjdF9tYXAsIDMgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtY29udGFjdC1tYXBcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5jb250YWN0X21hcF9maWxlLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgdGhlIGNvbnRhY3QgbWFwIG91dHB1dFwiLFxuICAgICAgICBbIG91dHB1dCwgMTsgY29udGFjdF9tYXAsIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb250YWN0LW1hcC1mb3JtYXRcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiRE9UXCIsIFwiZG90IGZvcm1hdFwiO1xuICAgICAgICAgICAgICBcIkdFUEhJXCIsIFwiR2VwaGkgZm9ybWF0XCI7XG4gICAgICAgICAgICAgICgqXCJIVE1MXCIsXCJIVE1MIGZvcm1hdFwiKilcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5jb250YWN0X21hcF9mb3JtYXQgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDI7IGNvbnRhY3RfbWFwLCA1IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29udGFjdC1tYXAtYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiQ29sbGVjdCBpbmZvIGZyb20gcmhzIG9mIHJ1bGVzIGFuZCBpbml0aWFsIHN0YXRlXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcIk9ubHkgY29uc2lkZXIgcmVhY2hhYmxlIHJ1bGVzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBhY2N1cmFjeSBsZXZlbCBvZiB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgNiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXBvbHltZXItZGV0ZWN0aW9uLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcImJhc2VkIG9ubHkgb24gdGhlIGNvbnRhY3QgbWFwXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcInVzZSByZWFjaGFiaWxpdHkgYW5hbHlzaXMgYXMgd2VsbFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnNjY19hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBkZXRlY3Rpb24gb2YgcG9seW1lcnNcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgNyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXB1cmUtY29udGFjdFwiLFxuICAgICAgICBCb29sIENvbmZpZy5wdXJlX2NvbnRhY3QsXG4gICAgICAgIFwic2hvdyBpbiB0aGUgY29udGFjdCBtYXAgIG9ubHkgdGhlIHNpdGVzIHdpdGggYSBiaW5kaW5nIHN0YXRlXCIsXG4gICAgICAgIFsgY29udGFjdF9tYXAsIDggXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoKiBJTkZMVUVOQ0UgTUFQICopXG4gICAgICAoIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcC1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfaW1fZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgaW5mbHVlbmNlIG1hcCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCAzOyBpbmZsdWVuY2VfbWFwLCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXBcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5pbmZsdWVuY2VfbWFwX2ZpbGUsXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgMzsgaW5mbHVlbmNlX21hcCwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWluZmx1ZW5jZS1tYXAtZm9ybWF0XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIkRPVFwiLCBcImRvdCBmb3JtYXRcIjsgXCJESU1cIiwgXCJESU0gZm9ybWF0XCI7IFwiSFRNTFwiLCBcIkhUTUwgZm9ybWF0XCIgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZm9ybWF0ICksXG4gICAgICAgIFwiVHVuZSB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDQ7IGluZmx1ZW5jZV9tYXAsIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoKiBMT0NBTCBUUkFDRVMgKilcbiAgICAgICggXCItLW91dHB1dC1sb2NhbC10cmFjZXMtZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSxcbiAgICAgICAgXCJwdXQgdGhlIGZpbGVzIGFib3V0IGxvY2FsIHRyYWNlcyBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgNTsgdHJhY2VzLCA3IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tbG9jYWwtdHJhY2VzLWZvcm1hdFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJET1RcIiwgXCJkb3QgZm9ybWF0XCI7IFwiSFRNTFwiLCBcIkhUTUwgZm9ybWF0XCIgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmxvY2FsX3RyYWNlX2Zvcm1hdCApLFxuICAgICAgICBcIlR1bmUgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBsb2NhbCB0cmFuc2l0aW9uIHN5c3RlbXNcIixcbiAgICAgICAgWyBvdXRwdXQsIDY7IHRyYWNlcywgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICgqIExPRyAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWxvZy1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgbG9nIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCA3OyBkZWJ1ZywgMCBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWRlYnVnXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDEgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1kZWJ1Zy1tb2RlXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDIgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1kZWJ1Z2dpbmctbW9kZVwiLFxuICAgICAgICBCb29sIENvbmZpZy50cmFjZSxcbiAgICAgICAgXCJkdW1wIGRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbIGRlYnVnLCAzIF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tdW5zYWZlLW1vZGVcIixcbiAgICAgICAgQm9vbCBDb25maWcudW5zYWZlLFxuICAgICAgICBcImV4Y2VwdGlvbnMgYXJlIGdhdGhlcmVkIGF0IHRoZSBlbmQgb2YgdGhlIGNvbXB1dGF0aW9uLCBpbnN0ZWFkIG9mIFxcXG4gICAgICAgICBoYWx0aW5nIGl0IFwiLFxuICAgICAgICBbIGRlYnVnLCA0IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgICBCb29sIENvbmZpZy5wcmludF9lZmZpY2llbmN5LFxuICAgICAgICBcInByb21wdCBDUFUgdGltZSBhbmQgdmFyaW91cyBkYXRhc1wiLFxuICAgICAgICBbIGRlYnVnLCA1IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItcnVsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBydWxlc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1jb25zdHJhaW50c1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHJlZmluZW1lbnQgY29uc3RyYWludHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItbnItY29uc3RyYWludHNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBub24gcmVsYXRpb25hbCByZWZpbmVtZW50IGNvbnN0cmFpbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLWluZmx1ZW5jZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIGluZmx1ZW5jZSByZWxhdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItZGVhZC1ydWxlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgZGVhZCBydWxlc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1ub24td2Vha2x5LXJldmVyc2libGUtdHJhbnNpdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2Ygbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLW9mLXJ1bGVzLXdpdGgtbm9uLXdlYWtseS1yZXZlcnNpYmxlLXRyYW5zaXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgcnVsZXMgd2l0aCBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItc2NjXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9zY2MsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtYXZlcmFnZS1zY2NcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyxcbiAgICAgICAgXCJkdW1wIHRoZSBhdmVyYWdlIHNpemUgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC10aW1pbmdcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfdGltaW5nLFxuICAgICAgICBcImR1bXAgQ1BVIHRpbWVcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZmlsZVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmJhY2tkb29yX2ZpbGUsXG4gICAgICAgIFwic2VsZWN0IHRoZSBmaWxlIHRvIGR1bXAgYmFja2Rvb3IgaW5mb3JtYXRpb25cIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuYmFja2Rvb3JfZGlyZWN0b3J5LFxuICAgICAgICBcInNlbGVjdCB0aGUgZGlyZWN0b3J5IGZvciB0aGUgZmlsZSB0byBkdW1wIGJhY2tkb29yIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICBdXG5cbmxldCBnZXRfb3B0aW9uIGVycm9yID1cbiAgbGV0IHRpdGxlID0gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lIGluXG4gIGxldCAoKSA9IFN1cGVyYXJnVGsucGFyc2UgfnRpdGxlIG9wdGlvbnMgRmlsZU5hbWVzLmlucHV0IGluXG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhXG4gICAgICAoKVxuICBpblxuICBlcnJvciwgcGFyYW1ldGVycywgIUZpbGVOYW1lcy5pbnB1dFxuIiwiKCoqXG4gKiBleGNlcHRpb24ubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXVnIDE1IDIwMTY+XG4gKiAqXG4gKiBUaGlzIGxpYnJhcnkgZGVjbGFyZXMgZXhjZXB0aW9uc1xuICpcbiAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIG1ldGhvZF9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm1ldGhvZF9oYW5kbGVyXG5cbmxldCBlbXB0eV9lcnJvcl9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXJcbmxldCBpc19lbXB0eV9lcnJvcl9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmlzX2VtcHR5X2Vycm9yX2hhbmRsZXJcblxubGV0IHNhZmVfd2FybiBwYXJhbWV0ZXJzIF9lcnJvcl9oYW5kbGVyIGZpbGVfbmFtZSBtZXNzYWdlIGV4biBfZGVmYXVsdCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4blxuICBpblxuICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgdW5jYXVnaHRcbiAgICAgIFsgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMgXVxuICBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgc3RyaW5nbGlzdFxuICBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIGluXG4gIHJhaXNlIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuVW5jYXVnaHRfZXhjZXB0aW9uIHVuY2F1Z2h0KVxuXG5sZXQgdW5zYWZlX3dhcm4gX3BhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIGRlZmF1bHQgPVxuICBsZXQgdW5jYXVnaHQgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG5cbiAgaW5cbiAgKCBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yIHVuY2F1Z2h0ID90b191aSBlcnJvcl9oYW5kbGVyLFxuICAgIGRlZmF1bHQgKCkgKVxuXG5sZXQgd2Fybl9hdXggcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlIG1lc3NhZ2UgZXhuIGRlZmF1bHQgPVxuICBsZXQgZXJyb3IsIGRmdCA9XG4gICAgaWYgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdW5zYWZlIHBhcmFtZXRlcnMgdGhlblxuICAgICAgdW5zYWZlX3dhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlIG1lc3NhZ2UgZXhuIGRlZmF1bHRcbiAgICBlbHNlXG4gICAgICBzYWZlX3dhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdFxuICBpblxuICBsZXQgKCkgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfZXJyb3JfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIGVycm9yLCBkZnRcblxubGV0IHdhcm5fd2l0aF9leG4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSAoZmlsZSwgbGluZSwgXywgXylcbiAgICA/KG1lc3NhZ2UgPSBcIlwiKSA/KHBvcyA9IE5vbmUpIGV4biBkZWZhdWx0ID1cbiAgbGV0IGxpYWlzb24gPVxuICAgIGlmIG1lc3NhZ2UgPSBcIlwiICYmIHBvcyA9IE5vbmUgdGhlblxuICAgICAgXCJcIlxuICAgIGVsc2VcbiAgICAgIFwiOiBcIlxuICBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIHMgLT4gXCIsIFwiIF4gTG9jLnRvX3N0cmluZyBzXG4gIGluXG4gIHdhcm5fYXV4IHBhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgKFNvbWUgZmlsZSlcbiAgICAoU29tZSAoXCJsaW5lIFwiIF4gc3RyaW5nX29mX2ludCBsaW5lIF4gcG9zIF4gbGlhaXNvbiBeIG1lc3NhZ2UpKVxuICAgIGV4biBkZWZhdWx0XG5cbmxldCB3YXJuIHBhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgZmlsZV9saW5lID8obWVzc2FnZSA9IFwiXCIpID9wb3MgZXhuXG4gICAgZGVmYXVsdCA9XG4gIHdhcm5fd2l0aF9leG4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX2xpbmUgfm1lc3NhZ2UgfnBvcyBleG5cbiAgICAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBwcmludF9mb3JfS2FTaW0gcGFyYW1ldGVycyBoYW5kbGVycyA9XG4gIGxldCBwYXJhbWV0ZXJzID0gUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4IHBhcmFtZXRlcnMgXCJlcnJvcjogXCIgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBjYXVnaHQgLT5cbiAgICAgICAgbGV0IHN0cmluZ2xpc3QgPVxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgOjogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IGNhdWdodCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgICAgICAgc3RyaW5nbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycykpXG4gIGluXG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gdW5jYXVnaHQgLT5cbiAgICAgICAgbGV0IHN0cmluZ2xpc3QgPVxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgOjogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgdW5jYXVnaHQgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiJXNcIilcbiAgICAgICAgICAgIHN0cmluZ2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIGluXG4gICAgICAgICgpKVxuICAgICAgKExpc3QucmV2XG4gICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycykpXG4gIGluXG4gICgpXG5cbmxldCBwcmludCBwYXJhbWV0ZXJzIGhhbmRsZXJzID1cbiAgaWZcbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycyA9IFtdXG4gICAgJiYgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycyA9IFtdXG4gIHRoZW4gKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzZXhlY3V0aW9uIGZpbmlzaGVkIHdpdGhvdXQgYW55IGV4Y2VwdGlvblwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXggcGFyYW1ldGVycylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgKClcbiAgKSBlbHNlIChcbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgXCIlc1NvbWUgZXhjZXB0aW9ucyBoYXZlIGJlZW4gcmFpc2VkXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBwcmludF9mb3JfS2FTaW0gcGFyYW1ldGVycyBoYW5kbGVyc1xuICApXG5cbmxldCBwcmludF9lcnJvcnNfbGlnaHRfZm9yX2thc2ltIHBhcmFtZXRlcnMgaGFuZGxlcnMgPVxuICBpZlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgICAmJiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgdGhlblxuICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzU29tZSBleGNlcHRpb25zIGhhdmUgYmVlbiByYWlzZWQgZHVyaW5nIHRoZSBzdGF0aWMgYW5hbHlzaXMsIHBsZWFzZSBcXFxuICAgICAgICAgYW5hbHlzZSB5b3VyIGZpbGUgd2l0aCBLYVNhXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICAoKVxuICApXG5cbmxldCB3cmFwIHBhcmFtZXRlcnMgZXJyb3Igc3RyaW5nIHN0cmluZ19vcHQgZXhuID1cbiAgZnN0ICh3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yIChTb21lIHN0cmluZykgc3RyaW5nX29wdCBleG4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBfbGlmdF9lcnJvcl9sb2dzX2Zvcl9LYVNhIGYgPVxuICBmIChmdW4gcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgc3RyaW5nX29wdCBleG4gLT5cbiAgICAgIGZzdFxuICAgICAgICAod2Fybl9hdXggcGFyYW1ldGVycyBlcnJvciAoU29tZSBzdHJpbmcpIHN0cmluZ19vcHQgZXhuIChmdW4gKCkgLT4gKCkpKSlcblxubGV0IGNoZWNrX3BvaW50XG4gICAgKHdhcm4gOlxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgICAgbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAgID90b191aTpib29sIC0+XG4gICAgICAnYSAtPlxuICAgICAgP21lc3NhZ2U6c3RyaW5nIC0+XG4gICAgICA/cG9zOkxvYy50IC0+XG4gICAgICBleG4gLT5cbiAgICAgIHVuaXQgLT5cbiAgICAgIG1ldGhvZF9oYW5kbGVyICogdW5pdCkgcGFyYW1ldGVyIGVycm9yIGVycm9yJyBzID90b191aSA/bWVzc2FnZSA/cG9zIGV4biA9XG4gIGlmIGVycm9yID09IGVycm9yJyB0aGVuXG4gICAgZXJyb3JcbiAgZWxzZSAoXG4gICAgbGV0IGVycm9yLCAoKSA9IHdhcm4gcGFyYW1ldGVyIGVycm9yJyA/dG9fdWkgcyA/bWVzc2FnZSA/cG9zIGV4biAoKSBpblxuICAgIGVycm9yXG4gIClcbiIsIigqKiBUaW1lLXN0YW1wOiA8SnVsIDAyIDIwMTY+ICopXG5cbmxldCBmb3JfS2FTaW0gZiA9IGYgKGZ1biBfIF8gXyBfIF8gLT4gKCkpICgpICgpXG5sZXQgbGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gZiBhIGIgPSBzbmQgKGZvcl9LYVNpbSBmIGEgYilcblxubGV0IGxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2Zvcl9LYVNpbSBmIGEgYiA9XG4gIGxldCBfLCBiLCBjID0gZm9yX0thU2ltIGYgYSBiIGluXG4gIGIsIGNcblxubGV0IGxpZnRfZ2VuZXJpY190ZXJuYXJ5X2Zvcl9LYVNpbSBmIGEgYiBjID0gc25kIChmb3JfS2FTaW0gZiBhIGIgYylcblxubGV0IGxpZnRfZ2VuX3VuYXJ5IGR1bXAgZiBhID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2Vycm9yX2hhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPSBmIHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfZ2VuX2JpbmFyeSBkdW1wIGYgYSBiID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2Vycm9yX2hhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPSBmIHBhcmFtZXRlcnMgZXJyb3IgYSBiIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF9nZW5fdGVybmFyeSBkdW1wIGYgYSBiIGMgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGIgYyBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdW5hcnkgZiBhID0gbGlmdF9nZW5fdW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYVxuXG5sZXQgbGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iaW5hcnkgZiBhIGIgPVxuICBsaWZ0X2dlbl9iaW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYSBiXG5cbmxldCBsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3Rlcm5hcnkgZiBhIGIgYyA9XG4gIGxpZnRfZ2VuX2JpbmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhIGIgY1xuXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfdW5hcnkgZiBhID0gbGlmdF9nZW5fdW5hcnkgKGZ1biBfIF8gLT4gKCkpIGYgYVxubGV0IGxpZnRfd2l0aG91dF9sb2dnaW5nX2JpbmFyeSBmIGEgYiA9IGxpZnRfZ2VuX2JpbmFyeSAoZnVuIF8gXyBfIC0+ICgpKSBmIGEgYlxuXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfdGVybmFyeSBmIGEgYiBjID1cbiAgbGlmdF9nZW5fdGVybmFyeSAoZnVuIF8gXyBfIF8gLT4gKCkpIGYgYSBiIGNcbiIsIigqKlxuICAqIHN0b3J5UHJvZmlsaW5nLm1sXG4gICpcbiAgKiBHZW5lcmF0ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gZm9yIHN0b3JpZXMgaW4gS2FTaW1cbiAgKlxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAwOS8wNC8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDE1LzA2LzIwMTJcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgc3RlcF9raW5kID1cbiAgfCBEdW1teVxuICB8IEJlZ2lubmluZ1xuICB8IENvbGxlY3RfdHJhY2VzXG4gIHwgQ2F1c2FsX2NvbXByZXNzaW9uXG4gIHwgV2Vha19jb21wcmVzc2lvblxuICB8IFN0cm9uZ19jb21wcmVzc2lvblxuICB8IEl0ZXJhdGlvbiBvZiBpbnRcbiAgfCBTdG9yeSBvZiBpbnRcbiAgfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvblxuICB8IFNpcGhvbl9kZXRlY3Rpb25cbiAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZVxuICB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuICB8IFBzZXVkb19pbnZlcnNlX2RlbGV0aW9uXG4gIHwgUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGVcbiAgfCBDb21wcmVzc2lvblxuICB8IEJ1aWxkX2dyaWRcbiAgfCBCdWlsZF9jb25maWd1cmF0aW9uXG4gIHwgVHJhbnNpdGl2ZV9jbG9zdXJlXG4gIHwgR3JhcGhfcmVkdWN0aW9uXG4gIHwgR3JhcGhfY29udmVyc2lvblxuICB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb25cbiAgfCBTdG9yZV90cmFjZVxuICB8IFJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50c1xuICB8IEJsYWNrbGlzdGluZ19ldmVudHNcbiAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb25cbiAgfCBEb21haW5zX2luaXRpYWxpemF0aW9uXG4gIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIG9mIHN0cmluZ1xuICB8IEFwcGx5X3J1bGUgb2YgaW50XG4gIHwgSW5pdGlhbF9zdGF0ZSBvZiBpbnRcbiAgfCBTY2FuX3J1bGVfc3RhdGljIG9mIGludFxuICB8IFNjYW5fcnVsZV9keW5hbWljIG9mIGludFxuICB8IFJlZ3VsYXJfaW5mbHVlbmNlc1xuICB8IFNpZGVfZWZmZWN0c19pbmZsdWVuY2VzXG4gIHwgTWVyZ2VfaW5mbHVlbmNlc1xuICB8IEthU2ltX2NvbXBpbGF0aW9uXG4gIHwgS2FTYV9wcmVjb21waWxhdGlvblxuICB8IEthU2FfbGV4aW5nXG4gIHwgS2FTYV9saW5raW5nXG4gIHwgSW5mbHVlbmNlX21hcCBvZiBzdHJpbmdcbiAgfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIG9mIHN0cmluZ1xuICB8IExLYXBwYV9zaWduYXR1cmVcblxubGV0IHN0cmluZ19vZl9zdGVwX2tpbmQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IER1bW15IHwgQmVnaW5uaW5nIC0+IFwiXCJcbiAgfCBCdWlsZF9jb25maWd1cmF0aW9uIC0+IFwiQnVpbGQgY29uZmlndXJhdGlvblwiXG4gIHwgQ29sbGVjdF90cmFjZXMgLT4gXCJDb2xsZWN0IHRyYWNlc1wiXG4gIHwgQ2F1c2FsX2NvbXByZXNzaW9uIC0+IFwiQ2F1c2FsIGNvbXByZXNzaW9uXCJcbiAgfCBXZWFrX2NvbXByZXNzaW9uIC0+IFwiV2VhayBjb21wcmVzc2lvblwiXG4gIHwgU3Ryb25nX2NvbXByZXNzaW9uIC0+IFwiU3Ryb25nIGNvbXByZXNzaW9uXCJcbiAgfCBJdGVyYXRpb24gaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiSXRlcmF0aW9uICVpXCIgaW50XG4gIHwgU3RvcnkgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU3RvcnkgJWlcIiBpbnRcbiAgfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvbiAtPiBcIlBhcnRpYWwgb3JkZXIgcmVkdWN0aW9uXCJcbiAgfCBTaXBob25fZGV0ZWN0aW9uIC0+IFwiRGV0ZWN0aW9uIG9mIHNpcGhvbnNcIlxuICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlIC0+IFwiU3BsaXR0aW5nIGluaXRpYWwgc3RhdGVzXCJcbiAgfCBBZ2VudF9pZHNfZGlzYW1iaWd1YXRpb24gLT4gXCJSZW5hbWluZyBhZ2VudHMgdG8gYXZvaWQgY29uZmxpY3RzXCJcbiAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvbiAtPiBcIkRlbGV0aW9uIG9mIHBzZXVkbyBpbnZlcnNlIGV2ZW50c1wiXG4gIHwgUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGUgLT5cbiAgICBcIlJlbW92aW5nIGV2ZW50cyBhZnRlciB0aGUgbGFzdCBvYnNlcnZhYmxlc1wiXG4gIHwgQ29tcHJlc3Npb24gLT4gXCJDb21wcmVzc2lvblwiXG4gIHwgVHJhbnNpdGl2ZV9jbG9zdXJlIC0+IFwiVHJhbnNpdGl2ZSBjbG9zdXJlXCJcbiAgfCBCdWlsZF9ncmlkIC0+IFwiR3JpZCBjb21wdXRhdGlvblwiXG4gIHwgR3JhcGhfcmVkdWN0aW9uIC0+IFwiVHJhbnNpdGl2ZSByZWR1Y3Rpb25cIlxuICB8IEdyYXBoX2NvbnZlcnNpb24gLT4gXCJHcmFwaCBjb252ZXJzaW9uXCJcbiAgfCBDYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIC0+IFwiQ29tcHV0aW5nIHRoZSBjYW5ub25pYyBmb3JtXCJcbiAgfCBTdG9yZV90cmFjZSAtPiBcIlN0b3JlIHRyYWNlXCJcbiAgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMgLT4gXCJSZW1vdmluZyBibGFjay1saXN0ZWQgZXZlbnRzXCJcbiAgfCBCbGFja2xpc3RpbmdfZXZlbnRzIC0+IFwiQmxha2xpc3RpbmcgZXZlbnRzXCJcbiAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb24gLT4gXCJHbG9iYWwgaW5pdGlhbGl6YXRpb25cIlxuICB8IERvbWFpbnNfaW5pdGlhbGl6YXRpb24gLT4gXCJEb21haW5zIGluaXRpYWxpemF0aW9uXCJcbiAgfCBEb21haW5faW5pdGlhbGl6YXRpb24gc3RyaW5nIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJEb21haW4gaW5pdGlhbGl6YXRpb24gKCVzKVwiIHN0cmluZ1xuICB8IEFwcGx5X3J1bGUgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiQXBwbHkgcnVsZSAlaVwiIGludFxuICB8IEluaXRpYWxfc3RhdGUgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiSW5pdGlhbCBzdGF0ZSAlaVwiIGludFxuICB8IFNjYW5fcnVsZV9zdGF0aWMgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU2NhbiBydWxlICVpIChzdGF0aWMpXCIgaW50XG4gIHwgU2Nhbl9ydWxlX2R5bmFtaWMgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU2NhbiBydWxlICVpIChkeW5hbWljKVwiIGludFxuICB8IFJlZ3VsYXJfaW5mbHVlbmNlcyAtPiBQcmludGYuc3ByaW50ZiBcIlJlZ3VsYXIgaW5mbHVlbmNlcyBjb21wdXRhdGlvblwiXG4gIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXMgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIlNpZGUtZWZmZWN0cyBpbmZsdWVuY2VzIGNvbXB1dGF0aW9uXCJcbiAgfCBNZXJnZV9pbmZsdWVuY2VzIC0+IFByaW50Zi5zcHJpbnRmIFwiTWVyZ2luZyBpbmZsdWVuY2VzXCJcbiAgfCBLYVNpbV9jb21waWxhdGlvbiAtPiBQcmludGYuc3ByaW50ZiBcIkthU2ltIGZyb250ZW5kXCJcbiAgfCBLYVNhX3ByZWNvbXBpbGF0aW9uIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBwcmVjb21waWxhdGlvblwiXG4gIHwgS2FTYV9sZXhpbmcgLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIExleGluZ1wiXG4gIHwgS2FTYV9saW5raW5nIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBMaW5raW5nXCJcbiAgfCBJbmZsdWVuY2VfbWFwIHN0cmluZyAtPiBQcmludGYuc3ByaW50ZiBcIkluZmx1ZW5jZSBtYXAgKCVzKVwiIHN0cmluZ1xuICB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgc3RyaW5nIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJJbmZsdWVuY2UgbWFwIChpbnRlcm5hbCAlcylcIiBzdHJpbmdcbiAgfCBMS2FwcGFfc2lnbmF0dXJlIC0+IFByaW50Zi5zcHJpbnRmIFwiTEthcHBhIHNpZ25hdHVyZVwiXG5cbmxldCBwcmludF9zdGVwX2tpbmQgcGFyYW1ldGVycyB4ID1cbiAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcnMpXG4gICAgKHN0cmluZ19vZl9zdGVwX2tpbmQgeClcblxubW9kdWxlIHR5cGUgU3RvcnlTdGF0cyA9IHNpZ1xuICB0eXBlIGxvZ19pbmZvXG5cbiAgdmFsIGluY19yZW1vdmVkX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfc2VsZWN0ZWRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGxvZ19pbmZvX3RvX2pzb24gOiBsb2dfaW5mbyAtPiBZb2pzb24uQmFzaWMudFxuICB2YWwgbG9nX2luZm9fb2ZfanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfY3V0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfa19jdXRfZXZlbnRzIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCByZXNldF9jdXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX2thc2ltX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9pbml0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9zaWRlX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9vYnNfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19icmFuY2ggOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2N1dCA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCByZXNldF9sb2cgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgZHVtcF9jb21wbGV0ZV9sb2cgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IGxvZ19pbmZvIC0+IHVuaXRcbiAgdmFsIGR1bXBfc2hvcnRfbG9nIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBsb2dfaW5mbyAtPiB1bml0XG4gIHZhbCBhZGRfcHJvcGFnYXRpb25fY2FzZV91cCA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX2xvb2tfdXBfY2FzZSA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX2xvb2tfZG93bl9jYXNlIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBjb3B5IDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGlzX2R1bW15IDogc3RlcF9raW5kIC0+IGJvb2xcblxuICB2YWwgYWRkX2V2ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGNsb3NlX2V2ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGFkZF9ldmVudF9vcHQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgb3B0aW9uIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGNsb3NlX2V2ZW50X29wdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHN0ZXBfa2luZCBvcHRpb24gLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgc2V0X3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0ZXBfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfZ2xvYmFsX2N1dCA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3BzZXVkb19pbnYgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9zdGFydF9jb21wcmVzc2lvbiA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfZ3JpZF9nZW5lcmF0aW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jYW5vbmljYWxpc2F0aW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jb25jdXJyZW50X2V2ZW50X2RldGVjdGlvbl90aW1lIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgZWxsYXBzZWRfZ2xvYmFsX3RpbWUgOiBsb2dfaW5mbyAtPiBmbG9hdFxuICB2YWwgZWxsYXBzZWRfdGltZSA6IGxvZ19pbmZvIC0+IGZsb2F0XG4gIHZhbCBpbml0X2xvZ19pbmZvIDogdW5pdCAtPiBsb2dfaW5mb1xuICB2YWwgdGljayA6IGxvZ19pbmZvIC0+IGJvb2wgKiBsb2dfaW5mb1xuICB2YWwgY2xvc2VfbG9nZ2VyIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiB1bml0XG4gIHZhbCBmbHVzaF9sb2dnZXIgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgU3RvcnlTdGF0cyA6IFN0b3J5U3RhdHMgPSBzdHJ1Y3RcbiAgdHlwZSBzdGFja19oZWFkID0ge1xuICAgIGN1cnJlbnRfYnJhbmNoOiBpbnQ7XG4gICAgc2VsZWN0ZWRfZXZlbnRzOiBpbnQ7XG4gICAgcmVtYWluaW5nX2V2ZW50czogaW50O1xuICAgIHJlbW92ZWRfZXZlbnRzOiBpbnQ7XG4gICAgc3RhY2tfc2l6ZTogaW50O1xuICB9XG5cbiAgdHlwZSBzdGVwID0ge1xuICAgIHRhZzogc3RlcF9raW5kO1xuICAgIHNpemVfYmVmb3JlOiBpbnQgb3B0aW9uO1xuICAgIHNpemVfYWZ0ZXI6IGludCBvcHRpb247XG4gICAgdGltZV9zdGFydDogZmxvYXQ7XG4gICAgZHVyYXRpb246IGZsb2F0IG9wdGlvbjtcbiAgICBkZXB0aDogaW50O1xuICB9XG5cbiAgbGV0IGtfZmlyc3QgX3BhcmFtZXRlciBrIGwgPVxuICAgIGxldCByZWMgYXV4IGsgbCBvdXRwdXQgPVxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICBbXSwgTGlzdC5yZXYgb3V0cHV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAoIChsZXQgcmVjIGF1eCBrIG91dHB1dCA9XG4gICAgICAgICAgICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG91dHB1dFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBhdXggKGsgLSAxKSAoXCJcIiA6OiBvdXRwdXQpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBhdXggayBbXSksXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXQgKVxuICAgICAgICB8IHQgOjogcSAtPiBhdXggKGsgLSAxKSBxICh0IDo6IG91dHB1dClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBrIGwgW11cblxuICBsZXQgcHJpbnRfdGFzayBwYXJhbWV0ZXIgKGEsIGIpID1cbiAgICBsZXQgXyA9IHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXIgYS50YWcgaW5cbiAgICBsZXQgdGFiLCBiID0ga19maXJzdCBwYXJhbWV0ZXIgNCBiIGluXG4gICAgbGV0IF8gPSBMaXN0Lml0ZXIgKHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXIpIGIgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKExvZ2dlcnMucHJpbnRfY2VsbCAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKSlcbiAgICAgICAgdGFiXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgKG1hdGNoIGEuc2l6ZV9iZWZvcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgaSAtPiBzdHJpbmdfb2ZfaW50IGkpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgKG1hdGNoIGEuc2l6ZV9hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpIC0+IHN0cmluZ19vZl9pbnQgaSlcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5kdXJhdGlvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSB0aW1lIC0+IHN0cmluZ19vZl9mbG9hdCB0aW1lKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgY2xvc2VfbG9nZ2VyIHBhcmFtZXRlciA9XG4gICAgTG9nZ2Vycy5jbG9zZV9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcblxuICBsZXQgZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciA9XG4gICAgTG9nZ2Vycy5mbHVzaF9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcblxuICB0eXBlIGxvZ19pbmZvID0ge1xuICAgIGdsb2JhbF90aW1lOiBmbG9hdDtcbiAgICBzdG9yeV90aW1lOiBmbG9hdDtcbiAgICBzdGVwX3RpbWU6IGZsb2F0O1xuICAgIGN1cnJlbnRfdGFzazogc3RlcCBsaXN0O1xuICAgIG5leHRfZGVwdGg6IGludDtcbiAgICBicmFuY2g6IGludDtcbiAgICBjdXQ6IGludDtcbiAgICBzdGFjazogc3RhY2tfaGVhZCBsaXN0O1xuICAgIGN1cnJlbnRfc3RhY2s6IHN0YWNrX2hlYWQ7XG4gICAgcHJvcGFnYXRpb246IGludCBhcnJheTtcbiAgICBsYXN0X3RpY2s6IGZsb2F0O1xuICB9XG5cbiAgbGV0IGlzX2R1bW15IHN0ZXBfa2luZCA9XG4gICAgbWF0Y2ggc3RlcF9raW5kIHdpdGhcbiAgICB8IER1bW15IC0+IHRydWVcbiAgICB8IEJlZ2lubmluZyB8IENvbGxlY3RfdHJhY2VzIHwgQ2F1c2FsX2NvbXByZXNzaW9uIHwgV2Vha19jb21wcmVzc2lvblxuICAgIHwgU3Ryb25nX2NvbXByZXNzaW9uIHwgUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24gfCBTaXBob25fZGV0ZWN0aW9uXG4gICAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuICAgIHwgUHNldWRvX2ludmVyc2VfZGVsZXRpb24gfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZVxuICAgIHwgQ29tcHJlc3Npb24gfCBCdWlsZF9ncmlkIHwgQnVpbGRfY29uZmlndXJhdGlvbiB8IFRyYW5zaXRpdmVfY2xvc3VyZVxuICAgIHwgR3JhcGhfcmVkdWN0aW9uIHwgR3JhcGhfY29udmVyc2lvbiB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb25cbiAgICB8IFN0b3JlX3RyYWNlIHwgUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzIHwgQmxhY2tsaXN0aW5nX2V2ZW50c1xuICAgIHwgR2xvYmFsX2luaXRpYWxpemF0aW9uIHwgRG9tYWluc19pbml0aWFsaXphdGlvbiB8IFJlZ3VsYXJfaW5mbHVlbmNlc1xuICAgIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXMgfCBNZXJnZV9pbmZsdWVuY2VzIHwgS2FTaW1fY29tcGlsYXRpb25cbiAgICB8IEthU2FfcHJlY29tcGlsYXRpb24gfCBLYVNhX2xleGluZyB8IEthU2FfbGlua2luZyB8IExLYXBwYV9zaWduYXR1cmVcbiAgICB8IEl0ZXJhdGlvbiBfIHwgU3RvcnkgXyB8IERvbWFpbl9pbml0aWFsaXphdGlvbiBfIHwgQXBwbHlfcnVsZSBfXG4gICAgfCBJbml0aWFsX3N0YXRlIF8gfCBTY2FuX3J1bGVfc3RhdGljIF8gfCBTY2FuX3J1bGVfZHluYW1pYyBfXG4gICAgfCBJbmZsdWVuY2VfbWFwIF8gfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IGFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3Igc3RlcF9raW5kIGYgbG9nX2luZm8gPVxuICAgIGlmIGlzX2R1bW15IHN0ZXBfa2luZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBhZGRfZXZlbnQgc2hvdWxkIG5vdCBiZSBcXFxuICAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgZHVtbXkgZXZlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiRHVtbXkgZXZlbnQgaW4gYWRkX2V2ZW50XCIpICgpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBuZXh0X2RlcHRoID0gbG9nX2luZm8ubmV4dF9kZXB0aCBpblxuICAgICAgbGV0IHRhc2sgPVxuICAgICAgICB7XG4gICAgICAgICAgdGFnID0gc3RlcF9raW5kO1xuICAgICAgICAgIHNpemVfYmVmb3JlID1cbiAgICAgICAgICAgIChtYXRjaCBmIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiBTb21lIChmICgpKSk7XG4gICAgICAgICAgc2l6ZV9hZnRlciA9IE5vbmU7XG4gICAgICAgICAgdGltZV9zdGFydCA9IFN5cy50aW1lICgpO1xuICAgICAgICAgIGR1cmF0aW9uID0gTm9uZTtcbiAgICAgICAgICBkZXB0aCA9IG5leHRfZGVwdGg7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IExvZ2dlcnMub3Blbl9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9jZWxsIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpIFwiU3RhcnRcIlxuICAgICAgaW5cbiAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICB0YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgbG9nX2luZm8uY3VycmVudF90YXNrKVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICBsZXQgXyA9IExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpIGluXG4gICAgICBsZXQgXyA9IGZsdXNoX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlclxuICAgICAgICAgIChzdHJpbmdfb2Zfc3RlcF9raW5kIHN0ZXBfa2luZClcbiAgICAgIGluXG4gICAgICBsZXQgY3VycmVudF90YXNrID0gdGFzayA6OiBsb2dfaW5mby5jdXJyZW50X3Rhc2sgaW5cbiAgICAgIGVycm9yLCB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggKyAxOyBjdXJyZW50X3Rhc2sgfVxuICAgIClcblxuICBsZXQgY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yIHN0ZXBfa2luZCBmIGxvZ19pbmZvID1cbiAgICBpZiBpc19kdW1teSBzdGVwX2tpbmQgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgIFwiSW5jb25zaXN0ZW50IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwgY2xvc2VfZXZlbnQgc2hvdWxkIG5vdCBiZSBcXFxuICAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgZHVtbXkgZXZlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiRHVtbXkgZXZlbnQgaW4gY2xvc2VfZXZlbnRcIikgKClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgaW50ZXJydXB0ZWQgPVxuICAgICAgICBsZXQgbmV4dF9kZXB0aCA9IGxvZ19pbmZvLm5leHRfZGVwdGggaW5cbiAgICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgICAgaWYgbmV4dF9kZXB0aCA9IDEgdGhlblxuICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBkZXB0aCBzaG91bGQgbm90IGJlIGVxdWFsIFxcXG4gICAgICAgICAgICAgICAgIHRvIDEgd2hlbiBjbG9zaW5nIGFuIGV2ZW50XCJcbiAgICAgICAgICAgICAgKEZhaWx1cmUgXCJEZXB0aD0xIGluIGNsb3NlX2V2ZW50XCIpICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsICgpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGxvZ19pbmZvLmN1cnJlbnRfdGFzayB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgIFwiSW5jb25zaXN0ZW50IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwgbm8gY3VycmVudCB0YXNrIHdoZW4gXFxcbiAgICAgICAgICAgICAgIGNsb3NpbmcgYW4gZXZlbnRcIlxuICAgICAgICAgICAgKEZhaWx1cmUgXCJObyBjdXJyZW50IHRhc2tzIGluIGNsb3NlX2V2ZW50XCIpIGxvZ19pbmZvXG4gICAgICAgIHwgY3VycmVudF90YXNrIDo6IHRhaWwgd2hlbiBjdXJyZW50X3Rhc2sudGFnID0gc3RlcF9raW5kIC0+XG4gICAgICAgICAgbGV0IHNpemVfYWZ0ZXIgPVxuICAgICAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiBTb21lIChmICgpKVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgLS4gY3VycmVudF90YXNrLnRpbWVfc3RhcnQgaW5cbiAgICAgICAgICBsZXQgdGFzayA9IHsgY3VycmVudF90YXNrIHdpdGggc2l6ZV9hZnRlcjsgZHVyYXRpb24gPSBTb21lIHRpbWUgfSBpblxuICAgICAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICAgICAgdGFzaywgTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LnRhZykgKExpc3QucmV2IHRhaWwpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAoaWYgaW50ZXJydXB0ZWQgdGhlblxuICAgICAgICAgICAgICAgICBcIkludGVycnVwdGVkXCJcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgXCJFbmRcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHByaW50X3Rhc2sgcGFyYW1ldGVyIHRlcm1pbmF0ZWRfdGFzayBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmNsb3NlX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggLSAxOyBjdXJyZW50X3Rhc2sgPSB0YWlsIH0gKVxuICAgICAgICB8IGN1cnJlbnRfdGFzayA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMub3Blbl9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICAgICAgY3VycmVudF90YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgdGFpbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiSW50ZXJydXB0ZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gICAgICAgICAgYXV4XG4gICAgICAgICAgICB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggLSAxOyBjdXJyZW50X3Rhc2sgPSB0YWlsIH1cbiAgICAgICAgICAgIGVycm9yIHRydWVcbiAgICAgIGluXG4gICAgICBhdXggbG9nX2luZm8gZXJyb3IgZmFsc2VcbiAgICApXG5cbiAgbGV0IGdlbl9vcHQgZ2VuIHBhcmFtZXRlciBlcnJvciBzdGVwX2tpbmQgZiBsb2dfaW5mbyA9XG4gICAgbWF0Y2ggc3RlcF9raW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgfCBTb21lIGUgLT4gZ2VuIHBhcmFtZXRlciBlcnJvciBlIGYgbG9nX2luZm9cblxuICBsZXQgYWRkX2V2ZW50X29wdCA9IGdlbl9vcHQgYWRkX2V2ZW50XG4gIGxldCBjbG9zZV9ldmVudF9vcHQgPSBnZW5fb3B0IGNsb3NlX2V2ZW50XG5cbiAgbGV0IHByb3BhZ2F0aW9uX2xhYmVscyA9XG4gICAgW3xcbiAgICAgIFwiTm9uZVwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMSBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDIgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAzIFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNCBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDUgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA2IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNyBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDggXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA5IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDExXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxMlwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTNcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDE0XCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxNVwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTZcIjtcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEgXCI7XG4gICAgICAoKjE3KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDIgXCI7XG4gICAgICAoKjE4KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDMgXCI7XG4gICAgICAoKjE5KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDQgXCI7XG4gICAgICAoKjIwKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDUgXCI7XG4gICAgICAoKjIxKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDYgXCI7XG4gICAgICAoKjIyKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDcgXCI7XG4gICAgICAoKjIzKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDggXCI7XG4gICAgICAoKjI0KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDkgXCI7XG4gICAgICAoKjI1KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEwXCI7XG4gICAgICAoKjI2KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDExXCI7XG4gICAgICAoKjI3KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEyXCI7XG4gICAgICAoKjI4KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEzXCI7XG4gICAgICAoKjI5KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE0XCI7XG4gICAgICAoKjMwKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE1XCI7XG4gICAgICAoKjMxKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE2XCI7XG4gICAgICAoKjMyKilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAxXCI7XG4gICAgICAoKjMzKilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAyXCI7XG4gICAgICAoKjM0KilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAzXCI7XG4gICAgICAoKjM1KilcbiAgICAgIFwiTG9va191cDogICBjYXNlICA0XCI7XG4gICAgICAoKjM2KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAxXCI7XG4gICAgICAoKjM3KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAyXCI7XG4gICAgICAoKjM4KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAzXCI7XG4gICAgICAoKjM5KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICA0XCI7XG4gICAgICAoKjQwKilcbiAgICB8XVxuXG4gIGxldCBwcm9wYWdhdGlvbl9jYXNlcyA9IEFycmF5Lmxlbmd0aCBwcm9wYWdhdGlvbl9sYWJlbHNcblxuICBsZXQgY29weSBsb2dfaW5mbyA9XG4gICAgeyBsb2dfaW5mbyB3aXRoIHByb3BhZ2F0aW9uID0gQXJyYXkuY29weSBsb2dfaW5mby5wcm9wYWdhdGlvbiB9XG5cbiAgbGV0IGluaXRfbG9nX2luZm8gKCkgPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICB7XG4gICAgICBuZXh0X2RlcHRoID0gMTtcbiAgICAgIGdsb2JhbF90aW1lID0gdGltZTtcbiAgICAgIHN0b3J5X3RpbWUgPSB0aW1lO1xuICAgICAgc3RlcF90aW1lID0gdGltZTtcbiAgICAgIGN1cnJlbnRfdGFzayA9IFtdO1xuICAgICAgcHJvcGFnYXRpb24gPSBBcnJheS5tYWtlIHByb3BhZ2F0aW9uX2Nhc2VzIDA7XG4gICAgICBicmFuY2ggPSAwO1xuICAgICAgY3V0ID0gMDtcbiAgICAgIGN1cnJlbnRfc3RhY2sgPVxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudF9icmFuY2ggPSAwO1xuICAgICAgICAgIHNlbGVjdGVkX2V2ZW50cyA9IDA7XG4gICAgICAgICAgcmVtYWluaW5nX2V2ZW50cyA9IDA7XG4gICAgICAgICAgcmVtb3ZlZF9ldmVudHMgPSAwO1xuICAgICAgICAgIHN0YWNrX3NpemUgPSAwO1xuICAgICAgICB9O1xuICAgICAgc3RhY2sgPSBbXTtcbiAgICAgIGxhc3RfdGljayA9IDAuO1xuICAgIH1cblxuICBsZXQgbG9nX2luZm9fdG9fanNvbiBsb2dfaW5mbyA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiZ2xvYmFsX3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLmdsb2JhbF90aW1lO1xuICAgICAgICBcInN0b3J5X3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIFwic3RlcF90aW1lXCIsIGBGbG9hdCBsb2dfaW5mby5zdGVwX3RpbWU7XG4gICAgICAgIFwibmV4dF9kZXB0aFwiLCBgSW50IGxvZ19pbmZvLm5leHRfZGVwdGg7XG4gICAgICAgIFwiYnJhbmNoXCIsIGBJbnQgbG9nX2luZm8uYnJhbmNoO1xuICAgICAgICBcImN1dFwiLCBgSW50IGxvZ19pbmZvLmN1dDtcbiAgICAgIF1cblxuICBsZXQgZmxvYXRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgRmxvYXQgZiAtPiBmXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZmxvYXRcIiwgeCkpXG5cbiAgbGV0IGludF9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBJbnQgZiAtPiBmXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZmxvYXRcIiwgeCkpXG5cbiAgbGV0IGxvZ19pbmZvX29mX2pzb24geCA9XG4gICAgbGV0IGluaXQgPSBpbml0X2xvZ19pbmZvICgpIGluXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgQXNzb2MgbCB3aGVuIExpc3QubGVuZ3RoIGwgPSA2IC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGluaXQgd2l0aFxuICAgICAgICAgICBnbG9iYWxfdGltZSA9IGZsb2F0X29mX2pzb24gKExpc3QuYXNzb2MgXCJnbG9iYWxfdGltZVwiIGwpO1xuICAgICAgICAgICBzdG9yeV90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0b3J5X3RpbWVcIiBsKTtcbiAgICAgICAgICAgc3RlcF90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0ZXBfdGltZVwiIGwpO1xuICAgICAgICAgICBuZXh0X2RlcHRoID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJuZXh0X2RlcHRoXCIgbCk7XG4gICAgICAgICAgIGJyYW5jaCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiYnJhbmNoXCIgbCk7XG4gICAgICAgICAgIGN1dCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiY3V0XCIgbCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgbG9nX2luZm9cIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGxvZ19pbmZvXCIsIHgpKVxuXG4gIGxldCBkdW1wX3Nob3J0X2xvZyBwYXJhbWV0ZXIgbG9nX2luZm8gPVxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiUmVtYWluaW5nIGV2ZW50czogJWkgOyBTdGFjayBzaXplOiAlaSA7IFwiXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2sucmVtYWluaW5nX2V2ZW50c1xuICAgICAgICBsb2dfaW5mby5jdXJyZW50X3N0YWNrLnN0YWNrX3NpemVcbiAgICBpblxuICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgXCJUb3RhbCBicmFuY2g6ICVpIDsgVG90YWwgY3V0OiAlaSA7IEN1cnJlbnQgZGVwdGg6ICVpIEAuXCIgbG9nX2luZm8uYnJhbmNoXG4gICAgICBsb2dfaW5mby5jdXQgbG9nX2luZm8uY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaFxuXG4gIGxldCByZXNldF9sb2cgbG9nID1cbiAgICBsZXQgdCA9IGxvZy5wcm9wYWdhdGlvbiBpblxuICAgIGxldCBfID0gQXJyYXkuZmlsbCB0IDAgKEFycmF5Lmxlbmd0aCB0KSAwIGluXG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHsgbG9nIHdpdGggc3RlcF90aW1lID0gdGltZTsgc3RvcnlfdGltZSA9IHRpbWUgfVxuXG4gIGxldCBwcm9wYWdhdGVfdXAgaSA9IGlcbiAgbGV0IHByb3BhZ2F0ZV9kb3duIGkgPSBpICsgMTZcbiAgbGV0IGxvb2tfdXAgaSA9IGkgKyAzMlxuICBsZXQgbG9va19kb3duIGkgPSBpICsgMzZcblxuICBsZXQgZWxsYXBzZWRfdGltZSBsb2cgPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICB0aW1lIC0uIGxvZy5zdG9yeV90aW1lXG5cbiAgbGV0IGVsbGFwc2VkX2dsb2JhbF90aW1lIGxvZyA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHRpbWUgLS4gbG9nLmdsb2JhbF90aW1lXG5cbiAgbGV0IHNldF90aW1lIGxvZyA9XG4gICAgeyBsb2cgd2l0aCBzdG9yeV90aW1lID0gU3lzLnRpbWUgKCk7IHN0ZXBfdGltZSA9IFN5cy50aW1lICgpIH1cblxuICBsZXQgc2V0X3N0ZXBfdGltZSBsb2cgPSB7IGxvZyB3aXRoIHN0ZXBfdGltZSA9IFN5cy50aW1lICgpIH1cbiAgbGV0IHNldF9zdGFydF9jb21wcmVzc2lvbiA9IHNldF90aW1lXG5cbiAgbGV0IHNldF9zdG9yeV9yZXNlYXJjaF90aW1lIGxvZyA9XG4gICAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICAgIGxldCBzdCA9IGxvZy5zdGVwX3RpbWUgaW5cbiAgICB7IGxvZyB3aXRoIHN0b3J5X3RpbWUgPSB0IC0uIHN0OyBzdGVwX3RpbWUgPSB0IH1cblxuICBsZXQgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgbG9nID0gbG9nXG4gIGxldCBzZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZyA9IGxvZ1xuICBsZXQgc2V0X2dyaWRfZ2VuZXJhdGlvbiBsb2cgPSBsb2dcbiAgbGV0IHNldF9jYW5vbmljYWxpc2F0aW9uIGxvZyA9IGxvZ1xuXG4gIGxldCBhZGRfY2FzZSBpIGxvZyA9XG4gICAgbGV0IHQgPSBsb2cucHJvcGFnYXRpb24gaW5cbiAgICBsZXQgXyA9IHQuKGkpIDwtIHQuKGkpICsgMSBpblxuICAgIGxvZ1xuXG4gIGxldCBhZGRfbG9va19kb3duX2Nhc2UgaSA9IGFkZF9jYXNlIChsb29rX2Rvd24gaSlcbiAgbGV0IGFkZF9sb29rX3VwX2Nhc2UgaSA9IGFkZF9jYXNlIChsb29rX3VwIGkpXG4gIGxldCBhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIGkgPSBhZGRfY2FzZSAocHJvcGFnYXRlX2Rvd24gaSlcbiAgbGV0IGFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIGkgPSBhZGRfY2FzZSAocHJvcGFnYXRlX3VwIGkpXG5cbiAgbGV0IGluY19jdXQgbG9nID1cbiAgICBtYXRjaCBsb2cuc3RhY2sgd2l0aFxuICAgIHwgW10gLT4gbG9nXG4gICAgfCB0IDo6IHEgLT4geyBsb2cgd2l0aCBjdXJyZW50X3N0YWNrID0gdDsgc3RhY2sgPSBxOyBjdXQgPSBsb2cuY3V0ICsgMSB9XG5cbiAgbGV0IGluY19icmFuY2ggbG9nID1cbiAgICB7XG4gICAgICBsb2cgd2l0aFxuICAgICAgc3RhY2sgPSBsb2cuY3VycmVudF9zdGFjayA6OiBsb2cuc3RhY2s7XG4gICAgICBicmFuY2ggPSBsb2cuYnJhbmNoICsgMTtcbiAgICAgIGN1cnJlbnRfc3RhY2sgPVxuICAgICAgICB7XG4gICAgICAgICAgbG9nLmN1cnJlbnRfc3RhY2sgd2l0aFxuICAgICAgICAgIGN1cnJlbnRfYnJhbmNoID0gbG9nLmN1cnJlbnRfc3RhY2suY3VycmVudF9icmFuY2ggKyAxO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgaW5jX25fa2FzaW1fZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25fb2JzX2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19uX3NpZGVfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25faW5pdF9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfY3V0X2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19rX2N1dF9ldmVudHMgX2sgbG9nID0gbG9nXG4gIGxldCByZXNldF9jdXRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX3NlbGVjdGVkX2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19yZW1vdmVkX2V2ZW50cyBsb2cgPSBsb2dcblxuICBsZXQgZHVtcF9jb21wbGV0ZV9sb2cgcGFyYW1ldGVyIGxvZ19pbmZvID1cbiAgICBsZXQgbG9nZ2VyID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiLypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiU3RvcnkgcHJvZmlsaW5nXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJFbGxhcHNlZF90aW1lOiAgICAgICAgICAgICAgICAgICVmXCJcbiAgICAgICAgKGVsbGFwc2VkX3RpbWUgbG9nX2luZm8pXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJTdG9yeSByZXNlYXJjaCB0aW1lOiAgICAgICAgICAgICVmXCJcbiAgICAgICAgbG9nX2luZm8uc3RvcnlfdGltZVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiRXhwbG9yYXRpb24gZGVwdGg6ICAgICAgICAgICAgICAlaVwiXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2suY3VycmVudF9icmFuY2hcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkV4cGxvcmF0aW9uIGN1dHM6ICAgICAgICAgICAgICAgJWlcIiBsb2dfaW5mby5jdXRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiKioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIlByb3BhZ2F0aW9uIEhpdHM6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID49IHByb3BhZ2F0aW9uX2Nhc2VzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiICAgICAgICAlcyAlaVwiIHByb3BhZ2F0aW9uX2xhYmVscy4oaylcbiAgICAgICAgICAgICAgbG9nX2luZm8ucHJvcGFnYXRpb24uKGspXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChrICsgMSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBfID0gYXV4IDEgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiKi9cIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAoKVxuXG4gIGxldCB0aWNrIGxvZ19pbmZvID1cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgaWYgdGltZSAtLiBsb2dfaW5mby5sYXN0X3RpY2sgPiA2MDAuIHRoZW5cbiAgICAgIHRydWUsIHsgbG9nX2luZm8gd2l0aCBsYXN0X3RpY2sgPSB0aW1lIH1cbiAgICBlbHNlXG4gICAgICBmYWxzZSwgbG9nX2luZm9cblxuICBsZXQgc2V0X2dsb2JhbF9jdXQgX24gbG9nX2luZm8gPSBsb2dfaW5mb1xuICBsZXQgc2V0X3BzZXVkb19pbnYgX24gbG9nX2luZm8gPSBsb2dfaW5mb1xuZW5kXG4iLCIoKipcbiAgIFRpbWUtc3RhbXA6IDxGZWIgMjIgMjAxOD5cbiopXG5cbm1vZHVsZSB0eXBlIFNldF93aXRoX2xvZ3MgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCBpc19zaW5nbGV0b24gOiB0IC0+IGJvb2xcblxuICB2YWwgYWRkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgYWRkX3doZW5fbm90X2luIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgcmVtb3ZlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgbWludXMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgZGlzam9pbnRfdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgaW50ZXIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgZGlmZiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBjYXJkaW5hbCA6IHQgLT4gaW50XG4gIHZhbCBtZW0gOiBlbHQgLT4gdCAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgdmFsIGZvcl9hbGwgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICB2YWwgcGFydGl0aW9uIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3Vic2V0IDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGZvbGRfaW52IDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXBfd2l0aF9sb2dzID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgc2V0XG4gIHR5cGUgKydhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIG1lbSA6IGVsdCAtPiAnYSB0IC0+IGJvb2xcblxuICB2YWwgZmluZF9vcHRpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2Egb3B0aW9uXG5cbiAgdmFsIGZpbmRfZGVmYXVsdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhXG5cbiAgdmFsIGZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYVxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2Egb3B0aW9uXG5cbiAgdmFsIGFkZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBhZGRfb3Jfb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCByZW1vdmUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCByZW1vdmVfb3Jfbm90IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgdXBkYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIG1hcDIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MgdFxuXG4gIHZhbCBtYXAyeiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBmb2xkMnogOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnY1xuXG4gIHZhbCBmb2xkMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGZvbGQyX3NwYXJzZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGl0ZXIyX3NwYXJzZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBkaWZmIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0ICogJ2EgdFxuXG4gIHZhbCBkaWZmX3ByZWQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHQgKiAnYSB0XG5cbiAgdmFsIG1lcmdlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHVuaW9uIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoZWx0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9ucyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgKGVsdCAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICBzZXQgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYlxuXG4gIHZhbCBpdGVyIDogKGVsdCAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcblxuICB2YWwgaXRlcjIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbiAgdmFsIGZvbGQgOiAoZWx0IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gIHZhbCBtYXBpIDogKGVsdCAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBtYXAgOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBmaWx0ZXJfb25lIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IChlbHQgKiAnYSkgb3B0aW9uXG4gIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGJpbmRpbmdzIDogJ2EgdCAtPiAoZWx0ICogJ2EpIGxpc3RcblxuICB2YWwgb2ZfanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICA/ZXJyb3JfbXNnOnN0cmluZyAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiBlbHQpIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+ICd2YWx1ZSkgLT5cbiAgICBZb2pzb24uQmFzaWMudCAtPlxuICAgICd2YWx1ZSB0XG5cbiAgdmFsIHRvX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgKGVsdCAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAoJ3ZhbHVlIC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICd2YWx1ZSB0IC0+XG4gICAgWW9qc29uLkJhc2ljLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhfbG9ncyA9IHNpZ1xuICB0eXBlIGVsdFxuXG4gIG1vZHVsZSBTZXQgOiBTZXRfd2l0aF9sb2dzIHdpdGggdHlwZSBlbHQgPSBlbHRcbiAgbW9kdWxlIE1hcCA6IE1hcF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IGVsdCBhbmQgdHlwZSBzZXQgPSBTZXQudFxuZW5kXG5cbmxldCBsaWZ0IGYgPSBmIEV4Y2VwdGlvbi53cmFwXG5cbm1vZHVsZSBNYWtlIChTX2JvdGggOiBTZXRNYXAuUykgOlxuICBTX3dpdGhfbG9nc1xuICAgIHdpdGggdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgIGFuZCB0eXBlICdhIE1hcC50ID0gJ2EgU19ib3RoLk1hcC50XG4gICAgIGFuZCB0eXBlIFNldC50ID0gU19ib3RoLlNldC50ID0gc3RydWN0XG4gIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuXG4gIG1vZHVsZSBTZXQgOlxuICAgIFNldF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHQgYW5kIHR5cGUgdCA9IFNfYm90aC5TZXQudCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgIHR5cGUgdCA9IFNfYm90aC5TZXQudFxuXG4gICAgbGV0IGVtcHR5ID0gU19ib3RoLlNldC5lbXB0eVxuICAgIGxldCBpc19lbXB0eSA9IFNfYm90aC5TZXQuaXNfZW1wdHlcbiAgICBsZXQgc2luZ2xldG9uID0gU19ib3RoLlNldC5zaW5nbGV0b25cbiAgICBsZXQgaXNfc2luZ2xldG9uID0gU19ib3RoLlNldC5pc19zaW5nbGV0b25cbiAgICBsZXQgYWRkID0gbGlmdCBTX2JvdGguU2V0LmFkZF93aXRoX2xvZ3NcblxuICAgIGxldCBhZGRfd2hlbl9ub3RfaW4gcCBlIHggcyA9XG4gICAgICBsZXQgZSwgXywgcyA9IChsaWZ0IFNfYm90aC5TZXQuYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzKSBwIGUgeCBzIGluXG4gICAgICBlLCBzXG5cbiAgICBsZXQgcmVtb3ZlID0gbGlmdCBTX2JvdGguU2V0LnJlbW92ZV93aXRoX2xvZ3NcbiAgICBsZXQgdW5pb24gPSBsaWZ0IFNfYm90aC5TZXQudW5pb25fd2l0aF9sb2dzXG4gICAgbGV0IGRpc2pvaW50X3VuaW9uID0gbGlmdCBTX2JvdGguU2V0LmRpc2pvaW50X3VuaW9uX3dpdGhfbG9nc1xuICAgIGxldCBpbnRlciA9IGxpZnQgU19ib3RoLlNldC5pbnRlcl93aXRoX2xvZ3NcbiAgICBsZXQgZGlmZiA9IGxpZnQgU19ib3RoLlNldC5kaWZmX3dpdGhfbG9nc1xuICAgIGxldCBtaW51cyA9IGxpZnQgU19ib3RoLlNldC5taW51c193aXRoX2xvZ3NcbiAgICBsZXQgY2FyZGluYWwgPSBTX2JvdGguU2V0LnNpemVcbiAgICBsZXQgbWVtID0gU19ib3RoLlNldC5tZW1cbiAgICBsZXQgZXhpc3RzID0gU19ib3RoLlNldC5leGlzdHNcbiAgICBsZXQgZmlsdGVyID0gU19ib3RoLlNldC5maWx0ZXJcbiAgICBsZXQgZm9yX2FsbCA9IFNfYm90aC5TZXQuZm9yX2FsbFxuICAgIGxldCBwYXJ0aXRpb24gPSBTX2JvdGguU2V0LnBhcnRpdGlvblxuICAgIGxldCBjb21wYXJlID0gU19ib3RoLlNldC5jb21wYXJlXG4gICAgbGV0IGVxdWFsID0gU19ib3RoLlNldC5lcXVhbFxuICAgIGxldCBzdWJzZXQgPSBTX2JvdGguU2V0LnN1YnNldFxuICAgIGxldCBpdGVyID0gU19ib3RoLlNldC5pdGVyXG4gICAgbGV0IGZvbGQgPSBTX2JvdGguU2V0LmZvbGRcbiAgICBsZXQgZm9sZF9pbnYgPSBTX2JvdGguU2V0LmZvbGRfaW52XG4gICAgbGV0IGVsZW1lbnRzID0gU19ib3RoLlNldC5lbGVtZW50c1xuICAgIGxldCBjaG9vc2UgPSBTX2JvdGguU2V0LmNob29zZVxuICAgIGxldCBtaW5fZWx0ID0gU19ib3RoLlNldC5taW5fZWx0XG4gICAgbGV0IG1heF9lbHQgPSBTX2JvdGguU2V0Lm1heF9lbHRcbiAgZW5kXG5cbiAgbW9kdWxlIE1hcCA6XG4gICAgTWFwX3dpdGhfbG9nc1xuICAgICAgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICAgICBhbmQgdHlwZSAnYSB0ID0gJ2EgU19ib3RoLk1hcC50XG4gICAgICAgYW5kIHR5cGUgc2V0ID0gU19ib3RoLlNldC50XG4gICAgICAgYW5kIHR5cGUgc2V0ID0gU2V0LnQgPSBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICB0eXBlIHNldCA9IFNfYm90aC5TZXQudFxuICAgIHR5cGUgKydkYXRhIHQgPSAnZGF0YSBTX2JvdGguTWFwLnRcblxuICAgIGxldCBlbXB0eSA9IFNfYm90aC5NYXAuZW1wdHlcbiAgICBsZXQgaXNfZW1wdHkgPSBTX2JvdGguTWFwLmlzX2VtcHR5XG4gICAgbGV0IG1pbl9lbHQgPSBTX2JvdGguTWFwLm1pbl9lbHRcbiAgICBsZXQgbWVtID0gU19ib3RoLk1hcC5tZW1cbiAgICBsZXQgZmluZF9vcHRpb24gYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5maW5kX29wdGlvbl93aXRoX2xvZ3MgYSBiIGMgZFxuICAgIGxldCBmaW5kX2RlZmF1bHQgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5maW5kX2RlZmF1bHRfd2l0aF9sb2dzIGEgYiBjIGRcbiAgICBsZXQgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIF9hIGIgYyBkID0gYiwgU19ib3RoLk1hcC5maW5kX29wdGlvbiBjIGRcbiAgICBsZXQgZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBfYSBiIGMgZCBlID0gYiwgU19ib3RoLk1hcC5maW5kX2RlZmF1bHQgYyBkIGVcbiAgICBsZXQgYWRkIGEgYiBjIGQgPSBsaWZ0IFNfYm90aC5NYXAuYWRkX3dpdGhfbG9ncyBhIGIgYyBkXG5cbiAgICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBjIGQgZSA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIG1hcCA9XG4gICAgICAgIGxpZnQgU19ib3RoLk1hcC5hZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgcGFyYW1ldGVyIGVycm9yIGMgZCBlXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJhdHRlbXB0IHRvIG92ZXJ3cml0ZSBhbiBhc3NvY2lhdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkF0dGVtcHQgdG8gb3ZlcndyaXRlIGFuIGFzc29jaWF0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3RcIilcbiAgICAgICAgICBtYXBcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIG1hcFxuXG4gICAgbGV0IGFkZF9vcl9vdmVyd3JpdGUgYSBiIGMgZCBlID1cbiAgICAgIGxldCBlcnJvciwgXywgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLmFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyBhIGIgYyBkIGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgcmVtb3ZlIGEgYiBjIGQgPSBsaWZ0IFNfYm90aC5NYXAucmVtb3ZlX3dpdGhfbG9ncyBhIGIgYyBkXG5cbiAgICBsZXQgcmVtb3ZlX29yX25vdCBhIGIgYyBkID1cbiAgICAgIGxldCBlcnJvciwgXywgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLnJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSBhIGIgYyBkXG4gICAgICBpblxuICAgICAgZXJyb3IsIG1hcFxuXG4gICAgbGV0IHVwZGF0ZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC51cGRhdGVfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IG1hcDIgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWFwMl93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWFwMnogYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWFwMnpfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGZvbGQyeiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5mb2xkMnpfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGZvbGQyIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmZvbGQyX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGl0ZXIyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBtYXBmIG1hcGcgPVxuICAgICAgZnN0XG4gICAgICAgIChTX2JvdGguTWFwLmZvbGQyX3dpdGhfbG9ncyBFeGNlcHRpb24ud3JhcCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgKGZ1biBhIGIgYyBkICgpIC0+IGYgYSBiIGMgZCwgKCkpXG4gICAgICAgICAgIChmdW4gYSBiIGMgZCAoKSAtPiBnIGEgYiBjIGQsICgpKVxuICAgICAgICAgICAoZnVuIGEgYiBjIGQgZSAoKSAtPiBoIGEgYiBjIGQgZSwgKCkpXG4gICAgICAgICAgIG1hcGYgbWFwZyAoKSlcblxuICAgIGxldCBmb2xkMl9zcGFyc2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBpdGVyMl9zcGFyc2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuaXRlcjJfc3BhcnNlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBkaWZmIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmRpZmZfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGRpZmZfcHJlZCBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5kaWZmX3ByZWRfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IG1lcmdlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLm1lcmdlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCB1bmlvbiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC51bmlvbl93aXRoX2xvZ3MgYSBiIGNcblxuICAgIGxldCBmb2xkX3Jlc3RyaWN0aW9uIGEgYiBjID1cbiAgICAgIGxpZnQgU19ib3RoLk1hcC5mb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9ucyBhIGIgYyA9XG4gICAgICBsaWZ0IFNfYm90aC5NYXAuZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGl0ZXIgPSBTX2JvdGguTWFwLml0ZXJcbiAgICBsZXQgZm9sZCA9IFNfYm90aC5NYXAuZm9sZFxuICAgIGxldCBtYXBpID0gU19ib3RoLk1hcC5tYXBpXG4gICAgbGV0IG1hcCA9IFNfYm90aC5NYXAubWFwXG4gICAgbGV0IGZvcl9hbGwgPSBTX2JvdGguTWFwLmZvcl9hbGxcbiAgICBsZXQgZmlsdGVyX29uZSA9IFNfYm90aC5NYXAuZmlsdGVyX29uZVxuICAgIGxldCBjb21wYXJlID0gU19ib3RoLk1hcC5jb21wYXJlXG4gICAgbGV0IGVxdWFsID0gU19ib3RoLk1hcC5lcXVhbFxuICAgIGxldCBiaW5kaW5ncyA9IFNfYm90aC5NYXAuYmluZGluZ3NcbiAgICBsZXQgdG9fanNvbiA9IFNfYm90aC5NYXAudG9fanNvblxuICAgIGxldCBvZl9qc29uID0gU19ib3RoLk1hcC5vZl9qc29uXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24gPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlIHNldF9hXG4gIHR5cGUgc2V0X2JcblxuICB2YWwgcHJval9tYXAgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoJ2IgLT4gJ2EgLT4gJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfbWFwIDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfbWFwX2kgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgZWx0X2EgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2JcblxuICB2YWwgcHJval9zZXQgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc2V0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBzZXRfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfc2V0IDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2JcblxuICB2YWwgcGFydGl0aW9uX3NldCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9hIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcGFydGl0aW9uX3NldCA6XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9hIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2ogKEEgOiBTX3dpdGhfbG9ncykgKEIgOiBTX3dpdGhfbG9ncykgOlxuICBQcm9qZWN0aW9uXG4gICAgd2l0aCB0eXBlIGVsdF9hID0gQS5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2IgPSBCLmVsdFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYSA9ICdhIEEuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2IgPSAnYSBCLk1hcC50XG4gICAgIGFuZCB0eXBlIHNldF9hID0gQS5TZXQudFxuICAgICBhbmQgdHlwZSBzZXRfYiA9IEIuU2V0LnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIFNBID0gQS5TZXRcbiAgbW9kdWxlIFNCID0gQi5TZXRcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBzZXRfYSA9IFNBLnRcbiAgdHlwZSBzZXRfYiA9IFNCLnRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcblxuICBsZXQgcHJval9tYXAgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iXG4gICAgICAgICAgICAobWVyZ2UgaWRlbnRpdHlfZWx0IGRhdGFfYSlcbiAgICAgICAgICAgIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgKG1lcmdlIG9sZCBkYXRhX2EpIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9tYXBfaSBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gbWVyZ2UgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBrZXlfYSBkYXRhX2EgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBtZXJnZSBwYXJhbWV0ZXIgZXJyb3Igb2xkIGtleV9hIGRhdGFfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9tYXAgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgbW9uYWRpY19wcm9qX21hcF9pIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdFxuICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3Igb2xkIF8gZGF0YV9hIC0+IG1lcmdlIHBhcmFtZXRlciBlcnJvciBvbGQgZGF0YV9hKVxuICAgICAgbWFwXG5cbiAgbGV0IHBhcnRpdGlvbl9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0ID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiAoU0Euc2luZ2xldG9uIGtleV9hKSBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbmV3c2V0ID0gU0EuYWRkIHBhcmFtZXRlciBlcnJvciBrZXlfYSBvbGQgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBuZXdzZXQgbWFwX2IpXG4gICAgICBzZXQgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wYXJ0aXRpb25fc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldCA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gZXJyb3IsIFNBLnNpbmdsZXRvbiBrZXlfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IFNBLmFkZF93aGVuX25vdF9pbiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Egb2xkIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2IpXG4gICAgICBzZXQgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgcHJval9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBzZXRfYikgLT5cbiAgICAgICAgU0IuYWRkX3doZW5fbm90X2luIHBhcmFtZXRlciBlcnJvciAoZiBrZXlfYSkgc2V0X2IpXG4gICAgICBzZXRfYSAoZXJyb3IsIFNCLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3Byb2pfc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgc2V0X2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBTQi5hZGRfd2hlbl9ub3RfaW4gcGFyYW1ldGVyIGVycm9yIGtleV9iIHNldF9iKVxuICAgICAgc2V0X2EgKGVycm9yLCBTQi5lbXB0eSlcbmVuZFxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uMiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSBlbHRfY1xuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSAnYSBtYXBfY1xuXG4gIHZhbCBwcm9qMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9jIG1hcF9iXG5cbiAgdmFsIHByb2oyX21vbmFkaWMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnbXZiZHVfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdtdmJkdV9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdtdmJkdV9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnbXZiZHVfaGFuZGxlciAqICdiIG1hcF9jIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2oyIChBIDogU193aXRoX2xvZ3MpIChCIDogU193aXRoX2xvZ3MpIChDIDogU193aXRoX2xvZ3MpIDpcbiAgUHJvamVjdGlvbjJcbiAgICB3aXRoIHR5cGUgZWx0X2EgPSBBLmVsdFxuICAgICBhbmQgdHlwZSBlbHRfYiA9IEIuZWx0XG4gICAgIGFuZCB0eXBlIGVsdF9jID0gQy5lbHRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2EgPSAnYSBBLk1hcC50XG4gICAgIGFuZCB0eXBlICdhIG1hcF9iID0gJ2EgQi5NYXAudFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYyA9ICdhIEMuTWFwLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIE1DID0gQy5NYXBcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBlbHRfYyA9IE1DLmVsdFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuICB0eXBlICdhIG1hcF9jID0gJ2EgTUMudFxuXG4gIGxldCBwcm9qMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgZXJyb3IsIHN1Ym1hcCA9XG4gICAgICAgICAgTUIuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3IgTUMuZW1wdHkga2V5X2IgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBmaW5kX2RlZmF1bHQgPVxuICAgICAgICAgIE1DLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBrZXlfYyBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBzdWJtYXAgPVxuICAgICAgICAgIE1DLmFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5X2NcbiAgICAgICAgICAgIChtZXJnZSBwYXJhbWV0ZXIgZXJyb3IgZmluZF9kZWZhdWx0IGRhdGFfYSlcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBzdWJtYXAgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgcHJvajJfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBtdmJkdV9oYW5kbGVyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgaGFuZGxlciwgc3VibWFwID1cbiAgICAgICAgICBNQi5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBoYW5kbGVyIE1DLmVtcHR5IGtleV9iIG1hcF9iXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBmaW5kX2RlZmF1bHQgPVxuICAgICAgICAgIE1DLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGhhbmRsZXIgaWRlbnRpdHlfZWx0IGtleV9jXG4gICAgICAgICAgICBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIG12YmR1X2hhbmRsZXIsIGRhdGEnID1cbiAgICAgICAgICBtZXJnZSBwYXJhbWV0ZXIgaGFuZGxlciBtdmJkdV9oYW5kbGVyIGZpbmRfZGVmYXVsdCBkYXRhX2FcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIHN1Ym1hcCA9IE1DLmFkZCBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYyBkYXRhJyBzdWJtYXAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGFkZCA9XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYiBzdWJtYXAgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgYWRkKVxuICAgICAgbWFwXG4gICAgICAoaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgTUIuZW1wdHkpXG5lbmRcbiIsIigqKlxuICAqIGZpZm8ubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCAmIEx5IEtpbSBRdXllbiwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAyMDE1LCB0aGUgMjd0aCBvZiBKdWx5XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBdWcgMDYgMjAxNj5cbiAgKlxuICAqIFdvcmsgbGlzdCAtIEZJRk9cbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5vcGVuIFNldE1hcFxuXG5sZXQgbG9jYWxfdHJhY2UgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBXb3JrX2xpc3QgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcblxuICB2YWwgcHVzaCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIHBvcCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoZWx0IG9wdGlvbiAqIHQpXG5cbiAgdmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBlbHQgLT4gJ2EpIC0+ICdhIC0+IHQgLT4gJ2FcbiAgdmFsIHByaW50X3dsIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgV2xNYWtlIChPcmQgOiBPcmRlcmVkVHlwZSB3aXRoIHR5cGUgdCA9IGludCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdTZXRNYXAgPSBNYXBfd3JhcHBlci5NYWtlIChTZXRNYXAuTWFrZSAoT3JkKSlcbiAgbW9kdWxlIFdTZXQgPSBXU2V0TWFwLlNldFxuXG4gIHR5cGUgZWx0ID0gT3JkLnRcbiAgdHlwZSB0ID0gZWx0IGxpc3QgKiBlbHQgbGlzdCAqIFdTZXQudFxuXG4gIGxldCBlbXB0eSA9IFtdLCBbXSwgV1NldC5lbXB0eVxuXG4gIGxldCBpc19lbXB0eSB4ID1cbiAgICBsZXQgXywgXywgcG9vbCA9IHggaW5cbiAgICBXU2V0LmlzX2VtcHR5IHBvb2xcblxuICBsZXQgcHVzaCBwYXJhbWV0ZXIgZXJyb3IgZSB4ID1cbiAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgaWYgV1NldC5tZW0gZSBwb29sIHRoZW5cbiAgICAgIGVycm9yLCB4XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3InLCBhZGRfZWx0ID0gV1NldC5hZGQgcGFyYW1ldGVyIGVycm9yIGUgcG9vbCBpblxuICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgRXhjZXB0aW9uLmNoZWNrX3BvaW50IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgX19QT1NfXyBFeGl0XG4gICAgICBpblxuICAgICAgZXJyb3IsIChlIDo6IGluX2xpc3QsIG91dF9saXN0LCBhZGRfZWx0KVxuICAgIClcblxuICBsZXQgZm9sZF9sZWZ0IGYgYWNjIHggPVxuICAgIGxldCBpbl9saXN0LCBvdXRfbGlzdCwgXyA9IHggaW5cbiAgICBMaXN0LmZvbGRfbGVmdCBmIChMaXN0LmZvbGRfbGVmdCBmIGFjYyBvdXRfbGlzdCkgKExpc3QucmV2IGluX2xpc3QpXG5cbiAgbGV0IHByaW50X3dsIHBhcmFtZXRlcnMgd2wgPVxuICAgICgqbGV0IF8gPSBmb2xkX2xlZnRcbiAgICAgIChmdW4gICgpIGEgLT4gUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXJzKSBcIiVpIFwiIGEpXG4gICAgICAoKSB3bFxuICAgICAgaW5cbiAgICAgICgqcHJpbnRfbmV3bGluZSgpKilcbiAgICAgIGxldCBfID0gcHJpbnRfbmV3bGluZSAoKSBpbiopXG4gICAgbGV0IF8sIF8sIHNldCA9IHdsIGluXG4gICAgV1NldC5pdGVyXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlaSBcIiBpKVxuICAgICAgc2V0O1xuICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiXFxuXCJcblxuICBsZXQgcmVjIHBvcCBwYXJhbWV0ZXIgZXJyb3IgeCA9XG4gICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBwb29sID0geCBpblxuICAgIGlmIGlzX2VtcHR5IHggdGhlblxuICAgICAgZXJyb3IsIChOb25lLCB4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggb3V0X2xpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBwb3AgcGFyYW1ldGVyIGVycm9yIChbXSwgTGlzdC5yZXYgaW5fbGlzdCwgcG9vbClcbiAgICAgIHwgaCA6OiB0bCAtPlxuICAgICAgICBsZXQgZXJyb3IsIHJlbW92ZV9lbHQgPSBXU2V0LnJlbW92ZSBwYXJhbWV0ZXIgZXJyb3IgaCBwb29sIGluXG4gICAgICAgIGVycm9yLCAoU29tZSBoLCAoaW5fbGlzdCwgdGwsIHJlbW92ZV9lbHQpKVxuICAgIClcblxuICAoKmZvciBkZWJ1ZyopXG4gICgqIGxldCByZWMgcG9wIHBhcmFtZXRlciBlcnJvciB4ID1cbiAgICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBwb29sID0geCBpblxuICAgICBpZiBpc19lbXB0eSB4XG4gICAgIHRoZW5cbiAgICAgZXJyb3IsIChOb25lLCB4KVxuICAgICBlbHNlXG4gICAgIGJlZ2luXG4gICAgIG1hdGNoIG91dF9saXN0IHdpdGhcbiAgICAgfCBbXSAtPiBwb3AgcGFyYW1ldGVyIGVycm9yIChbXSwgKExpc3QucmV2IGluX2xpc3QpLCBwb29sKVxuICAgICB8IGggOjogdGwgLT5cbiAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXIpXG4gICAgIFwiQkVGT1JFIFJFTU9WRSAlaSBcIiBoIGluXG4gICAgIGxldCBfID0gIFdTZXQuaXRlciAoZnVuIGkgLT5cbiAgICAgUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXIpIFwiJWkgXCIgaSkgcG9vbCBpblxuICAgICBsZXQgZXJyb3IscmVtb3ZlX2VsdCA9IFdTZXQucmVtb3ZlIHBhcmFtZXRlciBlcnJvciBoIHBvb2wgaW5cbiAgICAgbGV0IF8gPSAgV1NldC5pdGVyIChmdW4gaSAtPlxuICAgICBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcikgXCIlaSBcIiBpKSByZW1vdmVfZWx0XG4gICAgIGluXG4gICAgIGVycm9yLCAoKFNvbWUgaCksIChpbl9saXN0LCB0bCwgcmVtb3ZlX2VsdCkpXG4gICAgIGVuZCopXG5cbiAgKCpmb3IgZGVidWcqKVxuICAoKmxldCBwdXNoIHAgZSBmIHggPVxuICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJCRUZPUkUgUFVVU0ggJWlcXG4gXCIgZiBpblxuICAgIGxldCBfID0gcHJpbnRfd2wgcCB4IGluXG4gICAgbGV0IGVycm9yLHdsID0gcHVzaCBwIGUgZiB4IGluXG4gICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHApIFwiT1VUUFVUXFxuXCIgaW5cbiAgICBsZXQgXyA9IHByaW50X3dsIHAgd2wgaW5cbiAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJcXG5cIiBpblxuICAgIGVycm9yLHdsICopXG5lbmRcblxubW9kdWxlIEludFdMID0gTW9kcy5JbnRNYXBcbiIsIigqKlxuICAgKiBpbnRfc3RvcmFnZS5tbFxuICAgKlxuICAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTAtMDctMjcgZmVyZXQ+XG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXByIDEzIDIwMTg+XG4gICAqXG4gICAqIG9wZW5rYXBwYVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICpcbiAgICpcbiAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCB3aXRoIHN0b3JhZ2UgZnVuY3Rpb25zXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSBJbnN0aXR1dCBOYXRpb25hbFxuICAgKiBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0IGVuIEF1dG9tYXRpcXVlLlxuICAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2JcblxudHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICAnYyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnZFxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICAnYyAtPlxuICAnZCAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnZVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLCAnZykgc2V4dGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gICdkIC0+XG4gICdlIC0+XG4gICdmIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdnXG5cbnR5cGUgJ2EgdW5hcnlfbm9fb3V0cHV0ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbnR5cGUgKCdhLCAnYikgYmluYXJ5X25vX291dHB1dCA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG5tb2R1bGUgdHlwZSBTdG9yYWdlID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGtleVxuICB0eXBlIGRpbWVuc2lvblxuXG4gIHZhbCBjcmVhdGUgOiAoZGltZW5zaW9uLCAnYSB0KSB1bmFyeVxuICB2YWwgY3JlYXRlX2JpZ2dlc3Rfa2V5IDogKGtleSwgJ2EgdCkgdW5hcnlcbiAgdmFsIGV4cGFuZF9hbmRfY29weSA6ICgnYSB0LCBkaW1lbnNpb24sICdhIHQpIGJpbmFyeVxuICB2YWwgaW5pdCA6IChkaW1lbnNpb24sIChrZXksICdhKSB1bmFyeSwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBzZXQgOiAoa2V5LCAnYSwgJ2EgdCwgJ2EgdCkgdGVybmFyeVxuICB2YWwgZnJlZSA6IChrZXksICdhIHQsICdhIHQpIGJpbmFyeVxuICB2YWwgZ2V0IDogKGtleSwgJ2EgdCwgJ2Egb3B0aW9uKSBiaW5hcnlcbiAgdmFsIHVuc2FmZV9nZXQgOiAoa2V5LCAnYSB0LCAnYSBvcHRpb24pIGJpbmFyeVxuICB2YWwgZGltZW5zaW9uIDogKCdhIHQsIGRpbWVuc2lvbikgdW5hcnlcbiAgdmFsIHByaW50IDogKCdhIHVuYXJ5X25vX291dHB1dCwgJ2EgdCkgYmluYXJ5X25vX291dHB1dFxuICB2YWwga2V5X2xpc3QgOiAoJ2EgdCwga2V5IGxpc3QpIHVuYXJ5XG4gIHZhbCBpdGVyIDogKChrZXksICdhKSBiaW5hcnlfbm9fb3V0cHV0LCAnYSB0KSBiaW5hcnlfbm9fb3V0cHV0XG4gIHZhbCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIDogKChrZXksICdhLCAnYiwgJ2IpIHRlcm5hcnksICdhIHQsICdiLCAnYikgdGVybmFyeVxuICB2YWwgZm9sZCA6ICgoa2V5LCAnYSwgJ2IsICdiKSB0ZXJuYXJ5LCAnYSB0LCAnYiwgJ2IpIHRlcm5hcnlcblxuICB2YWwgZm9sZDIgOlxuICAgICggKGtleSwgJ2EsICdjLCAnYykgdGVybmFyeSxcbiAgICAgIChrZXksICdiLCAnYywgJ2MpIHRlcm5hcnksXG4gICAgICAoa2V5LCAnYSwgJ2IsICdjLCAnYykgcXVhdGVybmFyeSxcbiAgICAgICdhIHQsXG4gICAgICAnYiB0LFxuICAgICAgJ2MsXG4gICAgICAnYyApXG4gICAgc2V4dGVybmFyeVxuXG4gIHZhbCBmb2xkMl9jb21tb24gOlxuICAgICgoa2V5LCAnYSwgJ2IsICdjLCAnYykgcXVhdGVybmFyeSwgJ2EgdCwgJ2IgdCwgJ2MsICdjKSBxdWF0ZXJuYXJ5XG5cbiAgdmFsIGZvcl9hbGwgOiAoKGtleSwgJ2EsIGJvb2wpIGJpbmFyeSwgJ2EgdCwgYm9vbCkgYmluYXJ5XG4gIHZhbCBmcmVlX2FsbCA6ICgnYSB0LCAnYSB0KSB1bmFyeVxuZW5kXG5cbmxldCBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIG1oIHBvcyBleG4gdmFsdWUgPVxuICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIG1oIHBvcyBleG4gdmFsdWVcblxubW9kdWxlIEludF9zdG9yYWdlX2ltcGVyYXRpZiA6XG4gIFN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IGludCBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPSBzdHJ1Y3RcbiAgdHlwZSBrZXkgPSBpbnRcbiAgdHlwZSBkaW1lbnNpb24gPSBpbnRcbiAgdHlwZSAnYSB0ID0geyBhcnJheTogJ2Egb3B0aW9uIGFycmF5OyBzaXplOiBpbnQgfVxuXG4gIGxldCBkaW1lbnNpb24gXyBlcnJvciBhID0gZXJyb3IsIGEuc2l6ZVxuXG4gIGxldCBrZXlfbGlzdCBfcGFyZW1ldGVycyBlcnJvciB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHNvbCA9XG4gICAgICBpZiBrIDwgMCB0aGVuXG4gICAgICAgIGVycm9yLCBzb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrIC0gMSkgc29sXG4gICAgICAgIHwgU29tZSBfIC0+IGF1eCAoayAtIDEpIChrIDo6IHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBzaXplIFtdXG5cbiAgbGV0IHJlYyBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplID1cbiAgICBpZiBzaXplIDwgMCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciAwIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIHsgYXJyYXkgPSBBcnJheS5tYWtlIChzaXplICsgMSkgTm9uZTsgc2l6ZSB9XG5cbiAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIHggPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciB4XG5cbiAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IHNpemUgPVxuICAgIGxldCBlcnJvciwgZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICBpZiBkaW1lbnNpb24gPCBzaXplIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheScgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplIGluXG4gICAgICBsZXQgXyA9IEFycmF5LmJsaXQgYXJyYXkuYXJyYXkgMCBhcnJheScuYXJyYXkgMCBkaW1lbnNpb24gaW5cbiAgICAgIGVycm9yLCBhcnJheSdcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCB7IGFycmF5ID0gQXJyYXkuc3ViIGFycmF5LmFycmF5IDAgc2l6ZTsgc2l6ZSB9XG5cbiAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgaWYga2V5ID4gYXJyYXkuc2l6ZSB8fCBrZXkgPCAwIHRoZW4gKFxuICAgICAgbGV0ICgpID0gUHJpbnRmLmZwcmludGYgc3Rkb3V0IFwiJWkgJWlcIiBrZXkgYXJyYXkuc2l6ZSBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IF8gPSBhcnJheS5hcnJheS4oa2V5KSA8LSBTb21lIHZhbHVlIGluXG4gICAgICBlcnJvciwgYXJyYXlcbiAgICApXG5cbiAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBzaXplIGYgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplIGluXG4gICAgICBsZXQgcmVjIGF1eCBrIGVycm9yIGFycmF5ID1cbiAgICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICAgIGVycm9yLCBhcnJheVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHZhbHVlID0gZiBwYXJhbWV0ZXJzIGVycm9yIGsgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFycmF5ID0gc2V0IHBhcmFtZXRlcnMgZXJyb3IgayB2YWx1ZSBhcnJheSBpblxuICAgICAgICAgIGF1eCAoayArIDEpIGVycm9yIGFycmF5XG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggMCBlcnJvciBhcnJheVxuICAgIClcblxuICBsZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgXCIxMzA6JWlcXG5cIiBrZXlcbiAgICAgIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG4gICAgKSBlbHNlIChcbiAgICAgIG1hdGNoIGFycmF5LmFycmF5LihrZXkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCIxMzM6JWlcXG5cIiBrZXlcbiAgICAgICAgaW5cbiAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZVxuICAgICAgfCBhIC0+IGVycm9yLCBhXG4gICAgKVxuXG4gIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lIGluXG4gICAgICBlcnJvciwgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGtleSkgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmUgaW5cbiAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0ICgpID0gYXJyYXkuYXJyYXkuKGtleSkgPC0gTm9uZSBpblxuICAgICAgICBlcnJvciwgYXJyYXlcbiAgICApXG5cbiAgbGV0IHVuc2FmZV9nZXQgX3BhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlblxuICAgICAgZXJyb3IsIE5vbmVcbiAgICBlbHNlXG4gICAgICBlcnJvciwgYXJyYXkuYXJyYXkuKGtleSlcblxuICBsZXQgcHJpbnQgcGFyYW1ldGVycyBlcnJvciBwcmludF9lbHQgYXJyYXkgPVxuICAgIGxldCByZWMgYXV4IGkgZXJyb3IgPVxuICAgICAgaWYgaSA+IGFycmF5LnNpemUgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3JcbiAgICAgICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgXCIlcyVkOlwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJzID1cbiAgICAgICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAoc3RyaW5nX29mX2ludCBpIF4gXCI6XCIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yID0gcHJpbnRfZWx0IHBhcmFtZXRlcnMgZXJyb3IgZWx0IGluXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICBpblxuICAgICAgICBhdXggKGkgKyAxKSBlcnJvclxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgaXRlciBwYXJhbWV0ZXIgZXJyb3IgZiB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGVycm9yID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgZXJyb3JcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgZXJyb3JcbiAgICAgICAgfCBTb21lIHggLT4gYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIGVycm9yXG5cbiAgbGV0IGZvbGQgcGFyYW1ldGVyIGVycm9yIGYgdCBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgcmVtYW5lbnRcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeCBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvcl9hbGwgcGFyYW1ldGVyIGVycm9yIGYgdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBlcnJvciA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIGVycm9yLCB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIGVycm9yXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBib29sID0gZiBwYXJhbWV0ZXIgZXJyb3IgayB4IGluXG4gICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICBhdXggKGsgKyAxKSBlcnJvclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBmYWxzZVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBwYXJhbWV0ZXIgZXJyb3IgZiB0IGluaXQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICB0cnkgU29tZSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4IHNvbCkgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiByZW1hbmVudFxuICAgICAgICAgIHwgU29tZSBhIC0+IGF1eCAoayArIDEpIGEpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvbGQyX2NvbW1vbiBwYXJhbWV0ZXIgZXJyb3IgZiB0MSB0MiBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IG1pbiB0MS5zaXplIHQyLnNpemUgaW5cbiAgICBsZXQgYXJyYXkxID0gdDEuYXJyYXkgaW5cbiAgICBsZXQgYXJyYXkyID0gdDIuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheTEuKGspLCBhcnJheTIuKGspIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeDEgeDIgc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgKGVycm9yLCBpbml0KVxuXG4gIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggdDEgdDIgaW5pdCA9XG4gICAgbGV0IHNpemUgPSBtaW4gdDEuc2l6ZSB0Mi5zaXplIGluXG4gICAgbGV0IGFycmF5MSA9IHQxLmFycmF5IGluXG4gICAgbGV0IGFycmF5MiA9IHQyLmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICBtYXRjaCBhcnJheTEuKGspLCBhcnJheTIuKGspIHdpdGhcbiAgICAgICAgfCBTb21lIHgxLCBOb25lIC0+IGF1eCAoayArIDEpIChmIHBhcmFtZXRlciBlcnJvciBrIHgxIHNvbClcbiAgICAgICAgfCBOb25lLCBTb21lIHgyIC0+IGF1eCAoayArIDEpIChnIHBhcmFtZXRlciBlcnJvciBrIHgyIHNvbClcbiAgICAgICAgfCBTb21lIHgxLCBTb21lIHgyIC0+IGF1eCAoayArIDEpIChoIHBhcmFtZXRlciBlcnJvciBrIHgxIHgyIHNvbClcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IGF1eCAoayArIDEpIChlcnJvciwgc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgKGVycm9yLCBpbml0KVxuXG4gIGxldCBmcmVlX2FsbCBwYXJhbWV0ZXIgZXJyb3IgdCA9XG4gICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGEgXyB0IC0+IGZyZWUgcGFyYW1ldGVyIGVycm9yIGEgdClcbiAgICAgIHQgdFxuZW5kXG5cbm1vZHVsZSBOZWFybHlfaW5maW5pdGVfYXJyYXlzID1cbmZ1bmN0b3JcbiAgKEJhc2ljIDogU3RvcmFnZSB3aXRoIHR5cGUgZGltZW5zaW9uID0gaW50IGFuZCB0eXBlIGtleSA9IGludClcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gQmFzaWMua2V5XG4gICAgICB0eXBlICdhIHQgPSAnYSBCYXNpYy50XG5cbiAgICAgIGxldCBjcmVhdGUgPSBCYXNpYy5jcmVhdGVcbiAgICAgIGxldCBjcmVhdGVfYmlnZ2VzdF9rZXkgPSBCYXNpYy5jcmVhdGVfYmlnZ2VzdF9rZXlcbiAgICAgIGxldCBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIGxldCBrZXlfbGlzdCA9IEJhc2ljLmtleV9saXN0XG5cbiAgICAgIGxldCBleHBhbmQgcGFyYW1ldGVycyBlcnJvciBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkX2RpbWVuc2lvbiA9IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGluXG4gICAgICAgIGlmIG9sZF9kaW1lbnNpb24gPSBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJhc2ljLmV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5XG4gICAgICAgICAgICAobWF4IDEgKG1pbiBTeXMubWF4X2FycmF5X2xlbmd0aCAoMiAqIG9sZF9kaW1lbnNpb24pKSlcblxuICAgICAgbGV0IGdldCA9IEJhc2ljLmdldFxuICAgICAgbGV0IHVuc2FmZV9nZXQgPSBCYXNpYy51bnNhZmVfZ2V0XG4gICAgICBsZXQgZXhwYW5kX2FuZF9jb3B5ID0gQmFzaWMuZXhwYW5kX2FuZF9jb3B5XG4gICAgICBsZXQgaW5pdCA9IEJhc2ljLmluaXRcbiAgICAgIGxldCBmcmVlID0gQmFzaWMuZnJlZVxuXG4gICAgICBsZXQgcmVjIHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgaWYga2V5ID49IGRpbWVuc2lvbiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGFycmF5JyA9IGV4cGFuZCBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGluXG4gICAgICAgICAgaWYgYXJyYXkgPT0gYXJyYXknIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5J1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBCYXNpYy5zZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXlcblxuICAgICAgbGV0IHByaW50ID0gQmFzaWMucHJpbnRcblxuICAgICAgKCogbGV0IHByaW50X3Zhcl9mID0gQmFzaWMucHJpbnRfdmFyX2ZcbiAgICAgICAgIGxldCBwcmludF9zaXRlX2YgPSBCYXNpYy5wcmludF9zaXRlX2YqKVxuICAgICAgbGV0IGl0ZXIgPSBCYXNpYy5pdGVyXG4gICAgICBsZXQgZm9sZCA9IEJhc2ljLmZvbGRcbiAgICAgIGxldCBmb2xkMiA9IEJhc2ljLmZvbGQyXG4gICAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiA9IEJhc2ljLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgIGxldCBmb2xkMl9jb21tb24gPSBCYXNpYy5mb2xkMl9jb21tb25cbiAgICAgIGxldCBmb3JfYWxsID0gQmFzaWMuZm9yX2FsbFxuICAgICAgbGV0IGZyZWVfYWxsID0gQmFzaWMuZnJlZV9hbGxcbiAgICBlbmQgOlxuICAgICAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludClcblxubW9kdWxlIEV4dGVuZCA9XG5mdW5jdG9yXG4gIChFeHRlbnNpb24gOiBTdG9yYWdlKVxuICAoVW5kZXJseWluZyA6IFN0b3JhZ2UpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gRXh0ZW5zaW9uLmRpbWVuc2lvbiAqIFVuZGVybHlpbmcuZGltZW5zaW9uXG4gICAgICB0eXBlIGtleSA9IEV4dGVuc2lvbi5rZXkgKiBVbmRlcmx5aW5nLmtleVxuICAgICAgdHlwZSAnYSB0ID0geyBtYXRyaXg6ICdhIFVuZGVybHlpbmcudCBFeHRlbnNpb24udDsgZGltZW5zaW9uOiBkaW1lbnNpb24gfVxuXG4gICAgICBsZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgZGltZW5zaW9uID1cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXggPSBFeHRlbnNpb24uY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBkaW1lbnNpb24pIGluXG4gICAgICAgIGVycm9yLCB7IG1hdHJpeDsgZGltZW5zaW9uIH1cblxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIGtleSA9XG4gICAgICAgIGxldCBlcnJvciwgbWF0cml4ID1cbiAgICAgICAgICBFeHRlbnNpb24uY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBrZXkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbWF0cml4JyA9XG4gICAgICAgICAgVW5kZXJseWluZy5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciAoc25kIGtleSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBFeHRlbnNpb24uZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgbWF0cml4IGluXG4gICAgICAgIGxldCBlcnJvciwgZGltZW5zaW9uJyA9IFVuZGVybHlpbmcuZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgbWF0cml4JyBpblxuICAgICAgICBlcnJvciwgeyBtYXRyaXg7IGRpbWVuc2lvbiA9IGRpbWVuc2lvbiwgZGltZW5zaW9uJyB9XG5cbiAgICAgIGxldCBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIHQgPVxuICAgICAgICBsZXQgZXJyb3IsIGV4dF9saXN0ID0gRXh0ZW5zaW9uLmtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdC5tYXRyaXggaW5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgbGlzdCkga2V5IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIHQyID0gRXh0ZW5zaW9uLmdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB0Lm1hdHJpeCBpblxuICAgICAgICAgICAgbWF0Y2ggdDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGxpc3RcbiAgICAgICAgICAgIHwgU29tZSB0MiAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGwyID0gVW5kZXJseWluZy5rZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIHQyIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCBrZXkyIC0+IChrZXksIGtleTIpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICBsaXN0IChMaXN0LnJldiBsMikgKSlcbiAgICAgICAgICAoZXJyb3IsIFtdKSAoTGlzdC5yZXYgZXh0X2xpc3QpXG5cbiAgICAgIGxldCBleHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheSBfZGltZW5zaW9uID1cbiAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcblxuICAgICAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBkaW0gZiA9XG4gICAgICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgICAgIEV4dGVuc2lvbi5pbml0IHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBkaW0pIChmdW4gcCBlIGkgLT5cbiAgICAgICAgICAgICAgVW5kZXJseWluZy5pbml0IHAgZSAoc25kIGRpbSkgKGZ1biBwJyBlJyBqIC0+IGYgcCcgZScgKGksIGopKSlcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgbWF0cml4ID0gYXJyYXk7IGRpbWVuc2lvbiA9IGRpbSB9XG5cbiAgICAgIGxldCBzZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgdmFsdWUgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZF91bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb2xkX3VuZGVybHlpbmcgPVxuICAgICAgICAgIG1hdGNoIG9sZF91bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgICB8IFNvbWUgb2xkX3VuZGVybHlpbmcgLT4gZXJyb3IsIG9sZF91bmRlcmx5aW5nXG4gICAgICAgICAgfCBOb25lIC0+IFVuZGVybHlpbmcuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgKHNuZCBhcnJheS5kaW1lbnNpb24pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X3VuZGVybHlpbmcgPVxuICAgICAgICAgIFVuZGVybHlpbmcuc2V0IHBhcmFtZXRlcnMgZXJyb3IgaiB2YWx1ZSBvbGRfdW5kZXJseWluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG5ld19tYXRyaXggPVxuICAgICAgICAgIEV4dGVuc2lvbi5zZXQgcGFyYW1ldGVycyBlcnJvciBpIG5ld191bmRlcmx5aW5nIGFycmF5Lm1hdHJpeFxuICAgICAgICBpblxuICAgICAgICAoKiBsZXQgb3JkZXJlZCA9IG9yZGVyZWQgJiYgRXh0ZW5zaW9uLm9yZGVyZWQgbmV3X21hdHJpeCBpbiopXG4gICAgICAgIGVycm9yLCB7IGFycmF5IHdpdGggbWF0cml4ID0gbmV3X21hdHJpeCB9XG5cbiAgICAgIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIHVuZGVybHlpbmcgPSBFeHRlbnNpb24uZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXggaW5cbiAgICAgICAgbWF0Y2ggdW5kZXJseWluZyB3aXRoXG4gICAgICAgIHwgU29tZSB1bmRlcmx5aW5nIC0+IFVuZGVybHlpbmcuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaiB1bmRlcmx5aW5nXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG5cbiAgICAgIGxldCB1bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgKGksIGopIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCB1bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHVuZGVybHlpbmcgd2l0aFxuICAgICAgICB8IFNvbWUgdW5kZXJseWluZyAtPiBVbmRlcmx5aW5nLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBqIHVuZGVybHlpbmdcbiAgICAgICAgfCBfIC0+IGVycm9yLCBOb25lXG5cbiAgICAgIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3IgKGksIGopIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfdW5kZXJseWluZyA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeFxuICAgICAgICBpblxuXG4gICAgICAgIG1hdGNoIG9sZF91bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZSBpblxuICAgICAgICAgIGVycm9yLCBhcnJheVxuICAgICAgICB8IFNvbWUgb2xkX3VuZGVybHlpbmcgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG5ld191bmRlcmx5aW5nID1cbiAgICAgICAgICAgIFVuZGVybHlpbmcuZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGogb2xkX3VuZGVybHlpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbmV3X21hdHJpeCA9XG4gICAgICAgICAgICBFeHRlbnNpb24uc2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBuZXdfdW5kZXJseWluZyBhcnJheS5tYXRyaXhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB7IGFycmF5IHdpdGggbWF0cml4ID0gbmV3X21hdHJpeCB9XG5cbiAgICAgIGxldCBkaW1lbnNpb24gXyBlcnJvciBhID0gZXJyb3IsIGEuZGltZW5zaW9uXG5cbiAgICAgIGxldCBwcmludCBwYXJhbWV0ZXJzIGVycm9yIHByaW50X29mIGEgPVxuICAgICAgICBFeHRlbnNpb24ucHJpbnQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcCBlcnJvciAtPiBVbmRlcmx5aW5nLnByaW50IHAgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgKCogbGV0IHByaW50X3Zhcl9mIGVycm9yIHByaW50X29mIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBFeHRlbnNpb24ucHJpbnQgZXJyb3JcbiAgICAgICAgICAgKGZ1biBlcnJvciAtPiBVbmRlcmx5aW5nLnByaW50IGVycm9yIHByaW50X29mKVxuICAgICAgICAgICBwYXJhbWV0ZXJzXG4gICAgICAgICAgIGEubWF0cml4XG5cbiAgICAgICAgIGxldCBwcmludF9zaXRlX2YgZXJyb3IgcHJpbnRfb2YgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEV4dGVuc2lvbi5wcmludCBlcnJvclxuICAgICAgICAgICAoZnVuIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgIHBhcmFtZXRlcnNcbiAgICAgICAgICAgYS5tYXRyaXgqKVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXIgZXJyb3IgZiBhID1cbiAgICAgICAgRXh0ZW5zaW9uLml0ZXIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIC0+XG4gICAgICAgICAgICBVbmRlcmx5aW5nLml0ZXIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIC0+IGYgcGFyYW1ldGVyIGVycm9yIChrLCBrJykgYScpXG4gICAgICAgICAgICAgIGEpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgbGV0IGZvcl9hbGwgcGFyYW1ldGVyIGVycm9yIGYgYSA9XG4gICAgICAgIEV4dGVuc2lvbi5mb3JfYWxsIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSAtPlxuICAgICAgICAgICAgVW5kZXJseWluZy5mb3JfYWxsIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrJyBhJyAtPiBmIHBhcmFtZXRlciBlcnJvciAoaywgaycpIGEnKVxuICAgICAgICAgICAgICBhKVxuICAgICAgICAgIGEubWF0cml4XG5cbiAgICAgIGxldCBmb2xkX2dlbiBmb2xkMSBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgPVxuICAgICAgICBmb2xkMSBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYiAtPlxuICAgICAgICAgICAgZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgKGssIGsnKSBhJyBiKVxuICAgICAgICAgICAgICBhIGIpXG4gICAgICAgICAgYS5tYXRyaXggYlxuXG4gICAgICBsZXQgZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgPVxuICAgICAgICBmb2xkX2dlbiBFeHRlbnNpb24uZm9sZCBVbmRlcmx5aW5nLmZvbGQgcGFyYW1ldGVyIGVycm9yIGYgYSBiXG5cbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGRfZ2VuIEV4dGVuc2lvbi5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAgICAgVW5kZXJseWluZy5mb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYlxuXG4gICAgICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiBjID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGIgaW5cbiAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGNcbiAgICAgICAgICAgIHwgU29tZSBiIC0+IGYgcGFyYW1ldGVyIGVycm9yIGsgYSBiIGMpXG4gICAgICAgICAgYSBjXG5cbiAgICAgIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggYSBiIGMgPVxuICAgICAgICBsZXQgZXJyb3IsIGMgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGNcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gaCBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICAgIGEgY1xuICAgICAgICBpblxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYiBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBnIHBhcmFtZXRlciBlcnJvciBrIGIgY1xuICAgICAgICAgICAgfCBTb21lIF8gLT4gZXJyb3IsIGMpXG4gICAgICAgICAgYiBjXG5cbiAgICAgIGxldCBmcmVlX2FsbCBwYXJhbWV0ZXIgZXJyb3IgdCA9XG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgICAgIHQgdFxuICAgIGVuZCA6XG4gICAgICBTdG9yYWdlXG4gICAgICAgIHdpdGggdHlwZSBrZXkgPSBFeHRlbnNpb24ua2V5ICogVW5kZXJseWluZy5rZXlcbiAgICAgICAgIGFuZCB0eXBlIGRpbWVuc2lvbiA9IEV4dGVuc2lvbi5kaW1lbnNpb24gKiBVbmRlcmx5aW5nLmRpbWVuc2lvbilcblxubW9kdWxlIFF1aWNrX2tleV9saXN0ID1cbmZ1bmN0b3JcbiAgKEJhc2ljIDogU3RvcmFnZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gQmFzaWMua2V5XG4gICAgICB0eXBlICdhIHQgPSB7IGJhc2ljOiAnYSBCYXNpYy50OyBrZXlzOiBrZXkgbGlzdCB9XG5cbiAgICAgIGxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBpID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIGkgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBjcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciBrZXkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzID0gW10gfVxuXG4gICAgICBsZXQga2V5X2xpc3QgX3BhcmFtZXRlcnMgZXJyb3IgdCA9IGVycm9yLCB0LmtleXNcblxuICAgICAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGogPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID1cbiAgICAgICAgICBCYXNpYy5leHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheS5iYXNpYyBqXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzID0gYXJyYXkua2V5cyB9XG5cbiAgICAgIGxldCBpbml0IHBhcmFtZXRlcnMgZXJyb3IgbiBmID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmluaXQgcGFyYW1ldGVycyBlcnJvciBuIGYgaW5cbiAgICAgICAgbGV0IGVycm9yLCBrZXlzID1cbiAgICAgICAgICBCYXNpYy5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAgIChmdW4gXyBlIGsgXyBsaXN0IC0+IGUsIGsgOjogbGlzdClcbiAgICAgICAgICAgIGJhc2ljIFtdXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzIH1cblxuICAgICAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkID0gQmFzaWMudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpYyBpblxuICAgICAgICBsZXQgbmV3X2FycmF5ID1cbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IGFycmF5XG4gICAgICAgICAgfCBOb25lIC0+IHsgYXJyYXkgd2l0aCBrZXlzID0ga2V5IDo6IGFycmF5LmtleXMgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG5ld19iYXNpYyA9XG4gICAgICAgICAgQmFzaWMuc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIG5ld19hcnJheS5iYXNpY1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBuZXdfYXJyYXkgd2l0aCBiYXNpYyA9IG5ld19iYXNpYyB9XG5cbiAgICAgIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWMgaW5cbiAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBiYXNpYyB9XG5cbiAgICAgIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBCYXNpYy5nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWNcblxuICAgICAgbGV0IHVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBCYXNpYy51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljXG5cbiAgICAgIGxldCBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhID1cbiAgICAgICAgQmFzaWMuZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYS5iYXNpY1xuXG4gICAgICBsZXQgcHJpbnQgZXJyb3IgZiBwYXJhbWV0ZXJzIGEgPSBCYXNpYy5wcmludCBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpY1xuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgQmFzaWMucHJpbnRfdmFyX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEuYmFzaWNcblxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiBlcnJvciBmIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBCYXNpYy5wcmludF9zaXRlX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEuYmFzaWMqKVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXJzIGVycm9yIGYgYSA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gZXJyb3IgayAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggaW0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgpIGluXG4gICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICB8IFNvbWUgaW0gLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGsgaW0pXG4gICAgICAgICAgZXJyb3IgKExpc3QucmV2IGxpc3QpXG5cbiAgICAgIGxldCBmb2xkIHBhcmFtZXRlcnMgZXJyb3IgZiBhIGIgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgYikgayAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggaW0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJcbiAgICAgICAgICAgIHwgU29tZSBpbSAtPiBmIHBhcmFtZXRlcnMgZXJyb3IgayBpbSBiKVxuICAgICAgICAgIChlcnJvciwgYikgKExpc3QucmV2IGxpc3QpXG5cbiAgICAgIGxldCBmb3JfYWxsIHBhcmFtZXRlcnMgZXJyb3IgZiBhID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIGxldCByZWMgYXV4IGwgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZXJyb3IsIHRydWVcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgKG1hdGNoIGdldCBwYXJhbWV0ZXJzIGVycm9yIGggYSB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgKCkgPSBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoKSBpblxuICAgICAgICAgICAgICBhdXggdCBlcnJvclxuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgYm9vbCA9IGYgcGFyYW1ldGVycyBlcnJvciBoIGRhdGEgaW5cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IHQgZXJyb3JcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBmYWxzZSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGxpc3QgZXJyb3JcblxuICAgICAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICAgICAgbGV0IGVycm9yLCB0ID1cbiAgICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgICAgICAgdCB0XG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IHQgd2l0aCBrZXlzID0gW10gfVxuXG4gICAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBwYXJhbWV0ZXJzIGVycm9yIGYgYSBiID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIGxldCByZWMgYXV4IGxpc3Qgb3V0cHV0ID1cbiAgICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICB8IFtdIC0+IG91dHB1dFxuICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgaW0gPSBnZXQgcGFyYW1ldGVycyBlcnJvciBoZWFkIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNuZCBvdXRwdXQgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFNvbWUgKGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGIpXG4gICAgICAgICAgICAgICAgfCBTb21lIGltIC0+IFNvbWUgKGYgcGFyYW1ldGVycyBlcnJvciBoZWFkIGltIGIpXG4gICAgICAgICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0cHV0XG4gICAgICAgICAgICB8IFNvbWUgb3V0cHV0IC0+IGF1eCB0YWlsIG91dHB1dClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGxpc3QgKGVycm9yLCBiKVxuXG4gICAgICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiBjID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGIgaW5cbiAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGNcbiAgICAgICAgICAgIHwgU29tZSBiIC0+IGYgcGFyYW1ldGVyIGVycm9yIGsgYSBiIGMpXG4gICAgICAgICAgYSBjXG5cbiAgICAgIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggYSBiIGMgPVxuICAgICAgICBsZXQgZXJyb3IsIGMgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGNcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gaCBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICAgIGEgY1xuICAgICAgICBpblxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYiBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBnIHBhcmFtZXRlciBlcnJvciBrIGIgY1xuICAgICAgICAgICAgfCBTb21lIF8gLT4gZXJyb3IsIGMpXG4gICAgICAgICAgYiBjXG4gICAgZW5kIDpcbiAgICAgIFN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IEJhc2ljLmtleSBhbmQgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb24pXG5cbm1vZHVsZSBOZWFybHlfaW5mX0ltcGVyYXRpZiA9IE5lYXJseV9pbmZpbml0ZV9hcnJheXMgKEludF9zdG9yYWdlX2ltcGVyYXRpZilcbm1vZHVsZSBRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZiA9IFF1aWNrX2tleV9saXN0IChOZWFybHlfaW5mX0ltcGVyYXRpZilcblxubW9kdWxlIEludF9JbnRfc3RvcmFnZV9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kIChJbnRfc3RvcmFnZV9pbXBlcmF0aWYpIChJbnRfc3RvcmFnZV9pbXBlcmF0aWYpXG5cbm1vZHVsZSBOZWFybHlfSW5mX0ludF9JbnRfc3RvcmFnZV9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZikgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKVxuXG5tb2R1bGUgTmVhcmx5X0luZl9JbnRfSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kXG4gICAgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKVxuICAgIChFeHRlbmQgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKSAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpKVxuIiwiKCoqXG4gICAgKiB1bmlvbl9maW5kLm1sXG4gICAgKiBvcGVua2FwcGFcbiAgICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAyMDE1LCB0aGUgMTF0aCBvZiBNYXJjaFxuICAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBcHIgMTggMjAxOD5cbiAgICAqICpcbiAgICAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBwcmltaXRpdmVzIHRvIGRlYWwgd2l0aCB1bmlvbiBmaW5kIGFsZ29yaXRobSB3aXRoXG4gICAgKiBwYXRoIGNvbXByZXNzaW9uXG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAsMjAxMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgVW5pb25fZmluZCA9IHNpZ1xuICB0eXBlIGtleVxuICB0eXBlIGRpbWVuc2lvblxuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZGltZW5zaW9uIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCB1bmlvbl9saXN0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIGtleSBsaXN0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBpdGVyaSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAga2V5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgZ2V0X3JlcHJlc2VudGVudCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0ICoga2V5XG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoU3RvcmFnZSA6IEludF9zdG9yYWdlLlN0b3JhZ2UpXG4gIC0+XG4gICgqICAgIGZ1bmN0b3IgKE1hcDogTWFwX3dyYXBwZXIuTWFwX3dpdGhfbG9ncykgLT4qKVxuICAgIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gU3RvcmFnZS5rZXlcbiAgICAgIHR5cGUgdCA9IGtleSBTdG9yYWdlLnRcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gU3RvcmFnZS5kaW1lbnNpb25cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG4gPVxuICAgICAgICBTdG9yYWdlLmluaXQgcGFyYW1ldGVycyBlcnJvciBuIChmdW4gXyBlIHggLT4gZSwgeClcblxuICAgICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICgqIGZpbmRTZXQoZSk6IHdoaWNoIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlcHJlc2VudGF0aXZlIG9mIHRoZSBzZXRcbiAgICAgICAgIGNvbnRhaW5pbmcgZS4gU2luY2UgdGhlIHNldCBhcmUgZGlzam9pbnQsIGUgY29udGFpbnRlZCBpbiBvbmUgc2V0XG4gICAgICAgICBvbmx5LiBUaGVyZWZvcmUsIHRoZSByZXR1cm5lZCByZXByZXNlbnRhdGl2ZSBjYW4gYmUgdW5pcXVlbHkgZGV0ZXJtaW5lZC5cbiAgICAgICopXG5cbiAgICAgIGxldCBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciBlIHQgPVxuICAgICAgICBsZXQgcG9pbnRUb1Jvb3QgcGFyYW1ldGVyIGVycm9yIHJvb3QgbCB0ID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIHQpIGkgLT4gU3RvcmFnZS5zZXQgcGFyYW1ldGVyIGVycm9yIGkgcm9vdCB0KVxuICAgICAgICAgICAgKGVycm9yLCB0KSBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgaGVscGVyIHBhcmFtZXRlciBlcnJvciBlIGwgdCA9XG4gICAgICAgICAgbGV0IGVycm9yLCBwYXJlbnQgPSBTdG9yYWdlLnVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGUgdCBpblxuICAgICAgICAgIG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCAodCwgZSlcbiAgICAgICAgICB8IFNvbWUgcCB3aGVuIHAgPD4gZSAtPiBoZWxwZXIgcGFyYW1ldGVyIGVycm9yIHAgKGUgOjogbCkgdFxuICAgICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICAgICAoKiBiYXNlIGNhc2U6IHdlIGhpdCB0aGUgcm9vdCBub2RlIG1ha2UgYWxsIGNvbGxlY3RlZCBub2RlcyBvbiB0aGVcbiAgICAgICAgICAgICAgIHBhdGggcG9pbnQgdG8gdGhlIHJvb3QuIEFuZCByZXR1cm4gdGhlIHJvb3QgYWZ0ZXJ3YXJkcyAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCB0ID0gcG9pbnRUb1Jvb3QgcGFyYW1ldGVyIGVycm9yIHAgbCB0IGluXG4gICAgICAgICAgICBlcnJvciwgKHQsIHApXG4gICAgICAgIGluXG4gICAgICAgIGhlbHBlciBwYXJhbWV0ZXIgZXJyb3IgZSBbXSB0XG5cbiAgICAgIGxldCBnZXRfcmVwcmVzZW50ZW50IHBhcmFtZXRlcnMgZXJyb3IgZSB0ID1cbiAgICAgICAgbGV0IGVycm9yLCAodW5pb24sIGVsdCkgPSBmaW5kU2V0IHBhcmFtZXRlcnMgZXJyb3IgZSB0IGluXG4gICAgICAgIGVycm9yLCB1bmlvbiwgZWx0XG4gICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgKCpVTklPTiopXG5cbiAgICAgIGxldCB1bmlvbiBwYXJhbWV0ZXIgZXJyb3IgeCB5IHQgPVxuICAgICAgICBsZXQgZXJyb3IsICh0LCByb290X3gpID0gZmluZFNldCBwYXJhbWV0ZXIgZXJyb3IgeCB0IGluXG4gICAgICAgIGxldCBlcnJvciwgKHQsIHJvb3RfeSkgPSBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciB5IHQgaW5cbiAgICAgICAgU3RvcmFnZS5zZXQgcGFyYW1ldGVyIGVycm9yIHJvb3RfeCByb290X3kgdFxuXG4gICAgICAoKmxldCBlcV9jbGFzc2VzX21hcCBwYXJhbWV0ZXIgZXJyb3IgYSA9XG4gICAgICAgICgqICBsZXQgY2xhc3NlcyA9IENja2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmVtcHR5IGluKilcbiAgICAgICAgPT09PT09PVxuICAgICAgICBsZXQgdW5pb24geCB5IGEgPVxuICAgICAgICBsZXQgcm9vdF94ID0gZmluZFNldCB4IGEgaW5cbiAgICAgICAgbGV0IHJvb3RfeSA9IGZpbmRTZXQgeSBhIGluXG4gICAgICAgIGxldCBfID0gYS4ocm9vdF94KSA8LSByb290X3kgaW5cbiAgICAgICAgKCpsZXQgXyA9IHByaW50X3N0cmluZyBcImR1bXA6IFwiOyBkdW1wIGE7IHByaW50X3N0cmluZyBcIlxcblwiIGluKilcbiAgICAgICAgYVxuXG4gICAgICAgIGxldCBlcV9jbGFzc2VzX21hcCBwYXJhbWV0ZXIgZXJyb3IgYSA9XG4gICAgICAgIGxldCBjbGFzc2VzID0gQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5lbXB0eSBpblxuICAgICAgICA+Pj4+Pj4+IHJlbW92ZSBkb3VibGljYXRlIG1vZHVsZSwgdG9kbzogaGlkZGVuIHR5cGUgc2l0ZV9uYW1lXG4gICAgICAgIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggayAoY2xhc3Nlcyx1bmlvbl9saXN0KSA9XG4gICAgICAgICAgaWYgIGsgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgY2xhc3NlcywgdW5pb25fbGlzdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqZmluZCB0aGUgcGFyZW50IG9mIHRoZSB1bmlvbiopXG4gICAgICAgICAgICBsZXQgcmVwID0gZmluZFNldCBrIGEgaW5cbiAgICAgICAgICAgICgqY2hlY2sgaWYgaW5zaWRlIGNsYXNzZXMgaGFzIGFscmVhZHkgaGFzIHRoaXMgcGFyZW50KilcbiAgICAgICAgPDw8PDw8PCBIRUFEXG4gICAgICAgICAgICBsZXQgZXJyb3InLGdldF9yZXAgPVxuICAgICAgICAoKiAgICAgICAgQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuZmluZF9kZWZhdWx0IHBhcmFtZXRlciBlcnJvciBbXSByZXAgY2xhc3NlcyBpbiopXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uY2hlY2sgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZXJyb3InIChTb21lIFwibGluZSA3M1wiKSBFeGl0IGluXG4gICAgICAgICAgICAoKnN0b3JlIHRoZSByZXN1bHQgaW5zaWRlIGNsYXNzZXMqKVxuICAgICAgICAoKiAgICAgIGxldCBlcnJvcixjbGFzc2VzID1cbiAgICAgICAgQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuYWRkX29yX292ZXJ3cml0ZVxuICAgICAgICA9PT09PT09XG4gICAgICAgICAgICBsZXQgZXJyb3InLCBnZXRfcmVwID1cbiAgICAgICAgICAgICAgQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5maW5kX2RlZmF1bHRcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgcmVwXG4gICAgICAgICAgICAgICAgY2xhc3Nlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5jaGVjayB3YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgKFNvbWUgXCJsaW5lIDczXCIpIEV4aXQgaW5cbiAgICAgICAgICAgICgqc3RvcmUgdGhlIHJlc3VsdCBpbnNpZGUgY2xhc3NlcyopXG4gICAgICAgICAgICBsZXQgZXJyb3IsY2xhc3NlcyA9XG4gICAgICAgIENrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuYWRkX29yX292ZXJ3cml0ZVxuICAgICAgICA+Pj4+Pj4+IHJlbW92ZSBkb3VibGljYXRlIG1vZHVsZSwgdG9kbzogaGlkZGVuIHR5cGUgc2l0ZV9uYW1lXG4gICAgICAgIHBhcmFtZXRlclxuICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIHJlcFxuICAgICAgICAoayA6OiBnZXRfcmVwKVxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgICBpbiopXG4gICAgICAgICAgICBhdXggKGsgLSAxKSAoY2xhc3NlcywgdW5pb25fbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNsYXNzZXMsIGEgPSBhdXggKHNpemUgLSAxKSAoY2xhc3NlcywgYSkgaW5cbiAgICAgICAgY2xhc3NlcywgYSopXG5cbiAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAoKiBjb21wdXRlIHVuaW9uLWZpbmQgaW4gYSBsaXN0KilcblxuICAgICAgbGV0IHVuaW9uX2xpc3QgcGFyYW1ldGVyIGVycm9yIGEgKGxpc3QgOiBrZXkgbGlzdCkgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgYVxuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCByZWMgYXV4IHBhcmFtZXRlciB0b192aXNpdCBlcnJvciBhID1cbiAgICAgICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGFcbiAgICAgICAgICAgIHwgdCcgOjogcScgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCB1bmlvbl9hcnJheSA9IHVuaW9uIHBhcmFtZXRlciBlcnJvciB0IHQnIGEgaW5cbiAgICAgICAgICAgICAgYXV4IHBhcmFtZXRlciBxJyBlcnJvciB1bmlvbl9hcnJheVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IHBhcmFtZXRlciBxIGVycm9yIGFcblxuICAgICAgbGV0IGl0ZXJpID0gU3RvcmFnZS5pdGVyXG4gICAgZW5kIDpcbiAgICAgIFVuaW9uX2ZpbmRcbiAgICAgICAgd2l0aCB0eXBlIGtleSA9IFN0b3JhZ2Uua2V5XG4gICAgICAgICBhbmQgdHlwZSB0ID0gU3RvcmFnZS5rZXkgU3RvcmFnZS50XG4gICAgICAgICBhbmQgdHlwZSBkaW1lbnNpb24gPSBTdG9yYWdlLmRpbWVuc2lvbilcbiIsImxldCBmc3Rfb3B0aW9uIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lICh4LCBfKSAtPiBTb21lIHhcbiAgfCBfIC0+IE5vbmVcblxubGV0IHNuZF9vcHRpb24geCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgKF8sIHgpIC0+IFNvbWUgeFxuICB8IF8gLT4gTm9uZVxuXG4oKiBPQ2FtbCBtYW51YWw6IEluIHBhcnRpY3VsYXIsIGlmIHlvdSB3YW50IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXRcbiAgIG1hdGNoZXMgYSBzaW5nbGUgYmFja3NsYXNoIGNoYXJhY3RlciwgeW91IG5lZWQgdG8gcXVvdGUgaXQgaW4gdGhlXG4gICBhcmd1bWVudCB0byByZWdleHAgKGFjY29yZGluZyB0byB0aGUgbGFzdCBpdGVtIG9mIHRoZSBsaXN0IGFib3ZlKSBieVxuICAgYWRkaW5nIGEgc2Vjb25kIGJhY2tzbGFzaC4gVGhlbiB5b3UgbmVlZCB0byBxdW90ZSBib3RoIGJhY2tzbGFzaGVzXG4gICAoYWNjb3JkaW5nIHRvIHRoZSBzeW50YXggb2Ygc3RyaW5nIGNvbnN0YW50cyBpbiBPQ2FtbCkgYnkgZG91YmxpbmdcbiAgIHRoZW0gYWdhaW4sIHNvIHlvdSBuZWVkIHRvIHdyaXRlIGZvdXIgYmFja3NsYXNoIGNoYXJhY3RlcnM6IFN0ci5yZWdleHBcbiAgIFwiXFxcXFxcXFxcIi4gKilcblxuKCoqIGRvdCBvdXRwdXQqKVxubGV0IGVzY2FwZV9sYWJlbF9pbl9kb3QgcyA9XG4gIFN0ci5nbG9iYWxfc3Vic3RpdHV0ZSAoU3RyLnJlZ2V4cCBcIltcXFxcXFxcIlxcXFxcXFxcXVwiKVxuICAgIChmdW4geCAtPlxuICAgICAgbWF0Y2ggU3RyLm1hdGNoZWRfc3RyaW5nIHggd2l0aFxuICAgICAgfCBcIlxcXCJcIiAtPiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgXCJcXFxcXCIgLT4gXCJcXFxcXFxcXFwiXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHNcblxubGV0IG1ha2VfaWRfY29tcGF0aWJsZV93aXRoX2RvdF9mb3JtYXQgcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgPVxuICBsZXQgdGFiID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90IHBhcmFtZXRlcnNcbiAgaW5cbiAgbGV0IHJlYyBhdXggcG9zIGwgPVxuICAgIGlmIHBvcyA8IDAgdGhlblxuICAgICAgbFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXIgPSBTdHJpbmcuZ2V0IHN0cmluZyBwb3MgaW5cbiAgICAgIG1hdGNoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkNoYXJNYXAuZmluZF9vcHRpb24gY2hhciB0YWIgd2l0aFxuICAgICAgfCBTb21lIGxpc3RlX2NoYXIgLT5cbiAgICAgICAgYXV4IChwb3MgLSAxKVxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBjaGFyIC0+IGNoYXIgOjogbGlzdClcbiAgICAgICAgICAgICBsIChMaXN0LnJldiBsaXN0ZV9jaGFyKSlcbiAgICAgIHwgTm9uZSAtPiBhdXggKHBvcyAtIDEpIChjaGFyIDo6IGwpXG4gICAgKVxuICBpblxuICBsZXQgbCA9IGF1eCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSAxKSBbXSBpblxuICBlcnJvciwgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKFN0cmluZy5tYWtlIDEpIChMaXN0LnJldiBsKSlcblxubGV0IHNvcnRlZF9wYXJ0c19vZl9saXN0IG4gbGlzdCA9XG4gIGxldCBsaXN0ID0gTGlzdC5zb3J0IChmdW4gYSBiIC0+IGNvbXBhcmUgYiBhKSBsaXN0IGluXG4gIGxldCByZWMgYXV4IGsgbGlzdCBzdWZmaXggb3V0cHV0ID1cbiAgICBpZiBrID0gMCB0aGVuXG4gICAgICBzdWZmaXggOjogb3V0cHV0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaCA6OiB0IC0+IGF1eCBrIHQgc3VmZml4IChhdXggKGsgLSAxKSB0IChoIDo6IHN1ZmZpeCkgb3V0cHV0KVxuICAgICAgfCBbXSAtPiBvdXRwdXRcbiAgICApXG4gIGluXG4gIGF1eCBuIGxpc3QgW10gW11cblxubGV0IHNvcnRfbGlzdCBrZXkgcGFyYW1ldGVyIGVycm9yIGxpc3QgPVxuICBsZXQgZXJyb3IsIHJlZmluZWRfbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCByZWZpbmVkX2xpc3QpIGEgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXkgPSBrZXkgcGFyYW1ldGVyIGVycm9yIGEgaW5cbiAgICAgICAgZXJyb3IsIChrZXksIGEpIDo6IHJlZmluZWRfbGlzdClcbiAgICAgIChlcnJvciwgW10pIGxpc3RcbiAgaW5cbiAgbGV0IHJlZmluZWRfc29ydGVkX2xpc3QgPVxuICAgIExpc3Quc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gY29tcGFyZSBiIGEpIHJlZmluZWRfbGlzdFxuICBpblxuICBlcnJvciwgTGlzdC5yZXZfbWFwIHNuZCByZWZpbmVkX3NvcnRlZF9saXN0XG4iLCIoKipcbiAgKiBtaXNjX3NhLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMTYvMTIvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDAyIDIwMTY+XG4gICogKlxuICAqIFZhcmlvdXMgZnVuY3Rpb25zXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBjb25zdF91bml0IF8gPSAoKVxuXG5sZXQgYXJyYXlfb2ZfbGlzdCBjcmVhdGUgc2V0IHBhcmFtZXRlcnMgZXJyb3IgbGlzdCA9XG4gIGxldCBuID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICBsZXQgYSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG4gaW5cbiAgbGV0IHJlYyBhdXggbCBrIGEgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYVxuICAgIHwgdCA6OiBxIC0+IGF1eCBxIChrICsgMSkgKHNldCBwYXJhbWV0ZXJzIChmc3QgYSkgayB0IChzbmQgYSkpXG4gIGluXG4gIGF1eCBsaXN0IDAgYVxuXG5sZXQgdW5zb21lIChlcnJvciwgeCkgZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gZiBlcnJvclxuICB8IFNvbWUgeCAtPiBlcnJvciwgeFxuXG5sZXQgcmV2X2ludGVyX2xpc3QgY29tcGFyZSBsMSBsMiA9XG4gIGxldCByZWMgYXV4IGwxIGwyIHJlcCA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gTGlzdC5yZXYgcmVwXG4gICAgfCBhIDo6IGIsIGMgOjogZCAtPlxuICAgICAgaWYgY29tcGFyZSBhIGMgPSAwIHRoZW5cbiAgICAgICAgYXV4IGIgZCAoYSA6OiByZXApXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgYSBjIDwgMCB0aGVuXG4gICAgICAgIGF1eCBiIGwyIHJlcFxuICAgICAgZWxzZVxuICAgICAgICBhdXggbDEgZCByZXBcbiAgaW5cbiAgYXV4IGwxIGwyIFtdXG5cbmxldCB0cmFjZSBwYXJhbWV0ZXJzIHN0cmluZyA9XG4gIGlmXG4gICAgcGFyYW1ldGVycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZVxuICB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICBcIiVzJXNcIlxuICAgICAgcGFyYW1ldGVycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAgICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCAoc3RyaW5nICgpKVxuXG5sZXQgaW50ZXJfbGlzdCBjb21wYXJlIGwxIGwyID0gTGlzdC5yZXYgKHJldl9pbnRlcl9saXN0IGNvbXBhcmUgbDEgbDIpXG5cbmxldCBsaXN0XzBfbiBrID1cbiAgbGV0IHJlYyBhdXggayBzb2wgPVxuICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgIHNvbFxuICAgIGVsc2VcbiAgICAgIGF1eCAoayAtIDEpIChrIDo6IHNvbClcbiAgaW5cbiAgYXV4IGsgW11cblxubGV0IGxpc3RfbWludXMgbDEgbDIgPVxuICBsZXQgcmVjIGF1eCBsMSBsMiByZXAgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCB0MSA6OiBxMSwgdDIgOjogcTIgd2hlbiB0MSA9IHQyIC0+IGF1eCBxMSBxMiByZXBcbiAgICB8IHQxIDo6IHExLCBfIC0+IGF1eCBxMSBsMiAodDEgOjogcmVwKVxuICAgIHwgW10sIF8gLT4gcmVwXG4gIGluXG4gIExpc3QucmV2IChhdXggbDEgbDIgW10pXG5cbmxldCBwcmludF9jb21tYSBwYXJhbWV0ZXIgYm9vbCBjb21tYSA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCIlc1wiIGNvbW1hXG5cbmxldCBmZXRjaF9hcnJheSBpIGFycmF5IGRlZiA9XG4gIHRyeVxuICAgIG1hdGNoIGFycmF5LihpKSB3aXRoXG4gICAgfCBOb25lIC0+IGRlZlxuICAgIHwgU29tZSBpIC0+IGlcbiAgd2l0aCBfIC0+IGRlZlxuIiwiKCoqXG4gICAgKiBoYXNoLm1sXG4gICAgKiBvcGVua2FwcGFcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAxOC8xMC8yMDEwXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNCAyMDE3PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHNpZ25hdHVyZSBmb3IgaGFzaCB0YWJsZXMgYW5kIHNldmVyYWwgaW1wbGVtZW50YXRpb25zXG4gICAgKiAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgJ2EgaGFzaFxuXG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgaGFzaFxuXG4gIHZhbCBhZGQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSAtPlxuICAgIGludCAtPlxuICAgICdhIGhhc2ggLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBoYXNoXG5cbiAgdmFsIG92ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgYWRkX29yX292ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgZmluZF9vcHRpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGludCAqICdhKSBvcHRpb25cblxuICB2YWwgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChpbnQgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5IDoga2V5IC0+ICdhIGhhc2ggLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IGludCAtPiB1bml0KSAtPiAnYSBoYXNoIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoa2V5IC0+ICdiIC0+IGludCAtPiAnYSAtPiAnYSkgLT4gJ2IgaGFzaCAtPiAnYSAtPiAnYVxuZW5kXG5cbm1vZHVsZSBIYXNoID1cbmZ1bmN0b3JcbiAgKE1hcCA6IE1hcF93cmFwcGVyLlNfd2l0aF9sb2dzKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGtleSA9IE1hcC5lbHRcbiAgICAgIHR5cGUgJ2EgaGFzaCA9IChpbnQgKiAnYSkgTWFwLk1hcC50XG5cbiAgICAgIGxldCBjcmVhdGUgXyA9IE1hcC5NYXAuZW1wdHlcblxuICAgICAgbGV0IGFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5IGFzc28gaW50ID1cbiAgICAgICAgTWFwLk1hcC5hZGQgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBhZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgZmluZF9vcHRpb24gcGFyYW1ldGVyIGVycm9yIGEgYiA9XG4gICAgICAgIGxldCBlcnJvcicsIG91dHB1dCA9IE1hcC5NYXAuZmluZF9vcHRpb24gcGFyYW1ldGVyIGVycm9yIGEgYiBpblxuICAgICAgICBpZiBlcnJvciA9PSBlcnJvcicgdGhlblxuICAgICAgICAgIGVycm9yJywgb3V0cHV0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3InIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiYXR0ZW1wdCB0byByZWFkIGFuIHVuZXhpc3RpbmcgYXNzb2NpYXRpb25cIiBOb3RfZm91bmRcbiAgICAgICAgICAgIG91dHB1dFxuXG4gICAgICBsZXQgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzID0gTWFwLk1hcC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcblxuICAgICAgbGV0IGZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5IGEgYiA9XG4gICAgICAgIExpZnRfZXJyb3JfbG9ncy5saWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2JpbmFyeSBmaW5kX29wdGlvbiBhIGJcblxuICAgICAgbGV0IGl0ZXIgZiA9IE1hcC5NYXAuaXRlciAoZnVuIChhIDoga2V5KSAoYiwgYykgLT4gZiBhIGMgYilcbiAgICAgIGxldCBmb2xkIGYgPSBNYXAuTWFwLmZvbGQgKGZ1biBhIChiLCBjKSBkIC0+IGYgYSBjIGIgZClcbiAgICBlbmQgOlxuICAgICAgSGFzaCB3aXRoIHR5cGUga2V5ID0gTWFwLmVsdClcblxubW9kdWxlIEhhc2hfb2ZfT3JkID1cbmZ1bmN0b3IgKE8gOiBTZXRNYXAuT3JkZXJlZFR5cGUpIC0+IEhhc2ggKE1hcF93cmFwcGVyLk1ha2UgKFNldE1hcC5NYWtlIChPKSkpXG4iLCJsZXQgbG9jYWxfdHJhY2UgPSBmYWxzZVxuXG50eXBlIG5vZGUgPSBpbnRcblxubGV0IG5vZGVfb2ZfaW50IHggPSB4XG5sZXQgaW50X29mX25vZGUgKHggOiBub2RlKSA6IGludCA9IHhcblxubW9kdWxlIE5vZGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IG5vZGVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kKVxuXG5tb2R1bGUgTm9kZU1hcCA9IE5vZGVTZXRNYXAuTWFwXG5cbm1vZHVsZSBGaXhlZF9zaXplX2FycmF5IDpcbiAgSW50X3N0b3JhZ2UuU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gbm9kZSBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPVxuICBJbnRfc3RvcmFnZS5RdWlja19rZXlfbGlzdCAoSW50X3N0b3JhZ2UuSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxuXG5tb2R1bGUgTm9kZWFycmF5IDpcbiAgSW50X3N0b3JhZ2UuU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gbm9kZSBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPVxuICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZlxuXG50eXBlICgnbm9kZV9sYWJlbHMsICdlZGdlX2xhYmVscykgZ3JhcGggPSB7XG4gIG5vZGVfbGFiZWxzOiAnbm9kZV9sYWJlbHMgRml4ZWRfc2l6ZV9hcnJheS50O1xuICBlZGdlczogKG5vZGUgKiAnZWRnZV9sYWJlbHMpIGxpc3QgRml4ZWRfc2l6ZV9hcnJheS50O1xufVxuXG5sZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3Igbm9kZV9vZl9ub2RlX2xhYmVsIG5vZGVfbGlzdCBlZGdlX2xpc3QgPVxuICBsZXQgbWF4X25vZGUgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbSBpIC0+IG1heCBtIChpbnRfb2Zfbm9kZSBpKSkgMCBub2RlX2xpc3RcbiAgaW5cbiAgbGV0IGVycm9yLCBub2RlcyA9IEZpeGVkX3NpemVfYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbWF4X25vZGUgaW5cbiAgbGV0IGVycm9yLCBub2RlcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBub2RlcykgaSAtPlxuICAgICAgICBGaXhlZF9zaXplX2FycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGkgOiBub2RlKVxuICAgICAgICAgIChub2RlX29mX25vZGVfbGFiZWwgaSkgbm9kZXMpXG4gICAgICAoZXJyb3IsIG5vZGVzKSAoTGlzdC5yZXYgbm9kZV9saXN0KVxuICBpblxuICBsZXQgZXJyb3IsIGVkZ2VzID0gRml4ZWRfc2l6ZV9hcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciBtYXhfbm9kZSBpblxuICBsZXQgYWRkX2VkZ2UgcGFyYW1ldGVycyBlcnJvciAobjEsIGxhYmVsLCBuMikgZWRnZXMgPVxuICAgIGxldCBlcnJvciwgb2xkID1cbiAgICAgIG1hdGNoIEZpeGVkX3NpemVfYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIG4xIGVkZ2VzIHdpdGhcbiAgICAgIHwgZXJyb3IsIE5vbmUgLT4gZXJyb3IsIFtdXG4gICAgICB8IGVycm9yLCBTb21lIGEgLT4gZXJyb3IsIGFcbiAgICBpblxuICAgIEZpeGVkX3NpemVfYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgbjEgKChuMiwgbGFiZWwpIDo6IG9sZCkgZWRnZXNcbiAgaW5cbiAgbGV0IGVycm9yLCBlZGdlcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBlZGdlcykgZWRnZSAtPiBhZGRfZWRnZSBwYXJhbWV0ZXJzIGVycm9yIGVkZ2UgZWRnZXMpXG4gICAgICAoZXJyb3IsIGVkZ2VzKSBlZGdlX2xpc3RcbiAgaW5cbiAgZXJyb3IsIHsgbm9kZV9sYWJlbHMgPSBub2RlczsgZWRnZXMgfVxuXG5sZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSB0ID1cbiAgbWF0Y2ggTm9kZWFycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgd2l0aFxuICB8IGVycm9yLCBTb21lIGkgLT4gZXJyb3IsIGlcbiAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgLTFcblxubGV0IGdldF9iIHBhcmFtZXRlcnMgZXJyb3IgaSB0ID1cbiAgbWF0Y2ggTm9kZWFycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgd2l0aFxuICB8IGVycm9yLCBTb21lIGkgLT4gZXJyb3IsIGlcbiAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgZmFsc2VcblxubGV0IGNvbXB1dGVfc2NjID9sb3cgP3ByZSA/b25fc3RhY2sgcGFyYW1ldGVycyBlcnJvciBuX3RvX3N0cmluZyBncmFwaCA9XG4gIGxldCBlcnJvciA9XG4gICAgaWYgbG9jYWxfdHJhY2UgfHwgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2UgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBcIkNPTVBVVEUgQlJJREdFOiBcXG4gR3JhcGg6IFxcbiBOb2RlczogXFxuXCJcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5Lml0ZXIgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBpIGogLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVpICVzO1xcblwiIGkgKG5fdG9fc3RyaW5nIGopXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5Lml0ZXIgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBpIGwgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVpOlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gZXJyb3IgKGosIF8pIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgICAgXCIlaSxcIiBqXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgICAgICAgZXJyb3IgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgZ3JhcGguZWRnZXNcbiAgICAgIGluXG4gICAgICBlcnJvclxuICAgICkgZWxzZVxuICAgICAgZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb3csIHByZSwgb25fc3RhY2sgPVxuICAgIG1hdGNoIGxvdywgcHJlLCBvbl9zdGFjayB3aXRoXG4gICAgfCBTb21lIGxvdywgU29tZSBwcmUsIFNvbWUgb25fc3RhY2sgLT4gZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFja1xuICAgIHwgTm9uZSwgXywgXyB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIF9tYXhfbm9kZSA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBfcGFyYW1ldGVyIGVycm9yIGkgXyBqIC0+IGVycm9yLCBtYXggKGludF9vZl9ub2RlIGkpIGopXG4gICAgICAgICAgZ3JhcGgubm9kZV9sYWJlbHMgMFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgfCBTb21lIGxvdyAtPiBlcnJvciwgbG93XG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgcHJlID1cbiAgICAgICAgbWF0Y2ggcHJlIHdpdGhcbiAgICAgICAgfCBTb21lIHByZSAtPiBlcnJvciwgcHJlXG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgb25fc3RhY2sgPVxuICAgICAgICBtYXRjaCBvbl9zdGFjayB3aXRoXG4gICAgICAgIHwgU29tZSBvbl9zdGFjayAtPiBlcnJvciwgb25fc3RhY2tcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFja1xuICBpblxuICBsZXQgcmVjIGF1eCBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciB2ID1cbiAgICBsZXQgZXJyb3IsIHByZSA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IGNvdW50ZXIgcHJlIGluXG4gICAgbGV0IGVycm9yLCBsb3cgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBjb3VudGVyIGxvdyBpblxuICAgIGxldCBzdGFjayA9IHYgOjogc3RhY2sgaW5cbiAgICBsZXQgZXJyb3IsIG9uX3N0YWNrID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgdHJ1ZSBvbl9zdGFjayBpblxuICAgIGxldCBjb3VudGVyID0gc3VjYyBjb3VudGVyIGluXG4gICAgbGV0IGVycm9yLCBlZGdlc192ID1cbiAgICAgIG1hdGNoIEZpeGVkX3NpemVfYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIHYgZ3JhcGguZWRnZXMgd2l0aFxuICAgICAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgIHwgZXJyb3IsIFNvbWUgYSAtPiBlcnJvciwgYVxuICAgIGluXG4gICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKSAodywgXykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHByZV93ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdyBwcmUgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgICAgICAgaWYgcHJlX3cgPSAtMSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgICAgICAgICAgICBhdXggcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvd192ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBsb3cgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3dfdyA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHcgbG93IGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiAobWluIGxvd192IGxvd193KSBsb3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgYiA9IGdldF9iIHBhcmFtZXRlcnMgZXJyb3IgdyBvbl9zdGFjayBpblxuICAgICAgICAgICAgICBpZiBiIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgcHJlX3cgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB3IHByZSBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IChtaW4gbG93X3YgcHJlX3cpIGxvd1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgICAoZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICAgIGVkZ2VzX3ZcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgIGxldCBlcnJvciwgcHJlX3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IHByZSBpblxuICAgIGlmIGxvd192ID0gcHJlX3YgdGhlbiAoXG4gICAgICBsZXQgcmVjIGF1eDIgcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgY2MgdlxuICAgICAgICAgID1cbiAgICAgICAgbWF0Y2ggc3RhY2sgd2l0aFxuICAgICAgICB8IHcnIDo6IHN0YWNrIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvbl9zdGFjayA9XG4gICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdycgZmFsc2Ugb25fc3RhY2tcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBjYyA9IHcnIDo6IGNjIGluXG4gICAgICAgICAgaWYgdiA9IHcnIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBjYyA6OiBzY2NfbGlzdCwgc3RhY2spXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBjYyB2XG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICBpblxuICAgICAgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBbXSB2XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICBpblxuICBsZXQgZXJyb3IsIChwcmUsIGxvdywgX2NvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgX3N0YWNrKSA9XG4gICAgRml4ZWRfc2l6ZV9hcnJheS5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciB2IF8gKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIHByZV92ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBwcmUgaW5cbiAgICAgICAgaWYgcHJlX3YgPSAtMSB0aGVuXG4gICAgICAgICAgYXV4IHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIHZcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgIChwcmUsIGxvdywgMSwgb25fc3RhY2ssIFtdLCBbXSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBsb2NhbF90cmFjZSB8fCBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJTQ0NcIlxuICAgICAgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBsaXN0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgIFwiJWk7XCIpXG4gICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiXFxuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBzY2NfbGlzdFxuICAgICAgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgKVxuICBpblxuICBsZXQgZXJyb3IsIHByZSA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIHByZSBpblxuICBsZXQgZXJyb3IsIGxvdyA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIGxvdyBpblxuICBsZXQgZXJyb3IsIG9uX3N0YWNrID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3Igb25fc3RhY2sgaW5cbiAgZXJyb3IsIHByZSwgbG93LCBvbl9zdGFjaywgc2NjX2xpc3RcblxubGV0IGRldGVjdF9icmlkZ2VzIHBhcmFtZXRlcnMgZXJyb3IgYWRkIGdyYXBoIHN0cmluZ19vZl9uIHN0cmluZ19vZl9lIHNjY1xuICAgIGJyaWRnZXMgPVxuICBGaXhlZF9zaXplX2FycmF5LmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBuaSBsIGJyaWRnZXMgLT5cbiAgICAgIGxldCBlcnJvciwgc2NjaSA9XG4gICAgICAgIG1hdGNoIE5vZGVhcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaSBzY2Mgd2l0aFxuICAgICAgICB8IGVycm9yLCBTb21lIHNjY2kgLT4gZXJyb3IsIHNjY2lcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPiBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoLTEpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGJyaWRnZXMpIChuaiwgbGFiZWwpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzY2NqID1cbiAgICAgICAgICAgIG1hdGNoIE5vZGVhcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaiBzY2Mgd2l0aFxuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBzY2NqIC0+IGVycm9yLCBzY2NqXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgtMilcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHNjY2kgPSBzY2NqIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBicmlkZ2VzXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBGaXhlZF9zaXplX2FycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5pIGdyYXBoLm5vZGVfbGFiZWxzXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJyaWRnZXNcbiAgICAgICAgICAgIHwgZXJyb3IsIFNvbWUgbnN0cmluZ2kgLT5cbiAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbmogZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJyaWRnZXNcbiAgICAgICAgICAgICAgfCBlcnJvciwgU29tZSBuc3RyaW5naiAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBpZiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHx8IGxvY2FsX3RyYWNlXG4gICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJXMgJXMgJXNcIiAoc3RyaW5nX29mX24gbnN0cmluZ2kpIChzdHJpbmdfb2ZfZSBsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfbiBuc3RyaW5nailcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGFkZCAobnN0cmluZ2ksIGxhYmVsLCBuc3RyaW5naikgYnJpZGdlcylcbiAgICAgICAgICApKVxuICAgICAgICAoZXJyb3IsIGJyaWRnZXMpIGwpXG4gICAgZ3JhcGguZWRnZXMgYnJpZGdlc1xuXG5sZXQgYWRkX2JyaWRnZXMgP2xvdyA/cHJlID9vbl9zdGFjayA/c2NjIGFkZCBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZ19vZl9uXG4gICAgc3RyaW5nX29mX2UgZ3JhcGggYnJpZGdlcyA9XG4gIGxldCBlcnJvciwgc2NjID1cbiAgICBtYXRjaCBzY2Mgd2l0aFxuICAgIHwgU29tZSBzY2MgLT4gZXJyb3IsIHNjY1xuICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICBpblxuICBsZXQgZXJyb3IsIHByZSwgbG93LCBvbl9zdGFjaywgc2NjX2xpc3QgPVxuICAgIGNvbXB1dGVfc2NjID9sb3cgP3ByZSA/b25fc3RhY2sgcGFyYW1ldGVycyBlcnJvciBzdHJpbmdfb2ZfbiBncmFwaFxuICBpblxuICBsZXQgZXJyb3IsIF8sIHNjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBuLCBzY2MpIGNjIC0+XG4gICAgICAgIGxldCBlcnJvciwgbiwgc2NjID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIG4sIHNjYykgbm9kZSAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIHNjYyA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciBub2RlIG4gc2NjIGluXG4gICAgICAgICAgICAgIGVycm9yLCBuLCBzY2MpXG4gICAgICAgICAgICAoZXJyb3IsIG4sIHNjYykgY2NcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG4gKyAxLCBzY2MpXG4gICAgICAoZXJyb3IsIDEsIHNjYykgc2NjX2xpc3RcbiAgaW5cbiAgbGV0IGVycm9yLCBicmlkZ2VzID1cbiAgICBkZXRlY3RfYnJpZGdlcyBwYXJhbWV0ZXJzIGVycm9yIGFkZCBncmFwaCBzdHJpbmdfb2ZfbiBzdHJpbmdfb2ZfZSBzY2NcbiAgICAgIGJyaWRnZXNcbiAgaW5cbiAgbGV0IGVycm9yLCBzY2MgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBzY2MgaW5cbiAgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFjaywgc2NjLCBicmlkZ2VzXG4iLCIoKipcbiAqIGRpY3Rpb25hcnkubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDIwMTAsIHRoZSAxOHRoIG9mIE9jdG9iZXJcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA1IDIwMTc+XG4gKiAqXG4gKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIGluZGV4ZWQgc2V0IG9mIHZhbHVlc1xuICogRHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24gbWVtYmVyc2hpcCwgdHJhbmR1Y3Rpb24sIGFuZCBuZXcga2V5IGNhblxuICogYmUgaGFuZGxlZCBpbiBPKGxvZyBuKVxuICogQWZ0ZXIgdGhlIGNvbnN0cnVjdGlvbiBrZXkgY2FuIGJlIHRyYW5zbGF0ZWQgaW4gTygxKVxuICogKlxuICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgRGljdGlvbmFyeSA9IHNpZ1xuICB0eXBlIGtleVxuICB0eXBlIHZhbHVlXG4gIHR5cGUgKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBpbml0IDogdW5pdCAtPiAoJ2EsICdiKSBkaWN0aW9uYXJ5XG5cbiAgdmFsIG1lbWJlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHZhbHVlIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGJvb2xcblxuICB2YWwgYWxsb2NhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ2EgLT4gJ2EgLT4ga2V5KSAtPlxuICAgIHZhbHVlIC0+XG4gICAgJ2EgLT5cbiAgICAoa2V5IC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvblxuXG4gIHZhbCBhbGxvY2F0ZV91bmlxdWVseSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uXG5cbiAgKCogIHZhbCBhbGxvY2F0ZV9mX2lkOiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT4gKCdhIC0+ICdhIC0+IGludCkgLT4gdmFsdWUgLT4gKGludCAtPiAnYSkgLT4gJ2EgZGljdGlvbmFyeSAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoaW50ICogJ2EgKiAnYSBkaWN0aW9uYXJ5KSBvcHRpb24qKVxuICB2YWwgYWxsb2NhdGVfYm9vbCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuICAgICogKGJvb2wgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvbilcblxuICB2YWwgdW5zYWZlX2FsbG9jYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSlcblxuICB2YWwgdHJhbnNsYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICh2YWx1ZSAqICdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBzdGFiaWxpemUgOiAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnlcblxuICB2YWwgaXRlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgbGFzdF9lbnRyeSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBrZXlcblxuICB2YWwgZm9sZCA6XG4gICAgKHZhbHVlIC0+ICdhICogJ2IgLT4ga2V5IC0+ICdjIC0+ICdjKSAtPiAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+ICdjIC0+ICdjXG5lbmRcblxuZXhjZXB0aW9uXG4gIEFzc29jaWF0aW9uX2lzX2V4aXN0aW5nX3dpdGhfdGhlX3NhbWVfdmFsdWVfaW5fYV9kaWZmZXJlbnRfbG9jYXRpb25fbWVtb3J5XG5cbmV4Y2VwdGlvbiBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuXG5tb2R1bGUgRGljdGlvbmFyeSA9XG5mdW5jdG9yXG4gIChIYXNoIDogSGFzaC5IYXNoKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGtleSA9IGludFxuICAgICAgdHlwZSB2YWx1ZSA9IEhhc2gua2V5XG5cbiAgICAgIHR5cGUgKCdhLCAnYikgaW5fY29uc3RydWN0aW9uID0ge1xuICAgICAgICBoYXNoX3RhYmxlOiAoJ2EgKiAnYikgSGFzaC5oYXNoO1xuICAgICAgICBmcmVzaDogaW50O1xuICAgICAgfVxuXG4gICAgICB0eXBlICgnYSwgJ2IpIHN0YWJpbGl6ZWQgPSAodmFsdWUgKiAnYSAqICdiKSBvcHRpb24gYXJyYXlcblxuICAgICAgdHlwZSAoJ2EsICdiKSBkaWN0aW9uYXJ5ID0ge1xuICAgICAgICBpc19zdGFiaWxpemVkOiBib29sO1xuICAgICAgICBzdGFiaWxpemVkOiAoJ2EsICdiKSBzdGFiaWxpemVkO1xuICAgICAgICBpbl9jb25zdHJ1Y3Rpb246ICgnYSwgJ2IpIGluX2NvbnN0cnVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgbGV0IGludmFsaWQgeCBwYXJhbWV0ZXJzIG1oIF9fUE9TX18gbWVzc2FnZSBleG4gPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIG1oIF9fUE9TX18gfm1lc3NhZ2UgZXhuIHhcblxuICAgICAgbGV0IGludmFsaWRfYXJnID0gaW52YWxpZCBOb25lXG4gICAgICBsZXQgaW52YWxpZF9hcmdfYm9vbCA9IGludmFsaWQgKGZhbHNlLCBOb25lKVxuICAgICAgbGV0IHByZWluaXQgKCkgPSB7IGhhc2hfdGFibGUgPSBIYXNoLmNyZWF0ZSAxOyBmcmVzaCA9IDAgfVxuXG4gICAgICBsZXQgcHJlbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uID1cbiAgICAgICAgbGV0IGVycm9yLCBvdXRwdXQgPVxuICAgICAgICAgIEhhc2guZmluZF9vcHRpb25fd2l0aG91dF9sb2dzXG4gICAgICAgICAgICAoKiBpbmRlZWQsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0ZXN0IHdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIGFuIGFzc29jaWF0aW9uICopXG4gICAgICAgICAgICBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBvdXRwdXQgIT0gTm9uZVxuXG4gICAgICBsZXQgcHJldHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHN0YWJpbGl6ZWQgPVxuICAgICAgICBpZiBrZXkgPj0gMCAmJiBrZXkgPCBBcnJheS5sZW5ndGggc3RhYmlsaXplZCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBzdGFiaWxpemVkLihrZXkpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBlcnJvciwgU29tZSBhXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gXCJtaXNzaW5nIGVudHJ5XCJcbiAgICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcbiAgICAgICAgKSBlbHNlIGlmIGtleSA8IDAgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm5lZ2F0aXZlIGtleSBhcmUgbm90IGFsbG93ZWRcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm1pc3NpbmcgZW50cnlcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcblxuICAgICAgbGV0IHByZXN0YWJpbGl6ZSBpbl9jb25zdHJ1Y3Rpb24gPVxuICAgICAgICBsZXQgYXJyYXkgPSBBcnJheS5tYWtlIGluX2NvbnN0cnVjdGlvbi5mcmVzaCBOb25lIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgSGFzaC5pdGVyXG4gICAgICAgICAgICAoZnVuIGEgKGFzc28sIGFzc28nKSBpIC0+IGFycmF5LihpKSA8LSBTb21lIChhLCBhc3NvLCBhc3NvJykpXG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICBpblxuICAgICAgICBhcnJheVxuXG4gICAgICBsZXQgaW5pdCAoKSA9XG4gICAgICAgIHtcbiAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24gPSBwcmVpbml0ICgpO1xuICAgICAgICAgIHN0YWJpbGl6ZWQgPSBBcnJheS5tYWtlIDAgTm9uZTtcbiAgICAgICAgICBpc19zdGFiaWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgZGljdGlvbmFyeSA9XG4gICAgICAgIHByZW1lbWJlciBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uXG5cbiAgICAgIGxldCBzdGFiaWxpemUgZGljdGlvbmFyeSA9XG4gICAgICAgIGlmIGRpY3Rpb25hcnkuaXNfc3RhYmlsaXplZCB0aGVuXG4gICAgICAgICAgZGljdGlvbmFyeVxuICAgICAgICBlbHNlXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb247XG4gICAgICAgICAgICBpc19zdGFiaWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YWJpbGl6ZWQgPSBwcmVzdGFiaWxpemUgZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb247XG4gICAgICAgICAgfVxuXG4gICAgICBsZXQgdHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHN0YWJpbGl6ZSBkaWN0aW9uYXJ5IGluXG4gICAgICAgIHByZXRyYW5zbGF0ZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBkaWN0aW9uYXJ5LnN0YWJpbGl6ZWRcblxuICAgICAgbGV0IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCB1bmlxdWVseSBwYXJhbWV0ZXJzIGVycm9yIGNvbXBhcmVcbiAgICAgICAgICAodmFsdWUgOiB2YWx1ZSkgYXNzbyBidWlsZCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcbiAgICAgICAgICAgICgqIGluZGVlZCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIHRoYXQgZWl0aGVyIHRoZXJlIGlzIG5vIGFzc29jaWF0aW9uLCBvciB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXNzb2NpYXRpb24gKilcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uLmhhc2hfdGFibGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgbGV0IGZyZXNoID0gaW5fY29uc3RydWN0aW9uLmZyZXNoIGluXG4gICAgICAgICAgbGV0IGFzc29faWQgPSBidWlsZCBmcmVzaCBpblxuICAgICAgICAgIGxldCBlcnJvciwgaGFzaF90YWJsZSA9XG4gICAgICAgICAgICBIYXNoLmFkZCBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIChhc3NvLCBhc3NvX2lkKSBmcmVzaFxuICAgICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGhhc2ggPSB7IGhhc2hfdGFibGU7IGZyZXNoID0gZnJlc2ggKyAxIH0gaW5cbiAgICAgICAgICBsZXQgZGljdGlvbmFyeSA9XG4gICAgICAgICAgICBpZiBkaWN0aW9uYXJ5LmlzX3N0YWJpbGl6ZWQgdGhlblxuICAgICAgICAgICAgICB7IGRpY3Rpb25hcnkgd2l0aCBpc19zdGFiaWxpemVkID0gZmFsc2UgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBkaWN0aW9uYXJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHsgZGljdGlvbmFyeSB3aXRoIGluX2NvbnN0cnVjdGlvbiA9IGhhc2ggfSBpblxuICAgICAgICAgIGVycm9yLCAodHJ1ZSwgU29tZSAoZnJlc2gsIGFzc28sIGFzc29faWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIChpLCAoYXNzbycsIGFzc28nX2lkKSkgd2hlbiBhc3NvJyA9PSBhc3NvIC0+XG4gICAgICAgICAgZXJyb3IsIChmYWxzZSwgU29tZSAoaSwgYXNzbycsIGFzc28nX2lkLCBkaWN0aW9uYXJ5KSlcbiAgICAgICAgfCBlcnJvciwgU29tZSAoaSwgKGFzc28nLCBhc3NvJ19pZCkpIHdoZW4gY29tcGFyZSBhc3NvIGFzc28nID0gMCAtPlxuICAgICAgICAgIGlmIHVuaXF1ZWx5IHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnX2Jvb2wgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgIFwid3JvbmcgYXNzb2NpYXRpb24gKHRoZSBpbWFnZSBpcyBub3QgdW5pcXVlbHkgZGVzY3JpYmVkIGluIFxcXG4gICAgICAgICAgICAgICBtZW1vcnkpXCJcbiAgICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKGZhbHNlLCBTb21lIChpLCBhc3NvJywgYXNzbydfaWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIF8gLT5cbiAgICAgICAgICBpbnZhbGlkX2FyZ19ib29sIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgXCJ3cm9uZyBhc3NvY2lhdGlvbiAoc2V2ZXJhbCBpbWFnZXMgZm9yIHRoZSBzYW1lIGtleSlcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcblxuICAgICAgbGV0IGFsbG9jYXRlIGFhIGUgeCB2IGEgZCBmID1cbiAgICAgICAgbGV0IGEsIChfLCBjKSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCBmYWxzZSBhYSBlIHggdiBhIGQgZiBpblxuICAgICAgICBhLCBjXG5cbiAgICAgIGxldCBhbGxvY2F0ZV91bmlxdWVseSBhYSBlIHggdiBhIGQgZiA9XG4gICAgICAgIGxldCBhLCAoXywgYykgPSBhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QgdHJ1ZSBhYSBlIHggdiBhIGQgZiBpblxuICAgICAgICBhLCBjXG5cbiAgICAgIGxldCBhbGxvY2F0ZV9ib29sIGFhIGUgPSBhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QgZmFsc2UgYWEgZVxuXG4gICAgICBsZXQgdW5zYWZlX2FsbG9jYXRlIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgYXNzbyBidWlsZCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIGxldCBmcmVzaCA9IGluX2NvbnN0cnVjdGlvbi5mcmVzaCBpblxuICAgICAgICBsZXQgYXNzb19pZCA9IGJ1aWxkIGZyZXNoIGluXG4gICAgICAgIGxldCBlcnJvciwgaGFzaF90YWJsZSA9XG4gICAgICAgICAgSGFzaC5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgKGFzc28sIGFzc29faWQpIGZyZXNoXG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFzaCA9IHsgaGFzaF90YWJsZTsgZnJlc2ggPSBmcmVzaCArIDEgfSBpblxuICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHsgZGljdGlvbmFyeSB3aXRoIGluX2NvbnN0cnVjdGlvbiA9IGhhc2ggfSBpblxuICAgICAgICBlcnJvciwgKGZyZXNoLCBhc3NvLCBhc3NvX2lkLCBkaWN0aW9uYXJ5KVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXJzIGVycm9yIGYgZGljID1cbiAgICAgICAgbGV0IGRpYycgPSBzdGFiaWxpemUgZGljIGluXG4gICAgICAgIGxldCBnIGtleSBlcnJvciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lICh2YWx1ZSwgYSwgYikgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhIGJcbiAgICAgICAgaW5cbiAgICAgICAgKCogaWYgZGljLmlzX3N0YWJpbGl6ZWRcbiAgICAgICAgICAgdGhlbiopXG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgZyBlcnJvciBkaWMnLnN0YWJpbGl6ZWRcbiAgICAgICgqZWxzZSBIYXNoLmZvbGRcbiAgICAgICAgKGZ1biB2YWx1ZSAoYSxiKSBrZXkgZXJyb3IgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhIGIpXG4gICAgICAgIGRpYy5pbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZSBlcnJvciopXG5cbiAgICAgIGxldCBmb2xkIGYgZGljdGlvbmFyeSA9XG4gICAgICAgIGxldCBpbl9jb25zdHJ1Y3Rpb24gPSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbiBpblxuICAgICAgICBIYXNoLmZvbGQgZiBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuXG4gICAgICBsZXQgbGFzdF9lbnRyeSBfcGFyYW1ldGVycyBlcnJvciBkaWMgPVxuICAgICAgICBlcnJvciwgZGljLmluX2NvbnN0cnVjdGlvbi5mcmVzaCAtIDFcbiAgICBlbmQgOlxuICAgICAgRGljdGlvbmFyeSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIHZhbHVlID0gSGFzaC5rZXkpXG5cbm1vZHVsZSBEaWN0aW9uYXJ5X29mX09yZCA9XG5mdW5jdG9yIChPIDogU2V0TWFwLk9yZGVyZWRUeXBlKSAtPiBEaWN0aW9uYXJ5IChIYXNoLkhhc2hfb2ZfT3JkIChPKSlcbiIsIigqKlxuICAgKiB0aWNrX3N0b3JpZXMubWxcbiAgICpcbiAgICogUHJvZ3Jlc3MgYmFyIChjb21pbmcgZnJvbSBNb2RzLm1sKVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDUvMjAxNlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTcvMDUvMjAxNlxuICAgKiAqXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IHRpY2tfc3RvcmllcyBmIGNvbmYgc2F2ZV9wcm9ncmVzc19iYXIgKGluaXQsIGxhc3QsIGNvdW50ZXIsIG5fc3RvcmllcykgPVxuICBsZXQgKCkgPVxuICAgIGlmIG5vdCBpbml0IHRoZW4gKFxuICAgICAgbGV0IGMgPSByZWYgY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZSBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGYgaW5cbiAgICAgIHdoaWxlICFjID4gMCBkb1xuICAgICAgICBMb2dnZXJzLmZwcmludGYgZiBcIl9cIjtcbiAgICAgICAgYyA6PSAhYyAtIDFcbiAgICAgIGRvbmU7XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgZlxuICAgIClcbiAgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG5fc3RvcmllcyA8PSAwICYmIGNvdW50ZXIgPSAwIHRoZW5cbiAgICAgIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemVcbiAgICBlbHNlIGlmIGNvdW50ZXIgPiBuX3N0b3JpZXMgdGhlblxuICAgICAgMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5jID0gY291bnRlciAqIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemUgLyBuX3N0b3JpZXMgaW5cbiAgICAgIGxldCBubCA9IGxhc3QgKiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NTaXplIC8gbl9zdG9yaWVzIGluXG4gICAgICBuYyAtIG5sXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGF1eCBuID1cbiAgICBpZiBuIDw9IDAgdGhlblxuICAgICAgKClcbiAgICBlbHNlIChcbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBmIFwiJWNcIiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NDaGFyIGluXG4gICAgICBhdXggKG4gLSAxKVxuICAgIClcbiAgaW5cbiAgbGV0ICgpID0gYXV4IG4gaW5cbiAgbGV0ICgpID0gTG9nZ2Vycy5mbHVzaF9sb2dnZXIgZiBpblxuICBsZXQgKCkgPSBpZiBjb3VudGVyID0gbl9zdG9yaWVzIHRoZW4gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGYgaW5cbiAgbGV0IGJhciA9IHRydWUsIGNvdW50ZXIsIGNvdW50ZXIgKyAxLCBuX3N0b3JpZXMgaW5cbiAgbGV0ICgpID0gc2F2ZV9wcm9ncmVzc19iYXIgYmFyIGluXG4gIGJhclxuIiwiKCoqXG4gICAqIGdyYXBoX2Nsb3N1cmUubWxcbiAgICpcbiAgICogQWxnb3JpdGhtcyB0byBjb21wdXRlIHRyYW5zaXRpdmUgY2xvc3VyZSBvZiBvYmVydmFibGVzIGluIHRyYWNlc1xuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDgvMjAxM1xuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTAvMDkvMjAxM1xuICAgKiAqXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIEEgPSBBcnJheVxubW9kdWxlIFMgPSBNb2RzLkludFNldFxubW9kdWxlIE0gPSBNb2RzLkludE1hcFxuXG5sZXQgaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBob24gPSB0cnVlXG5sZXQgY2hlY2tfbW9kZSA9IGZhbHNlXG5cbnR5cGUgYWxnb190eXBlID0gVG9wX2Rvd24gfCBCb3R0b21fdXAgfCBDaGVja1xudHlwZSBvcmRlciA9IEluY3JlYXNpbmdfd2l0aF9sYXN0X2V2ZW50IHwgRGVjcmVhc2luZ193aXRob3V0X2xhc3RfZXZlbnRcblxudHlwZSBjb25maWcgPSB7XG4gIGRvX3RpY2s6IGJvb2w7XG4gIGtlZXBfYWxsX25vZGVzOiBib29sO1xuICBjdXRfdHJhbnNpdGl2ZV9wYXRoOiBib29sO1xuICBzdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHM6IGJvb2w7XG4gIG1heF9pbmRleDogaW50O1xuICBhbGdvOiBhbGdvX3R5cGU7XG59XG5cbmxldCBjb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyID1cbiAge1xuICAgIGRvX3RpY2sgPSB0cnVlO1xuICAgIGtlZXBfYWxsX25vZGVzID0gZmFsc2U7XG4gICAgY3V0X3RyYW5zaXRpdmVfcGF0aCA9IHRydWU7XG4gICAgc3RhdF90cmFuc19jbG9zdXJlX2Zvcl9iaWdfZ3JhcGhzID0gdHJ1ZTtcbiAgICBtYXhfaW5kZXggPSAzMDA7XG4gICAgYWxnbyA9IEJvdHRvbV91cCAoKmlmIGNoZWNrX21vZGUgdGhlbiBDaGVjayBlbHNlIFRvcF9kb3duKik7XG4gIH1cblxubGV0IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXIgPVxuICB7IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgd2l0aCBkb190aWNrID0gZmFsc2UgfVxuXG5sZXQgY29uZmlnX3NtYWxsX2dyYXBoID1cbiAge1xuICAgIGRvX3RpY2sgPSBmYWxzZTtcbiAgICBrZWVwX2FsbF9ub2RlcyA9IHRydWU7XG4gICAgY3V0X3RyYW5zaXRpdmVfcGF0aCA9IGZhbHNlO1xuICAgIHN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBocyA9IHRydWU7XG4gICAgYWxnbyA9IEJvdHRvbV91cDtcbiAgICBtYXhfaW5kZXggPSAzMDA7XG4gIH1cblxubGV0IHN3YXAgZiBhIGIgPSBmIGIgYVxubGV0IGlnbm9yZV9mc3QgZiBfID0gZlxuXG5sZXQgcmVjIGNvbXBhcmVfc3VjYyBwIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgfCBhIDo6IHEgLT5cbiAgICAobWF0Y2ggcSB3aXRoXG4gICAgfCBiIDo6IF8gd2hlbiBwIGEgYiAtPiBjb21wYXJlX3N1Y2MgcCBxXG4gICAgfCBfIC0+IGZhbHNlKVxuXG5sZXQgc3RyaWN0bHlfaW5jcmVhc2luZyA9IGNvbXBhcmVfc3VjYyAoZnVuIChhIDogaW50KSBiIC0+IGEgPCBiKVxubGV0IHN0cmljdGx5X2RlY3JlYXNpbmcgPSBjb21wYXJlX3N1Y2MgKGZ1biAoYSA6IGludCkgYiAtPiBhID4gYilcbmxldCBjb25jYXQgYSA9IExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgYSlcblxubGV0IHByaW50X2xpc3QgZiBsID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXUAuXCIgKFBwLmxpc3QgUHAuY29tbWEgRm9ybWF0LnBwX3ByaW50X3N0cmluZykgbFxuXG5sZXQgY2hlY2sgZm9ybSBwIGYgc3RyaW5nIGEgYiA9XG4gIG1hdGNoIHAgYSwgcCBiIHdpdGhcbiAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYSBpblxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSBiIGluXG4gICAgZmFpbHdpdGggKHN0cmluZyBeIFwiX2FyZzFfMlwiKVxuICB8IHRydWUsIGZhbHNlIC0+XG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGIgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMlwiKVxuICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGEgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMVwiKVxuICB8IHRydWUsIHRydWUgLT5cbiAgICBsZXQgcmVwID0gZiBhIGIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gcmVwIGluXG4gICAgaWYgcCByZXAgdGhlblxuICAgICAgcmVwXG4gICAgZWxzZSAoXG4gICAgICBwcmludF9saXN0IGZvcm0gYTtcbiAgICAgIHByaW50X2xpc3QgZm9ybSBiO1xuICAgICAgcHJpbnRfbGlzdCBmb3JtIHJlcDtcbiAgICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9vdXRwdXRcIilcbiAgICApXG5cbmxldCBpc19zdHJpY3Rfc3VibGlzdCBwIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgW10sIF8gOjogXyAtPiB0cnVlXG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IHQnXG4gICAgfCBoIDo6IF8sIGgnIDo6IF8gd2hlbiBwIGggaCcgLT4gZmFsc2VcbiAgICB8IF8sIF8gOjogdCcgLT4gYXV4IGEgdCdcbiAgaW5cbiAgYXV4IGEgYlxuXG5sZXQgaW5zZXJ0X2VsdCBwIGUgPSBMaXN0X3V0aWwubWVyZ2VfdW5pcSBwIFsgZSBdXG5cbmxldCBkaWZmX2xpc3QgcCBhIGIgPVxuICBsZXQgcmVjIGF1eCBhIGIgYWNjdSA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBiLCBbXSAtPiBMaXN0LnJldiAoTGlzdC5yZXZfYXBwZW5kIGIgYWNjdSlcbiAgICB8IFtdLCBfIDo6IF8gLT4gTGlzdC5yZXYgYWNjdVxuICAgIHwgaCA6OiB0LCBoJyA6OiB0JyB3aGVuIGggPSBoJyAtPiBhdXggdCB0JyBhY2N1XG4gICAgfCBoIDo6IHQsIGgnIDo6IF8gd2hlbiBwIGggaCcgLT4gYXV4IHQgYiAoaCA6OiBhY2N1KVxuICAgIHwgXywgXyA6OiB0JyAtPiBhdXggYSB0JyBhY2N1XG4gIGluXG4gIGF1eCBhIGIgW11cblxubGV0IGNvbXBhcmVfYm9vbCBhIGIgPSBjb21wYXJlIGEgYiA8IDBcbmxldCBkaWZmX2xpc3RfZGVjcmVhc2luZyA9IGRpZmZfbGlzdCAoc3dhcCBjb21wYXJlX2Jvb2wpXG5sZXQgbWVyZ2VfbGlzdF9kZWNyZWFzaW5nID0gTGlzdF91dGlsLm1lcmdlX3VuaXEgKGZ1biB4IHkgLT4gU3RkbGliLmNvbXBhcmUgeSB4KVxuXG5sZXQgY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50IGNvbmZpZ1xuICAgIHByZWMgaXNfb2JzIGYgYSA9XG4gIGxldCBlcnJfbG9nZ2VyID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlciBpblxuICBsZXQgaXNfb2JzID1cbiAgICBpZiBjb25maWcua2VlcF9hbGxfbm9kZXMgdGhlblxuICAgICAgZnVuIF8gLT5cbiAgICB0cnVlXG4gICAgZWxzZVxuICAgICAgaXNfb2JzXG4gIGluXG4gIGxldCBtYXhfaW5kZXggPSBNLmZvbGQgKGZ1biBpIF8gLT4gbWF4IGkpIHByZWMgMCBpblxuICBsZXQgKCkgPVxuICAgIGlmIGNvbmZpZy5zdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHMgJiYgY29uZmlnLm1heF9pbmRleCA+IDMwMCB0aGVuIChcbiAgICAgIGxldCBuX2VkZ2VzID0gTS5mb2xkIChpZ25vcmVfZnN0IChTLmZvbGQgKGlnbm9yZV9mc3Qgc3VjYykpKSBwcmVjIDAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgZXJyX2xvZ2dlciBcIlxcdFxcdFRyYW5zaXRpdmUgY2xvc3VyZSAoJWkgbm9kZXMsICVpIGVkZ2VzKVwiXG4gICAgICAgICAgbWF4X2luZGV4IG5fZWRnZXNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZXJyX2xvZ2dlciBpblxuICAgICAgKClcbiAgICApXG4gIGluXG4gIGxldCBkb190aWNrLCB0aWNrLCBjbG9zZV90aWNrID1cbiAgICBpZiBtYXhfaW5kZXggPiAzMDAgJiYgY29uZmlnLmRvX3RpY2sgdGhlbiAoXG4gICAgICBsZXQgdGljayA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbWF4X2luZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBmID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgbGV0IGNsb3NlICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGYsIHRpY2ssIGNsb3NlXG4gICAgKSBlbHNlXG4gICAgICAoZnVuIHggLT4geCksIChmYWxzZSwgMCwgMCwgMCksIGZ1biAoKSAtPiAoKVxuICBpblxuICBsZXQgc19wcmVkX3N0YXIgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBjbGVhbiwgX21heF9zdWNjID1cbiAgICBsZXQgbWF4X3N1Y2MgPSBBLmluaXQgKG1heF9pbmRleCArIDEpIChmdW4gaSAtPiBpKSBpblxuICAgIGxldCBfID1cbiAgICAgIE0uaXRlclxuICAgICAgICAoZnVuIHN1Y2MgLT5cbiAgICAgICAgICBTLml0ZXIgKGZ1biBwcmVkIC0+XG4gICAgICAgICAgICAgIEEuc2V0IG1heF9zdWNjIHByZWQgKG1heCBzdWNjIChBLmdldCBtYXhfc3VjYyBwcmVkKSkpKVxuICAgICAgICBwcmVjXG4gICAgaW5cbiAgICBsZXQgaXNfbGFzdF9zdWNjX29mID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICAgIGxldCBhZGQgbm9kZSBtYXhfc3VjYyA9XG4gICAgICBsZXQgb2xkX2wgPSBBLmdldCBpc19sYXN0X3N1Y2Nfb2YgbWF4X3N1Y2MgaW5cbiAgICAgIGxldCBsJyA9IG5vZGUgOjogb2xkX2wgaW5cbiAgICAgIEEuc2V0IGlzX2xhc3Rfc3VjY19vZiBtYXhfc3VjYyBsJ1xuICAgIGluXG4gICAgbGV0IF8gPSBBLml0ZXJpIGFkZCBtYXhfc3VjYyBpblxuICAgIGxldCBfID0gQS5zZXQgaXNfbGFzdF9zdWNjX29mIDAgW10gaW5cbiAgICBsZXQgZ2Nfd2hlbl92aXNpdCBub2RlID1cbiAgICAgIExpc3QuaXRlciAoZnVuIGsgLT4gQS5zZXQgc19wcmVkX3N0YXIgayBbXSkgKEEuZ2V0IGlzX2xhc3Rfc3VjY19vZiBub2RlKVxuICAgIGluXG4gICAgZ2Nfd2hlbl92aXNpdCwgZnVuIGkgLT4gQS5nZXQgbWF4X3N1Y2MgaVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICAgIHwgU29tZSBlIC0+XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3IgZSBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIE0uZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgKGZ1biBzdWNjIHNfcHJlZCAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyLCBhKSAtPlxuICAgICAgICBsZXQgcmVjIGF1eCAobCA6IGludCBsaXN0KSAoYWNjdSA6IGludCBsaXN0KSA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhY2N1XG4gICAgICAgICAgfCBwcmVkIDo6IHQgLT5cbiAgICAgICAgICAgIGxldCBuZXdfbCA9IEEuZ2V0IHNfcHJlZF9zdGFyIHByZWQgaW5cbiAgICAgICAgICAgIGxldCBkaWZmID1cbiAgICAgICAgICAgICAgaWYgY29uZmlnLmN1dF90cmFuc2l0aXZlX3BhdGggdGhlblxuICAgICAgICAgICAgICAgIGRpZmZfbGlzdF9kZWNyZWFzaW5nIHQgbmV3X2xcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhdXggZGlmZiAobWVyZ2VfbGlzdF9kZWNyZWFzaW5nIChwcmVkIDo6IG5ld19sKSBhY2N1KVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJlZF9zdGFyID1cbiAgICAgICAgICBsZXQgbF9wcmVkID0gUy5mb2xkIChmdW4gaSBqIC0+IGkgOjogaikgc19wcmVkIFtdIGluXG4gICAgICAgICAgbGV0IHMgPSBBLmdldCBzX3ByZWRfc3RhciBzdWNjIGluXG4gICAgICAgICAgYXV4IGxfcHJlZCBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID0gQS5zZXQgc19wcmVkX3N0YXIgc3VjYyBwcmVkX3N0YXIgaW5cbiAgICAgICAgbGV0IF8gPSBjbGVhbiBzdWNjIGluXG4gICAgICAgIGxldCB0aWNrID0gZG9fdGljayB0aWNrIGluXG4gICAgICAgIGlmIGlzX29icyBzdWNjIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGEgPVxuICAgICAgICAgICAgZiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdWNjIHByZWRfc3RhciBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgICAgICAgICAgKGZ1biBhIC0+IFN0b3Auc3VjY2VzcyAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyICsgMSwgYSkpXG4gICAgICAgICAgICAoZnVuIGIgLT4gU3RvcC5zdG9wIChlcnJvciwgbG9nX2luZm8sIGIpKVxuICAgICAgICAgICAgYVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBTdG9wLnN1Y2Nlc3MgKHRpY2ssIGVycm9yLCBsb2dfaW5mbywgY291bnRlciwgYSkpXG4gICAgICBwcmVjXG4gICAgICAodGljaywgZXJyb3IsIGxvZ19pbmZvLCAxLCBhKVxuICBpblxuICBsZXQgXyA9IGNsb3NlX3RpY2sgKCkgaW5cbiAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAoZnVuIChfLCBlcnJvciwgbG9nX2luZm8sIF8sIGEpIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3IgZSBOb25lIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgU3RvcC5zdWNjZXNzIChlcnJvciwgbG9nX2luZm8sIGEpKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYikgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBTdG9wLnN0b3AgKGVycm9yLCBsb2dfaW5mbywgYikpXG4gICAgb3V0cHV0XG5cbmxldCBjbG9zdXJlX2JvdHRvbV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWNcbiAgICBpc19vYnMgPVxuICBsZXQgbWF4X2luZGV4ID0gTS5mb2xkIChmdW4gaSBfIC0+IG1heCBpKSBwcmVjIDAgaW5cbiAgbGV0IHNfcHJlZF9zdGFyID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgZiBfcCBfaCBjIGUgaSBzIGEgPVxuICAgIGxldCBfID0gQS5zZXQgYSBpIHMgaW5cbiAgICBlLCBjLCBTdG9wLnN1Y2Nlc3MgYVxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0XG4gICAgICBjb25maWcgcHJlYyBpc19vYnMgZiBzX3ByZWRfc3RhclxuICBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgZ3JhcGgpIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIChncmFwaCwgRGVjcmVhc2luZ193aXRob3V0X2xhc3RfZXZlbnQpKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgXykgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKHNfcHJlZF9zdGFyLCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCkpXG4gICAgb3V0cHV0XG5cbmxldCBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBfZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgaXNfb2JzIGRlbHRhID1cbiAgbGV0IGVycl9sb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gIGxldCBpc19vYnMgPVxuICAgIGlmIGNvbmZpZy5rZWVwX2FsbF9ub2RlcyB0aGVuXG4gICAgICBmdW4gXyAtPlxuICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBpc19vYnNcbiAgaW5cbiAgbGV0IG1heF9pbmRleCA9IE0uZm9sZCAoZnVuIGkgXyAtPiBtYXggaSkgcHJlYyAwIGluXG4gIGxldCBwcmVjID0gTS5mb2xkIChmdW4gaSBzX3ByZWQgbCAtPiAoaSwgc19wcmVkKSA6OiBsKSBwcmVjIFtdIGluXG4gIGxldCBjcmVhdGVfdGFpbnRzIGkgPVxuICAgIGxldCByZWMgYXV4IGRlbHRhIG91dHB1dCA9XG4gICAgICBpZiBkZWx0YSA9IDAgdGhlblxuICAgICAgICBvdXRwdXRcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4IChkZWx0YSAtIDEpIChTLmVtcHR5IDo6IG91dHB1dClcbiAgICBpblxuICAgIGF1eCBkZWx0YSBbIFMuc2luZ2xldG9uIGkgXVxuICBpblxuICBsZXQgc2hpZnRfdGFpbnRzIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgdCA6OiB0JyA6OiBxIC0+IFMudW5pb24gdCB0JyA6OiBxXG4gICAgfCBfIC0+IGxcbiAgaW5cbiAgbGV0IHJlYyBtZXJnZV90YWludHMgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBfLCBbXSAtPiBsMVxuICAgIHwgW10sIF8gLT4gbDJcbiAgICB8IHQgOjogcSwgdCcgOjogcScgLT4gUy51bmlvbiB0IHQnIDo6IG1lcmdlX3RhaW50cyBxIHEnXG4gIGluXG4gIGxldCBzX3ByZWRfc3RhciA9IEEubWFrZSAobWF4X2luZGV4ICsgMSkgW10gaW5cbiAgbGV0IHRhaW50IGkgdGFpbnRzID1cbiAgICBtYXRjaCB0YWludHMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHQgOjogX3EgLT5cbiAgICAgIFMuaXRlclxuICAgICAgICAoZnVuIHRhaW50IC0+IEEuc2V0IHNfcHJlZF9zdGFyIHRhaW50IChpIDo6IEEuZ2V0IHNfcHJlZF9zdGFyIHRhaW50KSlcbiAgICAgICAgdFxuICBpblxuICBsZXQgZG9fdGljaywgdGljaywgY2xvc2VfdGljayA9XG4gICAgaWYgbWF4X2luZGV4ID4gMzAwICYmIGNvbmZpZy5kb190aWNrIHRoZW4gKFxuICAgICAgbGV0IHRpY2sgPVxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGVycl9sb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICAoZmFsc2UsIDAsIDAsIG1heF9pbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgZiA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgIGxldCBjbG9zZSAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICBmLCB0aWNrLCBjbG9zZVxuICAgICkgZWxzZVxuICAgICAgKGZ1biB4IC0+IHgpLCAoZmFsc2UsIDAsIDAsIDApLCBmdW4gKCkgLT4gKClcbiAgaW5cbiAgbGV0IHRhaW50aW5nID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gdGljayAoaSwgc19wcmVkKSAtPlxuICAgICAgICBsZXQgbmV3X3RhaW50ID1cbiAgICAgICAgICBpZiBpc19vYnMgaSB0aGVuXG4gICAgICAgICAgICBjcmVhdGVfdGFpbnRzIGlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGFpbnRzID0gbWVyZ2VfdGFpbnRzIG5ld190YWludCAoQS5nZXQgdGFpbnRpbmcgaSkgaW5cbiAgICAgICAgbGV0ICgpID0gdGFpbnQgaSB0YWludHMgaW5cbiAgICAgICAgbGV0IHNoaWZ0ZWRfdGFpbnRzID0gc2hpZnRfdGFpbnRzIHRhaW50cyBpblxuICAgICAgICBsZXQgdGFpbnQgeCA9XG4gICAgICAgICAgQS5zZXQgdGFpbnRpbmcgeCAobWVyZ2VfdGFpbnRzIHNoaWZ0ZWRfdGFpbnRzIChBLmdldCB0YWludGluZyB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gUy5pdGVyIHRhaW50IHNfcHJlZCBpblxuICAgICAgICBsZXQgKCkgPSBBLnNldCB0YWludGluZyBpIFtdIGluXG4gICAgICAgIGRvX3RpY2sgdGljaylcbiAgICAgIHRpY2sgcHJlY1xuICBpblxuICBsZXQgKCkgPSBjbG9zZV90aWNrICgpIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKHNfcHJlZF9zdGFyLCBJbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudClcblxubGV0IGdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50IGkgKG0sIG1vZGUpID1cbiAgbWF0Y2ggbW9kZSB3aXRoXG4gIHwgSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgLT4gbS4oaSlcbiAgfCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCAtPlxuICAgIChtYXRjaCBtLihpKSB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgbCAtPiBMaXN0LnJldiAoaSA6OiBsKSlcblxubGV0IGNsb3N1cmVfY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29ic1xuICAgID1cbiAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYSwgYScpID1cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzIDBcbiAgaW5cbiAgbGV0IHQnID0gU3lzLnRpbWUgKCkgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGIsIGInKSA9XG4gICAgY2xvc3VyZV9ib3R0b21fdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0XG4gICAgICB7IGNvbmZpZyB3aXRoIGRvX3RpY2sgPSBmYWxzZSB9XG4gICAgICBwcmVjIGlzX29ic1xuICBpblxuICBsZXQgdCcnID0gU3lzLnRpbWUgKCkgaW5cbiAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJORVc6ICVmIE9MRDogJWYgXFxuXCIgKHQnIC0uIHQpICh0JycgLS4gdCcpIGluXG4gIGxldCBfID1cbiAgICBBLml0ZXJpXG4gICAgICAoZnVuIGkgX3MgLT5cbiAgICAgICAgbGV0IHMgPSBnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudCBpIChhLCBhJykgaW5cbiAgICAgICAgbGV0IHMnID0gZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnQgaSAoYiwgYicpIGluXG4gICAgICAgIGlmIHMgPSBzJyB0aGVuXG4gICAgICAgICAgKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJESUZGRVIgJWlcXG5cIiBpIGluXG4gICAgICAgICAgbGV0IF8gPSBMaXN0Lml0ZXIgKFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVpLCBcIikgcyBpblxuICAgICAgICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW5cbiAgICAgICAgICBsZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksIFwiKSBzJyBpblxuICAgICAgICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApKVxuICAgICAgYVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIChhLCBhJylcblxubGV0IGNsb3N1cmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29icyA9XG4gIG1hdGNoIGNvbmZpZy5hbGdvIHdpdGhcbiAgfCBDaGVjayAtPlxuICAgIGNsb3N1cmVfY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29ic1xuICB8IEJvdHRvbV91cCAtPlxuICAgIGNsb3N1cmVfYm90dG9tX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzXG4gIHwgVG9wX2Rvd24gLT5cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzIDBcblxubGV0IHJlZHVjdGlvbl90b3BfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVjID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5HcmFwaF9yZWR1Y3Rpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAocHJlY19zdGFyLCBfKSA9XG4gICAgY2xvc3VyZV90b3BfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuVHJhbnNpdGl2ZV9jbG9zdXJlIGNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcbiAgICAgIHByZWNcbiAgICAgIChmdW4gXyAtPiB0cnVlKVxuICAgICAgMlxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBNLmZvbGRcbiAgICAgIChmdW4gZWlkIG5laWdoIG91dCAtPlxuICAgICAgICBsZXQgdG9fcmVtb3ZlID0gQS5nZXQgcHJlY19zdGFyIGVpZCBpblxuICAgICAgICBsZXQgcyA9IFMuZm9sZCAoZnVuIGkgbCAtPiBpIDo6IGwpIG5laWdoIFtdIGluXG4gICAgICAgIGxldCBzID0gTGlzdC5yZXYgcyBpblxuICAgICAgICBsZXQgcmVjIGF1eCBsMSBsMiBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgICAgfCBfLCBbXSAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBzZXQgaSAtPiBTLmFkZCBpIHNldCkgb3V0cHV0IGwxXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHF1aXRlIGFubm95aW5nLCB3aHkgcHJlYyBpcyBub3QgZGVzY3JpYmVkIHdpdGggb3JkZXJlZCBsaXN0ICopXG4gICAgICAgICAgfCBbXSwgXyAtPiBvdXRwdXRcbiAgICAgICAgICB8IGggOjogcSwgaCcgOjogcScgLT5cbiAgICAgICAgICAgIGxldCBjbXAgPSBjb21wYXJlIGggaCcgaW5cbiAgICAgICAgICAgIGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICBhdXggcSBsMiAoUy5hZGQgaCBvdXRwdXQpXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgICAgICBhdXggcSBxJyBvdXRwdXRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IChoIDo6IHEpIHEnIG91dHB1dFxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IGF1eCBzIHRvX3JlbW92ZSBTLmVtcHR5IGluXG4gICAgICAgIE0uYWRkIGVpZCBzIG91dClcbiAgICAgIHByZWMgcHJlY1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuR3JhcGhfcmVkdWN0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubGV0IHJlZHVjdGlvbiA9IHJlZHVjdGlvbl90b3BfZG93blxuIiwidHlwZSBxdWFya19saXN0cyA9IHtcbiAgc2l0ZV90ZXN0ZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG4gIHNpdGVfbW9kaWZpZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG4gIGludGVybmFsX3N0YXRlX3Rlc3RlZDogKGludCAqIGludCkgbGlzdDtcbiAgaW50ZXJuYWxfc3RhdGVfbW9kaWZpZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG59XG5cbnR5cGUgZXZlbnRfa2luZCA9IE9CUyBvZiBzdHJpbmcgfCBFVkVOVCBvZiBUcmFjZS5ldmVudF9raW5kXG5cbmxldCBhdG9tX3Rlc3RlZCA9IDFcbmxldCBhdG9tX21vZGlmaWVkID0gMlxubGV0IGF0b21fdGVzdGVkbW9kaWZpZWQgPSAzXG5cbnR5cGUgYXRvbSA9IHtcbiAgY2F1c2FsX2ltcGFjdDogaW50OyAoKigxKSB0ZXN0ZWQgKDIpIG1vZGlmaWVkLCAoMykgdGVzdGVkICsgbW9kaWZpZWQqKVxuICBlaWQ6IGludDsgKCpldmVudCBpZGVudGlmaWVyKilcbiAga2luZDogZXZlbnRfa2luZDsgKCpvYnNlcnZhdGlvbjogc3RyaW5nIGxpc3QqKVxufVxuXG50eXBlIGF0dHJpYnV0ZSA9IGF0b20gbGlzdCAoKnZlcnRpY2FsIHNlcXVlbmNlIG9mIGF0b21zKilcblxudHlwZSBncmlkID0ge1xuICBmbG93OiAoaW50ICogaW50ICogaW50LCBhdHRyaWJ1dGUpIEhhc2h0YmwudDtcbiAgKCoobl9pLHNfaSxxX2kpIC0+IGF0dF9pIHdpdGggbl9pOiBub2RlX2lkLCBzX2k6IHNpdGVfaWQsIHFfaTpcbiAgICBsaW5rICgxKSBvciBpbnRlcm5hbCBzdGF0ZSAoMCkgKilcbiAgcGlkX3RvX2luaXQ6IChpbnQgKiBpbnQgKiBpbnQsIGludCkgSGFzaHRibC50O1xuICBvYnM6IGludCBsaXN0O1xuICBpbml0X3RibDogKGludCwgTW9kcy5JbnRTZXQudCkgSGFzaHRibC50OyAoKmRlY3JlYXNpbmcqKVxuICBpbml0X3RvX2VpZG1heDogKGludCwgaW50KSBIYXNodGJsLnQ7XG59XG5cbnR5cGUgY29uZmlnID0ge1xuICBldmVudHNfa2luZDogZXZlbnRfa2luZCBNb2RzLkludE1hcC50O1xuICBwcmVjXzE6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudDtcbiAgY29uZmxpY3Q6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudDtcbn1cblxudHlwZSBlbnJpY2hlZF9ncmlkID0ge1xuICBjb25maWc6IGNvbmZpZztcbiAgZGVwdGg6IGludDtcbiAgcHJlY19zdGFyOiBpbnQgbGlzdCBhcnJheSAqIEdyYXBoX2Nsb3N1cmUub3JkZXI7ICgqZGVjcmVhc2luZyopXG4gIGRlcHRoX29mX2V2ZW50OiBpbnQgTW9kcy5JbnRNYXAudDtcbiAgc2l6ZTogaW50O1xufVxuXG50eXBlIGZvcm1hdENmbG93ID0gRG90IHwgSHRtbCB8IEpzb25cblxubGV0IGVtcHR5X2NvbmZpZyA9XG4gIHtcbiAgICBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIGNvbmZsaWN0ID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgcHJlY18xID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gIH1cblxubGV0IHByaW50X2V2ZW50X2tpbmQgP2VudiBmID0gZnVuY3Rpb25cbiAgfCBFVkVOVCBlIC0+IFRyYWNlLnByaW50X2V2ZW50X2tpbmQgP2VudiBmIGVcbiAgfCBPQlMgaSAtPlxuICAgIChtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiT0JTKCVzKVwiIGlcbiAgICB8IFNvbWUgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgaSlcblxubGV0IGRlYnVnX3ByaW50X2NhdXNhbCBmIGkgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgaSA9IGF0b21fdGVzdGVkIHRoZW5cbiAgICAgICBcInRlc3RlZFwiXG4gICAgIGVsc2UgaWYgaSA9IGF0b21fbW9kaWZpZWQgdGhlblxuICAgICAgIFwibW9kaWZpZWRcIlxuICAgICBlbHNlIGlmIGkgPSBhdG9tX3Rlc3RlZCBsb3IgYXRvbV9tb2RpZmllZCB0aGVuXG4gICAgICAgXCJ0ZXN0ZWQmbW9kaWZpZWRcIlxuICAgICBlbHNlXG4gICAgICAgXCJDQVVTQUwgSU1QQUNUIFVOREVGSU5FRFwiKVxuXG5sZXQgZGVidWdfcHJpbnRfYXRvbSBmIGEgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwieyMlaTogJWEgJWF9XCIgYS5laWQgZGVidWdfcHJpbnRfY2F1c2FsIGEuY2F1c2FsX2ltcGFjdFxuICAgIChwcmludF9ldmVudF9raW5kID9lbnY6Tm9uZSlcbiAgICBhLmtpbmRcblxubGV0IGRlYnVnX3ByaW50X2dyaWQgZiBnID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+RmxvdzpALFwiIGluXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5pdGVyXG4gICAgICAoZnVuIChub2RlX2lkLCBzaXRlX2lkLCBxKSBsIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzwyPiVpLiVpJXM6QCwlYUBdQCxcIiBub2RlX2lkIHNpdGVfaWRcbiAgICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAgIFwiflwiXG4gICAgICAgICAgIGVsc2UgaWYgcSA9IDEgdGhlblxuICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiVU5ERUZJTkVEXCIpXG4gICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgZGVidWdfcHJpbnRfYXRvbSlcbiAgICAgICAgICBsKVxuICAgICAgZy5mbG93XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAuXCJcblxubGV0IGVtcHR5X2dyaWQgKCkgPVxuICB7XG4gICAgZmxvdyA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBwaWRfdG9faW5pdCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBvYnMgPSBbXTtcbiAgICBpbml0X3RibCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBpbml0X3RvX2VpZG1heCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgfVxuXG5sZXQgYnVpbGRfc3VicyBsID1cbiAgc25kXG4gICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biAobiwgbWFwKSBhIC0+IHN1Y2MgbiwgTW9kcy5JbnRNYXAuYWRkIGEgbiBtYXApXG4gICAgICAgKDEsIE1vZHMuSW50TWFwLmVtcHR5KSBsKVxuXG5sZXQgc3VibWFwIHN1YnMgbCBtIGRlZmF1bHQgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gbScgYSAtPlxuICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBzdWJzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgU29tZSBuZXdfYSAtPlxuICAgICAgICBNb2RzLkludE1hcC5hZGQgbmV3X2FcbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAobWF0Y2ggZGVmYXVsdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICB8IFNvbWUgYSAtPiBhKSlcbiAgICAgICAgICBtJylcbiAgICBNb2RzLkludE1hcC5lbXB0eSBsXG5cbmxldCBhZGRfaW5pdF9waWQgZWlkIHBpZCBncmlkID1cbiAgbGV0IGVpZF9pbml0ID0gSGFzaHRibC5maW5kIGdyaWQucGlkX3RvX2luaXQgcGlkIGluXG4gIGxldCBvbGQgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQgZ3JpZC5pbml0X3RibCBlaWQgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRTZXQuZW1wdHlcbiAgaW5cbiAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGdyaWQuaW5pdF90YmwgZWlkIChNb2RzLkludFNldC5hZGQgZWlkX2luaXQgb2xkKSBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgZ3JpZC5pbml0X3RvX2VpZG1heCBlaWRfaW5pdCBlaWQgaW5cbiAgZ3JpZFxuXG5sZXQgX3N1YnNldCBzdWJzIGwgcyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBzJyBhIC0+XG4gICAgICBpZiBNb2RzLkludFNldC5tZW0gYSBzIHRoZW5cbiAgICAgICAgTW9kcy5JbnRTZXQuYWRkXG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGEgc3VicyB3aXRoXG4gICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgcydcbiAgICAgIGVsc2VcbiAgICAgICAgcycpXG4gICAgTW9kcy5JbnRTZXQuZW1wdHkgbFxuXG5sZXQgc3ViY29uZmlnX3dpdGhfc3VicyBzdWJzIGNvbmZpZyBsID1cbiAge1xuICAgIGV2ZW50c19raW5kID0gc3VibWFwIHN1YnMgbCBjb25maWcuZXZlbnRzX2tpbmQgTm9uZTtcbiAgICBwcmVjXzEgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5wcmVjXzEgKFNvbWUgTW9kcy5JbnRTZXQuZW1wdHkpO1xuICAgIGNvbmZsaWN0ID0gc3VibWFwIHN1YnMgbCBjb25maWcuY29uZmxpY3QgKFNvbWUgTW9kcy5JbnRTZXQuZW1wdHkpO1xuICB9XG5cbmxldCBzdWJlbnJpY2hlZF9ncmlkX3dpdGhfc3VicyBzdWJzIGdyaWQgbCA9XG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IHN1Ym1hcCBzdWJzIGwgZ3JpZC5kZXB0aF9vZl9ldmVudCAoU29tZSAwKSBpblxuICBsZXQgZGVwdGggPSBNb2RzLkludE1hcC5mb2xkIChmdW4gXyAtPiBtYXgpIGRlcHRoX29mX2V2ZW50IDAgaW5cbiAge1xuICAgIHByZWNfc3RhciA9IGdyaWQucHJlY19zdGFyO1xuICAgIGNvbmZpZyA9IHN1YmNvbmZpZ193aXRoX3N1YnMgc3VicyBncmlkLmNvbmZpZyBsO1xuICAgIGRlcHRoX29mX2V2ZW50O1xuICAgIGRlcHRoO1xuICAgIHNpemUgPSBMaXN0Lmxlbmd0aCBsO1xuICB9XG5cbmxldCBfc3ViY29uZmlnIGNvbmZpZyBsID0gc3ViY29uZmlnX3dpdGhfc3VicyAoYnVpbGRfc3VicyBsKSBjb25maWcgbFxubGV0IF9zdWJlbnJpY2hlZF9ncmlkIGdyaWQgbCA9IHN1YmVucmljaGVkX2dyaWRfd2l0aF9zdWJzIChidWlsZF9zdWJzIGwpIGdyaWQgbFxubGV0IGFkZF9vYnNfZWlkIGVpZCBncmlkID0geyBncmlkIHdpdGggb2JzID0gZWlkIDo6IGdyaWQub2JzIH1cblxubGV0IGdyaWRfZmluZCAobm9kZV9pZCwgc2l0ZV9pZCwgcXVhcmspIGdyaWQgPVxuICBIYXNodGJsLmZpbmQgZ3JpZC5mbG93IChub2RlX2lkLCBzaXRlX2lkLCBxdWFyaylcblxubGV0IF9pc19lbXB0eV9ncmlkIGdyaWQgPSBIYXNodGJsLmxlbmd0aCBncmlkLmZsb3cgPSAwXG5cbmxldCBncmlkX2FkZCBxdWFyayBlaWQgKGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSkgZ3JpZCA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChIYXNodGJsLm1lbSBncmlkLmZsb3cgcXVhcmspIHRoZW5cbiAgICAgIEhhc2h0YmwuYWRkIGdyaWQucGlkX3RvX2luaXQgcXVhcmsgZWlkXG4gIGluXG4gIEhhc2h0YmwucmVwbGFjZSBncmlkLmZsb3cgcXVhcmsgYXR0cmlidXRlO1xuICBncmlkXG5cbmxldCBfbGFzdF9ldmVudCBhdHRyaWJ1dGUgPVxuICBtYXRjaCBhdHRyaWJ1dGUgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhIDo6IF8gLT4gU29tZSBhLmVpZFxuXG4oKmFkZHMgYXRvbSBhIHRvIGF0dHJpYnV0ZSBhdHQuXG4gIENvbGxhcHNlcyBsYXN0IGF0b20gaWYgaWYgYmVhcnMgdGhlIHNhbWUgaWQgYXMgYSAtLWluIHRoZSBjYXNlIG9mIGEgbm9uIGF0b21pYyBhY3Rpb24qKVxubGV0IHB1c2ggKGEgOiBhdG9tKSAoYXR0IDogYXRvbSBsaXN0KSA9XG4gIG1hdGNoIGF0dCB3aXRoXG4gIHwgW10gLT4gWyBhIF1cbiAgfCBhJyA6OiBhdHQnIC0+XG4gICAgaWYgYScuZWlkID0gYS5laWQgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKGEnLmtpbmQgPSBhLmtpbmQpIGluXG4gICAgICB7IGEnIHdpdGggY2F1c2FsX2ltcGFjdCA9IGEuY2F1c2FsX2ltcGFjdCBsb3IgYScuY2F1c2FsX2ltcGFjdCB9IDo6IGF0dCdcbiAgICApIGVsc2VcbiAgICAgIGEgOjogYXR0XG5cbigqKnNpZGVfZWZmZWN0IEludDJTZXQudDogcGFpcnMgKGFnZW50cyxwb3J0cykgdGhhdCBoYXZlIGJlZW4gZnJlZWQgYXMgYSBzaWRlIGVmZmVjdCAtLXZpYSBhIERFTCBvciBhIEZSRUUgYWN0aW9uKilcbigqTkIgbm8gaW50ZXJuYWwgc3RhdGUgbW9kaWYgYXMgc2lkZSBlZmZlY3QqKVxuXG4oKmxldCBpbXBhY3QgaXNfbGluayBjID1cbiAgaWYgaXNfbGluayB0aGVuXG4gICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfbGlua19tb2RpZiBjIHRoZW5cbiAgICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2xpbmtfdGVzdGVkIGMgdGhlbiBhdG9tX3Rlc3RlZG1vZGlmaWVkIGVsc2UgYXRvbV9tb2RpZmllZFxuICAgIGVsc2UgYXRvbV90ZXN0ZWRcbiAgZWxzZSAoKmludGVybmFsIHN0YXRlKilcbiAgICBpZiBQcmltaXRpdmVzLkNhdXNhbGl0eS5pc19pbnRlcm5hbF9tb2RpZiBjIHRoZW5cbiAgICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2ludGVybmFsX3Rlc3RlZCBjIHRoZW4gYXRvbV90ZXN0ZWRtb2RpZmllZCBlbHNlIGF0b21fbW9kaWZpZWRcbiAgICBlbHNlIGF0b21fdGVzdGVkXG4qKVxubGV0IGFkZCAoKG5vZGVfaWQsIF8pLCBzaXRlX2lkKSBpc19saW5rIHZhIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgPVxuICBsZXQgcSA9XG4gICAgaWYgaXNfbGluayB0aGVuXG4gICAgICBhdG9tX3Rlc3RlZFxuICAgIGVsc2VcbiAgICAgIDBcbiAgaW5cbiAgbGV0IGF0dCA9IHRyeSBncmlkX2ZpbmQgKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGdyaWQgd2l0aCBOb3RfZm91bmQgLT4gW10gaW5cbiAgbGV0IGF0dCA9XG4gICAgcHVzaFxuICAgICAgeyBjYXVzYWxfaW1wYWN0ID0gdmE7IGVpZCA9IGV2ZW50X251bWJlcjsga2luZCAoKjsgb2JzZXJ2YXRpb24gPSBvYnMqKSB9XG4gICAgICBhdHRcbiAgaW5cbiAgbGV0IGdyaWQgPSBncmlkX2FkZCAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZXZlbnRfbnVtYmVyIGF0dCBncmlkIGluXG4gIGFkZF9pbml0X3BpZCBldmVudF9udW1iZXIgKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGdyaWRcblxubGV0IGFkZF9hY3Rpb25zIGVudiBncmlkIGV2ZW50X251bWJlciBraW5kIGFjdGlvbnMgPVxuICBsZXQgcmVjIGF1eCBncmlkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGdyaWRcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlIGZhbHNlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzaXRlMSwgc2l0ZTIpIDo6IHEgLT5cbiAgICAgIGxldCBncmlkJyA9IGFkZCBzaXRlMiB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCBpblxuICAgICAgYXV4IChhZGQgc2l0ZTEgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQnIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHNpdGUxLCBfKSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlMSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHNpdGUgOjogcSAtPlxuICAgICAgYXV4IChhZGQgc2l0ZSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgKCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChfLCBuYSkgYXMgYWcpLCBfKVxuICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKF8sIG5hKSBhcyBhZykgKVxuICAgICAgOjogcSAtPlxuICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgICAgbGV0IGFnX2ludGYgPSBTaWduYXR1cmUuZ2V0IHNpZ3MgbmEgaW5cbiAgICAgIGxldCBncmlkID0gYWRkIChhZywgLTEpIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICBsZXQgZ3JpZCA9XG4gICAgICAgIFNpZ25hdHVyZS5mb2xkXG4gICAgICAgICAgKGZ1biBzaXRlIF8gZ3JpZCAtPlxuICAgICAgICAgICAgbGV0IGdyaWQnID1cbiAgICAgICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgbmEgc2l0ZSBzaWdzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGdyaWRcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICBhZGQgKGFnLCBzaXRlKSBmYWxzZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhZGQgKGFnLCBzaXRlKSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpXG4gICAgICAgICAgZ3JpZCBhZ19pbnRmXG4gICAgICBpblxuICAgICAgYXV4IGdyaWQgcVxuICBpblxuICBhdXggZ3JpZCBhY3Rpb25zXG5cbmxldCBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIga2luZCB0ZXN0cyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gZ3JpZCAtPiBmdW5jdGlvblxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+XG4gICAgICAgICBhZGQgKGFnLCAtMSkgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgIGFkZCBzaXRlIGZhbHNlIGF0b21fdGVzdGVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBzaXRlXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIHNpdGVcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgXykgLT5cbiAgICAgICAgIGFkZCBzaXRlIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgbGV0IGdyaWQnID0gYWRkIHNpdGUyIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCBpblxuICAgICAgICAgYWRkIHNpdGUxIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpKVxuICAgIGdyaWQgdGVzdHNcblxubGV0IHJlY29yZCAoa2luZCwgZXZlbnQsIF8pIGV2ZW50X251bWJlciBlbnYgZ3JpZCA9XG4gIGxldCBncmlkID1cbiAgICBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIGtpbmQpIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgaW5cbiAgbGV0IGdyaWQgPVxuICAgIGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZClcbiAgICAgIFsgZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgXVxuICBpblxuICBsZXQgZ3JpZCA9XG4gICAgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGdyaWQgc2l0ZSAtPlxuICAgICAgYWRkXG4gICAgICAgIChmc3Qgc2l0ZSwgLTEpXG4gICAgICAgIHRydWUgYXRvbV90ZXN0ZWRcbiAgICAgICAgKGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkpXG4gICAgICAgIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkpXG4gICAgZ3JpZCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcblxubGV0IHJlY29yZF9vYnMgKGtpbmQsIHRlc3RzLCBfKSBzaWRlX2VmZmVjdHMgZXZlbnRfbnVtYmVyIGdyaWQgPVxuICBsZXQgZ3JpZCA9IGFkZF9vYnNfZWlkIGV2ZW50X251bWJlciBncmlkIGluXG4gIGxldCBncmlkID0gYWRkX3Rlc3RzIGdyaWQgZXZlbnRfbnVtYmVyIChPQlMga2luZCkgdGVzdHMgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGdyaWQgc2l0ZSAtPiBhZGQgc2l0ZSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIgKE9CUyBraW5kKSlcbiAgICBncmlkIHNpZGVfZWZmZWN0c1xuXG5sZXQgcmVjb3JkX2luaXQgKGxibCwgYWN0aW9ucykgZXZlbnRfbnVtYmVyIGVudiBncmlkID1cbiAgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCAoVHJhY2UuSU5JVCBsYmwpKSBhY3Rpb25zXG5cbmxldCBhZGRfcHJlZCBlaWQgYXRvbSBjb25maWcgPVxuICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICBsZXQgcHJlZF9zZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZWlkIGNvbmZpZy5wcmVjXzEgaW5cbiAgbGV0IHByZWNfMSA9XG4gICAgTW9kcy5JbnRNYXAuYWRkIGVpZCAoTW9kcy5JbnRTZXQuYWRkIGF0b20uZWlkIHByZWRfc2V0KSBjb25maWcucHJlY18xXG4gIGluXG4gIHsgY29uZmlnIHdpdGggcHJlY18xOyBldmVudHNfa2luZCB9XG5cbmxldCBhZGRfY29uZmxpY3QgZWlkIGF0b20gY29uZmlnID1cbiAgbGV0IGV2ZW50c19raW5kID0gTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIGF0b20ua2luZCBjb25maWcuZXZlbnRzX2tpbmQgaW5cbiAgbGV0IGNmbGN0X3NldCA9XG4gICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGVpZCBjb25maWcuY29uZmxpY3RcbiAgaW5cbiAgbGV0IGNmbGN0ID1cbiAgICBNb2RzLkludE1hcC5hZGQgZWlkIChNb2RzLkludFNldC5hZGQgYXRvbS5laWQgY2ZsY3Rfc2V0KSBjb25maWcuY29uZmxpY3RcbiAgaW5cbiAgeyBjb25maWcgd2l0aCBjb25mbGljdCA9IGNmbGN0OyBldmVudHNfa2luZCB9XG5cbmxldCByZWMgcGFyc2VfYXR0cmlidXRlIGxhc3RfbW9kaWYgbGFzdF90ZXN0ZWQgYXR0cmlidXRlIGNvbmZpZyA9XG4gIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gIHwgW10gLT4gY29uZmlnXG4gIHwgYXRvbSA6OiBhdHQgLT5cbiAgICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICAgIGxldCBwcmVjXzEgPVxuICAgICAgbGV0IHByZWRzID1cbiAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGF0b20uZWlkIGNvbmZpZy5wcmVjXzFcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgcHJlZHMgY29uZmlnLnByZWNfMVxuICAgIGluXG4gICAgbGV0IGNvbmZpZyA9IHsgY29uZmlnIHdpdGggZXZlbnRzX2tpbmQ7IHByZWNfMSB9IGluXG4gICAgKCphdG9tIGhhcyBhIG1vZGlmaWNhdGlvbiopXG4gICAgaWZcbiAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fbW9kaWZpZWRcbiAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkbW9kaWZpZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjb25maWcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gY29uZmlnIHByZWRfaWQgLT4gYWRkX3ByZWQgcHJlZF9pZCBhdG9tIGNvbmZpZylcbiAgICAgICAgICBjb25maWcgbGFzdF90ZXN0ZWRcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdGVkID1cbiAgICAgICAgaWZcbiAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZFxuICAgICAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkIGxvciBhdG9tX21vZGlmaWVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBbIGF0b20uZWlkIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIFtdXG4gICAgICBpblxuICAgICAgcGFyc2VfYXR0cmlidXRlIChTb21lIGF0b20uZWlkKSB0ZXN0ZWQgYXR0IGNvbmZpZ1xuICAgICkgZWxzZSAoXG4gICAgICAoKiBhdG9tIGlzIGEgcHVyZSB0ZXN0KilcbiAgICAgIGxldCBjb25maWcgPVxuICAgICAgICBtYXRjaCBsYXN0X21vZGlmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNvbmZpZ1xuICAgICAgICB8IFNvbWUgZWlkIC0+XG4gICAgICAgICAgYWRkX2NvbmZsaWN0IGVpZCBhdG9tXG4gICAgICAgICAgICBjb25maWcgKCphZGRpbmcgY29uZmxpY3Qgd2l0aCBsYXN0IG1vZGlmaWNhdGlvbiopXG4gICAgICBpblxuICAgICAgcGFyc2VfYXR0cmlidXRlIGxhc3RfbW9kaWYgKGF0b20uZWlkIDo6IGxhc3RfdGVzdGVkKSBhdHQgY29uZmlnXG4gICAgKVxuXG5sZXQgY3V0ID8od2l0aF9yZWR1Y3Rpb24gPSB0cnVlKSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhdHRyaWJ1dGVfaWRzXG4gICAgZ3JpZCA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCByZWMgYnVpbGRfY29uZmlnIGF0dHJpYnV0ZV9pZHMgY2ZnID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVfaWRzIHdpdGhcbiAgICB8IFtdIC0+IGNmZ1xuICAgIHwgKG5vZGVfaSwgc2l0ZV9pLCB0eXBlX2kpIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cmlidXRlID1cbiAgICAgICAgdHJ5IGdyaWRfZmluZCAobm9kZV9pLCBzaXRlX2ksIHR5cGVfaSkgZ3JpZFxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBpbnZhbGlkX2FyZyBcIkNhdXNhbC5jdXRcIlxuICAgICAgaW5cbiAgICAgIGxldCBjZmcgPVxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGUgd2l0aFxuICAgICAgICB8IFtdIC0+IGNmZ1xuICAgICAgICB8IGF0b20gOjogYXR0IC0+XG4gICAgICAgICAgbGV0IGV2ZW50c19raW5kID1cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY2ZnLmV2ZW50c19raW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlY18xID1cbiAgICAgICAgICAgIGxldCBwcmVkcyA9XG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBhdG9tLmVpZCBjZmcucHJlY18xXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIHByZWRzIGNmZy5wcmVjXzFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXN0ZWQgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRcbiAgICAgICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBbIGF0b20uZWlkIF1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgW11cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb2RpZiA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX21vZGlmaWVkXG4gICAgICAgICAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkbW9kaWZpZWRcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgU29tZSBhdG9tLmVpZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9hdHRyaWJ1dGUgbW9kaWYgdGVzdGVkIGF0dCB7IGNmZyB3aXRoIHByZWNfMTsgZXZlbnRzX2tpbmQgfVxuICAgICAgaW5cbiAgICAgIGJ1aWxkX2NvbmZpZyB0bCBjZmdcbiAgaW5cbiAgbGV0IGNmZyA9IGJ1aWxkX2NvbmZpZyBhdHRyaWJ1dGVfaWRzIGVtcHR5X2NvbmZpZyBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHJlZHVjdGlvbiA9XG4gICAgaWYgd2l0aF9yZWR1Y3Rpb24gdGhlblxuICAgICAgR3JhcGhfY2xvc3VyZS5yZWR1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2ZnLnByZWNfMVxuICAgIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgY2ZnLnByZWNfMVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIHsgY2ZnIHdpdGggcHJlY18xID0gcmVkdWN0aW9uIH1cblxubGV0IHBwX2F0b20gZiBhdG9tID1cbiAgbGV0IGltcF9zdHIgPVxuICAgIG1hdGNoIGF0b20uY2F1c2FsX2ltcGFjdCB3aXRoXG4gICAgfCAxIC0+IFwib1wiXG4gICAgfCAyIC0+IFwieFwiXG4gICAgfCAzIC0+IFwiJVwiXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiQ2F1c2FsLnN0cmluZ19vZl9hdG9tXCJcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzXyVkXCIgaW1wX3N0ciBhdG9tLmVpZFxuXG5sZXQgX2R1bXAgZ3JpZCBmaWMgPVxuICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgKEZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uIGZpYyBeIFwiLnR4dFwiKSBpblxuICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX3Zib3ggZCAwIGluXG4gIEhhc2h0YmwuZm9sZFxuICAgIChmdW4gKG5faWQsIHNfaWQsIHEpIGF0dCBfIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBkIFwiIyVpLiVpJWM6JWFALFwiIG5faWQgc19pZFxuICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAnfidcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgJyEnKVxuICAgICAgICAoUHAubGlzdCBQcC5lbXB0eSBwcF9hdG9tKSBhdHQpXG4gICAgZ3JpZC5mbG93ICgpO1xuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBkIFwiQF1ALlwiIGluXG4gIGNsb3NlX291dCBkX2NoYW5cblxubGV0IGlkc19vZl9ncmlkIGdyaWQgPSBIYXNodGJsLmZvbGQgKGZ1biBrZXkgXyBsIC0+IGtleSA6OiBsKSBncmlkLmZsb3cgW11cbmxldCBjb25maWdfb2ZfZ3JpZCA9IGN1dFxuXG4oKmxldCBwcmVjX3N0YXJfb2ZfY29uZmlnX29sZCAgY29uZmlnID1cbiAgbGV0IHJlYyBwcmVjX2Nsb3N1cmUgY29uZmlnIHRvZG8gYWxyZWFkeV9kb25lIGNsb3N1cmUgPVxuICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHRvZG8gdGhlbiBjbG9zdXJlXG4gICAgZWxzZVxuICAgICAgbGV0IGVpZCA9IE1vZHMuSW50U2V0LmNob29zZSB0b2RvIGluXG4gICAgICBsZXQgdG9kbycgPSBNb2RzLkludFNldC5yZW1vdmUgZWlkIHRvZG8gaW5cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBlaWQgYWxyZWFkeV9kb25lXG4gICAgICB0aGVuXG4gICAgICAgIHByZWNfY2xvc3VyZSBjb25maWcgdG9kbycgYWxyZWFkeV9kb25lIGNsb3N1cmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHByZWMgPSB0cnkgSW50TWFwLmZpbmQgZWlkIGNvbmZpZy5wcmVjXzEgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRTZXQuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgIHByZWNfY2xvc3VyZSBjb25maWcgKEludFNldC51bmlvbiB0b2RvJyBwcmVjKSAoSW50U2V0LmFkZCBlaWQgYWxyZWFkeV9kb25lKSAoSW50U2V0LnVuaW9uIHByZWMgY2xvc3VyZSlcbiAgaW5cbiAgSW50TWFwLmZvbGRcbiAgICAoZnVuIGVpZCBraW5kIHByZWNfc3RhciAtPlxuICAgICAgbGV0IHNldCA9IHByZWNfY2xvc3VyZSBjb25maWcgKEludFNldC5zaW5nbGV0b24gZWlkKSBNb2RzLkludFNldC5lbXB0eSBNb2RzLkludFNldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIEludE1hcC5hZGQgZWlkIHNldCBwcmVjX3N0YXJcbiAgICApIGNvbmZpZy5ldmVudHMgSW50TWFwLmVtcHR5ICopXG5cbmxldCBwcmVjX3N0YXJfb2ZfY29uZmlnID0gR3JhcGhfY2xvc3VyZS5jbG9zdXJlXG5cbmxldCBkZXB0aF9hbmRfc2l6ZV9vZl9ldmVudCBjb25maWcgPVxuICBNb2RzLkludE1hcC5mb2xkXG4gICAgKGZ1biBlaWQgcHJlY19laWRzIChlbWFwLCBfKSAtPlxuICAgICAgbGV0IGQgPVxuICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgKGZ1biBlaWQnIGQgLT5cbiAgICAgICAgICAgIGxldCBkJyA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCAwIGVpZCcgZW1hcCBpblxuICAgICAgICAgICAgbWF4IChkJyArIDEpIGQpXG4gICAgICAgICAgcHJlY19laWRzIDBcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgZWlkIGQgZW1hcCwgZClcbiAgICBjb25maWcucHJlY18xIChNb2RzLkludE1hcC5lbXB0eSwgMClcblxubGV0IGVucmljaF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlIGdyaWQgPVxuICBsZXQga2VlcF9sID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhKSBNb2RzLkludFNldC5lbXB0eSBncmlkLm9ic1xuICBpblxuICBsZXQgdG9fa2VlcCBpID0gTW9kcy5JbnRTZXQubWVtIGkga2VlcF9sIGluXG4gIGxldCBpZHMgPSBpZHNfb2ZfZ3JpZCBncmlkIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmZpZyA9XG4gICAgY29uZmlnX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWRzIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlY19zdGFyID1cbiAgICBwcmVjX3N0YXJfb2ZfY29uZmlnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAoU29tZSBTdG9yeVByb2ZpbGluZy5UcmFuc2l0aXZlX2Nsb3N1cmUpIGNvbmZpZ19jbG9zdXJlIGNvbmZpZy5wcmVjXzFcbiAgICAgIHRvX2tlZXBcbiAgaW5cbiAgbGV0IGRlcHRoX29mX2V2ZW50LCBkZXB0aCA9IGRlcHRoX2FuZF9zaXplX29mX2V2ZW50IGNvbmZpZyBpblxuICAoIGVycm9yLFxuICAgIGxvZ19pbmZvLFxuICAgIHtcbiAgICAgIGNvbmZpZztcbiAgICAgIHByZWNfc3RhcjtcbiAgICAgIGRlcHRoO1xuICAgICAgZGVwdGhfb2ZfZXZlbnQ7XG4gICAgICBzaXplID0gTW9kcy5JbnRNYXAuc2l6ZSBjb25maWcucHJlY18xO1xuICAgIH0gKVxuXG5sZXQgZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWdfY2xvc3VyZVxuICAgIGdyaWQgZiBhID1cbiAgbGV0IGtlZXBfbCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhIGIgLT4gTW9kcy5JbnRTZXQuYWRkIGIgYSkgTW9kcy5JbnRTZXQuZW1wdHkgZ3JpZC5vYnNcbiAgaW5cbiAgbGV0IHRvX2tlZXAgaSA9IE1vZHMuSW50U2V0Lm1lbSBpIGtlZXBfbCBpblxuICBsZXQgaWRzID0gaWRzX29mX2dyaWQgZ3JpZCBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2NvbmZpZ3VyYXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25maWcgPVxuICAgIGNvbmZpZ19vZl9ncmlkIH53aXRoX3JlZHVjdGlvbjpmYWxzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHNcbiAgICAgIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2NvbmZpZ3VyYXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBHcmFwaF9jbG9zdXJlLmNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIChTb21lIFN0b3J5UHJvZmlsaW5nLkNvbGxlY3RfdHJhY2VzKSBjb25maWdfY2xvc3VyZSBjb25maWcucHJlY18xIHRvX2tlZXAgZlxuICAgIGFcblxubGV0IHByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudiBmID0gZnVuY3Rpb25cbiAgfCBPQlMgbmFtZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVzXFxcIiwgc3R5bGU9ZmlsbGVkLCBmaWxsY29sb3I9cmVkXVwiIG5hbWVcbiAgfCBFVkVOVCBlIC0+IFRyYWNlLnByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudiBmIGVcblxubGV0IGRvdF9vZl9ncmlkIHByb2ZpbGluZyBlbnYgZW5yaWNoZWRfZ3JpZCBmb3JtID1cbiAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICBsZXQgY29uZmlnID0gZW5yaWNoZWRfZ3JpZC5jb25maWcgaW5cbiAgbGV0IHByZWNfc3RhciA9IGVucmljaGVkX2dyaWQucHJlY19zdGFyIGluXG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IGVucmljaGVkX2dyaWQuZGVwdGhfb2ZfZXZlbnQgaW5cbiAgbGV0IHNvcnRlZF9ldmVudHMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gZWlkIGQgZG1hcCAtPlxuICAgICAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGQgZG1hcCBpblxuICAgICAgICBNb2RzLkludE1hcC5hZGQgZCAoTW9kcy5JbnRTZXQuYWRkIGVpZCBzZXQpIGRtYXApXG4gICAgICBkZXB0aF9vZl9ldmVudCBNb2RzLkludE1hcC5lbXB0eVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj4ldEAsZGlncmFwaCBHe0AsIHJhbmtzZXA9LjUgO0AsXCIgcHJvZmlsaW5nO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBkIGVpZHNfYXRfZCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIkBbPGh2PnsgcmFuayA9IHNhbWUgOyBcXFwiJWRcXFwiIFtzaGFwZT1wbGFpbnRleHRdIDtALFwiIGQ7XG4gICAgICBNb2RzLkludFNldC5pdGVyXG4gICAgICAgIChmdW4gZWlkIC0+XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gZWlkIGNvbmZpZy5ldmVudHNfa2luZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgU29tZSBhdG9tX2tpbmQgLT5cbiAgICAgICAgICAgIGlmIGVpZCA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIm5vZGVfJWQgJWEgO0AsXCIgZWlkXG4gICAgICAgICAgICAgICAgKHByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudilcbiAgICAgICAgICAgICAgICBhdG9tX2tpbmRcbiAgICAgICAgICAoKiBMaXN0Lml0ZXIgKGZ1biBvYnMgLT4gZnByaW50ZiBkZXNjIFwib2JzXyVkIFtsYWJlbCA9XFxcIiVzXFxcIiwgc3R5bGU9ZmlsbGVkLCBmaWxsY29sb3I9cmVkXSA7XFxuIG5vZGVfJWQgLT4gb2JzXyVkIFthcnJvd2hlYWQ9dmVlXTtcXG5cIiBlaWQgb2JzIGVpZCBlaWQpIGF0b20ub2JzZXJ2YXRpb24gOyopKVxuICAgICAgICBlaWRzX2F0X2Q7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwifUBdQCxcIilcbiAgICBzb3J0ZWRfZXZlbnRzO1xuICBsZXQgY3B0ID0gcmVmIDAgaW5cbiAgd2hpbGUgIWNwdCArIDEgPCBNb2RzLkludE1hcC5zaXplIHNvcnRlZF9ldmVudHMgZG9cbiAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiXFxcIiVkXFxcIiAtPiBcXFwiJWRcXFwiIFtzdHlsZT1cXFwiaW52aXNcXFwiXTtALFwiICFjcHQgKCFjcHQgKyAxKTtcbiAgICBjcHQgOj0gIWNwdCArIDFcbiAgZG9uZTtcbiAgTW9kcy5JbnRNYXAuaXRlclxuICAgIChmdW4gZWlkIHByZWRfc2V0IC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuXG4gICAgICAgIE1vZHMuSW50U2V0Lml0ZXJcbiAgICAgICAgICAoZnVuIGVpZCcgLT5cbiAgICAgICAgICAgIGlmIGVpZCcgPSAwIHRoZW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIm5vZGVfJWQgLT4gbm9kZV8lZEAsXCIgZWlkJyBlaWQpXG4gICAgICAgICAgcHJlZF9zZXQpXG4gICAgY29uZmlnLnByZWNfMTtcbiAgTW9kcy5JbnRNYXAuaXRlclxuICAgIChmdW4gZWlkIGNmbGN0X3NldCAtPlxuICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgIGxldCBwcmVjID0gdHJ5IChmc3QgcHJlY19zdGFyKS4oZWlkKSB3aXRoIF8gLT4gW10gaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRfaW52XG4gICAgICAgICAgICAoZnVuIGVpZCcgcHJlYyAtPlxuICAgICAgICAgICAgICBsZXQgYm9vbCwgcHJlYyA9XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBhdXggcHJlYyA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgaCA9IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgaCA+IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGF1eCB0XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhdXggcHJlY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybVxuICAgICAgICAgICAgICAgICAgICBcIm5vZGVfJWQgLT4gbm9kZV8lZCBbc3R5bGU9ZG90dGVkLCBhcnJvd2hlYWQgPSB0ZWVdQCBcIiBlaWRcbiAgICAgICAgICAgICAgICAgICAgZWlkJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwcmVjKVxuICAgICAgICAgICAgY2ZsY3Rfc2V0IHByZWNcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgICkpXG4gICAgY29uZmlnLmNvbmZsaWN0O1xuICBGb3JtYXQuZnByaW50ZiBmb3JtIFwifUAsXCI7XG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCIvKkAsIERvdCBnZW5lcmF0aW9uIHRpbWU6ICVmQCwqL0BdQC5cIiAoU3lzLnRpbWUgKCkgLS4gdClcblxubGV0IGpzX29mX2dyaWQgZW52IGVucmljaGVkX2dyaWQgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDcmVhdGUgYSBuZXcgZGlyZWN0ZWQgZ3JhcGhALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBnID0gbmV3IGRhZ3JlRDMuZ3JhcGhsaWIuR3JhcGgoKS5zZXRHcmFwaCh7fSk7QCxcIlxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgUHAuc2V0IH50cmFpbGluZzpQcC5zcGFjZSBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgKGZ1biBmIChlaWQsIGF0b21fa2luZCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiZy5zZXROb2RlKCVpLCB7IGxhYmVsOiBcXFwiJWFcXFwiLCBzdHlsZTogXFxcImZpbGw6ICVzXFxcIiB9KTtcIiBlaWRcbiAgICAgICAgICAocHJpbnRfZXZlbnRfa2luZCB+ZW52KSBhdG9tX2tpbmRcbiAgICAgICAgICAobWF0Y2ggYXRvbV9raW5kIHdpdGhcbiAgICAgICAgICB8IE9CUyBfIC0+IFwiI2Y3N1wiXG4gICAgICAgICAgfCBFVkVOVCAoVHJhY2UuSU5JVCBfIHwgVHJhY2UuUEVSVCBfKSAtPiBcIiM3ZjdcIlxuICAgICAgICAgIHwgRVZFTlQgKFRyYWNlLlJVTEUgXykgLT4gXCIjNzdmXCIpKVxuICAgICAgZiBlbnJpY2hlZF9ncmlkLmNvbmZpZy5ldmVudHNfa2luZFxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLnNldCBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5lbXB0eVxuICAgICAgKGZ1biBmIChlaWQsIHNldCkgLT5cbiAgICAgICAgUHAuc2V0IE1vZHMuSW50U2V0LmVsZW1lbnRzIH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZVxuICAgICAgICAgIChmdW4gZiBlaWQnIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJnLnNldEVkZ2UoJWksJWkse30pO1wiIGVpZCcgZWlkKVxuICAgICAgICAgIGYgc2V0KVxuICAgICAgZiBlbnJpY2hlZF9ncmlkLmNvbmZpZy5wcmVjXzFcbiAgaW5cblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgc3ZnID0gZDMuc2VsZWN0KFxcXCJzdmdcXFwiKSxpbm5lciA9IHN2Zy5zZWxlY3QoXFxcImdcXFwiKTtALFwiXG4gIGluXG5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIFNldCB1cCB6b29tIHN1cHBvcnRALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciB6b29tID0gZDMuYmVoYXZpb3Iuem9vbSgpLm9uKFxcXCJ6b29tXFxcIiwgZnVuY3Rpb24oKSB7QCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiaW5uZXIuYXR0cihcXFwidHJhbnNmb3JtXFxcIiwgXFxcInRyYW5zbGF0ZShcXFwiICsgZDMuZXZlbnQudHJhbnNsYXRlICsgXFxcIilcXFwiICtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJcXFwic2NhbGUoXFxcIiArIGQzLmV2ZW50LnNjYWxlICsgXFxcIilcXFwiKTtALH0pO0Asc3ZnLmNhbGwoem9vbSk7XCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIi8vIENyZWF0ZSB0aGUgcmVuZGVyZXJALCB2YXIgcmVuZGVyID0gbmV3IGRhZ3JlRDMucmVuZGVyKCk7QCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLy8gUnVuIHRoZSByZW5kZXJlci4gVGhpcyBpcyB3aGF0IGRyYXdzIHRoZSBmaW5hbCBncmFwaC5ALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJyZW5kZXIoaW5uZXIsIGcpO0AsXCIgaW5cblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ2VudGVyIHRoZSBncmFwaEAsdmFyIGluaXRpYWxTY2FsZSA9IDAuNzU7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiem9vbUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIi50cmFuc2xhdGUoWyhzdmcuYXR0cihcXFwid2lkdGhcXFwiKSAtIGcuZ3JhcGgoKS53aWR0aCAqIGluaXRpYWxTY2FsZSkgLyAyLCBcXFxuICAgICAgIDIwXSlALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIuc2NhbGUoaW5pdGlhbFNjYWxlKUAsLmV2ZW50KHN2Zyk7QCxcIiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwic3ZnLmF0dHIoJ2hlaWdodCcsIGcuZ3JhcGgoKS5oZWlnaHQgKiBpbml0aWFsU2NhbGUgKyA0MCk7XCJcblxubGV0IGh0bWxfb2ZfZ3JpZCBwcm9maWxpbmcgY29tcHJlc3Npb25fdHlwZSBjcHQgZW52IGVucmljaGVkX2dyaWQgPVxuICBsZXQgdGl0bGUgZiA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzIGNvbXByZXNzZWQgc3RvcnkgbnVtYmVyICVpXCIgY29tcHJlc3Npb25fdHlwZSBjcHRcbiAgaW5cbiAgUHBfaHRtbC5ncmFwaF9wYWdlIHRpdGxlXG4gICAgW1xuICAgICAgXCJodHRwOi8vZDNqcy5vcmcvZDMudjMubWluLmpzXCI7XG4gICAgICBcImh0dHA6Ly9jcGV0dGl0dC5naXRodWIuaW8vcHJvamVjdC9kYWdyZS1kMy9sYXRlc3QvZGFncmUtZDMubWluLmpzXCI7XG4gICAgXVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImR0IHtmbG9hdDogbGVmdDsgY2xlYXI6IGxlZnQ7IHdpZHRoOiAyMGVtO31ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImRkIHtmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiAwIDAgMCAyMWVtO31ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5ub2RlIHJlY3Qge3N0cm9rZTogIzMzMzsgZmlsbDogI2ZmZjt9QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiLmVkZ2VQYXRoIHBhdGgge3N0cm9rZTogIzMzMzsgZmlsbDogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDt9XCJcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc3R5bGU+XCIpXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN2ZyB3aWR0aD1cXFwiOTYwXFxcIj48Zz48L2c+PC9zdmc+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxwPkBbJXRAXTwvcD5ALFwiIHByb2ZpbGluZyBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c2NyaXB0PkAsJXRAXUAsPC9zY3JpcHQ+XCJcbiAgICAgICAgKGpzX29mX2dyaWQgZW52IGVucmljaGVkX2dyaWQpKVxuXG5sZXQgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1biAoc2l0ZSwgaW50ZXJuYWwpIC0+XG4gICAgICBtYXRjaCBpbnRlcm5hbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBMaXN0Lm1lbSAoYXRvbV9tb2RpZmllZCwgKGFpZCwgc2l0ZSwgMCkpIHF1YXJrc1xuICAgICAgICAmJiBMaXN0Lm1lbSAoYXRvbV9tb2RpZmllZCwgKGFpZCwgc2l0ZSwgMSkpIHF1YXJrc1xuICAgICAgfCBOb25lIC0+IExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAxKSkgcXVhcmtzKVxuICAgIHNpdGVzXG5cbmxldCBjaGVja19tb2RpZmllZF9xdWFya3MgKChhaWQsIF8pLCBzaXRlKSBtb2RpZiBxdWFya3MgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW4gKGMsIChuLCBzLCBtKSkgLT5cbiAgICAgIChjID0gYXRvbV9tb2RpZmllZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZClcbiAgICAgICYmIG4gPSBhaWQgJiYgcyA9IHNpdGUgJiYgbSA9IG1vZGlmKVxuICAgIHF1YXJrc1xuXG5sZXQgY2hlY2tfdGVzdGVkX3F1YXJrcyAoKGFpZCwgXyksIHNpdGUpIG1vZGlmIHF1YXJrcyA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoYywgKG4sIHMsIG0pKSAtPlxuICAgICAgKGMgPSBhdG9tX3Rlc3RlZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZClcbiAgICAgICYmIG4gPSBhaWQgJiYgcyA9IHNpdGUgJiYgbSA9IG1vZGlmKVxuICAgIHF1YXJrc1xuXG5sZXQgY2hlY2tfZXZlbnRfcXVhcmtzIGFjdGlvbnMgdGVzdHMgcXVhcmtzID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWlkLCBfKSwgc2l0ZXMpIC0+XG4gICAgICAgIGNoZWNrX2NyZWF0ZV9xdWFya3MgYWlkIHNpdGVzIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgYXNpdGUgLT4gY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlIDEgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoYXNpdGUxLCBhc2l0ZTIpXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoYXNpdGUxLCBhc2l0ZTIpIC0+XG4gICAgICAgIGNoZWNrX21vZGlmaWVkX3F1YXJrcyBhc2l0ZTEgMSBxdWFya3NcbiAgICAgICAgJiYgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlMiAxIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoYXNpdGUsIF8pIC0+XG4gICAgICAgIGNoZWNrX21vZGlmaWVkX3F1YXJrcyBhc2l0ZSAwIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoYWlkLCBfKSAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKGMsIChuLCBfLCBfKSkgLT5cbiAgICAgICAgICAgIChjID0gYXRvbV9tb2RpZmllZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZCkgJiYgbiA9IGFpZClcbiAgICAgICAgICBxdWFya3MpXG4gICAgYWN0aW9uc1xuICAmJiBMaXN0LmZvcl9hbGxcbiAgICAgICAoTGlzdC5mb3JfYWxsIChmdW5jdGlvblxuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgKGFpZCwgXykgLT5cbiAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAoZnVuIChjLCAobiwgXywgXykpIC0+XG4gICAgICAgICAgICAgICAoYyA9IGF0b21fdGVzdGVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKSAmJiBuID0gYWlkKVxuICAgICAgICAgICAgIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoYXNpdGUsIF8pIC0+XG4gICAgICAgICAgIGNoZWNrX3Rlc3RlZF9xdWFya3MgYXNpdGUgMCBxdWFya3NcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIGFzaXRlXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgYXNpdGVcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChhc2l0ZSwgXykgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZSAxIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChhc2l0ZTEsIGFzaXRlMikgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZTEgMSBxdWFya3NcbiAgICAgICAgICAgJiYgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZTIgMSBxdWFya3MpKVxuICAgICAgIHRlc3RzXG5cbmxldCBsb2dfZXZlbnQgaWQgcXVhcmtzIGV2ZW50X2tpbmQgc3RlcHMgPVxuICBtYXRjaCBldmVudF9raW5kIHdpdGhcbiAgfCBFVkVOVCAoVHJhY2UuSU5JVCBfKSAtPlxuICAgIGxldCBzdHAgPVxuICAgICAgTGlzdC5maW5kXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKGFpZCwgXyksIHNpdGVzKSAtPlxuICAgICAgICAgICAgICAgICAgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImluaXQgZXZlbnQgaGFzIGFjdGlvbnMgbm90IGFsbG93ZWRcIikpKVxuICAgICAgICAgICAgICBhY3Rpb25zXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgX1xuICAgICAgICAgIHwgVHJhY2UuRHVtbXkgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgRVZFTlQgKFRyYWNlLlJVTEUgcmlkKSAtPlxuICAgIGxldCBzdHAgPVxuICAgICAgTGlzdC5maW5kXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAocmlkJywgZSwgXykgLT5cbiAgICAgICAgICAgIHJpZCA9IHJpZCdcbiAgICAgICAgICAgICYmIGNoZWNrX2V2ZW50X3F1YXJrcyBlLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgICAgICAoZS5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA6OiBlLkluc3RhbnRpYXRpb24udGVzdHMpXG4gICAgICAgICAgICAgICAgIHF1YXJrc1xuICAgICAgICAgIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5EdW1teSBfXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IF8gLT5cbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICBzdGVwc1xuICAgIGluXG4gICAgYExpc3QgWyBgSW50IGlkOyBUcmFjZS5zdGVwX3RvX3lvanNvbiBzdHAgXVxuICB8IE9CUyBfIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5PYnMgXyAtPiB0cnVlXG4gICAgICAgICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuUnVsZSBfXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICBzdGVwc1xuICAgIGluXG4gICAgYExpc3QgWyBgSW50IGlkOyBUcmFjZS5zdGVwX3RvX3lvanNvbiBzdHAgXVxuICB8IEVWRU5UIChUcmFjZS5QRVJUIHBlcnQpIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IChwZXJ0JywgZSwgXykgLT5cbiAgICAgICAgICAgIHBlcnQgPSBwZXJ0J1xuICAgICAgICAgICAgJiYgY2hlY2tfZXZlbnRfcXVhcmtzIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICAgICAgIChlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzIDo6IGUuSW5zdGFudGlhdGlvbi50ZXN0cylcbiAgICAgICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF9cbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG5cbmxldCBqc29uX29mX2dyaWQgZW5yaWNoZWRfZ3JpZCBncmlkX3N0b3J5IHN0ZXBzID1cbiAgbGV0IGNvbmZpZyA9IGVucmljaGVkX2dyaWQuY29uZmlnIGluXG4gIGxldCBwcmVjX3N0YXIgPSBlbnJpY2hlZF9ncmlkLnByZWNfc3RhciBpblxuICBsZXQgZGVwdGhfb2ZfZXZlbnQgPSBlbnJpY2hlZF9ncmlkLmRlcHRoX29mX2V2ZW50IGluXG4gIGxldCB0YmwgPSBIYXNodGJsLmNyZWF0ZSAhUGFyYW1ldGVyLmRlZmF1bHRFeHRBcnJheVNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gcXVhcmsgYXR0X2xzIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gYXRvbSAtPiBIYXNodGJsLmFkZCB0YmwgYXRvbS5laWQgKGF0b20uY2F1c2FsX2ltcGFjdCwgcXVhcmspKVxuICAgICAgICAgIGF0dF9scylcbiAgICAgIGdyaWRfc3RvcnkuZmxvd1xuICBpblxuICBsZXQgc29ydGVkX2V2ZW50cyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgZCBkbWFwIC0+XG4gICAgICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZCBkbWFwIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBkIChNb2RzLkludFNldC5hZGQgZWlkIHNldCkgZG1hcClcbiAgICAgIGRlcHRoX29mX2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIGxldCBub2RlX3RvX2pzb24gZWlkID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgY29uZmlnLmV2ZW50c19raW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCBTb21lIGF0b21fa2luZCAtPlxuICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgIGxldCBxdWFya3MgPSBIYXNodGJsLmZpbmRfYWxsIHRibCBlaWQgaW5cbiAgICAgICAgbG9nX2V2ZW50IGVpZCBxdWFya3MgYXRvbV9raW5kIHN0ZXBzXG4gICAgICApIGVsc2VcbiAgICAgICAgYE51bGxcbiAgaW5cbiAgbGV0IG5vZGVzX3RvX2xpc3QgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gXyBlaWRzX2F0X2QgbHMgLT5cbiAgICAgICAgbGV0IGxzJycgPSBNb2RzLkludFNldC5mb2xkIChmdW4gZWlkIGxzJyAtPiBlaWQgOjogbHMnKSBlaWRzX2F0X2QgW10gaW5cbiAgICAgICAgbHMnJyBAIGxzKVxuICAgICAgc29ydGVkX2V2ZW50cyBbXVxuICBpblxuICBsZXQgbm9kZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3Qgbm9kZV90b19qc29uIG5vZGVzX3RvX2xpc3QgaW5cbiAgbGV0IGVkZ2VfdG9fanNvbiAoZWlkLCBlaWQnKSA9IGBBc3NvYyBbIFwiZnJvbVwiLCBgSW50IGVpZCc7IFwidG9cIiwgYEludCBlaWQgXSBpblxuICBsZXQgcHJlY19lZGdlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgcHJlZF9zZXQgbHMgLT5cbiAgICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxzJycgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGVpZCcgbHMnIC0+XG4gICAgICAgICAgICAgICAgaWYgZWlkJyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgbHMnXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgKGVpZCwgZWlkJykgOjogbHMnKVxuICAgICAgICAgICAgICBwcmVkX3NldCBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbHMnJyBAIGxzXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGxzKVxuICAgICAgY29uZmlnLnByZWNfMSBbXVxuICBpblxuICBsZXQgcHJlY19lZGdlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBlZGdlX3RvX2pzb24gcHJlY19lZGdlcyBpblxuICBsZXQgY29uZmxfZWRnZXMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gZWlkIGNmbGN0X3NldCBscyAtPlxuICAgICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgICBsZXQgcHJlYyA9IHRyeSAoZnN0IHByZWNfc3RhcikuKGVpZCkgd2l0aCBfIC0+IFtdIGluXG4gICAgICAgICAgbGV0IF8sIGxzJyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5mb2xkX2ludlxuICAgICAgICAgICAgICAoZnVuIGVpZCcgKHByZWMsIGxzJykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYm9vbCwgcHJlYyA9XG4gICAgICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBwcmVjID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGggPSBlaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBoID4gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXggdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHByZWNcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBhdXggcHJlY1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxzJycgPVxuICAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChlaWQsIGVpZCcpIDo6IGxzJ1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBscydcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHByZWMsIGxzJycpXG4gICAgICAgICAgICAgIGNmbGN0X3NldCAocHJlYywgbHMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBscydcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbHMpXG4gICAgICBjb25maWcuY29uZmxpY3QgW11cbiAgaW5cbiAgbGV0IGNvbmZsX2VkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvbiBjb25mbF9lZGdlcyBpblxuICAoYEFzc29jXG4gICAgIFtcbiAgICAgICBcIm5vZGVzXCIsIG5vZGVzX3RvX2pzb247XG4gICAgICAgXCJjYXVzZVwiLCBwcmVjX2VkZ2VzX3RvX2pzb247XG4gICAgICAgXCJpbmhpYml0XCIsIGNvbmZsX2VkZ2VzX3RvX2pzb247XG4gICAgIF1cbiAgICA6IFlvanNvbi5CYXNpYy50KVxuXG4oKnN0b3J5X2xpc3Q6WyhrZXlfaSxsaXN0X2kpXSBldCBsaXN0X2k6WyhncmlkLF8sc2ltX2luZm8gb3B0aW9uKS4uLl1cbiAgZXQgc2ltX2luZm86e3dpdGggc3RvcnlfaWQ6aW50IHN0b3J5X3RpbWU6IGZsb2F0IDsgc3RvcnlfZXZlbnQ6IGludH0qKVxubGV0IHByZXR0eV9wcmludCB+ZG90Rm9ybWF0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBjb25maWdfY2xvc3VyZVxuICAgIGNvbXByZXNzaW9uX3R5cGUgbGFiZWwgZ3JpZF9saXN0ID1cbiAgbWF0Y2hcbiAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICB8IFNvbWUgZXJyX2ZtdCAtPlxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggZ3JpZF9saXN0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGNvbXByZXNzaW9uX3R5cGUgPSBcIlwiIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZXJyX2ZtdCBcIisgUHJldHR5IHByaW50aW5nICVkIGZsb3clc0AuXCIgblxuICAgICAgICAgIChpZiBuID4gMSB0aGVuXG4gICAgICAgICAgICAgXCJzXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGVycl9mbXQgXCIrIFByZXR0eSBwcmludGluZyAlZCAlc2NvbXByZXNzZWQgZmxvdyVzQC5cIiBuXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgICAoaWYgbiA+IDEgdGhlblxuICAgICAgICAgICAgIFwic1wiXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBcIlwiKVxuICAgIGluXG4gICAgbGV0IGNvbXByZXNzaW9uX3R5cGUgPVxuICAgICAgaWYgY29tcHJlc3Npb25fdHlwZSA9IFwiXCIgdGhlblxuICAgICAgICBcIm5vbmVcIlxuICAgICAgZWxzZVxuICAgICAgICBjb21wcmVzc2lvbl90eXBlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdG9yeV9saXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgbGlzdCkgKHosIHgsIHkpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgeCA9XG4gICAgICAgICAgICBlbnJpY2hfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWdfY2xvc3VyZSB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sICh6LCB4LCB5KSA6OiBsaXN0KVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBbXSkgZ3JpZF9saXN0XG4gICAgaW5cbiAgICBsZXQgc3RvcnlfbGlzdCA9IExpc3QucmV2IHN0b3J5X2xpc3QgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGNwdCAoc3RlcHMsIGVucmljaGVkX2NvbmZpZywgc3RvcmllcykgLT5cbiAgICAgICAgICBsZXQgYXZfdCwgaWRzLCBuID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGF2X3QsIGlkcywgbikgaW5mbyAtPlxuICAgICAgICAgICAgICAgICggYXZfdCArLiBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lLFxuICAgICAgICAgICAgICAgICAgaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgOjogaWRzLFxuICAgICAgICAgICAgICAgICAgbiArIDEgKSlcbiAgICAgICAgICAgICAgKDAuLCBbXSwgMCkgKExpc3QucmV2IHN0b3JpZXMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgKCpkdW1wIGdyaWQgZmljIHN0YXRlIGVudiA7ICopXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBkb3RGb3JtYXQgPSBKc29uIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBfLCBncmlkX3N0b3J5LCBfID0gTGlzdC5udGggZ3JpZF9saXN0IGNwdCBpblxuICAgICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgICAgWyBjb21wcmVzc2lvbl90eXBlOyBzdHJpbmdfb2ZfaW50IGNwdCBdXG4gICAgICAgICAgICAgICAgICBcIi5qc29uXCJcbiAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXNALlwiXG4gICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAoanNvbl9vZl9ncmlkIGVucmljaGVkX2NvbmZpZyBncmlkX3N0b3J5IHN0ZXBzKSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBkb3RGb3JtYXQgd2l0aFxuICAgICAgICAgICAgfCBEb3QgfCBKc29uIC0+XG4gICAgICAgICAgICAgIGxldCBwcm9maWxpbmcgZGVzYyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIi8qIEBbQ29tcHJlc3Npb24gb2YgJWQgY2F1c2FsIGZsb3dzXCIgbjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQCBvYnRhaW5lZCBpbiBhdmVyYWdlIGF0ICVFIHQudUBdICovQCxcIlxuICAgICAgICAgICAgICAgICAgKGF2X3QgLy4gZmxvYXRfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgICAgICAgICAgICAgIFwiQFsvKiBDb21wcmVzc2VkIGNhdXNhbCBmbG93cyB3ZXJlOkAgWyVhXSAqL0BdXCJcbiAgICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIjtALFwiKVxuICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgICAgICAgICAgICAgIGlkc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBLYXBwYV9maWxlcy53aXRoX2NmbG93X2ZpbGVcbiAgICAgICAgICAgICAgICBbIGNvbXByZXNzaW9uX3R5cGU7IHN0cmluZ19vZl9pbnQgY3B0IF1cbiAgICAgICAgICAgICAgICBcIi5kb3RcIlxuICAgICAgICAgICAgICAgIChkb3Rfb2ZfZ3JpZCBwcm9maWxpbmcgZW52IGVucmljaGVkX2NvbmZpZylcbiAgICAgICAgICAgIHwgSHRtbCAtPlxuICAgICAgICAgICAgICBsZXQgcHJvZmlsaW5nIGRlc2MgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgICAgICAgICAgICAgIFwiQFs8diAyPjxkbD5ALDxkdD5Db21wcmVzc2lvbiBvZjwvZHQ+PGRkPiVkIGNhdXNhbCBmbG93czwvZGQ+XCJcbiAgICAgICAgICAgICAgICAgIG47XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJALDxkdD5vYnRhaW5lZCBpbiBhdmVyYWdlIGF0PC9kdD48ZGQ+JUUgdC51PC9kZD5ALFwiXG4gICAgICAgICAgICAgICAgICAoYXZfdCAvLiBmbG9hdF9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIjxkdD5Db21wcmVzc2VkIGNhdXNhbCBmbG93cyB3ZXJlOjwvZHQ+XCI7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIkAgPGRkPltAWyVhQF1dPC9kZD5AXUAsPC9kbD5cIlxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiO0AsXCIpXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgICAgICAgICAgICAgaWRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgIFsgY29tcHJlc3Npb25fdHlwZTsgc3RyaW5nX29mX2ludCBjcHQgXVxuICAgICAgICAgICAgICAgIFwiLmh0bWxcIlxuICAgICAgICAgICAgICAgIChodG1sX29mX2dyaWQgcHJvZmlsaW5nIGNvbXByZXNzaW9uX3R5cGUgY3B0IGVudiBlbnJpY2hlZF9jb25maWcpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjcHQgKyAxKVxuICAgICAgICAwIHN0b3J5X2xpc3RcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBkb3RGb3JtYXQgd2l0aFxuICAgICAgfCBKc29uIC0+XG4gICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZSBbIGNvbXByZXNzaW9uX3R5cGU7IFwiZW52XCIgXSBcIi5qc29uXCJcbiAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCJcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKE1vZGVsLnRvX3lvanNvbiBlbnYpKSlcbiAgICAgIHwgRG90IHwgSHRtbCAtPiAoKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlIFsgY29tcHJlc3Npb25fdHlwZTsgXCJTdW1tYXJ5XCIgXSBcIi5kYXRcIlxuICAgICAgICAoZnVuIGZvcm0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj4jaWRcXHRFXFx0VFxcdFxcdGRlcHRoXFx0c2l6ZVxcdEAsXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgUHAubGlzdGkgUHAuZW1wdHlcbiAgICAgICAgICAgICAgKGZ1biBjcHQgZiAoXywgZW5yaWNoZWRfY29uZmlnLCBzdG9yeSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGVwdGggPSBlbnJpY2hlZF9jb25maWcuZGVwdGggaW5cbiAgICAgICAgICAgICAgICBsZXQgc2l6ZSA9IGVucmljaGVkX2NvbmZpZy5zaXplIGluXG4gICAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGluZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaVxcdCVpXFx0JUVcXHQlaVxcdCVpXFx0QCxcIiBjcHQgZXZlbnQgdGltZVxuICAgICAgICAgICAgICAgICAgICAgIGRlcHRoIHNpemUpXG4gICAgICAgICAgICAgICAgICBzdG9yeSlcbiAgICAgICAgICAgICAgZm9ybSBzdG9yeV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQF1AP1wiKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvXG5cbmxldCBwcmludF9zdGF0IGYgX3BhcmFtZXRlciBfaGFuZGxlciBlbnJpY2hlZF9ncmlkID1cbiAgbGV0IGNvdW50X29icyA9XG4gICAgbWF0Y2ggc25kIGVucmljaGVkX2dyaWQucHJlY19zdGFyIHdpdGhcbiAgICB8IEdyYXBoX2Nsb3N1cmUuSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgLT4gZnVuIHggLT4geFxuICAgIHwgR3JhcGhfY2xvc3VyZS5EZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCAtPiBzdWNjXG4gIGluXG4gIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIChmc3QgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIpIGluXG4gIGxldCByZWMgYXV4IGsgbl9zdGVwIGxvbmdlc3Rfc3Rvcnkgbl9ub25lbXB0eSBsZW5ndGhfc3VtIGxlbmd0aF9zcXVhcmVfc3VtID1cbiAgICBpZiBrID49IHNpemUgdGhlblxuICAgICAgbl9zdGVwLCBsb25nZXN0X3N0b3J5LCBuX25vbmVtcHR5LCBsZW5ndGhfc3VtLCBsZW5ndGhfc3F1YXJlX3N1bVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNjID0gTGlzdC5sZW5ndGggKEFycmF5LmdldCAoZnN0IGVucmljaGVkX2dyaWQucHJlY19zdGFyKSBrKSBpblxuICAgICAgbGV0IGNjJyA9XG4gICAgICAgIGlmIGNjID4gMCB0aGVuXG4gICAgICAgICAgY291bnRfb2JzIGNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjY1xuICAgICAgaW5cbiAgICAgIGF1eCAoayArIDEpIChuX3N0ZXAgKyAxKSAobWF4IGxvbmdlc3Rfc3RvcnkgY2MnKVxuICAgICAgICAoaWYgY2MgPiAwIHRoZW5cbiAgICAgICAgICAgbl9ub25lbXB0eSArIDFcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbl9ub25lbXB0eSlcbiAgICAgICAgKGxlbmd0aF9zdW0gKyBjYycpXG4gICAgICAgIChsZW5ndGhfc3F1YXJlX3N1bSArIChjYycgKiBjYycpKVxuICAgIClcbiAgaW5cbiAgbGV0IG5fc3RlcCwgbG9uZ2VzdF9zdG9yeSwgbl9ub25lbXB0eSwgbGVuZ3RoX3N1bSwgbGVuZ3RoX3NxdWFyZV9zdW0gPVxuICAgIGF1eCAwIDAgMCAwIDAgMFxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj5TdGF0czpALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgbnVtYmVyIG9mIHN0ZXAgICA6ICVpQCxcIiBuX3N0ZXAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBsb25nZXN0IHN0b3J5ICAgIDogJWlALFwiIGxvbmdlc3Rfc3RvcnkgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGF2ZXJhZ2UgbGVuZ3RoICAgOiAlLjRnQCxcIlxuICAgICAgKGZsb2F0IGxlbmd0aF9zdW0gLy4gZmxvYXQgbl9ub25lbXB0eSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGdlb21ldHJpYyBtZWFuICAgOiAlLjRnQCxcIlxuICAgICAgKHNxcnQgKGZsb2F0IGxlbmd0aF9zcXVhcmVfc3VtIC8uIGZsb2F0IG5fbm9uZW1wdHkpKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALlwiXG4iLCJ0eXBlIHByZWRpY2F0ZV92YWx1ZSA9XG4gIHwgSW50ZXJuYWxfc3RhdGVfaXMgb2YgaW50XG4gIHwgVW5kZWZpbmVkICAoKiogdGhlIHdpcmUgZG9lcyBub3QgZXhpc3QgeWV0ICopXG4gIHwgUHJlc2VudCAgKCoqIGZvciBhZ2VudCBwcmVzZW5jZSAqKVxuICB8IEZyZWUgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuICB8IEJvdW5kX3RvIG9mIGludCAqIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAoKiogZm9yIGJpbmRpbmcgc2l0ZXMgKilcblxubW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG5cbnR5cGUgcHJlZGljYXRlX2luZm8gPVxuICB8IEhlcmUgb2YgaW50XG4gIHwgQm91bmRfc2l0ZSBvZiBpbnQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICB8IEludGVybmFsX3N0YXRlIG9mIGludCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG5cbmxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gcGkgPVxuICBtYXRjaCBwaSB3aXRoXG4gIHwgSGVyZSBhZyAtPiBcIkhlcmUgXCIgXiBzdHJpbmdfb2ZfaW50IGFnXG4gIHwgQm91bmRfc2l0ZSAoYWcsIHMpIC0+XG4gICAgXCJCb3VuZF9zdGF0ZSBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBcIiBeIHN0cmluZ19vZl9pbnQgc1xuICB8IEludGVybmFsX3N0YXRlIChhZywgcykgLT5cbiAgICBcIkludGVybmFsX3N0YXRlIFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIFwiIF4gc3RyaW5nX29mX2ludCBzXG5cbm1vZHVsZSBQcmVkaWNhdGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHByZWRpY2F0ZV9pbmZvXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCBmIHggPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyB4KVxuZW5kKVxuXG5tb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlU2V0TWFwLk1hcFxuXG5tb2R1bGUgUVByZWRpY2F0ZU1hcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmVkaWNhdGVNYXAudCBBLnRcblxuICBsZXQgZW1wdHkgbiA9IEEubWFrZSBuIFByZWRpY2F0ZU1hcC5lbXB0eVxuICBsZXQgaXRlciBmIHQgPSBBLml0ZXIgKFByZWRpY2F0ZU1hcC5pdGVyIGYpIHRcblxuICBsZXQgaGFzaCBwcmVkaWNhdGUgPVxuICAgIG1hdGNoIHByZWRpY2F0ZSB3aXRoXG4gICAgfCBIZXJlIGFnIHwgQm91bmRfc2l0ZSAoYWcsIF8pIHwgSW50ZXJuYWxfc3RhdGUgKGFnLCBfKSAtPiBhZ1xuXG4gIGxldCBsaWZ0IGYgcHJlZGljYXRlX2lkIHRhYiA9IGYgcHJlZGljYXRlX2lkIChBLmdldCB0YWIgKGhhc2ggcHJlZGljYXRlX2lkKSlcbiAgbGV0IGZpbmRfZGVmYXVsdCBkZWYgcCB0ID0gbGlmdCAoUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBkZWYpIHAgdFxuICBsZXQgZmluZF9vcHRpb24gcCB0ID0gbGlmdCBQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcCB0XG4gIGxldCBtZW0gcCB0ID0gbGlmdCBQcmVkaWNhdGVNYXAubWVtIHAgdFxuXG4gIGxldCBhZGQgcHJlZGljYXRlX2lkIHggdGFiID1cbiAgICBsZXQgaGFzaCA9IGhhc2ggcHJlZGljYXRlX2lkIGluXG4gICAgbGV0IG9sZCA9IEEuZ2V0IHRhYiBoYXNoIGluXG4gICAgbGV0IF8gPSBBLnNldCB0YWIgaGFzaCAoUHJlZGljYXRlTWFwLmFkZCBwcmVkaWNhdGVfaWQgeCBvbGQpIGluXG4gICAgdGFiXG5cbiAgbGV0IHJlY3ljbGUgdGFiIGkgPSBBLnNldCB0YWIgaSBQcmVkaWNhdGVNYXAuZW1wdHlcbmVuZFxuXG5tb2R1bGUgTVByZWRpY2F0ZU1hcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmVkaWNhdGVNYXAudFxuXG4gIGxldCBwcmVkaWNhdGVfbWF4IF9wYXJhbWV0ZXIgX2hhbmRsZXIgaW5mbyBlcnJvciBfbGlzdCA9IGVycm9yLCBpbmZvLCAwXG4gIGxldCBlbXB0eSBfbiA9IFByZWRpY2F0ZU1hcC5lbXB0eVxuICBsZXQgaXRlciA9IFByZWRpY2F0ZU1hcC5pdGVyXG4gIGxldCBmaW5kX2RlZmF1bHQgPSBQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0XG4gIGxldCBmaW5kX29wdGlvbiA9IFByZWRpY2F0ZU1hcC5maW5kX29wdGlvblxuICBsZXQgbWVtID0gUHJlZGljYXRlTWFwLm1lbVxuICBsZXQgYWRkID0gUHJlZGljYXRlTWFwLmFkZFxuZW5kXG5cbm1vZHVsZSBDUHJlZGljYXRlTWFwID0gTVByZWRpY2F0ZU1hcFxuIiwiKCoqXG4gICogcHJpb3JpdHkubWxcbiAgKlxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDEzLTA3LTMwIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxNDoyMToxOSBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBzZWxlY3Rpb25fc3RyYXRlZ3kgPVxuICB8IEFsbF9yZW1haW5pbmdfZXZlbnRzXG4gIHwgV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzXG4gIHwgV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcblxudHlwZSB0cnlfdG9fcmVtb3ZlX2ZpcnN0ID0gTGF0ZV9ldmVudHMgfCBFYXJseV9ldmVudHNcblxudHlwZSBsZXZlbCA9XG4gIHwgSGlnaGVzdFxuICB8IEhpZ2hcbiAgfCBBYm92ZV9hdmVyYWdlXG4gIHwgQXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlXG4gIHwgTG93XG4gIHwgTG93ZXN0XG5cbmxldCB3ZWlnaHQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEhpZ2hlc3QgLT4gMFxuICB8IEhpZ2ggLT4gMVxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gMlxuICB8IEF2ZXJhZ2UgLT4gM1xuICB8IEJlbGxvd19hdmVyYWdlIC0+IDRcbiAgfCBMb3cgLT4gNVxuICB8IExvd2VzdCAtPiA2XG5cbmxldCBfY29tcGFyZV9sZXZlbCBsdmwxIGx2bDIgPSBjb21wYXJlICh3ZWlnaHQgbHZsMSkgKHdlaWdodCBsdmwyKVxuXG5sZXQgbWluX2xldmVsIGEgYiA9XG4gIGlmIGNvbXBhcmUgYSBiIDw9IDAgdGhlblxuICAgIGFcbiAgZWxzZVxuICAgIGJcblxubGV0IF9tYXhfbGV2ZWwgYSBiID1cbiAgaWYgY29tcGFyZSBhIGIgPD0gMCB0aGVuXG4gICAgYlxuICBlbHNlXG4gICAgYVxuXG5sZXQgaGlnaGVzdCA9IEhpZ2hlc3RcbmxldCBoaWdoID0gSGlnaFxubGV0IGFib3ZlX2F2ZXJhZ2UgPSBBYm92ZV9hdmVyYWdlXG5sZXQgYXZlcmFnZSA9IEF2ZXJhZ2VcbmxldCBiZWxsb3dfYXZlcmFnZSA9IEJlbGxvd19hdmVyYWdlXG5sZXQgbG93ID0gTG93XG5sZXQgbG93ZXN0ID0gTG93ZXN0XG5cbmxldCBzdHJpbmdfb2ZfbGV2ZWwgbGV2ZWwgPVxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgSGlnaGVzdCAtPiBcImhpZ2hlc3RcIlxuICB8IEhpZ2ggLT4gXCJoaWdoXCJcbiAgfCBBYm92ZV9hdmVyYWdlIC0+IFwiYWJvdmUgYXZlcmFnZVwiXG4gIHwgQXZlcmFnZSAtPiBcImF2ZXJhZ2VcIlxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFwiYmVsbG93IGF2ZXJhZ2VcIlxuICB8IExvdyAtPiBcImxvd1wiXG4gIHwgTG93ZXN0IC0+IFwibG93ZXN0XCJcblxubGV0IGxvd2VyIGxldmVsID1cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IEhpZ2hlc3QgLT4gU29tZSBIaWdoXG4gIHwgSGlnaCAtPiBTb21lIEFib3ZlX2F2ZXJhZ2VcbiAgfCBBYm92ZV9hdmVyYWdlIC0+IFNvbWUgQXZlcmFnZVxuICB8IEF2ZXJhZ2UgLT4gU29tZSBCZWxsb3dfYXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFNvbWUgTG93XG4gIHwgTG93IC0+IFNvbWUgTG93ZXN0XG4gIHwgTG93ZXN0IC0+IE5vbmVcblxubGV0IGhpZ2hlciBsZXZlbCA9XG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCBIaWdoZXN0IC0+IE5vbmVcbiAgfCBIaWdoIC0+IFNvbWUgSGlnaGVzdFxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gU29tZSBIaWdoXG4gIHwgQXZlcmFnZSAtPiBTb21lIEFib3ZlX2F2ZXJhZ2VcbiAgfCBCZWxsb3dfYXZlcmFnZSAtPiBTb21lIEF2ZXJhZ2VcbiAgfCBMb3cgLT4gU29tZSBCZWxsb3dfYXZlcmFnZVxuICB8IExvd2VzdCAtPiBTb21lIExvd1xuXG5tb2R1bGUgTGV2ZWxTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGxldmVsXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCBmIHggPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0cmluZ19vZl9sZXZlbCB4KVxuZW5kKVxuXG5tb2R1bGUgTGV2ZWxNYXAgPSBMZXZlbFNldE1hcC5NYXBcblxudHlwZSBwcmlvcml0aWVzID0ge1xuICBjcmVhdGlvbjogbGV2ZWw7XG4gIHVuYmluZGluZzogbGV2ZWw7XG4gIHJlbW92YWw6IGxldmVsO1xuICBvdGhlcl9ldmVudHM6IGxldmVsO1xuICBzdWJzdGl0dXRpb246IGxldmVsO1xuICBzaWRlX2VmZmVjdHM6IGxldmVsO1xuICBjYW5kaWRhdGVfc2V0X29mX2V2ZW50czogc2VsZWN0aW9uX3N0cmF0ZWd5O1xuICB0cnlfdG9fcmVtb3ZlX2ZpcnN0OiB0cnlfdG9fcmVtb3ZlX2ZpcnN0O1xufVxuKCoqIGVhY2ggZXZlbnQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgbGV2ZWwgY29ycmVzcG9uZGluZyBvZiBpdHMgYWN0aW9ucyAoaWYgbXVsdGlwbGUgYWN0aW9uLCB0aGVuLCB0aGUgbGVhc3QgY29ycmVzcG9uZGluZyBsZXZlbCBpcyBzZWxlY3RlZFxuIEV2ZW50cyB3aXRoIHRoZSBsZWFzdCBsZXZlbCBvZiBwcmlvcml0eSBhcmUgcmVtb3ZlZCBmaXJzdFxuIEFtb25nIHRoZW0sIHRoZSBjaG9pY2UgaXMgZHJpdmVuIGJ5IHRoZSBmaWVsZHMgJ2NhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzJyBhbmQgJ3RyeV90b19yZW1vdmVfZmlyc3QnICopXG5cbmxldCBjYXVzYWwgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2hlc3Q7XG4gICAgcmVtb3ZhbCA9IEhpZ2hlc3Q7XG4gICAgb3RoZXJfZXZlbnRzID0gSGlnaGVzdDtcbiAgICBzdWJzdGl0dXRpb24gPSBIaWdoZXN0O1xuICAgIHNpZGVfZWZmZWN0cyA9IEhpZ2hlc3Q7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCB3ZWFrID1cbiAge1xuICAgIGNyZWF0aW9uID0gSGlnaGVzdDtcbiAgICB1bmJpbmRpbmcgPSBIaWdoZXN0O1xuICAgIHJlbW92YWwgPSBIaWdoZXN0O1xuICAgIG90aGVyX2V2ZW50cyA9IEhpZ2hlc3Q7XG4gICAgc3Vic3RpdHV0aW9uID0gSGlnaDtcbiAgICBzaWRlX2VmZmVjdHMgPSBIaWdoO1xuICAgIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzID0gV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzO1xuICAgIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cztcbiAgfVxuXG5sZXQgc3Ryb25nID1cbiAge1xuICAgIGNyZWF0aW9uID0gSGlnaGVzdDtcbiAgICB1bmJpbmRpbmcgPSBIaWdoO1xuICAgIHJlbW92YWwgPSBBYm92ZV9hdmVyYWdlO1xuICAgIG90aGVyX2V2ZW50cyA9IEF2ZXJhZ2U7XG4gICAgc3Vic3RpdHV0aW9uID0gQmVsbG93X2F2ZXJhZ2U7XG4gICAgc2lkZV9lZmZlY3RzID0gTG93O1xuICAgIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzID0gV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzO1xuICAgIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cztcbiAgfVxuXG5sZXQgbl9zdG9yeSA9IHJlZiAxXG5sZXQgbl9icmFuY2ggPSByZWYgMVxuIiwidHlwZSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBXZWFrIHwgU3Ryb25nIHwgQ2F1c2FsXG50eXBlIG5ld19zdG9yeSA9IHsgaWQ6IGludDsgZ3JhcGg6IEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoIH1cbnR5cGUgc3RvcnkgPSBOZXcgb2YgbmV3X3N0b3J5IHwgU2FtZV9hcyBvZiBpbnRcblxudHlwZSAnYSBvbmVfY29tcHJlc3Npb24gPSB7XG4gIGxvZ19pbmZvOiAnYSBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0O1xuICBzdG9yeV9tb2RlOiBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU7XG4gIHN0b3J5OiBzdG9yeTtcbn1cblxubGV0IHN0cmluZ19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdHJpbmdcIiwgeCkpXG5cbmxldCBpbnRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBzIC0+IHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaW50XCIsIHgpKVxuXG5sZXQgbmV3X3N0b3J5X3RvX2pzb24gbmV3X3N0b3J5ID1cbiAgYEFzc29jXG4gICAgWyBcImlkXCIsIGBJbnQgbmV3X3N0b3J5LmlkOyBcImdyYXBoXCIsIEdyYXBoX2pzb24udG9fanNvbiBuZXdfc3RvcnkuZ3JhcGggXVxuXG5sZXQgbmV3X3N0b3J5X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBpZCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiaWRcIiBsKTtcbiAgICAgICAgIGdyYXBoID0gR3JhcGhfanNvbi5vZl9qc29uIChMaXN0LmFzc29jIFwiZ3JhcGhcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBuZXcgc3RvcnlcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBuZXcgc3RvcnlcIiwgeCkpXG5cbmxldCBzdG9yeV90b19qc29uIHN0b3J5ID1cbiAgbWF0Y2ggc3Rvcnkgd2l0aFxuICB8IE5ldyBuZXdfc3RvcnkgLT4gYEFzc29jIFsgXCJuZXdcIiwgbmV3X3N0b3J5X3RvX2pzb24gbmV3X3N0b3J5IF1cbiAgfCBTYW1lX2FzIGludCAtPiBgQXNzb2MgWyBcInNhbWVfYXNcIiwgYEludCBpbnQgXVxuXG5sZXQgc3Rvcnlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwibmV3XCIsIG5ld19zdG9yeSkgXSAtPiBOZXcgKG5ld19zdG9yeV9vZl9qc29uIG5ld19zdG9yeSlcbiAgfCBgQXNzb2MgWyAoXCJzYW1lX2FzXCIsIGBJbnQgaW50KSBdIC0+IFNhbWVfYXMgaW50XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5XCIsIHgpKVxuXG5sZXQgc3RvcnlfbW9kZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBDYXVzYWwgLT4gYFN0cmluZyBcIkNhdXNhbFwiXG4gIHwgV2VhayAtPiBgU3RyaW5nIFwiV2Vha1wiXG4gIHwgU3Ryb25nIC0+IGBTdHJpbmcgXCJTdHJvbmdcIlxuXG5sZXQgc3RvcnlfbW9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQ2F1c2FsXCIgLT4gQ2F1c2FsXG4gIHwgYFN0cmluZyBcIldlYWtcIiAtPiBXZWFrXG4gIHwgYFN0cmluZyBcIlN0cm9uZ1wiIC0+IFN0cm9uZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBtb2RlXCIsIHgpKVxuXG5sZXQgdG9fanNvbiBsb2dfaW5mb190b19qc29uIG9uZV9jb21wcmVzc2lvbiA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJsb2dfaW5mb1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAoVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gbG9nX2luZm9fdG9fanNvbilcbiAgICAgICAgICAgICAoTGlzdC5yZXYgb25lX2NvbXByZXNzaW9uLmxvZ19pbmZvKSkgKTtcbiAgICAgIFwic3RvcnlfbW9kZVwiLCBzdG9yeV9tb2RlX3RvX2pzb24gb25lX2NvbXByZXNzaW9uLnN0b3J5X21vZGU7XG4gICAgICBcInN0b3J5XCIsIHN0b3J5X3RvX2pzb24gb25lX2NvbXByZXNzaW9uLnN0b3J5O1xuICAgIF1cblxubGV0IG9mX2pzb24gbG9nX2luZm9fb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGxvZ19pbmZvID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJsb2dfaW5mb1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8ub2ZfanNvbiBsb2dfaW5mb19vZl9qc29uKVxuICAgICAgICAgICAgICAgKExpc3QucmV2IGwpXG4gICAgICAgICAgIHwgX3kgLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnkgY29tcHV0YXRpb25cIiwgeCkpKTtcbiAgICAgICAgIHN0b3J5ID0gc3Rvcnlfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0b3J5XCIgbCk7XG4gICAgICAgICBzdG9yeV9tb2RlID0gc3RvcnlfbW9kZV9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlfbW9kZVwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnkgY29tcHV0YXRpb25cIiwgeCkpXG5cbnR5cGUgcGhhc2UgPSBTdGFydCB8IElucHJvZ3Jlc3MgfCBTdWNjZXNzIHwgRmFpbGx1cmVcblxubGV0IHN0YXJ0ID0gXCJzdGFydGluZyBjb21wdXRhdGlvblwiXG5sZXQgaW5wcm9ncmVzcyA9IFwiY29tcHV0YXRpb24gaW4gcHJvZ3Jlc3NcIlxubGV0IHN1Y2Nlc3MgPSBcImNvbXB1dGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIlxubGV0IGZhaWxsdXJlID0gXCJjb21wdXRhdGlvbiAocGFydGlhbGx5KSBmYWlsZWRcIlxuXG5sZXQgcGhhc2VfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgU3RhcnQgLT4gYFN0cmluZyBzdGFydFxuICB8IElucHJvZ3Jlc3MgLT4gYFN0cmluZyBpbnByb2dyZXNzXG4gIHwgU3VjY2VzcyAtPiBgU3RyaW5nIHN1Y2Nlc3NcbiAgfCBGYWlsbHVyZSAtPiBgU3RyaW5nIGZhaWxsdXJlXG5cbmxldCBwaGFzZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gc3RhcnQgLT4gU3RhcnRcbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gaW5wcm9ncmVzcyAtPiBJbnByb2dyZXNzXG4gIHwgYFN0cmluZyBzIHdoZW4gcyA9IHN1Y2Nlc3MgLT4gU3VjY2Vzc1xuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBmYWlsbHVyZSAtPiBGYWlsbHVyZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwaGFzZVwiLCB4KSlcblxudHlwZSBwcm9ncmVzc19iYXIgPSB7IGJvb2w6IHN0cmluZzsgY3VycmVudDogaW50OyB0b3RhbDogaW50IH1cblxubGV0IHByb2dyZXNzX2Jhcl90b19qc29uIHByb2dyZXNzX2JhciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJwcm9ncmVzc19iYXJcIixcbiAgICAgICAgYEFzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJib29sXCIsIGBTdHJpbmcgcHJvZ3Jlc3NfYmFyLmJvb2w7XG4gICAgICAgICAgICBcImN1cnJlbnRcIiwgYEludCBwcm9ncmVzc19iYXIuY3VycmVudDtcbiAgICAgICAgICAgIFwidG90YWxcIiwgYEludCBwcm9ncmVzc19iYXIudG90YWw7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IHByb2dyZXNzX2Jhcl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDEgLT5cbiAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInByb2dyZXNzX2JhclwiIGwgd2l0aFxuICAgIHwgYEFzc29jIGwgd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgKHRyeVxuICAgICAgICAge1xuICAgICAgICAgICBib29sID0gc3RyaW5nX29mX2pzb24gKExpc3QuYXNzb2MgXCJib29sXCIgbCk7XG4gICAgICAgICAgIGN1cnJlbnQgPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImN1cnJlbnRcIiBsKTtcbiAgICAgICAgICAgdG90YWwgPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInRvdGFsXCIgbCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKSlcbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKVxuXG50eXBlICdhIG1lc3NhZ2UgPVxuICB8IFBoYXNlIG9mIHBoYXNlICogc3RyaW5nXG4gIHwgUHJvZ3Jlc3Mgb2YgcHJvZ3Jlc3NfYmFyXG4gIHwgU3Rvcnkgb2YgJ2Egb25lX2NvbXByZXNzaW9uXG5cbmxldCBtZXNzYWdlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IFBoYXNlIChwLCBtKSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJQSEFTRVwiOyBwaGFzZV90b19qc29uIHA7IGBTdHJpbmcgbSBdXG4gIHwgUHJvZ3Jlc3MgcCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJQUk9HUkVTU1wiOyBwcm9ncmVzc19iYXJfdG9fanNvbiBwIF1cbiAgfCBTdG9yeSBzIC0+IGBMaXN0IFsgYFN0cmluZyBcIlNUT1JZXCI7IHRvX2pzb24gKGZ1biBfIC0+IGBOdWxsKSBzIF1cblxubGV0IG1lc3NhZ2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUEhBU0VcIjsgcDsgYFN0cmluZyBtIF0gLT4gUGhhc2UgKHBoYXNlX29mX2pzb24gcCwgbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQUk9HUkVTU1wiOyBwIF0gLT4gUHJvZ3Jlc3MgKHByb2dyZXNzX2Jhcl9vZl9qc29uIHApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiU1RPUllcIjsgcyBdIC0+IFN0b3J5IChvZl9qc29uIChmdW4gXyAtPiAoKSkgcylcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc3RvcnkgbWVzc2FnZVwiLCB4KSlcbiIsIigqKlxuICAqIGNmbG93X2hhbmRsZXIubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMy0wOC0wMiBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMTkgMTQ6MzA6NDAgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ2Zsb3dfaGFuZGxlciA9IHNpZ1xuICB0eXBlIHNvcnRfYWxnb19mb3Jfc3Rvcmllc1xuICB0eXBlIGNvbXByZXNzaW9uX21vZGVcblxuICB2YWwgZ2V0X2NhdXNhbF90cmFjZSA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuICB2YWwgZ2V0X2NhdXNhbF90cmFjZV9vbmx5IDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfd2Vha19jb21wcmVzc2lvbiA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuICB2YWwgZ2V0X3N0cm9uZ19jb21wcmVzc2lvbiA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuXG4gIHR5cGUgcGFyYW1ldGVyID0ge1xuICAgIGNhY2hlX3NpemU6IGludCBvcHRpb247XG4gICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlOiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb247XG4gICAgY29tcHJlc3Npb25fbW9kZTogY29tcHJlc3Npb25fbW9kZTtcbiAgICBwcmlvcml0aWVzX3dlYWs6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19zdHJvbmc6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19jYXVzYWw6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgY29tcHV0ZV9hbGxfc3RvcmllczogYm9vbDtcbiAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXM6IHNvcnRfYWxnb19mb3Jfc3RvcmllcztcbiAgICBsb2dnZXJfZXJyOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX3Byb2ZpbGluZzogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9vdXQ6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfc2VydmVyOiBMb2dnZXJzLnQ7XG4gICAganNvbl9idWZmZXI6XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSBGaWZvLnQgcmVmIG9wdGlvbjtcbiAgICBsb2dfc3RlcDogYm9vbDtcbiAgICBkZWJ1Z19tb2RlOiBib29sO1xuICAgIGxvZ2dlcl9zdGVwOiBMb2dnZXJzLnQ7XG4gICAga2FzYTogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycztcbiAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzOiBib29sO1xuICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyOiBpbnQgb3B0aW9uO1xuICAgIHRpbWVfaW5kZXBlbmRlbnQ6IGJvb2w7XG4gICAgYmxhY2tsaXN0X2V2ZW50czogYm9vbDtcbiAgICBzZXJ2ZXI6IGJvb2w7XG4gICAgaXNfc2VydmVyX2NoYW5uZWxfb246IGJvb2w7XG4gICAgZHVtcDogc3RyaW5nIC0+IHVuaXQ7XG4gIH1cbiAgKCoqIGEgc3RydWN0IHdoaWNoIGNvbnRhaW5zIHBhcmFtZXRlcml6YWJsZSBvcHRpb25zICopXG5cbiAgdmFsIGdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgOlxuICAgIHBhcmFtZXRlciAtPiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb25cblxuICB0eXBlIGhhbmRsZXIgPSB7XG4gICAgKCpoYW5kbGVyIHRvIGludGVycHJldCBhYnN0cmFjdCB2YWx1ZXMqKVxuICAgIGVudjogTW9kZWwudDtcbiAgICBydWxlX25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBhZ2VudF9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgc3RlcHNfYnlfY29sdW1uOlxuICAgICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudDtcbiAgfVxuXG4gIHR5cGUgJ2EgemVyb2FyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2FcblxuICB0eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdiXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2NcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2RcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ2QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2VcblxuICB2YWwgZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2l0dGVyYXRpb25fYm91bmQgOiBwYXJhbWV0ZXIgLT4gaW50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIDogcGFyYW1ldGVyIC0+IGludCBvcHRpb25cbiAgdmFsIHNldF9maXJzdF9zdG9yeV9wZXJfb2JzIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIGJ1aWxkX3BhcmFtZXRlciA6XG4gICAgY2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbGVkX2Zyb20gLT5cbiAgICA/c2VuZF9tZXNzYWdlOihzdHJpbmcgLT4gdW5pdCkgLT5cbiAgICBub25lOmJvb2wgLT5cbiAgICB3ZWFrOmJvb2wgLT5cbiAgICBzdHJvbmc6Ym9vbCAtPlxuICAgIHVuaXQgLT5cbiAgICBwYXJhbWV0ZXJcblxuICB2YWwgc3RyaW5nX29mX2V4biA6IGV4biAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCBpc19zZXJ2ZXJfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfY29tcHJlc3Npb25fd2VhayA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9jb21wcmVzc2lvbl9zdHJvbmcgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfY29tcHJlc3Npb25fbm9uZSA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9wcmlvcml0aWVzIDogcGFyYW1ldGVyIC0+IFByaW9yaXR5LnByaW9yaXRpZXMgb3B0aW9uXG4gIHZhbCBnZXRfYWxsX3N0b3JpZXNfcGVyX29icyA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfbG9nX3N0ZXAgOiBwYXJhbWV0ZXIgLT4gYm9vbCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9sb2dfc3RlcCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfZGVidWdnaW5nX21vZGUgOiBwYXJhbWV0ZXIgLT4gYm9vbCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9kZWJ1Z2dpbmdfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBnZXRfcHJvZmlsaW5nX2xvZ2dlciA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIGdldF9zZXJ2ZXJfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIGlzX3NlcnZlcl9jaGFubmVsX29uIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIGdldF9sb2dnZXIgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50XG4gIHZhbCBzZXRfbG9nZ2VyIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9vdXRfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9vdXRfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfZGVidWdnaW5nX2NoYW5uZWwgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50XG4gIHZhbCBzZXRfZGVidWdnaW5nX2NoYW5uZWwgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2thc2FfcGFyYW1ldGVycyA6IHBhcmFtZXRlciAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzXG5cbiAgdmFsIHNldF9rYXNhX3BhcmFtZXRlcnMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBkb193ZV91c2VfYnVja2V0X3NvcnQgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgdXNlX2J1Y2tldF9zb3J0IDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgdXNlX2Z1c2lvbl9zb3J0IDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgYWx3YXlzX2Rpc2FtYmlndWF0ZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgaW5pdF9oYW5kbGVyIDogTW9kZWwudCAtPiBoYW5kbGVyXG4gIHZhbCBzdHJpbmdfb2ZfcnVsZV9pZCA6IGhhbmRsZXIgLT4gaW50IC0+IHN0cmluZ1xuICB2YWwgc3RyaW5nX29mX2FnZW50X2lkIDogaGFuZGxlciAtPiBpbnQgLT4gc3RyaW5nXG5cbiAgdmFsIGdldF9wcmVkaWNhdGVfbWFwIDpcbiAgICBoYW5kbGVyIC0+XG4gICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLnRcblxuICB2YWwgZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2JsYWNrbGlzdF9ldmVudHMgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+IHN0cmluZyAtPiB1bml0XG4gIHZhbCByZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+IHVuaXRcbiAgdmFsIHNhdmVfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+IGJvb2wgKiBpbnQgKiBpbnQgKiBpbnQgLT4gdW5pdFxuICB2YWwgcmVzZXRfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+IHVuaXRcbiAgdmFsIHNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gKHN0cmluZyAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+ICh1bml0IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzZXRfc2F2ZV9wcm9ncmVzc19iYXIgOlxuICAgIHBhcmFtZXRlciAtPiAoYm9vbCAqIGludCAqIGludCAqIGludCAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcblxuICB2YWwgc2V0X3Jlc2V0X3Byb2dyZXNzX2JhciA6IHBhcmFtZXRlciAtPiAodW5pdCAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcblxuICB2YWwgc2F2ZV9lcnJvcl9sb2cgOlxuICAgIHBhcmFtZXRlciAtPiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIgLT4gdW5pdFxuXG4gIHZhbCBzZXRfc2F2ZV9lcnJvcl9sb2cgOlxuICAgIHBhcmFtZXRlciAtPlxuICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIgLT4gdW5pdCkgLT5cbiAgICBwYXJhbWV0ZXJcblxuICB2YWwgcHVzaF9qc29uIDpcbiAgICBwYXJhbWV0ZXIgLT4gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBTdG9yeV9qc29uLm1lc3NhZ2UgLT4gdW5pdFxuXG4gIHZhbCBwb3BfanNvbiA6XG4gICAgcGFyYW1ldGVyIC0+IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIG9wdGlvblxuZW5kXG5cbm1vZHVsZSBDZmxvd19oYW5kbGVyIDogQ2Zsb3dfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldCB8IEZ1c2lvblxuXG4gIHR5cGUgY29tcHJlc3Npb25fbW9kZSA9IHtcbiAgICBjYXVzYWxfdHJhY2U6IGJvb2w7XG4gICAgd2Vha19jb21wcmVzc2lvbjogYm9vbDtcbiAgICBzdHJvbmdfY29tcHJlc3Npb246IGJvb2w7XG4gIH1cblxuICBsZXQgZ2V0X2NhdXNhbF90cmFjZSB4ID0geC5jYXVzYWxfdHJhY2VcbiAgbGV0IGdldF9jYXVzYWxfdHJhY2Vfb25seSB4ID0gbm90ICh4LndlYWtfY29tcHJlc3Npb24gfHwgeC5zdHJvbmdfY29tcHJlc3Npb24pXG4gIGxldCBnZXRfd2Vha19jb21wcmVzc2lvbiB4ID0geC53ZWFrX2NvbXByZXNzaW9uXG4gIGxldCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uIHggPSB4LnN0cm9uZ19jb21wcmVzc2lvblxuXG4gIHR5cGUgcGFyYW1ldGVyID0ge1xuICAgIGNhY2hlX3NpemU6IGludCBvcHRpb247XG4gICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlOiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb247XG4gICAgY29tcHJlc3Npb25fbW9kZTogY29tcHJlc3Npb25fbW9kZTtcbiAgICBwcmlvcml0aWVzX3dlYWs6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19zdHJvbmc6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19jYXVzYWw6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgY29tcHV0ZV9hbGxfc3RvcmllczogYm9vbDtcbiAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXM6IHNvcnRfYWxnb19mb3Jfc3RvcmllcztcbiAgICBsb2dnZXJfZXJyOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX3Byb2ZpbGluZzogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9vdXQ6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfc2VydmVyOiBMb2dnZXJzLnQ7XG4gICAganNvbl9idWZmZXI6XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSBGaWZvLnQgcmVmIG9wdGlvbjtcbiAgICBsb2dfc3RlcDogYm9vbDtcbiAgICBkZWJ1Z19tb2RlOiBib29sO1xuICAgIGxvZ2dlcl9zdGVwOiBMb2dnZXJzLnQ7XG4gICAga2FzYTogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycztcbiAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzOiBib29sO1xuICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyOiBpbnQgb3B0aW9uO1xuICAgIHRpbWVfaW5kZXBlbmRlbnQ6IGJvb2w7XG4gICAgYmxhY2tsaXN0X2V2ZW50czogYm9vbDtcbiAgICBzZXJ2ZXI6IGJvb2w7XG4gICAgaXNfc2VydmVyX2NoYW5uZWxfb246IGJvb2w7XG4gICAgZHVtcDogc3RyaW5nIC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5jdXJyZW50X2NvbXByZXNzaW9uX21vZGVcblxuICBsZXQgYnVpbGRfcGFyYW1ldGVyIH5jYWxsZWRfZnJvbVxuICAgICAgPyhzZW5kX21lc3NhZ2UgPVxuICAgICAgICBmdW4geCAtPlxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIgXCIlc1wiIHg7XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlcikgfm5vbmUgfndlYWsgfnN0cm9uZyAoKVxuICAgICAgPVxuICAgIGxldCAoIHNlcnZlcixcbiAgICAgICAgICBvdXRfc2VydmVyLFxuICAgICAgICAgIG91dF9jaGFubmVsLFxuICAgICAgICAgIG91dF9jaGFubmVsX2VycixcbiAgICAgICAgICBvdXRfY2hhbm5lbF9wcm9maWxpbmcsXG4gICAgICAgICAgbG9nX3N0ZXBfY2hhbm5lbCApID1cbiAgICAgIG1hdGNoIGNhbGxlZF9mcm9tIHdpdGhcbiAgICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIC0+XG4gICAgICAgICggdHJ1ZSxcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCB+bW9kZTpMb2dnZXJzLkpzb24gc3Rkb3V0LFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9pbmZpbml0ZV9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9pbmZpbml0ZV9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9jaXJjdWxhcl9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9jaXJjdWxhcl9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MX1RhYnVsYXIgKCkgKVxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTaW1cbiAgICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSW50ZXJuYWxpc2VkIC0+XG4gICAgICAgIGxldCBjaGFubmVsID0gS2FwcGFfZmlsZXMub3Blbl9icmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nICgpIGluXG4gICAgICAgICggZmFsc2UsXG4gICAgICAgICAgTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyXG4gICAgICAgICAgICAoRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFubmVsKSxcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIEZvcm1hdC5zdGRfZm9ybWF0dGVyIClcbiAgICBpblxuICAgIHtcbiAgICAgIHNlcnZlcjtcbiAgICAgIGlzX3NlcnZlcl9jaGFubmVsX29uID0gc2VydmVyO1xuICAgICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gTm9uZTtcbiAgICAgIHByaW9yaXRpZXNfd2VhayA9IFByaW9yaXR5LndlYWs7XG4gICAgICBwcmlvcml0aWVzX3N0cm9uZyA9IFByaW9yaXR5LnN0cm9uZztcbiAgICAgIHByaW9yaXRpZXNfY2F1c2FsID0gUHJpb3JpdHkuY2F1c2FsO1xuICAgICAgY29tcHV0ZV9hbGxfc3RvcmllcyA9IGZhbHNlO1xuICAgICAgc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gQnVja2V0O1xuICAgICAgbG9nZ2VyX3NlcnZlciA9IG91dF9zZXJ2ZXI7XG4gICAgICBsb2dnZXJfb3V0ID0gb3V0X2NoYW5uZWw7XG4gICAgICBsb2dnZXJfZXJyID0gb3V0X2NoYW5uZWxfZXJyO1xuICAgICAgbG9nZ2VyX3Byb2ZpbGluZyA9IG91dF9jaGFubmVsX3Byb2ZpbGluZztcbiAgICAgIGpzb25fYnVmZmVyID0gTm9uZTtcbiAgICAgIGNvbXByZXNzaW9uX21vZGUgPVxuICAgICAgICB7XG4gICAgICAgICAgY2F1c2FsX3RyYWNlID0gbm9uZTtcbiAgICAgICAgICB3ZWFrX2NvbXByZXNzaW9uID0gd2VhaztcbiAgICAgICAgICBzdHJvbmdfY29tcHJlc3Npb24gPSBzdHJvbmc7XG4gICAgICAgIH07XG4gICAgICBjYWNoZV9zaXplID0gUGFyYW1ldGVyLmdldF9jYWNoZV9zaXplICgpO1xuICAgICAgZGVidWdfbW9kZSA9IGZhbHNlO1xuICAgICAgbG9nX3N0ZXAgPSB0cnVlO1xuICAgICAgbG9nZ2VyX3N0ZXAgPSBsb2dfc3RlcF9jaGFubmVsO1xuICAgICAga2FzYSA9IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpO1xuICAgICAgYWx3YXlzX2Rpc2FtYmlndWF0ZV9pbml0aWFsX3N0YXRlcyA9IHRydWU7XG4gICAgICBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IE5vbmU7XG4gICAgICB0aW1lX2luZGVwZW5kZW50ID0gIVBhcmFtZXRlci50aW1lX2luZGVwZW5kZW50O1xuICAgICAgYmxhY2tsaXN0X2V2ZW50cyA9ICFQYXJhbWV0ZXIuYmxhY2tsaXN0X2V2ZW50cztcbiAgICAgIGR1bXAgPSBzZW5kX21lc3NhZ2U7XG4gICAgfVxuXG4gIGxldCBzZXRfY29tcHJlc3Npb25fd2VhayBwID1cbiAgICB7IHAgd2l0aCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBTb21lIFN0b3J5X2pzb24uV2VhayB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl9zdHJvbmcgcCA9XG4gICAgeyBwIHdpdGggY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gU29tZSBTdG9yeV9qc29uLlN0cm9uZyB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl9ub25lIHAgPVxuICAgIHsgcCB3aXRoIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgfVxuXG4gIHR5cGUgaGFuZGxlciA9IHtcbiAgICBlbnY6IE1vZGVsLnQ7XG4gICAgcnVsZV9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgYWdlbnRfbmFtZV9jYWNoZTogc3RyaW5nIGFycmF5O1xuICAgIHN0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChpbnQgKiBQcmVkaWNhdGVfbWFwcy5wcmVkaWNhdGVfdmFsdWUgKiBib29sKSBsaXN0XG4gICAgICBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLnQ7XG4gIH1cblxuICB0eXBlICdhIHplcm9hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdhXG5cbiAgdHlwZSAoJ2EsICdiKSB1bmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnYlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdjXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdkXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBxdWF0ZXJuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdkIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdlXG5cbiAgbGV0IGluaXRfaGFuZGxlciBlbnYgPVxuICAgIGxldCBuX3J1bGVzID0gTW9kZWwubmJfcnVsZXMgZW52IGluXG4gICAgbGV0IHJ1bGVfbmFtZV9jYWNoZSA9IEFycmF5Lm1ha2Ugbl9ydWxlcyBcIlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgICAgKGZ1biB4ICgpIHIgLT5cbiAgICAgICAgICBydWxlX25hbWVfY2FjaGUuKHgpIDwtXG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KVxuICAgICAgICAgICAgICByLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUpXG4gICAgICAgICgpIGVudlxuICAgIGluXG4gICAgbGV0IG5fYWdlbnRzID0gU2lnbmF0dXJlLnNpemUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSBpblxuICAgIGxldCBhZ2VudF9uYW1lX2NhY2hlID1cbiAgICAgIEFycmF5LmluaXQgbl9hZ2VudHMgKGZ1biB4IC0+XG4gICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikgeClcbiAgICBpblxuICAgIGxldCBzdGVwc19ieV9jb2x1bW4gPSBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLmVtcHR5IDAgaW5cbiAgICB7IGVudjsgcnVsZV9uYW1lX2NhY2hlOyBhZ2VudF9uYW1lX2NhY2hlOyBzdGVwc19ieV9jb2x1bW4gfVxuXG4gIGxldCBzdHJpbmdfb2ZfZXhuIF94ID0gU29tZSBcIlwiXG5cbiAgbGV0IGdldF9wcmlvcml0aWVzIHBhcmFtZXRlciA9XG4gICAgbWF0Y2ggcGFyYW1ldGVyLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgU3RvcnlfanNvbi5XZWFrIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfd2Vha1xuICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPiBTb21lIHBhcmFtZXRlci5wcmlvcml0aWVzX3N0cm9uZ1xuICAgIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPiBTb21lIHBhcmFtZXRlci5wcmlvcml0aWVzX2NhdXNhbFxuXG4gIGxldCBzZXRfZmlyc3Rfc3RvcnlfcGVyX29icyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggY29tcHV0ZV9hbGxfc3RvcmllcyA9IGZhbHNlIH1cblxuICBsZXQgc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGNvbXB1dGVfYWxsX3N0b3JpZXMgPSB0cnVlIH1cblxuICBsZXQgZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmNvbXB1dGVfYWxsX3N0b3JpZXNcbiAgbGV0IGdldF9kZWJ1Z2dpbmdfbW9kZSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuZGVidWdfbW9kZVxuICBsZXQgc2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciBib29sID0geyBwYXJhbWV0ZXIgd2l0aCBkZWJ1Z19tb2RlID0gYm9vbCB9XG4gIGxldCBnZXRfbG9nX3N0ZXAgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ19zdGVwXG4gIGxldCBzZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGJvb2wgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ19zdGVwID0gYm9vbCB9XG4gIGxldCBnZXRfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfc3RlcFxuICBsZXQgc2V0X2xvZ2dlciBwYXJhbWV0ZXIgZm10ID0geyBwYXJhbWV0ZXIgd2l0aCBsb2dnZXJfc3RlcCA9IGZtdCB9XG4gIGxldCBnZXRfb3V0X2NoYW5uZWwgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9vdXRcbiAgbGV0IHNldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIgZm10ID0geyBwYXJhbWV0ZXIgd2l0aCBsb2dnZXJfb3V0ID0gZm10IH1cbiAgbGV0IGdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nZ2VyX2VyclxuICBsZXQgc2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9lcnIgPSBmbXQgfVxuICBsZXQgZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIua2FzYVxuXG4gIGxldCBzZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlciBwYXJhbWV0ZXInID1cbiAgICB7IHBhcmFtZXRlcicgd2l0aCBrYXNhID0gcGFyYW1ldGVyIH1cblxuICBsZXQgZG9fd2VfdXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlciA9IHBhcmFtZXRlci5zb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXRcblxuICBsZXQgdXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBzb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXQgfVxuXG4gIGxldCB1c2VfZnVzaW9uX3NvcnQgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEZ1c2lvbiB9XG5cbiAgbGV0IGFsd2F5c19kaXNhbWJpZ3VhdGUgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIuYWx3YXlzX2Rpc2FtYmlndWF0ZV9pbml0aWFsX3N0YXRlc1xuXG4gIGxldCBzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXIgYm9vbCA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzID0gYm9vbCB9XG5cbiAgbGV0IGRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgPSBOb25lIH1cblxuICBsZXQgc2V0X2l0dGVyYXRpb25fYm91bmQgcGFyYW1ldGVyIGludCA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IFNvbWUgaW50IH1cblxuICBsZXQgZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyXG5cbiAgbGV0IGdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfcHJvZmlsaW5nXG4gIGxldCBzdHJpbmdfb2ZfcnVsZV9pZCBoYW5kbGVyIGkgPSBoYW5kbGVyLnJ1bGVfbmFtZV9jYWNoZS4oaSlcbiAgbGV0IHN0cmluZ19vZl9hZ2VudF9pZCBoYW5kbGVyIGkgPSBoYW5kbGVyLmFnZW50X25hbWVfY2FjaGUuKGkpXG4gIGxldCBnZXRfcHJlZGljYXRlX21hcCBoYW5kbGVyID0gaGFuZGxlci5zdGVwc19ieV9jb2x1bW5cbiAgbGV0IGdldF9pc190aW1lX2luZGVwZW5kZW50IHBhcmFtZXRlciA9IHBhcmFtZXRlci50aW1lX2luZGVwZW5kZW50XG4gIGxldCBnZXRfYmxhY2tsaXN0X2V2ZW50cyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuYmxhY2tsaXN0X2V2ZW50c1xuICBsZXQgaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnNlcnZlclxuICBsZXQgZ2V0X3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfc2VydmVyXG5cbiAgbGV0IHNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXIgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBsb2dnZXJfc2VydmVyID0gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyO1xuICAgICAgaXNfc2VydmVyX2NoYW5uZWxfb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgbGV0IGlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlciA9IHBhcmFtZXRlci5pc19zZXJ2ZXJfY2hhbm5lbF9vblxuXG4gIGxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIHggPVxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSB4XG5cbiAgbGV0IGR1bXBfanNvbiBwYXJhbWV0ZXIgbWVzc2FnZSA9XG4gICAgaWYgaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgIHBhcmFtZXRlci5kdW1wXG4gICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChTdG9yeV9qc29uLm1lc3NhZ2VfdG9fanNvbiBtZXNzYWdlKSlcblxuICBsZXQgc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIHggPVxuICAgIGxldCBiLCBpLCBfaiwgbl9zdG9yaWVzID0geCBpblxuICAgIGxldCAoKSA9XG4gICAgICBkdW1wX2pzb24gcGFyYW1ldGVyXG4gICAgICAgIChTdG9yeV9qc29uLlByb2dyZXNzXG4gICAgICAgICAgIHtcbiAgICAgICAgICAgICBTdG9yeV9qc29uLmJvb2wgPVxuICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgXCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBcImZhbHNlXCIpO1xuICAgICAgICAgICAgIFN0b3J5X2pzb24uY3VycmVudCA9IGk7XG4gICAgICAgICAgICAgU3RvcnlfanNvbi50b3RhbCA9IG5fc3RvcmllcztcbiAgICAgICAgICAgfSlcbiAgICBpblxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfcHJvZ3Jlc3NfYmFyIHhcblxuICBsZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyICgpXG5cbiAgbGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlICgpXG5cbiAgbGV0IHNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtZXRlci5rYXNhIHdpdGhcbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBmO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtZXRlci5rYXNhIHdpdGhcbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlID0gZjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgbGV0IHNldF9zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7IHBhcmFtZXRlci5rYXNhIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgPSBmIH07XG4gICAgfVxuXG4gIGxldCBzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9XG4gICAgICAgIHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgPSBmIH07XG4gICAgfVxuXG4gIGxldCBzYXZlX2Vycm9yX2xvZyBwYXJhbWV0ZXIgeCA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0IHhcblxuICBsZXQgc2V0X3NhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9IHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgPSBmIH07XG4gICAgfVxuXG4gIGxldCBwdXNoX2pzb24gcGFyYW1ldGVyIGpzb24gPVxuICAgIG1hdGNoIHBhcmFtZXRlci5qc29uX2J1ZmZlciB3aXRoXG4gICAgfCBOb25lIC0+IGR1bXBfanNvbiBwYXJhbWV0ZXIganNvblxuICAgIHwgU29tZSByZWYgLT4gcmVmIDo9IEZpZm8ucHVzaCBqc29uICFyZWZcblxuICBsZXQgcG9wX2pzb24gcGFyYW1ldGVyID1cbiAgICBtYXRjaCBwYXJhbWV0ZXIuanNvbl9idWZmZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJlZiAtPlxuICAgICAgbGV0IGZpZm8sIGVsdF9vcHQgPSBGaWZvLnBvcCAhcmVmIGluXG4gICAgICBsZXQgKCkgPSByZWYgOj0gZmlmbyBpblxuICAgICAgZWx0X29wdFxuZW5kXG4iLCIoKipcbiAgKiBrYXBwYV9pbnN0YW50aWF0aW9uLm1sXG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI5LzA4LzIwMTFcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMDIvMDgvMjAxNVxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbmxldCBjb21wb3NlX3dpdGhfaGFuZGxlciBmIGcgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeCA9XG4gIGxldCBlcnJvciwgeSA9IGcgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeCBpblxuICBmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHlcblxubW9kdWxlIFAgPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzXG5cbm1vZHVsZSB0eXBlIENmbG93X3NpZ25hdHVyZSA9IHNpZ1xuICBtb2R1bGUgSCA6IENmbG93X2hhbmRsZXIuQ2Zsb3dfaGFuZGxlclxuXG4gIHR5cGUgYWdlbnRfaWQgPSBpbnRcblxuICBtb2R1bGUgQWdlbnRJZFNldCA6IFNldE1hcC5TZXQgd2l0aCB0eXBlIGVsdCA9IGFnZW50X2lkXG5cbiAgdHlwZSBpbnRlcm5hbF9zdGF0ZSA9IGludFxuICB0eXBlIHNpZGVfZWZmZWN0ID0gSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgbGlzdFxuXG4gIHZhbCBlbXB0eV9zaWRlX2VmZmVjdCA6IHNpZGVfZWZmZWN0XG5cbiAgdmFsIGFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlIDpcbiAgICBJbnN0YW50aWF0aW9uLmJpbmRpbmdfdHlwZSAtPiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcblxuICB2YWwgc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSA6XG4gICAgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3R5cGUgLT4gSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICB2YWwgYWdlbnRfaWRfb2ZfYWdlbnQgOiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIC0+IGludFxuICB2YWwgYWdlbnRfbmFtZV9vZl9hZ2VudCA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgLT4gSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG5cbiAgdmFsIGFnZW50X29mX3NpdGUgOlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IEluc3RhbnRpYXRpb24uY29uY3JldGVcblxuICB2YWwgYWdlbnRfaWRfb2Zfc2l0ZSA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IGludFxuXG4gIHZhbCBhZ2VudF9uYW1lX29mX3NpdGUgOlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuXG4gIHZhbCBzaXRlX25hbWVfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICB2YWwgYnVpbGRfZ3JpZCA6XG4gICAgKFRyYWNlLnN0ZXAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0KSBsaXN0IC0+XG4gICAgYm9vbCAtPlxuICAgIEguaGFuZGxlciAtPlxuICAgIENhdXNhbC5ncmlkXG5cbiAgdmFsIHByaW50X3NpZGVfZWZmZWN0IDogTG9nZ2Vycy50IC0+IHNpZGVfZWZmZWN0IC0+IHVuaXRcblxuICB2YWwgc2lkZV9lZmZlY3Rfb2ZfbGlzdCA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgbGlzdCAtPiBzaWRlX2VmZmVjdFxuXG4gIHZhbCBnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIDogVHJhY2Uuc3RlcCAtPiBpbnQgb3B0aW9uXG4gIHZhbCBnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAgOiBUcmFjZS5zdGVwIC0+IGZsb2F0IG9wdGlvblxuXG4gIHZhbCBsZXZlbF9vZl9ldmVudCA6XG4gICAgUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb24gLT5cbiAgICAoVHJhY2Uuc3RlcCwgYWdlbnRfaWQgLT4gYm9vbCwgUHJpb3JpdHkubGV2ZWwpIEguYmluYXJ5XG5cbiAgdmFsIGRpc2FtYmlndWF0ZSA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgY2xlYW5fZXZlbnRzIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBmaWxsX3NpcGhvbiA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgc3BsaXRfaW5pdCA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgYWdlbnRfaWRfaW5fb2JzIDogKFRyYWNlLnN0ZXAsIEFnZW50SWRTZXQudCkgSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBDZmxvd19saW5rZXIgOiBDZmxvd19zaWduYXR1cmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEggPSBDZmxvd19oYW5kbGVyLkNmbG93X2hhbmRsZXJcbiAgbW9kdWxlIFBJID0gSW5zdGFudGlhdGlvblxuXG4gIHR5cGUgYWdlbnRfaWQgPSBpbnRcbiAgdHlwZSBzaWRlX2VmZmVjdCA9IFBJLmNvbmNyZXRlIFBJLnNpdGUgbGlzdFxuXG4gIG1vZHVsZSBBZ2VudElkTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIEFnZW50SWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgU2l0ZU1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBTaXRlU2V0ID0gTW9kcy5JbnRTZXRcblxuICB0eXBlIGludGVybmFsX3N0YXRlID0gaW50XG5cbiAgbGV0IGVtcHR5X3NpZGVfZWZmZWN0ID0gW11cbiAgbGV0IHNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUgPSBzbmRcbiAgbGV0IGFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlID0gZnN0XG4gIGxldCBhZ2VudF9pZF9vZl9hZ2VudCA9IGZzdFxuICBsZXQgYWdlbnRfbmFtZV9vZl9hZ2VudCA9IHNuZFxuICBsZXQgYWdlbnRfb2Zfc2l0ZSA9IGZzdFxuICBsZXQgYWdlbnRfaWRfb2Zfc2l0ZSB4ID0gYWdlbnRfaWRfb2ZfYWdlbnQgQEAgYWdlbnRfb2Zfc2l0ZSB4XG4gIGxldCBhZ2VudF9uYW1lX29mX3NpdGUgeCA9IGFnZW50X25hbWVfb2ZfYWdlbnQgQEAgYWdlbnRfb2Zfc2l0ZSB4XG4gIGxldCBzaXRlX25hbWVfb2Zfc2l0ZSA9IHNuZFxuXG4gIGxldCBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCBmIHggPVxuICAgIG1hdGNoIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuXG4gIGxldCBnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAgeCA9XG4gICAgZ2V0X2dlbl9vZl9yZWZpbmVkX3N0ZXAgKGZ1biB4IC0+IHguVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUpIHhcblxuICBsZXQgZ2V0X2lkX29mX3JlZmluZWRfc3RlcCB4ID1cbiAgICBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCAoZnVuIHggLT4geC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQpIHhcblxuICBsZXQgYnVpbGRfZ3JpZCBsaXN0IGJvb2wgaGFuZGxlciA9XG4gICAgbGV0IGVudiA9IGhhbmRsZXIuSC5lbnYgaW5cbiAgICBsZXQgZW1wdHlfc2V0ID0gW10gaW5cbiAgICBsZXQgZ3JpZCA9IENhdXNhbC5lbXB0eV9ncmlkICgpIGluXG4gICAgbGV0IGdyaWQsIF8sIF8sIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZ3JpZCwgc2lkZV9lZmZlY3QsIGNvdW50ZXIsIHN1YnMpIChrLCBzaWRlKSAtPlxuICAgICAgICAgIGxldCBtYXliZV9zaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgZnVuIHNlIC0+XG4gICAgICAgICAgICBzZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBmdW4gXyAtPlxuICAgICAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHNpZGVfZWZmZWN0IHNpZGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2xhdGUgeSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCB5IHkgc3VicyBpblxuICAgICAgICAgIG1hdGNoIGsgd2l0aFxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoaWQsIGV2ZW50LCBpbmZvKSAtPlxuICAgICAgICAgICAgbGV0IGV2ZW50JyA9IFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCB0cmFuc2xhdGUgZXZlbnQgaW5cbiAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgICAgICAgbWF5YmVfc2lkZV9lZmZlY3QgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQ2F1c2FsLnJlY29yZFxuICAgICAgICAgICAgICAgICggVHJhY2UuUlVMRSBpZCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBldmVudCcuSW5zdGFudGlhdGlvbi5hY3Rpb25zO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Jy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Jy5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBpbmZvIClcbiAgICAgICAgICAgICAgICBjb3VudGVyIGVudiBncmlkLFxuICAgICAgICAgICAgICBlbXB0eV9zZXQsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IChpZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgZXZlbnQnID0gUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IHRyYW5zbGF0ZSBldmVudCBpblxuICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkXG4gICAgICAgICAgICAgICAgKCBUcmFjZS5QRVJUIGlkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQnLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluZm8gKVxuICAgICAgICAgICAgICAgIGNvdW50ZXIgZW52IGdyaWQsXG4gICAgICAgICAgICAgIGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLk9icyAoaWQsIHRlc3RzLCBpbmZvKSAtPlxuICAgICAgICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCB0cmFuc2xhdGUpKVxuICAgICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkX29icyAoaWQsIHRlc3RzJywgaW5mbykgc2lkZV9lZmZlY3QgY291bnRlciBncmlkLFxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBlbXB0eV9zZXQsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5TdWJzIChhLCBiKSAtPlxuICAgICAgICAgICAgZ3JpZCwgc2lkZV9lZmZlY3QsIGNvdW50ZXIsIE1vZHMuSW50TWFwLmFkZCBhIGIgc3Vic1xuICAgICAgICAgIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgICAgICAgICBsZXQgYWN0aW9ucycgPVxuICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRfaW5pdFxuICAgICAgICAgICAgICAgIChUcmFjZS5jcmVhdGlvbl9vZl9hY3Rpb25zIHNuZCBhY3Rpb25zJywgYWN0aW9ucycpXG4gICAgICAgICAgICAgICAgY291bnRlciBlbnYgZ3JpZCxcbiAgICAgICAgICAgICAgc2lkZV9lZmZlY3QsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5EdW1teSBfIC0+IGdyaWQsIG1heWJlX3NpZGVfZWZmZWN0IGVtcHR5X3NldCwgY291bnRlciwgc3VicylcbiAgICAgICAgKGdyaWQsIGVtcHR5X3NldCwgMSwgTW9kcy5JbnRNYXAuZW1wdHkpXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGdyaWRcblxuICBsZXQgY2xlYW5fZXZlbnRzID1cbiAgICBMaXN0LmZpbHRlciAoZnVuY3Rpb25cbiAgICAgIHwgVHJhY2UuUnVsZSBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5Jbml0IF8gLT4gdHJ1ZVxuICAgICAgfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuU3VicyBfIC0+IGZhbHNlKVxuXG4gIGxldCBwcmludF9zaWRlX2VmZmVjdCBsb2cgPVxuICAgIExpc3QuaXRlciAoZnVuICgoYSwgXyksIGIpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIoJWksJWkpLFwiIGEgYilcblxuICBsZXQgc2lkZV9lZmZlY3Rfb2ZfbGlzdCBsID0gbFxuXG4gIGxldCBsZXZlbF9vZl9ldmVudCBwcmlvcml0eV9vcHQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGUgc2V0ID1cbiAgICBtYXRjaCBwcmlvcml0eV9vcHQsIEguZ2V0X3ByaW9yaXRpZXMgcGFyYW1ldGVyIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBQcmlvcml0eS5oaWdoZXN0XG4gICAgfCBTb21lIHByaW9yaXRpZXMsIF8gfCBOb25lLCBTb21lIHByaW9yaXRpZXMgLT5cbiAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgIHwgVHJhY2UuT2JzIF8gLT4gZXJyb3IsIGxvZ19pbmZvLCBwcmlvcml0aWVzLlByaW9yaXR5Lm90aGVyX2V2ZW50c1xuICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgbGV0IGFjdGlvbnMgPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZSBpblxuICAgICAgICBsZXQgcHJpb3JpdHkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIHByaW9yaXR5IC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIChhZywgXykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWdfaWQgPSBhZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgICAgICAgICAgIGlmIHNldCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgICAgICBwcmlvcml0eVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LmNyZWF0aW9uXG4gICAgICAgICAgICAgIHwgUEkuUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICBQcmlvcml0eS5taW5fbGV2ZWwgcHJpb3JpdHkgcHJpb3JpdGllcy5Qcmlvcml0eS5yZW1vdmFsXG4gICAgICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsIF8gLT4gcHJpb3JpdHlcbiAgICAgICAgICAgICAgfCBQSS5GcmVlIF8gLT5cbiAgICAgICAgICAgICAgICBQcmlvcml0eS5taW5fbGV2ZWwgcHJpb3JpdHkgcHJpb3JpdGllcy5Qcmlvcml0eS51bmJpbmRpbmdcbiAgICAgICAgICAgICAgfCBQSS5CaW5kIChfLCBfKSB8IFBJLkJpbmRfdG8gKF8sIF8pIC0+IHByaW9yaXR5KVxuICAgICAgICAgICAgcHJpb3JpdGllcy5Qcmlvcml0eS5vdGhlcl9ldmVudHMgKGZzdCBhY3Rpb25zKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHByaW9yaXR5XG4gICAgICB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5Jbml0IF8gLT5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBwcmlvcml0aWVzLlByaW9yaXR5LnN1YnN0aXR1dGlvbilcblxuICBsZXQgc3Vic19hZ2VudF9pbl9ldmVudCBtYXBwaW5nIG1hcHBpbmcnID0gZnVuY3Rpb25cbiAgICAoKiBtYXBwaW5nIC0+IGJlZm9yZSB0aGUgZXZlbnQsIGluY2x1ZGluZyBhZ2VudHMgdG8gYmUgcmVtb3ZlZCAqKVxuICAgICgqIG1hcHBpbmcnIC0+IGFmdGVyIHRoZSBldmVudCwgaW5jbHVkaW5nIGFnZW50cyB0byBiZSBjcmVhdGVkICopXG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBvbmUgYWdlbnQgaXMgcmVtb3ZlZCwgYW5kIG9uZSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUgaWQgaW4gYSBzaW5nbGUgZXZlbnQgKilcbiAgICB8IFRyYWNlLlJ1bGUgKGEsIGV2ZW50LCBpbmZvKSAtPlxuICAgICAgVHJhY2UuUnVsZVxuICAgICAgICAoIGEsXG4gICAgICAgICAgUEkuc3Vic3RfbWFwMl9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudFxuICAgICAgICAgICAgKGZ1biB4IC0+IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nKVxuICAgICAgICAgICAgKGZ1biB4IC0+IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nJylcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIGluZm8gKVxuICAgIHwgVHJhY2UuUGVydCAoYSwgZXZlbnQsIGluZm8pIC0+XG4gICAgICBUcmFjZS5QZXJ0XG4gICAgICAgICggYSxcbiAgICAgICAgICBQSS5zdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpXG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKVxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgaW5mbyApXG4gICAgfCBUcmFjZS5PYnMgKGEsIGIsIGMpIC0+XG4gICAgICBUcmFjZS5PYnNcbiAgICAgICAgKCBhLFxuICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAoUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nKSkpXG4gICAgICAgICAgICBiLFxuICAgICAgICAgIGMgKVxuICAgIHwgVHJhY2UuSW5pdCBiIC0+XG4gICAgICBUcmFjZS5Jbml0XG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIChmdW4geCAtPlxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nJykpXG4gICAgICAgICAgIGIpXG4gICAgfCAoVHJhY2UuRHVtbXkgXyB8IFRyYWNlLlN1YnMgXykgYXMgZXZlbnQgLT4gZXZlbnRcblxuICBsZXQgZGlzYW1iaWd1YXRlIGV2ZW50X2xpc3QgPVxuICAgIGxldCBfLCBfLCBfLCBldmVudF9saXN0X3JldiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcsIGV2ZW50X2xpc3QpIGV2ZW50IC0+XG4gICAgICAgICAgbGV0IG1heF9pZCwgdXNlZCwgbWFwcGluZycgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAobWF4X2lkLCB1c2VkLCBtYXBwaW5nKSB4IC0+XG4gICAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0geCB1c2VkIHRoZW5cbiAgICAgICAgICAgICAgICAgICggbWF4X2lkICsgMSxcbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGQgKG1heF9pZCArIDEpIHVzZWQsXG4gICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHggKG1heF9pZCArIDEpIG1hcHBpbmcgKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1heCB4IG1heF9pZCwgQWdlbnRJZFNldC5hZGQgeCB1c2VkLCBtYXBwaW5nKVxuICAgICAgICAgICAgICAobWF4X2lkLCB1c2VkLCBtYXBwaW5nKVxuICAgICAgICAgICAgICAoVHJhY2UuY3JlYXRpb25fb2Zfc3RlcCBldmVudClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIG1hcHBpbmcgY2FuIGJlIHNhZmVseSBhcHBsaWVkIHRvIGFsbCBhZ2VudHMgZXhjZXB0IHRoZSBuZXdseSBjcmVhdGVkIG9uZXMgKilcbiAgICAgICAgICAoKiBtYXBwaW5nJyBjYW4gYmUgc2FmZWx5IGFwcGxpZWQgdG8gYWxsIGFnZW50cyBleGNlcHQgdGhlIG9uZXMgdGhhdCBoYXZlIGJlZW4ganVzdCByZW1vdmVzICopXG4gICAgICAgICAgbGV0IGxpc3QgPSBzdWJzX2FnZW50X2luX2V2ZW50IG1hcHBpbmcgbWFwcGluZycgZXZlbnQgOjogZXZlbnRfbGlzdCBpblxuICAgICAgICAgIG1heF9pZCwgdXNlZCwgbWFwcGluZycsIGxpc3QpXG4gICAgICAgICgwLCBBZ2VudElkU2V0LmVtcHR5LCBBZ2VudElkTWFwLmVtcHR5LCBbXSlcbiAgICAgICAgZXZlbnRfbGlzdFxuICAgIGluXG4gICAgTGlzdC5yZXYgZXZlbnRfbGlzdF9yZXZcblxuICB0eXBlIGFnZW50X2luZm8gPSB7XG4gICAgaW5pdGlhbF9zdGVwOiBUcmFjZS5zdGVwO1xuICAgIGludGVybmFsX3N0YXRlczogaW50ZXJuYWxfc3RhdGUgU2l0ZU1hcC50O1xuICAgIGJvdW5kX3NpdGVzOiBTaXRlU2V0LnQ7XG4gICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTogU2l0ZVNldC50O1xuICB9XG5cbiAgbGV0IGNvbnZlcnRfaW5pdCByZW1hbmVudCBzdGVwX2xpc3QgYWN0aW9uX2xpc3QgPVxuICAgIGxldCBleHRyYWN0X2FnZW50IGlkIHNvdXAgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBQSS5DcmVhdGUgKChpZCcsIF8pLCBfKVxuICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsICgoKGlkJywgXyksIF8pLCBfKVxuICAgICAgICAgIHwgUEkuRnJlZSAoKGlkJywgXyksIF8pXG4gICAgICAgICAgfCBQSS5CaW5kX3RvICgoKGlkJywgXyksIF8pLCBfKSAtPlxuICAgICAgICAgICAgaWQgPSBpZCdcbiAgICAgICAgICB8IFBJLkJpbmQgXyB8IFBJLlJlbW92ZSBfIC0+IGZhaWx3aXRoIFwiUHJvYmxlbWF0aWMgaW5pdGlhbCBldmVudFwiKVxuICAgICAgICBzb3VwXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCByZWN1ciBhY2Mgc291cCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgICggKGlmIHNvdXAgPD4gW10gdGhlblxuICAgICAgICAgICAgIFRyYWNlLkluaXQgc291cCA6OiBhY2NcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGFjYyksXG4gICAgICAgICAgcmVjdXIgKVxuICAgICAgfCBQSS5GcmVlIF8gOjogdCAtPiBhdXggcmVjdXIgYWNjIHNvdXAgdFxuICAgICAgfCAoUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gfCBQSS5CaW5kX3RvIF8gfCBQSS5Nb2RfaW50ZXJuYWwgXykgOjogdCAtPlxuICAgICAgICBhdXggcmVjdXIgYWNjIHNvdXAgdFxuICAgICAgfCBQSS5DcmVhdGUgKChpZCwgXyksIHNpdGVfbGlzdCkgOjogdCAtPlxuICAgICAgICBsZXQgdGhpcywgc291cCcgPSBleHRyYWN0X2FnZW50IGlkIHNvdXAgaW5cbiAgICAgICAgbGV0IHN0YW5kYWxvbmUgPVxuICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIF8gfCBQSS5GcmVlIF8gfCBQSS5Nb2RfaW50ZXJuYWwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgIHwgUEkuQmluZF90byBfIHwgUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB0aGlzXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0aGlzID0gVHJhY2UuSW5pdCB0aGlzIGluXG4gICAgICAgIGlmIHN0YW5kYWxvbmUgdGhlbiAoXG4gICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIG1hcCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgcywgU29tZSB1IC0+IFNpdGVNYXAuYWRkIHMgdSBtYXBcbiAgICAgICAgICAgICAgICB8IF8sIE5vbmUgLT4gbWFwKVxuICAgICAgICAgICAgICBTaXRlTWFwLmVtcHR5IHNpdGVfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFnZW50X2luZm8gPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbml0aWFsX3N0ZXAgPSB0aGlzO1xuICAgICAgICAgICAgICBpbnRlcm5hbF9zdGF0ZXMgPSBtYXA7XG4gICAgICAgICAgICAgIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5lbXB0eTtcbiAgICAgICAgICAgICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSA9IFNpdGVTZXQuZW1wdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKEFnZW50SWRNYXAuYWRkIGlkIGFnZW50X2luZm8gcmVjdXIpICh0aGlzIDo6IGFjYykgc291cCcgdFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBhdXggcmVjdXIgKHRoaXMgOjogYWNjKSBzb3VwJyB0XG4gICAgaW5cbiAgICBhdXggcmVtYW5lbnQgc3RlcF9saXN0IGFjdGlvbl9saXN0IGFjdGlvbl9saXN0XG5cbiAgbGV0IGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdlbnRfaW5mbyA9XG4gICAgbGV0IHJlc3RyaWN0aW9uID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFNpdGVTZXQuZW1wdHkgYWdpZCByZXN0cmljdGlvbl9tYXBcbiAgICBpblxuICAgIFNpdGVTZXQuaXNfZW1wdHkgKFNpdGVTZXQuaW50ZXIgYWdlbnRfaW5mby5ib3VuZF9zaXRlcyByZXN0cmljdGlvbilcbiAgICAmJiBTaXRlU2V0LmlzX2VtcHR5XG4gICAgICAgICAoU2l0ZVNldC5pbnRlciBhZ2VudF9pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgcmVzdHJpY3Rpb24pXG5cbiAgbGV0IG1vZF9zaXRlIHJlc3RyaWN0aW9uX21hcCBzaXRlIHN0YXRlIChyZW1hbmVudCwgc2V0KSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgKG1hdGNoIFNpdGVNYXAuZmluZF9vcHRpb24gc19uYW1lIGFnX2luZm8uaW50ZXJuYWxfc3RhdGVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZW1hbmVudCwgc2V0XG4gICAgICB8IFNvbWUgc3RhdGVfcmVmIC0+XG4gICAgICAgIGlmIHN0YXRlX3JlZiA9IHN0YXRlICgqIEJhY2sgdG8gdGhlIG9yaWdpbmFsIGludGVybmFsIHN0YXRlKikgdGhlblxuICAgICAgICAgIGlmIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgICAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgIFNpdGVTZXQucmVtb3ZlIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LmFkZCBhZ2lkIHNldFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2UgaWZcbiAgICAgICAgICAoKiBObyBsb25nZXIgdGhlIGRlZmF1bHQgc3RhdGUgKilcbiAgICAgICAgICBTaXRlU2V0Lm1lbSBzX25hbWUgYWdfaW5mby5zaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWdfaW5mbyB3aXRoXG4gICAgICAgICAgICAgIHNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgIFNpdGVTZXQuYWRkIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgICBpZiBhc19pbml0IHJlc3RyaWN0aW9uX21hcCBhZ2lkIGFnX2luZm8gdGhlblxuICAgICAgICAgICAgcmVtYW5lbnQsIHNldFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LnJlbW92ZSBhZ2lkIHNldFxuICAgICAgICApKVxuXG4gIGxldCB1bmJpbmRfc2lkZSByZXN0cmljdGlvbl9tYXAgKGFnaWQsIHNfbmFtZSkgKHJlbWFuZW50LCBzZXQpID1cbiAgICBtYXRjaCBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIGFnaWQgcmVtYW5lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1hbmVudCwgc2V0XG4gICAgfCBTb21lIGFnX2luZm8gLT5cbiAgICAgIGlmIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLmJvdW5kX3NpdGVzIHRoZW4gKFxuICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYWdfaW5mbyB3aXRoXG4gICAgICAgICAgICBib3VuZF9zaXRlcyA9IFNpdGVTZXQucmVtb3ZlIHNfbmFtZSBhZ19pbmZvLmJvdW5kX3NpdGVzO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5hZGQgYWdpZCBhZ19pbmZvIHJlbWFuZW50IGluXG4gICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQuYWRkIGFnaWQgc2V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICApIGVsc2VcbiAgICAgICAgcmVtYW5lbnQsIHNldFxuXG4gIGxldCB1bmJpbmQgcmVzdHJpY3Rpb25fbWFwIHNpdGUgcmVtID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgdW5iaW5kX3NpZGUgcmVzdHJpY3Rpb25fbWFwIChhZ2lkLCBzX25hbWUpIHJlbVxuXG4gIGxldCBiaW5kIHJlc3RyaWN0aW9uX21hcCBzaXRlIChyZW1hbmVudCwgc2V0KSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgdGhlblxuICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFnX2luZm8gPVxuICAgICAgICAgIHsgYWdfaW5mbyB3aXRoIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5hZGQgc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZW1hbmVudCwgQWdlbnRJZFNldC5yZW1vdmUgYWdpZCBzZXRcbiAgICAgIClcblxuICBsZXQgc3BsaXRfaW5pdCByZWZpbmVkX3N0ZXBfbGlzdCA9XG4gICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGZzdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIChzdGVwX2xpc3QsIHJlbWFuZW50KSByZWZpbmVkX3N0ZXAgLT5cbiAgICAgICAgICAgbWF0Y2ggcmVmaW5lZF9zdGVwIHdpdGhcbiAgICAgICAgICAgfCBUcmFjZS5Jbml0IGluaXQgLT4gY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBpbml0XG4gICAgICAgICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuUnVsZSBfXG4gICAgICAgICAgIHwgVHJhY2UuUGVydCBfIC0+XG4gICAgICAgICAgICAgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCwgcmVtYW5lbnQpXG4gICAgICAgICAoW10sIHJlbWFuZW50KVxuICAgICAgICAgKExpc3QucmV2IHJlZmluZWRfc3RlcF9saXN0KSlcblxuICBsZXQgYWRkX2luX3Njb3BlIHNpdGUgc2NvcGUgPVxuICAgIGxldCBhZ2lkID0gYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNfbmFtZSA9IHNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgb2xkX3NldCA9IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFNpdGVTZXQuZW1wdHkgYWdpZCBzY29wZSBpblxuICAgIGxldCBuZXdfc2V0ID0gU2l0ZVNldC5hZGQgc19uYW1lIG9sZF9zZXQgaW5cbiAgICBpZiBvbGRfc2V0ID09IG5ld19zZXQgdGhlblxuICAgICAgc2NvcGVcbiAgICBlbHNlXG4gICAgICBBZ2VudElkTWFwLmFkZCBhZ2lkIG5ld19zZXQgc2NvcGVcblxuICBsZXQgZGVhbF93aXRoX3Rlc3RzIHRlc3RzIHNjb3BlID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gc2NvcGUgeCAtPlxuICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgfCBQSS5Jc19IZXJlIF8gLT4gc2NvcGVcbiAgICAgICAgICAgfCBQSS5Jc19Cb3VuZCBzaXRlXG4gICAgICAgICAgIHwgUEkuSXNfRnJlZSBzaXRlXG4gICAgICAgICAgIHwgUEkuSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgXylcbiAgICAgICAgICAgfCBQSS5IYXNfSW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICAgYWRkX2luX3Njb3BlIHNpdGUgc2NvcGVcbiAgICAgICAgICAgfCBQSS5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgIGFkZF9pbl9zY29wZSBzaXRlMSAoYWRkX2luX3Njb3BlIHNpdGUyIHNjb3BlKSkpXG4gICAgICBzY29wZSB0ZXN0c1xuXG4gIGxldCBmaWxsX3NpcGhvbiByZWZpbmVkX3N0ZXBfbGlzdCA9XG4gICAgbGV0IHJldl90cmFjZSA9IExpc3QucmV2IHJlZmluZWRfc3RlcF9saXN0IGluXG4gICAgbGV0IHNjb3BlID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGxldCByZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0LCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgc2NvcGUpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgIG1hdGNoIHJlZmluZWRfc3RlcCB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IF8gLT4gKHJlZmluZWRfc3RlcCwgc2NvcGUpIDo6IHN0ZXBfbGlzdCwgc2NvcGVcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgKF8sIGV2ZW50LCBfKSB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBfKSAtPlxuICAgICAgICAgICAgbGV0IHNjb3BlJyA9IGRlYWxfd2l0aF90ZXN0cyBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzIHNjb3BlIGluXG4gICAgICAgICAgICAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZSdcbiAgICAgICAgICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+XG4gICAgICAgICAgICBsZXQgc2NvcGUnID0gZGVhbF93aXRoX3Rlc3RzIHRlc3RzIHNjb3BlIGluXG4gICAgICAgICAgICAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZSdcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoW10sIHNjb3BlKSByZXZfdHJhY2VcbiAgICBpblxuICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuZW1wdHkgaW5cbiAgICBsZXQgYSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChzdGVwX2xpc3QsIHJlbWFuZW50KSByZWZpbmVkX3N0ZXAgLT5cbiAgICAgICAgICBtYXRjaCByZWZpbmVkX3N0ZXAgd2l0aFxuICAgICAgICAgIHwgVHJhY2UuSW5pdCBpbml0LCBfIC0+IGNvbnZlcnRfaW5pdCByZW1hbmVudCBzdGVwX2xpc3QgaW5pdFxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoXywgZXZlbnQsIF8pLCBzY29wZSB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBfKSwgc2NvcGUgLT5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCwgc2V0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIHJlY3VyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IFBJLkNyZWF0ZSBfIC0+IHJlY3VyXG4gICAgICAgICAgICAgICAgICB8IFBJLk1vZF9pbnRlcm5hbCAoc2l0ZSwgc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1vZF9zaXRlIHNjb3BlIHNpdGUgc3RhdGUgcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuQmluZCAoc2l0ZTEsIHNpdGUyKSB8IFBJLkJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgICAgICAgICAgYmluZCBzY29wZSBzaXRlMSAoYmluZCBzY29wZSBzaXRlMiByZWN1cilcbiAgICAgICAgICAgICAgICAgIHwgUEkuRnJlZSBzaXRlIC0+IHVuYmluZCBzY29wZSBzaXRlIHJlY3VyXG4gICAgICAgICAgICAgICAgICB8IFBJLlJlbW92ZSBfIC0+IHJlY3VyKVxuICAgICAgICAgICAgICAgIChyZW1hbmVudCwgQWdlbnRJZFNldC5lbXB0eSlcbiAgICAgICAgICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmVtYW5lbnQsIHNldCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCAodW5iaW5kIHNjb3BlKVxuICAgICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCAocmVtYW5lbnQsIHNldClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIEFnZW50SWRTZXQuZm9sZFxuICAgICAgICAgICAgICAgIChmdW4gaWQgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBpZCByZW1hbmVudCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LmluaXRpYWxfc3RlcCA6OiBsaXN0XG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdClcbiAgICAgICAgICAgICAgICBzZXRcbiAgICAgICAgICAgICAgICAoZnN0IHJlZmluZWRfc3RlcCA6OiBzdGVwX2xpc3QpLFxuICAgICAgICAgICAgICByZW1hbmVudCApXG4gICAgICAgICAgfCBUcmFjZS5PYnMgXywgXyAtPiBmc3QgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCwgcmVtYW5lbnRcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXywgXyB8IFRyYWNlLkR1bW15IF8sIF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoW10sIHJlbWFuZW50KSByZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0XG4gICAgaW5cbiAgICBMaXN0LnJldiBhXG5cbiAgbGV0IGFnZW50X2lkX2luX29icyBfcGFyYW1ldGVyIF9oYW5kbGVyIGluZm8gZXJyb3IgPSBmdW5jdGlvblxuICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuUnVsZSBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuRHVtbXkgX1xuICAgICAgLT5cbiAgICAgIGVycm9yLCBpbmZvLCBBZ2VudElkU2V0LmVtcHR5XG4gICAgfCBUcmFjZS5PYnMgKF8sIHRlc3RzLCBfKSAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgaW5mbyxcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBsIHggLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBQSS5Jc19IZXJlIHggLT4gQWdlbnRJZFNldC5hZGQgKGFnZW50X2lkX29mX2FnZW50IHgpIGxcbiAgICAgICAgICAgICAgIHwgUEkuSXNfQm91bmQgXyB8IFBJLklzX0ZyZWUgXyB8IFBJLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICAgICAgfCBQSS5Jc19Cb3VuZF90byBfIHwgUEkuSGFzX0ludGVybmFsIF8gLT5cbiAgICAgICAgICAgICAgICAgbCkpXG4gICAgICAgICAgQWdlbnRJZFNldC5lbXB0eSB0ZXN0cyApXG5lbmRcbiIsIigqKlxuICAqIHBvX2N1dC5tbFxuICAqXG4gICogQ3V0IGNvbmN1cnJlbnQgZXZlbnRzOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMTYvMDQvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAwMi8wOC8yMDEzXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIFBvX2N1dCA9IHNpZ1xuICBtb2R1bGUgSyA6IEthcHBhX2luc3RhbnRpYXRpb24uQ2Zsb3dfc2lnbmF0dXJlXG5cbiAgdmFsIGN1dCA6IChUcmFjZS50LCBUcmFjZS50ICogaW50KSBLLkgudW5hcnlcblxuICB0eXBlIG9uX3RoZV9mbHlfc3RhdGVcblxuICB2YWwgaW5pdF9jdXQgOiBvbl90aGVfZmx5X3N0YXRlXG4gIHZhbCBjdXRfc3RlcCA6IG9uX3RoZV9mbHlfc3RhdGUgLT4gVHJhY2Uuc3RlcCAtPiBvbl90aGVfZmx5X3N0YXRlXG4gIHZhbCBmaW5hbGl6ZV9jdXQgOiBvbl90aGVfZmx5X3N0YXRlIC0+IFRyYWNlLnN0ZXAgbGlzdCAqIGludFxuXG4gIHZhbCBjdXRfcmV2X3RyYWNlIDpcbiAgICBUcmFjZS5zdGVwIGxpc3QgKCpyZXZlcnNlIG9yZGVyKikgLT5cbiAgICBUcmFjZS5zdGVwIGxpc3QgKCogY29ycmVjdCBvcmRlciAqKSAqIGludFxuZW5kXG5cbm1vZHVsZSBQb19jdXQgOiBQb19jdXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEsgPSBLYXBwYV9pbnN0YW50aWF0aW9uLkNmbG93X2xpbmtlclxuXG4gIHR5cGUgcHJlZGljYXRlX2luZm8gPVxuICAgIHwgSGVyZSBvZiBLLmFnZW50X2lkXG4gICAgfCBCb3VuZF9zaXRlIG9mIEsuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgSW50ZXJuYWxfc3RhdGUgb2YgSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG5cbiAgbW9kdWxlIFBTTSA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfaW5mb1xuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUFMgPSBQU00uU2V0XG5cbiAgbGV0IGNyZWF0ZWRfcHJlZGljYXRlc19vZl9hY3Rpb24gYWN0aW9uID1cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBpbnRlcmZhY2UpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBLLmFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKHNfaWQsIG9wdCkgLT5cbiAgICAgICAgICBsZXQgbGlzdCA9IEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0IGluXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgIHwgU29tZSBfIC0+IEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkgOjogbGlzdClcbiAgICAgICAgWyBIZXJlIGFnX2lkIF0gaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgX1xuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICBbXVxuXG4gIGxldCBwcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBsaXN0ID0gQm91bmRfc2l0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIF8gLT4gSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0KVxuICAgICAgICBbIEhlcmUgYWdfaWQgXSBpbnRlcmZhY2VcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgWyBJbnRlcm5hbF9zdGF0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIEsuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChzMSwgczIpIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSk7XG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMiwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMik7XG4gICAgICBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgWyBCb3VuZF9zaXRlIChLLmFnZW50X2lkX29mX3NpdGUgcywgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+IFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfdGVzdCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPiBbIEhlcmUgKEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgWyBJbnRlcm5hbF9zdGF0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIEsuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc1xuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzLCBfKSAtPlxuICAgICAgWyBCb3VuZF9zaXRlIChLLmFnZW50X2lkX29mX3NpdGUgcywgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSk7XG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMiwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMik7XG4gICAgICBdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIHNpZGVzID1cbiAgICBMaXN0Lm1hcCAoZnVuICgoYWdfaWQsIF8pLCBzX2lkKSAtPiBCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpIHNpZGVzXG5cbiAgdHlwZSBvbl90aGVfZmx5X3N0YXRlID0gUFMudCAqIFRyYWNlLnN0ZXAgbGlzdCAqIGludFxuXG4gIGxldCBpbml0X2N1dCA9IFBTLmVtcHR5LCBbXSwgMFxuICBsZXQgZmluYWxpemVfY3V0IChfYSwgYiwgYykgPSBiLCBjXG5cbiAgbGV0IGN1dF9zdGVwIChzZWVuLCBrZXB0LCBuX2N1dCkgZXZlbnQgPVxuICAgIGxldCByZWMga2VlcCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgfCB0MCA6OiBxMCAtPlxuICAgICAgICBsZXQgcmVjIGF1eDEgbCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBrZWVwIHEwXG4gICAgICAgICAgfCB0MSA6OiBxMSAtPlxuICAgICAgICAgICAgaWYgUFMubWVtIHQxIHNlZW4gdGhlblxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eDEgcTFcbiAgICAgICAgaW5cbiAgICAgICAgYXV4MSAocHJlZGljYXRlc19vZl9hY3Rpb24gdDApXG4gICAgaW5cbiAgICBsZXQgcmVjIGtlZXAyIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBpZiBQUy5tZW0gdCBzZWVuIHRoZW5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBrZWVwMiBxXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZXZlbnQgaW5cbiAgICBsZXQgc2VlbiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlZW4gYWN0aW9uIC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gc2VlbiBlbHQgLT4gUFMucmVtb3ZlIGVsdCBzZWVuKVxuICAgICAgICAgICAgc2VlblxuICAgICAgICAgICAgKGNyZWF0ZWRfcHJlZGljYXRlc19vZl9hY3Rpb24gYWN0aW9uKSlcbiAgICAgICAgc2VlbiBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjdGlvbnMsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZXZlbnQgaW5cbiAgICBpZlxuICAgICAgVHJhY2Uuc3RlcF9pc19vYnMgZXZlbnQgfHwga2VlcCBhY3Rpb25zXG4gICAgICB8fCBrZWVwMiAocHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgKFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIGV2ZW50KSlcbiAgICB0aGVuIChcbiAgICAgIGxldCBrZXB0ID0gZXZlbnQgOjoga2VwdCBpblxuICAgICAgbGV0IHRlc3RzID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBldmVudCBpblxuICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgIHByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIChUcmFjZS5zaWRlX2VmZmVjdHNfb2Zfc3RlcCBldmVudClcbiAgICAgIGluXG4gICAgICBsZXQgc2VlbiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBzZWVuIHRlc3QgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gc2VlbiBwcmVkaWNhdGVfaW5mbyAtPiBQUy5hZGQgcHJlZGljYXRlX2luZm8gc2VlbilcbiAgICAgICAgICAgICAgc2VlbiAocHJlZGljYXRlc19vZl90ZXN0IHRlc3QpKVxuICAgICAgICAgIHNlZW4gdGVzdHNcbiAgICAgIGluXG4gICAgICBsZXQgc2VlbiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBzZWVuIHByZWRpY2F0ZV9pbmZvIC0+IFBTLmFkZCBwcmVkaWNhdGVfaW5mbyBzZWVuKVxuICAgICAgICAgIHNlZW4gdGVzdHMnXG4gICAgICBpblxuICAgICAgc2Vlbiwga2VwdCwgbl9jdXRcbiAgICApIGVsc2VcbiAgICAgIHNlZW4sIGtlcHQsIG5fY3V0ICsgMVxuXG4gIGxldCBjdXRfcmV2X3RyYWNlIHJldl9ldmVudF9saXN0ID1cbiAgICBsZXQgXywgZXZlbnRfbGlzdCwgbiA9IExpc3QuZm9sZF9sZWZ0IGN1dF9zdGVwIGluaXRfY3V0IHJldl9ldmVudF9saXN0IGluXG4gICAgZXZlbnRfbGlzdCwgblxuXG4gIGxldCBjdXQgX3BhcmFtZXRlciBfaGFuZGxlciBpbmZvIGVycm9yIGV2ZW50X2xpc3QgPVxuICAgIGxldCB0cmFjZSA9IGN1dF9yZXZfdHJhY2UgKExpc3QucmV2IGV2ZW50X2xpc3QpIGluXG4gICAgZXJyb3IsIGluZm8sIHRyYWNlXG5lbmRcbiIsIigqKlxuICAgKiBwc2V1ZG9faW52ZXJzZS5tbFxuICAgKlxuICAgKiBDdXQgcHNldWRvIGludmVyc2UgZXZlbnRzOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBLYVNpbVxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgICpcbiAgICogQ3JlYXRpb246IDE3LzA0LzIwMTJcbiAgICogTGFzdCBtb2RpZmljYXRpb246IDIxLzExLzIwMTNcbiAgICogKlxuICAgKiBTb21lIHBhcmFtZXRlciByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsIDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEN1dF9wc2V1ZG9faW52ZXJzZSA9IHNpZ1xuICBtb2R1bGUgUG8gOiBQb19jdXQuUG9fY3V0XG4gIG1vZHVsZSBBIDogR2VuQXJyYXkuR2VuQXJyYXlcblxuICB2YWwgY3V0IDogKFRyYWNlLnQsIFRyYWNlLnQgKiBpbnQpIFBvLksuSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBQc2V1ZG9faW52IDogQ3V0X3BzZXVkb19pbnZlcnNlID0gc3RydWN0XG4gIG1vZHVsZSBQbyA9IFBvX2N1dC5Qb19jdXRcbiAgbW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG4gIG1vZHVsZSBDUHJlZGljYXRlTWFwID0gUHJlZGljYXRlX21hcHMuUVByZWRpY2F0ZU1hcFxuICBtb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlX21hcHMuUHJlZGljYXRlTWFwXG5cbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9IFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV9pbmZvXG4gIHR5cGUgc3RlcF9pZCA9IGludFxuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gPSBQcmVkaWNhdGVfbWFwcy5zdHJpbmdfb2ZfcHJlZGljYXRlX2luZm9cblxuICBsZXQgc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBwaSA9XG4gICAgbWF0Y2ggcGkgd2l0aFxuICAgIHwgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVfaXMgcyAtPiBzdHJpbmdfb2ZfaW50IHNcbiAgICB8IFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZCAtPiBcIiNVbmRlZlwiXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5QcmVzZW50IC0+IFwiI0hlcmVcIlxuICAgIHwgUHJlZGljYXRlX21hcHMuRnJlZSAtPiBcIiNGcmVlXCJcbiAgICB8IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZywgYWdlbnRfbmFtZSwgcykgLT5cbiAgICAgIFwiQm91bmRfdG8gXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50X25hbWUgXiBcIiBcIlxuICAgICAgXiBzdHJpbmdfb2ZfaW50IHNcblxuICB0eXBlIHBzZXVkb19pbnZfYmxhY2tib2FyZCA9IHtcbiAgICBzdGVwc19ieV9jb2x1bW46XG4gICAgICAoc3RlcF9pZCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3QgQ1ByZWRpY2F0ZU1hcC50O1xuICAgIG5zdGVwczogc3RlcF9pZDtcbiAgICBwcmVkaWNhdGVzX29mX2V2ZW50OiBwcmVkaWNhdGVfaW5mbyBsaXN0IEEudDtcbiAgICBpc19yZW1vdmVfYWN0aW9uOiBib29sIEEudDtcbiAgICBtb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50OiBpbnQgQS50O1xuICAgIGhhc19tb2Rfd2l0aG91dF90ZXN0OiBib29sIEEudDtcbiAgICBldmVudDogVHJhY2Uuc3RlcCBvcHRpb24gQS50O1xuICAgIGFnZW50X2xpc3Q6IGludCBsaXN0O1xuICB9XG5cbiAgbGV0IGluaXRfYmxhY2tib2FyZCBuX3N0ZXBzIGhhbmRsZXIgPVxuICAgIHtcbiAgICAgIHN0ZXBzX2J5X2NvbHVtbiA9IFBvLksuSC5nZXRfcHJlZGljYXRlX21hcCBoYW5kbGVyO1xuICAgICAgbnN0ZXBzID0gLTE7XG4gICAgICBwcmVkaWNhdGVzX29mX2V2ZW50ID0gQS5tYWtlIG5fc3RlcHMgW107XG4gICAgICBpc19yZW1vdmVfYWN0aW9uID0gQS5tYWtlIG5fc3RlcHMgZmFsc2U7XG4gICAgICBoYXNfbW9kX3dpdGhvdXRfdGVzdCA9IEEubWFrZSBuX3N0ZXBzIGZhbHNlO1xuICAgICAgbW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCA9IEEuY3JlYXRlIG5fc3RlcHMgMDtcbiAgICAgIGV2ZW50ID0gQS5tYWtlIG5fc3RlcHMgTm9uZTtcbiAgICAgIGFnZW50X2xpc3QgPSBbXTtcbiAgICB9XG5cbiAgbGV0IF9wcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIkJsYWNrYm9hcmQgZm9yIHJlbW92aW5nIHBzZXVkbyBpbnZlcnNlIGVsZW1lbnRcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJuX2V2ZW50czogJWlcIiBibGFja2JvYXJkLm5zdGVwc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJTdGVwc19ieV9jb2x1bW46XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBDUHJlZGljYXRlTWFwLml0ZXJcbiAgICAgICAgKGZ1biBwcmVkIGxpc3QgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIlczogXCJcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyBwcmVkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVpZCwgdmFsdWUsIGJvb2wpIC0+XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiglaSwlcyVzKSxcIiBlaWRcbiAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgKGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgXCIoTW9kKVwiXG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgXCJcIikpXG4gICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKVxuICAgICAgICBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCJFdmVudHM6XCJcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID0gYmxhY2tib2FyZC5uc3RlcHMgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBldmVudCA9XG4gICAgICAgICAgdHJ5IEEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQga1xuICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJFUlJFVVIgJWkgMTIzXCIga1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmFpc2UgRXhpdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvclxuICAgICAgICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiRXZlbnQgJWklYVwiIGtcbiAgICAgICAgICAgICAgICAgICAoVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDpmYWxzZSB+ZW52OmhhbmRsZXIuUG8uSy5ILmVudilcbiAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiUHJlZGljYXRlczogXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbGlzdCA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlc19vZl9ldmVudCBrIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgICAoZnVuIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgXCIlcyxcIlxuICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHBpZCkpXG4gICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGJvb2wgPSBBLmdldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gayBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgXCJjb250YWluIGEgZGVsZXRpb25cIlxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgaW50ID0gQS5nZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IGsgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICBcIiVpIG1vZGlmaWVkIHByZWRpY2F0ZXNcIiBpbnRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGVycm9yKVxuICAgICAgICBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yID0gYXV4IDAgaW5cbiAgICBlcnJvclxuXG4gIGxldCBwcmVkaWNhdGVzX29mX2FjdGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIGxldCBsaXN0MSwgbGlzdDIgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGxpc3QxLCBsaXN0MikgKHNfaWQsIG9wdCkgLT5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc19pZCkgaW5cbiAgICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgICBsZXQgbGlzdDIgPSBwcmVkaWNhdGVfaWQgOjogbGlzdDIgaW5cbiAgICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbGlzdDEsIGxpc3QyXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSBpblxuICAgICAgICAgICAgICAoIChwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBsaXN0MiApKVxuICAgICAgICAgIChbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuUHJlc2VudCBdLCBbIHByZWRpY2F0ZV9pZCBdKVxuICAgICAgICAgIGludGVyZmFjZVxuICAgICAgaW5cbiAgICAgICggeyBibGFja2JvYXJkIHdpdGggYWdlbnRfbGlzdCA9IGFnX2lkIDo6IGJsYWNrYm9hcmQuYWdlbnRfbGlzdCB9LFxuICAgICAgICBsaXN0MSxcbiAgICAgICAgbGlzdDIsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlIClcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBpbnQpIC0+XG4gICAgICBsZXQgcHJlZGljYXRlX2lkID1cbiAgICAgICAgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAoUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSlcbiAgICAgIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSxcbiAgICAgICAgW10sXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IFBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMSA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBQcmVkaWNhdGVfbWFwcy5Cb3VuZF90byAoYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICBdLFxuICAgICAgICBbXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IFBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMSA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMiA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBQcmVkaWNhdGVfbWFwcy5Cb3VuZF90byAoYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDIsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDEsIGFnZW50X25hbWUxLCBzaXRlX2lkMSk7XG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkZyZWUgXSwgW10sIGZhbHNlLCBmYWxzZVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5IZXJlIGFnX2lkIGluXG4gICAgICBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuVW5kZWZpbmVkIF0sIFtdLCB0cnVlLCBmYWxzZVxuXG4gIGxldCBub19yZW1vdmUgX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgYmxhY2tib2FyZCBlaWQgPVxuICAgIG5vdCAoQS5nZXQgYmxhY2tib2FyZC5pc19yZW1vdmVfYWN0aW9uIGVpZClcblxuICBsZXQgc2FtZV9sZW5ndGggX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgYmxhY2tib2FyZCBlaWQxIGVpZDIgPVxuICAgIEEuZ2V0IGJsYWNrYm9hcmQuaGFzX21vZF93aXRob3V0X3Rlc3QgZWlkMVxuICAgIHx8IEEuZ2V0IGJsYWNrYm9hcmQuaGFzX21vZF93aXRob3V0X3Rlc3QgZWlkMlxuICAgIHx8IEEuZ2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBlaWQxXG4gICAgICAgPSBBLmdldCBibGFja2JvYXJkLm1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkMlxuXG4gIGxldCBjbGVhbiB0IGNvbHVtbiBibGFja2JvYXJkID1cbiAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgIHwgW10gLT4gY29sdW1uLCBibGFja2JvYXJkXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIGxldCByZWMgYXV4IGxpc3QgYm9vbCA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IChlaWQsIF8sIGZhbHNlKSA6OiBxIC0+XG4gICAgICAgICAgaWYgZWlkID0gLTEgdGhlblxuICAgICAgICAgICAgbGlzdCwgYm9vbFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGF1eCBxIHRydWVcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0LCBib29sXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gLT4gbGlzdCwgYm9vbFxuICAgICAgaW5cbiAgICAgIGxldCBsaXN0LCBib29sID0gYXV4IHRhaWwgZmFsc2UgaW5cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBjb2x1bW4gPSBoZWFkIDo6IGxpc3QgaW5cbiAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgdCBjb2x1bW4gYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBjb2x1bW4sIGJsYWNrYm9hcmRcbiAgICAgICkgZWxzZVxuICAgICAgICBjb2x1bW4sIGJsYWNrYm9hcmRcblxuICBsZXQgY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVpZCA9IGJsYWNrYm9hcmQubnN0ZXBzIGluXG4gICAgbGV0IHByZWRpY2F0ZV9saXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZCBpblxuICAgIGxldCByZWMgc2NhbiBwcmVkaWNhdGVfbGlzdCA9XG4gICAgICBtYXRjaCBwcmVkaWNhdGVfbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBOb25lLCBibGFja2JvYXJkLCBbXVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0IGNvbHVtbiA9XG4gICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gdCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgICAgICBpblxuICAgICAgICBsZXQgY29sdW1uLCBibGFja2JvYXJkID0gY2xlYW4gdCBjb2x1bW4gYmxhY2tib2FyZCBpblxuICAgICAgICAobWF0Y2ggY29sdW1uIHdpdGhcbiAgICAgICAgfCAoXywgXywgZmFsc2UpIDo6IF8gLT4gc2NhbiBxICgqIG5vIG1vZGlmIG9uIGEgKilcbiAgICAgICAgfCAoXywgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiB4ID0geSAtPlxuICAgICAgICAgIHNjYW4gcSAoKiBtdXRlIG1vZGlmIG9uIGEgKilcbiAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKGIsIF8sIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIC0+XG4gICAgICAgICAgaWYgYSA9IGVpZCAmJiB4ID0geSB0aGVuXG4gICAgICAgICAgICBlcnJvciwgU29tZSAoYSwgYiksIGJsYWNrYm9hcmQsIHEgKCogYSBjYW5jZWxzIGIgbW9kaWYgKilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgTm9uZSwgYmxhY2tib2FyZCwgcVxuICAgICAgICB8IF8gLT4gZXJyb3IsIE5vbmUsIGJsYWNrYm9hcmQsIHEpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGNhbmRpZGF0ZXMsIGJsYWNrYm9hcmQsIHEgPSBzY2FuIHByZWRpY2F0ZV9saXN0IGluXG4gICAgbWF0Y2ggY2FuZGlkYXRlcyB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yLCBOb25lXG4gICAgfCBTb21lIChlaWRhLCBlaWRiKSAtPlxuICAgICAgaWZcbiAgICAgICAgbm9fcmVtb3ZlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkYlxuICAgICAgICAmJiBzYW1lX2xlbmd0aCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGVpZGEgZWlkYlxuICAgICAgICAmJiBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAoZnVuIHBpZCAtPlxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9XG4gICAgICAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IFtdIHBpZCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBjb2x1bW4sIF9ibGFja2JvYXJkID0gY2xlYW4gcGlkIGNvbHVtbiBibGFja2JvYXJkIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICAgICAgICAgfCAoXywgXywgZmFsc2UpIDo6IF8gLT4gdHJ1ZSAoKiBubyBtb2RpZiBvbiBhICopXG4gICAgICAgICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF9cbiAgICAgICAgICAgICAgICAgd2hlbiBiID0gZWlkYiAmJiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBpZiB5ZXMsIGEgY2FuY2VscyBiIG1vZGlmKilcbiAgICAgICAgICAgICAgIHwgKGEsIHgsIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIHdoZW4gYSA9IGVpZGEgLT5cbiAgICAgICAgICAgICAgICAgeCA9IHkgKCogaXMgYSBtb2RpZiBpcyBtdXRlID8gKilcbiAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICBxXG4gICAgICAgICYmIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiwgX2JsYWNrYm9hcmQgPSBjbGVhbiBwaWQgY29sdW1uIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfYXV4IGNvbHVtbiA9XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICAgIHwgKGIsIHgsIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIHdoZW4gYiA9IGVpZGIgLT5cbiAgICAgICAgICAgICAgICAgICB4ID0geSAoKiBpcyBiIG1vZGlmIGlzIG11dGUgPyAqKVxuICAgICAgICAgICAgICAgICB8IChiLCBfLCBib29sKSA6OiBfIHdoZW4gYiA9IGVpZGIgLT5cbiAgICAgICAgICAgICAgICAgICBub3QgYm9vbCAoKiBpZiB5ZXMsIGIgZG9lcyBub3QgZG8gbW9kaWYgKilcbiAgICAgICAgICAgICAgICAgfCAoXywgXywgXykgOjogdGFpbCAtPiBjaGVja19hdXggdGFpbFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKGIsIF8sIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfXG4gICAgICAgICAgICAgICAgIHdoZW4gYiA9IGVpZGIgJiYgYSA9IGVpZGEgLT5cbiAgICAgICAgICAgICAgICAgeCA9IHkgKCogYSBjYW5jZWxzIGIgbW9kaWYqKVxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGNoZWNrX2F1eCBjb2x1bW4gKCogb3RoZXJ3aXNlIGNoZWNrIHRoYXQgYiBoYXMgbm8gZWZmZWN0ICAqKSlcbiAgICAgICAgICAgICAoQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZGIpXG4gICAgICB0aGVuXG4gICAgICAgIGVycm9yLCBTb21lIChlaWRhLCBlaWRiKVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgTm9uZVxuXG4gIGxldCBwb3AgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgbGV0IHByZWRpY2F0ZV9saXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZCBpblxuICAgIGxldCByZWMgYXV4IGwgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGJsYWNrYm9hcmRcbiAgICAgIHwgcGlkIDo6IHRhaWwgLT5cbiAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgIG1hdGNoIENQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgIHwgKGEsIF8sIF8pIDo6IHEgd2hlbiBhID0gZWlkIC0+IHFcbiAgICAgICAgICB8IF8gLT4gbGlzdFxuICAgICAgICBpblxuICAgICAgICBhdXggdGFpbCBlcnJvclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgcGlkIGxpc3QgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBibGFja2JvYXJkID0gYXV4IHByZWRpY2F0ZV9saXN0IGVycm9yIGJsYWNrYm9hcmQgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkIE5vbmUgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBwcmVkaWNhdGVzX29mX3Rlc3QgX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgX2JsYWNrYm9hcmQgdGVzdCA9XG4gICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5IZXJlIGFnX2lkIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgX2ludCkgLT5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgIChQby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBzIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQyID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkMTsgcHJlZGljYXRlX2lkMiBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzLCBfKSAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG5cbiAgbGV0IGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkID1cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5ldmVudCBpblxuICAgIGxldCB0ZXN0X2xpc3QgPSBUcmFjZS50ZXN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9IFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZV9tYXBzLlByZWRpY2F0ZU1hcC5hZGQgaWQgdmFsdWUgbWFwKVxuICAgICAgICBtYXAgbGlzdFxuICAgIGluXG4gICAgbGV0IGJ1aWxkX21hcF90ZXN0IGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbWFwIGlkIC0+IFByZWRpY2F0ZU1hcC5hZGQgaWQgdHJ1ZSBtYXApIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID0gUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCAoZmFsc2UsIE5vbmUpIHBpZCBtYXAgaW5cbiAgICAgIGxldCB0ZXN0ID0gdGVzdCB8fCB0ZXN0JyBpblxuICAgICAgbGV0IGFjdGlvbiA9XG4gICAgICAgIG1hdGNoIGFjdGlvbicgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICAgIHwgXyAtPiBhY3Rpb24nXG4gICAgICBpblxuICAgICAgbGV0IG1hcCA9IFByZWRpY2F0ZU1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzID0gc2lkZV9lZmZlY3QgaW5cbiAgICBsZXQgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgdGVzdCAtPlxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgYnVpbGRfbWFwX3Rlc3QgdGVzdF9saXN0IG1hcClcbiAgICAgICAgUHJlZGljYXRlTWFwLmVtcHR5IHRlc3RfbGlzdFxuICAgIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBhY3Rpb25fbWFwLFxuICAgICAgICAgIHRlc3RfbWFwLFxuICAgICAgICAgIGlzX3JlbW92ZV9hY3Rpb24sXG4gICAgICAgICAgX2lzX2NyZWF0ZV9hY3Rpb24gKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAsIGJvb2wsIGJvb2xfY3JlYXRpb24pXG4gICAgICAgICAgICAgYWN0aW9uIC0+XG4gICAgICAgICAgbGV0IGJsYWNrYm9hcmQsIGFjdGlvbl9saXN0LCB0ZXN0X2xpc3QsIGJvb2wnLCBib29sX2NyZWF0aW9uJyA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcF90ZXN0IHRlc3RfbGlzdCB0ZXN0X21hcCxcbiAgICAgICAgICAgIGJvb2wgfHwgYm9vbCcsXG4gICAgICAgICAgICBib29sX2NyZWF0aW9uIHx8IGJvb2xfY3JlYXRpb24nICkpXG4gICAgICAgIChlcnJvciwgYmxhY2tib2FyZCwgUHJlZGljYXRlTWFwLmVtcHR5LCB0ZXN0X21hcCwgZmFsc2UsIGZhbHNlKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZU1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgZSwgUHJlZGljYXRlTWFwLmFkZCBrZXkgKHRlc3QsIFNvbWUgYWN0aW9uKSBhY2MpXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPiBlLCBQcmVkaWNhdGVNYXAuYWRkIGtleSAodGVzdCwgTm9uZSkgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZU1hcC5hZGQga2V5IChmYWxzZSwgU29tZSBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVNYXAuZW1wdHlcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAoZnVuICgoYSwgXyksIGIpIG1hcCAtPlxuICAgICAgICAgIGxldCBwaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhLCBiKSBpblxuICAgICAgICAgIGFkZF9zdGF0ZSBwaWQgKGZhbHNlLCBTb21lIFByZWRpY2F0ZV9tYXBzLkZyZWUpIG1hcClcbiAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIG1lcmdlZF9tYXBcbiAgICBpblxuICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5uc3RlcHMgKyAxIGluXG4gICAgbGV0IF8gPSBBLnNldCBibGFja2JvYXJkLmV2ZW50IG5zaWQgKFNvbWUgc3RlcCkgaW5cbiAgICBsZXQgbl9tb2RpZmljYXRpb25zLCBwcmVfc3RlcHNfYnlfY29sdW1uLCBsaXN0LCBtb2Rfd2l0aG91dF90ZXN0ID1cbiAgICAgIFByZWRpY2F0ZU1hcC5mb2xkXG4gICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgKG5fbW9kaWZpY2F0aW9ucywgbWFwLCBsaXN0LCBtb2Rfd2l0aG91dF90ZXN0KSAtPlxuICAgICAgICAgIGxldCBvbGRfbGlzdCA9XG4gICAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICBbIC0xLCBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWQsIGZhbHNlIF1cbiAgICAgICAgICAgICAgaWQgbWFwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2xkX3ZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIG9sZF9saXN0IHdpdGhcbiAgICAgICAgICAgIHwgKF8sIHYsIF8pIDo6IF8gLT4gdlxuICAgICAgICAgICAgfCBbXSAtPiBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuX21vZGlmaWNhdGlvbnMsIGJvb2xfYWN0aW9uLCBtb2Rfd2l0aG91dF90ZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbl9tb2RpZmljYXRpb25zLCBmYWxzZSwgbW9kX3dpdGhvdXRfdGVzdFxuICAgICAgICAgICAgfCBTb21lIF8gLT4gbl9tb2RpZmljYXRpb25zICsgMSwgdHJ1ZSwgbW9kX3dpdGhvdXRfdGVzdCB8fCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIG5fbW9kaWZpY2F0aW9ucyxcbiAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuYWRkIGlkXG4gICAgICAgICAgICAgICgobnNpZCwgbmV3X3ZhbHVlLCBib29sX2FjdGlvbikgOjogb2xkX2xpc3QpXG4gICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgIChpZCwgbmV3X3ZhbHVlKSA6OiBsaXN0LFxuICAgICAgICAgICAgbW9kX3dpdGhvdXRfdGVzdCApKVxuICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICgwLCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbiwgW10sIGZhbHNlKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgaXNfcmVtb3ZlX2FjdGlvbiB0aGVuIChcbiAgICAgICAgbGV0IF8gPSBBLnNldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gbnNpZCB0cnVlIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IG5zaWRcbiAgICAgICAgKExpc3QucmV2X21hcCBmc3QgKExpc3QucmV2IGxpc3QpKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBuc2lkIG5fbW9kaWZpY2F0aW9uc1xuICAgIGluXG4gICAgbGV0ICgpID0gQS5zZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBuc2lkIG1vZF93aXRob3V0X3Rlc3QgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICB7XG4gICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICBldmVudCA9IHByZV9ldmVudDtcbiAgICAgICAgc3RlcHNfYnlfY29sdW1uID0gcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgbnN0ZXBzID0gbnNpZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGVycm9yLCBpbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGN1dCBwYXJhbWV0ZXIgaGFuZGxlciBpbmZvIGVycm9yIGxpc3QgPVxuICAgIGxldCBuX3N0ZXBzID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBibGFja2JvYXJkID0gaW5pdF9ibGFja2JvYXJkIG5fc3RlcHMgaGFuZGxlciBpblxuICAgIGxldCBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIG5fY3V0KSBzdGVwIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBpbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHRvX3BvcCA9IGNoZWNrIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICBtYXRjaCB0b19wb3Agd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXRcbiAgICAgICAgICB8IFNvbWUgKGUxLCBlMikgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9IHBvcCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGUxIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPSBwb3AgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBlMiBpblxuICAgICAgICAgICAgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIG5fY3V0ICsgMilcbiAgICAgICAgKGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCAwKVxuICAgICAgICBsaXN0XG4gICAgaW5cbiAgICBsZXQgbGlzdCA9XG4gICAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgICBpZiBrID0gLTEgdGhlblxuICAgICAgICAgIGxpc3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5ldmVudCBrIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhdXggKGsgLSAxKSAoYSA6OiBsaXN0KVxuICAgICAgICAgIHwgTm9uZSAtPiBhdXggKGsgLSAxKSBsaXN0XG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggYmxhY2tib2FyZC5uc3RlcHMgW11cbiAgICBpblxuICAgIGxldCB0YWIgPSBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbiBpblxuICAgIGxldCBfID0gTGlzdC5pdGVyIChDUHJlZGljYXRlTWFwLnJlY3ljbGUgdGFiKSBibGFja2JvYXJkLmFnZW50X2xpc3QgaW5cbiAgICBlcnJvciwgaW5mbywgKGxpc3QsIG5fY3V0KVxuXG4gICgqICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3IgbGlzdCA9IGVycm9yLCBpbmZvLCAobGlzdCwwKSopXG5lbmRcbiIsIigqKlxuICAqIGNmbG93X2hhbmRsZXIubWxcbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjkvMDgvMjAxMVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyOS8wMS8yMDE2XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBQcmVCbGFja2JvYXJkID0gc2lnXG4gIG1vZHVsZSBBIDogR2VuQXJyYXkuR2VuQXJyYXlcbiAgbW9kdWxlIENJIDogUHNldWRvX2ludmVyc2UuQ3V0X3BzZXVkb19pbnZlcnNlXG5cbiAgdHlwZSBzdGVwX2lkXG5cbiAgdmFsIHplcm9fc3RlcF9pZCA6IHN0ZXBfaWRcbiAgdmFsIGR1bW15X3N0ZXBfaWQgOiBzdGVwX2lkXG4gIHZhbCBpbnRfb2Zfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gaW50XG4gIHZhbCBzdGVwX2lkX29mX2ludCA6IGludCAtPiBzdGVwX2lkXG4gIHZhbCBkZWNfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gc3RlcF9pZFxuICB2YWwgaW5jX3N0ZXBfaWQgOiBzdGVwX2lkIC0+IHN0ZXBfaWRcblxuICB0eXBlIHN0ZXBfc2hvcnRfaWRcblxuICB2YWwgemVyb19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZFxuICB2YWwgZHVtbXlfc3RlcF9zaG9ydF9pZCA6IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGludF9vZl9zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBpbnRcbiAgdmFsIHN0ZXBfc2hvcnRfaWRfb2ZfaW50IDogaW50IC0+IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGluY19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBzdGVwX3Nob3J0X2lkXG4gIHZhbCBkZWNfc3RlcF9zaG9ydF9pZCA6IHN0ZXBfc2hvcnRfaWQgLT4gc3RlcF9zaG9ydF9pZFxuXG4gICgqKiBibGFja2JvYXJkIHByZWRpY2F0ZXMqKVxuXG4gIHR5cGUgcHJlZGljYXRlX2lkID0gaW50XG4gIHR5cGUgcHJlZGljYXRlX2luZm9cbiAgdHlwZSBwcmVkaWNhdGVfdmFsdWVcblxuICBtb2R1bGUgQyA6IENhY2hlLkNhY2hlIHdpdGggdHlwZSBPLnQgPSBwcmVkaWNhdGVfdmFsdWVcblxuICB0eXBlIHByZV9ibGFja2JvYXJkICgqYmxhY2tib2FyZCBkdXJpbmcgaXRzIGNvbnN0cnVjdGlvbiopXG5cbiAgdmFsIHdlYWtlbmluZyA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgbGlzdFxuXG4gIHZhbCBjb25qIDpcbiAgICAocHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkaXNqdW5jdGlvbiA6XG4gICAgKHByZWRpY2F0ZV92YWx1ZSwgcHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUpIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgZGVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZVxuICB2YWwgdW5kZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCB1bmtub3duIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCBpc191bmtub3duIDogcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIGlzX3VuZGVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBib29sXG4gIHZhbCBtb3JlX3JlZmluZWQgOiBwcmVkaWNhdGVfdmFsdWUgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIGNvbXBhdGlibGUgOiBwcmVkaWNhdGVfdmFsdWUgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIHN0cmljdGx5X21vcmVfcmVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiA6IHByZV9ibGFja2JvYXJkIC0+IHByZWRpY2F0ZV9pbmZvIEEudFxuXG4gICgqKiBnZW5lcmF0aW9uKilcblxuICB2YWwgaW5pdCA6IHByZV9ibGFja2JvYXJkIENJLlBvLksuSC56ZXJvYXJ5XG5cbiAgdmFsIGFkZF9zdGVwIDpcbiAgICAoIFRyYWNlLnN0ZXAsXG4gICAgICBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHN0ZXBfaWQsXG4gICAgICBwcmVfYmxhY2tib2FyZCAqIHN0ZXBfaWQgKVxuICAgIENJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGFkZF9zdGVwX3VwX3RvX2lzbyA6XG4gICAgKCBUcmFjZS5zdGVwLFxuICAgICAgcHJlX2JsYWNrYm9hcmQsXG4gICAgICBzdGVwX2lkLFxuICAgICAgcHJlX2JsYWNrYm9hcmQgKiBzdGVwX2lkIClcbiAgICBDSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCBmaW5hbGl6ZSA6XG4gICAgUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb24gLT5cbiAgICAocHJlX2JsYWNrYm9hcmQsIHByZV9ibGFja2JvYXJkKSBDSS5Qby5LLkgudW5hcnlcblxuICAoKipwcmV0dHkgcHJpbnRpbmcqKVxuXG4gIHZhbCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIDogcHJlZGljYXRlX3ZhbHVlIC0+IHN0cmluZ1xuICB2YWwgcHJpbnRfcHJlZGljYXRlX3ZhbHVlIDogTG9nZ2Vycy50IC0+IHByZWRpY2F0ZV92YWx1ZSAtPiB1bml0XG4gIHZhbCBwcmludF9wcmVibGFja2JvYXJkIDogKHByZV9ibGFja2JvYXJkLCB1bml0KSBDSS5Qby5LLkgudW5hcnlcblxuICAoKippbnRlcmZhY2UqKVxuXG4gIHZhbCBuX2V2ZW50cyA6IChwcmVfYmxhY2tib2FyZCwgaW50KSBDSS5Qby5LLkgudW5hcnlcbiAgdmFsIG5fcHJlZGljYXRlcyA6IChwcmVfYmxhY2tib2FyZCwgaW50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgbl9ldmVudHNfcGVyX3ByZWRpY2F0ZSA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBpbnQsIHByZWRpY2F0ZV9pZCkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBldmVudF9saXN0X29mX3ByZWRpY2F0ZSA6XG4gICAgKCBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHByZWRpY2F0ZV9pZCxcbiAgICAgIChzdGVwX2lkICogaW50ICogcHJlZGljYXRlX3ZhbHVlICogcHJlZGljYXRlX3ZhbHVlKSBsaXN0IClcbiAgICBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIG1hbmRhdG9yeV9ldmVudHMgOlxuICAgICggcHJlX2JsYWNrYm9hcmQsXG4gICAgICAoc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3QgKVxuICAgIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBnZXRfcHJlX2V2ZW50IDogKHByZV9ibGFja2JvYXJkLCBUcmFjZS5zdGVwIEEudCkgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9zaWRlX2VmZmVjdCA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBDSS5Qby5LLnNpZGVfZWZmZWN0IEEudCkgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9maWN0aXRpb3VzX29ic2VydmFibGUgOlxuICAgIChwcmVfYmxhY2tib2FyZCwgc3RlcF9pZCBvcHRpb24pIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBnZXRfbGV2ZWxfb2ZfZXZlbnQgOlxuICAgIChwcmVfYmxhY2tib2FyZCwgc3RlcF9pZCwgUHJpb3JpdHkubGV2ZWwpIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgbGV2ZWxzIDogcHJlX2JsYWNrYm9hcmQgLT4gUHJpb3JpdHkubGV2ZWwgQS50XG4gIHZhbCBwcmludF9wcmVkaWNhdGVfaW5mbyA6IExvZ2dlcnMudCAtPiBwcmVkaWNhdGVfaW5mbyAtPiB1bml0XG5lbmRcblxubW9kdWxlIFByZWJsYWNrYm9hcmQgOiBQcmVCbGFja2JvYXJkID0gc3RydWN0XG4gICgqKiBVc2VmdWwgbW9kdWxlcyAqKVxuXG4gIG1vZHVsZSBBID0gTW9kcy5EeW5BcnJheVxuICBtb2R1bGUgQ0kgPSBQc2V1ZG9faW52ZXJzZS5Qc2V1ZG9faW52XG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgbGV0IGVycm9yLCB4ID1cbiAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB4XG5cbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4KilcblxuICB0eXBlIHN0ZXBfaWQgPSBpbnRcbiAgKCoqIGdsb2JhbCBpZCBvZiBhbiBldmVudCAqKVxuXG4gIGxldCB6ZXJvX3N0ZXBfaWQgPSAwXG4gIGxldCBkdW1teV9zdGVwX2lkID0gLTFcbiAgbGV0IGludF9vZl9zdGVwX2lkIGkgPSBpXG4gIGxldCBzdGVwX2lkX29mX2ludCBpID0gaVxuICBsZXQgZGVjX3N0ZXBfaWQgaSA9IGkgLSAxXG4gIGxldCBpbmNfc3RlcF9pZCBpID0gaSArIDFcblxuICB0eXBlIHN0ZXBfc2hvcnRfaWQgPSBpbnRcbiAgKCoqIHBvc2l0aW9uIG9mIGFuIGV2ZW50IG9uIGEgd2lyZSAqKVxuXG4gIGxldCB6ZXJvX3N0ZXBfc2hvcnRfaWQgPSAwXG4gIGxldCBkdW1teV9zdGVwX3Nob3J0X2lkID0gLTFcbiAgbGV0IGludF9vZl9zdGVwX3Nob3J0X2lkIGkgPSBpXG4gIGxldCBzdGVwX3Nob3J0X2lkX29mX2ludCBpID0gaVxuICBsZXQgaW5jX3N0ZXBfc2hvcnRfaWQgaSA9IGkgKyAxXG4gIGxldCBkZWNfc3RlcF9zaG9ydF9pZCBpID0gaSAtIDFcblxuICAoKiogYmxhY2tib2FyZCBwcmVkaWNhdGVzKilcblxuICAoKioga2luZCBvZiBldmVudHMqKVxuICB0eXBlIHJ1bGVfdHlwZSA9XG4gICAgfCBTdWJzXG4gICAgfCBEdW1teVxuICAgIHwgSW5pdFxuICAgIHwgT2JzZXJ2YWJsZVxuICAgIHwgUnVsZVxuICAgIHwgU2lkZV9lZmZlY3Rfb2Ygb2ZcbiAgICAgICAgKHN0ZXBfaWQgKiAoQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lKSBsaXN0KVxuXG4gIHR5cGUgcHJlZGljYXRlX2lkID0gaW50XG4gICgqKiB3aXJlIGlkZW50aWZpZXJzICopXG5cbiAgdHlwZSBtdXRleCA9XG4gICAgfCBMb2NrX3NpZGVfZWZmZWN0IG9mXG4gICAgICAgIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkICogQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBMb2NrX2FnZW50IG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBMb2NrX3JlY3Rhbmd1bGFyIG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBMb2NrX2xpbmtzIG9mIHN0ZXBfaWQgKiAoQ0kuUG8uSy5hZ2VudF9pZCAqIENJLlBvLksuYWdlbnRfaWQpXG5cbiAgKCoqIHdpcmUgbGFiZWxzICopXG4gIHR5cGUgcHJlZGljYXRlX2luZm8gPVxuICAgIHwgRmljdGl0aW91cyAoKnRvIGhhbmRsZSB3aXRoIGFtYmlndW91cyBzaXRlIGVmZmVjdHMgKilcbiAgICB8IEhlcmUgb2YgQ0kuUG8uSy5hZ2VudF9pZFxuICAgIHwgQm91bmRfc2l0ZSBvZiBDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICB8IEludGVybmFsX3N0YXRlIG9mIENJLlBvLksuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgUG9pbnRlciBvZiBzdGVwX2lkICogQ0kuUG8uSy5hZ2VudF9pZFxuICAgIHwgTXV0ZXggb2YgbXV0ZXhcbiAgICB8IExpbmsgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG5cbiAgbGV0IF8gPSBMaW5rICgwLCAwLCAwKVxuICAoKiBkbyBub3QgcmVtb3ZlLCBpdCB3aWxsIGJlIG5lY2Vzc2FyeSBmb3IgZGVhbGluZyBlZmZlY3RpdmVseSB3aXRoIHVuYXJ5L2JpbmFyeSBydWxlICopXG5cbiAgdHlwZSBwcmVkaWNhdGVfdmFsdWUgPVxuICAgIHwgQ291bnRlciBvZiBpbnRcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgb2YgSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG4gICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBvZiBDSS5Qby5LLmludGVybmFsX3N0YXRlXG4gICAgfCBEZWZpbmVkICAoKiogdGhlIHdpcmUgZG9lcyBleGlzdCwgYnV0IHdlIGRvIG5vdCBrbm93IHdoYXQgdGhlIHZhbHVlIGlzICopXG4gICAgfCBVbmRlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIG5vdCBleGlzdCB5ZXQgKilcbiAgICB8IFByZXNlbnQgICgqKiBmb3IgYWdlbnQgcHJlc2VuY2UgKilcbiAgICB8IEZyZWUgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuICAgIHwgQm91bmQgICgqKiBmb3IgYmluZGluZyBzaXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbikgKilcbiAgICB8IEJvdW5kX3RvIG9mXG4gICAgICAgIHByZWRpY2F0ZV9pZFxuICAgICAgICAqIENJLlBvLksuYWdlbnRfaWRcbiAgICAgICAgKiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcbiAgICAgICAgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgICAgICAoKiogZm9yIGJpbmRpbmYgc2l0ZXMgKGNvbXBsZXRlIGluZm9ybWF0aW9uKSAqKVxuICAgIHwgQm91bmRfdG9fdHlwZSBvZiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWUgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgICAgICAoKiogZm9yIGJpbmRpbmcgc2l0ZXMgKHBhcnRpYWwgaW5mb3JtYXRpb24gKilcbiAgICB8IFVua25vd25cbiAgICAgICAgKCoqICBmb3IgYWdlbnQgcHJlc2VuY2UsIGludGVybmFsIHN0YXRlcywgYmluZGluZyBzdGF0ZXMgKHBhcnRpYWwgaW5mb3JtYXRpb24gKilcblxuICBtb2R1bGUgQyA6IENhY2hlLkNhY2hlIHdpdGggdHlwZSBPLnQgPSBwcmVkaWNhdGVfdmFsdWUgPSBDYWNoZS5DYWNoZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX3ZhbHVlXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIGxldCB3ZWFrZW5pbmcgcCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudCB8IEZyZWVcbiAgICB8IEJvdW5kIC0+XG4gICAgICBbIHA7IERlZmluZWQgXVxuICAgIHwgQm91bmRfdG8gKF8sIF8sIGFnLCBzaXRlKSAtPlxuICAgICAgWyBwOyBCb3VuZF90b190eXBlIChhZywgc2l0ZSk7IEJvdW5kOyBEZWZpbmVkIF1cbiAgICB8IEJvdW5kX3RvX3R5cGUgXyAtPiBbIHA7IEJvdW5kOyBEZWZpbmVkIF1cbiAgICB8IERlZmluZWQgfCBVbmRlZmluZWQgLT4gWyBwIF1cbiAgICB8IFVua25vd24gLT4gW11cblxuICBsZXQgZGVmaW5lZCA9IERlZmluZWRcbiAgbGV0IHVuZGVmaW5lZCA9IFVuZGVmaW5lZFxuICBsZXQgdW5rbm93biA9IFVua25vd25cbiAgbGV0IGlzX3Vua25vd24geCA9IHggPSBVbmtub3duXG4gIGxldCBpc191bmRlZmluZWQgeCA9IHggPSBVbmRlZmluZWRcblxuICAoKiogbWFwcyBhbmQgc2V0cyAqKVxuXG4gIG1vZHVsZSBQcmVkaWNhdGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX2luZm9cblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbW9kdWxlIFByZWRpY2F0ZVNldCA9IFByZWRpY2F0ZVNldE1hcC5TZXRcbiAgbW9kdWxlIFByZWRpY2F0ZU1hcCA9IFByZWRpY2F0ZVNldE1hcC5NYXBcblxuICBtb2R1bGUgQ2FzZVZhbHVlU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWRpY2F0ZV92YWx1ZVxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgQ2FzZVZhbHVlU2V0ID0gQ2FzZVZhbHVlU2V0TWFwLlNldFxuICBtb2R1bGUgUHJlZGljYXRlaWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgUHJlZGljYXRlaWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgU2lkTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIEFnZW50SWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZDJNYXAgPSBNb2RzLkludDJNYXBcbiAgbW9kdWxlIEFnZW50SWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgQWdlbnRJZDJTZXQgPSBNb2RzLkludDJTZXRcbiAgbW9kdWxlIFNpdGVJZFNldCA9IE1vZHMuSW50MlNldFxuICBtb2R1bGUgU2l0ZUlkTWFwID0gTW9kcy5JbnQyTWFwXG5cbiAgdHlwZSBwcmVfYmxhY2tib2FyZCA9IHtcbiAgICBwcmVfZmljdGl0aW91c19saXN0OiBwcmVkaWNhdGVfaWQgbGlzdDtcbiAgICAgICAgKCoqIGxpc3Qgb2Ygd2lyZSBmb3IgbXV0dWFsIGV4Y2x1c2lvbnMsIHRoZSBzdGF0ZSBtdXN0IGJlIHVuZGVmaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSB0cmFjZSAqKVxuICAgIHByZV9zdGVwc19ieV9jb2x1bW46XG4gICAgICAoc3RlcF9zaG9ydF9pZFxuICAgICAgKiAoc3RlcF9pZCAqIHN0ZXBfc2hvcnRfaWQgKiBwcmVkaWNhdGVfdmFsdWUgKiBwcmVkaWNhdGVfdmFsdWUpIGxpc3QpXG4gICAgICBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSB0byB0aGUgbGFzdCBrbm93biB2YWx1ZSBhbmQgdGhlIGxpc3Qgb2Ygc3RlcCAoc3RlcCBpZCx0ZXN0LGFjdGlvbikqKVxuICAgIHByZV9raW5kX29mX2V2ZW50OiBydWxlX3R5cGUgQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIGV2ZW50IGlkIHRvIHRoZSBraW5kIG9mIGV2ZW50ICopXG4gICAgcHJlX2V2ZW50OiBUcmFjZS5zdGVwIEEudDsgICgqKiBtYXBzIGVhY2ggZXZlbnQgdG8gdGhlIHN0ZXAgKilcbiAgICBwcmVfbnN0ZXBzOiBzdGVwX2lkOyAgKCoqaWQgb2YgdGhlIGxhc3QgZXZlbnQgKilcbiAgICBwcmVfbmNvbHVtbjogcHJlZGljYXRlX2lkOyAgKCoqaWQgb2YgdGhlIGxhc3Qgd2lyZSAqKVxuICAgIHByZV9jb2x1bW5fbWFwOiBwcmVkaWNhdGVfaWQgUHJlZGljYXRlTWFwLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBsYWJlbCB0byBpdHMgd2lyZSBpZCAqKVxuICAgIHByZV9jb2x1bW5fbWFwX2ludjogcHJlZGljYXRlX2luZm8gQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIHdpcmUgaWQgdG8gaXRzIHdpcmUgbGFiZWwgKilcbiAgICBwcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZDogUHJlZGljYXRlaWRTZXQudCBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCBmb3IgdGhlIHByZXNlbmNlIG9mIGFuIGFnZW50IHRvIHRoZSBzZXQgb2Ygd2lyZXMgZm9yIGl0cyBhdHRpYnV0ZSAodXNlZnVsLCB3aGVuIGFuIGFnZW50IGdldCByZW1vdmVkLCBhbGwgaXRzIGF0dHJpYnV0ZXMgZ2V0IHVuZGVmaW5lZCAqKVxuICAgIGhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWQ6IEMudCBBLnQ7XG4gICAgICAgICgqIG1hcHMgZWFjaCB3aXJlIHRvIHRoZSBzZXQgb2YgaXRzIHByZXZpb3VzIHN0YXRlcywgdGhpcyBzdW1tYXJpemUgdGhlIHBvdGVudGlhbCBzdGF0ZSBvZiBhIHNpdGUgdGhhdCBpcyBmcmVlZCwgc28gYXMgdG8gb3ZlcmFwcHJveGltYXRlIHRoZSBzZXQgb2YgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyopXG4gICAgaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZTogQ0kuUG8uSy5hZ2VudF9pZCBsaXN0IEEudDtcbiAgICBwcmVfb2JzZXJ2YWJsZV9saXN0OlxuICAgICAgKHN0ZXBfaWQgbGlzdCAqIHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgb3B0aW9uKSBsaXN0O1xuICAgIHByZV9zaWRlX2VmZmVjdF9vZl9ldmVudDogQ0kuUG8uSy5zaWRlX2VmZmVjdCBBLnQ7XG4gICAgcHJlX2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZTogc3RlcF9pZCBvcHRpb247XG4gICAgICAgICgqaWQgb2YgdGhlIHN0ZXAgdGhhdCBjbG9zZXMgYWxsIHRoZSBzaWRlLWVmZmVjdCBtdXRleCAqKVxuICAgIHByZV9sZXZlbF9vZl9ldmVudDogUHJpb3JpdHkubGV2ZWwgQS50O1xuICB9XG5cbiAgbGV0IGxldmVscyBiID0gYi5wcmVfbGV2ZWxfb2ZfZXZlbnRcbiAgbGV0IGdldF9wcmVfY29sdW1uX21hcF9pbnYgeCA9IHgucHJlX2NvbHVtbl9tYXBfaW52XG5cbiAgbGV0IGdldF9wcmVfZXZlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4ID1cbiAgICBlcnJvciwgbG9nX2luZm8sIHgucHJlX2V2ZW50XG5cbiAgKCoqIHByZXR0eSBwcmludGluZyAqKVxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfaW5mbyBsb2cgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBIZXJlIGkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkFnZW50X0hlcmUgJWlcIiBpXG4gICAgfCBCb3VuZF9zaXRlIChpLCBzKSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiQmluZGluZ19zdGF0ZSAoJWksJWkpXCIgaSBzXG4gICAgfCBJbnRlcm5hbF9zdGF0ZSAoaSwgcykgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkludGVybmFsX3N0YXRlICglaSwlaSlcIiBpIHNcbiAgICB8IFBvaW50ZXIgKGVpZCwgaWQpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQb2ludGVyKGVpZDolaSxhZ19pZDolaSlcIiBlaWQgaWRcbiAgICB8IExpbmsgKGVpZCwgaWQxLCBpZDIpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTGluayhlaWQ6JWksJWktJWkpXCIgZWlkIGlkMSBpZDJcbiAgICB8IE11dGV4IChMb2NrX2FnZW50IChpbnQsIGludDIpKSAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk11dGV4IChTdGVwLWlkOiVpLEFnZW50X2lkOiVpKVwiIGludCBpbnQyXG4gICAgfCBNdXRleCAoTG9ja19yZWN0YW5ndWxhciAoaW50LCBpbnQyKSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9pbnYgKFN0ZXAtaWQ6JWksQWdlbnRfaWQ6JWkpXCIgaW50IGludDJcbiAgICB8IE11dGV4IChMb2NrX2xpbmtzIChpbnQsIChpbnQyLCBpbnQzKSkpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXhfbGlua3MgKFN0ZXAtaWQ6JWksJWktJWkpXCIgaW50IGludDIgaW50M1xuICAgIHwgTXV0ZXggKExvY2tfc2lkZV9lZmZlY3QgKGludCwgaW50MiwgaW50MywgaW50NCkpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXhfc2lkZV9lZmZlY3QgKFN0ZXAtaWQ6JWksJWkvJWkuJWkpXCIgaW50IGludDJcbiAgICAgICAgaW50MyBpbnQ0XG4gICAgfCBGaWN0aXRpb3VzIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJGaWN0aXRpb3VzXCJcblxuICBsZXQgcHJpbnRfa25vd24gbG9nIHQgeCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVbmtub3duIC0+ICgpXG4gICAgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudCB8IEZyZWVcbiAgICB8IEJvdW5kIHwgQm91bmRfdG8gXyB8IEJvdW5kX3RvX3R5cGUgXyB8IERlZmluZWQgfCBVbmRlZmluZWQgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIHhcblxuICBsZXQgc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IENvdW50ZXIgaW50IC0+IFwiQ291bnRlciBcIiBeIHN0cmluZ19vZl9pbnQgaW50XG4gICAgfCBEZWZpbmVkIC0+IFwiRGVmaW5lZFwiXG4gICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnRlcm5hbF9zdGF0ZSAtPiBzdHJpbmdfb2ZfaW50IGludGVybmFsX3N0YXRlXG4gICAgfCBVbmRlZmluZWQgLT4gXCJVbmRlZmluZWRcIlxuICAgIHwgUHJlc2VudCAtPiBcIlByZXNlbnRcIlxuICAgIHwgRnJlZSAtPiBcIkZyZWVcIlxuICAgIHwgQm91bmQgLT4gXCJCb3VuZFwiXG4gICAgfCBCb3VuZF90byAoaWQsIGFnZW50X2lkLCBhZ2VudF9uYW1lLCBzaXRlKSAtPlxuICAgICAgXCJCb3VuZChcIiBeIHN0cmluZ19vZl9pbnQgaWQgXiBcIixcIiBeIHN0cmluZ19vZl9pbnQgYWdlbnRfaWQgXiBcIihcIlxuICAgICAgXiBzdHJpbmdfb2ZfaW50IGFnZW50X25hbWUgXiBcIilAXCIgXiBzdHJpbmdfb2ZfaW50IHNpdGUgXiBcIilcIlxuICAgIHwgQm91bmRfdG9fdHlwZSAoYWdlbnQsIHNpdGUpIC0+XG4gICAgICBcIkJvdW5kKFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudCBeIFwiQFwiIF4gc3RyaW5nX29mX2ludCBzaXRlIF4gXCIpXCJcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgYWdlbnRfaWQgLT4gXCJQb2ludGVyKFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudF9pZCBeIFwiKVwiXG4gICAgfCBVbmtub3duIC0+IFwiXCJcblxuICBsZXQgcHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyB4ID1cbiAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiAoc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSB4KVxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSA9XG4gICAgbGV0IHByZWRpY2F0ZV9pbmZvID0gQS5nZXQgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgaSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQcmVkaWNhdGU6ICVpIFwiIGkgaW5cbiAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaW5mbyBsb2cgcHJlZGljYXRlX2luZm8gaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgKClcblxuICBsZXQgcHJpbnRfcHJlYmxhY2tib2FyZCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGxvZyA9IENJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIioqUFJFQkxBQ0tCT0FSRCoqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogIGFnZW50IHR5cGVzICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIG5hbWUgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQWdlbnQgbmFtZTogJWkgXCIgbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgaWQ6ICVpIFwiIHggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAoKSkpXG4gICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqIHN0ZXBzIGJ5IGNvbHVtbiAqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpZCAobmV2ZW50cywgbGlzdCkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaWQgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwibmV2ZW50czogJWkgXCIgbmV2ZW50cyBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVpZCwgc2VpZCwgdGVzdCwgYWN0aW9uKSAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVudCBpZDogJWkgXCIgZWlkIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJTaG9ydCBpZDogJWkgXCIgc2VpZCBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9rbm93biBsb2cgdGVzdCBcIlRFU1Q6ICAgXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHRlc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfa25vd24gbG9nIGFjdGlvbiBcIkFDVElPTjogXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGFjdGlvbiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgICAgKExpc3QucmV2IGxpc3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiLS0tXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogU2lkZSBlZmZlY3RzICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIGkgbGlzdCAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJldmVudCAlaTosIFwiIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDSS5Qby5LLnByaW50X3NpZGVfZWZmZWN0IGxvZyBsaXN0IGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKlByZWRpY2F0ZV9pZCByZWxhdGVkIHRvIHRoZSBwcmVkaWNhdGUgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlZGljYXRlX2lkIGxvZyBibGFja2JvYXJkIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgUHJlZGljYXRlaWRTZXQuaXRlclxuICAgICAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWlcIiBzIGluXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIi0tLVwiIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKlBhc3QgdmFsdWVzIG9mIGEgcHJlZGljYXRlKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlZGljYXRlX2lkIGxvZyBibGFja2JvYXJkIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDLml0ZXIgKGZ1biBzIC0+IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgcykgcyBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCItLS1cIiBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKk9ic2VydmFibGVzKlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChsLCBfKSAtPlxuICAgICAgICAgIGxldCBfID0gTGlzdC5pdGVyIChMb2dnZXJzLmZwcmludGYgbG9nIFwiJWksXCIpIGwgaW5cbiAgICAgICAgICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgKCoqIGluZm9ybWF0aW9uIGxhdHRpY2UgKilcblxuICBsZXQgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeSA9XG4gICAgbWF0Y2ggeSB3aXRoXG4gICAgfCBVbmRlZmluZWQgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudFxuICAgIHwgRnJlZSB8IEJvdW5kX3RvIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBCb3VuZF90b190eXBlIChhZywgcykgLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgQm91bmRfdG8gKF8sIF8sIGFnJywgcycpIHdoZW4gYWcgPSBhZycgJiYgcyA9IHMnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IEJvdW5kIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IEJvdW5kX3RvIF8gfCBCb3VuZF90b190eXBlIF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgRGVmaW5lZCAtPlxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgfCBVbmtub3duIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpXG4gICAgfCBVbmtub3duIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKVxuXG4gIGxldCBtb3JlX3JlZmluZWQgeCB5ID0geCA9IHkgfHwgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeVxuXG4gIGxldCBjb25qIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgPVxuICAgIGlmIG1vcmVfcmVmaW5lZCB4IHkgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB4XG4gICAgZWxzZSBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgeSB4IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgeVxuICAgIGVsc2VcbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJjb25qLCAgQXJndW1lbnRzIGhhdmUgbm8gZ3JlYXRlc3QgbG93ZXIgYm91bmRcIlxuICAgICAgICAoRmFpbHVyZSBcIkFyZ3VtZW50cyBoYXZlIG5vIGdyZWF0ZXN0IGxvd2VyIGJvdW5kXCIpIFVuZGVmaW5lZFxuXG4gIGxldCBjb21wYXRpYmxlIHggeSA9IHggPSB5IHx8IG1vcmVfcmVmaW5lZCB4IHkgfHwgbW9yZV9yZWZpbmVkIHkgeFxuXG4gIGxldCBkaXNqdW5jdGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgaWYgeCA9IHkgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgICAgIHwgVW5rbm93biwgXyB8IF8sIFVua25vd24gfCBVbmRlZmluZWQsIF8gfCBfLCBVbmRlZmluZWQgLT4gVW5rbm93blxuICAgICAgICB8IERlZmluZWQsIF8gfCBfLCBEZWZpbmVkIC0+IERlZmluZWRcbiAgICAgICAgfCBDb3VudGVyIF8sIF9cbiAgICAgICAgfCBfLCBDb3VudGVyIF9cbiAgICAgICAgfCBGcmVlLCBfXG4gICAgICAgIHwgXywgRnJlZVxuICAgICAgICB8IFByZXNlbnQsIF9cbiAgICAgICAgfCBfLCBQcmVzZW50XG4gICAgICAgIHwgSW50ZXJuYWxfc3RhdGVfaXMgXywgX1xuICAgICAgICB8IF8sIEludGVybmFsX3N0YXRlX2lzIF8gLT5cbiAgICAgICAgICBEZWZpbmVkXG4gICAgICAgIHwgQm91bmQsIF8gfCBfLCBCb3VuZCAtPiBCb3VuZFxuICAgICAgICB8IEJvdW5kX3RvX3R5cGUgKGEsIGIpLCBCb3VuZF90byAoXywgXywgYywgZClcbiAgICAgICAgfCBCb3VuZF90byAoXywgXywgYSwgYiksIEJvdW5kX3RvIChfLCBfLCBjLCBkKVxuICAgICAgICB8IEJvdW5kX3RvIChfLCBfLCBhLCBiKSwgQm91bmRfdG9fdHlwZSAoYywgZClcbiAgICAgICAgICB3aGVuIGEgPSBjICYmIGIgPSBkIC0+XG4gICAgICAgICAgQm91bmRfdG9fdHlwZSAoYSwgYilcbiAgICAgICAgfCBfIC0+IEJvdW5kXG4gICAgICApIClcblxuICAoKiogcHJlZGljYXRlIGlkIGFsbG9jYXRpb24gKilcblxuICAoKiogaWYgYSB3aXJlIGNvbmNlcm5zIGFuIGFnZW50LCB3aGljaCBvbmUgaXQgaXMgKilcbiAgbGV0IGFnZW50X2lkX29mX3ByZWRpY2F0ZSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEhlcmUgeCAtPiBTb21lIHhcbiAgICB8IEJvdW5kX3NpdGUgKHgsIF8pIC0+IFNvbWUgeFxuICAgIHwgSW50ZXJuYWxfc3RhdGUgKHgsIF8pIC0+IFNvbWUgeFxuICAgIHwgUG9pbnRlciBfIHwgTXV0ZXggXyB8IExpbmsgXyB8IEZpY3RpdGlvdXMgLT4gTm9uZVxuXG4gIGxldCByZWMgYmluZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIF9wcmVkaWNhdGVcbiAgICAgIHByZWRpY2F0ZV9pZCBhZ19pZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkID1cbiAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgaW5cbiAgICBsZXQgb2xkX3NldCA9XG4gICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCBzaWRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFByZWRpY2F0ZWlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbmV3X3NldCA9IFByZWRpY2F0ZWlkU2V0LmFkZCBwcmVkaWNhdGVfaWQgb2xkX3NldCBpblxuICAgIHRyeVxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHNpZCBuZXdfc2V0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJiaW5kLCBPdXQgb2YgYm91bmQgYWNjZXNzXCJcbiAgICAgICAgKEZhaWx1cmUgXCJiaW5kXCIpIGJsYWNrYm9hcmRcblxuICBhbmQgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGUgPVxuICAgIGxldCBhZ19pZCA9IGFnZW50X2lkX29mX3ByZWRpY2F0ZSBwcmVkaWNhdGUgaW5cbiAgICBsZXQgbWFwID0gYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcCBpblxuICAgIGxldCBtYXBfaW52ID0gYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgaW5cbiAgICBtYXRjaCBQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcHJlZGljYXRlIG1hcCB3aXRoXG4gICAgfCBTb21lIHNpZCAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHNpZFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHNpZCcgPSBibGFja2JvYXJkLnByZV9uY29sdW1uICsgMSBpblxuICAgICAgbGV0IG1hcCcgPSBQcmVkaWNhdGVNYXAuYWRkIHByZWRpY2F0ZSBzaWQnIG1hcCBpblxuICAgICAgbGV0IF8gPSBBLnNldCBtYXBfaW52IHNpZCcgcHJlZGljYXRlIGluXG4gICAgICBsZXQgbWFwX2ludicgPSBtYXBfaW52IGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZCBzaWQnXG4gICAgICAgICAgKEMuY3JlYXRlIHBhcmFtZXRlci5DSS5Qby5LLkguY2FjaGVfc2l6ZSlcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfbmNvbHVtbiA9IHNpZCc7XG4gICAgICAgICAgcHJlX2NvbHVtbl9tYXAgPSBtYXAnO1xuICAgICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IG1hcF9pbnYnO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIG1hdGNoIGFnX2lkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICB8IFNvbWUgYWdfaWQgLT5cbiAgICAgICAgICBiaW5kIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlIHNpZCcgYWdfaWRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHNpZCdcblxuICBsZXQgY3JlYXRlX2FnZW50IF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnZW50X2lkID1cbiAgICBsZXQgb2xkX2xpc3QgPVxuICAgICAgdHJ5IEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSBhZ2VudF9uYW1lXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuICAgIGluXG4gICAgbGV0IG5ld19saXN0ID0gYWdlbnRfaWQgOjogb2xkX2xpc3QgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSBhZ2VudF9uYW1lIG5ld19saXN0IGluXG4gICAgZXJyb3IsIGJsYWNrYm9hcmRcblxuICBsZXQgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnZW50X2lkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ2VudF9pZClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNldCA9XG4gICAgICB0cnlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICBwcmVkaWNhdGVfaWQgKVxuICAgICAgd2l0aCBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcImZyZWVfYWdlbnQsIFRyeSB0byBmcmVlIGFuIHVuZXhpc3RpbmcgYWdlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiZnJlZV9hZ2VudFwiKSBQcmVkaWNhdGVpZFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBQcmVkaWNhdGVpZFNldC5mb2xkXG4gICAgICAgIChmdW4gcHJlZGljYXRlX2lkIG1hcCAtPlxuICAgICAgICAgIGxldCBwcmVkaWNhdGUgPSBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBwcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBQcmVkaWNhdGVNYXAucmVtb3ZlIHByZWRpY2F0ZSBtYXApXG4gICAgICAgIHNldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIHByZV9jb2x1bW5fbWFwID0gbWFwIH1cblxuICBsZXQgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgYWdlbnRfaWQgPVxuICAgIGlmIFByZWRpY2F0ZU1hcC5tZW0gKEhlcmUgYWdlbnRfaWQpIGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXAgdGhlblxuICAgICAgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnZW50X2lkXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgaW5pdCBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBjcmVhdGVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGlmIGluaXQgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnX2lkKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlzdDEgPSAocHJlZGljYXRlX2lkLCBGcmVlKSA6OiBsaXN0MSBpblxuICAgICAgICAgIGxldCBsaXN0MiA9IChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QxLCBsaXN0MlxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgKEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAocHJlZGljYXRlX2lkLCBVbmRlZmluZWQpIDo6IGxpc3QyICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSApXG4gICAgICAgIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgaW50IF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDEsIGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdLCBbXVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGZyZWVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBzZXQgPVxuICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHByZWRpY2F0ZV9pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCwgbGlzdCA9XG4gICAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHByZWRpY2F0ZWlkIChlcnJvciwgYmxhY2tib2FyZCwgbGlzdCkgLT5cbiAgICAgICAgICAgIGVycm9yLCBibGFja2JvYXJkLCAocHJlZGljYXRlaWQsIFVuZGVmaW5lZCkgOjogbGlzdClcbiAgICAgICAgICBzZXRcbiAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QsIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uX3N1YnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpbml0XG4gICAgICBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBjcmVhdGVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGlmIGluaXQgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnX2lkKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlzdDEgPSAocHJlZGljYXRlX2lkLCBGcmVlKSA6OiBsaXN0MSBpblxuICAgICAgICAgIGxldCBsaXN0MiA9IChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QxLCBsaXN0MlxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgKEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAocHJlZGljYXRlX2lkLCBVbmRlZmluZWQpIDo6IGxpc3QyICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSApXG4gICAgICAgIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgaW50IF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDEsIGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdLCBbXVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgKCogICAgICAgICAgICAgICBsZXQgZXJyb3IsYmxhY2tib2FyZCA9IGZyZWVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ19pZCBpbiAqKVxuICAgICAgbGV0IHNldCA9XG4gICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgcHJlZGljYXRlX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCA9XG4gICAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHByZWRpY2F0ZWlkIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QpIC0+XG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIChwcmVkaWNhdGVpZCwgVW5kZWZpbmVkKSA6OiBsaXN0KVxuICAgICAgICAgIHNldFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QsIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGJvb2wgPVxuICAgIGlmIGJvb2wgdGhlblxuICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb25fc3Vic1xuICAgIGVsc2VcbiAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnNcblxuICBsZXQgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdGVzdCA9XG4gICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdIClcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBCb3VuZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgWyBwcmVkaWNhdGVfaWQsIEJvdW5kX3RvX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkgXSApXG5cbiAgbGV0IHR5cGVfb2Zfc3RlcCB4ID1cbiAgICBpZiBUcmFjZS5zdGVwX2lzX29icyB4IHRoZW5cbiAgICAgIE9ic2VydmFibGVcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfaW5pdCB4IHRoZW5cbiAgICAgIEluaXRcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfcnVsZSB4IHRoZW5cbiAgICAgIFJ1bGVcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfc3VicyB4IHRoZW5cbiAgICAgIFN1YnNcbiAgICBlbHNlXG4gICAgICBEdW1teVxuXG4gICgqKiBpbml0aWFsaXNhdGlvbiopXG4gIGxldCBpbml0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHtcbiAgICAgICAgcHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50ID0gQS5tYWtlIDEgQ0kuUG8uSy5lbXB0eV9zaWRlX2VmZmVjdDtcbiAgICAgICAgcHJlX2V2ZW50ID0gQS5tYWtlIDEgKFRyYWNlLmR1bW15X3N0ZXAgXCJcIik7XG4gICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBbXTtcbiAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbiA9IEEubWFrZSAxICgxLCBbXSk7XG4gICAgICAgIHByZV9uc3RlcHMgPSAtMTtcbiAgICAgICAgcHJlX25jb2x1bW4gPSAtMTtcbiAgICAgICAgcHJlX2NvbHVtbl9tYXAgPSBQcmVkaWNhdGVNYXAuZW1wdHk7XG4gICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IEEubWFrZSAxIEZpY3RpdGlvdXM7XG4gICAgICAgIHByZV9raW5kX29mX2V2ZW50ID0gQS5tYWtlIDEgKFNpZGVfZWZmZWN0X29mICgtMSwgW10pKTtcbiAgICAgICAgaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZCA9IEEubWFrZSAxIChDLmNyZWF0ZSBOb25lKTtcbiAgICAgICAgaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSA9IEEubWFrZSAxIFtdO1xuICAgICAgICBwcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgQS5tYWtlIDEgUHJlZGljYXRlaWRTZXQuZW1wdHk7XG4gICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBbXTtcbiAgICAgICAgcHJlX2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA9IE5vbmU7XG4gICAgICAgIHByZV9sZXZlbF9vZl9ldmVudCA9IEEubWFrZSAxIFByaW9yaXR5LmhpZ2hlc3Q7XG4gICAgICB9IClcblxuICBsZXQgZ2V0X2xldmVsX29mX2V2ZW50IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5IGVycm9yLCBsb2dfaW5mbywgQS5nZXQgYmxhY2tib2FyZC5wcmVfbGV2ZWxfb2ZfZXZlbnQgZWlkXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gKEZhaWx1cmUgXCJVTmtub3duIGV2ZW50XCIpXG4gICAgICAgIFByaW9yaXR5LmhpZ2hlc3RcblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZCA9XG4gICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mbyBpblxuICAgIGxldCB0ZXN0ID0gVW5kZWZpbmVkIGluXG4gICAgbGV0IGFjdGlvbiA9IENvdW50ZXIgMCBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgKDIsIFsgbnNpZCwgMSwgdGVzdCwgYWN0aW9uIF0pXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBuc2lkIH1cblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbl9hdF9uc2lkIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkIG5zaWRcbiAgICAgID1cbiAgICBsZXQgdGVzdCA9IFVuZGVmaW5lZCBpblxuICAgIGxldCBhY3Rpb24gPSBDb3VudGVyIDAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gcHJlZGljYXRlX2lkXG4gICAgICAgICgyLCBbIG5zaWQsIDEsIHRlc3QsIGFjdGlvbiBdKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgaW5pdF9zdGVwID1cbiAgICBtYXRjaCBpbml0X3N0ZXAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFNvbWUgYmxhY2tib2FyZC5wcmVfbnN0ZXBzXG4gICAgfCBTb21lIG5zaWQgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uX2F0X25zaWQgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICBuc2lkXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXBcblxuICBsZXQgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkID1cbiAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyBpblxuICAgIGxldCBtYXAgPSBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gaW5cbiAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgcHJlZGljYXRlX2lkIGluXG4gICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IG1hcCBwcmVkaWNhdGVfaWQgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3RhcmdldF9pZCBzIHNpdGUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRGVmaW5lZCB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBQb2ludGVyX3RvX2FnZW50IF9cbiAgICB8IFByZXNlbnQgfCBCb3VuZCB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJJbGxlZ2FsIHN0YXRlIGZvciBhIHNpZGUtZWZmZWN0c1wiXG4gICAgICAgIChGYWlsdXJlIFwiQmxhY2tib2FyZF9nZW5lcmF0aW9uLnNpZGVfZWZmZWN0XCIpIFtdXG4gICAgfCBGcmVlIC0+IGVycm9yLCBsb2dfaW5mbywgWyBwcmVkaWNhdGVfdGFyZ2V0X2lkLCBOb25lLCAoRnJlZSwgVW5rbm93bikgXVxuICAgIHwgQm91bmRfdG8gKHBpZCwgYWcsIGFnZW50X25hbWUsIHNuYW1lKSAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfdGFyZ2V0X2lkLCBOb25lLCAocywgVW5rbm93bik7XG4gICAgICAgICAgKCBwaWQsXG4gICAgICAgICAgICBTb21lICgoYWcsIGFnZW50X25hbWUpLCBzbmFtZSksXG4gICAgICAgICAgICAoIEJvdW5kX3RvXG4gICAgICAgICAgICAgICAgKCBwcmVkaWNhdGVfdGFyZ2V0X2lkLFxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzaXRlLFxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICksXG4gICAgICAgICAgICAgIEZyZWUgKSApO1xuICAgICAgICBdIClcblxuICBsZXQgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBmdW5jdGlvblxuICAgIHwgSW5zdGFudGlhdGlvbi5BTlkgLT4gZXJyb3IsIGxvZ19pbmZvLCBVbmtub3duXG4gICAgfCBJbnN0YW50aWF0aW9uLkZSRUUgLT4gZXJyb3IsIGxvZ19pbmZvLCBGcmVlXG4gICAgfCBJbnN0YW50aWF0aW9uLkJPVU5EIC0+IGVycm9yLCBsb2dfaW5mbywgQm91bmRcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkRfVFlQRSBidCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIEJvdW5kX3RvX3R5cGVcbiAgICAgICAgICAoIENJLlBvLksuYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgYnQsXG4gICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUgYnQgKSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkJPVU5EX3RvIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJJbGxlZ2FsIGJpbmRpbmcgc3RhdGUgaW4gcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGVcIlxuICAgICAgICAoRmFpbHVyZSBcInByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YXRlXCIpIFVua25vd25cblxuICBsZXQgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHNpdGVcbiAgICAgIGJpbmRpbmdfc3RhdGUgPVxuICAgIGxldCBhZ2VudF9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNpdGVfbmFtZSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV90YXJnZXRfaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAoQm91bmRfc2l0ZSAoYWdlbnRfaWQsIHNpdGVfbmFtZSkpXG4gICAgaW5cbiAgICBsZXQgZm9ybWVyX3N0YXRlcyA9XG4gICAgICBBLmdldCBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgcHJlZGljYXRlX3RhcmdldF9pZFxuICAgIGluXG4gICAgbWF0Y2ggcGFyYW1ldGVyLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICAgIGxldCBzID0gQy5sYXN0IGZvcm1lcl9zdGF0ZXMgaW5cbiAgICAgIChtYXRjaCBzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdXG4gICAgICB8IFNvbWUgcyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBidCA9XG4gICAgICAgICAgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbW9yZV9yZWZpbmVkIHMgYnQgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbCA9XG4gICAgICAgICAgICBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkIHNcbiAgICAgICAgICAgICAgc2l0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIGwgXVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdKVxuICAgIHwgU29tZSAoU3RvcnlfanNvbi5TdHJvbmcgfCBTdG9yeV9qc29uLldlYWspIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBidCA9XG4gICAgICAgIHByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICBDLmZvbGRcbiAgICAgICAgICAoZnVuIHMgKGVycm9yLCBsb2dfaW5mbywgbGlzdCkgLT5cbiAgICAgICAgICAgIGlmIG1vcmVfcmVmaW5lZCBzIGJ0IHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsID1cbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkXG4gICAgICAgICAgICAgICAgICBzIHNpdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBsIDo6IGxpc3RcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGxpc3QpXG4gICAgICAgICAgZm9ybWVyX3N0YXRlcyAoZXJyb3IsIGxvZ19pbmZvLCBbXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3RcblxuICB0eXBlIGRhdGFfc3RydWN0dXJlX3N0cm9uZyA9IHtcbiAgICBuZXdfYWdlbnRzOiBBZ2VudElkU2V0LnQ7XG4gICAgb2xkX2FnZW50czogSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lIEFnZW50SWRNYXAudDtcbiAgICBvbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb246IENJLlBvLksuYWdlbnRfaWQgbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgc3VyZV9hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICBzdXJlX2xpbmtzOiBBZ2VudElkMlNldC50O1xuICAgIG90aGVyX2xpbmtzOiBBZ2VudElkMlNldC50O1xuICAgIHNpdGVzX2luX290aGVyX2xpbmtzOiBTaXRlSWRTZXQudDtcbiAgICBzaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3M6IFNpdGVJZFNldC50O1xuICAgIG90aGVyX2xpbmtzX3Rlc3Rfc2l0ZXM6IENJLlBvLksuYWdlbnRfaWQgU2l0ZUlkTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzOiBDSS5Qby5LLmFnZW50X2lkIFNpdGVJZE1hcC50O1xuICAgIHN1cmVfdGVzdHM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3Q7XG4gICAgc3VyZV9hY3Rpb25zOiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3Q7XG4gICAgY3JlYXRlX2FjdGlvbnM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdDtcbiAgICBzdXJlX3NpZGVfZWZmZWN0czpcbiAgICAgIChJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYmluZGluZ19zdGF0ZSlcbiAgICAgIGxpc3Q7XG4gICAgb3RoZXJfYWdlbnRzX3Rlc3RzOlxuICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgb3RoZXJfYWdlbnRzX2FjdGlvbnM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgQWdlbnRJZE1hcC50O1xuICAgIG90aGVyX2xpbmtzX3Rlc3RzOlxuICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBBZ2VudElkMk1hcC50O1xuICAgIG90aGVyX2xpbmtzX2FjdGlvbnM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgQWdlbnRJZDJNYXAudDtcbiAgICBvdGhlcl9saW5rc19wcmlvcml0eTogQWdlbnRJZDJTZXQudDtcbiAgICBvdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzOlxuICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3N0YXRlKVxuICAgICAgbGlzdFxuICAgICAgQWdlbnRJZE1hcC50O1xuICAgIHN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzOiBBZ2VudElkU2V0LnQ7XG4gICAgcnVsZV9hZ2VudF9pZF9tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBydWxlX2FnZW50X2lkX3N1YnM6IHByZWRpY2F0ZV9pZCBBZ2VudElkTWFwLnQ7XG4gICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBsaW5rc19tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWQyTWFwLnQ7XG4gICAgcmVtb3ZlZF9hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzOiBTaXRlSWRTZXQudDtcbiAgfVxuXG4gIGxldCBpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyA9XG4gICAge1xuICAgICAgbmV3X2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBvbGRfYWdlbnRzID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbiA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBzdXJlX2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBzdXJlX2xpbmtzID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlcyA9IFNpdGVJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyA9IFNpdGVJZE1hcC5lbXB0eTtcbiAgICAgIHNpdGVzX2luX290aGVyX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgICAgc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgICAgc3VyZV90ZXN0cyA9IFtdO1xuICAgICAgc3VyZV9hY3Rpb25zID0gW107XG4gICAgICBjcmVhdGVfYWN0aW9ucyA9IFtdO1xuICAgICAgc3VyZV9zaWRlX2VmZmVjdHMgPSBbXTtcbiAgICAgIG90aGVyX2FnZW50c190ZXN0cyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBvdGhlcl9hZ2VudHNfYWN0aW9ucyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc19wcmlvcml0eSA9IEFnZW50SWQyU2V0LmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfdGVzdHMgPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX2FjdGlvbnMgPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3MgPSBBZ2VudElkU2V0LmVtcHR5O1xuICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBydWxlX2FnZW50X2lkX3N1YnMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXggPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgcmVtb3ZlZF9hZ2VudHMgPSBBZ2VudElkU2V0LmVtcHR5O1xuICAgICAgcmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcyA9IFNpdGVJZFNldC5lbXB0eTtcbiAgICB9XG5cbiAgbGV0IHByaW50X2RhdGFfc3RydWN0dXJlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgX2RhdGEgPVxuICAgICgqIGxldCBzdGRlcnIgPSBwYXJhbWV0ZXIuQ0kuUG8uSy5ILm91dF9jaGFubmVsX2VyciBpblxuICAgICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBoYW5kbGVyLkNJLlBvLksuSC5lbnYgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk5ldyBhZ2VudHM6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZFNldC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWkgQC5cIikgZGF0YS5uZXdfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk9sZCBhZ2VudHM6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgaWQ6JWk6IHR5cGU6JWkgQC5cIikgZGF0YS5vbGRfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk9sZCBhZ2VudHMgaW1wbGllZCBpbiBsaW5rczogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkU2V0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaSBALlwiKSBkYXRhLnN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlRlc3RlZF9saW5rc19tYXA6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgU2l0ZUlkTWFwLml0ZXIgKGZ1biAoYSxiKSAtPiBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWkuJWkgLT4gJWkgQC5cIiBhIGIgKSBkYXRhLm90aGVyX2xpbmtzX3Rlc3Rfc2l0ZXMgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk1vZGlmaWVkX2xpbmtzX21hcDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBTaXRlSWRNYXAuaXRlciAoZnVuIChhLGIpIC0+IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaS4laSAtPiAlaSBALlwiIGEgYiApIGRhdGEub3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlBvdGVudGlhbCBzdWJzdGl0dXRpb246IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyXG4gICAgICAgICAoZnVuIGlkIGwgLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiBpZDolaUAuXCIgaWRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTGlzdC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgICAlaUAuXCIpIGwpXG4gICAgICAgICBkYXRhLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIGFnZW50czpALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIEFnZW50SWRTZXQuaXRlciAoRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpQC5cIikgZGF0YS5zdXJlX2FnZW50c1xuICAgICAgIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIHRlc3RzOkBbPHYgMT4lYUBdQC5cIlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgfnNpZ3MpKVxuICAgICAgIGRhdGEuc3VyZV90ZXN0cyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiVGVzdHMgdG8gYmUgc3Vic3RpdHV0ZWQ6QFs8diAxPkAsJWElYUBdQC5cIlxuICAgICAgIChQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIEFnZW50SWRNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKGlkLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmXCIlaUAsJWFcIiBpZFxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgfnNpZ3MpKVxuICAgICAgIGxcbiAgICAgICApKVxuICAgICAgIGRhdGEub3RoZXJfYWdlbnRzX3Rlc3RzXG4gICAgICAgKFBwLnNldCBBZ2VudElkMk1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoKGlkMSxpZDIpLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmIFwiKCVpLCVpKUAsJWFcIiBpZDEgaWQyXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgbCkpXG4gICAgICAgZGF0YS5vdGhlcl9saW5rc190ZXN0cyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiU3VyZSBhY3Rpb25zOkBbPHYgMT4lYUBdQC5cIlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgZGF0YS5zdXJlX2FjdGlvbnMgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIkFjdGlvbnMgdG8gYmUgc3Vic3RpdHV0ZWQ6QFs8diAxPkAsJWElYUBdQC5cIlxuICAgICAgIChQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIEFnZW50SWRNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKGlkLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmXCIlaUAsJWFcIiBpZFxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgbFxuICAgICAgICkpXG4gICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfYWN0aW9uc1xuICAgICAgIChQcC5zZXQgQWdlbnRJZDJNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKChpZDEsaWQyKSxsKSAtPlxuICAgICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAgZiBcIiglaSwlaSlALCVhXCIgaWQxIGlkMlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgbCkpXG4gICAgICAgZGF0YS5vdGhlcl9saW5rc19hY3Rpb25zIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIHNpZGVfZWZmZWN0cyBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIExpc3QuaXRlclxuICAgICAgICAgKENJLlBvLksucHJpbnRfc2lkZSBzdGRlcnIgaGFuZGxlciBcIiBcIilcbiAgICAgICAgIGRhdGEuc3VyZV9zaWRlX2VmZmVjdHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiU2lkZSBlZmZlY3QgdG8gYmUgc3Vic3RpdHV0ZWQ6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyXG4gICAgICAgICAoZnVuIGlkIGwgLT5cbiAgICAgICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWlALlwiIGlkIGluXG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgIChDSS5Qby5LLnByaW50X3NpZGUgc3RkZXJyIGhhbmRsZXIgXCIgIFwiKVxuICAgICAgICAgICAgICAgbFxuICAgICAgICAgICBpbiAoKSlcbiAgICAgICAgIGRhdGEub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0c1xuICAgICAgIGluKilcbiAgICBlcnJvclxuXG4gIGxldCBhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIHNpdGUgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHNpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2xpbmtzO1xuICAgIH1cblxuICBsZXQgYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIHNpdGUgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9IGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSBpblxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rcyA9XG4gICAgICAgIFNpdGVJZFNldC5hZGQgc2l0ZSBkYXRhX3N0cnVjdHVyZS5zaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3M7XG4gICAgfVxuXG4gIGxldCBtZW1fc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAgU2l0ZUlkU2V0Lm1lbSBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rc1xuXG4gIGxldCBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHsgZGF0YV9zdHJ1Y3R1cmUgd2l0aCBzdXJlX3Rlc3RzID0gdGVzdCA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX3Rlc3RzIH1cblxuICBsZXQgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnX2lkIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c190ZXN0c1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX3Rlc3RzID1cbiAgICAgICAgQWdlbnRJZE1hcC5hZGQgYWdfaWQgKHRlc3QgOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfdGVzdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic190ZXN0X2xpbmsgdGVzdCBsaW5rIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgYSwgYiA9IGZzdCBsaW5rLCBzbmQgbGluayBpblxuICAgIGxldCBsaW5rID1cbiAgICAgIGlmIGEgPCBiIHRoZW5cbiAgICAgICAgbGlua1xuICAgICAgZWxzZVxuICAgICAgICBiLCBhXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUsIG9sZCA9XG4gICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IGRhdGFfc3RydWN0dXJlLCB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmFkZCBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10gKVxuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfbGlua3NfdGVzdHMgPVxuICAgICAgICBBZ2VudElkMk1hcC5hZGQgbGluayAodGVzdCA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzO1xuICAgIH1cblxuICBsZXQgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZSA9XG4gICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfYWN0aW9ucyA9IGFjdGlvbiA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX2FjdGlvbnMgfVxuXG4gIGxldCBhZGRfY3JlYXRlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIGNyZWF0ZV9hY3Rpb25zID0gYWN0aW9uIDo6IGRhdGFfc3RydWN0dXJlLmNyZWF0ZV9hY3Rpb25zO1xuICAgIH1cblxuICBsZXQgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IG9sZCA9XG4gICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBhZ19pZCBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9uc1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX2FjdGlvbnMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAoYWN0aW9uIDo6IG9sZCkgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gbGluayBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IGEsIGIgPSBmc3QgbGluaywgc25kIGxpbmsgaW5cbiAgICBsZXQgbGluayA9XG4gICAgICBpZiBhIDwgYiB0aGVuXG4gICAgICAgIGxpbmtcbiAgICAgIGVsc2VcbiAgICAgICAgYiwgYVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlLCBvbGQgPVxuICAgICAgbWF0Y2ggQWdlbnRJZDJNYXAuZmluZF9vcHRpb24gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IGRhdGFfc3RydWN0dXJlLCB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmFkZCBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10gKVxuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfbGlua3NfYWN0aW9ucyA9XG4gICAgICAgIEFnZW50SWQyTWFwLmFkZCBsaW5rIChhY3Rpb24gOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zO1xuICAgIH1cblxuICBsZXQgYWRkX3N1cmVfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHN1cmVfc2lkZV9lZmZlY3RzID0gc2lkZV9lZmZlY3QgOjogZGF0YV9zdHJ1Y3R1cmUuc3VyZV9zaWRlX2VmZmVjdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBhZ19pZCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IHNpdGUgPSBmc3Qgc2lkZV9lZmZlY3QgaW5cbiAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBhZ2VudF9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnZW50X2lkXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAoc2lkZV9lZmZlY3QgOjogb2xkKVxuICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3RlcF9zdHJvbmcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkIHN0ZXBfaWQgPVxuICAgIGxldCBpbml0ID0gVHJhY2Uuc3RlcF9pc19pbml0IHN0ZXAgaW5cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5wcmVfZXZlbnQgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID0gaW5pdF9kYXRhX3N0cnVjdHVyZV9zdHJvbmcgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSBhY3Rpb24gLT5cbiAgICAgICAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBfKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIG5ld19hZ2VudHMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRTZXQuYWRkXG4gICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm5ld19hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZzFfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZzJfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlMV9pZCA9IGFnMV9pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IHNpdGUyX2lkID0gYWcyX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzID1cbiAgICAgICAgICAgICAgICBTaXRlSWRNYXAuYWRkIHNpdGUxX2lkIGFnMl9pZFxuICAgICAgICAgICAgICAgICAgKFNpdGVJZE1hcC5hZGQgc2l0ZTJfaWQgYWcxX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWdlbnQgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICByZW1vdmVkX2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50KVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uX2xpc3RcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIG9sZF9hZ2VudHMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkXG4gICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcpXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnMV9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnMl9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHNpdGUxX2lkID0gYWcxX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTJfaWQgPSBhZzJfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICAgICAgICAgIGlmIEFnZW50SWRTZXQubWVtIGFnMV9pZCBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX2FnZW50cyB0aGVuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICAgICAgcmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcyA9XG4gICAgICAgICAgICAgICAgICAgIFNpdGVJZFNldC5hZGQgc2l0ZTFfaWRcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0gYWcyX2lkIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlMl9pZFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlcyA9XG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmFkZCBzaXRlMV9pZCBhZzJfaWRcbiAgICAgICAgICAgICAgICAgIChTaXRlSWRNYXAuYWRkIHNpdGUyX2lkIGFnMV9pZFxuICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgdGVzdGVkX3NpdGVzID1cbiAgICAgIFNpdGVJZE1hcC5mb2xkXG4gICAgICAgIChmdW4gYSBfIC0+IFNpdGVJZFNldC5hZGQgYSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlcyBTaXRlSWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBtb2Rfc2l0ZXMgPVxuICAgICAgU2l0ZUlkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBhIF8gLT4gU2l0ZUlkU2V0LmFkZCBhKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMgU2l0ZUlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgcHJpb3JpdHlfc2l0ZXMgPSBTaXRlSWRTZXQuaW50ZXIgdGVzdGVkX3NpdGVzIG1vZF9zaXRlcyBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID1cbiAgICAgICAgICBBZ2VudElkTWFwLm1hcFxuICAgICAgICAgICAgKEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSlcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHM7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfYWdlbnRzID0gZGF0YV9zdHJ1Y3R1cmUubmV3X2FnZW50cyB9XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIHN1cmVfYWdlbnRzID1cbiAgICAgICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgICAgIChmdW4gaWQgbCBzdXJlX2FnZW50cyAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIF8gXSAtPiBBZ2VudElkU2V0LmFkZCBpZCBzdXJlX2FnZW50c1xuICAgICAgICAgICAgICB8IF8gLT4gc3VyZV9hZ2VudHMpXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzO1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHN1cmVfYWdlbnQgPVxuICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgIGZ1biBfIC0+XG4gICAgICB0cnVlXG4gICAgICBlbHNlXG4gICAgICAgIGZ1biB4IC0+XG4gICAgICBBZ2VudElkU2V0Lm1lbSB4IGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbiA9XG4gICAgICAgICAgQWdlbnRJZFNldC5mb2xkIEFnZW50SWRNYXAucmVtb3ZlIGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb247XG4gICAgICB9XG4gICAgaW5cblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHN1cmVfYWdlbnQgYWdfaWQxXG4gICAgICAgICAgICAgICYmIChub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMSwgc2l0ZV9pZDEpIHByaW9yaXR5X3NpdGVzKSlcbiAgICAgICAgICAgICAgJiYgc3VyZV9hZ2VudCBhZ19pZDJcbiAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDIsIHNpdGVfaWQyKSBwcmlvcml0eV9zaXRlcylcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbWl4X3NpdGUxID0gYWdfaWQxLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICAgIGxldCBtaXhfc2l0ZTIgPSBhZ19pZDIsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgICBhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIG1peF9zaXRlMVxuICAgICAgICAgICAgICAgICAgKGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MgbWl4X3NpdGUyIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBTaXRlSWRTZXQubWVtIG1peF9zaXRlMSBwcmlvcml0eV9zaXRlc1xuICAgICAgICAgICAgICAgICAgfHwgU2l0ZUlkU2V0Lm1lbSBtaXhfc2l0ZTIgcHJpb3JpdHlfc2l0ZXNcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCBhZ19pZDEsIGFnX2lkMiA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGFnX2lkMSA8IGFnX2lkMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgYWdfaWQxLCBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGFnX2lkMiwgYWdfaWQxXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5ID1cbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkMlNldC5hZGQgKGFnX2lkMSwgYWdfaWQyKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfcHJpb3JpdHk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IHRlc3RfbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSBfIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzaXRlMSwgc2l0ZTIpXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudDEgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IGFnZW50MiA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkMSAmJiBzdXJlX2FnZW50IGFnX2lkMiB0aGVuXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rc1xuICAgICAgICAgICAgICAgIChhZ19pZDEsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEpXG4gICAgICAgICAgICAgICAgKGFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rc1xuICAgICAgICAgICAgICAgICAgIChhZ19pZDIsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIpXG4gICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSB0ZXN0IC0+XG4gICAgICAgICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50IGluXG4gICAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3QgdGVzdCBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNpdGVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc2l0ZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHN1cmVfYWdlbnQgYWdfaWRcbiAgICAgICAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgICAgICAgKFNpdGVJZFNldC5tZW1cbiAgICAgICAgICAgICAgICAgICAgICAoYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5zaXRlc19pbl9vdGhlcl9saW5rcylcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5maW5kX29wdGlvbiBzaXRlX2lkMVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGFnX2lkMiAtPlxuICAgICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZCwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lMSA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX25hbWUxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnZW50MiA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBsZXQgYWdlbnRfbmFtZTIgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBsZXQgc2l0ZV9uYW1lMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCB3ZWFrMSA9XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZTEsIChhZ2VudF9uYW1lMiwgc2l0ZV9uYW1lMikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHdlYWsyID1cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlMiwgKGFnZW50X25hbWUxLCBzaXRlX25hbWUxKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICggc3VyZV9hZ2VudCBhZ19pZDFcbiAgICAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDEsIHNpdGVfbmFtZTEpIHByaW9yaXR5X3NpdGVzKSxcbiAgICAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZDJcbiAgICAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDIsIHNpdGVfbmFtZTIpIHByaW9yaXR5X3NpdGVzKSApXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHdlYWsxXG4gICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3Qgd2VhazIgYWdfaWQyXG4gICAgICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZDEsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHdlYWsxIGFnX2lkMVxuICAgICAgICAgICAgICAgIChhZGRfc3VyZV90ZXN0IHdlYWsyXG4gICAgICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZDEsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB3ZWFrMSBhZ19pZDFcbiAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdCB3ZWFrMiBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IHRlc3RfbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSBfIC0+IGFkZF9jcmVhdGVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWdlbnQgLT5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBzaXRlIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgaWYgbWVtX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIHNpdGVfaWQxIGRhdGFfc3RydWN0dXJlIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5maW5kX29wdGlvbiBzaXRlX2lkMVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlc1xuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBhZ19pZDIgLT5cbiAgICAgICAgICAgICAgICBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gKGFnX2lkLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhZGRfc3Vic19hY3Rpb24gYWN0aW9uIGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMilcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQxICYmIHN1cmVfYWdlbnQgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IGFjdGlvbl9saXN0KVxuICAgIGluXG5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSBzaWRlX2VmZmVjdCAtPlxuICAgICAgICAgIGxldCBzaXRlLCBfID0gc2lkZV9lZmZlY3QgaW5cbiAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgIGFkZF9zdXJlX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX3N1YnNfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmUpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIHN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzID1cbiAgICAgICAgICAobGV0IGYgeCBzZXQgPVxuICAgICAgICAgICAgIEFnZW50SWQyTWFwLmZvbGRcbiAgICAgICAgICAgICAgIChmdW4gKGExLCBhMikgXyBzZXQgLT4gQWdlbnRJZFNldC5hZGQgYTEgKEFnZW50SWRTZXQuYWRkIGEyIHNldCkpXG4gICAgICAgICAgICAgICB4IHNldFxuICAgICAgICAgICBpblxuICAgICAgICAgICBmIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzXG4gICAgICAgICAgICAgKGYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfYWN0aW9ucyBBZ2VudElkU2V0LmVtcHR5KSk7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgaW5pdF9zdGVwID0gTm9uZSBpblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICBydWxlX2FnZW50X2lkX3N1YnMsXG4gICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIF8sXG4gICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgQWdlbnRJZE1hcC5mb2xkXG4gICAgICAgIChmdW4geCBsXG4gICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICBydWxlX2FnZW50X2lkX3N1YnMsXG4gICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgLT5cbiAgICAgICAgICAoKiB0aGUgZm9sbG93aW5nIG11dGV4IGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBmYWN0IHRoYXQgdGhlIGFnZW50IHggaW4gdGhlIGxocyBvZiB0aGUgcnVsZSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBleGFjdGVseSBvbmUgYWdlbnQgaW4gdGhlIG1peHR1cmUgKilcbiAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBNdXRleCAoTG9ja19hZ2VudCAoc3RlcF9pZCwgeCkpIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJ1bGVfYWdlbnRfaWRfbXV0ZXggPVxuICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgcnVsZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbGlzdCBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGlmIEFnZW50SWRTZXQubWVtIHggZGF0YV9zdHJ1Y3R1cmUuc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3NcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBQb2ludGVyIChzdGVwX2lkLCB4KSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBydWxlX2FnZW50X2lkX3N1YnMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHggcHJlZGljYXRlX2lkIHJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBydWxlX2FnZW50X2lkX3N1YnMsIGluaXRfc3RlcFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHx8IGRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIklEIG9mIGFnZW50IGluIHRoZSBydWxlOiAlaSwgSUQgb2YgdGhlIGFnZW50IGluIHRoZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmU6ICVpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHggaWRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHNldCcgPSBBZ2VudElkU2V0LmFkZCBpZCBzZXQgaW5cbiAgICAgICAgICAgICAgICBpZiBzZXQgPT0gc2V0JyB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBBZ2VudElkTWFwLm1lbSBpZCBtaXh0dXJlX2FnZW50X2lkX211dGV4IHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAoKiBUaGUgbXV0ZXggaXMgYWxyZWFkeSBkZWNsYXJlZCwgbm90aGluZyB0byBkbyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTXV0ZXggYWxyZWFkeSBleGlzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAoKiBUaGUgbXV0ZXggaGFzIHRvIGJlIGFsbG9jYXRlZCAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ3JlYXRlIE11dGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgTXV0ZXggKExvY2tfcmVjdGFuZ3VsYXIgKHN0ZXBfaWQsIGlkKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgaWQgcHJlZGljYXRlX2lkIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXhcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgKCogVGhlIGFnZW50IGluIHRoZSBtaXh0dXJlIGlzIHNlZW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBubyBuZWVkIGZvciBhIG11dGV4IGZvciB0aGUgbW9tZW50ICopXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHx8IGRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgYWdlbnQgaXMgc2VlbiBmb3IgdGhlIGZpcnN0IHRpbWUsIG5vIG5lZWQgZm9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRleCB5ZXRcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgICAgICBzZXQnLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICBsXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBBZ2VudElkTWFwLmVtcHR5LFxuICAgICAgICAgIEFnZW50SWRNYXAuZW1wdHksXG4gICAgICAgICAgQWdlbnRJZE1hcC5lbXB0eSxcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgQWdlbnRJZFNldC5lbXB0eSxcbiAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgIGluXG4gICAgbGV0IGxpbmtzX211dGV4ID0gQWdlbnRJZDJNYXAuZW1wdHkgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgQWdlbnRJZDJTZXQuZm9sZFxuICAgICAgICAoZnVuIHhcbiAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAtPlxuICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IE11dGV4IChMb2NrX2xpbmtzIChzdGVwX2lkLCB4KSkgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgbGlua3NfbXV0ZXggaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBsaW5rc19tdXRleCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIGxpbmtzX211dGV4O1xuICAgICAgICBydWxlX2FnZW50X2lkX211dGV4O1xuICAgICAgICBydWxlX2FnZW50X2lkX3N1YnM7XG4gICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXg7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICB7IGJsYWNrYm9hcmQgd2l0aCBwcmVfZmljdGl0aW91c19saXN0ID0gZmljdGl0aW91c19saXN0IH1cbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCBfID0gcHJpbnRfZGF0YV9zdHJ1Y3R1cmUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZGF0YV9zdHJ1Y3R1cmUgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZmluZF9kZWZhdWx0IChVbmtub3duLCBVbmtub3duKSBwaWQgbWFwXG4gICAgICBpblxuICAgICAgbGV0IHRlc3QgPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgdGVzdCB0ZXN0JyB0aGVuXG4gICAgICAgICAgdGVzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGVzdCdcbiAgICAgIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgaWYgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGFjdGlvbiBhY3Rpb24nIHRoZW5cbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgaW5cbiAgICAgIG1hcFxuICAgIGluXG4gICAgbGV0IGZhZGQgcGlkIHAgbWFwID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgVW5kZWZpbmVkIHwgRGVmaW5lZCB8IFByZXNlbnQgfCBCb3VuZFxuICAgICAgfCBCb3VuZF90b190eXBlIF8gfCBVbmtub3duIC0+XG4gICAgICAgICgpXG4gICAgICB8IEZyZWUgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBCb3VuZF90byBfIC0+XG4gICAgICAgIGxldCBvbGQgPSBBLmdldCBtYXAgcGlkIGluXG4gICAgICAgIEEuc2V0IG1hcCBwaWQgKEMuYWRkIHAgb2xkKVxuICAgIGluXG5cbiAgICAoKiBkZWFsIHdpdGggY3JlYXRlZCBhZ2VudHMgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzdGVwX2lkID1cbiAgICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzdGVwX2lkXG4gICAgICB8IFNvbWUgbnNpZCAtPlxuICAgICAgICBsZXQgbnNpZCA9IG5zaWQgaW5cbiAgICAgICAgbGV0IG5zaWRfdm9pZCA9IG5zaWQgKyAxIGluXG4gICAgICAgIGxldCBuc2lkX25leHQgPSBuc2lkICsgMSBpblxuICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPSBbXSBpblxuICAgICAgICBsZXQgYWN0aW9uX2xpc3QgPSBkYXRhX3N0cnVjdHVyZS5jcmVhdGVfYWN0aW9ucyBpblxuICAgICAgICBsZXQgdGVzdF9saXN0ID0gW10gaW5cbiAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IFtdIGluXG5cbiAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIF9maWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgX2luaXRfc3RlcCApID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgKHNpdGUsIGJpbmRpbmdfc3RhdGUpIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHBvdGVudGlhbF90YXJnZXQgPVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgc2l0ZSBiaW5kaW5nX3N0YXRlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IFsgbCBdIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IHQgLT4gdCA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IChDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIF9zdGVwX2lkID1cbiAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgIHNpZGVfZWZmZWN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gdHJ1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgYnVpbGRfbWFwIGFjdGlvbl9saXN0IGFjdGlvbl9tYXAsXG4gICAgICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT5cbiAgICAgICAgICAgICAgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgICAgICBtZXJnZWRfbWFwIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICAgICAgaW5cbiAgICAgICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG5zaWRfdm9pZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgICAgIChDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlX3N0ZXBzX2J5X2NvbHVtbiA9XG4gICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlLCBsaXN0ID0gQS5nZXQgbWFwIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIGZhZGQgaWQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWFwKVxuICAgICAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9ic2VydmFibGVfbGlzdCA9XG4gICAgICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICA6OiBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBuc2lkX25leHRcbiAgICAgICAgKVxuICAgIGluXG5cbiAgICAoKioqIGRlYWwgd2l0aCBzdWJzdGl0dXRhYmxlIGFnZW50cyAqKiopXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCA9XG4gICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBydWxlX2FnX2lkIGwgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCkgLT5cbiAgICAgICAgICBsZXQgdGVzdF9saXN0LCBhY3Rpb25fbGlzdCwgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgKCBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3Rlc3RzLFxuICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX2FjdGlvbnMsXG4gICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzIClcbiAgICAgICAgICBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgbmxpc3QpIG1peHR1cmVfYWdfaWQgLT5cbiAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBUcmFjZS5zdWJzX3N0ZXAgcnVsZV9hZ19pZCBtaXh0dXJlX2FnX2lkIGluXG4gICAgICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ19pZClcbiAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYWN0aW9uX2xpc3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5zdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2VmZmVjdCBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IFtdIGluXG4gICAgICAgICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBzaXRlIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdF9zdGVwXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBpZF9ydWxlX2FnZW50X211dGV4ID1cbiAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfbXV0ZXhcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHggLT4gZXJyb3IsIGxvZ19pbmZvLCB4XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgICAgICAgIChGYWlsdXJlIFwiVW5rbm93biBhZ2VudCBpZFwiKSAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkX3J1bGVfYWdlbnRfbXV0ZXggKENvdW50ZXIgMCkgdGVzdF9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gdHJ1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgYnVpbGRfbWFwIGFjdGlvbl9saXN0IGFjdGlvbl9tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGFjdGlvbl9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWRfcnVsZV9hZ2VudF9tdXRleCAoQ291bnRlciAxKSBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0ZXN0X21hcCwgYWN0aW9uX21hcCA9XG4gICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5ydWxlX2FnZW50X2lkX3N1YnNcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIG1faWQgLT5cbiAgICAgICAgICAgICAgICAgICggUHJlZGljYXRlaWRNYXAuYWRkIG1faWQgKENvdW50ZXIgMCkgdGVzdF9tYXAsXG4gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBtX2lkIChQb2ludGVyX3RvX2FnZW50IG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX21hcCApXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IHRlc3RfbWFwLCBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIFRoZSBmb2xsb3dpbmcgYmxvY2sgc2hvdWxkIGJlIGxvZ2dlZCBhbmQgY29ycmVjdGVkICopXG4gICAgICAgICAgICAgICgqIGxldCB0ZXN0X21hcCxhY3Rpb25fbWFwID1cbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUubWl4dHVyZV9hZ2VudF9pZF9tdXRleCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlciAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICBtX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0ZXN0X21hcCxhY3Rpb25fbWFwXG4gICAgICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAsIG5saXN0ID1cbiAgICAgICAgICAgICAgICAoKiBlbnVtZXJhdGlvbiBvZiBwb3RlbnRpYWwgYmluZGluZyBzdGF0ZSwgYWNjb3JkaW5nIHRvIGEgc3Vic3RpdHV0aW9uICopXG4gICAgICAgICAgICAgICAgKCogSWYgdGhlIGV2ZW50IGlzIHNlbGVjdGVkLCBjaGVjayB0aGF0IHRoZSB3aXJlIGVuZCBpbiB0aGUgc3RhdGUgMCopXG4gICAgICAgICAgICAgICAgKCogVW5kZWYtPkNvdW50ZXIgMCA6IG9wZW5pbmcgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiBDb3VudGVyIDAgLT4gQ291bnRlciAxIDogcG90ZW50aWFsIGJpbmRpbmcgdHlwZSAqKVxuICAgICAgICAgICAgICAgICgqID0+IENvdW50ZXIgMSAtPiBDb3VudGVyIDAgOiB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gaXMgYXBwbGllZCAqKVxuICAgICAgICAgICAgICAgICgqIENvdW50ZXIgMCAtPiBVbmRlZiA6IGNsb3NpbmcgZXZlbnQsIGNoZWNrIHRoYXQgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIChvcGVuIGFuZCBjbG9zZWQpLCB0aGVuIGV4YWN0ZWx5IG9uZSBiaW5kaW5nIHN0YXRlIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gKilcbiAgICAgICAgICAgICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQgJiB0aGUgYWNjb3JkaW5nIHN1YnN0aXR1dGlvbiB0YWtlbiwgdGhlbiBtdXR1YWwgZXhjbHVzaW9uIGFtb25nIHRoZSBwb3RlbnRpYWwgYmluZGluZyBzdGF0ZSopXG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hcCwgbmxpc3QpIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICAoIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgQ291bnRlciAwKSBtYXAsXG4gICAgICAgICAgICAgICAgICAgICAgcGlkIDo6IG5saXN0ICkpXG4gICAgICAgICAgICAgICAgICAobWVyZ2VkX21hcCwgbmxpc3QpIGZpY3RpdGlvdXNfbG9jYWxfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAubWFwaVxuICAgICAgICAgICAgICAgICAgKGZ1biBwaWQgKHRlc3QsIGFjdGlvbikgLT5cbiAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBVbmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHBpZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFnX2lkID0gbWl4dHVyZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2l0ZUlkU2V0Lm1lbSAocnVsZV9hZ19pZCwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rc1xuICAgICAgICAgICAgICAgICAgICAgIHwgSGVyZSBfIHwgUG9pbnRlciBfIHwgTXV0ZXggXyB8IExpbmsgXyB8IEludGVybmFsX3N0YXRlIF9cbiAgICAgICAgICAgICAgICAgICAgICB8IEZpY3RpdGlvdXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBVbmtub3duXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBhY3Rpb24pXG4gICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0XG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9raW5kX29mX2V2ZW50IG5zaWQgKHR5cGVfb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgICAgICAgICAgICBwcmVfZmljdGl0aW91c19saXN0ID0gZmljdGl0aW91c19saXN0O1xuICAgICAgICAgICAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdFxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdClcbiAgICAgICAgICAgIGwpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIFtdKVxuICAgIGluXG5cbiAgICAoKiBkZWFsIHdpdGggc3Vic3RpdHV0YWJsZSBhZ2VudCBpbiBsaW5rcyopXG4gICAgbGV0IGYgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZCBzZXQgPVxuICAgICAgQWdlbnRJZDJTZXQuZm9sZFxuICAgICAgICAoZnVuIGxpbmsgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgLT5cbiAgICAgICAgICBsZXQgbGlua19tdXRleCA9XG4gICAgICAgICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLmxpbmtzX211dGV4IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBydWxlX2FnX2lkMSwgcnVsZV9hZ19pZDIgPSBsaW5rIGluXG4gICAgICAgICAgbGV0IGxfYWdfMSA9XG4gICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbIHJ1bGVfYWdfaWQxIF0gcnVsZV9hZ19pZDFcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbF9hZ18yID1cbiAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFsgcnVsZV9hZ19pZDIgXSBydWxlX2FnX2lkMlxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgQWdlbnRJZDJNYXAuZmluZF9kZWZhdWx0IFtdIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICBBZ2VudElkMk1hcC5maW5kX2RlZmF1bHQgW10gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBtaXh0dXJlX2FnXzEgLT5cbiAgICAgICAgICAgICAgbGV0IHN1YnMgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgICAgICAoKiBpZiBydWxlX2FnX2lkMSA9IG1peHR1cmVfYWdfMVxuICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICBzdWJzXG4gICAgICAgICAgICAgICAgICAgZWxzZSopXG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgcnVsZV9hZ19pZDEgbWl4dHVyZV9hZ18xIHN1YnNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIG1peHR1cmVfYWdfMiAtPlxuICAgICAgICAgICAgICAgICAgaWYgcnVsZV9hZ19pZDEgPSBydWxlX2FnX2lkMiA9IChtaXh0dXJlX2FnXzEgPSBtaXh0dXJlX2FnXzIpXG4gICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLmR1bW15X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgICAgIChcIkxJTksgXCIgXiBzdHJpbmdfb2ZfaW50IG1peHR1cmVfYWdfMSBeIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBydWxlX2FnX2lkMSBeIFwiLFwiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBtaXh0dXJlX2FnXzIgXiBcIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgcnVsZV9hZ19pZDIgXiBcIilcIilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgICAgICAgICAgICgqIGlmIHJ1bGVfYWdfaWQyID0gbWl4dHVyZV9hZ18yXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlKilcbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBydWxlX2FnX2lkMiBtaXh0dXJlX2FnXzIgc3Vic1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdF9saXN0LCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgc3VicyA9IEFnZW50SWRNYXAuZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LCBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGYgeCA9IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBzdWJzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdCApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbWFwKSB0ZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBidWlsZF9tYXAgdGVzdF9saXN0IG1hcClcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFByZWRpY2F0ZWlkTWFwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdCApID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwaWQsIHgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBwaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ19pZCA9IG1peHR1cmVfYWdfMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkMSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYWdfaWQgPSBtaXh0dXJlX2FnXzJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2l0ZUlkU2V0Lm1lbSAocnVsZV9hZ19pZDIsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgVW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBwaWQsIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBwaWQsIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZW1wdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgYWN0aW9uKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAoVW5rbm93biwgYWN0aW9uKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbGlua19tdXRleCAoQ291bnRlciAwLCBDb3VudGVyIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIFBvaW50ZXIgLT4gKilcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWQxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ18xLCBVbmtub3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWQyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ18yLCBVbmtub3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgaWYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9raW5kX29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVfb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgbF9hZ18yKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgIGxfYWdfMSlcbiAgICAgICAgc2V0XG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIG90aGVyX2xpbmtzID1cbiAgICAgICAgICBBZ2VudElkMlNldC5kaWZmIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eTtcbiAgICAgIH1cbiAgICBpblxuXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBmIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfcHJpb3JpdHlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgZiBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCByaWdpZCBlbGVtZW50cyAqKVxuICAgIGxldCBzaWRlX2VmZmVjdCA9IGRhdGFfc3RydWN0dXJlLnN1cmVfc2lkZV9lZmZlY3RzIGluXG4gICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGF0YV9zdHJ1Y3R1cmUuY3JlYXRlX2FjdGlvbnMgQCBkYXRhX3N0cnVjdHVyZS5zdXJlX2FjdGlvbnNcbiAgICAgIHwgU29tZSBfIC0+IGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IGRhdGFfc3RydWN0dXJlLnN1cmVfdGVzdHMgaW5cbiAgICBsZXQgZmljdGl0aW91c19saXN0ID0gYmxhY2tib2FyZC5wcmVfZmljdGl0aW91c19saXN0IGluXG5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgIF9pbml0X3N0ZXAgKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzaXRlXG4gICAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgKExvY2tfc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIF9zdGVwX2lkID1cbiAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICB7IGJsYWNrYm9hcmQgd2l0aCBwcmVfbnN0ZXBzID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSB9XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPSBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3QgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLnByZV9uc3RlcHMgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKSAocHJlZGljYXRlX2lkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICBzaWRlX2VmZmVjdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBidWlsZF9tYXAgdGVzdF9saXN0IG1hcClcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgIHRlc3RfbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCkgYWN0aW9uIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT4gYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQsIGNoZWNrIHRoYXQgdGhlIHdpcmUgZW5kIGluIHRoZSBzdGF0ZSAwKilcbiAgICAgICgqIFVuZGVmLT5Db3VudGVyIDAgOiBvcGVuaW5nIGV2ZW50ICopXG4gICAgICAoKiBDb3VudGVyIDAgLT4gQ291bnRlciAxIDogcG90ZW50aWFsIGJpbmRpbmcgdHlwZSAqKVxuICAgICAgKCogQ291bnRlciAxIC0+IENvdW50ZXIgMCA6IHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiBpcyBhcHBsaWVkICopXG4gICAgICAoKiA9PiBDb3VudGVyIDAgLT4gVW5kZWYgOiBjbG9zaW5nIGV2ZW50LCBjaGVjayB0aGF0IGlmIHRoZSBldmVudCBoYXMgYmVlbiBzZWxlY3RlZCAob3BlbiBhbmQgY2xvc2VkKSwgdGhlbiBleGFjdGVseSBvbmUgYmluZGluZyBzdGF0ZSBoYXMgYmVlbiBzZWxlY3RlZCxcbiAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gKilcbiAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCAmIHRoZSBhY2NvcmRpbmcgc3Vic3RpdHV0aW9uIHRha2VuLCB0aGVuIG11dHVhbCBleGNsdXNpb24gYW1vbmcgdGhlIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlKilcbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIHBpZCAtPiBhZGRfc3RhdGUgcGlkIChDb3VudGVyIDAsIFVuZGVmaW5lZCkgbWFwKVxuICAgICAgICBtZXJnZWRfbWFwIG5saXN0XG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IHByZV9ldmVudCBuc2lkIHN0ZXAgaW5cbiAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIEEuc2V0IG1hcCBpZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXApXG4gICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgc3RlcCB0aGVuXG4gICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RlcF9pZCArIDEpXG4gICAgKVxuXG4gIGxldCBhZGRfc3RlcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgc3RlcF9pZCA9XG4gICAgbGV0IGluaXQgPSBUcmFjZS5zdGVwX2lzX2luaXQgc3RlcCBpblxuICAgIGxldCBpbml0X3N0ZXAgPSBOb25lIGluXG4gICAgbGV0IHByZV9ldmVudCA9IGJsYWNrYm9hcmQucHJlX2V2ZW50IGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IFRyYWNlLnRlc3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgc2lkZV9lZmZlY3QgPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgPSBbXSBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZmluZF9kZWZhdWx0IChVbmtub3duLCBVbmtub3duKSBwaWQgbWFwXG4gICAgICBpblxuICAgICAgbGV0IHRlc3QgPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgdGVzdCB0ZXN0JyB0aGVuXG4gICAgICAgICAgdGVzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGVzdCdcbiAgICAgIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgaWYgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGFjdGlvbiBhY3Rpb24nIHRoZW5cbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgaW5cbiAgICAgIG1hcFxuICAgIGluXG4gICAgbGV0IGZhZGQgcGlkIHAgbWFwID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgVW5kZWZpbmVkIHwgRGVmaW5lZCB8IFByZXNlbnQgfCBCb3VuZFxuICAgICAgfCBCb3VuZF90b190eXBlIF8gfCBVbmtub3duIC0+XG4gICAgICAgICgpXG4gICAgICB8IEZyZWUgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBCb3VuZF90byBfIC0+XG4gICAgICAgIGxldCBvbGQgPSBBLmdldCBtYXAgcGlkIGluXG4gICAgICAgIEEuc2V0IG1hcCBwaWQgKEMuYWRkIHAgb2xkKVxuICAgIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICBfaW5pdF9zdGVwICkgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgKHNpdGUsIGJpbmRpbmdfc3RhdGUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc2l0ZVxuICAgICAgICAgICAgICBiaW5kaW5nX3N0YXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBwb3RlbnRpYWxfdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IFsgbCBdIC0+XG4gICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBsaXN0IHQgLT4gdCA6OiBsaXN0KVxuICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IHJ1bGVfYWdfaWQgPVxuICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IChDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPVxuICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgKCBzdGVwX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGZhbHNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT4gYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IHByZV9ldmVudCBuc2lkIHN0ZXAgaW5cbiAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIEEuc2V0IG1hcCBpZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXApXG4gICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgc3RlcCB0aGVuXG4gICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RlcF9pZCArIDEpXG4gICAgKVxuXG4gIGxldCBmaW5hbGl6ZSBoZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGwgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIHwgXyAtPlxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgKGZ1biAoeCwgaW5mbykgLT4gbnNpZCA6OiB4LCBpbmZvKVxuICAgICAgICAgIChMaXN0LnJldiBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3QpXG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX25zdGVwcyA9IG5zaWQ7XG4gICAgICAgICAgcHJlX29ic2VydmFibGVfbGlzdCA9IG9ic2VydmFibGVfbGlzdDtcbiAgICAgICAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlID0gU29tZSBuc2lkO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCkgcHJlZGljYXRlX2lkIC0+XG4gICAgICAgICAgICBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgVW5kZWZpbmVkIFVua25vd24gcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKSBsXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2V0ID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNldCAoc3RlcHMsIF8pIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIHNldCkgZWlkIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBBLmdldCBibGFja2JvYXJkLnByZV9ldmVudCBlaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBhZ2VudHNfaW5fb2JzID1cbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfaW5fb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgQ0kuUG8uSy5BZ2VudElkU2V0LnVuaW9uIHNldCBhZ2VudHNfaW5fb2JzKVxuICAgICAgICAgICAgICBzZXQgc3RlcHMpXG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgQ0kuUG8uSy5BZ2VudElkU2V0LmVtcHR5KVxuICAgICAgICAgIG9ic2VydmFibGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBzZXQgeCA9IENJLlBvLksuQWdlbnRJZFNldC5tZW0geCBzZXQgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgQS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBzdGVwIC0+XG4gICAgICAgICAgICBsZXQgXywgXywgbGV2ZWwgPVxuICAgICAgICAgICAgICBDSS5Qby5LLmxldmVsX29mX2V2ZW50IGhldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIHN0ZXAgc2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfbGV2ZWxfb2ZfZXZlbnQgaSBsZXZlbClcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9ldmVudFxuICAgICAgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBwcmludF9wcmVibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgYWRkX3N0ZXBfdXBfdG9faXNvID0gYWRkX3N0ZXBfc3Ryb25nXG5cbiAgKCoqIGludGVyZmFjZSAqKVxuXG4gIGxldCBuX3ByZWRpY2F0ZXMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQucHJlX25jb2x1bW4gKyAxXG5cbiAgbGV0IGV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfaWQgPVxuICAgIHRyeSBlcnJvciwgbG9nX2luZm8sIHNuZCAoQS5nZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHByZWRpY2F0ZSBpZFwiXG4gICAgICAgIChGYWlsdXJlIFwiZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGVcIikgW11cblxuICBsZXQgbl9ldmVudHNfcGVyX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcHJlZGljYXRlX2lkID1cbiAgICB0cnkgZXJyb3IsIGxvZ19pbmZvLCBmc3QgKEEuZ2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWQpXG4gICAgd2l0aCBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiVW5rbm93biBwcmVkaWNhdGUgaWRcIlxuICAgICAgICAoRmFpbHVyZSBcIm5fZXZlbnRzX3Blcl9wcmVkaWNhdGVcIikgMFxuXG4gIGxldCBuX2V2ZW50cyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMVxuXG4gIGxldCBtYW5kYXRvcnlfZXZlbnRzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcblxuICBsZXQgZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfZmljdGl0aW91c19vYnNlcnZhYmxlXG5cbiAgbGV0IGdldF9zaWRlX2VmZmVjdCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbmVuZFxuIiwiKCoqXG4gICogYmxhY2tib2FyZC5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDExLTA5LTA1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDo0ODozNCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBCbGFja2JvYXJkID0gc2lnXG4gIG1vZHVsZSBQQiA6IEJsYWNrYm9hcmRfZ2VuZXJhdGlvbi5QcmVCbGFja2JvYXJkXG5cbiAgdHlwZSBldmVudF9jYXNlX2FkZHJlc3NcbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4ICopXG5cbiAgdHlwZSBjYXNlX2luZm9cbiAgdHlwZSBjYXNlX3ZhbHVlXG4gIHR5cGUgY2FzZV9hZGRyZXNzXG4gIHR5cGUgcG9pbnRlclxuXG4gICgqKiBibGFja2JvYXJkKilcblxuICB0eXBlIGJsYWNrYm9hcmQgKCpibGFja2JvYXJkLCBvbmNlIGZpbmFsaXplZCopXG4gIHR5cGUgYXNzaWduX3Jlc3VsdFxuXG4gIHZhbCBpc19mYWlsZWQgOiBhc3NpZ25fcmVzdWx0IC0+IGJvb2xcbiAgdmFsIGlzX3N1Y2NlZWRlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgaXNfaWdub3JlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgc3VjY2VzcyA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIGlnbm9yZSA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIGZhaWwgOiBhc3NpZ25fcmVzdWx0XG4gIHZhbCBwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IFBCLnByZWRpY2F0ZV9pZFxuICB2YWwgYnVpbGRfcG9pbnRlciA6IFBCLnN0ZXBfc2hvcnRfaWQgLT4gcG9pbnRlclxuICB2YWwgaXNfYmVmb3JlX2JsYWNrYm9hcmQgOiBwb2ludGVyIC0+IGJvb2xcbiAgdmFsIGdldF9ldmVudCA6IGJsYWNrYm9hcmQgLT4gUEIuc3RlcF9pZCAtPiBUcmFjZS5zdGVwXG4gIHZhbCBnZXRfbl9laWQgOiBibGFja2JvYXJkIC0+IGludFxuICB2YWwgZ2V0X25wcmVkaWNhdGVfaWQgOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWRfYnlfbGV2ZWwgOlxuICAgIGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IFByaW9yaXR5LmxldmVsIC0+IGludFxuXG4gIHZhbCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQgOiBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBpbnRcbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIDogYmxhY2tib2FyZCAtPiBpbnRcblxuICB2YWwgZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCA6XG4gICAgYmxhY2tib2FyZCAtPiBQQi5wcmVkaWNhdGVfaWQgLT4gUEIuc3RlcF9zaG9ydF9pZCBvcHRpb25cblxuICB2YWwgZ2V0X2xhc3RfbGlua2VkX2V2ZW50IDpcbiAgICBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBQQi5zdGVwX3Nob3J0X2lkIG9wdGlvblxuXG4gIHZhbCBnZXRfc3RhY2tfZGVwdGggOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBpc19zZWxlY3RlZF9ldmVudCA6XG4gICAgKFBCLnN0ZXBfaWQsIGJsYWNrYm9hcmQsIGJvb2wgb3B0aW9uKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIDpcbiAgICAoY2FzZV92YWx1ZSwgUEIucHJlZGljYXRlX3ZhbHVlKSBQQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZm9sbG93X3BvaW50ZXJfdXAgOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGV2ZW50X2Nhc2VfYWRkcmVzcykgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBmb2xsb3dfcG9pbnRlcl9kb3duIDpcbiAgICAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCBldmVudF9jYXNlX2FkZHJlc3MpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgaXNfYm91bmRhcnkgOiAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCBib29sKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyA6XG4gICAgUEIucHJlZGljYXRlX2lkIC0+IHBvaW50ZXIgLT4gZXZlbnRfY2FzZV9hZGRyZXNzXG5cbiAgdmFsIGV4aXN0X2Nhc2UgOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGJvb2wgb3B0aW9uKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGdldF9zdGF0aWMgOlxuICAgICggYmxhY2tib2FyZCxcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyxcbiAgICAgIFBCLnN0ZXBfc2hvcnRfaWQgKiBQQi5zdGVwX2lkICogUEIucHJlZGljYXRlX3ZhbHVlICogUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgKVxuICAgIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgc2V0IDpcbiAgICAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCBnZXQgOiAoY2FzZV9hZGRyZXNzLCBibGFja2JvYXJkLCBjYXNlX3ZhbHVlKSBQQi5DSS5Qby5LLkguYmluYXJ5XG4gIHZhbCBkZWMgOiAoY2FzZV9hZGRyZXNzLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIG92ZXJ3cml0ZSA6XG4gICAgKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSwgYmxhY2tib2FyZCwgYmxhY2tib2FyZCkgUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgcmVmaW5lIDpcbiAgICAoIGNhc2VfYWRkcmVzcyxcbiAgICAgIGNhc2VfdmFsdWUsXG4gICAgICBibGFja2JvYXJkLFxuICAgICAgYmxhY2tib2FyZCAqIGFzc2lnbl9yZXN1bHQgKVxuICAgIFBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGJyYW5jaCA6IChibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgdmFsIHJlc2V0X2xhc3RfYnJhbmNoaW5nIDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgcmVzZXRfaW5pdCA6IChibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgaW1wb3J0IDpcbiAgICA/aGV1cmlzdGljOlByaW9yaXR5LnByaW9yaXRpZXMgLT5cbiAgICAoVHJhY2Uuc3RlcCBsaXN0LCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqIGluaXRpYWxpc2F0aW9uKilcblxuICB0eXBlIHJlc3VsdCA9IChUcmFjZS5zdGVwICogUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdCkgbGlzdFxuICAoKiogb3V0cHV0IHJlc3VsdCopXG5cbiAgdmFsIGlzX21heGltYWxfc29sdXRpb24gOiAoYmxhY2tib2FyZCwgYm9vbCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKiBpdGVyYXRpb24qKVxuXG4gIHZhbCB0cmFuc2xhdGVfYmxhY2tib2FyZCA6IChibGFja2JvYXJkLCByZXN1bHQpIFBCLkNJLlBvLksuSC51bmFyeVxuICAoKiogZXhwb3J0aW5nIHJlc3VsdCopXG5cbiAgdmFsIHByaW50X2JsYWNrYm9hcmQgOiAoYmxhY2tib2FyZCwgdW5pdCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKnByZXR0eSBwcmludGluZyopXG5cbiAgdmFsIGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyA6XG4gICAgKHN0cmluZywgaW50LCBpbnQsIGJsYWNrYm9hcmQsIHVuaXQpIFBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5cbiAgdmFsIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgdW5pdCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBwcmludF9zdGFjayA6IChibGFja2JvYXJkLCB1bml0KSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgdmFsIGV4aXN0IDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgYm9vbGVhbiA6IGJvb2wgb3B0aW9uIC0+IGNhc2VfdmFsdWVcbiAgdmFsIHBvaW50ZXJfdG9fcHJldmlvdXMgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBwb2ludGVyX3RvX25leHQgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBwb2ludGVyIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfdmFsdWVcbiAgdmFsIHZhbHVlX2FmdGVyIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBjYXNlX2xpc3Rfb2ZfZWlkIDpcbiAgICAoYmxhY2tib2FyZCwgUEIuc3RlcF9pZCwgZXZlbnRfY2FzZV9hZGRyZXNzIGxpc3QpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgc3RhdGUgOiBQQi5wcmVkaWNhdGVfdmFsdWUgLT4gY2FzZV92YWx1ZVxuICB2YWwgaXNfZXhpc3RfZXZlbnQgOiBQQi5zdGVwX2lkIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgbl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCA6IFByaW9yaXR5LmxldmVsIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgbl91bnJlc29sdmVkX2V2ZW50cyA6IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCA6XG4gICAgZXZlbnRfY2FzZV9hZGRyZXNzIC0+IFByaW9yaXR5LmxldmVsIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcblxuICB2YWwgZm9yY2VkX2V2ZW50cyA6XG4gICAgYmxhY2tib2FyZCAtPiAoUEIuc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3RcblxuICB2YWwgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgOiBibGFja2JvYXJkIC0+IFBCLnN0ZXBfaWQgLT4gUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdFxuXG4gIHZhbCBjdXQgOlxuICAgICggYmxhY2tib2FyZCxcbiAgICAgIFBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIGJsYWNrYm9hcmQgKiBQQi5zdGVwX2lkIGxpc3QgKVxuICAgIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgdGljayA6XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIGJvb2wgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICgqIHRvIGRvOiBtb3ZlIHRvIHRoZSBtb2R1bGUgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cyopXG5cbiAgdmFsIGxldmVsX29mX2V2ZW50IDpcbiAgICAoYmxhY2tib2FyZCwgUEIuc3RlcF9pZCwgUHJpb3JpdHkubGV2ZWwpIFBCLkNJLlBvLksuSC5iaW5hcnlcbmVuZFxuXG5tb2R1bGUgQmxhY2tib2FyZCA6IEJsYWNrYm9hcmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBCID0gQmxhY2tib2FyZF9nZW5lcmF0aW9uLlByZWJsYWNrYm9hcmRcbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4KilcblxuICB0eXBlIGFzc2lnbl9yZXN1bHQgPSBGYWlsIHwgU3VjY2VzcyB8IElnbm9yZVxuICB0eXBlIHBvaW50ZXIgPSBQQi5zdGVwX3Nob3J0X2lkXG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgbGV0IGVycm9yLCBhID1cbiAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBhXG5cbiAgbGV0IHN1Y2Nlc3MgPSBTdWNjZXNzXG4gIGxldCBpZ25vcmUgPSBJZ25vcmVcbiAgbGV0IGZhaWwgPSBGYWlsXG5cbiAgbGV0IGlzX2lnbm9yZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBJZ25vcmUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19mYWlsZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBGYWlsIC0+IHRydWVcbiAgICB8IFN1Y2Nlc3MgfCBJZ25vcmUgLT4gZmFsc2VcblxuICBsZXQgaXNfc3VjY2VlZGVkIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgU3VjY2VzcyAtPiB0cnVlXG4gICAgfCBGYWlsIHwgSWdub3JlIC0+IGZhbHNlXG5cbiAgbGV0IG51bGxfcG9pbnRlciA9IFBCLmR1bW15X3N0ZXBfc2hvcnRfaWRcbiAgbGV0IGlzX251bGxfcG9pbnRlciB4ID0geCA9IG51bGxfcG9pbnRlclxuICBsZXQgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCA9IFBCLnplcm9fc3RlcF9zaG9ydF9pZFxuICBsZXQgaXNfbnVsbF9wb2ludGVyX3N0ZXBfaWQgeCA9IHggPSBQQi5kdW1teV9zdGVwX2lkXG4gIGxldCBpc19iZWZvcmVfYmxhY2tib2FyZCB4ID0geCA9IHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmRcbiAgbGV0IGJ1aWxkX3BvaW50ZXIgaSA9IGlcblxuICB0eXBlIGV2ZW50X2Nhc2VfYWRkcmVzcyA9IHtcbiAgICBjb2x1bW5fcHJlZGljYXRlX2lkOiBQQi5wcmVkaWNhdGVfaWQ7XG4gICAgcm93X3Nob3J0X2V2ZW50X2lkOiBwb2ludGVyO1xuICB9XG5cbiAgbGV0IHByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgeCA9IHguY29sdW1uX3ByZWRpY2F0ZV9pZFxuXG4gIGxldCBpc19ib3VuZGFyeSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIF9ibGFja2JvYXJkIGV2ZW50X2FkZHJlc3MgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgaXNfYmVmb3JlX2JsYWNrYm9hcmQgZXZlbnRfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWRcblxuICBsZXQgYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIHBpZCBzZWlkID1cbiAgICB7IGNvbHVtbl9wcmVkaWNhdGVfaWQgPSBwaWQ7IHJvd19zaG9ydF9ldmVudF9pZCA9IHNlaWQgfVxuXG4gIHR5cGUgY2FzZV9hZGRyZXNzID1cbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIG9mIGludCAqIFByaW9yaXR5LmxldmVsXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBvZiBpbnRcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBvZiBldmVudF9jYXNlX2FkZHJlc3NcbiAgICB8IFZhbHVlX2FmdGVyIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgVmFsdWVfYmVmb3JlIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgUG9pbnRlcl90b19wcmV2aW91cyBvZiBldmVudF9jYXNlX2FkZHJlc3NcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgb2YgUHJpb3JpdHkubGV2ZWxcbiAgICB8IEV4aXN0IG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgS2VlcF9ldmVudCBvZiBQQi5zdGVwX2lkXG5cbiAgbGV0IGlzX2V4aXN0X2V2ZW50IGkgPSBLZWVwX2V2ZW50IGlcblxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaSA9XG4gICAgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaS5jb2x1bW5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIGkgaiA9XG4gICAgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGkuY29sdW1uX3ByZWRpY2F0ZV9pZCwgailcblxuICBsZXQgcG9pbnRlcl90b19uZXh0IGUgPSBQb2ludGVyX3RvX25leHQgZVxuICBsZXQgdmFsdWVfYWZ0ZXIgZSA9IFZhbHVlX2FmdGVyIGVcbiAgbGV0IHZhbHVlX2JlZm9yZSBlID0gVmFsdWVfYmVmb3JlIGVcbiAgbGV0IHBvaW50ZXJfdG9fcHJldmlvdXMgZSA9IFBvaW50ZXJfdG9fcHJldmlvdXMgZVxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50cyA9IE5fdW5yZXNvbHZlZF9ldmVudHNcbiAgbGV0IG5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaSA9IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaVxuICBsZXQgZXhpc3QgZSA9IEV4aXN0IGVcblxuICB0eXBlIGNhc2VfdmFsdWUgPVxuICAgIHwgU3RhdGUgb2YgUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBDb3VudGVyIG9mIGludFxuICAgIHwgUG9pbnRlciBvZiBwb2ludGVyXG4gICAgfCBCb29sZWFuIG9mIGJvb2wgb3B0aW9uXG5cbiAgbGV0IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgU3RhdGUgeCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCJTdGF0ZSEgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgeFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IENvdW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiQ291bnRlciAlaVwiIGlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgICgpXG4gICAgfCBQb2ludGVyIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBcIlBvaW50ZXIgJWlcIlxuICAgICAgICAgIChQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBpKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IEJvb2xlYW4gYiAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiQm9vbGVhbiAlc1wiXG4gICAgICAgICAgKG1hdGNoIGIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgICAgIHwgU29tZSB0cnVlIC0+IFwidHJ1ZVwiXG4gICAgICAgICAgfCBfIC0+IFwiZmFsc2VcIilcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgICgpXG5cbiAgbGV0IHN0cmluZ19vZl9wb2ludGVyIHNlaWQgPVxuICAgIFwiZXZlbnQgc2VpZCBcIiBeIHN0cmluZ19vZl9pbnQgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQpXG5cbiAgbGV0IHByaW50X3BvaW50ZXIgbG9nIHNlaWQgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiAoc3RyaW5nX29mX3BvaW50ZXIgc2VpZClcbiAgbGV0IHN0YXRlIHByZWRpY2F0ZV92YWx1ZSA9IFN0YXRlIHByZWRpY2F0ZV92YWx1ZVxuICBsZXQgcG9pbnRlciBwID0gUG9pbnRlciBwLnJvd19zaG9ydF9ldmVudF9pZFxuICBsZXQgYm9vbGVhbiBiID0gQm9vbGVhbiBiXG5cbiAgbGV0IGNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfYWRkcmVzcyA9XG4gICAgVmFsdWVfYWZ0ZXIgZXZlbnRfYWRkcmVzc1xuXG4gIGxldCBwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV92YWx1ZVxuICAgICAgPVxuICAgIG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgIHwgU3RhdGUgeCAtPiBlcnJvciwgbG9nX2luZm8sIHhcbiAgICB8IENvdW50ZXIgXyB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyAtPlxuICAgICAgbGV0IF8gPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwid3Jvbmcga2luZCBvZiBjYXNlX3ZhbHVlIGluIHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZVwiKSBQQi51bmtub3duXG5cbiAgdHlwZSBhc3NpZ25tZW50ID0gY2FzZV9hZGRyZXNzICogY2FzZV92YWx1ZVxuXG4gIGxldCBib29sX3N0cmljdGx5X21vcmVfcmVmaW5lZCB4IHkgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgU29tZSBfLCBOb25lIC0+IHRydWVcbiAgICB8IF8sIF8gLT4gZmFsc2VcblxuICBsZXQgZyBwIHAyIHBvcyBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5ID1cbiAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IFN0YXRlIHgsIFN0YXRlIHkgLT4gZXJyb3IsIGxvZ19pbmZvLCBwIHggeVxuICAgIHwgQm9vbGVhbiB4LCBCb29sZWFuIHkgLT4gZXJyb3IsIGxvZ19pbmZvLCBwMiB4IHlcbiAgICB8IFN0YXRlIF8sIF8gfCBCb29sZWFuIF8sIF8gfCBDb3VudGVyIF8sIF8gfCBQb2ludGVyIF8sIF8gLT5cbiAgICAgIGxldCBmaWxlLCBsaW5lLCBfLCBfID0gcG9zIGluXG4gICAgICBsZXQgc3RyaW5nID0gZmlsZSBeIFwiLCBsaW5lOiBcIiBeIHN0cmluZ19vZl9pbnQgbGluZSBpblxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zXG4gICAgICAgIH5tZXNzYWdlOlwiQ291bnRlcnMgYW5kL29yIFBvaW50ZXJzIHNob3VsZCBub3QgYmUgY29tcGFyZWRcIlxuICAgICAgICAoRmFpbHVyZSAoc3RyaW5nIF4gXCIgQ29tcGFyaXNvbiBiZXR3ZWVuIHBvaW50ZXJzIGFuZCBjb3VudGVyc1wiKSlcbiAgICAgICAgZmFsc2VcblxuICBsZXQgc3RyaWN0bHlfbW9yZV9yZWZpbmVkID1cbiAgICBnIFBCLnN0cmljdGx5X21vcmVfcmVmaW5lZCBib29sX3N0cmljdGx5X21vcmVfcmVmaW5lZCBfX1BPU19fXG5cbiAgdHlwZSBjYXNlX2luZm9fc3RhdGljID0ge1xuICAgIHJvd19zaG9ydF9pZDogUEIuc3RlcF9zaG9ydF9pZDtcbiAgICBldmVudF9pZDogUEIuc3RlcF9pZDtcbiAgICB0ZXN0OiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gICAgYWN0aW9uOiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gIH1cblxuICB0eXBlIGNhc2VfaW5mb19keW5hbWljID0ge1xuICAgIHBvaW50ZXJfcHJldmlvdXM6IHBvaW50ZXI7XG4gICAgcG9pbnRlcl9uZXh0OiBwb2ludGVyO1xuICAgIHN0YXRlX2FmdGVyOiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gICAgc2VsZWN0ZWQ6IGJvb2wgb3B0aW9uO1xuICB9XG5cbiAgdHlwZSBjYXNlX2luZm8gPSB7IHN0YXRpYzogY2FzZV9pbmZvX3N0YXRpYzsgZHluYW1pYzogY2FzZV9pbmZvX2R5bmFtaWMgfVxuXG4gIGxldCBkdW1teV9jYXNlX2luZm9fc3RhdGljID1cbiAgICB7XG4gICAgICByb3dfc2hvcnRfaWQgPSBQQi5kdW1teV9zdGVwX3Nob3J0X2lkO1xuICAgICAgZXZlbnRfaWQgPSBQQi5kdW1teV9zdGVwX2lkO1xuICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICBhY3Rpb24gPSBQQi51bmtub3duO1xuICAgIH1cblxuICBsZXQgZHVtbXlfY2FzZV9pbmZvX2R5bmFtaWMgPVxuICAgIHtcbiAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBudWxsX3BvaW50ZXI7XG4gICAgICBwb2ludGVyX25leHQgPSBudWxsX3BvaW50ZXI7XG4gICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICBzZWxlY3RlZCA9IE5vbmU7XG4gICAgfVxuXG4gIGxldCBjb3JyZWN0X3BvaW50ZXIgc2VpZCBzaXplID1cbiAgICBsZXQgaW50X3NlaWQgPSBQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBzZWlkIGluXG4gICAgaWYgaW50X3NlaWQgPCAwIHRoZW5cbiAgICAgIHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmRcbiAgICBlbHNlIGlmIGludF9zZWlkID49IHNpemUgdGhlblxuICAgICAgUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgc2l6ZVxuICAgIGVsc2VcbiAgICAgIHNlaWRcblxuICBsZXQgaW5pdF9pbmZvX2R5bmFtaWMgc2VpZCBzaXplID1cbiAgICB7XG4gICAgICBwb2ludGVyX3ByZXZpb3VzID0gY29ycmVjdF9wb2ludGVyIChQQi5kZWNfc3RlcF9zaG9ydF9pZCBzZWlkKSBzaXplO1xuICAgICAgcG9pbnRlcl9uZXh0ID0gY29ycmVjdF9wb2ludGVyIChQQi5pbmNfc3RlcF9zaG9ydF9pZCBzZWlkKSBzaXplO1xuICAgICAgc3RhdGVfYWZ0ZXIgPSBQQi51bmtub3duO1xuICAgICAgc2VsZWN0ZWQgPSBOb25lO1xuICAgIH1cblxuICBsZXQgaW5pdF9pbmZvX3N0YXRpYyBfcF9pZCBzZWlkIChlaWQsIF8sIHRlc3QsIGFjdGlvbikgPVxuICAgIHsgcm93X3Nob3J0X2lkID0gc2VpZDsgZXZlbnRfaWQgPSBlaWQ7IHRlc3Q7IGFjdGlvbiB9XG5cbiAgbGV0IGdldF9laWRfb2ZfdHJpcGxlICh4LCBfLCBfLCBfKSA9IHhcblxuICBsZXQgZHVtbXlfY2FzZV9pbmZvID1cbiAgICB7IHN0YXRpYyA9IGR1bW15X2Nhc2VfaW5mb19zdGF0aWM7IGR5bmFtaWMgPSBkdW1teV9jYXNlX2luZm9fZHluYW1pYyB9XG5cbiAgbGV0IGluaXRfaW5mbyBwX2lkIHNlaWQgc2l6ZSB0cmlwbGUgPVxuICAgIHtcbiAgICAgIHN0YXRpYyA9IGluaXRfaW5mb19zdGF0aWMgcF9pZCBzZWlkIHRyaXBsZTtcbiAgICAgIGR5bmFtaWMgPSBpbml0X2luZm9fZHluYW1pYyBzZWlkIHNpemU7XG4gICAgfVxuXG4gIHR5cGUgc3RhY2sgPSBhc3NpZ25tZW50IGxpc3RcbiAgKCoqIGJsYWNrYm9hcmQgKilcblxuICB0eXBlIGJsYWNrYm9hcmQgPSB7XG4gICAgZXZlbnQ6IFRyYWNlLnN0ZXAgUEIuQS50O1xuICAgIHByZV9jb2x1bW5fbWFwX2ludjogUEIucHJlZGljYXRlX2luZm8gUEIuQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIHdpcmUgaWQgdG8gaXRzIHdpcmUgbGFiZWwgKilcbiAgICBmb3JjZWRfZXZlbnRzOiAoUEIuc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3Q7XG4gICAgbl9wcmVkaWNhdGVfaWQ6IGludDtcbiAgICBuX2VpZDogaW50O1xuICAgIG5fc2VpZDogaW50IFBCLkEudDtcbiAgICBjdXJyZW50X3N0YWNrOiBzdGFjaztcbiAgICBzdGFjazogc3RhY2sgbGlzdDtcbiAgICBibGFja2JvYXJkOiBjYXNlX2luZm8gUEIuQS50IFBCLkEudDtcbiAgICBzZWxlY3RlZF9ldmVudHM6IGJvb2wgb3B0aW9uIFBCLkEudDtcbiAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkOiBpbnQgUEIuQS50O1xuICAgIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWw6IGludCBQQi5BLnQgUHJpb3JpdHkuTGV2ZWxNYXAudDtcbiAgICB1c2VkX3ByZWRpY2F0ZV9pZDogYm9vbCBQQi5BLnQ7XG4gICAgbl91bnJlc29sdmVkX2V2ZW50czogaW50O1xuICAgIG5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWw6IGludCBQcmlvcml0eS5MZXZlbE1hcC50O1xuICAgIGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZDogUEIuc3RlcF9zaG9ydF9pZCBQQi5BLnQ7XG4gICAgZXZlbnRfY2FzZV9saXN0OiBldmVudF9jYXNlX2FkZHJlc3MgbGlzdCBQQi5BLnQ7XG4gICAgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQ6IFBCLkNJLlBvLksuc2lkZV9lZmZlY3QgUEIuQS50O1xuICAgIGZpY3RpdGlvdXNfb2JzZXJ2YWJsZTogUEIuc3RlcF9pZCBvcHRpb247XG4gICAgbGV2ZWxfb2ZfZXZlbnQ6IFByaW9yaXR5LmxldmVsIFBCLkEudDtcbiAgfVxuXG4gIGxldCB0aWNrIHByb2ZpbGluZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy50aWNrIHByb2ZpbGluZ19pbmZvXG5cbiAgbGV0IGxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5sZXZlbF9vZl9ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSApXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIGV2ZW50IGlkXCJcbiAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIGV2ZW50IGlkXCIpIFByaW9yaXR5LmhpZ2hlc3RcblxuICBsZXQgZ2V0X2V2ZW50IGJsYWNrYm9hcmQgayA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgKFBCLmludF9vZl9zdGVwX2lkIGspXG4gIGxldCBnZXRfbl9laWQgYmxhY2tib2FyZCA9IGJsYWNrYm9hcmQubl9laWRcbiAgbGV0IGdldF9zdGFja19kZXB0aCBibGFja2JvYXJkID0gTGlzdC5sZW5ndGggYmxhY2tib2FyZC5zdGFja1xuICBsZXQgZm9yY2VkX2V2ZW50cyBibGFja2JvYXJkID0gYmxhY2tib2FyZC5mb3JjZWRfZXZlbnRzXG5cbiAgbGV0IHNpZGVfZWZmZWN0X29mX2V2ZW50IGJsYWNrYm9hcmQgaSA9XG4gICAgUEIuQS5nZXQgYmxhY2tib2FyZC5zaWRlX2VmZmVjdF9vZl9ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgaSlcblxuICBsZXQgY2FzZV9saXN0X29mX2VpZCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlaWQgPVxuICAgIHRyeVxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnRfY2FzZV9saXN0IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJEZXJlZmVyZW5jaW5nIE51bGwgcG9pbnRlclwiXG4gICAgICAgIChGYWlsdXJlIFwiRGVyZWZlcmVuY2luZyBudWxsIHBvaW50ZXJcIikgW11cblxuICBsZXQgZ2V0X2Nhc2UgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkID1cbiAgICB0cnlcbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBQQi5BLmdldFxuICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzLmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGNhc2VfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWQpIClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJEZXJlZmVyZW5jaW5nIE51bGwgcG9pbnRlclwiXG4gICAgICAgIChGYWlsdXJlIFwiRGVyZWZlcmVuY2luZyBudWxsIHBvaW50ZXJcIikgZHVtbXlfY2FzZV9pbmZvXG5cbiAgbGV0IGdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IHN0YXRpYyA9IGNhc2Uuc3RhdGljIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgKHN0YXRpYy5yb3dfc2hvcnRfaWQsIHN0YXRpYy5ldmVudF9pZCwgc3RhdGljLnRlc3QsIHN0YXRpYy5hY3Rpb24pIClcblxuICBsZXQgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBlaWQsIF8sIF8pID1cbiAgICAgIGdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiRXZlbnQ6ICVpLCBQcmVkaWNhdGU6ICVpQC5cIiAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAocHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyBjYXNlKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIChpLCBqKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBcIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fcHJlZCAlaSAlc0AuXCIgaVxuICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgailcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIFwibl91bnJlc29sdmVkX2V2ZW50c19pbl9wcmVkICVpIEAuXCIgaVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBlIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJQb2ludGVyXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFZhbHVlX2FmdGVyIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlZhbHVlX2FmdGVyICBcIlxuICAgICAgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFZhbHVlX2JlZm9yZSBlIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJWYWx1ZV9iZWZvcmUgXCJcbiAgICAgIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlBvaW50ZXJfYmVmb3JlIFwiXG4gICAgICBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJVbnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCAlc1wiXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiVW5yZXNvbHZlZF9ldmVudHNcIlxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IEV4aXN0IGUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIkV4aXN0IFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBLZWVwX2V2ZW50IGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJLZWVwICVpXCIgKFBCLmludF9vZl9zdGVwX2lkIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBnZXRfbnByZWRpY2F0ZV9pZCBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX3ByZWRpY2F0ZV9pZFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWRfYnlfbGV2ZWwgYmxhY2tib2FyZCBwaWQgbGV2ZWwgPVxuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICB3aXRoXG4gICAgfCBTb21lIHggLT4gUEIuQS5nZXQgeCBwaWRcbiAgICB8IE5vbmUgLT4gMFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQgYmxhY2tib2FyZCBwaWQgPVxuICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCBwaWRcblxuICBsZXQgZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZCA9IGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50c1xuICBsZXQgZ2V0X3BvaW50ZXJfbmV4dCBjYXNlID0gY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dFxuXG4gIGxldCBmb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHsgYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IGNhc2UuZHluYW1pYy5wb2ludGVyX25leHQgfSApXG5cbiAgbGV0IGZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHsgYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIH0gKVxuXG4gIGxldCBnZXRfZmlyc3RfbGlua2VkX2V2ZW50IGJsYWNrYm9hcmQgcGlkID1cbiAgICBpZiBwaWQgPCAwIHx8IHBpZCA+PSBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIFBCLnplcm9fc3RlcF9zaG9ydF9pZFxuXG4gIGxldCBnZXRfbGFzdF9saW5rZWRfZXZlbnQgYmxhY2tib2FyZCBwaWQgPVxuICAgIGlmIHBpZCA8IDAgfHwgcGlkID49IGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWQgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgKFBCLkEuZ2V0IGJsYWNrYm9hcmQubGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkIHBpZClcblxuICAoKipwcmV0dHkgcHJpbnRpbmcqKVxuICBsZXQgcHJpbnRfa25vd25fY2FzZSBsb2cgcHJlZiBpbmYgc3VmIGNhc2UgPVxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzdGVzdDpcIiBwcmVmIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2Uuc3RhdGljLnRlc3QgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiL2VpZDolaS9hY3Rpb246XCJcbiAgICAgICAgKFBCLmludF9vZl9zdGVwX2lkIGNhc2Uuc3RhdGljLmV2ZW50X2lkKVxuICAgIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2Uuc3RhdGljLmFjdGlvbiBpblxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgaW5mIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2UuZHluYW1pYy5zdGF0ZV9hZnRlciBpblxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgc3VmIGluXG4gICAgKClcblxuICBsZXQgcHJpbnRfY2FzZSBsb2cgY2FzZSA9XG4gICAgbGV0IHN0YXR1cyA9IGNhc2UuZHluYW1pYy5zZWxlY3RlZCBpblxuICAgIG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+ICgpXG4gICAgfCBTb21lIHRydWUgLT4gcHJpbnRfa25vd25fY2FzZSBsb2cgXCJcIiBcIiBcIiBcIiBcIiBjYXNlXG4gICAgfCBOb25lIC0+IHByaW50X2tub3duX2Nhc2UgbG9nIFwiPyhcIiBcIikgXCIgXCIgXCIgY2FzZVxuXG4gIGxldCBwcmludF9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGxvZyA9IFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG4gICAgbWF0Y2ggYWRkcmVzcyB3aXRoXG4gICAgfCBLZWVwX2V2ZW50IGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJcyB0aGUgZXZlbnQgJWkgc2VsZWN0ZWQgPyBcIiAoUEIuaW50X29mX3N0ZXBfaWQgaSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBFeGlzdCBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiSXMgdGhlIGNhc2UgXCIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJzZWxlY3RlZCA/IFwiIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaSwgaikgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dcbiAgICAgICAgICBcIk51bWJlciBvZiB1bnJlc29sdmVkIGV2ZW50cyBmb3IgdGhlIHByZWRpY2F0ZSAlaSBhdCBsZXZlbCAlc1wiIGlcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGopXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk51bWJlciBvZiB1bnJlc29sdmVkIGV2ZW50cyBmb3IgdGhlIHByZWRpY2F0ZSAlaVwiIGlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBQb2ludGVyX3RvX25leHQgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlByb2NoYWluIMOpdsOpbmVtZW50IGFnaXNzYW50IHN1ciBcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgIHwgVmFsdWVfYWZ0ZXIgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlZhbGV1ciBhcHLDqHMgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IFZhbHVlX2JlZm9yZSBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiVmFsZXVyIGF2YW50IFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVuZW1lbnQgcHLDqWPDqXNlbnQgYWdpc3NhbnQgc3VyIFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiTm9tYnJlIGQnw6l2w6luZW1lbnRzIG5vbiByw6lzb2x1XCIgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk5vbWJyZSBkJ8OpdsOpbmVtZW50cyBub24gcsOpc29sdSBhdCBsZXZlbCAlc1wiXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgc3RyaW5nX29mX3ZhbHVlIHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSBwYiAtPiBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHBiXG4gICAgfCBDb3VudGVyIGkgLT4gXCJDb3VudGVyIFwiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgfCBQb2ludGVyIGkgLT4gc3RyaW5nX29mX3BvaW50ZXIgaVxuICAgIHwgQm9vbGVhbiBib29sIC0+XG4gICAgICAobWF0Y2ggYm9vbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCI/XCJcbiAgICAgIHwgU29tZSB0cnVlIC0+IFwiWWVzXCJcbiAgICAgIHwgU29tZSBmYWxzZSAtPiBcIk5vXCIpXG5cbiAgbGV0IHByaW50X3ZhbHVlIGxvZyB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgU3RhdGUgcGIgLT4gUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyBwYlxuICAgIHwgQ291bnRlciBpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDb3VudGVyICVpXCIgaVxuICAgIHwgUG9pbnRlciBpIC0+IHByaW50X3BvaW50ZXIgbG9nIGlcbiAgICB8IEJvb2xlYW4gYm9vbCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCJcbiAgICAgICAgKG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCI/XCJcbiAgICAgICAgfCBTb21lIHRydWUgLT4gXCJZZXNcIlxuICAgICAgICB8IFNvbWUgZmFsc2UgLT4gXCJOb1wiKVxuXG4gIGxldCBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIChhZGRyZXNzLCB2YWx1ZSkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgIHByaW50X2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgaW5cbiAgICBsZXQgXyA9IHByaW50X3ZhbHVlIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgdmFsdWUgaW5cbiAgICBlcnJvciwgbG9nX2luZm9cblxuICBsZXQgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipCTEFDS0JPQVJEKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVpIHdpcmVzLCAlaSBldmVudHNcIiBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkXG4gICAgICAgIGJsYWNrYm9hcmQubl9laWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndpcmVzOipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgZXJyID0gcmVmIGVycm9yIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBCLkEuaXRlcmlcbiAgICAgICAgKGZ1biBpIGFycmF5IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVpXCIgaSBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgUEIuQS5nZXQgYmxhY2tib2FyZC51c2VkX3ByZWRpY2F0ZV9pZCBpIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndpcmVzICVpOiBcIiBpIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYyBhdXggaiBlcnJvciA9XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogJWk6XCIgaiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2FzZSA9IFBCLkEuZ2V0IGFycmF5IGogaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlIGxvZyBjYXNlIGluXG4gICAgICAgICAgICAgICAgbGV0IGonID0gZ2V0X3BvaW50ZXJfbmV4dCBjYXNlIGluXG4gICAgICAgICAgICAgICAgbGV0IGonID0gUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgaicgaW5cbiAgICAgICAgICAgICAgICBpZiBqID0gaicgdGhlblxuICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhdXggaicgZXJyb3JcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgICBhdXggKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmQpICFlcnJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF8gPSBlcnIgOj0gZXJyb3IgaW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC5ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPSAhZXJyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIipzdGFja3MqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIC0+XG4gICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoTGlzdC5yZXYgYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrKVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgc3RhY2sgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8pIHN0YWNrXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKSBibGFja2JvYXJkLnN0YWNrXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKnNlbGVjdGVkX2V2ZW50cypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIGkgYm9vbCAtPlxuICAgICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiICBFdmVudDolaSAoJXMpXCIgaVxuICAgICAgICAgICAgICAgIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICBcIktFUFRcIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgXCJSRU1PVkVEXCIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqdW5zb2x2ZWRfZXZlbnRzKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgJWlcIiBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHMgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip3ZWlnaHQgb2YgcHJlZGljYXRlX2lkKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gYSBiIC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiAlaTolaVwiIGEgYiBpblxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cpXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip3ZWlnaHQgb2YgcHJlZGljYXRlX2lkX2J5X2xldmVsKlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLml0ZXJcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgTGV2ZWw6JXNcIiAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGwpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgUEIuQS5pdGVyaSAoZnVuIGEgYiAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiICVpOiVpXCIgYSBiIGluXG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cpKVxuICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICAoKiogcHJvcGFnYXRpb24gcmVxdWVzdCAqKVxuXG4gIGxldCBhZGRfZXZlbnQgZWlkIChwaWQsIHNlaWQpIGFycmF5IGxldmVsIHVuc29sdmVkID1cbiAgICBsZXQgZXZlbnRfY2FzZV9hZGRyZXNzID0gYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIHBpZCBzZWlkIGluXG4gICAgbGV0IG9sZCA9IFBCLkEuZ2V0IGFycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIGluXG4gICAgbGV0IHVuc29sdmVkID1cbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLmFkZCBsZXZlbFxuICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbGV2ZWwgdW5zb2x2ZWQgKyAxKVxuICAgICAgICB1bnNvbHZlZFxuICAgIGluXG4gICAgUEIuQS5zZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgKGV2ZW50X2Nhc2VfYWRkcmVzcyA6OiBvbGQpLCB1bnNvbHZlZFxuXG4gIGxldCBlbXB0eV9zdGFjayA9IFtdXG5cbiAgbGV0IGltcG9ydCA/aGV1cmlzdGljOl8gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5fcHJlZGljYXRlcyA9XG4gICAgICBQQi5uX3ByZWRpY2F0ZXMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5fZXZlbnRzID1cbiAgICAgIFBCLm5fZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSBbXSBpblxuICAgIGxldCBjdXJyZW50X3N0YWNrID0gZW1wdHlfc3RhY2sgaW5cbiAgICBsZXQgZXZlbnRfY2FzZV9saXN0ID0gUEIuQS5tYWtlIG5fZXZlbnRzIFtdIGluXG4gICAgbGV0IG5fc2VpZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgMCBpblxuICAgIGxldCB1bnNvbHZlZF9ieV9sZXZlbCA9IFByaW9yaXR5LkxldmVsTWFwLmVtcHR5IGluXG4gICAgbGV0IGJsYWNrYm9hcmQgPSBQQi5BLm1ha2Ugbl9wcmVkaWNhdGVzIChQQi5BLm1ha2UgMSBkdW1teV9jYXNlX2luZm8pIGluXG4gICAgbGV0IHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWwgPVxuICAgICAgbGV0IHJlYyBhdXggbGV2ZWxfb3B0IG1hcCA9XG4gICAgICAgIG1hdGNoIGxldmVsX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYXBcbiAgICAgICAgfCBTb21lIGxldmVsIC0+XG4gICAgICAgICAgYXV4IChQcmlvcml0eS5oaWdoZXIgbGV2ZWwpXG4gICAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsIChQQi5BLm1ha2UgMCAwKSBtYXApXG4gICAgICBpblxuICAgICAgYXV4IChTb21lIFByaW9yaXR5Lmxvd2VzdCkgUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHlcbiAgICBpblxuICAgIGxldCBpbmNfZGVwdGggbGV2ZWwgcF9pZCA9XG4gICAgICBtYXRjaFxuICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsXG4gICAgICB3aXRoXG4gICAgICB8IFNvbWUgYSAtPlxuICAgICAgICBsZXQgb2xkID0gdHJ5IFBCLkEuZ2V0IGEgcF9pZCB3aXRoIE5vdF9mb3VuZCAtPiAwIGluXG4gICAgICAgIFBCLkEuc2V0IGEgcF9pZCAob2xkICsgMSlcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG5cbiAgICBsZXQgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCA9IFBCLkEubWFrZSAwIDAgaW5cbiAgICBsZXQgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkID1cbiAgICAgIFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgUEIuemVyb19zdGVwX3Nob3J0X2lkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGxldCByZWMgYXV4MSBwX2lkIGxvZ19pbmZvIGVycm9yID1cbiAgICAgICAgaWYgcF9pZCA8IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzaXplID1cbiAgICAgICAgICAgIFBCLm5fZXZlbnRzX3Blcl9wcmVkaWNhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgcF9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHNpemUgPSBzaXplICsgMSBpblxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIFBCLkEuc2V0IGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZCBwX2lkXG4gICAgICAgICAgICAgIChQQi5zdGVwX3Nob3J0X2lkX29mX2ludCAoc2l6ZSAtIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkIHBfaWQgKHNpemUgLSAyKSBpblxuICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgbl9zZWlkIHBfaWQgc2l6ZSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgUEIuZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgcF9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFycmF5ID0gUEIuQS5tYWtlIHNpemUgZHVtbXlfY2FzZV9pbmZvIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBibGFja2JvYXJkIHBfaWQgYXJyYXkgaW5cbiAgICAgICAgICBsZXQgcmVjIGF1eDIgc2VpZCBsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZHluYW1pYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3ByZXZpb3VzID0gUEIuemVyb19zdGVwX3Nob3J0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfbmV4dCA9IFBCLmluY19zdGVwX3Nob3J0X2lkIFBCLnplcm9fc3RlcF9zaG9ydF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9hZnRlciA9IFBCLnVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IFNvbWUgdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHN0YXRpYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICByb3dfc2hvcnRfaWQgPSBQQi56ZXJvX3N0ZXBfc2hvcnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfaWQgPSBQQi5kdW1teV9zdGVwX2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHRlc3QgPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGFycmF5IDAgaW5mbyBpblxuICAgICAgICAgICAgICBsZXQgcHJlZF9zaXplID1cbiAgICAgICAgICAgICAgICBQQi5kZWNfc3RlcF9zaG9ydF9pZCAoUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgc2l6ZSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGR5bmFtaWMgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9wcmV2aW91cyA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX25leHQgPSBwcmVkX3NpemU7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGVfYWZ0ZXIgPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gU29tZSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc3RhdGljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd19zaG9ydF9pZCA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgYXJyYXkgKHNpemUgLSAxKSBpbmZvIGluXG4gICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICB8IHRyaXBsZSA6OiBxIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID0gaW5pdF9pbmZvIHBfaWQgc2VpZCAoc2l6ZSAtIDEpIHRyaXBsZSBpblxuICAgICAgICAgICAgICBsZXQgZWlkID0gZ2V0X2VpZF9vZl90cmlwbGUgdHJpcGxlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIF9ldmVudHMgPVxuICAgICAgICAgICAgICAgIFBCLmdldF9wcmVfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF9lcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICAgICAgICBQQi5nZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIHByZV9ibGFja2JvYXJkIGVpZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBpbmNfZGVwdGggbGV2ZWwgcF9pZCBpblxuICAgICAgICAgICAgICBsZXQgKCksIF8gPVxuICAgICAgICAgICAgICAgIGFkZF9ldmVudCBlaWQgKHBfaWQsIHNlaWQpIGV2ZW50X2Nhc2VfbGlzdCBsZXZlbFxuICAgICAgICAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gUEIuQS5zZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQpIGluZm8gaW5cbiAgICAgICAgICAgICAgYXV4MiAoUEIuZGVjX3N0ZXBfc2hvcnRfaWQgc2VpZCkgcSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIGF1eDIgKFBCLnN0ZXBfc2hvcnRfaWRfb2ZfaW50IChzaXplIC0gMikpIGxpc3QgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eDEgKHBfaWQgLSAxKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4MSAobl9wcmVkaWNhdGVzIC0gMSkgbG9nX2luZm8gZXJyb3JcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZvcmNlZF9ldmVudHMgPVxuICAgICAgUEIubWFuZGF0b3J5X2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnQgPVxuICAgICAgUEIuZ2V0X3ByZV9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdW5zb2x2ZWRfYnlfbGV2ZWwgPVxuICAgICAgbGV0IHJlYyBhdXggayBlcnJvciBsb2dfaW5mbyBtYXAgPVxuICAgICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBtYXBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgICAgUEIuZ2V0X2xldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIHByZV9ibGFja2JvYXJkIChQQi5zdGVwX2lkX29mX2ludCBrKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWxcbiAgICAgICAgICAgICAgKFByaW9yaXR5LkxldmVsTWFwLmZpbmRfZGVmYXVsdCAwIGxldmVsIG1hcCArIDEpXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChrIC0gMSkgZXJyb3IgbG9nX2luZm8gbWFwXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggbl9ldmVudHMgZXJyb3IgbG9nX2luZm8gdW5zb2x2ZWRfYnlfbGV2ZWxcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNpZGVfZWZmZWN0cyA9XG4gICAgICBQQi5nZXRfc2lkZV9lZmZlY3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZpY3RpdGlvdXNfb2JzID1cbiAgICAgIFBCLmdldF9maWN0aXRpb3VzX29ic2VydmFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBiID1cbiAgICAgIHtcbiAgICAgICAgZXZlbnQ7XG4gICAgICAgIHNpZGVfZWZmZWN0X29mX2V2ZW50ID0gc2lkZV9lZmZlY3RzO1xuICAgICAgICBwcmVfY29sdW1uX21hcF9pbnYgPSBQQi5nZXRfcHJlX2NvbHVtbl9tYXBfaW52IHByZV9ibGFja2JvYXJkO1xuICAgICAgICBsZXZlbF9vZl9ldmVudCA9IFBCLmxldmVscyBwcmVfYmxhY2tib2FyZDtcbiAgICAgICAgZm9yY2VkX2V2ZW50cztcbiAgICAgICAgbl9laWQgPSBuX2V2ZW50cztcbiAgICAgICAgbl9zZWlkO1xuICAgICAgICBldmVudF9jYXNlX2xpc3Q7XG4gICAgICAgIGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZDtcbiAgICAgICAgbl9wcmVkaWNhdGVfaWQgPSBuX3ByZWRpY2F0ZXM7XG4gICAgICAgIGN1cnJlbnRfc3RhY2s7XG4gICAgICAgIHN0YWNrO1xuICAgICAgICBibGFja2JvYXJkO1xuICAgICAgICBzZWxlY3RlZF9ldmVudHMgPSBQQi5BLm1ha2Ugbl9ldmVudHMgTm9uZTtcbiAgICAgICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZDtcbiAgICAgICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbDtcbiAgICAgICAgdXNlZF9wcmVkaWNhdGVfaWQgPSBQQi5BLm1ha2Ugbl9wcmVkaWNhdGVzIHRydWU7XG4gICAgICAgIG5fdW5yZXNvbHZlZF9ldmVudHMgPSBuX2V2ZW50cztcbiAgICAgICAgbl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbCA9IHVuc29sdmVkX2J5X2xldmVsO1xuICAgICAgICBmaWN0aXRpb3VzX29ic2VydmFibGUgPSBmaWN0aXRpb3VzX29icztcbiAgICAgIH1cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYlxuXG4gIGxldCBleGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpbmZvID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGluZm8uZHluYW1pYy5zZWxlY3RlZFxuXG4gIGxldCBzZXRfY2FzZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgIGJsYWNrYm9hcmQgPVxuICAgIHRyeVxuICAgICAgbGV0IF8gPVxuICAgICAgICBQQi5BLnNldFxuICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzLmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGNhc2VfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBibGFja2JvYXJkXG5cbiAgbGV0IHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkID1cbiAgICBtYXRjaCBjYXNlX2FkZHJlc3Mgd2l0aFxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGludCwgbGV2ZWwpIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50MiAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9vcHRpb24gbGV2ZWxcbiAgICAgICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICBsZXQgKCkgPSBQQi5BLnNldCBhIGludCBpbnQyIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgIHwgUG9pbnRlciBfIHwgU3RhdGUgXyB8IEJvb2xlYW4gXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpbnQgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBfID0gUEIuQS5zZXQgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkIGludCBpbnQyIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgUG9pbnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBwb2ludGVyX25leHQgPSBpbnQyIH0gfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgQ291bnRlciBfIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBWYWx1ZV9hZnRlciBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgU3RhdGUgc3RhdGUgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHN0YXRlX2FmdGVyID0gc3RhdGUgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBCb29sZWFuIF8gfCBDb3VudGVyIF8gfCBQb2ludGVyIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwic2V0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdmFsdWVfYWZ0ZXJcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFZhbHVlX2JlZm9yZSBfY2FzZV9hZGRyZXNzIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwic2V0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdmFsdWVfYmVmb3JlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgYmxhY2tib2FyZFxuICAgIHwgUG9pbnRlcl90b19wcmV2aW91cyBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgUG9pbnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBwb2ludGVyX3ByZXZpb3VzID0gaW50MiB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gfCBDb3VudGVyIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJzZXQsIGxpbmUgODk2LCBJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50IC0+XG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggbl91bnJlc29sdmVkX2V2ZW50cyA9IGludCB9XG4gICAgICB8IEJvb2xlYW4gXyB8IFBvaW50ZXIgXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJzZXQsIGxpbmUgOTA1LCBJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGxldmVsIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50IC0+XG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBuX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsID1cbiAgICAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsIGludFxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbDtcbiAgICAgICAgICB9IClcbiAgICAgIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyB8IFBvaW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBLZWVwX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBQQi5BLnNldCBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyAoUEIuaW50X29mX3N0ZXBfaWQgc3RlcF9pZCkgYlxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgUG9pbnRlciBfIHwgU3RhdGUgXyB8IENvdW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBFeGlzdCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBzZWxlY3RlZCA9IGIgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBDb3VudGVyIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcblxuICBsZXQgaXNfc2VsZWN0ZWRfZXZlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2lkIGJsYWNrYm9hcmQgPVxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSApXG5cbiAgbGV0IHJlYyBnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNhc2VfYWRkcmVzcyB3aXRoXG4gICAgfCBLZWVwX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBCb29sZWFuXG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSkgKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGludCwgbGV2ZWwpIC0+XG4gICAgICBsZXQgbiA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9vcHRpb24gbGV2ZWxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IFBCLkEuZ2V0IGEgaW50XG4gICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDb3VudGVyIG5cbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGludCAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDb3VudGVyIChQQi5BLmdldCBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWQgaW50KVxuICAgIHwgRXhpc3QgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEJvb2xlYW4gY2FzZS5keW5hbWljLnNlbGVjdGVkXG4gICAgfCBQb2ludGVyX3RvX25leHQgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFBvaW50ZXIgY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dFxuICAgIHwgVmFsdWVfYWZ0ZXIgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0YXRlIGNhc2UuZHluYW1pYy5zdGF0ZV9hZnRlclxuICAgIHwgVmFsdWVfYmVmb3JlIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IHBvaW50ZXIgPSBjYXNlLmR5bmFtaWMucG9pbnRlcl9wcmV2aW91cyBpblxuICAgICAgaWYgaXNfbnVsbF9wb2ludGVyIHBvaW50ZXIgdGhlblxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJWYWx1ZSBiZWZvcmUgYW4gdW5leGlzdGluZyBlbGVtZW50IHJlcXVlc3RlZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJWYWx1ZSBiZWZvcmUgYW4gdW5leGlzdGluZyBlbGVtZW50IHJlcXVlc3RlZFwiKVxuICAgICAgICAgIChTdGF0ZSBQQi51bmRlZmluZWQpXG4gICAgICBlbHNlXG4gICAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChWYWx1ZV9hZnRlciB7IGNhc2VfYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IHBvaW50ZXIgfSlcbiAgICAgICAgICBibGFja2JvYXJkXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBQb2ludGVyIGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGx2bCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIENvdW50ZXJcbiAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbHZsXG4gICAgICAgICAgICAgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsKSApXG5cbiAgbGV0IGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVmaXggaW50IGludDJcbiAgICAgIGJsYWNrYm9hcmQgPVxuICAgIGxldCBmaWxlX25hbWUgPVxuICAgICAgcHJlZml4IF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGludCBeIFwiX1wiIF4gc3RyaW5nX29mX2ludCBpbnQyIF4gXCIuc3h3XCJcbiAgICBpblxuICAgIGxldCBkZXNjX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBmaWxlX25hbWUgaW5cbiAgICBsZXQgZGVzYyA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuWExTIGRlc2NfY2hhbiBpblxuICAgIGxldCBwYXJhbWV0ZXIgPSBQQi5DSS5Qby5LLkguc2V0X2xvZ2dlciBwYXJhbWV0ZXIgZGVzYyBpblxuICAgIGxldCBuY29sdW1uc19sZWZ0ID0gMyBpblxuICAgIGxldCBucm93c19oZWFkID0gMiBpblxuICAgIGxldCByb3dfb2ZfcHJlY29uZGl0aW9uIGVpZCA9IG5yb3dzX2hlYWQgKyAoMyAqIGVpZCkgaW5cbiAgICBsZXQgcm93X29mX3Bvc3Rjb25kaXRpb24gZWlkID0gMSArIHJvd19vZl9wcmVjb25kaXRpb24gZWlkIGluXG4gICAgbGV0IGNvbHVtbl9vZl9waWQgcGlkID0gcGlkICsgbmNvbHVtbnNfbGVmdCBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiUkVNICAqKioqKiAgQkFTSUMgICoqKioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCBjb2xvcnMgPSBQQi5BLm1ha2UgYmxhY2tib2FyZC5uX2VpZCBOb25lIGluXG4gICAgbGV0IGJhY2tjb2xvciBsb2cgY29sb3IgPVxuICAgICAgbWF0Y2ggY29sb3Igd2l0aFxuICAgICAgfCBTb21lIGNvbG9yIC0+XG4gICAgICAgIGxldCByLCBnLCBiID0gQ29sb3IudHJpcGxlX29mX2NvbG9yIGNvbG9yIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLkNlbGxCYWNrQ29sb3IgPSBSR0IoJWksJWksJWkpXCIgciBnIGIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAoKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgdGV4dGNvbG9yIGxvZyBjb2xvciA9XG4gICAgICBtYXRjaCBjb2xvciB3aXRoXG4gICAgICB8IFNvbWUgY29sb3IgLT5cbiAgICAgICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgY29sb3IgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuQ2hhckNvbG9yID0gUkdCKCVpLCVpLCVpKVwiIHIgZyBiIGluXG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IGdldGNlbGwgbG9nIHJvdyBjb2wgPVxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMgPSBTLmdldENlbGxCeVBvc2l0aW9uKCVpLCVpKVwiIGNvbCByb3cgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgICBpblxuICAgIGxldCBvdmVybGluZV9jYXNlIGxvZyByb3cgX2NvbCBfY29sb3IgPVxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlI9Uy5Sb3dzKCVpKVwiIHJvdyBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlIuVG9wQm9yZGVyID0gd2l0aEJvcmRcIiBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgIGluXG4gICAgbGV0IHByaW50X2Nhc2UgbG9nIHJvdyBjb2wgY29sb3JfZm9udCBjb2xvcl9iYWNrIHN0cmluZyA9XG4gICAgICBpZiBzdHJpbmcgPD4gXCJcIiB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gZ2V0Y2VsbCBsb2cgcm93IGNvbCBpblxuICAgICAgICBsZXQgKCkgPSB0ZXh0Y29sb3IgbG9nIGNvbG9yX2ZvbnQgaW5cbiAgICAgICAgbGV0ICgpID0gYmFja2NvbG9yIGxvZyBjb2xvcl9iYWNrIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLnNldEZvcm11bGEoXFxcIiVzXFxcIilcIiBzdHJpbmcgaW5cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgICAgKVxuICAgIGluXG4gICAgbGV0IHByaW50X2Nhc2VfZnVuIGxvZyByb3cgY29sIGNvbG9yX2ZvbnQgY29sb3JfYmFjayBmIGVycm9yID1cbiAgICAgIGxldCAoKSA9IGdldGNlbGwgbG9nIHJvdyBjb2wgaW5cbiAgICAgIGxldCAoKSA9IHRleHRjb2xvciBsb2cgY29sb3JfZm9udCBpblxuICAgICAgbGV0ICgpID0gYmFja2NvbG9yIGxvZyBjb2xvcl9iYWNrIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQy5zZXRGb3JtdWxhKFxcXCJcIiBpblxuICAgICAgbGV0IGVycm9yID0gZiBlcnJvciBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlxcXCIpXCIgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgIGVycm9yXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIlN1YiBNYWluXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgQ29sb3IuQmxhY2sgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJEaW0gd2l0aEJvcmQgQXMgTmV3IGNvbS5zdW4uc3Rhci50YWJsZS5Cb3JkZXJMaW5lXCJcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiV2l0aCB3aXRoQm9yZCB3aXRoQm9yZC5Db2xvciA9IFJHQiglaSwlaSwlaSlcIiByIGcgYlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIndpdGhCb3JkLk91dGVyTGluZVdpZHRoID0gNjBcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJFbmQgV2l0aFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIlMgPSBUaGlzQ29tcG9uZW50LlNoZWV0cygwKVwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgXyA9XG4gICAgICBtYXRjaCBmb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgfCBbIChsaXN0LCBfKSBdIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gZWlkIC0+IFBCLkEuc2V0IGNvbG9ycyAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSAoU29tZSBDb2xvci5SZWQpKVxuICAgICAgICAgIGxpc3RcbiAgICAgIHwgXyAtPiAoKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIHBpZCBwX2luZm8gLT5cbiAgICAgICAgICBwcmludF9jYXNlX2Z1biBkZXNjIDAgKGNvbHVtbl9vZl9waWQgcGlkKSBOb25lIE5vbmVcbiAgICAgICAgICAgIChmdW4gX2Vycm9yIC0+IFBCLnByaW50X3ByZWRpY2F0ZV9pbmZvIGRlc2MgcF9pbmZvKVxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52XG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBlaWQgZXJyb3IgbG9nX2luZm8gc3RhY2sgPVxuICAgICAgaWYgZWlkID49IGJsYWNrYm9hcmQubl9laWQgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICBjYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIChQQi5zdGVwX2lkX29mX2ludCBlaWQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByb3dfcHJlY29uZGl0aW9uID0gcm93X29mX3ByZWNvbmRpdGlvbiBlaWQgaW5cbiAgICAgICAgbGV0IHJvd19wb3N0Y29uZGl0aW9uID0gcm93X29mX3Bvc3Rjb25kaXRpb24gZWlkIGluXG4gICAgICAgIGxldCBjb2xvciwgbWF5YmVrZXB0ID1cbiAgICAgICAgICBtYXRjaCBQQi5BLmdldCBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyBlaWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBQQi5BLmdldCBjb2xvcnMgZWlkLCB0cnVlXG4gICAgICAgICAgfCBTb21lIHRydWUgLT4gU29tZSBDb2xvci5SZWQsIHRydWVcbiAgICAgICAgICB8IFNvbWUgZmFsc2UgLT4gU29tZSBDb2xvci5HcmV5LCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGF1eDIgZiBnIGwgZXJyb3IgbG9nX2luZm8gPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgb3ZlcmxpbmVfY2FzZSBkZXNjIHJvd19wb3N0Y29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcHJlY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmUgY29sb3IgKGYgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcG9zdGNvbmRpdGlvblxuICAgICAgICAgICAgICAgIChjb2x1bW5fb2ZfcGlkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAgICAgICBOb25lIGNvbG9yIChnIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIG1heWJla2VwdCB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB2YWx1ZV9iZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAodmFsdWVfYmVmb3JlIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3RyaW5nX29mX3ZhbHVlIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGVycm9yLCBsb2dfaW5mbywgXCJVbmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIChyb3dfcHJlY29uZGl0aW9uIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAoU29tZSBDb2xvci5MaWdodGJsdWUpIE5vbmUgdmFsdWVfYmVmb3JlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB2YWx1ZV9hZnRlciA9XG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yICh2YWx1ZV9hZnRlciB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHN0cmluZ19vZl92YWx1ZSBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBlcnJvciwgbG9nX2luZm8sIFwiVW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyAocm93X3Bvc3Rjb25kaXRpb24gKyAxKVxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgIChTb21lIENvbG9yLkxpZ2h0Ymx1ZSkgTm9uZSB2YWx1ZV9hZnRlclxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eDIgZiBnIHEgZXJyb3IgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByaW50X3Rlc3QgdCA9XG4gICAgICAgICAgbGV0IGNvbHVtbiA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBsZXQgY2FzZSA9XG4gICAgICAgICAgICBQQi5BLmdldCBjb2x1bW4gKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHQucm93X3Nob3J0X2V2ZW50X2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUEIuc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBjYXNlLnN0YXRpYy50ZXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmludF9hY3Rpb24gdCA9XG4gICAgICAgICAgbGV0IGNvbHVtbiA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBsZXQgY2FzZSA9XG4gICAgICAgICAgICBQQi5BLmdldCBjb2x1bW4gKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHQucm93X3Nob3J0X2V2ZW50X2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUEIuc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBjYXNlLnN0YXRpYy5hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0cmluZ19laWQgZXJyb3IgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9hc19sb2dnZXIgZGVzYyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgIFRyYWNlLnByaW50X3N0ZXAgfmNvbXBhY3Q6dHJ1ZSB+ZW52OmhhbmRsZXIuUEIuQ0kuUG8uSy5ILmVudiBmXG4gICAgICAgICAgICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmV2ZW50IGVpZCkpXG4gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkV2ZW50OiVpXCIgZWlkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93X3ByZWNvbmRpdGlvbiAxIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb24gMSBOb25lIGNvbG9yIHN0cmluZ19laWQgZXJyb3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZSBkZXNjIHJvd19wcmVjb25kaXRpb24gMiBOb25lIGNvbG9yIFwiUFJFQ09ORElUSU9OXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9jYXNlIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb24gMiBOb25lIGNvbG9yIFwiUE9TVENPTkRJVElPTlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGF1eDIgcHJpbnRfdGVzdCBwcmludF9hY3Rpb24gbGlzdCBlcnJvciBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgY2FuZCA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkIGluXG4gICAgICAgICAgICBUcmFjZS5zdGVwX2lzX3J1bGUgY2FuZCB8fCBUcmFjZS5zdGVwX2lzX3BlcnQgY2FuZFxuICAgICAgICAgICAgfHwgVHJhY2Uuc3RlcF9pc19vYnMgY2FuZCB8fCBUcmFjZS5zdGVwX2lzX2luaXQgY2FuZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgc3RhY2sgPVxuICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gZXJyb3Igcm93IC0+XG4gICAgICAgICAgICAgICAgICBwcmludF9jYXNlX2Z1biBkZXNjIHJvdyAwIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvcilcbiAgICAgICAgICAgICAgICBlcnJvciAoTGlzdC5yZXYgc3RhY2spXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIFtdXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgcm93X3ByZWNvbmRpdGlvbiA6OiByb3dfcG9zdGNvbmRpdGlvbiA6OiBzdGFja1xuICAgICAgICBpblxuICAgICAgICBhdXggKGVpZCArIDEpIGVycm9yIGxvZ19pbmZvIHN0YWNrXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID0gYXV4IDAgZXJyb3IgbG9nX2luZm8gW10gaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkVuZCBTdWJcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gY2xvc2Vfb3V0IGRlc2NfY2hhbiBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgcmVjb3JkX21vZGlmIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWUgYmxhY2tib2FyZFxuICAgICAgPVxuICAgICggZXJyb3IsXG4gICAgICB7XG4gICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICBjdXJyZW50X3N0YWNrID0gKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSkgOjogYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrO1xuICAgICAgfSApXG5cbiAgbGV0IHJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgY2FzZV92YWx1ZSA9IG9sZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC5JR05PUkVEKioqQC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIElnbm9yZSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgIHN0cmljdGx5X21vcmVfcmVmaW5lZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBvbGQgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALioqKkAuUkVGSU5FX1ZBTFVFQC5WYWx1ZSBiZWZvcmU6IFwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIG9sZCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgY2FzZV92YWx1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQC5JR05PUkVEKioqQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIElnbm9yZSlcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgICAgIHN0cmljdGx5X21vcmVfcmVmaW5lZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX3ZhbHVlIG9sZFxuICAgICAgICBpblxuICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICByZWNvcmRfbW9kaWYgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgY2FzZV9hZGRyZXNzIG9sZCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICBjYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuTmV3IHZhbHVlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuU1VDQ0VTUyoqKkAuXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBTdWNjZXNzKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5GQUlMKioqQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIEZhaWwpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG5cbiAgbGV0IG92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgY2FzZV92YWx1ZSA9IG9sZCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWUgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICApXG5cbiAgbGV0IGRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbWF0Y2ggb2xkIHdpdGhcbiAgICB8IENvdW50ZXIgayAtPlxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAoQ291bnRlciAoayAtIDEpKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICApXG4gICAgfCBQb2ludGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiV3JvbmcgdHlwZSBvZiBjYXNlIHZhbHVlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJXcm9uZyB0eXBlIG9mIGNhc2UgdmFsdWVcIikgYmxhY2tib2FyZFxuXG4gIGxldCBicmFuY2ggcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIqKioqKioqQC4gKiBCUkFOQ0ggKkAuKioqKioqKkAuXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIHByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2JyYW5jaCBsb2dfaW5mbyBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIHN0YWNrID0gYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIDo6IGJsYWNrYm9hcmQuc3RhY2s7XG4gICAgICAgIGN1cnJlbnRfc3RhY2sgPSBbXTtcbiAgICAgIH0gKVxuXG4gIGxldCByZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiogQ3V0ICpALioqKioqKipcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IHN0YWNrID0gYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIChjYXNlX2FkZHJlc3MsIGNhc2VfdmFsdWUpIC0+XG4gICAgICAgICAgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICBzdGFja1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIqKioqKioqQC4qIEFmdGVyX0N1dCAqQC4qKioqKioqXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIHByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2N1dCBsb2dfaW5mbyBpblxuICAgIG1hdGNoIGJsYWNrYm9hcmQuc3RhY2sgd2l0aFxuICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCB7IGJsYWNrYm9hcmQgd2l0aCBjdXJyZW50X3N0YWNrID0gW10gfVxuICAgIHwgdCA6OiBxIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIGN1cnJlbnRfc3RhY2sgPSB0OyBzdGFjayA9IHEgfVxuXG4gIGxldCByZXNldF9pbml0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCByZWMgYXV4IChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpID1cbiAgICAgIG1hdGNoIGJsYWNrYm9hcmQuY3VycmVudF9zdGFjayB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBfIC0+XG4gICAgICAgIGF1eCAocmVzZXRfbGFzdF9icmFuY2hpbmcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPSBhdXggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnJlc2V0X2xvZyBsb2dfaW5mbyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIHR5cGUgcmVzdWx0ID0gKFRyYWNlLnN0ZXAgKiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0KSBsaXN0XG4gICgqKiBvdXRwdXQgcmVzdWx0KilcblxuICAoKiogaXRlcmF0aW9uKilcbiAgbGV0IGlzX21heGltYWxfc29sdXRpb24gX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50cyA9IDBcblxuICAoKiogZXhwb3J0aW5nIHJlc3VsdCopXG5cbiAgbGV0IHRyYW5zbGF0ZV9ibGFja2JvYXJkIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGFycmF5ID0gYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgaW5cbiAgICBsZXQgc3RlcF9hcnJheSA9IGJsYWNrYm9hcmQuZXZlbnQgaW5cbiAgICBsZXQgc2lkZV9hcnJheSA9IGJsYWNrYm9hcmQuc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgaW5cbiAgICBsZXQgc2l6ZSA9IFBCLkEubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBsaXN0ID1cbiAgICAgIGlmIGsgPSBzaXplIHRoZW5cbiAgICAgICAgTGlzdC5yZXYgbGlzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBib29sID0gUEIuQS5nZXQgYXJyYXkgayBpblxuICAgICAgICBtYXRjaCBib29sIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIGxpc3RcbiAgICAgICAgfCBTb21lIGZhbHNlIC0+IGF1eCAoayArIDEpIGxpc3RcbiAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICBsZXQgc3RlcCA9IFBCLkEuZ2V0IHN0ZXBfYXJyYXkgayBpblxuICAgICAgICAgIGxldCBzaWRlID0gUEIuQS5nZXQgc2lkZV9hcnJheSBrIGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKChzdGVwLCBzaWRlKSA6OiBsaXN0KVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSBhdXggMCBbXSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG4gIGxldCBwcmludF9zdGFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgaW5cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkN1cnJlbnRfc3RhY2tfbGV2ZWwgJWkgXCIgKExpc3QubGVuZ3RoIHN0YWNrKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIGkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJALlwiIGluXG4gICAgICAgICAgZXJyb3IpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pIChMaXN0LnJldiBzdGFjaylcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSB4IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk90aGVyIGxldmVsICVpIFwiIChMaXN0Lmxlbmd0aCB4KSBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIC0+XG4gICAgICAgICAgICAgIHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8pIChMaXN0LnJldiB4KSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbylcbiAgICAgICAgKExpc3QucmV2IGJsYWNrYm9hcmQuc3RhY2spXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IGlzX2ZpY3RpdGlvdXNfb2JzIGJsYWNrYm9hcmQgZWlkID1cbiAgICBTb21lIGVpZCA9IGJsYWNrYm9hcmQuZmljdGl0aW91c19vYnNlcnZhYmxlXG5cbiAgbGV0IHVzZWxlc3NfcHJlZGljYXRlX2lkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IG5fZXZlbnRzID0gYmxhY2tib2FyZC5uX2VpZCBpblxuICAgIGlmIFBhcmFtZXRlci5kb19sb2NhbF9jdXQgdGhlbiAoXG4gICAgICBsZXQgZXZlbnRfYXJyYXkgPSBQQi5BLm1ha2Ugbl9ldmVudHMgZmFsc2UgaW5cbiAgICAgIGxldCBrZXB0X2V2ZW50cyA9IFtdIGluXG4gICAgICBsZXQga2VwdF9ldmVudHMgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4ga2VwdF9ldmVudHMgaSAtPlxuICAgICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBldmVudF9hcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgaSkgdHJ1ZSBpblxuICAgICAgICAgICAgaSA6OiBrZXB0X2V2ZW50cylcbiAgICAgICAgICBrZXB0X2V2ZW50cyBsaXN0XG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdCBrZXB0X2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIGV2ZW50X2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywga2VwdF9ldmVudHNcbiAgICAgICAgfCBlaWQgOjogcSAtPlxuICAgICAgICAgIGlmIGlzX2ZpY3RpdGlvdXNfb2JzIGJsYWNrYm9hcmQgZWlkIHRoZW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBxIGtlcHRfZXZlbnRzXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnRfY2FzZV9saXN0IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMpIGV2ZW50X2Nhc2VfYWRkcmVzcyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgICAgICAgICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBQQi5pc191bmRlZmluZWQgY2FzZS5zdGF0aWMudGVzdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9pbnRlciA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlaWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZWMgc2Nhbl9kb3duIHBvaW50ZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93X3Nob3J0X2V2ZW50X2lkID0gcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfZXJyb3IsIF9sb2dfaW5mbywgcHJldl9jYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2V2ZW50X2Nhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfZWlkID0gcHJldl9jYXNlLnN0YXRpYy5ldmVudF9pZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfbnVsbF9wb2ludGVyX3N0ZXBfaWQgcHJldl9laWQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIFBCLmlzX3Vua25vd24gcHJldl9jYXNlLnN0YXRpYy5hY3Rpb24gdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb2ludGVyID0gcHJldl9jYXNlLmR5bmFtaWMucG9pbnRlcl9wcmV2aW91cyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuX2Rvd24gcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcHJldl9laWRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHNjYW5fZG93biBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGVpZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHEsIGtlcHRfZXZlbnRzXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2VpZCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBib29sID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBQQi5BLmdldCBldmVudF9hcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgcHJldl9laWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBxLCBrZXB0X2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUEIuQS5zZXQgZXZlbnRfYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQQi5pbnRfb2Zfc3RlcF9pZCBwcmV2X2VpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldl9laWQgOjogcSwgcHJldl9laWQgOjoga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMpXG4gICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBxIGtlcHRfZXZlbnRzXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHJlcCA9IGF1eCBsb2dfaW5mbyBlcnJvciBsaXN0IGtlcHRfZXZlbnRzIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIExpc3Quc29ydCBjb21wYXJlIHJlcCwgbl9ldmVudHMgLSBMaXN0Lmxlbmd0aCByZXBcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGV2ZW50c190b19rZWVwID1cbiAgICAgICAgbGV0IHJlYyBhdXggayBsaXN0ID1cbiAgICAgICAgICBpZiBrIDwgMCB0aGVuXG4gICAgICAgICAgICBsaXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4IChrIC0gMSkgKFBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChuX2V2ZW50cyAtIDEpIFtdXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudHNfdG9fa2VlcCwgMFxuICAgIClcblxuICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY3V0X2NhdXNhbF9mbG93LCBuX2V2ZW50c19yZW1vdmVkID1cbiAgICAgIHVzZWxlc3NfcHJlZGljYXRlX2lkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19rX2N1dF9ldmVudHMgbl9ldmVudHNfcmVtb3ZlZCBsb2dfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgY3V0X2NhdXNhbF9mbG93KVxuXG4gIGxldCBpbXBvcnQgP2hldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVibGFja2JvYXJkID1cbiAgICAgIFBCLmluaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBfc3RlcF9pZCwgc3RyaW5nLCB0b194bHMpID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJDb21wcmVzc2lvbiBtb2RlIGhhcyBub3QgYmVlbiBzZXQgdXBcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQ29tcHJlc3Npb24gbW9kZSBoYXMgbm90IGJlZW4gc2V0IHVwLlwiKVxuICAgICAgICAgIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQsIFwiTm9uZVwiLCBmYWxzZSlcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIGludCkpIHJlZmluZWRfZXZlbnQgLT5cbiAgICAgICAgICAgICAgUEIuYWRkX3N0ZXBfdXBfdG9faXNvIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgcmVmaW5lZF9ldmVudCBwcmVibGFja2JvYXJkIGludClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQpKVxuICAgICAgICAgICAgbGlzdFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICggcHJlYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGludCxcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHNzdHJvbmdGaWxlTmFtZSxcbiAgICAgICAgICAgIFBhcmFtZXRlci5kdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmVzc2lvbiApIClcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSkgcmVmaW5lZF9ldmVudCAtPlxuICAgICAgICAgICAgICBQQi5hZGRfc3RlcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciByZWZpbmVkX2V2ZW50XG4gICAgICAgICAgICAgICAgcHJlYmxhY2tib2FyZCBpbnQpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgUEIuemVyb19zdGVwX2lkKSlcbiAgICAgICAgICAgIGxpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAoIHByZWJsYWNrYm9hcmQsXG4gICAgICAgICAgICBpbnQsXG4gICAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lLFxuICAgICAgICAgICAgUGFyYW1ldGVyLmR1bXBfZ3JpZF9iZWZvcmVfd2Vha19jb21wcmVzc2lvbiApIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWJsYWNrYm9hcmQgPVxuICAgICAgUEIuZmluYWxpemUgaGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgaW1wb3J0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBfID0gUHJpb3JpdHkubl9zdG9yeSA6PSAhUHJpb3JpdHkubl9zdG9yeSArIDEgaW5cbiAgICBsZXQgXyA9IFByaW9yaXR5Lm5fYnJhbmNoIDo9IDEgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICBpZiB0b194bHMgdGhlblxuICAgICAgICBleHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RyaW5nXG4gICAgICAgICAgIVByaW9yaXR5Lm5fc3RvcnkgMCBibGFja2JvYXJkXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuZW5kXG4iLCIoKipcbiAgKiBwcm9wYWdhdGlvbl9oZXVyaXN0aWMubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNi0wOS0wNSBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMDMgMjA6MDM6MTEgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5sZXQgbG9va191cF9mb3JfYmV0dGVyX2N1dCA9IFBhcmFtZXRlci5sb29rX3VwX2Zvcl9iZXR0ZXJfY3V0XG5sZXQgbG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0ID0gUGFyYW1ldGVyLmxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dFxuXG5tb2R1bGUgdHlwZSBCbGFja2JvYXJkX3dpdGhfaGV1cmlzdGljID0gc2lnXG4gIG1vZHVsZSBCIDogQmxhY2tib2FyZC5CbGFja2JvYXJkXG5cbiAgdHlwZSB1cGRhdGVfb3JkZXJcbiAgdHlwZSBwcm9wYWdhdGlvbl9jaGVja1xuXG4gIHZhbCBkdW1teV91cGRhdGVfb3JkZXIgOiB1cGRhdGVfb3JkZXJcblxuICB2YWwgZm9yY2VkX2V2ZW50cyA6XG4gICAgKCBCLmJsYWNrYm9hcmQsXG4gICAgICAodXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogQi5QQi5zdGVwX2lkIGxpc3RcbiAgICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pXG4gICAgICBsaXN0IClcbiAgICBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBmb3JiaWRkZW5fZXZlbnRzIDpcbiAgICAoQi5QQi5zdGVwX2lkIGxpc3QsIHVwZGF0ZV9vcmRlciBsaXN0KSBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBuZXh0X2Nob2ljZSA6IChCLmJsYWNrYm9hcmQsIHVwZGF0ZV9vcmRlciBsaXN0KSBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBhcHBseV9pbnN0cnVjdGlvbiA6XG4gICAgKCBCLmJsYWNrYm9hcmQsXG4gICAgICB1cGRhdGVfb3JkZXIsXG4gICAgICB1cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3QsXG4gICAgICBCLmJsYWNrYm9hcmRcbiAgICAgICogdXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogcHJvcGFnYXRpb25fY2hlY2sgbGlzdFxuICAgICAgKiBCLmFzc2lnbl9yZXN1bHQgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcblxuICB2YWwgcHJvcGFnYXRlIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrLFxuICAgICAgdXBkYXRlX29yZGVyIGxpc3QsXG4gICAgICBwcm9wYWdhdGlvbl9jaGVjayBsaXN0LFxuICAgICAgQi5ibGFja2JvYXJkXG4gICAgICAqIHVwZGF0ZV9vcmRlciBsaXN0XG4gICAgICAqIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3RcbiAgICAgICogQi5hc3NpZ25fcmVzdWx0IClcbiAgICBCLlBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5lbmRcblxubW9kdWxlIFByb3BhZ2F0aW9uX2hldXJpc3RpYyA6IEJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgOiBCbGFja2JvYXJkLkJsYWNrYm9hcmQgPSBCbGFja2JvYXJkLkJsYWNrYm9hcmRcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBFeGNlcHRpb24ud2FyblxuICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG5cbiAgdHlwZSB1cGRhdGVfb3JkZXIgPVxuICAgIHwgS2VlcF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IERpc2NhcmRfZXZlbnQgb2YgQi5QQi5zdGVwX2lkXG4gICAgfCBDdXRfZXZlbnQgb2YgQi5QQi5zdGVwX2lkXG4gICAgfCBSZWZpbmVfdmFsdWVfYWZ0ZXIgb2YgQi5ldmVudF9jYXNlX2FkZHJlc3MgKiBCLlBCLnByZWRpY2F0ZV92YWx1ZVxuICAgIHwgUmVmaW5lX3ZhbHVlX2JlZm9yZSBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzcyAqIEIuUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBTa2lwXG5cbiAgbGV0IGR1bW15X3VwZGF0ZV9vcmRlciA9IFNraXBcblxuICB0eXBlIHByb3BhZ2F0aW9uX2NoZWNrID1cbiAgICB8IFByb3BhZ2F0ZV91cCBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgUHJvcGFnYXRlX2Rvd24gb2YgQi5ldmVudF9jYXNlX2FkZHJlc3NcblxuICBsZXQgX3ByaW50X291dHB1dCBsb2cgeCA9XG4gICAgaWYgQi5pc19mYWlsZWQgeCB0aGVuXG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiRkFJTEVEXCJcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCB4IHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJR05PUkVEXCJcbiAgICBlbHNlXG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiU1VDQ0VTU1wiXG5cbiAgbGV0IGZvcmNlZF9ldmVudHMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbGlzdCA9IEIuZm9yY2VkX2V2ZW50cyBibGFja2JvYXJkIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKGwsIGluZm8pIC0+XG4gICAgICAgICAgTGlzdC5yZXZfbWFwIChmdW4geCAtPiBLZWVwX2V2ZW50IHgpIChMaXN0LnJldiBsKSwgbCwgaW5mbylcbiAgICAgICAgKExpc3QucmV2IGxpc3QpIClcblxuICBsZXQgZm9yYmlkZGVuX2V2ZW50cyBfcGFyYW10ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IEN1dF9ldmVudCB4KSAoTGlzdC5yZXYgbGlzdClcblxuICBsZXQgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBmaXJzdCBsYXN0IHN1Y2Mgc3RvcCBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsID1cbiAgICBsZXQga19pbml0ID0gZmlyc3QgYmxhY2tib2FyZCBwX2lkIGluXG4gICAgbGV0IGtfZW5kID0gbGFzdCBibGFja2JvYXJkIHBfaWQgaW5cbiAgICBtYXRjaCBrX2luaXQsIGtfZW5kIHdpdGhcbiAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgTm9uZVxuICAgIHwgU29tZSBpLCBTb21lIGogLT5cbiAgICAgIGxldCByZWMgYXV4IGkgbG9nX2luZm8gZXJyb3IgPVxuICAgICAgICBpZiBzdG9wIGkgaiB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgICAgQi5idWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcF9pZCAoQi5idWlsZF9wb2ludGVyIGkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleGlzdCA9XG4gICAgICAgICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgZWlkLCBfdGVzdCwgX2FjdGlvbikgPVxuICAgICAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsX29mX2V2ZW50ID1cbiAgICAgICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGxldmVsX29mX2V2ZW50ID0gbGV2ZWwgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIFNvbWUgZWlkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIHwgU29tZSB0cnVlIHwgU29tZSBmYWxzZSAtPiBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBpIGxvZ19pbmZvIGVycm9yXG5cbiAgbGV0IGdldF9sYXN0X3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBibGFja2JvYXJkIHBfaWQgbGV2ZWwgPVxuICAgIGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgQi5nZXRfbGFzdF9saW5rZWRfZXZlbnRcbiAgICAgIEIuZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCBCLlBCLmRlY19zdGVwX3Nob3J0X2lkXG4gICAgICAoZnVuIGkgaiAtPiBpIDwgailcbiAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcF9pZCBsZXZlbFxuXG4gIGxldCBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBCLmdldF9maXJzdF9saW5rZWRfZXZlbnRcbiAgICAgIEIuZ2V0X2xhc3RfbGlua2VkX2V2ZW50IEIuUEIuaW5jX3N0ZXBfc2hvcnRfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPiBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsXG5cbiAgbGV0IGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudCBmaXJzdCBsYXN0IHN1Y2Mgc3RvcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgZXJyb3IgYmxhY2tib2FyZCBsZXZlbCA9XG4gICAgbGV0IHJlYyBhdXggaSBsb2dfaW5mbyBlcnJvciA9XG4gICAgICBpZiBzdG9wIGkgbGFzdCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4aXN0ID1cbiAgICAgICAgICBCLmlzX3NlbGVjdGVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGkgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBleGlzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsX29mX2V2ZW50ID1cbiAgICAgICAgICAgIEIubGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZXZlbF9vZl9ldmVudCA9IGxldmVsIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgU29tZSBpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4IChzdWNjIGkpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIHwgU29tZSB0cnVlIHwgU29tZSBmYWxzZSAtPiBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBmaXJzdCBsb2dfaW5mbyBlcnJvclxuXG4gIGxldCBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRcbiAgICAgIChCLlBCLnN0ZXBfaWRfb2ZfaW50IChCLmdldF9uX2VpZCBibGFja2JvYXJkKSlcbiAgICAgIEIuUEIuemVyb19zdGVwX2lkIEIuUEIuZGVjX3N0ZXBfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPCBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsZXZlbFxuXG4gIGxldCBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IEIuUEIuemVyb19zdGVwX2lkXG4gICAgICAoQi5QQi5zdGVwX2lkX29mX2ludCAoQi5nZXRfbl9laWQgYmxhY2tib2FyZCkpXG4gICAgICBCLlBCLmluY19zdGVwX2lkXG4gICAgICAoZnVuIGkgaiAtPiBpID4gailcbiAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGV2ZWxcblxuICBsZXQgbmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGJvb2wsIHN0cmluZyA9XG4gICAgICBtYXRjaCBwYXJhbWV0ZXIuQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT4gZmFsc2UsIFwiXCJcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgKCBQYXJhbWV0ZXIuZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfd2Vha19jb21wcmVzc2lvbixcbiAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lIClcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ19zdHJvbmdfY29tcHJlc3Npb24sXG4gICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lIClcbiAgICBpblxuICAgIGxldCAoKSA9IFByaW9yaXR5Lm5fYnJhbmNoIDo9ICFQcmlvcml0eS5uX2JyYW5jaCArIDEgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICBCLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJpbmdcbiAgICAgICAgICAgICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmlvcml0eSA9XG4gICAgICBtYXRjaCBCLlBCLkNJLlBvLksuSC5nZXRfcHJpb3JpdGllcyBwYXJhbWV0ZXIgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZXJyb3IsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJDb21wcmVzc2lvbiBtb2RlIGhhcyB0byBiZWVuIHNlbGVjdGVkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkNvbXByZXNzaW9uIG1vZGUgaGFzIG5vdCBiZWVuIHNlbGVjdGVkXCIpIFByaW9yaXR5LmNhdXNhbFxuICAgIGluXG4gICAgbGV0IG5fcF9pZCA9IEIuZ2V0X25wcmVkaWNhdGVfaWQgYmxhY2tib2FyZCBpblxuICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgbWF0Y2ggcHJpb3JpdHkuUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgfCBQcmlvcml0eS5BbGxfcmVtYWluaW5nX2V2ZW50cyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJBbGxfcmVtYWluaW5nX2V2ZW50cyBzdHJhdGVneSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkFsbCByZW1haW5pbmcgZXZlbnRzIHN0cmF0ZWd5IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIikgKClcbiAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzIC0+IGVycm9yLCAoKVxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50cyAtPiBlcnJvciwgKClcbiAgICBpblxuICAgIGxldCBiZXN0X3BhaXIgeCBhIGIgPVxuICAgICAgbWF0Y2ggeC5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzIC0+XG4gICAgICAgIFRvb2xzLm1heF9wb3NfaW50X25vdF96ZXJvIGEgYlxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgVG9vbHMubWluX3Bvc19pbnRfbm90X3plcm8gYSBiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3VucmVzb2x2ZWRfZXZlbnQgeCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWRcbiAgICAgICAgbGV2ZWwgPVxuICAgICAgbWF0Y2ggeC5Qcmlvcml0eS50cnlfdG9fcmVtb3ZlX2ZpcnN0IHdpdGhcbiAgICAgIHwgUHJpb3JpdHkuTGF0ZV9ldmVudHMgLT5cbiAgICAgICAgKG1hdGNoIHguUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbClcbiAgICAgIHwgUHJpb3JpdHkuRWFybHlfZXZlbnRzIC0+XG4gICAgICAgIChtYXRjaCB4LlByaW9yaXR5LmNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzIHdpdGhcbiAgICAgICAgfCBQcmlvcml0eS5BbGxfcmVtYWluaW5nX2V2ZW50cyAtPlxuICAgICAgICAgIGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgICBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbGlzdCA9XG4gICAgICBpZiBuX3BfaWQgPSAwIHRoZW5cbiAgICAgICAgZXJyb3IsIFtdXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyB0cnlfbGV2ZWwgbGV2ZWxfb3B0IGVycm9yID1cbiAgICAgICAgICBtYXRjaCBsZXZlbF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgICAgICB8IFNvbWUgbGV2ZWwgLT5cbiAgICAgICAgICAgIGxldCByZWMgYXV4IGxldmVsIG5fcF9pZCBzdGVwIGJlc3QgPVxuICAgICAgICAgICAgICBpZiBzdGVwID0gbl9wX2lkIHRoZW5cbiAgICAgICAgICAgICAgICBiZXN0XG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBncmFkZSA9XG4gICAgICAgICAgICAgICAgICBCLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIHN0ZXBcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGF1eCBsZXZlbCBuX3BfaWQgKHN0ZXAgKyAxKVxuICAgICAgICAgICAgICAgICAgKGJlc3RfcGFpciBwcmlvcml0eSBiZXN0IChncmFkZSwgc3RlcCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbiwgcF9pZCA9XG4gICAgICAgICAgICAgIGF1eCBsZXZlbCBuX3BfaWQgMVxuICAgICAgICAgICAgICAgIChCLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIDAgbGV2ZWwsIDApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICB0cnlfbGV2ZWwgKFByaW9yaXR5Lmxvd2VyIGxldmVsKSBlcnJvclxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCBldmVudF9pZCA9XG4gICAgICAgICAgICAgICAgZ2V0X3VucmVzb2x2ZWRfZXZlbnQgcHJpb3JpdHkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBldmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGxldCBsb2cgPSBCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICAgKFwiQW4gZW1wdHkgd2lyZSBoYXMgYmVlbiBzZWxlY3RlZFwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgICAgICAgICAgICAgICAoRmFpbHVyZSBcIkFuIGVtcHR5IHdpcmUgaGFzIGJlZW4gc2VsZWN0ZWRcIikgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiRVJST1IgMjQ5OiAlc1xcblwiXG4gICAgICAgICAgICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgbGV2ZWwpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB0cnlfbGV2ZWwgKFByaW9yaXR5Lmxvd2VyIGxldmVsKSBlcnJvclxuICAgICAgICAgICAgICB8IFNvbWUgZXZlbnRfaWQgLT5cbiAgICAgICAgICAgICAgICBlcnJvciwgWyBEaXNjYXJkX2V2ZW50IGV2ZW50X2lkOyBLZWVwX2V2ZW50IGV2ZW50X2lkIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgdHJ5X2xldmVsIChTb21lIFByaW9yaXR5LmhpZ2hlc3QpIGVycm9yXG4gICAgICApXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxuICBsZXQgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBlaWQsIF8sIF8pID1cbiAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgIFwiRXZlbnQ6ICVpLCBQcmVkaWNhdGU6ICVpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAoQi5wcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIGNhc2UpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBwcm9wYWdhdGVfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBldmVudF9jYXNlX2FkZHJlc3MgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPlxuICAgICAgKCogdGhlIGNhc2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBibGFja2JvYXJkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpXG4gICAgfCBTb21lIHRydWUgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBrbm93IHRoYXQgdGhlIHBhaXIgKHRlc3QvYWN0aW9uKSBjYW4gYmVlbiBleGVjdXRlZCAqKVxuICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sMiA9XG4gICAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYm9vbDIgd2l0aFxuICAgICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAgICgqIFRoZSBibGFja2JvYXJkIGlzIGluY29uc2lzdGVudDogKilcbiAgICAgICAgKCogUG9pbnRlcnMgc2hvdWxkIG5vdCBwb2ludCB0byByZW1vdmVkIGV2ZW50cy4qKVxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcImluY29uc2lzdGVudCBwb2ludGVycyBpbiBibGFja2JvYXJkXCJcbiAgICAgICAgICAgIChGYWlsdXJlIFwiaW5jb25zaXN0ZW50IHBvaW50ZXJzIGluIGJsYWNrYm9hcmRcIikgKClcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcykgKVxuICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX25leHRfc2VpZCwgX25leHRfZWlkLCBuZXh0X3Rlc3QsIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF90ZXN0LCBCLlBCLmlzX3Vua25vd24gbmV4dF9hY3Rpb24gd2l0aFxuICAgICAgICB8IHRydWUsIHRydWUgLT5cbiAgICAgICAgICAoKiBubyB0ZXN0LCBubyBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duIChjYXNlIDEpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQgYnV0IGhhcyBubyB0ZXN0IGFuZCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVmFsdWUgaXMgcHJvcGFnYXRlZCBhZnRlciB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICgqIG5vIHRlc3QsIG5vIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSB2YWx1ZSBhZnRlciB0aGUgbmV4dCBldmVudCopXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlciAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICgqIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAyKTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBubyB0ZXN0LCBidXQgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIk5vdGhpbmcgdG8gYmUgZG9uZVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICgqIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICgqIG5vdGhpbmcgdG8gcHJvcGFnYXRlIGRvd253YXJkKilcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDIgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgICAoKiBubyBhY3Rpb24sIGJ1dCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmVkaWNhdGVfdmFsdWUgbmV4dF90ZXN0IHRoZW4gKFxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uaiA9XG4gICAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMyk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QgYnV0IG5vIGFjdGlvbiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlIG5ldyBwcmVkaWNhdGVfdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29ualxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgYmVmb3JlIGFuZCBhZnRlciBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIG1lZXQgb2YgdGhlIHRlc3QgYW5kIHRoZSB2YWx1ZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMyBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIGNvbmopXG4gICAgICAgICAgICAgICAgOjogUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgKCogdGhlIHRlc3QgYW5kIHRoZSB2YWx1ZSBhcmUgaW5jb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNCk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDQgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgICAoKiBubyBhY3Rpb24sIGJ1dCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIGN1dCB0aGUgZXhwbG9yYXRpb24gKilcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFtdLCBbXSwgQi5mYWlsKVxuICAgICAgICAgIClcbiAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAoKnRoZXJlIGlzIGEgdGVzdCBhbmQgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZWRpY2F0ZV92YWx1ZSBuZXh0X3Rlc3QgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGFyZSBjb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25qID1cbiAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA1KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZSBuZXcgcHJlZGljYXRlX3ZhbHVlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGNvbmpcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIGJlZm9yZSB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIGFuIGFjdGlvbiBhbmQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgbWVldCBvZiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGJlZm9yZSB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgKCogdGVzdCBhbmQgdmFsdWUgYXJlIGluY29tcGF0aWJsZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDYpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCwgYSB0ZXN0LCBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDYgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgICAoKiBhbiBhY3Rpb24gYW5kIGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgY3V0IHRoZSBleHBsb3JhdGlvbiAqKVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICAgKSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfbmV4dF9zZWlkLCBuZXh0X2VpZCwgbmV4dF90ZXN0LCBuZXh0X2FjdGlvbikgPVxuICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfYWN0aW9uIHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBuZXh0X3Rlc3Qgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgKCp0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNyk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBubyB0ZXN0LCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgYW5kIGJlZm9yZSB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcXG5cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNyBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICgqdGhlcmUgaXMgbm8gdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIG5leHRfdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICgqIHRlc3QgYW5kIHByZWRpY2F0ZV92YWx1ZSBhcmUgY29tcGF0aWJsZSAqKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgOCk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgaXMgcHJvcGFnYXRlZCBhZnRlciBhbmQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgOSk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKCVpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgbmV4dF9laWQpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDkgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICgqIHdlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBEaXNjYXJkX2V2ZW50IG5leHRfZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkpXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiB0aGVyZSBpcyBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICBpZiBub3QgKEIuUEIuY29tcGF0aWJsZSBuZXh0X2FjdGlvbiBwcmVkaWNhdGVfdmFsdWUpIHRoZW4gKFxuICAgICAgICAgICAgKCogdGhlIGFjdGlvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEwKTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIGFjdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIGNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKnRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfdGVzdCB3aXRoXG4gICAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTEpOlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBubyB0ZXN0LCBidXQgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMTEgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSBqb2luIG9mIHRoZSB2YWx1ZSBhbmQgdGhlIGFjdGlvbiBhZnRlciB0aGUgbmV4dCBldmVudCopXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBuZXh0X3Rlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAxMik6XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgaXMgcHJvcGFnYXRlZCBhZnRlciB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMlxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlclxuICAgICAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEzKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50ICglaSkgaXMgZGlzY2FyZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIG5leHRfZWlkKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMTNcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHdlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgbmV4dF9laWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkpKVxuXG4gIGxldCByZWMgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcHJlZGljYXRlX3ZhbHVlIGV2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPiBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgfCBTb21lIHRydWUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgX3Rlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJldmlld19jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2Nhc2VfdmFsdWUgPVxuICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZXZpZXdfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIHByZXZpZXdfY2FzZV92YWx1ZVxuICAgICAgICBpblxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgICAgICAgQi5pc19ib3VuZGFyeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSAxIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIG5vdCAoQi5QQi5pc191bmRlZmluZWQgcHJlZGljYXRlX3ZhbHVlKSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSAyIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgKVxuICAgICAgKSBlbHNlIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDMgbG9nX2luZm8gaW5cbiAgICAgICAgZXJyb3IsIHRydWUsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICApXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIF9laWQsIF90ZXN0LCBhY3Rpb24pID1cbiAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgZXJyb3IsIGZhbHNlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJldmlld19jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2Nhc2VfdmFsdWUgPVxuICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZXZpZXdfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIHByZXZpZXdfY2FzZV92YWx1ZVxuICAgICAgICBpblxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWUgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSA0IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgKVxuICAgICAgKVxuXG4gIGxldCBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgYWRkcmVzcyA9XG4gICAgaWYgQi5QQi5pc191bmtub3duIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgZWxzZVxuICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgYWRkcmVzc1xuXG4gIGxldCBsYXN0X2NoYW5jZV91cCA9XG4gICAgaWYgbG9va191cF9mb3JfYmV0dGVyX2N1dCB0aGVuXG4gICAgICBsYXN0X2NoYW5jZV91cFxuICAgIGVsc2VcbiAgICAgIGZ1biBfIF8gbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBfIF8gLT5cbiAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IHByb3BhZ2F0ZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBldmVudF9jYXNlX2FkZHJlc3MgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPlxuICAgICAgKCogdGhlIGNhc2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBibGFja2JvYXJkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpXG4gICAgfCBTb21lIHRydWUgLT5cbiAgICAgICgqIHdlIGtub3cgdGhhdCB0aGUgcGFpciAodGVzdC9hY3Rpb24pIGhhcyBiZWVuIGV4ZWN1dGVkICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIF9laWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICBpZiBCLlBCLmlzX3Vua25vd24gYWN0aW9uIHRoZW5cbiAgICAgICAgKCogbm8gYWN0aW9uLCB3ZSBrZWVwIG9uIHByb3BhZ2F0aW5nIHdpdGggdGhlIGNvbmpvbmN0aW9uIG9mIHRoZSB0ZXN0IG9mIHRoZSB2YWx1ZSAqKVxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ZhbHVlID1cbiAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0ZXN0IHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxKTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgbmV3X3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld192YWx1ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDIpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgIClcbiAgICAgIGVsc2UgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgIGlmIEIuUEIuaXNfdW5kZWZpbmVkIHRlc3QgdGhlbiAoXG4gICAgICAgICAgKCp0aGUgd2lyZSBoYXMganVzdCBiZSBjcmVhdGVkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDMpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiTm90aGluZyB0byBiZSBkb25lXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAzIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcykgKVxuICAgICAgICApIGVsc2UgaWZcbiAgICAgICAgICAgICgqd2Uga25vdyB0aGF0IHRoZSB3aXJlIHdhcyBkZWZpbmVkIGJlZm9yZSopXG4gICAgICAgICAgICBCLlBCLmNvbXBhdGlibGUgdGVzdCBCLlBCLmRlZmluZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGF0ZSA9XG4gICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdCBCLlBCLmRlZmluZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNCk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA0IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgc3RhdGUpXG4gICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA1KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgNSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKlRoZSBldmVudCBoYXMgdG8gYmUgZGlzY2FyZGVkIHdoaWNoIGlzIGFic3VyZCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDYpOlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDYgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICApXG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBwYWlyICh0ZXN0L2FjdGlvbikgaGFzIGJlZW4gZXhlY3V0ZWQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgZWlkLCB0ZXN0LCBhY3Rpb24pID1cbiAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gdGVzdCB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgbmVpdGhlciBhIHRlc3QsIG5vciAgYWN0aW9uIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA3IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA4KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSAgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgOSk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhICB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkV2ZW50IGJlZm9yZSAoJWkpIGlzIGRpc2NhcmRlZFwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSlcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTApOlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgaXMgdGhlIG9ubHkgb3Bwb3J0dW5pdHkgdG8gc2V0IHVwIHRoZSB3aXJlLCB3ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBrZWVwIHRoZSBldmVudFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIEtlZXBfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIEIuUEIuaXNfdW5rbm93biB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDExKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvbiwgYnV0IG5vIHRlc3RcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTEgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBuZXdfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSB0ZXN0IHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5ld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbmV3X3Rlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEyKTpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRfY2FzZV9hZGRyZXNzLCBuZXdfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxMyk6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzY2FyZCB0aGUgZXZlbnQgYmVmb3JlICglaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDEzXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXYnID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5kaXNqdW5jdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSB0ZXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNCk6XCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldidcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTRcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmV2JylcbiAgICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTUpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgbWF5YmUgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJEaXNjYXJkIHRoZSBldmVudCBiZWZvcmUgKCVpKVwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTUgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTYpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJldmlvdXMgd2lyZSBzdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiU2VsZWN0IHRoZSBldmVudCBiZWZvcmUgKCVpKVwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBLZWVwX2V2ZW50IGVpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTcpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNyBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICkpXG5cbiAgbGV0IHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNoZWNrXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBtYXRjaCBjaGVjayB3aXRoXG4gICAgfCBQcm9wYWdhdGVfdXAgeCAtPlxuICAgICAgcHJvcGFnYXRlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgeFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBQcm9wYWdhdGVfZG93biB4IC0+XG4gICAgICBwcm9wYWdhdGVfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHhcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuXG4gIGxldCBjdXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBjYXNlXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICAoKiB3ZSByZW1vdmUgdGhlIGNhc2UgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgcmVzdWx0KSA9XG4gICAgICBCLnJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoQi5leGlzdCBjYXNlKVxuICAgICAgICAoQi5ib29sZWFuIChTb21lIGZhbHNlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gY2FzZSlcbiAgICAgICAgICBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIG5leHQgb2YgdGhlIHByZXZpb3VzIGV2ZW50ICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5wb2ludGVyX3RvX25leHQgcG9pbnRlcl9wcmV2aW91cylcbiAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfbmV4dCkgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBwcmV2aW91cyBvZiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIub3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKEIucG9pbnRlcl90b19wcmV2aW91cyBwb2ludGVyX25leHQpXG4gICAgICAgICAgKEIucG9pbnRlciBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIClcblxuICBsZXQgbG9va19kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJvcGFnYXRlX2xpc3QgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBfLCBfLCBhY3Rpb24pID1cbiAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcm9wYWdhdGVfbGlzdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxpc3RfdmFsdWVzID0gQi5QQi53ZWFrZW5pbmcgYWN0aW9uIGluXG4gICAgICBsZXQgcHJvcGFnYXRlX2xpc3QsIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAocHJvcGFnYXRlX2xpc3QsIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgdmFsdWUgLT5cbiAgICAgICAgICAgIGxldCByZWMgYXV4IGNhc2UgYm9vbCBlcnJvciBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGxldCBjYSA9IEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBjYXNlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIHByZWRpY2F0ZV92YWx1ZSB2YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX25leHQgPVxuICAgICAgICAgICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDEgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggUHJvcGFnYXRlX3VwIHBvaW50ZXJfbmV4dCA6OiBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIClcbiAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXh0X2Nhc2UgPVxuICAgICAgICAgICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhpc3QgPVxuICAgICAgICAgICAgICAgICAgQi5leGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9jYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgfCBTb21lIGZhbHNlIC0+IGF1eCBuZXh0X2Nhc2UgYm9vbCBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIF8sIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dF9jYXNlXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgbmV4dF9hY3Rpb24gdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9sb29rX2Rvd25fY2FzZSAzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGF1eCBuZXh0X2Nhc2UgdHJ1ZSBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhdXggbmV4dF9jYXNlIGJvb2wgZXJyb3IgbG9nX2luZm9cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBjYXNlIGZhbHNlIGVycm9yIGxvZ19pbmZvKVxuICAgICAgICAgIChwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgIGxpc3RfdmFsdWVzXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcm9wYWdhdGVfbGlzdFxuICAgIClcblxuICBsZXQgbG9va19kb3duID1cbiAgICBpZiBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgdGhlblxuICAgICAgbG9va19kb3duXG4gICAgZWxzZVxuICAgICAgZnVuIF8gXyBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3QgXyAtPlxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdFxuXG4gIGxldCByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgY2FzZV9hZGRyZXNzID0gQi52YWx1ZV9hZnRlciBhZGRyZXNzIGluXG4gICAgbGV0IHN0YXRlID0gQi5zdGF0ZSB2YWx1ZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBzdGF0ZSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCByZXN1bHQpXG4gICAgZWxzZSBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCByZXN1bHQpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICBQcm9wYWdhdGVfdXAgYWRkcmVzcyA6OiBQcm9wYWdhdGVfZG93biBhZGRyZXNzIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHJlc3VsdClcbiAgICApXG5cbiAgbGV0IHJlZmluZV92YWx1ZV9iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgaW5cbiAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcG9pbnRlcl9wcmV2aW91cyB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG5cbiAgbGV0IGRpc2NhcmRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBjYXNlXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICAoKiB3ZSByZW1vdmUgdGhlIGNhc2UgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgcmVzdWx0KSA9XG4gICAgICBCLnJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoQi5leGlzdCBjYXNlKVxuICAgICAgICAoQi5ib29sZWFuIChTb21lIGZhbHNlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNhID0gQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGNhc2UgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIHBvaW50ZXJfcHJldmlvdXMgcHJlZGljYXRlX3ZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQnIHRoZW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0J1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoXywgZXZlbnQsIF8sIF8pID1cbiAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZXZlbnRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIGNhc2UgbGV2ZWwpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBuZXh0IG9mIHRoZSBwcmV2aW91cyBldmVudCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIucG9pbnRlcl90b19uZXh0IHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfbmV4dCkgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICAoKiB3ZSBwbHVnIHBvaW50ZXIgcHJldmlvdXMgb2YgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLnBvaW50ZXJfdG9fcHJldmlvdXMgcG9pbnRlcl9uZXh0KVxuICAgICAgICAgICAgKEIucG9pbnRlciBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIFByb3BhZ2F0ZV91cCBwb2ludGVyX25leHQgOjogUHJvcGFnYXRlX2Rvd24gcG9pbnRlcl9wcmV2aW91c1xuICAgICAgICAgIDo6IFByb3BhZ2F0ZV91cCBwb2ludGVyX3ByZXZpb3VzIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0ID1cbiAgICAgICAgICBsb29rX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcm9wYWdhdGVfbGlzdFxuICAgICAgICAgICAgY2FzZVxuICAgICAgICBpblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgICAgKVxuICAgIClcblxuICBsZXQga2VlcF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgKCogd2Uga2VlcCB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgdHJ1ZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbXSwgW10pLCByZXN1bHRcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLCByZXN1bHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIF9wb2ludGVyX25leHQgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIF8sIHJlc3VsdCcpID1cbiAgICAgICAgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgICAgICB0ZXN0IGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JycpID1cbiAgICAgICAgcmVmaW5lX3ZhbHVlX2FmdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgIGFjdGlvbiBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgICBpblxuICAgICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0JyB8fCBCLmlzX2ZhaWxlZCByZXN1bHQnJyB0aGVuXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIEIuZmFpbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsZXZlbCA9XG4gICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgY2FzZSBsZXZlbClcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICAgICAgICBQcm9wYWdhdGVfdXAgY2FzZSA6OiBQcm9wYWdhdGVfZG93biBjYXNlXG4gICAgICAgICAgOjogUHJvcGFnYXRlX2Rvd24gcG9pbnRlcl9wcmV2aW91cyA6OiBQcm9wYWdhdGVfdXAgcG9pbnRlcl9wcmV2aW91c1xuICAgICAgICAgIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgICApXG4gICAgKVxuXG4gIGxldCBrZWVwX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN1Y2Nlc3MpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmlzX2V4aXN0X2V2ZW50IHN0ZXBfaWQpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgdHJ1ZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBzdWNjZXNzKVxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19zZWxlY3RlZF9ldmVudHMgbG9nX2luZm8gaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIldlIGtlZXAgZXZlbnQgJWlcIlxuICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEIubl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIEIuY2FzZV9saXN0X29mX2VpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBsIHggc3VjY2VzcyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHgsIHN1Y2Nlc3NcbiAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICBsZXQgeSwgc3VjY2VzczIgPSBrZWVwX2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgdCB4IGluXG4gICAgICAgICAgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MyIHRoZW5cbiAgICAgICAgICAgIGF1eCBxIHkgc3VjY2Vzc1xuICAgICAgICAgIGVsc2UgaWYgQi5pc19zdWNjZWVkZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzMlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHksIHN1Y2Nlc3MyXG4gICAgICBpblxuICAgICAgbGV0ICggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLFxuICAgICAgICAgICAgc3VjY2VzcyApID1cbiAgICAgICAgYXV4IGxpc3RcbiAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdClcbiAgICAgICAgICBCLmlnbm9yZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBzdWNjZXNzKVxuICAgIClcblxuICBsZXQgZ2VuX2V2ZW50IGZfY2FzZSBnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN1Y2Nlc3MpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmlzX2V4aXN0X2V2ZW50IHN0ZXBfaWQpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCBzdWNjZXNzIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFtdLCBbXSwgc3VjY2VzcylcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCBzdWNjZXNzIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBzdWNjZXNzKVxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiV2UgcmVtb3ZlIGV2ZW50ICVpXCJcbiAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgc3RlcF9pZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2dfaW5mbyA9IGcgbG9nX2luZm8gaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBCLm5fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGxldmVsKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgQi5jYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGwgeCBzdWNjZXNzID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4geCwgc3VjY2Vzc1xuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCB5LCBzdWNjZXNzMiA9IGZfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciB0IHggaW5cbiAgICAgICAgICBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzXG4gICAgICAgICAgZWxzZSBpZiBCLmlzX3N1Y2NlZWRlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3MyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeSwgc3VjY2VzczJcbiAgICAgIGluXG4gICAgICBsZXQgKCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksXG4gICAgICAgICAgICBzdWNjZXNzICkgPVxuICAgICAgICBhdXggbGlzdFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KVxuICAgICAgICAgIEIuaWdub3JlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgKVxuXG4gIGxldCBjdXRfZXZlbnQgPSBnZW5fZXZlbnQgY3V0X2Nhc2UgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfY3V0X2V2ZW50c1xuXG4gIGxldCBkaXNjYXJkX2V2ZW50ID1cbiAgICBnZW5fZXZlbnQgZGlzY2FyZF9jYXNlIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX3JlbW92ZWRfZXZlbnRzXG5cbiAgbGV0IGFwcGx5X2luc3RydWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaW5zdHJ1Y3Rpb25cbiAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIG1hdGNoIGluc3RydWN0aW9uIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAga2VlcF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgQ3V0X2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIGN1dF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgRGlzY2FyZF9ldmVudCBzdGVwX2lkIC0+XG4gICAgICBkaXNjYXJkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBSZWZpbmVfdmFsdWVfYWZ0ZXIgKGFkZHJlc3MsIHZhbHVlKSAtPlxuICAgICAgcmVmaW5lX3ZhbHVlX2FmdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzc1xuICAgICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBSZWZpbmVfdmFsdWVfYmVmb3JlIChhZGRyZXNzLCB2YWx1ZSkgLT5cbiAgICAgIHJlZmluZV92YWx1ZV9iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFNraXAgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLmlnbm9yZSlcblxuICBsZXQgX2tlZXAgeCA9IEtlZXBfZXZlbnQgeFxuZW5kXG4iLCIoKipcbiAgKiBnZW5lcmljX2JyYW5jaF9hbmRfY3VwX3NvbHZlci5tbFxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyOS8wOC8yMDExXG4gICogTGFzdCBtb2RpZmljYXRpb246IDE5LzA3LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgbG9nX3N0ZXBzID0gZmFsc2VcblxubW9kdWxlIHR5cGUgU29sdmVyID0gc2lnXG4gIG1vZHVsZSBQSCA6IFByb3BhZ2F0aW9uX2hldXJpc3RpY3MuQmxhY2tib2FyZF93aXRoX2hldXJpc3RpY1xuXG4gIHZhbCBjb21wcmVzcyA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC51cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIFBILkIuYmxhY2tib2FyZCAqIFBILkIuYXNzaWduX3Jlc3VsdCAqIFBILkIucmVzdWx0IGxpc3QgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILkIuUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBmaWx0ZXIgOlxuICAgICggUEguQi5ibGFja2JvYXJkLFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QsXG4gICAgICBQSC5CLmJsYWNrYm9hcmQgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzdWIgOiAoVHJhY2UudCwgUEguQi5ibGFja2JvYXJkKSBQSC5CLlBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgY2xlYW4gOiAoUEguQi5ibGFja2JvYXJkLCBQSC5CLmJsYWNrYm9hcmQpIFBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIHRyYW5zbGF0ZSA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIFRyYWNlLnQgKiBQSC5CLnJlc3VsdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHRyYW5zbGF0ZV9yZXN1bHQgOiBQSC5CLnJlc3VsdCAtPiBUcmFjZS50XG5lbmRcblxubW9kdWxlIFNvbHZlciA9IHN0cnVjdFxuICBtb2R1bGUgUEggPSBQcm9wYWdhdGlvbl9oZXVyaXN0aWNzLlByb3BhZ2F0aW9uX2hldXJpc3RpY1xuICAoKkJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMqKVxuXG4gIGxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBwb3Mgfm1lc3NhZ2UgZXhuIGRlZmF1bHRcblxuICBsZXQgX2NvbWJpbmVfb3V0cHV0IG8xIG8yID1cbiAgICBpZiBQSC5CLmlzX2lnbm9yZWQgbzIgdGhlblxuICAgICAgbzFcbiAgICBlbHNlXG4gICAgICBvMlxuXG4gIGxldCByZWMgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmQgPVxuICAgIGxldCBib29sLCBsb2dfaW5mbyA9IFBILkIudGljayBsb2dfaW5mbyBpblxuICAgIGxldCBfID1cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmR1bXBfY29tcGxldGVfbG9nXG4gICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGxvZ19pbmZvXG4gICAgaW5cbiAgICBtYXRjaCBpbnN0cnVjdGlvbl9saXN0IHdpdGhcbiAgICB8IHQgOjogcSAtPlxuICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgYXNzaWduX3Jlc3VsdCkgKSA9XG4gICAgICAgIFBILmFwcGx5X2luc3RydWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdCBxXG4gICAgICAgICAgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBhc3NpZ25fcmVzdWx0IHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgYXNzaWduX3Jlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgICAgICBwcm9wYWdhdGVfbGlzdCBibGFja2JvYXJkXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIHByb3BhZ2F0ZV9saXN0IHdpdGhcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBhc3NpZ25fcmVzdWx0KSApID1cbiAgICAgICAgICBQSC5wcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0XG4gICAgICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHFcbiAgICAgICAgaW5cbiAgICAgICAgaWYgUEguQi5pc19mYWlsZWQgYXNzaWduX3Jlc3VsdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgYXNzaWduX3Jlc3VsdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpbnN0cnVjdGlvbl9saXN0XG4gICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCBibGFja2JvYXJkXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFBILkIuc3VjY2VzcykpXG5cbiAgdHlwZSBjaG9pY2VzID0ge1xuICAgIGN1cnJlbnQ6IFBILnVwZGF0ZV9vcmRlciBsaXN0O1xuICAgIHN0YWNrOiBQSC51cGRhdGVfb3JkZXIgbGlzdCBsaXN0O1xuICB9XG5cbiAgbGV0IGJyYW5jaF9jaG9pY2VfbGlzdCBjaG9pY2VfbGlzdCA9XG4gICAgeyBjdXJyZW50ID0gW107IHN0YWNrID0gY2hvaWNlX2xpc3QuY3VycmVudCA6OiBjaG9pY2VfbGlzdC5zdGFjayB9XG5cbiAgbGV0IHVwZGF0ZV9jdXJyZW50IGNob2ljZV9saXN0IGxpc3QgPSB7IGNob2ljZV9saXN0IHdpdGggY3VycmVudCA9IGxpc3QgfVxuXG4gIGxldCBwb3BfbmV4dF9jaG9pY2UgcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIHN0YWNrID1cbiAgICBtYXRjaCBzdGFjay5jdXJyZW50IHdpdGhcbiAgICB8IHQgOjogcSAtPiBlcnJvciwgKHQsIHsgc3RhY2sgd2l0aCBjdXJyZW50ID0gcSB9KVxuICAgIHwgW10gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJFbXB0eSBjaG9pY2Ugc3RhY2tcIlxuICAgICAgICAoRmFpbHVyZSBcIkVtcHR5IGNob2ljZSBsaXN0IGluIHBvcF9uZXh0X2Nob2ljZVwiKVxuICAgICAgICAoUEguZHVtbXlfdXBkYXRlX29yZGVyLCBzdGFjaylcblxuICBsZXQgbm9fbW9yZV9jaG9pY2Ugc3RhY2sgPVxuICAgIG1hdGNoIHN0YWNrLmN1cnJlbnQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBiYWNrdHJhY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdCA9XG4gICAgbGV0IHJlYyBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3QgPVxuICAgICAgbWF0Y2ggY2hvaWNlX2xpc3QuY3VycmVudCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBjaG9pY2VfbGlzdC5zdGFjayB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgTm9uZSlcbiAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICBsZXQgY2hvaWNlX2xpc3QgPSB7IGN1cnJlbnQgPSB0OyBzdGFjayA9IHEgfSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgUEguQi5yZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3QpXG4gICAgICB8IF8gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgU29tZSBjaG9pY2VfbGlzdClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUEguQi5yZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcblxuICBsZXQgZW1wdHlfY2hvaWNlX2xpc3QgPSB7IHN0YWNrID0gW107IGN1cnJlbnQgPSBbXSB9XG5cbiAgbGV0IHJlYyBzdWJsaXN0IGwgbCcgPVxuICAgIG1hdGNoIGwsIGwnIHdpdGhcbiAgICB8IFtdLCBfIC0+IHRydWVcbiAgICB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IHN1Ymxpc3QgdCB0J1xuICAgIHwgXywgX2gnIDo6IHQnIC0+IHN1Ymxpc3QgbCB0J1xuXG4gIGxldCBzb3J0X3N0b3JpZXNfYWNjb3JkaW5nX3RvX2xlbmd0aCBsID1cbiAgICBMaXN0LnJldl9tYXAgZnN0XG4gICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAoZnVuIChfLCBhKSAoXywgYikgLT4gY29tcGFyZSBiIGEpXG4gICAgICAgICAoTGlzdC5yZXZfbWFwIChmdW4gYSAtPiBhLCBMaXN0Lmxlbmd0aCBhKSBsKSlcblxuICBsZXQgZmlsdGVyX291dF9ub25fbWluaW1hbF9zdG9yeSBsID1cbiAgICBsZXQgcmVjIGF1eCB0b192aXNpdCBnb29kb25lcyA9XG4gICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGdvb2RvbmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBhdXhcbiAgICAgICAgICAoTGlzdC5maWx0ZXIgKGZ1biBzdG9yeSAtPiBub3QgKHN1Ymxpc3QgaCBzdG9yeSkpIHQpXG4gICAgICAgICAgKGggOjogTGlzdC5maWx0ZXIgKGZ1biBzdG9yeSAtPiBub3QgKHN1Ymxpc3QgaCBzdG9yeSkpIGdvb2RvbmVzKVxuICAgIGluXG4gICAgYXV4IChzb3J0X3N0b3JpZXNfYWNjb3JkaW5nX3RvX2xlbmd0aCBsKSBbXVxuXG4gIGxldCByZWMgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICBzdG9yeV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIFBILkIuaXNfbWF4aW1hbF9zb2x1dGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBib29sIHRoZW4gKFxuICAgICAgKCogU1VDQ0VTUyAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIFBILkIudHJhbnNsYXRlX2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuUEIuQ0kuUG8uSy5ILmdldF9hbGxfc3Rvcmllc19wZXJfb2JzIHBhcmFtZXRlciB0aGVuIChcbiAgICAgICAgbGV0IHN0b3J5X2xpc3QgPSBsaXN0IDo6IHN0b3J5X2xpc3QgaW5cbiAgICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgICAgaWYgY2hvaWNlX2xpc3QuY3VycmVudCA8PiBbXSB0aGVuXG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgIFwiSW4gY2FzZSBvZiBzdWNjZXNzLCB0aGUgY3VycmVudCBsaXN0IG9mIGNob2ljZXMgc2hvdWxkIGJlIFxcXG4gICAgICAgICAgICAgICAgIGVtcHR5XCJcbiAgICAgICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICAgICAgXCJJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyBzaG91bGQgYmUgXFxcbiAgICAgICAgICAgICAgICAgIGVtcHR5XCIpICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VfbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggY2hvaWNlX2xpc3Quc3RhY2sgd2l0aFxuICAgICAgICAgIHwgW10gLT4gY2hvaWNlX2xpc3RcbiAgICAgICAgICB8IHQgOjogcSAtPiB7IGN1cnJlbnQgPSB0OyBzdGFjayA9IHEgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgY2hvaWNlX2xpc3QpID1cbiAgICAgICAgICBiYWNrdHJhY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjaG9pY2VfbGlzdCB3aXRoXG4gICAgICAgIHwgU29tZSBjaG9pY2VfbGlzdCAtPlxuICAgICAgICAgIGl0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuICAgICAgICAgICAgc3RvcnlfbGlzdCAoKih1cGRhdGVfZmlyc3Rfc3RvcnkgZmlyc3Rfc3RvcnkgbGlzdCkqKVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBQSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBcIkZBSUxcIiAhUHJpb3JpdHkubl9zdG9yeSAhUHJpb3JpdHkubl9icmFuY2ggYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RvcnlfbGlzdClcbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbIGxpc3QgXSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBjaG9pY2VfbGlzdCA9XG4gICAgICAgIGlmIG5vX21vcmVfY2hvaWNlIGNob2ljZV9saXN0IHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgIFBILm5leHRfY2hvaWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB1cGRhdGVfY3VycmVudCBjaG9pY2VfbGlzdCBsaXN0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBjaG9pY2VfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCAoY2hvaWNlLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICBwb3BfbmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgY2hvaWNlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0KSA9XG4gICAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBbIGNob2ljZSBdIFtdIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICAgIGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNob2ljZV9saXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGNob2ljZV9saXN0IC0+XG4gICAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgICAgICBzdG9yeV9saXN0XG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdG9yeV9saXN0KVxuICAgICAgKSBlbHNlXG4gICAgICAgIGl0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChicmFuY2hfY2hvaWNlX2xpc3QgY2hvaWNlX2xpc3QpXG4gICAgICAgICAgc3RvcnlfbGlzdFxuICAgIClcblxuICBsZXQgZGV0ZWN0X2luZGVwZW5kZW50X2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBsaXN0X2VpZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9ibGFja2JvYXJkLCBldmVudHNfdG9fa2VlcCkgPVxuICAgICAgUEguQi5jdXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X2VpZFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudHNfdG9fa2VlcFxuXG4gIGxldCB0cmFuc2xhdGUgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3QgPVxuICAgIGxldCBsaXN0JyA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biBrIC0+XG4gICAgICAgICAgKCBQSC5CLmdldF9ldmVudCBibGFja2JvYXJkIChQSC5CLlBCLmRlY19zdGVwX2lkIGspLFxuICAgICAgICAgICAgUEguQi5zaWRlX2VmZmVjdF9vZl9ldmVudCBibGFja2JvYXJkIChQSC5CLlBCLmRlY19zdGVwX2lkIGspICkpXG4gICAgICAgIChMaXN0LnJldiBsaXN0KVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSBMaXN0LnJldl9tYXAgZnN0IChMaXN0LnJldiBsaXN0JykgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChsaXN0LCBsaXN0JylcblxuICBsZXQgdHJhbnNsYXRlX3Jlc3VsdCByZXN1bHQgPSBMaXN0LnJldl9tYXAgZnN0IEBAIExpc3QucmV2IHJlc3VsdFxuXG4gIGxldCBjbGVhbiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkID1cbiAgICBQSC5CLnJlc2V0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZFxuXG4gIGxldCBmaWx0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBldmVudHNfdG9fa2VlcCA9XG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXZlbnRzX3RvX3JlbW92ZSA9XG4gICAgICBsZXQgbl9ldmVudHMgPSBQSC5CLmdldF9uX2VpZCBibGFja2JvYXJkIGluXG4gICAgICBsZXQgcmVjIGF1eCBrIGxpc3Qgc29sID1cbiAgICAgICAgaWYgayA9IG5fZXZlbnRzIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBzb2xcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGlmIFBILkIuUEIuaW50X29mX3N0ZXBfaWQgdCA9IGsgdGhlblxuICAgICAgICAgICAgICBhdXggKGsgKyAxKSBxIHNvbFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggKGsgKyAxKSBsaXN0IChQSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogc29sKVxuICAgICAgICAgIHwgW10gLT4gYXV4IChrICsgMSkgbGlzdCAoUEguQi5QQi5zdGVwX2lkX29mX2ludCBrIDo6IHNvbClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwIGV2ZW50c190b19rZWVwIFtdXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBmb3JiaWRkZW5fZXZlbnRzID1cbiAgICAgIFBILmZvcmJpZGRlbl9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRzX3RvX3JlbW92ZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiU3RhcnQgY3V0dGluZ1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBfb3V0cHV0KSA9XG4gICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZm9yYmlkZGVuX2V2ZW50cyBbXSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgc3ViIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRvX2tlZXAgPVxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUEguQi5pbXBvcnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdG9fa2VlcFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fdGltZSBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGNvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdF9vcmRlciA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbG9nX3N0ZXBzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCJBZnRlciBDYXVzYWwgQ3V0ICAlaVwiXG4gICAgICAgICAgICAoUEguQi5nZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0KSA9XG4gICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdF9vcmRlciBbXSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBQSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQWZ0ZXIgb2JzZXJ2YWJsZSBwcm9wYWdhdGlvbiAgRkFJTCAlaSBALlwiXG4gICAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQsIFtdKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQWZ0ZXIgb2JzZXJ2YWJsZSBwcm9wYWdhdGlvbiAgJWkgQC5cIlxuICAgICAgICAgICAgICAoUEguQi5nZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGJvb2wsIHN0cmluZyA9XG4gICAgICAgIG1hdGNoIHBhcmFtZXRlci5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+IGZhbHNlLCBcIlwiXG4gICAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3dlYWtGaWxlTmFtZSApXG4gICAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbixcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHNzdHJvbmdGaWxlTmFtZSApXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gUHJpb3JpdHkubl9icmFuY2ggOj0gMSArICghUHJpb3JpdHkubl9icmFuY2ggKyAxKSBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgUEguQi5leHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgc3RyaW5nICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0b3J5X2xpc3QpID1cbiAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVtcHR5X2Nob2ljZV9saXN0IFtdXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgIG1hdGNoIHN0b3J5X2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IFBILkIuZmFpbFxuICAgICAgICB8IF8gLT4gUEguQi5zdWNjZXNzXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIChibGFja2JvYXJkLCBvdXRwdXQsIGZpbHRlcl9vdXRfbm9uX21pbmltYWxfc3RvcnkgKExpc3QucmV2IHN0b3J5X2xpc3QpKVxuICAgICAgKVxuICAgIClcbmVuZFxuIiwiKCoqXG4gICogYmxhY2tfbGlzdC5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTAyLTE0IDEwOjI5OjQyIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xNCAxMDo1MDo1NyBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNlxuICAqICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW5cbiAgKiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5XG4gICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBFdmVudCA9IHNpZ1xuICB0eXBlIGV2ZW50XG4gIHR5cGUgZWlkXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBrZXlfb2ZfZXZlbnQgOiBldmVudCAtPiBlaWQgb3B0aW9uXG4gIHZhbCBpbml0IDogaW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNldCA6ICdhIHQgLT4gZWlkIC0+ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gZWlkIC0+ICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQmxhY2tsaXN0ID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBFdmVudCA6IEV2ZW50XG5cbiAgdmFsIGluaXQgOiBpbnQgLT4gdFxuICB2YWwgYmxhY2tfbGlzdCA6IEV2ZW50LmV2ZW50IC0+IHQgLT4gdFxuICB2YWwgaXNfYmxhY2tfbGlzdGVkIDogRXZlbnQuZXZlbnQgLT4gdCAtPiBib29sXG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoRXZlbnQgOiBFdmVudClcbiAgLT5cbiAgc3RydWN0XG4gICAgbW9kdWxlIEV2ZW50ID0gRXZlbnRcblxuICAgIHR5cGUgdCA9IGJvb2wgRXZlbnQudFxuXG4gICAgbGV0IGluaXQgbiA9IEV2ZW50LmluaXQgbiBmYWxzZVxuXG4gICAgbGV0IGJsYWNrX2xpc3QgZXZlbnQgdCA9XG4gICAgICBtYXRjaCBFdmVudC5rZXlfb2ZfZXZlbnQgZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlaWQgLT5cbiAgICAgICAgbGV0IHQgPSBFdmVudC5zZXQgdCBlaWQgdHJ1ZSBpblxuICAgICAgICB0XG5cbiAgICBsZXQgaXNfYmxhY2tfbGlzdGVkIGV2ZW50IHQgPVxuICAgICAgbWF0Y2ggRXZlbnQua2V5X29mX2V2ZW50IGV2ZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGVpZCAtPiBFdmVudC5nZXQgdCBlaWRcbiAgZW5kXG4iLCIoKipcbiAgKiBkYWcubWxcbiAgKlxuICAqIERhZyBjb21wdXRhdGlvbiBhbmQgY2Fub25pY2FsIGZvcm1cbiAgKlxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMi8wMy8yMDEyXG4gICogTGFzdCBtb2R4aWZpY2F0aW9uOiAxOC8wNi8yMDEzXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSBTID0gR2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIuU29sdmVyXG5cbmxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICBFeGNlcHRpb24ud2FyblxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuXG5tb2R1bGUgdHlwZSBTdG9yeVRhYmxlID0gc2lnXG4gIHR5cGUgdGFibGVcblxuICB2YWwgZm9sZF90YWJsZSA6XG4gICAgKCAoIFRyYWNlLnQsXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCxcbiAgICAgICAgJ2EsXG4gICAgICAgICdhIClcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudGVybmFyeSxcbiAgICAgIHRhYmxlLFxuICAgICAgJ2EsXG4gICAgICAnYSApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGluaXRfdGFibGUgOiB0YWJsZSBTLlBILkIuUEIuQ0kuUG8uSy5ILnplcm9hcnlcbiAgdmFsIGNvdW50X3N0b3JpZXMgOiB0YWJsZSAtPiBpbnRcblxuICB2YWwgYWRkX3N0b3J5IDpcbiAgICAoIENhdXNhbC5ncmlkLFxuICAgICAgVHJhY2UudCxcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCxcbiAgICAgIHRhYmxlLFxuICAgICAgdGFibGUgKVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucXVhdGVybmFyeVxuXG4gIHZhbCBoYXNoX2xpc3QgOiAodGFibGUsIHRhYmxlKSBTLlBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIHNvcnRfbGlzdCA6XG4gICAgKCB0YWJsZSxcbiAgICAgIChUcmFjZS50XG4gICAgICAqIENhdXNhbC5ncmlkXG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIGxpc3QgKVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcbmVuZFxuXG5tb2R1bGUgSCA9IFMuUEguQi5QQi5DSS5Qby5LLkhcbm1vZHVsZSBBID0gTW9kcy5EeW5BcnJheVxuXG50eXBlIGxhYmVsID0gc3RyaW5nXG50eXBlIG5vZGVfa2luZCA9IE9CUyB8IFBFUlQgfCBSVUxFIHwgSU5JVCB8IEZJQ1RJVElPVVNcbnR5cGUgbm9kZSA9IG5vZGVfa2luZCAqIGxhYmVsXG5cbnR5cGUgZ3JhcGggPSB7XG4gIHJvb3Q6IGludDtcbiAgbGFiZWxzOiBub2RlIEEudDtcbiAgcHJlZDogaW50IGxpc3QgQS50O1xuICBjb25mbGljdF9wcmVkOiBpbnQgbGlzdCBBLnQ7XG59XG5cbmxldCBkdW1teV9ncmFwaCA9XG4gIHtcbiAgICByb290ID0gMDtcbiAgICBsYWJlbHMgPSBBLm1ha2UgMSAoRklDVElUSU9VUywgXCJcIik7XG4gICAgcHJlZCA9IEEubWFrZSAxIFtdO1xuICAgIGNvbmZsaWN0X3ByZWQgPSBBLm1ha2UgMSBbXTtcbiAgfVxuXG50eXBlIHBvc2l0aW9uID0gaW50XG50eXBlIGtleSA9IEZyZXNoIG9mIG5vZGUgfCBGb3JtZXIgb2YgcG9zaXRpb24gfCBTdG9wXG50eXBlIGNhbm9uaWNhbF9mb3JtID0ga2V5IGxpc3RcbnR5cGUgcHJlaGFzaCA9IChub2RlICogaW50KSBsaXN0XG5cbmxldCBfZHVtbXlfY2Fubm9uaWNhbF9mb3JtID0gW11cbmxldCBfZHVtbXlfcHJlaGFzaCA9IFtdXG5cbmxldCBfcHJpbnRfc3RvcnlfaW5mbyBsb2dnZXIgX3BhcmFtZXRlciBqc29uID1cbiAgKCpMaXN0Lml0ZXJcbiAgICAoZnVuXG4gICAgICBzdG9yeV9pbmZvIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICBsb2dnZXJcbiAgICAgICAgICBcImlkOiVpLCB0aW1lOiVmLCBldmVudDolaVwiXG4gICAgICAgICAgc3RvcnlfaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWRcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lXG4gICAgICAgICAgc3RvcnlfaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnRcbiAgICAgIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyXG4gICAgKVxuICAgIHN0b3J5X2luZm9fbGlzdFxuICAqKVxuICBsZXQgY2hhbm5lbF9vcHQgPSBMb2dnZXJzLmNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNoYW5uZWxfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2hhbm5lbCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgY2hhbm5lbCBqc29uIGluXG4gICAgICAoKVxuICBpblxuICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICgpXG5cbmxldCBwcmludF9ncmFwaCBsb2dnZXIgcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGlkIHN0b3J5X2luZm8gZ3JhcGggPVxuICBsZXQgbG9nZ2VyID0gR3JhcGhfbG9nZ2Vyc19zaWcuZXh0ZW5kX2xvZ2dlciBsb2dnZXIgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vyc19zaWcucmVmcmVzaF9pZCBsb2dnZXIgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgXCJzdG9yeVwiIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIChub2RlX2tpbmQsIGopIC0+XG4gICAgICAgIGlmIGkgPSAwICYmIGogPSBcIlwiIHRoZW5cbiAgICAgICAgICAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgICAgICAgICBtYXRjaCBub2RlX2tpbmQgd2l0aFxuICAgICAgICAgICAgfCBPQlMgLT4gWyBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgXVxuICAgICAgICAgICAgfCBQRVJUIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbjtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBSVUxFIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWU7XG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2U7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHwgSU5JVCAtPlxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW47XG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2U7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHwgRklDVElUSU9VUyAtPlxuICAgICAgICAgICAgICBbIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X25vZGUgbG9nZ2VyXG4gICAgICAgICAgICB+ZGlyZWN0aXZlczooR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgaiA6OiBkaXJlY3RpdmVzKVxuICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSlcbiAgICAgICAgKSlcbiAgICAgIGdyYXBoLmxhYmVsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gaiAtPlxuICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlciAoc3RyaW5nX29mX2ludCBqKSAoc3RyaW5nX29mX2ludCBpKSlcbiAgICAgICAgICBsKVxuICAgICAgZ3JhcGgucHJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gaiAtPlxuICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlclxuICAgICAgICAgICAgICB+ZGlyZWN0aXZlczpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkO1xuICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIEdyYXBoX2xvZ2dlcnNfc2lnLlRlZTtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfaW50IGkpIChzdHJpbmdfb2ZfaW50IGopKVxuICAgICAgICAgIGwpXG4gICAgICBncmFwaC5jb25mbGljdF9wcmVkXG4gIGluXG4gIGxldCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBILmdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RvcnlfanNvbi5DYXVzYWxcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGxldCByZXN1bHQgPVxuICAgIHtcbiAgICAgIFN0b3J5X2pzb24ubG9nX2luZm8gPSBzdG9yeV9pbmZvO1xuICAgICAgU3RvcnlfanNvbi5zdG9yeV9tb2RlID0gY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlcjtcbiAgICAgIFN0b3J5X2pzb24uc3RvcnkgPVxuICAgICAgICBTdG9yeV9qc29uLk5ld1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFN0b3J5X2pzb24uZ3JhcGggPSBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaF9vZl9sb2dnZXIgbG9nZ2VyO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5pZDtcbiAgICAgICAgICB9O1xuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gSC5wdXNoX2pzb24gcGFyYW1ldGVyIChTdG9yeV9qc29uLlN0b3J5IHJlc3VsdCkgaW5cbiAgZXJyb3JcblxubGV0IHByaW50X2VsdCBsb2cgZWx0ID1cbiAgbWF0Y2ggZWx0IHdpdGhcbiAgfCBTdG9wIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlNUT1BcIiBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgfCBGb3JtZXIgaSAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQb2ludGVyICVpXCIgaSBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgfCBGcmVzaCAoXywgcykgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiRXZlbnQgJXNcIiBzIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuXG5sZXQgX3ByaW50X2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciBfaGFuZGxlciBlcnJvciBkYWcgPVxuICBsZXQgXyA9IExpc3QuaXRlciAocHJpbnRfZWx0IChILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKSBkYWcgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgZXJyb3JcblxubGV0IF9wcmludF9wcmVoYXNoIHBhcmFtZXRlciBfaGFuZGxlciBlcnJvciByZXByZXNlbnRhdGlvbiA9XG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKChfLCBiKSwgaSkgLT5cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpIFwiJXM6JWksXCIgYiBpKVxuICAgICAgcmVwcmVzZW50YXRpb25cbiAgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgZXJyb3JcblxubGV0IGxhYmVsIGhhbmRsZXIgPSBmdW5jdGlvblxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuUlVMRSBpKSAtPiBILnN0cmluZ19vZl9ydWxlX2lkIGhhbmRsZXIgaVxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuSU5JVCBbIGkgXSkgLT4gSC5zdHJpbmdfb2ZfYWdlbnRfaWQgaGFuZGxlciBpXG4gIHwgQ2F1c2FsLkVWRU5UICgoVHJhY2UuSU5JVCBfIHwgVHJhY2UuUEVSVCBfKSBhcyB4KSAtPlxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFRyYWNlLnByaW50X2V2ZW50X2tpbmQgfmVudjpoYW5kbGVyLkguZW52KSB4XG4gIHwgQ2F1c2FsLk9CUyBuYW1lIC0+IG5hbWVcblxubGV0IGtpbmQgbm9kZSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuSU5JVCBfKSAtPiBJTklUXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5SVUxFIF8pIC0+IFJVTEVcbiAgfCBDYXVzYWwuRVZFTlQgKFRyYWNlLlBFUlQgXykgLT4gUEVSVFxuICB8IENhdXNhbC5PQlMgXyAtPiBPQlNcblxubGV0IGNvbXBhcmVfZWx0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IFN0b3AsIFN0b3AgLT4gMFxuICB8IFN0b3AsIF8gLT4gLTFcbiAgfCBfLCBTdG9wIC0+IDFcbiAgfCBGb3JtZXIgaSwgRm9ybWVyIGogLT4gY29tcGFyZSBpIGpcbiAgfCBGb3JtZXIgXywgXyAtPiAtMVxuICB8IF8sIEZvcm1lciBfIC0+IDFcbiAgfCBGcmVzaCBzLCBGcmVzaCBzJyAtPiBjb21wYXJlIHMgcydcblxubGV0IHF1aWNrX2NvbXBhcmUgZyB0MSB0MiA9IGNvbXBhcmVfZWx0IChnIHQxKSAoZyB0MilcblxubGV0IHJlYyBhdXggY29tcGFyZV9lbHQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgIGxldCBjbXAgPSBjb21wYXJlX2VsdCB0IHQnIGluXG4gICAgaWYgY21wID0gMCB0aGVuXG4gICAgICBhdXggY29tcGFyZV9lbHQgcSBxJ1xuICAgIGVsc2VcbiAgICAgIGNtcFxuXG5sZXQgY29tcGFyZV9jYW5vbmljID0gYXV4IGNvbXBhcmVfZWx0XG5cbmxldCBjb21wYXJlX2Nhbm9uaWNfb3B0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBjb21wYXJlX2Nhbm9uaWMgeCB5XG5cbmxldCBjb21wYXJlX3ByZWhhc2ggPSBhdXggY29tcGFyZVxuXG5sZXQgZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuR3JhcGhfY29udmVyc2lvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBpZHMgPSBIYXNodGJsLmZvbGQgKGZ1biBrZXkgXyBsIC0+IGtleSA6OiBsKSBncmlkLkNhdXNhbC5mbG93IFtdIGluXG4gIGxldCBsYWJlbCA9IGxhYmVsIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uZmlnID1cbiAgICBDYXVzYWwuY3V0XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWRzIGdyaWRcbiAgaW5cbiAgbWF0Y2ggTW9kcy5JbnRNYXAubWF4X2tleSBjb25maWcuQ2F1c2FsLnByZWNfMSB3aXRoXG4gIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGR1bW15X2dyYXBoXG4gIHwgU29tZSBzaXplIC0+XG4gICAgbGV0IHN1Y2Nfc2l6ZSA9IHN1Y2Mgc2l6ZSBpblxuICAgIGxldCBsYWJlbHMgPSBBLm1ha2Ugc3VjY19zaXplIChGSUNUSVRJT1VTLCBcIlwiKSBpblxuICAgIGxldCBwcmVkID0gQS5tYWtlIHN1Y2Nfc2l6ZSBbXSBpblxuICAgIGxldCBjb25mbGljdF9wcmVkID0gQS5tYWtlIHN1Y2Nfc2l6ZSBbXSBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gaSBhdG9tX2tpbmQgLT4gQS5zZXQgbGFiZWxzIGkgKGtpbmQgYXRvbV9raW5kLCBsYWJlbCBhdG9tX2tpbmQpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLmV2ZW50c19raW5kXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIGkgcyAtPlxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBLnNldCBwcmVkIGkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIHMpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLnByZWNfMVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBpZiBNb2RzLkludFNldC5pc19lbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQS5zZXQgY29uZmxpY3RfcHJlZCBpIChNb2RzLkludFNldC5lbGVtZW50cyBzKSlcbiAgICAgICAgY29uZmlnLkNhdXNhbC5jb25mbGljdFxuICAgIGluXG4gICAgbGV0IHJvb3QgPSBzaXplIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5HcmFwaF9jb252ZXJzaW9uIE5vbmUgbG9nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyByb290OyBsYWJlbHM7IHByZWQ7IGNvbmZsaWN0X3ByZWQgfVxuXG5sZXQgY29uY2F0IGxpc3QxIGxpc3QyID1cbiAgbGV0IHJlYyBhdXggbGlzdDEgbGlzdDIgPVxuICAgIG1hdGNoIGxpc3QyIHdpdGhcbiAgICB8IFtdIC0+IGxpc3QxXG4gICAgfCB0IDo6IHEgLT4gYXV4ICh0IDo6IGxpc3QxKSBxXG4gIGluXG4gIGF1eCBsaXN0MiAoTGlzdC5yZXYgbGlzdDEpXG5cbmxldCBjb21wYXJlX25vZGUgKGEsIF8pIChiLCBfKSA9IGNvbXBhcmUgYSBiXG5cbmxldCBzbWFzaCBsID1cbiAgbGV0IHJlYyBhdXggbCBmb3JtZXIgd2VpZ2h0IG91dHB1dCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBMaXN0LnJldiAoKGZvcm1lciwgd2VpZ2h0KSA6OiBvdXRwdXQpXG4gICAgfCAodCwgd3QpIDo6IHEgd2hlbiB0ID0gZm9ybWVyIC0+IGF1eCBxIGZvcm1lciAod3QgKyB3ZWlnaHQpIG91dHB1dFxuICAgIHwgKHQsIHd0KSA6OiBxIC0+IGF1eCBxIHQgd3QgKChmb3JtZXIsIHdlaWdodCkgOjogb3V0cHV0KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8ICh0LCB3dCkgOjogcSAtPiBhdXggcSB0IHd0IFtdXG5cbmxldCBwcmVoYXNoIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgZ3JhcGggPVxuICAoIGVycm9yLFxuICAgIHNtYXNoXG4gICAgICAoTGlzdC5zb3J0IGNvbXBhcmVfbm9kZVxuICAgICAgICAgKGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgQS5pdGVyXG4gICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRklDVElUSU9VUywgXyAtPiAoKVxuICAgICAgICAgICAgICAgIHwgKChPQlMgfCBQRVJUIHwgUlVMRSB8IElOSVQpLCBfKSBhcyBhIC0+IGwgOj0gKGEsIDEpIDo6ICFsKVxuICAgICAgICAgICAgICBncmFwaC5sYWJlbHNcbiAgICAgICAgICBpblxuICAgICAgICAgICFsKSkgKVxuXG5sZXQgY2Fub25pY2FsaXplIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaCA9XG4gIGxldCBhc3NvID0gTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgbGV0IGxhYmVsIGkgPSB0cnkgQS5nZXQgZ3JhcGgubGFiZWxzIGkgd2l0aCBfIC0+IEZJQ1RJVElPVVMsIFwiXCIgaW5cbiAgbGV0IHJlYyBwb3AgKGNhbmRpZGF0ZSA6IGtleSBsaXN0KSAodG9fYmVhdCA6IGtleSBsaXN0IG9wdGlvbikgPVxuICAgIG1hdGNoIGNhbmRpZGF0ZSwgdG9fYmVhdCB3aXRoXG4gICAgfCBbXSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgIFNvbWUgdG9fYmVhdCAoKiBjYW5kaWRhdGUgaXMgYSBwcmVmaXggb2YgdG9fYmVhdCwgd2Ugb3V0cHV0IHRoZSBzdWZmaXggKilcbiAgICB8IF8gOjogXywgU29tZSBbXSAtPiBOb25lICgqIHRoZSBjYW5kaWRhdGUgaXMgd29yc2UgKilcbiAgICB8IHQgOjogcSwgU29tZSAodHIgOjogcXIpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9lbHQgdCB0ciBpblxuICAgICAgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgIFNvbWUgTm9uZSAoKiB0aGUgY2FuZGlkYXRlIGlzIGJldHRlciAqKVxuICAgICAgZWxzZSBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgcG9wIHEgKFNvbWUgcXIpXG4gICAgICAoKiB3ZSBkbyBub3Qga25vdywgd2UgbG9vayBmdXJ0aGVyICopXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICAoKiB0aGUgY2FuZGlkYXRlIGlzIHdvcnNlICopXG4gIGluXG4gIGxldCByZWMgdmlzaXQgKGkgOiBpbnQpIChtYXAgOiBpbnQgTW9kcy5JbnRNYXAudCkgKGZyZXNoX3BvcyA6IGludClcbiAgICAgICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBtYXAgd2l0aFxuICAgIHwgU29tZSBpIC0+XG4gICAgICAoKiB0aGUgbm9kZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4sIHdlIHB1dCBhIHBvaW50ZXIgKilcbiAgICAgICgqMCopXG4gICAgICAobWF0Y2ggcG9wIFsgRm9ybWVyIGkgXSB0b19iZWF0IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiB0byBiZWF0IGlzIGJldHRlciwgd2UgY3V0IHRoZSBjb25zdHJ1Y3Rpb24gKilcbiAgICAgICAgTm9uZVxuICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgKCogdG8gYmVhdCBtYXkgYmUgaW1wcm92ZWQsIHdlIGdvIG9uICopXG4gICAgICAgIFNvbWUgKFsgRm9ybWVyIGkgXSwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXQpKVxuICAgICgqMCopXG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB0aGUgbm9kZSBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZSAqKVxuICAgICAgbGV0IG1hcCA9IE1vZHMuSW50TWFwLmFkZCBpIGZyZXNoX3BvcyBtYXAgaW5cbiAgICAgIGxldCBmcmVzaF9wb3MgPSBmcmVzaF9wb3MgKyAxIGluXG4gICAgICAoKjAqKVxuICAgICAgKG1hdGNoIHBvcCBbIEZyZXNoIChsYWJlbCBpKSBdIHRvX2JlYXQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAodG9fYmVhdCA6IGtleSBsaXN0IG9wdGlvbikgLT5cbiAgICAgICAgKCoxKilcbiAgICAgICAgbGV0IHNpYmJsaW5nMSA9IHRyeSBBLmdldCBncmFwaC5wcmVkIGkgd2l0aCBOb3RfZm91bmQgLT4gW10gaW5cbiAgICAgICAgbGV0IHNpYmJsaW5nMiA9XG4gICAgICAgICAgdHJ5IEEuZ2V0IGdyYXBoLmNvbmZsaWN0X3ByZWQgaSB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGJlc3Rfc2liYmxpbmcgKG0gOiBpbnQgTW9kcy5JbnRNYXAudCkgKGYgOiBpbnQpXG4gICAgICAgICAgICAoY2FuZGlkYXRlcyA6IGludCBsaXN0KSAobm90X2Jlc3QgOiBpbnQgbGlzdClcbiAgICAgICAgICAgICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKVxuICAgICAgICAgICAgKHJlY29yZCA6XG4gICAgICAgICAgICAgIChpbnQgKiAoa2V5IGxpc3QgKiBpbnQgTW9kcy5JbnRNYXAudCAqIGludCAqIGtleSBsaXN0IG9wdGlvbikpXG4gICAgICAgICAgICAgIG9wdGlvbikgPVxuICAgICAgICAgIG1hdGNoIGNhbmRpZGF0ZXMgd2l0aFxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggcmVjb3JkIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgcmVjb3JkIC0+IFNvbWUgKG5vdF9iZXN0LCByZWNvcmQpKVxuICAgICAgICAgICgqMiopXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGxldCByZXAgPSB2aXNpdCB0IG0gZiB0b19iZWF0IGluXG4gICAgICAgICAgICAoKjIqKVxuICAgICAgICAgICAgKG1hdGNoIHJlcCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYmVzdF9zaWJibGluZyBtIGYgcSAodCA6OiBub3RfYmVzdCkgdG9fYmVhdCByZWNvcmRcbiAgICAgICAgICAgIHwgU29tZSAoKGVuY29kaW5nIDoga2V5IGxpc3QpLCBtYXAsIGZyZXNoLCByZXNpZHVlKSAtPlxuICAgICAgICAgICAgICAoKjMqKVxuICAgICAgICAgICAgICBsZXQgKHRvX2JlYXRfYWZ0ZXIgOiBrZXkgbGlzdCBvcHRpb24pID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXNpZHVlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBlbmNvZGluZ1xuICAgICAgICAgICAgICAgIHwgXyAtPiB0b19iZWF0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAobm90X2Jlc3QgOiBpbnQgbGlzdCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlY29yZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IG5vdF9iZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIChiZXN0LCBfKSAtPiBiZXN0IDo6IG5vdF9iZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGJlc3Rfc2liYmxpbmcgbSBmIHEgbm90X2Jlc3QgdG9fYmVhdF9hZnRlclxuICAgICAgICAgICAgICAgIChTb21lICh0LCAoZW5jb2RpbmcsIG1hcCwgZnJlc2gsIHJlc2lkdWUpKSkpXG4gICAgICAgICAgKCozKilcbiAgICAgICAgICAoKjIqKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGF1eCBtIGYgbCBzb2wgdG9fYmVhdCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBTb21lIChtLCBmLCBzb2wsIHRvX2JlYXQpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAoKjIqKVxuICAgICAgICAgICAgKG1hdGNoIGJlc3Rfc2liYmxpbmcgbSBmIGwgW10gdG9fYmVhdCBOb25lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgKG5vdF9iZXN0LCByZWNvcmQpIC0+XG4gICAgICAgICAgICAgIGxldCBfLCAoYmVzdCwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXRfYWZ0ZXIpID0gcmVjb3JkIGluXG4gICAgICAgICAgICAgIGF1eCBtYXAgZnJlc2hfcG9zIG5vdF9iZXN0IChjb25jYXQgc29sIGJlc3QpIHRvX2JlYXRfYWZ0ZXIpXG4gICAgICAgICAgKCoyKilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxpc3QgPSBbIEZyZXNoIChsYWJlbCBpKSBdIGluXG4gICAgICAgICgqMiopXG4gICAgICAgIGxldCBnIHggPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHggbWFwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiBGb3JtZXIgeFxuICAgICAgICAgIHwgTm9uZSAtPiBGcmVzaCAobGFiZWwgeClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNpYmJsaW5nMSA9IExpc3Quc29ydCAocXVpY2tfY29tcGFyZSBnKSBzaWJibGluZzEgaW5cbiAgICAgICAgKG1hdGNoIGF1eCBtYXAgZnJlc2hfcG9zIHNpYmJsaW5nMSBsaXN0IHRvX2JlYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgKG1hcCwgZnJlc2hfcG9zLCBsaXN0LCB0b19iZWF0KSAtPlxuICAgICAgICAgICgqMyopXG4gICAgICAgICAgKG1hdGNoIHBvcCBbIFN0b3AgXSB0b19iZWF0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSB0b19iZWF0IC0+XG4gICAgICAgICAgICAoKjQqKVxuICAgICAgICAgICAgbGV0IGxpc3QgPSBjb25jYXQgbGlzdCBbIFN0b3AgXSBpblxuICAgICAgICAgICAgKCo1KilcbiAgICAgICAgICAgIGxldCBnIHggPVxuICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiB4IG1hcCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IEZvcm1lciB4XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBGcmVzaCAobGFiZWwgeClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc2liYmxpbmcyID0gTGlzdC5zb3J0IChxdWlja19jb21wYXJlIGcpIHNpYmJsaW5nMiBpblxuICAgICAgICAgICAgKG1hdGNoIGF1eCBtYXAgZnJlc2hfcG9zIHNpYmJsaW5nMiBsaXN0IHRvX2JlYXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAobWFwLCBmcmVzaF9wb3MsIGxpc3QsIHRvX2JlYXQpIC0+XG4gICAgICAgICAgICAgICgqNiopXG4gICAgICAgICAgICAgIChtYXRjaCBwb3AgWyBTdG9wIF0gdG9fYmVhdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSB0b19iZWF0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBjb25jYXQgbGlzdCBbIFN0b3AgXSBpblxuICAgICAgICAgICAgICAgIFNvbWUgKGxpc3QsIG1hcCwgZnJlc2hfcG9zLCB0b19iZWF0KSkpXG4gICAgICAgICAgICAoKjYqKVxuICAgICAgICAgICAgKCo1KikpXG4gICAgICAgICAgKCo0KikpXG4gICAgICAgICgqMyopXG4gICAgICAgICgqMiopKVxuICAgICgqMSopXG4gICAgKCowKilcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgb3V0cHV0ID1cbiAgICBtYXRjaCB2aXNpdCBncmFwaC5yb290IGFzc28gMCBOb25lIHdpdGhcbiAgICB8IFNvbWUgKHJlcCwgXywgXywgXykgLT4gZXJyb3IsIHJlcFxuICAgIHwgTm9uZSAtPiBlcnJvciwgW11cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5DYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubW9kdWxlIExpc3RUYWJsZSA6IFN0b3J5VGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0YWJsZSA9XG4gICAgKHByZWhhc2hcbiAgICAqIChDYXVzYWwuZ3JpZFxuICAgICAgKiBncmFwaFxuICAgICAgKiBjYW5vbmljYWxfZm9ybSBvcHRpb25cbiAgICAgICogVHJhY2UudFxuICAgICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QpXG4gICAgICBsaXN0KVxuICAgIGxpc3RcblxuICBsZXQgaW5pdF90YWJsZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID0gZXJyb3IsIGxvZ19pbmZvLCBbXVxuXG4gIGxldCBhZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgICBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJlaGFzaCA9IHByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZ3JhcGggaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChwcmVoYXNoLCBbIGdyaWQsIGdyYXBoLCBOb25lLCBwcmV0cmFjZSwgaW5mbyBdKSA6OiB0YWJsZVxuXG4gIGxldCBzb3J0X291dGVyID1cbiAgICBsZXQgY29tcGFyZSAoYSwgXykgKGIsIF8pID0gY29tcGFyZV9wcmVoYXNoIGEgYiBpblxuICAgIExpc3Quc29ydCBjb21wYXJlXG5cbiAgbGV0IHNvcnRfaW5uZXIgPVxuICAgIGxldCBjb21wYXJlIChfLCBfLCBhLCBfLCBfKSAoXywgXywgYiwgXywgXykgPSBjb21wYXJlX2Nhbm9uaWNfb3B0IGEgYiBpblxuICAgIExpc3Quc29ydCBjb21wYXJlXG5cbiAgbGV0IGhhc2hfaW5uZXIgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBjbXAgbGlzdCA9XG4gICAgbGV0IGxpc3QgPSBzb3J0X2lubmVyIGxpc3QgaW5cbiAgICBsZXQgcmVjIHZpc2l0IGVsZW1lbnRzX3RvX3N0b3JlIHN0b3JlZF9lbGVtZW50cyBsYXN0X2VsZW1lbnRcbiAgICAgICAgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzID1cbiAgICAgIG1hdGNoIGVsZW1lbnRzX3RvX3N0b3JlLCBsYXN0X2VsZW1lbnQgd2l0aFxuICAgICAgfCAoXywgXywgdCwgXywgbGlzdCkgOjogcSwgU29tZSAoXywgXywgb2xkLCBfKSB3aGVuIGNvbXBhcmUgdCBvbGQgPSAwIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICBsaXN0IGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgIHwgKGdyaWQsIGdyYXBoLCB0LCBldmVudCwgbGlzdCkgOjogcSwgU29tZSAoZ3JpZCcsIGdyYXBoJywgYSwgZXZlbnQnKSAtPlxuICAgICAgICB2aXNpdCBxXG4gICAgICAgICAgKChncmlkJywgZ3JhcGgnLCBhLCBldmVudCcsIExpc3Quc29ydCBjbXAgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgICAgIDo6IHN0b3JlZF9lbGVtZW50cylcbiAgICAgICAgICAoU29tZSAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50KSlcbiAgICAgICAgICAoKkxpc3QucmV2KikgbGlzdFxuICAgICAgfCAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50LCBsaXN0KSA6OiBxLCBOb25lIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIChTb21lIChncmlkLCBncmFwaCwgdCwgZXZlbnQpKSAoTGlzdC5yZXYgbGlzdClcbiAgICAgIHwgW10sIE5vbmUgLT4gW11cbiAgICAgIHwgW10sIFNvbWUgKGdyaWQsIGdyYXBoLCBhLCBldmVudCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoKGdyaWQsIGdyYXBoLCBhLCBldmVudCwgTGlzdC5zb3J0IGNtcCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpXG4gICAgICAgICAgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSB2aXNpdCBsaXN0IFtdIE5vbmUgW10gaW5cbiAgICBlcnJvciwgbGlzdFxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IGxpc3QgPSBzb3J0X291dGVyIChMaXN0LnJldiBsaXN0KSBpblxuICAgIGxldCByZWMgdmlzaXQgZWxlbWVudHNfdG9fc3RvcmUgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggZWxlbWVudHNfdG9fc3RvcmUsIGxhc3RfZWxlbWVudCB3aXRoXG4gICAgICB8ICgodCA6IHByZWhhc2gpLCBsaXN0KSA6OiBxLCBTb21lIG9sZCB3aGVuIGNvbXBhcmUgdCBvbGQgPSAwIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICBsaXN0IGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEsIFNvbWUgYSAtPlxuICAgICAgICB2aXNpdCBxICgoYSwgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKSA6OiBzdG9yZWRfZWxlbWVudHMpIChTb21lIHQpIGxpc3RcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEsIE5vbmUgLT4gdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgKFNvbWUgdCkgKExpc3QucmV2IGxpc3QpXG4gICAgICB8IFtdLCBOb25lIC0+IFtdXG4gICAgICB8IFtdLCBTb21lIGEgLT4gTGlzdC5yZXYgKChhLCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpIDo6IHN0b3JlZF9lbGVtZW50cylcbiAgICBpblxuICAgIGxldCBsaXN0ID0gdmlzaXQgbGlzdCBbXSBOb25lIFtdIGluXG4gICAgbGV0IHJlYyB2aXNpdDIgbCBsb2dfaW5mbyBlcnJvciBhY2MgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYWNjXG4gICAgICB8ICh0LCBsaXN0KSA6OiBxIC0+XG4gICAgICAgIGlmIExpc3QubGVuZ3RoIGxpc3QgPSAxIHRoZW5cbiAgICAgICAgICB2aXNpdDIgcSBsb2dfaW5mbyBlcnJvciAoKHQsIGxpc3QpIDo6IGFjYylcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCcgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0JykgKGdyaWQsIGdyYXBoLCBkYWcsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZGFnJyA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkYWcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICAgICAgICAgICAgfCBTb21lIGRhZyAtPiBlcnJvciwgbG9nX2luZm8sIGRhZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoZ3JpZCwgZ3JhcGgsIFNvbWUgZGFnJywgYiwgYykgOjogbGlzdCcpXG4gICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIFtdKSBsaXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxpc3QnID1cbiAgICAgICAgICAgIGhhc2hfaW5uZXIgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3JcbiAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgbGlzdCdcbiAgICAgICAgICBpblxuICAgICAgICAgIHZpc2l0MiBxIGxvZ19pbmZvIGVycm9yICgodCwgbGlzdCcpIDo6IGFjYylcbiAgICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9IHZpc2l0MiBsaXN0IGxvZ19pbmZvIGVycm9yIFtdIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbiAgbGV0IHByb2plY3RfdHVwbGUgKGdyaWQsIF8sIF8sIHRyYWNlLCBsaXN0KSA9IExpc3QuaGQgbGlzdCwgdHJhY2UsIGdyaWQsIGxpc3RcblxuICBsZXQgc29ydF9saXN0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IGZsYXRfbGlzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3Rfb3V0IChfcHJlaGFzaCwgbGlzdCkgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBsaXN0X291dCB0dXBsZSAtPiBwcm9qZWN0X3R1cGxlIHR1cGxlIDo6IGxpc3Rfb3V0KVxuICAgICAgICAgICAgbGlzdF9vdXQgbGlzdClcbiAgICAgICAgW10gbGlzdFxuICAgIGluXG4gICAgbGV0IGNvbXBhcmVfcGFpciAoYSwgXywgXywgXykgKGMsIF8sIF8sIF8pID1cbiAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5jb21wYXJlX2J5X3N0b3J5X2lkIGEgY1xuICAgIGluXG4gICAgbGV0IGZsYXRfbGlzdCA9IExpc3Quc29ydCBjb21wYXJlX3BhaXIgZmxhdF9saXN0IGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgTGlzdC5yZXZfbWFwIChmdW4gKF9hLCBiLCBjLCBkKSAtPiBiLCBjLCBkKSAoTGlzdC5yZXYgZmxhdF9saXN0KSApXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBuIGwgLT4gbiArIExpc3QubGVuZ3RoIChzbmQgbCkpIDAgbGlzdFxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIChlcnJvciA6IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgZ1xuICAgICAgbGlzdCBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhIChfLCBsKSAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYSkgKF8sIF8sIF8sIHgsIHkpIC0+XG4gICAgICAgICAgICBnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSBhKVxuICAgICAgICAgIGEgbClcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGEpIChMaXN0LnJldiBsaXN0KVxuZW5kXG5cbm1vZHVsZSBCdWNrZXRUYWJsZSA6IFN0b3J5VGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBzdG9yeV9pZCA9IGludFxuXG4gIGxldCBzdWNjX3N0b3J5X2lkID0gc3VjY1xuXG4gIHR5cGUgcHJlaGFzaF9lbHQgPSBub2RlICogaW50XG5cbiAgbW9kdWxlIEtleVMgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0ga2V5XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBQcmVIYXNoUyA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVoYXNoX2VsdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgS2V5TWFwID0gS2V5Uy5NYXBcbiAgbW9kdWxlIFByZUhhc2hNYXAgPSBQcmVIYXNoUy5NYXBcblxuICB0eXBlIGlubmVyX3RyZWUgPVxuICAgIHwgSW5uZXJfbm9kZSBvZiAoaW5uZXJfdHJlZSBLZXlNYXAudCAqIHN0b3J5X2lkIG9wdGlvbilcbiAgICB8IElubmVyX2xlYXZlIG9mIChrZXkgbGlzdCAqIHN0b3J5X2lkKVxuXG4gIHR5cGUgb3V0ZXJfdHJlZSA9XG4gICAgfCBFbXB0eVxuICAgIHwgT3V0ZXJfbm9kZSBvZiAob3V0ZXJfdHJlZSBQcmVIYXNoTWFwLnQgKiBzdG9yeV9pZCBvcHRpb24pXG4gICAgfCBPdXRlcl9sZWF2ZSBvZiAocHJlaGFzaF9lbHQgbGlzdCAqIHN0b3J5X2lkKVxuICAgIHwgVG9faW5uZXIgb2YgKG91dGVyX3RyZWUgUHJlSGFzaE1hcC50ICogaW5uZXJfdHJlZSlcblxuICB0eXBlIHRhYmxlID0ge1xuICAgIHRyZWU6IG91dGVyX3RyZWU7XG4gICAgYXJyYXk6XG4gICAgICAoQ2F1c2FsLmdyaWRcbiAgICAgICogZ3JhcGhcbiAgICAgICogY2Fub25pY2FsX2Zvcm0gb3B0aW9uXG4gICAgICAqIFRyYWNlLnRcbiAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0KVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYudDtcbiAgICBmcmVzaF9pZDogc3RvcnlfaWQ7XG4gIH1cblxuICBsZXQgaW5pdF90YWJsZSBwYXJhbWV0ZXJzIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmNyZWF0ZVxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIDBcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyB0cmVlID0gRW1wdHk7IGFycmF5OyBmcmVzaF9pZCA9IDAgfVxuXG4gIGxldCBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGFzc29jID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmdldFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgaWQgdGFibGUuYXJyYXlcbiAgICBpblxuICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgYSA9XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJ1bmtub3duIHN0b3J5IGlkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29uc2lzdGVudCBzdG9yeSBpZFwiKSAodGFibGUsIFtdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYVxuICAgIHwgU29tZSAoXywgXywgU29tZSBjYW5ub25pYywgXywgXykgLT4gZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljKVxuICAgIHwgU29tZSAoZ3JpZCwgZ3JhcGgsIE5vbmUsIHRyYWNlLCBpbmZvKSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWMgPVxuICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGFycmF5JyA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIGlkXG4gICAgICAgICAgKGdyaWQsIGdyYXBoLCBTb21lIGNhbm5vbmljLCB0cmFjZSwgaW5mbylcbiAgICAgICAgICB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIGxldCB0YWJsZSA9IHsgdGFibGUgd2l0aCBhcnJheSA9IGFycmF5JyB9IGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWMpXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIHN0b3J5X2luZm8gdGFibGVcbiAgICAgID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgICBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJlaGFzaCA9IHByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZ3JhcGggaW5cbiAgICBsZXQgYXNzb2MgPSBncmlkLCBncmFwaCwgTm9uZSwgcHJldHJhY2UsIHN0b3J5X2luZm8gaW5cbiAgICBsZXQgYWRkX3N0b3J5IGVycm9yIHggdGFibGUgPVxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIHRhYmxlLmZyZXNoX2lkIHggdGFibGUuYXJyYXlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBpZlxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHByaW50X2dyYXBoXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHRhYmxlLmZyZXNoX2lkIHN0b3J5X2luZm8gZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIHRhYmxlLmZyZXNoX2lkLFxuICAgICAgICB7IHRhYmxlIHdpdGggYXJyYXk7IGZyZXNoX2lkID0gc3VjY19zdG9yeV9pZCB0YWJsZS5mcmVzaF9pZCB9IClcbiAgICBpblxuICAgIGxldCBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkIHRhYmxlID1cbiAgICAgIGxldCBlcnJvciwgYXNzb19vcHQgPVxuICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5nZXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBpZCB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGFzc29fb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiVW5rbm93biBzdG9yeSBpZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIHN0b3J5IGlkXCIpIHRhYmxlXG4gICAgICB8IFNvbWUgKGdyaWQsIGdyYXBoLCBjYW5vbmljLCB0cmFjZSwgaW5mbykgLT5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgICAgICAgIG1hdGNoIEguZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBTdG9yeV9qc29uLkNhdXNhbFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgU3RvcnlfanNvbi5zdG9yeV9tb2RlID0gY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlcjtcbiAgICAgICAgICAgIFN0b3J5X2pzb24ubG9nX2luZm8gPSBzdG9yeV9pbmZvO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5zdG9yeSA9IFN0b3J5X2pzb24uU2FtZV9hcyBpZDtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlciAoU3RvcnlfanNvbi5TdG9yeSByZXN1bHQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBlcnJvciBpZFxuICAgICAgICAgICAgKGdyaWQsIGdyYXBoLCBjYW5vbmljLCB0cmFjZSwgc3RvcnlfaW5mbyBAIGluZm8pXG4gICAgICAgICAgICB0YWJsZS5hcnJheVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyB0YWJsZSB3aXRoIGFycmF5IH1cbiAgICBpblxuICAgIGxldCB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fub25pY19mb3JtIGFzc29jID1cbiAgICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICAgIHwgZ3JpZCwgZ3JhcGgsIE5vbmUsIHRyYWNlLCBpbmZvIC0+XG4gICAgICAgIGVycm9yLCAoZ3JpZCwgZ3JhcGgsIFNvbWUgY2Fub25pY19mb3JtLCB0cmFjZSwgaW5mbylcbiAgICAgIHwgXywgXywgU29tZSBfLCBfLCBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHRoaXMgc3Rvcnkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCJcbiAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHN0b3JpZXMgIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiKVxuICAgICAgICAgIGFzc29jXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fub25pY19mb3JtIGNhbm9uaWNfZm9ybScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgID1cbiAgICAgIG1hdGNoIGNhbm9uaWNfZm9ybSwgY2Fub25pY19mb3JtJyB3aXRoXG4gICAgICB8IFtdLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIHRhYmxlID0gYWRkX3N0b3J5X2luZm8gZXJyb3Igc3RvcnlfaW5mbyBpZCcgdGFibGUgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbGVhdmUgKFtdLCBpZCcpXG4gICAgICB8IHQgOjogcSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IChJbm5lcl9sZWF2ZSAocSwgaWQpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQnKVxuICAgICAgICApXG4gICAgICB8IFtdLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlXG4gICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQpIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyB3aGVuIHQgPSB0JyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgdHJlZSA9XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBxIHEnIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgdHJlZSBLZXlNYXAuZW1wdHksIE5vbmUpXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZVxuICAgICAgICAgICAgKCBLZXlNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAoSW5uZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICBOb25lICkgKVxuICAgIGluXG4gICAgbGV0IHJlYyBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHByZWhhc2ggcHJlaGFzaCcgaWQnIHRhYmxlID1cbiAgICAgIG1hdGNoIHByZWhhc2gsIHByZWhhc2gnIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljX2Zvcm0gPVxuICAgICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIGNhbm5vbmljX2Zvcm0gYXNzb2MgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pY19mb3JtJykgPVxuICAgICAgICAgIGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQnIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5ub25pY19mb3JtIGNhbm5vbmljX2Zvcm0nIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBUb19pbm5lciAoUHJlSGFzaE1hcC5lbXB0eSwgaW5uZXIpXG4gICAgICB8IHQgOjogcSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIFByZUhhc2hNYXAuZW1wdHksIFNvbWUgaWQnKVxuICAgICAgICApXG4gICAgICB8IFtdLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSwgU29tZSBpZClcbiAgICAgICAgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIHdoZW4gdCA9IHQnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgICAgICBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHEgcScgaWQnIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZSAoUHJlSGFzaE1hcC5hZGQgdCB0cmVlIFByZUhhc2hNYXAuZW1wdHksIE5vbmUpIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSksXG4gICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBpbm5lcl90cmVlIHRhYmxlID1cbiAgICAgIG1hdGNoIHN1ZmZpeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBpbm5lcl90cmVlIHdpdGhcbiAgICAgICAgfCBJbm5lcl9ub2RlIChtYXAsIE5vbmUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbm9kZSAobWFwLCBTb21lIGlkKVxuICAgICAgICB8IElubmVyX25vZGUgKF8sIFNvbWUgaWQnKSB8IElubmVyX2xlYXZlIChbXSwgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyX3RyZWVcbiAgICAgICAgfCBJbm5lcl9sZWF2ZSAodCcgOjogcScsIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIElubmVyX25vZGVcbiAgICAgICAgICAgICAgKEtleU1hcC5hZGQgdCcgKElubmVyX2xlYXZlIChxJywgaWQnKSkgS2V5TWFwLmVtcHR5LCBTb21lIGlkKSApKVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgKG1hdGNoIGlubmVyX3RyZWUgd2l0aFxuICAgICAgICB8IElubmVyX25vZGUgKG1hcCwgYXNzb2MnKSAtPlxuICAgICAgICAgIChtYXRjaCBLZXlNYXAuZmluZF9vcHRpb24gdCBtYXAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgICBsZXQgaW5uZXJfdHJlZSA9XG4gICAgICAgICAgICAgIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCAoSW5uZXJfbGVhdmUgKHEsIGlkKSkgbWFwLCBhc3NvYycpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXJfdHJlZVxuICAgICAgICAgIHwgU29tZSBpbm5lcl90cmVlJyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBpbm5lcl90cmVlJycgPVxuICAgICAgICAgICAgICBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBxIGlubmVyX3RyZWUnIHRhYmxlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgaW5uZXJfdHJlZScnID09IGlubmVyX3RyZWUnIHRoZW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIGlubmVyX3RyZWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICB0YWJsZScsXG4gICAgICAgICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IGlubmVyX3RyZWUnJyBtYXAsIGFzc29jJykgKSlcbiAgICAgICAgfCBJbm5lcl9sZWF2ZSAobCcsIGlkJykgLT5cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIHN1ZmZpeCBsJyBpZCcgYXNzb2MgdGFibGUpXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBvdXRlcl90cmVlIHRhYmxlID1cbiAgICAgIG1hdGNoIHN1ZmZpeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBvdXRlcl90cmVlIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX2xlYXZlIChzdWZmaXgsIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgTm9uZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBPdXRlcl9ub2RlIChtYXAsIFNvbWUgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBTb21lIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGdyYXBoID1cbiAgICAgICAgICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICAgICAgICAgIHwgXywgZ3JhcGgsIE5vbmUsIF8sIF8gLT4gZXJyb3IsIGdyYXBoXG4gICAgICAgICAgICB8IF8sIGdyYXBoLCBTb21lIF8sIF8sIF8gLT5cbiAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2Ygc3RvcmllcyBpbiB0aGUgb3V0ZXIgdHJlZSBzaG91bGQgbm90IFxcXG4gICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiXG4gICAgICAgICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiBzdG9yaWVzIGluIHRoZSBvdXRlciB0cmVlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvbXB1dGUgeWV0XCIpXG4gICAgICAgICAgICAgICAgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljX2Zvcm0gPVxuICAgICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIGNhbm5vbmljX2Zvcm0gYXNzb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljX2Zvcm0nKSA9XG4gICAgICAgICAgICBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkJyB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fubm9uaWNfZm9ybSBjYW5ub25pY19mb3JtJyBpZCcgYXNzb2NcbiAgICAgICAgICAgICAgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChtYXAsIGlubmVyKVxuICAgICAgICB8IE91dGVyX2xlYXZlIChfcSwgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIG91dGVyX3RyZWVcbiAgICAgICAgfCBUb19pbm5lciAobWFwLCBpbm5lcikgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdWZmaXggPVxuICAgICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIHN1ZmZpeCBhc3NvYyBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgICBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBzdWZmaXggaW5uZXIgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChtYXAsIGlubmVyKSlcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIChtYXRjaCBvdXRlcl90cmVlIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX2xlYXZlIChzdWZmaXgsIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgYXNzb2MnKSAtPlxuICAgICAgICAgIChtYXRjaCBQcmVIYXNoTWFwLmZpbmRfb3B0aW9uIHQgbWFwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICAgbGV0IGlubmVyX3RyZWUgPVxuICAgICAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IChPdXRlcl9sZWF2ZSAocSwgaWQpKSBtYXAsIGFzc29jJylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lcl90cmVlXG4gICAgICAgICAgfCBTb21lIG91dGVyX3RyZWUnIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIG91dGVyX3RyZWUnJyA9XG4gICAgICAgICAgICAgIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHEgb3V0ZXJfdHJlZScgdGFibGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBvdXRlcl90cmVlJycgPT0gb3V0ZXJfdHJlZScgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgb3V0ZXJfdHJlZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIHRhYmxlJyxcbiAgICAgICAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IG91dGVyX3RyZWUnJyBtYXAsIGFzc29jJykgKSlcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAodCcgOjogcScsIGlkJykgd2hlbiBub3QgKHQgPSB0JykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgICAgKCBQcmVIYXNoTWFwLmFkZCB0XG4gICAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgICBOb25lICkgKVxuICAgICAgICB8IE91dGVyX2xlYXZlIChsJywgaWQnKSAtPiBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHN1ZmZpeCBsJyBpZCcgdGFibGVcbiAgICAgICAgfCBUb19pbm5lciAoX21hcCwgaW5uZXIpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICBUb19pbm5lclxuICAgICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIFByZUhhc2hNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICAgIGlubmVyICkgKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAoZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBzdG9yeV9pbmZvKVxuICAgICAgICBzdG9yeV9pbmZvIHByZWhhc2ggdGFibGUudHJlZSB0YWJsZVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHRhYmxlIHdpdGggdHJlZSB9XG5cbiAgKCogbGV0IHJlYyBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCBpbm5lcl90cmVlID1cbiAgICAgbWF0Y2hcbiAgICAgaW5uZXJfdHJlZVxuICAgICB3aXRoXG4gICAgIHwgSW5uZXJfbm9kZSAobWFwLGFzc29jJykgLT5cbiAgICAgbGV0ICgpID1cbiAgICAgbWF0Y2hcbiAgICAgYXNzb2MnXG4gICAgIHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNVbmZpbGxlZCBOb2RlXFxuXCIgcHJlZml4XG4gICAgIHwgU29tZSAoaWQpICAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzRmlsbGVkIE5vZGU6ICVpXFxuXCIgcHJlZml4IGlkXG4gICAgIGluXG4gICAgIGxldCBwcmVmaXgnID0gcHJlZml4XlwiIFwiIGluXG4gICAgIEtleU1hcC5pdGVyXG4gICAgIChmdW4gZWx0IG1hcCAtPlxuICAgICBwcmludF9lbHQgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgZWx0O1xuICAgICBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICBtYXBcbiAgICAgfCBJbm5lcl9sZWF2ZSAobCxpZCkgIC0+XG4gICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNMRUFWRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgbGV0IF8gPSBwcmludF9jYW5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsIGluXG4gICAgICgpKilcblxuICAoKlxubGV0IHJlYyBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCBvdXRlcl90cmVlID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG91dGVyX3RyZWVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNFTVBUWVxcblwiIHByZWZpeFxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCxhc3NvYycpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgIGFzc29jJ1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVW5maWxsZWQgTm9kZVxcblwiIHByZWZpeFxuICAgICAgICB8IFNvbWUgKGlkKSAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0ZpbGxlZCBOb2RlOiAlaVxcblwiIHByZWZpeCBpZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJlZml4JyA9IHByZWZpeF5cIiBcIiBpblxuICAgICAgICBQcmVIYXNoTWFwLml0ZXJcbiAgICAgICAgKGZ1biAoKF8sYiksaSkgIG1hcCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzJXM6JWktPlxcblwiIHByZWZpeCBiIGkgO1xuICAgICAgICBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICAgICBtYXBcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAobCxpZCkgIC0+XG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNMRUFWRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgICAgbGV0IF8gPSBwcmludF9wcmVoYXNoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGwgaW5cbiAgICAgICAgKClcbiAgICAgICAgfCBUb19pbm5lciAobWFwLGlubmVyKSAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVE8gSU5ORVIgVFJFRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgICAgbGV0IHByZWZpeCcgPSBwcmVmaXheXCIgXCIgaW5cbiAgICAgICAgbGV0ICgpID0gUHJlSGFzaE1hcC5pdGVyXG4gICAgICAgIChmdW4gKChfLGIpLGkpICBtYXAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlcyVzOiVpLT5cXG5cIiBwcmVmaXggYiBpIDtcbiAgICAgICAgcHJpbnRfb3V0ZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIG1hcClcbiAgICAgICAgbWFwXG4gICAgICAgIGluXG4gICAgICAgIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBpbm5lciAqKVxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIF8gbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZm9sZFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXInIGVycm9yIGkgKGEsIGIsIGMsIGQsIGUpIGFycmF5IC0+XG4gICAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0IHBhcmFtZXRlcicgZXJyb3IgaVxuICAgICAgICAgICAgKGEsIGIsIGMsIGQsIExpc3Quc29ydCBUcmFjZS5TaW11bGF0aW9uX2luZm8uY29tcGFyZV9ieV9zdG9yeV9pZCBlKVxuICAgICAgICAgICAgYXJyYXkpXG4gICAgICAgIHRhYmxlLmFycmF5IHRhYmxlLmFycmF5XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgdGFibGUgd2l0aCBhcnJheSB9XG5cbiAgbGV0IHNvcnRfbGlzdCBwYXJhbWV0ZXIgXyBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbGV0IGVycm9yLCBsID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmZvbGRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yXG4gICAgICAgIChmdW4gX3BhcmFtZXRlciBlcnJvciBfIChhLCBfYiwgX2MsIGQsIGUpIGwgLT4gZXJyb3IsIChkLCBhLCBlKSA6OiBsKVxuICAgICAgICB0YWJsZS5hcnJheSBbXVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgdGFibGUgPSB0YWJsZS5mcmVzaF9pZFxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGYgdGFibGUgYSA9XG4gICAgbGV0IGEsIChiLCBjKSA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcicgZXJyb3IgXyAoXywgXywgXywgZCwgZSkgKGxvZ19pbmZvLCBhKSAtPlxuICAgICAgICAgIGxldCBhLCBiLCBjID1cbiAgICAgICAgICAgIGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXInIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBkIGUgYVxuICAgICAgICAgIGluXG4gICAgICAgICAgYSwgKGIsIGMpKVxuICAgICAgICB0YWJsZS5hcnJheSAobG9nX2luZm8sIGEpXG4gICAgaW5cbiAgICBhLCBiLCBjXG5lbmRcblxubW9kdWxlIHR5cGUgU2VsZWN0b3IgPSBzaWdcbiAgdmFsIGNob29zZV9mc3QgOiBILnBhcmFtZXRlciAtPiBib29sXG5lbmRcblxubW9kdWxlIENob2ljZSAoUyA6IFNlbGVjdG9yKSAoQSA6IFN0b3J5VGFibGUpIChCIDogU3RvcnlUYWJsZSkgOiBTdG9yeVRhYmxlID1cbnN0cnVjdFxuICB0eXBlIHRhYmxlID0gQSBvZiBBLnRhYmxlIHwgQiBvZiBCLnRhYmxlXG5cbiAgbGV0IGluaXRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGlmIFMuY2hvb3NlX2ZzdCBwYXJhbWV0ZXIgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEIuaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuICAgIClcblxuICBsZXQgYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2UgaW5mbyB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEEgdGFibGVcbiAgICB8IEIgdGFibGUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQi5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBCLmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuXG4gIGxldCBzb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT4gQS5zb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcbiAgICB8IEIgdGFibGUgLT4gQi5zb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcblxuICBsZXQgY291bnRfc3RvcmllcyB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPiBBLmNvdW50X3N0b3JpZXMgdGFibGVcbiAgICB8IEIgdGFibGUgLT4gQi5jb3VudF9zdG9yaWVzIHRhYmxlXG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZyB0YWJsZSBhID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+IEEuZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBnIHRhYmxlIGFcbiAgICB8IEIgdGFibGUgLT4gQi5mb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGcgdGFibGUgYVxuZW5kXG5cbigqIG1vZHVsZSBTdG9yeVRhYmxlID0gTGlzdFRhYmxlKilcbigqIG1vZHVsZSBTdG9yeVRhYmxlID0gQnVja2V0VGFibGUqKVxubW9kdWxlIFN0b3J5VGFibGUgPVxuICBDaG9pY2VcbiAgICAoc3RydWN0XG4gICAgICBsZXQgY2hvb3NlX2ZzdCA9IFMuUEguQi5QQi5DSS5Qby5LLkguZG9fd2VfdXNlX2J1Y2tldF9zb3J0XG4gICAgZW5kKVxuICAgIChCdWNrZXRUYWJsZSlcbiAgICAoTGlzdFRhYmxlKVxuIiwiKCoqXG4gKiB1dGlsaXRpZXMubWxcbiAqXG4gKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTUtMDMtMjggZmVyZXQ+XG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMDMgMjA6NTM6MTQgZmVyZXQ+XG4gKlxuICogQVBJIGZvciBjYXVzYWwgY29tcHJlc3Npb25cbiAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICpcbiAqIENvcHlyaWdodCAyMDE1IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGVcbiAqIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgRCA9IERhZy5TdG9yeVRhYmxlXG5tb2R1bGUgUyA9IEdlbmVyaWNfYnJhbmNoX2FuZF9jdXRfc29sdmVyLlNvbHZlclxubW9kdWxlIFAgPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzXG5cbnR5cGUgZXJyb3JfbG9nID0gRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG50eXBlIHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkgucGFyYW1ldGVyXG50eXBlIGthcHBhX2hhbmRsZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmhhbmRsZXJcbnR5cGUgcHJvZmlsaW5nX2luZm8gPSBQLmxvZ19pbmZvXG50eXBlIHNoYWxsX3dlID0gcGFyYW1ldGVyIC0+IGJvb2xcbnR5cGUgc3RlcCA9IFRyYWNlLnN0ZXBcbnR5cGUgc3RlcF93aXRoX3NpZGVfZWZmZWN0cyA9IHN0ZXAgKiBTLlBILkIuUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdFxudHlwZSBzdGVwX2lkID0gUy5QSC5CLlBCLnN0ZXBfaWRcblxudHlwZSB0cmFjZSA9IHtcbiAgY29tcHJlc3NlZF90cmFjZTogc3RlcF93aXRoX3NpZGVfZWZmZWN0cyBsaXN0IG9wdGlvbjtcbiAgcHJldHJhY2U6IHN0ZXAgbGlzdDtcbiAgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5OiBib29sO1xufVxuXG50eXBlIHRyYWNlX3J1bnRpbWVfaW5mbyA9IHByb2ZpbGluZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50XG5cbnR5cGUgJ2Egd2l0aF9oYW5kbGVycyA9XG4gIHBhcmFtZXRlciAtPlxuICA/c2hhbGxfd2VfY29tcHV0ZTpzaGFsbF93ZSAtPlxuICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246c2hhbGxfd2UgLT5cbiAgP3ByaW50X2lmX3plcm86c2hhbGxfd2UgLT5cbiAga2FwcGFfaGFuZGxlciAtPlxuICBwcm9maWxpbmdfaW5mbyAtPlxuICBlcnJvcl9sb2cgLT5cbiAgJ2FcblxudHlwZSAnYSB6ZXJvYXJ5ID0gKGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2EpIHdpdGhfaGFuZGxlcnNcbnR5cGUgKCdhLCAnYikgdW5hcnkgPSAoJ2EgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYikgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYykgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdkKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdlKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHF1aW50ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2YpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZiwgJ2cpIHNleHRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ2YgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZylcbiAgd2l0aF9oYW5kbGVyc1xuXG5sZXQgKHdlX3NoYWxsIDogc2hhbGxfd2UpID0gZnVuIF8gLT4gdHJ1ZVxubGV0ICh3ZV9zaGFsbF9ub3QgOiBzaGFsbF93ZSkgPSBmdW4gXyAtPiBmYWxzZVxubGV0IGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSA9IHRyYWNlLnByZXRyYWNlXG5sZXQgc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSA9IExpc3QubGVuZ3RoIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5sZXQgbWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlID0gdHJhY2Uud2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5XG5sZXQgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIHdpdGhfcG90ZW50aWFsX2FtYmlndWl0eSA9IHggfVxubGV0IF9zZXRfcHJldHJhY2UgdHJhY2UgeCA9IHsgdHJhY2Ugd2l0aCBwcmV0cmFjZSA9IHggfVxubGV0IF9zZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIGNvbXByZXNzZWRfdHJhY2UgPSB4IH1cblxubGV0IGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlID1cbiAgbWF0Y2ggdHJhY2UuY29tcHJlc3NlZF90cmFjZSB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCBbXSkgKExpc3QucmV2IChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpKVxuXG5sZXQgaXNfY29tcHJlc3NlZF90cmFjZSB0cmFjZSA9IHRyYWNlLmNvbXByZXNzZWRfdHJhY2UgIT0gTm9uZVxuXG5sZXQgdHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgd2l0aF9hbWJpZ3VpdHkgcHJldHJhY2UgPVxuICB7XG4gICAgcHJldHJhY2U7XG4gICAgY29tcHJlc3NlZF90cmFjZSA9IE5vbmU7XG4gICAgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0gd2l0aF9hbWJpZ3VpdHk7XG4gIH1cblxubGV0IHRyYWNlX29mX3ByZXRyYWNlID0gdHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgdHJ1ZVxuXG5sZXQgYnVpbGRfY29tcHJlc3NlZF90cmFjZSB4IHkgPVxuICB7IGNvbXByZXNzZWRfdHJhY2UgPSBTb21lIHk7IHByZXRyYWNlID0geDsgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0gZmFsc2UgfVxuXG4oKmxldCBnZXRfbG9nX3N0ZXAgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dfc3RlcFxuICBsZXQgZ2V0X2RlYnVnZ2luZ19tb2RlID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX21vZGVcbiAgbGV0IGdldF9sb2dnZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIqKVxubGV0IGdldF9pZF9vZl9ldmVudCA9IFMuUEguQi5QQi5DSS5Qby5LLmdldF9pZF9vZl9yZWZpbmVkX3N0ZXBcbmxldCBnZXRfc2ltdWxhdGlvbl90aW1lX29mX2V2ZW50ID0gUy5QSC5CLlBCLkNJLlBvLksuZ2V0X3RpbWVfb2ZfcmVmaW5lZF9zdGVwXG5cbmxldCBfZXh0ZW5kX3RyYWNlX3dpdGhfZHVtbXlfc2lkZV9lZmZlY3RzIGwgPVxuICBMaXN0LnJldl9tYXAgKGZ1biBhIC0+IGEsIFtdKSAoTGlzdC5yZXYgbClcblxubGV0IHByaW50X3ByZXRyYWNlIHBhcmFtZXRlciBfaGFuZGxlciA9XG4gIExvZ2dlcnMuZnByaW50ZlxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgXCJAWzx2PiVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKFRyYWNlLnByaW50X3N0ZXAgfmNvbXBhY3Q6dHJ1ZSA/ZW52Ok5vbmUpKVxuXG5sZXQgcHJpbnRfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgdHJhY2UgPVxuICBwcmludF9wcmV0cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlKVxuXG5sZXQgdHJhbnNmb3JtX3RyYWNlX2dlbiBmIGxvZ19tZXNzYWdlIGRlYnVnX21lc3NhZ2UgcHJvZmlsaW5nX2V2ZW50IHBhcmFtZXRlcnNcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbCkgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbCkga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZSA9XG4gIGlmIHNoYWxsX3dlX2NvbXB1dGUgcGFyYW1ldGVycyB0aGVuIChcbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycylcbiAgICAgICAgZXJyb3IgcHJvZmlsaW5nX2V2ZW50XG4gICAgICAgIChTb21lIChmdW4gKCkgLT4gc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSkpXG4gICAgICAgIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgYm9vbCA9XG4gICAgICBpZiBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dfc3RlcCBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgICBtYXRjaCBsb2dfbWVzc2FnZSB3aXRoXG4gICAgICAgIHwgU29tZSBsb2dfbWVzc2FnZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICBcIiVzJXNcIlxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycykpXG4gICAgICAgICAgICAgIGxvZ19tZXNzYWdlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mbHVzaF9sb2dnZXIgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICkgZWxzZVxuICAgICAgICBmYWxzZVxuICAgIGluXG4gICAgbGV0IHByZXRyYWNlID0gZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlIGluXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKHByZXRyYWNlJywgbikgPVxuICAgICAgZiBwYXJhbWV0ZXJzIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgcHJldHJhY2VcbiAgICBpblxuICAgIGxldCB0cmFjZScgPSB0cmFjZV9vZl9wcmV0cmFjZSBwcmV0cmFjZScgaW5cbiAgICBsZXQgdHJhY2UgPVxuICAgICAgaWYgdHJhY2UgPT0gdHJhY2UnIHRoZW5cbiAgICAgICAgdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZScgKG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIGlmIHByaW50X2lmX3plcm8gcGFyYW1ldGVycyB0aGVuXG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICBcIjogbm90aGluZyBoYXMgY2hhbmdlZCBALlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJALlwiXG4gICAgICAgIGVsc2UgaWYgbiA+IDAgdGhlblxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCI6IC0laSBldmVudHMgQC5cIiBuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIFwiOiArJWkgZXZlbnRzIEAuXCIgKC1uKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXJzKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZm10IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBkZWJ1Z19tZXNzYWdlXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHByaW50X3RyYWNlIHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciB0cmFjZVxuICAgICAgKVxuICAgIGluXG5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKVxuICAgICAgICBlcnJvciBwcm9maWxpbmdfZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcbiAgKSBlbHNlXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuXG50eXBlIGtpbmQgPSAoKiAgfCBTb2x2ZV9hbWJpZ3VpdGllcyopXG4gIHwgTWF5X2FkZF9hbWJpZ3VpdGllcyB8IE5ldXRyYWxcblxubGV0IGhhbmRsZV9hbWJpZ3VpdGllcyBraW5kIGIgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgKCogIHwgU29sdmVfYW1iaWd1aXRpZXMgLT4gZmFsc2UqKVxuICB8IE5ldXRyYWwgLT4gYlxuICB8IE1heV9hZGRfYW1iaWd1aXRpZXMgLT4gdHJ1ZVxuXG50eXBlIGFtYmlxdWl0aWVzX3ByZWNvbmRpdGlvbiA9XG4gIHwgRG9fbm90X2NhcmVcbiAgfCBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgKCp8IEJldHRlcl93aGVuX25vX2FtYmlndWl0eSopXG5cbmxldCBtdXN0X3dlX3NvbHZlX2FtYmlndWl0eSBfcGFyYW1ldGVycyB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRG9fbm90X2NhcmUgLT4gZmFsc2VcbiAgfCBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgLT4gdHJ1ZVxuKCogIHwgQmV0dGVyX3doZW5fbm9fYW1iaWd1aXR5IC0+IFMuUEguQi5QQi5DSS5Qby5LLkguYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXJzKilcblxubGV0IG1vbmFkaWNfbGlmdCBmIF8gXyBsb2dfaW5mbyBlcnJvciB0ID1cbiAgbGV0IHQnID0gZiB0IGluXG4gIGVycm9yLCBsb2dfaW5mbywgKHQnLCBMaXN0Lmxlbmd0aCB0IC0gTGlzdC5sZW5ndGggdCcpXG5cbmxldCBfZHVtbXlfcHJvZmlsaW5nIF8gcCA9IHBcblxubGV0IGRpc2FtYmlndWF0ZSA9XG4gIHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLmRpc2FtYmlndWF0ZSlcbiAgICAoU29tZSBcIlxcdC0gYWxwaGEtY29udmVyc2lvblwiKSBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW5hbWVzIGFnZW50czpcXG5cIlxuICAgIFN0b3J5UHJvZmlsaW5nLkFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuXG5sZXQgbWFrZV91bmFtYmlndW91cyBwYXJhbWV0ZXJzID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbF9ub3QpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGxfbm90KSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgbWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlJyA9XG4gICAgICBkaXNhbWJpZ3VhdGUgcGFyYW1ldGVyc1xuICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTooZnVuIHBhcmFtZXRlcnMgLT5cbiAgICAgICAgICBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgJiYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzKVxuICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gfnByaW50X2lmX3plcm8ga2FwcGFfaGFuZGxlclxuICAgICAgICBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZVxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIHByb2ZpbGluZ19pbmZvLFxuICAgICAgaWYgdHJhY2UnID09IHRyYWNlIHRoZW5cbiAgICAgICAgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlJyBmYWxzZSApXG4gICkgZWxzZVxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcblxubGV0IGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllcyBmIHJlcXVpcmVtZW50IGVmZmVjdCBwYXJhbWV0ZXJzXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlID1cbiAgICAgIGlmIG11c3Rfd2Vfc29sdmVfYW1iaWd1aXR5IHBhcmFtZXRlcnMgcmVxdWlyZW1lbnQgdGhlblxuICAgICAgICBtYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGUga2FwcGFfaGFuZGxlclxuICAgICAgICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgIChmXG4gICAgICAgIDogUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXIgLT5cbiAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZTpzaGFsbF93ZSAtPlxuICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpzaGFsbF93ZSAtPlxuICAgICAgICAgID9wcmludF9pZl96ZXJvOnNoYWxsX3dlIC0+XG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5oYW5kbGVyIC0+XG4gICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgICAgICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICAgICAgIHRyYWNlIC0+XG4gICAgICAgICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqIHRyYWNlKVxuICAgICAgICBwYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICB+cHJpbnRfaWZfemVybyBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICBsZXQgdHJhY2UgPSBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIChoYW5kbGVfYW1iaWd1aXRpZXMgZWZmZWN0IHRydWUpIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZVxuICApIGVsc2VcbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG5cbmxldCBzcGxpdF9pbml0ID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLnNwbGl0X2luaXQpXG4gICAgICAgKFNvbWUgXCJcXHQtIHNwbGl0dGluZyBpbml0aWFsIGV2ZW50c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHNwbGl0IGluaXRpYWwgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuRGVjb21wb3NlX2luaXRpYWxfc3RhdGUpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG5sZXQgY3V0ID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW4gUy5QSC5CLlBCLkNJLlBvLmN1dFxuICAgICAgIChTb21lIFwiXFx0LSBjdXR0aW5nIGNvbmN1cnJlbnQgZXZlbnRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCBjb25jdXJyZW50IGV2ZW50czpcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uKVxuICAgIFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSBOZXV0cmFsXG5cbnR5cGUgb25fdGhlX2ZseV9jdXRfc3RhdGUgPSBTLlBILkIuUEIuQ0kuUG8ub25fdGhlX2ZseV9zdGF0ZVxuXG5sZXQgb25fdGhlX2ZseV9jdXRfaW5pdCA9IFMuUEguQi5QQi5DSS5Qby5pbml0X2N1dFxubGV0IG9uX3RoZV9mbHlfY3V0X3N0ZXAgPSBTLlBILkIuUEIuQ0kuUG8uY3V0X3N0ZXBcblxubGV0IG9uX3RoZV9mbHlfY3V0X2ZpbmFsaXplIGN1dF9zdGF0ZSA9XG4gIGZzdCAoUy5QSC5CLlBCLkNJLlBvLmZpbmFsaXplX2N1dCBjdXRfc3RhdGUpXG5cbmxldCBjdXRfcmV2X3RyYWNlIHJldl90cmFjZSA9XG4gIG9uX3RoZV9mbHlfY3V0X2ZpbmFsaXplXG4gICAgKExpc3QuZm9sZF9sZWZ0IG9uX3RoZV9mbHlfY3V0X3N0ZXAgb25fdGhlX2ZseV9jdXRfaW5pdCByZXZfdHJhY2UpXG5cbmxldCByZW1vdmVfb2JzX2JlZm9yZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfZWlkIHRyYWNlID1cbiAgKCBlcnJvcixcbiAgICBsb2dfaW5mbyxcbiAgICBsZXQgcmVjIGF1eCBsIHNjb3JlIG91dHB1dCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgb3V0cHV0LCBzY29yZVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgdCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCB0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXV4IHEgc2NvcmUgKHQgOjogb3V0cHV0KVxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBpZiBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgeCA+PSBsYXN0X2VpZCB0aGVuXG4gICAgICAgICAgICAgICggTGlzdC5yZXYgKExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdCkgb3V0cHV0IGwpLFxuICAgICAgICAgICAgICAgIHNjb3JlIClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IHEgKHN1Y2Mgc2NvcmUpIG91dHB1dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBhdXggcSBzY29yZSAodCA6OiBvdXRwdXQpXG4gICAgaW5cbiAgICBhdXggdHJhY2UgMCBbXSApXG5cbmxldCByZW1vdmVfb2JzX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsYXN0X2luZm8gdHJhY2UgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgLT5cbiAgICAgICAgIHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfaW5mbylcbiAgICAgICAoU29tZSBcIlxcdC0gUmVtb3ZpbmcgYWxyZWFkeSB2aXNpdGVkIG9ic2VydmFibGUgaGl0c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgc2VlbiBvYnNlcnZhYmxlIGhpdHNcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWwgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgbGFzdF9pbmZvIHRyYWNlID1cbiAgbWF0Y2ggbGFzdF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgdHJhY2VcbiAgfCBTb21lIGwgLT5cbiAgICBsZXQgbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHJlc3VsdCB4IC0+XG4gICAgICAgICAgbGV0IGxhc3RfZWlkID0gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkIHggaW5cbiAgICAgICAgICBtYXggcmVzdWx0IGxhc3RfZWlkKVxuICAgICAgICAwIGxcbiAgICBpblxuICAgIHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3QgdHJhY2VcblxubGV0IGZpbGxfc2lwaG9uID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLmZpbGxfc2lwaG9uKVxuICAgICAgIChTb21lIFwiXFx0LSBkZXRlY3Rpbmcgc2lwaG9uc1wiKSBcIlRyYWNlIGFmdGVyIGhhdmluZyBkZXRlY3RlZCBzaXBob25zOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuU2lwaG9uX2RldGVjdGlvbilcbiAgICBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgTWF5X2FkZF9hbWJpZ3VpdGllc1xuXG5sZXQgKHJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnMgOiAodHJhY2UsIHRyYWNlKSB1bmFyeSkgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnRcbiAgICAgICAgICAoTGlzdF91dGlsLnJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1cnJlbmNlIFRyYWNlLnN0ZXBfaXNfb2JzKSlcbiAgICAgICAoU29tZSBcIlxcdC0gcmVtb3ZpbmcgZXZlbnRzIG9jY3VycmluZyBhZnRlciB0aGUgbGFzdCBvYnNlcnZhYmxlXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCB0aGUgZXZlbnRzIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVcIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWxcblxubGV0IHJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlbiBTLlBILkIuUEIuQ0kuY3V0XG4gICAgICAgKFNvbWUgXCJcXHQtIGRldGVjdGluZyBwc2V1ZG8gaW52ZXJzZSBldmVudHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIHBzZXVkbyBpbnZlcnNlIGV2ZW50czpcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBzZXVkb19pbnZlcnNlX2RlbGV0aW9uKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWxcblxudHlwZSBjZmxvd19ncmlkID0gQ2F1c2FsLmdyaWRcbnR5cGUgZW5yaWNoZWRfY2Zsb3dfZ3JpZCA9IENhdXNhbC5lbnJpY2hlZF9ncmlkXG50eXBlIG11c2ljYWxfZ3JpZCA9IFMuUEguQi5ibGFja2JvYXJkXG50eXBlIHN0b3J5X3RhYmxlID0geyBzdG9yeV9jb3VudGVyOiBpbnQ7IHN0b3J5X2xpc3Q6IEQudGFibGUgfVxuXG5sZXQgY291bnRfc3RvcmllcyBzdG9yeV90YWJsZSA9IEQuY291bnRfc3RvcmllcyBzdG9yeV90YWJsZS5zdG9yeV9saXN0XG5cbnR5cGUgb2JzZXJ2YWJsZV9oaXQgPSB7XG4gIGxpc3Rfb2ZfYWN0aW9uczogUy5QSC51cGRhdGVfb3JkZXIgbGlzdDtcbiAgbGlzdF9vZl9ldmVudHM6IHN0ZXBfaWQgbGlzdDtcbiAgcnVudGltZV9pbmZvOiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbjtcbn1cblxubGV0IGdldF9ldmVudF9saXN0X2Zyb21fb2JzZXJ2YWJsZV9oaXQgYSA9IGEubGlzdF9vZl9ldmVudHNcbmxldCBnZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgYSA9IGEucnVudGltZV9pbmZvXG5sZXQgX2dldF9saXN0X29yZGVyIGEgPSBhLmxpc3Rfb2ZfYWN0aW9uc1xubGV0IGVycm9yX2luaXQgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlclxuXG5sZXQgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwcm9maWxpbmdfaW5mb1xuICAgIGMgZCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGwgPSBTLlBILmZvcmNlZF9ldmVudHMgYSBiIHByb2ZpbGluZ19pbmZvIGMgZCBpblxuICAoIGVycm9yLFxuICAgIHByb2ZpbGluZ19pbmZvLFxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgeyBsaXN0X29mX2FjdGlvbnMgPSBhOyBsaXN0X29mX2V2ZW50cyA9IGI7IHJ1bnRpbWVfaW5mbyA9IGMgfSlcbiAgICAgIChMaXN0LnJldiBsKSApXG5cbmxldCBleHRyYWN0X29ic2VydmFibGVfaGl0X2Zyb21fbXVzaWNhbF9ub3RhdGlvbiBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcHJvZmlsaW5nX2luZm9cbiAgICBjIHN0cmluZyBkID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgbCA9IFMuUEguZm9yY2VkX2V2ZW50cyBhIGIgcHJvZmlsaW5nX2luZm8gYyBkIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFsgKGEsIGIsIGMpIF0gLT5cbiAgICAoIGVycm9yLFxuICAgICAgcHJvZmlsaW5nX2luZm8sXG4gICAgICB7IGxpc3Rfb2ZfYWN0aW9ucyA9IGE7IGxpc3Rfb2ZfZXZlbnRzID0gYjsgcnVudGltZV9pbmZvID0gYyB9IClcbiAgfCBbXSAtPiBmYWlsd2l0aCAoc3RyaW5nIF4gXCIgbm8gc3RvcnlcIilcbiAgfCBfIDo6IF8gLT4gZmFpbHdpdGggKHN0cmluZyBeIFwiIHNldmVyYWwgc3Rvcmllc1wiKVxuXG5sZXQgdHJhbnNsYXRlIHAgaCBwcm9maWxpbmdfaW5mbyBlIGIgbGlzdCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIChsaXN0LCBfKSA9XG4gICAgUy50cmFuc2xhdGUgcCBoIHByb2ZpbGluZ19pbmZvIGUgYiBsaXN0XG4gIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2Vfb2ZfcHJldHJhY2UgbGlzdFxuXG5sZXQgY2F1c2FsX3ByZWZpeF9vZl9hbl9vYnNlcnZhYmxlX2hpdCBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHN0cmluZyBibGFja2JvYXJkIChlbnJpY2hlZF9ncmlkIDogZW5yaWNoZWRfY2Zsb3dfZ3JpZClcbiAgICBvYnNlcnZhYmxlX2lkID1cbiAgbGV0IGVpZCA9XG4gICAgbWF0Y2ggZ2V0X2V2ZW50X2xpc3RfZnJvbV9vYnNlcnZhYmxlX2hpdCBvYnNlcnZhYmxlX2lkIHdpdGhcbiAgICB8IFsgYSBdIC0+IGFcbiAgICB8IFtdIC0+IGZhaWx3aXRoIChcIm5vIG9ic2VydmFibGUgaW4gdGhhdCBzdG9yeVwiIF4gc3RyaW5nKVxuICAgIHwgXyAtPiBmYWlsd2l0aCAoXCJzZXZlcmFsIG9ic2VydmFibGVzIGluIHRoYXQgc3RvcnlcIiBeIHN0cmluZylcbiAgaW5cbiAgbGV0IGV2ZW50X2lkX2xpc3QgPVxuICAgIEdyYXBoX2Nsb3N1cmUuZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuaW50X29mX3N0ZXBfaWQgKFMuUEguQi5QQi5pbmNfc3RlcF9pZCBlaWQpKVxuICAgICAgZW5yaWNoZWRfZ3JpZC5DYXVzYWwucHJlY19zdGFyXG4gIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIG91dHB1dCA9XG4gICAgdHJhbnNsYXRlIHBhcmFtZXRlciBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIChMaXN0LnJldl9tYXAgUy5QSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IChMaXN0LnJldiBldmVudF9pZF9saXN0KSlcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBvdXRwdXRcblxubGV0IGV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYlxuICAgIChwIDogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbykgYyBkIGUgZiBnID1cbiAgUy5QSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBhIGIgcCBjIGQgZSBmIGdcblxubGV0IHByaW50X211c2ljYWxfZ3JpZCBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcCBjIGQgPVxuICBTLlBILkIucHJpbnRfYmxhY2tib2FyZCBhIGIgcCBjIGRcblxubGV0IGNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGluaXQgPVxuICAgIEQuaW5pdF90YWJsZSBwYXJhbWV0ZXJzIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3JcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB7IHN0b3J5X2NvdW50ZXIgPSAxOyBzdG9yeV9saXN0ID0gaW5pdCB9XG5cbmxldCBfZ2V0X3RyYWNlX29mX3N0b3J5IChfLCBfLCBfLCB5LCBfKSA9IHRyYWNlX29mX3ByZXRyYWNlIHlcbmxldCBfZ2V0X2luZm9fb2Zfc3RvcnkgKF8sIF8sIF8sIF8sIHQpID0gdFxuXG5sZXQgdGlja19vcHQgcGFyYW1ldGVyIGJhciA9XG4gIG1hdGNoIGJhciB3aXRoXG4gIHwgTm9uZSAtPiBiYXJcbiAgfCBTb21lIChsb2dnZXIsIGJhcikgLT5cbiAgICBTb21lXG4gICAgICAoIGxvZ2dlcixcbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBsb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICBiYXIgKVxuXG5sZXQgY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCBsb2dnZXIgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyXG5cbmxldCBwcmludF9mYWlscyBsb2dnZXIgcyBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgMCAtPiAoKVxuICB8IDEgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkAuXFx0IDEgJXMgaGFzIGZhaWxlZEAuXCIgc1xuICB8IF8gLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkAuXFx0ICVpICVzcyBoYXZlIGZhaWxlZEAuXCIgbiBzXG5cbmxldCBpbmNfZmFpbHMgYSBhJyBiID1cbiAgaWYgYSA9PSBhJyB0aGVuXG4gICAgc3VjYyBiXG4gIGVsc2VcbiAgICBiXG5cbmxldCBmb2xkX3N0b3J5X3RhYmxlX2dlbiBsb2dnZXIgcGFyYW1ldGVyID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbClcbiAgICAoaGFuZGxlciA6IGthcHBhX2hhbmRsZXIpIChwcm9maWxpbmdfaW5mbyA6IHByb2ZpbGluZ19pbmZvKSBlcnJvciBzXG4gICAgKGYgOiAodHJhY2UsIHRyYWNlX3J1bnRpbWVfaW5mbyBsaXN0LCAnYSwgJ2EpIHRlcm5hcnkpIGwgYSA9XG4gIGxldCBuX3N0b3JpZXNfaW5wdXQgPSBjb3VudF9zdG9yaWVzIGwgaW5cbiAgbGV0IHByb2dyZXNzX2JhciA9XG4gICAgU29tZVxuICAgICAgKCBsb2dnZXIsXG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgKGZhbHNlLCAwLCAwLCBuX3N0b3JpZXNfaW5wdXQpIClcbiAgaW5cbiAgbGV0IGcgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3Igc3RvcnkgaW5mb1xuICAgICAgKGssIHByb2dyZXNzX2JhciwgYSwgbl9mYWlscykgPVxuICAgIGxldCBldmVudCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5IGsgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFAuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBhJyA9XG4gICAgICBmIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZSB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICAgICAgICAodHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgZmFsc2Ugc3RvcnkpXG4gICAgICAgIGluZm8gYVxuICAgIGluXG4gICAgbGV0IHByb2dyZXNzX2JhciA9IHRpY2tfb3B0IHBhcmFtZXRlciBwcm9ncmVzc19iYXIgaW5cbiAgICBsZXQgbl9mYWlscyA9IGluY19mYWlscyBhIGEnIG5fZmFpbHMgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgKHN1Y2MgaywgcHJvZ3Jlc3NfYmFyLCBhJywgbl9mYWlscylcbiAgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKF8sIF8sIGEsIG5fZmFpbHMpID1cbiAgICBELmZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgZyBsLnN0b3J5X2xpc3RcbiAgICAgICgxLCBwcm9ncmVzc19iYXIsIGEsIDApXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3Byb2dyZXNzX2Jhcl9vcHQgbG9nZ2VyIGluXG4gIGxldCAoKSA9IHByaW50X2ZhaWxzIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnIgcyBuX2ZhaWxzIGluXG4gIGVycm9yLCAocHJvZmlsaW5nX2luZm8gOiBwcm9maWxpbmdfaW5mbyksIGFcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGEgPVxuICBmb2xkX3N0b3J5X3RhYmxlX2dlblxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZSA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGFcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfd2l0aG91dF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGEgPVxuICBmb2xkX3N0b3J5X3RhYmxlX2dlbiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYVxuXG5sZXQgZ2V0X2NvdW50ZXIgc3RvcnlfbGlzdCA9IHN0b3J5X2xpc3Quc3RvcnlfY291bnRlclxubGV0IGdldF9zdG9yaWVzIHN0b3J5X2xpc3QgPSBzdG9yeV9saXN0LnN0b3J5X2xpc3RcblxubGV0IF9pbmNfY291bnRlciBzdG9yeV9saXN0ID1cbiAgeyBzdG9yeV9saXN0IHdpdGggc3RvcnlfY291bnRlciA9IHN1Y2Mgc3RvcnlfbGlzdC5zdG9yeV9jb3VudGVyIH1cblxubGV0IGJ1aWxkX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZSBib29sID1cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5CdWlsZF9ncmlkIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBsZXQgZ3JpZCA9IFMuUEguQi5QQi5DSS5Qby5LLmJ1aWxkX2dyaWQgdHJhY2UgYm9vbCBoYW5kbGVyIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5CdWlsZF9ncmlkIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBlcnJvciwgY29tcHV0YXRpb25faW5mbywgZ3JpZFxuXG5sZXQgc3RvcmVfdHJhY2UgKHBhcmFtZXRlciA6IHBhcmFtZXRlcikgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIGNvbXB1dGF0aW9uX2luZm8gZXJyb3IgdHJhY2Ugb2JzX2luZm8gc3RvcnlfdGFibGUgPVxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLlN0b3JlX3RyYWNlIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBsZXQgcHJldHJhY2UgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgbGV0IHRyYWNlMiA9IGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIGluXG4gIGxldCBib29sID0gbm90IChpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlKSBpblxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8sIGdyaWQgPVxuICAgIGJ1aWxkX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZTIgYm9vbFxuICBpblxuICBsZXQgY29tcHV0YXRpb25faW5mbyA9IFAuc2V0X2dyaWRfZ2VuZXJhdGlvbiBjb21wdXRhdGlvbl9pbmZvIGluXG4gIGxldCBzdG9yeV9pbmZvID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIChQLmNvcHkgY29tcHV0YXRpb25faW5mbykpXG4gICAgICAoTGlzdC5yZXYgb2JzX2luZm8pXG4gIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbywgc3RvcnlfbGlzdCA9XG4gICAgRC5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciBncmlkIHByZXRyYWNlXG4gICAgICBzdG9yeV9pbmZvIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcbiAgaW5cbiAgbGV0IHN0b3J5X3RhYmxlID1cbiAgICB7IHN0b3J5X2xpc3Q7IHN0b3J5X2NvdW50ZXIgPSBzdG9yeV90YWJsZS5zdG9yeV9jb3VudGVyICsgMSB9XG4gIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5TdG9yZV90cmFjZSBOb25lIGNvbXB1dGF0aW9uX2luZm9cbiAgaW5cblxuICBlcnJvciwgY29tcHV0YXRpb25faW5mbywgc3RvcnlfdGFibGVcblxubGV0IGZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBzdG9yeV90YWJsZSA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgIEQuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCB7IHN0b3J5X3RhYmxlIHdpdGggc3RvcnlfbGlzdCA9IGxpc3QgfVxuXG5sZXQgY29tcHJlc3MgP2hldXJpc3RpYyBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlID1cbiAgbWF0Y2ggcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgWyB0cmFjZSBdXG4gIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZlxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgdGhlblxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIFwiU3RhcnQgb25lIGNhdXNhbCBjb21wcmVzc2lvblwiKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgIGN1dCBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBbIHRyYWNlIF1cbiAgfCBTb21lIChTdG9yeV9qc29uLldlYWsgfCBTdG9yeV9qc29uLlN0cm9uZykgLT5cbiAgICBsZXQgZXZlbnQsIHMgPVxuICAgICAgbWF0Y2ggcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgU3RvcnlQcm9maWxpbmcuV2Vha19jb21wcmVzc2lvbiwgXCJTdGFydCBvbmUgd2VhayBjb21wcmVzc2lvblwiXG4gICAgICB8IF8gLT4gU3RvcnlQcm9maWxpbmcuU3Ryb25nX2NvbXByZXNzaW9uLCBcIlN0YXJ0IG9uZSBzdHJvbmcgY29tcHJlc3Npb25cIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICB0aGVuXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIHMpKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBQLmFkZF9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBldmVudF9saXN0ID0gZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBTLlBILkIuaW1wb3J0ID9oZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICBTLlBILmZvcmNlZF9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGxpc3Rfb3JkZXIgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IChsaXN0X29yZGVyLCBfLCBfKSA6OiBfIC0+IGxpc3Rfb3JkZXJcbiAgICAgIHwgXyAtPiBbXVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIG91dHB1dCwgbGlzdCkgPVxuICAgICAgUy5jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3Rfb3JkZXJcbiAgICBpblxuICAgIGxldCBsaXN0ID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIHByZXRyYWNlIC0+XG4gICAgICAgICAgbGV0IGV2ZW50X2xpc3QgPSBTLnRyYW5zbGF0ZV9yZXN1bHQgcHJldHJhY2UgaW5cbiAgICAgICAgICBsZXQgZXZlbnRfbGlzdCA9IFMuUEguQi5QQi5DSS5Qby5LLmNsZWFuX2V2ZW50cyBldmVudF9saXN0IGluXG4gICAgICAgICAgYnVpbGRfY29tcHJlc3NlZF90cmFjZSBldmVudF9saXN0IHByZXRyYWNlKVxuICAgICAgICBsaXN0XG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBQLnNldF9zdG9yeV9yZXNlYXJjaF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBQLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICBpZiBTLlBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuXG4gICAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIk9uZSBjb21wcmVzc2lvbiBoYXMgZmFpbGVkXCIgRXhpdCAoKVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgKClcbiAgICBpblxuICAgIGxldCBlcnJvciA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyXG4gICAgICAgICAgICBcIlxcdFxcdCAqIHJlc3VsdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgaWYgUy5QSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIF9sb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBTLlBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgXCJGQUlMXCIgMCAwIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyclxuICAgICAgICAgICAgICAgIFwiRmFpbF90b19jb21wcmVzc1wiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnJcbiAgICAgICAgICAgICAgICBcIlN1Y2NlZWRfdG9fY29tcHJlc3NcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBlcnJvclxuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxubGV0IHN0cm9uZ2x5X2NvbXByZXNzID9oZXVyaXN0aWMgcGFyYW1ldGVyID1cbiAgY29tcHJlc3MgP2hldXJpc3RpYyAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fc3Ryb25nIHBhcmFtZXRlcilcblxubGV0IHdlYWtseV9jb21wcmVzcyA/aGV1cmlzdGljIHBhcmFtZXRlciA9XG4gIGNvbXByZXNzID9oZXVyaXN0aWMgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3dlYWsgcGFyYW1ldGVyKVxuXG5sZXQgY29udmVydF90cmFjZV9pbnRvX2dyaWQgdHJhY2UgaGFuZGxlciA9XG4gIGxldCBldmVudF9saXN0ID0gZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgaW5cbiAgUy5QSC5CLlBCLkNJLlBvLksuYnVpbGRfZ3JpZCBldmVudF9saXN0XG4gICAgKG5vdCAoaXNfY29tcHJlc3NlZF90cmFjZSB0cmFjZSkpXG4gICAgaGFuZGxlclxuXG5sZXQgY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVycyA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBrYXBwYV9oYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBTLlBILkIuaW1wb3J0IHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICAgIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZSBjb25maWcgbG9nZ2VyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0ID1cbiAgICBDYXVzYWwuZW5yaWNoX2dyaWRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgbG9nZ2VyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWcgZ3JpZFxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5sZXQgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcblxubGV0IF9lbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3Jlc3NfYmFyXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlIEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoXG5cbmxldCBzb3J0X3N0b3J5X2xpc3QgPSBELnNvcnRfbGlzdFxuXG5sZXQgZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgeCA9XG4gIGxldCBhLCBsb2dfaW5mbywgYiA9XG4gICAgc29ydF9zdG9yeV9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChnZXRfc3RvcmllcyB4KVxuICBpblxuICBhLCBsb2dfaW5mbywgYlxuXG5sZXQgaGFzX29icyB4ID0gTGlzdC5leGlzdHMgVHJhY2Uuc3RlcF9pc19vYnMgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB4KVxuXG5sZXQgZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyID8oZXZlbnQgPSBTdG9yeVByb2ZpbGluZy5EdW1teSkgcGFyYW1ldGVyXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBoYW5kbGVyIHByb2ZpbGluZ19pbmZvcm1hdGlvbiBlcnJvclxuICAgIChmIDogKCdhLCAnYiwgJ2EpIGJpbmFyeSkgYSBsaXN0ID1cbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCBzdHJpbmcsIChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uKSA9XG4gICAgaWYgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pc19kdW1teSBldmVudCB0aGVuXG4gICAgICBcIlwiLCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbilcbiAgICBlbHNlXG4gICAgICAoIFN0b3J5UHJvZmlsaW5nLnN0cmluZ19vZl9zdGVwX2tpbmQgZXZlbnQsXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgICAoU29tZSAoZnVuIF8gLT4gTGlzdC5sZW5ndGggbGlzdCkpXG4gICAgICAgICAgcHJvZmlsaW5nX2luZm9ybWF0aW9uIClcbiAgaW5cbiAgbGV0IHByb2dyZXNzX2JhciA9XG4gICAgVGlja19zdG9yaWVzLnRpY2tfc3Rvcmllc1xuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhclxuICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgKGZhbHNlLCAwLCAwLCBuKVxuICBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgXywgXywgYSwgbl9mYWlsID1cbiAgICBsZXQgcmVjIGF1eCBsaXN0IChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGssIGEsIG5fZmFpbCkgPVxuICAgICAgbGV0IGV2ZW50ID0gU3RvcnlQcm9maWxpbmcuU3RvcnkgayBpblxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgaywgYSwgbl9mYWlsXG4gICAgICB8IHggOjogdGFpbCAtPlxuICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgUC5hZGRfZXZlbnRcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dF9vcHQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGEnID1cbiAgICAgICAgICAgICAgZiBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGVcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gfnByaW50X2lmX3plcm8gaGFuZGxlclxuICAgICAgICAgICAgICAgIHByb2ZpbGluZ19pbmZvcm1hdGlvbiBlcnJvciBhIHhcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYmFyID1cbiAgICAgICAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3Rvcmllc1xuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhclxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICBiYXJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbl9mYWlsID0gaW5jX2ZhaWxzIGEgYScgbl9mYWlsIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWUgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgayArIDEsIGEnLCBuX2ZhaWwpXG4gICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGsgKyAxLCBhLCBuX2ZhaWxcbiAgICAgICAgfCBTb21lIHJlbWFuZW50IC0+IGF1eCB0YWlsIHJlbWFuZW50KVxuICAgIGluXG4gICAgYXV4IGxpc3QgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIHByb2dyZXNzX2JhciwgMSwgYSwgMClcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgIGlmIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaXNfZHVtbXkgZXZlbnQgdGhlblxuICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgIGVsc2VcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gIGluXG4gIGxldCAoKSA9IHByaW50X2ZhaWxzIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnIgc3RyaW5nIG5fZmFpbCBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBhXG5cbmxldCBfZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc190aHJvdWdoX2FfZ3JpZF93aXRoX2FfcHJvZ3Jlc3NfYmFyXG4gICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZiB0IGEgPVxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHQgaGFuZGxlciBpblxuICBDYXVzYWwuZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhciBncmlkIGYgKGVycm9yLCBsb2dfaW5mbywgYSlcblxubGV0IGZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXJcbiAgICA/c2hhbGxfd2VfY29tcHV0ZTpfID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxvZ19zdGVwIGRlYnVnX21vZGUgY291bnRlciBmIHQgYSA9XG4gIGxldCAoKSA9XG4gICAgaWYgbG9nX3N0ZXAgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdC0gYmxhY2tib2FyZCBnZW5lcmF0aW9uIEAuXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgIGNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICBlcnJvciBibGFja2JvYXJkXG4gIGluXG4gIGxldCBuX3N0b3JpZXMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCAoKSA9XG4gICAgaWYgbG9nX3N0ZXAgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdC0gY29tcHV0aW5nIGNhdXNhbCBwYXN0IG9mIGVhY2ggb2JzZXJ2ZWQgZXZlbnRzICglaSlALlwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICBuX3N0b3JpZXNcbiAgaW5cbiAgKCogZ2VuZXJhdGlvbiBvZiB1bmNvbXByZXNzZWQgc3RvcmllcyAqKVxuICBsZXQgKCkgPVxuICAgIGlmIGRlYnVnX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdFxcdCogY2F1c2FsIGNvbXByZXNzaW9uIFwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgbG9nX2luZm8gPSBQLnNldF9zdGFydF9jb21wcmVzc2lvbiBsb2dfaW5mbyBpblxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHQgaGFuZGxlciBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBDYXVzYWwuZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29ic1xuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhclxuICAgICAgZ3JpZFxuICAgICAgKGZ1biBwYXJhbWV0ZXInIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igb2JzZXJ2YWJsZV9oaXQgY2F1c2FsX3Bhc3RcbiAgICAgICAgICAgKGNvdW50ZXIsIGxpc3QsIGEpIC0+XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdWNjZXNzIChjb3VudGVyLCBsaXN0LCBhKVxuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyJyBlcnJvclxuICAgICAgICAgICAgICAoU3RvcnlQcm9maWxpbmcuU3RvcnkgY291bnRlcikgTm9uZSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9ic2VydmFibGVfaWQgPSBoZWFkIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID0gUC5yZXNldF9sb2cgbG9nX2luZm8gaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIiVzXFx0XFx0KiBjYXVzYWwgY29tcHJlc3Npb24gXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogd2UgdHJhbnNsYXRlIHRoZSBsaXN0IG9mIGV2ZW50IGlkcyBpbnRvIGEgdHJhY2UgdGhhbmtzIHRvIHRoZSBibGFja2JvYWQgKilcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICB0cmFuc2xhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIFMuUEguQi5QQi5zdGVwX2lkX29mX2ludFxuICAgICAgICAgICAgICAgICAob2JzZXJ2YWJsZV9oaXQgOjogY2F1c2FsX3Bhc3QpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogd2UgY29sbGVjdCBydW4gdGltZSBpbmZvIGFib3V0IHRoZSBvYnNlcnZhYmxlICopXG4gICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgbWF0Y2ggZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICB8IFNvbWUgaW5mbyAtPlxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgeyBpbmZvIHdpdGggVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID0gY291bnRlciB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIGxvZ19pbmZvIGluZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWyBpbmZvIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGEgPVxuICAgICAgICAgICAgKGYgOiAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm8gYVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlcicgZXJyb3JcbiAgICAgICAgICAgICAgKFN0b3J5UHJvZmlsaW5nLlN0b3J5IGNvdW50ZXIpIE5vbmUgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAgIChmdW4gYSAtPiBTdG9wLnN1Y2Nlc3MgKGNvdW50ZXIgKyAxLCB0YWlsLCBhKSlcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFN0b3Auc3RvcCAoYiwgY291bnRlcikpXG4gICAgICAgICAgICAgIGEgKSlcbiAgICAgIChjb3VudGVyLCBMaXN0LnJldiBsaXN0LCBhKVxuICBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIGEpKSAtPiBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3VjY2VzcyBhKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKGEsIGNvdW50ZXIpKSAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGEsIGNvdW50ZXIpKVxuICAgIG91dHB1dFxuXG5sZXQgY29weV9sb2dfaW5mbyA9IFAuY29weVxuXG50eXBlIGNhbm9uaWNhbF9mb3JtID0gRGFnLmNhbm9uaWNhbF9mb3JtXG5cbmxldCBjb21wYXJlX2Nhbm9uaWNhbF9mb3JtID0gRGFnLmNvbXBhcmVfY2Fub25pY1xuXG5sZXQgY29tcHV0ZV9jYW5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlID1cbiAgbGV0IGdyaWQgPSBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0cmFjZSBoYW5kbGVyIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICBEYWcuZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm9uaWMgPVxuICAgIERhZy5jYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgaW5cbiAgKGVycm9yIDogZXJyb3JfbG9nKSwgKGxvZ19pbmZvIDogcHJvZmlsaW5nX2luZm8pLCAoY2Fub25pYyA6IGNhbm9uaWNhbF9mb3JtKVxuXG5tb2R1bGUgRXZlbnQgOiBCbGFja19saXN0LkV2ZW50IHdpdGggdHlwZSBldmVudCA9IHN0ZXAgPSBzdHJ1Y3RcbiAgdHlwZSBldmVudCA9IHN0ZXBcbiAgdHlwZSBlaWQgPSBpbnRcbiAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICBsZXQga2V5X29mX2V2ZW50IGV2ZW50ID1cbiAgICBpZlxuICAgICAgKFRyYWNlLnN0ZXBfaXNfcnVsZSBldmVudCB8fCBUcmFjZS5zdGVwX2lzX3BlcnQgZXZlbnQpXG4gICAgICAmJiBub3QgKFRyYWNlLmhhc19jcmVhdGlvbl9vZl9zdGVwIGV2ZW50KVxuICAgIHRoZW5cbiAgICAgIGdldF9pZF9vZl9ldmVudCBldmVudFxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgaW5pdCBlaWQgZGVmYXVsdCA9IEFycmF5Lm1ha2UgZWlkIGRlZmF1bHRcblxuICBsZXQgc2V0IHQgZWlkIHZhbHVlID1cbiAgICBsZXQgKCkgPSBBcnJheS5zZXQgdCBlaWQgdmFsdWUgaW5cbiAgICB0XG5cbiAgbGV0IGdldCB0IGVpZCA9IEFycmF5LmdldCB0IGVpZFxuZW5kXG5cbm1vZHVsZSBCbGFja0xpc3QgOiBCbGFja19saXN0LkJsYWNrbGlzdCB3aXRoIHR5cGUgRXZlbnQuZXZlbnQgPSBzdGVwID1cbkJsYWNrX2xpc3QuTWFrZSAoKEV2ZW50IDogQmxhY2tfbGlzdC5FdmVudCB3aXRoIHR5cGUgZXZlbnQgPSBzdGVwKSlcblxudHlwZSBibGFja19saXN0ID0gQmxhY2tMaXN0LnRcblxubGV0IGNyZWF0ZV9ibGFja19saXN0IG4gPSBCbGFja0xpc3QuaW5pdCBuXG5cbmxldCBibGFja19saXN0IF9wYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gX2hhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB0cmFjZSBibGFja2xpc3QgPVxuICBsZXQgYmxhY2tsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBibGFja2xpc3QgKGV2ZW50LCBfKSAtPiBCbGFja0xpc3QuYmxhY2tfbGlzdCBldmVudCBibGFja2xpc3QpXG4gICAgICBibGFja2xpc3RcbiAgICAgIChnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSlcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3RcblxubGV0IHJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2xpc3QgdHJhY2UgPVxuICBsZXQgbGlzdCwgaW50ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAodHJhY2UsIGludCkgZXZlbnQgLT5cbiAgICAgICAgaWYgQmxhY2tMaXN0LmlzX2JsYWNrX2xpc3RlZCBldmVudCBibGFja2xpc3QgdGhlblxuICAgICAgICAgIHRyYWNlLCBzdWNjIGludFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZXZlbnQgOjogdHJhY2UsIGludClcbiAgICAgIChbXSwgMCkgdHJhY2VcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAoTGlzdC5yZXYgbGlzdCwgaW50KVxuXG5sZXQgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgYmxhY2tsaXN0IHRyYWNlID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAoZnVuIF9wYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAtPlxuICAgICAgICAgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tsaXN0KVxuICAgICAgIE5vbmUgXCJcIiBTdG9yeVByb2ZpbGluZy5SZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuXG5sZXQgbGFzdF9laWRfaW5fcHJldHJhY2UgdHJhY2UgPVxuICBsZXQgbCA9IExpc3QucmV2IChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpIGluXG4gIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IDBcbiAgICB8IGggOjogdCAtPlxuICAgICAgKG1hdGNoIGdldF9pZF9vZl9ldmVudCBoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggdFxuICAgICAgfCBTb21lIGVpZCAtPiBlaWQpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBwb3BfanNvbiA9IFMuUEguQi5QQi5DSS5Qby5LLkgucG9wX2pzb25cblxubGV0IHByb2ZpbGluZ19zdGF0ZV90b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwicHJvZmlsaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfcHJvZmlsaW5nX2xvZ2dlciBwYXJhbWV0ZXJzKSApO1xuICAgIF1cblxubGV0IGVycm9yX2xpc3RfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImVycm9yc1wiLFxuICAgICAgICBMb2dnZXJzLnRvX2pzb24gKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuXG5sZXQgY29tcHV0YXRpb25fc3RlcHNfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNvbXB1dGF0aW9uIHN0ZXBzXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuIiwiKCoqXG4gKiB1dGlsaXRpZXMubWxcbiAqXG4gKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTUtMDMtMjggZmVyZXQ+XG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMTkgMTE6Mjg6MDUgZmVyZXQ+XG4gKlxuICogQVBJIGZvciBjYXVzYWwgY29tcHJlc3Npb24gKGZvciBleHBlcnQpXG4gKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAqXG4gKiBDb3B5cmlnaHQgMjAxNSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlXG4gKiBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBfID0gZGVidWdfbW9kZVxuXG50eXBlIHBhcmFtZXRlcnMgPSB7XG4gIGl0ZXJhdGlvbl9iZWZvcmVfY2FsaWJyYXRpbmc6IGludDtcbiAgZ2xvYmFsX3RpbWVfZmFjdG9yX21pbjogZmxvYXQgb3B0aW9uO1xuICBnbG9iYWxfdGltZV9mYWN0b3JfbWF4OiBmbG9hdCBvcHRpb247XG4gIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9hZnRlcl9mYWN0b3JfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9iZWZvcmVfZmFjdG9yX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21heDogaW50IG9wdGlvbjtcbiAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWluOiBmbG9hdCBvcHRpb247XG4gIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heDogZmxvYXQgb3B0aW9uO1xufVxuXG5sZXQgcGFyYW1ldGVycyA9XG4gIHtcbiAgICBpdGVyYXRpb25fYmVmb3JlX2NhbGlicmF0aW5nID0gMTA7XG4gICAgZ2xvYmFsX3RpbWVfZmFjdG9yX21pbiA9IFNvbWUgNS47XG4gICAgZ2xvYmFsX3RpbWVfZmFjdG9yX21heCA9IFNvbWUgMjAuO1xuICAgIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWluID0gU29tZSAxMDtcbiAgICB0cmFjZV9hZnRlcl9mYWN0b3JfbWluID0gU29tZSAxMDtcbiAgICB0cmFjZV9iZWZvcmVfZmFjdG9yX21heCA9IFNvbWUgNTAwO1xuICAgIHRyYWNlX2FmdGVyX2ZhY3Rvcl9tYXggPSBTb21lIDUwMDtcbiAgICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9taW4gPSBTb21lIDEwLjtcbiAgICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXggPSBTb21lIDUwMC47XG4gIH1cblxudHlwZSBzdGF0dXNfZ2xvYmFsID0ge1xuICBjb3VudGVyX21pbjogaW50O1xuICBnbG9iYWxfdGltZV9taW46IGZsb2F0IG9wdGlvbjtcbiAgZ2xvYmFsX3RpbWVfbWF4OiBmbG9hdCBvcHRpb247XG4gIGNwdV90aW1lX21pbjogZmxvYXQgb3B0aW9uO1xuICBjcHVfdGltZV9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgY3B1X3RpbWVfcmVmOiBmbG9hdCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWY6IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9hZnRlcl9yZWY6IGludCBvcHRpb247XG59XG5cbnR5cGUgc3RhdHVzID0ge1xuICBjb3VudGVyOiBpbnQ7XG4gIGdsb2JhbF90aW1lOiBmbG9hdDtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZTogaW50O1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXI6IGludDtcbiAgY3B1X3RpbWU6IGZsb2F0O1xufVxuXG5sZXQgZ2V0X3N0YXR1c19iZWZvcmUgY291bnRlciB0cmFjZSA9XG4gIHtcbiAgICBjb3VudGVyO1xuICAgIGdsb2JhbF90aW1lID0gU3lzLnRpbWUgKCk7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZSA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIHRyYWNlO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlciA9IDA7XG4gICAgY3B1X3RpbWUgPSAwLjtcbiAgfVxuXG5sZXQgZ2V0X3N0YXR1c19hZnRlciBzdGF0dXNfYmVmb3JlIHRyYWNlID1cbiAge1xuICAgIHN0YXR1c19iZWZvcmUgd2l0aFxuICAgIGNwdV90aW1lID0gU3lzLnRpbWUgKCkgLS4gc3RhdHVzX2JlZm9yZS5nbG9iYWxfdGltZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXIgPSBVdGlsaXRpZXMuc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZTtcbiAgfVxuXG5sZXQgY21wX29wdCBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gMFxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGNtcCBhIGJcblxubGV0IGNtcF9mbG9hdF9vcHQgPSBjbXBfb3B0IChjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50KVxubGV0IGNtcF9pbnRfb3B0ID0gY21wX29wdCAoY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuXG5sZXQgZ2VuX2Jpbl9vcHQgb3AgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IFNvbWUgKG9wIGEgYilcblxubGV0IGFkZF9mbG9hdF9vcHQgPSBnZW5fYmluX29wdCAoICsuIClcbmxldCBtdWx0X2Zsb2F0X29wdCA9IGdlbl9iaW5fb3B0ICggKi4gKVxubGV0IG11bHRfaW50X29wdCA9IGdlbl9iaW5fb3B0ICggKiApXG5cbmxldCBtYXhfb3B0IGNtcCBhIGIgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+IFNvbWUgYlxuICB8IFNvbWUgYSAtPlxuICAgIFNvbWVcbiAgICAgIChpZiBjbXAgYSBiID4gMCB0aGVuXG4gICAgICAgICBhXG4gICAgICAgZWxzZVxuICAgICAgICAgYilcblxubGV0IHN0b3BfYmVmb3JlIGdsb2JhbCBzdGF0dXMgPVxuICBzdGF0dXMuY291bnRlciA+IGdsb2JhbC5jb3VudGVyX21pblxuICAmJiAoY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZSlcbiAgICAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2JlZm9yZV9taW5cbiAgICAgICAgICAgPj0gMClcblxubGV0IHN0b3BfYWZ0ZXIgZ2xvYmFsIHN0YXR1cyA9XG4gIHN0YXR1cy5jb3VudGVyID4gZ2xvYmFsLmNvdW50ZXJfbWluXG4gICYmIChjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuY3B1X3RpbWUpIGdsb2JhbC5jcHVfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcilcbiAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2FmdGVyX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5jcHVfdGltZSkgZ2xvYmFsLmNwdV90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21pblxuICAgICAgICAgICA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXIpXG4gICAgICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9hZnRlcl9taW5cbiAgICAgICAgICAgPj0gMClcblxubGV0IHNldF9zdGF0dXNfaW5pdCBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgZmxvYXQxIGZsb2F0MiBjb3VudGVyID1cbiAge1xuICAgIGNvdW50ZXJfbWluID0gY291bnRlciArIHBhcmFtZXRlcnMuaXRlcmF0aW9uX2JlZm9yZV9jYWxpYnJhdGluZztcbiAgICBnbG9iYWxfdGltZV9taW4gPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgYWRkX2Zsb2F0X29wdCAoU29tZSBmbG9hdDIpXG4gICAgICAgICAgIChtdWx0X2Zsb2F0X29wdFxuICAgICAgICAgICAgICAoU29tZSAoZmxvYXQyIC0uIGZsb2F0MSkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMuZ2xvYmFsX3RpbWVfZmFjdG9yX21pbikpO1xuICAgIGdsb2JhbF90aW1lX21heCA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBhZGRfZmxvYXRfb3B0IChTb21lIGZsb2F0MilcbiAgICAgICAgICAgKG11bHRfZmxvYXRfb3B0XG4gICAgICAgICAgICAgIChTb21lIChmbG9hdDIgLS4gZmxvYXQxKSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVycy5nbG9iYWxfdGltZV9mYWN0b3JfbWF4KSk7XG4gICAgY3B1X3RpbWVfbWluID0gTm9uZTtcbiAgICBjcHVfdGltZV9tYXggPSBOb25lO1xuICAgIGNwdV90aW1lX3JlZiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW4gPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9taW4gPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4ID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4ID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX3JlZiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX3JlZiA9IE5vbmU7XG4gIH1cblxubGV0IHVwZGF0ZV9zdGF0dXNfYmVmb3JlIGdsb2JhbCBzdGF0dXMgPVxuICBpZiBzdGF0dXMuY291bnRlciA8IGdsb2JhbC5jb3VudGVyX21pbiB0aGVuXG4gICAge1xuICAgICAgZ2xvYmFsIHdpdGhcbiAgICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmID1cbiAgICAgICAgbWF4X29wdCBjb21wYXJlIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICAgIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlO1xuICAgIH1cbiAgZWxzZVxuICAgIGdsb2JhbFxuXG5sZXQgdXBkYXRlX3N0YXR1c19hZnRlciBnbG9iYWwgc3RhdHVzID1cbiAgaWYgc3RhdHVzLmNvdW50ZXIgPCBnbG9iYWwuY291bnRlcl9taW4gdGhlblxuICAgIHtcbiAgICAgIGdsb2JhbCB3aXRoXG4gICAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmID1cbiAgICAgICAgbWF4X29wdCBjb21wYXJlIGdsb2JhbC50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXI7XG4gICAgICBjcHVfdGltZV9yZWYgPSBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLmNwdV90aW1lX3JlZiBzdGF0dXMuY3B1X3RpbWU7XG4gICAgfVxuICBlbHNlXG4gICAgZ2xvYmFsXG5cbmxldCBjb21wdXRlX3N0YXR1c19yYW5nZXMgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXIgZ2xvYmFsX3N0YXR1cyA9XG4gIHtcbiAgICBnbG9iYWxfc3RhdHVzIHdpdGhcbiAgICBjcHVfdGltZV9taW4gPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgbXVsdF9mbG9hdF9vcHQgZ2xvYmFsX3N0YXR1cy5jcHVfdGltZV9yZWZcbiAgICAgICAgICAgcGFyYW1ldGVyLmNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21pbik7XG4gICAgY3B1X3RpbWVfbWF4ID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIG11bHRfZmxvYXRfb3B0IGdsb2JhbF9zdGF0dXMuY3B1X3RpbWVfcmVmXG4gICAgICAgICAgIHBhcmFtZXRlci5jb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXgpO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9iZWZvcmVfZmFjdG9yX21pbjtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heCA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYmVmb3JlX2ZhY3Rvcl9tYXg7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21pbiA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9hZnRlcl9mYWN0b3JfbWluO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9tYXggPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYWZ0ZXJfZmFjdG9yX21heDtcbiAgfVxuXG5sZXQgZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyX3doaWxlX3Jlc2hha2luZ190aGVfdHJhY2VcbiAgICBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOl9cbiAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHdlX3NoYWxsXG4gICAgbmV2ZXIgcGFyYW1ldGVycyBnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24gZlxuICAgIChzdG9yZV9yZXN1bHQgOlxuICAgICAgKCBVdGlsaXRpZXMudHJhY2UsXG4gICAgICAgIFV0aWxpdGllcy50cmFjZV9ydW50aW1lX2luZm8gbGlzdCxcbiAgICAgICAgJ2EsXG4gICAgICAgICdhIClcbiAgICAgIFV0aWxpdGllcy50ZXJuYXJ5KSB0cmFjZSAodGFibGUgOiAnYSkgPVxuICBsZXQgZiBjZmxvd19wYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgKGxhc3RfaW5mbywgc3RvcF9uZXh0LCBnbG9iYWxfc3RhdHVzLCBjb3VudGVyLCB0YWJsZSkgPVxuICAgIGlmIHN0b3BfbmV4dCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAobGFzdF9pbmZvLCB0YWJsZSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBzdGF0dXNfYmVmb3JlID0gZ2V0X3N0YXR1c19iZWZvcmUgY291bnRlciB0cmFjZSBpblxuICAgICAgbGV0IHN0b3AgPSBzdG9wX2JlZm9yZSBnbG9iYWxfc3RhdHVzIHN0YXR1c19iZWZvcmUgaW5cbiAgICAgIGxldCBnbG9iYWxfc3RhdHVzID0gdXBkYXRlX3N0YXR1c19iZWZvcmUgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYmVmb3JlIGluXG4gICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGxhc3RfaW5mbywgdGFibGUpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgIGYgY2Zsb3dfcGFyYW1ldGVycyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdGF0dXNfYWZ0ZXIgPSBnZXRfc3RhdHVzX2FmdGVyIHN0YXR1c19iZWZvcmUgdHJhY2UgaW5cbiAgICAgICAgbGV0IHN0b3AgPSBzdG9wX2FmdGVyIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2FmdGVyIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgICBzdG9yZV9yZXN1bHQgY2Zsb3dfcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgIGVycm9yIHRyYWNlIGluZm8gdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxhc3RfaW5mbyA9IFNvbWUgaW5mbyBpblxuICAgICAgICBsZXQgZ2xvYmFsX3N0YXR1cyA9IHVwZGF0ZV9zdGF0dXNfYWZ0ZXIgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYWZ0ZXIgaW5cbiAgICAgICAgbGV0IGdsb2JhbF9zdGF0dXMgPVxuICAgICAgICAgIGlmIGNvdW50ZXIgPSBnbG9iYWxfc3RhdHVzLmNvdW50ZXJfbWluIHRoZW5cbiAgICAgICAgICAgIGNvbXB1dGVfc3RhdHVzX3JhbmdlcyBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgZ2xvYmFsX3N0YXR1c1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGdsb2JhbF9zdGF0dXNcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBTdG9wLnN1Y2Nlc3MgKGxhc3RfaW5mbywgc3RvcCwgZ2xvYmFsX3N0YXR1cywgc3VjYyBjb3VudGVyLCB0YWJsZSkgKVxuICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgY291bnRlciB0cmFjZSB0YWJsZSA9XG4gICAgaWYgVXRpbGl0aWVzLmhhc19vYnMgdHJhY2UgdGhlbiAoXG4gICAgICBsZXQgc3RhcnRfaXRlcmF0aW9uID0gU3lzLnRpbWUgKCkgaW5cbiAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICB0cnkgU29tZSAoZ2xvYmFsX3RyYWNlX3NpbXBsaWZpY2F0aW9uIDAgKGVycm9yLCBsb2dfaW5mbywgdHJhY2UpKVxuICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICBpblxuICAgICAgbWF0Y2ggb3V0cHV0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHRhYmxlXG4gICAgICB8IFNvbWUgKGVycm9yLCBsb2dfaW5mbywgdHJhY2UpIC0+XG4gICAgICAgIGxldCBlbmRfc2ltcGxpZmljYXRpb24gPSBTeXMudGltZSAoKSBpblxuICAgICAgICBsZXQgc3RhdHVzID1cbiAgICAgICAgICBzZXRfc3RhdHVzX2luaXQgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXJzIHN0YXJ0X2l0ZXJhdGlvblxuICAgICAgICAgICAgZW5kX3NpbXBsaWZpY2F0aW9uIGNvdW50ZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0ID1cbiAgICAgICAgICBVdGlsaXRpZXMuZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAgICBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgZXJyb3Igd2Vfc2hhbGwgbmV2ZXIgY291bnRlciBmIHRyYWNlXG4gICAgICAgICAgICAoTm9uZSwgZmFsc2UsIHN0YXR1cywgY291bnRlciwgdGFibGUpXG4gICAgICAgIGluXG4gICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgKGZ1biAoXywgXywgXywgXywgb3V0cHV0KSAtPiBlcnJvciwgbG9nX2luZm8sIG91dHB1dClcbiAgICAgICAgICAoZnVuICgobGFzdF9pbmZvLCB0YWJsZSksIGNvdW50ZXIpIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgIFV0aWxpdGllcy5yZW1vdmVfb2JzX2JlZm9yZSBjZmxvd19wYXJhbWV0ZXJzIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBsYXN0X2luZm8gdHJhY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhdXggbG9nX2luZm8gZXJyb3IgY291bnRlciB0cmFjZSB0YWJsZSlcbiAgICAgICAgICBvdXRwdXRcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGVcbiAgaW5cbiAgYXV4IGxvZ19pbmZvIGVycm9yIDEgdHJhY2UgdGFibGVcbiIsIigqXG4gICogY2Zsb3dfanNfaW50ZXJmYWNlLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTYtMDQtMzAgMTg6MzQ6MDAgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTA0LTMwIDE4OjI0OjAwIGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqICpcbiAgKiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBKYXZhLXNjcmlwdCBzZXJ2ZXJcbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW5cbiAgKiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzXG4gICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgY2Zsb3dfc3RhdGUgPSB7XG4gIHN0ZF9sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIGVycl9sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIHByb2ZpbGluZ19sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIHN0YXR1c19sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIGN1cnJlbnRfcGhhc2U6IHN0cmluZyBvcHRpb247XG4gIHByb2dyZXNzX2JhcjogKGJvb2wgKiBpbnQgKiBpbnQgKiBpbnQpIG9wdGlvbjtcbiAgY2F1c2FsX2Zsb3dzOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICB0cml2aWFsX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICB3ZWFrX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICBzdHJvbmdfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIGVycm9yX2xpc3Q6IFV0aWxpdGllcy5lcnJvcl9sb2cgb3B0aW9uO1xufVxuXG5sZXQgaW5pdCAoKSA9XG4gIHJlZlxuICAgIHtcbiAgICAgIHN0ZF9sb2dnZXIgPSBOb25lO1xuICAgICAgZXJyX2xvZ2dlciA9IE5vbmU7XG4gICAgICBwcm9maWxpbmdfbG9nZ2VyID0gTm9uZTtcbiAgICAgIHN0YXR1c19sb2dnZXIgPSBOb25lO1xuICAgICAgY3VycmVudF9waGFzZSA9IE5vbmU7XG4gICAgICBwcm9ncmVzc19iYXIgPSBOb25lO1xuICAgICAgY2F1c2FsX2Zsb3dzID0gTm9uZTtcbiAgICAgIHRyaXZpYWxfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgd2Vha19jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICBzdHJvbmdfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgZXJyb3JfbGlzdCA9IE5vbmU7XG4gICAgfVxuXG5sZXQgZ2V0X3N0ZF9idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5zdGRfbG9nZ2VyXG5sZXQgZ2V0X2Vycl9idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5lcnJfbG9nZ2VyXG5sZXQgZ2V0X3Byb2ZpbGluZ19idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5wcm9maWxpbmdfbG9nZ2VyXG5sZXQgZ2V0X2JyYW5jaF9hbmRfY3V0X3N0YXR1cyBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0YXR1c19sb2dnZXJcbmxldCBnZXRfcHJvZ3Jlc3NfYmFyIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUucHJvZ3Jlc3NfYmFyXG5sZXQgZ2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5jdXJyZW50X3BoYXNlXG5sZXQgZ2V0X2NhdXNhbF9mbG93X3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuY2F1c2FsX2Zsb3dzXG5sZXQgZ2V0X3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS50cml2aWFsX2NvbXByZXNzaW9uXG5sZXQgZ2V0X3dlYWtfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS53ZWFrX2NvbXByZXNzaW9uXG5sZXQgZ2V0X3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0cm9uZ19jb21wcmVzc2lvblxubGV0IGdldF9lcnJvcl9saXN0IGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuZXJyb3JfbGlzdFxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgc3RyaW5nID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY3VycmVudF9waGFzZSA9IFNvbWUgc3RyaW5nIH1cblxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IGNmbG93X3N0YXRlX3B0ciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGN1cnJlbnRfcGhhc2UgPSBOb25lIH1cblxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyX2F1eCBjZmxvd19zdGF0ZV9wdHIgYmFyID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggcHJvZ3Jlc3NfYmFyID0gU29tZSBiYXIgfVxuXG5sZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eCBjZmxvd19zdGF0ZV9wdHIgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9ncmVzc19iYXIgPSBOb25lIH1cblxubGV0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGNhdXNhbF9mbG93cyA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCB0cml2aWFsX2NvbXByZXNzaW9uID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHdlYWtfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBzdHJvbmdfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfZXJyb3JfbG9nX2F1eCBjZmxvd19zdGF0ZV9wdHIgZXJyb3IgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBlcnJvcl9saXN0ID0gU29tZSBlcnJvciB9XG5cbmxldCByZWRpcmVjdF9zdGRfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHN0ZF9sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IHJlZGlyZWN0X2Vycl9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggZXJyX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9maWxpbmdfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggc3RhdHVzX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgbGlmdCBmIGNmbG93X3N0YXRlX3B0cl9vcHQgZGF0YSA9XG4gIG1hdGNoIGNmbG93X3N0YXRlX3B0cl9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNmbG93X3N0YXRlX3B0ciAtPiBjZmxvd19zdGF0ZV9wdHIgOj0gZiBjZmxvd19zdGF0ZV9wdHIgZGF0YVxuXG5sZXQgbGlmdF9yZXNldCBmIGNmbG93X3N0YXRlX3B0cl9vcHQgPVxuICBsaWZ0IChmdW4geCAoKSAtPiBmIHgpIGNmbG93X3N0YXRlX3B0cl9vcHQgKClcblxubGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IGxpZnQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eFxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBsaWZ0X3Jlc2V0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4XG5sZXQgc2F2ZV9wcm9ncmVzc19iYXIgPSBsaWZ0IHNhdmVfcHJvZ3Jlc3NfYmFyX2F1eFxubGV0IHJlc2V0X3Byb2dyZXNzX2JhciA9IGxpZnRfcmVzZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eFxubGV0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGUgPSBsaWZ0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4XG5sZXQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlX2F1eFxubGV0IHNhdmVfZXJyb3JfbGlzdCA9IGxpZnQgc2F2ZV9lcnJvcl9sb2dfYXV4XG5sZXQgcmVkaXJlY3Rfc3RkX2J1ZmZlciA9IGxpZnQgcmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXhcbmxldCByZWRpcmVjdF9lcnJfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9lcnJfYnVmZmVyX2F1eFxubGV0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXJfYXV4XG5sZXQgcmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXJfYXV4XG4iLCIoKipcbiAgKiBjb21wcmVzc2lvbl9tYWluLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTEtMTAtMTkgMTY6NTI6NTUgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTA2LTEwIDExOjEwOjM0IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIFUgPSBVdGlsaXRpZXNcbm1vZHVsZSBTID0gVS5TXG5cbnR5cGUgc2VjcmV0X2xvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuXG5sZXQgaW5pdF9zZWNyZXRfbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluaXRfbG9nX2luZm9cblxudHlwZSBzZWNyZXRfcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXJcblxubGV0IGJ1aWxkX3BhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguYnVpbGRfcGFyYW1ldGVyXG5sZXQgZ2V0X2xvZ2dlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlclxubGV0IGxvZ19zdGVwID0gdHJ1ZVxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxubGV0IGR1bXBfcHJvZmlsaW5nX2luZm8gPSB0cnVlXG5sZXQgXyA9IGR1bXBfcHJvZmlsaW5nX2luZm9cbmxldCBidWNrZXRfc29ydCA9IHRydWVcblxuKCoqIGZhbHNlIC0+IG9ubHkgdGhlIGZpcnN0IHN0b3J5IHBlciBvYnNlcnZhYmxlIGhpdDsgdHJ1ZSAtPiBhbGwgc3RvcmllcyBwZXIgb2JzIGhpdCAqKVxubGV0IGdldF9hbGxfc3RvcmllcyA9IGZhbHNlXG5cbmxldCBtYXhfbnVtYmVyX29mX2l0dGVyYXRpb25zID0gTm9uZVxubGV0IHdlX3NoYWxsX25vdCBfID0gZmFsc2VcbmxldCB3ZV9zaGFsbCBfID0gdHJ1ZVxubGV0IGRvX25vdF9sb2cgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGZhbHNlXG5cbmxldCBjb21wcmVzc19hbmRfcHJpbnQgcGFyYW1ldGVyIH5kb3RGb3JtYXQgP2pzX2ludGVyZmFjZSBlbnYgbG9nX2luZm8gc3RlcF9saXN0XG4gICAgPVxuICAoKmxldCBjYWxsZWRfZnJvbSA9IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciBpbiopXG4gIGxldCBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgbG9nX3N0ZXAgaW5cbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciBkZWJ1Z19tb2RlIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIG1heF9udW1iZXJfb2ZfaXR0ZXJhdGlvbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILmRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyBwYXJhbWV0ZXJcbiAgICB8IFNvbWUgaSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9pdHRlcmF0aW9uX2JvdW5kIHBhcmFtZXRlciBpXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIGlmIGdldF9hbGxfc3RvcmllcyB0aGVuXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9hbGxfc3Rvcmllc19wZXJfb2JzIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBpZiBidWNrZXRfc29ydCB0aGVuXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnVzZV9idWNrZXRfc29ydCBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnVzZV9mdXNpb25fc29ydCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IG1vZGUgPSBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jb21wcmVzc2lvbl9tb2RlIGluXG4gIGxldCBjYXVzYWxfdHJhY2Vfb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9jYXVzYWxfdHJhY2UgbW9kZSBpblxuICBsZXQgd2Vha19jb21wcmVzc2lvbl9vbiA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3dlYWtfY29tcHJlc3Npb24gbW9kZSBpblxuICBsZXQgc3Ryb25nX2NvbXByZXNzaW9uX29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfc3Ryb25nX2NvbXByZXNzaW9uIG1vZGUgaW5cbiAgbGV0IGVycm9yID0gVS5lcnJvcl9pbml0IGluXG4gIGxldCBoYW5kbGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5pbml0X2hhbmRsZXIgZW52IGluXG4gIGxldCAoKSA9XG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdGFydCwgXCJTdGFydGluZyBDb21wcmVzc2lvblwiKSlcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUxID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMyA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGU0ID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgKCkgPSBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9jYXVzYWxfZmxvd190YWJsZSBqc19pbnRlcmZhY2UgdGFibGUxIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGUyXG4gIGluXG4gIGxldCAoKSA9IENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlIHRhYmxlMyBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGU0XG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X3N0ZF9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X2Vycl9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lXG4gICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlclxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKSlcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgbWF0Y2gganNfaW50ZXJmYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gcGFyYW1ldGVyXG4gICAgfCBTb21lIF9qc19pbnRlcmZhY2VfcHRyIC0+XG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciAoZnVuIHMgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUganNfaW50ZXJmYWNlIHMpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyXG4gICAgICAgICAgKENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3Byb2dyZXNzX2JhciBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3Jlc2V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlc2V0X3Byb2dyZXNzX2JhciBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3NhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9lcnJvcl9saXN0IGpzX2ludGVyZmFjZSBlcnJvcilcbiAgICAgIGluXG4gICAgICBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX25vbmUgcGFyYW1ldGVyIGluXG4gIGxldCBwYXJhbWV0ZXJfY2F1c2FsID1cbiAgICBpZiBjYXVzYWxfdHJhY2Vfb24gdGhlblxuICAgICAgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zaHV0X2Rvd25fc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXJfd2VhayA9XG4gICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlcl9zdHJvbmcgPVxuICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cblxuICBsZXQgZW1wdHlfY29tcHJlc3Npb24gPSBlcnJvciwgbG9nX2luZm8sIHRhYmxlMSwgdGFibGUyLCB0YWJsZTMsIHRhYmxlNCBpblxuICBsZXQgc3RlcF9saXN0ID0gVS50cmFjZV9vZl9wcmV0cmFjZSBzdGVwX2xpc3QgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsLCBfdHJpdmlhbCwgd2Vhaywgc3Ryb25nID1cbiAgICBpZlxuICAgICAgKG5vdCBjYXVzYWxfdHJhY2Vfb24pICYmIChub3Qgd2Vha19jb21wcmVzc2lvbl9vbilcbiAgICAgICYmIG5vdCBzdHJvbmdfY29tcHJlc3Npb25fb25cbiAgICB0aGVuXG4gICAgICBlbXB0eV9jb21wcmVzc2lvblxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RlcF9saXN0ID1cbiAgICAgICAgVS5yZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgc3RlcF9saXN0XG4gICAgICBpblxuICAgICAgaWYgbm90IChVLmhhc19vYnMgc3RlcF9saXN0KSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIrIE5vIGNhdXNhbCBmbG93IGZvdW5kQC5cIlxuICAgICAgICBpblxuICAgICAgICBlbXB0eV9jb21wcmVzc2lvblxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgKGlmIHdlYWtfY29tcHJlc3Npb25fb24gfHwgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgICAgICAgICAgIFwiKyBQcm9kdWNpbmcgY2F1c2FsIGNvbXByZXNzaW9uc0AuXCJcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBcIisgUHJvZHVjaW5nIGNhdXNhbCB0cmFjZXNALlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGFzdF9laWQgPSBVLmxhc3RfZWlkX2luX3ByZXRyYWNlIHN0ZXBfbGlzdCBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGVwX2xpc3QgPVxuICAgICAgICAgIFUuc3BsaXRfaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogY2F1c2FsIGNvbXByZXNzaW9uIHdpdGhvdXQgYW55IHNpbXBsaWZpY2F0aW9uIChqdXN0IHBhcnRpYWwgb3JkZXIgY29tcHJlc3Npb24pKilcbiAgICAgICAgKCogdGhpcyBpcyB2ZXJ5IGNvc3RseSwgYW5kIG1haW5seSBmb3IgdGVhY2hpbmcgcHVycG9zZSAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfdGFibGUgPVxuICAgICAgICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuIChcbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfY2F1c2FsIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gYmxhY2tib2FyZCBnZW5lcmF0aW9uQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0ZXBfbGlzdCA9XG4gICAgICAgICAgICAgIFUubWFrZV91bmFtYmlndW91cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgVS5jb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgJiYgbG9nX3N0ZXAgdGhlblxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlxcdCAtIHByZXR0eSBwcmludGluZyB0aGUgZ3JpZEAuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8sIGVycm9yID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBVLmV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIFwiYVwiIDAgMCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBVLnByaW50X211c2ljYWxfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsb2dfaW5mbywgZXJyb3JcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgIFUuZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuX3N0b3JpZXMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gY29tcHV0aW5nIGNhdXNhbCBwYXN0IG9mIGVhY2ggb2JzZXJ2ZWQgZXZlbnRzICglaSlALlwiXG4gICAgICAgICAgICAgICAgICBuX3N0b3JpZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0XFx0ICogY2F1c2FsIGNvbXByZXNzaW9uIEAuXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCpcdFx0bGV0IGxvZ19pbmZvID0gVS5TLlBILkIuUEIuQ0kuUG8uSy5QLnNldF9zdGFydF9jb21wcmVzc2lvbiBsb2dfaW5mbyBpbiAqKVxuICAgICAgICAgICAgICAoKiBXZSB1c2UgdGhlIGdyaWQgdG8gZ2V0IHRoZSBjYXVzYWwgcHJlY2VkZW5jZSAocHJlZCogKSBvZiBlYWNoIG9ic2VydmFibGUgKilcbiAgICAgICAgICAgICAgbGV0IGdyaWQgPSBVLmNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHN0ZXBfbGlzdCBoYW5kbGVyIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGVucmljaGVkX2dyaWQgPVxuICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICAuZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2ZfZWFjaF9ub2RlX3dpdGhvdXRfYV9wcm9ncmVzc19iYXJcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBQYXJhbWV0ZXIubG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGxvZ2dlciAtPlxuICAgICAgICAgICAgICAgICAgICBDYXVzYWwucHJpbnRfc3RhdCBsb2dnZXIgcGFyYW1ldGVyIGhhbmRsZXIgZW5yaWNoZWRfZ3JpZFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0IC0gY2F1c2FsIGZsb3cgY29tcHJlc3Npb24gKCVpKUAuXCIgbl9zdG9yaWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIHdlIGZvbGQgdGhlIGxpc3Qgb2Ygb2JlcnZhYmxlIGhpdCwgYW5kIGZvciBlYWNoIG9uZSBjb2xsZWN0IHRoZSBjYXVzYWwgcGFzdCAqKVxuICAgICAgICAgICAgICBVLmZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIH5ldmVudDpTdG9yeVByb2ZpbGluZy5Db2xsZWN0X3RyYWNlc1xuICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl9cbiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RvcnlfbGlzdCBvYnNlcnZhYmxlX2lkIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXHRcXHQgKiBjYXVzYWwgY29tcHJlc3Npb24gQC5cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgb25lIGNhdXNhbCBjb21wcmVzc2lvblwiICkpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uID1cbiAgICAgICAgICAgICAgICAgICAgVS5jYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGVfaGl0IHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgXCJjb21wcmVzc2lvbl9tYWluLCBsaW5lIDIwMTRcIiBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgZW5yaWNoZWRfZ3JpZCBvYnNlcnZhYmxlX2lkXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFUuZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWRcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGluZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuZ2V0X2NvdW50ZXIgc3RvcnlfbGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgWyBpbmZvIF1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfYXJyYXkgPVxuICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgdHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uIGluZm8gc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X2FycmF5KVxuICAgICAgICAgICAgICAgIHRhYmxlMSAoTGlzdC5yZXYgbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV9saXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdFxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTFcbiAgICAgICAgaW5cbiAgICAgICAgKCogTm93IGNhdXNhbCBjb21wcmVzc2lvbiwgd2l0aCBkZXRlY3Rpb24gb2Ygc2lwaG9ucyAmIGRldGVjdGlvbiBvZiBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgbGV0IHBhcmFtZXRlcl9kZWVwZXIgPVxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2thc2FfcGFyYW1ldGVyc1xuICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMudXBkYXRlX3ByZWZpeFxuICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBcIlxcdFxcdFxcdFwiKVxuICAgICAgICAgICAgcGFyYW1ldGVyX2NhdXNhbFxuICAgICAgICBpblxuICAgICAgICBsZXQgb25lX2l0ZXJhdGlvbl9vZl9jb21wcmVzc2lvbiAobG9nX2luZm8sIGVycm9yLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCA9XG4gICAgICAgICAgICBpZiBHcmFwaF9jbG9zdXJlLmlnbm9yZV9mbG93X2Zyb21fb3V0Z29pbmdfc2lwaG9uIHRoZW5cbiAgICAgICAgICAgICAgVS5maWxsX3NpcGhvbiBwYXJhbWV0ZXJfZGVlcGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiBVLnByaW50X3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGV2ZW50X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QgPVxuICAgICAgICAgICAgaWYgUGFyYW1ldGVyLmRvX2dsb2JhbF9jdXQgdGhlblxuICAgICAgICAgICAgICBVLmN1dCBwYXJhbWV0ZXJfZGVlcGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUGFyYW1ldGVyLmN1dF9wc2V1ZG9faW52ZXJzZV9ldmVudCB0aGVuXG4gICAgICAgICAgICBVLnJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgcGFyYW1ldGVyX2RlZXBlclxuICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgIGluXG4gICAgICAgICgqIFRoaXMgZm9uY3Rpb24gaXRlciB0aGUgY2F1c2FsIGNvbXByZXNzaW9uIHVudGlsIGEgZml4cG9pbnQgaXMgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgc2l6ZSA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgcGFyYW1ldGVyXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZSBrJyB3aGVuIGsgPj0gaycgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHQtIG1heCBudW1iZXIgb2YgaXRlcmF0aW9ucyByZWFjaGVkLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHRcXHQtIHN0YXJ0IGl0ZXJhdGlvbiAlaSwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAoayArIDEpIHNpemVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgIChvbmVfaXRlcmF0aW9uX29mX2NvbXByZXNzaW9uIChsb2dfaW5mbywgZXJyb3IsIGV2ZW50X2xpc3QpKVxuICAgICAgICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiJXNcXHQtIGl0ZXJhdGlvbnMgc3RvcHBlZCBieSB0aGUgZW5kLXVzZXIsICVpIGV2ZW50cyBcXFxuICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgICAgfCBTb21lIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnKSAtPlxuICAgICAgICAgICAgICBpZiBVLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdCcgPCBVLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IChrICsgMSkgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCcpXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiJXNcXHQtIGEgZml4cG9pbnQgaGFzIGJlZW4gcmVhY2hlZCwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnXG4gICAgICAgICAgICAgICkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIlc1xcdC0gc2ltcGxpZnkgdGhlIHRyYWNlLCAlaSBldmVudHMgQC5cIlxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgKFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB8fCBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfYmxhY2tsaXN0X2V2ZW50cyBwYXJhbWV0ZXIgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfd2VhayBpblxuICAgICAgICAgICAgICBsZXQgYmxhY2tsaXN0ID0gVS5jcmVhdGVfYmxhY2tfbGlzdCAobGFzdF9laWQgKyAxKSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtfc3RvcnlfdGFibGUpID1cbiAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0XG4gICAgICAgICAgICAgICAgLmZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2Jhcl93aGlsZV9yZXNoYWtpbmdfdGhlX3RyYWNlXG4gICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB3ZV9zaGFsbCB3ZV9zaGFsbF9ub3RcbiAgICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnQucGFyYW1ldGVycyBhdXhcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgcmVtb3ZlIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBjb2xsZWN0aW5nIG9uZSBuZXcgdHJhY2VcIiApKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5yZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIChkb19ub3RfbG9nIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgY29tcHV0ZSBjYXVzYWwgY29tcHJlc3Npb24gKilcbiAgICAgICAgICAgICAgICAgICAgVS5jdXQgKGRvX25vdF9sb2cgcGFyYW1ldGVyKSB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIgPVxuICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tsaXN0IHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIFUud2Vha2x5X2NvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMykgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvIHRhYmxlM1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuYmxhY2tfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGUyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlM1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKSlcbiAgICAgICAgICAgICAgICAgIHN0ZXBfbGlzdFxuICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgd2Vha19zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfY2F1c2FsIGluXG4gICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydFxuICAgICAgICAgICAgICAgIC5mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJfd2hpbGVfcmVzaGFraW5nX3RoZV90cmFjZVxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3Igd2Vfc2hhbGwgd2Vfc2hhbGxfbm90XG4gICAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0LnBhcmFtZXRlcnMgYXV4XG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIHdlIHJlbW92ZSBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU3RvcnlfanNvbi5JbnByb2dyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgY29sbGVjdGluZyBvbmUgbmV3IHRyYWNlXCIgKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICAgICAgICAgIFUucmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIHdlIGNvbXB1dGUgY2F1c2FsIGNvbXByZXNzaW9uICopXG4gICAgICAgICAgICAgICAgICAgIFUuY3V0IChkb19ub3RfbG9nIHBhcmFtZXRlcikgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5mbyB0cmFjZSB0YWJsZSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGluZm8sIHRhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluZm8gdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBpbmZvLCB0YWJsZSlcbiAgICAgICAgICAgICAgICAgIHN0ZXBfbGlzdCB0YWJsZTJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbl9jYXVzYWxfc3RvcmllcyA9IFUuY291bnRfc3RvcmllcyBjYXVzYWxfc3RvcnlfdGFibGUgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgd2Vha2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3dlYWsgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlxcdCAtIHdlYWsgZmxvdyBjb21wcmVzc2lvbiAoJWkpQC5cIiBuX2NhdXNhbF9zdG9yaWVzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgYmxhY2tsaXN0ID0gVS5jcmVhdGVfYmxhY2tfbGlzdCAobGFzdF9laWQgKyAxKSBpblxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fd2VhayBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfYmxhY2tsaXN0LCB3ZWFrbHlfc3RvcnlfdGFibGUpID1cbiAgICAgICAgICAgICAgICAgIFUuZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBcIndlYWsgY29tcHJlc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgbGlzdF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgc3RvcnlfbGlzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFUud2Vha2x5X2NvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlIGxpc3RfaW5mbyBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2Ugc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tsaXN0LCBzdG9yeV9saXN0KSlcbiAgICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlIChibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIsIHRhYmxlM1xuICAgICAgICBpblxuICAgICAgICBsZXQgbl93ZWFrX3N0b3JpZXMgPSBVLmNvdW50X3N0b3JpZXMgd2Vha2x5X3N0b3J5X3RhYmxlIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICBpZiBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlbiAoXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3N0cm9uZyBpblxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwYXJhbWV0ZXJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIlxcdCAtIHN0cm9uZyBmbG93IGNvbXByZXNzaW9uICglaSlALlwiIG5fd2Vha19zdG9yaWVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICBVLmZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBcInN0cm9uZ19jb21wcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86X1xuICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciByZWZpbmVkX2V2ZW50X2xpc3QgbGlzdF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICBzdHJvbmdseV9zdG9yeV90YWJsZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgIFUuY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICByZWZpbmVkX2V2ZW50X2xpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9pbmZvIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSlcbiAgICAgICAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGUgdGFibGU0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlNFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGNhdXNhbF90YWJsZSxcbiAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGUsXG4gICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlLFxuICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlIClcbiAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhdXNhbFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIlwiIFwiXCJcbiAgICAgICAgICBleHBvcnRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igd2Vha1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIldlYWtseVwiXG4gICAgICAgICAgXCJ3ZWFrbHkgXCIgZXhwb3J0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBfbG9nX2luZm8gPVxuICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0cm9uZ1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIlN0cm9uZ2x5XCJcbiAgICAgICAgICBcInN0cm9uZ2x5IFwiIGV4cG9ydFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdWNjZXNzLCBcIkNvbXByZXNzaW9uIGNvbXBsZXRlZFwiKSlcbiAgaW5cbiAgbGV0IF8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfbG9nZ2VyXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgaW5cbiAgbGV0IF8gPVxuICAgIEV4Y2VwdGlvbi5wcmludF9mb3JfS2FTaW1cbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3JcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvbl9tZXNzYWdlIH5ub25lIH53ZWFrIH5zdHJvbmcgfnNlbmRfbWVzc2FnZSA9XG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIHJlZlxuICAgICAgKENvbXByZXNzaW9uX21haW4uYnVpbGRfcGFyYW1ldGVyXG4gICAgICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIH5zZW5kX21lc3NhZ2Ugfm5vbmUgfndlYWtcbiAgICAgICAgIH5zdHJvbmcgKCkpXG4gIGluXG4gIGZ1biB0ZXh0IC0+XG4gICAgdHJ5XG4gICAgICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgXCJDT05GSUdcIiAtPlxuICAgICAgICAgICAgbGV0IGNvbmYgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9qc29uIHN0IGIgaW5cbiAgICAgICAgICAgIGxldCBub25lID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vbmVcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgd2VhayA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ3ZWFrXCIgY29uZilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gd2Vha1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHN0cm9uZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJzdHJvbmdcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdHJvbmdcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBhcmFtZXRlciA6PVxuICAgICAgICAgICAgICAgIENvbXByZXNzaW9uX21haW4uYnVpbGRfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIH5zZW5kX21lc3NhZ2VcbiAgICAgICAgICAgICAgICAgIH5ub25lIH53ZWFrIH5zdHJvbmcgKClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIHwgXCJSVU5cIiAtPlxuICAgICAgICAgICAgbGV0IGVudiwgc3RlcHMgPVxuICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgICAgIChUcmFjZS5mb2xkX3RyYWNlXG4gICAgICAgICAgICAgICAgICAgKGZ1biBfZW52IHN0ZXBzIHN0ZXAgLT4gc3RlcCA6OiBzdGVwcylcbiAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gW10pKVxuICAgICAgICAgICAgICAgIHN0IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBDb21wcmVzc2lvbl9tYWluLmNvbXByZXNzX2FuZF9wcmludCAhcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgfmRvdEZvcm1hdDpDYXVzYWwuSHRtbCBlbnZcbiAgICAgICAgICAgICAgICAoQ29tcHJlc3Npb25fbWFpbi5pbml0X3NlY3JldF9sb2dfaW5mbyAoKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgc3RlcHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5qc29uX2Vycm9yIChcIkludmFsaWQgS2FTdG9yIG1lc3NhZ2U6IFwiIF4geCkpKVxuICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyB0ZXh0KVxuICAgIHdpdGggZSAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmVwcmludGYgXCIlc0AuXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKSBpblxuICAgICAgKCkgKCpUT0RPKilcbiIsInR5cGUgJ2Egc3VwZXJsaXN0ID0gRWx0IG9mICdhIHwgU3VwZXJfbGlzdCBvZiAnYSBzdXBlcmxpc3QgbGlzdCBsaXN0XG5cbmxldCByZWMgZm9sZCBmIGEgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IEVsdCBlbHQgLT4gZiBhIGVsdFxuICB8IFN1cGVyX2xpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCAoTGlzdC5mb2xkX2xlZnQgKGZvbGQgZikpIGEgbFxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIGwyIHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IF8gLT4gLTEpXG4gIHwgaDEgOjogdDEgLT5cbiAgICAobWF0Y2ggbDIgd2l0aFxuICAgIHwgW10gLT4gMVxuICAgIHwgaDIgOjogdDIgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlIGgxIGgyIGluXG4gICAgICAobWF0Y2ggY21wIHdpdGhcbiAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSB0MSB0MlxuICAgICAgfCBfIC0+IGNtcCkpXG5cbmxldCByZWMgY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBFbHQgYSwgRWx0IGIgLT4gY29tcGFyZSBhIGJcbiAgfCBTdXBlcl9saXN0IGEsIFN1cGVyX2xpc3QgYiAtPlxuICAgIGNvbXBhcmVfbGlzdCAoY29tcGFyZV9saXN0IChjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlKSkgYSBiXG4gIHwgRWx0IF8sIFN1cGVyX2xpc3QgXyAtPiAtMVxuICB8IFN1cGVyX2xpc3QgXywgRWx0IF8gLT4gMVxuXG5sZXQgcmVjIHNvcnQgY29tcGFyZSBzdXBlcmxpc3QgPVxuICBtYXRjaCBzdXBlcmxpc3Qgd2l0aFxuICB8IEVsdCBhIC0+IEVsdCBhXG4gIHwgU3VwZXJfbGlzdCBhIC0+XG4gICAgU3VwZXJfbGlzdFxuICAgICAgKExpc3QucmV2X21hcFxuICAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIGxldCBsJyA9IExpc3QucmV2X21hcCAoc29ydCBjb21wYXJlKSBsIGluXG4gICAgICAgICAgIGxldCBsJyA9IExpc3Quc29ydCAoY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSkgbCcgaW5cbiAgICAgICAgICAgbCcpXG4gICAgICAgICAoTGlzdC5yZXYgYSkpXG5cbmxldCBkdW1wX3N1cGVyX2xpc3QgZiBzIGwgPVxuICBsZXQgcmVjIGF1eCBkZXB0aCBmIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgRWx0IGEgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzJWFALFwiIGRlcHRoIHMgYVxuICAgIHwgU3VwZXJfbGlzdCBsIC0+XG4gICAgICBQcC5saXN0IFBwLmN1dFxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AsJWFcIiBkZXB0aFxuICAgICAgICAgICAgKFBwLmxpc3QgUHAuY3V0IChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJXNALCVhXCIgZGVwdGggKGF1eCAoXCItLVwiIF4gZGVwdGgpKSBsKSlcbiAgICAgICAgICAgIGwpXG4gICAgICAgIGYgbFxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdQC5cIiAoYXV4IFwiLT5cIikgbFxuXG50eXBlICdhIGluZm8gPSB7IHByZWRfMTogaW50IGxpc3Q7IGNvbmZsaWN0XzE6IGludCBsaXN0OyBsYWJlbDogJ2E7IGRlcHRoOiBpbnQgfVxuXG5sZXQgY29tcGFyZV9mc3RfdHJpcGxlIChhLCBfLCBfKSAoYiwgXywgXykgPSBjb21wYXJlIGEgYlxuXG5sZXQgc21hc2ggY29tcGFyZSBsID1cbiAgbGV0IHJlYyBhdXggdG9fZG8gb2xkIGN1cnJlbnQgYWNjdSA9XG4gICAgbWF0Y2ggdG9fZG8gd2l0aFxuICAgIHwgW10gLT4gY3VycmVudCA6OiBhY2N1XG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGNvbXBhcmUgaCBvbGQgPSAwIHRoZW5cbiAgICAgICAgYXV4IHQgb2xkIChoIDo6IGN1cnJlbnQpIGFjY3VcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4IHQgaCBbIGggXSAoY3VycmVudCA6OiBhY2N1KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBFbHQgYSAtPiBFbHQgYVxuICB8IFN1cGVyX2xpc3QgbCAtPlxuICAgIFN1cGVyX2xpc3RcbiAgICAgIChMaXN0LnJldlxuICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjY3UgbCAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgaCA6OiB0IC0+IGF1eCB0IGggWyBoIF0gYWNjdSlcbiAgICAgICAgICAgIFtdIGwpKVxuXG4oKmxldCBsID1cbiAgICBTdXBlcl9saXN0XG4gICAgICBbXG4gICAgICAgIFtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFtFbHQgKDIsMCwwKTtFbHQgKDMsMCwwKTtFbHQgKDQsMCwwKV07XG4gICAgICAgICAgICAgIFtFbHQgKDEsMSwxKTtFbHQgKDIsMSwxKTtFbHQgKDMsMSwxKV07XG4gICAgICAgICAgICAgIFtFbHQgKDIsMiwyKTtFbHQgKDQsMiwyKTtFbHQgKDUsMywzKV07XG4gICAgICAgICAgICAgIFtFbHQgKDEsNCw0KTtFbHQgKDIsNCw0KTtFbHQgKDMsNCw0KV1dO1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtbRWx0ICgxLDUsNSk7RWx0ICgyLDUsNSldXTtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbW0VsdCAoMSw2LDYpO0VsdCAoMiw2LDYpXV1dXTs7XG5cbiAgbGV0IGR1bXBfdHJpcGxlIChhLGIsYykgPSAgIChcIihcIl4oc3RyaW5nX29mX2ludCBhKV5cIixcIl4oc3RyaW5nX29mX2ludCBiKV5cIixcIl4oc3RyaW5nX29mX2ludCBjKV5cIilcIilcblxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsXG4gIGxldCBsMSA9IHNvcnQgY29tcGFyZV9mc3RfdHJpcGxlIGxcbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbDFcbiAgbGV0IGwyID0gc21hc2ggKGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmVfZnN0X3RyaXBsZSkgbDFcbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbDIgKilcbigqXG5sZXQgbm9ybWFsX2Zvcm0gcm9vdCBjb21wYXJlIGYgPSBcbiAgbGV0IGRlYWxfd2l0aF9lbHQgZWx0ID0gXG4gICAgbGV0IGluZm8gPSBmIHggaW4gXG4gICAgbGV0IG5vZGUgPSAoaW5mby5sYWJlbCxpbmZvLmRlcHRoLExpc3QubGVuZ3RoIGluZm8ucHJlZF8xLExpc3QubGVuZ3RoIGluZm8uY29uZmxpY3RfMSkgaW4gXG4gICAgbm9kZSxpbmZvLnByZWRfMSxpbmZvLmNvbmZsaWN0XzEgXG4gIGluIFxuXG4gIFxuICBsZXQgcmVjIGF1eCBjdXJyZW50X2xheWVyIG5leHRfbGF5ZXIgYWNjdSA9IFxuICAgIG1hdGNoIFxuICAgICAgY3VycmVudF9sYXllciBcbiAgICB3aXRoIFxuICAgIHwgTGlzdCBsICAtPiBcblxuICAgIHwgU3VwZXJfbGlzdCBsIC0+IFxuICAgICAgICBsZXQgZXh0ZW5kZWRfbGlzdCA9IExpc3QucmV2X21hcCBkZWFsX3dpdGhfZWx0IGwgaW4gXG4gICAgICAgIGxldCBzb3J0ZWRfbGlzdCA9IExpc3Quc29ydCBjb21wYXJlX2ZzdF90cmlwbGUgZXh0ZW5kZWRfbGlzdCBpbiBcbiAgICAgICAgbGV0IHNtYXNoX2xpc3QgPSBzbWFzaCBjb21wYXJlX2ZzdF90cmlwbGUgZXh0ZW5kZWRfbGlzdCBpbiBcbiAgICAgICAgbGV0IGluZm9fb2YgeCA9IFxuICAgICAgICAgIGxldCBpbmZvID0gZiB4IGluIFxuICAgICAgICAgIChpbmZvLmxhYmVsLGluZm8uZGVwdGgsTGlzdC5sZW5ndGggaW5mby5wcmVkXzEsTGlzdC5sZW5ndGggaW5mby5jb25mbGljdF8xKVxuICAgICAgICBpbiBcbiAgICAgICAgXG4gICAgICAgICAgXG4gICAgICBlbmRcbiAgICB8IEh1YiBsIC0+IFxuICAgICAgYmVnaW4gXG4gICAgICBlbmQgXG4gICAgICAgIFxuKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbigqIEhlbHBlciBmdW5jdGlvbnMgZm9yIHJlc3VsdCAqKVxubGV0IGVycm9yX21zZyA/KHNldmVyaXR5ID0gTG9ncy5FcnJvcikgP3JhbmdlIHRleHQgOiBSZXN1bHRfdXRpbC5tZXNzYWdlID1cbiAgeyBSZXN1bHRfdXRpbC5zZXZlcml0eTsgUmVzdWx0X3V0aWwudGV4dDsgUmVzdWx0X3V0aWwucmFuZ2UgfVxuXG5sZXQgcmVzdWx0X2Vycm9yX21zZyA/c2V2ZXJpdHkgP3JhbmdlID9yZXN1bHRfY29kZSAobWVzc2FnZSA6IHN0cmluZykgOlxuICAgICdvayBBcGkucmVzdWx0ID1cbiAgUmVzdWx0X3V0aWwuZXJyb3IgP3N0YXR1czpyZXN1bHRfY29kZSBbIGVycm9yX21zZyA/c2V2ZXJpdHkgP3JhbmdlIG1lc3NhZ2UgXVxuXG5sZXQgcmVzdWx0X21lc3NhZ2VzID9yZXN1bHRfY29kZSBtZXNzYWdlcyA6ICdvayBBcGkucmVzdWx0ID1cbiAgUmVzdWx0X3V0aWwuZXJyb3IgP3N0YXR1czpyZXN1bHRfY29kZSBtZXNzYWdlc1xuXG5sZXQgcmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiA/c2V2ZXJpdHkgP3Jlc3VsdF9jb2RlIChlIDogZXhuKSA6ICdvayBBcGkucmVzdWx0ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIHRyeSBQcmludGV4Yy50b19zdHJpbmcgZSB3aXRoIF8gLT4gXCJ1bnNwZWNpZmllZCBleGNlcHRpb24gdGhyb3duXCJcbiAgaW5cbiAgcmVzdWx0X2Vycm9yX21zZyA/c2V2ZXJpdHkgP3Jlc3VsdF9jb2RlIG1lc3NhZ2VcblxubGV0IG1ldGhvZF9oYW5kbGVyX2Vycm9ycyA/c2V2ZXJpdHkgbWggPVxuICBsZXQgdW5jYXVnaHQgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgbWhcbiAgaW5cbiAgbGV0IGNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIG1oIGluXG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4geCBsIC0+XG4gICAgICBlcnJvcl9tc2cgP3NldmVyaXR5XG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF9jYXVnaHQgeClcbiAgICAgIDo6IGwpXG4gICAgY2F1Z2h0XG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biB4IC0+XG4gICAgICAgICBlcnJvcl9tc2cgP3NldmVyaXR5XG4gICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF91bmNhdWdodCB4KSlcbiAgICAgICB1bmNhdWdodClcblxubGV0IG1ldGhvZF9oYW5kbGVyX21lc3NhZ2VzID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgbWggPVxuICByZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlIChtZXRob2RfaGFuZGxlcl9lcnJvcnMgP3NldmVyaXR5IG1oKVxuXG5sZXQgcmVzdWx0X2thc2EgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgfCBSZXN1bHQuRXJyb3IgbWggLT4gbWV0aG9kX2hhbmRsZXJfbWVzc2FnZXMgfnNldmVyaXR5OkxvZ3MuRXJyb3IgbWhcblxubGV0IHJlc3VsdF9iaW5kX2x3dCA6XG4gICAgb2s6KCdvayAtPiAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCkgLT5cbiAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCA9XG4gZnVuIH4ob2sgOiAnb2sgLT4gKCdhX29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQpXG4gICAgIHsgUmVzdWx0X3V0aWwudmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgUmVzdWx0Lk9rIGRhdGEgLT4gb2sgZGF0YVxuICB8IFJlc3VsdC5FcnJvciBlIC0+XG4gICAgTHd0LnJldHVybiB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0LkVycm9yIGU7IHN0YXR1czsgbWVzc2FnZXMgfVxuXG5sZXQgcmVjIHJlc3VsdF9mb2xkX2x3dCA6XG4gICAgZjpcbiAgICAgICgoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAgICd2YWx1ZSAtPlxuICAgICAgKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KSAtPlxuICAgIGlkOignb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICd2YWx1ZSBsaXN0IC0+XG4gICAgKCdhX29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQgPVxuIGZ1biB+KGYgOlxuICAgICAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAgICAgJ3ZhbHVlIC0+XG4gICAgICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudClcbiAgICAgfihpZCA6ICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCkgKGwgOiAndmFsdWUgbGlzdCkgLT5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTHd0LnJldHVybiBpZFxuICB8IGggOjogdCAtPiBmIGlkIGggPj49IGZ1biByZXN1bHQgLT4gcmVzdWx0X2ZvbGRfbHd0IH5mIH5pZDpyZXN1bHQgdFxuXG5sZXQgcmVjIHJlc3VsdF9jb21iaW5lIDogdW5pdCBBcGkucmVzdWx0IGxpc3QgLT4gdW5pdCBBcGkucmVzdWx0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBSZXN1bHRfdXRpbC5vayAoKVxuICB8IGwgOjogdCAtPlxuICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgIH5vazooZnVuICgpIC0+IHJlc3VsdF9jb21iaW5lIHQpXG4gICAgICB+ZXJyb3I6KGZ1biBkYXRhXzEgLT5cbiAgICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgIH5vazooZnVuICgpIC0+IGwpXG4gICAgICAgICAgfmVycm9yOihmdW4gZGF0YV9yIC0+XG4gICAgICAgICAgICBSZXN1bHRfdXRpbC5lcnJvciB+c3RhdHVzOmwuUmVzdWx0X3V0aWwuc3RhdHVzIChkYXRhXzEgQCBkYXRhX3IpKVxuICAgICAgICAgIChyZXN1bHRfY29tYmluZSB0KSlcbiAgICAgIGxcblxubGV0IG1kNXN1bSB0ZXh0ID0gRGlnZXN0LnRvX2hleCAoRGlnZXN0LnN0cmluZyB0ZXh0KVxuIiwiKCogQXV0by1nZW5lcmF0ZWQgZnJvbSBcImFwaV90eXBlcy5hdGRcIiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItMjctMzItMzMtMzUtMzlcIl1cblxudHlwZSBzbmFwc2hvdF9pZCA9IEFwaV90eXBlc190LnNuYXBzaG90X2lkXG5cbnR5cGUgc25hcHNob3QgPSBEYXRhLnNuYXBzaG90XG5cbnR5cGUgc25hcHNob3RfZGV0YWlsID0gQXBpX3R5cGVzX3Quc25hcHNob3RfZGV0YWlsXG5cbnR5cGUgc25hcHNob3RfY2F0YWxvZyA9IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2dcblxudHlwZSBzaXRlX2dyYXBoID0gVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG5cbnR5cGUgc2ltdWxhdGlvbl9zdGF0ZSA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fc3RhdGVcblxudHlwZSBzaW11bGF0aW9uX3NlZWQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWRcblxudHlwZSBzaW11bGF0aW9uX3Byb2dyZXNzID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcyA9IHtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lOiBmbG9hdDtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2U6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQ6IGludDtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmc6IGJvb2xcbn1cblxudHlwZSBzaW11bGF0aW9uX3BhcmFtZXRlciA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyID0ge1xuICBzaW11bGF0aW9uX3Bsb3RfcGVyaW9kICgqYXRkIHBsb3RfcGVyaW9kICopOiBmbG9hdDtcbiAgc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gKCphdGQgcGF1c2VfY29uZGl0aW9uICopOiBzdHJpbmc7XG4gIHNpbXVsYXRpb25fc2VlZCAoKmF0ZCBzZWVkICopOiBzaW11bGF0aW9uX3NlZWQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3N0b3JlX3RyYWNlICgqYXRkIHN0b3JlX3RyYWNlICopOiBib29sXG59XG5cbnR5cGUgKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0ID1cbiAgKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0ID0ge1xuICBzaW11bGF0aW9uX291dHB1dF9wbG90OiAncGxvdDtcbiAgc2ltdWxhdGlvbl9vdXRwdXRfZGluczogJ2RpbnM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM6ICdmaWxlX2xpbmVzO1xuICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHM6ICdzbmFwc2hvdHM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0czogJ2lucHV0cztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzOiAnbG9nX21lc3NhZ2VzXG59XG5cbnR5cGUgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvblxuXG50eXBlIHNpbXVsYXRpb25faW5mb19vdXRwdXQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvID0ge1xuICBzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3M6IHNpbXVsYXRpb25fcHJvZ3Jlc3M7XG4gIHNpbXVsYXRpb25faW5mb19vdXRwdXQ6IHNpbXVsYXRpb25faW5mb19vdXRwdXRcbn1cblxudHlwZSBzaW11bGF0aW9uX2lkID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pZFxuXG50eXBlIHNpbXVsYXRpb25fYXJ0aWZhY3QgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0ID0ge1xuICBzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZDogc2ltdWxhdGlvbl9zZWVkXG59XG5cbnR5cGUgc2hhcmluZ19sZXZlbCA9IFBhdHRlcm4uc2hhcmluZ19sZXZlbFxuXG50eXBlICgnb2ssICdlcnJvcikgcmVzdWx0ID0gKCdvaywgJ2Vycm9yKSBSZXN1bHRfdXRpbC50XG5cbnR5cGUgcGFyc2luZ19jb21waWwgPSBBc3QucGFyc2luZ19jb21waWxcblxudHlwZSBuYnIgPSBOYnIudFxuXG50eXBlIHByb2plY3RfcGFyc2UgPSBBcGlfdHlwZXNfdC5wcm9qZWN0X3BhcnNlID0ge1xuICBwYXR0ZXJuX3NoYXJpbmc6IHNoYXJpbmdfbGV2ZWw7XG4gIGFzdDogcGFyc2luZ19jb21waWw7XG4gIHZhcmlhYmxlX292ZXJ3cml0dGVuOiAoc3RyaW5nICogbmJyKSBsaXN0XG59XG5cbnR5cGUgcHJvamVjdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wcm9qZWN0X3BhcmFtZXRlciA9IHtcbiAgcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZDogc3RyaW5nXG59XG5cbnR5cGUgcGxvdF9saW1pdCA9IEFwaV90eXBlc190LnBsb3RfbGltaXQgPSB7XG4gIHBsb3RfbGltaXRfb2Zmc2V0OiBpbnQgb3B0aW9uO1xuICBwbG90X2xpbWl0X3BvaW50czogaW50IG9wdGlvblxufVxuXG50eXBlIHBsb3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXJcblxudHlwZSBwbG90ID0gRGF0YS5wbG90XG5cbnR5cGUgbWVzc2FnZSA9IFJlc3VsdF91dGlsLm1lc3NhZ2VcblxudHlwZSBsb2dfbWVzc2FnZSA9IEFwaV90eXBlc190LmxvZ19tZXNzYWdlXG5cbnR5cGUga2FwcGFfY29kZSA9IEFwaV90eXBlc190LmthcHBhX2NvZGVcblxudHlwZSBmaWxlX2xpbmUgPSBEYXRhLmZpbGVfbGluZSA9IHtcbiAgZmlsZV9saW5lX25hbWUgKCphdGQgbmFtZSAqKTogc3RyaW5nIG9wdGlvbjtcbiAgZmlsZV9saW5lX3RleHQgKCphdGQgdGV4dCAqKTogc3RyaW5nXG59XG5cbnR5cGUgZmlsZV9saW5lX2RldGFpbCA9IEFwaV90eXBlc190LmZpbGVfbGluZV9kZXRhaWxcblxudHlwZSBmaWxlX2xpbmVfY2F0YWxvZyA9IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nXG5cbnR5cGUgZW52aXJvbm1lbnRfaW5mbyA9IEFwaV90eXBlc190LmVudmlyb25tZW50X2luZm8gPSB7XG4gIGVudmlyb25tZW50X3Byb2plY3RzICgqYXRkIHByb2plY3RzICopOiBpbnQ7XG4gIGVudmlyb25tZW50X2J1aWxkICgqYXRkIGJ1aWxkICopOiBzdHJpbmdcbn1cblxudHlwZSBkaW5faWQgPSBBcGlfdHlwZXNfdC5kaW5faWRcblxudHlwZSBkaW5fY2F0YWxvZyA9IEFwaV90eXBlc190LmRpbl9jYXRhbG9nXG5cbnR5cGUgZGluID0gRGF0YS5kaW5cblxubGV0IHdyaXRlX3NuYXBzaG90X2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc25hcHNob3RfaWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3QgPSAoXG4gIERhdGEud3JpdGVfc25hcHNob3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdCA9IChcbiAgRGF0YS5yZWFkX3NuYXBzaG90XG4pXG5sZXQgc25hcHNob3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfZGV0YWlsID0gKFxuICB3cml0ZV9zbmFwc2hvdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfZGV0YWlsID0gKFxuICByZWFkX3NuYXBzaG90XG4pXG5sZXQgc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc25hcHNob3RfaWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX3NuYXBzaG90X2lkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3NuYXBzaG90X2lkX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc25hcHNob3RfaWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgcmVhZF9zbmFwc2hvdF9pZFxuICApXG4pXG5sZXQgX3NuYXBzaG90X2lkX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zbmFwc2hvdF9pZF9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgcmVhZF9fc25hcHNob3RfaWRfbGlzdFxuKVxubGV0IHNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaXRlX2dyYXBoID0gKFxuICBVc2VyX2dyYXBoLndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnRcbilcbmxldCBzdHJpbmdfb2Zfc2l0ZV9ncmFwaCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaXRlX2dyYXBoIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2l0ZV9ncmFwaCA9IChcbiAgVXNlcl9ncmFwaC5yZWFkX2Nvbm5lY3RlZF9jb21wb25lbnRcbilcbmxldCBzaXRlX2dyYXBoX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaXRlX2dyYXBoIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFJ1bm5pbmcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUnVubmluZ1xcXCJcIlxuICAgICAgfCBgUGF1c2VkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlBhdXNlZFxcXCJcIlxuICAgICAgfCBgU3RvcHBlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTdG9wcGVkXFxcIlwiXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fc3RhdGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fc3RhdGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlJ1bm5pbmdcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFJ1bm5pbmdcbiAgICAgICAgICAgIHwgXCJQYXVzZWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFBhdXNlZFxuICAgICAgICAgICAgfCBcIlN0b3BwZWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFN0b3BwZWRcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlJ1bm5pbmdcIiAtPlxuICAgICAgICAgICAgICBgUnVubmluZ1xuICAgICAgICAgICAgfCBcIlBhdXNlZFwiIC0+XG4gICAgICAgICAgICAgIGBQYXVzZWRcbiAgICAgICAgICAgIHwgXCJTdG9wcGVkXCIgLT5cbiAgICAgICAgICAgICAgYFN0b3BwZWRcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fc3RhdGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fc3RhdGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3NlZWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX2ludFxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3NlZWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9zZWVkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbilcbmxldCBzaW11bGF0aW9uX3NlZWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fc2VlZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19pbnRfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX2ludF9udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9faW50X251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2ludF9udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgKSBwIGxiKSA6IF8gb3B0aW9uKVxuKVxubGV0IF9pbnRfbnVsbGFibGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19pbnRfbnVsbGFibGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIDogXyAtPiBzaW11bGF0aW9uX3Byb2dyZXNzIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fcHJvZ3Jlc3MpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0ZF9mbG9hdFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2U7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2U7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfYm9vbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcHJvZ3Jlc3MgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wcm9ncmVzcyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3MgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2snICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM2IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNSkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2snICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM2IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM1KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fcHJvZ3Jlc3MpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9wcm9ncmVzc19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICApIHAgbGIpIDogXyBvcHRpb24pXG4pXG5sZXQgX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIDogXyAtPiBzaW11bGF0aW9uX3BhcmFtZXRlciAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX3BhcmFtZXRlcikgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBsb3RfcGVyaW9kXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdGRfZmxvYXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcGxvdF9wZXJpb2Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBhdXNlX2NvbmRpdGlvblxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbjtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2VlZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9zZWVkO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzdG9yZV90cmFjZVxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfYm9vbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9zdG9yZV90cmFjZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3NlZWQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDExIC0+IChcbiAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfCAncycgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAxMSAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncycgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcGxvdF9wZXJpb2RcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3NlZWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fc2VlZFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fc3RvcmVfdHJhY2VcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyA6IF8gLT4gKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6ICgncGxvdCwgJ2RpbnMsICdmaWxlX2xpbmVzLCAnc25hcHNob3RzLCAnaW5wdXRzLCAnbG9nX21lc3NhZ2VzKSBzaW11bGF0aW9uX291dHB1dCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19wbG90XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9wbG90O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZGluc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ZpbGVfbGluZXNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3NuYXBzaG90c1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnB1dHNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fbG9nX21lc3NhZ2VzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX291dHB1dCByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2RpbnNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19maWxlX2xpbmVzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zbmFwc2hvdHNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2lucHV0c1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fbG9nX21lc3NhZ2VzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19wbG90XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2RpbnNcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZmlsZV9saW5lc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3NuYXBzaG90c1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2lucHV0c1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2xvZ19tZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0KVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fb3V0cHV0X29mX3N0cmluZyByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX291dHB1dCByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX291dHB1dF85MzQwYWQ2IDogXyAtPiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogKF8sIF8sIF8sIF8sIF8sIF8pIHNpbXVsYXRpb25fb3V0cHV0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9wbG90O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9udWxsXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9pbnB1dHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfX291dHB1dF85MzQwYWQ2ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19vdXRwdXRfOTM0MGFkNiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19vdXRwdXRfOTM0MGFkNiA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bGxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI4IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udWxsXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9wbG90ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9wbG90XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQpXG4gICAgICApXG4pXG5sZXQgX291dHB1dF85MzQwYWQ2X29mX3N0cmluZyBzID1cbiAgcmVhZF9fb3V0cHV0XzkzNDBhZDYgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKFxuICB3cml0ZV9fb3V0cHV0XzkzNDBhZDZcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IChcbiAgcmVhZF9fb3V0cHV0XzkzNDBhZDZcbilcbmxldCBzaW11bGF0aW9uX2luZm9fb3V0cHV0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvIDogXyAtPiBzaW11bGF0aW9uX2luZm8gLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3M7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25faW5mb19vdXRwdXRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25faW5mb19vdXRwdXQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mbyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2luZm9fb3V0cHV0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9pbmZvKVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25faW5mb19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IHNpbXVsYXRpb25faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IDogXyAtPiBzaW11bGF0aW9uX2FydGlmYWN0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fYXJ0aWZhY3QpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBpZiBsZW4gPSAzNSAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIC0xXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9zZWVkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDM1ICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX2FydGlmYWN0KVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaGFyaW5nX2xldmVsID0gKFxuICBQYXR0ZXJuLndyaXRlX3NoYXJpbmdfbGV2ZWxcbilcbmxldCBzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaGFyaW5nX2xldmVsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2hhcmluZ19sZXZlbCA9IChcbiAgUGF0dGVybi5yZWFkX3NoYXJpbmdfbGV2ZWxcbilcbmxldCBzaGFyaW5nX2xldmVsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaGFyaW5nX2xldmVsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPSAoXG4gIFJlc3VsdF91dGlsLndyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvclxuKVxubGV0IHN0cmluZ19vZl9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciA9IChcbiAgUmVzdWx0X3V0aWwucmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yXG4pXG5sZXQgcmVzdWx0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wYXJzaW5nX2NvbXBpbCA9IChcbiAgQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsXG4pXG5sZXQgc3RyaW5nX29mX3BhcnNpbmdfY29tcGlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3BhcnNpbmdfY29tcGlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGFyc2luZ19jb21waWwgPSAoXG4gIEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsXG4pXG5sZXQgcGFyc2luZ19jb21waWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3BhcnNpbmdfY29tcGlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbmJyID0gKFxuICBOYnIud3JpdGVfdFxuKVxubGV0IHN0cmluZ19vZl9uYnIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbmJyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbmJyID0gKFxuICBOYnIucmVhZF90XG4pXG5sZXQgbmJyX29mX3N0cmluZyBzID1cbiAgcmVhZF9uYnIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX25icl9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgZnVuIG9iIHggLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAobGV0IHgsIF8gPSB4IGluXG4gICAgICAoXG4gICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgKSBvYiB4XG4gICAgICApO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIChsZXQgXywgeCA9IHggaW5cbiAgICAgIChcbiAgICAgICAgd3JpdGVfbmJyXG4gICAgICApIG9iIHhcbiAgICAgICk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nO1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbmJyX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19uYnJfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbmJyX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIGZ1biBwIGxiIC0+XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgc3RkX3R1cGxlID0gWW9qc29uLlNhZmUuc3RhcnRfYW55X3R1cGxlIHAgbGIgaW5cbiAgICAgIGxldCBsZW4gPSByZWYgMCBpblxuICAgICAgbGV0IGVuZF9vZl90dXBsZSA9IHJlZiBmYWxzZSBpblxuICAgICAgKHRyeVxuICAgICAgICBsZXQgeDAgPVxuICAgICAgICAgIGxldCB4ID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICBpblxuICAgICAgICAgIGluY3IgbGVuO1xuICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgeFxuICAgICAgICBpblxuICAgICAgICBsZXQgeDEgPVxuICAgICAgICAgIGxldCB4ID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgcmVhZF9uYnJcbiAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgIGluXG4gICAgICAgICAgaW5jciBsZW47XG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPiBlbmRfb2ZfdHVwbGUgOj0gdHJ1ZSk7XG4gICAgICAgICAgeFxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgIWVuZF9vZl90dXBsZSB0aGVuIChcbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPiAoKVxuICAgICAgICApO1xuICAgICAgICAoeDAsIHgxKVxuICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX3R1cGxlX2ZpZWxkcyBwICFsZW4gWyAwOyAxIF0pO1xuICApXG4pXG5sZXQgX3N0cmluZ19uYnJfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19uYnJfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Byb2plY3RfcGFyc2UgOiBfIC0+IHByb2plY3RfcGFyc2UgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcHJvamVjdF9wYXJzZSkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBhdHRlcm5fc2hhcmluZ1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2hhcmluZ19sZXZlbFxuICAgIClcbiAgICAgIG9iIHgucGF0dGVybl9zaGFyaW5nO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJhc3RcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3BhcnNpbmdfY29tcGlsXG4gICAgKVxuICAgICAgb2IgeC5hc3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInZhcmlhYmxlX292ZXJ3cml0dGVuXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc3RyaW5nX25icl9saXN0XG4gICAgKVxuICAgICAgb2IgeC52YXJpYWJsZV9vdmVyd3JpdHRlbjtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyc2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcnNlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3BhdHRlcm5fc2hhcmluZyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfYXN0ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMyAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAxNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDIwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfcGF0dGVybl9zaGFyaW5nIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaGFyaW5nX2xldmVsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9hc3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3BhcnNpbmdfY29tcGlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19uYnJfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDMgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDIwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3BhdHRlcm5fc2hhcmluZyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2hhcmluZ19sZXZlbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2FzdCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfcGFyc2luZ19jb21waWxcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19uYnJfbGlzdFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0dGVybl9zaGFyaW5nID0gKG1hdGNoICFmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBhdHRlcm5fc2hhcmluZ1wiKTtcbiAgICAgICAgICAgIGFzdCA9IChtYXRjaCAhZmllbGRfYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJhc3RcIik7XG4gICAgICAgICAgICB2YXJpYWJsZV9vdmVyd3JpdHRlbiA9IChtYXRjaCAhZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4gd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInZhcmlhYmxlX292ZXJ3cml0dGVuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcHJvamVjdF9wYXJzZSlcbiAgICAgIClcbilcbmxldCBwcm9qZWN0X3BhcnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgOiBfIC0+IHByb2plY3RfcGFyYW1ldGVyIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHByb2plY3RfcGFyYW1ldGVyKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicHJvamVjdF9pZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgaWYgbGVuID0gMTAgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgLTFcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gMTAgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgPSAobWF0Y2ggIWZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgIClcbilcbmxldCBwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X2xpbWl0IDogXyAtPiBwbG90X2xpbWl0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHBsb3RfbGltaXQpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJvZmZzZXRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnBsb3RfbGltaXRfb2Zmc2V0O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJuYl9wb2ludHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnBsb3RfbGltaXRfcG9pbnRzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3RfbGltaXQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9saW1pdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfbGltaXQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCA2IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDkgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X29mZnNldCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCA2IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA5IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBsb3RfbGltaXRfb2Zmc2V0ID0gKG1hdGNoICFmaWVsZF9wbG90X2xpbWl0X29mZnNldCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGxvdF9saW1pdF9vZmZzZXRcIik7XG4gICAgICAgICAgICBwbG90X2xpbWl0X3BvaW50cyA9IChtYXRjaCAhZmllbGRfcGxvdF9saW1pdF9wb2ludHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBsb3RfbGltaXRfcG9pbnRzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcGxvdF9saW1pdClcbiAgICAgIClcbilcbmxldCBwbG90X2xpbWl0X29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X2xpbWl0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgPSAoXG4gIHdyaXRlX3Bsb3RfbGltaXRcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X3BhcmFtZXRlciA9IChcbiAgcmVhZF9wbG90X2xpbWl0XG4pXG5sZXQgcGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdCA9IChcbiAgRGF0YS53cml0ZV9wbG90XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3QgPSAoXG4gIERhdGEucmVhZF9wbG90XG4pXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX21lc3NhZ2UgPSAoXG4gIFJlc3VsdF91dGlsLndyaXRlX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbWVzc2FnZSA9IChcbiAgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlXG4pXG5sZXQgbWVzc2FnZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2xvZ19tZXNzYWdlID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2ZfbG9nX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbG9nX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9sb2dfbWVzc2FnZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgbG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xvZ19tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfa2FwcGFfY29kZSA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX2thcHBhX2NvZGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfa2FwcGFfY29kZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2thcHBhX2NvZGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IGthcHBhX2NvZGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2thcHBhX2NvZGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX251bGxhYmxlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbnVsbGFibGUgKFxuICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbnVsbGFibGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19udWxsYWJsZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbnVsbGFibGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIChpZiBZb2pzb24uU2FmZS5yZWFkX251bGxfaWZfcG9zc2libGUgcCBsYiB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKChcbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICkgcCBsYikgOiBfIG9wdGlvbilcbilcbmxldCBfc3RyaW5nX251bGxhYmxlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX251bGxhYmxlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lIDogXyAtPiBmaWxlX2xpbmUgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogZmlsZV9saW5lKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwibmFtZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3N0cmluZ19udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguZmlsZV9saW5lX25hbWU7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInRleHRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgIClcbiAgICAgIG9iIHguZmlsZV9saW5lX3RleHQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9maWxlX2xpbmVfbmFtZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfZmlsZV9saW5lX3RleHQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIGlmIGxlbiA9IDQgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgIHwgJ24nIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgJ3QnIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAneCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAtMVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX25hbWUgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV90ZXh0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDQgdGhlbiAoXG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICB8ICduJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCAndCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfbmFtZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV90ZXh0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWxlX2xpbmVfbmFtZSA9IChtYXRjaCAhZmllbGRfZmlsZV9saW5lX25hbWUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImZpbGVfbGluZV9uYW1lXCIpO1xuICAgICAgICAgICAgZmlsZV9saW5lX3RleHQgPSAobWF0Y2ggIWZpZWxkX2ZpbGVfbGluZV90ZXh0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJmaWxlX2xpbmVfdGV4dFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IGZpbGVfbGluZSlcbiAgICAgIClcbilcbmxldCBmaWxlX2xpbmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19maWxlX2xpbmVfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX2ZpbGVfbGluZVxuICApXG4pXG5sZXQgc3RyaW5nX29mX19maWxlX2xpbmVfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fZmlsZV9saW5lX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fZmlsZV9saW5lX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfZmlsZV9saW5lXG4gIClcbilcbmxldCBfZmlsZV9saW5lX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19maWxlX2xpbmVfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIHdyaXRlX19maWxlX2xpbmVfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfZGV0YWlsID0gKFxuICByZWFkX19maWxlX2xpbmVfbGlzdFxuKVxubGV0IGZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgKVxuKVxubGV0IF9zdHJpbmdfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIHdyaXRlX19zdHJpbmdfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICByZWFkX19zdHJpbmdfbGlzdFxuKVxubGV0IGZpbGVfbGluZV9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Vudmlyb25tZW50X2luZm8gOiBfIC0+IGVudmlyb25tZW50X2luZm8gLT4gXyA9IChcbiAgZnVuIG9iICh4IDogZW52aXJvbm1lbnRfaW5mbykgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInByb2plY3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LmVudmlyb25tZW50X3Byb2plY3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJidWlsZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5lbnZpcm9ubWVudF9idWlsZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Vudmlyb25tZW50X2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgOCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50X3Byb2plY3RzID0gKG1hdGNoICFmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZW52aXJvbm1lbnRfcHJvamVjdHNcIik7XG4gICAgICAgICAgICBlbnZpcm9ubWVudF9idWlsZCA9IChtYXRjaCAhZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImVudmlyb25tZW50X2J1aWxkXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogZW52aXJvbm1lbnRfaW5mbylcbiAgICAgIClcbilcbmxldCBlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9lbnZpcm9ubWVudF9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2ZfZGluX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgZGluX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fZGluX2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9kaW5faWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fZGluX2lkX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX2Rpbl9pZF9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2Rpbl9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2Rpbl9pZFxuICApXG4pXG5sZXQgX2Rpbl9pZF9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fZGluX2lkX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5fY2F0YWxvZyA9IChcbiAgd3JpdGVfX2Rpbl9pZF9saXN0XG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2NhdGFsb2cgPSAoXG4gIHJlYWRfX2Rpbl9pZF9saXN0XG4pXG5sZXQgZGluX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluID0gKFxuICBEYXRhLndyaXRlX2RpblxuKVxubGV0IHN0cmluZ19vZl9kaW4gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluID0gKFxuICBEYXRhLnJlYWRfZGluXG4pXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IEJpZ1N0cmluZyA6IEJpZ2J1ZmZlci5iaWdzdHJpbmcgaGFuZGxlXG4gIHwgU3RyaW5nIDogc3RyaW5nIGhhbmRsZVxuICB8IFN0cmluZ3MgOiBzdHJpbmcgbGlzdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgKCogIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZSopXG4gIHwgSlNPTiA6IFlvanNvbi5CYXNpYy50IGhhbmRsZVxuICB8IEluZmx1ZW5jZV9tYXBcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogaW50XG4gICAgICAgICogaW50IG9wdGlvblxuICAgICAgICAqIGludCBvcHRpb25cbiAgICAgICAgKiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb25cbiAgICAgICAgKiBQdWJsaWNfZGF0YS5pbmZsdWVuY2VfbWFwKVxuICAgICAgICBoYW5kbGVcbiAgfCBTaG9ydF9pbmZsdWVuY2Vfbm9kZSA6IChpbnQsIGludCkgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uIGhhbmRsZVxuICB8IEluZmx1ZW5jZV9ub2RlXG4gICAgICA6IChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvblxuICAgICAgICBoYW5kbGVcbiAgfCBJbmZsdWVuY2Vfbm9kZXNcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgbGlzdClcbiAgICAgICAgaGFuZGxlXG4gIHwgUnVsZXNfa2FzYSA6IFB1YmxpY19kYXRhLnJ1bGUgbGlzdCBoYW5kbGVcbiAgfCBBZ2VudHNfa2FzYSA6IFB1YmxpY19kYXRhLmRlYWRfYWdlbnRzIGhhbmRsZVxuICB8IFRyYW5zaXRpb25zX2thc2EgOiAoUHVibGljX2RhdGEucnVsZSAqIChzdHJpbmcgKiBzdHJpbmcpIGxpc3QpIGxpc3QgaGFuZGxlXG4gIHwgQ29uc3RyYWludHNfa2FzYVxuICAgICAgOiAoc3RyaW5nICogUHVibGljX2RhdGEuYWdlbnQgbGlzdCBQdWJsaWNfZGF0YS5sZW1tYSBsaXN0KSBsaXN0IGhhbmRsZVxuICB8IFBvbHltZXJzX2thc2FcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBQdWJsaWNfZGF0YS5zY2MpXG4gICAgICAgIGhhbmRsZVxuICB8IERJTiA6IERhdGEuZGluIGhhbmRsZVxuICB8IFBsb3QgOiBEYXRhLnBsb3QgaGFuZGxlXG4gIHwgU25hcHNob3QgOiBEYXRhLnNuYXBzaG90IGhhbmRsZVxuICB8IFNpbXVsYXRpb25fZWZmaWNpZW5jeSA6IENvdW50ZXIuRWZmaWNpZW5jeS50IGhhbmRsZVxuICB8IFNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyBoYW5kbGVcbiAgfCBTaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyIGhhbmRsZVxuICB8IFNpbXVsYXRpb25fYXJ0aWZhY3QgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0IGhhbmRsZVxuXG50eXBlIGJveCA9XG4gIHwgQiA6ICdhIGhhbmRsZSAqICgnYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC51IC0+IGJveFxuXG50eXBlIG1haWxib3ggPSAoaW50LCBib3gpIEhhc2h0YmwudFxuXG5sZXQgbmV3X21haWxib3ggKCkgPSBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCByZWFkX3Jlc3VsdCBmIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgIChSZXN1bHRfdXRpbC5yZWFkX3QgZiAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2UpKVxuICAgIHAgbGJcblxubGV0IHJlY2VpdmUgbWFpbGJveCB4ID1cbiAgSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCAoZnVuIHAgbGIgaWQgLT5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCBtYWlsYm94IGlkIHdpdGhcbiAgICAgICAgICAgfCBCIChOb3RoaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX251bGwgcCBsYilcbiAgICAgICAgICAgfCBCIChCaWdTdHJpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0ID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCAoQmFzZTY0LmRlY29kZSA/YWxwaGFiZXQ6Tm9uZSkgb3V0KVxuICAgICAgICAgICB8IEIgKFN0cmluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYilcbiAgICAgICAgICAgfCBCIChTdHJpbmdzLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgfCBCIChDYXRhbG9nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgS2ZpbGVzLnJlYWRfY2F0YWxvZ19pdGVtKVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgfCBCIChJbmZvLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50KVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgICAoKiB8IEIgKEFzdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXN0LnJlYWRfcGFyc2luZ19jb21waWwgcCBsYikqKVxuICAgICAgICAgICB8IEIgKEpTT04sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9tYXAsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFNob3J0X2luZmx1ZW5jZV9ub2RlLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAganNvbilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2Vfbm9kZSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAganNvbilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2Vfbm9kZXMsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFJ1bGVzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmRlYWRfcnVsZXNfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKEFnZW50c19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIGpzb24pXG4gICAgICAgICAgIHwgQiAoVHJhbnNpdGlvbnNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoQ29uc3RyYWludHNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubGVtbWFzX2xpc3Rfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFBvbHltZXJzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuc2NjX29mX2pzb24ganNvbilcbiAgICAgICAgICAgfCBCIChESU4sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgRGF0YS5yZWFkX2RpbiBwIGxiKVxuICAgICAgICAgICB8IEIgKFBsb3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgRGF0YS5yZWFkX3Bsb3QgcCBsYilcbiAgICAgICAgICAgfCBCIChTbmFwc2hvdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfc25hcHNob3QgcCBsYilcbiAgICAgICAgICAgfCBCIChTaW11bGF0aW9uX2VmZmljaWVuY3ksIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgQ291bnRlci5FZmZpY2llbmN5LnJlYWRfdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25faW5mbywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2luZm8gcCBsYilcbiAgICAgICAgICAgfCBCIChTaW11bGF0aW9uX3BhcmFtZXRlciwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fYXJ0aWZhY3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0IEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCBwIGxiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQpKVxuICAgIHhcblxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+aXNfcnVubmluZyB+cG9zdCBtYWlsYm94ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIGlkID0gMFxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSA6IHR5cGUgYS5cbiAgICAgICAgYSBoYW5kbGUgLT5cbiAgICAgICAgKEJ1ZmZlci50IC0+IHVuaXQpIC0+XG4gICAgICAgIChhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICAgICAgZnVuIGhhbmRsZSByZXF1ZXN0IC0+XG4gICAgICAgIGlmIGlzX3J1bm5pbmcgKCkgdGhlbiAoXG4gICAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgICAgICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTsgcmVxdWVzdCBdKVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9zdCBtZXNzYWdlIGluXG4gICAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgKEIgKGhhbmRsZSwgZmVlZGVyKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZCA8LSBzdWNjIGlkIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0ID0gXCJrYW1vaGEgYWdlbnQgaGFzIGRpZWRcIjtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYU1vSGEgKilcbiAgICBtZXRob2QgZmlsZV9kZWxldGUgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlRGVsZXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlVXBkYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZU1vdmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUdldFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ3JlYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ2F0YWxvZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ2F0YWxvZ1wiKSBdKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlIDogQXN0LnBhcnNpbmdfY29tcGlsIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwibG93IGxldmVsIHByb2plY3RfcGFyc2UgbXVzdG4ndCBiZSB1c2VkXCIpXG5cbiAgICBtZXRob2Qgc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNcbiAgICAgICAgOiBQdWJsaWNfZGF0YS5wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0T3ZlcndyaXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYVNhICopXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5JVFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBjb21waWwpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSlNPTiAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJDT05UQUNUX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9tYXAgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiTE9DQUxfSU5GTFVFTkNFX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZ3ZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGJ3ZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgdG90YWwpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIG9yaWdpbikpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfT1JJR0lOQUxfTk9ERVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBqc29uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX05FWFRfTk9ERVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICBqc29uKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIGpzb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9QUkVWSU9VU19OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIGpzb24pKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaG9ydF9pbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX05PREVfQVRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gTG9jLndyaXRlX3Bvc2l0aW9uIGIgcG9zKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlcyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX0FMTF9OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgc2VsZiNtZXNzYWdlIFJ1bGVzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiREVBRF9SVUxFU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQWdlbnRzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiREVBRF9BR0VOVFNcIikgXSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHNlbGYjbWVzc2FnZSBUcmFuc2l0aW9uc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiTk9OX1dFQUtMWV9SRVZFUlNJQkxFX1RSQU5TSVRJT05TXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfY29uc3RyYWludHNfbGlzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ29uc3RyYWludHNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJDT05TVFJBSU5UU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIHNlbGYjbWVzc2FnZSBQb2x5bWVyc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlBPTFlNRVJTXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfY20pKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X3NjYykpO1xuICAgICAgICAgICAgXSlcblxuICAgICgqIEthU2ltICopXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgKF8gOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWwpXG4gICAgICAgIChfIDogQXN0LnBhcnNpbmdfY29tcGlsKSAoXyA6IChzdHJpbmcgKiBOYnIudCkgbGlzdClcbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwibG93IGxldmVsIHNpbXVsYXRpb25fbG9hZCBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RQYXJzZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFBhdHRlcm4ud3JpdGVfc2hhcmluZ19sZXZlbCBiIHBhdHRlcm5TaGFyaW5nKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBOYnIud3JpdGVfdClcbiAgICAgICAgICAgICAgICAgIGIgb3ZlcndyaXRlcyk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY29udGludWUgcGF1c2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIHBhdXNlKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRlbGV0ZVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgRElOIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxESU5cIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGlkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3QgaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNuYXBzaG90IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCBwYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFBsb3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBcGlfdHlwZXNfai53cml0ZV9wbG90X3BhcmFtZXRlciBiIHBhcmFtZXRlcik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmdzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fZWZmaWNpZW5jeSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9pbmZvIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25JbmZvXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gaW50ZXJ2ZW50aW9uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpbnRlcnZlbnRpb24pO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIHNlbGYjbWVzc2FnZSBCaWdTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25QYXVzZVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaW11bGF0aW9uX3BhcmFtZXRlciAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydCBwYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fYXJ0aWZhY3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblN0YXJ0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgYiBwYXJhbWV0ZXIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25UcmFjZVwiKSBdKVxuXG4gICAgKCogbWV0aG9kIHByb2plY3RfcGFyc2Ugb3ZlcndyaXRlID0gKClcblxuICAgICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uID0gKClcbiAgICAgICBtZXRob2QgY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIG1vZGVzID0gTHd0X3Jlc3VsdC5yZXR1cm4gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gZmFsc2VcbiAgICAgICBtZXRob2Qgc3RvcnlfbGlzdCA9ICgpXG4gICAgICAgbWV0aG9kIHN0b3J5X2xvZyA9ICgpXG4gICAgICAgbWV0aG9kIHN0b3J5X3Byb2dyZXNzID0gKClcblxuICAgICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSB0cnVlXG4gICAgICAgICBtZXRob2QgdGVybWluYXRlID0gKCkqKVxuICBlbmRcbiIsIigqIEF1dG8tZ2VuZXJhdGVkIGZyb20gXCJtcGlfbWVzc2FnZS5hdGRcIiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItMjctMzItMzMtMzUtMzlcIl1cblxudHlwZSBzbmFwc2hvdF9pZCA9IEFwaV90eXBlc190LnNuYXBzaG90X2lkXG5cbnR5cGUgc25hcHNob3RfZGV0YWlsID0gQXBpX3R5cGVzX3Quc25hcHNob3RfZGV0YWlsXG5cbnR5cGUgc25hcHNob3RfY2F0YWxvZyA9IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2dcblxudHlwZSBzaW11bGF0aW9uX3BhcmFtZXRlciA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyXG5cbnR5cGUgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvblxuXG50eXBlIHNpbXVsYXRpb25faW5mbyA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb1xuXG50eXBlIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA9IENvdW50ZXIuRWZmaWNpZW5jeS50XG5cbnR5cGUgc2ltdWxhdGlvbl9hcnRpZmFjdCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3RcblxudHlwZSAoJ29rLCAnZXJyb3IpIGFwaV9yZXN1bHQgPSAoJ29rLCAnZXJyb3IpIEFwaV90eXBlc190LnJlc3VsdFxuXG50eXBlIGFwaV9tZXNzYWdlID0gQXBpX3R5cGVzX3QubWVzc2FnZVxuXG50eXBlICdvayByZXN1bHQgPSAnb2sgTXBpX21lc3NhZ2VfdC5yZXN1bHRcblxudHlwZSBwbG90ID0gQXBpX3R5cGVzX3QucGxvdFxuXG50eXBlIGxvZ19tZXNzYWdlID0gQXBpX3R5cGVzX3QubG9nX21lc3NhZ2VcblxudHlwZSBmaWxlX2xpbmVfY2F0YWxvZyA9IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nXG5cbnR5cGUgZW52aXJvbm1lbnRfaW5mbyA9IEFwaV90eXBlc190LmVudmlyb25tZW50X2luZm9cblxudHlwZSBkaW5fY2F0YWxvZyA9IEFwaV90eXBlc190LmRpbl9jYXRhbG9nXG5cbnR5cGUgZGluID0gQXBpX3R5cGVzX3QuZGluXG5cbnR5cGUgcmVzdF9yZXNwb25zZV9jb250ZW50ID0gTXBpX21lc3NhZ2VfdC5yZXN0X3Jlc3BvbnNlX2NvbnRlbnRcblxudHlwZSByZXN0X3Jlc3BvbnNlID0gTXBpX21lc3NhZ2VfdC5yZXN0X3Jlc3BvbnNlXG5cbnR5cGUgcHJvamVjdF9wYXJzZSA9IEFwaV90eXBlc190LnByb2plY3RfcGFyc2VcblxudHlwZSBwcm9qZWN0X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnByb2plY3RfcGFyYW1ldGVyXG5cbnR5cGUgcGxvdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlclxuXG50eXBlIGRpbl9pZCA9IEFwaV90eXBlc190LmRpbl9pZFxuXG50eXBlIHJlc3RfcmVxdWVzdCA9IE1waV9tZXNzYWdlX3QucmVzdF9yZXF1ZXN0XG5cbnR5cGUgcmVzcG9uc2VfY29udGVudCA9IE1waV9tZXNzYWdlX3QucmVzcG9uc2VfY29udGVudFxuXG50eXBlIHJlc3BvbnNlID0gTXBpX21lc3NhZ2VfdC5yZXNwb25zZVxuXG50eXBlIHJlcXVlc3QgPSBNcGlfbWVzc2FnZV90LnJlcXVlc3RcblxudHlwZSBpZCA9IE1waV9tZXNzYWdlX3QuaWRcblxudHlwZSAnZGF0YSBtZXNzYWdlID0gJ2RhdGEgTXBpX21lc3NhZ2VfdC5tZXNzYWdlID0geyBpZDogaWQ7IGRhdGE6ICdkYXRhIH1cblxudHlwZSBmaWxlX2xpbmVfZGV0YWlsID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2RldGFpbFxuXG50eXBlIGZpbGVfbGluZSA9IEFwaV90eXBlc190LmZpbGVfbGluZVxuXG5sZXQgd3JpdGVfc25hcHNob3RfaWQgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NuYXBzaG90X2lkXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfaWQgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfaWRcbilcbmxldCBzbmFwc2hvdF9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NuYXBzaG90X2RldGFpbFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NuYXBzaG90X2RldGFpbFxuKVxubGV0IHNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfY2F0YWxvZ1xuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NuYXBzaG90X2NhdGFsb2dcbilcbmxldCBzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbilcbmxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuKVxubGV0IHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW5mbyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9pbmZvXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2luZm8gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9pbmZvXG4pXG5sZXQgc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kgPSAoXG4gIENvdW50ZXIuRWZmaWNpZW5jeS53cml0ZV90XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3kgPSAoXG4gIENvdW50ZXIuRWZmaWNpZW5jeS5yZWFkX3RcbilcbmxldCBzaW11bGF0aW9uX2VmZmljaWVuY3lfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3RcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4pXG5sZXQgc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3JcbilcbmxldCBzdHJpbmdfb2ZfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2FwaV9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yXG4pXG5sZXQgYXBpX3Jlc3VsdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2FwaV9tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9tZXNzYWdlXG4pXG5sZXQgc3RyaW5nX29mX2FwaV9tZXNzYWdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2FwaV9tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfYXBpX21lc3NhZ2UgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfbWVzc2FnZVxuKVxubGV0IGFwaV9tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9hcGlfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19hcGlfbWVzc2FnZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfYXBpX21lc3NhZ2VcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fYXBpX21lc3NhZ2VfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19hcGlfbWVzc2FnZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2FwaV9tZXNzYWdlXG4gIClcbilcbmxldCBfYXBpX21lc3NhZ2VfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2FwaV9tZXNzYWdlX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX2EgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX2Egd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19hID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN1bHRfZDFmOTgyNCB3cml0ZV9fYSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN1bHRfZDFmOTgyNCByZWFkX19hID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9fYSByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF9kMWY5ODI0X29mX3N0cmluZyByZWFkX19hIHMgPVxuICByZWFkX19yZXN1bHRfZDFmOTgyNCByZWFkX19hIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdWx0IHdyaXRlX19vayA9IChcbiAgd3JpdGVfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19va1xuKVxubGV0IHN0cmluZ19vZl9yZXN1bHQgd3JpdGVfX29rID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3VsdCB3cml0ZV9fb2sgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN1bHQgcmVhZF9fb2sgPSAoXG4gIHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX29rXG4pXG5sZXQgcmVzdWx0X29mX3N0cmluZyByZWFkX19vayBzID1cbiAgcmVhZF9yZXN1bHQgcmVhZF9fb2sgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90ID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wbG90XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3QgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcGxvdFxuKVxubGV0IHBsb3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9sb2dfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfbG9nX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfbG9nX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbG9nX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9sb2dfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9sb2dfbWVzc2FnZVxuKVxubGV0IGxvZ19tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9sb2dfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZV9jYXRhbG9nXG4pXG5sZXQgZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZW52aXJvbm1lbnRfaW5mb1xuKVxubGV0IHN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Vudmlyb25tZW50X2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2Vudmlyb25tZW50X2luZm9cbilcbmxldCBlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9lbnZpcm9ubWVudF9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2Rpbl9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluX2NhdGFsb2dcbilcbmxldCBkaW5fY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW4gPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2RpblxuKVxubGV0IHN0cmluZ19vZl9kaW4gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2RpblxuKVxubGV0IGRpbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zdHJpbmdfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gIClcbilcbmxldCBfc3RyaW5nX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RMb2FkXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbERJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9sb2dfbWVzc2FnZVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2RldGFpbFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbmZvXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25FZmZpY2llbmN5XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblRyYWNlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25PdXRwdXRzWmlwXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ29udGludWVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uU3RhcnRcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJFbnZpcm9ubWVudEluZm9cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZW52aXJvbm1lbnRfaW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdENyZWF0ZVxcXCJcIlxuICAgICAgfCBgUHJvamVjdERlbGV0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0RGVsZXRlXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0Q2F0YWxvZyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0Q2F0YWxvZ1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9fc3RyaW5nX2xpc3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVzcG9uc2VfY29udGVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Vudmlyb25tZW50X2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm8geFxuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDcmVhdGVcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlXG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdExvYWRcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZVxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZVxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2RpblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2RldGFpbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCBcIkVudmlyb25tZW50SW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9lbnZpcm9ubWVudF9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDYXRhbG9nIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3RfcmVzcG9uc2VfY29udGVudF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVzdF9yZXNwb25zZV9jb250ZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmID0gKFxuICB3cml0ZV9hcGlfcmVzdWx0IHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0XzRjYTZiOGYgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF80Y2E2YjhmID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgcmVhZF9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IF9yZXN1bHRfNGNhNmI4Zl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3Jlc3VsdF80Y2E2YjhmIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHdyaXRlX19yZXN1bHRfNGNhNmI4ZlxuKVxubGV0IHN0cmluZ19vZl9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID0gKFxuICByZWFkX19yZXN1bHRfNGNhNmI4ZlxuKVxubGV0IF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVzcG9uc2UgPSAoXG4gIHdyaXRlX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVzcG9uc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdF9yZXNwb25zZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3RfcmVzcG9uc2UgPSAoXG4gIHJlYWRfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRcbilcbmxldCByZXN0X3Jlc3BvbnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXN0X3Jlc3BvbnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJzZSA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcHJvamVjdF9wYXJzZVxuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyc2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcnNlID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3Byb2plY3RfcGFyc2VcbilcbmxldCBwcm9qZWN0X3BhcnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3Byb2plY3RfcGFyYW1ldGVyXG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcHJvamVjdF9wYXJhbWV0ZXJcbilcbmxldCBwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcGxvdF9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wbG90X3BhcmFtZXRlclxuKVxubGV0IHBsb3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Rpbl9pZCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluX2lkXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5faWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5faWQgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluX2lkXG4pXG5sZXQgZGluX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN0X3JlcXVlc3QgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0TG9hZFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcnNlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfaWRcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uSW5mb1xcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25UcmFjZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJFbnZpcm9ubWVudEluZm9cXFwiXCJcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RDYXRhbG9nXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0Q3JlYXRlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RDcmVhdGVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXJcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3REZWxldGVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuKVxubGV0IHN0cmluZ19vZl9yZXN0X3JlcXVlc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdF9yZXF1ZXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdF9yZXF1ZXN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm9cbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2dcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZSB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdERlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZSB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvXG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2dcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZSB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXN0X3JlcXVlc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3RfcmVxdWVzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0TG9hZFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9fc3RyaW5nX2xpc3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfbG9nX21lc3NhZ2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW5mb1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5fY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25UcmFjZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25QYXJhbWV0ZXJcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGF1c2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkludGVydmVudGlvblxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3BvbnNlX2NvbnRlbnQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzcG9uc2VfY29udGVudCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2xvZ19tZXNzYWdlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXNwb25zZV9jb250ZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXNwb25zZV9jb250ZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3VsdF84OTBkOWZlID0gKFxuICB3cml0ZV9hcGlfcmVzdWx0IHdyaXRlX3Jlc3BvbnNlX2NvbnRlbnQgd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfX3Jlc3VsdF84OTBkOWZlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN1bHRfODkwZDlmZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN1bHRfODkwZDlmZSA9IChcbiAgcmVhZF9hcGlfcmVzdWx0IHJlYWRfcmVzcG9uc2VfY29udGVudCByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF84OTBkOWZlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdWx0Xzg5MGQ5ZmUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHdyaXRlX19yZXN1bHRfODkwZDlmZVxuKVxubGV0IHN0cmluZ19vZl9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID0gKFxuICByZWFkX19yZXN1bHRfODkwZDlmZVxuKVxubGV0IF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzcG9uc2UgPSAoXG4gIHdyaXRlX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHN0cmluZ19vZl9yZXNwb25zZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXNwb25zZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3BvbnNlID0gKFxuICByZWFkX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHJlc3BvbnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXNwb25zZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3JlcXVlc3QgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0TG9hZFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcnNlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfaWRcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uSW5mb1xcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25UcmFjZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVxdWVzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXF1ZXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVxdWVzdCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJzZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mb1xuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJzZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgcmVxdWVzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVxdWVzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbilcbmxldCBzdHJpbmdfb2ZfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4pXG5sZXQgaWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbWVzc2FnZSB3cml0ZV9fZGF0YSA6IF8gLT4gJ2RhdGEgbWVzc2FnZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiAnZGF0YSBtZXNzYWdlKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiaWRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX2lkXG4gICAgKVxuICAgICAgb2IgeC5pZDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiZGF0YVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2RhdGFcbiAgICApXG4gICAgICBvYiB4LmRhdGE7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfbWVzc2FnZSB3cml0ZV9fZGF0YSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9tZXNzYWdlIHdyaXRlX19kYXRhIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbWVzc2FnZSByZWFkX19kYXRhID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2lkID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9kYXRhID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnYScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9pZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2RhdGEgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19kYXRhXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2EnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9pZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfaWRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9kYXRhIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZGF0YVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQgPSAobWF0Y2ggIWZpZWxkX2lkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJpZFwiKTtcbiAgICAgICAgICAgIGRhdGEgPSAobWF0Y2ggIWZpZWxkX2RhdGEgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImRhdGFcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAnZGF0YSBtZXNzYWdlKVxuICAgICAgKVxuKVxubGV0IG1lc3NhZ2Vfb2Zfc3RyaW5nIHJlYWRfX2RhdGEgcyA9XG4gIHJlYWRfbWVzc2FnZSByZWFkX19kYXRhIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2RldGFpbCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZmlsZV9saW5lX2RldGFpbFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZV9kZXRhaWxcbilcbmxldCBmaWxlX2xpbmVfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9maWxlX2xpbmVcbilcbmxldCBmaWxlX2xpbmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuZXhjZXB0aW9uIEJhZFJlc3BvbnNlIG9mIE1waV9tZXNzYWdlX2oucmVzcG9uc2VfY29udGVudFxuXG5sZXQgb25fbWVzc2FnZSAobWFuYWdlciA6IEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24pXG4gICAgKHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0IEx3dC50KSAodGV4dF9tZXNzYWdlIDogc3RyaW5nKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgIE1waV9tZXNzYWdlX2oubWVzc2FnZV9vZl9zdHJpbmcgTXBpX21lc3NhZ2Vfai5yZWFkX3JlcXVlc3QgdGV4dF9tZXNzYWdlXG4gIGluXG4gIGxldCBoYW5kbGVyIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICgnYSAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlX2NvbnRlbnQpIC0+ICdhIEFwaS5yZXN1bHQgLT4gdW5pdCBMd3QudCA9XG4gICBmdW4gcGFjayByZXN1bHQgLT5cbiAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICAgIHtcbiAgICAgICAgTXBpX21lc3NhZ2Vfai5pZCA9IG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5pZDtcbiAgICAgICAgTXBpX21lc3NhZ2Vfai5kYXRhID0gUmVzdWx0X3V0aWwubWFwIHBhY2sgcmVzdWx0O1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHRleHQgOiBzdHJpbmcgPVxuICAgICAgTXBpX21lc3NhZ2Vfai5zdHJpbmdfb2ZfbWVzc2FnZSBNcGlfbWVzc2FnZV9qLndyaXRlX3Jlc3BvbnNlIG1lc3NhZ2VcbiAgICBpblxuICAgIHBvc3RfbWVzc2FnZSB0ZXh0XG4gIGluXG4gIG1hdGNoIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5kYXRhIHdpdGhcbiAgfCBgUHJvamVjdExvYWQgQXBpX3R5cGVzX3QueyBwYXR0ZXJuX3NoYXJpbmc7IGFzdDsgdmFyaWFibGVfb3ZlcndyaXR0ZW4gfSAtPlxuICAgIG1hbmFnZXIjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuX3NoYXJpbmcgYXN0IHZhcmlhYmxlX292ZXJ3cml0dGVuXG4gICAgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgUHJvamVjdExvYWQpXG4gIHwgYFNpbXVsYXRpb25Db250aW51ZSBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jb250aW51ZSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gKCkgLT4gYFNpbXVsYXRpb25Db250aW51ZSlcbiAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGUgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvbkRlbGV0ZSlcbiAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIGZpbGVfbGluZV9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIGRpbl9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsRElOIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3QgcGxvdF9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IHNuYXBzaG90X2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25JbmZvIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm8gPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25JbmZvIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRWZmaWNpZW5jeSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZGluXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nRElOIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uUGFyYW1ldGVyIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvblRyYWNlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uVHJhY2UgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9vdXRwdXRzX3ppcFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAoQmFzZTY0LmVuY29kZSByZXN1bHQpKVxuICB8IGBTaW11bGF0aW9uUGF1c2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcGF1c2UgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvblBhdXNlKVxuICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2ludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgID4+PSBoYW5kbGVyIChmdW4gcyAtPiBgU2ltdWxhdGlvbkludGVydmVudGlvbiBzKVxuICB8IGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fc3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvblN0YXJ0IHJlc3VsdClcblxuY2xhc3MgdHlwZSB2aXJ0dWFsIG1hbmFnZXJfYmFzZV90eXBlID0gb2JqZWN0XG4gIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgbWVzc2FnZSA6XG4gICAgTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcblxuICBpbmhlcml0IEFwaS5tYW5hZ2VyX3NpbXVsYXRpb25cbmVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfYmFzZSAoKSA6IG1hbmFnZXJfYmFzZV90eXBlID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgbWVzc2FnZVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC50XG5cbiAgICBtZXRob2Qgc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuX3NoYXJpbmcgYXN0IHZhcmlhYmxlX292ZXJ3cml0dGVuXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZVxuICAgICAgICAoYFByb2plY3RMb2FkXG4gICAgICAgICAgQXBpX3R5cGVzX3QueyBwYXR0ZXJuX3NoYXJpbmc7IGFzdDsgdmFyaWFibGVfb3ZlcndyaXR0ZW4gfSlcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0TG9hZCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jb250aW51ZSAocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKVxuICAgICAgICA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uQ29udGludWUgcGF1c2VfY29uZGl0aW9uKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIChmaWxlX2xpbmVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDogc3RyaW5nIGxpc3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfbGlzdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmaWxlX2xpbmVfbGlzdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZGluIChmbHV4X21hcF9pZCA6IEFwaV90eXBlc190LmRpbl9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW4gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsRElOIGZsdXhfbWFwX2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXAgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmx1eF9tYXApXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgICAgIDogQXBpX3R5cGVzX2oubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgbG9nX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgbG9nX21lc3NhZ2UpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX2oucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogQXBpX3R5cGVzX2oucGxvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3RfcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3QgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcGxvdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3QgKHNuYXBzaG90X2lkIDogQXBpX3R5cGVzX2ouc25hcHNob3RfaWQpXG4gICAgICAgIDogQXBpX3R5cGVzX2ouc25hcHNob3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNuYXBzaG90KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25JbmZvXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkluZm8gc2ltdWxhdGlvbl9zdGF0dXMgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9zdGF0dXMpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA6IENvdW50ZXIuRWZmaWNpZW5jeS50IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IGVmZmljaWVuY3kgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZWZmaWNpZW5jeSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICA6IEFwaV90eXBlc19qLmZpbGVfbGluZV9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSBpbmZvIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGluZm8pXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gOiBBcGlfdHlwZXNfai5kaW5fY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiBpbmZvIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGluZm8pXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICA6IEFwaV90eXBlc19qLnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IGluZm8gLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXVzZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9yYXdfdHJhY2UgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCByZXN1bHQgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEJhc2U2NC5kZWNvZGUgcmVzdWx0KSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlciBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgcmVzdWx0IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHJlc3VsdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pXG4gICAgICAgIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHMgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydFxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2FydGlmYWN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX2lkIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNpbXVsYXRpb25faWQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuICBlbmRcblxubW9kdWxlIEludE1hcCA9IE1vZHMuSW50TWFwXG5cbnR5cGUgY29udGV4dCA9IHsgbWFpbGJveGVzOiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC51IEludE1hcC50OyBpZDogaW50IH1cblxuY2xhc3MgdHlwZSB2aXJ0dWFsIG1hbmFnZXJfbXBpX3R5cGUgPSBvYmplY3RcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBzbGVlcCA6IGZsb2F0IC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBwb3N0X21lc3NhZ2UgOiBzdHJpbmcgLT4gdW5pdFxuICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcbiAgbWV0aG9kIHByaXZhdGUgcmVjZWl2ZSA6IHN0cmluZyAtPiB1bml0XG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc2ltdWxhdGlvblxuICBtZXRob2QgcHJpdmF0ZSBzaW1faXNfY29tcHV0aW5nIDogYm9vbFxuICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlciAoKSA6IG1hbmFnZXJfbXBpX3R5cGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgY29udGV4dCA9IHsgbWFpbGJveGVzID0gSW50TWFwLmVtcHR5OyBpZCA9IDAgfVxuICAgIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgc2xlZXAgOiBmbG9hdCAtPiB1bml0IEx3dC50XG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBwb3N0X21lc3NhZ2UgOiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByZWNlaXZlIChyZXNwb25zZV90ZXh0IDogc3RyaW5nKSA9XG4gICAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICAgICAgTXBpX21lc3NhZ2Vfai5tZXNzYWdlX29mX3N0cmluZyBNcGlfbWVzc2FnZV9qLnJlYWRfcmVzcG9uc2VcbiAgICAgICAgICByZXNwb25zZV90ZXh0XG4gICAgICBpblxuICAgICAgbWF0Y2ggSW50TWFwLnBvcCBtZXNzYWdlLk1waV9tZXNzYWdlX2ouaWQgY29udGV4dC5tYWlsYm94ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlLCBtYWlsYm94ZXMgLT5cbiAgICAgICAgbGV0ICgpID0gY29udGV4dCA8LSB7IGNvbnRleHQgd2l0aCBtYWlsYm94ZXMgfSBpblxuICAgICAgICBMd3Qud2FrZXVwIHZhbHVlIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5kYXRhXG4gICAgICB8IE5vbmUsIG1haWxib3hlcyAtPiBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIG1haWxib3hlcyB9XG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIChyZXF1ZXN0IDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0KVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnQgPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICBsZXQgKCkgPSBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIGlkID0gY29udGV4dC5pZCArIDEgfSBpblxuICAgICAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAgICAgIHsgTXBpX21lc3NhZ2Vfai5pZCA9IGNvbnRleHQuaWQ7IE1waV9tZXNzYWdlX2ouZGF0YSA9IHJlcXVlc3QgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgbWVzc2FnZV90ZXh0IDogc3RyaW5nID1cbiAgICAgICAgICBNcGlfbWVzc2FnZV9qLnN0cmluZ19vZl9tZXNzYWdlIE1waV9tZXNzYWdlX2oud3JpdGVfcmVxdWVzdCBtZXNzYWdlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHNlbGYjcG9zdF9tZXNzYWdlIG1lc3NhZ2VfdGV4dCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGNvbnRleHQgPC1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29udGV4dCB3aXRoXG4gICAgICAgICAgICAgIG1haWxib3hlcyA9IEludE1hcC5hZGQgY29udGV4dC5pZCBmZWVkZXIgY29udGV4dC5tYWlsYm94ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIHJlc3VsdFxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBcIkthcHBhIGhhcyBkaWVkXCIpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzaW1faXNfY29tcHV0aW5nID0gbm90IChJbnRNYXAuaXNfZW1wdHkgY29udGV4dC5tYWlsYm94ZXMpXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2Jhc2UgKClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNpbXVsYXRpb25fZGV0YWlsX291dHB1dCA9XG4gICggQXBpX3R5cGVzX3QucGxvdCBvcHRpb24sXG4gICAgKHN0cmluZyAqIEFwaV90eXBlc190LmRpbikgbGlzdCxcbiAgICBzdHJpbmcgbGlzdCBNb2RzLlN0cmluZ01hcC50LFxuICAgIEFwaV90eXBlc190LnNuYXBzaG90IE1vZHMuU3RyaW5nTWFwLnQsXG4gICAgc3RyaW5nLFxuICAgIHN0cmluZyApXG4gIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0XG5cbmxldCBhcGlfc25hcHNob3RfZG90IChzbmFwc2hvdCA6IEFwaV90eXBlc190LnNuYXBzaG90KSA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9kb3Rfc25hcHNob3QgP3V1aWQ6Tm9uZSkgc25hcHNob3RcblxubGV0IGFwaV9zbmFwc2hvdF9rYXBwYSAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSA6IHN0cmluZyA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdFxuXG5sZXQgYXBpX3NpbXVsYXRpb25fc3RhdHVzIChwcm9ncmVzcyA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3MpXG4gICAgKGRldGFpbCA6IHNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gPVxuICBsZXQgb3V0cHV0IDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9XG4gICAge1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9XG4gICAgICAgIChtYXRjaCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgIHwgU29tZSBwbG90IC0+IExpc3QubGVuZ3RoIHBsb3QuRGF0YS5wbG90X3Nlcmllcyk7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zID1cbiAgICAgICAgTGlzdC5sZW5ndGggZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuc2l6ZSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9XG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLnNpemUgZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9ICgpO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID1cbiAgICAgICAgU3RyaW5nLmxlbmd0aCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzO1xuICAgIH1cbiAgaW5cbiAge1xuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXQgPSBvdXRwdXQ7XG4gIH1cblxuKCogcmV0dXJuIHRoZSBhZ2VudCBjb3VudCAqKVxubGV0IGFnZW50X2NvdW50IChzcGVjaWVzIDogQXBpX3R5cGVzX3Quc2l0ZV9ncmFwaCkgOiBpbnQgPSBBcnJheS5sZW5ndGggc3BlY2llc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAoRnJvbSkgVGhlIENhbWxaaXAgbGlicmFyeSAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAyMDAxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqKVxuKCogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBXcml0ZSB1bmVmZmljaWVudGx5IGJ1dCBpbiBwdXJlIE9DYW1sIHVuY29tcHJlc3NlZCBaSVAgYXJjaGl2ZXMgKilcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgd3JpdGUxIG9jIG4gPSBCaWdidWZmZXIuYWRkX2NoYXIgb2MgKENoYXIudW5zYWZlX2NociBuKVxuXG5sZXQgd3JpdGUyIG9jIG4gPVxuICB3cml0ZTEgb2MgbjtcbiAgd3JpdGUxIG9jIChuIGxzciA4KVxuXG5sZXQgd3JpdGU0IG9jIG4gPVxuICB3cml0ZTIgb2MgKEludDMyLnRvX2ludCBuKTtcbiAgd3JpdGUyIG9jIChJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxNikpXG5cbmxldCB3cml0ZTRfaW50IG9jIG4gPVxuICB3cml0ZTIgb2MgbjtcbiAgd3JpdGUyIG9jIChuIGxzciAxNilcblxubGV0IHdyaXRlc3RyaW5nIG9jIHMgPSBCaWdidWZmZXIuYWRkX3N0cmluZyBvYyBzXG5cbnR5cGUgY29tcHJlc3Npb25fbWV0aG9kID0gU3RvcmVkXG5cbnR5cGUgZW50cnkgPSB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGV4dHJhOiBzdHJpbmc7XG4gIGNvbW1lbnQ6IHN0cmluZztcbiAgbWV0aGQ6IGNvbXByZXNzaW9uX21ldGhvZDtcbiAgbXRpbWU6IGZsb2F0O1xuICBjcmM6IGludDMyO1xuICB1bmNvbXByZXNzZWRfc2l6ZTogaW50O1xuICBjb21wcmVzc2VkX3NpemU6IGludDtcbiAgKCppc19kaXJlY3Rvcnk6IGJvb2w7KilcbiAgZmlsZV9vZmZzZXQ6IGludDMyO1xufVxuXG50eXBlIG91dF9maWxlID0ge1xuICBvZl9maWxlbmFtZTogc3RyaW5nO1xuICBvZl9jaGFubmVsOiBCaWdidWZmZXIudDtcbiAgbXV0YWJsZSBvZl9lbnRyaWVzOiBlbnRyeSBsaXN0O1xuICBvZl9jb21tZW50OiBzdHJpbmc7XG59XG5cbigqbGV0IGZpbGVuYW1lX2lzX2RpcmVjdG9yeSBuYW1lID1cbiAgU3RyaW5nLmxlbmd0aCBuYW1lID4gMCAmJiBuYW1lLltTdHJpbmcubGVuZ3RoIG5hbWUgLSAxXSA9ICcvJyopXG5cbigqIENvbnZlcnQgYmV0d2VlbiBVbml4IGRhdGVzIGFuZCBET1MgZGF0ZXMgKilcblxubGV0IGRvc3RpbWVfb2ZfdW5peHRpbWUgdCA9XG4gIGxldCB0bSA9IFVuaXgubG9jYWx0aW1lIHQgaW5cbiAgKCAodG0uVW5peC50bV9zZWMgbHNyIDEpICsgKHRtLlVuaXgudG1fbWluIGxzbCA1KSArICh0bS5Vbml4LnRtX2hvdXIgbHNsIDExKSxcbiAgICB0bS5Vbml4LnRtX21kYXlcbiAgICArICgodG0uVW5peC50bV9tb24gKyAxKSBsc2wgNSlcbiAgICArICgodG0uVW5peC50bV95ZWFyIC0gODApIGxzbCA5KSApXG5cbigqIE9wZW4gYSBaSVAgZmlsZSBmb3Igd3JpdGluZyAqKVxuXG5sZXQgb3Blbl9vdXQgPyhjb21tZW50ID0gXCJcIikgZmlsZW5hbWUgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGNvbW1lbnQgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChmaWxlbmFtZSwgXCJcIiwgXCJjb21tZW50IHRvbyBsb25nXCIpKTtcbiAge1xuICAgIG9mX2ZpbGVuYW1lID0gZmlsZW5hbWU7XG4gICAgb2ZfY2hhbm5lbCA9IEJpZ2J1ZmZlci5jcmVhdGUgODE5MjtcbiAgICBvZl9lbnRyaWVzID0gW107XG4gICAgb2ZfY29tbWVudCA9IGNvbW1lbnQ7XG4gIH1cblxuKCogQ2xvc2UgYSBaSVAgZmlsZSBmb3Igd3JpdGluZy4gIEFkZCBjZW50cmFsIGRpcmVjdG9yeS4gKilcblxubGV0IHdyaXRlX2RpcmVjdG9yeV9lbnRyeSBvYyBlID1cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwMjAxNGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICBsZXQgdmVyc2lvbiA9XG4gICAgbWF0Y2ggZS5tZXRoZCB3aXRoXG4gICAgfCBTdG9yZWQgLT4gMTBcbiAgaW5cbiAgd3JpdGUyIG9jIHZlcnNpb247XG4gICgqIHZlcnNpb24gbWFkZSBieSAqKVxuICB3cml0ZTIgb2MgdmVyc2lvbjtcbiAgKCogdmVyc2lvbiBuZWVkZWQgdG8gZXh0cmFjdCAqKVxuICB3cml0ZTIgb2MgODtcbiAgKCogZmxhZ3MgKilcbiAgd3JpdGUyIG9jXG4gICAgKG1hdGNoIGUubWV0aGQgd2l0aFxuICAgIHwgU3RvcmVkIC0+IDApO1xuICAoKiBtZXRob2QgKilcbiAgbGV0IHRpbWUsIGRhdGUgPSBkb3N0aW1lX29mX3VuaXh0aW1lIGUubXRpbWUgaW5cbiAgd3JpdGUyIG9jIHRpbWU7XG4gICgqIGxhc3QgbW9kIHRpbWUgKilcbiAgd3JpdGUyIG9jIGRhdGU7XG4gICgqIGxhc3QgbW9kIGRhdGUgKilcbiAgd3JpdGU0IG9jIGUuY3JjO1xuICAoKiBDUkMzMiAqKVxuICB3cml0ZTRfaW50IG9jIGUuY29tcHJlc3NlZF9zaXplO1xuICAoKiBjb21wcmVzc2VkIHNpemUgKilcbiAgd3JpdGU0X2ludCBvYyBlLnVuY29tcHJlc3NlZF9zaXplO1xuICAoKiB1bmNvbXByZXNzZWQgc2l6ZSAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5maWxlbmFtZSk7XG4gICgqIGZpbGVuYW1lIGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5leHRyYSk7XG4gICgqIGV4dHJhIGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5jb21tZW50KTtcbiAgKCogY29tbWVudCBsZW5ndGggKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGRpc2sgbnVtYmVyIHN0YXJ0ICopXG4gIHdyaXRlMiBvYyAwO1xuICAoKiBpbnRlcm5hbCBhdHRyaWJ1dGVzICopXG4gIHdyaXRlNF9pbnQgb2MgMDtcbiAgKCogZXh0ZXJuYWwgYXR0cmlidXRlcyAqKVxuICB3cml0ZTQgb2MgZS5maWxlX29mZnNldDtcbiAgKCogb2Zmc2V0IG9mIGxvY2FsIGhlYWRlciAqKVxuICB3cml0ZXN0cmluZyBvYyBlLmZpbGVuYW1lO1xuICAoKiBmaWxlbmFtZSAqKVxuICB3cml0ZXN0cmluZyBvYyBlLmV4dHJhO1xuICAoKiBleHRyYSBpbmZvICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuY29tbWVudCAoKiBmaWxlIGNvbW1lbnQgKilcblxubGV0IGNsb3NlX291dCBvZmlsZSA9XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgbGV0IHN0YXJ0X2NkID0gQmlnYnVmZmVyLmxlbmd0aCBvYyBpblxuICBMaXN0Lml0ZXIgKHdyaXRlX2RpcmVjdG9yeV9lbnRyeSBvYykgKExpc3QucmV2IG9maWxlLm9mX2VudHJpZXMpO1xuICBsZXQgY2Rfc2l6ZSA9IEJpZ2J1ZmZlci5sZW5ndGggb2MgLSBzdGFydF9jZCBpblxuICBsZXQgbnVtX2VudHJpZXMgPSBMaXN0Lmxlbmd0aCBvZmlsZS5vZl9lbnRyaWVzIGluXG4gIGlmIG51bV9lbnRyaWVzID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIFwiXCIsIFwidG9vIG1hbnkgZW50cmllc1wiKSk7XG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDYwNTRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGRpc2sgbnVtYmVyICopXG4gIHdyaXRlMiBvYyAwO1xuICAoKiBudW1iZXIgb2YgZGlzayB3aXRoIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlMiBvYyBudW1fZW50cmllcztcbiAgKCogIyBlbnRyaWVzIGluIHRoaXMgZGlzayAqKVxuICB3cml0ZTIgb2MgbnVtX2VudHJpZXM7XG4gICgqICMgZW50cmllcyBpbiBjZW50cmFsIGRpciAqKVxuICB3cml0ZTRfaW50IG9jIGNkX3NpemU7XG4gICgqIHNpemUgb2YgY2VudHJhbCBkaXIgKilcbiAgd3JpdGU0X2ludCBvYyBzdGFydF9jZDtcbiAgKCogb2Zmc2V0IG9mIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBvZmlsZS5vZl9jb21tZW50KTtcbiAgKCogbGVuZ3RoIG9mIGNvbW1lbnQgKilcbiAgd3JpdGVzdHJpbmcgb2Mgb2ZpbGUub2ZfY29tbWVudDtcbiAgKCogY29tbWVudCAqKVxuICBCaWdidWZmZXIuY29udGVudHMgb2NcblxuKCogV3JpdGUgYSBsb2NhbCBmaWxlIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5ICopXG5cbmxldCBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgZmlsZW5hbWUgPVxuICBpZiBsZXZlbCA8PiAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBmaWxlbmFtZSwgXCJmYWtlX3ppcCBjYW5ub3QgY29tcHJlc3NcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImZpbGVuYW1lIHRvbyBsb25nXCIpKTtcbiAgaWYgU3RyaW5nLmxlbmd0aCBleHRyYSA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBmaWxlbmFtZSwgXCJleHRyYSBkYXRhIHRvbyBsb25nXCIpKTtcbiAgaWYgU3RyaW5nLmxlbmd0aCBjb21tZW50ID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImNvbW1lbnQgdG9vIGxvbmdcIikpO1xuICBsZXQgb2MgPSBvZmlsZS5vZl9jaGFubmVsIGluXG4gIGxldCBwb3MgPSBCaWdidWZmZXIubGVuZ3RoIG9jIGluXG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDQwMzRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgbGV0IHZlcnNpb24gPVxuICAgIGlmIGxldmVsID0gMCB0aGVuXG4gICAgICAxMFxuICAgIGVsc2VcbiAgICAgIDIwXG4gIGluXG4gIHdyaXRlMiBvYyB2ZXJzaW9uO1xuICAoKiB2ZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0ICopXG4gIHdyaXRlMiBvYyA4O1xuICAoKiBmbGFncyAqKVxuICB3cml0ZTIgb2NcbiAgICAoaWYgbGV2ZWwgPSAwIHRoZW5cbiAgICAgICAwXG4gICAgIGVsc2VcbiAgICAgICA4KTtcbiAgKCogbWV0aG9kICopXG4gIGxldCB0aW1lLCBkYXRlID0gZG9zdGltZV9vZl91bml4dGltZSBtdGltZSBpblxuICB3cml0ZTIgb2MgdGltZTtcbiAgKCogbGFzdCBtb2QgdGltZSAqKVxuICB3cml0ZTIgb2MgZGF0ZTtcbiAgKCogbGFzdCBtb2QgZGF0ZSAqKVxuICB3cml0ZTQgb2MgSW50MzIuemVybztcbiAgKCogQ1JDMzIgLSB0byBiZSBmaWxsZWQgbGF0ZXIgKilcbiAgd3JpdGU0X2ludCBvYyAwO1xuICAoKiBjb21wcmVzc2VkIHNpemUgLSBsYXRlciAqKVxuICB3cml0ZTRfaW50IG9jIDA7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplIC0gbGF0ZXIgKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKTtcbiAgKCogZmlsZW5hbWUgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBleHRyYSk7XG4gICgqIGV4dHJhIGxlbmd0aCAqKVxuICB3cml0ZXN0cmluZyBvYyBmaWxlbmFtZTtcbiAgKCogZmlsZW5hbWUgKilcbiAgd3JpdGVzdHJpbmcgb2MgZXh0cmE7XG4gICgqIGV4dHJhIGluZm8gKilcbiAge1xuICAgIGZpbGVuYW1lO1xuICAgIGV4dHJhO1xuICAgIGNvbW1lbnQ7XG4gICAgbWV0aGQgPSBTdG9yZWQ7XG4gICAgbXRpbWU7XG4gICAgY3JjID0gSW50MzIuemVybztcbiAgICB1bmNvbXByZXNzZWRfc2l6ZSA9IDA7XG4gICAgY29tcHJlc3NlZF9zaXplID0gMDtcbiAgICAoKmlzX2RpcmVjdG9yeSA9IGZpbGVuYW1lX2lzX2RpcmVjdG9yeSBmaWxlbmFtZTsqKVxuICAgIGZpbGVfb2Zmc2V0ID0gSW50MzIub2ZfaW50IHBvcztcbiAgfVxuXG4oKiBXcml0ZSBhIGRhdGEgZGVzY3JpcHRvciBhbmQgdXBkYXRlIHRoZSBlbnRyeSAqKVxuXG5sZXQgYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSBjcmMgY29tcHJfc2l6ZSB1bmNvbXByX3NpemUgZW50cnkgPVxuICBsZXQgb2MgPSBvZmlsZS5vZl9jaGFubmVsIGluXG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDgwNzRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgd3JpdGU0IG9jIGNyYztcbiAgKCogQ1JDICopXG4gIHdyaXRlNF9pbnQgb2MgY29tcHJfc2l6ZTtcbiAgKCogY29tcHJlc3NlZCBzaXplICopXG4gIHdyaXRlNF9pbnQgb2MgdW5jb21wcl9zaXplO1xuICAoKiB1bmNvbXByZXNzZWQgc2l6ZSAqKVxuICB7XG4gICAgZW50cnkgd2l0aFxuICAgIGNyYztcbiAgICB1bmNvbXByZXNzZWRfc2l6ZSA9IHVuY29tcHJfc2l6ZTtcbiAgICBjb21wcmVzc2VkX3NpemUgPSBjb21wcl9zaXplO1xuICB9XG5cbmxldCB1cGRhdGVfY3JjIGNyYyBidWYgc3RhcnQgbGVuID0gQ3JjMzIuc3RyaW5nIH5jcmMgYnVmIHN0YXJ0IGxlblxuXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYSBzdHJpbmcgKilcblxubGV0IGFkZF9lbnRyeSBkYXRhIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKSA/KGxldmVsID0gMClcbiAgICA/KG10aW1lID0gVW5peC50aW1lICgpKSBuYW1lID1cbiAgbGV0IGUgPSBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgbmFtZSBpblxuICBsZXQgY3JjID0gdXBkYXRlX2NyYyBJbnQzMi56ZXJvIGRhdGEgMCAoU3RyaW5nLmxlbmd0aCBkYXRhKSBpblxuICBsZXQgY29tcHJfc2l6ZSA9XG4gICAgbWF0Y2ggbGV2ZWwgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmcgb2ZpbGUub2ZfY2hhbm5lbCBkYXRhIDAgKFN0cmluZy5sZW5ndGggZGF0YSk7XG4gICAgICBTdHJpbmcubGVuZ3RoIGRhdGFcbiAgICB8IF8gLT4gcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJjb21wcmVzc2lvbiBlcnJvclwiKSlcbiAgaW5cbiAgbGV0IGUnID0gYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSBjcmMgY29tcHJfc2l6ZSAoU3RyaW5nLmxlbmd0aCBkYXRhKSBlIGluXG4gIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuXG4oKlxuKCogQWRkIGFuIGVudHJ5IHdpdGggdGhlIGNvbnRlbnRzIG9mIGFuIGluIGNoYW5uZWwgKilcblxubGV0IGNvcHlfY2hhbm5lbF90b19lbnRyeSBpYyBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyhsZXZlbCA9IDApID8obXRpbWUgPSBVbml4LnRpbWUoKSkgbmFtZSA9XG4gIGxldCBlID0gYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIG5hbWUgaW5cbiAgbGV0IGNyYyA9IHJlZiBJbnQzMi56ZXJvIGluXG4gIGxldCAoY29tcHJfc2l6ZSwgdW5jb21wcl9zaXplKSA9XG4gICAgbWF0Y2ggbGV2ZWwgd2l0aFxuICAgICAgMCAtPlxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDQwOTYgaW5cbiAgICAgICAgbGV0IHJlYyBjb3B5IHN6ID1cbiAgICAgICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiAwIChCeXRlcy5sZW5ndGggYnVmKSBpblxuICAgICAgICAgIGlmIHIgPSAwIHRoZW4gc3ogZWxzZSBiZWdpblxuICAgICAgICAgICAgY3JjIDo9IHVwZGF0ZV9jcmMgIWNyYyBidWYgMCByO1xuICAgICAgICAgICAgQml0QnVmZmVyLmFkZF9zdWJzdHJpbmcgb2ZpbGUub2ZfY2hhbm5lbCBidWYgMCByO1xuICAgICAgICAgICAgY29weSAoc3ogKyByKVxuICAgICAgICAgIGVuZCBpblxuICAgICAgICBsZXQgc2l6ZSA9IGNvcHkgMCBpblxuICAgICAgICAoc2l6ZSwgc2l6ZSlcbiAgICB8IF8gLT4gcmFpc2UgKEVycm9yKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKSBpblxuICBsZXQgZScgPSBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlICFjcmMgY29tcHJfc2l6ZSB1bmNvbXByX3NpemUgZSBpblxuICBvZmlsZS5vZl9lbnRyaWVzIDwtIGUnIDo6IG9maWxlLm9mX2VudHJpZXNcblxuKCogQWRkIGFuIGVudHJ5IHdpdGggdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSAqKVxuXG5sZXQgY29weV9maWxlX3RvX2VudHJ5IGluZmlsZW5hbWUgb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyhsZXZlbCA9IDApID9tdGltZSBuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gaW5maWxlbmFtZSBpblxuICBsZXQgbXRpbWUnID1cbiAgICBtYXRjaCBtdGltZSB3aXRoXG4gICAgICBTb21lIHQgLT4gbXRpbWVcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgdHJ5IFNvbWUoKFVuaXguc3RhdCBpbmZpbGVuYW1lKS5Vbml4LnN0X210aW1lKVxuICAgICAgICB3aXRoIFVuaXguVW5peF9lcnJvcihfLF8sXykgLT4gTm9uZSBpblxuICB0cnlcbiAgICBjb3B5X2NoYW5uZWxfdG9fZW50cnkgaWMgb2ZpbGUgfmV4dHJhIH5jb21tZW50IH5sZXZlbCA/bXRpbWU6bXRpbWUnIG5hbWU7XG4gICAgUGVydmFzaXZlcy5jbG9zZV9pbiBpY1xuICB3aXRoIHggLT5cbiAgICBQZXJ2YXNpdmVzLmNsb3NlX2luIGljOyByYWlzZSB4XG4qKVxuXG4oKiBBZGQgYW4gZW50cnkgd2hvc2UgY29udGVudCB3aWxsIGJlIHByb2R1Y2VkIGJ5IHRoZSBjYWxsZXIgKilcblxubGV0IGFkZF9lbnRyeV9nZW5lcmF0b3Igb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpID8obGV2ZWwgPSAwKVxuICAgID8obXRpbWUgPSBVbml4LnRpbWUgKCkpIG5hbWUgPVxuICBsZXQgZSA9IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBuYW1lIGluXG4gIGxldCBjcmMgPSByZWYgSW50MzIuemVybyBpblxuICBsZXQgY29tcHJfc2l6ZSA9IHJlZiAwIGluXG4gIGxldCB1bmNvbXByX3NpemUgPSByZWYgMCBpblxuICBsZXQgZmluaXNoZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGNoZWNrICgpID1cbiAgICBpZiAhZmluaXNoZWQgdGhlblxuICAgICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJlbnRyeSBhbHJlYWR5IGZpbmlzaGVkXCIpKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBmaW5pc2hlZCA6PSB0cnVlO1xuICAgIGxldCBlJyA9IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgIWNyYyAhY29tcHJfc2l6ZSAhdW5jb21wcl9zaXplIGUgaW5cbiAgICBvZmlsZS5vZl9lbnRyaWVzIDwtIGUnIDo6IG9maWxlLm9mX2VudHJpZXNcbiAgaW5cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IDAgLT5cbiAgICAoIChmdW4gYnVmIHBvcyBsZW4gLT5cbiAgICAgICAgY2hlY2sgKCk7XG4gICAgICAgIEJpZ2J1ZmZlci5hZGRfc3ViYnl0ZXMgb2ZpbGUub2ZfY2hhbm5lbCBidWYgcG9zIGxlbjtcbiAgICAgICAgY29tcHJfc2l6ZSA6PSAhY29tcHJfc2l6ZSArIGxlbjtcbiAgICAgICAgdW5jb21wcl9zaXplIDo9ICF1bmNvbXByX3NpemUgKyBsZW4pLFxuICAgICAgZnVuICgpIC0+XG4gICAgICAgIGNoZWNrICgpO1xuICAgICAgICBmaW5pc2ggKCkgKVxuICB8IF8gLT4gcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJjb21wcmVzc2lvbiBlcnJvclwiKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbigqIEVycm9yIG1lc3NhZ2VzICopXG5cbigqKiBJbnRlcmZhY2UgdG8ga2FwcGEgcnVudGltZSAqKVxubGV0IG1zZ19wcm9jZXNzX25vdF9wYXVzZWQgPSBcInByb2Nlc3Mgbm90IHBhdXNlZFwiXG5cbigqKiAgU3lzdGVtIHByb2Nlc3NcblxuICAgICBUaGVzZSBhcmUgc3lzdGVtIHByb2Nlc3MgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGF0XG4gICAgIHZhcnkuXG4qKVxuY2xhc3MgdHlwZSBzeXN0ZW1fcHJvY2VzcyA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogP2V4bjpleG4gLT4gc3RyaW5nIC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIHlpZWxkIDogdW5pdCAtPiB1bml0IEx3dC50XG4gIG1ldGhvZCBtaW5fcnVuX2R1cmF0aW9uIDogdW5pdCAtPiBmbG9hdFxuZW5kXG5cbigqKiBUcml2aWFsIGltcGxlbWVudGF0aW9uIHByaW1hcmlseSBmb3IgdW5pdCB0ZXN0aW5nLiAqKVxuY2xhc3MgbnVsbF9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MgPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG9nID9leG4gKF8gOiBzdHJpbmcpID1cbiAgICAgIGxldCAoKSA9IGlnbm9yZSBleG4gaW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG4gICAgbWV0aG9kIHlpZWxkICgpID0gTHd0LnJldHVybl91bml0XG4gICAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gKCkgPSAwLjBcbiAgZW5kXG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpc19ydW5uaW5nOiBib29sO1xuICBtdXRhYmxlIHJ1bl9maW5hbGl6ZTogYm9vbDtcbiAgbXV0YWJsZSBwYXVzZV9jb25kaXRpb246IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbDtcbiAgZHVtcElmRGVhZGxvY2tlZDogYm9vbDtcbiAgbWF4Q29uc2VjdXRpdmVDbGFzaDogaW50O1xuICBwYXR0ZXJuU2hhcmluZzogUGF0dGVybi5zaGFyaW5nX2xldmVsO1xuICBjb3VudGVyOiBDb3VudGVyLnQ7XG4gIGxvZ19idWZmZXI6IEJ1ZmZlci50O1xuICBsb2dfZm9ybTogRm9ybWF0LmZvcm1hdHRlcjtcbiAgbXV0YWJsZSBwbG90OiBEYXRhLnBsb3Q7XG4gIG11dGFibGUgc25hcHNob3RzOiBEYXRhLnNuYXBzaG90IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZGluczogKHN0cmluZyAqIERhdGEuZGluKSBsaXN0O1xuICBtdXRhYmxlIHNwZWNpZXM6XG4gICAgKGZsb2F0ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZmlsZXM6IHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZXJyb3JfbWVzc2FnZXM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgKCptdXRhYmxlKikgdHJhY2U6IEJ1ZmZlci50O1xuICBpbnB1dHNfYnVmZmVyOiBCdWZmZXIudDtcbiAgaW5wdXRzX2Zvcm06IEZvcm1hdC5mb3JtYXR0ZXI7XG4gIGFzdDogQXN0LnBhcnNpbmdfY29tcGlsO1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgbXV0YWJsZSBlbnY6IE1vZGVsLnQ7XG4gIG11dGFibGUgZ3JhcGg6IFJ1bGVfaW50ZXJwcmV0ZXIudDtcbiAgbXV0YWJsZSBzdGF0ZTogU3RhdGVfaW50ZXJwcmV0ZXIudDtcbiAgaW5pdF9sOiAoUHJpbWl0aXZlcy5hbGdfZXhwciAqIFByaW1pdGl2ZXMuZWxlbWVudGFyeV9ydWxlKSBsaXN0O1xuICBtdXRhYmxlIGxhc3R5aWVsZDogZmxvYXQ7XG59XG4oKiogU3RhdGUgb2YgdGhlIHJ1bm5pbmcgc2ltdWxhdGlvbi4gKilcblxubGV0IGNyZWF0ZV90IH5sb2dfZm9ybSB+bG9nX2J1ZmZlciB+Y29udGFjdF9tYXAgfmlucHV0c19idWZmZXIgfmlucHV0c19mb3JtXG4gICAgfmR1bXBJZkRlYWRsb2NrZWQgfm1heENvbnNlY3V0aXZlQ2xhc2ggfnBhdHRlcm5TaGFyaW5nIH5lbnYgfmNvdW50ZXIgfmdyYXBoXG4gICAgfnN0YXRlIH5pbml0X2wgfmxhc3R5aWVsZCB+YXN0IDogdCA9XG4gIHtcbiAgICBpc19ydW5uaW5nID0gZmFsc2U7XG4gICAgcnVuX2ZpbmFsaXplID0gZmFsc2U7XG4gICAgY291bnRlcjtcbiAgICBsb2dfYnVmZmVyO1xuICAgIGxvZ19mb3JtO1xuICAgIHBhdXNlX2NvbmRpdGlvbiA9IEFsZ19leHByLkZBTFNFO1xuICAgIGR1bXBJZkRlYWRsb2NrZWQ7XG4gICAgbWF4Q29uc2VjdXRpdmVDbGFzaDtcbiAgICBwYXR0ZXJuU2hhcmluZztcbiAgICBwbG90ID0gRGF0YS5pbml0X3Bsb3QgZW52O1xuICAgIHNuYXBzaG90cyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGRpbnMgPSBbXTtcbiAgICBzcGVjaWVzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZmlsZXMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBlcnJvcl9tZXNzYWdlcyA9IFtdO1xuICAgIHRyYWNlID0gQnVmZmVyLmNyZWF0ZSAxMDI0O1xuICAgIGlucHV0c19idWZmZXI7XG4gICAgaW5wdXRzX2Zvcm07XG4gICAgYXN0O1xuICAgIGNvbnRhY3RfbWFwO1xuICAgIGVudjtcbiAgICBncmFwaDtcbiAgICBzdGF0ZTtcbiAgICBpbml0X2w7XG4gICAgbGFzdHlpZWxkO1xuICB9XG5cbmxldCByZWluaXRpYWxpemUgfm91dHB1dHMgcmFuZG9tX3N0YXRlIHQgPVxuICBsZXQgKCkgPSBDb3VudGVyLnJlaW5pdGlhbGl6ZSB0LmNvdW50ZXIgaW5cbiAgKCogbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHQubG9nX2Zvcm0gKCkgaW5cbiAgICAgbGV0ICgpID0gQnVmZmVyLnJlc2V0IHQubG9nX2J1ZmZlciBpbiopXG4gIHQuaXNfcnVubmluZyA8LSBmYWxzZTtcbiAgdC5ydW5fZmluYWxpemUgPC0gZmFsc2U7XG4gIHQucGF1c2VfY29uZGl0aW9uIDwtIEFsZ19leHByLkZBTFNFO1xuICB0LnBsb3QgPC0gRGF0YS5pbml0X3Bsb3QgdC5lbnY7XG4gIHQuc25hcHNob3RzIDwtIE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICB0LmRpbnMgPC0gW107XG4gIHQuZmlsZXMgPC0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIHQuZXJyb3JfbWVzc2FnZXMgPC0gW107XG4gIHQuZ3JhcGggPC1cbiAgICBSdWxlX2ludGVycHJldGVyLmVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlOmZhbHNlIHJhbmRvbV9zdGF0ZSB0LmVudlxuICAgICAgdC5jb3VudGVyO1xuICB0LnN0YXRlIDwtXG4gICAgU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllczpmYWxzZSB0LmNvdW50ZXIgdC5lbnZcblxubGV0IGNhdGNoX2Vycm9yIGhhbmRsZXIgPSBmdW5jdGlvblxuICB8IEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yICgobWVzc2FnZSwgcmFuZ2UpIDogc3RyaW5nIExvYy5hbm5vdGVkKSAtPlxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICB8IEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKChtZXNzYWdlLCByYW5nZSkgOiBzdHJpbmcgTG9jLmFubm90ZWQpIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gIHwgRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoKG1lc3NhZ2UsIHJhbmdlKSA6IHN0cmluZyBMb2MuYW5ub3RlZCkgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgKFwiUnVudGltZSBlcnJvciBcIiBeIGVycm9yKSlcbiAgfCBleG4gLT5cbiAgICBsZXQgbWVzc2FnZSA9XG4gICAgICB0cnkgUHJpbnRleGMudG9fc3RyaW5nIGV4biB3aXRoIF8gLT4gXCJ1bnNwZWNpZmllZCBleGNlcHRpb24gdGhyb3duXCJcbiAgICBpblxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIG1lc3NhZ2UpXG5cbmxldCBwYXJzZSB+cGF0dGVyblNoYXJpbmcgKGFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCkgdmFyX292ZXJ3cml0ZVxuICAgIHN5c3RlbV9wcm9jZXNzID1cbiAgbGV0IHlpZWxkID0gc3lzdGVtX3Byb2Nlc3MjeWllbGQgaW5cbiAgbGV0IGxvZ19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgbG9nX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBsb2dfYnVmZmVyIGluXG4gIGxldCBpbnB1dHNfYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgbGV0IGlucHV0c19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgaW5wdXRzX2J1ZmZlciBpblxuICBsZXQgY29uZiwgXywgXywgXyA9IENvbmZpZ3VyYXRpb24ucGFyc2UgYXN0LkFzdC5jb25maWd1cmF0aW9ucyBpblxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IERhdGEucHJpbnRfd2FybmluZyB+cG9zIGxvZ19mb3JtIG1zZyBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBMd3Qud3JhcDJcbiAgICAgICAgKGZ1biB2YXJfb3ZlcndyaXRlIC0+XG4gICAgICAgICAgTEthcHBhX2NvbXBpbGVyLmNvbXBpbF9vZl9hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICAgIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQgfnZhcl9vdmVyd3JpdGUpXG4gICAgICAgIHZhcl9vdmVyd3JpdGUgYXN0XG4gICAgICA+Pj0gZnVuIChhc3RfY29tcGlsZWRfZGF0YSA6IExLYXBwYV9jb21waWxlci5hc3RfY29tcGlsZWRfZGF0YSkgLT5cbiAgICAgIHlpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICgqIFRoZSBsYXN0IHlpZWxkIGlzIHVwZGF0ZWQgYWZ0ZXIgdGhlIGxhc3QgeWllbGQuXG4gICAgICAgICBJdCBpcyBnb3R0ZW4gaGVyZSBmb3IgdGhlIGluaXRpYWwgbGFzdCB5ZWlsZCB2YWx1ZS4gKilcbiAgICAgIGxldCBsYXN0eWllbGQgPSBTeXMudGltZSAoKSBpblxuICAgICAgdHJ5XG4gICAgICAgICgqIGV4Y2VwdGlvbiByYWlzZWQgYnkgY29tcGlsZSBtdXN0IGhhdmUgdXNlZCBMd3QuZmFpbC5cbiAgICAgICAgICAgU29tZXRoaW5nIGlzIHdyb25nIGZvciBub3cgKilcbiAgICAgICAgbGV0IG91dHB1dHMgPSBmdW5jdGlvblxuICAgICAgICAgIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQuZnByaW50ZiBsb2dfZm9ybSBcIiVzQC5cIiBzXG4gICAgICAgICAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBsb2dfZm9ybSBtc2dcbiAgICAgICAgICB8IERhdGEuU25hcHNob3QgXyB8IERhdGEuRElOIF8gfCBEYXRhLlNwZWNpZXMgX1xuICAgICAgICAgIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyB8IERhdGEuUGxvdCBfIHwgRGF0YS5UcmFjZVN0ZXAgX1xuICAgICAgICAgIHwgRGF0YS5QcmludCBfIC0+XG4gICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgRXZhbC5jb21waWxlIH5kZWJ1Z19tb2RlOmZhbHNlXG4gICAgICAgICAgfnBhdXNlOihmdW4gZiAtPiBMd3QuYmluZCAoeWllbGQgKCkpIGYpXG4gICAgICAgICAgfnJldHVybjpMd3QucmV0dXJuID9yZXNjYWxlX2luaXQ6Tm9uZSA/b3ZlcndyaXRlX3QwOk5vbmVcbiAgICAgICAgICB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIH5vdXRwdXRzIH5zaGFyaW5nOnBhdHRlcm5TaGFyaW5nXG4gICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuYWdlbnRzX3NpZyBhc3RfY29tcGlsZWRfZGF0YS50b2tlbl9uYW1lc1xuICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwIGFzdF9jb21waWxlZF9kYXRhLnJlc3VsdFxuICAgICAgICA+Pj0gZnVuIChlbnYsIHdpdGhfdHJhY2UsIGluaXRfbCkgLT5cbiAgICAgICAgbGV0IGNvdW50ZXIgPVxuICAgICAgICAgIENvdW50ZXIuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdF90OigwLiA6IGZsb2F0KVxuICAgICAgICAgICAgfmluaXRfZTooMCA6IGludClcbiAgICAgICAgICAgID9tYXhfdGltZTpOb25lID9tYXhfZXZlbnQ6Tm9uZSB+cGxvdF9wZXJpb2Q6KENvbmZpZ3VyYXRpb24uRFQgMS4pXG4gICAgICAgICAgICB+bmJfcnVsZXM6KE1vZGVsLm5iX3J1bGVzIGVudikgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoZVNlZWQgPVxuICAgICAgICAgIG1hdGNoIGNvbmYuQ29uZmlndXJhdGlvbi5zZWVkIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFJhbmRvbS5zZWxmX2luaXQgKCkgaW5cbiAgICAgICAgICAgIGxldCBvdXQgPSBSYW5kb20uYml0cyAoKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nX2Zvcm0gXCJSYW5kb20gc2VlZCB1c2VkOiAlaUAuXCIgb3V0IGluXG4gICAgICAgICAgICBvdXRcbiAgICAgICAgICB8IFNvbWUgdGhlU2VlZCAtPiB0aGVTZWVkXG4gICAgICAgIGluXG4gICAgICAgIGxldCByYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUubWFrZSBbfCB0aGVTZWVkIHxdIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRGF0YS5wcmludF9pbml0aWFsX2lucHV0cyA/dXVpZDpOb25lXG4gICAgICAgICAgICB7IGNvbmYgd2l0aCBDb25maWd1cmF0aW9uLnNlZWQgPSBTb21lIHRoZVNlZWQgfVxuICAgICAgICAgICAgZW52IGlucHV0c19mb3JtIGluaXRfbFxuICAgICAgICBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbiA9XG4gICAgICAgICAgY3JlYXRlX3QgfmNvbnRhY3RfbWFwOmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwIH5sb2dfZm9ybVxuICAgICAgICAgICAgfmxvZ19idWZmZXIgfmlucHV0c19idWZmZXIgfmlucHV0c19mb3JtIH5hc3QgfmVudiB+Y291bnRlclxuICAgICAgICAgICAgfmR1bXBJZkRlYWRsb2NrZWQ6Y29uZi5Db25maWd1cmF0aW9uLmR1bXBJZkRlYWRsb2NrZWRcbiAgICAgICAgICAgIH5tYXhDb25zZWN1dGl2ZUNsYXNoOmNvbmYuQ29uZmlndXJhdGlvbi5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICAgICAgICB+cGF0dGVyblNoYXJpbmdcbiAgICAgICAgICAgIH5ncmFwaDpcbiAgICAgICAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudlxuICAgICAgICAgICAgICAgICBjb3VudGVyKVxuICAgICAgICAgICAgfnN0YXRlOlxuICAgICAgICAgICAgICAoU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllczpmYWxzZSBjb3VudGVyIGVudilcbiAgICAgICAgICAgIH5pbml0X2wgfmxhc3R5aWVsZFxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzaW11bGF0aW9uKVxuICAgICAgd2l0aCBlIC0+XG4gICAgICAgIChjYXRjaF9lcnJvciAoZnVuIHggLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyB4IF0pKSkgZSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBvdXRwdXRzIChzaW11bGF0aW9uIDogdCkgPSBmdW5jdGlvblxuICB8IERhdGEuRElOIChmbHV4X25hbWUsIGZsdXhfbWFwKSAtPlxuICAgIHNpbXVsYXRpb24uZGlucyA8LSAoZmx1eF9uYW1lLCBmbHV4X21hcCkgOjogc2ltdWxhdGlvbi5kaW5zXG4gIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBEYXRhLlBsb3QgbmV3X29ic2VydmFibGVzIC0+XG4gICAgc2ltdWxhdGlvbi5wbG90IDwtIERhdGEuYWRkX3Bsb3RfbGluZSBuZXdfb2JzZXJ2YWJsZXMgc2ltdWxhdGlvbi5wbG90XG4gIHwgRGF0YS5TcGVjaWVzIChmaWxlLCB0aW1lLCBtaXgpIC0+XG4gICAgbGV0IHAgPSBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgW10gZmlsZSBzaW11bGF0aW9uLnNwZWNpZXMgaW5cbiAgICBzaW11bGF0aW9uLnNwZWNpZXMgPC1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBmaWxlICgodGltZSwgbWl4KSA6OiBwKSBzaW11bGF0aW9uLnNwZWNpZXNcbiAgfCBEYXRhLlByaW50IGZpbGVfbGluZSAtPlxuICAgIChtYXRjaCBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfbmFtZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBzaW11bGF0aW9uLmxvZ19mb3JtIFwiJXNALlwiIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV90ZXh0XG4gICAgfCBTb21lIG5hIC0+XG4gICAgICBsZXQgbGluZXMgPSBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgW10gbmEgc2ltdWxhdGlvbi5maWxlcyBpblxuICAgICAgc2ltdWxhdGlvbi5maWxlcyA8LVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgbmFcbiAgICAgICAgICAoZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHQgOjogbGluZXMpXG4gICAgICAgICAgc2ltdWxhdGlvbi5maWxlcylcbiAgfCBEYXRhLlNuYXBzaG90IChmaWxlbmFtZSwgc25hcHNob3QpIC0+XG4gICAgbGV0IGFscmVhZHlfdGhlcmUgeCA9IE1vZHMuU3RyaW5nTWFwLm1lbSB4IHNpbXVsYXRpb24uc25hcHNob3RzIGluXG4gICAgbGV0IHNuYXBzaG90X2ZpbGUgPVxuICAgICAgVG9vbHMuZmluZF9hdmFpbGFibGVfbmFtZSB+YWxyZWFkeV90aGVyZSBmaWxlbmFtZVxuICAgICAgICB+ZmFjdWx0YXRpdmU6KHN0cmluZ19vZl9pbnQgc25hcHNob3QuRGF0YS5zbmFwc2hvdF9ldmVudClcbiAgICAgICAgfmV4dDpOb25lXG4gICAgaW5cbiAgICBzaW11bGF0aW9uLnNuYXBzaG90cyA8LVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHNuYXBzaG90X2ZpbGUgc25hcHNob3Qgc2ltdWxhdGlvbi5zbmFwc2hvdHNcbiAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIHNpbXVsYXRpb24ubG9nX2Zvcm0gXCIlc0AuXCIgc1xuICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIHNpbXVsYXRpb24ubG9nX2Zvcm0gbXNnXG4gIHwgRGF0YS5UcmFjZVN0ZXAgc3QgLT5cbiAgICBpZiBCdWZmZXIubGVuZ3RoIHNpbXVsYXRpb24udHJhY2UgPD4gMCB0aGVuIChcbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBzaW11bGF0aW9uLnRyYWNlICcsJyBpblxuICAgICAgVHJhY2Uud3JpdGVfc3RlcCBzaW11bGF0aW9uLnRyYWNlIHN0XG4gICAgKVxuXG5sZXQgaW50ZXJhY3RpdmVfb3V0cHV0cyBmb3JtYXR0ZXIgdCA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlc0AuXCIgc1xuICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIGZvcm1hdHRlciBtc2dcbiAgfCBEYXRhLlByaW50IGZpbGVfbGluZSB3aGVuIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV9uYW1lID0gTm9uZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiVzQC5cIiBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfdGV4dFxuICB8ICggRGF0YS5ESU4gXyB8IERhdGEuRGVsdGFBY3Rpdml0aWVzIF8gfCBEYXRhLlBsb3QgXyB8IERhdGEuU3BlY2llcyBfXG4gICAgfCBEYXRhLlByaW50IF8gfCBEYXRhLlNuYXBzaG90IF8gfCBEYXRhLlRyYWNlU3RlcCBfICkgYXMgdiAtPlxuICAgIG91dHB1dHMgdCB2XG5cbmxldCB0aW1lX3lpZWxkIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOiB1bml0IEx3dC50ID1cbiAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICBpZiB0aW1lIC0uIHQubGFzdHlpZWxkID4gc3lzdGVtX3Byb2Nlc3MjbWluX3J1bl9kdXJhdGlvbiAoKSB0aGVuIChcbiAgICBsZXQgKCkgPSB0Lmxhc3R5aWVsZCA8LSB0aW1lIGluXG4gICAgc3lzdGVtX3Byb2Nlc3MjeWllbGQgKClcbiAgKSBlbHNlXG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCBmaW5hbGl6ZV9zaW11bGF0aW9uIH4odCA6IHQpIDogdW5pdCA9XG4gIFN0YXRlX2ludGVycHJldGVyLmVuZF9vZl9zaW11bGF0aW9uIH5vdXRwdXRzOihvdXRwdXRzIHQpIHQuZW52IHQuY291bnRlclxuICAgIHQuZ3JhcGggdC5zdGF0ZVxuXG5sZXQgcnVuX3NpbXVsYXRpb24gfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSBzdG9wcGVkIDpcbiAgICB1bml0IEx3dC50ID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHJzdG9wID0gcmVmIHN0b3BwZWQgaW5cbiAgICAgIGxldCAoKSA9IHQuaXNfcnVubmluZyA8LSB0cnVlIGluXG4gICAgICBsZXQgcmVjIGl0ZXIgKCkgPVxuICAgICAgICAodHJ5XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgICAgIChub3QgIXJzdG9wKVxuICAgICAgICAgICAgICAgJiYgU3lzLnRpbWUgKCkgLS4gdC5sYXN0eWllbGRcbiAgICAgICAgICAgICAgICAgIDwgc3lzdGVtX3Byb2Nlc3MjbWluX3J1bl9kdXJhdGlvbiAoKVxuICAgICAgICAgICAgIGRvXG4gICAgICAgICAgICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScgPVxuICAgICAgICAgICAgICAgICBTdGF0ZV9pbnRlcnByZXRlci5hX2xvb3AgfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICAgICAgICB+ZHVtcElmRGVhZGxvY2tlZDp0LmR1bXBJZkRlYWRsb2NrZWRcbiAgICAgICAgICAgICAgICAgICB+bWF4Q29uc2VjdXRpdmVDbGFzaDp0Lm1heENvbnNlY3V0aXZlQ2xhc2ggdC5lbnYgdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgICAgdC5ncmFwaCB0LnN0YXRlXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgcnN0b3AgOj1cbiAgICAgICAgICAgICAgICAgc3RvcFxuICAgICAgICAgICAgICAgICB8fCBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgdC5jb3VudGVyIGdyYXBoJ1xuICAgICAgICAgICAgICAgICAgICAgIHQucGF1c2VfY29uZGl0aW9uO1xuICAgICAgICAgICAgICAgdC5ncmFwaCA8LSBncmFwaCc7XG4gICAgICAgICAgICAgICB0LnN0YXRlIDwtIHN0YXRlJ1xuICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICAgICB3aXRoIGUgLT4gTHd0LmZhaWwgZSlcbiAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICBpZiAhcnN0b3AgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID0gdC5pc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICAgICkgZWxzZSBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICAgIHN5c3RlbV9wcm9jZXNzI3lpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKCkgPSB0Lmxhc3R5aWVsZCA8LSBTeXMudGltZSAoKSBpblxuICAgICAgICAgIGl0ZXIgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgaW5cbiAgICAgIGl0ZXIgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgbGV0ICgpID0gaWYgdC5ydW5fZmluYWxpemUgdGhlbiBmaW5hbGl6ZV9zaW11bGF0aW9uIH50IGluXG4gICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPlxuICAgICAgICAgbGV0ICgpID0gdC5pc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICBsZXQgKCkgPSB0LmVycm9yX21lc3NhZ2VzIDwtIFsgZSBdIGluXG4gICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuXG5sZXQgc3RhcnQgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKVxuICAgIH4ocGFyYW1ldGVyIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0IGxleGJ1ZiA9XG4gICAgTGV4aW5nLmZyb21fc3RyaW5nIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvblxuICBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICAoKmxldCAoKSA9XG4gICAgICAgICAgQ291bnRlci5zZXRfbWF4X3RpbWVcbiAgICAgICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfai5zaW11bGF0aW9uX21heF90aW1lXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF9ldmVudHNcbiAgICAgICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfai5zaW11bGF0aW9uX21heF9ldmVudHNcbiAgICAgICAgICAgICAgIGluKilcbiAgICAgIGxldCByYW5kb21fc3RhdGUgPVxuICAgICAgICBtYXRjaCBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKVxuICAgICAgICB8IFNvbWUgc2VlZCAtPiBSYW5kb20uU3RhdGUubWFrZSBbfCBzZWVkIHxdXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcmVpbml0aWFsaXplIHJhbmRvbV9zdGF0ZSB+b3V0cHV0czoob3V0cHV0cyB0KSB0IGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBhdXNlID0gS3BhcnNlcjQuc3RhbmRhbG9uZV9ib29sX2V4cHIgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgTHd0LndyYXA0XG4gICAgICAgICAgKEV2YWx1YXRvci5nZXRfcGF1c2VfY3JpdGVyaWEgfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICB+c2hhcmluZzp0LnBhdHRlcm5TaGFyaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQpXG4gICAgICAgICAgdC5jb250YWN0X21hcCB0LmVudiB0LmdyYXBoIHBhdXNlXG4gICAgICAgID4+PSBmdW4gKGVudicsIGdyYXBoJywgYicnKSAtPlxuICAgICAgICBsZXQgKCkgPSB0LmVudiA8LSBlbnYnIGluXG4gICAgICAgIGxldCAoKSA9IHQuZ3JhcGggPC0gZ3JhcGgnIGluXG4gICAgICAgIGxldCAoKSA9IHQucGF1c2VfY29uZGl0aW9uIDwtIGInJyBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIENvdW50ZXIuc2V0X3Bsb3RfcGVyaW9kIHQuY291bnRlclxuICAgICAgICAgICAgKENvbmZpZ3VyYXRpb24uRFQgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fcGxvdF9wZXJpb2QpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgKCogZXhjZXB0aW9uIHJhaXNlZCBieSBidWlsZF9pbml0aWFsX3N0YXRlIG11c3QgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgICAgICAgcmFpc2VkIHdpdGggTHd0LmZhaWwuIFNvbWV0aGluZyBpcyB3cm9uZyBmb3Igbm93Li4uICopXG4gICAgICAgICAgICAgICAgRXZhbC5idWlsZF9pbml0aWFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICB+YmluZDooZnVuIHggZiAtPlxuICAgICAgICAgICAgICAgICAgICB0aW1lX3lpZWxkIH5zeXN0ZW1fcHJvY2VzcyB+dCA+Pj0gZnVuICgpIC0+IHggPj49IGYpXG4gICAgICAgICAgICAgICAgICB+cmV0dXJuOkx3dC5yZXR1cm4gfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICAgICAgIH53aXRoX3RyYWNlOnBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3N0b3JlX3RyYWNlXG4gICAgICAgICAgICAgICAgICB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIHQuY291bnRlciB0LmVudiByYW5kb21fc3RhdGVcbiAgICAgICAgICAgICAgICAgIHQuaW5pdF9sXG4gICAgICAgICAgICAgICAgPj49IGZ1biAoc3RvcCwgZ3JhcGgsIHN0YXRlKSAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICB0LmdyYXBoIDwtIGdyYXBoO1xuICAgICAgICAgICAgICAgICAgdC5zdGF0ZSA8LSBzdGF0ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpcnN0X29icyA9XG4gICAgICAgICAgICAgICAgICBTdGF0ZV9pbnRlcnByZXRlci5vYnNlcnZhYmxlc192YWx1ZXMgdC5lbnYgZ3JhcGggdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSB0LnBsb3QgPC0gRGF0YS5hZGRfcGxvdF9saW5lIGZpcnN0X29icyB0LnBsb3QgaW5cbiAgICAgICAgICAgICAgICBydW5fc2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnQgc3RvcFxuICAgICAgICAgICAgICB3aXRoIGUgLT5cbiAgICAgICAgICAgICAgICBjYXRjaF9lcnJvclxuICAgICAgICAgICAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF0gaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgICAgICAgZSlcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+XG4gICAgICAgICBsZXQgKCkgPSB0LmVycm9yX21lc3NhZ2VzIDwtIFsgZSBdIGluXG4gICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgcGF1c2UgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgKCkgPSBpZ25vcmUgdCBpblxuICBsZXQgKCkgPVxuICAgIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICB0LmlzX3J1bm5pbmcgPC0gZmFsc2VcbiAgICBlbHNlXG4gICAgICAoKVxuICBpblxuICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxubGV0IHN0b3AgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgKCkgPSBpZ25vcmUgdCBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSB0LnJ1bl9maW5hbGl6ZSA8LSB0cnVlIGluXG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBwYXVzZSB+c3lzdGVtX3Byb2Nlc3MgfnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBmaW5hbGl6ZV9zaW11bGF0aW9uIH50IGluXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwZXJ0dXJiYXRpb24gfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KVxuICAgIH4ocGVydHVyYmF0aW9uIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pIDpcbiAgICAoc3RyaW5nLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgKCkgPSBpZ25vcmUgc3lzdGVtX3Byb2Nlc3MgaW5cbiAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBwZXJ0dXJiYXRpb24gaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIG1zZ19wcm9jZXNzX25vdF9wYXVzZWQpXG4gICAgICBlbHNlIChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGUgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2VmZmVjdF9saXN0IEtsZXhlcjQudG9rZW4gbGV4YnVmIGluXG4gICAgICAgICAgbGV0IGxvZ19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICAgICAgICAgIGxldCBsb2dfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGxvZ19idWZmZXIgaW5cbiAgICAgICAgICBMd3Qud3JhcDZcbiAgICAgICAgICAgIChFdmFsdWF0b3IuZG9faW50ZXJhY3RpdmVfZGlyZWN0aXZlcyB+ZGVidWdfbW9kZTpmYWxzZVxuICAgICAgICAgICAgICAgfm91dHB1dHM6KGludGVyYWN0aXZlX291dHB1dHMgbG9nX2Zvcm0gdClcbiAgICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICAgIHQuY29udGFjdF9tYXAgdC5lbnYgdC5jb3VudGVyIHQuZ3JhcGggdC5zdGF0ZSBlXG4gICAgICAgICAgPj49IGZ1biAoZScsIChlbnYnLCAoXywgZ3JhcGgnJywgc3RhdGUnKSkpIC0+XG4gICAgICAgICAgbGV0ICgpID0gdC5lbnYgPC0gZW52JyBpblxuICAgICAgICAgIGxldCAoKSA9IHQuZ3JhcGggPC0gZ3JhcGgnJyBpblxuICAgICAgICAgIGxldCAoKSA9IHQuc3RhdGUgPC0gc3RhdGUnIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQubG9nX2Zvcm0gXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiXG4gICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgdC5jb3VudGVyKVxuICAgICAgICAgICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgICAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnY6dC5lbnYpKVxuICAgICAgICAgICAgICBlJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQuaW5wdXRzX2Zvcm0gXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiXG4gICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgdC5jb3VudGVyKVxuICAgICAgICAgICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgICAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnY6dC5lbnYpKVxuICAgICAgICAgICAgICBlJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEJ1ZmZlci5jb250ZW50cyBsb2dfYnVmZmVyKSlcbiAgICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBjb250aW51ZSB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpXG4gICAgfihwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBwYXVzZV9jb25kaXRpb24gaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICBlbHNlIChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IHBhdXNlID0gS3BhcnNlcjQuc3RhbmRhbG9uZV9ib29sX2V4cHIgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgICBMd3Qud3JhcDRcbiAgICAgICAgICAgIChFdmFsdWF0b3IuZ2V0X3BhdXNlX2NyaXRlcmlhIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgICB+c2hhcmluZzp0LnBhdHRlcm5TaGFyaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQpXG4gICAgICAgICAgICB0LmNvbnRhY3RfbWFwIHQuZW52IHQuZ3JhcGggcGF1c2VcbiAgICAgICAgICA+Pj0gZnVuIChlbnYnLCBncmFwaCcsIGInJykgLT5cbiAgICAgICAgICBsZXQgKCkgPSB0LmVudiA8LSBlbnYnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5ncmFwaCA8LSBncmFwaCcgaW5cbiAgICAgICAgICBsZXQgKCkgPSB0LnBhdXNlX2NvbmRpdGlvbiA8LSBiJycgaW5cbiAgICAgICAgICAoKmxldCAoKSA9XG4gICAgICAgICAgICBDb3VudGVyLnNldF9tYXhfdGltZVxuICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9tYXhfdGltZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDb3VudGVyLnNldF9tYXhfZXZlbnRzXG4gICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX21heF9ldmVudHNcbiAgICAgICAgICAgIGluKilcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTHd0LmFzeW5jIChmdW4gKCkgLT4gcnVuX3NpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzIH50IGZhbHNlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgICAgICkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgcHJvZ3Jlc3MgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3MsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudFxuICAgIEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIG1hdGNoIHQuZXJyb3JfbWVzc2FnZXMgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LmNhdGNoXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgPVxuICAgICAgICAgICAgICAgICBDb3VudGVyLmN1cnJlbnRfdGltZSB0LmNvdW50ZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9XG4gICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgIChmdW4geCAtPiBpbnRfb2ZfZmxvYXQgKHggKi4gMTAwLikpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIudGltZV9yYXRpbyB0LmNvdW50ZXIpO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9XG4gICAgICAgICAgICAgICAgIENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgPVxuICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAoZnVuIHggLT4gaW50X29mX2Zsb2F0ICh4ICouIDEwMC4pKVxuICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmV2ZW50X3JhdGlvIHQuY291bnRlcik7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID1cbiAgICAgICAgICAgICAgICAgQ291bnRlci50cmFja2VkX2V2ZW50cyB0LmNvdW50ZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSB0LmlzX3J1bm5pbmc7XG4gICAgICAgICAgICAgfSkpXG4gICAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG4gIHwgXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciB0LmVycm9yX21lc3NhZ2VzKVxuXG5sZXQgb3V0cHV0cyB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAoQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnRcbiAgICBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgKCkgPSBpZ25vcmUgdCBpblxuICBtYXRjaCB0LmVycm9yX21lc3NhZ2VzIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IFNvbWUgdC5wbG90O1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IHQuZGlucztcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSB0LmZpbGVzO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gdC5zbmFwc2hvdHM7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPVxuICAgICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgdC5pbnB1dHNfYnVmZmVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID1cbiAgICAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIHQubG9nX2J1ZmZlcjtcbiAgICAgICAgICAgICB9KSlcbiAgICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcbiAgfCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIHQuZXJyb3JfbWVzc2FnZXMpXG5cbmxldCBlZmZpY2llbmN5IHQgPSBDb3VudGVyLmdldF9lZmZpY2llbmN5IHQuY291bnRlclxuXG5sZXQgZ2V0X3Jhd190cmFjZSAodCA6IHQpIDogc3RyaW5nID1cbiAgSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlXG4gICAgKGZ1biBvYiB0IC0+XG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpY3RcIlxuICAgICAgICAgIChmdW4gb2IgKCkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIEFnZW50Lmpzb25fZGljdGlvbm5hcnkgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBJbnN0YW50aWF0aW9uLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBUcmFjZS5TaW11bGF0aW9uX2luZm8uanNvbl9kaWN0aW9ubmFyeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBUcmFjZS5qc29uX2RpY3Rpb25uYXJ5IGluXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nKVxuICAgICAgICAgIG9iICgpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibW9kZWxcIiBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBvYlxuICAgICAgICAgIChNb2RlbC50b195b2pzb24gdC5lbnYpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwidHJhY2VcIiBCdWZmZXIuYWRkX3N0cmluZyBvYlxuICAgICAgICAgIChcIltcIiBeIEJ1ZmZlci5jb250ZW50cyB0LnRyYWNlKVxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXX1cIilcbiAgICB0XG5cbmxldCBnZXRfcmF3X2FzdCB0ID0gWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIHQuYXN0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogYWRkZCBzZWVkIHRvIHBhcmFtZXRlciAqKVxubGV0IHBhdGNoX3BhcmFtZXRlciAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogaW50ID1cbiAgbWF0Y2ggc2ltdWxhdGlvbl9wYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0ICgpID0gUmFuZG9tLnNlbGZfaW5pdCAoKSBpblxuICAgIGxldCBzZWVkID0gUmFuZG9tLmJpdHMgKCkgaW5cbiAgICB7IHNpbXVsYXRpb25fcGFyYW1ldGVyIHdpdGggQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkID0gU29tZSBzZWVkIH0sIHNlZWRcbiAgfCBTb21lIHNlZWQgLT4gc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIHNlZWRcblxubGV0IGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIGhhbmRsZXIgPVxuICBtYXRjaCBzaW11bGF0aW9uIHdpdGhcbiAgfCBTb21lIChfLCBzaW11bGF0aW9uKSAtPiBoYW5kbGVyIHNpbXVsYXRpb25cbiAgfCBOb25lIC0+XG4gICAgbGV0IG0gPSBcIk5vIHNpbXVsYXRpb24gYXZhaWxhYmxlXCIgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbSlcblxubGV0IGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uXG4gICAgfihzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcylcbiAgICB+KHByb2plY3Rpb24gOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQgLT4gJ2EgQXBpLnJlc3VsdCkgOlxuICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgIEthcHBhX2ZhY2FkZS5vdXRwdXRzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazpcbiAgICAgICAgICAgICAgKGZ1biAoc2ltdWxhdGlvbl9kZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKHByb2plY3Rpb24gc2ltdWxhdGlvbl9kZXRhaWwpXG4gICAgICAgICAgICAgICAgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudClcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX2ZpbGVfbGluZSAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fZmlsZV9saW5lIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmlsZV9saW5lcyA6IHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQgPVxuICAgICAgICBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX2xpbmVfY2F0YWxvZyA6IHN0cmluZyBsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgZnN0IChNb2RzLlN0cmluZ01hcC5iaW5kaW5ncyBmaWxlX2xpbmVzKVxuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIGZpbGVfbGluZV9jYXRhbG9nXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBnZXRfZmlsZV9saW5lIH5maWxlX2xpbmVfaWRcbiAgICAgICAgKHN0YXR1cyA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmaWxlX2xpbmVfbGlzdCA9IHN0YXR1cy5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIGluXG4gICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBmaWxlX2xpbmVfaWQgZmlsZV9saW5lX2xpc3Qgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCJpZCAlcyBub3QgZm91bmRcIiBmaWxlX2xpbmVfaWQgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cbiAgICAgIHwgU29tZSBsaW5lcyAtPiBSZXN1bHRfdXRpbC5vayAoTGlzdC5yZXYgbGluZXMpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICA6IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19maWxlX2xpbmVcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgKGZpbGVfbGluZV9pZCA6IHN0cmluZylcbiAgICAgICAgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfZmlsZV9saW5lIH5maWxlX2xpbmVfaWQpXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfZmx1eF9tYXAgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBpbmZvX2ZsdXhfbWFwIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluX2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmx1eF9tYXBfY2F0YWxvZyA9XG4gICAgICAgIExpc3QubWFwIGZzdCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGluc1xuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIGZsdXhfbWFwX2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9mbHV4X21hcCAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IGZsdXhfbWFwc19saXN0ID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgaW5cbiAgICAgIHRyeSBSZXN1bHRfdXRpbC5vayAoTGlzdC5hc3NvYyBmbHV4X21hcF9pZCBmbHV4X21hcHNfbGlzdClcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCJpZCAlcyBub3QgZm91bmRcIiBmbHV4X21hcF9pZCBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gOiBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjpzZWxmI2luZm9fZmx1eF9tYXBcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9kaW4gKGZsdXhfbWFwX2lkIDogQXBpX3R5cGVzX3QuZGluX2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LmRpbiBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfZmx1eF9tYXAgZmx1eF9tYXBfaWQpXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfbG9nX21lc3NhZ2UgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuICA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBsb2dfbWVzc2FnZSAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LmxvZ19tZXNzYWdlIEFwaS5yZXN1bHQgPVxuICAgICAgUmVzdWx0X3V0aWwub2sgZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgICAgIDogQXBpX3R5cGVzX3QubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnByb2plY3Rpb246c2VsZiNsb2dfbWVzc2FnZVxuICBlbmRcblxubGV0IHNlbGVjdF9vYnNlcnZhYmxlcyAocGxvdF9saW1pdCA6IEFwaV90eXBlc190LnBsb3RfbGltaXQpXG4gICAgKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSA6IEFwaV90eXBlc190LnBsb3QgPVxuICBsZXQgcGxvdF90aW1lX3NlcmllcyA9IFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IHBsb3QuRGF0YS5wbG90X3NlcmllcyBpblxuICBsZXQgcGxvdF9kZXRhaWxfc2l6ZSA9IEFycmF5Lmxlbmd0aCBwbG90X3RpbWVfc2VyaWVzIGluXG4gIGxldCBwbG90X2xpbWl0X29mZnNldCA9IHBsb3RfbGltaXQuQXBpX3R5cGVzX3QucGxvdF9saW1pdF9vZmZzZXQgaW5cbiAgbGV0IHBsb3RfbGltaXRfcG9pbnRzID0gcGxvdF9saW1pdC5BcGlfdHlwZXNfdC5wbG90X2xpbWl0X3BvaW50cyBpblxuICBsZXQgc3RhcnQsIGxlbiA9XG4gICAgbWF0Y2ggcGxvdF9saW1pdF9vZmZzZXQsIHBsb3RfbGltaXRfcG9pbnRzIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMCwgcGxvdF9kZXRhaWxfc2l6ZVxuICAgIHwgU29tZSBvZmZzZXQsIE5vbmUgLT4gb2Zmc2V0LCBtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG9mZnNldClcbiAgICB8IE5vbmUsIFNvbWUgbmIgLT4gbWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBuYiksIG1pbiBuYiBwbG90X2RldGFpbF9zaXplXG4gICAgfCBTb21lIG9mZnNldCwgU29tZSBuYiAtPiBvZmZzZXQsIG1pbiBuYiAobWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBvZmZzZXQpKVxuICBpblxuICBsZXQgbmV3X3Bsb3RfdGltZV9zZXJpZXMgPVxuICAgIExpc3QucmV2IChBcnJheS50b19saXN0IChBcnJheS5zdWIgcGxvdF90aW1lX3NlcmllcyBzdGFydCBsZW4pKVxuICBpblxuICB7IHBsb3Qgd2l0aCBEYXRhLnBsb3Rfc2VyaWVzID0gbmV3X3Bsb3RfdGltZV9zZXJpZXMgfVxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfcGxvdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9wbG90IChwbG90X2xpbWl0IDogQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QucGxvdCBBcGkucmVzdWx0ID1cbiAgICAgIG1hdGNoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgIHwgU29tZSBwbG90IC0+IFJlc3VsdF91dGlsLm9rIChzZWxlY3Rfb2JzZXJ2YWJsZXMgcGxvdF9saW1pdCBwbG90KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gXCJwbG90IG5vdCBhdmFpbGFibGVcIiBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogQXBpX3R5cGVzX3QucGxvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfcGxvdCBwbG90X3BhcmFtZXRlcilcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9zbmFwc2hvdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fc25hcHNob3QgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nIEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IHNuYXBzaG90cyA9IGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgaW5cbiAgICAgIGxldCBzbmFwc2hvdF9jYXRhbG9nID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuZm9sZCAoZnVuIHggXyBhY2MgLT4geCA6OiBhY2MpIHNuYXBzaG90cyBbXVxuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIHNuYXBzaG90X2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZClcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBzbmFwc2hvdF9saXN0ID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyBpblxuICAgICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gc25hcHNob3RfaWQgc25hcHNob3RfbGlzdCB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiBSZXN1bHRfdXRpbC5vayB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIHNuYXBzaG90X2lkIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIChkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19zbmFwc2hvdFxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudClcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIChkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9zbmFwc2hvdCBzbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50KVxuICBlbmRcblxuY2xhc3MgbWFuYWdlcl9zaW11bGF0aW9uIHByb2plY3QgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA6XG4gIEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24gPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgc2ltdWxhdGlvbiA9IE5vbmVcblxuICAgIG1ldGhvZCBzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIHRleHQgb3ZlcndyaXRlcyA9XG4gICAgICBsZXQgYXN0ID0gdGV4dCBpblxuICAgICAgbGV0IGhhcmFraXJpLCBfID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgcHJvamVjdCNzZXRfc3RhdGVcbiAgICAgICAgICAoTHd0LnBpY2tcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICBLYXBwYV9mYWNhZGUucGFyc2UgfnBhdHRlcm5TaGFyaW5nIGFzdCBvdmVyd3JpdGVzIHN5c3RlbV9wcm9jZXNzO1xuICAgICAgICAgICAgICAgKCBoYXJha2lyaSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBBcGlfY29tbW9uLmVycm9yX21zZyBcIlBhcnNlIGNhbmNlbGxlZCBieSBtb2RpZmllZCBmaWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgIF0pICk7XG4gICAgICAgICAgICAgXSlcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3NpbXVsYXRpb25fc3RvcCA+Pj0gZnVuIF8gLT5cbiAgICAgIGxldCAoKSA9IHNpbXVsYXRpb24gPC0gTm9uZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydFxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyLCBzaW11bGF0aW9uX3NlZWQgPVxuICAgICAgICBwYXRjaF9wYXJhbWV0ZXIgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaW11bGF0aW9uIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQ29uZmxpY3RcbiAgICAgICAgICAgICBcIkEgc2ltdWxhdGlvbiBhbHJlYWR5IGV4aXN0c1wiKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHByb2plY3QjZ2V0X3N0YXRlICgpID4+PSAoIGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgICAgIFwiQ2Fubm90IHN0YXJ0IHNpbXVsYXRpb246IFBhcnNlIG5vdCBkb25lXCIpXG4gICAgICAgIHwgU29tZSBwYXJzZSAtPlxuICAgICAgICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIChmYWNhZGUgOiBLYXBwYV9mYWNhZGUudCkgLT5cbiAgICAgICAgICAgICAgS2FwcGFfZmFjYWRlLnN0YXJ0IH5zeXN0ZW1fcHJvY2VzcyB+cGFyYW1ldGVyOnNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgfnQ6ZmFjYWRlXG4gICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb24gPC0gU29tZSAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIGZhY2FkZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpXG4gICAgICAgICAgICBwYXJzZSApXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICAgICAgfCBTb21lIChwYXJhbWV0ZXIsIF8pIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHBhcmFtZXRlcilcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA9IFwiTm8gc2ltdWxhdGlvbiBhdmFpbGFibGVcIiBpblxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChLYXBwYV9mYWNhZGUuZ2V0X3Jhd190cmFjZSB0KSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9vdXRwdXRzX3ppcCA9XG4gICAgICBsZXQgYWRkX3NuYXBzaG90IGZpbGUgZmlsZW5hbWUgbmFtZSBzbmFwc2hvdCA9XG4gICAgICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIFwiLmRvdFwiIHRoZW5cbiAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIlxuICAgICAgICAgICAgICAgKERhdGEucHJpbnRfZG90X3NuYXBzaG90ID91dWlkOk5vbmUpXG4gICAgICAgICAgICAgICBzbmFwc2hvdClcbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gbmFtZSlcbiAgICAgICAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAoRGF0YS5zdHJpbmdfb2Zfc25hcHNob3QgP2xlbjpOb25lIHNuYXBzaG90KVxuICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmFtZScgPSBUb29scy5jaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBcIi5rYVwiIGluXG4gICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgKERhdGEucHJpbnRfc25hcHNob3QgP3V1aWQ6Tm9uZSkgc25hcHNob3QpXG4gICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUnKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGFkZF9kaW4gZmlsZSBmaWxlbmFtZSAoZGluX25hbWUsIGZsdXgpID1cbiAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAoaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmh0bWxcIiB0aGVuXG4gICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIERhdGEucHJpbnRfaHRtbF9kaW4gZmx1eFxuICAgICAgICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgICAgICAgIERhdGEuc3RyaW5nX29mX2RpbiBmbHV4XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgKERhdGEucHJpbnRfZG90X2RpbiA/dXVpZDpOb25lKSBmbHV4KVxuICAgICAgICAgIGZpbGVcbiAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIGRpbl9uYW1lKVxuICAgICAgaW5cbiAgICAgIGxldCBwcm9qZWN0aW9uIHQgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBcInNpbXVsYXRpb25fb3V0cHV0c1wiIGluXG4gICAgICAgICAgbGV0IGZpbGUgPSBGYWtlemlwLm9wZW5fb3V0IChmaWxlbmFtZSBeIFwiLnppcFwiKSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeSB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyBmaWxlXG4gICAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL2lucHV0cy5rYVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5IHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIGZpbGVcbiAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvbG9nLnR4dFwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIG1hdGNoIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBwbG90IC0+XG4gICAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAgICAgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjpmYWxzZSBwbG90KVxuICAgICAgICAgICAgICAgIGZpbGUgKGZpbGVuYW1lIF4gXCIvZGF0YS5jc3ZcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gbmFtZSBjb250ZW50IC0+XG4gICAgICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiXFxuXCIgKExpc3QucmV2IGNvbnRlbnQpKVxuICAgICAgICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKSlcbiAgICAgICAgICAgICAgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTGlzdC5pdGVyIChhZGRfZGluIGZpbGUgZmlsZW5hbWUpXG4gICAgICAgICAgICAgIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGluc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgKGFkZF9zbmFwc2hvdCBmaWxlIGZpbGVuYW1lKVxuICAgICAgICAgICAgICB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IEZha2V6aXAuY2xvc2Vfb3V0IGZpbGUgaW5cbiAgICAgICAgICBSZXN1bHRfdXRpbC5vayBvdXRcbiAgICAgICAgd2l0aCBGYWtlemlwLkVycm9yIChfLCBmLCBlKSAtPlxuICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyAoXCJaaXAgZXJyb3IgaW4gXCIgXiBmIF4gXCI6IFwiIF4gZSlcbiAgICAgIGluXG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnByb2plY3Rpb25cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5wYXVzZSB+c3lzdGVtX3Byb2Nlc3MgfnQgPj49IGZ1biBfIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgc2ltdWxhdGlvbl9zdG9wIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5zdG9wIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKHNpbXVsYXRpb25fcGVydHVyYmF0aW9uIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pXG4gICAgICAgIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBlcnR1cmJhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnRcbiAgICAgICAgICAgIH5wZXJ0dXJiYXRpb246c2ltdWxhdGlvbl9wZXJ0dXJiYXRpb25cbiAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgIH5vazooZnVuIHMgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcykpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NvbnRpbnVlIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5jb250aW51ZSB+c3lzdGVtX3Byb2Nlc3MgfnQgfnBhdXNlX2NvbmRpdGlvblxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnByb2dyZXNzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcHJvZ3Jlc3MgLT5cbiAgICAgICAgICAgICAgICAgIEthcHBhX2ZhY2FkZS5vdXRwdXRzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIG91dHB1dHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcGlfZGF0YS5hcGlfc2ltdWxhdGlvbl9zdGF0dXMgcHJvZ3Jlc3Mgb3V0cHV0cykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9lZmZpY2llbmN5ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChLYXBwYV9mYWNhZGUuZWZmaWNpZW5jeSB0KSkpXG5cbiAgICBpbmhlcml0IG1hbmFnZXJfZmlsZV9saW5lIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2ZsdXhfbWFwIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2xvZ19tZXNzYWdlIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX3Bsb3Qgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfc25hcHNob3Qgc3lzdGVtX3Byb2Nlc3NcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgaW5pdF9jb21wcmVzc2lvbl9tb2RlID0gZnVuY3Rpb25cbiAgfCBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IHRydWU7IEFwaS53ZWFrID0gZmFsc2U7IEFwaS5zdHJvbmcgPSBmYWxzZSB9XG4gIHwgU3RvcnlfanNvbi5XZWFrIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gZmFsc2U7IEFwaS53ZWFrID0gdHJ1ZTsgQXBpLnN0cm9uZyA9IGZhbHNlIH1cbiAgfCBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IGZhbHNlOyBBcGkud2VhayA9IGZhbHNlOyBBcGkuc3Ryb25nID0gdHJ1ZSB9XG5cbmxldCBhZGRfY29tcHJlc3Npb25fbW9kZSB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uQ2F1c2FsIC0+IHsgQXBpLmNhdXNhbCA9IHRydWU7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH1cbiAgfCBTdG9yeV9qc29uLldlYWsgLT4geyBBcGkuY2F1c2FsOyBBcGkud2VhayA9IHRydWU7IEFwaS5zdHJvbmcgfVxuICB8IFN0b3J5X2pzb24uU3Ryb25nIC0+IHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgPSB0cnVlIH1cblxubGV0IHByaW50X2NvbXByZXNzaW9uX21vZGVzIGYgeyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID1cbiAgbGV0ICgpID0gaWYgY2F1c2FsIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiQ0FVU0FMXCIgaW5cbiAgbGV0ICgpID1cbiAgICBpZiB3ZWFrIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICAoaWYgY2F1c2FsIHRoZW5cbiAgICAgICAgICAgXCIsIFdFQUtcIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIldFQUtcIilcbiAgaW5cbiAgaWYgc3Ryb25nIHRoZW5cbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgIChpZiBjYXVzYWwgfHwgd2VhayB0aGVuXG4gICAgICAgICBcIiwgU1RST05HXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIlNUUk9OR1wiKVxuXG50eXBlIHN0YXRlX3QgPSB7XG4gIHJ1bm5pbmc6IGJvb2w7XG4gIHByb2dyZXNzOiBTdG9yeV9qc29uLnByb2dyZXNzX2JhciBvcHRpb247XG4gIGxvZzogc3RyaW5nIGxpc3Q7XG4gIHN0b3JpZXM6XG4gICAgKEFwaS5jb21wcmVzc2lvbl9tb2Rlc1xuICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0IGxpc3RcbiAgICAqIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoKVxuICAgIE1vZHMuSW50TWFwLnQ7XG59XG5cbnR5cGUgc3RhdGUgPSBzdGF0ZV90IHJlZlxuXG4oKmxldCBzdGF0ZV9lcSBhIGIgPVxuICBhLnJ1bm5pbmcgPSBiLnJ1bm5pbmcgJiZcbiAgT3B0aW9uX3V0aWwuZXF1YWwgKD0pIGEucHJvZ3Jlc3MgYi5wcm9ncmVzcyAmJlxuICAodHJ5IExpc3QuZm9yX2FsbDIgKGZ1biB4IHkgLT4gU3RyaW5nLmNvbXBhcmUgeCB5ID0gMCkgYS5sb2cgYi5sb2dcbiAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlKVxuICAmJiBNb2RzLkludE1hcC5lcXVhbCAoPSkgYS5zdG9yaWVzIGIuc3RvcmllcyopXG5cbmxldCBpbml0aWFsX3N0YXRlID1cbiAgeyBydW5uaW5nID0gZmFsc2U7IHByb2dyZXNzID0gTm9uZTsgbG9nID0gW107IHN0b3JpZXMgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5cbmxldCBjb250cm9sbGVyIHMgPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uUHJvZ3Jlc3MgcCAtPlxuICAgIHsgcnVubmluZyA9IHMucnVubmluZzsgcHJvZ3Jlc3MgPSBTb21lIHA7IGxvZyA9IHMubG9nOyBzdG9yaWVzID0gcy5zdG9yaWVzIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN0YXJ0LCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSB0cnVlO1xuICAgICAgcHJvZ3Jlc3MgPSBOb25lO1xuICAgICAgbG9nID0gWyBtIF07XG4gICAgICBzdG9yaWVzID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uRmFpbGx1cmUsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgIGxvZyA9IG0gOjogcy5sb2c7XG4gICAgICBzdG9yaWVzID0gcy5zdG9yaWVzO1xuICAgIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN1Y2Nlc3MsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uU3RvcnkgYyAtPlxuICAgIChtYXRjaCBjLlN0b3J5X2pzb24uc3Rvcnkgd2l0aFxuICAgIHwgU3RvcnlfanNvbi5OZXcgZSAtPlxuICAgICAge1xuICAgICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICAgIGxvZyA9IHMubG9nO1xuICAgICAgICBzdG9yaWVzID1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgZS5TdG9yeV9qc29uLmlkXG4gICAgICAgICAgICAoIGluaXRfY29tcHJlc3Npb25fbW9kZSBjLlN0b3J5X2pzb24uc3RvcnlfbW9kZSxcbiAgICAgICAgICAgICAgWyBjLlN0b3J5X2pzb24ubG9nX2luZm8gXSxcbiAgICAgICAgICAgICAgZS5TdG9yeV9qc29uLmdyYXBoIClcbiAgICAgICAgICAgIHMuc3RvcmllcztcbiAgICAgIH1cbiAgICB8IFN0b3J5X2pzb24uU2FtZV9hcyBpIC0+XG4gICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBzLnN0b3JpZXMgd2l0aFxuICAgICAgfCBTb21lIChjbSwgaW5mb3MsIGdyYXBoKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICAgICAgbG9nID0gcy5sb2c7XG4gICAgICAgICAgc3RvcmllcyA9XG4gICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAoIGFkZF9jb21wcmVzc2lvbl9tb2RlIGNtIGMuU3RvcnlfanNvbi5zdG9yeV9tb2RlLFxuICAgICAgICAgICAgICAgIGMuU3RvcnlfanNvbi5sb2dfaW5mbyA6OiBpbmZvcyxcbiAgICAgICAgICAgICAgICBncmFwaCApXG4gICAgICAgICAgICAgIHMuc3RvcmllcztcbiAgICAgICAgfVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCByZWNlaXZlIHVwZGF0ZV9zdGF0ZSB4ID1cbiAgdXBkYXRlX3N0YXRlIChTdG9yeV9qc29uLm1lc3NhZ2Vfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG5sZXQgaW5pdF9zdGF0ZSAoKSA9XG4gIGxldCBjdXJyZW50X3N0YXRlID0gcmVmIGluaXRpYWxfc3RhdGUgaW5cbiAgY3VycmVudF9zdGF0ZSwgZnVuIHggLT4gY3VycmVudF9zdGF0ZSA6PSBjb250cm9sbGVyICFjdXJyZW50X3N0YXRlIHhcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5wb3N0IGN1cnJlbnRfc3RhdGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBgU3RyaW5nIFwiQ09ORklHXCI7XG4gICAgICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgIFwibm9uZVwiLCBgQm9vbCBjYXVzYWw7XG4gICAgICAgICAgICAgICAgICAgICAgIFwid2Vha1wiLCBgQm9vbCB3ZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICBcInN0cm9uZ1wiLCBgQm9vbCBzdHJvbmc7XG4gICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LnJldHVybl9vayAoKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgYWdlbnQgaXMgZGVhZFwiXG5cbiAgICBtZXRob2QgcmF3X2xhdW5jaF9zdG9yeV9jb21wdXRhdGlvbiB0cmFjZV90ZXh0ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gY3VycmVudF9zdGF0ZSA6PSB7IGluaXRpYWxfc3RhdGUgd2l0aCBydW5uaW5nID0gdHJ1ZSB9IGluXG4gICAgICAgIGxldCAoKSA9IHBvc3QgKFwiW1xcXCJSVU5cXFwiLCBcIiBeIHRyYWNlX3RleHQgXiBcIl1cIikgaW5cbiAgICAgICAgTHd0LnJldHVybl9vayAoKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgYWdlbnQgaXMgZGVhZFwiXG5cbiAgICBtZXRob2Qgc3RvcnlfbG9nID0gIWN1cnJlbnRfc3RhdGUubG9nXG4gICAgbWV0aG9kIHN0b3J5X2lzX2NvbXB1dGluZyA9ICFjdXJyZW50X3N0YXRlLnJ1bm5pbmdcbiAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgPSAhY3VycmVudF9zdGF0ZS5wcm9ncmVzc1xuICAgIG1ldGhvZCBzdG9yeV9saXN0ID0gIWN1cnJlbnRfc3RhdGUuc3Rvcmllc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgbWFpbGJveCA9XG4gICggaW50LFxuICAgIChZb2pzb24uQmFzaWMudCwgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm1ldGhvZF9oYW5kbGVyKSBSZXN1bHQucmVzdWx0XG4gICAgTHd0LnUgKVxuICBIYXNodGJsLnRcblxubGV0IHJlcGx5X29mX3N0cmluZyB4ID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHggd2l0aFxuICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJjb2RlXCIsIGBTdHJpbmcgXCJFUlJPUlwiKTsgKFwiZGF0YVwiLCBlcnIpIF0gLT5cbiAgICBTb21lIGlkLCBSZXN1bHQuRXJyb3IgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5vZl9qc29uIGVycilcbiAgfCBgQXNzb2MgWyAoXCJpZFwiLCBgSW50IGlkKTsgKFwiY29kZVwiLCBgU3RyaW5nIFwiU1VDQ0VTU1wiKTsgKFwiZGF0YVwiLCBkYXRhKSBdIC0+XG4gICAgU29tZSBpZCwgUmVzdWx0Lk9rIGRhdGFcbiAgfCB4IC0+XG4gICAgKCBOb25lLFxuICAgICAgUmVzdWx0LkVycm9yXG4gICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yXG4gICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiXG4gICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgIChcIkludmFsaWQgcmVzcG9uc2UgZnJvbSBLYVNhOiBcIiBeIFlvanNvbi5CYXNpYy50b19zdHJpbmcgeClcbiAgICAgICAgICAgICAgRXhpdClcbiAgICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXIpIClcblxubGV0IHJlY2VpdmUgbWFpbGJveCB4ID1cbiAgbWF0Y2ggcmVwbHlfb2Zfc3RyaW5nIHggd2l0aFxuICB8IFNvbWUgaWQsIG91dCAtPlxuICAgIGxldCB0aHJlYWQgPSBIYXNodGJsLmZpbmQgbWFpbGJveCBpZCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQgaW5cbiAgICBMd3Qud2FrZXVwIHRocmVhZCBvdXRcbiAgfCBOb25lLCBfIC0+ICgpXG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcbmxldCBpc19jb21wdXRpbmcgbWFpbGJveCA9IEhhc2h0YmwubGVuZ3RoIG1haWxib3ggPD4gMFxuXG5jbGFzcyBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IChtYWlsYm94IDogbWFpbGJveCkgOlxuICBBcGkubWFuYWdlcl9zdGF0aWNfYW5hbHlzaXMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByYXdfbWVzc2FnZSBwb3N0IHJlcXVlc3QgPVxuICAgICAgaWYgaXNfcnVubmluZyAoKSB0aGVuIChcbiAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgbGV0IG91dGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJ7aWQ6XCIgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIChzdHJpbmdfb2ZfaW50IGlkKSBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCIsZGF0YTpcIiBpblxuICAgICAgICBsZXQgKCkgPSByZXF1ZXN0IG91dGJ1ZiBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJ9XCIgaW5cbiAgICAgICAgbGV0ICgpID0gcG9zdCAoQnVmZmVyLmNvbnRlbnRzIG91dGJ1ZikgaW5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgZmVlZGVyIGluXG4gICAgICAgIGxldCAoKSA9IGlkIDwtIGlkICsgMSBpblxuICAgICAgICByZXN1bHRcbiAgICAgICkgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX2Vycm9yXG4gICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiIH5tZXNzYWdlOlwiS2FTYSBhZ2VudCBpcyBkZWFkXCIgRXhpdClcbiAgICAgICAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlcilcblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgcmVxdWVzdCA9XG4gICAgICBzZWxmI3Jhd19tZXNzYWdlIHBvc3QgKGZ1biBvdXRiIC0+IFlvanNvbi5CYXNpYy50b19idWZmZXIgb3V0YiByZXF1ZXN0KVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgbGV0IHJlcXVlc3Qgb3V0YnVmID1cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiWyBcXFwiSU5JVFxcXCIsIFwiIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBjb21waWwgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiXVwiXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNyYXdfbWVzc2FnZSBwb3N0IHJlcXVlc3QpIChmdW5jdGlvblxuICAgICAgICB8IGBOdWxsIC0+IFJlc3VsdC5PayAoKVxuICAgICAgICB8IHggLT5cbiAgICAgICAgICBSZXN1bHQuRXJyb3JcbiAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCJcbiAgICAgICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAoXCJOb3QgYSBLYVNhIElOSVQgcmVzcG9uc2U6IFwiIF4gWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KVxuICAgICAgICAgICAgICAgICAgRXhpdClcbiAgICAgICAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9lcnJvcl9oYW5kbGVyKSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJDT05UQUNUX01BUFwiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT4gUmVzdWx0Lk9rIHgpXG5cbiAgICBtZXRob2QgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfTk9ERVNfTE9DQVRJT05cIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiB4KSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUFwiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIklORkxVRU5DRV9NQVBcIlxuICAgICAgICAgIDo6IChmdW4gYWNjdXJhY3kgbCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGxcbiAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSA6OiBsKVxuICAgICAgICAgICAgICAgYWNjdXJhY3lcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBmd2Q7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgYndkO1xuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQgdG90YWw7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgb3JpZ2luO1xuICAgICAgICAgICAgICAgXSlcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPSBQdWJsaWNfZGF0YS5sb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24geCBpblxuICAgICAgICAgIFJlc3VsdC5PayBvKVxuXG4gICAgbWV0aG9kIGdldF9pbml0aWFsX25vZGUgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX09SSUdJTkFMX05PREVcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX05FWFRfTk9ERVwiO1xuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24ganNvbjtcbiAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgIGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X3ByZXZpb3VzX25vZGUganNvbiA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfUFJFVklPVVNfTk9ERVwiO1xuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24ganNvbjtcbiAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgIGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9BTExfTk9ERVNcIlxuICAgICAgICAgIDo6XG4gICAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgYSAtPiBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSBdKSlcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5ub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJERUFEX1JVTEVTXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIkRFQURfQUdFTlRTXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuanNvbl90b19kZWFkX2FnZW50cyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiTk9OX1dFQUtMWV9SRVZFUlNJQkxFX1RSQU5TSVRJT05TXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiQ09OU1RSQUlOVFNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIlBPTFlNRVJTXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeV9jbSwgYWNjdXJhY3lfc2NjIHdpdGhcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgYSwgTm9uZSAtPiBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSBdXG4gICAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgICAgICAgICAgWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGE7IFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYiBdXG4gICAgICAgICAgfCBOb25lLCBTb21lIGIgLT5cbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBQdWJsaWNfZGF0YS5Mb3c7XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYjtcbiAgICAgICAgICAgIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLnNjY19vZl9qc29uIHgpKVxuICBlbmRcblxuY2xhc3MgbmV3X3VuaWZvcm1fY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IChtYWlsYm94IDogbWFpbGJveCkgOlxuICBBcGkudW5pZm9ybV9tYW5hZ2VyX3N0YXRpY19hbmFseXNpcyA9XG4gIGxldCByYXcgPSBuZXcgbmV3X2NsaWVudCB+aXNfcnVubmluZyB+cG9zdCBtYWlsYm94IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgY29tcGlsID1cbiAgICAgIHJhdyNpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgY29tcGlsID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXIgY29tcGlsID1cbiAgICAgIHJhdyNpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfY29udGFjdF9tYXAgYWNjdXJhY3kgPVxuICAgICAgcmF3I2dldF9jb250YWN0X21hcCBhY2N1cmFjeSA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3lcbiAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9IHJhdyNnZXRfaW5pdGlhbF9ub2RlID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBqc29uID1cbiAgICAgIHJhdyNnZXRfbmV4dF9ub2RlIGpzb24gPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBqc29uID1cbiAgICAgIHJhdyNnZXRfcHJldmlvdXNfbm9kZSBqc29uID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2Qgc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPVxuICAgICAgcmF3I2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9IHJhdyNnZXRfZGVhZF9ydWxlcyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuICAgIG1ldGhvZCBnZXRfZGVhZF9hZ2VudHMgPSByYXcjZ2V0X2RlYWRfYWdlbnRzID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICByYXcjZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIHJhdyNnZXRfY29uc3RyYWludHNfbGlzdCA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIHJhdyNnZXRfcG90ZW50aWFsX3BvbHltZXJzIGFjY3VyYWN5X2NtIGFjY3VyYWN5X3NjY1xuICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIF8gaGFuZGxlID1cbiAgfCBOb3RoaW5nIDogdW5pdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnUgLT4gYm94XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIGJveCkgSGFzaHRibC50XG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHJlYWRfcmVzdWx0IGYgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgKFJlc3VsdF91dGlsLnJlYWRfdCBmIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZSkpXG4gICAgcCBsYlxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gcCBsYiBpZCAtPlxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIG1haWxib3ggaWQgd2l0aFxuICAgICAgICAgICB8IEIgKE5vdGhpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfbnVsbCBwIGxiKVxuICAgICAgICAgICB8IEIgKENhdGFsb2csIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZm8sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEFzdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQpKVxuICAgIHhcblxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+cG9zdCBtYWlsYm94IDogQXBpLm1hbmFnZXJfbW9kZWwgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgOiB0eXBlIGEuXG4gICAgICAgIGEgaGFuZGxlIC0+XG4gICAgICAgIChCdWZmZXIudCAtPiB1bml0KSAtPlxuICAgICAgICAoYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgICAgIGZ1biBoYW5kbGUgcmVxdWVzdCAtPlxuICAgICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgICAgICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTsgcmVxdWVzdCBdKVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9zdCBtZXNzYWdlIGluXG4gICAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgKEIgKGhhbmRsZSwgZmVlZGVyKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZCA8LSBzdWNjIGlkIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0ID0gXCJrYW1vaGEgYWdlbnQgaGFzIGRpZWRcIjtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9kZWxldGUgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlRGVsZXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlVXBkYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZU1vdmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUdldFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ3JlYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ2F0YWxvZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ2F0YWxvZ1wiKSBdKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBBc3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdFBhcnNlXCIpIF0pXG5cbiAgICBtZXRob2QgcHJvamVjdF9vdmVyd3JpdGUgZmlsZV9pZCBhc3QgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdE92ZXJ3cml0ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFzdC53cml0ZV9wYXJzaW5nX2NvbXBpbCBiIGFzdCk7XG4gICAgICAgICAgICBdKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmNsYXNzIHNpbXVsYXRpb24gKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudClcbiAgKHNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIDpcbiAgQXBpX2Vudmlyb25tZW50LnNpbXVsYXRpb24gPVxuICBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBfcnVudGltZV9zdGF0ZSA9IHJ1bnRpbWVfc3RhdGVcbiAgICB2YWwgbXV0YWJsZSBfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgIG1ldGhvZCBnZXRfcnVudGltZV9zdGF0ZSAoKSA9IF9ydW50aW1lX3N0YXRlXG5cbiAgICBtZXRob2Qgc2V0X3J1bnRpbWVfc3RhdGUgKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudCkgPVxuICAgICAgX3J1bnRpbWVfc3RhdGUgPC0gcnVudGltZV9zdGF0ZVxuXG4gICAgbWV0aG9kIGdldF9zaW11bGF0aW9uX3BhcmFtZXRlciAoKSA9IF9zaW11bGF0aW9uX3BhcmFtZXRlclxuXG4gICAgbWV0aG9kIHNldF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOiB1bml0ID1cbiAgICAgIF9zaW11bGF0aW9uX3BhcmFtZXRlciA8LSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICBlbmRcblxuY2xhc3MgcHJvamVjdCA6IEFwaV9lbnZpcm9ubWVudC5wcm9qZWN0ID1cbiAgb2JqZWN0XG4gICAgdmFsIG11dGFibGUgX3NpbXVsYXRpb24gPSBOb25lXG5cbiAgICB2YWwgbXV0YWJsZSBfc3RhdGUgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgb3B0aW9uIEx3dC50ID1cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG4gICAgbWV0aG9kIGdldF9zaW11bGF0aW9uICgpID0gX3NpbXVsYXRpb25cbiAgICBtZXRob2QgdW5zZXRfc2ltdWxhdGlvbiAoKSA9IF9zaW11bGF0aW9uIDwtIE5vbmVcblxuICAgIG1ldGhvZCBzZXRfc2ltdWxhdGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudCkgPVxuICAgICAgX3NpbXVsYXRpb24gPC1cbiAgICAgICAgU29tZVxuICAgICAgICAgIChuZXcgc2ltdWxhdGlvbiBydW50aW1lX3N0YXRlIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICA6PiBBcGlfZW52aXJvbm1lbnQuc2ltdWxhdGlvbilcblxuICAgIG1ldGhvZCBzZXRfc3RhdGUgKHN0YXRlIDogQXBpX2Vudmlyb25tZW50LnBhcnNlX3N0YXRlIEx3dC50KSA9XG4gICAgICBsZXQgKCkgPSBMd3QuY2FuY2VsIF9zdGF0ZSBpblxuICAgICAgX3N0YXRlIDwtIChzdGF0ZSA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoU29tZSB4KSlcblxuICAgIG1ldGhvZCBnZXRfc3RhdGUgKCkgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgb3B0aW9uIEx3dC50ID0gX3N0YXRlXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogZ29vZCBvbGQgY2FrZSBwYXR0ZXJuICopXG5cbmNsYXNzIG1hbmFnZXIgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA6XG4gIEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24gPVxuICBsZXQgcHJvamVjdCA9IG5ldyBFbnZpcm9ubWVudF9tZW1vcnkucHJvamVjdCBpblxuICBvYmplY3RcbiAgICBpbmhlcml0IE1hbmFnZXJfc2ltdWxhdGlvbi5tYW5hZ2VyX3NpbXVsYXRpb24gcHJvamVjdCBzeXN0ZW1fcHJvY2Vzc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgdCA9IHtcbiAgc3RhdGVfZXJyb3JfZXJyb3JzOiBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3Q7XG4gIF9zdGF0ZV9lcnJvcl9sb2NhdGlvbjogc3RyaW5nO1xufVxuXG5sZXQgc3RhdGVfZXJyb3IgPSBIb29rZWQuUy5jcmVhdGUgW11cbmxldCBzZXRfc3RhdGVfZXJyb3Igc3RhdGVfZXJyb3JfbmV3ID0gSG9va2VkLlMuc2V0IHN0YXRlX2Vycm9yIHN0YXRlX2Vycm9yX25ld1xuXG5sZXQgY2xlYXJfZXJyb3JzIGxvY2F0aW9uID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJDbGVhcl9lcnJvcnMgJXMgXCIgbG9jYXRpb24pKVxuICBpblxuICBzZXRfc3RhdGVfZXJyb3IgW11cblxubGV0IGhhc19lcnJvcnMgKCkgPVxuICBtYXRjaCBIb29rZWQuUy52IHN0YXRlX2Vycm9yIHdpdGhcbiAgfCBbXSAtPiBmYWxzZVxuICB8IF8gOjogXyAtPiB0cnVlXG5cbmxldCBhZGRfZXJyb3IgKGxvY2F0aW9uIDogc3RyaW5nKSAoZXJyb3JzIDogUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSA9XG4gICgqIGxvZyBsb2NhdGlvbiBhbmQgZXJyb3JzIGlmIGRlYnVnZ2luZyBpcyBlbmFibGVkICopXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnXG4gICAgICAoSnMuc3RyaW5nXG4gICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwic2V0X2Vycm9ycyB7IGxvY2F0aW9uIDogXFxcIiVzXFxcIiAsIGVycm9ycyA6IFtAWyVhQF1dIH1cIlxuICAgICAgICAgICAgbG9jYXRpb25cbiAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICBlcnJvcnMpKVxuICBpblxuICBsZXQgY3VycmVudF9zdGF0ZV9lcnJvciA6IHQgbGlzdCA9IEhvb2tlZC5TLnYgc3RhdGVfZXJyb3IgaW5cbiAgbGV0IG5ld19zdGF0ZV9lcnJvciA6IHQgbGlzdCA9XG4gICAgeyBzdGF0ZV9lcnJvcl9lcnJvcnMgPSBlcnJvcnM7IF9zdGF0ZV9lcnJvcl9sb2NhdGlvbiA9IGxvY2F0aW9uIH1cbiAgICA6OiBjdXJyZW50X3N0YXRlX2Vycm9yXG4gIGluXG4gIHNldF9zdGF0ZV9lcnJvciBuZXdfc3RhdGVfZXJyb3JcblxubGV0IGVycm9ycyA9XG4gIEhvb2tlZC5TLmJpbmQgc3RhdGVfZXJyb3IgKGZ1biBzdGF0ZV9lcnJvciAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgdmFsdWUgLT4gdmFsdWUuc3RhdGVfZXJyb3JfZXJyb3JzIEAgYWNjKVxuICAgICAgICBbXSBzdGF0ZV9lcnJvcilcblxubGV0IHdyYXAgOlxuICAgICAgJ2EuID9hcHBlbmQ6Ym9vbCAtPiBzdHJpbmcgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCAtPiAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiBmdW4gPyhhcHBlbmQgPSBmYWxzZSkgbG9jIHIgLT5cbiAgclxuICA+Pj1cbiAgbGV0ICgpID0gaWYgbm90IGFwcGVuZCB0aGVuIGNsZWFyX2Vycm9ycyBsb2MgaW5cbiAgUmVzdWx0X3V0aWwuZm9sZFxuICAgIH5vazooZnVuIHIgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcikpXG4gICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICBsZXQgKCkgPSBhZGRfZXJyb3IgbG9jIGVycm9ycyBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCB1cmxfYXJncyA/KGRlZmF1bHQgPSBbXSkga2V5IDogc3RyaW5nIGxpc3QgPVxuICAoKiBIb3N0cyB0aGUgdXNlciBzcGVjaWZpZWQgb24gdGhlIHVybCBpbiB0aGUgZm9ybVxuICAgICBrZXk9Li4uJmtleT0uLiYuLi5cbiAgKilcbiAgbGV0IGFyZ3MgPSBVcmwuQ3VycmVudC5hcmd1bWVudHMgaW5cbiAgbWF0Y2ggTGlzdC5tYXAgc25kIChMaXN0LmZpbHRlciAoZnVuIChrLCBfKSAtPiBrID0ga2V5KSBhcmdzKSB3aXRoXG4gIHwgW10gLT4gZGVmYXVsdFxuICB8IHNvbWUgLT4gc29tZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvbW1hbmQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBhcmdzIDogSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBvblN0ZG91dCA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvblN0ZGVyciA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5wcm9wXG4gIG1ldGhvZCBvbkNsb3NlIDogKHVuaXQgLT4gdW5pdCkgSnMucHJvcFxuICBtZXRob2Qgb25FcnJvciA6ICh1bml0IC0+IHVuaXQpIEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfcHJvY2Vzc19jb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgSnMuY29uc3RyID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfcHJvY2Vzc19jb25maWd1cmF0aW9uXG4gICAgPyhvblN0ZG91dCA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBvcHRpb24pXG4gICAgPyhvblN0ZGVyciA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBvcHRpb24pXG4gICAgPyhvbkNsb3NlIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uKSA/KG9uRXJyb3IgOiAodW5pdCAtPiB1bml0KSBvcHRpb24pXG4gICAgKGNvbW1hbmQgOiBzdHJpbmcpIChhcmdzIDogc3RyaW5nIGxpc3QpIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICBsZXQgY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgICBuZXclanMgY29uc3RydWN0b3JfcHJvY2Vzc19jb25maWd1cmF0aW9uXG4gIGluXG4gIGxldCAoKSA9XG4gICAgY29uZmlndXJhdGlvbiMjLmNvbW1hbmQgOj0gSnMuc3RyaW5nIGNvbW1hbmQ7XG4gICAgY29uZmlndXJhdGlvbiMjLmFyZ3MgOj0gSnMuYXJyYXkgKEFycmF5Lm9mX2xpc3QgKExpc3QubWFwIEpzLnN0cmluZyBhcmdzKSk7XG4gICAgKG1hdGNoIG9uU3Rkb3V0IHdpdGhcbiAgICB8IFNvbWUgb25TdGRvdXQgLT4gY29uZmlndXJhdGlvbiMjLm9uU3Rkb3V0IDo9IG9uU3Rkb3V0XG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAobWF0Y2ggb25TdGRlcnIgd2l0aFxuICAgIHwgU29tZSBvblN0ZGVyciAtPiBjb25maWd1cmF0aW9uIyMub25TdGRlcnIgOj0gb25TdGRlcnJcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgIChtYXRjaCBvbkNsb3NlIHdpdGhcbiAgICB8IFNvbWUgb25DbG9zZSAtPiBjb25maWd1cmF0aW9uIyMub25DbG9zZSA6PSBvbkNsb3NlXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAobWF0Y2ggb25FcnJvciB3aXRoXG4gICAgfCBTb21lIG9uRXJyb3IgLT4gY29uZmlndXJhdGlvbiMjLm9uRXJyb3IgOj0gb25FcnJvclxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKClcbiAgaW5cbiAgY29uZmlndXJhdGlvblxuXG5jbGFzcyB0eXBlIHByb2Nlc3MgPSBvYmplY3RcbiAgbWV0aG9kIHdyaXRlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBraWxsIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IHNwYXduX3Byb2Nlc3MgKGNvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCkgOlxuICAgIHByb2Nlc3MgSnMudCBKcy5vcHQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJzcGF3blByb2Nlc3NcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IGNvbmZpZ3VyYXRpb24gfF1cblxubGV0IGxhdW5jaF9hZ2VudCAob25DbG9zZSA6IHVuaXQgLT4gdW5pdCkgKG1lc3NhZ2VfZGVsaW1pdGVyIDogY2hhcilcbiAgICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgKGhhbmRsZXIgOiBzdHJpbmcgLT4gdW5pdCkgOlxuICAgIDwga2lsbCA6IHVuaXQgSnMubWV0aCA7IHdyaXRlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoID4gSnMudCA9XG4gIGxldCBidWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgcmVjIG9uU3Rkb3V0IG1zZyA9XG4gICAgbWF0Y2ggVG9vbHMuc3RyaW5nX3NwbGl0X29uX2NoYXIgbWVzc2FnZV9kZWxpbWl0ZXIgKEpzLnRvX3N0cmluZyBtc2cpIHdpdGhcbiAgICB8IHByZWZpeCwgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgcHJlZml4XG4gICAgfCBwcmVmaXgsIFNvbWUgc3VmZml4IC0+XG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgcHJlZml4IGluXG4gICAgICBsZXQgKCkgPSBoYW5kbGVyIChCdWZmZXIuY29udGVudHMgYnVmZmVyKSBpblxuICAgICAgbGV0ICgpID0gQnVmZmVyLnJlc2V0IGJ1ZmZlciBpblxuICAgICAgb25TdGRvdXQgKEpzLnN0cmluZyBzdWZmaXgpXG4gIGluXG4gIGxldCBjb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQgPVxuICAgIGNyZWF0ZV9wcm9jZXNzX2NvbmZpZ3VyYXRpb24gfm9uU3Rkb3V0IH5vbkNsb3NlIGNvbW1hbmQgYXJnc1xuICBpblxuICBKcy5PcHQuY2FzZVxuICAgIChzcGF3bl9wcm9jZXNzIGNvbmZpZ3VyYXRpb24pXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0ICgpID0gb25DbG9zZSAoKSBpblxuICAgICAgZmFpbHdpdGggKFwiTGF1bmNoaW5nICdcIiBeIGNvbW1hbmQgXiBcIicgZmFpbGVkXCIpKVxuICAgIChmdW4geCAtPiB4KVxuXG5jbGFzcyBtYW5hZ2VyID8obWVzc2FnZV9kZWxpbWl0ZXIgOiBjaGFyID0gVG9vbHMuZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyKVxuICAoY29tbWFuZCA6IHN0cmluZykgKGFyZ3MgOiBzdHJpbmcgbGlzdCkgOlxuICBBcGkuY29uY3JldGVfbWFuYWdlciA9XG4gIGxldCBzd2l0Y2hfcmUgPSBSZS5jb21waWxlIChSZS5zdHIgXCJLYXBwYVN3aXRjaG1hblwiKSBpblxuICBsZXQgc3Rvcl9jb21tYW5kID0gUmUucmVwbGFjZV9zdHJpbmcgc3dpdGNoX3JlIH5ieTpcIkthU3RvclwiIGNvbW1hbmQgaW5cbiAgbGV0IHN3aXRjaF9tYWlsYm94ID0gU3dpdGNobWFuX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQgc3Rvcl9zdGF0ZSwgdXBkYXRlX3N0b3Jfc3RhdGUgPSBLYXN0b3JfY2xpZW50LmluaXRfc3RhdGUgKCkgaW5cbiAgbGV0IHJ1bm5pbmdfcmVmID0gcmVmIHRydWUgaW5cbiAgbGV0IG9uQ2xvc2UgKCkgPSBydW5uaW5nX3JlZiA6PSBmYWxzZSBpblxuICBsZXQgc3Rvcl9wcm9jZXNzID1cbiAgICBsYXVuY2hfYWdlbnQgb25DbG9zZSBtZXNzYWdlX2RlbGltaXRlciBzdG9yX2NvbW1hbmQgYXJnc1xuICAgICAgKEthc3Rvcl9jbGllbnQucmVjZWl2ZSB1cGRhdGVfc3Rvcl9zdGF0ZSlcbiAgaW5cbiAgbGV0IHN3aXRjaF9wcm9jZXNzID1cbiAgICBsYXVuY2hfYWdlbnQgb25DbG9zZSBtZXNzYWdlX2RlbGltaXRlciBjb21tYW5kIGFyZ3NcbiAgICAgIChTd2l0Y2htYW5fY2xpZW50LnJlY2VpdmUgc3dpdGNoX21haWxib3gpXG4gIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgcHJpdmF0ZSBzbGVlcCB0aW1lb3V0ID0gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCB0aW1lb3V0XG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSAhcnVubmluZ19yZWZcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPVxuICAgICAgbGV0ICgpID0gc3dpdGNoX3Byb2Nlc3MjI2tpbGwgaW5cbiAgICAgIGxldCAoKSA9IHN0b3JfcHJvY2VzcyMja2lsbCBpblxuICAgICAgKClcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPVxuICAgICAgU3dpdGNobWFuX2NsaWVudC5pc19jb21wdXRpbmcgc3dpdGNoX21haWxib3ggfHwgc2VsZiNzdG9yeV9pc19jb21wdXRpbmdcblxuICAgIGluaGVyaXRcbiAgICAgIEthc3Rvcl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIHN0b3JfcHJvY2VzcyMjd3JpdGVcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiJXMlY1wiIG1lc3NhZ2VfdGV4dCBtZXNzYWdlX2RlbGltaXRlcikpKVxuICAgICAgICBzdG9yX3N0YXRlXG5cbiAgICBpbmhlcml0XG4gICAgICBTd2l0Y2htYW5fY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfmlzX3J1bm5pbmc6KGZ1biAoKSAtPiB0cnVlKVxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIHN3aXRjaF9wcm9jZXNzIyN3cml0ZVxuICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCIlcyVjXCIgbWVzc2FnZV90ZXh0IG1lc3NhZ2VfZGVsaW1pdGVyKSkpXG4gICAgICAgIHN3aXRjaF9tYWlsYm94XG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEJhZFJlc3BvbnNlIG9mIE1waV9tZXNzYWdlX2oucmVzdF9yZXNwb25zZV9jb250ZW50XG5leGNlcHRpb24gQmFkUmVzcG9uc2VDb2RlIG9mIGludFxuZXhjZXB0aW9uIFRpbWVPdXRcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlcXVlc3RfdXAgdiA9IGluY3IgdlxubGV0IHJlcXVlc3RfZG93biB2ID0gZGVjciB2XG5sZXQgaXNfY29tcHV0aW5nIHYgPSAhdiA8PiAwXG5cbmxldCBzZW5kID8odGltZW91dCA6IGZsb2F0IG9wdGlvbikgcmVxdWVzdF9jb3VudCAodXJsIDogc3RyaW5nKVxuICAgIChtZXRoIDogQ29tbW9uLm1ldGgpID8oZGF0YSA6IHN0cmluZyBvcHRpb24pIChoeWRyYXRlIDogc3RyaW5nIC0+ICdhKSA6XG4gICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGxldCByZXBseSwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGhhbmRsZXIgc3RhdHVzIHJlc3BvbnNlX3RleHQgPVxuICAgIGxldCByZXN1bHRfY29kZSA6IFJlc3VsdF91dGlsLnN0YXR1cyBvcHRpb24gPVxuICAgICAgbWF0Y2ggc3RhdHVzIHdpdGhcbiAgICAgIHwgMjAwIC0+IFNvbWUgYE9LXG4gICAgICB8IDIwMSAtPiBTb21lIGBDcmVhdGVkXG4gICAgICB8IDIwMiAtPiBTb21lIGBBY2NlcHRlZFxuICAgICAgfCA0MDAgLT4gU29tZSBgQmFkX3JlcXVlc3RcbiAgICAgIHwgNDA0IC0+IFNvbWUgYE5vdF9mb3VuZFxuICAgICAgfCA0MDggLT4gU29tZSBgUmVxdWVzdF90aW1lb3V0XG4gICAgICB8IDQwOSAtPiBTb21lIGBDb25mbGljdFxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCByZXN1bHQgPVxuICAgICAgbWF0Y2ggcmVzdWx0X2NvZGUgd2l0aFxuICAgICAgfCBOb25lIC0+IEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2VDb2RlIHN0YXR1cylcbiAgICAgIHwgU29tZSByZXN1bHRfY29kZSAtPlxuICAgICAgICBpZiA0MDAgPD0gc3RhdHVzICYmIHN0YXR1cyA8IDUwMCB0aGVuXG4gICAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgfnJlc3VsdF9jb2RlXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2VcbiAgICAgICAgICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyByZXNwb25zZV90ZXh0KSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHJlc3BvbnNlID0gaHlkcmF0ZSByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgUmVzdWx0X3V0aWwub2sgcmVzcG9uc2VcbiAgICAgICAgKVxuICAgIGluXG4gICAgbGV0ICgpID0gcmVxdWVzdF9kb3duIHJlcXVlc3RfY291bnQgaW5cbiAgICBsZXQgKCkgPSBMd3Qud2FrZXVwIGZlZWRlciByZXN1bHQgaW5cbiAgICAoKVxuICBpblxuICBsZXQgKCkgPSByZXF1ZXN0X3VwIHJlcXVlc3RfY291bnQgaW5cbiAgbGV0ICgpID0gQ29tbW9uLmFqYXhfcmVxdWVzdCB+dXJsIH5tZXRoID90aW1lb3V0ID9kYXRhIH5oYW5kbGVyIGluXG4gIHJlcGx5XG5cbmxldCBrYXNhX2Vycm9yIGwgPVxuICBMd3QucmV0dXJuX2Vycm9yXG4gICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBhY2MgbSAtPlxuICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmFkZF91bmNhdWdodF9lcnJvclxuICAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICB+ZmlsZV9uYW1lOlwicmVzdF9hcGlcIiB+bWVzc2FnZTptLlJlc3VsdF91dGlsLnRleHQgRXhpdClcbiAgICAgICAgICAgYWNjKVxuICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9lcnJvcl9oYW5kbGVyIGwpXG5cbmNsYXNzIG1hbmFnZXIgfih0aW1lb3V0IDogZmxvYXQgb3B0aW9uKSB+dXJsIH5wcm9qZWN0X2lkIDogQXBpLnJlc3RfbWFuYWdlciA9XG4gIGxldCByZXF1ZXN0X2NvdW50ID0gcmVmIDAgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2VcbiAgICAgICAgOiBNcGlfbWVzc2FnZV9qLnJlcXVlc3QgLT4gTXBpX21lc3NhZ2Vfai5yZXNwb25zZSBMd3QudCA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBgUHJvamVjdExvYWQgXyAtPlxuICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YEJhZF9yZXF1ZXN0XG4gICAgICAgICAgICAgXCJsb3cgbGV2ZWwgcHJvamVjdF9sb2FkIG11c3RuJ3QgYmUgdXNlZCBvdmVyIEhUVFBcIilcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSBwYXVzZV9jb25kaXRpb24gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9jb250aW51ZVwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBQVVRcbiAgICAgICAgICB+ZGF0YTooWW9qc29uLlNhZmUudG9fc3RyaW5nIChgU3RyaW5nIHBhdXNlX2NvbmRpdGlvbikpXG4gICAgICAgICAgKGZ1biBfIC0+IGBTaW11bGF0aW9uQ29udGludWUpXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb25cIiB1cmwgcHJvamVjdF9pZCkgYERFTEVURVxuICAgICAgICAgIChmdW4gXyAtPiBgU2ltdWxhdGlvbkRlbGV0ZSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfaWQgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9maWxlbGluZXMvJXNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkIGZpbGVfbGluZV9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgbGV0IGxpbmVzID1cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9saXN0IFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgICAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyByZXN1bHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBsaW5lcylcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXBfaWQgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9ESU4vJXNcIiB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAgIGZsdXhfbWFwX2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiAoTXBpX21lc3NhZ2Vfai5kaW5fb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2xvZ21lc3NhZ2VzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLmxvZ19tZXNzYWdlX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9saW1pdCAtPlxuICAgICAgICBsZXQgYXJncyA9XG4gICAgICAgICAgU3RyaW5nLmNvbmNhdCBcIiZcIlxuICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAoZnVuIChrZXksIHZhbHVlKSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVzPSVzXCIga2V5IHZhbHVlKVxuICAgICAgICAgICAgICAgKChtYXRjaCBwbG90X2xpbWl0LkFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0IHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICB8IFNvbWUgcGxvdF9saW1pdF9vZmZzZXQgLT5cbiAgICAgICAgICAgICAgICAgIFsgXCJwbG90X2xpbWl0X29mZnNldFwiLCBzdHJpbmdfb2ZfaW50IHBsb3RfbGltaXRfb2Zmc2V0IF0pXG4gICAgICAgICAgICAgICBAXG4gICAgICAgICAgICAgICBtYXRjaCBwbG90X2xpbWl0LkFwaV90eXBlc19qLnBsb3RfbGltaXRfcG9pbnRzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgfCBTb21lIHBsb3RfbGltaXRfcG9pbnRzIC0+XG4gICAgICAgICAgICAgICAgIFsgXCJwbG90X2xpbWl0X3BvaW50c1wiLCBzdHJpbmdfb2ZfaW50IHBsb3RfbGltaXRfcG9pbnRzIF0pKVxuICAgICAgICBpblxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3Bsb3RcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgR0VUIH5kYXRhOmFyZ3MgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCAoTXBpX21lc3NhZ2Vfai5wbG90X29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHNuYXBzaG90X2lkIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vc25hcHNob3RzLyVzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCBzbmFwc2hvdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zbmFwc2hvdF9kZXRhaWxfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uXCIgdXJsIHByb2plY3RfaWQpIGBHRVRcbiAgICAgICAgICAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIChNcGlfbWVzc2FnZV9qLnNpbXVsYXRpb25faW5mb19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vZWZmaWNpZW5jeVwiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zaW11bGF0aW9uX2VmZmljaWVuY3lfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi90cmFjZVwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBHRVQgKGZ1biBzIC0+IGBTaW11bGF0aW9uVHJhY2UgcylcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vb3V0cHV0c1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBHRVQgKGZ1biBzIC0+IGBTaW11bGF0aW9uT3V0cHV0c1ppcCBzKVxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2ZpbGVsaW5lc1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLmZpbGVfbGluZV9jYXRhbG9nX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9ESU5cIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4gKE1waV9tZXNzYWdlX2ouZGluX2NhdGFsb2dfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vc25hcHNob3RzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc25hcHNob3RfY2F0YWxvZ19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3BhdXNlXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYFBVVCAoZnVuIF8gLT4gYFNpbXVsYXRpb25QYXVzZSlcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9wYXJhbWV0ZXJcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24gc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9pbnRlcnZlbnRpb25cIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgUFVUXG4gICAgICAgICAgfmRhdGE6XG4gICAgICAgICAgICAoQXBpX3R5cGVzX2ouc3RyaW5nX29mX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2ludGVydmVudGlvbikgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgIChZb2pzb24uU2FmZS5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgICAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyByZXN1bHQpKSlcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uXCIgdXJsIHByb2plY3RfaWQpIGBQT1NUXG4gICAgICAgICAgfmRhdGE6XG4gICAgICAgICAgICAoQXBpX3R5cGVzX2ouc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyIHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgICAgIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvblN0YXJ0XG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIHJlc3VsdCkpXG5cbiAgICBpbmhlcml0IE1waV9hcGkubWFuYWdlcl9iYXNlICgpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByZXN0X21lc3NhZ2UgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnQgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjJcIiB1cmwpIGBHRVRcbiAgICAgICAgICAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyAoTXBpX21lc3NhZ2Vfai5lbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgUHJvamVjdENhdGFsb2cgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50IChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzXCIgdXJsKSBgR0VUXG4gICAgICAgICAgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGxldCBwcm9qZWN0cyA9XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfbGlzdCBZb2pzb24uU2FmZS5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAgICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgcmVzdWx0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGBQcm9qZWN0Q2F0YWxvZyBwcm9qZWN0cylcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgcHJvamVjdF9wYXJhbWV0ZXIgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50IChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzXCIgdXJsKSBgUE9TVFxuICAgICAgICAgIH5kYXRhOihBcGlfdHlwZXNfai5zdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIgcHJvamVjdF9wYXJhbWV0ZXIpXG4gICAgICAgICAgKGZ1biBfIC0+IGBQcm9qZWN0Q3JlYXRlKVxuICAgICAgfCBgUHJvamVjdERlbGV0ZSBwcm9qZWN0X2lkIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzXCIgdXJsIHByb2plY3RfaWQpIGBERUxFVEUgKGZ1biBfIC0+XG4gICAgICAgICAgICBgUHJvamVjdERlbGV0ZSlcblxuICAgIG1ldGhvZCBlbnZpcm9ubWVudF9pbmZvICgpIDogQXBpX3R5cGVzX2ouZW52aXJvbm1lbnRfaW5mbyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjcmVzdF9tZXNzYWdlIGBFbnZpcm9ubWVudEluZm9cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBFbnZpcm9ubWVudEluZm8gKHJlc3VsdCA6IE1waV9tZXNzYWdlX3QuZW52aXJvbm1lbnRfaW5mbykgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X2RlbGV0ZSBwcm9qZWN0X2lkIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjcmVzdF9tZXNzYWdlIChgUHJvamVjdERlbGV0ZSBwcm9qZWN0X2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3REZWxldGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHByb2plY3RfY2F0YWxvZyA6IHN0cmluZyBsaXN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNyZXN0X21lc3NhZ2UgYFByb2plY3RDYXRhbG9nXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgUHJvamVjdENhdGFsb2cgcmVzdWx0IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHJlc3VsdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2QgcHJvamVjdF9jcmVhdGUgKHByb2plY3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX2oucHJvamVjdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjcmVzdF9tZXNzYWdlIChgUHJvamVjdENyZWF0ZSBwcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0Q3JlYXRlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzZWNyZXRfcHJvamVjdF9wYXJzZSA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBCYWRfcmVxdWVzdFxuICAgICAgICAgICBcImxvdyBsZXZlbCBwcm9qZWN0X3BhcnNlIG11c3RuJ3QgYmUgdXNlZCBvdmVyIEhUVFBcIilcblxuICAgIG1ldGhvZCBzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBCYWRfcmVxdWVzdFxuICAgICAgICAgICBcImxvdyBsZXZlbCBnZXRfcG9zX29mX3J1bGVzX2FuZF92YXJzIG11c3RuJ3QgYmUgdXNlZCBvdmVyIEhUVFBcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGUgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9wYXJzZS8lcyV0XCIgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgKG1hdGNoIHBhdHRlcm5TaGFyaW5nIHdpdGhcbiAgICAgICAgICAgfCBQYXR0ZXJuLk5vX3NoYXJpbmcgLT4gXCJub19zaGFyaW5nXCJcbiAgICAgICAgICAgfCBQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnMgLT4gXCJjb21wYXRpYmxlX3BhdHRlcm5zXCJcbiAgICAgICAgICAgfCBQYXR0ZXJuLk1heF9zaGFyaW5nIC0+IFwibWF4X3NoYXJpbmdcIilcbiAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgbWF0Y2ggb3ZlcndyaXRlIHdpdGhcbiAgICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICAgfCBsIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPyVhXCJcbiAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiZcIilcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBmICh2ciwgdmEpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlcz0lYVwiIHZyIE5ici5wcmludCB2YSkpXG4gICAgICAgICAgICAgICAgIGwpKVxuICAgICAgICBgUE9TVFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPSBMd3QuaWdub3JlX3Jlc3VsdCAoc2VsZiNwcm9qZWN0X2RlbGV0ZSBwcm9qZWN0X2lkKVxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gdHJ1ZSAoKlRPRE8qKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgS2ZpbGVzLnJlYWRfY2F0YWxvZ19pdGVtKSlcblxuICAgIG1ldGhvZCBmaWxlX2NyZWF0ZSBwb3MgaWQgY29udGVudCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXMvcG9zaXRpb24vJWlcIiB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICBpZCBwb3MpXG4gICAgICAgIGBQVVRcbiAgICAgICAgfmRhdGE6KFlvanNvbi5CYXNpYy50b19zdHJpbmcgKGBTdHJpbmcgY29udGVudCkpXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGlkID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lc1wiIHVybCBwcm9qZWN0X2lkIGlkKVxuICAgICAgICBgR0VUXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ludCkpXG5cbiAgICBtZXRob2QgZmlsZV91cGRhdGUgaWQgY29udGVudCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXNcIiB1cmwgcHJvamVjdF9pZCBpZClcbiAgICAgICAgYFBPU1RcbiAgICAgICAgfmRhdGE6KFlvanNvbi5CYXNpYy50b19zdHJpbmcgKGBTdHJpbmcgY29udGVudCkpXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZyBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBwb3MgaWQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzL3Bvc2l0aW9uLyVpXCIgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgaWQgcG9zKVxuICAgICAgICBgUE9TVFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBmaWxlX2RlbGV0ZSBpZCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXNcIiB1cmwgcHJvamVjdF9pZCBpZClcbiAgICAgICAgYERFTEVURVxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvb3ZlcndyaXRlLyVzXCIgdXJsIHByb2plY3RfaWQgZmlsZV9pZClcbiAgICAgICAgYFBPU1RcbiAgICAgICAgfmRhdGE6KFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBhc3QpKVxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgZGF0YSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXNcIiB1cmwgcHJvamVjdF9pZCkgYFBVVCB+ZGF0YVxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBtYXRjaCBZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCB3aXRoXG4gICAgICAgICAgfCBgTnVsbCAtPiAoKVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgS2FTYSBJTklUIHJlc3BvbnNlOiBcIiwgeCkpKVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyIGNvbXBpbCA9XG4gICAgICBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyX3Jhd1xuICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIGNvbXBpbCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnRhY3RfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICB8IFNvbWUgYWNjdXJhY3kgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2NvbnRhY3RfbWFwP2FjY3VyYWN5PSVzXCJcbiAgICAgICAgICAgIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgICAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFjY3VyYWN5KVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2NvbnRhY3RfbWFwXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+IFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgfCBTb21lIGFjY3VyYWN5IC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwP2FjY3VyYWN5PSVzXCJcbiAgICAgICAgICAgIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgICAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFjY3VyYWN5KVxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnNwcmludGYgXCIlcy92Mi9hbmFseXNlcy9pbmZsdWVuY2VfbWFwXCIgdXJsKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPiB4KVxuXG4gICAgbWV0aG9kIGdldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKGxldCBzID1cbiAgICAgICAgICAgbWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgICB8IFNvbWUgYWNjdXJhY3kgLT5cbiAgICAgICAgICAgICBcIiZhY2N1cmFjeT1cIiBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhY2N1cmFjeVxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgaW5cbiAgICAgICAgIEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcD90b3RhbD0laSVzJXMlcyVzXCIgdXJsXG4gICAgICAgICAgIHByb2plY3RfaWQgdG90YWxcbiAgICAgICAgICAgKG1hdGNoIG9yaWdpbiB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuUnVsZSBpKSAtPiBcIiZvcmlnaW49X3J1bGVfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBTb21lIChQdWJsaWNfZGF0YS5WYXIgaSkgLT4gXCImb3JpZ2luPV92YXJfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCIpXG4gICAgICAgICAgIHNcbiAgICAgICAgICAgKG1hdGNoIGZ3ZCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSBpIC0+IFwiJmZ3ZD1cIiBeIHN0cmluZ19vZl9pbnQgaSlcbiAgICAgICAgICAgKG1hdGNoIGJ3ZCB3aXRoXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgIHwgU29tZSBpIC0+IFwiJmJ3ZD1cIiBeIHN0cmluZ19vZl9pbnQgaSkpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEubG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcC9pbml0aWFsX25vZGVcIlxuICAgICAgICAgICB1cmwgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9uZXh0X25vZGUgc2hvcnRfaWRfb3B0ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwL25leHRfbm9kZSVzXCJcbiAgICAgICAgICAgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgKG1hdGNoIHNob3J0X2lkX29wdCB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuUnVsZSBpKSAtPiBcIl9ydWxlX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuVmFyIGkpIC0+IFwiX3Zhcl9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIikpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBzaG9ydF9pZF9vcHQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXAvcHJldmlvdXNfbm9kZSVzXCIgdXJsXG4gICAgICAgICAgIHByb2plY3RfaWRcbiAgICAgICAgICAgKG1hdGNoIHNob3J0X2lkX29wdCB3aXRoXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuUnVsZSBpKSAtPiBcIl9ydWxlX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuVmFyIGkpIC0+IFwiX3Zhcl9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIikpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSB7IExvYy5saW5lOyBMb2MuY2hyIH0gPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXAvbm9kZV9hdD9maWxlPSVzJmxpbmU9JWkmY2hyPSVpXCJcbiAgICAgICAgICAgdXJsIHByb2plY3RfaWQgZmlsZW5hbWUgbGluZSBjaHIpIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgIHwgU29tZSBhY2N1cmFjeSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmXG4gICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2FsbF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwP2FjY3VyYWN5PSVzXCJcbiAgICAgICAgICAgIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgICAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFjY3VyYWN5KVxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnNwcmludGYgXCIlcy92Mi9hbmFseXNlcy9hbGxfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcFwiIHVybClcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5ub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2RlYWRfcnVsZXNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5kZWFkX3J1bGVzX29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9hZ2VudHMgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2RlYWRfYWdlbnRzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuanNvbl90b19kZWFkX2FnZW50cyAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1wiIHVybFxuICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLnNlcGFyYXRpbmdfdHJhbnNpdGlvbnNfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfY29uc3RyYWludHNfbGlzdCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvY29uc3RyYWludHNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X3BvdGVudGlhbF9wb2x5bWVycyBhY2N1cmFjeV9jbSBhY2N1cmFjeV9zY2MgPVxuICAgICAgbGV0IG9wdGlvbnMgPVxuICAgICAgICBtYXRjaCBhY2N1cmFjeV9jbSwgYWNjdXJhY3lfc2NjIHdpdGhcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGEsIE5vbmUgLT4gXCI/YWNjdXJhY3lfY209XCIgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYVxuICAgICAgICB8IE5vbmUsIFNvbWUgYSAtPiBcIj9hY2N1cmFjeV9zY2M9XCIgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYVxuICAgICAgICB8IFNvbWUgYSwgU29tZSBiIC0+XG4gICAgICAgICAgXCI/YWNjdXJhY3lfY209XCJcbiAgICAgICAgICBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhXG4gICAgICAgICAgXiBcIiZhY2N1cmFjeV9zY2M9XCJcbiAgICAgICAgICBeIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBiXG4gICAgICBpblxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL3BvdGVudGlhbF9wb2x5bWVycyVzXCIgdXJsXG4gICAgICAgICAgIHByb2plY3RfaWQgb3B0aW9ucykgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5zY2Nfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9IGlzX2NvbXB1dGluZyByZXF1ZXN0X2NvdW50XG5cbiAgICBtZXRob2QgY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICAgICAgICA6ICh1bml0LCBzdHJpbmcpIEx3dF9yZXN1bHQudCA9XG4gICAgICBsZXQgX2RvbnRjYXJlID0gY2F1c2FsIHx8IHdlYWsgfHwgc3Ryb25nIGluXG4gICAgICBMd3QucmV0dXJuX2Vycm9yIFwiS2FTdG9yIGluIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBIVFRQXCJcblxuICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIChfIDogc3RyaW5nKVxuICAgICAgICA6ICh1bml0LCBzdHJpbmcpIEx3dF9yZXN1bHQudCA9XG4gICAgICBMd3QucmV0dXJuX2Vycm9yIFwiS2FTdG9yIGluIG5vdCBhdmFpbGFibGUgdGhyb3VnaCBIVFRQXCJcblxuICAgIG1ldGhvZCBzdG9yeV9sb2cgOiBzdHJpbmcgbGlzdCA9IFtdXG4gICAgbWV0aG9kIHN0b3J5X2lzX2NvbXB1dGluZyA9IGZhbHNlXG4gICAgbWV0aG9kIHN0b3J5X3Byb2dyZXNzIDogU3RvcnlfanNvbi5wcm9ncmVzc19iYXIgb3B0aW9uID0gTm9uZVxuXG4gICAgbWV0aG9kIHN0b3J5X2xpc3RcbiAgICAgICAgOiAoQXBpLmNvbXByZXNzaW9uX21vZGVzXG4gICAgICAgICAgKiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QgbGlzdFxuICAgICAgICAgICogR3JhcGhfbG9nZ2Vyc19zaWcuZ3JhcGgpXG4gICAgICAgICAgTW9kcy5JbnRNYXAudCA9XG4gICAgICBNb2RzLkludE1hcC5lbXB0eVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjbGllbnRJZFBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwQ2xpZW50SWRcIlxubGV0IF9jbGllbnRfaWQgOiBzdHJpbmcgcmVmID0gcmVmIFwiXCJcbmxldCBnZXRfY2xpZW50X2lkICgpIDogc3RyaW5nID0gIV9jbGllbnRfaWRcbmxldCBzZXRfY2xpZW50X2lkIChjbGllbnRfaWQgOiBzdHJpbmcpIDogdW5pdCA9IF9jbGllbnRfaWQgOj0gY2xpZW50X2lkXG5sZXQgZm9udFNpemVQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcEZvbnRTaXplXCJcbmxldCBjdXJyZW50Rm9udFNpemUgPSByZWYgMS40XG5cbmxldCBpbml0RnJvbVN0b3JhZ2UgKCkgPVxuICBKcy5PcHRkZWYuY2FzZVxuICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IGN1cnJlbnRGb250U2l6ZSA6PSAxLjQgaW5cbiAgICAgIF9jbGllbnRfaWQgOj0gQ29tbW9uLmd1aWQgKCkpXG4gICAgKGZ1biBzdCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgY3VycmVudEZvbnRTaXplIDo9XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBmb250U2l6ZVBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IDEuNClcbiAgICAgICAgICAgIEpzLnBhcnNlRmxvYXRcbiAgICAgIGluXG4gICAgICBfY2xpZW50X2lkIDo9XG4gICAgICAgIEpzLk9wdC5jYXNlIChzdCMjZ2V0SXRlbSBjbGllbnRJZFBhcmFtSWQpIENvbW1vbi5ndWlkIEpzLnRvX3N0cmluZylcblxubGV0IHNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgPVxuICBsZXQgdicgPSBzdHJpbmdfb2ZfZmxvYXQgIWN1cnJlbnRGb250U2l6ZSBpblxuICBsZXQgKCkgPVxuICAgIEpzLk9wdGRlZi5pdGVyIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSAoZnVuIHN0IC0+XG4gICAgICAgIHN0IyNzZXRJdGVtIGZvbnRTaXplUGFyYW1JZCAoSnMuc3RyaW5nIHYnKSlcbiAgaW5cbiAgSnMuT3B0ZGVmLml0ZXIgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlIChmdW4gc3QgLT5cbiAgICAgIHN0IyNzZXRJdGVtIGNsaWVudElkUGFyYW1JZCAoSnMuc3RyaW5nICFfY2xpZW50X2lkKSlcblxubGV0IHVwZGF0ZUZvbnRTaXplIH5kZWx0YSA9XG4gIGxldCAoKSA9IGN1cnJlbnRGb250U2l6ZSA6PSBtYXggMC4yIChtaW4gKCFjdXJyZW50Rm9udFNpemUgKy4gZGVsdGEpIDMuKSBpblxuICBsZXQgdicgPSBzdHJpbmdfb2ZfZmxvYXQgIWN1cnJlbnRGb250U2l6ZSBpblxuICBsZXQgKCkgPVxuICAgIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSMjLnN0eWxlIyMuZm9udFNpemUgOj0gSnMuc3RyaW5nICh2JyBeIFwiZW1cIilcbiAgaW5cbiAgKClcblxubGV0IHN5bmNoLCBzZXRfc3luY2ggPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IGFnZW50X2NvbG9yaW5nID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9XG4gIGxldCAoKSA9IGluaXRGcm9tU3RvcmFnZSAoKSBpblxuICBsZXQgY2xpZW50X2lkcyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcImNsaWVudF9pZFwiIGluXG4gIGxldCBzeW5jaCA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyBcInN5bmNoXCIgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBjbGllbnRfaWRzIHdpdGhcbiAgICB8IGNsaWVudF9pZCA6OiBfIC0+IHNldF9jbGllbnRfaWQgY2xpZW50X2lkXG4gICAgfCBbXSAtPiAoKVxuICBpblxuICBsZXQgKCkgPSBzZXRfc3luY2ggKFsgXCJ0cnVlXCIgXSA9IHN5bmNoKSBpblxuICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHN5bmMgKCkgOiB1bml0IEx3dC50ID0gTHd0LnJldHVybl91bml0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5jbGFzcyBtYW5hZ2VyICgpID1cbiAgbGV0IGthc2Ffd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU2FXb3JrZXIuanNcIiBpblxuICBsZXQga2FzYV9tYWlsYm94ID0gS2FzYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthbW9oYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FNb0hhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthbW9oYV9tYWlsYm94ID0gS2Ftb2hhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2FzdG9yX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVN0b3JXb3JrZXIuanNcIiBpblxuICBsZXQgc3Rvcl9zdGF0ZSwgdXBkYXRlX3N0b3Jfc3RhdGUgPSBLYXN0b3JfY2xpZW50LmluaXRfc3RhdGUgKCkgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBzaW1fd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU2ltV29ya2VyLmpzXCJcbiAgICB2YWwgbXV0YWJsZSBpc19ydW5uaW5nID0gdHJ1ZVxuXG4gICAgaW5pdGlhbGl6ZXJcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc2Ffd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biByZXNwb25zZV9tZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2FzYV9jbGllbnQucmVjZWl2ZSBrYXNhX21haWxib3ggcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYW1vaGFfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biByZXNwb25zZV9tZXNzYWdlIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0ID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2Ftb2hhX2NsaWVudC5yZWNlaXZlIGthbW9oYV9tYWlsYm94IHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzdG9yX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gcmVzcG9uc2VfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthc3Rvcl9jbGllbnQucmVjZWl2ZSB1cGRhdGVfc3Rvcl9zdGF0ZSByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNpbV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlclxuICAgICAgICAgICAgKGZ1biAocmVzcG9uc2VfbWVzc2FnZSA6IHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0IDogc3RyaW5nID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gc2VsZiNyZWNlaXZlIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2ltX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXNhX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYW1vaGFfd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBpc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc3Rvcl93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgKClcblxuICAgIG1ldGhvZCBwcml2YXRlIHNsZWVwIHRpbWVvdXQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIHRpbWVvdXRcblxuICAgIG1ldGhvZCBwcml2YXRlIHBvc3RfbWVzc2FnZSAobWVzc2FnZV90ZXh0IDogc3RyaW5nKSA6IHVuaXQgPVxuICAgICAgc2ltX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0XG5cbiAgICBpbmhlcml0IE1waV9hcGkubWFuYWdlciAoKVxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzYV9jbGllbnQubmV3X3VuaWZvcm1fY2xpZW50XG4gICAgICAgIH5pc19ydW5uaW5nOihmdW4gKCkgLT4gdHJ1ZSlcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtZXNzYWdlX3RleHQpIGluXG4gICAgICAgICAga2FzYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2FzYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYW1vaGFfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtZXNzYWdlX3RleHQpIGluXG4gICAgICAgICAga2Ftb2hhX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBrYW1vaGFfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzdG9yX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbWVzc2FnZV90ZXh0KSBpblxuICAgICAgICAgIGthc3Rvcl93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAgc3Rvcl9zdGF0ZVxuXG4gICAgdmFsIG11dGFibGUga2FzYV9sb2NhdG9yID0gW11cblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjc2VjcmV0X3Byb2plY3RfcGFyc2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYWQgPVxuICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuU2hhcmluZyBvdXQgb3ZlcndyaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5pdCA9IHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXIgb3V0IGluXG4gICAgICAgICAgICAgIGxldCBsb2NhdG9ycyA9XG4gICAgICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlKSlcbiAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGluZm9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBpbmZvcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlKSkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvYWQgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+IGxvY2F0b3JzKSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBwb3MgOiBfIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTGlzdC5maW5kX29wdFxuICAgICAgICAoZnVuIChfLCB4KSAtPiBMb2MuaXNfaW5jbHVkZWRfaW4gZmlsZW5hbWUgcG9zIHgpXG4gICAgICAgIGthc2FfbG9jYXRvclxuICAgICAgfD4gT3B0aW9uX3V0aWwubWFwIGZzdFxuICAgICAgfD4gUmVzdWx0X3V0aWwub2sgP3N0YXR1czpOb25lXG4gICAgICB8PiBMd3QucmV0dXJuXG5cbiAgICBtZXRob2QgaXNfcnVubmluZyA9IGlzX3J1bm5pbmdcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPVxuICAgICAgbGV0ICgpID0gc2ltX3dvcmtlciMjdGVybWluYXRlIGluXG4gICAgICBrYXNhX3dvcmtlciMjdGVybWluYXRlXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID1cbiAgICAgIHNlbGYjc2ltX2lzX2NvbXB1dGluZ1xuICAgICAgfHwgS2FzYV9jbGllbnQuaXNfY29tcHV0aW5nIGthc2FfbWFpbGJveFxuICAgICAgfHwgc2VsZiNzdG9yeV9pc19jb21wdXRpbmdcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIGNsaSA9IHsgdXJsOiBzdHJpbmc7IGNvbW1hbmQ6IHN0cmluZzsgYXJnczogc3RyaW5nIGxpc3QgfVxudHlwZSBwcm90b2NvbCA9IEhUVFAgb2Ygc3RyaW5nIHwgQ0xJIG9mIGNsaVxudHlwZSByZW1vdGUgPSB7IGxhYmVsOiBzdHJpbmc7IHByb3RvY29sOiBwcm90b2NvbCB9XG50eXBlIHNwZWMgPSBXZWJXb3JrZXIgfCBFbWJlZGRlZCB8IFJlbW90ZSBvZiByZW1vdGVcbnR5cGUgc3RhdGUgPSB7IHN0YXRlX2N1cnJlbnQ6IHNwZWM7IHN0YXRlX3J1bnRpbWVzOiBzcGVjIGxpc3QgfVxudHlwZSBtb2RlbCA9IHsgbW9kZWxfY3VycmVudDogc3BlYzsgbW9kZWxfcnVudGltZXM6IHNwZWMgbGlzdCB9XG5cbmxldCBzcGVjX2xhYmVsIDogc3BlYyAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFdlYldvcmtlciAtPiBcIldlYldvcmtlclwiXG4gIHwgRW1iZWRkZWQgLT4gXCJFbWJlZGRlZFwiXG4gIHwgUmVtb3RlIHJlbW90ZSAtPiByZW1vdGUubGFiZWxcblxubGV0IHNwZWNfaWQgOiBzcGVjIC0+IHN0cmluZyA9IGZ1bmN0aW9uXG4gIHwgV2ViV29ya2VyIC0+IFwiV2ViV29ya2VyXCJcbiAgfCBFbWJlZGRlZCAtPiBcIkVtYmVkZGVkXCJcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCBodHRwIH0gLT4gaHR0cFxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBDTEkgY2xpIH0gLT4gY2xpLnVybFxuXG5sZXQgcmVhZF9zcGVjIDogc3RyaW5nIC0+IHNwZWMgb3B0aW9uID0gZnVuY3Rpb25cbiAgfCBcIldlYldvcmtlclwiIC0+IFNvbWUgV2ViV29ya2VyXG4gIHwgXCJFbWJlZGRlZFwiIC0+IFNvbWUgRW1iZWRkZWRcbiAgfCB1cmwgLT5cbiAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJwYXJzZV9yZW1vdGU6ICVzXCIgdXJsKSkgaW5cbiAgICBsZXQgZm9ybWF0X3VybCB1cmwgPVxuICAgICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggdXJsIGluXG4gICAgICBpZiBsZW5ndGggPiAwICYmIFN0cmluZy5nZXQgdXJsIChsZW5ndGggLSAxKSA9PSAnLycgdGhlblxuICAgICAgICBTdHJpbmcuc3ViIHVybCAwIChsZW5ndGggLSAxKVxuICAgICAgZWxzZVxuICAgICAgICB1cmxcbiAgICBpblxuICAgIGxldCBjbGVhbmVkX3VybCBodHRwID1cbiAgICAgIGxldCBjbGVhbmVkID1cbiAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlczolZC8lc1wiIGh0dHAuVXJsLmh1X2hvc3QgaHR0cC5VcmwuaHVfcG9ydFxuICAgICAgICAgIGh0dHAuVXJsLmh1X3BhdGhfc3RyaW5nXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiY2xlYW5lZCA6ICVzXCIgY2xlYW5lZCkpXG4gICAgICBpblxuICAgICAgZm9ybWF0X3VybCBjbGVhbmVkXG4gICAgaW5cbiAgICAobWF0Y2ggVXJsLnVybF9vZl9zdHJpbmcgdXJsIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBwYXJzZWQgLT5cbiAgICAgIGxldCBwcm90b2NvbCA6IHByb3RvY29sID1cbiAgICAgICAgbWF0Y2ggcGFyc2VkIHdpdGhcbiAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+IEhUVFAgKFwiaHR0cDovL1wiIF4gY2xlYW5lZF91cmwgaHR0cClcbiAgICAgICAgfCBVcmwuSHR0cHMgaHR0cHMgLT4gSFRUUCAoXCJodHRwczovL1wiIF4gY2xlYW5lZF91cmwgaHR0cHMpXG4gICAgICAgIHwgVXJsLkZpbGUgZmlsZSAtPlxuICAgICAgICAgIENMSVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB1cmwgPSBcImZpbGU6Ly9cIiBeIGZpbGUuVXJsLmZ1X3BhdGhfc3RyaW5nO1xuICAgICAgICAgICAgICBjb21tYW5kID0gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmc7XG4gICAgICAgICAgICAgIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgbGFiZWwgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBMaXN0LmFzc29jIFwibGFiZWxcIlxuICAgICAgICAgICAgKG1hdGNoIHBhcnNlZCB3aXRoXG4gICAgICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT4gaHR0cC5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICB8IFVybC5IdHRwcyBodHRwcyAtPiBodHRwcy5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT4gZmlsZS5VcmwuZnVfYXJndW1lbnRzKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIChtYXRjaCBwYXJzZWQgd2l0aFxuICAgICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPiBodHRwLlVybC5odV9ob3N0XG4gICAgICAgICAgfCBVcmwuSHR0cHMgaHR0cHMgLT4gaHR0cHMuVXJsLmh1X2hvc3RcbiAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT4gZmlsZS5VcmwuZnVfcGF0aF9zdHJpbmcpXG4gICAgICBpblxuICAgICAgU29tZSAoUmVtb3RlIHsgbGFiZWw7IHByb3RvY29sIH0pKVxuXG5jbGFzcyBlbWJlZGRlZCAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyID1cbiAgbGV0IGthc2Ffd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthU2FXb3JrZXIuanNcIiBpblxuICBsZXQga2FzYV9tYWlsYm94ID0gS2FzYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthbW9oYV93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FNb0hhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthbW9oYV9tYWlsYm94ID0gS2Ftb2hhX2NsaWVudC5uZXdfbWFpbGJveCAoKSBpblxuICBsZXQga2FzdG9yX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVN0b3JXb3JrZXIuanNcIiBpblxuICBsZXQgc3Rvcl9zdGF0ZSwgdXBkYXRlX3N0b3Jfc3RhdGUgPSBLYXN0b3JfY2xpZW50LmluaXRfc3RhdGUgKCkgaW5cbiAgb2JqZWN0IChzZWxmKVxuICAgIGluaXRpYWxpemVyXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXNhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyXG4gICAgICAgICAgICAoZnVuIChyZXNwb25zZV9tZXNzYWdlIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgOiBzdHJpbmcgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYXNhX2NsaWVudC5yZWNlaXZlIGthc2FfbWFpbGJveCByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthbW9oYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlclxuICAgICAgICAgICAgKGZ1biAocmVzcG9uc2VfbWVzc2FnZSA6IHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0IDogc3RyaW5nID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2Ftb2hhX2NsaWVudC5yZWNlaXZlIGthbW9oYV9tYWlsYm94IHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzdG9yX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyXG4gICAgICAgICAgICAoZnVuIChyZXNwb25zZV9tZXNzYWdlIDogc3RyaW5nIFdvcmtlci5tZXNzYWdlRXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgOiBzdHJpbmcgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYXN0b3JfY2xpZW50LnJlY2VpdmUgdXBkYXRlX3N0b3Jfc3RhdGUgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICAoKVxuXG4gICAgaW5oZXJpdFxuICAgICAgQXBpX3J1bnRpbWUubWFuYWdlclxuICAgICAgICAob2JqZWN0XG4gICAgICAgICAgIG1ldGhvZCBtaW5fcnVuX2R1cmF0aW9uICgpID0gMC4xXG4gICAgICAgICAgIG1ldGhvZCB5aWVsZCA9IEpzX29mX29jYW1sX2x3dC5Md3RfanMueWllbGRcblxuICAgICAgICAgICBtZXRob2QgbG9nID9leG4gKG1zZyA6IHN0cmluZykgPVxuICAgICAgICAgICAgIGxldCAoKSA9IGlnbm9yZSBleG4gaW5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiZW1iZWRkZWRfbWFuYWdlciNsb2c6ICVzXCIgbXNnKSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgICAgZW5kXG4gICAgICAgICAgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpXG5cbiAgICBpbmhlcml0XG4gICAgICBLYXNhX2NsaWVudC5uZXdfdW5pZm9ybV9jbGllbnRcbiAgICAgICAgfmlzX3J1bm5pbmc6KGZ1biAoKSAtPiB0cnVlKVxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPiBrYXNhX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBrYXNhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthbW9oYV9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPiBrYW1vaGFfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthbW9oYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYXN0b3JfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT4ga2FzdG9yX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBzdG9yX3N0YXRlXG5cbiAgICBtZXRob2QgaXNfcnVubmluZyA9IHRydWVcblxuICAgIG1ldGhvZCB0ZXJtaW5hdGUgPVxuICAgICAgbGV0ICgpID0ga2FzYV93b3JrZXIjI3Rlcm1pbmF0ZSBpblxuICAgICAgKCkgKCpUT0RPKilcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSB0cnVlICgqVE9ETyopXG4gICAgdmFsIG11dGFibGUga2FzYV9sb2NhdG9yID0gW11cblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjc2VjcmV0X3Byb2plY3RfcGFyc2VcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBvdXQgLT5cbiAgICAgICAgICAgICAgbGV0IGxvYWQgPVxuICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuU2hhcmluZyBvdXQgb3ZlcndyaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgaW5pdCA9IHNlbGYjaW5pdF9zdGF0aWNfYW5hbHlzZXIgb3V0IGluXG4gICAgICAgICAgICAgIGxldCBsb2NhdG9ycyA9XG4gICAgICAgICAgICAgICAgaW5pdFxuICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ga2FzYV9sb2NhdG9yIDwtIFtdIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlKSlcbiAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiNzZWNyZXRfZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFyc1xuICAgICAgICAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGluZm9zIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBpbmZvcyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlKSkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxvYWQgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+IGxvY2F0b3JzKSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBwb3MgOiBfIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTGlzdC5maW5kX29wdFxuICAgICAgICAoZnVuIChfLCB4KSAtPiBMb2MuaXNfaW5jbHVkZWRfaW4gZmlsZW5hbWUgcG9zIHgpXG4gICAgICAgIGthc2FfbG9jYXRvclxuICAgICAgfD4gT3B0aW9uX3V0aWwubWFwIGZzdFxuICAgICAgfD4gUmVzdWx0X3V0aWwub2sgP3N0YXR1czpOb25lXG4gICAgICB8PiBMd3QucmV0dXJuXG4gIGVuZFxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9XG4gIFJlYWN0LlMuY3JlYXRlXG4gICAgeyBzdGF0ZV9jdXJyZW50ID0gV2ViV29ya2VyOyBzdGF0ZV9ydW50aW1lcyA9IFsgV2ViV29ya2VyOyBFbWJlZGRlZCBdIH1cblxubGV0IGNyZWF0ZV9tYW5hZ2VyIH5pc19uZXcgcHJvamVjdF9pZCA9XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zdGF0ZV9jdXJyZW50IHdpdGhcbiAgfCBXZWJXb3JrZXIgLT5cbiAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggZmFsc2UgaW5cbiAgICBMd3QucmV0dXJuXG4gICAgICAoUmVzdWx0X3V0aWwub2sgKG5ldyBXZWJfd29ya2VyX2FwaS5tYW5hZ2VyICgpIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpKVxuICB8IEVtYmVkZGVkIC0+XG4gICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIGZhbHNlIGluXG4gICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKG5ldyBlbWJlZGRlZCAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSlcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCB1cmwgfSAtPlxuICAgIGxldCB2ZXJzaW9uX3VybCA6IHN0cmluZyA9IEZvcm1hdC5zcHJpbnRmIFwiJXMvdjJcIiB1cmwgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwic2V0X3J1bnRpbWVfdXJsOiAlc1wiIHZlcnNpb25fdXJsKSlcbiAgICBpblxuICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5wZXJmb3JtX3Jhd1xuICAgICAgfnJlc3BvbnNlX3R5cGU6WG1sSHR0cFJlcXVlc3QuVGV4dCB2ZXJzaW9uX3VybFxuICAgID4+PSBmdW4gZnJhbWUgLT5cbiAgICBsZXQgaXNfdmFsaWRfc2VydmVyIDogYm9vbCA9XG4gICAgICBmcmFtZS5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29kZSA9IDIwMFxuICAgIGluXG4gICAgaWYgaXNfdmFsaWRfc2VydmVyIHRoZW4gKFxuICAgICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIHRydWUgaW5cbiAgICAgIGxldCBtYW5hZ2VyID0gbmV3IFJlc3RfYXBpLm1hbmFnZXIgfnRpbWVvdXQ6Tm9uZSB+dXJsIH5wcm9qZWN0X2lkIGluXG4gICAgICAoaWYgaXNfbmV3IHRoZW5cbiAgICAgICAgIG1hbmFnZXIjcHJvamVjdF9jcmVhdGVcbiAgICAgICAgICAgeyBBcGlfdHlwZXNfai5wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkID0gcHJvamVjdF9pZCB9XG4gICAgICAgZWxzZVxuICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChtYW5hZ2VyIDo+IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSkpXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIkJhZCBSZXNwb25zZSAlZCBmcm9tICVzIFwiXG4gICAgICAgICAgZnJhbWUuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgdXJsXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICApXG4gIHwgUmVtb3RlIHsgbGFiZWw7IHByb3RvY29sID0gQ0xJIGNsaSB9IC0+XG4gICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKFwic2V0X3J1bnRpbWVfdXJsOiBcIiBeIGNsaS51cmwpKSBpblxuICAgICh0cnlcbiAgICAgICBsZXQganNfbm9kZV9ydW50aW1lID0gbmV3IEpzTm9kZS5tYW5hZ2VyIGNsaS5jb21tYW5kIGNsaS5hcmdzIGluXG4gICAgICAgaWYganNfbm9kZV9ydW50aW1lI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcInNldF9ydW50aW1lX3VybDpzdWNlc3NcIikgaW5cbiAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCBmYWxzZSBpblxuICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKGpzX25vZGVfcnVudGltZSA6PiBBcGkuY29uY3JldGVfbWFuYWdlcikpXG4gICAgICAgKSBlbHNlIChcbiAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwic2V0X3J1bnRpbWVfdXJsOmZhaWx1cmVcIikgaW5cbiAgICAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIkNvdWxkIG5vdCBzdGFydCBjbGkgcnVudGltZSAlcyBcIiBsYWJlbFxuICAgICAgICAgaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgICAgKVxuICAgICB3aXRoIEZhaWx1cmUgeCAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgeCkpXG5cbmxldCBzZXRfc3BlYyBydW50aW1lID1cbiAgbGV0IGN1cnJlbnRfc3RhdGUgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIHNldF9zdGF0ZVxuICAgIHsgc3RhdGVfY3VycmVudCA9IHJ1bnRpbWU7IHN0YXRlX3J1bnRpbWVzID0gY3VycmVudF9zdGF0ZS5zdGF0ZV9ydW50aW1lcyB9XG5cbmxldCBjcmVhdGVfc3BlYyB+bG9hZCAoaWQgOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0ID1cbiAgbWF0Y2ggcmVhZF9zcGVjIGlkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZiBcIkZhaWxlZCB0byBjcmVhdGUgc3BlYzogY291bGQgbm90IHBhcnNlIGlkZW50aWZpZXIgJXNcIiBpZFxuICAgIGluXG4gICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZ1xuICB8IFNvbWUgcnVudGltZSAtPlxuICAgIGxldCBjdXJyZW50X3N0YXRlID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBub3QgKExpc3QubWVtIHJ1bnRpbWUgY3VycmVudF9zdGF0ZS5zdGF0ZV9ydW50aW1lcykgdGhlblxuICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzdGF0ZV9jdXJyZW50ID0gY3VycmVudF9zdGF0ZS5zdGF0ZV9jdXJyZW50O1xuICAgICAgICAgICAgc3RhdGVfcnVudGltZXMgPSBydW50aW1lIDo6IGN1cnJlbnRfc3RhdGUuc3RhdGVfcnVudGltZXM7XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gaWYgbG9hZCB0aGVuIHNldF9zcGVjIHJ1bnRpbWUgaW5cbiAgICBSZXN1bHRfdXRpbC5vayAoKVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gc3RhdGUgLT5cbiAgICAgIHtcbiAgICAgICAgbW9kZWxfY3VycmVudCA9IHN0YXRlLnN0YXRlX2N1cnJlbnQ7XG4gICAgICAgIG1vZGVsX3J1bnRpbWVzID0gc3RhdGUuc3RhdGVfcnVudGltZXM7XG4gICAgICB9KVxuICAgIHN0YXRlXG5cbigqIHJ1biBvbiBhcHBsaWNhdGlvbiBpbml0ICopXG5sZXQgaW5pdCAoKSA9XG4gICgqIGdldCB1cmwgb2YgaG9zdCAqKVxuICBsZXQgaG9zdHMgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJob3N0XCIgaW5cbiAgbGV0IHJlYyBhZGRfdXJscyB1cmxzIGxvYWQgPVxuICAgIG1hdGNoIHVybHMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHVybCA6OiB1cmxzIC0+XG4gICAgICAobWF0Y2ggY3JlYXRlX3NwZWMgfmxvYWQgdXJsIHdpdGhcbiAgICAgIHwgeyBSZXN1bHRfdXRpbC52YWx1ZSA9IFJlc3VsdC5PayAoKTsgXyB9IC0+IGFkZF91cmxzIHVybHMgZmFsc2VcbiAgICAgIHwgeyBSZXN1bHRfdXRpbC52YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gLT4gYWRkX3VybHMgdXJscyBsb2FkKVxuICBpblxuICBsZXQgKCkgPSBhZGRfdXJscyBob3N0cyB0cnVlIGluXG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zdGF0ZV9jdXJyZW50IHdpdGhcbiAgfCBSZW1vdGUgeyBwcm90b2NvbCA9IENMSSBfOyBfIH0gfCBXZWJXb3JrZXIgfCBFbWJlZGRlZCAtPiBMd3QucmV0dXJuX25pbFxuICB8IFJlbW90ZSB7IGxhYmVsID0gXzsgcHJvdG9jb2wgPSBIVFRQIHVybCB9IC0+XG4gICAgbGV0IHZlcnNpb25fdXJsIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCIlcy92MlwiIHVybCBpblxuICAgIGxldCAoKSA9XG4gICAgICBDb21tb24uZGVidWdcbiAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJzZXRfcnVudGltZV91cmw6ICVzXCIgdmVyc2lvbl91cmwpKVxuICAgIGluXG4gICAgSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LnBlcmZvcm1fcmF3XG4gICAgICB+cmVzcG9uc2VfdHlwZTpYbWxIdHRwUmVxdWVzdC5UZXh0IHZlcnNpb25fdXJsXG4gICAgPj49IGZ1biBmcmFtZSAtPlxuICAgIGxldCBpc192YWxpZF9zZXJ2ZXIgOiBib29sID1cbiAgICAgIGZyYW1lLkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlID0gMjAwXG4gICAgaW5cbiAgICBpZiBpc192YWxpZF9zZXJ2ZXIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggdHJ1ZSBpblxuICAgICAgbGV0IG1hbmFnZXIgPSBuZXcgUmVzdF9hcGkubWFuYWdlciB+dGltZW91dDpOb25lIH51cmwgfnByb2plY3RfaWQ6XCJcIiBpblxuICAgICAgbWFuYWdlciNwcm9qZWN0X2NhdGFsb2dcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biBwcm9qZWN0cyAtPiBMd3QucmV0dXJuIHByb2plY3RzKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX25pbClcbiAgICApIGVsc2VcbiAgICAgIEx3dC5yZXR1cm5fbmlsXG5cbigqIHRvIHN5bmMgc3RhdGUgb2YgYXBwbGljYXRpb24gd2l0aCBydW50aW1lICopXG5sZXQgc3luYyAoKSA9IEx3dC5yZXR1cm5fdW5pdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHBsb3RQZXJpb2RQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFBsb3RQZXJpb2RcIlxubGV0IHBhdXNlQ29uZGl0aW9uUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBQYXVzZUNvbmRpdGlvblwiXG5sZXQgc2VlZFBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwRGVmYXVsdFNlZWRcIlxubGV0IHN0b3JlVHJhY2VQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFN0b3JlVHJhY2VcIlxubGV0IHNob3dEZWFkUnVsZXNQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcFNob3dEZWFkUnVsZXNcIlxubGV0IHNob3dEZWFkQWdlbnRzUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBTaG93RGVhZEFnZW50c1wiXG5cbmxldCBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkID1cbiAgSnMuc3RyaW5nIFwia2FwcGFwcFNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uXCJcblxudHlwZSBwYXJhbWV0ZXJzID0ge1xuICBwbG90X3BlcmlvZDogZmxvYXQ7XG4gIHBhdXNlX2NvbmRpdGlvbjogc3RyaW5nO1xuICBzZWVkOiBpbnQgb3B0aW9uO1xuICBzdG9yZV90cmFjZTogYm9vbDtcbiAgc2hvd19kZWFkX3J1bGVzOiBib29sO1xuICBzaG93X2RlYWRfYWdlbnRzOiBib29sO1xuICBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uczogYm9vbDtcbn1cblxudHlwZSBhX3Byb2plY3QgPSB7XG4gIHByb2plY3RfaWQ6IHN0cmluZztcbiAgcHJvamVjdF9pc19jb21wdXRpbmc6IGJvb2wgUmVhY3QuUy50O1xuICBwcm9qZWN0X3dhdGNoZXJfY2FuY2VsOiBib29sIHJlZjtcbiAgcHJvamVjdF9tYW5hZ2VyOiBBcGkuY29uY3JldGVfbWFuYWdlcjtcbn1cblxudHlwZSBzdGF0ZSA9IHtcbiAgcHJvamVjdF9jdXJyZW50OiBhX3Byb2plY3Qgb3B0aW9uO1xuICBwcm9qZWN0X2NhdGFsb2c6IGFfcHJvamVjdCBsaXN0O1xuICBwcm9qZWN0X3ZlcnNpb246IGludDtcbiAgZGVmYXVsdF9wYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzO1xuICBwcm9qZWN0X3BhcmFtZXRlcnM6IHBhcmFtZXRlcnMgTW9kcy5TdHJpbmdNYXAudDtcbn1cblxudHlwZSBwcm9qZWN0X21vZGVsID0ge1xuICBtb2RlbF9wcm9qZWN0X2lkOiBzdHJpbmc7XG4gIG1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nOiBib29sIFJlYWN0LlMudDtcbn1cblxudHlwZSBtb2RlbCA9IHtcbiAgbW9kZWxfY3VycmVudF9pZDogc3RyaW5nIG9wdGlvbjtcbiAgbW9kZWxfY2F0YWxvZzogcHJvamVjdF9tb2RlbCBsaXN0O1xuICBtb2RlbF9wcm9qZWN0X3ZlcnNpb246IGludDtcbiAgbW9kZWxfcGFyYW1ldGVyczogcGFyYW1ldGVycztcbn1cblxubGV0IHByb2plY3RfZXF1YWwgYSBiID0gYS5wcm9qZWN0X2lkID0gYi5wcm9qZWN0X2lkXG5cbmxldCBjYXRhbG9nX2VxdWFsIHggeSA9XG4gIHRyeSBMaXN0LmZvcl9hbGwyIHByb2plY3RfZXF1YWwgeCB5IHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlXG5cbmxldCBzdGF0ZV9lcXVhbCBhIGIgPVxuICBPcHRpb25fdXRpbC5lcXVhbCBwcm9qZWN0X2VxdWFsIGEucHJvamVjdF9jdXJyZW50IGIucHJvamVjdF9jdXJyZW50XG4gICYmIGEucHJvamVjdF92ZXJzaW9uID0gYi5wcm9qZWN0X3ZlcnNpb25cbiAgJiYgYS5kZWZhdWx0X3BhcmFtZXRlcnMgPSBiLmRlZmF1bHRfcGFyYW1ldGVyc1xuICAmJiBNb2RzLlN0cmluZ01hcC5lcXVhbFxuICAgICAgIChmdW4geCB5IC0+IGNvbXBhcmUgeCB5ID0gMClcbiAgICAgICBhLnByb2plY3RfcGFyYW1ldGVycyBiLnByb2plY3RfcGFyYW1ldGVyc1xuICAmJiBjYXRhbG9nX2VxdWFsIGEucHJvamVjdF9jYXRhbG9nIGIucHJvamVjdF9jYXRhbG9nXG5cbmxldCBtb2RlbF9lcXVhbCBhIGIgPVxuICBPcHRpb25fdXRpbC5lcXVhbFxuICAgIChmdW4geCB5IC0+IFN0cmluZy5jb21wYXJlIHggeSA9IDApXG4gICAgYS5tb2RlbF9jdXJyZW50X2lkIGIubW9kZWxfY3VycmVudF9pZFxuICAmJiAodHJ5XG4gICAgICAgIExpc3QuZm9yX2FsbDJcbiAgICAgICAgICAoZnVuIHggeSAtPiB4Lm1vZGVsX3Byb2plY3RfaWQgPSB5Lm1vZGVsX3Byb2plY3RfaWQpXG4gICAgICAgICAgYS5tb2RlbF9jYXRhbG9nIGIubW9kZWxfY2F0YWxvZ1xuICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2UpXG4gICYmIGEubW9kZWxfcHJvamVjdF92ZXJzaW9uID0gYi5tb2RlbF9wcm9qZWN0X3ZlcnNpb25cbiAgJiYgYS5tb2RlbF9wYXJhbWV0ZXJzID0gYi5tb2RlbF9wYXJhbWV0ZXJzXG5cbmxldCBpbml0X2RlZmF1bHRfcGFyYW1ldGVycyA9XG4gIHtcbiAgICBwbG90X3BlcmlvZCA9IDEuO1xuICAgIHBhdXNlX2NvbmRpdGlvbiA9IFwiW2ZhbHNlXVwiO1xuICAgIHNlZWQgPSBOb25lO1xuICAgIHN0b3JlX3RyYWNlID0gZmFsc2U7XG4gICAgc2hvd19kZWFkX3J1bGVzID0gdHJ1ZTtcbiAgICBzaG93X2RlYWRfYWdlbnRzID0gdHJ1ZTtcbiAgICBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9IGZhbHNlO1xuICB9XG5cbmxldCBpbml0X3N0YXRlID1cbiAge1xuICAgIHByb2plY3RfY3VycmVudCA9IE5vbmU7XG4gICAgcHJvamVjdF9jYXRhbG9nID0gW107XG4gICAgcHJvamVjdF92ZXJzaW9uID0gLTE7XG4gICAgZGVmYXVsdF9wYXJhbWV0ZXJzID0gaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgcHJvamVjdF9wYXJhbWV0ZXJzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIH1cblxubGV0IHN0YXRlLCBzZXRfc3RhdGUgPSBSZWFjdC5TLmNyZWF0ZSB+ZXE6c3RhdGVfZXF1YWwgaW5pdF9zdGF0ZVxuXG5sZXQgdXBkYXRlX3BhcmFtZXRlcnMgaGFuZGxlciA9XG4gIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgbGV0IGRlZmF1bHRfcGFyYW1ldGVycywgcHJvamVjdF9wYXJhbWV0ZXJzID1cbiAgICBtYXRjaCBzdC5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBoYW5kbGVyIHN0LmRlZmF1bHRfcGFyYW1ldGVycywgc3QucHJvamVjdF9wYXJhbWV0ZXJzXG4gICAgfCBTb21lIHByb2ogLT5cbiAgICAgICggc3QuZGVmYXVsdF9wYXJhbWV0ZXJzLFxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgICAgKGhhbmRsZXJcbiAgICAgICAgICAgICAoTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0LmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAgICAgICBzdC5wcm9qZWN0X3BhcmFtZXRlcnMpKVxuICAgICAgICAgIHN0LnByb2plY3RfcGFyYW1ldGVycyApXG4gIGluXG4gIHNldF9zdGF0ZVxuICAgIHtcbiAgICAgIHByb2plY3RfY3VycmVudCA9IHN0LnByb2plY3RfY3VycmVudDtcbiAgICAgIHByb2plY3RfY2F0YWxvZyA9IHN0LnByb2plY3RfY2F0YWxvZztcbiAgICAgIHByb2plY3RfdmVyc2lvbiA9IHN0LnByb2plY3RfdmVyc2lvbjtcbiAgICAgIGRlZmF1bHRfcGFyYW1ldGVycztcbiAgICAgIHByb2plY3RfcGFyYW1ldGVycztcbiAgICB9XG5cbmxldCBzZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpID1cbiAgbGV0IHN0ID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICBsZXQgcGEgPVxuICAgIG1hdGNoIHN0LnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHN0LmRlZmF1bHRfcGFyYW1ldGVyc1xuICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgc3QuZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2oucHJvamVjdF9pZFxuICAgICAgICBzdC5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBKcy5PcHRkZWYuaXRlciBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UgKGZ1biBscyAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxzIyNzZXRJdGVtIHBsb3RQZXJpb2RQYXJhbUlkXG4gICAgICAgICAgICAoSnMuc3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgcGEucGxvdF9wZXJpb2QpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxzIyNzZXRJdGVtIHBhdXNlQ29uZGl0aW9uUGFyYW1JZCAoSnMuc3RyaW5nIHBhLnBhdXNlX2NvbmRpdGlvbilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwYS5zZWVkIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbHMjI3JlbW92ZUl0ZW0gc2VlZFBhcmFtSWRcbiAgICAgICAgICB8IFNvbWUgdmEgLT4gbHMjI3NldEl0ZW0gc2VlZFBhcmFtSWQgKEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCB2YSkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcGEuc3RvcmVfdHJhY2UgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc3RvcmVUcmFjZVBhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjcmVtb3ZlSXRlbSBzdG9yZVRyYWNlUGFyYW1JZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnNob3dfZGVhZF9ydWxlcyB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZFJ1bGVzUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkIChKcy5zdHJpbmcgXCJmYWxzZVwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnNob3dfZGVhZF9hZ2VudHMgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRBZ2VudHNQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRBZ2VudHNQYXJhbUlkIChKcy5zdHJpbmcgXCJmYWxzZVwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnNob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjcmVtb3ZlSXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkXG4gICAgICAgIGluXG4gICAgICAgICgpKVxuICBpblxuICBzZXRfc3RhdGVcbiAgICB7XG4gICAgICBwcm9qZWN0X2N1cnJlbnQgPSBzdC5wcm9qZWN0X2N1cnJlbnQ7XG4gICAgICBwcm9qZWN0X2NhdGFsb2cgPSBzdC5wcm9qZWN0X2NhdGFsb2c7XG4gICAgICBwcm9qZWN0X3ZlcnNpb24gPSBzdC5wcm9qZWN0X3ZlcnNpb247XG4gICAgICBwcm9qZWN0X3BhcmFtZXRlcnMgPSBzdC5wcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBwYTtcbiAgICB9XG5cbmxldCBzZXRfcGxvdF9wZXJpb2QgcGxvdF9wZXJpb2QgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBwbG90X3BlcmlvZCB9KVxuXG5sZXQgc2V0X3BhdXNlX2NvbmRpdGlvbiBwYXVzZV9jb25kaXRpb24gPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBwYXVzZV9jb25kaXRpb24gfSlcblxubGV0IHNldF9zZWVkIHNlZWQgPSB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzZWVkIH0pXG5cbmxldCBzZXRfc3RvcmVfdHJhY2Ugc3RvcmVfdHJhY2UgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzdG9yZV90cmFjZSB9KVxuXG5sZXQgc2V0X3Nob3dfZGVhZF9ydWxlcyBzaG93X2RlYWRfcnVsZXMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzaG93X2RlYWRfcnVsZXMgfSlcblxubGV0IHNldF9zaG93X2RlYWRfYWdlbnRzIHNob3dfZGVhZF9hZ2VudHMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+IHsgcGFyYW0gd2l0aCBzaG93X2RlYWRfYWdlbnRzIH0pXG5cbmxldCBzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gIHVwZGF0ZV9wYXJhbWV0ZXJzIChmdW4gcGFyYW0gLT5cbiAgICAgIHsgcGFyYW0gd2l0aCBzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyB9KVxuXG5sZXQgdXBkYXRlX3N0YXRlIG1lIHByb2plY3RfY2F0YWxvZyBkZWZhdWx0X3BhcmFtZXRlcnMgcHJvamVjdF9wYXJhbWV0ZXJzID1cbiAgbWUucHJvamVjdF9tYW5hZ2VyI3Byb2plY3RfcGFyc2UgfnBhdHRlcm5TaGFyaW5nOlBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJuc1xuICAgIFtdXG4gID4+PVxuICBsZXQgKCkgPVxuICAgIHNldF9zdGF0ZVxuICAgICAge1xuICAgICAgICBwcm9qZWN0X2N1cnJlbnQgPSBTb21lIG1lO1xuICAgICAgICBwcm9qZWN0X2NhdGFsb2c7XG4gICAgICAgIGRlZmF1bHRfcGFyYW1ldGVycztcbiAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgICAgICBwcm9qZWN0X3ZlcnNpb24gPSAxO1xuICAgICAgfVxuICBpblxuICBmdW4gb3V0IC0+XG4gICAgbGV0IHN0ID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBzZXRfc3RhdGVcbiAgICAgICAge1xuICAgICAgICAgIHN0IHdpdGhcbiAgICAgICAgICBwcm9qZWN0X2N1cnJlbnQgPSBTb21lIG1lO1xuICAgICAgICAgIHByb2plY3RfdmVyc2lvbiA9IHN0LnByb2plY3RfdmVyc2lvbiArIDE7XG4gICAgICAgIH1cbiAgICBpblxuICAgIEx3dC5yZXR1cm4gb3V0XG5cbmxldCBjb21wdXRpbmdfd2F0Y2hlciBtYW5hZ2VyIHNldHRlciA9XG4gIGxldCBkZWxheSA9IDEuIGluXG4gIGxldCBjYW5jZWxsZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IHJlYyBsb29wICgpID1cbiAgICBsZXQgKCkgPSBzZXR0ZXIgbWFuYWdlciNpc19jb21wdXRpbmcgaW5cbiAgICBpZiAhY2FuY2VsbGVkIHRoZW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVsc2VcbiAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgZGVsYXkgPj49IGxvb3BcbiAgaW5cbiAgbGV0ICgpID0gQ29tbW9uLmFzeW5jIF9fTE9DX18gbG9vcCBpblxuICBjYW5jZWxsZWRcblxubGV0IGFkZF9wcm9qZWN0IGlzX25ldyBwcm9qZWN0X2lkIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgbGV0IHN0YXRlX3ZhID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAoKiBUT0RPOiBJcyBpdCBvayB0byBnZXQgdGhlIHZhbHVlIGxpa2UgdGhpcyA/ICopXG4gIGxldCBjYXRhbG9nID0gc3RhdGVfdmEucHJvamVjdF9jYXRhbG9nIGluXG4gICh0cnlcbiAgICAgTHd0LnJldHVyblxuICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICggTGlzdC5maW5kIChmdW4geCAtPiB4LnByb2plY3RfaWQgPSBwcm9qZWN0X2lkKSBjYXRhbG9nLFxuICAgICAgICAgICAgY2F0YWxvZyxcbiAgICAgICAgICAgIHN0YXRlX3ZhLnByb2plY3RfcGFyYW1ldGVycyApKVxuICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgU3RhdGVfcnVudGltZS5jcmVhdGVfbWFuYWdlciB+aXNfbmV3IHByb2plY3RfaWRcbiAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHByb2plY3RfbWFuYWdlciAtPlxuICAgICAgICAgICAgIGxldCBwcm9qZWN0X2lzX2NvbXB1dGluZywgc2V0X2NvbXB1dGVzID0gUmVhY3QuUy5jcmVhdGUgdHJ1ZSBpblxuICAgICAgICAgICAgIGxldCBwcm9qZWN0X3dhdGNoZXJfY2FuY2VsID1cbiAgICAgICAgICAgICAgIGNvbXB1dGluZ193YXRjaGVyIHByb2plY3RfbWFuYWdlciAoc2V0X2NvbXB1dGVzID9zdGVwOk5vbmUpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgbWUgPVxuICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X2lkO1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X21hbmFnZXI7XG4gICAgICAgICAgICAgICAgIHByb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X3dhdGNoZXJfY2FuY2VsO1xuICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IGRlZmF1bHRfcGFyYW1ldGVycyA9IHN0YXRlX3ZhLmRlZmF1bHRfcGFyYW1ldGVycyBpblxuICAgICAgICAgICAgIGxldCBwYXJhbXMgPVxuICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHByb2plY3RfaWQgZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgIHN0YXRlX3ZhLnByb2plY3RfcGFyYW1ldGVyc1xuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKG1lLCBtZSA6OiBjYXRhbG9nLCBwYXJhbXMpKSkpXG4gID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAobWUsIGNhdGFsb2csIHBhcmFtcykgLT5cbiAgICAgICAgICB1cGRhdGVfc3RhdGUgbWUgY2F0YWxvZyBzdGF0ZV92YS5kZWZhdWx0X3BhcmFtZXRlcnMgcGFyYW1zKVxuXG5sZXQgY3JlYXRlX3Byb2plY3QgcHJvamVjdF9pZCA9IGFkZF9wcm9qZWN0IHRydWUgcHJvamVjdF9pZFxubGV0IHNldF9wcm9qZWN0IHByb2plY3RfaWQgPSBhZGRfcHJvamVjdCBmYWxzZSBwcm9qZWN0X2lkXG5cbmxldCBkdW1teV9tb2RlbCA9XG4gIHtcbiAgICBtb2RlbF9jdXJyZW50X2lkID0gTm9uZTtcbiAgICBtb2RlbF9jYXRhbG9nID0gW107XG4gICAgbW9kZWxfcHJvamVjdF92ZXJzaW9uID0gLTE7XG4gICAgbW9kZWxfcGFyYW1ldGVycyA9IGluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICB9XG5cbmxldCBtb2RlbCA6IG1vZGVsIFJlYWN0LnNpZ25hbCA9XG4gIFJlYWN0LlMubWFwIH5lcTptb2RlbF9lcXVhbFxuICAgIChmdW4gc3RhdGUgLT5cbiAgICAgIGxldCBtb2RlbF9jYXRhbG9nID1cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIHAgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZCA9IHAucHJvamVjdF9pZDtcbiAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmcgPSBwLnByb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICBzdGF0ZS5wcm9qZWN0X2NhdGFsb2dcbiAgICAgIGluXG4gICAgICBsZXQgbW9kZWxfcGFyYW1ldGVycyA9XG4gICAgICAgIG1hdGNoIHN0YXRlLnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzdGF0ZS5kZWZhdWx0X3BhcmFtZXRlcnNcbiAgICAgICAgfCBTb21lIHByb2ogLT5cbiAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgc3RhdGUuZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2oucHJvamVjdF9pZFxuICAgICAgICAgICAgc3RhdGUucHJvamVjdF9wYXJhbWV0ZXJzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBtb2RlbF9jdXJyZW50X2lkID1cbiAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biB4IC0+IHgucHJvamVjdF9pZCkgc3RhdGUucHJvamVjdF9jdXJyZW50O1xuICAgICAgICBtb2RlbF9jYXRhbG9nO1xuICAgICAgICBtb2RlbF9wcm9qZWN0X3ZlcnNpb24gPSBzdGF0ZS5wcm9qZWN0X3ZlcnNpb247XG4gICAgICAgIG1vZGVsX3BhcmFtZXRlcnM7XG4gICAgICB9KVxuICAgIHN0YXRlXG5cbmxldCBzeW5jICgpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnByb2plY3RfY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTb21lIGN1cnJlbnQgLT5cbiAgICBjdXJyZW50LnByb2plY3RfbWFuYWdlciNwcm9qZWN0X3BhcnNlXG4gICAgICB+cGF0dGVyblNoYXJpbmc6UGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zIFtdXG4gICAgPj49IGZ1biBvdXQgLT5cbiAgICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gICAgbGV0ICgpID0gc2V0X3N0YXRlIHsgc3Qgd2l0aCBwcm9qZWN0X3ZlcnNpb24gPSBzdWNjIHN0LnByb2plY3RfdmVyc2lvbiB9IGluXG4gICAgTHd0LnJldHVybiBvdXRcblxubGV0IHJlbW92ZV9maWxlcyBtYW5hZ2VyID1cbiAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICBMd3RfbGlzdC5pdGVyX3BcbiAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfZGVsZXRlIG0uS2ZpbGVzLmlkID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgPj49IGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbmxldCByZW1vdmVfcHJvamVjdCBwcm9qZWN0X2lkID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICB0cnlcbiAgICBsZXQgY3VycmVudCA9XG4gICAgICBMaXN0LmZpbmQgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA9IHByb2plY3RfaWQpIHN0YXRlLnByb2plY3RfY2F0YWxvZ1xuICAgIGluXG4gICAgcmVtb3ZlX2ZpbGVzIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyID4+PSBmdW4gb3V0JyAtPlxuICAgIGxldCAoKSA9IGN1cnJlbnQucHJvamVjdF93YXRjaGVyX2NhbmNlbCA6PSB0cnVlIGluXG4gICAgbGV0IHByb2plY3RfY2F0YWxvZyA9XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuIHggLT4geC5wcm9qZWN0X2lkIDw+IGN1cnJlbnQucHJvamVjdF9pZClcbiAgICAgICAgc3RhdGUucHJvamVjdF9jYXRhbG9nXG4gICAgaW5cbiAgICBsZXQgcHJvamVjdF9jdXJyZW50ID1cbiAgICAgIGlmXG4gICAgICAgIG1hdGNoIHN0YXRlLnByb2plY3RfY3VycmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICB8IFNvbWUgdiAtPiB2LnByb2plY3RfaWQgPSBjdXJyZW50LnByb2plY3RfaWRcbiAgICAgIHRoZW4gKFxuICAgICAgICBtYXRjaCBwcm9qZWN0X2NhdGFsb2cgd2l0aFxuICAgICAgICB8IFtdIC0+IE5vbmVcbiAgICAgICAgfCBoIDo6IF8gLT4gU29tZSBoXG4gICAgICApIGVsc2VcbiAgICAgICAgc3RhdGUucHJvamVjdF9jdXJyZW50XG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc2V0X3N0YXRlXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9qZWN0X2N1cnJlbnQ7XG4gICAgICAgICAgcHJvamVjdF9jYXRhbG9nO1xuICAgICAgICAgIGRlZmF1bHRfcGFyYW1ldGVycyA9IHN0YXRlLmRlZmF1bHRfcGFyYW1ldGVycztcbiAgICAgICAgICBwcm9qZWN0X3BhcmFtZXRlcnMgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAucmVtb3ZlIHByb2plY3RfaWQgc3RhdGUucHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgICAgICAgIHByb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgICAgICB9XG4gICAgaW5cbiAgICBsZXQgKCkgPSBjdXJyZW50LnByb2plY3RfbWFuYWdlciN0ZXJtaW5hdGUgaW5cbiAgICBzeW5jICgpID4+PSBmdW4gb3V0JycgLT5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgb3V0Jzsgb3V0JycgXSlcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBMd3QucmV0dXJuXG4gICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnXG4gICAgICAgICAoXCJQcm9qZWN0IFwiIF4gcHJvamVjdF9pZCBeIFwiIGRvZXMgbm90IGV4aXN0c1wiKSlcblxubGV0IHJlYyBpbml0X3Bsb3RfcGVyaW9kIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogdCAtPlxuICAgICh0cnkgc2V0X3Bsb3RfcGVyaW9kIChmbG9hdF9vZl9zdHJpbmcgaClcbiAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcGFyc2UgaW5pdF9wbG90X3BlcmlvZCAnJXMnXCIgaCBpblxuICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICBpbml0X3Bsb3RfcGVyaW9kIHQpXG5cbmxldCBpbml0X3BhdXNlX2NvbmRpdGlvbiAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3BhdXNlX2NvbmRpdGlvbiBoXG5cbmxldCByZWMgaW5pdF9tb2RlbF9zZWVkIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogdCAtPlxuICAgICh0cnkgc2V0X3Bsb3RfcGVyaW9kIChmbG9hdF9vZl9zdHJpbmcgaClcbiAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcGFyc2UgbW9kZWxfc2VlZCAnJXMnXCIgaCBpblxuICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICBpbml0X21vZGVsX3NlZWQgdClcblxubGV0IGluaXRfc3RvcmVfdHJhY2UgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zdG9yZV90cmFjZSAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0X3Nob3dfZGVhZF9ydWxlcyAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IF8gLT4gc2V0X3Nob3dfZGVhZF9ydWxlcyAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0X3Nob3dfZGVhZF9hZ2VudHMgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zaG93X2RlYWRfYWdlbnRzIChoIDw+IFwiZmFsc2VcIilcblxubGV0IGluaXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0IGV4aXN0aW5nX3Byb2plY3RzIDogdW5pdCBMd3QudCA9XG4gIGxldCBhcmdfcGxvdF9wZXJpb2QgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBwbG90UGVyaW9kUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcInBsb3RfcGVyaW9kXCJcbiAgaW5cbiAgbGV0IGFyZ19wYXVzZV9jb25kaXRpb24gPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBwYXVzZUNvbmRpdGlvblBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJwYXVzZV9jb25kaXRpb25cIlxuICBpblxuICBsZXQgYXJnX21vZGVsX3NlZWQgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzZWVkUGFyYW1JZClcbiAgICAgICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgICAgICAoZnVuIHggLT4gWyBKcy50b19zdHJpbmcgeCBdKSlcbiAgICBpblxuICAgIENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdCBcIm1vZGVsX3NlZWRcIlxuICBpblxuICBsZXQgYXJnX3N0b3JlX3RyYWNlID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc3RvcmVUcmFjZVBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJzdG9yZV90cmFjZVwiXG4gIGluXG4gIGxldCBhcmdfc2hvd19kZWFkX3J1bGVzID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2hvd0RlYWRSdWxlc1BhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJzaG93X2RlYWRfcnVsZXNcIlxuICBpblxuICBsZXQgYXJnX3Nob3dfZGVhZF9hZ2VudHMgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzaG93RGVhZEFnZW50c1BhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJzaG93X2RlYWRfYWdlbnRzXCJcbiAgaW5cbiAgbGV0IGFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNob3dJcnJldmVyc2libGVUcmFuc2l0aW9uc1BhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1wiXG4gIGluXG4gIGxldCAoKSA9IGluaXRfcGxvdF9wZXJpb2QgYXJnX3Bsb3RfcGVyaW9kIGluXG4gIGxldCAoKSA9IGluaXRfcGF1c2VfY29uZGl0aW9uIGFyZ19wYXVzZV9jb25kaXRpb24gaW5cbiAgbGV0ICgpID0gaW5pdF9tb2RlbF9zZWVkIGFyZ19tb2RlbF9zZWVkIGluXG4gIGxldCAoKSA9IGluaXRfc3RvcmVfdHJhY2UgYXJnX3N0b3JlX3RyYWNlIGluXG4gIGxldCAoKSA9IGluaXRfc2hvd19kZWFkX3J1bGVzIGFyZ19zaG93X2RlYWRfcnVsZXMgaW5cbiAgbGV0ICgpID0gaW5pdF9zaG93X2RlYWRfYWdlbnRzIGFyZ19zaG93X2RlYWRfYWdlbnRzIGluXG4gIGxldCAoKSA9XG4gICAgaW5pdF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgYXJnX3Nob3dfaXJyZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gIGluXG5cbiAgbGV0IHByb2plY3RzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0OlsgXCJkZWZhdWx0XCIgXSBcInByb2plY3RcIiBpblxuICBsZXQgcmVjIGFkZF9wcm9qZWN0cyBwcm9qZWN0cyA6IHVuaXQgTHd0LnQgPVxuICAgIG1hdGNoIHByb2plY3RzIHdpdGhcbiAgICB8IFtdIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgcHJvamVjdCA6OiBwcm9qZWN0cyAtPlxuICAgICAgYWRkX3Byb2plY3RcbiAgICAgICAgKExpc3QuZm9yX2FsbCAoZnVuIHggLT4geCA8PiBwcm9qZWN0KSBleGlzdGluZ19wcm9qZWN0cylcbiAgICAgICAgcHJvamVjdFxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuICgpIC0+IGFkZF9wcm9qZWN0cyBwcm9qZWN0cylcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJjcmVhdGluZyBwcm9qZWN0ICVzIGVycm9yIEBbJWFAXVwiIHByb2plY3RcbiAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uZGVidWdcbiAgICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiU3RhdGVfcHJvamVjdC5pbml0IDIgOiAlc1wiIG1zZykpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGFkZF9wcm9qZWN0cyBwcm9qZWN0cylcbiAgaW5cbiAgYWRkX3Byb2plY3RzIGV4aXN0aW5nX3Byb2plY3RzID4+PSBmdW4gKCkgLT4gYWRkX3Byb2plY3RzIHByb2plY3RzXG5cbmxldCBldmFsX3dpdGhfcHJvamVjdCA6XG4gICAgICAnYS5cbiAgICAgIGxhYmVsOnN0cmluZyAtPlxuICAgICAgKEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQpIC0+XG4gICAgICAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiBmdW4gfmxhYmVsIGhhbmRsZXIgLT5cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnByb2plY3RfY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgJXMgZHVlIHRvIHVuYXZhaWxhYmxlIHByb2plY3QuXCIgbGFiZWxcbiAgICBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gIHwgU29tZSBjdXJyZW50IC0+IGhhbmRsZXIgY3VycmVudC5wcm9qZWN0X21hbmFnZXJcblxubGV0IG9uX3Byb2plY3RfY2hhbmdlX2FzeW5jID9lcSB+b24gPyhvdGhlcnNfZXEgPSAoID0gKSkgaW5pdF9vdGhlcnMgb3RoZXJzXG4gICAgZGVmYXVsdCBoYW5kbGVyID1cbiAgbGV0IGVxX3BhaXIgPSBNb2RzLnBhaXJfZXF1YWwgc3RhdGVfZXF1YWwgb3RoZXJzX2VxIGluXG4gIFJlYWN0LlMuaG9sZCA/ZXEgZGVmYXVsdFxuICAgIChMd3RfcmVhY3QuRS5tYXBfcFxuICAgICAgIChmdW4gKHN0LCBvdGgpIC0+XG4gICAgICAgICBtYXRjaCBzdC5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICAgfCBOb25lIC0+IEx3dC5yZXR1cm4gZGVmYXVsdFxuICAgICAgICAgfCBTb21lIGN1cnJlbnQgLT4gaGFuZGxlciBjdXJyZW50LnByb2plY3RfbWFuYWdlciBvdGgpXG4gICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgIChSZWFjdC5TLm9uIH5lcTplcV9wYWlyIG9uIChpbml0X3N0YXRlLCBpbml0X290aGVycylcbiAgICAgICAgICAgICAoUmVhY3QuUy5QYWlyLnBhaXIgfmVxOmVxX3BhaXIgc3RhdGUgb3RoZXJzKSkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBzbG90ID0geyBsb2NhbDogc3RyaW5nIG9wdGlvbjsgbmFtZTogc3RyaW5nIH1cbnR5cGUgYWN0aXZlID0geyByYW5rOiBpbnQ7IGN1cnNvcl9wb3M6IExvYy5wb3NpdGlvbjsgb3V0X29mX3N5bmM6IGJvb2wgfVxudHlwZSBtb2RlbCA9IHsgY3VycmVudDogYWN0aXZlIG9wdGlvbjsgZGlyZWN0b3J5OiBzbG90IE1vZHMuSW50TWFwLnQgfVxuXG5sZXQgZHVtbXlfY3Vyc29yX3BvcyA9IHsgTG9jLmxpbmUgPSAtMTsgTG9jLmNociA9IDAgfVxubGV0IGJsYW5rX3N0YXRlID0geyBjdXJyZW50ID0gTm9uZTsgZGlyZWN0b3J5ID0gTW9kcy5JbnRNYXAuZW1wdHkgfVxubGV0IG1vZGVsLCBzZXRfZGlyZWN0b3J5X3N0YXRlID0gUmVhY3QuUy5jcmVhdGUgYmxhbmtfc3RhdGVcblxudHlwZSByZWZyZXNoID0geyBmaWxlbmFtZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmc7IGxpbmU6IGludCBvcHRpb24gfVxuXG5sZXQgcmVmcmVzaF9maWxlX2hvb2sgPSBIb29rZWQuRS5jcmVhdGUgKClcblxubGV0IGN1cnJlbnRfZmlsZW5hbWUgPVxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gbSAtPlxuICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgIChmdW4geyBuYW1lOyBfIH0gLT4gbmFtZSlcbiAgICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX29wdGlvbiB4LnJhbmsgbS5kaXJlY3RvcnkpKVxuICAgICAgICBtLmN1cnJlbnQpXG4gICAgbW9kZWxcblxubGV0IHdpdGhfY3VycmVudF9wb3MgP2VxID8ob24gPSBSZWFjdC5TLmNvbnN0IHRydWUpIGYgZGVmYXVsdCA9XG4gIFJlYWN0LlMuZm1hcCA/ZXFcbiAgICAoZnVuIG0gLT5cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgKGZ1biB7IG5hbWU7IF8gfSAtPiBmIG5hbWUgeC5jdXJzb3JfcG9zKVxuICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgucmFuayBtLmRpcmVjdG9yeSkpXG4gICAgICAgIG0uY3VycmVudClcbiAgICBkZWZhdWx0XG4gICAgKFJlYWN0LlMub24gb24gYmxhbmtfc3RhdGUgbW9kZWwpXG5cbmxldCB3aXRoX2N1cnJlbnRfZmlsZSBmID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCBzdGF0ZS5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9IFwiQXR0ZW1wdCB0byBmZXRjaCBmaWxlIHdpdGggbm9uZSBzZWxlY3RlZC5cIiBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gIHwgU29tZSBhY3RpdmUgLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYWN0aXZlLnJhbmsgc3RhdGUuZGlyZWN0b3J5IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkludGVybmFsIGluY29uc2lzdGVudGN5OiBObyBmaWxlIGF0IHNlbGVjdGVkIHJhbmsuXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgIHwgU29tZSB4IC0+IGYgc3RhdGUgYWN0aXZlIHgpXG5cbmxldCBnZXRfZmlsZSAoKSA6IChzdHJpbmcgKiBzdHJpbmcpIEFwaS5yZXN1bHQgTHd0LnQgPVxuICB3aXRoX2N1cnJlbnRfZmlsZSAoZnVuIF9zdGF0ZSBhY3RpdmUgLT4gZnVuY3Rpb25cbiAgICB8IHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gLT5cbiAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiZ2V0X2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICBtYW5hZ2VyI2ZpbGVfZ2V0IG5hbWVcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHRleHQsIHJhbmsnKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgYWN0aXZlLnJhbmsgPSByYW5rJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICh0ZXh0LCBuYW1lKSlcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JfbXNnID0gXCJJbmNvbnNpc3RlbmN5IGluIHJhbmsgd2hpbGUgZ2V0X2ZpbGUuXCIgaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICAgICAgICAgICAgICAgICkpKVxuICAgIHwgeyBsb2NhbCA9IFNvbWUgdGV4dDsgbmFtZSB9IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICh0ZXh0LCBuYW1lKSkpXG5cbmxldCBzZW5kX3JlZnJlc2ggKGxpbmUgOiBpbnQgb3B0aW9uKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICgqIG9ubHkgc2VuZCByZWZyZXNoIGlmIHRoZXJlIGlzIGEgY3VycmVudCBmaWxlICopXG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIG1vZGVsKS5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgeyBvdXRfb2Zfc3luYzsgXyB9IC0+XG4gICAgaWYgb3V0X29mX3N5bmMgdGhlblxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnXG4gICAgICAgICAgIFwiRmlsZSB3YXMgbm90IGluIHN5bmMuIFN3aXRjaGluZyBtYXkgbGVhZCB0byBkYXRhIGxvc3QuXCIpXG4gICAgZWxzZVxuICAgICAgZ2V0X2ZpbGUgKClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY29udGVudCwgZmlsZW5hbWUpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBjb250ZW50IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgSG9va2VkLkUuc2VuZCByZWZyZXNoX2ZpbGVfaG9va1xuICAgICAgICAgICAgICAgICAgeyBmaWxlbmFtZTsgY29udGVudDsgbGluZSB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcblxubGV0IHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0IGN1cnJlbnQgY2F0YWxvZyA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbGV0IGRpcmVjdG9yeSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIHsgS2ZpbGVzLnBvc2l0aW9uOyBpZCB9IC0+XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBwb3NpdGlvbiB7IG5hbWUgPSBpZDsgbG9jYWwgPSBOb25lIH0gYWNjKVxuICAgICAgKGlmIHJlc2V0IHRoZW5cbiAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5XG4gICAgICAgZWxzZVxuICAgICAgICAgc3RhdGUuZGlyZWN0b3J5KVxuICAgICAgY2F0YWxvZ1xuICBpblxuICBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudDsgZGlyZWN0b3J5IH1cblxubGV0IGNyZWF0ZV9maWxlIH4oZmlsZW5hbWUgOiBzdHJpbmcpIH4oY29udGVudCA6IHN0cmluZykgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnRcbiAgICA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiY3JlYXRlX2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gY2F0YWxvZyAtPlxuICAgICAgICAgICAgICBsZXQgbWF0Y2hpbmdfZmlsZSA9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gZmlsZV9tZXRhZGF0YSAtPiBmaWxlbmFtZSA9IGZpbGVfbWV0YWRhdGEuS2ZpbGVzLmlkKVxuICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAobWF0Y2ggbWF0Y2hpbmdfZmlsZSB3aXRoXG4gICAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgICBsZXQgbWF4X3BvcyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IC0+IG1heCBhY2MgcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgIDAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2NyZWF0ZSAoc3VjYyBtYXhfcG9zKSBmaWxlbmFtZSBjb250ZW50XG4gICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwub2sgKGNhdGFsb2cnLCBzdWNjIG1heF9wb3MpKSkpXG4gICAgICAgICAgICAgIHwgbWV0YWRhdGEgOjogXyAtPlxuICAgICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV91cGRhdGUgZmlsZW5hbWUgY29udGVudFxuICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwub2sgKGNhdGFsb2csIG1ldGFkYXRhLktmaWxlcy5wb3NpdGlvbikpKSlcbiAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChjYXRhbG9nLCBjdXJyZW50KSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldDpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuayA9IGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgc2VuZF9yZWZyZXNoIE5vbmUpKSlcblxubGV0IHJlYyBjaG9vc2VfZmlsZSBjaG9pY2UgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICBGb3JtYXQuc3ByaW50ZiBcIkZhaWxlZCB0byBzd2l0Y2ggZmlsZSAlcy5cIiBjaG9pY2VcbiAgICBpblxuICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2dcbiAgfCB7IEtmaWxlcy5pZDsgcG9zaXRpb24gfSA6OiB0IC0+XG4gICAgaWYgY2hvaWNlID0gaWQgdGhlblxuICAgICAgUmVzdWx0X3V0aWwub2sgcG9zaXRpb25cbiAgICBlbHNlXG4gICAgICBjaG9vc2VfZmlsZSBjaG9pY2UgdFxuXG5sZXQgc2VsZWN0X2ZpbGUgKGZpbGVuYW1lIDogc3RyaW5nKSAobGluZSA6IGludCBvcHRpb24pIDogdW5pdCBBcGkucmVzdWx0IEx3dC50XG4gICAgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNlbGVjdF9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3RcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biByYW5rIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldDpmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBzZW5kX3JlZnJlc2ggbGluZSlcbiAgICAgICAgICAgICAgICAoY2hvb3NlX2ZpbGUgZmlsZW5hbWUgY2F0YWxvZykpKVxuXG5sZXQgc2V0X2NvbnRlbnQgKGNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgd2l0aF9jdXJyZW50X2ZpbGUgKGZ1biBzdGF0ZSBhY3RpdmUgLT4gZnVuY3Rpb25cbiAgICB8IHsgbG9jYWwgPSBTb21lIF87IG5hbWUgfSAtPlxuICAgICAgbGV0IGRpcmVjdG9yeSA9XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBhY3RpdmUucmFua1xuICAgICAgICAgIHsgbG9jYWwgPSBTb21lIGNvbnRlbnQ7IG5hbWUgfVxuICAgICAgICAgIHN0YXRlLmRpcmVjdG9yeVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsgZGlyZWN0b3J5IH0gaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgIHwgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2V0X2RpcmVjdG9yeV9zdGF0ZVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGN1cnJlbnQgPVxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgcmFuayA9IGFjdGl2ZS5yYW5rO1xuICAgICAgICAgICAgICAgICAgY3Vyc29yX3BvcyA9IGFjdGl2ZS5jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgZGlyZWN0b3J5ID0gc3RhdGUuZGlyZWN0b3J5O1xuICAgICAgICAgIH1cbiAgICAgIGluXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb250ZW50XCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX3VwZGF0ZSBuYW1lIGNvbnRlbnQpKVxuXG5sZXQgc2V0X2NvbXBpbGUgZmlsZV9pZCAoY29tcGlsZSA6IGJvb2wpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgbGV0IHN0YXRlID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaFxuICAgIE1vZHMuSW50TWFwLmZpbHRlcl9vbmUgKGZ1biBfIHsgbmFtZTsgXyB9IC0+IG5hbWUgPSBmaWxlX2lkKSBzdGF0ZS5kaXJlY3RvcnlcbiAgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnID0gXCJJbnRlcm5hbCBpbmNvbnNpc3RlbmN5OiBObyBmaWxlIFwiIF4gZmlsZV9pZCBpblxuICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gIHwgU29tZSAocmFuaywgeyBsb2NhbCA9IFNvbWUgY29udGVudDsgbmFtZSB9KSAtPlxuICAgIGlmIGNvbXBpbGUgdGhlbiAoXG4gICAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJhbmsgeyBsb2NhbCA9IE5vbmU7IG5hbWUgfSBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb21waWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX2NyZWF0ZSByYW5rIG5hbWUgY29udGVudClcbiAgICApIGVsc2VcbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICB8IFNvbWUgKHJhbmssIHsgbG9jYWwgPSBOb25lOyBuYW1lIH0pIC0+XG4gICAgaWYgY29tcGlsZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICBlbHNlXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb21waWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX2dldCBuYW1lXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChjb250ZW50LCByYW5rJykgLT5cbiAgICAgICAgICAgICAgICAgIGlmIHJhbmsgPSByYW5rJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGRpcmVjdG9yeSA9XG4gICAgICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJhbmtcbiAgICAgICAgICAgICAgICAgICAgICAgIHsgbG9jYWwgPSBTb21lIGNvbnRlbnQ7IG5hbWUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZGlyZWN0b3J5XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQgPSBzdGF0ZS5jdXJyZW50OyBkaXJlY3RvcnkgfVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNldF9jb21waWxlJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBtYW5hZ2VyIC0+IG1hbmFnZXIjZmlsZV9kZWxldGUgbmFtZSlcbiAgICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvcl9tc2cgPVxuICAgICAgICAgICAgICAgICAgICAgIFwiSW5jb25zaXN0ZW5jeSBpbiByYW5rIHdoaWxlIHNldF9jb21waWxlLlwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgICAgICAgICAgICAgICApKSlcblxubGV0IHJlbW92ZV9maWxlICgpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgd2l0aF9jdXJyZW50X2ZpbGUgKGZ1biBzdGF0ZSBhY3RpdmUgeyBsb2NhbDsgbmFtZSB9IC0+XG4gICAgICBsZXQgZGlyZWN0b3J5ID0gTW9kcy5JbnRNYXAucmVtb3ZlIGFjdGl2ZS5yYW5rIHN0YXRlLmRpcmVjdG9yeSBpblxuICAgICAgbGV0IGN1cnJlbnQgPVxuICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAoZnVuIChyYW5rLCBfKSAtPlxuICAgICAgICAgICAgeyByYW5rOyBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgPSBmYWxzZSB9KVxuICAgICAgICAgIChNb2RzLkludE1hcC5yb290IGRpcmVjdG9yeSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudDsgZGlyZWN0b3J5IH0gaW5cbiAgICAgIGxldCB4ID0gc2VuZF9yZWZyZXNoIE5vbmUgaW5cbiAgICAgIG1hdGNoIGxvY2FsIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+IHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInJlbW92ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfZGVsZXRlIG5hbWUgPj49IGZ1biB5IC0+XG4gICAgICAgICAgICB4ID4+PSBmdW4geCAtPiBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgeDsgeSBdKSkpXG5cbmxldCBkb19hX21vdmUgc3RhdGUgZmlsZV9pZCByYW5rID1cbiAgbWF0Y2hcbiAgICBNb2RzLkludE1hcC5maWx0ZXJfb25lIChmdW4gXyB7IG5hbWU7IF8gfSAtPiBuYW1lID0gZmlsZV9pZCkgc3RhdGUuZGlyZWN0b3J5XG4gIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA9IFwiSW50ZXJuYWwgaW5jb25zaXN0ZW5jeTogTm8gZmlsZSBcIiBeIGZpbGVfaWQgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICB8IFNvbWUgKHJhbmsnLCAoeyBsb2NhbDsgXyB9IGFzIHgpKSAtPlxuICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgTW9kcy5JbnRNYXAuYWRkIHJhbmsgeCAoTW9kcy5JbnRNYXAucmVtb3ZlIHJhbmsnIHN0YXRlLmRpcmVjdG9yeSlcbiAgICBpblxuICAgIGxldCBjdXJyZW50ID1cbiAgICAgIG1hdGNoIHN0YXRlLmN1cnJlbnQgd2l0aFxuICAgICAgfCBTb21lIHsgcmFuayA9IHBvczsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfSB3aGVuIHBvcyA9IHJhbmsnIC0+XG4gICAgICAgIFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBvdXRfb2Zfc3luYyB9XG4gICAgICB8IHggLT4geFxuICAgIGluXG4gICAgaWYgbG9jYWwgPSBOb25lIHRoZW5cbiAgICAgIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwicmVtb3ZlX2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICBtYW5hZ2VyI2ZpbGVfbW92ZSByYW5rIGZpbGVfaWRcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHsgY3VycmVudDsgZGlyZWN0b3J5IH0pKSlcbiAgICBlbHNlXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9KVxuXG5sZXQgcmVjIHNldF9wb3NpdGlvbiBzdGF0ZSBmaWxlX2lkIHJhbmsgPVxuICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiByYW5rIHN0YXRlLmRpcmVjdG9yeSB3aXRoXG4gIHwgU29tZSB7IG5hbWU7IF8gfSAtPlxuICAgIGlmIGZpbGVfaWQgPSBuYW1lIHRoZW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHN0YXRlKVxuICAgIGVsc2VcbiAgICAgIHNldF9wb3NpdGlvbiBzdGF0ZSBuYW1lIChzdWNjIHJhbmspXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc3RhdGUnIC0+XG4gICAgICAgICAgICAgIGRvX2FfbW92ZSBzdGF0ZScgZmlsZV9pZCByYW5rKVxuICB8IE5vbmUgLT4gZG9fYV9tb3ZlIHN0YXRlIGZpbGVfaWQgcmFua1xuXG5sZXQgb3JkZXJfZmlsZXMgKGZpbGVuYW1lcyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGxldCByZWMgX29yZGVyX2ZpbGUgZmlsZW5hbWVzIHN0YXRlIGluZGV4IDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICBtYXRjaCBmaWxlbmFtZXMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGxldCAoKSA9IHNldF9kaXJlY3Rvcnlfc3RhdGUgc3RhdGUgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgIHwgZmlsZV9pZCA6OiB0YWlsIC0+XG4gICAgICBzZXRfcG9zaXRpb24gc3RhdGUgZmlsZV9pZCBpbmRleFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHN0YXRlJyAtPlxuICAgICAgICAgICAgICBfb3JkZXJfZmlsZSB0YWlsIHN0YXRlJyAoaW5kZXggKyAxKSlcbiAgaW5cbiAgX29yZGVyX2ZpbGUgZmlsZW5hbWVzIChSZWFjdC5TLnZhbHVlIG1vZGVsKSAwXG5cbmxldCBjdXJzb3JfYWN0aXZpdHkgfmxpbmUgfmNoID1cbiAgbGV0IHYgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHYuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyByYW5rOyBvdXRfb2Zfc3luYzsgXyB9IC0+XG4gICAgc2V0X2RpcmVjdG9yeV9zdGF0ZVxuICAgICAge1xuICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHJhbms7XG4gICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSB7IExvYy5saW5lID0gc3VjYyBsaW5lOyBjaHIgPSBjaCB9O1xuICAgICAgICAgICAgICBvdXRfb2Zfc3luYztcbiAgICAgICAgICAgIH07XG4gICAgICAgIGRpcmVjdG9yeSA9IHYuZGlyZWN0b3J5O1xuICAgICAgfVxuXG5sZXQgb3V0X29mX3N5bmMgb3V0X29mX3N5bmMgPVxuICBsZXQgdiA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2ggdi5jdXJyZW50IHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB7IHJhbms7IGN1cnNvcl9wb3M7IF8gfSAtPlxuICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgIHtcbiAgICAgICAgY3VycmVudCA9IFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBvdXRfb2Zfc3luYyB9O1xuICAgICAgICBkaXJlY3RvcnkgPSB2LmRpcmVjdG9yeTtcbiAgICAgIH1cblxubGV0IHN5bmMgPyhyZXNldCA9IGZhbHNlKSAoKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic2VsZWN0X2ZpbGVcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gY2F0YWxvZyAtPlxuICAgICAgICAgICAgICBsZXQgY2FuZCA9IChSZWFjdC5TLnZhbHVlIG1vZGVsKS5jdXJyZW50IGluXG4gICAgICAgICAgICAgIGxldCBwb3MgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICByZXNldFxuICAgICAgICAgICAgICAgICAgfHxcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGNhbmQgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IC0+IHgucmFuayA9IHBvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGNhdGFsb2cgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICB8IHsgS2ZpbGVzLnBvc2l0aW9uOyBfIH0gOjogXyAtPlxuICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmFuayA9IHBvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luYyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgIGNhbmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQgcG9zIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgc2VuZF9yZWZyZXNoIE5vbmUpKVxuXG5sZXQgbG9hZF9kZWZhdWx0ICgpIDogdW5pdCBMd3QudCA9XG4gIGNyZWF0ZV9maWxlIH5maWxlbmFtZTpcIm1vZGVsLmthXCIgfmNvbnRlbnQ6XCJcIlxuICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgIFwiU3RhdGVfZmlsZS5sb2FkX2RlZmF1bHQgOiBjcmVhdGluZyBkZWZhdWx0IGZpbGUgZXJyb3JAIEBbPHY+JWFAXVwiXG4gICAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICAgIGVycm9yc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbXNnKSBpblxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGxvYWRfbW9kZWxzICgpIDogdW5pdCBMd3QudCA9XG4gIGxldCBtb2RlbHMgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJtb2RlbFwiIGluXG4gIGxldCByZWMgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlIDogdW5pdCBMd3QudCA9XG4gICAgbWF0Y2ggbW9kZWxzIHdpdGhcbiAgICB8IFtdIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgbW9kZWwgOjogbW9kZWxzIC0+XG4gICAgICAoKiBmZXRjaCBtb2RlbCAqKVxuICAgICAgSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmdldCBtb2RlbFxuICAgICAgPj49IChmdW4gY29udGVudCAtPlxuICAgICAgICAgICAgaWYgY29udGVudC5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29kZSA8PiAyMDAgdGhlblxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcImJhZCByZXNwb25zZSBjb2RlICVkIGZldGNoaW5nIHVybCAlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgY29udGVudC5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29kZSBtb2RlbCkpXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBVcmwudXJsX29mX3N0cmluZyBjb250ZW50LkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC51cmxcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnXG4gICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJmYWlsZWQgdG8gcmV0cmlldmUgdXJsICVzXCIgbW9kZWwpKVxuICAgICAgICAgICAgICB8IFNvbWUgdSAtPlxuICAgICAgICAgICAgICAgIGxldCBmaWxlbmFtZSA9XG4gICAgICAgICAgICAgICAgICBMaXN0X3V0aWwubGFzdFxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggdSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgVXJsLkh0dHAgaCB8IFVybC5IdHRwcyBoIC0+IGguVXJsLmh1X3BhdGhcbiAgICAgICAgICAgICAgICAgICAgfCBVcmwuRmlsZSBmIC0+IGYuVXJsLmZ1X3BhdGgpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZWNvbnRlbnQgOiBzdHJpbmcgPVxuICAgICAgICAgICAgICAgICAgY29udGVudC5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29udGVudFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKGZpbGVuYW1lLCBmaWxlY29udGVudCkpXG4gICAgICAgICAgICApKVxuICAgICAgPj49ICgqIGFkZCBjb250ZW50ICopXG4gICAgICBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoZmlsZW5hbWUsIGNvbnRlbnQpIC0+XG4gICAgICAgICAgY3JlYXRlX2ZpbGUgfmZpbGVuYW1lIH5jb250ZW50XG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmaWxlbmFtZSkpKVxuICAgICAgPj49ICgqIHNlbGVjdCBtb2RlbCBpZiBuZWVkZWQgKilcbiAgICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgfm9rOihmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgICBpZiBsb2FkX2ZpbGUgdGhlblxuICAgICAgICAgICAgc2VsZWN0X2ZpbGUgZmlsZW5hbWUgTm9uZVxuICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgIH5vazooZnVuIF8gLT4gYWRkX21vZGVscyBtb2RlbHMgZmFsc2UpXG4gICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUpXG4gICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgIGxldCBtc2cgPVxuICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiY3JlYXRpbmcgbG9hZGluZyB1cmwgJXMgZXJyb3JAIEBbPHY+JWFAXVwiIG1vZGVsXG4gICAgICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UpXG4gICAgICAgICAgICAgIGVycm9yc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIlN0YXRlX2ZpbGUubG9hZF9tb2RlbCAlc1wiIG1zZykpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUpXG4gIGluXG4gIG1hdGNoIG1vZGVscyB3aXRoXG4gIHwgW10gLT4gbG9hZF9kZWZhdWx0ICgpXG4gIHwgXyA6OiBfIC0+IGFkZF9tb2RlbHMgbW9kZWxzIHRydWVcblxubGV0IGluaXQgKCkgOiB1bml0IEx3dC50ID0gTHd0LnJldHVybl91bml0ID4+PSBsb2FkX21vZGVsc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBzaW11bGF0aW9uX3N0YXRlID1cbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgKCogc2ltdWxhdGlvbiBpcyB1bmF2YWlsYWJsZSAqKVxuICB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgKCogc2ltdWxhdGlvbiBpcyBibG9ja2VkIG9uIGFuIG9wZXJhdGlvbiAqKVxuICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgb2YgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvXG4oKiB0aGUgc2ltdWxhdGlvbiBpcyByZWFkeSAqKVxuXG50eXBlIHQgPSB7IHNpbXVsYXRpb25fc3RhdGU6IHNpbXVsYXRpb25fc3RhdGUgfVxuXG5sZXQgdF9zaW11bGF0aW9uX3N0YXRlIHNpbXVsYXRpb24gPSBzaW11bGF0aW9uLnNpbXVsYXRpb25fc3RhdGVcblxubGV0IHRfc2ltdWxhdGlvbl9pbmZvIHNpbXVsYXRpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgbWF0Y2ggc2ltdWxhdGlvbi5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgLT4gTm9uZVxuICB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgLT4gTm9uZVxuICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IFNvbWUgc2ltdWxhdGlvbl9pbmZvXG5cbnR5cGUgc3RhdGUgPSB0XG50eXBlIG1vZGVsID0gc3RhdGVcbnR5cGUgbW9kZWxfc3RhdGUgPSBTVE9QUEVEIHwgSU5JVEFMSVpJTkcgfCBSVU5OSU5HIHwgUEFVU0VEXG5cbmxldCBtb2RlbF9zdGF0ZV90b19zdHJpbmcgPSBmdW5jdGlvblxuICB8IFNUT1BQRUQgLT4gXCJTdG9wcGVkXCJcbiAgfCBJTklUQUxJWklORyAtPiBcIkluaXRhbGl6aW5nXCJcbiAgfCBSVU5OSU5HIC0+IFwiUnVubmluZ1wiXG4gIHwgUEFVU0VEIC0+IFwiUGF1c2VkXCJcblxubGV0IGR1bW15X21vZGVsID0geyBzaW11bGF0aW9uX3N0YXRlID0gU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIH1cblxubGV0IG1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24gPVxuICB0X3NpbXVsYXRpb25faW5mbyBtb2RlbFxuXG5sZXQgbW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbCA6IG1vZGVsX3N0YXRlID1cbiAgbWF0Y2ggdF9zaW11bGF0aW9uX3N0YXRlIG1vZGVsIHdpdGhcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgLT4gU1RPUFBFRFxuICB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgLT4gSU5JVEFMSVpJTkdcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbyAtPlxuICAgIGlmXG4gICAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmdcbiAgICB0aGVuXG4gICAgICBSVU5OSU5HXG4gICAgZWxzZVxuICAgICAgUEFVU0VEXG5cbmxldCBzdGF0ZSwgc2V0X3N0YXRlID0gUmVhY3QuUy5jcmVhdGUgZHVtbXlfbW9kZWxcblxubGV0IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIChzaW11bGF0aW9uX3N0YXRlIDogc2ltdWxhdGlvbl9zdGF0ZSkgOiB1bml0ID1cbiAgbGV0ICgpID0gc2V0X3N0YXRlIHsgc2ltdWxhdGlvbl9zdGF0ZSB9IGluXG4gICgpXG5cbmxldCBtb2RlbCA6IG1vZGVsIFJlYWN0LnNpZ25hbCA9IHN0YXRlXG5cbmxldCBldmFsX3dpdGhfc2ltX21hbmFnZXIgOlxuICAgICAgJ2EuXG4gICAgICBsYWJlbDpzdHJpbmcgLT5cbiAgICAgIChBcGkuY29uY3JldGVfbWFuYWdlciAtPiB0IC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQpIC0+XG4gICAgICAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiBmdW4gfmxhYmVsIGhhbmRsZXIgLT5cbiAgbGV0IHByb2plY3RfaGFuZGxlciBtYW5hZ2VyID0gaGFuZGxlciBtYW5hZ2VyIChSZWFjdC5TLnZhbHVlIHN0YXRlKSBpblxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbCBwcm9qZWN0X2hhbmRsZXJcblxubGV0IGZhaWxfbHd0IGVycm9yX21zZyA9IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG5cbmxldCBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfihsYWJlbCA6IHN0cmluZylcbiAgICA/KHN0b3BwZWQgOiBBcGkuY29uY3JldGVfbWFuYWdlciAtPiAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGZ1biBfIC0+IGZhaWxfbHd0IFwiU2ltdWxhdGlvbiBzdG9wcGVkXCIpXG4gICAgPyhpbml0aWFsaXppbmcgOiBBcGkuY29uY3JldGVfbWFuYWdlciAtPiAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGZ1biBfIC0+IGZhaWxfbHd0IFwiU2ltdWxhdGlvbiBpbml0YWxpemluZ1wiKVxuICAgID8ocmVhZHkgOlxuICAgICAgICBBcGkuY29uY3JldGVfbWFuYWdlciAtPlxuICAgICAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gLT5cbiAgICAgICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBmdW4gXyBfIC0+IGZhaWxfbHd0IFwiU2ltdWxhdGlvbiByZWFkeVwiKSAoKSA6ICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXIgfmxhYmVsIChmdW4gbWFuYWdlciBzIC0+XG4gICAgICBtYXRjaCBzLnNpbXVsYXRpb25fc3RhdGUgd2l0aFxuICAgICAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgLT4gc3RvcHBlZCBtYW5hZ2VyXG4gICAgICB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgLT4gaW5pdGlhbGl6aW5nIG1hbmFnZXJcbiAgICAgIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gLT4gcmVhZHkgbWFuYWdlciBzaW11bGF0aW9uX2luZm8pXG5cbmxldCBldmFsX3doZW5fcmVhZHkgfihsYWJlbCA6IHN0cmluZylcbiAgICA/KGhhbmRsZXIgOiB1bml0IEFwaS5yZXN1bHQgLT4gdW5pdCBMd3QudCA9IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcbiAgICAob3BlcmF0aW9uIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gdW5pdCBBcGkucmVzdWx0IEx3dC50KSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsXG4gICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIDogdW5pdCBBcGkucmVzdWx0IEx3dC50IC0+IG9wZXJhdGlvbiBtYW5hZ2VyKVxuICAgICAgICAoKVxuICAgICAgPj49IGhhbmRsZXIpXG5cbigqIHRvIHN5bmNoIHN0YXRlIG9mIGFwcGxpY2F0aW9uIHdpdGggcnVudGltZSAqKVxubGV0IHNsZWVwX3RpbWUgPSAxLjBcblxubGV0IHJlYyBzeW5jICgpID1cbiAgbWF0Y2ggKFJlYWN0LlMudmFsdWUgc3RhdGUpLnNpbXVsYXRpb25fc3RhdGUgd2l0aFxuICB8IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB8IFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgLT5cbiAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIF8gLT5cbiAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInN5bmNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgKCogZ2V0IGN1cnJlbnQgZGlyZWN0b3J5ICopXG4gICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzaW11bGF0aW9uX2luZm8gLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgc2V0X3N0YXRlXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uX3N0YXRlID0gU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm87XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm8uQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmdcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIHNsZWVwX3RpbWUgPj49IHN5bmNcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgcmVmcmVzaCAoKSA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwic3luY1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgKCogZ2V0IGN1cnJlbnQgZGlyZWN0b3J5ICopXG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW5mb1xuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIHNpbXVsYXRpb25faW5mbyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHNldF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgeyBzaW11bGF0aW9uX3N0YXRlID0gU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzeW5jICgpKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHNldF9zdGF0ZSB7IHNpbXVsYXRpb25fc3RhdGUgPSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPSBMd3QucmV0dXJuX3VuaXRcblxubGV0IGNvbnRpbnVlX3NpbXVsYXRpb24gKHBhdXNlX2NvbmRpdGlvbiA6IHN0cmluZykgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwiY29udGludWVfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gY29udGludWUgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIGNvbnRpbnVlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jb250aW51ZSBwYXVzZV9jb25kaXRpb25cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6c3luYylcbiAgICAoKVxuXG5sZXQgcGF1c2Vfc2ltdWxhdGlvbiAoKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJwYXVzZV9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBwYXVzZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHN0b3BwZWRcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgKF8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcGF1c2UpXG4gICAgKClcblxubGV0IHN0b3Bfc2ltdWxhdGlvbiAoKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJzdG9wX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gc3RvcHBlZFwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdG9wIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIChfIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RlbGV0ZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICAgICgpXG5cbmxldCBzdGFydF9zaW11bGF0aW9uIChzaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25fcGFyYW1ldGVyKSA6XG4gICAgdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInN0YXJ0X3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gbWFuYWdlciAtPlxuICAgICAgbGV0IG9uX2Vycm9yIGVycm9yX21zZ3MgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgaW5cbiAgICAgICAgKCogdHVybiB0aGUgbGlnaHRzIG9mZiAqKVxuICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGVsZXRlID4+PSBmdW4gXyAtPlxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcl9tc2dzKVxuICAgICAgaW5cbiAgICAgIEx3dC5jYXRjaFxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgKCogc2V0IHN0YXRlIHRvIGluaXRhbGl6ZSAqKVxuICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfSU5JVEFMSVpJTkcgaW5cbiAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fc3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gXyAtPiBtYW5hZ2VyI3NpbXVsYXRpb25faW5mbylcbiAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc2ltdWxhdGlvbl9zdGF0dXMgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBzaW11bGF0aW9uX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgICAgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX3N0YXR1c1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIHNpbXVsYXRpb25fc3RhdGUgaW5cbiAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgIH5vazooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9yX21zZyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIGluXG4gICAgICAgICAgICAgICAgICBvbl9lcnJvciBlcnJvcl9tc2cpXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazpzeW5jKVxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgZXJyb3IgLT5cbiAgICAgICAgICAgIGxldCBtc2cgPSBGb3JtYXQuc3ByaW50ZiBcIlJ1bnRpbWUgZXJyb3IgJXNcIiBlcnJvciBpblxuICAgICAgICAgICAgb25fZXJyb3IgWyBBcGlfY29tbW9uLmVycm9yX21zZyBtc2cgXVxuICAgICAgICAgIHwgU3lzX2Vycm9yIG1lc3NhZ2UgLT4gb25fZXJyb3IgWyBBcGlfY29tbW9uLmVycm9yX21zZyBtZXNzYWdlIF1cbiAgICAgICAgICB8IF8gLT4gb25fZXJyb3IgWyBBcGlfY29tbW9uLmVycm9yX21zZyBcIkluaXRpYWxpemF0aW9uIGVycm9yXCIgXSkpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gXyBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBydW5uaW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICAoKVxuXG5sZXQgaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKGNvZGUgOiBzdHJpbmcpIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwicGVydHVyYl9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBzdGFydCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHJ1bm5pbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2ludGVydmVudGlvbiBjb2RlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gb3V0IC0+XG4gICAgICAgICAgICAgIHN5bmMgKClcbiAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgb3V0KSkpKVxuICAgICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcmVmcmVzaCByID1cbiAgbGV0IHInID0gU3RhdGVfZmlsZS5zeW5jIH5yZXNldDp0cnVlICgpIGluXG4gIGxldCByJycgPSBTdGF0ZV9zaW11bGF0aW9uLnJlZnJlc2ggKCkgaW5cbiAgcicgPj49IGZ1biByJyAtPlxuICByJycgPj49IGZ1biByJycgLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInOyByJycgXSlcblxubGV0IGNyZWF0ZV9wcm9qZWN0IChwcm9qZWN0X2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3Byb2plY3QuY3JlYXRlX3Byb2plY3QgcHJvamVjdF9pZCA+Pj0gcmVmcmVzaClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfcHJvamVjdCAocHJvamVjdF9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9wcm9qZWN0LnNldF9wcm9qZWN0IHByb2plY3RfaWQgPj49IHJlZnJlc2gpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgY2xvc2VfcHJvamVjdCBwcm9qZWN0X2lkIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfcHJvamVjdC5yZW1vdmVfcHJvamVjdCBwcm9qZWN0X2lkID4+PSByZWZyZXNoKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9tYW5hZ2VyIChydW50aW1lX2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0XG4gICAgICAgICAgIH5vazooZnVuICgpIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgKFN0YXRlX3J1bnRpbWUuY3JlYXRlX3NwZWMgfmxvYWQ6dHJ1ZSBydW50aW1lX2lkKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWQgPSBcInNpbXVsYXRpb25fc2VlZF9pbnB1dFwiXG5sZXQgcHJlZmVyZW5jZXNfbW9kYWxfaWQgPSBcInByZWZlcmVuY2VzX21vZGFsXCJcbmxldCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWQgPSBcInNldHRpbmdzLWNsaWVudC1pZC1pbnB1dFwiXG5sZXQgcHJlZmVyZW5jZXNfYnV0dG9uID0gSHRtbC5hIFsgSHRtbC50eHQgXCJQcmVmZXJlbmNlc1wiIF1cblxubGV0IG9wdGlvbl9zZWVkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICBdXG4gICAgKClcblxubGV0IG9wdGlvbl93aXRodHJhY2UgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGRlYWRydWxlcyA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG9wdGlvbl93aXRoZGVhZGFnZW50cyA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxubGV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5cbmxldCBkZWNyZWFzZV9mb250ID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJidG4tc21cIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCItXCIgXVxuXG5sZXQgaW5jcmVhc2VfZm9udCA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwiYnRuLWxnXCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiK1wiIF1cblxubGV0IHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiY2xpZW50IGlkXCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfZG9tID1cbiAgVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dFxuXG5sZXQgb3B0aW9uX2h0dHBfc3luY2ggPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcblxubGV0IGRyb3Bkb3duIChtb2RlbCA6IFN0YXRlX3J1bnRpbWUubW9kZWwpID1cbiAgbGV0IGN1cnJlbnRfaWQgPSBTdGF0ZV9ydW50aW1lLnNwZWNfaWQgbW9kZWwuU3RhdGVfcnVudGltZS5tb2RlbF9jdXJyZW50IGluXG4gIExpc3QubWFwXG4gICAgKGZ1biAoc3BlYyA6IFN0YXRlX3J1bnRpbWUuc3BlYykgLT5cbiAgICAgIGxldCBzcGVjX2lkID0gU3RhdGVfcnVudGltZS5zcGVjX2lkIHNwZWMgaW5cbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgIChIdG1sLmFfdmFsdWUgc3BlY19pZFxuICAgICAgICAgIDo6XG4gICAgICAgICAgKGlmIGN1cnJlbnRfaWQgPSBzcGVjX2lkIHRoZW5cbiAgICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBbXSkpXG4gICAgICAgIChIdG1sLnR4dCAoU3RhdGVfcnVudGltZS5zcGVjX2xhYmVsIHNwZWMpKSlcbiAgICBtb2RlbC5TdGF0ZV9ydW50aW1lLm1vZGVsX3J1bnRpbWVzXG5cbmxldCBiYWNrZW5kX29wdGlvbnMgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5tYXAgKGZ1biBsaXN0X3QgLT4gZHJvcGRvd24gbGlzdF90KSBTdGF0ZV9ydW50aW1lLm1vZGVsKVxuXG5sZXQgYmFja2VuZF9zZWxlY3QgPVxuICBUeXhtbF9qcy5SLkh0bWwuc2VsZWN0IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdIF0gYmFja2VuZF9vcHRpb25zXG5cbmxldCVodG1sIGJvZGllcyA9XG4gIHt8XG4gICAgPGg0PkFwcGxpY2F0aW9uPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCI+Rm9udCBzaXplPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj58fVxuICAgIFsgZGVjcmVhc2VfZm9udDsgaW5jcmVhc2VfZm9udCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCI+QmFja2VuZCBmb3IgbmV3IHByb2plY3RzPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj58fVxuICAgIFsgYmFja2VuZF9zZWxlY3QgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGg0PlByb2plY3Q8L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTJcIiBmb3I9XCJ8fVxuICAgIGNvbmZpZ3VyYXRpb25fc2VlZF9pbnB1dF9pZFxuICAgIHt8XCI+U2VlZDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIG9wdGlvbl9zZWVkX2lucHV0IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGh0cmFjZSBdXG4gICAge3xTdG9yZSB0cmFjZVxuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGg0PkhUVFBTIGJhY2tlbmQ8L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiY29sLW1kLTJcIiBmb3I9XCJ8fVxuICAgIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9pZFxuICAgIHt8XCI+Q2xpZW50IGlkPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTVcIj58fVxuICAgIFsgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX2h0dHBfc3luY2ggXVxuICAgIHt8QXV0byBzeW5jaFxuICAgIDwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGg0PlN0YXRpYyBhbmFseXNlczwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLW9mZnNldC0yIGNvbC1tZC01IGNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBvcHRpb25fd2l0aGRlYWRydWxlcyBdXG4gICAge3xTaG93IGRlYWQgcnVsZXNcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGhkZWFkYWdlbnRzIF1cbiAgICB7fFNob3cgZGVhZCBhZ2VudHNcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGhpcnJldmVyc2libGUgXVxuICAgIHt8U2hvdyBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxufH1cblxubGV0IHNldF9idXR0b24gPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQ7IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLXByaW1hcnlcIiBdIF1cbiAgICBbIEh0bWwudHh0IFwiU2V0XCIgXVxuXG5sZXQgc2F2ZV9idXR0b24gPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdIF1cbiAgICBbIEh0bWwudHh0IFwiU2F2ZSBhcyBkZWZhdWx0XCIgXVxuXG5sZXQgbW9kYWwgPVxuICBsZXQgaGVhZCA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1oZWFkZXJcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5idXR0b25cbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdO1xuICAgICAgICAgICAgICBIdG1sLmFfdXNlcl9kYXRhIFwiZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbIEh0bWwuZW50aXR5IFwidGltZXNcIiBdO1xuICAgICAgICBIdG1sLmg0IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC10aXRsZVwiIF0gXSBbIEh0bWwudHh0IFwiUHJlZmVyZW5jZXNcIiBdO1xuICAgICAgXVxuICBpblxuICBsZXQgYm9keSA9IEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1ib2R5XCIgXSBdIGJvZGllcyBpblxuICBsZXQgZm9vdCA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1mb290ZXJcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgc2V0X2J1dHRvbjtcbiAgICAgICAgc2F2ZV9idXR0b247XG4gICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICAgICAgSHRtbC5hX3VzZXJfZGF0YSBcImRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgWyBIdG1sLnR4dCBcIkNsb3NlXCIgXTtcbiAgICAgIF1cbiAgaW5cbiAgSHRtbC5mb3JtXG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWNvbnRlbnRcIjsgXCJmb3JtLWhvcml6b250YWxcIiBdIF1cbiAgICBbIGhlYWQ7IGJvZHk7IGZvb3QgXVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFtcbiAgICBwcmVmZXJlbmNlc19idXR0b247XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbFwiOyBcImZhZGVcIiBdO1xuICAgICAgICAgIEh0bWwuYV9pZCBwcmVmZXJlbmNlc19tb2RhbF9pZDtcbiAgICAgICAgICBIdG1sLmFfcm9sZSBbIFwiZGlhbG9nXCIgXTtcbiAgICAgICAgICBIdG1sLmFfdGFiaW5kZXggKC0xKTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1kaWFsb2dcIiBdOyBIdG1sLmFfcm9sZSBbIFwiZG9jdW1lbnRcIiBdIF1cbiAgICAgICAgICBbIG1vZGFsIF07XG4gICAgICBdO1xuICBdXG5cbmxldCBzZXRfYWN0aW9uICgpID1cbiAgbGV0IHNldHRpbmdzX2NsaWVudF9pZCA9IEpzLnRvX3N0cmluZyBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfZG9tIyMudmFsdWUgaW5cbiAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X2NsaWVudF9pZCBzZXR0aW5nc19jbGllbnRfaWQgaW5cblxuICBsZXQgc3luY2hfY2hlY2tib3hfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl9odHRwX3N5bmNoIGluXG4gIGxldCBpc19jaGVja2VkID0gSnMudG9fYm9vbCBzeW5jaF9jaGVja2JveF9kb20jIy5jaGVja2VkIGluXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCBpc19jaGVja2VkIGluXG5cbiAgbGV0IGlucHV0ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl9zZWVkX2lucHV0IGluXG4gIGxldCB2YWx1ZSA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBpbnB1dCMjLnZhbHVlIGluXG4gIGxldCBtb2RlbF9zZWVkID0gdHJ5IFNvbWUgKGludF9vZl9zdHJpbmcgdmFsdWUpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmUgaW5cbiAgbGV0ICgpID0gU3RhdGVfcHJvamVjdC5zZXRfc2VlZCBtb2RlbF9zZWVkIGluXG5cbiAgbGV0ICgpID1cbiAgICBTdGF0ZV9wcm9qZWN0LnNldF9zdG9yZV90cmFjZVxuICAgICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aHRyYWNlKSMjLmNoZWNrZWQpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc2hvd19kZWFkX3J1bGVzXG4gICAgICAoSnMudG9fYm9vbCAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoZGVhZHJ1bGVzKSMjLmNoZWNrZWQpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc2hvd19kZWFkX2FnZW50c1xuICAgICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRhZ2VudHMpIyMuY2hlY2tlZClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBTdGF0ZV9wcm9qZWN0LnNldF9zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSkjIy5jaGVja2VkKVxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5zZXRfbWFuYWdlclxuICAgICAgKEpzLnRvX3N0cmluZyAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBiYWNrZW5kX3NlbGVjdCkjIy52YWx1ZSlcbiAgaW5cbiAgKClcblxubGV0IHNldF9hbmRfc2F2ZV9hY3Rpb24gKCkgPVxuICBsZXQgKCkgPSBzZXRfYWN0aW9uICgpIGluXG5cbiAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCAoKSBpblxuICBsZXQgKCkgPSBTdGF0ZV9wcm9qZWN0LnNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgaW5cblxuICAoKVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2Zvcm0gbW9kYWwpIyMub25zdWJtaXRcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gKF8gOiBfIEpzLnQpIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBwcmVmZXJlbmNlc19tb2RhbF9pZCkgfmFjdGlvbjpcImhpZGVcIlxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZXRfYWN0aW9uICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBzYXZlX2J1dHRvbikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FuZF9zYXZlX2FjdGlvbiAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9hIHByZWZlcmVuY2VzX2J1dHRvbikjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IHNwID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9wcm9qZWN0Lm1vZGVsIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgICAgOj0gSnMuc3RyaW5nIChTdGF0ZV9zZXR0aW5ncy5nZXRfY2xpZW50X2lkICgpKVxuICAgICAgICAgICBpblxuXG4gICAgICAgICAgIGxldCBpbnB1dCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fc2VlZF9pbnB1dCBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIGlucHV0IyMudmFsdWUgOj1cbiAgICAgICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgc3AuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3Quc2VlZFxuICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICAgICB8IFNvbWUgbW9kZWxfc2VlZCAtPiBzdHJpbmdfb2ZfaW50IG1vZGVsX3NlZWQpXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRodHJhY2UpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRhZ2VudHMpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfYWdlbnRzXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRydWxlcykjIy5jaGVja2VkXG4gICAgICAgICAgICAgOj0gSnMuYm9vbFxuICAgICAgICAgICAgICAgICAgc3AuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnNob3dfZGVhZF9ydWxlc1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhpcnJldmVyc2libGUpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICBpblxuXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25faHR0cF9zeW5jaCkjIy5jaGVja2VkXG4gICAgICAgICAgICAgOj0gSnMuYm9vbCAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9zZXR0aW5ncy5zeW5jaClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBiYWNrZW5kX3NlbGVjdCkjIy52YWx1ZVxuICAgICAgICAgICAgIDo9IEpzLnN0cmluZ1xuICAgICAgICAgICAgICAgICAgKFN0YXRlX3J1bnRpbWUuc3BlY19pZFxuICAgICAgICAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfcnVudGltZS5tb2RlbClcbiAgICAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3J1bnRpbWUubW9kZWxfY3VycmVudClcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJlZmVyZW5jZXNfbW9kYWxfaWQpIH5hY3Rpb246XCJzaG93XCJcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG5cbiAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3MudXBkYXRlRm9udFNpemUgfmRlbHRhOjAuIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gaW5jcmVhc2VfZm9udCkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3MudXBkYXRlRm9udFNpemUgfmRlbHRhOjAuMiBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gZGVjcmVhc2VfZm9udCkjIy5vbmNsaWNrXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3MudXBkYXRlRm9udFNpemUgfmRlbHRhOigtMC4yKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0b2dnbGVfZWxlbWVudCAocHJvamVjdGlvbiA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24gLT4gYm9vbClcbiAgICAoY29udGVudCA6IFs8IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIF0gSHRtbC5lbHQgSHRtbC5saXN0X3dyYXApID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAoaWYgcHJvamVjdGlvbiAoU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mbyBtb2RlbCkgdGhlblxuICAgICAgICAgICAgICAgICAgICBbIFwic2hvd1wiIF1cbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgWyBcImhpZGRlblwiIF0pKSk7XG4gICAgICBdXG4gICAgY29udGVudFxuXG5sZXQgb3B0aW9uX2xhYmVsIGxhYmVsID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBsYWJlbCA+IDEwIHRoZW5cbiAgICBTdHJpbmcuc3ViIGxhYmVsIDAgNyBeIFwiLi4uXCJcbiAgZWxzZVxuICAgIGxhYmVsXG5cbmxldCBleHBvcnRfY29udHJvbHMgfihleHBvcnRfc2VsZWN0X2lkIDogc3RyaW5nKSB+KGV4cG9ydF9maWxlbmFtZV9pZCA6IHN0cmluZylcbiAgICB+KGV4cG9ydF9idXR0b25faWQgOiBzdHJpbmcpIH4oZXhwb3J0X2RhdGFfbGFiZWwgOiBzdHJpbmcpID1cbiAgbGV0IGV4cG9ydF9mb3JtYXRzIDogc3RyaW5nIGxpc3QgPSBbIGV4cG9ydF9kYXRhX2xhYmVsIF0gaW5cbiAgbGV0IGV4cG9ydF9maWxlbmFtZSA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgZXhwb3J0X2ZpbGVuYW1lX2lkO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJmaWxlIG5hbWVcIjtcbiAgICAgICAgXVxuICAgICAgKClcbiAgaW5cbiAgbGV0IGV4cG9ydF9idXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBleHBvcnRfYnV0dG9uX2lkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwicHVsbC1yaWdodFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImV4cG9ydFwiIF1cbiAgaW5cbiAgbGV0IGV4cG9ydF9mb3JtYXRzX3NlbGVjdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gZm9ybWF0IC0+XG4gICAgICAgIFslaHRtbFxuICAgICAgICAgIHt8PG9wdGlvbiB2YWx1ZT1cInx9IGZvcm1hdCB7fFwiPnx9IChIdG1sLmNkYXRhIGZvcm1hdCkge3w8L29wdGlvbj58fV0pXG4gICAgICBleHBvcnRfZm9ybWF0c1xuICBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMlwiPlxuICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1pbmxpbmVcIj5cbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiXG4gICAgICAgICAgICAgICAgICAgaWQ9XCJ8fVxuICAgICAgZXhwb3J0X3NlbGVjdF9pZFxuICAgICAge3xcIj48b3B0aW9uIHZhbHVlPVwicG5nXCI+cG5nPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cInN2Z1wiPnN2Zzwvb3B0aW9uPnx9XG4gICAgICBleHBvcnRfZm9ybWF0c19zZWxlY3RcbiAgICAgIHt8PC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjaGVja2JveC1pbmxpbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx9XG4gICAgICBbIGV4cG9ydF9maWxlbmFtZSBdXG4gICAgICB7fFxuICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3gtaW5saW5lXCI+XG4gICAgICAgICAgICAgIHx9XG4gICAgICBbIGV4cG9ydF9idXR0b24gXVxuICAgICAge3xcbiAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2Pnx9XVxuXG5sZXQgZG9jdW1lbnQgPSBEb21faHRtbC53aW5kb3cjIy5kb2N1bWVudFxuXG5sZXQgbGFiZWxfbmV3cyB0YWJfaXNfYWN0aXZlIGNvdW50ZXIgPVxuICBsZXQgbGFzdF92YWx1ZSA9XG4gICAgcmVmXG4gICAgICAobGV0IHNpbXVsYXRpb25faW5mbyA9XG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLnRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG4gICAgICAgaW5cbiAgICAgICBjb3VudGVyIHNpbXVsYXRpb25faW5mbylcbiAgaW5cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubDJcbiAgICAgICAoZnVuIHRhYl9hY3RpdmUgbW9kZWwgLT5cbiAgICAgICAgIGlmIHRhYl9hY3RpdmUgdGhlblxuICAgICAgICAgICBbXVxuICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLnRfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCB2ID0gY291bnRlciBzaW11bGF0aW9uX2luZm8gaW5cbiAgICAgICAgICAgaWYgdiA8PiAhbGFzdF92YWx1ZSAmJiB2ID4gMCB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKCkgPSBsYXN0X3ZhbHVlIDo9IHYgaW5cbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICBIdG1sLnR4dCBcIiBcIjtcbiAgICAgICAgICAgICAgIEh0bWwuc3BhblxuICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibGFiZWxcIjsgXCJsYWJlbC1kZWZhdWx0XCIgXSBdXG4gICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJOZXdcIiBdO1xuICAgICAgICAgICAgIF1cbiAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgW11cbiAgICAgICAgICkpXG4gICAgICAgdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG5sZXQgYmFkZ2UgKGNvdW50ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uIC0+IGludCkgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgbGV0IGNvdW50ID0gY291bnRlciBzaW11bGF0aW9uX2luZm8gaW5cbiAgICAgICAgIGlmIGNvdW50ID4gMCB0aGVuXG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBIdG1sLnR4dCBcIiBcIjtcbiAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJiYWRnZVwiIF0gXVxuICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoc3RyaW5nX29mX2ludCBjb3VudCkgXTtcbiAgICAgICAgICAgXVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBbXSlcbiAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG5sZXQgYXJndW1lbnRzIChrZXkgOiBzdHJpbmcpIDogc3RyaW5nIGxpc3QgPVxuICBMaXN0Lm1hcCBzbmQgKExpc3QuZmlsdGVyIChmdW4gKGssIF8pIC0+IGtleSA9IGspIFVybC5DdXJyZW50LmFyZ3VtZW50cylcblxubGV0IHZlcnNpb24gPyh0ZXN0IDogJ2Egb3B0aW9uID0gTm9uZSkgfihwcm9kIDogJ2EpIH4oZGV2IDogJ2EpIDogJ2EgPVxuICBsZXQgdmVyc2lvbiA6IHN0cmluZyBsaXN0ID0gYXJndW1lbnRzIFwidmVyc2lvblwiIGluXG4gIG1hdGNoIHRlc3QsIHZlcnNpb24gd2l0aFxuICB8IFNvbWUgdGVzdCwgWyBcInRlc3RcIiBdIC0+IHRlc3RcbiAgfCBfLCBbIFwiZGV2XCIgXSAtPiBkZXZcbiAgfCBfIC0+IHByb2RcblxubGV0IG5hdmxpIGxhYmVsIGZvcmNlX2NsYXNzIGRlY29yYXRpb25zID1cbiAgbGV0IGRlZmF1bHRfYXR0cmlidXRlcyA9XG4gICAgWyBIdG1sLmFfaWQgKFwibmF2XCIgXiBsYWJlbCk7IEh0bWwuYV9yb2xlIFsgXCJwcmVzZW50YXRpb25cIiBdIF1cbiAgaW5cbiAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgIG1hdGNoIGZvcmNlX2NsYXNzIHdpdGhcbiAgICB8IE5vbmUgLT4gZGVmYXVsdF9hdHRyaWJ1dGVzXG4gICAgfCBTb21lIGwgLT4gVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzIGwgOjogZGVmYXVsdF9hdHRyaWJ1dGVzXG4gIGluXG4gIGxldCB0ZXh0ID1cbiAgICBSZWFjdGl2ZURhdGEuUkxpc3QuY29uY2F0XG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LnNpbmdsZXRvbiAoSHRtbC5jZGF0YSBsYWJlbCkpXG4gICAgICBkZWNvcmF0aW9uc1xuICBpblxuICBIdG1sLmxpIH5hOmF0dHJpYnV0ZXNcbiAgICBbXG4gICAgICBUeXhtbF9qcy5SLkh0bWwuYVxuICAgICAgICB+YTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS10b2dnbGVcIiBcInRhYlwiO1xuICAgICAgICAgICAgSHRtbC5hX3JvbGUgWyBcInRhYlwiIF07XG4gICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1jb250cm9sc1wiIGxhYmVsO1xuICAgICAgICAgICAgSHRtbC5hX2hyZWYgKFwiI1wiIF4gbGFiZWwpO1xuICAgICAgICAgIF1cbiAgICAgICAgdGV4dDtcbiAgICBdXG5cbmxldCBuYXZ0YWJzIG5hdl90YWJfaWQgPSBmdW5jdGlvblxuICB8IFtdIHwgKF8sIFNvbWUgXywgXykgOjogXyAtPiBDb21tb24udG9zcyBcInVpX2NvbW1vbi5uYXZ0YWJzIDogbWlzc2luZyB0YWJzXCJcbiAgfCAodGksIE5vbmUsIGwpIDo6IHQgLT5cbiAgICBIdG1sLnVsXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBuYXZfdGFiX2lkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibmF2XCI7IFwibmF2LXRhYnNcIiBdO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJ0YWJsaXN0XCI7XG4gICAgICAgIF1cbiAgICAgIChuYXZsaSB0aSAoU29tZSAoUmVhY3QuUy5jb25zdCBbIFwiYWN0aXZlXCIgXSkpIGxcbiAgICAgIDo6IExpc3QubWFwIChmdW4gKHQsIGFfY2xhc3MsIGxpKSAtPiBuYXZsaSB0IGFfY2xhc3MgbGkpIHQpXG5cbmxldCBvbmVuYXZjb250ZW50IGxhYmVsIGFjdGl2ZSBjbGFzc2VzIGNvbnRlbnQgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgbGFiZWw7XG4gICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgIChpZiBhY3RpdmUgdGhlblxuICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCIgOjogXCJ0YWItcGFuZVwiIDo6IFwiYWN0aXZlXCIgOjogY2xhc3Nlc1xuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgXCJmbGV4LWNvbnRlbnRcIiA6OiBcInRhYi1wYW5lXCIgOjogY2xhc3Nlcyk7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJ0YWJwYW5lbFwiO1xuICAgICAgXVxuICAgIGNvbnRlbnRcblxubGV0IG5hdmNvbnRlbnQgP2lkIGNsYXNzZXMgPSBmdW5jdGlvblxuICB8IFtdIC0+IENvbW1vbi50b3NzIFwidWlfY29tbW9uLm5hdmNvbnRlbnQgOiBtaXNzaW5nIGNvbnRlbnRcIlxuICB8ICh0LCBjbCwgYykgOjogbCAtPlxuICAgIGxldCBpZCA6IFs+IGBJZCBdIEh0bWwuYXR0cmliIGxpc3QgPVxuICAgICAgbWF0Y2ggaWQgd2l0aFxuICAgICAgfCBOb25lIC0+IFtdXG4gICAgICB8IFNvbWUgaWQgLT4gWyBIdG1sLmFfaWQgaWQgXVxuICAgIGluXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICAoW1xuICAgICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAoWyBcInBhbmVsLWNvbnRlbnRcIjsgXCJ0YWItY29udGVudFwiOyBcImZsZXgtY29udGVudFwiIF0gQCBjbGFzc2VzKTtcbiAgICAgICAgIF1cbiAgICAgICAgQCBpZClcbiAgICAgIChvbmVuYXZjb250ZW50IHQgdHJ1ZSBjbCBjXG4gICAgICA6OiBMaXN0Lm1hcCAoZnVuICh0LCBjbCwgYykgLT4gb25lbmF2Y29udGVudCB0IGZhbHNlIGNsIGMpIGwpXG5cbmxldCBsZXZlbCA/ZGVidWcgP2luZm8gP25vdGljZSA/d2FybmluZyA/ZXJyb3IgP2ZhdGFsICgpIDogJ2EgbGlzdCA9XG4gIGxldCBsZXZlbCA6IHN0cmluZyBsaXN0ID0gYXJndW1lbnRzIFwibGV2ZWxcIiBpblxuICBsZXQgZXh0cmFjdCBrZXkgdmFsdWUgPVxuICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICB8IE5vbmUgLT4gW11cbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIGlmIExpc3QubWVtIGtleSBsZXZlbCB0aGVuXG4gICAgICAgIFsgdmFsdWUgXVxuICAgICAgZWxzZVxuICAgICAgICBbXVxuICBpblxuICBleHRyYWN0IFwiZGVidWdcIiBkZWJ1ZyBAIGV4dHJhY3QgXCJpbmZvXCIgaW5mbyBAIGV4dHJhY3QgXCJub3RpY2VcIiBub3RpY2VcbiAgQCBleHRyYWN0IFwid2FybmluZ1wiIHdhcm5pbmcgQCBleHRyYWN0IFwiZXJyb3JcIiBlcnJvciBAIGV4dHJhY3QgXCJmYXRhbFwiIGZhdGFsXG4gIEAgW11cblxubGV0IGZlYXR1cmVzID8oZGVmYXVsdCA9IFtdKSAob3B0aW9ucyA6IChzdHJpbmcgKiAnYSkgbGlzdCkgOiAnYSBsaXN0ID1cbiAgbGV0IGZlYXR1cmVzIDogc3RyaW5nIGxpc3QgPSBhcmd1bWVudHMgXCJmZWF0dXJlXCIgaW5cbiAgbGV0IG1hdGNoZXMgOiAnYSBsaXN0ID1cbiAgICBMaXN0Lm1hcCBzbmRcbiAgICAgIChMaXN0LmZpbHRlciAoZnVuIChmZWF0dXJlLCBfKSAtPiBMaXN0Lm1lbSBmZWF0dXJlIGZlYXR1cmVzKSBvcHRpb25zKVxuICBpblxuICBtYXRjaCBtYXRjaGVzIHdpdGhcbiAgfCBbXSAtPiBkZWZhdWx0XG4gIHwgXyA6OiBfIC0+IG1hdGNoZXNcblxubGV0IGlucHV0X2NoYW5nZSBpbnB1dF9kb20gc2lnbmFsX2hhbmRsZXIgPVxuICBpbnB1dF9kb20jIy5vbmNoYW5nZSA6PVxuICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNpZ25hbF9oYW5kbGVyIChKcy50b19zdHJpbmcgaW5wdXRfZG9tIyMudmFsdWUpIGluXG4gICAgICAgIEpzLl90cnVlKVxuXG5tb2R1bGUgdHlwZSBNZW51ID0gc2lnXG4gIHZhbCBjb250ZW50IDpcbiAgICB1bml0IC0+XG4gICAgWz4gYEJ1dHRvbiB8IGBEaXYgfCBgVWwgfCBgQSBvZiBbPiBgUENEQVRBIHwgYFNwYW4gXSBdIFR5eG1sX2pzLkh0bWw1LmVsdFxuICAgIGxpc3RcblxuICB2YWwgb25sb2FkIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgRGl2ID0gc2lnXG4gIHZhbCBpZCA6IHN0cmluZ1xuICB2YWwgY29udGVudCA6IHVuaXQgLT4gSHRtbF90eXBlcy5kaXZfY29udGVudF9mdW4gVHl4bWxfanMuSHRtbC5lbHQgbGlzdFxuICB2YWwgb25sb2FkIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgVGFiID0gc2lnXG4gIHZhbCBuYXZsaSA6XG4gICAgdW5pdCAtPlxuICAgIEh0bWxfdHlwZXMuZmxvdzVfd2l0aG91dF9pbnRlcmFjdGl2ZSBUeXhtbF9qcy5IdG1sNS5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnRcblxuICB2YWwgY29udGVudCA6IHVuaXQgLT4gSHRtbF90eXBlcy5kaXZfY29udGVudF9mdW4gVHl4bWxfanMuSHRtbDUuZWx0IGxpc3RcbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgb25yZXNpemUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTdWJUYWIgPSBzaWdcbiAgaW5jbHVkZSBUYWJcblxuICB2YWwgcGFyZW50X2hpZGUgOiB1bml0IC0+IHVuaXRcbiAgdmFsIHBhcmVudF9zaG93biA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFBhbmVsID0gc2lnXG4gIHZhbCBjb250ZW50IDogdW5pdCAtPiBIdG1sX3R5cGVzLmRpdiBUeXhtbF9qcy5IdG1sNS5lbHRcbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuICB2YWwgb25yZXNpemUgOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5sZXQgaWRfZG9tIChpZCA6IHN0cmluZykgOiAnYSBKcy50ID1cbiAgSnMuVW5zYWZlLmNvZXJjZVxuICAgIChKcy5PcHQuZ2V0XG4gICAgICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICBDb21tb24udG9zc1xuICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJ1aV9jb21tb24uaWRfZG9tIDogY291bGQgbm90IGZpbmQgaWQgJXNcIiBpZCkpXG4gICAgICA6IERvbV9odG1sLmVsZW1lbnQgSnMudClcblxubGV0IGNyZWF0ZV9tb2RhbCB+KGlkIDogc3RyaW5nKSB+KHRpdGxlX2xhYmVsIDogc3RyaW5nKVxuICAgIH4oYm9keSA6IFs8IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIF0gSHRtbC5lbHQgSHRtbC5saXN0X3dyYXApXG4gICAgfihzdWJtaXRfbGFiZWwgOiBzdHJpbmcpIH4oc3VibWl0IDogKCdzZWxmIEpzLnQsIF8gSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyKVxuICAgIDogWz4gSHRtbF90eXBlcy5kaXYgXSBIdG1sLmVsdCA9XG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0OyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1wcmltYXJ5XCIgXSBdXG4gICAgICBbIEh0bWwudHh0IHN1Ym1pdF9sYWJlbCBdXG4gIGluXG4gIGxldCBmb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1jb250ZW50XCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWhlYWRlclwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdO1xuICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWxhYmVsXCIgXCJDbG9zZVwiO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEh0bWwuc3BhblxuICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1oaWRkZW5cIiBcInRydWVcIiBdXG4gICAgICAgICAgICAgICAgICBbIEh0bWwuZW50aXR5IFwidGltZXNcIiBdO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgSHRtbC5oNCBbIEh0bWwuY2RhdGEgdGl0bGVfbGFiZWwgXTtcbiAgICAgICAgICBdO1xuICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtYm9keVwiIF0gXSBib2R5O1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1mb290ZXJcIiBdIF1cbiAgICAgICAgICAoW1xuICAgICAgICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1kaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICBbIEh0bWwuY2RhdGEgXCJDYW5jZWxcIiBdO1xuICAgICAgICAgICBdXG4gICAgICAgICAgQCBbIGJ1dHRvbiBdKTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0ICgpID0gKFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIGZvcm0pIyMub25zdWJtaXQgOj0gc3VibWl0IGluXG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWxcIjsgXCJmYWRlXCIgXTtcbiAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidGFiaW5kZXhcIiBcIi0xXCI7XG4gICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJkaWFsb2dcIjtcbiAgICAgIF1cbiAgICBbXG4gICAgICBIdG1sLmRpdlxuICAgICAgICB+YTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWRpYWxvZ1wiIF07XG4gICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiZG9jdW1lbnRcIjtcbiAgICAgICAgICBdXG4gICAgICAgIFsgZm9ybSBdO1xuICAgIF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHByb2plY3RfaWRfbW9kYWxfaWQgPSBcIm1lbnUtZWRpdG9yLXByb2plY3QtaWQtbW9kYWxcIlxuXG5sZXQgcHJvamVjdF9pZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwicHJvamVjdCBuZXdcIjtcbiAgICAgICAgSHRtbC5hX3NpemUgNDA7XG4gICAgICBdXG4gICAgKClcblxubGV0IGxpX25ldyA9IEh0bWwubGkgWyBIdG1sLmEgWyBIdG1sLmNkYXRhIFwiTmV3IHByb2plY3RcIiBdIF1cbmxldCBsaV9wcmVmcyA9IEh0bWwubGkgKE1vZGFsX3ByZWZlcmVuY2VzLmNvbnRlbnQgKCkpXG5sZXQgcHJvamVjdF9pZF9pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcHJvamVjdF9pZF9pbnB1dFxuXG5sZXQgY29udGVudCAoKSA9XG4gIEh0bWwuZGl2XG4gICAgW1xuICAgICAgVHl4bWxfanMuUi5IdG1sNS51bFxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibmF2XCI7IFwibmF2LXRhYnNcIjsgXCJuYXYtanVzdGlmaWVkXCIgXSBdXG4gICAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWNjID1cbiAgICAgICAgICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgICAgICAgICAoZnVuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWxfcHJvamVjdF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWxfcHJvamVjdF9pc19jb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfSAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsaV9jbGFzcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2N1cnJlbnRfaWQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgY3VycmVudF9wcm9qZWN0X2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudF9wcm9qZWN0X2lkID0gbW9kZWxfcHJvamVjdF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImFjdGl2ZVwiIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzcGFuX2Nsb3NlID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjbG9zZVwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwuZW50aXR5IFwidGltZXNcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gc3Bhbl9jbG9zZSkjIy5vbmNsaWNrXG4gICAgICAgICAgICAgICAgICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIGV2ZW50IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuY2xvc2VfcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBEb21faHRtbC5zdG9wUHJvcGFnYXRpb24gZXZlbnQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5fZmFsc2UpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgY29tcHV0aW5nID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjbGFzc2VzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiZ2x5cGhpY29uXCI7IFwiZ2x5cGhpY29uLXJlZnJlc2hcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJnbHlwaGljb25cIjsgXCJnbHlwaGljb24tb2tcIiBdKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzIGNsYXNzZXMgXSBbXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGFfcHJvamVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXB1dGluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmNkYXRhIChcIiBcIiBeIG1vZGVsX3Byb2plY3RfaWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYW5fY2xvc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2EgYV9wcm9qZWN0KSMjLm9uY2xpY2tcbiAgICAgICAgICAgICAgICAgICAgICAgIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLnNldF9wcm9qZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5saSB+YTpbIEh0bWwuYV9jbGFzcyBsaV9jbGFzcyBdIFsgYV9wcm9qZWN0IF0pXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY2F0YWxvZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgTGlzdC5yZXZfYXBwZW5kIGFjYyBbIGxpX25ldzsgbGlfcHJlZnMgXSlcbiAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCkpO1xuICAgICAgVWlfY29tbW9uLmNyZWF0ZV9tb2RhbCB+aWQ6cHJvamVjdF9pZF9tb2RhbF9pZCB+dGl0bGVfbGFiZWw6XCJOZXcgUHJvamVjdFwiXG4gICAgICAgIH5ib2R5OlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFslaHRtbFxuICAgICAgICAgICAgICB7fDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPnx9IFsgcHJvamVjdF9pZF9pbnB1dCBdIHt8PC9kaXY+fH1dO1xuICAgICAgICAgIF1cbiAgICAgICAgfnN1Ym1pdF9sYWJlbDpcIkNyZWF0ZSBQcm9qZWN0XCJcbiAgICAgICAgfnN1Ym1pdDpcbiAgICAgICAgICAoRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICBsZXQgc2V0dGluZ3NfY2xpZW50X2lkIDogc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgSnMudG9fc3RyaW5nIHByb2plY3RfaWRfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLmNyZWF0ZV9wcm9qZWN0IHNldHRpbmdzX2NsaWVudF9pZFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJvamVjdF9pZF9tb2RhbF9pZCkgfmFjdGlvbjpcImhpZGVcIlxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIEpzLl9mYWxzZSkpO1xuICAgIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IE1vZGFsX3ByZWZlcmVuY2VzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb25cbiAgICAgIChcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpXG4gICAgICBcInNob3duLmJzLm1vZGFsXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBwcm9qZWN0X2lkX2lucHV0X2RvbSMjZm9jdXMgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gbGlfbmV3KSMjLm9uY2xpY2tcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpIH5hY3Rpb246XCJzaG93XCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG1vZGVsX2ludGVydmVudGlvbiwgc2V0X21vZGVsX2ludGVydmVudGlvbiA9IFJlYWN0LlMuY3JlYXRlIFwiXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCBjcmVhdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgcGFyYW0gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlciA9XG4gIHtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3Bsb3RfcGVyaW9kID0gcGFyYW0uU3RhdGVfcHJvamVjdC5wbG90X3BlcmlvZDtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA9IHBhcmFtLlN0YXRlX3Byb2plY3QucGF1c2VfY29uZGl0aW9uO1xuICAgIEFwaV90eXBlc19qLnNpbXVsYXRpb25fc2VlZCA9IHBhcmFtLlN0YXRlX3Byb2plY3Quc2VlZDtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3N0b3JlX3RyYWNlID0gcGFyYW0uU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZTtcbiAgfVxuXG5sZXQgY29udGludWVfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGxldCBwYXVzZV9jb25kaXRpb24gPVxuICAgICAgICBsZXQgb3BlbiBTdGF0ZV9wcm9qZWN0IGluXG4gICAgICAgIChSZWFjdC5TLnZhbHVlIG1vZGVsKS5tb2RlbF9wYXJhbWV0ZXJzLnBhdXNlX2NvbmRpdGlvblxuICAgICAgaW5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoU3RhdGVfc2ltdWxhdGlvbi5jb250aW51ZV9zaW11bGF0aW9uIHBhdXNlX2NvbmRpdGlvbilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBwYXVzZV9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9zaW11bGF0aW9uLnBhdXNlX3NpbXVsYXRpb24gKCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc3RvcF9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJzdWJwYW5lbF9lZGl0b3JfY29udHJvbGxlci5zdG9wXCIpIGluXG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX3NpbXVsYXRpb24uc3RvcF9zaW11bGF0aW9uICgpKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHN0YXJ0X3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICAgICAgICBjcmVhdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9wcm9qZWN0Lm1vZGVsKS5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgIGluXG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uc3RhcnRfc2ltdWxhdGlvbiBzaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBpbnRlcnZlbmVfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGxldCBtb2RlbF9wZXJ0dXJiYXRpb24gPVxuICAgICAgICBSZWFjdC5TLnZhbHVlIFN0YXRlX3BlcnR1cmJhdGlvbi5tb2RlbF9pbnRlcnZlbnRpb25cbiAgICAgIGluXG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uaW50ZXJ2ZW5lX3NpbXVsYXRpb24gbW9kZWxfcGVydHVyYmF0aW9uKVxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIHRleHQgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBTdGF0ZV9lcnJvci5hZGRfZXJyb3IgX19MT0NfX1xuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkluZm87XG4gICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gTHd0LnJldHVybl91bml0KSlcblxubGV0IGZvY3VzX3JhbmdlIChyYW5nZSA6IExvYy50KSA6IHVuaXQgPVxuICBsZXQgZmlsZV9pZCA9IHJhbmdlLkxvYy5maWxlIGluXG4gIGxldCBsaW5lID0gcmFuZ2UuTG9jLmZyb21fcG9zaXRpb24uTG9jLmxpbmUgaW5cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgX19MT0NfX1xuICAgICAgICAoU3RhdGVfZmlsZS5zZWxlY3RfZmlsZSBmaWxlX2lkIChTb21lIGxpbmUpKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNpbXVsYXRpb25fdHJhY2UgKCkgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyBtYW5hZ2VyI3NpbXVsYXRpb25fcmF3X3RyYWNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gZGF0YV9zdHJpbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgZGF0YV9zdHJpbmcgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIlxuICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOlwidHJhY2UuanNvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBzaW11bGF0aW9uX291dHB1dHMgKCkgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyBtYW5hZ2VyI3NpbXVsYXRpb25fb3V0cHV0c196aXBcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBkYXRhX2JpZ3N0cmluZyAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IFR5cGVkX2FycmF5LkJpZ3N0cmluZy50b19hcnJheUJ1ZmZlciBkYXRhX2JpZ3N0cmluZyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL3ppcFwiXG4gICAgICAgICAgICAgICAgICB+ZmlsZW5hbWU6XCJzaW11bGF0aW9uX291dHB1dHMuemlwXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5vcGVuIExpc3RfdXRpbC5JbmZpeFxuXG5sZXQgdmlzaWJsZV9vbl9zdGF0ZXMgPyhhX2NsYXNzID0gW10pXG4gICAgKHN0YXRlIDogU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zdGF0ZSBsaXN0KSA6IHN0cmluZyBsaXN0IFJlYWN0LnNpZ25hbCA9XG4gIGxldCBoaWRkZW5fY2xhc3MgPSBbIFwiaGlkZGVuXCIgXSBpblxuICBsZXQgdmlzaWJsZV9jbGFzcyA9IFsgXCJ2aXNpYmxlXCIgXSBpblxuICBSZWFjdC5TLmJpbmQgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICBsZXQgY3VycmVudF9zdGF0ZSA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbCBpblxuICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAoaWYgTGlzdC5tZW0gY3VycmVudF9zdGF0ZSBzdGF0ZSB0aGVuXG4gICAgICAgICAgIGFfY2xhc3MgQCB2aXNpYmxlX2NsYXNzXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGFfY2xhc3MgQCBoaWRkZW5fY2xhc3MpKVxuXG5tb2R1bGUgRm9ybVBlcnR1cmJhdGlvbiA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19wZXJ0dXJiYXRpb25cIlxuXG4gIGxldCBpbnB1dCA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiU2ltdWxhdGlvbiBQZXJ0dXJiYXRpb25cIjtcbiAgICAgICAgXVxuICAgICAgKClcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdDsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF0gXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiaW50ZXJ2ZW50aW9uXCIgXVxuXG4gIGxldCBmb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiZm9ybS1ob3Jpem9udGFsXCIgXVxuICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0xMFwiOyBcImNvbC14cy05XCIgXSBdIFsgaW5wdXQgXTtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy0zXCIgXSBdIFsgYnV0dG9uIF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cblxuICBsZXQgY29udGVudCAoKSA9IFsgZm9ybSBdXG5cbiAgbGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICAgIGxldCBmb3JtX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIGZvcm0gaW5cbiAgICBsZXQgaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGlucHV0IGluXG4gICAgbGV0IGhhbmRsZXIgXyA9XG4gICAgICBsZXQgbW9kZWxfcGVydHVyYmF0aW9uIDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGlucHV0X2RvbSMjLnZhbHVlIGluXG4gICAgICBsZXQgKCkgPSBTdGF0ZV9wZXJ0dXJiYXRpb24uc2V0X21vZGVsX2ludGVydmVudGlvbiBtb2RlbF9wZXJ0dXJiYXRpb24gaW5cbiAgICAgIEpzLl90cnVlXG4gICAgaW5cblxuICAgIGxldCAoKSA9XG4gICAgICBmb3JtX2RvbSMjLm9uc3VibWl0IDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5pbnRlcnZlbmVfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgIGluXG4gICAgbGV0ICgpID0gaW5wdXRfZG9tIyMub25jaGFuZ2UgOj0gRG9tLmhhbmRsZXIgaGFuZGxlciBpblxuICAgICgpXG5lbmRcblxubGV0IHNpZ25hbF9jaGFuZ2UgaW5wdXRfZG9tIHNpZ25hbF9oYW5kbGVyID1cbiAgaW5wdXRfZG9tIyMub25jaGFuZ2UgOj1cbiAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzaWduYWxfaGFuZGxlciAoSnMudG9fc3RyaW5nIGlucHV0X2RvbSMjLnZhbHVlKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcblxubW9kdWxlIElucHV0UGF1c2VDb25kaXRpb24gOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGF1c2VfY29uZGl0aW9uXCJcblxuICBsZXQgaW5wdXQgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJbVF0gPiAxMDBcIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV92YWx1ZVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgbS5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5wYXVzZV9jb25kaXRpb24pXG4gICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgKClcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgaW5wdXQgXVxuICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGlucHV0XG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0ICgpID1cbiAgICAgIHNpZ25hbF9jaGFuZ2UgZG9tIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICBsZXQgdicgPVxuICAgICAgICAgICAgaWYgdmFsdWUgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgXCJbZmFsc2VdXCJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICBpblxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc2V0X3BhdXNlX2NvbmRpdGlvbiB2JylcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIElucHV0UGxvdFBlcmlvZCA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19wbG90X3BlcmlvZFwiXG5cbiAgbGV0IGZvcm1hdF9mbG9hdF9zdHJpbmcgdmFsdWUgPVxuICAgIGxldCBuID0gc3RyaW5nX29mX2Zsb2F0IHZhbHVlIGluXG4gICAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggbiBpblxuICAgIGlmIGxlbmd0aCA+IDAgJiYgU3RyaW5nLmdldCBuIChsZW5ndGggLSAxKSA9ICcuJyB0aGVuXG4gICAgICBuIF4gXCIwXCJcbiAgICBlbHNlXG4gICAgICBuXG5cbiAgbGV0IGlucHV0ID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJ0aW1lIHVuaXRzXCI7XG4gICAgICAgICAgSHRtbC5hX2lucHV0X21pbiAoYE51bWJlciAwKTtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV92YWx1ZVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgZm9ybWF0X2Zsb2F0X3N0cmluZ1xuICAgICAgICAgICAgICAgICAgIG0uU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3QucGxvdF9wZXJpb2QpXG4gICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgKClcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgaW5wdXQgXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBpbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgaW5wdXQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc2lnbmFsX2NoYW5nZSBpbnB1dF9kb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICAgIGxldCByZXNldF92YWx1ZSAoKSA9XG4gICAgICAgICAgICBsZXQgb2xkX3ZhbHVlID1cbiAgICAgICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCkuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3QucGxvdF9wZXJpb2RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpbnB1dF9kb20jIy52YWx1ZSA6PSBKcy5zdHJpbmcgKHN0cmluZ19vZl9mbG9hdCBvbGRfdmFsdWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxldCBuZXdfdmFsdWUgPSBmbG9hdF9vZl9zdHJpbmcgdmFsdWUgaW5cbiAgICAgICAgICAgIGlmIG5ld192YWx1ZSA8IDAuIHRoZW5cbiAgICAgICAgICAgICAgcmVzZXRfdmFsdWUgKClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5zZXRfcGxvdF9wZXJpb2QgbmV3X3ZhbHVlXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgfCBGYWlsdXJlIF8gLT4gcmVzZXRfdmFsdWUgKCkpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBEaXZFcnJvck1lc3NhZ2UgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwiY29uZmlndXJhdGlvbl9lcnJvcl9kaXZcIlxuICBsZXQgbWVzc2FnZV9uYXZfaW5jX2lkID0gXCJwYW5lbF9zZXR0aW5nc19tZXNzYWdlX25hdl9pbmNfaWRcIlxuICBsZXQgbWVzc2FnZV9uYXZfZGVjX2lkID0gXCJwYW5lbF9zZXR0aW5nc19tZXNzYWdlX25hdl9kZWNfaWRcIlxuICBsZXQgbWVzc2FnZV9maWxlX2xhYmVsX2lkID0gXCJwYW5lbF9zZXR0aW5nc19tZXNzYWdlX2ZpbGVfbGFiZWxcIlxuICBsZXQgZXJyb3JfaW5kZXggPSBIb29rZWQuUy5jcmVhdGUgTm9uZVxuXG4gIGxldCAoKSA9XG4gICAgSG9va2VkLlMucmVnaXN0ZXIgU3RhdGVfZXJyb3IuZXJyb3JzIChmdW5jdGlvblxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCBfIDo6IF8gLT5cbiAgICAgICAgKG1hdGNoIEhvb2tlZC5TLnYgZXJyb3JfaW5kZXggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSG9va2VkLlMuc2V0IGVycm9yX2luZGV4IChTb21lIDApXG4gICAgICAgIHwgU29tZSBfIC0+ICgpKSlcblxuICAoKiBpZiB0aGVyZSBhcmUgbGVzcyBvciBubyBlcnJvcnMgdGhlIGluZGV4IG5lZWRzIHRvIGJlIHVwZGF0ZWQgKilcbiAgbGV0IHNhbml0aXplX2luZGV4IChpbmRleCA6IGludCBvcHRpb24pIGVycm9ycyA6IGludCBvcHRpb24gPVxuICAgIG1hdGNoIGluZGV4LCBlcnJvcnMgd2l0aFxuICAgIHwgTm9uZSwgW10gLT4gTm9uZVxuICAgIHwgTm9uZSwgXyA6OiBfIC0+IFNvbWUgMFxuICAgIHwgU29tZSBfLCBbXSAtPiBOb25lXG4gICAgfCBTb21lIGluZGV4LCBlcnJvciAtPlxuICAgICAgbGV0IGxlbmd0aCA9IExpc3QubGVuZ3RoIGVycm9yIGluXG4gICAgICBpZiBpbmRleCA+IGxlbmd0aCB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gSG9va2VkLlMuc2V0IGVycm9yX2luZGV4IChTb21lIDApIGluXG4gICAgICAgIFNvbWUgMFxuICAgICAgKSBlbHNlIGlmIDAgPiBpbmRleCB0aGVuIChcbiAgICAgICAgbGV0IGluZGV4ID0gU29tZSAoTGlzdC5sZW5ndGggZXJyb3IgLSAxKSBpblxuICAgICAgICBsZXQgKCkgPSBIb29rZWQuUy5zZXQgZXJyb3JfaW5kZXggaW5kZXggaW5cbiAgICAgICAgaW5kZXhcbiAgICAgICkgZWxzZVxuICAgICAgICBTb21lIGluZGV4XG5cbiAgbGV0IGdldF9tZXNzYWdlIChpbmRleCA6IGludCBvcHRpb24pIGVycm9ycyA6IEFwaV90eXBlc190Lm1lc3NhZ2Ugb3B0aW9uID1cbiAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAoZnVuIG4gLT4gU29tZSAoTGlzdC5udGggZXJyb3JzIG4pKVxuICAgICAgKHNhbml0aXplX2luZGV4IGluZGV4IGVycm9ycylcblxuICBsZXQgbWVzc2FnZV9uYXZfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBtYXRjaCBpbmRleCwgZXJyb3Igd2l0aFxuICAgICAgICB8IE5vbmUsIFtdIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIF8sIFtdIC0+IFwiXCJcbiAgICAgICAgfCBOb25lLCBfIDo6IF8gLT4gXCJcIlxuICAgICAgICB8IFNvbWUgaW5kZXgsIChfIDo6IF8gYXMgZXJyb3JzKSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJWQvJWRcIiAoaW5kZXggKyAxKSAoTGlzdC5sZW5ndGggZXJyb3JzKSlcbiAgICAgIChIb29rZWQuUy50b19yZWFjdF9zaWduYWwgZXJyb3JfaW5kZXgpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIFN0YXRlX2Vycm9yLmVycm9ycylcblxuICBsZXQgYV9jbGFzcyA9XG4gICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgIChSZWFjdC5TLmJpbmQgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgIChtYXRjaCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gLT4gWyBcImVycm9yLXNwYW5cIjsgXCJjbGlja2FibGVcIiBdKSkpXG5cbiAgbGV0IG1lc3NhZ2VfbmF2X2RlYyA9XG4gICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2lkIG1lc3NhZ2VfbmF2X2RlY19pZDsgYV9jbGFzcyBdIFsgSHRtbC50eHQgXCIgwqsgXCIgXVxuXG4gIGxldCBtZXNzYWdlX25hdl9pbmMgPVxuICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9pZCBtZXNzYWdlX25hdl9pbmNfaWQ7IGFfY2xhc3MgXSBbIEh0bWwudHh0IFwiIMK7IFwiIF1cblxuICBsZXQgbWVzc2FnZV9uYXYgPVxuICAgIFsgbWVzc2FnZV9uYXZfZGVjOyBUeXhtbF9qcy5SLkh0bWwudHh0IG1lc3NhZ2VfbmF2X3RleHQ7IG1lc3NhZ2VfbmF2X2luYyBdXG5cbiAgbGV0IGZpbGVfbGFiZWxfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBsZXQgcmFuZ2UgPVxuICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgIChmdW4gbWVzc2FnZSAtPiBtZXNzYWdlLlJlc3VsdF91dGlsLnJhbmdlKVxuICAgICAgICAgICAgKGdldF9tZXNzYWdlIGluZGV4IGVycm9yKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSByYW5nZSAtPiBGb3JtYXQuc3ByaW50ZiBcIlslc11cIiByYW5nZS5Mb2MuZmlsZSlcbiAgICAgIChIb29rZWQuUy50b19yZWFjdF9zaWduYWwgZXJyb3JfaW5kZXgpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIFN0YXRlX2Vycm9yLmVycm9ycylcblxuICBsZXQgZmlsZV9sYWJlbCA9XG4gICAgSHRtbC5zcGFuXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBtZXNzYWdlX2ZpbGVfbGFiZWxfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJlcnJvci1zcGFuXCI7IFwiY2xpY2thYmxlXCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBUeXhtbF9qcy5SLkh0bWwudHh0IGZpbGVfbGFiZWxfdGV4dCBdXG5cbiAgbGV0IGVycm9yX21lc3NhZ2VfdGV4dCA9XG4gICAgUmVhY3QuUy5sMlxuICAgICAgKGZ1biBpbmRleCBlcnJvciAtPlxuICAgICAgICBtYXRjaCBnZXRfbWVzc2FnZSBpbmRleCBlcnJvciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBtZXNzYWdlIC0+IEZvcm1hdC5zcHJpbnRmIFwiICVzIFwiIG1lc3NhZ2UuUmVzdWx0X3V0aWwudGV4dClcbiAgICAgIChIb29rZWQuUy50b19yZWFjdF9zaWduYWwgZXJyb3JfaW5kZXgpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIFN0YXRlX2Vycm9yLmVycm9ycylcblxuICBsZXQgZXJyb3JfbWVzc2FnZSA9XG4gICAgSHRtbC5zcGFuXG4gICAgICB+YTpbIEh0bWwuYV9pZCBpZDsgSHRtbC5hX2NsYXNzIFsgXCJlcnJvci1zcGFuXCIgXSBdXG4gICAgICBbIFR5eG1sX2pzLlIuSHRtbC50eHQgZXJyb3JfbWVzc2FnZV90ZXh0IF1cblxuICBsZXQgYWxlcnRfbWVzc2FnZXMgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgICAgIChmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBlcnJvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBbXSAtPiBbIFwiYWxlcnQtc21cIjsgXCJhbGVydFwiIF1cbiAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPiBbIFwiYWxlcnQtc21cIjsgXCJhbGVydFwiOyBcImFsZXJ0LWRhbmdlclwiIF0pKSk7XG4gICAgICAgIF1cbiAgICAgIChtZXNzYWdlX25hdiBAIFsgZmlsZV9sYWJlbDsgZXJyb3JfbWVzc2FnZSBdKVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBbIGFsZXJ0X21lc3NhZ2VzIF1cblxuICBsZXQgZmlsZV9jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gZmlsZV9sYWJlbCBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJmaWxlX2NsaWNrX2hhbmRsZXJcIikgaW5cbiAgICAgICAgICAgIGxldCBtZXNzYWdlIDogQXBpX3R5cGVzX3QubWVzc2FnZSBvcHRpb24gPVxuICAgICAgICAgICAgICBnZXRfbWVzc2FnZVxuICAgICAgICAgICAgICAgIChIb29rZWQuUy52IGVycm9yX2luZGV4KVxuICAgICAgICAgICAgICAgIChIb29rZWQuUy52IFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmFuZ2UgPVxuICAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAgKGZ1biBtZXNzYWdlIC0+IG1lc3NhZ2UuUmVzdWx0X3V0aWwucmFuZ2UpXG4gICAgICAgICAgICAgICAgbWVzc2FnZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIG1hdGNoIHJhbmdlIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHJhbmdlIC0+IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuZm9jdXNfcmFuZ2UgcmFuZ2VcbiAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBpbmRleF9jbGlja19oYW5kbGVyIGRvbSBkZWx0YSA9XG4gICAgbGV0ICgpID1cbiAgICAgIGRvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcImluZGV4X2NsaWNrX2hhbmRsZXJcIikgaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgICBzYW5pdGl6ZV9pbmRleFxuICAgICAgICAgICAgICAgIChIb29rZWQuUy52IGVycm9yX2luZGV4KVxuICAgICAgICAgICAgICAgIChIb29rZWQuUy52IFN0YXRlX2Vycm9yLmVycm9ycylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgaW5kZXggPSBPcHRpb25fdXRpbC5tYXAgZGVsdGEgaW5kZXggaW5cbiAgICAgICAgICAgIGxldCBpbmRleCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgICBzYW5pdGl6ZV9pbmRleCBpbmRleCAoSG9va2VkLlMudiBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gSG9va2VkLlMuc2V0IGVycm9yX2luZGV4IGluZGV4IGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5cbiAgbGV0IGluY19jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gbWVzc2FnZV9uYXZfZGVjIGluXG4gICAgbGV0ICgpID0gaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gKGZ1biBpbmRleCAtPiBpbmRleCArIDEpIGluXG4gICAgKClcblxuICBsZXQgZGVjX2NsaWNrX2hhbmRsZXIgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2Zfc3BhbiBtZXNzYWdlX25hdl9pbmMgaW5cbiAgICBsZXQgKCkgPSBpbmRleF9jbGlja19oYW5kbGVyIGRvbSAoZnVuIGluZGV4IC0+IGluZGV4IC0gMSkgaW5cbiAgICAoKVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCAoKSA9IGZpbGVfY2xpY2tfaGFuZGxlciAoKSBpblxuICAgIGxldCAoKSA9IGluY19jbGlja19oYW5kbGVyICgpIGluXG4gICAgbGV0ICgpID0gZGVjX2NsaWNrX2hhbmRsZXIgKCkgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25TdGFydCA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19zdGFydF9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgIFN0YXRlX2ZpbGUuY3VycmVudCA9IFNvbWUgeyBTdGF0ZV9maWxlLm91dF9vZl9zeW5jOyBfIH07XG4gICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICBvdXRfb2Zfc3luY1xuICAgICAgICAgICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgICAgICAgICAgICBTdGF0ZV9maWxlLm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwic3RhcnRcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IHN0YXJ0X2J1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdGFydF9idXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuc3RhcnRfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvbkNsZWFyIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX2NsZWFyX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLmNkYXRhIFwiY2xlYXJcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGRvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnN0b3Bfc2ltdWxhdGlvbiAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25QYXVzZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19wYXVzZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcInBhdXNlXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnBhdXNlX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uVHJhY2UgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfZ2V0X3RyYWNlX2J1dHRvblwiXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGlkO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgICAoaWZcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2VcbiAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgWyBcImRpc2FibGVkXCIgXSlcbiAgICAgICAgICAgICAgICAgQCBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImdldCB0cmFjZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5zaW11bGF0aW9uX3RyYWNlICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvbk91dHB1dHMgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3Nfb3V0cHV0c19idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcIkFsbCBvdXRwdXRzXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnNpbXVsYXRpb25fb3V0cHV0cyAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25Db250aW51ZSA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19jb250aW51ZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImNvbnRpbnVlXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBidXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLmNvbnRpbnVlX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgRGl2U3RhdHVzSW5kaWNhdG9yIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInNldHRpbmdfc3RhdHVzX2luZGljYXRvclwiXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPVxuICAgIGxldCBkZWJ1ZyA9XG4gICAgICBIdG1sLmRpdlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3N0YXRlX3RvX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbClcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdCBsYWJlbCkpO1xuICAgICAgICBdXG4gICAgaW5cbiAgICBbIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2lkIGlkIF0gKFVpX2NvbW1vbi5sZXZlbCB+ZGVidWcgKCkpIF1cblxuICBsZXQgb25sb2FkICgpID0gKClcbmVuZFxuXG5tb2R1bGUgUnVubmluZ1BhbmVsTGF5b3V0IDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInNldHRpbmdzX3J1bmV0aW1lX2xheW91dFwiXG5cbiAgbGV0IHByb2dyZXNzX2JhciAocGVyY2VudF9zaWduYWwgOiBpbnQgVHl4bWxfanMuUi5IdG1sLndyYXApXG4gICAgICAodmFsdWVfc2lnbmFsIDogc3RyaW5nIFJlYWN0LnNpZ25hbCkgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJwcm9ncmVzc2JhclwiO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVub3dcIiBwZXJjZW50X3NpZ25hbDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5pbnRfYXR0cmliIFwiYXJpYS12YWx1ZW1pblwiIDA7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVtYXhcIiAxMDA7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwic3R5bGVcIlxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIHMgLT4gRm9ybWF0LnNwcmludGYgXCJ3aWR0aDogJWQlJTtcIiBzKVxuICAgICAgICAgICAgICAgcGVyY2VudF9zaWduYWwpO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwicHJvZ3Jlc3MtYmFyXCIgXTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAgICAgKFJlYWN0LlMuYmluZCB2YWx1ZV9zaWduYWwgKGZ1biB2YWx1ZSAtPiBSZWFjdC5TLmNvbnN0IHZhbHVlKSk7XG4gICAgICBdXG5cbiAgbGV0IHRpbWVfcHJvZ3Jlc3NfYmFyICgpID1cbiAgICBwcm9ncmVzc19iYXJcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IHRpbWVfcGVyY2VudCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSlcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgdGltZV9wZXJjZW50IDogaW50ID0gT3B0aW9uX3V0aWwudW5zb21lIDEwMCB0aW1lX3BlcmNlbnQgaW5cbiAgICAgICAgICAgdGltZV9wZXJjZW50KVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IHRpbWUgOiBmbG9hdCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSlcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgdGltZSA6IGZsb2F0ID0gT3B0aW9uX3V0aWwudW5zb21lIDAuMCB0aW1lIGluXG4gICAgICAgICAgIHN0cmluZ19vZl9mbG9hdCB0aW1lKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgZXZlbnRfcHJvZ3Jlc3NfYmFyICgpID1cbiAgICBwcm9ncmVzc19iYXJcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50X3BlcmNlbnRhZ2UgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlKVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBldmVudF9wZXJjZW50YWdlIDogaW50ID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgMTAwIGV2ZW50X3BlcmNlbnRhZ2VcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgZXZlbnRfcGVyY2VudGFnZSlcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCBldmVudCA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IGV2ZW50IDogaW50ID0gT3B0aW9uX3V0aWwudW5zb21lIDAgZXZlbnQgaW5cbiAgICAgICAgICAgc3RyaW5nX29mX2ludCBldmVudClcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IHRyYWNrZWRfZXZlbnRzIHN0YXRlID1cbiAgICBsZXQgdHJhY2tlZF9ldmVudHMgOiBpbnQgb3B0aW9uID1cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzKVxuICAgICAgICBzdGF0ZVxuICAgIGluXG4gICAgbWF0Y2ggdHJhY2tlZF9ldmVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHRyYWNrZWRfZXZlbnRzIC0+XG4gICAgICBpZiB0cmFja2VkX2V2ZW50cyA+IDAgdGhlblxuICAgICAgICBTb21lIHRyYWNrZWRfZXZlbnRzXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcblxuICBsZXQgdHJhY2tlZF9ldmVudHNfY291bnQgKCkgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbWF0Y2ggdHJhY2tlZF9ldmVudHMgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHRyYWNrZWRfZXZlbnRzIC0+IHN0cmluZ19vZl9pbnQgdHJhY2tlZF9ldmVudHNcbiAgICAgICAgICAgfCBOb25lIC0+IFwiIFwiKVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxuICBsZXQgdHJhY2tlZF9ldmVudHNfbGFiZWwgKCkgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgICAgbWF0Y2ggdHJhY2tlZF9ldmVudHMgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgICAgICAgfCBTb21lIF8gLT4gXCJ0cmFja2VkIGV2ZW50c1wiXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIiBcIilcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IGVmZmljaWVuY3lfZGV0YWlsIH5jdXJyZW50X2V2ZW50IHQgPVxuICAgIGxldCBhbGwgPVxuICAgICAgZmxvYXRfb2ZfaW50XG4gICAgICAgICh0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX2JpbmFyeVxuICAgICAgICsgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeVxuICAgICAgICsgdC5Db3VudGVyLkVmZmljaWVuY3kuY2xhc2hpbmdfaW5zdGFuY2VcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5LnRpbWVfY29ycmVjdGlvbilcbiAgICBpblxuICAgIGxldCBldmVudHMgPSBmbG9hdF9vZl9pbnQgY3VycmVudF9ldmVudCBpblxuICAgIEh0bWwucFxuICAgICAgW1xuICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyUuMmYlJSBvZiBldmVudCBsb29wcyB3ZXJlIHByb2R1Y3RpdmUuJXRAXVwiXG4gICAgICAgICAgICAgKDEwMC4gKi4gZXZlbnRzIC8uIChhbGwgKy4gZXZlbnRzKSlcbiAgICAgICAgICAgICAoZnVuIGYgLT4gaWYgYWxsID4gMC4gdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQCBOdWxsIGV2ZW50IGNhdXNlOlwiKSk7XG4gICAgICBdXG4gICAgOjogKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX3VuYXJ5ID4gMCB0aGVuXG4gICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICBcIlZhbGlkIGVtYmVkZGluZyBidXQgbm8gbG9uZ2VyIHVuYXJ5IHdoZW4gcmVxdWlyZWQ6IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnQgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBOb25lKVxuICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnkgPiAwIHRoZW5cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiVmFsaWQgZW1iZWRkaW5nIGJ1dCBub3QgYmluYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludCB0LkNvdW50ZXIuRWZmaWNpZW5jeS5ub19tb3JlX2JpbmFyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kuY2xhc2hpbmdfaW5zdGFuY2UgPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQ2xhc2hpbmcgaW5zdGFuY2U6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8uIGFsbCkpO1xuICAgICAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgJCQgKChpZiB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb24gPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgIChIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUGVydHVyYmF0aW9uIGludGVycnVwdGluZyB0aW1lIGFkdmFuY2U6ICUuMmYlJVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgxMDAuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICouIGZsb2F0X29mX2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQuQ291bnRlci5FZmZpY2llbmN5LnRpbWVfY29ycmVjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICAgICAgICQkIFtdKSkpKVxuXG4gIGxldCBkb250X2djX21lID0gcmVmIFtdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBIdG1sX3R5cGVzLmRpdl9jb250ZW50IFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPVxuICAgIGxldCBzdGF0ZV9sb2csIHNldF9zdGF0ZV9sb2cgPSBSZWFjdGl2ZURhdGEuUkxpc3QuY3JlYXRlIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGRvbnRfZ2NfbWUgOj1cbiAgICAgICAgW1xuICAgICAgICAgIEx3dF9yZWFjdC5TLm1hcF9zXG4gICAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIHN0YXR1cyAtPlxuICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBlZmYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGN1cnJlbnRfZXZlbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVhY3RpdmVEYXRhLlJMaXN0LnNldCBzZXRfc3RhdGVfbG9nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZWZmaWNpZW5jeV9kZXRhaWwgfmN1cnJlbnRfZXZlbnQgZWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LnNldCBzZXRfc3RhdGVfbG9nIFtdIGluXG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsO1xuICAgICAgICBdXG4gICAgaW5cblxuICAgIFtcbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICA8ZGl2IGNsYXNzPVwicm93XCIgaWQ9XCJ8fVxuICAgICAgICAgIGlkXG4gICAgICAgICAge3xcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIHx9XG4gICAgICAgICAgWyBldmVudF9wcm9ncmVzc19iYXIgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtM1wiPmV2ZW50czwvZGl2PlxuICAgICA8L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJwcm9ncmVzc1wiPlxuICAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRpbWVfcHJvZ3Jlc3NfYmFyICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj50aW1lPC9kaXY+XG4gICAgIDwvZGl2PlxuICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICB8fVxuICAgICAgICAgIFsgdHJhY2tlZF9ldmVudHNfY291bnQgKCkgXVxuICAgICAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj5cbiAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRyYWNrZWRfZXZlbnRzX2xhYmVsICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICA8L2Rpdj5cbiAgICAgPC9kaXY+XG48L2Rpdj5cbjxkaXYgY2xhc3M9XCJ2aXNpYmxlLW1kLWJsb2NrIHZpc2libGUtbGctYmxvY2tcIj5cbnx9XG4gICAgICAgICAgWyBUeXhtbF9qcy5SLkh0bWwuZGl2IHN0YXRlX2xvZyBdXG4gICAgICAgICAge3xcbjwvZGl2PlxuPC9kaXY+XG4gICB8fV07XG4gICAgXVxuXG4gIGxldCBvbmxvYWQgKCkgPSAoKVxuZW5kXG5cbmxldCBzdG9wcGVkX2JvZHkgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWw1LmVsdCA9XG4gIGxldCBzdG9wcGVkX3JvdyA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgICAgfmFfY2xhc3M6WyBcImZvcm0tZ3JvdXBcIjsgXCJmb3JtLWdyb3VwLXNtXCIgXVxuICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQgXSk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTEgY29sLW1kLTIgY29sLXhzLTIgY29udHJvbC1sYWJlbFwiIGZvcj1cInx9XG4gICAgICAgICAgSW5wdXRQbG90UGVyaW9kLmlkXG4gICAgICAgICAge3xcIj5QbG90IHBlcmlvZDwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLXhzLTNcIj58fVxuICAgICAgICAgIChJbnB1dFBsb3RQZXJpb2QuY29udGVudCAoKSlcbiAgICAgICAgICB7fDwvZGl2Pnx9XVxuICBpblxuICBsZXQgcGF1c2VkX3JvdyA9IEZvcm1QZXJ0dXJiYXRpb24uY29udGVudCAoKSBpblxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtY29udHJvbHNcIiBdXG4gICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQ7IFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgXVxuICAgIChbJWh0bWxcbiAgICAgICB7fFxuICAgICAgICAgPGZvcm0gY2xhc3M9XCJmb3JtLWhvcml6b250YWxcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY29sLWxnLTEgY29sLXNtLTIgaGlkZGVuLXhzIGNvbnRyb2wtbGFiZWxcIiBmb3I9XCJ8fVxuICAgICAgICAgSW5wdXRQYXVzZUNvbmRpdGlvbi5pZFxuICAgICAgICAge3xcIj5QYXVzZSBpZjwvbGFiZWw+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTIgY29sLXNtLTMgY29sLXhzLTVcIj58fVxuICAgICAgICAgKElucHV0UGF1c2VDb25kaXRpb24uY29udGVudCAoKSlcbiAgICAgICAgIHt8PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTkgY29sLW1kLTggY29sLXhzLTdcIj58fVxuICAgICAgICAgKERpdkVycm9yTWVzc2FnZS5jb250ZW50ICgpKVxuICAgICAgICAge3w8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj58fVxuICAgICAgICAgWyBzdG9wcGVkX3JvdyBdIHt8PC9mb3JtPnx9XVxuICAgIDo6IHBhdXNlZF9yb3cpXG5cbmxldCBpbml0aWFsaXppbmdfYm9keSAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICB+YV9jbGFzczpbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLWNvbnRyb2xzXCIgXVxuICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5JTklUQUxJWklORyBdKTtcbiAgICAgIF1cbiAgICBbIEh0bWwuZW50aXR5IFwibmJzcFwiIF1cblxubGV0IHJ1bm5pbmdfYm9keSAoKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgfmFfY2xhc3M6WyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1jb250cm9sc1wiIF1cbiAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUlVOTklORyBdKTtcbiAgICAgIF1cbiAgICAoUnVubmluZ1BhbmVsTGF5b3V0LmNvbnRlbnQgKCkpXG5cbmxldCBmb290ZXIgKCkgPVxuICBbJWh0bWxcbiAgICB7fFxuICAgICAgICAgPGRpdiBjbGFzcz1cInBhbmVsLWZvb3RlclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgfH1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTRcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlNUT1BQRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvblN0YXJ0LmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUEFVU0VEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25Db250aW51ZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uT3V0cHV0cy5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uVHJhY2UuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy00XCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25QYXVzZS5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC14cy0yXCI7IFwiY29sLXNtLTFcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRDsgU3RhdGVfc2ltdWxhdGlvbi5SVU5OSU5HIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25DbGVhci5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTFcIjsgXCJjb2wteHMtM1wiIF0gXVxuICAgICAgICAgIChEaXZTdGF0dXNJbmRpY2F0b3IuY29udGVudCAoKSBAIFsgSHRtbC5lbnRpdHkgXCJuYnNwXCIgXSk7XG4gICAgICBdXG4gICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN0YXRlX3Byb2plY3QubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBSZWFjdC5TLmNvbnN0IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gUmVhY3QuUy5jb25zdCBbIFwicGFuZWxcIjsgXCJwYW5lbC1kZWZhdWx0XCIgXSkpO1xuICAgICAgXVxuICAgIFsgc3RvcHBlZF9ib2R5ICgpOyBpbml0aWFsaXppbmdfYm9keSAoKTsgcnVubmluZ19ib2R5ICgpOyBmb290ZXIgKCkgXVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IEZvcm1QZXJ0dXJiYXRpb24ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IElucHV0UGF1c2VDb25kaXRpb24ub25sb2FkICgpIGluXG4gIGxldCAoKSA9IElucHV0UGxvdFBlcmlvZC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gRGl2RXJyb3JNZXNzYWdlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25TdGFydC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uUGF1c2Uub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvbkNvbnRpbnVlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25UcmFjZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uT3V0cHV0cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uQ2xlYXIub25sb2FkICgpIGluXG4gIGxldCAoKSA9IERpdlN0YXR1c0luZGljYXRvci5vbmxvYWQgKCkgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFslaHRtbFxuICAgIHt8XG48aDI+VGhlIEthcHBhIExhbmd1YWdlPC9oMj5cbjxwPkNvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUY8cD5cbjxwPkthcHBhIExhbmd1YWdlIHNvZnR3YXJlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvbGdwbC0zLjAuaHRtbFwiPkdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDM8L2E+LlxuIFNvdXJjZSBjb2RlIGlzIHB1Ymxpc2hlZCBvbiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbVwiPmh0dHBzOi8vZ2l0aHViLmNvbS9LYXBwYS1EZXYvS2FTaW08L2E+LjwvcD5cblxuPHA+VGhpcyB1c2VyIGludGVyZmFjZSB3YXMgZGV2ZWxvcGVkIGluIHRoZSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9mb250YW5hLmhtcy5oYXJ2YXJkLmVkdVwiPkZvbnRhbmEgTGFiPC9hPiB1bmRlciBEQVJQQSBncmFudCBXOTExTkYtMTQtMS0wMzY3LiBWaXN1YWxpemF0aW9ucyB3ZXJlIGRldmVsb3BlZCBpbiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vY3JlYXRpdmVjb2Rpbmcuc29lLnVjc2MuZWR1L25ld3MucGhwXCI+Q3JlYXRpdmUgQ29kaW5nIExhYjwvYT4gb2YgQW5ndXMgRm9yYmVzPC9wPlxuXG48cD5SZWZlcmVuY2UgbWFudWFsIGlzIG9ubGluZSBhdCA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly93d3cua2FwcGFsYW5ndWFnZS5vcmdcIj5odHRwczovL3d3dy5rYXBwYWxhbmd1YWdlLm9yZzwvYT4uPC9wPlxuXG48dWw+XG48bGk+V3JpdHRlbiBpbiA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL29jYW1sLm9yZ1wiPlxuICA8IS0tPGltZyBzcmM9XCJodHRwOi8vb2NhbWwub3JnL2xvZ28vQ29sb3VyL1NWRy9jb2xvdXItbG9nby5zdmdcIlxuICAgICAgIGFsdD1cIi0tPk9DYW1sPCEtLVwiXG4gICAgICAgc3R5bGU9XCJib3JkZXI6IG5vbmU7IHdpZHRoOiAxNTBweDtcIiAvPiAtLT5cbjwvYT4uIENvbXBpbGVkIGJ5IDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vb2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXCI+anNfb2Zfb2NhbWw8L2E+LjwvbGk+XG48bGk+VGV4dCBlZGl0b3IgdXNlZCBpcyA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2NvZGVtaXJyb3IubmV0XCI+Q29kZU1pcnJvcjwvYT4uIEl0IGNvbWVzIHdpdGggYSBsb3Qgb2YgZmVhdHVyZXMuIENoZWNrIG91dCBpdHMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9jb2RlbWlycm9yLm5ldC9kb2MvbWFudWFsLmh0bWwjY29tbWFuZHNcIj5tYW51YWw8L2E+LjwvbGk+XG48bGk+VmlzdWFsaXphdGlvbiByZWxpZXMgb24gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZDNqcy5vcmdcIj5kMzwvYT4uPC9saT5cbjxsaT5MYXlvdXQgdXNlcyA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL2dldGJvb3RzdHJhcC5jb21cIj5ib290c3RyYXA8L2E+IGFuZCA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cHM6Ly9qcXVlcnl1aS5jb21cIj5qUXVlcnk8L2E+LjwvbGk+XG48L3VsPlxuXG48aDM+Tm9taW5hbCBjb250cmlidXRpb248L2gzPlxuPGRsIGNsYXNzPVwiZGwtaG9yaXpvbnRhbFwiPjxkdD5QaWVycmUgQm91dGlsbGllcjwvZHQ+PGRkPkdlbmVyYWwgZGVzaWduIGFuZCBtYWludGVuYW5jZSwgcHJvdG9jb2xzPC9kZD48ZHQ+WGluZyBMaTwvZHQ+PGRkPk91dHB1dHMgdmlzdWFsaXphdGlvbnMsIEdlbmVyYWwgbGF5b3V0PC9kZD48ZHQ+TXV0YWFtYmEgTWFhc2hhPC9kdD48ZGQ+VHJhbnNwYXJlbnQgbXVsdGkgYmFja2VuZCBhcmNoaXRlY3R1cmUsIHByb3RvY29scywgT3V0cHV0IHZpc3VhbGl6YXRpb25zLCBHZW5lcmFsIGxheW91dDwvZGQ+PC9kbD5cbnx9XVxuXG5sZXQgb25sb2FkICgpID0gKClcbmxldCBvbnJlc2l6ZSAoKSA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBKcyB1dGlsICopXG4oKiByZWZlcmVuY2VzXG4gICBodHRwOi8vdG9zcy5zb3VyY2Vmb3JnZS5uZXQvb2NhbWwuaHRtbFxuICAgaHR0cDovL3BlcHBlcm1pbnQuanAvdGVtcC9hby9hby5tbFxuKilcbmxldCBwcm90b3R5cGUgPSBKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3IucHJvdG90eXBlXCJcblxubGV0IGNyZWF0ZV9oYW5kbGVyIGxhYmVsID1cbiAgbGV0IGhlYWQgOiBjaGFyID0gQ2hhci51cHBlcmNhc2VfYXNjaWkgKFN0cmluZy5nZXQgbGFiZWwgMCkgaW5cbiAgbGV0IHRhaWwgOiBzdHJpbmcgPSBTdHJpbmcuc3ViIGxhYmVsIDEgKFN0cmluZy5sZW5ndGggbGFiZWwgLSAxKSBpblxuICBsZXQgb25fbGFiZWwgPSBcIm9uXCIgXiBDaGFyLmVzY2FwZWQgaGVhZCBeIHRhaWwgaW5cbiAgbGV0IHdyYXBwZXIgaGFuZGxlciA9IChKcy5VbnNhZmUucHVyZV9qc19leHByIFwidGhpc1wiKSMjb24gbGFiZWwgaGFuZGxlciBpblxuICBsZXQgKCkgPSBKcy5VbnNhZmUuc2V0IHByb3RvdHlwZSAoSnMuc3RyaW5nIG9uX2xhYmVsKSB3cmFwcGVyIGluXG4gICgpXG5cbigqIGFkZCBvbiBoYW5kbGVycyB0byB0aGUgcHJvdG90eXBlcyBzbyB0aGV5IGNhbiBiZSBzdHJvbmdseSB0eXBlZCAqKVxubGV0ICgpID1cbiAgTGlzdC5pdGVyIGNyZWF0ZV9oYW5kbGVyXG4gICAgW1xuICAgICAgXCJiZWZvcmVDaGFuZ2VcIjtcbiAgICAgIFwiYmVmb3JlQ3Vyc29yRW50ZXJcIjtcbiAgICAgIFwiYmVmb3JlU2VsZWN0aW9uQ2hhbmdlXCI7XG4gICAgICBcImJsdXJcIjtcbiAgICAgIFwiY2hhbmdlc1wiO1xuICAgICAgXCJjbGVhclwiO1xuICAgICAgXCJjb250ZXh0bWVudVwiO1xuICAgICAgXCJjb3B5XCI7XG4gICAgICBcImN1cnNvckFjdGl2aXR5XCI7XG4gICAgICBcImN1dFwiO1xuICAgICAgXCJkYmxjbGlja1wiO1xuICAgICAgXCJkZWxldGVcIjtcbiAgICAgIFwiZHJhZ2VudGVyXCI7XG4gICAgICBcImRyYWdsZWF2ZVwiO1xuICAgICAgXCJkcmFnb3ZlclwiO1xuICAgICAgXCJkcmFnc3RhcnRcIjtcbiAgICAgIFwiZHJvcFwiO1xuICAgICAgXCJlbGVjdHJpY0lucHV0XCI7XG4gICAgICBcImZvY3VzXCI7XG4gICAgICBcImd1dHRlckNsaWNrXCI7XG4gICAgICBcImd1dHRlckNvbnRleHRNZW51XCI7XG4gICAgICBcImhpZGVcIjtcbiAgICAgIFwiaW5wdXRSZWFkXCI7XG4gICAgICBcImtleUhhbmRsZWRcIjtcbiAgICAgIFwia2V5cHJlc3NcIjtcbiAgICAgIFwia2V5dXBcIjtcbiAgICAgIFwibW91c2Vkb3duXCI7XG4gICAgICBcInBhc3RlXCI7XG4gICAgICBcInJlZHJhd1wiO1xuICAgICAgXCJyZW5kZXJMaW5lXCI7XG4gICAgICBcInNjcm9sbFwiO1xuICAgICAgXCJzY3JvbGxDdXJzb3JJbnRvVmlld1wiO1xuICAgICAgXCJzd2FwRG9jXCI7XG4gICAgICBcInRvdWNoc3RhcnRcIjtcbiAgICAgIFwidW5oaWRlXCI7XG4gICAgICBcInVwZGF0ZVwiO1xuICAgICAgXCJ2aWV3cG9ydENoYW5nZVwiO1xuICAgICAgXCJjaGFuZ2VcIjtcbiAgICAgIFwia2V5ZG93blwiO1xuICAgIF1cblxuY2xhc3MgdHlwZSBwb3NpdGlvbiA9IG9iamVjdFxuICBtZXRob2QgY2ggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgbGluZSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBkaW1lbnNpb24gPSBvYmplY3RcbiAgbWV0aG9kIGxlZnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgcmlnaHQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuICBtZXRob2QgdG9wIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgbWV0aG9kIGJvdHRvbSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHBvc2l0aW9uIDogKGludCAtPiBpbnQgLT4gcG9zaXRpb24gSnMudCkgSnMuY29uc3RyID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLl9Qb3NcblxudHlwZSBzZXZlcml0eSA9IEVycm9yIHwgV2FybmluZ1xuXG5jbGFzcyB0eXBlIGxpbnQgPSBvYmplY3RcbiAgbWV0aG9kIG1lc3NhZ2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBzZXZlcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcbiAgbWV0aG9kIGZyb20gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRvXyA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9saW50IDogbGludCBKcy50IEpzLmNvbnN0ciA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX2xpbnQgfihtZXNzYWdlIDogc3RyaW5nKSB+KHNldmVyaXR5IDogc2V2ZXJpdHkpXG4gICAgfihmcm9tIDogcG9zaXRpb24gSnMudCkgfih0b18gOiBwb3NpdGlvbiBKcy50KSA6IGxpbnQgSnMudCA9XG4gIGxldCByZXN1bHQgPSBuZXclanMgY29uc3RydWN0b3JfbGludCBpblxuICBsZXQgKCkgPSByZXN1bHQjIy5tZXNzYWdlIDo9IEpzLnN0cmluZyBtZXNzYWdlIGluXG4gIGxldCAoKSA9XG4gICAgcmVzdWx0IyMuc2V2ZXJpdHkgOj1cbiAgICAgIG1hdGNoIHNldmVyaXR5IHdpdGhcbiAgICAgIHwgRXJyb3IgLT4gSnMuc3RyaW5nIFwiZXJyb3JcIlxuICAgICAgfCBXYXJuaW5nIC0+IEpzLnN0cmluZyBcIndhcm5pbmdcIlxuICBpblxuICBsZXQgKCkgPSByZXN1bHQjIy5mcm9tIDo9IGZyb20gaW5cbiAgbGV0ICgpID0gcmVzdWx0IyMudG9fIDo9IHRvXyBpblxuICByZXN1bHRcblxuY2xhc3MgdHlwZSBjaGFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGZyb20gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRvXyA6IHBvc2l0aW9uIEpzLnQgSnMucHJvcFxuICBtZXRob2QgdGV4dCA6IEpzLnN0cmluZ19hcnJheSBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHJlbW92ZWQgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBvcmlnaW4gOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX2NoYW5nZSA6IGNoYW5nZSBKcy50IEpzLmNvbnN0ciA9IEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxubGV0IGNyZWF0ZV9jaGFuZ2UgKCkgOiBjaGFuZ2UgSnMudCA9IG5ldyVqcyBjb25zdHJ1Y3Rvcl9jaGFuZ2VcblxuY2xhc3MgdHlwZSBjb2RlbWlycm9yID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIHNldFZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgSnMubWV0aFxuXG4gICgqIFByb2dyYW1tYXRpY2FsbHkgc2V0IHRoZSBzaXplIG9mIHRoZSBlZGl0b3IgKG92ZXJyaWRpbmcgdGhlXG4gICAgIGFwcGxpY2FibGUgQ1NTIHJ1bGVzKS4gd2lkdGggYW5kIGhlaWdodCBjYW4gYmUgZWl0aGVyIG51bWJlcnNcbiAgICAgKGludGVycHJldGVkIGFzIHBpeGVscykgb3IgQ1NTIHVuaXRzIChcIjEwMCVcIiwgZm9yIGV4YW1wbGUpLlxuICAgICBZb3UgY2FuIHBhc3MgbnVsbCBmb3IgZWl0aGVyIG9mIHRoZW0gdG8gaW5kaWNhdGUgdGhhdCB0aGF0XG4gICAgIGRpbWVuc2lvbiBzaG91bGQgbm90IGJlIGNoYW5nZWQuXG4gICopXG4gIG1ldGhvZCBzZXRTaXplIDogaW50IEpzLnQgSnMub3B0IC0+IGludCBKcy50IEpzLm9wdCAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBTY3JvbGwgdGhlIGVkaXRvciB0byBhIGdpdmVuIChwaXhlbCkgcG9zaXRpb24uIEJvdGggYXJndW1lbnRzXG4gICAgIG1heSBiZSBsZWZ0IGFzIG51bGwgb3IgdW5kZWZpbmVkIHRvIGhhdmUgbm8gZWZmZWN0LiAqKVxuICBtZXRob2Qgc2Nyb2xsVG8gOiBpbnQgSnMub3B0IC0+IGludCBKcy5vcHQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIGNoYXJDb29yZHMgOlxuICAgIHBvc2l0aW9uIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0IC0+IGRpbWVuc2lvbiBKcy50IEpzLm1ldGhcblxuICBtZXRob2QgZ2V0U2Nyb2xsZXJFbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIG9uIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gKERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogZmlyZWQgd2hlbiBjb250ZW50IGlzIGNoYW5nZWQgKilcbiAgbWV0aG9kIG9uQ2hhbmdlIDogKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiYXRjaGVkIGNoYW5nZWQgb3BlcmF0aW9uICopXG4gIG1ldGhvZCBvbkNoYW5nZXMgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLmpzX2FycmF5IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmVmb3JlIGEgY2hhbmdlIGlzIGFwcGxpZWQgKilcbiAgbWV0aG9kIG9uQmVmb3JlQ2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGN1cnNvciBtb3Zlcywgb3IgYW55IGNoYW5nZSAqKVxuICBtZXRob2Qgb25DdXJzb3JBY3Rpdml0eSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiBuZXcgaW5wdXQgaXMgcmVhZCAqKVxuICBtZXRob2Qgb25LZXlIYW5kbGVkIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiB3aGVuIG5ldyBpbnB1dCBpcyByZWFkICopXG4gIG1ldGhvZCBvbklucHV0UmVhZCA6IChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiB0ZXh0IG1hdGNoZXMgZWxlY3RyaWMgcGF0dGVybiAqKVxuICBtZXRob2Qgb25FbGVjdHJpY0lucHV0IDogKGNvZGVtaXJyb3IgSnMudCAtPiBpbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBiZWZvcmUgYSBzZWxlY3Rpb24gaXMgbW92ZWQgVE9ETyAqKVxuICBtZXRob2Qgb25CZWZvcmVTZWxlY3Rpb25DaGFuZ2UgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gJ2EgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogdGhlIHZpZXcgcG9ydCBjaGFuZ2VkICopXG4gIG1ldGhvZCBvblZpZXdwb3J0Q2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IGludCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqICBkb2N1bWVudCBzd2FwcGVkICopXG4gIG1ldGhvZCBvblN3YXBEb2MgOiAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGd1dHRlciBjbGlja2VkICopXG4gIG1ldGhvZCBvbkd1dHRlckNsaWNrIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+XG4gICAgdW5pdCBKcy5tZXRoXG5cbiAgKCogY29udGV4dCBtZW51IGV2ZW50IGZyb20gZ3V0dGVyICopXG4gIG1ldGhvZCBvbkd1dHRlckNvbnRleHRNZW51IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGludCBKcy50IC0+IEpzLmpzX3N0cmluZyAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+XG4gICAgdW5pdCBKcy5tZXRoXG5cbiAgKCogZm9jdXMgKilcbiAgbWV0aG9kIG9uRm9jdXMgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJsdXIgKilcbiAgbWV0aG9kIG9uQmx1ciA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogc2Nyb2xsICopXG4gIG1ldGhvZCBvblNjcm9sbCA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogY3Vyc29yIHNjcm9sbGVkIGluIHZpZXcqKVxuICBtZXRob2Qgb25TY3JvbGxDdXJzb3JJbnRvVmlldyA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGRvbSB1cGRhdGVkICopXG4gIG1ldGhvZCBvblVwZGF0ZSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogbGluZSByZW5kZXJlZCAqKVxuICBtZXRob2Qgb25SZW5kZXJMaW5lIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uTW91c2Vkb3duIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRGJsY2xpY2sgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Ub3VjaHN0YXJ0IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uQ29udGV4dG1lbnUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXlkb3duIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uS2V5cHJlc3MgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25LZXl1cCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkN1dCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkNvcHkgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25QYXN0ZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdzdGFydCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdlbnRlciA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdvdmVyIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJhZ2xlYXZlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uRHJvcCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRlbGV0ZSA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25CZWZvcmVDdXJzb3JFbnRlciA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25DbGVhciA6IChwb3NpdGlvbiBKcy50IC0+IHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvbkhpZGUgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uVW5oaWRlIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvblJlZHJhdyA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgc2V0Q3Vyc29yIDogcG9zaXRpb24gSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGdldEN1cnNvciA6IHBvc2l0aW9uIEpzLnQgSnMubWV0aFxuICBtZXRob2Qgc2V0U2VsZWN0aW9uIDogcG9zaXRpb24gSnMudCAtPiBwb3NpdGlvbiBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcGVyZm9ybUxpbnQgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGxpbnRfY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgZGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgbWV0aG9kIGdldEFubm90YXRpb25zIDpcbiAgICAoSnMuanNfc3RyaW5nIC0+XG4gICAgbGludF9jb25maWd1cmF0aW9uIEpzLnQgLT5cbiAgICBjb2RlbWlycm9yIEpzLnQgLT5cbiAgICBsaW50IEpzLnQgSnMuanNfYXJyYXkgSnMudClcbiAgICBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsaW50T25DaGFuZ2UgOiBib29sIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb24gOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCBKcy5jb25zdHIgPVxuICBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24gKCkgOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gIG5ldyVqcyBjb25zdHJ1Y3Rvcl9saW50X2NvbmZpZ3VyYXRpb25cblxuY2xhc3MgdHlwZSBjb25maWd1cmF0aW9uID0gb2JqZWN0XG4gICgqIFRoZSBzdGFydGluZyB2YWx1ZSBvZiB0aGUgZWRpdG9yLiAqKVxuICBtZXRob2QgdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIG1vZGUgdG8gdXNlLiAqKVxuICBtZXRob2QgbW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBFeHBsaWNpdGx5IHNldCB0aGUgbGluZSBzZXBhcmF0b3IgZm9yIHRoZSBlZGl0b3IuICAqKVxuICBtZXRob2QgbGluZVNlcGFyYXRvciA6IEpzLmpzX3N0cmluZyBKcy5vcHQgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIHRoZW1lIHRvIHN0eWxlIHRoZSBlZGl0b3Igd2l0aC4gKilcbiAgbWV0aG9kIHRoZW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIEhvdyBtYW55IHNwYWNlcyBhIGJsb2NrIHNob3VsZCBiZSBpbmRlbnRlZC4gICopXG4gIG1ldGhvZCBpbmRlbnRVbml0IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIFdoZXRoZXIgdG8gdXNlIHRoZSBjb250ZXh0LXNlbnNpdGl2ZSBpbmRlbnRhdGlvbiAqKVxuICBtZXRob2Qgc21hcnRJbmRlbnQgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSB3aWR0aCBvZiBhIHRhYiBjaGFyYWN0ZXIuICopXG4gIG1ldGhvZCB0YWJTaXplIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSBmaXJzdCBOKnRhYlNpemUgaW4gaW5kZW50YXRpb24gc2hvdWxkIE4gdGFicy4gKilcbiAgbWV0aG9kIGluZGVudFdpdGhUYWJzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgZWRpdG9yIHNob3VsZCByZS1pbmRlbnQgdGhlIGN1cnJlbnQgbGluZS4gKilcbiAgbWV0aG9kIGVsZWN0cmljQ2hhcnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIEEgcmVndWxhciBleHByZXNzaW9uIHVzZWQgdG8gZGV0ZXJtaW5lIHNwZWNpYWwgcGxhY2Vob2xkZXIuICopXG4gIG1ldGhvZCBzcGVjaWFsQ2hhcnMgOiBKcy5yZWdFeHAgSnMudCBKcy5wcm9wXG5cbiAgKCogQSBmdW5jdGlvbiBpZGVudGlmaWVzIHNwZWNpYWxDaGFycyBhbmQgcHJvZHVjZXMgYSBET00gbm9kZSAqKVxuICBtZXRob2Qgc3BlY2lhbENoYXJQbGFjZWhvbGRlciA6IChpbnQgLT4gRG9tX2h0bWwuZWxlbWVudCBKcy50KSBKcy5wcm9wXG5cbiAgKCogSG9yaXpvbnRhbCBjdXJzb3IgbW92ZW1lbnQgdGhyb3VnaCByaWdodC10by1sZWZ0LiAqKVxuICBtZXRob2QgcnRsTW92ZVZpc3VhbGx5IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBDb25maWd1cmVzIHRoZSBrZXkgbWFwIHRvIHVzZS4gKilcbiAgbWV0aG9kIGtleU1hcCA6IHN0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBzcGVjaWZ5IGV4dHJhIGtleSBiaW5kaW5ncyBmb3IgdGhlIGVkaXRvciAqKVxuICBtZXRob2QgZXh0cmFLZXlzIDogJ2EgSnMucHJvcFxuXG4gICgqIFNjcm9sbCBvciB3cmFwIGZvciBsb25nIGxpbmVzICopXG4gIG1ldGhvZCBsaW5lV3JhcHBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqICBTaG93IGxpbmUgbnVtYmVycyB0byB0aGUgbGVmdCBvZiB0aGUgZWRpdG9yICopXG4gIG1ldGhvZCBsaW5lTnVtYmVycyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQXQgd2hpY2ggbnVtYmVyIHRvIHN0YXJ0IGNvdW50aW5nIGxpbmVzLiBEZWZhdWx0IGlzIDEuICopXG4gIG1ldGhvZCBmaXJzdExpbmVOdW1iZXIgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogQSBmdW5jdGlvbiB1c2VkIHRvIGZvcm1hdCBsaW5lIG51bWJlcnMuICopXG4gIG1ldGhvZCBsaW5lTnVtYmVyRm9ybWF0dGVyIDogKGludCBKcy50IC0+IEpzLmpzX3N0cmluZykgSnMudCBKcy5wcm9wXG5cbiAgKCogQWRkIGV4dHJhIGd1dHRlcnMgKilcbiAgbWV0aG9kIGd1dHRlcnMgOiBKcy5zdHJpbmdfYXJyYXkgSnMudCBKcy5wcm9wXG5cbiAgKCogR3V0dGVyIHNjcm9sbHMgYWxvbmcgd2l0aCB0aGUgY29udGVudCBob3Jpem9udGFsbHkgKilcbiAgbWV0aG9kIGZpeGVkR3V0dGVyIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBDaG9vc2VzIGEgc2Nyb2xsYmFyIGltcGxlbWVudGF0aW9uLiAqKVxuICBtZXRob2Qgc2Nyb2xsYmFyU3R5bGUgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogY292ZXIgZ3V0dGVyIHdpdGggd2l0aCBjbGFzcyBDb2RlTWlycm9yLWd1dHRlci1maWxsZXIuICopXG4gIG1ldGhvZCBjb3Zlckd1dHRlck5leHRUb1Njcm9sbGJhciA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogU2VsZWN0cyB0aGUgd2F5IENvZGVNaXJyb3IgaGFuZGxlcyBpbnB1dCBhbmQgZm9jdXMuICopXG4gIG1ldGhvZCBpbnB1dFN0eWxlIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIGRpc2FibGUgZWRpdGluZyBvZiB0aGUgZWRpdG9yIGNvbnRlbnQgKilcbiAgbWV0aG9kIHJlYWRPbmx5IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiB0aGUgY3Vyc29yIHNob3VsZCBiZSBkcmF3biB3aGVuIGEgc2VsZWN0aW9uIGlzIGFjdGl2ZS4gKilcbiAgbWV0aG9kIHNob3dDdXJzb3JXaGVuU2VsZWN0aW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBjb3B5IG9yIGN1dCB3aGVuIHRoZXJlIGlzIG5vIHNlbGVjdGlvbiB3aWxsIGNvcHkgb3IgY3V0IHdob2xlIGxpbmVzICopXG4gIG1ldGhvZCBsaW5lV2lzZUNvcHlDdXQgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFdoZW4gcGFzdGluZyBzb21ldGhpbmcgZnJvbSBhbiBleHRlcm5hbCBzb3VyY2UgKG5vdCBmcm9tIHRoZVxuICAgICBlZGl0b3IgaXRzZWxmKSwgaWYgdGhlIG51bWJlciBvZiBsaW5lcyBtYXRjaGVzIHRoZSBudW1iZXIgb2ZcbiAgICAgc2VsZWN0aW9uLCBDb2RlTWlycm9yIHdpbGwgYnkgZGVmYXVsdCBpbnNlcnQgb25lIGxpbmUgcGVyXG4gICAgIHNlbGVjdGlvbi4gWW91IGNhbiBzZXQgdGhpcyB0byBmYWxzZSB0byBkaXNhYmxlIHRoYXRcbiAgICAgYmVoYXZpb3IuICopXG4gIG1ldGhvZCBwYXN0ZUxpbmVzUGVyU2VsZWN0aW9uIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBEZXRlcm1pbmVzIHdoZXRoZXIgbXVsdGlwbGUgc2VsZWN0aW9ucyBhcmUgam9pbmVkIGFzIHNvb24gYXNcbiAgICAgdGhleSB0b3VjaCAodGhlIGRlZmF1bHQpIG9yIG9ubHkgd2hlbiB0aGV5IG92ZXJsYXAgKHRydWUpLiAqKVxuICBtZXRob2Qgc2VsZWN0aW9uc01heVRvdWNoIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBtYXhpbXVtIG51bWJlciBvZiB1bmRvICopXG4gIG1ldGhvZCB1bmRvRGVwdGggOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogbWlsbGlzZWNvbmRzIG9mIGluYWN0aXZpdHkgdG8gY3JlYXRlIGEgbmV3IGhpc3RvcnkgZXZlbnQgKilcbiAgbWV0aG9kIGhpc3RvcnlFdmVudERlbGF5IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIHRhYiBpbmRleCBvZiBlZGl0b3IgKilcbiAgbWV0aG9kIHRhYmluZGV4IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIENvZGVNaXJyb3IgZm9jdXMgaXRzZWxmIG9uIGluaXRpYWxpemF0aW9uICopXG4gIG1ldGhvZCBhdXRvZm9jdXMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGVuYWJsZSBkcmFnLWFuZC1kcm9wICopXG4gIG1ldGhvZCBkcmFnRHJvcCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogd2hlbiBzZXQgZmlsZXMgd2l0IG1pbWUgdHlwZSBjYW4gYmUgZHJvcHBlZCBpbnRvIHRoZSBlZGl0b3IgKilcbiAgbWV0aG9kIGFsbG93RHJvcEZpbGVUeXBlcyA6IEpzLnN0cmluZ19hcnJheSBKcy5vcHQgSnMudCBKcy5wcm9wXG5cbiAgKCogSGFsZi1wZXJpb2QgaW4gbWlsbGlzZWNvbmRzIHVzZWQgZm9yIGN1cnNvciBibGlua2luZy4gKilcbiAgbWV0aG9kIGN1cnNvckJsaW5rUmF0ZSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBIb3cgbXVjaCBleHRyYSBzcGFjZSB0byBhbHdheXMga2VlcCBhYm92ZSBhbmQgYmVsb3cgdGhlIGN1cnNvciAqKVxuICBtZXRob2QgY3Vyc29yU2Nyb2xsTWFyZ2luIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIERldGVybWluZXMgdGhlIGhlaWdodCBvZiB0aGUgY3Vyc29yLiAqKVxuICBtZXRob2QgY3Vyc29ySGVpZ2h0IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIHRoZSBjb250ZXh0IG1lbnUgaXMgb3BlbmVkIHdpdGggYSBjbGljayBvdXRzaWRlIG9mIHRoZVxuICAgICBjdXJyZW50IHNlbGVjdGlvbiwgbW92ZSBjdXJzb3IgdG8gdGhlIHBvaW50IG9mIHRoZSBjbGljayopXG4gIG1ldGhvZCByZXNldFNlbGVjdGlvbk9uQ29udGV4dE1lbnUgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHRpbWUgdG8gcnVuIGhpZ2hsaWdodGluZyB0aHJlYWQgKilcbiAgbWV0aG9kIHdvcmtUaW1lIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIGRlbGF5IHRvIHJ1biBoaWdobGlnaHRpbmcgdGhyZWFkICopXG4gIG1ldGhvZCB3b3JrRGVsYXkgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogaG93IG9mdGVuIHRvIHBvbGwgZm9yIGNoYW5nZXMgKilcbiAgbWV0aG9kIHBvbGxJbnRlcnZhbCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBjb21iaW5lIHRva2VucyB0byBhIHNpbmdsZSBzcGFuICopXG4gIG1ldGhvZCBmbGF0dGVuU3BhbnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHByZWZpeCBjc3MgKilcbiAgbWV0aG9kIGFkZE1vZGVDbGFzcyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogbGVuZ3RoIHRvIGhpZ2hsaWdodCAqKVxuICBtZXRob2QgbWF4SGlnaGxpZ2h0TGVuZ3RoIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBhbW91bnQgb2YgbGluZXMgdGhhdCBhcmUgcmVuZGVyZWQgYWJvdmUgYW5kIGJlbG93IHRoZVxuICAgICB2aXNpYmxlIGRvY3VtZW50KilcbiAgbWV0aG9kIHZpZXdwb3J0TWFyZ2luIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIEFERE9OIHNlbGVjdGlvbi9hY3RpdmUtbGluZS5qcyAqKVxuICBtZXRob2Qgc3R5bGVBY3RpdmVMaW5lIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBBRERPTiBsaW50L2xpbnQuanMgKilcbiAgbWV0aG9kIGxpbnQgOiBsaW50X2NvbmZpZ3VyYXRpb24gSnMudCBKcy5wcm9wXG5cbiAgKCogQURET04gZWRpdC9tYXRjaGJyYWNrZXRzLmpzICopXG4gIG1ldGhvZCBtYXRjaEJyYWNrZXRzIDogYm9vbCBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgZGVmYXVsdF9jb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbiBKcy50ID1cbiAgKEpzLlVuc2FmZS5qc19leHByIFwiQ29kZU1pcnJvclwiKSMjLmRlZmF1bHRzXG5cbmxldCBmcm9tVGV4dEFyZWEgKGRvbSA6IERvbV9odG1sLmVsZW1lbnQgSnMudClcbiAgICAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24gSnMudCkgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAoKiBsZXQgKCkgPSBKcy5kZWJ1Z2dlcigpIGluICopXG4gIChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjI2Zyb21UZXh0QXJlYVxuICAgIChKcy5VbnNhZmUuaW5qZWN0IGRvbSlcbiAgICAoSnMuVW5zYWZlLmluamVjdCBjb25maWd1cmF0aW9uKVxuXG5jbGFzcyB0eXBlIGNvbW1hbmRzID0gb2JqZWN0XG4gIG1ldGhvZCBzYXZlIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSBKcy5wcm9wXG5lbmRcblxubGV0IGNvbW1hbmRzIDogY29tbWFuZHMgSnMudCA9IChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjIy5jb21tYW5kc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IGNyZWF0ZV9maWxlID8odGV4dCA9IEx3dC5yZXR1cm4gKEpzLnN0cmluZyBcIlwiKSkgKGZpbGVfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIHRleHQgPj49IGZ1biB0eHQgLT5cbiAgICAgICAgICBsZXQgY29udGVudCA9IEpzLnRvX3N0cmluZyB0eHQgaW5cbiAgICAgICAgICBTdGF0ZV9maWxlLmNyZWF0ZV9maWxlIH5maWxlbmFtZTpmaWxlX2lkIH5jb250ZW50XG4gICAgICAgICAgPj49ICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgICAgICBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfZmlsZSAoZmlsZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwic2V0X2ZpbGU6JXNcIiBmaWxlX2lkKSkgaW5cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCBOb25lID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBjbG9zZV9maWxlICgpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUucmVtb3ZlX2ZpbGUgKCkgPj49IGZ1biByIC0+XG4gICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSkgKVxuICAgICAgKCogZ2V0IG5ldyBjb250YWN0IG1hcCAqKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHNldF9maWxlX2NvbXBpbGUgcmFuayAoY29tcGlsZSA6IGJvb2wpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUuc2V0X2NvbXBpbGUgcmFuayBjb21waWxlID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBvcmRlcl9maWxlcyAoZmlsZW5hbWVzIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfX1xuICAgICAgICAoIFN0YXRlX2ZpbGUub3JkZXJfZmlsZXMgZmlsZW5hbWVzID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBleHBvcnRfY3VycmVudF9maWxlICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9maWxlLmdldF9maWxlICgpKVxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIChkYXRhLCBmaWxlbmFtZSkgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGE6KEpzLnN0cmluZyBkYXRhKVxuICAgICAgICAgICAgICAgICAgfm1pbWU6XCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIiB+ZmlsZW5hbWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZmlsZV9uZXdfbW9kYWxfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtbmV3LW1vZGFsXCJcbmxldCBmaWxlX25ld19pbnB1dF9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctaW5wdXRcIlxubGV0IGZpbGVfZHJvcGRvd25fbWVudV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1kcm9wZG93bi1tZW51XCJcbmxldCBmaWxlX25ld19saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1uZXctbGlcIlxubGV0IGZpbGVfb3Blbl9saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1vcGVuLWxpXCJcbmxldCBmaWxlX29wZW5fc2VsZWN0b3JfaWQgPSBcIm1lbnUtZWRpdG9yLW9wZW4tc2VsZWN0b3ItaWRcIlxubGV0IGZpbGVfY2xvc2VfbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtY2xvc2UtbGlcIlxubGV0IGZpbGVfZXhwb3J0X2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLWV4cG9ydC1saVwiXG5sZXQgZmlsZV9jb21waWxlX2NoZWNrYm94ID0gXCJtZW51LWVkaXRvci1maWxlLWNvbXBpbGUtY2hlY2tib3hcIlxuXG4oKiBsaXN0IGZpbGVuYW1lIGFubm90YXRpb24gKilcbmxldCBlbGVtZW50X2dldF9maWxlbmFtZSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gIENvbW1vbi5lbGVtZW50X2RhdGEgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIFwiZmlsZS1pZFwiXG5cbmxldCBlbGVtZW50X3NldF9maWxlbmFtZSAobmFtZSA6IHN0cmluZykgPVxuICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiZGF0YS1maWxlLWlkXCIgbmFtZVxuXG5sZXQgZmlsZV9uZXdfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBmaWxlX25ld19pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBmaWxlX25ld19pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgZmlsZV9uZXdfaW5wdXRcblxubGV0IGZpbGVfY2hlY2tib3ggZmlsZV9pZCBpc19jaGVja2VkID1cbiAgbGV0IGNoZWNrZWRfYXR0cmlidXRlID1cbiAgICBpZiBpc19jaGVja2VkIHRoZW5cbiAgICAgIFsgSHRtbC5hX2NoZWNrZWQgKCkgXVxuICAgIGVsc2VcbiAgICAgIFtdXG4gIGluXG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIChbXG4gICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3g7XG4gICAgICAgICBIdG1sLmFfY2xhc3MgWyBmaWxlX2NvbXBpbGVfY2hlY2tib3ggXTtcbiAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIGZpbGVfaWQ7XG4gICAgICAgXVxuICAgICAgQCBjaGVja2VkX2F0dHJpYnV0ZSlcbiAgICAoKVxuXG5sZXQgb3Blbl9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZpbGVfb3Blbl9zZWxlY3Rvcl9pZDtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJoaWRkZW5cIiBdO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiZmlsZVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYWNjZXB0XCIgXCIua2FcIjtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZHJvcGRvd24gKG1vZGVsIDogU3RhdGVfZmlsZS5tb2RlbCkgPVxuICAoKiBkaXJlY3RvcmllcyAqKVxuICBsZXQgaGlkZV9vbl9lbXB0eSBsID1cbiAgICBpZiBNb2RzLkludE1hcC5pc19lbXB0eSBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2VcbiAgICAgIGxcbiAgaW5cbiAgbGV0IGZpbGVfbGkgPVxuICAgIGxldCBjdXJyZW50X2ZpbGVfcG9zID1cbiAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAoZnVuIHsgU3RhdGVfZmlsZS5yYW5rOyBfIH0gLT4gcmFuaylcbiAgICAgICAgbW9kZWwuU3RhdGVfZmlsZS5jdXJyZW50XG4gICAgaW5cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAocmFuaywgeyBTdGF0ZV9maWxlLm5hbWU7IFN0YXRlX2ZpbGUubG9jYWwgfSkgLT5cbiAgICAgICAgbGV0IGNvbXBpbGUgPSBsb2NhbCA9IE5vbmUgaW5cbiAgICAgICAgbGV0IGxpX2NsYXNzID1cbiAgICAgICAgICAoaWYgY3VycmVudF9maWxlX3BvcyA9IFNvbWUgcmFuayB0aGVuXG4gICAgICAgICAgICAgWyBcImFjdGl2ZVwiIF1cbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFtdKVxuICAgICAgICAgIEAgWyBcInVpLXN0YXRlLXNvcnRhYmxlXCIgXVxuICAgICAgICBpblxuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3M7IGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYVxuICAgICAgICAgICAgICB+YTpbIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWUgXVxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjaGVja2JveC1jb250cm9sLWRpdlwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgZWxlbWVudF9zZXRfZmlsZW5hbWUgbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICBmaWxlX2NoZWNrYm94IG5hbWUgY29tcGlsZTtcbiAgICAgICAgICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2hlY2tib3gtY29udHJvbC1sYWJlbFwiIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIG5hbWUgXTtcbiAgICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXSlcbiAgICAgIChNb2RzLkludE1hcC5iaW5kaW5ncyBtb2RlbC5TdGF0ZV9maWxlLmRpcmVjdG9yeSlcbiAgaW5cbiAgbGV0IHNlcGFyYXRvcl9saSA9XG4gICAgaGlkZV9vbl9lbXB0eVxuICAgICAgW1xuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJzZXBhcmF0b3JcIjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgWyBcImRpdmlkZXJcIjsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICBbXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IG5ld19saSA9XG4gICAgW1xuICAgICAgSHRtbC5saVxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICBbIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX25ld19saV9pZCBdIFsgSHRtbC5jZGF0YSBcIk5ld1wiIF0gXTtcbiAgICBdXG4gIGluXG5cbiAgbGV0IG9wZW5fbGkgPVxuICAgIFtcbiAgICAgIEh0bWwubGlcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX29wZW5fbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJPcGVuXCIgXTtcbiAgICAgICAgICBvcGVuX2lucHV0O1xuICAgICAgICBdO1xuICAgIF1cbiAgaW5cblxuICBsZXQgY2xvc2VfbGkgPVxuICAgIGhpZGVfb25fZW1wdHlcbiAgICAgIFtcbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgICAgWyBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9jbG9zZV9saV9pZCBdIFsgSHRtbC5jZGF0YSBcIkNsb3NlXCIgXSBdO1xuICAgICAgXVxuICBpblxuICBsZXQgZXhwb3J0X2xpID1cbiAgICBoaWRlX29uX2VtcHR5XG4gICAgICBbXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICAgIFsgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfZXhwb3J0X2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiRXhwb3J0XCIgXSBdO1xuICAgICAgXVxuICBpblxuICBbXSBAIGZpbGVfbGkgQCBzZXBhcmF0b3JfbGkgQCBuZXdfbGkgQCBvcGVuX2xpIEAgY2xvc2VfbGkgQCBleHBvcnRfbGlcblxubGV0IGNvbnRlbnQgPVxuICBsZXQgbGlfbGlzdCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAoUmVhY3QuUy5tYXAgKGZ1biBtb2RlbCAtPiBkcm9wZG93biBtb2RlbCkgU3RhdGVfZmlsZS5tb2RlbClcbiAgaW5cbiAgW1xuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJ0eXBlXCIgXCJidXR0b25cIjtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0biBidG4tZGVmYXVsdFwiOyBcImRyb3Bkb3duLXRvZ2dsZVwiIF07XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJkcm9wZG93blwiO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWhhc3BvcHVwXCIgXCJ0cnVlXCI7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtZXhwYW5kZWRcIiBcImZhbHNlXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5sMlxuICAgICAgICAgICAgICAgKGZ1biBtb2RlbCBmaWxlIC0+XG4gICAgICAgICAgICAgICAgIG1hdGNoIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY3VycmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgKG1hdGNoIGZpbGUuU3RhdGVfZmlsZS5jdXJyZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgeyBTdGF0ZV9maWxlLm91dF9vZl9zeW5jOyBfIH0gLT4gb3V0X29mX3N5bmMpKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCBTdGF0ZV9maWxlLm1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgWyBIdG1sLnR4dCBcIkZpbGVcIjsgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjYXJldFwiIF0gXSBbXSBdO1xuICAgIFR5eG1sX2pzLlIuSHRtbC51bFxuICAgICAgfmE6WyBIdG1sLmFfaWQgZmlsZV9kcm9wZG93bl9tZW51X2lkOyBIdG1sLmFfY2xhc3MgWyBcImRyb3Bkb3duLW1lbnVcIiBdIF1cbiAgICAgIGxpX2xpc3Q7XG4gICAgVWlfY29tbW9uLmNyZWF0ZV9tb2RhbCB+aWQ6ZmlsZV9uZXdfbW9kYWxfaWQgfnRpdGxlX2xhYmVsOlwiTmV3IEZpbGVcIlxuICAgICAgfmJvZHk6XG4gICAgICAgIFsgWyVodG1sIHt8PGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+fH0gWyBmaWxlX25ld19pbnB1dCBdIHt8PC9kaXY+fH1dIF1cbiAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgRmlsZVwiXG4gICAgICB+c3VibWl0OlxuICAgICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZmlsZV9uZXdfaW5wdXRfZG9tIyMudmFsdWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuY3JlYXRlX2ZpbGUgZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBmaWxlX25ld19tb2RhbF9pZCkgfmFjdGlvbjpcImhpZGVcIlxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSnMuX2ZhbHNlKSk7XG4gIF1cblxubGV0IG9yZGVyX2ZpbGVzIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSA9XG4gIGxldCBmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCA9XG4gICAgQ29tbW9uLmNoaWxkcmVuX3ZhbHVlIGVsZW1lbnQgXCJsaVtkYXRhLWZpbGUtaWRdXCIgKGZ1biBlbGVtZW50IC0+XG4gICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBlbGVtZW50IGluXG4gICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgKGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIGVsZW1lbnQpXG4gICAgICAgICAgKGZ1biAoKSAtPiBmYWlsd2l0aCBcIm1pc3NpbmcgZmlsZW5hbWVcIilcbiAgICAgICAgICBKcy50b19zdHJpbmcpXG4gIGluXG4gIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5vcmRlcl9maWxlcyBmaWxlbmFtZXMgaW5cbiAgKClcblxubGV0IGZpbGVfc2VsZWN0X2hhbmRsZXIgXyBfIDogdW5pdCBMd3QudCA9XG4gIGxldCBvcGVuX2lucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcGVuX2lucHV0IGluXG4gIGxldCBmaWxlcyA9IEpzLk9wdGRlZi5nZXQgb3Blbl9pbnB1dF9kb20jIy5maWxlcyAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkgaW5cbiAgbGV0IGZpbGUgPSBKcy5PcHQuZ2V0IChmaWxlcyMjaXRlbSAwKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkgaW5cbiAgbGV0IGZpbGVfaWQgPSBKcy50b19zdHJpbmcgZmlsZSMjLm5hbWUgaW5cbiAgbGV0ICgpID1cbiAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuY3JlYXRlX2ZpbGVcbiAgICAgIH50ZXh0OihKc19vZl9vY2FtbF9sd3QuRmlsZS5yZWFkQXNUZXh0IGZpbGUpXG4gICAgICBmaWxlX2lkXG4gIGluXG4gIGxldCAoKSA9IG9wZW5faW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIFwiXCIgaW5cbiAgTHd0LnJldHVybl91bml0XG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgb3Blbl9pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3Blbl9pbnB1dCBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9uZXdfbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gZmlsZV9uZXdfbW9kYWxfaWQpIH5hY3Rpb246XCJzaG93XCIgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChcIiNcIiBeIGZpbGVfb3Blbl9saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgKCogY2xpY2sgOiB1bml0IEpzLm1ldGg7ICopXG4gICAgICAgICAgIGxldCAoKSA9IG9wZW5faW5wdXRfZG9tIyNjbGljayBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKFwiI1wiIF4gZmlsZV9jbG9zZV9saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLmNsb3NlX2ZpbGUgKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChcIiNcIiBeIGZpbGVfZXhwb3J0X2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuZXhwb3J0X2N1cnJlbnRfZmlsZSAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCJzcGFuW2RhdGEtZmlsZS1pZF1cIiBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gKGV2ZW50IDogRG9tX2h0bWwuZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgKCogbGV0ICgpID0gQ29tbW9uLmRlYnVnIGV2ZW50IGluICopXG4gICAgICAgICAgIGxldCB0YXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0ID0gZXZlbnQjIy50YXJnZXQgaW5cbiAgICAgICAgICAgbGV0IGZpbGVfaWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPVxuICAgICAgICAgICAgIEpzLk9wdC5iaW5kIHRhcmdldCAoZnVuIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAtPlxuICAgICAgICAgICAgICAgICBlbGVtZW50X2dldF9maWxlbmFtZSBlbGVtZW50KVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIEpzLk9wdC5jYXNlIGZpbGVfaWRcbiAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAgICAgIChmdW4gZmlsZV9pZCAtPlxuICAgICAgICAgICAgICAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGUgKEpzLnRvX3N0cmluZyBmaWxlX2lkKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uY3JlYXRlX3NvcnQgZmlsZV9kcm9wZG93bl9tZW51X2lkIChmdW4gZXZlbnQgXyAoKiB1aSAqKSAtPlxuICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgIEpzLk9wdC5jYXNlIHRhcmdldFxuICAgICAgICAgIChmdW4gXyAtPiAoKSlcbiAgICAgICAgICAoZnVuIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAtPlxuICAgICAgICAgICAgbGV0IGlkIDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGVsZW1lbnQjIy5pZCBpblxuICAgICAgICAgICAgaWYgZmlsZV9kcm9wZG93bl9tZW51X2lkID0gaWQgdGhlblxuICAgICAgICAgICAgICBvcmRlcl9maWxlcyBlbGVtZW50XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIENvbW1vbi5kZWJ1ZyAoRm9ybWF0LnNwcmludGYgXCJ1bmV4cGVjdGVkIGlkICVzXCIgaWQpKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uXG4gICAgICAoRm9ybWF0LnNwcmludGYgXCJpbnB1dC4lc1wiIGZpbGVfY29tcGlsZV9jaGVja2JveClcbiAgICAgIFwiY2hhbmdlXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gZXZlbnQgLT5cbiAgICAgICAgICAgbGV0IHRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgPSBldmVudCMjLnRhcmdldCBpblxuICAgICAgICAgICBsZXQgZmlsZV9pZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9XG4gICAgICAgICAgICAgSnMuT3B0LmJpbmQgdGFyZ2V0IChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgICAgIGVsZW1lbnRfZ2V0X2ZpbGVuYW1lIGVsZW1lbnQpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBpc19jaGVja2VkIDogYm9vbCA9XG4gICAgICAgICAgICAgSnMudG9fYm9vbFxuICAgICAgICAgICAgICAgKEpzLk9wdC5jYXNlIHRhcmdldFxuICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IEpzLl9mYWxzZSlcbiAgICAgICAgICAgICAgICAgIChmdW4gKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgICAgICAgIChKcy5VbnNhZmUuY29lcmNlIGVsZW1lbnQgOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCkjIy5jaGVja2VkKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBKcy5PcHQuY2FzZSBmaWxlX2lkXG4gICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAgICAoZnVuIGZpbGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGZpbGVfaWQgaW5cbiAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuc2V0X2ZpbGVfY29tcGlsZVxuICAgICAgICAgICAgICAgICAgICAgKEpzLnRvX3N0cmluZyBmaWxlX2lkKSBpc19jaGVja2VkXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fZmFsc2UpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEx3dC5hc3luYyAoZnVuICgpIC0+XG4gICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzLmNoYW5nZXNcbiAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQpXG4gICAgICAgICAgZmlsZV9zZWxlY3RfaGFuZGxlcilcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCB3aXRoX2ZpbGUgKGhhbmRsZXIgOiAoc3RyaW5nICogc3RyaW5nKSBBcGkucmVzdWx0IC0+IHVuaXQgQXBpLnJlc3VsdCBMd3QudClcbiAgICA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfZmlsZS5nZXRfZmlsZSAoKSA+Pj0gaGFuZGxlcikgPj49IGZ1biBfIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfY29udGVudCB+KGZpbGVuYW1lIDogc3RyaW5nKSB+KGZpbGVjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgPVxuICB3aXRoX2ZpbGVcbiAgICAoQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKF8sIGN1cnJlbnRfZmlsZW5hbWUpIC0+XG4gICAgICAgICBpZiBmaWxlbmFtZSA9IGN1cnJlbnRfZmlsZW5hbWUgdGhlblxuICAgICAgICAgICBTdGF0ZV9maWxlLnNldF9jb250ZW50IGZpbGVjb250ZW50ID4+PSBmdW4gciAtPlxuICAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9jb21iaW5lIFsgcjsgcicgXSlcbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcImZpbGUgbmFtZSBtaXNtYXRjaCAlcyAlc1wiIGZpbGVuYW1lIGN1cnJlbnRfZmlsZW5hbWVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIG1zZylcbiAgICAgICAgICkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBDb2RlbWlycm9yXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBlZGl0b3JfZnVsbCwgc2V0X2VkaXRvcl9mdWxsID0gUmVhY3QuUy5jcmVhdGUgKGZhbHNlIDogYm9vbClcbmxldCBmaWxlbmFtZSwgc2V0X2ZpbGVuYW1lID0gUmVhY3QuUy5jcmVhdGUgKE5vbmUgOiBzdHJpbmcgb3B0aW9uKVxubGV0IG1vdmVfY3Vyc29yX2hvb2sgPSBIb29rZWQuRS5jcmVhdGUgKClcblxubGV0IGZpbGVfbGFiZWwgPVxuICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgKFJlYWN0LlMubWFwIChPcHRpb25fdXRpbC51bnNvbWUgXCJcIikgU3RhdGVfZmlsZS5jdXJyZW50X2ZpbGVuYW1lKVxuXG5sZXQgdG9nZ2xlX2J1dHRvbl9pZCA9IFwidG9nZ2xlX2J1dHRvblwiXG5cbmxldCB0b2dnbGVfYnV0dG9uID1cbiAgSHRtbC5hXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0b2dnbGVfYnV0dG9uX2lkO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIjsgXCJwdWxsLXJpZ2h0XCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwuY2RhdGEgXCJ0b2dnbGVcIiBdXG5cbmxldCBwYW5lbF9oZWFkaW5nX2dyb3VwX2lkID0gXCJwYW5lbF9oZWFkaW5nX2dyb3VwXCJcblxubGV0IHBhbmVsX2hlYWRpbmcgPVxuICBsZXQgbWVudV9lZGl0b3JfZmlsZV9jb250ZW50IDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuLWdyb3VwXCIgXTsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImdyb3VwXCI7XG4gICAgICAgIF1cbiAgICAgIE1lbnVfZWRpdG9yX2ZpbGUuY29udGVudFxuICBpblxuICBsZXQgYnV0dG9ucyA9IG1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCA6OiBbIHRvZ2dsZV9idXR0b24gXSBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICA8ZGl2IGlkPVwifH1cbiAgICAgIHBhbmVsX2hlYWRpbmdfZ3JvdXBfaWQge3xcIiBjbGFzcz1cImNvbC1tZC0xMCBidG4tZ3JvdXBcIj58fSBidXR0b25zXG4gICAgICB7fDwvZGl2PlxuICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yIG9uZWxpbmVyIGZpbGVuYW1lXCI+fH1cbiAgICAgIFsgZmlsZV9sYWJlbCBdXG4gICAgICB7fDwvbGFiZWw+XG4gICAgICAgICAgICA8L2Rpdj58fV1cblxubGV0IGNvZGVtaXJyb3JfaWQgPSBcImNvZGUtbWlycm9yXCJcbmxldCBlZGl0b3JfcGFuZWxfaWQgPSBcImVkaXRvci1wYW5lbFwiXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHRleHRhcmVhID0gSHRtbC50ZXh0YXJlYSB+YTpbIEh0bWwuYV9pZCBjb2RlbWlycm9yX2lkIF0gKEh0bWwudHh0IFwiXCIpIGluXG4gIEh0bWwuZGl2XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiOyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgIFtcbiAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdIFsgcGFuZWxfaGVhZGluZyBdO1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9maWxlLmN1cnJlbnQgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmhpZGVfY29kZW1pcnJvciAoKSBpblxuICAgICAgICAgICAgICAgICAgICAgWyBcIm5vLXBhbmVsLWJvZHlcIjsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zaG93X2NvZGVtaXJyb3IgKCkgaW5cbiAgICAgICAgICAgICAgICAgICAgIFsgXCJwYW5lbC1ib2R5XCI7IFwiZmxleC1jb250ZW50XCIgXSlcbiAgICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgICAgICBIdG1sLmFfaWQgZWRpdG9yX3BhbmVsX2lkO1xuICAgICAgICAgIF1cbiAgICAgICAgWyB0ZXh0YXJlYSBdO1xuICAgIF1cblxubGV0IGVycm9yX2xpbnQgKGVycm9ycyA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgOlxuICAgIENvZGVtaXJyb3IubGludCBKcy50IEpzLmpzX2FycmF5IEpzLnQgPVxuICBsZXQgcG9zaXRpb24gcCA9IG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChwLkxvYy5saW5lIC0gMSkgcC5Mb2MuY2hyIGluXG4gIGxldCBoeWRyYXRlIChlcnJvciA6IEFwaV90eXBlc19qLm1lc3NhZ2UpIDogbGludCBKcy50IG9wdGlvbiA9XG4gICAgbWF0Y2ggZXJyb3IuUmVzdWx0X3V0aWwucmFuZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJhbmdlIC0+XG4gICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBTdGF0ZV9maWxlLmN1cnJlbnRfZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBmaWxlX2lkIC0+XG4gICAgICAgIGlmIHJhbmdlLkxvYy5maWxlID0gZmlsZV9pZCB0aGVuXG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAgKENvZGVtaXJyb3IuY3JlYXRlX2xpbnRcbiAgICAgICAgICAgICAgIH5tZXNzYWdlOmVycm9yLlJlc3VsdF91dGlsLnRleHRcbiAgICAgICAgICAgICAgICAgKCogVGhpcyBpcyBhIGJpdCBvZiBhIGhhY2sgLi4uIGkgYW0gdHJ5aW5nIHRvIGtlZXBcbiAgICAgICAgICAgICAgICAgICAgICB0aGUgY29kZSBtaXJyb3IgY29kZSBpbmRlcGVuZGVudCBvZiB0aGUgYXBpIGNvZGUuXG4gICAgICAgICAgICAgICAgICopXG4gICAgICAgICAgICAgICB+c2V2ZXJpdHk6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBlcnJvci5SZXN1bHRfdXRpbC5zZXZlcml0eSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5BcHAgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuRXJyb3IgLT4gQ29kZW1pcnJvci5FcnJvclxuICAgICAgICAgICAgICAgICB8IExvZ3MuV2FybmluZyAtPiBDb2RlbWlycm9yLldhcm5pbmdcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkluZm8gLT4gQ29kZW1pcnJvci5XYXJuaW5nXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5EZWJ1ZyAtPiBDb2RlbWlycm9yLldhcm5pbmcpXG4gICAgICAgICAgICAgICB+ZnJvbToocG9zaXRpb24gcmFuZ2UuTG9jLmZyb21fcG9zaXRpb24pXG4gICAgICAgICAgICAgICB+dG9fOihwb3NpdGlvbiByYW5nZS5Mb2MudG9fcG9zaXRpb24pKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZSlcbiAgaW5cbiAgSnMuYXJyYXlcbiAgICAoQXJyYXkub2ZfbGlzdFxuICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIHZhbHVlIC0+XG4gICAgICAgICAgICBtYXRjaCBoeWRyYXRlIHZhbHVlIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgIHwgU29tZSB2YWx1ZSAtPiB2YWx1ZSA6OiBhY2MpXG4gICAgICAgICAgW10gZXJyb3JzKSlcblxuKCogaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMDU3NTM0My9jb2RlbWlycm9yLWlzLWl0LXBvc3NpYmxlLXRvLXNjcm9sbC10by1hLWxpbmUtc28tdGhhdC1pdC1pcy1pbi10aGUtbWlkZGxlLW9mLXcgKilcbmxldCBqdW1wX3RvX2xpbmUgKGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQpIChsaW5lIDogaW50KSA6IHVuaXQgPVxuICBsZXQgcG9zaXRpb24gOiBwb3NpdGlvbiBKcy50ID0gbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gbGluZSAwIGluXG4gIGxldCBtb2RlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID0gSnMuc29tZSAoSnMuc3RyaW5nIFwibG9jYWxcIikgaW5cbiAgbGV0IGNvb3JkcyA6IENvZGVtaXJyb3IuZGltZW5zaW9uIEpzLnQgPVxuICAgIGNvZGVtaXJyb3IjI2NoYXJDb29yZHMgcG9zaXRpb24gbW9kZVxuICBpblxuICBsZXQgdG9wIDogaW50ID0gY29vcmRzIyMudG9wIGluXG4gIGxldCBlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50ID0gY29kZW1pcnJvciMjZ2V0U2Nyb2xsZXJFbGVtZW50IGluXG4gIGxldCBtaWRkbGVIZWlnaHQgOiBpbnQgPSBlbGVtZW50IyMub2Zmc2V0SGVpZ2h0IC8gMiBpblxuICBsZXQgc2Nyb2xsTGluZSA6IGludCA9IHRvcCAtIG1pZGRsZUhlaWdodCAtIDUgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2Nyb2xsVG8gSnMubnVsbCAoSnMuc29tZSBzY3JvbGxMaW5lKSBpblxuICAoKVxuXG5sZXQgb25sb2FkICgpIDogdW5pdCA9XG4gIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGUub25sb2FkICgpIGluXG4gIGxldCBsaW50X2NvbmZpZyA9IENvZGVtaXJyb3IuY3JlYXRlX2xpbnRfY29uZmlndXJhdGlvbiAoKSBpblxuICBsZXQgKCkgPVxuICAgIEhvb2tlZC5TLnJlZ2lzdGVyIFN0YXRlX2Vycm9yLmVycm9ycyAoZnVuIGVycm9ycyAtPlxuICAgICAgICBsZXQgc2V0dXBfbGludCBfIF8gXyA9IGVycm9yX2xpbnQgZXJyb3JzIGluXG4gICAgICAgIGxpbnRfY29uZmlnIyMuZ2V0QW5ub3RhdGlvbnMgOj0gc2V0dXBfbGludClcbiAgaW5cbiAgbGV0ICgpID0gbGludF9jb25maWcjIy5saW50T25DaGFuZ2UgOj0gSnMuX2ZhbHNlIGluXG4gIGxldCBjb25maWd1cmF0aW9uID0gQ29kZW1pcnJvci5kZWZhdWx0X2NvbmZpZ3VyYXRpb24gaW5cbiAgbGV0IGd1dHRlcl9vcHRpb25zID1cbiAgICBKcy5zdHJpbmcgXCJicmVha3BvaW50cyxDb2RlTWlycm9yLWxpbnQtbWFya2VycyxDb2RlTWlycm9yLWxpbmVudW1iZXJzXCJcbiAgaW5cbiAgbGV0IGd1dHRlcl9vcHRpb24gOiBKcy5zdHJpbmdfYXJyYXkgSnMudCA9XG4gICAgZ3V0dGVyX29wdGlvbnMjI3NwbGl0IChKcy5zdHJpbmcgXCIsXCIpXG4gIGluXG4gIGxldCB0ZXh0YXJlYSA6IERvbV9odG1sLmVsZW1lbnQgSnMudCA9IFVpX2NvbW1vbi5pZF9kb20gXCJjb2RlLW1pcnJvclwiIGluXG4gIGxldCAoKSA9XG4gICAgY29uZmlndXJhdGlvbiMjLmxpbmVOdW1iZXJzIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5saW5lV3JhcHBpbmcgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLnN0eWxlQWN0aXZlTGluZSA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMubWF0Y2hCcmFja2V0cyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMuYXV0b2ZvY3VzIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5ndXR0ZXJzIDo9IGd1dHRlcl9vcHRpb247XG4gICAgY29uZmlndXJhdGlvbiMjLmxpbnQgOj0gbGludF9jb25maWc7XG4gICAgY29uZmlndXJhdGlvbiMjLm1vZGUgOj0gSnMuc3RyaW5nIFwiS2FwcGFcIlxuICBpblxuICBsZXQgY29kZW1pcnJvciA6IGNvZGVtaXJyb3IgSnMudCA9XG4gICAgQ29kZW1pcnJvci5mcm9tVGV4dEFyZWEgdGV4dGFyZWEgY29uZmlndXJhdGlvblxuICBpblxuICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSAoSnMuc3RyaW5nIFwiXCIpIGluXG4gIGxldCAoKSA9XG4gICAgU3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIud2l0aF9maWxlXG4gICAgICAoUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgfm9rOihmdW4gKGNvbnRlbnQsIGlkKSAtPlxuICAgICAgICAgICBsZXQgKCkgPSBzZXRfZmlsZW5hbWUgKFNvbWUgaWQpIGluXG4gICAgICAgICAgIGxldCAoKSA9IGNvZGVtaXJyb3IjI3NldFZhbHVlIChKcy5zdHJpbmcgY29udGVudCkgaW5cbiAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgfmVycm9yOihmdW4gXyAtPlxuICAgICAgICAgICAoKiBpZ25vcmUgaWYgbWlzc2luZyBmaWxlICopXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29kZW1pcnJvci5jb21tYW5kcyMjLnNhdmUgOj1cbiAgICAgIGZ1biBfIC0+IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5leHBvcnRfY3VycmVudF9maWxlICgpXG4gIGluXG4gIGxldCB0aW1lb3V0IDogRG9tX2h0bWwudGltZW91dF9pZCBvcHRpb24gcmVmID0gcmVmIE5vbmUgaW5cbiAgbGV0IGhhbmRsZXIgY29kZW1pcnJvciBjaGFuZ2UgPVxuICAgIGxldCAoKSA9IFN0YXRlX2ZpbGUub3V0X29mX3N5bmMgdHJ1ZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCAhdGltZW91dCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSB0aW1lb3V0IC0+IERvbV9odG1sLndpbmRvdyMjY2xlYXJUaW1lb3V0IHRpbWVvdXRcbiAgICBpblxuICAgIGxldCBkZWxheSA6IGZsb2F0ID1cbiAgICAgIGlmIChKcy5zdHJfYXJyYXkgY2hhbmdlIyMudGV4dCkjIy5sZW5ndGggPiAxIHx8IFN0YXRlX2Vycm9yLmhhc19lcnJvcnMgKClcbiAgICAgIHRoZW5cbiAgICAgICAgMS4wICouIDEwMDAuMFxuICAgICAgZWxzZVxuICAgICAgICA1LjAgKi4gMTAwMC4wXG4gICAgaW5cbiAgICBsZXQgaGFuZGxlX3RpbWVvdXQgKCkgPVxuICAgICAgbGV0ICgpID0gU3RhdGVfZmlsZS5vdXRfb2Zfc3luYyBmYWxzZSBpblxuICAgICAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBmaWxlbmFtZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmaWxlbmFtZSAtPlxuICAgICAgICBTdWJwYW5lbF9lZGl0b3JfY29udHJvbGxlci5zZXRfY29udGVudCB+ZmlsZW5hbWVcbiAgICAgICAgICB+ZmlsZWNvbnRlbnQ6KEpzLnRvX3N0cmluZyBjb2RlbWlycm9yIyNnZXRWYWx1ZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICB0aW1lb3V0IDo9XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoRG9tX2h0bWwud2luZG93IyNzZXRUaW1lb3V0XG4gICAgICAgICAgICAgKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBfIC0+IGhhbmRsZV90aW1lb3V0ICgpKSlcbiAgICAgICAgICAgICBkZWxheSlcbiAgICBpblxuICAgICgpXG4gIGluXG4gIGxldCAoKSA9IGNvZGVtaXJyb3IjI29uQ2hhbmdlIGhhbmRsZXIgaW5cbiAgbGV0ICgpID1cbiAgICBjb2RlbWlycm9yIyNvbkN1cnNvckFjdGl2aXR5IChmdW4gX2NvZGVtaXJyb3IgLT5cbiAgICAgICAgbGV0IHBvcyA9IGNvZGVtaXJyb3IjI2dldEN1cnNvciBpblxuICAgICAgICBsZXQgbGluZSA9IHBvcyMjLmxpbmUgaW5cbiAgICAgICAgbGV0IGNoID0gcG9zIyMuY2ggaW5cbiAgICAgICAgU3RhdGVfZmlsZS5jdXJzb3JfYWN0aXZpdHkgfmxpbmUgfmNoKVxuICBpblxuICBsZXQgdG9nZ2xlX2J1dHRvbl9kb20gOiBEb21faHRtbC5saW5rRWxlbWVudCBKcy50ID1cbiAgICBKcy5VbnNhZmUuY29lcmNlXG4gICAgICAoSnMuT3B0LmdldFxuICAgICAgICAgKFVpX2NvbW1vbi5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyB0b2dnbGVfYnV0dG9uX2lkKSlcbiAgICAgICAgIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICB0b2dnbGVfYnV0dG9uX2RvbSMjLm9uY2xpY2tcbiAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IGVkaXRvcl9mdWxsID0gUmVhY3QuUy52YWx1ZSBlZGl0b3JfZnVsbCBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZXRfZWRpdG9yX2Z1bGwgKG5vdCBlZGl0b3JfZnVsbCkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSG9va2VkLlMucmVnaXN0ZXIgU3RhdGVfZXJyb3IuZXJyb3JzIChmdW4gX2Vycm9ycyAtPlxuICAgICAgICBjb2RlbWlycm9yIyNwZXJmb3JtTGludClcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBIb29rZWQuRS5yZWdpc3RlciBTdGF0ZV9maWxlLnJlZnJlc2hfZmlsZV9ob29rIChmdW4gcmVmcmVzaCAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfZmlsZW5hbWUgKFNvbWUgcmVmcmVzaC5TdGF0ZV9maWxlLmZpbGVuYW1lKSBpblxuICAgICAgICBsZXQgY2FuZCA9IEpzLnN0cmluZyByZWZyZXNoLlN0YXRlX2ZpbGUuY29udGVudCBpblxuICAgICAgICBpZiBjYW5kIDw+IGNvZGVtaXJyb3IjI2dldFZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9IGNvZGVtaXJyb3IjI3NldFZhbHVlIGNhbmQgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgbWF0Y2ggcmVmcmVzaC5TdGF0ZV9maWxlLmxpbmUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgbGluZSAtPiBqdW1wX3RvX2xpbmUgY29kZW1pcnJvciBsaW5lXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEhvb2tlZC5FLnJlZ2lzdGVyIG1vdmVfY3Vyc29yX2hvb2sgKGZ1biBwb3MgLT5cbiAgICAgICAgaWYgU29tZSBwb3MuTG9jLmZpbGUgPSBSZWFjdC5TLnZhbHVlIGZpbGVuYW1lIHRoZW4gKFxuICAgICAgICAgIGxldCBiZWcgPSBwb3MuTG9jLmZyb21fcG9zaXRpb24gaW5cbiAgICAgICAgICBsZXQgZmlyc3QgPVxuICAgICAgICAgICAgbmV3JWpzIENvZGVtaXJyb3IucG9zaXRpb24gKGJlZy5Mb2MubGluZSAtIDEpIGJlZy5Mb2MuY2hyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZW4gPSBwb3MuTG9jLmZyb21fcG9zaXRpb24gaW5cbiAgICAgICAgICBsZXQgbGFzdCA9IG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChlbi5Mb2MubGluZSAtIDEpIGVuLkxvYy5jaHIgaW5cbiAgICAgICAgICBjb2RlbWlycm9yIyNzZXRTZWxlY3Rpb24gZmlyc3QgbGFzdFxuICAgICAgICApKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgcHJpbnRfc3RyaW5nIHMgbGlzdCA9IEh0bWwudHh0IHMgOjogbGlzdFxubGV0IHByaW50X25ld2xpbmUgbGlzdCA9IHByaW50X3N0cmluZyBcIlxcblwiIGxpc3RcblxubGV0IHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIGEgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5iaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfc3RyaW5nIGFcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmJpbmRpbmdfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X3NpbmdsZV9pbnRlcm5hbF9zdGF0ZSBhIGxpc3QgPVxuICBwcmludF9zdHJpbmcgUHVibGljX2RhdGEuaW50ZXJuYWxfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbFxuICAgIChwcmludF9zdHJpbmcgYVxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuaW50ZXJuYWxfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X2NvdW50ZXJfaW50ZXJ2YWwgKGEsIGIpIGxpc3QgPVxuICBsZXQgb3Blbl9yYW5nZSwgaW5mID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICggUHVibGljX2RhdGEub3Blbl9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sLFxuICAgICAgICBQdWJsaWNfZGF0YS5taW51c19pbmZpbml0eV9zeW1ib2wgKVxuICAgIHwgU29tZSBhIC0+IFB1YmxpY19kYXRhLm9wZW5faW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCwgc3RyaW5nX29mX2ludCBhXG4gIGluXG4gIGxldCBjbG9zZV9yYW5nZSwgc3VwID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgICggUHVibGljX2RhdGEuY2xvc2VfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCxcbiAgICAgICAgUHVibGljX2RhdGEucGx1c19pbmZpbml0eV9zeW1ib2wgKVxuICAgIHwgU29tZSBiIC0+IFB1YmxpY19kYXRhLmNsb3NlX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wsIHN0cmluZ19vZl9pbnQgYlxuICBpblxuICBwcmludF9zdHJpbmcgb3Blbl9yYW5nZVxuICAgIChwcmludF9zdHJpbmcgaW5mXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3ltYm9sXG4gICAgICAgICAgKHByaW50X3N0cmluZyBzdXAgKHByaW50X3N0cmluZyBjbG9zZV9yYW5nZSBsaXN0KSkpKVxuXG5sZXQgcHJpbnRfY291bnRlcl9zdGF0ZSAoYSwgYikgbGlzdCA9XG4gIHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfY291bnRlcl9pbnRlcnZhbCAoYSwgYilcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCBsaXN0KSlcblxubGV0IHByaW50X3NpdGUgc2l0ZSBsaXN0ID1cbiAgbGV0IHNpdGVfbmFtZSwgcHJvcF9vcHQsIGJpbmRpbmdfb3B0LCBjb3VudGVyX29wdCA9IHNpdGUgaW5cbiAgbGV0IGxpc3QgPVxuICAgIG1hdGNoIGJpbmRpbmdfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLm1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfc3ltYm9sIGxpc3RcbiAgICB8IFNvbWUgUHVibGljX2RhdGEuRnJlZSAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgUHVibGljX2RhdGEuZnJlZV9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLldpbGRjYXJkIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBQdWJsaWNfZGF0YS53aWxkY2FyZF9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLkJvdW5kX3RvX3Vua25vd24gLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIFB1YmxpY19kYXRhLmJvdW5kX3RvX3Vua25vd25fYmFja2VuZF9zeW1ib2xcbiAgICAgICAgbGlzdFxuICAgIHwgU29tZSAoUHVibGljX2RhdGEuQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpKSAtPlxuICAgICAgbGV0IGJpbmRpbmdfdHlwZV9zeW1ib2wgPSBQdWJsaWNfZGF0YS5iaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wgaW5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlXG4gICAgICAgIChQdWJsaWNfZGF0YS5zdHJpbmdfb2ZfYmluZGluZ190eXBlIH5iaW5kaW5nX3R5cGVfc3ltYm9sIH5hZ2VudF9uYW1lXG4gICAgICAgICAgIH5zaXRlX25hbWUgKCkpXG4gICAgICAgIGxpc3RcbiAgICB8IFNvbWUgKFB1YmxpY19kYXRhLkJvdW5kX3RvIGkpIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSAoc3RyaW5nX29mX2ludCBpKSBsaXN0XG4gIGluXG4gIGxldCBsaXN0ID1cbiAgICBtYXRjaCBjb3VudGVyX29wdCB3aXRoXG4gICAgfCBOb25lIC0+IGxpc3RcbiAgICB8IFNvbWUgYSAtPiBwcmludF9jb3VudGVyX3N0YXRlIGEgbGlzdFxuICBpblxuICBsZXQgbGlzdCA9XG4gICAgbWF0Y2ggcHJvcF9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgfCBTb21lIGEgLT4gcHJpbnRfc2luZ2xlX2ludGVybmFsX3N0YXRlIGEgbGlzdFxuICBpblxuICBwcmludF9zdHJpbmcgc2l0ZV9uYW1lIGxpc3RcblxubGV0IHByaW50X2FnZW50IGFnZW50IGxpc3QgPVxuICBsZXQgYWdlbnRfbmFtZSwgaW50ZXJmYWNlID0gYWdlbnQgaW5cbiAgbGV0IGxpc3QgPSBwcmludF9zdHJpbmcgXCIpXCIgbGlzdCBpblxuICBsZXQgbGlzdCA9XG4gICAgc25kXG4gICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgIChmdW4gKGIsIGxpc3QpIHNpdGUgLT5cbiAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgICAgcHJpbnRfc3RyaW5nIFwiLFwiIGxpc3RcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBsaXN0ID0gcHJpbnRfc2l0ZSBzaXRlIGxpc3QgaW5cbiAgICAgICAgICAgdHJ1ZSwgbGlzdClcbiAgICAgICAgIChmYWxzZSwgbGlzdCkgaW50ZXJmYWNlKVxuICBpblxuICBsZXQgbGlzdCA9IEh0bWwudHh0IFwiKFwiIDo6IGxpc3QgaW5cbiAgbGV0IGxpc3QgPSBIdG1sLnR4dCBhZ2VudF9uYW1lIDo6IGxpc3QgaW5cbiAgbGlzdFxuXG5sZXQgcHJpbnRfc2l0ZV9ncmFwaCBhZ2VudF9saXN0IGxpc3QgPVxuICBzbmRcbiAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAoZnVuIChiLCBsaXN0KSBhZ2VudCAtPlxuICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICBwcmludF9zdHJpbmcgXCIsXCIgbGlzdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbGlzdFxuICAgICAgICAgaW5cbiAgICAgICAgIHRydWUsIHByaW50X2FnZW50IGFnZW50IGxpc3QpXG4gICAgICAgKGZhbHNlLCBsaXN0KSAoTGlzdC5yZXYgYWdlbnRfbGlzdCkpXG5cbmxldCBwcmludF9tZXRob2RfaGFuZGxlciBtaCA9XG4gIGxldCB1bmNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgbWggaW5cbiAgbGV0IGNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IG1oIGluXG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4geCBsIC0+XG4gICAgICBIdG1sLnBcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIucHBfY2F1Z2h0IHgpO1xuICAgICAgICBdXG4gICAgICA6OiBsKVxuICAgIGNhdWdodFxuICAgIChMaXN0Lm1hcFxuICAgICAgIChmdW4geCAtPlxuICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX3VuY2F1Z2h0IHgpO1xuICAgICAgICAgICBdKVxuICAgICAgIHVuY2F1Z2h0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5cbigqIHRvZG8gYWRkIGJ1dHRvbiB0byBzd2l0Y2ggb24vb2ZmIHRoZSBkaXNwbGF5IG9mIHRoZSBpbmZvcm1hdGlvbiBvZiBlYWNoIGFic3RyYWN0IGRvbWFpblxuICAgbGV0IG5vbl9yZWxhdGlvbmFsID0gcmVmIHRydWVcbiAgIGxldCByZWxhdGlvbmFsID0gcmVmIHRydWVcbiAgIGxldCBzaXRlX2FjY3Jvc3MgPSByZWYgdHJ1ZVxuICAgbGV0IHBhcmFsbGVsX2JvbmQgPSByZWYgdHJ1ZVxuKilcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgY29uc3RyYWludHNfZGl2ID1cbiAgICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlICgpXG4gICAgICAoUmVhY3QuUy5jb25zdCAoKSkgW10gKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAoKSAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9jb25zdHJhaW50c19saXN0XG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIGNvbnN0cmFpbnRzIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFuZWxzIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgICAoKm1hdGNoIGIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IHBhbmVsc1xuICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyA6OiBfIC0+KilcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRleHRzID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGxlbW1hIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBoeXAgPSBQdWJsaWNfZGF0YS5nZXRfaHlwIGxlbW1hIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjb25jbHVzaW9uID0gUHVibGljX2RhdGEuZ2V0X3JlZmluZW1lbnQgbGVtbWEgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNvbmNsdXNpb24gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgWyBzaXRlX2dyYXBoIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBzaXRlX2dyYXBoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVdGlsaXR5LnByaW50X25ld2xpbmUgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyB8IFtdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfbmV3bGluZSBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfc3RyaW5nIFwiIF1cIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNuZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGJvb2wsIGxpc3QpIGEgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zdHJpbmcgXCIgdiBcIiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3NpdGVfZ3JhcGggYSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmFsc2UsIGxpc3QpIChMaXN0LnJldiBjb25jbHVzaW9uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfc3RyaW5nIFwiWyBcIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zdHJpbmcgXCIgID0+ICBcIiBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIGh5cCBsaXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSAoTGlzdC5yZXYgYilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID1cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWhlYWRpbmdcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgYSBdXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1wcmVcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICAgICAgIFsgdGl0bGU7IGNvbnRlbnQgXVxuICAgICAgICAgICAgICAgICAgICA6OiBwYW5lbHMpXG4gICAgICAgICAgICAgICAgICBbXSBjb25zdHJhaW50cylcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gciAtPlxuICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXVxuICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiS2FTYSBoYXMgZmFpbGVkXCIgXVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvbnRlbnQgPVxuICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1wcmVcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgICByKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWxcIjsgXCJwYW5lbC1kYW5nZXJcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgWyB0aXRsZTsgY29udGVudCBdXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBbIG91dCBdKSlcbiAgaW5cbiAgW1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIGNvbnN0cmFpbnRzX2Rpdik7XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb25zdHJhaW50c1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZjb25zdHJhaW50c1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIGNvbnRhY3RfbWFwID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfY29udGFjdF9tYXAgKGlkIDogc3RyaW5nKSAoY29sb3JpbmcgOiB1bml0IEpzLnQpIDogY29udGFjdF9tYXAgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJDb250YWN0TWFwXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBjb2xvcmluZyB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG50eXBlIGhhbmRsZXIgPSB7IHN1ZmZpeDogc3RyaW5nOyBsYWJlbDogc3RyaW5nOyBleHBvcnQ6IHN0cmluZyAtPiB1bml0IH1cblxudHlwZSBjb25maWd1cmF0aW9uID0ge1xuICBpZDogc3RyaW5nO1xuICBoYW5kbGVyczogaGFuZGxlciBsaXN0O1xuICBzaG93OiBib29sIFJlYWN0LnNpZ25hbDtcbn1cblxubGV0IGV4cG9ydF9mb3JtYXRfaWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX3NlbGVjdFwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGV4cG9ydF9maWxlbmFtZV9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfZmlsZW5hbWVcIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfYnV0dG9uX2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19idXR0b25cIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfZGF0YV9sYWJlbCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfbGFiZWxcIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfZm9ybV9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfZm9ybVwiIGNvbmZpZ3VyYXRpb24uaWRcblxubGV0IGlubGluZV9jb250ZW50IChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgPVxuICBsZXQgZXhwb3J0X2ZpbGVuYW1lID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJmaWxlIG5hbWVcIjtcbiAgICAgICAgXVxuICAgICAgKClcbiAgaW5cbiAgbGV0IGV4cG9ydF9idXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCAoZXhwb3J0X2J1dHRvbl9pZCBjb25maWd1cmF0aW9uKTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfZGlzYWJsZWQgKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXAgbm90IGNvbmZpZ3VyYXRpb24uc2hvdyk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImV4cG9ydFwiIF1cbiAgaW5cbiAgbGV0IGV4cG9ydF9mb3JtYXRzX3NlbGVjdCA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gaGFuZGxlciAtPlxuICAgICAgICBbJWh0bWxcbiAgICAgICAgICB7fDxvcHRpb24gdmFsdWU9XCJ8fSBoYW5kbGVyLmxhYmVsIHt8XCI+fH0gKEh0bWwuY2RhdGEgaGFuZGxlci5sYWJlbClcbiAgICAgICAgICAgIHt8PC9vcHRpb24+fH1dKVxuICAgICAgY29uZmlndXJhdGlvbi5oYW5kbGVyc1xuICBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwifH1cbiAgICAgIChleHBvcnRfZm9ybWF0X2lkIGNvbmZpZ3VyYXRpb24pXG4gICAgICB7fFwiPlxuICAgICAgICAgICAgICAgfH1cbiAgICAgIGV4cG9ydF9mb3JtYXRzX3NlbGVjdFxuICAgICAge3xcbiAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgICAgPGxhYmVsIGZvcj18fVxuICAgICAgKGV4cG9ydF9maWxlbmFtZV9pZCBjb25maWd1cmF0aW9uKVxuICAgICAge3w+PC9sYWJlbD5cbiAgICAgICAgICAgICAgIHx9XG4gICAgICBbIGV4cG9ydF9maWxlbmFtZSBdXG4gICAgICB7fFxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIHx9XVxuICBAIFsgZXhwb3J0X2J1dHRvbiBdXG5cbmxldCBjb250ZW50IGNvbmZpZ3VyYXRpb24gPVxuICBIdG1sLmZvcm1cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIChleHBvcnRfZm9ybV9pZCBjb25maWd1cmF0aW9uKTsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWlubGluZVwiIF07XG4gICAgICBdXG4gICAgKGlubGluZV9jb250ZW50IGNvbmZpZ3VyYXRpb24pXG5cbmxldCBvbmxvYWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA9XG4gIGxldCBleHBvcnRfYnV0dG9uIDogRG9tX2h0bWwuYnV0dG9uRWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfYnV0dG9uX2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfZmlsZW5hbWUgOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSAoZXhwb3J0X2ZpbGVuYW1lX2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0IDogRG9tX2h0bWwuc2VsZWN0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIChleHBvcnRfZm9ybWF0X2lkIGNvbmZpZ3VyYXRpb24pXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uX3RvZ2dsZSAoKSA6IHVuaXQgPVxuICAgIGxldCBpc19kaXNhYmxlZCA6IGJvb2wgSnMudCA9XG4gICAgICBKcy5ib29sXG4gICAgICAgICgobm90IChSZWFjdC5TLnZhbHVlIGNvbmZpZ3VyYXRpb24uc2hvdykpXG4gICAgICAgIHx8IGV4cG9ydF9maWxlbmFtZSMjLnZhbHVlIyN0cmltIyMubGVuZ3RoID0gMClcbiAgICBpblxuICAgIGxldCAoKSA9IGV4cG9ydF9idXR0b24jIy5kaXNhYmxlZCA6PSBpc19kaXNhYmxlZCBpblxuICAgICgpXG4gIGluXG4gIGxldCAoKSA9IGV4cG9ydF9idXR0b25fdG9nZ2xlICgpIGluXG4gIGxldCAoKSA9XG4gICAgZXhwb3J0X2ZpbGVuYW1lIyMub25pbnB1dCA6PVxuICAgICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBleHBvcnRfYnV0dG9uX3RvZ2dsZSAoKSBpblxuICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBleHBvcnRfYnV0dG9uIyMub25jbGljayA6PVxuICAgICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICBsZXQgaGFuZGxlciA6IGhhbmRsZXIgPVxuICAgICAgICAgICAgTGlzdC5udGggY29uZmlndXJhdGlvbi5oYW5kbGVycyBleHBvcnRfZm9ybWF0IyMuc2VsZWN0ZWRJbmRleFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpbGVuYW1lIGRlZmF1bHQgOiBzdHJpbmcgPVxuICAgICAgICAgICAgbGV0IHJvb3QgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZXhwb3J0X2ZpbGVuYW1lIyMudmFsdWUgaW5cbiAgICAgICAgICAgIGlmIFN0cmluZy5jb250YWlucyByb290ICcuJyB0aGVuXG4gICAgICAgICAgICAgIHJvb3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcm9vdCBeIFwiLlwiIF4gZGVmYXVsdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gaGFuZGxlci5leHBvcnQgKGZpbGVuYW1lIGhhbmRsZXIuc3VmZml4KSBpblxuICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IGV4cG9ydF9zdmcgP3N2Z19zdHlsZV9pZCB+KHN2Z19kaXZfaWQgOiBzdHJpbmcpICgpIDogaGFuZGxlciA9XG4gIHtcbiAgICBzdWZmaXggPSBcInN2Z1wiO1xuICAgIGxhYmVsID0gXCJzdmdcIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBDb21tb24ucGxvdFNWRyA/cGxvdFN0eWxlSWQ6c3ZnX3N0eWxlX2lkIHN2Z19kaXZfaWQgZmlsZW5hbWUgZmlsZW5hbWUpO1xuICB9XG5cbmxldCBleHBvcnRfcG5nID9zdmdfc3R5bGVfaWQgfihzdmdfZGl2X2lkIDogc3RyaW5nKSAoKSA6IGhhbmRsZXIgPVxuICB7XG4gICAgc3VmZml4ID0gXCJwbmdcIjtcbiAgICBsYWJlbCA9IFwicG5nXCI7XG4gICAgZXhwb3J0ID1cbiAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgQ29tbW9uLnBsb3RQTkcgP3Bsb3RTdHlsZUlkOnN2Z19zdHlsZV9pZCBzdmdfZGl2X2lkIGZpbGVuYW1lIGZpbGVuYW1lKTtcbiAgfVxuXG5sZXQgZXhwb3J0X2pzb24gfihzZXJpYWxpemVfanNvbiA6IHVuaXQgLT4gc3RyaW5nKSA6IGhhbmRsZXIgPVxuICB7XG4gICAgc3VmZml4ID0gXCJqc29uXCI7XG4gICAgbGFiZWwgPSBcImpzb25cIjtcbiAgICBleHBvcnQgPVxuICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoc2VyaWFsaXplX2pzb24gKCkpIGluXG4gICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWUpO1xuICB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZGlzcGxheV9pZCA9IFwiY29udGFjdC1tYXAtZGlzcGxheVwiXG5sZXQgZXhwb3J0X2lkID0gXCJjb250YWN0LWV4cG9ydFwiXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIHRydWVcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiB0cnVlXG5sZXQgYWNjdXJhY3ksIHNldF9hY2N1cmFjeSA9IFJlYWN0LlMuY3JlYXRlIChTb21lIFB1YmxpY19kYXRhLkxvdylcblxubGV0IGV4dHJhY3RfY29udGFjdF9tYXAgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvbnRhY3QgbWFwXCIsIGBBc3NvYyBbIChcImFjY3VyYWN5XCIsIGFjYyk7IChcIm1hcFwiLCBjb250YWN0KSBdKSBdXG4gICAgLT5cbiAgICBhY2MsIGNvbnRhY3RcbiAgfCBgQXNzb2MgWyAoXCJjb250YWN0IG1hcFwiLCBgQXNzb2MgWyAoXCJtYXBcIiwgY29udGFjdCk7IChcImFjY3VyYWN5XCIsIGFjYykgXSkgXVxuICAgIC0+XG4gICAgYWNjLCBjb250YWN0XG4gIHwgXyAtPiBmYWlsd2l0aCBcIldyb25nIHVnbHkgY29udGFjdF9tYXAgZXh0cmFjdG9yXCJcblxubGV0IGNvbnRhY3RfbWFwX2pzIDogSnNfY29udGFjdC5jb250YWN0X21hcCBKcy50ID1cbiAgSnNfY29udGFjdC5jcmVhdGVfY29udGFjdF9tYXAgZGlzcGxheV9pZCBTdGF0ZV9zZXR0aW5ncy5hZ2VudF9jb2xvcmluZ1xuXG5sZXQgY29udGFjdF9tYXBfdGV4dCA6IHN0cmluZyBSZWFjdC5zaWduYWwgPVxuICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlIE5vbmUgYWNjdXJhY3kgXCJudWxsXCJcbiAgICAoZnVuXG4gICAgICAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKVxuICAgICAgKGFjYyA6IFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsIG9wdGlvbilcbiAgICAtPlxuICAgICAgbWFuYWdlciNnZXRfY29udGFjdF9tYXAgYWNjXG4gICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gU3RhdGVfZXJyb3IuYWRkX2Vycm9yIFwidGFiX2NvbnRhY3RfbWFwXCIgbWggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdF9tYXBfanMjI2NsZWFyRGF0YSBpblxuICAgICAgICAgICAgICBcIm51bGxcIilcbiAgICAgICAgICAgIH5vazooZnVuIGNvbnRhY3RfanNvbiAtPlxuICAgICAgICAgICAgICBsZXQgXywgbWFwX2pzb24gPSBleHRyYWN0X2NvbnRhY3RfbWFwIGNvbnRhY3RfanNvbiBpblxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IFlvanNvbi5CYXNpYy50b19zdHJpbmcgbWFwX2pzb24gaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gY29udGFjdF9tYXBfanMjI3NldERhdGEgKEpzLnN0cmluZyBkYXRhKSBpblxuICAgICAgICAgICAgICBkYXRhKSlcblxubGV0IGNvbmZpZ3VyYXRpb24gOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IGV4cG9ydF9pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfc3ZnIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9qc29uIH5zZXJpYWxpemVfanNvbjooZnVuICgpIC0+XG4gICAgICAgICAgICBSZWFjdC5TLnZhbHVlIGNvbnRhY3RfbWFwX3RleHQpO1xuICAgICAgXTtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gIH1cblxubGV0IGFjY3VyYWN5X2Nob29zZXJfaWQgPSBcImNvbnRhY3RfbWFwLWFjY3VyYWN5XCJcblxubGV0IGFjY3VyYWN5X2Nob29zZXIgPVxuICBsZXQgb3B0aW9uX2dlbiB4ID1cbiAgICBIdG1sLm9wdGlvblxuICAgICAgfmE6XG4gICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgaWYgUmVhY3QuUy52YWx1ZSBhY2N1cmFjeSA9IFNvbWUgeCB0aGVuXG4gICAgICAgICAgICAgSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkgXSlcbiAgICAgIChIdG1sLnR4dCAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpKVxuICBpblxuICBIdG1sLnNlbGVjdFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgYWNjdXJhY3lfY2hvb3Nlcl9pZCBdXG4gICAgKExpc3QubWFwIG9wdGlvbl9nZW4gUHVibGljX2RhdGEuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBhY2N1cmFjeV9mb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWhvcml6b250YWxcIiBdO1xuICAgICAgICAgIEh0bWwuYV9pZCBcImNvbnRhY3RfbWFwX2FjY3VyYWN5X2Zvcm1cIjtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgYWNjdXJhY3lfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJBY2N1cmFjeVwiIF07XG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTEwXCIgXSBdIFsgYWNjdXJhY3lfY2hvb3NlciBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG4gIGluXG4gIFtcbiAgICBhY2N1cmFjeV9mb3JtO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9pZCBkaXNwbGF5X2lkOyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiIF0gXVxuICAgICAgWyBIdG1sLmVudGl0eSBcIm5ic3BcIiBdO1xuICAgIFdpZGdldF9leHBvcnQuY29udGVudCBjb25maWd1cmF0aW9uO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCBjb25maWd1cmF0aW9uIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYWNjdXJhY3lfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FjY3VyYWN5IChQdWJsaWNfZGF0YS5hY2N1cmFjeV9vZl9zdHJpbmcgdmEpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29udGFjdF9tYXBcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29udGFjdF9tYXBcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPVxuICBpZiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlbiBjb250YWN0X21hcF9qcyMjcmVkcmF3XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIGdyYXBoX2xvZ2dlciA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgY2xlYXJEYXRhIDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9ncmFwaF9sb2dnZXIgKGlkIDogc3RyaW5nKSAob25fY2xpY2sgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSA6XG4gICAgZ3JhcGhfbG9nZ2VyIEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiR3JhcGhMb2dnZXJcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IG9uX2NsaWNrIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlIG1vZGVsX2dyYXBoID0geyBmd2Q6IGludCBvcHRpb247IGJ3ZDogaW50IG9wdGlvbjsgdG90YWw6IGludCB9XG5cbnR5cGUgaW5mbHVlbmNlX3NwaGVyZSA9IHtcbiAgcG9zaXRpdmVfb246XG4gICAgKChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbiAgbmVnYXRpdmVfb246XG4gICAgKChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbiAgcG9zaXRpdmVfYnk6XG4gICAgKChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbiAgbmVnYXRpdmVfYnk6XG4gICAgKChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlXG4gICAgKiBQdWJsaWNfZGF0YS5sb2NhdGlvbiBQdWJsaWNfZGF0YS5wYWlyIGxpc3QpXG4gICAgbGlzdDtcbn1cblxubGV0IGVtcHR5X3NwaGVyZSA9XG4gIHsgcG9zaXRpdmVfb24gPSBbXTsgcG9zaXRpdmVfYnkgPSBbXTsgbmVnYXRpdmVfb24gPSBbXTsgbmVnYXRpdmVfYnkgPSBbXSB9XG5cbnR5cGUgbW9kZWxfcmVuZGVyaW5nID0gRHJhd0dyYXBoIG9mIG1vZGVsX2dyYXBoIHwgRHJhd1RhYnVsYXIgb2YgdW5pdFxuXG50eXBlIG1vZGVsID0ge1xuICByZW5kZXJpbmc6IG1vZGVsX3JlbmRlcmluZztcbiAgYWNjdXJhY3k6IFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsIG9wdGlvbjtcbiAgb3JpZ2luOiAoaW50LCBpbnQpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvbjtcbiAgb3JpZ2luX2xhYmVsOiBzdHJpbmcgb3B0aW9uO1xufVxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcbmxldCB0cmFja19jdXJzb3IsIHNldF90cmFja19jdXJzb3IgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxuXG5sZXQgZHVtbXlfbW9kZWwgPVxuICB7XG4gICAgcmVuZGVyaW5nID0gRHJhd1RhYnVsYXIgKCk7XG4gICAgYWNjdXJhY3kgPSBTb21lIFB1YmxpY19kYXRhLkxvdztcbiAgICBvcmlnaW4gPSBOb25lO1xuICAgIG9yaWdpbl9sYWJlbCA9IE5vbmU7XG4gIH1cblxubGV0IG1vZGVsLCBzZXRfbW9kZWwgPSBSZWFjdC5TLmNyZWF0ZSBkdW1teV9tb2RlbFxubGV0IHRvdGFsX2lucHV0X2lkID0gXCJ0b3RhbF9pbnB1dFwiXG5sZXQgZndkX2lucHV0X2lkID0gXCJmd2RfaW5wdXRcIlxubGV0IGJ3ZF9pbnB1dF9pZCA9IFwiYndkX2lucHV0XCJcblxubGV0IGluZmx1ZW5jZV9ub2RlX2xhYmVsID0gZnVuY3Rpb25cbiAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT5cbiAgICBpZiByLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgPSBcIlwiIHRoZW5cbiAgICAgIHIuUHVibGljX2RhdGEucnVsZV9hc3RcbiAgICBlbHNlXG4gICAgICByLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWxcbiAgfCBQdWJsaWNfZGF0YS5WYXIgciAtPlxuICAgIGlmIHIuUHVibGljX2RhdGEudmFyX2xhYmVsID0gXCJcIiB0aGVuXG4gICAgICByLlB1YmxpY19kYXRhLnZhcl9hc3RcbiAgICBlbHNlXG4gICAgICByLlB1YmxpY19kYXRhLnZhcl9sYWJlbFxuXG5sZXQgdXBkYXRlX21vZGVsX2dyYXBoIGYgPVxuICBsZXQgbSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2ggbS5yZW5kZXJpbmcgd2l0aFxuICB8IERyYXdUYWJ1bGFyIF8gLT4gKClcbiAgfCBEcmF3R3JhcGggZyAtPiBzZXRfbW9kZWwgeyBtIHdpdGggcmVuZGVyaW5nID0gRHJhd0dyYXBoIChmIGcpIH1cblxubGV0IHVwZGF0ZV9tb2RlbCBmID0gc2V0X21vZGVsIChmIChSZWFjdC5TLnZhbHVlIG1vZGVsKSlcbmxldCBkaXNwbGF5X2lkID0gXCJpbmZsdWVuY2VfbWFwX2Rpc3BsYXlcIlxuXG5sZXQgaW5mbHVlbmNlbWFwID1cbiAgSnNfZ3JhcGhsb2dnZXIuY3JlYXRlX2dyYXBoX2xvZ2dlciBkaXNwbGF5X2lkIChmdW4geCAtPlxuICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgIGxldCBub2RlID1cbiAgICAgICAgICAgIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIChKcy50b19zdHJpbmcgeCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgSG9va2VkLkUuc2VuZCBTdWJwYW5lbF9lZGl0b3IubW92ZV9jdXJzb3JfaG9va1xuICAgICAgICAgICAgICAoUHVibGljX2RhdGEucG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZSBub2RlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9yaWdpbiA9IFNvbWUgKFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG5vZGUpIGluXG4gICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9IFNvbWUgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIGluXG4gICAgICAgICAgeyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSkpXG5cbmxldCB0b3RhbF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIHRvdGFsX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfdmFsdWUgXCIxXCI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgMTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZndkX2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgZndkX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDE7XG4gICAgICBdXG4gICAgKClcblxubGV0IGJ3ZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGJ3ZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSAxO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBuZXh0X25vZGUgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIk5leHRcIiBdXG5cbmxldCBwcmV2X25vZGUgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIlByZXZpb3VzXCIgXVxuXG5sZXQgcmVjZW50ZXIgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIjsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIlJlc2V0XCIgXVxuXG5sZXQgdHJhY2tfY3Vyc29yX3N3aXRjaCA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWw1LmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAoZnVuIHRjIC0+XG4gICAgICAgICAgICAgICBcImZvcm0tY29udHJvbFwiIDo6IFwiYnRuXCIgOjogXCJidG4tZGVmYXVsdFwiXG4gICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgKGlmIHRjIHRoZW5cbiAgICAgICAgICAgICAgICAgIFsgXCJhY3RpdmVcIiBdXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgW10pKVxuICAgICAgICAgICAgIHRyYWNrX2N1cnNvcik7XG4gICAgICAgIEh0bWwuYV9vbmNsaWNrIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gc2V0X3RyYWNrX2N1cnNvciAobm90IChSZWFjdC5TLnZhbHVlIHRyYWNrX2N1cnNvcikpIGluXG4gICAgICAgICAgICB0cnVlKTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiVHJhY2sgY3Vyc29yXCIgXVxuXG5sZXQgZXhwb3J0X2NvbmZpZyA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gXCJpbmZsdWVuY2UtZXhwb3J0XCI7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgICAgICAgIEx3dC5pZ25vcmVfcmVzdWx0XG4gICAgICAgICAgICAgICAgKCBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9leHBvcnRcIlxuICAgICAgICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgeyBhY2N1cmFjeTsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5XG4gICAgICAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIGluZmx1ZW5jZXNfc3RyaW5nIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyBpbmZsdWVuY2VzX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkpKSlcbiAgICAgICAgICAgICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0ICkpO1xuICAgICAgICB9O1xuICAgICAgXTtcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPSBSZWFjdC5TLmNvbnN0IHRydWU7XG4gIH1cblxubGV0IHJlbmRlcmluZ19jaG9vc2VyX2lkID0gXCJpbmZsdWVuY2UtcmVuZGVyaW5nXCJcblxubGV0IHJlbmRlcmluZ19jaG9vc2VyID1cbiAgbGV0IHsgcmVuZGVyaW5nOyBfIH0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIEh0bWwuc2VsZWN0XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCByZW5kZXJpbmdfY2hvb3Nlcl9pZCBdXG4gICAgW1xuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKChmdW4gbCAtPlxuICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBsKVxuICAgICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIFwidGFidWxhclwiIF0pXG4gICAgICAgIChIdG1sLnR4dCBcIlRhYnVsYXJcIik7XG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgICAgfCBEcmF3VGFidWxhciBfIC0+IGwpXG4gICAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgXCJncmFwaFwiIF0pXG4gICAgICAgIChIdG1sLnR4dCBcIkdyYXBoXCIpO1xuICAgIF1cblxubGV0IGFjY3VyYWN5X2Nob29zZXJfaWQgPSBcImluZmx1ZW5jZS1hY2N1cmFjeVwiXG5cbmxldCBhY2N1cmFjeV9jaG9vc2VyID1cbiAgbGV0IHsgYWNjdXJhY3k7IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbGV0IG9wdGlvbl9nZW4geCA9XG4gICAgSHRtbC5vcHRpb25cbiAgICAgIH5hOlxuICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgIGlmIGFjY3VyYWN5ID0gU29tZSB4IHRoZW5cbiAgICAgICAgICAgICBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbClcbiAgICAgICAgICAgWyBIdG1sLmFfdmFsdWUgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSBdKVxuICAgICAgKEh0bWwudHh0IChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkpXG4gIGluXG4gIEh0bWwuc2VsZWN0XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCBhY2N1cmFjeV9jaG9vc2VyX2lkIF1cbiAgICAoTGlzdC5tYXAgb3B0aW9uX2dlbiBQdWJsaWNfZGF0YS5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVscylcblxubGV0IGlzX2NlbnRlciBvcmlnaW5fc2hvcnRfb3B0IG5vZGUgPVxuICBtYXRjaCBvcmlnaW5fc2hvcnRfb3B0IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIG5vZGUgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSByIC0+IHIuUHVibGljX2RhdGEucnVsZV9pZCA9IDBcbiAgICB8IFB1YmxpY19kYXRhLlZhciBfIC0+IGZhbHNlKVxuICB8IFNvbWUgb3JpZ2luIC0+XG4gICAgKG1hdGNoIG9yaWdpbiwgbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIGlkLCBQdWJsaWNfZGF0YS5SdWxlIGEgLT4gYS5QdWJsaWNfZGF0YS5ydWxlX2lkID0gaWRcbiAgICB8IFB1YmxpY19kYXRhLlZhciBpZCwgUHVibGljX2RhdGEuVmFyIGEgLT4gYS5QdWJsaWNfZGF0YS52YXJfaWQgPSBpZFxuICAgIHwgUHVibGljX2RhdGEuVmFyIF8sIFB1YmxpY19kYXRhLlJ1bGUgX1xuICAgIHwgUHVibGljX2RhdGEuUnVsZSBfLCBQdWJsaWNfZGF0YS5WYXIgXyAtPlxuICAgICAgZmFsc2UpXG5cbmxldCBqc29uX3RvX2dyYXBoIGxvZ2dlciAoXywgXywgXywgXywgb3JpZ2luLCBpbmZsdWVuY2VfbWFwKSA9XG4gIGxldCBvcmlnaW5fc2hvcnRfb3B0ID1cbiAgICBPcHRpb25fdXRpbC5tYXAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgb3JpZ2luXG4gIGluXG4gIGxldCAoKSA9IEdyYXBoX2xvZ2dlcnMucHJpbnRfZ3JhcGhfcHJlYW1ibGUgbG9nZ2VyIFwiXCIgaW5cbiAgbGV0IG5vZGVzID0gaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5ub2RlcyBpblxuICBsZXQgZGlyZWN0aXZlc19vZl9ub2RlIG5vZGUgPVxuICAgIGxldCBqc29uID0gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uIG5vZGUgaW5cbiAgICBsZXQgbGFiZWwgPSBpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlIGluXG4gICAgbWF0Y2ggbm9kZSB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIHIgLT5cbiAgICAgIGxldCBwb3MgPSByLlB1YmxpY19kYXRhLnJ1bGVfcG9zaXRpb24gaW5cbiAgICAgIGxldCBjb250ZXh0dWFsX2hlbHAgPSBMb2MudG9fc3RyaW5nIHBvcyBeIFwiIFwiIF4gci5QdWJsaWNfZGF0YS5ydWxlX2FzdCBpblxuICAgICAgbGV0IGZpbGxjb2xvciA9XG4gICAgICAgIGlmIGlzX2NlbnRlciBvcmlnaW5fc2hvcnRfb3B0IG5vZGUgdGhlblxuICAgICAgICAgICFDb25maWcuY2VudGVyX2NvbG9yXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAhQ29uZmlnLnJ1bGVfY29sb3JcbiAgICAgIGluXG4gICAgICBbXG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAhQ29uZmlnLnJ1bGVfc2hhcGU7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gWyBwb3MgXTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgY29udGV4dHVhbF9oZWxwO1xuICAgICAgXVxuICAgIHwgUHVibGljX2RhdGEuVmFyIHIgLT5cbiAgICAgIGxldCBwb3MgPSByLlB1YmxpY19kYXRhLnZhcl9wb3NpdGlvbiBpblxuICAgICAgbGV0IGNvbnRleHR1YWxfaGVscCA9IExvYy50b19zdHJpbmcgcG9zIF4gci5QdWJsaWNfZGF0YS52YXJfYXN0IGluXG4gICAgICBsZXQgZmlsbGNvbG9yID1cbiAgICAgICAgaWYgaXNfY2VudGVyIG9yaWdpbl9zaG9ydF9vcHQgbm9kZSB0aGVuXG4gICAgICAgICAgIUNvbmZpZy5jZW50ZXJfY29sb3JcbiAgICAgICAgZWxzZVxuICAgICAgICAgICFDb25maWcudmFyaWFibGVfY29sb3JcbiAgICAgIGluXG4gICAgICBbXG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIGxhYmVsO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAhQ29uZmlnLnZhcmlhYmxlX3NoYXBlO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIFsgcG9zIF07XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIGNvbnRleHR1YWxfaGVscDtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IG1heF9ydWxlX2lkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBiaWdnZXN0X2lkIG4gLT5cbiAgICAgICAgbWF0Y2ggbiB3aXRoXG4gICAgICAgIHwgUHVibGljX2RhdGEuUnVsZSByIC0+IG1heCBiaWdnZXN0X2lkICgxICsgci5QdWJsaWNfZGF0YS5ydWxlX2lkKVxuICAgICAgICB8IFB1YmxpY19kYXRhLlZhciBfIC0+IGJpZ2dlc3RfaWQpXG4gICAgICAoLTEpIG5vZGVzXG4gIGluXG4gIGxldCBnZXRfaWRfb2Zfbm9kZV9pZCBub2RlX2lkID1cbiAgICBtYXRjaCBub2RlX2lkIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgaWQgLT4gaWRcbiAgICB8IFB1YmxpY19kYXRhLlZhciBpZCAtPiBpZCArIG1heF9ydWxlX2lkXG4gIGluXG4gIGxldCBnZXRfaWRfb2Zfbm9kZSBub2RlID1cbiAgICBnZXRfaWRfb2Zfbm9kZV9pZCAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgbm9kZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gbm9kZSAtPlxuICAgICAgICBsZXQgZGlyZWN0aXZlcyA9IGRpcmVjdGl2ZXNfb2Zfbm9kZSBub2RlIGluXG4gICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfbm9kZSBsb2dnZXIgfmRpcmVjdGl2ZXNcbiAgICAgICAgICAoc3RyaW5nX29mX2ludCAoZ2V0X2lkX29mX25vZGUgbm9kZSkpKVxuICAgICAgbm9kZXNcbiAgaW5cbiAgbGV0IHByaW50X21hcHMgPyhkaXJlY3RpdmVzID0gW10pIGxvZ2dlciBtYXAgPVxuICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuaXRlclxuICAgICAgKGZ1biBzb3VyY2UgbWFwIC0+XG4gICAgICAgIGxldCBzb3VyY2VfaWQgPSBzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZV9pZCBzb3VyY2UpIGluXG4gICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuaXRlclxuICAgICAgICAgIChmdW4gdGFyZ2V0IGxhYmVsX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCB0YXJnZXRfaWQgPSBzdHJpbmdfb2ZfaW50IChnZXRfaWRfb2Zfbm9kZV9pZCB0YXJnZXQpIGluXG4gICAgICAgICAgICAoKmxldCBsYWJlbF9zdHJpbmcgPSBcInRvZG9cIlxuICAgICAgICAgICAgICBpbiopXG4gICAgICAgICAgICBsZXQgbGFiZWxfc3RyaW5nID0gUHVibGljX2RhdGEuc3RyaW5nX29mX2xhYmVsX2xpc3QgbGFiZWxfbGlzdCBpblxuICAgICAgICAgICAgbGV0IGRpcmVjdGl2ZXMgPVxuICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBsYWJlbF9zdHJpbmcgOjogZGlyZWN0aXZlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnMucHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXMgc291cmNlX2lkIHRhcmdldF9pZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgpKVxuICAgICAgICAgIG1hcClcbiAgICAgIG1hcFxuICBpblxuICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgW1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgIUNvbmZpZy53YWtlX3VwX2NvbG9yO1xuICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkICFDb25maWcud2FrZV91cF9hcnJvdztcbiAgICBdXG4gIGluXG4gIGxldCAoKSA9IHByaW50X21hcHMgfmRpcmVjdGl2ZXMgbG9nZ2VyIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEucG9zaXRpdmUgaW5cbiAgbGV0IGRpcmVjdGl2ZXMgPVxuICAgIFtcbiAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yICFDb25maWcuaW5oaWJpdGlvbl9jb2xvcjtcbiAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCAhQ29uZmlnLmluaGliaXRpb25fYXJyb3c7XG4gICAgXVxuICBpblxuICBsZXQgKCkgPSBwcmludF9tYXBzIH5kaXJlY3RpdmVzIGxvZ2dlciBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5lZ2F0aXZlIGluXG4gIGxldCAoKSA9IEdyYXBoX2xvZ2dlcnMucHJpbnRfZ3JhcGhfZm9vdCBsb2dnZXIgaW5cbiAgKClcblxubGV0IHRhYmxlX29mX2luZmx1ZW5jZXNfanNvbiAoXywgXywgXywgXywgb3JpZ2luLCBpbmZsdWVuY2VfbWFwKSA9XG4gIGxldCBuYW1lciA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIGUgLT5cbiAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5hZGRcbiAgICAgICAgICAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgZSlcbiAgICAgICAgICBlIGFjYylcbiAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZW1wdHkgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5ub2Rlc1xuICBpblxuICBsZXQgb3JpZ2luX2lkX29wdCA9XG4gICAgT3B0aW9uX3V0aWwubWFwIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG9yaWdpblxuICBpblxuICBtYXRjaCBvcmlnaW5faWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IGVtcHR5X3NwaGVyZVxuICB8IFNvbWUgb3JpZ2luX2lkIC0+XG4gICAgbGV0IHBvc2l0aXZlX29uLCBwb3NpdGl2ZV9ieSA9XG4gICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGRcbiAgICAgICAgKGZ1biBzcmMgLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZvbGQgKGZ1biBkc3QgZGF0YSAoKG9uLCBieSkgYXMgYWNjKSAtPlxuICAgICAgICAgICAgICBpZiBzcmMgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBkc3QgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodiwgZGF0YSkgOjogb24sIGJ5XG4gICAgICAgICAgICAgICkgZWxzZSBpZiBkc3QgPSBvcmlnaW5faWQgdGhlbiAoXG4gICAgICAgICAgICAgICAgbWF0Y2ggUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5maW5kX29wdGlvbiBzcmMgbmFtZXIgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiBvbiwgKHYsIGRhdGEpIDo6IGJ5XG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEucG9zaXRpdmUgKFtdLCBbXSlcbiAgICBpblxuICAgIGxldCBuZWdhdGl2ZV9vbiwgbmVnYXRpdmVfYnkgPVxuICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5mb2xkXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5mb2xkIChmdW4gZHN0IGRhdGEgKChvbiwgYnkpIGFzIGFjYykgLT5cbiAgICAgICAgICAgICAgaWYgc3JjID0gb3JpZ2luX2lkIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZmluZF9vcHRpb24gZHN0IG5hbWVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gKHYsIGRhdGEpIDo6IG9uLCBieVxuICAgICAgICAgICAgICApIGVsc2UgaWYgZHN0ID0gb3JpZ2luX2lkIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZmluZF9vcHRpb24gc3JjIG5hbWVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gb24sICh2LCBkYXRhKSA6OiBieVxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MpKVxuICAgICAgICBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLm5lZ2F0aXZlIChbXSwgW10pXG4gICAgaW5cbiAgICB7IHBvc2l0aXZlX29uOyBwb3NpdGl2ZV9ieTsgbmVnYXRpdmVfb247IG5lZ2F0aXZlX2J5IH1cblxubGV0IHBvcF9jZWxsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBIdG1sLnRkIFtdLCBbXVxuICB8ICgobm9kZSwgX21hcHBpbmdzKSwgcG9zaXRpdmUpIDo6IHQgLT5cbiAgICAoIEh0bWwudGRcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX29uY2xpY2sgKGZ1biBfIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEhvb2tlZC5FLnNlbmQgU3VicGFuZWxfZWRpdG9yLm1vdmVfY3Vyc29yX2hvb2tcbiAgICAgICAgICAgICAgICAgICAgKFB1YmxpY19kYXRhLnBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgbm9kZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgU29tZSAoUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgbm9kZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPSBTb21lIChpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlKSBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+IHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB0cnVlKTtcbiAgICAgICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgKGlmIHBvc2l0aXZlIHRoZW5cbiAgICAgICAgICAgICAgICAgICBcInN1Y2Nlc3NcIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgXCJkYW5nZXJcIik7XG4gICAgICAgICAgICAgIF07XG4gICAgICAgICAgXVxuICAgICAgICBbIEh0bWwuY2RhdGEgKGluZmx1ZW5jZV9ub2RlX2xhYmVsIG5vZGUpIF0sXG4gICAgICB0IClcblxubGV0IHJlYyBmaWxsX3RhYmxlIGFjYyBieSBvbiA9XG4gIGlmIG9uID0gW10gJiYgYnkgPSBbXSB0aGVuXG4gICAgTGlzdC5yZXYgYWNjXG4gIGVsc2UgKFxuICAgIGxldCBiLCBieScgPSBwb3BfY2VsbCBieSBpblxuICAgIGxldCBvLCBvbicgPSBwb3BfY2VsbCBvbiBpblxuICAgIGxldCBsaW5lID0gSHRtbC50ciBbIGI7IG8gXSBpblxuICAgIGZpbGxfdGFibGUgKGxpbmUgOjogYWNjKSBieScgb24nXG4gIClcblxubGV0IGRyYXdfdGFibGUgb3JpZ2luX2xhYmVsXG4gICAgeyBwb3NpdGl2ZV9vbjsgcG9zaXRpdmVfYnk7IG5lZ2F0aXZlX29uOyBuZWdhdGl2ZV9ieSB9ID1cbiAgbGV0IGJ5ID1cbiAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgIChmdW4geCAtPiB4LCBmYWxzZSlcbiAgICAgIG5lZ2F0aXZlX2J5XG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCB0cnVlKSBwb3NpdGl2ZV9ieSlcbiAgaW5cbiAgbGV0IG9uID1cbiAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgIChmdW4geCAtPiB4LCBmYWxzZSlcbiAgICAgIG5lZ2F0aXZlX29uXG4gICAgICAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCB0cnVlKSBwb3NpdGl2ZV9vbilcbiAgaW5cbiAgbGV0IG91dHMgPSBmaWxsX3RhYmxlIFtdIGJ5IG9uIGluXG4gIEh0bWwudGFibGV4XG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInRhYmxlXCIgXSBdXG4gICAgfnRoZWFkOlxuICAgICAgKEh0bWwudGhlYWRcbiAgICAgICAgIFtcbiAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEh0bWwudGhcbiAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY29sc3BhbiAyIF1cbiAgICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIChPcHRpb25fdXRpbC51bnNvbWUgXCJvcmlnaW5cIiBvcmlnaW5fbGFiZWwpIF07XG4gICAgICAgICAgICAgXTtcbiAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIEh0bWwudGggWyBIdG1sLmNkYXRhIFwiaXMgaW5mbHVlbmNlZCBieVwiIF07XG4gICAgICAgICAgICAgICBIdG1sLnRoIFsgSHRtbC5jZGF0YSBcImluZmx1ZW5jZXNcIiBdO1xuICAgICAgICAgICAgIF07XG4gICAgICAgICBdKVxuICAgIFsgSHRtbC50Ym9keSBvdXRzIF1cblxubGV0IGluZmx1ZW5jZV9zcGhlcmUgPVxuICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlIGR1bW15X21vZGVsIG1vZGVsXG4gICAgKFJlc3VsdF91dGlsLm9rIGVtcHR5X3NwaGVyZSlcbiAgICAoZnVuIG1hbmFnZXIgeyByZW5kZXJpbmc7IGFjY3VyYWN5OyBvcmlnaW47IG9yaWdpbl9sYWJlbCA9IF8gfSAtPlxuICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2Q6Tm9uZSA/YndkOk5vbmUgP29yaWdpbiB+dG90YWw6MVxuICAgICAgICAgIGFjY3VyYWN5XG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgdGFibGVfb2ZfaW5mbHVlbmNlc19qc29uXG4gICAgICB8IERyYXdHcmFwaCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGVtcHR5X3NwaGVyZSkpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IGFjY3VyYWN5X2Zvcm0gPVxuICAgIEh0bWwuZm9ybVxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0taG9yaXpvbnRhbFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgcmVuZGVyaW5nX2Nob29zZXJfaWQ7XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiUmVuZGVyaW5nXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTRcIiBdIF0gWyByZW5kZXJpbmdfY2hvb3NlciBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuYV9sYWJlbF9mb3IgYWNjdXJhY3lfY2hvb3Nlcl9pZDtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJBY2N1cmFjeVwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgYWNjdXJhY3lfY2hvb3NlciBdO1xuICAgICAgICAgIF07XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgIFsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtM1wiIF07IEh0bWwuYV9sYWJlbF9mb3IgdG90YWxfaW5wdXRfaWQgXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmF2aWdhdGVcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIHByZXZfbm9kZSBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIG5leHRfbm9kZSBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIHJlY2VudGVyIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgdHJhY2tfY3Vyc29yX3N3aXRjaCBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG4gIGluXG4gIGxldCBncmFwaF9mb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWhvcml6b250YWxcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0zXCIgXSBdXG4gICAgICAgICAgICAgIFsgSHRtbC50eHQgXCJTaXplIFJhZGl1c1wiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgdG90YWxfaW5wdXQgXTtcbiAgICAgICAgICAgIEh0bWwubGFiZWwgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0xXCIgXSBdIFsgSHRtbC50eHQgXCJmd2RcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIGZ3ZF9pbnB1dCBdO1xuICAgICAgICAgICAgSHRtbC5sYWJlbCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBIdG1sLnR4dCBcImJ3ZFwiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgYndkX2lucHV0IF07XG4gICAgICAgICAgXTtcbiAgICAgIF1cbiAgaW5cbiAgW1xuICAgIGFjY3VyYWN5X2Zvcm07XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4geyByZW5kZXJpbmc7IF8gfSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IFsgXCJmbGV4LWNvbnRlbnRcIiBdXG4gICAgICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBbXSlcbiAgICAgICAgICAgICAgIG1vZGVsKTtcbiAgICAgICAgICBUeXhtbF9qcy5SLmZpbHRlcl9hdHRyaWIgKEh0bWwuYV9oaWRkZW4gKCkpXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4geyByZW5kZXJpbmc7IF8gfSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgbW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIGdyYXBoX2Zvcm07XG4gICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2lkIGRpc3BsYXlfaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZmxleC1jb250ZW50XCIgXSBdIFtdO1xuICAgICAgXTtcbiAgICBUeXhtbF9qcy5SLkh0bWw1LmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgICAgICAgKFJlYWN0LlMubDJcbiAgICAgICAgICAgIChmdW4geyByZW5kZXJpbmc7IG9yaWdpbl9sYWJlbDsgXyB9IHNwaGVyZSAtPlxuICAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgICB8IERyYXdHcmFwaCBfIC0+IFtdXG4gICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgKCkgLT5cbiAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5mb2xkIHNwaGVyZVxuICAgICAgICAgICAgICAgICAgfm9rOihmdW4gc3BoZXJlIC0+IFsgZHJhd190YWJsZSBvcmlnaW5fbGFiZWwgc3BoZXJlIF0pXG4gICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvciAtPlxuICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlIG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yKSlcbiAgICAgICAgICAgIG1vZGVsIGluZmx1ZW5jZV9zcGhlcmUpKTtcbiAgICBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgZXhwb3J0X2NvbmZpZztcbiAgXVxuXG5sZXQgbmVpdGhlcl9nY19tZSA9XG4gIFJlYWN0LlMubDJcbiAgICAoZnVuIF8geyByZW5kZXJpbmc7IGFjY3VyYWN5OyBvcmlnaW47IG9yaWdpbl9sYWJlbCA9IF8gfSAtPlxuICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgIHwgRHJhd0dyYXBoIHsgZndkOyBid2Q7IHRvdGFsIH0gLT5cbiAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJpbmZsdWVuY2VfbWFwXCJcbiAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5XG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gaW5mbHVlbmNlcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMDAwIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlciA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgfm1vZGU6TG9nZ2Vycy5Kc19HcmFwaCBmbXRcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ2dlcl9ncmFwaCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuZXh0ZW5kX2xvZ2dlciBsb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0ganNvbl90b19ncmFwaCBsb2dnZXJfZ3JhcGggaW5mbHVlbmNlcyBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZ3JhcGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoX29mX2xvZ2dlciBsb2dnZXJfZ3JhcGhcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYXBoX2pzb24gPSBHcmFwaF9qc29uLnRvX2pzb24gZ3JhcGggaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mbHVzaF9sb2dnZXIgbG9nZ2VyIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2VfbG9nZ2VyIGxvZ2dlciBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIGluZmx1ZW5jZW1hcCMjc2V0RGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKEpzLnN0cmluZyAoWW9qc29uLkJhc2ljLnRvX3N0cmluZyBncmFwaF9qc29uKSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGluZmx1ZW5jZW1hcCMjY2xlYXJEYXRhIGluXG4gICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yIGUpKSkpXG4gICAgKFJlYWN0LlMub24gfmVxOlN0YXRlX3Byb2plY3QubW9kZWxfZXF1YWwgdGFiX2lzX2FjdGl2ZVxuICAgICAgIFN0YXRlX3Byb2plY3QuZHVtbXlfbW9kZWwgU3RhdGVfcHJvamVjdC5tb2RlbClcbiAgICBtb2RlbFxuXG5sZXQgbm9yX2djX21lID1cbiAgU3RhdGVfZmlsZS53aXRoX2N1cnJlbnRfcG9zXG4gICAgfm9uOihSZWFjdC5TLkJvb2wuKCAmJiApIHRhYl9pc19hY3RpdmUgdHJhY2tfY3Vyc29yKVxuICAgIChmdW4gZmlsZW5hbWUgY3Vyc29yX3BvcyAtPlxuICAgICAgU29tZVxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgbWFuYWdlciNnZXRfaW5mbHVlbmNlX21hcF9ub2RlX2F0IH5maWxlbmFtZSBjdXJzb3JfcG9zXG4gICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbicgLT5cbiAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW4gPSBvcmlnaW4nOyBvcmlnaW5fbGFiZWwgPSBOb25lIH0pKSkpKVxuICAgIChMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5sZXQgZG9udF9nY19tZSA9IHJlZiBbXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gZG9udF9nY19tZSA6PSBbIG5laXRoZXJfZ2NfbWU7IG5vcl9nY19tZSBdIGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIGV4cG9ydF9jb25maWcgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCByZW5kZXJpbmdfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICBtIHdpdGhcbiAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcgPVxuICAgICAgICAgICAgICAgICAgICAgKGlmIEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlID0gXCJncmFwaFwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIERyYXdHcmFwaCB7IGZ3ZCA9IE5vbmU7IGJ3ZCA9IE5vbmU7IHRvdGFsID0gMSB9XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgRHJhd1RhYnVsYXIgKCkpO1xuICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBhY2N1cmFjeV9jaG9vc2VyKSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgYWNjdXJhY3kgPVxuICAgICAgICAgICAgIFB1YmxpY19kYXRhLmFjY3VyYWN5X29mX3N0cmluZyAoSnMudG9fc3RyaW5nIHZhIyMudmFsdWUpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT4geyBtIHdpdGggYWNjdXJhY3kgfSkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCB0b3RhbF9pbnB1dCkjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbF9ncmFwaCAoZnVuIG0gLT4geyBtIHdpdGggdG90YWwgPSBpbnRfb2Zfc3RyaW5nIHZhIH0pXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBKcy5fdHJ1ZVxuICAgICAgICAgICB3aXRoIF8gLT4gSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgZndkX2lucHV0KSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuZnVsbF9oYW5kbGVyIChmdW4gdmEgXyAtPlxuICAgICAgICAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSBpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgZndkID1cbiAgICAgICAgICAgICAgIGlmIHZhID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgU29tZSAoaW50X29mX3N0cmluZyB2YSlcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9tb2RlbF9ncmFwaCAoZnVuIG0gLT4geyBtIHdpdGggZndkIH0pIGluXG4gICAgICAgICAgICAgSnMuX3RydWVcbiAgICAgICAgICAgd2l0aCBfIC0+IEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGJ3ZF9pbnB1dCkjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0IGJ3ZCA9XG4gICAgICAgICAgICAgICBpZiB2YSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFNvbWUgKGludF9vZl9zdHJpbmcgdmEpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfbW9kZWxfZ3JhcGggKGZ1biBtIC0+IHsgbSB3aXRoIGJ3ZCB9KSBpblxuICAgICAgICAgICAgIEpzLl90cnVlXG4gICAgICAgICAgIHdpdGggXyAtPiBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gcmVjZW50ZXIpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIF8gXyAtPlxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfcmVjZW50ZXJcIlxuICAgICAgICAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfaW5pdGlhbF9ub2RlXG4gICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW5fcmVmaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCBpbmZsdWVuY2Vfbm9kZV9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSkpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBuZXh0X25vZGUpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIF8gXyAtPlxuICAgICAgICAgICBsZXQgeyBvcmlnaW47IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX25leHRfbm9kZVwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9uZXh0X25vZGUgb3JpZ2luXG4gICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW5fcmVmaW5lZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCBpbmZsdWVuY2Vfbm9kZV9sYWJlbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KSkpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBwcmV2X25vZGUpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIF8gXyAtPlxuICAgICAgICAgICBsZXQgeyBvcmlnaW47IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX3ByZXZfbm9kZVwiXG4gICAgICAgICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9wcmV2aW91c19ub2RlIG9yaWdpblxuICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gb3JpZ2luX3JlZmluZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgaW5mbHVlbmNlX25vZGVfbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSkpKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZpbmZsdWVuY2VzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmluZmx1ZW5jZXNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5sZXQgc2l0ZSBhID0gWyBhLCBOb25lLCBTb21lIChQdWJsaWNfZGF0YS5Cb3VuZF90byAxKSwgTm9uZSBdXG5cbmxldCBwcmludF9lZGdlICgoYSwgYiksIChjLCBkKSkgbGlzdCA9XG4gIFV0aWxpdHkucHJpbnRfbmV3bGluZSAoVXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIFsgYSwgc2l0ZSBiOyBjLCBzaXRlIGQgXSBsaXN0KVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBzY2MgPVxuICAgIFN0YXRlX3Byb2plY3Qub25fcHJvamVjdF9jaGFuZ2VfYXN5bmMgfm9uOnRhYl9pc19hY3RpdmUgKClcbiAgICAgIChSZWFjdC5TLmNvbnN0ICgpKSBbXSAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpICgpIC0+XG4gICAgICAgIG1hbmFnZXIjZ2V0X3BvdGVudGlhbF9wb2x5bWVycyAoU29tZSBQdWJsaWNfZGF0YS5IaWdoKVxuICAgICAgICAgIChTb21lIFB1YmxpY19kYXRhLkhpZ2gpXG4gICAgICAgICgqVE9ETzogbWFrZSB0aGVzZSBvcHRpb25zIHR1bmFibGUgKilcbiAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgfm9rOihmdW4gKF8sIF8sIHNjYykgLT5cbiAgICAgICAgICAgICAgICBsZXQgc2NjID0gTGlzdC5yZXZfbWFwIExpc3QucmV2IHNjYyBpblxuICAgICAgICAgICAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICAgICAgICAgICAgaWYgc2NjID0gW10gfHwgc2NjID0gWyBbXSBdIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSBzaXplIG9mIGJpb21vbGVjdWxhciBjb21wb3VuZHMgaXMgdW5pZm9ybWx5IGJvdW5kZWQuXCJcbiAgICAgICAgICAgICAgICAgICAgICBbXVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IGxpc3RfZWRnZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X25ld2xpbmUgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoKGEsIGIpLCAoYywgZCkpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludF9lZGdlICgoYSwgYiksIChjLCBkKSkgbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0IGxpc3RfZWRnZXMpXG4gICAgICAgICAgICAgICAgICAgICAgICBbXSBzY2NcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X25ld2xpbmUgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIGZvbGxvd2luZyBib25kcyBtYXkgZm9ybSBhcmJpdHJhcnkgbG9uZyBjaGFpbnMgb2YgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHM6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgWyBIdG1sLnAgb3V0cHV0IF0pXG4gICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSBtKTtcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgICAgbWgpKVxuICBpblxuICBbXG4gICAgVHl4bWxfanMuUi5IdG1sNS5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1wcmVcIjsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc2NjKTtcbiAgXVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBvbHltZXJzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBvbHltZXJzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHJpZ2h0c3VicGFuZWxfaWQgOiBzdHJpbmcgPSBcInJpZ2h0c3VicGFuZWxcIlxuXG5sZXQgcmlnaHRzdWJwYW5lbCAoKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBTdWJwYW5lbF9lZGl0b3IuZWRpdG9yX2Z1bGwgKGZ1biBlZGl0b3JfZnVsbCAtPlxuICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAoaWYgZWRpdG9yX2Z1bGwgdGhlblxuICAgICAgICAgICAgICAgICAgICBbIFwiaGlkZGVuXCIgXVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTZcIjsgXCJoaWRkZW4teHNcIjsgXCJoaWRkZW4tc21cIjsgXCJmbGV4LWNvbnRlbnRcIiBdKSkpO1xuICAgICAgXVxuICAgIFtcbiAgICAgIFVpX2NvbW1vbi5uYXZ0YWJzIFwic3VibmF2dGFiXCJcbiAgICAgICAgW1xuICAgICAgICAgIFwiY29udGFjdF9tYXBcIiwgTm9uZSwgVGFiX2NvbnRhY3RfbWFwLm5hdmxpICgpO1xuICAgICAgICAgIFwiaW5mbHVlbmNlc1wiLCBOb25lLCBUYWJfaW5mbHVlbmNlcy5uYXZsaSAoKTtcbiAgICAgICAgICBcImNvbnN0cmFpbnRzXCIsIE5vbmUsIFRhYl9jb25zdHJhaW50cy5uYXZsaSAoKTtcbiAgICAgICAgICBcInBvbHltZXJzXCIsIE5vbmUsIFRhYl9wb2x5bWVycy5uYXZsaSAoKTtcbiAgICAgICAgXTtcbiAgICAgIFVpX2NvbW1vbi5uYXZjb250ZW50IH5pZDpyaWdodHN1YnBhbmVsX2lkIFtdXG4gICAgICAgIFtcbiAgICAgICAgICBcImNvbnRhY3RfbWFwXCIsIFtdLCBUYWJfY29udGFjdF9tYXAuY29udGVudCAoKTtcbiAgICAgICAgICBcImluZmx1ZW5jZXNcIiwgW10sIFRhYl9pbmZsdWVuY2VzLmNvbnRlbnQgKCk7XG4gICAgICAgICAgXCJjb25zdHJhaW50c1wiLCBbXSwgVGFiX2NvbnN0cmFpbnRzLmNvbnRlbnQgKCk7XG4gICAgICAgICAgXCJwb2x5bWVyc1wiLCBbXSwgVGFiX3BvbHltZXJzLmNvbnRlbnQgKCk7XG4gICAgICAgIF07XG4gICAgXVxuXG4oKiogW2NoaWxkc19oaWRlIGJdIHRyaWdnZXJzIGNoYW5nZSB0aGUgc3RhdGUgb2YgY2hpbGQgdGFicyB0byBoaWRlIGlmIGIgaXMgVHJ1ZSwgb3IgZWxzZSB0byBzaG93ICopXG5sZXQgY2hpbGRzX2hpZGUgKGIgOiBib29sKSA6IHVuaXQgPVxuICBpZiBiIHRoZW4gKFxuICAgIGxldCAoKSA9IFRhYl9jb250YWN0X21hcC5wYXJlbnRfaGlkZSAoKSBpblxuICAgIGxldCAoKSA9IFRhYl9pbmZsdWVuY2VzLnBhcmVudF9oaWRlICgpIGluXG4gICAgbGV0ICgpID0gVGFiX2NvbnN0cmFpbnRzLnBhcmVudF9oaWRlICgpIGluXG4gICAgVGFiX3BvbHltZXJzLnBhcmVudF9oaWRlICgpXG4gICkgZWxzZSAoXG4gICAgbGV0ICgpID0gVGFiX2NvbnRhY3RfbWFwLnBhcmVudF9zaG93biAoKSBpblxuICAgIGxldCAoKSA9IFRhYl9pbmZsdWVuY2VzLnBhcmVudF9zaG93biAoKSBpblxuICAgIGxldCAoKSA9IFRhYl9jb25zdHJhaW50cy5wYXJlbnRfc2hvd24gKCkgaW5cbiAgICBUYWJfcG9seW1lcnMucGFyZW50X3Nob3duICgpXG4gIClcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3VicGFuZWxfZWRpdG9yLmVkaXRvcl9mdWxsIChmdW4gZWRpdG9yX2Z1bGwgLT5cbiAgICAgICAgICAgICAgICAgKCogY2hpbGQgaGlkaW5nIHNldCBoZXJlIHRvIGF2b2lkIFwiZ2NcIiAqKVxuICAgICAgICAgICAgICAgICBsZXQgKCkgPSBjaGlsZHNfaGlkZSBlZGl0b3JfZnVsbCBpblxuICAgICAgICAgICAgICAgICBSZWFjdC5TLmNvbnN0XG4gICAgICAgICAgICAgICAgICAgKGlmIGVkaXRvcl9mdWxsIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBbIFwiY29sLW1kLTEyXCI7IFwiZmxleC1jb250ZW50XCIgXVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImNvbC1tZC02XCI7IFwiZmxleC1jb250ZW50XCIgXSkpKTtcbiAgICAgICAgXVxuICAgICAgWyBTdWJwYW5lbF9lZGl0b3IuY29udGVudCAoKSBdO1xuICAgIHJpZ2h0c3VicGFuZWwgKCk7XG4gIF1cblxubGV0IGluaXRfZGVhZF9ydWxlcyAoKSA9XG4gIFJlYWN0LlMubDFcbiAgICAoZnVuIG1vZGVsIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcInRhYl9lZGl0b3JfZGVhZF9ydWxlXCJcbiAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX3J1bGVzXG4gICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfZGVhZF9ydWxlc1xuICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgcnVsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaGlkZGVuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZWFkIHJ1bGUgXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgJ1wiIF4gcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIF4gXCInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50IHJ1bGUuUHVibGljX2RhdGEucnVsZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLldhcm5pbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX3Bvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHdhcm5pbmdzKVxuICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT4gbWgpXG4gICAgICAgICAgICAgICA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlOk5vbmVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKSlcbiAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsXG5cbmxldCBpbml0X2RlYWRfYWdlbnRzICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX2FnZW50XCJcbiAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50c1xuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2RlYWRfYWdlbnRzXG4gICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgd2FybmluZ3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBhZ2VudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGV4dCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJEZWFkIGFnZW50IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyByYW5nZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuV2FybmluZztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPSBTb21lIHJhbmdlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9wb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXYgd2FybmluZ3MpXG4gICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPiBtaClcbiAgICAgICAgICAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyA/cmVzdWx0X2NvZGU6Tm9uZVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpKVxuICAgIFN0YXRlX3Byb2plY3QubW9kZWxcblxubGV0IGluaXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zICgpID1cbiAgUmVhY3QuUy5sMVxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwidGFiX2VkaXRvcl9kZWFkX3J1bGVcIlxuICAgICAgICAoU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgKHJ1bGUsIGNvbnRleHRfbGlzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2hpZGRlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIGhpbnQ6IHJldmVyc2libGUgcnVsZSBhcmUgYWx3YXlzIHdlYWtseSByZXZlcnNpYmxlICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwbHVyYWwsIHNraXAsIHRhYiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb250ZXh0X2xpc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbXSB8IFsgXyBdIC0+IFwiXCIsIFwiXCIsIFwiIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPiBcInNcIiwgXCJcXG5cIiwgXCJcXHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUnVsZSAlcyBtYXkgaW5kdWNlIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRzIGluIHRoZSBmb2xsb3dpbmcgY29udGV4dCVzOiVzJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiAnXCIgXiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgXiBcIidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0IDw+IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydWxlLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZ19vZl9pbnQgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbHVyYWwgc2tpcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGZtdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiIHNraXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZm10IChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzJXMgLT4gJXMgXCIgdGFiIGEgYikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogdG8gZG8sIGFkZCB0aGUgcG90ZW50aWFsIGNvbnRleHRzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLldhcm5pbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5yYW5nZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX3Bvc2l0aW9uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHdhcm5pbmdzKVxuICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT4gbWgpXG4gICAgICAgICAgICAgICA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlOk5vbmVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKSlcbiAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsXG5cbmxldCBkb250X2djX21lID0gcmVmIFtdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBTdWJwYW5lbF9lZGl0b3Iub25sb2FkICgpIGluXG4gIGRvbnRfZ2NfbWUgOj0gaW5pdF9kZWFkX3J1bGVzICgpIDo6ICFkb250X2djX21lO1xuICBkb250X2djX21lIDo9IGluaXRfZGVhZF9hZ2VudHMgKCkgOjogIWRvbnRfZ2NfbWU7XG4gIGRvbnRfZ2NfbWUgOj0gaW5pdF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKCkgOjogIWRvbnRfZ2NfbWU7XG4gIGxldCAoKSA9IFRhYl9jb250YWN0X21hcC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2luZmx1ZW5jZXMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9jb25zdHJhaW50cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3BvbHltZXJzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2ZWRpdG9yXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPiBjaGlsZHNfaGlkZSB0cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2ZWRpdG9yXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT4gY2hpbGRzX2hpZGUgZmFsc2UpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBTdWJwYW5lbF9lZGl0b3Iub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2NvbnRhY3RfbWFwLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9pbmZsdWVuY2VzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9jb25zdHJhaW50cy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfcG9seW1lcnMub25yZXNpemUgKCkgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgZGluX2lkLCBzZXRfZGluX2lkID0gUmVhY3QuUy5jcmVhdGUgXCJcIlxuXG5sZXQgZGluX2xpc3QgOlxuICAgIFs8IEh0bWxfdHlwZXMuc2VsZWN0X2NvbnRlbnRfZnVuID4gYE9wdGlvbiBdIEh0bWwuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50ID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fZXZlbnQgW11cbiAgICAoTHd0X3JlYWN0LkUubWFwX3NcbiAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgKFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgfm9rOihmdW4gZGluX2lkcyAtPlxuICAgICAgICAgICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gaWQgLT4gSHRtbC5vcHRpb24gfmE6WyBIdG1sLmFfdmFsdWUgaWQgXSAoSHRtbC50eHQgaWQpKVxuICAgICAgICAgICAgICAgICAgICBkaW5faWRzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IG91dClcbiAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IFtdKSlcbiAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+IG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX2RpbilcbiAgICAgICAgICAgICAgKCkpKVxuICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpXG5cbmxldCBkaW5fc2VsZWN0IDogWz4gSHRtbF90eXBlcy5zZWxlY3QgXSBIdG1sLmVsdCA9XG4gIFR5eG1sX2pzLlIuSHRtbDUuc2VsZWN0IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdIF0gZGluX2xpc3RcblxubGV0IGRpbl9kYXRhIDogRGF0YS5kaW4gb3B0aW9uIFJlYWN0LnNpZ25hbCA9XG4gIFJlYWN0LlMuYmluZCAoUmVhY3RpdmVEYXRhLlJMaXN0LnNpZ25hbCBkaW5fbGlzdCkgKGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBSZWFjdC5TLmNvbnN0IE5vbmVcbiAgICB8IF8gOjogXyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgc2V0X2Rpbl9pZCAoSnMudG9fc3RyaW5nIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUpXG4gICAgICBpblxuICAgICAgUmVhY3QuUy5iaW5kIGRpbl9pZCAoZnVuIGRpbl9pZCAtPlxuICAgICAgICAgIFJlYWN0LlMuaG9sZCBOb25lXG4gICAgICAgICAgICAoTHd0X3JlYWN0LkUuZnJvbSAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5tYXBcbiAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwuZm9sZCB+b2s6KGZ1biB4IC0+IHgpIH5lcnJvcjooZnVuIF8gLT4gTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgTm9uZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBMd3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgT3B0aW9uLnNvbWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2RpbiBkaW5faWQpKVxuICAgICAgICAgICAgICAgICAgICAgICgpKSkpKSlcblxubGV0IGRpbl9oZWFkZXIgOiBIdG1sX3R5cGVzLnRyIEh0bWwuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50ID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgIHwgU29tZSBkaW4gLT5cbiAgICAgICAgICAgW1xuICAgICAgICAgICAgIEh0bWwudHJcbiAgICAgICAgICAgICAgIChIdG1sLnRoIFsgSHRtbC50eHQgXCJhZmZlY3RzXCIgXVxuICAgICAgICAgICAgICAgOjogQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAoZnVuIHIgYWNjIC0+IEh0bWwudGggWyBIdG1sLnR4dCByIF0gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICBkaW4uRGF0YS5kaW5fcnVsZXMgW10pO1xuICAgICAgICAgICBdKVxuICAgICAgIGRpbl9kYXRhKVxuXG5sZXQgZGluX3RhYmxlIDogSHRtbF90eXBlcy50Ym9keSBIdG1sLmVsdCBSZWFjdGl2ZURhdGEuUkxpc3QudCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICB8IFNvbWUgZGluIC0+XG4gICAgICAgICAgIGxldCBvcGVuIERhdGEgaW5cbiAgICAgICAgICAgbGV0IGFsbCA9IGRpbi5kaW5fZGF0YS5kaW5fa2luZCA9IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgaW5cbiAgICAgICAgICAgbGV0IGJvZHkgPVxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfcmlnaHRpXG4gICAgICAgICAgICAgICAoZnVuIGkgZGF0YSBhY2MgLT5cbiAgICAgICAgICAgICAgICAgaWYgYWxsIHx8IGRpbi5kaW5fZGF0YS5kaW5faGl0cy4oaSkgPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgICAgICAgICAoSHRtbC50aFxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkaW4uZGluX3J1bGVzLihpKSBeIFwiIChcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBkaW4uZGluX2RhdGEuZGluX2hpdHMuKGkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXiBcIiBoaXRzKVwiKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgIDo6IEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biB2IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwudGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgdiA+IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJzdWNjZXNzXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgdiA8IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJpbmZvXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoc3RyaW5nX29mX2Zsb2F0IHYpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgW10pXG4gICAgICAgICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICAgICBkaW4uZGluX2RhdGEuZGluX2ZsdXhzIFtdXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIFsgSHRtbC50Ym9keSBib2R5IF0pXG4gICAgICAgZGluX2RhdGEpXG5cbmxldCBkaW4gOiBbPiBIdG1sX3R5cGVzLnRhYmxleCBdIEh0bWwuZWx0ID1cbiAgbGV0IHRoZWFkID0gUmVhY3QuUy5jb25zdCAoVHl4bWxfanMuUi5IdG1sNS50aGVhZCBkaW5faGVhZGVyKSBpblxuICBUeXhtbF9qcy5SLkh0bWw1LnRhYmxleFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ0YWJsZVwiOyBcInRhYmxlLWNvbmRlbnNlZFwiOyBcInRhYmxlLWJvcmRlcmVkXCIgXSBdXG4gICAgfnRoZWFkIGRpbl90YWJsZVxuXG5sZXQgZXhwb3J0X2N1cnJlbnRfZGluICh0b19zdHJpbmcgOiBEYXRhLmRpbiAtPiBzdHJpbmcpIChtaW1lIDogc3RyaW5nKVxuICAgIChmaWxlbmFtZSA6IHN0cmluZykgOiB1bml0ID1cbiAgbGV0IGRpbl9pZCA9IEpzLnRvX3N0cmluZyAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLnZhbHVlIGluXG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9kaW4gZGluX2lkXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gZGluIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nICh0b19zdHJpbmcgZGluKSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWUgfmZpbGVuYW1lIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBleHBvcnRfY29uZmlndXJhdGlvbiA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gXCJkaW4tZXhwb3J0XCI7XG4gICAgV2lkZ2V0X2V4cG9ydC5zaG93ID0gUmVhY3QuUy5jb25zdCB0cnVlO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgZXhwb3J0X2N1cnJlbnRfZGluIChEYXRhLnN0cmluZ19vZl9kaW4gP2xlbjpOb25lKSBcImFwcGxpY2F0aW9uL2pzb25cIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJkb3RcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJkb3RcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICBleHBvcnRfY3VycmVudF9kaW5cbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiIChEYXRhLnByaW50X2RvdF9kaW4gP3V1aWQ6Tm9uZSkpXG4gICAgICAgICAgICAgIFwidGV4dC92bmQuZ3JhcGh2aXpcIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJodG1sXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiaHRtbFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIGV4cG9ydF9jdXJyZW50X2RpblxuICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgRGF0YS5wcmludF9odG1sX2RpbilcbiAgICAgICAgICAgICAgXCJ0ZXh0L2h0bWxcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gIH1cblxubGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIEh0bWwuZWx0IGxpc3QgPVxuICBbXG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4X2NvbnRlbnRcIjsgXCJ0YWJsZS1yZXNwb25zaXZlXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZm9ybSBbIGRpbl9zZWxlY3QgXTtcbiAgICAgICAgZGluO1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgZXhwb3J0X2NvbmZpZ3VyYXRpb247XG4gICAgICBdO1xuICBdXG5cbmxldCBuYXZsaSAoKSA6IFs+IGBQQ0RBVEEgfCBgU3BhbiBdIEh0bWwuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50ID1cbiAgVWlfY29tbW9uLmJhZGdlIChmdW4gc3RhdGUgLT5cbiAgICAgIG1hdGNoIHN0YXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAwXG4gICAgICB8IFNvbWUgc3RhdGUgLT5cbiAgICAgICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9kaW5zKVxuXG5sZXQgb25sb2FkICgpIDogJ2EgPVxuICAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLm9uY2hhbmdlXG4gIDo9IERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgc2V0X2Rpbl9pZFxuICAgICAgICAgICAoKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy52YWx1ZSB8PiBKcy50b19zdHJpbmcpO1xuICAgICAgICAgSnMuX2ZhbHNlKTtcbiAgV2lkZ2V0X2V4cG9ydC5vbmxvYWQgZXhwb3J0X2NvbmZpZ3VyYXRpb247XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZESU5cIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPiBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICBDb21tb24uanF1ZXJ5X29uIFwiI25hdkRJTlwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxuXG5sZXQgbGluZV9jb3VudCBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IG9wZW4gQXBpX3R5cGVzX3QgaW5cbiAgICBzdGF0ZS5zaW11bGF0aW9uX2luZm9fb3V0cHV0LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xuXG5sZXQgbmF2bGkgKCkgPVxuICBVaV9jb21tb24ubGFiZWxfbmV3cyB0YWJfaXNfYWN0aXZlIChmdW4gc3RhdGUgLT4gbGluZV9jb3VudCBzdGF0ZSlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgc3RhdGVfbG9nID1cbiAgICAoKiBXZSBnZXQgdGhlIHNpZ25hbCBvZiBsb2cgbWVzc2FnZXMgZm9yIGN1cnJlbnQgc2ltdWxhdGlvbiBtb2RlbC4gVGhlIGJpbmQgYWxsb3dzIHRvIGNoYW5nZSB0aGUgc2lnbmFsIHRvIHRoZSBuZXcgc2ltdWxhdGlvbiBtb2RlbCB3aGVuIGl0IGNoYW5nZXMgKilcbiAgICBSZWFjdC5TLmJpbmRcbiAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCkgKGZ1biBfIC0+XG4gICAgICAgIFJlYWN0LlMuaG9sZCBcIlwiXG4gICAgICAgICAgKEx3dF9yZWFjdC5FLmZyb20gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+IG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfbG9nX21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBcIlwiKSlcbiAgICAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgXCJcIikpXG4gICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICA+fD0gZnVuICh4IDogc3RyaW5nIEFwaS5yZXN1bHQpIC0+XG4gICAgICAgICAgICAgICBtYXRjaCB4LlJlc3VsdF91dGlsLnZhbHVlIHdpdGhcbiAgICAgICAgICAgICAgIHwgT2sgeCAtPiB4XG4gICAgICAgICAgICAgICB8IEVycm9yIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgU3RyaW5nLmNvbmNhdCBcIlxcblwiXG4gICAgICAgICAgICAgICAgICAgKExpc3QubWFwIChmdW4gUmVzdWx0X3V0aWwueyB0ZXh0OyBfIH0gLT4gdGV4dCkgbGlzdCkpKSlcbiAgaW5cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtcHJlXCI7IFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICBbIFR5eG1sX2pzLlIuSHRtbC50eHQgc3RhdGVfbG9nIF07XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZsb2dcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2bG9nXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBzZWxlY3RfaWQgPSBcIm91dHB1dC1zZWxlY3QtaWRcIlxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBjdXJyZW50X2ZpbGUsIHNldF9jdXJyZW50X2ZpbGUgPSBSZWFjdC5TLmNyZWF0ZSBOb25lXG5cbmxldCB1cGRhdGVfb3V0cHV0cyAoa2V5IDogc3RyaW5nKSA6IHVuaXQgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIGtleVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGxpbmVzIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IHNldF9jdXJyZW50X2ZpbGUgKFNvbWUgKGtleSwgbGluZXMpKSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgZmlsZV9jb3VudCBzdGF0ZSA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgc3RhdGUuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcblxubGV0IG5hdmxpICgpID0gVWlfY29tbW9uLmJhZGdlIChmdW4gc3RhdGUgLT4gZmlsZV9jb3VudCBzdGF0ZSlcblxubGV0IHhtbCAoKSA9XG4gIGxldCBzZWxlY3QgKGZpbGVfbGluZV9pZHMgOiBzdHJpbmcgbGlzdCkgOiBbPiBIdG1sX3R5cGVzLnNlbGVjdCBdIEh0bWwuZWx0ID1cbiAgICBsZXQgbGluZXMgOiAoc3RyaW5nICogc3RyaW5nIGxpc3QpIG9wdGlvbiA9IFJlYWN0LlMudmFsdWUgY3VycmVudF9maWxlIGluXG4gICAgbGV0IGN1cnJlbnRfZmlsZV9pZCA6IHN0cmluZyA9XG4gICAgICBtYXRjaCBmaWxlX2xpbmVfaWRzLCBsaW5lcyB3aXRoXG4gICAgICB8IFtdLCBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBmaWxlIDo6IF8sIE5vbmUgfCBfIDo6IF8sIFNvbWUgKGZpbGUsIF8pIC0+IGZpbGVcbiAgICBpblxuICAgIGxldCBmaWxlX29wdGlvbnMgOiBbPiBIdG1sX3R5cGVzLnNlbGVjdG9wdGlvbiBdIEh0bWwuZWx0IGxpc3QgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKGZ1biBrZXkgLT5cbiAgICAgICAgICBIdG1sLm9wdGlvblxuICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgIChbIEh0bWwuYV92YWx1ZSBrZXkgXVxuICAgICAgICAgICAgICBAXG4gICAgICAgICAgICAgIGlmIGtleSA9IGN1cnJlbnRfZmlsZV9pZCB0aGVuXG4gICAgICAgICAgICAgICAgWyBIdG1sLmFfc2VsZWN0ZWQgKCkgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgW10pXG4gICAgICAgICAgICAoSHRtbC50eHQgKFVpX2NvbW1vbi5vcHRpb25fbGFiZWwga2V5KSkpXG4gICAgICAgIGZpbGVfbGluZV9pZHNcbiAgICBpblxuICAgIGxldCAoKSA9IHVwZGF0ZV9vdXRwdXRzIGN1cnJlbnRfZmlsZV9pZCBpblxuICAgIFR5eG1sX2pzLkh0bWwuc2VsZWN0XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIHNlbGVjdF9pZCBdXG4gICAgICBmaWxlX29wdGlvbnNcbiAgaW5cbiAgbGV0IGZpbGVfc2VsZWN0ID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibGlzdC1ncm91cC1pdGVtXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fZXZlbnQgW11cbiAgICAgICAgIChMd3RfcmVhY3QuRS5tYXBfc1xuICAgICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZV9saW5lX2lkcyA6IEFwaV90eXBlc19qLmZpbGVfbGluZV9jYXRhbG9nKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgc2VsZWN0X2ZpbGUgOiBbPiBgSDQgfCBgU2VsZWN0IF0gSHRtbC5lbHQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVE9ETzogbmFtZSAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGZpbGVfbGluZV9pZHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gW11cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGtleSA6OiBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX291dHB1dHMga2V5IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuaDRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IChVaV9jb21tb24ub3B0aW9uX2xhYmVsIGtleSkgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IFsgc2VsZWN0IGZpbGVfbGluZV9pZHMgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzZWxlY3RfZmlsZSkpKVxuICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIH5vazooZnVuIHggLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCB4KVxuICAgICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpKVxuICBpblxuICBsZXQgZmlsZV9jb250ZW50ID1cbiAgICBbXG4gICAgICBUeXhtbF9qcy5SLkh0bWwuZGl2XG4gICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1zY3JvbGxcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgfCBTb21lIChfLCBsaW5lcykgLT5cbiAgICAgICAgICAgICAgICAgIExpc3QubWFwIChmdW4gbGluZSAtPiBIdG1sLnAgWyBIdG1sLnR4dCBsaW5lIF0pIGxpbmVzKVxuICAgICAgICAgICAgICBjdXJyZW50X2ZpbGUpKTtcbiAgICBdXG4gIGluXG4gIFtcbiAgICBbJWh0bWxcbiAgICAgIHt8PGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlld1wiPlxuICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2VudGVyLWJsb2NrIGRpc3BsYXktaGVhZGVyXCI+XG4gICAgICAgICAgIHx9XG4gICAgICAgIFsgZmlsZV9zZWxlY3QgXVxuICAgICAgICB7fFxuICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgIHx9XG4gICAgICAgIGZpbGVfY29udGVudFxuICAgICAgICB7fFxuICAgICAgICAgICAgIDwvZGl2PiB8fV07XG4gIF1cblxubGV0IHNlbGVjdF9vdXRwdXRzICgpIDogdW5pdCA9XG4gIGxldCBzZWxlY3RfZG9tID0gVWlfY29tbW9uLmlkX2RvbSBzZWxlY3RfaWQgaW5cbiAgbGV0IGZpbGVpbmRleCA9IEpzLnRvX3N0cmluZyBzZWxlY3RfZG9tIyMudmFsdWUgaW5cbiAgdXBkYXRlX291dHB1dHMgZmlsZWluZGV4XG5cbmxldCBjb250ZW50ICgpID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biB0IC0+IGZpbGVfY291bnQgdCA+IDApICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZvdXRwdXRzXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdm91dHB1dHNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gKEZvcm1hdC5zcHJpbnRmIFwiIyVzXCIgc2VsZWN0X2lkKSBcImNoYW5nZVwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfb3V0cHV0cyAoKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgKClcbigqIFRPRE9cbiAgICAgbGV0IHNlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgKChKcy5PcHQuZ2V0XG4gICAgICAgICAgICAgKFVpX2NvbW1vbi5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWRcbiAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIHNlbGVjdF9pZCkpXG4gICAgICAgICAgICAgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgICAgICAgIDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSBpblxuICAgICBsZXQgKCkgPSBzZWxlY3RfZG9tIyMub25jaGFuZ2UgOj0gRG9tX2h0bWwuaGFuZGxlclxuICAgKGZ1biBfIC0+XG4gICAgICBsZXQgKCkgPSBzZWxlY3Rfb3V0cHV0cyB0XG4gICAgIGluIEpzLl90cnVlKVxuICAgICBpblxuKilcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKm1vZHVsZSBBcGlUeXBlcyA9IEFwaV90eXBlc19qKilcblxuY2xhc3MgdHlwZSBvYnNlcnZhYmxlX3Bsb3QgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcmVkcmF3IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGNyZWF0ZV9vYnNlcnZhYmxlX3Bsb3QgbWFpbl9kaXZfaWQgOiBvYnNlcnZhYmxlX3Bsb3QgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYnNlcnZhYmxlUGxvdFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBtYWluX2Rpdl9pZCkgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBkaXZfZGlzcGxheV9pZCA9IFwicGxvdC1tYWluX2RpdlwiXG5sZXQgZXhwb3J0X2lkID0gXCJwbG90LWV4cG9ydFwiXG5cbnR5cGUgb2Zmc2V0ID0geyBvZmZzZXRfY3VycmVudDogaW50OyBvZmZzZXRfbWF4OiBpbnQgfVxuXG5sZXQgb2Zmc2V0LCBzZXRfb2Zmc2V0ID0gUmVhY3QuUy5jcmVhdGUgKE5vbmUgOiBvZmZzZXQgb3B0aW9uKVxubGV0IGRlZmF1bHRfcG9pbnQgPSAxMDAwXG5sZXQgcG9pbnQsIHNldF9wb2ludHMgPSBSZWFjdC5TLmNyZWF0ZSBkZWZhdWx0X3BvaW50XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHBsb3RfcmVmID0gcmVmIE5vbmVcblxubGV0IGhhc19wbG90IChzdGF0ZSA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbyBvcHRpb24pIDogYm9vbCA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXQuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxuICAgID4gMFxuXG5sZXQgZXhwb3J0X2pzb24gZmlsZW5hbWUgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdFxuICAgICAgICB7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9vZmZzZXQgPSBOb25lO1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfcG9pbnRzID0gTm9uZTtcbiAgICAgICAgfVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChwbG90IDogQXBpX3R5cGVzX3QucGxvdCkgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKERhdGEuc3RyaW5nX29mX3Bsb3QgcGxvdCkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBleHBvcnQgbWltZSBmaWxlbmFtZSA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9wbG90XG4gICAgICAgIHtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9IE5vbmU7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBOb25lO1xuICAgICAgICB9XG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICAgICAgSnMuc3RyaW5nIChEYXRhLmV4cG9ydF9wbG90IH5pc190c3Y6KG1pbWUgPSBcInRleHQvdHN2XCIpIHBsb3QpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZSB+ZmlsZW5hbWUgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IHBsb3RfcG9pbnRzX2lucHV0X2lkID0gXCJwbG90X3BvaW50c19pbnB1dFwiXG5cbmxldCBwbG90X3BvaW50c19pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIHBsb3RfcG9pbnRzX2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDU7XG4gICAgICBdXG4gICAgKClcblxubGV0IHBsb3Rfb2Zmc2V0X2lucHV0X2lkID0gXCJwbG90X29mZnNldF9pbnB1dFwiXG5cbmxldCBwbG90X29mZnNldF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIG9mZnNldCAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiBSZWFjdC5TLmNvbnN0IFsgXCJoaWRlXCIgXVxuICAgICAgICAgICAgfCBTb21lIF8gLT4gUmVhY3QuUy5jb25zdCBbXSkpO1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9pbnB1dF9tYXhcbiAgICAgICAgICAoUmVhY3QuUy5iaW5kIG9mZnNldCAoZnVuY3Rpb25cbiAgICAgICAgICAgIHwgTm9uZSAtPiBSZWFjdC5TLmNvbnN0IChgTnVtYmVyIDApXG4gICAgICAgICAgICB8IFNvbWUgbWF4X29mZnNldCAtPiBSZWFjdC5TLmNvbnN0IChgTnVtYmVyIG1heF9vZmZzZXQub2Zmc2V0X21heCkpKTtcbiAgICAgICAgSHRtbC5hX2lkIHBsb3Rfb2Zmc2V0X2lucHV0X2lkO1xuICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgUmFuZ2U7XG4gICAgICAgIEh0bWwuYV9pbnB1dF9taW4gKGBOdW1iZXIgMCk7XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcIm9mZnNldFwiO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBzaW11bGF0aW9uX2luZm9fb2Zmc2V0X21heCAoc2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSA6XG4gICAgaW50ID1cbiAgbGV0IHBsb3Rfc2l6ZSA9XG4gICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9wbG90XG4gIGluXG4gIG1heCAwIChwbG90X3NpemUgLSBSZWFjdC5TLnZhbHVlIHBvaW50KVxuXG5sZXQgdXBkYXRlX29mZnNldCAodXBkYXRlX29mZnNldF9pbnB1dCA6IGJvb2wpIDogdW5pdCA9XG4gIGxldCBzaW11bGF0aW9uX21vZGVsID0gUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIGluXG4gIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLnRfc2ltdWxhdGlvbl9pbmZvIHNpbXVsYXRpb25fbW9kZWwgaW5cbiAgbWF0Y2ggc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBzaW11bGF0aW9uX2luZm8gLT5cbiAgICBpZlxuICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgdGhlblxuICAgICAgKCogSWYgaXQgaXMgcnVubmluZyBubyBzbGlkZXIgYmVjYXVzZSB1cGRhdGUgY2F1c2VzIGppdHRlcnMuICopXG4gICAgICBzZXRfb2Zmc2V0IE5vbmVcbiAgICBlbHNlIChcbiAgICAgIGxldCBvZmZzZXRfbWF4ID0gc2ltdWxhdGlvbl9pbmZvX29mZnNldF9tYXggc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICBsZXQgb2xkX29mZnNldCA9IFJlYWN0LlMudmFsdWUgb2Zmc2V0IGluXG4gICAgICBsZXQgb2Zmc2V0X2N1cnJlbnQgPVxuICAgICAgICBtYXRjaCBvbGRfb2Zmc2V0IHdpdGhcbiAgICAgICAgfCBTb21lIG9mZnNldCAtPiBvZmZzZXQub2Zmc2V0X2N1cnJlbnRcbiAgICAgICAgfCBOb25lIC0+IG9mZnNldF9tYXhcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiB1cGRhdGVfb2Zmc2V0X2lucHV0IHRoZW4gKFxuICAgICAgICAgIGxldCBwbG90X29mZnNldF9pbnB1dF9kb20gPVxuICAgICAgICAgICAgVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHBsb3Rfb2Zmc2V0X2lucHV0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyAoc3RyaW5nX29mX2ludCBvZmZzZXRfY3VycmVudCkpIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBsb3Rfb2Zmc2V0X2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgICA6PSBKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgb2Zmc2V0X2N1cnJlbnQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICAoKVxuICAgICAgaW5cbiAgICAgIGxldCBuZXdfb2Zmc2V0ID1cbiAgICAgICAgaWYgb2Zmc2V0X21heCA+IDAgdGhlblxuICAgICAgICAgIFNvbWUgeyBvZmZzZXRfY3VycmVudDsgb2Zmc2V0X21heCB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgc2V0X29mZnNldCBuZXdfb2Zmc2V0XG4gICAgKVxuXG5sZXQgcGxvdF9wYXJhbWV0ZXIgKCkgOiBBcGlfdHlwZXNfai5wbG90X3BhcmFtZXRlciA9XG4gIGxldCBwb2ludCA9IFJlYWN0LlMudmFsdWUgcG9pbnQgaW5cbiAge1xuICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID1cbiAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIHggLT4geC5vZmZzZXRfY3VycmVudCkgKFJlYWN0LlMudmFsdWUgb2Zmc2V0KTtcbiAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IFNvbWUgcG9pbnQ7XG4gIH1cblxubGV0IHVwZGF0ZV9wbG90IChqc19wbG90IDogSnNfcGxvdC5vYnNlcnZhYmxlX3Bsb3QgSnMudCkgOiB1bml0ID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgKCkgPSB1cGRhdGVfb2Zmc2V0IHRydWUgaW5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCAocGxvdF9wYXJhbWV0ZXIgKCkpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAoRGF0YS5zdHJpbmdfb2ZfcGxvdCBwbG90KSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBqc19wbG90IyNzZXREYXRhIGRhdGEgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IG9ubG9hZF9wbG90X3BvaW50c19pbnB1dCAoanNfcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQpIDogdW5pdCA9XG4gIGxldCBwbG90X3BvaW50c19pbnB1dF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHBsb3RfcG9pbnRzX2lucHV0XG4gIGluXG4gIGxldCBqc19wb2ludCA6IEpzLmpzX3N0cmluZyBKcy50ID1cbiAgICBKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgKFJlYWN0LlMudmFsdWUgcG9pbnQpKVxuICBpblxuICBsZXQgKCkgPSBwbG90X3BvaW50c19pbnB1dF9kb20jIy52YWx1ZSA6PSBqc19wb2ludCBpblxuICBsZXQgKCkgPVxuICAgIHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLm9ua2V5cHJlc3NcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gZXYgLT5cbiAgICAgICAgICAgaWYgZXYjIy5rZXlDb2RlID0gMTMgdGhlblxuICAgICAgICAgICAgIEpzLl9mYWxzZVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgcGxvdF9wb2ludHNfc3RyaW5nIDogc3RyaW5nID1cbiAgICAgICAgICAgICBKcy50b19zdHJpbmcgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHBsb3RfcG9pbnRzX29wdGlvbiA6IGludCBvcHRpb24gPVxuICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgbGV0IHBsb3RfcG9pbnQgPSBpbnRfb2Zfc3RyaW5nIHBsb3RfcG9pbnRzX3N0cmluZyBpblxuICAgICAgICAgICAgICAgaWYgcGxvdF9wb2ludCA+IDAgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIHBsb3RfcG9pbnRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBtYXRjaCBwbG90X3BvaW50c19vcHRpb24gd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBwbG90X3BvaW50cyAtPiBzZXRfcG9pbnRzIHBsb3RfcG9pbnRzXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgcGxvdF9wb2ludCA6IGludCA9IFJlYWN0LlMudmFsdWUgcG9pbnQgaW5cbiAgICAgICAgICAgICAgIGxldCBwbG90X3BvaW50X3N0cmluZyA9IHN0cmluZ19vZl9pbnQgcGxvdF9wb2ludCBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIHBsb3RfcG9pbnRfc3RyaW5nXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0X3BvaW50cyBkZWZhdWx0X3BvaW50IGluXG4gICAgICAgICAgICAgICAoKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfcGxvdCBqc19wbG90IGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICAoKVxuXG5sZXQgY29uZmlndXJhdGlvbiAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkID0gZXhwb3J0X2lkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGl2X2Rpc3BsYXlfaWQgKCk7XG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXZfZGlzcGxheV9pZCAoKTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0X2pzb247XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiY3N2XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPSBleHBvcnQgXCJ0ZXh0L2NzdlwiO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcInRzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0IFwidGV4dC90c3ZcIjtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgc2hvdyA9XG4gICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgbGV0IG91dCA9IGhhc19wbG90IChTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZiBvdXQgdGhlbiBPcHRpb24uaXRlciB1cGRhdGVfcGxvdCAhcGxvdF9yZWYgaW5cbiAgICAgICAgICBvdXQpXG4gICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKTtcbiAgfVxuXG5sZXQgeG1sICgpID1cbiAgbGV0IGV4cG9ydF9jb250cm9scyA9IFdpZGdldF9leHBvcnQuaW5saW5lX2NvbnRlbnQgKGNvbmZpZ3VyYXRpb24gKCkpIGluXG4gIFslaHRtbFxuICAgIHt8XG4gIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LXZpZXcgZmxleC1jb250ZW50XCIgaWQ9XCJ8fSBkaXZfZGlzcGxheV9pZFxuICAgICAge3xcIj48L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwibmF2Y29udGVudC1jb250cm9sc1wiPlxuICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIiBpZD18fVxuICAgICAgZXhwb3J0X2lkXG4gICAgICB7fD5cbiAgICAgIHx9XG4gICAgICBleHBvcnRfY29udHJvbHNcbiAgICAgIHt8XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPXx9XG4gICAgICBwbG90X3BvaW50c19pbnB1dF9pZFxuICAgICAge3w+Um93IHRvIHBsb3Q8L2xhYmVsPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImlucHV0LWdyb3VwLWFkZG9uXCI+UG9pbnRzPC9zcGFuPlxuICAgICAgICAgIHx9XG4gICAgICBbIHBsb3RfcG9pbnRzX2lucHV0IF1cbiAgICAgIHt8XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICA8bGFiZWwgY2xhc3M9XCJzci1vbmx5XCIgZm9yPXx9XG4gICAgICBwbG90X29mZnNldF9pbnB1dF9pZFxuICAgICAge3w+U2VsZWN0ZWQgd2luZG93PC9sYWJlbD5cbiAgICAgICAgfH1cbiAgICAgIFsgcGxvdF9vZmZzZXRfaW5wdXQgXVxuICAgICAge3xcbiAgICAgIDwvZGl2PlxuICAgIDwvZm9ybT5cbiAgICA8L2Rpdj4gfH1dXG5cbmxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBIdG1sLmVsdCBsaXN0ID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biBzIC0+IGhhc19wbG90IHMpICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCBwbG90X29mZnNldF9pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgcGxvdF9vZmZzZXRfaW5wdXQgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgKGNvbmZpZ3VyYXRpb24gKCkpIGluXG4gIGxldCBwbG90IDogSnNfcGxvdC5vYnNlcnZhYmxlX3Bsb3QgSnMudCA9XG4gICAgSnNfcGxvdC5jcmVhdGVfb2JzZXJ2YWJsZV9wbG90IGRpdl9kaXNwbGF5X2lkXG4gIGluXG4gICgqIFRoZSBlbGVtZW50cyBzaXplIHRoZW1zZWx2ZXMgdXNpbmcgdGhlIGRpdidzIGlmIHRoZXkgYXJlIGhpZGRlblxuICAgICBpdCB3aWxsIGRlZmF1bHQgdG8gc2l6ZSB6ZXJvLiAgc28gdGhleSBuZWVkIHRvIGJlIHNpemVkIHdoZW4gc2hvd24uXG4gICopXG4gIGxldCAoKSA9IG9ubG9hZF9wbG90X3BvaW50c19pbnB1dCBwbG90IGluXG4gIGxldCAoKSA9IHBsb3RfcmVmIDo9IFNvbWUgcGxvdCBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cGxvdFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwbG90XCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbl9tb2RlbCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID1cbiAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uX21vZGVsXG4gICAgICAgIGluXG4gICAgICAgIGlmIGhhc19wbG90IHNpbXVsYXRpb25faW5mbyB0aGVuXG4gICAgICAgICAgdXBkYXRlX3Bsb3QgcGxvdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVWlfY29tbW9uLmlucHV0X2NoYW5nZSBwbG90X29mZnNldF9pbnB1dF9kb20gKGZ1biB2YWx1ZSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgc2V0X29mZnNldFxuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBvZmZzZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgb2Zmc2V0IC0+XG4gICAgICAgICAgICAgICAgU29tZSB7IG9mZnNldCB3aXRoIG9mZnNldF9jdXJyZW50ID0gaW50X29mX3N0cmluZyB2YWx1ZSB9KVxuICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHVwZGF0ZV9wbG90IHBsb3QgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gICgpXG5cbmxldCBwbG90X2NvdW50ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IG9wZW4gQXBpX3R5cGVzX3QgaW5cbiAgICBzdGF0ZS5zaW11bGF0aW9uX2luZm9fb3V0cHV0LnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcblxubGV0IG5hdmxpICgpID1cbiAgVWlfY29tbW9uLmxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSAoZnVuIHN0YXRlIC0+IHBsb3RfY291bnQgc3RhdGUpXG5cbmxldCBvbnJlc2l6ZSAoKSA9XG4gICgqIHJlY2FsY3VhdGUgc2l6ZSAqKVxuICBsZXQgKCkgPVxuICAgIG1hdGNoICFwbG90X3JlZiB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHBsb3QgLT5cbiAgICAgIGxldCBtb2RlbCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICAgICAgKG1hdGNoIFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIF8gLT4gdXBkYXRlX3Bsb3QgcGxvdClcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgc25hcHNob3QgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOlxuICAgIGNvbnRhY3RfbWFwOkpzLmpzX3N0cmluZyBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfc25hcHNob3QgKGlkIDogc3RyaW5nKSAoY29sb3JpbmcgOiB1bml0IEpzLnQpIDogc25hcHNob3QgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJTbmFwc2hvdFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgY29sb3JpbmcgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5cbmxldCBjdXJyZW50X3NuYXBzaG90LCBzZXRfY3VycmVudF9zbmFwc2hvdCA9XG4gIFJlYWN0LlMuY3JlYXRlIChOb25lIDogKHN0cmluZyAqIERhdGEuc25hcHNob3QpIG9wdGlvbilcblxudHlwZSBkaXNwbGF5X2Zvcm1hdCA9IEthcHBhIHwgR3JhcGhcblxubGV0IHN0cmluZ190b19kaXNwbGF5X2Zvcm1hdCA9IGZ1bmN0aW9uXG4gIHwgXCJLYXBwYVwiIC0+IFNvbWUgS2FwcGFcbiAgfCBcIkdyYXBoXCIgLT4gU29tZSBHcmFwaFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgZGlzcGxheV9mb3JtYXQsIHNldF9kaXNwbGF5X2Zvcm1hdCA9IFJlYWN0LlMuY3JlYXRlIEthcHBhXG5cbmxldCBzbmFwc2hvdF9jb3VudCAoc3RhdGUgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uKSA6IGludCA9XG4gIG1hdGNoIHN0YXRlIHdpdGhcbiAgfCBOb25lIC0+IDBcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgc3RhdGUuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX291dHB1dFxuICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xuXG5sZXQgbmF2bGkgKCkgPSBVaV9jb21tb24uYmFkZ2UgKGZ1biBzdGF0ZSAtPiBzbmFwc2hvdF9jb3VudCBzdGF0ZSlcbmxldCBzZWxlY3RfaWQgPSBcInNuYXBzaG90LXNlbGVjdC1pZFwiXG5sZXQgZGlzcGxheV9pZCA9IFwic25hcHNob3QtbWFwLWRpc3BsYXlcIlxuXG5sZXQgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBpZCBhZGRpdGlvbmFsX2hhbmRsZXJzIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uXG4gICAgPVxuICBsZXQganNvbl9oYW5kbGVyID1cbiAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9qc29uIH5zZXJpYWxpemVfanNvbjooZnVuICgpIC0+XG4gICAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIm51bGxcIlxuICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHMpXG4gIGluXG4gIGxldCBrYXBwYV9oYW5kbGVyID1cbiAgICB7XG4gICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwia2FcIjtcbiAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImthcHBhXCI7XG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgIChmdW4gKGZpbGVuYW1lIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIChfLCBzKSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3Rfa2FwcGEgcylcbiAgICAgICAgICBpblxuICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcImFwcGxpY2F0aW9uL2pzb25cIiB+ZmlsZW5hbWUpO1xuICAgIH1cbiAgaW5cbiAgbGV0IGRvdF9oYW5kbGVyID1cbiAgICB7XG4gICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiZG90XCI7XG4gICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJkb3RcIjtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgKGZ1biAoZmlsZW5hbWUgOiBzdHJpbmcpIC0+XG4gICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgSnMuc3RyaW5nXG4gICAgICAgICAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICB8IFNvbWUgKF8sIHMpIC0+IEFwaV9kYXRhLmFwaV9zbmFwc2hvdF9kb3QgcylcbiAgICAgICAgICBpblxuICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YSB+bWltZTpcInRleHQvdm5kLmdyYXBodml6XCIgfmZpbGVuYW1lKTtcbiAgICB9XG4gIGluXG4gIGxldCBkZWZhdWx0X2hhbmRsZXJzID0gWyBqc29uX2hhbmRsZXI7IGthcHBhX2hhbmRsZXI7IGRvdF9oYW5kbGVyIF0gaW5cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQ7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9IGRlZmF1bHRfaGFuZGxlcnMgQCBhZGRpdGlvbmFsX2hhbmRsZXJzO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9XG4gICAgICBSZWFjdC5TLm1hcFxuICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgc25hcHNob3RfY291bnQgc2ltdWxhdGlvbl9pbmZvID4gMClcbiAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpO1xuICB9XG5cbigqIE9ubHkgYWxsb3cgdGhlIGV4cG9ydCBvZiBub24tZ3JhcGhpY2FsIGRhdGEuICopXG5sZXQgY29uZmlndXJhdGlvbl9rYXBwYSAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIGNvbmZpZ3VyYXRpb25fdGVtcGxhdGUgXCJzbmFwc2hvdF9rYXBwYVwiIFtdXG5cbigqIFRoZSBtYXBzIGFyZSByZW5kZXJlZCBzbyBhbGxvdyB0aGUgZXhwb3J0IG9mXG4gICBncmFwaGljYWwgZGF0YS4gKilcbmxldCBjb25maWd1cmF0aW9uX2dyYXBoICgpIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAgY29uZmlndXJhdGlvbl90ZW1wbGF0ZSBcInNuYXBzaG90X2dyYXBoXCJcbiAgICBbXG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9zdmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3BuZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgIF1cblxubGV0IGZvcm1hdF9zZWxlY3RfaWQgPSBcImZvcm1hdF9zZWxlY3RfaWRcIlxuXG5sZXQgcmVuZGVyX3NuYXBzaG90X2dyYXBoIChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpXG4gICAgKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkgOiB1bml0ID1cbiAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHNuYXBzaG90KSkgaW5cbiAgbWF0Y2ggUmVhY3QuUy52YWx1ZSBkaXNwbGF5X2Zvcm1hdCB3aXRoXG4gIHwgR3JhcGggLT5cbiAgICBsZXQganNvbiA6IHN0cmluZyA9IERhdGEuc3RyaW5nX29mX3NuYXBzaG90IHNuYXBzaG90IGluXG4gICAgbGV0IGNvbnRhY3RfbWFwID0gUmVhY3QuUy52YWx1ZSBUYWJfY29udGFjdF9tYXAuY29udGFjdF9tYXBfdGV4dCBpblxuICAgIHNuYXBzaG90X2pzIyNzZXREYXRhIH5jb250YWN0X21hcDooSnMuc3RyaW5nIGNvbnRhY3RfbWFwKSAoSnMuc3RyaW5nIGpzb24pXG4gIHwgS2FwcGEgLT4gKClcblxubGV0IHNlbGVjdF9zbmFwc2hvdCAoc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50KSA6IHVuaXQgPVxuICBsZXQgaW5kZXggOiBpbnQgSnMub3B0ID1cbiAgICBKcy5PcHQuYmluZFxuICAgICAgKFVpX2NvbW1vbi5kb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBzZWxlY3RfaWQpKVxuICAgICAgKGZ1biBkb20gLT5cbiAgICAgICAgbGV0IHNuYXBzaG90X3NlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZSBkb21cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZpbGVpbmRleCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBzbmFwc2hvdF9zZWxlY3RfZG9tIyMudmFsdWUgaW5cbiAgICAgICAgdHJ5IEpzLnNvbWUgKGludF9vZl9zdHJpbmcgZmlsZWluZGV4KSB3aXRoIF8gLT4gSnMubnVsbClcbiAgaW5cbiAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIGluZGV4IGluXG4gIGxldCBtb2RlbCA6IFN0YXRlX3NpbXVsYXRpb24udCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICBsZXQgc2ltdWxhdGlvbl9vdXRwdXQgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbFxuICBpblxuICBtYXRjaCBzaW11bGF0aW9uX291dHB1dCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBsZXQgaW5kZXggOiBpbnQgPSBKcy5PcHQuZ2V0IGluZGV4IChmdW4gXyAtPiAwKSBpblxuICAgIGlmIHNuYXBzaG90X2NvdW50IChTb21lIHN0YXRlKSA+IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc25hcHNob3RfaWRzIC0+XG4gICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzbmFwc2hvdF9pZCA6IHN0cmluZyA9IExpc3QubnRoIHNuYXBzaG90X2lkcyBpbmRleCBpblxuICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3Qgc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0X2N1cnJlbnRfc25hcHNob3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU29tZSAoc25hcHNob3RfaWQsIHNuYXBzaG90KSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfc25hcHNob3RfZ3JhcGggc25hcHNob3RfanMgc25hcHNob3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBGYWlsdXJlIGYgLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGYpXG4gICAgICAgICAgICAgICAgICAgIHwgSW52YWxpZF9hcmd1bWVudCBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGYpKSlcbiAgICAgIGluXG4gICAgICAoKVxuICAgIClcblxubGV0IHNlbGVjdCAoc25hcHNob3RzIDogQXBpX3R5cGVzX2ouc25hcHNob3RfaWQgbGlzdCkgOlxuICAgIFs+IEh0bWxfdHlwZXMuc2VsZWN0b3B0aW9uIF0gSHRtbC5lbHQgbGlzdCA9XG4gIExpc3QubWFwaVxuICAgIChmdW4gaSBzbmFwc2hvdF9pZCAtPlxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKFsgSHRtbC5hX3ZhbHVlIChzdHJpbmdfb2ZfaW50IGkpIF1cbiAgICAgICAgICBAXG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAoZmlsZW5hbWUsIF8pIC0+IGZpbGVuYW1lID0gc25hcHNob3RfaWRcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBbIEh0bWwuYV9zZWxlY3RlZCAoKSBdXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgW10pXG4gICAgICAgIChIdG1sLnR4dCBzbmFwc2hvdF9pZCkpXG4gICAgc25hcHNob3RzXG5cbmxldCBzbmFwc2hvdF9jbGFzcyA6XG4gICAgZW1wdHk6KHVuaXQgLT4gJ2EpIC0+XG4gICAgc2luZ2xlOih1bml0IC0+ICdhKSAtPlxuICAgIG11bHRpcGxlOih1bml0IC0+ICdhKSAtPlxuICAgICdhIFJlYWN0LnNpZ25hbCA9XG4gZnVuIH5lbXB0eSB+c2luZ2xlIH5tdWx0aXBsZSAtPlxuICBSZWFjdC5TLm1hcFxuICAgIChmdW4gbW9kZWwgLT5cbiAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgbWF0Y2ggc25hcHNob3RfY291bnQgc2ltdWxhdGlvbl9pbmZvIHdpdGhcbiAgICAgIHwgMCAtPiBlbXB0eSAoKVxuICAgICAgfCAxIC0+IHNpbmdsZSAoKVxuICAgICAgfCBfIC0+IG11bHRpcGxlICgpKVxuICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbmxldCBzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQgPVxuICBKc19zbmFwc2hvdC5jcmVhdGVfc25hcHNob3QgZGlzcGxheV9pZCBTdGF0ZV9zZXR0aW5ncy5hZ2VudF9jb2xvcmluZ1xuXG5sZXQgeG1sICgpID1cbiAgbGV0IGxpc3QgPVxuICAgIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX2V2ZW50IFtdXG4gICAgICAoTHd0X3JlYWN0LkUubWFwX3NcbiAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfc25hcHNob3Qgc25hcHNob3RfanMgaW5cbiAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc25hcHNob3RfaWRzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChzZWxlY3Qgc25hcHNob3RfaWRzKSkpKVxuICAgICAgICAgICAgICgpXG4gICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgIH5vazooZnVuIHggLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCB4KVxuICAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgW10pKVxuICAgICAgICAgKFJlYWN0LlMuY2hhbmdlc1xuICAgICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKSkpXG4gIGluXG4gIGxldCBzbmFwc2hvdF9sYWJlbCA9XG4gICAgSHRtbC5oNFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHNuYXBzaG90X2NsYXNzXG4gICAgICAgICAgICAgICB+ZW1wdHk6KGZ1biAoKSAtPiBbIFwiaGlkZGVuXCIgXSlcbiAgICAgICAgICAgICAgIH5zaW5nbGU6KGZ1biBfIC0+IFsgXCJvbmVsaW5lclwiOyBcInZpc2libGVcIiBdKVxuICAgICAgICAgICAgICAgfm11bHRpcGxlOihmdW4gXyAtPiBbIFwiaGlkZGVuXCIgXSkpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAoZnVuIHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICAgfCBTb21lIChzbmFwc2hvdF9maWxlLCBfKSAtPiBzbmFwc2hvdF9maWxlKVxuICAgICAgICAgICAgIGN1cnJlbnRfc25hcHNob3QpO1xuICAgICAgXVxuICBpblxuICBsZXQgc25hcHNob3Rfc2VsZWN0ID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuc2VsZWN0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoc25hcHNob3RfY2xhc3NcbiAgICAgICAgICAgICAgIH5lbXB0eTooZnVuICgpIC0+IFsgXCJoaWRkZW5cIiBdKVxuICAgICAgICAgICAgICAgfnNpbmdsZTooZnVuIF8gLT4gWyBcImhpZGRlblwiIF0pXG4gICAgICAgICAgICAgICB+bXVsdGlwbGU6KGZ1biBfIC0+IFsgXCJ2aXNpYmxlXCI7IFwiZm9ybS1jb250cm9sXCIgXSkpO1xuICAgICAgICAgIEh0bWwuYV9pZCBzZWxlY3RfaWQ7XG4gICAgICAgIF1cbiAgICAgIGxpc3RcbiAgaW5cbiAgbGV0IHNuYXBzaG90X2Nob29zZXIgPSBIdG1sLmRpdiBbIHNuYXBzaG90X2xhYmVsOyBzbmFwc2hvdF9zZWxlY3QgXSBpblxuICBsZXQgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYSB+Z3JhcGggPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IEthcHBhIC0+IGthcHBhXG4gICAgICAgICAgIHwgR3JhcGggLT4gZ3JhcGgpXG4gICAgICAgICBkaXNwbGF5X2Zvcm1hdClcbiAgaW5cbiAgbGV0IGV4cG9ydF9jb250cm9scyA9XG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6WyB0b2dnbGVfY29udHJvbHMgfmthcHBhOlsgXCJ2aXNpYmxlXCIgXSB+Z3JhcGg6WyBcImhpZGRlblwiIF0gXVxuICAgICAgICBbIFdpZGdldF9leHBvcnQuY29udGVudCAoY29uZmlndXJhdGlvbl9rYXBwYSAoKSkgXTtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlsgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYTpbIFwiaGlkZGVuXCIgXSB+Z3JhcGg6WyBcInZpc2libGVcIiBdIF1cbiAgICAgICAgWyBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgKGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkpIF07XG4gICAgXVxuICBpblxuICBsZXQga2FwcGFfc25hcHNob3RfZGlzcGxheSA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBkaXNwbGF5X2Zvcm1hdCAtPlxuICAgICAgICAgICAgICAgICBcInBhbmVsLXNjcm9sbFwiIDo6IFwia2FwcGEtY29kZVwiIDo6IFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgIChmdW4gc25hcHNob3QgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHNuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgICB8IFNvbWUgKF8sIHNuYXBzaG90KSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3Rfa2FwcGEgc25hcHNob3QpXG4gICAgICAgICAgICAgY3VycmVudF9zbmFwc2hvdCk7XG4gICAgICBdXG4gIGluXG4gIGxldCBrYXBwYV9ncmFwaF9kaXNwbGF5ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIGRpc3BsYXlfZm9ybWF0IC0+XG4gICAgICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCJcbiAgICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgICAgKG1hdGNoIGRpc3BsYXlfZm9ybWF0IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBHcmFwaCAtPiBbIFwidmlzaWJsZVwiIF1cbiAgICAgICAgICAgICAgICAgfCBLYXBwYSAtPiBbIFwiaGlkZGVuXCIgXSkpXG4gICAgICAgICAgICAgICBkaXNwbGF5X2Zvcm1hdCk7XG4gICAgICAgIF1cbiAgICAgIFslaHRtbFxuICAgICAgICB7fFxuICAgICAgICA8Zm9ybSAgY2xhc3M9XCJmb3JtLWlubGluZVwiIGlkPVwic25hcC1mb3JtXCI+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5TWFzc1wiIGNoZWNrZWQ+IE1hc3M8L2xhYmVsPlxuICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJzdW1CeUNvdW50XCIgPiBDb3VudDwvbGFiZWw+XG4gICAgICAgIDxsYWJlbD48aW5wdXQgdHlwZT1cInJhZGlvXCIgbmFtZT1cIm1vZGVcIiB2YWx1ZT1cInN1bUJ5U2l6ZVwiID4gU2l6ZTwvbGFiZWw+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyZWNlbnRlclNuYXBCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPlJlc2V0IFpvb208L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBpZD1cInJvb3RCdXR0b25cIiBjbGFzcz1cInN0YXRlQnV0dG9uXCIgdHlwZT1cImJ1dHRvblwiPkJhY2sgdG8gcm9vdDwvYnV0dG9uPlxuICAgICAgICA8L2Zvcm0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRlbnRcIiBpZD1cInx9XG4gICAgICAgICAgZGlzcGxheV9pZCB7fFwiPjwvZGl2Pnx9XVxuICBpblxuICBsZXQgZm9ybWF0X2Nob29zZXIgPVxuICAgIFslaHRtbFxuICAgICAge3wgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwifH0gZm9ybWF0X3NlbGVjdF9pZFxuICAgICAgICB7fFwiPjxvcHRpb24gdmFsdWU9XCJLYXBwYVwiIHNlbGVjdGVkPmthcHBhPC9vcHRpb24+PG9wdGlvbiB2YWx1ZT1cIkdyYXBoXCI+Z3JhcGg8L29wdGlvbj48L3NlbGVjdD4gfH1dXG4gIGluXG4gIFslaHRtbFxuICAgIHt8PGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtdmlldyBmbGV4LWNvbnRlbnRcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCIgc3R5bGU9XCJtYXJnaW4gOiA1cHg7XCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0yIGNvbC14cy00XCI+XG4gICAgICAgICB8fVxuICAgICAgWyBmb3JtYXRfY2hvb3NlciBdXG4gICAgICB7fFxuICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEwIGNvbC14cy04XCI+IHx9XG4gICAgICBbIHNuYXBzaG90X2Nob29zZXIgXVxuICAgICAge3wgPC9kaXY+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgfH1cbiAgICAgIFsga2FwcGFfc25hcHNob3RfZGlzcGxheTsga2FwcGFfZ3JhcGhfZGlzcGxheSBdXG4gICAgICB7fFxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LWNvbnRyb2xzXCI+XG4gICAgICAgICAgfH1cbiAgICAgIGV4cG9ydF9jb250cm9sc1xuICAgICAge3xcbiAgICAgICAgICA8L2Rpdj5cbiAgfH1dXG5cbmxldCBjb250ZW50ICgpID1cbiAgWyBVaV9jb21tb24udG9nZ2xlX2VsZW1lbnQgKGZ1biBzdGF0ZSAtPiBzbmFwc2hvdF9jb3VudCBzdGF0ZSA+IDApICh4bWwgKCkpIF1cblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgc25hcHNob3Rfc2VsZWN0X2RvbSA6IERvbV9odG1sLmlucHV0RWxlbWVudCBKcy50ID1cbiAgICBVaV9jb21tb24uaWRfZG9tIHNlbGVjdF9pZFxuICBpblxuICBsZXQgZm9ybWF0X3NlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSBmb3JtYXRfc2VsZWN0X2lkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgc25hcHNob3Rfc2VsZWN0X2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIFwib25jaGFuZ2VcIiBpblxuICAgICAgICAgICBsZXQgKCkgPSBzZWxlY3Rfc25hcHNob3Qgc25hcHNob3RfanMgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCB1cGRhdGVfZm9ybWF0ICgpID1cbiAgICBsZXQgZm9ybWF0X3RleHQgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgZm9ybWF0X3NlbGVjdF9kb20jIy52YWx1ZSBpblxuICAgIG1hdGNoIHN0cmluZ190b19kaXNwbGF5X2Zvcm1hdCBmb3JtYXRfdGV4dCB3aXRoXG4gICAgfCBTb21lIGZvcm1hdCAtPlxuICAgICAgbGV0ICgpID0gc2V0X2Rpc3BsYXlfZm9ybWF0IGZvcm1hdCBpblxuICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSAoXywgc25hcHNob3QpIC0+XG4gICAgICAgIHJlbmRlcl9zbmFwc2hvdF9ncmFwaFxuICAgICAgICAgIChzbmFwc2hvdF9qcyA6IEpzX3NuYXBzaG90LnNuYXBzaG90IEpzLnQpXG4gICAgICAgICAgKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkpXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICBpblxuICAoKiBnZXQgaW5pdGlhbCB2YWx1ZSBmb3IgZGlzcGxheSBmb3JtYXQgKilcbiAgbGV0ICgpID0gdXBkYXRlX2Zvcm1hdCAoKSBpblxuICAoKiB1cGRhdGUgdmFsdWUgZm9yIGRpc3BsYXkgZm9ybWF0ICopXG4gIGxldCAoKSA9XG4gICAgZm9ybWF0X3NlbGVjdF9kb20jIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9mb3JtYXQgKCkgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzbmFwc2hvdFwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzbmFwc2hvdFwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNldF90YWJfaXNfYWN0aXZlIHRydWUgaW5cbiAgICAgICAgKCkpXG4gIGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIChjb25maWd1cmF0aW9uX2thcHBhICgpKSBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbl9ncmFwaCAoKSkgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9IGlmIFJlYWN0LlMudmFsdWUgdGFiX2lzX2FjdGl2ZSB0aGVuIHNuYXBzaG90X2pzIyNyZWRyYXdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgc3RvcnlfcmVuZGVyaW5nID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCByZWRyYXcgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfc3RvcnlfcmVuZGVyaW5nIChpZCA6IHN0cmluZykgOiBzdG9yeV9yZW5kZXJpbmcgSnMudCA9XG4gIEpzLlVuc2FmZS5uZXdfb2JqXG4gICAgKEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJTdG9yeVJlbmRlcmluZ1wiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCkgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IG5vbmVfY2hlY2tib3ggPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcblxubGV0IHdlYWtfY2hlY2tib3ggPVxuICBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94OyBIdG1sLmFfY2hlY2tlZCAoKSBdICgpXG5cbmxldCBzdHJvbmdfY2hlY2tib3ggPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBub25lX2JveCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBub25lX2NoZWNrYm94XG5sZXQgd2Vha19ib3ggPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgd2Vha19jaGVja2JveFxubGV0IHN0cm9uZ19ib3ggPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgc3Ryb25nX2NoZWNrYm94XG5cbmxldCBsYXVuY2hfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdOyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdCBdXG4gICAgWyBIdG1sLnR4dCBcIkxhdW5jaFwiIF1cblxubGV0IHN0b3J5X2xpc3QsIGxpc3RfY29udHJvbCA9IFJlYWN0LlMuY3JlYXRlIFtdXG5cbmxldCBzdG9yeV9saXN0X2h0bWwgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QubWFwXG4gICAgKGZ1biAoaWQsIGNtKSAtPlxuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6WyBIdG1sLmFfdmFsdWUgKHN0cmluZ19vZl9pbnQgaWQpIF1cbiAgICAgICAgKEh0bWwudHh0XG4gICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVpICglYSlAXVwiIGlkXG4gICAgICAgICAgICAgIEthc3Rvcl9jbGllbnQucHJpbnRfY29tcHJlc3Npb25fbW9kZXMgY20pKSlcbiAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIHN0b3J5X2xpc3QpXG5cbmxldCBzZWxlY3Rfc3RvcmllcyA9IFR5eG1sX2pzLlIuSHRtbDUuc2VsZWN0IHN0b3J5X2xpc3RfaHRtbFxubGV0IHNlbGVjdF9zdG9yaWVzX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3Qgc2VsZWN0X3N0b3JpZXNcblxubGV0JWh0bWwgc2V0dXBfZm9ybSA9XG4gIHt8PGZvcm0gY2xhc3M9XCJmb3JtLWlubGluZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsPkNvbXByZXNzaW9uIGxldmVsPC9sYWJlbD5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG5vbmVfY2hlY2tib3ggXVxuICAgIHt8IENhdXNhbDwvbGFiZWw+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyB3ZWFrX2NoZWNrYm94IF1cbiAgICB7fCBXZWFrbHk8L2xhYmVsPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgc3Ryb25nX2NoZWNrYm94IF1cbiAgICB7fCBTdHJvbmdseTwvbGFiZWw+PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj58fVxuICAgIFsgbGF1bmNoX2J1dHRvbiBdXG4gICAge3w8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbD5TZWxlY3RlZCBzdG9yeTwvbGFiZWw+fH1cbiAgICBbIHNlbGVjdF9zdG9yaWVzIF1cbiAgICB7fFxuICAgIDwvZGl2PlxuICAgIDwvZm9ybT58fVxuXG5sZXQgc3RvcnlfbG9nLCBsb2dfY29udHJvbCA9IFJlYWN0LlMuY3JlYXRlIFtdXG5sZXQgY3VycmVudF9pbmZvLCBzZXRfaW5mbyA9IFJlYWN0LlMuY3JlYXRlIFwiXCJcblxubGV0IHN0b3J5X2xvZ19odG1sID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0Lm1hcFxuICAgIChmdW4gbGluZSAtPiBIdG1sLnR4dCAobGluZSBeIFwiXFxuXCIpKVxuICAgIChSZWFjdGl2ZURhdGEuUkxpc3QucmV2IChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWwgc3RvcnlfbG9nKSlcblxubGV0IGxvZ19kaXYgPVxuICBUeXhtbF9qcy5SLkh0bWw1LmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtcHJlXCIgXSBdIHN0b3J5X2xvZ19odG1sXG5cbmxldCBsb2dfcGFuZWwgPVxuICBbXG4gICAgVWlfY29tbW9uLm5hdnRhYnMgXCJzdG9yeWxvZ25hdnRhYlwiXG4gICAgICBbXG4gICAgICAgIFwic3RvcnlfY29tcHV0YXRpb25fbG9nXCIsIE5vbmUsIFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eTtcbiAgICAgICAgXCJzdG9yeV9pbmZvX2xvZ1wiLCBOb25lLCBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHk7XG4gICAgICBdO1xuICAgIFVpX2NvbW1vbi5uYXZjb250ZW50IFsgXCJwYW5lbC1zY3JvbGxcIiBdXG4gICAgICBbXG4gICAgICAgIFwic3RvcnlfY29tcHV0YXRpb25fbG9nXCIsIFtdLCBbIGxvZ19kaXYgXTtcbiAgICAgICAgXCJzdG9yeV9pbmZvX2xvZ1wiLCBbIFwicGFuZWwtcHJlXCIgXSwgWyBUeXhtbF9qcy5SLkh0bWw1LnR4dCBjdXJyZW50X2luZm8gXTtcbiAgICAgIF07XG4gIF1cblxubGV0IGdyYXBoX2Rpc3BsYXlfaWQgPSBcInN0b3J5X2dyYXBoX2Rpc3BsYXlcIlxubGV0IHN0b3J5X2dyYXBoID0gSnNfc3RvcnkuY3JlYXRlX3N0b3J5X3JlbmRlcmluZyBncmFwaF9kaXNwbGF5X2lkXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTVcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgIChzZXR1cF9mb3JtIDo6IGxvZ19wYW5lbCk7XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGdyYXBoX2Rpc3BsYXlfaWQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtN1wiOyBcImZsZXgtY29udGVudFwiIF07XG4gICAgICAgIF1cbiAgICAgIFtdO1xuICBdXG5cbmxldCBsaWZ0X3Jlc3VsdCA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciBlIC0+IEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlXG5cbmxldCBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIkNvbmZpZyBjb21wcmVzc2lvblwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbGV0IGNhdXNhbCA9IEpzLnRvX2Jvb2wgbm9uZV9ib3gjIy5jaGVja2VkIGluXG4gICAgICBsZXQgd2VhayA9IEpzLnRvX2Jvb2wgd2Vha19ib3gjIy5jaGVja2VkIGluXG4gICAgICBsZXQgc3Ryb25nID0gSnMudG9fYm9vbCBzdHJvbmdfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbWFuYWdlciNjb25maWdfc3RvcnlfY29tcHV0YXRpb24geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9XG4gICAgICA+fD0gbGlmdF9yZXN1bHQpXG5cbmxldCB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgPVxuICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgbGV0IF8gPSBkb191cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgKCkgaW5cbiAgICAgIEpzLl9mYWxzZSlcblxubGV0IHNldF9hX3N0b3J5ID1cbiAgbGV0IHByZWRfaWQgPSByZWYgbWF4X2ludCBpblxuICBmdW4gKCkgLT5cbiAgICBsZXQgdmEgPSBKcy50b19zdHJpbmcgc2VsZWN0X3N0b3JpZXNfZG9tIyMudmFsdWUgaW5cbiAgICBpZiB2YSA9IFwiXCIgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBwcmVkX2lkIDo9IG1heF9pbnQgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgaWQgPSBpbnRfb2Zfc3RyaW5nIHZhIGluXG4gICAgICBpZiAhcHJlZF9pZCA8PiBpZCB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gcHJlZF9pZCA6PSBpZCBpblxuICAgICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIkxhdW5jaCBzdG9yaWVzXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtYW5hZ2VyI3N0b3J5X2xpc3Qgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCBTb21lIChfY20sIGQsIHYpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc2V0X2luZm9cbiAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAW2lkczogQFslYUBdQCB0PUBbJWFAXUAgZXZlbnQ9QFslYUBdQF1cIlxuICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWFcbiAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkKSkpXG4gICAgICAgICAgICAgICAgICAgICBkXG4gICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYVxuICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2Zsb2F0IGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lKSkpXG4gICAgICAgICAgICAgICAgICAgICBkXG4gICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYVxuICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludCBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQpKSlcbiAgICAgICAgICAgICAgICAgICAgIGQpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgc3RvcnlfZ3JhcGgjI3NldERhdGFcbiAgICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEdyYXBoX2pzb24udG9fanNvbiB2KSkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICkgZWxzZVxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICApXG5cbmxldCByZWMgaW5zcGVjdF9zdG9yaWVzICgpID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJTdG9yaWVzIGxpc3RcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGxpc3RfY29udHJvbFxuICAgICAgICAgIChNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAgKGZ1biBpZCAoY20sIF8sIF8pIGFjYyAtPiAoaWQsIGNtKSA6OiBhY2MpXG4gICAgICAgICAgICAgbWFuYWdlciNzdG9yeV9saXN0IFtdKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IGxvZ19jb250cm9sIG1hbmFnZXIjc3RvcnlfbG9nIGluXG4gICAgICBzZXRfYV9zdG9yeSAoKSlcbiAgPj49IGZ1biBfIC0+XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiU3RvcmllcyBjb21wdXRpbmdcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIG1hbmFnZXIjaXNfY29tcHV0aW5nKSlcbiAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgfm9rOihmdW4gYiAtPlxuICAgICAgICAgIGlmIGIgJiYgUmVhY3QuUy52YWx1ZSB0YWJfaXNfYWN0aXZlIHRoZW5cbiAgICAgICAgICAgIEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgMy4gPj49IGluc3BlY3Rfc3Rvcmllc1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgfmVycm9yOihmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c3Rvcmllc1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZzdG9yaWVzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgIGxldCBfID0gZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpIGluXG4gICAgICAgIEx3dC5hc3luYyBpbnNwZWN0X3N0b3JpZXMpXG4gIGluXG4gIGxldCAoKSA9IG5vbmVfYm94IyMub25jaGFuZ2UgOj0gdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIGluXG4gIGxldCAoKSA9IHdlYWtfYm94IyMub25jaGFuZ2UgOj0gdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIGluXG4gIGxldCAoKSA9IHN0cm9uZ19ib3gjIy5vbmNoYW5nZSA6PSB1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwgaW5cbiAgbGV0ICgpID1cbiAgICBzZWxlY3Rfc3Rvcmllc19kb20jIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBfID0gc2V0X2Ffc3RvcnkgKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGxhdW5jaF9idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIkxhdW5jaCBzdG9yaWVzXCJcbiAgICAgICAgICAgICAgIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgICAgICBpZiBtYW5hZ2VyI3N0b3J5X2lzX2NvbXB1dGluZyB0aGVuXG4gICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcmF3X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI3Jhd19sYXVuY2hfc3RvcnlfY29tcHV0YXRpb24gdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID58PSBsaWZ0X3Jlc3VsdCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9IEx3dC5hc3luYyBpbnNwZWN0X3N0b3JpZXMgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBuYXZfdGFiX2lkID0gXCJuYXZ0YWJzXCJcblxubGV0IG5hdnRhYnMgKCkgPVxuICBsZXQgc3RvcnlfY2xhc3MgPVxuICAgIFNvbWVcbiAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgKGZ1biBzIC0+XG4gICAgICAgICAgIGlmIHMuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2UgdGhlblxuICAgICAgICAgICAgIFtdXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBbIFwiZGlzYWJsZWRcIiBdKVxuICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbClcbiAgaW5cbiAgVHl4bWxfanMuVG9fZG9tLm9mX3VsXG4gIEBAIFVpX2NvbW1vbi5uYXZ0YWJzIG5hdl90YWJfaWRcbiAgICAgICBbXG4gICAgICAgICBcImVkaXRvclwiLCBOb25lLCBUYWJfZWRpdG9yLm5hdmxpICgpO1xuICAgICAgICAgXCJsb2dcIiwgTm9uZSwgVGFiX2xvZy5uYXZsaSAoKTtcbiAgICAgICAgIFwicGxvdFwiLCBOb25lLCBUYWJfcGxvdC5uYXZsaSAoKTtcbiAgICAgICAgIFwiRElOXCIsIE5vbmUsIFRhYl9mbHV4Lm5hdmxpICgpO1xuICAgICAgICAgXCJzbmFwc2hvdFwiLCBOb25lLCBUYWJfc25hcHNob3QubmF2bGkgKCk7XG4gICAgICAgICBcIm91dHB1dHNcIiwgTm9uZSwgVGFiX291dHB1dHMubmF2bGkgKCk7XG4gICAgICAgICBcInN0b3JpZXNcIiwgc3RvcnlfY2xhc3MsIFRhYl9zdG9yaWVzLm5hdmxpICgpO1xuICAgICAgICAgXCJhYm91dFwiLCBOb25lLCBUYWJfYWJvdXQubmF2bGkgKCk7XG4gICAgICAgXVxuXG5sZXQgbmF2Y29udGVudHNfaWQgOiBzdHJpbmcgPSBcIm5hdmNvbnRlbnRzXCJcblxubGV0IG5hdmNvbnRlbnRzICgpID1cbiAgVHl4bWxfanMuVG9fZG9tLm9mX2RpdlxuICBAQCBVaV9jb21tb24ubmF2Y29udGVudCB+aWQ6bmF2Y29udGVudHNfaWQgW11cbiAgICAgICBbXG4gICAgICAgICBcImVkaXRvclwiLCBbIFwicm93XCIgXSwgVGFiX2VkaXRvci5jb250ZW50ICgpO1xuICAgICAgICAgXCJsb2dcIiwgW10sIFRhYl9sb2cuY29udGVudCAoKTtcbiAgICAgICAgIFwicGxvdFwiLCBbXSwgVGFiX3Bsb3QuY29udGVudCAoKTtcbiAgICAgICAgIFwiRElOXCIsIFtdLCBUYWJfZmx1eC5jb250ZW50ICgpO1xuICAgICAgICAgXCJzbmFwc2hvdFwiLCBbXSwgVGFiX3NuYXBzaG90LmNvbnRlbnQgKCk7XG4gICAgICAgICBcIm91dHB1dHNcIiwgW10sIFRhYl9vdXRwdXRzLmNvbnRlbnQgKCk7XG4gICAgICAgICBcInN0b3JpZXNcIiwgWyBcInJvd1wiIF0sIFRhYl9zdG9yaWVzLmNvbnRlbnQgKCk7XG4gICAgICAgICBcImFib3V0XCIsIFsgXCJwYW5lbC1zY3JvbGxcIiBdLCBUYWJfYWJvdXQuY29udGVudCAoKTtcbiAgICAgICBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBUYWJfZWRpdG9yLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfbG9nLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfcGxvdC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2ZsdXgub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9zbmFwc2hvdC5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX291dHB1dHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9zdG9yaWVzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfYWJvdXQub25sb2FkICgpIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA9XG4gIGxldCAoKSA9IFRhYl9lZGl0b3Iub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfcGxvdC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfZmx1eC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfc25hcHNob3Qub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX291dHB1dHMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3N0b3JpZXMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2Fib3V0Lm9ucmVzaXplICgpIGluXG4gICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgc3luYyAoKSA6IHVuaXQgTHd0LnQgPVxuICBTdGF0ZV9zZXR0aW5ncy5zeW5jICgpID4+PSBTdGF0ZV9ydW50aW1lLnN5bmMgPj49IFN0YXRlX3Byb2plY3Quc3luY1xuICA+Pj0gZnVuIF8gLT5cbiAgU3RhdGVfZmlsZS5zeW5jICgpID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXRcblxubGV0IGluaXQgKCkgOiB1bml0IEx3dC50ID1cbiAgTHd0LnJldHVybl91bml0ID4+PSBTdGF0ZV9zZXR0aW5ncy5pbml0ID4+PSBTdGF0ZV9ydW50aW1lLmluaXRcbiAgPj49IFN0YXRlX3Byb2plY3QuaW5pdCA+Pj0gU3RhdGVfZmlsZS5pbml0ID4+PSBTdGF0ZV9zaW11bGF0aW9uLmluaXQgPj49IHN5bmNcblxubGV0IHJlYyBsb29wIChoIDogdW5pdCAtPiB1bml0IEx3dC50KSAodCA6IGZsb2F0KSAoKSA6IHVuaXQgTHd0LnQgPVxuICBoICgpID4+PSAoZnVuIF8gLT4gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCB0KSA+Pj0gbG9vcCBoIHRcblxubGV0IGxvb3Bfc3luYyAoKSA6IHVuaXQgTHd0LnQgPVxuICBpZiBSZWFjdC5TLnZhbHVlIFN0YXRlX3NldHRpbmdzLnN5bmNoIHRoZW4gKFxuICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwibG9vcCBzeW5jXCIpIGluXG4gICAgc3luYyAoKVxuICApIGVsc2VcbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXQgPj49IGluaXQgPj49IGxvb3AgbG9vcF9zeW5jIDIwLjApXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb25sb2FkIChfIDogJ2EpIDogYm9vbCBKcy50ID1cbiAgbGV0ICgpID0gU3RhdGVfdWkub25sb2FkICgpIGluXG4gIGxldCBtYWluID0gVWlfY29tbW9uLmlkX2RvbSBcIm1haW5cIiBpblxuICBsZXQgKCkgPVxuICAgIERvbS5hcHBlbmRDaGlsZCBtYWluIChUeXhtbF9qcy5Ub19kb20ub2ZfZGl2IChQYW5lbF9wcm9qZWN0cy5jb250ZW50ICgpKSlcbiAgaW5cbiAgbGV0ICgpID0gRG9tLmFwcGVuZENoaWxkIG1haW4gKFBhbmVsX3RhYi5uYXZ0YWJzICgpKSBpblxuICBsZXQgKCkgPSBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoUGFuZWxfdGFiLm5hdmNvbnRlbnRzICgpKSBpblxuICBsZXQgKCkgPVxuICAgIERvbS5hcHBlbmRDaGlsZCBtYWluIChUeXhtbF9qcy5Ub19kb20ub2ZfZGl2IChQYW5lbF9zZXR0aW5ncy5jb250ZW50ICgpKSlcbiAgaW5cblxuICBsZXQgKCkgPSBQYW5lbF9wcm9qZWN0cy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gUGFuZWxfdGFiLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5ncy5vbmxvYWQgKCkgaW5cblxuICBsZXQgXyA9XG4gICAgRG9tX2h0bWwud2luZG93IyMub25yZXNpemUgOj1cbiAgICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfcHJvamVjdHMub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF90YWIub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5ncy5vbnJlc2l6ZSAoKSBpblxuICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBKcy5fdHJ1ZVxuXG5sZXQgXyA9IERvbV9odG1sLndpbmRvdyMjLm9ubG9hZCA6PSBEb21faHRtbC5oYW5kbGVyIG9ubG9hZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBFbnN1cmUgdGhhdCBbYXRfZXhpdF0gZnVuY3Rpb25zIGFyZSBjYWxsZWQgYXQgdGhlIGVuZCBvZiBldmVyeSBwcm9ncmFtICopXG5cbmxldCBfID0gZG9fYXRfZXhpdCgpXG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLjAsImZpbGUiOiJKc1NpbS5iYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJuYW1lcyI6WyJjYW1sX2ludDY0X2lzX3plcm8iLCJ4IiwiY2FtbF9zdHJfcmVwZWF0IiwibiIsInMiLCJyIiwibCIsImNhbWxfaW50NjRfb2Zmc2V0IiwiTWF0aCIsImNhbWxfcmFpc2VfY29uc3RhbnQiLCJ0YWciLCJjYW1sX2dsb2JhbF9kYXRhIiwiY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSIsIk1sSW50NjQiLCJsbyIsIm1pIiwiaGkiLCJ0aGlzIiwieGhpIiwiaCIsInNpZ24iLCJvZmZzZXQiLCJtb2R1bHVzIiwiZGl2aXNvciIsInF1b3RpZW50IiwieSIsInEiLCJjYW1sX2ludDY0X29mX2ludDMyIiwiY2FtbF9pbnQ2NF90b19pbnQzMiIsImNhbWxfaW50NjRfaXNfbmVnYXRpdmUiLCJjYW1sX2ludDY0X25lZyIsImNhbWxfanNieXRlc19vZl9zdHJpbmciLCJqc29vX3N5c19nZXRlbnYiLCJwcm9jZXNzIiwiZ2xvYmFsVGhpcyIsInVuZGVmaW5lZCIsImNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnIiwiaSIsImNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlIiwiZXhuIiwiZm9yY2UiLCJjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2UiLCJjYW1sX3JhaXNlX3dpdGhfYXJnIiwiYXJnIiwiY2FtbF9zdHJpbmdfb2ZfanNieXRlcyIsImNhbWxfcmFpc2Vfd2l0aF9zdHJpbmciLCJtc2ciLCJjYW1sX2ludmFsaWRfYXJndW1lbnQiLCJjYW1sX3BhcnNlX2Zvcm1hdCIsImZtdCIsImxlbiIsImYiLCJjIiwiY2FtbF9maW5pc2hfZm9ybWF0dGluZyIsInJhd2J1ZmZlciIsImJ1ZmZlciIsImNhbWxfaW50NjRfZm9ybWF0Iiwid2Jhc2UiLCJjdnRibCIsInAiLCJjYW1sX2V4cG0xX2Zsb2F0IiwiY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0IiwidCIsImpzb29faXNfYXNjaWkiLCJjYW1sX3V0ZjE2X29mX3V0ZjgiLCJiIiwiYzEiLCJjMiIsInYiLCJqIiwiU3RyaW5nIiwiY2FtbF9qc3N0cmluZ19vZl9zdHJpbmciLCJmc19ub2RlX3N1cHBvcnRlZCIsIm1ha2VfcGF0aF9pc19hYnNvbHV0ZSIsInBvc2l4IiwicGF0aCIsIndpbjMyIiwic3BsaXREZXZpY2VSZSIsInJlc3VsdCIsImRldmljZSIsImlzVW5jIiwiQm9vbGVhbiIsInJvb3QiLCJzZXAiLCJwYXRoX2lzX2Fic29sdXRlIiwiY2FtbF90cmFpbGluZ19zbGFzaCIsIm5hbWUiLCJjYW1sX2N1cnJlbnRfZGlyIiwiY2FtbF9tYWtlX3BhdGgiLCJjb21wMCIsImNvbXAiLCJuY29tcCIsImNhbWxfdXRmOF9vZl91dGYxNiIsImQiLCJjYW1sX3N0cmluZ19vZl9qc3N0cmluZyIsInVuaXhfZXJyb3IiLCJtYWtlX3VuaXhfZXJyX2FyZ3MiLCJjb2RlIiwic3lzY2FsbCIsImVycm5vIiwidmFyaWFudCIsIm51bGwiLCJhcmdzIiwiY2FtbF9uYW1lZF92YWx1ZXMiLCJjYW1sX25hbWVkX3ZhbHVlIiwibm0iLCJjYW1sX3JhaXNlX3dpdGhfYXJncyIsImNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyIsImEiLCJjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzIiwiTWxCeXRlcyIsImNvbnRlbnRzIiwibGVuZ3RoIiwiY29udGVudCIsImNhbWxfaXNfbWxfYnl0ZXMiLCJjYW1sX2lzX21sX3N0cmluZyIsImNhbWxfYnl0ZXNfb2ZfYXJyYXkiLCJVaW50OEFycmF5IiwiY2FtbF9ieXRlc19vZl9qc2J5dGVzIiwiY2FtbF9ieXRlc19vZl9zdHJpbmciLCJjYW1sX3JhaXNlX3N5c19lcnJvciIsImNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlIiwiY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IiwiY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyIsImNhbWxfY3JlYXRlX2J5dGVzIiwiY2FtbF9tbF9ieXRlc19sZW5ndGgiLCJjYW1sX2JsaXRfYnl0ZXMiLCJzMSIsImkxIiwiczIiLCJpMiIsIk1sRmlsZSIsIk1sRmFrZUZpbGUiLCJvbGQiLCJidWYiLCJwb3MiLCJjbGVuIiwibmV3X3N0ciIsIm9sZF9kYXRhIiwiZGF0YSIsIk1sRmFrZUZkIiwiZmlsZSIsImZsYWdzIiwiTWxGYWtlRGV2aWNlIiwicmVzIiwiU3ltYm9sIiwibmFtZV9zbGFzaCIsIm1vZGUiLCJyYWlzZV91bml4IiwicGFyZW50IiwiUmVnRXhwIiwic2VlbiIsIm0iLCJlbnRyeSIsIm9rIiwiQXJyYXkiLCJieXRlcyIsImNhbWxfbWxfc3RyaW5nX2xlbmd0aCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQiLCJjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyIsImNhbWxfYnl0ZXNfYm91bmRfZXJyb3IiLCJjYW1sX2J5dGVzX3Vuc2FmZV9zZXQiLCJjYW1sX2J5dGVzX3NldCIsIk1sTm9kZUZkIiwiZmQiLCJyZXF1aXJlIiwiZXJyIiwiYnVmX29mZnNldCIsInJlYWQiLCJNbE5vZGVEZXZpY2UiLCJjb25zdHMiLCJrZXkiLCJpc0NoYXJhY3RlckRldmljZSIsIm8iLCJqc19zdGF0cyIsInRvX2RpciIsInRhcmdldCIsImxpbmsiLCJmaWxlX2tpbmQiLCJjYW1sX2dldF9yb290IiwiY2FtbF9mYWlsd2l0aCIsImNhbWxfcm9vdCIsImpzb29fbW91bnRfcG9pbnQiLCJyZXNvbHZlX2ZzX2RldmljZSIsImNhbWxfc3lzX2lzX2RpcmVjdG9yeSIsImNhbWxfcmFpc2Vfbm90X2ZvdW5kIiwiY2FtbF9zeXNfZ2V0ZW52Iiwic2hpZnRfcmlnaHRfbmF0IiwibmF0MSIsIm9mczEiLCJsZW4xIiwibmF0MiIsIm9mczIiLCJuYml0cyIsIndyYXAiLCJjYW1sX2dyX3N0YXRlIiwiY2FtbF9ncl9zdGF0ZV9nZXQiLCJjYW1sX2dyX3BvaW50X2NvbG9yIiwiaW0iLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSIsIk1sT2JqZWN0VGFibGUiLCJOYWl2ZUxvb2t1cCIsIm9ianMiLCJjYW1sX3N5c19yZW5hbWUiLCJvX3Jvb3QiLCJuX3Jvb3QiLCJjYW1sX2xvZzEwX2Zsb2F0IiwiY2FtbF9ydW50aW1lX3dhcm5pbmdzIiwiY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyIsImJvb2wiLCJjYW1sX2NsYXNzaWZ5X2Zsb2F0IiwiaXNGaW5pdGUiLCJpc05hTiIsImNhbWxfbWxfY2hhbm5lbHMiLCJjYW1sX3JlZmlsbCIsImNoYW4iLCJzdHIiLCJzdHJfYSIsIm5yZWFkIiwiY2FtbF9hcnJheV9ib3VuZF9lcnJvciIsImNhbWxfbWxfaW5wdXRfc2Nhbl9saW5lIiwiY2hhbmlkIiwicHJldl9tYXgiLCJjYW1sX2djX21pbm9yIiwidW5pdCIsImNhbWxfbWxfY29uZGl0aW9uX25ldyIsImNhbWxfYmFfdG9fdHlwZWRfYXJyYXkiLCJiYSIsImNhbWxfbWxfaW5wdXRfYmxvY2siLCJhdmFpbCIsImNhbWxfbWxfaW5wdXRfYmlnYXJyYXkiLCJjYW1sX2ludDY0X29mX2J5dGVzIiwiY2FtbF9iYV91aW50OF9nZXQ2NCIsImkwIiwib2ZzIiwiYjEiLCJiMiIsImIzIiwiYjQiLCJiNSIsImI2IiwiYjciLCJiOCIsImNhbWxfaW50NjRfdG9fYnl0ZXMiLCJjYW1sX2ludDY0X21hcnNoYWwiLCJ3cml0ZXIiLCJzaXplcyIsImNhbWxfYmFfbnVtX2RpbXMiLCJjYW1sX3dyYXBfZXhjZXB0aW9uIiwiZSIsImNhbWxfY3JlYXRlX2ZpbGUiLCJqc29vX2NyZWF0ZV9maWxlIiwiY2FtbF9mc19pbml0IiwidG1wIiwiY2FtbF9nZXRfY29udGludWF0aW9uX2NhbGxzdGFjayIsImNhbWxfcGFyc2VyX3RyYWNlIiwiY2FtbF9zZXRfcGFyc2VyX3RyYWNlIiwib2xkZmxhZyIsImNhbWxfbGlzdF9vZl9qc19hcnJheSIsImNhbWxfbXVsIiwiY2FtbF9oYXNoX21peF9pbnQiLCJudW1fZGlnaXRzX25hdCIsIm5hdCIsImNhbWxfaGFzaF9uYXQiLCJjYW1sX2NhbGxfZ2VuIiwiYXJnc0xlbiIsImciLCJuYXJncyIsImV4dHJhX2FyZ3MiLCJhcmd1bWVudHMiLCJjYW1sX2NhbGxiYWNrIiwiY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc3lzX2NoZGlyIiwiZGlyIiwiY2FtbF9vYmpfdXBkYXRlX3RhZyIsImNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyIsImNhbWxfZ2NfY291bnRlcnMiLCJjYW1sX2dyX3N5bmNocm9uaXplIiwiY2FtbF91bml4X2Nsb3NlZGlyIiwiZGlyX2hhbmRsZSIsImNhbWxfdW5peF9vcGVuZGlyIiwiY2FtbF91bml4X3Jld2luZGRpciIsIm5ld19kaXJfaGFuZGxlIiwiY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSIsImNhbWxfdW5peF9yZWFkZGlyIiwiY2FtbF91bml4X2ZpbmRmaXJzdCIsInBhdGhfanMiLCJmaXJzdF9lbnRyeSIsImNhbWxfaXNfY29udGludWF0aW9uX3RhZyIsImxvZzJfb2siLCJqc29vX2Zsb29yX2xvZzIiLCJJbmZpbml0eSIsImNhbWxfaW50MzJfYml0c19vZl9mbG9hdCIsImZsb2F0MzJhIiwiRmxvYXQzMkFycmF5IiwiaW50MzJhIiwiSW50MzJBcnJheSIsImNhbWxfaW50NjRfY3JlYXRlX2xvX21pX2hpIiwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0IiwiZXhwIiwiayIsInIzIiwicjIiLCJyMSIsImNhbWxfYmFfc2VyaWFsaXplIiwic3oiLCJjb21wbGV4IiwiY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudCIsImtpbmQiLCJjYW1sX2JhX2NyZWF0ZV9idWZmZXIiLCJzaXplIiwidmlldyIsIkZsb2F0NjRBcnJheSIsIkludDhBcnJheSIsIkludDE2QXJyYXkiLCJVaW50MTZBcnJheSIsImNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyIsImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyIsIk5hTiIsImNhbWxfYmFfZ2V0X3NpemUiLCJkaW1zIiwibl9kaW1zIiwiY2FtbF9pbnQ2NF9jcmVhdGVfbG9faGkiLCJjYW1sX2ludDY0X2hpMzIiLCJjYW1sX2ludDY0X2xvMzIiLCJjYW1sX2JhX2N1c3RvbV9uYW1lIiwiTWxfQmlnYXJyYXkiLCJsYXlvdXQiLCJyZSIsInRvdGFsIiwiazEiLCJrMiIsIk1sX0JpZ2FycmF5X2NfMV8xIiwiY2FtbF9iYV9jcmVhdGVfdW5zYWZlIiwic2l6ZV9wZXJfZWxlbWVudCIsImNhbWxfYmFfZGVzZXJpYWxpemUiLCJyZWFkZXIiLCJudW1fZGltcyIsInNpemVfZGltIiwic2l6ZV9kaW1faGkiLCJzaXplX2RpbV9sbyIsInNpeHR5IiwiaW50NjQiLCJjYW1sX2JhX2NvbXBhcmUiLCJjYW1sX2hhc2hfbWl4X2ludDY0IiwiY2FtbF9oYXNoX21peF9mbG9hdCIsInYwIiwiY2FtbF9iYV9oYXNoIiwibnVtX2VsdHMiLCJ3IiwiY2FtbF9pbnQzMl91bm1hcnNoYWwiLCJjYW1sX25hdGl2ZWludF91bm1hcnNoYWwiLCJjYW1sX2ludDY0X3VubWFyc2hhbCIsImNhbWxfaW50NjRfY29tcGFyZSIsImNhbWxfaW50NjRfaGFzaCIsImNhbWxfY3VzdG9tX29wcyIsImNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbSIsImNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbSIsIm51bSIsImN1c3RvbSIsInN3YXAiLCJjYW1sX2NvbXBhcmVfdmFsX3RhZyIsIk51bWJlciIsImNhbWxfaW50X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19jb21wYXJlIiwiY2FtbF9ieXRlc19jb21wYXJlIiwiY2FtbF9jb21wYXJlX3ZhbCIsInN0YWNrIiwidGFnX2EiLCJ0YWdfYiIsImNhbWxfZ3JlYXRlcnRoYW4iLCJkaXZfaGVscGVyIiwieiIsImRpdl9kaWdpdF9uYXQiLCJuYXRxIiwib2ZzcSIsIm5hdHIiLCJvZnNyIiwicmVtIiwibnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0Iiwic2hpZnRfbGVmdF9uYXQiLCJNbE5hdCIsImNyZWF0ZV9uYXQiLCJhcnIiLCJzZXRfdG9femVyb19uYXQiLCJpbmNyX25hdCIsImNhcnJ5X2luIiwiY2FycnkiLCJhZGRfbmF0IiwibGVuMiIsIm5hdF9vZl9hcnJheSIsIm11bHRfZGlnaXRfbmF0IiwibmF0MyIsIm9mczMiLCJ4MSIsIngyIiwieDMiLCJkZWNyX25hdCIsImJvcnJvdyIsInN1Yl9uYXQiLCJjb21wYXJlX25hdCIsImRpdl9uYXQiLCJxdW8iLCJjYW1sX2JhX2JsaXQiLCJzcmMiLCJkc3QiLCJpc19kaWdpdF9pbnQiLCJjYW1sX2ludDY0X2RpdiIsImNhbWxfanNfaHRtbF9lbnRpdGllcyIsImVudGl0eSIsInRlbXAiLCJkb2N1bWVudCIsImNhbWxfc3RyaW5nX3Vuc2FmZV9zZXQiLCJjYW1sX2ludDY0X29mX2Zsb2F0IiwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjQiLCJjYW1sX2JhX3NldF8yIiwiY2FtbF9hcmd2IiwibWFpbiIsImFyZ3YiLCJhcmdzMiIsImNhbWxfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9qc19ldmFsX3N0cmluZyIsImV2YWwiLCJzZXJpYWxpemVfbmF0IiwiY2FtbF9tZW1wcm9mX3NldCIsIl9jb250cm9sIiwiY2FtbF9zeXNfZXhpdCIsImNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yIiwiY2FtbF9qc19mcm9tX2FycmF5IiwiY2FtbF9iYV9yZXNoYXBlIiwidmluZCIsIm5ld19kaW0iLCJjYW1sX29vX2xhc3RfaWQiLCJjYW1sX3NldF9vb19pZCIsImNhbWxfZ3JfZmlsbF9yZWN0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmEiLCJzdHIxIiwicG9zMSIsImJhMiIsInBvczIiLCJzbGljZSIsImNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZSIsImpzbmFtZSIsImNhbWxfZ2V0X2dsb2JhbF9kYXRhIiwiY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZCIsImNhbWxfYmFfdWludDhfZ2V0MTYiLCJjYW1sX2NvbXBhcmUiLCJjYW1sX01ENVRyYW5zZm9ybSIsImFkZCIsInh4IiwiZmYiLCJnZyIsImhoIiwiaWkiLCJjYW1sX01ENVVwZGF0ZSIsImN0eCIsImlucHV0IiwiaW5wdXRfbGVuIiwiaW5fYnVmIiwiaW5wdXRfcG9zIiwibWlzc2luZyIsImNhbWxfcnVudGltZV9ldmVudHNfcmVhZF9wb2xsIiwiY3Vyc29yIiwiY2FsbGJhY2tzIiwiY2FtbF9mcmVzaF9vb19pZCIsImNhbWxfaW50NjRfdG9fZmxvYXQiLCJjYW1sX2JhX2dldF8xIiwiY2FtbF9iaWdzdHJpbmdfbWVtY21wIiwiY2FtbF9uZXdfc3RyaW5nIiwiY2FtbF9lcmZfZmxvYXQiLCJhMSIsImEyIiwiYTMiLCJhNCIsImE1IiwiY2FtbF9iYV91aW50OF9nZXQzMiIsImNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJjYW1sX3N0cl9pbml0aWFsaXplIiwiY2FtbF9vYmpfYmxvY2siLCJjYW1sX2dyX2NsZWFyX2dyYXBoIiwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlciIsImJzIiwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCIsIl91bml0IiwibHhvcl9kaWdpdF9uYXQiLCJjYW1sX29ial9hZGRfb2Zmc2V0IiwiY2FtbF9maW5hbF9yZWxlYXNlIiwiY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplIiwiY2FtbF9qc190b19hcnJheSIsImNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZSIsImNhbWxfZ3JfcGxvdCIsImNvbG9yIiwiY2FtbF9ieXRlc19zZXQ2NCIsImk2NCIsImNhbWxfc3RyaW5nX3NldDE2IiwiaTE2IiwiY2FtbF9pbnQ2NF9ic3dhcCIsImNhbWxfZ2NfbWFqb3IiLCJjYW1sX2xleF9hcnJheSIsImNhbWxfbGV4X2VuZ2luZSIsInRibCIsInN0YXJ0X3N0YXRlIiwibGV4YnVmIiwibGV4X2J1ZmZlciIsImxleF9idWZmZXJfbGVuIiwibGV4X3N0YXJ0X3BvcyIsImxleF9jdXJyX3BvcyIsImxleF9sYXN0X3BvcyIsImxleF9sYXN0X2FjdGlvbiIsImxleF9lb2ZfcmVhY2hlZCIsImxleF9iYXNlIiwibGV4X2JhY2t0cmsiLCJsZXhfZGVmYXVsdCIsImxleF90cmFucyIsImxleF9jaGVjayIsInN0YXRlIiwiYmFzZSIsImJhY2t0cmsiLCJjYW1sX3N5c19maWxlX2V4aXN0cyIsImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QiLCJjYW1sX2FycmF5X3N1YiIsImNhbWxfYnl0ZXNfZXF1YWwiLCJjYW1sX2dyX3NpemVfeCIsImNhbWxfbWxfZGVidWdfaW5mb19zdGF0dXMiLCJjYW1sX2F0b21pY19mZXRjaF9hZGQiLCJyZWYiLCJvc190eXBlIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX2N5Z3dpbiIsImNhbWxfY29zaF9mbG9hdCIsIk1sTXV0ZXgiLCJjYW1sX21sX211dGV4X25ldyIsImNhbWxfZXBoZV9rZXlfb2Zmc2V0IiwiY2FtbF9lcGhlX2NoZWNrX2tleSIsIndlYWsiLCJjYW1sX2hhc2hfbWl4X2ZpbmFsIiwiY2FtbF9ncl90ZXh0X3NpemUiLCJ0eHQiLCJjYW1sX2xleF9ydW5fbWVtIiwibWVtIiwiY3Vycl9wb3MiLCJjYW1sX2xleF9ydW5fdGFnIiwiY2FtbF9uZXdfbGV4X2VuZ2luZSIsImxleF9tZW0iLCJsZXhfYmFzZV9jb2RlIiwibGV4X2JhY2t0cmtfY29kZSIsImxleF9kZWZhdWx0X2NvZGUiLCJsZXhfdHJhbnNfY29kZSIsImxleF9jaGVja19jb2RlIiwibGV4X2NvZGUiLCJwY19vZmYiLCJwc3RhdGUiLCJiYXNlX2NvZGUiLCJjYW1sX2JhX3VpbnQ4X3NldDY0IiwiY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIiwiY2FtbF9sZXNzZXF1YWwiLCJjYW1sX2Fjb3NoX2Zsb2F0IiwiY2FtbF9NRDVJbml0IiwiQXJyYXlCdWZmZXIiLCJiMzIiLCJVaW50MzJBcnJheSIsImNhbWxfbWxfZmx1c2giLCJjYW1sX3NlZWtfb3V0IiwiY2FtbF9tbF9zZWVrX291dF82NCIsImNvbXBhcmVfbmF0X3JlYWwiLCJjYW1sX2djX3NldCIsImNhbWxfanNfZ2V0IiwiY2FtbF91bml4X2lzYXR0eSIsImZpbGVEZXNjcmlwdG9yIiwidHR5IiwiY2FtbF9tbF9zZXRfYnVmZmVyZWQiLCJjYW1sX2djX2NvbXBhY3Rpb24iLCJjYW1sX2VwaGVfZ2V0X2tleSIsImNhbWxfdW5peF9sb2NhbHRpbWUiLCJEYXRlIiwiZF9udW0iLCJqYW51YXJ5Zmlyc3QiLCJkb3kiLCJqYW4iLCJqdWwiLCJzdGRUaW1lem9uZU9mZnNldCIsImNhbWxfdW5peF9ta3RpbWUiLCJ0bSIsInRtMiIsImNhbWxfYmlnc3RyaW5nX2JsaXRfYnl0ZXNfdG9fYmEiLCJjYW1sX3N5c19mZHMiLCJjYW1sX3N5c19jbG9zZSIsImNhbWxfbWxfY2xvc2VfY2hhbm5lbCIsImNhbWxfYXRvbWljX2V4Y2hhbmdlIiwiY2FtbF9zeXNfaXNhdHR5IiwiX2NoYW4iLCJpc19kaWdpdF96ZXJvIiwiY2FtbF91bml4X2xzdGF0IiwiY2FtbF91bml4X2xzdGF0XzY0IiwiY2FtbF9qc19zZXQiLCJjYW1sX2FycmF5X2dldCIsImFycmF5IiwiaW5kZXgiLCJjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMiLCJjb250IiwiY2FtbF91bml4X3JtZGlyIiwiY2FtbF9sb2cyX2Zsb2F0IiwiY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50IiwiY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUiLCJjYW1sX2ludDY0X3N1YiIsImNhbWxfc2Vla19pbiIsImNhbWxfbWxfc2Vla19pbl82NCIsImNhbWxfZG9tYWluX2lkIiwiY2FtbF9tbF9tdXRleF91bmxvY2siLCJjYW1sX2RvbWFpbl9sYXRlc3RfaWR4IiwiY2FtbF9kb21haW5fc3Bhd24iLCJtdXRleCIsImlkIiwiY2FtbF91bml4X21rZGlyIiwicGVybSIsImNhbWxfaW50NjRfc2hpZnRfbGVmdCIsImNhbWxfbm90ZXF1YWwiLCJjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSIsImNhbWxfanNfd3JhcF9jYWxsYmFjayIsIkZ1bmN0aW9uIiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2siLCJjYW1sX2lzX2pzIiwiY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkIiwiY2FtbF9iYV9kaW0iLCJjYW1sX2JhX2RpbV8xIiwiY2FtbF9qc19tZXRoX2NhbGwiLCJjYW1sX2VwaGVfZGF0YV9vZmZzZXQiLCJjYW1sX3dlYWtfY3JlYXRlIiwiY2FtbF9lcGhlX2NyZWF0ZSIsImNhbWxfanNfdG9fYnl0ZV9zdHJpbmciLCJjYW1sX3RyYW1wb2xpbmUiLCJjYW1sX21heWJlX3ByaW50X3N0YXRzIiwiY2FtbF9ieXRlc191bnNhZmVfZ2V0IiwiY2FtbF9ieXRlc19nZXQ2NCIsImNhbWxfY3VzdG9tX2V2ZW50X2luZGV4IiwiY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3JlZ2lzdGVyIiwiZXZlbnRfbmFtZSIsImV2ZW50X3RhZyIsImV2ZW50X3R5cGUiLCJjYW1sX3VuaXhfaGFzX3N5bWxpbmsiLCJjYW1sX2VwaGVfc2V0X2tleSIsIk9iamVjdCIsImNhbWxfZXBoZV91bnNldF9rZXkiLCJjb3VudCIsImNhbWxfd2Vha19zZXQiLCJjYW1sX3N5c19yZW1vdmUiLCJjYW1sX3N0cmluZ19ib3VuZF9lcnJvciIsImNhbWxfc3RyaW5nX2dldDMyIiwiY2FtbF9ieXRlc19nZXQiLCJjYW1sX2h5cG90X2Zsb2F0IiwiY2FtbF9qc19jYWxsIiwiY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSIsImNhbWxfdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nIiwiY2FtbF9oYXNoX21peF9ieXRlc19hcnIiLCJjYW1sX2hhc2hfbWl4X2pzYnl0ZXMiLCJjYW1sX21sX2J5dGVzX2NvbnRlbnQiLCJjYW1sX2hhc2hfbWl4X2J5dGVzIiwiY2FtbF9ieXRlc19sZXNzdGhhbiIsImNhbWxfZXJmY19mbG9hdCIsImNhbWxfZ3JfZmlsbF9wb2x5IiwiYXIiLCJjYW1sX2djX3F1aWNrX3N0YXQiLCJjYW1sX21sX2lucHV0X2NoYXIiLCJjYW1sX21sX2lucHV0X2ludCIsImNhbWxfZ3JfZGlzcGxheV9tb2RlIiwiY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzIiwibnRoX2RpZ2l0X25hdCIsImNhbWxfYXJyYXlfYmxpdCIsImNhbWxfZmxvYXRfb2Zfc3RyaW5nIiwibTMiLCJtYW50aXNzYSIsInBhcnNlSW50IiwiZXhwb25lbnQiLCJjYW1sX3N5c19nZXRjd2QiLCJjYW1sX2ludDY0X2FkZCIsImNhbWxfaW50NjRfbXVsIiwiY2FtbF9pbnQ2NF91bHQiLCJjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UiLCJjYW1sX3BhcnNlX2RpZ2l0IiwiY2FtbF9pbnQ2NF9vZl9zdHJpbmciLCJiYXNlNjQiLCJ0aHJlc2hvbGQiLCJjYW1sX2JhX3NldF8xIiwiY2FtbF9pbnQ2NF94b3IiLCJjYW1sX2ludDY0X29yIiwiY2FtbF9seG1fbmV4dCIsInNoaWZ0X2wiLCJzaGlmdF9yIiwib3IiLCJ4b3IiLCJtdWwiLCJyb3RsIiwiZ2V0Iiwic2V0IiwiTSIsImRhYmEiLCJxMCIsInExIiwic3QiLCJ4MCIsImNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4iLCJjYW1sX2xpc3RfdG9fanNfYXJyYXkiLCJjYW1sX291dHB1dF92YWwiLCJXcml0ZXIiLCJ2YWx1ZSIsIm5vX3NoYXJpbmciLCJjbG9zdXJlcyIsImNvbnNvbGUiLCJpbnRlcm5fb2JqX3RhYmxlIiwibWVtbyIsImV4aXN0aW5nX29mZnNldCIsImV4dGVybl9yZWMiLCJvcHMiLCJzel8zMl82NCIsImhlYWRlcl9wb3MiLCJvbGRfcG9zIiwidHlwZV9vZl92IiwiY2FtbF9zdHJpbmdfb2ZfYXJyYXkiLCJjYW1sX291dHB1dF92YWx1ZV90b19zdHJpbmciLCJjYW1sX3JhaXNlX25vdF9hX2RpciIsImNhbWxfc3lzX3N5c3RlbV9jb21tYW5kIiwiY21kIiwiY2hpbGRfcHJvY2VzcyIsImNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uIiwiY2FtbF91bml4X2dldHVpZCIsImRlc2VyaWFsaXplX25hdCIsImluaXRpYWxpemVfbmF0IiwiY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZyIsImNhbWxfZ3Jfb3Blbl9zdWJ3aW5kb3ciLCJVSW50OEFycmF5UmVhZGVyIiwiY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSIsInJlYWR2bHEiLCJvdmVyZmxvdyIsIm43IiwiaGVhZGVyX2xlbiIsImRhdGFfbGVuIiwiTWxTdHJpbmdSZWFkZXIiLCJjYW1sX2RlY29tcHJlc3NfaW5wdXQiLCJjYW1sX2Zsb2F0X29mX2J5dGVzIiwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciIsIm1hZ2ljIiwiY29tcHJlc3NlZCIsInVuY29tcHJlc3NlZF9kYXRhX2xlbiIsIm51bV9vYmplY3RzIiwiX3NpemVfMzIiLCJfc2l6ZV82NCIsIm9ial9jb3VudGVyIiwiaW50ZXJuX3JlYyIsImhlYWRlciIsImV4cGVjdGVkX3NpemUiLCJjYW1sX3N0cmluZ19vZl9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyIsImNhbWxfaW5wdXRfdmFsdWUiLCJibG9jayIsImNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwIiwiY2FtbF9hdG9taWNfY2FzIiwiY2FtbF9jb3B5c2lnbl9mbG9hdCIsImNhbWxfZ3Jfc2V0X3RleHRfc2l6ZSIsImNhbWxfYXRvbWljX2xvYWQiLCJjYW1sX01ENUZpbmFsIiwiY2FtbF9tZDVfYnl0ZXMiLCJjYW1sX2JhX3NldF9nZW5lcmljIiwiY2FtbF9tbF9jb25kaXRpb25fd2FpdCIsIm11dGV4dCIsImNhbWxfc3RyaW5nX2xlc3NlcXVhbCIsImNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbCIsImNhbWxfbmV4dGFmdGVyX2Zsb2F0IiwiYml0cyIsIm9uZSIsImNhbWxfZ3Jfc2l6ZV95IiwiY2FtbF9wb3NfaW4iLCJjYW1sX21sX3Bvc19pbiIsImNhbWxfaW50NjRfYW5kIiwiY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWUiLCJjYW1sX3N5c19jb25zdF93b3JkX3NpemUiLCJjYW1sX3VuaXhfdW5saW5rIiwiY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZSIsImZzIiwiZmQyIiwiTWxGYWtlRmRfb3V0IiwiY2FtbF9zeXNfb3Blbl9pbnRlcm5hbCIsImlkeCIsImNhbWxfc3lzX29wZW4iLCJfcGVybXMiLCJjYW1sX3N0cmluZ19nZXQiLCJyZV9tYXRjaCIsInJlX3dvcmRfbGV0dGVycyIsIm9wY29kZXMiLCJpc193b3JkX2xldHRlciIsImluX2JpdHNldCIsInJlX21hdGNoX2ltcGwiLCJwYXJ0aWFsIiwicHJvZyIsImNwb29sIiwibm9ybXRhYmxlIiwibnVtZ3JvdXBzIiwibnVtcmVnaXN0ZXJzIiwic3RhcnRjaGFycyIsInBjIiwicXVpdCIsImdyb3VwcyIsInJlX3JlZ2lzdGVyIiwiYmFja3RyYWNrIiwiaXRlbSIsInB1c2giLCJhY2NlcHQiLCJwcmVmaXhfbWF0Y2giLCJvcCIsInNhcmciLCJ1YXJnIiwiZ3JvdXAiLCJFcnJvciIsInJlX3NlYXJjaF9iYWNrd2FyZCIsImNhbWxfanNfZnJvbV9zdHJpbmciLCJjYW1sX21sX291dHB1dF90YSIsImNhbWxfYmFfc3ViIiwiY2hhbmdlZF9kaW0iLCJuZXdfZGltcyIsIm5ld19kYXRhIiwiY2FtbF9nY19mdWxsX21ham9yIiwiY2FtbF9tbF9tdXRleF90cnlfbG9jayIsImNhbWxfYnl0ZXNfc2V0MzIiLCJpMzIiLCJjYW1sX2dyX3NpZ2lvX3NpZ25hbCIsImNhbWxfYmFfdWludDhfc2V0MzIiLCJjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCIsImNhbWxfdW5peF9nbXRpbWUiLCJjYW1sX3NpZ25iaXRfZmxvYXQiLCJjYW1sX2dyX2N1cnJlbnRfeCIsImNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgiLCJjYW1sX2dyX3NldF9mb250IiwiY2FtbF9ncl9zZXRfY29sb3IiLCJjb252ZXJ0IiwibnVtYmVyIiwiY19zdHIiLCJjYW1sX2dyX21vdmV0byIsImNhbWxfZ3JfcmVzaXplX3dpbmRvdyIsImNhbWxfZ3Jfc3RhdGVfaW5pdCIsImNhbWxfYmFfa2luZF9vZl90eXBlZF9hcnJheSIsInRhIiwiVWludDhDbGFtcGVkQXJyYXkiLCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkiLCJjYW1sX21sX3NlZWtfb3V0IiwiY2FtbF9qc190eXBlb2YiLCJjYW1sX2hhc2hfbWl4X3N0cmluZyIsImNhbWxfc3RyaW5nX2hhc2giLCJjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZSIsImJ0IiwiY2FtbF9ncl9saW5ldG8iLCJjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5IiwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIiwiY2FtbF9iYV9kaW1fMyIsImNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24iLCJjYW1sX2Zvcm1hdF9leGNlcHRpb24iLCJidWNrZXQiLCJzdGFydCIsImNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uIiwiaGFuZGxlciIsImF0X2V4aXQiLCJjYW1sX2VwaGVfY2hlY2tfZGF0YSIsImNhbWxfYnl0ZXNfZ2V0MTYiLCJjYW1sX29ial9tYWtlX2ZvcndhcmQiLCJjYW1sX2pzX2Zyb21fYm9vbCIsImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZSIsImNhbWxfZXhwMl9mbG9hdCIsImNhbWxfZ3JfY2xvc2VfZ3JhcGgiLCJjYW1sX21sX2RvbWFpbl9jcHVfcmVsYXgiLCJjYW1sX2NyZWF0ZV9zdHJpbmciLCJjYW1sX21kNV9jaGFuIiwidG9yZWFkIiwiY2FtbF9hdGFuaF9mbG9hdCIsImNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbCIsImNhbWxfdW5peF9maW5kbmV4dCIsImNhbWxfbWxfb3V0cHV0X2J5dGVzIiwiY2FtbF9tbF9vdXRwdXQiLCJjYW1sX21sX2RvbWFpbl9pZCIsImNhbWxfZXBoZV9nZXRfZGF0YSIsImNhbWxfeG1saHR0cHJlcXVlc3RfY3JlYXRlIiwiY2FtbF90cmFtcG9saW5lX3JldHVybiIsImNhbWxfbWxfaXNfYnVmZmVyZWQiLCJjYW1sX2FycmF5X2FwcGVuZCIsImwxIiwibDIiLCJjYW1sX3VuaXhfZ2V0dGltZW9mZGF5IiwiY2FtbF91bml4X3RpbWUiLCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbCIsImNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvciIsImNhbWxfZmlsbF9ieXRlcyIsImNhbWxfanNfZXhwciIsImNhbWxfbWxfcnVudGltZV93YXJuaW5nc19lbmFibGVkIiwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMiLCJjYW1sX2V2ZW50bG9nX3Jlc3VtZSIsImNhbWxfbWQ1X3N0cmluZyIsImNhbWxfYXJyYXlfb2Zfc3RyaW5nIiwiY2FtbF9zdHJpbmdfZXF1YWwiLCJjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZyIsImNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciIsInJlX3JlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsImN1ciIsImVuZCIsImNhbWxfcHVyZV9qc19leHByIiwiY2FtbF9ibGl0X3N0cmluZyIsImJsaXRfbmF0IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyIsImJhMSIsImJ5dGVzMiIsImNhbWxfdW5peF9zdGF0IiwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZSIsImpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuIiwiY2FtbF91bml4X3N0YXRfNjQiLCJjYW1sX3RvX2pzX3N0cmluZyIsImNhbWxfbWxfbXV0ZXhfbG9jayIsInJlX3NlYXJjaF9mb3J3YXJkIiwiY2FtbF9tYWtlX3ZlY3QiLCJpbml0IiwiY2FtbF9tbF9zZWVrX2luIiwiY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkiLCJjYW1sX21sX291dHB1dF9jaGFyIiwiY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyIiwiY2FtbF9vYmpfaXNfYmxvY2siLCJjYW1sX29ial9zZXRfcmF3X2ZpZWxkIiwiY2FtbF9qc192YXIiLCJjYW1sX3RydW5jX2Zsb2F0IiwiY2FtbF9lcGhlX3Vuc2V0X2RhdGEiLCJjYW1sX2VwaGVfc2V0X2RhdGEiLCJjYW1sX2VwaGVfYmxpdF9kYXRhIiwibGVuZ3RoX25hdCIsImNhbWxfaXNfcHJpbnRhYmxlIiwiY2FtbF9ieXRlc19sZXNzZXF1YWwiLCJjYW1sX2FycmF5X29mX2J5dGVzIiwiY2FtbF9lcXVhbCIsInJlX3BhcnRpYWxfbWF0Y2giLCJjYW1sX3N5c19yYW5kb21fc2VlZCIsIm5vdyIsImFsbF9maW5hbGl6ZXJzIiwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSIsImNiIiwiY2FtbF9iYV9nZXRfMiIsImNhbWxfYmFfdWludDhfc2V0MTYiLCJjYW1sX2xhenlfcmVzZXRfdG9fbGF6eSIsImNhbWxfanNfZGVsZXRlIiwiY2FtbF9pbnRfb2Zfc3RyaW5nIiwiY2FtbF9saXN0X21vdW50X3BvaW50IiwicHJldiIsImNhbWxfbWFyc2hhbF9jb25zdGFudHMiLCJjYW1sX29ial9yYXdfZmllbGQiLCJjYW1sX2pzX2VxdWFscyIsImNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAiLCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXkiLCJjYW1sX2dyX2FyY19hdXgiLCJjeCIsImN5IiwicnkiLCJyeCIsInJvdCIsInhQb3MiLCJ5UG9zIiwieFBvc19wcmV2IiwieVBvc19wcmV2Iiwic3BhY2UiLCJkZWx0YSIsImNhbWxfZ3JfZmlsbF9hcmMiLCJjYW1sX2JhX3NsaWNlIiwibnVtX2luZHMiLCJzdWJfZGltcyIsImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUiLCJjYW1sX2JhX2tpbmQiLCJjYW1sX2FsbG9jX2R1bW15X2luZml4IiwiY2FtbF9qc19zdHJpY3RfZXF1YWxzIiwiY2FtbF9qc19mdW5fY2FsbCIsImNhbWxfZ2NfbWFqb3Jfc2xpY2UiLCJ3b3JrIiwiY2FtbF9qc19wdXJlX2V4cHIiLCJjb21wYXJlX2RpZ2l0c19uYXQiLCJjYW1sX21sX2lucHV0IiwiY2FtbF9ncl93YWl0X2V2ZW50IiwiX2V2bCIsImNhbWxfZ3Jfc2lnaW9faGFuZGxlciIsImNhbWxfbWVtcHJvZl9kaXNjYXJkIiwiY2FtbF9oYXNoX21peF9iaWdzdHJpbmciLCJjYW1sX3JlY29yZF9iYWNrdHJhY2UiLCJjYW1sX3VuaXhfY2xlYW51cCIsImNhbWxfc3lzX2dldF9jb25maWciLCJjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUiLCJjYW1sX29ial9pc19zaGFyZWQiLCJjYW1sX21sX291dF9jaGFubmVsc19saXN0IiwiY2FtbF9hc2luaF9mbG9hdCIsImNhbWxfcG9zX291dCIsImJpZ3N0cmluZ19vZl9hcnJheV9idWZmZXIiLCJhYiIsImNhbWxfbW9kIiwiY2FtbF9iYV9pbml0IiwiY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCIsInJlX3N0cmluZ19tYXRjaCIsIkJpZ1N0cmluZ1JlYWRlciIsImNhbWxfZ3JfZHVtcF9pbWFnZSIsImNhbWxfYmFfZ2V0X2dlbmVyaWMiLCJjYW1sX3VuaXhfc3RhcnR1cCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UiLCJjYW1sX2Zvcm1hdF9mbG9hdCIsInRvRml4ZWQiLCJkcCIsInByZWMiLCJjYW1sX21vdW50X2F1dG9sb2FkIiwiY2FtbF9zdHJpbmdfbGVzc3RoYW4iLCJjYW1sX3N0cmluZ19ncmVhdGVydGhhbiIsImNhbWxfZGl2IiwiY2FtbF9vYmpfZHVwIiwiY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkiLCJjYW1sX21lbXByb2Zfc3RhcnQiLCJyYXRlIiwic3RhY2tfc2l6ZSIsInRyYWNrZXIiLCJjYW1sX3N5c19nZXRfYXJndiIsImNhbWxfbWxfZG9tYWluX3NldF9uYW1lIiwiX25hbWUiLCJjYW1sX2pzX3RvX2Jvb2wiLCJjYW1sX2dyX2NyZWF0ZV9pbWFnZSIsImNhbWxfZXBoZV9nZXRfa2V5X2NvcHkiLCJjYW1sX2xlc3N0aGFuIiwiY2FtbF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCIsImNhbWxfYnVpbGRfc3ltYm9scyIsInN5bWIiLCJjYW1sX3JlZ2lzdGVyX2dsb2JhbCIsIm5hbWVfb3B0IiwibmlkIiwibXVsdF9uYXQiLCJsZW4zIiwic3F1YXJlX25hdCIsImNhbWxfanNfZnJvbV9mbG9hdCIsImNhbWxfZmxvYXRhcnJheV9jcmVhdGUiLCJjYW1sX2djX3N0YXQiLCJjYW1sX2dldF9tYWpvcl9jcmVkaXQiLCJjYW1sX3N5c19tb2RpZnlfYXJndiIsImNhbWxfbWV0aG9kX2NhY2hlIiwiY2FtbF9nZXRfcHVibGljX21ldGhvZCIsIm9iaiIsImNhY2hlaWQiLCJtZXRocyIsImxpIiwiY2FtbF9qc19nZXRfY29uc29sZSIsImNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pbiIsInJlZmlsbCIsImNoYW5uZWwiLCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXkiLCJjYW1sX3JvdW5kX2Zsb2F0IiwiY2FtbF9vanNfbmV3X2FyciIsIkYiLCJjb21wbGVtZW50X25hdCIsImNhbWxfZG9tYWluX2RscyIsImNhbWxfZG9tYWluX2Rsc19zZXQiLCJjYW1sX29ial90YWciLCJjYW1sX2xhenlfcmVhZF9yZXN1bHQiLCJjYW1sX2pzX3JlZ2V4cHMiLCJjYW1sX2pzX2h0bWxfZXNjYXBlIiwiY2FtbF9iYV9kaW1fMiIsImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50cyIsImNhbWxfc2luaF9mbG9hdCIsImNhbWxfbGRleHBfZmxvYXQiLCJjYW1sX2dyX3N0YXRlX3NldCIsImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3QiLCJhcml0eSIsImNhbWxfZ2NfbWlub3Jfd29yZHMiLCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayIsImxhbmRfZGlnaXRfbmF0IiwiY2FtbF9pbnQ2NF9tb2QiLCJjYW1sX29ial9zZXRfdGFnIiwiY2FtbF9pbnQzMl9ic3dhcCIsImNhbWxfYmFfc2V0XzMiLCJjYW1sX2pzX2luc3RhbmNlb2YiLCJjYW1sX2dldF9tYWpvcl9idWNrZXQiLCJudGhfZGlnaXRfbmF0X25hdGl2ZSIsInNldF9kaWdpdF9uYXRfbmF0aXZlIiwiZGlnaXQiLCJjYW1sX3N0cmluZ19zZXQ2NCIsImNhbWxfZ3Jfc3RhdGVfY3JlYXRlIiwiY2FudmFzIiwiY29udGV4dCIsImNhbWxfZ3JfZHJhd19hcmMiLCJjYW1sX2JhX21hcF9maWxlIiwidmZkIiwic2hhcmVkIiwiY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZSIsImFyZ24iLCJjYW1sX2JhX2NyZWF0ZV9mcm9tIiwiZGF0YTEiLCJkYXRhMiIsImpzdHlwIiwiY2FtbF90YW5oX2Zsb2F0IiwiY2FtbF9ncl9kcmF3X3N0ciIsImR4IiwiY2FtbF9ncl9kcmF3X3N0cmluZyIsImNhbWxfZ3JfZHJhd19jaGFyIiwiY2FtbF91bm1vdW50IiwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYSIsImNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmciLCJjYW1sX21sX3Bvc19pbl82NCIsImNhbWxfZ3JfZHJhd19pbWFnZSIsImltYWdlIiwiY2FtbF9yZWdpc3Rlcl9jaGFubmVsX2Zvcl9zcGFjZXRpbWUiLCJfY2hhbm5lbCIsImNhbWxfc3RyaW5nX3NldCIsImNhbWxfc3lzX3JtZGlyIiwiY2FtbF91bml4X3N5bWxpbmsiLCJzcmNfcm9vdCIsImRzdF9yb290IiwiY2FtbF9tbF9wb3Nfb3V0IiwiY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCIsImNhbWxfYnl0ZXNfbm90ZXF1YWwiLCJjYW1sX3J1bnRpbWVfcGFyYW1ldGVycyIsImNhbWxfanNfb2JqZWN0IiwiY2FtbF9iYV9jcmVhdGUiLCJkaW1zX21sIiwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIiwiY2FtbF9mbWFfZmxvYXQiLCJTUExJVCIsIk1JTl9WQUxVRSIsIkVQU0lMT04iLCJDIiwiQSIsIkIiLCJtdWx0aXBseSIsImF0IiwiYWhpIiwiYWxvIiwiYmhpIiwiYmxvIiwiYWRqdXN0Iiwic2NhbGUiLCJ4cyIsInlzIiwienMiLCJ4eSIsInUiLCJjYW1sX3JlY29tbWVuZGVkX2RvbWFpbl9jb3VudCIsImNhbWxfYnN3YXAxNiIsImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlIiwiY2FtbF9maW5hbF9yZWdpc3RlciIsImNhbWxfZ3JfZHJhd19yZWN0IiwiY2FtbF9zdHJpbmdfZ2V0MTYiLCJjYW1sX2pzX3RvX2ludDMyIiwiY2FtbF9vdXRwdXRfdmFsdWUiLCJjYW1sX21sX291dHB1dF9iaWdhcnJheSIsImNhbWxfYmFfZ2V0XzMiLCJjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlIiwiY2FtbF9lcGhlX2JsaXRfa2V5IiwiY2FtbF9pbml0aWFsX3RpbWUiLCJjYW1sX3N5c190aW1lIiwiY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuIiwiY2FtbF9jaGVja19ib3VuZCIsImNhbWxfdW5peF9nZXRwd3VpZCIsImNhbWxfaGFzaCIsImxpbWl0Iiwic2VlZCIsInF1ZXVlIiwicmQiLCJ3ciIsImNhbWxfZG9tYWluX2Rsc19nZXQiLCJjYW1sX2J5dGVzX2dldDMyIiwiY2FtbF9mcmV4cF9mbG9hdCIsIm5lZyIsImNhbWxfc3RyaW5nX2dldDY0IiwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uIiwiY2FtbF9tbF9wb3Nfb3V0XzY0IiwiY2FtbF91bml4X2ZpbmRjbG9zZSIsImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IiwiY2FtbF9mbG9hdGFycmF5X2JsaXQiLCJjYW1sX2dldF9taW5vcl9mcmVlIiwiY2FtbF9zZXRfc3RhdGljX2VudiIsImNhbWxfYmFfY2hhbmdlX2xheW91dCIsImNhbWxfanNfbmV3IiwiY2FtbF9ncl9jdXJyZW50X3kiLCJjYW1sX2Zvcm1hdF9pbnQiLCJqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkIiwiY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuXyIsImNhbWxfbWxfZG9tYWluX3VuaXF1ZV90b2tlbiIsImNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMiLCJodmFsIiwiaGV4biIsImhlZmYiLCJjYW1sX29ial90cnVuY2F0ZSIsImNhbWxfanNfdG9fc3RyaW5nIiwiaXNfZGlnaXRfb2RkIiwiY2FtbF9ydW50aW1lX3ZhcmlhbnQiLCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXQiLCJidWZmZXJlZCIsImNhbWxfYXJyYXlfY29uY2F0IiwiY2FtbF9ncl9vcGVuX2dyYXBoIiwiaW5mbyIsInNwZWNzIiwic3RhdHVzIiwid2luIiwiZG9jIiwidGl0bGUiLCJib2R5IiwiY2FtbF9tYWtlX2Zsb2F0X3ZlY3QiLCJjYW1sX2NicnRfZmxvYXQiLCJjYW1sX2V2ZW50bG9nX3BhdXNlIiwiY2FtbF9tZW1wcm9mX3N0b3AiLCJjYW1sX2dyZWF0ZXJlcXVhbCIsImNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlIiwiY2FtbF9sb2cxcF9mbG9hdCIsImNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IiLCJjYW1sX2xhenlfbWFrZV9mb3J3YXJkIiwibG9yX2RpZ2l0X25hdCIsImNhbWxfZ3JfYmxpdF9pbWFnZSIsImltMiIsImNhbWxfZ3Jfd2luZG93X2lkIiwiY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWQiLCJjYW1sX2pzX29uX2llIiwidWEiLCJjYW1sX2ludDY0X3NoaWZ0X3JpZ2h0IiwiY2FtbF9iYV9sYXlvdXQiLCJjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImNhbWxfYXJyYXlfc2V0IiwibmV3dmFsIiwiY2FtbF9hbGxvY19zdGFjayIsImh2IiwiaHgiLCJoZiIsImNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsIiwic2V0X2RpZ2l0X25hdCIsImNhbWxfYnl0ZXNfc2V0MTYiLCJjYW1sX2dyX2RvY19vZl9zdGF0ZSIsImNhbWxfbWxfb3V0cHV0X2ludCIsImNhbWxfb2JqX3dpdGhfdGFnIiwiY2FtbF9tbF9jaGFubmVsX3NpemUiLCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCIsImNhbWxfaGV4c3RyaW5nX29mX2Zsb2F0Iiwic3R5bGUiLCJleHBfc2lnbiIsInNpZ25fc3RyIiwiY3N0IiwieF9zdHIiLCJjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUiLCJldmVudCIsImV2ZW50X2NvbnRlbnQiLCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3QiLCJjYW1sX3VuaXhfcmVhZGxpbmsiLCJjYW1sX2JhY2t0cmFjZV9zdGF0dXMiLCJjYW1sX2luc3RhbGxfc2lnbmFsX2hhbmRsZXIiLCJjYW1sX3N5c19hcmd2IiwiY2FtbF9iYV9maWxsIiwiY2FtbF9tb2RmX2Zsb2F0IiwiY2FtbF9nY19nZXQiLCJjYW1sX2Zsb2F0X2NvbXBhcmUiLCJjYW1sX3N0cmluZ19zZXQzMiIsImNhbWxfcGFyc2VfZW5naW5lIiwidGFibGVzIiwiZW52IiwiRVJSQ09ERSIsImxvb3AiLCJ0ZXN0c2hpZnQiLCJzaGlmdCIsInNoaWZ0X3JlY292ZXIiLCJyZWR1Y2UiLCJSRUFEX1RPS0VOIiwiUkFJU0VfUEFSU0VfRVJST1IiLCJHUk9XX1NUQUNLU18xIiwiR1JPV19TVEFDS1NfMiIsIkNPTVBVVEVfU0VNQU5USUNfQUNUSU9OIiwiQ0FMTF9FUlJPUl9GVU5DVElPTiIsImVudl9zX3N0YWNrIiwiZW52X3Zfc3RhY2siLCJlbnZfc3ltYl9zdGFydF9zdGFjayIsImVudl9zeW1iX2VuZF9zdGFjayIsImVudl9zdGFja3NpemUiLCJlbnZfc3RhY2tiYXNlIiwiZW52X2N1cnJfY2hhciIsImVudl9sdmFsIiwiZW52X3N5bWJfc3RhcnQiLCJlbnZfc3ltYl9lbmQiLCJlbnZfYXNwIiwiZW52X3J1bGVfbGVuIiwiZW52X3J1bGVfbnVtYmVyIiwiZW52X3NwIiwiZW52X3N0YXRlIiwiZW52X2VycmZsYWciLCJ0YmxfdHJhbnNsX2NvbnN0IiwidGJsX3RyYW5zbF9ibG9jayIsInRibF9saHMiLCJ0YmxfbGVuIiwidGJsX2RlZnJlZCIsInRibF9kZ290byIsInRibF9zaW5kZXgiLCJ0YmxfcmluZGV4IiwidGJsX2dpbmRleCIsInRibF90YWJsZXNpemUiLCJ0YmxfdGFibGUiLCJ0YmxfY2hlY2siLCJ0YmxfbmFtZXNfY29uc3QiLCJ0YmxfbmFtZXNfYmxvY2siLCJsb2ciLCJ0b2tlbl9uYW1lIiwibmFtZXMiLCJwcmludF90b2tlbiIsInRvayIsInRva2VuIiwibjEiLCJuMiIsInN0YXRlMSIsInNwIiwiZXJyZmxhZyIsImFzcCIsImNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQiLCJjYW1sX2pzb29fZmxhZ3NfZWZmZWN0cyIsImNhbWxfdXBkYXRlX2R1bW15IiwiY2FtbF9hcnJheV9maWxsIiwiY2FtbF9zeXNfbWtkaXIiLCJjYW1sX3N0cmluZ19ub3RlcXVhbCIsImNhbWxfYnl0ZXNfZ3JlYXRlcnRoYW4iLCJjYW1sX2dyX21ha2VfaW1hZ2UiLCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dCIsImNhbWxfcmVhZF9maWxlX2NvbnRlbnQiLCJjYW1sX2pzX3RvX2Zsb2F0IiwiY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsIm9yaWdpbiIsImVyYXNlX3JlbCIsInJlc3QiLCJyZXN0JDAiLCJyZXN0JDEiLCJyZXN0JDIiLCJyZXN0JDMiLCJyZXN0JDQiLCJyZXN0JDUiLCJyZXN0JDYiLCJyZXN0JDciLCJ0eSIsInJlc3QkOCIsInR5MSIsInJlc3QkOSIsInJlc3QkMTAiLCJyZXN0JDExIiwicmVzdCQxMiIsInJlc3QkMTMiLCJjb25jYXRfZm10dHkiLCJmbXR0eTEiLCJmbXR0eTIiLCJ0eTIiLCJjb25jYXRfZm10IiwiZm10MSIsImZtdDIiLCJwYWQiLCJwYWQkMCIsInByZWMiLCJwYWQkMSIsImljb252IiwicHJlYyQwIiwicGFkJDIiLCJpY29udiQwIiwicHJlYyQxIiwicGFkJDMiLCJpY29udiQxIiwicHJlYyQyIiwicGFkJDQiLCJpY29udiQyIiwicHJlYyQzIiwicGFkJDUiLCJmY29udiIsInBhZCQ2Iiwic3RyIiwiY2hyIiwiZm10dHkiLCJwYWQkNyIsImZtdHR5JDAiLCJwYWQkOCIsInJlc3QkMTQiLCJyZXN0JDE1IiwicmVzdCQxNiIsImZtdGluZ19saXQiLCJyZXN0JDE3IiwiZm10aW5nX2dlbiIsInJlc3QkMTgiLCJyZXN0JDE5IiwiY2hhcl9zZXQiLCJ3aWR0aF9vcHQiLCJyZXN0JDIwIiwiY291bnRlciIsInJlc3QkMjEiLCJyZXN0JDIyIiwiaWduIiwicmVzdCQyMyIsImYiLCJhcml0eSIsIm1ha2UiLCJ2IiwiZ2V0IiwiciIsInNldCIsImV4Y2hhbmdlIiwiY3VyIiwiY29tcGFyZV9hbmRfc2V0Iiwic2VlbiIsImZldGNoX2FuZF9hZGQiLCJuIiwiaW5jciIsImRlY3IiLCJmYWlsd2l0aCIsInMiLCJpbnZhbGlkX2FyZyIsIm1pbiIsIngiLCJ5IiwibWF4IiwiYWJzIiwibG5vdCIsImluZmluaXR5IiwibmVnX2luZmluaXR5IiwibmFuIiwibWF4X2Zsb2F0IiwibWluX2Zsb2F0IiwiZXBzaWxvbl9mbG9hdCIsIm1heF9pbnQiLCJtaW5faW50Iiwic3ltYm9sIiwiczEiLCJzMiIsImwxIiwibDIiLCJjaGFyX29mX2ludCIsInN0cmluZ19vZl9ib29sIiwiYiIsImJvb2xfb2Zfc3RyaW5nIiwiYm9vbF9vZl9zdHJpbmdfb3B0Iiwic3RyaW5nX29mX2ludCIsImludF9vZl9zdHJpbmdfb3B0IiwidmFsaWRfZmxvYXRfbGV4ZW0iLCJsIiwiaSIsImkkMCIsInN0cmluZ19vZl9mbG9hdCIsImZsb2F0X29mX3N0cmluZ19vcHQiLCJzeW1ib2wkMCIsInRsIiwiaGQiLCJzdGRpbiIsInN0ZG91dCIsInN0ZGVyciIsIm9wZW5fb3V0X2dlbiIsIm1vZGUiLCJwZXJtIiwibmFtZSIsImMiLCJvcGVuX291dCIsIm9wZW5fb3V0X2JpbiIsImZsdXNoX2FsbCIsImEiLCJvdXRwdXRfYnl0ZXMiLCJvYyIsIm91dHB1dF9zdHJpbmciLCJvdXRwdXQiLCJvZnMiLCJsZW4iLCJvdXRwdXRfc3Vic3RyaW5nIiwib3V0cHV0X3ZhbHVlIiwiY2hhbiIsImNsb3NlX291dCIsImNsb3NlX291dF9ub2VyciIsIm9wZW5faW5fZ2VuIiwib3Blbl9pbiIsIm9wZW5faW5fYmluIiwiaW5wdXQiLCJpYyIsInVuc2FmZV9yZWFsbHlfaW5wdXQiLCJvZnMkMCIsImxlbiQwIiwibGVuJDEiLCJvZnMkMSIsInJlYWxseV9pbnB1dCIsInJlYWxseV9pbnB1dF9zdHJpbmciLCJpbnB1dF9saW5lIiwiYnVpbGRfcmVzdWx0IiwiYnVmIiwicG9zJDAiLCJhY2N1IiwiYmVnIiwiYWNjdSQwIiwicmVzIiwiY2xvc2VfaW5fbm9lcnIiLCJwcmludF9jaGFyIiwicHJpbnRfc3RyaW5nIiwicHJpbnRfYnl0ZXMiLCJwcmludF9pbnQiLCJwcmludF9mbG9hdCIsInByaW50X2VuZGxpbmUiLCJwcmludF9uZXdsaW5lIiwicHJlcnJfY2hhciIsInByZXJyX3N0cmluZyIsInByZXJyX2J5dGVzIiwicHJlcnJfaW50IiwicHJlcnJfZmxvYXQiLCJwcmVycl9lbmRsaW5lIiwicHJlcnJfbmV3bGluZSIsInJlYWRfbGluZSIsInJlYWRfaW50IiwicmVhZF9pbnRfb3B0IiwicmVhZF9mbG9hdCIsInJlYWRfZmxvYXRfb3B0Iiwic3RyaW5nX29mX2Zvcm1hdCIsInN5bWJvbCQxIiwic3RyMiIsInN0cjEiLCJleGl0X2Z1bmN0aW9uIiwiYXRfZXhpdCIsImZfeWV0X3RvX3J1biIsIm9sZF9leGl0IiwiZl95ZXRfdG9fcnVuJDAiLCJvbGRfZXhpdCQwIiwibmV3X2V4aXQiLCJzdWNjZXNzIiwiZG9fYXRfZXhpdCIsImV4aXQiLCJyZXRjb2RlIiwiZmx1c2giLCJvdXRwdXRfY2hhciIsIm91dHB1dF9ieXRlIiwib3V0cHV0X2JpbmFyeV9pbnQiLCJzZWVrX291dCIsInBvc19vdXQiLCJvdXRfY2hhbm5lbF9sZW5ndGgiLCJzZXRfYmluYXJ5X21vZGVfb3V0IiwiaW5wdXRfY2hhciIsImlucHV0X2J5dGUiLCJpbnB1dF9iaW5hcnlfaW50IiwiaW5wdXRfdmFsdWUiLCJzZWVrX2luIiwicG9zX2luIiwiaW5fY2hhbm5lbF9sZW5ndGgiLCJjbG9zZV9pbiIsInNldF9iaW5hcnlfbW9kZV9pbiIsImVtcHR5IiwicmV0dXJuJDAiLCJjb25zIiwibmV4dCIsImFwcGVuZCIsInNlcTEiLCJzZXEyIiwibWFwIiwic2VxIiwiZmlsdGVyX21hcCIsInNlcSQwIiwiZmlsdGVyIiwiY29uY2F0IiwiZmxhdF9tYXAiLCJmb2xkX2xlZnQiLCJhY2MiLCJhY2MkMCIsImFjYyQxIiwiaXRlciIsInVuZm9sZCIsInUiLCJ1JDAiLCJub25lIiwic29tZSIsInZhbHVlIiwibyIsImRlZmF1bHQkMCIsImJpbmQiLCJqb2luIiwiZm9sZCIsImlzX25vbmUiLCJpc19zb21lIiwiZXF1YWwiLCJlcSIsIm8wIiwibzEiLCJ2MSIsInYwIiwiY29tcGFyZSIsImNtcCIsInRvX3Jlc3VsdCIsInRvX2xpc3QiLCJ0b19zZXEiLCJsZWZ0IiwicmlnaHQiLCJpc19sZWZ0IiwiaXNfcmlnaHQiLCJmaW5kX2xlZnQiLCJmaW5kX3JpZ2h0IiwibWFwX2xlZnQiLCJlIiwibWFwX3JpZ2h0IiwidiQwIiwiZTEiLCJlMiIsInYyIiwidjEkMCIsInYyJDAiLCJvayIsImVycm9yIiwiZ2V0X29rIiwiZ2V0X2Vycm9yIiwibWFwX2Vycm9yIiwiaXRlcl9lcnJvciIsImlzX29rIiwiaXNfZXJyb3IiLCJyMCIsInIxIiwiZTAiLCJ0b19vcHRpb24iLCJ0b19mbG9hdCIsInRvX3N0cmluZyIsImVzY2FwZWQiLCJzJDAiLCJsb3dlcmNhc2UiLCJ1cHBlcmNhc2UiLCJsb3dlcmNhc2VfYXNjaWkiLCJ1cHBlcmNhc2VfYXNjaWkiLCJjMSIsImMyIiwiZXJyX25vX3ByZWQiLCJlcnJfbm9fc3VjYyIsImxvX2JvdW5kIiwiaGlfYm91bmQiLCJib20iLCJyZXAiLCJzdWNjIiwicHJlZCIsImlzX3ZhbGlkIiwib2ZfaW50IiwiaXNfY2hhciIsIm9mX2NoYXIiLCJ0b19jaGFyIiwidW5zYWZlX3RvX2NoYXIiLCJoYXNoIiwibGVuZ3RoIiwibCQwIiwibnRoIiwibiQwIiwibCQxIiwibiQxIiwibnRoX29wdCIsInJldl9hcHBlbmQiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJsMiQxIiwicmV2IiwiaW5pdF9hdXgiLCJyZXZfaW5pdF90aHJlc2hvbGQiLCJpbml0IiwiZmxhdHRlbiIsIm1hcGkiLCJyZXZfbWFwIiwiaXRlcmkiLCJhY2N1JDEiLCJmb2xkX3JpZ2h0IiwibWFwMiIsImEyIiwiYTEiLCJyZXZfbWFwMiIsIml0ZXIyIiwiZm9sZF9sZWZ0MiIsImZvbGRfcmlnaHQyIiwiZm9yX2FsbCIsInAiLCJleGlzdHMiLCJmb3JfYWxsMiIsImV4aXN0czIiLCJtZW0iLCJtZW1xIiwiYXNzb2MiLCJhc3NvY19vcHQiLCJhc3NxIiwiYXNzcV9vcHQiLCJtZW1fYXNzb2MiLCJtZW1fYXNzcSIsInJlbW92ZV9hc3NvYyIsInBhaXIiLCJyZW1vdmVfYXNzcSIsImZpbmQiLCJmaW5kX29wdCIsImZpbmRfbWFwIiwicmVzdWx0IiwiZmluZF9hbGwiLCJmaWx0ZXJpIiwiY29uY2F0X21hcCIsInhzIiwiZm9sZF9sZWZ0X21hcCIsImxfYWNjdSIsIngkMCIsInBhcnRpdGlvbiIsInllcyIsIm5vIiwicGFydGl0aW9uX21hcCIsInNwbGl0IiwicnkiLCJyeCIsImNvbWJpbmUiLCJtZXJnZSIsInQyIiwiaDIiLCJ0MSIsImgxIiwic3RhYmxlX3NvcnQiLCJzb3J0IiwieDIiLCJ4MSIsInRsJDEiLCJ4MyIsIngyJDAiLCJ4MSQwIiwibjEiLCJuMiIsInJldl9zb3J0IiwidGwkMCIsInNvcnRfdW5pcSIsImMkMCIsImMkMSIsImMkMiIsImMkMyIsImMkNCIsImMkNSIsImMkNiIsImFjY3UkMiIsImNvbXBhcmVfbGVuZ3RocyIsImNvbXBhcmVfbGVuZ3RoX3dpdGgiLCJhdXgiLCJ0YWlsIiwib2Zfc2VxIiwiZGlyZWN0IiwiZGVwdGgiLCJ6ZXJvIiwib25lIiwibWludXNfb25lIiwibG9nbm90IiwiY29weSIsIm9mX3N0cmluZyIsInN1YiIsInN1Yl9zdHJpbmciLCJleHRlbmQiLCJkc3RvZmYiLCJzcmNvZmYiLCJjcHlsZW4iLCJmaWxsIiwiYmxpdCIsIm9mczEiLCJvZnMyIiwiYmxpdF9zdHJpbmciLCJzZXAiLCJzZXBsZW4iLCJkc3QiLCJwb3MiLCJoZCQwIiwiY2F0IiwiaXNfc3BhY2UiLCJ0cmltIiwiaiIsImFwcGx5MSIsImNhcGl0YWxpemVfYXNjaWkiLCJ1bmNhcGl0YWxpemVfYXNjaWkiLCJzdGFydHNfd2l0aCIsInByZWZpeCIsImxlbl9zIiwibGVuX3ByZSIsImVuZHNfd2l0aCIsInN1ZmZpeCIsImxlbl9zdWYiLCJkaWZmIiwiaW5kZXhfcmVjIiwibGltIiwiaSQxIiwiaW5kZXgiLCJpbmRleF9yZWNfb3B0IiwiaW5kZXhfb3B0IiwiaW5kZXhfZnJvbSIsImluZGV4X2Zyb21fb3B0IiwicmluZGV4X3JlYyIsInJpbmRleCIsInJpbmRleF9mcm9tIiwicmluZGV4X3JlY19vcHQiLCJyaW5kZXhfb3B0IiwicmluZGV4X2Zyb21fb3B0IiwiY29udGFpbnNfZnJvbSIsImNvbnRhaW5zIiwicmNvbnRhaW5zX2Zyb20iLCJzcGxpdF9vbl9jaGFyIiwiY2FwaXRhbGl6ZSIsInVuY2FwaXRhbGl6ZSIsInRvX3NlcWkiLCJuZXdfbGVuIiwibmV3X2J1ZiIsImdldF9pbnQ4IiwiZ2V0X3VpbnQxNl9sZSIsImdldF91aW50MTZfYmUiLCJnZXRfaW50MTZfbmUiLCJnZXRfaW50MTZfbGUiLCJnZXRfaW50MTZfYmUiLCJnZXRfaW50MzJfbGUiLCJnZXRfaW50MzJfYmUiLCJnZXRfaW50NjRfbGUiLCJnZXRfaW50NjRfYmUiLCJzZXRfaW50MTZfbGUiLCJzZXRfaW50MTZfYmUiLCJzZXRfaW50MzJfbGUiLCJzZXRfaW50MzJfYmUiLCJzZXRfaW50NjRfbGUiLCJzZXRfaW50NjRfYmUiLCJzZXRfdWludDgiLCJzZXRfdWludDE2X25lIiwiYnRzIiwiYm9zIiwib2ZfYnl0ZXMiLCJ0b19ieXRlcyIsImciLCJ0b19idWZmZXIiLCJidWZmIiwiZmxhZ3MiLCJoZWFkZXJfc2l6ZSIsImRhdGFfc2l6ZSIsInRvdGFsX3NpemUiLCJmcm9tX2J5dGVzIiwiZnJvbV9zdHJpbmciLCJpc19ibG9jayIsImRvdWJsZV9maWVsZCIsInNldF9kb3VibGVfZmllbGQiLCJtYXJzaGFsIiwib2JqIiwidW5tYXJzaGFsIiwiY3VzdG9tX3RhZyIsImZpcnN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3RvciIsImxhc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yXyIsImxhenlfdGFnIiwiY2xvc3VyZV90YWciLCJvYmplY3RfdGFnIiwiaW5maXhfdGFnIiwiZm9yd2FyZF90YWciLCJub19zY2FuX3RhZyIsImFic3RyYWN0X3RhZyIsInN0cmluZ190YWciLCJkb3VibGVfdGFnIiwiZG91YmxlX2FycmF5X3RhZyIsImludF90YWciLCJvdXRfb2ZfaGVhcF90YWciLCJ1bmFsaWduZWRfdGFnIiwiaW5mbyIsInN0YXJ0X2VudiIsIm9mX3ZhbCIsInNsb3QiLCJpZCIsImV4dGVuc2lvbl9jb25zdHJ1Y3RvciIsImV4dGVuc2lvbl9uYW1lIiwiZXh0ZW5zaW9uX2lkIiwibWF4X2VwaGVfbGVuZ3RoIiwiY3JlYXRlIiwicmFpc2VfaWZfaW52YWxpZF9vZmZzZXQiLCJtc2ciLCJnZXRfa2V5IiwiZ2V0X2tleV9jb3B5Iiwic2V0X2tleSIsInVuc2V0X2tleSIsImNoZWNrX2tleSIsImJsaXRfa2V5IiwibzIiLCJtYWtlX2Zsb2F0IiwibWFrZV9tYXRyaXgiLCJzeCIsInN5IiwibGEiLCJsYiIsInJlcyQwIiwibGlzdF9sZW5ndGgiLCJ0Iiwib2ZfbGlzdCIsImlucHV0X2FycmF5IiwiZWx0Iiwib3V0cHV0X2FycmF5IiwiZWx0JDAiLCJhY2MkMiIsImIwIiwiYTAiLCJiaSIsImFpIiwibmEiLCJuYiIsIm1heHNvbiIsImkzMSIsImkkNiIsImUkMSIsImkkNCIsImUkMCIsImkkNSIsImokMCIsImkkMiIsImkkMyIsImZhdGhlciIsInNyYzFvZnMiLCJzcmMxbGVuIiwic3JjMiIsInNyYzJvZnMiLCJzcmMybGVuIiwiZHN0b2ZzIiwic3JjMXIiLCJzcmMyciIsInMyJDEiLCJzMSQxIiwiaTEiLCJpMiIsImQiLCJpMiQwIiwiZCQwIiwiczIkMCIsImkxJDAiLCJkJDEiLCJzMSQwIiwiaXNvcnR0byIsInNyY29mcyIsInNvcnR0byIsImlzX2Zpbml0ZSIsImlzX2luZmluaXRlIiwiaXNfbmFuIiwiZXBzaWxvbiIsIm9mX3N0cmluZ19vcHQiLCJwaSIsImlzX2ludGVnZXIiLCJtaW5fbWF4IiwibWluX251bSIsIm1heF9udW0iLCJtaW5fbWF4X251bSIsInVuc2FmZV9maWxsIiwiY2hlY2siLCJobGVuIiwic3JjIiwic29mcyIsImRvZnMiLCJoIiwibWVtX2llZWUiLCJtYXBfdG9fYXJyYXkiLCJtYXBfZnJvbV9hcnJheSIsIm1heF9pbnQkMCIsInVuc2lnbmVkX3RvX2ludCIsInVuc2lnbmVkX2NvbXBhcmUiLCJtIiwidW5zaWduZWRfZGl2IiwicSIsInVuc2lnbmVkX3JlbSIsInNpemUiLCJkdW1teV9wb3MiLCJ6ZXJvX3BvcyIsImVuZ2luZSIsInRibCIsInN0YXRlIiwibmV3X2VuZ2luZSIsImZyb21fZnVuY3Rpb24iLCJvcHQiLCJyZWFkX2Z1biIsInN0aCIsIndpdGhfcG9zaXRpb25zIiwiYXV4X2J1ZmZlciIsImxleGJ1ZiIsInJlYWQiLCJuZXdsZW4iLCJuZXdidWYiLCJmcm9tX2NoYW5uZWwiLCJzZXRfcG9zaXRpb24iLCJwb3NpdGlvbiIsInNldF9maWxlbmFtZSIsImZuYW1lIiwibGV4ZW1lIiwic3ViX2xleGVtZSIsInN1Yl9sZXhlbWVfb3B0Iiwic3ViX2xleGVtZV9jaGFyIiwic3ViX2xleGVtZV9jaGFyX29wdCIsImxleGVtZV9jaGFyIiwibGV4ZW1lX3N0YXJ0IiwibGV4ZW1lX2VuZCIsImxleGVtZV9zdGFydF9wIiwibGV4ZW1lX2VuZF9wIiwibmV3X2xpbmUiLCJsY3AiLCJmbHVzaF9pbnB1dCIsImVudiIsImdyb3dfc3RhY2tzIiwib2xkc2l6ZSIsIm5ld3NpemUiLCJuZXdfcyIsIm5ld192IiwibmV3X3N0YXJ0IiwibmV3X2VuZCIsImNsZWFyX3BhcnNlciIsImN1cnJlbnRfbG9va2FoZWFkX2Z1biIsInl5cGFyc2UiLCJ0YWJsZXMiLCJzdGFydCIsImxleGVyIiwiaW5pdF9hc3AiLCJpbml0X3NwIiwiaW5pdF9zdGFja2Jhc2UiLCJpbml0X3N0YXRlIiwiaW5pdF9jdXJyX2NoYXIiLCJpbml0X2x2YWwiLCJpbml0X2VycmZsYWciLCJjbWQiLCJhcmciLCJhcmckMCIsImFjdGlvbiIsImV4biQwIiwiZXhuIiwiY3Vycl9jaGFyIiwidG9rIiwicGVla192YWwiLCJzeW1ib2xfc3RhcnRfcG9zIiwic3QiLCJlbiIsInN5bWJvbF9lbmRfcG9zIiwicmhzX3N0YXJ0X3BvcyIsInJoc19lbmRfcG9zIiwic3ltYm9sX3N0YXJ0Iiwic3ltYm9sX2VuZCIsInJoc19zdGFydCIsInJoc19lbmQiLCJpc19jdXJyZW50X2xvb2thaGVhZCIsInBhcnNlX2Vycm9yIiwiaGVpZ2h0IiwiaGwiLCJoJDAiLCJociIsImJhbCIsImxyIiwibHYiLCJsbCIsImxyciIsImxydiIsImxybCIsInJyIiwicnYiLCJybCIsInJsciIsInJsdiIsInJsbCIsImFkZCIsInNpbmdsZXRvbiIsImFkZF9taW5fZWxlbWVudCIsImFkZF9tYXhfZWxlbWVudCIsInJoIiwibGgiLCJtaW5fZWx0IiwibWluX2VsdF9vcHQiLCJtYXhfZWx0IiwibWF4X2VsdF9vcHQiLCJyZW1vdmVfbWluX2VsdCIsInIkMCIsInByZXMiLCJwcmVzJDAiLCJpc19lbXB0eSIsInJlbW92ZSIsInVuaW9uIiwicjIiLCJyMiQwIiwicjEkMCIsImludGVyIiwic3BsaXRfYmlzIiwiZGlzam9pbnQiLCJjb25zX2VudW0iLCJlMiQyIiwiZTEkMiIsImUyJDAiLCJlMSQwIiwiZTIkMSIsImUxJDEiLCJzdWJzZXQiLCJwdiIsImxmIiwibHQiLCJyZiIsInJ0IiwiY2FyZGluYWwiLCJlbGVtZW50c19hdXgiLCJlbGVtZW50cyIsImZpbmRfZmlyc3QiLCJ2MCQxIiwidjAkMCIsImZpbmRfZmlyc3Rfb3B0IiwiZmluZF9sYXN0IiwiZmluZF9sYXN0X29wdCIsInRyeV9qb2luIiwidiQxIiwieDAiLCJsJDMiLCJsJDQiLCJ4MCQwIiwibCQ1IiwieDAkMSIsIm5sIiwibWlkIiwibCQyIiwieDQiLCJhZGRfc2VxIiwic2VxX29mX2VudW0iLCJzbm9jX2VudW0iLCJyZXZfc2VxX29mX2VudW0iLCJ0b19yZXZfc2VxIiwidG9fc2VxX2Zyb20iLCJsb3ciLCJsZCIsImxyZCIsInJkIiwicmxkIiwiZGF0YSIsImQwJDEiLCJkMCIsImQwJDAiLCJtaW5fYmluZGluZyIsIm1pbl9iaW5kaW5nX29wdCIsIm1heF9iaW5kaW5nIiwibWF4X2JpbmRpbmdfb3B0IiwicmVtb3ZlX21pbl9iaW5kaW5nIiwidXBkYXRlIiwiZGF0YSQwIiwibSQwIiwiYWRkX21pbl9iaW5kaW5nIiwiayIsImFkZF9tYXhfYmluZGluZyIsImNvbmNhdF9vcl9qb2luIiwiZDEiLCJkMiIsImQyJDAiLCJkMSQwIiwiZDIkMSIsImQxJDEiLCJwdmQiLCJmdmQiLCJtMSIsIm0yIiwiYmluZGluZ3NfYXV4IiwiYmluZGluZ3MiLCJjbGVhciIsInB1c2giLCJwb3AiLCJwb3Bfb3B0IiwidG9wIiwidG9wX29wdCIsImNlbGwiLCJtYXRjaCIsInBlZWsiLCJjb250ZW50IiwicGVla19vcHQiLCJ0YWtlIiwidGFrZV9vcHQiLCJjZWxsJDAiLCJxX3JlcyIsInByZXYiLCJwcmV2JDAiLCJ0cmFuc2ZlciIsInExIiwicTIiLCJyYWlzZV91bmRlZmluZWQiLCJmb3JjZV9sYXp5X2Jsb2NrIiwiYmxrIiwiY2xvc3VyZSIsImZvcmNlX3ZhbF9sYXp5X2Jsb2NrIiwiZm9yY2UiLCJsenYiLCJmb3JjZV92YWwiLCJmcm9tX2Z1biIsImZyb21fdmFsIiwiaXNfdmFsIiwibWFwX3ZhbCIsImNvdW50IiwiZmlsbF9idWZmIiwiZ2V0X2RhdGEiLCJkMTEiLCJhJDAiLCJhJDEiLCJwZWVrX2RhdGEiLCJqdW5rX2RhdGEiLCJqdW5rIiwibmdldF9kYXRhIiwiYWwiLCJucGVlayIsInN0cm0iLCJmcm9tIiwib2ZfY2hhbm5lbCIsImlhcHAiLCJpY29ucyIsImlzaW5nIiwibGFwcCIsImxjb25zIiwibHNpbmciLCJzZW1wdHkiLCJzbGF6eSIsImR1bXAiLCJkdW1wX2RhdGEiLCJjb250ZW50cyIsInJlc2V0IiwicmVzaXplIiwibW9yZSIsIm9sZF9wb3MiLCJvbGRfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3V0Zl84X3VjaGFyIiwicG9zJDEiLCJhZGRfdXRmXzE2YmVfdWNoYXIiLCJ1JDEiLCJoaSIsImxvIiwiYWRkX3V0Zl8xNmxlX3VjaGFyIiwiYWRkX3N1YnN0cmluZyIsIm9mZnNldCIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJhZGRfYnl0ZXMiLCJhZGRfYnVmZmVyIiwiYnMiLCJhZGRfY2hhbm5lbCIsInRvX3JlYWQkMSIsImFscmVhZHlfcmVhZCIsInRvX3JlYWQiLCJhbHJlYWR5X3JlYWQkMCIsInRvX3JlYWQkMCIsIm91dHB1dF9idWZmZXIiLCJhZGRfc3Vic3RpdHV0ZSIsImxpbSQxIiwicHJldmlvdXMiLCJwcmV2aW91cyQwIiwic3RhcnQkMCIsIm9wZW5pbmciLCJsaW0kMCIsInN0b3AkMCIsImskMiIsImNsb3NpbmciLCJzdG9wIiwiayQwIiwiayQxIiwibmV4dF9pIiwiaWRlbnQiLCJpJDciLCJpJDgiLCJ0cnVuY2F0ZSIsImFkZF9pbnQ4IiwiYWRkX2ludDE2X25lIiwiYWRkX2ludDMyX25lIiwiYWRkX2ludDY0X25lIiwiYWRkX2ludDE2X2xlIiwiYWRkX2ludDE2X2JlIiwiYWRkX2ludDMyX2xlIiwiYWRkX2ludDMyX2JlIiwiYWRkX2ludDY0X2xlIiwiYWRkX2ludDY0X2JlIiwic3ViX2Zvcm1hdCIsImZvcm1hdHRpbmdfbGl0IiwiY3JlYXRlX2NoYXJfc2V0IiwiYWRkX2luX2NoYXJfc2V0Iiwic3RyX2luZCIsIm1hc2siLCJmcmVlemVfY2hhcl9zZXQiLCJyZXZfY2hhcl9zZXQiLCJjaGFyX3NldCQwIiwiaXNfaW5fY2hhcl9zZXQiLCJwYWRfb2ZfcGFkX29wdCIsInBhZF9vcHQiLCJ3aWR0aCIsInBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdCIsImZtdCIsInBhZF9vcHQkMCIsInBhZF9vcHQkMSIsInBhZF9vcHQkMiIsInBhZF9vcHQkMyIsInBhZF9vcHQkNCIsInByZWNfb3B0IiwicGFkX29wdCQ1IiwibmRlYyIsInBhZF9vcHQkNiIsInBhZF9vcHQkNyIsInBhZF9vcHQkOCIsImRlZmF1bHRfZmxvYXRfcHJlY2lzaW9uIiwiYnVmZmVyX2NyZWF0ZSIsImluaXRfc2l6ZSIsImJ1ZmZlcl9jaGVja19zaXplIiwib3ZlcmhlYWQiLCJtaW5fbGVuIiwibmV3X3N0ciIsImJ1ZmZlcl9hZGRfY2hhciIsImJ1ZmZlcl9hZGRfc3RyaW5nIiwic3RyX2xlbiIsImJ1ZmZlcl9jb250ZW50cyIsImNoYXJfb2ZfaWNvbnYiLCJjaGFyX29mX2Zjb252IiwiY0YiLCJicHJpbnRfcGFkdHkiLCJwYWR0eSIsImJwcmludF9pZ25vcmVkX2ZsYWciLCJpZ25fZmxhZyIsImJwcmludF9wYWRfb3B0IiwiYnByaW50X3BhZGRpbmciLCJwYWR0eSQwIiwiYnByaW50X3ByZWNpc2lvbiIsImJwcmludF9pY29udl9mbGFnIiwiYnByaW50X2FsdGludF9mbXQiLCJicHJpbnRfZmNvbnZfZmxhZyIsInN0cmluZ19vZl9mb3JtYXR0aW5nX2xpdCIsInN0ciQwIiwiYnByaW50X2NoYXJfbGl0ZXJhbCIsImJwcmludF9zdHJpbmdfbGl0ZXJhbCIsImJwcmludF9mbXR0eSIsImZtdHR5JDEiLCJmbXR0eSQyIiwiZm10dHkkMyIsImZtdHR5JDQiLCJmbXR0eSQ1IiwiZm10dHkkNiIsImZtdHR5JDciLCJmbXR0eSQ4IiwiZm10dHkkOSIsInN1Yl9mbXR0eSIsImZtdHR5JDEwIiwic3ViX2ZtdHR5JDAiLCJmbXR0eSQxMSIsImZtdHR5JDEyIiwiZm10dHkkMTMiLCJmbXR0eSQxNCIsImZtdHR5JDE1IiwiaW50X29mX2N1c3RvbV9hcml0eSIsInN0cmluZ19vZl9mbXQiLCJmbXRpdGVyIiwiZm10JDAiLCJpZ25fZmxhZyQwIiwic3RyJDEiLCJzZXQkMCIsImlzX2Fsb25lIiwiYWZ0ZXIiLCJiZWZvcmUiLCJqJDEiLCJmbXQkMSIsInN5bW0iLCJmbXR0eV9yZWxfZGV0IiwiZGUiLCJlZCIsImFmIiwiZmEiLCJkZSQwIiwiZWQkMCIsImFmJDAiLCJmYSQwIiwiZGUkMSIsImVkJDEiLCJhZiQxIiwiZmEkMSIsImRlJDIiLCJlZCQyIiwiYWYkMiIsImZhJDIiLCJkZSQzIiwiZWQkMyIsImFmJDMiLCJmYSQzIiwiZGUkNCIsImVkJDQiLCJhZiQ0IiwiZmEkNCIsImRlJDUiLCJlZCQ1IiwiYWYkNSIsImZhJDUiLCJkZSQ2IiwiZWQkNiIsImFmJDYiLCJmYSQ2IiwiZGUkNyIsImVkJDciLCJhZiQ3IiwiZmEkNyIsImRlJDgiLCJlZCQ4IiwiYWYkOCIsImZhJDgiLCJ0cmFucyIsImpkIiwiZGoiLCJnYSIsImFnIiwiZGUkOSIsImVkJDkiLCJhZiQ5IiwiZmEkOSIsImRlJDEwIiwiZWQkMTAiLCJhZiQxMCIsImZhJDEwIiwiZGUkMTEiLCJlZCQxMSIsImFmJDExIiwiZmEkMTEiLCJkZSQxMiIsImVkJDEyIiwiYWYkMTIiLCJmYSQxMiIsImRlJDEzIiwiZWQkMTMiLCJhZiQxMyIsImZhJDEzIiwicmVzdDEiLCJyZXN0MiIsInJlc3QxJDAiLCJyZXN0MiQwIiwicmVzdDEkMSIsInJlc3QyJDEiLCJyZXN0MSQyIiwicmVzdDIkMiIsInJlc3QxJDMiLCJyZXN0MiQzIiwicmVzdDEkNCIsInJlc3QyJDQiLCJyZXN0MSQ1IiwicmVzdDIkNSIsInJlc3QxJDYiLCJyZXN0MiQ2IiwicmVzdDEkNyIsInR5MSQwIiwicmVzdDIkNyIsInR5MiQwIiwicmVzdDEkOCIsInR5MTIiLCJ0eTExIiwicmVzdDIkOCIsInR5MjIiLCJ0eTIxIiwiZjQiLCJmMiIsInJlc3QxJDkiLCJyZXN0MiQ5IiwicmVzdDEkMTAiLCJyZXN0MiQxMCIsInJlc3QxJDExIiwicmVzdDIkMTEiLCJyZXN0MSQxMiIsInJlc3QyJDEyIiwicmVzdDEkMTMiLCJyZXN0MiQxMyIsImZtdHR5X29mX2ZtdCIsImZtdHR5X29mX3BhZGRpbmdfZm10dHkiLCJ0eV9yZXN0IiwicHJlY190eSIsImZtdHR5X29mX3ByZWNpc2lvbl9mbXR0eSIsInR5X3Jlc3QkMCIsInByZWNfdHkkMCIsInR5X3Jlc3QkMSIsInByZWNfdHkkMSIsInR5X3Jlc3QkMiIsInByZWNfdHkkMiIsInR5X3Jlc3QkMyIsInByZWNfdHkkMyIsInR5JDAiLCJmb3JtYXR0aW5nX2dlbiIsImZtdHR5X29mX2N1c3RvbSIsImFyaXR5JDAiLCJ0eXBlX3BhZGRpbmciLCJ3IiwidHlwZV9wYWRwcmVjIiwidHlwZV9mb3JtYXQiLCJ0eXBlX2Zvcm1hdF9nZW4iLCJmbXR0eTAiLCJmbXR0eV9yZXN0IiwiZm10X3Jlc3QiLCJmbXR0eV9yZXN0JDAiLCJmbXRfcmVzdCQwIiwiZm10X3Jlc3QkMSIsImZtdHR5X3Jlc3QkMSIsImZtdCQyIiwiZm10X3Jlc3QkMiIsImZtdHR5X3Jlc3QkMiIsImZtdCQzIiwiZm10X3Jlc3QkMyIsImZtdHR5X3Jlc3QkMyIsImZtdCQ0IiwiZm10X3Jlc3QkNCIsImZtdHR5X3Jlc3QkNCIsImZtdCQ1IiwiZm10X3Jlc3QkNSIsImZtdHR5X3Jlc3QkNSIsInByZWMkNCIsImZtdCQ2IiwiZm10X3Jlc3QkNiIsInByZWMkNSIsInBhZCQ5IiwicGFkJDEwIiwiZm10dHlfcmVzdCQ2IiwicHJlYyQ2IiwiZm10JDciLCJmbXRfcmVzdCQ3IiwicHJlYyQ3IiwicGFkJDExIiwicGFkJDEyIiwiZm10dHlfcmVzdCQ3IiwicHJlYyQ4IiwiZm10JDgiLCJmbXRfcmVzdCQ4IiwicGFkJDEzIiwicGFkJDE0IiwiZm10dHlfcmVzdCQ4IiwiZm10JDkiLCJmbXRfcmVzdCQ5IiwiZm10JDEwIiwiZm10X3Jlc3QkMTAiLCJmbXQkMTEiLCJmbXRfcmVzdCQxMSIsImZtdCQxMiIsImZtdHR5X3Jlc3QkOSIsImZtdF9yZXN0JDEyIiwiZm10JDEzIiwiZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eTEiLCJmbXRfcmVzdCQxMyIsInN1Yl9mbXR0eSQxIiwiZm10JDE0IiwiZm10dHlfcmVzdCQxMSIsImZtdF9yZXN0JDE0IiwiZm10JDE1IiwiZm10dHlfcmVzdCQxMiIsImZtdF9yZXN0JDE1IiwiZm10JDE2IiwiZm10X3Jlc3QkMTYiLCJmbXR0eSQxNiIsImZtdCQxNyIsImZtdF9yZXN0JDE3IiwiZm10dHkzIiwiZm10MyIsImZtdDEkMCIsImZtdHR5MiQwIiwiZm10MiQwIiwiZm10dHkzJDAiLCJmbXQzJDAiLCJmbXR0eV9yZXN0JDEzIiwiZm10X3Jlc3QkMTgiLCJmbXR0eSQxNyIsImZtdCQxOCIsImZtdHR5X3Jlc3QkMTQiLCJmbXRfcmVzdCQxOSIsImZtdHR5JDE4IiwiZm10JDE5IiwiZm10dHlfcmVzdCQxNSIsImZtdF9yZXN0JDIwIiwiZm10dHkkMTkiLCJmbXQkMjAiLCJ0eXBlX2lnbm9yZWRfcGFyYW1fb25lIiwic3ViX2ZtdHR5JDIiLCJzdWJfZm10dHkkMyIsInR5cGVfaWdub3JlZF9mb3JtYXRfc3Vic3RpdHV0aSIsImZtdHR5JDIxIiwiZm10JDIyIiwic3ViX2ZtdHR5JDQiLCJmbXR0eV9yZXN0JDE2IiwiZm10dHkkMjAiLCJmbXQkMjEiLCJzdWJfZm10dHlfcmVzdCIsInN1Yl9mbXR0eV9yZXN0JDAiLCJzdWJfZm10dHlfcmVzdCQxIiwic3ViX2ZtdHR5X3Jlc3QkMiIsInN1Yl9mbXR0eV9yZXN0JDMiLCJzdWJfZm10dHlfcmVzdCQ0Iiwic3ViX2ZtdHR5X3Jlc3QkNSIsInN1Yl9mbXR0eV9yZXN0JDYiLCJzdWJfZm10dHlfcmVzdCQ3Iiwic3ViX2ZtdHR5X3Jlc3QkOCIsInN1Yl9mbXR0eV9yZXN0JDkiLCJzdWJfZm10dHlfcmVzdCQxMCIsInN1Yl9mbXR0eV9yZXN0JDExIiwic3ViX2ZtdHR5X3Jlc3QkMTIiLCJzdWJfZm10dHlfcmVzdCQxMyIsInN1Yl9mbXR0eV9yZXN0JDE0Iiwic3ViMl9mbXR0eSIsInN1Yl9mbXR0eV9yZXN0JDE1Iiwic3ViMl9mbXR0eSQwIiwic3ViX2ZtdHR5X3Jlc3QkMTYiLCJzdWIyX2ZtdHR5JDEiLCJzdWIxX2ZtdHR5Iiwic3ViX2ZtdHR5X3Jlc3QkMTciLCJzdWIyX2ZtdHR5JDIiLCJzdWIxX2ZtdHR5JDAiLCJzdWJfZm10dHlfcmVzdCQxOCIsInN1Yl9mbXR0eV9yZXN0JDE5Iiwic3ViX2ZtdHR5X3Jlc3QkMjAiLCJzdWJfZm10dHlfcmVzdCQyMSIsInN1Yl9mbXR0eV9yZXN0JDIyIiwic3ViX2ZtdHR5X3Jlc3QkMjMiLCJzdWJfZm10dHlfcmVzdCQyNCIsInN1Yl9mbXR0eV9yZXN0JDI1Iiwic3ViX2ZtdHR5X3Jlc3QkMjYiLCJyZWNhc3QiLCJmaXhfcGFkZGluZyIsIndpZHRoJDAiLCJmaXhfaW50X3ByZWNpc2lvbiIsInJlcyQxIiwic3RyaW5nX3RvX2NhbWxfc3RyaW5nIiwiZm9ybWF0X29mX2Zjb252Iiwic3ltYiIsInRyYW5zZm9ybV9pbnRfYWx0IiwiZGlnaXRzIiwicHV0IiwiY29udmVydF9pbnQiLCJjb252ZXJ0X2ludDMyIiwiY29udmVydF9uYXRpdmVpbnQiLCJjb252ZXJ0X2ludDY0IiwiY29udmVydF9mbG9hdCIsImhleCIsInNpZ24iLCJjYW1sX3NwZWNpYWxfdmFsIiwic3RyaW5nX29mX2ZtdHR5IiwibWFrZV9wcmludGYkMCIsIm5ld19hY2MiLCJtYWtlX3ByaW50ZiIsIm1ha2VfcGFkZGluZyIsIm1ha2VfaW50X3BhZGRpbmdfcHJlY2lzaW9uIiwicCQwIiwicCQxIiwiYWNjJDMiLCJhY2MkNCIsImthY2MiLCJtYWtlX2lnbm9yZWRfcGFyYW0kMCIsIm1ha2VfY3VzdG9tJDAiLCJtYWtlX2ludmFsaWRfYXJnIiwibWFrZV9mcm9tX2ZtdHR5JDAiLCJtYWtlX2lnbm9yZWRfcGFyYW0iLCJtYWtlX2Zyb21fZm10dHkiLCJtYWtlX2N1c3RvbSIsIm1ha2VfaXByaW50ZiQwIiwibWFrZV9pcHJpbnRmIiwiZm5fb2ZfcGFkZGluZ19wcmVjaXNpb24iLCJrb2MiLCJyZXN0JDI0IiwicmVzdCQyNSIsInJlc3QkMjYiLCJyZXN0JDI3IiwicmVzdCQyOCIsInJlc3QkMjkiLCJmbl9vZl9jdXN0b21fYXJpdHkkMCIsImZuX29mX2N1c3RvbV9hcml0eSIsIm91dHB1dF9hY2MiLCJwJDMiLCJwJDQiLCJwJDUiLCJwJDIiLCJidWZwdXRfYWNjIiwic3RycHV0X2FjYyIsImZhaWx3aXRoX21lc3NhZ2UiLCJvcGVuX2JveF9vZl9zdHJpbmciLCJpbnZhbGlkX2JveCIsInBhcnNlX3NwYWNlcyIsIndzdGFydCIsIndlbmQiLCJib3hfbmFtZSIsIm5zdGFydCIsIm5lbmQiLCJpbmRlbnQiLCJleHBfZW5kIiwiYm94X3R5cGUiLCJtYWtlX3BhZGRpbmdfZm10X2ViYiIsIm1ha2VfcGFkcHJlY19mbXRfZWJiIiwiZm10X2ViYl9vZl9zdHJpbmciLCJsZWdhY3lfYmVoYXZpb3IiLCJmbGFnIiwibGVnYWN5X2JlaGF2aW9yJDAiLCJpbnZhbGlkX2Zvcm1hdF9tZXNzYWdlIiwidW5leHBlY3RlZF9lbmRfb2ZfZm9ybWF0IiwiZW5kX2luZCIsImludmFsaWRfZm9ybWF0X3dpdGhvdXQiLCJleHBlY3RlZF9jaGFyYWN0ZXIiLCJleHBlY3RlZCIsInBhcnNlIiwibGl0X3N0YXJ0IiwiYWRkX2xpdGVyYWwiLCJzdHJfaW5kJDEiLCJzdHJfaW5kJDIiLCJwYXJzZV9mbGFncyIsInN0cl9pbmQkMCIsInBhcnNlX3RhZyIsInN0cl9pbmQkMyIsInN0cl9pbmRfMSIsInBhcnNlX2ludGVnZXIiLCJzdHJfaW5kXzIiLCJzdHJfaW5kXzMiLCJmb3JtYXR0aW5nX2xpdCQwIiwibmV4dF9pbmQiLCJzdHJfaW5kXzQiLCJzdHJfaW5kXzUiLCJzdHJfaW5kJDQiLCJzdHJfaW5kXzEkMCIsInN0cl9pbmRfMiQwIiwic3RyX2luZF8zJDAiLCJzJDEiLCJmb3JtYXR0aW5nX2xpdCQxIiwibmV4dF9pbmQkMCIsInBjdF9pbmQiLCJtaW51cyIsInBsdXMiLCJzcGFjZSIsInNldF9mbGFnIiwic3RyX2luZCQ1Iiwic3BhY2UkMCIsImhhc2gkMCIsInBsdXMkMCIsIm1pbnVzJDAiLCJ6ZXJvJDAiLCJpbmNvbXBhdGlibGVfZmxhZyIsInBhcnNlX3Bvc2l0aXZlIiwibmV3X2luZCIsInBhcnNlX2FmdGVyX3BhZGRpbmciLCJwYXJzZV9jb252ZXJzaW9uIiwicGFyc2VfbGl0ZXJhbCIsInBhcnNlX2FmdGVyX3ByZWNpc2lvbiIsInN5bWIkMCIsInBhcnNlX2NvbnYiLCJwYWRwcmVjIiwicGx1c191c2VkIiwiaGFzaF91c2VkIiwic3BhY2VfdXNlZCIsImlnbl91c2VkIiwicGFkX3VzZWQiLCJwcmVjX3VzZWQiLCJnZXRfcGx1cyIsImdldF9oYXNoIiwiZ2V0X3NwYWNlIiwiZ2V0X2lnbiIsImdldF9wYWQiLCJnZXRfcHJlYyIsImdldF9wYWRwcmVjIiwiZ2V0X2ludF9wYWQiLCJjaGVja19ub18wIiwib3B0X29mX3BhZCIsIndpZHRoJDEiLCJnZXRfcGFkX29wdCIsImdldF9wYWRwcmVjX29wdCIsImZtdF9yZXN1bHQiLCJzdWJfZW5kIiwic2VhcmNoX3N1YmZvcm1hdF9lbmQiLCJzdWJfZm10IiwiaWdub3JlZCQyIiwiY291bnRlciQwIiwiaWdub3JlZCQ2IiwiaWdub3JlZCQ3IiwiYWRkX3JhbmdlIiwiZmFpbF9zaW5nbGVfcGVyY2VudCIsInBhcnNlX2NoYXJfc2V0X2NvbnRlbnQiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyJDAiLCJwYXJzZV9jaGFyX3NldF9hZnRlcl9jaGFyIiwicmV2ZXJzZSIsImNoYXJfc2V0JDEiLCJpZ25vcmVkJDkiLCJjaGFyX2Zvcm1hdCIsImZtdF9yZXN0JDIxIiwiZm10X3Jlc3QkMjIiLCJmbXRfcmVzdCQyMyIsImlnbm9yZWQkMTAiLCJmbXRfcmVzdCQyNCIsImZtdF9yZXN0JDI1Iiwic3ViX2VuZCQwIiwic3ViX2ZtdCQwIiwiZm10X3Jlc3QkMjYiLCJpZ25vcmVkJDExIiwiaWdub3JlZCQzIiwiaWdub3JlZCQ1IiwiY29tcHV0ZV9pbnRfY29udiIsImlnbm9yZWQkOCIsInNwYWNlJDEiLCJoYXNoJDEiLCJwbHVzJDIiLCJraW5kIiwiaWdub3JlZCQ0IiwiaWdub3JlZCIsImlnbm9yZWQkMCIsImlnbm9yZWQkMSIsInBsdXMkMSIsImlnbiQwIiwiaXNfb3Blbl90YWciLCJpbmQiLCJzdWJfc3RyIiwic3ViX2Zvcm1hdCQwIiwiZm9ybWF0dGluZyQwIiwiZm9ybWF0dGluZyIsInN1Yl9lbmQkMSIsInN1Yl9lbmQkMiIsInN0cl9pbmQkNiIsInN0cl9pbmQkNyIsIm9wdGlvbiIsInN1YmZtdCIsImZvcm1hdF9vZl9zdHJpbmdfZm10dHkiLCJmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCIsImtmcHJpbnRmIiwia2JwcmludGYiLCJpa2ZwcmludGYiLCJmcHJpbnRmIiwiYnByaW50ZiIsImlmcHJpbnRmIiwiaWJwcmludGYiLCJwcmludGYiLCJlcHJpbnRmIiwia3NwcmludGYiLCJzcHJpbnRmIiwiYXNzb2MzIiwieTIiLCJ5MSIsIm1ha2Vfc3ltbGlzdCIsImhlbHBfYWN0aW9uIiwiYWRkX2hlbHAiLCJzcGVjbGlzdCIsImFkZDEiLCJhZGQyIiwidXNhZ2VfYiIsImVycm1zZyIsImRvYyIsInNwZWMiLCJrZXkiLCJ1c2FnZV9zdHJpbmciLCJ1c2FnZSIsImN1cnJlbnQiLCJwYXJzZV9hbmRfZXhwYW5kX2FyZ3ZfZHluYW1pY18iLCJhbGxvd19leHBhbmQiLCJhcmd2IiwiYW5vbmZ1biIsImluaXRwb3MiLCJjb252ZXJ0X2Vycm9yIiwicHJvZ25hbWUiLCJmb2xsb3ckMCIsImtleXdvcmQiLCJmb2xsb3ckMiIsIm5vX2FyZyIsImdldF9hcmciLCJjb25zdW1lX2FyZyIsInRyZWF0X2FjdGlvbiIsImYkMCIsImYkMSIsInIkMSIsImYkMiIsImFyZyQxIiwiciQyIiwiYXJnJDIiLCJmJDMiLCJhcmckMyIsIngkMSIsInIkMyIsImFyZyQ0IiwieCQyIiwic3BlY3MiLCJmJDQiLCJhcmckNSIsImYkNSIsImYkNiIsImYkNyIsImFyZyQ2IiwibmV3YXJnIiwicGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMiLCJwYXJzZV9hcmd2X2R5bmFtaWMiLCJjdXJyZW50JDAiLCJwYXJzZV9hcmd2IiwibXNnJDAiLCJtc2ckMSIsInBhcnNlX2R5bmFtaWMiLCJwYXJzZV9leHBhbmQiLCJzZWNvbmRfd29yZCIsImxvb3AiLCJtYXhfYXJnX2xlbiIsImt3ZCIsInJlcGxhY2VfbGVhZGluZ190YWIiLCJhbGlnbiIsImxpbWl0IiwiY29tcGxldGVkIiwia3NkIiwiY3V0Y29sJDAiLCJzcGFjZXMkMCIsInNwZWMkMCIsImN1dGNvbCIsImt3ZF9sZW4iLCJzcGFjZXMiLCJyZWFkX2F1eCIsImZpbGUiLCJ3b3JkcyIsInN0YXNoIiwid29yZCIsIndvcmQkMCIsInJlYWRfYXJnIiwicmVhZF9hcmcwIiwid3JpdGVfYXV4IiwiYXJncyIsIndyaXRlX2FyZyIsIndyaXRlX2FyZzAiLCJsb2NmbXQiLCJwcmludGVycyIsImZpZWxkIiwib3RoZXJfZmllbGRzIiwidXNlX3ByaW50ZXJzIiwidG9fc3RyaW5nX2RlZmF1bHQiLCJjaGFyJDAiLCJsaW5lIiwiY2hhciQxIiwibGluZSQwIiwiZmlsZSQwIiwiY2hhciQyIiwibGluZSQxIiwiZmlsZSQxIiwiY29uc3RydWN0b3IiLCJwcmludCIsImZjdCIsImNhdGNoJDAiLCJyYXdfYmFja3RyYWNlX2VudHJpZXMiLCJidCIsImNvbnZlcnRfcmF3X2JhY2t0cmFjZSIsImZvcm1hdF9iYWNrdHJhY2Vfc2xvdCIsImlzX3JhaXNlIiwicHJpbnRfcmF3X2JhY2t0cmFjZSIsIm91dGNoYW4iLCJyYXdfYmFja3RyYWNlIiwiYmFja3RyYWNlIiwicHJpbnRfYmFja3RyYWNlIiwicmF3X2JhY2t0cmFjZV90b19zdHJpbmciLCJiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZSIsInBhcmFtIiwiYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lIiwiYmFja3RyYWNlX3Nsb3RfbG9jYXRpb24iLCJiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lIiwiYmFja3RyYWNlX3Nsb3RzIiwiYmFja3RyYWNlX3Nsb3RzX29mX3Jhd19lbnRyeSIsImVudHJ5IiwicmF3X2JhY2t0cmFjZV9sZW5ndGgiLCJnZXRfYmFja3RyYWNlIiwicmVnaXN0ZXJfcHJpbnRlciIsImZuIiwib2xkX3ByaW50ZXJzIiwibmV3X3ByaW50ZXJzIiwiZXhuX3Nsb3QiLCJleG5fc2xvdF9pZCIsImV4bl9zbG90X25hbWUiLCJlcnJvcnMiLCJkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW4iLCJzdGF0dXMiLCJ1bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsInNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciIsImVtcHR5X2JhY2t0cmFjZSIsImhhbmRsZV91bmNhdWdodF9leGNlcHRpb24iLCJkZWJ1Z2dlcl9pbl91c2UiLCJleG4kMSIsInJhd19iYWNrdHJhY2UkMCIsImNvbnN0JDAiLCJmbGlwIiwibmVnYXRlIiwicHJvdGVjdCIsImZpbmFsbHkkMCIsIndvcmsiLCJmaW5hbGx5X25vX2V4biIsIndvcmtfZXhuJDAiLCJ3b3JrX2V4biIsIndvcmtfYnQiLCJwcmludF9zdGF0IiwiYWxsb2NhdGVkX2J5dGVzIiwibWEiLCJwcm8iLCJtaSIsImNyZWF0ZV9hbGFybSIsImRlbGV0ZV9hbGFybSIsIm51bGxfdHJhY2tlciIsInNhbXBsaW5nX3JhdGUiLCJ0cmFja2VyIiwiY2FsbHN0YWNrX3NpemUiLCJzdHJpbmciLCJieXRlcyIsInN1YnN0cmluZyIsInN1YmJ5dGVzIiwiZmlsZW5hbWUiLCJkaWdlc3QiLCJjaGFyX2hleCIsInRvX2hleCIsImZyb21faGV4IiwiZGlnaXQiLCJuZXdfc3RhdGUiLCJhc3NpZ24iLCJzdDEiLCJzdDIiLCJmdWxsX2luaXQiLCJzZWVkIiwic2VlZCQwIiwibWFrZV9zZWxmX2luaXQiLCJiaXRzIiwiY3VydmFsIiwibmV3dmFsIiwibmV3dmFsMzAiLCJpbnRhdXgiLCJpbnQkMCIsImJvdW5kIiwiZnVsbF9pbnQiLCJiMSIsImIyIiwibWF4X2ludF8zMiIsImJwb3MiLCJiMyIsImludDMyIiwiaW50NjQiLCJuYXRpdmVpbnQiLCJmbG9hdCQwIiwiYm9vbCIsImJpdHMkMCIsImludCQxIiwiZnVsbF9pbnQkMCIsImludDMyJDAiLCJuYXRpdmVpbnQkMCIsImludDY0JDAiLCJmbG9hdCQxIiwic2NhbGUiLCJib29sJDAiLCJmdWxsX2luaXQkMCIsInNlbGZfaW5pdCIsImdldF9zdGF0ZSIsInNldF9zdGF0ZSIsIm9uZ29pbmdfdHJhdmVyc2FsIiwiZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCIsInBhcmFtcyIsInJhbmRvbWl6ZWRfZGVmYXVsdCIsInJhbmRvbWl6ZWQiLCJyYW5kb21pemUiLCJpc19yYW5kb21pemVkIiwicHJuZyIsInBvd2VyXzJfYWJvdmUiLCJpbml0aWFsX3NpemUiLCJyYW5kb20iLCJjb3B5X2J1Y2tldGxpc3QiLCJrZXkkMCIsIm5leHQkMCIsImluc2VydF9hbGxfYnVja2V0cyIsImluZGV4ZnVuIiwiaW5wbGFjZSIsIm9kYXRhIiwibmRhdGEiLCJuc2l6ZSIsIm5kYXRhX3RhaWwiLCJuaWR4IiwibWF0Y2gkMCIsIm9zaXplIiwib2xkX3RyYXYiLCJmaWx0ZXJfbWFwX2lucGxhY2UiLCJiJDAiLCJidWNrZXRfbGVuZ3RoIiwic3RhdHMiLCJtYmwiLCJoaXN0byIsInRibF9kYXRhIiwiYnVjayIsImJ1Y2skMCIsImJ1Y2skMSIsInRvX3NlcV9rZXlzIiwidG9fc2VxX3ZhbHVlcyIsImtleV9pbmRleCIsImJ1Y2tldCIsImsxIiwibmV4dDEiLCJrMiIsIm5leHQyIiwiazMiLCJkMyIsIm5leHQzIiwiZmluZF9pbl9idWNrZXQiLCJyZXBsYWNlIiwicmVwbGFjZV9zZXEiLCJzeiIsImhhc2hfcGFyYW0iLCJzZWVkZWRfaGFzaCIsInJlYnVpbGQiLCJnZXRfY29weSIsImFyIiwiZW1wdHlidWNrZXQiLCJnZXRfaW5kZXgiLCJjcmVhdGUkMCIsInN6JDAiLCJzeiQxIiwiY291bnRfYnVja2V0IiwiYWRkX2F1eCIsInNldHRlciIsImJ1Y2tldCQwIiwiaGFzaGVzIiwibmV3c3oiLCJuZXdidWNrZXQkMCIsIm5ld2hhc2hlcyIsImhidWNrZXQiLCJwcmV2X2xlbiIsImxpdmUiLCJqJDIiLCJuZXdidWNrZXQiLCJvbGRsZW4iLCJuZXd0Iiwib2IiLCJvaSIsIm9oIiwib2kkMCIsIm5pIiwiZmluZF9vciIsImlmbm90Zm91bmQiLCJmaW5kX3NoYWRvdyIsImlmZm91bmQiLCJsZW5zIiwidG90bGVuIiwidW5rbm93biIsInBwX2VucXVldWUiLCJ0b2tlbiIsInBwX2luZmluaXR5IiwicHBfb3V0cHV0X3N0cmluZyIsInBwX291dHB1dF9uZXdsaW5lIiwiZm9ybWF0X3BwX3RleHQiLCJ0ZXh0IiwiZm9ybWF0X3N0cmluZyIsImJyZWFrX25ld19saW5lIiwicmVhbF9pbmRlbnQiLCJicmVha19saW5lIiwiYnJlYWtfc2FtZV9saW5lIiwiZm9ybWF0X3BwX3Rva2VuIiwic2l6ZSQwIiwidGFicyIsImFkZF90YWIiLCJscyIsInRhZ19uYW1lIiwibWFya2VyIiwiYnJlYWtzIiwiZml0cyIsIm9mZiIsImJveF90eXBlJDAiLCJvZmYkMCIsImluc2VydGlvbl9wb2ludCIsInRhYnMkMCIsImZpcnN0IiwiaGVhZCIsInRhYiIsIm9mZiQxIiwiaW5zZXJ0aW9uX3BvaW50JDAiLCJ3aWR0aCQyIiwiYm94X3R5cGUkMSIsInRib3giLCJ0YWdfbmFtZSQwIiwibWFya2VyJDAiLCJhZHZhbmNlX2xlZnQiLCJwZW5kaW5nX2NvdW50IiwiZW5xdWV1ZV9hZHZhbmNlIiwiZW5xdWV1ZV9zdHJpbmdfYXMiLCJpbml0aWFsaXplX3NjYW5fc3RhY2siLCJzdGFjayIsInF1ZXVlX2VsZW0iLCJzZXRfc2l6ZSIsImxlZnRfdG90YWwiLCJzY2FuX3B1c2giLCJlbGVtIiwicHBfb3Blbl9ib3hfZ2VuIiwiYnJfdHkiLCJwcF9jbG9zZV9ib3giLCJwcF9vcGVuX3N0YWciLCJwcF9jbG9zZV9zdGFnIiwicHBfb3Blbl90YWciLCJwcF9jbG9zZV90YWciLCJwcF9zZXRfcHJpbnRfdGFncyIsInBwX3NldF9tYXJrX3RhZ3MiLCJwcF9nZXRfcHJpbnRfdGFncyIsInBwX2dldF9tYXJrX3RhZ3MiLCJwcF9zZXRfdGFncyIsInBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbiIsInBjdCIsInBvdCIsIm1jdCIsIm1vdCIsInBwX3Jpbml0IiwicHBfZmx1c2hfcXVldWUiLCJwcF9wcmludF9hc19zaXplIiwicHBfcHJpbnRfYXMiLCJpc2l6ZSIsInBwX3ByaW50X3N0cmluZyIsInBwX3ByaW50X2J5dGVzIiwicHBfcHJpbnRfaW50IiwicHBfcHJpbnRfZmxvYXQiLCJwcF9wcmludF9ib29sIiwicHBfcHJpbnRfY2hhciIsInBwX29wZW5faGJveCIsInBwX29wZW5fdmJveCIsInBwX29wZW5faHZib3giLCJwcF9vcGVuX2hvdmJveCIsInBwX29wZW5fYm94IiwicHBfcHJpbnRfbmV3bGluZSIsInBwX3ByaW50X2ZsdXNoIiwicHBfZm9yY2VfbmV3bGluZSIsInBwX3ByaW50X2lmX25ld2xpbmUiLCJwcF9wcmludF9jdXN0b21fYnJlYWsiLCJwcF9wcmludF9icmVhayIsInBwX3ByaW50X3NwYWNlIiwicHBfcHJpbnRfY3V0IiwicHBfb3Blbl90Ym94IiwicHBfY2xvc2VfdGJveCIsInBwX3ByaW50X3RicmVhayIsInBwX3ByaW50X3RhYiIsInBwX3NldF90YWIiLCJwcF9zZXRfbWF4X2JveGVzIiwicHBfZ2V0X21heF9ib3hlcyIsInBwX292ZXJfbWF4X2JveGVzIiwicHBfc2V0X2VsbGlwc2lzX3RleHQiLCJwcF9nZXRfZWxsaXBzaXNfdGV4dCIsInBwX2xpbWl0IiwicHBfc2V0X21heF9pbmRlbnQiLCJwcF9nZXRfbWF4X2luZGVudCIsInBwX3NldF9tYXJnaW4iLCJuZXdfbWF4X2luZGVudCIsInZhbGlkYXRlX2dlb21ldHJ5IiwibWFyZ2luIiwibWF4X2luZGVudCIsImNoZWNrX2dlb21ldHJ5IiwiZ2VvbWV0cnkiLCJwcF9nZXRfbWFyZ2luIiwicHBfc2V0X2Z1bGxfZ2VvbWV0cnkiLCJwcF9zZXRfZ2VvbWV0cnkiLCJwcF9zYWZlX3NldF9nZW9tZXRyeSIsInBwX2dldF9nZW9tZXRyeSIsInBwX3VwZGF0ZV9nZW9tZXRyeSIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsInBwX2dldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aSIsImRpc3BsYXlfbmV3bGluZSIsImJsYW5rX2xpbmUiLCJkaXNwbGF5X2JsYW5rcyIsInBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwiLCJkZWZhdWx0X3BwX21hcmtfb3Blbl90YWciLCJkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnIiwiZGVmYXVsdF9wcF9wcmludF9vcGVuX3RhZyIsImRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnIiwicHBfbWFrZV9mb3JtYXR0ZXIiLCJwcF9xdWV1ZSIsInN5c190b2siLCJzY2FuX3N0YWNrIiwicHBfbWFyZ2luIiwiZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMiLCJvdXRfZnVucyIsIm1ha2VfZm9ybWF0dGVyIiwicHBmIiwiZm9ybWF0dGVyX29mX291dF9jaGFubmVsIiwiZm9ybWF0dGVyX29mX2J1ZmZlciIsInBwX2J1ZmZlcl9zaXplIiwicHBfbWFrZV9idWZmZXIiLCJzdGRidWYiLCJzdGRfZm9ybWF0dGVyIiwiZXJyX2Zvcm1hdHRlciIsInN0cl9mb3JtYXR0ZXIiLCJmbHVzaF9idWZmZXJfZm9ybWF0dGVyIiwiZmx1c2hfc3RyX2Zvcm1hdHRlciIsIm1ha2Vfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJzb2IiLCJnZXRfc3ltYm9saWNfb3V0cHV0X2J1ZmZlciIsImZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIiLCJpdGVtcyIsImFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSIsIml0ZW0iLCJmb3JtYXR0ZXJfb2Zfc3ltYm9saWNfb3V0cHV0X2IiLCJvcGVuX2hib3giLCJvcGVuX3Zib3giLCJvcGVuX2h2Ym94Iiwib3Blbl9ob3Zib3giLCJvcGVuX2JveCIsImNsb3NlX2JveCIsIm9wZW5fdGFnIiwiY2xvc2VfdGFnIiwib3Blbl9zdGFnIiwiY2xvc2Vfc3RhZyIsInByaW50X2FzIiwicHJpbnRfYm9vbCIsInByaW50X2JyZWFrIiwicHJpbnRfY3V0IiwicHJpbnRfc3BhY2UiLCJmb3JjZV9uZXdsaW5lIiwicHJpbnRfZmx1c2giLCJwcmludF9pZl9uZXdsaW5lIiwib3Blbl90Ym94IiwiY2xvc2VfdGJveCIsInByaW50X3RicmVhayIsInNldF90YWIiLCJwcmludF90YWIiLCJzZXRfbWFyZ2luIiwiZ2V0X21hcmdpbiIsInNldF9tYXhfaW5kZW50IiwiZ2V0X21heF9pbmRlbnQiLCJzZXRfZ2VvbWV0cnkiLCJzYWZlX3NldF9nZW9tZXRyeSIsImdldF9nZW9tZXRyeSIsInVwZGF0ZV9nZW9tZXRyeSIsInNldF9tYXhfYm94ZXMiLCJnZXRfbWF4X2JveGVzIiwib3Zlcl9tYXhfYm94ZXMiLCJzZXRfZWxsaXBzaXNfdGV4dCIsImdldF9lbGxpcHNpc190ZXh0Iiwic2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCIsInNldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyIsInNldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMiLCJnZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIiwic2V0X3ByaW50X3RhZ3MiLCJnZXRfcHJpbnRfdGFncyIsInNldF9tYXJrX3RhZ3MiLCJnZXRfbWFya190YWdzIiwic2V0X3RhZ3MiLCJwcF9wcmludF9saXN0IiwicHBfdiIsIm9wdCQwIiwicHBfc2VwIiwib3B0JDEiLCJwcF9wcmludF9zZXEiLCJzZXEkMSIsInNlcSQyIiwicHBfcHJpbnRfdGV4dCIsInBwX3ByaW50X29wdGlvbiIsInBwX3ByaW50X3Jlc3VsdCIsInBwX3ByaW50X2VpdGhlciIsImNvbXB1dGVfdGFnIiwidGFnX2FjYyIsIm91dHB1dF9mb3JtYXR0aW5nX2xpdCIsImJ0eSIsInAkNiIsInAkNyIsInNpemUkMSIsInAkOCIsImtkcHJpbnRmIiwiZHByaW50ZiIsImthc3ByaW50ZiIsImFzcHJpbnRmIiwiZmx1c2hfc3RhbmRhcmRfZm9ybWF0dGVycyIsInBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInBwX2dldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdSIsInNldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsImdldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdCIsInBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsInN0cmluZ2lmeSIsInBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImZ1bnMiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJwcmludF9vcGVuX3RhZyIsInByaW50X2Nsb3NlX3RhZyIsInNldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsImdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyIsIm51bGxfY2hhciIsIm5leHRfY2hhciIsImliIiwicGVla19jaGFyIiwiY2hlY2tlZF9wZWVrX2NoYXIiLCJlbmRfb2ZfaW5wdXQiLCJiZWdpbm5pbmdfb2ZfaW5wdXQiLCJuYW1lX29mX2lucHV0IiwiY2hhcl9jb3VudCIsImludmFsaWRhdGVfY3VycmVudF9jaGFyIiwidG9rZW5fc3RyaW5nIiwidG9rZW5fYnVmZmVyIiwic2tpcF9jaGFyIiwiaWdub3JlX2NoYXIiLCJzdG9yZV9jaGFyIiwiZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSIsImluYW1lIiwic2Nhbl9jbG9zZV9hdF9lbmQiLCJzY2FuX3JhaXNlX2F0X2VuZCIsImZyb21faWMiLCJzY2FuX2Nsb3NlX2ljIiwiZW9mIiwib3Blbl9pbl9maWxlIiwiaWMkMCIsIm1lbW8iLCJtZW1vX2Zyb21fY2hhbm5lbCIsImJhZF9pbnB1dCIsImJhZF9pbnB1dF9lc2NhcGUiLCJiYWRfdG9rZW5fbGVuZ3RoIiwibWVzc2FnZSIsImJhZF9mbG9hdCIsImJhZF9oZXhfZmxvYXQiLCJjaGFyYWN0ZXJfbWlzbWF0Y2giLCJjaSIsImNoZWNrX2NoYXIiLCJjaGVja190aGlzX2NoYXIiLCJ0b2tlbl9jaGFyIiwidG9rZW5fYm9vbCIsImludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIiwidG9rZW5faW50X2xpdGVyYWwiLCJjb252IiwidG9rZW5fZmxvYXQiLCJzY2FuX2RlY2ltYWxfZGlnaXRfc3RhciIsInNjYW5fZGVjaW1hbF9kaWdpdF9wbHVzIiwic2Nhbl9kaWdpdF9wbHVzIiwiYmFzaXMiLCJkaWdpdHAiLCJ3aWR0aCQzIiwiaXNfYmluYXJ5X2RpZ2l0Iiwic2Nhbl9iaW5hcnlfaW50IiwiaXNfb2N0YWxfZGlnaXQiLCJzY2FuX29jdGFsX2ludCIsImlzX2hleGFfZGlnaXQiLCJzY2FuX2hleGFkZWNpbWFsX2ludCIsInNjYW5fc2lnbiIsInNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbCIsInNjYW5faW50X2NvbnZlcnNpb24iLCJzY2FuX2ZyYWN0aW9uYWxfcGFydCIsInNjYW5fZXhwb25lbnRfcGFydCIsInNjYW5fZmxvYXQiLCJwcmVjaXNpb24iLCJwcmVjaXNpb24kMCIsImNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIiwic2Nhbl9oZXhfZmxvYXQiLCJ3aWR0aCQ0Iiwid2lkdGgkNSIsIndpZHRoJDYiLCJ3aWR0aCQxMCIsIndpZHRoJDciLCJ3aWR0aCQ4Iiwid2lkdGgkOSIsInNjYW5fY2FtbF9mbG9hdF9yZXN0Iiwid2lkdGhfcHJlY2lzaW9uIiwiZnJhY193aWR0aCIsInNjYW5fY2FtbF9mbG9hdCIsInNjYW5fc3RyaW5nIiwic3RwIiwiaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciIsImNoZWNrX25leHRfY2hhciIsImNoZWNrX25leHRfY2hhcl9mb3JfY2hhciIsImNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIiwic2Nhbl9iYWNrc2xhc2hfY2hhciIsImMwIiwiZ2V0X2RpZ2l0JDAiLCJjMSQwIiwiYzIkMCIsImdldF9kaWdpdCIsInNjYW5fY2FtbF9zdHJpbmciLCJmaW5kX3N0b3AkMCIsInNraXBfc3BhY2VzIiwiZmluZF9zdG9wIiwic2Nhbl9jaGFyc19pbl9jaGFyX3NldCIsInNjYW5faW5kaWMiLCJzY2FuX2NoYXJzIiwic2NhbmZfYmFkX2lucHV0Iiwid2lkdGhfb2ZfcGFkX29wdCIsInN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQiLCJmbXRpbmciLCJ0YWtlX2Zvcm1hdF9yZWFkZXJzJDAiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzJDAiLCJyZWFkZXIiLCJuZXdfayIsInJlYWRlcnNfcmVzdCIsInRha2VfZm9ybWF0X3JlYWRlcnMiLCJ0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIiwibWFrZV9zY2FuZiIsInJlYWRlcnMiLCJzY2FuJDAiLCJzdHJfcmVzdCIsInBhZF9wcmVjX3NjYW5mIiwic2NhbiQxIiwic2NhbiQyIiwic2NhbiIsInNjYW4kMyIsInNjYW4kNCIsImNvbnYkMCIsInNjYW4kNSIsImNvbnYkMSIsInNjYW4kNiIsImNvbnYkMiIsInNjYW4kNyIsInNjYW4kOCIsImZtdGluZ19saXQkMCIsInN0cCQwIiwicyQyIiwic3RyX3Jlc3QkMCIsImFyZ19yZXN0Iiwia3NjYW5mIiwiZWYiLCJleGMkMCIsImV4YyIsImFyZ3MkMSIsImFyZ3MkMCIsImJzY2FuZiIsImtzc2NhbmYiLCJzc2NhbmYiLCJzY2FuZiIsImJzY2FuZl9mb3JtYXQiLCJmb3JtYXQiLCJzc2NhbmZfZm9ybWF0IiwiZm9ybWF0X2Zyb21fc3RyaW5nIiwidW5lc2NhcGVkIiwia2ZzY2FuZiIsImZzY2FuZiIsInJlZ2lzdGVyIiwicmVnaXN0ZXJfZXhjZXB0aW9uIiwibyQwIiwiaW5pdGlhbF9vYmplY3Rfc2l6ZSIsImR1bW15X2l0ZW0iLCJwdWJsaWNfbWV0aG9kX2xhYmVsIiwidGFnIiwiY29tcGFyZSQwIiwiY29tcGFyZSQxIiwiZHVtbXlfdGFibGUiLCJ0YWJsZV9jb3VudCIsImR1bW15X21ldCIsImZpdF9zaXplIiwibmV3X3RhYmxlIiwicHViX2xhYmVscyIsIm1ldGhvZHMiLCJhcnJheSIsIm5ld19zaXplIiwib2xkX3NpemUiLCJuZXdfYnVjayIsIm1ldGhvZF9jb3VudCIsImluc3RfdmFyX2NvdW50IiwibmV3X21ldGhvZCIsInRhYmxlIiwiZ2V0X21ldGhvZF9sYWJlbCIsImxhYmVsIiwiZ2V0X21ldGhvZF9sYWJlbHMiLCJuYW1lcyIsInNldF9tZXRob2QiLCJlbGVtZW50IiwiZ2V0X21ldGhvZCIsImFyciIsIm5hcnJvdyIsInZhcnMiLCJ2aXJ0X21ldGhzIiwiY29uY3JfbWV0aHMiLCJ2YXJzJDAiLCJ2aXJ0X21ldGhzJDAiLCJjb25jcl9tZXRocyQwIiwidmlydF9tZXRoX2xhYnMiLCJjb25jcl9tZXRoX2xhYnMiLCJsYWIiLCJ0dmFycyIsImJ5X25hbWUiLCJieV9sYWJlbCIsIm1ldCIsImhtIiwid2lkZW4iLCJzYXZlZF92YXJzIiwic2F2ZWRfaGlkZGVuX21ldGhzIiwibmV3X3ZhcmlhYmxlIiwidG9fYXJyYXkiLCJuZXdfbWV0aG9kc192YXJpYWJsZXMiLCJtZXRocyIsInZhbHMiLCJtZXRocyQwIiwibm1ldGhzIiwibnZhbHMiLCJnZXRfdmFyaWFibGUiLCJnZXRfdmFyaWFibGVzIiwiYWRkX2luaXRpYWxpemVyIiwiY3JlYXRlX3RhYmxlIiwicHVibGljX21ldGhvZHMiLCJ0YWdzIiwiaW5pdF9jbGFzcyIsImluaGVyaXRzIiwiY2xhIiwic3VwZXIkMCIsIm5tIiwibWFrZV9jbGFzcyIsInB1Yl9tZXRocyIsImNsYXNzX2luaXQiLCJlbnZfaW5pdCIsIm1ha2VfY2xhc3Nfc3RvcmUiLCJpbml0X3RhYmxlIiwiZHVtbXlfY2xhc3MiLCJsb2MiLCJ1bmRlZiIsImNyZWF0ZV9vYmplY3QiLCJjcmVhdGVfb2JqZWN0X29wdCIsIm9ial8wIiwiaXRlcl9mIiwicnVuX2luaXRpYWxpemVycyIsImluaXRzIiwicnVuX2luaXRpYWxpemVyc19vcHQiLCJjcmVhdGVfb2JqZWN0X2FuZF9ydW5faW5pdGlhbGkiLCJidWlsZF9wYXRoIiwia2V5cyIsImxvb2t1cF90YWJsZXMiLCJyb290Iiwicm9vdF9kYXRhIiwidGFibGVzJDAiLCJ0YWJsZXMkMSIsInRhYmxlc19kYXRhIiwibmV3X2NhY2hlIiwic2V0X21ldGhvZHMiLCJjbG8iLCJ4JDIwIiwiY2xvJDAiLCJuJDM4IiwiZSQxMCIsIm4kMzciLCJuJDM2IiwibiQyIiwibiQzNSIsImYkMjAiLCJ4JDE5IiwibiQzIiwiZiQxOSIsIm4kMzQiLCJuJDQiLCJmJDE4IiwiZSQ5IiwibiQzMyIsIm4kNSIsImYkMTciLCJuJDMyIiwiZiQxNiIsIngkMTgiLCJ5JDAiLCJuJDYiLCJmJDE1IiwieCQxNyIsIm4kMzEiLCJ4JDMiLCJuJDciLCJmJDE0IiwieCQxNiIsImUkOCIsIm4kMzAiLCJ4JDQiLCJuJDgiLCJmJDEzIiwieCQxNSIsIm4kMjkiLCJuJDkiLCJ4JDUiLCJmJDEyIiwibiQyOCIsIngkMTQiLCJmJDgiLCJlJDIiLCJuJDEwIiwieCQ2IiwiZiQxMSIsImUkNyIsIm4kMjciLCJ4JDEzIiwiZiQ5IiwibiQxMSIsIngkNyIsImYkMTAiLCJuJDI2IiwieCQxMiIsIm4kMTIiLCJ4JDgiLCJuJDI1IiwieCQxMSIsIm4kMTMiLCJuJDI0IiwibSQxMiIsIm4kMTQiLCJlJDMiLCJuJDIzIiwiZSQ2IiwibSQxMSIsIm4kMTUiLCJtJDEiLCJuJDIyIiwibSQxMCIsIm0kMiIsIngkOSIsIm0kOSIsIngkMTAiLCJtJDMiLCJuJDE2IiwibSQ4IiwibiQyMSIsIm0kNCIsImUkNCIsIm4kMTciLCJtJDciLCJlJDUiLCJuJDIwIiwibSQ1IiwibiQxOCIsIm0kNiIsIm4kMTkiLCJpbml0X21vZF9ibG9jayIsImNvbXBzJDAiLCJtb2R1Iiwic2hhcGUiLCJmbiQwIiwiY29tcHMiLCJpbml0X21vZCIsInVwZGF0ZV9tb2RfYmxvY2siLCJjbCIsInVwZGF0ZV9tb2QiLCJpbml0aWFsX2J1ZmZlciIsImJ1ZmZlciIsImJ1ZnBvcyIsInJlc2V0X2J1ZmZlciIsInN0b3JlIiwibmV3YnVmZmVyIiwiZ2V0X3N0cmluZyIsIm1ha2VfbGV4ZXIiLCJrZXl3b3JkcyIsImt3ZF90YWJsZSIsImlkZW50X29yX2tleXdvcmQiLCJrZXl3b3JkX29yX2Vycm9yIiwibmV4dF90b2tlbiIsImVzY2FwZSIsImNvbW1lbnQiLCJudW1iZXIiLCJpZGVudDIiLCJleHBvbmVudF9wYXJ0IiwiZW5kX2V4cG9uZW50X3BhcnQiLCJjMyIsImhrZXkiLCJjbGVhbiIsImRvX2J1Y2tldCIsImluc2VydF9idWNrZXQiLCJjb250YWluZXIiLCJyZW1vdmVfYnVja2V0IiwiaGsiLCJuZXdfZCIsImJ1Y2tldF9sZW5ndGhfYWxpdmUiLCJzdGF0c19hbGl2ZSIsImdldF9kYXRhX2NvcHkiLCJzZXRfZGF0YSIsInVuc2V0X2RhdGEiLCJjaGVja19kYXRhIiwiYmxpdF9kYXRhIiwic2V0X2tleV9kYXRhIiwiZ2V0X2tleTEiLCJnZXRfa2V5MV9jb3B5Iiwic2V0X2tleTEiLCJ1bnNldF9rZXkxIiwiY2hlY2tfa2V5MSIsImdldF9rZXkyIiwiZ2V0X2tleTJfY29weSIsInNldF9rZXkyIiwidW5zZXRfa2V5MiIsImNoZWNrX2tleTIiLCJibGl0X2tleTEiLCJibGl0X2tleTIiLCJibGl0X2tleTEyIiwiZ2V0X2RhdGEkMCIsImdldF9kYXRhX2NvcHkkMCIsInNldF9kYXRhJDAiLCJ1bnNldF9kYXRhJDAiLCJjaGVja19kYXRhJDAiLCJibGl0X2RhdGEkMCIsImsyJDAiLCJrMSQwIiwiZXF1YWwkMCIsImNyZWF0ZSQxIiwiZ2V0X2tleSQwIiwiZ2V0X2tleV9jb3B5JDAiLCJzZXRfa2V5JDAiLCJ1bnNldF9rZXkkMCIsImNoZWNrX2tleSQwIiwiYmxpdF9rZXkkMCIsImdldF9kYXRhJDEiLCJnZXRfZGF0YV9jb3B5JDEiLCJzZXRfZGF0YSQxIiwidW5zZXRfZGF0YSQxIiwiY2hlY2tfZGF0YSQxIiwiYmxpdF9kYXRhJDEiLCJraSIsImswIiwibnVsbCQwIiwiY3VycmVudF9kaXJfbmFtZSIsInBhcmVudF9kaXJfbmFtZSIsImRpcl9zZXAiLCJxdW90ZXF1b3RlIiwibnVsbCQxIiwiY3VycmVudF9kaXJfbmFtZSQwIiwicGFyZW50X2Rpcl9uYW1lJDAiLCJkaXJfc2VwJDAiLCJudWxsJDIiLCJjdXJyZW50X2Rpcl9uYW1lJDEiLCJwYXJlbnRfZGlyX25hbWUkMSIsImRpcl9zZXAkMSIsImdlbmVyaWNfYmFzZW5hbWUiLCJpc19kaXJfc2VwIiwiZ2VuZXJpY19kaXJuYW1lIiwiaXNfcmVsYXRpdmUiLCJpc19pbXBsaWNpdCIsImNoZWNrX3N1ZmZpeCIsInN1ZmYiLCJjaG9wX3N1ZmZpeF9vcHQiLCJsZW5fZiIsInRlbXBfZGlyX25hbWUiLCJxdW90ZSIsInF1b3RlX2NvbW1hbmQiLCJiYXNlbmFtZSIsImRpcm5hbWUiLCJpc19kaXJfc2VwJDAiLCJpc19yZWxhdGl2ZSQwIiwiaXNfaW1wbGljaXQkMCIsImNoZWNrX3N1ZmZpeCQwIiwiY2hvcF9zdWZmaXhfb3B0JDAiLCJ0ZW1wX2Rpcl9uYW1lJDAiLCJxdW90ZSQwIiwibG9vcCQwIiwibG9vcF9icyIsImFkZF9icyIsInF1b3RlX2NtZF9maWxlbmFtZSIsInF1b3RlX2NvbW1hbmQkMCIsImRyaXZlX2FuZF9wYXRoIiwiZGlybmFtZSQwIiwicGF0aCIsImRyaXZlIiwiZGlyIiwiYmFzZW5hbWUkMCIsImJhc2VuYW1lJDEiLCJkaXJuYW1lJDEiLCJudWxsJDMiLCJjdXJyZW50X2Rpcl9uYW1lJDIiLCJwYXJlbnRfZGlyX25hbWUkMiIsImRpcl9zZXAkMiIsImlzX2Rpcl9zZXAkMSIsImlzX3JlbGF0aXZlJDEiLCJpc19pbXBsaWNpdCQxIiwiY2hlY2tfc3VmZml4JDEiLCJjaG9wX3N1ZmZpeF9vcHQkMSIsInRlbXBfZGlyX25hbWUkMSIsInF1b3RlJDEiLCJxdW90ZV9jb21tYW5kJDEiLCJiYXNlbmFtZSQyIiwiZGlybmFtZSQyIiwiY2hvcF9zdWZmaXgiLCJleHRlbnNpb25fbGVuIiwiaTAiLCJleHRlbnNpb24iLCJjaG9wX2V4dGVuc2lvbiIsInJlbW92ZV9leHRlbnNpb24iLCJ0ZW1wX2ZpbGVfbmFtZSIsInRlbXBfZGlyIiwicm5kIiwiY3VycmVudF90ZW1wX2Rpcl9uYW1lIiwic2V0X3RlbXBfZGlyX25hbWUiLCJnZXRfdGVtcF9kaXJfbmFtZSIsInRlbXBfZmlsZSIsIm9wZW5fdGVtcF9maWxlIiwic3RoJDAiLCJwZXJtcyIsInN0aCQxIiwibmVnIiwiY29uaiIsIm11bCIsImRpdiIsImludiIsIm5vcm0yIiwibm9ybSIsInEkMCIsInBvbGFyIiwic3FydCIsInckMCIsImV4cCIsImxvZyIsInBvdyIsImZsb2F0MzIiLCJmbG9hdDY0IiwiaW50OF9zaWduZWQiLCJpbnQ4X3Vuc2lnbmVkIiwiaW50MTZfc2lnbmVkIiwiaW50MTZfdW5zaWduZWQiLCJjb21wbGV4MzIiLCJjb21wbGV4NjQiLCJraW5kX3NpemVfaW5fYnl0ZXMiLCJjX2xheW91dCIsImZvcnRyYW5fbGF5b3V0IiwiY2xvb3AiLCJpZHgiLCJjb2wiLCJmbG9vcCIsImxheW91dCIsImRpbXMiLCJzaXplX2luX2J5dGVzIiwic2l6ZV9pbl9ieXRlcyQwIiwib2ZfdmFsdWUiLCJkaW0iLCJzaXplX2luX2J5dGVzJDEiLCJzbGljZSIsImluaXQkMCIsIm9mX2FycmF5IiwiYmEiLCJkaW0xIiwiZGltMiIsInNpemVfaW5fYnl0ZXMkMiIsInNsaWNlX2xlZnQiLCJzbGljZV9yaWdodCIsImluaXQkMSIsIm9mX2FycmF5JDAiLCJyb3ciLCJjcmVhdGUkMiIsImRpbTMiLCJzaXplX2luX2J5dGVzJDMiLCJzbGljZV9sZWZ0XzEiLCJzbGljZV9yaWdodF8xIiwic2xpY2VfbGVmdF8yIiwic2xpY2VfcmlnaHRfMiIsImluaXQkMiIsIm9mX2FycmF5JDEiLCJhcnJheTBfb2ZfZ2VuYXJyYXkiLCJhcnJheTFfb2ZfZ2VuYXJyYXkiLCJhcnJheTJfb2ZfZ2VuYXJyYXkiLCJhcnJheTNfb2ZfZ2VuYXJyYXkiLCJyZXNoYXBlXzAiLCJyZXNoYXBlXzEiLCJyZXNoYXBlXzIiLCJyZXNoYXBlXzMiLCJ2ZXJzaW9uIiwiZ2l0X3ZlcnNpb24iLCJyYWlzZSIsIm1heCIsIngiLCJ5IiwibWluIiwiZXF1YWwiLCJlcXVhbCQwIiwibWF4JDAiLCJtaW4kMCIsImdsb2JhbCIsIm51bGwkMCIsInVuZGVmaW5lZCQwIiwicmV0dXJuJDAiLCJtYXAiLCJmIiwiYmluZCIsInRlc3QiLCJpdGVyIiwiY2FzZSQwIiwiZyIsImdldCIsIm9wdGlvbiIsIngkMCIsInRvX29wdGlvbiIsInJldHVybiQxIiwibWFwJDAiLCJiaW5kJDAiLCJ0ZXN0JDAiLCJpdGVyJDAiLCJjYXNlJDEiLCJnZXQkMCIsIm9wdGlvbiQwIiwidG9fb3B0aW9uJDAiLCJjb2VyY2UiLCJjb2VyY2Vfb3B0IiwidHJ1ZSQwIiwiZmFsc2UkMCIsIm5mYyIsIm5mZCIsIm5ma2MiLCJuZmtkIiwic3RyaW5nX2NvbnN0ciIsInJlZ0V4cCIsIm9iamVjdF9jb25zdHJ1Y3RvciIsIm9iamVjdF9rZXlzIiwibyIsImFycmF5X2NvbnN0cnVjdG9yIiwiYXJyYXlfZ2V0IiwiYXJyYXlfc2V0IiwiYXJyYXlfbWFwIiwiYSIsImlkeCIsImFycmF5X21hcGkiLCJzdHJfYXJyYXkiLCJtYXRjaF9yZXN1bHQiLCJkYXRlX2NvbnN0ciIsIm1hdGgiLCJlcnJvcl9jb25zdHIiLCJleG5fd2l0aF9qc19iYWNrdHJhY2UiLCJuYW1lIiwibWVzc2FnZSIsInN0YWNrIiwidG9fc3RyaW5nIiwiZSIsInJhaXNlX2pzX2Vycm9yIiwic3RyaW5nX29mX2Vycm9yIiwiSlNPTiIsImRlY29kZVVSSSIsInMiLCJkZWNvZGVVUklDb21wb25lbnQiLCJlbmNvZGVVUkkiLCJlbmNvZGVVUklDb21wb25lbnQiLCJlc2NhcGUiLCJ1bmVzY2FwZSIsImlzTmFOIiwiaSIsInBhcnNlSW50IiwicyQwIiwicGFyc2VGbG9hdCIsImV4cG9ydF9qcyIsImZpZWxkIiwiZXhwb3J0JDAiLCJleHBvcnRfYWxsIiwib2JqIiwia2V5cyIsImtleSIsImxpc3Rfb2Zfbm9kZUxpc3QiLCJsZW5ndGgiLCJhY2MiLCJpJDAiLCJhY2MkMCIsImkkMSIsImRpc2Nvbm5lY3RlZCIsInByZWNlZGluZyIsImZvbGxvd2luZyIsImNvbnRhaW5zIiwiY29udGFpbmVkX2J5IiwiaW1wbGVtZW50YXRpb25fc3BlY2lmaWMiLCJoYXMiLCJ0IiwibWFzayIsImFkZCIsImFwcGVuZENoaWxkIiwicCIsIm4iLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEJlZm9yZSIsIm5vZGVUeXBlIiwidDEzIiwiY2FzdCIsInQxNCIsImVsZW1lbnQiLCJ0ZXh0IiwiYXR0ciIsIm5vX2hhbmRsZXIiLCJoYW5kbGVyIiwicmVzIiwiZnVsbF9oYW5kbGVyIiwidGhpcyQwIiwiaW52b2tlX2hhbmRsZXIiLCJldmVudCIsImV2ZW50VGFyZ2V0IiwibWFrZSIsImFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyIsInQyOCIsInR5cCIsImNhcHR1cmUiLCJvbmNlIiwicGFzc2l2ZSIsImgiLCJiIiwiZXYiLCJjYWxsYmFjayIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYXB0IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImlkIiwicHJldmVudERlZmF1bHQiLCJjcmVhdGVDdXN0b21FdmVudCIsImJ1YmJsZXMiLCJjYW5jZWxhYmxlIiwiZGV0YWlsIiwib3B0X2l0ZXIiLCJjb25zdHIiLCJhcnJheUJ1ZmZlciIsImludDhBcnJheSIsInVpbnQ4QXJyYXkiLCJpbnQxNkFycmF5IiwidWludDE2QXJyYXkiLCJpbnQzMkFycmF5IiwidWludDMyQXJyYXkiLCJmbG9hdDMyQXJyYXkiLCJmbG9hdDY0QXJyYXkiLCJzZXQiLCJ2IiwidW5zYWZlX2dldCIsImRhdGFWaWV3Iiwib2ZfYXJyYXlCdWZmZXIiLCJhYiIsInVpbnQ4IiwiYmxvYl9jb25zdHIiLCJmaWx0ZXJfbWFwIiwicSIsInYkMCIsImJsb2JfcmF3IiwiY29udGVudFR5cGUiLCJlbmRpbmdzIiwib3B0aW9ucyIsIm9wdGlvbnMkMCIsImJsb2JfZnJvbV9zdHJpbmciLCJibG9iX2Zyb21fYW55IiwibCIsImEkMCIsImwkMCIsImZpbGVuYW1lIiwibmFtZSQwIiwiZG9jX2NvbnN0ciIsImRvY3VtZW50IiwiYmxvYiIsInN0cmluZyIsImxvYWRzdGFydCIsInByb2dyZXNzIiwiYWJvcnQiLCJlcnJvciIsImxvYWQiLCJsb2FkZW5kIiwiZmlsZVJlYWRlciIsIm9uSUUiLCJjbGljayIsImNvcHkiLCJjdXQiLCJwYXN0ZSIsImRibGNsaWNrIiwibW91c2Vkb3duIiwibW91c2V1cCIsIm1vdXNlb3ZlciIsIm1vdXNlbW92ZSIsIm1vdXNlb3V0Iiwia2V5cHJlc3MiLCJrZXlkb3duIiwia2V5dXAiLCJtb3VzZXdoZWVsIiwid2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJoYXNoY2hhbmdlIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwic3VibWl0Iiwic2Nyb2xsIiwiZm9jdXMiLCJibHVyIiwidW5sb2FkIiwiYmVmb3JldW5sb2FkIiwicmVzaXplIiwib3JpZW50YXRpb25jaGFuZ2UiLCJwb3BzdGF0ZSIsInNlbGVjdCIsIm9ubGluZSIsIm9mZmxpbmUiLCJjaGVja2luZyIsIm5vdXBkYXRlIiwiZG93bmxvYWRpbmciLCJ1cGRhdGVyZWFkeSIsImNhY2hlZCIsIm9ic29sZXRlIiwiZG9tQ29udGVudExvYWRlZCIsImFuaW1hdGlvbnN0YXJ0IiwiYW5pbWF0aW9uZW5kIiwiYW5pbWF0aW9uaXRlcmF0aW9uIiwiYW5pbWF0aW9uY2FuY2VsIiwidHJhbnNpdGlvbnJ1biIsInRyYW5zaXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQiLCJ0cmFuc2l0aW9uY2FuY2VsIiwiY2FucGxheSIsImNhbnBsYXl0aHJvdWdoIiwiZHVyYXRpb25jaGFuZ2UiLCJlbXB0aWVkIiwiZW5kZWQiLCJnb3Rwb2ludGVyY2FwdHVyZSIsImxvYWRlZGRhdGEiLCJsb2FkZWRtZXRhZGF0YSIsImxvc3Rwb2ludGVyY2FwdHVyZSIsInBhdXNlIiwicGxheSIsInBsYXlpbmciLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwiZCIsImxvY2F0aW9uX29yaWdpbiIsIm9yaWdpbiIsIndpbmRvdyIsImdldEVsZW1lbnRCeUlkIiwicG5vZGUiLCJnZXRFbGVtZW50QnlJZF9leG4iLCJnZXRFbGVtZW50QnlJZF9vcHQiLCJnZXRFbGVtZW50QnlJZF9jb2VyY2UiLCJjcmVhdGVFbGVtZW50IiwiZG9jIiwidW5zYWZlQ3JlYXRlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnRTeW50YXgiLCJ1bnNhZmVDcmVhdGVFbGVtZW50RXgiLCJ0eXBlIiwiZWx0IiwiY3JlYXRlSHRtbCIsImNyZWF0ZUhlYWQiLCJjcmVhdGVMaW5rIiwiY3JlYXRlVGl0bGUiLCJjcmVhdGVNZXRhIiwiY3JlYXRlQmFzZSIsImNyZWF0ZVN0eWxlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUZvcm0iLCJjcmVhdGVPcHRncm91cCIsImNyZWF0ZU9wdGlvbiIsImNyZWF0ZVNlbGVjdCIsImNyZWF0ZUlucHV0IiwiY3JlYXRlVGV4dGFyZWEiLCJjcmVhdGVCdXR0b24iLCJjcmVhdGVMYWJlbCIsImNyZWF0ZUZpZWxkc2V0IiwiY3JlYXRlTGVnZW5kIiwiY3JlYXRlVWwiLCJjcmVhdGVPbCIsImNyZWF0ZURsIiwiY3JlYXRlTGkiLCJjcmVhdGVEaXYiLCJjcmVhdGVFbWJlZCIsImNyZWF0ZVAiLCJjcmVhdGVIMSIsImNyZWF0ZUgyIiwiY3JlYXRlSDMiLCJjcmVhdGVINCIsImNyZWF0ZUg1IiwiY3JlYXRlSDYiLCJjcmVhdGVRIiwiY3JlYXRlQmxvY2txdW90ZSIsImNyZWF0ZVByZSIsImNyZWF0ZUJyIiwiY3JlYXRlSHIiLCJjcmVhdGVJbnMiLCJjcmVhdGVEZWwiLCJjcmVhdGVBIiwiY3JlYXRlSW1nIiwiY3JlYXRlT2JqZWN0IiwiY3JlYXRlUGFyYW0iLCJjcmVhdGVNYXAiLCJjcmVhdGVBcmVhIiwiY3JlYXRlU2NyaXB0IiwiY3JlYXRlVGFibGUiLCJjcmVhdGVDYXB0aW9uIiwiY3JlYXRlQ29sIiwiY3JlYXRlQ29sZ3JvdXAiLCJjcmVhdGVUaGVhZCIsImNyZWF0ZVRmb290IiwiY3JlYXRlVGJvZHkiLCJjcmVhdGVUciIsImNyZWF0ZVRoIiwiY3JlYXRlVGQiLCJjcmVhdGVTdWIiLCJjcmVhdGVTdXAiLCJjcmVhdGVTcGFuIiwiY3JlYXRlVHQiLCJjcmVhdGVJIiwiY3JlYXRlQiIsImNyZWF0ZUJpZyIsImNyZWF0ZVNtYWxsIiwiY3JlYXRlRW0iLCJjcmVhdGVTdHJvbmciLCJjcmVhdGVDaXRlIiwiY3JlYXRlRGZuIiwiY3JlYXRlQ29kZSIsImNyZWF0ZVNhbXAiLCJjcmVhdGVLYmQiLCJjcmVhdGVWYXIiLCJjcmVhdGVBYmJyIiwiY3JlYXRlRGQiLCJjcmVhdGVEdCIsImNyZWF0ZU5vc2NyaXB0IiwiY3JlYXRlQWRkcmVzcyIsImNyZWF0ZUZyYW1lc2V0IiwiY3JlYXRlRnJhbWUiLCJjcmVhdGVJZnJhbWUiLCJjcmVhdGVBdWRpbyIsImNyZWF0ZVZpZGVvIiwiY3JlYXRlQ2FudmFzIiwiaHRtbF9lbGVtZW50IiwidDU0IiwidW5zYWZlQ29lcmNlIiwidGFnIiwidDU1IiwiYXJlYSIsImJhc2UiLCJibG9ja3F1b3RlIiwiYm9keSIsImJyIiwiYnV0dG9uIiwiY2FudmFzIiwiY2FwdGlvbiIsImNvbCIsImNvbGdyb3VwIiwiZGVsIiwiZGl2IiwiZGwiLCJmaWVsZHNldCIsImVtYmVkIiwiZm9ybSIsImZyYW1lc2V0IiwiZnJhbWUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZWFkIiwiaHIiLCJodG1sIiwiaWZyYW1lIiwiaW1nIiwiaW5wdXQkMCIsImlucyIsImxhYmVsIiwibGVnZW5kIiwibGkiLCJsaW5rIiwibWV0YSIsIm9iamVjdCIsIm9sIiwib3B0Z3JvdXAiLCJwcmUiLCJzY3JpcHQiLCJzZWxlY3QkMCIsInN0eWxlIiwidGFibGUiLCJ0Ym9keSIsInRkIiwidGV4dGFyZWEiLCJ0Zm9vdCIsInRoIiwidGhlYWQiLCJ0aXRsZSIsInRyIiwidWwiLCJhdWRpbyIsInZpZGVvIiwidW5zYWZlQ29lcmNlRXZlbnQiLCJtb3VzZUV2ZW50Iiwia2V5Ym9hcmRFdmVudCIsIndoZWVsRXZlbnQiLCJtb3VzZVNjcm9sbEV2ZW50IiwicG9wU3RhdGVFdmVudCIsIm1lc3NhZ2VFdmVudCIsInBhcmFtIiwiZXZlbnRSZWxhdGVkVGFyZ2V0IiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uIiwiZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJDAiLCJlbGVtZW50Q2xpZW50UG9zaXRpb24iLCJnZXREb2N1bWVudFNjcm9sbCIsImJ1dHRvblByZXNzZWQiLCJhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGgiLCJkeCIsImR5IiwiYWRkTW91c2V3aGVlbEV2ZW50TGlzdGVuZXIiLCJ0cnlfY29kZSIsInRyeV9rZXlfY29kZV9sZWZ0IiwidHJ5X2tleV9jb2RlX3JpZ2h0IiwidHJ5X2tleV9jb2RlX251bXBhZCIsInRyeV9rZXlfY29kZV9ub3JtYWwiLCJtYWtlX3VuaWRlbnRpZmllZCIsInJ1bl9uZXh0IiwidmFsdWUiLCJzeW1ib2wiLCJvZl9ldmVudCIsImNoYXJfb2ZfaW50IiwiZW1wdHlfc3RyaW5nIiwibm9uZSIsIm9mX2V2ZW50JDAiLCJlbGVtZW50JDAiLCJ0YWdnZWQiLCJ0MTA1Iiwib3B0X3RhZ2dlZCIsInRhZ2dlZEV2ZW50Iiwib3B0X3RhZ2dlZEV2ZW50Iiwic3RvcFByb3BhZ2F0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiYyIsInJlcSIsIm5vdyIsImxhc3QiLCJkdCIsImR0JDAiLCJoYXNQdXNoU3RhdGUiLCJoYXNQbGFjZWhvbGRlciIsImhhc1JlcXVpcmVkIiwib3ZlcmZsb3dfbGltaXQiLCJzZXRUaW1lb3V0IiwibG9vcCIsInJlbWFpbiIsInN0ZXAiLCJjYiIsImNsZWFyVGltZW91dCIsImpzX2FycmF5X29mX2NvbGxlY3Rpb24iLCJmb3JtRGF0YSIsImZvcm1EYXRhX2Zvcm0iLCJoYXZlX2NvbnRlbnQiLCJmb3JtX2VsZW1lbnRzIiwiaSQyIiwic3RoIiwibmFtZSQxIiwibGlzdCIsImZpbGUiLCJhcHBlbmQiLCJmb3JtX2NvbnRlbnRzIiwiZm9ybV9lbHQiLCJlbXB0eV9mb3JtX2NvbnRlbnRzIiwicG9zdF9mb3JtX2NvbnRlbnRzIiwiY29udGVudHMiLCJnZXRfZm9ybV9jb250ZW50cyIsInJlYWR5c3RhdGVjaGFuZ2UiLCJ0aW1lb3V0Iiwid29ya2VyIiwiY3JlYXRlIiwiaW1wb3J0X3NjcmlwdHMiLCJzY3JpcHRzIiwic2V0X29ubWVzc2FnZSIsImpzX2hhbmRsZXIiLCJwb3N0X21lc3NhZ2UiLCJtc2ciLCJ3ZWJTb2NrZXQiLCJpc19zdXBwb3J0ZWQiLCJkZWZhdWx0Q29udGV4dEF0dHJpYnV0ZXMiLCJ3ZWJnbGNvbnRleHRsb3N0Iiwid2ViZ2xjb250ZXh0cmVzdG9yZWQiLCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yIiwiZ2V0Q29udGV4dCIsImN0eCIsImdldENvbnRleHRXaXRoQXR0cmlidXRlcyIsImF0dHJpYnMiLCJyZWdleHAiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3dpdGhfZmxhZyIsImJsdW50X3N0cl9hcnJheV9nZXQiLCJzdHJpbmdfbWF0Y2giLCJzZWFyY2giLCJyZXNfcHJlIiwibWF0Y2hlZF9zdHJpbmciLCJyIiwibWF0Y2hlZF9ncm91cCIsInF1b3RlX3JlcGxfcmUiLCJxdW90ZV9yZXBsIiwiZ2xvYmFsX3JlcGxhY2UiLCJzX2J5IiwicmVwbGFjZV9maXJzdCIsInQyOSIsImZsYWdzIiwibGlzdF9vZl9qc19hcnJheSIsImlkeCQxIiwiYWNjdSIsImlkeCQwIiwiYWNjdSQwIiwic3BsaXQiLCJib3VuZGVkX3NwbGl0IiwicXVvdGVfcmUiLCJxdW90ZSIsInJlZ2V4cF9zdHJpbmciLCJyZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCIsImludGVycnVwdCIsInBsdXNfcmUiLCJ1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyIsInVybGRlY29kZSIsInVybGVuY29kZSIsIm9wdCIsIndpdGhfcGx1cyIsImRlZmF1bHRfaHR0cF9wb3J0IiwiZGVmYXVsdF9odHRwc19wb3J0IiwicGF0aF9vZl9wYXRoX3N0cmluZyIsImF1eCIsImoiLCJ3b3JkIiwiZW5jb2RlX2FyZ3VtZW50cyIsImRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nIiwibGVuIiwiaW5kZXgiLCJkZWNvZGVfYXJndW1lbnRzIiwidXJsX3JlIiwiZmlsZV9yZSIsInVybF9vZl9qc19zdHJpbmciLCJoYW5kbGUiLCJwcm90X3N0cmluZyIsInNzbCIsInBhdGhfc3RyIiwidXJsIiwidXJsX29mX3N0cmluZyIsInN0cmluZ19vZl91cmwiLCJmcmFnIiwiYXJncyIsInBhdGgiLCJwb3J0IiwiaG9zdCIsImZyYWckMCIsImFyZ3MkMCIsInBhdGgkMCIsInBvcnQkMCIsImhvc3QkMCIsImZyYWckMSIsImFyZ3MkMSIsInBhdGgkMSIsInByb3RvY29sIiwicGF0aF9zdHJpbmciLCJhcmd1bWVudHMkMCIsImdldF9mcmFnbWVudCIsInNldF9mcmFnbWVudCIsInUiLCJhc19zdHJpbmciLCJ1cGRhdGVfZmlsZSIsImNvbnRlbnQiLCJvYyIsInNldF9jaGFubmVsX2ZsdXNoZXIiLCJvdXRfY2hhbm5lbCIsImYkMCIsInNldF9jaGFubmVsX2ZpbGxlciIsImluX2NoYW5uZWwiLCJtb3VudCIsInByZWZpeCIsInVubW91bnQiLCJqc19vZl9vY2FtbF92ZXJzaW9uIiwiZW1wdHlfcmVzaXplX29ic2VydmVyX29wdGlvbnMiLCJyZXNpemVPYnNlcnZlciIsIm9ic2VydmUiLCJub2RlIiwiYm94Iiwib2JzIiwicGVyZm9ybWFuY2VPYnNlcnZlciIsImVudHJ5X3R5cGVzIiwiZW1wdHlfbXV0YXRpb25fb2JzZXJ2ZXJfaW5pdCIsIm11dGF0aW9uT2JzZXJ2ZXIiLCJjaGlsZF9saXN0IiwiYXR0cmlidXRlcyIsImNoYXJhY3Rlcl9kYXRhIiwic3VidHJlZSIsImF0dHJpYnV0ZV9vbGRfdmFsdWUiLCJjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUiLCJhdHRyaWJ1dGVfZmlsdGVyIiwiayIsInJlbW92ZSIsImZpbmQiLCJqc29uIiwicmV2aXZlciIsImlucHV0X3Jldml2ZXIiLCJ1bnNhZmVfaW5wdXQiLCJtbEludDY0X2NvbnN0ciIsIm91dHB1dF9yZXZpdmVyIiwib3V0cHV0Iiwic3RyaW5nX29mX25hbWUiLCJuYW1lX29mX3N0cmluZyIsInJnYl9vZl9uYW1lIiwicmdiIiwiaHNsIiwic3RyaW5nX29mX3QiLCJiJDAiLCJnJDAiLCJyJDAiLCJiJDEiLCJnJDEiLCJyJDEiLCJiJDIiLCJnJDIiLCJyJDIiLCJhJDEiLCJoJDAiLCJoZXhfb2ZfcmdiIiwiYmx1ZSIsImdyZWVuIiwicmVkIiwiaW5fcmFuZ2UiLCJqc190X29mX2pzX3N0cmluZyIsInJnYl9yZSIsInJnYl9wY3RfcmUiLCJyZ2JhX3JlIiwicmdiYV9wY3RfcmUiLCJoc2xfcmUiLCJoc2xhX3JlIiwianMiLCJjbiIsIm1sIiwiZmFpbCIsInJlX3JnYiIsInJlX3JnYl9wY3QiLCJyZV9oc2wiLCJpX29mX3NfbyIsImZfb2ZfcyIsImFscGhhIiwicmVkJDAiLCJncmVlbiQwIiwiYmx1ZSQwIiwiYWxwaGEkMCIsInJlZCQxIiwiZ3JlZW4kMSIsImJsdWUkMSIsImFscGhhJDEiLCJzdHJpbmdfb2ZfdCQwIiwiZiQxIiwiZiQyIiwiZiQzIiwiZiQ0IiwiZiQ1IiwiZiQ2IiwiZiQ3IiwiZiQ4IiwiZiQ5IiwiZiQxMCIsImYkMTEiLCJmJDEyIiwianMkMCIsIm1sJDAiLCJyZSIsInN0cmluZ19vZl90JDEiLCJqcyQxIiwibWwkMSIsImxpc3RlbiIsInRhcmdldCIsInN0b3BfbGlzdGVuIiwieG1sbnMiLCJjcmVhdGVBbHRHbHlwaCIsImNyZWF0ZUFsdEdseXBoRGVmIiwiY3JlYXRlQWx0R2x5cGhJdGVtIiwiY3JlYXRlQW5pbWF0ZSIsImNyZWF0ZUFuaW1hdGVDb2xvciIsImNyZWF0ZUFuaW1hdGVNb3Rpb24iLCJjcmVhdGVBbmltYXRlVHJhbnNmb3JtIiwiY3JlYXRlQ2lyY2xlIiwiY3JlYXRlQ2xpcFBhdGgiLCJjcmVhdGVDdXJzb3IiLCJjcmVhdGVEZWZzIiwiY3JlYXRlRGVzYyIsImNyZWF0ZUVsbGlwc2UiLCJjcmVhdGVGaWx0ZXIiLCJjcmVhdGVGb250IiwiY3JlYXRlRm9udEZhY2UiLCJjcmVhdGVGb250RmFjZUZvcm1hdCIsImNyZWF0ZUZvbnRGYWNlTmFtZSIsImNyZWF0ZUZvbnRGYWNlU3JjIiwiY3JlYXRlRm9udEZhY2VVcmkiLCJjcmVhdGVGb3JlaWduT2JqZWN0IiwiY3JlYXRlRyIsImNyZWF0ZUdseXBoIiwiY3JlYXRlR2x5cGhSZWYiLCJjcmVhdGVoa2VybiIsImNyZWF0ZUltYWdlIiwiY3JlYXRlTGluZUVsZW1lbnQiLCJjcmVhdGVMaW5lYXJFbGVtZW50IiwiY3JlYXRlTWFzayIsImNyZWF0ZU1ldGFEYXRhIiwiY3JlYXRlTWlzc2luZ0dseXBoIiwiY3JlYXRlTVBhdGgiLCJjcmVhdGVQYXRoIiwiY3JlYXRlUGF0dGVybiIsImNyZWF0ZVBvbHlnb24iLCJjcmVhdGVQb2x5bGluZSIsImNyZWF0ZVJhZGlhbGdyYWRpZW50IiwiY3JlYXRlUmVjdCIsImNyZWF0ZVNldCIsImNyZWF0ZVN0b3AiLCJjcmVhdGVTdmciLCJjcmVhdGVTd2l0Y2giLCJjcmVhdGVTeW1ib2wiLCJjcmVhdGVUZXh0RWxlbWVudCIsImNyZWF0ZVRleHRwYXRoIiwiY3JlYXRlVHJlZiIsImNyZWF0ZVRzcGFuIiwiY3JlYXRlVXNlIiwiY3JlYXRlVmlldyIsImNyZWF0ZXZrZXJuIiwic3ZnX2VsZW1lbnQiLCJ0OCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJhbmltYXRlIiwiYW5pbWF0ZUNvbG9yIiwiYW5pbWF0ZU1vdGlvbiIsImFuaW1hdGVUcmFuc2Zvcm0iLCJjaXJjbGUiLCJjbGlwUGF0aCIsImN1cnNvciIsImRlZnMiLCJkZXNjIiwiZWxsaXBzZSIsImZpbHRlciIsImZvbnQiLCJmb250RmFjZSIsImZvbnRGYWNlRm9ybWF0IiwiZm9udEZhY2VOYW1lIiwiZm9udEZhY2VTcmMiLCJmb250RmFjZVVyaSIsImZvcmVpZ25PYmplY3QiLCJnbHlwaCIsImdseXBoUmVmIiwiaGtlcm4iLCJpbWFnZSIsImxpbmVFbGVtZW50IiwibGluZWFyRWxlbWVudCIsIm1ldGFEYXRhIiwibWlzc2luZ0dseXBoIiwibVBhdGgiLCJwYXR0ZXJuIiwicG9seWdvbiIsInBvbHlsaW5lIiwicmFkaWFsZ3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInN2ZyIsInN3aXRjaCQwIiwidGV4dEVsZW1lbnQiLCJ0ZXh0cGF0aCIsInRyZWYiLCJ0c3BhbiIsInVzZSIsInZpZXciLCJ2a2VybiIsIndpdGhDcmVkZW50aWFscyIsImV2ZW50U291cmNlIiwiZXZlbnRTb3VyY2Vfb3B0aW9ucyIsImNvbnNvbGUiLCJlbXB0eV9wb3NpdGlvbl9vcHRpb25zIiwiZ2VvbG9jYXRpb24iLCJlbXB0eV9pbnRlcnNlY3Rpb25fb2JzZXJ2ZXJfb3AiLCJpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmUiLCJvYmplY3Rfb3B0aW9ucyIsIm9wdGlvbnMkMSIsIm9wdGlvbnMkMiIsImludGwiLCJjb2xsYXRvcl9jb25zdHIiLCJkYXRlVGltZUZvcm1hdF9jb25zdHIiLCJudW1iZXJGb3JtYXRfY29uc3RyIiwicGx1cmFsUnVsZXNfY29uc3RyIiwiZXF1YWwiLCJ4IiwieSIsImNvbXBhcmUiLCJ0b19pbnQiLCJwcCIsImludGVyc2VjdCIsInN5bWJvbCIsImxldHRlciIsIm5vdF9sZXR0ZXIiLCJkdW1teSIsImluZXhpc3RhbnQiLCJuZXdsaW5lIiwibGFzdG5ld2xpbmUiLCJzZWFyY2hfYm91bmRhcnkiLCJmcm9tX2NoYXIiLCJzZXhwIiwiZm10IiwicyIsInBhaXIiLCJwcDEiLCJwcDIiLCJ2MiIsInYxIiwidHJpcGxlIiwicHAzIiwidjMiLCJvcHRpbnQiLCJpIiwicXVvdGUiLCJwcF9vbGlzdCIsInBwX2VsZW0iLCJwcF9zdHJfbGlzdCIsInRvX3RvX3N0cmluZyIsImIiLCJjYW55IiwidW5pb24iLCJsJDAiLCJsIiwibCQyIiwibCQxIiwiciIsImMyIiwiYzEiLCJyJDAiLCJjMiQwIiwiYzEkMCIsImwkMyIsImwkNCIsImludGVyIiwiZGlmZiIsInIkMSIsInNpbmdsZSIsImMiLCJhZGQiLCJzZXEiLCJjJDAiLCJvZmZzZXQiLCJvIiwiZW1wdHkiLCJtZW0iLCJzJDAiLCJyZW0iLCJoYXNoX3JlYyIsImoiLCJoYXNoIiwicHJpbnRfb25lIiwiY2giLCJpdGVyIiwidCIsImYiLCJ0JDAiLCJ4cyIsIm9uZV9jaGFyIiwidiIsInUiLCJmb2xkX3JpZ2h0IiwiaW5pdCIsImNzaW5nbGUiLCJpc19lbXB0eSIsInByZXBlbmQiLCJ4JDAiLCJkIiwiZCQwIiwicGljayIsImdlbiIsImVwc19leHByIiwiaGFzaF9jb21iaW5lIiwiaCIsImFjY3UiLCJtZXJnZV9tYXJrc19vZmZzZXQiLCJvbGQiLCJudyIsIm1lcmdlIiwibSIsImFjY3UkMSIsImFjY3UkMiIsImEiLCJhY2N1JDAiLCJpZHgiLCJtYXJrcyIsIm1hcmtzX3NldF9pZHgiLCJwcF9tYXJrcyIsInBwX3NlbSIsImsiLCJwcF9yZXBfa2luZCIsImUiLCJlJDAiLCJlJDEiLCJlJDIiLCJrJDAiLCJlJDMiLCJpJDAiLCJmaXJzdCIsInJlcyIsImNyZWF0ZV9pZHMiLCJta19leHByIiwiaWRzIiwiZGVmIiwiZW1wdHkkMCIsImNzdCIsImFsdCIsImtpbmQiLCJpc19lcHMiLCJleHByIiwiZXBzIiwicmVwIiwic2VtIiwibWFyayIsInBtYXJrIiwiZXJhc2UiLCJtJDAiLCJiZWZvcmUiLCJhZnRlciIsInJlbmFtZSIsInoiLCJ5JDAiLCJnIiwibDEiLCJsMiIsImwxJDAiLCJsMiQwIiwicjEiLCJlMSIsImwxJDEiLCJyMiIsImUyIiwibDIkMSIsInIxJDAiLCJlMSQwIiwibWFya3MxIiwicjIkMCIsImUyJDAiLCJtYXJrczIiLCJyMSQxIiwibWFya3MxJDAiLCJyMiQxIiwibWFya3MyJDAiLCJoYXNoJDAiLCJtYXJrcyQwIiwiYWNjdSQzIiwidHNlcSIsInByaW50X3N0YXRlX3JlYyIsInByaW50X3N0YXRlX2xzdCIsInBwJDAiLCJtayIsImNhdCIsImRlc2MiLCJjcmVhdGUiLCJlcXVhbCQwIiwiaGFzaCQxIiwiY3JlYXRlX3dvcmtpbmdfYXJlYSIsImluZGV4X2NvdW50IiwidyIsIm1hcmtfdXNlZF9pbmRpY2VzIiwidGJsIiwiZnJlZV9pbmRleCIsInRibF9yZWYiLCJsZW4iLCJpZHgkMCIsInJlbW92ZV9tYXRjaGVzIiwic3BsaXRfYXRfbWF0Y2giLCJyZW1vdmVfZHVwbGljYXRlcyIsInByZXYiLCJwcmV2JDAiLCJwcmV2JDEiLCJwcmV2JDIiLCJyJDIiLCJyJDMiLCJ4JDEiLCJwcmV2JDMiLCJyJDQiLCJzZXRfaWR4IiwiZmlsdGVyX21hcmtzIiwiZGVsdGFfMSQwIiwibmV4dF9jYXQiLCJwcmV2X2NhdCIsImRlbHRhXzIkMCIsImRlbHRhXzEiLCJkZWx0YV9zZXEkMCIsInkkMSIsImtpbmQkMCIsInJlcF9raW5kIiwieSQyIiwibWFya3MkMSIsInkkMyIsIm1hcmtzJDIiLCJjYXQkMCIsIm1hcmtzJDMiLCJkZWx0YV8yIiwiZGVsdGFfc2VxIiwiZGVsdGFfNCIsInJlbSQwIiwiZGVsdGEiLCJjaGFyJDAiLCJzdCIsImV4cHIkMCIsInJlZF90ciIsInRyMiIsInN0MiIsInMyIiwidHIxIiwic3QxIiwiczEiLCJwcmVwZW5kX2Rlcml2IiwicmVzdHJpY3QiLCJzJDEiLCJwcmVwZW5kX21hcmtzX2V4cHJfbHN0IiwibSQxIiwiZGVyaXZfMSQwIiwiYWxsX2NoYXJzIiwiY2F0ZWdvcmllcyIsInJlbSQxIiwiZGVyaXZfMiQwIiwiZGVyaXZfMSIsImRlcml2X3NlcSIsInokMCIsInJlbSQyIiwiY2F0JDEiLCJkZXJpdl8yIiwieGwiLCJ6JDEiLCJkZXJpdl80IiwiZGVyaXYiLCJkZXIiLCJleHByJDEiLCJzdGF0dXMiLCJtYSIsInN0JDAiLCJtYWtlIiwiZmxhdHRlbiIsImNtIiwiY29sb3JfcmVwciIsInNwbGl0IiwiZHVtbXlfb2Zmc2V0IiwibTEiLCJwMSIsInAyIiwiZ2V0Iiwic3RhcnQiLCJzdWJzIiwic3RvcCIsInRlc3QiLCJnZXRfb3B0IiwiYWxsX29mZnNldCIsImFsbCIsIm9mZnNldHMiLCJzdHJzIiwibWF0Y2hlcyIsInBwX21hdGNoIiwic3RyIiwibmJfZ3JvdXBzIiwibiIsIm4kMCIsInYkMCIsInYkMSIsIm4kMSIsInVua25vd24iLCJicmVhayQwIiwicHBfcmUiLCJyZSIsImdyb3VwX2NvdW50IiwiZ3JvdXBfbmFtZXMiLCJjYXRlZ29yeSIsImNvbG9yIiwiZHVtbXlfbmV4dCIsInVua25vd25fc3RhdGUiLCJmaW5kX3N0YXRlIiwibmNvbCIsImJyZWFrX3N0YXRlIiwiaW5mbyIsInBvcyIsInZhbGlkYXRlIiwiZ2V0X2NvbG9yIiwic2xlbiIsInNjYW5fc3RyIiwiaW5pdGlhbF9zdGF0ZSIsImdyb3VwcyIsInBvcyQzIiwibGFzdCIsImluZm8kMCIsInN0JDUiLCJwb3MkNCIsInN0JDMiLCJyZWFsX2MiLCJzdCQ0IiwicG9zJDAiLCJwb3MkMSIsInN0JDEiLCJzdCQyIiwicG9zJDIiLCJmaW5hbF9ib3VuZGFyeV9jaGVjayIsImZpbmFsX2NhdCIsInJlcyQwIiwibWF0Y2hfc3RyIiwicGFydGlhbCIsImluaXRpYWxfY2F0Iiwic3RhdHVzJDAiLCJwbWFya3MiLCJub19tYXRjaF9zdGFydHNfYmVmb3JlIiwiY3NlcSIsImNhZGQiLCJ2aWV3IiwidmFyJDAiLCJyZWwiLCJzcSIsInJlJDAiLCJyZSQxIiwiYyQxIiwiYyQyIiwiYyQzIiwiYyQ0IiwiYyQ1IiwiYyQ2IiwiaXNfY2hhcnNldCIsImN1cHBlciIsImNsb3dlciIsImNhbHBoYSIsImNkaWdpdCIsImNhbG51bSIsImN3b3JkIiwieDEiLCJ4MiIsIngxJDAiLCJ4MiQwIiwiZXFfbGlzdCIsImoyIiwiaTIiLCJ4MiQxIiwiajEiLCJpMSIsIngxJDEiLCJ4MiQyIiwic2VtMiIsIngxJDIiLCJzZW0xIiwieDIkMyIsImsyIiwieDEkMyIsImsxIiwieDIkNCIsIngxJDQiLCJ4MiQ1IiwieDEkNSIsIngyJDYiLCJ4MSQ2IiwieDIkNyIsIngxJDciLCJsMiQyIiwibDEkMiIsIngyJDgiLCJ4MiQ5IiwieDEkOCIsIngxJDkiLCJtMiIsInNlcXVlbmNlIiwibWVyZ2Vfc2VxdWVuY2VzIiwiZW5mb3JjZV9raW5kIiwiY3IiLCJ0cmFuc2xhdGUiLCJpZ25fY2FzZSIsIm5hbWVzIiwiY2FjaGUiLCJpZ25fZ3JvdXAkMCIsImdyZWVkeSQwIiwidHJhbnNfc2VxIiwibWVyZ2VkX3NlcXVlbmNlcyIsImtpbmQkMSIsImNyJDAiLCJqJDAiLCJraW5kJDIiLCJraW5kJDMiLCJjciQxIiwiZ3JlZWR5JDEiLCJwIiwibmFtZSIsImtpbmQkNCIsImNyJDIiLCJyJDUiLCJraW5kJDUiLCJjciQzIiwiciQ2IiwiaSQxIiwia2luZCQ2IiwiY3IkNCIsImlnbl9ncm91cCIsImdyZWVkeSIsImFzX3NldCIsImhhbmRsZV9jYXNlIiwiaWduX2Nhc2UkMCIsInIkNyIsInIkOCIsInIkOSIsInIkMTAiLCJyJDExIiwiciQxMiIsImwkNSIsInIkMTMiLCJyJDE0IiwiciQxNSIsImFuY2hvcmVkIiwiZXBzaWxvbiIsInJlcG4iLCJyZXAxIiwib3B0IiwiYm93IiwiZW93IiwiYm9sIiwiZW9sIiwid29yZCIsImJvcyIsImVvcyIsIm5vdF9ib3VuZGFyeSIsIndob2xlX3N0cmluZyIsImxlb2wiLCJsb25nZXN0Iiwic2hvcnRlc3QiLCJub25fZ3JlZWR5IiwiZ3JvdXAiLCJub19ncm91cCIsIm5lc3QiLCJzZXQiLCJyZyIsImNvbXBsIiwiYW55Iiwibm90bmwiLCJsb3dlciIsInVwcGVyIiwiYWxwaGEiLCJkaWdpdCIsImFsbnVtIiwid29yZGMiLCJhc2NpaSIsImJsYW5rIiwiY250cmwiLCJncmFwaCIsInByaW50IiwicHVuY3QiLCJzcGFjZSIsInhkaWdpdCIsImNhc2UkMCIsIm5vX2Nhc2UiLCJjb21waWxlIiwicmVnZXhwJDAiLCJyZWdleHAiLCJsbmwiLCJjb2xvcml6ZSIsInJlZ2V4cCQxIiwicmVnZXhwJDIiLCJuZWVkX2xubCIsIm5jb2xvciIsImNvbG9ycyIsImxubCQwIiwibmNvbG9yJDAiLCJpbml0aWFsIiwiZXhlY19pbnRlcm5hbCIsInN0aCIsInN0aCQwIiwiZXhlYyIsInN1YnN0ciIsImV4ZWNfb3B0IiwiZXhlY3AiLCJleGVjX3BhcnRpYWwiLCJleGVjX3BhcnRpYWxfZGV0YWlsZWQiLCJtYXJrZWQiLCJtYXJrX3NldCIsImFsbF9zZXEiLCJsaW1pdCIsImF1eCIsIm1hdGNoZXNfc2VxIiwic3ViIiwic3BsaXRfZnVsbF9zZXEiLCJzdGF0ZSIsIm9sZF9pIiwidGV4dCIsInRleHQkMCIsInN0YXRlJDAiLCJzcGxpdF9zZXEiLCJmaWx0ZXIiLCJzZXEkMCIsInRsIiwic2VxJDEiLCJsaXN0X29mX3NlcSIsInNwbGl0X2Z1bGwiLCJnZW5fb2Zfc2VxIiwic3BsaXRfZ2VuIiwic3BsaXRfZnVsbF9nZW4iLCJhbGxfZ2VuIiwibWF0Y2hlc19nZW4iLCJyZXBsYWNlIiwiYnVmIiwicmVwbGFjaW5nIiwicmVwbGFjZV9zdHJpbmciLCJieSIsIndpdG5lc3MiLCJmcm9tIiwiZ2V0X29mcyIsImdldF9hbGwiLCJnZXRfYWxsX29mcyIsInRlc3QyIiwiYWNjZXB0IiwiYWNjZXB0MiIsImxlZnQiLCJicmFuY2giLCJsZWZ0JDAiLCJsZWZ0JDEiLCJicmFja2V0IiwicyQyIiwiY29tcGlsZV9wYXQiLCJjb21waWxlX3JlZ2V4cCIsInN0cmluZ19tYXRjaCIsInN0cmluZ19wYXJ0aWFsX21hdGNoIiwic2VhcmNoX2ZvcndhcmQiLCJzZWFyY2hfYmFja3dhcmQiLCJwJDAiLCJwJDEiLCJ2YWxpZF9ncm91cCIsIm9mZnNldF9ncm91cCIsInJlcGxhY2VtZW50X3RleHQiLCJyZXBsIiwib3JpZyIsInEiLCJxJDAiLCJxJDEiLCJwJDIiLCJsZW4kMCIsInAkMyIsInEkMiIsInEkMyIsInAkNCIsImIkMCIsInEkNSIsInAkNiIsInEkNCIsInAkNSIsInEkNiIsInAkNyIsInN0cmluZ19iZWZvcmUiLCJzdHJpbmdfYWZ0ZXIiLCJmaXJzdF9jaGFycyIsImxhc3RfY2hhcnMiLCJyZWdleHBfY2FzZV9mb2xkIiwicmVnZXhwX3N0cmluZyIsInJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIiwiZ3JvdXBfYmVnaW5uaW5nIiwiZ3JvdXBfZW5kIiwibWF0Y2hlZF9ncm91cCIsInR4dCIsInJlcGxhY2VfbWF0Y2hlZCIsIm1hdGNoZWQiLCJtYXRjaF9iZWdpbm5pbmciLCJtYXRjaF9lbmQiLCJtYXRjaGVkX3N0cmluZyIsInN1YnN0aXR1dGVfZmlyc3QiLCJyZXBsX2Z1biIsImdsb2JhbF9zdWJzdGl0dXRlIiwibGFzdF93YXNfZW1wdHkiLCJzdGFydHBvcyIsImVuZF9wb3MiLCJyZXBsX3RleHQiLCJsYXN0X3dhc19lbXB0eSQwIiwiZ2xvYmFsX3JlcGxhY2UiLCJyZXBsYWNlX2ZpcnN0Iiwic2VhcmNoX2ZvcndhcmRfcHJvZ3Jlc3MiLCJib3VuZGVkX3NwbGl0IiwibnVtIiwiYm91bmRlZF9zcGxpdF9kZWxpbSIsInNwbGl0X2RlbGltIiwiYm91bmRlZF9mdWxsX3NwbGl0IiwiZnVsbF9zcGxpdCIsImJlZyIsIm11bCIsImV4cGxpY2l0X3BlcmlvZCIsInNsYXNoZXMiLCJhcHBlbmQiLCJwaWVjZSIsImFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCIsIm5leHQiLCJyZW1haW5pbmciLCJvbmUiLCJleHBsaWNpdF9zbGFzaCIsImVuY2xvc2VkIiwiaGlnaCIsImxvdyIsImVuY2xvc2VkX3NldCIsInNldCQwIiwiZW5jbG9zdXJlIiwiZXhhY3RseSIsInNsYXNoZXMkMCIsImNoYXJzIiwibWFueV9tYW55IiwiZXhwbGljaXRfcGVyaW9kJDAiLCJmaXJzdF9leHBsaWNpdF9wZXJpb2QiLCJtYXRjaF9jb21wb25lbnQiLCJnbG9iIiwicGF0aG5hbWUiLCJzdGgkMSIsIm1hdGNoX2JhY2tzbGFzaGVzIiwic3RoJDIiLCJwZXJpb2QiLCJzdGgkMyIsImV4cGFuZF9icmFjZXMiLCJzdGgkNCIsImRvdWJsZV9hc3RlcmlzayIsInRvX3JlIiwicmVhZCIsInBpZWNlcyIsImZvdW5kIiwicGllY2VzJDAiLCJzdGF0ZSQ4Iiwic3RhdGUkOSIsImV4cGxpY2l0X3NsYXNoJDAiLCJleHBsaWNpdF9wZXJpb2QkMSIsInNsYXNoZXMkMSIsInN0YXRlJDEwIiwibm90X2VtcHR5IiwibWF5YmVfZW1wdHkiLCJub3RfZW1wdHkkMSIsImVuY2xvc2VkX3NldCQwIiwic3RhdGUkMiIsInN0YXRlJDQiLCJub3RfZW1wdHkkMCIsInN0YXRlJDUiLCJzdGF0ZSQ2IiwiZW5jbG9zZWQkMCIsInN0YXRlJDciLCJlbmNsb3NlZCQxIiwic3RhdGUkMyIsInN0YXRlJDEiLCJlbmNsb3NlZCQyIiwiZW5jbG9zZWQkMyIsImV4cGwiLCJpbm5lciIsImFjYyIsImJlZyQwIiwiYWNjJDAiLCJiZWckMSIsImFjYyQxIiwiaSQzIiwiYmVnJDIiLCJpJDQiLCJpJDIiLCJnbG9iJDAiLCJnbG9ieCIsImdsb2J4JDAiLCJwb3NpeF9jbGFzc19zdHJpbmdzIiwib3B0cyIsInVuZ3JlZWR5IiwiZG90YWxsIiwiZG9sbGFyX2VuZG9ubHkiLCJtdWx0aWxpbmUiLCJhY2NlcHRfcyIsInVuZ2V0IiwiZ3JlZWR5X21vZCIsImdyIiwiZ3IkMCIsImF0b20iLCJpbnRlZ2VyIiwiaGV4ZGlnaXQiLCJjb2RlIiwicyQzIiwicyQ0IiwiY2xhc3MkMCIsInBvc2l4X2NsYXNzIiwicGF0IiwiZmxhZ3MiLCJleHRyYWN0IiwicmV4IiwiZ2V0X3N1YnN0cmluZyIsImdldF9uYW1lZF9zdWJzdHJpbmciLCJnZXRfc3Vic3RyaW5nX29mcyIsInBtYXRjaCIsInN1YnN0aXR1dGUiLCJzdWJzdCIsInNzIiwiZmluIiwibWF4IiwicmVzdWx0cyIsImRlbGltIiwiZm1hcCIsImYiLCJuaWwiLCJzaW5nbGV0b24iLCJ4IiwiY29ucyIsInhzIiwiYXBwZW5kIiwieSIsIm1hcCIsIm9mX2xpc3QiLCJsIiwiYSIsImIiLCJtayIsImNoaWxkcmVuIiwic2VxIiwiY2hpbGRyZW4kMCIsInNlcSQwIiwicmVzdCIsInEiLCJhdHRycyIsIm5hbWUiLCJ2IiwicmVzdCQwIiwic3ViX2NoaWxkcmVuIiwiY2hpbGRyZW4kMSIsInNlcSQxIiwicyIsImNoaWxkcmVuJDIiLCJzZXEkMiIsInMkMCIsImNoaWxkcmVuJDMiLCJvZl9zZXEiLCJhZGRfdW5zYWZlX2NoYXIiLCJjIiwiZW5jb2RlX3Vuc2FmZV9jaGFyIiwiZW5jb2RlX3Vuc2FmZV9jaGFyX2FuZF9hdCIsImNvbXBvc2VfZGVjbCIsIm9wdCIsInN0aCIsInZlcnNpb24iLCJzdGgkMCIsImVuY29kaW5nIiwiY29tcG9zZV9kb2N0eXBlIiwiZHQiLCJhcmdzIiwicHBfYXJncyIsImZtdCIsInJlX2VuZF9jb21tZW50IiwicHBfbnVtYmVyIiwidmludCIsInMxIiwiczIiLCJuIiwiaSIsImkkMCIsIm4kMCIsInN0cmluZ19vZl9udW1iZXIiLCJub3JtYWxpemUiLCJzcmMiLCJ3YXJuIiwiYnVmZmVyIiwiZCIsImNvZGUiLCJub3JtYWxpemVfaHRtbCIsInUiLCJ1JDAiLCJwcF9ub29wIiwib3Blbl9ib3giLCJpbmRlbnQiLCJjbG9zZV9ib3giLCJzcCIsImN1dCIsInNldCIsImlzX2VtcHR5dGFnIiwicHBfZW5jb2RlIiwiZW5jb2RlIiwicHBfc2VwIiwicHBfYXR0cmliX3ZhbHVlIiwic2xpc3QiLCJzZXAiLCJwcF9hdHRyaWIiLCJwcF9hdHRyaWJzIiwicHBfdGFnX2FuZF9hdHRyaWJzIiwidGFnIiwicHBfY2xvc2VkdGFnIiwicHBfdGFnIiwicHBfZWx0cyIsInBwX2VsdCIsImVsdCIsInRleHRlIiwiZyIsInRleHRlJDAiLCJ0ZXh0ZSQxIiwiZSIsInhoX2F0dHJzIiwieGhfdGFnbGlzdCIsInhoX2F0dHJzJDAiLCJuYW1lJDAiLCJwcCIsInN5bWJvbCIsInNlcGFyYXRvcl90b19zdHJpbmciLCJhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIiwiYXR0cmliX3RvX3N0cmluZyIsInhoX3ByaW50X2F0dHJzIiwicXVldWUiLCJhdHRyIiwieGhfcHJpbnRfY2xvc2VkdGFnIiwieGhfcHJpbnRfdGFnIiwidGFnbGlzdCIsInhoX3ByaW50X3RhZ2xpc3QiLCJwcmludF9ub2RlcyIsInRhZ2xpc3QkMCIsInRhZ2xpc3QkMSIsInByaW50X2xpc3QiLCJmb3JldCIsInByaW50IiwiZG9jIiwiYWR2ZXJ0IiwiZG9jJDAiLCJhJDAiLCJkb2MkMSIsImVtcHR5IiwiY29uY2F0IiwiZjEiLCJmMiIsInB1dCIsIm1ha2UiLCJvdXRwdXQiLCJhbWFwMSIsImF0dHJpYnMiLCJlbHRzIiwiYXR0cmlicyQwIiwiYW1hcCIsImFkZF9mbG9hdF9hdHRyaWIiLCJ2YWx1ZSIsImhlYWQiLCJ0YWlsIiwidGFpbCQwIiwibWFwX2Zsb2F0X2F0dHJpYiIsImlzX2F0dHJpYiIsImF1eCIsImFkZF9pbnRfYXR0cmliIiwicm1fYXR0cmliIiwibWFwX2ludF9hdHRyaWIiLCJhZGRfc3RyaW5nX2F0dHJpYiIsIm1hcF9zdHJpbmdfYXR0cmliIiwiYWRkX3NwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJhZGRfY29tbWFfc2VwX2F0dHJpYiIsInJtX2F0dHJpYl9mcm9tX2xpc3QiLCJpc192YWx1ZSIsInZhbHVlcyQwIiwibWFwX3N0cmluZ19hdHRyaWJfaW5fbGlzdCIsImZvbGQiLCJvZl9lbXB0eSIsIm9mX2NvbW1lbnQiLCJvZl90eHQiLCJvZl9lbmNvZGVkcGNkYXRhIiwib2ZfZW50aXR5Iiwib2ZfbGVhZiIsIm9mX25vZGUiLCJzJDEiLCJzJDIiLCJhbGxfZW50aXRpZXMiLCJlbmFtZSIsImZsYXRtYXAiLCJ0cmFuc2xhdGUiLCJyb290X2xlYWYiLCJyb290X25vZGUiLCJzdWJfbGVhZiIsInN1Yl9ub2RlIiwidXBkYXRlX3N0YXRlIiwic3RhdGUiLCJjb250ZW50X3R5cGUiLCJzdGFuZGFyZCIsIm5hbWVzcGFjZSIsImNzdCQxIiwic3RyaW5nX29mX2lyaSIsInRvX3N0cmluZyIsInVuaXQiLCJ1bml0JDAiLCJhbmdsZV9uYW1lcyIsInN0cmluZ19vZl9hbmdsZSIsImxlbmd0aF9uYW1lcyIsInN0cmluZ19vZl9sZW5ndGgiLCJsaXN0Iiwic3RyaW5nX29mX3BhaW50X3doaXRvdXRfaWNjIiwic3RyaW5nX29mX3BhaW50IiwiaXJpIiwic3RyaW5nX29mX2ZpbGxfcnVsZSIsImRvY3R5cGUiLCJzdHJpbmdfb2ZfdXJpIiwidXJpX29mX3N0cmluZyIsInRvdCIsInRvdGwiLCJ0b2VsdCIsInRvZWx0bCIsInRvX2F0dHJpYiIsIm51bGxhcnkiLCJ1bmFyeSIsInN0YXIiLCJ0b194bWxhdHRyaWJzIiwiZmxvYXRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInN0cmluZ19vZl9jb29yZCIsInN0cmluZ19vZl9sZW5ndGhzIiwidXNlcl9hdHRyaWIiLCJjb2xvcl9hdHRyaWIiLCJtZXRhZGF0YSIsImZvcmVpZ25PYmplY3QiLCJ0eHQiLCJhX3ZlcnNpb24iLCJhX2Jhc2VQcm9maWxlIiwiYV94IiwiYV95IiwiYV93aWR0aCIsImFfaGVpZ2h0IiwiYV9wcmVzZXJ2ZUFzcGVjdFJhdGlvIiwiYV9jb250ZW50U2NyaXB0VHlwZSIsImFfY29udGVudFN0eWxlVHlwZSIsImFfem9vbUFuZFBhbiIsImFfaHJlZiIsImFfeGxpbmtfaHJlZiIsImFfcmVxdWlyZWRGZWF0dXJlcyIsImFfcmVxdWlyZWRFeHRlbnNpb25zIiwiYV9zeXN0ZW1MYW5ndWFnZSIsImFfZXh0ZXJuYWxSZXNzb3VyY2VzUmVxdWlyZWQiLCJhX2lkIiwiYV91c2VyX2RhdGEiLCJhX3htbF9iYXNlIiwiYV94bWxfbGFuZyIsImFfeG1sX3NwYWNlIiwiYV90eXBlIiwiYV9tZWRpYSIsImFfeGxpbmtfdGl0bGUiLCJhX2NsYXNzIiwiYV9zdHlsZSIsImFfdHJhbnNmb3JtIiwiYV92aWV3Qm94IiwiYV9kIiwiYV9wYXRoTGVuZ3RoIiwiYV9yeCIsImFfcnkiLCJhX2N4IiwiYV9jeSIsImFfciIsImFfeDEiLCJhX3kxIiwiYV94MiIsImFfeTIiLCJhX3BvaW50cyIsImFfeF9saXN0IiwiYV95X2xpc3QiLCJhX2R4IiwiYV9keSIsImFfZHhfbGlzdCIsImFfZHlfbGlzdCIsImFfbGVuZ3RoQWRqdXN0IiwiYV90ZXh0TGVuZ3RoIiwiYV90ZXh0X2FuY2hvciIsImFfdGV4dF9kZWNvcmF0aW9uIiwiYV90ZXh0X3JlbmRlcmluZyIsImFfcm90YXRlIiwiYV9zdGFydE9mZnNldCIsImFfbWV0aG9kIiwiYV9zcGFjaW5nIiwiYV9nbHlwaFJlZiIsImFfZm9ybWF0IiwiYV9tYXJrZXJVbml0cyIsImFfcmVmWCIsImFfcmVmWSIsImFfbWFya2VyV2lkdGgiLCJhX21hcmtlckhlaWdodCIsImFfb3JpZW50IiwiYV9sb2NhbCIsImFfcmVuZGVyaW5nX2ludGVudCIsImFfZ3JhZGllbnRVbml0cyIsImFfZ3JhZGllbnRUcmFuc2Zvcm0iLCJhX3NwcmVhZE1ldGhvZCIsImFfZngiLCJhX2Z5IiwiYV9vZmZzZXQiLCJhX3BhdHRlcm5Vbml0cyIsImFfcGF0dGVybkNvbnRlbnRVbml0cyIsImFfcGF0dGVyblRyYW5zZm9ybSIsImFfY2xpcFBhdGhVbml0cyIsImFfbWFza1VuaXRzIiwiYV9tYXNrQ29udGVudFVuaXRzIiwiYV9wcmltaXRpdmVVbml0cyIsImFfZmlsdGVyUmVzIiwiYV9yZXN1bHQiLCJhX2luIiwiYV9pbjIiLCJhX2F6aW11dGgiLCJhX2VsZXZhdGlvbiIsImFfcG9pbnRzQXRYIiwiYV9wb2ludHNBdFkiLCJhX3BvaW50c0F0WiIsImFfc3BlY3VsYXJFeHBvbmVudCIsImFfc3BlY3VsYXJDb25zdGFudCIsImFfbGltaXRpbmdDb25lQW5nbGUiLCJhX21vZGUiLCJhX2ZlQ29sb3JNYXRyaXhfdHlwZSIsImFfdmFsdWVzIiwiYV90cmFuc2Zlcl90eXBlIiwiYV90YWJsZVZhbHVlcyIsImFfaW50ZXJjZXB0IiwiYV9hbXBsaXR1ZGUiLCJhX2V4cG9uZW50IiwiYV90cmFuc2Zlcl9vZmZzZXQiLCJhX2ZlQ29tcG9zaXRlX29wZXJhdG9yIiwiYV9rMSIsImFfazIiLCJhX2szIiwiYV9rNCIsImFfb3JkZXIiLCJhX2tlcm5lbE1hdHJpeCIsImFfZGl2aXNvciIsImFfYmlhcyIsImFfa2VybmVsVW5pdExlbmd0aCIsImFfdGFyZ2V0WCIsImFfdGFyZ2V0WSIsImFfZWRnZU1vZGUiLCJhX3ByZXNlcnZlQWxwaGEiLCJhX3N1cmZhY2VTY2FsZSIsImFfZGlmZnVzZUNvbnN0YW50IiwiYV9zY2FsZSIsImFfeENoYW5uZWxTZWxlY3RvciIsImFfeUNoYW5uZWxTZWxlY3RvciIsImFfc3RkRGV2aWF0aW9uIiwiYV9mZU1vcnBob2xvZ3lfb3BlcmF0b3IiLCJhX3JhZGl1cyIsImFfYmFzZUZyZW5xdWVuY3kiLCJhX251bU9jdGF2ZXMiLCJhX3NlZWQiLCJhX3N0aXRjaFRpbGVzIiwiYV9mZVR1cmJ1bGVuY2VfdHlwZSIsImFfeGxpbmtfc2hvdyIsImFfeGxpbmtfYWN0dWF0ZSIsImFfdGFyZ2V0IiwiYV92aWV3VGFyZ2V0IiwiYV9hdHRyaWJ1dGVOYW1lIiwiYV9hdHRyaWJ1dGVUeXBlIiwiYV9iZWdpbiIsImFfZHVyIiwiYV9taW4iLCJhX21heCIsImFfcmVzdGFydCIsImFfcmVwZWF0Q291bnQiLCJhX3JlcGVhdER1ciIsImFfZmlsbCIsImFfYW5pbWF0aW9uX2ZpbGwiLCJhX2ZpbGxfcnVsZSIsImFfY2FsY01vZGUiLCJhX2FuaW1hdGlvbl92YWx1ZXMiLCJhX2tleVRpbWVzIiwiYV9rZXlTcGxpbmVzIiwiYV9mcm9tIiwiYV90byIsImFfYnkiLCJhX2FkZGl0aXZlIiwiYV9hY2N1bXVsYXRlIiwiYV9rZXlQb2ludHMiLCJhX3BhdGgiLCJhX2FuaW1hdGVUcmFuc2Zvcm1fdHlwZSIsImFfaG9yaXpfb3JpZ2luX3giLCJhX2hvcml6X29yaWdpbl95IiwiYV9ob3Jpel9hZHZfeCIsImFfdmVydF9vcmlnaW5feCIsImFfdmVydF9vcmlnaW5feSIsImFfdmVydF9hZHZfeSIsImFfdW5pY29kZSIsImFfZ2x5cGhfbmFtZSIsImFfb3JpZW50YXRpb24iLCJhX2FyYWJpY19mb3JtIiwiYV9sYW5nIiwiYV91MSIsImFfdTIiLCJhX2cxIiwiYV9nMiIsImFfayIsImFfZm9udF9mYW1pbHkiLCJhX2ZvbnRfc3R5bGUiLCJhX2ZvbnRfdmFyaWFudCIsImFfZm9udF93ZWlnaHQiLCJhX2ZvbnRfc3RyZXRjaCIsImFfZm9udF9zaXplIiwiYV91bmljb2RlX3JhbmdlIiwiYV91bml0c19wZXJfZW0iLCJhX3N0ZW12IiwiYV9zdGVtaCIsImFfc2xvcGUiLCJhX2NhcF9oZWlnaHQiLCJhX3hfaGVpZ2h0IiwiYV9hY2NlbnRfaGVpZ2h0IiwiYV9hc2NlbnQiLCJhX3dpZHRocyIsImFfYmJveCIsImFfaWRlb2dyYXBoaWMiLCJhX2FscGhhYmV0aWMiLCJhX21hdGhlbWF0aWNhbCIsImFfaGFuZ2luZyIsImFfdmlkZW9ncmFwaGljIiwiYV92X2FscGhhYmV0aWMiLCJhX3ZfbWF0aGVtYXRpY2FsIiwiYV92X2hhbmdpbmciLCJhX3VuZGVybGluZV9wb3NpdGlvbiIsImFfdW5kZXJsaW5lX3RoaWNrbmVzcyIsImFfc3RyaWtldGhyb3VnaF9wb3NpdGlvbiIsImFfc3RyaWtldGhyb3VnaF90aGlja25lc3MiLCJhX292ZXJsaW5lX3Bvc2l0aW9uIiwiYV9vdmVybGluZV90aGlja25lc3MiLCJhX3N0cmluZyIsImFfbmFtZSIsImFfYWxpZ25tZW50X2Jhc2VsaW5lIiwiYV9kb21pbmFudF9iYXNlbGluZSIsImFfb25hYm9ydCIsImFfb25hY3RpdmF0ZSIsImFfb25iZWdpbiIsImFfb25lbmQiLCJhX29uZXJyb3IiLCJhX29uZm9jdXNpbiIsImFfb25mb2N1c291dCIsImFfb25sb2FkIiwiYV9vbnJlcGVhdCIsImFfb25yZXNpemUiLCJhX29uc2Nyb2xsIiwiYV9vbnVubG9hZCIsImFfb256b29tIiwiYV9vbmNsaWNrIiwiYV9vbm1vdXNlZG93biIsImFfb25tb3VzZXVwIiwiYV9vbm1vdXNlb3ZlciIsImFfb25tb3VzZW91dCIsImFfb25tb3VzZW1vdmUiLCJhX29udG91Y2hzdGFydCIsImFfb250b3VjaGVuZCIsImFfb250b3VjaG1vdmUiLCJhX29udG91Y2hjYW5jZWwiLCJhX3N0b3BfY29sb3IiLCJhX3N0b3Bfb3BhY2l0eSIsImFfc3Ryb2tlIiwiYV9zdHJva2Vfd2lkdGgiLCJhX3N0cm9rZV9saW5lY2FwIiwiYV9zdHJva2VfbGluZWpvaW4iLCJhX3N0cm9rZV9taXRlcmxpbWl0IiwiYV9zdHJva2VfZGFzaGFycmF5IiwiYV9zdHJva2VfZGFzaG9mZnNldCIsImFfc3Ryb2tlX29wYWNpdHkiLCJzdmciLCJkZWZzIiwiZGVzYyIsInRpdGxlIiwidXNlIiwiaW1hZ2UiLCJzd2l0Y2gkMCIsInN0eWxlIiwicGF0aCIsInJlY3QiLCJjaXJjbGUiLCJlbGxpcHNlIiwibGluZSIsInBvbHlsaW5lIiwicG9seWdvbiIsInRleHQiLCJ0c3BhbiIsInRyZWYiLCJ0ZXh0UGF0aCIsImFsdEdseXBoIiwiYWx0R2x5cGhEZWYiLCJhbHRHbHlwaEl0ZW0iLCJnbHlwaFJlZiIsIm1hcmtlciIsImNvbG9yX3Byb2ZpbGUiLCJsaW5lYXJHcmFkaWVudCIsInJhZGlhbEdyYWRpZW50Iiwic3RvcCIsInBhdHRlcm4iLCJjbGlwUGF0aCIsImZpbHRlciIsImZlRGlzdGFudExpZ2h0IiwiZmVQb2ludExpZ2h0IiwiZmVTcG90TGlnaHQiLCJmZUJsZW5kIiwiZmVDb2xvck1hdHJpeCIsImZlQ29tcG9uZW50VHJhbnNmZXIiLCJmZUZ1bmNBIiwiZmVGdW5jRyIsImZlRnVuY0IiLCJmZUZ1bmNSIiwiZmVDb21wb3NpdGUiLCJmZUNvbnZvbHZlTWF0cml4IiwiZmVEaWZmdXNlTGlnaHRpbmciLCJmZURpc3BsYWNlbWVudE1hcCIsImZlRmxvb2QiLCJmZUdhdXNzaWFuQmx1ciIsImZlSW1hZ2UiLCJmZU1lcmdlIiwiZmVNb3JwaG9sb2d5IiwiZmVPZmZzZXQiLCJmZVNwZWN1bGFyTGlnaHRpbmciLCJmZVRpbGUiLCJmZVR1cmJ1bGVuY2UiLCJjdXJzb3IiLCJ2aWV3Iiwic2NyaXB0IiwiYW5pbWF0ZSIsImFuaW1hdGVNb3Rpb24iLCJtcGF0aCIsImFuaW1hdGVDb2xvciIsImFuaW1hdGVUcmFuc2Zvcm0iLCJmb250IiwiZ2x5cGgiLCJtaXNzaW5nX2dseXBoIiwiaGtlcm4iLCJ2a2VybiIsImZvbnRfZmFjZSIsImZvbnRfZmFjZV9zcmMiLCJmb250X2ZhY2VfdXJpIiwiZm9udF9mYWNlX2Zvcm1hdCIsImZvbnRfZmFjZV9uYW1lIiwiZG9jX3RvZWx0IiwiZGF0YSIsImxlYWYiLCJub2RlIiwiY29lcmNlX2VsdCIsImZsb2F0X2F0dHJpYiQwIiwiaW50X2F0dHJpYiIsInN0cmluZ19hdHRyaWIkMCIsInVyaV9hdHRyaWIiLCJzcGFjZV9zZXBfYXR0cmliIiwiY29tbWFfc2VwX2F0dHJpYiIsInN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUiLCJzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQiLCJzdHJpbmdfb2ZfYm9vbCIsInN0cmluZ19vZl9jb29yZHMiLCJzdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUiLCJzdHJpbmdfb2ZfaW5fdmFsdWUiLCJzdHJpbmdfb2ZfaW50Iiwic3RyaW5nX29mX3BlcmNlbnRhZ2UiLCJzdHJpbmdfb2ZfZm91cmZsb2F0cyIsInN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYiIsInN0cmluZ19vZl9udW1iZXJzIiwic3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uIiwic3RyaW5nX29mX29mZnNldCIsIngkMCIsInN0cmluZ19vZl9vcmllbnQiLCJzdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5Iiwic3RyaW5nX29mX3RyYW5zZm9ybSIsIngkMiIsImFuZ2xlIiwiYW5nbGUkMCIsImFuZ2xlJDEiLCJ4JDEiLCJzdHJpbmdfb2ZfdHJhbnNmb3JtcyIsImFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMiLCJlbXB0eXRhZ3MiLCJib29sX2F0dHJpYiIsImNvbnN0YW50X2F0dHJpYiIsImxpbmt0eXBlc19hdHRyaWIiLCJtZWRpYWRlc2NfYXR0cmliIiwic3Jjc2V0X2F0dHJpYiIsImFfdGl0bGUiLCJhX3Byb3BlcnR5IiwiYV9vbmFmdGVycHJpbnQiLCJhX29uYmVmb3JlcHJpbnQiLCJhX29uYmVmb3JldW5sb2FkIiwiYV9vbmJsdXIiLCJhX29uY2FucGxheSIsImFfb25jYW5wbGF5dGhyb3VnaCIsImFfb25jaGFuZ2UiLCJhX29uY2xvc2UiLCJhX29uZHVyYXRpb25jaGFuZ2UiLCJhX29uZW1wdGllZCIsImFfb25lbmRlZCIsImFfb25mb2N1cyIsImFfb25mb3JtY2hhbmdlIiwiYV9vbmZvcm1pbnB1dCIsImFfb25oYXNoY2hhbmdlIiwiYV9vbmlucHV0IiwiYV9vbmludmFsaWQiLCJhX29ub2ZmbGluZSIsImFfb25vbmxpbmUiLCJhX29ucGF1c2UiLCJhX29ucGxheSIsImFfb25wbGF5aW5nIiwiYV9vbnBhZ2VoaWRlIiwiYV9vbnBhZ2VzaG93IiwiYV9vbnBvcHN0YXRlIiwiYV9vbnByb2dyZXNzIiwiYV9vbnJhdGVjaGFuZ2UiLCJhX29ucmVhZHlzdGF0ZWNoYW5nZSIsImFfb25yZWRvIiwiYV9vbnNlZWtlZCIsImFfb25zZWVraW5nIiwiYV9vbnNlbGVjdCIsImFfb25zaG93IiwiYV9vbnN0YWxsZWQiLCJhX29uc3RvcmFnZSIsImFfb25zdWJtaXQiLCJhX29uc3VzcGVuZCIsImFfb250aW1ldXBkYXRlIiwiYV9vbnVuZG8iLCJhX29udm9sdW1lY2hhbmdlIiwiYV9vbndhaXRpbmciLCJhX29ubG9hZGVkZGF0YSIsImFfb25sb2FkZWRtZXRhZGF0YSIsImFfb25sb2Fkc3RhcnQiLCJhX29ubWVzc2FnZSIsImFfb25tb3VzZXdoZWVsIiwiYV9vbmNvbnRleHRtZW51IiwiYV9vbmRibGNsaWNrIiwiYV9vbmRyYWciLCJhX29uZHJhZ2VuZCIsImFfb25kcmFnZW50ZXIiLCJhX29uZHJhZ2xlYXZlIiwiYV9vbmRyYWdvdmVyIiwiYV9vbmRyYWdzdGFydCIsImFfb25kcm9wIiwiYV9vbmtleXByZXNzIiwiYV9vbmtleWRvd24iLCJhX29ua2V5dXAiLCJhX3htbG5zIiwiYV9tYW5pZmVzdCIsImFfY2l0ZSIsImFfYWNjZXNza2V5IiwiYV9jaGFyc2V0IiwiYV9hY2NlcHRfY2hhcnNldCIsImFfYWNjZXB0IiwiYV9ocmVmbGFuZyIsImFfZG93bmxvYWQiLCJmaWxlIiwiYV9yZWwiLCJhX3RhYmluZGV4IiwiYV9taW1lX3R5cGUiLCJhX2FsdCIsInAiLCJhX3NyYyIsImFfbGFiZWxfZm9yIiwiYV9vdXRwdXRfZm9yIiwiYV9zZWxlY3RlZCIsImFfdGV4dF92YWx1ZSIsImFfaW50X3ZhbHVlIiwiYV92YWx1ZSIsImFfZmxvYXRfdmFsdWUiLCJhX2FjdGlvbiIsImFfZm9ybW1ldGhvZCIsImFfZW5jdHlwZSIsImFfY2hlY2tlZCIsImFfZGlzYWJsZWQiLCJhX3JlYWRvbmx5IiwiYV9tYXhsZW5ndGgiLCJhX21pbmxlbmd0aCIsImFfYWxsb3dmdWxsc2NyZWVuIiwiYV9hbGxvd3BheW1lbnRyZXF1ZXN0IiwiYV9yZWZlcnJlcnBvbGljeSIsImFfYXV0b2NvbXBsZXRlIiwiYV9hc3luYyIsImFfYXV0b2ZvY3VzIiwiYV9hdXRvcGxheSIsImFfbXV0ZWQiLCJhX2Nyb3Nzb3JpZ2luIiwiYV9pbnRlZ3JpdHkiLCJhX21lZGlhZ3JvdXAiLCJhX2NoYWxsZW5nZSIsImFfY29udGVudGVkaXRhYmxlIiwiY2UiLCJhX2NvbnRleHRtZW51IiwiYV9jb250cm9scyIsImFfZGlyIiwiYV9kcmFnZ2FibGUiLCJhX2Zvcm0iLCJhX2Zvcm1hY3Rpb24iLCJhX2Zvcm1lbmN0eXBlIiwiYV9mb3Jtbm92YWxpZGF0ZSIsImFfZm9ybXRhcmdldCIsImFfaGlkZGVuIiwiYV9oaWdoIiwiYV9pY29uIiwiYV9pc21hcCIsImFfa2V5dHlwZSIsImFfbGlzdCIsImFfbG9vcCIsImFfbG93IiwiYV9pbnB1dF9tYXgiLCJhX2lucHV0X21pbiIsImFfaW5wdXRtb2RlIiwiYV9ub3ZhbGlkYXRlIiwiYV9vcGVuIiwiYV9vcHRpbXVtIiwiYV9wYXR0ZXJuIiwiYV9wbGFjZWhvbGRlciIsImFfcG9zdGVyIiwiYV9wcmVsb2FkIiwiYV9wdWJkYXRlIiwiYV9yYWRpb2dyb3VwIiwiYV9yZXF1aXJlZCIsImFfcmV2ZXJzZWQiLCJhX3NhbmRib3giLCJhX3NwZWxsY2hlY2siLCJzYyIsImFfc2NvcGVkIiwiYV9zZWFtbGVzcyIsImFfc2l6ZXMiLCJzaXplcyIsImFfc3BhbiIsImFfc3JjbGFuZyIsImFfc3Jjc2V0IiwiYV9pbWdfc2l6ZXMiLCJhX3N0YXJ0IiwiYV9zdGVwIiwic3RlcCIsImFfdHJhbnNsYXRlIiwiYV93cmFwIiwiYV9zaXplIiwiYV9pbnB1dF90eXBlIiwiaXQiLCJhX21lbnVfdHlwZSIsImFfY29tbWFuZF90eXBlIiwiYV9idXR0b25fdHlwZSIsImJ0IiwiYV9zY3JpcHRfdHlwZSIsImFfbXVsdGlwbGUiLCJhX2NvbHMiLCJhX3Jvd3MiLCJhX3N1bW1hcnkiLCJhX2FsaWduIiwiYV9heGlzIiwiYV9jb2xzcGFuIiwiYV9oZWFkZXJzIiwiYV9yb3dzcGFuIiwiYV9zY29wZSIsImFfYm9yZGVyIiwiYV9ydWxlcyIsImFfY2hhciIsImFfZGF0YSIsImFfY29kZXR5cGUiLCJhX2ZyYW1lYm9yZGVyIiwiYV9tYXJnaW5oZWlnaHQiLCJhX21hcmdpbndpZHRoIiwiYV9zY3JvbGxpbmciLCJhX2NvbnRlbnQiLCJhX2h0dHBfZXF1aXYiLCJhX3JvbGUiLCJhX2FyaWEiLCJ0ZXJtaW5hbCIsInBsdXMiLCJvcHRpb25fY29ucyIsImJvZHkiLCJodG1sIiwiY29udGVudCIsImZvb3RlciIsImhlYWRlciIsInNlY3Rpb24iLCJuYXYiLCJlbnRpdHkiLCJzcGFjZSIsImNkYXRhIiwiY2RhdGFfc2NyaXB0IiwiY2RhdGFfc3R5bGUiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZ3JvdXAiLCJhZGRyZXNzIiwiYmxvY2txdW90ZSIsImRpYWxvZyIsImRpdiIsInByZSIsImFiYnIiLCJiciIsImNpdGUiLCJkZm4iLCJlbSIsImtiZCIsInNhbXAiLCJzcGFuIiwic3Ryb25nIiwidGltZSIsInZhciQwIiwiZGwiLCJvbCIsInVsIiwiZGQiLCJsaSIsImhyIiwic21hbGwiLCJzdWIiLCJzdXAiLCJtYXJrIiwicnAiLCJydCIsInJ1YnkiLCJ3YnIiLCJiZG8iLCJkaXIiLCJhX2RhdGV0aW1lIiwiYV9zaGFwZSIsImFfY29vcmRzIiwiY29vcmRzIiwiYV91c2VtYXAiLCJhX2RlZmVyIiwiYV9sYWJlbCIsImFyZWEiLCJhbHQiLCJkZWwiLCJpbnMiLCJub3NjcmlwdCIsInRlbXBsYXRlIiwiYXJ0aWNsZSIsImFzaWRlIiwibWFpbiIsInZpZGVvX2F1ZGlvIiwic3JjcyIsInVyaSIsInNyY3MkMCIsImF1ZGlvIiwidmlkZW8iLCJjYW52YXMiLCJjb21tYW5kIiwibGFiZWwiLCJtZW51IiwiZW1iZWQiLCJzb3VyY2UiLCJtZXRlciIsIm91dHB1dF9lbHQiLCJmb3JtIiwiaW5wdXQiLCJrZXlnZW4iLCJvcHRpb24iLCJzZWxlY3QiLCJ0ZXh0YXJlYSIsImJ1dHRvbiIsImRhdGFsaXN0IiwicHJvZ3Jlc3MiLCJsZWdlbmQiLCJkZXRhaWxzIiwic3VtbWFyeSIsImZpZWxkc2V0Iiwib3B0Z3JvdXAiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiYyQwIiwiY2FwdGlvbiIsInRhYmxleCIsImNvbHVtbnMiLCJ0aGVhZCIsInRmb290IiwiY29sdW1ucyQwIiwiY29udGVudCQwIiwiY29udGVudCQxIiwidGQiLCJ0aCIsInRyIiwiY29sZ3JvdXAiLCJjb2wiLCJ0Ym9keSIsImlmcmFtZSIsIm9iamVjdCIsInBhcmFtcyIsImVsdHMkMCIsImltZyIsInBpY3R1cmUiLCJ0YWlsX25vZGUiLCJtZXRhIiwibGluayIsInJlbCIsImhyZWYiLCJiYXNlIiwicGFyYW0iLCJpbnRfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJzcGFjZV9zZXBfYXR0cmliJDAiLCJjb21tYV9zZXBfYXR0cmliJDAiLCJzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiIsInN0cmluZ19vZl9saW5rdHlwZSIsInN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4iLCJzdHJpbmdfb2ZfcmVmZXJyZXJwb2xpY3kiLCJzdHJpbmdfb2ZfaW5wdXRfdHlwZSIsInN0cmluZ19vZl9zY3JpcHRfdHlwZSIsInN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUiLCJ0Iiwic3RyaW5nX29mX2NoYXJhY3RlciIsIm9ub2ZmX29mX2Jvb2wiLCJ1bm9wdGlvbl9zdHJpbmciLCJzdHJpbmdfb2Zfc3RlcCIsInN0cmluZ19vZl9zaXplcyIsInN0cmluZ19vZl9zYW5kYm94Iiwic3RyaW5nX29mX21lZGlhZGVzYyIsInN0cmluZ19vZl9saW5rdHlwZXMiLCJzdHJpbmdfb2Zfc3Jjc2V0IiwidXJsIiwidXJsJDAiLCJ2JDAiLCJ1cmwkMSIsInN0cmluZ19vZl9hdXRvY29tcGxldGUiLCJzdHJzIiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYWNvbnRlbnQiLCJhIiwiYW5hbWUiLCJuYW1lIiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJjb250ZW50IiwiZWx0IiwiZW1wdHkiLCJjb21tZW50IiwiYyIsInBjZGF0YSIsImQiLCJlbmNvZGVkcGNkYXRhIiwiZW50aXR5IiwiZSIsInJlX2VuZF9jZGF0YSIsImVuY29kZWRfY2RhdGEiLCJzMSIsInMyIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYiLCJvcHQiLCJzdGgiLCJub2RlIiwiY2hpbGRyZW4iLCJwcmludCIsImZtdCIsIngiLCJwcCQwIiwicHBfZWx0JDAiLCJtZXJnZSIsIm1hcF9wYXRjaCIsIm1hcF9kYXRhIiwiZW1wdHkiLCJjcmVhdGUiLCJsIiwic2VuZCIsImluaXRpYWxfZXZlbnQiLCJjdXJyZW50IiwibXNnIiwicCIsImV2ZW50IiwiZnJvbV9ldmVudCIsImNvbnN0JDAiLCJ4IiwibWFwX21zZyIsImYiLCJtYXAiLCJzIiwicyQwIiwibXNnJDAiLCJ2YWx1ZSIsImMiLCJwYXRjaCIsInNldCIsImZvbGQiLCJhY2MiLCJhY2MkMCIsInNpZ25hbCIsIm9wdCIsInN0aCIsImVxIiwibCQwIiwiZnJvbV9zaWduYWwiLCJkJDAiLCJkIiwiaSIsImkkMCIsIngkMCIsImkkMSIsImoiLCJpJDIiLCJwJDUiLCJsJDciLCJuIiwicCQzIiwiaSQzIiwicCQ0IiwibCQyIiwib3AiLCJ4cyIsIm4kMCIsImFjYyQxIiwibiQxIiwibCQxIiwieHMkMCIsIngkMSIsIm4kMiIsImFjYyQyIiwieCQyIiwiaSQ0IiwiYSIsIm9mZnNldCIsImkkNSIsImEkMCIsImxlbiIsImkkNiIsInYiLCJqJDAiLCJpMCIsImgiLCJwJDAiLCJpMCQwIiwibCQzIiwicCQxIiwiaTAkMSIsImwkNCIsInAkMiIsImkwJDIiLCJsJDUiLCJsJDYiLCJlcXVhbCIsImwxIiwibDIiLCJsMSQwIiwibDIkMCIsIngyIiwibDEkMSIsIngxIiwibDIkMSIsIm1lbSIsImhhc2giLCJkaWZmIiwic3RoJDAiLCJseCQxIiwibHkkMyIsImFkZCIsInJlbW92ZSIsIm1lbXgiLCJtZW15IiwibGVmdCIsImx4IiwibHkiLCJseCQwIiwieSIsImx5JDAiLCJseSQxIiwiYWNjJDMiLCJhY2MkNCIsImx5JDIiLCJ5JDAiLCJhY2MkNSIsIm4kMyIsImFjYyQ2IiwiYWNjJDciLCJvcHQkMCIsImVtcHR5JDAiLCJjb25zIiwic25vYyIsImluc2VydCIsInVwZGF0ZSIsIm1vdmUiLCJpbmRleCIsImhkIiwidGwiLCJ1cGRhdGVfZXEiLCJoYW5kbGUiLCJkYXRhIiwicmVtb3ZlX2xhc3QiLCJyZW1vdmVfZXEiLCJzaW5nbGV0b24iLCJzaW5nbGV0b25fcyIsImZpcnN0IiwiZSIsInJlc3VsdCIsImNvbmNhdCIsInYxIiwidjIiLCJzaXplMSIsInNpemUyIiwic2l6ZV93aXRoX3BhdGNoIiwic2l6ZXgiLCJzaXplX3dpdGhfc2V0IiwicG9zIiwibSIsInBvcyQwIiwicG9zJDEiLCJwb3MkMiIsInBvcyQzIiwidXBkYXRlX3BhdGNoMSIsInVwZGF0ZV9wYXRjaDIiLCJwMSIsInAyIiwidHVwbGVfZXYiLCJwMiQyIiwicDIkMyIsInAxJDAiLCJwMiQwIiwiczIiLCJzMSIsInAxJDEiLCJzMiQwIiwicDIkMSIsIm1lcmdlZF9ldiIsImludmVyc2UiLCJyZXYiLCJ0IiwiZmlsdGVyIiwicHJlZCIsInNpemUiLCJmaWx0ZXJfbGlzdCIsInJlcyIsInRoZWlyX2kiLCJteV9pIiwibXlfaSQwIiwidGhlaXJfaSQwIiwicmVzJDAiLCJ0aGVpcl9pJDEiLCJub3JtYWxpc2UiLCJ1cGRhdGVfaW5kZXhfaW5zZXJ0IiwiaW5zZXJ0X3Bvc19mdWxsX2xpc3QiLCJ2aXNpYmxlIiwiaW5zZXJ0X3Bvc19mdWxsX2xpc3QkMCIsInVwZGF0YWJsZXMiLCJkaXNwbGFjZWQiLCJsZWZ0X2Fsb25lIiwiZGlzcGxhY2VkX2luX2ZpbHRlcmVkIiwidXBkYXRhYmxlcyQwIiwidXBkYXRlX2oiLCJqX2Z1bGxfbGlzdCIsImpfZmlsdGVyZWRfbGlzdCIsIm5ld19qX2ZpbHRlcmVkIiwiaW5zZXJ0X3Bvc19maWx0ZXJlZCIsInVwZGF0ZV9pbmRleF9tb3ZlIiwiZnJvbV9mdWxsX2xpc3QiLCJ0b19mdWxsX2xpc3QiLCJ0b19maWx0ZXJlZCIsIndhc192aXNpYmxlIiwiZm9yd2FyZCIsImlfZnVsbCIsImRlbHRhIiwiaV9maWx0ZXJlZCIsIm5ld192YWwiLCJpX2Z1bGwkMCIsImRlbHRhJDAiLCJpX2ZpbHRlcmVkJDAiLCJuZXdfdmFsJDAiLCJ0b19maWx0ZXJlZCQwIiwiY29udmVydF9wIiwicmVtb3ZlX3Bvc19mdWxsX2xpc3QiLCJyZXQiLCJuZXdfaiIsImxhc3RfaSIsInVwZGF0ZV9wb3NfZnVsbF9saXN0Iiwib2xkX2oiLCJ1cGRhdGVfaiQwIiwidXBkYXRhYmxlcyQxIiwibm9uZSIsInVwZGF0ZV9qJDEiLCJwcmV2aW91c19wb3NfZmlsdGVyZWQiLCJuZXdfcG9zX2ZpbHRlcmVkX2xpc3QiLCJvZmZzZXRfZnVsbCIsIm9yaWdpbl9mdWxsIiwib3JpZ2luX2Z1bGwkMCIsImRlc3RfZnVsbCIsIm9yaWdpbl9maWx0ZXJlZCIsImRlc3RfZmlsdGVyZWQiLCJzbWFsbF9vbmVzIiwiZmlsdGVyX2UiLCJmb3JfYWxsIiwiZm4iLCJtYXliZV91cGRhdGUiLCJpbml0IiwidXBkYXRlX2lkeF9hZnRlciIsInVwZGF0ZXMiLCJ2JDAiLCJrIiwiayQwIiwiZyIsImtleSIsInciLCJ3JDAiLCJ2JDEiLCJnJDAiLCJzeW1ib2wiLCJ4IiwieSIsInN5bWJvbCQwIiwic3ltYm9sJDEiLCJzeW1ib2wkMiIsInN5bWJvbCQzIiwic3ltYm9sJDQiLCJjb21wYXJlIiwiZXF1YWwiLCJtYXgiLCJtaW4iLCJlcXVhbCQwIiwiZXF1YWwkMSIsInN5bWJvbCQ1Iiwic3ltYm9sJDYiLCJzeW1ib2wkNyIsInN5bWJvbCQ4Iiwic3ltYm9sJDkiLCJzeW1ib2wkMTAiLCJjb21wYXJlJDIiLCJlcXVhbCQyIiwibWF4JDAiLCJtaW4kMCIsInJlYnVpbGRfbm9kZSIsIm9mX2VsZW1lbnQiLCJlbHQiLCJvZl9ub2RlIiwib2ZfcGNkYXRhIiwib2ZfaHRtbCIsIm9mX2hlYWQiLCJvZl9saW5rIiwib2ZfdGl0bGUiLCJvZl9tZXRhIiwib2ZfYmFzZSIsIm9mX3N0eWxlIiwib2ZfYm9keSIsIm9mX2Zvcm0iLCJvZl9vcHRncm91cCIsIm9mX29wdGlvbiIsIm9mX3NlbGVjdCIsIm9mX2lucHV0Iiwib2ZfdGV4dGFyZWEiLCJvZl9idXR0b24iLCJvZl9sYWJlbCIsIm9mX2ZpZWxkc2V0Iiwib2ZfbGVnZW5kIiwib2ZfdWwiLCJvZl9vbCIsIm9mX2RsIiwib2ZfbGkiLCJvZl9kaXYiLCJvZl9wIiwib2ZfaGVhZGluZyIsIm9mX2Jsb2NrcXVvdGUiLCJvZl9wcmUiLCJvZl9iciIsIm9mX2hyIiwib2ZfaW5zIiwib2ZfZGVsIiwib2ZfYSIsIm9mX2ltZyIsIm9mX29iamVjdCIsIm9mX3BhcmFtIiwib2ZfYXJlYSIsIm9mX21hcCIsIm9mX3NjcmlwdCIsIm9mX3RkIiwib2ZfdHIiLCJvZl9jb2wiLCJvZl90Zm9vdCIsIm9mX3RoZWFkIiwib2ZfdGJvZHkiLCJvZl9jYXB0aW9uIiwib2ZfdGFibGUiLCJvZl9jYW52YXMiLCJvZl9pZnJhbWUiLCJvZl9hdWRpbyIsIm9mX3ZpZGVvIiwib2ZfaDEiLCJvZl9oMiIsIm9mX2gzIiwib2ZfaDQiLCJvZl9oNSIsIm9mX2g2Iiwib2ZfYWJiciIsIm9mX2FkZHJlc3MiLCJvZl9hcnRpY2xlIiwib2ZfYXNpZGUiLCJvZl9iIiwib2ZfYmRvIiwib2ZfY2l0ZSIsIm9mX2NvZGUiLCJvZl9jb2xncm91cCIsIm9mX2NvbW1hbmQiLCJvZl9kYXRhbGlzdCIsIm9mX2RkIiwib2ZfZGV0YWlscyIsIm9mX2RmbiIsIm9mX2R0Iiwib2ZfZW0iLCJvZl9lbWJlZCIsIm9mX2ZpZ2NhcHRpb24iLCJvZl9maWd1cmUiLCJvZl9mb290ZXIiLCJvZl9oZWFkZXIiLCJvZl9oZ3JvdXAiLCJvZl9pIiwib2Zfa2JkIiwib2Zfa2V5Z2VuIiwib2ZfbWFpbiIsIm9mX21hcmsiLCJvZl9tZW51Iiwib2ZfbWV0ZXIiLCJvZl9uYXYiLCJvZl9ub3NjcmlwdCIsIm9mX291dHB1dCIsIm9mX3Byb2dyZXNzIiwib2ZfcSIsIm9mX3JwIiwib2ZfcnQiLCJvZl9ydWJ5Iiwib2Zfc2FtcCIsIm9mX3NlY3Rpb24iLCJvZl9zbWFsbCIsIm9mX3NvdXJjZSIsIm9mX3NwYW4iLCJvZl9zdHJvbmciLCJvZl9zdWIiLCJvZl9zdW1tYXJ5Iiwib2Zfc3VwIiwib2ZfdGgiLCJvZl90aW1lIiwib2ZfdSIsIm9mX3ZhciIsIm9mX3diciIsIm9mX29wdEdyb3VwIiwib2ZfdGV4dEFyZWEiLCJvZl9maWVsZFNldCIsIm9mX3VMaXN0Iiwib2Zfb0xpc3QiLCJvZl9kTGlzdCIsIm9mX3BhcmFncmFwaCIsIm9mX3F1b3RlIiwib2ZfbW9kIiwib2ZfYW5jaG9yIiwib2ZfaW1hZ2UiLCJvZl90YWJsZUNlbGwiLCJvZl90YWJsZVJvdyIsIm9mX3RhYmxlQ29sIiwib2ZfdGFibGVTZWN0aW9uIiwib2ZfdGFibGVDYXB0aW9uIiwib2ZfaUZyYW1lIiwid2Vha01hcCIsIm1hcCIsInJldGFpbiIsIm5vZGUiLCJrZWVwbWUiLCJwcmV2IiwidXJpX29mX3N0cmluZyIsInMiLCJzdHJpbmdfb2ZfdXJpIiwiYXR0ciIsIm5hbWUiLCJ2IiwiZmxvYXRfYXR0cmliIiwidmFsdWUiLCJpbnRfYXR0cmliIiwic3RyaW5nX2F0dHJpYiIsInNwYWNlX3NlcF9hdHRyaWIiLCJ2YWx1ZXMiLCJjb21tYV9zZXBfYXR0cmliIiwiZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiIsImtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIiwidG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIiLCJ1cmlfYXR0cmliIiwidXJpc19hdHRyaWIiLCJlbXB0eSIsImNvbW1lbnQiLCJjIiwicGNkYXRhIiwiZW5jb2RlZHBjZGF0YSIsInN0cmluZ19mb2xkIiwicG9zIiwiaW5pdCIsImYiLCJyIiwiaSIsImludmFsaWRfZW50aXR5IiwiZSIsInBhcnNlX2ludCIsImJhc2UiLCJhY2MiLCJkIiwiZW50aXR5IiwibGVuIiwic3RyIiwiaXRlcl9wcm9wX3Byb3RlY3RlZCIsIm4iLCJhdHRhY2hfYXR0cmlicyIsImwiLCJhdHQiLCJuJDAiLCJoIiwiZXYiLCJoJDAiLCJoJDEiLCJoJDIiLCJhIiwibGVhZiIsIm9wdCIsInN0aCIsImNoaWxkcmVuIiwiY2RhdGEiLCJjZGF0YV9zY3JpcHQiLCJjZGF0YV9zdHlsZSIsImxlYWYkMCIsIm5vZGUkMCIsImVsdCQwIiwiYWRkX3RvIiwiY29udGVudCIsImtlZXAiLCJpZCIsImJvZHkiLCJoZWFkIiwiaHRtbCIsInJldHVybiQwIiwiZm1hcCIsIm5pbCIsInNpbmdsZXRvbiIsImNvbnMiLCJ4cyIsIm1hcCQwIiwiYXBwZW5kIiwiaW5zZXJ0QXQiLCJkb20iLCJyZW1vdmVDaGlsZHJlbiIsInVwZGF0ZV9jaGlsZHJlbiIsIm5vZGVzIiwibXNnIiwicCIsImkkMCIsImkkMSIsImkkMiIsIngkMCIsImkkMyIsImkkNCIsIm9sZCIsIm1vdmUiLCJpJDUiLCJpJDYiLCJpJDciLCJmaWx0ZXJfYXR0cmliIiwib24iLCJhJDAiLCJhdHRyJDAiLCJmbG9hdF9hdHRyaWIkMCIsImludF9hdHRyaWIkMCIsInN0cmluZ19hdHRyaWIkMCIsInNwYWNlX3NlcF9hdHRyaWIkMCIsImNvbW1hX3NlcF9hdHRyaWIkMCIsImV2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiQwIiwia2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIkMCIsInRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliJDAiLCJ1cmlfYXR0cmliJDAiLCJ1cmlzX2F0dHJpYiQwIiwicGNkYXRhJDAiLCJlbmNvZGVkcGNkYXRhJDAiLCJlbnRpdHkkMCIsIm5vZGUkMSIsIm5vZGUkMiIsImdldCIsIm5vZGUiLCJzZXQiLCJkYXRhIiwicmVtb3ZlIiwiY3JlYXRlIiwic2VxIiwiY2xlYXIiLCJpc19lbXB0eSIsImxlbmd0aCIsImN1cnIkMSIsImN1cnIiLCJsZW4iLCJsZW4kMCIsImN1cnIkMCIsImFkZF9sIiwiYWRkX3IiLCJ0YWtlX2wiLCJ0YWtlX3IiLCJ0YWtlX29wdF9sIiwidGFrZV9vcHRfciIsInRyYW5zZmVyX2wiLCJzMSIsInMyIiwidHJhbnNmZXJfciIsIml0ZXJfbCIsImYiLCJpdGVyX3IiLCJpdGVyX25vZGVfbCIsIml0ZXJfbm9kZV9yIiwiZm9sZF9sIiwiYWNjIiwiY3VyciQyIiwiYWNjJDAiLCJhY2MkMSIsImZvbGRfciIsImZpbmRfbm9kZV9sIiwiZmluZF9ub2RlX3IiLCJmaW5kX25vZGVfb3B0X2wiLCJmaW5kX25vZGVfb3B0X3IiLCJjb21wYXJlIiwic3RhdGVfb2ZfcmVzdWx0IiwieCIsImV4biIsInVuZGVybHlpbmciLCJwIiwicCQwIiwicCQxIiwic2V0X3Byb21pc2Vfc3RhdGUiLCJzdGF0ZSIsImhhbmRsZV9hbGwiLCJoYW5kbGVfYWxsX2V4Y2VwdF9ydW50aW1lIiwidiIsInJ1biIsImUiLCJuZXh0X2tleV9pZCIsIm5ld19rZXkiLCJpZCIsImN1cnJlbnRfc3RvcmFnZSIsImtleSIsInJlZnJlc2giLCJ2YWx1ZSIsIndpdGhfdmFsdWUiLCJuZXdfc3RvcmFnZSIsInNhdmVkX3N0b3JhZ2UiLCJyZXN1bHQiLCJleG4kMCIsImNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyIsImwxIiwibDIiLCJjbGVhbl91cF9jYWxsYmFja19jZWxscyIsImNhbGxiYWNrcyIsImwxJDAiLCJsMiQwIiwiY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsIiwiY2VsbCIsInBzIiwiY2xlYW51cHNfZGVmZXJyZWQiLCJhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUiLCJleGlzdGluZyIsIm5vZGUkMCIsImFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhYyIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiIsInNlbGZfcmVtb3ZpbmdfY2FsbGJhY2tfd3JhcHBlciIsImFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYiQwIiwiYWRkX2NhbmNlbF9jYWxsYmFjayIsImFzeW5jX2V4Y2VwdGlvbl9ob29rIiwiaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvIiwicnVuX2NhbGxiYWNrcyIsImlzX2NhbmNlbGVkIiwiZnMiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMiIsInJlc3QiLCJmcyQwIiwicmVzdCQwIiwiaXRlcl9saXN0JDAiLCJmcyQxIiwiZnMkMiIsInJlc3QkMSIsInN0b3JhZ2UiLCJpdGVyX2NhbGxiYWNrX2xpc3QiLCJpdGVyX2NhbGxiYWNrX2xpc3QkMSIsIml0ZXJfbGlzdCIsImYkMCIsIml0ZXJfY2FsbGJhY2tfbGlzdCQwIiwiY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIiwiZGVmZXJyZWRfY2FsbGJhY2tzIiwiZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpIiwibGVhdmVfcmVzb2x1dGlvbl9sb29wIiwic3RvcmFnZV9zbmFwc2hvdCIsInJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AiLCJhYmFuZG9uX3dha2V1cHMiLCJydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0iLCJvcHQiLCJzdGgiLCJhbGxvd19kZWZlcnJpbmciLCJzdGgkMCIsIm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCIsInNob3VsZF9kZWZlciIsInJlc29sdmUiLCJydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQiLCJpZl9kZWZlcnJlZCIsInJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaSIsImRlZmVycmVkX3Jlc3VsdCIsImRlZmVycmVkX2NhbGxiYWNrIiwiaW1tZWRpYXRlX3Jlc3VsdCIsImRlZmVycmVkX3JlY29yZCIsIndha2V1cF9nZW5lcmFsIiwiYXBpX2Z1bmN0aW9uX25hbWUiLCJyIiwicmVzdWx0JDAiLCJ3YWtldXBfcmVzdWx0Iiwid2FrZXVwIiwid2FrZXVwX2V4biIsIndha2V1cF9sYXRlcl9nZW5lcmFsIiwid2FrZXVwX2xhdGVyX3Jlc3VsdCIsIndha2V1cF9sYXRlciIsIndha2V1cF9sYXRlcl9leG4iLCJjYW5jZWwiLCJjYW5jZWxlZF9yZXN1bHQiLCJjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIiwiY2FsbGJhY2tzX2FjY3VtdWxhdG9yIiwicCQyIiwicGFyYW0iLCJyZXR1cm4kMCIsIm9mX3Jlc3VsdCIsImZhaWwiLCJyZXR1cm5fdW5pdCIsInJldHVybl9ub25lIiwicmV0dXJuX3NvbWUiLCJyZXR1cm5fbmlsIiwicmV0dXJuX3RydWUiLCJyZXR1cm5fZmFsc2UiLCJyZXR1cm5fb2siLCJyZXR1cm5fZXJyb3IiLCJmYWlsX3dpdGgiLCJtc2ciLCJmYWlsX2ludmFsaWRfYXJnIiwibmV3X3BlbmRpbmciLCJob3dfdG9fY2FuY2VsIiwid2FpdCIsInRhc2siLCJhZGRfdGFza19yIiwic2VxdWVuY2UiLCJhZGRfdGFza19sIiwicHJvdGVjdGVkJDAiLCJwX2ludGVybmFsIiwiY2FsbGJhY2siLCJwX3Jlc3VsdCIsInJlbW92ZV90aGVfY2FsbGJhY2siLCJwX2NhbGxiYWNrcyIsIm5vX2NhbmNlbCIsIm1ha2VfaW50b19wcm94eSIsIm91dGVyX3Byb21pc2UiLCJ1c2VyX3Byb3ZpZGVkX3Byb21pc2UiLCJvdXRlcl9jYWxsYmFja3MiLCJyZWd1bGFyX2NhbGxiYWNrcyIsImNsZWFudXBzX2RlZmVycmVkJDAiLCJyZWd1bGFyX2NhbGxiYWNrcyQwIiwiY2FuY2VsX2NhbGxiYWNrcyIsInN5bWJvbF9iaW5kIiwiY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsIiwiYmFja3RyYWNlX2JpbmQiLCJhZGRfbG9jIiwic3ltYm9sIiwicF9yZXN1bHQkMCIsImNhdGNoJDAiLCJoIiwiYmFja3RyYWNlX2NhdGNoIiwidHJ5X2JpbmQiLCJleG4kMSIsInAkMyIsImJhY2t0cmFjZV90cnlfYmluZCIsImZpbmFsaXplIiwiYmFja3RyYWNlX2ZpbmFsaXplIiwib25fY2FuY2VsIiwib25fc3VjY2VzcyIsImNhbGxiYWNrX2lmX2RlZmVycmVkIiwib25fZmFpbHVyZSIsIm9uX3Rlcm1pbmF0aW9uIiwib25fYW55IiwiZyIsIndyYXBfaW5fY2FuY2VsYWJsZSIsInBfdW5kZXJseWluZyIsImRvbnRfd2FpdCIsImFzeW5jIiwiaWdub3JlX3Jlc3VsdCIsImpvaW4iLCJudW1iZXJfcGVuZGluZ19pbl9wcyIsImpvaW5fcmVzdWx0IiwibmV3X3Jlc3VsdCIsInBzJDAiLCJwcyQxIiwiYm90aCIsInAxIiwicDIiLCJwYWlyIiwicDEkMCIsInAyJDAiLCJ2MiIsInYxIiwiYWxsIiwieSIsInZzIiwiaW5kZXgiLCJpJDEiLCJpIiwiaSQwIiwiY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4iLCJ0b3RhbCQxIiwicHMkMiIsInBzJDMiLCJ0b3RhbCQyIiwicmVqZWN0ZWQkMSIsInRvdGFsIiwicmVqZWN0ZWQiLCJyZWplY3RlZCQwIiwidG90YWwkMCIsIm50aF9yZXNvbHZlZCIsIm4iLCJuJDAiLCJuJDIiLCJuJDEiLCJudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW4iLCJwcm5nIiwiY2hvb3NlIiwicGljayIsInFzIiwiY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0IiwicmVzdWx0cyIsInJlc3VsdHMkMCIsInJlc3VsdHMkMSIsIm5jaG9vc2UiLCJ2JDAiLCJucGljayIsIm5jaG9vc2Vfc3BsaXQiLCJwZW5kaW5nX2FjYyIsInBfaW50ZXJuYWwkMCIsInBlbmRpbmdfYWNjJDAiLCJ0b19yZXNvbHZlIiwiZnVsZmlsbGVkIiwicGVuZGluZyIsInBlbmRpbmckMCIsImZ1bGZpbGxlZCQwIiwiZGVidWdfc3RhdGVfaXMiLCJleHBlY3RlZF9zdGF0ZSIsImlzX3NsZWVwaW5nIiwicG9sbCIsImFwcGx5Iiwid3JhcCIsIndyYXAxIiwieDEiLCJ3cmFwMiIsIngyIiwid3JhcDMiLCJ4MyIsIndyYXA0IiwieDQiLCJ3cmFwNSIsIng1Iiwid3JhcDYiLCJ4NiIsIndyYXA3IiwieDciLCJwYXVzZV9ob29rIiwicGF1c2VkIiwicGF1c2UiLCJ3YWtldXBfcGF1c2VkIiwidG1wIiwicmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIiLCJhYmFuZG9uX3BhdXNlZCIsInBhdXNlZF9jb3VudCIsIm1hcCIsInQiLCJiaW5kIiwic3ltYm9sJDAiLCJzeW1ib2wkMSIsInN5bWJvbCQyIiwic3ltYm9sJDMiLCJsZXQkMCIsImlzX29uIiwic3dpdGNoJDAiLCJjaGVjayIsImFkZF9ob29rIiwiaG9vayIsIm9zIiwiYWRkX2hvb2tfb3JfZXhlYyIsInR1cm5fb2ZmIiwiaG9va3MiLCJ3aXRoX3N3aXRjaCIsImZuIiwiZW1wdHkiLCJyZXR1cm5fbHd0IiwiY29ucyIsImNvbnNfbHd0Iiwic2VxMSIsInNlcTIiLCJuZXh0IiwiYXBwZW5kIiwieCQwIiwibWFwX3MiLCJmaWx0ZXJfbWFwIiwiZmlsdGVyX21hcF9zIiwib2siLCJmaWx0ZXIiLCJmaWx0ZXJfcyIsImZsYXRfbWFwX2FwcCIsInRhaWwiLCJmbGF0X21hcCIsImZvbGRfbGVmdCIsImF1eCIsImZvbGRfbGVmdF9zIiwiaXRlciIsIml0ZXJfcyIsIml0ZXJfcCIsIml0ZXJfbiIsIm1heF9jb25jdXJyZW5jeSIsIm1lc3NhZ2UiLCJsb29wIiwicnVubmluZyIsImF2YWlsYWJsZSIsImVsdCIsImNvbXBsZXRlIiwidW5mb2xkIiwidSIsImV4YyQwIiwiZXhjIiwidSQwIiwidW5mb2xkX2x3dCIsIm9mX2xpc3QiLCJsIiwidG9fbGlzdCQwIiwib2Zfc2VxIiwibmV4dCQwIiwib2Zfc2VxX2x3dCIsIm5ld19ub2RlIiwiY2xvbmUiLCJzIiwiZnJvbV9zb3VyY2UiLCJzb3VyY2UiLCJjbG9zZSIsImNsb3NlZCIsImZyb20iLCJmcm9tX2RpcmVjdCIsImlzX2Nsb3NlZCIsImVucXVldWUiLCJsYXN0IiwibmV3X2xhc3QiLCJlbnF1ZXVlJDAiLCJjcmVhdGVfd2l0aF9yZWZlcmVuY2UiLCJwdXNoX3NpZ25hbF9yZXNvbHZlciIsInB1c2hfc2lnbmFsIiwicHVzaF9zaWduYWxfcmVzb2x2ZXIkMCIsInB1c2giLCJvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIiLCJuZXdfd2FpdGVyIiwiYSIsInN0cmVhbSIsInMkMCIsIm9mX2x3dF9zZXEiLCJvZl9pdGVyIiwib2ZfYXJyYXkiLCJvZl9zdHJpbmciLCJub3RpZnlfcHVzaGVyIiwiaW5mbyIsIm9sZF93YWtlbmVyIiwid2FrZW5lciIsIndhaXRlciIsInNlbGZfMSIsInNpemUiLCJuZXdfd2FrZW5lciIsImNyZWF0ZV9ib3VuZGVkIiwicHVzaF93YWtlbmVyIiwicHVzaF93YWl0ZXIiLCJ3YWtlbmVyX2NlbGwiLCJmZWVkIiwidGhyZWFkIiwicHVzaCQwIiwiY29uc3VtZSIsInBlZWtfcmVjIiwicGVlayIsIm5wZWVrX3JlYyIsIm5vZGUkMSIsIm5wZWVrIiwiZ2V0X3JlYyIsImdldF9leG5fcmVjIiwid3JhcF9leG4iLCJuZ2V0X3JlYyIsIm5nZXQiLCJnZXRfd2hpbGVfcmVjIiwidGVzdCIsImdldF93aGlsZSIsImdldF93aGlsZV9zX3JlYyIsImdldF93aGlsZV9zIiwibmV4dF9yZWMiLCJsYXN0X25ld19yZWMiLCJ4JDEiLCJsYXN0X25ldyIsInRvX2xpc3RfcmVjIiwidG9fbGlzdCIsInRvX3N0cmluZ19yZWMiLCJidWYiLCJ0b19zdHJpbmciLCJqdW5rIiwibmp1bmtfcmVjIiwibmp1bmsiLCJqdW5rX3doaWxlX3JlYyIsImp1bmtfd2hpbGUiLCJqdW5rX3doaWxlX3NfcmVjIiwianVua193aGlsZV9zIiwianVua19vbGQiLCJnZXRfYXZhaWxhYmxlIiwiZ2V0X2F2YWlsYWJsZV91cF90byIsIm1hcF9saXN0IiwicGVuZGluZ3MiLCJtYXBfbGlzdF9zIiwiZmxhdHRlbiIsImZvbGRfcmVjIiwiZm9sZCIsImZvbGRfc19yZWMiLCJmb2xkX3MiLCJpdGVyX3JlYyIsIml0ZXJfc19yZWMiLCJpdGVyX3BfcmVjIiwicmVzIiwiZmluZF9yZWMiLCJmaW5kIiwiZmluZF9zX3JlYyIsImZpbmRfcyIsImZpbmRfbWFwX3JlYyIsImZpbmRfbWFwIiwiZmluZF9tYXBfc19yZWMiLCJmaW5kX21hcF9zIiwiY29tYmluZSIsInQxIiwidDIiLCJuMSIsIm4yIiwiY3VycmVudF9zIiwiY29uY2F0Iiwic190b3AiLCJzdHJlYW1zIiwic3RyZWFtcyQwIiwibCQwIiwicGFyc2UiLCJoZXhkdW1wIiwibnVtIiwicG9zIiwicG9zJDEiLCJwb3MkMiIsImNoIiwibGlmdCIsImVycm9yIiwibWFwX2Vycm9yIiwibWFwX2VyciIsImdldF9leG4iLCJiaW5kX2Vycm9yIiwiYmluZF9sd3QiLCJiaW5kX3Jlc3VsdCIsImJpbmRfbHd0X2Vycm9yIiwiYmluZF9sd3RfZXJyIiwiYiIsInNldF9vbmNlIiwiYiQwIiwiYSQwIiwiaXRlcl9lcnJvciIsIm1hcCQwIiwibGluayIsImMyIiwicjIiLCJjMSIsInIxIiwiYyIsImlucyIsInQkMCIsInRzJDAiLCJ0JDEiLCJ0cyQxIiwidHMiLCJhZGQiLCJ1bmlvbiIsInRzMiIsInRzMSIsImZpbmRfbWluIiwibG9va3VwX21pbiIsImdldF9taW4iLCJyZW1vdmVfbWluIiwidGwiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXAiLCJ0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiIsImhkIiwiaXRlcmlfcyIsIml0ZXJpX3AiLCJpbm5lciIsImNvbGxlY3RfcmV2IiwibWFwX3AiLCJmaWx0ZXJfbWFwX3AiLCJjb2xsZWN0X29wdGlvbmFsX3JldiIsIm1hcGlfcyIsIm1hcGlfcCIsInJldl9tYXBfYXBwZW5kX3MiLCJyZXZfbWFwX3MiLCJyZXZfbWFwX3AiLCJsJDEiLCJmb2xkX3JpZ2h0X3MiLCJmb3JfYWxsX3MiLCJmb3JfYWxsX3AiLCJibCIsImV4aXN0c19zIiwiZXhpc3RzX3AiLCJvcHRpb25hbGl6ZSIsImZpbHRlcl9wIiwicGFydGl0aW9uX3MiLCJhY2MxIiwiYWNjMiIsInBhcnRpdGlvbl9wIiwiZ3JvdXAxIiwiZ3JvdXAyIiwibSIsInZhbGlkYXRlIiwic3RoJDEiLCJkaXNwb3NlIiwiY3JlYXRlX21lbWJlciIsInJlbGVhc2UiLCJ2YWxpZGF0ZV9hbmRfcmV0dXJuIiwidXNlIiwiY2xlYXJlZCIsImNsZWFyZWQkMCIsInByb21pc2UiLCJlbGVtZW50IiwiZWxlbWVudHMiLCJvbGRfY2xlYXJlZCIsIndhaXRfcXVldWVfbGVuZ3RoIiwiY3JlYXRlX2VtcHR5IiwicHV0IiwibXZhciIsInciLCJ3JDAiLCJ0YWtlX2F2YWlsYWJsZSIsInRha2UiLCJsb2NrIiwidW5sb2NrIiwid2l0aF9sb2NrIiwiaXNfbG9ja2VkIiwibXV0ZXgiLCJjdmFyIiwic2lnbmFsIiwiYXJnIiwiYnJvYWRjYXN0Iiwid2FrZW5lcnMiLCJicm9hZGNhc3RfZXhuIiwid2l0aF9maW5hbGlzZXIiLCJmIiwiZXZlbnQiLCJyIiwieCIsIm5leHQiLCJldiIsIndha2VuZXIiLCJ3YWl0ZXIiLCJldiQwIiwibGltaXQiLCJlIiwibGltaXRlciIsImRlbGF5ZWQiLCJwdXNoIiwiaXRlciIsImNlbGwiLCJjZWxsJDAiLCJjYW5jZWxfdGhyZWFkIiwidCIsImZyb20iLCJsb29wIiwidG9fc3RyZWFtIiwic2V0X3JlZiIsInN0cmVhbSIsIm9mX3N0cmVhbSIsInYiLCJleG4kMCIsImV4biIsImRlbGF5IiwidGhyZWFkIiwic2VuZCIsImtlZXAiLCJydW5fcCIsInJ1bl9zIiwibXV0ZXgiLCJtYXBfcCIsIm1hcF9zIiwiYXBwX3AiLCJlZiIsImFwcF9zIiwiZmlsdGVyX3AiLCJmaWx0ZXJfcyIsImZtYXBfcCIsImZtYXBfcyIsImRpZmZfcyIsInByZXZpb3VzIiwieSIsImFjY3VtX3MiLCJhY2MiLCJhY2MkMCIsImZvbGRfcyIsInJldl9mb2xkIiwibCIsIm1lcmdlX3MiLCJlbCIsIndpdGhfZmluYWxpc2VyJDAiLCJzaWduYWwiLCJsaW1pdCQwIiwiZXEiLCJzIiwia2VlcCQwIiwicnVuX3MkMCIsIm1hcF9zJDAiLCJhcHBfcyQwIiwic2YiLCJmaWx0ZXJfcyQwIiwiaSIsImZtYXBfcyQwIiwiZGlmZl9zJDAiLCJzYW1wbGVfcyIsImFjY3VtX3MkMCIsImZvbGRfcyQwIiwicmV2X2ZvbGQkMCIsIm1lcmdlX3MkMCIsInNsIiwibDFfcyIsInMxIiwibDJfcyIsInMyIiwieDEiLCJ4MiIsImwzX3MiLCJzMyIsIngzIiwibDRfcyIsInM0IiwieDQiLCJsNV9zIiwiczUiLCJ4NSIsImw2X3MiLCJzNiIsIng2IiwiYmluZF9zIiwic3ltYm9sIiwieCIsInkiLCJzeW1ib2wkMCIsInN5bWJvbCQxIiwic3ltYm9sJDIiLCJzeW1ib2wkMyIsInN5bWJvbCQ0IiwiY29tcGFyZSIsImVxdWFsIiwibWF4IiwibWluIiwiZXF1YWwkMCIsImVxdWFsJDEiLCJzeW1ib2wkNSIsInN5bWJvbCQ2Iiwic3ltYm9sJDciLCJzeW1ib2wkOCIsInN5bWJvbCQ5Iiwic3ltYm9sJDEwIiwiY29tcGFyZSQyIiwiZXF1YWwkMiIsIm1heCQwIiwibWluJDAiLCJjIiwicGVyZm9ybV9yYXciLCJvcHQiLCJjb250ZW50X3R5cGUiLCJwcm9ncmVzcyIsInVwbG9hZF9wcm9ncmVzcyIsImNvbnRlbnRzIiwib3ZlcnJpZGVfbWltZV90eXBlIiwib3ZlcnJpZGVfbWV0aG9kIiwid2l0aF9jcmVkZW50aWFscyIsInN0aCIsImhlYWRlcnMiLCJzdGgkMCIsImdldF9hcmdzIiwic3RoJDEiLCJjaGVja19oZWFkZXJzIiwidXJsIiwiYyQwIiwiYXJncyIsIm9ubHlfc3RyaW5ncyIsImZvcm1fY29udGVudHMiLCJ2YWx1ZSIsIm5hbWUiLCJiIiwiY29udGVudHMkMCIsIm92ZXJyaWRlX21ldGhvZCQwIiwibSIsInYiLCJmb3JtIiwiY29udGVudF90eXBlJDEiLCJtZXRob2QiLCJtZXRob2QkMCIsInVybCQwIiwidyIsInJlcyIsIm1pbWVfdHlwZSIsImMkMSIsImNvbnRlbnRfdHlwZSQyIiwibiIsImhlYWRlcnMkMCIsInMiLCJzdCIsImRvX2NoZWNrX2hlYWRlcnMiLCJjb2RlIiwicmVzcG9uc2UiLCJjb2RlJDAiLCJjb2RlJDEiLCJjb2RlJDIiLCJjb2RlJDMiLCJjb2RlJDQiLCJkb2MiLCJwcm9ncmVzcyQwIiwidXBsb2FkX3Byb2dyZXNzJDAiLCJsIiwibCQwIiwiZiIsImIkMCIsInBlcmZvcm1fcmF3X3VybCIsInBlcmZvcm0iLCJnZXQiLCJzbGVlcCIsImQiLCJ0IiwiaWQiLCJ5aWVsZCQwIiwid2FrZXVwIiwicHJlcnJfc3RyaW5nIiwiZXhuIiwiY2FsbF9jdXN0b21fdXJsIiwidGltZW91dCIsIm1ha2VfdXJpIiwicHJlZml4IiwidXNlcl9jYiIsImVycm9yX2NiIiwic2l6ZSIsImkiLCJ1cmkiLCJmaW5hbGl6ZSIsInBhcmVudCIsImV4ZWN1dGVkIiwiZGVsYXkiLCJ3YWl0IiwibmV3X3QiLCJhZGRfcGFyYW0iLCJjYWxsIiwicGFyYW0iLCJjYm5hbWUiLCJodHRwIiwibmV3X3VybCIsImh0dHAkMCIsImZpbGUiLCJzeW1ib2xfYmluZCIsImFzeW5jIiwib3B0X21hcCIsIm1ha2VfZXZlbnQiLCJldmVudF9raW5kIiwidXNlX2NhcHR1cmUiLCJwYXNzaXZlIiwidGFyZ2V0IiwiZWwiLCJjYW5jZWwiLCJldiIsImNhdGNoX2NhbmNlbCIsImUiLCJ3aXRoX2Vycm9yX2xvZyIsInNlcV9sb29wIiwiZXZoIiwiaGFuZGxlciIsImNhbmNlbF9oYW5kbGVyIiwiY2FuY2VsbGVkIiwiY3VyIiwiY3VyX2hhbmRsZXIiLCJsdCIsImF1eCIsImFzeW5jX2xvb3AiLCJidWZmZXJlZF9sb29wIiwiY2FuY2VsX3F1ZXVlIiwicXVldWUiLCJzcGF3biIsInNwYXduZXIiLCJydW5uZXIiLCJ0bCIsImZ1bmNfbGltaXRlZF9sb29wIiwiZXZlbnQiLCJsaW1pdGVkX2Z1bmMiLCJjb3VudCIsIm5iIiwibGltaXRlZF9sb29wIiwiZWxhcHNlZF90aW1lIiwiY2xpY2siLCJjb3B5IiwiY3V0IiwicGFzdGUiLCJkYmxjbGljayIsIm1vdXNlZG93biIsIm1vdXNldXAiLCJtb3VzZW92ZXIiLCJtb3VzZW1vdmUiLCJtb3VzZW91dCIsImtleXByZXNzIiwia2V5ZG93biIsImtleXVwIiwiY2hhbmdlIiwiaW5wdXQiLCJ0aW1ldXBkYXRlIiwiZHJhZ3N0YXJ0IiwiZHJhZ2VuZCIsImRyYWdlbnRlciIsImRyYWdvdmVyIiwiZHJhZ2xlYXZlIiwiZHJhZyIsImRyb3AiLCJmb2N1cyIsImJsdXIiLCJzY3JvbGwiLCJzdWJtaXQiLCJzZWxlY3QiLCJhYm9ydCIsImVycm9yIiwibG9hZCIsImNhbnBsYXkiLCJjYW5wbGF5dGhyb3VnaCIsImR1cmF0aW9uY2hhbmdlIiwiZW1wdGllZCIsImVuZGVkIiwibG9hZGVkZGF0YSIsImxvYWRlZG1ldGFkYXRhIiwibG9hZHN0YXJ0IiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInJhdGVjaGFuZ2UiLCJzZWVrZWQiLCJzZWVraW5nIiwic3RhbGxlZCIsInN1c3BlbmQiLCJ2b2x1bWVjaGFuZ2UiLCJ3YWl0aW5nIiwibW91c2V3aGVlbCIsImR4IiwiZHkiLCJ3aGVlbCIsInRvdWNoc3RhcnQiLCJ0b3VjaG1vdmUiLCJ0b3VjaGVuZCIsInRvdWNoY2FuY2VsIiwibG9zdHBvaW50ZXJjYXB0dXJlIiwiZ290cG9pbnRlcmNhcHR1cmUiLCJwb2ludGVyZW50ZXIiLCJwb2ludGVyY2FuY2VsIiwicG9pbnRlcmRvd24iLCJwb2ludGVybGVhdmUiLCJwb2ludGVybW92ZSIsInBvaW50ZXJvdXQiLCJwb2ludGVyb3ZlciIsInBvaW50ZXJ1cCIsInRyYW5zaXRpb25lbmQiLCJlbHQiLCJ0cmFuc2l0aW9uc3RhcnQiLCJ0cmFuc2l0aW9ucnVuIiwidHJhbnNpdGlvbmNhbmNlbCIsImNsaWNrcyIsImNvcGllcyIsImN1dHMiLCJwYXN0ZXMiLCJkYmxjbGlja3MiLCJtb3VzZWRvd25zIiwibW91c2V1cHMiLCJtb3VzZW92ZXJzIiwibW91c2Vtb3ZlcyIsIm1vdXNlb3V0cyIsImtleXByZXNzZXMiLCJrZXlkb3ducyIsImtleXVwcyIsImNoYW5nZXMiLCJpbnB1dHMiLCJ0aW1ldXBkYXRlcyIsImRyYWdzdGFydHMiLCJkcmFnZW5kcyIsImRyYWdlbnRlcnMiLCJkcmFnb3ZlcnMiLCJkcmFnbGVhdmVzIiwiZHJhZ3MiLCJkcm9wcyIsIm1vdXNld2hlZWxzIiwid2hlZWxzIiwidG91Y2hzdGFydHMiLCJ0b3VjaG1vdmVzIiwidG91Y2hlbmRzIiwidG91Y2hjYW5jZWxzIiwiZm9jdXNlcyIsImJsdXJzIiwic2Nyb2xscyIsInN1Ym1pdHMiLCJzZWxlY3RzIiwiYWJvcnRzIiwiZXJyb3JzIiwibG9hZHMiLCJjYW5wbGF5cyIsImNhbnBsYXl0aHJvdWdocyIsImR1cmF0aW9uY2hhbmdlcyIsImVtcHRpZWRzIiwiZW5kZWRzIiwibG9hZGVkZGF0YXMiLCJsb2FkZWRtZXRhZGF0YXMiLCJsb2Fkc3RhcnRzIiwicGF1c2VzIiwicGxheXMiLCJwbGF5aW5ncyIsInJhdGVjaGFuZ2VzIiwic2Vla2VkcyIsInNlZWtpbmdzIiwic3RhbGxlZHMiLCJzdXNwZW5kcyIsInZvbHVtZWNoYW5nZXMiLCJ3YWl0aW5ncyIsImxvc3Rwb2ludGVyY2FwdHVyZXMiLCJnb3Rwb2ludGVyY2FwdHVyZXMiLCJwb2ludGVyZW50ZXJzIiwicG9pbnRlcmNhbmNlbHMiLCJwb2ludGVyZG93bnMiLCJwb2ludGVybGVhdmVzIiwicG9pbnRlcm1vdmVzIiwicG9pbnRlcm91dHMiLCJwb2ludGVyb3ZlcnMiLCJwb2ludGVydXBzIiwidHJhbnNpdGlvbmVuZHMiLCJ0cmFuc2l0aW9uc3RhcnRzIiwidHJhbnNpdGlvbnJ1bnMiLCJ0cmFuc2l0aW9uY2FuY2VscyIsInJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lIiwib25sb2FkIiwiZG9tQ29udGVudExvYWRlZCIsIndha2V1cF9leG4iLCJyZWd1bGFyIiwicmVhZHlzdGF0ZWNoYW5nZSIsImluaXQiLCJvbnVubG9hZCIsIm9uYmVmb3JldW5sb2FkIiwib25yZXNpemUiLCJvbm9yaWVudGF0aW9uY2hhbmdlIiwib25wb3BzdGF0ZSIsIm9uaGFzaGNoYW5nZSIsIm9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpeiIsIm9ucmVzaXplcyIsIm9ub3JpZW50YXRpb25jaGFuZ2VzIiwib25wb3BzdGF0ZXMiLCJvbmhhc2hjaGFuZ2VzIiwib25vcmllbnRhdGlvbmNoYW5nZXNfb3Jfb25yZXNpIiwibGltaXRlZF9vbnJlc2l6ZXMiLCJsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzIiwibGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlc19vIiwicmVhZGVyIiwia2luZCIsImZpbGVSZWFkZXIiLCJyZWFkQXNCaW5hcnlTdHJpbmciLCJyZWFkQXNUZXh0IiwicmVhZEFzVGV4dF93aXRoRW5jb2RpbmciLCJyZWFkQXNEYXRhVVJMIiwiY3JlYXRlIiwib3B0Iiwic3RoIiwiZXEiLCJzZXRfc2lnbmFsIiwic2lnbmFsIiwicmVnaXN0ZXIiLCJob29rZWQiLCJmIiwidiIsInNldCIsInZhbHVlIiwiYmluZCIsIm5ld19ob29rZWQiLCJ0b19yZWFjdF9zaWduYWwiLCJjcmVhdGUkMCIsInNlbmRfZXZlbnQiLCJldmVudCIsInJlZ2lzdGVyJDAiLCJzZW5kIiwibWFwIiwidG9fcmVhY3RfZXZlbnQiLCJ0b3NzJDAiLCJlIiwiaWQkMCIsImRlYnVnJDAiLCJpbmZvJDAiLCJub3RpY2UkMCIsIndhcm5pbmckMCIsImVycm9yJDAiLCJmYXRhbCQwIiwianF1ZXJ5X29uIiwic2VsZWN0b3IiLCJoYW5kbGVyIiwib3B0aW9uX3N0cmluZyIsImlkIiwicGxvdFBORyQwIiwicGxvdFN0eWxlSWQiLCJwbG90RGl2SWQiLCJ0aXRsZSIsInBsb3ROYW1lIiwicGxvdFNWRyQwIiwic2F2ZUZpbGUkMCIsImRhdGEiLCJtaW1lIiwiZmlsZW5hbWUiLCJtZXRob2RfdG9fc3RyaW5nIiwiYWpheF9yZXF1ZXN0IiwidGltZW91dCIsInVybCIsIm1ldGgiLCJ0aW1lb3V0JDAiLCJzdGF0dXMiLCJyZXNwb25zZSIsImRhdGEkMCIsImFzeW5jIiwibG9jIiwidGFzayIsImV4biIsImd1aWQkMCIsIm1vZGFsJDAiLCJhY3Rpb24iLCJlbGVtZW50X2RhdGEiLCJlbGVtZW50IiwibGFiZWwiLCJjcmVhdGVfc29ydCIsImNoaWxkcmVuX3ZhbHVlIiwiaGlkZV9jb2RlbWlycm9yIiwic2hvd19jb2RlbWlycm9yIiwiYXRvbSIsImxpc3QiLCJsYWJlbCIsImxpc3RfdHJ1ZSIsImxpc3RfZmFsc2UiLCJsYWJlbF90cnVlIiwibGFiZWxfZmFsc2UiLCJzZXRfZXNjYXBlIiwiZm10IiwiZXNjYXBlIiwiZmx1c2gwIiwicHJpbnQwIiwidGFnZjAiLCJpc190YWciLCJtb3QiLCJ0YWciLCJtY3QiLCJwcmludCIsInMiLCJwIiwibiIsInRhZ2YiLCJkZWZpbmVfc3R5bGVzIiwiZXNjYXBlJDAiLCJsIiwidGJsMSIsInRibDIiLCJzdHlsZSIsInN0eWxlX25hbWUiLCJtYXJrX29wZW5fdGFnIiwibWFya19jbG9zZV90YWciLCJlc2MiLCJlc2MkMCIsInMwIiwiczEiLCJwcF9vcGVuX3hib3giLCJpbmRlbnQiLCJleHRyYV9ib3giLCJ3cmFwIiwib3Blbl90YWciLCJjbG9zZV90YWciLCJ0YWdfc3RyaW5nIiwibyIsImZwcmludF90IiwicGFyYW0kMCIsInAkMCIsImZwcmludF9saXN0IiwicCQxIiwiY2wiLCJzZXAiLCJvcCIsInRsIiwiaGQiLCJmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQiLCJ4IiwibHAiLCJsYWIiLCJsJDAiLCJwJDIiLCJjbCQwIiwic2VwJDAiLCJvcCQwIiwiaW5kZW50JDAiLCJmIiwiZnByaW50X29wdF9sYWJlbCIsInBhcmFtIiwiY2wkMSIsIm9wJDEiLCJiYXNlX2luZGVudCIsInNlcF9pbmRlbnQiLCJjbG9zZV9leHRyYSQwIiwib3Blbl9leHRyYSQwIiwiY2xvc2VfZXh0cmEiLCJvcGVuX2V4dHJhIiwidG9fZm9ybWF0dGVyIiwiaW5pdF9hY2MiLCJtZXJnZV9hY2MiLCJmb3JjZV9icmVha3MxIiwiZm9yY2VfYnJlYWtzMiIsImZvcmNlX2JyZWFrczEkMCIsIm1hcF9ub2RlIiwiZm9yY2VfYnJlYWtzIiwiY2hpbGRyZW4iLCJhIiwiYiIsImxwJDAiLCJhdXgiLCJ4JDAiLCJhY2MiLCJuZXdfY2hpbGRyZW4iLCJhY2NzIiwiYWNjJDAiLCJ4eXMiLCJ5IiwieDIiLCJ4MSIsInBhcmFtJDEiLCJhY2MwIiwiYWNjMSIsIm5ld194MSIsImFjYzIiLCJuZXdfeDIiLCJhY2MkMSIsImFjYyQyIiwibmV3X3giLCJ0b19idWZmZXIiLCJvcHQiLCJidWYiLCJzdGgiLCJzdGgkMCIsInN0eWxlcyIsInRvX3N0cmluZyIsInRvX2NoYW5uZWwiLCJvYyIsInRvX3N0ZG91dCIsInRvX3N0ZGVyciIsImZwcmludF90JDAiLCJsYWJlbCQwIiwidG9fYnVmZmVyJDAiLCJ0b19zdHJpbmckMCIsInRvX2Zvcm1hdHRlciQwIiwidG9fY2hhbm5lbCQwIiwidG9fc3Rkb3V0JDAiLCJ0b19zdGRlcnIkMCIsImVycm9yIiwicyIsInN0cmluZzhfb2ZfaW50IiwieCIsImkiLCJzdHJpbmc0X29mX2ludCIsInByaW50X2JpdHMiLCJvcHQiLCJsZW4iLCJzdGgiLCJwb3MiLCJzbGVuIiwibGVuJDAiLCJsZW4kMSIsInIiLCJrIiwiaiIsImMiLCJpbnRfc2l6ZSIsImR1bW15X3R5cGVfaWQiLCJuIiwiY3JlYXRlX3R5cGVfaWQiLCJlcXVhbCIsInQyIiwieDIiLCJ0MSIsIngxIiwiaGFzaCIsImNyZWF0ZSIsImNsZWFyIiwidGJsIiwicHV0IiwicG9zMCIsImNyZWF0ZSQwIiwiY2xlYXIkMCIsInB1dCQwIiwiZ2V0IiwidHJ5X3ByZXJlYWQiLCJpYiIsInJlYWQiLCJwb3MkMCIsInJlYWRfY2hhciIsImMkMCIsInBlZWsiLCJmcm9tX2J5dGVzIiwic3RoJDAiLCJzaHJsZW4iLCJmcm9tX3N0cmluZyIsImZyb21fY2hhbm5lbCIsImljIiwibiQwIiwicmVtX2xlbiIsInRvX3JlYWQiLCJhY2N1IiwiYWNjdSQwIiwicmVhbGx5X3JlYWQiLCJyZWFsbHlfZXh0ZW5kIiwiYiIsInNsZW4wIiwicmVxbGVuIiwiZmx1c2hfdG9fb3V0cHV0IiwiYWJzdHJhY3Rfb3V0cHV0IiwiZmx1c2hfdG9fY2hhbm5lbCIsIm9jIiwibWFrZV9yb29tIiwiY3JlYXRlX2NoYW5uZWxfd3JpdGVyIiwiZmx1c2hfY2hhbm5lbF93cml0ZXIiLCJjcmVhdGVfb3V0cHV0X3dyaXRlciIsIm91dCIsImV4dGVuZCIsImFsbG9jIiwiYWRkX3N1YiIsImJsaXQiLCJhZGRfc3Vic3RyaW5nIiwiYWRkX3N1YmJ5dGVzIiwiYWRkX3N0cmluZyIsImFkZF9ieXRlcyIsImFkZF9jaGFyIiwidW5zYWZlX2FkZF9jaGFyIiwiYWRkX2NoYXIyIiwiYzEiLCJjMiIsImFkZF9jaGFyNCIsImMzIiwiYzQiLCJyZXNldCIsImNvbnRlbnRzIiwibSIsIm1heF9oaWdoZXN0X2J5dGUiLCJtYXhfdmludF9ieXRlcyIsIm0kMCIsImgiLCJ1bnNpZ25lZF9vZl9zaWduZWQiLCJ3cml0ZV91dmludCIsImJ1ZiIsImJ5dGUkMCIsIndyaXRlX3N2aW50IiwidXZpbnRfb2ZfdWludCIsImJ1ZmZlciIsInN2aW50X29mX2ludCIsInJlYWRfdXZpbnQiLCJhdmFpbCIsInJlYWRfc3ZpbnQiLCJjaGVja19lbmRfb2ZfaW5wdXQiLCJ1aW50X29mX3V2aW50IiwiaW50X29mX3N2aW50IiwicmVhZF9zdHJlYW0iLCJvZl9zdHJpbmciLCJpJDIiLCJpJDAiLCJuJDEiLCJpJDEiLCJzdCIsImEiLCJuZXh0IiwiYSQwIiwid3JpdGVfc3RyZWFtIiwidG9fc3RyaW5nIiwiY2h1bmtfbGVuIiwiYWNjIiwiZmx1c2hfY2h1bmsiLCJsIiwidGwiLCJ0bCQwIiwiaGQiLCJuJDMiLCJuJDIiLCJ0ZXN0Iiwic3QkMCIsImwkMCIsImJvb2xfdGFnIiwiaW50OF90YWciLCJpbnQxNl90YWciLCJpbnQzMl90YWciLCJpbnQ2NF90YWciLCJmbG9hdDMyX3RhZyIsImZsb2F0NjRfdGFnIiwidXZpbnRfdGFnIiwic3ZpbnRfdGFnIiwic3RyaW5nX3RhZyIsImFycmF5X3RhZyIsInR1cGxlX3RhZyIsInJlY29yZF90YWciLCJudW1fdmFyaWFudF90YWciLCJ2YXJpYW50X3RhZyIsInVuaXRfdGFnIiwidGFibGVfdGFnIiwic2hhcmVkX3RhZyIsIm1ha2Vfc2lnbmVkIiwiaGFzaF9uYW1lIiwid3JpdGVfaGFzaHRhZyIsIm9iIiwiaCQwIiwiaGFzX2FyZyIsImgkMSIsImgkMiIsImgkMyIsInN0cmluZ19vZl9oYXNodGFnIiwicmVhZF9oYXNodGFnIiwiY29udCIsIngwIiwieDMiLCJ4NCIsInJlYWRfZmllbGRfaGFzaHRhZyIsIndyaXRlX251bXRhZyIsInJlYWRfbnVtdGFnIiwibWFrZV91bmhhc2giLCJzJDAiLCJ3cml0ZV90YWciLCJ3cml0ZV91bnRhZ2dlZF91bml0Iiwid3JpdGVfdW50YWdnZWRfYm9vbCIsIndyaXRlX3VudGFnZ2VkX2NoYXIiLCJ3cml0ZV91bnRhZ2dlZF9pbnQ4Iiwid3JpdGVfdW50YWdnZWRfaW50MTYiLCJ3cml0ZV91bnRhZ2dlZF9pbnQzMiIsImhpZ2giLCJ3cml0ZV91bnRhZ2dlZF9mbG9hdDMyIiwiZmxvYXRfZW5kaWFubmVzcyIsInJlYWRfdW50YWdnZWRfZmxvYXQ2NCIsImokMCIsIndyaXRlX3VudGFnZ2VkX2Zsb2F0NjQiLCJ3cml0ZV91bnRhZ2dlZF9pbnQ2NCIsInNhZmV0eV90ZXN0IiwieSIsIndyaXRlX3VudGFnZ2VkX3N0cmluZyIsIndyaXRlX3VudGFnZ2VkX3V2aW50Iiwid3JpdGVfdW50YWdnZWRfc3ZpbnQiLCJ3cml0ZV91bml0Iiwid3JpdGVfYm9vbCIsIndyaXRlX2NoYXIiLCJ3cml0ZV9pbnQ4Iiwid3JpdGVfaW50MTYiLCJ3cml0ZV9pbnQzMiIsIndyaXRlX2ludDY0Iiwid3JpdGVfZmxvYXQzMiIsIndyaXRlX2Zsb2F0NjQiLCJ3cml0ZV9zdHJpbmciLCJ3cml0ZV90IiwidGFnZ2VkIiwidGFnZ2VkJDAiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJvIiwibm9kZV90YWciLCJ4JDMiLCJ4JDQiLCJ4JDUiLCJhJDEiLCJ4JDYiLCJ2IiwieCQxMCIsIngkMTEiLCJ4JDEyIiwieCQ3IiwibyQwIiwiYSQyIiwiZmllbGRzIiwicm93X251bSIsImNvbF9udW0iLCJ0YWciLCJhaSIsIngkOCIsInYkMCIsIngkOSIsIm9mZnNldCIsIndyaXRlX3RyZWUiLCJzdHJpbmdfb2ZfdHJlZSIsInRhZ19vZl90cmVlIiwicmVhZF90YWciLCJyZWFkX3VudGFnZ2VkX3VuaXQiLCJyZWFkX3VudGFnZ2VkX2Jvb2wiLCJyZWFkX3VudGFnZ2VkX2NoYXIiLCJyZWFkX3VudGFnZ2VkX2ludDgiLCJyZWFkX3VudGFnZ2VkX2ludDE2IiwicmVhZF91bnRhZ2dlZF9pbnQzMiIsInJlYWRfdW50YWdnZWRfZmxvYXQzMiIsInJlYWRfdW50YWdnZWRfaW50NjQiLCJyZWFkX3VudGFnZ2VkX3N0cmluZyIsInN0ciIsInJlbSIsImJ5dGVzX3JlYWQiLCJyZWFkX3VudGFnZ2VkX3V2aW50IiwicmVhZF91bnRhZ2dlZF9zdmludCIsInJlYWRfdW5pdCIsInJlYWRfYm9vbCIsInJlYWRfaW50OCIsInJlYWRfaW50MTYiLCJyZWFkX2ludDMyIiwicmVhZF9pbnQ2NCIsInJlYWRfZmxvYXQzMiIsInJlYWRfZmxvYXQ2NCIsInJlYWRfc3RyaW5nIiwicmVhZF90cmVlIiwidW5oYXNoIiwicmVhZF9hcnJheSIsInJlYWRlcl9vZl90YWciLCJyZWFkX3R1cGxlIiwicmVhZF9yZWNvcmQiLCJuYW1lIiwicmVhZF9udW1fdmFyaWFudF9jb250IiwicmVhZF9udW1fdmFyaWFudCIsInJlYWRfdmFyaWFudF9jb250IiwicmVhZF92YXJpYW50IiwicmVhZF90YWJsZSIsInJlYWRlcnMiLCJyZWFkX3NoYXJlZCIsInRyZWVfb2Zfc3RyaW5nIiwic2tpcF9ieXRlcyIsInNraXBfdW5pdCIsInNraXBfYm9vbCIsInNraXBfaW50OCIsInNraXBfaW50MTYiLCJza2lwX2ludDMyIiwic2tpcF9pbnQ2NCIsInNraXBfZmxvYXQzMiIsInNraXBfZmxvYXQ2NCIsInNraXBfdXZpbnQiLCJza2lwX3N2aW50Iiwic2tpcF9zdHJpbmciLCJza2lwX2FycmF5Iiwic2tpcHBlcl9vZl90YWciLCJza2lwX3R1cGxlIiwic2tpcCIsInNraXBfcmVjb3JkIiwic2tpcF9udW1fdmFyaWFudF9jb250Iiwic2tpcF9udW1fdmFyaWFudCIsInNraXBfdmFyaWFudF9jb250Iiwic2tpcF92YXJpYW50Iiwic2tpcF90YWJsZSIsImFycmF5IiwicmVjb3JkIiwidHVwbGUiLCJtYXAiLCJmIiwiZm9ybWF0Iiwic2hhcmVkIiwib3B0X25hbWUiLCJzdWZmaXgiLCJjb25zIiwicCIsImFhIiwiaGVhZGVyIiwiaGVhZGVyJDAiLCJyZWNvcmRfYXJyYXkiLCJpbml0Iiwidmlld19vZl90cmVlIiwidCIsInByaW50X3ZpZXdfb2ZfdHJlZSIsIm91dHB1dF92aWV3X29mX3RyZWUiLCJ2aWV3IiwicHJpbnRfdmlldyIsIm91dHB1dF92aWV3Iiwic3BsaXQiLCJzdG9wIiwic3RhcnQiLCJsb2FkX2xpbmVzIiwibG9hZCIsInN5bWJvbCIsImRlZmF1bHRfZGljdF9wYXRoIiwibG9hZF9kaWN0aW9uYXJ5IiwiZGljX2ZpbGUiLCJmbiIsImUkMCIsImUiLCJ3cml0ZV91bmlxIiwibGFzdCIsInNhdmVfZGljdGlvbmFyeSIsImZpbmFsbHkkMCIsInN0cmVhbSQxIiwic3RyZWFtJDAiLCJzdHJlYW0iLCJ2ZXJzaW9uIiwib2NhbWxfbGV4X3RhYmxlcyIsIm9jYW1sX2xleF90YWJsZXMkMCIsIm9jYW1sX2xleF90YWJsZXMkMSIsImpzb25fZXJyb3IiLCJzIiwidXRmOF9vZl9jb2RlIiwiYnVmIiwieCIsImFkZCIsIm1heGJpdHMiLCJuIiwidXRmOF9vZl9zdXJyb2dhdGVfcGFpciIsImkiLCJqIiwiaGlnaDEwIiwibG93MTAiLCJpbml0X2xleGVyIiwiZm5hbWUiLCJvcHQiLCJzdGgiLCJsbnVtIiwiYnVmJDAiLCJidWYkMSIsImhleCIsIndyaXRlX3NwZWNpYWwiLCJzcmMiLCJzdGFydCIsInN0b3AiLCJvYiIsInN0ciIsIndyaXRlX3N0cmluZyIsImMiLCJleGMkMCIsImV4YyIsImpzb25fc3RyaW5nX29mX3N0cmluZyIsIndyaXRlX251bGwiLCJ3cml0ZV9ib29sIiwid3JpdGVfZGlnaXRzIiwiZCIsIndyaXRlX2ludCIsImZsb2F0X25lZWRzX3BlcmlvZCIsIndyaXRlX2Zsb2F0IiwiczEiLCJ3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyIsInNpZ25pZmljYW50X2ZpZ3VyZXMiLCJ3cml0ZV9mbG9hdF9wcmVjIiwid3JpdGVfc3RkX2Zsb2F0Iiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMiLCJ3cml0ZV9pbnRsaXQiLCJ3cml0ZV9mbG9hdGxpdCIsIndyaXRlX3N0cmluZ2xpdCIsIml0ZXIyIiwiZl9lbHQiLCJmX3NlcCIsImwkMCIsInkkMCIsImwiLCJ5Iiwid3JpdGVfanNvbiIsImwkMSIsIndyaXRlX3R1cGxlIiwibyIsInMkMCIsIndyaXRlX3ZhcmlhbnQiLCJ3cml0ZV9hc3NvYyIsIndyaXRlX2xpc3QiLCJiIiwicyQxIiwiZiIsInMkMiIsInMkMyIsIndyaXRlX3N0ZF9qc29uIiwid3JpdGVfc3RkX3R1cGxlIiwid3JpdGVfc3RkX3ZhcmlhbnQiLCJ0b19idWZmZXIiLCJzdWYiLCJzdGgkMCIsInN0ZCIsInRvX3N0cmluZyIsImxlbiIsIm9iJDAiLCJ0b19jaGFubmVsIiwib2MiLCJ0b19vdXRwdXQiLCJvdXQiLCJ0b19maWxlIiwiZmlsZSIsImUkMCIsImUiLCJzZXFfdG9fYnVmZmVyIiwic3QiLCJzZXFfdG9fc3RyaW5nIiwic2VxX3RvX2NoYW5uZWwiLCJzZXEiLCJqc29uIiwic2VxX3RvX2ZpbGUiLCJzb3J0IiwidiIsImsiLCJhIiwidiQwIiwibCQyIiwicHAiLCJmbXQiLCJ0dXAiLCJzZXAiLCJ2YWx1ZSIsIm5hbWUiLCJ4JDEiLCJ4cyIsImtleSIsInhzJDAiLCJ4JDAiLCJ4JDIiLCJ4JDMiLCJ4JDQiLCJ4JDUiLCJ4JDYiLCJzaG93IiwiZXF1YWwiLCJhJDAiLCJiJDAiLCJiJDEiLCJhJDEiLCJ5cyIsImNvbXBhcmVfa2V5cyIsImtleSQwIiwieXMkMCIsInZhbHVlJDAiLCJyZXN1bHQiLCJ5cyQxIiwieHMkMSIsImIkMiIsImEkMiIsIm5hbWUkMCIsInJlc3VsdCQwIiwiYiQzIiwiYSQzIiwiYiQ0IiwiYSQ0IiwiYiQ1IiwiYSQ1IiwiYiQ2IiwiYSQ2IiwiYiQ3IiwiYSQ3IiwicHBfbGlzdCIsInBweCIsInBwX3NlcCIsImlzX2F0b20iLCJmb3JtYXQiLCJpbnNpZGVfYm94IiwicyQ0Iiwib3AiLCJyZXByZXNlbnRhdGlvbiIsInJlcHJlc2VudGF0aW9uJDAiLCJwcCQwIiwicHJldHR5X3ByaW50IiwicHJldHR5X3RvX3N0cmluZyIsInByZXR0eV90b19jaGFubmVsIiwiaGV4JDAiLCJ3cml0ZV9zcGVjaWFsJDAiLCJ3cml0ZV9zdHJpbmckMCIsImpzb25fc3RyaW5nX29mX3N0cmluZyQwIiwid3JpdGVfbnVsbCQwIiwid3JpdGVfYm9vbCQwIiwid3JpdGVfZGlnaXRzJDAiLCJ3cml0ZV9pbnQkMCIsImZsb2F0X25lZWRzX3BlcmlvZCQwIiwid3JpdGVfZmxvYXQkMCIsIndyaXRlX25vcm1hbF9mbG9hdF9wcmVjJDAiLCJ3cml0ZV9mbG9hdF9wcmVjJDAiLCJ3cml0ZV9zdGRfZmxvYXQkMCIsIndyaXRlX3N0ZF9mbG9hdF9wcmVjJDAiLCJpdGVyMiQwIiwiZl9zZXAkMCIsIndyaXRlX2pzb24kMCIsIndyaXRlX2Fzc29jJDAiLCJ3cml0ZV9saXN0JDAiLCJ3cml0ZV9zdGRfanNvbiQwIiwidG9fYnVmZmVyJDAiLCJ0b19zdHJpbmckMCIsInRvX2NoYW5uZWwkMCIsInRvX291dHB1dCQwIiwidG9fZmlsZSQwIiwic2VxX3RvX2J1ZmZlciQwIiwic2VxX3RvX3N0cmluZyQwIiwic2VxX3RvX2NoYW5uZWwkMCIsInNlcV90b19maWxlJDAiLCJzb3J0JDAiLCJwcF9saXN0JDAiLCJpc19hdG9tJDAiLCJmb3JtYXQkMCIsInBwJDEiLCJwcCQyIiwic2hvdyQwIiwiZXF1YWwkMCIsInByZXR0eV9wcmludCQwIiwicHJldHR5X3RvX3N0cmluZyQwIiwicHJldHR5X3RvX2NoYW5uZWwkMCIsImhleCQxIiwiY3VzdG9tX2Vycm9yIiwiZGVzY3IiLCJsZXhidWYiLCJvZmZzIiwiYm9sIiwicG9zMSIsInBvczIiLCJmaWxlX2xpbmUiLCJieXRlcyIsIm1zZyIsImxleGVyX2Vycm9yIiwicmVhZF9qdW5rIiwibG9uZ19lcnJvciIsImp1bmsiLCJleHRyYV9qdW5rIiwibWluMTAiLCJtYXgxMCIsImV4dHJhY3RfcG9zaXRpdmVfaW50IiwiZXh0cmFjdF9uZWdhdGl2ZV9pbnQiLCJuZXdsaW5lIiwiYWRkX2xleGVtZSIsInJlYWRfanNvbiIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwiZmluaXNoX3N0cmluZyIsImFjYyIsInJlYWRfc3BhY2UiLCJyZWFkX29iamVjdF9lbmQiLCJmaWVsZF9uYW1lIiwicmVhZF9pZGVudCIsInJlYWRfY29sb24iLCJyZWFkX29iamVjdF9zZXAiLCJmaWVsZF9uYW1lJDAiLCJhY2MkMCIsInJlYWRfYXJyYXlfZW5kIiwicmVhZF9hcnJheV9zZXAiLCJmaW5pc2hfY29tbWVudCIsImZpbmlzaF9lc2NhcGVkX2NoYXIiLCJtYXBfc3RyaW5nIiwiYyQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJvY2FtbF9sZXhfc3RhdGUkMiIsImMkMSIsImQkMCIsImZpbmlzaF9zdHJpbmdsaXQiLCJmaW5pc2hfdmFyaWFudCIsInJlYWRfZ3QiLCJyZWFkX2x0IiwicmVhZF9jb21tYSIsInN0YXJ0X2FueV92YXJpYW50IiwicmVhZF9lb2YiLCJyZWFkX251bGwiLCJyZWFkX251bGxfaWZfcG9zc2libGUiLCJyZWFkX2Jvb2wiLCJyZWFkX2ludCIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsIm1hcF9pZGVudCIsInJlYWRfc2VxdWVuY2UiLCJyZWFkX2NlbGwiLCJpbml0X2FjYyIsInJlYWRfbGlzdF9yZXYiLCJyZWFkX3R1cGxlIiwicmVhZF90dXBsZV9lbmQiLCJyZWFkX3R1cGxlX2VuZDIiLCJyZWFkX3R1cGxlX3NlcCIsInJlYWRfdHVwbGVfc2VwMiIsInJlYWRfYWJzdHJhY3RfZmllbGRzIiwicmVhZF9rZXkiLCJyZWFkX2ZpZWxkIiwicmVhZF9sY3VybCIsInN0YXJ0X2FueV90dXBsZSIsInJlYWRfbHBhciIsInJlYWRfcnBhciIsInJlYWRfbGJyIiwicmVhZF9yYnIiLCJza2lwX2pzb24iLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQiLCJza2lwX2lkZW50IiwiZmluaXNoX3NraXBfdmFyaWFudCIsImJ1ZmZlcl9qc29uIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQiLCJidWZmZXJfc3BhY2UiLCJidWZmZXJfaWRlbnQiLCJidWZmZXJfY29sb24iLCJvY2FtbF9sZXhfc3RhdGUkMyIsIm9jYW1sX2xleF9zdGF0ZSQ0Iiwib2NhbWxfbGV4X3N0YXRlJDUiLCJvY2FtbF9sZXhfc3RhdGUkNiIsIm9jYW1sX2xleF9zdGF0ZSQ3Iiwib2NhbWxfbGV4X3N0YXRlJDgiLCJmaW5pc2hfYnVmZmVyX2NvbW1lbnQiLCJyZWFkX2ludDgiLCJyZWFkX2xpc3QiLCJyZWFkX2FycmF5IiwidGwiLCJyIiwicmVhZF9maWVsZHMiLCJmcm9tX2xleGJ1ZiIsImZyb21fc3RyaW5nJDAiLCJmcm9tX2NoYW5uZWwkMCIsImljIiwiZnJvbV9maWxlIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwiZmluX2UkMCIsImZpbl9lIiwic2VxX2Zyb21fc3RyaW5nIiwic2VxX2Zyb21fY2hhbm5lbCIsInNlcV9mcm9tX2ZpbGUiLCJmbmFtZSQwIiwibGluZXNlcV9mcm9tX2NoYW5uZWwiLCJsbnVtMCIsImxpbmUiLCJsaW5lc2VxX2Zyb21fZmlsZSIsInByZXR0aWZ5IiwiY29tcGFjdCIsInR5cGVyciIsImpzIiwibWVtYmVyIiwib2JqIiwicGF0aCIsIm9iaiQwIiwiYXNzb2MiLCJvYmokMSIsImluZGV4Iiwid3JhcHBlZF9pbmRleCIsIm1hcCIsInRvX2Fzc29jIiwidG9fb3B0aW9uIiwidG9fYm9vbCIsInRvX2Jvb2xfb3B0aW9uIiwidG9fbnVtYmVyIiwidG9fbnVtYmVyX29wdGlvbiIsInRvX2Zsb2F0IiwidG9fZmxvYXRfb3B0aW9uIiwidG9faW50IiwidG9faW50X29wdGlvbiIsInRvX2xpc3QiLCJ0b19zdHJpbmckMSIsInRvX3N0cmluZ19vcHRpb24iLCJjb252ZXJ0X2VhY2giLCJmaWx0ZXJfbWFwIiwiZmxhdHRlbiIsImwyIiwiZmlsdGVyX2luZGV4IiwiZmlsdGVyX2xpc3QiLCJmaWx0ZXJfbWVtYmVyIiwiZmlsdGVyX2Fzc29jIiwiZmlsdGVyX2Jvb2wiLCJmaWx0ZXJfaW50IiwiZmlsdGVyX2Zsb2F0IiwiZmlsdGVyX251bWJlciIsImZpbHRlcl9zdHJpbmciLCJrZXlzIiwidmFsdWVzIiwiY29tYmluZSIsImZpcnN0Iiwic2Vjb25kIiwidG9fYmFzaWMiLCJoZXgkMiIsIndyaXRlX3NwZWNpYWwkMSIsIndyaXRlX3N0cmluZyQxIiwianNvbl9zdHJpbmdfb2Zfc3RyaW5nJDEiLCJ3cml0ZV9udWxsJDEiLCJ3cml0ZV9ib29sJDEiLCJ3cml0ZV9kaWdpdHMkMSIsIndyaXRlX2ludCQxIiwiZmxvYXRfbmVlZHNfcGVyaW9kJDEiLCJ3cml0ZV9mbG9hdCQxIiwid3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2Zsb2F0X3ByZWMkMSIsIndyaXRlX3N0ZF9mbG9hdCQxIiwid3JpdGVfc3RkX2Zsb2F0X3ByZWMkMSIsIndyaXRlX2ludGxpdCQwIiwiaXRlcjIkMSIsImZfc2VwJDEiLCJ3cml0ZV9qc29uJDEiLCJ3cml0ZV90dXBsZSQwIiwid3JpdGVfYXNzb2MkMSIsIndyaXRlX2xpc3QkMSIsIndyaXRlX3ZhcmlhbnQkMCIsIndyaXRlX3N0ZF9qc29uJDEiLCJ3cml0ZV9zdGRfdHVwbGUkMCIsIndyaXRlX3N0ZF92YXJpYW50JDAiLCJ0b19idWZmZXIkMSIsInRvX3N0cmluZyQyIiwidG9fY2hhbm5lbCQxIiwidG9fb3V0cHV0JDEiLCJ0b19maWxlJDEiLCJzZXFfdG9fYnVmZmVyJDEiLCJzZXFfdG9fc3RyaW5nJDEiLCJzZXFfdG9fY2hhbm5lbCQxIiwic2VxX3RvX2ZpbGUkMSIsInNvcnQkMSIsInBwX2xpc3QkMSIsImlzX2F0b20kMSIsImZvcm1hdCQxIiwicHAkMyIsInBwJDQiLCJzaG93JDEiLCJlcXVhbCQxIiwicHJldHR5X3ByaW50JDEiLCJwcmV0dHlfdG9fc3RyaW5nJDEiLCJwcmV0dHlfdG9fY2hhbm5lbCQxIiwiaGV4JDMiLCJjdXN0b21fZXJyb3IkMCIsImxleGVyX2Vycm9yJDAiLCJyZWFkX2p1bmskMCIsImxvbmdfZXJyb3IkMCIsIm1pbjEwJDAiLCJtYXgxMCQwIiwiZXh0cmFjdF9wb3NpdGl2ZV9pbnQkMCIsImV4dHJhY3RfbmVnYXRpdmVfaW50JDAiLCJuZXdsaW5lJDAiLCJhZGRfbGV4ZW1lJDAiLCJyZWFkX2pzb24kMCIsImZpbmlzaF9zdHJpbmckMCIsInJlYWRfc3BhY2UkMCIsInJlYWRfb2JqZWN0X2VuZCQwIiwicmVhZF9pZGVudCQwIiwicmVhZF9jb2xvbiQwIiwicmVhZF9vYmplY3Rfc2VwJDAiLCJyZWFkX2FycmF5X2VuZCQwIiwicmVhZF9hcnJheV9zZXAkMCIsImFjYyQxIiwicmVhZF90dXBsZV9lbmQkMCIsInJlYWRfdHVwbGVfc2VwJDAiLCJjb25zIiwiZmluaXNoX3ZhcmlhbnQkMCIsImZpbmlzaF9jb21tZW50JDAiLCJmaW5pc2hfZXNjYXBlZF9jaGFyJDAiLCJtYXBfc3RyaW5nJDAiLCJmaW5pc2hfc3RyaW5nbGl0JDAiLCJyZWFkX2d0JDAiLCJyZWFkX2x0JDAiLCJyZWFkX2NvbW1hJDAiLCJzdGFydF9hbnlfdmFyaWFudCQwIiwicmVhZF9lb2YkMCIsInJlYWRfbnVsbCQwIiwicmVhZF9udWxsX2lmX3Bvc3NpYmxlJDAiLCJyZWFkX2Jvb2wkMCIsInJlYWRfaW50JDAiLCJyZWFkX2ludDMyJDAiLCJyZWFkX2ludDY0JDAiLCJyZWFkX251bWJlciQwIiwicmVhZF9zdHJpbmckMCIsIm1hcF9pZGVudCQwIiwicmVhZF9zZXF1ZW5jZSQwIiwicmVhZF9saXN0X3JldiQwIiwicmVhZF90dXBsZSQwIiwicG9zIiwicmVhZF90dXBsZV9lbmQyJDAiLCJyZWFkX3R1cGxlX3NlcDIkMCIsInJlYWRfYWJzdHJhY3RfZmllbGRzJDAiLCJyZWFkX2xjdXJsJDAiLCJzdGFydF9hbnlfdHVwbGUkMCIsInJlYWRfbHBhciQwIiwicmVhZF9ycGFyJDAiLCJyZWFkX2xiciQwIiwicmVhZF9yYnIkMCIsInNraXBfanNvbiQwIiwiZmluaXNoX3NraXBfc3RyaW5nbGl0JDAiLCJza2lwX2lkZW50JDAiLCJmaW5pc2hfc2tpcF92YXJpYW50JDAiLCJidWZmZXJfanNvbiQwIiwiZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQkMCIsImJ1ZmZlcl9zcGFjZSQwIiwiYnVmZmVyX2lkZW50JDAiLCJidWZmZXJfY29sb24kMCIsIm9jYW1sX2xleF9zdGF0ZSQ5Iiwib2NhbWxfbGV4X3N0YXRlJDEwIiwib2NhbWxfbGV4X3N0YXRlJDExIiwib2NhbWxfbGV4X3N0YXRlJDEyIiwib2NhbWxfbGV4X3N0YXRlJDEzIiwib2NhbWxfbGV4X3N0YXRlJDE0Iiwib2NhbWxfbGV4X3N0YXRlJDE1Iiwib2NhbWxfbGV4X3N0YXRlJDE2IiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDAiLCJqdW5rJDAiLCJyZWFkX2ludDgkMCIsInJlYWRfbGlzdCQwIiwicmVhZF9hcnJheSQwIiwicmVhZF9maWVsZHMkMCIsImZyb21fbGV4YnVmJDAiLCJmcm9tX3N0cmluZyQyIiwiZnJvbV9jaGFubmVsJDIiLCJmcm9tX2ZpbGUkMCIsInNlcV9mcm9tX2xleGJ1ZiQwIiwic2VxX2Zyb21fc3RyaW5nJDAiLCJzZXFfZnJvbV9jaGFubmVsJDAiLCJzZXFfZnJvbV9maWxlJDAiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQwIiwibGluZXNlcV9mcm9tX2ZpbGUkMCIsInByZXR0aWZ5JDAiLCJjb21wYWN0JDAiLCJ0eXBlcnIkMCIsIm1lbWJlciQwIiwicGF0aCQwIiwiaW5kZXgkMCIsIm1hcCQwIiwidG9fYXNzb2MkMCIsInRvX29wdGlvbiQwIiwidG9fYm9vbCQwIiwidG9fYm9vbF9vcHRpb24kMCIsInRvX251bWJlciQwIiwidG9fbnVtYmVyX29wdGlvbiQwIiwidG9fZmxvYXQkMCIsInRvX2Zsb2F0X29wdGlvbiQwIiwidG9faW50JDAiLCJ0b19pbnRfb3B0aW9uJDAiLCJ0b19saXN0JDAiLCJ0b19zdHJpbmckMyIsInRvX3N0cmluZ19vcHRpb24kMCIsImNvbnZlcnRfZWFjaCQwIiwiZmlsdGVyX21hcCQwIiwiZmxhdHRlbiQwIiwiZmlsdGVyX2luZGV4JDAiLCJmaWx0ZXJfbGlzdCQwIiwiZmlsdGVyX21lbWJlciQwIiwiZmlsdGVyX2Fzc29jJDAiLCJmaWx0ZXJfYm9vbCQwIiwiZmlsdGVyX2ludCQwIiwiZmlsdGVyX2Zsb2F0JDAiLCJmaWx0ZXJfbnVtYmVyJDAiLCJmaWx0ZXJfc3RyaW5nJDAiLCJrZXlzJDAiLCJ2YWx1ZXMkMCIsImNvbWJpbmUkMCIsImhleCQ0Iiwid3JpdGVfc3BlY2lhbCQyIiwid3JpdGVfc3RyaW5nJDIiLCJqc29uX3N0cmluZ19vZl9zdHJpbmckMiIsIndyaXRlX251bGwkMiIsIndyaXRlX2Jvb2wkMiIsIndyaXRlX2ludGxpdCQxIiwid3JpdGVfZmxvYXRsaXQkMCIsIndyaXRlX3N0cmluZ2xpdCQwIiwiaXRlcjIkMiIsImZfc2VwJDIiLCJ3cml0ZV9qc29uJDIiLCJ3cml0ZV9hc3NvYyQyIiwid3JpdGVfbGlzdCQyIiwid3JpdGVfdHVwbGUkMSIsIndyaXRlX3ZhcmlhbnQkMSIsIndyaXRlX3N0ZF9qc29uJDIiLCJ3cml0ZV9zdGRfdHVwbGUkMSIsIndyaXRlX3N0ZF92YXJpYW50JDEiLCJ0b19idWZmZXIkMiIsInRvX3N0cmluZyQ0IiwidG9fY2hhbm5lbCQyIiwidG9fb3V0cHV0JDIiLCJ0b19maWxlJDIiLCJzZXFfdG9fYnVmZmVyJDIiLCJzZXFfdG9fc3RyaW5nJDIiLCJzZXFfdG9fY2hhbm5lbCQyIiwic2VxX3RvX2ZpbGUkMiIsInNvcnQkMiIsInBwX2xpc3QkMiIsImlzX2F0b20kMiIsImZvcm1hdCQyIiwicHAkNSIsInBwJDYiLCJzaG93JDIiLCJlcXVhbCQyIiwicHJldHR5X3ByaW50JDIiLCJwcmV0dHlfdG9fc3RyaW5nJDIiLCJwcmV0dHlfdG9fY2hhbm5lbCQyIiwiaGV4JDUiLCJjdXN0b21fZXJyb3IkMSIsImxleGVyX2Vycm9yJDEiLCJyZWFkX2p1bmskMSIsImxvbmdfZXJyb3IkMSIsIm1pbjEwJDEiLCJtYXgxMCQxIiwibmV3bGluZSQxIiwiYWRkX2xleGVtZSQxIiwicmVhZF9qc29uJDEiLCJmaW5pc2hfc3RyaW5nbGl0JDEiLCJyZWFkX3NwYWNlJDEiLCJyZWFkX29iamVjdF9lbmQkMSIsInJlYWRfaWRlbnQkMSIsInJlYWRfY29sb24kMSIsInJlYWRfb2JqZWN0X3NlcCQxIiwicmVhZF9hcnJheV9lbmQkMSIsInJlYWRfYXJyYXlfc2VwJDEiLCJyZWFkX3R1cGxlX2VuZCQxIiwicmVhZF90dXBsZV9zZXAkMSIsImZpbmlzaF92YXJpYW50JDEiLCJmaW5pc2hfY29tbWVudCQxIiwiZmluaXNoX3N0cmluZyQxIiwiZmluaXNoX2VzY2FwZWRfY2hhciQxIiwibWFwX3N0cmluZyQxIiwicmVhZF9ndCQxIiwicmVhZF9sdCQxIiwicmVhZF9jb21tYSQxIiwic3RhcnRfYW55X3ZhcmlhbnQkMSIsInJlYWRfZW9mJDEiLCJyZWFkX251bGwkMSIsInJlYWRfbnVsbF9pZl9wb3NzaWJsZSQxIiwicmVhZF9ib29sJDEiLCJyZWFkX2ludCQxIiwic3RhcnQkMCIsInN0b3AkMCIsIm4kMCIsImkkMCIsInJlYWRfaW50MzIkMSIsInJlYWRfaW50NjQkMSIsInJlYWRfbnVtYmVyJDEiLCJyZWFkX3N0cmluZyQxIiwibWFwX2lkZW50JDEiLCJyZWFkX3NlcXVlbmNlJDEiLCJyZWFkX2xpc3RfcmV2JDEiLCJyZWFkX3R1cGxlJDEiLCJyZWFkX3R1cGxlX2VuZDIkMSIsInJlYWRfdHVwbGVfc2VwMiQxIiwicmVhZF9hYnN0cmFjdF9maWVsZHMkMSIsInJlYWRfbGN1cmwkMSIsInN0YXJ0X2FueV90dXBsZSQxIiwicmVhZF9scGFyJDEiLCJyZWFkX3JwYXIkMSIsInJlYWRfbGJyJDEiLCJyZWFkX3JiciQxIiwic2tpcF9qc29uJDEiLCJmaW5pc2hfc2tpcF9zdHJpbmdsaXQkMSIsInNraXBfaWRlbnQkMSIsImZpbmlzaF9za2lwX3ZhcmlhbnQkMSIsImJ1ZmZlcl9qc29uJDEiLCJmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCQxIiwiYnVmZmVyX3NwYWNlJDEiLCJidWZmZXJfaWRlbnQkMSIsImJ1ZmZlcl9jb2xvbiQxIiwiZmluaXNoX2J1ZmZlcl9jb21tZW50JDEiLCJqdW5rJDEiLCJyZWFkX2ludDgkMSIsInJlYWRfbGlzdCQxIiwicmVhZF9hcnJheSQxIiwicmVhZF9maWVsZHMkMSIsImZyb21fbGV4YnVmJDEiLCJmcm9tX3N0cmluZyQ0IiwiZnJvbV9jaGFubmVsJDQiLCJmcm9tX2ZpbGUkMSIsInNlcV9mcm9tX2xleGJ1ZiQxIiwic2VxX2Zyb21fc3RyaW5nJDEiLCJzZXFfZnJvbV9jaGFubmVsJDEiLCJzZXFfZnJvbV9maWxlJDEiLCJsaW5lc2VxX2Zyb21fY2hhbm5lbCQxIiwibGluZXNlcV9mcm9tX2ZpbGUkMSIsInByZXR0aWZ5JDEiLCJjb21wYWN0JDEiLCJ0eXBlcnIkMSIsIm1lbWJlciQxIiwicGF0aCQxIiwiaW5kZXgkMSIsIm1hcCQxIiwidG9fYXNzb2MkMSIsInRvX29wdGlvbiQxIiwidG9fYm9vbCQxIiwidG9fYm9vbF9vcHRpb24kMSIsInRvX251bWJlciQxIiwidG9fbnVtYmVyX29wdGlvbiQxIiwidG9fZmxvYXQkMSIsInRvX2Zsb2F0X29wdGlvbiQxIiwidG9faW50JDEiLCJ0b19pbnRfb3B0aW9uJDEiLCJ0b19saXN0JDEiLCJ0b19zdHJpbmckNSIsInRvX3N0cmluZ19vcHRpb24kMSIsImNvbnZlcnRfZWFjaCQxIiwiZmlsdGVyX21hcCQxIiwiZmxhdHRlbiQxIiwiZmlsdGVyX2luZGV4JDEiLCJmaWx0ZXJfbGlzdCQxIiwiZmlsdGVyX21lbWJlciQxIiwiZmlsdGVyX2Fzc29jJDEiLCJmaWx0ZXJfYm9vbCQxIiwiZmlsdGVyX2ludCQxIiwiZmlsdGVyX2Zsb2F0JDEiLCJmaWx0ZXJfbnVtYmVyJDEiLCJmaWx0ZXJfc3RyaW5nJDEiLCJrZXlzJDEiLCJ2YWx1ZXMkMSIsImNvbWJpbmUkMSIsImlucHV0X2ZpbGUiLCJmbmFtZSIsInJlYWQiLCJpYyIsIngiLCJlJDAiLCJlIiwib3V0cHV0X2ZpbGUiLCJ3cml0ZSIsIm9jIiwiZnJvbV9jaGFubmVsIiwibGVuIiwib3B0Iiwic3RoIiwic2hybGVuIiwiaWIiLCJmcm9tX2ZpbGUiLCJ0b19jaGFubmVsIiwib2IiLCJ0b19maWxlIiwiZnJvbV9sZXhidWYiLCJscyIsImxleGJ1ZiIsInN0cmVhbSIsImZyb21fc3RyaW5nIiwiYnVmIiwibG51bSIsInMiLCJmcm9tX2NoYW5uZWwkMCIsImZyb21fZmlsZSQwIiwic3JjIiwiZm5hbWUwIiwic2VxX3VuZm9sZCIsImYiLCJ1IiwidSQwIiwic2VxX2Zyb21fbGV4YnVmIiwiZmluIiwidiIsInNlcV9mcm9tX3N0cmluZyIsInNlcV9mcm9tX2NoYW5uZWwiLCJzZXFfZnJvbV9maWxlIiwiZmluJDAiLCJsaXN0X2Zyb21fc3RyaW5nIiwic2VxIiwibGlzdF9mcm9tX2NoYW5uZWwiLCJsaXN0X2Zyb21fZmlsZSIsInRvX3N0cmluZyIsInRvX2NoYW5uZWwkMCIsInRvX2ZpbGUkMCIsInNlcV90b19zdHJpbmciLCJzdGgkMCIsImxmIiwic2VxX3RvX2NoYW5uZWwiLCJzZXFfdG9fZmlsZSIsImxpc3RfdG9fc3RyaW5nIiwibCIsImxpc3RfdG9fY2hhbm5lbCIsImxpc3RfdG9fZmlsZSIsInByZXNldF91bmtub3duX2ZpZWxkX2hhbmRsZXIiLCJsb2MiLCJuYW1lIiwibXNnIiwidW5rbm93bl9maWVsZF9oYW5kbGVyIiwic3RyaW5nX29mX3BhdGgiLCJuIiwiZXJyb3IiLCJwYXRoIiwic3RyaW5nX29mX2Vycm9yIiwidmFsaWRhdGVfbGlzdCIsImkiLCJsJDAiLCJzdWJwYXRoIiwiZXJyIiwidmFsaWRhdGVfYXJyYXkiLCJhIiwiaSQwIiwidmFsaWRhdGVfb3B0aW9uIiwiZXJyb3Jfd2l0aF9saW5lIiwicCIsInMyIiwibGlzdF9pdGVyIiwic2VwIiwibCQxIiwieSQwIiwieSIsImFycmF5X2l0ZXIiLCJ3cml0ZV9jb21tYSIsIndyaXRlX2xpc3QiLCJ3cml0ZV9pdGVtIiwid3JpdGVfYXJyYXkiLCJ3cml0ZV9hc3NvY19saXN0Iiwid3JpdGVfa2V5IiwiayIsIndyaXRlX2Fzc29jX2FycmF5Iiwid3JpdGVfb3B0aW9uIiwid3JpdGVfc3RkX29wdGlvbiIsIndyaXRlX251bGxhYmxlIiwid3JpdGVfaW50X2FzX3N0cmluZyIsIndyaXRlX2ludDgiLCJ3cml0ZV9pbnQ4X2FzX3N0cmluZyIsIndyaXRlX2ludDMyIiwid3JpdGVfaW50MzJfYXNfc3RyaW5nIiwid3JpdGVfaW50NjQiLCJ3cml0ZV9pbnQ2NF9hc19zdHJpbmciLCJtaW5fZmxvYXQiLCJtYXhfZmxvYXQiLCJ3cml0ZV9mbG9hdF9hc19pbnQiLCJ3cml0ZV9mbG9hdF9hc19pbnRfc3RyaW5nIiwicmVhZF9udWxsIiwibGIiLCJyZWFkX2Jvb2wiLCJyZWFkX2ludCIsInJlYWRfaW50OCIsInJlYWRfaW50MzIiLCJyZWFkX2ludDY0IiwicmVhZF9udW1iZXIiLCJyZWFkX3N0cmluZyIsInJlYWRfanNvbiIsInJlYWRfbGlzdCIsInJlYWRfaXRlbSIsInJlYWRfYXJyYXkiLCJyZWFkX2Fzc29jX2xpc3RfcmV2IiwicmVhZF9rZXkiLCJhY2MiLCJyZWFkX2Fzc29jX2xpc3QiLCJyZWFkX2Fzc29jX2FycmF5IiwidGwiLCJyIiwicmVhZF91bnRpbF9maWVsZF92YWx1ZSIsIm1pc3NpbmdfdHVwbGVfZmllbGRzIiwicmVxX2ZpZWxkcyIsIm1pc3NpbmciLCJtaXNzaW5nX2ZpZWxkIiwiZmllbGRfbmFtZSIsIm1pc3NpbmdfZmllbGRzIiwiYml0X2ZpZWxkcyIsImZpZWxkX25hbWVzIiwieiIsImoiLCJpbnZhbGlkX3ZhcmlhbnRfdGFnIiwicmVhZF93aXRoX2FkYXB0ZXIiLCJub3JtYWxpemUiLCJyZWFkZXIiLCJhc3QiLCJhc3QkMCIsImxiJDAiLCJ3cml0ZV93aXRoX2FkYXB0ZXIiLCJyZXN0b3JlIiwid3JpdGVyIiwib2JfdG1wIiwic190bXAiLCJyZWFkX2Vycm9yIiwicmVhZF9lcnJvcl9hdCIsInRhZ19lcnJvciIsInRhZyIsInVuc3VwcG9ydGVkX3ZhcmlhbnQiLCJoIiwiaGFzX2FyZyIsImdldF91bml0X3JlYWRlciIsInJlYWRfdW5pdCIsImdldF9ib29sX3JlYWRlciIsImdldF9pbnRfcmVhZGVyIiwiZ2V0X2NoYXJfcmVhZGVyIiwicmVhZF9jaGFyIiwiZ2V0X2ludDMyX3JlYWRlciIsImdldF9pbnQ2NF9yZWFkZXIiLCJnZXRfZmxvYXQzMl9yZWFkZXIiLCJnZXRfZmxvYXQ2NF9yZWFkZXIiLCJyZWFkX2Zsb2F0MzIiLCJyZWFkX2Zsb2F0NjQiLCJnZXRfc3RyaW5nX3JlYWRlciIsInJlYWRfYXJyYXlfdmFsdWUiLCJnZXRfcmVhZGVyIiwiZ2V0X2FycmF5X3JlYWRlciIsImdldF9saXN0X3JlYWRlciIsIndyaXRlX3VudGFnZ2VkX29wdGlvbiIsIngkMCIsImFycmF5X2luaXQyIiwiYXJyYXlfaXRlcjIiLCJ3cml0ZV91bnRhZ2dlZF9hcnJheSIsImNlbGxfdGFnIiwid3JpdGVfdW50YWdnZWRfbGlzdCIsInNhZmVfciIsInR5cGVfZmllbGRfbmFtZSIsIm5vcm1hbGl6ZV90eXBlX2ZpZWxkIiwiZmllbGRzIiwidHlwZSIsInJlc3RvcmVfdHlwZV9maWVsZCIsImZpZWxkcyQwIiwibm9ybWFsaXplJDAiLCJ2YWx1ZSIsInJlc3RvcmUkMCIsInRibCIsImlzX2tub3duX3RhZyIsImlzX2NhdGNoX2FsbF90YWciLCJjYXRjaF9hbGxfdGFnIiwiZm91bmQiLCJmaWVsZCIsInZhcmlhbnQiLCJmaWVsZHMkMSIsInRhZ2dlZCIsInRhZyQwIiwicmVhbF92IiwicmVhbF90YWciLCJvcHRfdmFsdWUiLCJ0YWckMSIsInYkMCIsImNyZWF0ZSIsIm4iLCJhIiwibGVuZ3RoIiwiZ2V0IiwiaSIsInNldCIsInYiLCJuJDEiLCJuJDAiLCJhcnJheSIsImluaXQiLCJmIiwiYXBwZW5kIiwiYiIsImxiIiwibGEiLCJjIiwieCIsImNvbmNhdCIsImwiLCJsJDAiLCJ0IiwiZWx0Iiwic29sIiwibSIsImsiLCJsJDEiLCJxIiwidCQwIiwicyIsIm9mZnNldCIsImskMCIsImskMSIsIm9mZnNldCQwIiwic3ViIiwic3RhcnQiLCJsZW4iLCJzaXplIiwiY29weSIsImZpbGwiLCJpJDAiLCJvZl9saXN0IiwiZGVmYXVsdCQwIiwiaXRlciIsIml0ZXJpIiwiZm9sZF9sZWZ0aSIsImZvbGRfcmlnaHRpIiwibWFwIiwiYmxpdCIsImExIiwib2ZzMSIsImEyIiwib2ZzMiIsInByaW50IiwidHJhaWxpbmciLCJwcl9zIiwicHJfYSIsIm1heF9hcnJheV9zaXplMSIsIm1heF9hcnJheV9zaXplMiIsImV1Y2xpZGVlbiIsInAiLCJwJDAiLCJhdXgiLCJtJDAiLCJhJDAiLCJhJDEiLCJqIiwiZzIiLCJnMSIsInkiLCJlIiwiZyIsImN1cnJlbnQiLCJpbml0JDAiLCJvcHQiLCJwcl9zZXAiLCJwcl9lbCIsInN0aCIsImNzdCIsImZsb2F0X2lzX3plcm8iLCJwb3ciLCJhY2N1IiwiYWNjdSQwIiwiYWNjdSQxIiwiZmFjdCIsImkkMSIsImdldF9wcm9kdWN0X2ltYWdlX29jYyIsImNvbWJpbmUiLCJ0JDEiLCJvbGQkMSIsIm9sZCIsIm9jYyIsImgiLCJvY2MkMCIsIm9sZCQwIiwiZ2V0X3Byb2R1Y3RfaW1hZ2Vfb2NjXzIiLCJsMSIsImwyIiwibDEkMCIsImwyJDAiLCJjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCIsImgkMCIsImwxJDEiLCJsMiQxIiwiaDIiLCJoMSIsIm9jYzEiLCJsMSQyIiwib2NjMiIsImwyJDIiLCJvY2MyJDAiLCJsMiQzIiwib2NjMSQwIiwibDEkMyIsImFjY3UkMiIsImRpdjIiLCJwb3c2NCIsImNhbnRvcl9wYWlyaW5nIiwicmVhZF9pbnB1dCIsInVzZXJfaW5wdXQiLCJhY2MiLCJhY2MkMCIsIm5vdF9hbl9pZCIsImFycmF5X2ZvbGRfbGVmdF9tYXBpIiwib3V0IiwieSQwIiwibyIsImFycmF5X21hcF9vZl9saXN0IiwieCQwIiwiYW5zIiwiYXJyYXlfcmV2X29mX2xpc3QiLCJhcnJheV9yZXZfbWFwX29mX2xpc3QiLCJhcnJheV9mb2xkX2xlZnRpIiwiYXJyYXlfZm9sZF9yaWdodGkiLCJ4JDEiLCJhcnJheV9mb2xkX2xlZnQyaSIsImFycmF5X2ZpbHRlciIsImFycmF5X21pbl9lcXVhbF9ub3RfbnVsbCIsImFnMSIsIm5iMSIsImFnMiIsIm5iMiIsImokMCIsIm91dCQxIiwiaSQyIiwidmEiLCJhZzEkMCIsIm5iMSQwIiwiYWcyJDAiLCJuYjIkMCIsIm91dCQwIiwiYXJyYXlfY29tcGFyZSIsImNvbXBhcmUiLCJkIiwicmVjdGkiLCJtaW5fcG9zX2ludF9ub3RfemVybyIsImRhdGFiIiwia2V5YiIsImRhdGFhIiwia2V5YSIsIm1heF9wb3NfaW50X25vdF96ZXJvIiwiZm9sZF9vdmVyX3Blcm11dGF0aW9ucyIsInRvX2RvIiwiZGlzY2FyZGVkIiwicGVybXV0YXRpb24iLCJ0b19kbyQwIiwiZGlzY2FyZGVkJDAiLCJ0b19kbyQxIiwibGlzdCIsInRvX2RvMSIsImRpc2NhcmRlZCQxIiwiZ2NkXzIiLCJiJDAiLCJiJDEiLCJsY21fMiIsImxjbSIsImdldF9pbnRlcnZhbF9saXN0IiwiYWRkIiwib3V0cHV0IiwiY3VycmVudCQwIiwib3V0cHV0JDAiLCJsb3dlcmNhc2UiLCJjYXBpdGFsaXplIiwic3RyaW5nX3NwbGl0X29uX2NoYXIiLCJkZWxpbWl0ZXIiLCJpbmRleCIsInNtYXNoX2R1cGxpY2F0ZV9pbl9vcmRlcmVkX2xpcyIsInRhaWwkMiIsIm5vY2MkMiIsImN1cnJlbnQkMSIsInRhaWwiLCJub2NjIiwidGFpbCQwIiwibm9jYyQwIiwidGFpbCQxIiwibm9jYyQxIiwiY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIiwibmFtZSIsImV4dCIsImZpbmRfYXZhaWxhYmxlX25hbWUiLCJhbHJlYWR5X3RoZXJlIiwiZmFjdWx0YXRpdmUiLCJleHQkMCIsImJhc2UiLCJiYXNlJDAiLCJkZWZhdWx0X21lc3NhZ2VfZGVsaW10ZXIiLCJnZXRfcmVmIiwicmVmIiwicmVtb3ZlX2RvdWJsZV9lbGVtZW50cyIsInNvcnRfYnlfcHJpb3JpdHkiLCJrZXlzIiwic29ydCIsImtleSIsImluaXRpYWxfYnVmZmVyX3NpemUiLCJ3cml0ZV90b19jaGFubmVsIiwic3RyaW5nX29mX3dyaXRlIiwib2IiLCJyZWFkX29mX3N0cmluZyIsImxleF9zdCIsImxleF9idWYiLCJyZWFkX2JldHdlZW5fc3BhY2VzIiwicmVhZF9uZXh0X2l0ZW0iLCJzdCIsImJ1aWxkX21zZyIsIm9mX3N0cmluZyIsInRvX3N0cmluZyIsImVycm9yX21zZyIsIm9mX2ludCIsInRvX2ludCIsIm9mX2Jvb2wiLCJ0b19ib29sIiwib2ZfdW5pdCIsInRvX3VuaXQiLCJvZl9vcHRpb24iLCJ0b19qc29uIiwidG9fb3B0aW9uIiwid3JpdGVfb3B0aW9uIiwicmVhZF9vcHRpb24iLCJ0b19saXN0Iiwib2ZfanNvbiIsIndyaXRlX2NvbW1hIiwid3JpdGVfbGlzdCIsImZfZWx0Iiwib2ZfYXJyYXkiLCJ0b19hcnJheSIsIndyaXRlX2FycmF5Iiwid3JpdGVfc2VxdWVuY2UiLCJxJDAiLCJmJDAiLCJyZWFkX3ZhcmlhbnQiLCJyZWFkX2lkIiwicmVhZCIsInNtYXJ0X2Fzc29jIiwib2ZfYXNzb2MiLCJ0b19hc3NvYyIsImpzb24iLCJ3cml0ZV9maWVsZCIsIm5hIiwib2ZfcGFpciIsInRvX2pzb24xIiwidG9fanNvbjIiLCJsYWIxIiwic3RoJDAiLCJsYWIyIiwidG9fdHJpcGxlIiwib2ZfanNvbjEiLCJvZl9qc29uMiIsIm9mX2pzb24zIiwic3RoJDEiLCJsYWIzIiwic3RoJDIiLCJvZl90cmlwbGUiLCJ0b19qc29uMyIsInRvX3BhaXIiLCJ3cml0ZV9jb21wYWN0X3BhaXIiLCJyZWFkX2NvbXBhY3RfcGFpciIsImNvbXBhY3RfdG9fcGFpciIsIm9mX21hcCIsImZvbGQiLCJrZXlfdG9fanNvbiIsInZhbHVlX3RvX2pzb24iLCJsYWJfa2V5IiwibGFiX3ZhbHVlIiwidmFsdWUiLCJ0b19tYXAiLCJlbXB0eSIsImpzb25fdG9fa2V5IiwianNvbl90b192YWx1ZSIsIm9mX3VuaXhfbGFiZWwiLCJpbnQkMCIsInRvX3VuaXhfbGFiZWwiLCJvZl91bml4X2Vycm9yIiwidG9fdW5peF9lcnJvciIsInN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCIsInN1Y2Nlc3MiLCJzdG9wIiwic3VjY2Vzc19vcl9zdG9wIiwiaGVpZ2h0Iiwibm9kZSIsImxlZnQiLCJyaWdodCIsImhsIiwiaHIiLCJobCQwIiwiaXNfZW1wdHkiLCJzaW5nbGV0b24iLCJpc19zaW5nbGV0b24iLCJzZXQyIiwic2V0MSIsImJhbGFuY2UiLCJoZWlnaHRfbGVmdCIsImhlaWdodF9yaWdodCIsImxlZnRyaWdodCIsImxlZnR2YWx1ZSIsImxlZnRsZWZ0IiwibGVmdHJpZ2h0cmlnaHQiLCJsZWZ0cmlnaHR2YWx1ZSIsImxlZnRyaWdodGxlZnQiLCJyaWdodHJpZ2h0IiwicmlnaHR2YWx1ZSIsInJpZ2h0bGVmdCIsInJpZ2h0bGVmdHJpZ2h0IiwicmlnaHRsZWZ0dmFsdWUiLCJyaWdodGxlZnRsZWZ0IiwiYmFsYW5jZV93aXRoX2xvZ3MiLCJ3YXJuIiwicGFyYW1ldGVycyIsImVycm9yIiwibG9jIiwiZXJyb3IkMCIsInIiLCJvJDAiLCJhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MiLCJuZXdfdmFsIiwidmFsdWVfc2V0IiwicmlnaHQkMCIsImJvb2wiLCJzZXQkMCIsImVycm9yJDEiLCJsZWZ0JDAiLCJib29sJDAiLCJlcnJvciQyIiwic2V0JDEiLCJlcnJvciQzIiwiYWRkX3dpdGhfbG9ncyIsIm5ld192YWx1ZSIsImFkZF9ldmVuX2lmX2l0X2V4aXN0cyIsImpvaW4iLCJyaWdodGhlaWdodCIsImxlZnRoZWlnaHQiLCJzYWZlX2V4dHJhY3RfbWluX2VsdCIsIm1pbiIsIm1pbl9lbHRfd2l0aF9sb2dzIiwicmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIiwiam9pbl93aXRoX2xvZ3MiLCJyaWdodDIiLCJ2YWx1ZTIiLCJsZWZ0MiIsInNldDIkMCIsIm1pbjIiLCJjb25jYXRfd2l0aF9sb2dzIiwiZWx0X29wdCIsInNwbGl0X3dpdGhfbG9ncyIsInNwbGl0X3ZhbCIsInNldF92YWwiLCJsZWZ0bGVmdCQwIiwicmlnaHRyaWdodCQwIiwicmVtb3ZlIiwicmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIiwiZXJyb3IkNCIsImVycm9yJDUiLCJlcnJvciQ2IiwiZXJyb3IkNyIsImVycm9yJDgiLCJzZXQkMiIsImVycm9yJDkiLCJyZW1vdmVfd2l0aF9sb2dzIiwic3BsaXQiLCJzcGxpdF92YWx1ZSIsInNldF92YWx1ZSIsInVuaW9uIiwiaGVpZ2h0MiIsImhlaWdodDEiLCJyaWdodDEiLCJ2YWx1ZTEiLCJsZWZ0MSIsInJpZ2h0MiQwIiwibGVmdDIkMCIsInJpZ2h0MSQwIiwibGVmdDEkMCIsImRpc2pvaW50X3VuaW9uIiwidW5pb25fZ2VuIiwiYWRkX2dlbiIsInVuaW9uX3dpdGhfbG9ncyIsInciLCJzJDAiLCJkaXNqb2ludF91bmlvbl93aXRoX2xvZ3MiLCJzdXR1cmVfbm90IiwiaW50ZXIiLCJ0cmlwbGUyIiwic3V0dXJlX25vdF93aXRoX2xvZ3MiLCJpbnRlcl93aXRoX2xvZ3MiLCJkaWZmIiwiZGlmZl93aXRoX2xvZ3MiLCJtaW51cyIsIm1pbnVzX3dpdGhfbG9ncyIsIm1lbSIsInNlYXJjaGVkX3ZhbHVlIiwiZmlsdGVyIiwiZmlsdCIsImZpbHRlcl93aXRoX2xvZ3MiLCJwYXJ0aXRpb24iLCJwYXJ0IiwicGFydGl0aW9uX3dpdGhfbG9ncyIsInJoIiwiY29uc19lbnVtIiwiZW51bSQxIiwiZTIkMiIsImUxJDIiLCJlMSIsImUyIiwiZTIkMCIsInIyIiwidjIiLCJlMSQwIiwicjEiLCJ2MSIsImUyJDEiLCJlMSQxIiwiZXF1YWwiLCJzdWJzZXQiLCJzZXQxJDAiLCJmb2xkX2ludiIsImZvcl9hbGwiLCJleGlzdHMiLCJlbGVtZW50cyIsImVsZW1lbnRzX2F1eCIsImF1eF9wcmludCIsImtleSQxIiwia2V5JDAiLCJtaW5fZWx0IiwibWF4X2VsdCIsImNob29zZSIsInJhbmRvbSIsInJzIiwiYWltX2FjYyIsImFjY19sIiwiYWNjX3IiLCJlbXB0eSQwIiwiaGVpZ2h0JDAiLCJzaXplJDAiLCJub2RlJDAiLCJrZXkwIiwiZGF0YSIsImlzX2VtcHR5JDAiLCJyb290IiwibWF4X2tleSIsImJhbGFuY2UkMCIsInJpZ2h0MCIsImRhdGEwIiwibGVmdDAiLCJkYXRhMSIsImtleTEiLCJyaWdodDAkMCIsImRhdGEwJDAiLCJrZXkwJDAiLCJsZWZ0MCQwIiwiZGF0YTEkMCIsImtleTEkMCIsImJhbGFuY2Vfd2l0aF9sb2dzJDAiLCJhZGQkMCIsImRhdGFfbWFwIiwia2V5X21hcCIsImNtcCIsImFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyQwIiwicGFyYW1ldGVyIiwibWFwJDAiLCJhZGRfd2l0aF9sb2dzJDAiLCJleHRyYWN0X21pbl9iaW5kaW5nIiwiZGF0YTIiLCJrZXkyIiwiZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3MiLCJtZXJnZSIsIm1hcDEiLCJtYXAyIiwiZGF0YTMiLCJrZXkzIiwibWVyZ2Vfd2l0aF9sb2dzIiwicmVtb3ZlJDAiLCJyZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UkMCIsIm1hcCQxIiwibWFwJDIiLCJyZW1vdmVfd2l0aF9sb2dzJDAiLCJwb3AiLCJqb2luJDAiLCJ2YWx1ZSQwIiwiam9pbl93aXRoX2xvZ3MkMCIsInNwbGl0JDAiLCJkYXRhMiQwIiwibGVmdDIkMSIsInJpZ2h0MiQxIiwic3BsaXRfd2l0aF9sb2dzJDAiLCJkaWZmJDAiLCJvbGVmdDIiLCJvbGVmdDEiLCJvcmlnaHQyIiwib3JpZ2h0MSIsInVuaW9uJDAiLCJvcF9kYXRhMiIsImQyIiwiZDIkMCIsIm9wX2RhdGExIiwiZDEiLCJkMSQwIiwidW5pb25fd2l0aF9sb2dzJDAiLCJ1cGRhdGUiLCJ1cGRhdGVfd2l0aF9sb2dzIiwiZGlmZl9wcmVkIiwicHJlZCIsIm1pbl9lbHQkMCIsImZpbmRfb3B0aW9uIiwiZmluZF9kZWZhdWx0IiwiZmluZF9vcHRpb25fd2l0aF9sb2dzIiwiZmluZF9kZWZhdWx0X3dpdGhfbG9ncyIsIm1lbSQwIiwiZmlsdGVyX29uZSIsIml0ZXIkMCIsImZvbGQkMCIsInZhbHVlJDEiLCJvdXRwdXRsIiwiaW50ZXJydXB0ZWQiLCJ2YWxfb3B0IiwiZm9sZF93aXRoX2ludGVycnVwdGlvbiIsIm1vbmFkaWNfZm9sZCIsInBhcmFtIiwiZXJyIiwiZXJyJDAiLCJlcnIkMSIsInZhbHVlJDIiLCJlcnIkMiIsIm1vbmFkaWNfZm9sZDIiLCJyZXMiLCJyaCQwIiwibWFwMSQwIiwibWFwMiQwIiwicmVzJDAiLCJyZXMkMSIsInJoJDEiLCJyZXMkMiIsInJoJDIiLCJyZXMkMyIsInJoJDMiLCJyZXMkNCIsInJoJDQiLCJtb25hZGljX2ZvbGQyX3NwYXJzZSIsImlkIiwibW9uYWRpY19pdGVyMl9zcGFyc2UiLCJtb25hZGljX2ZvbGRfcmVzdHJpY3Rpb24iLCJtYXBpIiwibWFwX3dpdGhfbG9ncyIsImVycm9ycyIsImVycm9ycyQwIiwiZGF0YSQwIiwiZXJyb3JzJDEiLCJtYXAyX3dpdGhfbG9ncyIsIm1hcDJ6X3dpdGhfbG9ncyIsImZvbGQyX3dpdGhfbG9ncyIsImZvbGQyel93aXRoX2xvZ3MiLCJmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIiwiaXRlcjJfc3BhcnNlX3dpdGhfbG9ncyIsInBhciIsImZvcl9hbGwkMCIsImNvbnNfZW51bSQwIiwiZSQwIiwiZSQxIiwiY29tcGFyZSQwIiwibTEiLCJtMiIsImMkMCIsImVxdWFsJDAiLCJiaW5kaW5nc19hdXgiLCJiaW5kaW5ncyIsImF1eF9wcmludCQwIiwicHIiLCJkYXRhJDEiLCJkYXRhJDIiLCJwcmludCQwIiwiZGlmZl93aXRoX2xvZ3MkMCIsIm8xJDEiLCJvMiQxIiwibzEiLCJvMiIsIm8xJDAiLCJvMiQwIiwiZGlmZl9wcmVkX3dpdGhfbG9ncyIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nXyIsImZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIiwicHJval9tYXAiLCJpZGVudGl0eV9lbHQiLCJrZXlfYSIsImRhdGFfYSIsIm1hcF9iIiwia2V5X2IiLCJwcm9qX21hcF9tb25hZGljIiwiaGFuZGxlciIsIm1vbmFkaWNfbWVyZ2UiLCJoYW5kbGVyJDAiLCJwcm9qX3NldCIsInNldF9hIiwicHJval9zZXRfbW9uYWRpYyIsInNldF9iIiwicGFydGl0aW9uX3NldCIsInBhcnRpdGlvbl9zZXRfbW9uYWRpYyIsInByb2oyIiwia2V5X2MiLCJzdWJtYXAiLCJzdWJtYXAkMCIsInByb2oyX21vbmFkaWMiLCJpbnRfY29tcGFyZSIsImludF9wYWlyX2NvbXBhcmUiLCJzdHJpbmdfcGFpcl9jb21wYXJlIiwicGFpcl9lcXVhbCIsImVxYSIsImVxYiIsInliIiwieWEiLCJ4YiIsInhhIiwicHJpbnQkMSIsInByaW50JDIiLCJwcmludCQzIiwidW5zb21lIiwidW5zb21lX29yX3JhaXNlIiwiZXhjZXAiLCJiaW5kIiwiZXEiLCJnZXRfYW5ub3QiLCJhbm5vdCIsImNvcHlfYW5ub3QiLCJtYXBfYW5ub3QiLCJvZl9wb3MiLCJzdGFydF9sb2NhdGlvbiIsImVuZF9sb2NhdGlvbiIsImR1bW15X3Bvc2l0aW9uIiwiZHVtbXkiLCJhbm5vdF93aXRoX2R1bW15IiwiaXNfZHVtbXkiLCJpc19hbm5vdGVkX3dpdGhfZHVtbXkiLCJwcl9mIiwicHJfbCIsInByaW50X2Fubm90ZWQiLCJyZWFkX3Bvc2l0aW9uIiwiY2hyIiwibGluZSIsIndyaXRlX3Bvc2l0aW9uIiwidG9fY29tcGFjdF95b2pzb24iLCJkZWNscyIsIm9mX2NvbXBhY3RfeW9qc29uIiwiZmlsZW5hbWVzIiwiZmlsZSIsIngkMiIsIm9mX2xpbmUiLCJ4JDMiLCJvZl9jaHIiLCJ4JDQiLCJ0b19jaHIiLCJ4JDUiLCJ0b19saW5lIiwieW9qc29uX29mX2Fubm90ZWQiLCJqcCIsImFubm90ZWRfb2ZfeW9qc29uIiwid3JpdGVfcmFuZ2UiLCJzdHJpbmdfb2ZfcmFuZ2UiLCJyZWFkX3JhbmdlIiwicmFuZ2Vfb2Zfc3RyaW5nIiwiaXNfaW5jbHVkZWRfaW4iLCJyYW5nZSIsImxpc3RpIiwiZWwiLCJoYXNodGJsIiwidGJsIiwiYm90dG9tIiwibnUiLCJlbXB0eV9zZXQiLCJjb21tYSIsImRvdCIsImNvbXBhY3RfY29tbWEiLCJjb2xvbiIsInNwYWNlIiwiY3V0IiwidW5pdCIsInBhaXIiLCJwcGEiLCJwcGIiLCJvcHRpb24iLCJ3aXRoX3NwYWNlIiwicGxhaW5fYXJyYXkiLCJsaXN0X3RvX3N0cmluZyIsInNldF90b19zdHJpbmciLCJhY2N2YWwiLCJyJDAiLCJiYWwiLCJsciIsImx2IiwibGwiLCJscnIiLCJscnYiLCJscmwiLCJhY2NfbHJyIiwiYWNjX2wkMSIsImFjY19yJDEiLCJhY2NfciQwIiwicnIiLCJydiIsInJsIiwiYWNjX2wkMCIsInJsciIsInJsdiIsInJsbCIsImFjY19ybGwiLCJ3ZWlnaHQiLCJ3ZWlnaHQkMCIsInJlbW92ZV9taW5fYmluZGluZyIsInQyIiwidDEiLCJzdGF0ZSIsImFpbV9hY2MkMSIsIndyaXRlX3NldmVyaXR5Iiwid3JpdGVfc3RhdHVzIiwid3JpdGVfbWVzc2FnZSIsInRleHQiLCJzZXZlcml0eSIsInJlYWRfbWVzc2FnZSIsInByaW50X21lc3NhZ2UiLCJyYW5nZSQwIiwid3JpdGVfdCIsIndyaXRlX29rIiwid3JpdGVfZXJyb3IiLCJtZXNzYWdlcyIsInN0YXR1cyIsIm1lc3NhZ2VzJDAiLCJzdGF0dXMkMCIsInN0cmluZ19vZl90IiwicmVhZF90X2NvbnRlbnQiLCJyZWFkX3QiLCJyZWFkX29rIiwicmVhZF9lcnJvciIsImF1eF9yZWFkX3QiLCJjbG9zaW5nIiwicG9zIiwidiQwIiwidF9vZl9zdHJpbmciLCJsaWZ0Iiwib2tfc3RhdHVzIiwiZXJyb3Jfc3RhdHVzIiwib2siLCJvdmVyd3JpdGVfc3RhdHVzIiwic3BlY2lhbF92YWwiLCJpZGVudGl0eSIsIm1heCIsImltbWVkaWF0ZSIsImlzX2lkZW50aXR5IiwiY29tcHV0ZSIsInYkMSIsImZvcmNlIiwiaW1hZ2UiLCJkZWJ1Z19tb2RlIiwibm90X29rIiwidW5zYWZlX2ltcGVyYXRpdmVfYWRkIiwiaW1wZXJhdGl2ZV9hZGQiLCJvcmlnaW4iLCJjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0Iiwic3RvcF9hdCIsInByZSQxIiwic3Vic3QiLCJwcmUiLCJwcmUkMCIsImFwcGx5IiwiY29tcG9zZSIsImV4dGVuc2libGUiLCJpbnZlcnNlIiwic3JjIiwiZHN0IiwicHJpbnRfZnVsbCIsInRvX3lvanNvbiIsIm9mX3lvanNvbiIsIm1hc2siLCJ1bm1hc2siLCJpc19pbmZpbml0ZSIsImZpbmQiLCJjb3B5X3ZlY3RfaW4iLCJjb3B5X2luIiwiZGVjbGFyZV91bmJhbGFuY2VkIiwidXBkYXRlX3N0cnVjdHVyZSIsIm5fbGF5ZXIiLCJ1cGRhdGVfc3RydWN0dXJlX2F1eCIsImZhdGhlciIsInRfbm9kZSIsInRfc3VidHJlZSIsImxheWVyIiwiY3VycmVudF9sYXllciIsImxheWVyX2VuZCIsInVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyIiwidW5iYWxhbmNlZF9ldmVudHMiLCJsYXllcl9lbmQkMCIsImN1cnJlbnRfbGF5ZXIkMCIsInckMCIsInRvdGFsIiwicmVwIiwiciQxIiwibHNvbiIsInJzb24iLCJyJDIiLCJkZWJ1Z19wcmludCIsImludiIsImluZiIsImdyYXBoX3BhZ2UiLCJ0aXRsZSIsInN1YnRpdGxlIiwiZGVwcyIsImhlYWRlciIsImNvcmUiLCJkZXBlbmRlbmN5IiwiYmluX2FsZ19vcF90b19zdHJpbmciLCJiaW5fYWxnX29wX2lzX3ByZWZpeCIsInByaW50X2Jpbl9hbGdfb3AiLCJmeCIsImZ5Iiwib3AiLCJiaW5fYWxnX29wX3RvX2pzb24iLCJiaW5fYWxnX29wX29mX2pzb24iLCJ1bl9hbGdfb3BfdG9fc3RyaW5nIiwicHJpbnRfdW5fYWxnX29wIiwidW5fYWxnX29wX3RvX2pzb24iLCJ1bl9hbGdfb3Bfb2ZfanNvbiIsInN0YXRlX2FsZ19vcF90b19zdHJpbmciLCJwcmludF9zdGF0ZV9hbGdfb3AiLCJzdGF0ZV9hbGdfb3BfdG9fanNvbiIsInN0YXRlX2FsZ19vcF9vZl9qc29uIiwiYmluX2Jvb2xfb3BfdG9fc3RyaW5nIiwicHJpbnRfYmluX2Jvb2xfb3AiLCJiaW5fYm9vbF9vcF90b19qc29uIiwiYmluX2Jvb2xfb3Bfb2ZfanNvbiIsInVuX2Jvb2xfb3BfdG9fc3RyaW5nIiwicHJpbnRfdW5fYm9vbF9vcCIsInVuX2Jvb2xfb3BfdG9fanNvbiIsInVuX2Jvb2xfb3Bfb2ZfanNvbiIsImNvbXBhcmVfb3BfdG9fc3RyaW5nIiwicHJpbnRfY29tcGFyZV9vcCIsImNvbXBhcmVfb3BfdG9fanNvbiIsImNvbXBhcmVfb3Bfb2ZfanNvbiIsInByaW50X3Jldl9kZXAiLCJpZCQwIiwiaWQkMSIsInJldl9kZXBfdG9feW9qc29uIiwicmV2X2RlcF9vZl95b2pzb24iLCJkZXBzZXRfdG9feW9qc29uIiwiZGVwc2V0X29mX3lvanNvbiIsInplcm8iLCJvbmUiLCJjYXN0X2Jpbl9vcCIsIm9wX2YiLCJvcF9pIiwib3BfaTY0IiwieSQxIiwieSQyIiwieSQzIiwieSQ0Iiwib3BfaSQwIiwieSQ1Iiwib3BfaTY0JDAiLCJ5JDYiLCJ5JDciLCJvcF9pNjQkMSIsInkkOCIsIm9wX2k2NCQyIiwiY2FzdF91bl9vcCIsIm9wX2YkMCIsIm9wX2kkMSIsIm9wX2YkMSIsIm9wX2YkMiIsIm4xIiwibjIiLCJpc19ncmVhdGVyIiwiaXNfc21hbGxlciIsImlzX2VxdWFsIiwibXVsdCIsInJlbSIsImludGVybmFsX2RpdiIsInN1Y2MiLCJuZWciLCJ0b19mbG9hdCIsImlzX3plcm8iLCJpc19zdHJpY3RseV9wb3NpdGl2ZSIsInBvc19wb3ciLCJwcmV0dHlfcHJpbnQiLCJwcmludF9vcHRpb24iLCJtYXliZV9pdGVyaSIsIm9mX2Jpbl9hbGdfb3AiLCJvZl91bl9hbGdfb3AiLCJvZl9jb21wYXJlX29wIiwid2FybmluZ19idWZmZXIiLCJmb3JiaWRkZW4iLCJiYWQiLCJjcmVhdGVfZnJvbV9saXN0IiwiY3JlYXRlX25vX2xvYyIsIm5kIiwiZWx0X25hbWUiLCJlbHRfaWQiLCJraW5kIiwic2VwIiwicHAiLCJlbHRfdmFsIiwicmVtb3ZlX3N1ZmZpeF9hZnRlcl9sYXN0X29jY3VyIiwibGlzdCQwIiwiYnVmZmVyIiwibGlzdCQxIiwibGlzdCQyIiwiYnVmZmVyJDAiLCJsYXN0IiwicG9wX2xhc3QiLCJjb25zX29wdGlvbiIsInNtYXJ0X2ZpbHRlciIsInNtYXJ0X21hcCIsInJldl9tYXBpIiwibWFwX29wdGlvbiIsImV4aXN0c191bmlxIiwibWVyZ2VfdW5pcSIsInQyJDAiLCJoMiQwIiwidDEkMCIsImgxJDAiLCJyZXZfbWFwX2FwcGVuZCIsImFjYyQxIiwibWFwX2ZsYXR0ZW4iLCJyZW1vdmVfY29uc2VjdXRpdmVfZG91YmxlIiwicSQxIiwibGFzdCQxIiwibGFzdCQwIiwiZm9sZF9yaWdodF9tYXAiLCJmb2xkX2xlZnQyIiwiY2xlYW4iLCJpbnRfb2ZfaGFzaGVkX2xpc3QiLCJmc3RfZWx0X2lkIiwiZnN0X2xpc3RfaWQiLCJjb25zIiwiY2FjaGUkMCIsImhlYWQiLCJoYXNoX2hlYWQiLCJjYWNoZSQxIiwic3VidGFiIiwic3VidGFiJDAiLCJzdWJ0YWIkMSIsImhhc2gkMCIsImhhc2giLCJjYWNoZSIsImZvcm1hdHRlciIsInByaW50X2NhY2hlIiwib3B0JDAiLCJzaW1wbGlmeSIsImdjZCIsImRpdiIsImJfaW52IiwicHVzaCIsImNyY190YWJsZSIsInN0cmluZyIsInN0ciIsImNyYyIsInRyaXBsZV9vZl9jb2xvciIsImNyZWF0ZV9pbmZpbml0ZSIsInQkMiIsInQkNCIsInQkMyIsIm92ZXJ3cml0dGVuX3ZhbHVlIiwib3ZlcndyaXR0ZW5fdmFsdWUkMCIsImNvbnRlbnRzIiwibnRoIiwib2ZzIiwiY2xlYXIiLCJyZXNldCIsInJlc2l6ZSIsIm1vcmUiLCJuZXdfbGVuIiwibmV3X2J1ZmZlciIsImFkZF9jaGFyIiwiYWRkX3N1YnN0cmluZyIsIm5ld19wb3NpdGlvbiIsImFkZF9zdWJieXRlcyIsImFkZF9zdHJpbmciLCJkZWZhdWx0X2FscGhhYmV0IiwidXJpX3NhZmVfYWxwaGFiZXQiLCJwYWRkaW5nIiwib2ZfY2hhciIsImFscGhhYmV0IiwidG9fY2hhciIsImRlY29kZSIsImlucHV0IiwiaW5wdXQkMCIsImxlbmd0aCQwIiwid29yZHMiLCJwYWRkaW5nJDAiLCJ6IiwiZW5jb2RlIiwicGFkIiwicGFkZGluZ19sZW4iLCJwcmludCIsImNvbXBhcmUiLCJ5IiwieCIsInkkMCIsIngkMCIsImMiLCJwcmludF9hZ2VudCIsIndpdGhfaWQiLCJ3aXRoX2xpbmsiLCJub2RlIiwiZiIsImFnIiwiaWQiLCJzaSIsImkiLCJwJDAiLCJwYWNrIiwicCIsImZyZWVfaWQiLCJkYW5nbGluZyIsInR5IiwibCIsIm15c2VsZiIsInZhIiwidmEkMCIsInByaW50X2NjIiwibWl4IiwibGluayIsImFsIiwiYXIiLCJzdG9yZSIsInByaW50X2RvdF9jYyIsIm5iX2NjIiwiaWwiLCJpciIsInYiLCJzIiwibGlua3MiLCJzJDAiLCJhciQwIiwiYWwkMCIsIndyaXRlX3NpdGUiLCJvYiIsIndyaXRlX2NjX3NpdGUiLCJsaW5rc19vZl95b2pzb24iLCJiIiwiZXJyb3JfbXNnIiwicmVhZF9jY19zaXRlIiwibGIiLCJrZXkkMCIsIm4iLCJrZXkiLCJwb3J0X3N0YXRlcyIsInBvcnRfbGlua3MiLCJvdXQiLCJzaXRlX3R5cGUiLCJzaXRlX25hbWUiLCJ3cml0ZV9jY19ub2RlIiwibm9kZV9pZCIsInJlYWRfY2Nfbm9kZSIsIm5vZGVfc2l0ZXMiLCJub2RlX3R5cGUiLCJ3cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50IiwicmVhZF9jb25uZWN0ZWRfY29tcG9uZW50Iiwic3RyaW5nX29mX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJvcHQiLCJzdGgiLCJsZW4iLCJjb25uZWN0ZWRfY29tcG9uZW50X29mX3N0cmluZyIsImludmVydGVkX2NvdW50ZXJfc3VmZml4IiwiZm9sZCIsIm8iLCJudW1fb2Zfc2l0ZSIsImFnZW50X25hbWUiLCJzaWduYXR1cmUiLCJhZ2VudF9uYW1lJDAiLCJraW5kIiwic2l0ZV9vZl9udW0iLCJhZGRyIiwibnVtX29mX2ludGVybmFsX3N0YXRlIiwic2l0ZV9pZCIsInN0YXRlIiwic2l0ZV9zaWciLCJpbnRlcm5hbF9zdGF0ZV9vZl9zaXRlX2lkIiwidmFsX2lkIiwiY291bnRlcl9vZl9zaXRlX2lkIiwiaGFzX2NvdW50ZXIiLCJwX2lkIiwib2siLCJvayQwIiwiYSIsImFjYyIsIm9uZV90b19qc29uIiwiYzFfb3B0IiwiYzJfb3B0IiwiYzMiLCJvbmVfb2ZfanNvbiIsInNpemUiLCJzaWdzIiwiZ2V0IiwiYWdlbnRfaWQiLCJhcml0eSIsIm1heF9hcml0eSIsImFnZW50X29mX251bSIsIm51bV9vZl9hZ2VudCIsIm5hbWUiLCJpZF9vZl9zaXRlIiwiYWdlbnRfdHkiLCJzaXRlX29mX2lkIiwiaWRfb2ZfaW50ZXJuYWxfc3RhdGUiLCJpbnRlcm5hbF9zdGF0ZV9vZl9pZCIsImlkX3NpdGUiLCJpZF9zdGF0ZSIsImludGVybmFsX3N0YXRlc19udW1iZXIiLCJkZWZhdWx0X2ludGVybmFsX3N0YXRlIiwiYWxsb3dlZF9saW5rIiwiYWcxIiwiczEiLCJhZzIiLCJzMiIsImFnMSQwIiwiczEkMCIsImFnMiQwIiwiczIkMCIsImNyZWF0ZSIsImNvdW50ZXJzX3Blcl9hZ2VudCIsImFnZW50X3NpZ3MiLCJpc19jb3VudGVyX2FnZW50IiwiYWdlbnRfaW5mbyIsInBvcnRzX2lmX2NvdW50ZXJfYWdlbnQiLCJzaXRlX2lzX2NvdW50ZXIiLCJhZ190eSIsImdldF9jb3VudGVyX2FnZW50X2luZm8iLCJjb3VudGVyX2FnZW50X2luZm8iLCJpc19pbnZlcnRlZF9jb3VudGVyIiwiY291bnRlcl9uYW1lIiwicHJpbnRfc2l0ZSIsInByaW50X2ludGVybmFsX3N0YXRlIiwic2l0ZSIsInByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUiLCJwcmludF9jb3VudGVyX2luZm8iLCJpX29wdCIsImpfb3B0IiwiaiIsImkkMCIsImkkMSIsInByaW50X2NvdW50ZXIiLCJwcF9pbnQiLCJuYSIsInRvX2pzb24iLCJvZl9qc29uIiwiYWdlbnRfc2lnbmF0dXJlIiwicG9ydHMiLCJlbXB0eSIsImluY3JlbWVudF9pbl9zbmFwc2hvdCIsInJhdyIsImNidF9hIiwiY2xhc3NpZnkiLCJhZ3MiLCJuYiIsImhzIiwiYXV4X2luY3JlbWVudCIsInQiLCJoIiwiY2J0X3kiLCJoMSIsImJvb2wiLCJkb24iLCJxIiwiYiQwIiwiaV9vayIsImRvbiQxIiwidG9kbyIsImEkMCIsImFncyQwIiwiY291bnRlcl92YWx1ZSIsImNjIiwiY291bnQiLCJzaWQiLCJuaWQiLCJjY190b191c2VyX2NjIiwiZGVidWdfbW9kZSIsImtlZXBfaW52ZXJ0ZWRfY291bnRlcnMiLCJyIiwicG9zIiwiaW5kZXhlcyIsImluZGV4ZXMkMCIsImNjX2xpc3Rfd2l0aG91dF9jb3VudGVycyIsImNjX3dpdGhvdXRfY291bnRlcnMiLCJkbl9pZCIsImRuX2lkJDAiLCJub2RlX3NpdGVzX2FsbCIsImV4cG9ydCQwIiwianNvbl9kaWN0aW9ubmFyeSIsIm1ha2UiLCJzb3J0Iiwic2lncyQwIiwiYWdlbnQiLCJwcmludF9pbnRlcm5hbCIsInByaW50X3Jhd19pbnRlcm5hbCIsInJlbmFtZSIsImluaiIsIm5fdHkiLCJuX2lkIiwiaWQyIiwiaWQxIiwid3JpdGVfanNvbiIsInJlYWRfanNvbiIsInByaW50JDAiLCJsb29waW5nIiwiaW50X2wiLCJtYXJrIiwib2xkIiwidGVzdCIsInJlc2V0IiwiaXRlcmlfcmVzZXQiLCJrIiwid2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImNvcHkiLCJncmFwaCIsInRhYmxlcyIsImNjcyIsInN0YXRzIiwiZnJlZV9pZHMiLCJ0b3BfaWQiLCJhZGRfYWdlbnQiLCJhaSIsImlkJDAiLCJuZXdfaWQiLCJuZXdfaWQkMCIsInQkMCIsImgkMCIsImZyZWVfaWQkMCIsIm1pc3NpbmdzIiwiYWRkX2ZyZWUiLCJhZGRfaW50ZXJuYWwiLCJhZGRfbGluayIsIm5vZGUyIiwidHkkMCIsIm5vZGUxIiwiY2FjaGUiLCJjY19pZF9vcCIsIm5leHQkMSIsInRvZG9zIiwic2l0ZSQzIiwibmV4dCIsIm5leHQkMCIsInNpdGUkMSIsInNpdGUkMCIsInNpdGUkMiIsInJlbW92ZV9hZ2VudCIsImlkcyIsImFnJDAiLCJyZW1vdmVfZnJlZSIsImdldF9pbnRlcm5hbCIsImdldF9zaXRlcyIsImFyciIsImdldF9zb3J0IiwicmVtb3ZlX2ludGVybmFsIiwicmVtb3ZlX2xpbmsiLCJvdGhlcl9vcmlnJDEiLCJ0aGlzX29yaWciLCJ0aGlzX2NhY2hlIiwib3RoZXJfY2FjaGUiLCJvbGRfY2NfaWQiLCJpbnNwZWN0X3NpdGUiLCJkc3RfY2FjaGUiLCJkYyIsIm90aGVyX29yaWckMCIsIm90aGVyX2NhY2hlJDEiLCJvdGhlcl9uZXh0JDAiLCJvdGhlcl9vcmlnIiwib3RoZXJfY2FjaGUkMCIsIm90aGVyX25leHQiLCJ0b2RvcyQwIiwidGhpc19uZXh0IiwiaXNfYWdlbnQiLCJpc19hZ2VudF9pZCIsImlzX2ZyZWUiLCJpc19pbnRlcm5hbCIsImxpbmtfZXhpc3RzIiwicyQxIiwiYWckMSIsImV4aXN0c19mcmVzaCIsImxpbmtfZGVzdGluYXRpb24iLCJpdGVyX25laWdoYm9ycyIsImFnX3RhYmxlIiwiYWxsX2FnZW50c193aGVyZSIsImluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCIsImdldF9jb25uZWN0ZWRfY29tcG9uZW50Iiwib25lX2Nvbm5lY3RlZF9jb21wb25lbnQiLCJrbm93biIsIm5vZGUkMCIsImtub3duJDAiLCJrbm93biQxIiwidG9kb3MkMSIsInNpdGVzIiwibm9kZV9pZF9pbl93aXRuZXNzIiwic2l0ZV9zdGF0ZSIsInNwZWNpZXMiLCJyb290Iiwic3BlY2llIiwiYnVpbGRfc25hcHNob3QiLCJjY3MkMSIsIm5vZGUkMSIsImNjcyQwIiwibm9kZSQyIiwiYnVpbGRfdXNlcl9zbmFwc2hvdCIsImRlYnVnX3ByaW50IiwicHJpbnRfc2l0ZXMiLCJpbnQkMCIsInByaW50X3BhdGgiLCJlbXB0eV9wYXRoIiwic2luZ2xldG9uX3BhdGgiLCJuJDAiLCJyZXZfcGF0aCIsImlzX3ZhbGlkX3BhdGgiLCJhcmVfY29ubmVjdGVkIiwibWF4X2Rpc3RhbmNlIiwibm9kZXNfeCIsIm5vZGVzX3kiLCJwcmVwYXJlIiwiZGVwdGgiLCJvdXQkMSIsImlkJDEiLCJhY2MkMSIsInNpdGUkNCIsInBhdGgiLCJwYXRoJDAiLCJvdXQkMCIsImFjYyQwIiwibmV4dCQyIiwib3V0JDIiLCJzdG9wIiwiZCIsInByaW50X2lkIiwicHJpbnRfaWRfc2l0ZSIsInNvdXJjZSIsImZpbmRfdHkiLCJ0eSQxIiwicG9ydF90b195b2pzb24iLCJwb3J0X29mX3lvanNvbiIsInN0ZXBfdG9feW9qc29uIiwic3RlcF9vZl95b2pzb24iLCJ0b195b2pzb24iLCJvZl95b2pzb24iLCJleHRlbmQiLCJwb3J0IiwidCQxIiwiY29tcGF0aWJsZV9mcmVzaF9wb2ludCIsImUiLCJzc2l0ZSIsImFycm93Iiwic3R5IiwiaW5qJDAiLCJpbmokMyIsInNzaXRlJDEiLCJzdHkkMSIsInNpZCQxIiwiaWQkMiIsImluaiQxIiwiaW5qJDIiLCJzc2l0ZSQwIiwic3R5JDAiLCJzaWQkMCIsImNvbXBhdGlibGVfcG9pbnQiLCJlJDAiLCJpZCQzIiwidHkkMiIsImlkJDQiLCJzaXRlJDUiLCJ0eSQzIiwiaWQkNSIsInNzaXRlJDIiLCJzaWQkMiIsImluaiQ0Iiwic2l0ZSQ2IiwidHkkNCIsImlkJDYiLCJpc19zdWJuYXZpZ2F0aW9uIiwibmF2JDAiLCJnb2FsIiwibmF2JDEiLCJyZW5hbWVfaWQiLCJpbmoyY2MiLCJpbWciLCJ4JDEiLCJ0JDIiLCJjaGVja19lZGdlIiwiZHN0X2lzX29rYXkiLCJpbmplY3Rpb25fZm9yX29uZV9tb3JlX2VkZ2UiLCJkc3QiLCJkc3QkMCIsInJ0eSIsInJ0eSQwIiwicm9vdCQwIiwiaW1wZXJhdGl2ZV9kc3RfaXNfb2theSIsImltcGVyYXRpdmVfZWRnZV9pc192YWxpZCIsImNvbmNyZXRpemVfcG9ydCIsImNvbmNyZXRpemUiLCJuYXYiLCJzdGVwIiwic3QiLCJjb3B5X2FnZW50IiwiYWdlbnQiLCJjcmVhdGUiLCJuIiwiaSIsImZpbmRfYXV4IiwiYSIsImFpIiwicm9vdCIsImZpbmQiLCJoIiwieCIsImNvbWJpbmVfcmFua3MiLCJieSIsIml5IiwiYngiLCJpeCIsImJ5JDAiLCJ1bmlvbiIsInkiLCJyb290X3giLCJyb290X3kiLCJyYW5rX3giLCJyYW5rX3kiLCJ1bmlvbl9maW5kX2NvdW50ZXJzIiwic2lncyIsIm1peCIsInQiLCJzaWdzJDAiLCJhZyIsImFmdGVyIiwiYmVmb3JlIiwiYiIsImxua19iIiwibG5rX2EiLCJzIiwicHJpbnQiLCJub0NvdW50ZXJzIiwiY3JlYXRlZCIsImluaXRpYWxfY29tbWEiLCJmIiwiY291bnRlcl9hZ2VudHMiLCJzb21lIiwiYWdfdHkiLCJhZ190eSQwIiwiaW50cyIsInBvcnRzIiwiZW1wdHkiLCJpc19jb3VudGVyIiwiY291bnRlciIsImkkMSIsImkkMCIsImFnZW50X3RvX2pzb24iLCJhY2MiLCJhZ2VudF9vZl9qc29uIiwicCIsInRvX2pzb24iLCJtIiwib2ZfanNvbiIsImwiLCJlX3RvX3lvanNvbiIsImZpbGVuYW1lcyIsImZfbWl4IiwiZl9pZCIsIm9wIiwiYSQwIiwib3AkMCIsIm9wJDEiLCJjYyIsIm5vIiwieWVzIiwiY29uZCIsImJvb2xfdG9feW9qc29uIiwidG9rZW4iLCJleHByIiwibWl4dHVyZSIsImV4cHIkMCIsImIkMCIsImEkMSIsImVfb2ZfeW9qc29uIiwiYm9vbF9vZl95b2pzb24iLCJ0b2siLCJwcl9taXgiLCJwcl90b2siLCJwcl92YXIiLCJsYWIiLCJhc3QiLCJ0ayIsInByaW50X2Jvb2wiLCJjb25zdCQwIiwiaW50JDAiLCJmbG9hdCQwIiwiYWRkIiwiZTEiLCJlMiIsIm1pbnVzIiwibXVsdCIsImRpdiIsInBvdyIsImxvZyIsImxuIiwic2luIiwiY29zIiwidW1pbnVzIiwic3FydCIsImFkZF9kZXAiLCJkIiwieCQwIiwib3V0IiwidG9rc19kIiwiaW5fZSIsImluX3QiLCJqIiwiYWRkX2RlcF9ib29sIiwiaGFzX21peCQwIiwidmFyX2RlY2xzIiwiaGFzX21peCIsImJvb2xfaGFzX21peCQwIiwiYm9vbF9oYXNfbWl4IiwiaXNfY29uc3RhbnQiLCJjIiwiYm9vbF9pc19jb25zdGFudCIsImlzX3RpbWVfaG9tb2dlbmVvdXMiLCJib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMiLCJhdXhfZXh0cmFjdF9jYyIsImFjYyQwIiwiZXh0cmFjdF9jY19ib29sIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50cyIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYiIsInNldHVwX2FsZ192YXJzX3Jldl9kZXAiLCJ0b2tzIiwidmFycyIsInByb3BhZ2F0ZV9jb25zdGFudCIsIndhcm5pbmciLCJtYXhfdGltZSIsIm1heF9ldmVudHMiLCJ1cGRhdGVkX3ZhcnMiLCJwb3MiLCJjMSIsImMyIiwicG9zJDAiLCJhJDIiLCJwb3MkMSIsInBvcyQyIiwicG9zJDMiLCJwb3MkNCIsImNvbmQkMCIsInByb3BhZ2F0ZV9jb25zdGFudF9ib29sIiwicG9zJDUiLCJ0JDAiLCJhJDMiLCJhJDQiLCJwb3MkNiIsImEkNSIsImEkNiIsImIkMSIsImIkMiIsIm4xIiwibjIiLCJoYXNfcHJvZ3Jlc3NfZGVwIiwib25seV90aW1lIiwidmFyc19kZXBzIiwiZGVwcyIsImF1eCIsImsiLCJib29sX2hhc19wcm9ncmVzc19kZXAiLCJpc19lcXVhbGl0eV90ZXN0X3RpbWUiLCJtYXBfb25fbWl4dHVyZSIsIm8iLCJwJDAiLCJ4JDEiLCJvJDAiLCJwJDEiLCJwJDIiLCJ5JDAiLCJ4JDIiLCJtYXBfYm9vbF9vbl9taXh0dXJlIiwicCQzIiwibyQxIiwiZm9sZF9vbl9taXh0dXJlJDAiLCJmb2xkX29uX21peHR1cmUiLCJ2IiwidSIsImZvbGRfYm9vbF9vbl9taXh0dXJlJDAiLCJmb2xkX2Jvb2xfb25fbWl4dHVyZSIsImVxdWFsIiwiYTIiLCJhMSIsIm9wYSIsImIyIiwiYjEiLCJvcGIiLCJhMSQwIiwib3BhJDAiLCJiMSQwIiwib3BiJDAiLCJvcGEkMSIsIm9wYiQxIiwiaWQxIiwiaWQyIiwibWl4MSIsIm1peDIiLCJpZDEkMCIsImlkMiQwIiwiYTIkMCIsImExJDEiLCJjb25kYSIsImIyJDAiLCJiMSQxIiwiY29uZGIiLCJlcXVhbF9ib29sIiwidG9feW9qc29uIiwib2ZfeW9qc29uIiwiYXJyYXlfb2ZfanNvbiIsImxzIiwiYXJyYXkxIiwiYXJyYXkyIiwicHJpbnRfa2FwcGEiLCJpbnRmIiwiaXMiLCJzZCIsImFkIiwicHJpbnRfY3ljbGVzIiwiZm9ybSIsImNvbnRhY3RfbWFwIiwiZGZzIiwicGF0aCIsImxhc3RfcyIsImtub3duIiwia25vd24kMCIsInMkMCIsInR5IiwiYWNjJDEiLCJhZyQwIiwid3JpdGVfc2hhcmluZ19sZXZlbCIsIm9iIiwic3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwiLCJvcHQiLCJyZWFkX3NoYXJpbmdfbGV2ZWwiLCJsYiIsInNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIiwiZGVidWdfcHJpbnRfaWQiLCJmbXQiLCJpZCIsInNpemVfb2ZfY2MiLCJjb21wYXJlX2Nhbm9uaWNhbHMiLCJjYyQwIiwiaXNfZXF1YWxfY2Fub25pY2FscyIsImNvYXJzZV9oYXNoIiwicGx1c19pbnRlcm5hbCIsImUiLCJuJDAiLCJleHRyYSIsIm5vZGVfc2hhcGUiLCJpZF90b195b2pzb24iLCJpZF9vZl95b2pzb24iLCJkdW1teSIsImVtcHR5X2NjIiwibmJ0IiwicmF3X2ZpbmRfdHkiLCJ0eXMiLCJmaW5kX3R5IiwiYWRkX29yaWdpbiIsInJlY29uc3RydWN0aW9uX25hdmlnYXRpb24iLCJhbHJlYWR5X3NwZWNpZmllZCIsInJhd19maW5kX3Jvb3QiLCJub2Rlc19ieV90eXBlIiwidHkkMCIsImZpbmRfcm9vdCIsIndlaWdodCIsImwkMCIsImQkMCIsImwkMSIsImRvdWJsZSQwIiwibGlua3MiLCJhcmVfY29tcGF0aWJsZSIsImRlYnVnX21vZGUiLCJwb3NzaWJpbGl0aWVzIiwic3RyaWN0Iiwicm9vdDEiLCJjYzEiLCJyb290MiIsImNjMiIsInJlbmFtZSQxIiwiYXRfbGVhc3Rfb25lX2VkZ2UkMSIsImF0X2xlYXN0X29uZV9lZGdlIiwicmVuYW1lIiwidG9kb3MiLCJwYWlyIiwibHkiLCJseCIsInJlbiIsInRvZG8iLCJvbmVfZWRnZSIsIm9uZV9lZGdlJDEiLCJzMSIsInMyIiwiciIsIm9uZV9lZGdlJDAiLCJjb25mbGljdCIsInJlbmFtZSQwIiwidG9kb3MkMCIsImF0X2xlYXN0X29uZV9lZGdlJDAiLCJhZ3MiLCJoMSIsImJvb2wiLCJhZ3MkMCIsImF1dG9tb3JwaGlzbXMiLCJwb3RlbnRpYWxfcGFpcmluZyIsImxhIiwibWF0Y2hpbmdzIiwicmF3X3RvX25hdmlnYXRpb24iLCJmdWxsIiwibm9kZXMiLCJkb24iLCJmaXJzdCIsImRvbiQxIiwiaCQwIiwicmUiLCJhbnMiLCJhbnMkMCIsImZpcnN0JDAiLCJvdXQkMCIsImluZnMiLCJjYW5kX25vZGVzIiwibG5rMSIsImxuazEkMCIsIml5JDAiLCJpeSQ2IiwiaXkkMiIsIml5JDUiLCJpeSQzIiwiaXkkNCIsIml5JDEiLCJvdXRsIiwiY2FuZF9ub2RlcyQwIiwibm9kZXNfYnlfdHlwZSQwIiwicmVmX25idCIsInJlZl9uYnQkMCIsInIkMiIsImlkcyIsInEiLCJxJDAiLCJyJDAiLCJsc3QiLCJmc3RzIiwiciQxIiwicmUkMCIsInJlX2ltZyIsInJlX2ltZyQwIiwicmUkMSIsInNpdGVzIiwic2l0ZXMkMCIsImNvdW50ZXJfdmFsdWUiLCJzaWQkMCIsIm5pZCQwIiwiY291bnQiLCJzaWQiLCJuaWQiLCJvdGhlciIsImVsIiwiZGkiLCJkbiIsImNvdW50JDAiLCJjb3VudGVyX3ZhbHVlX2NjIiwiZXh0cmVtaXR5IiwiZG90Y29tbWEiLCJkb3RuZXQiLCJwcmludF9jYyIsImNjX2lkIiwid2l0aF9pZCIsInN0aCIsInN0aCQwIiwiZnVsbF9zcGVjaWVzIiwiY2NfaWQkMCIsIm5laWdoIiwibGlua19pZHMiLCJub3RfZW1wdHkiLCJhZ194IiwiYWdfaSIsInN0IiwiZnJlZSIsImRzdF9wIiwiZHN0X2EiLCJkc3RfdHkiLCJraW5kIiwib3V0JDEiLCJwcmludF9jY19hc19pZCIsIm5vdF9lbXB0eSQwIiwibWVyZ2VfY29tcGF0aWJsZSIsInJlc2VydmVkX2lkcyIsImZyZWVfaWQiLCJpbmoxX3RvXzIiLCJpbWciLCJhdmFpbGFibGVfaWRzIiwidXNlZF9pZHMiLCJhdmFpbGFibGVfaW5fY2MxIiwiZnJlZV9pZF9mb3JfY2MxIiwiZ2V0X2NjMiIsInBhY2siLCJ0b2RvczIiLCJ0b2RvczEiLCJpbmoyIiwiaW5qMSIsImZyZWVfaWQkMCIsImZyZWVfaWQkMSIsImdldF9jYzEiLCJub2Rlc2kiLCJub2Rlc28iLCJub2Rlc2oiLCJub2Rlc28kMCIsIm5vZGVzaiQwIiwic3RpJDEiLCJuJDEiLCJzdGokMyIsInN0byQwIiwibiQyIiwic3RqIiwic3RpIiwic3RqJDIiLCJzdG8iLCJzdGokMCIsInN0aSQwIiwic3RqJDEiLCJpbmoyJDAiLCJwYWNrJDAiLCJ0b2RvczIkMCIsImokMCIsIm5vZGVzaSQwIiwiaW5qMiQxIiwicGFjayQxIiwiY29udGVudCIsInJvb3RzIiwic29ucyIsInNpZ25hdHVyZXMiLCJlbnYiLCJwcmludCQwIiwicHBfcG9pbnQiLCJwX2lkIiwiZ2V0X3NpbmdsZV9hZ2VudCIsImdldCQwIiwidG9fbmF2aWdhdGlvbiIsInRyYW5zaXRpb25fdG9feW9qc29uIiwidHJhbnNpdGlvbl9vZl95b2pzb24iLCJkc3QiLCJzb3J0cyIsInNpZ19kZWNsIiwibCQyIiwicyQxIiwibCQzIiwibmV3X29ic19tYXAiLCJnZXRfZWxlbWVudGFyeSIsImRvbWFpbiIsIm5vZGUiLCJhcnJvdyIsInNhIiwidGFpbCIsImluaiIsInByaW50JDEiLCJlbWJlZGRpbmdzX3RvX2Z1bGx5X3NwZWNpZmllZCIsImFfaWQiLCJmcmVzaCIsImlkX2J5X3R5cGUiLCJuYl9pZCIsImluc2VydF9uYXZpZ2F0aW9uIiwiZHN0X2lkIiwiY2NfZCIsImluajJkc3QiLCJpbmoyZHN0JDAiLCJwX2lkJDAiLCJwb2ludCIsInQkMyIsIm5hdiQwIiwic2kiLCJzaSQwIiwidCQxIiwic2kkMSIsImFnJDEiLCJuJDMiLCJzaWwiLCJhZ2wiLCJpbmokMCIsInQkMiIsIm4kNCIsInN1cCIsImlual9lMnN1cCIsImlual9zdXAyZHN0IiwiaW5qX2RfdG9fbyIsImNjX28iLCJpbnRlciIsImRpc2MiLCJub2Rlc2QiLCJkaXNjJDAiLCJub2Rlc28kMSIsImRzIiwiZGwiLCJvcyIsIm9sIiwibGkiLCJkaXMiLCJpbnQkMSIsImludGVybiQxIiwiYWxsX2xpbmtzIiwiZGlzY292ZXJlZCQyIiwiZGlzY292ZXJlZCIsIm5leHRfcm91bmQiLCJyZWNvZ24iLCJpbnRlcm4iLCJpbnRlcm4kMCIsInJlY29nbiQwIiwicmVjb2duJDEiLCJuYXYiLCJpbmpfcF8yZHN0IiwicF9pZCQxIiwiaW5qMmRzdCQxIiwiYWRkX2NjIiwidG9wbGV2ZWwiLCJvcmlnaW4iLCJlbGVtZW50IiwidyIsImhhc2giLCJydHkkMCIsInJpZCQwIiwicm9vdHMkMCIsInJ0eSIsInJpZCIsImVudl93Iiwib3V0X2lkIiwiZW52X3dfaCIsIm9mX2VudiIsImFjY193IiwiZGVidWdfcHJpbnQiLCJjaGVja19kYW5nbGluZyIsIndrIiwiYmVnaW5fbmV3IiwiZnJlc2hfY2NfaWQiLCJyYXdfZmluaXNoX25ldyIsImNjX2NhbmRpZGF0ZSIsInByZWVudiIsImZpbmlzaF9uZXciLCJuZXdfbGluayIsInhfbiIsInlfbiIsInN0eSIsInN0eCIsIm5ld19mcmVlIiwibmV3X2ludGVybmFsX3N0YXRlIiwidmEiLCJuZXdfbm9kZSIsInR5cGVfaWQiLCJhcml0eSIsIm5vZGUkMCIsImZvbGRfYnlfdHlwZSIsImFnZW50X3R5cGUiLCJsaXN0X3BvcyIsImZvbGQiLCJmaW5hbGl6ZSIsInNoYXJpbmciLCJlbnYkMCIsInckMCIsInckMSIsInckMiIsInckMyIsInckNCIsInckNSIsImRvbWFpbiQxIiwibGV2ZWwkNCIsImFjYyQzIiwibGV2ZWwkMSIsImRvbWFpbiQwIiwibGlzdCIsImFjYyQyIiwidGhpcyQwIiwibGV2ZWwiLCJ0aGlzJDEiLCJyZW5hbWluZyIsImFjY24iLCJub2RlczEiLCJub2RlczIiLCJpMiIsImwyIiwiaTEiLCJsMSIsImltYWdlIiwibmV3cyIsIm1pZCIsImlkJDAiLCJpZCQxIiwibGV2ZWwkMiIsImxldmVsJDMiLCJjb21wbGV0ZV9kb21haW4iLCJkb21haW4kMiIsInNpbmdsZXMiLCJzaWdzJDEiLCJlbGVtZW50YXJpZXMiLCJzdGVwIiwiYXJyIiwidHkxIiwic2ExIiwiczIkMCIsInR5MiIsInNhMiIsImRvbWFpbl9sZXZlbCIsImFjY19sZXZlbCIsImxsIiwiYWNjbCIsImluanMiLCJpbmpfZV94Iiwic3RhdF9uYXZfc3RlcHMiLCJsZXZlbDAiLCJzaW5nbGVfYWdlbnRfcG9pbnRzIiwibWVyZ2Vfb25faW5mIiwiZzEiLCJnMiIsIm1fbGlzdCIsInBhaXJpbmciLCJtJDAiLCJwdXNob3V0IiwibGVuZ3RoIiwiY28iLCJjbyQwIiwibm0iLCJjY2lkIiwicmVjb25zdHJ1Y3RfcmVuYW1pbmciLCJncmFwaCIsInJpZHMiLCJpbmplY3RpdmUiLCJyZWNvbnN0cnVjdCIsImlzX3Jvb3Rfb2YiLCJyb290JDAiLCJyb290c19vZiIsImdldCIsImVsZW1lbnRzX3dpdGhfdHlwZXMiLCJjY3MiLCJtYXAiLCJjb21wYXJlIiwiZW1wdHlfY2FjaGUiLCJmcm9tX2VkZ2UiLCJzaXRlIiwiY2FjaGUiLCJjYWNoZSQwIiwicmV2X2RlcHMiLCJvYnMiLCJyZW1haW5zIiwiaW5qX3BvaW50MmdyYXBoIiwicGlkIiwiaW5qX3BvaW50MmdyYXBoJDAiLCJwaWQkMCIsInNvbiIsImNhIiwiY2EkMCIsIm5leHQiLCJjYWNoZSQxIiwicmVtYWlucyQwIiwib2JzZXJ2YWJsZXNfZnJvbV9hZ2VudCIsInJkZXBzIiwib2JzZXJ2YWJsZXNfZnJvbV9mcmVlIiwib2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCIsIm9ic2VydmFibGVzX2Zyb21fbGluayIsInNpdGUkMCIsInByaW50X3NpdGUiLCJwbGFjZSIsInByaW50X2ludGVybmFsIiwiZ2V0X3R5cGUiLCJnZXRfaWQiLCJpc19mcmVzaCIsImNvbmNyZXRpemUiLCJpbmpfZnJlc2giLCJpbmpfbm9kZXMiLCJlbXB0eV9ldmVudCIsImpzb25fZGljdGlvbm5hcnkiLCJhY3Rpb24iLCJ3ZWlnaHRfcmV2ZXJzZSIsInNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3QiLCJzb3J0X2NvbmNyZXRlX2FjdGlvbl9saXN0X3JldmUiLCJzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0Iiwic29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdF9yZXZlIiwiY29uY3JldGl6ZV90ZXN0IiwiaW5qMmdyYXBoIiwicGwiLCJwbCQwIiwicGwkMSIsInBsJDIiLCJzJDIiLCJwbCQzIiwicyQzIiwicGwkNCIsInMkNCIsInBsJDUiLCJjb25jcmV0aXplX2FjdGlvbiIsInBsJDYiLCJ0cnlfY29uY3JldGl6ZV9hY3Rpb24iLCJhY3Rpb25zIiwiY29uY3JldGl6ZV9ldmVudCIsImJ0IiwibWFwX3Rlc3QiLCJtYXBfYWN0aW9uIiwibWF0Y2hfdGVzdHMiLCJiJDMiLCJjJDAiLCJtYXRjaF9hY3Rpb25zIiwiYmxzIiwiYWxzIiwib2siLCJnZXRfaWRzIiwibWF0Y2hfcXVhcmtzIiwiYV9xdWFya3MiLCJjX3F1YXJrcyIsImZtYXRjaCIsImFfcXVhcmtzJDAiLCJjX3F1YXJrcyQwIiwiYV9xdWFya3MkMSIsImFxIiwiYXEkMCIsImNxIiwiY19xdWFya3MkMSIsImNxcyIsIm1hdGNoaW5nX2Fic3RyYWN0X2NvbmNyZXRlIiwiYWUiLCJjZSIsImFlX3Rlc3RzIiwiY2VfdGVzdHMiLCJhYnN0cmFjdF9pZHMiLCJjb25jcmV0ZV9pZHMiLCJwYXJ0aXRpb24iLCJmbWFwIiwibWF0Y2hpbmciLCJ0ZXN0cyIsImNhY3Rpb25zJDAiLCJ0bCIsImNpZCIsImNpZCQwIiwidGVzdCIsImN0ZXN0cyIsImNpZCQxIiwiYWN0IiwiY2FjdGlvbnMiLCJzdWJzdF9tYXBfY29uY3JldGVfYWdlbnQiLCJuYSIsImFnZW50JDAiLCJzdWJzdF9tYXBfc2l0ZSIsInN1YnN0X21hcF9hZ2VudF9pbl90ZXN0IiwiaW50ZXJuYWxfc3RhdGUiLCJzaXRlJDEiLCJzaXRlJDIiLCJzaXRlJDMiLCJzaXRlJDQiLCJiaW5kaW5nX3R5cGUiLCJzaXRlJDUiLCJzaXRlJDYiLCJzaXRlMiIsInNpdGUxIiwic2l0ZTEkMCIsInNpdGUyJDAiLCJzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGUiLCJzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IiwicmVuYW1lX2Fic3RyYWN0X3Rlc3QiLCJzdWJzdF9tYXAyX2FnZW50X2luX2FjdGlvbiIsImYkMCIsInMxJDAiLCJzMiQxIiwiczEkMSIsInMxJDIiLCJzMiQyIiwiYWdlbnQkMSIsImFnZW50JDIiLCJzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2FjIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIiwicmVuYW1lX2Fic3RyYWN0X2FjdGlvbiIsInN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCIsImJzdGF0ZSIsImJzdGF0ZSQwIiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3NpIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfc2lkZV9lIiwicmVuYW1lX2Fic3RyYWN0X3NpZGVfZWZmZWN0Iiwic3Vic3RfbWFwX2FnZW50X2luX2V2ZW50Iiwic3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2Iiwic3Vic3RfbWFwMl9hZ2VudF9pbl9jb25jcmV0ZV9lIiwiZiQxIiwiZiQyIiwic3Vic3RfYWdlbnRfaW5fY29uY3JldGVfZXZlbnQiLCJyZW5hbWVfYWJzdHJhY3RfZXZlbnQiLCJwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlIiwicHJpbnRfY29uY3JldGVfdGVzdCIsInByaW50X2NvbmNyZXRlX2FjdGlvbiIsInByaW50X2NvbmNyZXRlX2JpbmRpbmdfc3RhdGUiLCJhZ19pZCIsInNpZ3MkMiIsInNpZ3MkMyIsIndyaXRlX2JpbmRpbmdfdHlwZSIsInJlYWRfYmluZGluZ190eXBlIiwiYmluZGluZ190eXBlX3RvX2pzb24iLCJ3cml0ZV9xdWFyayIsInJlYWRfcXVhcmsiLCJxdWFya190b19qc29uIiwicXVhcmtfb2ZfanNvbiIsIndyaXRlX3Rlc3QiLCJyZWFkX3Rlc3QiLCJiaSIsInRlc3RfdG9fanNvbiIsInRlc3Rfb2ZfanNvbiIsIndyaXRlX2FjdGlvbiIsImluZm8iLCJyZWFkX2FjdGlvbiIsImFjdGlvbl90b19qc29uIiwiYWN0aW9uX29mX2pzb24iLCJ3cml0ZV9ldmVudCIsImJmIiwicmVhZF9ldmVudCIsInNpZGVfZWZmZWN0c19zcmMiLCJzaWRlX2VmZmVjdHNfZHN0IiwiY29ubmVjdGl2aXR5X3Rlc3RzIiwiZXZlbnRfdG9fanNvbiIsImNjdCIsImV2ZW50X29mX2pzb24iLCJjX3QiLCJzX2VfZHN0Iiwic19lX3NyYyIsImNjbCIsInAyIiwicDEiLCJwMSQwIiwicDIkMCIsInAkNCIsInAkNSIsInAkNiIsInAkNyIsInAkOCIsIm4kNSIsIm1hcF9mb2xkX2FnZW50IiwiYWNjJDQiLCJhY2MkNSIsImEkNyIsImFjYyQ2IiwiYSQ4IiwibWFwX2FnZW50IiwiZm9sZF9hZ2VudCIsInMkNSIsInMkNiIsImEkOSIsImdldF9uZWdhdGl2ZV9wYXJ0IiwiY3JlYXRlZF9hZ2VudHMiLCJsbmtfZHN0IiwiYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9uIiwibmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjIiwicG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjIiwic2lkZV9lZmZlY3RfZHN0cyIsInJlbSIsInJldiIsImV4dHJhY3RfY2NfaWRzIiwiZXh0cmFjdF9hYnN0cmFjdF9ldmVudCIsImFsZ19leHByX3RvX3lvanNvbiIsImFsZ19leHByX29mX3lvanNvbiIsInJ1bGVfdG9feW9qc29uIiwicnVsZV9vZl95b2pzb24iLCJmdWxseV9zcGVjaWZpZWRfcGF0dGVybl90b19wb3MiLCJnIiwiZW1iIiwiZyQwIiwiZW1iJDAiLCJ0ciIsInByaW50X2V4cHJfdG9feW9qc29uIiwiZl92YXIiLCJwcmludF9leHByX29mX3lvanNvbiIsIm1hcF9leHByX3ByaW50IiwiZm9sZF9leHByX3ByaW50IiwiZGluX2tpbmRfdG9feW9qc29uIiwiZGluX2tpbmRfb2ZfeW9qc29uIiwid3JpdGVfZGluX2tpbmQiLCJzdHJpbmdfb2ZfZGluX2tpbmQiLCJsZW4iLCJyZWFkX2Rpbl9raW5kIiwiZGluX2tpbmRfb2Zfc3RyaW5nIiwicHJpbnRfdF9leHByX3RvX3lvanNvbiIsInByaW50X3RfZXhwcl9vZl95b2pzb24iLCJtb2RpZmljYXRpb25fdG9feW9qc29uIiwicmF3IiwibmFtZSIsImlkcyQwIiwibmFtZSQwIiwiZiQzIiwidGVzdHMkMCIsImlkcyQxIiwiZiQ0IiwiZiQ1IiwibW9kaWZpY2F0aW9uX29mX3lvanNvbiIsInJhdyQwIiwiYm9vbF9leHByX3RvX3lvanNvbiIsImJvb2xfZXhwcl9vZl95b2pzb24iLCJwZXJ0dXJiYXRpb25fdG9feW9qc29uIiwicGVydHVyYmF0aW9uX29mX3lvanNvbiIsImV4aXN0c19tb2RpZmljYXRpb24iLCJjaGVjayIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZSIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcCIsImV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbSIsImUkMCIsImZuIiwiZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19tJDAiLCJtYXBfZXhwcl9ydWxlIiwiZm9sZF9leHByX3J1bGUiLCJtYXBfZXhwcl9wZXJ0dXJiYXRpb24iLCJmX2FsZyIsImZfYm9vbCIsImZvbGRfZXhwcl9wZXJ0dXJiYXRpb24iLCJwcmludF9saW5rIiwicHJfcG9ydCIsInByX3R5cGUiLCJwcl9hbm5vdCIsImxpbmtfdG9fanNvbiIsInBvcnRfdG9fanNvbiIsInR5cGVfdG9fanNvbiIsImFubm90X3RvX2pzb24iLCJsaW5rX29mX2pzb24iLCJwb3J0X29mX2pzb24iLCJ0eXBlX29mX2pzb24iLCJhbm5vdGVkX29mX2pzb24iLCJwcmludF9saW5rX2Fubm90IiwibHR5cGVzIiwicnVsZV9pbnRlcm5hbF9vZl9qc29uIiwicHJpbnRfY291bnRlcl90ZXN0IiwicHJpbnRfcnVsZV9taXh0dXJlIiwiY3JlYXRlZF9jb3VudGVycyIsInNob3dfZXJhc2VkIiwic2hvd19lcmFzZWQkMCIsImNvdW50ZXJzIiwic3dpdGNoJDAiLCJpc19jb3VudGVyJDAiLCJlcSIsImRlbHRhIiwicHJpbnRfcmF0ZXMiLCJtYXhfZGlzdCIsInJhIiwibWQiLCJwcmludF9ydWxlIiwibmIiLCJsdHlwZXMkMCIsInJ1bGVfbWl4dHVyZV90b19qc29uIiwicnVsZV9taXh0dXJlX29mX2pzb24iLCJsYWxnX2V4cHJfdG9fanNvbiIsImxhbGdfZXhwcl9vZl9qc29uIiwicnVsZV90b19qc29uIiwicnVsZV9vZl9qc29uIiwicmFpc2VfaWZfbW9kaWZpY2F0aW9uIiwicmFpc2Vfc2V2ZXJhbF9pbnRlcm5hbF9zdGF0ZXMiLCJyYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCIsInN0YXR1cyIsInNpZGUiLCJhZ2VudF9uYW1lIiwicmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0IiwicmFpc2VfY291bnRlcl9taXN1c2VkIiwicmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UiLCJyYWlzZV9saW5rX3Nob3VsZF9iZV9yZW1vdmVkIiwiY29weV9ydWxlX2FnZW50IiwiYWdlbnRfdG9fZXJhc2VkIiwicmFfcG9ydHMiLCJyYV9pbnRzIiwidG9fZXJhc2VkIiwidG9fbWFpbnRhaW5lZCIsInRvX3Jhd19taXh0dXJlIiwiaW50ZXJuYWxzIiwicG9ydF9uYW1lIiwibWF4X2xpbmtfaWQiLCJtYXhfcyIsIm1heF9saW5rX2lkX3NpdGVzIiwibWF4X2lkIiwibGlua19vY2N1cmVuY2VfZmFpbHVyZSIsImtleSIsInBvcnRzX2Zyb21fY29udGFjdF9tYXAiLCJ0eV9pZCIsImFkZF9vbmVfaW1wbGljaXRfaW5mbyIsImxpbmsiLCJwcmV2cyIsInBfc3dpdGNoIiwiZHN0X2luZm8iLCJhZ190YWlsIiwib3V0X3RhaWwiLCJwb3J0IiwicG9ydHMkMCIsInN3IiwidG9kbyQwIiwicG9ydHMkMSIsImlzX2xpbmtlZF9vbl9wb3J0IiwibWUiLCJpc19saW5rZWRfb24iLCJkZWZpbmVfZnVsbF90cmFuc2Zvcm1hdGlvbiIsInRyYW5zZiIsImxpbmtzX3RyYW5zZiIsImNhbmQiLCJhZGRlZCIsInJlbW92ZWQiLCJsaW5rc190cmFuc2YkMCIsImxpbmtzX3RyYW5zZiQxIiwiZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIiwiYWRkX2luc3RhbnRpYXRpb25fZnJlZSIsImFkZF9zaWRlX3NpdGUiLCJzaWRlX3NpdGVzIiwiYWRkX2ZyZWVkX3NpZGVfZWZmZWN0Iiwic2lkZV9lZmZlY3RzIiwiYWRkX2FnZW50c19pbl9jYyIsInJlZ2lzdGVyZWRfbGlua3MiLCJpbnN0YW50aWF0aW9ucyIsImFnX2wiLCJ3ayQwIiwidHJhbnNmJDAiLCJoYW5kbGVfcG9ydHMiLCJyX2wiLCJjX2wiLCJsX3QiLCJzaXRlX2lkJDQiLCJyX2wkMCIsImxpbmtzJDIiLCJsX3QkMCIsInNpdGVfaWQkNSIsImlzX2VyYXNlZCIsInJlZl9wb3J0cyIsIm9fY2NfdGVzdHMiLCJ0aGlzX2NjX3Rlc3RzIiwic2lkZV9lZmZlY3RzX2RzdCQxIiwic2lkZV9lZmZlY3RzX3NyYyQxIiwiYWN0aW9ucyQzIiwidGVzdHMkMiIsInNpdGVfaWQkMiIsImluc3RhbnRpYXRpb25zJDAiLCJhY3Rpb25zJDAiLCJsaW5rcyQwIiwic2lkZV9lZmZlY3RzX2RzdCQwIiwic2lkZV9lZmZlY3RzX3NyYyQwIiwiYWN0aW9ucyQyIiwidGVzdHMkMSIsInNpZGVfZWZmZWN0cyQxIiwiYWN0aW9ucyQxIiwic2l0ZV9pZCQzIiwic2lkZV9lZmZlY3RzJDIiLCJzaXRlX2lkJDEiLCJzaXRlX2lkIiwic2l0ZV9pZCQwIiwic2lkZV9lZmZlY3RzJDAiLCJ3ayQxIiwiaiQxIiwiaiQyIiwiaSQzIiwiaSQ0Iiwid2skNiIsInRyYW5zZiQ3Iiwid2skMiIsImxfdCQyIiwidHJhbnNmJDEiLCJzaXRlX2lkJDciLCJsX3QkMSIsInNpdGVfaWQkNiIsImkkMiIsImRzdF9wbGFjZSIsIndrJDMiLCJjX2wkMCIsImxfdCQzIiwidHJhbnNmJDIiLCJzaXRlX2lkJDgiLCJyX2wkMSIsInJfbCQyIiwibF90JDciLCJ0cmFuc2YkNiIsInJlJDIiLCJzaXRlX2lkJDEyIiwic2l0ZV9pZCQxMSIsInNpdGVfaWQkOSIsImxfdCQ1IiwidHJhbnNmJDQiLCJ3ayQ0IiwibF90JDYiLCJ0cmFuc2YkNSIsImNfbCQxIiwic2l0ZV9pZCQxMCIsImluY3Jfb3JpZ2luIiwiY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtIiwiY29tcGlsZV9tb2RlX29uIiwicHJlY29tcF9taXhzIiwibmV3X3N3aXRjaCIsImF1eF9vbmUkMCIsInByZXZpb3VzIiwiY3VycmVudCIsImN1cnJlbnQkMCIsImF1eF9hZ3MkMCIsImkkNSIsIm9yX3R5IiwicHJldiIsImF1eF9vbmUiLCJpJDYiLCJvcl90eSQwIiwiaSQ3IiwidG9kb3MkMSIsImF1eF9hZ3MiLCJhbGxfbWl4cyIsInRyYW5zZm9ybWF0aW9ucyQwIiwiZXZlbnQiLCJhZGRlZCQ1Iiwid2tfb3V0IiwiZW52JDEiLCJhZGRlZCQ2IiwicmVtb3ZlZCQwIiwiaW5zdGFudGlhdGlvbnMkMSIsImxpbmtzX3RyYW5zZiQyIiwiYWRkZWQkNyIsInJlbW92ZWQkMSIsImFjcyIsImF5IiwiYXgiLCJhY3Rpb25zJDQiLCJyZW1vdmVkJDIiLCJ0cmFuc2Zvcm1hdGlvbnMkMiIsImNyZWF0ZV9hY3Rpb25zIiwiYWRkZWQkNCIsImFkZGVkJDAiLCJhZGRlZCQxIiwicG9pbnQkMCIsImFkZGVkJDIiLCJhZGRlZCQzIiwiaW50ZiQwIiwiY3JlYXRlX2FjdGlvbnMkMCIsInRyYW5zZm9ybWF0aW9ucyQzIiwiYWN0aW9ucyQ1IiwiY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtJDAiLCJjY19lbnYiLCJydWxlcyIsImxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUiLCJuYl9jYyIsIm1peHMiLCJsbmtfcGFjayIsImtub3duX3NyYyIsImRzdF9zIiwic3JjX2luZm8iLCJsbmtfcGFjayQwIiwidHJhbnNmcyIsImZyIiwiZmlkIiwiYV90eXBlIiwiZWRpdCIsImNjX2lkMSIsImNjX2lkMiIsImVkaXQkMCIsInRlc3QkMCIsImVkaXQkMSIsInRlc3QkMSIsImVpZCIsImVkaXQkMiIsInRlc3QkMiIsImlkJDMiLCJjY19pZCQxIiwiaWQkMiIsInRyYW5zZnMkMCIsInJfbWl4Iiwicl9jcmVhdGVkIiwicGF0dGVybnNfb2ZfbWl4dHVyZSIsInByZV9lbnYiLCJzbmFwIiwiY2NfY2FjaGUiLCJyYV90eXBlIiwiYXIiLCJkYW5nbGluZyIsImRhbmdsaW5nJDAiLCJkYW5nbGluZyQxIiwiY2NfY2FjaGUkMCIsInByZV9lbnYkMCIsImluaXQiLCJ0b2tlbnMiLCJhbGdzIiwib2JzZXJ2YWJsZXMiLCJpbnRlcnZlbnRpb25zIiwiYXN0X3J1bGVzIiwiYWxnX3JkIiwidG9rX3JkIiwiZGVwc19pbl9lIiwiZGVwc19pbl90IiwiZGVjb25zdHJ1Y3QiLCJnZXRfb2JzIiwiZ2V0X3J1bGVzIiwibmV3X2RvbWFpbiIsInRva2Vuc19maW5kZXIiLCJhbGdzX2ZpbmRlciIsIm51bV9vZl9hZ2VudCIsIm5tZSIsImZvbGRfcnVsZXMiLCJydWxlIiwiZm9sZF9wZXJ0dXJiYXRpb25zIiwiZ2V0X3J1bGUiLCJnZXRfYXN0X3J1bGVfd2l0aF9sYWJlbCIsImdldF9hc3RfcnVsZSIsImZvbGRfYXN0X3J1bGVzIiwibGthcHBhX3J1bGUiLCJnZXRfYXN0X3J1bGVfcmF0ZV9wb3MiLCJ1bmFyeSIsIm5iX3J1bGVzIiwibnVtc19vZl9ydWxlIiwibmJfc3ludGFjdGljX3J1bGVzIiwibnVtX29mX2FsZyIsImdldF9hbGciLCJnZXRfYWxncyIsIm5iX2FsZ3MiLCJudW1fb2ZfdG9rZW4iLCJzdHIiLCJuYl90b2tlbnMiLCJnZXRfcGVydHVyYmF0aW9uIiwibmJfcGVydHVyYmF0aW9ucyIsImdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMiLCJnZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMiLCJhbGxfZGVwZW5kZW5jaWVzIiwicHJpbnRfYWdlbnQiLCJwcmludF9hbGciLCJzcGVjaWFsIiwicHJpbnRfdG9rZW4iLCJwcmludF9hc3RfcnVsZSIsIm1hcF9vYnNlcnZhYmxlcyIsInByX2FsZyIsInByX3J1bGUiLCJwcl9wZXJ0IiwicHJfcnVsZSQwIiwiY2hlY2tfaWZfY291bnRlcl9pc19maWxsZWRfZW5vIiwib3ZlcndyaXRlX3ZhcnMiLCJhbGdfb3ZlcndyaXRlIiwiZm9sZF9taXh0dXJlX2luX2V4cHIiLCJ4MSIsIngyIiwieDMiLCJrYXBwYV9pbnN0YW5jZV90b195b2pzb24iLCJmaWxlcyIsImthcHBhX2luc3RhbmNlX29mX3lvanNvbiIsInVuYXJ5X3BhdHRlcm5zIiwiY2NfbWl4IiwiYWxnX2V4cHIiLCJib29sX2V4cHIiLCJwcmludF9leHByIiwiYWxnIiwicHJpbnRfZXhwcl92YWwiLCJhbGdfdmFsIiwiZGVjb21waWxlZF9ydWxlIiwiZGlzdCIsInJhdGUiLCJlbGVtZW50YXJ5X3J1bGUiLCJwcl90cmFucyIsImJveGVkX2NjIiwibW9kaWZpY2F0aW9uIiwiZm4kMCIsImZuJDEiLCJmbiQyIiwidmEkMCIsImNjJDEiLCJmbiQzIiwiZm4kNCIsInBlcnR1cmJhdGlvbiIsInBlcnQiLCJhdXhfYWxhcm0iLCJlbnZfa2FwcGEiLCJkZWNvbXBpbGVkX2VudiIsInBhcnNlIiwicmVzdWx0IiwiZ2V0X3ZhbHVlIiwicG9zX3AiLCJwYXJhbSIsInZhbHVlX2xpc3QiLCJwYXJhbSQwIiwiY2Zsb3dGaWxlIiwiZm9ybWF0Q2Zsb3ciLCJzdG9yeV9jb21wcmVzc2lvbiIsImNvbmYiLCJzcCIsInVwIiwiZm9ybWF0Q2Zsb3ckMCIsInZhbHVlIiwicG9zX3YiLCJlcnJvciIsInRsJDAiLCJ0bCQxIiwiZGl2aWRlX2V4cHJfYnlfaW50Iiwib3B0JDAiLCJyb290X29ubHkiLCJsb2MiLCJiJDIwIiwiYSQxMyIsInJvb3Rfb25seSQwIiwiYiQ3IiwiYiQ2IiwibG9jX2NzdCQwIiwibG9jX2NzdCQxIiwiYyQxIiwiYyQyIiwiYiQ0IiwibG9jX2NzdCQyIiwiYiQ1IiwibG9jX2NzdCIsImV4cHIkMyIsIm9wdCQzIiwiZXhwciQyIiwib3B0JDIiLCJleHByJDEiLCJvcHQkMSIsImIkOSIsImIkOCIsImxvY2RpdiIsImMkNSIsImIkMTMiLCJleHByJDYiLCJvcHQkNiIsImIkMTQiLCJiJDEwIiwiYyQ0IiwibG9jX2JpbiQwIiwiYiQxMSIsImV4cHIkNSIsIm9wdCQ1IiwiYyQzIiwibG9jX2JpbiIsImV4cHIkNCIsIm9wdCQ0IiwiYSQxMCIsImIkMTIiLCJiJDE2IiwiYSQxMSIsImIkMTUiLCJiJDE4IiwiYSQxMiIsImIkMTciLCJiJDE5IiwibG9jJDAiLCJhJDE0IiwiYSQxNSIsImEkMTgiLCJhJDE2IiwiYSQxNyIsImxvYyQxIiwibm8kMCIsInllcyQwIiwic2ltcGxpZnlfYm9vbCIsImxvYyQyIiwiZXhwciQ3IiwiZXhwciQ4IiwibG9jJDMiLCJleHByJDkiLCJleHByJDEwIiwiZXhwcl9ib29sIiwic2ltcGxpZnkiLCJjbGVhbiIsImNsZWFuX2Jvb2wiLCJkdCIsImR0JDAiLCJjc3QiLCJjb3JyZWN0ZWRfcmF0ZSIsImNvcnJlY3RlZF9yYXRlMSIsImNvcnJlY3RlZF9yYXRlMiIsImUkMSIsImNzdCQwIiwiY29ycmVjdGVkX3JhdGUkMCIsImNzdCQxIiwiZ2V0X2NvcnJlY3RlZF9yYXRlJDAiLCJjb3JyZWN0ZWRfcmF0ZV9jb25zdCIsIm5lY2Vzc2FyaWx5X2VxdWFsIiwiYV9vcHQiLCJiX29wdCIsImRlcCIsImFkZF9taXh0dXJlIiwiYWRkX3Rva2VuIiwiZGVwX2VudiIsInRpbWVfdmFyIiwiYWNjdSIsImFjY3UkMCIsImFjY3UkMSIsImRpZmZfZ2VuIiwiZl90b2tlbiIsImZfc3ltYiIsImZfdGltZSIsImUyJDAiLCJkaWZmX3Rva2VuIiwiZGlmZl9taXh0dXJlIiwiZm9sZF9vdmVyX21peF9pbl9hbGdfZXhwciIsImFycmF5X2lkIiwiZm9sZF9vdmVyX21peHR1cmVzX2luX2FsZ19leHByIiwibW9kZWwiLCJhbGdzX2V4cHIiLCJ1bmFyeV9yYXRlIiwiZGVsdGFfdG9rZW5zIiwiYWNjdSQyIiwianNvbl9kaWN0aW9ubmFyeSIsImpzb25fZGljdGlvbm5hcnkkMCIsInVwZGF0ZV9wcm9maWxpbmdfaW5mbyIsImEiLCJpbmZvIiwiZXZlbnQiLCJzdG9yeV9pZCIsImNvbXBhcmVfYnlfc3RvcnlfaWQiLCJ4IiwieSIsInRvX2pzb24iLCJmIiwib2ZfanNvbiIsInN0b3J5X2V2ZW50Iiwic3RvcnlfdGltZSIsIndyaXRlX2pzb24iLCJvYiIsIm8iLCJyZWFkX2pzb24iLCJzdCIsImIiLCJwcm9maWxpbmdfaW5mbyIsInByaW50X2V2ZW50X2tpbmQiLCJlbnYiLCJpIiwibCIsInMkMSIsImVudiQwIiwicl9pZCIsInMiLCJzJDAiLCJwcmludF9ldmVudF9raW5kX2RvdF9hbm5vdCIsInN1YnNfc3RlcCIsImR1bW15X3N0ZXAiLCJwcmludF9ldmVudCIsImNvbXBhY3QiLCJsb2ciLCJlIiwiZXZfa2luZCIsInNpZ3MiLCJzdGF0ZSIsInNpdGUiLCJhZyIsImFnX2lkIiwicHJpbnRfc3RlcCIsIm9wdCIsImVudiQxIiwic3RoIiwieSQwIiwieCQwIiwiYWN0aW9ucyIsInRlc3RzIiwic2lncyQwIiwiZ2V0X3R5cGVzX2Zyb21faW5pdCIsImFjYyIsImFjdGlvbiIsImF0eXBlIiwicHJpbnRfbGFiZWxfb2Zfc3RlcCIsIngkMyIsIngkNCIsImEkMCIsImwkMCIsIngkNSIsIngkMSIsIngkMiIsIndyaXRlX3N0ZXAiLCJ6IiwieiQwIiwieiQxIiwieSQxIiwicmVhZF9zdGVwIiwiYiQwIiwic3RlcF90b195b2pzb24iLCJyZXZfYWN0aW9ucyIsIndyaXRlX2pzb24kMCIsInJlYWRfanNvbiQwIiwic3RyaW5nX29mX3N0ZXAiLCJsZW4iLCJzdGVwX29mX3N0cmluZyIsInN0ZXBfaXNfb2JzIiwic3RlcF9pc19pbml0Iiwic3RlcF9pc19zdWJzIiwic3RlcF9pc19ydWxlIiwic3RlcF9pc19wZXJ0Iiwic2ltdWxhdGlvbl9pbmZvX29mX3N0ZXAiLCJjcmVhdGlvbl9vZl9hY3Rpb25zIiwib3AiLCJjcmVhdGlvbl9vZl9zdGVwIiwiYWMiLCJoYXNfY3JlYXRpb25fb2Zfc3RlcCIsInRlc3RzX29mX3N0ZXAiLCJhY3Rpb25zX29mX3N0ZXAiLCJzaWRlX2VmZmVjdHNfb2Zfc3RlcCIsImluaXRfdHJhY2VfZmlsZSIsInV1aWQiLCJkZXNjIiwiYXNzZXJ0X2ZpZWxkIiwiaWRlbnQiLCJyZWFkX3RyYWNlX2hlYWRlcnMiLCJsZXhfc3QiLCJsZXhfYnVmIiwidXVpZCQwIiwidXVpZCQxIiwiaWRlbnQkMCIsImZvbGRfdHJhY2UiLCJpbml0Iiwib3V0IiwiZm9sZF90cmFjZV9maWxlIiwiZm5hbWUiLCJnZXRfaGVhZGVyc19mcm9tX2ZpbGUiLCJzaXplIiwibmIiLCJ0Iiwid3JpdGVfdCIsInN0cmluZ19vZl90IiwicmVhZF90IiwicCIsImxiIiwidF9vZl9zdHJpbmciLCJjdXJyZW50X3N0b3J5IiwiYyIsImN1cnJlbnRfdGltZSIsImN1cnJlbnRfZXZlbnQiLCJuYl9udWxsX2V2ZW50IiwiY29uc2VjdXRpdmVfbnVsbF9ldmVudCIsInJ1bGVfaWQiLCJjb25zZWN1dGl2ZV9ibG9ja2VkIiwiaW5jX3N0b3JpZXMiLCJjaGVja190aW1lIiwibWF4IiwiY2hlY2tfZXZlbnRzIiwib25lX3RpbWVfYWR2YW5jZSIsImR0Iiwib25lX2NvbnN0cnVjdGl2ZV9ldmVudCIsInQkMCIsIm9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCIsIm9uZV9ub19tb3JlX3VuYXJ5X2V2ZW50Iiwib25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50Iiwib25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCIsInRpIiwidGkkMCIsIm9uZV9ibG9ja2VkX2V2ZW50IiwiZ2V0X2VmZmljaWVuY3kiLCJwcmludF9lZmZpY2llbmN5IiwiYWxsIiwiaW5pdF90aW1lIiwibWF4X3RpbWUiLCJtYXhfZXZlbnRzIiwicGxvdF9wZXJpb2QiLCJ0aW1lX3JhdGlvIiwidG1heCIsImV2ZW50X3JhdGlvIiwiZW1heCIsInNldF9tYXhfdGltZSIsInNldF9tYXhfZXZlbnRzIiwidHJhY2tlZF9ldmVudHMiLCJjb3VudGVyIiwic2V0X3Bsb3RfcGVyaW9kIiwiY3JlYXRlIiwibWF4X2V2ZW50IiwibmJfcnVsZXMiLCJpbml0X3QiLCJzdGgkMCIsImluaXRfZSIsInJlaW5pdGlhbGl6ZSIsIm5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8iLCJjdXJyZW50X3NpbXVsYXRpb25faW5mbyIsIm5leHRfc3RvcnkiLCJwb3NpdGl2ZV9wbG90X3BlcmlvZCIsImZpbGwiLCJvdXRwdXRzIiwiZEUiLCJuZXh0IiwiZFQiLCJsYXN0IiwibiIsImRUJDAiLCJ0aW1lIiwiY291bnRlciQwIiwicG9pbnRzIiwiZmFrZV90aW1lIiwiYXJyb3doZWFkIiwiY29sb3IiLCJwcmludF9pbml0aWFsX2lucHV0cyIsImNvbmYiLCJpbnB1dHNfZm9ybSIsIm5vQ291bnRlcnMiLCJyIiwiaW5zX2ZyZXNoIiwidGsiLCJwcmludF9zbmFwc2hvdCIsImVsIiwibmEiLCJtaXgiLCJwcmludF9kb3Rfc25hcHNob3QiLCJ3cml0ZV9zbmFwc2hvdCIsInJlYWRfc25hcHNob3QiLCJrZXkiLCJzbmFwc2hvdF90b2tlbnMiLCJzbmFwc2hvdF9hZ2VudHMiLCJzbmFwc2hvdF90aW1lIiwic25hcHNob3RfZXZlbnQiLCJzdHJpbmdfb2Zfc25hcHNob3QiLCJzbmFwc2hvdF9vZl9zdHJpbmciLCJ3cml0ZV9kaW4iLCJyZWFkX2RpbiIsImgiLCJrIiwiZGluX2VuZCIsImRpbl9ydWxlcyIsImRpbl9mbHV4cyIsImRpbl9oaXRzIiwiZGluX3N0YXJ0IiwiZGluX2tpbmQiLCJzdHJpbmdfb2ZfZGluIiwiZGluX29mX3N0cmluZyIsInByaW50X2RvdF9kaW4iLCJmbHV4IiwiZCIsInYiLCJhcnJvd2hlYWQkMCIsImNvbG9yJDAiLCJwcmludF9odG1sX2RpbiIsImFkZF9wbG90X2xpbmUiLCJuZXdfb2JzZXJ2YWJsZXMiLCJwbG90IiwibmJyIiwibmV3X3ZhbHVlcyIsImluaXRfcGxvdCIsInBsb3RfbGVnZW5kIiwid3JpdGVfcGxvdCIsInJlYWRfcGxvdCIsInBsb3Rfc2VyaWVzIiwic3RyaW5nX29mX3Bsb3QiLCJwbG90X29mX3N0cmluZyIsInByaW50X3Bsb3Rfc2VwIiwiaXNfdHN2IiwicHJpbnRfcGxvdF9sZWdlbmQiLCJwcmludF9wbG90X2xpbmUiLCJwcCIsImV4cG9ydF9wbG90IiwicHJpbnRfd2FybmluZyIsInBvcyIsIm1zZyIsInByIiwicG9zJDAiLCJjcmVhdGVfZmx1eCIsImluY3JfZmx1eF9mbHV4Iiwib2ZfcnVsZSIsIm9uX3J1bGUiLCJpbmNyX2ZsdXhfaGl0Iiwic3RvcF9mbHV4IiwiZGluX2RhdGEiLCJqIiwiZW1wdHkiLCJpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIiwicGF0dGVybiIsIm1hdGNoaW5ncyIsImFkZF9pbnRzZXRfaW5faW50bWFwIiwiaWQiLCJzZXQiLCJtYXAiLCJicmVha19hcGFydF9jYyIsImVkZ2VzIiwibW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSIsIm5ld19jYyIsIm9yaWdpbl9jYyIsIm1vZF9jb25uIiwiY2NfaWQiLCJjY19tYXAiLCJvc2V0Iiwib3NldCQwIiwibnNldCIsIm1lcmdlX2NjIiwiY2MyIiwiY2MxIiwibW9kX2Nvbm5lY3Rpdml0eSIsImNjX21hcCQwIiwic2V0MiIsInNldDEiLCJ1cGRhdGVfcm9vdHMiLCJpc19hZGQiLCJ1bmFyeV9jY3MiLCJyb290IiwidmEiLCJzZXQkMCIsIm51bWJlciIsInBhdCIsImRlYnVnX3ByaW50IiwiZG9tYWluIiwicm9vdHNfb2ZfcGF0dGVybnMiLCJyb290cyIsInJvb3RzX29mX3BhdHRlcm5zJDAiLCJyb290X21hcHMiLCJvZl9wYXR0ZXJuIiwicGF0X2lkIiwib2ZfdW5hcnlfcGF0dGVybiIsInJlY2VpdmVfbWVzc2FnZSIsImNjcyIsImlzX3ZhbGlkIiwibnVtYmVyX29mX2luc3RhbmNlcyIsInBhdHMiLCJudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2MiLCJwYXQyIiwicGF0MSIsIm1hcDEiLCJtYXAyIiwiY2MiLCJwaWNrX3VuYXJ5X2luc3RhbmNlX2luX2NjIiwicmFuZG9tX3N0YXRlIiwicm9vdDEiLCJyb290MiIsImZvbGRfcGlja2VkX2luc3RhbmNlIiwiYWNjJDIiLCJhY2MkMCIsInJvb3Rfb3B0IiwiYWNjJDEiLCJpJDAiLCJub19ub19ubyIsImZvbGRfaW5zdGFuY2VzIiwiZXhjcCIsInNlbnRfdG9fZml4ZWRfcm9vdCIsImV4Y3Bfcm9vdCIsInNlbnRfdG9fZXhjcF9yb290IiwidGFiIiwiYXV4IiwiaXRoX3Jvb3RzIiwiaSQxIiwiZm9sZF91bmFyeV9pbnN0YW5jZXMiLCJleGVjX2FsZyQwIiwidGltZSQwIiwiZ2V0X2FsZyIsImdldF9taXgiLCJnZXRfdG9rIiwiYWxnIiwic2siLCJhbGckMCIsInNrJDAiLCJhbGckMSIsInNrJDEiLCJhbGckMiIsIm9wJDAiLCJzayQyIiwid2l0aF92YWx1ZSIsImFsZyQzIiwibiQwIiwibm8iLCJ5ZXMiLCJjb25kIiwiZXhlY19ib29sJDAiLCJleGVjX2FsZyIsImV4cHIiLCJleHByJDAiLCJleHByJDEiLCJleHByJDIiLCJvcCQxIiwiZXhlY19ib29sIiwieWVzJDAiLCJzayQ0Iiwic2skMyIsInNrJDUiLCJuMSIsInNrJDYiLCJuMSQwIiwib3AkMiIsInNrJDciLCJvcCQzIiwic2skOCIsInZhbHVlX2Jvb2wiLCJ2YWx1ZV9hbGciLCJnZXRfZWRnZXMiLCJzdW1faW5zdGFuY2VzX251bWJlcnMiLCJpbnN0cyIsInBhdHRlcm5zIiwicmVjb21wdXRlIiwib3ZlcndyIiwiYWN0aXZpdHkiLCJzZXRfYWN0aXZpdHkiLCJydWxlIiwid2l0aF90cmFjZSIsImFjdGl2aXR5X3RyZWUiLCJ1bmFyeV9wYXR0ZXJucyIsImRlcHNfaW5fZSIsImRlcHNfaW5fdCIsImFsd2F5c19vdXRkYXRlZCIsIndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMiLCJ2YXJpYWJsZXNfb3ZlcndyaXRlIiwidmFyaWFibGVzX2NhY2hlIiwicmF0ZSIsImlzX2Jsb2NrZWQiLCJkZWJ1Z19tb2RlIiwibWF0Y2hpbmciLCJ0b19ibG9jayIsImFic3RyYWN0X2FjdGlvbnMiLCJpbmoiLCJhYnN0cmFjdF90ZXN0cyIsImluaiQwIiwic2V0X2V2ZW50c190b19ibG9jayIsInByZWRpY2F0ZSIsImFsbF9pbmplY3Rpb25zIiwidW5hcnlfcmF0ZSIsInN0YXRlX2luc3RzIiwicGF0dGVybmEiLCJpbnN0YW5jZSIsIm1hdGNoaW5nJDAiLCJyZXZfcm9vdHMiLCJtYXhfZGlzdGFuY2UiLCJub2RlcyIsInIyIiwicjEiLCJwaWNrX2FfcnVsZV9pbnN0YW5jZSIsImZyb21fcGF0dGVybnMiLCJwcmludCIsInN0YXRzIiwicHJpbnRfc3RhdHMiLCJhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiIsImluc3RhbmNlcyIsInNpZGVfZWZmZWN0cyIsImVkZ2VzJDAiLCJpZCQwIiwiZWRnZXMkMSIsImlkJDEiLCJpZCQyIiwiY2NfbW9kaWYiLCJlZGdlcyQyIiwicyQyIiwiaWQkMyIsInNpZGVfZWZmZWN0cyQwIiwicyQzIiwibmMiLCJpZCQ0IiwiY2NfbW9kaWYkMCIsImVkZ2VzJDMiLCJzJDQiLCJpZCQ1IiwiZWRnZXMkNCIsImFwcGx5X3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIiwiaW5qMmdyYXBoIiwidHkiLCJmcmVlX2lkIiwiaW5qX2ZyZXNoIiwiaW5qX25vZGVzIiwiaW5qMmdyYXBoJDAiLCJuYyQwIiwibiQxIiwibiQyIiwibmMkMSIsIm5jJDIiLCJtb2RpZl9jYyIsInNpZGVfZWZmZWN0cyQxIiwibiQzIiwibmMkMyIsImFwcGx5X2NvbmNyZXRlX3Bvc2l0aXZlX3RyYW5zZiIsIm9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIiwibmMkNCIsIm5jJDUiLCJzJDUiLCJuYyQ2Iiwib2JzX2Zyb21fdHJhbnNmb3JtYXRpb25zIiwidHJhbnMiLCJnZXRfc3BlY2llc19vYnMiLCJvYnMiLCJ0cmFja2VkIiwiZm4iLCJvayIsInBpZCIsInNwZWMiLCJ1cGRhdGVfZWRnZXNfZnJvbV9hY3Rpb25zIiwic2lkZV9lZmZlY3RfZHN0IiwibG5rX2RzdCIsImNvbmNyZXRlX3JlbW92ZWQiLCJkZWxfZGVwcyIsImRlbF9vYnMiLCJlZGdlc19hZnRlcl9uZWciLCJjb25jcmV0ZV9pbnNlcnRlZCIsIm5ld19kZXBzIiwibmV3X29icyIsInNwZWNpZXMiLCJtaXh0dXJlIiwiZmlsZSIsInJldl9kZXBzIiwibWF4X2Rpc3RfdG9faW50Iiwic3RvcmVfYWN0aXZpdHkiLCJzdG9yZSIsInN5bnRheF9pZCIsImNjX3ZhIiwicmF0ZSQwIiwiYWN0IiwidW5hcnkiLCJvbGRfYWN0IiwidXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMiLCJrbm93bl9wZXJ0cyIsImRlcCIsInBlcnRzIiwibWF0Y2hpbmdzX29mX3J1bGUiLCJydWxlJDAiLCJwYXR0ZXJuX3ZhIiwidW5hcnlfY2FuZGlkYXRlcyIsIm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyIsIm1vZGlmaWVkX2NjcyIsInBhY2skMCIsInVucmF0ZSIsIm9sZF9wYWNrIiwiaV9pbnN0IiwibmV3X3YiLCJuZXdfcGFjayIsIm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyQwIiwidW5hcnlfY2FuZGlkYXRlcyQwIiwicGFjayIsIm92ZXJ3cml0ZV92YXIiLCJ0cmFuc2Zvcm1fYnlfYV9ydWxlIiwic3RhdGUkMSIsImV2ZW50X2tpbmQiLCJwYXRoJDAiLCJpbmplY3RlZCQwIiwiaW5qZWN0ZWQiLCJyZGVwcyIsImRlcHMiLCJzdGF0ZSQwIiwiaCQwIiwicmVtYWluaW5nX3NpZGVfZWZmZWN0cyIsImZpbmFsX2luajJncmFwaCIsImNvbmNyZXRlX2luc2VydGVkJDAiLCJldiIsInRlc3RzJDAiLCJuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzIiwiY2V2ZW50IiwicGF0aCIsImtub3duX2FnZW50cyIsInByZXRlc3RzIiwidGUiLCJ0ZSQwIiwiYWckMCIsInRlJDEiLCJhZyQxIiwicGF0aF90ZXN0cyIsImZ1bGxfY29uY3JldGVfZXZlbnQiLCJhcHBseV9naXZlbl9pbnN0YW5jZSIsImRpc3QiLCJkaXN0JDAiLCJyb290MCIsImFwcGx5X2dpdmVuX3J1bGUiLCJpbnN0IiwiZm9yY2VfcnVsZSIsIm91dCQxIiwiZGlzdF9vcHQiLCJsb2MiLCJvdXQkMCIsInNuYXBzaG90IiwicmF3IiwicGlja19hbl9pbnN0YW5jZSIsInJ0IiwiY2hvaWNlIiwicGF0dGVybjEiLCJwYXR0ZXJuMiIsImluajEiLCJpbmpfb3V0IiwiaXNfY29ycmVjdF9pbnN0YW5jZSIsImdyYXBoIiwiaXNfdW5hcnkiLCJpbnZfcm9vdHMiLCJhcHBseV9pbnN0YW5jZSIsIm1heENvbnNlY3V0aXZlQmxvY2tlZCIsIm1heENvbnNlY3V0aXZlQ2xhc2giLCJncmFwaCQwIiwiY2F1c2UiLCJhcHBseV9naXZlbiIsImdyYXBoJDEiLCJmaW5hbF9zdGVwIiwiY29udGludWUkMCIsImRvbWFpbiQwIiwibGlzdCIsImNhbmRzIiwibWF0Y2hlcyIsIm1hdGNoZXMkMCIsImF1eF9hZGRfdHJhY2tlZCIsIm5hbWUiLCJ0cGF0dGVybiIsImFkZF90cmFja2VkIiwicmVtb3ZlX3RyYWNrZWQiLCJuYW1lJDAiLCJ0ZXN0ZXIiLCJwbGlzdCIsInRlc3RlciQwIiwiYWRkX3RyYWNrZWRfc3BlY2llcyIsInJlbW92ZV90cmFja2VkX3NwZWNpZXMiLCJnZXRfcmFuZG9tX3N0YXRlIiwic2VuZF9pbnN0YW5jZXNfbWVzc2FnZSIsImFkZF9vdXRkYXRlZF9kZXBlbmRlbmNpZXMiLCJvdXRkYXRlZF9lbGVtZW50cyIsImRlYnVnX3ByaW50X2luc3RhbmNlcyIsImNvbXBhcmVfc3RvcHMiLCJwMiIsInQyIiwicDEiLCJ0MSIsIndpdGhfZGVsdGFfYWN0aXZpdGllcyIsInQwIiwiYWxnc19kZXBzIiwic3RvcHBpbmdfdGltZXMiLCJzdG9wcyIsInRpbWVfZGVwZW5kZW50X3BlcnRzIiwib2JzZXJ2YWJsZXNfdmFsdWVzIiwiZG9fbW9kaWZpY2F0aW9uIiwiZXh0cmEiLCJtb2RpZmljYXRpb24iLCJwcmludF9leHByX3ZhbCIsInRleHQiLCJnIiwiZXh0cmEkMCIsImdyYXBoJDIiLCJleHRyYSQxIiwiZ3JhcGgkMyIsInBleHByIiwicGV4cHIkMCIsImZpbGUkMCIsInJlbCIsImZpbGUkMSIsImZpbGUkMiIsIm90aGVycyIsInRoZXNlIiwiY2MkMCIsIm5hbWUkMSIsInBlX2V4cHIiLCJwZV9maWxlIiwiZmlsZV9vcHQiLCJsaW5lIiwiY2MkMSIsImZpbGUkMyIsImZpbGUkNCIsInBlcnR1cmJhdGUiLCJpc19hbGFybSQwIiwibWl4X2NoYW5nZWQkMCIsInRhaWwiLCJwZXJ0IiwibW9kX2FsYXJtIiwibWl4X2NoYW5nZWQkMSIsImVmZmVjdCIsInN0b3AiLCJ0YWlsJDAiLCJhbGl2ZSIsIm1peF9jaGFuZ2VkJDIiLCJkb19tb2RpZmljYXRpb25zIiwiaW5pdGlhbGl6ZSIsImJpbmQiLCJyZXR1cm4kMCIsImdyYXBoMCIsInN0YXRlMCIsImluaXRfbCIsIm1zdGF0ZSIsImNvbXBpbGVkX3J1bGUiLCJ2YWx1ZSIsImNyZWF0aW9uc19zb3J0IiwibWdyYXBoIiwibWlkX2dyYXBoIiwibWl4X2NoYW5nZWQiLCJwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIiwicGUiLCJvdXRwdXRzJDAiLCJjYW5kIiwicmVndWxhcl9sb29wX2JvZHkiLCJwaWNrZWRfaW5zdGFuY2UiLCJzdG9wJDAiLCJwcmV2X2FjdGl2aXR5IiwiYWN0X3N0YWNrIiwiYXBwbGllZF9yaWRfc3ludGF4IiwibXlfc3ludGF4X3JkX2lkIiwicmVnaXN0ZXJfbmV3X2FjdGl2aXR5Iiwic3ludGF4X3JkX2lkIiwibmV3X2FjdCIsImZsIiwiY3QiLCJmb3JjZV90ZXN0ZWQiLCJleHRyYV9wZXJ0Iiwibl9hY3Rpdml0eSIsImZpbmFsX3N0ZXAkMCIsImFfbG9vcCIsImR1bXBJZkRlYWRsb2NrZWQiLCJzdGF0ZSQyIiwicmQiLCJkdCQyIiwiZHRpIiwiZHQkMCIsImR0JDEiLCJzdG9wJDEiLCJuZWVkc19iYWNrdHJhY2siLCJlbmRfb2Zfc2ltdWxhdGlvbiIsImluaXRfc3RhdGUiLCJjY19vZl9zdGF0ZSIsImNjX21hcHMiLCJhZ2VudCIsImUkMCIsIndvcmskNSIsImZvbGRfYXJpdHlfbGlzdCIsImFyaXR5IiwiYWRkX2FnZW50IiwidG9kb3MiLCJtb3JwaGlzbSIsIndvcmsiLCJhaWQiLCJ3b3JrJDAiLCJ3X2FnZW50IiwidG9kb3MkMCIsIndvcmskMSIsInciLCJpbnRlcm5hbCIsIm0iLCJ0b2RvcyQzIiwibW9ycGhpc20kMCIsIndvcmskMyIsInBvcnQiLCJhaWQkMCIsImFpZCQxIiwibm90X2FnZW50IiwiYmlkIiwibm90X2FnZW50JDAiLCJub3RfYWdlbnRzIiwiYmlkJDAiLCJ3Yl9hZ2VudCQwIiwidG9kb3MkMSIsIndiX2FnZW50Iiwid29yayQyIiwidG9kb3MkMiIsInRvZG8iLCJtb3JwaGlzbSQxIiwid29yayQ0IiwiZW4iLCJjaWQiLCJkb19uZWdhdGl2ZV9wYXJ0IiwiY2NfY2hhbmdlIiwiY2NzJDAiLCJpbnZvbHZlZF9hZ2VudHMiLCJ0ZXN0c19wYXNzX29uIiwiYWckMiIsImFnX3R5IiwiYWckMyIsImRzdF9zIiwiZHN0X2FnX3R5IiwiYWckNCIsImFnJDUiLCJpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIiwiaXNfc3RlcF90cmlnZ2VyYWJsZSIsImRvX2FjdGlvbnMiLCJpc19yZW1vdmFsIiwicmVtb3ZhbHMiLCJkb19pbl9vcmRlciIsImNjcyQzIiwiYSQxIiwidHkkMCIsImNjcyQ0IiwiY2NzJDUiLCJjY3MkNiIsIngyIiwiczIiLCJhMiIsIngxIiwiczEiLCJhMSIsImNjcyQxIiwiY2NzJDIiLCJkb19zdGVwIiwia2luZCIsInVuYXJ5X2Rpc3RhbmNlcyIsImNjMV9hZ3MiLCJjYzJfYWdzIiwiY29ubmVjdGVkX2NvbXBvbmVudHMiLCJwcmVncmFwaCIsImluZm8kMCIsImV2ZW50JDAiLCJjb25uZWN0ZWRfY29tcG9uZW50cyQwIiwicHJlZ3JhcGgkMCIsImNvbm5lY3RlZF9jb21wb25lbnRzJDEiLCJpbmZvJDEiLCJmX29wIiwiZW1wdHlfY29tcGlsIiwibWVyZ2VfdmVyc2lvbiIsImEiLCJiIiwiYXBwbHlfaW50IiwidCIsImkiLCJkIiwicmVvcmRlcl9ib3VuZHMiLCJqIiwiY291bnRlcl9zaWdfb2ZfY291bnRlciIsImMiLCJsb2MiLCJjb3VudGVyX3NpZ19kZWZhdWx0IiwiY291bnRlcl9zaWdfbWluIiwibG9jJDAiLCJpJDAiLCJjb3VudGVyX3NpZ19tYXgiLCJtYWtlX2ludmVydGVkX2NvdW50ZXJfc2lnIiwiY291bnRlciIsImNvdW50ZXJfc2lnX25hbWUiLCJtaW4iLCJtYXgiLCJmX2ludCIsImZsaXBfbGFiZWwiLCJzdHIiLCJub19tb3JlX3NpdGVfb25fcmlnaHQiLCJlcnJvciIsImxlZnQiLCJyaWdodCIsInAiLCJwJDAiLCJwcmludF9jb3VudGVyX3Rlc3QiLCJmIiwieCIsIngkMCIsIngkMSIsIngkMiIsInByaW50X2NvdW50ZXJfbWluIiwicHJpbnRfY291bnRlcl9tYXgiLCJwcmludF9jb3VudGVyIiwidGVzdCIsImRlbHRhIiwicHJpbnRfY291bnRlcl9zaWciLCJzdHJpbmdfYW5ub3RfdG9fanNvbiIsImZpbGVuYW1lcyIsInN0cmluZ19hbm5vdGVkX29mX2pzb24iLCJzdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiIsImNvdW50ZXJfdGVzdF90b19qc29uIiwiY291bnRlcl90ZXN0X29mX2pzb24iLCJ4JDMiLCJidWlsZF9wb3J0X29mX2pzb24iLCJuIiwibCIsIm1vZF9sIiwibW9kX2kiLCJwb3J0X2ludF9tb2QiLCJwb3J0X2ludCIsIm0kMSIsImkkMSIsIm0kMiIsInBvcnRfaW50X21vZCQwIiwicG9ydF9pbnQkMCIsImwkMCIsInBvcnRfbGlua19tb2QiLCJwb3J0X2xpbmsiLCJtIiwibCQxIiwibSQwIiwicG9ydF9saW5rX21vZCQwIiwicG9ydF9saW5rJDAiLCJzaXRlX3NpZ19vZl9qc29uIiwibiQyIiwibiQwIiwibiQxIiwiZGVmYXVsdCQwIiwibiQzIiwic2l0ZV9vZl9qc29uIiwiY291bnRlcl90b19qc29uIiwiY291bnRlcl9zaWdfdG9fanNvbiIsInByaW50X2FnZW50X21vZCIsInByaW50X2FzdF9hZ2VudCIsImFnZW50X25hbWUiLCJhZ2VudF9tb2Rfb2ZfeW9qc29uIiwiYWdlbnRfdG9fanNvbiIsIm5hIiwiYWdlbnRfb2ZfanNvbiIsInMiLCJzJDAiLCJhZ2VudF9vZl9qc29uJDAiLCJhZ2VudF90b19qc29uJDAiLCJwcmludF9hc3RfbWl4IiwicG9zIiwidG9fZXJhc2VkX21peHR1cmUiLCJ0b19jcmVhdGVkX21peHR1cmUiLCJ0b19kdW1teV91c2VyX3NpdGUiLCJjb3VudGVyX25hbWUiLCJwb3J0X25hbWUiLCJzdCIsInNpIiwidHkiLCJ0b19kdW1teV91c2VyX2FnZW50Iiwic2V0dXBfbGluayIsInZhIiwic2l0ZSIsInJvdyIsImxpbmUiLCJub2RlX3NpdGVzIiwibWl4dHVyZV90b191c2VyX2dyYXBoIiwib3V0IiwiYWNjIiwiaWQiLCJhY2MkMCIsInZhJDAiLCJhY2MkMSIsInByaW50X29uZV9zaXplIiwidGsiLCJtaXgiLCJwcl92YXIiLCJwcl90b2siLCJwcl9taXgiLCJuYiIsInByaW50X2Fycm93IiwiYmlkaXIiLCJwcmludF9hc3RfYWxnX2V4cHIiLCJwcmludF9yYXRlc19vbmVfZGlyIiwidW4iLCJkZWYiLCJtYXhfZGlzdCIsIm1kIiwicHJpbnRfcnVsZV9jb250ZW50IiwiYmlkaXJlY3Rpb25hbCIsInIiLCJyJDAiLCJwcmludF9hc3RfcnVsZSIsInByaW50X2NvbmZpZ3VyYXRpb24iLCJwcmludF9pbml0IiwicHJpbnRfYXN0X2Jvb2xfZXhwciIsInByaW50X3ByaW50X2V4cHIiLCJhdXgiLCJhbGciLCJlIiwicHJpbnRfbW9kaWYiLCJyYXciLCJmaWxlIiwib24iLCJwJDEiLCJvbiQwIiwicCQyIiwiayIsInAkMyIsInAkNCIsIm9uJDEiLCJwcmludF9wZXJ0dXJiYXRpb24iLCJyZXAiLCJtb2RpZiIsImNvbmQiLCJhbGFybSIsInByaW50X3BhcnNpbmdfY29tcGlsX2thcHBhIiwicnVsZV90b19qc29uIiwiZl9taXgiLCJmX3ZhciIsInIkMSIsIm1peF90b19qc29uIiwicnVsZV9vZl9qc29uIiwibWl4X29mX2pzb24iLCJtb2RpZl9vZl9qc29uIiwiZXhwciIsImZpbGUkMCIsImZpbGUkMSIsImZpbGUkMiIsImIkMCIsImlkJDAiLCJiJDEiLCJiJDIiLCJhbGckMCIsInkiLCJtZXJnZV9pbnRlcm5hbHMiLCJtZXJnZV9zaXRlc19jb3VudGVyIiwiaCIsImMkMCIsIm1lcmdlX3NpdGVzX3BvcnQiLCJoJDAiLCJ4X29wIiwidCQwIiwibWVyZ2Vfc2l0ZXMiLCJjbyIsIm5hJDAiLCJtZXJnZV9hZ2VudHMiLCJ0b2siLCJvIiwibWVyZ2VfdG9rZW5zIiwidG9rcyIsImFncyIsInNpZ19mcm9tX2luaXRzIiwic2lnX2Zyb21fcnVsZSIsInRva3MkMSIsImFncyQwIiwic2lnX2Zyb21fcnVsZXMiLCJzaWdfZnJvbV9wZXJ0cyIsImluZmVyX2FnZW50X3NpZ25hdHVyZXMiLCJzcGxpdF9taXh0dXJlIiwicmhzIiwibGhzIiwiYWciLCJwYWNrIiwiaW50ZiIsInBvcyQwIiwiaW50ZnIiLCJpbnRmbCIsInJyIiwibGwiLCJjb21waWxfdG9fanNvbiIsImZpbGVzIiwibWFwIiwidmFyX3RvX2pzb24iLCJwb3N0IiwicHJlIiwiY29tcGlsX29mX2pzb24iLCJ2YXJfb2ZfanNvbiIsIndyaXRlX3BhcnNpbmdfY29tcGlsIiwiYXN0IiwicmVhZF9wYXJzaW5nX2NvbXBpbCIsImxiIiwicHJpbnRfYXN0X21peCQwIiwiY29tYmluYXRpb25zX29mX3Zhcl9zZXR1cCIsImxzMSIsImxzMiIsImNzIiwiZHMiLCJ1cGRhdGVfcmF0ZSIsImNvdW50ZXJfdmFyX3ZhbHVlcyIsInVwZGF0ZV9ib29sX2V4cHIiLCJhMiIsImsyIiwiYTEiLCJrMSIsIm9wIiwiayQwIiwib3AkMCIsImEyJDAiLCJrMiQwIiwiYTEkMCIsImsxJDAiLCJvcCQxIiwidXBkYXRlX2V4cHIiLCJhMyIsImszIiwiYTEkMSIsImsxJDEiLCJrMiQxIiwiYTEkMiIsImsxJDIiLCJ2YXJfdmFsdWUiLCJjb3VudGVyc19tYXRjaGluZ19zIiwibmFtZV9tYXRjaCIsImhhc19jb3VudGVycyIsImNvbXBpbCIsInNpdGVzIiwic3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zIiwid2FybmluZyIsImRlYnVnX21vZGUiLCJzaWduYXR1cmVzIiwicnVsZXMkMSIsInNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbCIsImlkcyIsImNvdW50ZXJfZGVmcyIsInZhbHVlIiwiYW5ub3QiLCJ2YWx1ZSQwIiwidmFyX25hbWUiLCJhbm5vdCQwIiwiY291bnRlcl9kZWYiLCJjb3VudGVyX2RlbHRhIiwibWF4X2xvYyIsIm1pbl9sb2MiLCJtYWtlX2NlcV9jb3VudGVyc19mcm9tX3Zhcl92YWwiLCJ2YWx1ZSQxIiwiY291bnRlcl9kZWx0YSQwIiwic3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsJDAiLCJhc3RfYWdlbnQiLCJzaXRlcyQwIiwic2l0ZXNfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsIiwidmFyX3ZhbHVlcyIsInVwZGF0ZV9vcHRfcmF0ZSIsInVwZGF0ZV9wYWlyX3JhdGUiLCJyMiIsInIxIiwiY2hlY2tfc3ludGF4IiwicHJlcGFyZV9saHNfcnVsZSIsInJzaXRlcyIsInJuYSIsImxzaXRlcyQwIiwibG5hIiwicHJlcGFyZV9zaXRlIiwidGwiLCJoZCIsInJzaXRlIiwiY291bnRlcnMiLCJsc2l0ZXMiLCJsYWdlbnQkMCIsImxzaXRlcyQxIiwibGFnZW50IiwicnVsZSIsImNvbnRlbnQiLCJydWxlcyIsInJ1bGVfYW5ub3RlZCIsInJ1bGVfbmFtZSIsIm1peF9saHMiLCJjb250ZW50JDAiLCJyX2tfb3BfdW5fcmF0ZXMiLCJyX2t1bl9yYXRlcyIsImV4cHJzX2Zyb21fcmF0ZXMiLCJhdXhfZXhwciIsImV4cHIkMCIsImV4cHIkMSIsImV4cHIkMiIsImV4cHIkMyIsImFjYyQyIiwiYXV4X2Jvb2wiLCJleHByX29wdCIsIm1peHR1cmVfZm9yX2VhY2hfY291bnRlcl92YXJfdiIsImtfZGVmIiwia191biIsImtfb3AiLCJrX29wX3VuIiwibGhzJDAiLCJuZXdfcnVsZV9uYW1lIiwiY291bnRlcnNfaWRzX2FzX3N0cmluZyIsImxvY2FsaXR5IiwicnVsZV9uYW1lX3N0cmluZyIsInJ1bGVzJDAiLCJsYWJlbCIsImFkZF9pbmNyIiwiZmlyc3RfbGluayIsImxhc3RfbGluayIsImVxdWFsIiwic2lncyIsImlzX2ZpcnN0IiwiaXNfbGFzdCIsImNvdW50ZXJfYWdlbnRfaW5mbyIsInBvcnRfYSIsInBvcnRfYiIsInBvcnRzIiwiaW50ZXJuYWxzIiwiYmVmb3JlIiwiYWZ0ZXIiLCJyYXdfaW5jciIsImxpbmtfaW5jciIsImFnX2luZm8iLCJsaW5rIiwiY3JlYXRlZCIsInJhX2VyYXNlZCIsImRzdCIsInJhX3R5cGUiLCJyYV9wb3J0cyIsImJlZm9yZV9zd2l0Y2giLCJyYV9pbnRzIiwicmFfYWdlbnQiLCJlcmFzZV9pbmNyIiwiaW5jcnMiLCJpbmNyX3MiLCJpbmNyIiwicnVsZV9hZ2VudCIsImNvbXBpbGVfY291bnRlcl9pbl9ydWxlIiwicnVsZV9hZ2VudCQwIiwicmF3X2FnZW50Iiwib2siLCJsbmtfbmIiLCJsbmtfbmIkMCIsImNyZWF0ZWRfaW5jciIsIm1peF9pbmNyIiwicG9ydF9pZCIsInN0YXJ0X2xpbmtfbmIiLCJhY2NfaW5jcnMiLCJyYSIsImxvY19kZWx0YSIsImNvdW50ZXJfdGVzdCIsImokMCIsInN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQiLCJsaW5rX2Zvcl9lcmFzZWQiLCJ0ZXN0X2luY3IiLCJhZGp1c3RfZGVsdGEiLCJzd2l0Y2gkMCIsIm5ld19saW5rX25iIiwibmV3X2luY3JzIiwiYmxzIiwiYWxzIiwiY3JlYXRlZF9pbmNyX25ldyIsIm1peF9pbmNyX25ldyIsImluY3JzX2NyZWF0ZWQiLCJyYXdfYWdlbnQkMCIsImFnZW50X25hbWUkMCIsImluY3JzX2NyZWF0ZWQkMCIsInJ1bGVfYWdlbnRfbWl4IiwicmF3X21peCIsImNvdW50ZXJzX3BlcnR1cmJhdGlvbnMiLCJhc3Rfc2lncyIsImFnZW50X3R5cGUiLCJmaWxlbmFtZSIsInN0b3BfbWVzc2FnZSIsIm1vZHMiLCJsb2NfYWciLCJhZ19pZCIsInNpZ24iLCJhcml0eSIsImNfbmEiLCJjX2lkIiwibWF4X3ZhbCIsInZhbF9vZl9jb3VudGVyIiwibWFrZV9jb3VudGVyIiwibmFtZSIsImFkZF9jb3VudGVyX3RvX2NvbnRhY3RfbWFwIiwiYWRkX2xpbmtfY29udGFjdF9tYXAiLCJhbm5vdGF0ZV9kcm9wcGVkX2NvdW50ZXJzIiwiYXN0X2NvdW50ZXJzIiwicmFfY291bnRlcnMiLCJwc2V0IiwicHNldCQwIiwiYW5ub3RhdGVfZWRpdF9jb3VudGVycyIsImFubm90YXRlX2NvdW50ZXJzX3dpdGhfZGlmZiIsImxjIiwicmMiLCJjc2V0IiwiY3NldCQwIiwicmMkMCIsImMkMSIsInJjX3IiLCJhbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIiwiY291bnRlcl9saXN0IiwiYWdlbnRfaWQiLCJhZ2VudF9zaWduYXR1cmUiLCJjb3VudGVyX2luZm8iLCJjb252ZXJ0X2RlbHRhIiwibWFwX29wdCIsIm9wdCIsInJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCIsImJ1aWxkX2xfdHlwZSIsImRzdF90eSIsImRzdF9wIiwidHlfaWQiLCJwX2lkIiwiY29udGFjdF9tYXAiLCJzdHkiLCJzcCIsImR0eSIsImRwIiwiY29udGFjdF9tYXAkMCIsInNsIiwiZGwiLCJkaSIsInJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIiwic29ydCIsIndhcm5pbmdfZm9yX2NvdW50ZXJzIiwic2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIiwiYWdfdHkiLCJidWlsZF9saW5rIiwid2Fybl9vbl9zd2FwIiwibGlua3NfdHdvIiwibGlua3Nfb25lIiwib25lJDAiLCJuZXdfbGluayIsIm9uZSIsInN3aXRjaCQxIiwiZHN0X2lkIiwibWFpbnRhaW5lZCIsImxpbmtfc3dhcCIsImFubm90YXRlX2Ryb3BwZWRfYWdlbnQiLCJzeW50YXhfdmVyc2lvbiIsInJfZWRpdF9zdHlsZSIsImxpbmtzX2Fubm90Iiwic2ltcGxlX3BvcnRfbGlzdCIsImxhbm5vdCIsInBfcG9zIiwicG9zJDUiLCJwb3MkMSIsInBvc19saW5rIiwicG9zJDIiLCJwb3J0X25hbWUkMCIsInBvcyQzIiwibGFubm90JDAiLCJwb3NfbGluayQwIiwicG9zJDQiLCJwb3J0X25hbWUkMSIsImFubm90YXRlX2NyZWF0ZWRfYWdlbnQiLCJyYW5ub3QiLCJyYW5ub3QkMCIsInRyYW5zbGF0ZV9tb2RpZmljYXRpb24iLCJ3YXJuX2luZm8iLCJyaHNfbGlua3MiLCJsaHNfbGlua3MiLCJzaXRlX25hbWUiLCJwb3NfaiIsInJoc19saW5rcyQwIiwiYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIiwibHAiLCJycCIsInJlZ2lzdGVyX3BvcnRfbW9kaWYiLCJsbmsxIiwicmhzX2xpbmtzJDEiLCJwb3MkNiIsIm5hJDEiLCJyaHNfbGlua3MkMiIsInBvcyQ3IiwiaSQyIiwibGhzX2xpbmtzJDIiLCJ2YSQxIiwibGhzX2xpbmtzJDAiLCJsaHNfbGlua3MkMSIsInJoc19saW5rcyQzIiwicG9zX2xpbmskMSIsImRzdF90eSQwIiwiZHN0X3AkMCIsInBvcyQxMSIsIm5hJDQiLCJwb3MkOCIsIm5hJDIiLCJwb3MkOSIsImkkMyIsInBvcyQxMCIsIm5hJDMiLCJyaHNfbGlua3MkNCIsImRzdF90eSQxIiwiZHN0X3AkMSIsInBvcyQxMiIsImkkNCIsInJoc19saW5rcyQ1IiwicmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYiLCJpbnQxIiwidmFwb3MiLCJ2YXBvcyQwIiwidmEkMiIsImFubm90ZWQiLCJycCQwIiwiYW5ub3RlZCQwIiwicnBfciIsInNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdSIsImxzIiwicHMiLCJmaW5hbF9ydWxlX3Nhbml0eSIsInJoc19saW5rc19vbmUiLCJsaHNfbGlua3NfdHdvIiwibGhzX2xpbmtzX29uZSIsInJhJDAiLCJtb2RzJDAiLCJ3YXJuaW5nJDAiLCJhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIiwic3ludGF4X3ZlcnNpb24kMSIsImxocyQ3IiwicmhzJDkiLCJyaHMkMCIsImxpbmtzX2Fubm90JDEiLCJlcmFzZWQiLCJhZGRlZCIsImxtb2QiLCJsYWdfcyIsImxwb3MiLCJsYWdlbnRfbmFtZSIsInJtb2QiLCJyYWdfcyIsInJwb3MiLCJyYWdlbnRfbmFtZSIsImxhZ19jIiwibGFnX3AiLCJyYWdfYyIsInJhZ19wIiwibGlua3NfYW5ub3QkMCIsImxhZyIsInJhZyIsImxsaW5rcyIsInJsaW5rcyIsImNtaXgiLCJzeW50YXhfdmVyc2lvbiQwIiwibGlua3NfYW5ub3QkNyIsImxpbmtzX2Fubm90JDYiLCJtaXgkMyIsImNtaXgkMiIsImxocyQ0IiwicmhzJDYiLCJsaHMkNSIsInJocyQ3IiwicmhzJDgiLCJsaHMkNiIsImxpbmtzX2Fubm90JDIiLCJtaXgkMCIsImNtaXgkMCIsImxocyQxIiwicmhzJDEiLCJsYWdlbnRfbmFtZSQwIiwibGhzJDIiLCJsbW9kJDAiLCJscG9zJDAiLCJyaHMkMyIsInJhJDEiLCJtaXgkMiIsImxpbmtzX2Fubm90JDQiLCJyaHMkMiIsInJtb2QkMCIsInJhZ19zJDAiLCJycG9zJDAiLCJyYWdlbnRfbmFtZSQwIiwibGFnX2MkMCIsImxhZ19wJDAiLCJyYWdfYyQwIiwicmFnX3AkMCIsImxpbmtzX2Fubm90JDMiLCJtaXgkMSIsImxocyQzIiwicmhzJDQiLCJybW9kJDEiLCJhZ2VudF90eXBlJDAiLCJjb3VudGVyX2xpc3QkMCIsInNpbXBsZV9wb3J0X2xpc3QkMCIsImNtaXgkMSIsImxpbmtzX2Fubm90JDUiLCJyaHMkNSIsImFubm90YXRlX2VkaXRfbWl4dHVyZSIsImlzX3J1bGUiLCJuZXdzIiwic2Nhbl9wb3J0IiwibW9kaWYkMCIsIm1vZGlmJDEiLCJtb2RpZiQyIiwibW9kaWYkMyIsInZhJDMiLCJtb2RpZiQ0IiwiaV9pZCIsIm1peHR1cmVfb2ZfYXN0IiwiY29udmVydF90b2tlbl9uYW1lIiwidGtfbmFtZSIsImFsZ19leHByX29mX2FzdCIsImFsZ3MiLCJtYXhfYWxsb3dlZF92YXIiLCJhJDAiLCJsYWIiLCJubyIsInllcyIsImJvb2xfZXhwcl9vZl9hc3QiLCJ0a19uYW1lJDAiLCJhc3QkMCIsInkkMCIsInByaW50X2V4cHJfb2ZfYXN0IiwiYXNzZW1ibGVfcnVsZSIsInJfY3JlYXRlZCIsInJfbWl4IiwiYWwiLCJyX2RlbHRhX3Rva2VucyIsInJfcmF0ZSIsImRpc3QiLCJ1bl9yYXRlIiwidW5fcmF0ZSQwIiwicl91bl9yYXRlIiwibW9kaWZfZXhwcl9vZl9hc3QiLCJhc3RfcnVsZSIsInJ1bGVfY29udGVudCIsImNyZWF0ZWRfbWl4IiwibWl4dHVyZSIsInJ1bGVfY29udGVudCQwIiwiY3JlYXRlZF9taXgkMCIsIm1peHR1cmUkMCIsImhvdyIsInJlbCIsInAkNSIsImFkZF91bl92YXJpYWJsZSIsInJhdGVfdmFyIiwiayQxIiwiYWNjX3VuIiwiYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfIiwiYnVpbGRfY29udGFjdF9tYXAiLCJhZ2VudF9zaWdzX3ByZSIsInNpemVfc2lncyIsImFnX25hbWUiLCJzaXRlX25hbWVfYWcxIiwic2l0ZV9zaWciLCJzaXRlX2xpbmtzIiwiYWcyX25hbWUiLCJzaXRlX25hbWVfYWcyIiwiYWcyX2lkIiwic2l0ZV9pZCIsInNob3VsZF9yYWlzZV9mb3JfbWlzc2luZ19saW5rIiwiaW5pdF9vZl9hc3QiLCJpbml0cyIsImluaSIsIndobyIsImludmVydGVkX2NvdW50ZXJfbmFtZSIsImNvbXBpbF9vZl9hc3QiLCJ2YXJfb3ZlcndyaXRlIiwiYXN0X2NvbXBpbCQwIiwiY291bnRlcl9mb2xkX2luX21peHR1cmUiLCJhY2MyIiwiYWdlbnRfbGlzdCIsImFjYzMiLCJhZ2VudCIsInNpdGVfbGlzdCIsImFjYzQiLCJjb3VudGVyX2ZvbGRfaW5fZXhwciQwIiwiZTEiLCJjb3VudGVyX2ZvbGRfaW5fZXhwciIsImUyIiwiZTEkMCIsImViIiwiY291bnRlcl9mb2xkX2luX2JleHByJDAiLCJiZXhwciIsImJleHByJDAiLCJiZXhwciQxIiwiYmUxIiwiY291bnRlcl9mb2xkX2luX2JleHByIiwiYmV4cHIkMiIsImNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQiLCJjb3VudGVyX2ZvbGRfaW5fcnVsZSIsInJ1bGUkMCIsImUkMCIsImUkMSIsImUkMiIsImFjYyQzIiwiZSQzIiwiYWNjJDQiLCJjb3VudGVyX2ZvbGRfaW5fcHJpbnQiLCJpbml0IiwibDEiLCJ2YXJpYWJsZV9kZWYiLCJsMiIsIm9ic19kZWYiLCJsMyIsImw0IiwicGVydHVyYmF0aW9uIiwiYjJfb3B0IiwibW9kX2xpc3QiLCJiMV9vcHQiLCJtb2RfZGVmIiwibCQyIiwiY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzIiwiYWdlbnRfbW9kIiwiY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fIiwiY291bnRlcl9vcmlnIiwiY29udmVydF92YWx1ZSIsInVwZGF0ZSIsInJlZl9tYXgiLCJyZWZfbWluIiwiY29udmVydF9pbmZvIiwiY291bnRlcl9zaWdfdmlzaWJsZSIsIm1hcCQwIiwibmV3X2NvdW50ZXJfc2l0ZXMiLCJjb3VudGVyX2NvbnZlcnNpb25faW5mb19tYXAiLCJyZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IiwiY2x0ZV92YWx1ZV9vcl9ub25lIiwibmV3X3NpdGUiLCJvcmlnaW5hbF9jb3VudGVyX3NpdGUiLCJpbnZlcnRlZF9jb3VudGVyX3NpdGUiLCJzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMiLCJhZGRlZF9zaXRlcyIsIm5ld19zaXRlX2xpc3QiLCJhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X20iLCJpbmZvIiwibWFwX2V4cHIiLCJtYXBfYmV4cHIiLCJtYXBfcnVsZSIsInJld3JpdGUiLCJydWxlX2RlZiIsImluaXRfa2luZCIsInF1YW50aXR5X2FsZ19leHByIiwiaW5pdCQwIiwidmFyaWFibGVzIiwib2JzZXJ2YWJsZXMiLCJtYXBfcHJpbnQiLCJtYXBfbW9kaWYiLCJsJDMiLCJhJDEiLCJsJDQiLCJsJDUiLCJleHQiLCJwZXJ0dXJiYXRpb25zIiwiYXN0X2NvbXBpbCIsImFnZW50X3NpZ19pc19pbXBsaWNpdCIsImFzdF9jb21waWwkMSIsImFzdF9jb21waWwkMiIsImFjYzAiLCJhY2MxIiwiYWNjX2NvdW50ZXJzX3Blcl9hZ2VudCIsImFjY19zaWdzIiwiYWNjX2NvdW50ZXJfbmFtZXMiLCJhY2Nfc2l0ZV9zaWdzIiwiYWNjX2xpbmtzIiwiY291bnRlcnNfYWdlbnQiLCJzaXRlX3NpZ3NfcHJlX25hbWVkZGVjbHMiLCJzaXRlX3NpZ3NfbmQiLCJjb3VudGVyc19wZXJfYWdlbnQiLCJzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMiLCJzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMkMCIsImNvdW50ZXJfYWdlbnRfbmFtZSIsImFfcG9ydF9uYW1lIiwiYl9wb3J0X25hbWUiLCJhX3BvcnRfc2lnIiwiY291bnRlcnNfZnJvbV9hZ2VudCIsImFnZW50X2NvdW50ZXJfcG9ydF9uYW1lIiwiYl9saW5rcyIsImJfcG9ydF9zaWciLCJzaXRlX3NpZ3NfY291bnRlcl9hZ2VudCIsImFnZW50X3NpZ3MiLCJhZ2VudHNfc2lnIiwicl9wb3MiLCJsYWJlbF9vcHQiLCJwcmludGVyIiwic2V0Iiwic2V0JDAiLCJzZXQkMSIsInJ1bGVfbGFiZWwiLCJydWxlX25hbWVzIiwia19kZWYkMCIsImtfZGVmJDEiLCJyYXRlX3ZhciQwIiwicmF0ZV92YXJfdW4iLCJjcmVhdGVkX21peCQxIiwibWl4dHVyZSQxIiwicmF0ZV92YXJfdW4kMCIsImtfb3BfdW4kMCIsImFjY191biQwIiwiY3JlYXRlZF9taXgkMiIsIm1peHR1cmUkMiIsImNsZWFuZWRfcnVsZXMiLCJleHRyYV92YXJzIiwidmFycyIsInZhciQwIiwiYWNjX3ZhcnMiLCJvdmVyd3JpdGVfdmFyc19yZW1haW5pbmciLCJvdGhlcl9vdmVyd3JpdGVfdmFycyIsIm1hdGNocyIsInYiLCJhY2NfdmFyc193aXRoX3hfcmV3cml0dGVuX2lmX3AiLCJyZXZfYWxnX3ZhcnMiLCJ2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkIiwiYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFycyIsImFsZ192YXJzX2FycmF5IiwiYWxnX3ZhcnNfZmluZGVyIiwidG9rZW5fbmFtZXMiLCJ0b2tlbnNfZmluZGVyIiwidXBfdmFycyQwIiwidXBfdmFycyIsInVwZGF0ZWRfYWxnX3ZhcnMiLCJwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVycyIsInBlcnR1cmJhdGlvbnMkMCIsInZhcmlhYmxlcyQwIiwib2JzZXJ2YWJsZXMkMCIsImluaXQkMSIsInl5bGhzIiwieXlsZW4iLCJ5eWRlZnJlZCIsInl5ZGdvdG8iLCJ5eXNpbmRleCIsInl5cmluZGV4IiwieXlnaW5kZXgiLCJ5eXRhYmxlIiwieXljaGVjayIsInl5bmFtZXNfY29uc3QiLCJ5eW5hbWVzX2Jsb2NrIiwiYWRkX3BvcyIsInJoc19wb3MiLCJlbmRfcG9zIiwic3RhcnRfcG9zIiwiaW50ZXJuYWxfbWVtb3J5IiwiYWRkIiwieXl0cmFuc2xfY29uc3QiLCJ5eXRyYW5zbF9ibG9jayIsInl5dGFibGVzaXplIiwieXlhY3QiLCJjYW1sX3BhcnNlcl9lbnYiLCJfMiIsIl8xIiwiXzUiLCJfMyIsIl83IiwiXzQiLCJfOCIsImFuIiwicGVuZCIsIl85IiwiXzExIiwieiIsInJtX3Rva2VuIiwiYWRkX3Rva2VuIiwiZGVsdGFfdG9rZW4iLCJfNiIsImtiYWNrMSIsImtiYWNrIiwicG9zX2VuZCIsImVwYXQiLCJwYXQiLCJwZW5kcCIsInBhdXNlIiwiZWZmIiwieXl0YWJsZXMiLCJtb2RlbCIsImxleGZ1biIsImxleGJ1ZiIsImludGVyYWN0aXZlX2NvbW1hbmQiLCJzdGFuZGFsb25lX2VmZmVjdF9saXN0Iiwic3RhbmRhbG9uZV9ib29sX2V4cHIiLCJhcHBlbmRfdG9fYXN0X2NvbXBpbCIsInJldl9pbnN0ciIsInN0cl9wb3MiLCJ2b2xfcGFyYW0iLCJ2b2wiLCJ2b2xfdHlwZSIsImluaXRfdCIsInZhciQxIiwibGJsIiwiZWZmZWN0IiwidmFsdWVfbGlzdCIsInBhcmFtX25hbWUiLCJydSIsIm9jYW1sX2xleF90YWJsZXMiLCJrZXl3b3JkcyIsInRva2VuIiwib2NhbWxfbGV4X3Rva2VuX3JlYyIsIm9jYW1sX2xleF9zdGF0ZSIsIm9jYW1sX2xleF9zdGF0ZSQwIiwib2NhbWxfbGV4X3N0YXRlJDEiLCJpbmxpbmVfY29tbWVudCIsInMkMSIsImxhYiQwIiwicyQyIiwiYWNjJDUiLCJhY2MkNiIsIngkNCIsImFjYyQ3IiwieCQ1IiwiYWNjJDgiLCJhY2MkOSIsImVyciIsImVyciQwIiwiY29tcGlsZSIsImxvZ2dlciIsImZpYyIsImNvbXBpbCQwIiwibXNnIiwid3JpdGVfY2F0YWxvZ19pdGVtIiwib2IiLCJwb3NpdGlvbiIsInJlYWRfY2F0YWxvZ19pdGVtIiwia2V5IiwiY291bnQiLCJjcmVhdGUiLCJwdXQiLCJyYW5rIiwiY2F0YWxvZyIsImFpZSIsImZpbGVfY3JlYXRlIiwiZmlsZV9tb3ZlIiwiZmlsZV9wYXRjaCIsImZpbGVfZGVsZXRlIiwiZmlsZV9nZXQiLCJwYXJzZSIsInlpZWxkJDAiLCJ0ZXh0IiwicmFuZ2UiLCJjb21waWxlJDAiLCJleG4iLCJtZXNzYWdlIiwibWVzc2FnZSQwIiwiaW5zdHMiLCJvdmVyd3JpdGUiLCJpdCIsInN0YXJ0X3J1bGUiLCJzcGFjZV9jaGFycyIsInJlc2V0X2VvZiIsInRva2VuJDAiLCJyZWFkX2xhYmVsIiwib2NhbWxfbGV4X3N0YXRlJDIiLCJvY2FtbF9sZXhfc3RhdGUkMyIsInN0ciQwIiwiY2hhcl9saXN0IiwicmVwbHkiLCJ3cml0ZV92Iiwid3JpdGVfY2F0YWxvZ19pdGVtcyIsImxpZnRfYW5zd2VyIiwib25fbWVzc2FnZSIsImN1cnJlbnRfaWQiLCJhbnN3ZXIiLCJtc2dfaWQiLCJtc2dfaWQkMCIsIm1zZ19pZCQxIiwibXNnX2lkJDIiLCJvdXQkNCIsInBvc2l0aW9uJDAiLCJpZCQ0IiwiY29udGVudCQxIiwib3V0JDMiLCJpZCQzIiwib3V0JDIiLCJpZCQyIiwib3V0JDEiLCJpZCQxIiwib3V0JDAiLCJjb21waWxlX21vZGVfb24iLCJkb21haW4iLCJkb21haW4kMCIsImRvbWFpbiQxIiwiYSQyIiwiZG9tYWluJDIiLCJkb21haW4kMyIsIm9yaWdpbiIsImNjcyIsImRvbWFpbiQ0Iiwib3V0X2NjcyIsImNvbmQkMCIsImRvbWFpbiQ1IiwieWVzJDAiLCJkb21haW4kNiIsIm5vJDAiLCJkb21haW4kNyIsImEkMyIsImEkNCIsImNvbXBpbGVfcHVyZV9hbGciLCJjb21waWxlX2FsZyIsImNvbXBpbGVfYm9vbCIsInJ1bGVzX29mX2FzdCIsImRlcHNfbWFjaGluZXJ5Iiwic3ludGF4X3JlZiIsImFsZ19leHByIiwiZGVsdGFfdG9rcyIsImRlcHMiLCJjcnAiLCJyYXRlIiwiZCQwIiwiZCQxIiwiZGlzdCQwIiwidW5yYXRlIiwidW5hcnlfaW5mb3MiLCJvcmlnaW4kMCIsInJ1bGVfbWl4dHVyZXMiLCJkZXBzX2FsZ3MkMCIsIm5lZyIsInN5bnRheCIsImNjcyQwIiwidXIiLCJkZXBzX2FsZ3MiLCJydWxlc19sIiwibyQwIiwiZCQyIiwiZCQzIiwiY29tcGlsZV9wcmludF9leHByIiwiZXgiLCJlbCIsImFzdF9hbGciLCJlZmZlY3RzX29mX21vZGlmcyIsImFzdF9hbGdzIiwiYXN0X3J1bGVzIiwicmV2X2VmZmVjdHMiLCJhbGdfcG9zIiwiZWxlbV9ydWxlcyIsImVsZW1fcnVsZSIsImFsZ19leHByJDAiLCJhbGdfcG9zJDAiLCJwZXhwciIsInBleHByJDAiLCJwZXhwciQxIiwicGV4cHIkMiIsInByaW50IiwicGV4cHIkMyIsInBleHByJDQiLCJwcmludCQwIiwidGVzdHMiLCJkb21haW4kOCIsInBleHByJDUiLCJwZXhwciQ2IiwiZG9tYWluJDkiLCJwZXhwciQ3IiwicGV4cHIkOCIsImRvbWFpbiQxMCIsInBleHByJDkiLCJwZXhwciQxMCIsImRvbWFpbiQxMSIsImNjcyQxIiwiZG9tYWluJDEyIiwiYXJyIiwiY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIiwiY29tcGlsZV9pbml0cyIsInJlc2NhbGUiLCJlbnYiLCJwcmVlbnYiLCJtaXhfcG9zIiwiYWxnJDEiLCJwcmVlbnYkMCIsImZha2VfcnVsZSIsImNvbXBpbGVkX3J1bGUiLCJwcmVlbnYkMSIsInRrX2wiLCJ0a19pZCIsImZha2VfcnVsZSQwIiwiY29tcGlsZWRfcnVsZSQwIiwiaW5pdF9sIiwib3V0cHV0cyIsInJldHVybiQwIiwic2hhcmluZyIsIm92ZXJ3cml0ZV9pbml0Iiwib3ZlcndyaXRlX3QwIiwicmVzY2FsZV9pbml0Iiwic2lnc19uZCIsInRrX25kIiwicmVzdWx0IiwibGJsX3BvcyIsImFsZ19hIiwiYWxnX25kIiwiYWxnX2RlcHMiLCJjciIsImZkb21haW4iLCJmcnVsZXMiLCJmYWxnX2RlcHMiLCJjb21waWxlZF9ydWxlcyIsImFsZ19kZXBzJDAiLCJydWxlX25kIiwib3B0X3Bvc3QiLCJtb2RpZl9leHByX2xpc3QiLCJwcmVfZXhwciIsInRyYWNraW5nX2VuYWJsZWQiLCJscGVydCIsInByZV9leHByJDAiLCJ0X3ZhciIsInQwIiwiZWZmZWN0cyIsInBvc3RfZXhwciIsInBvc3RfcG9zIiwiaGFzX3RyYWNraW5nIiwibmVlZHNfYmFja3RyYWNrIiwicmVwZWF0IiwicGVydCIsIm91dF9hbGdfZGVwcyIsImNvbnQiLCJvYnMiLCJkb21fc3RhdHMiLCJidWlsZF9pbml0aWFsX3N0YXRlIiwiYmluZCIsIndpdGhfdHJhY2UiLCJ3aXRoX2RlbHRhX2FjdGl2aXRpZXMiLCJyYW5kb21fc3RhdGUiLCJncmFwaDAiLCJzdGF0ZTAiLCJkb19pbnRlcmFjdGl2ZV9kaXJlY3RpdmVzIiwiZ3JhcGgiLCJzdGF0ZSIsImNjX3ByZWVudiIsImNjX3ByZWVudiQwIiwiZ3JhcGgkMCIsImVudiQwIiwiZmVudiIsImdyYXBoJDEiLCJlbnYkMSIsIm9zdGF0ZSIsIm9ncmFwaCIsIm9zdG9wIiwiZ2V0X3BhdXNlX2NyaXRlcmlhIiwiYnBvcyIsInBvc19iIiwiZmluZF9hbGxfZW1iZWRkaW5ncyIsInRyIiwiZHVtbXlfaW5zdGFuY2VzIiwicm9vdCIsImVycm9yX21zZyIsImFnZW50IiwiY29udGFjdG1hcCIsImFjY3VyYWN5X3N0cmluZyIsImRlYWRfcnVsZXMiLCJkZWFkX2FnZW50cyIsIm1hcCIsImludGVyZmFjZSQwIiwic2l0ZSIsInN0YXRlc2xpc3QiLCJzaXRlbmFtZSIsInNpdGV0eXBlIiwic2l0ZWxpbmtzIiwic2l0ZXN0YXRlcyIsInNpdGVub2RlbmFtZSIsInNpdGVub2RlaWQiLCJzaXRlbm9kZXNpdGVzIiwiaHlwIiwicmVmaW5lbWVudCIsImRvbWFpbl9uYW1lIiwicmVmaW5lbWVudHNfbGlzdCIsInJlZmluZW1lbnRfbGVtbWFzIiwicnVsZV9pZCIsImFnZW50X2lkIiwibGFiZWwiLCJhc3QiLCJwb3NpdGlvbiIsInBvc2l0aW9uX2xpc3QiLCJ2YXJpYWJsZSIsInJ1bGUiLCJkaXJlY3QiLCJzaWRlX2VmZmVjdCIsInNvdXJjZSIsInRhcmdldF9tYXAiLCJ0YXJnZXQiLCJsb2NhdGlvbl9wYWlyX2xpc3QiLCJyaHMiLCJsaHMiLCJpbmZsdWVuY2VtYXAiLCJub2Rlc29maW5mbHVlbmNlbWFwIiwid2FrZXVwIiwiaW5oaWJpdGlvbiIsIm5vZGVzIiwidG90YWxfc3RyaW5nIiwiZndkX3N0cmluZyIsImJ3ZF9zdHJpbmciLCJvcmlnaW4iLCJkaXJlY3Rpb24iLCJydWxlX2hpZGRlbiIsInNjYyIsImFjY3VyYWN5X2NtIiwiYWNjdXJhY3lfc2NjIiwiY29udGFjdG1hcHNjYyIsImNvdW50ZXIiLCJpbmYiLCJzdXAiLCJrZXkiLCJsb2NhbGl0eSIsImFjY3VyYWN5X2xldmVscyIsImNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVscyIsImluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzIiwicmVkdWN0aW9uX2FjY3VyYWN5X2xldmVscyIsImZyZWUiLCJ3aWxkY2FyZCIsImJvdW5kIiwiYm9uZF9pZCIsImJvdW5kX3RvIiwiYmluZGluZ190eXBlIiwicHJvcCIsImJpbmQiLCJiaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wiLCJmcmVlX2JhY2tlbmRfc3ltYm9sIiwibWlzc2luZ19iaW5kaW5nX3NpdGVfYmFja2VuZF9zIiwid2lsZGNhcmRfYmFja2VuZF9zeW1ib2wiLCJib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm8iLCJpbnRlcm5hbF9zdGF0ZV9pbnRyb2R1Y3Rpb25fYmEiLCJpbnRlcm5hbF9zdGF0ZV9kZWxpbWl0ZXJfYmFja2UiLCJiaW5kaW5nX3N0YXRlX2RlbGltaXRlcl9iYWNrZW4iLCJiaW5kaW5nX3N0YXRlX29wZW5pbmdfYmFja2VuZF8iLCJiaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF8iLCJpbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmQiLCJpbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmQiLCJjb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF8iLCJjb3VudGVyX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF8iLCJjb3VudGVyX3N0YXRlX3JhbmdlX2JhY2tlbmRfc3kiLCJvcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wiLCJjbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm8iLCJvcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wiLCJjbG9zZV9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm8iLCJwbHVzX2luZmluaXR5X3N5bWJvbCIsIm1pbnVzX2luZmluaXR5X3N5bWJvbCIsImFjY3VyYWN5X3RvX3N0cmluZyIsImFjY3VyYWN5X3RvX2pzb24iLCJ4IiwiYWNjdXJhY3lfb2Zfc3RyaW5nIiwiYWNjdXJhY3lfb2ZfanNvbiIsImpzb24iLCJjb21wYXJlIiwiYSIsImIiLCJwcmludCIsImYiLCJzaXRlX3RvX2pzb24iLCJwIiwibCIsInkiLCJ4ciIsInhsIiwidHkiLCJzaSIsImkiLCJzaXRlX29mX2pzb24iLCJsJDAiLCJqc29uJDEiLCJzaXRlX25hbWUiLCJqc29uJDIiLCJwb3J0X2xpbmtzIiwianNvbiQwIiwicG9ydF9zdGF0ZXMiLCJzaXRlX3R5cGUiLCJzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiIsInNpdGVfbm9kZV90b19qc29uIiwibm9kZSIsImxpc3QiLCJzaXRlX25vZGVfb2ZfanNvbiIsIm5vZGVfaWQiLCJub2RlX3R5cGUiLCJub2RlX3NpdGVzIiwiY29udGFjdF9tYXBfdG9fanNvbiIsImNvbnRhY3RfbWFwIiwiY29udGFjdF9tYXBfb2ZfanNvbiIsInN0cmluZ19wYWlyX3RvX2pzb24iLCJzdHJpbmdfcGFpcl9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl90b19qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIiwic3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24iLCJzdHJpbmdfcGFpcl9wYWlyX2xpc3Rfb2ZfanNvbiIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvXyIsInN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X29mXyIsInNjY190b19qc29uIiwic2NjX2FjYyIsImNtX2FjYyIsInNjY19vZl9qc29uIiwicnVsZV90b19qc29uIiwiZCIsImpzb25fdG9fcnVsZSIsInMiLCJ2YXJfdG9fanNvbiIsInZhciQwIiwianNvbl90b192YXIiLCJpbmZsdWVuY2Vfbm9kZV90b19qc29uIiwiaSQwIiwiaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24iLCJzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uIiwibG9jIiwicG9zX29mX3J1bGVzX2FuZF92YXJzX3RvX2pzb24iLCJwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiIsInJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiIsInNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIiwicG9zaXRpb25fb2ZfcmVmaW5lZF9pbmZsdWVuY2VfIiwiciIsInYiLCJjb21wYXJlJDAiLCJwcmludCQwIiwiciQwIiwiZHVtcF9sb2NhdGlvbiIsImZtdCIsImludCQwIiwiaW50JDEiLCJkdW1wX2xvY2F0aW9uX3BhaXIiLCJkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCIsInN0cmluZ19vZl9sYWJlbF9saXN0IiwibG9jYXRpb25fdG9fanNvbiIsImxvY2F0aW9uX29mX2pzb24iLCJvcHQiLCJzdGgiLCJoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsImhhbGZfaW5mbHVlbmNlX21hcF9vZl9qc29uIiwibm9kZXNfbGlzdF90b19qc29uIiwibm9kZXNfbGlzdF9vZl9qc29uIiwiaW5mbHVlbmNlX21hcF90b19qc29uIiwiaW5mbHVlbmNlX21hcCIsIm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfdG9fanNvbiIsIm5vZGVzX2xpc3QiLCJub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24iLCJsb2NhbF9pbmZsdWVuY2VfbWFwX3RvX2pzb24iLCJpbmZsdWVuY2VfbWFwJDAiLCJvcmlnaW5fb3B0IiwiZndkIiwiYndkIiwidG90YWwiLCJhY2N1cmFjeSIsImluZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiIsImVycm9yX21zZyQwIiwib3JpZ2luJDAiLCJ4JDAiLCJsJDEiLCJkZWFkX3J1bGVzX3RvX2pzb24iLCJkZWFkX3J1bGVzX29mX2pzb24iLCJqc29uX3RvX2FnZW50X2tpbmQiLCJhZ2VudF9raW5kX3RvX2pzb24iLCJhZ2VudF9raW5kIiwianNvbl9vZl9kZWFkX2FnZW50cyIsImpzb25fdG9fZGVhZF9hZ2VudHMiLCJzZXBhcmF0aW5nX3RyYW5zaXRpb25zX3RvX2pzb24iLCJzZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb24iLCJsZW1tYV90b19qc29uIiwic2l0ZV9ncmFwaF90b19qc29uIiwibGVtbWFfb2ZfanNvbiIsInNpdGVfZ3JhcGhfb2ZfanNvbiIsImdldF9oeXAiLCJoIiwiZ2V0X3JlZmluZW1lbnQiLCJzdHJpbmdfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfbmFtZSIsImJpbmRpbmdfdHlwZV9zeW1ib2wiLCJiaW5kaW5nX3N0YXRlX2xpZ2h0X29mX2pzb24iLCJqIiwiYmluZGluZ19zdGF0ZV9saWdodF90b19qc29uIiwiYm9uZF9pbmRleCIsImNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbiIsImNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbiIsImludGVyZmFjZV9saWdodF90b19qc29uIiwiaW50ZiIsImMiLCJrIiwiaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24iLCJsZW1tYXNfbGlzdF9vZl9qc29uX2dlbiIsImludGVyZmFjZV9vZl9qc29uIiwibGVtbWFzX2xpc3Rfb2ZfanNvbiIsImxlbW1hc19saXN0X3RvX2pzb25fZ2VuIiwiaW50ZXJmYWNlX3RvX2pzb24iLCJjb25zdHJhaW50cyIsImxlbW1hc19saXN0X3RvX2pzb24iLCJyYXdfdmVyc2lvbl9zdHJpbmciLCJleHRyYWN0X3RhZ19yZSIsImdyIiwidmVyc2lvbl9zdHJpbmciLCJ2ZXJzaW9uX21zZyIsInZlcnNpb25fa2FzYV9mdWxsX25hbWUiLCJ2ZXJzaW9uX2thZGVfZnVsbF9uYW1lIiwidGtfaXNfaW5pdGlhbGl6ZWQiLCJleHBlcnRfbW9kZSIsImNvbXBhcmUiLCJkIiwiYyIsImIiLCJhIiwiY21wIiwicHJpbnQiLCJmbXQiLCJtYXhfbGV2ZWxfb3B0IiwiYiQwIiwic2hvd19sZXZlbCIsImx2bCIsImFjY2VwdF9sZXZlbF9kaXNwbGF5IiwiYWNjZXB0X2xldmVsX3VzZSIsIm5va2V5IiwiayIsImN1dF9saXN0IiwicyIsImRvaXQiLCJhY2N1bSIsInBvcyIsImkiLCJwIiwibCIsImwkMCIsImkkMCIsIm9yZGVyIiwib3JkZXJlZCIsImNhdCIsIm9sZF9sdmwiLCJhc3NvIiwiY2hlY2siLCJvcHRzIiwia2V5IiwidCIsImYiLCJwcmludF9tc2ciLCJwcmludF9vcHRpb24iLCJ2ZXJib3NlIiwibXNnIiwic3BlYyIsImtleTIiLCJyIiwiciQwIiwiciQxIiwiciQyIiwiciQzIiwicyQwIiwiciQ0IiwiciQ1IiwibGlzdCIsImxpc3QkMCIsInRhaWwiLCJoMiIsImgxIiwiciQ2IiwiciQ3IiwidiIsInIkOCIsInIkOSIsImwkMSIsInByaW50X2hlbHAiLCJoZWFkZXIiLCJuYiIsImhlYWRlciQwIiwibHZsJDAiLCJsdmxfb3B0IiwieCIsInZlcmJvc2UkMCIsInZlcmJvc2UkMSIsInBhcnNlX2xpc3QiLCJ3aXRoX3RrIiwidGl0bGUiLCJsb25nX2hlbHAiLCJzaG9ydF9oZWxwIiwic2hvd192ZXJzaW9uIiwiYWNjdW0kMCIsInJlbSIsIm9wdCIsIm9wdCQwIiwiYWEiLCJyZW0kMyIsInJlbSQyIiwicmVtJDEiLCJ2JDAiLCJyZW0kNyIsInJlbSQ1IiwicmVtJDQiLCJyZW0kNiIsInJlbSQ4IiwidiQxIiwicmVtJDkiLCJ2JDIiLCJyZW0kMTMiLCJyZW0kMTEiLCJyZW0kMTAiLCJyZW0kMTIiLCJ2JDMiLCJyZW0kMTciLCJyZW0kMTUiLCJyZW0kMTQiLCJyZW0kMTYiLCJ2JDQiLCJyZW0kMjIiLCJyZW0kMjAiLCJyZW0kMTgiLCJ2JDUiLCJyZW0kMTkiLCJyZW0kMjEiLCJ2JDYiLCJyZW0kMjUiLCJyZW0kMjQiLCJyZW0kMjMiLCJ2JDciLCJyZW0kMjkiLCJyZW0kMjciLCJyZW0kMjYiLCJyZW0kMjgiLCJyZW0kMzAiLCJ2JDgiLCJyZW0kMzEiLCJ2JDkiLCJyZW0kMzIiLCJyJDEwIiwieSIsInJlbSQzMyIsInYkMTAiLCJyZW0kMzQiLCJsJDIiLCJyZW0kMzUiLCJ2JDExIiwicmVtJDM2IiwicmVtJDAiLCJmaWxlbmFtZXMiLCJ4JDAiLCJwYXJzZSIsImRlZiIsImFyZ3MiLCJkYXRhX3NldCIsIm91dHB1dCIsInNlbWFudGljcyIsImludGVncmF0aW9uX3NldHRpbmdzIiwibW9kZWxfcmVkdWN0aW9uIiwic3RhdGljX2FuYWx5c2lzIiwiZGVidWdfbW9kZSIsImRlZmF1bHQkMCIsImRlZmF1bHRfZ3VpIiwiZG9fdmVyc2lvbiIsImRvX2dsdXR0b255IiwiY29weV9mcm9tX2d1aSIsInRfZ3VpIiwib3B0aW9uc19nZW4iLCJvcHRpb25zIiwib3B0aW9uc19ndWkiLCJlIiwiYXV4IiwiYWNjdSIsImFjY3UkMCIsInZhcl92YWwiLCJhY2N1JDEiLCJtIiwib3V0cHV0RGlyZWN0b3J5Iiwib3V0cHV0RGF0YUZpbGUiLCJwb2ludE51bWJlclZhbHVlIiwidGltZSIsImZpYyIsImNyZWF0ZSIsImJhcl9zaXplIiwiYmFyX2NoYXIiLCJmb3IkMCIsInBwX25vdF9udWxsIiwicHBfdGV4dCIsImRlbHRhX3QiLCJ0X3IiLCJldmVudCIsImVfciIsImR0Iiwic3RyaW5nIiwiYXV4X3RpY2siLCJzb21ldGhpbmciLCJuIiwic29tZXRoaW5nJDAiLCJuJDAiLCJuJDEiLCJ0aWNrIiwiZWZmaWNpZW5jeSIsIm5fdCIsIm5fZSIsInJ1biIsImNvbXBsZXRlX3Byb2dyZXNzX2JhciIsInQkMCIsIm91dHB1dERpck5hbWUiLCJtYXJzaGFsaXplZE91dEZpbGUiLCJjZmxvd0ZpbGVOYW1lIiwiZmx1eEZpbGVOYW1lIiwibWtfZGlyX3IiLCJvdmVyd3JpdGVfcGVybWlzc2lvbiIsInBhdGgiLCJvcGVuX291dCIsIm9wZW5fb3V0X2ZyZXNoIiwibmFtZSIsImNvbmNhdF9saXN0IiwiZmFjdWx0YXRpdmUiLCJleHQiLCJuYW1lJDAiLCJ0bXBfbmFtZSIsImJhc2UiLCJvdmVyX2ZsYWciLCJmbGFncyIsImJhc2UkMCIsInNldCIsImV4dF9vcHQiLCJmbmFtZSIsImNoZWNrX25vdF9leGlzdHMiLCJmaWxlIiwiZmlsZSQwIiwiYW5zd2VyIiwic2V0Q2hlY2tGaWxlRXhpc3RzIiwiYmF0Y2htb2RlIiwib3V0cHV0RmlsZSIsIndpdGhfY2hhbm5lbCIsInN0ciIsImRlc2MiLCJ3cmFwX2Zvcm1hdHRlciIsImZyIiwic2V0X2RpciIsImdldF9kaXIiLCJzZXRfbWFyc2hhbGl6ZWQiLCJ3aXRoX21hcnNoYWxpemVkIiwic2V0X2NmbG93Iiwid2l0aF9jZmxvd19maWxlIiwib3Blbl90YXNrc19wcm9maWxpbmciLCJvcGVuX2JyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm8iLCJzZXRfZmx1eCIsIm5tZSIsIndpdGhfZmx1eCIsInN0ciQwIiwid2l0aF9zbmFwc2hvdCIsInNpemUiLCJib3JkZXIkMCIsImJvcmRlciIsImR1bW15X3ZhbHVlcyIsImNvbG9ycyIsInN0eWxlcyIsImdyYWR1YXRpb25fc3RlcCIsImRyYXdfbCIsIm1pbl9ncmFkX2wiLCJ2YV9taW4iLCJ2YV9tYXgiLCJuYnJfZGVsdGEiLCJkZWx0YV92YSIsIm5iX2dyYWQiLCJleGFjdF9zdGVwIiwiZGVsdGFfZ3JhZCIsInZhX21pbiQwIiwidmFfbWF4JDAiLCJkcmF3IiwiaCQwIiwidyQwIiwiYl9oIiwiemVyb193IiwiYl9vcCIsImgiLCJ3IiwidmEkMCIsInRfbWF4IiwicSIsInZhIiwidmFfbWF4JDEiLCJ2YV9taW4kMiIsInRfbWF4JDEiLCJkYXRhX3ciLCJkYXRhX2giLCJ0X21heCQyIiwiZ3JhZF93IiwibmJfdyIsInZhX21heCQyIiwiZ3JhZF9oIiwibmJfaCIsInZhX21pbiQzIiwiemVyb19oIiwiZHJhd19mdW4iLCJ5JDAiLCJwcF9saW5lIiwidG9fc3RyaW5nIiwic3RoIiwid2lkdGgiLCJ0b19maWxlIiwiY2hhbiIsImZvcm0iLCJ4bHN3ZWFrRmlsZU5hbWUiLCJ4bHNzdHJvbmdGaWxlTmFtZSIsImRlZmF1bHRFeHRBcnJheVNpemUiLCJkZWZhdWx0R3JhcGhTaXplIiwiZGVmYXVsdExpZnRTZXRTaXplIiwiZGVmYXVsdEhlYXBTaXplIiwiZGVidWdfbW9kZU9uIiwidGltZV9pbmRlcGVuZGVudCIsImJsYWNrbGlzdF9ldmVudHMiLCJkb19nbG9iYWxfY3V0IiwiY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50IiwiZG9fbG9jYWxfY3V0IiwiZG9fZGV0ZWN0X3NlcGFyYWJsZV9jb21wb25lbnRzIiwibG9va191cF9mb3JfYmV0dGVyX2N1dCIsImxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCIsImxvZ19udW1iZXJfb2ZfY2F1c2FsX2Zsb3dzIiwiZHVtcF9ncmlkX2JlZm9yZV93ZWFrX2NvbXByZXNzIiwiZHVtcF9ncmlkX2JlZm9yZV9zdHJvbmdfY29tcHJlIiwiZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpIiwiZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpJDAiLCJnZXRfY2FjaGVfc2l6ZSIsInByaW50X2Rlc2MiLCJzcGVjaWVzX2Rlc2MiLCJ1dWlkIiwiZ2V0X2Rlc2MiLCJ0YmwiLCJkX2NoYW4iLCJhY3RzRGVzY3IiLCJlbXB0eUFjdHMiLCJwbG90RGVzY3IiLCJ0cmFjZURlc2NyIiwidHJhY2VOb3RFbXB0eSIsImluaXRpYWxpemUiLCJhY3Rpdml0aWVzX2ZpbGUiLCJ0cmFjZV9maWxlIiwicGxvdFBhY2siLCJlbnYiLCJkZXNjJDAiLCJub0NvdW50ZXJzIiwibmJfciIsInBhY2siLCJ3YXJuaW5nX2J1ZmZlciIsImdvIiwiZmx1eCIsImRpbl9uYW1lIiwiZmx1eCQwIiwibGFzdCIsImskMCIsImhlYWQiLCJmaWxlbmFtZSIsImZvcm1hdCIsImlzX3RzdiIsImZkIiwicCQwIiwic3RlcCIsImQkMCIsInMkMSIsIm1peHR1cmUiLCJmaWxlJDEiLCJpbnB1dHNEZXNjIiwiZmx1c2hfd2FybmluZyIsImNsb3NlIiwiZXZlbnQkMCIsInBsb3QiLCJpbnB1dHMiLCJpbml0aWFsX2lucHV0cyIsImNvbmYiLCJpbml0IiwiaW5wdXRzX2Zvcm0iLCJpbnB1dF9tb2RpZmljYXRpb25zIiwibW9kcyIsImxvZ0ZpbGUiLCJ0cmFjZUZpbGUiLCJkb21haW5PdXRwdXRGaWxlIiwibWFyc2hhbGl6ZU91dEZpbGUiLCJ0bXBfdmFyX25hbWUiLCJwcmVwcm9jZXNzX2FzdCIsIndhcm5pbmciLCJrYXNpbV9hcmdzIiwiY2xpX2FyZ3MiLCJhc3QiLCJjZmxvd0ZpbGUiLCJmb3JtYXRDZmxvdyIsInN0b3J5X2NvbXByZXNzaW9uIiwic3ludGF4X3ZlcnNpb24iLCJrYXNpbV9hcmdzJDAiLCJpbml0aWFsTWl4IiwidmFyX292ZXJ3cml0ZSIsImFzdF9jb21waWxlZF9kYXRhIiwiY29tcGlsIiwiY29uZiQwIiwib3ZlcndyaXRlX3QwJDAiLCJvdmVyd3JpdGVfaW5pdCIsImdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIiwiZmlsZV9saXN0IiwiY29tcGlsaW5nX2Z1bmN0aW9uIiwiZ2V0X2FzdF9mcm9tX2NsaV9hcmdzIiwiZ2V0X3ByZXByb2Nlc3NlZF9hc3RfZnJvbV9jbGlfIiwiZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IiwiY29tcGlsZV9tb2RlX29uIiwicHJlcHJvY2Vzc2VkX2FzdCIsImluaXRfbCIsImhhc190cmFja2luZyIsImdldF9jb21waWxhdGlvbl9mcm9tX3BhY2siLCJpbml0X3RfZnJvbV9maWxlcyIsInBsb3RfcGVyaW9kJDAiLCJtYXhfZXZlbnQkMCIsImluaXRfZSIsIm1heF90aW1lIiwiaW5pdF90IiwiYSQwIiwicGxvdF9wZXJpb2QkMSIsIm1heF90aW1lJDAiLCJpbml0X3QkMCIsImNvdW50ZXIiLCJnZXRfY29tcGlsYXRpb25fZnJvbV9wcmVwcm9jZXMiLCJzdGgkMCIsImdldF9jb21waWxhdGlvbiIsIm1hcnNoYWxpemVkX2ZpbGUiLCJjb21waWxhdGlvbl9yZXN1bHQiLCJhbGdfb3ZlcndyaXRlIiwib3ZlcndyaXRlX3QwIiwicmF3X2luaXRzIiwiZSQwIiwiZCQxIiwiY2xvc2VfY2VsbF9zeW1ib2wiLCJvcGVuX2NlbGxfc3ltYm9sIiwiY29tcGFyZSIsImJyZWFrYWJsZSIsIngiLCJnZXRfZW5jb2RpbmdfZm9ybWF0IiwidCIsImR1bW15X2h0bWxfbG9nZ2VyIiwiZHVtbXlfdHh0X2xvZ2dlciIsImR1bXBfY2xlYW5fc3RyaW5nIiwiZm10IiwiYSIsIm9wdCIsImxvZ2dlciIsInN0aCIsImZwcmludG5ld2xpbmUiLCJmcHJpbnRuZXdsaW5lJDAiLCJiIiwiZm10X2J1ZmZlciQwIiwic3RyIiwic3RyJDAiLCJidWZmZXIiLCJmbXRfYnVmZmVyIiwicyIsInByaW50X2JyZWFrYWJsZV9zcGFjZSIsInByaW50X2JyZWFrYWJsZV9oaW50IiwiZHVtcF90b2tlbiIsImYiLCJwcmludF9uZXdsaW5lIiwiYmYiLCJiZiQwIiwiYmYkMSIsImJmJDIiLCJwcmludF9jZWxsIiwiY2xvc2VfY2VsbF9zeW1ib2wkMCIsIm9wZW5fY2VsbF9zeW1ib2wkMCIsImZsdXNoX2xvZ2dlciIsImNsb3NlX2xvZ2dlciIsInByaW50X3ByZWFtYmxlIiwib3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIiwiY2hhbm5lbCIsIm1vZGUiLCJmb3JtYXR0ZXIiLCJvcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciIsIm9wZW5fY2lyY3VsYXJfYnVmZmVyIiwic3RoJDAiLCJzaXplIiwib3Blbl9pbmZpbml0ZV9idWZmZXIiLCJvcGVuX3JvdyIsImNsb3NlX3JvdyIsImZvcm1hdHRlcl9vZl9sb2dnZXIiLCJyZWRpcmVjdCIsInByaW50X2FzX2xvZ2dlciIsImZsdXNoX2J1ZmZlciIsImZsdXNoX2FuZF9jbGVhbiIsImZwcmludGYiLCJjaGFubmVsX29mX2xvZ2dlciIsInByaW50X2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWUiLCJzaXRlX25hbWUiLCJiaW5kaW5nX3R5cGVfc3ltYm9sIiwiZHVtcF9qc29uIiwianNvbiIsImNoYW5uZWxfb3B0IiwibGluZV90b19qc29uIiwibGluZSIsImxpbmVfb2ZfanNvbiIsImdlbl9pdGVyIiwiaXRlciIsImxpc3QiLCJvdXRwdXQiLCJvZl9qc29uIiwidG9fanNvbiIsInN0cmluZ19vZl91bl9vcCIsIm9wIiwiZm9ybWF0Iiwic3RyaW5nX29mX2NvbXBhcmVfb3AiLCJzdHJpbmdfb2ZfYmluX29wIiwic3RyaW5nX29mX2Jpbl9ib29sX29wIiwic3RyaW5nX29mX3VuX2Jvb2xfb3AiLCJsaWZ0IiwidCIsImV4dGVuZF9sb2dnZXIiLCJsb2dnZXIiLCJyZWZyZXNoX2lkIiwiYWRkX25vZGUiLCJzIiwiZCIsImFkZF9lZGdlIiwiczEiLCJzMiIsIm1hcCIsImwiLCJvbGRfbGlzdCIsImdyYXBoX29mX2xvZ2dlciIsImdldF9lZGdlX21hcCIsImdldF9ub2RlcyIsImludF9vZl9zdHJpbmdfaWQiLCJzdHJpbmciLCJhIiwiaSIsImR1bW15X25vZGUiLCJkdW1teV9lZGdlIiwiaHRtbF9kZXBzIiwiZG90X2NvbG9yX2VuY29kaW5nIiwieCIsInN2Z19jb2xvcl9lbmNvZGluZyIsImlzX25vX25vZGVfYXR0cmlidXRlcyIsIm5vZGVfYXR0cmlidXRlIiwiYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCIsImJvb2wiLCJiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCIsInNoYWxsX0lfZG9faXQiLCJmb3JtYXQiLCJmaWx0ZXJfaW4iLCJmaWx0ZXJfb3V0IiwiYjEiLCJwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyIsImYiLCJ0aXRsZSIsInByaW50X2dyYXBoX3ByZWFtYmxlIiwib3B0Iiwic3RoIiwic3RoJDAiLCJzdGgkMSIsImhlYWRlciIsImZfb3B0IiwiZGVwZW5kZW5jeSIsImZfb3B0JDAiLCJmJDAiLCJzdHJpbmdfb2ZfYXJyb3dfaW5faHRtbCIsInN0eWxlIiwibWVyZ2UiLCJzJDAiLCJwcmludF9mb290X3NoYXJlZF9odG1sX2pzIiwibGlzdCIsImlkMiIsImlkMSIsImxpc3QkMCIsImlkMV9pbnQiLCJpZDJfaW50IiwiYXR0cmlidXRlcyIsIm9wdGlvbl9saXN0Iiwib3B0aW9uIiwicyQxIiwicyQyIiwicyQzIiwicyQ0IiwicyQ1IiwicyQ2IiwianNvbiIsInMkNyIsInMkOCIsInAiLCJhdHRyaWJ1dGVzJDAiLCJzdHJpbmdfbGlzdCIsImZtdCIsInNfb3B0Iiwic19vcHQkMCIsImJvb2wkMCIsImNvbG9yIiwiYm9vbCQxIiwiYm9vbCQyIiwiYm9vbCQzIiwicHJpbnRfZ3JhcGhfZm9vdCIsIm5vZGVzIiwiZWRnZXMiLCJzZXAiLCJiIiwib3B0aW9ucyIsImNvbG9yX3ZhbHVlIiwicHJpbnRfY29tbWVudCIsIm9wZW5fYXNzbyIsImNsb3NlX2Fzc28iLCJwcmludF9hc3NvIiwic3RyaW5nMSIsInN0cmluZzIiLCJzaGFwZV9pbl9kb3QiLCJzaGFwZSIsInN0cmluZ19vbmVfb2ZfbGluZXN0eWxlX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCIsInN0cmluZ19vZl9hcnJvd190YWlsX2luX2RvdCIsInByaW50X25vZGUiLCJpZCIsImRpcmVjdGl2ZXMiLCJpJDAiLCJpZF9pbnQiLCJzdHJpbmckMCIsInN0cmluZyQxIiwic2hhcGUkMCIsInN0cmluZyQyIiwic2hhcGUkMSIsImkkMSIsImkkMiIsImJvb2wkNCIsImJvb2wkNSIsImxhYmVsIiwicHJpbnRfZWRnZSIsInByZWZpeCIsImVkZ2VfYXR0cmlidXRlIiwiZGlyZWN0aW9uIiwiYXJyb3ciLCJwcmludF9vbmVfdG9fbl9yZWxhdGlvbiIsImlkbGlzdCIsInN0eWxlX29uZSIsInN0eWxlX24iLCJmaWN0aXRpb3VzIiwiZGlyZWN0aXZlc19maWN0IiwiZGlyZWN0aXZlc19vbmUiLCJkaXJlY3RpdmVzX24iLCJoZWFka2luZF90b19qc29uIiwiaGVhZGtpbmQiLCJjb2xvcl90b19qc29uIiwiZGlyZWN0aXZlX3RvX2pzb24iLCJjb2xvciQwIiwiaW50JDAiLCJpbnQkMSIsImhlYWRraW5kJDAiLCJsaW5lc3R5bGUiLCJkaXJlY3RpdmVzX3RvX2pzb24iLCJub2RlX3RvX2pzb24iLCJlZGdlX3RvX2pzb24iLCJub2Rlc190b19qc29uIiwiZWRnZXNfdG9fanNvbiIsInRvX2pzb24iLCJncmFwaCIsImhlYWRraW5kX29mX2pzb24iLCJjb2xvcl9vZl9qc29uIiwiZGlyZWN0aXZlX29mX2pzb24iLCJwb3NfbGlzdCIsImNvbnRleHR1YWxfaGVscCIsImRpcmVjdGl2ZXNfb2ZfanNvbiIsImlkX29mX2pzb24iLCJub2RlX29mX2pzb24iLCJlZGdlX29mX2pzb24iLCJub2Rlc19vZl9qc29uIiwiZWRnZXNfb2ZfanNvbiIsIm9mX2pzb24iLCJzeW1ib2xfdGFibGVfVjMiLCJzeW1ib2xfdGFibGVfVjQiLCJub3RfYnJlYWthYmxlIiwic3ltYm9sX3RhYmxlIiwic3ltYm9sX3RhYmxlX1YzX2xpZ2h0Iiwic3ltYm9sX3RhYmxlX2RvdG5ldCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WMyIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WM19saSIsInVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZSIsIndpdGhfZG90X2FuZF9wbHVzIiwiZW1wdHlfZW5naW5lX3N0YXRlIiwid2FrZV91cF9tYXAiLCJlcnJvciIsImVuZ2luZV9zdGF0ZSIsImVtcHR5X2Vycm9yX2hhbmRsZXIiLCJleG5fdG9fanNvbiIsIngiLCJ4JDAiLCJ4JDEiLCJ4JDIiLCJjIiwiYiIsImEiLCJjJDAiLCJiJDAiLCJhJDAiLCJ4JDMiLCJ4JDQiLCJjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24iLCJ4JDUiLCJ1bmNhdWdodF9leGNlcHRpb25fdG9fanNvbiIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwiZXhuX29mX2pzb24iLCJqc29uIiwibCIsImwkMCIsInVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIiwiY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIiwiYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uIiwiZmlsZV9uYW1lIiwibWVzc2FnZSIsImV4biIsImJ1aWxkX2NhdWdodF9leGNlcHRpb24iLCJzdGFjayIsInJhaXNlX2V4Y2VwdGlvbiIsImtleSIsInBwX2V4Y2VwdGlvbiIsImYiLCJleGMiLCJ5IiwiZXIiLCJ5JDAiLCJlciQwIiwieCQ2IiwicHBfdW5jYXVnaHQiLCJ4JDciLCJwcF9jYXVnaHQiLCJ3aXRoX3NwYWNlIiwic3RyaW5nbGlzdF9vZl9leGNlcHRpb24iLCJzdHJpbmdsaXN0X29mX2NhdWdodCIsInN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQiLCJzb2wiLCJzdHJpbmciLCJzdHJpbmdsaXN0X29mX2NhdWdodF9saWdodCIsInN0YWNrJDAiLCJ0b19qc29uIiwibWV0aG9kX2hhbmRsZXIiLCJvZl9qc29uIiwiY2F1Z2h0X3RvX3VpIiwidW5jYXVnaHRfdG9fdWkiLCJhZGRfdW5jYXVnaHRfZXJyb3IiLCJ0b191aSIsImVycm9yJDAiLCJnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IiwiZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdF90b191IiwiZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IiwiZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvIiwiaXNfZW1wdHlfZXJyb3JfaGFuZGxlciIsImRhdGUiLCJ2ZXJzaW9uIiwib3V0cHV0X2RpcmVjdG9yeSIsIm91dHB1dF9jbV9kaXJlY3RvcnkiLCJvdXRwdXRfaW1fZGlyZWN0b3J5Iiwib3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSIsInVuc2FmZSIsInRyYWNlIiwic3ludGF4X3ZlcnNpb24iLCJkdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2MiLCJsb2ciLCJmb3JtYXR0ZXIiLCJmaWxlIiwibGlua19tb2RlIiwiZG9faW5mbHVlbmNlX21hcCIsInJ1bGVfc2hhcGUiLCJydWxlX2NvbG9yIiwidmFyaWFibGVfc2hhcGUiLCJ2YXJpYWJsZV9jb2xvciIsImNlbnRlcl9jb2xvciIsIndha2VfdXBfY29sb3IiLCJpbmhpYml0aW9uX2NvbG9yIiwid2FrZV91cF9hcnJvdyIsImluaGliaXRpb25fYXJyb3ciLCJpbmZsdWVuY2VfbWFwX2ZpbGUiLCJpbmZsdWVuY2VfbWFwX2Zvcm1hdCIsInByb21wdF9mdWxsX3Zhcl9kZWYiLCJwcm9tcHRfZnVsbF9ydWxlX2RlZiIsIm1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kbyIsImRvX2NvbnRhY3RfbWFwIiwiZG9fc2NjIiwicHVyZV9jb250YWN0IiwiY29udGFjdF9tYXBfZmlsZSIsImNvbnRhY3RfbWFwX2Zvcm1hdCIsImJpbmRpbmdfc2l0ZV9zaGFwZSIsImJpbmRpbmdfc2l0ZV9jb2xvciIsImludGVybmFsX3NpdGVfc2hhcGUiLCJpbnRlcm5hbF9zaXRlX2NvbG9yIiwiY291bnRlcl9zaXRlX3NoYXBlIiwiY291bnRlcl9zaXRlX2NvbG9yIiwiYWdlbnRfc2hhcGVfYXJyYXkiLCJhZ2VudF9jb2xvcl9hcnJheSIsImFnZW50X3NoYXBlX2RlZiIsImFnZW50X2NvbG9yX2RlZiIsImxpbmtfY29sb3IiLCJpbmZsdWVuY2VfY29sb3IiLCJpbmZsdWVuY2VfYXJyb3ciLCJkb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiIsImRvX3N0b2NoYXN0aWNfZmxvd19vZl9pbmZvcm1hdCIsImRvX3NpdGVfZGVwZW5kZW5jaWVzIiwiZHVtcF9zaXRlX2RlcGVuZGVuY2llcyIsImRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsInZlcmJvc2l0eV9sZXZlbF9mb3JfcmVhY2hhYmlsaSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3JlcyIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdiIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YSIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5biIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZiIsImR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3dsIiwiaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlIiwiaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0Iiwic21hc2hfcmVsYXRpb25zIiwidXNlX25hdHVyYWxfbGFuZ3VhZ2UiLCJjb21wdXRlX2xvY2FsX3RyYWNlcyIsInNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZSIsInVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsXyIsImFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyIsImFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyIsImRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZyIsImxvY2FsX3RyYWNlX3ByZWZpeCIsImxvY2FsX3RyYWNlX2Zvcm1hdCIsImNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyIsIndpdGhfdmlld3NfYW5hbHlzaXMiLCJ3aXRoX3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2kiLCJ3aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIiwid2l0aF9keW5hbWljX2NvbnRhY3RfbWFwIiwid2l0aF9jb3VudGVyc19hbmFseXNpcyIsImNvdW50ZXJfYW5hbHlzaXNfZG9tYWluIiwidmlld19hY2N1cmFjeV9sZXZlbCIsImluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwiLCJjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCIsInNjY19hY2N1cmFjeV9sZXZlbCIsImRvX3N5bW1ldHJpZXMiLCJyYXRlX2NvbnZlbnRpb24iLCJwcmludF9lZmZpY2llbmN5IiwiYmFja2Rvb3JfbmJyX29mX3NjYyIsImJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MiLCJiYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMiLCJiYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMiLCJiYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyIsImJhY2tkb29yX25icl9vZl9ydWxlcyIsImJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzIiwiYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uIiwiYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2IiwiYmFja2Rvb3JfdGltaW5nIiwiYmFja2Rvb3JfZmlsZSIsImJhY2tkb29yX2RpcmVjdG9yeSIsImNzdF90ZXgiLCJjc3RfaHRtbCQwIiwiYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tIiwiZXh0Iiwic2l6ZV9hIiwic2l6ZV9leHQiLCJvcGVuX291dCIsImQiLCJvcGVuX2FwcGVuZCIsImNvbXBvc2UiLCJnIiwiZXh0X2Zvcm1hdCIsImZldGNoX2xldmVsX2dlbiIsInMiLCJyIiwiZmV0Y2hfZ3JhcGhfZm9ybWF0IiwiZmV0Y2hfYWNjdXJhY3lfbGV2ZWwiLCJnZXRfc3ludGF4X3ZlcnNpb24iLCJyZWFjaGFiaWxpdHlfbWFwXzAiLCJyZWFjaGFiaWxpdHlfbWFwXzEiLCJyZWFjaGFiaWxpdHlfbWFwXzIiLCJyZWFjaGFiaWxpdHlfbWFwXzMiLCJyZWFjaGFiaWxpdHlfbWFwXzQiLCJnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMiLCJjYWNoZSIsImdldF9wYXJhbWV0ZXJzIiwib3B0IiwiY2FsbGVkX2Zyb20iLCJzdGgiLCJodG1sX21vZGUiLCJjb21tYW5kJDAiLCJjaGFubmVsX2JhY2tkb29yJDAiLCJjaGFubmVsX2VyciQwIiwiY2hhbm5lbCQxIiwiY2hhbm5lbCIsImNoYW5uZWwkMCIsImNvbW1hbmQkMiIsInJlYWNoYWJpbGl0eSQwIiwicmVhY2hhYmlsaXR5IiwibWFwIiwiYSQxIiwiZm10IiwiY2hhbm5lbCQyIiwiZHVtbXlfcGFyYW1ldGVycyIsInAiLCJwJDAiLCJnZXRfYm91bmRfc3ltYm9sXzEiLCJzeW1ib2wiLCJnZXRfb3Blbl9iaW5kaW5nX3N0YXRlXzEiLCJnZXRfY2xvc2VfYmluZGluZ19zdGF0ZV8xIiwiZ2V0X21pc3NpbmdfYmluZGluZ19zdGF0ZV8xIiwiZ2V0X2xpbmtfdG9fYW55XzEiLCJnZXRfbGlua190b19zb21lXzEiLCJnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzEiLCJnZXRfb3Blbl9pbnRlcm5hbF9zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzEiLCJnZXRfZnJlZV8xIiwiZ2V0X2F0X3N5bWJvbF8xIiwiZ2V0X2FnZW50X29wZW5fc3ltYm9sXzEiLCJnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sXzEiLCJnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xIiwiZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzEiLCJnZXRfYnR5cGVfc2VwX3N5bWJvbF8xIiwiZ2V0X3NpdGVfc2VwX2NvbW1hX3N5bWJvbF8xIiwiZ2V0X2dob3N0X2FnZW50X3N5bWJvbF8xIiwiZ2V0X2RvX3dlX3Nob3dfZ2hvc3RfMSIsImdldF91bmlfYXJyb3dfc3ltYm9sXzEiLCJnZXRfcmV2X2Fycm93X3N5bWJvbF8xIiwiZ2V0X2JpX2Fycm93X3N5bWJvbF8xIiwiZ2V0X2JpX2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfdW5pX2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sXzEiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXYiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXYiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2kiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2kiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXQiLCJnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMSIsImdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMSIsImdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bSIsImdldF9vcGVuX2NvdW50ZXJfc3RhdGVfMSIsImdldF9vcGVuX2NvdW50ZXJjZXFfMSIsImdldF9vcGVuX2NvdW50ZXJjdmFyXzEiLCJnZXRfb3Blbl9jb3VudGVyY2d0ZV8xIiwiZ2V0X29wZW5fY291bnRlcmRlbHRhXzEiLCJnZXRfb3Blbl9jb3VudGVydmFsXzEiLCJnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMSIsImdldF9jbG9zZV9jb3VudGVyY3Zhcl8xIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlXzEiLCJnZXRfY2xvc2VfY291bnRlcmRlbHRhXzEiLCJnZXRfY2xvc2VfY291bnRlcnZhbF8xIiwiZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzEiLCJnZXRfY291bnRlcmN2YXJfc3ltYm9sXzEiLCJnZXRfY291bnRlcmNndGVfc3ltYm9sXzEiLCJnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2xfMSIsImdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMSIsImdldF9jb3VudGVydmFsX3N5bWJvbF8xIiwiZ2V0X2ltX2Zvcm1hdF8xIiwiaW5mbHVlbmNlIiwiZ2V0X2ltX2ZpbGVfMSIsImdldF9pbV9kaXJlY3RvcnlfMSIsImdldF9ydWxlX3NoYXBlXzEiLCJnZXRfcnVsZV9jb2xvcl8xIiwiZ2V0X3ZhcmlhYmxlX3NoYXBlXzEiLCJnZXRfdmFyaWFibGVfY29sb3JfMSIsImdldF93YWtlX3VwX2NvbG9yXzEiLCJnZXRfaW5oaWJpdGlvbl9jb2xvcl8xIiwiZ2V0X3dha2VfdXBfYXJyb3dfMSIsImdldF9pbmhpYml0aW9uX2Fycm93XzEiLCJnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xIiwiZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmXzEiLCJnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV8xIiwiZ2V0X3B1cmVfY29udGFjdF8xIiwiY20iLCJnZXRfY21fZm9ybWF0XzEiLCJnZXRfY21fZmlsZV8xIiwiZ2V0X2NtX2RpcmVjdG9yeV8xIiwiZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xIiwiZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xIiwiZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMSIsImdldF9pbnRlcm5hbF9zaXRlX2NvbG9yXzEiLCJnZXRfY291bnRlcl9zaXRlX3NoYXBlXzEiLCJnZXRfY291bnRlcl9zaXRlX2NvbG9yXzEiLCJnZXRfYWdlbnRfc2hhcGVfYXJyYXlfMSIsImdldF9hZ2VudF9jb2xvcl9hcnJheV8xIiwiZ2V0X2FnZW50X3NoYXBlX2RlZl8xIiwiZ2V0X2FnZW50X2NvbG9yX2RlZl8xIiwiZ2V0X2xpbmtfY29sb3JfMSIsImdldF9pbmZsdWVuY2VfY29sb3JfMSIsImdldF9pbmZsdWVuY2VfYXJyb3dfMSIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQwIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDEiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMiIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQzIiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDQiLCJnZXRfc21hc2hfcmVsYXRpb25zXzEiLCJnZXRfaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV8iLCJnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF8iLCJnZXRfcG9zdF9wcm9jZXNzaW5nXzEiLCJnZXRfYmFja2VuZF9tb2RlXzEiLCJnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzEiLCJnZXRfY29tcHV0ZV9sb2NhbF90cmFjZXNfMSIsImdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCIsImdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xIiwiZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90IiwiZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvIiwiZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xIiwiZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xIiwiZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xIiwiZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xIiwiZ2V0X3ZpZXdfYW5hbHlzaXNfMSIsImdldF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyIsImdldF9wYXJhbGxlbF9ib25kc19hbmFseXNpc18xIiwiZ2V0X2R5bmFtaWNfY29udGFjdF9tYXBfMSIsImdldF9jb3VudGVyc19hbmFseXNpc18xIiwiZ2V0X2NvdW50ZXJzX2RvbWFpbl8xIiwiZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xIiwibWFyc2hhbGlzYWJsZSIsImdldF9yYXRlX2NvbnZlbnRpb25fMSIsImdldF9lbXB0eV9oYXNodGJsX3NpemVfMSIsImdldF9zeW1ib2xzXzEiLCJnZXRfZmlsZV8xIiwiZ2V0X2luZmx1ZW5jZV9tYXBfMSIsImdldF9jb250YWN0X21hcF8xIiwiZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMSIsImdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYSIsImdldF91bnNhZmVfMSIsImdldF90cmFjZV8xIiwiZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5IiwiZ2V0X3ByZWZpeF8xIiwiZ2V0X2NhbGxfc3RhY2tfMSIsImdldF9saW5rX21vZGVfMSIsImdldF9rYXNhX3N0YXRlXzEiLCJnZXRfZG9fY29udGFjdF9tYXBfMSIsImdldF9zeW50YXhfdmVyc2lvbl8xIiwiZ2V0X2RvX3NjY18xIiwiZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMSIsImdldF9kb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiIsImdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mbyIsImdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xIiwiZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXNfMSIsImdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSIsImdldF9pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldiIsImdldF9jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCIsImdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMSIsImdldF92aWV3X2FjY3VyYWN5X2xldmVsXzEiLCJnZXRfbGF1bmNoaW5nX2RhdGVfMSIsInQiLCJnbXQiLCJnZXRfc2hvcnRfdmVyc2lvbl8xIiwiZ2V0X2Z1bGxfdmVyc2lvbl8xIiwiZ2V0X2xhdW5jaGVkX3doZXJlXzEiLCJnZXRfY29tbWFuZF9saW5lXzEiLCJnZXRfbWFyc2hhbGlzYWJsZSIsInBhcmFtZXRlciIsImdldF9sb2dnZXIiLCJnZXRfbG9nZ2VyX2VyciIsImdldF9sb2dnZXJfYmFja2Rvb3IiLCJ1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCIsImdldF9jb21tYW5kX2xpbmUiLCJnZXRfc2hvcnRfdmVyc2lvbiIsImdldF9sYXVuY2hlZF93aGVyZSIsImdldF9mdWxsX3ZlcnNpb24iLCJnZXRfbGF1bmNoaW5nX2RhdGUiLCJnZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUiLCJwYXJhbWV0ZXJzIiwiZ2V0X2RvX2NvbnRhY3RfbWFwIiwiZ2V0X3N5bnRheF92ZXJzaW9uJDAiLCJnZXRfZG9fc2NjIiwiZ2V0X2RvX2luZmx1ZW5jZV9tYXAiLCJnZXRfZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24kMCIsImdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mbyQwIiwiZ2V0X2RvX3NpdGVfZGVwZW5kZW5jaWVzIiwiZ2V0X2R1bXBfc2l0ZV9kZXBlbmRlbmNpZXMiLCJnZXRfc3ltYm9scyIsImdldF9maWxlIiwiZ2V0X2NvbXB1dGVfc3ltbWV0cmllcyIsImdldF9yYXRlX2NvbnZlbnRpb24iLCJnZXRfaW5mbHVlbmNlX21hcCIsImdldF9jb250YWN0X21hcCIsImdldF9yZWFjaGFiaWxpdHlfbWFwIiwiZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhJDAiLCJnZXRfdW5zYWZlIiwiZ2V0X3RyYWNlIiwiZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5JDAiLCJnZXRfcHJlZml4IiwiZ2V0X2NhbGxfc3RhY2siLCJnZXRfbGlua19tb2RlIiwiZ2V0X2NvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsJDAiLCJnZXRfc2NjX2FjY3VyYWN5X2xldmVsIiwiZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2JDAiLCJnZXRfdmlld19hY2N1cmFjeV9sZXZlbCIsImdldF9lbXB0eV9oYXNodGJsX3NpemUiLCJ1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWUiLCJ1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQiLCJ1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCIsInVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwXyIsInVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbCIsImdldF9ib3VuZF9zeW1ib2wiLCJnZXRfb3Blbl9iaW5kaW5nX3N0YXRlIiwiZ2V0X2Nsb3NlX2JpbmRpbmdfc3RhdGUiLCJnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlIiwiZ2V0X2ludGVybmFsX3N0YXRlX3N5bWJvbCIsImdldF9vcGVuX2ludGVybmFsX3N0YXRlIiwiZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlIiwiZ2V0X2xpbmtfdG9fYW55IiwiZ2V0X2xpbmtfdG9fc29tZSIsImdldF9mcmVlX3N5bWJvbCIsImdldF9hdF9zeW1ib2wiLCJnZXRfYWdlbnRfb3Blbl9zeW1ib2wiLCJnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9jb21tYV9zeW1ib2wiLCJnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sIiwiZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sIiwiZ2V0X2J0eXBlX3NlcF9zeW1ib2wiLCJnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sIiwiZ2V0X2dob3N0X2FnZW50X3N5bWJvbCIsImdldF9kb193ZV9zaG93X2dob3N0IiwiZ2V0X3VuaV9hcnJvd19zeW1ib2wiLCJnZXRfcmV2X2Fycm93X3N5bWJvbCIsImdldF9iaV9hcnJvd19zeW1ib2wiLCJnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2wiLCJnZXRfcmV2X2Fycm93X25vX3BvbHlfc3ltYm9sIiwiZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbCIsImdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdiQwIiwiZ2V0X29wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2JDAiLCJnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHkkMCIsImdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaSQwIiwiZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9leGNsdXNpJDAiLCJnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXQkMCIsImdldF9wbHVzX2luZmluaXR5X3N5bWJvbCIsImdldF9taW51c19pbmZpbml0eV9zeW1ib2wiLCJnZXRfaW50X2ludGVydmFsX3NlcGFyYXRvcl9zeW0kMCIsImdldF9vcGVuX2NvdW50ZXJfc3RhdGUiLCJnZXRfb3Blbl9jb3VudGVyY2VxIiwiZ2V0X29wZW5fY291bnRlcmNndGUiLCJnZXRfb3Blbl9jb3VudGVyY3ZhciIsImdldF9vcGVuX2NvdW50ZXJkZWx0YSIsImdldF9vcGVuX2NvdW50ZXJ2YWwiLCJnZXRfY2xvc2VfY291bnRlcl9zdGF0ZSIsImdldF9jbG9zZV9jb3VudGVyY2VxIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjZ3RlIiwiZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyIiwiZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YSIsImdldF9jbG9zZV9jb3VudGVydmFsIiwiZ2V0X2NvdW50ZXJjZXFfc3ltYm9sIiwiZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbCIsImdldF9jb3VudGVyY3Zhcl9zeW1ib2wiLCJnZXRfY291bnRlcmRlbHRhcGx1c19zeW1ib2wiLCJnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sIiwiZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sIiwiZ2V0X2ltX2Zvcm1hdCIsImdldF9pbV9maWxlIiwiZ2V0X2ltX2RpcmVjdG9yeSIsImdldF9ydWxlX3NoYXBlIiwiZ2V0X3J1bGVfY29sb3IiLCJnZXRfdmFyaWFibGVfc2hhcGUiLCJnZXRfdmFyaWFibGVfY29sb3IiLCJnZXRfd2FrZV91cF9jb2xvciIsImdldF9pbmhpYml0aW9uX2NvbG9yIiwiZ2V0X3dha2VfdXBfYXJyb3ciLCJnZXRfaW5oaWJpdGlvbl9hcnJvdyIsImdldF9wcm9tcHRfZnVsbF92YXJfZGVmIiwiZ2V0X3Byb21wdF9mdWxsX3J1bGVfZGVmIiwiZ2V0X21ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0IiwiZ2V0X3B1cmVfY29udGFjdCIsImdldF9jbV9mb3JtYXQiLCJnZXRfY21fZmlsZSIsImdldF9jbV9kaXJlY3RvcnkiLCJnZXRfYmluZGluZ19zaXRlX3NoYXBlIiwiZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvciIsImdldF9pbnRlcm5hbF9zaXRlX3NoYXBlIiwiZ2V0X2ludGVybmFsX3NpdGVfY29sb3IiLCJnZXRfY291bnRlcl9zaXRlX3NoYXBlIiwiZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvciIsImdldF9hZ2VudF9zaGFwZV9hcnJheSIsImdldF9hZ2VudF9jb2xvcl9hcnJheSIsImdldF9hZ2VudF9zaGFwZV9kZWYiLCJnZXRfYWdlbnRfY29sb3JfZGVmIiwiZ2V0X2xpbmtfY29sb3IiLCJnZXRfaW5mbHVlbmNlX2NvbG9yIiwiZ2V0X2luZmx1ZW5jZV9hcnJvdyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ1IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDYiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkNyIsImdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpcyQ4IiwiZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzJDkiLCJnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXMkMTAiLCJnZXRfcG9zdF9wcm9jZXNzaW5nIiwiZ2V0X2JhY2tlbmRfbW9kZSIsImdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tXyQwIiwiZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfJDAiLCJnZXRfc21hc2hfcmVsYXRpb25zIiwiZ2V0X2xvY2FsX3RyYWNlX2Zvcm1hdCIsImdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyIsImdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdCQwIiwic2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0IiwiciQwIiwiciQxIiwic2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvIiwiZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90JDAiLCJnZXRfdXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG8kMCIsImdldF9pZ25vcmVfbG9jYWxfbG9zYW5nZXMiLCJnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzIiwiZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyIsImdldF9sb2NhbF90cmFjZV9wcmVmaXgiLCJnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IiwiZ2V0X3ZpZXdfYW5hbHlzaXMiLCJnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMiLCJnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMkMCIsImdldF9keW5hbWljX2NvbnRhY3RfbWFwIiwiZ2V0X2NvdW50ZXJzX2FuYWx5c2lzIiwiZ2V0X2NvdW50ZXJzX2RvbWFpbiIsImdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMiLCJzZXRfcHJlZml4XzEiLCJwcmVmaXgiLCJzZXRfY2FsbF9zdGFja18xIiwiY2FsbF9zdGFjayIsInNldF90cmFjZV8xIiwiYm9vbCIsInVwZ3JhZGVfdG9fbWFyc2hhbGlzYWJsZSIsInNldF9wcmVmaXgiLCJzZXRfY2FsbF9zdGFjayIsInNldF90cmFjZSIsInVwZGF0ZV9wcmVmaXgiLCJzdWZmaXgiLCJ1cGRhdGVfY2FsbF9zdGFjayIsIm5hbWUiLCJyZXBfYm9vbCIsIm9wZW5faW5mbHVlbmNlX21hcF9maWxlIiwibWF0Y2gkMSIsImZvcm1hdCIsImxvZ2dlciIsIm9wZW5fY29udGFjdF9tYXBfZmlsZSIsImxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubCIsImdldF9jYWxsZWRfZnJvbSIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzEiLCJiYWNrZG9vcnMiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkiLCJnZXRfYmFja2Rvb3JfdGltaW5nXzEiLCJnZXRfYmFja2Rvb3JfZmlsZV8xIiwiZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIiwiZ2V0X2JhY2tkb29ycyIsImdldF9iYWNrZG9vcl9uYnJfb2Zfc2NjXzIiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludCQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhJDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMkMCIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyQwIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18yIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ub25fd2Vha2x5JDAiLCJnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGgkMCIsImdldF9iYWNrZG9vcl90aW1pbmdfMiIsImdldF9iYWNrZG9vcl9maWxlXzIiLCJnZXRfYmFja2Rvb3JfZGlyZWN0b3J5XzIiLCJnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnQkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYSQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9zY2MiLCJnZXRfYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3MkMSIsImdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlcyIsImdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyQxIiwiZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoJDEiLCJnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHkkMSIsImdldF9iYWNrZG9vcl90aW1pbmciLCJnZXRfYmFja2Rvb3JfZmlsZSIsImdldF9iYWNrZG9vcl9kaXJlY3RvcnkiLCJnZXRfcHJvZmlsZXIiLCJnZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciIsImdldF9rYXNhX3N0YXRlIiwic2V0X3ByaW50X2VmZmljaWVuY3kiLCJnZXRfcHJpbnRfZWZmaWNpZW5jeSIsInNldF9sb2dnZXIiLCJzYXZlX2Vycm9yX2xpc3QiLCJzYXZlX3Byb2dyZXNzX2JhciIsImJhciIsInJlc2V0X3Byb2dyZXNzX2JhciIsInNhdmVfY3VycmVudF9waGFzZV90aXRsZSIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJkZWZhdWx0JDAiLCJjb21iaW5lIiwibDEiLCJsMiIsImxpc3QiLCJhMSIsImEyIiwib3B0aW9ucyIsImdldF9vcHRpb24iLCJ0aXRsZSIsImlucHV0IiwiYnVpbGRfa2FzYV9wYXJhbWV0ZXJzIiwidF9jb21tb24iLCJkb3RfY29tbWVudCIsImRvdF90b19wZGYiLCJoZWFkIiwicSIsImhlYWRfaW5mbHVlbmNlX21hcF9pbl9kb3QiLCJoZWFkX2NvbnRhY3RfbWFwX2luX2RvdCIsIm91dHB1dCIsImFjdGlvbnMiLCJzeW50YXgiLCJ0cmFjZXMiLCJjb250YWN0X21hcCIsImluZmx1ZW5jZV9tYXAiLCJmbG93IiwiZGVidWciLCJlbXB0eV9lcnJvcl9oYW5kbGVyIiwiaXNfZW1wdHlfZXJyb3JfaGFuZGxlciIsIndhcm5fYXV4IiwicGFyYW1ldGVycyIsImVycm9yX2hhbmRsZXIiLCJ0b191aSIsImZpbGVfbmFtZSIsIm1lc3NhZ2UiLCJleG4iLCJkZWZhdWx0JDAiLCJ1bmNhdWdodCQwIiwiZGZ0IiwiZXJyb3IiLCJ1bmNhdWdodCIsInN0cmluZ2xpc3QiLCJ3YXJuX3dpdGhfZXhuIiwib3B0IiwibGluZSIsImZpbGUiLCJzdGgiLCJzdGgkMCIsInBvcyIsImxpYWlzb24iLCJzIiwicG9zJDAiLCJ3YXJuIiwiZmlsZV9saW5lIiwicHJpbnRfZm9yX0thU2ltIiwiaGFuZGxlcnMiLCJwYXJhbWV0ZXJzJDAiLCJjYXVnaHQiLCJwcmludCIsInByaW50X2Vycm9yc19saWdodF9mb3Jfa2FzaW0iLCJ3cmFwIiwic3RyaW5nIiwic3RyaW5nX29wdCIsImNoZWNrX3BvaW50IiwicGFyYW1ldGVyIiwiZXJyb3IkMCIsImVycm9yJDEiLCJmb3JfS2FTaW0iLCJmIiwibGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0iLCJhIiwiYiIsImxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2ZvciIsImMiLCJiJDAiLCJsaWZ0X2dlbmVyaWNfdGVybmFyeV9mb3JfS2FTaW0iLCJsaWZ0X2dlbl91bmFyeSIsImR1bXAiLCJvdXRwdXQiLCJsaWZ0X2dlbl9iaW5hcnkiLCJsaWZ0X2dlbl90ZXJuYXJ5IiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ191IiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iIiwibGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ190IiwibGlmdF93aXRob3V0X2xvZ2dpbmdfdW5hcnkiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ19iaW5hcnkiLCJsaWZ0X3dpdGhvdXRfbG9nZ2luZ190ZXJuYXJ5Iiwic3RyaW5nX29mX3N0ZXBfa2luZCIsIngiLCJpbnQkMCIsImludCQxIiwic3RyaW5nIiwiaW50JDIiLCJpbnQkMyIsImludCQ0IiwiaW50JDUiLCJzdHJpbmckMCIsInN0cmluZyQxIiwicHJpbnRfc3RlcF9raW5kIiwicGFyYW1ldGVycyIsInByaW50X3Rhc2siLCJwYXJhbWV0ZXIiLCJiIiwiYSIsImsiLCJsIiwib3V0cHV0IiwicSIsInQiLCJvdXRwdXQkMCIsImskMCIsImskMSIsIm91dHB1dCQxIiwib3V0cHV0JDIiLCJrJDIiLCJiJDAiLCJ0YWIiLCJpIiwiaSQwIiwidGltZSIsImNsb3NlX2xvZ2dlciIsImZsdXNoX2xvZ2dlciIsImlzX2R1bW15Iiwic3RlcF9raW5kIiwiYWRkX2V2ZW50IiwiZXJyb3IiLCJmIiwibG9nX2luZm8iLCJlcnJvciQwIiwibmV4dF9kZXB0aCIsImYkMCIsInRhc2siLCJ0ZXJtaW5hdGVkX3Rhc2siLCJjdXJyZW50X3Rhc2siLCJjbG9zZV9ldmVudCIsImxvZ19pbmZvJDAiLCJlcnJvciQxIiwiaW50ZXJydXB0ZWQiLCJlcnJvciQyIiwidGFpbCIsInRhaWwkMCIsInRlcm1pbmF0ZWRfdGFzayQwIiwibG9nX2luZm8kMSIsInNpemVfYWZ0ZXIiLCJnZW5fb3B0IiwiZ2VuIiwiZSIsImFkZF9ldmVudF9vcHQiLCJjbG9zZV9ldmVudF9vcHQiLCJwcm9wYWdhdGlvbl9sYWJlbHMiLCJwcm9wYWdhdGlvbl9jYXNlcyIsImNvcHkiLCJpbml0X2xvZ19pbmZvIiwibG9nX2luZm9fdG9fanNvbiIsImZsb2F0X29mX2pzb24iLCJpbnRfb2ZfanNvbiIsImxvZ19pbmZvX29mX2pzb24iLCJpbml0IiwiZHVtcF9zaG9ydF9sb2ciLCJyZXNldF9sb2ciLCJsb2ciLCJlbGxhcHNlZF90aW1lIiwiZWxsYXBzZWRfZ2xvYmFsX3RpbWUiLCJzZXRfdGltZSIsInNldF9zdGVwX3RpbWUiLCJzZXRfc3RvcnlfcmVzZWFyY2hfdGltZSIsInN0Iiwic2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uIiwic2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fIiwic2V0X2dyaWRfZ2VuZXJhdGlvbiIsInNldF9jYW5vbmljYWxpc2F0aW9uIiwiYWRkX2Nhc2UiLCJhZGRfbG9va19kb3duX2Nhc2UiLCJhZGRfbG9va191cF9jYXNlIiwiYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biIsImFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIiwiaW5jX2N1dCIsImluY19icmFuY2giLCJpbmNfbl9rYXNpbV9ldmVudHMiLCJpbmNfbl9vYnNfZXZlbnRzIiwiaW5jX25fc2lkZV9ldmVudHMiLCJpbmNfbl9pbml0X2V2ZW50cyIsImluY19jdXRfZXZlbnRzIiwiaW5jX2tfY3V0X2V2ZW50cyIsInJlc2V0X2N1dF9ldmVudHMiLCJpbmNfc2VsZWN0ZWRfZXZlbnRzIiwiaW5jX3JlbW92ZWRfZXZlbnRzIiwiZHVtcF9jb21wbGV0ZV9sb2ciLCJsb2dnZXIiLCJ0aWNrIiwic2V0X2dsb2JhbF9jdXQiLCJuIiwic2V0X3BzZXVkb19pbnYiLCJsaWZ0IiwiZiIsImVtcHR5IiwiaXNfZW1wdHkiLCJzaW5nbGV0b24iLCJpc19zaW5nbGV0b24iLCJhZGQiLCJhZGRfd2hlbl9ub3RfaW4iLCJwIiwiZSIsIngiLCJzIiwicyQwIiwiZSQwIiwicmVtb3ZlIiwidW5pb24iLCJkaXNqb2ludF91bmlvbiIsImludGVyIiwiZGlmZiIsIm1pbnVzIiwiY2FyZGluYWwiLCJtZW0iLCJleGlzdHMiLCJmaWx0ZXIiLCJmb3JfYWxsIiwicGFydGl0aW9uIiwiY29tcGFyZSIsImVxdWFsIiwic3Vic2V0IiwiaXRlciIsImZvbGQiLCJmb2xkX2ludiIsImVsZW1lbnRzIiwiY2hvb3NlIiwibWluX2VsdCIsIm1heF9lbHQiLCJlbXB0eSQwIiwiaXNfZW1wdHkkMCIsIm1pbl9lbHQkMCIsIm1lbSQwIiwiZmluZF9vcHRpb24iLCJhIiwiYiIsImMiLCJkIiwiZmluZF9kZWZhdWx0IiwiZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIiwiZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyIsImFkZCQwIiwib3ZlcndyaXRlIiwicGFyYW1ldGVyIiwiZXJyb3IiLCJtYXAiLCJib29sIiwiZXJyb3IkMCIsImFkZF9vcl9vdmVyd3JpdGUiLCJyZW1vdmUkMCIsInJlbW92ZV9vcl9ub3QiLCJ1cGRhdGUiLCJtYXAyIiwibWFwMnoiLCJmb2xkMnoiLCJmb2xkMiIsIml0ZXIyIiwiZyIsImgiLCJtYXBmIiwibWFwZyIsImZvbGQyX3NwYXJzZSIsIml0ZXIyX3NwYXJzZSIsImRpZmYkMCIsImRpZmZfcHJlZCIsIm1lcmdlIiwidW5pb24kMCIsImZvbGRfcmVzdHJpY3Rpb24iLCJmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ18iLCJpdGVyJDAiLCJmb2xkJDAiLCJtYXBpIiwiZm9yX2FsbCQwIiwiZmlsdGVyX29uZSIsImNvbXBhcmUkMCIsImVxdWFsJDAiLCJiaW5kaW5ncyIsInRvX2pzb24iLCJvZl9qc29uIiwicHJval9tYXAiLCJpZGVudGl0eV9lbHQiLCJrZXlfYSIsImRhdGFfYSIsIm1hcF9iIiwia2V5X2IiLCJvbGQiLCJtb25hZGljX3Byb2pfbWFwX2kiLCJlcnJvciQxIiwiZGF0YSIsImVycm9yJDIiLCJkYXRhJDAiLCJlcnJvciQzIiwibW9uYWRpY19wcm9qX21hcCIsInBhcnRpdGlvbl9zZXQiLCJzZXQiLCJuZXdzZXQiLCJtb25hZGljX3BhcnRpdGlvbl9zZXQiLCJwcm9qX3NldCIsInNldF9hIiwic2V0X2IiLCJtb25hZGljX3Byb2pfc2V0IiwicHJvajIiLCJrZXlfYyIsInN1Ym1hcCIsInN1Ym1hcCQwIiwicHJvajJfbW9uYWRpYyIsImhhbmRsZXIiLCJtdmJkdV9oYW5kbGVyIiwiaGFuZGxlciQwIiwiaGFuZGxlciQxIiwibXZiZHVfaGFuZGxlciQwIiwiaGFuZGxlciQyIiwiaGFuZGxlciQzIiwiaGFuZGxlciQ0IiwibG9jYWxfdHJhY2UiLCJwb29sIiwicHVzaCIsIm91dF9saXN0IiwiaW5fbGlzdCIsImFkZF9lbHQiLCJmb2xkX2xlZnQiLCJhY2MiLCJwcmludF93bCIsInBhcmFtZXRlcnMiLCJ3bCIsImkiLCJwb3AiLCJ4JDAiLCJ0bCIsInJlbW92ZV9lbHQiLCJ4JDEiLCJpbnZhbGlkX2FyZyIsIm1oIiwicG9zIiwiZXhuIiwidmFsdWUiLCJkaW1lbnNpb24iLCJrZXlfbGlzdCIsInBhcmVtZXRlcnMiLCJ0Iiwic2l6ZSIsImFycmF5IiwiayIsInNvbCIsInNvbCQwIiwiayQwIiwiayQxIiwiY3JlYXRlIiwiY3JlYXRlX2JpZ2dlc3Rfa2V5IiwiZXhwYW5kX2FuZF9jb3B5IiwiZGltZW5zaW9uJDAiLCJhcnJheSQwIiwia2V5IiwiaW5pdCIsImFycmF5JDIiLCJlcnJvciQ0IiwiYXJyYXkkMSIsImdldCIsImZyZWUiLCJ1bnNhZmVfZ2V0IiwicHJpbnQiLCJwcmludF9lbHQiLCJlbHQiLCJwYXJhbWV0ZXJzJDAiLCJpJDAiLCJyZW1hbmVudCQxIiwicmVtYW5lbnQiLCJyZW1hbmVudCQwIiwiZm9sZF93aXRoX2ludGVycnVwdGlvbiIsIm91dHB1dF9vcHQiLCJmb2xkMl9jb21tb24iLCJ0MSIsInQyIiwiYXJyYXkxIiwiYXJyYXkyIiwieDIiLCJ4MSIsInJlbWFuZW50JDQiLCJ4MiQwIiwicmVtYW5lbnQkMiIsImskMiIsInJlbWFuZW50JDMiLCJrJDMiLCJmcmVlX2FsbCIsIm9sZF9kaW1lbnNpb24iLCJtYXRyaXgiLCJtYXRyaXgkMCIsImV4dF9saXN0IiwibGlzdCIsInQyJDAiLCJsMiIsImtleTIiLCJkaW0iLCJqIiwib2xkX3VuZGVybHlpbmciLCJvbGRfdW5kZXJseWluZyQwIiwib2xkX3VuZGVybHlpbmckMSIsIm9sZF91bmRlcmx5aW5nJDIiLCJuZXdfdW5kZXJseWluZyIsIm5ld19tYXRyaXgiLCJ1bmRlcmx5aW5nIiwidW5kZXJseWluZyQwIiwicHJpbnRfb2YiLCJmb2xkX2dlbiIsImZvbGQxIiwiYiQwIiwiYyQwIiwiYmFzaWMiLCJuIiwia2V5cyIsIm5ld19hcnJheSIsIm5ld19iYXNpYyIsImltIiwiaW0kMCIsImwiLCJ0JDAiLCJvdXRwdXQkMSIsImxpc3QkMCIsIm91dHB1dCIsInRhaWwiLCJoZWFkIiwib3V0cHV0JDAiLCJmaW5kU2V0IiwicGFyZW50Iiwicm9vdCIsImwkMCIsImdldF9yZXByZXNlbnRlbnQiLCJ1bmlvbl9saXN0IiwidG9fdmlzaXQiLCJ0JDEiLCJ0b192aXNpdCQwIiwiYSQwIiwidG9fdmlzaXQkMSIsInQkMiIsInJvb3RfeCIsInJvb3RfeSIsInVuaW9uX2FycmF5IiwiaXRlcmkiLCJmc3Rfb3B0aW9uIiwic25kX29wdGlvbiIsImVzY2FwZV9sYWJlbF9pbl9kb3QiLCJtYWtlX2lkX2NvbXBhdGlibGVfd2l0aF9kb3RfZm8iLCJzdHJpbmciLCJ0YWIiLCJwb3MkMiIsImNoYXIkMCIsImxpc3RlX2NoYXIiLCJwb3MkMCIsImwkMSIsInBvcyQxIiwic29ydGVkX3BhcnRzX29mX2xpc3QiLCJhdXgiLCJzdWZmaXgiLCJsaXN0JDEiLCJzb3J0X2xpc3QiLCJyZWZpbmVkX2xpc3QiLCJrZXkkMCIsInJlZmluZWRfc29ydGVkX2xpc3QiLCJjb25zdF91bml0IiwiYXJyYXlfb2ZfbGlzdCIsInEiLCJhJDEiLCJ1bnNvbWUiLCJ0cmFjZSIsImludGVyX2xpc3QiLCJsMSQxIiwibDIkMSIsImwxIiwicmVwIiwibDIkMCIsImwxJDAiLCJyZXAkMCIsImxpc3RfMF9uIiwibGlzdF9taW51cyIsInEyIiwicTEiLCJxMSQwIiwicHJpbnRfY29tbWEiLCJjb21tYSIsImZldGNoX2FycmF5IiwiZGVmIiwiaSQxIiwiYXNzbyIsImludCQwIiwiZmluZF9vcHRpb25fbG9nX29uX3RoZV9mbHkiLCJub2RlX29mX2ludCIsImludF9vZl9ub2RlIiwibm9kZV9vZl9ub2RlX2xhYmVsIiwibm9kZV9saXN0IiwiZWRnZV9saXN0IiwibSIsIm1heF9ub2RlIiwibm9kZXMiLCJub2RlcyQwIiwiZWRnZXMiLCJlZGdlIiwibjIiLCJsYWJlbCIsIm4xIiwiZWRnZXMkMCIsImNvbXB1dGVfc2NjIiwibG93IiwicHJlIiwib25fc3RhY2siLCJuX3RvX3N0cmluZyIsImdyYXBoIiwib25fc3RhY2skMCIsInByZSQwIiwibG93JDAiLCJvbl9zdGFjayQxIiwicHJlJDEiLCJsb3ckMSIsImVycm9yJDgiLCJsb3ckNCIsImxvdyQ1IiwiZXJyb3IkOSIsImxvdyQ2IiwiZXJyb3IkMTQiLCJwcmUkNCIsInByZSQ1IiwiZXJyb3IkMTAiLCJwcmUkNiIsImVycm9yJDEzIiwib25fc3RhY2skNCIsIm9uX3N0YWNrJDUiLCJlcnJvciQxMSIsIm9uX3N0YWNrJDYiLCJlcnJvciQxMiIsInNjY19saXN0Iiwic3RhY2siLCJjb3VudGVyIiwidiIsInN0YWNrJDAiLCJjb3VudGVyJDAiLCJlZGdlc192IiwidyIsInByZV93Iiwic2NjX2xpc3QkMCIsImxvd192IiwibG93X3ciLCJlcnJvciQ1Iiwic3RhY2skMSIsInNjY19saXN0JDEiLCJjb3VudGVyJDEiLCJsb3ckMiIsImVycm9yJDYiLCJsb3dfdiQwIiwiZXJyb3IkNyIsInByZV93JDAiLCJsb3ckMyIsInByZV92Iiwib25fc3RhY2skMiIsInN0YWNrJDIiLCJjYyIsInN0YWNrJDMiLCJvbl9zdGFjayQzIiwiY2MkMCIsInByZSQyIiwicHJlJDMiLCJhZGRfYnJpZGdlcyIsInNjYyIsInN0cmluZ19vZl9uIiwic3RyaW5nX29mX2UiLCJicmlkZ2VzIiwic2NjJDAiLCJzY2MkMSIsInNjYyQ0Iiwibm9kZSIsIm4kMCIsInNjYyQyIiwibmkiLCJzY2NpIiwic2NjaSQwIiwic2NjaSQxIiwibmoiLCJzY2NqIiwic2NjaiQwIiwic2NjaiQxIiwibnN0cmluZ2kiLCJuc3RyaW5naiIsImJyaWRnZXMkMCIsInNjYyQzIiwiaW52YWxpZCIsIlBPUyIsIm1lc3NhZ2UiLCJpbnZhbGlkX2FyZ19ib29sIiwibWVtYmVyIiwiZGljdGlvbmFyeSIsImluX2NvbnN0cnVjdGlvbiIsInN0YWJpbGl6ZSIsImFzc28kMCIsInRyYW5zbGF0ZSIsImRpY3Rpb25hcnkkMCIsInN0YWJpbGl6ZWQiLCJhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QiLCJ1bmlxdWVseSIsImJ1aWxkIiwiZnJlc2giLCJhc3NvX2lkJDEiLCJoYXNoX3RhYmxlIiwiaGFzaCIsImRpY3Rpb25hcnkkMSIsImFzc29faWQiLCJhc3NvX2lkJDAiLCJhbGxvY2F0ZSIsImFhIiwiYWxsb2NhdGVfdW5pcXVlbHkiLCJhbGxvY2F0ZV9ib29sIiwidW5zYWZlX2FsbG9jYXRlIiwiZGljIiwiZGljJDAiLCJsYXN0X2VudHJ5IiwidGlja19zdG9yaWVzIiwiZiIsImNvbmYiLCJzYXZlX3Byb2dyZXNzX2JhciIsIm5fc3RvcmllcyIsImNvdW50ZXIiLCJsYXN0IiwiaW5pdCIsImMiLCJuIiwibmMiLCJubCIsIm4kMCIsImJhciIsIm4kMSIsInRpY2skMCIsInRpY2siLCJjb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3MiLCJjb25maWdfc21hbGxfZ3JhcGgiLCJjb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3IiLCJpZ25vcmVfZmxvd19mcm9tX291dGdvaW5nX3NpcGgiLCJjaGVja19tb2RlIiwic3dhcCIsImEiLCJiIiwiaWdub3JlX2ZzdCIsImNvbXBhcmVfc3VjYyIsInAiLCJsIiwibCQwIiwicSIsInN0cmljdGx5X2luY3JlYXNpbmciLCJzdHJpY3RseV9kZWNyZWFzaW5nIiwiY29uY2F0IiwicHJpbnRfbGlzdCIsImNoZWNrIiwiZm9ybSIsInN0cmluZyIsInJlcCIsImlzX3N0cmljdF9zdWJsaXN0IiwiYSQwIiwiYiQwIiwiaCIsInQiLCJoJDAiLCJ0JDAiLCJ0JDEiLCJpbnNlcnRfZWx0IiwiZSIsImRpZmZfbGlzdCIsImFjY3UiLCJhY2N1JDAiLCJjb21wYXJlX2Jvb2wiLCJkaWZmX2xpc3RfZGVjcmVhc2luZyIsIngiLCJ5IiwibWVyZ2VfbGlzdF9kZWNyZWFzaW5nIiwiY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIiwicGFyYW1ldGVyIiwiaGFuZGxlciIsImxvZ19pbmZvIiwiZXJyb3IiLCJldmVudCIsImNvbmZpZyIsInByZWMiLCJpc19vYnMiLCJlcnJfbG9nZ2VyIiwiaXNfb2JzJDAiLCJpIiwibWF4X2luZGV4Iiwibl9lZGdlcyIsImYkMCIsImNsb3NlIiwiY2xvc2VfdGljayIsInRpY2skMSIsImRvX3RpY2siLCJjbG9zZV90aWNrJDAiLCJkb190aWNrJDAiLCJzX3ByZWRfc3RhciIsIm1heF9zdWNjIiwic3VjYyIsInByZWQiLCJpc19sYXN0X3N1Y2Nfb2YiLCJhZGQiLCJub2RlIiwib2xkX2wiLCJsb2dfaW5mbyQwIiwiZXJyb3IkMCIsInNfcHJlZCIsImoiLCJsX3ByZWQiLCJwcmVkX3N0YXIiLCJuZXdfbCIsImRpZmYiLCJrIiwib3V0cHV0IiwiY2xvc3VyZV9ib3R0b21fdXAiLCJldmVudF9vcHQiLCJzIiwiZ3JhcGgiLCJjbG9zdXJlX3RvcF9kb3duIiwiZGVsdGEiLCJwcmVjJDAiLCJtZXJnZV90YWludHMiLCJsMSIsImwyIiwicSQwIiwidGFpbnRpbmciLCJvdXRwdXQkMSIsImRlbHRhJDAiLCJvdXRwdXQkMCIsImRlbHRhJDEiLCJuZXdfdGFpbnQiLCJ0YWludHMiLCJ0YWludCIsInNoaWZ0ZWRfdGFpbnRzIiwiZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93IiwibW9kZSIsIm0iLCJjbG9zdXJlX2NoZWNrIiwibG9nX2luZm8kMSIsImVycm9yJDEiLCJzJDAiLCJzJDEiLCJjbG9zdXJlIiwicmVkdWN0aW9uX3RvcF9kb3duIiwicHJlY19zdGFyIiwiZWlkIiwibmVpZ2giLCJvdXQiLCJ0b19yZW1vdmUiLCJsMSQwIiwibDIkMCIsImwxJDEiLCJjbXAiLCJsMSQyIiwic2V0IiwibG9nX2luZm8kMiIsImVycm9yJDIiLCJhdG9tX3Rlc3RlZCIsImF0b21fbW9kaWZpZWQiLCJlbXB0eV9jb25maWciLCJwcmludF9ldmVudF9raW5kIiwiZW52IiwiZGVidWdfcHJpbnRfY2F1c2FsIiwiZGVidWdfcHJpbnRfYXRvbSIsImRlYnVnX3ByaW50X2dyaWQiLCJnIiwic2l0ZV9pZCIsIm5vZGVfaWQiLCJlbXB0eV9ncmlkIiwiZ3JpZF9maW5kIiwiZ3JpZCIsInF1YXJrIiwiaXNfbGluayIsInZhIiwiZXZlbnRfbnVtYmVyIiwia2luZCIsImF0dCQwIiwiYXR0IiwiYXR0cmlidXRlIiwicGlkIiwiZWlkX2luaXQiLCJvbGQiLCJhZGRfYWN0aW9ucyIsImFjdGlvbnMiLCJncmlkJDAiLCJzaXRlIiwicSQxIiwic2l0ZTIiLCJzaXRlMSIsImdyaWQkNCIsInEkMiIsInNpdGUxJDAiLCJxJDMiLCJzaXRlJDAiLCJhZyIsIm5hIiwic2lncyIsImFnX2ludGYiLCJncmlkJDEiLCJhZyQwIiwibmEkMCIsInNpZ3MkMCIsImdyaWQkMiIsImFkZF90ZXN0cyIsInRlc3RzIiwicmVjb3JkIiwicmVjb3JkX29icyIsInNpZGVfZWZmZWN0cyIsInJlY29yZF9pbml0IiwibGJsIiwiY3V0Iiwib3B0IiwiYXR0cmlidXRlX2lkcyIsInN0aCIsIndpdGhfcmVkdWN0aW9uIiwiYXR0cmlidXRlX2lkcyQwIiwiY2ZnIiwiYXR0cmlidXRlX2lkcyQxIiwidHlwZV9pIiwic2l0ZV9pIiwibm9kZV9pIiwiYXR0cmlidXRlJDEiLCJhdHRyaWJ1dGUkMiIsImF0b20kMCIsImV2ZW50c19raW5kJDEiLCJwcmVkcyQwIiwicHJlY18xJDAiLCJsYXN0X3Rlc3RlZCQyIiwibGFzdF9tb2RpZiQxIiwiY29uZmlnJDMiLCJsYXN0X21vZGlmIiwibGFzdF90ZXN0ZWQiLCJhdHRyaWJ1dGUkMCIsImF0b20iLCJldmVudHNfa2luZCQwIiwicHJlZHMiLCJwcmVjXzEiLCJjb25maWckMCIsImV2ZW50c19raW5kIiwiY2ZsY3Rfc2V0IiwiY2ZsY3QiLCJjb25maWckMiIsImxhc3RfdGVzdGVkJDEiLCJwcmVkX2lkIiwicHJlZF9zZXQiLCJjb25maWckMSIsImxhc3RfdGVzdGVkJDAiLCJsYXN0X21vZGlmJDAiLCJjZmckMCIsInJlZHVjdGlvbiIsInJlZHVjdGlvbiQwIiwiaWRzX29mX2dyaWQiLCJrZXkiLCJwcmVjX3N0YXJfb2ZfY29uZmlnIiwiZW5yaWNoX2dyaWQiLCJjb25maWdfY2xvc3VyZSIsImtlZXBfbCIsInRvX2tlZXAiLCJpZHMiLCJwcmVjX2VpZHMiLCJlbWFwIiwiZCIsImQkMCIsImRlcHRoIiwiZGVwdGhfb2ZfZXZlbnQiLCJmb2xkX292ZXJfY2F1c2FsX3Bhc3Rfb2Zfb2JzIiwiY2hlY2tfY3JlYXRlX3F1YXJrcyIsImFpZCIsInNpdGVzIiwicXVhcmtzIiwiaW50ZXJuYWwiLCJjaGVja19tb2RpZmllZF9xdWFya3MiLCJtb2RpZiIsImNoZWNrX3Rlc3RlZF9xdWFya3MiLCJjaGVja19ldmVudF9xdWFya3MiLCJhc2l0ZSIsImFzaXRlJDAiLCJhaWQkMCIsImFzaXRlMiIsImFzaXRlMSIsInByZXR0eV9wcmludCIsImRvdEZvcm1hdCIsImNvbXByZXNzaW9uX3R5cGUiLCJsYWJlbCIsImdyaWRfbGlzdCIsImVycl9mbXQiLCJjb21wcmVzc2lvbl90eXBlJDAiLCJ6IiwibGlzdCIsIngkMCIsInN0b3J5X2xpc3QiLCJzdG9yeV9saXN0JDAiLCJjcHQiLCJzdG9yaWVzIiwiZW5yaWNoZWRfY29uZmlnIiwic3RlcHMiLCJpbmZvIiwiYXZfdCIsImdyaWRfc3RvcnkiLCJ0YmwiLCJhdHRfbHMiLCJkbWFwIiwic29ydGVkX2V2ZW50cyIsIm5vZGVfdG9fanNvbiIsImV2ZW50X2tpbmQiLCJzdHAiLCJyaWQiLCJyaWQkMCIsInN0cCQwIiwic3RwJDEiLCJwZXJ0IiwicGVydCQwIiwic3RwJDIiLCJlaWRzX2F0X2QiLCJscyIsImxzJDAiLCJub2Rlc190b19saXN0Iiwibm9kZXNfdG9fanNvbiIsImVkZ2VfdG9fanNvbiIsImVpZCQwIiwicHJlY19lZGdlcyIsInByZWNfZWRnZXNfdG9fanNvbiIsInByZWMkMSIsInByZWMkMiIsImJvb2wiLCJjb25mbF9lZGdlcyIsImNvbmZsX2VkZ2VzX3RvX2pzb24iLCJwcm9maWxpbmciLCJkZXNjIiwidGl0bGUiLCJhdG9tX2tpbmQiLCJwcm9maWxpbmckMCIsIm5hbWUiLCJzdG9yeSIsInNpemUiLCJ0aW1lIiwicHJpbnRfc3RhdCIsImVucmljaGVkX2dyaWQiLCJjb3VudF9vYnMiLCJuX3N0ZXAiLCJsb25nZXN0X3N0b3J5Iiwibl9ub25lbXB0eSIsImxlbmd0aF9zdW0iLCJsZW5ndGhfc3F1YXJlX3N1bSIsImNjIiwiY2MkMCIsImxlbmd0aF9zcXVhcmVfc3VtJDAiLCJsZW5ndGhfc3VtJDAiLCJuX25vbmVtcHR5JDAiLCJsb25nZXN0X3N0b3J5JDAiLCJuX3N0ZXAkMCIsImskMCIsInN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyIsInBpIiwiYWckMSIsImNvbXBhcmUiLCJwcmludCIsImVtcHR5IiwiaXRlciIsImhhc2giLCJwcmVkaWNhdGUiLCJsaWZ0IiwicHJlZGljYXRlX2lkIiwidGFiIiwiZmluZF9kZWZhdWx0IiwiZGVmIiwiZmluZF9vcHRpb24iLCJtZW0iLCJyZWN5Y2xlIiwicHJlZGljYXRlX21heCIsImVtcHR5JDAiLCJpdGVyJDAiLCJmaW5kX2RlZmF1bHQkMCIsImZpbmRfb3B0aW9uJDAiLCJtZW0kMCIsImFkZCQwIiwiY2F1c2FsIiwid2VhayIsInN0cm9uZyIsIm1pbl9sZXZlbCIsImhpZ2hlc3QiLCJoaWdoIiwiYWJvdmVfYXZlcmFnZSIsImF2ZXJhZ2UiLCJiZWxsb3dfYXZlcmFnZSIsImxvdyIsImxvd2VzdCIsInN0cmluZ19vZl9sZXZlbCIsImxldmVsIiwibG93ZXIiLCJoaWdoZXIiLCJuX3N0b3J5Iiwibl9icmFuY2giLCJzdGFydCIsImlucHJvZ3Jlc3MiLCJzdWNjZXNzIiwiZmFpbGx1cmUiLCJpbnRfb2ZfanNvbiIsIm1lc3NhZ2VfdG9fanNvbiIsInByb2dyZXNzX2JhciIsIm9uZV9jb21wcmVzc2lvbiIsImxvZ19pbmZvX3RvX2pzb24iLCJuZXdfc3RvcnkiLCJpbnQkMCIsIm1lc3NhZ2Vfb2ZfanNvbiIsIngkMyIsImxvZ19pbmZvX29mX2pzb24iLCJsJDEiLCJsJDIiLCJ4JDEiLCJsJDMiLCJ4JDIiLCJwJDAiLCJnZXRfY2F1c2FsX3RyYWNlIiwiZ2V0X2NhdXNhbF90cmFjZV9vbmx5IiwiZ2V0X3dlYWtfY29tcHJlc3Npb24iLCJnZXRfc3Ryb25nX2NvbXByZXNzaW9uIiwiZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSIsImJ1aWxkX3BhcmFtZXRlciIsImNhbGxlZF9mcm9tIiwibm9uZSIsInNlbmRfbWVzc2FnZSIsImxvZ19zdGVwX2NoYW5uZWwkMCIsIm91dF9jaGFubmVsX3Byb2ZpbGluZyQwIiwib3V0X2NoYW5uZWxfZXJyJDAiLCJvdXRfY2hhbm5lbCQwIiwib3V0X3NlcnZlciIsInNlcnZlciIsImNoYW5uZWwiLCJsb2dfc3RlcF9jaGFubmVsJDEiLCJvdXRfY2hhbm5lbF9wcm9maWxpbmckMSIsIm91dF9jaGFubmVsX2VyciQxIiwib3V0X2NoYW5uZWwkMSIsIm91dF9zZXJ2ZXIkMCIsInNldF9jb21wcmVzc2lvbl93ZWFrIiwic2V0X2NvbXByZXNzaW9uX3N0cm9uZyIsInNldF9jb21wcmVzc2lvbl9ub25lIiwiaW5pdF9oYW5kbGVyIiwibl9ydWxlcyIsInJ1bGVfbmFtZV9jYWNoZSIsInIiLCJuX2FnZW50cyIsImFnZW50X25hbWVfY2FjaGUiLCJzdGVwc19ieV9jb2x1bW4iLCJzdHJpbmdfb2ZfZXhuIiwiZ2V0X3ByaW9yaXRpZXMiLCJzZXRfZmlyc3Rfc3RvcnlfcGVyX29icyIsInNldF9hbGxfc3Rvcmllc19wZXJfb2JzIiwiZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMiLCJnZXRfZGVidWdnaW5nX21vZGUiLCJzZXRfZGVidWdnaW5nX21vZGUiLCJnZXRfbG9nX3N0ZXAiLCJzZXRfbG9nX3N0ZXAiLCJnZXRfbG9nZ2VyIiwic2V0X2xvZ2dlciIsImZtdCIsImdldF9vdXRfY2hhbm5lbCIsInNldF9vdXRfY2hhbm5lbCIsImdldF9kZWJ1Z2dpbmdfY2hhbm5lbCIsInNldF9kZWJ1Z2dpbmdfY2hhbm5lbCIsImdldF9rYXNhX3BhcmFtZXRlcnMiLCJzZXRfa2FzYV9wYXJhbWV0ZXJzIiwicGFyYW1ldGVyJDAiLCJkb193ZV91c2VfYnVja2V0X3NvcnQiLCJ1c2VfYnVja2V0X3NvcnQiLCJ1c2VfZnVzaW9uX3NvcnQiLCJhbHdheXNfZGlzYW1iaWd1YXRlIiwic2V0X2Fsd2F5c19kaXNhbWJpZ3VhdGUiLCJkb19ub3RfYm91bmRfaXR0ZXJhdGlvbnMiLCJzZXRfaXR0ZXJhdGlvbl9ib3VuZCIsImdldF9ib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciIsImdldF9wcm9maWxpbmdfbG9nZ2VyIiwic3RyaW5nX29mX3J1bGVfaWQiLCJzdHJpbmdfb2ZfYWdlbnRfaWQiLCJnZXRfcHJlZGljYXRlX21hcCIsImdldF9pc190aW1lX2luZGVwZW5kZW50IiwiZ2V0X2JsYWNrbGlzdF9ldmVudHMiLCJpc19zZXJ2ZXJfbW9kZSIsImdldF9zZXJ2ZXJfY2hhbm5lbCIsInNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCIsImlzX3NlcnZlcl9jaGFubmVsX29uIiwic2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIiwiZHVtcF9qc29uIiwibWVzc2FnZSIsInJlc2V0X3Byb2dyZXNzX2JhciIsInJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJzZXRfc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIiwic2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUiLCJzZXRfc2F2ZV9wcm9ncmVzc19iYXIiLCJzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIiwic2F2ZV9lcnJvcl9sb2ciLCJzZXRfc2F2ZV9lcnJvcl9sb2ciLCJwdXNoX2pzb24iLCJqc29uIiwicmVmIiwicG9wX2pzb24iLCJlbHRfb3B0IiwiZmlmbyIsImRlYnVnX21vZGUiLCJjb21wb3NlX3dpdGhfaGFuZGxlciIsImVtcHR5X3NpZGVfZWZmZWN0Iiwic2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSIsImFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlIiwiYWdlbnRfaWRfb2ZfYWdlbnQiLCJhZ2VudF9uYW1lX29mX2FnZW50IiwiYWdlbnRfb2Zfc2l0ZSIsImFnZW50X2lkX29mX3NpdGUiLCJhZ2VudF9uYW1lX29mX3NpdGUiLCJzaXRlX25hbWVfb2Zfc2l0ZSIsImdldF9nZW5fb2ZfcmVmaW5lZF9zdGVwIiwiZ2V0X3RpbWVfb2ZfcmVmaW5lZF9zdGVwIiwiZ2V0X2lkX29mX3JlZmluZWRfc3RlcCIsImJ1aWxkX2dyaWQiLCJlbXB0eV9zZXQiLCJzaWRlIiwic3VicyIsInNpZGVfZWZmZWN0IiwibWF5YmVfc2lkZV9lZmZlY3QiLCJzZSIsInRyYW5zbGF0ZSIsImlkIiwiZXZlbnQkMCIsInNpZGVfZWZmZWN0c19kc3QiLCJpbmZvJDAiLCJldmVudCQxIiwiaWQkMCIsImV2ZW50JDIiLCJzaWRlX2VmZmVjdHNfZHN0JDAiLCJhY3Rpb25zJDAiLCJpbmZvJDEiLCJpZCQxIiwidGVzdHMkMCIsImNsZWFuX2V2ZW50cyIsInByaW50X3NpZGVfZWZmZWN0IiwibG9nIiwic2lkZV9lZmZlY3Rfb2ZfbGlzdCIsImxldmVsX29mX2V2ZW50IiwicHJpb3JpdHlfb3B0IiwicHJpb3JpdGllcyIsInByaW9yaXR5IiwiYWdfaWQiLCJkaXNhbWJpZ3VhdGUiLCJldmVudF9saXN0IiwibWFwcGluZyIsInVzZWQiLCJtYXhfaWQiLCJtYXBwaW5nJDAiLCJ1c2VkJDAiLCJtYXhfaWQkMCIsImEkMSIsImV2ZW50X2xpc3RfcmV2IiwiY29udmVydF9pbml0IiwicmVtYW5lbnQiLCJzdGVwX2xpc3QiLCJhY3Rpb25fbGlzdCIsInJlY3VyIiwiYWNjIiwic291cCIsImFjYyQyIiwic2l0ZV9saXN0Iiwic291cCQwIiwidGhpcyQwIiwic3RhbmRhbG9uZSIsInRoaXMkMSIsIm1hcCIsInUiLCJhZ2VudF9pbmZvIiwiYXNfaW5pdCIsInJlc3RyaWN0aW9uX21hcCIsImFnaWQiLCJyZXN0cmljdGlvbiIsInVuYmluZCIsInJlbSIsInNfbmFtZSIsImFnX2luZm8iLCJhZ19pbmZvJDAiLCJyZW1hbmVudCQwIiwiYmluZCIsInNwbGl0X2luaXQiLCJyZWZpbmVkX3N0ZXBfbGlzdCIsInJlZmluZWRfc3RlcCIsImFkZF9pbl9zY29wZSIsInNjb3BlIiwib2xkX3NldCIsIm5ld19zZXQiLCJkZWFsX3dpdGhfdGVzdHMiLCJmaWxsX3NpcGhvbiIsInJldl90cmFjZSIsInNjb3BlJDEiLCJzY29wZSQwIiwicmVmaW5lZF9zdGVwX3dpdGhfc2NvcGVfbGlzdCIsInN0YXRlIiwic3RhdGVfcmVmIiwiYWdfaW5mbyQxIiwicmVtYW5lbnQkMSIsInNldCQwIiwiYWdlbnRfaWRfaW5fb2JzIiwicHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMiLCJzaWRlcyIsInNfaWQiLCJpbml0X2N1dCIsImZpbmFsaXplX2N1dCIsImN1dF9zdGVwIiwibl9jdXQiLCJrZXB0Iiwic2VlbiIsImFjdGlvbiIsImludGVyZmFjZSQwIiwibGlzdCQwIiwiZWx0Iiwic2VlbiQwIiwicTAiLCJhZ19pZCQwIiwiczIiLCJzMSIsInExIiwidDEiLCJrZXB0JDAiLCJ0ZXN0IiwiYWdlbnQiLCJwcmVkaWNhdGVfaW5mbyIsInNlZW4kMSIsInNlZW4kMiIsImN1dF9yZXZfdHJhY2UiLCJyZXZfZXZlbnRfbGlzdCIsInRyYWNlIiwiY2xlYW4iLCJjb2x1bW4iLCJibGFja2JvYXJkIiwidGFpbCIsImhlYWQiLCJjb2x1bW4kMCIsImJsYWNrYm9hcmQkMCIsInBvcCIsInByZWRpY2F0ZV9saXN0IiwiYmxhY2tib2FyZCQxIiwibl9zdGVwcyIsInN0ZXAiLCJibGFja2JvYXJkJDMiLCJwcmVfZXZlbnQiLCJ0ZXN0X2xpc3QiLCJ1bmFtYmlndW91c19zaWRlX2VmZmVjdHMiLCJidWlsZF9tYXBfdGVzdCIsInByZWRpY2F0ZV9pZCQwIiwicHJlZGljYXRlX2lkJDEiLCJhZ19pZCQxIiwic2l0ZV9pZCQwIiwicHJlZGljYXRlX2lkJDIiLCJhZ19pZCQyIiwic2l0ZV9pZCQxIiwicHJlZGljYXRlX2lkJDMiLCJhZ19pZDEiLCJhZ19pZDIiLCJzaXRlX2lkMSIsInNpdGVfaWQyIiwicHJlZGljYXRlX2lkMSIsInByZWRpY2F0ZV9pZDIiLCJ0ZXN0X21hcCIsImJvb2xfY3JlYXRpb24iLCJhY3Rpb25fbWFwIiwibGlzdDIiLCJsaXN0MSIsImxpc3QxJDAiLCJsaXN0MiQwIiwiYWdlbnRfbmFtZTEiLCJhZ2VudF9uYW1lMiIsInMyJDAiLCJzMSQwIiwiYWdfaWQxJDAiLCJhZ19pZDIkMCIsImFnZW50X25hbWUyJDAiLCJzaXRlX2lkMSQwIiwic2l0ZV9pZDIkMCIsInByZWRpY2F0ZV9pZDEkMCIsImJvb2xfY3JlYXRpb24kMCIsImJvb2wkMCIsImJvb2xfY3JlYXRpb24kMSIsImJvb2wkMSIsInZhbHVlIiwiaXNfcmVtb3ZlX2FjdGlvbiIsInRlc3RfbWFwJDAiLCJtZXJnZWRfbWFwIiwibWFwJDAiLCJhY3Rpb24kMCIsInRlc3QkMCIsInRlc3QkMSIsImFjdGlvbiQxIiwibWVyZ2VkX21hcCQwIiwibnNpZCIsIm1vZF93aXRob3V0X3Rlc3QiLCJuX21vZGlmaWNhdGlvbnMiLCJvbGRfbGlzdCIsInYiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJtb2Rfd2l0aG91dF90ZXN0JDAiLCJtb2Rfd2l0aG91dF90ZXN0JDEiLCJib29sX2FjdGlvbiIsIm5fbW9kaWZpY2F0aW9ucyQwIiwicHJlX3N0ZXBzX2J5X2NvbHVtbiIsImJsYWNrYm9hcmQkMiIsInByZWRpY2F0ZV9saXN0JDAiLCJwcmVkaWNhdGVfbGlzdCQxIiwieSQwIiwiY2FuZGlkYXRlcyIsImVpZGIiLCJlaWRhIiwiY29sdW1uJDEiLCJjb2x1bW4kMiIsInRvX3BvcCIsImUyIiwiZTEiLCJibGFja2JvYXJkJDQiLCJibGFja2JvYXJkJDUiLCJlcnJvciQzIiwiayQyIiwibGlzdCQxIiwiayQxIiwid2FybiIsInBvcyIsImV4biIsImRlZmF1bHQkMCIsInplcm9fc3RlcF9pZCIsImR1bW15X3N0ZXBfaWQiLCJpbnRfb2Zfc3RlcF9pZCIsInN0ZXBfaWRfb2ZfaW50IiwiZGVjX3N0ZXBfaWQiLCJpbmNfc3RlcF9pZCIsInplcm9fc3RlcF9zaG9ydF9pZCIsImR1bW15X3N0ZXBfc2hvcnRfaWQiLCJpbnRfb2Zfc3RlcF9zaG9ydF9pZCIsInN0ZXBfc2hvcnRfaWRfb2ZfaW50IiwiaW5jX3N0ZXBfc2hvcnRfaWQiLCJkZWNfc3RlcF9zaG9ydF9pZCIsIndlYWtlbmluZyIsImRlZmluZWQiLCJ1bmRlZmluZWQkMCIsInVua25vd24iLCJpc191bmtub3duIiwiaXNfdW5kZWZpbmVkIiwiY29tcGFyZSQwIiwicHJpbnQkMCIsImNvbXBhcmUkMSIsInByaW50JDEiLCJsZXZlbHMiLCJnZXRfcHJlX2NvbHVtbl9tYXBfaW52IiwiZ2V0X3ByZV9ldmVudCIsInByaW50X3ByZWRpY2F0ZV9pbmZvIiwiaSQwIiwiaSQxIiwiaW50NCIsImludDMiLCJpbnQyIiwiaW50MiQwIiwiaW50JDEiLCJpbnQyJDEiLCJpbnQkMiIsImludDMkMCIsImludDIkMiIsImludCQzIiwiaWQyIiwiaWQxIiwicHJpbnRfa25vd24iLCJzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIiwiYWdlbnRfaWQiLCJpbnRlcm5hbF9zdGF0ZSIsImFnZW50X25hbWUiLCJhZ2VudF9pZCQwIiwicHJpbnRfcHJlZGljYXRlX3ZhbHVlIiwicHJpbnRfcHJlZGljYXRlX2lkIiwicHJpbnRfcHJlYmxhY2tib2FyZCIsIm5ldmVudHMiLCJzZWlkIiwic3RyaWN0bHlfbW9yZV9yZWZpbmVkIiwibW9yZV9yZWZpbmVkIiwiY29uaiIsImNvbXBhdGlibGUiLCJkaXNqdW5jdGlvbiIsImFsbG9jYXRlIiwibWFwX2ludiIsInNpZCQwIiwic2lkIiwiY3JlYXRlX2FnZW50IiwibmV3X2xpc3QiLCJmcmVlX2FnZW50IiwiZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMiLCJwcmVkaWNhdGVzX29mX2FjdGlvbl9ub19zdWJzIiwibG9nX2luZm8kMyIsImVycm9yJDQiLCJsb2dfaW5mbyQ0IiwiZXJyb3IkNSIsImJsYWNrYm9hcmQkNiIsImxvZ19pbmZvJDUiLCJlcnJvciQ2IiwiYmxhY2tib2FyZCQ3IiwibG9nX2luZm8kNiIsImVycm9yJDciLCJwcmVkaWNhdGVfaWQyJDAiLCJibGFja2JvYXJkJDgiLCJsb2dfaW5mbyQ3IiwiZXJyb3IkOCIsImJsYWNrYm9hcmQkOSIsImxvZ19pbmZvJDgiLCJlcnJvciQ5IiwiYmxhY2tib2FyZCQxMCIsImxvZ19pbmZvJDkiLCJlcnJvciQxMCIsImJsYWNrYm9hcmQkMTEiLCJsb2dfaW5mbyQxMCIsImVycm9yJDExIiwicHJlZGljYXRlaWQiLCJibGFja2JvYXJkJDEyIiwiZXJyb3IkMTIiLCJwcmVkaWNhdGVzX29mX2FjdGlvbl9zdWJzIiwicHJlZGljYXRlc19vZl9hY3Rpb24iLCJwcmVkaWNhdGVzX29mX3Rlc3QiLCJzaXRlX25hbWUiLCJ0eXBlX29mX3N0ZXAiLCJnZXRfbGV2ZWxfb2ZfZXZlbnQiLCJpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIiwiaW5pdF9zdGVwIiwibnNpZCQwIiwiYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIiwidmFsdWUkMCIsInByZWRpY2F0ZV90YXJnZXRfaWQiLCJzbmFtZSIsInByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YSIsImJ0IiwicG90ZW50aWFsX3RhcmdldCIsImJpbmRpbmdfc3RhdGUiLCJmb3JtZXJfc3RhdGVzIiwiYnQkMCIsImluaXRfZGF0YV9zdHJ1Y3R1cmVfc3Ryb25nIiwiYWRkX3NpdGVfaW5fb3RoZXJfdGVzdF9saW5rcyIsImRhdGFfc3RydWN0dXJlIiwiYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIiwiZGF0YV9zdHJ1Y3R1cmUkMCIsImFkZF9zdXJlX3Rlc3QiLCJhZGRfc3Vic190ZXN0IiwiYWRkX3N1YnNfdGVzdF9saW5rIiwibGluayIsImxpbmskMCIsImRhdGFfc3RydWN0dXJlJDEiLCJhZGRfc3VyZV9hY3Rpb24iLCJhZGRfc3Vic19hY3Rpb24iLCJhZGRfc3Vic19hY3Rpb25fbGluayIsImFkZF9zdGVwX3N0cm9uZyIsInN0ZXBfaWQiLCJhZzFfaWQiLCJhZzJfaWQiLCJzaXRlMV9pZCIsInNpdGUyX2lkIiwidGVzdGVkX3NpdGVzIiwibW9kX3NpdGVzIiwicHJpb3JpdHlfc2l0ZXMiLCJzdXJlX2FnZW50cyIsInN1cmVfYWdlbnQiLCJhZ2VudDEiLCJhZ2VudDIiLCJtaXhfc2l0ZTEiLCJtaXhfc2l0ZTIiLCJkYXRhX3N0cnVjdHVyZSQyIiwiZGF0YV9zdHJ1Y3R1cmUkMyIsImFnZW50JDAiLCJzaXRlX25hbWUxIiwic2l0ZV9uYW1lMiIsIndlYWsxIiwid2VhazIiLCJhZ2VudCQxIiwiZGF0YV9zdHJ1Y3R1cmUkNCIsImRhdGFfc3RydWN0dXJlJDUiLCJkYXRhX3N0cnVjdHVyZSQ2IiwiYTIiLCJhMSIsInNpZGVfZWZmZWN0JDAiLCJhY3Rpb25fbGlzdCQwIiwidGVzdF9saXN0JDAiLCJmaWN0aXRpb3VzX2xvY2FsX2xpc3QiLCJmaWN0aXRpb3VzX2xpc3QiLCJtaXh0dXJlX2FnZW50X2lkX211dGV4IiwicnVsZV9hZ2VudF9pZF9zdWJzIiwicnVsZV9hZ2VudF9pZF9tdXRleCIsImluaXRfc3RlcCQwIiwicnVsZV9hZ2VudF9pZF9tdXRleCQwIiwiZmljdGl0aW91c19sb2NhbF9saXN0JDAiLCJmaWN0aXRpb3VzX2xpc3QkMCIsInByZWRpY2F0ZV9pbmZvJDAiLCJydWxlX2FnZW50X2lkX3N1YnMkMCIsImluaXRfc3RlcCQxIiwiaW5pdF9zdGVwJDIiLCJydWxlX2FnZW50X2lkX3N1YnMkMSIsIm1peHR1cmVfYWdlbnRfaWRfbXV0ZXgkMCIsImluaXRfc3RlcCQzIiwibGlua3NfbXV0ZXgiLCJsaW5rc19tdXRleCQwIiwiZmljdGl0aW91c19saXN0JDEiLCJidWlsZF9tYXAiLCJhZGRfc3RhdGUiLCJmYWRkIiwibnNpZF92b2lkIiwibnNpZF9uZXh0Iiwic2lkZV9lZmZlY3QkMSIsInRlc3RfbGlzdCQxIiwicG90ZW50aWFsX3RhcmdldCQwIiwicnVsZV9hZ19pZCIsImZpY3RpdGlvdXNfbGlzdCQyIiwic2lkZV9lZmZlY3QkMiIsInN0ZXBfaWQkMCIsInByZV9zdGVwc19ieV9jb2x1bW4kMCIsIm9ic2VydmFibGVfbGlzdCQwIiwiYmxhY2tib2FyZCQxNCIsIm5saXN0IiwibWl4dHVyZV9hZ19pZCIsInBpZF9ydWxlX2FnZW50X211dGV4IiwicGlkX3J1bGVfYWdlbnRfbXV0ZXgkMCIsInRlc3RfbWFwJDEiLCJhY3Rpb25fbWFwJDAiLCJtX2lkIiwiYWN0aW9uX21hcCQyIiwidGVzdF9tYXAkMiIsIm5saXN0JDAiLCJtZXJnZWRfbWFwJDEiLCJtZXJnZWRfbWFwJDIiLCJsaW5rX211dGV4IiwicnVsZV9hZ19pZDIiLCJydWxlX2FnX2lkMSIsImxfYWdfMSIsImxfYWdfMiIsIm1peHR1cmVfYWdfMSIsInN1YnMkMCIsIm1peHR1cmVfYWdfMiIsImFjdGlvbl9saXN0JDEiLCJtX2lkJDAiLCJmaWN0aXRpb3VzX2xpc3QkMyIsInVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyQwIiwiZmljdGl0aW91c19sb2NhbF9saXN0JDEiLCJmaWN0aXRpb3VzX2xpc3QkNCIsImxvZ19pbmZvJDExIiwiZXJyb3IkMTMiLCJtZXJnZWRfbWFwJDMiLCJtZXJnZWRfbWFwJDQiLCJzaWRlX2VmZmVjdCQzIiwib2JzZXJ2YWJsZV9saXN0IiwiYmxhY2tib2FyZCQxMyIsImFkZF9zdGVwIiwiZmluYWxpemUiLCJoZXVyaXN0aWMiLCJhZ2VudHNfaW5fb2JzIiwibl9wcmVkaWNhdGVzIiwiZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUiLCJuX2V2ZW50c19wZXJfcHJlZGljYXRlIiwibl9ldmVudHMiLCJtYW5kYXRvcnlfZXZlbnRzIiwiZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSIsImdldF9zaWRlX2VmZmVjdCIsImlnbm9yZSIsImZhaWwiLCJpc19pZ25vcmVkIiwiaXNfZmFpbGVkIiwiaXNfc3VjY2VlZGVkIiwibnVsbF9wb2ludGVyIiwicG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCIsImlzX2JlZm9yZV9ibGFja2JvYXJkIiwiYnVpbGRfcG9pbnRlciIsInByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MiLCJpc19ib3VuZGFyeSIsImV2ZW50X2FkZHJlc3MiLCJidWlsZF9ldmVudF9jYXNlX2FkZHJlc3MiLCJpc19leGlzdF9ldmVudCIsIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIiwibl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fIiwicG9pbnRlcl90b19uZXh0IiwidmFsdWVfYWZ0ZXIiLCJwb2ludGVyX3RvX3ByZXZpb3VzIiwibl91bnJlc29sdmVkX2V2ZW50cyIsIm5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwiLCJleGlzdCIsInN0cmluZ19vZl9wb2ludGVyIiwicHJlZGljYXRlX3ZhbHVlIiwicG9pbnRlciIsImJvb2xlYW4kMCIsImNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZCIsInByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIiwiY2FzZV92YWx1ZSIsInkkMSIsImxpbmUiLCJmaWxlIiwiZHVtbXlfY2FzZV9pbmZvX3N0YXRpYyIsImR1bW15X2Nhc2VfaW5mb19keW5hbWljIiwiY29ycmVjdF9wb2ludGVyIiwiaW50X3NlaWQiLCJkdW1teV9jYXNlX2luZm8iLCJwcm9maWxpbmdfaW5mbyIsImdldF9ldmVudCIsImdldF9uX2VpZCIsImdldF9zdGFja19kZXB0aCIsImZvcmNlZF9ldmVudHMiLCJzaWRlX2VmZmVjdF9vZl9ldmVudCIsImNhc2VfbGlzdF9vZl9laWQiLCJnZXRfY2FzZSIsImNhc2VfYWRkcmVzcyIsImdldF9zdGF0aWMiLCJhZGRyZXNzIiwiY2FzZSQwIiwic3RhdGljJDAiLCJwcmludF9ldmVudF9jYXNlX2FkZHJlc3MiLCJnZXRfbnByZWRpY2F0ZV9pZCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCIsImdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZCQwIiwiZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMiLCJmb2xsb3dfcG9pbnRlcl9kb3duIiwiZm9sbG93X3BvaW50ZXJfdXAiLCJnZXRfZmlyc3RfbGlua2VkX2V2ZW50IiwiZ2V0X2xhc3RfbGlua2VkX2V2ZW50IiwicHJpbnRfa25vd25fY2FzZSIsInByZWYiLCJpbmYiLCJzdWYiLCJzdHJpbmdfb2ZfdmFsdWUiLCJwYiIsInByaW50X2Fzc2lnbm1lbnQiLCJpJDIiLCJpJDMiLCJpJDQiLCJpJDUiLCJpJDYiLCJpJDciLCJsb2ckMCIsImkkOCIsInByaW50X2JsYWNrYm9hcmQiLCJlcnIiLCJhcnJheSIsImokMiIsImokMCIsInN0YXR1cyIsImokMSIsInN0YWNrIiwiZW1wdHlfc3RhY2siLCJleGlzdF9jYXNlIiwic2V0X2Nhc2UiLCJjYXNlX2FkZHJlc3MkMCIsImNhc2VfdmFsdWUkMCIsImNhc2VfYWRkcmVzcyQxIiwib2xkJDAiLCJjYXNlX3ZhbHVlJDEiLCJjYXNlX2FkZHJlc3MkMiIsIm9sZCQxIiwiY2FzZV92YWx1ZSQyIiwibGV2ZWwkMCIsImNhc2VfYWRkcmVzcyQzIiwib2xkJDIiLCJjYXNlX3ZhbHVlJDMiLCJpc19zZWxlY3RlZF9ldmVudCIsImdldCIsImNhc2UkMSIsImNhc2UkMiIsImNhc2VfYWRkcmVzcyQ0IiwiY2FzZV9hZGRyZXNzJDUiLCJjYXNlJDMiLCJsdmwiLCJjYXNlX2FkZHJlc3MkNiIsImNhc2UkNCIsImV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyIsInByZWZpeCIsImZpbGVfbmFtZSIsImRlc2NfY2hhbiIsInJvd19vZl9wcmVjb25kaXRpb24iLCJjb2xvcnMiLCJiYWNrY29sb3IiLCJjb2xvciIsImNvbG9yJDAiLCJ0ZXh0Y29sb3IiLCJnZXRjZWxsIiwicm93IiwiY29sIiwicHJpbnRfY2FzZSIsImNvbG9yX2ZvbnQiLCJjb2xvcl9iYWNrIiwicHJpbnRfY2FzZV9mdW4iLCJwX2luZm8iLCJyb3dfcHJlY29uZGl0aW9uIiwicm93X3Bvc3Rjb25kaXRpb24iLCJtYXliZWtlcHQiLCJlaWQkMSIsInN0cmluZ19laWQiLCJ2YWx1ZV9iZWZvcmUiLCJjYW5kIiwic3RyaW5nX2VpZCQwIiwic3RhY2skMCIsInN0YWNrJDEiLCJyZWNvcmRfbW9kaWYiLCJyZWZpbmUiLCJvdmVyd3JpdGUiLCJkZWMiLCJicmFuY2giLCJyZXNldF9sYXN0X2JyYW5jaGluZyIsInJlc2V0X2luaXQiLCJpc19tYXhpbWFsX3NvbHV0aW9uIiwidHJhbnNsYXRlX2JsYWNrYm9hcmQiLCJzdGVwX2FycmF5Iiwic2lkZV9hcnJheSIsInByaW50X3N0YWNrIiwiZXZlbnRfbGlzdCQyIiwiZXZlbnRfYXJyYXkiLCJrZXB0X2V2ZW50cyIsImtlcHRfZXZlbnRzJDAiLCJrZXB0X2V2ZW50cyQxIiwiZXZlbnRfbGlzdCQwIiwiZXZlbnRfY2FzZV9hZGRyZXNzIiwicG9pbnRlciQwIiwicHJldl9ldmVudF9jYXNlX2FkZHJlc3MiLCJwcmV2X2Nhc2UiLCJwcmV2X2VpZCIsInBvaW50ZXIkMSIsInByZXZfZWlkJDAiLCJrZXB0X2V2ZW50cyQyIiwiZXZlbnRfbGlzdCQxIiwiZXZlbnRzX3RvX2tlZXAiLCJuX2V2ZW50c19yZW1vdmVkIiwiY3V0X2NhdXNhbF9mbG93IiwiaW1wb3J0JDAiLCJwcmVibGFja2JvYXJkIiwicmVmaW5lZF9ldmVudCIsInByZWJsYWNrYm9hcmQkMCIsInRvX3hscyIsInByZWJsYWNrYm9hcmQkMSIsInByZWJsYWNrYm9hcmQkMyIsInRvX3hscyQwIiwic3RyaW5nJDAiLCJwcmVibGFja2JvYXJkJDQiLCJwcmVibGFja2JvYXJkJDIiLCJwcmVfYmxhY2tib2FyZCIsImV2ZW50X2Nhc2VfbGlzdCIsIm5fc2VpZCIsInVuc29sdmVkX2J5X2xldmVsIiwibGV2ZWxfb3B0JDEiLCJsZXZlbF9vcHQiLCJ3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmUiLCJsZXZlbF9vcHQkMCIsIndlaWd0aF9vZl9wcmVkaWNhdGVfaWQiLCJsYXN0X2xpbmtlZF9ldmVudF9vZl9wcmVkaWNhdGUiLCJwX2lkJDEiLCJwX2lkIiwic2l6ZSQwIiwic2VpZCQxIiwidHJpcGxlIiwic2l6ZSQxIiwidW5zb2x2ZWQiLCJzZWlkJDAiLCJwcmVkX3NpemUiLCJwX2lkJDAiLCJ1bnNvbHZlZF9ieV9sZXZlbCQwIiwibGV2ZWwkMSIsIm1hcCQxIiwibG9nX2luZm8kMTIiLCJmaWN0aXRpb3VzX29icyIsImxvZ19pbmZvJDEzIiwibG9va191cF9mb3JfYmV0dGVyX2N1dCIsImxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dCIsImR1bW15X3VwZGF0ZV9vcmRlciIsImZvcmJpZGRlbl9ldmVudHMiLCJwYXJhbXRlciIsImdldF9nZW5fdW5yZXNvbHZlZF9ldmVudF9vbl9waSIsImZpcnN0Iiwic3RvcCIsImtfaW5pdCIsImtfZW5kIiwiZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IiwibmV4dF9jaG9pY2UiLCJwcmlvcml0eSQwIiwibl9wX2lkIiwibGV2ZWxfb3B0JDIiLCJiZXN0JDEiLCJiZXN0IiwiZ3JhZGUiLCJiZXN0JDAiLCJzdGVwJDAiLCJldmVudF9pZCIsImV2ZW50X2lkJDAiLCJwcm9wYWdhdGVfZG93biIsImluc3RydWN0aW9uX2xpc3QiLCJwcm9wYWdhdGVfbGlzdCIsIm5leHRfZXZlbnRfY2FzZV9hZGRyZXNzIiwiYm9vbDIiLCJuZXh0X2FjdGlvbiIsIm5leHRfdGVzdCIsInByZWRpY2F0ZV92YWx1ZSQwIiwiY29uaiQwIiwibG9nX2luZm8kMTQiLCJsb2dfaW5mbyQxNSIsIm5leHRfYWN0aW9uJDAiLCJuZXh0X3Rlc3QkMCIsIm5leHRfZWlkIiwibG9nX2luZm8kMTYiLCJsb2dfaW5mbyQxNyIsImxvZ19pbmZvJDE4IiwibG9nX2luZm8kMTkiLCJjb21wdXRlZF9uZXh0X3ByZWRpY2F0ZV92YWx1ZSQwIiwibG9nX2luZm8kMjQiLCJsb2dfaW5mbyQyNSIsImNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlIiwibG9nX2luZm8kMjAiLCJsb2dfaW5mbyQyMSIsImxvZ19pbmZvJDIyIiwibG9nX2luZm8kMjMiLCJsYXN0X2NoYW5jZV91cCIsImV2ZW50X2Nhc2VfYWRkcmVzcyQwIiwicHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MiLCJwcmV2aWV3X2Nhc2VfYWRkcmVzcyIsInByZXZpZXdfY2FzZV92YWx1ZSIsInByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIiwicHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MkMCIsInByZXZpZXdfY2FzZV9hZGRyZXNzJDAiLCJwcmV2aWV3X2Nhc2VfdmFsdWUkMCIsInByZXZpZXdfcHJlZGljYXRlX3ZhbHVlJDAiLCJsYXN0X2NoYW5jZV91cCQwIiwicHJvcGFnYXRlX3VwIiwibG9nX2luZm8kMzEiLCJuZXdfcHJlZGljYXRlX3ZhbHVlIiwicHJldiIsImxvZ19pbmZvJDI5IiwiZXJyb3IkMTYiLCJsb2dfaW5mbyQzMCIsIm5ld190ZXN0IiwiZXJyb3IkMTQiLCJuZXdfcHJlZGljYXRlX3ZhbHVlJDAiLCJsb2dfaW5mbyQyNiIsImVycm9yJDE1IiwibG9nX2luZm8kMjciLCJsb2dfaW5mbyQyOCIsImxvZ19pbmZvJDMyIiwibG9nX2luZm8kMzMiLCJwcm9wYWdhdGUiLCJjdXRfY2FzZSIsInBvaW50ZXJfbmV4dCIsInBvaW50ZXJfcHJldmlvdXMiLCJyZXN1bHQiLCJsb29rX2Rvd24iLCJsaXN0X3ZhbHVlcyIsImNhIiwibmV4dF9jYXNlIiwicHJvcGFnYXRlX2xpc3QkMCIsImxvb2tfZG93biQwIiwicmVmaW5lX3ZhbHVlX2FmdGVyIiwicmVmaW5lX3ZhbHVlX2JlZm9yZSIsImRpc2NhcmRfY2FzZSIsInJlc3VsdCQwIiwiaW5zdHJ1Y3Rpb25fbGlzdCQwIiwicHJvcGFnYXRlX2xpc3QkMSIsImdlbl9ldmVudCIsImZfY2FzZSIsInN1Y2Nlc3MkMSIsInN1Y2Nlc3MkMCIsInN1Y2Nlc3MyIiwic3VjY2VzcyQyIiwiYXBwbHlfaW5zdHJ1Y3Rpb24iLCJpbnN0cnVjdGlvbiIsImluc3RydWN0aW9uX2xpc3QkMyIsInByb3BhZ2F0ZV9saXN0JDIiLCJyZXN1bHQkMSIsImluc3RydWN0aW9uX2xpc3QkMSIsImluc3RydWN0aW9uX2xpc3QkMiIsInN0ZXBfaWQkMSIsImFkZHJlc3MkMCIsImVtcHR5X2Nob2ljZV9saXN0IiwiYXNzaWduX3Jlc3VsdCIsImFzc2lnbl9yZXN1bHQkMCIsImJhY2t0cmFjayIsImNob2ljZV9saXN0IiwiY2hvaWNlX2xpc3QkMCIsImNob2ljZV9saXN0JDEiLCJzdWJsaXN0IiwiZGV0ZWN0X2luZGVwZW5kZW50X2V2ZW50cyIsImxpc3RfZWlkIiwidHJhbnNsYXRlX3Jlc3VsdCIsImZpbHRlciIsInNvbCIsInNvbCQwIiwic29sJDEiLCJldmVudHNfdG9fcmVtb3ZlIiwic3ViIiwiY29tcHJlc3MiLCJsaXN0X29yZGVyIiwiY2hvaWNlX2xpc3QkMiIsImNob2ljZV9saXN0JDMiLCJjaG9pY2VfbGlzdCQ0IiwiY2hvaWNlX2xpc3QkNSIsImNob2ljZSIsImNob2ljZV9saXN0JDYiLCJjaG9pY2VfbGlzdCQ3Iiwic3RvcnlfbGlzdCQxIiwiZ29vZG9uZXMkMSIsInRvX3Zpc2l0IiwidG9fdmlzaXQkMCIsImdvb2RvbmVzIiwiZ29vZG9uZXMkMCIsImgkMSIsInRvX3Zpc2l0JDEiLCJibGFja19saXN0IiwiaXNfYmxhY2tfbGlzdGVkIiwiZHVtbXlfZ3JhcGgiLCJjb21wYXJlX2VsdCIsInF1aWNrX2NvbXBhcmUiLCJ0MiIsImF1eCIsImwyJDEiLCJjb21wYXJlX2Nhbm9uaWMiLCJncmFwaF9vZl9ncmlkIiwic3VjY19zaXplIiwibGFiZWxzIiwiY29uZmxpY3RfcHJlZCIsImxpc3QyJDIiLCJsaXN0MiQxIiwibGlzdDEkMSIsImNvbXBhcmVfbm9kZSIsInByZWhhc2giLCJ3ZWlnaHQkMiIsImZvcm1lciQxIiwiZm9ybWVyIiwid2VpZ2h0IiwiZm9ybWVyJDAiLCJ3dCIsIndlaWdodCQwIiwid2VpZ2h0JDEiLCJjYW5vbmljYWxpemUiLCJhc3NvIiwiY2FuZGlkYXRlIiwidG9fYmVhdCIsImNhbmRpZGF0ZSQwIiwidG9fYmVhdCQwIiwiY2FuZGlkYXRlJDEiLCJxciIsInRyIiwidG9fYmVhdCQxIiwidmlzaXQiLCJmcmVzaF9wb3MiLCJmcmVzaF9wb3MkMCIsInNpYmJsaW5nMSIsInNpYmJsaW5nMiIsIm0kMCIsImNhbmRpZGF0ZXMkMSIsIm5vdF9iZXN0IiwiY2FuZGlkYXRlcyQwIiwicmVzaWR1ZSIsImZyZXNoIiwiZW5jb2RpbmciLCJ0b19iZWF0X2FmdGVyIiwibm90X2Jlc3QkMCIsInJlY29yZCQwIiwibm90X2Jlc3QkMSIsInJlY29yZCQxIiwicmVjb3JkJDIiLCJub3RfYmVzdCQyIiwidG9fYmVhdF9hZnRlciQwIiwic2liYmxpbmcxJDAiLCJ0b19iZWF0JDIiLCJmcmVzaF9wb3MkMSIsInRvX2JlYXQkMyIsImckMCIsInNpYmJsaW5nMiQwIiwidG9fYmVhdCQ0IiwibGlzdCQyIiwiZnJlc2hfcG9zJDIiLCJtYXAkMiIsInRvX2JlYXQkNSIsImxpc3QkMyIsInNvcnRfb3V0ZXIiLCJzb3J0X2lubmVyIiwiY29tcGFyZSQyIiwiZ2V0X2Nhbm5vbmljYWxfZm9ybSIsInRhYmxlIiwiYXNzb2MiLCJjYW5ub25pYyIsImNhbm5vbmljJDAiLCJ0YWJsZSQwIiwiY2hvb3NlX2ZzdCIsImluaXRfdGFibGUiLCJwYXJhbWV0ZXJzIiwiYWRkX3N0b3J5IiwicHJldHJhY2UiLCJzdG9yeV9pbmZvIiwidGFibGUkMiIsInRhYmxlJDMiLCJncmFwaCQwIiwicHJlaGFzaCQxIiwibG9nZ2VyJDAiLCJsb2dnZXIiLCJub2RlX2tpbmQiLCJkaXJlY3RpdmVzIiwiYWRkX3N0b3J5X2luZm8iLCJhc3NvX29wdCIsImNhbm9uaWMiLCJ1cGRhdGVfYXNzb2MiLCJjYW5vbmljX2Zvcm0iLCJhdXhfaW5uZXIyIiwiY2Fub25pY19mb3JtJDAiLCJ0cmVlIiwidGFibGUkMSIsImlkJDIiLCJ0YWJsZSQ0IiwiYXV4X291dGVyMiIsInByZWhhc2gkMCIsImNhbm5vbmljX2Zvcm0iLCJhc3NvYyQwIiwiY2Fubm9uaWNfZm9ybSQwIiwiaW5uZXIiLCJ0YWJsZSQ1IiwiYXV4X2lubmVyIiwic3VmZml4IiwiaW5uZXJfdHJlZSIsImlubmVyX3RyZWUkMCIsImlubmVyX3RyZWUkMSIsImlubmVyX3RyZWUkMiIsImlkJDMiLCJpZCQ0IiwiYXV4X291dGVyIiwib3V0ZXJfdHJlZSIsImlkJDUiLCJ0YWJsZSQ4IiwiaWQkNyIsImlkJDYiLCJncmFwaCQxIiwiYXNzb2MkMSIsInRhYmxlJDYiLCJpbm5lciQwIiwidGFibGUkNyIsImlkJDgiLCJ0YWJsZSQ5IiwiaW5uZXIkMSIsInN1ZmZpeCQwIiwiYXNzb2MkMiIsImlubmVyJDIiLCJ0YWJsZSQxMCIsIm91dGVyX3RyZWUkMCIsIm91dGVyX3RyZWUkMSIsImhhc2hfbGlzdCIsImVsZW1lbnRzX3RvX3N0b3JlJDIiLCJlbGVtZW50c190b19zdG9yZSQzIiwic3RvcmVkX2VsZW1lbnRzJDEiLCJsYXN0X2VsZW1lbnQkMiIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQzIiwiZWxlbWVudHNfdG9fc3RvcmUkNCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQ0IiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDUiLCJsYXN0X2VsZW1lbnQkMyIsInN0b3JlZF9lbGVtZW50cyQyIiwibGFzdF9lbGVtZW50X29jY3VycmVuY2VzJDYiLCJsYXN0X2VsZW1lbnQkNCIsImRhZyIsImRhZyQwIiwiZGFnJDEiLCJkYWckMiIsImVsZW1lbnRzX3RvX3N0b3JlIiwiZWxlbWVudHNfdG9fc3RvcmUkMCIsInN0b3JlZF9lbGVtZW50cyIsImxhc3RfZWxlbWVudCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyIsImVsZW1lbnRzX3RvX3N0b3JlJDEiLCJsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMkMCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQxIiwibGFzdF9lbGVtZW50JDAiLCJzdG9yZWRfZWxlbWVudHMkMCIsImxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcyQyIiwibGFzdF9lbGVtZW50JDEiLCJhY2MkMCIsInNvcnRfbGlzdCIsImxpc3Rfb3V0IiwidHVwbGUiLCJmbGF0X2xpc3QiLCJjb21wYXJlX3BhaXIiLCJmbGF0X2xpc3QkMCIsImNvdW50X3N0b3JpZXMiLCJmb2xkX3RhYmxlIiwid2Vfc2hhbGwiLCJ3ZV9zaGFsbF9ub3QiLCJnZXRfcHJldHJhY2Vfb2ZfdHJhY2UiLCJzaXplX29mX3ByZXRyYWNlIiwic2V0X2FtYmlndWl0eV9sZXZlbCIsImdldF9jb21wcmVzc2VkX3RyYWNlIiwiaXNfY29tcHJlc3NlZF90cmFjZSIsInRyYWNlX29mX3ByZXRyYWNlX3dpdGhfYW1iaWd1aSIsIndpdGhfYW1iaWd1aXR5IiwidHJhY2Vfb2ZfcHJldHJhY2UiLCJnZXRfaWRfb2ZfZXZlbnQiLCJnZXRfc2ltdWxhdGlvbl90aW1lX29mX2V2ZW50IiwicHJpbnRfdHJhY2UiLCJ0cmFuc2Zvcm1fdHJhY2VfZ2VuIiwibG9nX21lc3NhZ2UiLCJkZWJ1Z19tZXNzYWdlIiwicHJvZmlsaW5nX2V2ZW50Iiwia2FwcGFfaGFuZGxlciIsInNoYWxsX3dlX2NvbXB1dGUiLCJzdGgkMCIsInByaW50X2lmX3plcm8iLCJwcm9maWxpbmdfaW5mbyQwIiwibG9nX21lc3NhZ2UkMCIsInByZXRyYWNlJDAiLCJwcm9maWxpbmdfaW5mbyQxIiwidHJhY2UkMCIsInRyYWNlJDEiLCJwcm9maWxpbmdfaW5mbyQyIiwibW9uYWRpY19saWZ0IiwibWFrZV91bmFtYmlndW91cyIsInNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZiIsInN0aCQxIiwibGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzIiwicmVxdWlyZW1lbnQiLCJlZmZlY3QiLCJ0cmFjZSQyIiwib25fdGhlX2ZseV9jdXRfaW5pdCIsIm9uX3RoZV9mbHlfY3V0X3N0ZXAiLCJvbl90aGVfZmx5X2N1dF9maW5hbGl6ZSIsImN1dF9zdGF0ZSIsInJlbW92ZV9vYnNfYmVmb3JlIiwibGFzdF9pbmZvIiwibGFzdF9laWQiLCJsYXN0X2luZm8kMCIsInNjb3JlIiwic2NvcmUkMCIsInJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnMiLCJyZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIiwic3RvcnlfdGFibGUiLCJnZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWIiLCJlcnJvcl9pbml0IiwiZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tIiwiZXh0cmFjdF9vYnNlcnZhYmxlX2hpdF9mcm9tX211IiwiYyQwIiwiY2F1c2FsX3ByZWZpeF9vZl9hbl9vYnNlcnZhYmxlIiwib2JzZXJ2YWJsZV9pZCIsImV2ZW50X2lkX2xpc3QiLCJleHBvcnRfbXVzaWNhbF9ncmlkX3RvX3hscyIsInByaW50X211c2ljYWxfZ3JpZCIsImNyZWF0ZV9zdG9yeV90YWJsZSIsImNsb3NlX3Byb2dyZXNzX2Jhcl9vcHQiLCJwcmludF9mYWlscyIsImluY19mYWlscyIsImZvbGRfc3RvcnlfdGFibGVfZ2VuIiwibl9zdG9yaWVzX2lucHV0Iiwibl9mYWlscyIsInByb2dyZXNzX2JhciQwIiwibl9mYWlscyQwIiwiZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzIiwiZm9sZF9zdG9yeV90YWJsZV93aXRob3V0X3Byb2dyIiwiZ2V0X2NvdW50ZXIiLCJzdG9yZV90cmFjZSIsImNvbXB1dGF0aW9uX2luZm8kMSIsIm9ic19pbmZvIiwiY29tcHV0YXRpb25faW5mbyQyIiwidHJhY2UyIiwiY29tcHV0YXRpb25faW5mbyIsImNvbXB1dGF0aW9uX2luZm8kMCIsImNvbXB1dGF0aW9uX2luZm8kMyIsImNvbXB1dGF0aW9uX2luZm8kNCIsInN0b3J5X3RhYmxlJDAiLCJjb21wdXRhdGlvbl9pbmZvJDUiLCJmbGF0dGVuX3N0b3J5X3RhYmxlIiwibGlzdF9vcmRlciQwIiwic3Ryb25nbHlfY29tcHJlc3MiLCJ3ZWFrbHlfY29tcHJlc3MiLCJjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCIsImNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdCIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbCIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYSIsImVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9wYSQwIiwiZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3BhJDEiLCJzb3J0X3N0b3J5X2xpc3QiLCJleHBvcnRfc3RvcnlfdGFibGUiLCJoYXNfb2JzIiwiZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uIiwic3RoJDIiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ5Iiwibl9mYWlsIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDEiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kMiIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ0IiwiYmFyJDAiLCJuX2ZhaWwkMCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ1Iiwib3V0cHV0X29wdCIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQzIiwicHJvZmlsaW5nX2luZm9ybWF0aW9uJDYiLCJwcm9maWxpbmdfaW5mb3JtYXRpb24kNyIsInByb2ZpbGluZ19pbmZvcm1hdGlvbiQ4IiwiZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vIiwibG9nX3N0ZXAiLCJvYnNlcnZhYmxlX2hpdCIsImNhdXNhbF9wYXN0IiwiaW5mbyQyIiwiY29weV9sb2dfaW5mbyIsImNvbXBhcmVfY2Fub25pY2FsX2Zvcm0iLCJjb21wdXRlX2Nhbm9uaWNhbF9mb3JtIiwia2V5X29mX2V2ZW50IiwiY3JlYXRlX2JsYWNrX2xpc3QiLCJibGFja2xpc3QiLCJibGFja2xpc3QkMCIsInJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCIsImxhc3RfZWlkX2luX3ByZXRyYWNlIiwicHJvZmlsaW5nX3N0YXRlX3RvX2pzb24iLCJlcnJvcl9saXN0X3RvX2pzb24iLCJjb21wdXRhdGlvbl9zdGVwc190b19qc29uIiwiY21wX29wdCIsImNtcF9mbG9hdF9vcHQiLCJjbXBfaW50X29wdCIsImdlbl9iaW5fb3B0Iiwib3AiLCJhZGRfZmxvYXRfb3B0IiwibXVsdF9mbG9hdF9vcHQiLCJtdWx0X2ludF9vcHQiLCJtYXhfb3B0IiwiY2Zsb3dfcGFyYW1ldGVycyIsIm5ldmVyIiwiZ2xvYmFsX3RyYWNlX3NpbXBsaWZpY2F0aW9uIiwic3RvcmVfcmVzdWx0IiwiZ2xvYmFsX3N0YXR1cyIsInN0b3BfbmV4dCIsImdsb2JhbF9zdGF0dXMkMCIsInN0b3AkMCIsImdsb2JhbF9zdGF0dXMkMSIsImdsb2JhbF9zdGF0dXMkMiIsInN0YXJ0X2l0ZXJhdGlvbiIsImVuZF9zaW1wbGlmaWNhdGlvbiIsImdldF9zdGRfYnVmZmVyIiwiY2Zsb3dfc3RhdGUiLCJnZXRfZXJyX2J1ZmZlciIsImdldF9wcm9maWxpbmdfYnVmZmVyIiwiZ2V0X2JyYW5jaF9hbmRfY3V0X3N0YXR1cyIsImdldF9wcm9ncmVzc19iYXIiLCJnZXRfY3VycmVudF9waGFzZV90aXRsZSIsImdldF9jYXVzYWxfZmxvd190YWJsZSIsImdldF90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlIiwiZ2V0X3dlYWtfY29tcHJlc3Npb25fdGFibGUiLCJnZXRfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlIiwiZ2V0X2Vycm9yX2xpc3QiLCJzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IiwiY2Zsb3dfc3RhdGVfcHRyIiwicmVzZXRfY3VycmVudF9waGFzZV90aXRsZV9hdXgiLCJzYXZlX3Byb2dyZXNzX2Jhcl9hdXgiLCJyZXNldF9wcm9ncmVzc19iYXJfYXV4Iiwic2F2ZV9jYXVzYWxfZmxvd190YWJsZV9hdXgiLCJzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUiLCJzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXUiLCJzYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZV8iLCJzYXZlX2Vycm9yX2xvZ19hdXgiLCJyZWRpcmVjdF9zdGRfYnVmZmVyX2F1eCIsImxvZ2dlcnMiLCJyZWRpcmVjdF9lcnJfYnVmZmVyX2F1eCIsInJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXJfYXV4IiwicmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyIiwiY2Zsb3dfc3RhdGVfcHRyX29wdCIsImRhdGEiLCJsaWZ0X3Jlc2V0Iiwic2F2ZV9jYXVzYWxfZmxvd190YWJsZSIsInNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSQwIiwic2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlIiwic2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUiLCJzYXZlX2Vycm9yX2xpc3QiLCJyZWRpcmVjdF9zdGRfYnVmZmVyIiwicmVkaXJlY3RfZXJyX2J1ZmZlciIsInJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXIiLCJyZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXIkMCIsImluaXRfc2VjcmV0X2xvZ19pbmZvIiwiZG9fbm90X2xvZyIsImNvbXByZXNzX2FuZF9wcmludCIsImpzX2ludGVyZmFjZSIsInBhcmFtZXRlciQxIiwicGFyYW1ldGVyJDEyIiwicGFyYW1ldGVyJDIiLCJjYXVzYWxfdHJhY2Vfb24iLCJ3ZWFrX2NvbXByZXNzaW9uX29uIiwic3Ryb25nX2NvbXByZXNzaW9uX29uIiwidGFibGUxIiwidGFibGUyIiwidGFibGUzIiwidGFibGU0IiwicGFyYW1ldGVyJDMiLCJwYXJhbWV0ZXIkNCIsInBhcmFtZXRlciQ1IiwicGFyYW1ldGVyJDYiLCJwYXJhbWV0ZXIkNyIsInBhcmFtZXRlciQ4IiwicGFyYW1ldGVyJDkiLCJwYXJhbWV0ZXJfY2F1c2FsIiwicGFyYW1ldGVyX3dlYWsiLCJwYXJhbWV0ZXJfc3Ryb25nIiwic3RlcF9saXN0JDAiLCJzdHJvbmckMCIsImVycm9yJDE5Iiwic3RlcF9saXN0JDEiLCJzdGVwX2xpc3QkMiIsInN0ZXBfbGlzdCQzIiwidHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uIiwiY2F1c2FsX3N0b3J5X2FycmF5IiwiY2F1c2FsX3N0b3J5X2xpc3QiLCJjYXVzYWxfc3RvcnlfbGlzdCQwIiwiY2F1c2FsX3RhYmxlIiwicGFyYW1ldGVyX2RlZXBlciIsImV2ZW50X2xpc3QkMyIsIndlYWtseV9zdG9yeV90YWJsZSIsInRhYmxlMiQwIiwidGFibGUzJDAiLCJ3ZWFrX3N0b3J5X3RhYmxlIiwiY2F1c2FsX3N0b3J5X3RhYmxlIiwiY2F1c2FsX3N0b3J5X3RhYmxlJDAiLCJ3ZWFrX3N0b3J5X3RhYmxlJDAiLCJjYXVzYWxfc3RvcnlfdGFibGUkMSIsImVycm9yJDI5IiwiY2F1c2FsX3N0b3J5X3RhYmxlJDIiLCJlcnJvciQzMCIsIm5fY2F1c2FsX3N0b3JpZXMiLCJwYXJhbWV0ZXIkMTEiLCJsaXN0X2luZm8iLCJ3ZWFrbHlfc3RvcnlfdGFibGUkMCIsImVycm9yJDMxIiwid2Vha2x5X3N0b3J5X3RhYmxlJDEiLCJlcnJvciQzMiIsIm5fd2Vha19zdG9yaWVzIiwicGFyYW1ldGVyJDEwIiwicmVmaW5lZF9ldmVudF9saXN0Iiwic3Ryb25nbHlfc3RvcnlfdGFibGUiLCJzdHJvbmdseV9zdG9yeV90YWJsZSQwIiwiZXJyb3IkMTciLCJlcnJvciQxOCIsImV4cG9ydCQwIiwiZXJyb3IkMjAiLCJlcnJvciQyMSIsImVycm9yJDIyIiwiZXhwb3J0JDEiLCJlcnJvciQyMyIsImVycm9yJDI0IiwiZXJyb3IkMjUiLCJleHBvcnQkMiIsImVycm9yJDI2IiwiZXJyb3IkMjciLCJlcnJvciQyOCIsIm9uX21lc3NhZ2UiLCJ0ZXh0Iiwic3QiLCJub25lJDAiLCJiJDEiLCJ3ZWFrJDAiLCJiJDIiLCJlJDAiLCJmb2xkIiwiY29tcGFyZV9saXN0IiwiaDEiLCJoMiIsImNvbXBhcmVfc3VwZXJsaXN0Iiwic29ydCIsInN1cGVybGlzdCIsImR1bXBfc3VwZXJfbGlzdCIsImNvbXBhcmVfZnN0X3RyaXBsZSIsInNtYXNoIiwiYWNjdSQxIiwidG9fZG8kMSIsImN1cnJlbnQkMiIsInRvX2RvIiwiY3VycmVudCIsInRvX2RvJDAiLCJjdXJyZW50JDAiLCJjdXJyZW50JDEiLCJlcnJvcl9tc2ciLCJvcHQiLCJyYW5nZSIsInRleHQiLCJzdGgiLCJzZXZlcml0eSIsInJlc3VsdF9lcnJvcl9tc2ciLCJyZXN1bHRfY29kZSIsIm1lc3NhZ2UiLCJyZXN1bHRfbWVzc2FnZXMiLCJtZXNzYWdlcyIsInJlc3VsdF9lcnJvcl9leGNlcHRpb24iLCJlIiwibWV0aG9kX2hhbmRsZXJfZXJyb3JzIiwibWgiLCJ1bmNhdWdodCIsImNhdWdodCIsIngiLCJsIiwibWV0aG9kX2hhbmRsZXJfbWVzc2FnZXMiLCJyZXN1bHRfa2FzYSIsInJlc3VsdF9iaW5kX2x3dCIsIm9rIiwic3RhdHVzIiwidmFsdWUiLCJkYXRhIiwicmVzdWx0X2ZvbGRfbHd0IiwiZiIsImlkIiwidCIsImgiLCJyZXN1bHQiLCJyZXN1bHRfY29tYmluZSIsImRhdGFfMSIsImRhdGFfciIsIm1kNXN1bSIsIndyaXRlX3NuYXBzaG90X2lkIiwic3RyaW5nX29mX3NuYXBzaG90X2lkIiwibGVuIiwib2IiLCJyZWFkX3NuYXBzaG90X2lkIiwic25hcHNob3RfaWRfb2Zfc3RyaW5nIiwicyIsIndyaXRlX3NuYXBzaG90Iiwic3RyaW5nX29mX3NuYXBzaG90IiwicmVhZF9zbmFwc2hvdCIsInNuYXBzaG90X29mX3N0cmluZyIsInN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwiLCJzbmFwc2hvdF9kZXRhaWxfb2Zfc3RyaW5nIiwid3JpdGVfc25hcHNob3RfaWRfbGlzdCIsInJlYWRfc25hcHNob3RfaWRfbGlzdCIsInN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nIiwic25hcHNob3RfY2F0YWxvZ19vZl9zdHJpbmciLCJ3cml0ZV9zaXRlX2dyYXBoIiwic3RyaW5nX29mX3NpdGVfZ3JhcGgiLCJyZWFkX3NpdGVfZ3JhcGgiLCJzaXRlX2dyYXBoX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fc3RhdGUiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9zdGF0ZSIsInJlYWRfc2ltdWxhdGlvbl9zdGF0ZSIsInAiLCJsYiIsIngkMCIsIngkMSIsInNpbXVsYXRpb25fc3RhdGVfb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9zZWVkIiwic3RyaW5nX29mX3NpbXVsYXRpb25fc2VlZCIsInJlYWRfc2ltdWxhdGlvbl9zZWVkIiwic2ltdWxhdGlvbl9zZWVkX29mX3N0cmluZyIsIndyaXRlX2ludF9udWxsYWJsZSIsInJlYWRfaW50X251bGxhYmxlIiwid3JpdGVfc2ltdWxhdGlvbl9wcm9ncmVzcyIsImlzX2ZpcnN0Iiwic3RyaW5nX29mX3NpbXVsYXRpb25fcHJvZ3Jlc3MiLCJyZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3MiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUiLCJmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUkMCIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbiIsImZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbiQwIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFjIiwiZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19pc19yIiwicG9zIiwiaSIsImYkMCIsImkkMCIsIngkMiIsIngkMyIsIngkNCIsIngkNSIsIngkNiIsIngkNyIsIngkOCIsIngkOSIsIngkMTAiLCJzaW11bGF0aW9uX3Byb2dyZXNzX29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSIsInJlYWRfc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIiwid3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJzdHJpbmdfb2Zfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJyZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyIiwiZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCIsImZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aSIsImZpZWxkX3NpbXVsYXRpb25fc2VlZCIsImZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UiLCJzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX291dHB1dCIsIndyaXRlX3Bsb3QiLCJ3cml0ZV9kaW5zIiwid3JpdGVfZmlsZV9saW5lcyIsIndyaXRlX3NuYXBzaG90cyIsIndyaXRlX2lucHV0cyIsIndyaXRlX2xvZ19tZXNzYWdlcyIsInN0cmluZ19vZl9zaW11bGF0aW9uX291dHB1dCIsInJlYWRfc2ltdWxhdGlvbl9vdXRwdXQiLCJyZWFkX3Bsb3QiLCJyZWFkX2RpbnMiLCJyZWFkX2ZpbGVfbGluZXMiLCJyZWFkX3NuYXBzaG90cyIsInJlYWRfaW5wdXRzIiwicmVhZF9sb2dfbWVzc2FnZXMiLCJmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IiwiZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbCIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaCIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyIsImZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZSIsInNpbXVsYXRpb25fb3V0cHV0X29mX3N0cmluZyIsIndyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIiwic3RyaW5nX29mX3NpbXVsYXRpb25faW50ZXJ2ZW50IiwicmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiIsInNpbXVsYXRpb25faW50ZXJ2ZW50aW9uX29mX3N0ciIsIndyaXRlX291dHB1dF85MzQwYWQ2IiwicmVhZF9vdXRwdXRfOTM0MGFkNiIsInN0cmluZ19vZl9zaW11bGF0aW9uX2luZm9fb3V0cCIsInNpbXVsYXRpb25faW5mb19vdXRwdXRfb2Zfc3RyaSIsIndyaXRlX3NpbXVsYXRpb25faW5mbyIsInN0cmluZ19vZl9zaW11bGF0aW9uX2luZm8iLCJyZWFkX3NpbXVsYXRpb25faW5mbyIsImZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyIsImZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQiLCJzaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIiwid3JpdGVfc2ltdWxhdGlvbl9pZCIsInN0cmluZ19vZl9zaW11bGF0aW9uX2lkIiwicmVhZF9zaW11bGF0aW9uX2lkIiwic2ltdWxhdGlvbl9pZF9vZl9zdHJpbmciLCJ3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0Iiwic3RyaW5nX29mX3NpbXVsYXRpb25fYXJ0aWZhY3QiLCJyZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QiLCJmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXUiLCJzaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyIsIndyaXRlX3NoYXJpbmdfbGV2ZWwiLCJzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCIsInJlYWRfc2hhcmluZ19sZXZlbCIsInNoYXJpbmdfbGV2ZWxfb2Zfc3RyaW5nIiwid3JpdGVfcmVzdWx0Iiwid3JpdGVfb2siLCJ3cml0ZV9lcnJvciIsInN0cmluZ19vZl9yZXN1bHQiLCJyZWFkX3Jlc3VsdCIsInJlYWRfb2siLCJyZWFkX2Vycm9yIiwicmVzdWx0X29mX3N0cmluZyIsIndyaXRlX3BhcnNpbmdfY29tcGlsIiwic3RyaW5nX29mX3BhcnNpbmdfY29tcGlsIiwicmVhZF9wYXJzaW5nX2NvbXBpbCIsInBhcnNpbmdfY29tcGlsX29mX3N0cmluZyIsIndyaXRlX25iciIsInN0cmluZ19vZl9uYnIiLCJyZWFkX25iciIsIm5icl9vZl9zdHJpbmciLCJ3cml0ZV9zdHJpbmdfbmJyX2xpc3QiLCJzdGRfdHVwbGUiLCJlbmRfb2ZfdHVwbGUiLCJ4MCIsIngxIiwicmVhZF9zdHJpbmdfbmJyX2xpc3QiLCJ3cml0ZV9wcm9qZWN0X3BhcnNlIiwic3RyaW5nX29mX3Byb2plY3RfcGFyc2UiLCJyZWFkX3Byb2plY3RfcGFyc2UiLCJmaWVsZF9wYXR0ZXJuX3NoYXJpbmciLCJmaWVsZF9hc3QiLCJmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiIsInByb2plY3RfcGFyc2Vfb2Zfc3RyaW5nIiwid3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIiLCJzdHJpbmdfb2ZfcHJvamVjdF9wYXJhbWV0ZXIiLCJyZWFkX3Byb2plY3RfcGFyYW1ldGVyIiwiZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjIiwicHJvamVjdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIiwid3JpdGVfcGxvdF9saW1pdCIsInN0cmluZ19vZl9wbG90X2xpbWl0IiwicmVhZF9wbG90X2xpbWl0IiwiZmllbGRfcGxvdF9saW1pdF9vZmZzZXQiLCJmaWVsZF9wbG90X2xpbWl0X3BvaW50cyIsInBsb3RfbGltaXRfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3Bsb3RfcGFyYW1ldGVyIiwicGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIiwic3RyaW5nX29mX3Bsb3QiLCJwbG90X29mX3N0cmluZyIsIndyaXRlX21lc3NhZ2UiLCJzdHJpbmdfb2ZfbWVzc2FnZSIsInJlYWRfbWVzc2FnZSIsIm1lc3NhZ2Vfb2Zfc3RyaW5nIiwid3JpdGVfbG9nX21lc3NhZ2UiLCJzdHJpbmdfb2ZfbG9nX21lc3NhZ2UiLCJyZWFkX2xvZ19tZXNzYWdlIiwibG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIiwid3JpdGVfa2FwcGFfY29kZSIsInN0cmluZ19vZl9rYXBwYV9jb2RlIiwicmVhZF9rYXBwYV9jb2RlIiwia2FwcGFfY29kZV9vZl9zdHJpbmciLCJ3cml0ZV9zdHJpbmdfbnVsbGFibGUiLCJyZWFkX3N0cmluZ19udWxsYWJsZSIsIndyaXRlX2ZpbGVfbGluZSIsInN0cmluZ19vZl9maWxlX2xpbmUiLCJyZWFkX2ZpbGVfbGluZSIsImZpZWxkX2ZpbGVfbGluZV9uYW1lIiwiZmllbGRfZmlsZV9saW5lX3RleHQiLCJmaWxlX2xpbmVfb2Zfc3RyaW5nIiwid3JpdGVfZmlsZV9saW5lX2xpc3QiLCJyZWFkX2ZpbGVfbGluZV9saXN0Iiwic3RyaW5nX29mX2ZpbGVfbGluZV9kZXRhaWwiLCJmaWxlX2xpbmVfZGV0YWlsX29mX3N0cmluZyIsIndyaXRlX3N0cmluZ19saXN0IiwicmVhZF9zdHJpbmdfbGlzdCIsInN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyIsImZpbGVfbGluZV9jYXRhbG9nX29mX3N0cmluZyIsIndyaXRlX2Vudmlyb25tZW50X2luZm8iLCJzdHJpbmdfb2ZfZW52aXJvbm1lbnRfaW5mbyIsInJlYWRfZW52aXJvbm1lbnRfaW5mbyIsImZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIiwiZmllbGRfZW52aXJvbm1lbnRfYnVpbGQiLCJlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyIsIndyaXRlX2Rpbl9pZCIsInN0cmluZ19vZl9kaW5faWQiLCJyZWFkX2Rpbl9pZCIsImRpbl9pZF9vZl9zdHJpbmciLCJ3cml0ZV9kaW5faWRfbGlzdCIsInJlYWRfZGluX2lkX2xpc3QiLCJzdHJpbmdfb2ZfZGluX2NhdGFsb2ciLCJkaW5fY2F0YWxvZ19vZl9zdHJpbmciLCJ3cml0ZV9kaW4iLCJzdHJpbmdfb2ZfZGluIiwicmVhZF9kaW4iLCJkaW5fb2Zfc3RyaW5nIiwibmV3X21haWxib3giLCJyZWNlaXZlIiwibWFpbGJveCIsInRocmVhZCIsInRocmVhZCQwIiwib3V0IiwidGhyZWFkJDEiLCJ0aHJlYWQkMiIsInRocmVhZCQzIiwidGhyZWFkJDQiLCJ0aHJlYWQkNSIsInRocmVhZCQ2IiwianNvbiIsInRocmVhZCQ3IiwianNvbiQwIiwidGhyZWFkJDgiLCJqc29uJDEiLCJ0aHJlYWQkOSIsImpzb24kMiIsInRocmVhZCQxMCIsImpzb24kMyIsInRocmVhZCQxMSIsImpzb24kNCIsInRocmVhZCQxMiIsImpzb24kNSIsInRocmVhZCQxMyIsImpzb24kNiIsInRocmVhZCQxNCIsImpzb24kNyIsInRocmVhZCQxNSIsInRocmVhZCQxNiIsInRocmVhZCQxNyIsInRocmVhZCQxOCIsInRocmVhZCQxOSIsInRocmVhZCQyMCIsInRocmVhZCQyMSIsImlzX2NvbXB1dGluZyIsInNlbGZfMSIsImhhbmRsZSIsInJlcXVlc3QiLCJmZWVkZXIiLCJiIiwiZmlsZV9pZCIsImZpbGVfY29udGVudCIsImZpbGVfcG9zaXRpb24iLCJhc3QiLCJjb21waWwiLCJhY2N1cmFjeSIsImZ3ZCIsImJ3ZCIsIm9yaWdpbiIsInRvdGFsIiwiZmlsZW5hbWUiLCJhY2N1cmFjeV9jbSIsImFjY3VyYWN5X3NjYyIsInBhdHRlcm5TaGFyaW5nIiwib3ZlcndyaXRlcyIsInBhdXNlIiwicGFyYW1ldGVyIiwiaW50ZXJ2ZW50aW9uIiwid3JpdGVfc25hcHNob3RfZGV0YWlsIiwicmVhZF9zbmFwc2hvdF9kZXRhaWwiLCJ3cml0ZV9zbmFwc2hvdF9jYXRhbG9nIiwicmVhZF9zbmFwc2hvdF9jYXRhbG9nIiwid3JpdGVfc2ltdWxhdGlvbl9lZmZpY2llbmN5Iiwic3RyaW5nX29mX3NpbXVsYXRpb25fZWZmaWNpZW5jIiwicmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3kiLCJzaW11bGF0aW9uX2VmZmljaWVuY3lfb2Zfc3RyaW4iLCJ3cml0ZV9hcGlfcmVzdWx0Iiwic3RyaW5nX29mX2FwaV9yZXN1bHQiLCJyZWFkX2FwaV9yZXN1bHQiLCJhcGlfcmVzdWx0X29mX3N0cmluZyIsIndyaXRlX2FwaV9tZXNzYWdlIiwic3RyaW5nX29mX2FwaV9tZXNzYWdlIiwicmVhZF9hcGlfbWVzc2FnZSIsImFwaV9tZXNzYWdlX29mX3N0cmluZyIsIndyaXRlX2FwaV9tZXNzYWdlX2xpc3QiLCJyZWFkX2FwaV9tZXNzYWdlX2xpc3QiLCJ3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyIsInJlYWRfZmlsZV9saW5lX2NhdGFsb2ciLCJ3cml0ZV9kaW5fY2F0YWxvZyIsInJlYWRfZGluX2NhdGFsb2ciLCJ3cml0ZV9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQiLCJ4JDExIiwieCQxMiIsIngkMTMiLCJ4JDE0IiwieCQxNSIsIngkMTYiLCJzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZV9jb250ZW4iLCJyZWFkX3Jlc3RfcmVzcG9uc2VfY29udGVudCIsIngkMzUiLCJ4JDE3IiwieCQyNiIsIngkMjUiLCJ4JDI0IiwieCQyMyIsIngkMjIiLCJ4JDIxIiwieCQyMCIsIngkMTkiLCJ4JDE4IiwieCQzNCIsIngkMzMiLCJ4JDMyIiwieCQzMSIsIngkMzAiLCJ4JDI5IiwieCQyOCIsIngkMjciLCJyZXN0X3Jlc3BvbnNlX2NvbnRlbnRfb2Zfc3RyaW4iLCJ3cml0ZV9yZXN1bHRfNGNhNmI4ZiIsInJlYWRfcmVzdWx0XzRjYTZiOGYiLCJzdHJpbmdfb2ZfcmVzdF9yZXNwb25zZSIsInJlc3RfcmVzcG9uc2Vfb2Zfc3RyaW5nIiwid3JpdGVfcGxvdF9wYXJhbWV0ZXIiLCJyZWFkX3Bsb3RfcGFyYW1ldGVyIiwid3JpdGVfcmVzdF9yZXF1ZXN0Iiwic3RyaW5nX29mX3Jlc3RfcmVxdWVzdCIsInJlYWRfcmVzdF9yZXF1ZXN0IiwicmVzdF9yZXF1ZXN0X29mX3N0cmluZyIsIndyaXRlX3Jlc3BvbnNlX2NvbnRlbnQiLCJzdHJpbmdfb2ZfcmVzcG9uc2VfY29udGVudCIsInJlYWRfcmVzcG9uc2VfY29udGVudCIsInJlc3BvbnNlX2NvbnRlbnRfb2Zfc3RyaW5nIiwid3JpdGVfcmVzdWx0Xzg5MGQ5ZmUiLCJyZWFkX3Jlc3VsdF84OTBkOWZlIiwic3RyaW5nX29mX3Jlc3BvbnNlIiwicmVzcG9uc2Vfb2Zfc3RyaW5nIiwid3JpdGVfcmVxdWVzdCIsInN0cmluZ19vZl9yZXF1ZXN0IiwicmVhZF9yZXF1ZXN0IiwicmVxdWVzdF9vZl9zdHJpbmciLCJ3cml0ZV9pZCIsInN0cmluZ19vZl9pZCIsInJlYWRfaWQiLCJpZF9vZl9zdHJpbmciLCJ3cml0ZV9kYXRhIiwicmVhZF9kYXRhIiwiZmllbGRfaWQiLCJmaWVsZF9kYXRhIiwid3JpdGVfZmlsZV9saW5lX2RldGFpbCIsInJlYWRfZmlsZV9saW5lX2RldGFpbCIsIm9uX21lc3NhZ2UiLCJtYW5hZ2VyIiwicG9zdF9tZXNzYWdlIiwidGV4dF9tZXNzYWdlIiwiaGFuZGxlciIsInBhY2siLCJtZXNzYWdlJDAiLCJmaWxlX2xpbmVfaWQiLCJzaW11bGF0aW9uX2ludGVydmVudGlvbiIsImRpbl9pZCIsInZhcmlhYmxlX292ZXJ3cml0dGVuIiwicGF0dGVybl9zaGFyaW5nIiwicGxvdF9wYXJhbWV0ZXIiLCJzbmFwc2hvdF9pZCIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwic2ltdWxhdGlvbl9wYXJhbWV0ZXIkMCIsInJlc3BvbnNlIiwicGF1c2VfY29uZGl0aW9uIiwiZmlsZV9saW5lX2xpc3QiLCJmbHV4X21hcF9pZCIsImZsdXhfbWFwIiwibG9nX21lc3NhZ2UiLCJwbG90Iiwic25hcHNob3QiLCJzaW11bGF0aW9uX3N0YXR1cyIsImVmZmljaWVuY3kiLCJpbmZvIiwic2ltdWxhdGlvbl9pZCIsInNlbGZfMiIsInJlc3BvbnNlX3RleHQiLCJtYWlsYm94ZXMiLCJtYWlsYm94ZXMkMCIsIm1lc3NhZ2VfdGV4dCIsImFwaV9zbmFwc2hvdF9kb3QiLCJhcGlfc25hcHNob3Rfa2FwcGEiLCJhcGlfc2ltdWxhdGlvbl9zdGF0dXMiLCJwcm9ncmVzcyIsImRldGFpbCIsIm91dHB1dCIsImFnZW50X2NvdW50Iiwic3BlY2llcyIsIndyaXRlMSIsIm9jIiwibiIsIndyaXRlMiIsIndyaXRlNCIsIndyaXRlNF9pbnQiLCJ3cml0ZXN0cmluZyIsImRvc3RpbWVfb2ZfdW5peHRpbWUiLCJ0bSIsIm9wZW5fb3V0IiwiY29tbWVudCIsImNsb3NlX291dCIsIm9maWxlIiwic3RhcnRfY2QiLCJ2ZXJzaW9uIiwiZGF0ZSIsInRpbWUiLCJjZF9zaXplIiwibnVtX2VudHJpZXMiLCJhZGRfZW50cnlfaGVhZGVyIiwiZXh0cmEiLCJsZXZlbCIsIm10aW1lIiwiYWRkX2RhdGFfZGVzY3JpcHRvciIsImNyYyIsImNvbXByX3NpemUiLCJ1bmNvbXByX3NpemUiLCJlbnRyeSIsImFkZF9lbnRyeSIsIm5hbWUiLCJzdGgkMCIsInN0aCQxIiwic3RoJDIiLCJjcmMkMCIsImUkMCIsImFkZF9lbnRyeV9nZW5lcmF0b3IiLCJmaW5pc2hlZCIsImNoZWNrIiwiYnVmIiwibXNnX3Byb2Nlc3Nfbm90X3BhdXNlZCIsImV4biIsImNhdGNoX2Vycm9yIiwicmFuZ2UkMCIsInJhbmdlJDEiLCJtZXNzYWdlJDEiLCJlcnJvciIsIm1lc3NhZ2UkMiIsInBhcnNlIiwidmFyX292ZXJ3cml0ZSIsInN5c3RlbV9wcm9jZXNzIiwieWllbGQkMCIsImxvZ19idWZmZXIiLCJsb2dfZm9ybSIsImlucHV0c19idWZmZXIiLCJpbnB1dHNfZm9ybSIsImNvbmYiLCJ3YXJuaW5nIiwibXNnIiwiYXN0X2NvbXBpbGVkX2RhdGEiLCJsYXN0eWllbGQiLCJvdXRwdXRzIiwiaW5pdF9sIiwid2l0aF90cmFjZSIsImVudiIsImNvdW50ZXIiLCJ0aGVTZWVkIiwidGhlU2VlZCQwIiwicmFuZG9tX3N0YXRlIiwic3RhdGUiLCJncmFwaCIsIm1heENvbnNlY3V0aXZlQ2xhc2giLCJkdW1wSWZEZWFkbG9ja2VkIiwiY29udGFjdF9tYXAiLCJzaW11bGF0aW9uIiwiZmx1eF9uYW1lIiwibmV3X29ic2VydmFibGVzIiwiZmlsZV9saW5lIiwibmEiLCJsaW5lcyIsInN0IiwiYWxyZWFkeV90aGVyZSIsInNuYXBzaG90X2ZpbGUiLCJtaXgiLCJmaWxlIiwiZmluYWxpemVfc2ltdWxhdGlvbiIsInJ1bl9zaW11bGF0aW9uIiwic3RvcHBlZCIsInJzdG9wIiwiaXRlciIsInN0b3AiLCJzdG9wJDAiLCJzdGFydCIsImxleGJ1ZiIsInNlZWQiLCJmaXJzdF9vYnMiLCJwZXJ0dXJiYXRpb24iLCJmb3JtYXR0ZXIiLCJ2IiwiY29udGludWUkMCIsImdldF9yYXdfdHJhY2UiLCJnZXRfcmF3X2FzdCIsIm0kMSIsIm0kMCIsIm0iLCJiaW5kX3NpbXVsYXRpb24iLCJzaW11bGF0aW9uJDAiLCJkZXRhaWxfcHJvamVjdGlvbiIsInByb2plY3Rpb24iLCJlcnJvcnMiLCJzaW11bGF0aW9uX2RldGFpbCIsImZpbGVfbGluZXMiLCJmaWxlX2xpbmVfY2F0YWxvZyIsImZsdXhfbWFwX2NhdGFsb2ciLCJmbHV4X21hcHNfbGlzdCIsInNlbGZfMyIsInNlbGZfNCIsInBsb3RfbGltaXQiLCJwbG90X3RpbWVfc2VyaWVzIiwicGxvdF9kZXRhaWxfc2l6ZSIsInBsb3RfbGltaXRfb2Zmc2V0IiwicGxvdF9saW1pdF9wb2ludHMiLCJvZmZzZXQiLCJuYiIsIm5iJDAiLCJuZXdfcGxvdF90aW1lX3NlcmllcyIsInNlbGZfNSIsInNuYXBzaG90cyIsImFjYyIsInNuYXBzaG90X2NhdGFsb2ciLCJzbmFwc2hvdF9saXN0Iiwic2VsZl82IiwiaGFyYWtpcmkiLCJzZWVkJDAiLCJzaW11bGF0aW9uX3NlZWQiLCJmYWNhZGUiLCJjb250ZW50IiwiZmx1eCIsImRpbl9uYW1lIiwibmFtZSQwIiwic2ltdWxhdGlvbl9wZXJ0dXJiYXRpb24iLCJwcmludF9jb21wcmVzc2lvbl9tb2RlcyIsInN0cm9uZyIsIndlYWsiLCJjYXVzYWwiLCJpbml0aWFsX3N0YXRlIiwidXBkYXRlX3N0YXRlIiwiaW5pdF9zdGF0ZSIsImN1cnJlbnRfc3RhdGUiLCJtJDIiLCJjIiwiaW5mb3MiLCJjbSIsInRyYWNlX3RleHQiLCJyZXF1ZXN0JDQiLCJyZXF1ZXN0JDMiLCJyZXF1ZXN0JDIiLCJyZXF1ZXN0JDEiLCJyZXF1ZXN0JDAiLCJlcnIiLCJpZCQwIiwicG9zdCIsIm91dGJ1ZiIsIm91dGIiLCJhIiwibyIsImIkMCIsImlzX3J1bm5pbmciLCJydW50aW1lX3N0YXRlIiwic3RhdGVfZXJyb3IiLCJjbGVhcl9lcnJvcnMiLCJsb2NhdGlvbiIsImhhc19lcnJvcnMiLCJhZGRfZXJyb3IiLCJlcnJvcnMiLCJjdXJyZW50X3N0YXRlX2Vycm9yIiwibmV3X3N0YXRlX2Vycm9yIiwiYWNjIiwidmFsdWUiLCJ3cmFwIiwib3B0IiwibG9jIiwiciIsInN0aCIsImFwcGVuZCIsInVybF9hcmdzIiwib3B0Iiwia2V5Iiwic3RoIiwiZGVmYXVsdCQwIiwiYXJncyIsImsiLCJzb21lIiwiY29uc3RydWN0b3JfcHJvY2Vzc19jb25maWd1cmF0IiwiY3JlYXRlX3Byb2Nlc3NfY29uZmlndXJhdGlvbiIsIm9uU3Rkb3V0Iiwib25TdGRlcnIiLCJvbkNsb3NlIiwib25FcnJvciIsImNvbW1hbmQiLCJhcmdzIiwiY29uZmlndXJhdGlvbiIsIngiLCJvblN0ZG91dCQwIiwib25TdGRlcnIkMCIsIm9uQ2xvc2UkMCIsIm9uRXJyb3IkMCIsInNwYXduX3Byb2Nlc3MiLCJsYXVuY2hfYWdlbnQiLCJtZXNzYWdlX2RlbGltaXRlciIsImhhbmRsZXIiLCJidWZmZXIiLCJtc2ciLCJtc2ckMCIsInByZWZpeCIsInN1ZmZpeCIsIm1zZyQxIiwic2VsZl8xIiwidGltZW91dCIsIm9wdCIsInN0aCIsInN0aCQwIiwic3dpdGNoX3JlIiwic3Rvcl9jb21tYW5kIiwic3dpdGNoX21haWxib3giLCJ1cGRhdGVfc3Rvcl9zdGF0ZSIsInN0b3Jfc3RhdGUiLCJydW5uaW5nX3JlZiIsInN0b3JfcHJvY2VzcyIsIm1lc3NhZ2VfdGV4dCIsInJlcXVlc3RfdXAiLCJ2IiwicmVxdWVzdF9kb3duIiwiaXNfY29tcHV0aW5nIiwic2VuZCIsInRpbWVvdXQiLCJyZXF1ZXN0X2NvdW50IiwidXJsIiwibWV0aCIsImRhdGEiLCJoeWRyYXRlIiwiZmVlZGVyIiwicmVwbHkiLCJoYW5kbGVyIiwic3RhdHVzIiwicmVzcG9uc2VfdGV4dCIsInJlc3VsdF9jb2RlIiwicmVzdWx0X2NvZGUkMCIsInJlc3BvbnNlIiwicmVzdWx0Iiwia2FzYV9lcnJvciIsImwiLCJhY2MiLCJtIiwic2VsZl8xIiwicyIsImZpbGVfbGluZV9pZCIsImxpbmVzIiwic2ltdWxhdGlvbl9pbnRlcnZlbnRpb24iLCJmbHV4X21hcF9pZCIsInNuYXBzaG90X2lkIiwicGxvdF9saW1pdCIsInBsb3RfbGltaXRfcG9pbnRzIiwicGxvdF9saW1pdF9vZmZzZXQiLCJ2YWx1ZSIsImtleSIsImFyZ3MiLCJwYXVzZV9jb25kaXRpb24iLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsInByb2plY3RzIiwicHJvamVjdF9wYXJhbWV0ZXIiLCJwcm9qZWN0X2lkIiwicGF0dGVyblNoYXJpbmciLCJmIiwidmEiLCJ2ciIsInBvcyIsImlkIiwiY29udGVudCIsImZpbGVfaWQiLCJhc3QiLCJ4IiwieCQwIiwiY29tcGlsIiwiYWNjdXJhY3kiLCJhY2N1cmFjeSQwIiwiZndkIiwiYndkIiwib3JpZ2luIiwidG90YWwiLCJpIiwiaSQwIiwiaSQxIiwiaSQyIiwic2hvcnRfaWRfb3B0IiwiZmlsZW5hbWUiLCJsaW5lIiwiY2hyIiwiYWNjdXJhY3lfY20iLCJhY2N1cmFjeV9zY2MiLCJhIiwiYiIsIm9wdGlvbnMiLCJhJDAiLCJ3ZWFrIiwiY2F1c2FsIiwiY2xpZW50SWRQYXJhbUlkIiwiY2xpZW50X2lkIiwiZ2V0X2NsaWVudF9pZCIsInNldF9jbGllbnRfaWQiLCJjbGllbnRfaWQkMCIsImZvbnRTaXplUGFyYW1JZCIsImN1cnJlbnRGb250U2l6ZSIsImluaXRGcm9tU3RvcmFnZSIsInN0IiwieCIsInNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQiLCJ2IiwidXBkYXRlRm9udFNpemUiLCJkZWx0YSIsInNldF9zeW5jaCIsInN5bmNoIiwiYWdlbnRfY29sb3JpbmciLCJpbml0IiwiY2xpZW50X2lkcyIsInN5bmMiLCJzZWxmXzEiLCJ0aW1lb3V0IiwibWVzc2FnZV90ZXh0IiwieCIsInJlc3BvbnNlX21lc3NhZ2UiLCJyZXNwb25zZV90ZXh0IiwicGF0dGVyblNoYXJpbmciLCJvdmVyd3JpdGVzIiwib3V0IiwibG9hZCIsImluaXQiLCJlIiwiaW5mb3MiLCJsb2NhdG9ycyIsImZpbGVuYW1lIiwicG9zIiwia2FzYV93b3JrZXIiLCJrYXNhX21haWxib3giLCJrYW1vaGFfd29ya2VyIiwia2Ftb2hhX21haWxib3giLCJrYXN0b3Jfd29ya2VyIiwidXBkYXRlX3N0b3Jfc3RhdGUiLCJzdG9yX3N0YXRlIiwic3BlY19sYWJlbCIsInJlbW90ZSIsInNwZWNfaWQiLCJodHRwIiwiY2xpIiwicmVhZF9zcGVjIiwidXJsIiwiZm9ybWF0X3VybCIsImxlbmd0aCIsImNsZWFuZWRfdXJsIiwiY2xlYW5lZCIsInBhcnNlZCIsInByb3RvY29sIiwiaHR0cHMkMSIsImZpbGUkMSIsImh0dHAkMSIsImh0dHBzJDAiLCJmaWxlJDAiLCJsYWJlbCIsImh0dHAkMCIsImh0dHBzIiwiZmlsZSIsInNlbGZfMSIsIngiLCJyZXNwb25zZV9tZXNzYWdlIiwicmVzcG9uc2VfdGV4dCIsInBhdHRlcm5TaGFyaW5nIiwib3ZlcndyaXRlcyIsIm91dCIsImxvYWQiLCJpbml0IiwiZSIsImluZm9zIiwibG9jYXRvcnMiLCJmaWxlbmFtZSIsInBvcyIsImthc2Ffd29ya2VyIiwia2FzYV9tYWlsYm94Iiwia2Ftb2hhX3dvcmtlciIsImthbW9oYV9tYWlsYm94Iiwia2FzdG9yX3dvcmtlciIsInNlbGZfMiIsImV4biIsIm1zZyIsIm1lc3NhZ2VfdGV4dCIsInNldF9zdGF0ZSIsInN0YXRlIiwiY3JlYXRlX21hbmFnZXIiLCJpc19uZXciLCJwcm9qZWN0X2lkIiwidmVyc2lvbl91cmwiLCJmcmFtZSIsImlzX3ZhbGlkX3NlcnZlciIsImVycm9yX21zZyIsIm1hbmFnZXIiLCJqc19ub2RlX3J1bnRpbWUiLCJzZXRfc3BlYyIsInJ1bnRpbWUiLCJjdXJyZW50X3N0YXRlIiwiY3JlYXRlX3NwZWMiLCJpZCIsIm1vZGVsIiwiaG9zdHMiLCJhZGRfdXJscyIsInVybHMiLCJ1cmxzJDAiLCJsb2FkJDAiLCJ1cmxzJDEiLCJwcm9qZWN0cyIsInN5bmMiLCJpbml0X2RlZmF1bHRfcGFyYW1ldGVycyIsInBsb3RQZXJpb2RQYXJhbUlkIiwicGF1c2VDb25kaXRpb25QYXJhbUlkIiwic2VlZFBhcmFtSWQiLCJzdG9yZVRyYWNlUGFyYW1JZCIsInNob3dEZWFkUnVsZXNQYXJhbUlkIiwic2hvd0RlYWRBZ2VudHNQYXJhbUlkIiwic2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyIiwicHJvamVjdF9lcXVhbCIsImEiLCJiIiwiY2F0YWxvZ19lcXVhbCIsIngiLCJ5Iiwic3RhdGVfZXF1YWwiLCJtb2RlbF9lcXVhbCIsImluaXRfc3RhdGUiLCJzZXRfc3RhdGUiLCJzdGF0ZSIsInVwZGF0ZV9wYXJhbWV0ZXJzIiwiaGFuZGxlciIsInN0IiwicHJvaiIsInByb2plY3RfcGFyYW1ldGVycyIsImRlZmF1bHRfcGFyYW1ldGVycyIsInByb2plY3RfcGFyYW1ldGVycyQwIiwiZGVmYXVsdF9wYXJhbWV0ZXJzJDAiLCJzZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0IiwicGEiLCJscyIsInZhIiwic2V0X3Bsb3RfcGVyaW9kIiwicGxvdF9wZXJpb2QiLCJwYXJhbSIsInNldF9wYXVzZV9jb25kaXRpb24iLCJwYXVzZV9jb25kaXRpb24iLCJzZXRfc2VlZCIsInNlZWQiLCJzZXRfc3RvcmVfdHJhY2UiLCJzdG9yZV90cmFjZSIsInNldF9zaG93X2RlYWRfcnVsZXMiLCJzaG93X2RlYWRfcnVsZXMiLCJzZXRfc2hvd19kZWFkX2FnZW50cyIsInNob3dfZGVhZF9hZ2VudHMiLCJzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGUiLCJzaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmEiLCJ1cGRhdGVfc3RhdGUiLCJtZSIsInByb2plY3RfY2F0YWxvZyIsIm91dCIsImNvbXB1dGluZ193YXRjaGVyIiwibWFuYWdlciIsInNldHRlciIsImNhbmNlbGxlZCIsImRlbGF5IiwibG9vcCIsImFkZF9wcm9qZWN0IiwiaXNfbmV3IiwicHJvamVjdF9pZCIsInN0YXRlX3ZhIiwiY2F0YWxvZyIsInBhcmFtcyIsInByb2plY3RfbWFuYWdlciIsInNldF9jb21wdXRlcyIsInByb2plY3RfaXNfY29tcHV0aW5nIiwicHJvamVjdF93YXRjaGVyX2NhbmNlbCIsImNyZWF0ZV9wcm9qZWN0Iiwic2V0X3Byb2plY3QiLCJkdW1teV9tb2RlbCIsInAiLCJtb2RlbF9jYXRhbG9nIiwibW9kZWxfcGFyYW1ldGVycyIsIm1vZGVsIiwic3luYyIsImN1cnJlbnQiLCJyZW1vdmVfZmlsZXMiLCJtIiwicmVtb3ZlX3Byb2plY3QiLCJzdGF0ZSQwIiwidiIsImgiLCJwcm9qZWN0X2N1cnJlbnQiLCJvdXQkMCIsImluaXRfcGxvdF9wZXJpb2QiLCJhcmciLCJhcmckMCIsImFyZyQxIiwibXNnIiwiaW5pdF9wYXVzZV9jb25kaXRpb24iLCJpbml0X21vZGVsX3NlZWQiLCJpbml0X3N0b3JlX3RyYWNlIiwiaW5pdF9zaG93X2RlYWRfcnVsZXMiLCJpbml0X3Nob3dfZGVhZF9hZ2VudHMiLCJpbml0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmwiLCJpbml0IiwiZXhpc3RpbmdfcHJvamVjdHMiLCJkZWZhdWx0JDAiLCJhcmdfcGxvdF9wZXJpb2QiLCJkZWZhdWx0JDEiLCJhcmdfcGF1c2VfY29uZGl0aW9uIiwiZGVmYXVsdCQyIiwiYXJnX21vZGVsX3NlZWQiLCJkZWZhdWx0JDMiLCJhcmdfc3RvcmVfdHJhY2UiLCJkZWZhdWx0JDQiLCJhcmdfc2hvd19kZWFkX3J1bGVzIiwiZGVmYXVsdCQ1IiwiYXJnX3Nob3dfZGVhZF9hZ2VudHMiLCJkZWZhdWx0JDYiLCJhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGkiLCJwcm9qZWN0cyIsImFkZF9wcm9qZWN0cyIsInByb2plY3RzJDAiLCJwcm9qZWN0IiwiZXJyb3JzIiwiZXZhbF93aXRoX3Byb2plY3QiLCJsYWJlbCIsImVycm9yX21zZyIsIm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIiwiZXEiLCJvbiIsIm9wdCIsImluaXRfb3RoZXJzIiwib3RoZXJzIiwic3RoIiwib3RoZXJzX2VxIiwiZXFfcGFpciIsIm90aCIsImVycm9yX21zZyQyIiwiZXJyb3JfbXNnJDEiLCJlcnJvcl9tc2ciLCJlcnJvcl9tc2ckMCIsImR1bW15X2N1cnNvcl9wb3MiLCJibGFua19zdGF0ZSIsInNldF9kaXJlY3Rvcnlfc3RhdGUiLCJtb2RlbCIsInJlZnJlc2hfZmlsZV9ob29rIiwibSIsIngiLCJuYW1lIiwiY3VycmVudF9maWxlbmFtZSIsIndpdGhfY3VycmVudF9wb3MiLCJlcSIsIm9wdCIsImYiLCJkZWZhdWx0JDAiLCJzdGgiLCJvbiIsIndpdGhfY3VycmVudF9maWxlIiwic3RhdGUiLCJhY3RpdmUiLCJnZXRfZmlsZSIsInRleHQiLCJuYW1lJDAiLCJtYW5hZ2VyIiwicmFuayIsInNlbmRfcmVmcmVzaCIsImxpbmUiLCJvdXRfb2Zfc3luYyIsImZpbGVuYW1lIiwiY29udGVudCIsInVwZGF0ZV9kaXJlY3RvcnkiLCJyZXNldCIsImN1cnJlbnQiLCJjYXRhbG9nIiwiYWNjIiwiaWQiLCJwb3NpdGlvbiIsImRpcmVjdG9yeSIsImNyZWF0ZV9maWxlIiwiZmlsZV9tZXRhZGF0YSIsIm1hdGNoaW5nX2ZpbGUiLCJtZXRhZGF0YSIsIm1heF9wb3MiLCJjaG9vc2VfZmlsZSIsImNob2ljZSIsInQiLCJzZWxlY3RfZmlsZSIsInNldF9jb250ZW50Iiwic2V0X2NvbXBpbGUiLCJmaWxlX2lkIiwiY29tcGlsZSIsInJhbmskMCIsInJlbW92ZV9maWxlIiwibG9jYWwiLCJ5IiwiZG9fYV9tb3ZlIiwieCQwIiwiY3Vyc29yX3BvcyIsInBvcyIsInNldF9wb3NpdGlvbiIsIm9yZGVyX2ZpbGVzIiwiZmlsZW5hbWVzIiwib3JkZXJfZmlsZSIsImluZGV4IiwidGFpbCIsImN1cnNvcl9hY3Rpdml0eSIsImNoIiwidiIsInN5bmMiLCJjYW5kIiwibG9hZF9kZWZhdWx0IiwiZXJyb3JzIiwibXNnIiwibG9hZF9tb2RlbHMiLCJtb2RlbHMiLCJhZGRfbW9kZWxzIiwibG9hZF9maWxlIiwibW9kZWxzJDAiLCJ1IiwiaCIsImZpbGVjb250ZW50IiwiaW5pdCIsImVycm9yX21zZyQ4IiwiZXJyb3JfbXNnJDciLCJlcnJvcl9tc2ckNiIsImVycm9yX21zZyQ1IiwiZXJyb3JfbXNnJDQiLCJlcnJvcl9tc2ckMyIsImVycm9yX21zZyQyIiwiZXJyb3JfbXNnJDEiLCJlcnJvcl9tc2ckMCIsImVycm9yX21zZyIsImR1bW15X21vZGVsIiwidF9zaW11bGF0aW9uX3N0YXRlIiwic2ltdWxhdGlvbiIsInRfc2ltdWxhdGlvbl9pbmZvIiwic2ltdWxhdGlvbl9pbmZvIiwibW9kZWxfc3RhdGVfdG9fc3RyaW5nIiwibW9kZWxfc2ltdWxhdGlvbl9pbmZvIiwibW9kZWwiLCJtb2RlbF9zaW11bGF0aW9uX3N0YXRlIiwic2V0X3N0YXRlIiwic3RhdGUiLCJ1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSIsInNpbXVsYXRpb25fc3RhdGUiLCJldmFsX3dpdGhfc2ltX21hbmFnZXIiLCJsYWJlbCIsImhhbmRsZXIiLCJwcm9qZWN0X2hhbmRsZXIiLCJtYW5hZ2VyIiwiZmFpbF9sd3QiLCJldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8iLCJvcHQiLCJzdGgiLCJzdG9wcGVkIiwic3RoJDAiLCJpbml0aWFsaXppbmciLCJzdGgkMSIsInJlYWR5IiwicyIsImV2YWxfd2hlbl9yZWFkeSIsInNsZWVwX3RpbWUiLCJzeW5jIiwicmVmcmVzaCIsImluaXQiLCJjb250aW51ZV9zaW11bGF0aW9uIiwicGF1c2VfY29uZGl0aW9uIiwicGF1c2Vfc2ltdWxhdGlvbiIsInN0b3Bfc2ltdWxhdGlvbiIsInN0YXJ0X3NpbXVsYXRpb24iLCJzaW11bGF0aW9uX3BhcmFtZXRlciIsIm9uX2Vycm9yIiwiZXJyb3JfbXNncyIsImVycm9yIiwibXNnIiwibWVzc2FnZSIsInNpbXVsYXRpb25fc3RhdHVzIiwiaW50ZXJ2ZW5lX3NpbXVsYXRpb24iLCJjb2RlIiwib3V0IiwicmVmcmVzaCIsInIiLCJyJDAiLCJyJDEiLCJjcmVhdGVfcHJvamVjdCIsInByb2plY3RfaWQiLCJzZXRfcHJvamVjdCIsImNsb3NlX3Byb2plY3QiLCJzZXRfbWFuYWdlciIsInJ1bnRpbWVfaWQiLCJjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWQiLCJwcmVmZXJlbmNlc19tb2RhbF9pZCIsInNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9pZCIsInByZWZlcmVuY2VzX2J1dHRvbiIsIm9wdGlvbl9zZWVkX2lucHV0Iiwib3B0aW9uX3dpdGh0cmFjZSIsIm9wdGlvbl93aXRoZGVhZHJ1bGVzIiwib3B0aW9uX3dpdGhkZWFkYWdlbnRzIiwib3B0aW9uX3dpdGhpcnJldmVyc2libGUiLCJkZWNyZWFzZV9mb250IiwiaW5jcmVhc2VfZm9udCIsInNldHRpbmdzX2NsaWVudF9pZF9pbnB1dCIsInNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9kb20iLCJvcHRpb25faHR0cF9zeW5jaCIsImRyb3Bkb3duIiwibW9kZWwiLCJjdXJyZW50X2lkIiwic3BlYyIsInNwZWNfaWQiLCJsaXN0X3QiLCJiYWNrZW5kX29wdGlvbnMiLCJiYWNrZW5kX3NlbGVjdCIsImJvZGllcyIsInNldF9idXR0b24iLCJzYXZlX2J1dHRvbiIsImhlYWQiLCJib2R5IiwiZm9vdCIsIm1vZGFsIiwiY29udGVudCIsInNldF9hY3Rpb24iLCJzZXR0aW5nc19jbGllbnRfaWQiLCJ4Iiwic3luY2hfY2hlY2tib3hfZG9tIiwiaXNfY2hlY2tlZCIsImlucHV0IiwidmFsdWUiLCJtb2RlbF9zZWVkIiwic2V0X2FuZF9zYXZlX2FjdGlvbiIsIm9ubG9hZCIsInNwIiwidG9nZ2xlX2VsZW1lbnQiLCJwcm9qZWN0aW9uIiwiY29udGVudCIsIm1vZGVsIiwib3B0aW9uX2xhYmVsIiwibGFiZWwiLCJleHBvcnRfY29udHJvbHMiLCJleHBvcnRfc2VsZWN0X2lkIiwiZXhwb3J0X2ZpbGVuYW1lX2lkIiwiZXhwb3J0X2J1dHRvbl9pZCIsImV4cG9ydF9kYXRhX2xhYmVsIiwiZXhwb3J0X2Zvcm1hdHMiLCJleHBvcnRfZmlsZW5hbWUiLCJleHBvcnRfYnV0dG9uIiwiZm9ybWF0IiwiZXhwb3J0X2Zvcm1hdHNfc2VsZWN0IiwieCIsImRvY3VtZW50IiwibGFiZWxfbmV3cyIsInRhYl9pc19hY3RpdmUiLCJjb3VudGVyIiwic2ltdWxhdGlvbl9pbmZvIiwibGFzdF92YWx1ZSIsInRhYl9hY3RpdmUiLCJ2IiwiYmFkZ2UiLCJjb3VudCIsImFyZ3VtZW50cyQwIiwia2V5IiwiayIsInZlcnNpb24iLCJvcHQiLCJzdGgiLCJ0ZXN0IiwiZGV2IiwidGVzdCQwIiwibmF2bGkiLCJmb3JjZV9jbGFzcyIsImRlY29yYXRpb25zIiwiZGVmYXVsdF9hdHRyaWJ1dGVzIiwibCIsImF0dHJpYnV0ZXMiLCJ0ZXh0IiwibmF2dGFicyIsIm5hdl90YWJfaWQiLCJ0IiwidGkiLCJsaSIsImFfY2xhc3MiLCJvbmVuYXZjb250ZW50IiwiYWN0aXZlIiwiY2xhc3NlcyIsIm5hdmNvbnRlbnQiLCJpZCIsImMiLCJjbCIsImlkJDAiLCJpZCQxIiwibGV2ZWwiLCJkZWJ1ZyIsImluZm8iLCJub3RpY2UiLCJ3YXJuaW5nIiwiZXJyb3IiLCJmYXRhbCIsImV4dHJhY3QiLCJ2YWx1ZSIsInZhbHVlJDAiLCJmZWF0dXJlcyIsImRlZmF1bHQkMCIsImZlYXR1cmUiLCJtYXRjaGVzIiwiaW5wdXRfY2hhbmdlIiwiaW5wdXRfZG9tIiwic2lnbmFsX2hhbmRsZXIiLCJpZF9kb20iLCJjcmVhdGVfbW9kYWwiLCJ0aXRsZV9sYWJlbCIsImJvZHkiLCJzdWJtaXRfbGFiZWwiLCJzdWJtaXQiLCJidXR0b24iLCJmb3JtIiwicHJvamVjdF9pZF9tb2RhbF9pZCIsInByb2plY3RfaWRfaW5wdXQiLCJsaV9uZXciLCJsaV9wcmVmcyIsInByb2plY3RfaWRfaW5wdXRfZG9tIiwiY29udGVudCIsInNldHRpbmdzX2NsaWVudF9pZCIsIngiLCJtb2RlbCIsIm1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nIiwibW9kZWxfcHJvamVjdF9pZCIsImN1cnJlbnRfcHJvamVjdF9pZCIsImxpX2NsYXNzIiwic3Bhbl9jbG9zZSIsImV2ZW50IiwiYiIsImNsYXNzZXMiLCJjb21wdXRpbmciLCJhX3Byb2plY3QiLCJhY2MiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNldF9tb2RlbF9pbnRlcnZlbnRpb24iLCJtb2RlbF9pbnRlcnZlbnRpb24iLCJjcmVhdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIiLCJwYXJhbSIsImNvbnRpbnVlX3NpbXVsYXRpb24iLCJwYXVzZV9jb25kaXRpb24iLCJwYXVzZV9zaW11bGF0aW9uIiwic3RvcF9zaW11bGF0aW9uIiwic3RhcnRfc2ltdWxhdGlvbiIsInNpbXVsYXRpb25fcGFyYW1ldGVyIiwiaW50ZXJ2ZW5lX3NpbXVsYXRpb24iLCJtb2RlbF9wZXJ0dXJiYXRpb24iLCJ0ZXh0IiwiZm9jdXNfcmFuZ2UiLCJyYW5nZSIsImZpbGVfaWQiLCJsaW5lIiwic2ltdWxhdGlvbl90cmFjZSIsIm1hbmFnZXIiLCJkYXRhX3N0cmluZyIsImRhdGEiLCJzaW11bGF0aW9uX291dHB1dHMiLCJkYXRhX2JpZ3N0cmluZyIsImhpZGRlbl9jbGFzcyIsInZpc2libGVfY2xhc3MiLCJpZCIsImlkJDAiLCJpZCQxIiwiaWQkMiIsIm1lc3NhZ2VfbmF2X2luY19pZCIsIm1lc3NhZ2VfbmF2X2RlY19pZCIsIm1lc3NhZ2VfZmlsZV9sYWJlbF9pZCIsImlkJDMiLCJpZCQ0IiwiaWQkNSIsImlkJDYiLCJpZCQ3IiwiaWQkOCIsImlkJDkiLCJpZCQxMCIsInZpc2libGVfb25fc3RhdGVzIiwib3B0Iiwic3RoIiwiYV9jbGFzcyIsIm1vZGVsIiwiY3VycmVudF9zdGF0ZSIsImlucHV0IiwiYnV0dG9uIiwiZm9ybSIsImNvbnRlbnQiLCJvbmxvYWQiLCJmb3JtX2RvbSIsImlucHV0X2RvbSIsImhhbmRsZXIiLCJtb2RlbF9wZXJ0dXJiYXRpb24iLCJ4Iiwic2lnbmFsX2NoYW5nZSIsInNpZ25hbF9oYW5kbGVyIiwibSIsImlucHV0JDAiLCJjb250ZW50JDAiLCJkb20iLCJvbmxvYWQkMCIsInZhbHVlIiwidiIsImZvcm1hdF9mbG9hdF9zdHJpbmciLCJuIiwibGVuZ3RoIiwiaW5wdXQkMSIsImNvbnRlbnQkMSIsIm9ubG9hZCQxIiwicmVzZXRfdmFsdWUiLCJvbGRfdmFsdWUiLCJuZXdfdmFsdWUiLCJlcnJvcl9pbmRleCIsInNhbml0aXplX2luZGV4IiwiaW5kZXgiLCJlcnJvcnMiLCJpbmRleCQwIiwiaW5kZXgkMSIsImdldF9tZXNzYWdlIiwiZXJyb3IiLCJtZXNzYWdlX25hdl90ZXh0IiwibWVzc2FnZV9uYXZfZGVjIiwibWVzc2FnZV9uYXZfaW5jIiwibWVzc2FnZV9uYXYiLCJtZXNzYWdlIiwicmFuZ2UiLCJyYW5nZSQwIiwiZmlsZV9sYWJlbF90ZXh0IiwiZmlsZV9sYWJlbCIsImVycm9yX21lc3NhZ2VfdGV4dCIsImVycm9yX21lc3NhZ2UiLCJhbGVydF9tZXNzYWdlcyIsImNvbnRlbnQkMiIsImZpbGVfY2xpY2tfaGFuZGxlciIsImluZGV4X2NsaWNrX2hhbmRsZXIiLCJkZWx0YSIsImluY19jbGlja19oYW5kbGVyIiwiZGVjX2NsaWNrX2hhbmRsZXIiLCJvbmxvYWQkMiIsIm91dF9vZl9zeW5jIiwiYnV0dG9uJDAiLCJjb250ZW50JDMiLCJvbmxvYWQkMyIsInN0YXJ0X2J1dHRvbl9kb20iLCJidXR0b24kMSIsImNvbnRlbnQkNCIsIm9ubG9hZCQ0IiwiYnV0dG9uJDIiLCJjb250ZW50JDUiLCJvbmxvYWQkNSIsImJ1dHRvbl9kb20iLCJidXR0b24kMyIsImNvbnRlbnQkNiIsIm9ubG9hZCQ2IiwiYnV0dG9uJDQiLCJjb250ZW50JDciLCJvbmxvYWQkNyIsImJ1dHRvbiQ1IiwiY29udGVudCQ4Iiwib25sb2FkJDgiLCJjb250ZW50JDkiLCJsYWJlbCIsImRlYnVnIiwib25sb2FkJDkiLCJwcm9ncmVzc19iYXIiLCJwZXJjZW50X3NpZ25hbCIsInZhbHVlX3NpZ25hbCIsInMiLCJ0aW1lX3Byb2dyZXNzX2JhciIsInNpbXVsYXRpb25faW5mbyIsInN0YXR1cyIsInRpbWUiLCJ0aW1lJDAiLCJ0aW1lX3BlcmNlbnQiLCJ0aW1lX3BlcmNlbnQkMCIsImV2ZW50X3Byb2dyZXNzX2JhciIsImV2ZW50IiwiZXZlbnQkMCIsImV2ZW50X3BlcmNlbnRhZ2UiLCJldmVudF9wZXJjZW50YWdlJDAiLCJ0cmFja2VkX2V2ZW50cyIsInN0YXRlIiwidHJhY2tlZF9ldmVudHMkMCIsInRyYWNrZWRfZXZlbnRzX2NvdW50IiwidHJhY2tlZF9ldmVudHNfbGFiZWwiLCJlZmZpY2llbmN5X2RldGFpbCIsImN1cnJlbnRfZXZlbnQiLCJ0IiwiYWxsIiwiZiIsImNvbnRlbnQkMTAiLCJzZXRfc3RhdGVfbG9nIiwic3RhdGVfbG9nIiwibWFuYWdlciIsImVmZiIsIm9ubG9hZCQxMCIsInN0b3BwZWRfYm9keSIsInN0b3BwZWRfcm93IiwicGF1c2VkX3JvdyIsImluaXRpYWxpemluZ19ib2R5IiwicnVubmluZ19ib2R5IiwiZm9vdGVyIiwiY29udGVudCQxMSIsIm9ubG9hZCQxMSIsIm9ucmVzaXplIiwibmF2bGkiLCJjb250ZW50Iiwib25sb2FkIiwib25yZXNpemUiLCJwcm90b3R5cGUiLCJjcmVhdGVfaGFuZGxlciIsImxhYmVsIiwiaGVhZCIsInRhaWwiLCJvbl9sYWJlbCIsIndyYXBwZXIiLCJoYW5kbGVyIiwieCIsInBvc2l0aW9uIiwiY29uc3RydWN0b3JfbGludCIsImNyZWF0ZV9saW50IiwibWVzc2FnZSIsInNldmVyaXR5IiwiZnJvbSIsInRvIiwicmVzdWx0IiwiY29uc3RydWN0b3JfY2hhbmdlIiwiY3JlYXRlX2NoYW5nZSIsImNvbnN0cnVjdG9yX2xpbnRfY29uZmlndXJhdGlvbiIsImNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24iLCJkZWZhdWx0X2NvbmZpZ3VyYXRpb24iLCJmcm9tVGV4dEFyZWEiLCJkb20iLCJjb25maWd1cmF0aW9uIiwiY29tbWFuZHMiLCJjcmVhdGVfZmlsZSIsIm9wdCIsInN0aCIsInRleHQiLCJ0eHQiLCJjb250ZW50IiwiciIsInIkMCIsInNldF9maWxlIiwiZmlsZV9pZCIsImNsb3NlX2ZpbGUiLCJzZXRfZmlsZV9jb21waWxlIiwicmFuayIsImNvbXBpbGUiLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsImV4cG9ydF9jdXJyZW50X2ZpbGUiLCJmaWxlbmFtZSIsImRhdGEiLCJmaWxlX25ld19tb2RhbF9pZCIsImZpbGVfbmV3X2lucHV0X2lkIiwiZmlsZV9kcm9wZG93bl9tZW51X2lkIiwiZmlsZV9uZXdfbGlfaWQiLCJmaWxlX29wZW5fbGlfaWQiLCJmaWxlX29wZW5fc2VsZWN0b3JfaWQiLCJmaWxlX2Nsb3NlX2xpX2lkIiwiZmlsZV9leHBvcnRfbGlfaWQiLCJmaWxlX2NvbXBpbGVfY2hlY2tib3giLCJlbGVtZW50X2dldF9maWxlbmFtZSIsImVsZW1lbnQiLCJlbGVtZW50X3NldF9maWxlbmFtZSIsIm5hbWUiLCJmaWxlX25ld19pbnB1dCIsImZpbGVfbmV3X2lucHV0X2RvbSIsImZpbGVfY2hlY2tib3giLCJmaWxlX2lkIiwiaXNfY2hlY2tlZCIsImNoZWNrZWRfYXR0cmlidXRlIiwib3Blbl9pbnB1dCIsImRyb3Bkb3duIiwibW9kZWwiLCJoaWRlX29uX2VtcHR5IiwibCIsInJhbmsiLCJjdXJyZW50X2ZpbGVfcG9zIiwibG9jYWwiLCJjb21waWxlIiwibGlfY2xhc3MiLCJmaWxlX2xpIiwic2VwYXJhdG9yX2xpIiwibmV3X2xpIiwib3Blbl9saSIsImNsb3NlX2xpIiwiZXhwb3J0X2xpIiwibGlfbGlzdCIsImZpbGVuYW1lIiwieCIsImZpbGUiLCJvdXRfb2Zfc3luYyIsImNvbnRlbnQiLCJvcmRlcl9maWxlcyIsImZpbGVuYW1lcyIsImZpbGVfc2VsZWN0X2hhbmRsZXIiLCJvcGVuX2lucHV0X2RvbSIsImZpbGVzIiwib25sb2FkIiwiZXZlbnQiLCJ0YXJnZXQiLCJpZCIsIndpdGhfZmlsZSIsImhhbmRsZXIiLCJzZXRfY29udGVudCIsImZpbGVuYW1lIiwiZmlsZWNvbnRlbnQiLCJjdXJyZW50X2ZpbGVuYW1lIiwiciIsInIkMCIsIm1zZyIsInRvZ2dsZV9idXR0b25faWQiLCJwYW5lbF9oZWFkaW5nX2dyb3VwX2lkIiwiY29kZW1pcnJvcl9pZCIsImVkaXRvcl9wYW5lbF9pZCIsInNldF9lZGl0b3JfZnVsbCIsImVkaXRvcl9mdWxsIiwic2V0X2ZpbGVuYW1lIiwiZmlsZW5hbWUiLCJtb3ZlX2N1cnNvcl9ob29rIiwiZmlsZV9sYWJlbCIsInRvZ2dsZV9idXR0b24iLCJtZW51X2VkaXRvcl9maWxlX2NvbnRlbnQiLCJidXR0b25zIiwicGFuZWxfaGVhZGluZyIsImNvbnRlbnQiLCJ0ZXh0YXJlYSIsIm1vZGVsIiwiZXJyb3JfbGludCIsImVycm9ycyIsInBvc2l0aW9uIiwicCIsImh5ZHJhdGUiLCJlcnJvciIsInJhbmdlIiwiZmlsZV9pZCIsImFjYyIsInZhbHVlIiwidmFsdWUkMCIsImp1bXBfdG9fbGluZSIsImNvZGVtaXJyb3IiLCJsaW5lIiwibW9kZSIsImNvb3JkcyIsIngiLCJ0b3AiLCJlbGVtZW50IiwibWlkZGxlSGVpZ2h0Iiwic2Nyb2xsTGluZSIsIm9ubG9hZCIsImxpbnRfY29uZmlnIiwic2V0dXBfbGludCIsImNvbmZpZ3VyYXRpb24iLCJndXR0ZXJfb3B0aW9ucyIsImd1dHRlcl9vcHRpb24iLCJpZCIsInRpbWVvdXQiLCJoYW5kbGVyIiwiY2hhbmdlIiwidGltZW91dCQwIiwiZGVsYXkiLCJoYW5kbGVfdGltZW91dCIsImZpbGVuYW1lJDAiLCJjb2RlbWlycm9yJDAiLCJwb3MiLCJjaCIsInRvZ2dsZV9idXR0b25fZG9tIiwiZWRpdG9yX2Z1bGwkMCIsInJlZnJlc2giLCJjYW5kIiwiYmVnIiwiZmlyc3QiLCJlbiIsImxhc3QiLCJvbnJlc2l6ZSIsInByaW50X3N0cmluZyIsInMiLCJsaXN0IiwicHJpbnRfbmV3bGluZSIsInByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIiwiYSIsInByaW50X3NpbmdsZV9pbnRlcm5hbF9zdGF0ZSIsInByaW50X2NvdW50ZXJfaW50ZXJ2YWwiLCJiIiwiYSQwIiwiaW5mIiwib3Blbl9yYW5nZSIsImluZiQwIiwib3Blbl9yYW5nZSQwIiwiYiQwIiwic3VwIiwiY2xvc2VfcmFuZ2UiLCJzdXAkMCIsImNsb3NlX3JhbmdlJDAiLCJwcmludF9jb3VudGVyX3N0YXRlIiwicHJpbnRfc2l0ZSIsInNpdGUiLCJjb3VudGVyX29wdCIsImJpbmRpbmdfb3B0IiwicHJvcF9vcHQiLCJzaXRlX25hbWUiLCJpIiwic2l0ZV9uYW1lJDAiLCJhZ2VudF9uYW1lIiwiYmluZGluZ190eXBlX3N5bWJvbCIsImxpc3QkMCIsImxpc3QkMSIsImxpc3QkMiIsInByaW50X2FnZW50IiwiYWdlbnQiLCJpbnRlcmZhY2UkMCIsImxpc3QkMyIsInByaW50X3NpdGVfZ3JhcGgiLCJhZ2VudF9saXN0IiwicHJpbnRfbWV0aG9kX2hhbmRsZXIiLCJtaCIsInVuY2F1Z2h0IiwiY2F1Z2h0IiwieCIsImwiLCJuYXZsaSIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwiY29udGVudCIsIm1hbmFnZXIiLCJyIiwidGl0bGUiLCJtIiwib3V0IiwiY29uc3RyYWludHMiLCJwYW5lbHMiLCJiIiwiYSIsImxpc3QiLCJsZW1tYSIsImh5cCIsImNvbmNsdXNpb24iLCJzaXRlX2dyYXBoIiwibGlzdCQ0IiwibGlzdCQwIiwibGlzdCQxIiwiYm9vbCIsImxpc3QkMiIsImxpc3QkMyIsImxpc3QkNSIsImxpc3QkNiIsInRleHRzIiwiY29uc3RyYWludHNfZGl2IiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJvbnJlc2l6ZSIsImNyZWF0ZV9jb250YWN0X21hcCIsImlkIiwiY29sb3JpbmciLCJleHBvcnRfZm9ybWF0X2lkIiwiY29uZmlndXJhdGlvbiIsImV4cG9ydF9maWxlbmFtZV9pZCIsImV4cG9ydF9idXR0b25faWQiLCJleHBvcnRfZGF0YV9sYWJlbCIsImV4cG9ydF9mb3JtX2lkIiwiaW5saW5lX2NvbnRlbnQiLCJleHBvcnRfZmlsZW5hbWUiLCJleHBvcnRfYnV0dG9uIiwiaGFuZGxlciIsImV4cG9ydF9mb3JtYXRzX3NlbGVjdCIsImNvbnRlbnQiLCJvbmxvYWQiLCJleHBvcnRfZm9ybWF0IiwiZXhwb3J0X2J1dHRvbl90b2dnbGUiLCJ4IiwiaXNfZGlzYWJsZWQiLCJmaWxlbmFtZSIsImRlZmF1bHQkMCIsInJvb3QiLCJleHBvcnRfc3ZnIiwic3ZnX3N0eWxlX2lkIiwic3ZnX2Rpdl9pZCIsImV4cG9ydF9wbmciLCJleHBvcnRfanNvbiIsInNlcmlhbGl6ZV9qc29uIiwiZGF0YSIsImRpc3BsYXlfaWQiLCJleHBvcnRfaWQiLCJhY2N1cmFjeV9jaG9vc2VyX2lkIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsInNldF9hY2N1cmFjeSIsImFjY3VyYWN5IiwiZXh0cmFjdF9jb250YWN0X21hcCIsImNvbnRhY3QiLCJhY2MiLCJhY2MkMCIsImNvbnRhY3QkMCIsImNvbnRhY3RfbWFwX2pzIiwibWFuYWdlciIsIm1oIiwieCIsImNvbnRhY3RfanNvbiIsIm1hcF9qc29uIiwiZGF0YSIsImNvbnRhY3RfbWFwX3RleHQiLCJjb25maWd1cmF0aW9uIiwib3B0aW9uX2dlbiIsImwiLCJhY2N1cmFjeV9jaG9vc2VyIiwiY29udGVudCIsImFjY3VyYWN5X2Zvcm0iLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsInZhIiwidmEkMCIsIm9ucmVzaXplIiwiY3JlYXRlX2dyYXBoX2xvZ2dlciIsImlkIiwib25fY2xpY2siLCJlbXB0eV9zcGhlcmUiLCJkdW1teV9tb2RlbCIsInRvdGFsX2lucHV0X2lkIiwiZndkX2lucHV0X2lkIiwiYndkX2lucHV0X2lkIiwiZGlzcGxheV9pZCIsInJlbmRlcmluZ19jaG9vc2VyX2lkIiwiYWNjdXJhY3lfY2hvb3Nlcl9pZCIsIm5hdmxpIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwidGFiX3dhc19hY3RpdmUiLCJzZXRfdHJhY2tfY3Vyc29yIiwidHJhY2tfY3Vyc29yIiwic2V0X21vZGVsIiwibW9kZWwiLCJpbmZsdWVuY2Vfbm9kZV9sYWJlbCIsInIiLCJyJDAiLCJ1cGRhdGVfbW9kZWxfZ3JhcGgiLCJmIiwibSIsImciLCJ1cGRhdGVfbW9kZWwiLCJ4Iiwibm9kZSIsIm9yaWdpbiIsIm9yaWdpbl9sYWJlbCIsImluZmx1ZW5jZW1hcCIsInRvdGFsX2lucHV0IiwiZndkX2lucHV0IiwiYndkX2lucHV0IiwibmV4dF9ub2RlIiwicHJldl9ub2RlIiwicmVjZW50ZXIiLCJ0YyIsInRyYWNrX2N1cnNvcl9zd2l0Y2giLCJleHBvcnRfY29uZmlnIiwiZmlsZW5hbWUiLCJtYW5hZ2VyIiwiYWNjdXJhY3kiLCJpbmZsdWVuY2VzX3N0cmluZyIsImRhdGEiLCJyZW5kZXJpbmciLCJsIiwicmVuZGVyaW5nX2Nob29zZXIiLCJvcHRpb25fZ2VuIiwiYWNjdXJhY3lfY2hvb3NlciIsImlzX2NlbnRlciIsIm9yaWdpbl9zaG9ydF9vcHQiLCJpZCIsImEiLCJpZCQwIiwiYSQwIiwianNvbl90b19ncmFwaCIsImxvZ2dlciIsImluZmx1ZW5jZV9tYXAiLCJub2RlcyIsImRpcmVjdGl2ZXNfb2Zfbm9kZSIsImpzb24iLCJsYWJlbCIsInBvcyIsImNvbnRleHR1YWxfaGVscCIsImZpbGxjb2xvciIsInBvcyQwIiwiY29udGV4dHVhbF9oZWxwJDAiLCJmaWxsY29sb3IkMCIsImJpZ2dlc3RfaWQiLCJuIiwibWF4X3J1bGVfaWQiLCJnZXRfaWRfb2Zfbm9kZV9pZCIsIm5vZGVfaWQiLCJnZXRfaWRfb2Zfbm9kZSIsImRpcmVjdGl2ZXMiLCJwcmludF9tYXBzIiwib3B0IiwibWFwIiwic3RoIiwic291cmNlIiwic291cmNlX2lkIiwidGFyZ2V0IiwibGFiZWxfbGlzdCIsInRhcmdldF9pZCIsImxhYmVsX3N0cmluZyIsImRpcmVjdGl2ZXMkMCIsInRhYmxlX29mX2luZmx1ZW5jZXNfanNvbiIsImFjYyIsImUiLCJuYW1lciIsIm9yaWdpbl9pZF9vcHQiLCJvcmlnaW5faWQiLCJzcmMiLCJkc3QiLCJieSIsIm9uIiwidiIsInYkMCIsInBvc2l0aXZlX2J5IiwicG9zaXRpdmVfb24iLCJuZWdhdGl2ZV9ieSIsIm5lZ2F0aXZlX29uIiwicG9wX2NlbGwiLCJ0IiwicG9zaXRpdmUiLCJmaWxsX3RhYmxlIiwiYWNjJDAiLCJieSQwIiwib24kMCIsImJ5JDEiLCJiIiwib24kMSIsIm8iLCJsaW5lIiwiYWNjJDEiLCJkcmF3X3RhYmxlIiwib3V0cyIsImluZmx1ZW5jZV9zcGhlcmUiLCJjb250ZW50IiwiYWNjdXJhY3lfZm9ybSIsImdyYXBoX2Zvcm0iLCJzcGhlcmUiLCJlcnJvciIsInRvdGFsIiwiYndkIiwiZndkIiwiaW5mbHVlbmNlcyIsImJ1ZiIsImZtdCIsImxvZ2dlcl9ncmFwaCIsImdyYXBoIiwiZ3JhcGhfanNvbiIsIm5laXRoZXJfZ2NfbWUiLCJjdXJzb3JfcG9zIiwibm9yX2djX21lIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJ2YSIsInZhJDAiLCJvcmlnaW5fcmVmaW5lZCIsIm9ucmVzaXplIiwibmF2bGkiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsInNpdGUiLCJhIiwicHJpbnRfZWRnZSIsImxpc3QiLCJkIiwiYyIsImIiLCJjb250ZW50IiwibWFuYWdlciIsIm1oIiwibSIsInNjYyIsInNjYyQwIiwibGlzdF9lZGdlcyIsImxpc3QkMCIsImxpc3QkMSIsIm91dHB1dCIsInBhcmVudF9oaWRlIiwicGFyZW50X3Nob3duIiwib25sb2FkIiwib25yZXNpemUiLCJ0YWIiLCJza2lwIiwicGx1cmFsIiwicmlnaHRzdWJwYW5lbF9pZCIsIm5hdmxpIiwicmlnaHRzdWJwYW5lbCIsImVkaXRvcl9mdWxsIiwiY2hpbGRzX2hpZGUiLCJiIiwiY29udGVudCIsImluaXRfZGVhZF9ydWxlcyIsIm1vZGVsIiwibWFuYWdlciIsIm1oIiwibGlzdCIsImFjYyIsInJ1bGUiLCJ0ZXh0Iiwid2FybmluZ3MiLCJpbml0X2RlYWRfYWdlbnRzIiwiYWdlbnQiLCJyYW5nZSIsImluaXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYSIsImNvbnRleHRfbGlzdCIsInRhYiQwIiwic2tpcCQwIiwicGx1cmFsJDAiLCJmbXQiLCJhIiwiZG9udF9nY19tZSIsIm9ubG9hZCIsIm9ucmVzaXplIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwic2V0X2Rpbl9pZCIsImRpbl9pZCIsIm1hbmFnZXIiLCJkaW5faWRzIiwiaWQiLCJvdXQiLCJkaW5fbGlzdCIsImRpbl9zZWxlY3QiLCJ4IiwiZGluX2RhdGEiLCJkaW4iLCJyIiwiYWNjIiwiZGluX2hlYWRlciIsImFsbCIsImkiLCJkYXRhIiwidiIsImJvZHkiLCJkaW5fdGFibGUiLCJ0aGVhZCIsImV4cG9ydF9jdXJyZW50X2RpbiIsInRvX3N0cmluZyIsIm1pbWUiLCJmaWxlbmFtZSIsImV4cG9ydF9jb25maWd1cmF0aW9uIiwiY29udGVudCIsIm5hdmxpIiwic3RhdGUiLCJzdGF0ZSQwIiwib25sb2FkIiwib25yZXNpemUiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJ0YWJfd2FzX2FjdGl2ZSIsImxpbmVfY291bnQiLCJzdGF0ZSIsInN0YXRlJDAiLCJuYXZsaSIsImNvbnRlbnQiLCJ4IiwieCQwIiwibGlzdCIsInRleHQiLCJtYW5hZ2VyIiwic3RhdGVfbG9nIiwicGFyZW50X2hpZGUiLCJwYXJlbnRfc2hvd24iLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInNlbGVjdF9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInNldF9jdXJyZW50X2ZpbGUiLCJjdXJyZW50X2ZpbGUiLCJ1cGRhdGVfb3V0cHV0cyIsImtleSIsIm1hbmFnZXIiLCJsaW5lcyIsImZpbGVfY291bnQiLCJzdGF0ZSIsInN0YXRlJDAiLCJuYXZsaSIsInhtbCIsInNlbGVjdCIsImZpbGVfbGluZV9pZHMiLCJjdXJyZW50X2ZpbGVfaWQiLCJmaWxlX29wdGlvbnMiLCJ4Iiwic2VsZWN0X2ZpbGUiLCJmaWxlX3NlbGVjdCIsImxpbmUiLCJmaWxlX2NvbnRlbnQiLCJzZWxlY3Rfb3V0cHV0cyIsInNlbGVjdF9kb20iLCJmaWxlaW5kZXgiLCJjb250ZW50IiwidCIsIm9ubG9hZCIsIm9ucmVzaXplIiwiY3JlYXRlX29ic2VydmFibGVfcGxvdCIsIm1haW5fZGl2X2lkIiwiZGl2X2Rpc3BsYXlfaWQiLCJleHBvcnRfaWQiLCJwbG90X3BvaW50c19pbnB1dF9pZCIsInBsb3Rfb2Zmc2V0X2lucHV0X2lkIiwic2V0X29mZnNldCIsIm9mZnNldCIsImRlZmF1bHRfcG9pbnQiLCJzZXRfcG9pbnRzIiwicG9pbnQiLCJzZXRfdGFiX2lzX2FjdGl2ZSIsInRhYl9pc19hY3RpdmUiLCJwbG90X3JlZiIsImhhc19wbG90Iiwic3RhdGUiLCJzdGF0ZSQwIiwiZXhwb3J0X2pzb24iLCJmaWxlbmFtZSIsIm1hbmFnZXIiLCJwbG90IiwiZGF0YSIsImV4cG9ydCQwIiwibWltZSIsInBsb3RfcG9pbnRzX2lucHV0IiwibWF4X29mZnNldCIsInBsb3Rfb2Zmc2V0X2lucHV0Iiwic2ltdWxhdGlvbl9pbmZvX29mZnNldF9tYXgiLCJzaW11bGF0aW9uX2luZm8iLCJwbG90X3NpemUiLCJ1cGRhdGVfb2Zmc2V0IiwidXBkYXRlX29mZnNldF9pbnB1dCIsInNpbXVsYXRpb25fbW9kZWwiLCJzaW11bGF0aW9uX2luZm8kMCIsIm9mZnNldF9tYXgiLCJvbGRfb2Zmc2V0Iiwib2Zmc2V0JDAiLCJvZmZzZXRfY3VycmVudCIsInBsb3Rfb2Zmc2V0X2lucHV0X2RvbSIsIngiLCJuZXdfb2Zmc2V0IiwicGxvdF9wYXJhbWV0ZXIiLCJwb2ludCQwIiwidXBkYXRlX3Bsb3QiLCJqc19wbG90Iiwib25sb2FkX3Bsb3RfcG9pbnRzX2lucHV0IiwicGxvdF9wb2ludHNfaW5wdXRfZG9tIiwianNfcG9pbnQiLCJldiIsInBsb3RfcG9pbnRzX3N0cmluZyIsInBsb3RfcG9pbnQkMCIsInBsb3RfcG9pbnRzX29wdGlvbiIsInBsb3RfcG9pbnRzIiwicGxvdF9wb2ludCIsInBsb3RfcG9pbnRfc3RyaW5nIiwiY29uZmlndXJhdGlvbiIsIm1vZGVsIiwib3V0IiwieG1sIiwiZXhwb3J0X2NvbnRyb2xzIiwiY29udGVudCIsInMiLCJvbmxvYWQiLCJ2YWx1ZSIsInBsb3RfY291bnQiLCJuYXZsaSIsIm9ucmVzaXplIiwiY3JlYXRlX3NuYXBzaG90IiwiaWQiLCJjb2xvcmluZyIsInNlbGVjdF9pZCIsImRpc3BsYXlfaWQiLCJmb3JtYXRfc2VsZWN0X2lkIiwic2V0X3RhYl9pc19hY3RpdmUiLCJ0YWJfaXNfYWN0aXZlIiwic2V0X2N1cnJlbnRfc25hcHNob3QiLCJjdXJyZW50X3NuYXBzaG90Iiwic3RyaW5nX3RvX2Rpc3BsYXlfZm9ybWF0Iiwic2V0X2Rpc3BsYXlfZm9ybWF0IiwiZGlzcGxheV9mb3JtYXQiLCJzbmFwc2hvdF9jb3VudCIsInN0YXRlIiwic3RhdGUkMCIsIm5hdmxpIiwiY29uZmlndXJhdGlvbl90ZW1wbGF0ZSIsImlkIiwiYWRkaXRpb25hbF9oYW5kbGVycyIsInMiLCJqc29uX2hhbmRsZXIiLCJrYXBwYV9oYW5kbGVyIiwiZmlsZW5hbWUiLCJkYXRhIiwiZG90X2hhbmRsZXIiLCJkZWZhdWx0X2hhbmRsZXJzIiwibW9kZWwiLCJzaW11bGF0aW9uX2luZm8iLCJjb25maWd1cmF0aW9uX2thcHBhIiwiY29uZmlndXJhdGlvbl9ncmFwaCIsInJlbmRlcl9zbmFwc2hvdF9ncmFwaCIsInNuYXBzaG90X2pzIiwic25hcHNob3QiLCJqc29uIiwiY29udGFjdF9tYXAiLCJ4Iiwic2VsZWN0X3NuYXBzaG90IiwiZG9tIiwiZmlsZWluZGV4IiwiaW5kZXgiLCJzaW11bGF0aW9uX291dHB1dCIsImluZGV4JDAiLCJtYW5hZ2VyIiwic25hcHNob3RfaWRzIiwic25hcHNob3RfaWQiLCJmIiwiZiQwIiwic2VsZWN0Iiwic25hcHNob3RzIiwiaSIsInNuYXBzaG90X2NsYXNzIiwiZW1wdHkiLCJzaW5nbGUiLCJtdWx0aXBsZSIsInhtbCIsImxpc3QiLCJzbmFwc2hvdF9maWxlIiwic25hcHNob3RfbGFiZWwiLCJzbmFwc2hvdF9zZWxlY3QiLCJzbmFwc2hvdF9jaG9vc2VyIiwidG9nZ2xlX2NvbnRyb2xzIiwia2FwcGEiLCJncmFwaCIsImV4cG9ydF9jb250cm9scyIsInNuYXBzaG90JDAiLCJrYXBwYV9zbmFwc2hvdF9kaXNwbGF5Iiwia2FwcGFfZ3JhcGhfZGlzcGxheSIsImZvcm1hdF9jaG9vc2VyIiwiY29udGVudCIsIm9ubG9hZCIsInNuYXBzaG90X3NlbGVjdF9kb20iLCJmb3JtYXRfc2VsZWN0X2RvbSIsInVwZGF0ZV9mb3JtYXQiLCJmb3JtYXRfdGV4dCIsImZvcm1hdCIsIm9ucmVzaXplIiwiY3JlYXRlX3N0b3J5X3JlbmRlcmluZyIsImlkIiwiZ3JhcGhfZGlzcGxheV9pZCIsInNldF90YWJfaXNfYWN0aXZlIiwidGFiX2lzX2FjdGl2ZSIsInRhYl93YXNfYWN0aXZlIiwibmF2bGkiLCJub25lX2NoZWNrYm94Iiwid2Vha19jaGVja2JveCIsInN0cm9uZ19jaGVja2JveCIsIm5vbmVfYm94Iiwid2Vha19ib3giLCJzdHJvbmdfYm94IiwibGF1bmNoX2J1dHRvbiIsImxpc3RfY29udHJvbCIsInN0b3J5X2xpc3QiLCJjbSIsImlkIiwic3RvcnlfbGlzdF9odG1sIiwic2VsZWN0X3N0b3JpZXMiLCJzZWxlY3Rfc3Rvcmllc19kb20iLCJzZXR1cF9mb3JtIiwibG9nX2NvbnRyb2wiLCJzdG9yeV9sb2ciLCJzZXRfaW5mbyIsImN1cnJlbnRfaW5mbyIsImxpbmUiLCJzdG9yeV9sb2dfaHRtbCIsImxvZ19kaXYiLCJsb2dfcGFuZWwiLCJzdG9yeV9ncmFwaCIsImNvbnRlbnQiLCJsaWZ0X3Jlc3VsdCIsIngiLCJlIiwiZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIiwibWFuYWdlciIsImNhdXNhbCIsIndlYWsiLCJzdHJvbmciLCJ1cGRhdGVfY29tcHJlc3Npb25fbGV2ZWwiLCJwcmVkX2lkIiwic2V0X2Ffc3RvcnkiLCJ2YSIsInYiLCJkIiwiZiIsImluc3BlY3Rfc3RvcmllcyIsImIiLCJhY2MiLCJwYXJlbnRfaGlkZSIsInBhcmVudF9zaG93biIsIm9ubG9hZCIsInRyYWNlIiwib25yZXNpemUiLCJuYXZfdGFiX2lkIiwibmF2Y29udGVudHNfaWQiLCJuYXZ0YWJzIiwicyIsInN0b3J5X2NsYXNzIiwibmF2Y29udGVudHMiLCJvbmxvYWQiLCJvbnJlc2l6ZSIsInN5bmMiLCJpbml0IiwibG9vcCIsImgiLCJ0IiwibG9vcF9zeW5jIiwib25sb2FkIiwib25sb2FkIiwibWFpbiIsIngiXSwic291cmNlcyI6WyIvYnVpbHRpbi8raW50NjQuanMiLCIvYnVpbHRpbi8rbWxCeXRlcy5qcyIsIi9idWlsdGluLytmYWlsLmpzIiwiL2J1aWx0aW4vK3N0ZGxpYi5qcyIsIi9idWlsdGluLytzeXMuanMiLCIvYnVpbHRpbi8rYmFja3RyYWNlLmpzIiwiL2J1aWx0aW4vK2pzbGliLmpzIiwiL2J1aWx0aW4vK2Zvcm1hdC5qcyIsIi9idWlsdGluLytpZWVlXzc1NC5qcyIsIi9idWlsdGluLytlZmZlY3QuanMiLCIvYnVpbHRpbi8rZnNfbm9kZS5qcyIsIi9idWlsdGluLytmcy5qcyIsIi9idWlsdGluLyt1bml4LmpzIiwiL2J1aWx0aW4vK2ZzX2Zha2UuanMiLCIvYnVpbHRpbi8rbmF0LmpzIiwiL2J1aWx0aW4vK2dyYXBoaWNzLmpzIiwiL2J1aWx0aW4vK3J1bnRpbWVfZXZlbnRzLmpzIiwiL2J1aWx0aW4vK21hcnNoYWwuanMiLCIvYnVpbHRpbi8raW8uanMiLCIvYnVpbHRpbi8rZ2MuanMiLCIvYnVpbHRpbi8rYmlnYXJyYXkuanMiLCIvYnVpbHRpbi8rcGFyc2luZy5qcyIsIi9idWlsdGluLytpbnRzLmpzIiwiL2J1aWx0aW4vK2hhc2guanMiLCIvYnVpbHRpbi8rb2JqLmpzIiwiL2J1aWx0aW4vK2NvbXBhcmUuanMiLCIvYnVpbHRpbi8ranNsaWJfanNfb2Zfb2NhbWwuanMiLCIvYnVpbHRpbi8rYmlnc3RyaW5nLmpzIiwiL2J1aWx0aW4vK21kNS5qcyIsIi9idWlsdGluLytzdHIuanMiLCIvYnVpbHRpbi8rbGV4aW5nLmpzIiwiL2J1aWx0aW4vK2FycmF5LmpzIiwiL2J1aWx0aW4vK2RvbWFpbi5qcyIsIi9idWlsdGluLytzeW5jLmpzIiwiL2J1aWx0aW4vK3dlYWsuanMiLCIvYnVpbHRpbi8rcHJuZy5qcyIsIi9idWlsdGluLyt6c3RkLmpzIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbEF0b21pYy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RkbGliLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wZXJ2YXNpdmVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zZXEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZWl0aGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9yZXN1bHQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Jvb2wubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NoYXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3VjaGFyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9saXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2J5dGVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdHJpbmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3VuaXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL21hcnNoYWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL29iai5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Zsb2F0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9pbnQzMi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvaW50NjQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL25hdGl2ZWludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvbGV4aW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wYXJzaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zZXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL21hcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RhY2subWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3F1ZXVlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYW1saW50ZXJuYWxMYXp5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9sYXp5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9zdHJlYW0ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsRm9ybWF0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9wcmludGYubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2FyZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcHJpbnRleGMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2Z1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZ2MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2RpZ2VzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvcmFuZG9tLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9oYXNodGJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC93ZWFrLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9mb3JtYXQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL3NjYW5mLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jYWxsYmFjay5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvY2FtbGludGVybmFsT08ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2NhbWxpbnRlcm5hbE1vZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvZ2VubGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9lcGhlbWVyb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL29jYW1sL2ZpbGVuYW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9jb21wbGV4Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9vY2FtbC9iaWdhcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWVfXy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwtY29tcGlsZXIvcnVudGltZS9qc29vX3J1bnRpbWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzX29mX29jYW1sX18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ltcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvdHlwZWRfYXJyYXkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2RvbV9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9mb3JtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC94bWxIdHRwUmVxdWVzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvd29ya2VyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93ZWJTb2NrZXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC93ZWJHTC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcmVnZXhwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC91cmwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3N5c19qcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvcmVzaXplT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL3BlcmZvcm1hbmNlT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL211dGF0aW9uT2JzZXJ2ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzdGFibGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2NTUy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX2V2ZW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZG9tX3N2Zy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvZXZlbnRTb3VyY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2ZpcmVidWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sL2dlb2xvY2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC9pbnRlcnNlY3Rpb25PYnNlcnZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvanNfb2Zfb2NhbWwvaW50bC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY2F0ZWdvcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2ZtdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvY3NldC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvcG1hcmsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2F1dG9tYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jb2xvcl9tYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3JlL2dyb3VwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9jb3JlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9lbWFjcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvcmUvc3RyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9nbG9iLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wZXJsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wY3JlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZS9wb3NpeC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfd3JhcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC9mdW5jdG9yL3htbF9wcmludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci94bWxfaXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci9zdmdfZi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvZnVuY3Rvci9odG1sX2YubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL3R5eG1sL3R5eG1sX3htbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvdHl4bWwvdHl4bWxfc3ZnLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi90eXhtbC90eXhtbF9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9yZWFjdGl2ZURhdGEvcmVhY3RpdmVEYXRhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC9qc19vZl9vY2FtbF90eXhtbF9fLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC10eXhtbC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL3R5eG1sX2Nhc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLXR5eG1sL3R5eG1sX2pzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3NlcXVlbmNlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3N3aXRjaC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9zZXEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3Rfc3RyZWFtLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X3Jlc3VsdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9wcXVldWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvbHd0L2x3dF9wb29sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3QvbHd0X212YXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfbXV0ZXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2x3dC9sd3RfY29uZGl0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9sd3RfcmVhY3QvbHd0X3JlYWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvanNfb2Zfb2NhbWxfbHd0X18ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9pbXBvcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfeG1sSHR0cFJlcXVlc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanNvbnAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9sd3RfanNfZXZlbnRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9qc19vZl9vY2FtbC1sd3QvbHd0X2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2pzX29mX29jYW1sLWx3dC9qc19vZl9vY2FtbF9sd3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2hvb2tlZC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9lYXN5LWZvcm1hdC9lYXN5X2Zvcm1hdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3V0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2JpbmlvdS9iaV9zaGFyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX2luYnVmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfb3V0YnVmLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfdmludC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX3N0cmVhbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYmluaW91L2JpX2lvLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9iaW5pb3UvYmlfZHVtcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIveW9qc29uL3lvanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvb3ZfcnVuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19vcGFtL2xpYi9hdGRnZW4tcnVudGltZS9val9ydW4ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX29wYW0vbGliL2F0ZGdlbi1ydW50aW1lL29iX3J1bi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvYXRkZ2VuLXJ1bnRpbWUvanNvbl9hZGFwdGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvZHluYW1pY0FycmF5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbGFyZ2VBcnJheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3Rvb2xzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvanNvblV0aWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9zdG9wLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvc2V0TWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbW9kcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL29wdGlvbl91dGlsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbG9jLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcHAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy92YWxNYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9yZXN1bHRfdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL3JlbmFtaW5nLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvcmFuZG9tX3RyZWUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9wcF9odG1sLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvb3BlcmF0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9uYnIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9FeGNlcHRpb25EZWZuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvbmFtZWREZWNscy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2xpc3RfdXRpbC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2ludENvbGxlY3Rpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9pbmZpbml0ZV9idWZmZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvaGFzaGVkX2xpc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9mcmFjdGlvbnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9maWZvLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZGF0YVN0cnVjdHVyZXMvY3JjMzIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jb2xvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2NpcmN1bGFyX2J1ZmZlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9kYXRhU3RydWN0dXJlcy9jYWNoZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2JpZ2J1ZmZlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2RhdGFTdHJ1Y3R1cmVzL2Jhc2U2NC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvdXNlcl9ncmFwaC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvc2lnbmF0dXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpdGVHcmFwaHMvYWdlbnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaXRlR3JhcGhzL2VkZ2VzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2l0ZUdyYXBocy9uYXZpZ2F0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9yYXdfbWl4dHVyZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vYWxnX2V4cHIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL2NvbnRhY3RfbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wYXR0ZXJuLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9tYXRjaGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vaW5zdGFudGlhdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vcHJpbWl0aXZlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Rlcm0vbEthcHBhLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wYXR0ZXJuX2NvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9wYXR0ZXJuX2RlY29tcGlsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS90ZXJtL21vZGVsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9rYXBwYV9wcmludGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9jb25maWd1cmF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvdGVybS9hbGdfZXhwcl9leHRyYS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vdHJhY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2NvdW50ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2RhdGEubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2ZsdXhtYXAubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL3Jvb3RzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvc2ltdWxhdGlvbi9pbnN0YW5jZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2V4cHJfaW50ZXJwcmV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL2dlbmVyaWNfcnVsZV9pbnRlcnByZXRlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3NpbXVsYXRpb24vc3RhdGVfaW50ZXJwcmV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9zaW11bGF0aW9uL3JlcGxheS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvYXN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9jb3VudGVyc19jb21waWxlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIvbEthcHBhX2NvbXBpbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5IiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9jc3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rZmlsZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHkiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9rYW1vaGFfbXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9ldmFsLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvZ3JhbW1hci9ldmFsdWF0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC90eXBlX2ludGVyZmFjZS9wdWJsaWNfZGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3ZlcnNpb24vdmVyc2lvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9zdXBlcmFyZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9zdXBlcmFyZ1RrLm5vdGsubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvY29tbW9uX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcnVuX2NsaV9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL3Byb2dyZXNzX3JlcG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9rYXBwYV9maWxlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9wcF9zdmcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkvcGFyYW1ldGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2xpL291dHB1dHMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGkva2FzaW1fYXJncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9jbGlfaW5pdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsaS9hZ2VudF9hcmdzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvbG9nZ2luZy9sb2dnZXJzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvbG9nZ2luZy9sb2dnZXJzX3N0cmluZ19vZl9vcC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NsYXNzaWNhbF9ncmFwaHMvZ3JhcGhfbG9nZ2Vyc19zaWcubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGFzc2ljYWxfZ3JhcGhzL2dyYXBoX2xvZ2dlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jbGFzc2ljYWxfZ3JhcGhzL2dyYXBoX2pzb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL3N5bWJvbF90YWJsZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvcmVtYW5lbnRfc3RhdGVfc2lnbmF0dXJlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvcGFyYW1ldGVycy9leGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2NvbmZpZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvcmVtYW5lbnRfcGFyYW1ldGVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvb2RlX2FyZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2hlYWRlcnMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9wYXJhbWV0ZXJzL2ZpbGVOYW1lcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3BhcmFtZXRlcnMvZ2V0X29wdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2Vycm9yX2hhbmRsZXJzL2V4Y2VwdGlvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2Vycm9yX2hhbmRsZXJzL2xpZnRfZXJyb3JfbG9ncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL3Byb2ZpbGluZy9zdG9yeVByb2ZpbGluZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvbWFwX3dyYXBwZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL3dvcmtpbmdfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvaW50X3N0b3JhZ2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL3VuaW9uX2ZpbmQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL3Rvb2xzX2thc2EubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL21pc2Nfc2EubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2hhc2gubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9LYVNhX3JlcC9tb3JlX2RhdGFzdHJ1Y3R1cmVzL2dyYXBocy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL0thU2FfcmVwL21vcmVfZGF0YXN0cnVjdHVyZXMvZGljdGlvbmFyeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3RpY2tfc3Rvcmllcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2dyYXBoX2Nsb3N1cmUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jYXVzYWwubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9wcmVkaWNhdGVfbWFwcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3ByaW9yaXR5Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvc3RvcnlfanNvbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2NmbG93X2hhbmRsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9rYXBwYV9pbnN0YW50aWF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcG9fY3V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHNldWRvX2ludmVyc2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ibGFja2JvYXJkX2dlbmVyYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9ibGFja2JvYXJkLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvcHJvcGFnYXRpb25faGV1cmlzdGljcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2dlbmVyaWNfYnJhbmNoX2FuZF9jdXRfc29sdmVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cvYmxhY2tfbGlzdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2RhZy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3V0aWxpdGllcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L3V0aWxpdGllc19leHBlcnQubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jZmxvd19qc19pbnRlcmZhY2UubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9jZmxvdy9jb21wcmVzc2lvbl9tYWluLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvY2Zsb3cva2FzdG9yX21waS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2NmbG93L2RhZzIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvYXBpX2NvbW1vbi5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9hcGlfdHlwZXNfai5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9zd2l0Y2htYW5fY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL21waV9tZXNzYWdlX2oubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkvbXBpX2FwaS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9hcGlfZGF0YS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9mYWtlemlwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2thcHBhX2ZhY2FkZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9tYW5hZ2VyX3NpbXVsYXRpb24ubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvY29yZS9hcGkva2FzdG9yX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYXNhX2NsaWVudC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9rYW1vaGFfY2xpZW50Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2NvcmUvYXBpL2Vudmlyb25tZW50X21lbW9yeS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9jb3JlL2FwaS9hcGlfcnVudGltZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfZXJyb3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL2NvbW1vbl9zdGF0ZS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvSnNOb2RlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9yZXN0X2FwaS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfc2V0dGluZ3MubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3dlYl93b3JrZXJfYXBpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9ydW50aW1lLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9wcm9qZWN0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9maWxlLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdGF0ZV9zaW11bGF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9tb2RhbF9wcmVmZXJlbmNlcy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdWlfY29tbW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF9wcm9qZWN0cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvc3RhdGVfcGVydHVyYmF0aW9uLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF9zZXR0aW5ncy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2Fib3V0Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9jb2RlbWlycm9yLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9tZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL21lbnVfZWRpdG9yX2ZpbGUubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9zdWJwYW5lbF9lZGl0b3IubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3V0aWxpdHkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9jb25zdHJhaW50cy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfY29udGFjdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvd2lkZ2V0X2V4cG9ydC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2NvbnRhY3RfbWFwLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19ncmFwaGxvZ2dlci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2luZmx1ZW5jZXMubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9wb2x5bWVycy5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2VkaXRvci5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvdGFiX2ZsdXgubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9sb2cubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9vdXRwdXRzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9qc19wbG90Lm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS90YWJfcGxvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfc25hcHNob3QubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9zbmFwc2hvdC5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fYnVpbGQvZGVmYXVsdC9ndWkvanNfc3RvcnkubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3RhYl9zdG9yaWVzLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9wYW5lbF90YWIubWwiLCIvaG9tZS9ydW5uZXIvd29yay9LYXBwYVRvb2xzL0thcHBhVG9vbHMvX2J1aWxkL2RlZmF1bHQvZ3VpL3N0YXRlX3VpLm1sIiwiL2hvbWUvcnVubmVyL3dvcmsvS2FwcGFUb29scy9LYXBwYVRvb2xzL19idWlsZC9kZWZhdWx0L2d1aS9Kc1NpbS5tbCIsIi9ob21lL3J1bm5lci93b3JrL0thcHBhVG9vbHMvS2FwcGFUb29scy9fb3BhbS9saWIvb2NhbWwvc3RkX2V4aXQubWwiXSwibWFwcGluZ3MiOiI7Ozs7OztBLEM7O0c7OztRO1M7OztHO0k7STtJO0c7RTs7OztHQTBPQSxTQUFTQSxtQkFBbUJDLEdBQUssU0FBUUEsV0FBWTtHQ3pMckQsU0FBU0MsZ0JBQWdCQyxHQUFHQztJQUMxQixHQUFHRCxRQUFRO0lBQ1gsR0FBSUMsVUFBVSxPQUFRQSxTQUFTRDtJQUMvQixJQUFJRSxRQUFRQztJQUNaLE9BQVE7S0FDTixHQUFJSCxPQUFPRSxLQUFLRDtLQUNoQkQ7S0FDQSxHQUFJQSxRQUFRLE9BQU9FO0tBQ25CRCxLQUFLQTtLQUNMRTtLQUNBLEdBQUlBLFFBQ0ZGOztHQUtOO0dEN0NzQixJQUFsQkcsb0JBQW9CQztHRUF4QixTQUFTQyxvQkFBcUJDLEtBQU8sTUFBTUEsSUFBSztHQzRIM0IsSUFBakJDO0dEckZKLFNBQVNDO0lBQ1BILG9CQUFvQkU7R0FDdEI7R0ZyQ0EsU0FBU0UsUUFBU0MsSUFBR0MsSUFBR0M7SUFDdEJDLFVBQVVIO0lBQ1ZHLFVB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksVztJLE87Rzs7STs7RztHO0ksUTtJLFE7O0k7SyxROzs7Ozs7Ozs7Ozs7d0Q7MEQ7MEQ7O1E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O007O0s7O0k7Rzs7STs7Ozs7O0c7O0ksc0I7Rzs7STtLLE07SyxNOztJO0k7SSxXO0ksc0I7Rzs7O0ksa0Isc0IsZ0M7OztLLE07OztPLGE7O087USxLO1EsSzs7Ozs7TztRLE87USxPO1EsSzs7Z0M7O3VDO1E7Ozs7c0M7Tzs7TztRLE87USxPO1EsTztRLEs7Ozs7O3dDO1M7Ozs7dUM7UTs7Tzs7Rzs7STtLLEs7SyxLOzs7OzRCOztJLHNCO0c7O0k7SyxLO0ssSzs7O0s7O2E7O0k7cUM7Rzs7O0ssbUI7STtJLEksaUIsbUI7OztNLE07O00sTTtLOzs7Ozs7Ozs4Qjs7Ozs4Qjs7Ozs7O00sWTs7Ozs7OzhCOzs7OztNOztJLGdEO2dCOztLLE07STtHOztJOztlO2U7OztLLE8seUI7O0ksbUIsSTtJO2MseUI7SSxJLGtCOzs7O00seUI7TTs7Ozs7SSxPOztxQixpQzs7STs7OztHOztJOzs7O0k7Rzs7STs2Qzs7Szs7TSxLO0s7SyxPOztJO0ksTztHOzRCLCtCOzs7Szs7OztJO0k7SSxZLE87Ozs7O29DOzhCO0c7O0k7O0ksTztHOztJO0k7OztJOztLLEs7O0s7Ozt5QjtJO0c7O0k7STs7OztJOzs7O2MsNEI7OztHOztJOztLOzs7STtHOztJO0k7SSx5QjttQixpQjs7STs7Ozs7Ozs7O0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw2QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7O0c7O0ksa0I7O0k7Rzs7SSxzQjtJLGU7STs7O0s7O0k7SSw2QjtHOztJO0k7Ozs7Szs7STtJO0c7O0k7Ozs7Ozs7Ozs7Ozs7OztLOzs7Ozt3Qzs7O0k7O0s7O007TSxzQjtLOzZCOzs7Ozs7SyxjO0s7NkI7Ozs7O0k7OztLOzZCOzs7OzhCOztJOzs7OztHOzs7SyxJOzs7OztNOzs7Ozs7TTs7Ozs7eUI7O007O007TyxLO087Ozs7Ozs7OztLOztNO08sSzs7TztrQjtrQjs7TTs7O08seUI7Ozs7TTtLO0s7TSxLOztNOztNLE07OztROztROzs7Ozs7Ozs7c0I7O1E7O2lDOztROztJO0k7STtHO3FCLHlDO29CLDhCO3NCLDhCO3FCLGtCOztJLHFCLFUsVyxTO0ksYyxNOzs7O007Ozs7O1M7Uzs7Ozs7aUIsVSxXLFU7Ozs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJLHFCLFUsVyxTO0ksYyxROzs7Ozs7OztPO087TztPOzs7Ozs7O1M7O21COzs7OztpQixVLFcsVTs7SztLO0s7Szs7STtJO0k7STs7O0kscUIsVSxXLFM7SSxjLE07Ozs7TTs7Ozs7Uzs7bUI7Ozs7O2lCLFUsVyxVOzs7O0s7SztLO0s7O0k7STtJO0k7OztJOzs7Ozs7Rzs7STs7Ozs7Ozs7OztLO00sTzs7Ozs7Ozs7OzttQzs7Szs7TSxVO00sTTs7Ozs7STs7Ozs7Ozs7WTs7Ozs7Ozs7OzthOzs7YyxPOzthLGMsUTs7Ozs7YyxPOzs7Ozs7O2MsTzs7OzthLE87OztHO3NCLE8scUI7NEIsYTsyQixhO2tDLGE7NkIsYTttQyxhOzJCLFk7MkIsWTtnQyxZOztJOzs7RztxQixpQzs7STs7Ozs7OztZOzs7OztHOztJOzs7O087USxPO08sTzs7Szs7OztLOztLLE87O0ksa0IsSTtJOztJLE87Rzs0Qiw2Qjs7O0s7Ozs7STtJLEk7O2lEOzZCO0c7O2tCLHFCLGE7O0ksYyxNLGlDO0k7OztpQywwQjs7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7SztLOzs7Ozs7Ozs7TTtNO08sb0I7Ozs7O0s7SztLO0s7Szs7Ozs7Ozs7SztLO00sb0I7Ozs7O0k7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNO007TyxvQjs7Ozs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7Rzs7a0Isd0IsYTs7SSxjLE0saUM7STs7Ozs7OztNO007TyxvQjs7Ozs7SztNOzs7SztLO0s7SztLOzs7Ozs7OztLO0s7TSxvQjs7Ozs7STtJO0k7Rzs7STs7O0ssSSxNOzs7Ozs7STs7Ozs7O1k7Ozs7Rzt5QixPLHVCO2dDLFk7MkIsWTtHOztJO0ssTTtLOztpQjs7OztLOzs7O0s7OztJO0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7Syx5QjtLO007O08sUTs7Ozs7cUIsTztNOztPLFE7Ozs7O0c7O0k7Ozs7O0k7O0ssTTs7O0k7a0I7O0ssWSxPO0s7O007O08sUTs7Ozs7TSxZLE87TTs7TztTOzs7OztHOztJOzs7OztJOztLLE07OztJO2tCOztLLFksTztLOztNOztPLFE7Ozs7O00sWSxPO007O087Uzs7Ozs7RztHOztJLFU7dUIsTyx5QztJOzs7Ozs7Ozs7Ozs7Ozs7O0c7O0ksVTt1QixPLHlDO0k7SztNOzs7SztLO0s7OztJOztHOztJLFU7dUIsTyx5QztJO0s7TTs7O0s7SztLOzs7STs7RztHO0k7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7OztZSTdIQWEsTUFBT0MsR0FBVUMsR0FBVyxPQUFyQkQsTUFBVUMsVUFBZ0I7T0FDakNDO1lBQ0FDLE9BQU9ILEdBQUksT0FBSkEsRUFBSztPQUNaSTtZQUVBQyxVQUFVTCxHQUFFQyxHQUFJLGNBQU5ELElBQUVDLFdBQWlCO1lBQzdCSyxPQUFLTixHQUFFQyxHQUFJLE9BQU5ELElBQUVDLEVBQVc7O0lBSWxCTTtJQUNBQztJQUhBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztZQUVBQztJQUFZOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztZQUxaTjs7V0FEQUQ7R0FjVTs7OztPQWxCVkQ7T0FVQVE7T0FSQUw7T0FDQUM7T0FDQUg7T0FDQUM7T0FDQUc7T0FDQUM7T0FD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O1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBRUFDO1lBR0FDO1lBRUFDO1lBRUFDO1lBR0FDO1lBS0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBSUFDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBR0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBRUFDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBR0FDO1lBT0FDO1lBU0F2VztZQUVBd1c7WUFFQUM7WUFFQUM7WUFFQWpXO1lBRUFrVztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBQztZQUVBN2U7WUFFQThlO1lBRUFDO1lBRUFDO1lBQUFBO1lBSUFsYjtZQUVBbWI7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFFQUM7WUFHQUM7O1lBR0ExZTs7OzthQWtDQXFmO0tBQStCOzs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7SUNsbENFN1g7SUFDQThYOztJQUNBcGdCO0lBQ0F1STtJQUNBQztJQUdBNlg7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCLFcscUM7O0ksTzs7O0c7c0IsTyxvQzs7SSxRO0k7SSxPO0c7O0ksVzs7SyxVO0s7OztJOzs7Rzs7STs7SSxPO0c7O0ksSSx1Qzs7OztNLFk7NkM7TTs7Ozs7O0c7O0ksSSxxQjs7O2tCOzs7Rzs7STtJO0s7TTs7TTtNO2tCOzs7OztLOzs7RztHLCtCOzRCLG9CLHVCOztJLGlCOzs7STtJLEk7STs7Syw2QixtQjtpQjs7Ozs7O007OztVOztHOztJLG1DOzs7O00sWTs7TTs7Ozs7O0c7MkIsK0I7Z0MsbUI7O0k7Ozs7TTtNOzs7Ozs7Rzs7STs7STtLO007O1M7MkIsTyxrQjtTOzs7UTtNOztTOzJCLE8sa0I7Uzs7O1E7TSxxQixxQztLOzs7Ozs7UTtTO1M7UztTO1U7VSxXO1U7VTs7O1U7Ozs7Ozs7O2tCLFMsUzs7O007O0s7Szs7O0s7TSxvQyxtQjt5QixPLHNCO0s7SztLOzs7Rzs7STs7Ozs7Ozs7OztRO1MsYTs7Ozs7Ozs7OztHOzt1QixTO2dDLFM7O0k7Rzs7STtJOzs7OztPLFk7Ozs7UztTLE07Ozs7Ozs7Ozs7Ozs0Qjs7O0c7O0k7STs7Ozs7WTtRO1EsTTs7Ozs7OztLO0s7Ozs7NEI7OztHOztJO0ksNkIsbUI7RzswQiw2Qjs7STtJOzs7OztJLGdCOzs7STs7Ozs7TTs7O087Ozs7O1UsRztXLE07Ozs7OztRLEk7Ozs7Ozs7TztRLFk7OztRO1EsSTs7Ozs7OztpQjs7Ozs7Ozs7OztHO0c7eUIsK0I7O0k7Ozs7Ozs7Rzs7SSxJLGdCOztHOztJLGM7OztJO2lCOzs7O00sMkQ7TTtLOzs7Rzs7STs7SyxNOztJO0c7dUIsbUM7MkIsa0IsYzs7STs7SSxrQjs7O0c7O0k7O0ssTTs7STtHOzJCLGtDOztJOztJLHdCO2tCLCtCO0k7Rzs7STs7O0ksRywwQjs7OztHOztJOzs7Rzs7O0k7STs7O2E7Yzs7YztjOzs7O2M7Ozs7YzthOztHOztJOzs7STtHOztJLFk7O0k7OztJOzs7aUI7STtHOztJO0k7a0I7YTtLOztNOzBCLG9COzs7UztTO1M7UTtLO0s7OztJLFE7SSxnQjt3QixrQzs7SztpQjs7SyxhO0s7STtJO0k7STtHOztJLFk7SSxrQjtzQixvQjs7SztLOztJO0k7STtHOztJLFk7SSxrQjtzQixvQjs7bUIsa0M7SztJO0k7STtHOztJLFk7O0ksUztJLGdCO3NCLGdDOztLOzs7TSxlOztLO0k7STtJO0k7OztJLFk7SSxrQjtzQixvQjtrQixlLGtDO0k7STs7O0ksUTtJLGM7c0Isb0I7a0IsMEI7STtJO0c7O0ksWTtJLGtCO3NCLG9COztLO0ssTztJO0k7STs7O0ksWTtJLGtCO3NCLG9COztLLFk7aUI7O0s7STtJO0k7OztJLFk7SSxrQix5QjtzQixvQjs7SyxJLGU7Ozs7TSxlOzs7O0k7STtJOzs7STtJLFk7SSxrQix5QjtzQixvQjs7SyxJLGU7Ozs7TSxPOzs7SztJO0k7STs7O0ksUTs7STtJLGU7c0IsZ0M7O0s7STtJO0k7STs7O0ksUTs7SSxRO0ksZTtzQixnQztrQixpRDtJO0k7STs7O0ksUTs7SSxRO0ksZTtzQixnQzs7Szs7Ozs7O0k7STtJO0k7OztJLFM7SSxlLHlCO3NCLG9COztLO2M7SztJO0k7STtHOztJLFk7SSxrQix5QjtzQixvQjs7SztjO0s7STtJO0k7O3NCLDZCOztJOzs7TTtNLFc7Ozs7TTs7O087Tzs7Ozs7OztHOztJO0s7OztLOztzQixZO0ssTztJOztLO007O3dCO007Ozs7O08sTTs7O0k7dUIsNEI7STtJO0c7O0k7Szs7O0s7O3NCLFk7SyxPO0k7O0s7O2tCOztNO087USxROzs7Ozs7STt1Qiw0QjtJO0k7Rzs7SSxZOztJO0ksSSxlOztLO2lCOztLO0k7O0s7Ozs7TyxNOztNOztLLGtCO3FDOzthLHlCLDJCOztLO0s7SztNO007OzttQjs7SztJOzBCO0k7STs7O0k7SztLOzs7eUIsUzs7VSxNO1M7SyxPOzttQzs7bUM7c0IsUzs7Szs7O0ssMEI7O0k7STtJO0k7Rzs7SSxTO2E7SSw0QiwwQjtzQixpQzs7Szs7O00sZTs7SztJO0k7STtJO0c7O0ksUzthO2E7STs7OztLO0s7SztzQiw2Qzs7Szs7O00sZTs7SztJO0k7STtJO0k7Rzs7SSxTO2E7YTthO0k7Ozs7O0s7SztLOztLO0k7O0s7OztNLGU7O0s7STtJO0k7STtJO0k7Rzs7SSxTO2E7YTthO2E7STs7Ozs7O0s7SztLO0s7O0s7STs7Szs7Ozs7Ozs7Ozs7OztNLGU7O0s7STtJO0k7STtJO0k7STtHOztJLFM7YTthO2E7YTthO0k7Ozs7Ozs7SztLO0s7Szs7Szs7O0k7O0s7Ozs7Ozs7Ozs7Ozs7OztNLGU7O0s7STtJO0k7STtJO0k7STtJO0c7b0IsdUIsYyxNOztJLGdCLHdCLFM7Ozs7Szs7ZSxZOztlO2M7Ozs7SSxRO0ksYztzQixnQzs7SztnQjs7aUI7O0s7STtJO0k7STtHO0c7O0k7Ozt1QyxTO0ksd0I7a0IsdUIsTzs7Szs7SztLO0s7SyxPO0k7STtHO3VCLGM7O0k7STs7STs7O2E7YSxHLDJCOztjOzs7YztjOzs7O2M7Ozs7Yzs7OztHOztJOzs7STtHOztJLG1COztJO0c7O0k7Ozs7Z0IsTzs7O0k7Rzs7SSxtQjs7O0ksd0I7O0ssTTsyQiwwQjtJOzs7STtJOztvQyxPOzs7Ozs7STtHOztJO0k7a0I7a0Msa0I7Szs7TTtNO00sb0Isb0I7OztTO1M7UztRO0s7Szs7O0k7Szs7TTs0QixxQjs7O1MsYTtTOztRO0s7Szs7SSxnQixlO3dCLGtDOztLLEksZTttQyxHLDRCO0ssYTtLO0k7STtJO0k7Rzs7STtJLFk7SSxrQjtzQixvQjs7SztpQjs7SztJO0k7STs7O0k7SSxxQyxXO0ksa0I7c0Isb0I7a0IsZSxnQztJO0k7OztJO0k7O3FCOztLLFc7Ozs7Szs7TTswQixxQjtzQixlLGlDO0s7Szs7SSxnQjt3QixpQzs7SztLLGU7STtJO0k7STtHOztJO0ksNkIsTztJLGM7c0Isb0I7O0s7SyxPO0k7STtJO0c7O0k7STtLOztNOzBCLG9COzs7UyxZO3FCOztTO1E7SztLOztJLGtCLFE7Z0I7O0k7OztJLG1CO0ksa0IseUI7c0Isb0I7O0ssSSxhOztNLE07OztLLGU7STtnQyxpQztJO0k7OztJLG1CO0ksa0I7c0Isb0I7a0IsZ0M7STtJO0c7O0k7O0ssd0IsTyxxQjs7O0ksUTtJLGU7c0IsaUM7O0s7aUI7O0ssZTtJO0k7STtJOzs7STtJOztJO0s7O007MEIscUI7c0IsdUM7SztLOztJLGU7d0IsaUM7b0IsZ0Q7STtJO0k7Rzs7STtJLFE7O0k7Szs7TTswQixxQjtzQix1QztLO0s7O0ksZTt3QixpQztvQixnRDtJO0k7STtHOztJO0ksUztJLGU7c0Isb0I7O0s7aUI7O0ssZTtJO0k7STtHOztJO0ksWTtJLGtCO3NCLG9COztLO2lCOztLLGU7STtJO0k7OztJO0k7SyxtQjs7Szs7STtLLG1COztLOztJLG1CO3NCLGlEOztLO00scUMsTzs7TSxPOztLLGU7STs7SyxtQjs7SztJO0k7STtHOztJO0kscUM7STs7SztLO0s7O0s7d0I7O0s7STs7Szs7O3lCOztNOzs7Z0Q7Szs7O00sb0I7TTtNOzs7Szs7TTtNO007OztLO0s7OztJO0k7STtJOzs7STs7O3dDOzs7Rzs7STs7SztLO21CO0s7SztLO0k7STtLO0s7O29DLFMsbUIsUztLLE87OztLOzs7MEIsUztzQix3QjtNO0s7Szs7O21DO3dCLFM7b0IsZ0M7STtJO0k7STtHOztJO0k7O29DLFc7Szs7TTswQixvQjtzQixlLG1DO0s7Szs7OztLOztNOzRCLHFCO3dCLGUsc0M7SztLOztJLGU7d0IsaUM7O0s7SyxlO0k7STtJO0k7Rzs7STtJOzs7O3NDLFc7Ozs7Ozs7O087O1E7UTtROzRCLDZDOzs7VyxJLGlCO1csZTtVO087TztPO087Ozs7STs7O3dDOzs7OztHOztJO0k7Ozs7Ozs7O1EsVzs7Ozs7Ozs7Ozs7O1E7O1M7UztTOzs7WTtXOzs7WSxJLGlCLGlCO1ksZTtXO1E7UTtRO1E7UTs7Ozs7STs7O3dDOzs7Ozs7Rzs7STtJOzs7Ozs7Ozs7O1MsVzs7Ozs7Ozs7Ozs7Ozs7O1M7O1U7VTtVO1U7OzthOzs7WTs7O2E7YztjO2M7YztjLEk7YTtZO1M7UztTO1M7UztTOzs7Ozs7STs7O3dDOzs7Ozs7O0c7O0k7STs7Ozs7Ozs7Ozs7O1UsVzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1U7O1c7VztXO1c7Vzs7O2M7Ozs7O2E7OztjO2U7ZTtlO2U7ZTtlLEk7YzthO1U7VTtVO1U7VTtVO1U7Ozs7Ozs7STs7O3dDOzs7Ozs7OztHOzZCO2dDO21CLDBDOztJOzs7OztHOztJOzs7OztHO29CLG9COztJLG1CO0ksa0I7c0Isb0I7O0ssVztLO0k7STtJOztvQix5QjtvQix5Qjs7SSxZOztJLDBCO0k7c0Isb0I7a0Isb0Q7STtJOztnQzs7SSwwQztHOztJLDBDO0c7O0ksMEM7Rzs7STs7a0M7OztHOztJOztrQzs7O0c7O0k7Rzt3QixvRDttQiwwQztHLEksMkI7O0k7Z0Q7Rzs7STtnRDtHOztJO2dEO0c7b0IsMEM7O0k7Z0Q7Rzs7STs7a0M7OztHOztJO2dEO0c7Z0M7O0ksMEM7Rzs7STtnRDtHOztJO2dEO0c7O0k7Z0Q7Rzs7STtnRDtHOztJOztnQzs7O0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7cUIsd0Q7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7O0k7O2dDOzs7RztvQix1RDtvQix1RDtvQix1RDs7SSx5QztHOztJLHlDO0c7O0kseUM7Rzs7SSw2QztHOztJO0c7O0k7Rzs7STtHOztJLHlDO0c7O0kseUM7Rzs7SSx5QztHOztJLHlDO0c7RztJO0k7STtJO0k7STs7STtJLG9DO0c7O0ksK0IsaUI7Rzt1QiwrQixvQjt1QiwrQixvQjtHOztJOztLOztNOztTOztVLE87O1MsTTtROzs7O0ksK0IsYztHOztJO0k7O2lDOzBEOztLLCtCO0ssZTttQjtLO007MEIscUI7OztTO1M7O1E7SztLOzs7Ozs7O00sbUMsUzs7Syx1Qjs7TTtPOzZCLHNCOzs7VTtzQjs7VTtTO007TTs7SztNO00sc0Isc0I7OztTO3FCOztTO1E7Z0Msb0M7OztTO1M7OztVOzs7VTtTO1E7SztLO0s7Ozs7O0s7OztlLFk7O2U7Yzs7O0ksdUI7d0Isb0M7O0s7aUI7O0s7STtJO0k7STtHO0c7OEIsOEM7O0k7Rzs7STtHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7O2dDOzs7Rzs7STs7Z0M7OztHOzs7dUIsNEI7MkIsZ0M7MEIsMkI7eUIsOEI7dUIsNEI7O0s7SyxxQjtJOztLO0sscUI7STsyQiw4Qjs7SztLLHFCO0k7MEIsK0I7O0s7SyxxQjtJOzZCLGtDO3lCLDRCO3lCLDhCOztLO0sscUI7STsyQixnQzsrQixvQzttQyx3Qzs7SztJOztLO0k7STs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7O0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJSS9oQ1EsSUFuQlJpRCxjQUNBQyxrQkFDQUMsaUJBaUJBQzthQUVBQyxPQUFPQztLQUNUO01BQXlCLFFBQUE7TUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7R1VyS0o7Ozs7Ozs7O0lBd25DUXNjOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUExbkNKQztJQWdLQUM7Ozs7Ozs7Ozs7Ozs7SUFBQUM7Ozs7Ozs7Ozs7Ozs7SUFBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQTlKSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1lBRUlDLFdBQVdDO0lBQUksTUFBQSw0Q0FBSkE7R0FBd0I7R0FFdkM7SUFBQTtJQUNBO0lBQ0E7SUFDQTtZQU1J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T0FoQ0FWO09BWkFIO09BMEVBd0I7T0F6QkFWO09BVUFHO09BR0FFO09Bc0JBWTtPQVBBTjs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHOzs7OztHOzs7OztHOzs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7STtHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3lCO0ksVztHO0c7O0ksSSxXLG9COzs7O0s7Ozs7TTtLO0s7SztLOztNO007TTs7SztLLFc7SztLLE87O0c7OztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJLGlCO0c7O0ksd0I7Rzs7STtJLE87O0c7O0ksVztJLE87Rzs0QixPLDZCOzZCLCtDO0c7SSxnQjtJLHFCO0ksaUI7SSxzQjs7SSxtQjs7STtHOztJO0ssTztJLE87Rzs7STtLLE87SSxPO0c7O0k7SyxPO0ksTztHOztJO0ssTztJLE87Rzs7SSxnQjtHOztJO2lCO0c7Z0MsTyxvQzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7O0ksTztHOztJLE87Rzs7SSxPO0c7aUMsTyxrQzs7STtLO00sTztNLE87Szs7Ozs7SztNO007OztTOzs7Ozs7OztTO1E7SztLOzs7UyxHLG1DO1M7VSx1QjtVOzs7Ozs7VTtXOzswQjtXOzs7O2tDOzs7O1E7TTs7Ozs7Ozs7Yzs7OztNO087TztlO0s7TTtRO1c7Ozs7bUI7OztTOztVO1U7UztTLE87UTtNLE87SyxPOztHOztJLEksVyxzQzs7Ozt3Qzs7SztNLEc7TyxNO00sSSxPOzs7OztNLEc7TyxNO3FCOztLO00sRztPLE07TTtPLE87TyxPOzs7Ozs7b0I7O0s7O0c7O0k7SyxJLFcsOEI7Ozs7Ozs7OztHOztJOztPOztJO0c7OztJOztLOztNLEksVyx3Qjs7O2tDOzs7SztLLE87STtJO0s7SztvQjtNLFc7Ozs7STtJOzs7O0s7O0ssTztJO0ksTztHOztJO0c7OztJOztHO0csc0I7O0k7SSxPO0c7O0k7SyxROzs7SyxTO0ksSTs7O0s7SztLLE07O0k7STtHOztJO0ssUTs7O0ssVTtJLEk7OztLO0s7SyxNOztJO0k7Rzs7STtLLFE7OztJLEksYzs7O0s7SztLLE07O0k7OztLLFM7SyxVO0k7Szs7Ozs7SztLO0s7SztLLE07O0k7STtJO0c7O0k7SyxROzs7SSxJLGM7OztLO0s7SyxNOzs7SSxJLGM7OztLO0s7SztLO0ssTTs7STs7O0ssUztLLFU7SyxVO0k7Szs7Ozs7Ozs7Ozs7SztLO0s7SztLO0s7SyxNOztJO0k7STtJO0c7O0ksTztHOztJO0c7O0k7Rzs7STtHOztJO0c7O0k7SyxXO0s7Ozs7O00sTTs7OztHOztJLE87Rzs7STtHOztJO0c7OztJOzs7O0k7OztJLEksb0I7STtJO0k7Rzs7SSxJLHFCO0k7SSxJOzs7OztJO0c7O0k7OztLO0s7STtJO0ksSTs7Ozs7STs7O0k7Ozs7SztLO0k7STtJLEk7Ozs7O0k7STs7O0ksVztJO0s7SztNLE87TSxXO0s7Ozs7SztLLE07O0c7O0ksTyxzQjtHOztJLFc7STtJO0k7O0s7TSxJLFk7Ozs7Ozs7OztLLGtCLEs7O2Usc0I7TTtNO08sUztPLFU7TTtNOztVLHVCOztHO3NCOzRCOzRCO3NCOzRCOztJOztzQjs0Qjs0QjtzQjtzQjtzQjtzQjtzQjtzQjtzQjs0Qjs0Qjs0Qjs0Qjs0Qjs7STs7O0k7O3NCO3NCO3NCOztzQjtzQjtzQjs0QjtzQjtzQjtzQjtzQjtzQjtzQjtzQjs7NkI7dUI7O0k7O3VCO3VCO3VCOzs7Ozt1Qjt1Qjt1Qjt1Qjs2Qjs2Qjs7STs7O0k7Ozs7Ozs2Qjs2Qjs7Ozs7O3VCO3VCO3VCOzt1Qjt1Qjt1Qjt1Qjs7STs7NkI7NkI7dUI7O0k7OztJOzs2Qjs2Qjt1Qjs7STs7NkI7O3VCOzs7Ozs7O1E7OzRCOzRCOzs7Ozt1Qjs7NkI7NkI7O0k7Ozt1Qjt1Qjt1Qjt1Qjs7STs7dUI7dUI7dUI7dUI7NkI7dUI7dUI7O0k7OzZCOztJOzs2Qjs2Qjs7Ozs7OztzQjs7c0I7c0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0ksNEMsZTs7SztZO0s7Ozs7STs7Ozs7O0ssVTtNO007O29CO007TTs7Ozs7RztHOzJCLGdCOztJOztPOztPLE87O08sTzs7TyxPO2UsTzs7OztJOzs7UTs7UTs7UTs7UTtnQjs7STtHOztJOzs7Ozs7Ozs7Ozt5Qzs7Ozs7OztHO0csSSxjOztJO0k7O0k7O0k7RztvQixZO21CLFk7dUIsWTs0QixtQjs4QixtQztnQywwQzs7STtHO3dCLGM7Rzs7STs7YztJO29CLHVCO0ksTztHO0csSSxnQjs7STtJOztLLG1COztLO0k7d0Isc0I7O0k7RztzQixZO3FCLFk7dUIsWTs7STtHOzBCLFc7OztJLE87Ozs7OztHO0k7Ozs7c0IsTyw0Qjt5QixPLHVDO3NCLE8sNEI7O0k7SztNLFE7OztNLE07TSxNO0s7Ozs7MkI7OztHOztJO2dDO0ksVTtJLE87Rzs7Z0MsTyxzQjtJLE87Rzs7O0ssZTtLO0s7STtJO0k7STtJO0c7Rzs7OEIsTyxtQixTOztJOztHO0c7STs7O1E7USxPO087STs0QiwwQjs4QixtQjs7O0s7SyxPO0k7STtJLE87Rzs7O0k7OztlOztJLE87Ozs7WTs7STtLO1M7Ozs7STthOztLLE87O1ksTzs7SSxPOzs7STs7OztJOzs7O0k7Ozs7O3lCLHFCLE8saUI7SyxPOzs7ZTs7Z0IsTTtnQixNO2UsTzs7Ozs7OztjO0k7STtHO0c7K0Isb0I7a0MseUI7RztnQyxxQjttQywwQjt3QixTOztJO0k7Z0IsTzs7OztLLE87OztJO0c7eUIsUztrQyxxQzsyQixpQzsyQixpQzs0QixpQzs0QixpQzs2QixpQzs7STtJLHFDOzs7NkIsMEI7Ozt5QixPLHdDOzs7STtJLHFDOzs7Ozs7O2MsTzthOzs7Z0Msa0M7b0Msc0M7dUIsc0I7dUIsc0I7d0Isc0I7d0Isc0I7eUIsc0I7O0s7SztNO0k7O0s7SztNO0k7STs7Ozs7Ozs7OztHOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFOzs7Ozs7Ozs7Ozs7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QUdBQztJQUNBQztJQUdBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQztJQUNBQzs7O09BaElBakc7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FFQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FFQUM7T0FJQUM7T0FFQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FFQUM7T0FHQUM7T0FHQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FJQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FHQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7T0FDQUM7Ozs7RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Rzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SSxPO0c7O0k7O0c7OEIsTyx1Qzs7SSxPOztHO0csVzs4QixPLG1DOztJLFc7SSxPLCtCO0c7eUIsdUIsVyxTOztJLEksSTs7SyxXO0sscUI7SztrQjs7O0c7O0ksSSxJOztLLEksTyx1QixPO0sscUI7SztrQjs7O0c7O0k7OztNLFc7Z0I7TyxNOzttQixjOzs7Ozs7NEI7OztHOztJOztLLFE7Ozs7O1EsZTtPOzs7OztLOzs7O0c7O0k7STs7TyxPO08sYztNOztJO0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0QixzQjs4QixpQzs7STtJOzs4QixpQixrQjs7O1E7OzRCLE87O1E7OztRLE87O1Esc0M7USxTOzs7O1E7Ozs7UTs7O2dCOzs7Rzs7STtJOzs7Ozs7Ozs7Ozs0Qjs7O1EsTzs7NEI7OztROzs7USxrQixPOztROztRLHNDO1E7Ozs7Ozs7Ozs7OztHO3lCOztJO0k7Ozs7OztTLG1DO1M7O1MsbUM7Uzs7UyxrQixPOztTOzs7O0c7NkI7O0k7Ozs7Ozs7OztLOztNO0ssTzs7SSxNO0c7RyxJLEk7O0ksVTtJLHFCO0k7Ozs7RztJLGtCOzs7O0k7SyxXO0s7SztLO0s7Szs7SztNOzs7USxZO1E7Ozs7Ozs7SyxJO0s7OztJOztLO0s7SztJOztLO0s7SztJOztLLEksVSx3Qzs7Ozs7aUI7O007O0k7O0sscUI7O2lCOztLO0k7O0s7OztTOztTO2lCOzs7OztROzBDOzs7USxrQixRO3dCOztTO1UsUTtVO1U7VTtVOzs7Ozs7OztrQzs7OzswQiwyQjtRLFU7USwrQjs7UTs7O1M7UztROzJDOzs7UTt1Qjs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7Ozs7Ozs7aUIsdUI7aUI7aUI7Ozs7Ozs7OztTOzs7OztRLGtDO1E7USxJLDZCO1E7O1E7UTs7UTs7UztTO3VCO1E7dUI7UTs7UTs7UTs7UztTO1E7eUI7UTt5QjtROztROztRLG9CO1E7O1E7OztRO1E7UTt1Qjs7OztRO3VCOzs7STs7SyxrQjtLO0s7STtJO0k7SSxJLG1CO0ksRzs7O0ssUTtLLGlCLE8sd0I7aUM7O0ksSSxlLG9DOztLO0s7STtJOzs7OztJO1k7Ozs7OztHOztJLFE7STs7b0I7OztzQjs7Ozs7RztHOztJLG9DOztLLEk7SztNOzs7Z0I7b0I7TztROzs7UTs7Ozs7TTs7STs7SyxJLFU7Szs7O08sa0M7UTtTLE07Ozs7O08sVTs7Ozs7Ozs7O2E7OztjLHVCO2U7Z0I7Ozs7OztjO2U7Ozs7Ozs7Ozs7OzthOzs7OztjLFU7Ozs7Ozs7O2dCOzs7Ozs7OztpQjtpQjtrQjs7O2lCOzs7MkI7OEI7Ozs7MkI7Ozs7ZSxNOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7UTs7UyxlOzs7VSxJLG1COzs7VSxJLG1COztVLEksbUI7Ozs7Ozs7O1M7OztROzs7Ozs7TTtNLGU7O0k7O0ssSTtLO3FCO2dCLHdDLHFCO00sUztNOzs7Z0I7bUI7TyxTOzs7O1MsTztTOzs7OztPLEk7OztNO00sSTs7STtJLEk7OztjO0c7c0IsNEI7Z0MsNEI7O0k7O0ssTTtLO0s7Szs7OztNLEksSSx1Qjs7Ozs7O1M7Ozs7OztRO1E7Ozs7Tzs7O007Ozs7O0ksTztHOzZCLDBCO3VDLDBCO0c7O0ksVTs7O0c7O0ksVTs7O0c7O0ksVTs7NkIsTTtJO0c7O0ksVTs7NkIsTTtJO0c7O0k7O0s7SyxlLE07Szs7SSxPO0c7O0k7O0s7TTtNO0ssZSxNO0s7O0ksTztHOztJOztLO007TTtNO0ssYSxNO0ssTzs7SSxPO0c7bUMsMEI7NkIsb0I7Z0MsNkI7O0ksTztHOztJO0s7TTs7Z0I7TTtNLE07Szs7OzsyQjs7O0c7O0ksSSwyQzs7OzJCOzs7Rzs7STtJOztROzs7TTs7Tzs7UTtRLFk7O1E7Ozs7WTs7Ozs7Ozs7O0ssVTtLLE87O0c7O0k7aUM7Rzs7STtpQztHOztJO2dCOzs7Ozs7OztHOztJO0s7Ozs7STs7Ozs7O007O087O1E7UTtROztXOzs7Ozs7Ozs7SyxPOztHOzhCLG9DOztJLEcsZ0M7O0k7Ozs7OztNOztPOztRO1E7UTs7Vzs7Ozs7Ozs7O0ssTzs7Rzs7STtHOztJO0k7Ozs7OztNOztPLG9COztRO1M7UztTOzs7O2lCOzs7Ozs7O087UTtRO1E7Ozs7Ozs7O0ssTzs7RzttQyx5Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0U7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0c7Ozs7O0c7Ozs7Ozs7SXVCeERBMDRDO0lB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QUFBLGtCQUFBQTtJQUEwQjs7S0FFWDtLQUNBO0tBQ0E7S0FDVDtJQUFRO0lBSlo7S0FBQSxNQUFBO0tBQUE7SUFERjtJQUFBO0dBT007Z0JBRUZBO0lBQUE7SUFBQSxPQUFBLGtDQUFBQSxpQkFBQUE7R0FBd0I7R0FBSTtJQUFBLE1BQUEscUNBMUJoQ0Y7SUEwQmdDO0dBQTVCO0dBQUE7Ozs7RTs7Ozs7Ozs7Ozs7OztHOzs7Ozs7OztHQ2pCQTtHQUFBOzs7RSIsInNvdXJjZXNDb250ZW50IjpbIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ludDY0X29mZnNldFxudmFyIGNhbWxfaW50NjRfb2Zmc2V0ID0gTWF0aC5wb3coMiwgLTI0KTtcblxuLy9Qcm92aWRlczogTWxJbnQ2NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZmZzZXQsIGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIE1sSW50NjQgKGxvLG1pLGhpKSB7XG4gIHRoaXMubG8gPSBsbyAmIDB4ZmZmZmZmO1xuICB0aGlzLm1pID0gbWkgJiAweGZmZmZmZjtcbiAgdGhpcy5oaSA9IGhpICYgMHhmZmZmO1xufVxuTWxJbnQ2NC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9qXCJcbk1sSW50NjQucHJvdG90eXBlLmNvcHkgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBuZXcgTWxJbnQ2NCh0aGlzLmxvLHRoaXMubWksdGhpcy5oaSk7XG59XG5cbk1sSW50NjQucHJvdG90eXBlLnVjb21wYXJlID0gZnVuY3Rpb24gKHgpIHtcbiAgaWYgKHRoaXMuaGkgPiB4LmhpKSByZXR1cm4gMTtcbiAgaWYgKHRoaXMuaGkgPCB4LmhpKSByZXR1cm4gLTE7XG4gIGlmICh0aGlzLm1pID4geC5taSkgcmV0dXJuIDE7XG4gIGlmICh0aGlzLm1pIDwgeC5taSkgcmV0dXJuIC0xO1xuICBpZiAodGhpcy5sbyA+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/IHRoaXMuYy5zbGljZSgpIDogdGhpcy5jO1xuICByZXR1cm4gbmV3IE1sQnl0ZXModGhpcy50LGNvbnRlbnQsdGhpcy5sKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9zdHJfcmVwZWF0LCBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMgKHMpIHtcbiAgLyogQXNzdW1lcyBub3QgQllURVMgKi9cbiAgaWYgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8pXG4gICAgcy5jICs9IGNhbWxfc3RyX3JlcGVhdChzLmwgLSBzLmMubGVuZ3RoLCAnXFwwJylcbiAgZWxzZVxuICAgIHMuYyA9IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyAocy5jLCAwLCBzLmMubGVuZ3RoKTtcbiAgcy50ID0gMDsgLypCWVRFUyB8IFVOS09XTiovXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuZnVuY3Rpb24gY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5IChzKSB7XG4gIC8qIEFzc3VtZXMgbm90IEFSUkFZICovXG4gIHZhciBhID0gbmV3IFVpbnQ4QXJyYXkocy5sKTtcbiAgdmFyIGIgPSBzLmMsIGwgPSBiLmxlbmd0aCwgaSA9IDA7XG4gIGZvciAoOyBpIDwgbDsgaSsrKSBhW2ldID0gYi5jaGFyQ29kZUF0KGkpO1xuICBmb3IgKGwgPSBzLmw7IGkgPCBsOyBpKyspIGFbaV0gPSAwO1xuICBzLmMgPSBhO1xuICBzLnQgPSA0OyAvKiBBUlJBWSAqL1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMgKHMpIHtcbiAgaWYgKHMudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkocyk7XG4gIHJldHVybiBzLmM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX3N0cmluZ191bnNhZmVfZ2V0XG5mdW5jdGlvbiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyAocykge1xuICB2YXIgbCA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIGEgPSBuZXcgVWludDhBcnJheShsKTtcbiAgdmFyIGkgPSAwO1xuICBmb3IgKDsgaSA8IGw7IGkrKykgYVtpXSA9IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY3JlYXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2NyZWF0ZV9zdHJpbmcobGVuKSB7XG4gIGlmKGxlbiA8IDApIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0cmluZy5jcmVhdGVcIik7XG4gIHJldHVybiBuZXcgTWxCeXRlcyhsZW4/Mjo5LFwiXCIsbGVuKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jcmVhdGVfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9jcmVhdGVfc3RyaW5nKGxlbikge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJTdHJpbmcuY3JlYXRlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9ieXRlcyBjb25zdFxuLy9SZXF1aXJlczogTWxCeXRlcyxjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfY3JlYXRlX2J5dGVzKGxlbikge1xuICBpZiAobGVuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQnl0ZXMuY3JlYXRlXCIpO1xuICByZXR1cm4gbmV3IE1sQnl0ZXMobGVuPzI6OSxcIlwiLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2FycmF5IChhKSB7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhhLDAsYS5sZW5ndGgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19vZl9hcnJheSAoYSkge1xuICBpZighIChhIGluc3RhbmNlb2YgVWludDhBcnJheSkpIHtcbiAgICBhID0gbmV3IFVpbnQ4QXJyYXkoYSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEJ5dGVzKDQsYSxhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfY29tcGFyZSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2J5dGVzX2NvbXBhcmUoczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPy0xOihzMS5jID4gczIuYyk/MTowO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9ieXRlc19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgKHMxLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMxKTtcbiAgKHMyLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMyKTtcbiAgcmV0dXJuIChzMS5jID09IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX25vdGVxdWFsKHMxLCBzMikgeyByZXR1cm4gMS1jYW1sX3N0cmluZ19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbm90ZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19lcXVhbFxuZnVuY3Rpb24gY2FtbF9ieXRlc19ub3RlcXVhbChzMSwgczIpIHsgcmV0dXJuIDEtY2FtbF9ieXRlc19lcXVhbChzMSwgczIpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYnl0ZXNfbGVzc2VxdWFsIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc2VxdWFsKHMxLCBzMikge1xuICAoczEudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczEpO1xuICAoczIudCAmIDYpICYmIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMoczIpO1xuICByZXR1cm4gKHMxLmMgPD0gczIuYyk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsIHMyKSB7XG4gIChzMS50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMSk7XG4gIChzMi50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzMik7XG4gIHJldHVybiAoczEuYyA8IHMyLmMpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZ3JlYXRlcmVxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJlcXVhbChzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX2xlc3NlcXVhbChzMixzMSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX2dyZWF0ZXJlcXVhbFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzZXF1YWxcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfZ3JlYXRlcmVxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczIsczEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfbGVzc3RoYW5cbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2dyZWF0ZXJ0aGFuKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19ncmVhdGVydGhhblxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19sZXNzdGhhblxuZnVuY3Rpb24gY2FtbF9ieXRlc19ncmVhdGVydGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczIsIHMxKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9maWxsX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3N0cl9yZXBlYXQsIGNhbWxfY29udmVydF9ieXRlc190b19hcnJheVxuLy9BbGlhczogY2FtbF9maWxsX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9maWxsX2J5dGVzKHMsIGksIGwsIGMpIHtcbiAgaWYgKGwgPiAwKSB7XG4gICAgaWYgKGkgPT0gMCAmJiAobCA+PSBzLmwgfHwgKHMudCA9PSAyIC8qIFBBUlRJQUwgKi8gJiYgbCA+PSBzLmMubGVuZ3RoKSkpIHtcbiAgICAgIGlmIChjID09IDApIHtcbiAgICAgICAgcy5jID0gXCJcIjtcbiAgICAgICAgcy50ID0gMjsgLyogUEFSVElBTCAqL1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcy5jID0gY2FtbF9zdHJfcmVwZWF0IChsLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGMpKTtcbiAgICAgICAgcy50ID0gKGwgPT0gcy5sKT8wIC8qIEJZVEVTIHwgVU5LT1dOICovIDoyOyAvKiBQQVJUSUFMICovXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChzLnQgIT0gNCAvKiBBUlJBWSAqLykgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5KHMpO1xuICAgICAgZm9yIChsICs9IGk7IGkgPCBsOyBpKyspIHMuY1tpXSA9IGM7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcywgY2FtbF9jb252ZXJ0X2J5dGVzX3RvX2FycmF5XG5mdW5jdGlvbiBjYW1sX2JsaXRfYnl0ZXMoczEsIGkxLCBzMiwgaTIsIGxlbikge1xuICBpZiAobGVuID09IDApIHJldHVybiAwO1xuICBpZiAoKGkyID09IDApICYmXG4gICAgICAobGVuID49IHMyLmwgfHwgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGxlbiA+PSBzMi5jLmxlbmd0aCkpKSB7XG4gICAgczIuYyA9IChzMS50ID09IDQgLyogQVJSQVkgKi8pP1xuICAgICAgY2FtbF9zdWJhcnJheV90b19qc2J5dGVzKHMxLmMsIGkxLCBsZW4pOlxuICAgICAgKGkxID09IDAgJiYgczEuYy5sZW5ndGggPT0gbGVuKT9zMS5jOnMxLmMuc3Vic3RyKGkxLCBsZW4pO1xuICAgIHMyLnQgPSAoczIuYy5sZW5ndGggPT0gczIubCk/MCAvKiBCWVRFUyB8IFVOS09XTiAqLyA6MjsgLyogUEFSVElBTCAqL1xuICB9IGVsc2UgaWYgKHMyLnQgPT0gMiAvKiBQQVJUSUFMICovICYmIGkyID09IHMyLmMubGVuZ3RoKSB7XG4gICAgczIuYyArPSAoczEudCA9PSA0IC8qIEFSUkFZICovKT9cbiAgICAgIGNhbWxfc3ViYXJyYXlfdG9fanNieXRlcyhzMS5jLCBpMSwgbGVuKTpcbiAgICAgIChpMSA9PSAwICYmIHMxLmMubGVuZ3RoID09IGxlbik/czEuYzpzMS5jLnN1YnN0cihpMSwgbGVuKTtcbiAgICBzMi50ID0gKHMyLmMubGVuZ3RoID09IHMyLmwpPzAgLyogQllURVMgfCBVTktPV04gKi8gOjI7IC8qIFBBUlRJQUwgKi9cbiAgfSBlbHNlIHtcbiAgICBpZiAoczIudCAhPSA0IC8qIEFSUkFZICovKSBjYW1sX2NvbnZlcnRfYnl0ZXNfdG9fYXJyYXkoczIpO1xuICAgIHZhciBjMSA9IHMxLmMsIGMyID0gczIuYztcbiAgICBpZiAoczEudCA9PSA0IC8qIEFSUkFZICovKSB7XG4gICAgICBpZiAoaTIgPD0gaTEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkgYzIgW2kyICsgaV0gPSBjMSBbaTEgKyBpXTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGwgPSBNYXRoLm1pbiAobGVuLCBjMS5sZW5ndGggLSBpMSk7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGw7IGkrKykgYzIgW2kyICsgaV0gPSBjMS5jaGFyQ29kZUF0KGkxICsgaSk7XG4gICAgICBmb3IgKDsgaSA8IGxlbjsgaSsrKSBjMiBbaTIgKyBpXSA9IDA7XG4gICAgfVxuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JsaXRfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2JsaXRfc3RyaW5nKGEsYixjLGQsZSkge1xuICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcoYSksYixjLGQsZSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2xlbmd0aChzKSB7IHJldHVybiBzLmwgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0IGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgKHMsIGkpIHtcbiAgcmV0dXJuIHMuY2hhckNvZGVBdChpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfdW5zYWZlX3NldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ191bnNhZmVfc2V0IChzLCBpLCBjKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3N0cmluZ191bnNhZmVfc2V0XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGggY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIHMubGVuZ3RoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmUgY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIChzMSA8IHMyKT8tMTooczEgPiBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19lcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19lcXVhbChzMSwgczIpIHtcbiAgaWYoczEgPT09IHMyKSByZXR1cm4gMTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3NlcXVhbCBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzZXF1YWwoczEsIHMyKSB7XG4gIHJldHVybiAoczEgPD0gczIpPzE6MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc3RoYW4gY29uc3Rcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc3RoYW4oczEsIHMyKSB7XG4gIHJldHVybiAoczEgPCBzMik/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7XG4gIChzLnQgJiA2KSAmJiBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzKHMpO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhzLmMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcyBjb25zdFxuLy9JZjoganMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHgpIHsgcmV0dXJuIHggfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nIGNvbnN0XG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcoeCkgeyByZXR1cm4geCB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0ZjE2X29mX3V0Zjhcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykge1xuICBpZihqc29vX2lzX2FzY2lpKHMpKVxuICAgIHJldHVybiBzO1xuICByZXR1cm4gY2FtbF91dGYxNl9vZl91dGY4KHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nIGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpLCBjYW1sX3V0Zjhfb2ZfdXRmMTYsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vSWY6IGpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgaWYgKGpzb29faXNfYXNjaWkocykpXG4gICAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocylcbiAgZWxzZSByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX3V0Zjhfb2ZfdXRmMTYocykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXMgY29uc3Rcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2ZfanNieXRlcyhzKSB7IHJldHVybiBuZXcgTWxCeXRlcygwLHMscy5sZW5ndGgpOyB9XG5cblxuLy8gVGhlIHNlY3Rpb24gYmVsb3cgc2hvdWxkIGJlIHVzZWQgd2hlbiB1c2UtanMtc3RyaW5nPWZhbHNlXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX2dldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX2dldCAocywgaSkge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfZ2V0KHMsaSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX3Vuc2FmZV9zZXRcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfdW5zYWZlX3NldFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfdW5zYWZlX3NldCAocywgaSwgYykge1xuICByZXR1cm4gY2FtbF9ieXRlc191bnNhZmVfc2V0KHMsaSxjKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpIHtcbiAgcmV0dXJuIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2NvbXBhcmVcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfY29tcGFyZShzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfY29tcGFyZShzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfZXF1YWxcbi8vUmVxdWlyZXM6IGNhbWxfYnl0ZXNfZXF1YWxcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19lcXVhbChzMSxzMilcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zdHJpbmdfbGVzc2VxdWFsXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3NlcXVhbFxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfbGVzc2VxdWFsKHMxLCBzMikge1xuICByZXR1cm4gY2FtbF9ieXRlc19sZXNzZXF1YWwoczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX2xlc3N0aGFuXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX2xlc3N0aGFuXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19sZXNzdGhhbihzMSwgczIpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfbGVzc3RoYW4oczEsczIpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3RyaW5nX29mX2J5dGVzXG4vL0lmOiAhanMtc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSB7IHJldHVybiBzIH1cblxuLy9Qcm92aWRlczogY2FtbF9ieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHMpIHsgcmV0dXJuIHMgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2pzYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgeyByZXR1cm4gY2FtbF9ieXRlc19vZl9qc2J5dGVzKHMpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNieXRlc19vZl9zdHJpbmcocykge1xuICAocy50ICYgNikgJiYgY2FtbF9jb252ZXJ0X3N0cmluZ190b19ieXRlcyhzKTtcbiAgcmV0dXJuIHMuYyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocyl7XG4gIHJldHVybiBzLnRvVXRmMTYoKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9ieXRlc19vZl91dGYxNl9qc3N0cmluZ1xuLy9JZjogIWpzLXN0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHMpIHtcbiAgcmV0dXJuIGNhbWxfYnl0ZXNfb2ZfdXRmMTZfanNzdHJpbmcocyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vUmVxdWlyZXM6IE1sQnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfYnl0ZXMocykge1xuICByZXR1cm4gKHMgaW5zdGFuY2VvZiBNbEJ5dGVzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ieXRlc19jb250ZW50XG4vL1JlcXVpcmVzOiBNbEJ5dGVzLCBjYW1sX2NvbnZlcnRfc3RyaW5nX3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX2J5dGVzX2NvbnRlbnQocykge1xuICBzd2l0Y2ggKHMudCAmIDYpIHtcbiAgZGVmYXVsdDogLyogUEFSVElBTCAqL1xuICAgIGNhbWxfY29udmVydF9zdHJpbmdfdG9fYnl0ZXMocyk7XG4gIGNhc2UgMDogLyogQllURVMgKi9cbiAgICByZXR1cm4gcy5jO1xuICBjYXNlIDQ6XG4gICAgcmV0dXJuIHMuY1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfbWxfc3RyaW5nXG4vL1JlcXVpcmVzOiBqc29vX2lzX2FzY2lpXG4vL0lmOiBqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuICh0eXBlb2YgcyA9PT0gXCJzdHJpbmdcIiAmJiAhL1teXFx4MDAtXFx4ZmZdLy50ZXN0KHMpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19tbF9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXNcbi8vSWY6ICFqcy1zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfaXNfbWxfc3RyaW5nKHMpIHtcbiAgcmV0dXJuIGNhbWxfaXNfbWxfYnl0ZXMocyk7XG59XG5cbi8vIFRoZSBmdW5jdGlvbnMgYmVsb3cgYXJlIGRlcHJlY2F0ZWRcblxuLy9Qcm92aWRlczogY2FtbF9qc190b19ieXRlX3N0cmluZyBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9qc190b19ieXRlX3N0cmluZyhzKSB7IHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHMpIH1cblxuLy9Qcm92aWRlczogY2FtbF9uZXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX25ld19zdHJpbmcgKHMpIHsgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMocykgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fc3RyaW5nIG11dGFibGUgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF90b19qc19zdHJpbmcgbXV0YWJsZSAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF90b19qc19zdHJpbmcocykge1xuICByZXR1cm4gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocylcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc190b19zdHJpbmcgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3RvX3N0cmluZyAocykge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcocyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2FycmF5X29mX3N0cmluZyh4KSB7IHJldHVybiBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyh4KSB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfb2ZfYnl0ZXMoeCkgeyByZXR1cm4gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyh4KSB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1JhaXNlIGV4Y2VwdGlvblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2NvbnN0YW50IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmFpc2VfY29uc3RhbnQgKHRhZykgeyB0aHJvdyB0YWc7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX2FyZyAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmcgKHRhZywgYXJnKSB7IHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCwgdGFnLCBhcmddKTsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX3dpdGhfYXJncyAoY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX21heWJlX2F0dGFjaF9iYWNrdHJhY2VcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfd2l0aF9hcmdzICh0YWcsIGFyZ3MpIHsgdGhyb3cgY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlKFswLCB0YWddLmNvbmNhdChhcmdzKSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV93aXRoX3N0cmluZyAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV93aXRoX2FyZywgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9yYWlzZV93aXRoX3N0cmluZyAodGFnLCBtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX2FyZyAodGFnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG1zZykpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZhaWx3aXRoIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGEsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmFpbHdpdGggKG1zZykge1xuICBpZighY2FtbF9nbG9iYWxfZGF0YS5GYWlsdXJlKVxuICAgIGNhbWxfZ2xvYmFsX2RhdGEuRmFpbHVyZT1bMjQ4LGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJGYWlsdXJlXCIpLC0zXTtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsIG1zZyk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfaW52YWxpZF9hcmd1bWVudCAobXNnKSB7XG4gIGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcoY2FtbF9nbG9iYWxfZGF0YS5JbnZhbGlkX2FyZ3VtZW50LCBtc2cpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2dsb2JhbF9kYXRhXG5mdW5jdGlvbiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLkVuZF9vZl9maWxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV96ZXJvX2RpdmlkZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9jb25zdGFudCwgY2FtbF9nbG9iYWxfZGF0YVxuZnVuY3Rpb24gY2FtbF9yYWlzZV96ZXJvX2RpdmlkZSAoKSB7XG4gIGNhbWxfcmFpc2VfY29uc3RhbnQoY2FtbF9nbG9iYWxfZGF0YS5EaXZpc2lvbl9ieV96ZXJvKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfY29uc3RhbnQsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfbm90X2ZvdW5kICgpIHtcbiAgY2FtbF9yYWlzZV9jb25zdGFudChjYW1sX2dsb2JhbF9kYXRhLk5vdF9mb3VuZCk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IgKCkge1xuICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbF9nZW4gKGNvbnN0LCBzaGFsbG93KVxuLy9JZjogIWVmZmVjdHNcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIHZhciBuID0gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbjtcbiAgaWYgKGQgPT0gMClcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgZWxzZSBpZiAoZCA8IDApIHtcbiAgICB2YXIgZyA9IGYuYXBwbHkobnVsbCxhcmdzLnNsaWNlKDAsbikpO1xuICAgIGlmKHR5cGVvZiBnICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBnO1xuICAgIHJldHVybiBjYW1sX2NhbGxfZ2VuKGcsYXJncy5zbGljZShuKSk7XG4gIH1cbiAgZWxzZSB7XG4gICAgc3dpdGNoIChkKSB7XG4gICAgY2FzZSAxOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAxKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICh4LCB5KXtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyAyKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgbmFyZ3NbYXJnc0xlbl0gPSB4O1xuICAgICAgICBuYXJnc1thcmdzTGVuICsgMV0gPSB5O1xuICAgICAgICByZXR1cm4gZi5hcHBseShudWxsLCBuYXJncylcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgdmFyIGcgPSBmdW5jdGlvbiAoKXtcbiAgICAgICAgdmFyIGV4dHJhX2FyZ3MgPSAoYXJndW1lbnRzLmxlbmd0aCA9PSAwKT8xOmFyZ3VtZW50cy5sZW5ndGg7XG4gICAgICAgIHZhciBuYXJncyA9IG5ldyBBcnJheShhcmdzLmxlbmd0aCtleHRyYV9hcmdzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3MubGVuZ3RoOyBpKysgKSBuYXJnc1tpXSA9IGFyZ3NbaV07XG4gICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysgKSBuYXJnc1thcmdzLmxlbmd0aCtpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgcmV0dXJuIGNhbWxfY2FsbF9nZW4oZiwgbmFyZ3MpXG4gICAgICB9O1xuICAgIH19XG4gICAgZy5sID0gZDtcbiAgICByZXR1cm4gZztcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxfZ2VuIChjb25zdCwgc2hhbGxvdylcbi8vSWY6IGVmZmVjdHNcbi8vV2Vha2RlZlxuZnVuY3Rpb24gY2FtbF9jYWxsX2dlbihmLCBhcmdzKSB7XG4gIHZhciBuID0gKGYubCA+PSAwKT9mLmw6KGYubCA9IGYubGVuZ3RoKTtcbiAgdmFyIGFyZ3NMZW4gPSBhcmdzLmxlbmd0aDtcbiAgdmFyIGQgPSBuIC0gYXJnc0xlbjtcbiAgaWYgKGQgPT0gMCkge1xuICAgIHJldHVybiBmLmFwcGx5KG51bGwsIGFyZ3MpO1xuICB9IGVsc2UgaWYgKGQgPCAwKSB7XG4gICAgdmFyIHJlc3QgPSBhcmdzLnNsaWNlKG4gLSAxKTtcbiAgICB2YXIgayA9IGFyZ3MgW2FyZ3NMZW4gLSAxXTtcbiAgICBhcmdzID0gYXJncy5zbGljZSgwLCBuKTtcbiAgICBhcmdzW24gLSAxXSA9IGZ1bmN0aW9uIChnKSB7XG4gICAgICBpZiAodHlwZW9mIGcgIT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGsoZyk7XG4gICAgICB2YXIgYXJncyA9IHJlc3Quc2xpY2UoKTtcbiAgICAgIGFyZ3NbYXJncy5sZW5ndGggLSAxXSA9IGs7XG4gICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihnLCBhcmdzKTsgfTtcbiAgICByZXR1cm4gZi5hcHBseShudWxsLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBhcmdzTGVuLS07XG4gICAgdmFyIGsgPSBhcmdzIFthcmdzTGVuXTtcbiAgICBzd2l0Y2ggKGQpIHtcbiAgICBjYXNlIDE6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHkpe1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDIpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIHZhciBnID0gZnVuY3Rpb24gKHgsIHksIHope1xuICAgICAgICB2YXIgbmFyZ3MgPSBuZXcgQXJyYXkoYXJnc0xlbiArIDMpO1xuICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJnc0xlbjsgaSsrICkgbmFyZ3NbaV0gPSBhcmdzW2ldO1xuICAgICAgICBuYXJnc1thcmdzTGVuXSA9IHg7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAxXSA9IHk7XG4gICAgICAgIG5hcmdzW2FyZ3NMZW4gKyAyXSA9IHo7XG4gICAgICAgIHJldHVybiBmLmFwcGx5KG51bGwsIG5hcmdzKVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICB2YXIgZyA9IGZ1bmN0aW9uICgpe1xuICAgICAgICB2YXIgZXh0cmFfYXJncyA9IChhcmd1bWVudHMubGVuZ3RoID09IDApPzE6YXJndW1lbnRzLmxlbmd0aDtcbiAgICAgICAgdmFyIG5hcmdzID0gbmV3IEFycmF5KGFyZ3NMZW4gKyBleHRyYV9hcmdzKTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3NMZW47IGkrKyApIG5hcmdzW2ldID0gYXJnc1tpXTtcbiAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKyApXG4gICAgICAgICAgbmFyZ3NbYXJnc0xlbiArIGldID0gYXJndW1lbnRzW2ldO1xuICAgICAgICByZXR1cm4gY2FtbF9jYWxsX2dlbihmLCBuYXJncylcbiAgICAgIH07XG4gICAgfX1cbiAgICBnLmwgPSBkICsgMTtcbiAgICByZXR1cm4gayhnKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlc1xudmFyIGNhbWxfbmFtZWRfdmFsdWVzID0ge307XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWUgKGNvbnN0LG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZShubSx2KSB7XG4gIGNhbWxfbmFtZWRfdmFsdWVzW2NhbWxfanNieXRlc19vZl9zdHJpbmcobm0pXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hbWVkX3ZhbHVlXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlc1xuZnVuY3Rpb24gY2FtbF9uYW1lZF92YWx1ZShubSkge1xuICByZXR1cm4gY2FtbF9uYW1lZF92YWx1ZXNbbm1dXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbnZhciBjYW1sX2dsb2JhbF9kYXRhID0gWzBdO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2J1aWxkX3N5bWJvbHNcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2J1aWxkX3N5bWJvbHMoc3ltYikge1xuICB2YXIgciA9IHt9O1xuICBpZihzeW1iKSB7XG4gICAgZm9yKHZhciBpID0gMTsgaSA8IHN5bWIubGVuZ3RoOyBpKyspe1xuICAgICAgcltjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzeW1iW2ldWzFdKV0gPSBzeW1iW2ldWzJdXG4gICAgfVxuICB9XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAoY29uc3QsIHNoYWxsb3csIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSwgY2FtbF9jYWxsYmFjaywgY2FtbF9idWlsZF9zeW1ib2xzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX3JlZ2lzdGVyX2dsb2JhbCAobiwgdiwgbmFtZV9vcHQpIHtcbiAgaWYgKG5hbWVfb3B0KSB7XG4gICAgdmFyIG5hbWUgPSBuYW1lX29wdDtcbiAgICBpZihnbG9iYWxUaGlzLnRvcGxldmVsUmVsb2MpIHtcbiAgICAgIG4gPSBjYW1sX2NhbGxiYWNrKGdsb2JhbFRoaXMudG9wbGV2ZWxSZWxvYywgW25hbWVdKTtcbiAgICB9XG4gICAgZWxzZSBpZiAoY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzKSB7XG4gICAgICBpZighY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHgpIHtcbiAgICAgICAgY2FtbF9nbG9iYWxfZGF0YS5zeW1pZHggPSBjYW1sX2J1aWxkX3N5bWJvbHMoY2FtbF9nbG9iYWxfZGF0YS5zeW1ib2xzKVxuICAgICAgfVxuICAgICAgdmFyIG5pZCA9IGNhbWxfZ2xvYmFsX2RhdGEuc3ltaWR4W25hbWVdXG4gICAgICBpZihuaWQgPj0gMClcbiAgICAgICAgbiA9IG5pZFxuICAgICAgZWxzZSB7XG4gICAgICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3JlZ2lzdGVyX2dsb2JhbDogY2Fubm90IGxvY2F0ZSBcIiArIG5hbWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBjYW1sX2dsb2JhbF9kYXRhW24gKyAxXSA9IHY7XG4gIGlmKG5hbWVfb3B0KSBjYW1sX2dsb2JhbF9kYXRhW25hbWVfb3B0XSA9IHY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2dsb2JhbF9kYXRhIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZ2V0X2dsb2JhbF9kYXRhICgpIHsgcmV0dXJuIGNhbWxfZ2xvYmFsX2RhdGE7IH1cblxuLy9Qcm92aWRlczogY2FtbF9pc19wcmludGFibGUgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pc19wcmludGFibGUoYykgeyByZXR1cm4gKyhjID4gMzEgJiYgYyA8IDEyNyk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9wcmludF9zdGF0c1xuZnVuY3Rpb24gY2FtbF9tYXliZV9wcmludF9zdGF0cyh1bml0KSB7IHJldHVybiAwIH1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gU3lzXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfd2l0aF9zdHJpbmcsIGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfcmFpc2Vfc3lzX2Vycm9yIChtc2cpIHtcbiAgY2FtbF9yYWlzZV93aXRoX3N0cmluZyhjYW1sX2dsb2JhbF9kYXRhLlN5c19lcnJvciwgbXNnKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhpdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3N5c19leGl0IChjb2RlKSB7XG4gIGlmKGdsb2JhbFRoaXMucXVpdCkgZ2xvYmFsVGhpcy5xdWl0KGNvZGUpO1xuICAvL25vZGVqc1xuICBpZihnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQpXG4gICAgZ2xvYmFsVGhpcy5wcm9jZXNzLmV4aXQoY29kZSk7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkZ1bmN0aW9uICdleGl0JyBub3QgaW1wbGVtZW50ZWRcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuKXtcbiAgc3dpdGNoKGV4blsyXSkge1xuICBjYXNlIC04OiAvLyBNYXRjaF9mYWlsdXJlXG4gIGNhc2UgLTExOiAvLyBBc3NlcnRfZmFpbHVyZVxuICBjYXNlIC0xMjogLy8gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGVcbiAgICByZXR1cm4gMTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Zvcm1hdF9leGNlcHRpb25cbi8vUmVxdWlyZXM6IE1sQnl0ZXMsIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfZm9ybWF0X2V4Y2VwdGlvbihleG4pe1xuICB2YXIgciA9IFwiXCI7XG4gIGlmKGV4blswXSA9PSAwKSB7XG4gICAgciArPSBleG5bMV1bMV07XG4gICAgaWYoZXhuLmxlbmd0aCA9PSAzICYmIGV4blsyXVswXSA9PSAwICYmIGNhbWxfaXNfc3BlY2lhbF9leGNlcHRpb24oZXhuWzFdKSkge1xuXG4gICAgICB2YXIgYnVja2V0ID0gZXhuWzJdO1xuICAgICAgdmFyIHN0YXJ0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHN0YXJ0ID0gMlxuICAgICAgdmFyIGJ1Y2tldCA9IGV4bjtcbiAgICB9XG4gICAgciArPSBcIihcIjtcbiAgICBmb3IodmFyIGkgPSBzdGFydDsgaSA8IGJ1Y2tldC5sZW5ndGg7IGkgKyspe1xuICAgICAgaWYoaSA+IHN0YXJ0KSByKz1cIiwgXCI7XG4gICAgICB2YXIgdiA9IGJ1Y2tldFtpXVxuICAgICAgaWYodHlwZW9mIHYgPT0gXCJudW1iZXJcIilcbiAgICAgICAgcis9IHYudG9TdHJpbmcoKTtcbiAgICAgIGVsc2UgaWYodiBpbnN0YW5jZW9mIE1sQnl0ZXMpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIGlmKHR5cGVvZiB2ID09IFwic3RyaW5nXCIpe1xuICAgICAgICByKz0gJ1wiJyArIHYudG9TdHJpbmcoKSArICdcIic7XG4gICAgICB9XG4gICAgICBlbHNlIHIgKz0gXCJfXCI7XG4gICAgfVxuICAgIHIgKz0gXCIpXCJcbiAgfSBlbHNlIGlmIChleG5bMF0gPT0gMjQ4KXtcbiAgICByICs9IGV4blsxXVxuICB9XG4gIHJldHVybiByXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX2Zvcm1hdF9leGNlcHRpb24sIGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfZmF0YWxfdW5jYXVnaHRfZXhjZXB0aW9uKGVycil7XG4gIGlmKGVyciBpbnN0YW5jZW9mIEFycmF5ICYmIChlcnJbMF0gPT0gMCB8fCBlcnJbMF0gPT0gMjQ4KSkge1xuICAgIHZhciBoYW5kbGVyID0gY2FtbF9uYW1lZF92YWx1ZShcIlByaW50ZXhjLmhhbmRsZV91bmNhdWdodF9leGNlcHRpb25cIik7XG4gICAgaWYoaGFuZGxlcikgY2FtbF9jYWxsYmFjayhoYW5kbGVyLCBbZXJyLGZhbHNlXSk7XG4gICAgZWxzZSB7XG4gICAgICB2YXIgbXNnID0gY2FtbF9mb3JtYXRfZXhjZXB0aW9uKGVycik7XG4gICAgICB2YXIgYXRfZXhpdCA9IGNhbWxfbmFtZWRfdmFsdWUoXCJQZXJ2YXNpdmVzLmRvX2F0X2V4aXRcIik7XG4gICAgICBpZihhdF9leGl0KSBjYW1sX2NhbGxiYWNrKGF0X2V4aXQsIFswXSk7XG4gICAgICBjb25zb2xlLmVycm9yKFwiRmF0YWwgZXJyb3I6IGV4Y2VwdGlvbiBcIiArIG1zZyk7XG4gICAgICBpZihlcnIuanNfZXJyb3IpIHRocm93IGVyci5qc19lcnJvcjtcbiAgICB9XG4gIH1cbiAgZWxzZSB7XG4gICAgdGhyb3cgZXJyXG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfc3RhdGljX2VudlxuZnVuY3Rpb24gY2FtbF9zZXRfc3RhdGljX2VudihrLHYpe1xuICBpZighZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYpXG4gICAgZ2xvYmFsVGhpcy5qc29vX3N0YXRpY19lbnYgPSB7fVxuICBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltrXSA9IHY7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX3N5c19nZXRlbnYgKGNvbnN0KVxuZnVuY3Rpb24ganNvb19zeXNfZ2V0ZW52KG4pIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIC8vbm9kZWpzIGVudlxuICBpZihwcm9jZXNzXG4gICAgICYmIHByb2Nlc3MuZW52XG4gICAgICYmIHByb2Nlc3MuZW52W25dICE9IHVuZGVmaW5lZClcbiAgICByZXR1cm4gcHJvY2Vzcy5lbnZbbl07XG4gIGlmKGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52XG4gICAgICYmIGdsb2JhbFRoaXMuanNvb19zdGF0aWNfZW52W25dKVxuICAgIHJldHVybiBnbG9iYWxUaGlzLmpzb29fc3RhdGljX2VudltuXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRlbnYgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczoganNvb19zeXNfZ2V0ZW52XG5mdW5jdGlvbiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpIHtcbiAgdmFyIHIgPSBqc29vX3N5c19nZXRlbnYoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSkpO1xuICBpZihyID09PSB1bmRlZmluZWQpXG4gICAgY2FtbF9yYWlzZV9ub3RfZm91bmQgKCk7XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhyKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c191bnNhZmVfZ2V0ZW52XG4vL1JlcXVpcmVzOiBjYW1sX3N5c19nZXRlbnZcbmZ1bmN0aW9uIGNhbWxfc3lzX3Vuc2FmZV9nZXRlbnYobmFtZSl7XG4gIHJldHVybiBjYW1sX3N5c19nZXRlbnYgKG5hbWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG52YXIgY2FtbF9hcmd2ID0gKChmdW5jdGlvbiAoKSB7XG4gIHZhciBwcm9jZXNzID0gZ2xvYmFsVGhpcy5wcm9jZXNzO1xuICB2YXIgbWFpbiA9IFwiYS5vdXRcIjtcbiAgdmFyIGFyZ3MgPSBbXVxuXG4gIGlmKHByb2Nlc3NcbiAgICAgJiYgcHJvY2Vzcy5hcmd2XG4gICAgICYmIHByb2Nlc3MuYXJndi5sZW5ndGggPiAxKSB7XG4gICAgdmFyIGFyZ3YgPSBwcm9jZXNzLmFyZ3ZcbiAgICAvL25vZGVqc1xuICAgIG1haW4gPSBhcmd2WzFdO1xuICAgIGFyZ3MgPSBhcmd2LnNsaWNlKDIpO1xuICB9XG5cbiAgdmFyIHAgPSBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhtYWluKTtcbiAgdmFyIGFyZ3MyID0gWzAsIHBdO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKylcbiAgICBhcmdzMi5wdXNoKGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKGFyZ3NbaV0pKTtcbiAgcmV0dXJuIGFyZ3MyO1xufSkoKSlcblxuLy9Qcm92aWRlczogY2FtbF9leGVjdXRhYmxlX25hbWVcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxudmFyIGNhbWxfZXhlY3V0YWJsZV9uYW1lID0gY2FtbF9hcmd2WzFdXG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldF9hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2dldF9hcmd2IChhKSB7XG4gIHJldHVybiBbMCwgY2FtbF9hcmd2WzFdLCBjYW1sX2FyZ3ZdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19hcmd2XG4vL1JlcXVpcmVzOiBjYW1sX2FyZ3ZcbmZ1bmN0aW9uIGNhbWxfc3lzX2FyZ3YgKGEpIHtcbiAgcmV0dXJuIGNhbWxfYXJndjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbW9kaWZ5X2FyZ3Zcbi8vUmVxdWlyZXM6IGNhbWxfYXJndlxuZnVuY3Rpb24gY2FtbF9zeXNfbW9kaWZ5X2FyZ3YoYXJnKXtcbiAgY2FtbF9hcmd2ID0gYXJnO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2V4ZWN1dGFibGVfbmFtZVxuZnVuY3Rpb24gY2FtbF9zeXNfZXhlY3V0YWJsZV9uYW1lKGEpe1xuICByZXR1cm4gY2FtbF9leGVjdXRhYmxlX25hbWVcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfc3lzdGVtX2NvbW1hbmRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZChjbWQpe1xuICB2YXIgY21kID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoY21kKTtcbiAgaWYgKHR5cGVvZiByZXF1aXJlICE9IFwidW5kZWZpbmVkXCIpe1xuICAgIHZhciBjaGlsZF9wcm9jZXNzID0gcmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpO1xuICAgIGlmKGNoaWxkX3Byb2Nlc3MgJiYgY2hpbGRfcHJvY2Vzcy5leGVjU3luYylcbiAgICAgIHRyeSB7XG4gICAgICAgIGNoaWxkX3Byb2Nlc3MuZXhlY1N5bmMoY21kLHtzdGRpbzogJ2luaGVyaXQnfSk7XG4gICAgICAgIHJldHVybiAwXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiAxXG4gICAgICB9XG4gIH1cbiAgZWxzZSByZXR1cm4gMTI3O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19zeXN0ZW1fY29tbWFuZFxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfc3lzX3N5c3RlbV9jb21tYW5kKGNtZCl7XG4gIHJldHVybiAxMjc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3RpbWUgbXV0YWJsZVxudmFyIGNhbWxfaW5pdGlhbF90aW1lID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAqIDAuMDAxO1xuZnVuY3Rpb24gY2FtbF9zeXNfdGltZSAoKSB7XG4gIHZhciBub3cgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpO1xuICByZXR1cm4gbm93ICogMC4wMDEgLSBjYW1sX2luaXRpYWxfdGltZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfdGltZV9pbmNsdWRlX2NoaWxkcmVuXG4vL1JlcXVpcmVzOiBjYW1sX3N5c190aW1lXG5mdW5jdGlvbiBjYW1sX3N5c190aW1lX2luY2x1ZGVfY2hpbGRyZW4oYikge1xuICByZXR1cm4gY2FtbF9zeXNfdGltZSgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yYW5kb21fc2VlZCBtdXRhYmxlXG4vL1RoZSBmdW5jdGlvbiBuZWVkcyB0byByZXR1cm4gYW4gYXJyYXkgc2luY2UgT0NhbWwgNC4wLi4uXG5mdW5jdGlvbiBjYW1sX3N5c19yYW5kb21fc2VlZCAoKSB7XG4gIGlmIChnbG9iYWxUaGlzLmNyeXB0bykge1xuICAgICBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8uZ2V0UmFuZG9tVmFsdWVzKSB7XG4gICAgICAgdmFyIGEgPSBnbG9iYWxUaGlzLmNyeXB0by5nZXRSYW5kb21WYWx1ZXMobmV3IEludDMyQXJyYXkoNCkpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH0gZWxzZSBpZiAoZ2xvYmFsVGhpcy5jcnlwdG8ucmFuZG9tQnl0ZXMpIHtcbiAgICAgICB2YXIgYSA9IG5ldyBJbnQzMkFycmF5KGdsb2JhbFRoaXMuY3J5cHRvLnJhbmRvbUJ5dGVzKDE2KS5idWZmZXIpO1xuICAgICAgIHJldHVybiBbMCwgYVswXSwgYVsxXSwgYVsyXSwgYVszXV07XG4gICAgIH1cbiAgfVxuICB2YXIgbm93ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgdmFyIHggPSBub3deMHhmZmZmZmZmZipNYXRoLnJhbmRvbSgpO1xuICByZXR1cm4gWzAseF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X2JpZ19lbmRpYW4gKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF93b3JkX3NpemUgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X3dvcmRfc2l6ZSAoKSB7IHJldHVybiAzMjsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9pbnRfc2l6ZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3RfaW50X3NpemUgKCkgeyByZXR1cm4gMzI7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfbWF4X3dvc2l6ZSBjb25zdFxuLy8gbWF4X2ludCAvIDQgc28gdGhhdCB0aGUgZm9sbG93aW5nIGRvZXMgbm90IG92ZXJmbG93XG4vL2xldCBtYXhfc3RyaW5nX2xlbmd0aCA9IHdvcmRfc2l6ZSAvIDggKiBtYXhfYXJyYXlfbGVuZ3RoIC0gMTs7XG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9tYXhfd29zaXplICgpIHsgcmV0dXJuICgweDdGRkZGRkZGLzQpIHwgMDt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV91bml4IGNvbnN0XG4vL1JlcXVpcmVzOiBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9vc3R5cGVfdW5peCAoKSB7IHJldHVybiBvc190eXBlID09IFwiVW5peFwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV93aW4zMiBjb25zdFxuLy9SZXF1aXJlczogb3NfdHlwZVxuZnVuY3Rpb24gY2FtbF9zeXNfY29uc3Rfb3N0eXBlX3dpbjMyICgpIHsgcmV0dXJuIG9zX3R5cGUgPT0gXCJXaW4zMlwiID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gY29uc3Rcbi8vUmVxdWlyZXM6IG9zX3R5cGVcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X29zdHlwZV9jeWd3aW4gKCkgeyByZXR1cm4gb3NfdHlwZSA9PSBcIkN5Z3dpblwiID8gMSA6IDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY29uc3RfYmFja2VuZF90eXBlIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX3N5c19jb25zdF9iYWNrZW5kX3R5cGUgKCkge1xuICByZXR1cm4gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJqc19vZl9vY2FtbFwiKV07XG59XG5cbi8vUHJvdmlkZXM6IG9zX3R5cGVcbnZhciBvc190eXBlID0gKGdsb2JhbFRoaXMucHJvY2VzcyAmJlxuICAgICAgICAgICAgICAgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtICYmXG4gICAgICAgICAgICAgICBnbG9iYWxUaGlzLnByb2Nlc3MucGxhdGZvcm0gPT0gXCJ3aW4zMlwiKSA/IFwiQ3lnd2luXCIgOiBcIlVuaXhcIjtcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19nZXRfY29uZmlnIGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBvc190eXBlXG5mdW5jdGlvbiBjYW1sX3N5c19nZXRfY29uZmlnICgpIHtcbiAgcmV0dXJuIFswLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKG9zX3R5cGUpLCAzMiwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzYXR0eVxuZnVuY3Rpb24gY2FtbF9zeXNfaXNhdHR5KF9jaGFuKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfdmFyaWFudFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3ZhcmlhbnQoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfcGFyYW1ldGVyc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9ydW50aW1lX3BhcmFtZXRlcnMoX3VuaXQpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5zdGFsbF9zaWduYWxfaGFuZGxlciBjb25zdFxuZnVuY3Rpb24gY2FtbF9pbnN0YWxsX3NpZ25hbF9oYW5kbGVyKCl7cmV0dXJuIDB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xudmFyIGNhbWxfcnVudGltZV93YXJuaW5ncyA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZW5hYmxlX3J1bnRpbWVfd2FybmluZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9lbmFibGVfcnVudGltZV93YXJuaW5ncyAoYm9vbCkge1xuICBjYW1sX3J1bnRpbWVfd2FybmluZ3MgPSBib29sO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWRcbi8vUmVxdWlyZXM6IGNhbWxfcnVudGltZV93YXJuaW5nc1xuZnVuY3Rpb24gY2FtbF9tbF9ydW50aW1lX3dhcm5pbmdzX2VuYWJsZWQgKF91bml0KSB7XG4gIHJldHVybiBjYW1sX3J1bnRpbWVfd2FybmluZ3M7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zcGFjZXRpbWVfZW5hYmxlZCBjb25zdCAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX3NwYWNldGltZV9lbmFibGVkKF91bml0KSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19jb25zdF9uYWtlZF9wb2ludGVyc19jaGVja2VkIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfc3lzX2NvbnN0X25ha2VkX3BvaW50ZXJzX2NoZWNrZWQoX3VuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfcmVnaXN0ZXJfY2hhbm5lbF9mb3Jfc3BhY2V0aW1lKF9jaGFubmVsKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NwYWNldGltZV9vbmx5X3dvcmtzX2Zvcl9uYXRpdmVfY29kZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9zcGFjZXRpbWVfb25seV93b3Jrc19mb3JfbmF0aXZlX2NvZGUoKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJTcGFjZXRpbWUgcHJvZmlsaW5nIG9ubHkgd29ya3MgZm9yIG5hdGl2ZSBjb2RlXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3hkZ19kZWZhdWx0c1xuLy9WZXJzaW9uOiA+PSA1LjJcbmZ1bmN0aW9uIGNhbWxfeGRnX2RlZmF1bHRzKF91bml0KSB7XG4gIHJldHVybiAwOyAvLyBlbXB0eSBsaXN0XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX3JlZ3VsYXJfZmlsZShuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5pc0ZpbGUocm9vdC5yZXN0KTtcbn1cbi8vQWx3YXlzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvblxuZnVuY3Rpb24gY2FtbF9zZXR1cF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlcigpIHtcbiAgdmFyIHByb2Nlc3MgPSBnbG9iYWxUaGlzLnByb2Nlc3M7XG4gIGlmKHByb2Nlc3MgJiYgcHJvY2Vzcy5vbikge1xuICAgIHByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGVyciwgb3JpZ2luKSB7XG4gICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihlcnIpO1xuICAgICAgcHJvY2Vzcy5leGl0ICgyKTtcbiAgICB9KVxuICB9XG4gIGVsc2UgaWYoZ2xvYmFsVGhpcy5hZGRFdmVudExpc3RlbmVyKXtcbiAgICBnbG9iYWxUaGlzLmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZnVuY3Rpb24oZXZlbnQpe1xuICAgICAgaWYoZXZlbnQuZXJyb3Ipe1xuICAgICAgICBjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbihldmVudC5lcnJvcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn1cbmNhbWxfc2V0dXBfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIoKTtcblxuXG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnXG4vL1JlcXVpcmVzOiBqc29vX3N5c19nZXRlbnZcbnZhciBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9IEZMQUcoXCJ3aXRoLWpzLWVycm9yXCIpO1xuXG4oZnVuY3Rpb24gKCkge1xuICB2YXIgciA9IGpzb29fc3lzX2dldGVudihcIk9DQU1MUlVOUEFSQU1cIilcbiAgaWYociAhPT0gdW5kZWZpbmVkKXtcbiAgICB2YXIgbCA9IHIuc3BsaXQoXCIsXCIpO1xuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBsLmxlbmd0aDsgaSsrKXtcbiAgICAgIGlmKGxbaV0gPT0gXCJiXCIpIHsgY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWcgPSAxOyBicmVhayB9XG4gICAgICBlbHNlIGlmIChsW2ldLnN0YXJ0c1dpdGgoXCJiPVwiKSkge1xuICAgICAgICBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZyA9ICsobFtpXS5zbGljZSgyKSl9XG4gICAgICBlbHNlIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxufSkgKClcblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX21sX2RlYnVnX2luZm9fc3RhdHVzICgpIHsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYmFja3RyYWNlX3N0YXR1c1xuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfYmFja3RyYWNlX3N0YXR1cyAoX3VuaXQpIHsgcmV0dXJuIGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID8gMSA6IDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9iYWNrdHJhY2UgKCkgeyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9nZXRfZXhjZXB0aW9uX3Jhd19iYWNrdHJhY2UgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZ2V0X2V4Y2VwdGlvbl9yYXdfYmFja3RyYWNlICgpIHsgcmV0dXJuIFswXTsgfVxuLy9Qcm92aWRlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3JlY29yZF9iYWNrdHJhY2VfZmxhZ1xuZnVuY3Rpb24gY2FtbF9yZWNvcmRfYmFja3RyYWNlIChiKSB7IGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnID0gYjsgcmV0dXJuIDA7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2NvbnZlcnRfcmF3X2JhY2t0cmFjZSAoKSB7IHJldHVybiBbMF07IH1cbi8vUHJvdmlkZXM6IGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcmF3X2JhY2t0cmFjZV9sZW5ndGgoKSB7IHJldHVybiAwOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90KCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdCAoKSB7XG4gIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlByaW50ZXhjLmdldF9yYXdfYmFja3RyYWNlX3Nsb3Q6IGluZGV4IG91dCBvZiBib3VuZHNcIik7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX3Jlc3RvcmVfcmF3X2JhY2t0cmFjZVxuZnVuY3Rpb24gY2FtbF9yZXN0b3JlX3Jhd19iYWNrdHJhY2UoZXhuLCBidCkgeyByZXR1cm4gMCB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFjayBjb25zdFxuZnVuY3Rpb24gY2FtbF9nZXRfY3VycmVudF9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3QoKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3RcIik7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBsaWJyYXJ5XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSnNsaWJcblxuLy9Qcm92aWRlczogY2FtbF9qc19wdXJlX2V4cHIgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfcHVyZV9leHByIChmKSB7IHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIFswXSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19zZXQgKG11dGFibGUsIGNvbnN0LCBtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9qc19zZXQobyxmLHYpIHsgb1tmXT12O3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9qc19nZXQgKG11dGFibGUsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc19nZXQobyxmKSB7IHJldHVybiBvW2ZdOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2RlbGV0ZSAobXV0YWJsZSwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2RlbGV0ZShvLGYpIHsgZGVsZXRlIG9bZl07IHJldHVybiAwfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2luc3RhbmNlb2YgKGNvbnN0LCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfaW5zdGFuY2VvZihvLGMpIHsgcmV0dXJuIChvIGluc3RhbmNlb2YgYykgPyAxIDogMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3R5cGVvZiAoY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3R5cGVvZihvKSB7IHJldHVybiB0eXBlb2YgbzsgfVxuXG4vL1Byb3ZpZGVzOmNhbWxfdHJhbXBvbGluZVxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lKHJlcykge1xuICB2YXIgYyA9IDE7XG4gIHdoaWxlKHJlcyAmJiByZXMuam9vX3RyYW1wKXtcbiAgICByZXMgPSByZXMuam9vX3RyYW1wLmFwcGx5KG51bGwsIHJlcy5qb29fYXJncyk7XG4gICAgYysrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6Y2FtbF90cmFtcG9saW5lX3JldHVyblxuZnVuY3Rpb24gY2FtbF90cmFtcG9saW5lX3JldHVybihmLGFyZ3MpIHtcbiAgcmV0dXJuIHtqb29fdHJhbXA6Zixqb29fYXJnczphcmdzfTtcbn1cblxuLy9Qcm92aWRlczpjYW1sX3N0YWNrX2RlcHRoXG4vL0lmOiBlZmZlY3RzXG52YXIgY2FtbF9zdGFja19kZXB0aCA9IDA7XG5cbi8vUHJvdmlkZXM6Y2FtbF9zdGFja19jaGVja19kZXB0aFxuLy9JZjogZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX3N0YWNrX2RlcHRoXG5mdW5jdGlvbiBjYW1sX3N0YWNrX2NoZWNrX2RlcHRoKCkge1xuICAgIHJldHVybiAtLWNhbWxfc3RhY2tfZGVwdGggPiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NhbGxiYWNrXG4vL0lmOiAhZWZmZWN0c1xuLy9SZXF1aXJlczpjYW1sX2NhbGxfZ2VuXG52YXIgY2FtbF9jYWxsYmFjayA9IGNhbWxfY2FsbF9nZW47XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2FsbGJhY2tcbi8vSWY6IGVmZmVjdHNcbi8vUmVxdWlyZXM6Y2FtbF9zdGFja19kZXB0aCwgY2FtbF9jYWxsX2dlbiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfd3JhcF9leGNlcHRpb24sIGNhbWxfcmVzdW1lX3N0YWNrLCBjYW1sX2ZyZXNoX29vX2lkLCBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX3dpdGhfYXJnLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2NvbnN0YW50XG5mdW5jdGlvbiBjYW1sX2NhbGxiYWNrKGYsYXJncykge1xuICBmdW5jdGlvbiB1bmNhdWdodF9lZmZlY3RfaGFuZGxlcihlZmYsayxtcykge1xuICAgIC8vIFJlc3VtZXMgdGhlIGNvbnRpbnVhdGlvbiBrIGJ5IHJhaXNpbmcgZXhjZXB0aW9uIFVuaGFuZGxlZC5cbiAgICBjYW1sX3Jlc3VtZV9zdGFjayhrWzFdLG1zKTtcbiAgICB2YXIgZXhuID0gY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5VbmhhbmRsZWRcIik7XG4gICAgaWYoZXhuKSBjYW1sX3JhaXNlX3dpdGhfYXJnKGV4biwgZWZmKTtcbiAgICBlbHNlIHtcbiAgICAgIGV4biA9IFsyNDgsY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhcIkVmZmVjdC5VbmhhbmRsZWRcIiksIGNhbWxfZnJlc2hfb29faWQoMCldO1xuICAgICAgY2FtbF9yYWlzZV9jb25zdGFudChleG4pO1xuICAgIH1cbiAgfVxuICB2YXIgc2F2ZWRfc3RhY2tfZGVwdGggPSBjYW1sX3N0YWNrX2RlcHRoO1xuICB2YXIgc2F2ZWRfZXhuX3N0YWNrID0gY2FtbF9leG5fc3RhY2s7XG4gIHZhciBzYXZlZF9maWJlcl9zdGFjayA9IGNhbWxfZmliZXJfc3RhY2s7XG4gIHRyeSB7XG4gICAgY2FtbF9leG5fc3RhY2sgPSAwO1xuICAgIGNhbWxfZmliZXJfc3RhY2sgPVxuICAgICAge2g6WzAsIDAsIDAsIHVuY2F1Z2h0X2VmZmVjdF9oYW5kbGVyXSwgcjp7azowLCB4OjAsIGU6MH19O1xuICAgIHZhciByZXMgPSB7am9vX3RyYW1wOiBmLFxuICAgICAgICAgICAgICAgam9vX2FyZ3M6IGFyZ3MuY29uY2F0KGZ1bmN0aW9uICh4KXtyZXR1cm4geDt9KX07XG4gICAgZG8ge1xuICAgICAgY2FtbF9zdGFja19kZXB0aCA9IDQwO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzID0gY2FtbF9jYWxsX2dlbihyZXMuam9vX3RyYW1wLCByZXMuam9vX2FyZ3MpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAvKiBIYW5kbGUgZXhjZXB0aW9uIGNvbWluZyBmcm9tIEphdmFTY3JpcHQgb3IgZnJvbSB0aGUgcnVudGltZS4gKi9cbiAgICAgICAgaWYgKCFjYW1sX2V4bl9zdGFjaykgdGhyb3cgZTtcbiAgICAgICAgdmFyIGhhbmRsZXIgPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgICAgICAgY2FtbF9leG5fc3RhY2sgPSBjYW1sX2V4bl9zdGFja1syXTtcbiAgICAgICAgcmVzID0ge2pvb190cmFtcDogaGFuZGxlcixcbiAgICAgICAgICAgICAgIGpvb19hcmdzOiBbY2FtbF93cmFwX2V4Y2VwdGlvbihlKV19O1xuICAgICAgfVxuICAgIH0gd2hpbGUocmVzICYmIHJlcy5qb29fYXJncylcbiAgfSBmaW5hbGx5IHtcbiAgICBjYW1sX3N0YWNrX2RlcHRoID0gc2F2ZWRfc3RhY2tfZGVwdGg7XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzYXZlZF9leG5fc3RhY2s7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9IHNhdmVkX2ZpYmVyX3N0YWNrO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaXNfanNcbmZ1bmN0aW9uIGNhbWxfaXNfanMoKSB7XG4gIHJldHVybiAxO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfdXNlX2pzX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmcodW5pdCl7XG4gIHJldHVybiBGTEFHKFwidXNlLWpzLXN0cmluZ1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzb29fZmxhZ3NfZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHModW5pdCl7XG4gIHJldHVybiBGTEFHKFwiZWZmZWN0c1wiKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3dyYXBfZXhjZXB0aW9uIGNvbnN0IChtdXRhYmxlKVxuLy9SZXF1aXJlczogY2FtbF9nbG9iYWxfZGF0YSxjYW1sX3N0cmluZ19vZl9qc3N0cmluZyxjYW1sX25hbWVkX3ZhbHVlXG5mdW5jdGlvbiBjYW1sX3dyYXBfZXhjZXB0aW9uKGUpIHtcbiAgaWYgKEZMQUcoXCJleGN3cmFwXCIpKSB7XG4gICAgaWYoZSBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gZTtcbiAgICB2YXIgZXhuO1xuICAgIC8vU3RhY2tfb3ZlcmZsb3c6IGNocm9tZSwgc2FmYXJpXG4gICAgaWYoZ2xvYmFsVGhpcy5SYW5nZUVycm9yXG4gICAgICAgJiYgZSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuUmFuZ2VFcnJvclxuICAgICAgICYmIGUubWVzc2FnZVxuICAgICAgICYmIGUubWVzc2FnZS5tYXRjaCgvbWF4aW11bSBjYWxsIHN0YWNrL2kpKVxuICAgICAgZXhuID0gY2FtbF9nbG9iYWxfZGF0YS5TdGFja19vdmVyZmxvdztcbiAgICAvL1N0YWNrX292ZXJmbG93OiBmaXJlZm94XG4gICAgZWxzZSBpZihnbG9iYWxUaGlzLkludGVybmFsRXJyb3JcbiAgICAgICAmJiBlIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5JbnRlcm5hbEVycm9yXG4gICAgICAgJiYgZS5tZXNzYWdlXG4gICAgICAgJiYgZS5tZXNzYWdlLm1hdGNoKC90b28gbXVjaCByZWN1cnNpb24vaSkpXG4gICAgICBleG4gPSBjYW1sX2dsb2JhbF9kYXRhLlN0YWNrX292ZXJmbG93O1xuICAgIC8vV3JhcCBFcnJvciBpbiBKcy5FcnJvciBleGNlcHRpb25cbiAgICBlbHNlIGlmKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yICYmIGNhbWxfbmFtZWRfdmFsdWUoXCJqc0Vycm9yXCIpKVxuICAgICAgZXhuID0gWzAsY2FtbF9uYW1lZF92YWx1ZShcImpzRXJyb3JcIiksZV07XG4gICAgZWxzZVxuICAgICAgLy9mYWxsYmFjazogd3JhcHBlZCBpbiBGYWlsdXJlXG4gICAgICBleG4gPSBbMCxjYW1sX2dsb2JhbF9kYXRhLkZhaWx1cmUsY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKFN0cmluZyhlKSldO1xuICAgIC8vIFdlIGFscmVhZHkgaGF2ZSBhbiBlcnJvciBhdCBoYW5kLCBsZXQncyB1c2UgaXQuXG4gICAgaWYgKGUgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkVycm9yKVxuICAgICAgZXhuLmpzX2Vycm9yID0gZTtcbiAgICByZXR1cm4gZXhuO1xuICB9IGVsc2VcbiAgICByZXR1cm4gZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVxuLy9SZXF1aXJlczogY2FtbF9yZWNvcmRfYmFja3RyYWNlX2ZsYWdcbmZ1bmN0aW9uIGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShleG4sIGZvcmNlKSB7XG4gIGlmKGNhbWxfcmVjb3JkX2JhY2t0cmFjZV9mbGFnKVxuICAgIHJldHVybiBjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZShleG4sIGZvcmNlKTtcbiAgZWxzZSByZXR1cm4gZXhuXG59XG5cbi8vIEV4cGVyaW1lbnRhbFxuLy9Qcm92aWRlczogY2FtbF9leG5fd2l0aF9qc19iYWNrdHJhY2Vcbi8vUmVxdWlyZXM6IGNhbWxfZ2xvYmFsX2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXhuX3dpdGhfanNfYmFja3RyYWNlKGV4biwgZm9yY2UpIHtcbiAgLy9uZXZlciByZXJhaXNlIGZvciBjb25zdGFudCBleG5cbiAgaWYoIWV4bi5qc19lcnJvciB8fCBmb3JjZSB8fCBleG5bMF0gPT0gMjQ4KSBleG4uanNfZXJyb3IgPSBuZXcgZ2xvYmFsVGhpcy5FcnJvcihcIkpzIGV4Y2VwdGlvbiBjb250YWluaW5nIGJhY2t0cmFjZVwiKTtcbiAgcmV0dXJuIGV4bjtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Vycm9yX29wdGlvbl9vZl9leGNlcHRpb25cbmZ1bmN0aW9uIGNhbWxfanNfZXJyb3Jfb3B0aW9uX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBbMCwgZXhuLmpzX2Vycm9yXTsgfVxuICByZXR1cm4gMDtcbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnJvbV9ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9ib29sKHgpIHsgcmV0dXJuICEheDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc190b19ib29sIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfanNfdG9fYm9vbCh4KSB7IHJldHVybiAreDsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mcm9tX2Zsb2F0IGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfZnJvbV9pbnQzMlxuLy9BbGlhczogY2FtbF9qc19mcm9tX25hdGl2ZWludFxuZnVuY3Rpb24gY2FtbF9qc19mcm9tX2Zsb2F0KHgpIHsgcmV0dXJuIHg7IH1cbi8vUHJvdmlkZXM6IGNhbWxfanNfdG9fZmxvYXQgY29uc3QgKGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9qc190b19mbG9hdCh4KSB7IHJldHVybiB4OyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3RvX2ludDMyIGNvbnN0IChjb25zdClcbi8vQWxpYXM6IGNhbWxfanNfdG9fbmF0aXZlaW50XG5mdW5jdGlvbiBjYW1sX2pzX3RvX2ludDMyKHgpIHsgcmV0dXJuIHh8MDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Zyb21fYXJyYXkgbXV0YWJsZSAoc2hhbGxvdylcbmZ1bmN0aW9uIGNhbWxfanNfZnJvbV9hcnJheShhKSB7XG4gIHJldHVybiBhLnNsaWNlKDEpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc190b19hcnJheSBtdXRhYmxlIChzaGFsbG93KVxuZnVuY3Rpb24gY2FtbF9qc190b19hcnJheShhKSB7XG4gIHZhciBsZW4gPSBhLmxlbmd0aDtcbiAgdmFyIGIgPSBuZXcgQXJyYXkobGVuKzEpO1xuICBiWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxsZW47aSsrKSBiW2krMV0gPSBhW2ldO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9saXN0X29mX2pzX2FycmF5IGNvbnN0IChtdXRhYmxlKVxuZnVuY3Rpb24gY2FtbF9saXN0X29mX2pzX2FycmF5KGEpe1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgaT1hLmxlbmd0aCAtIDE7IGk+PTA7IGktLSl7XG4gICAgdmFyIGUgPSBhW2ldO1xuICAgIGwgPSBbMCxlLGxdO1xuICB9XG4gIHJldHVybiBsXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGlzdF90b19qc19hcnJheSBjb25zdCAobXV0YWJsZSlcbmZ1bmN0aW9uIGNhbWxfbGlzdF90b19qc19hcnJheShsKXtcbiAgdmFyIGEgPSBbXTtcbiAgZm9yKDsgbCAhPT0gMDsgbCA9IGxbMl0pIHtcbiAgICBhLnB1c2gobFsxXSk7XG4gIH1cbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfdmFyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2pzX3Zhcih4KSB7XG4gIHZhciB4ID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoeCk7XG4gIC8vQ2hlY2tzIHRoYXQgeCBoYXMgdGhlIGZvcm0gaWRlbnRbLmlkZW50XSpcbiAgaWYoIXgubWF0Y2goL15bYS16QS1aXyRdW2EtekEtWl8kMC05XSooXFwuW2EtekEtWl8kXVthLXpBLVpfJDAtOV0qKSokLykpe1xuICAgIGNvbnNvbGUuZXJyb3IoXCJjYW1sX2pzX3ZhcjogXFxcIlwiICsgeCArIFwiXFxcIiBpcyBub3QgYSB2YWxpZCBKYXZhU2NyaXB0IHZhcmlhYmxlLiBjb250aW51aW5nIC4uXCIpO1xuICAgIC8vY29uc29sZS5lcnJvcihcIkpzLlVuc2FmZS5ldmFsX3N0cmluZ1wiKVxuICB9XG4gIHJldHVybiBldmFsKHgpO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc19jYWxsIChjb25zdCwgbXV0YWJsZSwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9qc19jYWxsKGYsIG8sIGFyZ3MpIHsgcmV0dXJuIGYuYXBwbHkobywgY2FtbF9qc19mcm9tX2FycmF5KGFyZ3MpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9qc19mdW5fY2FsbCAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfZnVuX2NhbGwoZiwgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMTogcmV0dXJuIGYoKTtcbiAgY2FzZSAyOiByZXR1cm4gZiAoYVsxXSk7XG4gIGNhc2UgMzogcmV0dXJuIGYgKGFbMV0sYVsyXSk7XG4gIGNhc2UgNDogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSk7XG4gIGNhc2UgNjogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSk7XG4gIGNhc2UgNzogcmV0dXJuIGYgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gZiAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdLGFbNl0sYVs3XSk7XG4gIH1cbiAgcmV0dXJuIGYuYXBwbHkobnVsbCwgY2FtbF9qc19mcm9tX2FycmF5KGEpKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfbWV0aF9jYWxsIChtdXRhYmxlLCBjb25zdCwgc2hhbGxvdylcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbWV0aF9jYWxsKG8sIGYsIGFyZ3MpIHtcbiAgcmV0dXJuIG9bY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcoZildLmFwcGx5KG8sIGNhbWxfanNfZnJvbV9hcnJheShhcmdzKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX25ldyAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfanNfbmV3KGMsIGEpIHtcbiAgc3dpdGNoIChhLmxlbmd0aCkge1xuICBjYXNlIDE6IHJldHVybiBuZXcgYztcbiAgY2FzZSAyOiByZXR1cm4gbmV3IGMgKGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdKTtcbiAgY2FzZSA0OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdKTtcbiAgY2FzZSA1OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVsxXSxhWzJdLGFbM10sYVs0XSxhWzVdKTtcbiAgY2FzZSA3OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdKTtcbiAgY2FzZSA4OiByZXR1cm4gbmV3IGMgKGFbMV0sYVsyXSxhWzNdLGFbNF0sYVs1XSxhWzZdLGFbN10pO1xuICB9XG4gIGZ1bmN0aW9uIEYoKSB7IHJldHVybiBjLmFwcGx5KHRoaXMsIGNhbWxfanNfZnJvbV9hcnJheShhKSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9vanNfbmV3X2FyciAoY29uc3QsIHNoYWxsb3cpXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb2pzX25ld19hcnIoYywgYSkge1xuICBzd2l0Y2ggKGEubGVuZ3RoKSB7XG4gIGNhc2UgMDogcmV0dXJuIG5ldyBjO1xuICBjYXNlIDE6IHJldHVybiBuZXcgYyAoYVswXSk7XG4gIGNhc2UgMjogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0pO1xuICBjYXNlIDM6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0pO1xuICBjYXNlIDQ6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSk7XG4gIGNhc2UgNTogcmV0dXJuIG5ldyBjIChhWzBdLGFbMV0sYVsyXSxhWzNdLGFbNF0pO1xuICBjYXNlIDY6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0pO1xuICBjYXNlIDc6IHJldHVybiBuZXcgYyAoYVswXSxhWzFdLGFbMl0sYVszXSxhWzRdLGFbNV0sYVs2XSk7XG4gIH1cbiAgZnVuY3Rpb24gRigpIHsgcmV0dXJuIGMuYXBwbHkodGhpcywgYSk7IH1cbiAgRi5wcm90b3R5cGUgPSBjLnByb3RvdHlwZTtcbiAgcmV0dXJuIG5ldyBGO1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgaWYobGVuID4gMCl7XG4gICAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncyA9IFt1bmRlZmluZWRdO1xuICAgIH1cbiAgICB2YXIgcmVzID0gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTtcbiAgICByZXR1cm4gKHJlcyBpbnN0YW5jZW9mIEZ1bmN0aW9uKT9jYW1sX2pzX3dyYXBfY2FsbGJhY2socmVzKTpyZXM7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50c1xuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX2FyZ3VtZW50cyhmKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgW2FyZ3NdKTtcbiAgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdChhcml0eSwgZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcml0eSk7XG4gICAgdmFyIGxlbiA9IE1hdGgubWluKGFyZ3VtZW50cy5sZW5ndGgsIGFyaXR5KVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZiwgYXJncyk7XG4gIH07XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmUoZikge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBsZW4gPSBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5KGYpO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2sgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFjaywgY2FtbF9qc193cmFwX2NhbGxiYWNrXG5mdW5jdGlvbiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFjayhmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkobGVuICsgMSk7XG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsYXJncyk7XG4gICAgcmV0dXJuIChyZXMgaW5zdGFuY2VvZiBGdW5jdGlvbik/Y2FtbF9qc193cmFwX2NhbGxiYWNrKHJlcyk6cmVzO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHMgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfYXJndW1lbnRzKGYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbGVuID0gYXJndW1lbnRzLmxlbmd0aDtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShsZW4pO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaV0gPSBhcmd1bWVudHNbaV07XG4gICAgcmV0dXJuIGNhbWxfY2FsbGJhY2soZixbdGhpcyxhcmdzXSk7XG4gIH1cbn1cbi8vUHJvdmlkZXM6IGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9jYWxsYmFja1xuZnVuY3Rpb24gY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfc3RyaWN0KGFyaXR5LCBmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJpdHkgKyAxKTtcbiAgICB2YXIgbGVuID0gTWF0aC5taW4oYXJndW1lbnRzLmxlbmd0aCwgYXJpdHkpXG4gICAgYXJnc1swXSA9IHRoaXM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgYXJnc1tpKzFdID0gYXJndW1lbnRzW2ldO1xuICAgIHJldHVybiBjYW1sX2NhbGxiYWNrKGYsIGFyZ3MpO1xuICB9O1xufVxuLy9Qcm92aWRlczogY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2ssIGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbmZ1bmN0aW9uIGNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3Vuc2FmZShmKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGxlbiA9IGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikgLSAxO1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGxlbiArIDEpO1xuICAgIGFyZ3NbMF0gPSB0aGlzO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIGFyZ3NbaSsxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICByZXR1cm4gY2FtbF9jYWxsYmFjayhmLCBhcmdzKTsgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2Z1bmN0aW9uX2FyaXR5XG4vL0lmOiAhZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9qc19mdW5jdGlvbl9hcml0eShmKSB7XG4gIHJldHVybiAoZi5sID49IDApP2YubDooZi5sID0gZi5sZW5ndGgpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZnVuY3Rpb25fYXJpdHlcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfanNfZnVuY3Rpb25fYXJpdHkoZikge1xuICAvLyBGdW5jdGlvbnMgaGF2ZSBhbiBhZGRpdGlvbmFsIGNvbnRpbnVhdGlvbiBwYXJhbWV0ZXIuIFRoaXMgc2hvdWxkXG4gIC8vIG5vdCBiZSB2aXNpYmxlIHdoZW4gY2FsbGluZyB0aGVtIGZyb20gSmF2YVNjcmlwdFxuICByZXR1cm4gKChmLmwgPj0gMCk/Zi5sOihmLmwgPSBmLmxlbmd0aCkpIC0gMVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX2VxdWFscyAoeCwgeSkgeyByZXR1cm4gKyh4ID09IHkpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfc3RyaWN0X2VxdWFscyBtdXRhYmxlIChjb25zdCwgY29uc3QpXG5mdW5jdGlvbiBjYW1sX2pzX3N0cmljdF9lcXVhbHMgKHgsIHkpIHsgcmV0dXJuICsoeCA9PT0geSk7IH1cblxuLy9Qcm92aWRlczogY2FtbF9qc19ldmFsX3N0cmluZyAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19ldmFsX3N0cmluZyAocykge3JldHVybiBldmFsKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMpKTt9XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXhwciAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9qc19leHByKHMpIHtcbiAgY29uc29sZS5lcnJvcihcImNhbWxfanNfZXhwcjogZmFsbGJhY2sgdG8gcnVudGltZSBldmFsdWF0aW9uXFxuXCIpO1xuICByZXR1cm4gZXZhbChjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhzKSk7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3B1cmVfanNfZXhwciBjb25zdCAoY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9wdXJlX2pzX2V4cHIgKHMpe1xuICBjb25zb2xlLmVycm9yKFwiY2FtbF9wdXJlX2pzX2V4cHI6IGZhbGxiYWNrIHRvIHJ1bnRpbWUgZXZhbHVhdGlvblxcblwiKTtcbiAgcmV0dXJuIGV2YWwoY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocykpO31cblxuLy9Qcm92aWRlczogY2FtbF9qc19vYmplY3QgKG9iamVjdF9saXRlcmFsKVxuLy9SZXF1aXJlczogY2FtbF9qc3N0cmluZ19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfanNfb2JqZWN0IChhKSB7XG4gIHZhciBvID0ge307XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYS5sZW5ndGg7IGkrKykge1xuICAgIHZhciBwID0gYVtpXTtcbiAgICBvW2NhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHBbMV0pXSA9IHBbMl07XG4gIH1cbiAgcmV0dXJuIG87XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vLy8vLy8vLy8vLy8vIEZvcm1hdFxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlX2Zvcm1hdFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX3BhcnNlX2Zvcm1hdCAoZm10KSB7XG4gIGZtdCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoZm10KTtcbiAgdmFyIGxlbiA9IGZtdC5sZW5ndGg7XG4gIGlmIChsZW4gPiAzMSkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZm9ybWF0X2ludDogZm9ybWF0IHRvbyBsb25nXCIpO1xuICB2YXIgZiA9XG4gICAgICB7IGp1c3RpZnk6JysnLCBzaWduc3R5bGU6Jy0nLCBmaWxsZXI6JyAnLCBhbHRlcm5hdGU6ZmFsc2UsXG4gICAgICAgIGJhc2U6MCwgc2lnbmVkY29udjpmYWxzZSwgd2lkdGg6MCwgdXBwZXJjYXNlOmZhbHNlLFxuICAgICAgICBzaWduOjEsIHByZWM6LTEsIGNvbnY6J2YnIH07XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICB2YXIgYyA9IGZtdC5jaGFyQXQoaSk7XG4gICAgc3dpdGNoIChjKSB7XG4gICAgY2FzZSAnLSc6XG4gICAgICBmLmp1c3RpZnkgPSAnLSc7IGJyZWFrO1xuICAgIGNhc2UgJysnOiBjYXNlICcgJzpcbiAgICAgIGYuc2lnbnN0eWxlID0gYzsgYnJlYWs7XG4gICAgY2FzZSAnMCc6XG4gICAgICBmLmZpbGxlciA9ICcwJzsgYnJlYWs7XG4gICAgY2FzZSAnIyc6XG4gICAgICBmLmFsdGVybmF0ZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOiBjYXNlICc1JzpcbiAgICBjYXNlICc2JzogY2FzZSAnNyc6IGNhc2UgJzgnOiBjYXNlICc5JzpcbiAgICAgIGYud2lkdGggPSAwO1xuICAgICAgd2hpbGUgKGM9Zm10LmNoYXJDb2RlQXQoaSkgLSA0OCwgYyA+PSAwICYmIGMgPD0gOSkge1xuICAgICAgICBmLndpZHRoID0gZi53aWR0aCAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgICBicmVhaztcbiAgICBjYXNlICcuJzpcbiAgICAgIGYucHJlYyA9IDA7XG4gICAgICBpKys7XG4gICAgICB3aGlsZSAoYz1mbXQuY2hhckNvZGVBdChpKSAtIDQ4LCBjID49IDAgJiYgYyA8PSA5KSB7XG4gICAgICAgIGYucHJlYyA9IGYucHJlYyAqIDEwICsgYzsgaSsrXG4gICAgICB9XG4gICAgICBpLS07XG4gICAgY2FzZSAnZCc6IGNhc2UgJ2knOlxuICAgICAgZi5zaWduZWRjb252ID0gdHJ1ZTsgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlICd1JzpcbiAgICAgIGYuYmFzZSA9IDEwOyBicmVhaztcbiAgICBjYXNlICd4JzpcbiAgICAgIGYuYmFzZSA9IDE2OyBicmVhaztcbiAgICBjYXNlICdYJzpcbiAgICAgIGYuYmFzZSA9IDE2OyBmLnVwcGVyY2FzZSA9IHRydWU7IGJyZWFrO1xuICAgIGNhc2UgJ28nOlxuICAgICAgZi5iYXNlID0gODsgYnJlYWs7XG4gICAgY2FzZSAnZSc6IGNhc2UgJ2YnOiBjYXNlICdnJzpcbiAgICAgIGYuc2lnbmVkY29udiA9IHRydWU7IGYuY29udiA9IGM7IGJyZWFrO1xuICAgIGNhc2UgJ0UnOiBjYXNlICdGJzogY2FzZSAnRyc6XG4gICAgICBmLnNpZ25lZGNvbnYgPSB0cnVlOyBmLnVwcGVyY2FzZSA9IHRydWU7XG4gICAgICBmLmNvbnYgPSBjLnRvTG93ZXJDYXNlICgpOyBicmVhaztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGY7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluaXNoX2Zvcm1hdHRpbmdcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcoZiwgcmF3YnVmZmVyKSB7XG4gIGlmIChmLnVwcGVyY2FzZSkgcmF3YnVmZmVyID0gcmF3YnVmZmVyLnRvVXBwZXJDYXNlKCk7XG4gIHZhciBsZW4gPSByYXdidWZmZXIubGVuZ3RoO1xuICAvKiBBZGp1c3QgbGVuIHRvIHJlZmxlY3QgYWRkaXRpb25hbCBjaGFycyAoc2lnbiwgZXRjKSAqL1xuICBpZiAoZi5zaWduZWRjb252ICYmIChmLnNpZ24gPCAwIHx8IGYuc2lnbnN0eWxlICE9ICctJykpIGxlbisrO1xuICBpZiAoZi5hbHRlcm5hdGUpIHtcbiAgICBpZiAoZi5iYXNlID09IDgpIGxlbiArPSAxO1xuICAgIGlmIChmLmJhc2UgPT0gMTYpIGxlbiArPSAyO1xuICB9XG4gIC8qIERvIHRoZSBmb3JtYXR0aW5nICovXG4gIHZhciBidWZmZXIgPSBcIlwiO1xuICBpZiAoZi5qdXN0aWZ5ID09ICcrJyAmJiBmLmZpbGxlciA9PSAnICcpXG4gICAgZm9yICh2YXIgaSA9IGxlbjsgaSA8IGYud2lkdGg7IGkrKykgYnVmZmVyICs9ICcgJztcbiAgaWYgKGYuc2lnbmVkY29udikge1xuICAgIGlmIChmLnNpZ24gPCAwKSBidWZmZXIgKz0gJy0nO1xuICAgIGVsc2UgaWYgKGYuc2lnbnN0eWxlICE9ICctJykgYnVmZmVyICs9IGYuc2lnbnN0eWxlO1xuICB9XG4gIGlmIChmLmFsdGVybmF0ZSAmJiBmLmJhc2UgPT0gOCkgYnVmZmVyICs9ICcwJztcbiAgaWYgKGYuYWx0ZXJuYXRlICYmIGYuYmFzZSA9PSAxNikgYnVmZmVyICs9IGYudXBwZXJjYXNlP1wiMFhcIjpcIjB4XCI7XG4gIGlmIChmLmp1c3RpZnkgPT0gJysnICYmIGYuZmlsbGVyID09ICcwJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJzAnO1xuICBidWZmZXIgKz0gcmF3YnVmZmVyO1xuICBpZiAoZi5qdXN0aWZ5ID09ICctJylcbiAgICBmb3IgKHZhciBpID0gbGVuOyBpIDwgZi53aWR0aDsgaSsrKSBidWZmZXIgKz0gJyAnO1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhidWZmZXIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGpzb29fZmxvb3JfbG9nMlxudmFyIGxvZzJfb2sgPSBNYXRoLmxvZzIgJiYgTWF0aC5sb2cyKDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3KSA9PSAxMDIwXG5mdW5jdGlvbiBqc29vX2Zsb29yX2xvZzIoeCkge1xuICBpZihsb2cyX29rKSByZXR1cm4gTWF0aC5mbG9vcihNYXRoLmxvZzIoeCkpXG4gIHZhciBpID0gMDtcbiAgaWYgKHggPT0gMCkgcmV0dXJuIC1JbmZpbml0eTtcbiAgaWYoeD49MSkge3doaWxlICh4Pj0yKSB7eC89MjsgaSsrfSB9XG4gIGVsc2Uge3doaWxlICh4IDwgMSkge3gqPTI7IGktLX0gfTtcbiAgcmV0dXJuIGk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczoganNvb19mbG9vcl9sb2cyLCBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVxuZnVuY3Rpb24gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0ICh4KSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMSwgMCwgMHg3ZmYwKTtcbiAgICBpZiAoeCA+IDApXG4gICAgICByZXR1cm4gY2FtbF9pbnQ2NF9jcmVhdGVfbG9fbWlfaGkoMCwgMCwgMHg3ZmYwKVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaSgwLCAwLCAweGZmZjApXG4gIH1cbiAgdmFyIHNpZ24gPSAoeD09MCAmJiAxL3ggPT0gLUluZmluaXR5KT8weDgwMDA6KHg+PTApPzA6MHg4MDAwO1xuICBpZiAoc2lnbikgeCA9IC14O1xuICAvLyBJbnQ2NC5iaXRzX29mX2Zsb2F0IDEuMTIzNTU4MjA5Mjg4OTQ3NEUrMzA3ID0gMHg3ZmIwMDAwMDAwMDAwMDAwTFxuICAvLyB1c2luZyBNYXRoLkxPRzJFKk1hdGgubG9nKHgpIGluIHBsYWNlIG9mIE1hdGgubG9nMiByZXN1bHQgaW4gcHJlY2lzaW9uIGxvc3RcbiAgdmFyIGV4cCA9IGpzb29fZmxvb3JfbG9nMih4KSArIDEwMjM7XG4gIGlmIChleHAgPD0gMCkge1xuICAgIGV4cCA9IDA7XG4gICAgeCAvPSBNYXRoLnBvdygyLC0xMDI2KTtcbiAgfSBlbHNlIHtcbiAgICB4IC89IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICAgIGlmICh4IDwgMTYpIHtcbiAgICAgIHggKj0gMjsgZXhwIC09MTsgfVxuICAgIGlmIChleHAgPT0gMCkge1xuICAgICAgeCAvPSAyOyB9XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLDI0KTtcbiAgdmFyIHIzID0geHwwO1xuICB4ID0gKHggLSByMykgKiBrO1xuICB2YXIgcjIgPSB4fDA7XG4gIHggPSAoeCAtIHIyKSAqIGs7XG4gIHZhciByMSA9IHh8MDtcbiAgcjMgPSAocjMgJjB4ZikgfCBzaWduIHwgZXhwIDw8IDQ7XG4gIHJldHVybiBjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaShyMSwgcjIsIHIzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBqc29vX2Zsb29yX2xvZzJcbmZ1bmN0aW9uIGNhbWxfaW50MzJfYml0c19vZl9mbG9hdCAoeCkge1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KDEpO1xuICBmbG9hdDMyYVswXSA9IHg7XG4gIHZhciBpbnQzMmEgPSBuZXcgSW50MzJBcnJheShmbG9hdDMyYS5idWZmZXIpO1xuICByZXR1cm4gaW50MzJhWzBdIHwgMDtcbn1cblxuLy9GUCBsaXRlcmFscyBjYW4gYmUgd3JpdHRlbiB1c2luZyB0aGUgaGV4YWRlY2ltYWxcbi8vbm90YXRpb24gMHg8bWFudGlzc2EgaW4gaGV4PnA8ZXhwb25lbnQ+IGZyb20gSVNPIEM5OS5cbi8vaHR0cHM6Ly9naXRodWIuY29tL2RhbmtvZ2FpL2pzLWhleGZsb2F0L2Jsb2IvbWFzdGVyL2hleGZsb2F0LmpzXG4vL1Byb3ZpZGVzOiBjYW1sX2hleHN0cmluZ19vZl9mbG9hdCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcsIGNhbWxfc3RyX3JlcGVhdFxuZnVuY3Rpb24gY2FtbF9oZXhzdHJpbmdfb2ZfZmxvYXQgKHgsIHByZWMsIHN0eWxlKSB7XG4gIGlmICghaXNGaW5pdGUoeCkpIHtcbiAgICBpZiAoaXNOYU4oeCkpIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhcIm5hblwiKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKCh4ID4gMCk/XCJpbmZpbml0eVwiOlwiLWluZmluaXR5XCIpO1xuICB9XG4gIHZhciBzaWduID0gKHg9PTAgJiYgMS94ID09IC1JbmZpbml0eSk/MTooeD49MCk/MDoxO1xuICBpZihzaWduKSB4ID0gLXg7XG4gIHZhciBleHAgPSAwO1xuICBpZiAoeCA9PSAwKSB7IH1cbiAgZWxzZSBpZiAoeCA8IDEpIHtcbiAgICB3aGlsZSAoeCA8IDEgJiYgZXhwID4gLTEwMjIpICB7IHggKj0gMjsgZXhwLS0gfVxuICB9IGVsc2Uge1xuICAgIHdoaWxlICh4ID49IDIpIHsgeCAvPSAyOyBleHArKyB9XG4gIH1cbiAgdmFyIGV4cF9zaWduID0gZXhwIDwgMCA/ICcnIDogJysnO1xuICB2YXIgc2lnbl9zdHIgPSAnJztcbiAgaWYgKHNpZ24pIHNpZ25fc3RyID0gJy0nXG4gIGVsc2Uge1xuICAgIHN3aXRjaChzdHlsZSl7XG4gICAgY2FzZSA0MyAvKiAnKycgKi86IHNpZ25fc3RyID0gJysnOyBicmVhaztcbiAgICBjYXNlIDMyIC8qICcgJyAqLzogc2lnbl9zdHIgPSAnICc7IGJyZWFrO1xuICAgIGRlZmF1bHQ6IGJyZWFrO1xuICAgIH1cbiAgfVxuICBpZiAocHJlYyA+PSAwICYmIHByZWMgPCAxMykge1xuICAgIC8qIElmIGEgcHJlY2lzaW9uIGlzIGdpdmVuLCBhbmQgaXMgc21hbGwsIHJvdW5kIG1hbnRpc3NhIGFjY29yZGluZ2x5ICovXG4gICAgdmFyIGNzdCA9IE1hdGgucG93KDIscHJlYyAqIDQpO1xuICAgIHggPSBNYXRoLnJvdW5kKHggKiBjc3QpIC8gY3N0O1xuICB9XG4gIHZhciB4X3N0ciA9IHgudG9TdHJpbmcoMTYpO1xuICBpZihwcmVjID49IDApe1xuICAgIHZhciBpZHggPSB4X3N0ci5pbmRleE9mKCcuJyk7XG4gICAgaWYoaWR4PDApIHtcbiAgICAgIHhfc3RyICs9ICcuJyArIGNhbWxfc3RyX3JlcGVhdChwcmVjLCAnMCcpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIHZhciBzaXplID0gaWR4KzErcHJlYztcbiAgICAgIGlmKHhfc3RyLmxlbmd0aCA8IHNpemUpXG4gICAgICAgIHhfc3RyICs9IGNhbWxfc3RyX3JlcGVhdChzaXplIC0geF9zdHIubGVuZ3RoLCAnMCcpO1xuICAgICAgZWxzZVxuICAgICAgICB4X3N0ciA9IHhfc3RyLnN1YnN0cigwLHNpemUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcgKHNpZ25fc3RyICsgJzB4JyArIHhfc3RyICsgJ3AnICsgZXhwX3NpZ24gKyBleHAudG9TdHJpbmcoMTApKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGxvID0geC5sbztcbiAgdmFyIG1pID0geC5taTtcbiAgdmFyIGhpID0geC5oaTtcbiAgdmFyIGV4cCA9IChoaSAmIDB4N2ZmZikgPj4gNDtcbiAgaWYgKGV4cCA9PSAyMDQ3KSB7XG4gICAgaWYgKChsb3xtaXwoaGkmMHhmKSkgPT0gMClcbiAgICAgIHJldHVybiAoaGkgJiAweDgwMDApPygtSW5maW5pdHkpOkluZmluaXR5O1xuICAgIGVsc2VcbiAgICAgIHJldHVybiBOYU47XG4gIH1cbiAgdmFyIGsgPSBNYXRoLnBvdygyLC0yNCk7XG4gIHZhciByZXMgPSAobG8qayttaSkqaysoaGkmMHhmKTtcbiAgaWYgKGV4cCA+IDApIHtcbiAgICByZXMgKz0gMTY7XG4gICAgcmVzICo9IE1hdGgucG93KDIsZXhwLTEwMjcpO1xuICB9IGVsc2VcbiAgICByZXMgKj0gTWF0aC5wb3coMiwtMTAyNik7XG4gIGlmIChoaSAmIDB4ODAwMCkgcmVzID0gLSByZXM7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV4dGFmdGVyX2Zsb2F0IGNvbnN0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF9hZGQsIGNhbWxfaW50NjRfc3ViLGNhbWxfaW50NjRfb2ZfaW50MzJcbmZ1bmN0aW9uIGNhbWxfbmV4dGFmdGVyX2Zsb2F0ICh4LHkpIHtcbiAgaWYoaXNOYU4oeCkgfHwgaXNOYU4oeSkpIHJldHVybiBOYU47XG4gIGlmKHg9PXkpIHJldHVybiB5O1xuICBpZih4PT0wKXtcbiAgICBpZih5IDwgMClcbiAgICAgIHJldHVybiAtTWF0aC5wb3coMiwgLTEwNzQpXG4gICAgZWxzZVxuICAgICAgcmV0dXJuIE1hdGgucG93KDIsIC0xMDc0KVxuICB9XG4gIHZhciBiaXRzID0gY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KHgpO1xuICB2YXIgb25lID0gY2FtbF9pbnQ2NF9vZl9pbnQzMigxKTtcbiAgaWYgKCh4PHkpID09ICh4PjApKVxuICAgIGJpdHMgPSBjYW1sX2ludDY0X2FkZChiaXRzLCBvbmUpXG4gIGVsc2VcbiAgICBiaXRzID0gY2FtbF9pbnQ2NF9zdWIoYml0cywgb25lKVxuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzKGJpdHMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3RydW5jX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX3RydW5jX2Zsb2F0KHgpe1xuICByZXR1cm4gTWF0aC50cnVuYyh4KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMgKHgpIHtcbiAgdmFyIGludDMyYSA9IG5ldyBJbnQzMkFycmF5KDEpO1xuICBpbnQzMmFbMF0gPSB4O1xuICB2YXIgZmxvYXQzMmEgPSBuZXcgRmxvYXQzMkFycmF5KGludDMyYS5idWZmZXIpO1xuICByZXR1cm4gZmxvYXQzMmFbMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2xhc3NpZnlfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2xhc3NpZnlfZmxvYXQgKHgpIHtcbiAgaWYgKGlzRmluaXRlICh4KSkge1xuICAgIGlmIChNYXRoLmFicyh4KSA+PSAyLjIyNTA3Mzg1ODUwNzIwMTRlLTMwOCkgcmV0dXJuIDA7XG4gICAgaWYgKHggIT0gMCkgcmV0dXJuIDE7XG4gICAgcmV0dXJuIDI7XG4gIH1cbiAgcmV0dXJuIGlzTmFOKHgpPzQ6Mztcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbW9kZl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9tb2RmX2Zsb2F0ICh4KSB7XG4gIGlmIChpc0Zpbml0ZSAoeCkpIHtcbiAgICB2YXIgbmVnID0gKDEveCkgPCAwO1xuICAgIHggPSBNYXRoLmFicyh4KTtcbiAgICB2YXIgaSA9IE1hdGguZmxvb3IgKHgpO1xuICAgIHZhciBmID0geCAtIGk7XG4gICAgaWYgKG5lZykgeyBpID0gLWk7IGYgPSAtZjsgfVxuICAgIHJldHVybiBbMCwgZiwgaV07XG4gIH1cbiAgaWYgKGlzTmFOICh4KSkgcmV0dXJuIFswLCBOYU4sIE5hTl07XG4gIHJldHVybiBbMCwgMS94LCB4XTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfbGRleHBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbGRleHBfZmxvYXQgKHgsZXhwKSB7XG4gIGV4cCB8PSAwO1xuICBpZiAoZXhwID4gMTAyMykge1xuICAgIGV4cCAtPSAxMDIzO1xuICAgIHggKj0gTWF0aC5wb3coMiwgMTAyMyk7XG4gICAgaWYgKGV4cCA+IDEwMjMpIHsgIC8vIGluIGNhc2UgeCBpcyBzdWJub3JtYWxcbiAgICAgIGV4cCAtPSAxMDIzO1xuICAgICAgeCAqPSBNYXRoLnBvdygyLCAxMDIzKTtcbiAgICB9XG4gIH1cbiAgaWYgKGV4cCA8IC0xMDIzKSB7XG4gICAgZXhwICs9IDEwMjM7XG4gICAgeCAqPSBNYXRoLnBvdygyLCAtMTAyMyk7XG4gIH1cbiAgeCAqPSBNYXRoLnBvdygyLCBleHApO1xuICByZXR1cm4geDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZnJleHBfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGpzb29fZmxvb3JfbG9nMlxuZnVuY3Rpb24gY2FtbF9mcmV4cF9mbG9hdCAoeCkge1xuICBpZiAoKHggPT0gMCkgfHwgIWlzRmluaXRlKHgpKSByZXR1cm4gWzAsIHgsIDBdO1xuICB2YXIgbmVnID0geCA8IDA7XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHZhciBleHAgPSBNYXRoLm1heCgtMTAyMywganNvb19mbG9vcl9sb2cyKHgpICsgMSk7XG4gIHggKj0gTWF0aC5wb3coMiwtZXhwKTtcbiAgd2hpbGUgKHggPCAwLjUpIHtcbiAgICB4ICo9IDI7XG4gICAgZXhwLS07XG4gIH1cbiAgd2hpbGUgKHggPj0gMSkge1xuICAgIHggKj0gMC41O1xuICAgIGV4cCsrO1xuICB9XG4gIGlmIChuZWcpIHggPSAtIHg7XG4gIHJldHVybiBbMCwgeCwgZXhwXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9jb21wYXJlIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2Zsb2F0X2NvbXBhcmUgKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHJldHVybiAwO1xuICBpZiAoeCA8IHkpIHJldHVybiAtMTtcbiAgaWYgKHggPiB5KSByZXR1cm4gMTtcbiAgaWYgKHggPT09IHgpIHJldHVybiAxO1xuICBpZiAoeSA9PT0geSkgcmV0dXJuIC0xO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb3B5c2lnbl9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3B5c2lnbl9mbG9hdCAoeCwgeSkge1xuICBpZiAoeSA9PSAwKSB5ID0gMSAvIHk7XG4gIHggPSBNYXRoLmFicyh4KTtcbiAgcmV0dXJuICh5IDwgMCk/KC14KTp4O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NpZ25iaXRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfc2lnbmJpdF9mbG9hdCh4KSB7XG4gIGlmICh4ID09IDApIHggPSAxIC8geDtcbiAgcmV0dXJuICh4IDwgMCk/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2V4cG0xX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2V4cG0xX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmV4cG0xKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2V4cDJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZXhwMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLnBvdygyLCB4KTsgfVxuLy9Qcm92aWRlczogY2FtbF9sb2cxcF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9sb2cxcF9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzFwKHgpOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xvZzJfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMl9mbG9hdCh4KSB7IHJldHVybiBNYXRoLmxvZzIoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaHlwb3RfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfaHlwb3RfZmxvYXQgKHgsIHkpIHsgcmV0dXJuIE1hdGguaHlwb3QoeCwgeSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfbG9nMTBfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbG9nMTBfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGgubG9nMTAoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfY29zaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9jb3NoX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLmNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYWNvc2hfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYWNvc2hfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYWNvc2goeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfc2luaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9zaW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXNpbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXNpbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXNpbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfdGFuaF9mbG9hdCBjb25zdFxuZnVuY3Rpb24gY2FtbF90YW5oX2Zsb2F0ICh4KSB7IHJldHVybiBNYXRoLnRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfYXRhbmhfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfYXRhbmhfZmxvYXQgKHgpIHsgcmV0dXJuIE1hdGguYXRhbmgoeCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfcm91bmRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfcm91bmRfZmxvYXQgKHgpIHtcbiAgaWYgKHggPj0gMCkge1xuICAgIHZhciB5ID0gTWF0aC5mbG9vcih4KTtcbiAgICByZXR1cm4gKHggLSB5ID49IDAuNSk/KHkgKyAxKTp5XG4gIH0gZWxzZSB7XG4gICAgdmFyIHkgPSBNYXRoLmNlaWwoeCk7XG4gICAgcmV0dXJuICh5IC0geCA+PSAwLjUpPyh5IC0gMSk6eVxuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NicnRfZmxvYXQgY29uc3RcbmZ1bmN0aW9uIGNhbWxfY2JydF9mbG9hdCAoeCkgeyByZXR1cm4gTWF0aC5jYnJ0KHgpOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXJmX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2VyZl9mbG9hdCh4KSB7XG4gIHZhciBhMSA9IDAuMjU0ODI5NTkyO1xuICB2YXIgYTIgPSAtMC4yODQ0OTY3MzY7XG4gIHZhciBhMyA9IDEuNDIxNDEzNzQxO1xuICB2YXIgYTQgPSAtMS40NTMxNTIwMjc7XG4gIHZhciBhNSA9IDEuMDYxNDA1NDI5O1xuICB2YXIgcCA9IDAuMzI3NTkxMTtcblxuICB2YXIgc2lnbiA9IDE7XG4gIGlmICh4IDwgMCkge1xuICAgIHNpZ24gPSAtMTtcbiAgfVxuICB4ID0gTWF0aC5hYnMoeCk7XG4gIHZhciB0ID0gMS4wIC8gKDEuMCArIHAgKiB4KTtcbiAgdmFyIHkgPSAxLjAgLSAoKCgoYTUgKiB0ICsgYTQpICogdCArIGEzKSAqIHQgKyBhMikgKiB0ICsgYTEpICogdCAqIE1hdGguZXhwKC14ICogeCk7XG5cbiAgcmV0dXJuIHNpZ24gKiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VyZmNfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfZXJmX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2VyZmNfZmxvYXQoeCkge1xuICByZXR1cm4gMSAtIGNhbWxfZXJmX2Zsb2F0KHgpO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm1hX2Zsb2F0IGNvbnN0XG5mdW5jdGlvbiBjYW1sX2ZtYV9mbG9hdCh4LCB5LCB6KSB7XG4gIHZhciBTUExJVCA9IE1hdGgucG93KDIsIDI3KSArIDE7XG4gIHZhciBNSU5fVkFMVUUgPSBNYXRoLnBvdygyLCAtMTAyMik7XG4gIHZhciBFUFNJTE9OID0gTWF0aC5wb3coMiwgLTUyKTtcbiAgdmFyIEMgPSA0MTY7XG4gIHZhciBBID0gTWF0aC5wb3coMiwgK0MpO1xuICB2YXIgQiA9IE1hdGgucG93KDIsIC1DKTtcblxuICBmdW5jdGlvbiBtdWx0aXBseSAoYSwgYikge1xuICAgIHZhciBhdCA9IFNQTElUICogYTtcbiAgICB2YXIgYWhpID0gYXQgLSAoYXQgLSBhKTtcbiAgICB2YXIgYWxvID0gYSAtIGFoaTtcbiAgICB2YXIgYnQgPSBTUExJVCAqIGI7XG4gICAgdmFyIGJoaSA9IGJ0IC0gKGJ0IC0gYik7XG4gICAgdmFyIGJsbyA9IGIgLSBiaGk7XG4gICAgdmFyIHAgPSBhICogYjtcbiAgICB2YXIgZSA9ICgoYWhpICogYmhpIC0gcCkgKyBhaGkgKiBibG8gKyBhbG8gKiBiaGkpICsgYWxvICogYmxvO1xuICAgIHJldHVybiB7XG4gICAgICBwOiBwLFxuICAgICAgZTogZVxuICAgIH07XG4gIH07XG5cbiAgZnVuY3Rpb24gYWRkIChhLCBiKSB7XG4gICAgdmFyIHMgPSBhICsgYjtcbiAgICB2YXIgdiA9IHMgLSBhO1xuICAgIHZhciBlID0gKGEgLSAocyAtIHYpKSArIChiIC0gdik7XG4gICAgcmV0dXJuIHtcbiAgICAgIHM6IHMsXG4gICAgICBlOiBlXG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiBhZGp1c3QgKHgsIHkpIHtcbiAgICByZXR1cm4geCAhPT0gMCAmJiB5ICE9PSAwICYmIFNQTElUICogeCAtIChTUExJVCAqIHggLSB4KSA9PT0geCA/IHggKiAoMSArICh4IDwgMCA/IC0xIDogKzEpICogKHkgPCAwID8gLTEgOiArMSkgKiBFUFNJTE9OKSA6IHg7XG4gIH07XG5cbiAgaWYgKHggPT09IDAgfHwgeCAhPT0geCB8fCB4ID09PSArMSAvIDAgfHwgeCA9PT0gLTEgLyAwIHx8XG4gICAgICB5ID09PSAwIHx8IHkgIT09IHkgfHwgeSA9PT0gKzEgLyAwIHx8IHkgPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB4ICogeSArIHo7XG4gIH1cbiAgaWYgKHogPT09IDApIHtcbiAgICByZXR1cm4geCAqIHk7XG4gIH1cbiAgaWYgKHogIT09IHogfHwgeiA9PT0gKzEgLyAwIHx8IHogPT09IC0xIC8gMCkge1xuICAgIHJldHVybiB6O1xuICB9XG5cbiAgdmFyIHNjYWxlID0gMTtcbiAgd2hpbGUgKE1hdGguYWJzKHgpID4gQSkge1xuICAgIHNjYWxlICo9IEE7XG4gICAgeCAqPSBCO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA+IEEpIHtcbiAgICBzY2FsZSAqPSBBO1xuICAgIHkgKj0gQjtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDEgLyAwKSB7XG4gICAgcmV0dXJuIHggKiB5ICogc2NhbGU7XG4gIH1cbiAgd2hpbGUgKE1hdGguYWJzKHgpIDwgQikge1xuICAgIHNjYWxlICo9IEI7XG4gICAgeCAqPSBBO1xuICB9XG4gIHdoaWxlIChNYXRoLmFicyh5KSA8IEIpIHtcbiAgICBzY2FsZSAqPSBCO1xuICAgIHkgKj0gQTtcbiAgfVxuICBpZiAoc2NhbGUgPT09IDApIHtcbiAgICByZXR1cm4gejtcbiAgfVxuXG4gIHZhciB4cyA9IHg7XG4gIHZhciB5cyA9IHk7XG4gIHZhciB6cyA9IHogLyBzY2FsZTtcblxuICBpZiAoTWF0aC5hYnMoenMpID4gTWF0aC5hYnMoeHMgKiB5cykgKiA0IC8gRVBTSUxPTikge1xuICAgIHJldHVybiB6O1xuICB9XG4gIGlmIChNYXRoLmFicyh6cykgPCBNYXRoLmFicyh4cyAqIHlzKSAqIEVQU0lMT04gLyA0ICogRVBTSUxPTiAvIDQpIHtcbiAgICB6cyA9ICh6IDwgMCA/IC0xIDogKzEpICogTUlOX1ZBTFVFO1xuICB9XG5cbiAgdmFyIHh5ID0gbXVsdGlwbHkoeHMsIHlzKTtcbiAgdmFyIHMgPSBhZGQoeHkucCwgenMpO1xuICB2YXIgdSA9IGFkZCh4eS5lLCBzLmUpO1xuICB2YXIgaSA9IGFkZChzLnMsIHUucyk7XG5cbiAgdmFyIGYgPSBpLnMgKyBhZGp1c3QoaS5lLCB1LmUpO1xuICBpZiAoZiA9PT0gMCkge1xuICAgIHJldHVybiBmO1xuICB9XG5cbiAgdmFyIGZzID0gZiAqIHNjYWxlO1xuICBpZiAoTWF0aC5hYnMoZnMpID4gTUlOX1ZBTFVFKSB7XG4gICAgcmV0dXJuIGZzO1xuICB9XG5cbiAgLy8gSXQgaXMgcG9zc2libGUgdGhhdCB0aGVyZSB3YXMgZXh0cmEgcm91bmRpbmcgZm9yIGEgZGVub3JtYWxpemVkIHZhbHVlLlxuICByZXR1cm4gZnMgKyBhZGp1c3QoZiAtIGZzIC8gc2NhbGUsIGkuZSkgKiBzY2FsZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mb3JtYXRfZmxvYXQgY29uc3Rcbi8vUmVxdWlyZXM6IGNhbWxfcGFyc2VfZm9ybWF0LCBjYW1sX2ZpbmlzaF9mb3JtYXR0aW5nXG5mdW5jdGlvbiBjYW1sX2Zvcm1hdF9mbG9hdCAoZm10LCB4KSB7XG4gIGZ1bmN0aW9uIHRvRml4ZWQoeCxkcCkge1xuICAgIGlmIChNYXRoLmFicyh4KSA8IDEuMCkge1xuICAgICAgcmV0dXJuIHgudG9GaXhlZChkcCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlID0gcGFyc2VJbnQoeC50b1N0cmluZygpLnNwbGl0KCcrJylbMV0pO1xuICAgICAgaWYgKGUgPiAyMCkge1xuICAgICAgICBlIC09IDIwO1xuICAgICAgICB4IC89IE1hdGgucG93KDEwLGUpO1xuICAgICAgICB4ICs9IChuZXcgQXJyYXkoZSsxKSkuam9pbignMCcpO1xuICAgICAgICBpZihkcCA+IDApIHtcbiAgICAgICAgICB4ID0geCArICcuJyArIChuZXcgQXJyYXkoZHArMSkpLmpvaW4oJzAnKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geDtcbiAgICAgIH1cbiAgICAgIGVsc2UgcmV0dXJuIHgudG9GaXhlZChkcClcbiAgICB9XG4gIH1cbiAgdmFyIHMsIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICB2YXIgcHJlYyA9IChmLnByZWMgPCAwKT82OmYucHJlYztcbiAgaWYgKHggPCAwIHx8ICh4ID09IDAgJiYgMS94ID09IC1JbmZpbml0eSkpIHsgZi5zaWduID0gLTE7IHggPSAteDsgfVxuICBpZiAoaXNOYU4oeCkpIHsgcyA9IFwibmFuXCI7IGYuZmlsbGVyID0gJyAnOyB9XG4gIGVsc2UgaWYgKCFpc0Zpbml0ZSh4KSkgeyBzID0gXCJpbmZcIjsgZi5maWxsZXIgPSAnICc7IH1cbiAgZWxzZVxuICAgIHN3aXRjaCAoZi5jb252KSB7XG4gICAgY2FzZSAnZSc6XG4gICAgICB2YXIgcyA9IHgudG9FeHBvbmVudGlhbChwcmVjKTtcbiAgICAgIC8vIGV4cG9uZW50IHNob3VsZCBiZSBhdCBsZWFzdCB0d28gZGlnaXRzXG4gICAgICB2YXIgaSA9IHMubGVuZ3RoO1xuICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgIHMgPSBzLnNsaWNlICgwLCBpIC0gMSkgKyAnMCcgKyBzLnNsaWNlIChpIC0gMSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlICdmJzpcbiAgICAgIHMgPSB0b0ZpeGVkKHgsIHByZWMpOyBicmVhaztcbiAgICBjYXNlICdnJzpcbiAgICAgIHByZWMgPSBwcmVjP3ByZWM6MTtcbiAgICAgIHMgPSB4LnRvRXhwb25lbnRpYWwocHJlYyAtIDEpO1xuICAgICAgdmFyIGogPSBzLmluZGV4T2YoJ2UnKTtcbiAgICAgIHZhciBleHAgPSArcy5zbGljZShqICsgMSk7XG4gICAgICBpZiAoZXhwIDwgLTQgfHwgeCA+PSAxZTIxIHx8IHgudG9GaXhlZCgwKS5sZW5ndGggPiBwcmVjKSB7XG4gICAgICAgIC8vIHJlbW92ZSB0cmFpbGluZyB6ZXJvZXNcbiAgICAgICAgdmFyIGkgPSBqIC0gMTsgd2hpbGUgKHMuY2hhckF0KGkpID09ICcwJykgaS0tO1xuICAgICAgICBpZiAocy5jaGFyQXQoaSkgPT0gJy4nKSBpLS07XG4gICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKSArIHMuc2xpY2Uoaik7XG4gICAgICAgIGkgPSBzLmxlbmd0aDtcbiAgICAgICAgaWYgKHMuY2hhckF0KGkgLSAzKSA9PSAnZScpXG4gICAgICAgICAgcyA9IHMuc2xpY2UgKDAsIGkgLSAxKSArICcwJyArIHMuc2xpY2UgKGkgLSAxKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgcCA9IHByZWM7XG4gICAgICAgIGlmIChleHAgPCAwKSB7IHAgLT0gZXhwICsgMTsgcyA9IHgudG9GaXhlZChwKTsgfVxuICAgICAgICBlbHNlIHdoaWxlIChzID0geC50b0ZpeGVkKHApLCBzLmxlbmd0aCA+IHByZWMgKyAxKSBwLS07XG4gICAgICAgIGlmIChwKSB7XG4gICAgICAgICAgLy8gcmVtb3ZlIHRyYWlsaW5nIHplcm9lc1xuICAgICAgICAgIHZhciBpID0gcy5sZW5ndGggLSAxOyB3aGlsZSAocy5jaGFyQXQoaSkgPT0gJzAnKSBpLS07XG4gICAgICAgICAgaWYgKHMuY2hhckF0KGkpID09ICcuJykgaS0tO1xuICAgICAgICAgIHMgPSBzLnNsaWNlKDAsIGkgKyAxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdF9vZl9zdHJpbmcgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9zdHJpbmcocykge1xuICB2YXIgcmVzO1xuICBzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhzKVxuICByZXMgPSArcztcbiAgaWYgKChzLmxlbmd0aCA+IDApICYmIChyZXMgPT09IHJlcykpIHJldHVybiByZXM7XG4gIHMgPSBzLnJlcGxhY2UoL18vZyxcIlwiKTtcbiAgcmVzID0gK3M7XG4gIGlmICgoKHMubGVuZ3RoID4gMCkgJiYgKHJlcyA9PT0gcmVzKSkgfHwgL15bKy1dP25hbiQvaS50ZXN0KHMpKSByZXR1cm4gcmVzO1xuICB2YXIgbSA9IC9eICooWystXT8pMHgoWzAtOWEtZl0rKVxcLj8oWzAtOWEtZl0qKShwKFsrLV0/WzAtOV0rKSk/L2kuZXhlYyhzKTtcbiAgLy8gICAgICAgICAgMSAgICAgICAgMiAgICAgICAgICAgICAzICAgICAgICAgICA1XG4gIGlmKG0pe1xuICAgIHZhciBtMyA9IG1bM10ucmVwbGFjZSgvMCskLywnJyk7XG4gICAgdmFyIG1hbnRpc3NhID0gcGFyc2VJbnQobVsxXSArIG1bMl0gKyBtMywgMTYpO1xuICAgIHZhciBleHBvbmVudCA9IChtWzVdfDApIC0gNCptMy5sZW5ndGg7XG4gICAgcmVzID0gbWFudGlzc2EgKiBNYXRoLnBvdygyLCBleHBvbmVudCk7XG4gICAgcmV0dXJuIHJlcztcbiAgfVxuICBpZigvXlxcKz9pbmYoaW5pdHkpPyQvaS50ZXN0KHMpKSByZXR1cm4gSW5maW5pdHk7XG4gIGlmKC9eLWluZihpbml0eSk/JC9pLnRlc3QocykpIHJldHVybiAtSW5maW5pdHk7XG4gIGNhbWxfZmFpbHdpdGgoXCJmbG9hdF9vZl9zdHJpbmdcIik7XG59XG4iLCIvKlxuVG8gZGVhbCB3aXRoIGVmZmVjdHMsIHRoZSBleGVjdXRpb24gY29udGV4dCBpcyBpbnR1aXRpdmVseSBjb21wb3NlZCBvZlxuYSBzdGFjayBvZiBmaWJlcnMuIEVhY2ggZmliZXIgaGFzIGEgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4ob25lLWFyZ3VtZW50IEphdmFTY3JpcHQgZnVuY3Rpb24pLCBhIHN0YWNrIG9mIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmRcbmEgdHJpcGxlIG9mIGhhbmRsZXJzLCB3aGljaCBhcmUgaW52b2tlZCB3aGVuIHRoZSBmaWJlciB0ZXJtaW5hdGVzXG4oZWl0aGVyIHdpdGggYSB2YWx1ZSBvciBhbiBleGNlcHRpb24pIG9yIHdoZW4gYW4gZWZmZWN0IGlzIHBlcmZvcm1lZC5cblRoZSBsb3ctbGV2ZWwgY29udGludWF0aW9uIG9mIHRoZSB0b3Btb3N0IGZpYmVyICh3aGljaCBpcyBjdXJyZW50bHlcbmV4ZWN1dGluZykgaXMgcGFzc2VkIGZyb20gZnVuY3Rpb24gdG8gZnVuY3Rpb24gYXMgYW4gYWRkaXRpb25hbFxuYXJndW1lbnQuIEl0cyBzdGFjayBvZiBleGNlcHRpb24gaGFuZGxlcnMgaXMgc3RvcmVkIGluXG5bY2FtbF9leG5fc3RhY2tdLiBFeGNlcHRpb24gaGFuZGxlcnMgYXJlIHB1c2hlZCBpbnRvIHRoaXMgc3RhY2sgd2hlblxuZW50ZXJpbmcgYSBbdHJ5IC4uLiB3aXRoIC4uLl0gYW5kIHBvcHBlZCBvbiBleGl0LiBUaGVuLCBoYW5kbGVycyBhbmRcbnRoZSByZW1haW5pbmcgZmliZXJzIGFyZSBzdG9yZWQgaW4gW2NhbWxfZmliZXJfc3RhY2tdLiBUbyBpbnN0YWxsIGFuXG5lZmZlY3QgaGFuZGxlciwgd2UgcHVzaCBhIG5ldyBmaWJlciBpbnRvIHRoZSBleGVjdXRpb24gY29udGV4dC5cblxuV2UgaGF2ZSBiYXNpY2FsbHkgdGhlIGZvbGxvd2luZyB0eXBlIGZvciByZWlmaWVkIGNvbnRpbnVhdGlvbnMgKHR5cGVcbltjb250aW51YXRpb25dIGluIG1vZHVsZSBbRWZmZWN0XSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSk6XG5cbiAgdHlwZSAoJ2EsICdiKSBjb250aW51YXRpb24gPSAoJ2EsICdiKSBzdGFjayByZWZcblxuICBhbmQgKF8sIF8pIHN0YWNrID1cbiAgICAgIENvbnMgOiAoJ2IgLT4gdW5pdCkgKiAgICAgICAgICAgICAoKiBsb3ctbGV2ZWwgY29udGludWF0aW9uICopXG4gICAgICAgICAgICAgKGV4biAtPiB1bml0KSBsaXN0ICogICAgICAgKCogZXhjZXB0aW9uIGhhbmRsZXJzICopXG4gICAgICAgICAgICAgKCdiLCAnYykgaGFuZGxlciAqXG4gICAgICAgICAgICAgKCdhLCAnYikgc3RhY2tcbiAgICAgICAgICAgICAtPiAoJ2EsICdjKSBzdGFja1xuICAgIHwgRW1wdHkgOiAoJ2EsICdhKSBzdGFja1xuXG4gIGFuZCAoJ2EsJ2IpIGhhbmRsZXIgPSAgICgqIEFzIGluIG1vZHVsZSBFZmZlY3QgZnJvbSB0aGUgc3RhbmRhcmQgbGlicmFyeSAqKVxuICAgIHsgcmV0YzogJ2EgLT4gJ2I7XG4gICAgICBleG5jOiBleG4gLT4gJ2I7XG4gICAgICBlZmZjOiAnYy4nYyBFZmZlY3QudCAtPiAoKCdjLCdiKSBjb250aW51YXRpb24gLT4gJ2IpIG9wdGlvbiB9XG5cbkNvbnRpbnVhdGlvbnMgYXJlIG9uZS1zaG90LiBBIGNvbnRpbnVhdGlvbiBbcmVmIEVtcHR5XSBoYXMgYWxyZWFkeVxuYmVlbiByZXN1bWVkLlxuXG5BIGNvbnRpbnVhdGlvbiBpcyBiYXNpY2FsbHkgY29tcG9zZWQgb2YgYSBsaXN0IG9mIGZpYmVycywgd2hpY2ggZWFjaFxuaGFzIGl0cyBsb3ctbGV2ZWwgY29udGludWF0aW9uLCBpdHMgc3RhY2sgb2YgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZCBhXG50cmlwbGUgb2YgaGFuZGxlcnMgdG8gZGVhbCB3aXRoIHdoZW4gdGhlIGZpYmVyIHRlcm1pbmF0ZXMgb3IgYW5cbmVmZmVjdCBpcyBwZXJmb3JtZWQuIFdoZW4gcmVzdW1pbmcgYSBjb250aW51YXRpb24sIHRoZSBpbm5lcm1vc3QgZmliZXJcbmlzIHJlc3VtZWQgZmlyc3QuXG5cblRoZSBoYW5kbGVycyBhcmUgQ1BTLXRyYW5zZm9ybWVkIGZ1bmN0aW9uczogdGhleSBhY3R1YWxseSB0YWtlIGFuXG5hZGRpdGlvbmFsIHBhcmFtZXRlciB3aGljaCBpcyB0aGUgY3VycmVudCBsb3ctbGV2ZWwgY29udGludWF0aW9uLlxuKi9cblxuLy9Qcm92aWRlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaXMgYW4gT0NhbWwgbGlzdCBvZiBleGNlcHRpb24gaGFuZGxlcnNcbnZhciBjYW1sX2V4bl9zdGFjayA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcHVzaF90cmFwXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wdXNoX3RyYXAoaGFuZGxlcikge1xuICBjYW1sX2V4bl9zdGFjaz1bMCxoYW5kbGVyLGNhbWxfZXhuX3N0YWNrXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wb3BfdHJhcFxuLy9SZXF1aXJlczogY2FtbF9leG5fc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcG9wX3RyYXAoKSB7XG4gIGlmICghY2FtbF9leG5fc3RhY2spIHJldHVybiBmdW5jdGlvbih4KXt0aHJvdyB4O31cbiAgdmFyIGggPSBjYW1sX2V4bl9zdGFja1sxXTtcbiAgY2FtbF9leG5fc3RhY2s9Y2FtbF9leG5fc3RhY2tbMl07XG4gIHJldHVybiBoXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbi8vIFRoaXMgaGFzIHRoZSBzaGFwZSB7aCwgcjp7aywgeCwgZX19IHdoZXJlIGggaXMgYSB0cmlwbGUgb2YgaGFuZGxlcnNcbi8vIChzZWUgZWZmZWN0LmpzKSBhbmQgaywgeCBhbmQgZSBhcmUgdGhlIHNhdmVkIGNvbnRpbnVhdGlvbixcbi8vIGV4Y2VwdGlvbiBzdGFjayBhbmQgZmliZXIgc3RhY2sgb2YgdGhlIHBhcmVudCBmaWJlci5cbnZhciBjYW1sX2ZpYmVyX3N0YWNrO1xuXG4vL1Byb3ZpZGVzOmNhbWxfcmVzdW1lX3N0YWNrXG4vL1JlcXVpcmVzOiBjYW1sX25hbWVkX3ZhbHVlLCBjYW1sX3JhaXNlX2NvbnN0YW50LCBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9yZXN1bWVfc3RhY2soc3RhY2ssIGspIHtcbiAgaWYgKCFzdGFjaykgY2FtbF9yYWlzZV9jb25zdGFudFxuICAgICAgICAgICAgICAgICAoY2FtbF9uYW1lZF92YWx1ZShcIkVmZmVjdC5Db250aW51YXRpb25fYWxyZWFkeV9yZXN1bWVkXCIpKTtcbiAgLy8gVXBkYXRlIHRoZSBleGVjdXRpb24gY29udGV4dCB3aXRoIHRoZSBzdGFjayBvZiBmaWJlcnMgaW4gW3N0YWNrXSBpblxuICAvLyBvcmRlciB0byByZXN1bWUgdGhlIGNvbnRpbnVhdGlvblxuICBkbyB7XG4gICAgY2FtbF9maWJlcl9zdGFjayA9XG4gICAgICB7aDpzdGFja1szXSwgcjp7azprLCB4OmNhbWxfZXhuX3N0YWNrLCBlOmNhbWxfZmliZXJfc3RhY2t9fTtcbiAgICBrID0gc3RhY2tbMV07XG4gICAgY2FtbF9leG5fc3RhY2sgPSBzdGFja1syXTtcbiAgICBzdGFjayA9IHN0YWNrWzRdO1xuICB9IHdoaWxlIChzdGFjaylcbiAgcmV0dXJuIGs7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9wX2ZpYmVyXG4vL1JlcXVpcmVzOiBjYW1sX2V4bl9zdGFjaywgY2FtbF9maWJlcl9zdGFja1xuLy9JZjogZWZmZWN0c1xuZnVuY3Rpb24gY2FtbF9wb3BfZmliZXIoKSB7XG4gIC8vIE1vdmUgdG8gdGhlIHBhcmVudCBmaWJlciwgcmV0dXJuaW5nIHRoZSBwYXJlbnQncyBsb3ctbGV2ZWwgY29udGludWF0aW9uXG4gIHZhciByZW0gPSBjYW1sX2ZpYmVyX3N0YWNrLnI7XG4gIGNhbWxfZXhuX3N0YWNrID0gcmVtLng7XG4gIGNhbWxfZmliZXJfc3RhY2sgPSByZW0uZTtcbiAgcmV0dXJuIHJlbS5rO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3BlcmZvcm1fZWZmZWN0XG4vL1JlcXVpcmVzOiBjYW1sX3BvcF9maWJlciwgY2FtbF9zdGFja19jaGVja19kZXB0aCwgY2FtbF90cmFtcG9saW5lX3JldHVybiwgY2FtbF9leG5fc3RhY2ssIGNhbWxfZmliZXJfc3RhY2tcbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfcGVyZm9ybV9lZmZlY3QoZWZmLCBjb250LCBrMCkge1xuICAvLyBBbGxvY2F0ZSBhIGNvbnRpbnVhdGlvbiBpZiB3ZSBkb24ndCBhbHJlYWR5IGhhdmUgb25lXG4gIGlmICghY29udCkgY29udCA9IFsyNDUgLypjb250aW51YXRpb24qLywgMF07XG4gIC8vIEdldCBjdXJyZW50IGVmZmVjdCBoYW5kbGVyXG4gIHZhciBoYW5kbGVyID0gY2FtbF9maWJlcl9zdGFjay5oWzNdO1xuICAvLyBDb25zIHRoZSBjdXJyZW50IGZpYmVyIG9udG8gdGhlIGNvbnRpbnVhdGlvbjpcbiAgLy8gICBjb250IDo9IENvbnMgKGssIGV4bl9zdGFjaywgaGFuZGxlcnMsICFjb250KVxuICBjb250WzFdID0gWzAsazAsY2FtbF9leG5fc3RhY2ssY2FtbF9maWJlcl9zdGFjay5oLGNvbnRbMV1dO1xuICAvLyBNb3ZlIHRvIHBhcmVudCBmaWJlciBhbmQgZXhlY3V0ZSB0aGUgZWZmZWN0IGhhbmRsZXIgdGhlcmVcbiAgLy8gVGhlIGhhbmRsZXIgaXMgZGVmaW5lZCBpbiBTdGRsaWIuRWZmZWN0LCBzbyB3ZSBrbm93IHRoYXQgdGhlIGFyaXR5IG1hdGNoZXNcbiAgdmFyIGsxID0gY2FtbF9wb3BfZmliZXIoKTtcbiAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9oYW5kbGVyKGVmZixjb250LGsxLGsxKVxuICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oaGFuZGxlcixbZWZmLGNvbnQsazEsazFdKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hbGxvY19zdGFja1xuLy9SZXF1aXJlczogY2FtbF9wb3BfZmliZXIsIGNhbWxfZmliZXJfc3RhY2ssIGNhbWxfY2FsbF9nZW4sIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgsIGNhbWxfdHJhbXBvbGluZV9yZXR1cm5cbi8vSWY6IGVmZmVjdHNcbmZ1bmN0aW9uIGNhbWxfYWxsb2Nfc3RhY2soaHYsIGh4LCBoZikge1xuICBmdW5jdGlvbiBjYWxsKGksIHgpIHtcbiAgICB2YXIgZj1jYW1sX2ZpYmVyX3N0YWNrLmhbaV07XG4gICAgdmFyIGFyZ3MgPSBbeCwgY2FtbF9wb3BfZmliZXIoKV07XG4gICAgcmV0dXJuIGNhbWxfc3RhY2tfY2hlY2tfZGVwdGgoKT9jYW1sX2NhbGxfZ2VuKGYsYXJncylcbiAgICAgICAgICAgOmNhbWxfdHJhbXBvbGluZV9yZXR1cm4oZixhcmdzKTtcbiAgfVxuICBmdW5jdGlvbiBodmFsKHgpIHtcbiAgICAvLyBDYWxsIFtodl0gaW4gdGhlIHBhcmVudCBmaWJlclxuICAgIHJldHVybiBjYWxsKDEsIHgpO1xuICB9XG4gIGZ1bmN0aW9uIGhleG4oZSkge1xuICAgIC8vIENhbGwgW2h4XSBpbiB0aGUgcGFyZW50IGZpYmVyXG4gICAgcmV0dXJuIGNhbGwoMiwgZSk7XG4gIH1cbiAgcmV0dXJuIFswLCBodmFsLCBbMCwgaGV4biwgMF0sIFswLCBodiwgaHgsIGhmXSwgMF07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2Nfc3RhY2tcbi8vSWY6ICFlZmZlY3RzXG5mdW5jdGlvbiBjYW1sX2FsbG9jX3N0YWNrKGh2LCBoeCwgaGYpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY29udGludWF0aW9uX3VzZV9ub2V4Y1xuZnVuY3Rpb24gY2FtbF9jb250aW51YXRpb25fdXNlX25vZXhjKGNvbnQpIHtcbiAgdmFyIHN0YWNrPWNvbnRbMV07XG4gIGNvbnRbMV09MDtcbiAgcmV0dXJuIHN0YWNrO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2VfYW5kX3VwZGF0ZV9oYW5kbGVyX25vZXhjXG4vL1JlcXVpcmVzOiBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGNcbmZ1bmN0aW9uIGNhbWxfY29udGludWF0aW9uX3VzZV9hbmRfdXBkYXRlX2hhbmRsZXJfbm9leGMoY29udCwgaHZhbCwgaGV4biwgaGVmZikge1xuICB2YXIgc3RhY2sgPSBjYW1sX2NvbnRpbnVhdGlvbl91c2Vfbm9leGMoY29udCk7XG4gIHN0YWNrWzNdID0gWzAsIGh2YWwsIGhleG4sIGhlZmZdO1xuICByZXR1cm4gc3RhY2s7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2tcbmZ1bmN0aW9uIGNhbWxfZ2V0X2NvbnRpbnVhdGlvbl9jYWxsc3RhY2sgKCkgeyByZXR1cm4gWzBdOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX25ld1xuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fbmV3KHVuaXQpe1xuICAgIHJldHVybiB7Y29uZGl0aW9uOjF9O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2NvbmRpdGlvbl93YWl0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl93YWl0KHQsbXV0ZXh0KXtcbiAgICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jb25kaXRpb25fYnJvYWRjYXN0XG5mdW5jdGlvbiBjYW1sX21sX2NvbmRpdGlvbl9icm9hZGNhc3QodCl7XG4gICAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY29uZGl0aW9uX3NpZ25hbFxuZnVuY3Rpb24gY2FtbF9tbF9jb25kaXRpb25fc2lnbmFsKHQpe1xuICAgIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBqc29vX2VmZmVjdF9ub3Rfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vLyFJZjogZWZmZWN0c1xuZnVuY3Rpb24ganNvb19lZmZlY3Rfbm90X3N1cHBvcnRlZCgpe1xuICBjYW1sX2ZhaWx3aXRoKFwiRWZmZWN0IGhhbmRsZXJzIGFyZSBub3Qgc3VwcG9ydGVkXCIpO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy9Qcm92aWRlczogZnNfbm9kZV9zdXBwb3J0ZWRcbmZ1bmN0aW9uIGZzX25vZGVfc3VwcG9ydGVkICgpIHtcbiAgcmV0dXJuIChcbiAgICB0eXBlb2YgZ2xvYmFsVGhpcy5wcm9jZXNzICE9PSAndW5kZWZpbmVkJ1xuICAgICAgJiYgdHlwZW9mIGdsb2JhbFRoaXMucHJvY2Vzcy52ZXJzaW9ucyAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICYmIHR5cGVvZiBnbG9iYWxUaGlzLnByb2Nlc3MudmVyc2lvbnMubm9kZSAhPT0gJ3VuZGVmaW5lZCcpXG59XG4vL1Byb3ZpZGVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9JZjogYnJvd3NlclxuZnVuY3Rpb24gZnNfbm9kZV9zdXBwb3J0ZWQgKCkge1xuICByZXR1cm4gZmFsc2Vcbn1cblxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vUmVxdWlyZXM6IE1sTm9kZUZkLCBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV93aXRoX2FyZ3Ncbi8vUmVxdWlyZXM6IG1ha2VfdW5peF9lcnJfYXJncywgY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbmZ1bmN0aW9uIE1sTm9kZURldmljZShyb290KSB7XG4gIHRoaXMuZnMgPSByZXF1aXJlKCdmcycpO1xuICB0aGlzLnJvb3QgPSByb290O1xufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ubSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuICh0aGlzLnJvb3QgKyBuYW1lKTtcbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuZXhpc3RzID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmV4aXN0c1N5bmModGhpcy5ubShuYW1lKSk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMuc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNGaWxlKCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUubWtkaXIgPSBmdW5jdGlvbihuYW1lLCBtb2RlLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5ta2RpclN5bmModGhpcy5ubShuYW1lKSx7bW9kZTptb2RlfSk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5ybWRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnJtZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gMFxuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRkaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIHRoaXMuZnMucmVhZGRpclN5bmModGhpcy5ubShuYW1lKSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuaXNfZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLnN0YXRTeW5jKHRoaXMubm0obmFtZSkpLmlzRGlyZWN0b3J5KCk/MTowO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUudW5saW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBiID0gdGhpcy5mcy5leGlzdHNTeW5jKHRoaXMubm0obmFtZSkpPzE6MDtcbiAgICB0aGlzLmZzLnVubGlua1N5bmModGhpcy5ubShuYW1lKSk7XG4gICAgcmV0dXJuIGI7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbiA9IGZ1bmN0aW9uKG5hbWUsIGYsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIGNvbnN0cyA9IHJlcXVpcmUoJ2NvbnN0YW50cycpO1xuICB2YXIgcmVzID0gMDtcbiAgZm9yKHZhciBrZXkgaW4gZil7XG4gICAgc3dpdGNoKGtleSl7XG4gICAgY2FzZSBcInJkb25seVwiICA6IHJlcyB8PSBjb25zdHMuT19SRE9OTFk7IGJyZWFrO1xuICAgIGNhc2UgXCJ3cm9ubHlcIiAgOiByZXMgfD0gY29uc3RzLk9fV1JPTkxZOyBicmVhaztcbiAgICBjYXNlIFwiYXBwZW5kXCIgIDpcbiAgICAgIHJlcyB8PSBjb25zdHMuT19XUk9OTFkgfCBjb25zdHMuT19BUFBFTkQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY3JlYXRlXCIgICA6IHJlcyB8PSBjb25zdHMuT19DUkVBVDsgICAgYnJlYWs7XG4gICAgY2FzZSBcInRydW5jYXRlXCIgOiByZXMgfD0gY29uc3RzLk9fVFJVTkM7ICAgIGJyZWFrO1xuICAgIGNhc2UgXCJleGNsXCIgICAgIDogcmVzIHw9IGNvbnN0cy5PX0VYQ0w7ICAgICBicmVhaztcbiAgICBjYXNlIFwiYmluYXJ5XCIgICA6IHJlcyB8PSBjb25zdHMuT19CSU5BUlk7ICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRcIiAgICAgOiByZXMgfD0gY29uc3RzLk9fVEVYVDsgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJub25ibG9ja1wiIDogcmVzIHw9IGNvbnN0cy5PX05PTkJMT0NLOyBicmVhaztcbiAgICB9XG4gIH1cbiAgdHJ5IHtcbiAgICB2YXIgZmQgPSB0aGlzLmZzLm9wZW5TeW5jKHRoaXMubm0obmFtZSksIHJlcyk7XG4gICAgdmFyIGlzQ2hhcmFjdGVyRGV2aWNlID0gdGhpcy5mcy5sc3RhdFN5bmModGhpcy5ubShuYW1lKSkuaXNDaGFyYWN0ZXJEZXZpY2UoKTtcbiAgICBmLmlzQ2hhcmFjdGVyRGV2aWNlID0gaXNDaGFyYWN0ZXJEZXZpY2U7XG4gICAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yZW5hbWUgPSBmdW5jdGlvbihvLCBuLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5yZW5hbWVTeW5jKHRoaXMubm0obyksIHRoaXMubm0obikpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnN0YXQgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHRyeSB7XG4gICAgdmFyIGpzX3N0YXRzID0gdGhpcy5mcy5zdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5sc3RhdCA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB2YXIganNfc3RhdHMgPSB0aGlzLmZzLmxzdGF0U3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgICByZXR1cm4gdGhpcy5zdGF0c19mcm9tX2pzKGpzX3N0YXRzKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5zeW1saW5rID0gZnVuY3Rpb24odG9fZGlyLCB0YXJnZXQsIHBhdGgsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICB0aGlzLmZzLnN5bWxpbmtTeW5jKHRoaXMubm0odGFyZ2V0KSwgdGhpcy5ubShwYXRoKSwgdG9fZGlyID8gJ2RpcicgOiAnZmlsZScpO1xuICAgIHJldHVybiAwO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICB0aGlzLnJhaXNlX25vZGVqc19lcnJvcihlcnIsIHJhaXNlX3VuaXgpO1xuICB9XG59XG5NbE5vZGVEZXZpY2UucHJvdG90eXBlLnJlYWRsaW5rID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB0cnkge1xuICAgIHZhciBsaW5rID0gdGhpcy5mcy5yZWFkbGlua1N5bmModGhpcy5ubShuYW1lKSwgJ3V0ZjgnKTtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcobGluayk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHRoaXMucmFpc2Vfbm9kZWpzX2Vycm9yKGVyciwgcmFpc2VfdW5peCk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUub3BlbmRpciA9IGZ1bmN0aW9uKG5hbWUsIHJhaXNlX3VuaXgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gdGhpcy5mcy5vcGVuZGlyU3luYyh0aGlzLm5tKG5hbWUpKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgdGhpcy5yYWlzZV9ub2RlanNfZXJyb3IoZXJyLCByYWlzZV91bml4KTtcbiAgfVxufVxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5yYWlzZV9ub2RlanNfZXJyb3IgPSBmdW5jdGlvbihlcnIsIHJhaXNlX3VuaXgpIHtcbiAgdmFyIHVuaXhfZXJyb3IgPSBjYW1sX25hbWVkX3ZhbHVlKFwiVW5peC5Vbml4X2Vycm9yXCIpO1xuICBpZiAocmFpc2VfdW5peCAmJiB1bml4X2Vycm9yKSB7XG4gICAgdmFyIGFyZ3MgPSBtYWtlX3VuaXhfZXJyX2FyZ3MoZXJyLmNvZGUsIGVyci5zeXNjYWxsLCBlcnIucGF0aCwgZXJyLmVycm5vKTtcbiAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZURldmljZS5wcm90b3R5cGUuc3RhdHNfZnJvbV9qcyA9IGZ1bmN0aW9uKGpzX3N0YXRzKSB7XG4gIC8qID09PVVuaXguZmlsZV9raW5kPT09XG4gICAqIHR5cGUgZmlsZV9raW5kID1cbiAgICogICAgIFNfUkVHICAgICAgICAgICAgICAgICAgICAgICAoKiogUmVndWxhciBmaWxlICopXG4gICAqICAgfCBTX0RJUiAgICAgICAgICAgICAgICAgICAgICAgKCoqIERpcmVjdG9yeSAqKVxuICAgKiAgIHwgU19DSFIgICAgICAgICAgICAgICAgICAgICAgICgqKiBDaGFyYWN0ZXIgZGV2aWNlICopXG4gICAqICAgfCBTX0JMSyAgICAgICAgICAgICAgICAgICAgICAgKCoqIEJsb2NrIGRldmljZSAqKVxuICAgKiAgIHwgU19MTksgICAgICAgICAgICAgICAgICAgICAgICgqKiBTeW1ib2xpYyBsaW5rICopXG4gICAqICAgfCBTX0ZJRk8gICAgICAgICAgICAgICAgICAgICAgKCoqIE5hbWVkIHBpcGUgKilcbiAgICogICB8IFNfU09DSyAgICAgICAgICAgICAgICAgICAgICAoKiogU29ja2V0ICopXG4gICAqL1xuICB2YXIgZmlsZV9raW5kO1xuICBpZiAoanNfc3RhdHMuaXNGaWxlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAwO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzRGlyZWN0b3J5KCkpIHtcbiAgICBmaWxlX2tpbmQgPSAxO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQ2hhcmFjdGVyRGV2aWNlKCkpIHtcbiAgICBmaWxlX2tpbmQgPSAyO1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzQmxvY2tEZXZpY2UoKSkge1xuICAgIGZpbGVfa2luZCA9IDM7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNTeW1ib2xpY0xpbmsoKSkge1xuICAgIGZpbGVfa2luZCA9IDQ7XG4gIH0gZWxzZSBpZiAoanNfc3RhdHMuaXNGSUZPKCkpIHtcbiAgICBmaWxlX2tpbmQgPSA1O1xuICB9IGVsc2UgaWYgKGpzX3N0YXRzLmlzU29ja2V0KCkpIHtcbiAgICBmaWxlX2tpbmQgPSA2O1xuICB9XG4gIC8qID09PVVuaXguc3RhdHM9PT1cbiAgICogdHlwZSBzdGF0cyA9XG4gICAqICB7IHN0X2RldiA6IGludDsgICAgICAgICAgICAgICAoKiogRGV2aWNlIG51bWJlciAqKVxuICAgKiAgICBzdF9pbm8gOiBpbnQ7ICAgICAgICAgICAgICAgKCoqIElub2RlIG51bWJlciAqKVxuICAgKiAgICBzdF9raW5kIDogZmlsZV9raW5kOyAgICAgICAgKCoqIEtpbmQgb2YgdGhlIGZpbGUgKilcbiAgICogICAgc3RfcGVybSA6IGZpbGVfcGVybTsgICAgICAgICgqKiBBY2Nlc3MgcmlnaHRzICopXG4gICAqICAgIHN0X25saW5rIDogaW50OyAgICAgICAgICAgICAoKiogTnVtYmVyIG9mIGxpbmtzICopXG4gICAqICAgIHN0X3VpZCA6IGludDsgICAgICAgICAgICAgICAoKiogVXNlciBpZCBvZiB0aGUgb3duZXIgKilcbiAgICogICAgc3RfZ2lkIDogaW50OyAgICAgICAgICAgICAgICgqKiBHcm91cCBJRCBvZiB0aGUgZmlsZSdzIGdyb3VwICopXG4gICAqICAgIHN0X3JkZXYgOiBpbnQ7ICAgICAgICAgICAgICAoKiogRGV2aWNlIElEIChpZiBzcGVjaWFsIGZpbGUpICopXG4gICAqICAgIHN0X3NpemUgOiBpbnQ7ICAgICAgICAgICAgICAoKiogU2l6ZSBpbiBieXRlcyAqKVxuICAgKiAgICBzdF9hdGltZSA6IGZsb2F0OyAgICAgICAgICAgKCoqIExhc3QgYWNjZXNzIHRpbWUgKilcbiAgICogICAgc3RfbXRpbWUgOiBmbG9hdDsgICAgICAgICAgICgqKiBMYXN0IG1vZGlmaWNhdGlvbiB0aW1lICopXG4gICAqICAgIHN0X2N0aW1lIDogZmxvYXQ7ICAgICAgICAgICAoKiogTGFzdCBzdGF0dXMgY2hhbmdlIHRpbWUgKilcbiAgICogIH1cbiAgICovXG4gIHJldHVybiBCTE9DSyhcbiAgICAwLFxuICAgIGpzX3N0YXRzLmRldixcbiAgICBqc19zdGF0cy5pbm8sXG4gICAgZmlsZV9raW5kLFxuICAgIGpzX3N0YXRzLm1vZGUsXG4gICAganNfc3RhdHMubmxpbmssXG4gICAganNfc3RhdHMudWlkLFxuICAgIGpzX3N0YXRzLmdpZCxcbiAgICBqc19zdGF0cy5yZGV2LFxuICAgIGpzX3N0YXRzLnNpemUsXG4gICAganNfc3RhdHMuYXRpbWVNcyxcbiAgICBqc19zdGF0cy5tdGltZU1zLFxuICAgIGpzX3N0YXRzLmN0aW1lTXNcbiAgKTtcbn1cblxuTWxOb2RlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbE5vZGVEZXZpY2Vcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZURldmljZSgpIHtcbn1cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vUmVxdWlyZXM6IE1sRmlsZSwgY2FtbF91aW50OF9hcnJheV9vZl9zdHJpbmcsIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfYnl0ZXNfc2V0LCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gTWxOb2RlRmQoZmQsIGZsYWdzKXtcbiAgdGhpcy5mcyA9IHJlcXVpcmUoJ2ZzJyk7XG4gIHRoaXMuZmQgPSBmZDtcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxOb2RlRmQucHJvdG90eXBlID0gbmV3IE1sRmlsZSAoKTtcbk1sTm9kZUZkLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sTm9kZUZkO1xuXG5NbE5vZGVGZC5wcm90b3R5cGUudHJ1bmNhdGUgPSBmdW5jdGlvbihsZW4pe1xuICB0cnkge1xuICAgIHRoaXMuZnMuZnRydW5jYXRlU3luYyh0aGlzLmZkLGxlbnwwKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5NbE5vZGVGZC5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIHJldHVybiB0aGlzLmZzLmZzdGF0U3luYyh0aGlzLmZkKS5zaXplO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uKG9mZnNldCxidWYsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB0aGlzLmZzLndyaXRlU3luYyh0aGlzLmZkLCBidWYsIGJ1Zl9vZmZzZXQsIGxlbik7XG4gICAgZWxzZVxuICAgICAgdGhpcy5mcy53cml0ZVN5bmModGhpcy5mZCwgYnVmLCBidWZfb2Zmc2V0LCBsZW4sIG9mZnNldCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGVyci50b1N0cmluZygpKTtcbiAgfVxuICByZXR1cm4gMDtcbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24ob2Zmc2V0LGEsYnVmX29mZnNldCxsZW4pe1xuICB0cnkge1xuICAgIGlmKHRoaXMuZmxhZ3MuaXNDaGFyYWN0ZXJEZXZpY2UpXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuKTtcbiAgICBlbHNlXG4gICAgICB2YXIgcmVhZCA9IHRoaXMuZnMucmVhZFN5bmModGhpcy5mZCwgYSwgYnVmX29mZnNldCwgbGVuLCBvZmZzZXQpO1xuICAgIHJldHVybiByZWFkO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihlcnIudG9TdHJpbmcoKSk7XG4gIH1cbn1cbk1sTm9kZUZkLnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uKCl7XG4gIHRyeSB7XG4gICAgdGhpcy5mcy5jbG9zZVN5bmModGhpcy5mZCk7XG4gICAgcmV0dXJuIDBcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IoZXJyLnRvU3RyaW5nKCkpO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxOb2RlRmRcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIE1sTm9kZUZkKCl7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3Blbl9mb3Jfbm9kZVxuLy9SZXF1aXJlczogTWxOb2RlRmRcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5fZm9yX25vZGUoZmQsIGZsYWdzKXtcbiAgaWYoZmxhZ3MubmFtZSkge1xuICAgIHRyeSB7XG4gICAgICB2YXIgZnMgPSByZXF1aXJlKFwiZnNcIik7XG4gICAgICB2YXIgZmQyID0gZnMub3BlblN5bmMoZmxhZ3MubmFtZSwgXCJyc1wiKTtcbiAgICAgIHJldHVybiBuZXcgTWxOb2RlRmQoZmQyLCBmbGFncyk7XG4gICAgfSBjYXRjaChlKSB7ICB9XG4gIH1cbiAgcmV0dXJuIG5ldyBNbE5vZGVGZChmZCwgZmxhZ3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlXG4vL0lmOiBicm93c2VyXG5mdW5jdGlvbiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyl7XG4gIHJldHVybiBudWxsO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBEdW1teSBmaWxlc3lzdGVtXG5cbi8vUHJvdmlkZXM6IGNhbWxfdHJhaWxpbmdfc2xhc2hcbmZ1bmN0aW9uIGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSl7XG4gIHJldHVybiAobmFtZS5zbGljZSgtMSkgIT09IFwiL1wiKSA/IChuYW1lICsgXCIvXCIpIDogbmFtZTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXJyZW50X2RpclxuLy9SZXF1aXJlczogY2FtbF90cmFpbGluZ19zbGFzaCwgZnNfbm9kZV9zdXBwb3J0ZWRcbmlmKGZzX25vZGVfc3VwcG9ydGVkICgpICYmIGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuY3dkKVxuICB2YXIgY2FtbF9jdXJyZW50X2RpciA9IGdsb2JhbFRoaXMucHJvY2Vzcy5jd2QoKS5yZXBsYWNlKC9cXFxcL2csJy8nKTtcbmVsc2VcbiAgdmFyIGNhbWxfY3VycmVudF9kaXIgPSAgXCIvc3RhdGljXCI7XG5jYW1sX2N1cnJlbnRfZGlyID0gY2FtbF90cmFpbGluZ19zbGFzaChjYW1sX2N1cnJlbnRfZGlyKTtcblxuLy9Qcm92aWRlczogY2FtbF9nZXRfcm9vdFxuLy9SZXF1aXJlczogcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9nZXRfcm9vdChwYXRoKXtcbiAgdmFyIHggPSBwYXRoX2lzX2Fic29sdXRlKHBhdGgpO1xuICBpZiAoIXgpIHJldHVybjtcbiAgcmV0dXJuIHhbMF0gKyBcIi9cIn1cblxuLy9Qcm92aWRlczogY2FtbF9yb290XG4vL1JlcXVpcmVzOiBjYW1sX2dldF9yb290LCBjYW1sX2N1cnJlbnRfZGlyLCBjYW1sX2ZhaWx3aXRoXG52YXIgY2FtbF9yb290ID0gY2FtbF9nZXRfcm9vdChjYW1sX2N1cnJlbnRfZGlyKSB8fCBjYW1sX2ZhaWx3aXRoKFwidW5hYmxlIHRvIGNvbXB1dGUgY2FtbF9yb290XCIpO1xuXG5cbi8vUHJvdmlkZXM6IE1sRmlsZVxuZnVuY3Rpb24gTWxGaWxlKCl7ICB9XG5cbi8vUHJvdmlkZXM6IHBhdGhfaXNfYWJzb2x1dGVcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiBtYWtlX3BhdGhfaXNfYWJzb2x1dGUoKSB7XG4gIGZ1bmN0aW9uIHBvc2l4KHBhdGgpIHtcbiAgICBpZiAocGF0aC5jaGFyQXQoMCkgPT09ICcvJykgcmV0dXJuIFtcIlwiLCBwYXRoLnN1YnN0cmluZygxKV07XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgZnVuY3Rpb24gd2luMzIocGF0aCkge1xuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9ub2RlanMvbm9kZS9ibG9iL2IzZmNjMjQ1ZmIyNTUzOTkwOWVmMWQ1ZWFhMDFkYmY5MmUxNjg2MzMvbGliL3BhdGguanMjTDU2XG4gICAgdmFyIHNwbGl0RGV2aWNlUmUgPSAvXihbYS16QS1aXTp8W1xcXFwvXXsyfVteXFxcXC9dK1tcXFxcL10rW15cXFxcL10rKT8oW1xcXFwvXSk/KFtcXHNcXFNdKj8pJC87XG4gICAgdmFyIHJlc3VsdCA9IHNwbGl0RGV2aWNlUmUuZXhlYyhwYXRoKTtcbiAgICB2YXIgZGV2aWNlID0gcmVzdWx0WzFdIHx8ICcnO1xuICAgIHZhciBpc1VuYyA9IEJvb2xlYW4oZGV2aWNlICYmIGRldmljZS5jaGFyQXQoMSkgIT09ICc6Jyk7XG5cbiAgICAvLyBVTkMgcGF0aHMgYXJlIGFsd2F5cyBhYnNvbHV0ZVxuICAgIGlmIChCb29sZWFuKHJlc3VsdFsyXSB8fCBpc1VuYykpIHtcbiAgICAgIHZhciByb290ID0gKHJlc3VsdFsxXSB8fCAnJyk7XG4gICAgICB2YXIgc2VwID0gKHJlc3VsdFsyXSB8fCAnJyk7XG4gICAgICByZXR1cm4gW3Jvb3QsIHBhdGguc3Vic3RyaW5nKHJvb3QubGVuZ3RoICsgc2VwLmxlbmd0aCldXG4gICAgfVxuICAgIHJldHVybjtcbiAgfVxuICBpZihmc19ub2RlX3N1cHBvcnRlZCAoKSAmJiBnbG9iYWxUaGlzLnByb2Nlc3MgJiYgZ2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtKSB7XG4gICAgcmV0dXJuIGdsb2JhbFRoaXMucHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJyA/IHdpbjMyIDogcG9zaXg7XG4gIH1cbiAgZWxzZSByZXR1cm4gcG9zaXhcbn1cbnZhciBwYXRoX2lzX2Fic29sdXRlID0gbWFrZV9wYXRoX2lzX2Fic29sdXRlKCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV9wYXRoXG4vL1JlcXVpcmVzOiBjYW1sX2N1cnJlbnRfZGlyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZywgcGF0aF9pc19hYnNvbHV0ZVxuZnVuY3Rpb24gY2FtbF9tYWtlX3BhdGggKG5hbWUpIHtcbiAgbmFtZT1jYW1sX2pzc3RyaW5nX29mX3N0cmluZyhuYW1lKTtcbiAgaWYoICFwYXRoX2lzX2Fic29sdXRlKG5hbWUpIClcbiAgICBuYW1lID0gY2FtbF9jdXJyZW50X2RpciArIG5hbWU7XG4gIHZhciBjb21wMCA9IHBhdGhfaXNfYWJzb2x1dGUobmFtZSk7XG4gIHZhciBjb21wID0gY29tcDBbMV0uc3BsaXQoXCIvXCIpO1xuICB2YXIgbmNvbXAgPSBbXVxuICBmb3IodmFyIGkgPSAwOyBpPGNvbXAubGVuZ3RoOyBpKyspe1xuICAgIHN3aXRjaChjb21wW2ldKXtcbiAgICBjYXNlIFwiLi5cIjogaWYobmNvbXAubGVuZ3RoPjEpIG5jb21wLnBvcCgpOyBicmVhaztcbiAgICBjYXNlIFwiLlwiOiBicmVhaztcbiAgICBjYXNlIFwiXCI6IGJyZWFrO1xuICAgIGRlZmF1bHQ6IG5jb21wLnB1c2goY29tcFtpXSk7YnJlYWtcbiAgICB9XG4gIH1cbiAgbmNvbXAudW5zaGlmdChjb21wMFswXSk7XG4gIG5jb21wLm9yaWcgPSBuYW1lO1xuICByZXR1cm4gbmNvbXA7XG59XG5cbi8vUHJvdmlkZXM6anNvb19tb3VudF9wb2ludFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBNbE5vZGVEZXZpY2UsIGNhbWxfcm9vdCwgZnNfbm9kZV9zdXBwb3J0ZWRcbnZhciBqc29vX21vdW50X3BvaW50ID0gW11cbmlmIChmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpjYW1sX3Jvb3QsZGV2aWNlOm5ldyBNbE5vZGVEZXZpY2UoY2FtbF9yb290KX0pO1xufSBlbHNlIHtcbiAganNvb19tb3VudF9wb2ludC5wdXNoKHtwYXRoOmNhbWxfcm9vdCxkZXZpY2U6bmV3IE1sRmFrZURldmljZShjYW1sX3Jvb3QpfSk7XG59XG5qc29vX21vdW50X3BvaW50LnB1c2goe3BhdGg6XCIvc3RhdGljL1wiLCBkZXZpY2U6bmV3IE1sRmFrZURldmljZShcIi9zdGF0aWMvXCIpfSk7XG5cbi8vUHJvdmlkZXM6Y2FtbF9saXN0X21vdW50X3BvaW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xpc3RfbW91bnRfcG9pbnQoKXtcbiAgdmFyIHByZXYgPSAwXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKXtcbiAgICB2YXIgb2xkID0gcHJldjtcbiAgICBwcmV2ID0gWzAsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoanNvb19tb3VudF9wb2ludFtpXS5wYXRoKSwgb2xkXVxuICB9XG4gIHJldHVybiBwcmV2O1xufVxuXG4vL1Byb3ZpZGVzOiByZXNvbHZlX2ZzX2RldmljZVxuLy9SZXF1aXJlczogY2FtbF9tYWtlX3BhdGgsIGpzb29fbW91bnRfcG9pbnQsIGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX2dldF9yb290LCBNbE5vZGVEZXZpY2UsIGNhbWxfdHJhaWxpbmdfc2xhc2gsIGZzX25vZGVfc3VwcG9ydGVkXG5mdW5jdGlvbiByZXNvbHZlX2ZzX2RldmljZShuYW1lKXtcbiAgdmFyIHBhdGggPSBjYW1sX21ha2VfcGF0aChuYW1lKTtcbiAgdmFyIG5hbWUgPSBwYXRoLmpvaW4oXCIvXCIpO1xuICB2YXIgbmFtZV9zbGFzaCA9IGNhbWxfdHJhaWxpbmdfc2xhc2gobmFtZSk7XG4gIHZhciByZXM7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBqc29vX21vdW50X3BvaW50Lmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIG0gPSBqc29vX21vdW50X3BvaW50W2ldO1xuICAgIGlmKG5hbWVfc2xhc2guc2VhcmNoKG0ucGF0aCkgPT0gMFxuICAgICAgICYmICghcmVzIHx8IHJlcy5wYXRoLmxlbmd0aCA8IG0ucGF0aC5sZW5ndGgpKVxuICAgICAgcmVzID0ge3BhdGg6bS5wYXRoLGRldmljZTptLmRldmljZSxyZXN0Om5hbWUuc3Vic3RyaW5nKG0ucGF0aC5sZW5ndGgsbmFtZS5sZW5ndGgpfTtcbiAgfVxuICBpZiggIXJlcyAmJiBmc19ub2RlX3N1cHBvcnRlZCgpKSB7XG4gICAgdmFyIHJvb3QgPSBjYW1sX2dldF9yb290KG5hbWUpO1xuICAgIGlmIChyb290ICYmIHJvb3QubWF0Y2goL15bYS16QS1aXTpcXC8kLykpe1xuICAgICAgdmFyIG0gPSB7cGF0aDpyb290LGRldmljZTpuZXcgTWxOb2RlRGV2aWNlKHJvb3QpfTtcbiAgICAgIGpzb29fbW91bnRfcG9pbnQucHVzaChtKTtcbiAgICAgIHJlcyA9IHtwYXRoOm0ucGF0aCxkZXZpY2U6bS5kZXZpY2UscmVzdDpuYW1lLnN1YnN0cmluZyhtLnBhdGgubGVuZ3RoLG5hbWUubGVuZ3RoKX07XG4gICAgfVxuICB9XG4gIGlmKCByZXMgKSByZXR1cm4gcmVzO1xuICBjYW1sX3JhaXNlX3N5c19lcnJvcihcIm5vIGRldmljZSBmb3VuZCBmb3IgXCIgKyBuYW1lX3NsYXNoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb3VudF9hdXRvbG9hZFxuLy9SZXF1aXJlczogTWxGYWtlRGV2aWNlLCBjYW1sX21ha2VfcGF0aCwganNvb19tb3VudF9wb2ludCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF9tb3VudF9hdXRvbG9hZChuYW1lLGYpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIGpzb29fbW91bnRfcG9pbnQucHVzaCh7cGF0aDpuYW1lLGRldmljZTpuZXcgTWxGYWtlRGV2aWNlKG5hbWUsZil9KVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bm1vdW50XG4vL1JlcXVpcmVzOiBqc29vX21vdW50X3BvaW50LCBjYW1sX21ha2VfcGF0aCwgY2FtbF90cmFpbGluZ19zbGFzaFxuZnVuY3Rpb24gY2FtbF91bm1vdW50KG5hbWUpe1xuICB2YXIgcGF0aCA9IGNhbWxfbWFrZV9wYXRoKG5hbWUpO1xuICB2YXIgbmFtZSA9IGNhbWxfdHJhaWxpbmdfc2xhc2gocGF0aC5qb2luKFwiL1wiKSk7XG4gIHZhciBpZHggPSAtMTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGpzb29fbW91bnRfcG9pbnQubGVuZ3RoOyBpKyspXG4gICAgaWYoanNvb19tb3VudF9wb2ludFtpXS5wYXRoID09IG5hbWUpIGlkeCA9IGk7XG4gIGlmKGlkeCA+IC0xKSBqc29vX21vdW50X3BvaW50LnNwbGljZShpZHgsMSk7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2dldGN3ZFxuLy9SZXF1aXJlczogY2FtbF9jdXJyZW50X2RpciwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuZnVuY3Rpb24gY2FtbF9zeXNfZ2V0Y3dkKCkge1xuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhjYW1sX2N1cnJlbnRfZGlyKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfY2hkaXJcbi8vUmVxdWlyZXM6IGNhbWxfY3VycmVudF9kaXIsIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlLCByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF90cmFpbGluZ19zbGFzaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zeXNfY2hkaXIoZGlyKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZGlyKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICBpZihyb290LnJlc3QpIGNhbWxfY3VycmVudF9kaXIgPSBjYW1sX3RyYWlsaW5nX3NsYXNoKHJvb3QucGF0aCArIHJvb3QucmVzdCk7XG4gICAgZWxzZSBjYW1sX2N1cnJlbnRfZGlyID0gcm9vdC5wYXRoO1xuICAgIHJldHVybiAwO1xuICB9XG4gIGVsc2Uge1xuICAgIGNhbWxfcmFpc2Vfbm9fc3VjaF9maWxlKGNhbWxfanNieXRlc19vZl9zdHJpbmcoZGlyKSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yYWlzZV9ub3RfYV9kaXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBjYW1sX3JhaXNlX25vdF9hX2RpcihuYW1lKXtcbiAgY2FtbF9yYWlzZV9zeXNfZXJyb3IgKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19maWxlX2V4aXN0c1xuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2ZpbGVfZXhpc3RzIChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJldHVybiByb290LmRldmljZS5leGlzdHMocm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfcmVhZF9kaXJlY3Rvcnlcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2FfZGlyLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9zeXNfcmVhZF9kaXJlY3RvcnkobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBhID0gcm9vdC5kZXZpY2UucmVhZGRpcihyb290LnJlc3QpO1xuICB2YXIgbCA9IG5ldyBBcnJheShhLmxlbmd0aCArIDEpO1xuICBsWzBdID0gMDtcbiAgZm9yKHZhciBpPTA7aTxhLmxlbmd0aDtpKyspXG4gICAgbFtpKzFdID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhhW2ldKTtcbiAgcmV0dXJuIGw7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JlbW92ZVxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3N5c19yZW1vdmUobmFtZSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHZhciBvayA9IHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QpO1xuICBpZihvayA9PSAwKSBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZShjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2lzX2RpcmVjdG9yeVxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2VcbmZ1bmN0aW9uIGNhbWxfc3lzX2lzX2RpcmVjdG9yeShuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGEgPSByb290LmRldmljZS5pc19kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIGE/MTowO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19yZW5hbWVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIHJlc29sdmVfZnNfZGV2aWNlXG5mdW5jdGlvbiBjYW1sX3N5c19yZW5hbWUobyxuKXtcbiAgdmFyIG9fcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG8pO1xuICB2YXIgbl9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uobik7XG4gIGlmKG9fcm9vdC5kZXZpY2UgIT0gbl9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBjYW5ub3QgbW92ZSBmaWxlIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1cIik7XG4gIGlmKCFvX3Jvb3QuZGV2aWNlLnJlbmFtZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9zeXNfcmVuYW1lOiBubyBpbXBsZW1lbnRlZFwiKTtcbiAgb19yb290LmRldmljZS5yZW5hbWUob19yb290LnJlc3QsIG5fcm9vdC5yZXN0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX3JhaXNlX3N5c19lcnJvclxuZnVuY3Rpb24gY2FtbF9zeXNfbWtkaXIobmFtZSwgcGVybSl7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIHJvb3QuZGV2aWNlLm1rZGlyKHJvb3QucmVzdCxwZXJtKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX3JtZGlyXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfcmFpc2Vfbm90X2FfZGlyXG5mdW5jdGlvbiBjYW1sX3N5c19ybWRpcihuYW1lKXtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgcm9vdC5kZXZpY2Uucm1kaXIocm9vdC5yZXN0KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfbWFwX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfYmFfbWFwX2ZpbGUodmZkLCBraW5kLCBsYXlvdXQsIHNoYXJlZCwgZGltcywgcG9zKSB7XG4gIC8vIHZhciBkYXRhID0gY2FtbF9zeXNfZmRzW3ZmZF07XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2JhX21hcF9maWxlIG5vdCBpbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZVxuLy9SZXF1aXJlczogY2FtbF9iYV9tYXBfZmlsZVxuZnVuY3Rpb24gY2FtbF9iYV9tYXBfZmlsZV9ieXRlY29kZShhcmd2LGFyZ24pe1xuICByZXR1cm4gY2FtbF9iYV9tYXBfZmlsZShhcmd2WzBdLGFyZ3ZbMV0sYXJndlsyXSxhcmd2WzNdLGFyZ3ZbNF0sYXJndls1XSk7XG59XG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVfZXh0ZXJuXG5mdW5jdGlvbiBqc29vX2NyZWF0ZV9maWxlX2V4dGVybihuYW1lLGNvbnRlbnQpe1xuICBpZihnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUpXG4gICAgZ2xvYmFsVGhpcy5qc29vX2NyZWF0ZV9maWxlKG5hbWUsY29udGVudCk7XG4gIGVsc2Uge1xuICAgIGlmKCFnbG9iYWxUaGlzLmNhbWxfZnNfdG1wKSBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gICAgZ2xvYmFsVGhpcy5jYW1sX2ZzX3RtcC5wdXNoKHtuYW1lOm5hbWUsY29udGVudDpjb250ZW50fSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZnNfaW5pdFxuLy9SZXF1aXJlczoganNvb19jcmVhdGVfZmlsZVxuZnVuY3Rpb24gY2FtbF9mc19pbml0ICgpe1xuICB2YXIgdG1wPWdsb2JhbFRoaXMuY2FtbF9mc190bXBcbiAgaWYodG1wKXtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgdG1wLmxlbmd0aDsgaSsrKXtcbiAgICAgIGpzb29fY3JlYXRlX2ZpbGUodG1wW2ldLm5hbWUsdG1wW2ldLmNvbnRlbnQpO1xuICAgIH1cbiAgfVxuICBnbG9iYWxUaGlzLmpzb29fY3JlYXRlX2ZpbGUgPSBqc29vX2NyZWF0ZV9maWxlO1xuICBnbG9iYWxUaGlzLmNhbWxfZnNfdG1wID0gW107XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NyZWF0ZV9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoLCByZXNvbHZlX2ZzX2RldmljZVxuZnVuY3Rpb24gY2FtbF9jcmVhdGVfZmlsZShuYW1lLGNvbnRlbnQpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYoISByb290LmRldmljZS5yZWdpc3RlcikgY2FtbF9mYWlsd2l0aChcImNhbm5vdCByZWdpc3RlciBmaWxlXCIpO1xuICByb290LmRldmljZS5yZWdpc3Rlcihyb290LnJlc3QsY29udGVudCk7XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGpzb29fY3JlYXRlX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcbmZ1bmN0aW9uIGpzb29fY3JlYXRlX2ZpbGUobmFtZSxjb250ZW50KSB7XG4gIHZhciBuYW1lID0gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKTtcbiAgdmFyIGNvbnRlbnQgPSBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKGNvbnRlbnQpO1xuICByZXR1cm4gY2FtbF9jcmVhdGVfZmlsZShuYW1lLCBjb250ZW50KTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3JlYWRfZmlsZV9jb250ZW50XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUsIGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlYWRfZmlsZV9jb250ZW50IChuYW1lKSB7XG4gIHZhciBuYW1lID0gKHR5cGVvZiBuYW1lID09IFwic3RyaW5nXCIpP2NhbWxfc3RyaW5nX29mX2pzYnl0ZXMobmFtZSk6bmFtZTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYocm9vdC5kZXZpY2UuZXhpc3RzKHJvb3QucmVzdCkpIHtcbiAgICB2YXIgZmlsZSA9IHJvb3QuZGV2aWNlLm9wZW4ocm9vdC5yZXN0LHtyZG9ubHk6MX0pO1xuICAgIHZhciBsZW4gID0gZmlsZS5sZW5ndGgoKTtcbiAgICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICBmaWxlLnJlYWQoMCxidWYsMCxsZW4pO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheShidWYpXG4gIH1cbiAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhuYW1lKSk7XG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZ2V0dGltZW9mZGF5XG4vL0FsaWFzOiB1bml4X2dldHRpbWVvZmRheVxuZnVuY3Rpb24gY2FtbF91bml4X2dldHRpbWVvZmRheSAoKSB7XG4gIHJldHVybiAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC8gMTAwMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9nZXR0aW1lb2ZkYXlcbi8vQWxpYXM6IHVuaXhfdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X3RpbWUgKCkge1xuICByZXR1cm4gTWF0aC5mbG9vcihjYW1sX3VuaXhfZ2V0dGltZW9mZGF5ICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2dtdGltZVxuLy9BbGlhczogdW5peF9nbXRpbWVcbmZ1bmN0aW9uIGNhbWxfdW5peF9nbXRpbWUgKHQpIHtcbiAgdmFyIGQgPSBuZXcgRGF0ZSAodCAqIDEwMDApO1xuICB2YXIgZF9udW0gPSBkLmdldFRpbWUoKTtcbiAgdmFyIGphbnVhcnlmaXJzdCA9IChuZXcgRGF0ZShEYXRlLlVUQyhkLmdldFVUQ0Z1bGxZZWFyKCksIDAsIDEpKSkuZ2V0VGltZSgpO1xuICB2YXIgZG95ID0gTWF0aC5mbG9vcigoZF9udW0gLSBqYW51YXJ5Zmlyc3QpIC8gODY0MDAwMDApO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRVVENTZWNvbmRzKCksIGQuZ2V0VVRDTWludXRlcygpLCBkLmdldFVUQ0hvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldFVUQ0RhdGUoKSwgZC5nZXRVVENNb250aCgpLCBkLmdldFVUQ0Z1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXRVVENEYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgZmFsc2UgfCAwIC8qIGZvciBVVEMgZGF5bGlnaHQgc2F2aW5ncyB0aW1lIGlzIGZhbHNlICovKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbG9jYWx0aW1lXG4vL0FsaWFzOiB1bml4X2xvY2FsdGltZVxuZnVuY3Rpb24gY2FtbF91bml4X2xvY2FsdGltZSAodCkge1xuICB2YXIgZCA9IG5ldyBEYXRlICh0ICogMTAwMCk7XG4gIHZhciBkX251bSA9IGQuZ2V0VGltZSgpO1xuICB2YXIgamFudWFyeWZpcnN0ID0gKG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSkpLmdldFRpbWUoKTtcbiAgdmFyIGRveSA9IE1hdGguZmxvb3IoKGRfbnVtIC0gamFudWFyeWZpcnN0KSAvIDg2NDAwMDAwKTtcbiAgdmFyIGphbiA9IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgMCwgMSk7XG4gIHZhciBqdWwgPSBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIDYsIDEpO1xuICB2YXIgc3RkVGltZXpvbmVPZmZzZXQgPSBNYXRoLm1heChqYW4uZ2V0VGltZXpvbmVPZmZzZXQoKSwganVsLmdldFRpbWV6b25lT2Zmc2V0KCkpO1xuICByZXR1cm4gQkxPQ0soMCwgZC5nZXRTZWNvbmRzKCksIGQuZ2V0TWludXRlcygpLCBkLmdldEhvdXJzKCksXG4gICAgICAgICAgICAgICBkLmdldERhdGUoKSwgZC5nZXRNb250aCgpLCBkLmdldEZ1bGxZZWFyKCkgLSAxOTAwLFxuICAgICAgICAgICAgICAgZC5nZXREYXkoKSwgZG95LFxuICAgICAgICAgICAgICAgKGQuZ2V0VGltZXpvbmVPZmZzZXQoKSA8IHN0ZFRpbWV6b25lT2Zmc2V0KSB8IDAgLyogZGF5bGlnaHQgc2F2aW5ncyB0aW1lICBmaWVsZC4gKi8pXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ta3RpbWVcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9sb2NhbHRpbWVcbi8vQWxpYXM6IHVuaXhfbWt0aW1lXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWt0aW1lKHRtKXtcbiAgdmFyIGQgPSAobmV3IERhdGUodG1bNl0rMTkwMCx0bVs1XSx0bVs0XSx0bVszXSx0bVsyXSx0bVsxXSkpLmdldFRpbWUoKTtcbiAgdmFyIHQgPSBNYXRoLmZsb29yKGQgLyAxMDAwKTtcbiAgdmFyIHRtMiA9IGNhbWxfdW5peF9sb2NhbHRpbWUodCk7XG4gIHJldHVybiBCTE9DSygwLHQsdG0yKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGFydHVwIGNvbnN0XG4vL0FsaWFzOiB3aW5fc3RhcnR1cFxuZnVuY3Rpb24gY2FtbF91bml4X3N0YXJ0dXAoKSB7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfY2xlYW51cCBjb25zdFxuLy9BbGlhczogd2luX2NsZWFudXBcbmZ1bmN0aW9uIGNhbWxfdW5peF9jbGVhbnVwKCkge31cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCBjb25zdFxuLy9BbGlhczogd2luX2hhbmRsZV9mZFxuZnVuY3Rpb24gY2FtbF91bml4X2ZpbGVkZXNjcl9vZl9mZCh4KSB7cmV0dXJuIHg7fVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaXNhdHR5XG4vL1JlcXVpcmVzOiBmc19ub2RlX3N1cHBvcnRlZFxuLy9BbGlhczogdW5peF9pc2F0dHlcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgaWYoZnNfbm9kZV9zdXBwb3J0ZWQoKSkge1xuICAgIHZhciB0dHkgPSByZXF1aXJlKCd0dHknKTtcbiAgICByZXR1cm4gdHR5LmlzYXR0eShmaWxlRGVzY3JpcHRvcik/MTowO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2lzYXR0eVxuLy9BbGlhczogdW5peF9pc2F0dHlcbi8vSWY6IGJyb3dzZXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9pc2F0dHkoZmlsZURlc2NyaXB0b3IpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG1ha2VfdW5peF9lcnJfYXJnc1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmdcbnZhciB1bml4X2Vycm9yID0gW1xuICAvKiA9PT1Vbml4LmVycm9yPT09XG4gICAqXG4gICAqIFRoaXMgYXJyYXkgaXMgaW4gb3JkZXIgb2YgdGhlIHZhcmlhbnQgaW4gT0NhbWxcbiAgICovXG4gIFwiRTJCSUdcIiwgXCJFQUNDRVNcIiwgXCJFQUdBSU5cIiwgXCJFQkFERlwiLCBcIkVCVVNZXCIsIFwiRUNISUxEXCIsIFwiRURFQURMS1wiLCBcIkVET01cIixcbiAgXCJFRVhJU1RcIiwgXCJFRkFVTFRcIiwgXCJFRkJJR1wiLCBcIkVJTlRSXCIsIFwiRUlOVkFMXCIsIFwiRUlPXCIsIFwiRUlTRElSXCIsIFwiRU1GSUxFXCIsXG4gIFwiRU1MSU5LXCIsIFwiRU5BTUVUT09MT05HXCIsIFwiRU5GSUxFXCIsIFwiRU5PREVWXCIsIFwiRU5PRU5UXCIsIFwiRU5PRVhFQ1wiLCBcIkVOT0xDS1wiLFxuICBcIkVOT01FTVwiLCBcIkVOT1NQQ1wiLCBcIkVOT1NZU1wiLCBcIkVOT1RESVJcIiwgXCJFTk9URU1QVFlcIiwgXCJFTk9UVFlcIiwgXCJFTlhJT1wiLFxuICBcIkVQRVJNXCIsIFwiRVBJUEVcIiwgXCJFUkFOR0VcIiwgXCJFUk9GU1wiLCBcIkVTUElQRVwiLCBcIkVTUkNIXCIsIFwiRVhERVZcIiwgXCJFV09VTERCTE9DS1wiLFxuICBcIkVJTlBST0dSRVNTXCIsIFwiRUFMUkVBRFlcIiwgXCJFTk9UU09DS1wiLCBcIkVERVNUQUREUlJFUVwiLCBcIkVNU0dTSVpFXCIsXG4gIFwiRVBST1RPVFlQRVwiLCBcIkVOT1BST1RPT1BUXCIsIFwiRVBST1RPTk9TVVBQT1JUXCIsIFwiRVNPQ0tUTk9TVVBQT1JUXCIsXG4gIFwiRU9QTk9UU1VQUFwiLCBcIkVQRk5PU1VQUE9SVFwiLCBcIkVBRk5PU1VQUE9SVFwiLCBcIkVBRERSSU5VU0VcIiwgXCJFQUREUk5PVEFWQUlMXCIsXG4gIFwiRU5FVERPV05cIiwgXCJFTkVUVU5SRUFDSFwiLCBcIkVORVRSRVNFVFwiLCBcIkVDT05OQUJPUlRFRFwiLCBcIkVDT05OUkVTRVRcIiwgXCJFTk9CVUZTXCIsXG4gIFwiRUlTQ09OTlwiLCBcIkVOT1RDT05OXCIsIFwiRVNIVVRET1dOXCIsIFwiRVRPT01BTllSRUZTXCIsIFwiRVRJTUVET1VUXCIsIFwiRUNPTk5SRUZVU0VEXCIsXG4gIFwiRUhPU1RET1dOXCIsIFwiRUhPU1RVTlJFQUNIXCIsIFwiRUxPT1BcIiwgXCJFT1ZFUkZMT1dcIlxuXTtcbmZ1bmN0aW9uIG1ha2VfdW5peF9lcnJfYXJncyhjb2RlLCBzeXNjYWxsLCBwYXRoLCBlcnJubykge1xuICB2YXIgdmFyaWFudCA9IHVuaXhfZXJyb3IuaW5kZXhPZihjb2RlKTtcbiAgaWYgKHZhcmlhbnQgPCAwKSB7XG4gICAgLy8gRGVmYXVsdCBpZiB1bmRlZmluZWRcbiAgICBpZiAoZXJybm8gPT0gbnVsbCkge1xuICAgICAgZXJybm8gPSAtOTk5OVxuICAgIH1cbiAgICAvLyBJZiBub25lIG9mIHRoZSBhYm92ZSB2YXJpYW50cywgZmFsbGJhY2sgdG8gRVVOS05PV05FUlIoaW50KVxuICAgIHZhcmlhbnQgPSBCTE9DSygwLCBlcnJubyk7XG4gIH1cbiAgdmFyIGFyZ3MgPSBbXG4gICAgdmFyaWFudCxcbiAgICBjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhzeXNjYWxsIHx8IFwiXCIpLFxuICAgIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGggfHwgXCJcIilcbiAgXTtcbiAgcmV0dXJuIGFyZ3M7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9zdGF0XG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9zdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfc3RhdChuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uuc3RhdCkge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5zdGF0KHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N0YXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9zdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X3N0YXRfNjRcbmZ1bmN0aW9uIGNhbWxfdW5peF9zdGF0XzY0KG5hbWUpIHtcbiAgdmFyIHIgPSBjYW1sX3VuaXhfc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbHN0YXRcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X2xzdGF0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXQobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLmxzdGF0KSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9sc3RhdDogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5sc3RhdChyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9sc3RhdF82NFxuLy9SZXF1aXJlczogY2FtbF91bml4X2xzdGF0LCBjYW1sX2ludDY0X29mX2ludDMyXG4vL0FsaWFzOiB1bml4X2xzdGF0XzY0XG5mdW5jdGlvbiBjYW1sX3VuaXhfbHN0YXRfNjQobmFtZSkge1xuICB2YXIgciA9IGNhbWxfdW5peF9sc3RhdChuYW1lKTtcbiAgcls5XSA9IGNhbWxfaW50NjRfb2ZfaW50MzIocls5XSk7XG4gIHJldHVybiByO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfbWtkaXJcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X21rZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfbWtkaXIobmFtZSwgcGVybSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm1rZGlyKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9ta2Rpcjogbm90IGltcGxlbWVudGVkXCIpO1xuICB9XG4gIHJldHVybiByb290LmRldmljZS5ta2Rpcihyb290LnJlc3QsIHBlcm0sIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9ybWRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfcm1kaXJcbmZ1bmN0aW9uIGNhbWxfdW5peF9ybWRpcihuYW1lKSB7XG4gIHZhciByb290ID0gcmVzb2x2ZV9mc19kZXZpY2UobmFtZSk7XG4gIGlmICghcm9vdC5kZXZpY2Uucm1kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3JtZGlyOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnJtZGlyKHJvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3N5bWxpbmtcbi8vUmVxdWlyZXM6IHJlc29sdmVfZnNfZGV2aWNlLCBjYW1sX2ZhaWx3aXRoXG4vL0FsaWFzOiB1bml4X3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9zeW1saW5rKHRvX2Rpciwgc3JjLCBkc3QpIHtcbiAgdmFyIHNyY19yb290ID0gcmVzb2x2ZV9mc19kZXZpY2Uoc3JjKTtcbiAgdmFyIGRzdF9yb290ID0gcmVzb2x2ZV9mc19kZXZpY2UoZHN0KTtcbiAgaWYoc3JjX3Jvb3QuZGV2aWNlICE9IGRzdF9yb290LmRldmljZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X3N5bWxpbms6IGNhbm5vdCBzeW1saW5rIGJldHdlZW4gdHdvIGZpbGVzeXN0ZW1zXCIpO1xuICBpZiAoIXNyY19yb290LmRldmljZS5zeW1saW5rKSB7XG4gICAgY2FtbF9mYWlsd2l0aChcImNhbWxfdW5peF9zeW1saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHNyY19yb290LmRldmljZS5zeW1saW5rKHRvX2Rpciwgc3JjX3Jvb3QucmVzdCwgZHN0X3Jvb3QucmVzdCwgLyogcmFpc2UgVW5peF9lcnJvciAqLyB0cnVlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X3JlYWRsaW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF9yZWFkbGlua1xuZnVuY3Rpb24gY2FtbF91bml4X3JlYWRsaW5rKG5hbWUpIHtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgaWYgKCFyb290LmRldmljZS5yZWFkbGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfcmVhZGxpbms6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICByZXR1cm4gcm9vdC5kZXZpY2UucmVhZGxpbmsocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfdW5saW5rXG4vL1JlcXVpcmVzOiByZXNvbHZlX2ZzX2RldmljZSwgY2FtbF9mYWlsd2l0aFxuLy9BbGlhczogdW5peF91bmxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF91bmxpbmsobmFtZSkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKG5hbWUpO1xuICBpZiAoIXJvb3QuZGV2aWNlLnVubGluaykge1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX3VuaXhfdW5saW5rOiBub3QgaW1wbGVtZW50ZWRcIik7XG4gIH1cbiAgcmV0dXJuIHJvb3QuZGV2aWNlLnVubGluayhyb290LnJlc3QsIC8qIHJhaXNlIFVuaXhfZXJyb3IgKi8gdHJ1ZSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXR1aWRcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfbm90X2ZvdW5kXG4vL0FsaWFzOiB1bml4X2dldHVpZFxuZnVuY3Rpb24gY2FtbF91bml4X2dldHVpZCh1bml0KSB7XG4gIGlmKGdsb2JhbFRoaXMucHJvY2VzcyAmJiBnbG9iYWxUaGlzLnByb2Nlc3MuZ2V0dWlkKXtcbiAgICByZXR1cm4gZ2xvYmFsVGhpcy5wcm9jZXNzLmdldHVpZCgpO1xuICB9XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9nZXRwd3VpZFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9ub3RfZm91bmRcbi8vQWxpYXM6IHVuaXhfZ2V0cHd1aWRcbmZ1bmN0aW9uIGNhbWxfdW5peF9nZXRwd3VpZCh1bml0KSB7XG4gIGNhbWxfcmFpc2Vfbm90X2ZvdW5kKCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9oYXNfc3ltbGlua1xuLy9SZXF1aXJlczogZnNfbm9kZV9zdXBwb3J0ZWRcbi8vQWxpYXM6IHVuaXhfaGFzX3N5bWxpbmtcbmZ1bmN0aW9uIGNhbWxfdW5peF9oYXNfc3ltbGluayh1bml0KSB7XG4gIHJldHVybiBmc19ub2RlX3N1cHBvcnRlZCgpPzE6MFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfb3BlbmRpclxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2UsIGNhbWxfZmFpbHdpdGhcbi8vQWxpYXM6IHVuaXhfb3BlbmRpclxuZnVuY3Rpb24gY2FtbF91bml4X29wZW5kaXIocGF0aCkge1xuICB2YXIgcm9vdCA9IHJlc29sdmVfZnNfZGV2aWNlKHBhdGgpO1xuICBpZiAoIXJvb3QuZGV2aWNlLm9wZW5kaXIpIHtcbiAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF91bml4X29wZW5kaXI6IG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgfVxuICB2YXIgZGlyX2hhbmRsZSA9IHJvb3QuZGV2aWNlLm9wZW5kaXIocm9vdC5yZXN0LCAvKiByYWlzZSBVbml4X2Vycm9yICovIHRydWUpO1xuICByZXR1cm4geyBwb2ludGVyIDogZGlyX2hhbmRsZSwgcGF0aDogcGF0aCB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogbWFrZV91bml4X2Vycl9hcmdzLCBjYW1sX3JhaXNlX3dpdGhfYXJncywgY2FtbF9uYW1lZF92YWx1ZVxuLy9BbGlhczogdW5peF9yZWFkZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKSB7XG4gIHZhciBlbnRyeTtcbiAgdHJ5IHtcbiAgICAgIGVudHJ5ID0gZGlyX2hhbmRsZS5wb2ludGVyLnJlYWRTeW5jKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHZhciB1bml4X2Vycm9yID0gY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcInJlYWRkaXJcIiwgZGlyX2hhbmRsZS5wYXRoKSk7XG4gIH1cbiAgaWYgKGVudHJ5ID09PSBudWxsKSB7XG4gICAgICBjYW1sX3JhaXNlX2VuZF9vZl9maWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNzdHJpbmcoZW50cnkubmFtZSk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3MsIGNhbWxfcmFpc2Vfd2l0aF9hcmdzLCBjYW1sX25hbWVkX3ZhbHVlXG4vL0FsaWFzOiB1bml4X2Nsb3NlZGlyXG5mdW5jdGlvbiBjYW1sX3VuaXhfY2xvc2VkaXIoZGlyX2hhbmRsZSkge1xuICB0cnkge1xuICAgICAgZGlyX2hhbmRsZS5wb2ludGVyLmNsb3NlU3luYygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgICB2YXIgdW5peF9lcnJvciA9IGNhbWxfbmFtZWRfdmFsdWUoJ1VuaXguVW5peF9lcnJvcicpO1xuICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRUJBREZcIiwgXCJjbG9zZWRpclwiLCBkaXJfaGFuZGxlLnBhdGgpKTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfcmV3aW5kZGlyXG4vL1JlcXVpcmVzOiBjYW1sX3VuaXhfY2xvc2VkaXIsIGNhbWxfdW5peF9vcGVuZGlyXG4vL0FsaWFzOiB1bml4X3Jld2luZGRpclxuZnVuY3Rpb24gY2FtbF91bml4X3Jld2luZGRpcihkaXJfaGFuZGxlKSB7XG4gIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbiAgdmFyIG5ld19kaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIoZGlyX2hhbmRsZS5wYXRoKTtcbiAgZGlyX2hhbmRsZS5wb2ludGVyID0gbmV3X2Rpcl9oYW5kbGUucG9pbnRlcjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfdW5peF9maW5kZmlyc3Rcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF91bml4X29wZW5kaXIsIGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZGZpcnN0XG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGZpcnN0KHBhdGgpIHtcbiAgLy8gVGhlIFdpbmRvd3MgY29kZSBhZGRzIHRoaXMgZ2xvYiB0byB0aGUgcGF0aCwgc28gd2UgbmVlZCB0byByZW1vdmUgaXRcbiAgdmFyIHBhdGhfanMgPSBjYW1sX2pzc3RyaW5nX29mX3N0cmluZyhwYXRoKTtcbiAgcGF0aF9qcyA9IHBhdGhfanMucmVwbGFjZSgvKF58W1xcXFxcXC9dKVxcKlxcLlxcKiQvLCBcIlwiKTtcbiAgcGF0aCA9IGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nKHBhdGhfanMpO1xuICAvLyAqLiogaXMgbm93IHN0cmlwcGVkXG4gIHZhciBkaXJfaGFuZGxlID0gY2FtbF91bml4X29wZW5kaXIocGF0aCk7XG4gIHZhciBmaXJzdF9lbnRyeSA9IGNhbWxfdW5peF9yZWFkZGlyKGRpcl9oYW5kbGUpO1xuICAvLyBUaGUgV2luZG93cyBiaW5kaW5ncyB0eXBlIGRpcl9oYW5kbGUgYXMgYW4gYGludGAgYnV0IGl0J3Mgbm90IGluIEpTXG4gIHJldHVybiBbMCwgZmlyc3RfZW50cnksIGRpcl9oYW5kbGVdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfZmluZG5leHRcbi8vUmVxdWlyZXM6IGNhbWxfdW5peF9yZWFkZGlyXG4vL0FsaWFzOiB3aW5fZmluZG5leHRcbmZ1bmN0aW9uIGNhbWxfdW5peF9maW5kbmV4dChkaXJfaGFuZGxlKSB7XG4gIHJldHVybiBjYW1sX3VuaXhfcmVhZGRpcihkaXJfaGFuZGxlKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF91bml4X2ZpbmRjbG9zZVxuLy9SZXF1aXJlczogY2FtbF91bml4X2Nsb3NlZGlyXG4vL0FsaWFzOiB3aW5fZmluZGNsb3NlXG5mdW5jdGlvbiBjYW1sX3VuaXhfZmluZGNsb3NlKGRpcl9oYW5kbGUpIHtcbiAgcmV0dXJuIGNhbWxfdW5peF9jbG9zZWRpcihkaXJfaGFuZGxlKTtcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyBjb25zdFxuLy9BbGlhczogdW5peF9pbmV0X2FkZHJfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3VuaXhfaW5ldF9hZGRyX29mX3N0cmluZyAoKSB7cmV0dXJuIDA7fVxuXG5cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBKw6lyw7RtZSBWb3VpbGxvbiwgSHVnbyBIZXV6YXJkXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IE1sRmFrZURldmljZVxuLy9SZXF1aXJlczogTWxGYWtlRmlsZSwgTWxGYWtlRmQsIGNhbWxfY3JlYXRlX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX2FycmF5LCBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9ieXRlc19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX21sX2J5dGVzLCBjYW1sX2lzX21sX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9yYWlzZV93aXRoX2FyZ3MsIGNhbWxfbmFtZWRfdmFsdWVzXG4vL1JlcXVpcmVzOiBtYWtlX3VuaXhfZXJyX2FyZ3NcbmZ1bmN0aW9uIE1sRmFrZURldmljZSAocm9vdCwgZikge1xuICB0aGlzLmNvbnRlbnQ9e307XG4gIHRoaXMucm9vdCA9IHJvb3Q7XG4gIHRoaXMubG9va3VwRnVuID0gZjtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubm0gPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiAodGhpcy5yb290ICsgbmFtZSk7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLmNyZWF0ZV9kaXJfaWZfbmVlZGVkID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgY29tcCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICB2YXIgcmVzID0gXCJcIjtcbiAgZm9yKHZhciBpID0gMDsgaSA8IGNvbXAubGVuZ3RoIC0gMTsgaSsrKXtcbiAgICByZXMgKz0gY29tcFtpXSArIFwiL1wiO1xuICAgIGlmKHRoaXMuY29udGVudFtyZXNdKSBjb250aW51ZTtcbiAgICB0aGlzLmNvbnRlbnRbcmVzXSA9IFN5bWJvbChcImRpcmVjdG9yeVwiKTtcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5zbGFzaCA9IGZ1bmN0aW9uKG5hbWUpe1xuICByZXR1cm4gL1xcLyQvLnRlc3QobmFtZSk/bmFtZToobmFtZSArIFwiL1wiKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUubG9va3VwID0gZnVuY3Rpb24obmFtZSkge1xuICBpZighdGhpcy5jb250ZW50W25hbWVdICYmIHRoaXMubG9va3VwRnVuKSB7XG4gICAgdmFyIHJlcyA9IHRoaXMubG9va3VwRnVuKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXModGhpcy5yb290KSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlcyhuYW1lKSk7XG4gICAgaWYocmVzICE9PSAwKSB7XG4gICAgICB0aGlzLmNyZWF0ZV9kaXJfaWZfbmVlZGVkKG5hbWUpO1xuICAgICAgdGhpcy5jb250ZW50W25hbWVdPW5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKHJlc1sxXSkpO1xuICAgIH1cbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5leGlzdHMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIC8vIFRoZSByb290IG9mIHRoZSBkZXZpY2UgZXhpc3RzXG4gIGlmKG5hbWUgPT0gXCJcIikgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZGlyZWN0b3J5IGV4aXN0c1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIGlmKHRoaXMuY29udGVudFtuYW1lX3NsYXNoXSkgcmV0dXJuIDE7XG4gIC8vIENoZWNrIGlmIGEgZmlsZSBleGlzdHNcbiAgdGhpcy5sb29rdXAobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc0ZpbGUgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpICYmICF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIHJldHVybiAxXG4gIH1cbiAgZWxzZSB7XG4gICAgcmV0dXJuIDBcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5ta2RpciA9IGZ1bmN0aW9uKG5hbWUsbW9kZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG4gIGlmKHRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVFWElTVFwiLCBcIm1rZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IEZpbGUgZXhpc3RzXCIpO1xuICAgIH1cbiAgfVxuICB2YXIgcGFyZW50ID0gL14oLiopXFwvW14vXSsvLmV4ZWMobmFtZSk7XG4gIHBhcmVudCA9IChwYXJlbnQgJiYgcGFyZW50WzFdKSB8fCAnJztcbiAgaWYoIXRoaXMuZXhpc3RzKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9FTlRcIiwgXCJta2RpclwiLCB0aGlzLm5tKHBhcmVudCkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihwYXJlbnQgKyBcIjogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKHBhcmVudCkpe1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwibWtkaXJcIiwgdGhpcy5ubShwYXJlbnQpKSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IocGFyZW50ICsgXCI6IE5vdCBhIGRpcmVjdG9yeVwiKTtcbiAgICB9XG4gIH1cbiAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZCh0aGlzLnNsYXNoKG5hbWUpKTtcbn1cbk1sRmFrZURldmljZS5wcm90b3R5cGUucm1kaXIgPSBmdW5jdGlvbihuYW1lLCByYWlzZV91bml4KSB7XG4gIHZhciB1bml4X2Vycm9yID0gcmFpc2VfdW5peCAmJiBjYW1sX25hbWVkX3ZhbHVlKCdVbml4LlVuaXhfZXJyb3InKTtcbiAgdmFyIG5hbWVfc2xhc2ggPSAobmFtZSA9PSBcIlwiKT9cIlwiOih0aGlzLnNsYXNoKG5hbWUpKTtcbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgaWYoIXRoaXMuZXhpc3RzKG5hbWUpKSB7XG4gICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgIGNhbWxfcmFpc2Vfd2l0aF9hcmdzKHVuaXhfZXJyb3IsIG1ha2VfdW5peF9lcnJfYXJncyhcIkVOT0VOVFwiLCBcInJtZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gICAgfVxuICB9XG4gIGlmKCF0aGlzLmlzX2RpcihuYW1lKSkge1xuICAgIGlmICh1bml4X2Vycm9yKSB7XG4gICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFTk9URElSXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKG5hbWUgKyBcIjogTm90IGEgZGlyZWN0b3J5XCIpO1xuICAgIH1cbiAgfVxuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgaWYobi5tYXRjaChyKSkge1xuICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgY2FtbF9yYWlzZV93aXRoX2FyZ3ModW5peF9lcnJvciwgbWFrZV91bml4X2Vycl9hcmdzKFwiRU5PVEVNUFRZXCIsIFwicm1kaXJcIiwgdGhpcy5ubShuYW1lKSkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiOiBEaXJlY3Rvcnkgbm90IGVtcHR5XCIpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVfc2xhc2hdO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5yZWFkZGlyID0gZnVuY3Rpb24obmFtZSkge1xuICB2YXIgbmFtZV9zbGFzaCA9IChuYW1lID09IFwiXCIpP1wiXCI6KHRoaXMuc2xhc2gobmFtZSkpO1xuICBpZighdGhpcy5leGlzdHMobmFtZSkpIHtcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnlcIik7XG4gIH1cbiAgaWYoIXRoaXMuaXNfZGlyKG5hbWUpKSB7XG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IobmFtZSArIFwiOiBOb3QgYSBkaXJlY3RvcnlcIik7XG4gIH1cbiAgdmFyIHIgPSBuZXcgUmVnRXhwKFwiXlwiICsgbmFtZV9zbGFzaCArIFwiKFteL10rKVwiKTtcbiAgdmFyIHNlZW4gPSB7fVxuICB2YXIgYSA9IFtdO1xuICBmb3IodmFyIG4gaW4gdGhpcy5jb250ZW50KSB7XG4gICAgdmFyIG0gPSBuLm1hdGNoKHIpO1xuICAgIGlmKG0gJiYgIXNlZW5bbVsxXV0pIHtzZWVuW21bMV1dID0gdHJ1ZTsgYS5wdXNoKG1bMV0pfVxuICB9XG4gIHJldHVybiBhO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuZGlyID0gZnVuY3Rpb24obmFtZSwgcmFpc2VfdW5peCkge1xuICB2YXIgdW5peF9lcnJvciA9IHJhaXNlX3VuaXggJiYgY2FtbF9uYW1lZF92YWx1ZSgnVW5peC5Vbml4X2Vycm9yJyk7XG5cbiAgdmFyIGEgPSB0aGlzLnJlYWRkaXIobmFtZSk7XG4gIHZhciBjID0gZmFsc2U7XG4gIHZhciBpID0gMDtcbiAgcmV0dXJuIHsgcmVhZFN5bmMgOiAoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjKSB7XG4gICAgICBpZiAodW5peF9lcnJvcikge1xuICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYoaSA9PSBhLmxlbmd0aCkgcmV0dXJuIG51bGw7XG4gICAgdmFyIGVudHJ5ID0gYVtpXTtcbiAgICBpKys7XG4gICAgcmV0dXJuIHsgbmFtZTogZW50cnkgfVxuICB9KVxuICAgICwgY2xvc2VTeW5jOiAoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGMpIHtcbiAgICAgICAgaWYgKHVuaXhfZXJyb3IpIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3dpdGhfYXJncyh1bml4X2Vycm9yLCBtYWtlX3VuaXhfZXJyX2FyZ3MoXCJFQkFERlwiLCBcImNsb3NlZGlyXCIsIHRoaXMubm0obmFtZSkpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihuYW1lICsgXCI6IGNsb3NlZGlyIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYyA9IHRydWU7XG4gICAgICBhID0gW107XG4gICAgfSlcbiAgfVxufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5pc19kaXIgPSBmdW5jdGlvbihuYW1lKSB7XG4gIGlmKG5hbWUgPT0gXCJcIikgIHJldHVybiB0cnVlO1xuICB2YXIgbmFtZV9zbGFzaCA9IHRoaXMuc2xhc2gobmFtZSk7XG4gIHJldHVybiB0aGlzLmNvbnRlbnRbbmFtZV9zbGFzaF0/MTowO1xufVxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS51bmxpbmsgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHZhciBvayA9IHRoaXMuY29udGVudFtuYW1lXT90cnVlOmZhbHNlO1xuICBkZWxldGUgdGhpcy5jb250ZW50W25hbWVdO1xuICByZXR1cm4gb2s7XG59XG5NbEZha2VEZXZpY2UucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbihuYW1lLCBmKSB7XG4gIHZhciBmaWxlO1xuICBpZihmLnJkb25seSAmJiBmLndyb25seSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3Jkb25seSBhbmQgT3Blbl93cm9ubHkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICBpZihmLnRleHQgJiYgZi5iaW5hcnkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl90ZXh0IGFuZCBPcGVuX2JpbmFyeSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIHRoaXMubG9va3VwKG5hbWUpO1xuICBpZiAodGhpcy5jb250ZW50W25hbWVdKSB7XG4gICAgaWYgKHRoaXMuaXNfZGlyKG5hbWUpKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBpcyBhIGRpcmVjdG9yeVwiKTtcbiAgICBpZiAoZi5jcmVhdGUgJiYgZi5leGNsKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gICAgaWYoZi50cnVuY2F0ZSkgZmlsZS50cnVuY2F0ZSgpO1xuICB9IGVsc2UgaWYgKGYuY3JlYXRlKSB7XG4gICAgdGhpcy5jcmVhdGVfZGlyX2lmX25lZWRlZChuYW1lKTtcbiAgICB0aGlzLmNvbnRlbnRbbmFtZV0gPSBuZXcgTWxGYWtlRmlsZShjYW1sX2NyZWF0ZV9ieXRlcygwKSk7XG4gICAgZmlsZSA9IHRoaXMuY29udGVudFtuYW1lXTtcbiAgfSBlbHNlIHtcbiAgICBjYW1sX3JhaXNlX25vX3N1Y2hfZmlsZSAodGhpcy5ubShuYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ldyBNbEZha2VGZCh0aGlzLm5tKG5hbWUpLCBmaWxlLCBmKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5vcGVuID0gZnVuY3Rpb24obmFtZSwgZikge1xuICB2YXIgZmlsZTtcbiAgaWYoZi5yZG9ubHkgJiYgZi53cm9ubHkpXG4gICAgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmxhZ3MgT3Blbl9yZG9ubHkgYW5kIE9wZW5fd3Jvbmx5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgaWYoZi50ZXh0ICYmIGYuYmluYXJ5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fdGV4dCBhbmQgT3Blbl9iaW5hcnkgYXJlIG5vdCBjb21wYXRpYmxlXCIpO1xuICB0aGlzLmxvb2t1cChuYW1lKTtcbiAgaWYgKHRoaXMuY29udGVudFtuYW1lXSkge1xuICAgIGlmICh0aGlzLmlzX2RpcihuYW1lKSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogaXMgYSBkaXJlY3RvcnlcIik7XG4gICAgaWYgKGYuY3JlYXRlICYmIGYuZXhjbCkgY2FtbF9yYWlzZV9zeXNfZXJyb3IodGhpcy5ubShuYW1lKSArIFwiIDogZmlsZSBhbHJlYWR5IGV4aXN0c1wiKTtcbiAgICBmaWxlID0gdGhpcy5jb250ZW50W25hbWVdO1xuICAgIGlmKGYudHJ1bmNhdGUpIGZpbGUudHJ1bmNhdGUoKTtcbiAgfSBlbHNlIGlmIChmLmNyZWF0ZSkge1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gbmV3IE1sRmFrZUZpbGUoY2FtbF9jcmVhdGVfYnl0ZXMoMCkpO1xuICAgIGZpbGUgPSB0aGlzLmNvbnRlbnRbbmFtZV07XG4gIH0gZWxzZSB7XG4gICAgY2FtbF9yYWlzZV9ub19zdWNoX2ZpbGUgKHRoaXMubm0obmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXcgTWxGYWtlRmQodGhpcy5ubShuYW1lKSwgZmlsZSwgZik7XG59XG5cbk1sRmFrZURldmljZS5wcm90b3R5cGUucmVnaXN0ZXI9IGZ1bmN0aW9uIChuYW1lLGNvbnRlbnQpe1xuICB2YXIgZmlsZTtcbiAgaWYodGhpcy5jb250ZW50W25hbWVdKSBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLm5tKG5hbWUpICsgXCIgOiBmaWxlIGFscmVhZHkgZXhpc3RzXCIpO1xuICBpZihjYW1sX2lzX21sX2J5dGVzKGNvbnRlbnQpKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjb250ZW50KTtcbiAgaWYoY2FtbF9pc19tbF9zdHJpbmcoY29udGVudCkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGNvbnRlbnQpKTtcbiAgZWxzZSBpZihjb250ZW50IGluc3RhbmNlb2YgQXJyYXkpXG4gICAgZmlsZSA9IG5ldyBNbEZha2VGaWxlKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoY29udGVudCkpO1xuICBlbHNlIGlmKHR5cGVvZiBjb250ZW50ID09PSBcInN0cmluZ1wiKVxuICAgIGZpbGUgPSBuZXcgTWxGYWtlRmlsZShjYW1sX2J5dGVzX29mX2pzYnl0ZXMoY29udGVudCkpO1xuICBlbHNlIGlmKGNvbnRlbnQudG9TdHJpbmcpIHtcbiAgICB2YXIgYnl0ZXMgPSBjYW1sX2J5dGVzX29mX3N0cmluZyhjYW1sX3N0cmluZ19vZl9qc3N0cmluZyhjb250ZW50LnRvU3RyaW5nKCkpKTtcbiAgICBmaWxlID0gbmV3IE1sRmFrZUZpbGUoYnl0ZXMpO1xuICB9XG4gIGlmKGZpbGUpe1xuICAgIHRoaXMuY3JlYXRlX2Rpcl9pZl9uZWVkZWQobmFtZSk7XG4gICAgdGhpcy5jb250ZW50W25hbWVdID0gZmlsZTtcbiAgfVxuICBlbHNlIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubm0obmFtZSkgKyBcIiA6IHJlZ2lzdGVyaW5nIGZpbGUgd2l0aCBpbnZhbGlkIGNvbnRlbnQgdHlwZVwiKTtcbn1cblxuTWxGYWtlRGV2aWNlLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IE1sRmFrZURldmljZVxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGaWxlXG4vL1JlcXVpcmVzOiBNbEZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9ibGl0X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG5mdW5jdGlvbiBNbEZha2VGaWxlKGNvbnRlbnQpe1xuICB0aGlzLmRhdGEgPSBjb250ZW50O1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUgPSBuZXcgTWxGaWxlICgpO1xuTWxGYWtlRmlsZS5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBNbEZha2VGaWxlXG5NbEZha2VGaWxlLnByb3RvdHlwZS50cnVuY2F0ZSA9IGZ1bmN0aW9uKGxlbil7XG4gIHZhciBvbGQgPSB0aGlzLmRhdGE7XG4gIHRoaXMuZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgY2FtbF9ibGl0X2J5dGVzKG9sZCwgMCwgdGhpcy5kYXRhLCAwLCBsZW4pO1xufVxuTWxGYWtlRmlsZS5wcm90b3R5cGUubGVuZ3RoID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gY2FtbF9tbF9ieXRlc19sZW5ndGgodGhpcy5kYXRhKTtcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24ob2Zmc2V0LGJ1Zixwb3MsbGVuKXtcbiAgdmFyIGNsZW4gPSB0aGlzLmxlbmd0aCgpO1xuICBpZihvZmZzZXQgKyBsZW4gPj0gY2xlbikge1xuICAgIHZhciBuZXdfc3RyID0gY2FtbF9jcmVhdGVfYnl0ZXMob2Zmc2V0ICsgbGVuKTtcbiAgICB2YXIgb2xkX2RhdGEgPSB0aGlzLmRhdGE7XG4gICAgdGhpcy5kYXRhID0gbmV3X3N0cjtcbiAgICBjYW1sX2JsaXRfYnl0ZXMob2xkX2RhdGEsIDAsIHRoaXMuZGF0YSwgMCwgY2xlbik7XG4gIH1cbiAgY2FtbF9ibGl0X2J5dGVzKGNhbWxfYnl0ZXNfb2ZfYXJyYXkoYnVmKSwgcG9zLCB0aGlzLmRhdGEsIG9mZnNldCwgbGVuKTtcbiAgcmV0dXJuIDBcbn1cbk1sRmFrZUZpbGUucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbihvZmZzZXQsYnVmLHBvcyxsZW4pe1xuICB2YXIgY2xlbiA9IHRoaXMubGVuZ3RoKCk7XG4gIGlmKG9mZnNldCArIGxlbiA+PSBjbGVuKSB7XG4gICAgbGVuID0gY2xlbiAtIG9mZnNldDtcbiAgfVxuICBpZihsZW4pIHtcbiAgICB2YXIgZGF0YSA9IGNhbWxfY3JlYXRlX2J5dGVzKGxlbnwwKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXModGhpcy5kYXRhLCBvZmZzZXQsIGRhdGEsIDAsIGxlbik7XG4gICAgYnVmLnNldChjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGRhdGEpLCBwb3MpO1xuICB9XG4gIHJldHVybiBsZW5cbn1cblxuXG4vL1Byb3ZpZGVzOiBNbEZha2VGZF9vdXRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGUsIGNhbWxfY3JlYXRlX2J5dGVzLCBjYW1sX2JsaXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZF9vdXQoZmQsZmxhZ3MpIHtcbiAgTWxGYWtlRmlsZS5jYWxsKHRoaXMsIGNhbWxfY3JlYXRlX2J5dGVzKDApKTtcbiAgdGhpcy5sb2cgPSAoZnVuY3Rpb24gKHMpIHsgcmV0dXJuIDAgfSk7XG4gIGlmKGZkID09IDEgJiYgdHlwZW9mIGNvbnNvbGUubG9nID09IFwiZnVuY3Rpb25cIilcbiAgICB0aGlzLmxvZyA9IGNvbnNvbGUubG9nO1xuICBlbHNlIGlmKGZkID09IDIgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5lcnJvcjtcbiAgZWxzZSBpZih0eXBlb2YgY29uc29sZS5sb2cgPT0gXCJmdW5jdGlvblwiKVxuICAgIHRoaXMubG9nID0gY29uc29sZS5sb2dcbiAgdGhpcy5mbGFncyA9IGZsYWdzO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5sZW5ndGggPSBmdW5jdGlvbigpIHsgcmV0dXJuIDAgfVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChvZmZzZXQsYnVmLHBvcyxsZW4pIHtcbiAgaWYodGhpcy5sb2cpIHtcbiAgICBpZihsZW4gPiAwXG4gICAgICAgJiYgcG9zID49IDBcbiAgICAgICAmJiBwb3MrbGVuIDw9IGJ1Zi5sZW5ndGhcbiAgICAgICAmJiBidWZbcG9zK2xlbi0xXSA9PSAxMClcbiAgICAgIGxlbiAtLTtcbiAgICAvLyBEbyBub3Qgb3V0cHV0IHRoZSBsYXN0IFxcbiBpZiBwcmVzZW50XG4gICAgLy8gYXMgY29uc29sZSBsb2dnaW5nIGRpc3BsYXkgYSBuZXdsaW5lIGF0IHRoZSBlbmRcbiAgICB2YXIgc3JjID0gY2FtbF9jcmVhdGVfYnl0ZXMobGVuKTtcbiAgICBjYW1sX2JsaXRfYnl0ZXMoY2FtbF9ieXRlc19vZl9hcnJheShidWYpLCBwb3MsIHNyYywgMCwgbGVuKTtcbiAgICB0aGlzLmxvZyhzcmMudG9VdGYxNigpKTtcbiAgICByZXR1cm4gMDtcbiAgfVxuICBjYW1sX3JhaXNlX3N5c19lcnJvcih0aGlzLmZkICArIFwiOiBmaWxlIGRlc2NyaXB0b3IgYWxyZWFkeSBjbG9zZWRcIik7XG59XG5NbEZha2VGZF9vdXQucHJvdG90eXBlLnJlYWQgPSBmdW5jdGlvbiAob2Zmc2V0LCBidWYsIHBvcywgbGVuKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMuZmQgICsgXCI6IGZpbGUgZGVzY3JpcHRvciBpcyB3cml0ZSBvbmx5XCIpO1xufVxuTWxGYWtlRmRfb3V0LnByb3RvdHlwZS5jbG9zZSA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5sb2cgPSB1bmRlZmluZWQ7XG59XG5cblxuLy9Qcm92aWRlczogTWxGYWtlRmRcbi8vUmVxdWlyZXM6IE1sRmFrZUZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yXG5mdW5jdGlvbiBNbEZha2VGZChuYW1lLCBmaWxlLGZsYWdzKSB7XG4gIHRoaXMuZmlsZSA9IGZpbGU7XG4gIHRoaXMubmFtZSA9IG5hbWU7XG4gIHRoaXMuZmxhZ3MgPSBmbGFncztcbn1cblxuTWxGYWtlRmQucHJvdG90eXBlLmVycl9jbG9zZWQgPSBmdW5jdGlvbiAoKSB7XG4gIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKHRoaXMubmFtZSAgKyBcIjogZmlsZSBkZXNjcmlwdG9yIGFscmVhZHkgY2xvc2VkXCIpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmxlbmd0aCA9IGZ1bmN0aW9uKCkge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUubGVuZ3RoICgpXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKG9mZnNldCxidWYscG9zLGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUud3JpdGUob2Zmc2V0LGJ1Zixwb3MsbGVuKVxuICB0aGlzLmVycl9jbG9zZWQoKTtcbn1cbk1sRmFrZUZkLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG9mZnNldCwgYnVmLCBwb3MsIGxlbikge1xuICBpZih0aGlzLmZpbGUpIHJldHVybiB0aGlzLmZpbGUucmVhZChvZmZzZXQsIGJ1ZiwgcG9zLCBsZW4pXG4gIHRoaXMuZXJyX2Nsb3NlZCgpO1xufVxuTWxGYWtlRmQucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmZpbGUgPSB1bmRlZmluZWQ7XG59XG4iLCIvL1Byb3ZpZGVzOiBpbml0aWFsaXplX25hdFxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBzZXJpYWxpemVfbmF0LCBkZXNlcmlhbGl6ZV9uYXQsIGNhbWxfaGFzaF9uYXRcbmZ1bmN0aW9uIGluaXRpYWxpemVfbmF0KCkge1xuICBjYW1sX2N1c3RvbV9vcHNbXCJfbmF0XCJdID1cbiAgICB7IGRlc2VyaWFsaXplIDogZGVzZXJpYWxpemVfbmF0LFxuICAgICAgc2VyaWFsaXplIDogc2VyaWFsaXplX25hdCxcbiAgICAgIGhhc2ggOiBjYW1sX2hhc2hfbmF0XG4gICAgfVxufVxuXG4vL1Byb3ZpZGVzOiBNbE5hdFxuZnVuY3Rpb24gTWxOYXQoeCl7XG4gIHRoaXMuZGF0YSA9IG5ldyBJbnQzMkFycmF5KHgpO1xuICAvLyBGb3IgbnVtIDwgMS41XG4gIC8vIGxlbmd0aF9uYXQgaXNuJ3QgZXh0ZXJuYWwsIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGUgT2JqLnNpemVcbiAgLy8gd29yayBvdXQgcmlnaHQuXG4gIC8vIFdlIGFkZCArMiB0byB0aGUgYXJyYXkgbGVuZ3RoOlxuICAvLyAtICsxIGZvciB0aGUgdGFnXG4gIC8vIC0gKzEgZm9yIHRoZSBjdXN0b21fb3BzIHNsb3RcbiAgdGhpcy5sZW5ndGggPSB0aGlzLmRhdGEubGVuZ3RoICsgMlxufVxuXG5NbE5hdC5wcm90b3R5cGUuY2FtbF9jdXN0b20gPSBcIl9uYXRcIjtcblxuLy9Qcm92aWRlczogY2FtbF9oYXNoX25hdFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnQsIG51bV9kaWdpdHNfbmF0XG5mdW5jdGlvbiBjYW1sX2hhc2hfbmF0KHgpIHtcbiAgdmFyIGxlbiA9IG51bV9kaWdpdHNfbmF0KHgsIDAsIHguZGF0YS5sZW5ndGgpO1xuICB2YXIgaCA9IDA7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgeC5kYXRhW2ldKTtcbiAgfVxuICByZXR1cm4gaDtcbn1cblxuLy9Qcm92aWRlczogbGVuZ3RoX25hdFxuZnVuY3Rpb24gbGVuZ3RoX25hdCh4KSB7XG4gIHJldHVybiB4LmRhdGEubGVuZ3RoO1xufVxuXG4vL1Byb3ZpZGVzOiBuYXRfb2ZfYXJyYXlcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBuYXRfb2ZfYXJyYXkobCl7XG4gIHJldHVybiBuZXcgTWxOYXQobCk7XG59XG5cbi8vUHJvdmlkZXM6IGNyZWF0ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBjcmVhdGVfbmF0KHNpemUpIHtcbiAgdmFyIGFyciA9IG5ldyBNbE5hdChzaXplKTtcbiAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKykge1xuICAgIGFyci5kYXRhW2ldID0gLTE7XG4gIH1cbiAgcmV0dXJuIGFycjtcbn1cblxuLy9Qcm92aWRlczogc2V0X3RvX3plcm9fbmF0XG5mdW5jdGlvbiBzZXRfdG9femVyb19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBuYXQuZGF0YVtvZnMraV0gPSAwO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBibGl0X25hdFxuZnVuY3Rpb24gYmxpdF9uYXQobmF0MSwgb2ZzMSwgbmF0Miwgb2ZzMiwgbGVuKSB7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIG5hdDEuZGF0YVtvZnMxK2ldID0gbmF0Mi5kYXRhW29mczIraV07XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRcbmZ1bmN0aW9uIHNldF9kaWdpdF9uYXQobmF0LCBvZnMsIGRpZ2l0KSB7XG4gIG5hdC5kYXRhW29mc10gPSBkaWdpdDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IG50aF9kaWdpdF9uYXRcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXQobmF0LCBvZnMpIHtcbiAgcmV0dXJuIG5hdC5kYXRhW29mc107XG59XG5cbi8vUHJvdmlkZXM6IHNldF9kaWdpdF9uYXRfbmF0aXZlXG5mdW5jdGlvbiBzZXRfZGlnaXRfbmF0X25hdGl2ZShuYXQsIG9mcywgZGlnaXQpIHtcbiAgbmF0LmRhdGFbb2ZzXSA9IGRpZ2l0O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogbnRoX2RpZ2l0X25hdF9uYXRpdmVcbmZ1bmN0aW9uIG50aF9kaWdpdF9uYXRfbmF0aXZlKG5hdCwgb2ZzKSB7XG4gIHJldHVybiBuYXQuZGF0YVtvZnNdO1xufVxuXG4vL1Byb3ZpZGVzOiBudW1fZGlnaXRzX25hdFxuZnVuY3Rpb24gbnVtX2RpZ2l0c19uYXQobmF0LCBvZnMsIGxlbikge1xuICBmb3IodmFyIGkgPSBsZW4gLSAxOyBpID49IDA7IGktLSkge1xuICAgIGlmKG5hdC5kYXRhW29mcytpXSAhPSAwKSByZXR1cm4gaSsxO1xuICB9XG4gIHJldHVybiAxOyAvLyAwIGNvdW50cyBhcyAxIGRpZ2l0XG59XG5cbi8vUHJvdmlkZXM6IG51bV9sZWFkaW5nX3plcm9fYml0c19pbl9kaWdpdFxuZnVuY3Rpb24gbnVtX2xlYWRpbmdfemVyb19iaXRzX2luX2RpZ2l0KG5hdCwgb2ZzKSB7XG4gIHZhciBhID0gbmF0LmRhdGFbb2ZzXTtcbiAgdmFyIGIgPSAwO1xuICBpZihhICYgMHhGRkZGMDAwMCkgeyBiICs9MTY7IGEgPj4+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+IDApKSByZXR1cm4gLTE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNvbXBhcmVfbmF0X3JlYWxcbi8vUmVxdWlyZXM6IGNvbXBhcmVfbmF0XG5mdW5jdGlvbiBjb21wYXJlX25hdF9yZWFsKG5hdDEsbmF0Mil7XG4gIHJldHVybiBjb21wYXJlX25hdChuYXQxLDAsbmF0MS5kYXRhLmxlbmd0aCxuYXQyLDAsbmF0Mi5kYXRhLmxlbmd0aCk7XG59XG5cbi8vUHJvdmlkZXM6IGxhbmRfZGlnaXRfbmF0XG5mdW5jdGlvbiBsYW5kX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSAmPSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBsb3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBsb3JfZGlnaXRfbmF0KG5hdDEsIG9mczEsIG5hdDIsIG9mczIpIHtcbiAgbmF0MS5kYXRhW29mczFdIHw9IG5hdDIuZGF0YVtvZnMyXTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGx4b3JfZGlnaXRfbmF0XG5mdW5jdGlvbiBseG9yX2RpZ2l0X25hdChuYXQxLCBvZnMxLCBuYXQyLCBvZnMyKSB7XG4gIG5hdDEuZGF0YVtvZnMxXSBePSBuYXQyLmRhdGFbb2ZzMl07XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IHNlcmlhbGl6ZV9uYXRcbmZ1bmN0aW9uIHNlcmlhbGl6ZV9uYXQod3JpdGVyLCBuYXQsIHN6KXtcbiAgdmFyIGxlbiA9IG5hdC5kYXRhLmxlbmd0aDtcbiAgd3JpdGVyLndyaXRlKDMyLCBsZW4pO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspe1xuICAgIHdyaXRlci53cml0ZSgzMiwgbmF0LmRhdGFbaV0pO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgc3pbMV0gPSBsZW4gKiA4O1xufVxuXG4vL1Byb3ZpZGVzOiBkZXNlcmlhbGl6ZV9uYXRcbi8vUmVxdWlyZXM6IE1sTmF0XG5mdW5jdGlvbiBkZXNlcmlhbGl6ZV9uYXQocmVhZGVyLCBzeil7XG4gIHZhciBsZW4gPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIgbmF0ID0gbmV3IE1sTmF0KGxlbik7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgbmF0LmRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICB9XG4gIHN6WzBdID0gbGVuICogNDtcbiAgcmV0dXJuIG5hdDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxNCBIdWdvIEhldXphcmRcblxuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVcbnZhciBjYW1sX2dyX3N0YXRlO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX2dldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZVxuLy9SZXF1aXJlczogY2FtbF9uYW1lZF92YWx1ZSwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9tYXliZV9hdHRhY2hfYmFja3RyYWNlXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2dldCgpIHtcbiAgaWYoY2FtbF9ncl9zdGF0ZSkge1xuICAgIHJldHVybiBjYW1sX2dyX3N0YXRlO1xuICB9XG4gIHRocm93IGNhbWxfbWF5YmVfYXR0YWNoX2JhY2t0cmFjZShbMCxjYW1sX25hbWVkX3ZhbHVlKFwiR3JhcGhpY3MuR3JhcGhpY19mYWlsdXJlXCIpLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiTm90IGluaXRpYWxpemVkXCIpXSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N0YXRlX3NldFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZSxjYW1sX2dyX3N0YXRlX2luaXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCkge1xuICBjYW1sX2dyX3N0YXRlPWN0eDtcbiAgY2FtbF9ncl9zdGF0ZV9pbml0KClcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfb3Blbl9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfc2V0XG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX2dyYXBoKGluZm8pe1xuICB2YXIgaW5mbyA9IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKGluZm8pO1xuICBmdW5jdGlvbiBnZXQobmFtZSl7XG4gICAgdmFyIHJlcyA9IGluZm8ubWF0Y2goXCIoXnwsKSAqXCIrbmFtZStcIiAqPSAqKFthLXpBLVowLTlfXSspICooLHwkKVwiKTtcbiAgICBpZihyZXMpIHJldHVybiByZXNbMl07XG4gIH1cbiAgdmFyIHNwZWNzID0gW107XG4gIGlmKCEoaW5mbz09XCJcIikpIHNwZWNzLnB1c2goaW5mbyk7XG4gIHZhciB0YXJnZXQgPSBnZXQoXCJ0YXJnZXRcIik7XG4gIGlmKCF0YXJnZXQpIHRhcmdldD1cIlwiO1xuICB2YXIgc3RhdHVzID0gZ2V0KFwic3RhdHVzXCIpO1xuICBpZighc3RhdHVzKSBzcGVjcy5wdXNoKFwic3RhdHVzPTFcIilcblxuICB2YXIgdyA9IGdldChcIndpZHRoXCIpO1xuICB3ID0gdz9wYXJzZUludCh3KToyMDA7XG4gIHNwZWNzLnB1c2goXCJ3aWR0aD1cIit3KTtcblxuICB2YXIgaCA9IGdldChcImhlaWdodFwiKTtcbiAgaCA9IGg/cGFyc2VJbnQoaCk6MjAwO1xuICBzcGVjcy5wdXNoKFwiaGVpZ2h0PVwiK2gpO1xuXG4gIHZhciB3aW4gPSBnbG9iYWxUaGlzLm9wZW4oXCJhYm91dDpibGFua1wiLHRhcmdldCxzcGVjcy5qb2luKFwiLFwiKSk7XG4gIGlmKCF3aW4pIHtjYW1sX2ZhaWx3aXRoKFwiR3JhcGhpY3Mub3Blbl9ncmFwaDogY2Fubm90IG9wZW4gdGhlIHdpbmRvd1wiKX1cbiAgdmFyIGRvYyA9IHdpbi5kb2N1bWVudDtcbiAgdmFyIGNhbnZhcyA9IGRvYy5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICBjYW52YXMud2lkdGggPSB3O1xuICBjYW52YXMuaGVpZ2h0ID0gaDtcbiAgdmFyIGN0eCA9IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlKGNhbnZhcyx3LGgpO1xuICBjdHguc2V0X3RpdGxlID0gZnVuY3Rpb24gKHRpdGxlKSB7XG4gICAgZG9jLnRpdGxlID0gdGl0bGU7XG4gIH07XG4gIGNhbWxfZ3Jfc3RhdGVfc2V0KGN0eCk7XG4gIHZhciBib2R5ID0gZG9jLmJvZHk7XG4gIGJvZHkuc3R5bGUubWFyZ2luID0gXCIwcHhcIjtcbiAgYm9keS5hcHBlbmRDaGlsZChjYW52YXMpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zdGF0ZV9pbml0XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3NldF9jb2xvcixjYW1sX2dyX21vdmV0byxjYW1sX2dyX3Jlc2l6ZV93aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgsY2FtbF9ncl9zZXRfdGV4dF9zaXplLGNhbWxfZ3Jfc2V0X2ZvbnRcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc2V0X3dpbmRvd190aXRsZVxuZnVuY3Rpb24gY2FtbF9ncl9zdGF0ZV9pbml0KCl7XG4gIGNhbWxfZ3JfbW92ZXRvKGNhbWxfZ3Jfc3RhdGUueCxjYW1sX2dyX3N0YXRlLnkpO1xuICBjYW1sX2dyX3Jlc2l6ZV93aW5kb3coY2FtbF9ncl9zdGF0ZS53aWR0aCxjYW1sX2dyX3N0YXRlLmhlaWdodCk7XG4gIGNhbWxfZ3Jfc2V0X2xpbmVfd2lkdGgoY2FtbF9ncl9zdGF0ZS5saW5lX3dpZHRoKTtcbiAgY2FtbF9ncl9zZXRfdGV4dF9zaXplKGNhbWxfZ3Jfc3RhdGUudGV4dF9zaXplKTtcbiAgY2FtbF9ncl9zZXRfZm9udChjYW1sX2dyX3N0YXRlLmZvbnQpO1xuICBjYW1sX2dyX3NldF9jb2xvcihjYW1sX2dyX3N0YXRlLmNvbG9yKTtcbiAgY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKGNhbWxfZ3Jfc3RhdGUudGl0bGUpO1xuICAvL2NhbWxfZ3JfcmVzaXplX3dpbmRvdyBtaWdodCByZXNldCBzb21lIGNhbnZhcycgcHJvcGVydGllc1xuICBjYW1sX2dyX3N0YXRlLmNvbnRleHQudGV4dEJhc2VsaW5lID0gJ2JvdHRvbSc7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc3RhdGVfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX2dyX3N0YXRlX2NyZWF0ZShjYW52YXMsdyxoKXtcbiAgdmFyIGNvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dChcIjJkXCIpO1xuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IGNvbnRleHQsXG4gICAgY2FudmFzIDogY2FudmFzLFxuICAgIHggOiAwLFxuICAgIHkgOiAwLFxuICAgIHdpZHRoIDogdyxcbiAgICBoZWlnaHQgOiBoLFxuICAgIGxpbmVfd2lkdGggOiAxLFxuICAgIGZvbnQgOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKFwiZml4ZWRcIiksXG4gICAgdGV4dF9zaXplIDogMjYsXG4gICAgY29sb3IgOiAweDAwMDAwMCxcbiAgICB0aXRsZSA6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIilcbiAgfTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kb2Nfb2Zfc3RhdGVcbmZ1bmN0aW9uIGNhbWxfZ3JfZG9jX29mX3N0YXRlKHN0YXRlKSB7XG4gIGlmKHN0YXRlLmNhbnZhcy5vd25lckRvY3VtZW50KVxuICAgIHJldHVybiBzdGF0ZS5jYW52YXMub3duZXJEb2N1bWVudDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9ncmFwaFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2VfZ3JhcGgoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNhbnZhcy53aWR0aCA9IDA7XG4gIHMuY2FudmFzLmhlaWdodCA9IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF93aW5kb3dfdGl0bGVcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9zZXRfd2luZG93X3RpdGxlKG5hbWUpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMudGl0bGUgPSBuYW1lO1xuICB2YXIganNuYW1lID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZSk7XG4gIGlmKHMuc2V0X3RpdGxlKSBzLnNldF90aXRsZShqc25hbWUpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9yZXNpemVfd2luZG93XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9yZXNpemVfd2luZG93KHcsaCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKVxuICBzLndpZHRoID0gdztcbiAgcy5oZWlnaHQgPSBoO1xuICBzLmNhbnZhcy53aWR0aCA9IHc7XG4gIHMuY2FudmFzLmhlaWdodCA9IGg7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NsZWFyX2dyYXBoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jbGVhcl9ncmFwaCgpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY2FudmFzLndpZHRoID0gcy53aWR0aDtcbiAgcy5jYW52YXMuaGVpZ2h0ID0gcy5oZWlnaHQ7XG4gIC8vICBzLmNvbnRleHQuc3Ryb2tlUmVjdCAoMC4sIDAuLCBzLndpZHRoLCBzLmhlaWdodCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV94KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMud2lkdGg7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpemVfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2l6ZV95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuaGVpZ2h0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X2NvbG9yXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfY29sb3IoY29sb3Ipe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGZ1bmN0aW9uIGNvbnZlcnQobnVtYmVyKSB7XG4gICAgdmFyIHN0ciA9ICcnICsgbnVtYmVyLnRvU3RyaW5nKDE2KTtcbiAgICB3aGlsZSAoc3RyLmxlbmd0aCA8IDIpIHN0ciA9ICcwJyArIHN0cjtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIHZhclxuICByID0gKGNvbG9yID4+IDE2KSAmIDB4ZmYsXG4gIGcgPSAoY29sb3IgPj4gOCkgICYgMHhmZixcbiAgYiA9IChjb2xvciA+PiAwKSAgJiAweGZmO1xuICBzLmNvbG9yPWNvbG9yO1xuICB2YXIgY19zdHIgPSAnIycgKyBjb252ZXJ0KHIpICsgY29udmVydChnKSArIGNvbnZlcnQoYik7XG4gIHMuY29udGV4dC5maWxsU3R5bGUgPSAgIGNfc3RyO1xuICBzLmNvbnRleHQuc3Ryb2tlU3R5bGUgPSBjX3N0cjtcbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3Bsb3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3Bsb3QoeCx5KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgaW09cy5jb250ZXh0LmNyZWF0ZUltYWdlRGF0YSgxLDEpO1xuICB2YXIgZCA9IGltLmRhdGE7XG4gIHZhciBjb2xvciA9IHMuY29sb3I7XG4gIGRbMF0gPSAoY29sb3IgPj4gMTYpICYgMHhmZjsgLy9yXG4gIGRbMV0gPSAoY29sb3IgPj4gOCkgICYgMHhmZiwgLy9nXG4gIGRbMl0gPSAoY29sb3IgPj4gMCkgICYgMHhmZjsgLy9iXG4gIGRbM10gPSAweEZGOyAvL2FcbiAgcy54PXg7XG4gIHMueT15O1xuICBzLmNvbnRleHQucHV0SW1hZ2VEYXRhKGltLHgscy5oZWlnaHQgLSB5KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfcG9pbnRfY29sb3Jcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX3BvaW50X2NvbG9yKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGltPXMuY29udGV4dC5nZXRJbWFnZURhdGEoeCxzLmhlaWdodCAtIHksMSwxKTtcbiAgdmFyIGQgPSBpbS5kYXRhO1xuICByZXR1cm4gKGRbMF0gPDwgMTYpICsgKGRbMV0gPDwgOCkgKyBkWzJdO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9tb3ZldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX21vdmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMueD14O1xuICBzLnk9eTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfY3VycmVudF94XG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9jdXJyZW50X3goKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICByZXR1cm4gcy54XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2N1cnJlbnRfeVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3VycmVudF95KCl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMueVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9saW5ldG9cbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2xpbmV0byh4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuY29udGV4dC5iZWdpblBhdGgoKTtcbiAgcy5jb250ZXh0Lm1vdmVUbyhzLngscy5oZWlnaHQgLSBzLnkpO1xuICBzLmNvbnRleHQubGluZVRvKHgscy5oZWlnaHQgLSB5KTtcbiAgcy5jb250ZXh0LnN0cm9rZSgpO1xuICBzLng9eDtcbiAgcy55PXk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2RyYXdfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuc3Ryb2tlUmVjdCh4LHMuaGVpZ2h0IC0geSx3LC1oKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYXJjX2F1eFxuZnVuY3Rpb24gY2FtbF9ncl9hcmNfYXV4KGN0eCxjeCxjeSxyeSxyeCxhMSxhMil7XG4gIHdoaWxlKGExPmEyKSBhMis9MzYwO1xuICBhMSAvPSAxODA7XG4gIGEyIC89IDE4MDtcbiAgdmFyIHJvdCA9IDAseFBvcyx5UG9zLHhQb3NfcHJldix5UG9zX3ByZXY7XG4gIHZhciBzcGFjZSA9IDI7XG4gIHZhciBudW0gPSAoKChhMiAtIGExKSAqIE1hdGguUEkgKiAoKHJ4K3J5KS8yKSkgLyBzcGFjZSkgfCAwO1xuICB2YXIgZGVsdGEgPSAoYTIgLSBhMSkgKiBNYXRoLlBJIC8gbnVtO1xuICB2YXIgaSA9IGExICogTWF0aC5QSTtcbiAgZm9yICh2YXIgaj0wO2o8PW51bTtqKyspe1xuICAgIHhQb3MgPSBjeCAtIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguc2luKHJvdCAqIE1hdGguUEkpICsgKHJ5ICogTWF0aC5jb3MoaSkpICogTWF0aC5jb3Mocm90ICogTWF0aC5QSSk7XG4gICAgeFBvcyA9IHhQb3MudG9GaXhlZCgyKTtcbiAgICB5UG9zID0gY3kgKyAocnkgKiBNYXRoLmNvcyhpKSkgKiBNYXRoLnNpbihyb3QgKiBNYXRoLlBJKSArIChyeCAqIE1hdGguc2luKGkpKSAqIE1hdGguY29zKHJvdCAqIE1hdGguUEkpO1xuICAgIHlQb3MgPSB5UG9zLnRvRml4ZWQoMik7XG4gICAgaWYgKGo9PTApIHtcbiAgICAgIGN0eC5tb3ZlVG8oeFBvcywgeVBvcyk7XG4gICAgfSBlbHNlIGlmICh4UG9zX3ByZXYhPXhQb3MgfHwgeVBvc19wcmV2IT15UG9zKXtcbiAgICAgIGN0eC5saW5lVG8oeFBvcywgeVBvcyk7XG4gICAgfVxuICAgIHhQb3NfcHJldj14UG9zO1xuICAgIHlQb3NfcHJldj15UG9zO1xuICAgIGktPSBkZWx0YTsvL2Njd1xuICB9XG4gIHJldHVybiAwO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuc3Ryb2tlKCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NldF9saW5lX3dpZHRoXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9zZXRfbGluZV93aWR0aCh3KXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmxpbmVfd2lkdGggPSB3O1xuICBzLmNvbnRleHQubGluZVdpZHRoID0gd1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3JlY3Rcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcmVjdCh4LHksdyxoKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuZmlsbFJlY3QoeCxzLmhlaWdodCAtIHksdywtaCk7XG4gIHJldHVybiAwO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9maWxsX3BvbHlcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0XG5mdW5jdGlvbiBjYW1sX2dyX2ZpbGxfcG9seShhcil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy5jb250ZXh0LmJlZ2luUGF0aCgpO1xuICBzLmNvbnRleHQubW92ZVRvKGFyWzFdWzFdLHMuaGVpZ2h0IC0gYXJbMV1bMl0pO1xuICBmb3IodmFyIGkgPSAyOyBpIDwgYXIubGVuZ3RoOyBpKyspXG4gICAgcy5jb250ZXh0LmxpbmVUbyhhcltpXVsxXSxzLmhlaWdodCAtIGFyW2ldWzJdKTtcbiAgcy5jb250ZXh0LmxpbmVUbyhhclsxXVsxXSxzLmhlaWdodCAtIGFyWzFdWzJdKTtcbiAgcy5jb250ZXh0LmZpbGwoKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZmlsbF9hcmNcbi8vUmVxdWlyZXM6IGNhbWxfZ3Jfc3RhdGVfZ2V0LCBjYW1sX2dyX2FyY19hdXhcbmZ1bmN0aW9uIGNhbWxfZ3JfZmlsbF9hcmMoeCx5LHJ4LHJ5LGExLGEyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICBzLmNvbnRleHQuYmVnaW5QYXRoKCk7XG4gIGNhbWxfZ3JfYXJjX2F1eChzLmNvbnRleHQseCxzLmhlaWdodCAtIHkscngscnksYTEsYTIpO1xuICBzLmNvbnRleHQuZmlsbCgpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9kcmF3X3N0clxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19zdHIoc3RyKXtcbiAgdmFyIHMgPSBjYW1sX2dyX3N0YXRlX2dldCgpO1xuICB2YXIgbSA9IHMuY29udGV4dC5tZWFzdXJlVGV4dChzdHIpO1xuICB2YXIgZHggPSBtLndpZHRoO1xuICBzLmNvbnRleHQuZmlsbFRleHQoc3RyLHMueCxzLmhlaWdodCAtIHMueSk7XG4gIHMueCArPSBkeCB8IDA7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfY2hhclxuLy9SZXF1aXJlczogY2FtbF9ncl9kcmF3X3N0clxuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X2NoYXIoYyl7XG4gIGNhbWxfZ3JfZHJhd19zdHIoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2RyYXdfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2dyX2RyYXdfc3RyXG4vL1JlcXVpcmVzOiBjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9ncl9kcmF3X3N0cmluZyhzdHIpe1xuICBjYW1sX2dyX2RyYXdfc3RyKGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHN0cikpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9zZXRfZm9udFxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF9mb250KGYpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHMuZm9udCA9IGY7XG4gIHMuY29udGV4dC5mb250ID0gcy50ZXh0X3NpemUgKyBcInB4IFwiICsgY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcocy5mb250KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ3Jfc2V0X3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3NldF90ZXh0X3NpemUoc2l6ZSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcy50ZXh0X3NpemUgPSBzaXplO1xuICBzLmNvbnRleHQuZm9udCA9IHMudGV4dF9zaXplICsgXCJweCBcIiArIGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHMuZm9udCk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3RleHRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2dyX3RleHRfc2l6ZSh0eHQpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciB3ID0gcy5jb250ZXh0Lm1lYXN1cmVUZXh0KGNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nKHR4dCkpLndpZHRoO1xuICByZXR1cm4gWzAsdyxzLnRleHRfc2l6ZV07XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9ncl9tYWtlX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9tYWtlX2ltYWdlKGFycil7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgdmFyIGggPSBhcnIubGVuZ3RoIC0gMSA7XG4gIHZhciB3ID0gYXJyWzFdLmxlbmd0aCAtIDE7XG4gIHZhciBpbSA9IHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEodyxoKTtcbiAgZm9yKHZhciBpPTA7aTxoO2krKyl7XG4gICAgZm9yKHZhciBqPTA7ajx3O2orKyl7XG4gICAgICB2YXIgYyA9IGFycltpKzFdW2orMV07XG4gICAgICB2YXIgbyA9IGkqKHcqNCkgKyAoaiAqIDQpO1xuICAgICAgaWYoYyA9PSAtMSkge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IDA7XG4gICAgICAgIGltLmRhdGFbbyArIDFdID0gMDtcbiAgICAgICAgaW0uZGF0YVtvICsgMl0gPSAwO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbS5kYXRhW28gKyAwXSA9IGMgPj4gMTYgJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAxXSA9IGMgPj4gIDggJiAweGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAyXSA9IGMgPj4gIDAgJiAwWGZmO1xuICAgICAgICBpbS5kYXRhW28gKyAzXSA9IDB4ZmY7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBpbVxufVxuLy9Qcm92aWRlczogY2FtbF9ncl9kdW1wX2ltYWdlXG4vL1JlcXVpcmVzOiBjYW1sX2dyX3N0YXRlX2dldFxuZnVuY3Rpb24gY2FtbF9ncl9kdW1wX2ltYWdlKGltKXtcbiAgdmFyIGRhdGEgPSBbMF1cbiAgZm9yKHZhciBpPTA7IGk8aW0uaGVpZ2h0O2krKyl7XG4gICAgZGF0YVtpKzFdID0gWzBdXG4gICAgZm9yKHZhciBqPTA7IGo8aW0ud2lkdGg7aisrKXtcbiAgICAgIHZhciBvID0gaSooaW0ud2lkdGgqNCkgKyAoaiAqIDQpLFxuICAgICAgICAgIHIgPSBpbS5kYXRhW28rMF0sXG4gICAgICAgICAgZyA9IGltLmRhdGFbbysxXSxcbiAgICAgICAgICBiID0gaW0uZGF0YVtvKzJdO1xuICAgICAgZGF0YVtpKzFdW2orMV0gPSAociA8PCAxNikgKyAoZyA8PCA4KSArIGJcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRhdGFcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZHJhd19pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfZHJhd19pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIGlmKCFpbS5pbWFnZSkge1xuICAgIHZhciBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiY2FudmFzXCIpO1xuICAgIGNhbnZhcy53aWR0aCA9IHMud2lkdGg7XG4gICAgY2FudmFzLmhlaWdodCA9IHMuaGVpZ2h0O1xuICAgIGNhbnZhcy5nZXRDb250ZXh0KFwiMmRcIikucHV0SW1hZ2VEYXRhKGltLDAsMCk7XG4gICAgdmFyIGltYWdlID0gbmV3IGdsb2JhbFRoaXMuSW1hZ2UoKTtcbiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBzLmNvbnRleHQuZHJhd0ltYWdlKGltYWdlLHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5KTtcbiAgICAgIGltLmltYWdlID0gaW1hZ2U7XG4gICAgfVxuICAgIGltYWdlLnNyYyA9IGNhbnZhcy50b0RhdGFVUkwoXCJpbWFnZS9wbmdcIik7XG4gIH0gZWxzZSB7XG4gICAgcy5jb250ZXh0LmRyYXdJbWFnZShpbS5pbWFnZSx4LHMuaGVpZ2h0IC0gaW0uaGVpZ2h0IC0geSk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX2NyZWF0ZV9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfY3JlYXRlX2ltYWdlKHgseSl7XG4gIHZhciBzID0gY2FtbF9ncl9zdGF0ZV9nZXQoKTtcbiAgcmV0dXJuIHMuY29udGV4dC5jcmVhdGVJbWFnZURhdGEoeCx5KTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfYmxpdF9pbWFnZVxuLy9SZXF1aXJlczogY2FtbF9ncl9zdGF0ZV9nZXRcbmZ1bmN0aW9uIGNhbWxfZ3JfYmxpdF9pbWFnZShpbSx4LHkpe1xuICB2YXIgcyA9IGNhbWxfZ3Jfc3RhdGVfZ2V0KCk7XG4gIHZhciBpbTIgPSBzLmNvbnRleHQuZ2V0SW1hZ2VEYXRhKHgscy5oZWlnaHQgLSBpbS5oZWlnaHQgLSB5LGltLndpZHRoLGltLmhlaWdodCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW0yLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICBpbS5kYXRhW2ldID0gaW0yLmRhdGFbaV07XG4gICAgaW0uZGF0YVtpKzFdID0gaW0yLmRhdGFbaSsxXTtcbiAgICBpbS5kYXRhW2krMl0gPSBpbTIuZGF0YVtpKzJdO1xuICAgIGltLmRhdGFbaSszXSA9IGltMi5kYXRhW2krM107XG4gIH1cbiAgcmV0dXJuIDA7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3NpZ2lvX2hhbmRsZXJcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9faGFuZGxlcigpe3JldHVybiAwfVxuLy9Qcm92aWRlczogY2FtbF9ncl9zaWdpb19zaWduYWxcbmZ1bmN0aW9uIGNhbWxfZ3Jfc2lnaW9fc2lnbmFsKCl7cmV0dXJuIDB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3dhaXRfZXZlbnRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2FpdF9ldmVudChfZXZsKXtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2FpdF9ldmVudCBub3QgSW1wbGVtZW50ZWQ6IHVzZSBHcmFwaGljc19qcyBpbnN0ZWFkXCIpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dyX3N5bmNocm9uaXplXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3N5bmNocm9uaXplICgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfc3luY2hyb25pemUgbm90IEltcGxlbWVudGVkXCIpO1xufVxuLy9Qcm92aWRlczogY2FtbF9ncl9yZW1lbWJlcl9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX3JlbWVtYmVyX21vZGUgKCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9ncl9yZW1lbWJlcl9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JfZGlzcGxheV9tb2RlXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2dyX2Rpc3BsYXlfbW9kZSgpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfZGlzcGxheV9tb2RlIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl93aW5kb3dfaWRcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3Jfd2luZG93X2lkKGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3Jfd2luZG93X2lkIG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9vcGVuX3N1YndpbmRvd1xuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9ncl9vcGVuX3N1YndpbmRvdyhhLGIsYyxkKSB7XG4gIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2dyX29wZW5fc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ncl9jbG9zZV9zdWJ3aW5kb3dcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93KGEpIHtcbiAgY2FtbF9mYWlsd2l0aChcImNhbWxfZ3JfY2xvc2Vfc3Vid2luZG93IG5vdCBJbXBsZW1lbnRlZFwiKTtcbn1cbiIsIlxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbnZhciBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCA9IDA7XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlclxuLy9SZXF1aXJlczogY2FtbF9jdXN0b21fZXZlbnRfaW5kZXhcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZWdpc3RlcihldmVudF9uYW1lLCBldmVudF90YWcsIGV2ZW50X3R5cGUpIHtcbiAgY2FtbF9jdXN0b21fZXZlbnRfaW5kZXggKz0gMTtcbiAgcmV0dXJuIFswLCBjYW1sX2N1c3RvbV9ldmVudF9pbmRleCwgZXZlbnRfbmFtZSwgZXZlbnRfdHlwZSwgZXZlbnRfdGFnXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9ydW50aW1lX2V2ZW50c191c2VyX3dyaXRlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfd3JpdGUoZXZlbnQsIGV2ZW50X2NvbnRlbnQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfdXNlcl9yZXNvbHZlXG5mdW5jdGlvbiBjYW1sX3J1bnRpbWVfZXZlbnRzX3VzZXJfcmVzb2x2ZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfc3RhcnRcbmZ1bmN0aW9uIGNhbWxfbWxfcnVudGltZV9ldmVudHNfc3RhcnQoKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlXG4vL0FsaWFzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3BhdXNlXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3BhdXNlKCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9ydW50aW1lX2V2ZW50c19yZXN1bWVcbi8vQWxpYXM6IGNhbWxfcnVudGltZV9ldmVudHNfcmVzdW1lXG5mdW5jdGlvbiBjYW1sX21sX3J1bnRpbWVfZXZlbnRzX3Jlc3VtZSgpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfY3JlYXRlX2N1cnNvclxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19jcmVhdGVfY3Vyc29yKHRhcmdldCkge1xuICByZXR1cm4ge307XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3JcbmZ1bmN0aW9uIGNhbWxfcnVudGltZV9ldmVudHNfZnJlZV9jdXJzb3IoY3Vyc29yKSB7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3J1bnRpbWVfZXZlbnRzX3JlYWRfcG9sbFxuZnVuY3Rpb24gY2FtbF9ydW50aW1lX2V2ZW50c19yZWFkX3BvbGwoY3Vyc29yLCBjYWxsYmFja3MsIG51bSkge1xuICByZXR1cm4gMDtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuLy8gTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX21hcnNoYWxfY29uc3RhbnRzXG52YXIgY2FtbF9tYXJzaGFsX2NvbnN0YW50cyA9IHtcbiAgUFJFRklYX1NNQUxMX0JMT0NLOiAgICAgICAgIDB4ODAsXG4gIFBSRUZJWF9TTUFMTF9JTlQ6ICAgICAgICAgICAweDQwLFxuICBQUkVGSVhfU01BTExfU1RSSU5HOiAgICAgICAgMHgyMCxcbiAgQ09ERV9JTlQ4OiAgICAgICAgICAgICAgICAgIDB4MDAsXG4gIENPREVfSU5UMTY6ICAgICAgICAgICAgICAgICAweDAxLFxuICBDT0RFX0lOVDMyOiAgICAgICAgICAgICAgICAgMHgwMixcbiAgQ09ERV9JTlQ2NDogICAgICAgICAgICAgICAgIDB4MDMsXG4gIENPREVfU0hBUkVEODogICAgICAgICAgICAgICAweDA0LFxuICBDT0RFX1NIQVJFRDE2OiAgICAgICAgICAgICAgMHgwNSxcbiAgQ09ERV9TSEFSRUQzMjogICAgICAgICAgICAgIDB4MDYsXG4gIENPREVfQkxPQ0szMjogICAgICAgICAgICAgICAweDA4LFxuICBDT0RFX0JMT0NLNjQ6ICAgICAgICAgICAgICAgMHgxMyxcbiAgQ09ERV9TVFJJTkc4OiAgICAgICAgICAgICAgIDB4MDksXG4gIENPREVfU1RSSU5HMzI6ICAgICAgICAgICAgICAweDBBLFxuICBDT0RFX0RPVUJMRV9CSUc6ICAgICAgICAgICAgMHgwQixcbiAgQ09ERV9ET1VCTEVfTElUVExFOiAgICAgICAgIDB4MEMsXG4gIENPREVfRE9VQkxFX0FSUkFZOF9CSUc6ICAgICAweDBELFxuICBDT0RFX0RPVUJMRV9BUlJBWThfTElUVExFOiAgMHgwRSxcbiAgQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6ICAgIDB4MEYsXG4gIENPREVfRE9VQkxFX0FSUkFZMzJfTElUVExFOiAweDA3LFxuICBDT0RFX0NPREVQT0lOVEVSOiAgICAgICAgICAgMHgxMCxcbiAgQ09ERV9JTkZJWFBPSU5URVI6ICAgICAgICAgIDB4MTEsXG4gIENPREVfQ1VTVE9NOiAgICAgICAgICAgICAgICAweDEyLFxuICBDT0RFX0NVU1RPTV9MRU46ICAgICAgICAgICAgMHgxOCxcbiAgQ09ERV9DVVNUT01fRklYRUQ6ICAgICAgICAgIDB4MTlcbn1cblxuXG4vL1Byb3ZpZGVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheSwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gVUludDhBcnJheVJlYWRlciAocywgaSkgeyB0aGlzLnMgPSBzOyB0aGlzLmkgPSBpOyB9XG5VSW50OEFycmF5UmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMuc1t0aGlzLmkrK107IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzLnNbdGhpcy5pKytdIDw8IDI0ID4+IDI0OyB9LFxuICByZWFkMTZ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgOCkgfCBzW2kgKyAxXVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKHNbaV0gPDwgMjQgPj4gMTYpIHwgc1tpICsgMV07XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHNbaV0gPDwgMjQpIHwgKHNbaSsxXSA8PCAxNikgfFxuICAgICAgICAgICAgKHNbaSsyXSA8PCA4KSB8IHNbaSszXSkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoc1tpXSA8PCAyNCkgfCAoc1tpKzFdIDw8IDE2KSB8XG4gICAgICAoc1tpKzJdIDw8IDgpIHwgc1tpKzNdO1xuICB9LFxuICByZWFkc3RyOmZ1bmN0aW9uIChsZW4pIHtcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBjYW1sX3N0cmluZ19vZl9hcnJheSh0aGlzLnMuc3ViYXJyYXkoaSwgaSArIGxlbikpO1xuICB9LFxuICByZWFkdWludDhhcnJheTpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gdGhpcy5zLnN1YmFycmF5KGksIGkgKyBsZW4pO1xuICB9XG59XG5cblxuLy9Qcm92aWRlczogTWxTdHJpbmdSZWFkZXJcbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMsIGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIE1sU3RyaW5nUmVhZGVyIChzLCBpKSB7IHRoaXMucyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7IHRoaXMuaSA9IGk7IH1cbk1sU3RyaW5nUmVhZGVyLnByb3RvdHlwZSA9IHtcbiAgcmVhZDh1OmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKTsgfSxcbiAgcmVhZDhzOmZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXMucy5jaGFyQ29kZUF0KHRoaXMuaSsrKSA8PCAyNCA+PiAyNDsgfSxcbiAgcmVhZDE2dTpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDI7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSArIDEpXG4gIH0sXG4gIHJlYWQxNnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAocy5jaGFyQ29kZUF0KGkpIDw8IDI0ID4+IDE2KSB8IHMuY2hhckNvZGVBdChpICsgMSk7XG4gIH0sXG4gIHJlYWQzMnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoKHMuY2hhckNvZGVBdChpKSA8PCAyNCkgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChzLmNoYXJDb2RlQXQoaSsyKSA8PCA4KSB8IHMuY2hhckNvZGVBdChpKzMpKSA+Pj4gMDtcbiAgfSxcbiAgcmVhZDMyczpmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHMgPSB0aGlzLnMsIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIDQ7XG4gICAgcmV0dXJuIChzLmNoYXJDb2RlQXQoaSkgPDwgMjQpIHwgKHMuY2hhckNvZGVBdChpKzEpIDw8IDE2KSB8XG4gICAgICAocy5jaGFyQ29kZUF0KGkrMikgPDwgOCkgfCBzLmNoYXJDb2RlQXQoaSszKTtcbiAgfSxcbiAgcmVhZHN0cjpmdW5jdGlvbiAobGVuKSB7XG4gICAgdmFyIGkgPSB0aGlzLmk7XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfanNieXRlcyh0aGlzLnMuc3Vic3RyaW5nKGksIGkgKyBsZW4pKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBiID0gbmV3IFVpbnQ4QXJyYXkobGVuKTtcbiAgICB2YXIgcyA9IHRoaXMucztcbiAgICB2YXIgaSA9IHRoaXMuaTtcbiAgICBmb3IodmFyIGogPSAwOyBqIDwgbGVuOyBqKyspIHtcbiAgICAgIGJbal0gPSBzLmNoYXJDb2RlQXQoaSArIGopO1xuICAgIH1cbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiBiO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IEJpZ1N0cmluZ1JlYWRlclxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfYXJyYXksIGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIEJpZ1N0cmluZ1JlYWRlciAoYnMsIGkpIHsgdGhpcy5zID0gYnM7IHRoaXMuaSA9IGk7IH1cbkJpZ1N0cmluZ1JlYWRlci5wcm90b3R5cGUgPSB7XG4gIHJlYWQ4dTpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKyk7IH0sXG4gIHJlYWQ4czpmdW5jdGlvbiAoKSB7IHJldHVybiBjYW1sX2JhX2dldF8xKHRoaXMucyx0aGlzLmkrKykgPDwgMjQgPj4gMjQ7IH0sXG4gIHJlYWQxNnU6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyAyO1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpIDw8IDgpIHwgY2FtbF9iYV9nZXRfMShzLGkgKyAxKVxuICB9LFxuICByZWFkMTZzOmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgMjtcbiAgICByZXR1cm4gKGNhbWxfYmFfZ2V0XzEocyxpKSA8PCAyNCA+PiAxNikgfCBjYW1sX2JhX2dldF8xKHMsaSArIDEpO1xuICB9LFxuICByZWFkMzJ1OmZ1bmN0aW9uICgpIHtcbiAgICB2YXIgcyA9IHRoaXMucywgaSA9IHRoaXMuaTtcbiAgICB0aGlzLmkgPSBpICsgNDtcbiAgICByZXR1cm4gKChjYW1sX2JhX2dldF8xKHMsaSkgICA8PCAyNCkgfCAoY2FtbF9iYV9nZXRfMShzLGkrMSkgPDwgMTYpIHxcbiAgICAgICAgICAgIChjYW1sX2JhX2dldF8xKHMsaSsyKSA8PCA4KSAgfCBjYW1sX2JhX2dldF8xKHMsaSszKSAgICAgICAgICkgPj4+IDA7XG4gIH0sXG4gIHJlYWQzMnM6ZnVuY3Rpb24gKCkge1xuICAgIHZhciBzID0gdGhpcy5zLCBpID0gdGhpcy5pO1xuICAgIHRoaXMuaSA9IGkgKyA0O1xuICAgIHJldHVybiAoY2FtbF9iYV9nZXRfMShzLGkpICAgPDwgMjQpIHwgKGNhbWxfYmFfZ2V0XzEocyxpKzEpIDw8IDE2KSB8XG4gICAgICAoY2FtbF9iYV9nZXRfMShzLGkrMikgPDwgOCkgIHwgY2FtbF9iYV9nZXRfMShzLGkrMyk7XG4gIH0sXG4gIHJlYWRzdHI6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBhcnIgPSBuZXcgQXJyYXkobGVuKVxuICAgIGZvcih2YXIgaiA9IDA7IGogPCBsZW47IGorKyl7XG4gICAgICBhcnJbal0gPSBjYW1sX2JhX2dldF8xKHRoaXMucywgaStqKTtcbiAgICB9XG4gICAgdGhpcy5pID0gaSArIGxlbjtcbiAgICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoYXJyKTtcbiAgfSxcbiAgcmVhZHVpbnQ4YXJyYXk6ZnVuY3Rpb24gKGxlbikge1xuICAgIHZhciBpID0gdGhpcy5pO1xuICAgIHZhciBvZmZzZXQgPSB0aGlzLm9mZnNldChpKTtcbiAgICB0aGlzLmkgPSBpICsgbGVuO1xuICAgIHJldHVybiB0aGlzLnMuZGF0YS5zdWJhcnJheShvZmZzZXQsIG9mZnNldCArIGxlbik7XG4gIH1cbn1cblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9mbG9hdF9vZl9ieXRlcyAoYSkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzIChjYW1sX2ludDY0X29mX2J5dGVzIChhKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcgbXV0YWJsZVxuLy9SZXF1aXJlczogTWxTdHJpbmdSZWFkZXIsIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXJcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9zdHJpbmcocyxvZnMpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBNbFN0cmluZ1JlYWRlciAocywgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyBtdXRhYmxlXG4vL1JlcXVpcmVzOiBNbFN0cmluZ1JlYWRlciwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlciwgY2FtbF9zdHJpbmdfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhzLG9mcykge1xuICB2YXIgcmVhZGVyID0gbmV3IE1sU3RyaW5nUmVhZGVyIChjYW1sX3N0cmluZ19vZl9ieXRlcyhzKSwgdHlwZW9mIG9mcz09XCJudW1iZXJcIj9vZnM6b2ZzWzBdKTtcbiAgcmV0dXJuIGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9yZWFkZXIocmVhZGVyLCBvZnMpXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50NjRfdW5tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgc2l6ZVswXSA9IDg7XG4gIHJldHVybiBjYW1sX2ludDY0X29mX2J5dGVzICh0KTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9tYXJzaGFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2ludDY0X21hcnNoYWwod3JpdGVyLCB2LCBzaXplcykge1xuICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKHYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDg7IGkrKykgd3JpdGVyLndyaXRlICg4LCBiW2ldKTtcbiAgc2l6ZXNbMF0gPSA4OyBzaXplc1sxXSA9IDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW50MzJfdW5tYXJzaGFsXG5mdW5jdGlvbiBjYW1sX2ludDMyX3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzaXplWzBdID0gNDtcbiAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWxcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbChyZWFkZXIsIHNpemUpe1xuICBzd2l0Y2ggKHJlYWRlci5yZWFkOHUgKCkpIHtcbiAgY2FzZSAxOlxuICAgIHNpemVbMF0gPSA0O1xuICAgIHJldHVybiByZWFkZXIucmVhZDMycyAoKTtcbiAgY2FzZSAyOlxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogbmF0aXZlIGludGVnZXIgdmFsdWUgdG9vIGxhcmdlXCIpO1xuICBkZWZhdWx0OiBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGlsbC1mb3JtZWQgbmF0aXZlIGludGVnZXJcIik7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3VubWFyc2hhbCwgY2FtbF9pbnQ2NF9tYXJzaGFsLCBjYW1sX2ludDY0X2NvbXBhcmUsIGNhbWxfaW50NjRfaGFzaFxuLy9SZXF1aXJlczogY2FtbF9pbnQzMl91bm1hcnNoYWwsIGNhbWxfbmF0aXZlaW50X3VubWFyc2hhbFxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXJpYWxpemUsIGNhbWxfYmFfZGVzZXJpYWxpemUsIGNhbWxfYmFfY29tcGFyZSwgY2FtbF9iYV9oYXNoXG52YXIgY2FtbF9jdXN0b21fb3BzID1cbiAgICB7XCJfalwiOiB7XG4gICAgICBkZXNlcmlhbGl6ZSA6IGNhbWxfaW50NjRfdW5tYXJzaGFsLFxuICAgICAgc2VyaWFsaXplICA6IGNhbWxfaW50NjRfbWFyc2hhbCxcbiAgICAgIGZpeGVkX2xlbmd0aCA6IDgsXG4gICAgICBjb21wYXJlIDogY2FtbF9pbnQ2NF9jb21wYXJlLFxuICAgICAgaGFzaCA6IGNhbWxfaW50NjRfaGFzaFxuICAgIH0sXG4gICAgIFwiX2lcIjoge1xuICAgICAgIGRlc2VyaWFsaXplIDogY2FtbF9pbnQzMl91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfblwiOiB7XG4gICAgICAgZGVzZXJpYWxpemUgOiBjYW1sX25hdGl2ZWludF91bm1hcnNoYWwsXG4gICAgICAgZml4ZWRfbGVuZ3RoIDogNCxcbiAgICAgfSxcbiAgICAgXCJfYmlnYXJyYXlcIjp7XG4gICAgICAgZGVzZXJpYWxpemUgOiAoZnVuY3Rpb24gKHJlYWRlciwgc3opIHtyZXR1cm4gY2FtbF9iYV9kZXNlcmlhbGl6ZSAocmVhZGVyLHN6LFwiX2JpZ2FycmF5XCIpfSksXG4gICAgICAgc2VyaWFsaXplIDogY2FtbF9iYV9zZXJpYWxpemUsXG4gICAgICAgY29tcGFyZSA6IGNhbWxfYmFfY29tcGFyZSxcbiAgICAgICBoYXNoOiBjYW1sX2JhX2hhc2gsXG4gICAgIH0sXG4gICAgIFwiX2JpZ2FycjAyXCI6e1xuICAgICAgIGRlc2VyaWFsaXplIDogKGZ1bmN0aW9uIChyZWFkZXIsIHN6KSB7cmV0dXJuIGNhbWxfYmFfZGVzZXJpYWxpemUgKHJlYWRlcixzeixcIl9iaWdhcnIwMlwiKX0pLFxuICAgICAgIHNlcmlhbGl6ZSA6IGNhbWxfYmFfc2VyaWFsaXplLFxuICAgICAgIGNvbXBhcmUgOiBjYW1sX2JhX2NvbXBhcmUsXG4gICAgICAgaGFzaDogY2FtbF9iYV9oYXNoLFxuICAgICB9XG4gICAgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbi8vUmVxdWlyZXM6IGNhbWxfZmxvYXRfb2ZfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogVUludDhBcnJheVJlYWRlclxuLy9SZXF1aXJlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyKHJlYWRlciwgb2ZzKSB7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICB2YXIgbiA9IGMgJiAweDdGO1xuICAgIHdoaWxlICgoYyAmIDB4ODApICE9IDApIHtcbiAgICAgIGMgPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgbjcgPSBuIDw8IDc7XG4gICAgICBpZiAobiAhPSBuNyA+PiA3KSBvdmVyZmxvd1swXSA9IHRydWU7XG4gICAgICBuID0gbjcgfCAoYyAmIDB4N0YpO1xuICAgIH1cbiAgICByZXR1cm4gbjtcbiAgfVxuICB2YXIgbWFnaWMgPSByZWFkZXIucmVhZDMydSAoKVxuICBzd2l0Y2gobWFnaWMpe1xuICBjYXNlIDB4ODQ5NUE2QkU6IC8qIEludGV4dF9tYWdpY19udW1iZXJfc21hbGwgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IDIwO1xuICAgIHZhciBjb21wcmVzc2VkID0gMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICB2YXIgdW5jb21wcmVzc2VkX2RhdGFfbGVuID0gZGF0YV9sZW47XG4gICAgdmFyIG51bV9vYmplY3RzID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzMyID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgdmFyIF9zaXplXzY0ID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHJlYWRlci5yZWFkOHUoKSAmIDB4M0Y7XG4gICAgdmFyIGNvbXByZXNzZWQgPSAxO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgdmFyIHVuY29tcHJlc3NlZF9kYXRhX2xlbiA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBudW1fb2JqZWN0cyA9IHJlYWR2bHEob3ZlcmZsb3cpO1xuICAgIHZhciBfc2l6ZV8zMiA9IHJlYWR2bHEgKG92ZXJmbG93KTtcbiAgICB2YXIgX3NpemVfNjQgPSByZWFkdmxxIChvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX3JlYWRlcjogb2JqZWN0IHRvbyBsYXJnZSB0byBiZSByZWFkIGJhY2sgb24gdGhpcyBwbGF0Zm9ybVwiKTtcbiAgICB9XG4gICAgYnJlYWtcbiAgY2FzZSAweDg0OTVBNkJGOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2JpZyAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiBhIDMyLWJpdCBwbGF0Zm9ybVwiKTtcbiAgICBicmVha1xuICBkZWZhdWx0OlxuICAgIGNhbWxfZmFpbHdpdGgoXCJjYW1sX2lucHV0X3ZhbHVlX2Zyb21fcmVhZGVyOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrO1xuICB9XG4gIHZhciBzdGFjayA9IFtdO1xuICB2YXIgaW50ZXJuX29ial90YWJsZSA9IChudW1fb2JqZWN0cyA+IDApP1tdOm51bGw7XG4gIHZhciBvYmpfY291bnRlciA9IDA7XG4gIGZ1bmN0aW9uIGludGVybl9yZWMgKHJlYWRlcikge1xuICAgIHZhciBjb2RlID0gcmVhZGVyLnJlYWQ4dSAoKTtcbiAgICBpZiAoY29kZSA+PSAweDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLykge1xuICAgICAgaWYgKGNvZGUgPj0gMHg4MCAvKmNzdC5QUkVGSVhfU01BTExfQkxPQ0sqLykge1xuICAgICAgICB2YXIgdGFnID0gY29kZSAmIDB4RjtcbiAgICAgICAgdmFyIHNpemUgPSAoY29kZSA+PiA0KSAmIDB4NztcbiAgICAgICAgdmFyIHYgPSBbdGFnXTtcbiAgICAgICAgaWYgKHNpemUgPT0gMCkgcmV0dXJuIHY7XG4gICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICAgICAgcmV0dXJuIHY7XG4gICAgICB9IGVsc2VcbiAgICAgICAgcmV0dXJuIChjb2RlICYgMHgzRik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChjb2RlID49IDB4MjAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HICovKSB7XG4gICAgICAgIHZhciBsZW4gPSBjb2RlICYgMHgxRjtcbiAgICAgICAgdmFyIHYgPSByZWFkZXIucmVhZHN0ciAobGVuKTtcbiAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICByZXR1cm4gdjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaChjb2RlKSB7XG4gICAgICAgIGNhc2UgMHgwMDogLy9jc3QuQ09ERV9JTlQ4OlxuICAgICAgICAgIHJldHVybiByZWFkZXIucmVhZDhzICgpO1xuICAgICAgICBjYXNlIDB4MDE6IC8vY3N0LkNPREVfSU5UMTY6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMTZzICgpO1xuICAgICAgICBjYXNlIDB4MDI6IC8vY3N0LkNPREVfSU5UMzI6XG4gICAgICAgICAgcmV0dXJuIHJlYWRlci5yZWFkMzJzICgpO1xuICAgICAgICBjYXNlIDB4MDM6IC8vY3N0LkNPREVfSU5UNjQ6XG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBpbnRlZ2VyIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA0OiAvL2NzdC5DT0RFX1NIQVJFRDg6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgaWYoY29tcHJlc3NlZCA9PSAwKSBvZmZzZXQgPSBvYmpfY291bnRlciAtIG9mZnNldDtcbiAgICAgICAgICByZXR1cm4gaW50ZXJuX29ial90YWJsZVtvZmZzZXRdO1xuICAgICAgICBjYXNlIDB4MDU6IC8vY3N0LkNPREVfU0hBUkVEMTY6XG4gICAgICAgICAgdmFyIG9mZnNldCA9IHJlYWRlci5yZWFkMTZ1ICgpO1xuICAgICAgICAgIGlmKGNvbXByZXNzZWQgPT0gMCkgb2Zmc2V0ID0gb2JqX2NvdW50ZXIgLSBvZmZzZXQ7XG4gICAgICAgICAgcmV0dXJuIGludGVybl9vYmpfdGFibGVbb2Zmc2V0XTtcbiAgICAgICAgY2FzZSAweDA2OiAvL2NzdC5DT0RFX1NIQVJFRDMyOlxuICAgICAgICAgIHZhciBvZmZzZXQgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICBpZihjb21wcmVzc2VkID09IDApIG9mZnNldCA9IG9ial9jb3VudGVyIC0gb2Zmc2V0O1xuICAgICAgICAgIHJldHVybiBpbnRlcm5fb2JqX3RhYmxlW29mZnNldF07XG4gICAgICAgIGNhc2UgMHgwODogLy9jc3QuQ09ERV9CTE9DSzMyOlxuICAgICAgICAgIHZhciBoZWFkZXIgPSByZWFkZXIucmVhZDMydSAoKTtcbiAgICAgICAgICB2YXIgdGFnID0gaGVhZGVyICYgMHhGRjtcbiAgICAgICAgICB2YXIgc2l6ZSA9IGhlYWRlciA+PiAxMDtcbiAgICAgICAgICB2YXIgdiA9IFt0YWddO1xuICAgICAgICAgIGlmIChzaXplID09IDApIHJldHVybiB2O1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICBzdGFjay5wdXNoKHYsIHNpemUpO1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MTM6IC8vY3N0LkNPREVfQkxPQ0s2NDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBkYXRhIGJsb2NrIHRvbyBsYXJnZVwiKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAweDA5OiAvL2NzdC5DT0RFX1NUUklORzg6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IHJlYWRlci5yZWFkc3RyIChsZW4pO1xuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDBBOiAvL2NzdC5DT0RFX1NUUklORzMyOlxuICAgICAgICAgIHZhciBsZW4gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICAgIHZhciB2ID0gcmVhZGVyLnJlYWRzdHIgKGxlbik7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEM6IC8vY3N0LkNPREVfRE9VQkxFX0xJVFRMRTpcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IDg7aSsrKSB0WzcgLSBpXSA9IHJlYWRlci5yZWFkOHUgKCk7XG4gICAgICAgICAgdmFyIHYgPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwQjogLy9jc3QuQ09ERV9ET1VCTEVfQklHOlxuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgODtpKyspIHRbaV0gPSByZWFkZXIucmVhZDh1ICgpO1xuICAgICAgICAgIHZhciB2ID0gY2FtbF9mbG9hdF9vZl9ieXRlcyAodCk7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIHJldHVybiB2O1xuICAgICAgICBjYXNlIDB4MEU6IC8vY3N0LkNPREVfRE9VQkxFX0FSUkFZOF9MSVRUTEU6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgICAgICAgaWYgKGludGVybl9vYmpfdGFibGUpIGludGVybl9vYmpfdGFibGVbb2JqX2NvdW50ZXIrK10gPSB2O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRDogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVk4X0JJRzpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgIHZhciB2ID0gbmV3IEFycmF5KGxlbisxKTtcbiAgICAgICAgICB2WzBdID0gMjU0O1xuICAgICAgICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDE7aSA8PSBsZW47aSsrKSB7XG4gICAgICAgICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICAgICAgICB2IFtpXSA9IGNhbWxfZmxvYXRfb2ZfYnl0ZXMgKHQpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgY2FzZSAweDA3OiAvL2NzdC5DT0RFX0RPVUJMRV9BUlJBWTMyX0xJVFRMRTpcbiAgICAgICAgICB2YXIgbGVuID0gcmVhZGVyLnJlYWQzMnUoKTtcbiAgICAgICAgICB2YXIgdiA9IG5ldyBBcnJheShsZW4rMSk7XG4gICAgICAgICAgdlswXSA9IDI1NDtcbiAgICAgICAgICBpZiAoaW50ZXJuX29ial90YWJsZSkgaW50ZXJuX29ial90YWJsZVtvYmpfY291bnRlcisrXSA9IHY7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0WzcgLSBqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgICAgICAgIHZbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgwRjogLy9jc3QuQ09ERV9ET1VCTEVfQVJSQVkzMl9CSUc6XG4gICAgICAgICAgdmFyIGxlbiA9IHJlYWRlci5yZWFkMzJ1KCk7XG4gICAgICAgICAgdmFyIHYgPSBuZXcgQXJyYXkobGVuKzEpO1xuICAgICAgICAgIHZbMF0gPSAyNTQ7XG4gICAgICAgICAgdmFyIHQgPSBuZXcgQXJyYXkoOCk7O1xuICAgICAgICAgIGZvciAodmFyIGkgPSAxO2kgPD0gbGVuO2krKykge1xuICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7aiA8IDg7aisrKSB0W2pdID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgICAgICAgICAgdiBbaV0gPSBjYW1sX2Zsb2F0X29mX2J5dGVzICh0KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHY7XG4gICAgICAgIGNhc2UgMHgxMDogLy9jc3QuQ09ERV9DT0RFUE9JTlRFUjpcbiAgICAgICAgY2FzZSAweDExOiAvL2NzdC5DT0RFX0lORklYUE9JTlRFUjpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBjb2RlIHBvaW50ZXJcIik7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMHgxMjogLy9jc3QuQ09ERV9DVVNUT006XG4gICAgICAgIGNhc2UgMHgxODogLy9jc3QuQ09ERV9DVVNUT01fTEVOOlxuICAgICAgICBjYXNlIDB4MTk6IC8vY3N0LkNPREVfQ1VTVE9NX0ZJWEVEOlxuICAgICAgICAgIHZhciBjLCBzID0gXCJcIjtcbiAgICAgICAgICB3aGlsZSAoKGMgPSByZWFkZXIucmVhZDh1ICgpKSAhPSAwKSBzICs9IFN0cmluZy5mcm9tQ2hhckNvZGUgKGMpO1xuICAgICAgICAgIHZhciBvcHMgPSBjYW1sX2N1c3RvbV9vcHNbc107XG4gICAgICAgICAgdmFyIGV4cGVjdGVkX3NpemU7XG4gICAgICAgICAgaWYoIW9wcylcbiAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogdW5rbm93biBjdXN0b20gYmxvY2sgaWRlbnRpZmllclwiKTtcbiAgICAgICAgICBzd2l0Y2goY29kZSl7XG4gICAgICAgICAgY2FzZSAweDEyOiAvLyBjc3QuQ09ERV9DVVNUT00gKGRlcHJlY2F0ZWQpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDB4MTk6IC8vIGNzdC5DT0RFX0NVU1RPTV9GSVhFRFxuICAgICAgICAgICAgaWYoIW9wcy5maXhlZF9sZW5ndGgpXG4gICAgICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogZXhwZWN0ZWQgYSBmaXhlZC1zaXplIGN1c3RvbSBibG9ja1wiKTtcbiAgICAgICAgICAgIGV4cGVjdGVkX3NpemUgPSBvcHMuZml4ZWRfbGVuZ3RoO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAweDE4OiAvLyBjc3QuQ09ERV9DVVNUT01fTEVOXG4gICAgICAgICAgICBleHBlY3RlZF9zaXplID0gcmVhZGVyLnJlYWQzMnUgKCk7XG4gICAgICAgICAgICAvLyBTa2lwIHNpemU2NFxuICAgICAgICAgICAgcmVhZGVyLnJlYWQzMnMoKTsgcmVhZGVyLnJlYWQzMnMoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHJlYWRlci5pO1xuICAgICAgICAgIHZhciBzaXplID0gWzBdO1xuICAgICAgICAgIHZhciB2ID0gb3BzLmRlc2VyaWFsaXplKHJlYWRlciwgc2l6ZSk7XG4gICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSB1bmRlZmluZWQpe1xuICAgICAgICAgICAgaWYoZXhwZWN0ZWRfc2l6ZSAhPSBzaXplWzBdKVxuICAgICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGluY29ycmVjdCBsZW5ndGggb2Ygc2VyaWFsaXplZCBjdXN0b20gYmxvY2tcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChpbnRlcm5fb2JqX3RhYmxlKSBpbnRlcm5fb2JqX3RhYmxlW29ial9jb3VudGVyKytdID0gdjtcbiAgICAgICAgICByZXR1cm4gdjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoIChcImlucHV0X3ZhbHVlOiBpbGwtZm9ybWVkIG1lc3NhZ2VcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYoY29tcHJlc3NlZCkge1xuICAgIGlmKGNhbWxfZGVjb21wcmVzc19pbnB1dCkge1xuICAgICAgdmFyIGRhdGEgPSByZWFkZXIucmVhZHVpbnQ4YXJyYXkoZGF0YV9sZW4pO1xuICAgICAgdmFyIHJlcyA9IG5ldyBVaW50OEFycmF5KHVuY29tcHJlc3NlZF9kYXRhX2xlbik7XG4gICAgICB2YXIgcmVzID0gY2FtbF9kZWNvbXByZXNzX2lucHV0KGRhdGEsIHJlcyk7XG4gICAgICB2YXIgcmVhZGVyID0gbmV3IFVJbnQ4QXJyYXlSZWFkZXIocmVzLCAwKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FtbF9mYWlsd2l0aChcImlucHV0X3ZhbHVlOiBjb21wcmVzc2VkIG9iamVjdCwgY2Fubm90IGRlY29tcHJlc3NcIik7XG4gICAgfVxuICB9XG4gIHZhciByZXMgPSBpbnRlcm5fcmVjIChyZWFkZXIpO1xuICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgIHZhciBzaXplID0gc3RhY2sucG9wKCk7XG4gICAgdmFyIHYgPSBzdGFjay5wb3AoKTtcbiAgICB2YXIgZCA9IHYubGVuZ3RoO1xuICAgIGlmIChkIDwgc2l6ZSkgc3RhY2sucHVzaCh2LCBzaXplKTtcbiAgICB2W2RdID0gaW50ZXJuX3JlYyAocmVhZGVyKTtcbiAgfVxuICBpZiAodHlwZW9mIG9mcyE9XCJudW1iZXJcIikgb2ZzWzBdID0gcmVhZGVyLmk7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuLy9WZXJzaW9uOiA8IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMjBcblxuLy9Qcm92aWRlczogY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplXG4vL1ZlcnNpb246ID49IDUuMS4wXG52YXIgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplID0gMTZcblxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9ieXRlc191bnNhZmVfZ2V0XG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBVSW50OEFycmF5UmVhZGVyXG4vL1JlcXVpcmVzOiBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemVcbmZ1bmN0aW9uIGNhbWxfbWFyc2hhbF9kYXRhX3NpemUgKHMsIG9mcykge1xuICB2YXIgciA9IG5ldyBVSW50OEFycmF5UmVhZGVyKGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyksIG9mcyk7XG4gIGZ1bmN0aW9uIHJlYWR2bHEob3ZlcmZsb3cpIHtcbiAgICB2YXIgYyA9IHIucmVhZDh1KCk7XG4gICAgdmFyIG4gPSBjICYgMHg3RjtcbiAgICB3aGlsZSAoKGMgJiAweDgwKSAhPSAwKSB7XG4gICAgICBjID0gci5yZWFkOHUoKTtcbiAgICAgIHZhciBuNyA9IG4gPDwgNztcbiAgICAgIGlmIChuICE9IG43ID4+IDcpIG92ZXJmbG93WzBdID0gdHJ1ZTtcbiAgICAgIG4gPSBuNyB8IChjICYgMHg3Rik7XG4gICAgfVxuICAgIHJldHVybiBuO1xuICB9XG5cbiAgc3dpdGNoKHIucmVhZDMydSgpKXtcbiAgY2FzZSAweDg0OTVBNkJFOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX3NtYWxsICovXG4gICAgdmFyIGhlYWRlcl9sZW4gPSAyMDtcbiAgICB2YXIgZGF0YV9sZW4gPSByLnJlYWQzMnUoKTtcbiAgICBicmVhaztcbiAgY2FzZSAweDg0OTVBNkJEOiAvKiBJbnRleHRfbWFnaWNfbnVtYmVyX2NvbXByZXNzZWQgKi9cbiAgICB2YXIgaGVhZGVyX2xlbiA9IHIucmVhZDh1KCkgJiAweDNGO1xuICAgIHZhciBvdmVyZmxvdyA9IFtmYWxzZV07XG4gICAgdmFyIGRhdGFfbGVuID0gcmVhZHZscShvdmVyZmxvdyk7XG4gICAgaWYob3ZlcmZsb3dbMF0pe1xuICAgICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBvYmplY3QgdG9vIGxhcmdlIHRvIGJlIHJlYWQgYmFjayBvbiB0aGlzIHBsYXRmb3JtXCIpO1xuICAgIH1cbiAgICBicmVha1xuICBjYXNlIDB4ODQ5NUE2QkY6IC8qIEludGV4dF9tYWdpY19udW1iZXJfYmlnICovXG4gIGRlZmF1bHQ6XG4gICAgY2FtbF9mYWlsd2l0aChcIk1hcnNoYWwuZGF0YV9zaXplOiBiYWQgb2JqZWN0XCIpO1xuICAgIGJyZWFrXG4gIH1cbiAgcmV0dXJuIGhlYWRlcl9sZW4gLSBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUgKyBkYXRhX2xlbjtcbn1cblxuLy9Qcm92aWRlczogTWxPYmplY3RUYWJsZVxudmFyIE1sT2JqZWN0VGFibGU7XG5pZiAodHlwZW9mIGdsb2JhbFRoaXMuTWFwID09PSAndW5kZWZpbmVkJykge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24oKSB7XG4gICAgLyogcG9seWZpbGwgKHVzaW5nIGxpbmVhciBzZWFyY2gpICovXG4gICAgZnVuY3Rpb24gTmFpdmVMb29rdXAob2JqcykgeyB0aGlzLm9ianMgPSBvYmpzOyB9XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHYpIHtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5vYmpzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmICh0aGlzLm9ianNbaV0gPT09IHYpIHJldHVybiBpO1xuICAgICAgfVxuICAgIH07XG4gICAgTmFpdmVMb29rdXAucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKCkge1xuICAgICAgLy8gRG8gbm90aGluZyBoZXJlLiBbTWxPYmplY3RUYWJsZS5zdG9yZV0gd2lsbCBwdXNoIHRvIFt0aGlzLm9ianNdIGRpcmVjdGx5LlxuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICAgIHRoaXMub2JqcyA9IFtdOyB0aGlzLmxvb2t1cCA9IG5ldyBOYWl2ZUxvb2t1cCh0aGlzLm9ianMpO1xuICAgIH07XG4gIH0oKTtcbn1cbmVsc2Uge1xuICBNbE9iamVjdFRhYmxlID0gZnVuY3Rpb24gTWxPYmplY3RUYWJsZSgpIHtcbiAgICB0aGlzLm9ianMgPSBbXTsgdGhpcy5sb29rdXAgPSBuZXcgZ2xvYmFsVGhpcy5NYXAoKTtcbiAgfTtcbn1cblxuTWxPYmplY3RUYWJsZS5wcm90b3R5cGUuc3RvcmUgPSBmdW5jdGlvbih2KSB7XG4gIHRoaXMubG9va3VwLnNldCh2LCB0aGlzLm9ianMubGVuZ3RoKTtcbiAgdGhpcy5vYmpzLnB1c2godik7XG59XG5cbk1sT2JqZWN0VGFibGUucHJvdG90eXBlLnJlY2FsbCA9IGZ1bmN0aW9uKHYpIHtcbiAgdmFyIGkgPSB0aGlzLmxvb2t1cC5nZXQodik7XG4gIHJldHVybiAoaSA9PT0gdW5kZWZpbmVkKVxuICAgID8gdW5kZWZpbmVkIDogdGhpcy5vYmpzLmxlbmd0aCAtIGk7ICAgLyogaW5kZXggaXMgcmVsYXRpdmUgKi9cbn1cblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2J5dGVzLCBjYW1sX2ZhaWx3aXRoXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfbWxfYnl0ZXNfbGVuZ3RoLCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXRcbi8vUmVxdWlyZXM6IE1sT2JqZWN0VGFibGUsIGNhbWxfbGlzdF90b19qc19hcnJheSwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9pc19jb250aW51YXRpb25fdGFnXG52YXIgY2FtbF9vdXRwdXRfdmFsID0gZnVuY3Rpb24gKCl7XG4gIGZ1bmN0aW9uIFdyaXRlciAoKSB7IHRoaXMuY2h1bmsgPSBbXTsgfVxuICBXcml0ZXIucHJvdG90eXBlID0ge1xuICAgIGNodW5rX2lkeDoyMCwgYmxvY2tfbGVuOjAsIG9ial9jb3VudGVyOjAsIHNpemVfMzI6MCwgc2l6ZV82NDowLFxuICAgIHdyaXRlOmZ1bmN0aW9uIChzaXplLCB2YWx1ZSkge1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfYXQ6ZnVuY3Rpb24gKHBvcywgc2l6ZSwgdmFsdWUpIHtcbiAgICAgIHZhciBwb3MgPSBwb3M7XG4gICAgICBmb3IgKHZhciBpID0gc2l6ZSAtIDg7aSA+PSAwO2kgLT0gOClcbiAgICAgICAgdGhpcy5jaHVua1twb3MrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfY29kZTpmdW5jdGlvbiAoc2l6ZSwgY29kZSwgdmFsdWUpIHtcbiAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSBjb2RlO1xuICAgICAgZm9yICh2YXIgaSA9IHNpemUgLSA4O2kgPj0gMDtpIC09IDgpXG4gICAgICAgIHRoaXMuY2h1bmtbdGhpcy5jaHVua19pZHgrK10gPSAodmFsdWUgPj4gaSkgJiAweEZGO1xuICAgIH0sXG4gICAgd3JpdGVfc2hhcmVkOmZ1bmN0aW9uIChvZmZzZXQpIHtcbiAgICAgIGlmIChvZmZzZXQgPCAoMSA8PCA4KSkgdGhpcy53cml0ZV9jb2RlKDgsIDB4MDQgLypjc3QuQ09ERV9TSEFSRUQ4Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIGlmIChvZmZzZXQgPCAoMSA8PCAxNikpIHRoaXMud3JpdGVfY29kZSgxNiwgMHgwNSAvKmNzdC5DT0RFX1NIQVJFRDE2Ki8sIG9mZnNldCk7XG4gICAgICBlbHNlIHRoaXMud3JpdGVfY29kZSgzMiwgMHgwNiAvKmNzdC5DT0RFX1NIQVJFRDMyKi8sIG9mZnNldCk7XG4gICAgfSxcbiAgICBwb3M6ZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpcy5jaHVua19pZHggfSxcbiAgICBmaW5hbGl6ZTpmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmJsb2NrX2xlbiA9IHRoaXMuY2h1bmtfaWR4IC0gMjA7XG4gICAgICB0aGlzLmNodW5rX2lkeCA9IDA7XG4gICAgICB0aGlzLndyaXRlICgzMiwgMHg4NDk1QTZCRSk7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5ibG9ja19sZW4pO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMub2JqX2NvdW50ZXIpO1xuICAgICAgdGhpcy53cml0ZSAoMzIsIHRoaXMuc2l6ZV8zMik7XG4gICAgICB0aGlzLndyaXRlICgzMiwgdGhpcy5zaXplXzY0KTtcbiAgICAgIHJldHVybiB0aGlzLmNodW5rO1xuICAgIH1cbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHYsIGZsYWdzKSB7XG4gICAgZmxhZ3MgPSBjYW1sX2xpc3RfdG9fanNfYXJyYXkoZmxhZ3MpO1xuXG4gICAgdmFyIG5vX3NoYXJpbmcgPSAoZmxhZ3MuaW5kZXhPZigwIC8qTWFyc2hhbC5Ob19zaGFyaW5nKi8pICE9PSAtMSksXG4gICAgICAgIGNsb3N1cmVzID0gIChmbGFncy5pbmRleE9mKDEgLypNYXJzaGFsLkNsb3N1cmVzKi8pICE9PSAtMSk7XG4gICAgLyogTWFyc2hhbC5Db21wYXRfMzIgaXMgcmVkdW5kYW50IHNpbmNlIGludGVnZXJzIGFyZSAzMi1iaXQgYW55d2F5ICovXG5cbiAgICBpZiAoY2xvc3VyZXMpXG4gICAgICBjb25zb2xlLndhcm4oXCJpbiBjYW1sX291dHB1dF92YWw6IGZsYWcgTWFyc2hhbC5DbG9zdXJlcyBpcyBub3Qgc3VwcG9ydGVkLlwiKTtcblxuICAgIHZhciB3cml0ZXIgPSBuZXcgV3JpdGVyICgpO1xuICAgIHZhciBzdGFjayA9IFtdO1xuICAgIHZhciBpbnRlcm5fb2JqX3RhYmxlID0gbm9fc2hhcmluZyA/IG51bGwgOiBuZXcgTWxPYmplY3RUYWJsZSgpO1xuXG4gICAgZnVuY3Rpb24gbWVtbyh2KSB7XG4gICAgICBpZiAobm9fc2hhcmluZykgcmV0dXJuIGZhbHNlO1xuICAgICAgdmFyIGV4aXN0aW5nX29mZnNldCA9IGludGVybl9vYmpfdGFibGUucmVjYWxsKHYpO1xuICAgICAgaWYgKGV4aXN0aW5nX29mZnNldCkgeyB3cml0ZXIud3JpdGVfc2hhcmVkKGV4aXN0aW5nX29mZnNldCk7IHJldHVybiB0cnVlOyB9XG4gICAgICBlbHNlIHsgaW50ZXJuX29ial90YWJsZS5zdG9yZSh2KTsgcmV0dXJuIGZhbHNlOyB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXh0ZXJuX3JlYyAodikge1xuICAgICAgaWYgKHYuY2FtbF9jdXN0b20pIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIG5hbWUgPSB2LmNhbWxfY3VzdG9tO1xuICAgICAgICB2YXIgb3BzID0gY2FtbF9jdXN0b21fb3BzW25hbWVdO1xuICAgICAgICB2YXIgc3pfMzJfNjQgPSBbMCwwXTtcbiAgICAgICAgaWYoIW9wcy5zZXJpYWxpemUpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQ3VzdG9tKVwiKTtcbiAgICAgICAgaWYob3BzLmZpeGVkX2xlbmd0aCA9PSB1bmRlZmluZWQpe1xuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgxOCAvKmNzdC5DT0RFX0NVU1RPTV9MRU4qLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgaGVhZGVyX3BvcyA9IHdyaXRlci5wb3MgKCk7XG4gICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IDEyOyBpKyspIHtcbiAgICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgb3BzLnNlcmlhbGl6ZSh3cml0ZXIsIHYsIHN6XzMyXzY0KTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcywgMzIsIHN6XzMyXzY0WzBdKTtcbiAgICAgICAgICB3cml0ZXIud3JpdGVfYXQoaGVhZGVyX3BvcyArIDQsIDMyLCAwKTsgLy8gemVyb1xuICAgICAgICAgIHdyaXRlci53cml0ZV9hdChoZWFkZXJfcG9zICsgOCwgMzIsIHN6XzMyXzY0WzFdKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIDB4MTkgLypjc3QuQ09ERV9DVVNUT01fRklYRUQqLyk7XG4gICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuYW1lLmxlbmd0aDsgaSsrKVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBuYW1lLmNoYXJDb2RlQXQoaSkpO1xuICAgICAgICAgIHdyaXRlci53cml0ZSg4LCAwKTtcbiAgICAgICAgICB2YXIgb2xkX3BvcyA9IHdyaXRlci5wb3MoKTtcbiAgICAgICAgICBvcHMuc2VyaWFsaXplKHdyaXRlciwgdiwgc3pfMzJfNjQpO1xuICAgICAgICAgIGlmIChvcHMuZml4ZWRfbGVuZ3RoICE9IHdyaXRlci5wb3MoKSAtIG9sZF9wb3MpXG4gICAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBpbmNvcnJlY3QgZml4ZWQgc2l6ZXMgc3BlY2lmaWVkIGJ5IFwiICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGVyLnNpemVfMzIgKz0gMiArICgoc3pfMzJfNjRbMF0gKyAzKSA+PiAyKTtcbiAgICAgICAgd3JpdGVyLnNpemVfNjQgKz0gMiArICgoc3pfMzJfNjRbMV0gKyA3KSA+PiAzKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgICBpZiAodlswXSA9PSAyNTEpIHtcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwib3V0cHV0X3ZhbHVlOiBhYnN0cmFjdCB2YWx1ZSAoQWJzdHJhY3QpXCIpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodlswXSkpXG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwib3V0cHV0X3ZhbHVlOiBjb250aW51YXRpb24gdmFsdWVcIik7XG4gICAgICAgIGlmICh2Lmxlbmd0aCA+IDEgJiYgbWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICBpZiAodlswXSA8IDE2ICYmIHYubGVuZ3RoIC0gMSA8IDgpXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDgwIC8qY3N0LlBSRUZJWF9TTUFMTF9CTE9DSyovICsgdlswXSArICgodi5sZW5ndGggLSAxKTw8NCkpO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDggLypjc3QuQ09ERV9CTE9DSzMyKi8sICgodi5sZW5ndGgtMSkgPDwgMTApIHwgdlswXSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IHYubGVuZ3RoO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSB2Lmxlbmd0aDtcbiAgICAgICAgaWYgKHYubGVuZ3RoID4gMSkgc3RhY2sucHVzaCAodiwgMSk7XG4gICAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgICAgaWYoIShjYW1sX2lzX21sX2J5dGVzKGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIikpKSkge1xuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJvdXRwdXRfdmFsdWU6IFtCeXRlcy50XSBjYW5ub3Qgc2FmZWx5IGJlIG1hcnNoYWxlZCB3aXRoIFstLWVuYWJsZSB1c2UtanMtc3RyaW5nXVwiKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWVtbyh2KSkgcmV0dXJuO1xuICAgICAgICB2YXIgbGVuID0gY2FtbF9tbF9ieXRlc19sZW5ndGgodik7XG4gICAgICAgIGlmIChsZW4gPCAweDIwKVxuICAgICAgICAgIHdyaXRlci53cml0ZSAoOCwgMHgyMCAvKmNzdC5QUkVGSVhfU01BTExfU1RSSU5HKi8gKyBsZW4pO1xuICAgICAgICBlbHNlIGlmIChsZW4gPCAweDEwMClcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoOCwgMHgwOS8qY3N0LkNPREVfU1RSSU5HOCovLCBsZW4pO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUgKDMyLCAweDBBIC8qY3N0LkNPREVfU1RSSU5HMzIqLywgbGVuKTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7aSA8IGxlbjtpKyspXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCBjYW1sX2J5dGVzX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgICAgaWYgKG1lbW8odikpIHJldHVybjtcbiAgICAgICAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCh2KTtcbiAgICAgICAgaWYgKGxlbiA8IDB4MjApXG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDIwIC8qY3N0LlBSRUZJWF9TTUFMTF9TVFJJTkcqLyArIGxlbik7XG4gICAgICAgIGVsc2UgaWYgKGxlbiA8IDB4MTAwKVxuICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlICg4LCAweDA5Lypjc3QuQ09ERV9TVFJJTkc4Ki8sIGxlbik7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSAoMzIsIDB4MEEgLypjc3QuQ09ERV9TVFJJTkczMiovLCBsZW4pO1xuICAgICAgICBmb3IgKHZhciBpID0gMDtpIDwgbGVuO2krKylcbiAgICAgICAgICB3cml0ZXIud3JpdGUgKDgsIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQodixpKSk7XG4gICAgICAgIHdyaXRlci5zaXplXzMyICs9IDEgKyAoKChsZW4gKyA0KSAvIDQpfDApO1xuICAgICAgICB3cml0ZXIuc2l6ZV82NCArPSAxICsgKCgobGVuICsgOCkgLyA4KXwwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmICh2ICE9ICh2fDApKXtcbiAgICAgICAgICB2YXIgdHlwZV9vZl92ID0gdHlwZW9mIHY7XG4gICAgICAgICAgLy9cbiAgICAgICAgICAvLyBJZiBhIGZsb2F0IGhhcHBlbnMgdG8gYmUgYW4gaW50ZWdlciBpdCBpcyBzZXJpYWxpemVkIGFzIGFuIGludGVnZXJcbiAgICAgICAgICAvLyAoSnNfb2Zfb2NhbWwgY2Fubm90IHRlbGwgd2hldGhlciB0aGUgdHlwZSBvZiBhbiBpbnRlZ2VyIG51bWJlciBpc1xuICAgICAgICAgIC8vIGZsb2F0IG9yIGludGVnZXIuKSBUaGlzIGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCBjcmFzaGVzIHdoZW5cbiAgICAgICAgICAvLyB1bm1hcnNoYWxsaW5nIHVzaW5nIHRoZSBzdGFuZGFyZCBydW50aW1lLiBJdCBzZWVtcyBiZXR0ZXIgdG9cbiAgICAgICAgICAvLyBzeXN0ZW1hdGljYWxseSBmYWlsIG9uIG1hcnNoYWxsaW5nLlxuICAgICAgICAgIC8vXG4gICAgICAgICAgLy8gICAgICAgICAgaWYodHlwZV9vZl92ICE9IFwibnVtYmVyXCIpXG4gICAgICAgICAgY2FtbF9mYWlsd2l0aChcIm91dHB1dF92YWx1ZTogYWJzdHJhY3QgdmFsdWUgKFwiK3R5cGVfb2ZfditcIilcIik7XG4gICAgICAgICAgLy8gICAgICAgICAgdmFyIHQgPSBjYW1sX2ludDY0X3RvX2J5dGVzKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCh2KSk7XG4gICAgICAgICAgLy8gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAweDBCIC8qY3N0LkNPREVfRE9VQkxFX0JJRyovKTtcbiAgICAgICAgICAvLyAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpPDg7IGkrKyl7d3JpdGVyLndyaXRlKDgsdFtpXSl9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodiA+PSAwICYmIHYgPCAweDQwKSB7XG4gICAgICAgICAgd3JpdGVyLndyaXRlICg4LCAwWDQwIC8qY3N0LlBSRUZJWF9TTUFMTF9JTlQqLyArIHYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmICh2ID49IC0oMSA8PCA3KSAmJiB2IDwgKDEgPDwgNykpXG4gICAgICAgICAgICB3cml0ZXIud3JpdGVfY29kZSg4LCAweDAwIC8qY3N0LkNPREVfSU5UOCovLCB2KTtcbiAgICAgICAgICBlbHNlIGlmICh2ID49IC0oMSA8PCAxNSkgJiYgdiA8ICgxIDw8IDE1KSlcbiAgICAgICAgICAgIHdyaXRlci53cml0ZV9jb2RlKDE2LCAweDAxIC8qY3N0LkNPREVfSU5UMTYqLywgdik7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgd3JpdGVyLndyaXRlX2NvZGUoMzIsIDB4MDIgLypjc3QuQ09ERV9JTlQzMiovLCB2KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBleHRlcm5fcmVjICh2KTtcbiAgICB3aGlsZSAoc3RhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGkgPSBzdGFjay5wb3AgKCk7XG4gICAgICB2YXIgdiA9IHN0YWNrLnBvcCAoKTtcbiAgICAgIGlmIChpICsgMSA8IHYubGVuZ3RoKSBzdGFjay5wdXNoICh2LCBpICsgMSk7XG4gICAgICBleHRlcm5fcmVjICh2W2ldKTtcbiAgICB9XG4gICAgaWYgKGludGVybl9vYmpfdGFibGUpIHdyaXRlci5vYmpfY291bnRlciA9IGludGVybl9vYmpfdGFibGUub2Jqcy5sZW5ndGg7XG4gICAgd3JpdGVyLmZpbmFsaXplKCk7XG4gICAgcmV0dXJuIHdyaXRlci5jaHVuaztcbiAgfVxufSAoKTtcblxuLy9Qcm92aWRlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9zdHJpbmdfb2ZfYXJyYXlcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyAodiwgZmxhZ3MpIHtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J5dGVzIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfb3V0cHV0X3ZhbCwgY2FtbF9ieXRlc19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXMgKHYsIGZsYWdzKSB7XG4gIHJldHVybiBjYW1sX2J5dGVzX29mX2FycmF5IChjYW1sX291dHB1dF92YWwgKHYsIGZsYWdzKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlclxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsLCBjYW1sX2ZhaWx3aXRoLCBjYW1sX2JsaXRfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlX3RvX2J1ZmZlciAocywgb2ZzLCBsZW4sIHYsIGZsYWdzKSB7XG4gIHZhciB0ID0gY2FtbF9vdXRwdXRfdmFsICh2LCBmbGFncyk7XG4gIGlmICh0Lmxlbmd0aCA+IGxlbikgY2FtbF9mYWlsd2l0aCAoXCJNYXJzaGFsLnRvX2J1ZmZlcjogYnVmZmVyIG92ZXJmbG93XCIpO1xuICBjYW1sX2JsaXRfYnl0ZXModCwgMCwgcywgb2ZzLCB0Lmxlbmd0aCk7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uLCBIdWdvIEhldXphcmRcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBJb1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3N5c19mZHNcbnZhciBjYW1sX3N5c19mZHMgPSBuZXcgQXJyYXkoMyk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfc3lzX2Nsb3NlXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbmZ1bmN0aW9uIGNhbWxfc3lzX2Nsb3NlKGZkKSB7XG4gIHZhciBmaWxlID0gY2FtbF9zeXNfZmRzW2ZkXTtcbiAgaWYoZmlsZSkgZmlsZS5jbG9zZSgpO1xuICBkZWxldGUgY2FtbF9zeXNfZmRzW2ZkXTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zeXNfb3BlblxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IE1sRmFrZUZkX291dFxuLy9SZXF1aXJlczogcmVzb2x2ZV9mc19kZXZpY2Vcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGZzX25vZGVfc3VwcG9ydGVkXG4vL1JlcXVpcmVzOiBjYW1sX3N5c19mZHNcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5fZm9yX25vZGVcbmZ1bmN0aW9uIGNhbWxfc3lzX29wZW5faW50ZXJuYWwoZmlsZSxpZHgpIHtcbiAgaWYoaWR4ID09IHVuZGVmaW5lZCl7XG4gICAgaWR4ID0gY2FtbF9zeXNfZmRzLmxlbmd0aDtcbiAgfVxuICBjYW1sX3N5c19mZHNbaWR4XSA9IGZpbGU7XG4gIHJldHVybiBpZHggfCAwO1xufVxuZnVuY3Rpb24gY2FtbF9zeXNfb3BlbiAobmFtZSwgZmxhZ3MsIF9wZXJtcykge1xuICB2YXIgZiA9IHt9O1xuICB3aGlsZShmbGFncyl7XG4gICAgc3dpdGNoKGZsYWdzWzFdKXtcbiAgICBjYXNlIDA6IGYucmRvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDE6IGYud3Jvbmx5ID0gMTticmVhaztcbiAgICBjYXNlIDI6IGYuYXBwZW5kID0gMTticmVhaztcbiAgICBjYXNlIDM6IGYuY3JlYXRlID0gMTticmVhaztcbiAgICBjYXNlIDQ6IGYudHJ1bmNhdGUgPSAxO2JyZWFrO1xuICAgIGNhc2UgNTogZi5leGNsID0gMTsgYnJlYWs7XG4gICAgY2FzZSA2OiBmLmJpbmFyeSA9IDE7YnJlYWs7XG4gICAgY2FzZSA3OiBmLnRleHQgPSAxO2JyZWFrO1xuICAgIGNhc2UgODogZi5ub25ibG9jayA9IDE7YnJlYWs7XG4gICAgfVxuICAgIGZsYWdzPWZsYWdzWzJdO1xuICB9XG4gIGlmKGYucmRvbmx5ICYmIGYud3Jvbmx5KVxuICAgIGNhbWxfcmFpc2Vfc3lzX2Vycm9yKGNhbWxfanNieXRlc19vZl9zdHJpbmcobmFtZSkgKyBcIiA6IGZsYWdzIE9wZW5fcmRvbmx5IGFuZCBPcGVuX3dyb25seSBhcmUgbm90IGNvbXBhdGlibGVcIik7XG4gIGlmKGYudGV4dCAmJiBmLmJpbmFyeSlcbiAgICBjYW1sX3JhaXNlX3N5c19lcnJvcihjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKG5hbWUpICsgXCIgOiBmbGFncyBPcGVuX3RleHQgYW5kIE9wZW5fYmluYXJ5IGFyZSBub3QgY29tcGF0aWJsZVwiKTtcbiAgdmFyIHJvb3QgPSByZXNvbHZlX2ZzX2RldmljZShuYW1lKTtcbiAgdmFyIGZpbGUgPSByb290LmRldmljZS5vcGVuKHJvb3QucmVzdCxmKTtcbiAgcmV0dXJuIGNhbWxfc3lzX29wZW5faW50ZXJuYWwgKGZpbGUsIHVuZGVmaW5lZCk7XG59XG4oZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBmaWxlKGZkLCBmbGFncykge1xuICAgIGlmKGZzX25vZGVfc3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybiBjYW1sX3N5c19vcGVuX2Zvcl9ub2RlKGZkLCBmbGFncyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICAgIHJldHVybiBuZXcgTWxGYWtlRmRfb3V0KGZkLCBmbGFncylcbiAgfVxuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMCx7cmRvbmx5OjEsYWx0bmFtZTpcIi9kZXYvc3RkaW5cIixpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDApO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMSx7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDEpO1xuICBjYW1sX3N5c19vcGVuX2ludGVybmFsKGZpbGUoMix7YnVmZmVyZWQ6Mix3cm9ubHk6MSxpc0NoYXJhY3RlckRldmljZTp0cnVlfSksIDIpO1xufSkoKVxuXG5cbi8vIG9jYW1sIENoYW5uZWxzXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9zZXRfY2hhbm5lbF9uYW1lKGNoYW5pZCwgbmFtZSkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgY2hhbi5uYW1lID0gbmFtZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2hhbm5lbHNcbnZhciBjYW1sX21sX2NoYW5uZWxzID0gbmV3IEFycmF5KCk7XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3Rcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfb3V0X2NoYW5uZWxzX2xpc3QgKCkge1xuICB2YXIgbCA9IDA7XG4gIGZvcih2YXIgYyA9IDA7IGMgPCBjYW1sX21sX2NoYW5uZWxzLmxlbmd0aDsgYysrKXtcbiAgICBpZihjYW1sX21sX2NoYW5uZWxzW2NdICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3BlbmVkICYmIGNhbWxfbWxfY2hhbm5lbHNbY10ub3V0KVxuICAgICAgbD1bMCxjYW1sX21sX2NoYW5uZWxzW2NdLmZkLGxdO1xuICB9XG4gIHJldHVybiBsO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9zeXNfZmRzXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvclxuLy9SZXF1aXJlczogY2FtbF9zeXNfb3BlblxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0IChmZCkge1xuICB2YXIgZmlsZSA9IGNhbWxfc3lzX2Zkc1tmZF07XG4gIGlmKGZpbGUuZmxhZ3MucmRvbmx5KSBjYW1sX3JhaXNlX3N5c19lcnJvcihcImZkIFwiKyBmZCArIFwiIGlzIHJlYWRvbmx5XCIpO1xuICB2YXIgYnVmZmVyZWQgPSAoZmlsZS5mbGFncy5idWZmZXJlZCAhPT0gdW5kZWZpbmVkKSA/IGZpbGUuZmxhZ3MuYnVmZmVyZWQgOiAxO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6dHJ1ZSxcbiAgICBidWZmZXJfY3VycjowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgYnVmZmVyZWQ6YnVmZmVyZWRcbiAgfTtcbiAgY2FtbF9tbF9jaGFubmVsc1tjaGFubmVsLmZkXT1jaGFubmVsO1xuICByZXR1cm4gY2hhbm5lbC5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5cbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfc3lzX2Zkc1xuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfc3lzX29wZW5cbmZ1bmN0aW9uIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luIChmZCkgIHtcbiAgdmFyIGZpbGUgPSBjYW1sX3N5c19mZHNbZmRdO1xuICBpZihmaWxlLmZsYWdzLndyb25seSkgY2FtbF9yYWlzZV9zeXNfZXJyb3IoXCJmZCBcIisgZmQgKyBcIiBpcyB3cml0ZW9ubHlcIik7XG4gIHZhciByZWZpbGwgPSBudWxsO1xuICB2YXIgY2hhbm5lbCA9IHtcbiAgICBmaWxlOmZpbGUsXG4gICAgb2Zmc2V0OmZpbGUuZmxhZ3MuYXBwZW5kP2ZpbGUubGVuZ3RoKCk6MCxcbiAgICBmZDpmZCxcbiAgICBvcGVuZWQ6dHJ1ZSxcbiAgICBvdXQ6IGZhbHNlLFxuICAgIGJ1ZmZlcl9jdXJyOjAsXG4gICAgYnVmZmVyX21heDowLFxuICAgIGJ1ZmZlcjpuZXcgVWludDhBcnJheSg2NTUzNiksXG4gICAgcmVmaWxsOnJlZmlsbFxuICB9O1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5uZWwuZmRdPWNoYW5uZWw7XG4gIHJldHVybiBjaGFubmVsLmZkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luX3dpdGhfZmxhZ3Ncbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX2luXG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW5fd2l0aF9mbGFncyhmZCwgZmxhZ3Mpe1xuICByZXR1cm4gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3JfaW4oZmQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9vdXRfd2l0aF9mbGFnc1xuLy9SZXF1aXJlczogY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XG4vL1ZlcnNpb246ID49IDUuMVxuZnVuY3Rpb24gY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0X3dpdGhfZmxhZ3MoZmQsIGZsYWdzKXtcbiAgcmV0dXJuIGNhbWxfbWxfb3Blbl9kZXNjcmlwdG9yX291dChmZCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG4vL0FsaWFzOiB3aW5fZmlsZWRlc2NyX29mX2NoYW5uZWxcbmZ1bmN0aW9uIGNhbWxfY2hhbm5lbF9kZXNjcmlwdG9yKGNoYW5pZCl7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2hhbi5mZDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlKGNoYW5pZCxtb2RlKXtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4uZmlsZS5mbGFncy50ZXh0ID0gIW1vZGVcbiAgY2hhbi5maWxlLmZsYWdzLmJpbmFyeSA9IG1vZGVcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaXNfYmluYXJ5X21vZGVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbi8vVmVyc2lvbjogPj0gNS4yXG5mdW5jdGlvbiBjYW1sX21sX2lzX2JpbmFyeV9tb2RlKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5mbGFncy5iaW5hcnkgXG59XG5cbi8vSW5wdXQgZnJvbSBpbl9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfY2xvc2VfY2hhbm5lbFxuLy9SZXF1aXJlczogY2FtbF9tbF9mbHVzaCwgY2FtbF9tbF9jaGFubmVsc1xuLy9SZXF1aXJlczogY2FtbF9zeXNfY2xvc2VcbmZ1bmN0aW9uIGNhbWxfbWxfY2xvc2VfY2hhbm5lbCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm9wZW5lZCA9IGZhbHNlO1xuICBjYW1sX3N5c19jbG9zZShjaGFuLmZkKVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfY2hhbm5lbF9zaXplKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgcmV0dXJuIGNoYW4uZmlsZS5sZW5ndGgoKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9jaGFubmVsX3NpemVfNjQoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjaGFuLmZpbGUubGVuZ3RoICgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfY2hhbm5lbF9vdXRwdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2NoYW5uZWxfb3V0cHV0KGNoYW5pZCxmKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBjaGFuLm91dHB1dCA9IChmdW5jdGlvbiAocykge2Yocyl9KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfc2V0X2NoYW5uZWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbChjaGFuaWQsZikge1xuICBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF0ucmVmaWxsID0gZjtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcmVmaWxsXG4vL1JlcXVpcmVzOiBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX3JlZmlsbCAoY2hhbikge1xuICBpZihjaGFuLnJlZmlsbCAhPSBudWxsKXtcbiAgICB2YXIgc3RyID0gY2hhbi5yZWZpbGwoKTtcbiAgICB2YXIgc3RyX2EgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzdHIpO1xuICAgIGlmIChzdHJfYS5sZW5ndGggPT0gMCkge1xuICAgICAgY2hhbi5yZWZpbGwgPSBudWxsXG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYoY2hhbi5idWZmZXIubGVuZ3RoIDwgY2hhbi5idWZmZXJfbWF4ICsgc3RyX2EubGVuZ3RoKXtcbiAgICAgICAgdmFyIGIgPSBuZXcgVWludDhBcnJheShjaGFuLmJ1ZmZlcl9tYXggKyBzdHJfYS5sZW5ndGgpO1xuICAgICAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgICAgIGNoYW4uYnVmZmVyID0gYjtcbiAgICAgIH1cbiAgICAgIGNoYW4uYnVmZmVyLnNldChzdHJfYSxjaGFuLmJ1ZmZlcl9tYXgpO1xuICAgICAgY2hhbi5vZmZzZXQgKz0gc3RyX2EubGVuZ3RoO1xuICAgICAgY2hhbi5idWZmZXJfbWF4ICs9IHN0cl9hLmxlbmd0aDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIG5yZWFkID0gY2hhbi5maWxlLnJlYWQoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCBjaGFuLmJ1ZmZlcl9tYXgsIGNoYW4uYnVmZmVyLmxlbmd0aCAtIGNoYW4uYnVmZmVyX21heCk7XG4gICAgY2hhbi5vZmZzZXQgKz0gbnJlYWQ7XG4gICAgY2hhbi5idWZmZXJfbWF4ICs9IG5yZWFkO1xuICB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfaW5wdXRfYmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXQgKGNoYW5pZCwgYiwgaSwgbCkge1xuICB2YXIgYmEgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGIpO1xuICByZXR1cm4gY2FtbF9tbF9pbnB1dF9ibG9jayhjaGFuaWQsIGJhLCBpLCBsKVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2JpZ2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX2JhX3RvX3R5cGVkX2FycmF5XG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2JpZ2FycmF5IChjaGFuaWQsIGIsIGksIGwpIHtcbiAgdmFyIGJhID0gY2FtbF9iYV90b190eXBlZF9hcnJheShiKTtcbiAgcmV0dXJuIGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLCBiYSwgaSwgbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9ibG9ja1xuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfYmxvY2sgKGNoYW5pZCwgYmEsIGksIGwpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciBuID0gbDtcbiAgdmFyIGF2YWlsID0gY2hhbi5idWZmZXJfbWF4IC0gY2hhbi5idWZmZXJfY3VycjtcbiAgaWYobCA8PSBhdmFpbCkge1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBsO1xuICB9XG4gIGVsc2UgaWYoYXZhaWwgPiAwKSB7XG4gICAgYmEuc2V0KGNoYW4uYnVmZmVyLnN1YmFycmF5KGNoYW4uYnVmZmVyX2N1cnIsY2hhbi5idWZmZXJfY3VyciArIGF2YWlsKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBhdmFpbDtcbiAgICBuID0gYXZhaWw7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICBjYW1sX3JlZmlsbChjaGFuKTtcbiAgICB2YXIgYXZhaWwgPSBjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgIGlmKG4gPiBhdmFpbCkgbiA9IGF2YWlsO1xuICAgIGJhLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyLGNoYW4uYnVmZmVyX2N1cnIgKyBuKSwgaSk7XG4gICAgY2hhbi5idWZmZXJfY3VyciArPSBuO1xuICB9XG4gIHJldHVybiBuIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9tYXJzaGFsX2RhdGFfc2l6ZSwgY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzLCBjYW1sX2NyZWF0ZV9ieXRlcywgY2FtbF9tbF9jaGFubmVscywgY2FtbF9ieXRlc19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9yZWZpbGwsIGNhbWxfZmFpbHdpdGgsIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGVcbi8vUmVxdWlyZXM6IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZVxuZnVuY3Rpb24gY2FtbF9pbnB1dF92YWx1ZSAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICB2YXIgaGVhZGVyID0gbmV3IFVpbnQ4QXJyYXkoY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgZnVuY3Rpb24gYmxvY2soYnVmZmVyLCBvZmZzZXQsIG4pIHtcbiAgICB2YXIgciA9IDA7XG4gICAgd2hpbGUociA8IG4pe1xuICAgICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgICAgICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgICAgICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgICAgICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gICAgICB9XG4gICAgICBpZiAoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpXG4gICAgICAgIGJyZWFrO1xuICAgICAgYnVmZmVyW29mZnNldCtyXSA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICAgICAgY2hhbi5idWZmZXJfY3VycisrO1xuICAgICAgcisrO1xuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB2YXIgciA9IGJsb2NrKGhlYWRlciwgMCwgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgaWYociA9PSAwKVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgZWxzZSBpZiAociA8IGNhbWxfbWFyc2hhbF9oZWFkZXJfc2l6ZSlcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3RcIik7XG4gIHZhciBsZW4gPSBjYW1sX21hcnNoYWxfZGF0YV9zaXplIChjYW1sX2J5dGVzX29mX2FycmF5KGhlYWRlciksIDApO1xuICB2YXIgYnVmID0gbmV3IFVpbnQ4QXJyYXkobGVuICsgY2FtbF9tYXJzaGFsX2hlYWRlcl9zaXplKTtcbiAgYnVmLnNldChoZWFkZXIsMCk7XG4gIHZhciByID0gYmxvY2soYnVmLCBjYW1sX21hcnNoYWxfaGVhZGVyX3NpemUsIGxlbilcbiAgaWYociA8IGxlbilcbiAgICBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IHRydW5jYXRlZCBvYmplY3QgXCIgKyByICsgXCIgIFwiICsgbGVuKTtcbiAgdmFyIG9mZnNldCA9IFswXTtcbiAgdmFyIHJlcyA9IGNhbWxfaW5wdXRfdmFsdWVfZnJvbV9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KGJ1ZiksIG9mZnNldCk7XG4gIGNoYW4ub2Zmc2V0ID0gY2hhbi5vZmZzZXQgKyBvZmZzZXRbMF07XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaW5wdXRfdmFsdWVfdG9fb3V0c2lkZV9oZWFwXG4vL1JlcXVpcmVzOiBjYW1sX2lucHV0X3ZhbHVlXG5mdW5jdGlvbiBjYW1sX2lucHV0X3ZhbHVlX3RvX291dHNpZGVfaGVhcChjKSB7XG4gIHJldHVybiBjYW1sX2lucHV0X3ZhbHVlKGMpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lucHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUsIGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X2NoYXIgKGNoYW5pZCkge1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlcl9tYXgpe1xuICAgIGNoYW4uYnVmZmVyX2N1cnIgPSAwO1xuICAgIGNoYW4uYnVmZmVyX21heCA9IDA7XG4gICAgY2FtbF9yZWZpbGwoY2hhbik7XG4gIH1cbiAgaWYgKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXJfbWF4KVxuICAgIGNhbWxfcmFpc2VfZW5kX29mX2ZpbGUoKTtcbiAgdmFyIHJlcyA9IGNoYW4uYnVmZmVyW2NoYW4uYnVmZmVyX2N1cnJdO1xuICBjaGFuLmJ1ZmZlcl9jdXJyKys7XG4gIHJldHVybiByZXM7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfaW5wdXRfaW50XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlXG4vL1JlcXVpcmVzOiBjYW1sX21sX2lucHV0X2NoYXIsIGNhbWxfbWxfY2hhbm5lbHNcbmZ1bmN0aW9uIGNhbWxfbWxfaW5wdXRfaW50IChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHZhciByZXMgPSAwO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgNDsgaSsrKXtcbiAgICByZXMgPSAocmVzIDw8IDgpICsgY2FtbF9tbF9pbnB1dF9jaGFyKGNoYW5pZCkgfCAwO1xuICB9XG4gIHJldHVybiByZXMgfCAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3NlZWtfaW5cbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2Vfc3lzX2Vycm9yLCBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3NlZWtfaW4oY2hhbmlkLCBwb3MpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGlmIChjaGFuLnJlZmlsbCAhPSBudWxsKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIklsbGVnYWwgc2Vla1wiKTtcbiAgaWYocG9zID49IGNoYW4ub2Zmc2V0IC0gY2hhbi5idWZmZXJfbWF4XG4gICAgICYmIHBvcyA8PSBjaGFuLm9mZnNldFxuICAgICAmJiBjaGFuLmZpbGUuZmxhZ3MuYmluYXJ5KSB7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IGNoYW4uYnVmZmVyX21heCAtIChjaGFuLm9mZnNldCAtIHBvcyk7XG4gIH0gZWxzZSB7XG4gICAgY2hhbi5vZmZzZXQgPSBwb3M7XG4gICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgY2hhbi5idWZmZXJfbWF4ID0gMDtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXG4vL1JlcXVpcmVzOiBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbihjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQscG9zKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX2luXzY0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X3RvX2Zsb2F0LCBjYW1sX3NlZWtfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfc2Vla19pbl82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19pbihjaGFuaWQsIHBvcyk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX3Bvc19pbihjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLm9mZnNldCAtIChjaGFuLmJ1ZmZlcl9tYXggLSBjaGFuLmJ1ZmZlcl9jdXJyKSB8IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfcG9zX2luXG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19pblxuZnVuY3Rpb24gY2FtbF9tbF9wb3NfaW4oY2hhbmlkKSB7XG4gIHJldHVybiBjYW1sX3Bvc19pbihjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19pbl82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9mbG9hdCwgY2FtbF9wb3NfaW5cbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX2luXzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdChjYW1sX3Bvc19pbihjaGFuaWQpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9pbnB1dF9zY2FuX2xpbmVcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3Jcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfcmVmaWxsXG5mdW5jdGlvbiBjYW1sX21sX2lucHV0X3NjYW5fbGluZShjaGFuaWQpe1xuICB2YXIgY2hhbiA9IGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXTtcbiAgdmFyIHAgPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBkbyB7XG4gICAgaWYocCA+PSBjaGFuLmJ1ZmZlcl9tYXgpIHtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPiAwKSB7XG4gICAgICAgIGNoYW4uYnVmZmVyLnNldChjaGFuLmJ1ZmZlci5zdWJhcnJheShjaGFuLmJ1ZmZlcl9jdXJyKSwwKTtcbiAgICAgICAgcCAtPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICAgICAgICBjaGFuLmJ1ZmZlcl9tYXggLT0gY2hhbi5idWZmZXJfY3VycjtcbiAgICAgICAgY2hhbi5idWZmZXJfY3VyciA9IDA7XG4gICAgICB9XG4gICAgICBpZihjaGFuLmJ1ZmZlcl9tYXggPj0gY2hhbi5idWZmZXIubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgICAgdmFyIHByZXZfbWF4ID0gY2hhbi5idWZmZXJfbWF4O1xuICAgICAgY2FtbF9yZWZpbGwgKGNoYW4pO1xuICAgICAgaWYocHJldl9tYXggPT0gY2hhbi5idWZmZXJfbWF4KSB7XG4gICAgICAgIHJldHVybiAtKGNoYW4uYnVmZmVyX21heCkgfCAwO1xuICAgICAgfVxuICAgIH1cbiAgfSB3aGlsZSAoY2hhbi5idWZmZXJbcCsrXSAhPSAxMCk7XG4gIHJldHVybiAocCAtIGNoYW4uYnVmZmVyX2N1cnIpIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9mbHVzaFxuLy9SZXF1aXJlczogY2FtbF9yYWlzZV9zeXNfZXJyb3IsIGNhbWxfbWxfY2hhbm5lbHNcbi8vUmVxdWlyZXM6IGNhbWxfc3ViYXJyYXlfdG9fanNieXRlc1xuZnVuY3Rpb24gY2FtbF9tbF9mbHVzaCAoY2hhbmlkKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBmbHVzaCBhIGNsb3NlZCBjaGFubmVsXCIpO1xuICBpZighY2hhbi5idWZmZXIgfHwgY2hhbi5idWZmZXJfY3VyciA9PSAwKSByZXR1cm4gMDtcbiAgaWYoY2hhbi5vdXRwdXQpIHtcbiAgICBjaGFuLm91dHB1dChjYW1sX3N1YmFycmF5X3RvX2pzYnl0ZXMoY2hhbi5idWZmZXIsIDAsIGNoYW4uYnVmZmVyX2N1cnIpKTtcbiAgfSBlbHNlIHtcbiAgICBjaGFuLmZpbGUud3JpdGUoY2hhbi5vZmZzZXQsIGNoYW4uYnVmZmVyLCAwLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgfVxuICBjaGFuLm9mZnNldCArPSBjaGFuLmJ1ZmZlcl9jdXJyO1xuICBjaGFuLmJ1ZmZlcl9jdXJyID0gMDtcbiAgcmV0dXJuIDA7XG59XG5cbi8vb3V0cHV0IHRvIG91dF9jaGFubmVsXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X3RhXG4vL1JlcXVpcmVzOiBjYW1sX21sX2ZsdXNoLGNhbWxfbWxfYnl0ZXNfbGVuZ3RoXG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX3N5c19lcnJvciwgY2FtbF9tbF9jaGFubmVsc1xuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfdGEoY2hhbmlkLGJ1ZmZlcixvZmZzZXQsbGVuKSB7XG4gIHZhciBjaGFuID0gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdO1xuICBpZighIGNoYW4ub3BlbmVkKSBjYW1sX3JhaXNlX3N5c19lcnJvcihcIkNhbm5vdCBvdXRwdXQgdG8gYSBjbG9zZWQgY2hhbm5lbFwiKTtcbiAgYnVmZmVyID0gYnVmZmVyLnN1YmFycmF5KG9mZnNldCwgb2Zmc2V0ICsgbGVuKTtcbiAgaWYoY2hhbi5idWZmZXJfY3VyciArIGJ1ZmZlci5sZW5ndGggPiBjaGFuLmJ1ZmZlci5sZW5ndGgpIHtcbiAgICB2YXIgYiA9IG5ldyBVaW50OEFycmF5KGNoYW4uYnVmZmVyX2N1cnIgKyBidWZmZXIubGVuZ3RoKTtcbiAgICBiLnNldChjaGFuLmJ1ZmZlcik7XG4gICAgY2hhbi5idWZmZXIgPSBiXG4gIH1cbiAgc3dpdGNoKGNoYW4uYnVmZmVyZWQpe1xuICBjYXNlIDA6IC8vIFVuYnVmZmVyZWRcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgY2FtbF9tbF9mbHVzaCAoY2hhbmlkKTtcbiAgICBicmVha1xuICBjYXNlIDE6IC8vIEJ1ZmZlcmVkICh0aGUgZGVmYXVsdClcbiAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGJ1ZmZlci5sZW5ndGg7XG4gICAgaWYoY2hhbi5idWZmZXJfY3VyciA+PSBjaGFuLmJ1ZmZlci5sZW5ndGgpXG4gICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIGJyZWFrO1xuICBjYXNlIDI6IC8vIEJ1ZmZlcmVkIChvbmx5IGZvciBzdGRvdXQgYW5kIHN0ZGVycilcbiAgICB2YXIgaWQgPSBidWZmZXIubGFzdEluZGV4T2YoMTApXG4gICAgaWYoaWQgPCAwKSB7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLCBjaGFuLmJ1ZmZlcl9jdXJyKTtcbiAgICAgIGNoYW4uYnVmZmVyX2N1cnIgKz0gYnVmZmVyLmxlbmd0aDtcbiAgICAgIGlmKGNoYW4uYnVmZmVyX2N1cnIgPj0gY2hhbi5idWZmZXIubGVuZ3RoKVxuICAgICAgICBjYW1sX21sX2ZsdXNoIChjaGFuaWQpO1xuICAgIH1cbiAgICBlbHNlIHtcbiAgICAgIGNoYW4uYnVmZmVyLnNldChidWZmZXIuc3ViYXJyYXkoMCwgaWQgKyAxKSwgY2hhbi5idWZmZXJfY3Vycik7XG4gICAgICBjaGFuLmJ1ZmZlcl9jdXJyICs9IGlkICsgMTtcbiAgICAgIGNhbWxfbWxfZmx1c2ggKGNoYW5pZCk7XG4gICAgICBjaGFuLmJ1ZmZlci5zZXQoYnVmZmVyLnN1YmFycmF5KGlkICsgMSksIGNoYW4uYnVmZmVyX2N1cnIpO1xuICAgICAgY2hhbi5idWZmZXJfY3VyciArPSBidWZmZXIubGVuZ3RoIC0gaWQgLSAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMsIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9ieXRlcyhjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9tbF9vdXRwdXRfYmlnYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXksIGNhbWxfbWxfb3V0cHV0X3RhXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9iaWdhcnJheShjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pIHtcbiAgdmFyIGJ1ZmZlciA9IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkoYnVmZmVyKTtcbiAgcmV0dXJuIGNhbWxfbWxfb3V0cHV0X3RhKGNoYW5pZCxidWZmZXIsb2Zmc2V0LGxlbik7XG59XG5cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dFxuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXRfYnl0ZXMsIGNhbWxfYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dChjaGFuaWQsYnVmZmVyLG9mZnNldCxsZW4pe1xuICByZXR1cm4gY2FtbF9tbF9vdXRwdXRfYnl0ZXMoY2hhbmlkLGNhbWxfYnl0ZXNfb2Zfc3RyaW5nKGJ1ZmZlciksb2Zmc2V0LGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfb3V0cHV0X2NoYXJcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG5mdW5jdGlvbiBjYW1sX21sX291dHB1dF9jaGFyIChjaGFuaWQsYykge1xuICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoU3RyaW5nLmZyb21DaGFyQ29kZShjKSk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsMSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX291dHB1dF92YWx1ZVxuLy9SZXF1aXJlczogY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nLCBjYW1sX21sX291dHB1dCxjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfb3V0cHV0X3ZhbHVlIChjaGFuaWQsdixmbGFncykge1xuICB2YXIgcyA9IGNhbWxfb3V0cHV0X3ZhbHVlX3RvX3N0cmluZyh2LCBmbGFncyk7XG4gIGNhbWxfbWxfb3V0cHV0KGNoYW5pZCxzLDAsY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKTtcbiAgcmV0dXJuIDA7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9tbF9jaGFubmVscywgY2FtbF9tbF9mbHVzaFxuZnVuY3Rpb24gY2FtbF9zZWVrX291dChjaGFuaWQsIHBvcyl7XG4gIGNhbWxfbWxfZmx1c2goY2hhbmlkKTtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIGNoYW4ub2Zmc2V0ID0gcG9zO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dFxuLy9SZXF1aXJlczogY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dChjaGFuaWQscG9zKXtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuLy9Qcm92aWRlczogY2FtbF9tbF9zZWVrX291dF82NFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19mbG9hdCwgY2FtbF9zZWVrX291dFxuZnVuY3Rpb24gY2FtbF9tbF9zZWVrX291dF82NChjaGFuaWQscG9zKXtcbiAgdmFyIHBvcyA9IGNhbWxfaW50NjRfdG9fZmxvYXQocG9zKTtcbiAgcmV0dXJuIGNhbWxfc2Vla19vdXQoY2hhbmlkLCBwb3MpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3Bvc19vdXRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfcG9zX291dChjaGFuaWQpIHtcbiAgdmFyIGNoYW4gPSBjYW1sX21sX2NoYW5uZWxzW2NoYW5pZF07XG4gIHJldHVybiBjaGFuLm9mZnNldCArIGNoYW4uYnVmZmVyX2N1cnJcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9wb3Nfb3V0XG4vL1JlcXVpcmVzOiBjYW1sX3Bvc19vdXRcbmZ1bmN0aW9uIGNhbWxfbWxfcG9zX291dChjaGFuaWQpIHtcbiAgcmV0dXJuIGNhbWxfcG9zX291dChjaGFuaWQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX3Bvc19vdXRfNjRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfb2ZfZmxvYXQsIGNhbWxfcG9zX291dFxuZnVuY3Rpb24gY2FtbF9tbF9wb3Nfb3V0XzY0KGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9pbnQ2NF9vZl9mbG9hdCAoY2FtbF9wb3Nfb3V0KGNoYW5pZCkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX291dHB1dF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfb3V0cHV0XG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ19vZl9hcnJheVxuZnVuY3Rpb24gY2FtbF9tbF9vdXRwdXRfaW50IChjaGFuaWQsaSkge1xuICB2YXIgYXJyID0gWyhpPj4yNCkgJiAweEZGLChpPj4xNikgJiAweEZGLChpPj44KSAmIDB4RkYsaSAmIDB4RkYgXTtcbiAgdmFyIHMgPSBjYW1sX3N0cmluZ19vZl9hcnJheShhcnIpO1xuICBjYW1sX21sX291dHB1dChjaGFuaWQscywwLDQpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2lzX2J1ZmZlcmVkXG4vL1JlcXVpcmVzOiBjYW1sX21sX2NoYW5uZWxzXG5mdW5jdGlvbiBjYW1sX21sX2lzX2J1ZmZlcmVkKGNoYW5pZCkge1xuICByZXR1cm4gY2FtbF9tbF9jaGFubmVsc1tjaGFuaWRdLmJ1ZmZlcmVkID8gMSA6IDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tbF9zZXRfYnVmZmVyZWRcbi8vUmVxdWlyZXM6IGNhbWxfbWxfY2hhbm5lbHMsIGNhbWxfbWxfZmx1c2hcbmZ1bmN0aW9uIGNhbWxfbWxfc2V0X2J1ZmZlcmVkKGNoYW5pZCx2KSB7XG4gIGNhbWxfbWxfY2hhbm5lbHNbY2hhbmlkXS5idWZmZXJlZCA9IHY7XG4gIGlmKCF2KSBjYW1sX21sX2ZsdXNoKGNoYW5pZCk7XG4gIHJldHVybiAwXG59XG4iLCJcblxuLy9Qcm92aWRlczogY2FtbF9nY19taW5vclxuZnVuY3Rpb24gY2FtbF9nY19taW5vcih1bml0KXtcbiAgLy9hdmFpbGFibGUgd2l0aCBbbm9kZSAtLWV4cG9zZS1nY11cbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuZ2MgPT0gJ2Z1bmN0aW9uJykgZ2xvYmFsVGhpcy5nYyh0cnVlKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWFqb3JcbmZ1bmN0aW9uIGNhbWxfZ2NfbWFqb3IodW5pdCl7XG4gIC8vYXZhaWxhYmxlIHdpdGggW25vZGUgLS1leHBvc2UtZ2NdXG4gIGlmKHR5cGVvZiBnbG9iYWxUaGlzLmdjID09ICdmdW5jdGlvbicpIGdsb2JhbFRoaXMuZ2MoKTtcbiAgcmV0dXJuIDBcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfZnVsbF9tYWpvclxuZnVuY3Rpb24gY2FtbF9nY19mdWxsX21ham9yKHVuaXQpe1xuICAvL2F2YWlsYWJsZSB3aXRoIFtub2RlIC0tZXhwb3NlLWdjXVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5nYyA9PSAnZnVuY3Rpb24nKSBnbG9iYWxUaGlzLmdjKCk7XG4gIHJldHVybiAwXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2djX2NvbXBhY3Rpb25cbmZ1bmN0aW9uIGNhbWxfZ2NfY29tcGFjdGlvbigpeyByZXR1cm4gMH1cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfY291bnRlcnNcbmZ1bmN0aW9uIGNhbWxfZ2NfY291bnRlcnMoKSB7IHJldHVybiBbMjU0LDAsMCwwXSB9XG4vL1Byb3ZpZGVzOiBjYW1sX2djX3F1aWNrX3N0YXRcbmZ1bmN0aW9uIGNhbWxfZ2NfcXVpY2tfc3RhdCgpe1xuICByZXR1cm4gWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXVxufVxuLy9Qcm92aWRlczogY2FtbF9nY19zdGF0XG5mdW5jdGlvbiBjYW1sX2djX3N0YXQoKSB7XG4gIC8vIEEgZmllbGQgd2FzIGFkZGVkIGluIE9DYW1sIDQuMTIuIEl0IGlzIHVubGlrZWx5IHRvIGJlIGFuIGlzc3VlIHRvXG4gIC8vIHJldHVybiB0b28gbWFueSBmaWVsZHMgaW4gcHJldmlvdXMgdmVyc2lvbnMgb2YgT0NhbWwuXG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2Nfc2V0XG5mdW5jdGlvbiBjYW1sX2djX3NldChfY29udHJvbCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9nY19nZXRcbmZ1bmN0aW9uIGNhbWxfZ2NfZ2V0KCl7XG4gIHJldHVybiBbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDBdXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9zZXRcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zZXQoX2NvbnRyb2wpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVnaXN0ZXIgY29uc3RcbmZ1bmN0aW9uIGNhbWxfZmluYWxfcmVnaXN0ZXIgKCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2ZpbmFsX3JlZ2lzdGVyX2NhbGxlZF93aXRob3V0X3ZhbHVlXG52YXIgYWxsX2ZpbmFsaXplcnMgPSBuZXcgZ2xvYmFsVGhpcy5TZXQoKVxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZSAoY2IsIGEpIHtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBhIGluc3RhbmNlb2YgT2JqZWN0KSB7XG4gICAgdmFyIHggPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoeCl7YWxsX2ZpbmFsaXplcnMuZGVsZXRlKHgpOyBjYigwKTsgcmV0dXJuO30pO1xuICAgIHgucmVnaXN0ZXIoYSx4KTtcbiAgICBhbGxfZmluYWxpemVycy5hZGQoeCk7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZmluYWxfcmVsZWFzZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9maW5hbF9yZWxlYXNlICgpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0YXJ0XG5mdW5jdGlvbiBjYW1sX21lbXByb2Zfc3RhcnQocmF0ZSxzdGFja19zaXplLHRyYWNrZXIpe1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZW1wcm9mX3N0b3BcbmZ1bmN0aW9uIGNhbWxfbWVtcHJvZl9zdG9wKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWVtcHJvZl9kaXNjYXJkXG5mdW5jdGlvbiBjYW1sX21lbXByb2ZfZGlzY2FyZCh0KSB7IHJldHVybiAwIH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19yZXN1bWVcbmZ1bmN0aW9uIGNhbWxfZXZlbnRsb2dfcmVzdW1lKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9ldmVudGxvZ19wYXVzZVxuZnVuY3Rpb24gY2FtbF9ldmVudGxvZ19wYXVzZSh1bml0KSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFxuZnVuY3Rpb24gY2FtbF9nY19odWdlX2ZhbGxiYWNrX2NvdW50KHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nY19tYWpvcl9zbGljZVxuZnVuY3Rpb24gY2FtbF9nY19tYWpvcl9zbGljZSh3b3JrKSB7IHJldHVybiAwOyB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfZ2NfbWlub3Jfd29yZHNcbmZ1bmN0aW9uIGNhbWxfZ2NfbWlub3Jfd29yZHModW5pdCkgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9taW5vcl9mcmVlXG5mdW5jdGlvbiBjYW1sX2dldF9taW5vcl9mcmVlKHVuaXQpIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9nZXRfbWFqb3JfYnVja2V0XG5mdW5jdGlvbiBjYW1sX2dldF9tYWpvcl9idWNrZXQobikgeyByZXR1cm4gMDsgfVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9tYWpvcl9jcmVkaXRcbmZ1bmN0aW9uIGNhbWxfZ2V0X21ham9yX2NyZWRpdChuKSB7IHJldHVybiAwOyB9XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTQgSsOpcsO0bWUgVm91aWxsb24sIEh1Z28gSGV1emFyZCwgQW5keSBSYXlcbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbi8vXG4vLyBCaWdhcnJheS5cbi8vXG4vLyAtIGFsbCBiaWdhcnJheSB0eXBlcyBpbmNsdWRpbmcgSW50NjQgYW5kIENvbXBsZXguXG4vLyAtIGZvcnRyYW4gKyBjIGxheW91dHNcbi8vIC0gc3ViL3NsaWNlL3Jlc2hhcGVcbi8vIC0gcmV0YWluIGZhc3QgcGF0aCBmb3IgMWQgYXJyYXkgYWNjZXNzXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaW5pdCBjb25zdFxuZnVuY3Rpb24gY2FtbF9iYV9pbml0KCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2dldF9zaXplKGRpbXMpIHtcbiAgdmFyIG5fZGltcyA9IGRpbXMubGVuZ3RoO1xuICB2YXIgc2l6ZSA9IDE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbl9kaW1zOyBpKyspIHtcbiAgICBpZiAoZGltc1tpXSA8IDApXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IG5lZ2F0aXZlIGRpbWVuc2lvblwiKTtcbiAgICBzaXplID0gc2l6ZSAqIGRpbXNbaV07XG4gIH1cbiAgcmV0dXJuIHNpemU7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCl7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSA3OiBjYXNlIDEwOiBjYXNlIDExOiByZXR1cm4gMjtcbiAgZGVmYXVsdDogcmV0dXJuIDE7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKXtcbiAgdmFyIHZpZXc7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAwOiAgdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTogIHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDI6ICB2aWV3ID0gSW50OEFycmF5OyBicmVhaztcbiAgY2FzZSAzOiAgdmlldyA9IFVpbnQ4QXJyYXk7IGJyZWFrO1xuICBjYXNlIDQ6ICB2aWV3ID0gSW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNTogIHZpZXcgPSBVaW50MTZBcnJheTsgYnJlYWs7XG4gIGNhc2UgNjogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSA3OiAgdmlldyA9IEludDMyQXJyYXk7IGJyZWFrO1xuICBjYXNlIDg6ICB2aWV3ID0gSW50MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgOTogIHZpZXcgPSBJbnQzMkFycmF5OyBicmVhaztcbiAgY2FzZSAxMDogdmlldyA9IEZsb2F0MzJBcnJheTsgYnJlYWs7XG4gIGNhc2UgMTE6IHZpZXcgPSBGbG9hdDY0QXJyYXk7IGJyZWFrO1xuICBjYXNlIDEyOiB2aWV3ID0gVWludDhBcnJheTsgYnJlYWs7XG4gIH1cbiAgaWYgKCF2aWV3KSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5jcmVhdGU6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHZhciBkYXRhID0gbmV3IHZpZXcoc2l6ZSAqIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoa2luZCkpO1xuICByZXR1cm4gZGF0YTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jdXN0b21fbmFtZVxuLy9WZXJzaW9uOiA8IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyYXlcIlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1ZlcnNpb246ID49IDQuMTFcbnZhciBjYW1sX2JhX2N1c3RvbV9uYW1lID0gXCJfYmlnYXJyMDJcIlxuXG4vL1Byb3ZpZGVzOiBNbF9CaWdhcnJheVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2N1c3RvbV9uYW1lXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2NyZWF0ZV9sb19oaSwgY2FtbF9pbnQ2NF9oaTMyLCBjYW1sX2ludDY0X2xvMzJcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5IChraW5kLCBsYXlvdXQsIGRpbXMsIGJ1ZmZlcikge1xuXG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSA9IGJ1ZmZlcjtcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmNhbWxfY3VzdG9tID0gY2FtbF9iYV9jdXN0b21fbmFtZTtcblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgdmFyIG9mcyA9IDA7XG4gIGlmKHR5cGVvZiBhcmcgPT09IFwibnVtYmVyXCIpIGFyZyA9IFthcmddO1xuICBpZiAoISAoYXJnIGluc3RhbmNlb2YgQXJyYXkpKSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJiaWdhcnJheS5qczogaW52YWxpZCBvZmZzZXRcIik7XG4gIGlmICh0aGlzLmRpbXMubGVuZ3RoICE9IGFyZy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuZ2V0L3NldDogYmFkIG51bWJlciBvZiBkaW1lbnNpb25zXCIpO1xuICBpZih0aGlzLmxheW91dCA9PSAwIC8qIGNfbGF5b3V0ICovKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRpbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcmdbaV0gPCAwIHx8IGFyZ1tpXSA+PSB0aGlzLmRpbXNbaV0pXG4gICAgICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgICAgIG9mcyA9IChvZnMgKiB0aGlzLmRpbXNbaV0pICsgYXJnW2ldO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gdGhpcy5kaW1zLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBpZiAoYXJnW2ldIDwgMSB8fCBhcmdbaV0gPiB0aGlzLmRpbXNbaV0pe1xuICAgICAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gICAgICB9XG4gICAgICBvZnMgPSAob2ZzICogdGhpcy5kaW1zW2ldKSArIChhcmdbaV0gLSAxKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9mcztcbn1cblxuTWxfQmlnYXJyYXkucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChvZnMpIHtcbiAgc3dpdGNoKHRoaXMua2luZCl7XG4gIGNhc2UgNzpcbiAgICAvLyBJbnQ2NFxuICAgIHZhciBsID0gdGhpcy5kYXRhW29mcyAqIDIgKyAwXTtcbiAgICB2YXIgaCA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMV07XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfY3JlYXRlX2xvX2hpKGwsaCk7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB2YXIgciA9IHRoaXMuZGF0YVtvZnMgKiAyICsgMF07XG4gICAgdmFyIGkgPSB0aGlzLmRhdGFbb2ZzICogMiArIDFdO1xuICAgIHJldHVybiBbMjU0LCByLCBpXTtcbiAgZGVmYXVsdDpcbiAgICByZXR1cm4gdGhpcy5kYXRhW29mc11cbiAgfVxufVxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24gKG9mcyx2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gY2FtbF9pbnQ2NF9sbzMyKHYpO1xuICAgIHRoaXMuZGF0YVtvZnMgKiAyICsgMV0gPSBjYW1sX2ludDY0X2hpMzIodik7XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IGNhc2UgMTE6XG4gICAgLy8gQ29tcGxleDMyLCBDb21wbGV4NjRcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDBdID0gdlsxXTtcbiAgICB0aGlzLmRhdGFbb2ZzICogMiArIDFdID0gdlsyXTtcbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuXG5NbF9CaWdhcnJheS5wcm90b3R5cGUuZmlsbCA9IGZ1bmN0aW9uICh2KSB7XG4gIHN3aXRjaCh0aGlzLmtpbmQpe1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICB2YXIgYSA9IGNhbWxfaW50NjRfbG8zMih2KTtcbiAgICB2YXIgYiA9IGNhbWxfaW50NjRfaGkzMih2KTtcbiAgICBpZihhID09IGIpe1xuICAgICAgdGhpcy5kYXRhLmZpbGwoYSk7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgZm9yKHZhciBpID0gMDsgaTx0aGlzLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgICB0aGlzLmRhdGFbaV0gPSAoaSUyID09IDApID8gYSA6IGI7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDEwOiBjYXNlIDExOlxuICAgIC8vIENvbXBsZXgzMiwgQ29tcGxleDY0XG4gICAgdmFyIGltID0gdlsxXTtcbiAgICB2YXIgcmUgPSB2WzJdO1xuICAgIGlmKGltID09IHJlKXtcbiAgICAgIHRoaXMuZGF0YS5maWxsKGltKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICBmb3IodmFyIGkgPSAwOyBpPHRoaXMuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHRoaXMuZGF0YVtpXSA9IChpJTIgPT0gMCkgPyBpbSA6IHJlO1xuICAgICAgfVxuICAgIH1cbiAgICBicmVhaztcbiAgZGVmYXVsdDpcbiAgICB0aGlzLmRhdGEuZmlsbCh2KTtcbiAgICBicmVhaztcbiAgfVxufVxuXG5cbk1sX0JpZ2FycmF5LnByb3RvdHlwZS5jb21wYXJlID0gZnVuY3Rpb24gKGIsIHRvdGFsKSB7XG4gIGlmICh0aGlzLmxheW91dCAhPSBiLmxheW91dCB8fCB0aGlzLmtpbmQgIT0gYi5raW5kKSB7XG4gICAgdmFyIGsxID0gdGhpcy5raW5kIHwgKHRoaXMubGF5b3V0IDw8IDgpO1xuICAgIHZhciBrMiA9ICAgIGIua2luZCB8IChiLmxheW91dCA8PCA4KTtcbiAgICByZXR1cm4gazIgLSBrMTtcbiAgfVxuICBpZiAodGhpcy5kaW1zLmxlbmd0aCAhPSBiLmRpbXMubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGIuZGltcy5sZW5ndGggLSB0aGlzLmRpbXMubGVuZ3RoO1xuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5kaW1zLmxlbmd0aDsgaSsrKVxuICAgIGlmICh0aGlzLmRpbXNbaV0gIT0gYi5kaW1zW2ldKVxuICAgICAgcmV0dXJuICh0aGlzLmRpbXNbaV0gPCBiLmRpbXNbaV0pID8gLTEgOiAxO1xuICBzd2l0Y2ggKHRoaXMua2luZCkge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgY2FzZSAxMDpcbiAgY2FzZSAxMTpcbiAgICAvLyBGbG9hdHNcbiAgICB2YXIgeCwgeTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgeCA9IHRoaXMuZGF0YVtpXTtcbiAgICAgIHkgPSBiLmRhdGFbaV07XG4gICAgICBpZiAoeCA8IHkpXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh4ID4geSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBpZiAoeCAhPSB5KSB7XG4gICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgIGlmICh4ID09IHgpIHJldHVybiAxO1xuICAgICAgICBpZiAoeSA9PSB5KSByZXR1cm4gLTE7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDc6XG4gICAgLy8gSW50NjRcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrPTIpIHtcbiAgICAgIC8vIENoZWNrIGhpZ2hlc3QgYml0cyBmaXJzdFxuICAgICAgaWYgKHRoaXMuZGF0YVtpKzFdIDwgYi5kYXRhW2krMV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaSsxXSA+IGIuZGF0YVtpKzFdKVxuICAgICAgICByZXR1cm4gMTtcbiAgICAgIGlmICgodGhpcy5kYXRhW2ldID4+PiAwKSA8IChiLmRhdGFbaV0gPj4+IDApKVxuICAgICAgICByZXR1cm4gLTE7XG4gICAgICBpZiAoKHRoaXMuZGF0YVtpXSA+Pj4gMCkgPiAoYi5kYXRhW2ldID4+PiAwKSlcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDI6XG4gIGNhc2UgMzpcbiAgY2FzZSA0OlxuICBjYXNlIDU6XG4gIGNhc2UgNjpcbiAgY2FzZSA4OlxuICBjYXNlIDk6XG4gIGNhc2UgMTI6XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPCBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAtMTtcbiAgICAgIGlmICh0aGlzLmRhdGFbaV0gPiBiLmRhdGFbaV0pXG4gICAgICAgIHJldHVybiAxO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogTWxfQmlnYXJyYXlfY18xXzFcbi8vUmVxdWlyZXM6IE1sX0JpZ2FycmF5LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgYnVmZmVyKSB7XG4gIHRoaXMua2luZCAgID0ga2luZCA7XG4gIHRoaXMubGF5b3V0ID0gbGF5b3V0O1xuICB0aGlzLmRpbXMgICA9IGRpbXM7XG4gIHRoaXMuZGF0YSAgID0gYnVmZmVyO1xufVxuXG5NbF9CaWdhcnJheV9jXzFfMS5wcm90b3R5cGUgPSBuZXcgTWxfQmlnYXJyYXkoKVxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLm9mZnNldCA9IGZ1bmN0aW9uIChhcmcpIHtcbiAgaWYodHlwZW9mIGFyZyAhPT0gXCJudW1iZXJcIil7XG4gICAgaWYoKGFyZyBpbnN0YW5jZW9mIEFycmF5KSAmJiBhcmcubGVuZ3RoID09IDEpXG4gICAgICBhcmcgPSBhcmdbMF07XG4gICAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJNbF9CaWdhcnJheV9jXzFfMS5vZmZzZXRcIik7XG4gIH1cbiAgaWYgKGFyZyA8IDAgfHwgYXJnID49IHRoaXMuZGltc1swXSlcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHJldHVybiBhcmc7XG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAob2ZzKSB7XG4gIHJldHVybiB0aGlzLmRhdGFbb2ZzXTtcbn1cblxuTWxfQmlnYXJyYXlfY18xXzEucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChvZnMsdikge1xuICB0aGlzLmRhdGFbb2ZzXSA9IHY7XG4gIHJldHVybiAwXG59XG5cbk1sX0JpZ2FycmF5X2NfMV8xLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gKHYpIHtcbiAgdGhpcy5kYXRhLmZpbGwodik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY29tcGFyZVxuZnVuY3Rpb24gY2FtbF9iYV9jb21wYXJlKGEsYix0b3RhbCl7XG4gIHJldHVybiBhLmNvbXBhcmUoYix0b3RhbClcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG4vL1JlcXVpcmVzOiBNbF9CaWdhcnJheSwgTWxfQmlnYXJyYXlfY18xXzEsIGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSl7XG4gIHZhciBzaXplX3Blcl9lbGVtZW50ID0gY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudChraW5kKTtcbiAgaWYoY2FtbF9iYV9nZXRfc2l6ZShkaW1zKSAqIHNpemVfcGVyX2VsZW1lbnQgIT0gZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJsZW5ndGggZG9lc24ndCBtYXRjaCBkaW1zXCIpO1xuICB9XG4gIGlmKGxheW91dCA9PSAwICYmIC8vIGNfbGF5b3V0XG4gICAgIGRpbXMubGVuZ3RoID09IDEgJiYgLy8gQXJyYXkxXG4gICAgIHNpemVfcGVyX2VsZW1lbnQgPT0gMSkgLy8gMS10by0xIG1hcHBpbmdcbiAgICByZXR1cm4gbmV3IE1sX0JpZ2FycmF5X2NfMV8xKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHJldHVybiBuZXcgTWxfQmlnYXJyYXkoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcblxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY3JlYXRlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemUsIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfYnVmZmVyXG5mdW5jdGlvbiBjYW1sX2JhX2NyZWF0ZShraW5kLCBsYXlvdXQsIGRpbXNfbWwpIHtcbiAgdmFyIGRpbXMgPSBjYW1sX2pzX2Zyb21fYXJyYXkoZGltc19tbCk7XG4gIHZhciBkYXRhID0gY2FtbF9iYV9jcmVhdGVfYnVmZmVyKGtpbmQsIGNhbWxfYmFfZ2V0X3NpemUoZGltcykpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfY2hhbmdlX2xheW91dFxuLy9SZXF1aXJlczogY2FtbF9iYV9jcmVhdGVfdW5zYWZlXG5mdW5jdGlvbiBjYW1sX2JhX2NoYW5nZV9sYXlvdXQoYmEsIGxheW91dCkge1xuICBpZihiYS5sYXlvdXQgPT0gbGF5b3V0KSByZXR1cm4gYmE7XG4gIHZhciBuZXdfZGltcyA9IFtdXG4gIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKSBuZXdfZGltc1tpXSA9IGJhLmRpbXNbYmEuZGltcy5sZW5ndGggLSBpIC0gMV07XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgbGF5b3V0LCBuZXdfZGltcywgYmEuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfa2luZFxuZnVuY3Rpb24gY2FtbF9iYV9raW5kKGJhKSB7XG4gIHJldHVybiBiYS5raW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2xheW91dFxuZnVuY3Rpb24gY2FtbF9iYV9sYXlvdXQoYmEpIHtcbiAgcmV0dXJuIGJhLmxheW91dDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9udW1fZGltc1xuZnVuY3Rpb24gY2FtbF9iYV9udW1fZGltcyhiYSkge1xuICByZXR1cm4gYmEuZGltcy5sZW5ndGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfZGltKGJhLCBpKSB7XG4gIGlmIChpIDwgMCB8fCBpID49IGJhLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmRpbVwiKTtcbiAgcmV0dXJuIGJhLmRpbXNbaV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzFcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8xKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzJcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8yKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGltXzNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZGltXG5mdW5jdGlvbiBjYW1sX2JhX2RpbV8zKGJhKSB7XG4gIHJldHVybiBjYW1sX2JhX2RpbShiYSwgMik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0X2dlbmVyaWNcbi8vUmVxdWlyZXM6IGNhbWxfanNfZnJvbV9hcnJheVxuZnVuY3Rpb24gY2FtbF9iYV9nZXRfZ2VuZXJpYyhiYSwgaSkge1xuICB2YXIgb2ZzID0gYmEub2Zmc2V0KGNhbWxfanNfZnJvbV9hcnJheShpKSk7XG4gIHJldHVybiBiYS5nZXQob2ZzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQxNihiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMgKyAxKTtcbiAgcmV0dXJuIChiMSB8IChiMiA8PCA4KSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfZ2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfZ2V0MzIoYmEsIGkwKSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIHZhciBiMSA9IGJhLmdldChvZnMrMCk7XG4gIHZhciBiMiA9IGJhLmdldChvZnMrMSk7XG4gIHZhciBiMyA9IGJhLmdldChvZnMrMik7XG4gIHZhciBiNCA9IGJhLmdldChvZnMrMyk7XG4gIHJldHVybiAoIChiMSA8PCAwKSAgfFxuICAgICAgICAgICAoYjIgPDwgOCkgIHxcbiAgICAgICAgICAgKGIzIDw8IDE2KSB8XG4gICAgICAgICAgIChiNCA8PCAyNCkgKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9nZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9nZXQ2NChiYSwgaTApIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGIxID0gYmEuZ2V0KG9mcyswKTtcbiAgdmFyIGIyID0gYmEuZ2V0KG9mcysxKTtcbiAgdmFyIGIzID0gYmEuZ2V0KG9mcysyKTtcbiAgdmFyIGI0ID0gYmEuZ2V0KG9mcyszKTtcbiAgdmFyIGI1ID0gYmEuZ2V0KG9mcys0KTtcbiAgdmFyIGI2ID0gYmEuZ2V0KG9mcys1KTtcbiAgdmFyIGI3ID0gYmEuZ2V0KG9mcys2KTtcbiAgdmFyIGI4ID0gYmEuZ2V0KG9mcys3KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW2I4LGI3LGI2LGI1LGI0LGIzLGIyLGIxXSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzEoYmEsIGkwKSB7XG4gIHJldHVybiBiYS5nZXQoYmEub2Zmc2V0KGkwKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzJcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzIoYmEsIGkwLCBpMSkge1xuICByZXR1cm4gYmEuZ2V0KGJhLm9mZnNldChbaTAsaTFdKSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZ2V0XzNcbmZ1bmN0aW9uIGNhbWxfYmFfZ2V0XzMoYmEsIGkwLCBpMSwgaTIpIHtcbiAgcmV0dXJuIGJhLmdldChiYS5vZmZzZXQoW2kwLGkxLGkyXSkpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NldF9nZW5lcmljXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXlcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0X2dlbmVyaWMoYmEsIGksIHYpIHtcbiAgYmEuc2V0KGJhLm9mZnNldChjYW1sX2pzX2Zyb21fYXJyYXkoaSkpLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQxNlxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQxNihiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDEgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgYmEuc2V0KG9mcyswLCAgdiAgICAgICAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysxLCAodiA+Pj4gOCkgJiAweGZmKTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdWludDhfc2V0MzJcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYmFfdWludDhfc2V0MzIoYmEsIGkwLCB2KSB7XG4gIHZhciBvZnMgPSBiYS5vZmZzZXQoaTApO1xuICBpZihvZnMgKyAzID49IGJhLmRhdGEubGVuZ3RoKSBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIGJhLnNldChvZnMrMCwgIHYgICAgICAgICAmIDB4ZmYpO1xuICBiYS5zZXQob2ZzKzEsICh2ID4+PiA4KSAgJiAweGZmKTtcbiAgYmEuc2V0KG9mcysyLCAodiA+Pj4gMTYpICYgMHhmZik7XG4gIGJhLnNldChvZnMrMywgKHYgPj4+IDI0KSAmIDB4ZmYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV91aW50OF9zZXQ2NFxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvciwgY2FtbF9pbnQ2NF90b19ieXRlc1xuZnVuY3Rpb24gY2FtbF9iYV91aW50OF9zZXQ2NChiYSwgaTAsIHYpIHtcbiAgdmFyIG9mcyA9IGJhLm9mZnNldChpMCk7XG4gIGlmKG9mcyArIDcgPj0gYmEuZGF0YS5sZW5ndGgpIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIHYgPSBjYW1sX2ludDY0X3RvX2J5dGVzKHYpO1xuICBmb3IodmFyIGkgPSAwOyBpIDwgODsgaSsrKSBiYS5zZXQob2ZzK2ksIHZbNy1pXSlcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfc2V0XzFcbmZ1bmN0aW9uIGNhbWxfYmFfc2V0XzEoYmEsIGkwLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoaTApLCB2KTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfMlxuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMihiYSwgaTAsIGkxLCB2KSB7XG4gIGJhLnNldChiYS5vZmZzZXQoW2kwLGkxXSksIHYpO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXRfM1xuZnVuY3Rpb24gY2FtbF9iYV9zZXRfMyhiYSwgaTAsIGkxLCBpMiwgdikge1xuICBiYS5zZXQoYmEub2Zmc2V0KFtpMCxpMSxpMl0pLCB2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZmlsbFxuZnVuY3Rpb24gY2FtbF9iYV9maWxsKGJhLCB2KSB7XG4gIGJhLmZpbGwodik7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9iYV9ibGl0KHNyYywgZHN0KSB7XG4gIGlmIChkc3QuZGltcy5sZW5ndGggIT0gc3JjLmRpbXMubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LmJsaXQ6IGRpbWVuc2lvbiBtaXNtYXRjaFwiKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkc3QuZGltcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoZHN0LmRpbXNbaV0gIT0gc3JjLmRpbXNbaV0pXG4gICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5ibGl0OiBkaW1lbnNpb24gbWlzbWF0Y2hcIik7XG4gIGRzdC5kYXRhLnNldChzcmMuZGF0YSk7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3N1YlxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfYmFfZ2V0X3NpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnRcbmZ1bmN0aW9uIGNhbWxfYmFfc3ViKGJhLCBvZnMsIGxlbikge1xuICB2YXIgY2hhbmdlZF9kaW07XG4gIHZhciBtdWwgPSAxO1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gMDtcbiAgfSBlbHNlIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IChiYS5kaW1zLmxlbmd0aCAtIDEpOyBpKyspXG4gICAgICBtdWwgPSBtdWwgKiBiYS5kaW1zW2ldO1xuICAgIGNoYW5nZWRfZGltID0gYmEuZGltcy5sZW5ndGggLSAxO1xuICAgIG9mcyA9IG9mcyAtIDE7XG4gIH1cbiAgaWYgKG9mcyA8IDAgfHwgbGVuIDwgMCB8fCAob2ZzICsgbGVuKSA+IGJhLmRpbXNbY2hhbmdlZF9kaW1dKXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5zdWI6IGJhZCBzdWItYXJyYXlcIik7XG4gIH1cbiAgdmFyIG5ld19kaW1zID0gW107XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKylcbiAgICBuZXdfZGltc1tpXSA9IGJhLmRpbXNbaV07XG4gIG5ld19kaW1zW2NoYW5nZWRfZGltXSA9IGxlbjtcbiAgbXVsICo9IGNhbWxfYmFfZ2V0X3NpemVfcGVyX2VsZW1lbnQoYmEua2luZCk7XG4gIHZhciBuZXdfZGF0YSA9IGJhLmRhdGEuc3ViYXJyYXkob2ZzICogbXVsLCAob2ZzICsgbGVuKSAqIG11bCk7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltcywgbmV3X2RhdGEpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX3NsaWNlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2JhX2dldF9zaXplXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50XG5mdW5jdGlvbiBjYW1sX2JhX3NsaWNlKGJhLCB2aW5kKSB7XG4gIHZpbmQgPSBjYW1sX2pzX2Zyb21fYXJyYXkodmluZCk7XG4gIHZhciBudW1faW5kcyA9IHZpbmQubGVuZ3RoO1xuICB2YXIgaW5kZXggPSBbXTtcbiAgdmFyIHN1Yl9kaW1zID0gW107XG4gIHZhciBvZnM7XG5cbiAgaWYgKG51bV9pbmRzID4gYmEuZGltcy5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkuc2xpY2U6IHRvbyBtYW55IGluZGljZXNcIik7XG5cbiAgLy8gQ29tcHV0ZSBvZmZzZXQgYW5kIGNoZWNrIGJvdW5kc1xuICBpZiAoYmEubGF5b3V0ID09IDApIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9pbmRzOyBpKyspXG4gICAgICBpbmRleFtpXSA9IHZpbmRbaV07XG4gICAgZm9yICg7IGkgPCBiYS5kaW1zLmxlbmd0aDsgaSsrKVxuICAgICAgaW5kZXhbaV0gPSAwO1xuICAgIHN1Yl9kaW1zID0gYmEuZGltcy5zbGljZShudW1faW5kcyk7XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1faW5kczsgaSsrKVxuICAgICAgaW5kZXhbYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyArIGldID0gdmluZFtpXTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoIC0gbnVtX2luZHM7IGkrKylcbiAgICAgIGluZGV4W2ldID0gMTtcbiAgICBzdWJfZGltcyA9IGJhLmRpbXMuc2xpY2UoMCwgYmEuZGltcy5sZW5ndGggLSBudW1faW5kcyk7XG4gIH1cbiAgb2ZzID0gYmEub2Zmc2V0KGluZGV4KTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKHN1Yl9kaW1zKTtcbiAgdmFyIHNpemVfcGVyX2VsZW1lbnQgPSBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGJhLmtpbmQpO1xuICB2YXIgbmV3X2RhdGEgPSBiYS5kYXRhLnN1YmFycmF5KG9mcyAqIHNpemVfcGVyX2VsZW1lbnQsIChvZnMgKyBzaXplKSAqIHNpemVfcGVyX2VsZW1lbnQpO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGJhLmtpbmQsIGJhLmxheW91dCwgc3ViX2RpbXMsIG5ld19kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9yZXNoYXBlXG4vL1JlcXVpcmVzOiBjYW1sX2pzX2Zyb21fYXJyYXksIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9jcmVhdGVfdW5zYWZlLCBjYW1sX2JhX2dldF9zaXplXG5mdW5jdGlvbiBjYW1sX2JhX3Jlc2hhcGUoYmEsIHZpbmQpIHtcbiAgdmluZCA9IGNhbWxfanNfZnJvbV9hcnJheSh2aW5kKTtcbiAgdmFyIG5ld19kaW0gPSBbXTtcbiAgdmFyIG51bV9kaW1zID0gdmluZC5sZW5ndGg7XG5cbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KXtcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJCaWdhcnJheS5yZXNoYXBlOiBiYWQgbnVtYmVyIG9mIGRpbWVuc2lvbnNcIik7XG4gIH1cbiAgdmFyIG51bV9lbHRzID0gMTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBudW1fZGltczsgaSsrKSB7XG4gICAgbmV3X2RpbVtpXSA9IHZpbmRbaV07XG4gICAgaWYgKG5ld19kaW1baV0gPCAwKVxuICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiQmlnYXJyYXkucmVzaGFwZTogbmVnYXRpdmUgZGltZW5zaW9uXCIpO1xuICAgIG51bV9lbHRzID0gbnVtX2VsdHMgKiBuZXdfZGltW2ldO1xuICB9XG5cbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGJhLmRpbXMpO1xuICAvLyBDaGVjayB0aGF0IHNpemVzIGFncmVlXG4gIGlmIChudW1fZWx0cyAhPSBzaXplKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIkJpZ2FycmF5LnJlc2hhcGU6IHNpemUgbWlzbWF0Y2hcIik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoYmEua2luZCwgYmEubGF5b3V0LCBuZXdfZGltLCBiYS5kYXRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iYV9zZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9pbnQ2NF90b19ieXRlc1xuLy9SZXF1aXJlczogY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0XG5mdW5jdGlvbiBjYW1sX2JhX3NlcmlhbGl6ZSh3cml0ZXIsIGJhLCBzeikge1xuICB3cml0ZXIud3JpdGUoMzIsIGJhLmRpbXMubGVuZ3RoKTtcbiAgd3JpdGVyLndyaXRlKDMyLCAoYmEua2luZCB8IChiYS5sYXlvdXQgPDwgOCkpKTtcbiAgaWYoYmEuY2FtbF9jdXN0b20gPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGltcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYoYmEuZGltc1tpXSA8IDB4ZmZmZilcbiAgICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kaW1zW2ldKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB3cml0ZXIud3JpdGUoMTYsIDB4ZmZmZik7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgMCk7XG4gICAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGltc1tpXSk7XG4gICAgICB9XG4gICAgfVxuICBlbHNlXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRpbXMubGVuZ3RoOyBpKyspIHdyaXRlci53cml0ZSgzMixiYS5kaW1zW2ldKVxuICBzd2l0Y2goYmEua2luZCl7XG4gIGNhc2UgMjogIC8vSW50OEFycmF5XG4gIGNhc2UgMzogIC8vVWludDhBcnJheVxuICBjYXNlIDEyOiAvL1VpbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoOCwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDQ6ICAvLyBJbnQxNkFycmF5XG4gIGNhc2UgNTogIC8vIFVpbnQxNkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoOyBpKyspe1xuICAgICAgd3JpdGVyLndyaXRlKDE2LCBiYS5kYXRhW2ldKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aDsgaSsrKXtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgYmEuZGF0YVtpXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICB3cml0ZXIud3JpdGUoOCwwKTtcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB3cml0ZXIud3JpdGUoMzIsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IGJhLmRhdGEubGVuZ3RoIC8gMjsgaSsrKXtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhiYS5nZXQoaSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGJhLmdldChpKSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgYmEuZGF0YS5sZW5ndGg7IGkrKyl7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50MzJfYml0c19vZl9mbG9hdChiYS5nZXQoaSkpO1xuICAgICAgd3JpdGVyLndyaXRlKDMyLCBiKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTA6IC8vIEZsb2F0MzJBcnJheSAoY29tcGxleDMyKVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgaiA9IGJhLmdldChpKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMV0pKTtcbiAgICAgIHdyaXRlci53cml0ZSgzMiwgY2FtbF9pbnQzMl9iaXRzX29mX2Zsb2F0KGpbMl0pKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgMTE6IC8vIEZsb2F0NjRBcnJheSAoY29tcGxleDY0KVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBiYS5kYXRhLmxlbmd0aCAvIDI7IGkrKyl7XG4gICAgICB2YXIgY29tcGxleCA9IGJhLmdldChpKTtcbiAgICAgIHZhciBiID0gY2FtbF9pbnQ2NF90b19ieXRlcyhjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQoY29tcGxleFsxXSkpO1xuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCA4OyBqKyspIHdyaXRlci53cml0ZSAoOCwgYltqXSk7XG4gICAgICB2YXIgYiA9IGNhbWxfaW50NjRfdG9fYnl0ZXMoY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0KGNvbXBsZXhbMl0pKTtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgODsgaisrKSB3cml0ZXIud3JpdGUgKDgsIGJbal0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgfVxuICBzelswXSA9ICg0ICsgYmEuZGltcy5sZW5ndGgpICogNDtcbiAgc3pbMV0gPSAoNCArIGJhLmRpbXMubGVuZ3RoKSAqIDg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfZGVzZXJpYWxpemVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSwgY2FtbF9mYWlsd2l0aFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9ieXRlcywgY2FtbF9pbnQ2NF9mbG9hdF9vZl9iaXRzXG4vL1JlcXVpcmVzOiBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX2J1ZmZlclxuZnVuY3Rpb24gY2FtbF9iYV9kZXNlcmlhbGl6ZShyZWFkZXIsIHN6LCBuYW1lKXtcbiAgdmFyIG51bV9kaW1zID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgaWYgKG51bV9kaW1zIDwgMCB8fCBudW1fZGltcyA+IDE2KVxuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogd3JvbmcgbnVtYmVyIG9mIGJpZ2FycmF5IGRpbWVuc2lvbnNcIik7XG4gIHZhciB0YWcgPSByZWFkZXIucmVhZDMycygpO1xuICB2YXIga2luZCA9IHRhZyAmIDB4ZmZcbiAgdmFyIGxheW91dCA9ICh0YWcgPj4gOCkgJiAxO1xuICB2YXIgZGltcyA9IFtdXG4gIGlmKG5hbWUgPT0gXCJfYmlnYXJyMDJcIilcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIHtcbiAgICAgIHZhciBzaXplX2RpbSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgICBpZihzaXplX2RpbSA9PSAweGZmZmYpe1xuICAgICAgICB2YXIgc2l6ZV9kaW1faGkgPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICB2YXIgc2l6ZV9kaW1fbG8gPSByZWFkZXIucmVhZDMydSgpO1xuICAgICAgICBpZihzaXplX2RpbV9oaSAhPSAwKVxuICAgICAgICAgIGNhbWxfZmFpbHdpdGgoXCJpbnB1dF92YWx1ZTogYmlnYXJyYXkgZGltZW5zaW9uIG92ZXJmbG93IGluIDMyYml0XCIpO1xuICAgICAgICBzaXplX2RpbSA9IHNpemVfZGltX2xvO1xuICAgICAgfVxuICAgICAgZGltcy5wdXNoKHNpemVfZGltKTtcbiAgICB9XG4gIGVsc2VcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9kaW1zOyBpKyspIGRpbXMucHVzaChyZWFkZXIucmVhZDMydSgpKTtcbiAgdmFyIHNpemUgPSBjYW1sX2JhX2dldF9zaXplKGRpbXMpO1xuICB2YXIgZGF0YSA9IGNhbWxfYmFfY3JlYXRlX2J1ZmZlcihraW5kLCBzaXplKTtcbiAgdmFyIGJhID0gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIGxheW91dCwgZGltcywgZGF0YSk7XG4gIHN3aXRjaChraW5kKXtcbiAgY2FzZSAyOiAgLy9JbnQ4QXJyYXlcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDhzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZzKCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGZvcih2YXIgaSA9IDA7IGkgPCBzaXplOyBpKyspe1xuICAgICAgZGF0YVtpXSA9IHJlYWRlci5yZWFkMTZ1KCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDY6ICAvLyBJbnQzMkFycmF5IChpbnQzMilcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGRhdGFbaV0gPSByZWFkZXIucmVhZDMycygpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA4OiAgLy8gSW50MzJBcnJheSAoaW50KVxuICBjYXNlIDk6ICAvLyBJbnQzMkFycmF5IChuYXRpdmVpbnQpXG4gICAgdmFyIHNpeHR5ID0gcmVhZGVyLnJlYWQ4dSgpO1xuICAgIGlmKHNpeHR5KSBjYW1sX2ZhaWx3aXRoKFwiaW5wdXRfdmFsdWU6IGNhbm5vdCByZWFkIGJpZ2FycmF5IHdpdGggNjQtYml0IE9DYW1sIGludHNcIik7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBkYXRhW2ldID0gcmVhZGVyLnJlYWQzMnMoKTtcbiAgICB9XG4gICAgYnJlYWs7XG4gIGNhc2UgNzogLy8gKGludDY0KVxuICAgIHZhciB0ID0gbmV3IEFycmF5KDgpOztcbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgc2l6ZTsgaSsrKXtcbiAgICAgIGZvciAodmFyIGogPSAwO2ogPCA4O2orKykgdFtqXSA9IHJlYWRlci5yZWFkOHUoKTtcbiAgICAgIHZhciBpbnQ2NCA9IGNhbWxfaW50NjRfb2ZfYnl0ZXModCk7XG4gICAgICBiYS5zZXQoaSxpbnQ2NCk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDE6ICAvLyBGbG9hdDY0QXJyYXlcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50NjRfZmxvYXRfb2ZfYml0cyhjYW1sX2ludDY0X29mX2J5dGVzKHQpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAwOiAgLy8gRmxvYXQzMkFycmF5XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgZiA9IGNhbWxfaW50MzJfZmxvYXRfb2ZfYml0cyhyZWFkZXIucmVhZDMycygpKTtcbiAgICAgIGJhLnNldChpLGYpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHMocmVhZGVyLnJlYWQzMnMoKSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICB2YXIgdCA9IG5ldyBBcnJheSg4KTs7XG4gICAgZm9yKHZhciBpID0gMDsgaSA8IHNpemU7IGkrKyl7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgcmUgPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBmb3IgKHZhciBqID0gMDtqIDwgODtqKyspIHRbal0gPSByZWFkZXIucmVhZDh1KCk7XG4gICAgICB2YXIgaW0gPSBjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHMoY2FtbF9pbnQ2NF9vZl9ieXRlcyh0KSk7XG4gICAgICBiYS5zZXQoaSxbMjU0LHJlLGltXSk7XG4gICAgfVxuICAgIGJyZWFrXG4gIH1cbiAgc3pbMF0gPSAoNCArIG51bV9kaW1zKSAqIDQ7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhKTtcbn1cblxuLy9EZXByZWNhdGVkXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2NyZWF0ZV9mcm9tXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUsIGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9iYV9nZXRfc2l6ZV9wZXJfZWxlbWVudFxuZnVuY3Rpb24gY2FtbF9iYV9jcmVhdGVfZnJvbShkYXRhMSwgZGF0YTIsIGpzdHlwLCBraW5kLCBsYXlvdXQsIGRpbXMpe1xuICBpZihkYXRhMiB8fCBjYW1sX2JhX2dldF9zaXplX3Blcl9lbGVtZW50KGtpbmQpID09IDIpe1xuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmFfY3JlYXRlX2Zyb206IHVzZSByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlXCIpO1xuICB9XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoa2luZCwgbGF5b3V0LCBkaW1zLCBkYXRhMSk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfaGFzaCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfc2l6ZSwgY2FtbF9oYXNoX21peF9pbnQsIGNhbWxfaGFzaF9taXhfZmxvYXRcbmZ1bmN0aW9uIGNhbWxfYmFfaGFzaChiYSl7XG4gIHZhciBudW1fZWx0cyA9IGNhbWxfYmFfZ2V0X3NpemUoYmEuZGltcyk7XG4gIHZhciBoID0gMDtcbiAgc3dpdGNoKGJhLmtpbmQpe1xuICBjYXNlIDI6ICAvL0ludDhBcnJheVxuICBjYXNlIDM6ICAvL1VpbnQ4QXJyYXlcbiAgY2FzZSAxMjogLy9VaW50OEFycmF5XG4gICAgaWYobnVtX2VsdHMgPiAyNTYpIG51bV9lbHRzID0gMjU2O1xuICAgIHZhciB3ID0gMCwgaSA9MDtcbiAgICBmb3IoaSA9IDA7IGkgKyA0IDw9IGJhLmRhdGEubGVuZ3RoOyBpKz00KXtcbiAgICAgIHcgPSBiYS5kYXRhW2krMF0gfCAoYmEuZGF0YVtpKzFdIDw8IDgpIHwgKGJhLmRhdGFbaSsyXSA8PCAxNikgfCAoYmEuZGF0YVtpKzNdIDw8IDI0KTtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLHcpO1xuICAgIH1cbiAgICB3ID0gMDtcbiAgICBzd2l0Y2ggKG51bV9lbHRzICYgMykge1xuICAgIGNhc2UgMzogdyAgPSBiYS5kYXRhW2krMl0gPDwgMTY7ICAgIC8qIGZhbGx0aHJvdWdoICovXG4gICAgY2FzZSAyOiB3IHw9IGJhLmRhdGFbaSsxXSA8PCA4OyAgICAgLyogZmFsbHRocm91Z2ggKi9cbiAgICBjYXNlIDE6IHcgfD0gYmEuZGF0YVtpKzBdO1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSA0OiAgLy8gSW50MTZBcnJheVxuICBjYXNlIDU6ICAvLyBVaW50MTZBcnJheVxuICAgIGlmKG51bV9lbHRzID4gMTI4KSBudW1fZWx0cyA9IDEyODtcbiAgICB2YXIgdyA9IDAsIGkgPTA7XG4gICAgZm9yKGkgPSAwOyBpICsgMiA8PSBiYS5kYXRhLmxlbmd0aDsgaSs9Mil7XG4gICAgICB3ID0gYmEuZGF0YVtpKzBdIHwgKGJhLmRhdGFbaSsxXSA8PCAxNik7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCx3KTtcbiAgICB9XG4gICAgaWYgKChudW1fZWx0cyAmIDEpICE9IDApXG4gICAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIGNhc2UgNjogIC8vIEludDMyQXJyYXkgKGludDMyKVxuICAgIGlmIChudW1fZWx0cyA+IDY0KSBudW1fZWx0cyA9IDY0O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDg6ICAvLyBJbnQzMkFycmF5IChpbnQpXG4gIGNhc2UgOTogIC8vIEludDMyQXJyYXkgKG5hdGl2ZWludClcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCBiYS5kYXRhW2ldKTtcbiAgICBicmVhaztcbiAgY2FzZSA3OiAgLy8gSW50MzJBcnJheSAoaW50NjQpXG4gICAgaWYgKG51bV9lbHRzID4gMzIpIG51bV9lbHRzID0gMzI7XG4gICAgbnVtX2VsdHMgKj0gMlxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykge1xuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGJhLmRhdGFbaV0pO1xuICAgIH1cbiAgICBicmVhaztcbiAgY2FzZSAxMDogLy8gRmxvYXQzMkFycmF5IChjb21wbGV4MzIpXG4gICAgbnVtX2VsdHMgKj0yOyAvKiBmYWxsdGhyb3VnaCAqL1xuICBjYXNlIDA6ICAvLyBGbG9hdDMyQXJyYXlcbiAgICBpZiAobnVtX2VsdHMgPiA2NCkgbnVtX2VsdHMgPSA2NDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG51bV9lbHRzOyBpKyspIGggPSBjYW1sX2hhc2hfbWl4X2Zsb2F0KGgsIGJhLmRhdGFbaV0pO1xuICAgIGJyZWFrO1xuICBjYXNlIDExOiAvLyBGbG9hdDY0QXJyYXkgKGNvbXBsZXg2NClcbiAgICBudW1fZWx0cyAqPTI7IC8qIGZhbGx0aHJvdWdoICovXG4gIGNhc2UgMTogIC8vIEZsb2F0NjRBcnJheVxuICAgIGlmIChudW1fZWx0cyA+IDMyKSBudW1fZWx0cyA9IDMyO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtX2VsdHM7IGkrKykgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCwgYmEuZGF0YVtpXSk7XG4gICAgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIGg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmFfdG9fdHlwZWRfYXJyYXkgbXV0YWJsZVxuZnVuY3Rpb24gY2FtbF9iYV90b190eXBlZF9hcnJheShiYSl7XG4gIHJldHVybiBiYS5kYXRhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG5mdW5jdGlvbiBjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXkodGEpe1xuICB2YXIga2luZDtcbiAgaWYgICAgICAodGEgaW5zdGFuY2VvZiBGbG9hdDMyQXJyYXkpIGtpbmQgPSAwO1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEZsb2F0NjRBcnJheSkga2luZCA9IDE7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50OEFycmF5KSBraW5kID0gMjtcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OEFycmF5KSBraW5kID0gMztcbiAgZWxzZSBpZiAodGEgaW5zdGFuY2VvZiBVaW50OENsYW1wZWRBcnJheSkga2luZCA9IDM7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgSW50MTZBcnJheSkga2luZCA9IDQ7XG4gIGVsc2UgaWYgKHRhIGluc3RhbmNlb2YgVWludDE2QXJyYXkpIGtpbmQgPSA1O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIEludDMyQXJyYXkpIGtpbmQgPSA2O1xuICBlbHNlIGlmICh0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5KSBraW5kID0gNjtcbiAgZWxzZSBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjYW1sX2JhX2tpbmRfb2ZfdHlwZWRfYXJyYXk6IHVuc3VwcG9ydGVkIGtpbmRcIik7XG4gIHJldHVybiBraW5kO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXkgbXV0YWJsZVxuLy9SZXF1aXJlczogY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGNhbWxfYmFfZnJvbV90eXBlZF9hcnJheSh0YSl7XG4gIHZhciBraW5kID0gY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5KHRhKTtcbiAgdmFyIHRhID1cbiAgICAgIC8qIE5lZWRlZCB0byBhdm9pZCB1bnNpZ25lZCBzZXR0ZXJzIG92ZXJmbG93aW5nXG4gICAgICAgICB0aGUgcmFuZ2Ugb2YgT0NhbWwgW2ludDMyXSB2YWx1ZXMuICovXG4gICAgICB0YSBpbnN0YW5jZW9mIFVpbnQzMkFycmF5ID9cbiAgICAgIG5ldyBJbnQzMkFycmF5KHRhLmJ1ZmZlciAsdGEuYnl0ZU9mZnNldCwgdGEubGVuZ3RoKSA6IHRhO1xuICByZXR1cm4gY2FtbF9iYV9jcmVhdGVfdW5zYWZlKGtpbmQsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogcGFyc2luZy5jIDg5ODMgMjAwOC0wOC0wNiAwOTozODoyNVogeGxlcm95ICQgKi9cblxuLyogVGhlIFBEQSBhdXRvbWF0b24gZm9yIHBhcnNlcnMgZ2VuZXJhdGVkIGJ5IGNhbWx5YWNjICovXG5cbi8qIFRoZSBwdXNoZG93biBhdXRvbWF0YSAqL1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3BhcnNlcl90cmFjZVxudmFyIGNhbWxfcGFyc2VyX3RyYWNlID0gMDtcblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfbGV4X2FycmF5LCBjYW1sX3BhcnNlcl90cmFjZSxjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9vdXRwdXQsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfb2ZfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgTWxCeXRlc1xuZnVuY3Rpb24gY2FtbF9wYXJzZV9lbmdpbmUodGFibGVzLCBlbnYsIGNtZCwgYXJnKVxue1xuICB2YXIgRVJSQ09ERSA9IDI1NjtcblxuICAvL3ZhciBTVEFSVCA9IDA7XG4gIC8vdmFyIFRPS0VOX1JFQUQgPSAxO1xuICAvL3ZhciBTVEFDS1NfR1JPV05fMSA9IDI7XG4gIC8vdmFyIFNUQUNLU19HUk9XTl8yID0gMztcbiAgLy92YXIgU0VNQU5USUNfQUNUSU9OX0NPTVBVVEVEID0gNDtcbiAgLy92YXIgRVJST1JfREVURUNURUQgPSA1O1xuICB2YXIgbG9vcCA9IDY7XG4gIHZhciB0ZXN0c2hpZnQgPSA3O1xuICB2YXIgc2hpZnQgPSA4O1xuICB2YXIgc2hpZnRfcmVjb3ZlciA9IDk7XG4gIHZhciByZWR1Y2UgPSAxMDtcblxuICB2YXIgUkVBRF9UT0tFTiA9IDA7XG4gIHZhciBSQUlTRV9QQVJTRV9FUlJPUiA9IDE7XG4gIHZhciBHUk9XX1NUQUNLU18xID0gMjtcbiAgdmFyIEdST1dfU1RBQ0tTXzIgPSAzO1xuICB2YXIgQ09NUFVURV9TRU1BTlRJQ19BQ1RJT04gPSA0O1xuICB2YXIgQ0FMTF9FUlJPUl9GVU5DVElPTiA9IDU7XG5cbiAgdmFyIGVudl9zX3N0YWNrID0gMTtcbiAgdmFyIGVudl92X3N0YWNrID0gMjtcbiAgdmFyIGVudl9zeW1iX3N0YXJ0X3N0YWNrID0gMztcbiAgdmFyIGVudl9zeW1iX2VuZF9zdGFjayA9IDQ7XG4gIHZhciBlbnZfc3RhY2tzaXplID0gNTtcbiAgdmFyIGVudl9zdGFja2Jhc2UgPSA2O1xuICB2YXIgZW52X2N1cnJfY2hhciA9IDc7XG4gIHZhciBlbnZfbHZhbCA9IDg7XG4gIHZhciBlbnZfc3ltYl9zdGFydCA9IDk7XG4gIHZhciBlbnZfc3ltYl9lbmQgPSAxMDtcbiAgdmFyIGVudl9hc3AgPSAxMTtcbiAgdmFyIGVudl9ydWxlX2xlbiA9IDEyO1xuICB2YXIgZW52X3J1bGVfbnVtYmVyID0gMTM7XG4gIHZhciBlbnZfc3AgPSAxNDtcbiAgdmFyIGVudl9zdGF0ZSA9IDE1O1xuICB2YXIgZW52X2VycmZsYWcgPSAxNjtcblxuICAvLyB2YXIgX3RibF9hY3Rpb25zID0gMTtcbiAgdmFyIHRibF90cmFuc2xfY29uc3QgPSAyO1xuICB2YXIgdGJsX3RyYW5zbF9ibG9jayA9IDM7XG4gIHZhciB0YmxfbGhzID0gNDtcbiAgdmFyIHRibF9sZW4gPSA1O1xuICB2YXIgdGJsX2RlZnJlZCA9IDY7XG4gIHZhciB0YmxfZGdvdG8gPSA3O1xuICB2YXIgdGJsX3NpbmRleCA9IDg7XG4gIHZhciB0YmxfcmluZGV4ID0gOTtcbiAgdmFyIHRibF9naW5kZXggPSAxMDtcbiAgdmFyIHRibF90YWJsZXNpemUgPSAxMTtcbiAgdmFyIHRibF90YWJsZSA9IDEyO1xuICB2YXIgdGJsX2NoZWNrID0gMTM7XG4gIC8vIHZhciBfdGJsX2Vycm9yX2Z1bmN0aW9uID0gMTQ7XG4gIHZhciB0YmxfbmFtZXNfY29uc3QgPSAxNTtcbiAgdmFyIHRibF9uYW1lc19ibG9jayA9IDE2O1xuXG5cbiAgZnVuY3Rpb24gbG9nKHgpIHtcbiAgICB2YXIgcyA9IGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoeCArIFwiXFxuXCIpO1xuICAgIGNhbWxfbWxfb3V0cHV0KDIsIHMsIDAsIGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0b2tlbl9uYW1lKG5hbWVzLCBudW1iZXIpXG4gIHtcbiAgICB2YXIgc3RyID0gY2FtbF9qc3N0cmluZ19vZl9zdHJpbmcobmFtZXMpO1xuICAgIGlmIChzdHJbMF0gPT0gJ1xceDAwJylcbiAgICAgIHJldHVybiBcIjx1bmtub3duIHRva2VuPlwiO1xuICAgIHJldHVybiBzdHIuc3BsaXQoJ1xceDAwJylbbnVtYmVyXTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHByaW50X3Rva2VuKHN0YXRlLCB0b2spXG4gIHtcbiAgICB2YXIgdG9rZW4sIGtpbmQ7XG4gICAgaWYgKHRvayBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19ibG9ja10sIHRva1swXSk7XG4gICAgICBpZiAodHlwZW9mIHRva1sxXSA9PSBcIm51bWJlclwiKVxuICAgICAgICBraW5kID0gXCJcIiArIHRva1sxXTtcbiAgICAgIGVsc2UgaWYgKHR5cGVvZiB0b2tbMV0gPT0gXCJzdHJpbmdcIilcbiAgICAgICAga2luZCA9IHRva1sxXVxuICAgICAgZWxzZSBpZiAodG9rWzFdIGluc3RhbmNlb2YgTWxCeXRlcylcbiAgICAgICAga2luZCA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcodG9rWzFdKVxuICAgICAgZWxzZVxuICAgICAgICBraW5kID0gXCJfXCJcbiAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVhZCB0b2tlbiBcIiArIHRva2VuICsgXCIoXCIgKyBraW5kICsgXCIpXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0b2tlbiA9IHRva2VuX25hbWUodGFibGVzW3RibF9uYW1lc19jb25zdF0sIHRvayk7XG4gICAgICBsb2coXCJTdGF0ZSBcIiArIHN0YXRlICsgXCI6IHJlYWQgdG9rZW4gXCIgKyB0b2tlbik7XG4gICAgfVxuICB9XG5cbiAgaWYgKCF0YWJsZXMuZGdvdG8pIHtcbiAgICB0YWJsZXMuZGVmcmVkID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGVmcmVkXSk7XG4gICAgdGFibGVzLnNpbmRleCA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX3NpbmRleF0pO1xuICAgIHRhYmxlcy5jaGVjayAgPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9jaGVja10pO1xuICAgIHRhYmxlcy5yaW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9yaW5kZXhdKTtcbiAgICB0YWJsZXMudGFibGUgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfdGFibGVdKTtcbiAgICB0YWJsZXMubGVuICAgID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfbGVuXSk7XG4gICAgdGFibGVzLmxocyAgICA9IGNhbWxfbGV4X2FycmF5ICh0YWJsZXNbdGJsX2xoc10pO1xuICAgIHRhYmxlcy5naW5kZXggPSBjYW1sX2xleF9hcnJheSAodGFibGVzW3RibF9naW5kZXhdKTtcbiAgICB0YWJsZXMuZGdvdG8gID0gY2FtbF9sZXhfYXJyYXkgKHRhYmxlc1t0YmxfZGdvdG9dKTtcbiAgfVxuXG4gIHZhciByZXMgPSAwLCBuLCBuMSwgbjIsIHN0YXRlMTtcblxuICAvLyBSRVNUT1JFXG4gIHZhciBzcCA9IGVudltlbnZfc3BdO1xuICB2YXIgc3RhdGUgPSBlbnZbZW52X3N0YXRlXTtcbiAgdmFyIGVycmZsYWcgPSBlbnZbZW52X2VycmZsYWddO1xuXG4gIGV4aXQ6Zm9yICg7Oykge1xuICAgIG5leHQ6c3dpdGNoKGNtZCkge1xuICAgIGNhc2UgMDovL1NUQVJUOlxuICAgICAgc3RhdGUgPSAwO1xuICAgICAgZXJyZmxhZyA9IDA7XG4gICAgICAvLyBGYWxsIHRocm91Z2hcblxuICAgIGNhc2UgNjovL2xvb3A6XG4gICAgICBuID0gdGFibGVzLmRlZnJlZFtzdGF0ZV07XG4gICAgICBpZiAobiAhPSAwKSB7IGNtZCA9IHJlZHVjZTsgYnJlYWs7IH1cbiAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPj0gMCkgeyBjbWQgPSB0ZXN0c2hpZnQ7IGJyZWFrOyB9XG4gICAgICByZXMgPSBSRUFEX1RPS0VOO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBsZXhlciBhbmQgdXBkYXRlcyAqL1xuICAgICAgLyogc3ltYl9zdGFydCBhbmQgc3ltYl9lbmQgKi9cbiAgICBjYXNlIDE6Ly9UT0tFTl9SRUFEOlxuICAgICAgaWYgKGFyZyBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2Jsb2NrXVthcmdbMF0gKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IGFyZ1sxXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IHRhYmxlc1t0YmxfdHJhbnNsX2NvbnN0XVthcmcgKyAxXTtcbiAgICAgICAgZW52W2Vudl9sdmFsXSA9IDA7XG4gICAgICB9XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpIHByaW50X3Rva2VuIChzdGF0ZSwgYXJnKTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuXG4gICAgY2FzZSA3Oi8vdGVzdHNoaWZ0OlxuICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlXTtcbiAgICAgIG4yID0gbjEgKyBlbnZbZW52X2N1cnJfY2hhcl07XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gZW52W2Vudl9jdXJyX2NoYXJdKSB7XG4gICAgICAgIGNtZCA9IHNoaWZ0OyBicmVhaztcbiAgICAgIH1cbiAgICAgIG4xID0gdGFibGVzLnJpbmRleFtzdGF0ZV07XG4gICAgICBuMiA9IG4xICsgZW52W2Vudl9jdXJyX2NoYXJdO1xuICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICB0YWJsZXMuY2hlY2tbbjJdID09IGVudltlbnZfY3Vycl9jaGFyXSkge1xuICAgICAgICBuID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgICAgY21kID0gcmVkdWNlOyBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChlcnJmbGFnIDw9IDApIHtcbiAgICAgICAgcmVzID0gQ0FMTF9FUlJPUl9GVU5DVElPTjtcbiAgICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgICAgLyogVGhlIE1MIGNvZGUgY2FsbHMgdGhlIGVycm9yIGZ1bmN0aW9uICovXG4gICAgY2FzZSA1Oi8vRVJST1JfREVURUNURUQ6XG4gICAgICBpZiAoZXJyZmxhZyA8IDMpIHtcbiAgICAgICAgZXJyZmxhZyA9IDM7XG4gICAgICAgIGZvciAoOzspIHtcbiAgICAgICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV07XG4gICAgICAgICAgbjEgPSB0YWJsZXMuc2luZGV4W3N0YXRlMV07XG4gICAgICAgICAgbjIgPSBuMSArIEVSUkNPREU7XG4gICAgICAgICAgaWYgKG4xICE9IDAgJiYgbjIgPj0gMCAmJiBuMiA8PSB0YWJsZXNbdGJsX3RhYmxlc2l6ZV0gJiZcbiAgICAgICAgICAgICAgdGFibGVzLmNoZWNrW24yXSA9PSBFUlJDT0RFKSB7XG4gICAgICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgICAgIGxvZyhcIlJlY292ZXJpbmcgaW4gc3RhdGUgXCIgKyBzdGF0ZTEpO1xuICAgICAgICAgICAgY21kID0gc2hpZnRfcmVjb3ZlcjsgYnJlYWsgbmV4dDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICBsb2coXCJEaXNjYXJkaW5nIHN0YXRlIFwiICsgc3RhdGUxKTtcbiAgICAgICAgICAgIGlmIChzcCA8PSBlbnZbZW52X3N0YWNrYmFzZV0pIHtcbiAgICAgICAgICAgICAgaWYgKGNhbWxfcGFyc2VyX3RyYWNlKVxuICAgICAgICAgICAgICAgIGxvZyhcIk5vIG1vcmUgc3RhdGVzIHRvIGRpc2NhcmRcIik7XG4gICAgICAgICAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICAgICAgc3AtLTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChlbnZbZW52X2N1cnJfY2hhcl0gPT0gMClcbiAgICAgICAgICByZXR1cm4gUkFJU0VfUEFSU0VfRVJST1I7IC8qIFRoZSBNTCBjb2RlIHJhaXNlcyBQYXJzZV9lcnJvciAqL1xuICAgICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgICAgbG9nKFwiRGlzY2FyZGluZyBsYXN0IHRva2VuIHJlYWRcIik7XG4gICAgICAgIGVudltlbnZfY3Vycl9jaGFyXSA9IC0xO1xuICAgICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIH1cbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgODovL3NoaWZ0OlxuICAgICAgZW52W2Vudl9jdXJyX2NoYXJdID0gLTE7XG4gICAgICBpZiAoZXJyZmxhZyA+IDApIGVycmZsYWctLTtcbiAgICAgIC8vIEZhbGwgdGhyb3VnaFxuICAgIGNhc2UgOTovL3NoaWZ0X3JlY292ZXI6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogc2hpZnQgdG8gc3RhdGUgXCIgKyB0YWJsZXMudGFibGVbbjJdKTtcbiAgICAgIHN0YXRlID0gdGFibGVzLnRhYmxlW24yXTtcbiAgICAgIHNwKys7XG4gICAgICBpZiAoc3AgPj0gZW52W2Vudl9zdGFja3NpemVdKSB7XG4gICAgICAgIHJlcyA9IEdST1dfU1RBQ0tTXzE7XG4gICAgICAgIGJyZWFrIGV4aXQ7XG4gICAgICB9XG4gICAgICAvLyBGYWxsIHRocm91Z2hcbiAgICAgIC8qIFRoZSBNTCBjb2RlIHJlc2l6ZXMgdGhlIHN0YWNrcyAqL1xuICAgIGNhc2UgMjovL1NUQUNLU19HUk9XTl8xOlxuICAgICAgZW52W2Vudl9zX3N0YWNrXVtzcCArIDFdID0gc3RhdGU7XG4gICAgICBlbnZbZW52X3Zfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X2x2YWxdO1xuICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX3N0YXJ0XTtcbiAgICAgIGVudltlbnZfc3ltYl9lbmRfc3RhY2tdW3NwICsgMV0gPSBlbnZbZW52X3N5bWJfZW5kXTtcbiAgICAgIGNtZCA9IGxvb3A7XG4gICAgICBicmVhaztcblxuICAgIGNhc2UgMTA6Ly9yZWR1Y2U6XG4gICAgICBpZiAoY2FtbF9wYXJzZXJfdHJhY2UpXG4gICAgICAgIGxvZyhcIlN0YXRlIFwiICsgc3RhdGUgKyBcIjogcmVkdWNlIGJ5IHJ1bGUgXCIgKyBuKTtcbiAgICAgIHZhciBtID0gdGFibGVzLmxlbltuXTtcbiAgICAgIGVudltlbnZfYXNwXSA9IHNwO1xuICAgICAgZW52W2Vudl9ydWxlX251bWJlcl0gPSBuO1xuICAgICAgZW52W2Vudl9ydWxlX2xlbl0gPSBtO1xuICAgICAgc3AgPSBzcCAtIG0gKyAxO1xuICAgICAgbSA9IHRhYmxlcy5saHNbbl07XG4gICAgICBzdGF0ZTEgPSBlbnZbZW52X3Nfc3RhY2tdW3NwXTtcbiAgICAgIG4xID0gdGFibGVzLmdpbmRleFttXTtcbiAgICAgIG4yID0gbjEgKyBzdGF0ZTE7XG4gICAgICBpZiAobjEgIT0gMCAmJiBuMiA+PSAwICYmIG4yIDw9IHRhYmxlc1t0YmxfdGFibGVzaXplXSAmJlxuICAgICAgICAgIHRhYmxlcy5jaGVja1tuMl0gPT0gc3RhdGUxKVxuICAgICAgICBzdGF0ZSA9IHRhYmxlcy50YWJsZVtuMl07XG4gICAgICBlbHNlXG4gICAgICAgIHN0YXRlID0gdGFibGVzLmRnb3RvW21dO1xuICAgICAgaWYgKHNwID49IGVudltlbnZfc3RhY2tzaXplXSkge1xuICAgICAgICByZXMgPSBHUk9XX1NUQUNLU18yO1xuICAgICAgICBicmVhayBleGl0O1xuICAgICAgfVxuICAgICAgLy8gRmFsbCB0aHJvdWdoXG4gICAgICAvKiBUaGUgTUwgY29kZSByZXNpemVzIHRoZSBzdGFja3MgKi9cbiAgICBjYXNlIDM6Ly9TVEFDS1NfR1JPV05fMjpcbiAgICAgIHJlcyA9IENPTVBVVEVfU0VNQU5USUNfQUNUSU9OO1xuICAgICAgYnJlYWsgZXhpdDtcbiAgICAgIC8qIFRoZSBNTCBjb2RlIGNhbGxzIHRoZSBzZW1hbnRpYyBhY3Rpb24gKi9cbiAgICBjYXNlIDQ6Ly9TRU1BTlRJQ19BQ1RJT05fQ09NUFVURUQ6XG4gICAgICBlbnZbZW52X3Nfc3RhY2tdW3NwICsgMV0gPSBzdGF0ZTtcbiAgICAgIGVudltlbnZfdl9zdGFja11bc3AgKyAxXSA9IGFyZztcbiAgICAgIHZhciBhc3AgPSBlbnZbZW52X2FzcF07XG4gICAgICBlbnZbZW52X3N5bWJfZW5kX3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICBpZiAoc3AgPiBhc3ApIHtcbiAgICAgICAgLyogVGhpcyBpcyBhbiBlcHNpbG9uIHByb2R1Y3Rpb24uIFRha2Ugc3ltYl9zdGFydCBlcXVhbCB0byBzeW1iX2VuZC4gKi9cbiAgICAgICAgZW52W2Vudl9zeW1iX3N0YXJ0X3N0YWNrXVtzcCArIDFdID0gZW52W2Vudl9zeW1iX2VuZF9zdGFja11bYXNwICsgMV07XG4gICAgICB9XG4gICAgICBjbWQgPSBsb29wOyBicmVhaztcbiAgICAgIC8qIFNob3VsZCBub3QgaGFwcGVuICovXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBSQUlTRV9QQVJTRV9FUlJPUjtcbiAgICB9XG4gIH1cbiAgLy8gU0FWRVxuICBlbnZbZW52X3NwXSA9IHNwO1xuICBlbnZbZW52X3N0YXRlXSA9IHN0YXRlO1xuICBlbnZbZW52X2VycmZsYWddID0gZXJyZmxhZztcbiAgcmV0dXJuIHJlcztcbn1cblxuLy9Qcm92aWRlczogY2FtbF9zZXRfcGFyc2VyX3RyYWNlXG4vL1JlcXVpcmVzOiBjYW1sX3BhcnNlcl90cmFjZVxuZnVuY3Rpb24gY2FtbF9zZXRfcGFyc2VyX3RyYWNlKGJvb2wpIHtcbiAgdmFyIG9sZGZsYWcgPSBjYW1sX3BhcnNlcl90cmFjZTtcbiAgY2FtbF9wYXJzZXJfdHJhY2UgPSBib29sO1xuICByZXR1cm4gb2xkZmxhZztcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZm9ybWF0X2ludCBjb25zdCAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9mb3JtYXQsIGNhbWxfZmluaXNoX2Zvcm1hdHRpbmcsIGNhbWxfc3RyX3JlcGVhdFxuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfb2ZfanNieXRlcywgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9mb3JtYXRfaW50KGZtdCwgaSkge1xuICBpZiAoY2FtbF9qc2J5dGVzX29mX3N0cmluZyhmbXQpID09IFwiJWRcIikgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2pzYnl0ZXMoXCJcIitpKTtcbiAgdmFyIGYgPSBjYW1sX3BhcnNlX2Zvcm1hdChmbXQpO1xuICBpZiAoaSA8IDApIHsgaWYgKGYuc2lnbmVkY29udikgeyBmLnNpZ24gPSAtMTsgaSA9IC1pOyB9IGVsc2UgaSA+Pj49IDA7IH1cbiAgdmFyIHMgPSBpLnRvU3RyaW5nKGYuYmFzZSk7XG4gIGlmIChmLnByZWMgPj0gMCkge1xuICAgIGYuZmlsbGVyID0gJyAnO1xuICAgIHZhciBuID0gZi5wcmVjIC0gcy5sZW5ndGg7XG4gICAgaWYgKG4gPiAwKSBzID0gY2FtbF9zdHJfcmVwZWF0IChuLCAnMCcpICsgcztcbiAgfVxuICByZXR1cm4gY2FtbF9maW5pc2hfZm9ybWF0dGluZyhmLCBzKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlXG4vL1JlcXVpcmVzOiBjYW1sX3N0cmluZ191bnNhZmVfZ2V0LCBjYW1sX21sX3N0cmluZ19sZW5ndGhcbmZ1bmN0aW9uIGNhbWxfcGFyc2Vfc2lnbl9hbmRfYmFzZSAocykge1xuICB2YXIgaSA9IDAsIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKSwgYmFzZSA9IDEwLCBzaWduID0gMTtcbiAgaWYgKGxlbiA+IDApIHtcbiAgICBzd2l0Y2ggKGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocyxpKSkge1xuICAgIGNhc2UgNDU6IGkrKzsgc2lnbiA9IC0xOyBicmVhaztcbiAgICBjYXNlIDQzOiBpKys7IHNpZ24gPSAxOyBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKGkgKyAxIDwgbGVuICYmIGNhbWxfc3RyaW5nX3Vuc2FmZV9nZXQocywgaSkgPT0gNDgpXG4gICAgc3dpdGNoIChjYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkgKyAxKSkge1xuICAgIGNhc2UgMTIwOiBjYXNlIDg4OiBiYXNlID0gMTY7IGkgKz0gMjsgYnJlYWs7XG4gICAgY2FzZSAxMTE6IGNhc2UgNzk6IGJhc2UgPSAgODsgaSArPSAyOyBicmVhaztcbiAgICBjYXNlICA5ODogY2FzZSA2NjogYmFzZSA9ICAyOyBpICs9IDI7IGJyZWFrO1xuICAgIGNhc2UgMTE3OiBjYXNlIDg1OiBpICs9IDI7IGJyZWFrO1xuICAgIH1cbiAgcmV0dXJuIFtpLCBzaWduLCBiYXNlXTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9wYXJzZV9kaWdpdFxuZnVuY3Rpb24gY2FtbF9wYXJzZV9kaWdpdChjKSB7XG4gIGlmIChjID49IDQ4ICYmIGMgPD0gNTcpICByZXR1cm4gYyAtIDQ4O1xuICBpZiAoYyA+PSA2NSAmJiBjIDw9IDkwKSAgcmV0dXJuIGMgLSA1NTtcbiAgaWYgKGMgPj0gOTcgJiYgYyA8PSAxMjIpIHJldHVybiBjIC0gODc7XG4gIHJldHVybiAtMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pbnRfb2Zfc3RyaW5nIChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfbWxfc3RyaW5nX2xlbmd0aCwgY2FtbF9zdHJpbmdfdW5zYWZlX2dldFxuLy9SZXF1aXJlczogY2FtbF9wYXJzZV9zaWduX2FuZF9iYXNlLCBjYW1sX3BhcnNlX2RpZ2l0LCBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2ludF9vZl9zdHJpbmcgKHMpIHtcbiAgdmFyIHIgPSBjYW1sX3BhcnNlX3NpZ25fYW5kX2Jhc2UgKHMpO1xuICB2YXIgaSA9IHJbMF0sIHNpZ24gPSByWzFdLCBiYXNlID0gclsyXTtcbiAgdmFyIGxlbiA9IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzKTtcbiAgdmFyIHRocmVzaG9sZCA9IC0xID4+PiAwO1xuICB2YXIgYyA9IChpIDwgbGVuKT9jYW1sX3N0cmluZ191bnNhZmVfZ2V0KHMsIGkpOjA7XG4gIHZhciBkID0gY2FtbF9wYXJzZV9kaWdpdChjKTtcbiAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIHZhciByZXMgPSBkO1xuICBmb3IgKGkrKztpPGxlbjtpKyspIHtcbiAgICBjID0gY2FtbF9zdHJpbmdfdW5zYWZlX2dldChzLCBpKTtcbiAgICBpZiAoYyA9PSA5NSkgY29udGludWU7XG4gICAgZCA9IGNhbWxfcGFyc2VfZGlnaXQoYyk7XG4gICAgaWYgKGQgPCAwIHx8IGQgPj0gYmFzZSkgYnJlYWs7XG4gICAgcmVzID0gYmFzZSAqIHJlcyArIGQ7XG4gICAgaWYgKHJlcyA+IHRocmVzaG9sZCkgY2FtbF9mYWlsd2l0aChcImludF9vZl9zdHJpbmdcIik7XG4gIH1cbiAgaWYgKGkgIT0gbGVuKSBjYW1sX2ZhaWx3aXRoKFwiaW50X29mX3N0cmluZ1wiKTtcbiAgLy8gRm9yIGJhc2UgZGlmZmVyZW50IGZyb20gMTAsIHdlIGV4cGVjdCBhbiB1bnNpZ25lZCByZXByZXNlbnRhdGlvbixcbiAgLy8gaGVuY2UgYW55IHZhbHVlIG9mICdyZXMnIChsZXNzIHRoYW4gJ3RocmVzaG9sZCcpIGlzIGFjY2VwdGFibGUuXG4gIC8vIEJ1dCB3ZSBoYXZlIHRvIGNvbnZlcnQgdGhlIHJlc3VsdCBiYWNrIHRvIGEgc2lnbmVkIGludGVnZXIuXG4gIHJlcyA9IHNpZ24gKiByZXM7XG4gIGlmICgoYmFzZSA9PSAxMCkgJiYgKChyZXMgfCAwKSAhPSByZXMpKVxuICAgIC8qIFNpZ25lZCByZXByZXNlbnRhdGlvbiBleHBlY3RlZCwgYWxsb3cgLTJeKG5iaXRzLTEpIHRvIDJeKG5iaXRzLTEpIC0gMSAqL1xuICAgIGNhbWxfZmFpbHdpdGgoXCJpbnRfb2Zfc3RyaW5nXCIpO1xuICByZXR1cm4gcmVzIHwgMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tdWwgY29uc3RcbmZ1bmN0aW9uIGNhbWxfbXVsKGEsYil7XG4gIHJldHVybiBNYXRoLmltdWwoYSxiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9kaXZcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfZGl2KHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4gKHgveSl8MDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tb2Rcbi8vUmVxdWlyZXM6IGNhbWxfcmFpc2VfemVyb19kaXZpZGVcbmZ1bmN0aW9uIGNhbWxfbW9kKHgseSkge1xuICBpZiAoeSA9PSAwKSBjYW1sX3JhaXNlX3plcm9fZGl2aWRlICgpO1xuICByZXR1cm4geCV5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2Jzd2FwMTZcbmZ1bmN0aW9uIGNhbWxfYnN3YXAxNih4KSB7XG4gIHJldHVybiAoKCgoeCAmIDB4MDBGRikgPDwgOCkgfFxuICAgICAgICAgICAoKHggJiAweEZGMDApID4+IDgpKSk7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2ludDMyX2Jzd2FwXG5mdW5jdGlvbiBjYW1sX2ludDMyX2Jzd2FwKHgpIHtcbiAgcmV0dXJuICgoKHggJiAweDAwMDAwMEZGKSA8PCAyNCkgfFxuICAgICAgICAgICgoeCAmIDB4MDAwMEZGMDApIDw8IDgpIHxcbiAgICAgICAgICAoKHggJiAweDAwRkYwMDAwKSA+Pj4gOCkgfFxuICAgICAgICAgICgoeCAmIDB4RkYwMDAwMDApID4+PiAyNCkpO1xufVxuLy9Qcm92aWRlczogY2FtbF9pbnQ2NF9ic3dhcFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF90b19ieXRlcywgY2FtbF9pbnQ2NF9vZl9ieXRlc1xuZnVuY3Rpb24gY2FtbF9pbnQ2NF9ic3dhcCh4KSB7XG4gIHZhciB5ID0gY2FtbF9pbnQ2NF90b19ieXRlcyh4KTtcbiAgcmV0dXJuIGNhbWxfaW50NjRfb2ZfYnl0ZXMoW3lbN10sIHlbNl0sIHlbNV0sIHlbNF0sIHlbM10sIHlbMl0sIHlbMV0sIHlbMF1dKTtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vLy8vLy8vLy8vLy8gSGFzaHRibFxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF91bml2X3BhcmFtIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfdG9fYnl0ZXMsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCwgY2FtbF9jdXN0b21fb3BzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZ1xuLy9WZXJzaW9uOiA8IDQuMTJcbmZ1bmN0aW9uIGNhbWxfaGFzaF91bml2X3BhcmFtIChjb3VudCwgbGltaXQsIG9iaikge1xuICB2YXIgaGFzaF9hY2N1ID0gMDtcbiAgZnVuY3Rpb24gaGFzaF9hdXggKG9iaikge1xuICAgIGxpbWl0IC0tO1xuICAgIGlmIChjb3VudCA8IDAgfHwgbGltaXQgPCAwKSByZXR1cm47XG4gICAgaWYgKG9iaiBpbnN0YW5jZW9mIEFycmF5ICYmIG9ialswXSA9PT0gKG9ialswXXwwKSkge1xuICAgICAgc3dpdGNoIChvYmpbMF0pIHtcbiAgICAgIGNhc2UgMjQ4OlxuICAgICAgICAvLyBPYmplY3RcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIG9ialsyXSkgfCAwO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUwOlxuICAgICAgICAvLyBGb3J3YXJkXG4gICAgICAgIGxpbWl0Kys7IGhhc2hfYXV4KG9iaik7IGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY291bnQgLS07XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIG9ialswXSkgfCAwO1xuICAgICAgICBmb3IgKHZhciBpID0gb2JqLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIGhhc2hfYXV4IChvYmpbaV0pO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9ieXRlcyhvYmopKSB7XG4gICAgICBjb3VudCAtLTtcbiAgICAgIHZhciBjb250ZW50ID0gY2FtbF9tbF9ieXRlc19jb250ZW50KG9iaik7XG4gICAgICBpZih0eXBlb2YgY29udGVudCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBmb3IgKHZhciBiID0gY29udGVudCwgbCA9IGIubGVuZ3RoLCBpID0gMDsgaSA8IGw7IGkrKylcbiAgICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICAgIH0gZWxzZSB7IC8qIEFSUkFZICovXG4gICAgICAgIGZvciAodmFyIGEgPSBjb250ZW50LCBsID0gYS5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGFbaV0pIHwgMDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKG9iaikpIHtcbiAgICAgIHZhciBqc2J5dGVzID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvYmopO1xuICAgICAgZm9yICh2YXIgYiA9IGpzYnl0ZXMsIGwgPSBqc2J5dGVzLmxlbmd0aCwgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIGIuY2hhckNvZGVBdChpKSkgfCAwO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZm9yICh2YXIgYiA9IG9iaiwgbCA9IG9iai5sZW5ndGgsIGkgPSAwOyBpIDwgbDsgaSsrKVxuICAgICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogMTkgKyBiLmNoYXJDb2RlQXQoaSkpIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gKG9ianwwKSkge1xuICAgICAgLy8gSW50ZWdlclxuICAgICAgY291bnQgLS07XG4gICAgICBoYXNoX2FjY3UgPSAoaGFzaF9hY2N1ICogNjU1OTkgKyBvYmopIHwgMDtcbiAgICB9IGVsc2UgaWYgKG9iaiA9PT0gK29iaikge1xuICAgICAgLy8gRmxvYXRcbiAgICAgIGNvdW50LS07XG4gICAgICB2YXIgcCA9IGNhbWxfaW50NjRfdG9fYnl0ZXMgKGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAob2JqKSk7XG4gICAgICBmb3IgKHZhciBpID0gNzsgaSA+PSAwOyBpLS0pIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiAxOSArIHBbaV0pIHwgMDtcbiAgICB9IGVsc2UgaWYob2JqICYmIG9iai5jYW1sX2N1c3RvbSkge1xuICAgICAgaWYoY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW29iai5jYW1sX2N1c3RvbV0uaGFzaCkge1xuICAgICAgICB2YXIgaCA9IGNhbWxfY3VzdG9tX29wc1tvYmouY2FtbF9jdXN0b21dLmhhc2gob2JqKSB8IDA7XG4gICAgICAgIGhhc2hfYWNjdSA9IChoYXNoX2FjY3UgKiA2NTU5OSArIGgpIHwgMDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaGFzaF9hdXggKG9iaik7XG4gIHJldHVybiBoYXNoX2FjY3UgJiAweDNGRkZGRkZGO1xufVxuXG4vL2Z1bmN0aW9uIFJPVEwzMih4LG4pIHsgcmV0dXJuICgoeCA8PCBuKSB8ICh4ID4+PiAoMzItbikpKTsgfVxuLy9Qcm92aWRlczogY2FtbF9oYXNoX21peF9pbnRcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ludChoLGQpIHtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4Y2M5ZTJkNTF8MCk7XG4gIGQgPSAoKGQgPDwgMTUpIHwgKGQgPj4+ICgzMi0xNSkpKTsgLy8gUk9UTDMyKGQsIDE1KTtcbiAgZCA9IGNhbWxfbXVsKGQsIDB4MWI4NzM1OTMpO1xuICBoIF49IGQ7XG4gIGggPSAoKGggPDwgMTMpIHwgKGggPj4+ICgzMi0xMykpKTsgICAvL1JPVEwzMihoLCAxMyk7XG4gIHJldHVybiAoKChoICsgKGggPDwgMikpfDApICsgKDB4ZTY1NDZiNjR8MCkpfDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfZmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfbXVsXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2ZpbmFsKGgpIHtcbiAgaCBePSBoID4+PiAxNjtcbiAgaCA9IGNhbWxfbXVsIChoLCAweDg1ZWJjYTZifDApO1xuICBoIF49IGggPj4+IDEzO1xuICBoID0gY2FtbF9tdWwgKGgsIDB4YzJiMmFlMzV8MCk7XG4gIGggXj0gaCA+Pj4gMTY7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2Zsb2F0XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2JpdHNfb2ZfZmxvYXQsIGNhbWxfaGFzaF9taXhfaW50NjRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfZmxvYXQgKGgsIHYwKSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2ludDY0KGgsIGNhbWxfaW50NjRfYml0c19vZl9mbG9hdCAodjApKTtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfaW50NjRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X2xvMzIsIGNhbWxfaW50NjRfaGkzMlxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9pbnQ2NCAoaCwgdikge1xuICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgY2FtbF9pbnQ2NF9sbzMyKHYpKTtcbiAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIGNhbWxfaW50NjRfaGkzMih2KSk7XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfaW50XG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgcykge1xuICB2YXIgbGVuID0gcy5sZW5ndGgsIGksIHc7XG4gIGZvciAoaSA9IDA7IGkgKyA0IDw9IGxlbjsgaSArPSA0KSB7XG4gICAgdyA9IHMuY2hhckNvZGVBdChpKVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMSkgPDwgOClcbiAgICAgIHwgKHMuY2hhckNvZGVBdChpKzIpIDw8IDE2KVxuICAgICAgfCAocy5jaGFyQ29kZUF0KGkrMykgPDwgMjQpO1xuICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB3KTtcbiAgfVxuICB3ID0gMDtcbiAgc3dpdGNoIChsZW4gJiAzKSB7XG4gIGNhc2UgMzogdyAgPSBzLmNoYXJDb2RlQXQoaSsyKSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHMuY2hhckNvZGVBdChpKzEpIDw8IDg7XG4gIGNhc2UgMTpcbiAgICB3IHw9IHMuY2hhckNvZGVBdChpKTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9pbnRcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIHMpIHtcbiAgdmFyIGxlbiA9IHMubGVuZ3RoLCBpLCB3O1xuICBmb3IgKGkgPSAwOyBpICsgNCA8PSBsZW47IGkgKz0gNCkge1xuICAgIHcgPSBzW2ldXG4gICAgICB8IChzW2krMV0gPDwgOClcbiAgICAgIHwgKHNbaSsyXSA8PCAxNilcbiAgICAgIHwgKHNbaSszXSA8PCAyNCk7XG4gICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHcpO1xuICB9XG4gIHcgPSAwO1xuICBzd2l0Y2ggKGxlbiAmIDMpIHtcbiAgY2FzZSAzOiB3ICA9IHNbaSsyXSA8PCAxNjtcbiAgY2FzZSAyOiB3IHw9IHNbaSsxXSA8PCA4O1xuICBjYXNlIDE6IHcgfD0gc1tpXTtcbiAgICBoID0gY2FtbF9oYXNoX21peF9pbnQoaCwgdyk7XG4gIGRlZmF1bHQ6XG4gIH1cbiAgaCBePSBsZW47XG4gIHJldHVybiBoO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2NvbnRlbnRcbi8vUmVxdWlyZXM6IGNhbWxfaGFzaF9taXhfanNieXRlc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9ieXRlc19hcnJcbmZ1bmN0aW9uIGNhbWxfaGFzaF9taXhfYnl0ZXMoaCwgdikge1xuICB2YXIgY29udGVudCA9IGNhbWxfbWxfYnl0ZXNfY29udGVudCh2KTtcbiAgaWYodHlwZW9mIGNvbnRlbnQgPT09IFwic3RyaW5nXCIpXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfanNieXRlcyhoLCBjb250ZW50KVxuICBlbHNlIC8qIEFSUkFZICovXG4gICAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsIGNvbnRlbnQpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzLCBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLCB2KSB7XG4gIHJldHVybiBjYW1sX2hhc2hfbWl4X2pzYnl0ZXMoaCwgY2FtbF9qc2J5dGVzX29mX3N0cmluZyh2KSk7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9oYXNoIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfc3RyaW5nLCBjYW1sX2lzX21sX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ludCwgY2FtbF9oYXNoX21peF9maW5hbFxuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9mbG9hdCwgY2FtbF9oYXNoX21peF9zdHJpbmcsIGNhbWxfaGFzaF9taXhfYnl0ZXMsIGNhbWxfY3VzdG9tX29wc1xuLy9SZXF1aXJlczogY2FtbF9oYXNoX21peF9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbmZ1bmN0aW9uIGNhbWxfaGFzaCAoY291bnQsIGxpbWl0LCBzZWVkLCBvYmopIHtcbiAgdmFyIHF1ZXVlLCByZCwgd3IsIHN6LCBudW0sIGgsIHYsIGksIGxlbjtcbiAgc3ogPSBsaW1pdDtcbiAgaWYgKHN6IDwgMCB8fCBzeiA+IDI1Nikgc3ogPSAyNTY7XG4gIG51bSA9IGNvdW50O1xuICBoID0gc2VlZDtcbiAgcXVldWUgPSBbb2JqXTsgcmQgPSAwOyB3ciA9IDE7XG4gIHdoaWxlIChyZCA8IHdyICYmIG51bSA+IDApIHtcbiAgICB2ID0gcXVldWVbcmQrK107XG4gICAgaWYgKHYgJiYgdi5jYW1sX2N1c3RvbSl7XG4gICAgICBpZihjYW1sX2N1c3RvbV9vcHNbdi5jYW1sX2N1c3RvbV0gJiYgY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2gpIHtcbiAgICAgICAgdmFyIGhoID0gY2FtbF9jdXN0b21fb3BzW3YuY2FtbF9jdXN0b21dLmhhc2godik7XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludCAoaCwgaGgpO1xuICAgICAgICBudW0gLS07XG4gICAgICB9XG4gICAgfVxuICAgIGVsc2UgaWYgKHYgaW5zdGFuY2VvZiBBcnJheSAmJiB2WzBdID09PSAodlswXXwwKSkge1xuICAgICAgc3dpdGNoICh2WzBdKSB7XG4gICAgICBjYXNlIDI0ODpcbiAgICAgICAgLy8gT2JqZWN0XG4gICAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2WzJdKTtcbiAgICAgICAgbnVtLS07XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTA6XG4gICAgICAgIC8vIEZvcndhcmRcbiAgICAgICAgcXVldWVbLS1yZF0gPSB2WzFdO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmKGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh2WzBdKSkge1xuICAgICAgICAgIC8qIEFsbCBjb250aW51YXRpb25zIGhhc2ggdG8gdGhlIHNhbWUgdmFsdWUsXG4gICAgICAgICAgICAgc2luY2Ugd2UgaGF2ZSBubyBpZGVhIGhvdyB0byBkaXN0aW5ndWlzaCB0aGVtLiAqL1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIHZhciB0YWcgPSAoKHYubGVuZ3RoIC0gMSkgPDwgMTApIHwgdlswXTtcbiAgICAgICAgaCA9IGNhbWxfaGFzaF9taXhfaW50KGgsIHRhZyk7XG4gICAgICAgIGZvciAoaSA9IDEsIGxlbiA9IHYubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgICBpZiAod3IgPj0gc3opIGJyZWFrO1xuICAgICAgICAgIHF1ZXVlW3dyKytdID0gdltpXTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXModikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAoY2FtbF9pc19tbF9zdHJpbmcodikpIHtcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpXG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICBoID0gY2FtbF9oYXNoX21peF9qc2J5dGVzKGgsdilcbiAgICAgIG51bS0tO1xuICAgIH0gZWxzZSBpZiAodiA9PT0gKHZ8MCkpIHtcbiAgICAgIC8vIEludGVnZXJcbiAgICAgIGggPSBjYW1sX2hhc2hfbWl4X2ludChoLCB2K3YrMSk7XG4gICAgICBudW0tLTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB2ID09PSBcIm51bWJlclwiKSB7XG4gICAgICAvLyBGbG9hdFxuICAgICAgaCA9IGNhbWxfaGFzaF9taXhfZmxvYXQoaCx2KTtcbiAgICAgIG51bS0tO1xuICAgIH1cbiAgfVxuICBoID0gY2FtbF9oYXNoX21peF9maW5hbChoKTtcbiAgcmV0dXJuIGggJiAweDNGRkZGRkZGO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cmluZ19oYXNoXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2ZpbmFsLCBjYW1sX2hhc2hfbWl4X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9zdHJpbmdfaGFzaChoLCB2KXtcbiAgdmFyIGggPSBjYW1sX2hhc2hfbWl4X3N0cmluZyhoLHYpO1xuICB2YXIgaCA9IGNhbWxfaGFzaF9taXhfZmluYWwoaCk7XG4gIHJldHVybiBoICYgMHgzRkZGRkZGRjtcbn1cbiIsIi8vIEpzX29mX29jYW1sIHJ1bnRpbWUgc3VwcG9ydFxuLy8gaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfdXBkYXRlX2R1bW15XG5mdW5jdGlvbiBjYW1sX3VwZGF0ZV9kdW1teSAoeCwgeSkge1xuICBpZiggeS5mdW4gKSB7IHguZnVuID0geS5mdW47IHJldHVybiAwOyB9XG4gIGlmKCB0eXBlb2YgeT09PVwiZnVuY3Rpb25cIiApIHsgeC5mdW4gPSB5OyByZXR1cm4gMDsgfVxuICB2YXIgaSA9IHkubGVuZ3RoOyB3aGlsZSAoaS0tKSB4W2ldID0geVtpXTsgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYWxsb2NfZHVtbXlfaW5maXhcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbF9nZW5cbmZ1bmN0aW9uIGNhbWxfYWxsb2NfZHVtbXlfaW5maXggKCkge1xuICByZXR1cm4gZnVuY3Rpb24gZiAoeCkgeyByZXR1cm4gY2FtbF9jYWxsX2dlbihmLmZ1biwgW3hdKSB9XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2lzX2Jsb2NrIGNvbnN0IChjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX2lzX2Jsb2NrICh4KSB7IHJldHVybiArKHggaW5zdGFuY2VvZiBBcnJheSk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial90YWdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfbWxfYnl0ZXMsIGNhbWxfaXNfbWxfc3RyaW5nXG5mdW5jdGlvbiBjYW1sX29ial90YWcgKHgpIHtcbiAgaWYgKCh4IGluc3RhbmNlb2YgQXJyYXkpICYmIHhbMF0gPT0gKHhbMF0gPj4+IDApKVxuICAgIHJldHVybiB4WzBdXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfYnl0ZXMoeCkpXG4gICAgcmV0dXJuIDI1MlxuICBlbHNlIGlmIChjYW1sX2lzX21sX3N0cmluZyh4KSlcbiAgICByZXR1cm4gMjUyXG4gIGVsc2UgaWYgKCh4IGluc3RhbmNlb2YgRnVuY3Rpb24pIHx8IHR5cGVvZiB4ID09IFwiZnVuY3Rpb25cIilcbiAgICByZXR1cm4gMjQ3XG4gIGVsc2UgaWYgKHggJiYgeC5jYW1sX2N1c3RvbSlcbiAgICByZXR1cm4gMjU1XG4gIGVsc2VcbiAgICByZXR1cm4gMTAwMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9zZXRfdGFnIChtdXRhYmxlLCBjb25zdClcbmZ1bmN0aW9uIGNhbWxfb2JqX3NldF90YWcgKHgsIHRhZykgeyB4WzBdID0gdGFnOyByZXR1cm4gMDsgfVxuLy9Qcm92aWRlczogY2FtbF9vYmpfYmxvY2sgY29uc3QgKGNvbnN0LGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9vYmpfYmxvY2sgKHRhZywgc2l6ZSkge1xuICB2YXIgbyA9IG5ldyBBcnJheShzaXplKzEpO1xuICBvWzBdPXRhZztcbiAgZm9yICh2YXIgaSA9IDE7IGkgPD0gc2l6ZTsgaSsrKSBvW2ldID0gMDtcbiAgcmV0dXJuIG87XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3dpdGhfdGFnXG5mdW5jdGlvbiBjYW1sX29ial93aXRoX3RhZyh0YWcseCkge1xuICB2YXIgbCA9IHgubGVuZ3RoO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgYVswXSA9IHRhZztcbiAgZm9yKHZhciBpID0gMTsgaSA8IGw7IGkrKyApIGFbaV0gPSB4W2ldO1xuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfZHVwIG11dGFibGUgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX29ial9kdXAgKHgpIHtcbiAgdmFyIGwgPSB4Lmxlbmd0aDtcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsOyBpKysgKSBhW2ldID0geFtpXTtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3RydW5jYXRlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gY2FtbF9vYmpfdHJ1bmNhdGUgKHgsIHMpIHtcbiAgaWYgKHM8PTAgfHwgcyArIDEgPiB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiT2JqLnRydW5jYXRlXCIpO1xuICBpZiAoeC5sZW5ndGggIT0gcyArIDEpIHgubGVuZ3RoID0gcyArIDE7XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29ial9tYWtlX2ZvcndhcmRcbmZ1bmN0aW9uIGNhbWxfb2JqX21ha2VfZm9yd2FyZCAoYix2KSB7XG4gIGJbMF09MjUwO1xuICBiWzFdPXY7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXBcbmZ1bmN0aW9uIGNhbWxfb2JqX2NvbXBhcmVfYW5kX3N3YXAoeCxpLG9sZCxuKXtcbiAgaWYoeFtpKzFdID09IG9sZCkge1xuICAgIHhbaSsxXSA9IG47XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfaXNfc2hhcmVkXG5mdW5jdGlvbiBjYW1sX29ial9pc19zaGFyZWQoeCl7XG4gIHJldHVybiAxXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9tYWtlX2ZvcndhcmQgY29uc3QgKG11dGFibGUpXG5mdW5jdGlvbiBjYW1sX2xhenlfbWFrZV9mb3J3YXJkICh2KSB7IHJldHVybiBbMjUwLCB2XTsgfVxuXG4vLy8vLy8vLy8vLy8vIENhbWxpbnRlcm5hbE9PXG4vL1Byb3ZpZGVzOiBjYW1sX2dldF9wdWJsaWNfbWV0aG9kIGNvbnN0XG52YXIgY2FtbF9tZXRob2RfY2FjaGUgPSBbXTtcbmZ1bmN0aW9uIGNhbWxfZ2V0X3B1YmxpY19tZXRob2QgKG9iaiwgdGFnLCBjYWNoZWlkKSB7XG4gIHZhciBtZXRocyA9IG9ialsxXTtcbiAgdmFyIG9mcyA9IGNhbWxfbWV0aG9kX2NhY2hlW2NhY2hlaWRdO1xuICBpZiAob2ZzID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycmF5IGlzIG5vdCBzcGFyc2VcbiAgICBmb3IgKHZhciBpID0gY2FtbF9tZXRob2RfY2FjaGUubGVuZ3RoOyBpIDwgY2FjaGVpZDsgaSsrKVxuICAgICAgY2FtbF9tZXRob2RfY2FjaGVbaV0gPSAwO1xuICB9IGVsc2UgaWYgKG1ldGhzW29mc10gPT09IHRhZykge1xuICAgIHJldHVybiBtZXRoc1tvZnMgLSAxXTtcbiAgfVxuICB2YXIgbGkgPSAzLCBoaSA9IG1ldGhzWzFdICogMiArIDEsIG1pO1xuICB3aGlsZSAobGkgPCBoaSkge1xuICAgIG1pID0gKChsaStoaSkgPj4gMSkgfCAxO1xuICAgIGlmICh0YWcgPCBtZXRoc1ttaSsxXSkgaGkgPSBtaS0yO1xuICAgIGVsc2UgbGkgPSBtaTtcbiAgfVxuICBjYW1sX21ldGhvZF9jYWNoZVtjYWNoZWlkXSA9IGxpICsgMTtcbiAgLyogcmV0dXJuIDAgaWYgdGFnIGlzIG5vdCB0aGVyZSAqL1xuICByZXR1cm4gKHRhZyA9PSBtZXRoc1tsaSsxXSA/IG1ldGhzW2xpXSA6IDApO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX29vX2xhc3RfaWRcbnZhciBjYW1sX29vX2xhc3RfaWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX3NldF9vb19pZFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX3NldF9vb19pZCAoYikge1xuICBiWzJdPWNhbWxfb29fbGFzdF9pZCsrO1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mcmVzaF9vb19pZCBjb25zdFxuLy9SZXF1aXJlczogY2FtbF9vb19sYXN0X2lkXG5mdW5jdGlvbiBjYW1sX2ZyZXNoX29vX2lkKCkge1xuICByZXR1cm4gY2FtbF9vb19sYXN0X2lkKys7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfcmF3X2ZpZWxkKG8saSkgeyByZXR1cm4gb1tpKzFdIH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfc2V0X3Jhd19maWVsZFxuZnVuY3Rpb24gY2FtbF9vYmpfc2V0X3Jhd19maWVsZChvLGksdikgeyByZXR1cm4gb1tpKzFdID0gdiB9XG5cbi8vUHJvdmlkZXM6IGNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1xuZnVuY3Rpb24gY2FtbF9vYmpfcmVhY2hhYmxlX3dvcmRzKG8pIHsgcmV0dXJuIDA7IH1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfYWRkX29mZnNldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuZnVuY3Rpb24gY2FtbF9vYmpfYWRkX29mZnNldCh2LG9mZnNldCkge1xuICBjYW1sX2ZhaWx3aXRoKFwiT2JqLmFkZF9vZmZzZXQgaXMgbm90IHN1cHBvcnRlZFwiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9vYmpfdXBkYXRlX3RhZ1xuZnVuY3Rpb24gY2FtbF9vYmpfdXBkYXRlX3RhZyhiLG8sbikge1xuICAgIGlmKGJbMF09PW8pIHsgYlswXSA9IG47IHJldHVybiAxIH1cbiAgICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcmNpbmdcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbmZ1bmN0aW9uIGNhbWxfbGF6eV91cGRhdGVfdG9fZm9yY2luZyhvKSB7XG4gIGlmICgobyBpbnN0YW5jZW9mIEFycmF5KSAmJiBvWzBdID09IChvWzBdID4+PiAwKSAmJlxuICAgICAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLCAyNDYsIDI0NCkpIHtcbiAgICByZXR1cm4gMDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gMTtcbiAgfVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2xhenlfdXBkYXRlX3RvX2ZvcndhcmRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX3VwZGF0ZV90YWdcbiAgZnVuY3Rpb24gY2FtbF9sYXp5X3VwZGF0ZV90b19mb3J3YXJkKG8pIHtcbiAgY2FtbF9vYmpfdXBkYXRlX3RhZyhvLDI0NCwyNTApO1xuICByZXR1cm4gMDsgLy8gdW5pdFxufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZXNldF90b19sYXp5XG4vL1JlcXVpcmVzOiBjYW1sX29ial91cGRhdGVfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVzZXRfdG9fbGF6eShvKSB7XG4gIGNhbWxfb2JqX3VwZGF0ZV90YWcobywyNDQsMjQ2KTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGF6eV9yZWFkX3Jlc3VsdFxuLy9SZXF1aXJlczogY2FtbF9vYmpfdGFnXG5mdW5jdGlvbiBjYW1sX2xhenlfcmVhZF9yZXN1bHQobykge1xuICByZXR1cm4gKGNhbWxfb2JqX3RhZyhvKSA9PSAyNTApP29bMV06bztcbn1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWdcbi8vVmVyc2lvbjogPCA1XG5mdW5jdGlvbiBjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodCkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9pc19jb250aW51YXRpb25fdGFnXG4vL1ZlcnNpb246ID49IDVcbmZ1bmN0aW9uIGNhbWxfaXNfY29udGludWF0aW9uX3RhZyh0KSB7XG4gIHJldHVybiAodCA9PSAyNDUpID8gMSA6IDA7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbi8vIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuLy8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbi8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbi8vIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4vLyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4vLyBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbi8vXG4vLyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2Vcbi8vIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4vLyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX3RhZ1xuLy9SZXF1aXJlczogY2FtbF9pc19tbF9zdHJpbmcsIGNhbWxfaXNfbWxfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZV92YWxfdGFnKGEpe1xuICBpZiAodHlwZW9mIGEgPT09IFwibnVtYmVyXCIpIHJldHVybiAxMDAwOyAvLyBpbnRfdGFnICh3ZSB1c2UgaXQgZm9yIGFsbCBudW1iZXJzKVxuICBlbHNlIGlmIChjYW1sX2lzX21sX2J5dGVzKGEpKSByZXR1cm4gMjUyOyAvLyBzdHJpbmdfdGFnXG4gIGVsc2UgaWYgKGNhbWxfaXNfbWxfc3RyaW5nKGEpKSByZXR1cm4gMTI1MjsgLy8gb2NhbWwgc3RyaW5nIChpZiBkaWZmZXJlbnQgZnJvbSBieXRlcylcbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIEFycmF5ICYmIGFbMF0gPT09IChhWzBdPj4+MCkgJiYgYVswXSA8PSAyNTUpIHtcbiAgICAvLyBMb29rIGxpa2UgYW4gb2NhbWwgYmxvY2tcbiAgICB2YXIgdGFnID0gYVswXSB8IDA7XG4gICAgLy8gaWdub3JlIGRvdWJsZV9hcnJheV90YWcgYmVjYXVzZSB3ZSBjYW5ub3QgYWNjdXJhdGVseSBzZXRcbiAgICAvLyB0aGlzIHRhZyB3aGVuIHdlIGNyZWF0ZSBhbiBhcnJheSBvZiBmbG9hdC5cbiAgICByZXR1cm4gKHRhZyA9PSAyNTQpPzA6dGFnXG4gIH1cbiAgZWxzZSBpZiAoYSBpbnN0YW5jZW9mIFN0cmluZykgcmV0dXJuIDEyNTIwOyAvLyBqYXZhc2NyaXB0IHN0cmluZywgbGlrZSBzdHJpbmdfdGFnICgyNTIpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwic3RyaW5nXCIpIHJldHVybiAxMjUyMDsgLy8gamF2YXNjcmlwdCBzdHJpbmcsIGxpa2Ugc3RyaW5nX3RhZyAoMjUyKVxuICBlbHNlIGlmIChhIGluc3RhbmNlb2YgTnVtYmVyKSByZXR1cm4gMTAwMDsgLy8gaW50X3RhZyAod2UgdXNlIGl0IGZvciBhbGwgbnVtYmVycylcbiAgZWxzZSBpZiAoYSAmJiBhLmNhbWxfY3VzdG9tKSByZXR1cm4gMTI1NTsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKGEgJiYgYS5jb21wYXJlKSByZXR1cm4gMTI1NjsgLy8gbGlrZSBjdXN0b21fdGFnICgyNTUpXG4gIGVsc2UgaWYgKHR5cGVvZiBhID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIDEyNDc7IC8vIGxpa2UgY2xvc3VyZV90YWcgKDI0NylcbiAgZWxzZSBpZiAodHlwZW9mIGEgPT0gXCJzeW1ib2xcIikgcmV0dXJuIDEyNTE7XG4gIHJldHVybiAxMDAxOyAvL291dF9vZl9oZWFwX3RhZ1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY3VzdG9tX29wc1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9nZXRfY3VzdG9tKGEpe1xuICByZXR1cm4gY2FtbF9jdXN0b21fb3BzW2EuY2FtbF9jdXN0b21dICYmIGNhbWxfY3VzdG9tX29wc1thLmNhbWxfY3VzdG9tXS5jb21wYXJlO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbVxuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbF9udW1iZXJfY3VzdG9tKG51bSwgY3VzdG9tLCBzd2FwLCB0b3RhbCkge1xuICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShjdXN0b20pO1xuICBpZihjb21wKSB7XG4gICAgdmFyIHggPSAoc3dhcCA+IDApP2NvbXAoY3VzdG9tLG51bSx0b3RhbCk6Y29tcChudW0sY3VzdG9tLHRvdGFsKTtcbiAgICBpZih0b3RhbCAmJiB4ICE9IHgpIHJldHVybiBzd2FwOyAvLyB0b3RhbCAmJiBuYW5cbiAgICBpZigreCAhPSAreCkgcmV0dXJuICt4OyAvLyBuYW5cbiAgICBpZigoeCB8IDApICE9IDApIHJldHVybiAoeCB8IDApOyAvLyAhbmFuXG4gIH1cbiAgcmV0dXJuIHN3YXBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9jb21wYXJlX3ZhbCAoY29uc3QsIGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfaW50X2NvbXBhcmUsIGNhbWxfc3RyaW5nX2NvbXBhcmUsIGNhbWxfYnl0ZXNfY29tcGFyZVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20sIGNhbWxfY29tcGFyZV92YWxfdGFnXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsX251bWJlcl9jdXN0b21cbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfaXNfY29udGludWF0aW9uX3RhZ1xuZnVuY3Rpb24gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdG90YWwpIHtcbiAgdmFyIHN0YWNrID0gW107XG4gIGZvcig7Oykge1xuICAgIGlmICghKHRvdGFsICYmIGEgPT09IGIpKSB7XG4gICAgICB2YXIgdGFnX2EgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhhKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19hID09IDI1MCkgeyBhID0gYVsxXTsgY29udGludWUgfVxuXG4gICAgICB2YXIgdGFnX2IgPSBjYW1sX2NvbXBhcmVfdmFsX3RhZyhiKTtcbiAgICAgIC8vIGZvcndhcmRfdGFnID9cbiAgICAgIGlmKHRhZ19iID09IDI1MCkgeyBiID0gYlsxXTsgY29udGludWUgfVxuXG4gICAgICAvLyB0YWdzIGFyZSBkaWZmZXJlbnRcbiAgICAgIGlmKHRhZ19hICE9PSB0YWdfYikge1xuICAgICAgICBpZih0YWdfYSA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2IgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShhLCBiLCAtMSwgdG90YWwpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZih0YWdfYiA9PSAxMDAwKSB7XG4gICAgICAgICAgaWYodGFnX2EgPT0gMTI1NSkgeyAvL2ltbWVkaWF0ZSBjYW4gY29tcGFyZSBhZ2FpbnN0IGN1c3RvbVxuICAgICAgICAgICAgcmV0dXJuIGNhbWxfY29tcGFyZV92YWxfbnVtYmVyX2N1c3RvbShiLCBhLCAxLCB0b3RhbCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAxXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICh0YWdfYSA8IHRhZ19iKT8tMToxO1xuICAgICAgfVxuICAgICAgc3dpdGNoKHRhZ19hKXtcbiAgICAgICAgLy8gMjQ2OiBMYXp5X3RhZyBoYW5kbGVkIGJlbGxvd1xuICAgICAgY2FzZSAyNDc6IC8vIENsb3N1cmVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgMjQ4OiAvLyBPYmplY3RcbiAgICAgICAgdmFyIHggPSBjYW1sX2ludF9jb21wYXJlKGFbMl0sIGJbMl0pO1xuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI0OTogLy8gSW5maXhcbiAgICAgICAgLy8gQ2Fubm90IGhhcHBlblxuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJjb21wYXJlOiBmdW5jdGlvbmFsIHZhbHVlXCIpO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSAyNTA6IC8vIEZvcndhcmQgdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW4sIGhhbmRsZWQgYWJvdmVcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBGb3J3YXJkX3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNTE6IC8vQWJzdHJhY3RcbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUyOiAvLyBPQ2FtbCBieXRlc1xuICAgICAgICBpZiAoYSAhPT0gYikge1xuICAgICAgICAgIHZhciB4ID0gY2FtbF9ieXRlc19jb21wYXJlKGEsIGIpO1xuICAgICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICB9O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjUzOiAvLyBEb3VibGVfdGFnXG4gICAgICAgIC8vIENhbm5vdCBoYXBwZW5cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiZXF1YWw6IGdvdCBEb3VibGVfdGFnLCBzaG91bGQgbm90IGhhcHBlblwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5X3RhZ1xuICAgICAgICAvLyBDYW5ub3QgaGFwcGVuLCBoYW5kbGVkIGFib3ZlXG4gICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImVxdWFsOiBnb3QgRG91YmxlX2FycmF5X3RhZywgc2hvdWxkIG5vdCBoYXBwZW5cIik7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIDI1NTogLy8gQ3VzdG9tX3RhZ1xuICAgICAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQoXCJlcXVhbDogZ290IEN1c3RvbV90YWcsIHNob3VsZCBub3QgaGFwcGVuXCIpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI0NzogLy8gRnVuY3Rpb25cbiAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogZnVuY3Rpb25hbCB2YWx1ZVwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTU6IC8vIEN1c3RvbVxuICAgICAgICB2YXIgY29tcCA9IGNhbWxfY29tcGFyZV92YWxfZ2V0X2N1c3RvbShhKTtcbiAgICAgICAgaWYoY29tcCAhPSBjYW1sX2NvbXBhcmVfdmFsX2dldF9jdXN0b20oYikpe1xuICAgICAgICAgIHJldHVybiAoYS5jYW1sX2N1c3RvbTxiLmNhbWxfY3VzdG9tKT8tMToxO1xuICAgICAgICB9XG4gICAgICAgIGlmKCFjb21wKVxuICAgICAgICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNvbXBhcmU6IGFic3RyYWN0IHZhbHVlXCIpO1xuICAgICAgICB2YXIgeCA9IGNvbXAoYSxiLHRvdGFsKTtcbiAgICAgICAgaWYoeCAhPSB4KXsgLy8gUHJvdGVjdCBhZ2FpbnN0IGludmFsaWQgVU5PUkRFUkVEXG4gICAgICAgICAgcmV0dXJuIHRvdGFsPy0xOng7XG4gICAgICAgIH1cbiAgICAgICAgaWYoeCAhPT0gKHh8MCkpeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCByZXR1cm4gdmFsdWVcbiAgICAgICAgICByZXR1cm4gLTFcbiAgICAgICAgfVxuICAgICAgICBpZiAoeCAhPSAwKSByZXR1cm4gKHggfCAwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEyNTY6IC8vIGNvbXBhcmUgZnVuY3Rpb25cbiAgICAgICAgdmFyIHggPSBhLmNvbXBhcmUoYix0b3RhbCk7XG4gICAgICAgIGlmKHggIT0geCkgeyAvLyBQcm90ZWN0IGFnYWluc3QgaW52YWxpZCBVTk9SREVSRURcbiAgICAgICAgICByZXR1cm4gdG90YWw/LTE6eDtcbiAgICAgICAgfVxuICAgICAgICBpZih4ICE9PSAoeHwwKSl7IC8vIFByb3RlY3QgYWdhaW5zdCBpbnZhbGlkIHJldHVybiB2YWx1ZVxuICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICB9XG4gICAgICAgIGlmICh4ICE9IDApIHJldHVybiAoeCB8IDApO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTAwMDogLy8gTnVtYmVyXG4gICAgICAgIGEgPSArYTtcbiAgICAgICAgYiA9ICtiO1xuICAgICAgICBpZiAoYSA8IGIpIHJldHVybiAtMTtcbiAgICAgICAgaWYgKGEgPiBiKSByZXR1cm4gMTtcbiAgICAgICAgaWYgKGEgIT0gYikge1xuICAgICAgICAgIGlmICghdG90YWwpIHJldHVybiBOYU47XG4gICAgICAgICAgaWYgKGEgPT0gYSkgcmV0dXJuIDE7XG4gICAgICAgICAgaWYgKGIgPT0gYikgcmV0dXJuIC0xO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMDAxOiAvLyBUaGUgcmVzdFxuICAgICAgICAvLyBIZXJlIHdlIGNhbiBiZSBpbiB0aGUgZm9sbG93aW5nIGNhc2VzOlxuICAgICAgICAvLyAxLiBKYXZhU2NyaXB0IHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAyLiBKYXZhU2NyaXB0IG9iamVjdCB0aGF0IGNhbiBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvLyAzLiBKYXZhU2NyaXB0IG9iamVjdCB0aGFuIGNhbm5vdCBiZSBjb2VyY2VkIHRvIHByaW1pdGl2ZSB0eXBlc1xuICAgICAgICAvL1xuICAgICAgICAvLyAoMykgd2lsbCByYWlzZSBhIFtUeXBlRXJyb3JdXG4gICAgICAgIC8vICgyKSB3aWxsIGNvZXJjZSB0byBwcmltaXRpdmUgdHlwZXMgdXNpbmcgW3ZhbHVlT2ZdIG9yIFt0b1N0cmluZ11cbiAgICAgICAgLy8gKDIpIGFuZCAoMyksIGFmdGVyIGV2ZW50dWFsIGNvZXJjaW9uXG4gICAgICAgIC8vIC0gaWYgYSBhbmQgYiBhcmUgc3RyaW5ncywgYXBwbHkgbGV4aWNvZ3JhcGhpYyBjb21wYXJpc29uXG4gICAgICAgIC8vIC0gaWYgYSBvciBiIGFyZSBub3Qgc3RyaW5ncywgY29udmVydCBhIGFuZCBiIHRvIG51bWJlclxuICAgICAgICAvLyAgIGFuZCBhcHBseSBzdGFuZGFyZCBjb21wYXJpc29uXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEV4Y2VwdGlvbjogYCE9YCB3aWxsIG5vdCBjb2VyY2UvY29udmVydCBpZiBib3RoIGEgYW5kIGIgYXJlIG9iamVjdHNcbiAgICAgICAgaWYgKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gICAgICAgIGlmIChhICE9IGIpIHtcbiAgICAgICAgICBpZiAoIXRvdGFsKSByZXR1cm4gTmFOO1xuICAgICAgICAgIGlmIChhID09IGEpIHJldHVybiAxO1xuICAgICAgICAgIGlmIChiID09IGIpIHJldHVybiAtMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MTogLy8gSmF2YVNjcmlwdCBTeW1ib2wsIG5vIG9yZGVyaW5nLlxuICAgICAgICBpZihhICE9PSBiKSB7XG4gICAgICAgICAgaWYgKCF0b3RhbCkgcmV0dXJuIE5hTjtcbiAgICAgICAgICByZXR1cm4gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTI1MjogLy8gb2NhbWwgc3RyaW5nc1xuICAgICAgICB2YXIgYSA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcoYSk7XG4gICAgICAgIHZhciBiID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhiKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjUyMDogLy8gamF2YXNjcmlwdCBzdHJpbmdzXG4gICAgICAgIHZhciBhID0gYS50b1N0cmluZygpO1xuICAgICAgICB2YXIgYiA9IGIudG9TdHJpbmcoKTtcbiAgICAgICAgaWYoYSAhPT0gYikge1xuICAgICAgICAgIGlmKGEgPCBiKSByZXR1cm4gLTE7XG4gICAgICAgICAgaWYoYSA+IGIpIHJldHVybiAxO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDY6IC8vIExhenlfdGFnXG4gICAgICBjYXNlIDI1NDogLy8gRG91YmxlX2FycmF5XG4gICAgICBkZWZhdWx0OiAvLyBCbG9jayB3aXRoIG90aGVyIHRhZ1xuICAgICAgICBpZihjYW1sX2lzX2NvbnRpbnVhdGlvbl90YWcodGFnX2EpKSB7XG4gICAgICAgICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY29tcGFyZTogY29udGludWF0aW9uIHZhbHVlXCIpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGlmIChhLmxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIChhLmxlbmd0aCA8IGIubGVuZ3RoKT8tMToxO1xuICAgICAgICBpZiAoYS5sZW5ndGggPiAxKSBzdGFjay5wdXNoKGEsIGIsIDEpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHN0YWNrLmxlbmd0aCA9PSAwKSByZXR1cm4gMDtcbiAgICB2YXIgaSA9IHN0YWNrLnBvcCgpO1xuICAgIGIgPSBzdGFjay5wb3AoKTtcbiAgICBhID0gc3RhY2sucG9wKCk7XG4gICAgaWYgKGkgKyAxIDwgYS5sZW5ndGgpIHN0YWNrLnB1c2goYSwgYiwgaSArIDEpO1xuICAgIGEgPSBhW2ldO1xuICAgIGIgPSBiW2ldO1xuICB9XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2NvbXBhcmUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfY29tcGFyZSAoYSwgYikgeyByZXR1cm4gY2FtbF9jb21wYXJlX3ZhbCAoYSwgYiwgdHJ1ZSk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfaW50X2NvbXBhcmUgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuZnVuY3Rpb24gY2FtbF9pbnRfY29tcGFyZSAoYSwgYikge1xuICBpZiAoYSA8IGIpIHJldHVybiAoLTEpOyBpZiAoYSA9PSBiKSByZXR1cm4gMDsgcmV0dXJuIDE7XG59XG4vL1Byb3ZpZGVzOiBjYW1sX2VxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpID09IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX25vdGVxdWFsIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbm90ZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpICE9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2dyZWF0ZXJlcXVhbCBtdXRhYmxlIChjb25zdCwgY29uc3QpXG4vL1JlcXVpcmVzOiBjYW1sX2NvbXBhcmVfdmFsXG5mdW5jdGlvbiBjYW1sX2dyZWF0ZXJlcXVhbCAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPj0gMCk7IH1cbi8vUHJvdmlkZXM6IGNhbWxfZ3JlYXRlcnRoYW4gbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9ncmVhdGVydGhhbiAoeCwgeSkgeyByZXR1cm4gKyhjYW1sX2NvbXBhcmVfdmFsKHgseSxmYWxzZSkgPiAwKTsgfVxuLy9Qcm92aWRlczogY2FtbF9sZXNzZXF1YWwgbXV0YWJsZSAoY29uc3QsIGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9jb21wYXJlX3ZhbFxuZnVuY3Rpb24gY2FtbF9sZXNzZXF1YWwgKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDw9IDApOyB9XG4vL1Byb3ZpZGVzOiBjYW1sX2xlc3N0aGFuIG11dGFibGUgKGNvbnN0LCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfY29tcGFyZV92YWxcbmZ1bmN0aW9uIGNhbWxfbGVzc3RoYW4gKHgsIHkpIHsgcmV0dXJuICsoY2FtbF9jb21wYXJlX3ZhbCh4LHksZmFsc2UpIDwgMCk7IH1cbiIsIi8vIEpzX29mX29jYW1sIGxpYnJhcnlcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbi8vIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBKc2xpYjogY29kZSBzcGVjaWZpYyB0byBKc19vZl9vY2FtbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2pzX29uX2llIGNvbnN0XG5mdW5jdGlvbiBjYW1sX2pzX29uX2llICgpIHtcbiAgdmFyIHVhID1cbiAgICAgIChnbG9iYWxUaGlzLm5hdmlnYXRvciYmZ2xvYmFsVGhpcy5uYXZpZ2F0b3IudXNlckFnZW50KVxuICAgICAgP2dsb2JhbFRoaXMubmF2aWdhdG9yLnVzZXJBZ2VudDpcIlwiO1xuICByZXR1cm4gdWEuaW5kZXhPZihcIk1TSUVcIikgIT0gLTEgJiYgdWEuaW5kZXhPZihcIk9wZXJhXCIpICE9IDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfaHRtbF9lc2NhcGUgY29uc3QgKGNvbnN0KVxudmFyIGNhbWxfanNfcmVnZXhwcyA9IHsgYW1wOi8mL2csIGx0Oi88L2csIHF1b3Q6L1xcXCIvZywgYWxsOi9bJjxcXFwiXS8gfTtcbmZ1bmN0aW9uIGNhbWxfanNfaHRtbF9lc2NhcGUgKHMpIHtcbiAgaWYgKCFjYW1sX2pzX3JlZ2V4cHMuYWxsLnRlc3QocykpIHJldHVybiBzO1xuICByZXR1cm4gcy5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5hbXAsIFwiJmFtcDtcIilcbiAgICAucmVwbGFjZShjYW1sX2pzX3JlZ2V4cHMubHQsIFwiJmx0O1wiKVxuICAgIC5yZXBsYWNlKGNhbWxfanNfcmVnZXhwcy5xdW90LCBcIiZxdW90O1wiKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19odG1sX2VudGl0aWVzXG4vL1JlcXVpcmVzOiBjYW1sX2ZhaWx3aXRoXG5mdW5jdGlvbiBjYW1sX2pzX2h0bWxfZW50aXRpZXMocykge1xuICB2YXIgZW50aXR5ID0gL14mIz9bMC05YS16QS1aXSs7JC9cbiAgaWYocy5tYXRjaChlbnRpdHkpKVxuICB7XG4gICAgdmFyIHN0ciwgdGVtcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3AnKTtcbiAgICB0ZW1wLmlubmVySFRNTD0gcztcbiAgICBzdHI9IHRlbXAudGV4dENvbnRlbnQgfHwgdGVtcC5pbm5lclRleHQ7XG4gICAgdGVtcD1udWxsO1xuICAgIHJldHVybiBzdHI7XG4gIH1cbiAgZWxzZSB7XG4gICAgY2FtbF9mYWlsd2l0aChcIkludmFsaWQgZW50aXR5IFwiICsgcyk7XG4gIH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9qc19nZXRfY29uc29sZSBjb25zdFxuZnVuY3Rpb24gY2FtbF9qc19nZXRfY29uc29sZSAoKSB7XG4gIHZhciBjID0gY29uc29sZTtcbiAgdmFyIG0gPSBbXCJsb2dcIiwgXCJkZWJ1Z1wiLCBcImluZm9cIiwgXCJ3YXJuXCIsIFwiZXJyb3JcIiwgXCJhc3NlcnRcIiwgXCJkaXJcIiwgXCJkaXJ4bWxcIixcbiAgICAgICAgICAgXCJ0cmFjZVwiLCBcImdyb3VwXCIsIFwiZ3JvdXBDb2xsYXBzZWRcIiwgXCJncm91cEVuZFwiLCBcInRpbWVcIiwgXCJ0aW1lRW5kXCJdO1xuICBmdW5jdGlvbiBmICgpIHt9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbS5sZW5ndGg7IGkrKykgaWYgKCFjW21baV1dKSBjW21baV1dPWY7XG4gIHJldHVybiBjO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy9XZWFrZGVmXG5mdW5jdGlvbiBjYW1sX3htbGh0dHByZXF1ZXN0X2NyZWF0ZSh1bml0KXtcbiAgaWYodHlwZW9mIGdsb2JhbFRoaXMuWE1MSHR0cFJlcXVlc3QgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLlhNTEh0dHBSZXF1ZXN0IH0gY2F0Y2ggKGUpIHsgfTtcbiAgfVxuICBpZih0eXBlb2YgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0ICE9PSAndW5kZWZpbmVkJykge1xuICAgIHRyeSB7IHJldHVybiBuZXcgZ2xvYmFsVGhpcy5hY3RpdmVYT2JqZWN0KFwiTXN4bWwyLlhNTEhUVFBcIikgfSBjYXRjaChlKXsgfTtcbiAgICB0cnkgeyByZXR1cm4gbmV3IGdsb2JhbFRoaXMuYWN0aXZlWE9iamVjdChcIk1zeG1sMy5YTUxIVFRQXCIpIH0gY2F0Y2goZSl7IH07XG4gICAgdHJ5IHsgcmV0dXJuIG5ldyBnbG9iYWxUaGlzLmFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWE1MSFRUUFwiKSB9IGNhdGNoKGUpeyB9O1xuICB9XG4gIGNhbWxfZmFpbHdpdGgoXCJDYW5ub3QgY3JlYXRlIGEgWE1MSHR0cFJlcXVlc3RcIik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfanNfZXJyb3Jfb2ZfZXhjZXB0aW9uXG5mdW5jdGlvbiBjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvbihleG4pIHtcbiAgaWYoZXhuLmpzX2Vycm9yKSB7IHJldHVybiBleG4uanNfZXJyb3I7IH1cbiAgcmV0dXJuIG51bGw7XG59XG4iLCIvLy8vLy8vLy8gQklHU1RSSU5HXG5cbi8vUHJvdmlkZXM6IGNhbWxfaGFzaF9taXhfYmlnc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2hhc2hfbWl4X2J5dGVzX2FyclxuZnVuY3Rpb24gY2FtbF9oYXNoX21peF9iaWdzdHJpbmcoaCwgYnMpIHtcbiAgcmV0dXJuIGNhbWxfaGFzaF9taXhfYnl0ZXNfYXJyKGgsYnMuZGF0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ190b19hcnJheV9idWZmZXIgbXV0YWJsZVxuZnVuY3Rpb24gYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlcihicykge1xuICByZXR1cm4gYnMuZGF0YS5idWZmZXJcbn1cblxuLy9Qcm92aWRlczogYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5IG11dGFibGVcbmZ1bmN0aW9uIGJpZ3N0cmluZ190b190eXBlZF9hcnJheShicykge1xuICByZXR1cm4gYnMuZGF0YVxufVxuXG4vL1Byb3ZpZGVzOiBiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyIG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfYmFfY3JlYXRlX3Vuc2FmZVxuZnVuY3Rpb24gYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlcihhYikge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShhYik7XG4gIHJldHVybiBjYW1sX2JhX2NyZWF0ZV91bnNhZmUoMTIsIDAsIFt0YS5sZW5ndGhdLCB0YSk7XG59XG5cbi8vUHJvdmlkZXM6IGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheSBtdXRhYmxlXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2NyZWF0ZV91bnNhZmVcbmZ1bmN0aW9uIGJpZ3N0cmluZ19vZl90eXBlZF9hcnJheShiYSkge1xuICB2YXIgdGEgPSBuZXcgVWludDhBcnJheShiYS5idWZmZXIsIGJhLmJ5dGVPZmZzZXQsIGJhLmxlbmd0aCAqIGJhLkJZVEVTX1BFUl9FTEVNRU5UKTtcbiAgcmV0dXJuIGNhbWxfYmFfY3JlYXRlX3Vuc2FmZSgxMiwgMCwgW3RhLmxlbmd0aF0sIHRhKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfbWVtY21wXG4vL1JlcXVpcmVzOiBjYW1sX2JhX2dldF8xXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19tZW1jbXAoczEsIHBvczEsIHMyLCBwb3MyLCBsZW4pe1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgdmFyIGEgPSBjYW1sX2JhX2dldF8xKHMxLHBvczEgKyBpKTtcbiAgICB2YXIgYiA9IGNhbWxfYmFfZ2V0XzEoczIscG9zMiArIGkpO1xuICAgIGlmIChhIDwgYikgcmV0dXJuIC0xO1xuICAgIGlmIChhID4gYikgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYmFcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYShiYTEsIHBvczEsIGJhMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYoMTIgIT0gYmEyLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19iYToga2luZCBtaXNtYXRjaFwiKTtcbiAgaWYobGVuID09IDApIHJldHVybiAwO1xuICB2YXIgb2ZzMSA9IGJhMS5vZmZzZXQocG9zMSk7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYob2ZzMSArIGxlbiA+IGJhMS5kYXRhLmxlbmd0aCl7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zdWJhcnJheShvZnMxLG9mczErbGVuKTtcbiAgYmEyLmRhdGEuc2V0KHNsaWNlLHBvczIpO1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9tbF9zdHJpbmdfbGVuZ3RoXG5mdW5jdGlvbiBjYW1sX2JpZ3N0cmluZ19ibGl0X3N0cmluZ190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfc3RyaW5nX2xlbmd0aChzdHIxKSkge1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICBpZihvZnMyICsgbGVuID4gYmEyLmRhdGEubGVuZ3RoKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIHZhciBzbGljZSA9IGNhbWxfdWludDhfYXJyYXlfb2Zfc3RyaW5nKHN0cjEpLnNsaWNlKHBvczEscG9zMSArIGxlbik7XG4gIGJhMi5kYXRhLnNldChzbGljZSxvZnMyKTtcbiAgcmV0dXJuIDBcbn1cblxuLy9Qcm92aWRlczogY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYVxuLy9SZXF1aXJlczogY2FtbF9pbnZhbGlkX2FyZ3VtZW50LCBjYW1sX2FycmF5X2JvdW5kX2Vycm9yLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9ieXRlc190b19iYShzdHIxLCBwb3MxLCBiYTIsIHBvczIsIGxlbil7XG4gIGlmKDEyICE9IGJhMi5raW5kKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcImNhbWxfYmlnc3RyaW5nX2JsaXRfc3RyaW5nX3RvX2JhOiBraW5kIG1pc21hdGNoXCIpO1xuICBpZihsZW4gPT0gMCkgcmV0dXJuIDA7XG4gIHZhciBvZnMyID0gYmEyLm9mZnNldChwb3MyKTtcbiAgaWYocG9zMSArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKHN0cjEpKSB7XG4gICAgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICB9XG4gIGlmKG9mczIgKyBsZW4gPiBiYTIuZGF0YS5sZW5ndGgpIHtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgdmFyIHNsaWNlID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhzdHIxKS5zbGljZShwb3MxLHBvczEgKyBsZW4pO1xuICBiYTIuZGF0YS5zZXQoc2xpY2Usb2ZzMik7XG4gIHJldHVybiAwXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYmlnc3RyaW5nX2JsaXRfYmFfdG9fYnl0ZXNcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuLy9SZXF1aXJlczogY2FtbF9ibGl0X2J5dGVzLCBjYW1sX2J5dGVzX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX21sX2J5dGVzX2xlbmd0aFxuZnVuY3Rpb24gY2FtbF9iaWdzdHJpbmdfYmxpdF9iYV90b19ieXRlcyhiYTEsIHBvczEsIGJ5dGVzMiwgcG9zMiwgbGVuKXtcbiAgaWYoMTIgIT0gYmExLmtpbmQpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiY2FtbF9iaWdzdHJpbmdfYmxpdF9zdHJpbmdfdG9fYmE6IGtpbmQgbWlzbWF0Y2hcIik7XG4gIGlmKGxlbiA9PSAwKSByZXR1cm4gMDtcbiAgdmFyIG9mczEgPSBiYTEub2Zmc2V0KHBvczEpO1xuICBpZihvZnMxICsgbGVuID4gYmExLmRhdGEubGVuZ3RoKXtcbiAgICBjYW1sX2FycmF5X2JvdW5kX2Vycm9yKCk7XG4gIH1cbiAgaWYocG9zMiArIGxlbiA+IGNhbWxfbWxfYnl0ZXNfbGVuZ3RoKGJ5dGVzMikpe1xuICAgIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgfVxuICB2YXIgc2xpY2UgPSBiYTEuZGF0YS5zbGljZShvZnMxLCBvZnMxK2xlbik7XG4gIGNhbWxfYmxpdF9ieXRlcyhjYW1sX2J5dGVzX29mX2FycmF5KHNsaWNlKSwgMCwgYnl0ZXMyLCBwb3MyLCBsZW4pO1xuICByZXR1cm4gMFxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2NoYW5cbi8vUmVxdWlyZXM6IGNhbWxfc3RyaW5nX29mX2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX3JhaXNlX2VuZF9vZl9maWxlLCBjYW1sX21sX2lucHV0X2Jsb2NrXG4vL1JlcXVpcmVzOiBjYW1sX01ENUluaXQsIGNhbWxfTUQ1VXBkYXRlLCBjYW1sX01ENUZpbmFsXG5mdW5jdGlvbiBjYW1sX21kNV9jaGFuKGNoYW5pZCx0b3JlYWQpe1xuICB2YXIgY3R4ID0gY2FtbF9NRDVJbml0KCk7XG4gIHZhciBidWZmZXIgPSBuZXcgVWludDhBcnJheSg0MDk2KTtcbiAgaWYodG9yZWFkIDwgMCl7XG4gICAgd2hpbGUodHJ1ZSl7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLGJ1ZmZlci5sZW5ndGgpO1xuICAgICAgaWYocmVhZCA9PSAwKSBicmVhaztcbiAgICAgIGNhbWxfTUQ1VXBkYXRlKGN0eCxidWZmZXIuc3ViYXJyYXkoMCwgcmVhZCksIHJlYWQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB3aGlsZSh0b3JlYWQgPiAwKSB7XG4gICAgICB2YXIgcmVhZCA9IGNhbWxfbWxfaW5wdXRfYmxvY2soY2hhbmlkLGJ1ZmZlciwwLCAodG9yZWFkID4gYnVmZmVyLmxlbmd0aCA/IGJ1ZmZlci5sZW5ndGggOiB0b3JlYWQpKTtcbiAgICAgIGlmKHJlYWQgPT0gMCkgY2FtbF9yYWlzZV9lbmRfb2ZfZmlsZSgpO1xuICAgICAgY2FtbF9NRDVVcGRhdGUoY3R4LGJ1ZmZlci5zdWJhcnJheSgwLCByZWFkKSwgcmVhZCk7XG4gICAgICB0b3JlYWQgLT0gcmVhZFxuICAgIH1cbiAgfVxuICByZXR1cm4gY2FtbF9zdHJpbmdfb2ZfYXJyYXkoY2FtbF9NRDVGaW5hbChjdHgpKTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tZDVfc3RyaW5nXG4vL1JlcXVpcmVzOiBjYW1sX2J5dGVzX29mX3N0cmluZywgY2FtbF9tZDVfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbWQ1X3N0cmluZyhzLCBvZnMsIGxlbikge1xuICByZXR1cm4gY2FtbF9tZDVfYnl0ZXMoY2FtbF9ieXRlc19vZl9zdHJpbmcocyksb2ZzLGxlbik7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG52YXIgY2FtbF9NRDVUcmFuc2Zvcm0gPSAoZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBhZGQgKHgsIHkpIHsgcmV0dXJuICh4ICsgeSkgfCAwOyB9XG4gIGZ1bmN0aW9uIHh4KHEsYSxiLHgscyx0KSB7XG4gICAgYSA9IGFkZChhZGQoYSwgcSksIGFkZCh4LCB0KSk7XG4gICAgcmV0dXJuIGFkZCgoYSA8PCBzKSB8IChhID4+PiAoMzIgLSBzKSksIGIpO1xuICB9XG4gIGZ1bmN0aW9uIGZmKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBjKSB8ICgofmIpICYgZCksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGdnKGEsYixjLGQseCxzLHQpIHtcbiAgICByZXR1cm4geHgoKGIgJiBkKSB8IChjICYgKH5kKSksIGEsIGIsIHgsIHMsIHQpO1xuICB9XG4gIGZ1bmN0aW9uIGhoKGEsYixjLGQseCxzLHQpIHsgcmV0dXJuIHh4KGIgXiBjIF4gZCwgYSwgYiwgeCwgcywgdCk7IH1cbiAgZnVuY3Rpb24gaWkoYSxiLGMsZCx4LHMsdCkgeyByZXR1cm4geHgoYyBeIChiIHwgKH5kKSksIGEsIGIsIHgsIHMsIHQpOyB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICh3LCBidWZmZXIpIHtcbiAgICB2YXIgYSA9IHdbMF0sIGIgPSB3WzFdLCBjID0gd1syXSwgZCA9IHdbM107XG5cbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWyAwXSwgNywgMHhENzZBQTQ3OCk7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMV0sIDEyLCAweEU4QzdCNzU2KTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWyAyXSwgMTcsIDB4MjQyMDcwREIpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbIDNdLCAyMiwgMHhDMUJEQ0VFRSk7XG4gICAgYSA9IGZmKGEsIGIsIGMsIGQsIGJ1ZmZlclsgNF0sIDcsIDB4RjU3QzBGQUYpO1xuICAgIGQgPSBmZihkLCBhLCBiLCBjLCBidWZmZXJbIDVdLCAxMiwgMHg0Nzg3QzYyQSk7XG4gICAgYyA9IGZmKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE3LCAweEE4MzA0NjEzKTtcbiAgICBiID0gZmYoYiwgYywgZCwgYSwgYnVmZmVyWyA3XSwgMjIsIDB4RkQ0Njk1MDEpO1xuICAgIGEgPSBmZihhLCBiLCBjLCBkLCBidWZmZXJbIDhdLCA3LCAweDY5ODA5OEQ4KTtcbiAgICBkID0gZmYoZCwgYSwgYiwgYywgYnVmZmVyWyA5XSwgMTIsIDB4OEI0NEY3QUYpO1xuICAgIGMgPSBmZihjLCBkLCBhLCBiLCBidWZmZXJbMTBdLCAxNywgMHhGRkZGNUJCMSk7XG4gICAgYiA9IGZmKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMV0sIDIyLCAweDg5NUNEN0JFKTtcbiAgICBhID0gZmYoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNywgMHg2QjkwMTEyMik7XG4gICAgZCA9IGZmKGQsIGEsIGIsIGMsIGJ1ZmZlclsxM10sIDEyLCAweEZEOTg3MTkzKTtcbiAgICBjID0gZmYoYywgZCwgYSwgYiwgYnVmZmVyWzE0XSwgMTcsIDB4QTY3OTQzOEUpO1xuICAgIGIgPSBmZihiLCBjLCBkLCBhLCBidWZmZXJbMTVdLCAyMiwgMHg0OUI0MDgyMSk7XG5cbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNSwgMHhGNjFFMjU2Mik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNl0sIDksIDB4QzA0MEIzNDApO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNCwgMHgyNjVFNUE1MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMF0sIDIwLCAweEU5QjZDN0FBKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA1XSwgNSwgMHhENjJGMTA1RCk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxMF0sIDksIDB4MDI0NDE0NTMpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNCwgMHhEOEExRTY4MSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNF0sIDIwLCAweEU3RDNGQkM4KTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWyA5XSwgNSwgMHgyMUUxQ0RFNik7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsxNF0sIDksIDB4QzMzNzA3RDYpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDNdLCAxNCwgMHhGNEQ1MEQ4Nyk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOF0sIDIwLCAweDQ1NUExNEVEKTtcbiAgICBhID0gZ2coYSwgYiwgYywgZCwgYnVmZmVyWzEzXSwgNSwgMHhBOUUzRTkwNSk7XG4gICAgZCA9IGdnKGQsIGEsIGIsIGMsIGJ1ZmZlclsgMl0sIDksIDB4RkNFRkEzRjgpO1xuICAgIGMgPSBnZyhjLCBkLCBhLCBiLCBidWZmZXJbIDddLCAxNCwgMHg2NzZGMDJEOSk7XG4gICAgYiA9IGdnKGIsIGMsIGQsIGEsIGJ1ZmZlclsxMl0sIDIwLCAweDhEMkE0QzhBKTtcblxuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDVdLCA0LCAweEZGRkEzOTQyKTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWyA4XSwgMTEsIDB4ODc3MUY2ODEpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTFdLCAxNiwgMHg2RDlENjEyMik7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsxNF0sIDIzLCAweEZERTUzODBDKTtcbiAgICBhID0gaGgoYSwgYiwgYywgZCwgYnVmZmVyWyAxXSwgNCwgMHhBNEJFRUE0NCk7XG4gICAgZCA9IGhoKGQsIGEsIGIsIGMsIGJ1ZmZlclsgNF0sIDExLCAweDRCREVDRkE5KTtcbiAgICBjID0gaGgoYywgZCwgYSwgYiwgYnVmZmVyWyA3XSwgMTYsIDB4RjZCQjRCNjApO1xuICAgIGIgPSBoaChiLCBjLCBkLCBhLCBidWZmZXJbMTBdLCAyMywgMHhCRUJGQkM3MCk7XG4gICAgYSA9IGhoKGEsIGIsIGMsIGQsIGJ1ZmZlclsxM10sIDQsIDB4Mjg5QjdFQzYpO1xuICAgIGQgPSBoaChkLCBhLCBiLCBjLCBidWZmZXJbIDBdLCAxMSwgMHhFQUExMjdGQSk7XG4gICAgYyA9IGhoKGMsIGQsIGEsIGIsIGJ1ZmZlclsgM10sIDE2LCAweEQ0RUYzMDg1KTtcbiAgICBiID0gaGgoYiwgYywgZCwgYSwgYnVmZmVyWyA2XSwgMjMsIDB4MDQ4ODFEMDUpO1xuICAgIGEgPSBoaChhLCBiLCBjLCBkLCBidWZmZXJbIDldLCA0LCAweEQ5RDREMDM5KTtcbiAgICBkID0gaGgoZCwgYSwgYiwgYywgYnVmZmVyWzEyXSwgMTEsIDB4RTZEQjk5RTUpO1xuICAgIGMgPSBoaChjLCBkLCBhLCBiLCBidWZmZXJbMTVdLCAxNiwgMHgxRkEyN0NGOCk7XG4gICAgYiA9IGhoKGIsIGMsIGQsIGEsIGJ1ZmZlclsgMl0sIDIzLCAweEM0QUM1NjY1KTtcblxuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDBdLCA2LCAweEY0MjkyMjQ0KTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWyA3XSwgMTAsIDB4NDMyQUZGOTcpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbMTRdLCAxNSwgMHhBQjk0MjNBNyk7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgNV0sIDIxLCAweEZDOTNBMDM5KTtcbiAgICBhID0gaWkoYSwgYiwgYywgZCwgYnVmZmVyWzEyXSwgNiwgMHg2NTVCNTlDMyk7XG4gICAgZCA9IGlpKGQsIGEsIGIsIGMsIGJ1ZmZlclsgM10sIDEwLCAweDhGMENDQzkyKTtcbiAgICBjID0gaWkoYywgZCwgYSwgYiwgYnVmZmVyWzEwXSwgMTUsIDB4RkZFRkY0N0QpO1xuICAgIGIgPSBpaShiLCBjLCBkLCBhLCBidWZmZXJbIDFdLCAyMSwgMHg4NTg0NUREMSk7XG4gICAgYSA9IGlpKGEsIGIsIGMsIGQsIGJ1ZmZlclsgOF0sIDYsIDB4NkZBODdFNEYpO1xuICAgIGQgPSBpaShkLCBhLCBiLCBjLCBidWZmZXJbMTVdLCAxMCwgMHhGRTJDRTZFMCk7XG4gICAgYyA9IGlpKGMsIGQsIGEsIGIsIGJ1ZmZlclsgNl0sIDE1LCAweEEzMDE0MzE0KTtcbiAgICBiID0gaWkoYiwgYywgZCwgYSwgYnVmZmVyWzEzXSwgMjEsIDB4NEUwODExQTEpO1xuICAgIGEgPSBpaShhLCBiLCBjLCBkLCBidWZmZXJbIDRdLCA2LCAweEY3NTM3RTgyKTtcbiAgICBkID0gaWkoZCwgYSwgYiwgYywgYnVmZmVyWzExXSwgMTAsIDB4QkQzQUYyMzUpO1xuICAgIGMgPSBpaShjLCBkLCBhLCBiLCBidWZmZXJbIDJdLCAxNSwgMHgyQUQ3RDJCQik7XG4gICAgYiA9IGlpKGIsIGMsIGQsIGEsIGJ1ZmZlclsgOV0sIDIxLCAweEVCODZEMzkxKTtcblxuICAgIHdbMF0gPSBhZGQoYSwgd1swXSk7XG4gICAgd1sxXSA9IGFkZChiLCB3WzFdKTtcbiAgICB3WzJdID0gYWRkKGMsIHdbMl0pO1xuICAgIHdbM10gPSBhZGQoZCwgd1szXSk7XG4gIH19KSgpXG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1SW5pdFxuZnVuY3Rpb24gY2FtbF9NRDVJbml0KCkge1xuICB2YXIgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKDY0KTtcbiAgdmFyIGIzMiA9IG5ldyBVaW50MzJBcnJheShidWZmZXIpO1xuICB2YXIgYjggPSBuZXcgVWludDhBcnJheShidWZmZXIpO1xuICByZXR1cm4ge2xlbjowLFxuICAgICAgICAgIHc6bmV3IFVpbnQzMkFycmF5KFsweDY3NDUyMzAxLCAweEVGQ0RBQjg5LCAweDk4QkFEQ0ZFLCAweDEwMzI1NDc2XSksXG4gICAgICAgICAgYjMyOmIzMixcbiAgICAgICAgICBiODpiOH1cbn1cblxuLy9Qcm92aWRlczogY2FtbF9NRDVVcGRhdGVcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENVVwZGF0ZShjdHgsIGlucHV0LCBpbnB1dF9sZW4pe1xuICB2YXIgaW5fYnVmID0gY3R4LmxlbiAmIDB4M2Y7XG4gIHZhciBpbnB1dF9wb3MgPSAwO1xuICBjdHgubGVuICs9IGlucHV0X2xlbjtcbiAgaWYoaW5fYnVmKXtcbiAgICB2YXIgbWlzc2luZyA9IDY0IC0gaW5fYnVmO1xuICAgIGlmKGlucHV0X2xlbiA8IG1pc3NpbmcpIHtcbiAgICAgIGN0eC5iOC5zZXQoaW5wdXQuc3ViYXJyYXkoMCxpbnB1dF9sZW4pLGluX2J1Zik7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheSgwLG1pc3NpbmcpLGluX2J1Zik7XG4gICAgY2FtbF9NRDVUcmFuc2Zvcm0oY3R4LncsIGN0eC5iMzIpO1xuICAgIGlucHV0X2xlbiAtPSBtaXNzaW5nO1xuICAgIGlucHV0X3BvcyArPSBtaXNzaW5nO1xuICB9XG4gIHdoaWxlKGlucHV0X2xlbiA+PSA2NCl7XG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgNjQpLCAwKTtcbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgaW5wdXRfbGVuIC09IDY0O1xuICAgIGlucHV0X3BvcyArPSA2NDtcbiAgfVxuICBpZihpbnB1dF9sZW4pXG4gICAgY3R4LmI4LnNldChpbnB1dC5zdWJhcnJheShpbnB1dF9wb3MsaW5wdXRfcG9zICsgaW5wdXRfbGVuKSwgMCk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfTUQ1RmluYWxcbi8vUmVxdWlyZXM6IGNhbWxfTUQ1VHJhbnNmb3JtXG5mdW5jdGlvbiBjYW1sX01ENUZpbmFsKGN0eCl7XG4gIHZhciBpbl9idWYgPSBjdHgubGVuICYgMHgzZjtcbiAgY3R4LmI4W2luX2J1Zl0gPSAweDgwO1xuICBpbl9idWYgKys7XG4gIGlmKGluX2J1ZiA+IDU2KSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNjQ7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gICAgZm9yKHZhciBqID0gMDsgaiA8IDU2OyBqKyspe1xuICAgICAgY3R4LmI4W2pdID0gMDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgZm9yKHZhciBqID0gaW5fYnVmOyBqIDwgNTY7IGorKyl7XG4gICAgICBjdHguYjhbal0gPSAwO1xuICAgIH1cbiAgfVxuICBjdHguYjMyWzE0XSA9IGN0eC5sZW4gPDwgMztcbiAgY3R4LmIzMlsxNV0gPSAoY3R4LmxlbiA+PiAyOSkgJiAweDFGRkZGRkZGO1xuICBjYW1sX01ENVRyYW5zZm9ybShjdHgudywgY3R4LmIzMik7XG4gIHZhciB0ID0gbmV3IFVpbnQ4QXJyYXkoMTYpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IDQ7IGkrKylcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IDQ7IGorKylcbiAgICAgIHRbaSAqIDQgKyBqXSA9IChjdHgud1tpXSA+PiAoOCAqIGopKSAmIDB4RkY7XG4gIHJldHVybiB0O1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWQ1X2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzLCBjYW1sX3N0cmluZ19vZl9hcnJheVxuLy9SZXF1aXJlczogY2FtbF9NRDVJbml0LCBjYW1sX01ENVVwZGF0ZSwgY2FtbF9NRDVGaW5hbFxuZnVuY3Rpb24gY2FtbF9tZDVfYnl0ZXMocywgb2ZzLCBsZW4pIHtcbiAgdmFyIGN0eCA9IGNhbWxfTUQ1SW5pdCgpO1xuICB2YXIgYSA9IGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXMocyk7XG4gIGNhbWxfTUQ1VXBkYXRlKGN0eCxhLnN1YmFycmF5KG9mcywgb2ZzICsgbGVuKSwgbGVuKTtcbiAgcmV0dXJuIGNhbWxfc3RyaW5nX29mX2FycmF5KGNhbWxfTUQ1RmluYWwoY3R4KSk7XG59XG4iLCIvLyBKc19vZl9vY2FtbCBydW50aW1lIHN1cHBvcnRcbi8vIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4vLyBDb3B5cmlnaHQgKEMpIDIwMjAgLSBIdWdvIEhldXphcmRcbi8vIENvcHlyaWdodCAoQykgMjAyMCAtIFNoYWNoYXIgSXR6aGFreVxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL29jYW1sL29jYW1sL2Jsb2IvNC4wNy9vdGhlcmxpYnMvc3RyL3N0cnN0dWJzLmNcbi8vIENvcGllZCBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9qc2NvcS9qc2NvcS9ibG9iL3Y4LjExL2NvcS1qcy9qc19zdHViL3N0ci5qc1xuXG4vL1Byb3ZpZGVzOiByZV9tYXRjaFxuLy9SZXF1aXJlczogY2FtbF9qc2J5dGVzX29mX3N0cmluZywgY2FtbF9qc19mcm9tX2FycmF5LCBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZ1xuLy9SZXF1aXJlczogY2FtbF9zdHJpbmdfZ2V0XG5cbnZhciByZV9tYXRjaCA9IGZ1bmN0aW9uKCl7XG4gIHZhciByZV93b3JkX2xldHRlcnMgPSBbXG4gICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgICAgICAgLyogMHgwMC0weDFGOiBub25lICovXG4gICAgMHgwMCwgMHgwMCwgMHhGRiwgMHgwMywgICAgICAgLyogMHgyMC0weDNGOiBkaWdpdHMgMC05ICovXG4gICAgMHhGRSwgMHhGRiwgMHhGRiwgMHg4NywgICAgICAgLyogMHg0MC0weDVGOiBBIHRvIFosIF8gKi9cbiAgICAweEZFLCAweEZGLCAweEZGLCAweDA3LCAgICAgICAvKiAweDYwLTB4N0Y6IGEgdG8geiAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4ODAtMHg5Rjogbm9uZSAqL1xuICAgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsICAgICAgIC8qIDB4QTAtMHhCRjogbm9uZSAqL1xuICAgIDB4RkYsIDB4RkYsIDB4N0YsIDB4RkYsICAgICAgIC8qIDB4QzAtMHhERjogTGF0aW4tMSBhY2NlbnRlZCB1cHBlcmNhc2UgKi9cbiAgICAweEZGLCAweEZGLCAweDdGLCAweEZGICAgICAgICAvKiAweEUwLTB4RkY6IExhdGluLTEgYWNjZW50ZWQgbG93ZXJjYXNlICovXG4gIF07XG5cbiAgdmFyIG9wY29kZXMgPSB7XG4gICAgQ0hBUjogMCwgQ0hBUk5PUk06IDEsIFNUUklORzogMiwgU1RSSU5HTk9STTogMywgQ0hBUkNMQVNTOiA0LFxuICAgIEJPTDogNSwgRU9MOiA2LCBXT1JEQk9VTkRBUlk6IDcsXG4gICAgQkVHR1JPVVA6IDgsIEVOREdST1VQOiA5LCBSRUZHUk9VUDogMTAsXG4gICAgQUNDRVBUOiAxMSxcbiAgICBTSU1QTEVPUFQ6IDEyLCBTSU1QTEVTVEFSOiAxMywgU0lNUExFUExVUzogMTQsXG4gICAgR09UTzogMTUsIFBVU0hCQUNLOiAxNiwgU0VUTUFSSzogMTcsXG4gICAgQ0hFQ0tQUk9HUkVTUzogMThcbiAgfTtcblxuICBmdW5jdGlvbiBpc193b3JkX2xldHRlcihjKSB7XG4gICAgcmV0dXJuIChyZV93b3JkX2xldHRlcnNbICAoYyA+PiAzKV0gPj4gKGMgJiA3KSkgJiAxO1xuICB9XG5cbiAgZnVuY3Rpb24gaW5fYml0c2V0KHMsaSkge1xuICAgIHJldHVybiAoY2FtbF9zdHJpbmdfZ2V0KHMsKGkgPj4gMykpID4+IChpICYgNykpICYgMTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlX21hdGNoX2ltcGwocmUsIHMsIHBvcywgcGFydGlhbCkge1xuXG4gICAgdmFyIHByb2cgICAgICAgICAgPSBjYW1sX2pzX2Zyb21fYXJyYXkocmVbMV0pLFxuICAgICAgICBjcG9vbCAgICAgICAgID0gY2FtbF9qc19mcm9tX2FycmF5KHJlWzJdKSxcbiAgICAgICAgbm9ybXRhYmxlICAgICA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocmVbM10pLFxuICAgICAgICBudW1ncm91cHMgICAgID0gcmVbNF0gfCAwLFxuICAgICAgICBudW1yZWdpc3RlcnMgID0gcmVbNV0gfCAwLFxuICAgICAgICBzdGFydGNoYXJzICAgID0gcmVbNl0gfCAwO1xuXG4gICAgdmFyIHMgPSBjYW1sX3VpbnQ4X2FycmF5X29mX3N0cmluZyhzKTtcblxuICAgIHZhciBwYyA9IDAsXG4gICAgICAgIHF1aXQgPSBmYWxzZSxcbiAgICAgICAgc3RhY2sgPSBbXSxcbiAgICAgICAgZ3JvdXBzID0gbmV3IEFycmF5KG51bWdyb3VwcyksXG4gICAgICAgIHJlX3JlZ2lzdGVyID0gbmV3IEFycmF5KG51bXJlZ2lzdGVycyk7XG5cbiAgICBmb3IodmFyIGkgPSAwOyBpIDwgZ3JvdXBzLmxlbmd0aDsgaSsrKXtcbiAgICAgIGdyb3Vwc1tpXSA9IHtzdGFydDogLTEsIGVuZDotMX1cbiAgICB9XG4gICAgZ3JvdXBzWzBdLnN0YXJ0ID0gcG9zO1xuXG4gICAgdmFyIGJhY2t0cmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHdoaWxlIChzdGFjay5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGl0ZW0gPSBzdGFjay5wb3AoKTtcbiAgICAgICAgaWYgKGl0ZW0udW5kbykge1xuICAgICAgICAgIGl0ZW0udW5kby5vYmpbaXRlbS51bmRvLnByb3BdID0gaXRlbS51bmRvLnZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYoaXRlbS5wb3MpIHtcbiAgICAgICAgICBwYyA9IGl0ZW0ucG9zLnBjO1xuICAgICAgICAgIHBvcyA9IGl0ZW0ucG9zLnR4dDtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHF1aXQgPSB0cnVlO1xuICAgIH07XG5cbiAgICB2YXIgcHVzaCA9IGZ1bmN0aW9uKGl0ZW0pIHsgc3RhY2sucHVzaChpdGVtKTsgfTtcblxuICAgIHZhciBhY2NlcHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBncm91cHNbMF0uZW5kID0gcG9zO1xuICAgICAgdmFyIHJlc3VsdCA9IG5ldyBBcnJheSgxICsgZ3JvdXBzLmxlbmd0aCoyKTtcbiAgICAgIHJlc3VsdFswXSA9IDA7IC8vIHRhZ1xuICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGdyb3Vwcy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIHZhciBnID0gZ3JvdXBzW2ldO1xuICAgICAgICBpZihnLnN0YXJ0IDwgMCB8fCBnLmVuZCA8IDApIHtcbiAgICAgICAgICBnLnN0YXJ0ID0gZy5lbmQgPSAtMTtcbiAgICAgICAgfVxuICAgICAgICByZXN1bHRbMippICsgMSBdID0gZy5zdGFydDtcbiAgICAgICAgcmVzdWx0WzIqaSArIDEgKyAxIF0gPSBnLmVuZDtcbiAgICAgIH07XG4gICAgICByZXR1cm4gcmVzdWx0XG4gICAgfTtcblxuICAgIHZhciBwcmVmaXhfbWF0Y2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgICBpZihwYXJ0aWFsKSByZXR1cm4gYWNjZXB0ICgpO1xuICAgICAgZWxzZSBiYWNrdHJhY2sgKCk7XG4gICAgfVxuXG4gICAgLyogTWFpbiBERkEgaW50ZXJwcmV0ZXIgbG9vcCAqL1xuICAgIHdoaWxlICghcXVpdCkge1xuICAgICAgdmFyIG9wID0gcHJvZ1twY10gJiAweGZmLFxuICAgICAgICAgIHNhcmcgPSBwcm9nW3BjXSA+PiA4LFxuICAgICAgICAgIHVhcmcgPSBzYXJnICYgMHhmZixcbiAgICAgICAgICBjID0gc1twb3NdLFxuICAgICAgICAgIGdyb3VwO1xuXG4gICAgICBwYysrO1xuXG4gICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICBjYXNlIG9wY29kZXMuQ0hBUjpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoYyA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJOT1JNOlxuICAgICAgICBpZihwb3MgPT09IHMubGVuZ3RoKSB7cHJlZml4X21hdGNoICgpOyBicmVha307XG4gICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gdWFyZykgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNUUklORzpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChjID09PSBhcmcuY2hhckNvZGVBdChpKSlcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICBlbHNlIHsgYmFja3RyYWNrKCk7IGJyZWFrOyB9XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU1RSSU5HTk9STTpcbiAgICAgICAgZm9yICh2YXIgYXJnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhjcG9vbFt1YXJnXSksIGkgPSAwOyBpIDwgYXJnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICAgIGlmIChub3JtdGFibGUuY2hhckNvZGVBdChjKSA9PT0gYXJnLmNoYXJDb2RlQXQoaSkpXG4gICAgICAgICAgICBjID0gc1srK3Bvc107XG4gICAgICAgICAgZWxzZSB7IGJhY2t0cmFjaygpOyBicmVhazsgfVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIQVJDTEFTUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGVsc2UgYmFja3RyYWNrKCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJPTDpcbiAgICAgICAgaWYocG9zID4gMCAmJiBzW3BvcyAtIDFdICE9IDEwIC8qIFxcbiAqLykge2JhY2t0cmFjaygpfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5FT0w6XG4gICAgICAgIGlmKHBvcyA8IHMubGVuZ3RoICYmIHNbcG9zXSAhPSAxMCAvKiBcXG4gKi8pIHtiYWNrdHJhY2soKX1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuV09SREJPVU5EQVJZOlxuICAgICAgICBpZihwb3MgPT0gMCkge1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihpc193b3JkX2xldHRlcihzWzBdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAocG9zID09PSBzLmxlbmd0aCkge1xuICAgICAgICAgIGlmKGlzX3dvcmRfbGV0dGVyKHNbcG9zIC0gMV0pKSBicmVhaztcbiAgICAgICAgICBiYWNrdHJhY2sgKCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYoaXNfd29yZF9sZXR0ZXIoc1twb3MgLSAxXSkgIT0gaXNfd29yZF9sZXR0ZXIoc1twb3NdKSkgYnJlYWs7XG4gICAgICAgICAgYmFja3RyYWNrICgpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkJFR0dST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajpncm91cCxcbiAgICAgICAgICAgICAgICAgICAgIHByb3A6J3N0YXJ0JyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBncm91cC5zdGFydH19KTtcbiAgICAgICAgZ3JvdXAuc3RhcnQgPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkVOREdST1VQOlxuICAgICAgICBncm91cCA9IGdyb3Vwc1t1YXJnXTtcbiAgICAgICAgcHVzaCh7dW5kbzoge29iajogZ3JvdXAsXG4gICAgICAgICAgICAgICAgICAgICBwcm9wOidlbmQnLFxuICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGdyb3VwLmVuZH19KTtcbiAgICAgICAgZ3JvdXAuZW5kID0gcG9zO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5SRUZHUk9VUDpcbiAgICAgICAgZ3JvdXAgPSBncm91cHNbdWFyZ107XG4gICAgICAgIGlmKGdyb3VwLnN0YXJ0IDwgMCB8fCBncm91cC5lbmQgPCAwKSB7YmFja3RyYWNrICgpOyBicmVha31cbiAgICAgICAgZm9yICh2YXIgaSA9IGdyb3VwLnN0YXJ0OyBpIDwgZ3JvdXAuZW5kOyBpKyspe1xuICAgICAgICAgIGlmKHBvcyA9PT0gcy5sZW5ndGgpIHtwcmVmaXhfbWF0Y2ggKCk7IGJyZWFrfTtcbiAgICAgICAgICBpZihzW2ldICE9IHNbcG9zXSkge2JhY2t0cmFjayAoKTsgYnJlYWt9XG4gICAgICAgICAgcG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFT1BUOlxuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkgcG9zKys7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLlNJTVBMRVNUQVI6XG4gICAgICAgIHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKVxuICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuU0lNUExFUExVUzpcbiAgICAgICAgaWYocG9zID09PSBzLmxlbmd0aCkge3ByZWZpeF9tYXRjaCAoKTsgYnJlYWt9O1xuICAgICAgICBpZiAoaW5fYml0c2V0KGNwb29sW3VhcmddLCBjKSkge1xuICAgICAgICAgIGRvIHtcbiAgICAgICAgICAgIGMgPSBzWysrcG9zXTtcbiAgICAgICAgICB9IHdoaWxlIChpbl9iaXRzZXQoY3Bvb2xbdWFyZ10sIGMpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGJhY2t0cmFjaygpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5BQ0NFUFQ6XG4gICAgICAgIHJldHVybiBhY2NlcHQoKTtcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5HT1RPOlxuICAgICAgICBwYyA9IHBjICsgc2FyZztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIG9wY29kZXMuUFVTSEJBQ0s6XG4gICAgICAgIHB1c2goe3Bvczoge3BjOiBwYyArIHNhcmcsIHR4dDogcG9zfX0pO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ugb3Bjb2Rlcy5TRVRNQVJLOlxuICAgICAgICBwdXNoKHt1bmRvOiB7b2JqOnJlX3JlZ2lzdGVyLFxuICAgICAgICAgICAgICAgICAgICAgcHJvcDogdWFyZyxcbiAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiByZV9yZWdpc3Rlclt1YXJnXX19KTtcbiAgICAgICAgcmVfcmVnaXN0ZXJbdWFyZ10gPSBwb3M7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBvcGNvZGVzLkNIRUNLUFJPR1JFU1M6XG4gICAgICAgIGlmIChyZV9yZWdpc3Rlclt1YXJnXSA9PT0gcG9zKSBiYWNrdHJhY2soKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OiB0aHJvdyBuZXcgRXJyb3IoXCJJbnZhbGlkIGJ5dGVjb2RlXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiByZV9tYXRjaF9pbXBsO1xufSgpO1xuXG5cbi8vUHJvdmlkZXM6IHJlX3NlYXJjaF9mb3J3YXJkXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3NlYXJjaF9mb3J3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9mb3J3YXJkXCIpXG4gIHdoaWxlIChwb3MgPD0gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKSB7XG4gICAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICAgIGlmIChyZXMpIHJldHVybiByZXM7XG4gICAgcG9zKys7XG4gIH1cblxuICByZXR1cm4gWzBdOyAgLyogW3x8XSA6IGludCBhcnJheSAqL1xufVxuXG4vL1Byb3ZpZGVzOiByZV9zZWFyY2hfYmFja3dhcmRcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfc2VhcmNoX2JhY2t3YXJkKHJlLCBzLCBwb3MpIHtcbiAgaWYocG9zIDwgMCB8fCBwb3MgPiBjYW1sX21sX3N0cmluZ19sZW5ndGgocykpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50KFwiU3RyLnNlYXJjaF9iYWNrd2FyZFwiKVxuICB3aGlsZSAocG9zID49IDApIHtcbiAgICB2YXIgcmVzID0gcmVfbWF0Y2gocmUsIHMsIHBvcywgMCk7XG4gICAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgICBwb3MtLTtcbiAgfVxuXG4gIHJldHVybiBbMF07ICAvKiBbfHxdIDogaW50IGFycmF5ICovXG59XG5cblxuLy9Qcm92aWRlczogcmVfc3RyaW5nX21hdGNoXG4vL1JlcXVpcmVzOiByZV9tYXRjaCwgY2FtbF9tbF9zdHJpbmdfbGVuZ3RoLCBjYW1sX2ludmFsaWRfYXJndW1lbnRcbmZ1bmN0aW9uIHJlX3N0cmluZ19tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5zdHJpbmdfbWF0Y2hcIilcbiAgdmFyIHJlcyA9IHJlX21hdGNoKHJlLCBzLCBwb3MsIDApO1xuICBpZiAocmVzKSByZXR1cm4gcmVzO1xuICBlbHNlIHJldHVybiBbMF07XG59XG5cbi8vUHJvdmlkZXM6IHJlX3BhcnRpYWxfbWF0Y2hcbi8vUmVxdWlyZXM6IHJlX21hdGNoLCBjYW1sX21sX3N0cmluZ19sZW5ndGgsIGNhbWxfaW52YWxpZF9hcmd1bWVudFxuZnVuY3Rpb24gcmVfcGFydGlhbF9tYXRjaChyZSxzLHBvcyl7XG4gIGlmKHBvcyA8IDAgfHwgcG9zID4gY2FtbF9tbF9zdHJpbmdfbGVuZ3RoKHMpKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudChcIlN0ci5wYXJ0aWFsX21hdGNoXCIpXG4gIHZhciByZXMgPSByZV9tYXRjaChyZSwgcywgcG9zLCAxKTtcbiAgaWYgKHJlcykgcmV0dXJuIHJlcztcbiAgZWxzZSByZXR1cm4gWzBdO1xufVxuXG4vL1Byb3ZpZGVzOiByZV9yZXBsYWNlbWVudF90ZXh0XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3N0cmluZ19vZl9qc2J5dGVzXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2dldFxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aFxuLy8gZXh0ZXJuYWwgcmVfcmVwbGFjZW1lbnRfdGV4dDogc3RyaW5nIC0+IGludCBhcnJheSAtPiBzdHJpbmcgLT4gc3RyaW5nXG5mdW5jdGlvbiByZV9yZXBsYWNlbWVudF90ZXh0KHJlcGwsZ3JvdXBzLG9yaWcpIHtcbiAgdmFyIHJlcGwgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHJlcGwpO1xuICB2YXIgbGVuID0gcmVwbC5sZW5ndGg7XG4gIHZhciBvcmlnID0gY2FtbF9qc2J5dGVzX29mX3N0cmluZyhvcmlnKTtcbiAgdmFyIHJlcyA9IFwiXCI7IC8vcmVzdWx0XG4gIHZhciBuID0gMDsgLy8gY3VycmVudCBwb3NpdGlvblxuICB2YXIgY3VyOyAvL2N1cnJlbnQgY2hhclxuICB2YXIgc3RhcnQsIGVuZCwgYztcbiAgd2hpbGUobiA8IGxlbil7XG4gICAgY3VyID0gcmVwbC5jaGFyQXQobisrKTtcbiAgICBpZihjdXIgIT0gJ1xcXFwnKXtcbiAgICAgIHJlcyArPSBjdXI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgaWYobiA9PSBsZW4pIGNhbWxfZmFpbHdpdGgoXCJTdHIucmVwbGFjZTogaWxsZWdhbCBiYWNrc2xhc2ggc2VxdWVuY2VcIik7XG4gICAgICBjdXIgPSByZXBsLmNoYXJBdChuKyspO1xuICAgICAgc3dpdGNoKGN1cil7XG4gICAgICBjYXNlICdcXFxcJzpcbiAgICAgICAgcmVzICs9IGN1cjtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzogY2FzZSAnNCc6XG4gICAgICBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6XG4gICAgICAgIGMgPSArY3VyO1xuICAgICAgICBpZiAoYyoyID49IGdyb3Vwcy5sZW5ndGggLSAxIClcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIiApO1xuICAgICAgICBzdGFydCA9IGNhbWxfYXJyYXlfZ2V0KGdyb3VwcyxjKjIpO1xuICAgICAgICBlbmQgPSBjYW1sX2FycmF5X2dldChncm91cHMsIGMqMiArMSk7XG4gICAgICAgIGlmIChzdGFydCA9PSAtMSlcbiAgICAgICAgICBjYW1sX2ZhaWx3aXRoKFwiU3RyLnJlcGxhY2U6IHJlZmVyZW5jZSB0byB1bm1hdGNoZWQgZ3JvdXBcIik7XG4gICAgICAgIHJlcys9b3JpZy5zbGljZShzdGFydCxlbmQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlcyArPSAoJ1xcXFwnICArIGN1cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBjYW1sX3N0cmluZ19vZl9qc2J5dGVzKHJlcyk7IH1cblxuXG4vL1Byb3ZpZGVzOiBjYW1sX3N0cl9pbml0aWFsaXplXG5mdW5jdGlvbiBjYW1sX3N0cl9pbml0aWFsaXplKHVuaXQpIHtcbiAgcmV0dXJuIDA7XG59XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdGl2ZSBDYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICovXG4vKiAgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkICAgICovXG4vKiAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgICovXG4vKiAgdGhlIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIGZpbGUgLi4vTElDRU5TRS4gICAgICovXG4vKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8qICRJZDogbGV4aW5nLmMgNjA0NSAyMDA0LTAxLTAxIDE2OjQyOjQzWiBkb2xpZ2V6ICQgKi9cblxuLyogVGhlIHRhYmxlLWRyaXZlbiBhdXRvbWF0b24gZm9yIGxleGVycyBnZW5lcmF0ZWQgYnkgY2FtbGxleC4gKi9cblxuLy9Qcm92aWRlczogY2FtbF9sZXhfYXJyYXlcbi8vUmVxdWlyZXM6IGNhbWxfanNieXRlc19vZl9zdHJpbmdcbmZ1bmN0aW9uIGNhbWxfbGV4X2FycmF5KHMpIHtcbiAgcyA9IGNhbWxfanNieXRlc19vZl9zdHJpbmcocyk7XG4gIHZhciBsID0gcy5sZW5ndGggLyAyO1xuICB2YXIgYSA9IG5ldyBBcnJheShsKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsOyBpKyspXG4gICAgYVtpXSA9IChzLmNoYXJDb2RlQXQoMiAqIGkpIHwgKHMuY2hhckNvZGVBdCgyICogaSArIDEpIDw8IDgpKSA8PCAxNiA+PiAxNjtcbiAgcmV0dXJuIGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbGV4X2VuZ2luZVxuLy9SZXF1aXJlczogY2FtbF9mYWlsd2l0aCwgY2FtbF9sZXhfYXJyYXksIGNhbWxfdWludDhfYXJyYXlfb2ZfYnl0ZXNcbmZ1bmN0aW9uIGNhbWxfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG5cbiAgaWYgKCF0YmwubGV4X2RlZmF1bHQpIHtcbiAgICB0YmwubGV4X2Jhc2UgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlXSk7XG4gICAgdGJsLmxleF9iYWNrdHJrID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfYmFja3Rya10pO1xuICAgIHRibC5sZXhfY2hlY2sgPSAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2NoZWNrXSk7XG4gICAgdGJsLmxleF90cmFucyA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNdKTtcbiAgICB0YmwubGV4X2RlZmF1bHQgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9kZWZhdWx0XSk7XG4gIH1cblxuICB2YXIgYywgc3RhdGUgPSBzdGFydF9zdGF0ZTtcblxuICB2YXIgYnVmZmVyID0gY2FtbF91aW50OF9hcnJheV9vZl9ieXRlcyhsZXhidWZbbGV4X2J1ZmZlcl0pO1xuXG4gIGlmIChzdGF0ZSA+PSAwKSB7XG4gICAgLyogRmlyc3QgZW50cnkgKi9cbiAgICBsZXhidWZbbGV4X2xhc3RfcG9zXSA9IGxleGJ1ZltsZXhfc3RhcnRfcG9zXSA9IGxleGJ1ZltsZXhfY3Vycl9wb3NdO1xuICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gLTE7XG4gIH0gZWxzZSB7XG4gICAgLyogUmVlbnRyeSBhZnRlciByZWZpbGwgKi9cbiAgICBzdGF0ZSA9IC1zdGF0ZSAtIDE7XG4gIH1cbiAgZm9yKDs7KSB7XG4gICAgLyogTG9va3VwIGJhc2UgYWRkcmVzcyBvciBhY3Rpb24gbnVtYmVyIGZvciBjdXJyZW50IHN0YXRlICovXG4gICAgdmFyIGJhc2UgPSB0YmwubGV4X2Jhc2Vbc3RhdGVdO1xuICAgIGlmIChiYXNlIDwgMCkgcmV0dXJuIC1iYXNlLTE7XG4gICAgLyogU2VlIGlmIGl0J3MgYSBiYWNrdHJhY2sgcG9pbnQgKi9cbiAgICB2YXIgYmFja3RyayA9IHRibC5sZXhfYmFja3Rya1tzdGF0ZV07XG4gICAgaWYgKGJhY2t0cmsgPj0gMCkge1xuICAgICAgbGV4YnVmW2xleF9sYXN0X3Bvc10gPSBsZXhidWZbbGV4X2N1cnJfcG9zXTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9hY3Rpb25dID0gYmFja3RyaztcbiAgICB9XG4gICAgLyogU2VlIGlmIHdlIG5lZWQgYSByZWZpbGwgKi9cbiAgICBpZiAobGV4YnVmW2xleF9jdXJyX3Bvc10gPj0gbGV4YnVmW2xleF9idWZmZXJfbGVuXSl7XG4gICAgICBpZiAobGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPT0gMClcbiAgICAgICAgcmV0dXJuIC1zdGF0ZSAtIDE7XG4gICAgICBlbHNlXG4gICAgICAgIGMgPSAyNTY7XG4gICAgfWVsc2V7XG4gICAgICAvKiBSZWFkIG5leHQgaW5wdXQgY2hhciAqL1xuICAgICAgYyA9IGJ1ZmZlcltsZXhidWZbbGV4X2N1cnJfcG9zXV07XG4gICAgICBsZXhidWZbbGV4X2N1cnJfcG9zXSArKztcbiAgICB9XG4gICAgLyogRGV0ZXJtaW5lIG5leHQgc3RhdGUgKi9cbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKiBOZXcgbGV4ZXIgZW5naW5lLCB3aXRoIG1lbW9yeSBvZiBwb3NpdGlvbnMgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5cbi8vUHJvdmlkZXM6IGNhbWxfbmV3X2xleF9lbmdpbmVcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGgsIGNhbWxfbGV4X2FycmF5XG4vL1JlcXVpcmVzOiBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nLCBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzXG5mdW5jdGlvbiBjYW1sX2xleF9ydW5fbWVtKHMsIGksIG1lbSwgY3Vycl9wb3MpIHtcbiAgZm9yICg7Oykge1xuICAgIHZhciBkc3QgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoZHN0ID09IDB4ZmYpIHJldHVybjtcbiAgICB2YXIgc3JjID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKHNyYyA9PSAweGZmKVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IGN1cnJfcG9zO1xuICAgIGVsc2VcbiAgICAgIG1lbSBbZHN0ICsgMV0gPSBtZW0gW3NyYyArIDFdO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNhbWxfbGV4X3J1bl90YWcocywgaSwgbWVtKSB7XG4gIGZvciAoOzspIHtcbiAgICB2YXIgZHN0ID0gcy5jaGFyQ29kZUF0KGkpOyBpKys7XG4gICAgaWYgKGRzdCA9PSAweGZmKSByZXR1cm4gO1xuICAgIHZhciBzcmMgPSBzLmNoYXJDb2RlQXQoaSk7IGkrKztcbiAgICBpZiAoc3JjID09IDB4ZmYpXG4gICAgICBtZW0gW2RzdCArIDFdID0gLTE7XG4gICAgZWxzZVxuICAgICAgbWVtIFtkc3QgKyAxXSA9IG1lbSBbc3JjICsgMV07XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FtbF9uZXdfbGV4X2VuZ2luZSh0YmwsIHN0YXJ0X3N0YXRlLCBsZXhidWYpIHtcbiAgdmFyIGxleF9idWZmZXIgPSAyO1xuICB2YXIgbGV4X2J1ZmZlcl9sZW4gPSAzO1xuICB2YXIgbGV4X3N0YXJ0X3BvcyA9IDU7XG4gIHZhciBsZXhfY3Vycl9wb3MgPSA2O1xuICB2YXIgbGV4X2xhc3RfcG9zID0gNztcbiAgdmFyIGxleF9sYXN0X2FjdGlvbiA9IDg7XG4gIHZhciBsZXhfZW9mX3JlYWNoZWQgPSA5O1xuICB2YXIgbGV4X21lbSA9IDEwO1xuICB2YXIgbGV4X2Jhc2UgPSAxO1xuICB2YXIgbGV4X2JhY2t0cmsgPSAyO1xuICB2YXIgbGV4X2RlZmF1bHQgPSAzO1xuICB2YXIgbGV4X3RyYW5zID0gNDtcbiAgdmFyIGxleF9jaGVjayA9IDU7XG4gIHZhciBsZXhfYmFzZV9jb2RlID0gNjtcbiAgdmFyIGxleF9iYWNrdHJrX2NvZGUgPSA3O1xuICB2YXIgbGV4X2RlZmF1bHRfY29kZSA9IDg7XG4gIHZhciBsZXhfdHJhbnNfY29kZSA9IDk7XG4gIHZhciBsZXhfY2hlY2tfY29kZSA9IDEwO1xuICB2YXIgbGV4X2NvZGUgPSAxMTtcblxuICBpZiAoIXRibC5sZXhfZGVmYXVsdCkge1xuICAgIHRibC5sZXhfYmFzZSA9ICAgIGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2Jhc2VdKTtcbiAgICB0YmwubGV4X2JhY2t0cmsgPSBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYWNrdHJrXSk7XG4gICAgdGJsLmxleF9jaGVjayA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tdKTtcbiAgICB0YmwubGV4X3RyYW5zID0gICBjYW1sX2xleF9hcnJheSAodGJsW2xleF90cmFuc10pO1xuICAgIHRibC5sZXhfZGVmYXVsdCA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2RlZmF1bHRdKTtcbiAgfVxuICBpZiAoIXRibC5sZXhfZGVmYXVsdF9jb2RlKSB7XG4gICAgdGJsLmxleF9iYXNlX2NvZGUgPSAgICBjYW1sX2xleF9hcnJheSAodGJsW2xleF9iYXNlX2NvZGVdKTtcbiAgICB0YmwubGV4X2JhY2t0cmtfY29kZSA9IGNhbWxfbGV4X2FycmF5ICh0YmxbbGV4X2JhY2t0cmtfY29kZV0pO1xuICAgIHRibC5sZXhfY2hlY2tfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfY2hlY2tfY29kZV0pO1xuICAgIHRibC5sZXhfdHJhbnNfY29kZSA9ICAgY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfdHJhbnNfY29kZV0pO1xuICAgIHRibC5sZXhfZGVmYXVsdF9jb2RlID0gY2FtbF9sZXhfYXJyYXkgKHRibFtsZXhfZGVmYXVsdF9jb2RlXSk7XG4gIH1cbiAgaWYgKHRibC5sZXhfY29kZSA9PSBudWxsKSB0YmwubGV4X2NvZGUgPSBjYW1sX2pzYnl0ZXNfb2Zfc3RyaW5nKHRibFtsZXhfY29kZV0pO1xuXG4gIHZhciBjLCBzdGF0ZSA9IHN0YXJ0X3N0YXRlO1xuXG4gIHZhciBidWZmZXIgPSBjYW1sX3VpbnQ4X2FycmF5X29mX2J5dGVzKGxleGJ1ZltsZXhfYnVmZmVyXSk7XG5cbiAgaWYgKHN0YXRlID49IDApIHtcbiAgICAvKiBGaXJzdCBlbnRyeSAqL1xuICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9zdGFydF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgbGV4YnVmW2xleF9sYXN0X2FjdGlvbl0gPSAtMTtcbiAgfSBlbHNlIHtcbiAgICAvKiBSZWVudHJ5IGFmdGVyIHJlZmlsbCAqL1xuICAgIHN0YXRlID0gLXN0YXRlIC0gMTtcbiAgfVxuICBmb3IoOzspIHtcbiAgICAvKiBMb29rdXAgYmFzZSBhZGRyZXNzIG9yIGFjdGlvbiBudW1iZXIgZm9yIGN1cnJlbnQgc3RhdGUgKi9cbiAgICB2YXIgYmFzZSA9IHRibC5sZXhfYmFzZVtzdGF0ZV07XG4gICAgaWYgKGJhc2UgPCAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYXNlX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIHJldHVybiAtYmFzZS0xO1xuICAgIH1cbiAgICAvKiBTZWUgaWYgaXQncyBhIGJhY2t0cmFjayBwb2ludCAqL1xuICAgIHZhciBiYWNrdHJrID0gdGJsLmxleF9iYWNrdHJrW3N0YXRlXTtcbiAgICBpZiAoYmFja3RyayA+PSAwKSB7XG4gICAgICB2YXIgcGNfb2ZmID0gdGJsLmxleF9iYWNrdHJrX2NvZGVbc3RhdGVdO1xuICAgICAgY2FtbF9sZXhfcnVuX3RhZyh0YmwubGV4X2NvZGUsIHBjX29mZiwgbGV4YnVmW2xleF9tZW1dKTtcbiAgICAgIGxleGJ1ZltsZXhfbGFzdF9wb3NdID0gbGV4YnVmW2xleF9jdXJyX3Bvc107XG4gICAgICBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9IGJhY2t0cms7XG4gICAgfVxuICAgIC8qIFNlZSBpZiB3ZSBuZWVkIGEgcmVmaWxsICovXG4gICAgaWYgKGxleGJ1ZltsZXhfY3Vycl9wb3NdID49IGxleGJ1ZltsZXhfYnVmZmVyX2xlbl0pe1xuICAgICAgaWYgKGxleGJ1ZltsZXhfZW9mX3JlYWNoZWRdID09IDApXG4gICAgICAgIHJldHVybiAtc3RhdGUgLSAxO1xuICAgICAgZWxzZVxuICAgICAgICBjID0gMjU2O1xuICAgIH1lbHNle1xuICAgICAgLyogUmVhZCBuZXh0IGlucHV0IGNoYXIgKi9cbiAgICAgIGMgPSBidWZmZXJbbGV4YnVmW2xleF9jdXJyX3Bvc11dO1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gKys7XG4gICAgfVxuICAgIC8qIERldGVybWluZSBuZXh0IHN0YXRlICovXG4gICAgdmFyIHBzdGF0ZSA9IHN0YXRlIDtcbiAgICBpZiAodGJsLmxleF9jaGVja1tiYXNlICsgY10gPT0gc3RhdGUpXG4gICAgICBzdGF0ZSA9IHRibC5sZXhfdHJhbnNbYmFzZSArIGNdO1xuICAgIGVsc2VcbiAgICAgIHN0YXRlID0gdGJsLmxleF9kZWZhdWx0W3N0YXRlXTtcbiAgICAvKiBJZiBubyB0cmFuc2l0aW9uIG9uIHRoaXMgY2hhciwgcmV0dXJuIHRvIGxhc3QgYmFja3RyYWNrIHBvaW50ICovXG4gICAgaWYgKHN0YXRlIDwgMCkge1xuICAgICAgbGV4YnVmW2xleF9jdXJyX3Bvc10gPSBsZXhidWZbbGV4X2xhc3RfcG9zXTtcbiAgICAgIGlmIChsZXhidWZbbGV4X2xhc3RfYWN0aW9uXSA9PSAtMSlcbiAgICAgICAgY2FtbF9mYWlsd2l0aChcImxleGluZzogZW1wdHkgdG9rZW5cIik7XG4gICAgICBlbHNlXG4gICAgICAgIHJldHVybiBsZXhidWZbbGV4X2xhc3RfYWN0aW9uXTtcbiAgICB9ZWxzZXtcbiAgICAgIC8qIElmIHNvbWUgdHJhbnNpdGlvbiwgZ2V0IGFuZCBwZXJmb3JtIG1lbW9yeSBtb3ZlcyAqL1xuICAgICAgdmFyIGJhc2VfY29kZSA9IHRibC5sZXhfYmFzZV9jb2RlW3BzdGF0ZV0sIHBjX29mZjtcbiAgICAgIGlmICh0YmwubGV4X2NoZWNrX2NvZGVbYmFzZV9jb2RlICsgY10gPT0gcHN0YXRlKVxuICAgICAgICBwY19vZmYgPSB0YmwubGV4X3RyYW5zX2NvZGVbYmFzZV9jb2RlICsgY107XG4gICAgICBlbHNlXG4gICAgICAgIHBjX29mZiA9IHRibC5sZXhfZGVmYXVsdF9jb2RlW3BzdGF0ZV07XG4gICAgICBpZiAocGNfb2ZmID4gMClcbiAgICAgICAgY2FtbF9sZXhfcnVuX21lbVxuICAgICAgKHRibC5sZXhfY29kZSwgcGNfb2ZmLCBsZXhidWZbbGV4X21lbV0sIGxleGJ1ZltsZXhfY3Vycl9wb3NdKTtcbiAgICAgIC8qIEVyYXNlIHRoZSBFT0YgY29uZGl0aW9uIG9ubHkgaWYgdGhlIEVPRiBwc2V1ZG8tY2hhcmFjdGVyIHdhc1xuICAgICAgICAgY29uc3VtZWQgYnkgdGhlIGF1dG9tYXRvbiAoaS5lLiB0aGVyZSB3YXMgbm8gYmFja3RyYWNrIGFib3ZlKVxuICAgICAgKi9cbiAgICAgIGlmIChjID09IDI1NikgbGV4YnVmW2xleF9lb2ZfcmVhY2hlZF0gPSAwO1xuICAgIH1cbiAgfVxufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4vLyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbi8vIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4vLyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4vL1xuLy8gVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4vLyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuLy8gTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuLy8gR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4vL1xuLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4vLyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuLy8gRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cblxuLy8vLy8vLy8vLy8vLyBBcnJheVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3N1YiBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X3N1YiAoYSwgaSwgbGVuKSB7XG4gIHZhciBhMiA9IG5ldyBBcnJheShsZW4rMSk7XG4gIGEyWzBdPTA7XG4gIGZvcih2YXIgaTIgPSAxLCBpMT0gaSsxOyBpMiA8PSBsZW47IGkyKyssaTErKyApe1xuICAgIGEyW2kyXT1hW2kxXTtcbiAgfVxuICByZXR1cm4gYTI7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfYXBwZW5kIG11dGFibGVcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfYXBwZW5kKGExLCBhMikge1xuICB2YXIgbDEgPSBhMS5sZW5ndGgsIGwyID0gYTIubGVuZ3RoO1xuICB2YXIgbCA9IGwxK2wyLTFcbiAgdmFyIGEgPSBuZXcgQXJyYXkobCk7XG4gIGFbMF0gPSAwO1xuICB2YXIgaSA9IDEsaiA9IDE7XG4gIGZvcig7aTxsMTtpKyspIGFbaV09YTFbaV07XG4gIGZvcig7aTxsO2krKyxqKyspIGFbaV09YTJbal07XG4gIHJldHVybiBhO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2NvbmNhdCBtdXRhYmxlXG5mdW5jdGlvbiBjYW1sX2FycmF5X2NvbmNhdChsKSB7XG4gIHZhciBhID0gWzBdO1xuICB3aGlsZSAobCAhPT0gMCkge1xuICAgIHZhciBiID0gbFsxXTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IGIubGVuZ3RoOyBpKyspIGEucHVzaChiW2ldKTtcbiAgICBsID0gbFsyXTtcbiAgfVxuICByZXR1cm4gYTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hcnJheV9ibGl0XG5mdW5jdGlvbiBjYW1sX2FycmF5X2JsaXQoYTEsIGkxLCBhMiwgaTIsIGxlbikge1xuICBpZiAoaTIgPD0gaTEpIHtcbiAgICBmb3IgKHZhciBqID0gMTsgaiA8PSBsZW47IGorKykgYTJbaTIgKyBqXSA9IGExW2kxICsgal07XG4gIH0gZWxzZSB7XG4gICAgZm9yICh2YXIgaiA9IGxlbjsgaiA+PSAxOyBqLS0pIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9O1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9mbG9hdGFycmF5X2JsaXRcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9ibGl0KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgaWYgKGkyIDw9IGkxKSB7XG4gICAgZm9yICh2YXIgaiA9IDE7IGogPD0gbGVuOyBqKyspIGEyW2kyICsgal0gPSBhMVtpMSArIGpdO1xuICB9IGVsc2Uge1xuICAgIGZvciAodmFyIGogPSBsZW47IGogPj0gMTsgai0tKSBhMltpMiArIGpdID0gYTFbaTEgKyBqXTtcbiAgfTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vLy8vLy8vLy8vLy8gUGVydmFzaXZlXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X3NldCAobXV0YWJsZSwgY29uc3QsIG11dGFibGUpXG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JvdW5kX2Vycm9yXG5mdW5jdGlvbiBjYW1sX2FycmF5X3NldCAoYXJyYXksIGluZGV4LCBuZXd2YWwpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICBhcnJheVtpbmRleCsxXT1uZXd2YWw7IHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2FycmF5X2dldCBtdXRhYmxlIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfYXJyYXlfZ2V0IChhcnJheSwgaW5kZXgpIHtcbiAgaWYgKChpbmRleCA8IDApIHx8IChpbmRleCA+PSBhcnJheS5sZW5ndGggLSAxKSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXlbaW5kZXgrMV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfYXJyYXlfZmlsbFxuZnVuY3Rpb24gY2FtbF9hcnJheV9maWxsKGFycmF5LCBvZnMsIGxlbiwgdil7XG4gIGZvcih2YXIgaSA9IDA7IGkgPCBsZW47IGkrKyl7XG4gICAgYXJyYXlbb2ZzK2krMV0gPSB2O1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2NoZWNrX2JvdW5kIChtdXRhYmxlLCBjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfY2hlY2tfYm91bmQgKGFycmF5LCBpbmRleCkge1xuICBpZiAoaW5kZXggPj4+IDAgPj0gYXJyYXkubGVuZ3RoIC0gMSkgY2FtbF9hcnJheV9ib3VuZF9lcnJvcigpO1xuICByZXR1cm4gYXJyYXk7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWFrZV92ZWN0IGNvbnN0IChjb25zdCwgbXV0YWJsZSlcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfbWFrZV92ZWN0IChsZW4sIGluaXQpIHtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTA7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgbGVuOyBpKyspIGJbaV0gPSBpbml0O1xuICByZXR1cm4gYjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9tYWtlX2Zsb2F0X3ZlY3QgY29uc3QgKGNvbnN0KVxuLy9SZXF1aXJlczogY2FtbF9hcnJheV9ib3VuZF9lcnJvclxuZnVuY3Rpb24gY2FtbF9tYWtlX2Zsb2F0X3ZlY3QobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4vL1Byb3ZpZGVzOiBjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlIGNvbnN0IChjb25zdClcbi8vUmVxdWlyZXM6IGNhbWxfYXJyYXlfYm91bmRfZXJyb3JcbmZ1bmN0aW9uIGNhbWxfZmxvYXRhcnJheV9jcmVhdGUobGVuKXtcbiAgaWYgKGxlbiA8IDApIGNhbWxfYXJyYXlfYm91bmRfZXJyb3IoKTtcbiAgdmFyIGxlbiA9IGxlbiArIDEgfCAwO1xuICB2YXIgYiA9IG5ldyBBcnJheShsZW4pO1xuICBiWzBdPTI1NDtcbiAgZm9yICh2YXIgaSA9IDE7IGkgPCBsZW47IGkrKykgYltpXSA9IDA7XG4gIHJldHVybiBiXG59XG4iLCIvL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9kbHNcbnZhciBjYW1sX2RvbWFpbl9kbHMgPSBbMF07XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX3NldChhKSB7XG4gIGNhbWxfZG9tYWluX2RscyA9IGE7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2Rsc19nZXRcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2Rsc1xuZnVuY3Rpb24gY2FtbF9kb21haW5fZGxzX2dldCh1bml0KSB7XG4gIHJldHVybiBjYW1sX2RvbWFpbl9kbHM7XG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbG9hZFxuZnVuY3Rpb24gY2FtbF9hdG9taWNfbG9hZChyZWYpe1xuICByZXR1cm4gcmVmWzFdO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19jYXNcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX2NhcyhyZWYsbyxuKSB7XG4gIGlmKHJlZlsxXSA9PT0gbyl7XG4gICAgcmVmWzFdID0gbjtcbiAgICByZXR1cm4gMTtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfZmV0Y2hfYWRkXG5mdW5jdGlvbiBjYW1sX2F0b21pY19mZXRjaF9hZGQocmVmLCBpKSB7XG4gIHZhciBvbGQgPSByZWZbMV07XG4gIHJlZlsxXSArPSBpO1xuICByZXR1cm4gb2xkO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2F0b21pY19leGNoYW5nZVxuZnVuY3Rpb24gY2FtbF9hdG9taWNfZXhjaGFuZ2UocmVmLCB2KSB7XG4gIHZhciByID0gcmVmWzFdO1xuICByZWZbMV0gPSB2O1xuICByZXR1cm4gcjtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9hdG9taWNfbWFrZV9jb250ZW5kZWRcbmZ1bmN0aW9uIGNhbWxfYXRvbWljX21ha2VfY29udGVuZGVkKGEpIHtcbiAgcmV0dXJuIFswLCBhXVxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5cbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW5fID0gWzBdXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl91bmlxdWVfdG9rZW4odW5pdCkge1xuICByZXR1cm4gY2FtbF9tbF9kb21haW5fdW5pcXVlX3Rva2VuX1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX3NldF9uYW1lXG5mdW5jdGlvbiBjYW1sX21sX2RvbWFpbl9zZXRfbmFtZShfbmFtZSkge1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9yZWNvbW1lbmRlZF9kb21haW5fY291bnRcbmZ1bmN0aW9uIGNhbWxfcmVjb21tZW5kZWRfZG9tYWluX2NvdW50KHVuaXQpIHsgcmV0dXJuIDEgfVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX2lkXG52YXIgY2FtbF9kb21haW5faWQgPSAwO1xuXG4vL1Byb3ZpZGVzOiBjYW1sX2RvbWFpbl9zcGF3blxuLy9SZXF1aXJlczogY2FtbF9tbF9tdXRleF91bmxvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2NhbGxiYWNrXG4vL1ZlcnNpb246ID49IDUuMlxudmFyIGNhbWxfZG9tYWluX2xhdGVzdF9pZHggPSAxXG5mdW5jdGlvbiBjYW1sX2RvbWFpbl9zcGF3bihmLHRlcm1fc3luYyl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayh0ZXJtX3N5bmNbMl0pO1xuICAgIC8vVE9ETzogZml4IGV4biBjYXNlXG4gICAgdGVybV9zeW5jWzFdID0gWzAsIFswLCByZXNdXTtcbiAgICByZXR1cm4gaWQ7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZG9tYWluX3NwYXduXG4vL1JlcXVpcmVzOiBjYW1sX21sX211dGV4X3VubG9ja1xuLy9SZXF1aXJlczogY2FtbF9kb21haW5faWRcbi8vUmVxdWlyZXM6IGNhbWxfY2FsbGJhY2tcbi8vVmVyc2lvbjogPCA1LjJcbnZhciBjYW1sX2RvbWFpbl9sYXRlc3RfaWR4ID0gMVxuZnVuY3Rpb24gY2FtbF9kb21haW5fc3Bhd24oZixtdXRleCl7XG4gICAgdmFyIGlkID0gY2FtbF9kb21haW5fbGF0ZXN0X2lkeCsrO1xuICAgIHZhciBvbGQgPSBjYW1sX2RvbWFpbl9pZDtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IGlkO1xuICAgIHZhciByZXMgPSBjYW1sX2NhbGxiYWNrKGYsWzBdKTtcbiAgICBjYW1sX2RvbWFpbl9pZCA9IG9sZDtcbiAgICBjYW1sX21sX211dGV4X3VubG9jayhtdXRleCk7XG4gICAgcmV0dXJuIGlkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2lkXG4vL1JlcXVpcmVzOiBjYW1sX2RvbWFpbl9pZFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5faWQodW5pdCl7XG4gICAgcmV0dXJuIGNhbWxfZG9tYWluX2lkO1xufVxuXG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfZG9tYWluX2NwdV9yZWxheFxuZnVuY3Rpb24gY2FtbF9tbF9kb21haW5fY3B1X3JlbGF4KHVuaXQpe1xuICAgIHJldHVybiAwO1xufVxuIiwiXG4vL1Byb3ZpZGVzOiBNbE11dGV4XG5mdW5jdGlvbiBNbE11dGV4KCkge1xuICB0aGlzLmxvY2tlZCA9IGZhbHNlXG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfbmV3XG4vL1JlcXVpcmVzOiBNbE11dGV4XG5mdW5jdGlvbiBjYW1sX21sX211dGV4X25ldyh1bml0KSB7XG4gIHJldHVybiBuZXcgTWxNdXRleCgpO1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX21sX211dGV4X2xvY2tcbi8vUmVxdWlyZXM6IGNhbWxfZmFpbHdpdGhcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfbG9jayh0KSB7XG4gIGlmKHQubG9ja2VkKVxuICAgIGNhbWxfZmFpbHdpdGgoXCJNdXRleC5sb2NrOiBtdXRleCBhbHJlYWR5IGxvY2tlZC4gQ2Fubm90IHdhaXQuXCIpO1xuICBlbHNlIHQubG9ja2VkID0gdHJ1ZTtcbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2tcbmZ1bmN0aW9uIGNhbWxfbWxfbXV0ZXhfdHJ5X2xvY2sodCkge1xuICBpZighdC5sb2NrZWQpIHtcbiAgICB0LmxvY2tlZCA9IHRydWU7XG4gICAgcmV0dXJuIDE7XG4gIH1cbiAgcmV0dXJuIDA7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfbWxfbXV0ZXhfdW5sb2NrXG5mdW5jdGlvbiBjYW1sX21sX211dGV4X3VubG9jayh0KSB7XG4gIHQubG9ja2VkID0gZmFsc2U7XG4gIHJldHVybiAwO1xufVxuIiwiLy8gSnNfb2Zfb2NhbWwgcnVudGltZSBzdXBwb3J0XG4vLyBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuLy8gQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4vLyBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3Rcbi8vXG4vLyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuLy8gaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4vLyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuLy9cbi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuLy8gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2Zcbi8vIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbi8vIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuLy9cbi8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbi8vIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG5cbi8vIFdlYWsgQVBJXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG52YXIgY2FtbF9lcGhlX2tleV9vZmZzZXQgPSAzXG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxudmFyIGNhbWxfZXBoZV9kYXRhX29mZnNldCA9IDJcblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3NldF9rZXlcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfa2V5KHgsIGksIHYpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYgKHYgaW5zdGFuY2VvZiBPYmplY3QgJiYgZ2xvYmFsVGhpcy5XZWFrUmVmKSB7XG4gICAgaWYoeFsxXS5yZWdpc3RlcikgeFsxXS5yZWdpc3Rlcih2LCB1bmRlZmluZWQsIHYpO1xuICAgIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSA9IG5ldyBnbG9iYWxUaGlzLldlYWtSZWYodik7XG4gIH1cbiAgZWxzZSB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB2O1xuICByZXR1cm4gMFxufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfdW5zZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2ludmFsaWRfYXJndW1lbnQsIGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfdW5zZXRfa2V5KHgsIGkpIHtcbiAgaWYoaSA8IDAgfHwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpID49IHgubGVuZ3RoKVxuICAgIGNhbWxfaW52YWxpZF9hcmd1bWVudCAoXCJXZWFrLnNldFwiKTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB4WzFdLnVucmVnaXN0ZXIpIHtcbiAgICB2YXIgb2xkID0geFtjYW1sX2VwaGVfa2V5X29mZnNldCArIGldLmRlcmVmKCk7XG4gICAgaWYob2xkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHZhciBjb3VudCA9IDBcbiAgICAgIGZvcih2YXIgaiA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0OyBqIDwgeC5sZW5ndGg7IGorKyl7XG4gICAgICAgIHZhciBrZXkgPSB4W2pdO1xuICAgICAgICBpZihrZXkgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpe1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpXG4gICAgICAgICAgaWYoa2V5ID09PSBvbGQpIGNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmKGNvdW50ID09IDEpIHhbMV0udW5yZWdpc3RlcihvbGQpO1xuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaV0gPSB1bmRlZmluZWQ7XG4gIHJldHVybiAwXG59XG5cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NyZWF0ZVxuLy9SZXF1aXJlczogY2FtbF93ZWFrX2NyZWF0ZSwgY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfY3JlYXRlIChuKSB7XG4gIHZhciB4ID0gY2FtbF93ZWFrX2NyZWF0ZShuKTtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19jcmVhdGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0LCBjYW1sX2ludmFsaWRfYXJndW1lbnQsY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XG5mdW5jdGlvbiBjYW1sX3dlYWtfY3JlYXRlIChuKSB7XG4gIGlmIChuIDwgMCkgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuY3JlYXRlXCIpO1xuICB2YXIgeCA9IFsyNTEsXCJjYW1sX2VwaGVfbGlzdF9oZWFkXCJdO1xuICB4Lmxlbmd0aCA9IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgbjtcbiAgcmV0dXJuIHg7XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfd2Vha19zZXRcbi8vUmVxdWlyZXM6IGNhbWxfaW52YWxpZF9hcmd1bWVudFxuLy9SZXF1aXJlczogY2FtbF9lcGhlX3NldF9rZXksIGNhbWxfZXBoZV91bnNldF9rZXlcbmZ1bmN0aW9uIGNhbWxfd2Vha19zZXQoeCwgaSwgdikge1xuICBpZih2ID09IDApIGNhbWxfZXBoZV91bnNldF9rZXkoeCxpKVxuICBlbHNlIGNhbWxfZXBoZV9zZXRfa2V5KHgsaSx2WzFdKVxuICByZXR1cm4gMDtcbn1cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0XG5mdW5jdGlvbiBjYW1sX2VwaGVfZ2V0X2tleSh4LCBpKSB7XG4gIGlmKGkgPCAwIHx8IGNhbWxfZXBoZV9rZXlfb2Zmc2V0ICsgaSA+PSB4Lmxlbmd0aClcbiAgICBjYW1sX2ludmFsaWRfYXJndW1lbnQgKFwiV2Vhay5nZXRfa2V5XCIpO1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpIF07XG4gIGlmKGdsb2JhbFRoaXMuV2Vha1JlZiAmJiB3ZWFrIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5XZWFrUmVmKSB3ZWFrID0gd2Vhay5kZXJlZigpO1xuICByZXR1cm4gKHdlYWs9PT11bmRlZmluZWQpPzA6WzAsIHdlYWtdO1xufVxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9rZXlfY29weVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2dldF9rZXksY2FtbF9lcGhlX2tleV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cCwgY2FtbF9pbnZhbGlkX2FyZ3VtZW50XG4vL0FsaWFzOiBjYW1sX3dlYWtfZ2V0X2NvcHlcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfa2V5X2NvcHkoeCwgaSkge1xuICBpZihpIDwgMCB8fCBjYW1sX2VwaGVfa2V5X29mZnNldCArIGkgPj0geC5sZW5ndGgpXG4gICAgY2FtbF9pbnZhbGlkX2FyZ3VtZW50IChcIldlYWsuZ2V0X2NvcHlcIik7XG4gIHZhciB5ID0gY2FtbF9lcGhlX2dldF9rZXkoeCwgaSk7XG4gIGlmICh5ID09PSAwKSByZXR1cm4geTtcbiAgdmFyIHogPSB5WzFdO1xuICBpZiAoeiBpbnN0YW5jZW9mIEFycmF5KSByZXR1cm4gWzAsIGNhbWxfb2JqX2R1cCh6KV07XG4gIHJldHVybiB5O1xufVxuXG4vL1Byb3ZpZGVzOiBjYW1sX2VwaGVfY2hlY2tfa2V5IG11dGFibGVcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfY2hlY2tcbmZ1bmN0aW9uIGNhbWxfZXBoZV9jaGVja19rZXkoeCwgaSkge1xuICB2YXIgd2VhayA9IHhbY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpXTtcbiAgaWYoZ2xvYmFsVGhpcy5XZWFrUmVmICYmIHdlYWsgaW5zdGFuY2VvZiBnbG9iYWxUaGlzLldlYWtSZWYpIHdlYWsgPSB3ZWFrLmRlcmVmKCk7XG4gIGlmKHdlYWs9PT11bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gMTtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfa2V5XG4vL1JlcXVpcmVzOiBjYW1sX2FycmF5X2JsaXRcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9rZXlfb2Zmc2V0XG4vL0FsaWFzOiBjYW1sX3dlYWtfYmxpdFxuZnVuY3Rpb24gY2FtbF9lcGhlX2JsaXRfa2V5KGExLCBpMSwgYTIsIGkyLCBsZW4pIHtcbiAgLy8gbWludXMgb25lIGJlY2F1c2UgY2FtbF9hcnJheV9ibGl0IHdvcmtzIG9uIG9jYW1sIGFycmF5XG4gIGNhbWxfYXJyYXlfYmxpdChhMSwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMSAtIDEsXG4gICAgICAgICAgICAgICAgICBhMiwgY2FtbF9lcGhlX2tleV9vZmZzZXQgKyBpMiAtIDEsXG4gICAgICAgICAgICAgICAgICBsZW4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2JsaXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfc2V0X2RhdGEsIGNhbWxfZXBoZV91bnNldF9kYXRhXG5mdW5jdGlvbiBjYW1sX2VwaGVfYmxpdF9kYXRhKHNyYywgZHN0KXtcbiAgdmFyIG4gPSBzcmNbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XTtcbiAgaWYobiA9PT0gdW5kZWZpbmVkKSBjYW1sX2VwaGVfdW5zZXRfZGF0YShkc3QpO1xuICBlbHNlIGNhbWxfZXBoZV9zZXRfZGF0YShkc3QsIG4pO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2dldF9kYXRhXG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV9nZXRfZGF0YSh4KXtcbiAgaWYoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIDA7XG4gIGVsc2VcbiAgICByZXR1cm4gWzAsIHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XG4vL1JlcXVpcmVzOiBjYW1sX2VwaGVfZGF0YV9vZmZzZXRcbi8vUmVxdWlyZXM6IGNhbWxfb2JqX2R1cFxuZnVuY3Rpb24gY2FtbF9lcGhlX2dldF9kYXRhX2NvcHkoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIFswLCBjYW1sX29ial9kdXAoeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdKV07XG59XG5cbi8vUHJvdmlkZXM6IGNhbWxfZXBoZV9zZXRfZGF0YVxuLy9SZXF1aXJlczogY2FtbF9lcGhlX2RhdGFfb2Zmc2V0LCBjYW1sX2VwaGVfa2V5X29mZnNldCwgY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbmZ1bmN0aW9uIGNhbWxfZXBoZV9zZXRfZGF0YSh4LCBkYXRhKXtcbiAgaWYoZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSAmJiBnbG9iYWxUaGlzLldlYWtSZWYpIHtcbiAgICBpZighICh4WzFdIGluc3RhbmNlb2YgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeSkpIHtcbiAgICAgIHhbMV0gPSBuZXcgZ2xvYmFsVGhpcy5GaW5hbGl6YXRpb25SZWdpc3RyeShmdW5jdGlvbiAoKSB7IGNhbWxfZXBoZV91bnNldF9kYXRhKHgpIH0pO1xuICAgICAgLy9yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS5yZWdpc3RlcihrZXksIHVuZGVmaW5lZCwga2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICB4W2NhbWxfZXBoZV9kYXRhX29mZnNldF0gPSBkYXRhO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX3Vuc2V0X2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldCwgY2FtbF9lcGhlX2tleV9vZmZzZXRcbmZ1bmN0aW9uIGNhbWxfZXBoZV91bnNldF9kYXRhKHgpe1xuICBpZihnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5ICYmIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgIGlmKHhbMV0gaW5zdGFuY2VvZiBnbG9iYWxUaGlzLkZpbmFsaXphdGlvblJlZ2lzdHJ5KXtcbiAgICAgIC8vdW5yZWdpc3RlciBhbGwga2V5c1xuICAgICAgZm9yKHZhciBqID0gY2FtbF9lcGhlX2tleV9vZmZzZXQ7IGogPCB4Lmxlbmd0aDsgaisrKXtcbiAgICAgICAgdmFyIGtleSA9IHhbal07XG4gICAgICAgIGlmKGtleSBpbnN0YW5jZW9mIGdsb2JhbFRoaXMuV2Vha1JlZikge1xuICAgICAgICAgIGtleSA9IGtleS5kZXJlZigpO1xuICAgICAgICAgIGlmKGtleSkgeFsxXS51bnJlZ2lzdGVyKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgeFtjYW1sX2VwaGVfZGF0YV9vZmZzZXRdID0gdW5kZWZpbmVkO1xuICByZXR1cm4gMDtcbn1cblxuLy9Qcm92aWRlczogY2FtbF9lcGhlX2NoZWNrX2RhdGFcbi8vUmVxdWlyZXM6IGNhbWxfZXBoZV9kYXRhX29mZnNldFxuZnVuY3Rpb24gY2FtbF9lcGhlX2NoZWNrX2RhdGEoeCl7XG4gIGlmKHhbY2FtbF9lcGhlX2RhdGFfb2Zmc2V0XSA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiAwO1xuICBlbHNlXG4gICAgcmV0dXJuIDE7XG59XG4iLCJcbi8vUHJvdmlkZXM6IGNhbWxfbHhtX25leHRcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfc2hpZnRfbGVmdFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9zaGlmdF9yaWdodF91bnNpZ25lZFxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vclxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF94b3Jcbi8vUmVxdWlyZXM6IGNhbWxfaW50NjRfYWRkXG4vL1JlcXVpcmVzOiBjYW1sX2ludDY0X211bFxuLy9SZXF1aXJlczogY2FtbF9iYV9nZXRfMVxuLy9SZXF1aXJlczogY2FtbF9iYV9zZXRfMVxuLy9SZXF1aXJlczogY2FtbF9pbnQ2NF9vZl9zdHJpbmdcbi8vUmVxdWlyZXM6IGNhbWxfbmV3X3N0cmluZ1xuZnVuY3Rpb24gY2FtbF9seG1fbmV4dCh2KSB7XG4gIGZ1bmN0aW9uIHNoaWZ0X2woeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfbGVmdCh4LGspO1xuICB9XG4gIGZ1bmN0aW9uIHNoaWZ0X3IoeCwgayl7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfc2hpZnRfcmlnaHRfdW5zaWduZWQoeCxrKTtcbiAgfVxuICBmdW5jdGlvbiBvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF9vcihhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHhvcihhLCBiKXtcbiAgICByZXR1cm4gY2FtbF9pbnQ2NF94b3IoYSxiKTtcbiAgfVxuICBmdW5jdGlvbiBhZGQoYSwgYil7XG4gICAgcmV0dXJuIGNhbWxfaW50NjRfYWRkKGEsYik7XG4gIH1cbiAgZnVuY3Rpb24gbXVsKGEsIGIpe1xuICAgIHJldHVybiBjYW1sX2ludDY0X211bChhLGIpO1xuICB9XG4gIGZ1bmN0aW9uIHJvdGwoeCwgaykge1xuICAgIHJldHVybiBvcihzaGlmdF9sKHgsayksc2hpZnRfciAoeCwgNjQgLSBrKSk7XG4gIH1cbiAgZnVuY3Rpb24gZ2V0KGEsIGkpIHtcbiAgICByZXR1cm4gY2FtbF9iYV9nZXRfMShhLCBpKTtcbiAgfVxuICBmdW5jdGlvbiBzZXQoYSwgaSwgeCkge1xuICAgIHJldHVybiBjYW1sX2JhX3NldF8xKGEsIGksIHgpO1xuICB9XG4gIHZhciBNID0gY2FtbF9pbnQ2NF9vZl9zdHJpbmcoY2FtbF9uZXdfc3RyaW5nKFwiMHhkMTM0MjU0M2RlODJlZjk1XCIpKTtcbiAgdmFyIGRhYmEgPSBjYW1sX2ludDY0X29mX3N0cmluZyhjYW1sX25ld19zdHJpbmcoXCIweGRhYmEwYjZlYjA5MzIyZTNcIikpO1xuICB2YXIgeiwgcTAsIHExO1xuICB2YXIgc3QgPSB2O1xuICB2YXIgYSA9IGdldChzdCwwKTtcbiAgdmFyIHMgPSBnZXQoc3QsMSk7XG4gIHZhciB4MCA9IGdldChzdCwyKTtcbiAgdmFyIHgxID0gZ2V0KHN0LDMpO1xuICAvKiBDb21iaW5pbmcgb3BlcmF0aW9uICovXG4gIHogPSBhZGQocywgeDApO1xuICAvKiBNaXhpbmcgZnVuY3Rpb24gKi9cbiAgeiA9IG11bCh4b3IoeixzaGlmdF9yKHosMzIpKSwgZGFiYSk7XG4gIHogPSBtdWwoeG9yKHosc2hpZnRfcih6LDMyKSksIGRhYmEpO1xuICB6ID0geG9yKHosc2hpZnRfcih6LDMyKSk7XG4gIC8qIExDRyB1cGRhdGUgKi9cbiAgc2V0KHN0LCAxLCBhZGQgKG11bChzLE0pLCBhKSk7XG4gIC8qIFhCRyB1cGRhdGUgKi9cbiAgdmFyIHEwID0geDBcbiAgdmFyIHExID0geDFcbiAgcTEgPSB4b3IocTEscTApO1xuICBxMCA9IHJvdGwocTAsIDI0KTtcbiAgcTAgPSB4b3IoeG9yKHEwLCBxMSksIChzaGlmdF9sKHExLDE2KSkpO1xuICBxMSA9IHJvdGwocTEsIDM3KTtcbiAgc2V0KHN0LCAyLCBxMCk7XG4gIHNldChzdCwgMywgcTEpO1xuICAvKiBSZXR1cm4gcmVzdWx0ICovXG4gIHJldHVybiB6O1xufVxuIiwiXG4vL1Byb3ZpZGVzOiB6c3RkX2RlY29tcHJlc3Ncbi8vVmVyc2lvbjogPj0gNS4xXG52YXIgenN0ZF9kZWNvbXByZXNzID0gKGZ1bmN0aW9uICgpIHtcblwidXNlIHN0cmljdFwiO1xuLy8gYWxpYXNlcyBmb3Igc2hvcnRlciBjb21wcmVzc2VkIGNvZGUgKG1vc3QgbWluaWZlcnMgZG9uJ3QgZG8gdGhpcylcbnZhciBhYiA9IEFycmF5QnVmZmVyLCB1OCA9IFVpbnQ4QXJyYXksIHUxNiA9IFVpbnQxNkFycmF5LCBpMTYgPSBJbnQxNkFycmF5LCB1MzIgPSBVaW50MzJBcnJheSwgaTMyID0gSW50MzJBcnJheTtcbnZhciBzbGMgPSBmdW5jdGlvbiAodiwgcywgZSkge1xuICAgIGlmICh1OC5wcm90b3R5cGUuc2xpY2UpXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuc2xpY2UuY2FsbCh2LCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIHZhciBuID0gbmV3IHU4KGUgLSBzKTtcbiAgICBuLnNldCh2LnN1YmFycmF5KHMsIGUpKTtcbiAgICByZXR1cm4gbjtcbn07XG52YXIgZmlsbCA9IGZ1bmN0aW9uICh2LCBuLCBzLCBlKSB7XG4gICAgaWYgKHU4LnByb3RvdHlwZS5maWxsKVxuICAgICAgICByZXR1cm4gdTgucHJvdG90eXBlLmZpbGwuY2FsbCh2LCBuLCBzLCBlKTtcbiAgICBpZiAocyA9PSBudWxsIHx8IHMgPCAwKVxuICAgICAgICBzID0gMDtcbiAgICBpZiAoZSA9PSBudWxsIHx8IGUgPiB2Lmxlbmd0aClcbiAgICAgICAgZSA9IHYubGVuZ3RoO1xuICAgIGZvciAoOyBzIDwgZTsgKytzKVxuICAgICAgICB2W3NdID0gbjtcbiAgICByZXR1cm4gdjtcbn07XG52YXIgY3B3ID0gZnVuY3Rpb24gKHYsIHQsIHMsIGUpIHtcbiAgICBpZiAodTgucHJvdG90eXBlLmNvcHlXaXRoaW4pXG4gICAgICAgIHJldHVybiB1OC5wcm90b3R5cGUuY29weVdpdGhpbi5jYWxsKHYsIHQsIHMsIGUpO1xuICAgIGlmIChzID09IG51bGwgfHwgcyA8IDApXG4gICAgICAgIHMgPSAwO1xuICAgIGlmIChlID09IG51bGwgfHwgZSA+IHYubGVuZ3RoKVxuICAgICAgICBlID0gdi5sZW5ndGg7XG4gICAgd2hpbGUgKHMgPCBlKSB7XG4gICAgICAgIHZbdCsrXSA9IHZbcysrXTtcbiAgICB9XG59O1xuLyoqXG4gKiBDb2RlcyBmb3IgZXJyb3JzIGdlbmVyYXRlZCB3aXRoaW4gdGhpcyBsaWJyYXJ5XG4gKi9cbi8vIGVycm9yIGNvZGVzXG52YXIgZWMgPSBbXG4gICAgJ2ludmFsaWQgenN0ZCBkYXRhJyxcbiAgICAnd2luZG93IHNpemUgdG9vIGxhcmdlICg+MjA0Nk1CKScsXG4gICAgJ2ludmFsaWQgYmxvY2sgdHlwZScsXG4gICAgJ0ZTRSBhY2N1cmFjeSB0b28gaGlnaCcsXG4gICAgJ21hdGNoIGRpc3RhbmNlIHRvbyBmYXIgYmFjaycsXG4gICAgJ3VuZXhwZWN0ZWQgRU9GJ1xuXTtcbjtcbnZhciBlcnIgPSBmdW5jdGlvbiAoaW5kLCBtc2csIG50KSB7XG4gICAgdmFyIGUgPSBuZXcgRXJyb3IobXNnIHx8IGVjW2luZF0pO1xuICAgIGUuY29kZSA9IGluZDtcbiAgICBpZiAoIW50KVxuICAgICAgICB0aHJvdyBlO1xuICAgIHJldHVybiBlO1xufTtcbnZhciByYiA9IGZ1bmN0aW9uIChkLCBiLCBuKSB7XG4gICAgdmFyIGkgPSAwLCBvID0gMDtcbiAgICBmb3IgKDsgaSA8IG47ICsraSlcbiAgICAgICAgbyB8PSBkW2IrK10gPDwgKGkgPDwgMyk7XG4gICAgcmV0dXJuIG87XG59O1xudmFyIGI0ID0gZnVuY3Rpb24gKGQsIGIpIHsgcmV0dXJuIChkW2JdIHwgKGRbYiArIDFdIDw8IDgpIHwgKGRbYiArIDJdIDw8IDE2KSB8IChkW2IgKyAzXSA8PCAyNCkpID4+PiAwOyB9O1xuLy8gcmVhZCBac3RhbmRhcmQgZnJhbWUgaGVhZGVyXG52YXIgcnpmaCA9IGZ1bmN0aW9uIChkYXQsIHcpIHtcbiAgICB2YXIgbjMgPSBkYXRbMF0gfCAoZGF0WzFdIDw8IDgpIHwgKGRhdFsyXSA8PCAxNik7XG4gICAgaWYgKG4zID09IDB4MkZCNTI4ICYmIGRhdFszXSA9PSAyNTMpIHtcbiAgICAgICAgLy8gWnN0YW5kYXJkXG4gICAgICAgIHZhciBmbGcgPSBkYXRbNF07XG4gICAgICAgIC8vICAgIHNpbmdsZSBzZWdtZW50ICAgICAgIGNoZWNrc3VtICAgICAgICAgICAgIGRpY3QgZmxhZyAgICAgZnJhbWUgY29udGVudCBmbGFnXG4gICAgICAgIHZhciBzcyA9IChmbGcgPj4gNSkgJiAxLCBjYyA9IChmbGcgPj4gMikgJiAxLCBkZiA9IGZsZyAmIDMsIGZjZiA9IGZsZyA+PiA2O1xuICAgICAgICBpZiAoZmxnICYgOClcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgLy8gYnl0ZVxuICAgICAgICB2YXIgYnQgPSA2IC0gc3M7XG4gICAgICAgIC8vIGRpY3QgYnl0ZXNcbiAgICAgICAgdmFyIGRiID0gZGYgPT0gMyA/IDQgOiBkZjtcbiAgICAgICAgLy8gZGljdGlvbmFyeSBpZFxuICAgICAgICB2YXIgZGkgPSByYihkYXQsIGJ0LCBkYik7XG4gICAgICAgIGJ0ICs9IGRiO1xuICAgICAgICAvLyBmcmFtZSBzaXplIGJ5dGVzXG4gICAgICAgIHZhciBmc2IgPSBmY2YgPyAoMSA8PCBmY2YpIDogc3M7XG4gICAgICAgIC8vIGZyYW1lIHNvdXJjZSBzaXplXG4gICAgICAgIHZhciBmc3MgPSByYihkYXQsIGJ0LCBmc2IpICsgKChmY2YgPT0gMSkgJiYgMjU2KTtcbiAgICAgICAgLy8gd2luZG93IHNpemVcbiAgICAgICAgdmFyIHdzID0gZnNzO1xuICAgICAgICBpZiAoIXNzKSB7XG4gICAgICAgICAgICAvLyB3aW5kb3cgZGVzY3JpcHRvclxuICAgICAgICAgICAgdmFyIHdiID0gMSA8PCAoMTAgKyAoZGF0WzVdID4+IDMpKTtcbiAgICAgICAgICAgIHdzID0gd2IgKyAod2IgPj4gMykgKiAoZGF0WzVdICYgNyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHdzID4gMjE0NTM4NjQ5NilcbiAgICAgICAgICAgIGVycigxKTtcbiAgICAgICAgdmFyIGJ1ZiA9IG5ldyB1OCgodyA9PSAxID8gKGZzcyB8fCB3cykgOiB3ID8gMCA6IHdzKSArIDEyKTtcbiAgICAgICAgYnVmWzBdID0gMSwgYnVmWzRdID0gNCwgYnVmWzhdID0gODtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGI6IGJ0ICsgZnNiLFxuICAgICAgICAgICAgeTogMCxcbiAgICAgICAgICAgIGw6IDAsXG4gICAgICAgICAgICBkOiBkaSxcbiAgICAgICAgICAgIHc6ICh3ICYmIHcgIT0gMSkgPyB3IDogYnVmLnN1YmFycmF5KDEyKSxcbiAgICAgICAgICAgIGU6IHdzLFxuICAgICAgICAgICAgbzogbmV3IGkzMihidWYuYnVmZmVyLCAwLCAzKSxcbiAgICAgICAgICAgIHU6IGZzcyxcbiAgICAgICAgICAgIGM6IGNjLFxuICAgICAgICAgICAgbTogTWF0aC5taW4oMTMxMDcyLCB3cylcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSBpZiAoKChuMyA+PiA0KSB8IChkYXRbM10gPDwgMjApKSA9PSAweDE4NEQyQTUpIHtcbiAgICAgICAgLy8gc2tpcHBhYmxlXG4gICAgICAgIHJldHVybiBiNChkYXQsIDQpICsgODtcbiAgICB9XG4gICAgZXJyKDApO1xufTtcbi8vIG1vc3Qgc2lnbmlmaWNhbnQgYml0IGZvciBub256ZXJvXG52YXIgbXNiID0gZnVuY3Rpb24gKHZhbCkge1xuICAgIHZhciBiaXRzID0gMDtcbiAgICBmb3IgKDsgKDEgPDwgYml0cykgPD0gdmFsOyArK2JpdHMpXG4gICAgICAgIDtcbiAgICByZXR1cm4gYml0cyAtIDE7XG59O1xuLy8gcmVhZCBmaW5pdGUgc3RhdGUgZW50cm9weVxudmFyIHJmc2UgPSBmdW5jdGlvbiAoZGF0LCBidCwgbWFsKSB7XG4gICAgLy8gdGFibGUgcG9zXG4gICAgdmFyIHRwb3MgPSAoYnQgPDwgMykgKyA0O1xuICAgIC8vIGFjY3VyYWN5IGxvZ1xuICAgIHZhciBhbCA9IChkYXRbYnRdICYgMTUpICsgNTtcbiAgICBpZiAoYWwgPiBtYWwpXG4gICAgICAgIGVycigzKTtcbiAgICAvLyBzaXplXG4gICAgdmFyIHN6ID0gMSA8PCBhbDtcbiAgICAvLyBwcm9iYWJpbGl0aWVzIHN5bWJvbHMgIHJlcGVhdCAgIGluZGV4ICAgaGlnaCB0aHJlc2hvbGRcbiAgICB2YXIgcHJvYnMgPSBzeiwgc3ltID0gLTEsIHJlID0gLTEsIGkgPSAtMSwgaHQgPSBzejtcbiAgICAvLyBvcHRpbWl6YXRpb246IHNpbmdsZSBhbGxvY2F0aW9uIGlzIG11Y2ggZmFzdGVyXG4gICAgdmFyIGJ1ZiA9IG5ldyBhYig1MTIgKyAoc3ogPDwgMikpO1xuICAgIHZhciBmcmVxID0gbmV3IGkxNihidWYsIDAsIDI1Nik7XG4gICAgLy8gc2FtZSB2aWV3IGFzIGZyZXFcbiAgICB2YXIgZHN0YXRlID0gbmV3IHUxNihidWYsIDAsIDI1Nik7XG4gICAgdmFyIG5zdGF0ZSA9IG5ldyB1MTYoYnVmLCA1MTIsIHN6KTtcbiAgICB2YXIgYmIxID0gNTEyICsgKHN6IDw8IDEpO1xuICAgIHZhciBzeW1zID0gbmV3IHU4KGJ1ZiwgYmIxLCBzeik7XG4gICAgdmFyIG5iaXRzID0gbmV3IHU4KGJ1ZiwgYmIxICsgc3opO1xuICAgIHdoaWxlIChzeW0gPCAyNTUgJiYgcHJvYnMgPiAwKSB7XG4gICAgICAgIHZhciBiaXRzID0gbXNiKHByb2JzICsgMSk7XG4gICAgICAgIHZhciBjYnQgPSB0cG9zID4+IDM7XG4gICAgICAgIC8vIG1hc2tcbiAgICAgICAgdmFyIG1zayA9ICgxIDw8IChiaXRzICsgMSkpIC0gMTtcbiAgICAgICAgdmFyIHZhbCA9ICgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikpID4+ICh0cG9zICYgNykpICYgbXNrO1xuICAgICAgICAvLyBtYXNrICgxIGZld2VyIGJpdClcbiAgICAgICAgdmFyIG1zazFmYiA9ICgxIDw8IGJpdHMpIC0gMTtcbiAgICAgICAgLy8gbWF4IHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBtc3YgPSBtc2sgLSBwcm9icyAtIDE7XG4gICAgICAgIC8vIHNtYWxsIHZhbHVlXG4gICAgICAgIHZhciBzdmFsID0gdmFsICYgbXNrMWZiO1xuICAgICAgICBpZiAoc3ZhbCA8IG1zdilcbiAgICAgICAgICAgIHRwb3MgKz0gYml0cywgdmFsID0gc3ZhbDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0cG9zICs9IGJpdHMgKyAxO1xuICAgICAgICAgICAgaWYgKHZhbCA+IG1zazFmYilcbiAgICAgICAgICAgICAgICB2YWwgLT0gbXN2O1xuICAgICAgICB9XG4gICAgICAgIGZyZXFbKytzeW1dID0gLS12YWw7XG4gICAgICAgIGlmICh2YWwgPT0gLTEpIHtcbiAgICAgICAgICAgIHByb2JzICs9IHZhbDtcbiAgICAgICAgICAgIHN5bXNbLS1odF0gPSBzeW07XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgcHJvYnMgLT0gdmFsO1xuICAgICAgICBpZiAoIXZhbCkge1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIC8vIHJlcGVhdCBieXRlXG4gICAgICAgICAgICAgICAgdmFyIHJidCA9IHRwb3MgPj4gMztcbiAgICAgICAgICAgICAgICByZSA9ICgoZGF0W3JidF0gfCAoZGF0W3JidCArIDFdIDw8IDgpKSA+PiAodHBvcyAmIDcpKSAmIDM7XG4gICAgICAgICAgICAgICAgdHBvcyArPSAyO1xuICAgICAgICAgICAgICAgIHN5bSArPSByZTtcbiAgICAgICAgICAgIH0gd2hpbGUgKHJlID09IDMpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChzeW0gPiAyNTUgfHwgcHJvYnMpXG4gICAgICAgIGVycigwKTtcbiAgICB2YXIgc3ltcG9zID0gMDtcbiAgICAvLyBzeW0gc3RlcCAoY29wcmltZSB3aXRoIHN6IC0gZm9ybXVsYSBmcm9tIHpzdGQgc291cmNlKVxuICAgIHZhciBzc3RlcCA9IChzeiA+PiAxKSArIChzeiA+PiAzKSArIDM7XG4gICAgLy8gc3ltIG1hc2tcbiAgICB2YXIgc21hc2sgPSBzeiAtIDE7XG4gICAgZm9yICh2YXIgcyA9IDA7IHMgPD0gc3ltOyArK3MpIHtcbiAgICAgICAgdmFyIHNmID0gZnJlcVtzXTtcbiAgICAgICAgaWYgKHNmIDwgMSkge1xuICAgICAgICAgICAgZHN0YXRlW3NdID0gLXNmO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhpcyBpcyBzcGxpdCBpbnRvIHR3byBsb29wcyBpbiB6c3RkIHRvIGF2b2lkIGJyYW5jaGluZywgYnV0IGFzIEpTIGlzIGhpZ2hlci1sZXZlbCB0aGF0IGlzIHVubmVjZXNzYXJ5XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZjsgKytpKSB7XG4gICAgICAgICAgICBzeW1zW3N5bXBvc10gPSBzO1xuICAgICAgICAgICAgZG8ge1xuICAgICAgICAgICAgICAgIHN5bXBvcyA9IChzeW1wb3MgKyBzc3RlcCkgJiBzbWFzaztcbiAgICAgICAgICAgIH0gd2hpbGUgKHN5bXBvcyA+PSBodCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLy8gQWZ0ZXIgc3ByZWFkaW5nIHN5bWJvbHMsIHNob3VsZCBiZSB6ZXJvIGFnYWluXG4gICAgaWYgKHN5bXBvcylcbiAgICAgICAgZXJyKDApO1xuICAgIGZvciAoaSA9IDA7IGkgPCBzejsgKytpKSB7XG4gICAgICAgIC8vIG5leHQgc3RhdGVcbiAgICAgICAgdmFyIG5zID0gZHN0YXRlW3N5bXNbaV1dKys7XG4gICAgICAgIC8vIG51bSBiaXRzXG4gICAgICAgIHZhciBuYiA9IG5iaXRzW2ldID0gYWwgLSBtc2IobnMpO1xuICAgICAgICBuc3RhdGVbaV0gPSAobnMgPDwgbmIpIC0gc3o7XG4gICAgfVxuICAgIHJldHVybiBbKHRwb3MgKyA3KSA+PiAzLCB7XG4gICAgICAgICAgICBiOiBhbCxcbiAgICAgICAgICAgIHM6IHN5bXMsXG4gICAgICAgICAgICBuOiBuYml0cyxcbiAgICAgICAgICAgIHQ6IG5zdGF0ZVxuICAgICAgICB9XTtcbn07XG4vLyByZWFkIGh1ZmZtYW5cbnZhciByaHUgPSBmdW5jdGlvbiAoZGF0LCBidCkge1xuICAgIC8vICBpbmRleCAgd2VpZ2h0IGNvdW50XG4gICAgdmFyIGkgPSAwLCB3YyA9IC0xO1xuICAgIC8vICAgIGJ1ZmZlciAgICAgICAgICAgICBoZWFkZXIgYnl0ZVxuICAgIHZhciBidWYgPSBuZXcgdTgoMjkyKSwgaGIgPSBkYXRbYnRdO1xuICAgIC8vIGh1ZmZtYW4gd2VpZ2h0c1xuICAgIHZhciBodyA9IGJ1Zi5zdWJhcnJheSgwLCAyNTYpO1xuICAgIC8vIHJhbmsgY291bnRcbiAgICB2YXIgcmMgPSBidWYuc3ViYXJyYXkoMjU2LCAyNjgpO1xuICAgIC8vIHJhbmsgaW5kZXhcbiAgICB2YXIgcmkgPSBuZXcgdTE2KGJ1Zi5idWZmZXIsIDI2OCk7XG4gICAgLy8gTk9URTogYXQgdGhpcyBwb2ludCBidCBpcyAxIGxlc3MgdGhhbiBleHBlY3RlZFxuICAgIGlmIChoYiA8IDEyOCkge1xuICAgICAgICAvLyBlbmQgYnl0ZSwgZnNlIGRlY29kZSB0YWJsZVxuICAgICAgICB2YXIgX2EgPSByZnNlKGRhdCwgYnQgKyAxLCA2KSwgZWJ0ID0gX2FbMF0sIGZkdCA9IF9hWzFdO1xuICAgICAgICBidCArPSBoYjtcbiAgICAgICAgdmFyIGVwb3MgPSBlYnQgPDwgMztcbiAgICAgICAgLy8gbGFzdCBieXRlXG4gICAgICAgIHZhciBsYiA9IGRhdFtidF07XG4gICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgIC8vICBzdGF0ZTEgICBzdGF0ZTIgICBzdGF0ZTEgYml0cyAgIHN0YXRlMiBiaXRzXG4gICAgICAgIHZhciBzdDEgPSAwLCBzdDIgPSAwLCBidHIxID0gZmR0LmIsIGJ0cjIgPSBidHIxO1xuICAgICAgICAvLyBmc2UgcG9zXG4gICAgICAgIC8vIHByZS1pbmNyZW1lbnQgdG8gYWNjb3VudCBmb3Igb3JpZ2luYWwgZGVmaWNpdCBvZiAxXG4gICAgICAgIHZhciBmcG9zID0gKCsrYnQgPDwgMykgLSA4ICsgbXNiKGxiKTtcbiAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgZnBvcyAtPSBidHIxO1xuICAgICAgICAgICAgaWYgKGZwb3MgPCBlcG9zKVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgdmFyIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MSArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMSkgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QxXTtcbiAgICAgICAgICAgIGZwb3MgLT0gYnRyMjtcbiAgICAgICAgICAgIGlmIChmcG9zIDwgZXBvcylcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNidCA9IGZwb3MgPj4gMztcbiAgICAgICAgICAgIHN0MiArPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKGZwb3MgJiA3KSkgJiAoKDEgPDwgYnRyMikgLSAxKTtcbiAgICAgICAgICAgIGh3Wysrd2NdID0gZmR0LnNbc3QyXTtcbiAgICAgICAgICAgIGJ0cjEgPSBmZHQubltzdDFdO1xuICAgICAgICAgICAgc3QxID0gZmR0LnRbc3QxXTtcbiAgICAgICAgICAgIGJ0cjIgPSBmZHQubltzdDJdO1xuICAgICAgICAgICAgc3QyID0gZmR0LnRbc3QyXTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoKyt3YyA+IDI1NSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHdjID0gaGIgLSAxMjc7XG4gICAgICAgIGZvciAoOyBpIDwgd2M7IGkgKz0gMikge1xuICAgICAgICAgICAgdmFyIGJ5dGUgPSBkYXRbKytidF07XG4gICAgICAgICAgICBod1tpXSA9IGJ5dGUgPj4gNDtcbiAgICAgICAgICAgIGh3W2kgKyAxXSA9IGJ5dGUgJiAxNTtcbiAgICAgICAgfVxuICAgICAgICArK2J0O1xuICAgIH1cbiAgICAvLyB3ZWlnaHQgZXhwb25lbnRpYWwgc3VtXG4gICAgdmFyIHdlcyA9IDA7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgIC8vIGJpdHMgbXVzdCBiZSBhdCBtb3N0IDExLCBzYW1lIGFzIHdlaWdodFxuICAgICAgICBpZiAod3QgPiAxMSlcbiAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgd2VzICs9IHd0ICYmICgxIDw8ICh3dCAtIDEpKTtcbiAgICB9XG4gICAgLy8gbWF4IGJpdHNcbiAgICB2YXIgbWIgPSBtc2Iod2VzKSArIDE7XG4gICAgLy8gdGFibGUgc2l6ZVxuICAgIHZhciB0cyA9IDEgPDwgbWI7XG4gICAgLy8gcmVtYWluaW5nIHN1bVxuICAgIHZhciByZW0gPSB0cyAtIHdlcztcbiAgICAvLyBtdXN0IGJlIHBvd2VyIG9mIDJcbiAgICBpZiAocmVtICYgKHJlbSAtIDEpKVxuICAgICAgICBlcnIoMCk7XG4gICAgaHdbd2MrK10gPSBtc2IocmVtKSArIDE7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIHd0ID0gaHdbaV07XG4gICAgICAgICsrcmNbaHdbaV0gPSB3dCAmJiAobWIgKyAxIC0gd3QpXTtcbiAgICB9XG4gICAgLy8gaHVmIGJ1ZlxuICAgIHZhciBoYnVmID0gbmV3IHU4KHRzIDw8IDEpO1xuICAgIC8vICAgIHN5bWJvbHMgICAgICAgICAgICAgICAgICAgICAgbnVtIGJpdHNcbiAgICB2YXIgc3ltcyA9IGhidWYuc3ViYXJyYXkoMCwgdHMpLCBuYiA9IGhidWYuc3ViYXJyYXkodHMpO1xuICAgIHJpW21iXSA9IDA7XG4gICAgZm9yIChpID0gbWI7IGkgPiAwOyAtLWkpIHtcbiAgICAgICAgdmFyIHB2ID0gcmlbaV07XG4gICAgICAgIGZpbGwobmIsIGksIHB2LCByaVtpIC0gMV0gPSBwdiArIHJjW2ldICogKDEgPDwgKG1iIC0gaSkpKTtcbiAgICB9XG4gICAgaWYgKHJpWzBdICE9IHRzKVxuICAgICAgICBlcnIoMCk7XG4gICAgZm9yIChpID0gMDsgaSA8IHdjOyArK2kpIHtcbiAgICAgICAgdmFyIGJpdHMgPSBod1tpXTtcbiAgICAgICAgaWYgKGJpdHMpIHtcbiAgICAgICAgICAgIHZhciBjb2RlID0gcmlbYml0c107XG4gICAgICAgICAgICBmaWxsKHN5bXMsIGksIGNvZGUsIHJpW2JpdHNdID0gY29kZSArICgxIDw8IChtYiAtIGJpdHMpKSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIFtidCwge1xuICAgICAgICAgICAgbjogbmIsXG4gICAgICAgICAgICBiOiBtYixcbiAgICAgICAgICAgIHM6IHN5bXNcbiAgICAgICAgfV07XG59O1xuLy8gVGFibGVzIGdlbmVyYXRlZCB1c2luZyB0aGlzOlxuLy8gaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vMTAxYXJyb3d6L2E5Nzk0NTJkNDM1NTk5MmNiZjhmMjU3Y2JmZmM5ZWRkXG4vLyBkZWZhdWx0IGxpdGVyYWwgbGVuZ3RoIHRhYmxlXG52YXIgZGxsdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgODEsIDE2LCA5OSwgMTQwLCA0OSwgMTk4LCAyNCwgOTksIDEyLCAzMywgMTk2LCAyNCwgOTksIDEwMiwgMTAyLCAxMzQsIDcwLCAxNDYsIDRcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgbWF0Y2ggbGVuZ3RoIHRhYmxlXG52YXIgZG1sdCA9IC8qI19fUFVSRV9fKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzMsIDIwLCAxOTYsIDI0LCA5OSwgMTQwLCAzMywgMTMyLCAxNiwgNjYsIDgsIDMzLCAxMzIsIDE2LCA2NiwgOCwgMzMsIDY4LCA2OCwgNjgsIDY4LCA2OCwgNjgsIDY4LCA2OCwgMzYsIDlcbl0pLCAwLCA2KVsxXTtcbi8vIGRlZmF1bHQgb2Zmc2V0IGNvZGUgdGFibGVcbnZhciBkb2N0ID0gLyojX19QVVJFX18gKi8gcmZzZSgvKiNfX1BVUkVfXyovIG5ldyB1OChbXG4gICAgMzIsIDEzMiwgMTYsIDY2LCAxMDIsIDcwLCA2OCwgNjgsIDY4LCA2OCwgMzYsIDczLCAyXG5dKSwgMCwgNSlbMV07XG4vLyBiaXRzIHRvIGJhc2VsaW5lXG52YXIgYjJibCA9IGZ1bmN0aW9uIChiLCBzKSB7XG4gICAgdmFyIGxlbiA9IGIubGVuZ3RoLCBibCA9IG5ldyBpMzIobGVuKTtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgIGJsW2ldID0gcztcbiAgICAgICAgcyArPSAxIDw8IGJbaV07XG4gICAgfVxuICAgIHJldHVybiBibDtcbn07XG4vLyBsaXRlcmFsIGxlbmd0aCBiaXRzXG52YXIgbGxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDEzNDY3ODAyMCwgMjAyMDUwMDU3LCAyNjk0MjIwOTNcbl0pKS5idWZmZXIsIDAsIDM2KTtcbi8vIGxpdGVyYWwgbGVuZ3RoIGJhc2VsaW5lXG52YXIgbGxibCA9IC8qI19fUFVSRV9fICovIGIyYmwobGxiLCAwKTtcbi8vIG1hdGNoIGxlbmd0aCBiaXRzXG52YXIgbWxiID0gLyojX19QVVJFX18gKi8gbmV3IHU4KCggLyojX19QVVJFX18gKi9uZXcgaTMyKFtcbiAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjg0MzAwOSwgNTA1Mjg3NzAsIDExNzc2OTIyMCwgMTg1MjA3MDQ4LCAyNTI1NzkwODQsIDE2XG5dKSkuYnVmZmVyLCAwLCA1Myk7XG4vLyBtYXRjaCBsZW5ndGggYmFzZWxpbmVcbnZhciBtbGJsID0gLyojX19QVVJFX18gKi8gYjJibChtbGIsIDMpO1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtXG52YXIgZGh1ID0gZnVuY3Rpb24gKGRhdCwgb3V0LCBodSkge1xuICAgIHZhciBsZW4gPSBkYXQubGVuZ3RoLCBzcyA9IG91dC5sZW5ndGgsIGxiID0gZGF0W2xlbiAtIDFdLCBtc2sgPSAoMSA8PCBodS5iKSAtIDEsIGViID0gLWh1LmI7XG4gICAgaWYgKCFsYilcbiAgICAgICAgZXJyKDApO1xuICAgIHZhciBzdCA9IDAsIGJ0ciA9IGh1LmIsIHBvcyA9IChsZW4gPDwgMykgLSA4ICsgbXNiKGxiKSAtIGJ0ciwgaSA9IC0xO1xuICAgIGZvciAoOyBwb3MgPiBlYiAmJiBpIDwgc3M7KSB7XG4gICAgICAgIHZhciBjYnQgPSBwb3MgPj4gMztcbiAgICAgICAgdmFyIHZhbCA9IChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHBvcyAmIDcpO1xuICAgICAgICBzdCA9ICgoc3QgPDwgYnRyKSB8IHZhbCkgJiBtc2s7XG4gICAgICAgIG91dFsrK2ldID0gaHUuc1tzdF07XG4gICAgICAgIHBvcyAtPSAoYnRyID0gaHUubltzdF0pO1xuICAgIH1cbiAgICBpZiAocG9zICE9IGViIHx8IGkgKyAxICE9IHNzKVxuICAgICAgICBlcnIoMCk7XG59O1xuLy8gZGVjb2RlIGh1ZmZtYW4gc3RyZWFtIDR4XG4vLyBUT0RPOiB1c2Ugd29ya2VycyB0byBwYXJhbGxlbGl6ZVxudmFyIGRodTQgPSBmdW5jdGlvbiAoZGF0LCBvdXQsIGh1KSB7XG4gICAgdmFyIGJ0ID0gNjtcbiAgICB2YXIgc3MgPSBvdXQubGVuZ3RoLCBzejEgPSAoc3MgKyAzKSA+PiAyLCBzejIgPSBzejEgPDwgMSwgc3ozID0gc3oxICsgc3oyO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFswXSB8IChkYXRbMV0gPDwgOCkpLCBvdXQuc3ViYXJyYXkoMCwgc3oxKSwgaHUpO1xuICAgIGRodShkYXQuc3ViYXJyYXkoYnQsIGJ0ICs9IGRhdFsyXSB8IChkYXRbM10gPDwgOCkpLCBvdXQuc3ViYXJyYXkoc3oxLCBzejIpLCBodSk7XG4gICAgZGh1KGRhdC5zdWJhcnJheShidCwgYnQgKz0gZGF0WzRdIHwgKGRhdFs1XSA8PCA4KSksIG91dC5zdWJhcnJheShzejIsIHN6MyksIGh1KTtcbiAgICBkaHUoZGF0LnN1YmFycmF5KGJ0KSwgb3V0LnN1YmFycmF5KHN6MyksIGh1KTtcbn07XG4vLyByZWFkIFpzdGFuZGFyZCBibG9ja1xudmFyIHJ6YiA9IGZ1bmN0aW9uIChkYXQsIHN0LCBvdXQpIHtcbiAgICB2YXIgX2E7XG4gICAgdmFyIGJ0ID0gc3QuYjtcbiAgICAvLyAgICBieXRlIDAgICAgICAgIGJsb2NrIHR5cGVcbiAgICB2YXIgYjAgPSBkYXRbYnRdLCBidHlwZSA9IChiMCA+PiAxKSAmIDM7XG4gICAgc3QubCA9IGIwICYgMTtcbiAgICB2YXIgc3ogPSAoYjAgPj4gMykgfCAoZGF0W2J0ICsgMV0gPDwgNSkgfCAoZGF0W2J0ICsgMl0gPDwgMTMpO1xuICAgIC8vIGVuZCBieXRlIGZvciBibG9ja1xuICAgIHZhciBlYnQgPSAoYnQgKz0gMykgKyBzejtcbiAgICBpZiAoYnR5cGUgPT0gMSkge1xuICAgICAgICBpZiAoYnQgPj0gZGF0Lmxlbmd0aClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgc3QuYiA9IGJ0ICsgMTtcbiAgICAgICAgaWYgKG91dCkge1xuICAgICAgICAgICAgZmlsbChvdXQsIGRhdFtidF0sIHN0LnksIHN0LnkgKz0gc3opO1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsbChuZXcgdTgoc3opLCBkYXRbYnRdKTtcbiAgICB9XG4gICAgaWYgKGVidCA+IGRhdC5sZW5ndGgpXG4gICAgICAgIHJldHVybjtcbiAgICBpZiAoYnR5cGUgPT0gMCkge1xuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICBvdXQuc2V0KGRhdC5zdWJhcnJheShidCwgZWJ0KSwgc3QueSk7XG4gICAgICAgICAgICBzdC55ICs9IHN6O1xuICAgICAgICAgICAgcmV0dXJuIG91dDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gc2xjKGRhdCwgYnQsIGVidCk7XG4gICAgfVxuICAgIGlmIChidHlwZSA9PSAyKSB7XG4gICAgICAgIC8vICAgIGJ5dGUgMyAgICAgICAgbGl0IGJ0eXBlICAgICBzaXplIGZvcm1hdFxuICAgICAgICB2YXIgYjMgPSBkYXRbYnRdLCBsYnQgPSBiMyAmIDMsIHNmID0gKGIzID4+IDIpICYgMztcbiAgICAgICAgLy8gbGl0IHNyYyBzaXplICBsaXQgY21wIHN6IDQgc3RyZWFtc1xuICAgICAgICB2YXIgbHNzID0gYjMgPj4gNCwgbGNzID0gMCwgczQgPSAwO1xuICAgICAgICBpZiAobGJ0IDwgMikge1xuICAgICAgICAgICAgaWYgKHNmICYgMSlcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoc2YgJiAyKSAmJiAoZGF0WysrYnRdIDw8IDEyKSk7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzID0gYjMgPj4gMztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHM0ID0gc2Y7XG4gICAgICAgICAgICBpZiAoc2YgPCAyKVxuICAgICAgICAgICAgICAgIGxzcyB8PSAoKGRhdFsrK2J0XSAmIDYzKSA8PCA0KSwgbGNzID0gKGRhdFtidF0gPj4gNikgfCAoZGF0WysrYnRdIDw8IDIpO1xuICAgICAgICAgICAgZWxzZSBpZiAoc2YgPT0gMilcbiAgICAgICAgICAgICAgICBsc3MgfD0gKGRhdFsrK2J0XSA8PCA0KSB8ICgoZGF0WysrYnRdICYgMykgPDwgMTIpLCBsY3MgPSAoZGF0W2J0XSA+PiAyKSB8IChkYXRbKytidF0gPDwgNik7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbHNzIHw9IChkYXRbKytidF0gPDwgNCkgfCAoKGRhdFsrK2J0XSAmIDYzKSA8PCAxMiksIGxjcyA9IChkYXRbYnRdID4+IDYpIHwgKGRhdFsrK2J0XSA8PCAyKSB8IChkYXRbKytidF0gPDwgMTApO1xuICAgICAgICB9XG4gICAgICAgICsrYnQ7XG4gICAgICAgIC8vIGFkZCBsaXRlcmFscyB0byBlbmQgLSBjYW4gbmV2ZXIgb3ZlcmxhcCB3aXRoIGJhY2tyZWZlcmVuY2VzIGJlY2F1c2UgdW51c2VkIGxpdGVyYWxzIGFsd2F5cyBhcHBlbmRlZFxuICAgICAgICB2YXIgYnVmID0gb3V0ID8gb3V0LnN1YmFycmF5KHN0LnksIHN0LnkgKyBzdC5tKSA6IG5ldyB1OChzdC5tKTtcbiAgICAgICAgLy8gc3RhcnRpbmcgcG9pbnQgZm9yIGxpdGVyYWxzXG4gICAgICAgIHZhciBzcGwgPSBidWYubGVuZ3RoIC0gbHNzO1xuICAgICAgICBpZiAobGJ0ID09IDApXG4gICAgICAgICAgICBidWYuc2V0KGRhdC5zdWJhcnJheShidCwgYnQgKz0gbHNzKSwgc3BsKTtcbiAgICAgICAgZWxzZSBpZiAobGJ0ID09IDEpXG4gICAgICAgICAgICBmaWxsKGJ1ZiwgZGF0W2J0KytdLCBzcGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIC8vIGh1ZmZtYW4gdGFibGVcbiAgICAgICAgICAgIHZhciBodSA9IHN0Lmg7XG4gICAgICAgICAgICBpZiAobGJ0ID09IDIpIHtcbiAgICAgICAgICAgICAgICB2YXIgaHVkID0gcmh1KGRhdCwgYnQpO1xuICAgICAgICAgICAgICAgIC8vIHN1YnRyYWN0IGRlc2NyaXB0aW9uIGxlbmd0aFxuICAgICAgICAgICAgICAgIGxjcyArPSBidCAtIChidCA9IGh1ZFswXSk7XG4gICAgICAgICAgICAgICAgc3QuaCA9IGh1ID0gaHVkWzFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoIWh1KVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIChzNCA/IGRodTQgOiBkaHUpKGRhdC5zdWJhcnJheShidCwgYnQgKz0gbGNzKSwgYnVmLnN1YmFycmF5KHNwbCksIGh1KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBudW0gc2VxdWVuY2VzXG4gICAgICAgIHZhciBucyA9IGRhdFtidCsrXTtcbiAgICAgICAgaWYgKG5zKSB7XG4gICAgICAgICAgICBpZiAobnMgPT0gMjU1KVxuICAgICAgICAgICAgICAgIG5zID0gKGRhdFtidCsrXSB8IChkYXRbYnQrK10gPDwgOCkpICsgMHg3RjAwO1xuICAgICAgICAgICAgZWxzZSBpZiAobnMgPiAxMjcpXG4gICAgICAgICAgICAgICAgbnMgPSAoKG5zIC0gMTI4KSA8PCA4KSB8IGRhdFtidCsrXTtcbiAgICAgICAgICAgIC8vIHN5bWJvbCBjb21wcmVzc2lvbiBtb2Rlc1xuICAgICAgICAgICAgdmFyIHNjbSA9IGRhdFtidCsrXTtcbiAgICAgICAgICAgIGlmIChzY20gJiAzKVxuICAgICAgICAgICAgICAgIGVycigwKTtcbiAgICAgICAgICAgIHZhciBkdHMgPSBbZG1sdCwgZG9jdCwgZGxsdF07XG4gICAgICAgICAgICBmb3IgKHZhciBpID0gMjsgaSA+IC0xOyAtLWkpIHtcbiAgICAgICAgICAgICAgICB2YXIgbWQgPSAoc2NtID4+ICgoaSA8PCAxKSArIDIpKSAmIDM7XG4gICAgICAgICAgICAgICAgaWYgKG1kID09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gcmxlIGJ1ZlxuICAgICAgICAgICAgICAgICAgICB2YXIgcmJ1ZiA9IG5ldyB1OChbMCwgMCwgZGF0W2J0KytdXSk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM6IHJidWYuc3ViYXJyYXkoMiwgMyksXG4gICAgICAgICAgICAgICAgICAgICAgICBuOiByYnVmLnN1YmFycmF5KDAsIDEpLFxuICAgICAgICAgICAgICAgICAgICAgICAgdDogbmV3IHUxNihyYnVmLmJ1ZmZlciwgMCwgMSksXG4gICAgICAgICAgICAgICAgICAgICAgICBiOiAwXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKG1kID09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gYWNjdXJhY3kgbG9nIDggZm9yIG9mZnNldHMsIDkgZm9yIG90aGVyc1xuICAgICAgICAgICAgICAgICAgICBfYSA9IHJmc2UoZGF0LCBidCwgOSAtIChpICYgMSkpLCBidCA9IF9hWzBdLCBkdHNbaV0gPSBfYVsxXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAobWQgPT0gMykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIXN0LnQpXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnIoMCk7XG4gICAgICAgICAgICAgICAgICAgIGR0c1tpXSA9IHN0LnRbaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF9iID0gc3QudCA9IGR0cywgbWx0ID0gX2JbMF0sIG9jdCA9IF9iWzFdLCBsbHQgPSBfYlsyXTtcbiAgICAgICAgICAgIHZhciBsYiA9IGRhdFtlYnQgLSAxXTtcbiAgICAgICAgICAgIGlmICghbGIpXG4gICAgICAgICAgICAgICAgZXJyKDApO1xuICAgICAgICAgICAgdmFyIHNwb3MgPSAoZWJ0IDw8IDMpIC0gOCArIG1zYihsYikgLSBsbHQuYiwgY2J0ID0gc3BvcyA+PiAzLCBvdWJ0ID0gMDtcbiAgICAgICAgICAgIHZhciBsc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbGx0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBvY3QuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBvc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2N0LmIpIC0gMSk7XG4gICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbHQuYikgPj4gMztcbiAgICAgICAgICAgIHZhciBtc3QgPSAoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWx0LmIpIC0gMSk7XG4gICAgICAgICAgICBmb3IgKCsrbnM7IC0tbnM7KSB7XG4gICAgICAgICAgICAgICAgdmFyIGxsYyA9IGxsdC5zW2xzdF07XG4gICAgICAgICAgICAgICAgdmFyIGxidHIgPSBsbHQubltsc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtbGMgPSBtbHQuc1ttc3RdO1xuICAgICAgICAgICAgICAgIHZhciBtYnRyID0gbWx0Lm5bbXN0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2ZjID0gb2N0LnNbb3N0XTtcbiAgICAgICAgICAgICAgICB2YXIgb2J0ciA9IG9jdC5uW29zdF07XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gb2ZjKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBvZnAgPSAxIDw8IG9mYztcbiAgICAgICAgICAgICAgICB2YXIgb2ZmID0gb2ZwICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpIHwgKGRhdFtjYnQgKyAyXSA8PCAxNikgfCAoZGF0W2NidCArIDNdIDw8IDI0KSkgPj4+IChzcG9zICYgNykpICYgKG9mcCAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtbGJbbWxjXSkgPj4gMztcbiAgICAgICAgICAgICAgICB2YXIgbWwgPSBtbGJsW21sY10gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkgfCAoZGF0W2NidCArIDJdIDw8IDE2KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgbWxiW21sY10pIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IGxsYltsbGNdKSA+PiAzO1xuICAgICAgICAgICAgICAgIHZhciBsbCA9IGxsYmxbbGxjXSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSB8IChkYXRbY2J0ICsgMl0gPDwgMTYpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsbGJbbGxjXSkgLSAxKSk7XG4gICAgICAgICAgICAgICAgY2J0ID0gKHNwb3MgLT0gbGJ0cikgPj4gMztcbiAgICAgICAgICAgICAgICBsc3QgPSBsbHQudFtsc3RdICsgKCgoZGF0W2NidF0gfCAoZGF0W2NidCArIDFdIDw8IDgpKSA+PiAoc3BvcyAmIDcpKSAmICgoMSA8PCBsYnRyKSAtIDEpKTtcbiAgICAgICAgICAgICAgICBjYnQgPSAoc3BvcyAtPSBtYnRyKSA+PiAzO1xuICAgICAgICAgICAgICAgIG1zdCA9IG1sdC50W21zdF0gKyAoKChkYXRbY2J0XSB8IChkYXRbY2J0ICsgMV0gPDwgOCkpID4+IChzcG9zICYgNykpICYgKCgxIDw8IG1idHIpIC0gMSkpO1xuICAgICAgICAgICAgICAgIGNidCA9IChzcG9zIC09IG9idHIpID4+IDM7XG4gICAgICAgICAgICAgICAgb3N0ID0gb2N0LnRbb3N0XSArICgoKGRhdFtjYnRdIHwgKGRhdFtjYnQgKyAxXSA8PCA4KSkgPj4gKHNwb3MgJiA3KSkgJiAoKDEgPDwgb2J0cikgLSAxKSk7XG4gICAgICAgICAgICAgICAgaWYgKG9mZiA+IDMpIHtcbiAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgIHN0Lm9bMV0gPSBzdC5vWzBdO1xuICAgICAgICAgICAgICAgICAgICBzdC5vWzBdID0gb2ZmIC09IDM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaWR4ID0gb2ZmIC0gKGxsICE9IDApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaWR4KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvZmYgPSBpZHggPT0gMyA/IHN0Lm9bMF0gLSAxIDogc3Qub1tpZHhdO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlkeCA+IDEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Qub1syXSA9IHN0Lm9bMV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzdC5vWzFdID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0Lm9bMF0gPSBvZmY7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgb2ZmID0gc3Qub1swXTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsbDsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZltvdWJ0ICsgaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbGwsIHNwbCArPSBsbDtcbiAgICAgICAgICAgICAgICB2YXIgc3RpbiA9IG91YnQgLSBvZmY7XG4gICAgICAgICAgICAgICAgaWYgKHN0aW4gPCAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsZW4gPSAtc3RpbjtcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJzID0gc3QuZSArIHN0aW47XG4gICAgICAgICAgICAgICAgICAgIGlmIChsZW4gPiBtbClcbiAgICAgICAgICAgICAgICAgICAgICAgIGxlbiA9IG1sO1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbb3VidCArIGldID0gc3Qud1ticyArIGldO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG91YnQgKz0gbGVuLCBtbCAtPSBsZW4sIHN0aW4gPSAwO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1sOyArK2kpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmW291YnQgKyBpXSA9IGJ1ZltzdGluICsgaV07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIG91YnQgKz0gbWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAob3VidCAhPSBzcGwpIHtcbiAgICAgICAgICAgICAgICB3aGlsZSAoc3BsIDwgYnVmLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZbb3VidCsrXSA9IGJ1ZltzcGwrK107XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIG91YnQgPSBidWYubGVuZ3RoO1xuICAgICAgICAgICAgaWYgKG91dClcbiAgICAgICAgICAgICAgICBzdC55ICs9IG91YnQ7XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1ZiwgMCwgb3VidCk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBpZiAob3V0KSB7XG4gICAgICAgICAgICAgICAgc3QueSArPSBsc3M7XG4gICAgICAgICAgICAgICAgaWYgKHNwbCkge1xuICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxzczsgKytpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBidWZbaV0gPSBidWZbc3BsICsgaV07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChzcGwpXG4gICAgICAgICAgICAgICAgYnVmID0gc2xjKGJ1Ziwgc3BsKTtcbiAgICAgICAgfVxuICAgICAgICBzdC5iID0gZWJ0O1xuICAgICAgICByZXR1cm4gYnVmO1xuICAgIH1cbiAgICBlcnIoMik7XG59O1xuLy8gY29uY2F0XG52YXIgY2N0ID0gZnVuY3Rpb24gKGJ1ZnMsIG9sKSB7XG4gICAgaWYgKGJ1ZnMubGVuZ3RoID09IDEpXG4gICAgICAgIHJldHVybiBidWZzWzBdO1xuICAgIHZhciBidWYgPSBuZXcgdTgob2wpO1xuICAgIGZvciAodmFyIGkgPSAwLCBiID0gMDsgaSA8IGJ1ZnMubGVuZ3RoOyArK2kpIHtcbiAgICAgICAgdmFyIGNoayA9IGJ1ZnNbaV07XG4gICAgICAgIGJ1Zi5zZXQoY2hrLCBiKTtcbiAgICAgICAgYiArPSBjaGsubGVuZ3RoO1xuICAgIH1cbiAgICByZXR1cm4gYnVmO1xufTtcbi8qKlxuICogRGVjb21wcmVzc2VzIFpzdGFuZGFyZCBkYXRhXG4gKiBAcGFyYW0gZGF0IFRoZSBpbnB1dCBkYXRhXG4gKiBAcGFyYW0gYnVmIFRoZSBvdXRwdXQgYnVmZmVyLiBJZiB1bnNwZWNpZmllZCwgdGhlIGZ1bmN0aW9uIHdpbGwgYWxsb2NhdGVcbiAqICAgICAgICAgICAgZXhhY3RseSBlbm91Z2ggbWVtb3J5IHRvIGZpdCB0aGUgZGVjb21wcmVzc2VkIGRhdGEuIElmIHlvdXJcbiAqICAgICAgICAgICAgZGF0YSBoYXMgbXVsdGlwbGUgZnJhbWVzIGFuZCB5b3Uga25vdyB0aGUgb3V0cHV0IHNpemUsIHNwZWNpZnlpbmdcbiAqICAgICAgICAgICAgaXQgd2lsbCB5aWVsZCBiZXR0ZXIgcGVyZm9ybWFuY2UuXG4gKiBAcmV0dXJucyBUaGUgZGVjb21wcmVzc2VkIGRhdGFcbiAqL1xucmV0dXJuIGZ1bmN0aW9uIGRlY29tcHJlc3MoZGF0LCBidWYpIHtcbiAgICB2YXIgYnQgPSAwLCBidWZzID0gW10sIG5iID0gKyFidWYsIG9sID0gMDtcbiAgICBmb3IgKDsgZGF0Lmxlbmd0aDspIHtcbiAgICAgICAgdmFyIHN0ID0gcnpmaChkYXQsIG5iIHx8IGJ1Zik7XG4gICAgICAgIGlmICh0eXBlb2Ygc3QgPT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIGlmIChuYikge1xuICAgICAgICAgICAgICAgIGJ1ZiA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKHN0LncubGVuZ3RoID09IHN0LnUpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmcy5wdXNoKGJ1ZiA9IHN0LncpO1xuICAgICAgICAgICAgICAgICAgICBvbCArPSBzdC51O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGJ1ZnMucHVzaChidWYpO1xuICAgICAgICAgICAgICAgIHN0LmUgPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7ICFzdC5sOykge1xuICAgICAgICAgICAgICAgIHZhciBibGsgPSByemIoZGF0LCBzdCwgYnVmKTtcbiAgICAgICAgICAgICAgICBpZiAoIWJsaylcbiAgICAgICAgICAgICAgICAgICAgZXJyKDUpO1xuICAgICAgICAgICAgICAgIGlmIChidWYpXG4gICAgICAgICAgICAgICAgICAgIHN0LmUgPSBzdC55O1xuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBidWZzLnB1c2goYmxrKTtcbiAgICAgICAgICAgICAgICAgICAgb2wgKz0gYmxrLmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgY3B3KHN0LncsIDAsIGJsay5sZW5ndGgpO1xuICAgICAgICAgICAgICAgICAgICBzdC53LnNldChibGssIHN0LncubGVuZ3RoIC0gYmxrLmxlbmd0aCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnQgPSBzdC5iICsgKHN0LmMgKiA0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBidCA9IHN0O1xuICAgICAgICBkYXQgPSBkYXQuc3ViYXJyYXkoYnQpO1xuICAgIH1cbiAgICByZXR1cm4gY2N0KGJ1ZnMsIG9sKTtcbn1cbn0pICgpXG5cblxuLy9Qcm92aWRlczogY2FtbF9kZWNvbXByZXNzX2lucHV0XG4vL1ZlcnNpb246IDwgNS4xLjBcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSBudWxsXG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMFxuLy9WZXJzaW9uOiA8IDUuMS4xXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfZGVjb21wcmVzc19pbnB1dFxuLy9WZXJzaW9uOiA+PSA1LjEuMVxuLy9WZXJzaW9uOiA8IDUuMi4wXG52YXIgY2FtbF9kZWNvbXByZXNzX2lucHV0ID0gbnVsbFxuXG4vL1Byb3ZpZGVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vVmVyc2lvbjogPj0gNS4yXG4vL1JlcXVpcmVzOiB6c3RkX2RlY29tcHJlc3NcbnZhciBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG5cbi8vUHJvdmlkZXM6IGNhbWxfenN0ZF9pbml0aWFsaXplXG4vL1JlcXVpcmVzOiBjYW1sX2RlY29tcHJlc3NfaW5wdXRcbi8vUmVxdWlyZXM6IHpzdGRfZGVjb21wcmVzc1xuLy9WZXJzaW9uOiA+PSA1LjEuMVxuZnVuY3Rpb24gY2FtbF96c3RkX2luaXRpYWxpemUodW5pdCkge1xuICBjYW1sX2RlY29tcHJlc3NfaW5wdXQgPSB6c3RkX2RlY29tcHJlc3M7XG4gIHJldHVybiAxXG59XG5cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICBCZW5vaXQgVmF1Z29uLCBFTlNUQSAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUGFkZGluZyBwb3NpdGlvbi4gKilcbnR5cGUgcGFkdHkgPVxuICB8IExlZnQgICAoKiBUZXh0IGlzIGxlZnQganVzdGlmaWVkICgnLScgb3B0aW9uKS4gICAgICAgICAgICAgICAqKVxuICB8IFJpZ2h0ICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCAobm8gJy0nIG9wdGlvbikuICAgICAgICAgICAqKVxuICB8IFplcm9zICAoKiBUZXh0IGlzIHJpZ2h0IGp1c3RpZmllZCBieSB6ZXJvcyAoc2VlICcwJyBvcHRpb24pLiAqKVxuXG4oKioqKVxuXG4oKiBJbnRlZ2VyIGNvbnZlcnNpb24uICopXG50eXBlIGludF9jb252ID1cbiAgfCBJbnRfZCB8IEludF9wZCB8IEludF9zZCAgICAgICAgKCogICVkIHwgJStkIHwgJSBkICAqKVxuICB8IEludF9pIHwgSW50X3BpIHwgSW50X3NpICAgICAgICAoKiAgJWkgfCAlK2kgfCAlIGkgICopXG4gIHwgSW50X3ggfCBJbnRfQ3ggICAgICAgICAgICAgICAgICgqICAleCB8ICUjeCAgICAgICAgKilcbiAgfCBJbnRfWCB8IEludF9DWCAgICAgICAgICAgICAgICAgKCogICVYIHwgJSNYICAgICAgICAqKVxuICB8IEludF9vIHwgSW50X0NvICAgICAgICAgICAgICAgICAoKiAgJW8gfCAlI28gICAgICAgICopXG4gIHwgSW50X3UgICAgICAgICAgICAgICAgICAgICAgICAgICgqICAldSAgICAgICAgICAgICAgKilcbiAgfCBJbnRfQ2QgfCBJbnRfQ2kgfCBJbnRfQ3UgICAgICAgKCogICUjZCB8ICUjaSB8ICUjdSAqKVxuXG4oKiBGbG9hdCBjb252ZXJzaW9uLiAqKVxudHlwZSBmbG9hdF9mbGFnX2NvbnYgPVxuICB8IEZsb2F0X2ZsYWdfICAgICAgICAgICAgICAgICAgICAoKiAlW2ZlRWdHRmhIXSAqKVxuICB8IEZsb2F0X2ZsYWdfcCAgICAgICAgICAgICAgICAgICAoKiAlK1tmZUVnR0ZoSF0gKilcbiAgfCBGbG9hdF9mbGFnX3MgICAgICAgICAgICAgICAgICAgKCogJSBbZmVFZ0dGaEhdICopXG50eXBlIGZsb2F0X2tpbmRfY29udiA9XG4gIHwgRmxvYXRfZiAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZiB8ICUrZiB8ICUgZiAgKilcbiAgfCBGbG9hdF9lICAgICAgICAgICAgICAgICAgICAgICAgKCogICVlIHwgJStlIHwgJSBlICAqKVxuICB8IEZsb2F0X0UgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUUgfCAlK0UgfCAlIEUgICopXG4gIHwgRmxvYXRfZyAgICAgICAgICAgICAgICAgICAgICAgICgqICAlZyB8ICUrZyB8ICUgZyAgKilcbiAgfCBGbG9hdF9HICAgICAgICAgICAgICAgICAgICAgICAgKCogICVHIHwgJStHIHwgJSBHICAqKVxuICB8IEZsb2F0X0YgICAgICAgICAgICAgICAgICAgICAgICAoKiAgJUYgfCAlK0YgfCAlIEYgICopXG4gIHwgRmxvYXRfaCAgICAgICAgICAgICAgICAgICAgICAgICgqICAlaCB8ICUraCB8ICUgaCAgKilcbiAgfCBGbG9hdF9IICAgICAgICAgICAgICAgICAgICAgICAgKCogICVIIHwgJStIIHwgJSBIICAqKVxuICB8IEZsb2F0X0NGICAgICAgICAgICAgICAgICAgICAgICAoKiAgJSNGfCAlKyNGfCAlICNGICopXG50eXBlIGZsb2F0X2NvbnYgPSBmbG9hdF9mbGFnX2NvbnYgKiBmbG9hdF9raW5kX2NvbnZcblxuKCoqKilcblxuKCogQ2hhciBzZXRzIChzZWUgJVsuLi5dKSBhcmUgYml0bWFwcyBpbXBsZW1lbnRlZCBhcyAzMi1jaGFyIHN0cmluZ3MuICopXG50eXBlIGNoYXJfc2V0ID0gc3RyaW5nXG5cbigqKiopXG5cbigqIENvdW50ZXIgdXNlZCBpbiBTY2FuZi4gKilcbnR5cGUgY291bnRlciA9XG4gIHwgTGluZV9jb3VudGVyICAgICAoKiAgJWwgICAgICAqKVxuICB8IENoYXJfY291bnRlciAgICAgKCogICVuICAgICAgKilcbiAgfCBUb2tlbl9jb3VudGVyICAgICgqICAlTiwgJUwgICopXG5cbigqKiopXG5cbigqIFBhZGRpbmcgb2Ygc3RyaW5ncyBhbmQgbnVtYmVycy4gKilcbnR5cGUgKCdhLCAnYikgcGFkZGluZyA9XG4gICgqIE5vIHBhZGRpbmcgKGV4OiBcIiVkXCIpICopXG4gIHwgTm9fcGFkZGluZyAgOiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIExpdGVyYWwgcGFkZGluZyAoZXg6IFwiJThkXCIpICopXG4gIHwgTGl0X3BhZGRpbmcgOiBwYWR0eSAqIGludCAtPiAoJ2EsICdhKSBwYWRkaW5nXG4gICgqIFBhZGRpbmcgYXMgZXh0cmEgYXJndW1lbnQgKGV4OiBcIiUqZFwiKSAqKVxuICB8IEFyZ19wYWRkaW5nIDogcGFkdHkgLT4gKGludCAtPiAnYSwgJ2EpIHBhZGRpbmdcblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZCxcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwYWRkaW5nIG9wdGlvbiAobm8gZXh0cmEgYXJndW1lbnQpICopXG50eXBlIHBhZF9vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIFByZWNpc2lvbiBvZiBmbG9hdHMgYW5kICcwJy1wYWRkaW5nIG9mIGludGVnZXJzLiAqKVxudHlwZSAoJ2EsICdiKSBwcmVjaXNpb24gPVxuICAoKiBObyBwcmVjaXNpb24gKGV4OiBcIiVmXCIpICopXG4gIHwgTm9fcHJlY2lzaW9uIDogKCdhLCAnYSkgcHJlY2lzaW9uXG4gICgqIExpdGVyYWwgcHJlY2lzaW9uIChleDogXCIlLjNmXCIpICopXG4gIHwgTGl0X3ByZWNpc2lvbiA6IGludCAtPiAoJ2EsICdhKSBwcmVjaXNpb25cbiAgKCogUHJlY2lzaW9uIGFzIGV4dHJhIGFyZ3VtZW50IChleDogXCIlLipmXCIpICopXG4gIHwgQXJnX3ByZWNpc2lvbiA6IChpbnQgLT4gJ2EsICdhKSBwcmVjaXNpb25cblxuKCogU29tZSBmb3JtYXRzLCBzdWNoIGFzICVfZixcbiAgIG9ubHkgYWNjZXB0IGFuIG9wdGlvbmFsIG51bWJlciBhcyBwcmVjaXNpb24gb3B0aW9uIChubyBleHRyYSBhcmd1bWVudCkgKilcbnR5cGUgcHJlY19vcHRpb24gPSBpbnQgb3B0aW9uXG5cbigqIHNlZSB0aGUgQ3VzdG9tIGZvcm1hdCBjb21iaW5hdG9yICopXG50eXBlICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgPVxuICB8IEN1c3RvbV96ZXJvIDogKCdhLCBzdHJpbmcsICdhKSBjdXN0b21fYXJpdHlcbiAgfCBDdXN0b21fc3VjYyA6ICgnYSwgJ2IsICdjKSBjdXN0b21fYXJpdHkgLT5cbiAgICAoJ2EsICd4IC0+ICdiLCAneCAtPiAnYykgY3VzdG9tX2FyaXR5XG5cbigqKiopXG5cbigqICAgICAgICBSZWxhdGlvbmFsIGZvcm1hdCB0eXBlc1xuXG5JbiB0aGUgZmlyc3QgZm9ybWF0K2dhZHRzIGltcGxlbWVudGF0aW9uLCB0aGUgdHlwZSBmb3IgJSguLiUpIGluIHRoZVxuZm10IEdBRFQgd2FzIGFzIGZvbGxvd3M6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKiAoJ2QxLCAncTEsICdkMiwgJ3EyKSByZWFkZXJfbmJfdW5pZmllciAqXG4gICAgKCd4LCAnYiwgJ2MsICdkMSwgJ3ExLCAndSkgZm10dHkgKlxuICAgICgndSwgJ2IsICdjLCAncTEsICdlMSwgJ2YpIGZtdCAtPlxuICAgICAgKCgneCwgJ2IsICdjLCAnZDIsICdxMiwgJ3UpIGZvcm1hdDYgLT4gJ3gsICdiLCAnYywgJ2QxLCAnZTEsICdmKSBmbXRcblxuTm90aWNlIHRoYXQgdGhlICd1IHBhcmFtZXRlciBpbiAnZiBwb3NpdGlvbiBpbiB0aGUgZm9ybWF0IGFyZ3VtZW50XG4oKCd4LCAuLiwgJ3UpIGZvcm1hdDYgLT4gLi4pIGlzIGVxdWFsIHRvIHRoZSAndSBwYXJhbWV0ZXIgaW4gJ2FcbnBvc2l0aW9uIGluIHRoZSBmb3JtYXQgdGFpbCAoKCd1LCAuLiwgJ2YpIGZtdCkuIFRoaXMgbWVhbnMgdGhhdCB0aGVcbnR5cGUgb2YgdGhlIGV4cGVjdGVkIGZvcm1hdCBwYXJhbWV0ZXIgZGVwZW5kcyBvZiB3aGVyZSB0aGUgJSguLi4lKVxuYXJlIGluIHRoZSBmb3JtYXQgc3RyaW5nOlxuXG4gICMgUHJpbnRmLnByaW50ZiBcIiUoJSlcIlxuICAtIDogKHVuaXQsIG91dF9jaGFubmVsLCB1bml0LCAnX2EsICdfYSwgdW5pdClcbiAgICAgIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mb3JtYXQ2IC0+IHVuaXRcbiAgPSA8ZnVuPlxuICAjIFByaW50Zi5wcmludGYgXCIlKCUpJWRcIlxuICAtIDogKGludCAtPiB1bml0LCBvdXRfY2hhbm5lbCwgdW5pdCwgJ19hLCAnX2EsIGludCAtPiB1bml0KVxuICAgICAgQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmZvcm1hdDYgLT4gaW50IC0+IHVuaXRcbiAgPSA8ZnVuPlxuXG5PbiB0aGUgY29udHJhcnksIHRoZSBsZWdhY3kgdHlwZXIgZ2l2ZXMgYSBjbGV2ZXIgdHlwZSB0aGF0IGRvZXMgbm90XG5kZXBlbmQgb24gdGhlIHBvc2l0aW9uIG9mICUoLi4lKSBpbiB0aGUgZm9ybWF0IHN0cmluZy4gRm9yIGV4YW1wbGUsXG4lKCUpIHdpbGwgaGF2ZSB0aGUgcG9seW1vcnBoaWMgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSk6IGl0IGNhblxuYmUgY29uY2F0ZW5hdGVkIHRvIGFueSBmb3JtYXQgdHlwZSwgYW5kIG9ubHkgZW5mb3JjZXMgdGhlIGNvbnN0cmFpbnRcbnRoYXQgaXRzICdhIGFuZCAnZiBwYXJhbWV0ZXJzIGFyZSBlcXVhbCAobm8gZm9ybWF0IGFyZ3VtZW50cykgYW5kICdkXG5hbmQgJ2UgYXJlIGVxdWFsIChubyByZWFkZXIgYXJndW1lbnQpLlxuXG5UaGUgd2Vha2VuaW5nIG9mIHRoaXMgcGFyYW1ldGVyIHR5cGUgaW4gdGhlIEdBRFQgdmVyc2lvbiBicm9rZSB1c2VyXG5jb2RlIChpbiBmYWN0IGl0IGVzc2VudGlhbGx5IG1hZGUgJSguLi4lKSB1bnVzYWJsZSBleGNlcHQgYXQgdGhlIGxhc3RcbnBvc2l0aW9uIG9mIGEgZm9ybWF0KS4gSW4gcGFydGljdWxhciwgdGhlIGZvbGxvd2luZyB3b3VsZCBub3Qgd29ya1xuYW55bW9yZTpcblxuICBmdW4gc2VwIC0+XG4gICAgRm9ybWF0LnByaW50ZiBcImZvbyUoJSliYXIlKCUpYmF6XCIgc2VwIHNlcFxuXG5BcyB0aGUgdHlwZS1jaGVja2VyIHdvdWxkIHJlcXVpcmUgdHdvICppbmNvbXBhdGlibGUqIHR5cGVzIGZvciB0aGUgJSglKVxuaW4gZGlmZmVyZW50IHBvc2l0aW9ucy5cblxuVGhlIHNvbHV0aW9uIHRvIHJlZ2FpbiBhIGdlbmVyYWwgdHlwZSBmb3IgJSguLiUpIGlzIHRvIGdlbmVyYWxpemUgdGhpc1xudGVjaG5pcXVlLCBub3Qgb25seSBvbiB0aGUgJ2QsICdlIHBhcmFtZXRlcnMsIGJ1dCBvbiBhbGwgc2l4XG5wYXJhbWV0ZXJzIG9mIGEgZm9ybWF0OiB3ZSBpbnRyb2R1Y2UgYSBcInJlbGF0aW9uYWxcIiB0eXBlXG4gICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG53aG9zZSB2YWx1ZXMgYXJlIHByb29mcyB0aGF0ICgnYTEsIC4uLCAnZjEpIGFuZCAoJ2EyLCAuLiwgJ2YyKSBtb3JhbGx5XG5jb3JyZXNwb25kIHRvIHRoZSBzYW1lIGZvcm1hdCB0eXBlOiAnYTEgaXMgb2J0YWluZWQgZnJvbSAnZjEsJ2IxLCdjMVxuaW4gdGhlIGV4YWN0IHNhbWUgd2F5IHRoYXQgJ2EyIGlzIG9idGFpbmVkIGZyb20gJ2YyLCdiMiwnYzIsIGV0Yy5cblxuRm9yIGV4YW1wbGUsIHRoZSByZWxhdGlvbiBiZXR3ZWVuIHR3byBmb3JtYXQgdHlwZXMgYmVnaW5uaW5nIHdpdGggYSBDaGFyXG5wYXJhbWV0ZXIgaXMgYXMgZm9sbG93czpcblxufCBDaGFyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWMgICopXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgIChjaGFyIC0+ICdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgIGNoYXIgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG5cbkluIHRoZSBnZW5lcmFsIGNhc2UsIHRoZSB0ZXJtIHN0cnVjdHVyZSBvZiBmbXR0eV9yZWwgaXMgKGFsbW9zdFsxXSlcbmlzb21vcnBoaWMgdG8gdGhlIGZtdHR5IG9mIHRoZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbjogZXZlcnlcbmNvbnN0cnVjdG9yIGlzIHJlLXJlYWQgd2l0aCBhIGJpbmFyeSwgcmVsYXRpb25hbCB0eXBlLCBpbnN0ZWFkIG9mIHRoZVxucHJldmlvdXMgdW5hcnkgdHlwaW5nLiBmbXR0eSBjYW4gdGhlbiBiZSByZS1kZWZpbmVkIGFzIHRoZSBkaWFnb25hbCBvZlxuZm10dHlfcmVsOlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5ID1cbiAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICAgJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHlfcmVsXG5cbk9uY2Ugd2UgaGF2ZSB0aGlzIGZtdHR5X3JlbCB0eXBlIGluIHBsYWNlLCB3ZSBjYW4gZ2l2ZSB0aGUgbW9yZVxuZ2VuZXJhbCB0eXBlIHRvICUoLi4uJSk6XG5cbnwgRm9ybWF0X3N1YnN0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSguLi4lKSAqKVxuICAgIHBhZF9vcHRpb24gKlxuICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsLFxuICAgICAnZzIsICdiLCAnYywgJ2oyLCAnZCwgJ2EpIGZtdHR5X3JlbCAqXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiLCAnYywgJ2oyLCAnZSwgJ2YpIGZtdFxuXG5XZSBhY2NlcHQgYW55IGZvcm1hdCAoKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYpICh0aGlzIGlzXG5jb21wbGV0ZWx5IHVucmVsYXRlZCB0byB0aGUgdHlwZSBvZiB0aGUgY3VycmVudCBmb3JtYXQpLCBidXQgYWxzb1xucmVxdWlyZSBhIHByb29mIHRoYXQgdGhpcyBmb3JtYXQgaXMgaW4gcmVsYXRpb24gdG8gYW5vdGhlciBmb3JtYXQgdGhhdFxuaXMgY29uY2F0ZW5hYmxlIHRvIHRoZSBmb3JtYXQgdGFpbC4gV2hlbiBleGVjdXRpbmcgYSAlKC4uLiUpIGZvcm1hdFxuKGluIGNhbWxpbnRlcm5hbEZvcm1hdC5tbDptYWtlX3ByaW50ZiBvciBzY2FuZi5tbDptYWtlX3NjYW5mKSwgd2VcbnRyYW5zdHlwZSB0aGUgZm9ybWF0IGFsb25nIHRoaXMgcmVsYXRpb24gdXNpbmcgdGhlICdyZWNhc3QnIGZ1bmN0aW9uXG50byB0cmFuc3Bvc2UgYmV0d2VlbiByZWxhdGVkIGZvcm1hdCB0eXBlcy5cblxuICB2YWwgcmVjYXN0IDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEpIGZtdFxuICAtPiAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICAtPiAoJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10XG5cbk5PVEUgWzFdOiB0aGUgdHlwaW5nIG9mIEZvcm1hdF9zdWJzdF90eSByZXF1aXJlcyBub3Qgb25lIGZvcm1hdCB0eXBlLCBidXRcbnR3bywgb25lIHRvIGVzdGFibGlzaCB0aGUgbGluayBiZXR3ZWVuIHRoZSBmb3JtYXQgYXJndW1lbnQgYW5kIHRoZVxuZmlyc3Qgc2l4IHBhcmFtZXRlcnMsIGFuZCB0aGUgb3RoZXIgZm9yIHRoZSBsaW5rIGJldHdlZW4gdGhlIGZvcm1hdFxuYXJndW1lbnQgYW5kIHRoZSBsYXN0IHNpeCBwYXJhbWV0ZXJzLlxuXG58IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2QxLCAnYTEpIGZtdHR5X3JlbCAqXG4gICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICdnMiwgJ2IyLCAnYzIsICdqMiwgJ2QyLCAnYTIpIGZtdHR5X3JlbCAqXG4gICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzEsICdiMSwgJ2MxLCAnajEsICdlMSwgJ2YxLFxuICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnZzIsICdiMiwgJ2MyLCAnajIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuV2hlbiB3ZSBnZW5lcmF0ZSBhIGZvcm1hdCBBU1QsIHdlIGdlbmVyYXRlIGV4YWN0bHkgdGhlIHNhbWUgd2l0bmVzc1xuZm9yIGJvdGggcmVsYXRpb25zLCBhbmQgdGhlIHdpdG5lc3MtY29udmVyc2lvbiBmdW5jdGlvbnMgaW5cbmNhbWxpbnRlcm5hbEZvcm1hdCBkbyByZWx5IG9uIHRoaXMgaW52YXJpYW50LiBGb3IgZXhhbXBsZSwgdGhlXG5mdW5jdGlvbiB0aGF0IHByb3ZlcyB0aGF0IHRoZSByZWxhdGlvbiBpcyB0cmFuc2l0aXZlXG5cbiAgdmFsIHRyYW5zIDpcbiAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgLT4gKCdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcbiAgLT4gKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAnYTMsICdiMywgJ2MzLCAnZDMsICdlMywgJ2YzKSBmbXR0eV9yZWxcblxuZG9lcyBhc3N1bWUgdGhhdCB0aGUgdHdvIGlucHV0cyBoYXZlIGV4YWN0bHkgdGhlIHNhbWUgdGVybSBzdHJ1Y3R1cmVcbihhbmQgaXMgb25seSBldmVyeSB1c2VkIGZvciBhcmd1bWVudCB3aXRuZXNzZXMgb2YgdGhlXG5Gb3JtYXRfc3Vic3RfdHkgY29uc3RydWN0b3IpLlxuKilcblxuKCogVHlwZSBvZiBhIGJsb2NrIHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgYmxvY2tfdHlwZSA9XG4gIHwgUHBfaGJveCAgICgqIEhvcml6b250YWwgYmxvY2sgbm8gbGluZSBicmVha2luZyAqKVxuICB8IFBwX3Zib3ggICAoKiBWZXJ0aWNhbCBibG9jayBlYWNoIGJyZWFrIGxlYWRzIHRvIGEgbmV3IGxpbmUgKilcbiAgfCBQcF9odmJveCAgKCogSG9yaXpvbnRhbC12ZXJ0aWNhbCBibG9jazogc2FtZSBhcyB2Ym94LCBleGNlcHQgaWYgdGhpcyBibG9ja1xuICAgICAgICAgICAgICAgICBpcyBzbWFsbCBlbm91Z2ggdG8gZml0IG9uIGEgc2luZ2xlIGxpbmUgKilcbiAgfCBQcF9ob3Zib3ggKCogSG9yaXpvbnRhbCBvciBWZXJ0aWNhbCBibG9jazogYnJlYWtzIGxlYWQgdG8gbmV3IGxpbmVcbiAgICAgICAgICAgICAgICAgb25seSB3aGVuIG5lY2Vzc2FyeSB0byBwcmludCB0aGUgY29udGVudCBvZiB0aGUgYmxvY2sgKilcbiAgfCBQcF9ib3ggICAgKCogSG9yaXpvbnRhbCBvciBJbmRlbnQgYmxvY2s6IGJyZWFrcyBsZWFkIHRvIG5ldyBsaW5lXG4gICAgICAgICAgICAgICAgIG9ubHkgd2hlbiBuZWNlc3NhcnkgdG8gcHJpbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGJsb2NrLCBvclxuICAgICAgICAgICAgICAgICB3aGVuIGl0IGxlYWRzIHRvIGEgbmV3IGluZGVudGF0aW9uIG9mIHRoZSBjdXJyZW50IGxpbmUgKilcbiAgfCBQcF9maXRzICAgKCogSW50ZXJuYWwgdXNhZ2U6IHdoZW4gYSBibG9jayBmaXRzIG9uIGEgc2luZ2xlIGxpbmUgKilcblxuKCogRm9ybWF0dGluZyBlbGVtZW50IHVzZWQgYnkgdGhlIEZvcm1hdCBwcmV0dHktcHJpbnRlci4gKilcbnR5cGUgZm9ybWF0dGluZ19saXQgPVxuICB8IENsb3NlX2JveCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXSAgICopXG4gIHwgQ2xvc2VfdGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEB9ICAgKilcbiAgfCBCcmVhayBvZiBzdHJpbmcgKiBpbnQgKiBpbnQgICAgICAgICAgKCogQCwgfCBAICB8IEA7IHwgQDs8PiAqKVxuICB8IEZGbHVzaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAPyAgICopXG4gIHwgRm9yY2VfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBcXG4gICopXG4gIHwgRmx1c2hfbmV3bGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAuICAgKilcbiAgfCBNYWdpY19zaXplIG9mIHN0cmluZyAqIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQDxuPiAqKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAQCAgICopXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEAlJSAgKilcbiAgfCBTY2FuX2luZGljIG9mIGNoYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQFggICAqKVxuXG4oKiBGb3JtYXR0aW5nIGVsZW1lbnQgdXNlZCBieSB0aGUgRm9ybWF0IHByZXR0eS1wcmludGVyLiAqKVxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW4gPVxuICB8IE9wZW5fdGFnIDogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gICAgICAoKiBAeyAgICopXG4gICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdHRpbmdfZ2VuXG4gIHwgT3Blbl9ib3ggOiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPiAgICAgICgqIEBbICAgKilcbiAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0dGluZ19nZW5cblxuKCoqKilcblxuKCogTGlzdCBvZiBmb3JtYXQgdHlwZSBlbGVtZW50cy4gKilcbigqIEluIHBhcnRpY3VsYXIgdXNlZCB0byByZXByZXNlbnQgJSguLi4lKSBhbmQgJXsuLi4lfSBjb250ZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10dHkgPVxuICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZixcbiAgICAgICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdHR5X3JlbFxuYW5kICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgPVxuICB8IENoYXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGNoYXIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBjaGFyIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IFN0cmluZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKHN0cmluZyAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIHN0cmluZyAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBJbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50MzJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVsZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50MzIgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQzMiAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBOYXRpdmVpbnRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJW5kICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChuYXRpdmVpbnQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBuYXRpdmVpbnQgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgSW50NjRfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVMZCAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoaW50NjQgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBpbnQ2NCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBGbG9hdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWYgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgIChmbG9hdCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgIGZsb2F0IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IEJvb2xfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQiAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKGJvb2wgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICBib29sIC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRm9ybWF0X2FyZ190eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICV7Li4uJX0gKilcbiAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmbXR0eSAqXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm9ybWF0NiAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpXG4gICAgICAgICAgIGZtdHR5X3JlbFxuICB8IEZvcm1hdF9zdWJzdF90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlKC4uLiUpICopXG4gICAgICAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCxcbiAgICAgICAnZzEsICdiMSwgJ2MxLCAnajEsICdkMSwgJ2ExKSBmbXR0eV9yZWwgKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZDIsICdhMikgZm10dHlfcmVsICpcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMSwgJ2IxLCAnYzEsICdqMSwgJ2UxLCAnZjEsXG4gICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZvcm1hdDYgLT4gJ2cyLCAnYjIsICdjMiwgJ2oyLCAnZTIsICdmMilcbiAgICAgICAgICAgZm10dHlfcmVsXG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3JzLiAqKVxuICB8IEFscGhhX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYSAgKilcbiAgICAgICgnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbCAtPlxuICAgICAgKCgnYjEgLT4gJ3ggLT4gJ2MxKSAtPiAneCAtPiAnYTEsICdiMSwgJ2MxLCAnZDEsICdlMSwgJ2YxLFxuICAgICAgICgnYjIgLT4gJ3ggLT4gJ2MyKSAtPiAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcbiAgfCBUaGV0YV90eSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgoJ2IxIC0+ICdjMSkgLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAoJ2IyIC0+ICdjMikgLT4gJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsXG4gIHwgQW55X3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBVc2VkIGZvciBjdXN0b20gZm9ybWF0cyAqKVxuICAgICAgKCdhMSwgJ2IxLCAnYzEsICdkMSwgJ2UxLCAnZjEsXG4gICAgICAgJ2EyLCAnYjIsICdjMiwgJ2QyLCAnZTIsICdmMikgZm10dHlfcmVsIC0+XG4gICAgICAoJ3ggLT4gJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAneCAtPiAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWxcblxuICAoKiBTY2FuZiBzcGVjaWZpYyBjb25zdHJ1Y3Rvci4gKilcbiAgfCBSZWFkZXJfdHkgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXIgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgneCAtPiAnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICd4IC0+ICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3IgICopXG4gICAgICAoJ2ExLCAnYjEsICdjMSwgJ2QxLCAnZTEsICdmMSxcbiAgICAgICAnYTIsICdiMiwgJ2MyLCAnZDIsICdlMiwgJ2YyKSBmbXR0eV9yZWwgLT5cbiAgICAgICgnYTEsICdiMSwgJ2MxLCAoJ2IxIC0+ICd4KSAtPiAnZDEsICdlMSwgJ2YxLFxuICAgICAgICdhMiwgJ2IyLCAnYzIsICgnYjIgLT4gJ3gpIC0+ICdkMiwgJ2UyLCAnZjIpIGZtdHR5X3JlbFxuXG4gIHwgRW5kX29mX2ZtdHR5IDpcbiAgICAgICgnZjEsICdiMSwgJ2MxLCAnZDEsICdkMSwgJ2YxLFxuICAgICAgICdmMiwgJ2IyLCAnYzIsICdkMiwgJ2QyLCAnZjIpIGZtdHR5X3JlbFxuXG4oKioqKVxuXG4oKiBMaXN0IG9mIGZvcm1hdCBlbGVtZW50cy4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10ID1cbiAgfCBDaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX2NoYXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoY2hhciAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTdHJpbmcgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlcyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDYW1sX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlUyAqKVxuICAgICAgKCd4LCBzdHJpbmcgLT4gJ2EpIHBhZGRpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBJbnQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQzMiAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IE5hdGl2ZWludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVuW2RpeFh1b10gKilcbiAgICAgIGludF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgbmF0aXZlaW50IC0+ICdhKSBwcmVjaXNpb24gKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJUxbZGl4WHVvXSAqKVxuICAgICAgaW50X2NvbnYgKiAoJ3gsICd5KSBwYWRkaW5nICogKCd5LCBpbnQ2NCAtPiAnYSkgcHJlY2lzaW9uICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCd4LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZsb2F0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVbZmVFZ0dGaEhdICopXG4gICAgICBmbG9hdF9jb252ICogKCd4LCAneSkgcGFkZGluZyAqICgneSwgZmxvYXQgLT4gJ2EpIHByZWNpc2lvbiAqXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgneCwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBCb29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW2JCXSAqKVxuICAgICAgKCd4LCBib29sIC0+ICdhKSBwYWRkaW5nICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3gsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgRmx1c2ggOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJSEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gIHwgU3RyaW5nX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogYWJjICopXG4gICAgICBzdHJpbmcgKiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+XG4gICAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBDaGFyX2xpdGVyYWwgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiB4ICopXG4gICAgICBjaGFyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgfCBGb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAley4uLiV9ICopXG4gICAgICBwYWRfb3B0aW9uICogKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wpIGZtdHR5ICpcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUoLi4uJSkgKilcbiAgICAgIHBhZF9vcHRpb24gKlxuICAgICAgKCdnLCAnaCwgJ2ksICdqLCAnaywgJ2wsXG4gICAgICAgJ2cyLCAnYiwgJ2MsICdqMiwgJ2QsICdhKSBmbXR0eV9yZWwgKlxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCgnZywgJ2gsICdpLCAnaiwgJ2ssICdsKSBmb3JtYXQ2IC0+ICdnMiwgJ2IsICdjLCAnajIsICdlLCAnZikgZm10XG5cbiAgKCogUHJpbnRmIGFuZCBGb3JtYXQgc3BlY2lmaWMgY29uc3RydWN0b3IuICopXG4gIHwgQWxwaGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJWEgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAneCAtPiAnYykgLT4gJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgVGhldGEgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJXQgKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCgnYiAtPiAnYykgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogRm9ybWF0IHNwZWNpZmljIGNvbnN0cnVjdG9yOiAqKVxuICB8IEZvcm1hdHRpbmdfbGl0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEBfICopXG4gICAgICBmb3JtYXR0aW5nX2xpdCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IEZvcm1hdHRpbmdfZ2VuIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBAXyAqKVxuICAgICAgKCdhMSwgJ2IsICdjLCAnZDEsICdlMSwgJ2YxKSBmb3JtYXR0aW5nX2dlbiAqXG4gICAgICAoJ2YxLCAnYiwgJ2MsICdlMSwgJ2UyLCAnZjIpIGZtdCAtPiAoJ2ExLCAnYiwgJ2MsICdkMSwgJ2UyLCAnZjIpIGZtdFxuXG4gICgqIFNjYW5mIHNwZWNpZmljIGNvbnN0cnVjdG9yczogKilcbiAgfCBSZWFkZXIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ3ggLT4gJ2EsICdiLCAnYywgKCdiIC0+ICd4KSAtPiAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2NoYXJfc2V0IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgLT5cbiAgICAgICAgKHN0cmluZyAtPiAnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXRcbiAgfCBTY2FuX2dldF9jb3VudGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlW25sTkxdICopXG4gICAgICBjb3VudGVyICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoaW50IC0+ICdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuICB8IFNjYW5fbmV4dF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICUwYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKGNoYXIgLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG4gIHwgSWdub3JlZF9wYXJhbSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8gKilcbiAgICAgICgnYSwgJ2IsICdjLCAnZCwgJ3ksICd4KSBpZ25vcmVkICogKCd4LCAnYiwgJ2MsICd5LCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10XG5cbiAgKCogQ3VzdG9tIHByaW50aW5nIGZvcm1hdCAoUFIjNjQ1MiwgR1BSIzE0MClcblxuICAgICBXZSBpbmNsdWRlIGEgdHlwZSBDdXN0b20gb2YgXCJjdXN0b20gY29udmVydGVyc1wiLCB3aGVyZSBhblxuICAgICBhcmJpdHJhcnkgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gY29udmVydCBvbmUgb3IgbW9yZVxuICAgICBhcmd1bWVudHMuIFRoZXJlIGlzIG5vIHN5bnRheCBmb3IgY3VzdG9tIGNvbnZlcnRlcnMsIGl0IGlzIG9ubHlcbiAgICAgaW50ZW5kZWQgZm9yIGN1c3RvbSBwcm9jZXNzb3JzIHRoYXQgd2lzaCB0byByZWx5IG9uIHRoZVxuICAgICBzdGRsaWItZGVmaW5lZCBmb3JtYXQgR0FEVHMuXG5cbiAgICAgRm9yIGluc3RhbmNlIGEgcHJlLXByb2Nlc3NvciBjb3VsZCBjaG9vc2UgdG8gaW50ZXJwcmV0IHN0cmluZ3NcbiAgICAgcHJlZml4ZWQgd2l0aCBbXCIhXCJdIGFzIGZvcm1hdCBzdHJpbmdzIHdoZXJlIFsle3sgLi4uIH19XSBpc1xuICAgICBhIHNwZWNpYWwgZm9ybSB0byBwYXNzIGEgdG9fc3RyaW5nIGZ1bmN0aW9uLCBzbyB0aGF0IG9uZSBjb3VsZFxuICAgICB3cml0ZTpcblxuICAgICB7W1xuICAgICAgIHR5cGUgdCA9IHsgeCA6IGludDsgeSA6IGludCB9XG5cbiAgICAgICBsZXQgc3RyaW5nX29mX3QgdCA9IFByaW50Zi5zcHJpbnRmIFwieyB4ID0gJWQ7IHkgPSAlZCB9XCIgdC54IHQueVxuXG4gICAgICAgUHJpbnRmLnByaW50ZiAhXCJ0ID0gJXt7c3RyaW5nX29mX3R9fVwiIHsgeCA9IDQyOyB5ID0gNDIgfVxuICAgICBdfVxuICAqKVxuICB8IEN1c3RvbSA6XG4gICAgICAoJ2EsICd4LCAneSkgY3VzdG9tX2FyaXR5ICogKHVuaXQgLT4gJ3gpICogKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdCAtPlxuICAgICAgKCd5LCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZtdFxuXG4gICgqIGVuZCBvZiBhIGZvcm1hdCBzcGVjaWZpY2F0aW9uICopXG4gIHwgRW5kX29mX2Zvcm1hdCA6XG4gICAgICAgICgnZiwgJ2IsICdjLCAnZSwgJ2UsICdmKSBmbXRcblxuKCoqKilcblxuKCogVHlwZSBmb3IgaWdub3JlZCBwYXJhbWV0ZXJzIChzZWUgXCIlX1wiKS4gKilcbmFuZCAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZCA9XG4gIHwgSWdub3JlZF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9jICopXG4gICAgICAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfY2FtbF9jaGFyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfQyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX3N0cmluZyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX3MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2NhbWxfc3RyaW5nIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX1MgKilcbiAgICAgIHBhZF9vcHRpb24gLT4gKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2ludCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlX2QgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50MzIgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfbmF0aXZlaW50IDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfbmQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfaW50NjQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfTGQgKilcbiAgICAgIGludF9jb252ICogcGFkX29wdGlvbiAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfZmxvYXQgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfZiAqKVxuICAgICAgcGFkX29wdGlvbiAqIHByZWNfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9ib29sIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV9CICopXG4gICAgICBwYWRfb3B0aW9uIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV97Li4uJX0gKilcbiAgICAgIHBhZF9vcHRpb24gKiAoJ2csICdoLCAnaSwgJ2osICdrLCAnbCkgZm10dHkgLT5cbiAgICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcbiAgfCBJZ25vcmVkX2Zvcm1hdF9zdWJzdCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAlXyguLi4lKSAqKVxuICAgICAgcGFkX29wdGlvbiAqICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXR0eSAtPlxuICAgICAgICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgaWdub3JlZFxuICB8IElnbm9yZWRfcmVhZGVyIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfciAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICgnYiAtPiAneCkgLT4gJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9jaGFyX3NldCA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfWy4uLl0gKilcbiAgICAgIHBhZF9vcHRpb24gKiBjaGFyX3NldCAtPiAoJ2EsICdiLCAnYywgJ2QsICdkLCAnYSkgaWdub3JlZFxuICB8IElnbm9yZWRfc2Nhbl9nZXRfY291bnRlciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqICVfW25sTkxdICopXG4gICAgICBjb3VudGVyIC0+ICgnYSwgJ2IsICdjLCAnZCwgJ2QsICdhKSBpZ25vcmVkXG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogJV8wYyAqKVxuICAgICAgKCdhLCAnYiwgJ2MsICdkLCAnZCwgJ2EpIGlnbm9yZWRcblxuYW5kICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2ID1cbiAgRm9ybWF0IG9mICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmbXQgKiBzdHJpbmdcblxubGV0IHJlYyBlcmFzZV9yZWwgOiB0eXBlIGEgYiBjIGQgZSBmIGcgaCBpIGogayBsIC5cbiAgKGEsIGIsIGMsIGQsIGUsIGYsXG4gICBnLCBoLCBpLCBqLCBrLCBsKSBmbXR0eV9yZWwgLT4gKGEsIGIsIGMsIGQsIGUsIGYpIGZtdHR5XG49IGZ1bmN0aW9uXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgU3RyaW5nX3R5IHJlc3QgLT5cbiAgICBTdHJpbmdfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludF90eSByZXN0IC0+XG4gICAgSW50X3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgTmF0aXZlaW50X3R5IHJlc3QgLT5cbiAgICBOYXRpdmVpbnRfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgQm9vbF90eSByZXN0IC0+XG4gICAgQm9vbF90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGVyYXNlX3JlbCByZXN0KVxuICB8IEZvcm1hdF9zdWJzdF90eSAodHkxLCBfdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTEsIGVyYXNlX3JlbCByZXN0KVxuICB8IEFscGhhX3R5IHJlc3QgLT5cbiAgICBBbHBoYV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgVGhldGFfdHkgcmVzdCAtPlxuICAgIFRoZXRhX3R5IChlcmFzZV9yZWwgcmVzdClcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgUmVhZGVyX3R5IHJlc3QgLT5cbiAgICBSZWFkZXJfdHkgKGVyYXNlX3JlbCByZXN0KVxuICB8IElnbm9yZWRfcmVhZGVyX3R5IHJlc3QgLT5cbiAgICBJZ25vcmVkX3JlYWRlcl90eSAoZXJhc2VfcmVsIHJlc3QpXG4gIHwgRW5kX29mX2ZtdHR5IC0+IEVuZF9vZl9mbXR0eVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICgqIEZvcm1hdCB0eXBlIGNvbmNhdGVuYXRpb24gKilcblxuKCogQ29uY2F0ZW5hdGUgdHdvIGZvcm1hdCB0eXBlcy4gKilcbigqIFVzZWQgYnk6XG4gICAqIHJlYWRlcl9uYl91bmlmaWVyX29mX2ZtdHR5IHRvIGNvdW50IHJlYWRlcnMgaW4gYW4gZm10dHksXG4gICAqIFNjYW5mLnRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgdG8gZXh0cmFjdCByZWFkZXJzIGluc2lkZSAlKC4uLiUpLFxuICAgKiBDYW1saW50ZXJuYWxGb3JtYXQuZm10dHlfb2ZfaWdub3JlZF9mb3JtYXQgdG8gZXh0cmFjdCBmb3JtYXQgdHlwZS4gKilcblxuKCpcbmxldCByZWMgY29uY2F0X2ZtdHR5IDogdHlwZSBhIGIgYyBkIGUgZiBnIGggLlxuICAgIChhLCBiLCBjLCBkLCBlLCBmKSBmbXR0eSAtPlxuICAgIChmLCBiLCBjLCBlLCBnLCBoKSBmbXR0eSAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXR0eSA9XG4qKVxubGV0IHJlYyBjb25jYXRfZm10dHkgOlxuICB0eXBlIGExIGIxIGMxIGQxIGUxIGYxXG4gICAgICAgYTIgYjIgYzIgZDIgZTIgZjJcbiAgICAgICBnMSBqMSBnMiBqMlxuICAuXG4gICAgKGcxLCBiMSwgYzEsIGoxLCBkMSwgYTEsXG4gICAgIGcyLCBiMiwgYzIsIGoyLCBkMiwgYTIpIGZtdHR5X3JlbCAtPlxuICAgIChhMSwgYjEsIGMxLCBkMSwgZTEsIGYxLFxuICAgICBhMiwgYjIsIGMyLCBkMiwgZTIsIGYyKSBmbXR0eV9yZWwgLT5cbiAgICAoZzEsIGIxLCBjMSwgajEsIGUxLCBmMSxcbiAgICAgZzIsIGIyLCBjMiwgajIsIGUyLCBmMikgZm10dHlfcmVsID1cbmZ1biBmbXR0eTEgZm10dHkyIC0+IG1hdGNoIGZtdHR5MSB3aXRoXG4gIHwgQ2hhcl90eSByZXN0IC0+XG4gICAgQ2hhcl90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFN0cmluZ190eSByZXN0IC0+XG4gICAgU3RyaW5nX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSW50X3R5IHJlc3QgLT5cbiAgICBJbnRfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBJbnQzMl90eSByZXN0IC0+XG4gICAgSW50MzJfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBOYXRpdmVpbnRfdHkgcmVzdCAtPlxuICAgIE5hdGl2ZWludF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEludDY0X3R5IHJlc3QgLT5cbiAgICBJbnQ2NF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEZsb2F0X3R5IHJlc3QgLT5cbiAgICBGbG9hdF90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IEJvb2xfdHkgcmVzdCAtPlxuICAgIEJvb2xfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbHBoYV90eSByZXN0IC0+XG4gICAgQWxwaGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBUaGV0YV90eSByZXN0IC0+XG4gICAgVGhldGFfdHkgKGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBBbnlfdHkgcmVzdCAtPlxuICAgIEFueV90eSAoY29uY2F0X2ZtdHR5IHJlc3QgZm10dHkyKVxuICB8IFJlYWRlcl90eSByZXN0IC0+XG4gICAgUmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgSWdub3JlZF9yZWFkZXJfdHkgcmVzdCAtPlxuICAgIElnbm9yZWRfcmVhZGVyX3R5IChjb25jYXRfZm10dHkgcmVzdCBmbXR0eTIpXG4gIHwgRm9ybWF0X2FyZ190eSAodHksIHJlc3QpIC0+XG4gICAgRm9ybWF0X2FyZ190eSAodHksIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIEZvcm1hdF9zdWJzdF90eSAodHkxLCB0eTIsIGNvbmNhdF9mbXR0eSByZXN0IGZtdHR5MilcbiAgfCBFbmRfb2ZfZm10dHkgLT4gZm10dHkyXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBGb3JtYXQgY29uY2F0ZW5hdGlvbiAqKVxuXG4oKiBDb25jYXRlbmF0ZSB0d28gZm9ybWF0cy4gKilcbmxldCByZWMgY29uY2F0X2ZtdCA6IHR5cGUgYSBiIGMgZCBlIGYgZyBoIC5cbiAgICAoYSwgYiwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgKGYsIGIsIGMsIGUsIGcsIGgpIGZtdCAtPlxuICAgIChhLCBiLCBjLCBkLCBnLCBoKSBmbXQgPVxuZnVuIGZtdDEgZm10MiAtPiBtYXRjaCBmbXQxIHdpdGhcbiAgfCBTdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBTdHJpbmcgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQ2FtbF9zdHJpbmcgKHBhZCwgcmVzdCkgLT5cbiAgICBDYW1sX3N0cmluZyAocGFkLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQgKGljb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEludDMyIChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIEludDMyIChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBOYXRpdmVpbnQgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgRmxvYXQgKGZjb252LCBwYWQsIHByZWMsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgQ2hhciAocmVzdCkgLT5cbiAgICBDaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBDYW1sX2NoYXIgcmVzdCAtPlxuICAgIENhbWxfY2hhciAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIEJvb2wgKHBhZCwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgQWxwaGEgcmVzdCAtPlxuICAgIEFscGhhIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBUaGV0YSByZXN0IC0+XG4gICAgVGhldGEgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEN1c3RvbSAoYXJpdHksIGYsIHJlc3QpIC0+XG4gICAgQ3VzdG9tIChhcml0eSwgZiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG4gIHwgUmVhZGVyIHJlc3QgLT5cbiAgICBSZWFkZXIgKGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBGbHVzaCAoY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZ19saXRlcmFsIChzdHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IENoYXJfbGl0ZXJhbCAoY2hyLCByZXN0KSAtPlxuICAgIENoYXJfbGl0ZXJhbCAgIChjaHIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgRm9ybWF0X2FyZyAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfYXJnICAgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IEZvcm1hdF9zdWJzdCAocGFkLCBmbXR0eSwgcmVzdCkgLT5cbiAgICBGb3JtYXRfc3Vic3QgKHBhZCwgZm10dHksIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBTY2FuX2NoYXJfc2V0ICh3aWR0aF9vcHQsIGNoYXJfc2V0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBTY2FuX2dldF9jb3VudGVyIChjb3VudGVyLCByZXN0KSAtPlxuICAgIFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIGNvbmNhdF9mbXQgcmVzdCBmbXQyKVxuICB8IFNjYW5fbmV4dF9jaGFyIChyZXN0KSAtPlxuICAgIFNjYW5fbmV4dF9jaGFyIChjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBJZ25vcmVkX3BhcmFtIChpZ24sIHJlc3QpIC0+XG4gICAgSWdub3JlZF9wYXJhbSAoaWduLCBjb25jYXRfZm10IHJlc3QgZm10MilcblxuICB8IEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCByZXN0KSAtPlxuICAgIEZvcm1hdHRpbmdfbGl0IChmbXRpbmdfbGl0LCBjb25jYXRfZm10IHJlc3QgZm10MilcbiAgfCBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgcmVzdCkgLT5cbiAgICBGb3JtYXR0aW5nX2dlbiAoZm10aW5nX2dlbiwgY29uY2F0X2ZtdCByZXN0IGZtdDIpXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgZm10MlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgR2FicmllbCBTY2hlcmVyLCBwcm9qZXQgUGFydG91dCwgSU5SSUEgUGFyaXMtU2FjbGF5ICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAyMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBDYW1saW50ZXJuYWxBdG9taWMgaXMgYSBkZXBlbmRlbmN5IG9mIFN0ZGxpYiwgc28gaXQgaXMgY29tcGlsZWQgd2l0aFxuICAgLW5vcGVydmFzaXZlcy4gKilcbmV4dGVybmFsICggPT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcVwiXG5leHRlcm5hbCAoICsgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYWRkaW50XCJcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxuXG4oKiBXZSBhcmUgbm90IHJldXNpbmcgKCdhIHJlZikgZGlyZWN0bHkgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmVhc29uXG4gICBhYm91dCBhdG9taWNpdHkgaWYgd2Ugd2lzaCB0bzogZXZlbiBpbiBhIHNlcXVlbnRpYWwgaW1wbGVtZW50YXRpb24sXG4gICBzaWduYWxzIGFuZCBvdGhlciBhc3luY2hyb25vdXMgY2FsbGJhY2tzIG1pZ2h0IGJyZWFrIGF0b21pY2l0eS4gKilcbnR5cGUgJ2EgdCA9IHttdXRhYmxlIHY6ICdhfVxuXG5sZXQgbWFrZSB2ID0ge3Z9XG5sZXQgZ2V0IHIgPSByLnZcbmxldCBzZXQgciB2ID0gci52IDwtIHZcblxuKCogVGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIHNldCB0byBuZXZlciBiZSBpbmxpbmVkOiBGbGFtYmRhIGlzXG4gICBhbGxvd2VkIHRvIG1vdmUgc3Vycm91bmRpbmcgY29kZSBpbnNpZGUgdGhlIGNyaXRpY2FsIHNlY3Rpb24sXG4gICBpbmNsdWRpbmcgYWxsb2NhdGlvbnMuICopXG5cbmxldFtAaW5saW5lIG5ldmVyXSBleGNoYW5nZSByIHYgPVxuICAoKiBCRUdJTiBBVE9NSUMgKilcbiAgbGV0IGN1ciA9IHIudiBpblxuICByLnYgPC0gdjtcbiAgKCogRU5EIEFUT01JQyAqKVxuICBjdXJcblxubGV0W0BpbmxpbmUgbmV2ZXJdIGNvbXBhcmVfYW5kX3NldCByIHNlZW4gdiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIGlmIGN1ciA9PSBzZWVuIHRoZW4gKFxuICAgIHIudiA8LSB2O1xuICAgICgqIEVORCBBVE9NSUMgKilcbiAgICB0cnVlXG4gICkgZWxzZVxuICAgIGZhbHNlXG5cbmxldFtAaW5saW5lIG5ldmVyXSBmZXRjaF9hbmRfYWRkIHIgbiA9XG4gICgqIEJFR0lOIEFUT01JQyAqKVxuICBsZXQgY3VyID0gci52IGluXG4gIHIudiA8LSAoY3VyICsgbik7XG4gICgqIEVORCBBVE9NSUMgKilcbiAgY3VyXG5cbmxldCBpbmNyIHIgPSBpZ25vcmUgKGZldGNoX2FuZF9hZGQgciAxKVxubGV0IGRlY3IgciA9IGlnbm9yZSAoZmV0Y2hfYW5kX2FkZCByICgtMSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4Y2VwdGlvbnMgKilcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfcmVnaXN0ZXJfbmFtZWRfdmFsdWVcIlxuXG5sZXQgKCkgPVxuICAoKiBmb3IgcnVudGltZS9mYWlsX25hdC5jICopXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUGVydmFzaXZlcy5hcnJheV9ib3VuZF9lcnJvclwiXG4gICAgKEludmFsaWRfYXJndW1lbnQgXCJpbmRleCBvdXQgb2YgYm91bmRzXCIpXG5cbmV4dGVybmFsIHJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmFpc2VcIlxuZXh0ZXJuYWwgcmFpc2Vfbm90cmFjZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlX25vdHJhY2VcIlxuXG5sZXQgZmFpbHdpdGggcyA9IHJhaXNlKEZhaWx1cmUgcylcbmxldCBpbnZhbGlkX2FyZyBzID0gcmFpc2UoSW52YWxpZF9hcmd1bWVudCBzKVxuXG5leGNlcHRpb24gRXhpdFxuZXhjZXB0aW9uIE1hdGNoX2ZhaWx1cmUgPSBNYXRjaF9mYWlsdXJlXG5leGNlcHRpb24gQXNzZXJ0X2ZhaWx1cmUgPSBBc3NlcnRfZmFpbHVyZVxuZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgPSBJbnZhbGlkX2FyZ3VtZW50XG5leGNlcHRpb24gRmFpbHVyZSA9IEZhaWx1cmVcbmV4Y2VwdGlvbiBOb3RfZm91bmQgPSBOb3RfZm91bmRcbmV4Y2VwdGlvbiBPdXRfb2ZfbWVtb3J5ID0gT3V0X29mX21lbW9yeVxuZXhjZXB0aW9uIFN0YWNrX292ZXJmbG93ID0gU3RhY2tfb3ZlcmZsb3dcbmV4Y2VwdGlvbiBTeXNfZXJyb3IgPSBTeXNfZXJyb3JcbmV4Y2VwdGlvbiBFbmRfb2ZfZmlsZSA9IEVuZF9vZl9maWxlXG5leGNlcHRpb24gRGl2aXNpb25fYnlfemVybyA9IERpdmlzaW9uX2J5X3plcm9cbmV4Y2VwdGlvbiBTeXNfYmxvY2tlZF9pbyA9IFN5c19ibG9ja2VkX2lvXG5leGNlcHRpb24gVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgPSBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZVxuXG4oKiBDb21wb3NpdGlvbiBvcGVyYXRvcnMgKilcblxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5cbigqIERlYnVnZ2luZyAqKVxuXG5leHRlcm5hbCBfX0xPQ19fIDogc3RyaW5nID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0ZJTEVfXyA6IHN0cmluZyA9IFwiJWxvY19GSUxFXCJcbmV4dGVybmFsIF9fTElORV9fIDogaW50ID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19NT0RVTEVfXyA6IHN0cmluZyA9IFwiJWxvY19NT0RVTEVcIlxuZXh0ZXJuYWwgX19QT1NfXyA6IHN0cmluZyAqIGludCAqIGludCAqIGludCA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgX19GVU5DVElPTl9fIDogc3RyaW5nID0gXCIlbG9jX0ZVTkNUSU9OXCJcblxuZXh0ZXJuYWwgX19MT0NfT0ZfXyA6ICdhIC0+IHN0cmluZyAqICdhID0gXCIlbG9jX0xPQ1wiXG5leHRlcm5hbCBfX0xJTkVfT0ZfXyA6ICdhIC0+IGludCAqICdhID0gXCIlbG9jX0xJTkVcIlxuZXh0ZXJuYWwgX19QT1NfT0ZfXyA6ICdhIC0+IChzdHJpbmcgKiBpbnQgKiBpbnQgKiBpbnQpICogJ2EgPSBcIiVsb2NfUE9TXCJcblxuKCogQ29tcGFyaXNvbnMgKilcblxuZXh0ZXJuYWwgKCA9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZXF1YWxcIlxuZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcbmV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcbmV4dGVybmFsICggPiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJ0aGFuXCJcbmV4dGVybmFsICggPD0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzZXF1YWxcIlxuZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5leHRlcm5hbCBjb21wYXJlIDogJ2EgLT4gJ2EgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5cbmxldCBtaW4geCB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5cbigqIEJvb2xlYW4gb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1YW5kXCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoIG9yICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5leHRlcm5hbCAoIHx8ICkgOiBib29sIC0+IGJvb2wgLT4gYm9vbCA9IFwiJXNlcXVvclwiXG5cbigqIEludGVnZXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcblxubGV0IGFicyB4ID0gaWYgeCA+PSAwIHRoZW4geCBlbHNlIC14XG5cbmV4dGVybmFsICggbGFuZCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhbmRpbnRcIlxuZXh0ZXJuYWwgKCBsb3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgKCBseG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXhvcmludFwiXG5cbmxldCBsbm90IHggPSB4IGx4b3IgKC0xKVxuXG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5cbmxldCBtYXhfaW50ID0gKC0xKSBsc3IgMVxubGV0IG1pbl9pbnQgPSBtYXhfaW50ICsgMVxuXG4oKiBGbG9hdGluZy1wb2ludCBvcGVyYXRpb25zICopXG5cbmV4dGVybmFsICggfi0uICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJW5lZ2Zsb2F0XCJcbmV4dGVybmFsICggfisuICkgOiBmbG9hdCAtPiBmbG9hdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsICggKy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlYWRkZmxvYXRcIlxuZXh0ZXJuYWwgKCAtLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVzdWJmbG9hdFwiXG5leHRlcm5hbCAoICouICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJW11bGZsb2F0XCJcbmV4dGVybmFsICggLy4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlZGl2ZmxvYXRcIlxuZXh0ZXJuYWwgKCAqKiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBfZmxvYXRcIiBcImV4cFwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXRcbiAgICAgICAgICAgICAgID0gXCJjYW1sX2h5cG90X2Zsb2F0XCIgXCJjYW1sX2h5cG90XCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9jb3NoX2Zsb2F0XCIgXCJjb3NoXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3NoIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYWNvc2hfZmxvYXRcIiBcImNhbWxfYWNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMXAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxcF9mbG9hdFwiIFwiY2FtbF9sb2cxcFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zaW5fZmxvYXRcIiBcInNpblwiIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzaW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luaF9mbG9hdFwiIFwic2luaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNxcnQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9zcXJ0X2Zsb2F0XCIgXCJzcXJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbmggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF90YW5oX2Zsb2F0XCIgXCJ0YW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmxldCBpbmZpbml0eSA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9GMF8wMF8wMF8wMF8wMF8wMF8wMExcbmxldCBuZWdfaW5maW5pdHkgPVxuICBmbG9hdF9vZl9iaXRzIDB4RkZfRjBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgbmFuID1cbiAgZmxvYXRfb2ZfYml0cyAweDdGX0YwXzAwXzAwXzAwXzAwXzAwXzAxTFxubGV0IG1heF9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHg3Rl9FRl9GRl9GRl9GRl9GRl9GRl9GRkxcbmxldCBtaW5fZmxvYXQgPVxuICBmbG9hdF9vZl9iaXRzIDB4MDBfMTBfMDBfMDBfMDBfMDBfMDBfMDBMXG5sZXQgZXBzaWxvbl9mbG9hdCA9XG4gIGZsb2F0X29mX2JpdHMgMHgzQ19CMF8wMF8wMF8wMF8wMF8wMF8wMExcblxudHlwZSBmcGNsYXNzID1cbiAgICBGUF9ub3JtYWxcbiAgfCBGUF9zdWJub3JtYWxcbiAgfCBGUF96ZXJvXG4gIHwgRlBfaW5maW5pdGVcbiAgfCBGUF9uYW5cbmV4dGVybmFsIGNsYXNzaWZ5X2Zsb2F0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGZwY2xhc3MgPVxuICBcImNhbWxfY2xhc3NpZnlfZmxvYXRcIiBcImNhbWxfY2xhc3NpZnlfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5cbigqIFN0cmluZyBhbmQgYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlcyBTdHJpbmcgYW5kIEJ5dGVzICopXG5cbmV4dGVybmFsIHN0cmluZ19sZW5ndGggOiBzdHJpbmcgLT4gaW50ID0gXCIlc3RyaW5nX2xlbmd0aFwiXG5leHRlcm5hbCBieXRlc19sZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgYnl0ZXNfY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9ieXRlc1wiXG5leHRlcm5hbCBzdHJpbmdfYmxpdCA6IHN0cmluZyAtPiBpbnQgLT4gYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9ibGl0X3N0cmluZ1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc19ibGl0IDogYnl0ZXMgLT4gaW50IC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfYmxpdF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBieXRlc191bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcblxubGV0ICggXiApIHMxIHMyID1cbiAgbGV0IGwxID0gc3RyaW5nX2xlbmd0aCBzMSBhbmQgbDIgPSBzdHJpbmdfbGVuZ3RoIHMyIGluXG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIChsMSArIGwyKSBpblxuICBzdHJpbmdfYmxpdCBzMSAwIHMgMCBsMTtcbiAgc3RyaW5nX2JsaXQgczIgMCBzIGwxIGwyO1xuICBieXRlc191bnNhZmVfdG9fc3RyaW5nIHNcblxuKCogQ2hhcmFjdGVyIG9wZXJhdGlvbnMgLS0gbW9yZSBpbiBtb2R1bGUgQ2hhciAqKVxuXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdW5zYWZlX2NoYXJfb2ZfaW50IDogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5sZXQgY2hhcl9vZl9pbnQgbiA9XG4gIGlmIG4gPCAwIHx8IG4gPiAyNTUgdGhlbiBpbnZhbGlkX2FyZyBcImNoYXJfb2ZfaW50XCIgZWxzZSB1bnNhZmVfY2hhcl9vZl9pbnQgblxuXG4oKiBVbml0IG9wZXJhdGlvbnMgKilcblxuZXh0ZXJuYWwgaWdub3JlIDogJ2EgLT4gdW5pdCA9IFwiJWlnbm9yZVwiXG5cbigqIFBhaXIgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxuXG4oKiBSZWZlcmVuY2VzICopXG5cbnR5cGUgJ2EgcmVmID0geyBtdXRhYmxlIGNvbnRlbnRzIDogJ2EgfVxuZXh0ZXJuYWwgcmVmIDogJ2EgLT4gJ2EgcmVmID0gXCIlbWFrZW11dGFibGVcIlxuZXh0ZXJuYWwgKCAhICkgOiAnYSByZWYgLT4gJ2EgPSBcIiVmaWVsZDBcIlxuZXh0ZXJuYWwgKCA6PSApIDogJ2EgcmVmIC0+ICdhIC0+IHVuaXQgPSBcIiVzZXRmaWVsZDBcIlxuZXh0ZXJuYWwgaW5jciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWluY3JcIlxuZXh0ZXJuYWwgZGVjciA6IGludCByZWYgLT4gdW5pdCA9IFwiJWRlY3JcIlxuXG4oKiBSZXN1bHQgdHlwZSAqKVxuXG50eXBlICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxuXG4oKiBTdHJpbmcgY29udmVyc2lvbiBmdW5jdGlvbnMgKilcblxuZXh0ZXJuYWwgZm9ybWF0X2ludCA6IHN0cmluZyAtPiBpbnQgLT4gc3RyaW5nID0gXCJjYW1sX2Zvcm1hdF9pbnRcIlxuZXh0ZXJuYWwgZm9ybWF0X2Zsb2F0IDogc3RyaW5nIC0+IGZsb2F0IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfZmxvYXRcIlxuXG5sZXQgc3RyaW5nX29mX2Jvb2wgYiA9XG4gIGlmIGIgdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIlxubGV0IGJvb2xfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcInRydWVcIiAtPiB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IGZhbHNlXG4gIHwgXyAtPiBpbnZhbGlkX2FyZyBcImJvb2xfb2Zfc3RyaW5nXCJcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCA9IGZ1bmN0aW9uXG4gIHwgXCJ0cnVlXCIgLT4gU29tZSB0cnVlXG4gIHwgXCJmYWxzZVwiIC0+IFNvbWUgZmFsc2VcbiAgfCBfIC0+IE5vbmVcblxubGV0IHN0cmluZ19vZl9pbnQgbiA9XG4gIGZvcm1hdF9pbnQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgaW50X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQgPSBcImNhbWxfaW50X29mX3N0cmluZ1wiXG5cbmxldCBpbnRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmV4dGVybmFsIHN0cmluZ19nZXQgOiBzdHJpbmcgLT4gaW50IC0+IGNoYXIgPSBcIiVzdHJpbmdfc2FmZV9nZXRcIlxuXG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gcyA9XG4gIGxldCBsID0gc3RyaW5nX2xlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID49IGwgdGhlbiBzIF4gXCIuXCIgZWxzZVxuICAgIG1hdGNoIHN0cmluZ19nZXQgcyBpIHdpdGhcbiAgICB8ICcwJyAuLiAnOScgfCAnLScgLT4gbG9vcCAoaSArIDEpXG4gICAgfCBfIC0+IHNcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzdHJpbmdfb2ZfZmxvYXQgZiA9IHZhbGlkX2Zsb2F0X2xleGVtIChmb3JtYXRfZmxvYXQgXCIlLjEyZ1wiIGYpXG5cbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxuXG5sZXQgZmxvYXRfb2Zfc3RyaW5nX29wdCBzID1cbiAgKCogVE9ETzogcHJvdmlkZSB0aGlzIGRpcmVjdGx5IGFzIGEgbm9uLXJhaXNpbmcgcHJpbWl0aXZlLiAqKVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHMpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxuKCogTGlzdCBvcGVyYXRpb25zIC0tIG1vcmUgaW4gbW9kdWxlIExpc3QgKilcblxubGV0IHJlYyAoIEAgKSBsMSBsMiA9XG4gIG1hdGNoIGwxIHdpdGhcbiAgICBbXSAtPiBsMlxuICB8IGhkIDo6IHRsIC0+IGhkIDo6ICh0bCBAIGwyKVxuXG4oKiBJL08gb3BlcmF0aW9ucyAqKVxuXG50eXBlIGluX2NoYW5uZWxcbnR5cGUgb3V0X2NoYW5uZWxcblxuZXh0ZXJuYWwgb3Blbl9kZXNjcmlwdG9yX291dCA6IGludCAtPiBvdXRfY2hhbm5lbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vcGVuX2Rlc2NyaXB0b3Jfb3V0XCJcbmV4dGVybmFsIG9wZW5fZGVzY3JpcHRvcl9pbiA6IGludCAtPiBpbl9jaGFubmVsID0gXCJjYW1sX21sX29wZW5fZGVzY3JpcHRvcl9pblwiXG5cbmxldCBzdGRpbiA9IG9wZW5fZGVzY3JpcHRvcl9pbiAwXG5sZXQgc3Rkb3V0ID0gb3Blbl9kZXNjcmlwdG9yX291dCAxXG5sZXQgc3RkZXJyID0gb3Blbl9kZXNjcmlwdG9yX291dCAyXG5cbigqIEdlbmVyYWwgb3V0cHV0IGZ1bmN0aW9ucyAqKVxuXG50eXBlIG9wZW5fZmxhZyA9XG4gICAgT3Blbl9yZG9ubHkgfCBPcGVuX3dyb25seSB8IE9wZW5fYXBwZW5kXG4gIHwgT3Blbl9jcmVhdCB8IE9wZW5fdHJ1bmMgfCBPcGVuX2V4Y2xcbiAgfCBPcGVuX2JpbmFyeSB8IE9wZW5fdGV4dCB8IE9wZW5fbm9uYmxvY2tcblxuZXh0ZXJuYWwgb3Blbl9kZXNjIDogc3RyaW5nIC0+IG9wZW5fZmxhZyBsaXN0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfc3lzX29wZW5cIlxuXG5leHRlcm5hbCBzZXRfb3V0X2NoYW5uZWxfbmFtZTogb3V0X2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX291dF9nZW4gbW9kZSBwZXJtIG5hbWUgPVxuICBsZXQgYyA9IG9wZW5fZGVzY3JpcHRvcl9vdXQob3Blbl9kZXNjIG5hbWUgbW9kZSBwZXJtKSBpblxuICBzZXRfb3V0X2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5fb3V0IG5hbWUgPVxuICBvcGVuX291dF9nZW4gW09wZW5fd3Jvbmx5OyBPcGVuX2NyZWF0OyBPcGVuX3RydW5jOyBPcGVuX3RleHRdIDBvNjY2IG5hbWVcblxubGV0IG9wZW5fb3V0X2JpbiBuYW1lID1cbiAgb3Blbl9vdXRfZ2VuIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl90cnVuYzsgT3Blbl9iaW5hcnldIDBvNjY2IG5hbWVcblxuZXh0ZXJuYWwgZmx1c2ggOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2ZsdXNoXCJcblxuZXh0ZXJuYWwgb3V0X2NoYW5uZWxzX2xpc3QgOiB1bml0IC0+IG91dF9jaGFubmVsIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX291dF9jaGFubmVsc19saXN0XCJcblxubGV0IGZsdXNoX2FsbCAoKSA9XG4gIGxldCByZWMgaXRlciA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgYTo6bCAtPlxuICAgICAgICBiZWdpbiB0cnlcbiAgICAgICAgICAgIGZsdXNoIGFcbiAgICAgICAgd2l0aCBTeXNfZXJyb3IgXyAtPlxuICAgICAgICAgICgpICgqIGlnbm9yZSBjaGFubmVscyBjbG9zZWQgZHVyaW5nIGEgcHJlY2VkaW5nIGZsdXNoLiAqKVxuICAgICAgICBlbmQ7XG4gICAgICAgIGl0ZXIgbFxuICBpbiBpdGVyIChvdXRfY2hhbm5lbHNfbGlzdCAoKSlcblxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dCA6IG91dF9jaGFubmVsIC0+IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX291dHB1dF9zdHJpbmcgOiBvdXRfY2hhbm5lbCAtPiBzdHJpbmcgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9vdXRwdXRcIlxuXG5leHRlcm5hbCBvdXRwdXRfY2hhciA6IG91dF9jaGFubmVsIC0+IGNoYXIgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5cbmxldCBvdXRwdXRfYnl0ZXMgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXQgb2MgcyAwIChieXRlc19sZW5ndGggcylcblxubGV0IG91dHB1dF9zdHJpbmcgb2MgcyA9XG4gIHVuc2FmZV9vdXRwdXRfc3RyaW5nIG9jIHMgMCAoc3RyaW5nX2xlbmd0aCBzKVxuXG5sZXQgb3V0cHV0IG9jIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwib3V0cHV0XCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0IG9jIHMgb2ZzIGxlblxuXG5sZXQgb3V0cHV0X3N1YnN0cmluZyBvYyBzIG9mcyBsZW4gPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gc3RyaW5nX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJvdXRwdXRfc3Vic3RyaW5nXCJcbiAgZWxzZSB1bnNhZmVfb3V0cHV0X3N0cmluZyBvYyBzIG9mcyBsZW5cblxuZXh0ZXJuYWwgb3V0cHV0X2J5dGUgOiBvdXRfY2hhbm5lbCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9tbF9vdXRwdXRfY2hhclwiXG5leHRlcm5hbCBvdXRwdXRfYmluYXJ5X2ludCA6IG91dF9jaGFubmVsIC0+IGludCAtPiB1bml0ID0gXCJjYW1sX21sX291dHB1dF9pbnRcIlxuXG5leHRlcm5hbCBtYXJzaGFsX3RvX2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiAnYSAtPiB1bml0IGxpc3QgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVcIlxubGV0IG91dHB1dF92YWx1ZSBjaGFuIHYgPSBtYXJzaGFsX3RvX2NoYW5uZWwgY2hhbiB2IFtdXG5cbmV4dGVybmFsIHNlZWtfb3V0IDogb3V0X2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRcIlxuZXh0ZXJuYWwgcG9zX291dCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3Nfb3V0XCJcbmV4dGVybmFsIG91dF9jaGFubmVsX2xlbmd0aCA6IG91dF9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2Vfb3V0X2NoYW5uZWwgOiBvdXRfY2hhbm5lbCAtPiB1bml0ID0gXCJjYW1sX21sX2Nsb3NlX2NoYW5uZWxcIlxubGV0IGNsb3NlX291dCBvYyA9IGZsdXNoIG9jOyBjbG9zZV9vdXRfY2hhbm5lbCBvY1xubGV0IGNsb3NlX291dF9ub2VyciBvYyA9XG4gICh0cnkgZmx1c2ggb2Mgd2l0aCBfIC0+ICgpKTtcbiAgKHRyeSBjbG9zZV9vdXRfY2hhbm5lbCBvYyB3aXRoIF8gLT4gKCkpXG5leHRlcm5hbCBzZXRfYmluYXJ5X21vZGVfb3V0IDogb3V0X2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX3NldF9iaW5hcnlfbW9kZVwiXG5cbigqIEdlbmVyYWwgaW5wdXQgZnVuY3Rpb25zICopXG5cbmV4dGVybmFsIHNldF9pbl9jaGFubmVsX25hbWU6IGluX2NoYW5uZWwgLT4gc3RyaW5nIC0+IHVuaXQgPVxuICBcImNhbWxfbWxfc2V0X2NoYW5uZWxfbmFtZVwiXG5cbmxldCBvcGVuX2luX2dlbiBtb2RlIHBlcm0gbmFtZSA9XG4gIGxldCBjID0gb3Blbl9kZXNjcmlwdG9yX2luKG9wZW5fZGVzYyBuYW1lIG1vZGUgcGVybSkgaW5cbiAgc2V0X2luX2NoYW5uZWxfbmFtZSBjIG5hbWU7XG4gIGNcblxubGV0IG9wZW5faW4gbmFtZSA9XG4gIG9wZW5faW5fZ2VuIFtPcGVuX3Jkb25seTsgT3Blbl90ZXh0XSAwIG5hbWVcblxubGV0IG9wZW5faW5fYmluIG5hbWUgPVxuICBvcGVuX2luX2dlbiBbT3Blbl9yZG9ubHk7IE9wZW5fYmluYXJ5XSAwIG5hbWVcblxuZXh0ZXJuYWwgaW5wdXRfY2hhciA6IGluX2NoYW5uZWwgLT4gY2hhciA9IFwiY2FtbF9tbF9pbnB1dF9jaGFyXCJcblxuZXh0ZXJuYWwgdW5zYWZlX2lucHV0IDogaW5fY2hhbm5lbCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX21sX2lucHV0XCJcblxubGV0IGlucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBieXRlc19sZW5ndGggcyAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9pbnB1dCBpYyBzIG9mcyBsZW5cblxubGV0IHJlYyB1bnNhZmVfcmVhbGx5X2lucHV0IGljIHMgb2ZzIGxlbiA9XG4gIGlmIGxlbiA8PSAwIHRoZW4gKCkgZWxzZSBiZWdpblxuICAgIGxldCByID0gdW5zYWZlX2lucHV0IGljIHMgb2ZzIGxlbiBpblxuICAgIGlmIHIgPSAwXG4gICAgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgIGVsc2UgdW5zYWZlX3JlYWxseV9pbnB1dCBpYyBzIChvZnMgKyByKSAobGVuIC0gcilcbiAgZW5kXG5cbmxldCByZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGJ5dGVzX2xlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJyZWFsbHlfaW5wdXRcIlxuICBlbHNlIHVuc2FmZV9yZWFsbHlfaW5wdXQgaWMgcyBvZnMgbGVuXG5cbmxldCByZWFsbHlfaW5wdXRfc3RyaW5nIGljIGxlbiA9XG4gIGxldCBzID0gYnl0ZXNfY3JlYXRlIGxlbiBpblxuICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgYnl0ZXNfdW5zYWZlX3RvX3N0cmluZyBzXG5cbmV4dGVybmFsIGlucHV0X3NjYW5fbGluZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X3NjYW5fbGluZVwiXG5cbmxldCBpbnB1dF9saW5lIGNoYW4gPVxuICBsZXQgcmVjIGJ1aWxkX3Jlc3VsdCBidWYgcG9zID0gZnVuY3Rpb25cbiAgICBbXSAtPiBidWZcbiAgfCBoZCA6OiB0bCAtPlxuICAgICAgbGV0IGxlbiA9IGJ5dGVzX2xlbmd0aCBoZCBpblxuICAgICAgYnl0ZXNfYmxpdCBoZCAwIGJ1ZiAocG9zIC0gbGVuKSBsZW47XG4gICAgICBidWlsZF9yZXN1bHQgYnVmIChwb3MgLSBsZW4pIHRsIGluXG4gIGxldCByZWMgc2NhbiBhY2N1IGxlbiA9XG4gICAgbGV0IG4gPSBpbnB1dF9zY2FuX2xpbmUgY2hhbiBpblxuICAgIGlmIG4gPSAwIHRoZW4gYmVnaW4gICAgICAgICAgICAgICAgICAgKCogbiA9IDA6IHdlIGFyZSBhdCBFT0YgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByYWlzZSBFbmRfb2ZfZmlsZVxuICAgICAgfCBfICAtPiBidWlsZF9yZXN1bHQgKGJ5dGVzX2NyZWF0ZSBsZW4pIGxlbiBhY2N1XG4gICAgZW5kIGVsc2UgaWYgbiA+IDAgdGhlbiBiZWdpbiAgICAgICAgICAoKiBuID4gMDogbmV3bGluZSBmb3VuZCBpbiBidWZmZXIgKilcbiAgICAgIGxldCByZXMgPSBieXRlc19jcmVhdGUgKG4gLSAxKSBpblxuICAgICAgaWdub3JlICh1bnNhZmVfaW5wdXQgY2hhbiByZXMgMCAobiAtIDEpKTtcbiAgICAgIGlnbm9yZSAoaW5wdXRfY2hhciBjaGFuKTsgICAgICAgICAgICgqIHNraXAgdGhlIG5ld2xpbmUgKilcbiAgICAgIG1hdGNoIGFjY3Ugd2l0aFxuICAgICAgICBbXSAtPiByZXNcbiAgICAgIHwgIF8gLT4gbGV0IGxlbiA9IGxlbiArIG4gLSAxIGluXG4gICAgICAgICAgICAgIGJ1aWxkX3Jlc3VsdCAoYnl0ZXNfY3JlYXRlIGxlbikgbGVuIChyZXMgOjogYWNjdSlcbiAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICgqIG4gPCAwOiBuZXdsaW5lIG5vdCBmb3VuZCAqKVxuICAgICAgbGV0IGJlZyA9IGJ5dGVzX2NyZWF0ZSAoLW4pIGluXG4gICAgICBpZ25vcmUodW5zYWZlX2lucHV0IGNoYW4gYmVnIDAgKC1uKSk7XG4gICAgICBzY2FuIChiZWcgOjogYWNjdSkgKGxlbiAtIG4pXG4gICAgZW5kXG4gIGluIGJ5dGVzX3Vuc2FmZV90b19zdHJpbmcgKHNjYW4gW10gMClcblxuZXh0ZXJuYWwgaW5wdXRfYnl0ZSA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2NoYXJcIlxuZXh0ZXJuYWwgaW5wdXRfYmluYXJ5X2ludCA6IGluX2NoYW5uZWwgLT4gaW50ID0gXCJjYW1sX21sX2lucHV0X2ludFwiXG5leHRlcm5hbCBpbnB1dF92YWx1ZSA6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgc2Vla19pbiA6IGluX2NoYW5uZWwgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pblwiXG5leHRlcm5hbCBwb3NfaW4gOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9wb3NfaW5cIlxuZXh0ZXJuYWwgaW5fY2hhbm5lbF9sZW5ndGggOiBpbl9jaGFubmVsIC0+IGludCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVcIlxuZXh0ZXJuYWwgY2xvc2VfaW4gOiBpbl9jaGFubmVsIC0+IHVuaXQgPSBcImNhbWxfbWxfY2xvc2VfY2hhbm5lbFwiXG5sZXQgY2xvc2VfaW5fbm9lcnIgaWMgPSAodHJ5IGNsb3NlX2luIGljIHdpdGggXyAtPiAoKSlcbmV4dGVybmFsIHNldF9iaW5hcnlfbW9kZV9pbiA6IGluX2NoYW5uZWwgLT4gYm9vbCAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfbWxfc2V0X2JpbmFyeV9tb2RlXCJcblxuKCogT3V0cHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBvdXRwdXQgKilcblxubGV0IHByaW50X2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZG91dCBjXG5sZXQgcHJpbnRfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZG91dCBzXG5sZXQgcHJpbnRfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRvdXQgc1xubGV0IHByaW50X2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmludF9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRvdXQgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByaW50X2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3Rkb3V0IHM7IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5sZXQgcHJpbnRfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZG91dCAnXFxuJzsgZmx1c2ggc3Rkb3V0XG5cbigqIE91dHB1dCBmdW5jdGlvbnMgb24gc3RhbmRhcmQgZXJyb3IgKilcblxubGV0IHByZXJyX2NoYXIgYyA9IG91dHB1dF9jaGFyIHN0ZGVyciBjXG5sZXQgcHJlcnJfc3RyaW5nIHMgPSBvdXRwdXRfc3RyaW5nIHN0ZGVyciBzXG5sZXQgcHJlcnJfYnl0ZXMgcyA9IG91dHB1dF9ieXRlcyBzdGRlcnIgc1xubGV0IHByZXJyX2ludCBpID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9pbnQgaSlcbmxldCBwcmVycl9mbG9hdCBmID0gb3V0cHV0X3N0cmluZyBzdGRlcnIgKHN0cmluZ19vZl9mbG9hdCBmKVxubGV0IHByZXJyX2VuZGxpbmUgcyA9XG4gIG91dHB1dF9zdHJpbmcgc3RkZXJyIHM7IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5sZXQgcHJlcnJfbmV3bGluZSAoKSA9IG91dHB1dF9jaGFyIHN0ZGVyciAnXFxuJzsgZmx1c2ggc3RkZXJyXG5cbigqIElucHV0IGZ1bmN0aW9ucyBvbiBzdGFuZGFyZCBpbnB1dCAqKVxuXG5sZXQgcmVhZF9saW5lICgpID0gZmx1c2ggc3Rkb3V0OyBpbnB1dF9saW5lIHN0ZGluXG5sZXQgcmVhZF9pbnQgKCkgPSBpbnRfb2Zfc3RyaW5nKHJlYWRfbGluZSgpKVxubGV0IHJlYWRfaW50X29wdCAoKSA9IGludF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxubGV0IHJlYWRfZmxvYXQgKCkgPSBmbG9hdF9vZl9zdHJpbmcocmVhZF9saW5lKCkpXG5sZXQgcmVhZF9mbG9hdF9vcHQgKCkgPSBmbG9hdF9vZl9zdHJpbmdfb3B0KHJlYWRfbGluZSgpKVxuXG4oKiBPcGVyYXRpb25zIG9uIGxhcmdlIGZpbGVzICopXG5cbm1vZHVsZSBMYXJnZUZpbGUgPVxuICBzdHJ1Y3RcbiAgICBleHRlcm5hbCBzZWVrX291dCA6IG91dF9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19vdXRfNjRcIlxuICAgIGV4dGVybmFsIHBvc19vdXQgOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3Nfb3V0XzY0XCJcbiAgICBleHRlcm5hbCBvdXRfY2hhbm5lbF9sZW5ndGggOiBvdXRfY2hhbm5lbCAtPiBpbnQ2NFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICAgIGV4dGVybmFsIHNlZWtfaW4gOiBpbl9jaGFubmVsIC0+IGludDY0IC0+IHVuaXQgPSBcImNhbWxfbWxfc2Vla19pbl82NFwiXG4gICAgZXh0ZXJuYWwgcG9zX2luIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9wb3NfaW5fNjRcIlxuICAgIGV4dGVybmFsIGluX2NoYW5uZWxfbGVuZ3RoIDogaW5fY2hhbm5lbCAtPiBpbnQ2NCA9IFwiY2FtbF9tbF9jaGFubmVsX3NpemVfNjRcIlxuICBlbmRcblxuKCogRm9ybWF0cyAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2XG4gICA9ICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuICAgPSBGb3JtYXQgb2YgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5mbXRcbiAgICAgICAgICAgICAgICogc3RyaW5nXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkKSBmb3JtYXQ0ID0gKCdhLCAnYiwgJ2MsICdjLCAnYywgJ2QpIGZvcm1hdDZcblxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5cbmxldCBzdHJpbmdfb2ZfZm9ybWF0IChGb3JtYXQgKF9mbXQsIHN0cikpID0gc3RyXG5cbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+XG4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPSBcIiVpZGVudGl0eVwiXG5cbmxldCAoIF5eICkgKEZvcm1hdCAoZm10MSwgc3RyMSkpIChGb3JtYXQgKGZtdDIsIHN0cjIpKSA9XG4gIEZvcm1hdCAoQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzLmNvbmNhdF9mbXQgZm10MSBmbXQyLFxuICAgICAgICAgIHN0cjEgXiBcIiUsXCIgXiBzdHIyKVxuXG4oKiBNaXNjZWxsYW5lb3VzICopXG5cbmV4dGVybmFsIHN5c19leGl0IDogaW50IC0+ICdhID0gXCJjYW1sX3N5c19leGl0XCJcblxubGV0IGV4aXRfZnVuY3Rpb24gPSBDYW1saW50ZXJuYWxBdG9taWMubWFrZSBmbHVzaF9hbGxcblxubGV0IHJlYyBhdF9leGl0IGYgPVxuICBsZXQgbW9kdWxlIEF0b21pYyA9IENhbWxpbnRlcm5hbEF0b21pYyBpblxuICAoKiBNUFIjNzI1MywgTVBSIzc3OTY6IG1ha2Ugc3VyZSBcImZcIiBpcyBleGVjdXRlZCBvbmx5IG9uY2UgKilcbiAgbGV0IGZfeWV0X3RvX3J1biA9IEF0b21pYy5tYWtlIHRydWUgaW5cbiAgbGV0IG9sZF9leGl0ID0gQXRvbWljLmdldCBleGl0X2Z1bmN0aW9uIGluXG4gIGxldCBuZXdfZXhpdCAoKSA9XG4gICAgaWYgQXRvbWljLmNvbXBhcmVfYW5kX3NldCBmX3lldF90b19ydW4gdHJ1ZSBmYWxzZSB0aGVuIGYgKCkgO1xuICAgIG9sZF9leGl0ICgpXG4gIGluXG4gIGxldCBzdWNjZXNzID0gQXRvbWljLmNvbXBhcmVfYW5kX3NldCBleGl0X2Z1bmN0aW9uIG9sZF9leGl0IG5ld19leGl0IGluXG4gIGlmIG5vdCBzdWNjZXNzIHRoZW4gYXRfZXhpdCBmXG5cbmxldCBkb19hdF9leGl0ICgpID0gKENhbWxpbnRlcm5hbEF0b21pYy5nZXQgZXhpdF9mdW5jdGlvbikgKClcblxubGV0IGV4aXQgcmV0Y29kZSA9XG4gIGRvX2F0X2V4aXQgKCk7XG4gIHN5c19leGl0IHJldGNvZGVcblxubGV0IF8gPSByZWdpc3Rlcl9uYW1lZF92YWx1ZSBcIlBlcnZhc2l2ZXMuZG9fYXRfZXhpdFwiIGRvX2F0X2V4aXRcblxuZXh0ZXJuYWwgbWFqb3IgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZ2NfbWFqb3JcIlxuZXh0ZXJuYWwgbmFrZWRfcG9pbnRlcnNfY2hlY2tlZCA6IHVuaXQgLT4gYm9vbFxuICA9IFwiY2FtbF9zeXNfY29uc3RfbmFrZWRfcG9pbnRlcnNfY2hlY2tlZFwiXG5sZXQgKCkgPSBpZiBuYWtlZF9wb2ludGVyc19jaGVja2VkICgpIHRoZW4gYXRfZXhpdCBtYWpvclxuXG4oKk1PRFVMRV9BTElBU0VTKilcbm1vZHVsZSBBcmcgICAgICAgICAgPSBBcmdcbm1vZHVsZSBBcnJheSAgICAgICAgPSBBcnJheVxubW9kdWxlIEFycmF5TGFiZWxzICA9IEFycmF5TGFiZWxzXG5tb2R1bGUgQXRvbWljICAgICAgID0gQXRvbWljXG5tb2R1bGUgQmlnYXJyYXkgICAgID0gQmlnYXJyYXlcbm1vZHVsZSBCb29sICAgICAgICAgPSBCb29sXG5tb2R1bGUgQnVmZmVyICAgICAgID0gQnVmZmVyXG5tb2R1bGUgQnl0ZXMgICAgICAgID0gQnl0ZXNcbm1vZHVsZSBCeXRlc0xhYmVscyAgPSBCeXRlc0xhYmVsc1xubW9kdWxlIENhbGxiYWNrICAgICA9IENhbGxiYWNrXG5tb2R1bGUgQ2hhciAgICAgICAgID0gQ2hhclxubW9kdWxlIENvbXBsZXggICAgICA9IENvbXBsZXhcbm1vZHVsZSBEaWdlc3QgICAgICAgPSBEaWdlc3Rcbm1vZHVsZSBFaXRoZXIgICAgICAgPSBFaXRoZXJcbm1vZHVsZSBFcGhlbWVyb24gICAgPSBFcGhlbWVyb25cbm1vZHVsZSBGaWxlbmFtZSAgICAgPSBGaWxlbmFtZVxubW9kdWxlIEZsb2F0ICAgICAgICA9IEZsb2F0XG5tb2R1bGUgRm9ybWF0ICAgICAgID0gRm9ybWF0XG5tb2R1bGUgRnVuICAgICAgICAgID0gRnVuXG5tb2R1bGUgR2MgICAgICAgICAgID0gR2Ncbm1vZHVsZSBHZW5sZXggICAgICAgPSBHZW5sZXhcbm1vZHVsZSBIYXNodGJsICAgICAgPSBIYXNodGJsXG5tb2R1bGUgSW50ICAgICAgICAgID0gSW50XG5tb2R1bGUgSW50MzIgICAgICAgID0gSW50MzJcbm1vZHVsZSBJbnQ2NCAgICAgICAgPSBJbnQ2NFxubW9kdWxlIExhenkgICAgICAgICA9IExhenlcbm1vZHVsZSBMZXhpbmcgICAgICAgPSBMZXhpbmdcbm1vZHVsZSBMaXN0ICAgICAgICAgPSBMaXN0XG5tb2R1bGUgTGlzdExhYmVscyAgID0gTGlzdExhYmVsc1xubW9kdWxlIE1hcCAgICAgICAgICA9IE1hcFxubW9kdWxlIE1hcnNoYWwgICAgICA9IE1hcnNoYWxcbm1vZHVsZSBNb3JlTGFiZWxzICAgPSBNb3JlTGFiZWxzXG5tb2R1bGUgTmF0aXZlaW50ICAgID0gTmF0aXZlaW50XG5tb2R1bGUgT2JqICAgICAgICAgID0gT2JqXG5tb2R1bGUgT28gICAgICAgICAgID0gT29cbm1vZHVsZSBPcHRpb24gICAgICAgPSBPcHRpb25cbm1vZHVsZSBQYXJzaW5nICAgICAgPSBQYXJzaW5nXG5tb2R1bGUgUGVydmFzaXZlcyAgID0gUGVydmFzaXZlc1xubW9kdWxlIFByaW50ZXhjICAgICA9IFByaW50ZXhjXG5tb2R1bGUgUHJpbnRmICAgICAgID0gUHJpbnRmXG5tb2R1bGUgUXVldWUgICAgICAgID0gUXVldWVcbm1vZHVsZSBSYW5kb20gICAgICAgPSBSYW5kb21cbm1vZHVsZSBSZXN1bHQgICAgICAgPSBSZXN1bHRcbm1vZHVsZSBTY2FuZiAgICAgICAgPSBTY2FuZlxubW9kdWxlIFNlcSAgICAgICAgICA9IFNlcVxubW9kdWxlIFNldCAgICAgICAgICA9IFNldFxubW9kdWxlIFN0YWNrICAgICAgICA9IFN0YWNrXG5tb2R1bGUgU3RkTGFiZWxzICAgID0gU3RkTGFiZWxzXG5tb2R1bGUgU3RyZWFtICAgICAgID0gU3RyZWFtXG5tb2R1bGUgU3RyaW5nICAgICAgID0gU3RyaW5nXG5tb2R1bGUgU3RyaW5nTGFiZWxzID0gU3RyaW5nTGFiZWxzXG5tb2R1bGUgU3lzICAgICAgICAgID0gU3lzXG5tb2R1bGUgVWNoYXIgICAgICAgID0gVWNoYXJcbm1vZHVsZSBVbml0ICAgICAgICAgPSBVbml0XG5tb2R1bGUgV2VhayAgICAgICAgID0gV2Vha1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNyBKYW5lIFN0cmVldCBHcm91cCBMTEMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogQGRlcHJlY2F0ZWQgVXNlIHshU3RkbGlifSAqKVxuXG5leHRlcm5hbCByYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJhaXNlXCJcbmV4dGVybmFsIHJhaXNlX25vdHJhY2UgOiBleG4gLT4gJ2EgPSBcIiVyYWlzZV9ub3RyYWNlXCJcbmxldCBpbnZhbGlkX2FyZyA9IGludmFsaWRfYXJnXG5sZXQgZmFpbHdpdGggPSBmYWlsd2l0aFxuZXhjZXB0aW9uIEV4aXRcbmV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmV4dGVybmFsICggPD4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5leHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5leHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5leHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcbmV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxubGV0IG1pbiA9IG1pblxubGV0IG1heCA9IG1heFxuZXh0ZXJuYWwgKCA9PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxXCJcbmV4dGVybmFsICggIT0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVub3RlcVwiXG5leHRlcm5hbCBub3QgOiBib29sIC0+IGJvb2wgPSBcIiVib29sbm90XCJcbmV4dGVybmFsICggJiYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG5leHRlcm5hbCAoICYgKSA6IGJvb2wgLT4gYm9vbCAtPiBib29sID0gXCIlc2VxdWFuZFwiXG4gIFtAQG9jYW1sLmRlcHJlY2F0ZWQgXCJVc2UgKCYmKSBpbnN0ZWFkLlwiXVxuZXh0ZXJuYWwgKCB8fCApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuZXh0ZXJuYWwgKCBvciApIDogYm9vbCAtPiBib29sIC0+IGJvb2wgPSBcIiVzZXF1b3JcIlxuICBbQEBvY2FtbC5kZXByZWNhdGVkIFwiVXNlICh8fCkgaW5zdGVhZC5cIl1cbmV4dGVybmFsIF9fTE9DX18gOiBzdHJpbmcgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fRklMRV9fIDogc3RyaW5nID0gXCIlbG9jX0ZJTEVcIlxuZXh0ZXJuYWwgX19MSU5FX18gOiBpbnQgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX01PRFVMRV9fIDogc3RyaW5nID0gXCIlbG9jX01PRFVMRVwiXG5leHRlcm5hbCBfX1BPU19fIDogc3RyaW5nICogaW50ICogaW50ICogaW50ID0gXCIlbG9jX1BPU1wiXG5leHRlcm5hbCBfX0xPQ19PRl9fIDogJ2EgLT4gc3RyaW5nICogJ2EgPSBcIiVsb2NfTE9DXCJcbmV4dGVybmFsIF9fTElORV9PRl9fIDogJ2EgLT4gaW50ICogJ2EgPSBcIiVsb2NfTElORVwiXG5leHRlcm5hbCBfX1BPU19PRl9fIDogJ2EgLT4gKHN0cmluZyAqIGludCAqIGludCAqIGludCkgKiAnYSA9IFwiJWxvY19QT1NcIlxuZXh0ZXJuYWwgKCB8PiApIDogJ2EgLT4gKCdhIC0+ICdiKSAtPiAnYiA9IFwiJXJldmFwcGx5XCJcbmV4dGVybmFsICggQEAgKSA6ICgnYSAtPiAnYikgLT4gJ2EgLT4gJ2IgPSBcIiVhcHBseVwiXG5leHRlcm5hbCAoIH4tICkgOiBpbnQgLT4gaW50ID0gXCIlbmVnaW50XCJcbmV4dGVybmFsICggfisgKSA6IGludCAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmV4dGVybmFsICggKyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhZGRpbnRcIlxuZXh0ZXJuYWwgKCAtICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCAoICogKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbXVsaW50XCJcbmV4dGVybmFsICggLyApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVkaXZpbnRcIlxuZXh0ZXJuYWwgKCBtb2QgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbW9kaW50XCJcbmxldCBhYnMgPSBhYnNcbmxldCBtYXhfaW50ID0gbWF4X2ludFxubGV0IG1pbl9pbnQgPSBtaW5faW50XG5leHRlcm5hbCAoIGxhbmQgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlYW5kaW50XCJcbmV4dGVybmFsICggbG9yICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW9yaW50XCJcbmV4dGVybmFsICggbHhvciApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxub3QgPSBsbm90XG5leHRlcm5hbCAoIGxzbCApIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVsc2xpbnRcIlxuZXh0ZXJuYWwgKCBsc3IgKSA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmV4dGVybmFsICggYXNyICkgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFzcmludFwiXG5leHRlcm5hbCAoIH4tLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVuZWdmbG9hdFwiXG5leHRlcm5hbCAoIH4rLiApIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCAoICsuICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWFkZGZsb2F0XCJcbmV4dGVybmFsICggLS4gKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlc3ViZmxvYXRcIlxuZXh0ZXJuYWwgKCAqLiApIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVtdWxmbG9hdFwiXG5leHRlcm5hbCAoIC8uICkgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJWRpdmZsb2F0XCJcbmV4dGVybmFsICggKiogKSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Bvd2VyX2Zsb2F0XCIgXCJwb3dcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc3FydCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NxcnRfZmxvYXRcIiBcInNxcnRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXhwX2Zsb2F0XCIgXCJleHBcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXhwbTEgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHBtMV9mbG9hdFwiIFwiY2FtbF9leHBtMVwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBsb2cxcCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzFwX2Zsb2F0XCIgXCJjYW1sX2xvZzFwXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc19mbG9hdFwiIFwiY29zXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Npbl9mbG9hdFwiIFwic2luXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3Rhbl9mbG9hdFwiIFwidGFuXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFjb3MgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zX2Zsb2F0XCIgXCJhY29zXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGFzaW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hc2luX2Zsb2F0XCIgXCJhc2luXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4gOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuX2Zsb2F0XCIgXCJhdGFuXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW4yIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbjJfZmxvYXRcIiBcImF0YW4yXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGh5cG90IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY2VpbCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2NlaWxfZmxvYXRcIiBcImNlaWxcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvb3IgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbG9vcl9mbG9hdFwiIFwiZmxvb3JcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5leHRlcm5hbCBjb3B5c2lnbiA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gICAgICAgICAgICAgICAgICA9IFwiY2FtbF9jb3B5c2lnbl9mbG9hdFwiIFwiY2FtbF9jb3B5c2lnblwiXG4gICAgICAgICAgICAgICAgICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbW9kX2Zsb2F0IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZm1vZF9mbG9hdFwiIFwiZm1vZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmcmV4cCA6IGZsb2F0IC0+IGZsb2F0ICogaW50ID0gXCJjYW1sX2ZyZXhwX2Zsb2F0XCJcbmV4dGVybmFsIGxkZXhwIDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IChpbnQgW0B1bnRhZ2dlZF0pIC0+IChmbG9hdCBbQHVuYm94ZWRdKSA9XG4gIFwiY2FtbF9sZGV4cF9mbG9hdFwiIFwiY2FtbF9sZGV4cF9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIG1vZGYgOiBmbG9hdCAtPiBmbG9hdCAqIGZsb2F0ID0gXCJjYW1sX21vZGZfZmxvYXRcIlxuZXh0ZXJuYWwgZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIGZsb2F0X29mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiBmbG9hdCAtPiBpbnQgPSBcIiVpbnRvZmZsb2F0XCJcbmV4dGVybmFsIGludF9vZl9mbG9hdCA6IGZsb2F0IC0+IGludCA9IFwiJWludG9mZmxvYXRcIlxubGV0IGluZmluaXR5ID0gaW5maW5pdHlcbmxldCBuZWdfaW5maW5pdHkgPSBuZWdfaW5maW5pdHlcbmxldCBuYW4gPSBuYW5cbmxldCBtYXhfZmxvYXQgPSBtYXhfZmxvYXRcbmxldCBtaW5fZmxvYXQgPSBtaW5fZmxvYXRcbmxldCBlcHNpbG9uX2Zsb2F0ID0gZXBzaWxvbl9mbG9hdFxudHlwZSBub25yZWMgZnBjbGFzcyA9IGZwY2xhc3MgPVxuICAgIEZQX25vcm1hbFxuICB8IEZQX3N1Ym5vcm1hbFxuICB8IEZQX3plcm9cbiAgfCBGUF9pbmZpbml0ZVxuICB8IEZQX25hblxuZXh0ZXJuYWwgY2xhc3NpZnlfZmxvYXQgOiAoZmxvYXQgW0B1bmJveGVkXSkgLT4gZnBjbGFzcyA9XG4gIFwiY2FtbF9jbGFzc2lmeV9mbG9hdFwiIFwiY2FtbF9jbGFzc2lmeV9mbG9hdF91bmJveGVkXCIgW0BAbm9hbGxvY11cbmxldCAoIF4gKSA9ICggXiApXG5leHRlcm5hbCBpbnRfb2ZfY2hhciA6IGNoYXIgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxubGV0IGNoYXJfb2ZfaW50ID0gY2hhcl9vZl9pbnRcbmV4dGVybmFsIGlnbm9yZSA6ICdhIC0+IHVuaXQgPSBcIiVpZ25vcmVcIlxubGV0IHN0cmluZ19vZl9ib29sID0gc3RyaW5nX29mX2Jvb2xcbmxldCBib29sX29mX3N0cmluZyA9IGJvb2xfb2Zfc3RyaW5nXG5sZXQgYm9vbF9vZl9zdHJpbmdfb3B0ID0gYm9vbF9vZl9zdHJpbmdfb3B0XG5sZXQgc3RyaW5nX29mX2ludCA9IHN0cmluZ19vZl9pbnRcbmV4dGVybmFsIGludF9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50ID0gXCJjYW1sX2ludF9vZl9zdHJpbmdcIlxubGV0IGludF9vZl9zdHJpbmdfb3B0ID0gaW50X29mX3N0cmluZ19vcHRcbmxldCBzdHJpbmdfb2ZfZmxvYXQgPSBzdHJpbmdfb2ZfZmxvYXRcbmV4dGVybmFsIGZsb2F0X29mX3N0cmluZyA6IHN0cmluZyAtPiBmbG9hdCA9IFwiY2FtbF9mbG9hdF9vZl9zdHJpbmdcIlxubGV0IGZsb2F0X29mX3N0cmluZ19vcHQgPSBmbG9hdF9vZl9zdHJpbmdfb3B0XG5leHRlcm5hbCBmc3QgOiAnYSAqICdiIC0+ICdhID0gXCIlZmllbGQwXCJcbmV4dGVybmFsIHNuZCA6ICdhICogJ2IgLT4gJ2IgPSBcIiVmaWVsZDFcIlxubGV0ICggQCApICA9ICggQCApXG50eXBlIG5vbnJlYyBpbl9jaGFubmVsID0gaW5fY2hhbm5lbFxudHlwZSBub25yZWMgb3V0X2NoYW5uZWwgPSBvdXRfY2hhbm5lbFxubGV0IHN0ZGluID0gc3RkaW5cbmxldCBzdGRvdXQgPSBzdGRvdXRcbmxldCBzdGRlcnIgPSBzdGRlcnJcbmxldCBwcmludF9jaGFyID0gcHJpbnRfY2hhclxubGV0IHByaW50X3N0cmluZyA9IHByaW50X3N0cmluZ1xubGV0IHByaW50X2J5dGVzID0gcHJpbnRfYnl0ZXNcbmxldCBwcmludF9pbnQgPSBwcmludF9pbnRcbmxldCBwcmludF9mbG9hdCA9IHByaW50X2Zsb2F0XG5sZXQgcHJpbnRfZW5kbGluZSA9IHByaW50X2VuZGxpbmVcbmxldCBwcmludF9uZXdsaW5lID0gcHJpbnRfbmV3bGluZVxubGV0IHByZXJyX2NoYXIgPSBwcmVycl9jaGFyXG5sZXQgcHJlcnJfc3RyaW5nID0gcHJlcnJfc3RyaW5nXG5sZXQgcHJlcnJfYnl0ZXMgPSBwcmVycl9ieXRlc1xubGV0IHByZXJyX2ludCA9IHByZXJyX2ludFxubGV0IHByZXJyX2Zsb2F0ID0gcHJlcnJfZmxvYXRcbmxldCBwcmVycl9lbmRsaW5lID0gcHJlcnJfZW5kbGluZVxubGV0IHByZXJyX25ld2xpbmUgPSBwcmVycl9uZXdsaW5lXG5sZXQgcmVhZF9saW5lID0gcmVhZF9saW5lXG5sZXQgcmVhZF9pbnQgPSByZWFkX2ludFxubGV0IHJlYWRfaW50X29wdCA9IHJlYWRfaW50X29wdFxubGV0IHJlYWRfZmxvYXQgPSByZWFkX2Zsb2F0XG5sZXQgcmVhZF9mbG9hdF9vcHQgPSByZWFkX2Zsb2F0X29wdFxudHlwZSBub25yZWMgb3Blbl9mbGFnID0gb3Blbl9mbGFnID1cbiAgICBPcGVuX3Jkb25seVxuICB8IE9wZW5fd3Jvbmx5XG4gIHwgT3Blbl9hcHBlbmRcbiAgfCBPcGVuX2NyZWF0XG4gIHwgT3Blbl90cnVuY1xuICB8IE9wZW5fZXhjbFxuICB8IE9wZW5fYmluYXJ5XG4gIHwgT3Blbl90ZXh0XG4gIHwgT3Blbl9ub25ibG9ja1xubGV0IG9wZW5fb3V0ID0gb3Blbl9vdXRcbmxldCBvcGVuX291dF9iaW4gPSBvcGVuX291dF9iaW5cbmxldCBvcGVuX291dF9nZW4gPSBvcGVuX291dF9nZW5cbmxldCBmbHVzaCA9IGZsdXNoXG5sZXQgZmx1c2hfYWxsID0gZmx1c2hfYWxsXG5sZXQgb3V0cHV0X2NoYXIgPSBvdXRwdXRfY2hhclxubGV0IG91dHB1dF9zdHJpbmcgPSBvdXRwdXRfc3RyaW5nXG5sZXQgb3V0cHV0X2J5dGVzID0gb3V0cHV0X2J5dGVzXG5sZXQgb3V0cHV0ID0gb3V0cHV0XG5sZXQgb3V0cHV0X3N1YnN0cmluZyA9IG91dHB1dF9zdWJzdHJpbmdcbmxldCBvdXRwdXRfYnl0ZSA9IG91dHB1dF9ieXRlXG5sZXQgb3V0cHV0X2JpbmFyeV9pbnQgPSBvdXRwdXRfYmluYXJ5X2ludFxubGV0IG91dHB1dF92YWx1ZSA9IG91dHB1dF92YWx1ZVxubGV0IHNlZWtfb3V0ID0gc2Vla19vdXRcbmxldCBwb3Nfb3V0ID0gcG9zX291dFxubGV0IG91dF9jaGFubmVsX2xlbmd0aCA9IG91dF9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlX291dCA9IGNsb3NlX291dFxubGV0IGNsb3NlX291dF9ub2VyciA9IGNsb3NlX291dF9ub2VyclxubGV0IHNldF9iaW5hcnlfbW9kZV9vdXQgPSBzZXRfYmluYXJ5X21vZGVfb3V0XG5sZXQgb3Blbl9pbiA9IG9wZW5faW5cbmxldCBvcGVuX2luX2JpbiA9IG9wZW5faW5fYmluXG5sZXQgb3Blbl9pbl9nZW4gPSBvcGVuX2luX2dlblxubGV0IGlucHV0X2NoYXIgPSBpbnB1dF9jaGFyXG5sZXQgaW5wdXRfbGluZSA9IGlucHV0X2xpbmVcbmxldCBpbnB1dCA9IGlucHV0XG5sZXQgcmVhbGx5X2lucHV0ID0gcmVhbGx5X2lucHV0XG5sZXQgcmVhbGx5X2lucHV0X3N0cmluZyA9IHJlYWxseV9pbnB1dF9zdHJpbmdcbmxldCBpbnB1dF9ieXRlID0gaW5wdXRfYnl0ZVxubGV0IGlucHV0X2JpbmFyeV9pbnQgPSBpbnB1dF9iaW5hcnlfaW50XG5sZXQgaW5wdXRfdmFsdWUgPSBpbnB1dF92YWx1ZVxubGV0IHNlZWtfaW4gPSBzZWVrX2luXG5sZXQgcG9zX2luID0gcG9zX2luXG5sZXQgaW5fY2hhbm5lbF9sZW5ndGggPSBpbl9jaGFubmVsX2xlbmd0aFxubGV0IGNsb3NlX2luID0gY2xvc2VfaW5cbmxldCBjbG9zZV9pbl9ub2VyciA9IGNsb3NlX2luX25vZXJyXG5sZXQgc2V0X2JpbmFyeV9tb2RlX2luID0gc2V0X2JpbmFyeV9tb2RlX2luXG5tb2R1bGUgTGFyZ2VGaWxlID0gTGFyZ2VGaWxlXG50eXBlIG5vbnJlYyAnYSByZWYgPSAnYSByZWYgPSB7IG11dGFibGUgY29udGVudHMgOiAnYSB9XG5leHRlcm5hbCByZWYgOiAnYSAtPiAnYSByZWYgPSBcIiVtYWtlbXV0YWJsZVwiXG5leHRlcm5hbCAoICEgKSA6ICdhIHJlZiAtPiAnYSA9IFwiJWZpZWxkMFwiXG5leHRlcm5hbCAoIDo9ICkgOiAnYSByZWYgLT4gJ2EgLT4gdW5pdCA9IFwiJXNldGZpZWxkMFwiXG5leHRlcm5hbCBpbmNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlaW5jclwiXG5leHRlcm5hbCBkZWNyIDogaW50IHJlZiAtPiB1bml0ID0gXCIlZGVjclwiXG50eXBlIG5vbnJlYyAoJ2EsJ2IpIHJlc3VsdCA9ICgnYSwnYikgcmVzdWx0ID0gT2sgb2YgJ2EgfCBFcnJvciBvZiAnYlxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9XG4gICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIGZvcm1hdDQgPSAoJ2EsICdiLCAnYywgJ2MsICdjLCAnZCkgZm9ybWF0NlxudHlwZSAoJ2EsICdiLCAnYykgZm9ybWF0ID0gKCdhLCAnYiwgJ2MsICdjKSBmb3JtYXQ0XG5sZXQgc3RyaW5nX29mX2Zvcm1hdCA9IHN0cmluZ19vZl9mb3JtYXRcbmV4dGVybmFsIGZvcm1hdF9vZl9zdHJpbmcgOlxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiA9IFwiJWlkZW50aXR5XCJcbmxldCAoIF5eICkgPSAoIF5eIClcbmxldCBleGl0ID0gZXhpdFxubGV0IGF0X2V4aXQgPSBhdF9leGl0XG5sZXQgdmFsaWRfZmxvYXRfbGV4ZW0gPSB2YWxpZF9mbG9hdF9sZXhlbVxubGV0IGRvX2F0X2V4aXQgPSBkb19hdF9leGl0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgU2ltb24gQ3J1YW5lcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbU2VxXTogZnVuY3Rpb25hbCBpdGVyYXRvcnMgKilcblxudHlwZSArJ2Egbm9kZSA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiAnYSAqICdhIHRcblxuYW5kICdhIHQgPSB1bml0IC0+ICdhIG5vZGVcblxubGV0IGVtcHR5ICgpID0gTmlsXG5cbmxldCByZXR1cm4geCAoKSA9IENvbnMgKHgsIGVtcHR5KVxuXG5sZXQgY29ucyB4IG5leHQgKCkgPSBDb25zICh4LCBuZXh0KVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBtYXRjaCBzZXExKCkgd2l0aFxuICB8IE5pbCAtPiBzZXEyKClcbiAgfCBDb25zICh4LCBuZXh0KSAtPiBDb25zICh4LCBhcHBlbmQgbmV4dCBzZXEyKVxuXG5sZXQgcmVjIG1hcCBmIHNlcSAoKSA9IG1hdGNoIHNlcSgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gQ29ucyAoZiB4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiBzZXEgKCkgPSBtYXRjaCBzZXEoKSB3aXRoXG4gIHwgTmlsIC0+IE5pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX21hcCBmIG5leHQgKClcbiAgICAgICAgfCBTb21lIHkgLT4gQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID0gbWF0Y2ggc2VxKCkgd2l0aFxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgaWYgZiB4XG4gICAgICB0aGVuIENvbnMgKHgsIGZpbHRlciBmIG5leHQpXG4gICAgICBlbHNlIGZpbHRlciBmIG5leHQgKClcblxubGV0IHJlYyBjb25jYXQgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgYXBwZW5kIHggKGNvbmNhdCBuZXh0KSAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICBhcHBlbmQgKGYgeCkgKGZsYXRfbWFwIGYgbmV4dCkgKClcblxubGV0IGNvbmNhdF9tYXAgPSBmbGF0X21hcFxuXG5sZXQgZm9sZF9sZWZ0IGYgYWNjIHNlcSA9XG4gIGxldCByZWMgYXV4IGYgYWNjIHNlcSA9IG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBOaWwgLT4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBhdXggZiBhY2Mgc2VxXG5cbmxldCBpdGVyIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggc2VxID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBhdXggbmV4dFxuICBpblxuICBhdXggc2VxXG5cbmxldCByZWMgdW5mb2xkIGYgdSAoKSA9XG4gIG1hdGNoIGYgdSB3aXRoXG4gIHwgTm9uZSAtPiBOaWxcbiAgfCBTb21lICh4LCB1JykgLT4gQ29ucyAoeCwgdW5mb2xkIGYgdScpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgT0NhbWwgcHJvZ3JhbW1lcnMgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIG9wdGlvbiA9IE5vbmUgfCBTb21lIG9mICdhXG5cbmxldCBub25lID0gTm9uZVxubGV0IHNvbWUgdiA9IFNvbWUgdlxubGV0IHZhbHVlIG8gfmRlZmF1bHQgPSBtYXRjaCBvIHdpdGggU29tZSB2IC0+IHYgfCBOb25lIC0+IGRlZmF1bHRcbmxldCBnZXQgPSBmdW5jdGlvbiBTb21lIHYgLT4gdiB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJvcHRpb24gaXMgTm9uZVwiXG5sZXQgYmluZCBvIGYgPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IGYgdlxubGV0IGpvaW4gPSBmdW5jdGlvbiBTb21lIG8gLT4gbyB8IE5vbmUgLT4gTm9uZVxubGV0IG1hcCBmIG8gPSBtYXRjaCBvIHdpdGggTm9uZSAtPiBOb25lIHwgU29tZSB2IC0+IFNvbWUgKGYgdilcbmxldCBmb2xkIH5ub25lIH5zb21lID0gZnVuY3Rpb24gU29tZSB2IC0+IHNvbWUgdiB8IE5vbmUgLT4gbm9uZVxubGV0IGl0ZXIgZiA9IGZ1bmN0aW9uIFNvbWUgdiAtPiBmIHYgfCBOb25lIC0+ICgpXG5sZXQgaXNfbm9uZSA9IGZ1bmN0aW9uIE5vbmUgLT4gdHJ1ZSB8IFNvbWUgXyAtPiBmYWxzZVxubGV0IGlzX3NvbWUgPSBmdW5jdGlvbiBOb25lIC0+IGZhbHNlIHwgU29tZSBfIC0+IHRydWVcblxubGV0IGVxdWFsIGVxIG8wIG8xID0gbWF0Y2ggbzAsIG8xIHdpdGhcbnwgU29tZSB2MCwgU29tZSB2MSAtPiBlcSB2MCB2MVxufCBOb25lLCBOb25lIC0+IHRydWVcbnwgXyAtPiBmYWxzZVxuXG5sZXQgY29tcGFyZSBjbXAgbzAgbzEgPSBtYXRjaCBvMCwgbzEgd2l0aFxufCBTb21lIHYwLCBTb21lIHYxIC0+IGNtcCB2MCB2MVxufCBOb25lLCBOb25lIC0+IDBcbnwgTm9uZSwgU29tZSBfIC0+IC0xXG58IFNvbWUgXywgTm9uZSAtPiAxXG5cbmxldCB0b19yZXN1bHQgfm5vbmUgPSBmdW5jdGlvbiBOb25lIC0+IEVycm9yIG5vbmUgfCBTb21lIHYgLT4gT2sgdlxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBOb25lIC0+IFtdIHwgU29tZSB2IC0+IFt2XVxubGV0IHRvX3NlcSA9IGZ1bmN0aW9uIE5vbmUgLT4gU2VxLmVtcHR5IHwgU29tZSB2IC0+IFNlcS5yZXR1cm4gdlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICBHYWJyaWVsIFNjaGVyZXIsIHByb2pldCBQYXJzaWZhbCwgSU5SSUEgU2FjbGF5ICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHQgPSBMZWZ0IG9mICdhIHwgUmlnaHQgb2YgJ2JcblxubGV0IGxlZnQgdiA9IExlZnQgdlxubGV0IHJpZ2h0IHYgPSBSaWdodCB2XG5cbmxldCBpc19sZWZ0ID0gZnVuY3Rpb25cbnwgTGVmdCBfIC0+IHRydWVcbnwgUmlnaHQgXyAtPiBmYWxzZVxuXG5sZXQgaXNfcmlnaHQgPSBmdW5jdGlvblxufCBMZWZ0IF8gLT4gZmFsc2VcbnwgUmlnaHQgXyAtPiB0cnVlXG5cbmxldCBmaW5kX2xlZnQgPSBmdW5jdGlvblxufCBMZWZ0IHYgLT4gU29tZSB2XG58IFJpZ2h0IF8gLT4gTm9uZVxuXG5sZXQgZmluZF9yaWdodCA9IGZ1bmN0aW9uXG58IExlZnQgXyAtPiBOb25lXG58IFJpZ2h0IHYgLT4gU29tZSB2XG5cbmxldCBtYXBfbGVmdCBmID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGYgdilcbnwgUmlnaHQgXyBhcyBlIC0+IGVcblxubGV0IG1hcF9yaWdodCBmID0gZnVuY3Rpb25cbnwgTGVmdCBfIGFzIGUgLT4gZVxufCBSaWdodCB2IC0+IFJpZ2h0IChmIHYpXG5cbmxldCBtYXAgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IExlZnQgKGxlZnQgdilcbnwgUmlnaHQgdiAtPiBSaWdodCAocmlnaHQgdilcblxubGV0IGZvbGQgfmxlZnQgfnJpZ2h0ID0gZnVuY3Rpb25cbnwgTGVmdCB2IC0+IGxlZnQgdlxufCBSaWdodCB2IC0+IHJpZ2h0IHZcblxubGV0IGl0ZXIgPSBmb2xkXG5cbmxldCBmb3JfYWxsID0gZm9sZFxuXG5sZXQgZXF1YWwgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gfCBSaWdodCBfLCBMZWZ0IF8gLT4gZmFsc2VcblxubGV0IGNvbXBhcmUgfmxlZnQgfnJpZ2h0IGUxIGUyID0gbWF0Y2ggZTEsIGUyIHdpdGhcbnwgTGVmdCB2MSwgTGVmdCB2MiAtPiBsZWZ0IHYxIHYyXG58IFJpZ2h0IHYxLCBSaWdodCB2MiAtPiByaWdodCB2MSB2MlxufCBMZWZ0IF8sIFJpZ2h0IF8gLT4gKC0xKVxufCBSaWdodCBfLCBMZWZ0IF8gLT4gMVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2UpIHQgPSAoJ2EsICdlKSByZXN1bHQgPSBPayBvZiAnYSB8IEVycm9yIG9mICdlXG5cbmxldCBvayB2ID0gT2sgdlxubGV0IGVycm9yIGUgPSBFcnJvciBlXG5sZXQgdmFsdWUgciB+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+IHVuc2FmZV9jaHIoY29kZSBjICsgMzIpXG4gIHwgYyAtPiBjXG5cbmxldCB1cHBlcmNhc2VfYXNjaWkgPSBmdW5jdGlvblxuICB8ICdhJyAuLiAneicgYXMgYyAtPiB1bnNhZmVfY2hyKGNvZGUgYyAtIDMyKVxuICB8IGMgLT4gY1xuXG50eXBlIHQgPSBjaGFyXG5cbmxldCBjb21wYXJlIGMxIGMyID0gY29kZSBjMSAtIGNvZGUgYzJcbmxldCBlcXVhbCAoYzE6IHQpIChjMjogdCkgPSBjb21wYXJlIGMxIGMyID0gMFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICBEYW5pZWwgQy4gQnVlbnpsaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBmb3JtYXRfaW50IDogc3RyaW5nIC0+IGludCAtPiBzdHJpbmcgPSBcImNhbWxfZm9ybWF0X2ludFwiXG5cbmxldCBlcnJfbm9fcHJlZCA9IFwiVSswMDAwIGhhcyBubyBwcmVkZWNlc3NvclwiXG5sZXQgZXJyX25vX3N1Y2MgPSBcIlUrMTBGRkZGIGhhcyBubyBzdWNjZXNzb3JcIlxubGV0IGVycl9ub3Rfc3YgaSA9IGZvcm1hdF9pbnQgXCIlWFwiIGkgXiBcIiBpcyBub3QgYW4gVW5pY29kZSBzY2FsYXIgdmFsdWVcIlxubGV0IGVycl9ub3RfbGF0aW4xIHUgPSBcIlUrXCIgXiBmb3JtYXRfaW50IFwiJTA0WFwiIHUgXiBcIiBpcyBub3QgYSBsYXRpbjEgY2hhcmFjdGVyXCJcblxudHlwZSB0ID0gaW50XG5cbmxldCBtaW4gPSAweDAwMDBcbmxldCBtYXggPSAweDEwRkZGRlxubGV0IGxvX2JvdW5kID0gMHhEN0ZGXG5sZXQgaGlfYm91bmQgPSAweEUwMDBcblxubGV0IGJvbSA9IDB4RkVGRlxubGV0IHJlcCA9IDB4RkZGRFxuXG5sZXQgc3VjYyB1ID1cbiAgaWYgdSA9IGxvX2JvdW5kIHRoZW4gaGlfYm91bmQgZWxzZVxuICBpZiB1ID0gbWF4IHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3N1Y2MgZWxzZVxuICB1ICsgMVxuXG5sZXQgcHJlZCB1ID1cbiAgaWYgdSA9IGhpX2JvdW5kIHRoZW4gbG9fYm91bmQgZWxzZVxuICBpZiB1ID0gbWluIHRoZW4gaW52YWxpZF9hcmcgZXJyX25vX3ByZWQgZWxzZVxuICB1IC0gMVxuXG5sZXQgaXNfdmFsaWQgaSA9IChtaW4gPD0gaSAmJiBpIDw9IGxvX2JvdW5kKSB8fCAoaGlfYm91bmQgPD0gaSAmJiBpIDw9IG1heClcbmxldCBvZl9pbnQgaSA9IGlmIGlzX3ZhbGlkIGkgdGhlbiBpIGVsc2UgaW52YWxpZF9hcmcgKGVycl9ub3Rfc3YgaSlcbmV4dGVybmFsIHVuc2FmZV9vZl9pbnQgOiBpbnQgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIHRvX2ludCA6IHQgLT4gaW50ID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgaXNfY2hhciB1ID0gdSA8IDI1NlxubGV0IG9mX2NoYXIgYyA9IENoYXIuY29kZSBjXG5sZXQgdG9fY2hhciB1ID1cbiAgaWYgdSA+IDI1NSB0aGVuIGludmFsaWRfYXJnIChlcnJfbm90X2xhdGluMSB1KSBlbHNlXG4gIENoYXIudW5zYWZlX2NociB1XG5cbmxldCB1bnNhZmVfdG9fY2hhciA9IENoYXIudW5zYWZlX2NoclxuXG5sZXQgZXF1YWwgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSAoID0gKVxubGV0IGNvbXBhcmUgOiBpbnQgLT4gaW50IC0+IGludCA9IFN0ZGxpYi5jb21wYXJlXG5sZXQgaGFzaCA9IHRvX2ludFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgbGlzdHMuICopXG50eXBlICdhIHQgPSAnYSBsaXN0ID0gW10gfCAoOjopIG9mICdhICogJ2EgbGlzdFxuXG4oKiBMaXN0IG9wZXJhdGlvbnMgKilcblxubGV0IHJlYyBsZW5ndGhfYXV4IGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gbGVuXG4gIHwgXzo6bCAtPiBsZW5ndGhfYXV4IChsZW4gKyAxKSBsXG5cbmxldCBsZW5ndGggbCA9IGxlbmd0aF9hdXggMCBsXG5cbmxldCBjb25zIGEgbCA9IGE6OmxcblxubGV0IGhkID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcImhkXCJcbiAgfCBhOjpfIC0+IGFcblxubGV0IHRsID0gZnVuY3Rpb25cbiAgICBbXSAtPiBmYWlsd2l0aCBcInRsXCJcbiAgfCBfOjpsIC0+IGxcblxubGV0IG50aCBsIG4gPVxuICBpZiBuIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiTGlzdC5udGhcIiBlbHNlXG4gIGxldCByZWMgbnRoX2F1eCBsIG4gPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gZmFpbHdpdGggXCJudGhcIlxuICAgIHwgYTo6bCAtPiBpZiBuID0gMCB0aGVuIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IG50aF9vcHQgbCBuID1cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkxpc3QubnRoXCIgZWxzZVxuICBsZXQgcmVjIG50aF9hdXggbCBuID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IGE6OmwgLT4gaWYgbiA9IDAgdGhlbiBTb21lIGEgZWxzZSBudGhfYXV4IGwgKG4tMSlcbiAgaW4gbnRoX2F1eCBsIG5cblxubGV0IGFwcGVuZCA9IChAKVxuXG5sZXQgcmVjIHJldl9hcHBlbmQgbDEgbDIgPVxuICBtYXRjaCBsMSB3aXRoXG4gICAgW10gLT4gbDJcbiAgfCBhIDo6IGwgLT4gcmV2X2FwcGVuZCBsIChhIDo6IGwyKVxuXG5sZXQgcmV2IGwgPSByZXZfYXBwZW5kIGwgW11cblxubGV0IHJlYyBpbml0X3RhaWxyZWNfYXV4IGFjYyBpIG4gZiA9XG4gIGlmIGkgPj0gbiB0aGVuIGFjY1xuICBlbHNlIGluaXRfdGFpbHJlY19hdXggKGYgaSA6OiBhY2MpIChpKzEpIG4gZlxuXG5sZXQgcmVjIGluaXRfYXV4IGkgbiBmID1cbiAgaWYgaSA+PSBuIHRoZW4gW11cbiAgZWxzZVxuICAgIGxldCByID0gZiBpIGluXG4gICAgciA6OiBpbml0X2F1eCAoaSsxKSBuIGZcblxubGV0IHJldl9pbml0X3RocmVzaG9sZCA9XG4gIG1hdGNoIFN5cy5iYWNrZW5kX3R5cGUgd2l0aFxuICB8IFN5cy5OYXRpdmUgfCBTeXMuQnl0ZWNvZGUgLT4gMTBfMDAwXG4gICgqIFdlIGRvbid0IGtub3cgdGhlIHNpemUgb2YgdGhlIHN0YWNrLCBiZXR0ZXIgYmUgc2FmZSBhbmQgYXNzdW1lIGl0J3NcbiAgICAgc21hbGwuICopXG4gIHwgU3lzLk90aGVyIF8gLT4gNTBcblxubGV0IGluaXQgbGVuIGYgPVxuICBpZiBsZW4gPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJMaXN0LmluaXRcIiBlbHNlXG4gIGlmIGxlbiA+IHJldl9pbml0X3RocmVzaG9sZCB0aGVuIHJldiAoaW5pdF90YWlscmVjX2F1eCBbXSAwIGxlbiBmKVxuICBlbHNlIGluaXRfYXV4IDAgbGVuIGZcblxubGV0IHJlYyBmbGF0dGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGw6OnIgLT4gbCBAIGZsYXR0ZW4gclxuXG5sZXQgY29uY2F0ID0gZmxhdHRlblxuXG5sZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbXVxuICB8IGE6OmwgLT4gbGV0IHIgPSBmIGEgaW4gciA6OiBtYXAgZiBsXG5cbmxldCByZWMgbWFwaSBpIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+IFtdXG4gIHwgYTo6bCAtPiBsZXQgciA9IGYgaSBhIGluIHIgOjogbWFwaSAoaSArIDEpIGYgbFxuXG5sZXQgbWFwaSBmIGwgPSBtYXBpIDAgZiBsXG5cbmxldCByZXZfbWFwIGYgbCA9XG4gIGxldCByZWMgcm1hcF9mIGFjY3UgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjdVxuICAgIHwgYTo6bCAtPiBybWFwX2YgKGYgYSA6OiBhY2N1KSBsXG4gIGluXG4gIHJtYXBfZiBbXSBsXG5cblxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgYTo6bCAtPiBmIGE7IGl0ZXIgZiBsXG5cbmxldCByZWMgaXRlcmkgaSBmID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IGE6OmwgLT4gZiBpIGE7IGl0ZXJpIChpICsgMSkgZiBsXG5cbmxldCBpdGVyaSBmIGwgPSBpdGVyaSAwIGYgbFxuXG5sZXQgcmVjIGZvbGRfbGVmdCBmIGFjY3UgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+IGFjY3VcbiAgfCBhOjpsIC0+IGZvbGRfbGVmdCBmIChmIGFjY3UgYSkgbFxuXG5sZXQgcmVjIGZvbGRfcmlnaHQgZiBsIGFjY3UgPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAtPiBhY2N1XG4gIHwgYTo6bCAtPiBmIGEgKGZvbGRfcmlnaHQgZiBsIGFjY3UpXG5cbmxldCByZWMgbWFwMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBsZXQgciA9IGYgYTEgYTIgaW4gciA6OiBtYXAyIGYgbDEgbDJcbiAgfCAoXywgXykgLT4gaW52YWxpZF9hcmcgXCJMaXN0Lm1hcDJcIlxuXG5sZXQgcmV2X21hcDIgZiBsMSBsMiA9XG4gIGxldCByZWMgcm1hcDJfZiBhY2N1IGwxIGwyID1cbiAgICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgfCAoW10sIFtdKSAtPiBhY2N1XG4gICAgfCAoYTE6OmwxLCBhMjo6bDIpIC0+IHJtYXAyX2YgKGYgYTEgYTIgOjogYWNjdSkgbDEgbDJcbiAgICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QucmV2X21hcDJcIlxuICBpblxuICBybWFwMl9mIFtdIGwxIGwyXG5cblxubGV0IHJlYyBpdGVyMiBmIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+ICgpXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBmIGExIGEyOyBpdGVyMiBmIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5pdGVyMlwiXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIGFjY3UgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZm9sZF9sZWZ0MiBmIChmIGFjY3UgYTEgYTIpIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb2xkX2xlZnQyXCJcblxubGV0IHJlYyBmb2xkX3JpZ2h0MiBmIGwxIGwyIGFjY3UgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gYWNjdVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gZiBhMSBhMiAoZm9sZF9yaWdodDIgZiBsMSBsMiBhY2N1KVxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZm9sZF9yaWdodDJcIlxuXG5sZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gdHJ1ZVxuICB8IGE6OmwgLT4gcCBhICYmIGZvcl9hbGwgcCBsXG5cbmxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBwIGEgfHwgZXhpc3RzIHAgbFxuXG5sZXQgcmVjIGZvcl9hbGwyIHAgbDEgbDIgPVxuICBtYXRjaCAobDEsIGwyKSB3aXRoXG4gICAgKFtdLCBbXSkgLT4gdHJ1ZVxuICB8IChhMTo6bDEsIGEyOjpsMikgLT4gcCBhMSBhMiAmJiBmb3JfYWxsMiBwIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5mb3JfYWxsMlwiXG5cbmxldCByZWMgZXhpc3RzMiBwIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IGZhbHNlXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiBwIGExIGEyIHx8IGV4aXN0czIgcCBsMSBsMlxuICB8IChfLCBfKSAtPiBpbnZhbGlkX2FyZyBcIkxpc3QuZXhpc3RzMlwiXG5cbmxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IGZhbHNlXG4gIHwgYTo6bCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtIHggbFxuXG5sZXQgcmVjIG1lbXEgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZmFsc2VcbiAgfCBhOjpsIC0+IGEgPT0geCB8fCBtZW1xIHggbFxuXG5sZXQgcmVjIGFzc29jIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGIgZWxzZSBhc3NvYyB4IGxcblxubGV0IHJlYyBhc3NvY19vcHQgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gTm9uZVxuICB8IChhLGIpOjpsIC0+IGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIFNvbWUgYiBlbHNlIGFzc29jX29wdCB4IGxcblxubGV0IHJlYyBhc3NxIHggPSBmdW5jdGlvblxuICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IChhLGIpOjpsIC0+IGlmIGEgPT0geCB0aGVuIGIgZWxzZSBhc3NxIHggbFxuXG5sZXQgcmVjIGFzc3Ffb3B0IHggPSBmdW5jdGlvblxuICAgIFtdIC0+IE5vbmVcbiAgfCAoYSxiKTo6bCAtPiBpZiBhID09IHggdGhlbiBTb21lIGIgZWxzZSBhc3NxX29wdCB4IGxcblxubGV0IHJlYyBtZW1fYXNzb2MgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFsc2VcbiAgfCAoYSwgXykgOjogbCAtPiBjb21wYXJlIGEgeCA9IDAgfHwgbWVtX2Fzc29jIHggbFxuXG5sZXQgcmVjIG1lbV9hc3NxIHggPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlXG4gIHwgKGEsIF8pIDo6IGwgLT4gYSA9PSB4IHx8IG1lbV9hc3NxIHggbFxuXG5sZXQgcmVjIHJlbW92ZV9hc3NvYyB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT5cbiAgICAgIGlmIGNvbXBhcmUgYSB4ID0gMCB0aGVuIGwgZWxzZSBwYWlyIDo6IHJlbW92ZV9hc3NvYyB4IGxcblxubGV0IHJlYyByZW1vdmVfYXNzcSB4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IChhLCBfIGFzIHBhaXIpIDo6IGwgLT4gaWYgYSA9PSB4IHRoZW4gbCBlbHNlIHBhaXIgOjogcmVtb3ZlX2Fzc3EgeCBsXG5cbmxldCByZWMgZmluZCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4geCBlbHNlIGZpbmQgcCBsXG5cbmxldCByZWMgZmluZF9vcHQgcCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IHggOjogbCAtPiBpZiBwIHggdGhlbiBTb21lIHggZWxzZSBmaW5kX29wdCBwIGxcblxubGV0IHJlYyBmaW5kX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBOb25lXG4gIHwgeCA6OiBsIC0+XG4gICAgIGJlZ2luIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgfCBTb21lIF8gYXMgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgIHwgTm9uZSAtPiBmaW5kX21hcCBmIGxcbiAgICAgZW5kXG5cbmxldCBmaW5kX2FsbCBwID1cbiAgbGV0IHJlYyBmaW5kIGFjY3UgPSBmdW5jdGlvblxuICB8IFtdIC0+IHJldiBhY2N1XG4gIHwgeCA6OiBsIC0+IGlmIHAgeCB0aGVuIGZpbmQgKHggOjogYWNjdSkgbCBlbHNlIGZpbmQgYWNjdSBsIGluXG4gIGZpbmQgW11cblxubGV0IGZpbHRlciA9IGZpbmRfYWxsXG5cbmxldCBmaWx0ZXJpIHAgbCA9XG4gIGxldCByZWMgYXV4IGkgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiByZXYgYWNjXG4gIHwgeDo6bCAtPiBhdXggKGkgKyAxKSAoaWYgcCBpIHggdGhlbiB4OjphY2MgZWxzZSBhY2MpIGxcbiAgaW5cbiAgYXV4IDAgW10gbFxuXG5sZXQgZmlsdGVyX21hcCBmID1cbiAgbGV0IHJlYyBhdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjdVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggYWNjdSBsXG4gICAgICAgIHwgU29tZSB2IC0+IGF1eCAodiA6OiBhY2N1KSBsXG4gIGluXG4gIGF1eCBbXVxuXG5sZXQgY29uY2F0X21hcCBmIGwgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiByZXYgYWNjXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgICBsZXQgeHMgPSBmIHggaW5cbiAgICAgICBhdXggZiAocmV2X2FwcGVuZCB4cyBhY2MpIGxcbiAgaW4gYXV4IGYgW10gbFxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjY3UgbCA9XG4gIGxldCByZWMgYXV4IGFjY3UgbF9hY2N1ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3UsIHJldiBsX2FjY3VcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgYWNjdSwgeCA9IGYgYWNjdSB4IGluXG4gICAgICAgIGF1eCBhY2N1ICh4IDo6IGxfYWNjdSkgbCBpblxuICBhdXggYWNjdSBbXSBsXG5cbmxldCBwYXJ0aXRpb24gcCBsID1cbiAgbGV0IHJlYyBwYXJ0IHllcyBubyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKHJldiB5ZXMsIHJldiBubylcbiAgfCB4IDo6IGwgLT4gaWYgcCB4IHRoZW4gcGFydCAoeCA6OiB5ZXMpIG5vIGwgZWxzZSBwYXJ0IHllcyAoeCA6OiBubykgbCBpblxuICBwYXJ0IFtdIFtdIGxcblxubGV0IHBhcnRpdGlvbl9tYXAgcCBsID1cbiAgbGV0IHJlYyBwYXJ0IGxlZnQgcmlnaHQgPSBmdW5jdGlvblxuICB8IFtdIC0+IChyZXYgbGVmdCwgcmV2IHJpZ2h0KVxuICB8IHggOjogbCAtPlxuICAgICBiZWdpbiBtYXRjaCBwIHggd2l0aFxuICAgICAgIHwgRWl0aGVyLkxlZnQgdiAtPiBwYXJ0ICh2IDo6IGxlZnQpIHJpZ2h0IGxcbiAgICAgICB8IEVpdGhlci5SaWdodCB2IC0+IHBhcnQgbGVmdCAodiA6OiByaWdodCkgbFxuICAgICBlbmRcbiAgaW5cbiAgcGFydCBbXSBbXSBsXG5cbmxldCByZWMgc3BsaXQgPSBmdW5jdGlvblxuICAgIFtdIC0+IChbXSwgW10pXG4gIHwgKHgseSk6OmwgLT5cbiAgICAgIGxldCAocngsIHJ5KSA9IHNwbGl0IGwgaW4gKHg6OnJ4LCB5OjpyeSlcblxubGV0IHJlYyBjb21iaW5lIGwxIGwyID1cbiAgbWF0Y2ggKGwxLCBsMikgd2l0aFxuICAgIChbXSwgW10pIC0+IFtdXG4gIHwgKGExOjpsMSwgYTI6OmwyKSAtPiAoYTEsIGEyKSA6OiBjb21iaW5lIGwxIGwyXG4gIHwgKF8sIF8pIC0+IGludmFsaWRfYXJnIFwiTGlzdC5jb21iaW5lXCJcblxuKCoqIHNvcnRpbmcgKilcblxubGV0IHJlYyBtZXJnZSBjbXAgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBsMiAtPiBsMlxuICB8IGwxLCBbXSAtPiBsMVxuICB8IGgxIDo6IHQxLCBoMiA6OiB0MiAtPlxuICAgICAgaWYgY21wIGgxIGgyIDw9IDBcbiAgICAgIHRoZW4gaDEgOjogbWVyZ2UgY21wIHQxIGwyXG4gICAgICBlbHNlIGgyIDo6IG1lcmdlIGNtcCBsMSB0MlxuXG5cbmxldCBzdGFibGVfc29ydCBjbXAgbCA9XG4gIGxldCByZWMgcmV2X21lcmdlIGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPD0gMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBpZiBjbXAgaDEgaDIgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPSBpZiBjbXAgeDEgeDIgPD0gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA8PSAwIHRoZW5cbiAgICAgICAgICAgIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCB4MSB4MyA8PSAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzIDw9IDAgdGhlbiBbeDI7IHgxOyB4M11cbiAgICAgICAgICBlbHNlIGlmIGNtcCB4MiB4MyA8PSAwIHRoZW4gW3gyOyB4MzsgeDFdXG4gICAgICAgICAgZWxzZSBbeDM7IHgyOyB4MV1cbiAgICAgICAgaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgbiwgbCAtPlxuICAgICAgICBsZXQgbjEgPSBuIGFzciAxIGluXG4gICAgICAgIGxldCBuMiA9IG4gLSBuMSBpblxuICAgICAgICBsZXQgczEsIGwyID0gcmV2X3NvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gcmV2X3NvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZV9yZXYgczEgczIgW10sIHRsKVxuICBhbmQgcmV2X3NvcnQgbiBsID1cbiAgICBtYXRjaCBuLCBsIHdpdGhcbiAgICB8IDIsIHgxIDo6IHgyIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID0gaWYgY21wIHgxIHgyID4gMCB0aGVuIFt4MTsgeDJdIGVsc2UgW3gyOyB4MV0gaW5cbiAgICAgICAgKHMsIHRsKVxuICAgIHwgMywgeDEgOjogeDIgOjogeDMgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGlmIGNtcCB4MSB4MiA+IDAgdGhlblxuICAgICAgICAgICAgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MTsgeDI7IHgzXVxuICAgICAgICAgICAgZWxzZSBpZiBjbXAgeDEgeDMgPiAwIHRoZW4gW3gxOyB4MzsgeDJdXG4gICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgxIHgzID4gMCB0aGVuIFt4MjsgeDE7IHgzXVxuICAgICAgICAgIGVsc2UgaWYgY21wIHgyIHgzID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgIGVsc2UgW3gzOyB4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IG4sIGwgLT5cbiAgICAgICAgbGV0IG4xID0gbiBhc3IgMSBpblxuICAgICAgICBsZXQgbjIgPSBuIC0gbjEgaW5cbiAgICAgICAgbGV0IHMxLCBsMiA9IHNvcnQgbjEgbCBpblxuICAgICAgICBsZXQgczIsIHRsID0gc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlIHMxIHMyIFtdLCB0bClcbiAgaW5cbiAgbGV0IGxlbiA9IGxlbmd0aCBsIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBsIGVsc2UgZnN0IChzb3J0IGxlbiBsKVxuXG5cbmxldCBzb3J0ID0gc3RhYmxlX3NvcnRcbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiBOb3RlOiBvbiBhIGxpc3Qgb2YgbGVuZ3RoIGJldHdlZW4gYWJvdXQgMTAwMDAwIChkZXBlbmRpbmcgb24gdGhlIG1pbm9yXG4gICBoZWFwIHNpemUgYW5kIHRoZSB0eXBlIG9mIHRoZSBsaXN0KSBhbmQgU3lzLm1heF9hcnJheV9zaXplLCBpdCBpc1xuICAgYWN0dWFsbHkgZmFzdGVyIHRvIHVzZSB0aGUgZm9sbG93aW5nLCBidXQgaXQgbWlnaHQgYWxzbyB1c2UgbW9yZSBtZW1vcnlcbiAgIGJlY2F1c2UgdGhlIGFyZ3VtZW50IGxpc3QgY2Fubm90IGJlIGRlYWxsb2NhdGVkIGluY3JlbWVudGFsbHkuXG5cbiAgIEFsc28sIHRoZXJlIHNlZW1zIHRvIGJlIGEgYnVnIGluIHRoaXMgY29kZSBvciBpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mIG9ial90cnVuY2F0ZS5cblxuZXh0ZXJuYWwgb2JqX3RydW5jYXRlIDogJ2EgYXJyYXkgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3RydW5jYXRlXCJcblxubGV0IGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYSA9XG4gIGxldCBsID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGFjY3UgbiBwID1cbiAgICBpZiBwIDw9IDAgdGhlbiBhY2N1IGVsc2UgYmVnaW5cbiAgICAgIGlmIHAgPSBuIHRoZW4gYmVnaW5cbiAgICAgICAgb2JqX3RydW5jYXRlIGEgcDtcbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSAobi0xMDAwKSAocC0xKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgbG9vcCAoYS4ocC0xKSA6OiBhY2N1KSBuIChwLTEpXG4gICAgICBlbmRcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBbXSAobC0xMDAwKSBsXG5cblxubGV0IHN0YWJsZV9zb3J0IGNtcCBsID1cbiAgbGV0IGEgPSBBcnJheS5vZl9saXN0IGwgaW5cbiAgQXJyYXkuc3RhYmxlX3NvcnQgY21wIGE7XG4gIGFycmF5X3RvX2xpc3RfaW5fcGxhY2UgYVxuXG4qKVxuXG5cbigqKiBzb3J0aW5nICsgcmVtb3ZpbmcgZHVwbGljYXRlcyAqKVxuXG5sZXQgc29ydF91bmlxIGNtcCBsID1cbiAgbGV0IHJlYyByZXZfbWVyZ2UgbDEgbDIgYWNjdSA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBsMiAtPiByZXZfYXBwZW5kIGwyIGFjY3VcbiAgICB8IGwxLCBbXSAtPiByZXZfYXBwZW5kIGwxIGFjY3VcbiAgICB8IGgxOjp0MSwgaDI6OnQyIC0+XG4gICAgICAgIGxldCBjID0gY21wIGgxIGgyIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW4gcmV2X21lcmdlIHQxIHQyIChoMTo6YWNjdSlcbiAgICAgICAgZWxzZSBpZiBjIDwgMFxuICAgICAgICB0aGVuIHJldl9tZXJnZSB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlIGwxIHQyIChoMjo6YWNjdSlcbiAgaW5cbiAgbGV0IHJlYyByZXZfbWVyZ2VfcmV2IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBbXSwgbDIgLT4gcmV2X2FwcGVuZCBsMiBhY2N1XG4gICAgfCBsMSwgW10gLT4gcmV2X2FwcGVuZCBsMSBhY2N1XG4gICAgfCBoMTo6dDEsIGgyOjp0MiAtPlxuICAgICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIHJldl9tZXJnZV9yZXYgdDEgdDIgKGgxOjphY2N1KVxuICAgICAgICBlbHNlIGlmIGMgPiAwXG4gICAgICAgIHRoZW4gcmV2X21lcmdlX3JldiB0MSBsMiAoaDE6OmFjY3UpXG4gICAgICAgIGVsc2UgcmV2X21lcmdlX3JldiBsMSB0MiAoaDI6OmFjY3UpXG4gIGluXG4gIGxldCByZWMgc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA8IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSByZXZfc29ydCBuMSBsIGluXG4gICAgICAgIGxldCBzMiwgdGwgPSByZXZfc29ydCBuMiBsMiBpblxuICAgICAgICAocmV2X21lcmdlX3JldiBzMSBzMiBbXSwgdGwpXG4gIGFuZCByZXZfc29ydCBuIGwgPVxuICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgIHwgMiwgeDEgOjogeDIgOjogdGwgLT5cbiAgICAgICAgbGV0IHMgPVxuICAgICAgICAgIGxldCBjID0gY21wIHgxIHgyIGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBbeDFdIGVsc2UgaWYgYyA+IDAgdGhlbiBbeDE7IHgyXSBlbHNlIFt4MjsgeDFdXG4gICAgICAgIGluXG4gICAgICAgIChzLCB0bClcbiAgICB8IDMsIHgxIDo6IHgyIDo6IHgzIDo6IHRsIC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBsZXQgYyA9IGNtcCB4MSB4MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4Ml0gZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDNdIGVsc2UgW3gzOyB4Ml1cbiAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW5cbiAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MTsgeDJdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gxOyB4MjsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gxOyB4Ml1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MTsgeDM7IHgyXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDE7IHgyXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCBjID0gY21wIHgxIHgzIGluXG4gICAgICAgICAgICBpZiBjID0gMCB0aGVuIFt4MjsgeDFdXG4gICAgICAgICAgICBlbHNlIGlmIGMgPiAwIHRoZW4gW3gyOyB4MTsgeDNdXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCBjID0gY21wIHgyIHgzIGluXG4gICAgICAgICAgICAgIGlmIGMgPSAwIHRoZW4gW3gyOyB4MV1cbiAgICAgICAgICAgICAgZWxzZSBpZiBjID4gMCB0aGVuIFt4MjsgeDM7IHgxXVxuICAgICAgICAgICAgICBlbHNlIFt4MzsgeDI7IHgxXVxuICAgICAgICBpblxuICAgICAgICAocywgdGwpXG4gICAgfCBuLCBsIC0+XG4gICAgICAgIGxldCBuMSA9IG4gYXNyIDEgaW5cbiAgICAgICAgbGV0IG4yID0gbiAtIG4xIGluXG4gICAgICAgIGxldCBzMSwgbDIgPSBzb3J0IG4xIGwgaW5cbiAgICAgICAgbGV0IHMyLCB0bCA9IHNvcnQgbjIgbDIgaW5cbiAgICAgICAgKHJldl9tZXJnZSBzMSBzMiBbXSwgdGwpXG4gIGluXG4gIGxldCBsZW4gPSBsZW5ndGggbCBpblxuICBpZiBsZW4gPCAyIHRoZW4gbCBlbHNlIGZzdCAoc29ydCBsZW4gbClcblxuXG5sZXQgcmVjIGNvbXBhcmVfbGVuZ3RocyBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gIHwgW10sIFtdIC0+IDBcbiAgfCBbXSwgXyAtPiAtMVxuICB8IF8sIFtdIC0+IDFcbiAgfCBfIDo6IGwxLCBfIDo6IGwyIC0+IGNvbXBhcmVfbGVuZ3RocyBsMSBsMlxuOztcblxubGV0IHJlYyBjb21wYXJlX2xlbmd0aF93aXRoIGwgbiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgaWYgbiA9IDAgdGhlbiAwIGVsc2VcbiAgICAgIGlmIG4gPiAwIHRoZW4gLTEgZWxzZSAxXG4gIHwgXyA6OiBsIC0+XG4gICAgaWYgbiA8PSAwIHRoZW4gMSBlbHNlXG4gICAgICBjb21wYXJlX2xlbmd0aF93aXRoIGwgKG4tMSlcbjs7XG5cbigqKiB7MSBDb21wYXJpc29ufSAqKVxuXG4oKiBOb3RlOiB3ZSBhcmUgKm5vdCogc2hvcnRjdXR0aW5nIHRoZSBsaXN0IGJ5IHVzaW5nXG4gICBbTGlzdC5jb21wYXJlX2xlbmd0aHNdIGZpcnN0OyB0aGlzIG1heSBiZSBzbG93ZXIgb24gbG9uZyBsaXN0c1xuICAgaW1tZWRpYXRlbHkgc3RhcnQgd2l0aCBkaXN0aW5jdCBlbGVtZW50cy4gSXQgaXMgYWxzbyBpbmNvcnJlY3QgZm9yXG4gICBbY29tcGFyZV0gYmVsb3csIGFuZCBpdCBpcyBiZXR0ZXIgKHByaW5jaXBsZSBvZiBsZWFzdCBzdXJwcmlzZSkgdG9cbiAgIHVzZSB0aGUgc2FtZSBhcHByb2FjaCBmb3IgYm90aCBmdW5jdGlvbnMuICopXG5sZXQgcmVjIGVxdWFsIGVxIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gdHJ1ZVxuICB8IFtdLCBfOjpfIHwgXzo6XywgW10gLT4gZmFsc2VcbiAgfCBhMTo6bDEsIGEyOjpsMiAtPiBlcSBhMSBhMiAmJiBlcXVhbCBlcSBsMSBsMlxuXG5sZXQgcmVjIGNvbXBhcmUgY21wIGwxIGwyID1cbiAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgfCBbXSwgW10gLT4gMFxuICB8IFtdLCBfOjpfIC0+IC0xXG4gIHwgXzo6XywgW10gLT4gMVxuICB8IGExOjpsMSwgYTI6OmwyIC0+XG4gICAgbGV0IGMgPSBjbXAgYTEgYTIgaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjXG4gICAgZWxzZSBjb21wYXJlIGNtcCBsMSBsMlxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGwgPVxuICBsZXQgcmVjIGF1eCBsICgpID0gbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBTZXEuTmlsXG4gICAgfCB4IDo6IHRhaWwgLT4gU2VxLkNvbnMgKHgsIGF1eCB0YWlsKVxuICBpblxuICBhdXggbFxuXG5sZXQgb2Zfc2VxIHNlcSA9XG4gIGxldCByZWMgZGlyZWN0IGRlcHRoIHNlcSA6IF8gbGlzdCA9XG4gICAgaWYgZGVwdGg9MFxuICAgIHRoZW5cbiAgICAgIFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIHNlcVxuICAgICAgfD4gcmV2ICgqIHRhaWxyZWMgKilcbiAgICBlbHNlIG1hdGNoIHNlcSgpIHdpdGhcbiAgICAgIHwgU2VxLk5pbCAtPiBbXVxuICAgICAgfCBTZXEuQ29ucyAoeCwgbmV4dCkgLT4geCA6OiBkaXJlY3QgKGRlcHRoLTEpIG5leHRcbiAgaW5cbiAgZGlyZWN0IDUwMCBzZXFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBPQ2FtbCBwcm9ncmFtbWVycyAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMTggSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50XG5cbmxldCB6ZXJvID0gMFxubGV0IG9uZSA9IDFcbmxldCBtaW51c19vbmUgPSAtMVxuZXh0ZXJuYWwgbmVnIDogaW50IC0+IGludCA9IFwiJW5lZ2ludFwiXG5leHRlcm5hbCBhZGQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFkZGludFwiXG5leHRlcm5hbCBzdWIgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJXN1YmludFwiXG5leHRlcm5hbCBtdWwgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW11bGludFwiXG5leHRlcm5hbCBkaXYgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWRpdmludFwiXG5leHRlcm5hbCByZW0gOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJW1vZGludFwiXG5leHRlcm5hbCBzdWNjIDogaW50IC0+IGludCA9IFwiJXN1Y2NpbnRcIlxuZXh0ZXJuYWwgcHJlZCA6IGludCAtPiBpbnQgPSBcIiVwcmVkaW50XCJcbmxldCBhYnMgeCA9IGlmIHggPj0gMCB0aGVuIHggZWxzZSAteFxubGV0IG1heF9pbnQgPSAoLTEpIGxzciAxXG5sZXQgbWluX2ludCA9IG1heF9pbnQgKyAxXG5leHRlcm5hbCBsb2dhbmQgOiBpbnQgLT4gaW50IC0+IGludCA9IFwiJWFuZGludFwiXG5leHRlcm5hbCBsb2dvciA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlb3JpbnRcIlxuZXh0ZXJuYWwgbG9neG9yIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiV4b3JpbnRcIlxubGV0IGxvZ25vdCB4ID0gbG9neG9yIHggKC0xKVxuZXh0ZXJuYWwgc2hpZnRfbGVmdCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNsaW50XCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0IDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVhc3JpbnRcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludCAtPiBpbnQgLT4gaW50ID0gXCIlbHNyaW50XCJcbmxldCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9ICggPSApXG5sZXQgY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50ID0gU3RkbGliLmNvbXBhcmVcbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdG9maW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5cbigqXG5leHRlcm5hbCBpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludCA9IFwiY2FtbF9pbnRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmcgcyA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHMpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcbiopXG5cbmV4dGVybmFsIGZvcm1hdF9pbnQgOiBzdHJpbmcgLT4gaW50IC0+IHN0cmluZyA9IFwiY2FtbF9mb3JtYXRfaW50XCJcbmxldCB0b19zdHJpbmcgeCA9IGZvcm1hdF9pbnQgXCIlZFwiIHhcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgZm9yXG4gICBlZmZpY2llbmN5IHJlYXNvbnMuIFdoZW4geW91IG1vZGlmeSB0aGUgb25lIGluIHRoaXMgZmlsZSB5b3UgbmVlZCB0b1xuICAgbW9kaWZ5IGl0cyBkdXBsaWNhdGUgaW4gc3RyaW5nLm1sLlxuICAgVGhlc2UgZnVuY3Rpb25zIGhhdmUgYSBcImR1cGxpY2F0ZWRcIiBjb21tZW50IGFib3ZlIHRoZWlyIGRlZmluaXRpb24uXG4qKVxuXG5leHRlcm5hbCBsZW5ndGggOiBieXRlcyAtPiBpbnQgPSBcIiVieXRlc19sZW5ndGhcIlxuZXh0ZXJuYWwgc3RyaW5nX2xlbmd0aCA6IHN0cmluZyAtPiBpbnQgPSBcIiVzdHJpbmdfbGVuZ3RoXCJcbmV4dGVybmFsIGdldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBieXRlcyA9IFwiY2FtbF9jcmVhdGVfYnl0ZXNcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyID0gXCIlYnl0ZXNfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0IDogYnl0ZXMgLT4gaW50IC0+IGNoYXIgLT4gdW5pdCA9IFwiJWJ5dGVzX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2ZpbGwgOiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IGNoYXIgLT4gdW5pdFxuICAgICAgICAgICAgICAgICAgICAgPSBcImNhbWxfZmlsbF9ieXRlc1wiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB1bnNhZmVfdG9fc3RyaW5nIDogYnl0ZXMgLT4gc3RyaW5nID0gXCIlYnl0ZXNfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHVuc2FmZV9vZl9zdHJpbmcgOiBzdHJpbmcgLT4gYnl0ZXMgPSBcIiVieXRlc19vZl9zdHJpbmdcIlxuXG5leHRlcm5hbCB1bnNhZmVfYmxpdCA6IGJ5dGVzIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfYnl0ZXNcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdW5zYWZlX2JsaXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubGV0IG1ha2UgbiBjID1cbiAgbGV0IHMgPSBjcmVhdGUgbiBpblxuICB1bnNhZmVfZmlsbCBzIDAgbiBjO1xuICBzXG5cbmxldCBpbml0IG4gZiA9XG4gIGxldCBzID0gY3JlYXRlIG4gaW5cbiAgZm9yIGkgPSAwIHRvIG4gLSAxIGRvXG4gICAgdW5zYWZlX3NldCBzIGkgKGYgaSlcbiAgZG9uZTtcbiAgc1xuXG5sZXQgZW1wdHkgPSBjcmVhdGUgMFxuXG5sZXQgY29weSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCByID0gY3JlYXRlIGxlbiBpblxuICB1bnNhZmVfYmxpdCBzIDAgciAwIGxlbjtcbiAgclxuXG5sZXQgdG9fc3RyaW5nIGIgPSB1bnNhZmVfdG9fc3RyaW5nIChjb3B5IGIpXG5sZXQgb2Zfc3RyaW5nIHMgPSBjb3B5ICh1bnNhZmVfb2Zfc3RyaW5nIHMpXG5cbmxldCBzdWIgcyBvZnMgbGVuID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuc3ViIC8gQnl0ZXMuc3ViXCJcbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gICAgclxuICBlbmRcblxubGV0IHN1Yl9zdHJpbmcgYiBvZnMgbGVuID0gdW5zYWZlX3RvX3N0cmluZyAoc3ViIGIgb2ZzIGxlbilcblxuKCogYWRkaXRpb24gd2l0aCBhbiBvdmVyZmxvdyBjaGVjayAqKVxubGV0ICgrKykgYSBiID1cbiAgbGV0IGMgPSBhICsgYiBpblxuICBtYXRjaCBhIDwgMCwgYiA8IDAsIGMgPCAwIHdpdGhcbiAgfCB0cnVlICwgdHJ1ZSAsIGZhbHNlXG4gIHwgZmFsc2UsIGZhbHNlLCB0cnVlICAtPiBpbnZhbGlkX2FyZyBcIkJ5dGVzLmV4dGVuZFwiICgqIG92ZXJmbG93ICopXG4gIHwgXyAtPiBjXG5cbmxldCBleHRlbmQgcyBsZWZ0IHJpZ2h0ID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzICsrIGxlZnQgKysgcmlnaHQgaW5cbiAgbGV0IHIgPSBjcmVhdGUgbGVuIGluXG4gIGxldCAoc3Jjb2ZmLCBkc3RvZmYpID0gaWYgbGVmdCA8IDAgdGhlbiAtbGVmdCwgMCBlbHNlIDAsIGxlZnQgaW5cbiAgbGV0IGNweWxlbiA9IEludC5taW4gKGxlbmd0aCBzIC0gc3Jjb2ZmKSAobGVuIC0gZHN0b2ZmKSBpblxuICBpZiBjcHlsZW4gPiAwIHRoZW4gdW5zYWZlX2JsaXQgcyBzcmNvZmYgciBkc3RvZmYgY3B5bGVuO1xuICByXG5cbmxldCBmaWxsIHMgb2ZzIGxlbiBjID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IGxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuZmlsbCAvIEJ5dGVzLmZpbGxcIlxuICBlbHNlIHVuc2FmZV9maWxsIHMgb2ZzIGxlbiBjXG5cbmxldCBibGl0IHMxIG9mczEgczIgb2ZzMiBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IG9mczEgPCAwIHx8IG9mczEgPiBsZW5ndGggczEgLSBsZW5cbiAgICAgICAgICAgICB8fCBvZnMyIDwgMCB8fCBvZnMyID4gbGVuZ3RoIHMyIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCeXRlcy5ibGl0XCJcbiAgZWxzZSB1bnNhZmVfYmxpdCBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbmxldCBibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBvZnMxIDwgMCB8fCBvZnMxID4gc3RyaW5nX2xlbmd0aCBzMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggczIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5ibGl0IC8gQnl0ZXMuYmxpdF9zdHJpbmdcIlxuICBlbHNlIHVuc2FmZV9ibGl0X3N0cmluZyBzMSBvZnMxIHMyIG9mczIgbGVuXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaXRlciBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpdGVyaSBmIGEgPVxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgaSAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJCeXRlcy5jb25jYXRcIlxuXG5sZXQgcmVjIHN1bV9sZW5ndGhzIGFjYyBzZXBsZW4gPSBmdW5jdGlvblxuICB8IFtdIC0+IGFjY1xuICB8IGhkIDo6IFtdIC0+IGxlbmd0aCBoZCArIGFjY1xuICB8IGhkIDo6IHRsIC0+IHN1bV9sZW5ndGhzIChlbnN1cmVfZ2UgKGxlbmd0aCBoZCArIHNlcGxlbiArIGFjYykgYWNjKSBzZXBsZW4gdGxcblxubGV0IHJlYyB1bnNhZmVfYmxpdHMgZHN0IHBvcyBzZXAgc2VwbGVuID0gZnVuY3Rpb25cbiAgICBbXSAtPiBkc3RcbiAgfCBoZCA6OiBbXSAtPlxuICAgIHVuc2FmZV9ibGl0IGhkIDAgZHN0IHBvcyAobGVuZ3RoIGhkKTsgZHN0XG4gIHwgaGQgOjogdGwgLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7XG4gICAgdW5zYWZlX2JsaXQgc2VwIDAgZHN0IChwb3MgKyBsZW5ndGggaGQpIHNlcGxlbjtcbiAgICB1bnNhZmVfYmxpdHMgZHN0IChwb3MgKyBsZW5ndGggaGQgKyBzZXBsZW4pIHNlcCBzZXBsZW4gdGxcblxubGV0IGNvbmNhdCBzZXAgPSBmdW5jdGlvblxuICAgIFtdIC0+IGVtcHR5XG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpblxuICAgICAgICAgIHVuc2FmZV9ibGl0c1xuICAgICAgICAgICAgKGNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0IHMxIHMyID1cbiAgbGV0IGwxID0gbGVuZ3RoIHMxIGluXG4gIGxldCBsMiA9IGxlbmd0aCBzMiBpblxuICBsZXQgciA9IGNyZWF0ZSAobDEgKyBsMikgaW5cbiAgdW5zYWZlX2JsaXQgczEgMCByIDAgbDE7XG4gIHVuc2FmZV9ibGl0IHMyIDAgciBsMSBsMjtcbiAgclxuXG5cbmV4dGVybmFsIGNoYXJfY29kZTogY2hhciAtPiBpbnQgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBjaGFyX2NocjogaW50IC0+IGNoYXIgPSBcIiVpZGVudGl0eVwiXG5cbmxldCBpc19zcGFjZSA9IGZ1bmN0aW9uXG4gIHwgJyAnIHwgJ1xcMDEyJyB8ICdcXG4nIHwgJ1xccicgfCAnXFx0JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgdHJpbSBzID1cbiAgbGV0IGxlbiA9IGxlbmd0aCBzIGluXG4gIGxldCBpID0gcmVmIDAgaW5cbiAgd2hpbGUgIWkgPCBsZW4gJiYgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAhaSkgZG9cbiAgICBpbmNyIGlcbiAgZG9uZTtcbiAgbGV0IGogPSByZWYgKGxlbiAtIDEpIGluXG4gIHdoaWxlICFqID49ICFpICYmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgIWopIGRvXG4gICAgZGVjciBqXG4gIGRvbmU7XG4gIGlmICFqID49ICFpIHRoZW5cbiAgICBzdWIgcyAhaSAoIWogLSAhaSArIDEpXG4gIGVsc2VcbiAgICBlbXB0eVxuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IG4gPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgbiA6PSAhbiArXG4gICAgICAobWF0Y2ggdW5zYWZlX2dldCBzIGkgd2l0aFxuICAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcbicgfCAnXFx0JyB8ICdcXHInIHwgJ1xcYicgLT4gMlxuICAgICAgIHwgJyAnIC4uICd+JyAtPiAxXG4gICAgICAgfCBfIC0+IDQpXG4gIGRvbmU7XG4gIGlmICFuID0gbGVuZ3RoIHMgdGhlbiBjb3B5IHMgZWxzZSBiZWdpblxuICAgIGxldCBzJyA9IGNyZWF0ZSAhbiBpblxuICAgIG4gOj0gMDtcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIHMgLSAxIGRvXG4gICAgICBiZWdpbiBtYXRjaCB1bnNhZmVfZ2V0IHMgaSB3aXRoXG4gICAgICB8ICgnXFxcIicgfCAnXFxcXCcpIGFzIGMgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgJ1xcbicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICduJ1xuICAgICAgfCAnXFx0JyAtPlxuICAgICAgICAgIHVuc2FmZV9zZXQgcycgIW4gJ1xcXFwnOyBpbmNyIG47IHVuc2FmZV9zZXQgcycgIW4gJ3QnXG4gICAgICB8ICdcXHInIC0+XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAnXFxcXCc7IGluY3IgbjsgdW5zYWZlX3NldCBzJyAhbiAncidcbiAgICAgIHwgJ1xcYicgLT5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJzsgaW5jciBuOyB1bnNhZmVfc2V0IHMnICFuICdiJ1xuICAgICAgfCAoJyAnIC4uICd+JykgYXMgYyAtPiB1bnNhZmVfc2V0IHMnICFuIGNcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIGxldCBhID0gY2hhcl9jb2RlIGMgaW5cbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuICdcXFxcJztcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSAvIDEwMCkpO1xuICAgICAgICAgIGluY3IgbjtcbiAgICAgICAgICB1bnNhZmVfc2V0IHMnICFuIChjaGFyX2NociAoNDggKyAoYSAvIDEwKSBtb2QgMTApKTtcbiAgICAgICAgICBpbmNyIG47XG4gICAgICAgICAgdW5zYWZlX3NldCBzJyAhbiAoY2hhcl9jaHIgKDQ4ICsgYSBtb2QgMTApKTtcbiAgICAgIGVuZDtcbiAgICAgIGluY3IgblxuICAgIGRvbmU7XG4gICAgcydcbiAgZW5kXG5cbmxldCBtYXAgZiBzID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBsID0gMCB0aGVuIHMgZWxzZSBiZWdpblxuICAgIGxldCByID0gY3JlYXRlIGwgaW5cbiAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG8gdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgcyBpKSkgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwaSBmIHMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGwgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkbyB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IHMgaSkpIGRvbmU7XG4gICAgclxuICBlbmRcblxubGV0IGZvbGRfbGVmdCBmIHggYSA9XG4gIGxldCByID0gcmVmIHggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgIHIgOj0gZiAhciAodW5zYWZlX2dldCBhIGkpXG4gIGRvbmU7XG4gICFyXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBzIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBzID1cbiAgbGV0IG4gPSBsZW5ndGggcyBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IHMgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID0gbWFwIENoYXIudXBwZXJjYXNlX2FzY2lpIHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9IG1hcCBDaGFyLmxvd2VyY2FzZV9hc2NpaSBzXG5cbmxldCBhcHBseTEgZiBzID1cbiAgaWYgbGVuZ3RoIHMgPSAwIHRoZW4gcyBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjb3B5IHMgaW5cbiAgICB1bnNhZmVfc2V0IHIgMCAoZih1bnNhZmVfZ2V0IHMgMCkpO1xuICAgIHJcbiAgZW5kXG5cbmxldCBjYXBpdGFsaXplX2FzY2lpIHMgPSBhcHBseTEgQ2hhci51cHBlcmNhc2VfYXNjaWkgc1xubGV0IHVuY2FwaXRhbGl6ZV9hc2NpaSBzID0gYXBwbHkxIENoYXIubG93ZXJjYXNlX2FzY2lpIHNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBzdGFydHNfd2l0aCB+cHJlZml4IHMgPVxuICBsZXQgbGVuX3MgPSBsZW5ndGggc1xuICBhbmQgbGVuX3ByZSA9IGxlbmd0aCBwcmVmaXggaW5cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgaWYgaSA9IGxlbl9wcmUgdGhlbiB0cnVlXG4gICAgZWxzZSBpZiB1bnNhZmVfZ2V0IHMgaSA8PiB1bnNhZmVfZ2V0IHByZWZpeCBpIHRoZW4gZmFsc2VcbiAgICBlbHNlIGF1eCAoaSArIDEpXG4gIGluIGxlbl9zID49IGxlbl9wcmUgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBpbmRleCBzIGMgPSBpbmRleF9yZWMgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyBpbmRleF9yZWNfb3B0IHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIGluZGV4X3JlY19vcHQgcyBsaW0gKGkgKyAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IGluZGV4X2Zyb20gcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW4gaW52YWxpZF9hcmcgXCJTdHJpbmcuaW5kZXhfZnJvbSAvIEJ5dGVzLmluZGV4X2Zyb21cIiBlbHNlXG4gIGluZGV4X3JlYyBzIGwgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjIHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBpIGVsc2UgcmluZGV4X3JlYyBzIChpIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleCBzIGMgPSByaW5kZXhfcmVjIHMgKGxlbmd0aCBzIC0gMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxubGV0IHJlYyByaW5kZXhfcmVjX29wdCBzIGkgYyA9XG4gIGlmIGkgPCAwIHRoZW4gTm9uZSBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIFNvbWUgaSBlbHNlIHJpbmRleF9yZWNfb3B0IHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmluZGV4X29wdCBzIGMgPSByaW5kZXhfcmVjX29wdCBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxuKCogZHVwbGljYXRlZCBpbiBzdHJpbmcubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgcmNvbnRhaW5zX2Zyb20gcyBpIGMgPVxuICBpZiBpIDwgMCB8fCBpID49IGxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5yY29udGFpbnNfZnJvbSAvIEJ5dGVzLnJjb250YWluc19mcm9tXCJcbiAgZWxzZVxuICAgIHRyeSBpZ25vcmUgKHJpbmRleF9yZWMgcyBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cblxudHlwZSB0ID0gYnl0ZXNcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbCA9IFwiY2FtbF9ieXRlc19lcXVhbFwiIFtAQG5vYWxsb2NdXG5cbigqIGR1cGxpY2F0ZWQgaW4gc3RyaW5nLm1sICopXG5sZXQgc3BsaXRfb25fY2hhciBzZXAgcyA9XG4gIGxldCByID0gcmVmIFtdIGluXG4gIGxldCBqID0gcmVmIChsZW5ndGggcykgaW5cbiAgZm9yIGkgPSBsZW5ndGggcyAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiB1bnNhZmVfZ2V0IHMgaSA9IHNlcCB0aGVuIGJlZ2luXG4gICAgICByIDo9IHN1YiBzIChpICsgMSkgKCFqIC0gaSAtIDEpIDo6ICFyO1xuICAgICAgaiA6PSBpXG4gICAgZW5kXG4gIGRvbmU7XG4gIHN1YiBzIDAgIWogOjogIXJcblxuKCogRGVwcmVjYXRlZCBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgdmlhIG90aGVyIGRlcHJlY2F0ZWQgZnVuY3Rpb25zICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5sZXQgdXBwZXJjYXNlIHMgPSBtYXAgQ2hhci51cHBlcmNhc2Ugc1xubGV0IGxvd2VyY2FzZSBzID0gbWFwIENoYXIubG93ZXJjYXNlIHNcblxubGV0IGNhcGl0YWxpemUgcyA9IGFwcGx5MSBDaGFyLnVwcGVyY2FzZSBzXG5sZXQgdW5jYXBpdGFsaXplIHMgPSBhcHBseTEgQ2hhci5sb3dlcmNhc2Ugc1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpID0gbGVuZ3RoIHMgdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBnZXQgcyBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBzID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA9IGxlbmd0aCBzIHRoZW4gU2VxLk5pbFxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gZ2V0IHMgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGJ1ZiA9IHJlZiAobWFrZSAyNTYgJ1xcMDAwJykgaW5cbiAgbGV0IHJlc2l6ZSAoKSA9XG4gICAgKCogcmVzaXplICopXG4gICAgbGV0IG5ld19sZW4gPSBJbnQubWluICgyICogbGVuZ3RoICFidWYpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgIGlmIGxlbmd0aCAhYnVmID0gbmV3X2xlbiB0aGVuIGZhaWx3aXRoIFwiQnl0ZXMub2Zfc2VxOiBjYW5ub3QgZ3JvdyBieXRlc1wiO1xuICAgIGxldCBuZXdfYnVmID0gbWFrZSBuZXdfbGVuICdcXDAwMCcgaW5cbiAgICBibGl0ICFidWYgMCBuZXdfYnVmIDAgIW47XG4gICAgYnVmIDo9IG5ld19idWZcbiAgaW5cbiAgU2VxLml0ZXJcbiAgICAoZnVuIGMgLT5cbiAgICAgICBpZiAhbiA9IGxlbmd0aCAhYnVmIHRoZW4gcmVzaXplKCk7XG4gICAgICAgc2V0ICFidWYgIW4gYztcbiAgICAgICBpbmNyIG4pXG4gICAgaTtcbiAgc3ViICFidWYgMCAhblxuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG4oKiBUaGUgZ2V0XyBmdW5jdGlvbnMgYXJlIGFsbCBkdXBsaWNhdGVkIGluIHN0cmluZy5tbCAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBieXRlcyAtPiBpbnQgLT4gaW50ID0gXCIlYnl0ZXNfc2FmZV9nZXRcIlxuZXh0ZXJuYWwgZ2V0X3VpbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX2J5dGVzX2dldDE2XCJcbmV4dGVybmFsIGdldF9pbnQzMl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiA9IFwiJWNhbWxfYnl0ZXNfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogYnl0ZXMgLT4gaW50IC0+IGludDY0ID0gXCIlY2FtbF9ieXRlc19nZXQ2NFwiXG5leHRlcm5hbCBzZXRfaW50OCA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWJ5dGVzX3NhZmVfc2V0XCJcbmV4dGVybmFsIHNldF9pbnQxNl9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiJWNhbWxfYnl0ZXNfc2V0MTZcIlxuZXh0ZXJuYWwgc2V0X2ludDMyX25lIDogYnl0ZXMgLT4gaW50IC0+IGludDMyIC0+IHVuaXQgPSBcIiVjYW1sX2J5dGVzX3NldDMyXCJcbmV4dGVybmFsIHNldF9pbnQ2NF9uZSA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NFwiXG5leHRlcm5hbCBzd2FwMTYgOiBpbnQgLT4gaW50ID0gXCIlYnN3YXAxNlwiXG5leHRlcm5hbCBzd2FwMzIgOiBpbnQzMiAtPiBpbnQzMiA9IFwiJWJzd2FwX2ludDMyXCJcbmV4dGVybmFsIHN3YXA2NCA6IGludDY0IC0+IGludDY0ID0gXCIlYnN3YXBfaW50NjRcIlxuXG5sZXQgZ2V0X2ludDggYiBpID1cbiAgKChnZXRfdWludDggYiBpKSBsc2wgKFN5cy5pbnRfc2l6ZSAtIDgpKSBhc3IgKFN5cy5pbnRfc2l6ZSAtIDgpXG5cbmxldCBnZXRfdWludDE2X2xlIGIgaSA9XG4gIGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDE2IChnZXRfdWludDE2X25lIGIgaSlcbiAgZWxzZSBnZXRfdWludDE2X25lIGIgaVxuXG5sZXQgZ2V0X3VpbnQxNl9iZSBiIGkgPVxuICBpZiBub3QgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgKGdldF91aW50MTZfbmUgYiBpKVxuICBlbHNlIGdldF91aW50MTZfbmUgYiBpXG5cbmxldCBnZXRfaW50MTZfbmUgYiBpID1cbiAgKChnZXRfdWludDE2X25lIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfbGUgYiBpID1cbiAgKChnZXRfdWludDE2X2xlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MTZfYmUgYiBpID1cbiAgKChnZXRfdWludDE2X2JlIGIgaSkgbHNsIChTeXMuaW50X3NpemUgLSAxNikpIGFzciAoU3lzLmludF9zaXplIC0gMTYpXG5cbmxldCBnZXRfaW50MzJfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMzIgKGdldF9pbnQzMl9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDMyX25lIGIgaVxuXG5sZXQgZ2V0X2ludDMyX2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiAoZ2V0X2ludDMyX25lIGIgaSlcbiAgZWxzZSBnZXRfaW50MzJfbmUgYiBpXG5cbmxldCBnZXRfaW50NjRfbGUgYiBpID1cbiAgaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwNjQgKGdldF9pbnQ2NF9uZSBiIGkpXG4gIGVsc2UgZ2V0X2ludDY0X25lIGIgaVxuXG5sZXQgZ2V0X2ludDY0X2JlIGIgaSA9XG4gIGlmIG5vdCBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXA2NCAoZ2V0X2ludDY0X25lIGIgaSlcbiAgZWxzZSBnZXRfaW50NjRfbmUgYiBpXG5cbmxldCBzZXRfaW50MTZfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQxNl9uZSBiIGkgKHN3YXAxNiB4KVxuICBlbHNlIHNldF9pbnQxNl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDE2X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDE2X25lIGIgaSAoc3dhcDE2IHgpXG4gIGVsc2Ugc2V0X2ludDE2X25lIGIgaSB4XG5cbmxldCBzZXRfaW50MzJfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQzMl9uZSBiIGkgKHN3YXAzMiB4KVxuICBlbHNlIHNldF9pbnQzMl9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDMyX2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDMyX25lIGIgaSAoc3dhcDMyIHgpXG4gIGVsc2Ugc2V0X2ludDMyX25lIGIgaSB4XG5cbmxldCBzZXRfaW50NjRfbGUgYiBpIHggPVxuICBpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHNldF9pbnQ2NF9uZSBiIGkgKHN3YXA2NCB4KVxuICBlbHNlIHNldF9pbnQ2NF9uZSBiIGkgeFxuXG5sZXQgc2V0X2ludDY0X2JlIGIgaSB4ID1cbiAgaWYgbm90IFN5cy5iaWdfZW5kaWFuIHRoZW4gc2V0X2ludDY0X25lIGIgaSAoc3dhcDY0IHgpXG4gIGVsc2Ugc2V0X2ludDY0X25lIGIgaSB4XG5cbmxldCBzZXRfdWludDggPSBzZXRfaW50OFxubGV0IHNldF91aW50MTZfbmUgPSBzZXRfaW50MTZfbmVcbmxldCBzZXRfdWludDE2X2JlID0gc2V0X2ludDE2X2JlXG5sZXQgc2V0X3VpbnQxNl9sZSA9IHNldF9pbnQxNl9sZVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgR2FsbGl1bSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBTdHJpbmcgb3BlcmF0aW9ucywgYmFzZWQgb24gYnl0ZSBzZXF1ZW5jZSBvcGVyYXRpb25zICopXG5cbigqIFdBUk5JTkc6IFNvbWUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBhcmUgZHVwbGljYXRlZCBpbiBieXRlcy5tbCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucy4gV2hlbiB5b3UgbW9kaWZ5IHRoZSBvbmUgaW4gdGhpcyBmaWxlIHlvdSBuZWVkIHRvXG4gICBtb2RpZnkgaXRzIGR1cGxpY2F0ZSBpbiBieXRlcy5tbC5cbiAgIFRoZXNlIGZ1bmN0aW9ucyBoYXZlIGEgXCJkdXBsaWNhdGVkXCIgY29tbWVudCBhYm92ZSB0aGVpciBkZWZpbml0aW9uLlxuKilcblxuZXh0ZXJuYWwgbGVuZ3RoIDogc3RyaW5nIC0+IGludCA9IFwiJXN0cmluZ19sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0IDogc3RyaW5nIC0+IGludCAtPiBjaGFyID0gXCIlc3RyaW5nX3NhZmVfZ2V0XCJcbmV4dGVybmFsIHNldCA6IGJ5dGVzIC0+IGludCAtPiBjaGFyIC0+IHVuaXQgPSBcIiVzdHJpbmdfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IGJ5dGVzID0gXCJjYW1sX2NyZWF0ZV9zdHJpbmdcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldCA6IHN0cmluZyAtPiBpbnQgLT4gY2hhciA9IFwiJXN0cmluZ191bnNhZmVfZ2V0XCJcbmV4dGVybmFsIHVuc2FmZV9zZXQgOiBieXRlcyAtPiBpbnQgLT4gY2hhciAtPiB1bml0ID0gXCIlc3RyaW5nX3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2JsaXQgOiBzdHJpbmcgLT4gaW50IC0+ICBieXRlcyAtPiBpbnQgLT4gaW50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2JsaXRfc3RyaW5nXCIgW0BAbm9hbGxvY11cbmV4dGVybmFsIHVuc2FmZV9maWxsIDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiBjaGFyIC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX2ZpbGxfc3RyaW5nXCIgW0BAbm9hbGxvY11cblxubW9kdWxlIEIgPSBCeXRlc1xuXG5sZXQgYnRzID0gQi51bnNhZmVfdG9fc3RyaW5nXG5sZXQgYm9zID0gQi51bnNhZmVfb2Zfc3RyaW5nXG5cbmxldCBtYWtlIG4gYyA9XG4gIEIubWFrZSBuIGMgfD4gYnRzXG5sZXQgaW5pdCBuIGYgPVxuICBCLmluaXQgbiBmIHw+IGJ0c1xubGV0IGVtcHR5ID0gXCJcIlxubGV0IGNvcHkgcyA9XG4gIEIuY29weSAoYm9zIHMpIHw+IGJ0c1xubGV0IG9mX2J5dGVzID0gQi50b19zdHJpbmdcbmxldCB0b19ieXRlcyA9IEIub2Zfc3RyaW5nXG5sZXQgc3ViIHMgb2ZzIGxlbiA9XG4gIEIuc3ViIChib3Mgcykgb2ZzIGxlbiB8PiBidHNcbmxldCBmaWxsID1cbiAgQi5maWxsXG5sZXQgYmxpdCA9XG4gIEIuYmxpdF9zdHJpbmdcblxubGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29uY2F0XCJcblxubGV0IHJlYyBzdW1fbGVuZ3RocyBhY2Mgc2VwbGVuID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2NcbiAgfCBoZCA6OiBbXSAtPiBsZW5ndGggaGQgKyBhY2NcbiAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBzZXBsZW4gKyBhY2MpIGFjYykgc2VwbGVuIHRsXG5cbmxldCByZWMgdW5zYWZlX2JsaXRzIGRzdCBwb3Mgc2VwIHNlcGxlbiA9IGZ1bmN0aW9uXG4gICAgW10gLT4gZHN0XG4gIHwgaGQgOjogW10gLT5cbiAgICB1bnNhZmVfYmxpdCBoZCAwIGRzdCBwb3MgKGxlbmd0aCBoZCk7IGRzdFxuICB8IGhkIDo6IHRsIC0+XG4gICAgdW5zYWZlX2JsaXQgaGQgMCBkc3QgcG9zIChsZW5ndGggaGQpO1xuICAgIHVuc2FmZV9ibGl0IHNlcCAwIGRzdCAocG9zICsgbGVuZ3RoIGhkKSBzZXBsZW47XG4gICAgdW5zYWZlX2JsaXRzIGRzdCAocG9zICsgbGVuZ3RoIGhkICsgc2VwbGVuKSBzZXAgc2VwbGVuIHRsXG5cbmxldCBjb25jYXQgc2VwID0gZnVuY3Rpb25cbiAgICBbXSAtPiBcIlwiXG4gIHwgbCAtPiBsZXQgc2VwbGVuID0gbGVuZ3RoIHNlcCBpbiBidHMgQEBcbiAgICAgICAgICB1bnNhZmVfYmxpdHNcbiAgICAgICAgICAgIChCLmNyZWF0ZSAoc3VtX2xlbmd0aHMgMCBzZXBsZW4gbCkpXG4gICAgICAgICAgICAwIHNlcCBzZXBsZW4gbFxuXG5sZXQgY2F0ID0gKCBeIClcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGl0ZXIgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmICh1bnNhZmVfZ2V0IHMgaSkgZG9uZVxuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaXRlcmkgZiBzID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBzIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgcyBpKSBkb25lXG5cbmxldCBtYXAgZiBzID1cbiAgQi5tYXAgZiAoYm9zIHMpIHw+IGJ0c1xubGV0IG1hcGkgZiBzID1cbiAgQi5tYXBpIGYgKGJvcyBzKSB8PiBidHNcbmxldCBmb2xkX3JpZ2h0IGYgeCBhID1cbiAgQi5mb2xkX3JpZ2h0IGYgKGJvcyB4KSBhXG5sZXQgZm9sZF9sZWZ0IGYgYSB4ID1cbiAgQi5mb2xkX2xlZnQgZiBhIChib3MgeClcbmxldCBleGlzdHMgZiBzID1cbiAgQi5leGlzdHMgZiAoYm9zIHMpXG5sZXQgZm9yX2FsbCBmIHMgPVxuICBCLmZvcl9hbGwgZiAoYm9zIHMpXG5cbigqIEJld2FyZTogd2UgY2Fubm90IHVzZSBCLnRyaW0gb3IgQi5lc2NhcGUgYmVjYXVzZSB0aGV5IGFsd2F5cyBtYWtlIGFcbiAgIGNvcHksIGJ1dCBTdHJpbmcubWxpIHNwZWxscyBvdXQgc29tZSBjYXNlcyB3aGVyZSB3ZSBhcmUgbm90IGFsbG93ZWRcbiAgIHRvIG1ha2UgYSBjb3B5LiAqKVxuXG5sZXQgaXNfc3BhY2UgPSBmdW5jdGlvblxuICB8ICcgJyB8ICdcXDAxMicgfCAnXFxuJyB8ICdcXHInIHwgJ1xcdCcgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IHRyaW0gcyA9XG4gIGlmIHMgPSBcIlwiIHRoZW4gc1xuICBlbHNlIGlmIGlzX3NwYWNlICh1bnNhZmVfZ2V0IHMgMCkgfHwgaXNfc3BhY2UgKHVuc2FmZV9nZXQgcyAobGVuZ3RoIHMgLSAxKSlcbiAgICB0aGVuIGJ0cyAoQi50cmltIChib3MgcykpXG4gIGVsc2Ugc1xuXG5sZXQgZXNjYXBlZCBzID1cbiAgbGV0IHJlYyBlc2NhcGVfaWZfbmVlZGVkIHMgbiBpID1cbiAgICBpZiBpID49IG4gdGhlbiBzIGVsc2VcbiAgICAgIG1hdGNoIHVuc2FmZV9nZXQgcyBpIHdpdGhcbiAgICAgIHwgJ1xcXCInIHwgJ1xcXFwnIHwgJ1xcMDAwJy4uJ1xcMDMxJyB8ICdcXDEyNycuLiAnXFwyNTUnIC0+XG4gICAgICAgICAgYnRzIChCLmVzY2FwZWQgKGJvcyBzKSlcbiAgICAgIHwgXyAtPiBlc2NhcGVfaWZfbmVlZGVkIHMgbiAoaSsxKVxuICBpblxuICBlc2NhcGVfaWZfbmVlZGVkIHMgKGxlbmd0aCBzKSAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjIHMgbGltIGkgYyA9XG4gIGlmIGkgPj0gbGltIHRoZW4gcmFpc2UgTm90X2ZvdW5kIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gaSBlbHNlIGluZGV4X3JlYyBzIGxpbSAoaSArIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IGluZGV4IHMgYyA9IGluZGV4X3JlYyBzIChsZW5ndGggcykgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByZWMgaW5kZXhfcmVjX29wdCBzIGxpbSBpIGMgPVxuICBpZiBpID49IGxpbSB0aGVuIE5vbmUgZWxzZVxuICBpZiB1bnNhZmVfZ2V0IHMgaSA9IGMgdGhlbiBTb21lIGkgZWxzZSBpbmRleF9yZWNfb3B0IHMgbGltIChpICsgMSkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfb3B0IHMgYyA9IGluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMpIDAgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbSBzIGkgYyA9XG4gIGxldCBsID0gbGVuZ3RoIHMgaW5cbiAgaWYgaSA8IDAgfHwgaSA+IGwgdGhlbiBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tIC8gQnl0ZXMuaW5kZXhfZnJvbVwiIGVsc2VcbiAgICBpbmRleF9yZWMgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBsZXQgbCA9IGxlbmd0aCBzIGluXG4gIGlmIGkgPCAwIHx8IGkgPiBsIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIlN0cmluZy5pbmRleF9mcm9tX29wdCAvIEJ5dGVzLmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIGluZGV4X3JlY19vcHQgcyBsIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWMgcyBpIGMgPVxuICBpZiBpIDwgMCB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIGlmIHVuc2FmZV9nZXQgcyBpID0gYyB0aGVuIGkgZWxzZSByaW5kZXhfcmVjIHMgKGkgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXggcyBjID0gcmluZGV4X3JlYyBzIChsZW5ndGggcyAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9mcm9tIHMgaSBjID1cbiAgaWYgaSA8IC0xIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJpbmRleF9mcm9tIC8gQnl0ZXMucmluZGV4X2Zyb21cIlxuICBlbHNlXG4gICAgcmluZGV4X3JlYyBzIGkgY1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgcmVjIHJpbmRleF9yZWNfb3B0IHMgaSBjID1cbiAgaWYgaSA8IDAgdGhlbiBOb25lIGVsc2VcbiAgaWYgdW5zYWZlX2dldCBzIGkgPSBjIHRoZW4gU29tZSBpIGVsc2UgcmluZGV4X3JlY19vcHQgcyAoaSAtIDEpIGNcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHJpbmRleF9vcHQgcyBjID0gcmluZGV4X3JlY19vcHQgcyAobGVuZ3RoIHMgLSAxKSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByaW5kZXhfZnJvbV9vcHQgcyBpIGMgPVxuICBpZiBpIDwgLTEgfHwgaSA+PSBsZW5ndGggcyB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcucmluZGV4X2Zyb21fb3B0IC8gQnl0ZXMucmluZGV4X2Zyb21fb3B0XCJcbiAgZWxzZVxuICAgIHJpbmRleF9yZWNfb3B0IHMgaSBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWluc19mcm9tIHMgaSBjID1cbiAgbGV0IGwgPSBsZW5ndGggcyBpblxuICBpZiBpIDwgMCB8fCBpID4gbCB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJTdHJpbmcuY29udGFpbnNfZnJvbSAvIEJ5dGVzLmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAoaW5kZXhfcmVjIHMgbCBpIGMpOyB0cnVlIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBjb250YWlucyBzIGMgPSBjb250YWluc19mcm9tIHMgMCBjXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCByY29udGFpbnNfZnJvbSBzIGkgYyA9XG4gIGlmIGkgPCAwIHx8IGkgPj0gbGVuZ3RoIHMgdGhlblxuICAgIGludmFsaWRfYXJnIFwiU3RyaW5nLnJjb250YWluc19mcm9tIC8gQnl0ZXMucmNvbnRhaW5zX2Zyb21cIlxuICBlbHNlXG4gICAgdHJ5IGlnbm9yZSAocmluZGV4X3JlYyBzIGkgYyk7IHRydWUgd2l0aCBOb3RfZm91bmQgLT4gZmFsc2VcblxubGV0IHVwcGVyY2FzZV9hc2NpaSBzID1cbiAgQi51cHBlcmNhc2VfYXNjaWkgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2VfYXNjaWkgcyA9XG4gIEIubG93ZXJjYXNlX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZV9hc2NpaSBzID1cbiAgQi5jYXBpdGFsaXplX2FzY2lpIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplX2FzY2lpIHMgPVxuICBCLnVuY2FwaXRhbGl6ZV9hc2NpaSAoYm9zIHMpIHw+IGJ0c1xuXG4oKiBkdXBsaWNhdGVkIGluIGJ5dGVzLm1sICopXG5sZXQgc3RhcnRzX3dpdGggfnByZWZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9wcmUgPSBsZW5ndGggcHJlZml4IGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fcHJlIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIGkgPD4gdW5zYWZlX2dldCBwcmVmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBsZW5fcyA+PSBsZW5fcHJlICYmIGF1eCAwXG5cbigqIGR1cGxpY2F0ZWQgaW4gYnl0ZXMubWwgKilcbmxldCBlbmRzX3dpdGggfnN1ZmZpeCBzID1cbiAgbGV0IGxlbl9zID0gbGVuZ3RoIHNcbiAgYW5kIGxlbl9zdWYgPSBsZW5ndGggc3VmZml4IGluXG4gIGxldCBkaWZmID0gbGVuX3MgLSBsZW5fc3VmIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPSBsZW5fc3VmIHRoZW4gdHJ1ZVxuICAgIGVsc2UgaWYgdW5zYWZlX2dldCBzIChkaWZmICsgaSkgPD4gdW5zYWZlX2dldCBzdWZmaXggaSB0aGVuIGZhbHNlXG4gICAgZWxzZSBhdXggKGkgKyAxKVxuICBpbiBkaWZmID49IDAgJiYgYXV4IDBcblxuKCogZHVwbGljYXRlZCBpbiBieXRlcy5tbCAqKVxubGV0IHNwbGl0X29uX2NoYXIgc2VwIHMgPVxuICBsZXQgciA9IHJlZiBbXSBpblxuICBsZXQgaiA9IHJlZiAobGVuZ3RoIHMpIGluXG4gIGZvciBpID0gbGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgaWYgdW5zYWZlX2dldCBzIGkgPSBzZXAgdGhlbiBiZWdpblxuICAgICAgciA6PSBzdWIgcyAoaSArIDEpICghaiAtIGkgLSAxKSA6OiAhcjtcbiAgICAgIGogOj0gaVxuICAgIGVuZFxuICBkb25lO1xuICBzdWIgcyAwICFqIDo6ICFyXG5cbigqIERlcHJlY2F0ZWQgZnVuY3Rpb25zIGltcGxlbWVudGVkIHZpYSBvdGhlciBkZXByZWNhdGVkIGZ1bmN0aW9ucyAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubGV0IHVwcGVyY2FzZSBzID1cbiAgQi51cHBlcmNhc2UgKGJvcyBzKSB8PiBidHNcbmxldCBsb3dlcmNhc2UgcyA9XG4gIEIubG93ZXJjYXNlIChib3MgcykgfD4gYnRzXG5sZXQgY2FwaXRhbGl6ZSBzID1cbiAgQi5jYXBpdGFsaXplIChib3MgcykgfD4gYnRzXG5sZXQgdW5jYXBpdGFsaXplIHMgPVxuICBCLnVuY2FwaXRhbGl6ZSAoYm9zIHMpIHw+IGJ0c1xuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxuZXh0ZXJuYWwgZXF1YWwgOiBzdHJpbmcgLT4gc3RyaW5nIC0+IGJvb2wgPSBcImNhbWxfc3RyaW5nX2VxdWFsXCIgW0BAbm9hbGxvY11cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBzID0gYm9zIHMgfD4gQi50b19zZXFcblxubGV0IHRvX3NlcWkgcyA9IGJvcyBzIHw+IEIudG9fc2VxaVxuXG5sZXQgb2Zfc2VxIGcgPSBCLm9mX3NlcSBnIHw+IGJ0c1xuXG4oKiogezYgQmluYXJ5IGVuY29kaW5nL2RlY29kaW5nIG9mIGludGVnZXJzfSAqKVxuXG5leHRlcm5hbCBnZXRfdWludDggOiBzdHJpbmcgLT4gaW50IC0+IGludCA9IFwiJXN0cmluZ19zYWZlX2dldFwiXG5leHRlcm5hbCBnZXRfdWludDE2X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQgPSBcIiVjYW1sX3N0cmluZ19nZXQxNlwiXG5leHRlcm5hbCBnZXRfaW50MzJfbmUgOiBzdHJpbmcgLT4gaW50IC0+IGludDMyID0gXCIlY2FtbF9zdHJpbmdfZ2V0MzJcIlxuZXh0ZXJuYWwgZ2V0X2ludDY0X25lIDogc3RyaW5nIC0+IGludCAtPiBpbnQ2NCA9IFwiJWNhbWxfc3RyaW5nX2dldDY0XCJcblxubGV0IGdldF9pbnQ4IHMgaSA9IEIuZ2V0X2ludDggKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9sZSBzIGkgPSBCLmdldF91aW50MTZfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X3VpbnQxNl9iZSBzIGkgPSBCLmdldF91aW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDE2X25lIHMgaSA9IEIuZ2V0X2ludDE2X25lIChib3MgcykgaVxubGV0IGdldF9pbnQxNl9sZSBzIGkgPSBCLmdldF9pbnQxNl9sZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50MTZfYmUgcyBpID0gQi5nZXRfaW50MTZfYmUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDMyX2xlIHMgaSA9IEIuZ2V0X2ludDMyX2xlIChib3MgcykgaVxubGV0IGdldF9pbnQzMl9iZSBzIGkgPSBCLmdldF9pbnQzMl9iZSAoYm9zIHMpIGlcbmxldCBnZXRfaW50NjRfbGUgcyBpID0gQi5nZXRfaW50NjRfbGUgKGJvcyBzKSBpXG5sZXQgZ2V0X2ludDY0X2JlIHMgaSA9IEIuZ2V0X2ludDY0X2JlIChib3MgcykgaVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB1bml0ID0gKClcblxubGV0IGVxdWFsICgpICgpID0gdHJ1ZVxubGV0IGNvbXBhcmUgKCkgKCkgPSAwXG5sZXQgdG9fc3RyaW5nICgpID0gXCIoKVwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZXh0ZXJuX2ZsYWdzID1cbiAgICBOb19zaGFyaW5nXG4gIHwgQ2xvc3VyZXNcbiAgfCBDb21wYXRfMzJcbigqIG5vdGU6IHRoaXMgdHlwZSBkZWZpbml0aW9uIGlzIHVzZWQgaW4gJ3J1bnRpbWUvZGVidWdnZXIuYycgKilcblxuZXh0ZXJuYWwgdG9fY2hhbm5lbDogb3V0X2NoYW5uZWwgLT4gJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gdW5pdFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZVwiXG5leHRlcm5hbCB0b19ieXRlczogJ2EgLT4gZXh0ZXJuX2ZsYWdzIGxpc3QgLT4gYnl0ZXNcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fYnl0ZXNcIlxuZXh0ZXJuYWwgdG9fc3RyaW5nOiAnYSAtPiBleHRlcm5fZmxhZ3MgbGlzdCAtPiBzdHJpbmdcbiAgICA9IFwiY2FtbF9vdXRwdXRfdmFsdWVfdG9fc3RyaW5nXCJcbmV4dGVybmFsIHRvX2J1ZmZlcl91bnNhZmU6XG4gICAgICBieXRlcyAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IGV4dGVybl9mbGFncyBsaXN0IC0+IGludFxuICAgID0gXCJjYW1sX291dHB1dF92YWx1ZV90b19idWZmZXJcIlxuXG5sZXQgdG9fYnVmZmVyIGJ1ZmYgb2ZzIGxlbiB2IGZsYWdzID1cbiAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLnRvX2J1ZmZlcjogc3Vic3RyaW5nIG91dCBvZiBib3VuZHNcIlxuICBlbHNlIHRvX2J1ZmZlcl91bnNhZmUgYnVmZiBvZnMgbGVuIHYgZmxhZ3NcblxuKCogVGhlIGZ1bmN0aW9ucyBiZWxvdyB1c2UgYnl0ZSBzZXF1ZW5jZXMgYXMgaW5wdXQsIG5ldmVyIHVzaW5nIGFueVxuICAgbXV0YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRvIHVzZSBub24tbXV0YXRlZCBbYnl0ZXNdIHJhdGhlciB0aGFuXG4gICBbc3RyaW5nXSwgYmVjYXVzZSB3ZSByZWFsbHkgd29yayB3aXRoIHNlcXVlbmNlcyBvZiBieXRlcywgbm90XG4gICBhIHRleHQgcmVwcmVzZW50YXRpb24uXG4qKVxuXG5leHRlcm5hbCBmcm9tX2NoYW5uZWw6IGluX2NoYW5uZWwgLT4gJ2EgPSBcImNhbWxfaW5wdXRfdmFsdWVcIlxuZXh0ZXJuYWwgZnJvbV9ieXRlc191bnNhZmU6IGJ5dGVzIC0+IGludCAtPiAnYSA9IFwiY2FtbF9pbnB1dF92YWx1ZV9mcm9tX2J5dGVzXCJcbmV4dGVybmFsIGRhdGFfc2l6ZV91bnNhZmU6IGJ5dGVzIC0+IGludCAtPiBpbnQgPSBcImNhbWxfbWFyc2hhbF9kYXRhX3NpemVcIlxuXG5sZXQgaGVhZGVyX3NpemUgPSAyMFxubGV0IGRhdGFfc2l6ZSBidWZmIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID4gQnl0ZXMubGVuZ3RoIGJ1ZmYgLSBoZWFkZXJfc2l6ZVxuICB0aGVuIGludmFsaWRfYXJnIFwiTWFyc2hhbC5kYXRhX3NpemVcIlxuICBlbHNlIGRhdGFfc2l6ZV91bnNhZmUgYnVmZiBvZnNcbmxldCB0b3RhbF9zaXplIGJ1ZmYgb2ZzID0gaGVhZGVyX3NpemUgKyBkYXRhX3NpemUgYnVmZiBvZnNcblxubGV0IGZyb21fYnl0ZXMgYnVmZiBvZnMgPVxuICBpZiBvZnMgPCAwIHx8IG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gaGVhZGVyX3NpemVcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIk1hcnNoYWwuZnJvbV9ieXRlc1wiXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbGVuID0gZGF0YV9zaXplX3Vuc2FmZSBidWZmIG9mcyBpblxuICAgIGlmIG9mcyA+IEJ5dGVzLmxlbmd0aCBidWZmIC0gKGhlYWRlcl9zaXplICsgbGVuKVxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJNYXJzaGFsLmZyb21fYnl0ZXNcIlxuICAgIGVsc2UgZnJvbV9ieXRlc191bnNhZmUgYnVmZiBvZnNcbiAgZW5kXG5cbmxldCBmcm9tX3N0cmluZyBidWZmIG9mcyA9XG4gICgqIEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgaXMgc2FmZSBoZXJlLCBhcyB0aGUgcHJvZHVjZWQgYnl0ZVxuICAgICBzZXF1ZW5jZSBpcyBuZXZlciBtdXRhdGVkICopXG4gIGZyb21fYnl0ZXMgKEJ5dGVzLnVuc2FmZV9vZl9zdHJpbmcgYnVmZikgb2ZzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE9wZXJhdGlvbnMgb24gaW50ZXJuYWwgcmVwcmVzZW50YXRpb25zIG9mIHZhbHVlcyAqKVxuXG50eXBlIHRcblxudHlwZSByYXdfZGF0YSA9IG5hdGl2ZWludFxuXG5leHRlcm5hbCByZXByIDogJ2EgLT4gdCA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIG9iaiA6IHQgLT4gJ2EgPSBcIiVpZGVudGl0eVwiXG5leHRlcm5hbCBtYWdpYyA6ICdhIC0+ICdiID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgaXNfaW50IDogdCAtPiBib29sID0gXCIlb2JqX2lzX2ludFwiXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBpc19ibG9jayBhID0gbm90IChpc19pbnQgYSlcbmV4dGVybmFsIHRhZyA6IHQgLT4gaW50ID0gXCJjYW1sX29ial90YWdcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2V0X3RhZyA6IHQgLT4gaW50IC0+IHVuaXQgPSBcImNhbWxfb2JqX3NldF90YWdcIlxuZXh0ZXJuYWwgc2l6ZSA6IHQgLT4gaW50ID0gXCIlb2JqX3NpemVcIlxuZXh0ZXJuYWwgcmVhY2hhYmxlX3dvcmRzIDogdCAtPiBpbnQgPSBcImNhbWxfb2JqX3JlYWNoYWJsZV93b3Jkc1wiXG5leHRlcm5hbCBmaWVsZCA6IHQgLT4gaW50IC0+IHQgPSBcIiVvYmpfZmllbGRcIlxuZXh0ZXJuYWwgc2V0X2ZpZWxkIDogdCAtPiBpbnQgLT4gdCAtPiB1bml0ID0gXCIlb2JqX3NldF9maWVsZFwiXG5leHRlcm5hbCBmbG9hdGFycmF5X2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfZ2V0XCJcbmV4dGVybmFsIGZsb2F0YXJyYXlfc2V0IDpcbiAgICBmbG9hdGFycmF5IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCJjYW1sX2Zsb2F0YXJyYXlfc2V0XCJcbmxldCBbQGlubGluZSBhbHdheXNdIGRvdWJsZV9maWVsZCB4IGkgPSBmbG9hdGFycmF5X2dldCAob2JqIHggOiBmbG9hdGFycmF5KSBpXG5sZXQgW0BpbmxpbmUgYWx3YXlzXSBzZXRfZG91YmxlX2ZpZWxkIHggaSB2ID1cbiAgZmxvYXRhcnJheV9zZXQgKG9iaiB4IDogZmxvYXRhcnJheSkgaSB2XG5leHRlcm5hbCByYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSA9IFwiY2FtbF9vYmpfcmF3X2ZpZWxkXCJcbmV4dGVybmFsIHNldF9yYXdfZmllbGQgOiB0IC0+IGludCAtPiByYXdfZGF0YSAtPiB1bml0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9vYmpfc2V0X3Jhd19maWVsZFwiXG5cbmV4dGVybmFsIG5ld19ibG9jayA6IGludCAtPiBpbnQgLT4gdCA9IFwiY2FtbF9vYmpfYmxvY2tcIlxuZXh0ZXJuYWwgZHVwIDogdCAtPiB0ID0gXCJjYW1sX29ial9kdXBcIlxuZXh0ZXJuYWwgdHJ1bmNhdGUgOiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX29ial90cnVuY2F0ZVwiXG5leHRlcm5hbCBhZGRfb2Zmc2V0IDogdCAtPiBJbnQzMi50IC0+IHQgPSBcImNhbWxfb2JqX2FkZF9vZmZzZXRcIlxuZXh0ZXJuYWwgd2l0aF90YWcgOiBpbnQgLT4gdCAtPiB0ID0gXCJjYW1sX29ial93aXRoX3RhZ1wiXG5cbmxldCBtYXJzaGFsIChvYmogOiB0KSA9XG4gIE1hcnNoYWwudG9fYnl0ZXMgb2JqIFtdXG5sZXQgdW5tYXJzaGFsIHN0ciBwb3MgPVxuICAoTWFyc2hhbC5mcm9tX2J5dGVzIHN0ciBwb3MsIHBvcyArIE1hcnNoYWwudG90YWxfc2l6ZSBzdHIgcG9zKVxuXG5sZXQgZmlyc3Rfbm9uX2NvbnN0YW50X2NvbnN0cnVjdG9yX3RhZyA9IDBcbmxldCBsYXN0X25vbl9jb25zdGFudF9jb25zdHJ1Y3Rvcl90YWcgPSAyNDVcblxubGV0IGxhenlfdGFnID0gMjQ2XG5sZXQgY2xvc3VyZV90YWcgPSAyNDdcbmxldCBvYmplY3RfdGFnID0gMjQ4XG5sZXQgaW5maXhfdGFnID0gMjQ5XG5sZXQgZm9yd2FyZF90YWcgPSAyNTBcblxubGV0IG5vX3NjYW5fdGFnID0gMjUxXG5cbmxldCBhYnN0cmFjdF90YWcgPSAyNTFcbmxldCBzdHJpbmdfdGFnID0gMjUyXG5sZXQgZG91YmxlX3RhZyA9IDI1M1xubGV0IGRvdWJsZV9hcnJheV90YWcgPSAyNTRcbmxldCBjdXN0b21fdGFnID0gMjU1XG5sZXQgZmluYWxfdGFnID0gY3VzdG9tX3RhZ1xuXG5cbmxldCBpbnRfdGFnID0gMTAwMFxubGV0IG91dF9vZl9oZWFwX3RhZyA9IDEwMDFcbmxldCB1bmFsaWduZWRfdGFnID0gMTAwMlxuXG5tb2R1bGUgQ2xvc3VyZSA9IHN0cnVjdFxuICB0eXBlIGluZm8gPSB7XG4gICAgYXJpdHk6IGludDtcbiAgICBzdGFydF9lbnY6IGludDtcbiAgfVxuXG4gIGxldCBpbmZvX29mX3JhdyAoaW5mbyA6IG5hdGl2ZWludCkgPVxuICAgIGxldCBvcGVuIE5hdGl2ZWludCBpblxuICAgIGxldCBhcml0eSA9XG4gICAgICAoKiBzaWduZWQ6IG5lZ2F0aXZlIGZvciB0dXBsZWQgZnVuY3Rpb25zICopXG4gICAgICBpZiBTeXMud29yZF9zaXplID0gNjQgdGhlblxuICAgICAgICB0b19pbnQgKHNoaWZ0X3JpZ2h0IGluZm8gNTYpXG4gICAgICBlbHNlXG4gICAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHQgaW5mbyAyNClcbiAgICBpblxuICAgIGxldCBzdGFydF9lbnYgPVxuICAgICAgKCogc3RhcnRfZW52IGlzIHVuc2lnbmVkLCBidXQgd2Uga25vdyBpdCBjYW4gYWx3YXlzIGZpdCBhbiBPQ2FtbFxuICAgICAgICAgaW50ZWdlciBzbyB3ZSB1c2UgW3RvX2ludF0gaW5zdGVhZCBvZiBbdW5zaWduZWRfdG9faW50XS4gKilcbiAgICAgIHRvX2ludCAoc2hpZnRfcmlnaHRfbG9naWNhbCAoc2hpZnRfbGVmdCBpbmZvIDgpIDkpIGluXG4gICAgeyBhcml0eTsgc3RhcnRfZW52IH1cblxuICAoKiBub3RlOiB3ZSBleHBlY3QgYSBjbG9zdXJlLCBub3QgYW4gaW5maXggcG9pbnRlciAqKVxuICBsZXQgaW5mbyAob2JqIDogdCkgPVxuICAgIGFzc2VydCAodGFnIG9iaiA9IGNsb3N1cmVfdGFnKTtcbiAgICBpbmZvX29mX3JhdyAocmF3X2ZpZWxkIG9iaiAxKVxuZW5kXG5cbm1vZHVsZSBFeHRlbnNpb25fY29uc3RydWN0b3IgPVxuc3RydWN0XG4gIHR5cGUgdCA9IGV4dGVuc2lvbl9jb25zdHJ1Y3RvclxuICBsZXQgb2ZfdmFsIHggPVxuICAgIGxldCB4ID0gcmVwciB4IGluXG4gICAgbGV0IHNsb3QgPVxuICAgICAgaWYgKGlzX2Jsb2NrIHgpICYmICh0YWcgeCkgPD4gb2JqZWN0X3RhZyAmJiAoc2l6ZSB4KSA+PSAxIHRoZW4gZmllbGQgeCAwXG4gICAgICBlbHNlIHhcbiAgICBpblxuICAgIGxldCBuYW1lID1cbiAgICAgIGlmIChpc19ibG9jayBzbG90KSAmJiAodGFnIHNsb3QpID0gb2JqZWN0X3RhZyB0aGVuIGZpZWxkIHNsb3QgMFxuICAgICAgZWxzZSBpbnZhbGlkX2FyZyBcIk9iai5leHRlbnNpb25fY29uc3RydWN0b3JcIlxuICAgIGluXG4gICAgICBpZiAodGFnIG5hbWUpID0gc3RyaW5nX3RhZyB0aGVuIChvYmogc2xvdCA6IHQpXG4gICAgICBlbHNlIGludmFsaWRfYXJnIFwiT2JqLmV4dGVuc2lvbl9jb25zdHJ1Y3RvclwiXG5cbiAgbGV0IFtAaW5saW5lIGFsd2F5c10gbmFtZSAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAwKSA6IHN0cmluZylcblxuICBsZXQgW0BpbmxpbmUgYWx3YXlzXSBpZCAoc2xvdCA6IHQpID1cbiAgICAob2JqIChmaWVsZCAocmVwciBzbG90KSAxKSA6IGludClcbmVuZFxuXG5sZXQgZXh0ZW5zaW9uX2NvbnN0cnVjdG9yID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm9mX3ZhbFxubGV0IGV4dGVuc2lvbl9uYW1lID0gRXh0ZW5zaW9uX2NvbnN0cnVjdG9yLm5hbWVcbmxldCBleHRlbnNpb25faWQgPSBFeHRlbnNpb25fY29uc3RydWN0b3IuaWRcblxubW9kdWxlIEVwaGVtZXJvbiA9IHN0cnVjdFxuICB0eXBlIG9ial90ID0gdFxuXG4gIHR5cGUgdCAoKiogZXBoZW1lcm9uICopXG5cbiAgICgqKiBUbyBjaGFuZ2UgaW4gc3luYyB3aXRoIHdlYWsuaCAqKVxuICBsZXQgYWRkaXRpb25hbF92YWx1ZXMgPSAyXG4gIGxldCBtYXhfZXBoZV9sZW5ndGggPSBTeXMubWF4X2FycmF5X2xlbmd0aCAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+IHQgPSBcImNhbWxfZXBoZV9jcmVhdGVcIjs7XG4gIGxldCBjcmVhdGUgbCA9XG4gICAgaWYgbm90ICgwIDw9IGwgJiYgbCA8PSBtYXhfZXBoZV9sZW5ndGgpIHRoZW5cbiAgICAgIGludmFsaWRfYXJnIFwiT2JqLkVwaGVtZXJvbi5jcmVhdGVcIjtcbiAgICBjcmVhdGUgbFxuXG4gIGxldCBsZW5ndGggeCA9IHNpemUocmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbiAgbGV0IHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBtc2cgPVxuICAgIGlmIG5vdCAoMCA8PSBvICYmIG8gPCBsZW5ndGggZSkgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgZXh0ZXJuYWwgZ2V0X2tleTogdCAtPiBpbnQgLT4gb2JqX3Qgb3B0aW9uID0gXCJjYW1sX2VwaGVfZ2V0X2tleVwiXG4gIGxldCBnZXRfa2V5IGUgbyA9XG4gICAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiT2JqLkVwaGVtZXJvbi5nZXRfa2V5XCI7XG4gICAgZ2V0X2tleSBlIG9cblxuICBleHRlcm5hbCBnZXRfa2V5X2NvcHk6IHQgLT4gaW50IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9rZXlfY29weVwiXG4gIGxldCBnZXRfa2V5X2NvcHkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmdldF9rZXlfY29weVwiO1xuICAgIGdldF9rZXlfY29weSBlIG9cblxuICBleHRlcm5hbCBzZXRfa2V5OiB0IC0+IGludCAtPiBvYmpfdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfc2V0X2tleVwiXG4gIGxldCBzZXRfa2V5IGUgbyB4ID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLnNldF9rZXlcIjtcbiAgICBzZXRfa2V5IGUgbyB4XG5cbiAgZXh0ZXJuYWwgdW5zZXRfa2V5OiB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbiAgbGV0IHVuc2V0X2tleSBlIG8gPVxuICAgIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIk9iai5FcGhlbWVyb24udW5zZXRfa2V5XCI7XG4gICAgdW5zZXRfa2V5IGUgb1xuXG4gIGV4dGVybmFsIGNoZWNrX2tleTogdCAtPiBpbnQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2tleVwiXG4gIGxldCBjaGVja19rZXkgZSBvID1cbiAgICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJPYmouRXBoZW1lcm9uLmNoZWNrX2tleVwiO1xuICAgIGNoZWNrX2tleSBlIG9cblxuICBleHRlcm5hbCBibGl0X2tleSA6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0XG4gICAgPSBcImNhbWxfZXBoZV9ibGl0X2tleVwiXG5cbiAgbGV0IGJsaXRfa2V5IGUxIG8xIGUyIG8yIGwgPVxuICAgIGlmIGwgPCAwIHx8IG8xIDwgMCB8fCBvMSA+IGxlbmd0aCBlMSAtIGxcbiAgICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gICAgdGhlbiBpbnZhbGlkX2FyZyBcIk9iai5FcGhlbWVyb24uYmxpdF9rZXlcIlxuICAgIGVsc2UgaWYgbCA8PiAwIHRoZW4gYmxpdF9rZXkgZTEgbzEgZTIgbzIgbFxuXG4gIGV4dGVybmFsIGdldF9kYXRhOiB0IC0+IG9ial90IG9wdGlvbiA9IFwiY2FtbF9lcGhlX2dldF9kYXRhXCJcbiAgZXh0ZXJuYWwgZ2V0X2RhdGFfY29weTogdCAtPiBvYmpfdCBvcHRpb24gPSBcImNhbWxfZXBoZV9nZXRfZGF0YV9jb3B5XCJcbiAgZXh0ZXJuYWwgc2V0X2RhdGE6IHQgLT4gb2JqX3QgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9kYXRhXCJcbiAgZXh0ZXJuYWwgdW5zZXRfZGF0YTogdCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfZGF0YVwiXG4gIGV4dGVybmFsIGNoZWNrX2RhdGE6IHQgLT4gYm9vbCA9IFwiY2FtbF9lcGhlX2NoZWNrX2RhdGFcIlxuICBleHRlcm5hbCBibGl0X2RhdGEgOiB0IC0+IHQgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX2JsaXRfZGF0YVwiXG5cbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBBbiBhbGlhcyBmb3IgdGhlIHR5cGUgb2YgYXJyYXlzLiAqKVxudHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuKCogQXJyYXkgb3BlcmF0aW9ucyAqKVxuXG5leHRlcm5hbCBsZW5ndGggOiAnYSBhcnJheSAtPiBpbnQgPSBcIiVhcnJheV9sZW5ndGhcIlxuZXh0ZXJuYWwgZ2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgPSBcIiVhcnJheV9zYWZlX2dldFwiXG5leHRlcm5hbCBzZXQ6ICdhIGFycmF5IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlYXJyYXlfc2FmZV9zZXRcIlxuZXh0ZXJuYWwgdW5zYWZlX2dldDogJ2EgYXJyYXkgLT4gaW50IC0+ICdhID0gXCIlYXJyYXlfdW5zYWZlX2dldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0OiAnYSBhcnJheSAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWFycmF5X3Vuc2FmZV9zZXRcIlxuZXh0ZXJuYWwgbWFrZTogaW50IC0+ICdhIC0+ICdhIGFycmF5ID0gXCJjYW1sX21ha2VfdmVjdFwiXG5leHRlcm5hbCBjcmVhdGU6IGludCAtPiAnYSAtPiAnYSBhcnJheSA9IFwiY2FtbF9tYWtlX3ZlY3RcIlxuZXh0ZXJuYWwgdW5zYWZlX3N1YiA6ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfc3ViXCJcbmV4dGVybmFsIGFwcGVuZF9wcmltIDogJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfYXBwZW5kXCJcbmV4dGVybmFsIGNvbmNhdCA6ICdhIGFycmF5IGxpc3QgLT4gJ2EgYXJyYXkgPSBcImNhbWxfYXJyYXlfY29uY2F0XCJcbmV4dGVybmFsIHVuc2FmZV9ibGl0IDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+ICdhIGFycmF5IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9hcnJheV9ibGl0XCJcbmV4dGVybmFsIHVuc2FmZV9maWxsIDpcbiAgJ2EgYXJyYXkgLT4gaW50IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2FycmF5X2ZpbGxcIlxuZXh0ZXJuYWwgY3JlYXRlX2Zsb2F0OiBpbnQgLT4gZmxvYXQgYXJyYXkgPSBcImNhbWxfbWFrZV9mbG9hdF92ZWN0XCJcbmxldCBtYWtlX2Zsb2F0ID0gY3JlYXRlX2Zsb2F0XG5cbm1vZHVsZSBGbG9hdGFycmF5ID0gc3RydWN0XG4gIGV4dGVybmFsIGNyZWF0ZSA6IGludCAtPiBmbG9hdGFycmF5ID0gXCJjYW1sX2Zsb2F0YXJyYXlfY3JlYXRlXCJcbiAgZXh0ZXJuYWwgbGVuZ3RoIDogZmxvYXRhcnJheSAtPiBpbnQgPSBcIiVmbG9hdGFycmF5X2xlbmd0aFwiXG4gIGV4dGVybmFsIGdldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV9zYWZlX2dldFwiXG4gIGV4dGVybmFsIHNldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfc2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX2dldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldCA6IGZsb2F0YXJyYXkgLT4gaW50IC0+IGZsb2F0IC0+IHVuaXRcbiAgICAgID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcbmVuZFxuXG5sZXQgaW5pdCBsIGYgPVxuICBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZVxuICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuaW5pdFwiXG4gICgqIFNlZSAjNjU3NS4gV2UgY291bGQgYWxzbyBjaGVjayBmb3IgbWF4aW11bSBhcnJheSBzaXplLCBidXQgdGhpcyBkZXBlbmRzXG4gICAgIG9uIHdoZXRoZXIgd2UgY3JlYXRlIGEgZmxvYXQgYXJyYXkgb3IgYSByZWd1bGFyIG9uZS4uLiAqKVxuICBlbHNlXG4gICBsZXQgcmVzID0gY3JlYXRlIGwgKGYgMCkgaW5cbiAgIGZvciBpID0gMSB0byBwcmVkIGwgZG9cbiAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgZG9uZTtcbiAgIHJlc1xuXG5sZXQgbWFrZV9tYXRyaXggc3ggc3kgaW5pdCA9XG4gIGxldCByZXMgPSBjcmVhdGUgc3ggW3x8XSBpblxuICBmb3IgeCA9IDAgdG8gcHJlZCBzeCBkb1xuICAgIHVuc2FmZV9zZXQgcmVzIHggKGNyZWF0ZSBzeSBpbml0KVxuICBkb25lO1xuICByZXNcblxubGV0IGNyZWF0ZV9tYXRyaXggPSBtYWtlX21hdHJpeFxuXG5sZXQgY29weSBhID1cbiAgbGV0IGwgPSBsZW5ndGggYSBpbiBpZiBsID0gMCB0aGVuIFt8fF0gZWxzZSB1bnNhZmVfc3ViIGEgMCBsXG5cbmxldCBhcHBlbmQgYTEgYTIgPVxuICBsZXQgbDEgPSBsZW5ndGggYTEgaW5cbiAgaWYgbDEgPSAwIHRoZW4gY29weSBhMlxuICBlbHNlIGlmIGxlbmd0aCBhMiA9IDAgdGhlbiB1bnNhZmVfc3ViIGExIDAgbDFcbiAgZWxzZSBhcHBlbmRfcHJpbSBhMSBhMlxuXG5sZXQgc3ViIGEgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuc3ViXCJcbiAgZWxzZSB1bnNhZmVfc3ViIGEgb2ZzIGxlblxuXG5sZXQgZmlsbCBhIG9mcyBsZW4gdiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBsZW5ndGggYSAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiQXJyYXkuZmlsbFwiXG4gIGVsc2UgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHZcblxubGV0IGJsaXQgYTEgb2ZzMSBhMiBvZnMyIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgb2ZzMSA8IDAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgICAgIHx8IG9mczIgPCAwIHx8IG9mczIgPiBsZW5ndGggYTIgLSBsZW5cbiAgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmJsaXRcIlxuICBlbHNlIHVuc2FmZV9ibGl0IGExIG9mczEgYTIgb2ZzMiBsZW5cblxubGV0IGl0ZXIgZiBhID1cbiAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbmxldCBpdGVyMiBmIGEgYiA9XG4gIGlmIGxlbmd0aCBhIDw+IGxlbmd0aCBiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gIGVsc2VcbiAgICBmb3IgaSA9IDAgdG8gbGVuZ3RoIGEgLSAxIGRvIGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpIGRvbmVcblxubGV0IG1hcCBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZih1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZih1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgbWFwMiBmIGEgYiA9XG4gIGxldCBsYSA9IGxlbmd0aCBhIGluXG4gIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gIGlmIGxhIDw+IGxiIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkFycmF5Lm1hcDI6IGFycmF5cyBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoXCJcbiAgZWxzZSBiZWdpblxuICAgIGlmIGxhID0gMCB0aGVuIFt8fF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgKGYgKHVuc2FmZV9nZXQgYSAwKSAodW5zYWZlX2dldCBiIDApKSBpblxuICAgICAgZm9yIGkgPSAxIHRvIGxhIC0gMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpICh1bnNhZmVfZ2V0IGIgaSkpXG4gICAgICBkb25lO1xuICAgICAgclxuICAgIGVuZFxuICBlbmRcblxubGV0IGl0ZXJpIGYgYSA9XG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiBpICh1bnNhZmVfZ2V0IGEgaSkgZG9uZVxuXG5sZXQgbWFwaSBmIGEgPVxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGlmIGwgPSAwIHRoZW4gW3x8XSBlbHNlIGJlZ2luXG4gICAgbGV0IHIgPSBjcmVhdGUgbCAoZiAwICh1bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiBpICh1bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIGVuZFxuXG5sZXQgdG9fbGlzdCBhID1cbiAgbGV0IHJlYyB0b2xpc3QgaSByZXMgPVxuICAgIGlmIGkgPCAwIHRoZW4gcmVzIGVsc2UgdG9saXN0IChpIC0gMSkgKHVuc2FmZV9nZXQgYSBpIDo6IHJlcykgaW5cbiAgdG9saXN0IChsZW5ndGggYSAtIDEpIFtdXG5cbigqIENhbm5vdCB1c2UgTGlzdC5sZW5ndGggaGVyZSBiZWNhdXNlIHRoZSBMaXN0IG1vZHVsZSBkZXBlbmRzIG9uIEFycmF5LiAqKVxubGV0IHJlYyBsaXN0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBhY2N1XG4gIHwgXzo6dCAtPiBsaXN0X2xlbmd0aCAoc3VjYyBhY2N1KSB0XG5cbmxldCBvZl9saXN0ID0gZnVuY3Rpb25cbiAgICBbXSAtPiBbfHxdXG4gIHwgaGQ6OnRsIGFzIGwgLT5cbiAgICAgIGxldCBhID0gY3JlYXRlIChsaXN0X2xlbmd0aCAwIGwpIGhkIGluXG4gICAgICBsZXQgcmVjIGZpbGwgaSA9IGZ1bmN0aW9uXG4gICAgICAgICAgW10gLT4gYVxuICAgICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaSsxKSB0bCBpblxuICAgICAgZmlsbCAxIHRsXG5cbmxldCBmb2xkX2xlZnQgZiB4IGEgPVxuICBsZXQgciA9IHJlZiB4IGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG9cbiAgICByIDo9IGYgIXIgKHVuc2FmZV9nZXQgYSBpKVxuICBkb25lO1xuICAhclxuXG5sZXQgZm9sZF9sZWZ0X21hcCBmIGFjYyBpbnB1dF9hcnJheSA9XG4gIGxldCBsZW4gPSBsZW5ndGggaW5wdXRfYXJyYXkgaW5cbiAgaWYgbGVuID0gMCB0aGVuIChhY2MsIFt8fF0pIGVsc2UgYmVnaW5cbiAgICBsZXQgYWNjLCBlbHQgPSBmIGFjYyAodW5zYWZlX2dldCBpbnB1dF9hcnJheSAwKSBpblxuICAgIGxldCBvdXRwdXRfYXJyYXkgPSBjcmVhdGUgbGVuIGVsdCBpblxuICAgIGxldCBhY2MgPSByZWYgYWNjIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIGxldCBhY2MnLCBlbHQgPSBmICFhY2MgKHVuc2FmZV9nZXQgaW5wdXRfYXJyYXkgaSkgaW5cbiAgICAgIGFjYyA6PSBhY2MnO1xuICAgICAgdW5zYWZlX3NldCBvdXRwdXRfYXJyYXkgaSBlbHQ7XG4gICAgZG9uZTtcbiAgICAhYWNjLCBvdXRwdXRfYXJyYXlcbiAgZW5kXG5cbmxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgbGV0IHIgPSByZWYgeCBpblxuICBmb3IgaSA9IGxlbmd0aCBhIC0gMSBkb3dudG8gMCBkb1xuICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gIGRvbmU7XG4gICFyXG5cbmxldCBleGlzdHMgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwgcCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgZWxzZSBpZiBwICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGZvcl9hbGwyIHAgbDEgbDIgPVxuICBsZXQgbjEgPSBsZW5ndGggbDFcbiAgYW5kIG4yID0gbGVuZ3RoIGwyIGluXG4gIGlmIG4xIDw+IG4yIHRoZW4gaW52YWxpZF9hcmcgXCJBcnJheS5mb3JfYWxsMlwiXG4gIGVsc2UgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuMSB0aGVuIHRydWVcbiAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgbDEgaSkgKHVuc2FmZV9nZXQgbDIgaSkgdGhlbiBsb29wIChzdWNjIGkpXG4gICAgZWxzZSBmYWxzZSBpblxuICBsb29wIDBcblxubGV0IGV4aXN0czIgcCBsMSBsMiA9XG4gIGxldCBuMSA9IGxlbmd0aCBsMVxuICBhbmQgbjIgPSBsZW5ndGggbDIgaW5cbiAgaWYgbjEgPD4gbjIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmV4aXN0czJcIlxuICBlbHNlIGxldCByZWMgbG9vcCBpID1cbiAgICBpZiBpID0gbjEgdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBsMSBpKSAodW5zYWZlX2dldCBsMiBpKSB0aGVuIHRydWVcbiAgICBlbHNlIGxvb3AgKHN1Y2MgaSkgaW5cbiAgbG9vcCAwXG5cbmxldCBtZW0geCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IG1lbXEgeCBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBmYWxzZVxuICAgIGVsc2UgaWYgeCA9PSAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgIGVsc2UgbG9vcCAoc3VjYyBpKSBpblxuICBsb29wIDBcblxubGV0IGZpbmRfb3B0IHAgYSA9XG4gIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPSBuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCB4ID0gdW5zYWZlX2dldCBhIGkgaW5cbiAgICAgIGlmIHAgeCB0aGVuIFNvbWUgeFxuICAgICAgZWxzZSBsb29wIChzdWNjIGkpXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgZmluZF9tYXAgZiBhID1cbiAgbGV0IG4gPSBsZW5ndGggYSBpblxuICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgaWYgaSA9IG4gdGhlbiBOb25lXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggZiAodW5zYWZlX2dldCBhIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIChzdWNjIGkpXG4gICAgICB8IFNvbWUgXyBhcyByIC0+IHJcbiAgaW5cbiAgbG9vcCAwXG5cbmxldCBzcGxpdCB4ID1cbiAgaWYgeCA9IFt8fF0gdGhlbiBbfHxdLCBbfHxdXG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgYTAsIGIwID0gdW5zYWZlX2dldCB4IDAgaW5cbiAgICBsZXQgbiA9IGxlbmd0aCB4IGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbiBhMCBpblxuICAgIGxldCBiID0gY3JlYXRlIG4gYjAgaW5cbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIGxldCBhaSwgYmkgPSB1bnNhZmVfZ2V0IHggaSBpblxuICAgICAgdW5zYWZlX3NldCBhIGkgYWk7XG4gICAgICB1bnNhZmVfc2V0IGIgaSBiaVxuICAgIGRvbmU7XG4gICAgYSwgYlxuICBlbmRcblxubGV0IGNvbWJpbmUgYSBiID1cbiAgbGV0IG5hID0gbGVuZ3RoIGEgaW5cbiAgbGV0IG5iID0gbGVuZ3RoIGIgaW5cbiAgaWYgbmEgPD4gbmIgdGhlbiBpbnZhbGlkX2FyZyBcIkFycmF5LmNvbWJpbmVcIjtcbiAgaWYgbmEgPSAwIHRoZW4gW3x8XVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IHggPSBjcmVhdGUgbmEgKHVuc2FmZV9nZXQgYSAwLCB1bnNhZmVfZ2V0IGIgMCkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbmEgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHggaSAodW5zYWZlX2dldCBhIGksIHVuc2FmZV9nZXQgYiBpKVxuICAgIGRvbmU7XG4gICAgeFxuICBlbmRcblxuZXhjZXB0aW9uIEJvdHRvbSBvZiBpbnRcbmxldCBzb3J0IGNtcCBhID1cbiAgbGV0IG1heHNvbiBsIGkgPVxuICAgIGxldCBpMzEgPSBpK2kraSsxIGluXG4gICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgaWYgaTMxKzIgPCBsIHRoZW4gYmVnaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwIHRoZW4geCA6PSBpMzErMTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgIXhcbiAgICBlbmQgZWxzZVxuICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICB0aGVuIGkzMSsxXG4gICAgICBlbHNlIGlmIGkzMSA8IGwgdGhlbiBpMzEgZWxzZSByYWlzZSAoQm90dG9tIGkpXG4gIGluXG4gIGxldCByZWMgdHJpY2tsZWRvd24gbCBpIGUgPVxuICAgIGxldCBqID0gbWF4c29uIGwgaSBpblxuICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgICB0cmlja2xlZG93biBsIGogZTtcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgc2V0IGEgaSBlO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IHRyaWNrbGUgbCBpIGUgPSB0cnkgdHJpY2tsZWRvd24gbCBpIGUgd2l0aCBCb3R0b20gaSAtPiBzZXQgYSBpIGUgaW5cbiAgbGV0IHJlYyBidWJibGVkb3duIGwgaSA9XG4gICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgaik7XG4gICAgYnViYmxlZG93biBsIGpcbiAgaW5cbiAgbGV0IGJ1YmJsZSBsIGkgPSB0cnkgYnViYmxlZG93biBsIGkgd2l0aCBCb3R0b20gaSAtPiBpIGluXG4gIGxldCByZWMgdHJpY2tsZXVwIGkgZSA9XG4gICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgYXNzZXJ0IChpIDw+IGZhdGhlcik7XG4gICAgaWYgY21wIChnZXQgYSBmYXRoZXIpIGUgPCAwIHRoZW4gYmVnaW5cbiAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICBpZiBmYXRoZXIgPiAwIHRoZW4gdHJpY2tsZXVwIGZhdGhlciBlIGVsc2Ugc2V0IGEgMCBlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBzZXQgYSBpIGU7XG4gICAgZW5kO1xuICBpblxuICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gIGZvciBpID0gKGwgKyAxKSAvIDMgLSAxIGRvd250byAwIGRvIHRyaWNrbGUgbCBpIChnZXQgYSBpKTsgZG9uZTtcbiAgZm9yIGkgPSBsIC0gMSBkb3dudG8gMiBkb1xuICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgc2V0IGEgaSAoZ2V0IGEgMCk7XG4gICAgdHJpY2tsZXVwIChidWJibGUgaSAwKSBlO1xuICBkb25lO1xuICBpZiBsID4gMSB0aGVuIChsZXQgZSA9IChnZXQgYSAxKSBpbiBzZXQgYSAxIChnZXQgYSAwKTsgc2V0IGEgMCBlKVxuXG5cbmxldCBjdXRvZmYgPSA1XG5sZXQgc3RhYmxlX3NvcnQgY21wIGEgPVxuICBsZXQgbWVyZ2Ugc3JjMW9mcyBzcmMxbGVuIHNyYzIgc3JjMm9mcyBzcmMybGVuIGRzdCBkc3RvZnMgPVxuICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgbGV0IHJlYyBsb29wIGkxIHMxIGkyIHMyIGQgPVxuICAgICAgaWYgY21wIHMxIHMyIDw9IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgIGxldCBpMSA9IGkxICsgMSBpblxuICAgICAgICBpZiBpMSA8IHNyYzFyIHRoZW5cbiAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxpdCBzcmMyIGkyIGRzdCAoZCArIDEpIChzcmMyciAtIGkyKVxuICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgc2V0IGRzdCBkIHMyO1xuICAgICAgICBsZXQgaTIgPSBpMiArIDEgaW5cbiAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgbG9vcCBpMSBzMSBpMiAoZ2V0IHNyYzIgaTIpIChkICsgMSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgIGVuZFxuICAgIGluIGxvb3Agc3JjMW9mcyAoZ2V0IGEgc3JjMW9mcykgc3JjMm9mcyAoZ2V0IHNyYzIgc3JjMm9mcykgZHN0b2ZzO1xuICBpblxuICBsZXQgaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gPVxuICAgIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICBsZXQgaiA9IHJlZiAoZHN0b2ZzICsgaSAtIDEpIGluXG4gICAgICB3aGlsZSAoIWogPj0gZHN0b2ZzICYmIGNtcCAoZ2V0IGRzdCAhaikgZSA+IDApIGRvXG4gICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICBkZWNyIGo7XG4gICAgICBkb25lO1xuICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgIGRvbmU7XG4gIGluXG4gIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgaWYgbGVuIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gc3Jjb2ZzIGRzdCBkc3RvZnMgbGVuIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGxlbiAvIDIgaW5cbiAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICBzb3J0dG8gKHNyY29mcyArIGwxKSBkc3QgKGRzdG9mcyArIGwxKSBsMjtcbiAgICAgIHNvcnR0byBzcmNvZnMgYSAoc3Jjb2ZzICsgbDIpIGwxO1xuICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgIGVuZDtcbiAgaW5cbiAgbGV0IGwgPSBsZW5ndGggYSBpblxuICBpZiBsIDw9IGN1dG9mZiB0aGVuIGlzb3J0dG8gMCBhIDAgbCBlbHNlIGJlZ2luXG4gICAgbGV0IGwxID0gbCAvIDIgaW5cbiAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICBsZXQgdCA9IG1ha2UgbDIgKGdldCBhIDApIGluXG4gICAgc29ydHRvIGwxIHQgMCBsMjtcbiAgICBzb3J0dG8gMCBhIGwyIGwxO1xuICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gIGVuZFxuXG5cbmxldCBmYXN0X3NvcnQgPSBzdGFibGVfc29ydFxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIGEgPVxuICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICB0aGVuXG4gICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgIGVsc2UgU2VxLk5pbFxuICBpblxuICBhdXggMFxuXG5sZXQgdG9fc2VxaSBhID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgaWYgaSA8IGxlbmd0aCBhXG4gICAgdGhlblxuICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgU2VxLkNvbnMgKChpLHgpLCBhdXggKGkrMSkpXG4gICAgZWxzZSBTZXEuTmlsXG4gIGluXG4gIGF1eCAwXG5cbmxldCBvZl9yZXZfbGlzdCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gW3x8XVxuICB8IGhkOjp0bCBhcyBsIC0+XG4gICAgICBsZXQgbGVuID0gbGlzdF9sZW5ndGggMCBsIGluXG4gICAgICBsZXQgYSA9IGNyZWF0ZSBsZW4gaGQgaW5cbiAgICAgIGxldCByZWMgZmlsbCBpID0gZnVuY3Rpb25cbiAgICAgICAgICBbXSAtPiBhXG4gICAgICAgIHwgaGQ6OnRsIC0+IHVuc2FmZV9zZXQgYSBpIGhkOyBmaWxsIChpLTEpIHRsXG4gICAgICBpblxuICAgICAgZmlsbCAobGVuLTIpIHRsXG5cbmxldCBvZl9zZXEgaSA9XG4gIGxldCBsID0gU2VxLmZvbGRfbGVmdCAoZnVuIGFjYyB4IC0+IHg6OmFjYykgW10gaSBpblxuICBvZl9yZXZfbGlzdCBsXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgIE5pY29sYXMgT2plZGEgQmFyLCBMZXhpRmkgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE4IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4dGVybmFsIG5lZyA6IGZsb2F0IC0+IGZsb2F0ID0gXCIlbmVnZmxvYXRcIlxuZXh0ZXJuYWwgYWRkIDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVhZGRmbG9hdFwiXG5leHRlcm5hbCBzdWIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiJXN1YmZsb2F0XCJcbmV4dGVybmFsIG11bCA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCIlbXVsZmxvYXRcIlxuZXh0ZXJuYWwgZGl2IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcIiVkaXZmbG9hdFwiXG5leHRlcm5hbCByZW0gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9mbW9kX2Zsb2F0XCIgXCJmbW9kXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZtYSA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2ZtYV9mbG9hdFwiIFwiY2FtbF9mbWFcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWJzIDogZmxvYXQgLT4gZmxvYXQgPSBcIiVhYnNmbG9hdFwiXG5cbmxldCB6ZXJvID0gMC5cbmxldCBvbmUgPSAxLlxubGV0IG1pbnVzX29uZSA9IC0xLlxubGV0IGluZmluaXR5ID0gU3RkbGliLmluZmluaXR5XG5sZXQgbmVnX2luZmluaXR5ID0gU3RkbGliLm5lZ19pbmZpbml0eVxubGV0IG5hbiA9IFN0ZGxpYi5uYW5cbmxldCBpc19maW5pdGUgKHg6IGZsb2F0KSA9IHggLS4geCA9IDAuXG5sZXQgaXNfaW5maW5pdGUgKHg6IGZsb2F0KSA9IDEuIC8uIHggPSAwLlxubGV0IGlzX25hbiAoeDogZmxvYXQpID0geCA8PiB4XG5cbmxldCBwaSA9IDB4MS45MjFmYjU0NDQyZDE4cCsxXG5sZXQgbWF4X2Zsb2F0ID0gU3RkbGliLm1heF9mbG9hdFxubGV0IG1pbl9mbG9hdCA9IFN0ZGxpYi5taW5fZmxvYXRcbmxldCBlcHNpbG9uID0gU3RkbGliLmVwc2lsb25fZmxvYXRcbmV4dGVybmFsIG9mX2ludCA6IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0b2ZpbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogZmxvYXQgLT4gaW50ID0gXCIlaW50b2ZmbG9hdFwiXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gZmxvYXQgPSBcImNhbWxfZmxvYXRfb2Zfc3RyaW5nXCJcbmxldCBvZl9zdHJpbmdfb3B0ID0gU3RkbGliLmZsb2F0X29mX3N0cmluZ19vcHRcbmxldCB0b19zdHJpbmcgPSBTdGRsaWIuc3RyaW5nX29mX2Zsb2F0XG50eXBlIGZwY2xhc3MgPSBTdGRsaWIuZnBjbGFzcyA9XG4gICAgRlBfbm9ybWFsXG4gIHwgRlBfc3Vibm9ybWFsXG4gIHwgRlBfemVyb1xuICB8IEZQX2luZmluaXRlXG4gIHwgRlBfbmFuXG5leHRlcm5hbCBjbGFzc2lmeV9mbG9hdCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiBmcGNsYXNzID1cbiAgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0XCIgXCJjYW1sX2NsYXNzaWZ5X2Zsb2F0X3VuYm94ZWRcIiBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcG93IDogZmxvYXQgLT4gZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfcG93ZXJfZmxvYXRcIiBcInBvd1wiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBzcXJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc3FydF9mbG9hdFwiIFwic3FydFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjYnJ0IDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2JydF9mbG9hdFwiIFwiY2FtbF9jYnJ0XCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cF9mbG9hdFwiIFwiZXhwXCIgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGV4cDIgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9leHAyX2Zsb2F0XCIgXCJjYW1sX2V4cDJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nX2Zsb2F0XCIgXCJsb2dcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMTAgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9sb2cxMF9mbG9hdFwiIFwibG9nMTBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgbG9nMiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2xvZzJfZmxvYXRcIiBcImNhbWxfbG9nMlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBleHBtMSA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2V4cG0xX2Zsb2F0XCIgXCJjYW1sX2V4cG0xXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGxvZzFwIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfbG9nMXBfZmxvYXRcIiBcImNhbWxfbG9nMXBcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY29zX2Zsb2F0XCIgXCJjb3NcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfc2luX2Zsb2F0XCIgXCJzaW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdGFuX2Zsb2F0XCIgXCJ0YW5cIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvcyA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Fjb3NfZmxvYXRcIiBcImFjb3NcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXNpbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5fZmxvYXRcIiBcImFzaW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbiA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2F0YW5fZmxvYXRcIiBcImF0YW5cIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYXRhbjIgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hdGFuMl9mbG9hdFwiIFwiYXRhbjJcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgaHlwb3QgOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgPSBcImNhbWxfaHlwb3RfZmxvYXRcIiBcImNhbWxfaHlwb3RcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgY29zaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Nvc2hfZmxvYXRcIiBcImNvc2hcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3NpbmhfZmxvYXRcIiBcInNpbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdGFuaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX3RhbmhfZmxvYXRcIiBcInRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYWNvc2ggOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9hY29zaF9mbG9hdFwiIFwiY2FtbF9hY29zaFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBhc2luaCA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2FzaW5oX2Zsb2F0XCIgXCJjYW1sX2FzaW5oXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGF0YW5oIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfYXRhbmhfZmxvYXRcIiBcImNhbWxfYXRhbmhcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZXJmIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmX2Zsb2F0XCIgXCJjYW1sX2VyZlwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBlcmZjIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfZXJmY19mbG9hdFwiIFwiY2FtbF9lcmZjXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHRydW5jIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfdHJ1bmNfZmxvYXRcIiBcImNhbWxfdHJ1bmNcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgcm91bmQgOiBmbG9hdCAtPiBmbG9hdCA9IFwiY2FtbF9yb3VuZF9mbG9hdFwiIFwiY2FtbF9yb3VuZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBjZWlsIDogZmxvYXQgLT4gZmxvYXQgPSBcImNhbWxfY2VpbF9mbG9hdFwiIFwiY2VpbFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBmbG9vciA6IGZsb2F0IC0+IGZsb2F0ID0gXCJjYW1sX2Zsb29yX2Zsb2F0XCIgXCJmbG9vclwiXG5bQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgaXNfaW50ZWdlciB4ID0geCA9IHRydW5jIHggJiYgaXNfZmluaXRlIHhcblxuZXh0ZXJuYWwgbmV4dF9hZnRlciA6IGZsb2F0IC0+IGZsb2F0IC0+IGZsb2F0XG4gID0gXCJjYW1sX25leHRhZnRlcl9mbG9hdFwiIFwiY2FtbF9uZXh0YWZ0ZXJcIiBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuXG5sZXQgc3VjYyB4ID0gbmV4dF9hZnRlciB4IGluZmluaXR5XG5sZXQgcHJlZCB4ID0gbmV4dF9hZnRlciB4IG5lZ19pbmZpbml0eVxuXG5leHRlcm5hbCBjb3B5X3NpZ24gOiBmbG9hdCAtPiBmbG9hdCAtPiBmbG9hdFxuICAgICAgICAgICAgICAgICAgPSBcImNhbWxfY29weXNpZ25fZmxvYXRcIiBcImNhbWxfY29weXNpZ25cIlxuICAgICAgICAgICAgICAgICAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIHNpZ25fYml0IDogKGZsb2F0IFtAdW5ib3hlZF0pIC0+IGJvb2xcbiAgPSBcImNhbWxfc2lnbmJpdF9mbG9hdFwiIFwiY2FtbF9zaWduYml0XCIgW0BAbm9hbGxvY11cblxuZXh0ZXJuYWwgZnJleHAgOiBmbG9hdCAtPiBmbG9hdCAqIGludCA9IFwiY2FtbF9mcmV4cF9mbG9hdFwiXG5leHRlcm5hbCBsZGV4cCA6IChmbG9hdCBbQHVuYm94ZWRdKSAtPiAoaW50IFtAdW50YWdnZWRdKSAtPiAoZmxvYXQgW0B1bmJveGVkXSkgPVxuICBcImNhbWxfbGRleHBfZmxvYXRcIiBcImNhbWxfbGRleHBfZmxvYXRfdW5ib3hlZFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBtb2RmIDogZmxvYXQgLT4gZmxvYXQgKiBmbG9hdCA9IFwiY2FtbF9tb2RmX2Zsb2F0XCJcbnR5cGUgdCA9IGZsb2F0XG5leHRlcm5hbCBjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50ID0gXCIlY29tcGFyZVwiXG5sZXQgZXF1YWwgeCB5ID0gY29tcGFyZSB4IHkgPSAwXG5cbmxldFtAaW5saW5lXSBtaW4gKHg6IGZsb2F0KSAoeTogZmxvYXQpID1cbiAgaWYgeSA+IHggfHwgKG5vdChzaWduX2JpdCB5KSAmJiBzaWduX2JpdCB4KSB0aGVuXG4gICAgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuICBlbHNlIGlmIGlzX25hbiB4IHRoZW4geCBlbHNlIHlcblxubGV0W0BpbmxpbmVdIG1heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW5cbiAgICBpZiBpc19uYW4geCB0aGVuIHggZWxzZSB5XG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiB5IGVsc2UgeFxuXG5sZXRbQGlubGluZV0gbWluX21heCAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB8fCBpc19uYW4geSB0aGVuIChuYW4sIG5hbilcbiAgZWxzZSBpZiB5ID4geCB8fCAobm90KHNpZ25fYml0IHkpICYmIHNpZ25fYml0IHgpIHRoZW4gKHgsIHkpIGVsc2UgKHksIHgpXG5cbmxldFtAaW5saW5lXSBtaW5fbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB4IHRoZW4geSBlbHNlIHhcbiAgZWxzZSBpZiBpc19uYW4geSB0aGVuIHggZWxzZSB5XG5cbmxldFtAaW5saW5lXSBtYXhfbnVtICh4OiBmbG9hdCkgKHk6IGZsb2F0KSA9XG4gIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlblxuICAgIGlmIGlzX25hbiB5IHRoZW4geCBlbHNlIHlcbiAgZWxzZSBpZiBpc19uYW4geCB0aGVuIHkgZWxzZSB4XG5cbmxldFtAaW5saW5lXSBtaW5fbWF4X251bSAoeDogZmxvYXQpICh5OiBmbG9hdCkgPVxuICBpZiBpc19uYW4geCB0aGVuICh5LHkpXG4gIGVsc2UgaWYgaXNfbmFuIHkgdGhlbiAoeCx4KVxuICBlbHNlIGlmIHkgPiB4IHx8IChub3Qoc2lnbl9iaXQgeSkgJiYgc2lnbl9iaXQgeCkgdGhlbiAoeCx5KSBlbHNlICh5LHgpXG5cbmV4dGVybmFsIHNlZWRlZF9oYXNoX3BhcmFtIDogaW50IC0+IGludCAtPiBpbnQgLT4gZmxvYXQgLT4gaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICA9IFwiY2FtbF9oYXNoXCIgW0BAbm9hbGxvY11cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5cbm1vZHVsZSBBcnJheSA9IHN0cnVjdFxuXG4gIHR5cGUgdCA9IGZsb2F0YXJyYXlcblxuICBleHRlcm5hbCBsZW5ndGggOiB0IC0+IGludCA9IFwiJWZsb2F0YXJyYXlfbGVuZ3RoXCJcbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgPSBcIiVmbG9hdGFycmF5X3NhZmVfZ2V0XCJcbiAgZXh0ZXJuYWwgc2V0IDogdCAtPiBpbnQgLT4gZmxvYXQgLT4gdW5pdCA9IFwiJWZsb2F0YXJyYXlfc2FmZV9zZXRcIlxuICBleHRlcm5hbCBjcmVhdGUgOiBpbnQgLT4gdCA9IFwiY2FtbF9mbG9hdGFycmF5X2NyZWF0ZVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQgOiB0IC0+IGludCAtPiBmbG9hdCA9IFwiJWZsb2F0YXJyYXlfdW5zYWZlX2dldFwiXG4gIGV4dGVybmFsIHVuc2FmZV9zZXQgOiB0IC0+IGludCAtPiBmbG9hdCAtPiB1bml0ID0gXCIlZmxvYXRhcnJheV91bnNhZmVfc2V0XCJcblxuICBsZXQgdW5zYWZlX2ZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGZvciBpID0gb2ZzIHRvIG9mcyArIGxlbiAtIDEgZG8gdW5zYWZlX3NldCBhIGkgdiBkb25lXG5cbiAgZXh0ZXJuYWwgdW5zYWZlX2JsaXQ6IHQgLT4gaW50IC0+IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID1cbiAgICBcImNhbWxfZmxvYXRhcnJheV9ibGl0XCIgW0BAbm9hbGxvY11cblxuICBsZXQgY2hlY2sgYSBvZnMgbGVuIG1zZyA9XG4gICAgaWYgb2ZzIDwgMCB8fCBsZW4gPCAwIHx8IG9mcyArIGxlbiA8IDAgfHwgb2ZzICsgbGVuID4gbGVuZ3RoIGEgdGhlblxuICAgICAgaW52YWxpZF9hcmcgbXNnXG5cbiAgbGV0IG1ha2UgbiB2ID1cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIG4gaW5cbiAgICB1bnNhZmVfZmlsbCByZXN1bHQgMCBuIHY7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGluaXQgbCBmID1cbiAgICBpZiBsIDwgMCB0aGVuIGludmFsaWRfYXJnIFwiRmxvYXQuQXJyYXkuaW5pdFwiXG4gICAgZWxzZVxuICAgICAgbGV0IHJlcyA9IGNyZWF0ZSBsIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbCAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByZXMgaSAoZiBpKVxuICAgICAgZG9uZTtcbiAgICAgIHJlc1xuXG4gIGxldCBhcHBlbmQgYTEgYTIgPVxuICAgIGxldCBsMSA9IGxlbmd0aCBhMSBpblxuICAgIGxldCBsMiA9IGxlbmd0aCBhMiBpblxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKGwxICsgbDIpIGluXG4gICAgdW5zYWZlX2JsaXQgYTEgMCByZXN1bHQgMCBsMTtcbiAgICB1bnNhZmVfYmxpdCBhMiAwIHJlc3VsdCBsMSBsMjtcbiAgICByZXN1bHRcblxuICAoKiBuZXh0IDMgZnVuY3Rpb25zOiBtb2RpZmllZCBjb3B5IG9mIGNvZGUgZnJvbSBzdHJpbmcubWwgKilcbiAgbGV0IGVuc3VyZV9nZSAoeDppbnQpIHkgPVxuICAgIGlmIHggPj0geSB0aGVuIHggZWxzZSBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5LmNvbmNhdFwiXG5cbiAgbGV0IHJlYyBzdW1fbGVuZ3RocyBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gYWNjXG4gICAgfCBoZCA6OiB0bCAtPiBzdW1fbGVuZ3RocyAoZW5zdXJlX2dlIChsZW5ndGggaGQgKyBhY2MpIGFjYykgdGxcblxuICBsZXQgY29uY2F0IGwgPVxuICAgIGxldCBsZW4gPSBzdW1fbGVuZ3RocyAwIGwgaW5cbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIGxldCByZWMgbG9vcCBsIGkgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGFzc2VydCAoaSA9IGxlbilcbiAgICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgbGV0IGhsZW4gPSBsZW5ndGggaGQgaW5cbiAgICAgICAgdW5zYWZlX2JsaXQgaGQgMCByZXN1bHQgaSBobGVuO1xuICAgICAgICBsb29wIHRsIChpICsgaGxlbilcbiAgICBpblxuICAgIGxvb3AgbCAwO1xuICAgIHJlc3VsdFxuXG4gIGxldCBzdWIgYSBvZnMgbGVuID1cbiAgICBjaGVjayBhIG9mcyBsZW4gXCJGbG9hdC5BcnJheS5zdWJcIjtcbiAgICBsZXQgcmVzdWx0ID0gY3JlYXRlIGxlbiBpblxuICAgIHVuc2FmZV9ibGl0IGEgb2ZzIHJlc3VsdCAwIGxlbjtcbiAgICByZXN1bHRcblxuICBsZXQgY29weSBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlc3VsdCA9IGNyZWF0ZSBsIGluXG4gICAgdW5zYWZlX2JsaXQgYSAwIHJlc3VsdCAwIGw7XG4gICAgcmVzdWx0XG5cbiAgbGV0IGZpbGwgYSBvZnMgbGVuIHYgPVxuICAgIGNoZWNrIGEgb2ZzIGxlbiBcIkZsb2F0LkFycmF5LmZpbGxcIjtcbiAgICB1bnNhZmVfZmlsbCBhIG9mcyBsZW4gdlxuXG4gIGxldCBibGl0IHNyYyBzb2ZzIGRzdCBkb2ZzIGxlbiA9XG4gICAgY2hlY2sgc3JjIHNvZnMgbGVuIFwiRmxvYXQuYXJyYXkuYmxpdFwiO1xuICAgIGNoZWNrIGRzdCBkb2ZzIGxlbiBcIkZsb2F0LmFycmF5LmJsaXRcIjtcbiAgICB1bnNhZmVfYmxpdCBzcmMgc29mcyBkc3QgZG9mcyBsZW5cblxuICBsZXQgdG9fbGlzdCBhID1cbiAgICBMaXN0LmluaXQgKGxlbmd0aCBhKSAodW5zYWZlX2dldCBhKVxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIGxldCByZXN1bHQgPSBjcmVhdGUgKExpc3QubGVuZ3RoIGwpIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gcmVzdWx0XG4gICAgICB8IGggOjogdCAtPiB1bnNhZmVfc2V0IHJlc3VsdCBpIGg7IGZpbGwgKGkgKyAxKSB0XG4gICAgaW5cbiAgICBmaWxsIDAgbFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgaXRlciBmIGEgPVxuICAgIGZvciBpID0gMCB0byBsZW5ndGggYSAtIDEgZG8gZiAodW5zYWZlX2dldCBhIGkpIGRvbmVcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXIyIGYgYSBiID1cbiAgICBpZiBsZW5ndGggYSA8PiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkZsb2F0LkFycmF5Lml0ZXIyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZVxuICAgICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmICh1bnNhZmVfZ2V0IGEgaSkgKHVuc2FmZV9nZXQgYiBpKSBkb25lXG5cbiAgbGV0IG1hcCBmIGEgPVxuICAgIGxldCBsID0gbGVuZ3RoIGEgaW5cbiAgICBsZXQgciA9IGNyZWF0ZSBsIGluXG4gICAgZm9yIGkgPSAwIHRvIGwgLSAxIGRvXG4gICAgICB1bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gIGxldCBtYXAyIGYgYSBiID1cbiAgICBsZXQgbGEgPSBsZW5ndGggYSBpblxuICAgIGxldCBsYiA9IGxlbmd0aCBiIGluXG4gICAgaWYgbGEgPD4gbGIgdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJGbG9hdC5BcnJheS5tYXAyOiBhcnJheXMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBjcmVhdGUgbGEgaW5cbiAgICAgIGZvciBpID0gMCB0byBsYSAtIDEgZG9cbiAgICAgICAgdW5zYWZlX3NldCByIGkgKGYgKHVuc2FmZV9nZXQgYSBpKSAodW5zYWZlX2dldCBiIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGl0ZXJpIGYgYSA9XG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkbyBmIGkgKHVuc2FmZV9nZXQgYSBpKSBkb25lXG5cbiAgbGV0IG1hcGkgZiBhID1cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgaSAodW5zYWZlX2dldCBhIGkpKVxuICAgIGRvbmU7XG4gICAgclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZm9sZF9sZWZ0IGYgeCBhID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSAwIHRvIGxlbmd0aCBhIC0gMSBkb1xuICAgICAgciA6PSBmICFyICh1bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lO1xuICAgICFyXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCBmb2xkX3JpZ2h0IGYgYSB4ID1cbiAgICBsZXQgciA9IHJlZiB4IGluXG4gICAgZm9yIGkgPSBsZW5ndGggYSAtIDEgZG93bnRvIDAgZG9cbiAgICAgIHIgOj0gZiAodW5zYWZlX2dldCBhIGkpICFyXG4gICAgZG9uZTtcbiAgICAhclxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgZXhpc3RzIHAgYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgcCAodW5zYWZlX2dldCBhIGkpIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSkgaW5cbiAgICBsb29wIDBcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IGZvcl9hbGwgcCBhID1cbiAgICBsZXQgbiA9IGxlbmd0aCBhIGluXG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IG4gdGhlbiB0cnVlXG4gICAgICBlbHNlIGlmIHAgKHVuc2FmZV9nZXQgYSBpKSB0aGVuIGxvb3AgKGkgKyAxKVxuICAgICAgZWxzZSBmYWxzZSBpblxuICAgIGxvb3AgMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgbWVtIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgY29tcGFyZSAodW5zYWZlX2dldCBhIGkpIHggPSAwIHRoZW4gdHJ1ZVxuICAgICAgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwsIGJ1dCBzbGlnaHRseSBkaWZmZXJlbnQgKilcbiAgbGV0IG1lbV9pZWVlIHggYSA9XG4gICAgbGV0IG4gPSBsZW5ndGggYSBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPSBuIHRoZW4gZmFsc2VcbiAgICAgIGVsc2UgaWYgeCA9ICh1bnNhZmVfZ2V0IGEgaSkgdGhlbiB0cnVlXG4gICAgICBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGV4Y2VwdGlvbiBCb3R0b20gb2YgaW50XG4gIGxldCBzb3J0IGNtcCBhID1cbiAgICBsZXQgbWF4c29uIGwgaSA9XG4gICAgICBsZXQgaTMxID0gaStpK2krMSBpblxuICAgICAgbGV0IHggPSByZWYgaTMxIGluXG4gICAgICBpZiBpMzErMiA8IGwgdGhlbiBiZWdpblxuICAgICAgICBpZiBjbXAgKGdldCBhIGkzMSkgKGdldCBhIChpMzErMSkpIDwgMCB0aGVuIHggOj0gaTMxKzE7XG4gICAgICAgIGlmIGNtcCAoZ2V0IGEgIXgpIChnZXQgYSAoaTMxKzIpKSA8IDAgdGhlbiB4IDo9IGkzMSsyO1xuICAgICAgICAheFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgaWYgaTMxKzEgPCBsICYmIGNtcCAoZ2V0IGEgaTMxKSAoZ2V0IGEgKGkzMSsxKSkgPCAwXG4gICAgICAgIHRoZW4gaTMxKzFcbiAgICAgICAgZWxzZSBpZiBpMzEgPCBsIHRoZW4gaTMxIGVsc2UgcmFpc2UgKEJvdHRvbSBpKVxuICAgIGluXG4gICAgbGV0IHJlYyB0cmlja2xlZG93biBsIGkgZSA9XG4gICAgICBsZXQgaiA9IG1heHNvbiBsIGkgaW5cbiAgICAgIGlmIGNtcCAoZ2V0IGEgaikgZSA+IDAgdGhlbiBiZWdpblxuICAgICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgICAgdHJpY2tsZWRvd24gbCBqIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgdHJpY2tsZSBsIGkgZSA9IHRyeSB0cmlja2xlZG93biBsIGkgZSB3aXRoIEJvdHRvbSBpIC0+IHNldCBhIGkgZSBpblxuICAgIGxldCByZWMgYnViYmxlZG93biBsIGkgPVxuICAgICAgbGV0IGogPSBtYXhzb24gbCBpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSBqKTtcbiAgICAgIGJ1YmJsZWRvd24gbCBqXG4gICAgaW5cbiAgICBsZXQgYnViYmxlIGwgaSA9IHRyeSBidWJibGVkb3duIGwgaSB3aXRoIEJvdHRvbSBpIC0+IGkgaW5cbiAgICBsZXQgcmVjIHRyaWNrbGV1cCBpIGUgPVxuICAgICAgbGV0IGZhdGhlciA9IChpIC0gMSkgLyAzIGluXG4gICAgICBhc3NlcnQgKGkgPD4gZmF0aGVyKTtcbiAgICAgIGlmIGNtcCAoZ2V0IGEgZmF0aGVyKSBlIDwgMCB0aGVuIGJlZ2luXG4gICAgICAgIHNldCBhIGkgKGdldCBhIGZhdGhlcik7XG4gICAgICAgIGlmIGZhdGhlciA+IDAgdGhlbiB0cmlja2xldXAgZmF0aGVyIGUgZWxzZSBzZXQgYSAwIGU7XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBzZXQgYSBpIGU7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsZXQgbCA9IGxlbmd0aCBhIGluXG4gICAgZm9yIGkgPSAobCArIDEpIC8gMyAtIDEgZG93bnRvIDAgZG8gdHJpY2tsZSBsIGkgKGdldCBhIGkpOyBkb25lO1xuICAgIGZvciBpID0gbCAtIDEgZG93bnRvIDIgZG9cbiAgICAgIGxldCBlID0gKGdldCBhIGkpIGluXG4gICAgICBzZXQgYSBpIChnZXQgYSAwKTtcbiAgICAgIHRyaWNrbGV1cCAoYnViYmxlIGkgMCkgZTtcbiAgICBkb25lO1xuICAgIGlmIGwgPiAxIHRoZW4gKGxldCBlID0gKGdldCBhIDEpIGluIHNldCBhIDEgKGdldCBhIDApOyBzZXQgYSAwIGUpXG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sLCBleGNlcHQgZm9yIHRoZSBjYWxsIHRvIFtjcmVhdGVdICopXG4gIGxldCBjdXRvZmYgPSA1XG4gIGxldCBzdGFibGVfc29ydCBjbXAgYSA9XG4gICAgbGV0IG1lcmdlIHNyYzFvZnMgc3JjMWxlbiBzcmMyIHNyYzJvZnMgc3JjMmxlbiBkc3QgZHN0b2ZzID1cbiAgICAgIGxldCBzcmMxciA9IHNyYzFvZnMgKyBzcmMxbGVuIGFuZCBzcmMyciA9IHNyYzJvZnMgKyBzcmMybGVuIGluXG4gICAgICBsZXQgcmVjIGxvb3AgaTEgczEgaTIgczIgZCA9XG4gICAgICAgIGlmIGNtcCBzMSBzMiA8PSAwIHRoZW4gYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczE7XG4gICAgICAgICAgbGV0IGkxID0gaTEgKyAxIGluXG4gICAgICAgICAgaWYgaTEgPCBzcmMxciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIChnZXQgYSBpMSkgaTIgczIgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgc3JjMiBpMiBkc3QgKGQgKyAxKSAoc3JjMnIgLSBpMilcbiAgICAgICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBzZXQgZHN0IGQgczI7XG4gICAgICAgICAgbGV0IGkyID0gaTIgKyAxIGluXG4gICAgICAgICAgaWYgaTIgPCBzcmMyciB0aGVuXG4gICAgICAgICAgICBsb29wIGkxIHMxIGkyIChnZXQgc3JjMiBpMikgKGQgKyAxKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJsaXQgYSBpMSBkc3QgKGQgKyAxKSAoc3JjMXIgLSBpMSlcbiAgICAgICAgZW5kXG4gICAgICBpbiBsb29wIHNyYzFvZnMgKGdldCBhIHNyYzFvZnMpIHNyYzJvZnMgKGdldCBzcmMyIHNyYzJvZnMpIGRzdG9mcztcbiAgICBpblxuICAgIGxldCBpc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBsZXQgZSA9IChnZXQgYSAoc3Jjb2ZzICsgaSkpIGluXG4gICAgICAgIGxldCBqID0gcmVmIChkc3RvZnMgKyBpIC0gMSkgaW5cbiAgICAgICAgd2hpbGUgKCFqID49IGRzdG9mcyAmJiBjbXAgKGdldCBkc3QgIWopIGUgPiAwKSBkb1xuICAgICAgICAgIHNldCBkc3QgKCFqICsgMSkgKGdldCBkc3QgIWopO1xuICAgICAgICAgIGRlY3IgajtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0IGRzdCAoIWogKyAxKSBlO1xuICAgICAgZG9uZTtcbiAgICBpblxuICAgIGxldCByZWMgc29ydHRvIHNyY29mcyBkc3QgZHN0b2ZzIGxlbiA9XG4gICAgICBpZiBsZW4gPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byBzcmNvZnMgZHN0IGRzdG9mcyBsZW4gZWxzZSBiZWdpblxuICAgICAgICBsZXQgbDEgPSBsZW4gLyAyIGluXG4gICAgICAgIGxldCBsMiA9IGxlbiAtIGwxIGluXG4gICAgICAgIHNvcnR0byAoc3Jjb2ZzICsgbDEpIGRzdCAoZHN0b2ZzICsgbDEpIGwyO1xuICAgICAgICBzb3J0dG8gc3Jjb2ZzIGEgKHNyY29mcyArIGwyKSBsMTtcbiAgICAgICAgbWVyZ2UgKHNyY29mcyArIGwyKSBsMSBkc3QgKGRzdG9mcyArIGwxKSBsMiBkc3QgZHN0b2ZzO1xuICAgICAgZW5kO1xuICAgIGluXG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPD0gY3V0b2ZmIHRoZW4gaXNvcnR0byAwIGEgMCBsIGVsc2UgYmVnaW5cbiAgICAgIGxldCBsMSA9IGwgLyAyIGluXG4gICAgICBsZXQgbDIgPSBsIC0gbDEgaW5cbiAgICAgIGxldCB0ID0gY3JlYXRlIGwyIGluXG4gICAgICBzb3J0dG8gbDEgdCAwIGwyO1xuICAgICAgc29ydHRvIDAgYSBsMiBsMTtcbiAgICAgIG1lcmdlIGwyIGwxIHQgMCBsMiBhIDA7XG4gICAgZW5kXG5cbiAgbGV0IGZhc3Rfc29ydCA9IHN0YWJsZV9zb3J0XG5cbiAgKCogZHVwbGljYXRlZCBmcm9tIGFycmF5Lm1sICopXG4gIGxldCB0b19zZXEgYSA9XG4gICAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgICBpZiBpIDwgbGVuZ3RoIGFcbiAgICAgIHRoZW5cbiAgICAgICAgbGV0IHggPSB1bnNhZmVfZ2V0IGEgaSBpblxuICAgICAgICBTZXEuQ29ucyAoeCwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIGR1cGxpY2F0ZWQgZnJvbSBhcnJheS5tbCAqKVxuICBsZXQgdG9fc2VxaSBhID1cbiAgICBsZXQgcmVjIGF1eCBpICgpID1cbiAgICAgIGlmIGkgPCBsZW5ndGggYVxuICAgICAgdGhlblxuICAgICAgICBsZXQgeCA9IHVuc2FmZV9nZXQgYSBpIGluXG4gICAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICAgICAgZWxzZSBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggMFxuXG4gICgqIG1vc3RseSBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3Jldl9saXN0IGwgPVxuICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgbGV0IGEgPSBjcmVhdGUgbGVuIGluXG4gICAgbGV0IHJlYyBmaWxsIGkgPSBmdW5jdGlvblxuICAgICAgICBbXSAtPiBhXG4gICAgICB8IGhkOjp0bCAtPiB1bnNhZmVfc2V0IGEgaSBoZDsgZmlsbCAoaS0xKSB0bFxuICAgIGluXG4gICAgZmlsbCAobGVuLTEpIGxcblxuICAoKiBkdXBsaWNhdGVkIGZyb20gYXJyYXkubWwgKilcbiAgbGV0IG9mX3NlcSBpID1cbiAgICBsZXQgbCA9IFNlcS5mb2xkX2xlZnQgKGZ1biBhY2MgeCAtPiB4OjphY2MpIFtdIGkgaW5cbiAgICBvZl9yZXZfbGlzdCBsXG5cblxuICBsZXQgbWFwX3RvX2FycmF5IGYgYSA9XG4gICAgbGV0IGwgPSBsZW5ndGggYSBpblxuICAgIGlmIGwgPSAwIHRoZW4gW3wgfF0gZWxzZSBiZWdpblxuICAgICAgbGV0IHIgPSBBcnJheS5tYWtlIGwgKGYgKHVuc2FmZV9nZXQgYSAwKSkgaW5cbiAgICAgIGZvciBpID0gMSB0byBsIC0gMSBkb1xuICAgICAgICBBcnJheS51bnNhZmVfc2V0IHIgaSAoZiAodW5zYWZlX2dldCBhIGkpKVxuICAgICAgZG9uZTtcbiAgICAgIHJcbiAgICBlbmRcblxuICBsZXQgbWFwX2Zyb21fYXJyYXkgZiBhID1cbiAgICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHIgPSBjcmVhdGUgbCBpblxuICAgIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgICAgdW5zYWZlX3NldCByIGkgKGYgKEFycmF5LnVuc2FmZV9nZXQgYSBpKSlcbiAgICBkb25lO1xuICAgIHJcblxuZW5kXG5cbm1vZHVsZSBBcnJheUxhYmVscyA9IEFycmF5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50MzJdOiAzMi1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50MzIgLT4gaW50MzIgLT4gaW50MzIgPSBcIiVpbnQzMl9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQzMiAtPiBpbnQzMiAtPiBpbnQzMiA9IFwiJWludDMyX29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDMyIC0+IGludDMyIC0+IGludDMyID0gXCIlaW50MzJfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQzMiAtPiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDMyIC0+IGludCAtPiBpbnQzMiA9IFwiJWludDMyX2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50MzIgPSBcIiVpbnQzMl9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50MzIgLT4gaW50ID0gXCIlaW50MzJfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50MzJcbiAgPSBcImNhbWxfaW50MzJfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDMyIC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDMyX3RvX2Zsb2F0XCIgXCJjYW1sX2ludDMyX3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgYml0c19vZl9mbG9hdCA6IGZsb2F0IC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX2JpdHNfb2ZfZmxvYXRcIiBcImNhbWxfaW50MzJfYml0c19vZl9mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIGZsb2F0X29mX2JpdHMgOiBpbnQzMiAtPiBmbG9hdFxuICA9IFwiY2FtbF9pbnQzMl9mbG9hdF9vZl9iaXRzXCIgXCJjYW1sX2ludDMyX2Zsb2F0X29mX2JpdHNfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5cbmxldCB6ZXJvID0gMGxcbmxldCBvbmUgPSAxbFxubGV0IG1pbnVzX29uZSA9IC0xbFxubGV0IHN1Y2MgbiA9IGFkZCBuIDFsXG5sZXQgcHJlZCBuID0gc3ViIG4gMWxcbmxldCBhYnMgbiA9IGlmIG4gPj0gMGwgdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBtaW5faW50ID0gMHg4MDAwMDAwMGxcbmxldCBtYXhfaW50ID0gMHg3RkZGRkZGRmxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMWwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgfCAzMiAtPlxuICAgICAgbGV0IG1heF9pbnQgPSBvZl9pbnQgU3RkbGliLm1heF9pbnQgaW5cbiAgICAgIGZ1biBuIC0+XG4gICAgICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICAgICAgU29tZSAodG9faW50IG4pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gIHwgNjQgLT5cbiAgICAgICgqIFNvIHRoYXQgaXQgY29tcGlsZXMgaW4gMzItYml0ICopXG4gICAgICBsZXQgbWFzayA9IDB4RkZGRiBsc2wgMTYgbG9yIDB4RkZGRiBpblxuICAgICAgZnVuIG4gLT4gU29tZSAodG9faW50IG4gbGFuZCBtYXNrKVxuICB8IF8gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG5leHRlcm5hbCBmb3JtYXQgOiBzdHJpbmcgLT4gaW50MzIgLT4gc3RyaW5nID0gXCJjYW1sX2ludDMyX2Zvcm1hdFwiXG5sZXQgdG9fc3RyaW5nIG4gPSBmb3JtYXQgXCIlZFwiIG5cblxuZXh0ZXJuYWwgb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmxldCBvZl9zdHJpbmdfb3B0IHMgPVxuICAoKiBUT0RPOiBleHBvc2UgYSBub24tcmFpc2luZyBwcmltaXRpdmUgZGlyZWN0bHkuICopXG4gIHRyeSBTb21lIChvZl9zdHJpbmcgcylcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG50eXBlIHQgPSBpbnQzMlxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbSW50NjRdOiA2NC1iaXQgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnIDogaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9uZWdcIlxuZXh0ZXJuYWwgYWRkIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hZGRcIlxuZXh0ZXJuYWwgc3ViIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9zdWJcIlxuZXh0ZXJuYWwgbXVsIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tdWxcIlxuZXh0ZXJuYWwgZGl2IDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9kaXZcIlxuZXh0ZXJuYWwgcmVtIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9tb2RcIlxuZXh0ZXJuYWwgbG9nYW5kIDogaW50NjQgLT4gaW50NjQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hbmRcIlxuZXh0ZXJuYWwgbG9nb3IgOiBpbnQ2NCAtPiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWludDY0X29yXCJcbmV4dGVybmFsIGxvZ3hvciA6IGludDY0IC0+IGludDY0IC0+IGludDY0ID0gXCIlaW50NjRfeG9yXCJcbmV4dGVybmFsIHNoaWZ0X2xlZnQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9sc2xcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHQgOiBpbnQ2NCAtPiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbCA6IGludDY0IC0+IGludCAtPiBpbnQ2NCA9IFwiJWludDY0X2xzclwiXG5leHRlcm5hbCBvZl9pbnQgOiBpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50IDogaW50NjQgLT4gaW50ID0gXCIlaW50NjRfdG9faW50XCJcbmV4dGVybmFsIG9mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfb2ZfZmxvYXRcIiBcImNhbWxfaW50NjRfb2ZfZmxvYXRfdW5ib3hlZFwiXG4gIFtAQHVuYm94ZWRdIFtAQG5vYWxsb2NdXG5leHRlcm5hbCB0b19mbG9hdCA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X3RvX2Zsb2F0XCIgXCJjYW1sX2ludDY0X3RvX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiBpbnQ2NCA9IFwiJWludDY0X29mX2ludDMyXCJcbmV4dGVybmFsIHRvX2ludDMyIDogaW50NjQgLT4gaW50MzIgPSBcIiVpbnQ2NF90b19pbnQzMlwiXG5leHRlcm5hbCBvZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gaW50NjQgPSBcIiVpbnQ2NF9vZl9uYXRpdmVpbnRcIlxuZXh0ZXJuYWwgdG9fbmF0aXZlaW50IDogaW50NjQgLT4gbmF0aXZlaW50ID0gXCIlaW50NjRfdG9fbmF0aXZlaW50XCJcblxubGV0IHplcm8gPSAwTFxubGV0IG9uZSA9IDFMXG5sZXQgbWludXNfb25lID0gLTFMXG5sZXQgc3VjYyBuID0gYWRkIG4gMUxcbmxldCBwcmVkIG4gPSBzdWIgbiAxTFxubGV0IGFicyBuID0gaWYgbiA+PSAwTCB0aGVuIG4gZWxzZSBuZWcgblxubGV0IG1pbl9pbnQgPSAweDgwMDAwMDAwMDAwMDAwMDBMXG5sZXQgbWF4X2ludCA9IDB4N0ZGRkZGRkZGRkZGRkZGRkxcbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMUwpXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBpbnQ2NCAtPiBzdHJpbmcgPSBcImNhbWxfaW50NjRfZm9ybWF0XCJcbmxldCB0b19zdHJpbmcgbiA9IGZvcm1hdCBcIiVkXCIgblxuXG5leHRlcm5hbCBvZl9zdHJpbmcgOiBzdHJpbmcgLT4gaW50NjQgPSBcImNhbWxfaW50NjRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cblxuXG5leHRlcm5hbCBiaXRzX29mX2Zsb2F0IDogZmxvYXQgLT4gaW50NjRcbiAgPSBcImNhbWxfaW50NjRfYml0c19vZl9mbG9hdFwiIFwiY2FtbF9pbnQ2NF9iaXRzX29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgZmxvYXRfb2ZfYml0cyA6IGludDY0IC0+IGZsb2F0XG4gID0gXCJjYW1sX2ludDY0X2Zsb2F0X29mX2JpdHNcIiBcImNhbWxfaW50NjRfZmxvYXRfb2ZfYml0c191bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cblxudHlwZSB0ID0gaW50NjRcblxubGV0IGNvbXBhcmUgKHg6IHQpICh5OiB0KSA9IFN0ZGxpYi5jb21wYXJlIHggeVxubGV0IGVxdWFsICh4OiB0KSAoeTogdCkgPSBjb21wYXJlIHggeSA9IDBcblxubGV0IHVuc2lnbmVkX2NvbXBhcmUgbiBtID1cbiAgY29tcGFyZSAoc3ViIG4gbWluX2ludCkgKHN1YiBtIG1pbl9pbnQpXG5cbmxldCBtaW4geCB5IDogdCA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5sZXQgbWF4IHggeSA6IHQgPSBpZiB4ID49IHkgdGhlbiB4IGVsc2UgeVxuXG4oKiBVbnNpZ25lZCBkaXZpc2lvbiBmcm9tIHNpZ25lZCBkaXZpc2lvbiBvZiB0aGUgc2FtZVxuICAgYml0bmVzcy4gU2VlIFdhcnJlbiBKci4sIEhlbnJ5IFMuICgyMDEzKS4gSGFja2VyJ3MgRGVsaWdodCAoMiBlZC4pLCBTZWMgOS0zLlxuKilcbmxldCB1bnNpZ25lZF9kaXYgbiBkID1cbiAgaWYgZCA8IHplcm8gdGhlblxuICAgIGlmIHVuc2lnbmVkX2NvbXBhcmUgbiBkIDwgMCB0aGVuIHplcm8gZWxzZSBvbmVcbiAgZWxzZVxuICAgIGxldCBxID0gc2hpZnRfbGVmdCAoZGl2IChzaGlmdF9yaWdodF9sb2dpY2FsIG4gMSkgZCkgMSBpblxuICAgIGxldCByID0gc3ViIG4gKG11bCBxIGQpIGluXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSByIGQgPj0gMCB0aGVuIHN1Y2MgcSBlbHNlIHFcblxubGV0IHVuc2lnbmVkX3JlbSBuIGQgPVxuICBzdWIgbiAobXVsICh1bnNpZ25lZF9kaXYgbiBkKSBkKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNb2R1bGUgW05hdGl2ZWludF06IHByb2Nlc3Nvci1uYXRpdmUgaW50ZWdlcnMgKilcblxuZXh0ZXJuYWwgbmVnOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X25lZ1wiXG5leHRlcm5hbCBhZGQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FkZFwiXG5leHRlcm5hbCBzdWI6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X3N1YlwiXG5leHRlcm5hbCBtdWw6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X211bFwiXG5leHRlcm5hbCBkaXY6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2RpdlwiXG5leHRlcm5hbCByZW06IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X21vZFwiXG5leHRlcm5hbCBsb2dhbmQ6IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50ID0gXCIlbmF0aXZlaW50X2FuZFwiXG5leHRlcm5hbCBsb2dvcjogbmF0aXZlaW50IC0+IG5hdGl2ZWludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb3JcIlxuZXh0ZXJuYWwgbG9neG9yOiBuYXRpdmVpbnQgLT4gbmF0aXZlaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF94b3JcIlxuZXh0ZXJuYWwgc2hpZnRfbGVmdDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNsXCJcbmV4dGVybmFsIHNoaWZ0X3JpZ2h0OiBuYXRpdmVpbnQgLT4gaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9hc3JcIlxuZXh0ZXJuYWwgc2hpZnRfcmlnaHRfbG9naWNhbDogbmF0aXZlaW50IC0+IGludCAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfbHNyXCJcbmV4dGVybmFsIG9mX2ludDogaW50IC0+IG5hdGl2ZWludCA9IFwiJW5hdGl2ZWludF9vZl9pbnRcIlxuZXh0ZXJuYWwgdG9faW50OiBuYXRpdmVpbnQgLT4gaW50ID0gXCIlbmF0aXZlaW50X3RvX2ludFwiXG5leHRlcm5hbCBvZl9mbG9hdCA6IGZsb2F0IC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2ZfZmxvYXRcIiBcImNhbWxfbmF0aXZlaW50X29mX2Zsb2F0X3VuYm94ZWRcIlxuICBbQEB1bmJveGVkXSBbQEBub2FsbG9jXVxuZXh0ZXJuYWwgdG9fZmxvYXQgOiBuYXRpdmVpbnQgLT4gZmxvYXRcbiAgPSBcImNhbWxfbmF0aXZlaW50X3RvX2Zsb2F0XCIgXCJjYW1sX25hdGl2ZWludF90b19mbG9hdF91bmJveGVkXCJcbiAgW0BAdW5ib3hlZF0gW0BAbm9hbGxvY11cbmV4dGVybmFsIG9mX2ludDMyOiBpbnQzMiAtPiBuYXRpdmVpbnQgPSBcIiVuYXRpdmVpbnRfb2ZfaW50MzJcIlxuZXh0ZXJuYWwgdG9faW50MzI6IG5hdGl2ZWludCAtPiBpbnQzMiA9IFwiJW5hdGl2ZWludF90b19pbnQzMlwiXG5cbmxldCB6ZXJvID0gMG5cbmxldCBvbmUgPSAxblxubGV0IG1pbnVzX29uZSA9IC0xblxubGV0IHN1Y2MgbiA9IGFkZCBuIDFuXG5sZXQgcHJlZCBuID0gc3ViIG4gMW5cbmxldCBhYnMgbiA9IGlmIG4gPj0gMG4gdGhlbiBuIGVsc2UgbmVnIG5cbmxldCBzaXplID0gU3lzLndvcmRfc2l6ZVxubGV0IG1pbl9pbnQgPSBzaGlmdF9sZWZ0IDFuIChzaXplIC0gMSlcbmxldCBtYXhfaW50ID0gc3ViIG1pbl9pbnQgMW5cbmxldCBsb2dub3QgbiA9IGxvZ3hvciBuICgtMW4pXG5cbmxldCB1bnNpZ25lZF90b19pbnQgPVxuICBsZXQgbWF4X2ludCA9IG9mX2ludCBTdGRsaWIubWF4X2ludCBpblxuICBmdW4gbiAtPlxuICAgIGlmIGNvbXBhcmUgemVybyBuIDw9IDAgJiYgY29tcGFyZSBuIG1heF9pbnQgPD0gMCB0aGVuXG4gICAgICBTb21lICh0b19pbnQgbilcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmV4dGVybmFsIGZvcm1hdCA6IHN0cmluZyAtPiBuYXRpdmVpbnQgLT4gc3RyaW5nID0gXCJjYW1sX25hdGl2ZWludF9mb3JtYXRcIlxubGV0IHRvX3N0cmluZyBuID0gZm9ybWF0IFwiJWRcIiBuXG5cbmV4dGVybmFsIG9mX3N0cmluZzogc3RyaW5nIC0+IG5hdGl2ZWludCA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxubGV0IG9mX3N0cmluZ19vcHQgcyA9XG4gICgqIFRPRE86IGV4cG9zZSBhIG5vbi1yYWlzaW5nIHByaW1pdGl2ZSBkaXJlY3RseS4gKilcbiAgdHJ5IFNvbWUgKG9mX3N0cmluZyBzKVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbnR5cGUgdCA9IG5hdGl2ZWludFxuXG5sZXQgY29tcGFyZSAoeDogdCkgKHk6IHQpID0gU3RkbGliLmNvbXBhcmUgeCB5XG5sZXQgZXF1YWwgKHg6IHQpICh5OiB0KSA9IGNvbXBhcmUgeCB5ID0gMFxuXG5sZXQgdW5zaWduZWRfY29tcGFyZSBuIG0gPVxuICBjb21wYXJlIChzdWIgbiBtaW5faW50KSAoc3ViIG0gbWluX2ludClcblxubGV0IG1pbiB4IHkgOiB0ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmxldCBtYXggeCB5IDogdCA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbigqIFVuc2lnbmVkIGRpdmlzaW9uIGZyb20gc2lnbmVkIGRpdmlzaW9uIG9mIHRoZSBzYW1lXG4gICBiaXRuZXNzLiBTZWUgV2FycmVuIEpyLiwgSGVucnkgUy4gKDIwMTMpLiBIYWNrZXIncyBEZWxpZ2h0ICgyIGVkLiksIFNlYyA5LTMuXG4qKVxubGV0IHVuc2lnbmVkX2RpdiBuIGQgPVxuICBpZiBkIDwgemVybyB0aGVuXG4gICAgaWYgdW5zaWduZWRfY29tcGFyZSBuIGQgPCAwIHRoZW4gemVybyBlbHNlIG9uZVxuICBlbHNlXG4gICAgbGV0IHEgPSBzaGlmdF9sZWZ0IChkaXYgKHNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxKSBkKSAxIGluXG4gICAgbGV0IHIgPSBzdWIgbiAobXVsIHEgZCkgaW5cbiAgICBpZiB1bnNpZ25lZF9jb21wYXJlIHIgZCA+PSAwIHRoZW4gc3VjYyBxIGVsc2UgcVxuXG5sZXQgdW5zaWduZWRfcmVtIG4gZCA9XG4gIHN1YiBuIChtdWwgKHVuc2lnbmVkX2RpdiBuIGQpIGQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIFRoZSBydW4tdGltZSBsaWJyYXJ5IGZvciBsZXhlcnMgZ2VuZXJhdGVkIGJ5IGNhbWxsZXggKilcblxudHlwZSBwb3NpdGlvbiA9IHtcbiAgcG9zX2ZuYW1lIDogc3RyaW5nO1xuICBwb3NfbG51bSA6IGludDtcbiAgcG9zX2JvbCA6IGludDtcbiAgcG9zX2NudW0gOiBpbnQ7XG59XG5cbmxldCBkdW1teV9wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMDtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gLTE7XG59XG5cbnR5cGUgbGV4YnVmID1cbiAgeyByZWZpbGxfYnVmZiA6IGxleGJ1ZiAtPiB1bml0O1xuICAgIG11dGFibGUgbGV4X2J1ZmZlciA6IGJ5dGVzO1xuICAgIG11dGFibGUgbGV4X2J1ZmZlcl9sZW4gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfYWJzX3BvcyA6IGludDtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9wb3MgOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfbGFzdF9hY3Rpb24gOiBpbnQ7XG4gICAgbXV0YWJsZSBsZXhfZW9mX3JlYWNoZWQgOiBib29sO1xuICAgIG11dGFibGUgbGV4X21lbSA6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGxleF9zdGFydF9wIDogcG9zaXRpb247XG4gICAgbXV0YWJsZSBsZXhfY3Vycl9wIDogcG9zaXRpb247XG4gIH1cblxudHlwZSBsZXhfdGFibGVzID1cbiAgeyBsZXhfYmFzZTogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHQ6IHN0cmluZztcbiAgICBsZXhfdHJhbnM6IHN0cmluZztcbiAgICBsZXhfY2hlY2s6IHN0cmluZztcbiAgICBsZXhfYmFzZV9jb2RlIDogc3RyaW5nO1xuICAgIGxleF9iYWNrdHJrX2NvZGUgOiBzdHJpbmc7XG4gICAgbGV4X2RlZmF1bHRfY29kZSA6IHN0cmluZztcbiAgICBsZXhfdHJhbnNfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY2hlY2tfY29kZSA6IHN0cmluZztcbiAgICBsZXhfY29kZTogc3RyaW5nO31cblxuZXh0ZXJuYWwgY19lbmdpbmUgOiBsZXhfdGFibGVzIC0+IGludCAtPiBsZXhidWYgLT4gaW50ID0gXCJjYW1sX2xleF9lbmdpbmVcIlxuZXh0ZXJuYWwgY19uZXdfZW5naW5lIDogbGV4X3RhYmxlcyAtPiBpbnQgLT4gbGV4YnVmIC0+IGludFxuICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX25ld19sZXhfZW5naW5lXCJcblxubGV0IGVuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgaWYgcmVzdWx0ID49IDAgJiYgYnVmLmxleF9jdXJyX3AgIT0gZHVtbXlfcG9zIHRoZW4gYmVnaW5cbiAgICBidWYubGV4X3N0YXJ0X3AgPC0gYnVmLmxleF9jdXJyX3A7XG4gICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgIHdpdGggcG9zX2NudW0gPSBidWYubGV4X2Fic19wb3MgKyBidWYubGV4X2N1cnJfcG9zfTtcbiAgZW5kO1xuICByZXN1bHRcblxuXG5sZXQgbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmID1cbiAgbGV0IHJlc3VsdCA9IGNfbmV3X2VuZ2luZSB0Ymwgc3RhdGUgYnVmIGluXG4gIGlmIHJlc3VsdCA+PSAwICYmIGJ1Zi5sZXhfY3Vycl9wICE9IGR1bW15X3BvcyB0aGVuIGJlZ2luXG4gICAgYnVmLmxleF9zdGFydF9wIDwtIGJ1Zi5sZXhfY3Vycl9wO1xuICAgIGJ1Zi5sZXhfY3Vycl9wIDwtIHtidWYubGV4X2N1cnJfcFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gIGVuZDtcbiAgcmVzdWx0XG5cbmxldCBsZXhfcmVmaWxsIHJlYWRfZnVuIGF1eF9idWZmZXIgbGV4YnVmID1cbiAgbGV0IHJlYWQgPVxuICAgIHJlYWRfZnVuIGF1eF9idWZmZXIgKEJ5dGVzLmxlbmd0aCBhdXhfYnVmZmVyKSBpblxuICBsZXQgbiA9XG4gICAgaWYgcmVhZCA+IDBcbiAgICB0aGVuIHJlYWRcbiAgICBlbHNlIChsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWU7IDApIGluXG4gICgqIEN1cnJlbnQgc3RhdGUgb2YgdGhlIGJ1ZmZlcjpcbiAgICAgICAgPC0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tPlxuICAgICAgICB8ICBqdW5rIHwgICAgICB2YWxpZCBkYXRhICAgICB8ICAganVuayAgICB8XG4gICAgICAgIF4gICAgICAgXiAgICAgICAgICAgICAgICAgICAgIF4gICAgICAgICAgIF5cbiAgICAgICAgMCAgICBzdGFydF9wb3MgICAgICAgICAgICAgYnVmZmVyX2VuZCAgICBCeXRlcy5sZW5ndGggYnVmZmVyXG4gICopXG4gIGlmIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiArIG4gPiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIgdGhlbiBiZWdpblxuICAgICgqIFRoZXJlIGlzIG5vdCBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuXG4gICAgICAgPD0gQnl0ZXMubGVuZ3RoIGxleGJ1Zi5sZXhfYnVmZmVyXG4gICAgdGhlbiBiZWdpblxuICAgICAgKCogQnV0IHRoZXJlIGlzIGVub3VnaCBzcGFjZSBpZiB3ZSByZWNsYWltIHRoZSBqdW5rIGF0IHRoZSBiZWdpbm5pbmdcbiAgICAgICAgIG9mIHRoZSBidWZmZXIgKilcbiAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3NcbiAgICAgICAgICAgICAgICAgIGxleGJ1Zi5sZXhfYnVmZmVyIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3BvcylcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgKCogV2UgbXVzdCBncm93IHRoZSBidWZmZXIuICBEb3VibGluZyBpdHMgc2l6ZSB3aWxsIHByb3ZpZGUgZW5vdWdoXG4gICAgICAgICBzcGFjZSBzaW5jZSBuIDw9IFN0cmluZy5sZW5ndGggYXV4X2J1ZmZlciA8PSBTdHJpbmcubGVuZ3RoIGJ1ZmZlci5cbiAgICAgICAgIFdhdGNoIG91dCBmb3Igc3RyaW5nIGxlbmd0aCBvdmVyZmxvdywgdGhvdWdoLiAqKVxuICAgICAgbGV0IG5ld2xlbiA9XG4gICAgICAgIEludC5taW4gKDIgKiBCeXRlcy5sZW5ndGggbGV4YnVmLmxleF9idWZmZXIpIFN5cy5tYXhfc3RyaW5nX2xlbmd0aCBpblxuICAgICAgaWYgbGV4YnVmLmxleF9idWZmZXJfbGVuIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgKyBuID4gbmV3bGVuXG4gICAgICB0aGVuIGZhaWx3aXRoIFwiTGV4aW5nLmxleF9yZWZpbGw6IGNhbm5vdCBncm93IGJ1ZmZlclwiO1xuICAgICAgbGV0IG5ld2J1ZiA9IEJ5dGVzLmNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgICgqIENvcHkgdGhlIHZhbGlkIGRhdGEgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV3IGJ1ZmZlciAqKVxuICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3Bvc1xuICAgICAgICAgICAgICAgICAgbmV3YnVmIDBcbiAgICAgICAgICAgICAgICAgIChsZXhidWYubGV4X2J1ZmZlcl9sZW4gLSBsZXhidWYubGV4X3N0YXJ0X3Bvcyk7XG4gICAgICBsZXhidWYubGV4X2J1ZmZlciA8LSBuZXdidWZcbiAgICBlbmQ7XG4gICAgKCogUmVhbGxvY2F0aW9uIG9yIG5vdCwgd2UgaGF2ZSBzaGlmdGVkIHRoZSBkYXRhIGxlZnQgYnlcbiAgICAgICBzdGFydF9wb3MgY2hhcmFjdGVyczsgdXBkYXRlIHRoZSBwb3NpdGlvbnMgKilcbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIHM7XG4gICAgbGV4YnVmLmxleF9jdXJyX3BvcyA8LSBsZXhidWYubGV4X2N1cnJfcG9zIC0gcztcbiAgICBsZXhidWYubGV4X3N0YXJ0X3BvcyA8LSAwO1xuICAgIGxleGJ1Zi5sZXhfbGFzdF9wb3MgPC0gbGV4YnVmLmxleF9sYXN0X3BvcyAtIHM7XG4gICAgbGV4YnVmLmxleF9idWZmZXJfbGVuIDwtIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiAtIHMgO1xuICAgIGxldCB0ID0gbGV4YnVmLmxleF9tZW0gaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQtMSBkb1xuICAgICAgbGV0IHYgPSB0LihpKSBpblxuICAgICAgaWYgdiA+PSAwIHRoZW5cbiAgICAgICAgdC4oaSkgPC0gdi1zXG4gICAgZG9uZVxuICBlbmQ7XG4gICgqIFRoZXJlIGlzIG5vdyBlbm91Z2ggc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyICopXG4gIEJ5dGVzLmJsaXQgYXV4X2J1ZmZlciAwIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfYnVmZmVyX2xlbiBuO1xuICBsZXhidWYubGV4X2J1ZmZlcl9sZW4gPC0gbGV4YnVmLmxleF9idWZmZXJfbGVuICsgblxuXG5sZXQgemVyb19wb3MgPSB7XG4gIHBvc19mbmFtZSA9IFwiXCI7XG4gIHBvc19sbnVtID0gMTtcbiAgcG9zX2JvbCA9IDA7XG4gIHBvc19jbnVtID0gMDtcbn1cblxubGV0IGZyb21fZnVuY3Rpb24gPyh3aXRoX3Bvc2l0aW9ucyA9IHRydWUpIGYgPVxuICB7IHJlZmlsbF9idWZmID0gbGV4X3JlZmlsbCBmIChCeXRlcy5jcmVhdGUgNTEyKTtcbiAgICBsZXhfYnVmZmVyID0gQnl0ZXMuY3JlYXRlIDEwMjQ7XG4gICAgbGV4X2J1ZmZlcl9sZW4gPSAwO1xuICAgIGxleF9hYnNfcG9zID0gMDtcbiAgICBsZXhfc3RhcnRfcG9zID0gMDtcbiAgICBsZXhfY3Vycl9wb3MgPSAwO1xuICAgIGxleF9sYXN0X3BvcyA9IDA7XG4gICAgbGV4X2xhc3RfYWN0aW9uID0gMDtcbiAgICBsZXhfbWVtID0gW3x8XTtcbiAgICBsZXhfZW9mX3JlYWNoZWQgPSBmYWxzZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IGZyb21fY2hhbm5lbCA/d2l0aF9wb3NpdGlvbnMgaWMgPVxuICBmcm9tX2Z1bmN0aW9uID93aXRoX3Bvc2l0aW9ucyAoZnVuIGJ1ZiBuIC0+IGlucHV0IGljIGJ1ZiAwIG4pXG5cbmxldCBmcm9tX3N0cmluZyA/KHdpdGhfcG9zaXRpb25zID0gdHJ1ZSkgcyA9XG4gIHsgcmVmaWxsX2J1ZmYgPSAoZnVuIGxleGJ1ZiAtPiBsZXhidWYubGV4X2VvZl9yZWFjaGVkIDwtIHRydWUpO1xuICAgIGxleF9idWZmZXIgPSBCeXRlcy5vZl9zdHJpbmcgczsgKCogaGF2ZSB0byBtYWtlIGEgY29weSBmb3IgY29tcGF0aWJpbGl0eVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCB1bnNhZmUtc3RyaW5nIG1vZGUgKilcbiAgICBsZXhfYnVmZmVyX2xlbiA9IFN0cmluZy5sZW5ndGggcztcbiAgICBsZXhfYWJzX3BvcyA9IDA7XG4gICAgbGV4X3N0YXJ0X3BvcyA9IDA7XG4gICAgbGV4X2N1cnJfcG9zID0gMDtcbiAgICBsZXhfbGFzdF9wb3MgPSAwO1xuICAgIGxleF9sYXN0X2FjdGlvbiA9IDA7XG4gICAgbGV4X21lbSA9IFt8fF07XG4gICAgbGV4X2VvZl9yZWFjaGVkID0gdHJ1ZTtcbiAgICBsZXhfc3RhcnRfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gICAgbGV4X2N1cnJfcCA9IGlmIHdpdGhfcG9zaXRpb25zIHRoZW4gemVyb19wb3MgZWxzZSBkdW1teV9wb3M7XG4gIH1cblxubGV0IHNldF9wb3NpdGlvbiBsZXhidWYgcG9zaXRpb24gPVxuICBsZXhidWYubGV4X2N1cnJfcCAgPC0ge3Bvc2l0aW9uIHdpdGggcG9zX2ZuYW1lID0gbGV4YnVmLmxleF9jdXJyX3AucG9zX2ZuYW1lfTtcbiAgbGV4YnVmLmxleF9hYnNfcG9zIDwtIHBvc2l0aW9uLnBvc19jbnVtXG5cbmxldCBzZXRfZmlsZW5hbWUgbGV4YnVmIGZuYW1lID1cbiAgbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZm5hbWV9XG5cbmxldCB3aXRoX3Bvc2l0aW9ucyBsZXhidWYgPSBsZXhidWYubGV4X2N1cnJfcCAhPSBkdW1teV9wb3NcblxubGV0IGxleGVtZSBsZXhidWYgPVxuICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gIEJ5dGVzLnN1Yl9zdHJpbmcgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbmxldCBzdWJfbGV4ZW1lIGxleGJ1ZiBpMSBpMiA9XG4gIGxldCBsZW4gPSBpMi1pMSBpblxuICBCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGkxIGxlblxuXG5sZXQgc3ViX2xleGVtZV9vcHQgbGV4YnVmIGkxIGkyID1cbiAgaWYgaTEgPj0gMCB0aGVuIGJlZ2luXG4gICAgbGV0IGxlbiA9IGkyLWkxIGluXG4gICAgU29tZSAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBpMSBsZW4pXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgTm9uZVxuICBlbmRcblxubGV0IHN1Yl9sZXhlbWVfY2hhciBsZXhidWYgaSA9IEJ5dGVzLmdldCBsZXhidWYubGV4X2J1ZmZlciBpXG5cbmxldCBzdWJfbGV4ZW1lX2NoYXJfb3B0IGxleGJ1ZiBpID1cbiAgaWYgaSA+PSAwIHRoZW5cbiAgICBTb21lIChCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgaSlcbiAgZWxzZVxuICAgIE5vbmVcblxuXG5sZXQgbGV4ZW1lX2NoYXIgbGV4YnVmIGkgPVxuICBCeXRlcy5nZXQgbGV4YnVmLmxleF9idWZmZXIgKGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgaSlcblxubGV0IGxleGVtZV9zdGFydCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3AucG9zX2NudW1cbmxldCBsZXhlbWVfZW5kIGxleGJ1ZiA9IGxleGJ1Zi5sZXhfY3Vycl9wLnBvc19jbnVtXG5cbmxldCBsZXhlbWVfc3RhcnRfcCBsZXhidWYgPSBsZXhidWYubGV4X3N0YXJ0X3BcbmxldCBsZXhlbWVfZW5kX3AgbGV4YnVmID0gbGV4YnVmLmxleF9jdXJyX3BcblxubGV0IG5ld19saW5lIGxleGJ1ZiA9XG4gIGxldCBsY3AgPSBsZXhidWYubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsZXhidWYubGV4X2N1cnJfcCA8LVxuICAgICAgeyBsY3Agd2l0aFxuICAgICAgICBwb3NfbG51bSA9IGxjcC5wb3NfbG51bSArIDE7XG4gICAgICAgIHBvc19ib2wgPSBsY3AucG9zX2NudW07XG4gICAgICB9XG5cblxuXG4oKiBEaXNjYXJkIGRhdGEgbGVmdCBpbiBsZXhlciBidWZmZXIuICopXG5cbmxldCBmbHVzaF9pbnB1dCBsYiA9XG4gIGxiLmxleF9jdXJyX3BvcyA8LSAwO1xuICBsYi5sZXhfYWJzX3BvcyA8LSAwO1xuICBsZXQgbGNwID0gbGIubGV4X2N1cnJfcCBpblxuICBpZiBsY3AgIT0gZHVtbXlfcG9zIHRoZW5cbiAgICBsYi5sZXhfY3Vycl9wIDwtIHt6ZXJvX3BvcyB3aXRoIHBvc19mbmFtZSA9IGxjcC5wb3NfZm5hbWV9O1xuICBsYi5sZXhfYnVmZmVyX2xlbiA8LSAwO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBUaGUgcGFyc2luZyBlbmdpbmUgKilcblxub3BlbiBMZXhpbmdcblxuKCogSW50ZXJuYWwgaW50ZXJmYWNlIHRvIHRoZSBwYXJzaW5nIGVuZ2luZSAqKVxuXG50eXBlIHBhcnNlcl9lbnYgPVxuICB7IG11dGFibGUgc19zdGFjayA6IGludCBhcnJheTsgICAgICAgICgqIFN0YXRlcyAqKVxuICAgIG11dGFibGUgdl9zdGFjayA6IE9iai50IGFycmF5OyAgICAgICgqIFNlbWFudGljIGF0dHJpYnV0ZXMgKilcbiAgICBtdXRhYmxlIHN5bWJfc3RhcnRfc3RhY2sgOiBwb3NpdGlvbiBhcnJheTsgKCogU3RhcnQgcG9zaXRpb25zICopXG4gICAgbXV0YWJsZSBzeW1iX2VuZF9zdGFjayA6IHBvc2l0aW9uIGFycmF5OyAgICgqIEVuZCBwb3NpdGlvbnMgKilcbiAgICBtdXRhYmxlIHN0YWNrc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBTaXplIG9mIHRoZSBzdGFja3MgKilcbiAgICBtdXRhYmxlIHN0YWNrYmFzZSA6IGludDsgICAgICAgICAgICAoKiBCYXNlIHNwIGZvciBjdXJyZW50IHBhcnNlICopXG4gICAgbXV0YWJsZSBjdXJyX2NoYXIgOiBpbnQ7ICAgICAgICAgICAgKCogTGFzdCB0b2tlbiByZWFkICopXG4gICAgbXV0YWJsZSBsdmFsIDogT2JqLnQ7ICAgICAgICAgICAgICAgKCogSXRzIHNlbWFudGljIGF0dHJpYnV0ZSAqKVxuICAgIG11dGFibGUgc3ltYl9zdGFydCA6IHBvc2l0aW9uOyAgICAgICgqIFN0YXJ0IHBvcy4gb2YgdGhlIGN1cnJlbnQgc3ltYm9sKilcbiAgICBtdXRhYmxlIHN5bWJfZW5kIDogcG9zaXRpb247ICAgICAgICAoKiBFbmQgcG9zLiBvZiB0aGUgY3VycmVudCBzeW1ib2wgKilcbiAgICBtdXRhYmxlIGFzcCA6IGludDsgICAgICAgICAgICAgICAgICAoKiBUaGUgc3RhY2sgcG9pbnRlciBmb3IgYXR0cmlidXRlcyAqKVxuICAgIG11dGFibGUgcnVsZV9sZW4gOiBpbnQ7ICAgICAgICAgICAgICgqIE51bWJlciBvZiByaHMgaXRlbXMgaW4gdGhlIHJ1bGUgKilcbiAgICBtdXRhYmxlIHJ1bGVfbnVtYmVyIDogaW50OyAgICAgICAgICAoKiBSdWxlIG51bWJlciB0byByZWR1Y2UgYnkgKilcbiAgICBtdXRhYmxlIHNwIDogaW50OyAgICAgICAgICAgICAgICAgICAoKiBTYXZlZCBzcCBmb3IgcGFyc2VfZW5naW5lICopXG4gICAgbXV0YWJsZSBzdGF0ZSA6IGludDsgICAgICAgICAgICAgICAgKCogU2F2ZWQgc3RhdGUgZm9yIHBhcnNlX2VuZ2luZSAqKVxuICAgIG11dGFibGUgZXJyZmxhZyA6IGludCB9ICAgICAgICAgICAgICgqIFNhdmVkIGVycm9yIGZsYWcgZm9yIHBhcnNlX2VuZ2luZSAqKVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxudHlwZSBwYXJzZV90YWJsZXMgPVxuICB7IGFjdGlvbnMgOiAocGFyc2VyX2VudiAtPiBPYmoudCkgYXJyYXk7XG4gICAgdHJhbnNsX2NvbnN0IDogaW50IGFycmF5O1xuICAgIHRyYW5zbF9ibG9jayA6IGludCBhcnJheTtcbiAgICBsaHMgOiBzdHJpbmc7XG4gICAgbGVuIDogc3RyaW5nO1xuICAgIGRlZnJlZCA6IHN0cmluZztcbiAgICBkZ290byA6IHN0cmluZztcbiAgICBzaW5kZXggOiBzdHJpbmc7XG4gICAgcmluZGV4IDogc3RyaW5nO1xuICAgIGdpbmRleCA6IHN0cmluZztcbiAgICB0YWJsZXNpemUgOiBpbnQ7XG4gICAgdGFibGUgOiBzdHJpbmc7XG4gICAgY2hlY2sgOiBzdHJpbmc7XG4gICAgZXJyb3JfZnVuY3Rpb24gOiBzdHJpbmcgLT4gdW5pdDtcbiAgICBuYW1lc19jb25zdCA6IHN0cmluZztcbiAgICBuYW1lc19ibG9jayA6IHN0cmluZyB9XG5cbmV4Y2VwdGlvbiBZWWV4aXQgb2YgT2JqLnRcbmV4Y2VwdGlvbiBQYXJzZV9lcnJvclxuXG50eXBlIHBhcnNlcl9pbnB1dCA9XG4gICAgU3RhcnRcbiAgfCBUb2tlbl9yZWFkXG4gIHwgU3RhY2tzX2dyb3duXzFcbiAgfCBTdGFja3NfZ3Jvd25fMlxuICB8IFNlbWFudGljX2FjdGlvbl9jb21wdXRlZFxuICB8IEVycm9yX2RldGVjdGVkXG5cbnR5cGUgcGFyc2VyX291dHB1dCA9XG4gICAgUmVhZF90b2tlblxuICB8IFJhaXNlX3BhcnNlX2Vycm9yXG4gIHwgR3Jvd19zdGFja3NfMVxuICB8IEdyb3dfc3RhY2tzXzJcbiAgfCBDb21wdXRlX3NlbWFudGljX2FjdGlvblxuICB8IENhbGxfZXJyb3JfZnVuY3Rpb25cblxuKCogdG8gYXZvaWQgd2FybmluZ3MgKilcbmxldCBfID0gW1JlYWRfdG9rZW47IFJhaXNlX3BhcnNlX2Vycm9yOyBHcm93X3N0YWNrc18xOyBHcm93X3N0YWNrc18yO1xuICAgICAgICAgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb247IENhbGxfZXJyb3JfZnVuY3Rpb25dXG5cbmV4dGVybmFsIHBhcnNlX2VuZ2luZSA6XG4gICAgcGFyc2VfdGFibGVzIC0+IHBhcnNlcl9lbnYgLT4gcGFyc2VyX2lucHV0IC0+IE9iai50IC0+IHBhcnNlcl9vdXRwdXRcbiAgICA9IFwiY2FtbF9wYXJzZV9lbmdpbmVcIlxuXG5leHRlcm5hbCBzZXRfdHJhY2U6IGJvb2wgLT4gYm9vbFxuICAgID0gXCJjYW1sX3NldF9wYXJzZXJfdHJhY2VcIlxuXG5sZXQgZW52ID1cbiAgeyBzX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgMDtcbiAgICB2X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgKE9iai5yZXByICgpKTtcbiAgICBzeW1iX3N0YXJ0X3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN5bWJfZW5kX3N0YWNrID0gQXJyYXkubWFrZSAxMDAgZHVtbXlfcG9zO1xuICAgIHN0YWNrc2l6ZSA9IDEwMDtcbiAgICBzdGFja2Jhc2UgPSAwO1xuICAgIGN1cnJfY2hhciA9IDA7XG4gICAgbHZhbCA9IE9iai5yZXByICgpO1xuICAgIHN5bWJfc3RhcnQgPSBkdW1teV9wb3M7XG4gICAgc3ltYl9lbmQgPSBkdW1teV9wb3M7XG4gICAgYXNwID0gMDtcbiAgICBydWxlX2xlbiA9IDA7XG4gICAgcnVsZV9udW1iZXIgPSAwO1xuICAgIHNwID0gMDtcbiAgICBzdGF0ZSA9IDA7XG4gICAgZXJyZmxhZyA9IDAgfVxuXG5sZXQgZ3Jvd19zdGFja3MoKSA9XG4gIGxldCBvbGRzaXplID0gZW52LnN0YWNrc2l6ZSBpblxuICBsZXQgbmV3c2l6ZSA9IG9sZHNpemUgKiAyIGluXG4gIGxldCBuZXdfcyA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAwXG4gIGFuZCBuZXdfdiA9IEFycmF5Lm1ha2UgbmV3c2l6ZSAoT2JqLnJlcHIgKCkpXG4gIGFuZCBuZXdfc3RhcnQgPSBBcnJheS5tYWtlIG5ld3NpemUgZHVtbXlfcG9zXG4gIGFuZCBuZXdfZW5kID0gQXJyYXkubWFrZSBuZXdzaXplIGR1bW15X3BvcyBpblxuICAgIEFycmF5LmJsaXQgZW52LnNfc3RhY2sgMCBuZXdfcyAwIG9sZHNpemU7XG4gICAgZW52LnNfc3RhY2sgPC0gbmV3X3M7XG4gICAgQXJyYXkuYmxpdCBlbnYudl9zdGFjayAwIG5ld192IDAgb2xkc2l6ZTtcbiAgICBlbnYudl9zdGFjayA8LSBuZXdfdjtcbiAgICBBcnJheS5ibGl0IGVudi5zeW1iX3N0YXJ0X3N0YWNrIDAgbmV3X3N0YXJ0IDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9zdGFydF9zdGFjayA8LSBuZXdfc3RhcnQ7XG4gICAgQXJyYXkuYmxpdCBlbnYuc3ltYl9lbmRfc3RhY2sgMCBuZXdfZW5kIDAgb2xkc2l6ZTtcbiAgICBlbnYuc3ltYl9lbmRfc3RhY2sgPC0gbmV3X2VuZDtcbiAgICBlbnYuc3RhY2tzaXplIDwtIG5ld3NpemVcblxubGV0IGNsZWFyX3BhcnNlcigpID1cbiAgQXJyYXkuZmlsbCBlbnYudl9zdGFjayAwIGVudi5zdGFja3NpemUgKE9iai5yZXByICgpKTtcbiAgZW52Lmx2YWwgPC0gT2JqLnJlcHIgKClcblxubGV0IGN1cnJlbnRfbG9va2FoZWFkX2Z1biA9IHJlZiAoZnVuIChfIDogT2JqLnQpIC0+IGZhbHNlKVxuXG5sZXQgeXlwYXJzZSB0YWJsZXMgc3RhcnQgbGV4ZXIgbGV4YnVmID1cbiAgbGV0IHJlYyBsb29wIGNtZCBhcmcgPVxuICAgIG1hdGNoIHBhcnNlX2VuZ2luZSB0YWJsZXMgZW52IGNtZCBhcmcgd2l0aFxuICAgICAgUmVhZF90b2tlbiAtPlxuICAgICAgICBsZXQgdCA9IE9iai5yZXByKGxleGVyIGxleGJ1ZikgaW5cbiAgICAgICAgZW52LnN5bWJfc3RhcnQgPC0gbGV4YnVmLmxleF9zdGFydF9wO1xuICAgICAgICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gICAgICAgIGxvb3AgVG9rZW5fcmVhZCB0XG4gICAgfCBSYWlzZV9wYXJzZV9lcnJvciAtPlxuICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgIHwgQ29tcHV0ZV9zZW1hbnRpY19hY3Rpb24gLT5cbiAgICAgICAgbGV0IChhY3Rpb24sIHZhbHVlKSA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICAoU2VtYW50aWNfYWN0aW9uX2NvbXB1dGVkLCB0YWJsZXMuYWN0aW9ucy4oZW52LnJ1bGVfbnVtYmVyKSBlbnYpXG4gICAgICAgICAgd2l0aCBQYXJzZV9lcnJvciAtPlxuICAgICAgICAgICAgKEVycm9yX2RldGVjdGVkLCBPYmoucmVwciAoKSkgaW5cbiAgICAgICAgbG9vcCBhY3Rpb24gdmFsdWVcbiAgICB8IEdyb3dfc3RhY2tzXzEgLT5cbiAgICAgICAgZ3Jvd19zdGFja3MoKTsgbG9vcCBTdGFja3NfZ3Jvd25fMSAoT2JqLnJlcHIgKCkpXG4gICAgfCBHcm93X3N0YWNrc18yIC0+XG4gICAgICAgIGdyb3dfc3RhY2tzKCk7IGxvb3AgU3RhY2tzX2dyb3duXzIgKE9iai5yZXByICgpKVxuICAgIHwgQ2FsbF9lcnJvcl9mdW5jdGlvbiAtPlxuICAgICAgICB0YWJsZXMuZXJyb3JfZnVuY3Rpb24gXCJzeW50YXggZXJyb3JcIjtcbiAgICAgICAgbG9vcCBFcnJvcl9kZXRlY3RlZCAoT2JqLnJlcHIgKCkpIGluXG4gIGxldCBpbml0X2FzcCA9IGVudi5hc3BcbiAgYW5kIGluaXRfc3AgPSBlbnYuc3BcbiAgYW5kIGluaXRfc3RhY2tiYXNlID0gZW52LnN0YWNrYmFzZVxuICBhbmQgaW5pdF9zdGF0ZSA9IGVudi5zdGF0ZVxuICBhbmQgaW5pdF9jdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyXG4gIGFuZCBpbml0X2x2YWwgPSBlbnYubHZhbFxuICBhbmQgaW5pdF9lcnJmbGFnID0gZW52LmVycmZsYWcgaW5cbiAgZW52LnN0YWNrYmFzZSA8LSBlbnYuc3AgKyAxO1xuICBlbnYuY3Vycl9jaGFyIDwtIHN0YXJ0O1xuICBlbnYuc3ltYl9lbmQgPC0gbGV4YnVmLmxleF9jdXJyX3A7XG4gIHRyeVxuICAgIGxvb3AgU3RhcnQgKE9iai5yZXByICgpKVxuICB3aXRoIGV4biAtPlxuICAgIGxldCBjdXJyX2NoYXIgPSBlbnYuY3Vycl9jaGFyIGluXG4gICAgZW52LmFzcCA8LSBpbml0X2FzcDtcbiAgICBlbnYuc3AgPC0gaW5pdF9zcDtcbiAgICBlbnYuc3RhY2tiYXNlIDwtIGluaXRfc3RhY2tiYXNlO1xuICAgIGVudi5zdGF0ZSA8LSBpbml0X3N0YXRlO1xuICAgIGVudi5jdXJyX2NoYXIgPC0gaW5pdF9jdXJyX2NoYXI7XG4gICAgZW52Lmx2YWwgPC0gaW5pdF9sdmFsO1xuICAgIGVudi5lcnJmbGFnIDwtIGluaXRfZXJyZmxhZztcbiAgICBtYXRjaCBleG4gd2l0aFxuICAgICAgWVlleGl0IHYgLT5cbiAgICAgICAgT2JqLm1hZ2ljIHZcbiAgICB8IF8gLT5cbiAgICAgICAgY3VycmVudF9sb29rYWhlYWRfZnVuIDo9XG4gICAgICAgICAgKGZ1biB0b2sgLT5cbiAgICAgICAgICAgIGlmIE9iai5pc19ibG9jayB0b2tcbiAgICAgICAgICAgIHRoZW4gdGFibGVzLnRyYW5zbF9ibG9jay4oT2JqLnRhZyB0b2spID0gY3Vycl9jaGFyXG4gICAgICAgICAgICBlbHNlIHRhYmxlcy50cmFuc2xfY29uc3QuKE9iai5tYWdpYyB0b2spID0gY3Vycl9jaGFyKTtcbiAgICAgICAgcmFpc2UgZXhuXG5cbmxldCBwZWVrX3ZhbCBlbnYgbiA9XG4gIE9iai5tYWdpYyBlbnYudl9zdGFjay4oZW52LmFzcCAtIG4pXG5cbmxldCBzeW1ib2xfc3RhcnRfcG9zICgpID1cbiAgbGV0IHJlYyBsb29wIGkgPVxuICAgIGlmIGkgPD0gMCB0aGVuIGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgc3QgPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIGkgKyAxKSBpblxuICAgICAgbGV0IGVuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gaSArIDEpIGluXG4gICAgICBpZiBzdCA8PiBlbiB0aGVuIHN0IGVsc2UgbG9vcCAoaSAtIDEpXG4gICAgZW5kXG4gIGluXG4gIGxvb3AgZW52LnJ1bGVfbGVuXG5cbmxldCBzeW1ib2xfZW5kX3BvcyAoKSA9IGVudi5zeW1iX2VuZF9zdGFjay4oZW52LmFzcClcbmxldCByaHNfc3RhcnRfcG9zIG4gPSBlbnYuc3ltYl9zdGFydF9zdGFjay4oZW52LmFzcCAtIChlbnYucnVsZV9sZW4gLSBuKSlcbmxldCByaHNfZW5kX3BvcyBuID0gZW52LnN5bWJfZW5kX3N0YWNrLihlbnYuYXNwIC0gKGVudi5ydWxlX2xlbiAtIG4pKVxuXG5sZXQgc3ltYm9sX3N0YXJ0ICgpID0gKHN5bWJvbF9zdGFydF9wb3MgKCkpLnBvc19jbnVtXG5sZXQgc3ltYm9sX2VuZCAoKSA9IChzeW1ib2xfZW5kX3BvcyAoKSkucG9zX2NudW1cbmxldCByaHNfc3RhcnQgbiA9IChyaHNfc3RhcnRfcG9zIG4pLnBvc19jbnVtXG5sZXQgcmhzX2VuZCBuID0gKHJoc19lbmRfcG9zIG4pLnBvc19jbnVtXG5cbmxldCBpc19jdXJyZW50X2xvb2thaGVhZCB0b2sgPVxuICAoIWN1cnJlbnRfbG9va2FoZWFkX2Z1bikoT2JqLnJlcHIgdG9rKVxuXG5sZXQgcGFyc2VfZXJyb3IgKF8gOiBzdHJpbmcpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogU2V0cyBvdmVyIG9yZGVyZWQgdHlwZXMgKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUgZWx0XG4gICAgdHlwZSB0XG4gICAgdmFsIGVtcHR5OiB0XG4gICAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiBlbHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCBzaW5nbGV0b246IGVsdCAtPiB0XG4gICAgdmFsIHJlbW92ZTogZWx0IC0+IHQgLT4gdFxuICAgIHZhbCB1bmlvbjogdCAtPiB0IC0+IHRcbiAgICB2YWwgaW50ZXI6IHQgLT4gdCAtPiB0XG4gICAgdmFsIGRpc2pvaW50OiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBkaWZmOiB0IC0+IHQgLT4gdFxuICAgIHZhbCBjb21wYXJlOiB0IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiB0IC0+IHQgLT4gYm9vbFxuICAgIHZhbCBzdWJzZXQ6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGl0ZXI6IChlbHQgLT4gdW5pdCkgLT4gdCAtPiB1bml0XG4gICAgdmFsIG1hcDogKGVsdCAtPiBlbHQpIC0+IHQgLT4gdFxuICAgIHZhbCBmb2xkOiAoZWx0IC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gICAgdmFsIGZvcl9hbGw6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGVsdCAtPiBib29sKSAtPiB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoZWx0IC0+IGVsdCBvcHRpb24pIC0+IHQgLT4gdFxuICAgIHZhbCBwYXJ0aXRpb246IChlbHQgLT4gYm9vbCkgLT4gdCAtPiB0ICogdFxuICAgIHZhbCBjYXJkaW5hbDogdCAtPiBpbnRcbiAgICB2YWwgZWxlbWVudHM6IHQgLT4gZWx0IGxpc3RcbiAgICB2YWwgbWluX2VsdDogdCAtPiBlbHRcbiAgICB2YWwgbWluX2VsdF9vcHQ6IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBtYXhfZWx0OiB0IC0+IGVsdFxuICAgIHZhbCBtYXhfZWx0X29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGNob29zZTogdCAtPiBlbHRcbiAgICB2YWwgY2hvb3NlX29wdDogdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIHNwbGl0OiBlbHQgLT4gdCAtPiB0ICogYm9vbCAqIHRcbiAgICB2YWwgZmluZDogZWx0IC0+IHQgLT4gZWx0XG4gICAgdmFsIGZpbmRfb3B0OiBlbHQgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfZmlyc3Q6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHRcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBlbHQgb3B0aW9uXG4gICAgdmFsIGZpbmRfbGFzdDogKGVsdCAtPiBib29sKSAtPiB0IC0+IGVsdFxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gZWx0IG9wdGlvblxuICAgIHZhbCBvZl9saXN0OiBlbHQgbGlzdCAtPiB0XG4gICAgdmFsIHRvX3NlcV9mcm9tIDogZWx0IC0+IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3NlcSA6IHQgLT4gZWx0IFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiB0IC0+IGVsdCBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogZWx0IFNlcS50IC0+IHQgLT4gdFxuICAgIHZhbCBvZl9zZXEgOiBlbHQgU2VxLnQgLT4gdFxuICBlbmRcblxubW9kdWxlIE1ha2UoT3JkOiBPcmRlcmVkVHlwZSkgPVxuICBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG4gICAgdHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHtsOnQ7IHY6ZWx0OyByOnQ7IGg6aW50fVxuXG4gICAgKCogU2V0cyBhcmUgcmVwcmVzZW50ZWQgYnkgYmFsYW5jZWQgYmluYXJ5IHRyZWVzICh0aGUgaGVpZ2h0cyBvZiB0aGVcbiAgICAgICBjaGlsZHJlbiBkaWZmZXIgYnkgYXQgbW9zdCAyICopXG5cbiAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gMFxuICAgICAgfCBOb2RlIHtofSAtPiBoXG5cbiAgICAoKiBDcmVhdGVzIGEgbmV3IG5vZGUgd2l0aCBsZWZ0IHNvbiBsLCB2YWx1ZSB2IGFuZCByaWdodCBzb24gci5cbiAgICAgICBXZSBtdXN0IGhhdmUgYWxsIGVsZW1lbnRzIG9mIGwgPCB2IDwgYWxsIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgbCBhbmQgciBtdXN0IGJlIGJhbGFuY2VkIGFuZCB8IGhlaWdodCBsIC0gaGVpZ2h0IHIgfCA8PSAyLlxuICAgICAgIElubGluZSBleHBhbnNpb24gb2YgaGVpZ2h0IGZvciBiZXR0ZXIgc3BlZWQuICopXG5cbiAgICBsZXQgY3JlYXRlIGwgdiByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBOb2Rle2w7IHY7IHI7IGg9KGlmIGhsID49IGhyIHRoZW4gaGwgKyAxIGVsc2UgaHIgKyAxKX1cblxuICAgICgqIFNhbWUgYXMgY3JlYXRlLCBidXQgcGVyZm9ybXMgb25lIHN0ZXAgb2YgcmViYWxhbmNpbmcgaWYgbmVjZXNzYXJ5LlxuICAgICAgIEFzc3VtZXMgbCBhbmQgciBiYWxhbmNlZCBhbmQgfCBoZWlnaHQgbCAtIGhlaWdodCByIHwgPD0gMy5cbiAgICAgICBJbmxpbmUgZXhwYW5zaW9uIG9mIGNyZWF0ZSBmb3IgYmV0dGVyIHNwZWVkIGluIHRoZSBtb3N0IGZyZXF1ZW50IGNhc2VcbiAgICAgICB3aGVyZSBubyByZWJhbGFuY2luZyBpcyByZXF1aXJlZC4gKilcblxuICAgIGxldCBiYWwgbCB2IHIgPVxuICAgICAgbGV0IGhsID0gbWF0Y2ggbCB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBsZXQgaHIgPSBtYXRjaCByIHdpdGggRW1wdHkgLT4gMCB8IE5vZGUge2h9IC0+IGggaW5cbiAgICAgIGlmIGhsID4gaHIgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9bGw7IHY9bHY7IHI9bHJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgbGwgPj0gaGVpZ2h0IGxyIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIGxsIGx2IChjcmVhdGUgbHIgdiByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJTZXQuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgcj1scnJ9LT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGxsIGx2IGxybCkgbHJ2IChjcmVhdGUgbHJyIHYgcilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2UgaWYgaHIgPiBobCArIDIgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCByIHdpdGhcbiAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICB8IE5vZGV7bD1ybDsgdj1ydjsgcj1ycn0gLT5cbiAgICAgICAgICAgIGlmIGhlaWdodCByciA+PSBoZWlnaHQgcmwgdGhlblxuICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHYgcmwpIHJ2IHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyByPXJscn0gLT5cbiAgICAgICAgICAgICAgICAgIGNyZWF0ZSAoY3JlYXRlIGwgdiBybGwpIHJsdiAoY3JlYXRlIHJsciBydiBycilcbiAgICAgICAgICAgIGVuZFxuICAgICAgZW5kIGVsc2VcbiAgICAgICAgTm9kZXtsOyB2OyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICAoKiBJbnNlcnRpb24gb2Ygb25lIGVsZW1lbnQgKilcblxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IGFzIHQgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdCBlbHNlXG4gICAgICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICAgICAgbGV0IGxsID0gYWRkIHggbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHQgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gYWRkIHggciBpblxuICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHQgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgc2luZ2xldG9uIHggPSBOb2Rle2w9RW1wdHk7IHY9eDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgKCogQmV3YXJlOiB0aG9zZSB0d28gZnVuY3Rpb25zIGFzc3VtZSB0aGF0IHRoZSBhZGRlZCB2IGlzICpzdHJpY3RseSpcbiAgICAgICBzbWFsbGVyIChvciBiaWdnZXIpIHRoYW4gYWxsIHRoZSBwcmVzZW50IGVsZW1lbnRzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGVsZW1lbnQuXG4gICAgICAgSW5kZWVkLCB0aGV5IGFyZSBvbmx5IHVzZWQgZHVyaW5nIHRoZSBcImpvaW5cIiBvcGVyYXRpb24gd2hpY2hcbiAgICAgICByZXNwZWN0cyB0aGlzIHByZWNvbmRpdGlvbi5cbiAgICAqKVxuXG4gICAgbGV0IHJlYyBhZGRfbWluX2VsZW1lbnQgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IE5vZGUge2w7IHY7IHJ9IC0+XG4gICAgICAgIGJhbCAoYWRkX21pbl9lbGVtZW50IHggbCkgdiByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfZWxlbWVudCB4ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gc2luZ2xldG9uIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgcn0gLT5cbiAgICAgICAgYmFsIGwgdiAoYWRkX21heF9lbGVtZW50IHggcilcblxuICAgICgqIFNhbWUgYXMgY3JlYXRlIGFuZCBiYWwsIGJ1dCBubyBhc3N1bXB0aW9ucyBhcmUgbWFkZSBvbiB0aGVcbiAgICAgICByZWxhdGl2ZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgcmVjIGpvaW4gbCB2IHIgPVxuICAgICAgbWF0Y2ggKGwsIHIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSAtPiBhZGRfbWluX2VsZW1lbnQgdiByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9lbGVtZW50IHYgbFxuICAgICAgfCAoTm9kZXtsPWxsOyB2PWx2OyByPWxyOyBoPWxofSwgTm9kZXtsPXJsOyB2PXJ2OyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiAoam9pbiBsciB2IHIpIGVsc2VcbiAgICAgICAgICBpZiByaCA+IGxoICsgMiB0aGVuIGJhbCAoam9pbiBsIHYgcmwpIHJ2IHJyIGVsc2VcbiAgICAgICAgICBjcmVhdGUgbCB2IHJcblxuICAgICgqIFNtYWxsZXN0IGFuZCBncmVhdGVzdCBlbGVtZW50IG9mIGEgc2V0ICopXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsPUVtcHR5OyB2fSAtPiB2XG4gICAgICB8IE5vZGV7bH0gLT4gbWluX2VsdCBsXG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfb3B0ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w9RW1wdHk7IHZ9IC0+IFNvbWUgdlxuICAgICAgfCBOb2Rle2x9IC0+IG1pbl9lbHRfb3B0IGxcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2Rle3Y7IHI9RW1wdHl9IC0+IHZcbiAgICAgIHwgTm9kZXtyfSAtPiBtYXhfZWx0IHJcblxuICAgIGxldCByZWMgbWF4X2VsdF9vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGV7djsgcj1FbXB0eX0gLT4gU29tZSB2XG4gICAgICB8IE5vZGV7cn0gLT4gbWF4X2VsdF9vcHQgclxuXG4gICAgKCogUmVtb3ZlIHRoZSBzbWFsbGVzdCBlbGVtZW50IG9mIHRoZSBnaXZlbiBzZXQgKilcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlNldC5yZW1vdmVfbWluX2VsdFwiXG4gICAgICB8IE5vZGV7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGJhbCAocmVtb3ZlX21pbl9lbHQgbCkgdiByXG5cbiAgICAoKiBNZXJnZSB0d28gdHJlZXMgbCBhbmQgciBpbnRvIG9uZS5cbiAgICAgICBBbGwgZWxlbWVudHMgb2YgbCBtdXN0IHByZWNlZGUgdGhlIGVsZW1lbnRzIG9mIHIuXG4gICAgICAgQXNzdW1lIHwgaGVpZ2h0IGwgLSBoZWlnaHQgciB8IDw9IDIuICopXG5cbiAgICBsZXQgbWVyZ2UgdDEgdDIgPVxuICAgICAgbWF0Y2ggKHQxLCB0Mikgd2l0aFxuICAgICAgICAoRW1wdHksIHQpIC0+IHRcbiAgICAgIHwgKHQsIEVtcHR5KSAtPiB0XG4gICAgICB8IChfLCBfKSAtPiBiYWwgdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gam9pbiB0MSAobWluX2VsdCB0MikgKHJlbW92ZV9taW5fZWx0IHQyKVxuXG4gICAgKCogU3BsaXR0aW5nLiAgc3BsaXQgeCBzIHJldHVybnMgYSB0cmlwbGUgKGwsIHByZXNlbnQsIHIpIHdoZXJlXG4gICAgICAgIC0gbCBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPCB4XG4gICAgICAgIC0gciBpcyB0aGUgc2V0IG9mIGVsZW1lbnRzIG9mIHMgdGhhdCBhcmUgPiB4XG4gICAgICAgIC0gcHJlc2VudCBpcyBmYWxzZSBpZiBzIGNvbnRhaW5zIG5vIGVsZW1lbnQgZXF1YWwgdG8geCxcbiAgICAgICAgICBvciB0cnVlIGlmIHMgY29udGFpbnMgYW4gZWxlbWVudCBlcXVhbCB0byB4LiAqKVxuXG4gICAgbGV0IHJlYyBzcGxpdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAoRW1wdHksIGZhbHNlLCBFbXB0eSlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiAobCwgdHJ1ZSwgcilcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCAobGwsIHByZXMsIHJsKSA9IHNwbGl0IHggbCBpbiAobGwsIHByZXMsIGpvaW4gcmwgdiByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgbHIsIHByZXMsIHJyKVxuXG4gICAgKCogSW1wbGVtZW50YXRpb24gb2YgdGhlIHNldCBvcGVyYXRpb25zICopXG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgbWVtIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBjID0gMCB8fCBtZW0geCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgcmVtb3ZlIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSBhcyB0KSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBtZXJnZSBsIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGxldCBsbCA9IHJlbW92ZSB4IGwgaW5cbiAgICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbGwgdiByXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGxldCByciA9IHJlbW92ZSB4IHIgaW5cbiAgICAgICAgICAgICAgaWYgciA9PSByciB0aGVuIHRcbiAgICAgICAgICAgICAgZWxzZSBiYWwgbCB2IHJyXG5cbiAgICBsZXQgcmVjIHVuaW9uIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0MikgLT4gdDJcbiAgICAgIHwgKHQxLCBFbXB0eSkgLT4gdDFcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMTsgaD1oMX0sIE5vZGV7bD1sMjsgdj12Mjsgcj1yMjsgaD1oMn0pIC0+XG4gICAgICAgICAgaWYgaDEgPj0gaDIgdGhlblxuICAgICAgICAgICAgaWYgaDIgPSAxIHRoZW4gYWRkIHYyIHMxIGVsc2UgYmVnaW5cbiAgICAgICAgICAgICAgbGV0IChsMiwgXywgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgICAgam9pbiAodW5pb24gbDEgbDIpIHYxICh1bmlvbiByMSByMilcbiAgICAgICAgICAgIGVuZFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGlmIGgxID0gMSB0aGVuIGFkZCB2MSBzMiBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIGxldCAobDEsIF8sIHIxKSA9IHNwbGl0IHYyIHMxIGluXG4gICAgICAgICAgICAgIGpvaW4gKHVuaW9uIGwxIGwyKSB2MiAodW5pb24gcjEgcjIpXG4gICAgICAgICAgICBlbmRcblxuICAgIGxldCByZWMgaW50ZXIgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8IChfLCBFbXB0eSkgLT4gRW1wdHlcbiAgICAgIHwgKE5vZGV7bD1sMTsgdj12MTsgcj1yMX0sIHQyKSAtPlxuICAgICAgICAgIG1hdGNoIHNwbGl0IHYxIHQyIHdpdGhcbiAgICAgICAgICAgIChsMiwgZmFsc2UsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGludGVyIGwxIGwyKSAoaW50ZXIgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBqb2luIChpbnRlciBsMSBsMikgdjEgKGludGVyIHIxIHIyKVxuXG4gICAgKCogU2FtZSBhcyBzcGxpdCwgYnV0IGNvbXB1dGUgdGhlIGxlZnQgYW5kIHJpZ2h0IHN1YnRyZWVzXG4gICAgICAgb25seSBpZiB0aGUgcGl2b3QgZWxlbWVudCBpcyBub3QgaW4gdGhlIHNldC4gIFRoZSByaWdodCBzdWJ0cmVlXG4gICAgICAgaXMgY29tcHV0ZWQgb24gZGVtYW5kLiAqKVxuXG4gICAgdHlwZSBzcGxpdF9iaXMgPVxuICAgICAgfCBGb3VuZFxuICAgICAgfCBOb3RGb3VuZCBvZiB0ICogKHVuaXQgLT4gdClcblxuICAgIGxldCByZWMgc3BsaXRfYmlzIHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vdEZvdW5kIChFbXB0eSwgKGZ1biAoKSAtPiBFbXB0eSkpXG4gICAgICB8IE5vZGV7bDsgdjsgcjsgX30gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gRm91bmRcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIG1hdGNoIHNwbGl0X2JpcyB4IGwgd2l0aFxuICAgICAgICAgICAgfCBGb3VuZCAtPiBGb3VuZFxuICAgICAgICAgICAgfCBOb3RGb3VuZCAobGwsIHJsKSAtPiBOb3RGb3VuZCAobGwsIChmdW4gKCkgLT4gam9pbiAocmwgKCkpIHYgcikpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbWF0Y2ggc3BsaXRfYmlzIHggciB3aXRoXG4gICAgICAgICAgICB8IEZvdW5kIC0+IEZvdW5kXG4gICAgICAgICAgICB8IE5vdEZvdW5kIChsciwgcnIpIC0+IE5vdEZvdW5kIChqb2luIGwgdiBsciwgcnIpXG5cbiAgICBsZXQgcmVjIGRpc2pvaW50IHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCBfKSB8IChfLCBFbXB0eSkgLT4gdHJ1ZVxuICAgICAgfCAoTm9kZXtsPWwxOyB2PXYxOyByPXIxfSwgdDIpIC0+XG4gICAgICAgICAgaWYgczEgPT0gczIgdGhlbiBmYWxzZVxuICAgICAgICAgIGVsc2UgbWF0Y2ggc3BsaXRfYmlzIHYxIHQyIHdpdGhcbiAgICAgICAgICAgICAgTm90Rm91bmQobDIsIHIyKSAtPiBkaXNqb2ludCBsMSBsMiAmJiBkaXNqb2ludCByMSAocjIgKCkpXG4gICAgICAgICAgICB8IEZvdW5kIC0+IGZhbHNlXG5cbiAgICBsZXQgcmVjIGRpZmYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIF8pIC0+IEVtcHR5XG4gICAgICB8ICh0MSwgRW1wdHkpIC0+IHQxXG4gICAgICB8IChOb2Rle2w9bDE7IHY9djE7IHI9cjF9LCB0MikgLT5cbiAgICAgICAgICBtYXRjaCBzcGxpdCB2MSB0MiB3aXRoXG4gICAgICAgICAgICAobDIsIGZhbHNlLCByMikgLT5cbiAgICAgICAgICAgICAgam9pbiAoZGlmZiBsMSBsMikgdjEgKGRpZmYgcjEgcjIpXG4gICAgICAgICAgfCAobDIsIHRydWUsIHIyKSAtPlxuICAgICAgICAgICAgICBjb25jYXQgKGRpZmYgbDEgbDIpIChkaWZmIHIxIHIyKVxuXG4gICAgdHlwZSBlbnVtZXJhdGlvbiA9IEVuZCB8IE1vcmUgb2YgZWx0ICogdCAqIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBzIGUgPVxuICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBjb25zX2VudW0gbCAoTW9yZSh2LCByLCBlKSlcblxuICAgIGxldCByZWMgY29tcGFyZV9hdXggZTEgZTIgPVxuICAgICAgICBtYXRjaCAoZTEsIGUyKSB3aXRoXG4gICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgfCAoRW5kLCBfKSAgLT4gLTFcbiAgICAgIHwgKF8sIEVuZCkgLT4gMVxuICAgICAgfCAoTW9yZSh2MSwgcjEsIGUxKSwgTW9yZSh2MiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHYxIHYyIGluXG4gICAgICAgICAgaWYgYyA8PiAwXG4gICAgICAgICAgdGhlbiBjXG4gICAgICAgICAgZWxzZSBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuXG4gICAgbGV0IGNvbXBhcmUgczEgczIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBzMSBFbmQpIChjb25zX2VudW0gczIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIHMxIHMyID1cbiAgICAgIGNvbXBhcmUgczEgczIgPSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzMSBzMiA9XG4gICAgICBtYXRjaCAoczEsIHMyKSB3aXRoXG4gICAgICAgIEVtcHR5LCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBfLCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IE5vZGUge2w9bDE7IHY9djE7IHI9cjF9LCAoTm9kZSB7bD1sMjsgdj12Mjsgcj1yMn0gYXMgdDIpIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCBsMSBsMiAmJiBzdWJzZXQgcjEgcjJcbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIHN1YnNldCAoTm9kZSB7bD1sMTsgdj12MTsgcj1FbXB0eTsgaD0wfSkgbDIgJiYgc3Vic2V0IHIxIHQyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc3Vic2V0IChOb2RlIHtsPUVtcHR5OyB2PXYxOyByPXIxOyBoPTB9KSByMiAmJiBzdWJzZXQgbDEgdDJcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gKClcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBpdGVyIGYgbDsgZiB2OyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBmb2xkIGYgcyBhY2N1ID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBhY2N1XG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gZm9sZCBmIHIgKGYgdiAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPiBwIHYgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IHAgdiB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZXtsOyB2OyByfSkgYXMgdCAtPlxuICAgICAgICAgICgqIGNhbGwgW3BdIGluIHRoZSBleHBlY3RlZCBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG4gICAgICAgICAgbGV0IGwnID0gZmlsdGVyIHAgbCBpblxuICAgICAgICAgIGxldCBwdiA9IHAgdiBpblxuICAgICAgICAgIGxldCByJyA9IGZpbHRlciBwIHIgaW5cbiAgICAgICAgICBpZiBwdiB0aGVuXG4gICAgICAgICAgICBpZiBsPT1sJyAmJiByPT1yJyB0aGVuIHQgZWxzZSBqb2luIGwnIHYgcidcbiAgICAgICAgICBlbHNlIGNvbmNhdCBsJyByJ1xuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtwXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCAobHQsIGxmKSA9IHBhcnRpdGlvbiBwIGwgaW5cbiAgICAgICAgICBsZXQgcHYgPSBwIHYgaW5cbiAgICAgICAgICBsZXQgKHJ0LCByZikgPSBwYXJ0aXRpb24gcCByIGluXG4gICAgICAgICAgaWYgcHZcbiAgICAgICAgICB0aGVuIChqb2luIGx0IHYgcnQsIGNvbmNhdCBsZiByZilcbiAgICAgICAgICBlbHNlIChjb25jYXQgbHQgcnQsIGpvaW4gbGYgdiByZilcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGV7bDsgcn0gLT4gY2FyZGluYWwgbCArIDEgKyBjYXJkaW5hbCByXG5cbiAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+IGVsZW1lbnRzX2F1eCAodiA6OiBlbGVtZW50c19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgZWxlbWVudHMgcyA9XG4gICAgICBlbGVtZW50c19hdXggW10gc1xuXG4gICAgbGV0IGNob29zZSA9IG1pbl9lbHRcblxuICAgIGxldCBjaG9vc2Vfb3B0ID0gbWluX2VsdF9vcHRcblxuICAgIGxldCByZWMgZmluZCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gdlxuICAgICAgICAgIGVsc2UgZmluZCB4IChpZiBjIDwgMCB0aGVuIGwgZWxzZSByKVxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdjAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSB2MFxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2MCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0X2F1eCB2IGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3Rfb3B0IGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3RfYXV4IHYwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X2F1eCB2IGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdjAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgTm9kZXtsOyB2OyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBTb21lIHYwXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2MCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdiBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0IGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX29wdCB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBOb2Rle2w7IHY7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIFNvbWUgdlxuICAgICAgICAgIGVsc2UgZmluZF9vcHQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCB0cnlfam9pbiBsIHYgciA9XG4gICAgICAoKiBbam9pbiBsIHYgcl0gY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gKGVsZW1lbnRzIG9mIGwgPCB2IDxcbiAgICAgICAgIGVsZW1lbnRzIG9mIHIpOyB1c2UgW3RyeV9qb2luIGwgdiByXSB3aGVuIHRoaXMgcHJvcGVydHkgbWF5XG4gICAgICAgICBub3QgaG9sZCwgYnV0IHlvdSBob3BlIGl0IGRvZXMgaG9sZCBpbiB0aGUgY29tbW9uIGNhc2UgKilcbiAgICAgIGlmIChsID0gRW1wdHkgfHwgT3JkLmNvbXBhcmUgKG1heF9lbHQgbCkgdiA8IDApXG4gICAgICAmJiAociA9IEVtcHR5IHx8IE9yZC5jb21wYXJlIHYgKG1pbl9lbHQgcikgPCAwKVxuICAgICAgdGhlbiBqb2luIGwgdiByXG4gICAgICBlbHNlIHVuaW9uIGwgKGFkZCB2IHIpXG5cbiAgICBsZXQgcmVjIG1hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gbWFwIGYgbCBpblxuICAgICAgICAgbGV0IHYnID0gZiB2IGluXG4gICAgICAgICBsZXQgcicgPSBtYXAgZiByIGluXG4gICAgICAgICBpZiBsID09IGwnICYmIHYgPT0gdicgJiYgciA9PSByJyB0aGVuIHRcbiAgICAgICAgIGVsc2UgdHJ5X2pvaW4gbCcgdicgcidcblxuICAgIGxldCB0cnlfY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT4gdHJ5X2pvaW4gdDEgKG1pbl9lbHQgdDIpIChyZW1vdmVfbWluX2VsdCB0MilcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZXtsOyB2OyByfSBhcyB0IC0+XG4gICAgICAgICAoKiBlbmZvcmNlIGxlZnQtdG8tcmlnaHQgZXZhbHVhdGlvbiBvcmRlciAqKVxuICAgICAgICAgbGV0IGwnID0gZmlsdGVyX21hcCBmIGwgaW5cbiAgICAgICAgIGxldCB2JyA9IGYgdiBpblxuICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgIGJlZ2luIG1hdGNoIHYnIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHYnIC0+XG4gICAgICAgICAgICAgIGlmIGwgPT0gbCcgJiYgdiA9PSB2JyAmJiByID09IHInIHRoZW4gdFxuICAgICAgICAgICAgICBlbHNlIHRyeV9qb2luIGwnIHYnIHInXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICB0cnlfY29uY2F0IGwnIHInXG4gICAgICAgICBlbmRcblxuICAgIGxldCBvZl9zb3J0ZWRfbGlzdCBsID1cbiAgICAgIGxldCByZWMgc3ViIG4gbCA9XG4gICAgICAgIG1hdGNoIG4sIGwgd2l0aFxuICAgICAgICB8IDAsIGwgLT4gRW1wdHksIGxcbiAgICAgICAgfCAxLCB4MCA6OiBsIC0+IE5vZGUge2w9RW1wdHk7IHY9eDA7IHI9RW1wdHk7IGg9MX0sIGxcbiAgICAgICAgfCAyLCB4MCA6OiB4MSA6OiBsIC0+XG4gICAgICAgICAgICBOb2Rle2w9Tm9kZXtsPUVtcHR5OyB2PXgwOyByPUVtcHR5OyBoPTF9OyB2PXgxOyByPUVtcHR5OyBoPTJ9LCBsXG4gICAgICAgIHwgMywgeDAgOjogeDEgOjogeDIgOjogbCAtPlxuICAgICAgICAgICAgTm9kZXtsPU5vZGV7bD1FbXB0eTsgdj14MDsgcj1FbXB0eTsgaD0xfTsgdj14MTtcbiAgICAgICAgICAgICAgICAgcj1Ob2Rle2w9RW1wdHk7IHY9eDI7IHI9RW1wdHk7IGg9MX07IGg9Mn0sIGxcbiAgICAgICAgfCBuLCBsIC0+XG4gICAgICAgICAgbGV0IG5sID0gbiAvIDIgaW5cbiAgICAgICAgICBsZXQgbGVmdCwgbCA9IHN1YiBubCBsIGluXG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IG1pZCA6OiBsIC0+XG4gICAgICAgICAgICBsZXQgcmlnaHQsIGwgPSBzdWIgKG4gLSBubCAtIDEpIGwgaW5cbiAgICAgICAgICAgIGNyZWF0ZSBsZWZ0IG1pZCByaWdodCwgbFxuICAgICAgaW5cbiAgICAgIGZzdCAoc3ViIChMaXN0Lmxlbmd0aCBsKSBsKVxuXG4gICAgbGV0IG9mX2xpc3QgbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZW1wdHlcbiAgICAgIHwgW3gwXSAtPiBzaW5nbGV0b24geDBcbiAgICAgIHwgW3gwOyB4MV0gLT4gYWRkIHgxIChzaW5nbGV0b24geDApXG4gICAgICB8IFt4MDsgeDE7IHgyXSAtPiBhZGQgeDIgKGFkZCB4MSAoc2luZ2xldG9uIHgwKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzXSAtPiBhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSlcbiAgICAgIHwgW3gwOyB4MTsgeDI7IHgzOyB4NF0gLT4gYWRkIHg0IChhZGQgeDMgKGFkZCB4MiAoYWRkIHgxIChzaW5nbGV0b24geDApKSkpXG4gICAgICB8IF8gLT4gb2Zfc29ydGVkX2xpc3QgKExpc3Quc29ydF91bmlxIE9yZC5jb21wYXJlIGwpXG5cbiAgICBsZXQgYWRkX3NlcSBpIG0gPVxuICAgICAgU2VxLmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBhZGQgeCBzKSBtIGlcblxuICAgIGxldCBvZl9zZXEgaSA9IGFkZF9zZXEgaSBlbXB0eVxuXG4gICAgbGV0IHJlYyBzZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgYyA9IHNlcV9vZl9lbnVtXyAoY29uc19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHJlYyBzbm9jX2VudW0gcyBlID1cbiAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICBFbXB0eSAtPiBlXG4gICAgICB8IE5vZGV7bDsgdjsgcn0gLT4gc25vY19lbnVtIHIgKE1vcmUodiwgbCwgZSkpXG5cbiAgICBsZXQgcmVjIHJldl9zZXFfb2ZfZW51bV8gYyAoKSA9IG1hdGNoIGMgd2l0aFxuICAgICAgfCBFbmQgLT4gU2VxLk5pbFxuICAgICAgfCBNb3JlICh4LCB0LCByZXN0KSAtPiBTZXEuQ29ucyAoeCwgcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIHQgcmVzdCkpXG5cbiAgICBsZXQgdG9fcmV2X3NlcSBjID0gcmV2X3NlcV9vZl9lbnVtXyAoc25vY19lbnVtIGMgRW5kKVxuXG4gICAgbGV0IHRvX3NlcV9mcm9tIGxvdyBzID1cbiAgICAgIGxldCByZWMgYXV4IGxvdyBzIGMgPSBtYXRjaCBzIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBjXG4gICAgICAgIHwgTm9kZSB7bDsgcjsgdjsgX30gLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIE9yZC5jb21wYXJlIHYgbG93IHdpdGhcbiAgICAgICAgICAgICAgfCAwIC0+IE1vcmUgKHYsIHIsIGMpXG4gICAgICAgICAgICAgIHwgbiB3aGVuIG48MCAtPiBhdXggbG93IHIgY1xuICAgICAgICAgICAgICB8IF8gLT4gYXV4IGxvdyBsIChNb3JlICh2LCByLCBjKSlcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIHNlcV9vZl9lbnVtXyAoYXV4IGxvdyBzIEVuZClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSB0eXBlIE9yZGVyZWRUeXBlID1cbiAgc2lnXG4gICAgdHlwZSB0XG4gICAgdmFsIGNvbXBhcmU6IHQgLT4gdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISsnYSB0XG4gICAgdmFsIGVtcHR5OiAnYSB0XG4gICAgdmFsIGlzX2VtcHR5OiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgbWVtOiAga2V5IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBhZGQ6IGtleSAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgdXBkYXRlOiBrZXkgLT4gKCdhIG9wdGlvbiAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBzaW5nbGV0b246IGtleSAtPiAnYSAtPiAnYSB0XG4gICAgdmFsIHJlbW92ZToga2V5IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBtZXJnZTpcbiAgICAgICAgICAoa2V5IC0+ICdhIG9wdGlvbiAtPiAnYiBvcHRpb24gLT4gJ2Mgb3B0aW9uKSAtPiAnYSB0IC0+ICdiIHQgLT4gJ2MgdFxuICAgIHZhbCB1bmlvbjogKGtleSAtPiAnYSAtPiAnYSAtPiAnYSBvcHRpb24pIC0+ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gICAgdmFsIGNvbXBhcmU6ICgnYSAtPiAnYSAtPiBpbnQpIC0+ICdhIHQgLT4gJ2EgdCAtPiBpbnRcbiAgICB2YWwgZXF1YWw6ICgnYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmb2xkOiAoa2V5IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gICAgdmFsIGZvcl9hbGw6IChrZXkgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gICAgdmFsIGV4aXN0czogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IGJvb2xcbiAgICB2YWwgZmlsdGVyOiAoa2V5IC0+ICdhIC0+IGJvb2wpIC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBmaWx0ZXJfbWFwOiAoa2V5IC0+ICdhIC0+ICdiIG9wdGlvbikgLT4gJ2EgdCAtPiAnYiB0XG4gICAgdmFsIHBhcnRpdGlvbjogKGtleSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG4gICAgdmFsIGNhcmRpbmFsOiAnYSB0IC0+IGludFxuICAgIHZhbCBiaW5kaW5nczogJ2EgdCAtPiAoa2V5ICogJ2EpIGxpc3RcbiAgICB2YWwgbWluX2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtaW5fYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWF4X2JpbmRpbmc6ICdhIHQgLT4gKGtleSAqICdhKVxuICAgIHZhbCBtYXhfYmluZGluZ19vcHQ6ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgY2hvb3NlOiAnYSB0IC0+IChrZXkgKiAnYSlcbiAgICB2YWwgY2hvb3NlX29wdDogJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBzcGxpdDoga2V5IC0+ICdhIHQgLT4gJ2EgdCAqICdhIG9wdGlvbiAqICdhIHRcbiAgICB2YWwgZmluZDoga2V5IC0+ICdhIHQgLT4gJ2FcbiAgICB2YWwgZmluZF9vcHQ6IGtleSAtPiAnYSB0IC0+ICdhIG9wdGlvblxuICAgIHZhbCBmaW5kX2ZpcnN0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4ga2V5ICogJ2FcbiAgICB2YWwgZmluZF9maXJzdF9vcHQ6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIG9wdGlvblxuICAgIHZhbCBmaW5kX2xhc3Q6IChrZXkgLT4gYm9vbCkgLT4gJ2EgdCAtPiBrZXkgKiAnYVxuICAgIHZhbCBmaW5kX2xhc3Rfb3B0OiAoa2V5IC0+IGJvb2wpIC0+ICdhIHQgLT4gKGtleSAqICdhKSBvcHRpb25cbiAgICB2YWwgbWFwOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICAgIHZhbCBtYXBpOiAoa2V5IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3Jldl9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2Zyb20gOiBrZXkgLT4gJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpID0gc3RydWN0XG5cbiAgICB0eXBlIGtleSA9IE9yZC50XG5cbiAgICB0eXBlICdhIHQgPVxuICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIG9mIHtsOidhIHQ7IHY6a2V5OyBkOidhOyByOidhIHQ7IGg6aW50fVxuXG4gICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IDBcbiAgICAgIHwgTm9kZSB7aH0gLT4gaFxuXG4gICAgbGV0IGNyZWF0ZSBsIHggZCByID1cbiAgICAgIGxldCBobCA9IGhlaWdodCBsIGFuZCBociA9IGhlaWdodCByIGluXG4gICAgICBOb2Rle2w7IHY9eDsgZDsgcjsgaD0oaWYgaGwgPj0gaHIgdGhlbiBobCArIDEgZWxzZSBociArIDEpfVxuXG4gICAgbGV0IHNpbmdsZXRvbiB4IGQgPSBOb2Rle2w9RW1wdHk7IHY9eDsgZDsgcj1FbXB0eTsgaD0xfVxuXG4gICAgbGV0IGJhbCBsIHggZCByID1cbiAgICAgIGxldCBobCA9IG1hdGNoIGwgd2l0aCBFbXB0eSAtPiAwIHwgTm9kZSB7aH0gLT4gaCBpblxuICAgICAgbGV0IGhyID0gbWF0Y2ggciB3aXRoIEVtcHR5IC0+IDAgfCBOb2RlIHtofSAtPiBoIGluXG4gICAgICBpZiBobCA+IGhyICsgMiB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLmJhbFwiXG4gICAgICAgIHwgTm9kZXtsPWxsOyB2PWx2OyBkPWxkOyByPWxyfSAtPlxuICAgICAgICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgICAgICAgIGNyZWF0ZSBsbCBsdiBsZCAoY3JlYXRlIGxyIHggZCByKVxuICAgICAgICAgICAgZWxzZSBiZWdpblxuICAgICAgICAgICAgICBtYXRjaCBsciB3aXRoXG4gICAgICAgICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgICAgICAgfCBOb2Rle2w9bHJsOyB2PWxydjsgZD1scmQ7IHI9bHJyfS0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsbCBsdiBsZCBscmwpIGxydiBscmQgKGNyZWF0ZSBscnIgeCBkIHIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggciB3aXRoXG4gICAgICAgICAgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJNYXAuYmFsXCJcbiAgICAgICAgfCBOb2Rle2w9cmw7IHY9cnY7IGQ9cmQ7IHI9cnJ9IC0+XG4gICAgICAgICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgICAgICAgY3JlYXRlIChjcmVhdGUgbCB4IGQgcmwpIHJ2IHJkIHJyXG4gICAgICAgICAgICBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgICAgICAgICBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIk1hcC5iYWxcIlxuICAgICAgICAgICAgICB8IE5vZGV7bD1ybGw7IHY9cmx2OyBkPXJsZDsgcj1ybHJ9IC0+XG4gICAgICAgICAgICAgICAgICBjcmVhdGUgKGNyZWF0ZSBsIHggZCBybGwpIHJsdiBybGQgKGNyZWF0ZSBybHIgcnYgcmQgcnIpXG4gICAgICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIE5vZGV7bDsgdj14OyBkOyByOyBoPShpZiBobCA+PSBociB0aGVuIGhsICsgMSBlbHNlIGhyICsgMSl9XG5cbiAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb24gRW1wdHkgLT4gdHJ1ZSB8IF8gLT4gZmFsc2VcblxuICAgIGxldCByZWMgYWRkIHggZGF0YSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9kZXtsPUVtcHR5OyB2PXg7IGQ9ZGF0YTsgcj1FbXB0eTsgaD0xfVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSBhcyBtIC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgICBpZiBkID09IGRhdGEgdGhlbiBtIGVsc2UgTm9kZXtsOyB2PXg7IGQ9ZGF0YTsgcjsgaH1cbiAgICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IGFkZCB4IGRhdGEgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSBhZGQgeCBkYXRhIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGZpbmQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIGRcbiAgICAgICAgICBlbHNlIGZpbmQgeCAoaWYgYyA8IDAgdGhlbiBsIGVsc2UgcilcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9hdXggdiBkIGYgbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfZmlyc3RfYXV4IHYwIGQwIGYgclxuXG4gICAgbGV0IHJlYyBmaW5kX2ZpcnN0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X2F1eCB2IGQgZiBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9maXJzdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9maXJzdF9vcHRfYXV4IHYwIGQwIGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIFNvbWUgKHYwLCBkMClcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdF9hdXggdjAgZDAgZiByXG5cbiAgICBsZXQgcmVjIGZpbmRfZmlyc3Rfb3B0IGYgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICBpZiBmIHYgdGhlblxuICAgICAgICAgICAgZmluZF9maXJzdF9vcHRfYXV4IHYgZCBmIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2ZpcnN0X29wdCBmIHJcblxuICAgIGxldCByZWMgZmluZF9sYXN0X2F1eCB2MCBkMCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYgZCBmIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBmaW5kX2xhc3RfYXV4IHYwIGQwIGYgbFxuXG4gICAgbGV0IHJlYyBmaW5kX2xhc3QgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaWYgZiB2IHRoZW5cbiAgICAgICAgICAgIGZpbmRfbGFzdF9hdXggdiBkIGYgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGZpbmRfbGFzdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgU29tZSAodjAsIGQwKVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdF9hdXggdjAgZDAgZiBsXG5cbiAgICBsZXQgcmVjIGZpbmRfbGFzdF9vcHQgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGlmIGYgdiB0aGVuXG4gICAgICAgICAgICBmaW5kX2xhc3Rfb3B0X2F1eCB2IGQgZiByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZF9sYXN0X29wdCBmIGxcblxuICAgIGxldCByZWMgZmluZF9vcHQgeCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBTb21lIGRcbiAgICAgICAgICBlbHNlIGZpbmRfb3B0IHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1lbSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyByfSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgYyA9IDAgfHwgbWVtIHggKGlmIGMgPCAwIHRoZW4gbCBlbHNlIHIpXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IE5vZGUge2w9RW1wdHk7IHY7IGR9IC0+ICh2LCBkKVxuICAgICAgfCBOb2RlIHtsfSAtPiBtaW5fYmluZGluZyBsXG5cbiAgICBsZXQgcmVjIG1pbl9iaW5kaW5nX29wdCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IE5vbmVcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgdjsgZH0gLT4gU29tZSAodiwgZClcbiAgICAgIHwgTm9kZSB7bH0tPiBtaW5fYmluZGluZ19vcHQgbFxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBOb2RlIHt2OyBkOyByPUVtcHR5fSAtPiAodiwgZClcbiAgICAgIHwgTm9kZSB7cn0gLT4gbWF4X2JpbmRpbmcgclxuXG4gICAgbGV0IHJlYyBtYXhfYmluZGluZ19vcHQgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBOb25lXG4gICAgICB8IE5vZGUge3Y7IGQ7IHI9RW1wdHl9IC0+IFNvbWUgKHYsIGQpXG4gICAgICB8IE5vZGUge3J9IC0+IG1heF9iaW5kaW5nX29wdCByXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9taW5fYmluZGluZyA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGludmFsaWRfYXJnIFwiTWFwLnJlbW92ZV9taW5fZWx0XCJcbiAgICAgIHwgTm9kZSB7bD1FbXB0eTsgcn0gLT4gclxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBiYWwgKHJlbW92ZV9taW5fYmluZGluZyBsKSB2IGQgclxuXG4gICAgbGV0IG1lcmdlIHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBiYWwgdDEgeCBkIChyZW1vdmVfbWluX2JpbmRpbmcgdDIpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSB4ID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCAoTm9kZSB7bDsgdjsgZDsgcn0gYXMgbSkgLT5cbiAgICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICAgIGlmIGMgPSAwIHRoZW4gbWVyZ2UgbCByXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgbGwgPSByZW1vdmUgeCBsIGluIGlmIGwgPT0gbGwgdGhlbiBtIGVsc2UgYmFsIGxsIHYgZCByXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbGV0IHJyID0gcmVtb3ZlIHggciBpbiBpZiByID09IHJyIHRoZW4gbSBlbHNlIGJhbCBsIHYgZCByclxuXG4gICAgbGV0IHJlYyB1cGRhdGUgeCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmIE5vbmUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBFbXB0eVxuICAgICAgICAgIHwgU29tZSBkYXRhIC0+IE5vZGV7bD1FbXB0eTsgdj14OyBkPWRhdGE7IHI9RW1wdHk7IGg9MX1cbiAgICAgICAgICBlbmRcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gYXMgbSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgeCB2IGluXG4gICAgICAgICAgaWYgYyA9IDAgdGhlbiBiZWdpblxuICAgICAgICAgICAgbWF0Y2ggZiAoU29tZSBkKSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbWVyZ2UgbCByXG4gICAgICAgICAgICB8IFNvbWUgZGF0YSAtPlxuICAgICAgICAgICAgICAgIGlmIGQgPT0gZGF0YSB0aGVuIG0gZWxzZSBOb2Rle2w7IHY9eDsgZD1kYXRhOyByOyBofVxuICAgICAgICAgIGVuZCBlbHNlIGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxldCBsbCA9IHVwZGF0ZSB4IGYgbCBpblxuICAgICAgICAgICAgaWYgbCA9PSBsbCB0aGVuIG0gZWxzZSBiYWwgbGwgdiBkIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgcnIgPSB1cGRhdGUgeCBmIHIgaW5cbiAgICAgICAgICAgIGlmIHIgPT0gcnIgdGhlbiBtIGVsc2UgYmFsIGwgdiBkIHJyXG5cbiAgICBsZXQgcmVjIGl0ZXIgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+ICgpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgaXRlciBmIGw7IGYgdiBkOyBpdGVyIGYgclxuXG4gICAgbGV0IHJlYyBtYXAgZiA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcjsgaH0gLT5cbiAgICAgICAgICBsZXQgbCcgPSBtYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiBkIGluXG4gICAgICAgICAgbGV0IHInID0gbWFwIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgbWFwaSBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT5cbiAgICAgICAgICBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBofSAtPlxuICAgICAgICAgIGxldCBsJyA9IG1hcGkgZiBsIGluXG4gICAgICAgICAgbGV0IGQnID0gZiB2IGQgaW5cbiAgICAgICAgICBsZXQgcicgPSBtYXBpIGYgciBpblxuICAgICAgICAgIE5vZGV7bD1sJzsgdjsgZD1kJzsgcj1yJzsgaH1cblxuICAgIGxldCByZWMgZm9sZCBmIG0gYWNjdSA9XG4gICAgICBtYXRjaCBtIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gYWNjdVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPlxuICAgICAgICAgIGZvbGQgZiByIChmIHYgZCAoZm9sZCBmIGwgYWNjdSkpXG5cbiAgICBsZXQgcmVjIGZvcl9hbGwgcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IHRydWVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gcCB2IGQgJiYgZm9yX2FsbCBwIGwgJiYgZm9yX2FsbCBwIHJcblxuICAgIGxldCByZWMgZXhpc3RzIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBmYWxzZVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSAtPiBwIHYgZCB8fCBleGlzdHMgcCBsIHx8IGV4aXN0cyBwIHJcblxuICAgICgqIEJld2FyZTogdGhvc2UgdHdvIGZ1bmN0aW9ucyBhc3N1bWUgdGhhdCB0aGUgYWRkZWQgayBpcyAqc3RyaWN0bHkqXG4gICAgICAgc21hbGxlciAob3IgYmlnZ2VyKSB0aGFuIGFsbCB0aGUgcHJlc2VudCBrZXlzIGluIHRoZSB0cmVlOyBpdFxuICAgICAgIGRvZXMgbm90IHRlc3QgZm9yIGVxdWFsaXR5IHdpdGggdGhlIGN1cnJlbnQgbWluIChvciBtYXgpIGtleS5cblxuICAgICAgIEluZGVlZCwgdGhleSBhcmUgb25seSB1c2VkIGR1cmluZyB0aGUgXCJqb2luXCIgb3BlcmF0aW9uIHdoaWNoXG4gICAgICAgcmVzcGVjdHMgdGhpcyBwcmVjb25kaXRpb24uXG4gICAgKilcblxuICAgIGxldCByZWMgYWRkX21pbl9iaW5kaW5nIGsgeCA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+IHNpbmdsZXRvbiBrIHhcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgYmFsIChhZGRfbWluX2JpbmRpbmcgayB4IGwpIHYgZCByXG5cbiAgICBsZXQgcmVjIGFkZF9tYXhfYmluZGluZyBrIHggPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBzaW5nbGV0b24gayB4XG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgIGJhbCBsIHYgZCAoYWRkX21heF9iaW5kaW5nIGsgeCByKVxuXG4gICAgKCogU2FtZSBhcyBjcmVhdGUgYW5kIGJhbCwgYnV0IG5vIGFzc3VtcHRpb25zIGFyZSBtYWRlIG9uIHRoZVxuICAgICAgIHJlbGF0aXZlIGhlaWdodHMgb2YgbCBhbmQgci4gKilcblxuICAgIGxldCByZWMgam9pbiBsIHYgZCByID1cbiAgICAgIG1hdGNoIChsLCByKSB3aXRoXG4gICAgICAgIChFbXB0eSwgXykgLT4gYWRkX21pbl9iaW5kaW5nIHYgZCByXG4gICAgICB8IChfLCBFbXB0eSkgLT4gYWRkX21heF9iaW5kaW5nIHYgZCBsXG4gICAgICB8IChOb2Rle2w9bGw7IHY9bHY7IGQ9bGQ7IHI9bHI7IGg9bGh9LFxuICAgICAgICAgTm9kZXtsPXJsOyB2PXJ2OyBkPXJkOyByPXJyOyBoPXJofSkgLT5cbiAgICAgICAgICBpZiBsaCA+IHJoICsgMiB0aGVuIGJhbCBsbCBsdiBsZCAoam9pbiBsciB2IGQgcikgZWxzZVxuICAgICAgICAgIGlmIHJoID4gbGggKyAyIHRoZW4gYmFsIChqb2luIGwgdiBkIHJsKSBydiByZCByciBlbHNlXG4gICAgICAgICAgY3JlYXRlIGwgdiBkIHJcblxuICAgICgqIE1lcmdlIHR3byB0cmVlcyBsIGFuZCByIGludG8gb25lLlxuICAgICAgIEFsbCBlbGVtZW50cyBvZiBsIG11c3QgcHJlY2VkZSB0aGUgZWxlbWVudHMgb2Ygci5cbiAgICAgICBObyBhc3N1bXB0aW9uIG9uIHRoZSBoZWlnaHRzIG9mIGwgYW5kIHIuICopXG5cbiAgICBsZXQgY29uY2F0IHQxIHQyID1cbiAgICAgIG1hdGNoICh0MSwgdDIpIHdpdGhcbiAgICAgICAgKEVtcHR5LCB0KSAtPiB0XG4gICAgICB8ICh0LCBFbXB0eSkgLT4gdFxuICAgICAgfCAoXywgXykgLT5cbiAgICAgICAgICBsZXQgKHgsIGQpID0gbWluX2JpbmRpbmcgdDIgaW5cbiAgICAgICAgICBqb2luIHQxIHggZCAocmVtb3ZlX21pbl9iaW5kaW5nIHQyKVxuXG4gICAgbGV0IGNvbmNhdF9vcl9qb2luIHQxIHYgZCB0MiA9XG4gICAgICBtYXRjaCBkIHdpdGhcbiAgICAgIHwgU29tZSBkIC0+IGpvaW4gdDEgdiBkIHQyXG4gICAgICB8IE5vbmUgLT4gY29uY2F0IHQxIHQyXG5cbiAgICBsZXQgcmVjIHNwbGl0IHggPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPlxuICAgICAgICAgIChFbXB0eSwgTm9uZSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB4IHYgaW5cbiAgICAgICAgICBpZiBjID0gMCB0aGVuIChsLCBTb21lIGQsIHIpXG4gICAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICBsZXQgKGxsLCBwcmVzLCBybCkgPSBzcGxpdCB4IGwgaW4gKGxsLCBwcmVzLCBqb2luIHJsIHYgZCByKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxldCAobHIsIHByZXMsIHJyKSA9IHNwbGl0IHggciBpbiAoam9pbiBsIHYgZCBsciwgcHJlcywgcnIpXG5cbiAgICBsZXQgcmVjIG1lcmdlIGYgczEgczIgPVxuICAgICAgbWF0Y2ggKHMxLCBzMikgd2l0aFxuICAgICAgICAoRW1wdHksIEVtcHR5KSAtPiBFbXB0eVxuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sIF8pIHdoZW4gaDEgPj0gaGVpZ2h0IHMyIC0+XG4gICAgICAgICAgbGV0IChsMiwgZDIsIHIyKSA9IHNwbGl0IHYxIHMyIGluXG4gICAgICAgICAgY29uY2F0X29yX2pvaW4gKG1lcmdlIGYgbDEgbDIpIHYxIChmIHYxIChTb21lIGQxKSBkMikgKG1lcmdlIGYgcjEgcjIpXG4gICAgICB8IChfLCBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyfSkgLT5cbiAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICBjb25jYXRfb3Jfam9pbiAobWVyZ2UgZiBsMSBsMikgdjIgKGYgdjIgZDEgKFNvbWUgZDIpKSAobWVyZ2UgZiByMSByMilcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgbGV0IHJlYyB1bmlvbiBmIHMxIHMyID1cbiAgICAgIG1hdGNoIChzMSwgczIpIHdpdGhcbiAgICAgIHwgKEVtcHR5LCBzKSB8IChzLCBFbXB0eSkgLT4gc1xuICAgICAgfCAoTm9kZSB7bD1sMTsgdj12MTsgZD1kMTsgcj1yMTsgaD1oMX0sXG4gICAgICAgICBOb2RlIHtsPWwyOyB2PXYyOyBkPWQyOyByPXIyOyBoPWgyfSkgLT5cbiAgICAgICAgICBpZiBoMSA+PSBoMiB0aGVuXG4gICAgICAgICAgICBsZXQgKGwyLCBkMiwgcjIpID0gc3BsaXQgdjEgczIgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjEgZDEgclxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGNvbmNhdF9vcl9qb2luIGwgdjEgKGYgdjEgZDEgZDIpIHJcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBsZXQgKGwxLCBkMSwgcjEpID0gc3BsaXQgdjIgczEgaW5cbiAgICAgICAgICAgIGxldCBsID0gdW5pb24gZiBsMSBsMiBhbmQgciA9IHVuaW9uIGYgcjEgcjIgaW5cbiAgICAgICAgICAgIG1hdGNoIGQxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBqb2luIGwgdjIgZDIgclxuICAgICAgICAgICAgfCBTb21lIGQxIC0+IGNvbmNhdF9vcl9qb2luIGwgdjIgKGYgdjIgZDEgZDIpIHJcblxuICAgIGxldCByZWMgZmlsdGVyIHAgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiBFbXB0eVxuICAgICAgfCBOb2RlIHtsOyB2OyBkOyByfSBhcyBtIC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgbCcgPSBmaWx0ZXIgcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyIHAgciBpblxuICAgICAgICAgIGlmIHB2ZCB0aGVuIGlmIGw9PWwnICYmIHI9PXInIHRoZW4gbSBlbHNlIGpvaW4gbCcgdiBkIHInXG4gICAgICAgICAgZWxzZSBjb25jYXQgbCcgcidcblxuICAgIGxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgICAgICAgRW1wdHkgLT4gRW1wdHlcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT5cbiAgICAgICAgICAoKiBjYWxsIFtmXSBpbiB0aGUgZXhwZWN0ZWQgbGVmdC10by1yaWdodCBvcmRlciAqKVxuICAgICAgICAgIGxldCBsJyA9IGZpbHRlcl9tYXAgZiBsIGluXG4gICAgICAgICAgbGV0IGZ2ZCA9IGYgdiBkIGluXG4gICAgICAgICAgbGV0IHInID0gZmlsdGVyX21hcCBmIHIgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBmdmQgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGQnIC0+IGpvaW4gbCcgdiBkJyByJ1xuICAgICAgICAgICAgfCBOb25lIC0+IGNvbmNhdCBsJyByJ1xuICAgICAgICAgIGVuZFxuXG4gICAgbGV0IHJlYyBwYXJ0aXRpb24gcCA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IChFbXB0eSwgRW1wdHkpXG4gICAgICB8IE5vZGUge2w7IHY7IGQ7IHJ9IC0+XG4gICAgICAgICAgKCogY2FsbCBbcF0gaW4gdGhlIGV4cGVjdGVkIGxlZnQtdG8tcmlnaHQgb3JkZXIgKilcbiAgICAgICAgICBsZXQgKGx0LCBsZikgPSBwYXJ0aXRpb24gcCBsIGluXG4gICAgICAgICAgbGV0IHB2ZCA9IHAgdiBkIGluXG4gICAgICAgICAgbGV0IChydCwgcmYpID0gcGFydGl0aW9uIHAgciBpblxuICAgICAgICAgIGlmIHB2ZFxuICAgICAgICAgIHRoZW4gKGpvaW4gbHQgdiBkIHJ0LCBjb25jYXQgbGYgcmYpXG4gICAgICAgICAgZWxzZSAoY29uY2F0IGx0IHJ0LCBqb2luIGxmIHYgZCByZilcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGtleSAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICAgIEVtcHR5IC0+IGVcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gY29uc19lbnVtIGwgKE1vcmUodiwgZCwgciwgZSkpXG5cbiAgICBsZXQgY29tcGFyZSBjbXAgbTEgbTIgPVxuICAgICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gMFxuICAgICAgICB8IChFbmQsIF8pICAtPiAtMVxuICAgICAgICB8IChfLCBFbmQpIC0+IDFcbiAgICAgICAgfCAoTW9yZSh2MSwgZDEsIHIxLCBlMSksIE1vcmUodjIsIGQyLCByMiwgZTIpKSAtPlxuICAgICAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBsZXQgYyA9IGNtcCBkMSBkMiBpblxuICAgICAgICAgICAgaWYgYyA8PiAwIHRoZW4gYyBlbHNlXG4gICAgICAgICAgICBjb21wYXJlX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGVxdWFsX2F1eCBlMSBlMiA9XG4gICAgICAgICAgbWF0Y2ggKGUxLCBlMikgd2l0aFxuICAgICAgICAgIChFbmQsIEVuZCkgLT4gdHJ1ZVxuICAgICAgICB8IChFbmQsIF8pICAtPiBmYWxzZVxuICAgICAgICB8IChfLCBFbmQpIC0+IGZhbHNlXG4gICAgICAgIHwgKE1vcmUodjEsIGQxLCByMSwgZTEpLCBNb3JlKHYyLCBkMiwgcjIsIGUyKSkgLT5cbiAgICAgICAgICAgIE9yZC5jb21wYXJlIHYxIHYyID0gMCAmJiBjbXAgZDEgZDIgJiZcbiAgICAgICAgICAgIGVxdWFsX2F1eCAoY29uc19lbnVtIHIxIGUxKSAoY29uc19lbnVtIHIyIGUyKVxuICAgICAgaW4gZXF1YWxfYXV4IChjb25zX2VudW0gbTEgRW5kKSAoY29uc19lbnVtIG0yIEVuZClcblxuICAgIGxldCByZWMgY2FyZGluYWwgPSBmdW5jdGlvblxuICAgICAgICBFbXB0eSAtPiAwXG4gICAgICB8IE5vZGUge2w7IHJ9IC0+IGNhcmRpbmFsIGwgKyAxICsgY2FyZGluYWwgclxuXG4gICAgbGV0IHJlYyBiaW5kaW5nc19hdXggYWNjdSA9IGZ1bmN0aW9uXG4gICAgICAgIEVtcHR5IC0+IGFjY3VcbiAgICAgIHwgTm9kZSB7bDsgdjsgZDsgcn0gLT4gYmluZGluZ3NfYXV4ICgodiwgZCkgOjogYmluZGluZ3NfYXV4IGFjY3UgcikgbFxuXG4gICAgbGV0IGJpbmRpbmdzIHMgPVxuICAgICAgYmluZGluZ3NfYXV4IFtdIHNcblxuICAgIGxldCBjaG9vc2UgPSBtaW5fYmluZGluZ1xuXG4gICAgbGV0IGNob29zZV9vcHQgPSBtaW5fYmluZGluZ19vcHRcblxuICAgIGxldCBhZGRfc2VxIGkgbSA9XG4gICAgICBTZXEuZm9sZF9sZWZ0IChmdW4gbSAoayx2KSAtPiBhZGQgayB2IG0pIG0gaVxuXG4gICAgbGV0IG9mX3NlcSBpID0gYWRkX3NlcSBpIGVtcHR5XG5cbiAgICBsZXQgcmVjIHNlcV9vZl9lbnVtXyBjICgpID0gbWF0Y2ggYyB3aXRoXG4gICAgICB8IEVuZCAtPiBTZXEuTmlsXG4gICAgICB8IE1vcmUgKGssdix0LHJlc3QpIC0+IFNlcS5Db25zICgoayx2KSwgc2VxX29mX2VudW1fIChjb25zX2VudW0gdCByZXN0KSlcblxuICAgIGxldCB0b19zZXEgbSA9XG4gICAgICBzZXFfb2ZfZW51bV8gKGNvbnNfZW51bSBtIEVuZClcblxuICAgIGxldCByZWMgc25vY19lbnVtIHMgZSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgRW1wdHkgLT4gZVxuICAgICAgfCBOb2Rle2w7IHY7IGQ7IHJ9IC0+IHNub2NfZW51bSByIChNb3JlKHYsIGQsIGwsIGUpKVxuXG4gICAgbGV0IHJlYyByZXZfc2VxX29mX2VudW1fIGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICAgIHwgRW5kIC0+IFNlcS5OaWxcbiAgICAgIHwgTW9yZSAoayx2LHQscmVzdCkgLT5cbiAgICAgICAgICBTZXEuQ29ucyAoKGssdiksIHJldl9zZXFfb2ZfZW51bV8gKHNub2NfZW51bSB0IHJlc3QpKVxuXG4gICAgbGV0IHRvX3Jldl9zZXEgYyA9XG4gICAgICByZXZfc2VxX29mX2VudW1fIChzbm9jX2VudW0gYyBFbmQpXG5cbiAgICBsZXQgdG9fc2VxX2Zyb20gbG93IG0gPVxuICAgICAgbGV0IHJlYyBhdXggbG93IG0gYyA9IG1hdGNoIG0gd2l0aFxuICAgICAgICB8IEVtcHR5IC0+IGNcbiAgICAgICAgfCBOb2RlIHtsOyB2OyBkOyByOyBffSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggT3JkLmNvbXBhcmUgdiBsb3cgd2l0aFxuICAgICAgICAgICAgICB8IDAgLT4gTW9yZSAodiwgZCwgciwgYylcbiAgICAgICAgICAgICAgfCBuIHdoZW4gbjwwIC0+IGF1eCBsb3cgciBjXG4gICAgICAgICAgICAgIHwgXyAtPiBhdXggbG93IGwgKE1vcmUgKHYsIGQsIHIsIGMpKVxuICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2VxX29mX2VudW1fIChhdXggbG93IG0gRW5kKVxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9IHsgbXV0YWJsZSBjIDogJ2EgbGlzdDsgbXV0YWJsZSBsZW4gOiBpbnQ7IH1cblxuZXhjZXB0aW9uIEVtcHR5XG5cbmxldCBjcmVhdGUgKCkgPSB7IGMgPSBbXTsgbGVuID0gMDsgfVxuXG5sZXQgY2xlYXIgcyA9IHMuYyA8LSBbXTsgcy5sZW4gPC0gMFxuXG5sZXQgY29weSBzID0geyBjID0gcy5jOyBsZW4gPSBzLmxlbjsgfVxuXG5sZXQgcHVzaCB4IHMgPSBzLmMgPC0geCA6OiBzLmM7IHMubGVuIDwtIHMubGVuICsgMVxuXG5sZXQgcG9wIHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjp0bCAtPiBzLmMgPC0gdGw7IHMubGVuIDwtIHMubGVuIC0gMTsgaGRcbiAgfCBbXSAgICAgLT4gcmFpc2UgRW1wdHlcblxubGV0IHBvcF9vcHQgcyA9XG4gIG1hdGNoIHMuYyB3aXRoXG4gIHwgaGQ6OnRsIC0+IHMuYyA8LSB0bDsgcy5sZW4gPC0gcy5sZW4gLSAxOyBTb21lIGhkXG4gIHwgW10gICAgIC0+IE5vbmVcblxubGV0IHRvcCBzID1cbiAgbWF0Y2ggcy5jIHdpdGhcbiAgfCBoZDo6XyAtPiBoZFxuICB8IFtdICAgIC0+IHJhaXNlIEVtcHR5XG5cbmxldCB0b3Bfb3B0IHMgPVxuICBtYXRjaCBzLmMgd2l0aFxuICB8IGhkOjpfIC0+IFNvbWUgaGRcbiAgfCBbXSAgICAtPiBOb25lXG5cbmxldCBpc19lbXB0eSBzID0gKHMuYyA9IFtdKVxuXG5sZXQgbGVuZ3RoIHMgPSBzLmxlblxuXG5sZXQgaXRlciBmIHMgPSBMaXN0Lml0ZXIgZiBzLmNcblxubGV0IGZvbGQgZiBhY2MgcyA9IExpc3QuZm9sZF9sZWZ0IGYgYWNjIHMuY1xuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHMgPSBMaXN0LnRvX3NlcSBzLmNcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBzID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBzIGc7XG4gIHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgRnJhbmNvaXMgUG90dGllciwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgSmVyZW1pZSBEaW1pbm8sIEphbmUgU3RyZWV0IEV1cm9wZSAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIEVtcHR5XG5cbnR5cGUgJ2EgY2VsbCA9XG4gIHwgTmlsXG4gIHwgQ29ucyBvZiB7IGNvbnRlbnQ6ICdhOyBtdXRhYmxlIG5leHQ6ICdhIGNlbGwgfVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgbGVuZ3RoOiBpbnQ7XG4gIG11dGFibGUgZmlyc3Q6ICdhIGNlbGw7XG4gIG11dGFibGUgbGFzdDogJ2EgY2VsbFxufVxuXG5sZXQgY3JlYXRlICgpID0ge1xuICBsZW5ndGggPSAwO1xuICBmaXJzdCA9IE5pbDtcbiAgbGFzdCA9IE5pbFxufVxuXG5sZXQgY2xlYXIgcSA9XG4gIHEubGVuZ3RoIDwtIDA7XG4gIHEuZmlyc3QgPC0gTmlsO1xuICBxLmxhc3QgPC0gTmlsXG5cbmxldCBhZGQgeCBxID1cbiAgbGV0IGNlbGwgPSBDb25zIHtcbiAgICBjb250ZW50ID0geDtcbiAgICBuZXh0ID0gTmlsXG4gIH0gaW5cbiAgbWF0Y2ggcS5sYXN0IHdpdGhcbiAgfCBOaWwgLT5cbiAgICBxLmxlbmd0aCA8LSAxO1xuICAgIHEuZmlyc3QgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuICB8IENvbnMgbGFzdCAtPlxuICAgIHEubGVuZ3RoIDwtIHEubGVuZ3RoICsgMTtcbiAgICBsYXN0Lm5leHQgPC0gY2VsbDtcbiAgICBxLmxhc3QgPC0gY2VsbFxuXG5sZXQgcHVzaCA9XG4gIGFkZFxuXG5sZXQgcGVlayBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQgfSAtPiBjb250ZW50XG5cbmxldCBwZWVrX29wdCBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IE5vbmVcbiAgfCBDb25zIHsgY29udGVudCB9IC0+IFNvbWUgY29udGVudFxuXG5sZXQgdG9wID1cbiAgcGVla1xuXG5sZXQgdGFrZSBxID1cbiAgbWF0Y2ggcS5maXJzdCB3aXRoXG4gIHwgTmlsIC0+IHJhaXNlIEVtcHR5XG4gIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgPSBOaWwgfSAtPlxuICAgIGNsZWFyIHE7XG4gICAgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIGNvbnRlbnRcblxubGV0IHRha2Vfb3B0IHEgPVxuICBtYXRjaCBxLmZpcnN0IHdpdGhcbiAgfCBOaWwgLT4gTm9uZVxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0ID0gTmlsIH0gLT5cbiAgICBjbGVhciBxO1xuICAgIFNvbWUgY29udGVudFxuICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICBxLmxlbmd0aCA8LSBxLmxlbmd0aCAtIDE7XG4gICAgcS5maXJzdCA8LSBuZXh0O1xuICAgIFNvbWUgY29udGVudFxuXG5sZXQgcG9wID1cbiAgdGFrZVxuXG5sZXQgY29weSA9XG4gIGxldCByZWMgY29weSBxX3JlcyBwcmV2IGNlbGwgPVxuICAgIG1hdGNoIGNlbGwgd2l0aFxuICAgIHwgTmlsIC0+IHFfcmVzLmxhc3QgPC0gcHJldjsgcV9yZXNcbiAgICB8IENvbnMgeyBjb250ZW50OyBuZXh0IH0gLT5cbiAgICAgIGxldCByZXMgPSBDb25zIHsgY29udGVudDsgbmV4dCA9IE5pbCB9IGluXG4gICAgICBiZWdpbiBtYXRjaCBwcmV2IHdpdGhcbiAgICAgIHwgTmlsIC0+IHFfcmVzLmZpcnN0IDwtIHJlc1xuICAgICAgfCBDb25zIHAgLT4gcC5uZXh0IDwtIHJlc1xuICAgICAgZW5kO1xuICAgICAgY29weSBxX3JlcyByZXMgbmV4dFxuICBpblxuICBmdW4gcSAtPiBjb3B5IHsgbGVuZ3RoID0gcS5sZW5ndGg7IGZpcnN0ID0gTmlsOyBsYXN0ID0gTmlsIH0gTmlsIHEuZmlyc3RcblxubGV0IGlzX2VtcHR5IHEgPVxuICBxLmxlbmd0aCA9IDBcblxubGV0IGxlbmd0aCBxID1cbiAgcS5sZW5ndGhcblxubGV0IGl0ZXIgPVxuICBsZXQgcmVjIGl0ZXIgZiBjZWxsID1cbiAgICBtYXRjaCBjZWxsIHdpdGhcbiAgICB8IE5pbCAtPiAoKVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgZiBjb250ZW50O1xuICAgICAgaXRlciBmIG5leHRcbiAgaW5cbiAgZnVuIGYgcSAtPiBpdGVyIGYgcS5maXJzdFxuXG5sZXQgZm9sZCA9XG4gIGxldCByZWMgZm9sZCBmIGFjY3UgY2VsbCA9XG4gICAgbWF0Y2ggY2VsbCB3aXRoXG4gICAgfCBOaWwgLT4gYWNjdVxuICAgIHwgQ29ucyB7IGNvbnRlbnQ7IG5leHQgfSAtPlxuICAgICAgbGV0IGFjY3UgPSBmIGFjY3UgY29udGVudCBpblxuICAgICAgZm9sZCBmIGFjY3UgbmV4dFxuICBpblxuICBmdW4gZiBhY2N1IHEgLT4gZm9sZCBmIGFjY3UgcS5maXJzdFxuXG5sZXQgdHJhbnNmZXIgcTEgcTIgPVxuICBpZiBxMS5sZW5ndGggPiAwIHRoZW5cbiAgICBtYXRjaCBxMi5sYXN0IHdpdGhcbiAgICB8IE5pbCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHExLmxlbmd0aDtcbiAgICAgIHEyLmZpcnN0IDwtIHExLmZpcnN0O1xuICAgICAgcTIubGFzdCA8LSBxMS5sYXN0O1xuICAgICAgY2xlYXIgcTFcbiAgICB8IENvbnMgbGFzdCAtPlxuICAgICAgcTIubGVuZ3RoIDwtIHEyLmxlbmd0aCArIHExLmxlbmd0aDtcbiAgICAgIGxhc3QubmV4dCA8LSBxMS5maXJzdDtcbiAgICAgIHEyLmxhc3QgPC0gcTEubGFzdDtcbiAgICAgIGNsZWFyIHExXG5cbigqKiB7MSBJdGVyYXRvcnN9ICopXG5cbmxldCB0b19zZXEgcSA9XG4gIGxldCByZWMgYXV4IGMgKCkgPSBtYXRjaCBjIHdpdGhcbiAgICB8IE5pbCAtPiBTZXEuTmlsXG4gICAgfCBDb25zIHsgY29udGVudD14OyBuZXh0OyB9IC0+IFNlcS5Db25zICh4LCBhdXggbmV4dClcbiAgaW5cbiAgYXV4IHEuZmlyc3RcblxubGV0IGFkZF9zZXEgcSBpID0gU2VxLml0ZXIgKGZ1biB4IC0+IHB1c2ggeCBxKSBpXG5cbmxldCBvZl9zZXEgZyA9XG4gIGxldCBxID0gY3JlYXRlKCkgaW5cbiAgYWRkX3NlcSBxIGc7XG4gIHFcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTcgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSW50ZXJuYWxzIG9mIGZvcmNpbmcgbGF6eSB2YWx1ZXMuICopXG5cbnR5cGUgJ2EgdCA9ICdhIGxhenlfdFxuXG5leGNlcHRpb24gVW5kZWZpbmVkXG5cbmxldCByYWlzZV91bmRlZmluZWQgPSBPYmoucmVwciAoZnVuICgpIC0+IHJhaXNlIFVuZGVmaW5lZClcblxuZXh0ZXJuYWwgbWFrZV9mb3J3YXJkIDogT2JqLnQgLT4gT2JqLnQgLT4gdW5pdCA9IFwiY2FtbF9vYmpfbWFrZV9mb3J3YXJkXCJcblxuKCogQXNzdW1lIFtibGtdIGlzIGEgYmxvY2sgd2l0aCB0YWcgbGF6eSAqKVxubGV0IGZvcmNlX2xhenlfYmxvY2sgKGJsayA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCBjbG9zdXJlID0gKE9iai5vYmogKE9iai5maWVsZCAoT2JqLnJlcHIgYmxrKSAwKSA6IHVuaXQgLT4gJ2FyZykgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgYmxrKSAwIHJhaXNlX3VuZGVmaW5lZDtcbiAgdHJ5XG4gICAgbGV0IHJlc3VsdCA9IGNsb3N1cmUgKCkgaW5cbiAgICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gICAgcmVzdWx0XG4gIHdpdGggZSAtPlxuICAgIE9iai5zZXRfZmllbGQgKE9iai5yZXByIGJsaykgMCAoT2JqLnJlcHIgKGZ1biAoKSAtPiByYWlzZSBlKSk7XG4gICAgcmFpc2UgZVxuXG5cbigqIEFzc3VtZSBbYmxrXSBpcyBhIGJsb2NrIHdpdGggdGFnIGxhenkgKilcbmxldCBmb3JjZV92YWxfbGF6eV9ibG9jayAoYmxrIDogJ2FyZyBsYXp5X3QpID1cbiAgbGV0IGNsb3N1cmUgPSAoT2JqLm9iaiAoT2JqLmZpZWxkIChPYmoucmVwciBibGspIDApIDogdW5pdCAtPiAnYXJnKSBpblxuICBPYmouc2V0X2ZpZWxkIChPYmoucmVwciBibGspIDAgcmFpc2VfdW5kZWZpbmVkO1xuICBsZXQgcmVzdWx0ID0gY2xvc3VyZSAoKSBpblxuICBtYWtlX2ZvcndhcmQgKE9iai5yZXByIGJsaykgKE9iai5yZXByIHJlc3VsdCk7XG4gIHJlc3VsdFxuXG5cbigqIFtmb3JjZV0gaXMgbm90IHVzZWQsIHNpbmNlIFtMYXp5LmZvcmNlXSBpcyBkZWNsYXJlZCBhcyBhIHByaW1pdGl2ZVxuICAgd2hvc2UgY29kZSBpbmxpbmVzIHRoZSB0YWcgdGVzdHMgb2YgaXRzIGFyZ3VtZW50LCBleGNlcHQgd2hlbiBhZmxcbiAgIGluc3RydW1lbnRhdGlvbiBpcyB0dXJuZWQgb24uICopXG5cbmxldCBmb3JjZSAobHp2IDogJ2FyZyBsYXp5X3QpID1cbiAgKCogVXNpbmcgW1N5cy5vcGFxdWVfaWRlbnRpdHldIHByZXZlbnRzIHR3byBwb3RlbnRpYWwgcHJvYmxlbXM6XG4gICAgIC0gSWYgdGhlIHZhbHVlIGlzIGtub3duIHRvIGhhdmUgRm9yd2FyZF90YWcsIHRoZW4gaXRzIHRhZyBjb3VsZCBoYXZlXG4gICAgICAgY2hhbmdlZCBkdXJpbmcgR0MsIHNvIHRoYXQgaW5mb3JtYXRpb24gbXVzdCBiZSBmb3Jnb3R0ZW4gKHNlZSBHUFIjNzEzXG4gICAgICAgYW5kIGlzc3VlICM3MzAxKVxuICAgICAtIElmIHRoZSB2YWx1ZSBpcyBrbm93biB0byBiZSBpbW11dGFibGUsIHRoZW4gaWYgdGhlIGNvbXBpbGVyXG4gICAgICAgY2Fubm90IHByb3ZlIHRoYXQgdGhlIGxhc3QgYnJhbmNoIGlzIG5vdCB0YWtlbiBpdCB3aWxsIGlzc3VlIGFcbiAgICAgICB3YXJuaW5nIDU5IChtb2RpZmljYXRpb24gb2YgYW4gaW1tdXRhYmxlIHZhbHVlKSAqKVxuICBsZXQgbHp2ID0gU3lzLm9wYXF1ZV9pZGVudGl0eSBsenYgaW5cbiAgbGV0IHggPSBPYmoucmVwciBsenYgaW5cbiAgbGV0IHQgPSBPYmoudGFnIHggaW5cbiAgaWYgdCA9IE9iai5mb3J3YXJkX3RhZyB0aGVuIChPYmoub2JqIChPYmouZmllbGQgeCAwKSA6ICdhcmcpIGVsc2VcbiAgaWYgdCA8PiBPYmoubGF6eV90YWcgdGhlbiAoT2JqLm9iaiB4IDogJ2FyZylcbiAgZWxzZSBmb3JjZV9sYXp5X2Jsb2NrIGx6dlxuXG5cbmxldCBmb3JjZV92YWwgKGx6diA6ICdhcmcgbGF6eV90KSA9XG4gIGxldCB4ID0gT2JqLnJlcHIgbHp2IGluXG4gIGxldCB0ID0gT2JqLnRhZyB4IGluXG4gIGlmIHQgPSBPYmouZm9yd2FyZF90YWcgdGhlbiAoT2JqLm9iaiAoT2JqLmZpZWxkIHggMCkgOiAnYXJnKSBlbHNlXG4gIGlmIHQgPD4gT2JqLmxhenlfdGFnIHRoZW4gKE9iai5vYmogeCA6ICdhcmcpXG4gIGVsc2UgZm9yY2VfdmFsX2xhenlfYmxvY2sgbHp2XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIE1vZHVsZSBbTGF6eV06IGRlZmVycmVkIGNvbXB1dGF0aW9ucyAqKVxuXG5cbigqXG4gICBXQVJOSU5HOiBzb21lIHB1cnBsZSBtYWdpYyBpcyBnb2luZyBvbiBoZXJlLiAgRG8gbm90IHRha2UgdGhpcyBmaWxlXG4gICBhcyBhbiBleGFtcGxlIG9mIGhvdyB0byBwcm9ncmFtIGluIE9DYW1sLlxuKilcblxuXG4oKiBXZSBtYWtlIHVzZSBvZiB0d28gc3BlY2lhbCB0YWdzIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lOlxuICAgW2xhenlfdGFnXSBhbmQgW2ZvcndhcmRfdGFnXS5cblxuICAgQSB2YWx1ZSBvZiB0eXBlIFsnYSBMYXp5LnRdIGNhbiBiZSBvbmUgb2YgdGhyZWUgdGhpbmdzOlxuICAgMS4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2xhenlfdGFnXS4gIEl0cyBmaWVsZCBpcyBhIGNsb3N1cmUgb2ZcbiAgICAgIHR5cGUgW3VuaXQgLT4gJ2FdIHRoYXQgY29tcHV0ZXMgdGhlIHZhbHVlLlxuICAgMi4gQSBibG9jayBvZiBzaXplIDEgd2l0aCB0YWcgW2ZvcndhcmRfdGFnXS4gIEl0cyBmaWVsZCBpcyB0aGUgdmFsdWVcbiAgICAgIG9mIHR5cGUgWydhXSB0aGF0IHdhcyBjb21wdXRlZC5cbiAgIDMuIEFueXRoaW5nIGVsc2UgZXhjZXB0IGEgZmxvYXQuICBUaGlzIGhhcyB0eXBlIFsnYV0gYW5kIGlzIHRoZSB2YWx1ZVxuICAgICAgdGhhdCB3YXMgY29tcHV0ZWQuXG4gICBFeGNlcHRpb25zIGFyZSBzdG9yZWQgaW4gZm9ybWF0ICgxKS5cbiAgIFRoZSBHQyB3aWxsIG1hZ2ljYWxseSBjaGFuZ2UgdGhpbmdzIGZyb20gKDIpIHRvICgzKSBhY2NvcmRpbmcgdG8gaXRzXG4gICBmYW5jeS5cblxuICAgSWYgT0NhbWwgd2FzIGNvbmZpZ3VyZWQgd2l0aCB0aGUgLWZsYXQtZmxvYXQtYXJyYXkgb3B0aW9uICh3aGljaCBpc1xuICAgY3VycmVudGx5IHRoZSBkZWZhdWx0KSwgdGhlIGZvbGxvd2luZyBpcyBhbHNvIHRydWU6XG4gICBXZSBjYW5ub3QgdXNlIHJlcHJlc2VudGF0aW9uICgzKSBmb3IgYSBbZmxvYXQgTGF6eS50XSBiZWNhdXNlXG4gICBbY2FtbF9tYWtlX2FycmF5XSBhc3N1bWVzIHRoYXQgb25seSBhIFtmbG9hdF0gdmFsdWUgY2FuIGhhdmUgdGFnXG4gICBbRG91YmxlX3RhZ10uXG5cbiAgIFdlIGhhdmUgdG8gdXNlIHRoZSBidWlsdC1pbiB0eXBlIGNvbnN0cnVjdG9yIFtsYXp5X3RdIHRvXG4gICBsZXQgdGhlIGNvbXBpbGVyIGltcGxlbWVudCB0aGUgc3BlY2lhbCB0eXBpbmcgYW5kIGNvbXBpbGF0aW9uXG4gICBydWxlcyBmb3IgdGhlIFtsYXp5XSBrZXl3b3JkLlxuKilcblxudHlwZSAnYSB0ID0gJ2EgQ2FtbGludGVybmFsTGF6eS50XG5cbmV4Y2VwdGlvbiBVbmRlZmluZWQgPSBDYW1saW50ZXJuYWxMYXp5LlVuZGVmaW5lZFxuXG5leHRlcm5hbCBtYWtlX2ZvcndhcmQgOiAnYSAtPiAnYSBsYXp5X3QgPSBcImNhbWxfbGF6eV9tYWtlX2ZvcndhcmRcIlxuXG5leHRlcm5hbCBmb3JjZSA6ICdhIHQgLT4gJ2EgPSBcIiVsYXp5X2ZvcmNlXCJcblxuXG5sZXQgZm9yY2VfdmFsID0gQ2FtbGludGVybmFsTGF6eS5mb3JjZV92YWxcblxubGV0IGZyb21fZnVuIChmIDogdW5pdCAtPiAnYXJnKSA9XG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmoubGF6eV90YWcgMSBpblxuICBPYmouc2V0X2ZpZWxkIHggMCAoT2JqLnJlcHIgZik7XG4gIChPYmoub2JqIHggOiAnYXJnIHQpXG5cbmxldCBmcm9tX3ZhbCAodiA6ICdhcmcpID1cbiAgbGV0IHQgPSBPYmoudGFnIChPYmoucmVwciB2KSBpblxuICBpZiB0ID0gT2JqLmZvcndhcmRfdGFnIHx8IHQgPSBPYmoubGF6eV90YWcgfHwgdCA9IE9iai5kb3VibGVfdGFnIHRoZW4gYmVnaW5cbiAgICBtYWtlX2ZvcndhcmQgdlxuICBlbmQgZWxzZSBiZWdpblxuICAgIChPYmoubWFnaWMgdiA6ICdhcmcgdClcbiAgZW5kXG5cblxubGV0IGlzX3ZhbCAobCA6ICdhcmcgdCkgPSBPYmoudGFnIChPYmoucmVwciBsKSA8PiBPYmoubGF6eV90YWdcblxubGV0IGxhenlfZnJvbV9mdW4gPSBmcm9tX2Z1blxuXG5sZXQgbGF6eV9mcm9tX3ZhbCA9IGZyb21fdmFsXG5cbmxldCBsYXp5X2lzX3ZhbCA9IGlzX3ZhbFxuXG5cbmxldCBtYXAgZiB4ID1cbiAgbGF6eSAoZiAoZm9yY2UgeCkpXG5cbmxldCBtYXBfdmFsIGYgeCA9XG4gIGlmIGlzX3ZhbCB4XG4gIHRoZW4gbGF6eV9mcm9tX3ZhbCAoZiAoZm9yY2UgeCkpXG4gIGVsc2UgbGF6eSAoZiAoZm9yY2UgeCkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgIERhbmllbCBkZSBSYXVnbGF1ZHJlLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk3IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgJ2EgdCA9ICdhIGNlbGwgb3B0aW9uXG5hbmQgJ2EgY2VsbCA9IHsgbXV0YWJsZSBjb3VudCA6IGludDsgbXV0YWJsZSBkYXRhIDogJ2EgZGF0YSB9XG5hbmQgJ2EgZGF0YSA9XG4gICAgU2VtcHR5XG4gIHwgU2NvbnMgb2YgJ2EgKiAnYSBkYXRhXG4gIHwgU2FwcCBvZiAnYSBkYXRhICogJ2EgZGF0YVxuICB8IFNsYXp5IG9mICdhIGRhdGEgTGF6eS50XG4gIHwgU2dlbiBvZiAnYSBnZW5cbiAgfCBTYnVmZmlvIDogYnVmZmlvIC0+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+ICFuZXdfbGVuIGRvIG5ld19sZW4gOj0gMiAqICFuZXdfbGVuIGRvbmU7XG4gIGlmICFuZXdfbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBpZiBvbGRfcG9zICsgbW9yZSA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGhcbiAgICB0aGVuIG5ld19sZW4gOj0gU3lzLm1heF9zdHJpbmdfbGVuZ3RoXG4gICAgZWxzZSBmYWlsd2l0aCBcIkJ1ZmZlci5hZGQ6IGNhbm5vdCBncm93IGJ1ZmZlclwiXG4gIGVuZDtcbiAgbGV0IG5ld19idWZmZXIgPSBCeXRlcy5jcmVhdGUgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCeXRlcy5ibGl0IGIuYnVmZmVyIDAgbmV3X2J1ZmZlciAwIGIucG9zaXRpb247XG4gIGIuYnVmZmVyIDwtIG5ld19idWZmZXI7XG4gIGIubGVuZ3RoIDwtICFuZXdfbGVuO1xuICBhc3NlcnQgKGIucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoKTtcbiAgYXNzZXJ0IChvbGRfcG9zICsgbW9yZSA8PSBiLmxlbmd0aCk7XG4gICgpXG4gICgqIE5vdGU6IHRoZXJlIGFyZSB2YXJpb3VzIHNpdHVhdGlvbnMgKHByZWVtcHRpdmUgdGhyZWFkcywgc2lnbmFscyBhbmRcbiAgICAgZ2MgZmluYWxpemVycykgd2hlcmUgT0NhbWwgY29kZSBtYXkgYmUgcnVuIGFzeW5jaHJvbm91c2x5OyBpblxuICAgICBwYXJ0aWN1bGFyLCB0aGVyZSBtYXkgYmUgYSByYWNlIHdpdGggYW5vdGhlciB1c2VyIG9mIFtiXSwgY2hhbmdpbmdcbiAgICAgaXRzIG11dGFibGUgZmllbGRzIGluIHRoZSBtaWRkbGUgb2YgdGhlIFtyZXNpemVdIGNhbGwuIFRoZSBCdWZmZXJcbiAgICAgbW9kdWxlIGRvZXMgbm90IHByb3ZpZGUgYW55IGNvcnJlY3RuZXNzIGd1YXJhbnRlZSBpZiB0aGF0IGhhcHBlbnMsXG4gICAgIGJ1dCB3ZSBtdXN0IHN0aWxsIGVuc3VyZSB0aGF0IHRoZSBkYXRhc3RydWN0dXJlIGludmFyaWFudHMgaG9sZCBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAtLSBhcyB3ZSBwbGFuIHRvIHVzZSBbdW5zYWZlX3tnZXQsc2V0fV0uXG5cbiAgICAgVGhlcmUgYXJlIHR3byBwb3RlbnRpYWwgYWxsb2NhdGlvbiBwb2ludHMgaW4gdGhpcyBmdW5jdGlvbixcbiAgICAgW3JlZl0gYW5kIFtCeXRlcy5jcmVhdGVdLCBidXQgYWxsIHJlYWRzIGFuZCB3cml0ZXMgdG8gdGhlIGZpZWxkc1xuICAgICBvZiBbYl0gaGFwcGVuIGJlZm9yZSBib3RoIG9mIHRoZW0gb3IgYWZ0ZXIgYm90aCBvZiB0aGVtLlxuXG4gICAgIFdlIHRoZXJlZm9yZSBhc3N1bWUgdGhhdCBbYi5wb3NpdGlvbl0gbWF5IGNoYW5nZSBhdCB0aGVzZSBhbGxvY2F0aW9ucyxcbiAgICAgYW5kIGNoZWNrIHRoYXQgdGhlIFtiLnBvc2l0aW9uICsgbW9yZSA8PSBiLmxlbmd0aF0gcG9zdGNvbmRpdGlvblxuICAgICBob2xkcyBmb3IgYm90aCB2YWx1ZXMgb2YgW2IucG9zaXRpb25dLCBiZWZvcmUgb3IgYWZ0ZXIgdGhlIGZ1bmN0aW9uXG4gICAgIGlzIGNhbGxlZC4gTW9yZSBwcmVjaXNlbHksIHRoZSBmb2xsb3dpbmcgaW52YXJpYW50cyBtdXN0IGhvbGQgaWYgdGhlXG4gICAgIGZ1bmN0aW9uIHJldHVybnMgY29ycmVjdGx5LCBpbiBhZGRpdGlvbiB0byB0aGUgdXN1YWwgYnVmZmVyIGludmFyaWFudHM6XG4gICAgIC0gW29sZChiLnBvc2l0aW9uKSArIG1vcmUgPD0gbmV3KGIubGVuZ3RoKV1cbiAgICAgLSBbbmV3KGIucG9zaXRpb24pICsgbW9yZSA8PSBuZXcoYi5sZW5ndGgpXVxuICAgICAtIFtvbGQoYi5sZW5ndGgpIDw9IG5ldyhiLmxlbmd0aCldXG5cbiAgICAgTm90ZTogW2IucG9zaXRpb24gKyBtb3JlIDw9IG9sZChiLmxlbmd0aCldIGRvZXMgKm5vdCpcbiAgICAgaG9sZCBpbiBnZW5lcmFsLCBhcyBpdCBpcyBwcmVjaXNlbHkgdGhlIGNhc2Ugd2hlcmUgeW91IG5lZWRcbiAgICAgdG8gY2FsbCBbcmVzaXplXSB0byBpbmNyZWFzZSBbYi5sZW5ndGhdLlxuXG4gICAgIE5vdGU6IFthc3NlcnRdIGFib3ZlIGRvZXMgbm90IG1lYW4gdGhhdCB3ZSBrbm93IHRoZSBjb25kaXRpb25zXG4gICAgIGFsd2F5cyBob2xkLCBidXQgdGhhdCB0aGUgZnVuY3Rpb24gbWF5IHJldHVybiBjb3JyZWN0bHlcbiAgICAgb25seSBpZiB0aGV5IGhvbGQuXG5cbiAgICAgTm90ZTogdGhlIG90aGVyIGZ1bmN0aW9ucyBpbiB0aGlzIG1vZHVsZSBkb2VzIG5vdCBuZWVkXG4gICAgIHRvIGJlIGNoZWNrZWQgd2l0aCB0aGlzIGxldmVsIG9mIHNjcnV0aW55LCBnaXZlbiB0aGF0IHRoZXlcbiAgICAgcmVhZC93cml0ZSB0aGUgYnVmZmVyIGltbWVkaWF0ZWx5IGFmdGVyIGNoZWNraW5nIHRoYXRcbiAgICAgW2IucG9zaXRpb24gKyBtb3JlIDw9IGIubGVuZ3RoXSBob2xkIG9yIGNhbGxpbmcgW3Jlc2l6ZV0uXG4gICopXG5cbmxldCBhZGRfY2hhciBiIGMgPVxuICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICBpZiBwb3MgPj0gYi5sZW5ndGggdGhlbiByZXNpemUgYiAxO1xuICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIHBvcyBjO1xuICBiLnBvc2l0aW9uIDwtIHBvcyArIDFcblxuIGxldCBhZGRfdXRmXzhfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgIGFkZF9jaGFyIGIgKENoYXIudW5zYWZlX2NociB1KVxuIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhDMCBsb3IgKHUgbHNyIDYpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAzID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAzO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RTAgbG9yICh1IGxzciAxMikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgM1xuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEYwIGxvciAodSBsc3IgMTgpKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCeXRlcy51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQnl0ZXMudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIEJ5dGVzLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IGFkZF9zdWJzdHJpbmcgYiBzIG9mZnNldCBsZW4gPVxuICBpZiBvZmZzZXQgPCAwIHx8IGxlbiA8IDAgfHwgb2Zmc2V0ID4gU3RyaW5nLmxlbmd0aCBzIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIG9mZnNldCBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbjtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9zdWJieXRlcyBiIHMgb2Zmc2V0IGxlbiA9XG4gIGFkZF9zdWJzdHJpbmcgYiAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBzKSBvZmZzZXQgbGVuXG5cbmxldCBhZGRfc3RyaW5nIGIgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIEJ5dGVzLnVuc2FmZV9ibGl0X3N0cmluZyBzIDAgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW47XG4gIGIucG9zaXRpb24gPC0gbmV3X3Bvc2l0aW9uXG5cbmxldCBhZGRfYnl0ZXMgYiBzID0gYWRkX3N0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpXG5cbmxldCBhZGRfYnVmZmVyIGIgYnMgPVxuICBhZGRfc3ViYnl0ZXMgYiBicy5idWZmZXIgMCBicy5wb3NpdGlvblxuXG4oKiB0aGlzIChwcml2YXRlKSBmdW5jdGlvbiBjb3VsZCBtb3ZlIGludG8gdGhlIHN0YW5kYXJkIGxpYnJhcnkgKilcbmxldCByZWFsbHlfaW5wdXRfdXBfdG8gaWMgYnVmIG9mcyBsZW4gPVxuICBsZXQgcmVjIGxvb3AgaWMgYnVmIH5hbHJlYWR5X3JlYWQgfm9mcyB+dG9fcmVhZCA9XG4gICAgaWYgdG9fcmVhZCA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiBvZnMgdG9fcmVhZCBpblxuICAgICAgaWYgciA9IDAgdGhlbiBhbHJlYWR5X3JlYWRcbiAgICAgIGVsc2UgYmVnaW5cbiAgICAgICAgbGV0IGFscmVhZHlfcmVhZCA9IGFscmVhZHlfcmVhZCArIHIgaW5cbiAgICAgICAgbGV0IG9mcyA9IG9mcyArIHIgaW5cbiAgICAgICAgbGV0IHRvX3JlYWQgPSB0b19yZWFkIC0gciBpblxuICAgICAgICBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkIH5vZnMgfnRvX3JlYWRcbiAgICAgIGVuZFxuICAgIGVuZFxuICBpbiBsb29wIGljIGJ1ZiB+YWxyZWFkeV9yZWFkOjAgfm9mcyB+dG9fcmVhZDpsZW5cblxuXG5sZXQgdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuID1cbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBsZXQgbiA9IHJlYWxseV9pbnB1dF91cF90byBpYyBiLmJ1ZmZlciBiLnBvc2l0aW9uIGxlbiBpblxuICAoKiBUaGUgYXNzZXJ0aW9uIGJlbG93IG1heSBmYWlsIGluIHdlaXJkIHNjZW5hcmlvIHdoZXJlXG4gICAgIHRocmVhZGVkL2ZpbmFsaXplciBjb2RlLCBydW4gYXN5bmNocm9ub3VzbHkgZHVyaW5nIHRoZVxuICAgICBbcmVhbGx5X2lucHV0X3VwX3RvXSBjYWxsLCByYWNlcyBvbiB0aGUgYnVmZmVyOyB3ZSBkb24ndCBlbnN1cmVcbiAgICAgY29ycmVjdG5lc3MgaW4gdGhpcyBjYXNlLCBidXQgbmVlZCB0byBwcmVzZXJ2ZSB0aGUgaW52YXJpYW50cyBmb3JcbiAgICAgbWVtb3J5LXNhZmV0eSAoc2VlIGRpc2N1c3Npb24gb2YgW3Jlc2l6ZV0pLiAqKVxuICBhc3NlcnQgKGIucG9zaXRpb24gKyBuIDw9IGIubGVuZ3RoKTtcbiAgYi5wb3NpdGlvbiA8LSBiLnBvc2l0aW9uICsgbjtcbiAgblxuXG5sZXQgYWRkX2NoYW5uZWwgYiBpYyBsZW4gPVxuICBpZiBsZW4gPCAwIHx8IGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuICAgKCogUFIjNTAwNCAqKVxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLmFkZF9jaGFubmVsXCI7XG4gIGxldCBuID0gdW5zYWZlX2FkZF9jaGFubmVsX3VwX3RvIGIgaWMgbGVuIGluXG4gICgqIEl0IGlzIGludGVudGlvbmFsIHRoYXQgYSBjb25zdW1lciBjYXRjaGluZyBFbmRfb2ZfZmlsZVxuICAgICB3aWxsIHNlZSB0aGUgZGF0YSB3cml0dGVuIChzZWUgIzY3MTksICM3MTM2KS4gKilcbiAgaWYgbiA8IGxlbiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAoKVxuXG5sZXQgb3V0cHV0X2J1ZmZlciBvYyBiID1cbiAgb3V0cHV0IG9jIGIuYnVmZmVyIDAgYi5wb3NpdGlvblxuXG5sZXQgY2xvc2luZyA9IGZ1bmN0aW9uXG4gIHwgJygnIC0+ICcpJ1xuICB8ICd7JyAtPiAnfSdcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4oKiBvcGVuaW5nIGFuZCBjbG9zaW5nOiBvcGVuIGFuZCBjbG9zZSBjaGFyYWN0ZXJzLCB0eXBpY2FsbHkgKCBhbmQgKVxuICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICBzOiB0aGUgc3RyaW5nIHdoZXJlIHdlIGFyZSBzZWFyY2hpbmdcbiAgIHN0YXJ0OiB0aGUgaW5kZXggd2hlcmUgd2Ugc3RhcnQgdGhlIHNlYXJjaC4gKilcbmxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gIGxldCByZWMgYWR2YW5jZSBrIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICBpZiBzLltpXSA9IGNsb3NpbmcgdGhlblxuICAgICAgaWYgayA9IDAgdGhlbiBpIGVsc2UgYWR2YW5jZSAoayAtIDEpIChpICsgMSkgbGltXG4gICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgYWR2YW5jZSBrIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIHN0YXJ0ID1cbiAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICBpZiBpID49IGxpbSB0aGVuIGxpbSBlbHNlXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICB8IF8gLT4gaSBpblxuICBhZHZhbmNlIHN0YXJ0IChTdHJpbmcubGVuZ3RoIHMpXG5cbigqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG5sZXQgZmluZF9pZGVudCBzIHN0YXJ0IGxpbSA9XG4gIGlmIHN0YXJ0ID49IGxpbSB0aGVuIHJhaXNlIE5vdF9mb3VuZCBlbHNlXG4gIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICgqIFBhcmVudGhlc2l6ZWQgaWRlbnQgPyAqKVxuICB8ICcoJyB8ICd7JyBhcyBjIC0+XG4gICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX2Nsb3NpbmcgYyAoY2xvc2luZyBjKSAwIHMgbmV3X3N0YXJ0IGluXG4gICAgIFN0cmluZy5zdWIgcyBuZXdfc3RhcnQgKHN0b3AgLSBzdGFydCAtIDEpLCBzdG9wICsgMVxuICAoKiBSZWd1bGFyIGlkZW50ICopXG4gIHwgXyAtPlxuICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fbm9uX2FscGhhIHMgKHN0YXJ0ICsgMSkgaW5cbiAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbigqIFN1YnN0aXR1dGUgJGlkZW50LCAkKGlkZW50KSwgb3IgJHtpZGVudH0gaW4gcyxcbiAgICBhY2NvcmRpbmcgdG8gdGhlIGZ1bmN0aW9uIG1hcHBpbmcgZi4gKilcbmxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gIGxldCBsaW0gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IHJlYyBzdWJzdCBwcmV2aW91cyBpID1cbiAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJyQnIGFzIGN1cnJlbnQgd2hlbiBwcmV2aW91cyA9ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgc3Vic3QgJyAnIChpICsgMSlcbiAgICAgIHwgJyQnIC0+XG4gICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICBsZXQgaWRlbnQsIG5leHRfaSA9IGZpbmRfaWRlbnQgcyBqIGxpbSBpblxuICAgICAgICAgYWRkX3N0cmluZyBiIChmIGlkZW50KTtcbiAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgIHwgY3VycmVudCB3aGVuIHByZXZpb3VzID09ICdcXFxcJyAtPlxuICAgICAgICAgYWRkX2NoYXIgYiAnXFxcXCc7XG4gICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgfCAnXFxcXCcgYXMgY3VycmVudCAtPlxuICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICB8IGN1cnJlbnQgLT5cbiAgICAgICAgIGFkZF9jaGFyIGIgY3VycmVudDtcbiAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgIGVuZCBlbHNlXG4gICAgaWYgcHJldmlvdXMgPSAnXFxcXCcgdGhlbiBhZGRfY2hhciBiIHByZXZpb3VzIGluXG4gIHN1YnN0ICcgJyAwXG5cbmxldCB0cnVuY2F0ZSBiIGxlbiA9XG4gICAgaWYgbGVuIDwgMCB8fCBsZW4gPiBsZW5ndGggYiB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgZWxzZVxuICAgICAgYi5wb3NpdGlvbiA8LSBsZW5cblxuKCoqIHsxIEl0ZXJhdG9yc30gKilcblxubGV0IHRvX3NlcSBiID1cbiAgbGV0IHJlYyBhdXggaSAoKSA9XG4gICAgKCogTm90ZSB0aGF0IGIucG9zaXRpb24gaXMgbm90IGEgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBsaWZ0ZWQgb3V0IG9mIGF1eCAqKVxuICAgIGlmIGkgPj0gYi5wb3NpdGlvbiB0aGVuIFNlcS5OaWxcbiAgICBlbHNlXG4gICAgICBsZXQgeCA9IEJ5dGVzLnVuc2FmZV9nZXQgYi5idWZmZXIgaSBpblxuICAgICAgU2VxLkNvbnMgKHgsIGF1eCAoaSsxKSlcbiAgaW5cbiAgYXV4IDBcblxubGV0IHRvX3NlcWkgYiA9XG4gIGxldCByZWMgYXV4IGkgKCkgPVxuICAgICgqIE5vdGUgdGhhdCBiLnBvc2l0aW9uIGlzIG5vdCBhIGNvbnN0YW50IGFuZCBjYW5ub3QgYmUgbGlmdGVkIG91dCBvZiBhdXggKilcbiAgICBpZiBpID49IGIucG9zaXRpb24gdGhlbiBTZXEuTmlsXG4gICAgZWxzZVxuICAgICAgbGV0IHggPSBCeXRlcy51bnNhZmVfZ2V0IGIuYnVmZmVyIGkgaW5cbiAgICAgIFNlcS5Db25zICgoaSx4KSwgYXV4IChpKzEpKVxuICBpblxuICBhdXggMFxuXG5sZXQgYWRkX3NlcSBiIHNlcSA9IFNlcS5pdGVyIChhZGRfY2hhciBiKSBzZXFcblxubGV0IG9mX3NlcSBpID1cbiAgbGV0IGIgPSBjcmVhdGUgMzIgaW5cbiAgYWRkX3NlcSBiIGk7XG4gIGJcblxuKCoqIHs2IEJpbmFyeSBlbmNvZGluZyBvZiBpbnRlZ2Vyc30gKilcblxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ4IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlYnl0ZXNfdW5zYWZlX3NldFwiXG5leHRlcm5hbCB1bnNhZmVfc2V0X2ludDE2IDogYnl0ZXMgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQxNnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQzMiA6IGJ5dGVzIC0+IGludCAtPiBpbnQzMiAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQzMnVcIlxuZXh0ZXJuYWwgdW5zYWZlX3NldF9pbnQ2NCA6IGJ5dGVzIC0+IGludCAtPiBpbnQ2NCAtPiB1bml0ID0gXCIlY2FtbF9ieXRlc19zZXQ2NHVcIlxuZXh0ZXJuYWwgc3dhcDE2IDogaW50IC0+IGludCA9IFwiJWJzd2FwMTZcIlxuZXh0ZXJuYWwgc3dhcDMyIDogaW50MzIgLT4gaW50MzIgPSBcIiVic3dhcF9pbnQzMlwiXG5leHRlcm5hbCBzd2FwNjQgOiBpbnQ2NCAtPiBpbnQ2NCA9IFwiJWJzd2FwX2ludDY0XCJcblxuXG5sZXQgYWRkX2ludDggYiB4ID1cbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyAxIGluXG4gIGlmIG5ld19wb3NpdGlvbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMTtcbiAgdW5zYWZlX3NldF9pbnQ4IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDIgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICB1bnNhZmVfc2V0X2ludDE2IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQzMl9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDQgaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICB1bnNhZmVfc2V0X2ludDMyIGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQ2NF9uZSBiIHggPVxuICBsZXQgbmV3X3Bvc2l0aW9uID0gYi5wb3NpdGlvbiArIDggaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA4O1xuICB1bnNhZmVfc2V0X2ludDY0IGIuYnVmZmVyIGIucG9zaXRpb24geDtcbiAgYi5wb3NpdGlvbiA8LSBuZXdfcG9zaXRpb25cblxubGV0IGFkZF9pbnQxNl9sZSBiIHggPVxuICBhZGRfaW50MTZfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiBzd2FwMTYgeCBlbHNlIHgpXG5cbmxldCBhZGRfaW50MTZfYmUgYiB4ID1cbiAgYWRkX2ludDE2X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4geCBlbHNlIHN3YXAxNiB4KVxuXG5sZXQgYWRkX2ludDMyX2xlIGIgeCA9XG4gIGFkZF9pbnQzMl9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHN3YXAzMiB4IGVsc2UgeClcblxubGV0IGFkZF9pbnQzMl9iZSBiIHggPVxuICBhZGRfaW50MzJfbmUgYiAoaWYgU3lzLmJpZ19lbmRpYW4gdGhlbiB4IGVsc2Ugc3dhcDMyIHgpXG5cbmxldCBhZGRfaW50NjRfbGUgYiB4ID1cbiAgYWRkX2ludDY0X25lIGIgKGlmIFN5cy5iaWdfZW5kaWFuIHRoZW4gc3dhcDY0IHggZWxzZSB4KVxuXG5sZXQgYWRkX2ludDY0X2JlIGIgeCA9XG4gIGFkZF9pbnQ2NF9uZSBiIChpZiBTeXMuYmlnX2VuZGlhbiB0aGVuIHggZWxzZSBzd2FwNjQgeClcblxubGV0IGFkZF91aW50OCA9IGFkZF9pbnQ4XG5sZXQgYWRkX3VpbnQxNl9uZSA9IGFkZF9pbnQxNl9uZVxubGV0IGFkZF91aW50MTZfbGUgPSBhZGRfaW50MTZfbGVcbmxldCBhZGRfdWludDE2X2JlID0gYWRkX2ludDE2X2JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgQmVub2l0IFZhdWdvbiwgRU5TVEEgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDE0IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICgqIFRvb2xzIHRvIG1hbmlwdWxhdGUgc2Nhbm5pbmcgc2V0IG9mIGNoYXJzIChzZWUgJVsuLi5dKSAqKVxuXG50eXBlIG11dGFibGVfY2hhcl9zZXQgPSBieXRlc1xuXG4oKiBDcmVhdGUgYSBmcmVzaCwgZW1wdHksIG11dGFibGUgY2hhciBzZXQuICopXG5sZXQgY3JlYXRlX2NoYXJfc2V0ICgpID0gQnl0ZXMubWFrZSAzMiAnXFwwMDAnXG5cbigqIEFkZCBhIGNoYXIgaW4gYSBtdXRhYmxlIGNoYXIgc2V0LiAqKVxubGV0IGFkZF9pbl9jaGFyX3NldCBjaGFyX3NldCBjID1cbiAgbGV0IGluZCA9IGludF9vZl9jaGFyIGMgaW5cbiAgbGV0IHN0cl9pbmQgPSBpbmQgbHNyIDMgYW5kIG1hc2sgPSAxIGxzbCAoaW5kIGxhbmQgMGIxMTEpIGluXG4gIEJ5dGVzLnNldCBjaGFyX3NldCBzdHJfaW5kXG4gICAgKGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciAoQnl0ZXMuZ2V0IGNoYXJfc2V0IHN0cl9pbmQpIGxvciBtYXNrKSlcblxubGV0IGZyZWV6ZV9jaGFyX3NldCBjaGFyX3NldCA9XG4gIEJ5dGVzLnRvX3N0cmluZyBjaGFyX3NldFxuXG4oKiBDb21wdXRlIHRoZSBjb21wbGVtZW50IG9mIGEgY2hhciBzZXQuICopXG5sZXQgcmV2X2NoYXJfc2V0IGNoYXJfc2V0ID1cbiAgbGV0IGNoYXJfc2V0JyA9IGNyZWF0ZV9jaGFyX3NldCAoKSBpblxuICBmb3IgaSA9IDAgdG8gMzEgZG9cbiAgICBCeXRlcy5zZXQgY2hhcl9zZXQnIGlcbiAgICAgIChjaGFyX29mX2ludCAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgaSkgbHhvciAweEZGKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgY2hhcl9zZXQnXG5cbigqIFJldHVybiB0cnVlIGlmIGEgYGMnIGlzIGluIGBjaGFyX3NldCcuICopXG5sZXQgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyA9XG4gIGxldCBpbmQgPSBpbnRfb2ZfY2hhciBjIGluXG4gIGxldCBzdHJfaW5kID0gaW5kIGxzciAzIGFuZCBtYXNrID0gMSBsc2wgKGluZCBsYW5kIDBiMTExKSBpblxuICAoaW50X29mX2NoYXIgKFN0cmluZy5nZXQgY2hhcl9zZXQgc3RyX2luZCkgbGFuZCBtYXNrKSA8PiAwXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAoKiBJZ25vcmVkIHBhcmFtIGNvbnZlcnNpb24gKilcblxuKCogR0FEVCB1c2VkIHRvIGFic3RyYWN0IGFuIGV4aXN0ZW50aWFsIHR5cGUgcGFyYW1ldGVyLiAqKVxuKCogU2VlIHBhcmFtX2Zvcm1hdF9vZl9pZ25vcmVkX2Zvcm1hdC4gKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHBhcmFtX2Zvcm1hdF9lYmIgPSBQYXJhbV9mb3JtYXRfRUJCIDpcbiAgICAoJ3ggLT4gJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm10IC0+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+IGEgPVxuICAgIGZ1biBwY3RfaW5kIHN0cl9pbmQgc3ltYiBvcHRpb24gLT5cbiAgICAgIGxldCBzdWJmbXQgPSBTdHJpbmcuc3ViIHN0ciBwY3RfaW5kIChzdHJfaW5kIC0gcGN0X2luZCkgaW5cbiAgICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgICAgXCJpbnZhbGlkIGZvcm1hdCAlUzogYXQgY2hhcmFjdGVyIG51bWJlciAlZCwgXFxcbiAgICAgICAgICVzIGlzIGluY29tcGF0aWJsZSB3aXRoICclYycgaW4gc3ViLWZvcm1hdCAlU1wiXG4gICAgICAgIHN0ciBwY3RfaW5kIG9wdGlvbiBzeW1iIHN1YmZtdFxuXG4gIGluIHBhcnNlIDAgKFN0cmluZy5sZW5ndGggc3RyKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgICAgICAgICAgICAgKCogR3VhcmRlZCBzdHJpbmcgdG8gZm9ybWF0IGNvbnZlcnNpb25zICopXG5cbigqIENvbnZlcnQgYSBzdHJpbmcgdG8gYSBmb3JtYXQgYWNjb3JkaW5nIHRvIGFuIGZtdHR5LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mbXR0eSBzdHIgZm10dHkgPVxuICBsZXQgRm10X0VCQiBmbXQgPSBmbXRfZWJiX29mX3N0cmluZyBzdHIgaW5cbiAgdHJ5IEZvcm1hdCAodHlwZV9mb3JtYXQgZm10IGZtdHR5LCBzdHIpXG4gIHdpdGggVHlwZV9taXNtYXRjaCAtPlxuICAgIGZhaWx3aXRoX21lc3NhZ2VcbiAgICAgIFwiYmFkIGlucHV0OiBmb3JtYXQgdHlwZSBtaXNtYXRjaCBiZXR3ZWVuICVTIGFuZCAlU1wiXG4gICAgICBzdHIgKHN0cmluZ19vZl9mbXR0eSBmbXR0eSlcblxuKCogQ29udmVydCBhIHN0cmluZyB0byBhIGZvcm1hdCBjb21wYXRpYmxlIHdpdGggYW4gb3RoZXIgZm9ybWF0LiAqKVxuKCogUmFpc2UgW0ZhaWx1cmVdIHdpdGggYW4gZXJyb3IgbWVzc2FnZSBpbiBjYXNlIG9mIHR5cGUgbWlzbWF0Y2guICopXG5sZXQgZm9ybWF0X29mX3N0cmluZ19mb3JtYXQgc3RyIChGb3JtYXQgKGZtdCcsIHN0cicpKSA9XG4gIGxldCBGbXRfRUJCIGZtdCA9IGZtdF9lYmJfb2Zfc3RyaW5nIHN0ciBpblxuICB0cnkgRm9ybWF0ICh0eXBlX2Zvcm1hdCBmbXQgKGZtdHR5X29mX2ZtdCBmbXQnKSwgc3RyKVxuICB3aXRoIFR5cGVfbWlzbWF0Y2ggLT5cbiAgICBmYWlsd2l0aF9tZXNzYWdlXG4gICAgICBcImJhZCBpbnB1dDogZm9ybWF0IHR5cGUgbWlzbWF0Y2ggYmV0d2VlbiAlUyBhbmQgJVNcIiBzdHIgc3RyJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBYYXZpZXIgTGVyb3kgYW5kIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljc1xub3BlbiBDYW1saW50ZXJuYWxGb3JtYXRcblxubGV0IGtmcHJpbnRmIGsgbyAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfcHJpbnRmIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgbyBhY2M7IGsgbykgRW5kX29mX2FjYyBmbXRcbmxldCBrYnByaW50ZiBrIGIgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZiAoZnVuIGFjYyAtPiBidWZwdXRfYWNjIGIgYWNjOyBrIGIpIEVuZF9vZl9hY2MgZm10XG5sZXQgaWtmcHJpbnRmIGsgb2MgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgayBvYyBmbXRcbmxldCBpa2JwcmludGYgPSBpa2ZwcmludGZcblxubGV0IGZwcmludGYgb2MgZm10ID0ga2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGJwcmludGYgYiBmbXQgPSBrYnByaW50ZiBpZ25vcmUgYiBmbXRcbmxldCBpZnByaW50ZiBvYyBmbXQgPSBpa2ZwcmludGYgaWdub3JlIG9jIGZtdFxubGV0IGlicHJpbnRmIGIgZm10ID0gaWticHJpbnRmIGlnbm9yZSBiIGZtdFxubGV0IHByaW50ZiBmbXQgPSBmcHJpbnRmIHN0ZG91dCBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkZXJyIGZtdFxuXG5sZXQga3NwcmludGYgayAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIGxldCBrJyBhY2MgPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDY0IGluXG4gICAgc3RycHV0X2FjYyBidWYgYWNjO1xuICAgIGsgKEJ1ZmZlci5jb250ZW50cyBidWYpIGluXG4gIG1ha2VfcHJpbnRmIGsnIEVuZF9vZl9hY2MgZm10XG5cbmxldCBzcHJpbnRmIGZtdCA9IGtzcHJpbnRmIChmdW4gcyAtPiBzKSBmbXRcblxubGV0IGtwcmludGYgPSBrc3ByaW50ZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgIERhbWllbiBEb2xpZ2V6LCBwcm9qZXQgUGFyYSwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IHN0cmluZ1xudHlwZSBkb2MgPSBzdHJpbmdcbnR5cGUgdXNhZ2VfbXNnID0gc3RyaW5nXG50eXBlIGFub25fZnVuID0gKHN0cmluZyAtPiB1bml0KVxuXG50eXBlIHNwZWMgPVxuICB8IFVuaXQgb2YgKHVuaXQgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggdW5pdCBhcmd1bWVudCAqKVxuICB8IEJvb2wgb2YgKGJvb2wgLT4gdW5pdCkgICAgICgqIENhbGwgdGhlIGZ1bmN0aW9uIHdpdGggYSBib29sIGFyZ3VtZW50ICopXG4gIHwgU2V0IG9mIGJvb2wgcmVmICAgICAgICAgICAgKCogU2V0IHRoZSByZWZlcmVuY2UgdG8gdHJ1ZSAqKVxuICB8IENsZWFyIG9mIGJvb2wgcmVmICAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIGZhbHNlICopXG4gIHwgU3RyaW5nIG9mIChzdHJpbmcgLT4gdW5pdCkgKCogQ2FsbCB0aGUgZnVuY3Rpb24gd2l0aCBhIHN0cmluZyBhcmd1bWVudCAqKVxuICB8IFNldF9zdHJpbmcgb2Ygc3RyaW5nIHJlZiAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBzdHJpbmcgYXJndW1lbnQgKilcbiAgfCBJbnQgb2YgKGludCAtPiB1bml0KSAgICAgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGFuIGludCBhcmd1bWVudCAqKVxuICB8IFNldF9pbnQgb2YgaW50IHJlZiAgICAgICAgICgqIFNldCB0aGUgcmVmZXJlbmNlIHRvIHRoZSBpbnQgYXJndW1lbnQgKilcbiAgfCBGbG9hdCBvZiAoZmxvYXQgLT4gdW5pdCkgICAoKiBDYWxsIHRoZSBmdW5jdGlvbiB3aXRoIGEgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBTZXRfZmxvYXQgb2YgZmxvYXQgcmVmICAgICAoKiBTZXQgdGhlIHJlZmVyZW5jZSB0byB0aGUgZmxvYXQgYXJndW1lbnQgKilcbiAgfCBUdXBsZSBvZiBzcGVjIGxpc3QgICAgICAgICAoKiBUYWtlIHNldmVyYWwgYXJndW1lbnRzIGFjY29yZGluZyB0byB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjIGxpc3QgKilcbiAgfCBTeW1ib2wgb2Ygc3RyaW5nIGxpc3QgKiAoc3RyaW5nIC0+IHVuaXQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogVGFrZSBvbmUgb2YgdGhlIHN5bWJvbHMgYXMgYXJndW1lbnQgYW5kXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbCB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgc3ltYm9sLiAqKVxuICB8IFJlc3Qgb2YgKHN0cmluZyAtPiB1bml0KSAgICgqIFN0b3AgaW50ZXJwcmV0aW5nIGtleXdvcmRzIGFuZCBjYWxsIHRoZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHdpdGggZWFjaCByZW1haW5pbmcgYXJndW1lbnQgKilcbiAgfCBSZXN0X2FsbCBvZiAoc3RyaW5nIGxpc3QgLT4gdW5pdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBTdG9wIGludGVycHJldGluZyBrZXl3b3JkcyBhbmQgY2FsbCB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiB3aXRoIGFsbCByZW1haW5pbmcgYXJndW1lbnRzLiAqKVxuICB8IEV4cGFuZCBvZiAoc3RyaW5nIC0+IHN0cmluZyBhcnJheSkgKCogSWYgdGhlIHJlbWFpbmluZyBhcmd1bWVudHMgdG8gcHJvY2Vzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG9mIHRoZSBmb3JtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbW1wiLWZvb1wiOyBcImFyZ1wiXSBAIHJlc3RdIHdoZXJlIFwiZm9vXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIHJlZ2lzdGVyZWQgYXMgW0V4cGFuZCBmXSwgdGhlbiB0aGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBbZiBcImFyZ1wiIEAgcmVzdF0gYXJlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZWQuIE9ubHkgYWxsb3dlZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXS4gKilcblxuZXhjZXB0aW9uIEJhZCBvZiBzdHJpbmdcbmV4Y2VwdGlvbiBIZWxwIG9mIHN0cmluZ1xuXG50eXBlIGVycm9yID1cbiAgfCBVbmtub3duIG9mIHN0cmluZ1xuICB8IFdyb25nIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAgKCogb3B0aW9uLCBhY3R1YWwsIGV4cGVjdGVkICopXG4gIHwgTWlzc2luZyBvZiBzdHJpbmdcbiAgfCBNZXNzYWdlIG9mIHN0cmluZ1xuXG5leGNlcHRpb24gU3RvcCBvZiBlcnJvciAoKiB1c2VkIGludGVybmFsbHkgKilcblxub3BlbiBQcmludGZcblxubGV0IHJlYyBhc3NvYzMgeCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgKHkxLCB5MiwgXykgOjogXyB3aGVuIHkxID0geCAtPiB5MlxuICB8IF8gOjogdCAtPiBhc3NvYzMgeCB0XG5cblxubGV0IHNwbGl0IHMgPVxuICBsZXQgaSA9IFN0cmluZy5pbmRleCBzICc9JyBpblxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIFN0cmluZy5zdWIgcyAwIGksIFN0cmluZy5zdWIgcyAoaSsxKSAobGVuLShpKzEpKVxuXG5cbmxldCBtYWtlX3N5bWxpc3QgcHJlZml4IHNlcCBzdWZmaXggbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFwiPG5vbmU+XCJcbiAgfCBoOjp0IC0+IChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiB4IF4gc2VwIF4geSkgKHByZWZpeCBeIGgpIHQpIF4gc3VmZml4XG5cblxubGV0IHByaW50X3NwZWMgYnVmIChrZXksIHNwZWMsIGRvYykgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGRvYyA+IDAgdGhlblxuICAgIG1hdGNoIHNwZWMgd2l0aFxuICAgIHwgU3ltYm9sIChsLCBfKSAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXMlc1xcblwiIGtleSAobWFrZV9zeW1saXN0IFwie1wiIFwifFwiIFwifVwiIGwpIGRvY1xuICAgIHwgXyAtPlxuICAgICAgICBicHJpbnRmIGJ1ZiBcIiAgJXMgJXNcXG5cIiBrZXkgZG9jXG5cblxubGV0IGhlbHBfYWN0aW9uICgpID0gcmFpc2UgKFN0b3AgKFVua25vd24gXCItaGVscFwiKSlcblxubGV0IGFkZF9oZWxwIHNwZWNsaXN0ID1cbiAgbGV0IGFkZDEgPVxuICAgIHRyeSBpZ25vcmUgKGFzc29jMyBcIi1oZWxwXCIgc3BlY2xpc3QpOyBbXVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICBbXCItaGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGFuZCBhZGQyID1cbiAgICB0cnkgaWdub3JlIChhc3NvYzMgXCItLWhlbHBcIiBzcGVjbGlzdCk7IFtdXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIFtcIi0taGVscFwiLCBVbml0IGhlbHBfYWN0aW9uLCBcIiBEaXNwbGF5IHRoaXMgbGlzdCBvZiBvcHRpb25zXCJdXG4gIGluXG4gIHNwZWNsaXN0IEAgKGFkZDEgQCBhZGQyKVxuXG5cbmxldCB1c2FnZV9iIGJ1ZiBzcGVjbGlzdCBlcnJtc2cgPVxuICBicHJpbnRmIGJ1ZiBcIiVzXFxuXCIgZXJybXNnO1xuICBMaXN0Lml0ZXIgKHByaW50X3NwZWMgYnVmKSAoYWRkX2hlbHAgc3BlY2xpc3QpXG5cblxubGV0IHVzYWdlX3N0cmluZyBzcGVjbGlzdCBlcnJtc2cgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMjAwIGluXG4gIHVzYWdlX2IgYiBzcGVjbGlzdCBlcnJtc2c7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cblxubGV0IHVzYWdlIHNwZWNsaXN0IGVycm1zZyA9XG4gIGVwcmludGYgXCIlc1wiICh1c2FnZV9zdHJpbmcgc3BlY2xpc3QgZXJybXNnKVxuXG5cbmxldCBjdXJyZW50ID0gcmVmIDBcblxubGV0IGJvb2xfb2Zfc3RyaW5nX29wdCB4ID1cbiAgdHJ5IFNvbWUgKGJvb2xfb2Zfc3RyaW5nIHgpXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IE5vbmVcblxubGV0IGludF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoaW50X29mX3N0cmluZyB4KVxuICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG5cbmxldCBmbG9hdF9vZl9zdHJpbmdfb3B0IHggPVxuICB0cnkgU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHgpXG4gIHdpdGggRmFpbHVyZSBfIC0+IE5vbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCBhbGxvd19leHBhbmQgY3VycmVudCBhcmd2IHNwZWNsaXN0IGFub25mdW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybXNnID1cbiAgbGV0IGluaXRwb3MgPSAhY3VycmVudCBpblxuICBsZXQgY29udmVydF9lcnJvciBlcnJvciA9XG4gICAgKCogY29udmVydCBhbiBpbnRlcm5hbCBlcnJvciB0byBhIEJhZC9IZWxwIGV4Y2VwdGlvblxuICAgICAgICpvciogYWRkIHRoZSBwcm9ncmFtIG5hbWUgYXMgYSBwcmVmaXggYW5kIHRoZSB1c2FnZSBtZXNzYWdlIGFzIGEgc3VmZml4XG4gICAgICAgdG8gYW4gdXNlci1yYWlzZWQgQmFkIGV4Y2VwdGlvbi5cbiAgICAqKVxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgICBsZXQgcHJvZ25hbWUgPVxuICAgICAgaWYgaW5pdHBvcyA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKGluaXRwb3MpIGVsc2UgXCIoPylcIiBpblxuICAgIGJlZ2luIG1hdGNoIGVycm9yIHdpdGhcbiAgICAgIHwgVW5rbm93biBcIi1oZWxwXCIgLT4gKClcbiAgICAgIHwgVW5rbm93biBcIi0taGVscFwiIC0+ICgpXG4gICAgICB8IFVua25vd24gcyAtPlxuICAgICAgICAgIGJwcmludGYgYiBcIiVzOiB1bmtub3duIG9wdGlvbiAnJXMnLlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgTWlzc2luZyBzIC0+XG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6IG9wdGlvbiAnJXMnIG5lZWRzIGFuIGFyZ3VtZW50LlxcblwiIHByb2duYW1lIHNcbiAgICAgIHwgV3JvbmcgKG9wdCwgYXJnLCBleHBlY3RlZCkgLT5cbiAgICAgICAgICBicHJpbnRmIGIgXCIlczogd3JvbmcgYXJndW1lbnQgJyVzJzsgb3B0aW9uICclcycgZXhwZWN0cyAlcy5cXG5cIlxuICAgICAgICAgICAgICAgICAgcHJvZ25hbWUgYXJnIG9wdCBleHBlY3RlZFxuICAgICAgfCBNZXNzYWdlIHMgLT4gKCogdXNlciBlcnJvciBtZXNzYWdlICopXG4gICAgICAgICAgYnByaW50ZiBiIFwiJXM6ICVzLlxcblwiIHByb2duYW1lIHNcbiAgICBlbmQ7XG4gICAgdXNhZ2VfYiBiICFzcGVjbGlzdCBlcnJtc2c7XG4gICAgaWYgZXJyb3IgPSBVbmtub3duIFwiLWhlbHBcIiB8fCBlcnJvciA9IFVua25vd24gXCItLWhlbHBcIlxuICAgIHRoZW4gSGVscCAoQnVmZmVyLmNvbnRlbnRzIGIpXG4gICAgZWxzZSBCYWQgKEJ1ZmZlci5jb250ZW50cyBiKVxuICBpblxuICBpbmNyIGN1cnJlbnQ7XG4gIHdoaWxlICFjdXJyZW50IDwgKEFycmF5Lmxlbmd0aCAhYXJndikgZG9cbiAgICBiZWdpbiB0cnlcbiAgICAgIGxldCBzID0gIWFyZ3YuKCFjdXJyZW50KSBpblxuICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID49IDEgJiYgcy5bMF0gPSAnLScgdGhlbiBiZWdpblxuICAgICAgICBsZXQgYWN0aW9uLCBmb2xsb3cgPVxuICAgICAgICAgIHRyeSBhc3NvYzMgcyAhc3BlY2xpc3QsIE5vbmVcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGtleXdvcmQsIGFyZyA9IHNwbGl0IHMgaW5cbiAgICAgICAgICAgIGFzc29jMyBrZXl3b3JkICFzcGVjbGlzdCwgU29tZSBhcmdcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoU3RvcCAoVW5rbm93biBzKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG5vX2FyZyAoKSA9XG4gICAgICAgICAgbWF0Y2ggZm9sbG93IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcIm5vIGFyZ3VtZW50XCIpKSkgaW5cbiAgICAgICAgbGV0IGdldF9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGlmICFjdXJyZW50ICsgMSA8IChBcnJheS5sZW5ndGggIWFyZ3YpIHRoZW4gIWFyZ3YuKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgICAgZWxzZSByYWlzZSAoU3RvcCAoTWlzc2luZyBzKSlcbiAgICAgICAgICB8IFNvbWUgYXJnIC0+IGFyZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgY29uc3VtZV9hcmcgKCkgPVxuICAgICAgICAgIG1hdGNoIGZvbGxvdyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGluY3IgY3VycmVudFxuICAgICAgICAgIHwgU29tZSBfIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgdHJlYXRfYWN0aW9uID0gZnVuY3Rpb25cbiAgICAgICAgfCBVbml0IGYgLT4gbm9fYXJnICgpOyBmICgpO1xuICAgICAgICB8IEJvb2wgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGJvb2xfb2Zfc3RyaW5nX29wdCBhcmcgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHJhaXNlIChTdG9wIChXcm9uZyAocywgYXJnLCBcImEgYm9vbGVhblwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgcyAtPiBmIHNcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFNldCByIC0+IG5vX2FyZyAoKTsgciA6PSB0cnVlO1xuICAgICAgICB8IENsZWFyIHIgLT4gbm9fYXJnICgpOyByIDo9IGZhbHNlO1xuICAgICAgICB8IFN0cmluZyBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgZiBhcmc7XG4gICAgICAgICAgICBjb25zdW1lX2FyZyAoKTtcbiAgICAgICAgfCBTeW1ib2wgKHN5bWIsIGYpIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYXJnIHN5bWIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICBmIGFyZztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJvbmUgb2Y6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIChtYWtlX3N5bWxpc3QgXCJcIiBcIiBcIiBcIlwiIHN5bWIpKSkpXG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBTZXRfc3RyaW5nIHIgLT5cbiAgICAgICAgICAgIHIgOj0gZ2V0X2FyZyAoKTtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IEludCBmIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2ludCByIC0+XG4gICAgICAgICAgICBsZXQgYXJnID0gZ2V0X2FyZyAoKSBpblxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggaW50X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhbiBpbnRlZ2VyXCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHIgOj0geFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgRmxvYXQgZiAtPlxuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIGZsb2F0X29mX3N0cmluZ19vcHQgYXJnIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSAoU3RvcCAoV3JvbmcgKHMsIGFyZywgXCJhIGZsb2F0XCIpKSlcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IGYgeFxuICAgICAgICAgICAgZW5kO1xuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgIHwgU2V0X2Zsb2F0IHIgLT5cbiAgICAgICAgICAgIGxldCBhcmcgPSBnZXRfYXJnICgpIGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBmbG9hdF9vZl9zdHJpbmdfb3B0IGFyZyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgKFN0b3AgKFdyb25nIChzLCBhcmcsIFwiYSBmbG9hdFwiKSkpXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiByIDo9IHhcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGNvbnN1bWVfYXJnICgpO1xuICAgICAgICB8IFR1cGxlIHNwZWNzIC0+XG4gICAgICAgICAgICBub19hcmcgKCk7XG4gICAgICAgICAgICBMaXN0Lml0ZXIgdHJlYXRfYWN0aW9uIHNwZWNzO1xuICAgICAgICB8IFJlc3QgZiAtPlxuICAgICAgICAgICAgbm9fYXJnICgpO1xuICAgICAgICAgICAgd2hpbGUgIWN1cnJlbnQgPCAoQXJyYXkubGVuZ3RoICFhcmd2KSAtIDEgZG9cbiAgICAgICAgICAgICAgZiAhYXJndi4oIWN1cnJlbnQgKyAxKTtcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICB8IFJlc3RfYWxsIGYgLT5cbiAgICAgICAgICAgIG5vX2FyZyAoKTtcbiAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgIHdoaWxlICFjdXJyZW50IDwgQXJyYXkubGVuZ3RoICFhcmd2IC0gMSBkb1xuICAgICAgICAgICAgICBhY2MgOj0gIWFyZ3YuKCFjdXJyZW50ICsgMSkgOjogIWFjYztcbiAgICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgZiAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgfCBFeHBhbmQgZiAtPlxuICAgICAgICAgICAgaWYgbm90IGFsbG93X2V4cGFuZCB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiQXJnLkV4cGFuZCBpcyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXJnLnBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljXCIpO1xuICAgICAgICAgICAgbGV0IGFyZyA9IGdldF9hcmcgKCkgaW5cbiAgICAgICAgICAgIGxldCBuZXdhcmcgPSBmIGFyZyBpblxuICAgICAgICAgICAgY29uc3VtZV9hcmcgKCk7XG4gICAgICAgICAgICBsZXQgYmVmb3JlID0gQXJyYXkuc3ViICFhcmd2IDAgKCFjdXJyZW50ICsgMSlcbiAgICAgICAgICAgIGFuZCBhZnRlciA9XG4gICAgICAgICAgICAgIEFycmF5LnN1YiAhYXJndiAoIWN1cnJlbnQgKyAxKVxuICAgICAgICAgICAgICAgICAgICAgICAgKChBcnJheS5sZW5ndGggIWFyZ3YpIC0gIWN1cnJlbnQgLSAxKSBpblxuICAgICAgICAgICAgYXJndjo9IEFycmF5LmNvbmNhdCBbYmVmb3JlO25ld2FyZzthZnRlcl07XG4gICAgICAgIGluXG4gICAgICAgIHRyZWF0X2FjdGlvbiBhY3Rpb24gZW5kXG4gICAgICBlbHNlIGFub25mdW4gc1xuICAgIHdpdGggfCBCYWQgbSAtPiByYWlzZSAoY29udmVydF9lcnJvciAoTWVzc2FnZSBtKSk7XG4gICAgICAgICB8IFN0b3AgZSAtPiByYWlzZSAoY29udmVydF9lcnJvciBlKTtcbiAgICBlbmQ7XG4gICAgaW5jciBjdXJyZW50XG4gIGRvbmVcblxubGV0IHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZyA9XG4gIHBhcnNlX2FuZF9leHBhbmRfYXJndl9keW5hbWljX2F1eCB0cnVlIGN1cnJlbnQgYXJndiBzcGVjbGlzdCBhbm9uZnVuIGVycm1zZ1xuXG5sZXQgcGFyc2VfYXJndl9keW5hbWljID8oY3VycmVudD1jdXJyZW50KSBhcmd2IHNwZWNsaXN0IGFub25mdW4gZXJybXNnID1cbiAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWNfYXV4IGZhbHNlIGN1cnJlbnQgKHJlZiBhcmd2KSBzcGVjbGlzdCBhbm9uZnVuXG4gICAgZXJybXNnXG5cblxubGV0IHBhcnNlX2FyZ3YgPyhjdXJyZW50PWN1cnJlbnQpIGFyZ3Ygc3BlY2xpc3QgYW5vbmZ1biBlcnJtc2cgPVxuICBwYXJzZV9hcmd2X2R5bmFtaWMgfmN1cnJlbnQ6Y3VycmVudCBhcmd2IChyZWYgc3BlY2xpc3QpIGFub25mdW4gZXJybXNnXG5cblxubGV0IHBhcnNlIGwgZiBtc2cgPVxuICB0cnlcbiAgICBwYXJzZV9hcmd2IFN5cy5hcmd2IGwgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHBhcnNlX2R5bmFtaWMgbCBmIG1zZyA9XG4gIHRyeVxuICAgIHBhcnNlX2FyZ3ZfZHluYW1pYyBTeXMuYXJndiBsIGYgbXNnXG4gIHdpdGhcbiAgfCBCYWQgbXNnIC0+IGVwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAyXG4gIHwgSGVscCBtc2cgLT4gcHJpbnRmIFwiJXNcIiBtc2c7IGV4aXQgMFxuXG5sZXQgcGFyc2VfZXhwYW5kIGwgZiBtc2cgPVxuICB0cnlcbiAgICBsZXQgYXJndiA9IHJlZiBTeXMuYXJndiBpblxuICAgIGxldCBzcGVjID0gcmVmIGwgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiAoIWN1cnJlbnQpIGluXG4gICAgcGFyc2VfYW5kX2V4cGFuZF9hcmd2X2R5bmFtaWMgY3VycmVudCBhcmd2IHNwZWMgZiBtc2dcbiAgd2l0aFxuICB8IEJhZCBtc2cgLT4gZXByaW50ZiBcIiVzXCIgbXNnOyBleGl0IDJcbiAgfCBIZWxwIG1zZyAtPiBwcmludGYgXCIlc1wiIG1zZzsgZXhpdCAwXG5cblxubGV0IHNlY29uZF93b3JkIHMgPVxuICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgbG9vcCBuID1cbiAgICBpZiBuID49IGxlbiB0aGVuIGxlblxuICAgIGVsc2UgaWYgcy5bbl0gPSAnICcgdGhlbiBsb29wIChuKzEpXG4gICAgZWxzZSBuXG4gIGluXG4gIG1hdGNoIFN0cmluZy5pbmRleCBzICdcXHQnIHdpdGhcbiAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+XG4gICAgICBiZWdpbiBtYXRjaCBTdHJpbmcuaW5kZXggcyAnICcgd2l0aFxuICAgICAgfCBuIC0+IGxvb3AgKG4rMSlcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBsZW5cbiAgICAgIGVuZFxuXG5cbmxldCBtYXhfYXJnX2xlbiBjdXIgKGt3ZCwgc3BlYywgZG9jKSA9XG4gIG1hdGNoIHNwZWMgd2l0aFxuICB8IFN5bWJvbCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZClcbiAgfCBfIC0+IEludC5tYXggY3VyIChTdHJpbmcubGVuZ3RoIGt3ZCArIHNlY29uZF93b3JkIGRvYylcblxuXG5sZXQgcmVwbGFjZV9sZWFkaW5nX3RhYiBzID1cbiAgbGV0IHNlZW4gPSByZWYgZmFsc2UgaW5cbiAgU3RyaW5nLm1hcCAoZnVuY3Rpb24gJ1xcdCcgd2hlbiBub3QgIXNlZW4gLT4gc2VlbiA6PSB0cnVlOyAnICcgfCBjIC0+IGMpIHNcblxubGV0IGFkZF9wYWRkaW5nIGxlbiBrc2QgPVxuICBtYXRjaCBrc2Qgd2l0aFxuICB8IChfLCBfLCBcIlwiKSAtPlxuICAgICAgKCogRG8gbm90IHBhZCB1bmRvY3VtZW50ZWQgb3B0aW9ucywgc28gdGhhdCB0aGV5IHN0aWxsIGRvbid0IHNob3cgdXAgd2hlblxuICAgICAgICogcnVuIHRocm91Z2ggW3VzYWdlXSBvciBbcGFyc2VdLiAqKVxuICAgICAga3NkXG4gIHwgKGt3ZCwgKFN5bWJvbCBfIGFzIHNwZWMpLCBtc2cpIC0+XG4gICAgICBsZXQgY3V0Y29sID0gc2Vjb25kX3dvcmQgbXNnIGluXG4gICAgICBsZXQgc3BhY2VzID0gU3RyaW5nLm1ha2UgKChJbnQubWF4IDAgKGxlbiAtIGN1dGNvbCkpICsgMykgJyAnIGluXG4gICAgICAoa3dkLCBzcGVjLCBcIlxcblwiIF4gc3BhY2VzIF4gcmVwbGFjZV9sZWFkaW5nX3RhYiBtc2cpXG4gIHwgKGt3ZCwgc3BlYywgbXNnKSAtPlxuICAgICAgbGV0IGN1dGNvbCA9IHNlY29uZF93b3JkIG1zZyBpblxuICAgICAgbGV0IGt3ZF9sZW4gPSBTdHJpbmcubGVuZ3RoIGt3ZCBpblxuICAgICAgbGV0IGRpZmYgPSBsZW4gLSBrd2RfbGVuIC0gY3V0Y29sIGluXG4gICAgICBpZiBkaWZmIDw9IDAgdGhlblxuICAgICAgICAoa3dkLCBzcGVjLCByZXBsYWNlX2xlYWRpbmdfdGFiIG1zZylcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHNwYWNlcyA9IFN0cmluZy5tYWtlIGRpZmYgJyAnIGluXG4gICAgICAgIGxldCBwcmVmaXggPSBTdHJpbmcuc3ViIChyZXBsYWNlX2xlYWRpbmdfdGFiIG1zZykgMCBjdXRjb2wgaW5cbiAgICAgICAgbGV0IHN1ZmZpeCA9IFN0cmluZy5zdWIgbXNnIGN1dGNvbCAoU3RyaW5nLmxlbmd0aCBtc2cgLSBjdXRjb2wpIGluXG4gICAgICAgIChrd2QsIHNwZWMsIHByZWZpeCBeIHNwYWNlcyBeIHN1ZmZpeClcblxuXG5sZXQgYWxpZ24gPyhsaW1pdD1tYXhfaW50KSBzcGVjbGlzdCA9XG4gIGxldCBjb21wbGV0ZWQgPSBhZGRfaGVscCBzcGVjbGlzdCBpblxuICBsZXQgbGVuID0gTGlzdC5mb2xkX2xlZnQgbWF4X2FyZ19sZW4gMCBjb21wbGV0ZWQgaW5cbiAgbGV0IGxlbiA9IEludC5taW4gbGVuIGxpbWl0IGluXG4gIExpc3QubWFwIChhZGRfcGFkZGluZyBsZW4pIGNvbXBsZXRlZFxuXG5sZXQgdHJpbV9jciBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBsZW4gPiAwICYmIFN0cmluZy5nZXQgcyAobGVuIC0gMSkgPSAnXFxyJyB0aGVuXG4gICAgU3RyaW5nLnN1YiBzIDAgKGxlbiAtIDEpXG4gIGVsc2VcbiAgICBzXG5cbmxldCByZWFkX2F1eCB0cmltIHNlcCBmaWxlID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gZmlsZSBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAyMDAgaW5cbiAgbGV0IHdvcmRzID0gcmVmIFtdIGluXG4gIGxldCBzdGFzaCAoKSA9XG4gICAgbGV0IHdvcmQgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gICAgbGV0IHdvcmQgPSBpZiB0cmltIHRoZW4gdHJpbV9jciB3b3JkIGVsc2Ugd29yZCBpblxuICAgIHdvcmRzIDo9IHdvcmQgOjogIXdvcmRzO1xuICAgIEJ1ZmZlci5jbGVhciBidWZcbiAgaW5cbiAgYmVnaW5cbiAgICB0cnkgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBsZXQgYyA9IGlucHV0X2NoYXIgaWMgaW5cbiAgICAgICAgaWYgYyA9IHNlcCB0aGVuIHN0YXNoICgpIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gICAgICBkb25lXG4gICAgd2l0aCBFbmRfb2ZfZmlsZSAtPiAoKVxuICBlbmQ7XG4gIGlmIEJ1ZmZlci5sZW5ndGggYnVmID4gMCB0aGVuIHN0YXNoICgpO1xuICBjbG9zZV9pbiBpYztcbiAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgIXdvcmRzKVxuXG5sZXQgcmVhZF9hcmcgPSByZWFkX2F1eCB0cnVlICdcXG4nXG5cbmxldCByZWFkX2FyZzAgPSByZWFkX2F1eCBmYWxzZSAnXFx4MDAnXG5cbmxldCB3cml0ZV9hdXggc2VwIGZpbGUgYXJncyA9XG4gIGxldCBvYyA9IG9wZW5fb3V0X2JpbiBmaWxlIGluXG4gIEFycmF5Lml0ZXIgKGZ1biBzIC0+IGZwcmludGYgb2MgXCIlcyVjXCIgcyBzZXApIGFyZ3M7XG4gIGNsb3NlX291dCBvY1xuXG5sZXQgd3JpdGVfYXJnID0gd3JpdGVfYXV4ICdcXG4nXG5cbmxldCB3cml0ZV9hcmcwID0gd3JpdGVfYXV4ICdcXHgwMCdcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBQcmludGZcblxudHlwZSB0ID0gZXhuID0gLi5cblxubGV0IHByaW50ZXJzID0gQXRvbWljLm1ha2UgW11cblxubGV0IGxvY2ZtdCA9IGZvcm1hdF9vZl9zdHJpbmcgXCJGaWxlIFxcXCIlc1xcXCIsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWQ6ICVzXCJcblxubGV0IGZpZWxkIHggaSA9XG4gIGxldCBmID0gT2JqLmZpZWxkIHggaSBpblxuICBpZiBub3QgKE9iai5pc19ibG9jayBmKSB0aGVuXG4gICAgc3ByaW50ZiBcIiVkXCIgKE9iai5tYWdpYyBmIDogaW50KSAgICAgICAgICAgKCogY2FuIGFsc28gYmUgYSBjaGFyICopXG4gIGVsc2UgaWYgT2JqLnRhZyBmID0gT2JqLnN0cmluZ190YWcgdGhlblxuICAgIHNwcmludGYgXCIlU1wiIChPYmoubWFnaWMgZiA6IHN0cmluZylcbiAgZWxzZSBpZiBPYmoudGFnIGYgPSBPYmouZG91YmxlX3RhZyB0aGVuXG4gICAgc3RyaW5nX29mX2Zsb2F0IChPYmoubWFnaWMgZiA6IGZsb2F0KVxuICBlbHNlXG4gICAgXCJfXCJcblxubGV0IHJlYyBvdGhlcl9maWVsZHMgeCBpID1cbiAgaWYgaSA+PSBPYmouc2l6ZSB4IHRoZW4gXCJcIlxuICBlbHNlIHNwcmludGYgXCIsICVzJXNcIiAoZmllbGQgeCBpKSAob3RoZXJfZmllbGRzIHggKGkrMSkpXG5cbmxldCBmaWVsZHMgeCA9XG4gIG1hdGNoIE9iai5zaXplIHggd2l0aFxuICB8IDAgLT4gXCJcIlxuICB8IDEgLT4gXCJcIlxuICB8IDIgLT4gc3ByaW50ZiBcIiglcylcIiAoZmllbGQgeCAxKVxuICB8IF8gLT4gc3ByaW50ZiBcIiglcyVzKVwiIChmaWVsZCB4IDEpIChvdGhlcl9maWVsZHMgeCAyKVxuXG5sZXQgdXNlX3ByaW50ZXJzIHggPVxuICBsZXQgcmVjIGNvbnYgPSBmdW5jdGlvblxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgICAgKG1hdGNoIGhkIHggd2l0aFxuICAgICAgICAgfCBOb25lIHwgZXhjZXB0aW9uIF8gLT4gY29udiB0bFxuICAgICAgICAgfCBTb21lIHMgLT4gU29tZSBzKVxuICAgIHwgW10gLT4gTm9uZSBpblxuICBjb252IChBdG9taWMuZ2V0IHByaW50ZXJzKVxuXG5sZXQgdG9fc3RyaW5nX2RlZmF1bHQgPSBmdW5jdGlvblxuICB8IE91dF9vZl9tZW1vcnkgLT4gXCJPdXQgb2YgbWVtb3J5XCJcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBcIlN0YWNrIG92ZXJmbG93XCJcbiAgfCBNYXRjaF9mYWlsdXJlKGZpbGUsIGxpbmUsIGNoYXIpIC0+XG4gICAgICBzcHJpbnRmIGxvY2ZtdCBmaWxlIGxpbmUgY2hhciAoY2hhcis1KSBcIlBhdHRlcm4gbWF0Y2hpbmcgZmFpbGVkXCJcbiAgfCBBc3NlcnRfZmFpbHVyZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJBc3NlcnRpb24gZmFpbGVkXCJcbiAgfCBVbmRlZmluZWRfcmVjdXJzaXZlX21vZHVsZShmaWxlLCBsaW5lLCBjaGFyKSAtPlxuICAgICAgc3ByaW50ZiBsb2NmbXQgZmlsZSBsaW5lIGNoYXIgKGNoYXIrNikgXCJVbmRlZmluZWQgcmVjdXJzaXZlIG1vZHVsZVwiXG4gIHwgeCAtPlxuICAgICAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gICAgICBpZiBPYmoudGFnIHggPD4gMCB0aGVuXG4gICAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCB4IDApIDogc3RyaW5nKVxuICAgICAgZWxzZVxuICAgICAgICBsZXQgY29uc3RydWN0b3IgPVxuICAgICAgICAgIChPYmoubWFnaWMgKE9iai5maWVsZCAoT2JqLmZpZWxkIHggMCkgMCkgOiBzdHJpbmcpIGluXG4gICAgICAgIGNvbnN0cnVjdG9yIF4gKGZpZWxkcyB4KVxuXG5sZXQgdG9fc3RyaW5nIGUgPVxuICBtYXRjaCB1c2VfcHJpbnRlcnMgZSB3aXRoXG4gIHwgU29tZSBzIC0+IHNcbiAgfCBOb25lIC0+IHRvX3N0cmluZ19kZWZhdWx0IGVcblxubGV0IHByaW50IGZjdCBhcmcgPVxuICB0cnlcbiAgICBmY3QgYXJnXG4gIHdpdGggeCAtPlxuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBmbHVzaCBzdGRlcnI7XG4gICAgcmFpc2UgeFxuXG5sZXQgY2F0Y2ggZmN0IGFyZyA9XG4gIHRyeVxuICAgIGZjdCBhcmdcbiAgd2l0aCB4IC0+XG4gICAgZmx1c2ggc3Rkb3V0O1xuICAgIGVwcmludGYgXCJVbmNhdWdodCBleGNlcHRpb246ICVzXFxuXCIgKHRvX3N0cmluZyB4KTtcbiAgICBleGl0IDJcblxudHlwZSByYXdfYmFja3RyYWNlX3Nsb3RcbnR5cGUgcmF3X2JhY2t0cmFjZV9lbnRyeSA9IHByaXZhdGUgaW50XG50eXBlIHJhd19iYWNrdHJhY2UgPSByYXdfYmFja3RyYWNlX2VudHJ5IGFycmF5XG5cbmxldCByYXdfYmFja3RyYWNlX2VudHJpZXMgYnQgPSBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZTpcbiAgdW5pdCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9leGNlcHRpb25fcmF3X2JhY2t0cmFjZVwiXG5cbmV4dGVybmFsIHJhaXNlX3dpdGhfYmFja3RyYWNlOiBleG4gLT4gcmF3X2JhY2t0cmFjZSAtPiAnYVxuICA9IFwiJXJhaXNlX3dpdGhfYmFja3RyYWNlXCJcblxudHlwZSBiYWNrdHJhY2Vfc2xvdCA9XG4gIHwgS25vd25fbG9jYXRpb24gb2Yge1xuICAgICAgaXNfcmFpc2UgICAgOiBib29sO1xuICAgICAgZmlsZW5hbWUgICAgOiBzdHJpbmc7XG4gICAgICBsaW5lX251bWJlciA6IGludDtcbiAgICAgIHN0YXJ0X2NoYXIgIDogaW50O1xuICAgICAgZW5kX2NoYXIgICAgOiBpbnQ7XG4gICAgICBpc19pbmxpbmUgICA6IGJvb2w7XG4gICAgICBkZWZuYW1lICAgICA6IHN0cmluZztcbiAgICB9XG4gIHwgVW5rbm93bl9sb2NhdGlvbiBvZiB7XG4gICAgICBpc19yYWlzZSA6IGJvb2xcbiAgICB9XG5cbigqIHRvIGF2b2lkIHdhcm5pbmcgKilcbmxldCBfID0gW0tub3duX2xvY2F0aW9uIHsgaXNfcmFpc2UgPSBmYWxzZTsgZmlsZW5hbWUgPSBcIlwiO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlciA9IDA7IHN0YXJ0X2NoYXIgPSAwOyBlbmRfY2hhciA9IDA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2lubGluZSA9IGZhbHNlOyBkZWZuYW1lID0gXCJcIiB9O1xuICAgICAgICAgVW5rbm93bl9sb2NhdGlvbiB7IGlzX3JhaXNlID0gZmFsc2UgfV1cblxuZXh0ZXJuYWwgY29udmVydF9yYXdfYmFja3RyYWNlX3Nsb3Q6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiBiYWNrdHJhY2Vfc2xvdCA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGNvbnZlcnRfcmF3X2JhY2t0cmFjZTpcbiAgcmF3X2JhY2t0cmFjZSAtPiBiYWNrdHJhY2Vfc2xvdCBhcnJheSA9IFwiY2FtbF9jb252ZXJ0X3Jhd19iYWNrdHJhY2VcIlxuXG5sZXQgY29udmVydF9yYXdfYmFja3RyYWNlIGJ0ID1cbiAgdHJ5IFNvbWUgKGNvbnZlcnRfcmF3X2JhY2t0cmFjZSBidClcbiAgd2l0aCBGYWlsdXJlIF8gLT4gTm9uZVxuXG5sZXQgZm9ybWF0X2JhY2t0cmFjZV9zbG90IHBvcyBzbG90ID1cbiAgbGV0IGluZm8gaXNfcmFpc2UgPVxuICAgIGlmIGlzX3JhaXNlIHRoZW5cbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBhdFwiIGVsc2UgXCJSZS1yYWlzZWQgYXRcIlxuICAgIGVsc2VcbiAgICAgIGlmIHBvcyA9IDAgdGhlbiBcIlJhaXNlZCBieSBwcmltaXRpdmUgb3BlcmF0aW9uIGF0XCIgZWxzZSBcIkNhbGxlZCBmcm9tXCJcbiAgaW5cbiAgbWF0Y2ggc2xvdCB3aXRoXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBpZiBsLmlzX3JhaXNlIHRoZW5cbiAgICAgICAgKCogY29tcGlsZXItaW5zZXJ0ZWQgcmUtcmFpc2UsIHNraXBwZWQgKikgTm9uZVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChzcHJpbnRmIFwiJXMgdW5rbm93biBsb2NhdGlvblwiIChpbmZvIGZhbHNlKSlcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgICBTb21lIChzcHJpbnRmIFwiJXMgJXMgaW4gZmlsZSBcXFwiJXNcXFwiJXMsIGxpbmUgJWQsIGNoYXJhY3RlcnMgJWQtJWRcIlxuICAgICAgICAgICAgICAoaW5mbyBsLmlzX3JhaXNlKSBsLmRlZm5hbWUgbC5maWxlbmFtZVxuICAgICAgICAgICAgICAoaWYgbC5pc19pbmxpbmUgdGhlbiBcIiAoaW5saW5lZClcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgICAgIGwubGluZV9udW1iZXIgbC5zdGFydF9jaGFyIGwuZW5kX2NoYXIpXG5cbmxldCBwcmludF9leGNlcHRpb25fYmFja3RyYWNlIG91dGNoYW4gYmFja3RyYWNlID1cbiAgbWF0Y2ggYmFja3RyYWNlIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgICBmcHJpbnRmIG91dGNoYW5cbiAgICAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICAgICAgbWF0Y2ggZm9ybWF0X2JhY2t0cmFjZV9zbG90IGkgYS4oaSkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzdHIgLT4gZnByaW50ZiBvdXRjaGFuIFwiJXNcXG5cIiBzdHJcbiAgICAgIGRvbmVcblxubGV0IHByaW50X3Jhd19iYWNrdHJhY2Ugb3V0Y2hhbiByYXdfYmFja3RyYWNlID1cbiAgcHJpbnRfZXhjZXB0aW9uX2JhY2t0cmFjZSBvdXRjaGFuIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6IHByaW50cyB0aGUgZ2xvYmFsIGN1cnJlbnQgYmFja3RyYWNlICopXG5sZXQgcHJpbnRfYmFja3RyYWNlIG91dGNoYW4gPVxuICBwcmludF9yYXdfYmFja3RyYWNlIG91dGNoYW4gKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5sZXQgYmFja3RyYWNlX3RvX3N0cmluZyBiYWNrdHJhY2UgPVxuICBtYXRjaCBiYWNrdHJhY2Ugd2l0aFxuICB8IE5vbmUgLT5cbiAgICAgXCIoUHJvZ3JhbSBub3QgbGlua2VkIHdpdGggLWcsIGNhbm5vdCBwcmludCBzdGFjayBiYWNrdHJhY2UpXFxuXCJcbiAgfCBTb21lIGEgLT5cbiAgICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGEgLSAxIGRvXG4gICAgICAgIG1hdGNoIGZvcm1hdF9iYWNrdHJhY2Vfc2xvdCBpIGEuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgc3RyIC0+IGJwcmludGYgYiBcIiVzXFxuXCIgc3RyXG4gICAgICBkb25lO1xuICAgICAgQnVmZmVyLmNvbnRlbnRzIGJcblxubGV0IHJhd19iYWNrdHJhY2VfdG9fc3RyaW5nIHJhd19iYWNrdHJhY2UgPVxuICBiYWNrdHJhY2VfdG9fc3RyaW5nIChjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSlcblxubGV0IGJhY2t0cmFjZV9zbG90X2lzX3JhaXNlID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfcmFpc2VcbiAgfCBVbmtub3duX2xvY2F0aW9uIGwgLT4gbC5pc19yYWlzZVxuXG5sZXQgYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lID0gZnVuY3Rpb25cbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+IGwuaXNfaW5saW5lXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IGZhbHNlXG5cbnR5cGUgbG9jYXRpb24gPSB7XG4gIGZpbGVuYW1lIDogc3RyaW5nO1xuICBsaW5lX251bWJlciA6IGludDtcbiAgc3RhcnRfY2hhciA6IGludDtcbiAgZW5kX2NoYXIgOiBpbnQ7XG59XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9sb2NhdGlvbiA9IGZ1bmN0aW9uXG4gIHwgVW5rbm93bl9sb2NhdGlvbiBfIC0+IE5vbmVcbiAgfCBLbm93bl9sb2NhdGlvbiBsIC0+XG4gICAgU29tZSB7XG4gICAgICBmaWxlbmFtZSAgICA9IGwuZmlsZW5hbWU7XG4gICAgICBsaW5lX251bWJlciA9IGwubGluZV9udW1iZXI7XG4gICAgICBzdGFydF9jaGFyICA9IGwuc3RhcnRfY2hhcjtcbiAgICAgIGVuZF9jaGFyICAgID0gbC5lbmRfY2hhcjtcbiAgICB9XG5cbmxldCBiYWNrdHJhY2Vfc2xvdF9kZWZuYW1lID0gZnVuY3Rpb25cbiAgfCBVbmtub3duX2xvY2F0aW9uIF9cbiAgfCBLbm93bl9sb2NhdGlvbiB7IGRlZm5hbWUgPSBcIlwiIH0gLT4gTm9uZVxuICB8IEtub3duX2xvY2F0aW9uIGwgLT4gU29tZSBsLmRlZm5hbWVcblxubGV0IGJhY2t0cmFjZV9zbG90cyByYXdfYmFja3RyYWNlID1cbiAgKCogVGhlIGRvY3VtZW50YXRpb24gb2YgdGhpcyBmdW5jdGlvbiBndWFyYW50ZWVzIHRoYXQgU29tZSBpc1xuICAgICByZXR1cm5lZCBvbmx5IGlmIGEgcGFydCBvZiB0aGUgdHJhY2UgaXMgdXNhYmxlLiBUaGlzIGdpdmVzIHVzXG4gICAgIGEgYml0IG1vcmUgd29yayB0aGFuIGp1c3QgY29udmVydF9yYXdfYmFja3RyYWNlLCBidXQgaXQgbWFrZXMgdGhlXG4gICAgIEFQSSBtb3JlIHVzZXItZnJpZW5kbHkgLS0gb3RoZXJ3aXNlIG1vc3QgdXNlcnMgd291bGQgaGF2ZSB0b1xuICAgICByZWltcGxlbWVudCB0aGUgXCJQcm9ncmFtIG5vdCBsaW5rZWQgd2l0aCAtZywgc29ycnlcIiBsb2dpY1xuICAgICB0aGVtc2VsdmVzLiAqKVxuICBtYXRjaCBjb252ZXJ0X3Jhd19iYWNrdHJhY2UgcmF3X2JhY2t0cmFjZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgYmFja3RyYWNlIC0+XG4gICAgICBsZXQgdXNhYmxlX3Nsb3QgPSBmdW5jdGlvblxuICAgICAgICB8IFVua25vd25fbG9jYXRpb24gXyAtPiBmYWxzZVxuICAgICAgICB8IEtub3duX2xvY2F0aW9uIF8gLT4gdHJ1ZSBpblxuICAgICAgbGV0IHJlYyBleGlzdHNfdXNhYmxlID0gZnVuY3Rpb25cbiAgICAgICAgfCAoLTEpIC0+IGZhbHNlXG4gICAgICAgIHwgaSAtPiB1c2FibGVfc2xvdCBiYWNrdHJhY2UuKGkpIHx8IGV4aXN0c191c2FibGUgKGkgLSAxKSBpblxuICAgICAgaWYgZXhpc3RzX3VzYWJsZSAoQXJyYXkubGVuZ3RoIGJhY2t0cmFjZSAtIDEpXG4gICAgICB0aGVuIFNvbWUgYmFja3RyYWNlXG4gICAgICBlbHNlIE5vbmVcblxubGV0IGJhY2t0cmFjZV9zbG90c19vZl9yYXdfZW50cnkgZW50cnkgPVxuICBiYWNrdHJhY2Vfc2xvdHMgW3wgZW50cnkgfF1cblxubW9kdWxlIFNsb3QgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gYmFja3RyYWNlX3Nsb3RcbiAgbGV0IGZvcm1hdCA9IGZvcm1hdF9iYWNrdHJhY2Vfc2xvdFxuICBsZXQgaXNfcmFpc2UgPSBiYWNrdHJhY2Vfc2xvdF9pc19yYWlzZVxuICBsZXQgaXNfaW5saW5lID0gYmFja3RyYWNlX3Nsb3RfaXNfaW5saW5lXG4gIGxldCBsb2NhdGlvbiA9IGJhY2t0cmFjZV9zbG90X2xvY2F0aW9uXG4gIGxldCBuYW1lID0gYmFja3RyYWNlX3Nsb3RfZGVmbmFtZVxuZW5kXG5cbmxldCByYXdfYmFja3RyYWNlX2xlbmd0aCBidCA9IEFycmF5Lmxlbmd0aCBidFxuXG5leHRlcm5hbCBnZXRfcmF3X2JhY2t0cmFjZV9zbG90IDpcbiAgcmF3X2JhY2t0cmFjZSAtPiBpbnQgLT4gcmF3X2JhY2t0cmFjZV9zbG90ID0gXCJjYW1sX3Jhd19iYWNrdHJhY2Vfc2xvdFwiXG5cbmV4dGVybmFsIGdldF9yYXdfYmFja3RyYWNlX25leHRfc2xvdCA6XG4gIHJhd19iYWNrdHJhY2Vfc2xvdCAtPiByYXdfYmFja3RyYWNlX3Nsb3Qgb3B0aW9uXG4gID0gXCJjYW1sX3Jhd19iYWNrdHJhY2VfbmV4dF9zbG90XCJcblxuKCogY29uZnVzaW5nbHkgbmFtZWQ6XG4gICByZXR1cm5zIHRoZSAqc3RyaW5nKiBjb3JyZXNwb25kaW5nIHRvIHRoZSBnbG9iYWwgY3VycmVudCBiYWNrdHJhY2UgKilcbmxldCBnZXRfYmFja3RyYWNlICgpID0gcmF3X2JhY2t0cmFjZV90b19zdHJpbmcgKGdldF9yYXdfYmFja3RyYWNlICgpKVxuXG5leHRlcm5hbCByZWNvcmRfYmFja3RyYWNlOiBib29sIC0+IHVuaXQgPSBcImNhbWxfcmVjb3JkX2JhY2t0cmFjZVwiXG5leHRlcm5hbCBiYWNrdHJhY2Vfc3RhdHVzOiB1bml0IC0+IGJvb2wgPSBcImNhbWxfYmFja3RyYWNlX3N0YXR1c1wiXG5cbmxldCByZWMgcmVnaXN0ZXJfcHJpbnRlciBmbiA9XG4gIGxldCBvbGRfcHJpbnRlcnMgPSBBdG9taWMuZ2V0IHByaW50ZXJzIGluXG4gIGxldCBuZXdfcHJpbnRlcnMgPSBmbiA6OiBvbGRfcHJpbnRlcnMgaW5cbiAgbGV0IHN1Y2Nlc3MgPSBBdG9taWMuY29tcGFyZV9hbmRfc2V0IHByaW50ZXJzIG9sZF9wcmludGVycyBuZXdfcHJpbnRlcnMgaW5cbiAgaWYgbm90IHN1Y2Nlc3MgdGhlbiByZWdpc3Rlcl9wcmludGVyIGZuXG5cbmV4dGVybmFsIGdldF9jYWxsc3RhY2s6IGludCAtPiByYXdfYmFja3RyYWNlID0gXCJjYW1sX2dldF9jdXJyZW50X2NhbGxzdGFja1wiXG5cbmxldCBleG5fc2xvdCB4ID1cbiAgbGV0IHggPSBPYmoucmVwciB4IGluXG4gIGlmIE9iai50YWcgeCA9IDAgdGhlbiBPYmouZmllbGQgeCAwIGVsc2UgeFxuXG5sZXQgZXhuX3Nsb3RfaWQgeCA9XG4gIGxldCBzbG90ID0gZXhuX3Nsb3QgeCBpblxuICAoT2JqLm9iaiAoT2JqLmZpZWxkIHNsb3QgMSkgOiBpbnQpXG5cbmxldCBleG5fc2xvdF9uYW1lIHggPVxuICBsZXQgc2xvdCA9IGV4bl9zbG90IHggaW5cbiAgKE9iai5vYmogKE9iai5maWVsZCBzbG90IDApIDogc3RyaW5nKVxuXG5leHRlcm5hbCBnZXRfZGVidWdfaW5mb19zdGF0dXMgOiB1bml0IC0+IGludCA9IFwiY2FtbF9tbF9kZWJ1Z19pbmZvX3N0YXR1c1wiXG5cbigqIERlc2NyaXB0aW9ucyBmb3IgZXJyb3JzIGluIHN0YXJ0dXAuaC4gU2VlIGFsc28gYmFja3RyYWNlLmMgKilcbmxldCBlcnJvcnMgPSBbfCBcIlwiO1xuICAoKiBGSUxFX05PVF9GT1VORCAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgbm90IGZvdW5kKVwiO1xuICAoKiBCQURfQllURUNPREUgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGFwcGVhcnMgdG8gYmUgY29ycnVwdClcIjtcbiAgKCogV1JPTkdfTUFHSUMgKilcbiAgXCIoQ2Fubm90IHByaW50IGxvY2F0aW9uczpcXG4gXFxcbiAgICAgIGJ5dGVjb2RlIGV4ZWN1dGFibGUgcHJvZ3JhbSBmaWxlIGhhcyB3cm9uZyBtYWdpYyBudW1iZXIpXCI7XG4gICgqIE5PX0ZEUyAqKVxuICBcIihDYW5ub3QgcHJpbnQgbG9jYXRpb25zOlxcbiBcXFxuICAgICAgYnl0ZWNvZGUgZXhlY3V0YWJsZSBwcm9ncmFtIGZpbGUgY2Fubm90IGJlIG9wZW5lZDtcXG4gXFxcbiAgICAgIC0tIHRvbyBtYW55IG9wZW4gZmlsZXMuIFRyeSBydW5uaW5nIHdpdGggT0NBTUxSVU5QQVJBTT1iPTIpXCJcbnxdXG5cbmxldCBkZWZhdWx0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIGV4biByYXdfYmFja3RyYWNlID1cbiAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gIHByaW50X3Jhd19iYWNrdHJhY2Ugc3RkZXJyIHJhd19iYWNrdHJhY2U7XG4gIGxldCBzdGF0dXMgPSBnZXRfZGVidWdfaW5mb19zdGF0dXMgKCkgaW5cbiAgaWYgc3RhdHVzIDwgMCB0aGVuXG4gICAgcHJlcnJfZW5kbGluZSBlcnJvcnMuKGFicyBzdGF0dXMpO1xuICBmbHVzaCBzdGRlcnJcblxubGV0IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyID0gcmVmIGRlZmF1bHRfdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXJcblxubGV0IHNldF91bmNhdWdodF9leGNlcHRpb25faGFuZGxlciBmbiA9IHVuY2F1Z2h0X2V4Y2VwdGlvbl9oYW5kbGVyIDo9IGZuXG5cbmxldCBlbXB0eV9iYWNrdHJhY2UgOiByYXdfYmFja3RyYWNlID0gW3wgfF1cblxubGV0IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSA9XG4gIHRyeVxuICAgIGdldF9yYXdfYmFja3RyYWNlICgpXG4gIHdpdGggXyAoKiBPdXRfb2ZfbWVtb3J5PyAqKSAtPlxuICAgIGVtcHR5X2JhY2t0cmFjZVxuXG5sZXQgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvbicgZXhuIGRlYnVnZ2VyX2luX3VzZSA9XG4gIHRyeVxuICAgICgqIEdldCB0aGUgYmFja3RyYWNlIG5vdywgaW4gY2FzZSBvbmUgb2YgdGhlIFthdF9leGl0XSBmdW5jdGlvblxuICAgICAgIGRlc3Ryb3lzIGl0LiAqKVxuICAgIGxldCByYXdfYmFja3RyYWNlID1cbiAgICAgIGlmIGRlYnVnZ2VyX2luX3VzZSAoKiBTYW1lIHRlc3QgYXMgaW4gW3J1bnRpbWUvcHJpbnRleGMuY10gKikgdGhlblxuICAgICAgICBlbXB0eV9iYWNrdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgdHJ5X2dldF9yYXdfYmFja3RyYWNlICgpXG4gICAgaW5cbiAgICAodHJ5IFN0ZGxpYi5kb19hdF9leGl0ICgpIHdpdGggXyAtPiAoKSk7XG4gICAgdHJ5XG4gICAgICAhdW5jYXVnaHRfZXhjZXB0aW9uX2hhbmRsZXIgZXhuIHJhd19iYWNrdHJhY2VcbiAgICB3aXRoIGV4bicgLT5cbiAgICAgIGxldCByYXdfYmFja3RyYWNlJyA9IHRyeV9nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yOiBleGNlcHRpb24gJXNcXG5cIiAodG9fc3RyaW5nIGV4bik7XG4gICAgICBwcmludF9yYXdfYmFja3RyYWNlIHN0ZGVyciByYXdfYmFja3RyYWNlO1xuICAgICAgZXByaW50ZiBcIkZhdGFsIGVycm9yIGluIHVuY2F1Z2h0IGV4Y2VwdGlvbiBoYW5kbGVyOiBleGNlcHRpb24gJXNcXG5cIlxuICAgICAgICAodG9fc3RyaW5nIGV4bicpO1xuICAgICAgcHJpbnRfcmF3X2JhY2t0cmFjZSBzdGRlcnIgcmF3X2JhY2t0cmFjZSc7XG4gICAgICBmbHVzaCBzdGRlcnJcbiAgd2l0aFxuICAgIHwgT3V0X29mX21lbW9yeSAtPlxuICAgICAgICBwcmVycl9lbmRsaW5lXG4gICAgICAgICAgXCJGYXRhbCBlcnJvcjogb3V0IG9mIG1lbW9yeSBpbiB1bmNhdWdodCBleGNlcHRpb24gaGFuZGxlclwiXG5cbigqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IFtjYW1sX2ZhdGFsX3VuY2F1Z2h0X2V4Y2VwdGlvbl0gaW5cbiAgIFtydW50aW1lL3ByaW50ZXhjLmNdIHdoaWNoIGV4cGVjdHMgbm8gZXhjZXB0aW9uIGlzIHJhaXNlZC4gKilcbmxldCBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uIGV4biBkZWJ1Z2dlcl9pbl91c2UgPVxuICB0cnlcbiAgICBoYW5kbGVfdW5jYXVnaHRfZXhjZXB0aW9uJyBleG4gZGVidWdnZXJfaW5fdXNlXG4gIHdpdGggXyAtPlxuICAgICgqIFRoZXJlIGlzIG5vdCBtdWNoIHdlIGNhbiBkbyBhdCB0aGlzIHBvaW50ICopXG4gICAgKClcblxuZXh0ZXJuYWwgcmVnaXN0ZXJfbmFtZWRfdmFsdWUgOiBzdHJpbmcgLT4gJ2EgLT4gdW5pdFxuICA9IFwiY2FtbF9yZWdpc3Rlcl9uYW1lZF92YWx1ZVwiXG5cbmxldCAoKSA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIFwiUHJpbnRleGMuaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblwiXG4gICAgaGFuZGxlX3VuY2F1Z2h0X2V4Y2VwdGlvblxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIE9DYW1sIHByb2dyYW1tZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAxOCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leHRlcm5hbCBpZCA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxubGV0IGNvbnN0IGMgXyA9IGNcbmxldCBmbGlwIGYgeCB5ID0gZiB5IHhcbmxldCBuZWdhdGUgcCB2ID0gbm90IChwIHYpXG5cbmV4Y2VwdGlvbiBGaW5hbGx5X3JhaXNlZCBvZiBleG5cblxubGV0ICgpID0gUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciBAQCBmdW5jdGlvblxufCBGaW5hbGx5X3JhaXNlZCBleG4gLT4gU29tZSAoXCJGdW4uRmluYWxseV9yYWlzZWQ6IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bilcbnwgXyAtPiBOb25lXG5cbmxldCBwcm90ZWN0IH4oZmluYWxseSA6IHVuaXQgLT4gdW5pdCkgd29yayA9XG4gIGxldCBmaW5hbGx5X25vX2V4biAoKSA9XG4gICAgdHJ5IGZpbmFsbHkgKCkgd2l0aCBlIC0+XG4gICAgICBsZXQgYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2UgKEZpbmFsbHlfcmFpc2VkIGUpIGJ0XG4gIGluXG4gIG1hdGNoIHdvcmsgKCkgd2l0aFxuICB8IHJlc3VsdCAtPiBmaW5hbGx5X25vX2V4biAoKSA7IHJlc3VsdFxuICB8IGV4Y2VwdGlvbiB3b3JrX2V4biAtPlxuICAgICAgbGV0IHdvcmtfYnQgPSBQcmludGV4Yy5nZXRfcmF3X2JhY2t0cmFjZSAoKSBpblxuICAgICAgZmluYWxseV9ub19leG4gKCkgO1xuICAgICAgUHJpbnRleGMucmFpc2Vfd2l0aF9iYWNrdHJhY2Ugd29ya19leG4gd29ya19idFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBKYWNxdWVzLUhlbnJpIEpvdXJkYW4sIHByb2pldCBHYWxsaXVtLCBJTlJJQSBQYXJpcyAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5Ni0yMDE2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICAqKVxuKCogICAgIGV0IGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXQgPSB7XG4gIG1pbm9yX3dvcmRzIDogZmxvYXQ7XG4gIHByb21vdGVkX3dvcmRzIDogZmxvYXQ7XG4gIG1ham9yX3dvcmRzIDogZmxvYXQ7XG4gIG1pbm9yX2NvbGxlY3Rpb25zIDogaW50O1xuICBtYWpvcl9jb2xsZWN0aW9ucyA6IGludDtcbiAgaGVhcF93b3JkcyA6IGludDtcbiAgaGVhcF9jaHVua3MgOiBpbnQ7XG4gIGxpdmVfd29yZHMgOiBpbnQ7XG4gIGxpdmVfYmxvY2tzIDogaW50O1xuICBmcmVlX3dvcmRzIDogaW50O1xuICBmcmVlX2Jsb2NrcyA6IGludDtcbiAgbGFyZ2VzdF9mcmVlIDogaW50O1xuICBmcmFnbWVudHMgOiBpbnQ7XG4gIGNvbXBhY3Rpb25zIDogaW50O1xuICB0b3BfaGVhcF93b3JkcyA6IGludDtcbiAgc3RhY2tfc2l6ZSA6IGludDtcbiAgZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiBpbnQ7XG59XG5cbnR5cGUgY29udHJvbCA9IHtcbiAgbXV0YWJsZSBtaW5vcl9oZWFwX3NpemUgOiBpbnQ7XG4gIG11dGFibGUgbWFqb3JfaGVhcF9pbmNyZW1lbnQgOiBpbnQ7XG4gIG11dGFibGUgc3BhY2Vfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgdmVyYm9zZSA6IGludDtcbiAgbXV0YWJsZSBtYXhfb3ZlcmhlYWQgOiBpbnQ7XG4gIG11dGFibGUgc3RhY2tfbGltaXQgOiBpbnQ7XG4gIG11dGFibGUgYWxsb2NhdGlvbl9wb2xpY3kgOiBpbnQ7XG4gIHdpbmRvd19zaXplIDogaW50O1xuICBjdXN0b21fbWFqb3JfcmF0aW8gOiBpbnQ7XG4gIGN1c3RvbV9taW5vcl9yYXRpbyA6IGludDtcbiAgY3VzdG9tX21pbm9yX21heF9zaXplIDogaW50O1xufVxuXG5leHRlcm5hbCBzdGF0IDogdW5pdCAtPiBzdGF0ID0gXCJjYW1sX2djX3N0YXRcIlxuZXh0ZXJuYWwgcXVpY2tfc3RhdCA6IHVuaXQgLT4gc3RhdCA9IFwiY2FtbF9nY19xdWlja19zdGF0XCJcbmV4dGVybmFsIGNvdW50ZXJzIDogdW5pdCAtPiAoZmxvYXQgKiBmbG9hdCAqIGZsb2F0KSA9IFwiY2FtbF9nY19jb3VudGVyc1wiXG5leHRlcm5hbCBtaW5vcl93b3JkcyA6IHVuaXQgLT4gKGZsb2F0IFtAdW5ib3hlZF0pXG4gID0gXCJjYW1sX2djX21pbm9yX3dvcmRzXCIgXCJjYW1sX2djX21pbm9yX3dvcmRzX3VuYm94ZWRcIlxuZXh0ZXJuYWwgZ2V0IDogdW5pdCAtPiBjb250cm9sID0gXCJjYW1sX2djX2dldFwiXG5leHRlcm5hbCBzZXQgOiBjb250cm9sIC0+IHVuaXQgPSBcImNhbWxfZ2Nfc2V0XCJcbmV4dGVybmFsIG1pbm9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX21pbm9yXCJcbmV4dGVybmFsIG1ham9yX3NsaWNlIDogaW50IC0+IGludCA9IFwiY2FtbF9nY19tYWpvcl9zbGljZVwiXG5leHRlcm5hbCBtYWpvciA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19tYWpvclwiXG5leHRlcm5hbCBmdWxsX21ham9yIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2djX2Z1bGxfbWFqb3JcIlxuZXh0ZXJuYWwgY29tcGFjdCA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9nY19jb21wYWN0aW9uXCJcbmV4dGVybmFsIGdldF9taW5vcl9mcmVlIDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21pbm9yX2ZyZWVcIlxuZXh0ZXJuYWwgZ2V0X2J1Y2tldCA6IGludCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2J1Y2tldFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBnZXRfY3JlZGl0IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2V0X21ham9yX2NyZWRpdFwiIFtAQG5vYWxsb2NdXG5leHRlcm5hbCBodWdlX2ZhbGxiYWNrX2NvdW50IDogdW5pdCAtPiBpbnQgPSBcImNhbWxfZ2NfaHVnZV9mYWxsYmFja19jb3VudFwiXG5leHRlcm5hbCBldmVudGxvZ19wYXVzZSA6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9ldmVudGxvZ19wYXVzZVwiXG5leHRlcm5hbCBldmVudGxvZ19yZXN1bWUgOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfZXZlbnRsb2dfcmVzdW1lXCJcblxub3BlbiBQcmludGZcblxubGV0IHByaW50X3N0YXQgYyA9XG4gIGxldCBzdCA9IHN0YXQgKCkgaW5cbiAgZnByaW50ZiBjIFwibWlub3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5taW5vcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwibWFqb3JfY29sbGVjdGlvbnM6ICAgICAgJWRcXG5cIiBzdC5tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiY29tcGFjdGlvbnM6ICAgICAgICAgICAgJWRcXG5cIiBzdC5jb21wYWN0aW9ucztcbiAgZnByaW50ZiBjIFwiZm9yY2VkX21ham9yX2NvbGxlY3Rpb25zOiAlZFxcblwiIHN0LmZvcmNlZF9tYWpvcl9jb2xsZWN0aW9ucztcbiAgZnByaW50ZiBjIFwiXFxuXCI7XG4gIGxldCBsMSA9IFN0cmluZy5sZW5ndGggKHNwcmludGYgXCIlLjBmXCIgc3QubWlub3Jfd29yZHMpIGluXG4gIGZwcmludGYgYyBcIm1pbm9yX3dvcmRzOiAgICAlKi4wZlxcblwiIGwxIHN0Lm1pbm9yX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJwcm9tb3RlZF93b3JkczogJSouMGZcXG5cIiBsMSBzdC5wcm9tb3RlZF93b3JkcztcbiAgZnByaW50ZiBjIFwibWFqb3Jfd29yZHM6ICAgICUqLjBmXFxuXCIgbDEgc3QubWFqb3Jfd29yZHM7XG4gIGZwcmludGYgYyBcIlxcblwiO1xuICBsZXQgbDIgPSBTdHJpbmcubGVuZ3RoIChzcHJpbnRmIFwiJWRcIiBzdC50b3BfaGVhcF93b3JkcykgaW5cbiAgZnByaW50ZiBjIFwidG9wX2hlYXBfd29yZHM6ICUqZFxcblwiIGwyIHN0LnRvcF9oZWFwX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJoZWFwX3dvcmRzOiAgICAgJSpkXFxuXCIgbDIgc3QuaGVhcF93b3JkcztcbiAgZnByaW50ZiBjIFwibGl2ZV93b3JkczogICAgICUqZFxcblwiIGwyIHN0LmxpdmVfd29yZHM7XG4gIGZwcmludGYgYyBcImZyZWVfd29yZHM6ICAgICAlKmRcXG5cIiBsMiBzdC5mcmVlX3dvcmRzO1xuICBmcHJpbnRmIGMgXCJsYXJnZXN0X2ZyZWU6ICAgJSpkXFxuXCIgbDIgc3QubGFyZ2VzdF9mcmVlO1xuICBmcHJpbnRmIGMgXCJmcmFnbWVudHM6ICAgICAgJSpkXFxuXCIgbDIgc3QuZnJhZ21lbnRzO1xuICBmcHJpbnRmIGMgXCJcXG5cIjtcbiAgZnByaW50ZiBjIFwibGl2ZV9ibG9ja3M6ICVkXFxuXCIgc3QubGl2ZV9ibG9ja3M7XG4gIGZwcmludGYgYyBcImZyZWVfYmxvY2tzOiAlZFxcblwiIHN0LmZyZWVfYmxvY2tzO1xuICBmcHJpbnRmIGMgXCJoZWFwX2NodW5rczogJWRcXG5cIiBzdC5oZWFwX2NodW5rc1xuXG5cbmxldCBhbGxvY2F0ZWRfYnl0ZXMgKCkgPVxuICBsZXQgKG1pLCBwcm8sIG1hKSA9IGNvdW50ZXJzICgpIGluXG4gIChtaSArLiBtYSAtLiBwcm8pICouIGZsb2F0X29mX2ludCAoU3lzLndvcmRfc2l6ZSAvIDgpXG5cblxuZXh0ZXJuYWwgZmluYWxpc2UgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9maW5hbF9yZWdpc3RlclwiXG5leHRlcm5hbCBmaW5hbGlzZV9sYXN0IDogKHVuaXQgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdCA9XG4gIFwiY2FtbF9maW5hbF9yZWdpc3Rlcl9jYWxsZWRfd2l0aG91dF92YWx1ZVwiXG5leHRlcm5hbCBmaW5hbGlzZV9yZWxlYXNlIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2ZpbmFsX3JlbGVhc2VcIlxuXG5cbnR5cGUgYWxhcm0gPSBib29sIHJlZlxudHlwZSBhbGFybV9yZWMgPSB7YWN0aXZlIDogYWxhcm07IGYgOiB1bml0IC0+IHVuaXR9XG5cbmxldCByZWMgY2FsbF9hbGFybSBhcmVjID1cbiAgaWYgIShhcmVjLmFjdGl2ZSkgdGhlbiBiZWdpblxuICAgIGZpbmFsaXNlIGNhbGxfYWxhcm0gYXJlYztcbiAgICBhcmVjLmYgKCk7XG4gIGVuZFxuXG5cbmxldCBjcmVhdGVfYWxhcm0gZiA9XG4gIGxldCBhcmVjID0geyBhY3RpdmUgPSByZWYgdHJ1ZTsgZiA9IGYgfSBpblxuICBmaW5hbGlzZSBjYWxsX2FsYXJtIGFyZWM7XG4gIGFyZWMuYWN0aXZlXG5cblxubGV0IGRlbGV0ZV9hbGFybSBhID0gYSA6PSBmYWxzZVxuXG5tb2R1bGUgTWVtcHJvZiA9XG4gIHN0cnVjdFxuICAgIHR5cGUgYWxsb2NhdGlvbl9zb3VyY2UgPSBOb3JtYWwgfCBNYXJzaGFsIHwgQ3VzdG9tXG4gICAgdHlwZSBhbGxvY2F0aW9uID1cbiAgICAgIHsgbl9zYW1wbGVzIDogaW50O1xuICAgICAgICBzaXplIDogaW50O1xuICAgICAgICBzb3VyY2UgOiBhbGxvY2F0aW9uX3NvdXJjZTtcbiAgICAgICAgY2FsbHN0YWNrIDogUHJpbnRleGMucmF3X2JhY2t0cmFjZSB9XG5cbiAgICB0eXBlICgnbWlub3IsICdtYWpvcikgdHJhY2tlciA9IHtcbiAgICAgIGFsbG9jX21pbm9yOiBhbGxvY2F0aW9uIC0+ICdtaW5vciBvcHRpb247XG4gICAgICBhbGxvY19tYWpvcjogYWxsb2NhdGlvbiAtPiAnbWFqb3Igb3B0aW9uO1xuICAgICAgcHJvbW90ZTogJ21pbm9yIC0+ICdtYWpvciBvcHRpb247XG4gICAgICBkZWFsbG9jX21pbm9yOiAnbWlub3IgLT4gdW5pdDtcbiAgICAgIGRlYWxsb2NfbWFqb3I6ICdtYWpvciAtPiB1bml0O1xuICAgIH1cblxuICAgIGxldCBudWxsX3RyYWNrZXIgPSB7XG4gICAgICBhbGxvY19taW5vciA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGFsbG9jX21ham9yID0gKGZ1biBfIC0+IE5vbmUpO1xuICAgICAgcHJvbW90ZSA9IChmdW4gXyAtPiBOb25lKTtcbiAgICAgIGRlYWxsb2NfbWlub3IgPSAoZnVuIF8gLT4gKCkpO1xuICAgICAgZGVhbGxvY19tYWpvciA9IChmdW4gXyAtPiAoKSk7XG4gICAgfVxuXG4gICAgZXh0ZXJuYWwgY19zdGFydCA6XG4gICAgICBmbG9hdCAtPiBpbnQgLT4gKCdtaW5vciwgJ21ham9yKSB0cmFja2VyIC0+IHVuaXRcbiAgICAgID0gXCJjYW1sX21lbXByb2Zfc3RhcnRcIlxuXG4gICAgbGV0IHN0YXJ0XG4gICAgICB+c2FtcGxpbmdfcmF0ZVxuICAgICAgPyhjYWxsc3RhY2tfc2l6ZSA9IG1heF9pbnQpXG4gICAgICB0cmFja2VyID1cbiAgICAgIGNfc3RhcnQgc2FtcGxpbmdfcmF0ZSBjYWxsc3RhY2tfc2l6ZSB0cmFja2VyXG5cbiAgICBleHRlcm5hbCBzdG9wIDogdW5pdCAtPiB1bml0ID0gXCJjYW1sX21lbXByb2Zfc3RvcFwiXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBNZXNzYWdlIGRpZ2VzdCAoTUQ1KSAqKVxuXG50eXBlIHQgPSBzdHJpbmdcblxubGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxubGV0IGVxdWFsID0gU3RyaW5nLmVxdWFsXG5cbmV4dGVybmFsIHVuc2FmZV9zdHJpbmc6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHQgPSBcImNhbWxfbWQ1X3N0cmluZ1wiXG5leHRlcm5hbCBjaGFubmVsOiBpbl9jaGFubmVsIC0+IGludCAtPiB0ID0gXCJjYW1sX21kNV9jaGFuXCJcblxubGV0IHN0cmluZyBzdHIgPVxuICB1bnNhZmVfc3RyaW5nIHN0ciAwIChTdHJpbmcubGVuZ3RoIHN0cilcblxubGV0IGJ5dGVzIGIgPSBzdHJpbmcgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgYilcblxubGV0IHN1YnN0cmluZyBzdHIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBTdHJpbmcubGVuZ3RoIHN0ciAtIGxlblxuICB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnN1YnN0cmluZ1wiXG4gIGVsc2UgdW5zYWZlX3N0cmluZyBzdHIgb2ZzIGxlblxuXG5sZXQgc3ViYnl0ZXMgYiBvZnMgbGVuID0gc3Vic3RyaW5nIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIGIpIG9mcyBsZW5cblxubGV0IGZpbGUgZmlsZW5hbWUgPVxuICBsZXQgaWMgPSBvcGVuX2luX2JpbiBmaWxlbmFtZSBpblxuICBtYXRjaCBjaGFubmVsIGljICgtMSkgd2l0aFxuICAgIHwgZCAtPiBjbG9zZV9pbiBpYzsgZFxuICAgIHwgZXhjZXB0aW9uIGUgLT4gY2xvc2VfaW4gaWM7IHJhaXNlIGVcblxubGV0IG91dHB1dCBjaGFuIGRpZ2VzdCA9XG4gIG91dHB1dF9zdHJpbmcgY2hhbiBkaWdlc3RcblxubGV0IGlucHV0IGNoYW4gPSByZWFsbHlfaW5wdXRfc3RyaW5nIGNoYW4gMTZcblxubGV0IGNoYXJfaGV4IG4gPVxuICBDaGFyLnVuc2FmZV9jaHIgKG4gKyBpZiBuIDwgMTAgdGhlbiBDaGFyLmNvZGUgJzAnIGVsc2UgKENoYXIuY29kZSAnYScgLSAxMCkpXG5cbmxldCB0b19oZXggZCA9XG4gIGlmIFN0cmluZy5sZW5ndGggZCA8PiAxNiB0aGVuIGludmFsaWRfYXJnIFwiRGlnZXN0LnRvX2hleFwiO1xuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDMyIGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIGxldCB4ID0gQ2hhci5jb2RlIGQuW2ldIGluXG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMikgKGNoYXJfaGV4ICh4IGxzciA0KSk7XG4gICAgQnl0ZXMudW5zYWZlX3NldCByZXN1bHQgKGkqMisxKSAoY2hhcl9oZXggKHggbGFuZCAweDBmKSk7XG4gIGRvbmU7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzdWx0XG5cbmxldCBmcm9tX2hleCBzID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBzIDw+IDMyIHRoZW4gaW52YWxpZF9hcmcgXCJEaWdlc3QuZnJvbV9oZXhcIjtcbiAgbGV0IGRpZ2l0IGMgPVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJzAnLi4nOScgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnXG4gICAgfCAnQScuLidGJyAtPiBDaGFyLmNvZGUgYyAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgJ2EnLi4nZicgLT4gQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJ2EnICsgMTBcbiAgICB8IF8gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEaWdlc3QuZnJvbV9oZXhcIilcbiAgaW5cbiAgbGV0IGJ5dGUgaSA9IGRpZ2l0IHMuW2ldIGxzbCA0ICsgZGlnaXQgcy5baSsxXSBpblxuICBsZXQgcmVzdWx0ID0gQnl0ZXMuY3JlYXRlIDE2IGluXG4gIGZvciBpID0gMCB0byAxNSBkb1xuICAgIEJ5dGVzLnNldCByZXN1bHQgaSAoQ2hhci5jaHIgKGJ5dGUgKDIgKiBpKSkpO1xuICBkb25lO1xuICBCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHJlc3VsdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICBEYW1pZW4gRG9saWdleiwgcHJvamV0IFBhcmEsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBQc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcbiAgIFRoaXMgaXMgYSBsYWdnZWQtRmlib25hY2NpIEYoNTUsIDI0LCArKSB3aXRoIGEgbW9kaWZpZWQgYWRkaXRpb25cbiAgIGZ1bmN0aW9uIHRvIGVuaGFuY2UgdGhlIG1peGluZyBvZiBiaXRzLlxuICAgSWYgd2UgdXNlIG5vcm1hbCBhZGRpdGlvbiwgdGhlIGxvdy1vcmRlciBiaXQgZmFpbHMgdGVzdHMgMSBhbmQgN1xuICAgb2YgdGhlIERpZWhhcmQgdGVzdCBzdWl0ZSwgYW5kIGJpdHMgMSBhbmQgMiBhbHNvIGZhaWwgdGVzdCA3LlxuICAgSWYgd2UgdXNlIG11bHRpcGxpY2F0aW9uIGFzIHN1Z2dlc3RlZCBieSBNYXJzYWdsaWEsIGl0IGRvZXNuJ3QgZmFyZVxuICAgbXVjaCBiZXR0ZXIuXG4gICBCeSBtaXhpbmcgdGhlIGJpdHMgb2Ygb25lIG9mIHRoZSBudW1iZXJzIGJlZm9yZSBhZGRpdGlvbiAoWE9SIHRoZVxuICAgNSBoaWdoLW9yZGVyIGJpdHMgaW50byB0aGUgbG93LW9yZGVyIGJpdHMpLCB3ZSBnZXQgYSBnZW5lcmF0b3IgdGhhdFxuICAgcGFzc2VzIGFsbCB0aGUgRGllaGFyZCB0ZXN0cy5cbiopXG5cbmV4dGVybmFsIHJhbmRvbV9zZWVkOiB1bml0IC0+IGludCBhcnJheSA9IFwiY2FtbF9zeXNfcmFuZG9tX3NlZWRcIlxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcblxuICB0eXBlIHQgPSB7IHN0IDogaW50IGFycmF5OyBtdXRhYmxlIGlkeCA6IGludCB9XG5cbiAgbGV0IG5ld19zdGF0ZSAoKSA9IHsgc3QgPSBBcnJheS5tYWtlIDU1IDA7IGlkeCA9IDAgfVxuICBsZXQgYXNzaWduIHN0MSBzdDIgPVxuICAgIEFycmF5LmJsaXQgc3QyLnN0IDAgc3QxLnN0IDAgNTU7XG4gICAgc3QxLmlkeCA8LSBzdDIuaWR4XG5cblxuICBsZXQgZnVsbF9pbml0IHMgc2VlZCA9XG4gICAgbGV0IGNvbWJpbmUgYWNjdSB4ID0gRGlnZXN0LnN0cmluZyAoYWNjdSBeIEludC50b19zdHJpbmcgeCkgaW5cbiAgICBsZXQgZXh0cmFjdCBkID1cbiAgICAgIENoYXIuY29kZSBkLlswXSArIChDaGFyLmNvZGUgZC5bMV0gbHNsIDgpICsgKENoYXIuY29kZSBkLlsyXSBsc2wgMTYpXG4gICAgICArIChDaGFyLmNvZGUgZC5bM10gbHNsIDI0KVxuICAgIGluXG4gICAgbGV0IHNlZWQgPSBpZiBBcnJheS5sZW5ndGggc2VlZCA9IDAgdGhlbiBbfCAwIHxdIGVsc2Ugc2VlZCBpblxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIHNlZWQgaW5cbiAgICBmb3IgaSA9IDAgdG8gNTQgZG9cbiAgICAgIHMuc3QuKGkpIDwtIGk7XG4gICAgZG9uZTtcbiAgICBsZXQgYWNjdSA9IHJlZiBcInhcIiBpblxuICAgIGZvciBpID0gMCB0byA1NCArIEludC5tYXggNTUgbCBkb1xuICAgICAgbGV0IGogPSBpIG1vZCA1NSBpblxuICAgICAgbGV0IGsgPSBpIG1vZCBsIGluXG4gICAgICBhY2N1IDo9IGNvbWJpbmUgIWFjY3Ugc2VlZC4oayk7XG4gICAgICBzLnN0LihqKSA8LSAocy5zdC4oaikgbHhvciBleHRyYWN0ICFhY2N1KSBsYW5kIDB4M0ZGRkZGRkY7ICAoKiBQUiM1NTc1ICopXG4gICAgZG9uZTtcbiAgICBzLmlkeCA8LSAwXG5cblxuICBsZXQgbWFrZSBzZWVkID1cbiAgICBsZXQgcmVzdWx0ID0gbmV3X3N0YXRlICgpIGluXG4gICAgZnVsbF9pbml0IHJlc3VsdCBzZWVkO1xuICAgIHJlc3VsdFxuXG5cbiAgbGV0IG1ha2Vfc2VsZl9pbml0ICgpID0gbWFrZSAocmFuZG9tX3NlZWQgKCkpXG5cbiAgbGV0IGNvcHkgcyA9XG4gICAgbGV0IHJlc3VsdCA9IG5ld19zdGF0ZSAoKSBpblxuICAgIGFzc2lnbiByZXN1bHQgcztcbiAgICByZXN1bHRcblxuXG4gICgqIFJldHVybnMgMzAgcmFuZG9tIGJpdHMgYXMgYW4gaW50ZWdlciAwIDw9IHggPCAxMDczNzQxODI0ICopXG4gIGxldCBiaXRzIHMgPVxuICAgIHMuaWR4IDwtIChzLmlkeCArIDEpIG1vZCA1NTtcbiAgICBsZXQgY3VydmFsID0gcy5zdC4ocy5pZHgpIGluXG4gICAgbGV0IG5ld3ZhbCA9IHMuc3QuKChzLmlkeCArIDI0KSBtb2QgNTUpXG4gICAgICAgICAgICAgICAgICsgKGN1cnZhbCBseG9yICgoY3VydmFsIGxzciAyNSkgbGFuZCAweDFGKSkgaW5cbiAgICBsZXQgbmV3dmFsMzAgPSBuZXd2YWwgbGFuZCAweDNGRkZGRkZGIGluICAoKiBQUiM1NTc1ICopXG4gICAgcy5zdC4ocy5pZHgpIDwtIG5ld3ZhbDMwO1xuICAgIG5ld3ZhbDMwXG5cblxuICBsZXQgcmVjIGludGF1eCBzIG4gPVxuICAgIGxldCByID0gYml0cyBzIGluXG4gICAgbGV0IHYgPSByIG1vZCBuIGluXG4gICAgaWYgciAtIHYgPiAweDNGRkZGRkZGIC0gbiArIDEgdGhlbiBpbnRhdXggcyBuIGVsc2UgdlxuXG4gIGxldCBpbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPiAweDNGRkZGRkZGIHx8IGJvdW5kIDw9IDBcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludFwiXG4gICAgZWxzZSBpbnRhdXggcyBib3VuZFxuXG4gIGxldCByZWMgaW50NjNhdXggcyBuID1cbiAgICBsZXQgbWF4X2ludF8zMiA9ICgxIGxzbCAzMCkgKyAweDNGRkZGRkZGIGluICgqIDB4N0ZGRkZGRkYgKilcbiAgICBsZXQgYjEgPSBiaXRzIHMgaW5cbiAgICBsZXQgYjIgPSBiaXRzIHMgaW5cbiAgICBsZXQgKHIsIG1heF9pbnQpID1cbiAgICAgIGlmIG4gPD0gbWF4X2ludF8zMiB0aGVuXG4gICAgICAgICgqIDMxIHJhbmRvbSBiaXRzIG9uIGJvdGggNjQtYml0IE9DYW1sIGFuZCBKYXZhU2NyaXB0LlxuICAgICAgICAgICBVc2UgdXBwZXIgMTUgYml0cyBvZiBiMSBhbmQgMTYgYml0cyBvZiBiMi4gKilcbiAgICAgICAgbGV0IGJwb3MgPVxuICAgICAgICAgICgoKGIyIGxhbmQgMHgzRkZGQzAwMCkgbHNsIDEpIGxvciAoYjEgbHNyIDE1KSlcbiAgICAgICAgaW5cbiAgICAgICAgICAoYnBvcywgbWF4X2ludF8zMilcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGIzID0gYml0cyBzIGluXG4gICAgICAgICgqIDYyIHJhbmRvbSBiaXRzIG9uIDY0LWJpdCBPQ2FtbDsgdW5yZWFjaGFibGUgb24gSmF2YVNjcmlwdC5cbiAgICAgICAgICAgVXNlIHVwcGVyIDIwIGJpdHMgb2YgYjEgYW5kIDIxIGJpdHMgb2YgYjIgYW5kIGIzLiAqKVxuICAgICAgICBsZXQgYnBvcyA9XG4gICAgICAgICAgKCgoKGIzIGxhbmQgMHgzRkZGRkUwMCkgbHNsIDEyKSBsb3IgKGIyIGxzciA5KSkgbHNsIDIwKVxuICAgICAgICAgICAgbG9yIChiMSBsc3IgMTApXG4gICAgICAgIGluXG4gICAgICAgICAgKGJwb3MsIG1heF9pbnQpXG4gICAgaW5cbiAgICBsZXQgdiA9IHIgbW9kIG4gaW5cbiAgICBpZiByIC0gdiA+IG1heF9pbnQgLSBuICsgMSB0aGVuIGludDYzYXV4IHMgbiBlbHNlIHZcblxuICBsZXQgZnVsbF9pbnQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMCB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIlJhbmRvbS5mdWxsX2ludFwiXG4gICAgZWxzZSBpZiBib3VuZCA+IDB4M0ZGRkZGRkYgdGhlblxuICAgICAgaW50NjNhdXggcyBib3VuZFxuICAgIGVsc2VcbiAgICAgIGludGF1eCBzIGJvdW5kXG5cblxuICBsZXQgcmVjIGludDMyYXV4IHMgbiA9XG4gICAgbGV0IGIxID0gSW50MzIub2ZfaW50IChiaXRzIHMpIGluXG4gICAgbGV0IGIyID0gSW50MzIuc2hpZnRfbGVmdCAoSW50MzIub2ZfaW50IChiaXRzIHMgbGFuZCAxKSkgMzAgaW5cbiAgICBsZXQgciA9IEludDMyLmxvZ29yIGIxIGIyIGluXG4gICAgbGV0IHYgPSBJbnQzMi5yZW0gciBuIGluXG4gICAgaWYgSW50MzIuc3ViIHIgdiA+IEludDMyLmFkZCAoSW50MzIuc3ViIEludDMyLm1heF9pbnQgbikgMWxcbiAgICB0aGVuIGludDMyYXV4IHMgblxuICAgIGVsc2UgdlxuXG4gIGxldCBpbnQzMiBzIGJvdW5kID1cbiAgICBpZiBib3VuZCA8PSAwbFxuICAgIHRoZW4gaW52YWxpZF9hcmcgXCJSYW5kb20uaW50MzJcIlxuICAgIGVsc2UgaW50MzJhdXggcyBib3VuZFxuXG5cbiAgbGV0IHJlYyBpbnQ2NGF1eCBzIG4gPVxuICAgIGxldCBiMSA9IEludDY0Lm9mX2ludCAoYml0cyBzKSBpblxuICAgIGxldCBiMiA9IEludDY0LnNoaWZ0X2xlZnQgKEludDY0Lm9mX2ludCAoYml0cyBzKSkgMzAgaW5cbiAgICBsZXQgYjMgPSBJbnQ2NC5zaGlmdF9sZWZ0IChJbnQ2NC5vZl9pbnQgKGJpdHMgcyBsYW5kIDcpKSA2MCBpblxuICAgIGxldCByID0gSW50NjQubG9nb3IgYjEgKEludDY0LmxvZ29yIGIyIGIzKSBpblxuICAgIGxldCB2ID0gSW50NjQucmVtIHIgbiBpblxuICAgIGlmIEludDY0LnN1YiByIHYgPiBJbnQ2NC5hZGQgKEludDY0LnN1YiBJbnQ2NC5tYXhfaW50IG4pIDFMXG4gICAgdGhlbiBpbnQ2NGF1eCBzIG5cbiAgICBlbHNlIHZcblxuICBsZXQgaW50NjQgcyBib3VuZCA9XG4gICAgaWYgYm91bmQgPD0gMExcbiAgICB0aGVuIGludmFsaWRfYXJnIFwiUmFuZG9tLmludDY0XCJcbiAgICBlbHNlIGludDY0YXV4IHMgYm91bmRcblxuXG4gIGxldCBuYXRpdmVpbnQgPVxuICAgIGlmIE5hdGl2ZWludC5zaXplID0gMzJcbiAgICB0aGVuIGZ1biBzIGJvdW5kIC0+IE5hdGl2ZWludC5vZl9pbnQzMiAoaW50MzIgcyAoTmF0aXZlaW50LnRvX2ludDMyIGJvdW5kKSlcbiAgICBlbHNlIGZ1biBzIGJvdW5kIC0+IEludDY0LnRvX25hdGl2ZWludCAoaW50NjQgcyAoSW50NjQub2ZfbmF0aXZlaW50IGJvdW5kKSlcblxuXG4gICgqIFJldHVybnMgYSBmbG9hdCAwIDw9IHggPD0gMSB3aXRoIGF0IG1vc3QgNjAgYml0cyBvZiBwcmVjaXNpb24uICopXG4gIGxldCByYXdmbG9hdCBzID1cbiAgICBsZXQgc2NhbGUgPSAxMDczNzQxODI0LjAgICgqIDJeMzAgKilcbiAgICBhbmQgcjEgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBhbmQgcjIgPSBTdGRsaWIuZmxvYXQgKGJpdHMgcylcbiAgICBpbiAocjEgLy4gc2NhbGUgKy4gcjIpIC8uIHNjYWxlXG5cblxuICBsZXQgZmxvYXQgcyBib3VuZCA9IHJhd2Zsb2F0IHMgKi4gYm91bmRcblxuICBsZXQgYm9vbCBzID0gKGJpdHMgcyBsYW5kIDEgPSAwKVxuXG5lbmRcblxuKCogVGhpcyBpcyB0aGUgc3RhdGUgeW91IGdldCB3aXRoIFtpbml0IDI3MTgyODE4XSBhbmQgdGhlbiBhcHBseWluZ1xuICAgdGhlIFwibGFuZCAweDNGRkZGRkZGXCIgZmlsdGVyIHRvIHRoZW0uICBTZWUgIzU1NzUsICM1NzkzLCAjNTk3Ny4gKilcbmxldCBkZWZhdWx0ID0ge1xuICBTdGF0ZS5zdCA9IFt8XG4gICAgICAweDNhZTI1MjJiOyAweDFkOGQ0NjM0OyAweDE1YjRmYWQwOyAweDE4YjE0YWNlOyAweDEyZjhhM2M0OyAweDNiMDg2YzQ3O1xuICAgICAgMHgxNmQ0NjdkNjsgMHgxMDFkOTFjNzsgMHgzMjFkZjE3NzsgMHgwMTc2YzE5MzsgMHgxZmY3MmJmMTsgMHgxZTg4OTEwOTtcbiAgICAgIDB4MGI0NjRiMTg7IDB4MmI4NmI5N2M7IDB4MDg5MWRhNDg7IDB4MDMxMzc0NjM7IDB4MDg1YWM1YTE7IDB4MTVkNjFmMmY7XG4gICAgICAweDNiY2VkMzU5OyAweDI5YzFjMTMyOyAweDNhODY3NjZlOyAweDM2NmQ4Yzg2OyAweDFmNWI2MjIyOyAweDNjZTFiNTlmO1xuICAgICAgMHgyZWJmNzhlMTsgMHgyN2NkMWI4NjsgMHgyNThmM2RjMzsgMHgzODlhODE5NDsgMHgwMmU0YzQ0YzsgMHgxOGM0M2Y3ZDtcbiAgICAgIDB4MGY2ZTUzNGY7IDB4MWU3ZGYzNTk7IDB4MDU1ZDBiN2U7IDB4MTBlODRlN2U7IDB4MTI2MTk4ZTQ7IDB4MGU3NzIyY2I7XG4gICAgICAweDFjYmVkZTI4OyAweDMzOTFiOTY0OyAweDNkNDBlOTJhOyAweDBjNTk5MzNkOyAweDBiOGNkMGI3OyAweDI0ZWZmZjFjO1xuICAgICAgMHgyODAzZmRhYTsgMHgwOGViYzcyZTsgMHgwZjUyMmUzMjsgMHgwNTM5OGVkYzsgMHgyMTQ0YTA0YzsgMHgwYWVmM2NiZDtcbiAgICAgIDB4MDFhZDQ3MTk7IDB4MzViOTNjZDY7IDB4MmE1NTlkNGY7IDB4MWU2ZmQ3Njg7IDB4MjZlMjdmMzY7IDB4MTg2ZjE4YzM7XG4gICAgICAweDJmYmY5NjdhO1xuICAgIHxdO1xuICBTdGF0ZS5pZHggPSAwO1xufVxuXG5sZXQgYml0cyAoKSA9IFN0YXRlLmJpdHMgZGVmYXVsdFxubGV0IGludCBib3VuZCA9IFN0YXRlLmludCBkZWZhdWx0IGJvdW5kXG5sZXQgZnVsbF9pbnQgYm91bmQgPSBTdGF0ZS5mdWxsX2ludCBkZWZhdWx0IGJvdW5kXG5sZXQgaW50MzIgYm91bmQgPSBTdGF0ZS5pbnQzMiBkZWZhdWx0IGJvdW5kXG5sZXQgbmF0aXZlaW50IGJvdW5kID0gU3RhdGUubmF0aXZlaW50IGRlZmF1bHQgYm91bmRcbmxldCBpbnQ2NCBib3VuZCA9IFN0YXRlLmludDY0IGRlZmF1bHQgYm91bmRcbmxldCBmbG9hdCBzY2FsZSA9IFN0YXRlLmZsb2F0IGRlZmF1bHQgc2NhbGVcbmxldCBib29sICgpID0gU3RhdGUuYm9vbCBkZWZhdWx0XG5cbmxldCBmdWxsX2luaXQgc2VlZCA9IFN0YXRlLmZ1bGxfaW5pdCBkZWZhdWx0IHNlZWRcbmxldCBpbml0IHNlZWQgPSBTdGF0ZS5mdWxsX2luaXQgZGVmYXVsdCBbfCBzZWVkIHxdXG5sZXQgc2VsZl9pbml0ICgpID0gZnVsbF9pbml0IChyYW5kb21fc2VlZCgpKVxuXG4oKiBNYW5pcHVsYXRpbmcgdGhlIGN1cnJlbnQgc3RhdGUuICopXG5cbmxldCBnZXRfc3RhdGUgKCkgPSBTdGF0ZS5jb3B5IGRlZmF1bHRcbmxldCBzZXRfc3RhdGUgcyA9IFN0YXRlLmFzc2lnbiBkZWZhdWx0IHNcblxuKCoqKioqKioqKioqKioqKioqKioqXG5cbigqIFRlc3QgZnVuY3Rpb25zLiAgTm90IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5LlxuICAgVGhlIFtjaGlzcXVhcmVdIGZ1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgd2l0aCBuID4gMTByLlxuICAgSXQgcmV0dXJucyBhIHRyaXBsZSAobG93LCBhY3R1YWwsIGhpZ2gpLlxuICAgSWYgbG93IDw9IGFjdHVhbCA8PSBoaWdoLCB0aGUgW2ddIGZ1bmN0aW9uIHBhc3NlZCB0aGUgdGVzdCxcbiAgIG90aGVyd2lzZSBpdCBmYWlsZWQuXG5cbiAgU29tZSByZXN1bHRzOlxuXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwIDUwMDBcbmluaXQgMjcxODI4MTg7IGNoaXNxdWFyZSBpbnQgMTAwMDAwMCAxMDAwXG5pbml0IDI3MTgyODE4OyBjaGlzcXVhcmUgaW50IDEwMDAwMCAxMDI0XG5pbml0IDI5OTc5MjY0MzsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAxNDE0MjEzNjsgY2hpc3F1YXJlIGludCAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmIDEwMjQ7IGNoaXNxdWFyZSBkaWZmIDEwMDAwMCAxMDI0XG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYgMTAwOyBjaGlzcXVhcmUgZGlmZiAxMDAwMDAgMTAwXG5pbml0IDI3MTgyODE4OyBpbml0X2RpZmYyIDEwMjQ7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAyNFxuaW5pdCAyNzE4MjgxODsgaW5pdF9kaWZmMiAxMDA7IGNoaXNxdWFyZSBkaWZmMiAxMDAwMDAgMTAwXG5pbml0IDE0MTQyMTM2OyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbmluaXQgMjk5NzkyNjQzOyBpbml0X2RpZmYyIDEwMDsgY2hpc3F1YXJlIGRpZmYyIDEwMDAwMCAxMDBcbi0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTk3LjUsIDEwNjMuMjQ1NTUzMjAzMzY3NTQpXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4OS43NDAwMDAwMDAwMDUyMzg3LCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDQ4NTguNTc4NjQzNzYyNjksIDUwNDUuNSwgNTE0MS40MjEzNTYyMzczMSlcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9XG4oOTM2Ljc1NDQ0Njc5NjYzMjQ2NSwgOTQ0LjgwNTk5OTk5OTk4MjMwNSwgMTA2My4yNDU1NTMyMDMzNjc1NClcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDE5LjE5NzQ0MDAwMDAwMzU1LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU5LjMxNzc2MDAwMDAwNTM2LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDM5Ljk4NDYzOTk5OTk5NTEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDU0LjM4MjA3OTk5OTk5NTc3LCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDkwLjA5NjAwMDAwMDAwNSwgMTIwLilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg5NjAuLCAxMDc2Ljc4NzIwMDAwMDAwNjEyLCAxMDg4LilcbiMgLSA6IGZsb2F0ICogZmxvYXQgKiBmbG9hdCA9ICg4MC4sIDg1LjE3NjAwMDAwMDAwNjc1MjEsIDEyMC4pXG4jIC0gOiBmbG9hdCAqIGZsb2F0ICogZmxvYXQgPSAoODAuLCA4NS4yMTYwMDAwMDAwMDAzNDkyLCAxMjAuKVxuIyAtIDogZmxvYXQgKiBmbG9hdCAqIGZsb2F0ID0gKDgwLiwgODAuNjIyMDAwMDAwMDAzMDI2OCwgMTIwLilcblxuKilcblxuKCogUmV0dXJuIHRoZSBzdW0gb2YgdGhlIHNxdWFyZXMgb2YgdltpMCxpMVsgKilcbmxldCByZWMgc3Vtc3EgdiBpMCBpMSA9XG4gIGlmIGkwID49IGkxIHRoZW4gMC4wXG4gIGVsc2UgaWYgaTEgPSBpMCArIDEgdGhlbiBTdGRsaWIuZmxvYXQgdi4oaTApICouIFN0ZGxpYi5mbG9hdCB2LihpMClcbiAgZWxzZSBzdW1zcSB2IGkwICgoaTAraTEpLzIpICsuIHN1bXNxIHYgKChpMCtpMSkvMikgaTFcblxuXG5sZXQgY2hpc3F1YXJlIGcgbiByID1cbiAgaWYgbiA8PSAxMCAqIHIgdGhlbiBpbnZhbGlkX2FyZyBcImNoaXNxdWFyZVwiO1xuICBsZXQgZiA9IEFycmF5Lm1ha2UgciAwIGluXG4gIGZvciBpID0gMSB0byBuIGRvXG4gICAgbGV0IHQgPSBnIHIgaW5cbiAgICBmLih0KSA8LSBmLih0KSArIDFcbiAgZG9uZTtcbiAgbGV0IHQgPSBzdW1zcSBmIDAgclxuICBhbmQgciA9IFN0ZGxpYi5mbG9hdCByXG4gIGFuZCBuID0gU3RkbGliLmZsb2F0IG4gaW5cbiAgbGV0IHNyID0gMi4wICouIHNxcnQgciBpblxuICAociAtLiBzciwgICAociAqLiB0IC8uIG4pIC0uIG4sICAgciArLiBzcilcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIGxpbmVhciBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbSBudW1iZXJzLlxuKilcbmxldCBzdCA9IHJlZiAwXG5sZXQgaW5pdF9kaWZmIHIgPSBzdCA6PSBpbnQgclxubGV0IGRpZmYgciA9XG4gIGxldCB4MSA9ICFzdFxuICBhbmQgeDIgPSBpbnQgclxuICBpblxuICBzdCA6PSB4MjtcbiAgaWYgeDEgPj0geDIgdGhlblxuICAgIHgxIC0geDJcbiAgZWxzZVxuICAgIHIgKyB4MSAtIHgyXG5cblxubGV0IHN0MSA9IHJlZiAwXG5hbmQgc3QyID0gcmVmIDBcblxuXG4oKiBUaGlzIGlzIHRvIHRlc3QgZm9yIHF1YWRyYXRpYyBkZXBlbmRlbmNpZXMgYmV0d2VlbiBzdWNjZXNzaXZlIHJhbmRvbVxuICAgbnVtYmVycy5cbiopXG5sZXQgaW5pdF9kaWZmMiByID0gc3QxIDo9IGludCByOyBzdDIgOj0gaW50IHJcbmxldCBkaWZmMiByID1cbiAgbGV0IHgxID0gIXN0MVxuICBhbmQgeDIgPSAhc3QyXG4gIGFuZCB4MyA9IGludCByXG4gIGluXG4gIHN0MSA6PSB4MjtcbiAgc3QyIDo9IHgzO1xuICAoeDMgLSB4MiAtIHgyICsgeDEgKyAyKnIpIG1vZCByXG5cblxuKioqKioqKioqKioqKioqKioqKiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk2IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEhhc2ggdGFibGVzICopXG5cbigqIFdlIGRvIGR5bmFtaWMgaGFzaGluZywgYW5kIHJlc2l6ZSB0aGUgdGFibGUgYW5kIHJlaGFzaCB0aGUgZWxlbWVudHNcbiAgIHdoZW4gYnVja2V0cyBiZWNvbWUgdG9vIGxvbmcuICopXG5cbnR5cGUgKCdhLCAnYikgdCA9XG4gIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICBtdXRhYmxlIGRhdGE6ICgnYSwgJ2IpIGJ1Y2tldGxpc3QgYXJyYXk7ICAoKiB0aGUgYnVja2V0cyAqKVxuICAgIHNlZWQ6IGludDsgICAgICAgICAgICAgICAgICAgICAgICAoKiBmb3IgcmFuZG9taXphdGlvbiAqKVxuICAgIG11dGFibGUgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICgqIGluaXRpYWwgYXJyYXkgc2l6ZSAqKVxuICB9XG5cbmFuZCAoJ2EsICdiKSBidWNrZXRsaXN0ID1cbiAgICBFbXB0eVxuICB8IENvbnMgb2YgeyBtdXRhYmxlIGtleTogJ2E7XG4gICAgICAgICAgICAgIG11dGFibGUgZGF0YTogJ2I7XG4gICAgICAgICAgICAgIG11dGFibGUgbmV4dDogKCdhLCAnYikgYnVja2V0bGlzdCB9XG5cbigqIFRoZSBzaWduIG9mIGluaXRpYWxfc2l6ZSBlbmNvZGVzIHRoZSBmYWN0IHRoYXQgYSB0cmF2ZXJzYWwgaXNcbiAgIG9uZ29pbmcgb3Igbm90LlxuXG4gICBUaGlzIGRpc2FibGVzIHRoZSBlZmZpY2llbnQgaW4gcGxhY2UgaW1wbGVtZW50YXRpb24gb2YgcmVzaXppbmcuXG4qKVxuXG5sZXQgb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICB8fCBoLmluaXRpYWxfc2l6ZSA8IDBcblxubGV0IGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaCA9XG4gIGguaW5pdGlhbF9zaXplIDwtIC0gaC5pbml0aWFsX3NpemVcblxuKCogVG8gcGljayByYW5kb20gc2VlZHMgaWYgcmVxdWVzdGVkICopXG5cbmxldCByYW5kb21pemVkX2RlZmF1bHQgPVxuICBsZXQgcGFyYW1zID1cbiAgICB0cnkgU3lzLmdldGVudiBcIk9DQU1MUlVOUEFSQU1cIiB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIHRyeSBTeXMuZ2V0ZW52IFwiQ0FNTFJVTlBBUkFNXCIgd2l0aCBOb3RfZm91bmQgLT4gXCJcIiBpblxuICBTdHJpbmcuY29udGFpbnMgcGFyYW1zICdSJ1xuXG5sZXQgcmFuZG9taXplZCA9IHJlZiByYW5kb21pemVkX2RlZmF1bHRcblxubGV0IHJhbmRvbWl6ZSAoKSA9IHJhbmRvbWl6ZWQgOj0gdHJ1ZVxubGV0IGlzX3JhbmRvbWl6ZWQgKCkgPSAhcmFuZG9taXplZFxuXG5sZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCgpKVxuXG4oKiBGdW5jdGlvbnMgd2hpY2ggYXBwZWFyIGJlZm9yZSB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgbXVzdCBlaXRoZXIgYmVcbiAgIGluZGVwZW5kZW50IG9mIHRoZSBoYXNoIGZ1bmN0aW9uIG9yIHRha2UgaXQgYXMgYSBwYXJhbWV0ZXIgKHNlZSAjMjIwMiBhbmRcbiAgIGNvZGUgYmVsb3cgdGhlIGZ1bmN0b3IgZGVmaW5pdGlvbnMuICopXG5cbigqIENyZWF0aW5nIGEgZnJlc2gsIGVtcHR5IHRhYmxlICopXG5cbmxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICBpZiB4ID49IG4gdGhlbiB4XG4gIGVsc2UgaWYgeCAqIDIgPiBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuIHhcbiAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG5sZXQgY3JlYXRlID8ocmFuZG9tID0gIXJhbmRvbWl6ZWQpIGluaXRpYWxfc2l6ZSA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgbGV0IHNlZWQgPSBpZiByYW5kb20gdGhlbiBSYW5kb20uU3RhdGUuYml0cyAoTGF6eS5mb3JjZSBwcm5nKSBlbHNlIDAgaW5cbiAgeyBpbml0aWFsX3NpemUgPSBzOyBzaXplID0gMDsgc2VlZCA9IHNlZWQ7IGRhdGEgPSBBcnJheS5tYWtlIHMgRW1wdHkgfVxuXG5sZXQgY2xlYXIgaCA9XG4gIGlmIGguc2l6ZSA+IDAgdGhlbiBiZWdpblxuICAgIGguc2l6ZSA8LSAwO1xuICAgIEFycmF5LmZpbGwgaC5kYXRhIDAgKEFycmF5Lmxlbmd0aCBoLmRhdGEpIEVtcHR5XG4gIGVuZFxuXG5sZXQgcmVzZXQgaCA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gIGlmIE9iai5zaXplIChPYmoucmVwciBoKSA8IDQgKCogY29tcGF0aWJpbGl0eSB3aXRoIG9sZCBoYXNoIHRhYmxlcyAqKVxuICAgIHx8IGxlbiA9IGFicyBoLmluaXRpYWxfc2l6ZSB0aGVuXG4gICAgY2xlYXIgaFxuICBlbHNlIGJlZ2luXG4gICAgaC5zaXplIDwtIDA7XG4gICAgaC5kYXRhIDwtIEFycmF5Lm1ha2UgKGFicyBoLmluaXRpYWxfc2l6ZSkgRW1wdHlcbiAgZW5kXG5cbmxldCBjb3B5X2J1Y2tldGxpc3QgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IEVtcHR5XG4gIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgbGV0IHJlYyBsb29wIHByZWMgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+ICgpXG4gICAgICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IENvbnMgcHJlYyAtPiAgcHJlYy5uZXh0IDwtIHJcbiAgICAgICAgICAgIGVuZDtcbiAgICAgICAgICAgIGxvb3AgciBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IHIgPSBDb25zIHtrZXk7IGRhdGE7IG5leHR9IGluXG4gICAgICBsb29wIHIgbmV4dDtcbiAgICAgIHJcblxubGV0IGNvcHkgaCA9IHsgaCB3aXRoIGRhdGEgPSBBcnJheS5tYXAgY29weV9idWNrZXRsaXN0IGguZGF0YSB9XG5cbmxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG5sZXQgaW5zZXJ0X2FsbF9idWNrZXRzIGluZGV4ZnVuIGlucGxhY2Ugb2RhdGEgbmRhdGEgPVxuICBsZXQgbnNpemUgPSBBcnJheS5sZW5ndGggbmRhdGEgaW5cbiAgbGV0IG5kYXRhX3RhaWwgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgfCBFbXB0eSAtPiAoKVxuICAgIHwgQ29ucyB7a2V5OyBkYXRhOyBuZXh0fSBhcyBjZWxsIC0+XG4gICAgICAgIGxldCBjZWxsID1cbiAgICAgICAgICBpZiBpbnBsYWNlIHRoZW4gY2VsbFxuICAgICAgICAgIGVsc2UgQ29ucyB7a2V5OyBkYXRhOyBuZXh0ID0gRW1wdHl9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBuaWR4ID0gaW5kZXhmdW4ga2V5IGluXG4gICAgICAgIGJlZ2luIG1hdGNoIG5kYXRhX3RhaWwuKG5pZHgpIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBuZGF0YS4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIGNlbGw7XG4gICAgICAgIGVuZDtcbiAgICAgICAgbmRhdGFfdGFpbC4obmlkeCkgPC0gY2VsbDtcbiAgICAgICAgaW5zZXJ0X2J1Y2tldCBuZXh0XG4gIGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggb2RhdGEgLSAxIGRvXG4gICAgaW5zZXJ0X2J1Y2tldCBvZGF0YS4oaSlcbiAgZG9uZTtcbiAgaWYgaW5wbGFjZSB0aGVuXG4gICAgZm9yIGkgPSAwIHRvIG5zaXplIC0gMSBkb1xuICAgICAgbWF0Y2ggbmRhdGFfdGFpbC4oaSkgd2l0aFxuICAgICAgfCBFbXB0eSAtPiAoKVxuICAgICAgfCBDb25zIHRhaWwgLT4gdGFpbC5uZXh0IDwtIEVtcHR5XG4gICAgZG9uZVxuXG5sZXQgcmVzaXplIGluZGV4ZnVuIGggPVxuICBsZXQgb2RhdGEgPSBoLmRhdGEgaW5cbiAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gIGxldCBuc2l6ZSA9IG9zaXplICogMiBpblxuICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4gYmVnaW5cbiAgICBsZXQgbmRhdGEgPSBBcnJheS5tYWtlIG5zaXplIEVtcHR5IGluXG4gICAgbGV0IGlucGxhY2UgPSBub3QgKG9uZ29pbmdfdHJhdmVyc2FsIGgpIGluXG4gICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAgICAoKiBzbyB0aGF0IGluZGV4ZnVuIHNlZXMgdGhlIG5ldyBidWNrZXQgY291bnQgKilcbiAgICBpbnNlcnRfYWxsX2J1Y2tldHMgKGluZGV4ZnVuIGgpIGlucGxhY2Ugb2RhdGEgbmRhdGFcbiAgZW5kXG5cbmxldCBpdGVyIGYgaCA9XG4gIGxldCByZWMgZG9fYnVja2V0ID0gZnVuY3Rpb25cbiAgICB8IEVtcHR5IC0+XG4gICAgICAgICgpXG4gICAgfCBDb25ze2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgZiBrZXkgZGF0YTsgZG9fYnVja2V0IG5leHQgaW5cbiAgbGV0IG9sZF90cmF2ID0gb25nb2luZ190cmF2ZXJzYWwgaCBpblxuICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHRyeVxuICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZG9fYnVja2V0IGQuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gIHdpdGggZXhuIHdoZW4gbm90IG9sZF90cmF2IC0+XG4gICAgZmxpcF9vbmdvaW5nX3RyYXZlcnNhbCBoO1xuICAgIHJhaXNlIGV4blxuXG5sZXQgcmVjIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgcHJlYyA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIGJlZ2luIG1hdGNoIHByZWMgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICB8IENvbnMgYyAtPiBjLm5leHQgPC0gRW1wdHlcbiAgICAgIGVuZFxuICB8IChDb25zICh7a2V5OyBkYXRhOyBuZXh0fSBhcyBjKSkgYXMgc2xvdCAtPlxuICAgICAgYmVnaW4gbWF0Y2ggZiBrZXkgZGF0YSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBoLnNpemUgPC0gaC5zaXplIC0gMTtcbiAgICAgICAgICBmaWx0ZXJfbWFwX2lucGxhY2VfYnVja2V0IGYgaCBpIHByZWMgbmV4dFxuICAgICAgfCBTb21lIGRhdGEgLT5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gc2xvdFxuICAgICAgICAgIHwgQ29ucyBjIC0+IGMubmV4dCA8LSBzbG90XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIGMuZGF0YSA8LSBkYXRhO1xuICAgICAgICAgIGZpbHRlcl9tYXBfaW5wbGFjZV9idWNrZXQgZiBoIGkgc2xvdCBuZXh0XG4gICAgICBlbmRcblxubGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICBsZXQgZCA9IGguZGF0YSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgZmlsdGVyX21hcF9pbnBsYWNlX2J1Y2tldCBmIGggaSBFbXB0eSBoLmRhdGEuKGkpXG4gICAgZG9uZTtcbiAgICBpZiBub3Qgb2xkX3RyYXYgdGhlbiBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGhcbiAgd2l0aCBleG4gd2hlbiBub3Qgb2xkX3RyYXYgLT5cbiAgICBmbGlwX29uZ29pbmdfdHJhdmVyc2FsIGg7XG4gICAgcmFpc2UgZXhuXG5cbmxldCBmb2xkIGYgaCBpbml0ID1cbiAgbGV0IHJlYyBkb19idWNrZXQgYiBhY2N1ID1cbiAgICBtYXRjaCBiIHdpdGhcbiAgICAgIEVtcHR5IC0+XG4gICAgICAgIGFjY3VcbiAgICB8IENvbnN7a2V5OyBkYXRhOyBuZXh0fSAtPlxuICAgICAgICBkb19idWNrZXQgbmV4dCAoZiBrZXkgZGF0YSBhY2N1KSBpblxuICBsZXQgb2xkX3RyYXYgPSBvbmdvaW5nX3RyYXZlcnNhbCBoIGluXG4gIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgdHJ5XG4gICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICBsZXQgYWNjdSA9IHJlZiBpbml0IGluXG4gICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICBkb25lO1xuICAgIGlmIG5vdCBvbGRfdHJhdiB0aGVuIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICAhYWNjdVxuICB3aXRoIGV4biB3aGVuIG5vdCBvbGRfdHJhdiAtPlxuICAgIGZsaXBfb25nb2luZ190cmF2ZXJzYWwgaDtcbiAgICByYWlzZSBleG5cblxudHlwZSBzdGF0aXN0aWNzID0ge1xuICBudW1fYmluZGluZ3M6IGludDtcbiAgbnVtX2J1Y2tldHM6IGludDtcbiAgbWF4X2J1Y2tldF9sZW5ndGg6IGludDtcbiAgYnVja2V0X2hpc3RvZ3JhbTogaW50IGFycmF5XG59XG5cbmxldCByZWMgYnVja2V0X2xlbmd0aCBhY2N1ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgQ29uc3tuZXh0fSAtPiBidWNrZXRfbGVuZ3RoIChhY2N1ICsgMSkgbmV4dFxuXG5sZXQgc3RhdHMgaCA9XG4gIGxldCBtYmwgPVxuICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIG0gYiAtPiBJbnQubWF4IG0gKGJ1Y2tldF9sZW5ndGggMCBiKSkgMCBoLmRhdGEgaW5cbiAgbGV0IGhpc3RvID0gQXJyYXkubWFrZSAobWJsICsgMSkgMCBpblxuICBBcnJheS5pdGVyXG4gICAgKGZ1biBiIC0+XG4gICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICBoaXN0by4obCkgPC0gaGlzdG8uKGwpICsgMSlcbiAgICBoLmRhdGE7XG4gIHsgbnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICBtYXhfYnVja2V0X2xlbmd0aCA9IG1ibDtcbiAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4oKiogezEgSXRlcmF0b3JzfSAqKVxuXG5sZXQgdG9fc2VxIHRibCA9XG4gICgqIGNhcHR1cmUgY3VycmVudCBhcnJheSwgc28gdGhhdCBldmVuIGlmIHRoZSB0YWJsZSBpcyByZXNpemVkIHdlXG4gICAgIGtlZXAgaXRlcmF0aW5nIG9uIHRoZSBzYW1lIGFycmF5ICopXG4gIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICgqIHN0YXRlOiBpbmRleCAqIG5leHQgYnVja2V0IHRvIHRyYXZlcnNlICopXG4gIGxldCByZWMgYXV4IGkgYnVjayAoKSA9IG1hdGNoIGJ1Y2sgd2l0aFxuICAgIHwgRW1wdHkgLT5cbiAgICAgICAgaWYgaSA9IEFycmF5Lmxlbmd0aCB0YmxfZGF0YVxuICAgICAgICB0aGVuIFNlcS5OaWxcbiAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICB8IENvbnMge2tleTsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgU2VxLkNvbnMgKChrZXksIGRhdGEpLCBhdXggaSBuZXh0KVxuICBpblxuICBhdXggMCBFbXB0eVxuXG5sZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxubGV0IHRvX3NlcV92YWx1ZXMgbSA9IFNlcS5tYXAgc25kICh0b19zZXEgbSlcblxuKCogRnVuY3RvcmlhbCBpbnRlcmZhY2UgKilcblxubW9kdWxlIHR5cGUgSGFzaGVkVHlwZSA9XG4gIHNpZ1xuICAgIHR5cGUgdFxuICAgIHZhbCBlcXVhbDogdCAtPiB0IC0+IGJvb2xcbiAgICB2YWwgaGFzaDogdCAtPiBpbnRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZEhhc2hlZFR5cGUgPVxuICBzaWdcbiAgICB0eXBlIHRcbiAgICB2YWwgZXF1YWw6IHQgLT4gdCAtPiBib29sXG4gICAgdmFsIGhhc2g6IGludCAtPiB0IC0+IGludFxuICBlbmRcblxubW9kdWxlIHR5cGUgUyA9XG4gIHNpZ1xuICAgIHR5cGUga2V5XG4gICAgdHlwZSAhJ2EgdFxuICAgIHZhbCBjcmVhdGU6IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHk6ICdhIHQgLT4gJ2EgdFxuICAgIHZhbCBhZGQ6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgcmVtb3ZlOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQ6ICdhIHQgLT4ga2V5IC0+ICdhXG4gICAgdmFsIGZpbmRfb3B0OiAnYSB0IC0+IGtleSAtPiAnYSBvcHRpb25cbiAgICB2YWwgZmluZF9hbGw6ICdhIHQgLT4ga2V5IC0+ICdhIGxpc3RcbiAgICB2YWwgcmVwbGFjZSA6ICdhIHQgLT4ga2V5IC0+ICdhIC0+IHVuaXRcbiAgICB2YWwgbWVtIDogJ2EgdCAtPiBrZXkgLT4gYm9vbFxuICAgIHZhbCBpdGVyOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZDogKGtleSAtPiAnYSAtPiAnYiAtPiAnYikgLT4gJ2EgdCAtPiAnYiAtPiAnYlxuICAgIHZhbCBsZW5ndGg6ICdhIHQgLT4gaW50XG4gICAgdmFsIHN0YXRzOiAnYSB0IC0+IHN0YXRpc3RpY3NcbiAgICB2YWwgdG9fc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50XG4gICAgdmFsIHRvX3NlcV9rZXlzIDogXyB0IC0+IGtleSBTZXEudFxuICAgIHZhbCB0b19zZXFfdmFsdWVzIDogJ2EgdCAtPiAnYSBTZXEudFxuICAgIHZhbCBhZGRfc2VxIDogJ2EgdCAtPiAoa2V5ICogJ2EpIFNlcS50IC0+IHVuaXRcbiAgICB2YWwgcmVwbGFjZV9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCBvZl9zZXEgOiAoa2V5ICogJ2EpIFNlcS50IC0+ICdhIHRcbiAgZW5kXG5cbm1vZHVsZSB0eXBlIFNlZWRlZFMgPVxuICBzaWdcbiAgICB0eXBlIGtleVxuICAgIHR5cGUgISdhIHRcbiAgICB2YWwgY3JlYXRlIDogP3JhbmRvbTpib29sIC0+IGludCAtPiAnYSB0XG4gICAgdmFsIGNsZWFyIDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIHJlc2V0IDogJ2EgdCAtPiB1bml0XG4gICAgdmFsIGNvcHkgOiAnYSB0IC0+ICdhIHRcbiAgICB2YWwgYWRkIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCByZW1vdmUgOiAnYSB0IC0+IGtleSAtPiB1bml0XG4gICAgdmFsIGZpbmQgOiAnYSB0IC0+IGtleSAtPiAnYVxuICAgIHZhbCBmaW5kX29wdDogJ2EgdCAtPiBrZXkgLT4gJ2Egb3B0aW9uXG4gICAgdmFsIGZpbmRfYWxsIDogJ2EgdCAtPiBrZXkgLT4gJ2EgbGlzdFxuICAgIHZhbCByZXBsYWNlIDogJ2EgdCAtPiBrZXkgLT4gJ2EgLT4gdW5pdFxuICAgIHZhbCBtZW0gOiAnYSB0IC0+IGtleSAtPiBib29sXG4gICAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICAgIHZhbCBmaWx0ZXJfbWFwX2lucGxhY2U6IChrZXkgLT4gJ2EgLT4gJ2Egb3B0aW9uKSAtPiAnYSB0IC0+IHVuaXRcbiAgICB2YWwgZm9sZCA6IChrZXkgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcbiAgICB2YWwgbGVuZ3RoIDogJ2EgdCAtPiBpbnRcbiAgICB2YWwgc3RhdHM6ICdhIHQgLT4gc3RhdGlzdGljc1xuICAgIHZhbCB0b19zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnRcbiAgICB2YWwgdG9fc2VxX2tleXMgOiBfIHQgLT4ga2V5IFNlcS50XG4gICAgdmFsIHRvX3NlcV92YWx1ZXMgOiAnYSB0IC0+ICdhIFNlcS50XG4gICAgdmFsIGFkZF9zZXEgOiAnYSB0IC0+IChrZXkgKiAnYSkgU2VxLnQgLT4gdW5pdFxuICAgIHZhbCByZXBsYWNlX3NlcSA6ICdhIHQgLT4gKGtleSAqICdhKSBTZXEudCAtPiB1bml0XG4gICAgdmFsIG9mX3NlcSA6IChrZXkgKiAnYSkgU2VxLnQgLT4gJ2EgdFxuICBlbmRcblxubW9kdWxlIE1ha2VTZWVkZWQoSDogU2VlZGVkSGFzaGVkVHlwZSk6IChTZWVkZWRTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgdHlwZSBrZXkgPSBILnRcbiAgICB0eXBlICdhIGhhc2h0YmwgPSAoa2V5LCAnYSkgdFxuICAgIHR5cGUgJ2EgdCA9ICdhIGhhc2h0YmxcbiAgICBsZXQgY3JlYXRlID0gY3JlYXRlXG4gICAgbGV0IGNsZWFyID0gY2xlYXJcbiAgICBsZXQgcmVzZXQgPSByZXNldFxuICAgIGxldCBjb3B5ID0gY29weVxuXG4gICAgbGV0IGtleV9pbmRleCBoIGtleSA9XG4gICAgICAoSC5oYXNoIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuXG4gICAgbGV0IGFkZCBoIGtleSBkYXRhID1cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGgga2V5IGluXG4gICAgICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgICAgIGguZGF0YS4oaSkgPC0gYnVja2V0O1xuICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbiAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgaCBpIGtleSBwcmVjID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAoKVxuICAgICAgfCAoQ29ucyB7a2V5PWs7IG5leHR9KSBhcyBjIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICB8IEVtcHR5IC0+IGguZGF0YS4oaSkgPC0gbmV4dFxuICAgICAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgICAgICBlbmRcbiAgICAgICAgICBlbHNlIHJlbW92ZV9idWNrZXQgaCBpIGtleSBjIG5leHRcblxuICAgIGxldCByZW1vdmUgaCBrZXkgPVxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBrZXkgaW5cbiAgICAgIHJlbW92ZV9idWNrZXQgaCBpIGtleSBFbXB0eSBoLmRhdGEuKGkpXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrZXkgayB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICB8IENvbnN7a2V5PWsxOyBkYXRhPWQxOyBuZXh0PW5leHQxfSAtPlxuICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsxIHRoZW4gZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgQ29uc3trZXk9azI7IGRhdGE9ZDI7IG5leHQ9bmV4dDJ9IC0+XG4gICAgICAgICAgICAgIGlmIEguZXF1YWwga2V5IGsyIHRoZW4gZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICAgIHwgQ29uc3trZXk9azM7IGRhdGE9ZDM7IG5leHQ9bmV4dDN9IC0+XG4gICAgICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMyB0aGVuIGQzIGVsc2UgZmluZF9yZWMga2V5IG5leHQzXG5cbiAgICBsZXQgcmVjIGZpbmRfcmVjX29wdCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIE5vbmVcbiAgICAgIHwgQ29uc3trZXk9azsgZGF0YTsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrIHRoZW4gU29tZSBkYXRhIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0XG5cbiAgICBsZXQgZmluZF9vcHQgaCBrZXkgPVxuICAgICAgbWF0Y2ggaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMSB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQxIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgICAgICBpZiBILmVxdWFsIGtleSBrMiB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBuZXh0MiB3aXRoXG4gICAgICAgICAgICAgIHwgRW1wdHkgLT4gTm9uZVxuICAgICAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICAgICAgaWYgSC5lcXVhbCBrZXkgazMgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG4gICAgbGV0IGZpbmRfYWxsIGgga2V5ID1cbiAgICAgIGxldCByZWMgZmluZF9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIFtdXG4gICAgICB8IENvbnN7a2V5PWs7IGRhdGE9ZDsgbmV4dH0gLT5cbiAgICAgICAgICBpZiBILmVxdWFsIGsga2V5XG4gICAgICAgICAgdGhlbiBkIDo6IGZpbmRfaW5fYnVja2V0IG5leHRcbiAgICAgICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgICAgIGZpbmRfaW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGgga2V5KVxuXG4gICAgbGV0IHJlYyByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgfCBDb25zICh7a2V5PWs7IG5leHR9IGFzIHNsb3QpIC0+XG4gICAgICAgICAgaWYgSC5lcXVhbCBrIGtleVxuICAgICAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgICAgIGVsc2UgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbmV4dFxuXG4gICAgbGV0IHJlcGxhY2UgaCBrZXkgZGF0YSA9XG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICAgICAgbGV0IGwgPSBoLmRhdGEuKGkpIGluXG4gICAgICBpZiByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBsIHRoZW4gYmVnaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICAgICAgaC5zaXplIDwtIGguc2l6ZSArIDE7XG4gICAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUga2V5X2luZGV4IGhcbiAgICAgIGVuZFxuXG4gICAgbGV0IG1lbSBoIGtleSA9XG4gICAgICBsZXQgcmVjIG1lbV9pbl9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGZhbHNlXG4gICAgICB8IENvbnN7a2V5PWs7IG5leHR9IC0+XG4gICAgICAgICAgSC5lcXVhbCBrIGtleSB8fCBtZW1faW5fYnVja2V0IG5leHQgaW5cbiAgICAgIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gICAgbGV0IGl0ZXIgPSBpdGVyXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSA9IGZpbHRlcl9tYXBfaW5wbGFjZVxuICAgIGxldCBmb2xkID0gZm9sZFxuICAgIGxldCBsZW5ndGggPSBsZW5ndGhcbiAgICBsZXQgc3RhdHMgPSBzdGF0c1xuICAgIGxldCB0b19zZXEgPSB0b19zZXFcbiAgICBsZXQgdG9fc2VxX2tleXMgPSB0b19zZXFfa2V5c1xuICAgIGxldCB0b19zZXFfdmFsdWVzID0gdG9fc2VxX3ZhbHVlc1xuICBlbmRcblxubW9kdWxlIE1ha2UoSDogSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG4oKiBQb2x5bW9ycGhpYyBoYXNoIGZ1bmN0aW9uLWJhc2VkIHRhYmxlcyAqKVxuKCogQ29kZSBpbmNsdWRlZCBiZWxvdyB0aGUgZnVuY3RvcmlhbCBpbnRlcmZhY2UgdG8gZ3VhcmQgYWdhaW5zdCBhY2NpZGVudGFsXG4gICB1c2UgLSBzZWUgIzIyMDIgKilcblxuZXh0ZXJuYWwgc2VlZGVkX2hhc2hfcGFyYW0gOlxuICBpbnQgLT4gaW50IC0+IGludCAtPiAnYSAtPiBpbnQgPSBcImNhbWxfaGFzaFwiIFtAQG5vYWxsb2NdXG5cbmxldCBoYXNoIHggPSBzZWVkZWRfaGFzaF9wYXJhbSAxMCAxMDAgMCB4XG5sZXQgaGFzaF9wYXJhbSBuMSBuMiB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gbjEgbjIgMCB4XG5sZXQgc2VlZGVkX2hhc2ggc2VlZCB4ID0gc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIHNlZWQgeFxuXG5sZXQga2V5X2luZGV4IGgga2V5ID1cbiAgaWYgT2JqLnNpemUgKE9iai5yZXByIGgpID49IDRcbiAgdGhlbiAoc2VlZGVkX2hhc2hfcGFyYW0gMTAgMTAwIGguc2VlZCBrZXkpIGxhbmQgKEFycmF5Lmxlbmd0aCBoLmRhdGEgLSAxKVxuICBlbHNlIGludmFsaWRfYXJnIFwiSGFzaHRibDogdW5zdXBwb3J0ZWQgaGFzaCB0YWJsZSBmb3JtYXRcIlxuXG5sZXQgYWRkIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgYnVja2V0ID0gQ29uc3trZXk7IGRhdGE7IG5leHQ9aC5kYXRhLihpKX0gaW5cbiAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG5cbmxldCByZWMgcmVtb3ZlX2J1Y2tldCBoIGkga2V5IHByZWMgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICAoKVxuICB8IChDb25zIHtrZXk9azsgbmV4dH0pIGFzIGMgLT5cbiAgICAgIGlmIGNvbXBhcmUgayBrZXkgPSAwXG4gICAgICB0aGVuIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBoLmRhdGEuKGkpIDwtIG5leHRcbiAgICAgICAgfCBDb25zIGMgLT4gYy5uZXh0IDwtIG5leHRcbiAgICAgIGVuZFxuICAgICAgZWxzZSByZW1vdmVfYnVja2V0IGggaSBrZXkgYyBuZXh0XG5cbmxldCByZW1vdmUgaCBrZXkgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICByZW1vdmVfYnVja2V0IGggaSBrZXkgRW1wdHkgaC5kYXRhLihpKVxuXG5sZXQgcmVjIGZpbmRfcmVjIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIGRhdGEgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dFxuXG5sZXQgZmluZCBoIGtleSA9XG4gIG1hdGNoIGguZGF0YS4oa2V5X2luZGV4IGgga2V5KSB3aXRoXG4gIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gIHwgQ29uc3trZXk9azE7IGRhdGE9ZDE7IG5leHQ9bmV4dDF9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrMSA9IDAgdGhlbiBkMSBlbHNlXG4gICAgICBtYXRjaCBuZXh0MSB3aXRoXG4gICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgfCBDb25ze2tleT1rMjsgZGF0YT1kMjsgbmV4dD1uZXh0Mn0gLT5cbiAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMiA9IDAgdGhlbiBkMiBlbHNlXG4gICAgICAgICAgbWF0Y2ggbmV4dDIgd2l0aFxuICAgICAgICAgIHwgRW1wdHkgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgfCBDb25ze2tleT1rMzsgZGF0YT1kMzsgbmV4dD1uZXh0M30gLT5cbiAgICAgICAgICAgICAgaWYgY29tcGFyZSBrZXkgazMgPSAwIHRoZW4gZDMgZWxzZSBmaW5kX3JlYyBrZXkgbmV4dDNcblxubGV0IHJlYyBmaW5kX3JlY19vcHQga2V5ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgTm9uZVxuICB8IENvbnN7a2V5PWs7IGRhdGE7IG5leHR9IC0+XG4gICAgICBpZiBjb21wYXJlIGtleSBrID0gMCB0aGVuIFNvbWUgZGF0YSBlbHNlIGZpbmRfcmVjX29wdCBrZXkgbmV4dFxuXG5sZXQgZmluZF9vcHQgaCBrZXkgPVxuICBtYXRjaCBoLmRhdGEuKGtleV9pbmRleCBoIGtleSkgd2l0aFxuICB8IEVtcHR5IC0+IE5vbmVcbiAgfCBDb25ze2tleT1rMTsgZGF0YT1kMTsgbmV4dD1uZXh0MX0gLT5cbiAgICAgIGlmIGNvbXBhcmUga2V5IGsxID0gMCB0aGVuIFNvbWUgZDEgZWxzZVxuICAgICAgbWF0Y2ggbmV4dDEgd2l0aFxuICAgICAgfCBFbXB0eSAtPiBOb25lXG4gICAgICB8IENvbnN7a2V5PWsyOyBkYXRhPWQyOyBuZXh0PW5leHQyfSAtPlxuICAgICAgICAgIGlmIGNvbXBhcmUga2V5IGsyID0gMCB0aGVuIFNvbWUgZDIgZWxzZVxuICAgICAgICAgIG1hdGNoIG5leHQyIHdpdGhcbiAgICAgICAgICB8IEVtcHR5IC0+IE5vbmVcbiAgICAgICAgICB8IENvbnN7a2V5PWszOyBkYXRhPWQzOyBuZXh0PW5leHQzfSAtPlxuICAgICAgICAgICAgICBpZiBjb21wYXJlIGtleSBrMyA9IDAgdGhlbiBTb21lIGQzIGVsc2UgZmluZF9yZWNfb3B0IGtleSBuZXh0M1xuXG5sZXQgZmluZF9hbGwgaCBrZXkgPVxuICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgW11cbiAgfCBDb25ze2tleT1rOyBkYXRhOyBuZXh0fSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gZGF0YSA6OiBmaW5kX2luX2J1Y2tldCBuZXh0XG4gICAgICBlbHNlIGZpbmRfaW5fYnVja2V0IG5leHQgaW5cbiAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCByZWMgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+XG4gICAgICB0cnVlXG4gIHwgQ29ucyAoe2tleT1rOyBuZXh0fSBhcyBzbG90KSAtPlxuICAgICAgaWYgY29tcGFyZSBrIGtleSA9IDBcbiAgICAgIHRoZW4gKHNsb3Qua2V5IDwtIGtleTsgc2xvdC5kYXRhIDwtIGRhdGE7IGZhbHNlKVxuICAgICAgZWxzZSByZXBsYWNlX2J1Y2tldCBrZXkgZGF0YSBuZXh0XG5cbmxldCByZXBsYWNlIGgga2V5IGRhdGEgPVxuICBsZXQgaSA9IGtleV9pbmRleCBoIGtleSBpblxuICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgaWYgcmVwbGFjZV9idWNrZXQga2V5IGRhdGEgbCB0aGVuIGJlZ2luXG4gICAgaC5kYXRhLihpKSA8LSBDb25ze2tleTsgZGF0YTsgbmV4dD1sfTtcbiAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGtleV9pbmRleCBoXG4gIGVuZFxuXG5sZXQgbWVtIGgga2V5ID1cbiAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPlxuICAgICAgZmFsc2VcbiAgfCBDb25ze2tleT1rOyBuZXh0fSAtPlxuICAgICAgY29tcGFyZSBrIGtleSA9IDAgfHwgbWVtX2luX2J1Y2tldCBuZXh0IGluXG4gIG1lbV9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBrZXkpXG5cbmxldCBhZGRfc2VxIHRibCBpID1cbiAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiBhZGQgdGJsIGsgdikgaVxuXG5sZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IHJlcGxhY2UgdGJsIGsgdikgaVxuXG5sZXQgb2Zfc2VxIGkgPVxuICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gIHJlcGxhY2Vfc2VxIHRibCBpO1xuICB0YmxcblxubGV0IHJlYnVpbGQgPyhyYW5kb20gPSAhcmFuZG9taXplZCkgaCA9XG4gIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiAoQXJyYXkubGVuZ3RoIGguZGF0YSkgaW5cbiAgbGV0IHNlZWQgPVxuICAgIGlmIHJhbmRvbSB0aGVuIFJhbmRvbS5TdGF0ZS5iaXRzIChMYXp5LmZvcmNlIHBybmcpXG4gICAgZWxzZSBpZiBPYmouc2l6ZSAoT2JqLnJlcHIgaCkgPj0gNCB0aGVuIGguc2VlZFxuICAgIGVsc2UgMCBpblxuICBsZXQgaCcgPSB7XG4gICAgc2l6ZSA9IGguc2l6ZTtcbiAgICBkYXRhID0gQXJyYXkubWFrZSBzIEVtcHR5O1xuICAgIHNlZWQgPSBzZWVkO1xuICAgIGluaXRpYWxfc2l6ZSA9IGlmIE9iai5zaXplIChPYmoucmVwciBoKSA+PSA0IHRoZW4gaC5pbml0aWFsX3NpemUgZWxzZSBzXG4gIH0gaW5cbiAgaW5zZXJ0X2FsbF9idWNrZXRzIChrZXlfaW5kZXggaCcpIGZhbHNlIGguZGF0YSBoJy5kYXRhO1xuICBoJ1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiogV2VhayBhcnJheSBvcGVyYXRpb25zICopXG5cbnR5cGUgISdhIHRcblxuZXh0ZXJuYWwgY3JlYXRlIDogaW50IC0+ICdhIHQgPSBcImNhbWxfd2Vha19jcmVhdGVcIlxuXG5sZXQgY3JlYXRlIGwgPVxuICBpZiBub3QgKDAgPD0gbCAmJiBsIDw9IE9iai5FcGhlbWVyb24ubWF4X2VwaGVfbGVuZ3RoKSB0aGVuXG4gICAgaW52YWxpZF9hcmcoXCJXZWFrLmNyZWF0ZVwiKTtcbiAgY3JlYXRlIGxcblxuKCoqIG51bWJlciBvZiBhZGRpdGlvbmFsIHZhbHVlcyBpbiBhIHdlYWsgcG9pbnRlciAqKVxubGV0IGFkZGl0aW9uYWxfdmFsdWVzID0gMlxuXG5sZXQgbGVuZ3RoIHggPSBPYmouc2l6ZShPYmoucmVwciB4KSAtIGFkZGl0aW9uYWxfdmFsdWVzXG5cbmxldCByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gbXNnID1cbiAgaWYgbm90ICgwIDw9IG8gJiYgbyA8IGxlbmd0aCBlKSB0aGVuXG4gICAgaW52YWxpZF9hcmcobXNnKVxuXG5leHRlcm5hbCBzZXQnIDogJ2EgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9lcGhlX3NldF9rZXlcIlxuZXh0ZXJuYWwgdW5zZXQgOiAnYSB0IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2VwaGVfdW5zZXRfa2V5XCJcbmxldCBzZXQgZSBvIHggPVxuICByYWlzZV9pZl9pbnZhbGlkX29mZnNldCBlIG8gXCJXZWFrLnNldFwiO1xuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHVuc2V0IGUgb1xuICB8IFNvbWUgeCAtPiBzZXQnIGUgbyB4XG5cbmV4dGVybmFsIGdldCA6ICdhIHQgLT4gaW50IC0+ICdhIG9wdGlvbiA9IFwiY2FtbF93ZWFrX2dldFwiXG5sZXQgZ2V0IGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuZ2V0XCI7XG4gIGdldCBlIG9cblxuZXh0ZXJuYWwgZ2V0X2NvcHkgOiAnYSB0IC0+IGludCAtPiAnYSBvcHRpb24gPSBcImNhbWxfd2Vha19nZXRfY29weVwiXG5sZXQgZ2V0X2NvcHkgZSBvID1cbiAgcmFpc2VfaWZfaW52YWxpZF9vZmZzZXQgZSBvIFwiV2Vhay5nZXRfY29weVwiO1xuICBnZXRfY29weSBlIG9cblxuZXh0ZXJuYWwgY2hlY2sgOiAnYSB0IC0+IGludCAtPiBib29sID0gXCJjYW1sX3dlYWtfY2hlY2tcIlxubGV0IGNoZWNrIGUgbyA9XG4gIHJhaXNlX2lmX2ludmFsaWRfb2Zmc2V0IGUgbyBcIldlYWsuY2hlY2tcIjtcbiAgY2hlY2sgZSBvXG5cbmV4dGVybmFsIGJsaXQgOiAnYSB0IC0+IGludCAtPiAnYSB0IC0+IGludCAtPiBpbnQgLT4gdW5pdCA9IFwiY2FtbF93ZWFrX2JsaXRcIlxuXG4oKiBibGl0OiBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuICopXG5sZXQgYmxpdCBlMSBvMSBlMiBvMiBsID1cbiAgaWYgbCA8IDAgfHwgbzEgPCAwIHx8IG8xID4gbGVuZ3RoIGUxIC0gbFxuICAgICB8fCBvMiA8IDAgfHwgbzIgPiBsZW5ndGggZTIgLSBsXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXZWFrLmJsaXRcIlxuICBlbHNlIGlmIGwgPD4gMCB0aGVuIGJsaXQgZTEgbzEgZTIgbzIgbFxuXG5sZXQgZmlsbCBhciBvZnMgbGVuIHggPVxuICBpZiBvZnMgPCAwIHx8IGxlbiA8IDAgfHwgb2ZzID4gbGVuZ3RoIGFyIC0gbGVuXG4gIHRoZW4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJXZWFrLmZpbGxcIilcbiAgZWxzZSBiZWdpblxuICAgIGZvciBpID0gb2ZzIHRvIChvZnMgKyBsZW4gLSAxKSBkb1xuICAgICAgc2V0IGFyIGkgeFxuICAgIGRvbmVcbiAgZW5kXG5cblxuKCoqIFdlYWsgaGFzaCB0YWJsZXMgKilcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGRhdGFcbiAgdHlwZSB0XG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gdFxuICB2YWwgY2xlYXIgOiB0IC0+IHVuaXRcbiAgdmFsIG1lcmdlIDogdCAtPiBkYXRhIC0+IGRhdGFcbiAgdmFsIGFkZCA6IHQgLT4gZGF0YSAtPiB1bml0XG4gIHZhbCByZW1vdmUgOiB0IC0+IGRhdGEgLT4gdW5pdFxuICB2YWwgZmluZCA6IHQgLT4gZGF0YSAtPiBkYXRhXG4gIHZhbCBmaW5kX29wdCA6IHQgLT4gZGF0YSAtPiBkYXRhIG9wdGlvblxuICB2YWwgZmluZF9hbGwgOiB0IC0+IGRhdGEgLT4gZGF0YSBsaXN0XG4gIHZhbCBtZW0gOiB0IC0+IGRhdGEgLT4gYm9vbFxuICB2YWwgaXRlciA6IChkYXRhIC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChkYXRhIC0+ICdhIC0+ICdhKSAtPiB0IC0+ICdhIC0+ICdhXG4gIHZhbCBjb3VudCA6IHQgLT4gaW50XG4gIHZhbCBzdGF0cyA6IHQgLT4gaW50ICogaW50ICogaW50ICogaW50ICogaW50ICogaW50XG5lbmRcblxubW9kdWxlIE1ha2UgKEggOiBIYXNodGJsLkhhc2hlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGRhdGEgPSBILnQpID0gc3RydWN0XG5cbiAgdHlwZSAnYSB3ZWFrX3QgPSAnYSB0XG4gIGxldCB3ZWFrX2NyZWF0ZSA9IGNyZWF0ZVxuICBsZXQgZW1wdHlidWNrZXQgPSB3ZWFrX2NyZWF0ZSAwXG5cbiAgdHlwZSBkYXRhID0gSC50XG5cbiAgdHlwZSB0ID0ge1xuICAgIG11dGFibGUgdGFibGUgOiBkYXRhIHdlYWtfdCBhcnJheTtcbiAgICBtdXRhYmxlIGhhc2hlcyA6IGludCBhcnJheSBhcnJheTtcbiAgICBtdXRhYmxlIGxpbWl0IDogaW50OyAgICAgICAgICAgICAgICgqIGJ1Y2tldCBzaXplIGxpbWl0ICopXG4gICAgbXV0YWJsZSBvdmVyc2l6ZSA6IGludDsgICAgICAgICAgICAoKiBudW1iZXIgb2Ygb3ZlcnNpemUgYnVja2V0cyAqKVxuICAgIG11dGFibGUgcm92ZXIgOiBpbnQ7ICAgICAgICAgICAgICAgKCogZm9yIGludGVybmFsIGJvb2trZWVwaW5nICopXG4gIH1cblxuICBsZXQgZ2V0X2luZGV4IHQgaCA9IChoIGxhbmQgbWF4X2ludCkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuICBsZXQgbGltaXQgPSA3XG4gIGxldCBvdmVyX2xpbWl0ID0gMlxuXG4gIGxldCBjcmVhdGUgc3ogPVxuICAgIGxldCBzeiA9IGlmIHN6IDwgNyB0aGVuIDcgZWxzZSBzeiBpblxuICAgIGxldCBzeiA9IGlmIHN6ID4gU3lzLm1heF9hcnJheV9sZW5ndGggdGhlbiBTeXMubWF4X2FycmF5X2xlbmd0aCBlbHNlIHN6IGluXG4gICAge1xuICAgICAgdGFibGUgPSBBcnJheS5tYWtlIHN6IGVtcHR5YnVja2V0O1xuICAgICAgaGFzaGVzID0gQXJyYXkubWFrZSBzeiBbfCB8XTtcbiAgICAgIGxpbWl0ID0gbGltaXQ7XG4gICAgICBvdmVyc2l6ZSA9IDA7XG4gICAgICByb3ZlciA9IDA7XG4gICAgfVxuXG4gIGxldCBjbGVhciB0ID1cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQudGFibGUgLSAxIGRvXG4gICAgICB0LnRhYmxlLihpKSA8LSBlbXB0eWJ1Y2tldDtcbiAgICAgIHQuaGFzaGVzLihpKSA8LSBbfCB8XTtcbiAgICBkb25lO1xuICAgIHQubGltaXQgPC0gbGltaXQ7XG4gICAgdC5vdmVyc2l6ZSA8LSAwXG5cblxuICBsZXQgZm9sZCBmIHQgaW5pdCA9XG4gICAgbGV0IHJlYyBmb2xkX2J1Y2tldCBpIGIgYWNjdSA9XG4gICAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGZvbGRfYnVja2V0IChpKzEpIGIgKGYgdiBhY2N1KVxuICAgICAgfCBOb25lIC0+IGZvbGRfYnVja2V0IChpKzEpIGIgYWNjdVxuICAgIGluXG4gICAgQXJyYXkuZm9sZF9yaWdodCAoZm9sZF9idWNrZXQgMCkgdC50YWJsZSBpbml0XG5cblxuICBsZXQgaXRlciBmIHQgPVxuICAgIGxldCByZWMgaXRlcl9idWNrZXQgaSBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBnZXQgYiBpIHdpdGhcbiAgICAgIHwgU29tZSB2IC0+IGYgdjsgaXRlcl9idWNrZXQgKGkrMSkgYlxuICAgICAgfCBOb25lIC0+IGl0ZXJfYnVja2V0IChpKzEpIGJcbiAgICBpblxuICAgIEFycmF5Lml0ZXIgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCBpdGVyX3dlYWsgZiB0ID1cbiAgICBsZXQgcmVjIGl0ZXJfYnVja2V0IGkgaiBiID1cbiAgICAgIGlmIGkgPj0gbGVuZ3RoIGIgdGhlbiAoKSBlbHNlXG4gICAgICBtYXRjaCBjaGVjayBiIGkgd2l0aFxuICAgICAgfCB0cnVlIC0+IGYgYiB0Lmhhc2hlcy4oaikgaTsgaXRlcl9idWNrZXQgKGkrMSkgaiBiXG4gICAgICB8IGZhbHNlIC0+IGl0ZXJfYnVja2V0IChpKzEpIGogYlxuICAgIGluXG4gICAgQXJyYXkuaXRlcmkgKGl0ZXJfYnVja2V0IDApIHQudGFibGVcblxuXG4gIGxldCByZWMgY291bnRfYnVja2V0IGkgYiBhY2N1ID1cbiAgICBpZiBpID49IGxlbmd0aCBiIHRoZW4gYWNjdSBlbHNlXG4gICAgY291bnRfYnVja2V0IChpKzEpIGIgKGFjY3UgKyAoaWYgY2hlY2sgYiBpIHRoZW4gMSBlbHNlIDApKVxuXG5cbiAgbGV0IGNvdW50IHQgPVxuICAgIEFycmF5LmZvbGRfcmlnaHQgKGNvdW50X2J1Y2tldCAwKSB0LnRhYmxlIDBcblxuXG4gIGxldCBuZXh0X3N6IG4gPSBJbnQubWluICgzICogbiAvIDIgKyAzKSBTeXMubWF4X2FycmF5X2xlbmd0aFxuICBsZXQgcHJldl9zeiBuID0gKChuIC0gMykgKiAyICsgMikgLyAzXG5cbiAgbGV0IHRlc3Rfc2hyaW5rX2J1Y2tldCB0ID1cbiAgICBsZXQgYnVja2V0ID0gdC50YWJsZS4odC5yb3ZlcikgaW5cbiAgICBsZXQgaGJ1Y2tldCA9IHQuaGFzaGVzLih0LnJvdmVyKSBpblxuICAgIGxldCBsZW4gPSBsZW5ndGggYnVja2V0IGluXG4gICAgbGV0IHByZXZfbGVuID0gcHJldl9zeiBsZW4gaW5cbiAgICBsZXQgbGl2ZSA9IGNvdW50X2J1Y2tldCAwIGJ1Y2tldCAwIGluXG4gICAgaWYgbGl2ZSA8PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgcmVjIGxvb3AgaSBqID1cbiAgICAgICAgaWYgaiA+PSBwcmV2X2xlbiB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBsb29wIChpICsgMSkgalxuICAgICAgICAgIGVsc2UgaWYgY2hlY2sgYnVja2V0IGogdGhlbiBiZWdpblxuICAgICAgICAgICAgYmxpdCBidWNrZXQgaiBidWNrZXQgaSAxO1xuICAgICAgICAgICAgaGJ1Y2tldC4oaSkgPC0gaGJ1Y2tldC4oaik7XG4gICAgICAgICAgICBsb29wIChpICsgMSkgKGogLSAxKTtcbiAgICAgICAgICBlbmQgZWxzZSBsb29wIGkgKGogLSAxKTtcbiAgICAgICAgZW5kO1xuICAgICAgaW5cbiAgICAgIGxvb3AgMCAobGVuZ3RoIGJ1Y2tldCAtIDEpO1xuICAgICAgaWYgcHJldl9sZW4gPSAwIHRoZW4gYmVnaW5cbiAgICAgICAgdC50YWJsZS4odC5yb3ZlcikgPC0gZW1wdHlidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBbfCB8XTtcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBuZXdidWNrZXQgPSB3ZWFrX2NyZWF0ZSBwcmV2X2xlbiBpblxuICAgICAgICBibGl0IGJ1Y2tldCAwIG5ld2J1Y2tldCAwIHByZXZfbGVuO1xuICAgICAgICB0LnRhYmxlLih0LnJvdmVyKSA8LSBuZXdidWNrZXQ7XG4gICAgICAgIHQuaGFzaGVzLih0LnJvdmVyKSA8LSBBcnJheS5zdWIgaGJ1Y2tldCAwIHByZXZfbGVuXG4gICAgICBlbmQ7XG4gICAgICBpZiBsZW4gPiB0LmxpbWl0ICYmIHByZXZfbGVuIDw9IHQubGltaXQgdGhlbiB0Lm92ZXJzaXplIDwtIHQub3ZlcnNpemUgLSAxO1xuICAgIGVuZDtcbiAgICB0LnJvdmVyIDwtICh0LnJvdmVyICsgMSkgbW9kIChBcnJheS5sZW5ndGggdC50YWJsZSlcblxuXG4gIGxldCByZWMgcmVzaXplIHQgPVxuICAgIGxldCBvbGRsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBuZXdsZW4gPSBuZXh0X3N6IG9sZGxlbiBpblxuICAgIGlmIG5ld2xlbiA+IG9sZGxlbiB0aGVuIGJlZ2luXG4gICAgICBsZXQgbmV3dCA9IGNyZWF0ZSBuZXdsZW4gaW5cbiAgICAgIGxldCBhZGRfd2VhayBvYiBvaCBvaSA9XG4gICAgICAgIGxldCBzZXR0ZXIgbmIgbmkgXyA9IGJsaXQgb2Igb2kgbmIgbmkgMSBpblxuICAgICAgICBsZXQgaCA9IG9oLihvaSkgaW5cbiAgICAgICAgYWRkX2F1eCBuZXd0IHNldHRlciBOb25lIGggKGdldF9pbmRleCBuZXd0IGgpO1xuICAgICAgaW5cbiAgICAgIGl0ZXJfd2VhayBhZGRfd2VhayB0O1xuICAgICAgdC50YWJsZSA8LSBuZXd0LnRhYmxlO1xuICAgICAgdC5oYXNoZXMgPC0gbmV3dC5oYXNoZXM7XG4gICAgICB0LmxpbWl0IDwtIG5ld3QubGltaXQ7XG4gICAgICB0Lm92ZXJzaXplIDwtIG5ld3Qub3ZlcnNpemU7XG4gICAgICB0LnJvdmVyIDwtIHQucm92ZXIgbW9kIEFycmF5Lmxlbmd0aCBuZXd0LnRhYmxlO1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICB0LmxpbWl0IDwtIG1heF9pbnQ7ICAgICAgICAgICAgICgqIG1heGltdW0gc2l6ZSBhbHJlYWR5IHJlYWNoZWQgKilcbiAgICAgIHQub3ZlcnNpemUgPC0gMDtcbiAgICBlbmRcblxuICBhbmQgYWRkX2F1eCB0IHNldHRlciBkIGggaW5kZXggPVxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gYmVnaW5cbiAgICAgICAgbGV0IG5ld3N6ID1cbiAgICAgICAgICBJbnQubWluICgzICogc3ogLyAyICsgMykgKFN5cy5tYXhfYXJyYXlfbGVuZ3RoIC0gYWRkaXRpb25hbF92YWx1ZXMpXG4gICAgICAgIGluXG4gICAgICAgIGlmIG5ld3N6IDw9IHN6IHRoZW4gZmFpbHdpdGggXCJXZWFrLk1ha2U6IGhhc2ggYnVja2V0IGNhbm5vdCBncm93IG1vcmVcIjtcbiAgICAgICAgbGV0IG5ld2J1Y2tldCA9IHdlYWtfY3JlYXRlIG5ld3N6IGluXG4gICAgICAgIGxldCBuZXdoYXNoZXMgPSBBcnJheS5tYWtlIG5ld3N6IDAgaW5cbiAgICAgICAgYmxpdCBidWNrZXQgMCBuZXdidWNrZXQgMCBzejtcbiAgICAgICAgQXJyYXkuYmxpdCBoYXNoZXMgMCBuZXdoYXNoZXMgMCBzejtcbiAgICAgICAgc2V0dGVyIG5ld2J1Y2tldCBzeiBkO1xuICAgICAgICBuZXdoYXNoZXMuKHN6KSA8LSBoO1xuICAgICAgICB0LnRhYmxlLihpbmRleCkgPC0gbmV3YnVja2V0O1xuICAgICAgICB0Lmhhc2hlcy4oaW5kZXgpIDwtIG5ld2hhc2hlcztcbiAgICAgICAgaWYgc3ogPD0gdC5saW1pdCAmJiBuZXdzeiA+IHQubGltaXQgdGhlbiBiZWdpblxuICAgICAgICAgIHQub3ZlcnNpemUgPC0gdC5vdmVyc2l6ZSArIDE7XG4gICAgICAgICAgZm9yIF9pID0gMCB0byBvdmVyX2xpbWl0IGRvIHRlc3Rfc2hyaW5rX2J1Y2tldCB0IGRvbmU7XG4gICAgICAgIGVuZDtcbiAgICAgICAgaWYgdC5vdmVyc2l6ZSA+IEFycmF5Lmxlbmd0aCB0LnRhYmxlIC8gb3Zlcl9saW1pdCB0aGVuIHJlc2l6ZSB0O1xuICAgICAgZW5kIGVsc2UgaWYgY2hlY2sgYnVja2V0IGkgdGhlbiBiZWdpblxuICAgICAgICBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIHNldHRlciBidWNrZXQgaSBkO1xuICAgICAgICBoYXNoZXMuKGkpIDwtIGg7XG4gICAgICBlbmQ7XG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBhZGQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgYWRkX2F1eCB0IHNldCAoU29tZSBkKSBoIChnZXRfaW5kZXggdCBoKVxuXG5cbiAgbGV0IGZpbmRfb3IgdCBkIGlmbm90Zm91bmQgPVxuICAgIGxldCBoID0gSC5oYXNoIGQgaW5cbiAgICBsZXQgaW5kZXggPSBnZXRfaW5kZXggdCBoIGluXG4gICAgbGV0IGJ1Y2tldCA9IHQudGFibGUuKGluZGV4KSBpblxuICAgIGxldCBoYXNoZXMgPSB0Lmhhc2hlcy4oaW5kZXgpIGluXG4gICAgbGV0IHN6ID0gbGVuZ3RoIGJ1Y2tldCBpblxuICAgIGxldCByZWMgbG9vcCBpID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBpZm5vdGZvdW5kIGggaW5kZXhcbiAgICAgIGVsc2UgaWYgaCA9IGhhc2hlcy4oaSkgdGhlbiBiZWdpblxuICAgICAgICBtYXRjaCBnZXRfY29weSBidWNrZXQgaSB3aXRoXG4gICAgICAgIHwgU29tZSB2IHdoZW4gSC5lcXVhbCB2IGRcbiAgICAgICAgICAgLT4gYmVnaW4gbWF0Y2ggZ2V0IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIHYgLT4gdlxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICB8IF8gLT4gbG9vcCAoaSArIDEpXG4gICAgICBlbmQgZWxzZSBsb29wIChpICsgMSlcbiAgICBpblxuICAgIGxvb3AgMFxuXG5cbiAgbGV0IG1lcmdlIHQgZCA9XG4gICAgZmluZF9vciB0IGQgKGZ1biBoIGluZGV4IC0+IGFkZF9hdXggdCBzZXQgKFNvbWUgZCkgaCBpbmRleDsgZClcblxuXG4gIGxldCBmaW5kIHQgZCA9IGZpbmRfb3IgdCBkIChmdW4gX2ggX2luZGV4IC0+IHJhaXNlIE5vdF9mb3VuZClcblxuICBsZXQgZmluZF9vcHQgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gTm9uZVxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZFxuICAgICAgICAgICAtPiBiZWdpbiBtYXRjaCBnZXQgYnVja2V0IGkgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgXyBhcyB2IC0+IHZcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgICAgICAgICBlbmRcbiAgICAgICAgfCBfIC0+IGxvb3AgKGkgKyAxKVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpXG4gICAgaW5cbiAgICBsb29wIDBcblxuXG4gIGxldCBmaW5kX3NoYWRvdyB0IGQgaWZmb3VuZCBpZm5vdGZvdW5kID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSA9XG4gICAgICBpZiBpID49IHN6IHRoZW4gaWZub3Rmb3VuZFxuICAgICAgZWxzZSBpZiBoID0gaGFzaGVzLihpKSB0aGVuIGJlZ2luXG4gICAgICAgIG1hdGNoIGdldF9jb3B5IGJ1Y2tldCBpIHdpdGhcbiAgICAgICAgfCBTb21lIHYgd2hlbiBILmVxdWFsIHYgZCAtPiBpZmZvdW5kIGJ1Y2tldCBpXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSlcbiAgICAgIGVuZCBlbHNlIGxvb3AgKGkgKyAxKVxuICAgIGluXG4gICAgbG9vcCAwXG5cblxuICBsZXQgcmVtb3ZlIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIHcgaSAtPiBzZXQgdyBpIE5vbmUpICgpXG5cblxuICBsZXQgbWVtIHQgZCA9IGZpbmRfc2hhZG93IHQgZCAoZnVuIF93IF9pIC0+IHRydWUpIGZhbHNlXG5cblxuICBsZXQgZmluZF9hbGwgdCBkID1cbiAgICBsZXQgaCA9IEguaGFzaCBkIGluXG4gICAgbGV0IGluZGV4ID0gZ2V0X2luZGV4IHQgaCBpblxuICAgIGxldCBidWNrZXQgPSB0LnRhYmxlLihpbmRleCkgaW5cbiAgICBsZXQgaGFzaGVzID0gdC5oYXNoZXMuKGluZGV4KSBpblxuICAgIGxldCBzeiA9IGxlbmd0aCBidWNrZXQgaW5cbiAgICBsZXQgcmVjIGxvb3AgaSBhY2N1ID1cbiAgICAgIGlmIGkgPj0gc3ogdGhlbiBhY2N1XG4gICAgICBlbHNlIGlmIGggPSBoYXNoZXMuKGkpIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggZ2V0X2NvcHkgYnVja2V0IGkgd2l0aFxuICAgICAgICB8IFNvbWUgdiB3aGVuIEguZXF1YWwgdiBkXG4gICAgICAgICAgIC0+IGJlZ2luIG1hdGNoIGdldCBidWNrZXQgaSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB2IC0+IGxvb3AgKGkgKyAxKSAodiA6OiBhY2N1KVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbG9vcCAoaSArIDEpIGFjY3VcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiBsb29wIChpICsgMSkgYWNjdVxuICAgICAgZW5kIGVsc2UgbG9vcCAoaSArIDEpIGFjY3VcbiAgICBpblxuICAgIGxvb3AgMCBbXVxuXG5cbiAgbGV0IHN0YXRzIHQgPVxuICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggdC50YWJsZSBpblxuICAgIGxldCBsZW5zID0gQXJyYXkubWFwIGxlbmd0aCB0LnRhYmxlIGluXG4gICAgQXJyYXkuc29ydCBjb21wYXJlIGxlbnM7XG4gICAgbGV0IHRvdGxlbiA9IEFycmF5LmZvbGRfbGVmdCAoICsgKSAwIGxlbnMgaW5cbiAgICAobGVuLCBjb3VudCB0LCB0b3RsZW4sIGxlbnMuKDApLCBsZW5zLihsZW4vMiksIGxlbnMuKGxlbi0xKSlcblxuXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFBpZXJyZSBXZWlzLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQSBwcmV0dHktcHJpbnRpbmcgZmFjaWxpdHkgYW5kIGRlZmluaXRpb24gb2YgZm9ybWF0dGVycyBmb3IgJ3BhcmFsbGVsJ1xuICAgKGkuZS4gdW5yZWxhdGVkIG9yIGluZGVwZW5kZW50KSBwcmV0dHktcHJpbnRpbmcgb24gbXVsdGlwbGUgb3V0IGNoYW5uZWxzLiAqKVxuXG4oKlxuICAgVGhlIHByZXR0eS1wcmludGluZyBlbmdpbmUgaW50ZXJuYWwgZGF0YSBzdHJ1Y3R1cmVzLlxuKilcblxubGV0IGlkIHggPSB4XG5cbigqIEEgZGV2b3RlZCB0eXBlIGZvciBzaXplcyB0byBhdm9pZCBjb25mdXNpb25cbiAgIGJldHdlZW4gc2l6ZXMgYW5kIG1lcmUgaW50ZWdlcnMuICopXG5tb2R1bGUgU2l6ZSA6IHNpZ1xuICB0eXBlIHRcblxuICB2YWwgdG9faW50IDogdCAtPiBpbnRcbiAgdmFsIG9mX2ludCA6IGludCAtPiB0XG4gIHZhbCB6ZXJvIDogdFxuICB2YWwgdW5rbm93biA6IHRcbiAgdmFsIGlzX2tub3duIDogdCAtPiBib29sXG5lbmQgID0gc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCB0b19pbnQgPSBpZFxuICBsZXQgb2ZfaW50ID0gaWRcbiAgbGV0IHplcm8gPSAwXG4gIGxldCB1bmtub3duID0gLTFcbiAgbGV0IGlzX2tub3duIG4gPSBuID49IDBcbmVuZFxuXG5cblxuKCogVGhlIHByZXR0eS1wcmludGluZyBib3hlcyBkZWZpbml0aW9uOlxuICAgYSBwcmV0dHktcHJpbnRpbmcgYm94IGlzIGVpdGhlclxuICAgLSBoYm94OiBob3Jpem9udGFsIGJveCAobm8gbGluZSBzcGxpdHRpbmcpXG4gICAtIHZib3g6IHZlcnRpY2FsIGJveCAoZXZlcnkgYnJlYWsgaGludCBzcGxpdHMgdGhlIGxpbmUpXG4gICAtIGh2Ym94OiBob3Jpem9udGFsL3ZlcnRpY2FsIGJveFxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgYm94IGlmIGl0IGZpdHMgb25cbiAgICAgIHRoZSBjdXJyZW50IGxpbmUsIG90aGVyd2lzZSB0aGUgYm94IGJlaGF2ZXMgYXMgYSB2ZXJ0aWNhbCBib3gpXG4gICAtIGhvdmJveDogaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBjb21wYWN0aW5nIGJveFxuICAgICAodGhlIGJveCBpcyBjb21wYWN0aW5nIG1hdGVyaWFsLCBwcmludGluZyBhcyBtdWNoIG1hdGVyaWFsIGFzIHBvc3NpYmxlXG4gICAgICBvbiBldmVyeSBsaW5lcylcbiAgIC0gYm94OiBob3Jpem9udGFsIG9yIHZlcnRpY2FsIGNvbXBhY3RpbmcgYm94IHdpdGggZW5oYW5jZWQgYm94IHN0cnVjdHVyZVxuICAgICAodGhlIGJveCBiZWhhdmVzIGFzIGFuIGhvcml6b250YWwgb3IgdmVydGljYWwgYm94IGJ1dCBicmVhayBoaW50cyBzcGxpdFxuICAgICAgdGhlIGxpbmUgaWYgc3BsaXR0aW5nIHdvdWxkIG1vdmUgdG8gdGhlIGxlZnQpXG4qKVxudHlwZSBib3hfdHlwZSA9IENhbWxpbnRlcm5hbEZvcm1hdEJhc2ljcy5ibG9ja190eXBlID1cbiAgfCBQcF9oYm94IHwgUHBfdmJveCB8IFBwX2h2Ym94IHwgUHBfaG92Ym94IHwgUHBfYm94IHwgUHBfZml0c1xuXG5cbigqIFRoZSBwcmV0dHktcHJpbnRpbmcgdG9rZW5zIGRlZmluaXRpb246XG4gICBhcmUgZWl0aGVyIHRleHQgdG8gcHJpbnQgb3IgcHJldHR5IHByaW50aW5nXG4gICBlbGVtZW50cyB0aGF0IGRyaXZlIGluZGVudGF0aW9uIGFuZCBsaW5lIHNwbGl0dGluZy4gKilcbnR5cGUgcHBfdG9rZW4gPVxuICB8IFBwX3RleHQgb2Ygc3RyaW5nICAgICAgICAgICgqIG5vcm1hbCB0ZXh0ICopXG4gIHwgUHBfYnJlYWsgb2YgeyAgICAgICAgICAgICAgKCogY29tcGxldGUgYnJlYWsgKilcbiAgICAgIGZpdHM6IHN0cmluZyAqIGludCAqIHN0cmluZzsgICAoKiBsaW5lIGlzIG5vdCBzcGxpdCAqKVxuICAgICAgYnJlYWtzOiBzdHJpbmcgKiBpbnQgKiBzdHJpbmc7ICgqIGxpbmUgaXMgc3BsaXQgKilcbiAgICB9XG4gIHwgUHBfdGJyZWFrIG9mIGludCAqIGludCAgICAgKCogZ28gdG8gbmV4dCB0YWJ1bGF0aW9uICopXG4gIHwgUHBfc3RhYiAgICAgICAgICAgICAgICAgICAgKCogc2V0IGEgdGFidWxhdGlvbiAqKVxuICB8IFBwX2JlZ2luIG9mIGludCAqIGJveF90eXBlICgqIGJlZ2lubmluZyBvZiBhIGJveCAqKVxuICB8IFBwX2VuZCAgICAgICAgICAgICAgICAgICAgICgqIGVuZCBvZiBhIGJveCAqKVxuICB8IFBwX3RiZWdpbiBvZiB0Ym94ICAgICAgICAgICgqIGJlZ2lubmluZyBvZiBhIHRhYnVsYXRpb24gYm94ICopXG4gIHwgUHBfdGVuZCAgICAgICAgICAgICAgICAgICAgKCogZW5kIG9mIGEgdGFidWxhdGlvbiBib3ggKilcbiAgfCBQcF9uZXdsaW5lICAgICAgICAgICAgICAgICAoKiB0byBmb3JjZSBhIG5ld2xpbmUgaW5zaWRlIGEgYm94ICopXG4gIHwgUHBfaWZfbmV3bGluZSAgICAgICAgICAgICAgKCogdG8gZG8gc29tZXRoaW5nIG9ubHkgaWYgdGhpcyB2ZXJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSBoYXMgYmVlbiBicm9rZW4gKilcbiAgfCBQcF9vcGVuX3RhZyBvZiBzdGFnICAgICAgICAgKCogb3BlbmluZyBhIHRhZyBuYW1lICopXG4gIHwgUHBfY2xvc2VfdGFnICAgICAgICAgICAgICAgKCogY2xvc2luZyB0aGUgbW9zdCByZWNlbnRseSBvcGVuIHRhZyAqKVxuXG5hbmQgc3RhZyA9IC4uXG5cbmFuZCB0Ym94ID0gUHBfdGJveCBvZiBpbnQgbGlzdCByZWYgICgqIFRhYnVsYXRpb24gYm94ICopXG5cbnR5cGUgdGFnID0gc3RyaW5nXG50eXBlIHN0YWcgKz0gU3RyaW5nX3RhZyBvZiB0YWdcblxuXG4oKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWU6XG4gICBwcmV0dHktcHJpbnRpbmcgbWF0ZXJpYWwgaXMgbm90IHdyaXR0ZW4gaW4gdGhlIG91dHB1dCBhcyBzb29uIGFzIGVtaXR0ZWQ7XG4gICBpbnN0ZWFkLCB0aGUgbWF0ZXJpYWwgaXMgc2ltcGx5IHJlY29yZGVkIGluIHRoZSBwcmV0dHktcHJpbnRlciBxdWV1ZSxcbiAgIHVudGlsIHRoZSBlbmNsb3NpbmcgYm94IGhhcyBhIGtub3duIGNvbXB1dGVkIHNpemUgYW5kIHByb3BlciBzcGxpdHRpbmdcbiAgIGRlY2lzaW9ucyBjYW4gYmUgbWFkZS5cblxuICAgVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGNvbnRhaW5zIGZvcm1hdHRpbmcgZWxlbWVudHMgdG8gYmUgcHJpbnRlZC5cbiAgIEVhY2ggZm9ybWF0dGluZyBlbGVtZW50IGlzIGEgdHVwbGUgKHNpemUsIHRva2VuLCBsZW5ndGgpLCB3aGVyZVxuICAgLSBsZW5ndGggaXMgdGhlIGRlY2xhcmVkIGxlbmd0aCBvZiB0aGUgdG9rZW4sXG4gICAtIHNpemUgaXMgZWZmZWN0aXZlIHNpemUgb2YgdGhlIHRva2VuIHdoZW4gaXQgaXMgcHJpbnRlZFxuICAgICAoc2l6ZSBpcyBzZXQgd2hlbiB0aGUgc2l6ZSBvZiB0aGUgYm94IGlzIGtub3duLCBzbyB0aGF0IHNpemUgb2YgYnJlYWtcbiAgICAgIGhpbnRzIGFyZSBkZWZpbml0aXZlKS4gKilcbnR5cGUgcHBfcXVldWVfZWxlbSA9IHtcbiAgbXV0YWJsZSBzaXplIDogU2l6ZS50O1xuICB0b2tlbiA6IHBwX3Rva2VuO1xuICBsZW5ndGggOiBpbnQ7XG59XG5cblxuKCogVGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGRlZmluaXRpb24uICopXG50eXBlIHBwX3F1ZXVlID0gcHBfcXVldWVfZWxlbSBRdWV1ZS50XG5cbigqIFRoZSBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrOiBzY2FubmluZyBlbGVtZW50IGRlZmluaXRpb24uICopXG50eXBlIHBwX3NjYW5fZWxlbSA9IHtcbiAgbGVmdF90b3RhbCA6IGludDsgKCogVmFsdWUgb2YgcHBfbGVmdF90b3RhbCB3aGVuIHRoZSBlbGVtZW50IHdhcyBlbnF1ZXVlZC4gKilcbiAgcXVldWVfZWxlbSA6IHBwX3F1ZXVlX2VsZW1cbn1cblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6XG4gICB0aGUgZm9ybWF0dGluZyBzdGFjayBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgYWxsIHRoZSBjdXJyZW50bHkgYWN0aXZlXG4gICBib3hlczsgdGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2sgaXMgdXNlZCB0byBzcGxpdCB0aGUgbGluZXNcbiAgIHdoaWxlIHByaW50aW5nIHRva2Vucy4gKilcblxuKCogVGhlIHByZXR0eS1wcmludGVyIGZvcm1hdHRpbmcgc3RhY2s6IGZvcm1hdHRpbmcgc3RhY2sgZWxlbWVudCBkZWZpbml0aW9uLlxuICAgRWFjaCBzdGFjayBlbGVtZW50IGRlc2NyaWJlcyBhIHByZXR0eS1wcmludGluZyBib3guICopXG50eXBlIHBwX2Zvcm1hdF9lbGVtID0geyBib3hfdHlwZSA6IGJveF90eXBlOyB3aWR0aCA6IGludCB9XG5cbigqIFRoZSBmb3JtYXR0ZXIgZGVmaW5pdGlvbi5cbiAgIEVhY2ggZm9ybWF0dGVyIHZhbHVlIGlzIGEgcHJldHR5LXByaW50ZXIgaW5zdGFuY2Ugd2l0aCBhbGwgaXRzXG4gICBtYWNoaW5lcnkuICopXG50eXBlIGZvcm1hdHRlciA9IHtcbiAgKCogVGhlIHByZXR0eS1wcmludGVyIHNjYW5uaW5nIHN0YWNrLiAqKVxuICBwcF9zY2FuX3N0YWNrIDogcHBfc2Nhbl9lbGVtIFN0YWNrLnQ7XG4gICgqIFRoZSBwcmV0dHktcHJpbnRlciBmb3JtYXR0aW5nIHN0YWNrLiAqKVxuICBwcF9mb3JtYXRfc3RhY2sgOiBwcF9mb3JtYXRfZWxlbSBTdGFjay50O1xuICBwcF90Ym94X3N0YWNrIDogdGJveCBTdGFjay50O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgc2VtYW50aWNzIHRhZyBzdGFjay4gKilcbiAgcHBfdGFnX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICBwcF9tYXJrX3N0YWNrIDogc3RhZyBTdGFjay50O1xuICAoKiBWYWx1ZSBvZiByaWdodCBtYXJnaW4uICopXG4gIG11dGFibGUgcHBfbWFyZ2luIDogaW50O1xuICAoKiBNaW5pbWFsIHNwYWNlIGxlZnQgYmVmb3JlIG1hcmdpbiwgd2hlbiBvcGVuaW5nIGEgYm94LiAqKVxuICBtdXRhYmxlIHBwX21pbl9zcGFjZV9sZWZ0IDogaW50O1xuICAoKiBNYXhpbXVtIHZhbHVlIG9mIGluZGVudGF0aW9uOlxuICAgICBubyBib3ggY2FuIGJlIG9wZW5lZCBmdXJ0aGVyLiAqKVxuICBtdXRhYmxlIHBwX21heF9pbmRlbnQgOiBpbnQ7XG4gICgqIFNwYWNlIHJlbWFpbmluZyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxuICBtdXRhYmxlIHBwX3NwYWNlX2xlZnQgOiBpbnQ7XG4gICgqIEN1cnJlbnQgdmFsdWUgb2YgaW5kZW50YXRpb24uICopXG4gIG11dGFibGUgcHBfY3VycmVudF9pbmRlbnQgOiBpbnQ7XG4gICgqIFRydWUgd2hlbiB0aGUgbGluZSBoYXMgYmVlbiBicm9rZW4gYnkgdGhlIHByZXR0eS1wcmludGVyLiAqKVxuICBtdXRhYmxlIHBwX2lzX25ld19saW5lIDogYm9vbDtcbiAgKCogVG90YWwgd2lkdGggb2YgdG9rZW5zIGFscmVhZHkgcHJpbnRlZC4gKilcbiAgbXV0YWJsZSBwcF9sZWZ0X3RvdGFsIDogaW50O1xuICAoKiBUb3RhbCB3aWR0aCBvZiB0b2tlbnMgZXZlciBwdXQgaW4gcXVldWUuICopXG4gIG11dGFibGUgcHBfcmlnaHRfdG90YWwgOiBpbnQ7XG4gICgqIEN1cnJlbnQgbnVtYmVyIG9mIG9wZW4gYm94ZXMuICopXG4gIG11dGFibGUgcHBfY3Vycl9kZXB0aCA6IGludDtcbiAgKCogTWF4aW11bSBudW1iZXIgb2YgYm94ZXMgd2hpY2ggY2FuIGJlIHNpbXVsdGFuZW91c2x5IG9wZW4uICopXG4gIG11dGFibGUgcHBfbWF4X2JveGVzIDogaW50O1xuICAoKiBFbGxpcHNpcyBzdHJpbmcuICopXG4gIG11dGFibGUgcHBfZWxsaXBzaXMgOiBzdHJpbmc7XG4gICgqIE91dHB1dCBmdW5jdGlvbi4gKilcbiAgbXV0YWJsZSBwcF9vdXRfc3RyaW5nIDogc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdDtcbiAgKCogRmx1c2hpbmcgZnVuY3Rpb24uICopXG4gIG11dGFibGUgcHBfb3V0X2ZsdXNoIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgbmV3IGxpbmVzLiAqKVxuICBtdXRhYmxlIHBwX291dF9uZXdsaW5lIDogdW5pdCAtPiB1bml0O1xuICAoKiBPdXRwdXQgb2YgYnJlYWsgaGludHMgc3BhY2VzLiAqKVxuICBtdXRhYmxlIHBwX291dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgKCogT3V0cHV0IG9mIGluZGVudGF0aW9uIG9mIG5ldyBsaW5lcy4gKilcbiAgbXV0YWJsZSBwcF9vdXRfaW5kZW50IDogaW50IC0+IHVuaXQ7XG4gICgqIEFyZSB0YWdzIHByaW50ZWQgPyAqKVxuICBtdXRhYmxlIHBwX3ByaW50X3RhZ3MgOiBib29sO1xuICAoKiBBcmUgdGFncyBtYXJrZWQgPyAqKVxuICBtdXRhYmxlIHBwX21hcmtfdGFncyA6IGJvb2w7XG4gICgqIEZpbmQgb3BlbmluZyBhbmQgY2xvc2luZyBtYXJrZXJzIG9mIHRhZ3MuICopXG4gIG11dGFibGUgcHBfbWFya19vcGVuX3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBtdXRhYmxlIHBwX21hcmtfY2xvc2VfdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG11dGFibGUgcHBfcHJpbnRfb3Blbl90YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIG11dGFibGUgcHBfcHJpbnRfY2xvc2VfdGFnIDogc3RhZyAtPiB1bml0O1xuICAoKiBUaGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG4gIHBwX3F1ZXVlIDogcHBfcXVldWU7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBzcGVjaWZpYyB0YWcgaGFuZGxpbmcgZnVuY3Rpb25zLiAqKVxudHlwZSBmb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPSB7XG4gIG1hcmtfb3Blbl9zdGFnIDogc3RhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2Vfc3RhZyA6IHN0YWcgLT4gc3RyaW5nO1xuICBwcmludF9vcGVuX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG4gIHByaW50X2Nsb3NlX3N0YWcgOiBzdGFnIC0+IHVuaXQ7XG59XG5cblxuKCogVGhlIGZvcm1hdHRlciBmdW5jdGlvbnMgdG8gb3V0cHV0IG1hdGVyaWFsLiAqKVxudHlwZSBmb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyA9IHtcbiAgb3V0X3N0cmluZyA6IHN0cmluZyAtPiBpbnQgLT4gaW50IC0+IHVuaXQ7XG4gIG91dF9mbHVzaCA6IHVuaXQgLT4gdW5pdDtcbiAgb3V0X25ld2xpbmUgOiB1bml0IC0+IHVuaXQ7XG4gIG91dF9zcGFjZXMgOiBpbnQgLT4gdW5pdDtcbiAgb3V0X2luZGVudCA6IGludCAtPiB1bml0O1xufVxuXG5cbigqXG5cbiAgQXV4aWxpYXJpZXMgYW5kIGJhc2ljIGZ1bmN0aW9ucy5cblxuKilcblxuKCogRW50ZXIgYSB0b2tlbiBpbiB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUuICopXG5sZXQgcHBfZW5xdWV1ZSBzdGF0ZSB0b2tlbiA9XG4gIHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsICsgdG9rZW4ubGVuZ3RoO1xuICBRdWV1ZS5hZGQgdG9rZW4gc3RhdGUucHBfcXVldWVcblxuXG5sZXQgcHBfY2xlYXJfcXVldWUgc3RhdGUgPVxuICBzdGF0ZS5wcF9sZWZ0X3RvdGFsIDwtIDE7IHN0YXRlLnBwX3JpZ2h0X3RvdGFsIDwtIDE7XG4gIFF1ZXVlLmNsZWFyIHN0YXRlLnBwX3F1ZXVlXG5cblxuKCogUHBfaW5maW5pdHk6IGxhcmdlIHZhbHVlIGZvciBkZWZhdWx0IHRva2VucyBzaXplLlxuXG4gICBQcF9pbmZpbml0eSBpcyBkb2N1bWVudGVkIGFzIGJlaW5nIGdyZWF0ZXIgdGhhbiAxZTEwOyB0byBhdm9pZFxuICAgY29uZnVzaW9uIGFib3V0IHRoZSB3b3JkICdncmVhdGVyJywgd2UgY2hvb3NlIHBwX2luZmluaXR5IGdyZWF0ZXJcbiAgIHRoYW4gMWUxMCArIDE7IGZvciBjb3JyZWN0IGhhbmRsaW5nIG9mIHRlc3RzIGluIHRoZSBhbGdvcml0aG0sXG4gICBwcF9pbmZpbml0eSBtdXN0IGJlIGV2ZW4gb25lIG1vcmUgdGhhbiAxZTEwICsgMTsgbGV0J3Mgc3RhbmQgb24gdGhlXG4gICBzYWZlIHNpZGUgYnkgY2hvb3NpbmcgMS5lMTArMTAuXG5cbiAgIFBwX2luZmluaXR5IGNvdWxkIHByb2JhYmx5IGJlIDEwNzM3NDE4MjMgdGhhdCBpcyAyXjMwIC0gMSwgdGhhdCBpc1xuICAgdGhlIG1pbmltYWwgdXBwZXIgYm91bmQgZm9yIGludGVnZXJzOyBub3cgdGhhdCBtYXhfaW50IGlzIGRlZmluZWQsXG4gICB0aGlzIGxpbWl0IGNvdWxkIGFsc28gYmUgZGVmaW5lZCBhcyBtYXhfaW50IC0gMS5cblxuICAgSG93ZXZlciwgYmVmb3JlIHNldHRpbmcgcHBfaW5maW5pdHkgdG8gc29tZXRoaW5nIGFyb3VuZCBtYXhfaW50LCB3ZVxuICAgbXVzdCBjYXJlZnVsbHkgZG91YmxlLWNoZWNrIGFsbCB0aGUgaW50ZWdlciBhcml0aG1ldGljIG9wZXJhdGlvbnNcbiAgIHRoYXQgaW52b2x2ZSBwcF9pbmZpbml0eSwgc2luY2UgYW55IG92ZXJmbG93IHdvdWxkIHdyZWNrIGhhdm9jIHRoZVxuICAgcHJldHR5LXByaW50aW5nIGFsZ29yaXRobSdzIGludmFyaWFudHMuIEdpdmVuIHRoYXQgdGhpcyBhcml0aG1ldGljXG4gICBjb3JyZWN0bmVzcyBjaGVjayBpcyBkaWZmaWN1bHQgYW5kIGVycm9yIHByb25lIGFuZCBnaXZlbiB0aGF0IDFlMTBcbiAgICsgMSBpcyBpbiBwcmFjdGljZSBsYXJnZSBlbm91Z2gsIHRoZXJlIGlzIG5vIG5lZWQgdG8gYXR0ZW1wdCB0byBzZXRcbiAgIHBwX2luZmluaXR5IHRvIHRoZSB0aGVvcmV0aWNhbGx5IG1heGltdW0gbGltaXQuIEl0IGlzIG5vdCB3b3J0aCB0aGVcbiAgIGJ1cmRlbiAhICopXG5sZXQgcHBfaW5maW5pdHkgPSAxMDAwMDAwMDEwXG5cbigqIE91dHB1dCBmdW5jdGlvbnMgZm9yIHRoZSBmb3JtYXR0ZXIuICopXG5sZXQgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBzID0gc3RhdGUucHBfb3V0X3N0cmluZyBzIDAgKFN0cmluZy5sZW5ndGggcylcbmFuZCBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZSA9IHN0YXRlLnBwX291dF9uZXdsaW5lICgpXG5hbmQgcHBfb3V0cHV0X3NwYWNlcyBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X3NwYWNlcyBuXG5hbmQgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBuID0gc3RhdGUucHBfb3V0X2luZGVudCBuXG5cbigqIEZvcm1hdCBhIHRleHR1YWwgdG9rZW4gKilcbmxldCBmb3JtYXRfcHBfdGV4dCBzdGF0ZSBzaXplIHRleHQgPVxuICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgLSBzaXplO1xuICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIHRleHQ7XG4gIHN0YXRlLnBwX2lzX25ld19saW5lIDwtIGZhbHNlXG5cbigqIEZvcm1hdCBhIHN0cmluZyBieSBpdHMgbGVuZ3RoLCBpZiBub3QgZW1wdHkgKilcbmxldCBmb3JtYXRfc3RyaW5nIHN0YXRlIHMgPVxuICBpZiBzIDw+IFwiXCIgdGhlbiBmb3JtYXRfcHBfdGV4dCBzdGF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBzXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrLCBpbmRlbnRpbmcgYSBuZXcgbGluZS4gKilcbmxldCBicmVha19uZXdfbGluZSBzdGF0ZSAoYmVmb3JlLCBvZmZzZXQsIGFmdGVyKSB3aWR0aCA9XG4gIGZvcm1hdF9zdHJpbmcgc3RhdGUgYmVmb3JlO1xuICBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZTtcbiAgc3RhdGUucHBfaXNfbmV3X2xpbmUgPC0gdHJ1ZTtcbiAgbGV0IGluZGVudCA9IHN0YXRlLnBwX21hcmdpbiAtIHdpZHRoICsgb2Zmc2V0IGluXG4gICgqIERvbid0IGluZGVudCBtb3JlIHRoYW4gcHBfbWF4X2luZGVudC4gKilcbiAgbGV0IHJlYWxfaW5kZW50ID0gSW50Lm1pbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGluZGVudCBpblxuICBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCA8LSByZWFsX2luZGVudDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgcHBfb3V0cHV0X2luZGVudCBzdGF0ZSBzdGF0ZS5wcF9jdXJyZW50X2luZGVudDtcbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBhZnRlclxuXG5cbigqIFRvIGZvcmNlIGEgbGluZSBicmVhayBpbnNpZGUgYSBib3g6IG5vIG9mZnNldCBpcyBhZGRlZC4gKilcbmxldCBicmVha19saW5lIHN0YXRlIHdpZHRoID0gYnJlYWtfbmV3X2xpbmUgc3RhdGUgKFwiXCIsIDAsIFwiXCIpIHdpZHRoXG5cbigqIFRvIGZvcm1hdCBhIGJyZWFrIHRoYXQgZml0cyBvbiB0aGUgY3VycmVudCBsaW5lLiAqKVxubGV0IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSAoYmVmb3JlLCB3aWR0aCwgYWZ0ZXIpID1cbiAgZm9ybWF0X3N0cmluZyBzdGF0ZSBiZWZvcmU7XG4gIHN0YXRlLnBwX3NwYWNlX2xlZnQgPC0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIHdpZHRoO1xuICBwcF9vdXRwdXRfc3BhY2VzIHN0YXRlIHdpZHRoO1xuICBmb3JtYXRfc3RyaW5nIHN0YXRlIGFmdGVyXG5cblxuKCogVG8gaW5kZW50IG5vIG1vcmUgdGhhbiBwcF9tYXhfaW5kZW50LCBpZiBvbmUgdHJpZXMgdG8gb3BlbiBhIGJveFxuICAgYmV5b25kIHBwX21heF9pbmRlbnQsIHRoZW4gdGhlIGJveCBpcyByZWplY3RlZCBvbiB0aGUgbGVmdFxuICAgYnkgc2ltdWxhdGluZyBhIGJyZWFrLiAqKVxubGV0IHBwX2ZvcmNlX2JyZWFrX2xpbmUgc3RhdGUgPVxuICBtYXRjaCBTdGFjay50b3Bfb3B0IHN0YXRlLnBwX2Zvcm1hdF9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiBwcF9vdXRwdXRfbmV3bGluZSBzdGF0ZVxuICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgIGlmIHdpZHRoID4gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuXG4gICAgICBtYXRjaCBib3hfdHlwZSB3aXRoXG4gICAgICB8IFBwX2ZpdHMgfCBQcF9oYm94IC0+ICgpXG4gICAgICB8IFBwX3Zib3ggfCBQcF9odmJveCB8IFBwX2hvdmJveCB8IFBwX2JveCAtPiBicmVha19saW5lIHN0YXRlIHdpZHRoXG5cblxuKCogVG8gc2tpcCBhIHRva2VuLCBpZiB0aGUgcHJldmlvdXMgbGluZSBoYXMgYmVlbiBicm9rZW4uICopXG5sZXQgcHBfc2tpcF90b2tlbiBzdGF0ZSA9XG4gIG1hdGNoIFF1ZXVlLnRha2Vfb3B0IHN0YXRlLnBwX3F1ZXVlIHdpdGhcbiAgfCBOb25lIC0+ICgpICgqIHByaW50X2lmX25ld2xpbmUgbXVzdCBoYXZlIGJlZW4gdGhlIGxhc3QgcHJpbnRpbmcgY29tbWFuZCAqKVxuICB8IFNvbWUgeyBzaXplOyBsZW5ndGg7IF8gfSAtPlxuICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gc3RhdGUucHBfbGVmdF90b3RhbCAtIGxlbmd0aDtcbiAgICBzdGF0ZS5wcF9zcGFjZV9sZWZ0IDwtIHN0YXRlLnBwX3NwYWNlX2xlZnQgKyBTaXplLnRvX2ludCBzaXplXG5cblxuKCpcblxuICBUaGUgbWFpbiBwcmV0dHkgcHJpbnRpbmcgZnVuY3Rpb25zLlxuXG4qKVxuXG4oKiBGb3JtYXR0aW5nIGEgdG9rZW4gd2l0aCBhIGdpdmVuIHNpemUuICopXG5sZXQgZm9ybWF0X3BwX3Rva2VuIHN0YXRlIHNpemUgPSBmdW5jdGlvblxuXG4gIHwgUHBfdGV4dCBzIC0+XG4gICAgZm9ybWF0X3BwX3RleHQgc3RhdGUgc2l6ZSBzXG5cbiAgfCBQcF9iZWdpbiAob2ZmLCB0eSkgLT5cbiAgICBsZXQgaW5zZXJ0aW9uX3BvaW50ID0gc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCBpblxuICAgIGlmIGluc2VydGlvbl9wb2ludCA+IHN0YXRlLnBwX21heF9pbmRlbnQgdGhlblxuICAgICAgKCogY2FuIG5vdCBvcGVuIGEgYm94IHJpZ2h0IHRoZXJlLiAqKVxuICAgICAgYmVnaW4gcHBfZm9yY2VfYnJlYWtfbGluZSBzdGF0ZSBlbmQ7XG4gICAgbGV0IHdpZHRoID0gc3RhdGUucHBfc3BhY2VfbGVmdCAtIG9mZiBpblxuICAgIGxldCBib3hfdHlwZSA9XG4gICAgICBtYXRjaCB0eSB3aXRoXG4gICAgICB8IFBwX3Zib3ggLT4gUHBfdmJveFxuICAgICAgfCBQcF9oYm94IHwgUHBfaHZib3ggfCBQcF9ob3Zib3ggfCBQcF9ib3ggfCBQcF9maXRzIC0+XG4gICAgICAgIGlmIHNpemUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0IHRoZW4gdHkgZWxzZSBQcF9maXRzIGluXG4gICAgU3RhY2sucHVzaCB7IGJveF90eXBlOyB3aWR0aCB9IHN0YXRlLnBwX2Zvcm1hdF9zdGFja1xuXG4gIHwgUHBfZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgfD4gaWdub3JlXG5cbiAgfCBQcF90YmVnaW4gKFBwX3Rib3ggXyBhcyB0Ym94KSAtPlxuICAgIFN0YWNrLnB1c2ggdGJveCBzdGF0ZS5wcF90Ym94X3N0YWNrXG5cbiAgfCBQcF90ZW5kIC0+XG4gICAgU3RhY2sucG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHw+IGlnbm9yZVxuXG4gIHwgUHBfc3RhYiAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfdGJveF9zdGFjayB3aXRoXG4gICAgfCBOb25lIC0+ICgpICgqIE5vIG9wZW4gdGFidWxhdGlvbiBib3guICopXG4gICAgfCBTb21lIChQcF90Ym94IHRhYnMpIC0+XG4gICAgICBsZXQgcmVjIGFkZF90YWIgbiA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gW25dXG4gICAgICAgIHwgeCA6OiBsIGFzIGxzIC0+IGlmIG4gPCB4IHRoZW4gbiA6OiBscyBlbHNlIHggOjogYWRkX3RhYiBuIGwgaW5cbiAgICAgIHRhYnMgOj0gYWRkX3RhYiAoc3RhdGUucHBfbWFyZ2luIC0gc3RhdGUucHBfc3BhY2VfbGVmdCkgIXRhYnNcbiAgICBlbmRcblxuICB8IFBwX3RicmVhayAobiwgb2ZmKSAtPlxuICAgIGxldCBpbnNlcnRpb25fcG9pbnQgPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0IGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF90Ym94X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gb3BlbiB0YWJ1bGF0aW9uIGJveC4gKilcbiAgICB8IFNvbWUgKFBwX3Rib3ggdGFicykgLT5cbiAgICAgIGxldCB0YWIgPVxuICAgICAgICBtYXRjaCAhdGFicyB3aXRoXG4gICAgICAgIHwgW10gLT4gaW5zZXJ0aW9uX3BvaW50XG4gICAgICAgIHwgZmlyc3QgOjogXyAtPlxuICAgICAgICAgIGxldCByZWMgZmluZCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgICAgICBpZiBoZWFkID49IGluc2VydGlvbl9wb2ludCB0aGVuIGhlYWQgZWxzZSBmaW5kIHRhaWxcbiAgICAgICAgICAgIHwgW10gLT4gZmlyc3QgaW5cbiAgICAgICAgICBmaW5kICF0YWJzIGluXG4gICAgICBsZXQgb2Zmc2V0ID0gdGFiIC0gaW5zZXJ0aW9uX3BvaW50IGluXG4gICAgICBpZiBvZmZzZXQgPj0gMFxuICAgICAgdGhlbiBicmVha19zYW1lX2xpbmUgc3RhdGUgKFwiXCIsIG9mZnNldCArIG4sIFwiXCIpXG4gICAgICBlbHNlIGJyZWFrX25ld19saW5lIHN0YXRlIChcIlwiLCB0YWIgKyBvZmYsIFwiXCIpIHN0YXRlLnBwX21hcmdpblxuICAgIGVuZFxuXG4gIHwgUHBfbmV3bGluZSAtPlxuICAgIGJlZ2luIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfZm9ybWF0X3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGUgKCogTm8gb3BlbiBib3guICopXG4gICAgfCBTb21lIHsgd2lkdGg7IF99IC0+IGJyZWFrX2xpbmUgc3RhdGUgd2lkdGhcbiAgICBlbmRcblxuICB8IFBwX2lmX25ld2xpbmUgLT5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyZW50X2luZGVudCAhPSBzdGF0ZS5wcF9tYXJnaW4gLSBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgdGhlbiBwcF9za2lwX3Rva2VuIHN0YXRlXG5cbiAgfCBQcF9icmVhayB7IGZpdHM7IGJyZWFrcyB9IC0+XG4gICAgbGV0IGJlZm9yZSwgb2ZmLCBfID0gYnJlYWtzIGluXG4gICAgYmVnaW4gbWF0Y2ggU3RhY2sudG9wX29wdCBzdGF0ZS5wcF9mb3JtYXRfc3RhY2sgd2l0aFxuICAgIHwgTm9uZSAtPiAoKSAoKiBObyBvcGVuIGJveC4gKilcbiAgICB8IFNvbWUgeyBib3hfdHlwZTsgd2lkdGggfSAtPlxuICAgICAgYmVnaW4gbWF0Y2ggYm94X3R5cGUgd2l0aFxuICAgICAgfCBQcF9ob3Zib3ggLT5cbiAgICAgICAgaWYgc2l6ZSArIFN0cmluZy5sZW5ndGggYmVmb3JlID4gc3RhdGUucHBfc3BhY2VfbGVmdFxuICAgICAgICB0aGVuIGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgICBlbHNlIGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICB8IFBwX2JveCAtPlxuICAgICAgICAoKiBIYXZlIHRoZSBsaW5lIGp1c3QgYmVlbiBicm9rZW4gaGVyZSA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2lzX25ld19saW5lIHRoZW4gYnJlYWtfc2FtZV9saW5lIHN0YXRlIGZpdHMgZWxzZVxuICAgICAgICBpZiBzaXplICsgU3RyaW5nLmxlbmd0aCBiZWZvcmUgPiBzdGF0ZS5wcF9zcGFjZV9sZWZ0XG4gICAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGggZWxzZVxuICAgICAgICAoKiBicmVhayB0aGUgbGluZSBoZXJlIGxlYWRzIHRvIG5ldyBpbmRlbnRhdGlvbiA/ICopXG4gICAgICAgIGlmIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50ID4gc3RhdGUucHBfbWFyZ2luIC0gd2lkdGggKyBvZmZcbiAgICAgICAgdGhlbiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgICAgZWxzZSBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF9odmJveCAtPiBicmVha19uZXdfbGluZSBzdGF0ZSBicmVha3Mgd2lkdGhcbiAgICAgIHwgUHBfZml0cyAtPiBicmVha19zYW1lX2xpbmUgc3RhdGUgZml0c1xuICAgICAgfCBQcF92Ym94IC0+IGJyZWFrX25ld19saW5lIHN0YXRlIGJyZWFrcyB3aWR0aFxuICAgICAgfCBQcF9oYm94IC0+IGJyZWFrX3NhbWVfbGluZSBzdGF0ZSBmaXRzXG4gICAgICBlbmRcbiAgICBlbmRcblxuICAgfCBQcF9vcGVuX3RhZyB0YWdfbmFtZSAtPlxuICAgICBsZXQgbWFya2VyID0gc3RhdGUucHBfbWFya19vcGVuX3RhZyB0YWdfbmFtZSBpblxuICAgICBwcF9vdXRwdXRfc3RyaW5nIHN0YXRlIG1hcmtlcjtcbiAgICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF9tYXJrX3N0YWNrXG5cbiAgIHwgUHBfY2xvc2VfdGFnIC0+XG4gICAgIGJlZ2luIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfbWFya19zdGFjayB3aXRoXG4gICAgIHwgTm9uZSAtPiAoKSAoKiBObyBtb3JlIHRhZyB0byBjbG9zZS4gKilcbiAgICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICAgbGV0IG1hcmtlciA9IHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIHRhZ19uYW1lIGluXG4gICAgICAgcHBfb3V0cHV0X3N0cmluZyBzdGF0ZSBtYXJrZXJcbiAgICAgZW5kXG5cblxuKCogUHJpbnQgaWYgdG9rZW4gc2l6ZSBpcyBrbm93biBlbHNlIHByaW50aW5nIGlzIGRlbGF5ZWQuXG4gICBQcmludGluZyBpcyBkZWxheWVkIHdoZW4gdGhlIHRleHQgd2FpdGluZyBpbiB0aGUgcXVldWUgcmVxdWlyZXNcbiAgIG1vcmUgcm9vbSB0byBmb3JtYXQgdGhhbiBleGlzdHMgb24gdGhlIGN1cnJlbnQgbGluZS4gKilcbmxldCByZWMgYWR2YW5jZV9sZWZ0IHN0YXRlID1cbiAgbWF0Y2ggUXVldWUucGVla19vcHQgc3RhdGUucHBfcXVldWUgd2l0aFxuICB8IE5vbmUgLT4gKCkgKCogTm8gdG9rZW5zIHRvIHByaW50ICopXG4gIHwgU29tZSB7IHNpemU7IHRva2VuOyBsZW5ndGggfSAtPlxuICAgIGxldCBwZW5kaW5nX2NvdW50ID0gc3RhdGUucHBfcmlnaHRfdG90YWwgLSBzdGF0ZS5wcF9sZWZ0X3RvdGFsIGluXG4gICAgaWYgU2l6ZS5pc19rbm93biBzaXplIHx8IHBlbmRpbmdfY291bnQgPj0gc3RhdGUucHBfc3BhY2VfbGVmdCB0aGVuIGJlZ2luXG4gICAgICBRdWV1ZS50YWtlIHN0YXRlLnBwX3F1ZXVlIHw+IGlnbm9yZTsgKCogTm90IGVtcHR5OiB3ZSBwZWVrIGludG8gaXQgKilcbiAgICAgIGxldCBzaXplID0gaWYgU2l6ZS5pc19rbm93biBzaXplIHRoZW4gU2l6ZS50b19pbnQgc2l6ZSBlbHNlIHBwX2luZmluaXR5IGluXG4gICAgICBmb3JtYXRfcHBfdG9rZW4gc3RhdGUgc2l6ZSB0b2tlbjtcbiAgICAgIHN0YXRlLnBwX2xlZnRfdG90YWwgPC0gbGVuZ3RoICsgc3RhdGUucHBfbGVmdF90b3RhbDtcbiAgICAgIChhZHZhbmNlX2xlZnQgW0B0YWlsY2FsbF0pIHN0YXRlXG4gICAgZW5kXG5cblxuKCogVG8gZW5xdWV1ZSBhIHRva2VuIDogdHJ5IHRvIGFkdmFuY2UuICopXG5sZXQgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHRvayA9IHBwX2VucXVldWUgc3RhdGUgdG9rOyBhZHZhbmNlX2xlZnQgc3RhdGVcblxuXG4oKiBUbyBlbnF1ZXVlIHN0cmluZ3MuICopXG5sZXQgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgc2l6ZSBzID1cbiAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIHsgc2l6ZTsgdG9rZW4gPSBQcF90ZXh0IHM7IGxlbmd0aCA9IFNpemUudG9faW50IHNpemUgfVxuXG5cbmxldCBlbnF1ZXVlX3N0cmluZyBzdGF0ZSBzID1cbiAgZW5xdWV1ZV9zdHJpbmdfYXMgc3RhdGUgKFNpemUub2ZfaW50IChTdHJpbmcubGVuZ3RoIHMpKSBzXG5cblxuKCogUm91dGluZXMgZm9yIHNjYW4gc3RhY2tcbiAgIGRldGVybWluZSBzaXplIG9mIGJveGVzLiAqKVxuXG4oKiBUaGUgc2Nhbl9zdGFjayBpcyBuZXZlciBlbXB0eS4gKilcbmxldCBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhY2sgPVxuICBTdGFjay5jbGVhciBzdGFjaztcbiAgbGV0IHF1ZXVlX2VsZW0gPSB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfdGV4dCBcIlwiOyBsZW5ndGggPSAwIH0gaW5cbiAgU3RhY2sucHVzaCB7IGxlZnRfdG90YWwgPSAtMTsgcXVldWVfZWxlbSB9IHN0YWNrXG5cbigqIFNldHRpbmcgdGhlIHNpemUgb2YgYm94ZXMgb24gc2NhbiBzdGFjazpcbiAgIGlmIHR5ID0gdHJ1ZSB0aGVuIHNpemUgb2YgYnJlYWsgaXMgc2V0IGVsc2Ugc2l6ZSBvZiBib3ggaXMgc2V0O1xuICAgaW4gZWFjaCBjYXNlIHBwX3NjYW5fc3RhY2sgaXMgcG9wcGVkLlxuXG4gICBOb3RlOlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiBzY2FuIHN0YWNrIGlzIGV4aGF1c3RpdmUsIHNpbmNlIHNjYW5fc3RhY2sgaXMgbmV2ZXJcbiAgIGVtcHR5LlxuICAgUGF0dGVybiBtYXRjaGluZyBvbiB0b2tlbiBpbiBzY2FuIHN0YWNrIGlzIGFsc28gZXhoYXVzdGl2ZSxcbiAgIHNpbmNlIHNjYW5fcHVzaCBpcyB1c2VkIG9uIGJyZWFrcyBhbmQgb3BlbmluZyBvZiBib3hlcy4gKilcbmxldCBzZXRfc2l6ZSBzdGF0ZSB0eSA9XG4gIG1hdGNoIFN0YWNrLnRvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB3aXRoXG4gIHwgTm9uZSAtPiAoKSAoKiBzY2FuX3N0YWNrIGlzIG5ldmVyIGVtcHR5LiAqKVxuICB8IFNvbWUgeyBsZWZ0X3RvdGFsOyBxdWV1ZV9lbGVtIH0gLT5cbiAgICBsZXQgc2l6ZSA9IFNpemUudG9faW50IHF1ZXVlX2VsZW0uc2l6ZSBpblxuICAgICgqIHRlc3QgaWYgc2NhbiBzdGFjayBjb250YWlucyBhbnkgZGF0YSB0aGF0IGlzIG5vdCBvYnNvbGV0ZS4gKilcbiAgICBpZiBsZWZ0X3RvdGFsIDwgc3RhdGUucHBfbGVmdF90b3RhbCB0aGVuXG4gICAgICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFja1xuICAgIGVsc2VcbiAgICAgIG1hdGNoIHF1ZXVlX2VsZW0udG9rZW4gd2l0aFxuICAgICAgfCBQcF9icmVhayBfIHwgUHBfdGJyZWFrIChfLCBfKSAtPlxuICAgICAgICBpZiB0eSB0aGVuIGJlZ2luXG4gICAgICAgICAgcXVldWVfZWxlbS5zaXplIDwtIFNpemUub2ZfaW50IChzdGF0ZS5wcF9yaWdodF90b3RhbCArIHNpemUpO1xuICAgICAgICAgIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfc2Nhbl9zdGFjayB8PiBpZ25vcmVcbiAgICAgICAgZW5kXG4gICAgICB8IFBwX2JlZ2luIChfLCBfKSAtPlxuICAgICAgICBpZiBub3QgdHkgdGhlbiBiZWdpblxuICAgICAgICAgIHF1ZXVlX2VsZW0uc2l6ZSA8LSBTaXplLm9mX2ludCAoc3RhdGUucHBfcmlnaHRfdG90YWwgKyBzaXplKTtcbiAgICAgICAgICBTdGFjay5wb3Bfb3B0IHN0YXRlLnBwX3NjYW5fc3RhY2sgfD4gaWdub3JlXG4gICAgICAgIGVuZFxuICAgICAgfCBQcF90ZXh0IF8gfCBQcF9zdGFiIHwgUHBfdGJlZ2luIF8gfCBQcF90ZW5kIHwgUHBfZW5kXG4gICAgICB8IFBwX25ld2xpbmUgfCBQcF9pZl9uZXdsaW5lIHwgUHBfb3Blbl90YWcgXyB8IFBwX2Nsb3NlX3RhZyAtPlxuICAgICAgICAoKSAoKiBzY2FuX3B1c2ggaXMgb25seSB1c2VkIGZvciBicmVha3MgYW5kIGJveGVzLiAqKVxuXG5cbigqIFB1c2ggYSB0b2tlbiBvbiBwcmV0dHktcHJpbnRlciBzY2FubmluZyBzdGFjay5cbiAgIElmIGIgaXMgdHJ1ZSBzZXRfc2l6ZSBpcyBjYWxsZWQuICopXG5sZXQgc2Nhbl9wdXNoIHN0YXRlIGIgdG9rZW4gPVxuICBwcF9lbnF1ZXVlIHN0YXRlIHRva2VuO1xuICBpZiBiIHRoZW4gc2V0X3NpemUgc3RhdGUgdHJ1ZTtcbiAgbGV0IGVsZW0gPSB7IGxlZnRfdG90YWwgPSBzdGF0ZS5wcF9yaWdodF90b3RhbDsgcXVldWVfZWxlbSA9IHRva2VuIH0gaW5cbiAgU3RhY2sucHVzaCBlbGVtIHN0YXRlLnBwX3NjYW5fc3RhY2tcblxuXG4oKiBUbyBvcGVuIGEgbmV3IGJveCA6XG4gICB0aGUgdXNlciBtYXkgc2V0IHRoZSBkZXB0aCBib3VuZCBwcF9tYXhfYm94ZXNcbiAgIGFueSB0ZXh0IG5lc3RlZCBkZWVwZXIgaXMgcHJpbnRlZCBhcyB0aGUgZWxsaXBzaXMgc3RyaW5nLiAqKVxubGV0IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgYnJfdHkgPVxuICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggKyAxO1xuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCBlbGVtID0geyBzaXplOyB0b2tlbiA9IFBwX2JlZ2luIChpbmRlbnQsIGJyX3R5KTsgbGVuZ3RoID0gMCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIGZhbHNlIGVsZW0gZWxzZVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG4gIHRoZW4gZW5xdWV1ZV9zdHJpbmcgc3RhdGUgc3RhdGUucHBfZWxsaXBzaXNcblxuXG4oKiBUaGUgYm94IHdoaWNoIGlzIGFsd2F5cyBvcGVuLiAqKVxubGV0IHBwX29wZW5fc3lzX2JveCBzdGF0ZSA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSAwIFBwX2hvdmJveFxuXG4oKiBDbG9zZSBhIGJveCwgc2V0dGluZyBzaXplcyBvZiBpdHMgc3ViIGJveGVzLiAqKVxubGV0IHBwX2Nsb3NlX2JveCBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPiAxIHRoZW5cbiAgYmVnaW5cbiAgICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBiZWdpblxuICAgICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfZW5kOyBsZW5ndGggPSAwIH07XG4gICAgICBzZXRfc2l6ZSBzdGF0ZSB0cnVlOyBzZXRfc2l6ZSBzdGF0ZSBmYWxzZVxuICAgIGVuZDtcbiAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxO1xuICBlbmRcblxuXG4oKiBPcGVuIGEgdGFnLCBwdXNoaW5nIGl0IG9uIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfb3Blbl9zdGFnIHN0YXRlIHRhZ19uYW1lID1cbiAgaWYgc3RhdGUucHBfcHJpbnRfdGFncyB0aGVuXG4gIGJlZ2luXG4gICAgU3RhY2sucHVzaCB0YWdfbmFtZSBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gICAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgdGFnX25hbWVcbiAgZW5kO1xuICBpZiBzdGF0ZS5wcF9tYXJrX3RhZ3MgdGhlblxuICAgIGxldCB0b2tlbiA9IFBwX29wZW5fdGFnIHRhZ19uYW1lIGluXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuOyBsZW5ndGggPSAwIH1cblxuXG4oKiBDbG9zZSBhIHRhZywgcG9wcGluZyBpdCBmcm9tIHRoZSB0YWcgc3RhY2suICopXG5sZXQgcHBfY2xvc2Vfc3RhZyBzdGF0ZSAoKSA9XG4gIGlmIHN0YXRlLnBwX21hcmtfdGFncyB0aGVuXG4gICAgcHBfZW5xdWV1ZSBzdGF0ZSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfY2xvc2VfdGFnOyBsZW5ndGggPSAwIH07XG4gIGlmIHN0YXRlLnBwX3ByaW50X3RhZ3MgdGhlblxuICAgIG1hdGNoIFN0YWNrLnBvcF9vcHQgc3RhdGUucHBfdGFnX3N0YWNrIHdpdGhcbiAgICB8IE5vbmUgLT4gKCkgKCogTm8gbW9yZSB0YWcgdG8gY2xvc2UuICopXG4gICAgfCBTb21lIHRhZ19uYW1lIC0+XG4gICAgICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgdGFnX25hbWVcblxubGV0IHBwX29wZW5fdGFnIHN0YXRlIHMgPSBwcF9vcGVuX3N0YWcgc3RhdGUgKFN0cmluZ190YWcgcylcbmxldCBwcF9jbG9zZV90YWcgc3RhdGUgKCkgPSBwcF9jbG9zZV9zdGFnIHN0YXRlICgpXG5cbmxldCBwcF9zZXRfcHJpbnRfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfcHJpbnRfdGFncyA8LSBiXG5sZXQgcHBfc2V0X21hcmtfdGFncyBzdGF0ZSBiID0gc3RhdGUucHBfbWFya190YWdzIDwtIGJcbmxldCBwcF9nZXRfcHJpbnRfdGFncyBzdGF0ZSAoKSA9IHN0YXRlLnBwX3ByaW50X3RhZ3NcbmxldCBwcF9nZXRfbWFya190YWdzIHN0YXRlICgpID0gc3RhdGUucHBfbWFya190YWdzXG5sZXQgcHBfc2V0X3RhZ3Mgc3RhdGUgYiA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0YXRlIGI7IHBwX3NldF9tYXJrX3RhZ3Mgc3RhdGUgYlxuXG5cbigqIEhhbmRsaW5nIHRhZyBoYW5kbGluZyBmdW5jdGlvbnM6IGdldC9zZXQgZnVuY3Rpb25zLiAqKVxubGV0IHBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RhdGUgKCkgPSB7XG4gIG1hcmtfb3Blbl9zdGFnID0gc3RhdGUucHBfbWFya19vcGVuX3RhZztcbiAgbWFya19jbG9zZV9zdGFnID0gc3RhdGUucHBfbWFya19jbG9zZV90YWc7XG4gIHByaW50X29wZW5fc3RhZyA9IHN0YXRlLnBwX3ByaW50X29wZW5fdGFnO1xuICBwcmludF9jbG9zZV9zdGFnID0gc3RhdGUucHBfcHJpbnRfY2xvc2VfdGFnO1xufVxuXG5cbmxldCBwcF9zZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0YXRlIHtcbiAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdDtcbiAgICAgcHJpbnRfb3Blbl9zdGFnID0gcG90O1xuICAgICBwcmludF9jbG9zZV9zdGFnID0gcGN0O1xuICB9ID1cbiAgc3RhdGUucHBfbWFya19vcGVuX3RhZyA8LSBtb3Q7XG4gIHN0YXRlLnBwX21hcmtfY2xvc2VfdGFnIDwtIG1jdDtcbiAgc3RhdGUucHBfcHJpbnRfb3Blbl90YWcgPC0gcG90O1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gcGN0XG5cblxuKCogSW5pdGlhbGl6ZSBwcmV0dHktcHJpbnRlci4gKilcbmxldCBwcF9yaW5pdCBzdGF0ZSA9XG4gIHBwX2NsZWFyX3F1ZXVlIHN0YXRlO1xuICBpbml0aWFsaXplX3NjYW5fc3RhY2sgc3RhdGUucHBfc2Nhbl9zdGFjaztcbiAgU3RhY2suY2xlYXIgc3RhdGUucHBfZm9ybWF0X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90Ym94X3N0YWNrO1xuICBTdGFjay5jbGVhciBzdGF0ZS5wcF90YWdfc3RhY2s7XG4gIFN0YWNrLmNsZWFyIHN0YXRlLnBwX21hcmtfc3RhY2s7XG4gIHN0YXRlLnBwX2N1cnJlbnRfaW5kZW50IDwtIDA7XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gMDtcbiAgc3RhdGUucHBfc3BhY2VfbGVmdCA8LSBzdGF0ZS5wcF9tYXJnaW47XG4gIHBwX29wZW5fc3lzX2JveCBzdGF0ZVxuXG5sZXQgY2xlYXJfdGFnX3N0YWNrIHN0YXRlID1cbiAgU3RhY2suaXRlciAoZnVuIF8gLT4gcHBfY2xvc2VfdGFnIHN0YXRlICgpKSBzdGF0ZS5wcF90YWdfc3RhY2tcblxuXG4oKiBGbHVzaGluZyBwcmV0dHktcHJpbnRlciBxdWV1ZS4gKilcbmxldCBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSBiID1cbiAgY2xlYXJfdGFnX3N0YWNrIHN0YXRlO1xuICB3aGlsZSBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSBkb1xuICAgIHBwX2Nsb3NlX2JveCBzdGF0ZSAoKVxuICBkb25lO1xuICBzdGF0ZS5wcF9yaWdodF90b3RhbCA8LSBwcF9pbmZpbml0eTtcbiAgYWR2YW5jZV9sZWZ0IHN0YXRlO1xuICBpZiBiIHRoZW4gcHBfb3V0cHV0X25ld2xpbmUgc3RhdGU7XG4gIHBwX3Jpbml0IHN0YXRlXG5cbigqXG5cbiAgUHJvY2VkdXJlcyB0byBmb3JtYXQgdmFsdWVzIGFuZCB1c2UgYm94ZXMuXG5cbiopXG5cbigqIFRvIGZvcm1hdCBhIHN0cmluZy4gKilcbmxldCBwcF9wcmludF9hc19zaXplIHN0YXRlIHNpemUgcyA9XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXNcbiAgdGhlbiBlbnF1ZXVlX3N0cmluZ19hcyBzdGF0ZSBzaXplIHNcblxuXG5sZXQgcHBfcHJpbnRfYXMgc3RhdGUgaXNpemUgcyA9XG4gIHBwX3ByaW50X2FzX3NpemUgc3RhdGUgKFNpemUub2ZfaW50IGlzaXplKSBzXG5cblxubGV0IHBwX3ByaW50X3N0cmluZyBzdGF0ZSBzID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgKFN0cmluZy5sZW5ndGggcykgc1xuXG5sZXQgcHBfcHJpbnRfYnl0ZXMgc3RhdGUgcyA9XG4gIHBwX3ByaW50X2FzIHN0YXRlIChCeXRlcy5sZW5ndGggcykgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG4oKiBUbyBmb3JtYXQgYW4gaW50ZWdlci4gKilcbmxldCBwcF9wcmludF9pbnQgc3RhdGUgaSA9IHBwX3ByaW50X3N0cmluZyBzdGF0ZSAoSW50LnRvX3N0cmluZyBpKVxuXG4oKiBUbyBmb3JtYXQgYSBmbG9hdC4gKilcbmxldCBwcF9wcmludF9mbG9hdCBzdGF0ZSBmID0gcHBfcHJpbnRfc3RyaW5nIHN0YXRlIChzdHJpbmdfb2ZfZmxvYXQgZilcblxuKCogVG8gZm9ybWF0IGEgYm9vbGVhbi4gKilcbmxldCBwcF9wcmludF9ib29sIHN0YXRlIGIgPSBwcF9wcmludF9zdHJpbmcgc3RhdGUgKHN0cmluZ19vZl9ib29sIGIpXG5cbigqIFRvIGZvcm1hdCBhIGNoYXIuICopXG5sZXQgcHBfcHJpbnRfY2hhciBzdGF0ZSBjID1cbiAgcHBfcHJpbnRfYXMgc3RhdGUgMSAoU3RyaW5nLm1ha2UgMSBjKVxuXG5cbigqIE9wZW5pbmcgYm94ZXMuICopXG5sZXQgcHBfb3Blbl9oYm94IHN0YXRlICgpID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIDAgUHBfaGJveFxuYW5kIHBwX29wZW5fdmJveCBzdGF0ZSBpbmRlbnQgPSBwcF9vcGVuX2JveF9nZW4gc3RhdGUgaW5kZW50IFBwX3Zib3hcblxuYW5kIHBwX29wZW5faHZib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9odmJveFxuYW5kIHBwX29wZW5faG92Ym94IHN0YXRlIGluZGVudCA9IHBwX29wZW5fYm94X2dlbiBzdGF0ZSBpbmRlbnQgUHBfaG92Ym94XG5hbmQgcHBfb3Blbl9ib3ggc3RhdGUgaW5kZW50ID0gcHBfb3Blbl9ib3hfZ2VuIHN0YXRlIGluZGVudCBQcF9ib3hcblxuXG4oKiBQcmludGluZyBxdWV1ZWQgdGV4dC5cblxuICAgW3BwX3ByaW50X2ZsdXNoXSBwcmludHMgYWxsIHBlbmRpbmcgaXRlbXMgaW4gdGhlIHByZXR0eS1wcmludGVyIHF1ZXVlIGFuZFxuICAgdGhlbiBmbHVzaGVzIHRoZSBsb3cgbGV2ZWwgb3V0cHV0IGRldmljZSBvZiB0aGUgZm9ybWF0dGVyIHRvIGFjdHVhbGx5XG4gICBkaXNwbGF5IHByaW50aW5nIG1hdGVyaWFsLlxuXG4gICBbcHBfcHJpbnRfbmV3bGluZV0gYmVoYXZlcyBhcyBbcHBfcHJpbnRfZmx1c2hdIGFmdGVyIHByaW50aW5nIGFuIGFkZGl0aW9uYWxcbiAgIG5ldyBsaW5lLiAqKVxubGV0IHBwX3ByaW50X25ld2xpbmUgc3RhdGUgKCkgPVxuICBwcF9mbHVzaF9xdWV1ZSBzdGF0ZSB0cnVlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcbmFuZCBwcF9wcmludF9mbHVzaCBzdGF0ZSAoKSA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHN0YXRlIGZhbHNlOyBzdGF0ZS5wcF9vdXRfZmx1c2ggKClcblxuXG4oKiBUbyBnZXQgYSBuZXdsaW5lIHdoZW4gb25lIGRvZXMgbm90IHdhbnQgdG8gY2xvc2UgdGhlIGN1cnJlbnQgYm94LiAqKVxubGV0IHBwX2ZvcmNlX25ld2xpbmUgc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBlbnF1ZXVlX2FkdmFuY2Ugc3RhdGUgeyBzaXplID0gU2l6ZS56ZXJvOyB0b2tlbiA9IFBwX25ld2xpbmU7IGxlbmd0aCA9IDAgfVxuXG5cbigqIFRvIGZvcm1hdCBzb21ldGhpbmcsIG9ubHkgaW4gY2FzZSB0aGUgbGluZSBoYXMganVzdCBiZWVuIGJyb2tlbi4gKilcbmxldCBwcF9wcmludF9pZl9uZXdsaW5lIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlXG4gICAgICB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfaWZfbmV3bGluZTsgbGVuZ3RoID0gMCB9XG5cblxuKCogR2VuZXJhbGl6ZWQgYnJlYWsgaGludCB0aGF0IGFsbG93cyBwcmludGluZyBzdHJpbmdzIGJlZm9yZS9hZnRlclxuICAgc2FtZS1saW5lIG9mZnNldCAod2lkdGgpIG9yIG5ldy1saW5lIG9mZnNldCAqKVxubGV0IHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZSB+Zml0cyB+YnJlYWtzID1cbiAgbGV0IGJlZm9yZSwgd2lkdGgsIGFmdGVyID0gZml0cyBpblxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICBsZXQgc2l6ZSA9IFNpemUub2ZfaW50ICgtIHN0YXRlLnBwX3JpZ2h0X3RvdGFsKSBpblxuICAgIGxldCB0b2tlbiA9IFBwX2JyZWFrIHsgZml0czsgYnJlYWtzIH0gaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBiZWZvcmUgKyB3aWR0aCArIFN0cmluZy5sZW5ndGggYWZ0ZXIgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW47IGxlbmd0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG4oKiBQcmludGluZyBicmVhayBoaW50czpcbiAgIEEgYnJlYWsgaGludCBpbmRpY2F0ZXMgd2hlcmUgYSBib3ggbWF5IGJlIGJyb2tlbi5cbiAgIElmIGxpbmUgaXMgYnJva2VuIHRoZW4gb2Zmc2V0IGlzIGFkZGVkIHRvIHRoZSBpbmRlbnRhdGlvbiBvZiB0aGUgY3VycmVudFxuICAgYm94IGVsc2UgKHRoZSB2YWx1ZSBvZikgd2lkdGggYmxhbmtzIGFyZSBwcmludGVkLiAqKVxubGV0IHBwX3ByaW50X2JyZWFrIHN0YXRlIHdpZHRoIG9mZnNldCA9XG4gIHBwX3ByaW50X2N1c3RvbV9icmVhayBzdGF0ZVxuICAgIH5maXRzOihcIlwiLCB3aWR0aCwgXCJcIikgfmJyZWFrczooXCJcIiwgb2Zmc2V0LCBcIlwiKVxuXG5cbigqIFByaW50IGEgc3BhY2UgOlxuICAgYSBzcGFjZSBpcyBhIGJyZWFrIGhpbnQgdGhhdCBwcmludHMgYSBzaW5nbGUgc3BhY2UgaWYgdGhlIGJyZWFrIGRvZXMgbm90XG4gICBzcGxpdCB0aGUgbGluZTtcbiAgIGEgY3V0IGlzIGEgYnJlYWsgaGludCB0aGF0IHByaW50cyBub3RoaW5nIGlmIHRoZSBicmVhayBkb2VzIG5vdCBzcGxpdCB0aGVcbiAgIGxpbmUuICopXG5sZXQgcHBfcHJpbnRfc3BhY2Ugc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAxIDBcbmFuZCBwcF9wcmludF9jdXQgc3RhdGUgKCkgPSBwcF9wcmludF9icmVhayBzdGF0ZSAwIDBcblxuXG4oKiBUYWJ1bGF0aW9uIGJveGVzLiAqKVxubGV0IHBwX29wZW5fdGJveCBzdGF0ZSAoKSA9XG4gIHN0YXRlLnBwX2N1cnJfZGVwdGggPC0gc3RhdGUucHBfY3Vycl9kZXB0aCArIDE7XG4gIGlmIHN0YXRlLnBwX2N1cnJfZGVwdGggPCBzdGF0ZS5wcF9tYXhfYm94ZXMgdGhlblxuICAgIGxldCBzaXplID0gU2l6ZS56ZXJvIGluXG4gICAgbGV0IGVsZW0gPSB7IHNpemU7IHRva2VuID0gUHBfdGJlZ2luIChQcF90Ym94IChyZWYgW10pKTsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKiBDbG9zZSBhIHRhYnVsYXRpb24gYm94LiAqKVxubGV0IHBwX2Nsb3NlX3Rib3ggc3RhdGUgKCkgPVxuICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoID4gMSB0aGVuXG4gIGJlZ2luXG4gICBpZiBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwgc3RhdGUucHBfbWF4X2JveGVzIHRoZW5cbiAgICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfdGVuZDsgbGVuZ3RoID0gMCB9IGluXG4gICAgIGVucXVldWVfYWR2YW5jZSBzdGF0ZSBlbGVtO1xuICAgICBzdGF0ZS5wcF9jdXJyX2RlcHRoIDwtIHN0YXRlLnBwX2N1cnJfZGVwdGggLSAxXG4gIGVuZFxuXG5cbigqIFByaW50IGEgdGFidWxhdGlvbiBicmVhay4gKilcbmxldCBwcF9wcmludF90YnJlYWsgc3RhdGUgd2lkdGggb2Zmc2V0ID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IHNpemUgPSBTaXplLm9mX2ludCAoLSBzdGF0ZS5wcF9yaWdodF90b3RhbCkgaW5cbiAgICBsZXQgZWxlbSA9IHsgc2l6ZTsgdG9rZW4gPSBQcF90YnJlYWsgKHdpZHRoLCBvZmZzZXQpOyBsZW5ndGggPSB3aWR0aCB9IGluXG4gICAgc2Nhbl9wdXNoIHN0YXRlIHRydWUgZWxlbVxuXG5cbmxldCBwcF9wcmludF90YWIgc3RhdGUgKCkgPSBwcF9wcmludF90YnJlYWsgc3RhdGUgMCAwXG5cbmxldCBwcF9zZXRfdGFiIHN0YXRlICgpID1cbiAgaWYgc3RhdGUucHBfY3Vycl9kZXB0aCA8IHN0YXRlLnBwX21heF9ib3hlcyB0aGVuXG4gICAgbGV0IGVsZW0gPSB7IHNpemUgPSBTaXplLnplcm87IHRva2VuID0gUHBfc3RhYjsgbGVuZ3RoID0gMCB9IGluXG4gICAgZW5xdWV1ZV9hZHZhbmNlIHN0YXRlIGVsZW1cblxuXG4oKlxuXG4gIFByb2NlZHVyZXMgdG8gY29udHJvbCB0aGUgcHJldHR5LXByaW50ZXJzXG5cbiopXG5cbigqIFNldF9tYXhfYm94ZXMuICopXG5sZXQgcHBfc2V0X21heF9ib3hlcyBzdGF0ZSBuID0gaWYgbiA+IDEgdGhlbiBzdGF0ZS5wcF9tYXhfYm94ZXMgPC0gblxuXG4oKiBUbyBrbm93IHRoZSBjdXJyZW50IG1heGltdW0gbnVtYmVyIG9mIGJveGVzIGFsbG93ZWQuICopXG5sZXQgcHBfZ2V0X21heF9ib3hlcyBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9ib3hlc1xuXG5sZXQgcHBfb3Zlcl9tYXhfYm94ZXMgc3RhdGUgKCkgPSBzdGF0ZS5wcF9jdXJyX2RlcHRoID0gc3RhdGUucHBfbWF4X2JveGVzXG5cbigqIEVsbGlwc2lzLiAqKVxubGV0IHBwX3NldF9lbGxpcHNpc190ZXh0IHN0YXRlIHMgPSBzdGF0ZS5wcF9lbGxpcHNpcyA8LSBzXG5hbmQgcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RhdGUgKCkgPSBzdGF0ZS5wcF9lbGxpcHNpc1xuXG5cbigqIFRvIHNldCB0aGUgbWFyZ2luIG9mIHByZXR0eS1wcmludGVyLiAqKVxubGV0IHBwX2xpbWl0IG4gPVxuICBpZiBuIDwgcHBfaW5maW5pdHkgdGhlbiBuIGVsc2UgcHJlZCBwcF9pbmZpbml0eVxuXG5cbigqIEludGVybmFsIHByZXR0eS1wcmludGVyIGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfbWluX3NwYWNlX2xlZnQgc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWluX3NwYWNlX2xlZnQgPC0gbjtcbiAgICBzdGF0ZS5wcF9tYXhfaW5kZW50IDwtIHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX3Jpbml0IHN0YXRlXG5cblxuKCogSW5pdGlhbGx5LCB3ZSBoYXZlIDpcbiAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdCwgYW5kXG4gICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luLiAqKVxubGV0IHBwX3NldF9tYXhfaW5kZW50IHN0YXRlIG4gPVxuICBpZiBuID4gMSB0aGVuXG4gICAgcHBfc2V0X21pbl9zcGFjZV9sZWZ0IHN0YXRlIChzdGF0ZS5wcF9tYXJnaW4gLSBuKVxuXG5cbmxldCBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSA9IHN0YXRlLnBwX21heF9pbmRlbnRcblxubGV0IHBwX3NldF9tYXJnaW4gc3RhdGUgbiA9XG4gIGlmIG4gPj0gMSB0aGVuXG4gICAgbGV0IG4gPSBwcF9saW1pdCBuIGluXG4gICAgc3RhdGUucHBfbWFyZ2luIDwtIG47XG4gICAgbGV0IG5ld19tYXhfaW5kZW50ID1cbiAgICAgICgqIFRyeSB0byBtYWludGFpbiBtYXhfaW5kZW50IHRvIGl0cyBhY3R1YWwgdmFsdWUuICopXG4gICAgICBpZiBzdGF0ZS5wcF9tYXhfaW5kZW50IDw9IHN0YXRlLnBwX21hcmdpblxuICAgICAgdGhlbiBzdGF0ZS5wcF9tYXhfaW5kZW50IGVsc2VcbiAgICAgICgqIElmIHBvc3NpYmxlIG1haW50YWluIHBwX21pbl9zcGFjZV9sZWZ0IHRvIGl0cyBhY3R1YWwgdmFsdWUsXG4gICAgICAgICBpZiB0aGlzIGxlYWRzIHRvIGEgdG9vIHNtYWxsIG1heF9pbmRlbnQsIHRha2UgaGFsZiBvZiB0aGVcbiAgICAgICAgIG5ldyBtYXJnaW4sIGlmIGl0IGlzIGdyZWF0ZXIgdGhhbiAxLiAqKVxuICAgICAgIEludC5tYXggKEludC5tYXggKHN0YXRlLnBwX21hcmdpbiAtIHN0YXRlLnBwX21pbl9zcGFjZV9sZWZ0KVxuICAgICAgICAgICAgICAgIChzdGF0ZS5wcF9tYXJnaW4gLyAyKSkgMSBpblxuICAgICgqIFJlYnVpbGQgaW52YXJpYW50cy4gKilcbiAgICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBuZXdfbWF4X2luZGVudFxuXG5cbigqKiBHZW9tZXRyeSBmdW5jdGlvbnMgYW5kIHR5cGVzICopXG50eXBlIGdlb21ldHJ5ID0geyBtYXhfaW5kZW50OmludDsgbWFyZ2luOiBpbnR9XG5cbmxldCB2YWxpZGF0ZV9nZW9tZXRyeSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIGlmIG1heF9pbmRlbnQgPCAyIHRoZW5cbiAgICBFcnJvciBcIm1heF9pbmRlbnQgPCAyXCJcbiAgZWxzZSBpZiBtYXJnaW4gPD0gbWF4X2luZGVudCB0aGVuXG4gICAgRXJyb3IgXCJtYXJnaW4gPD0gbWF4X2luZGVudFwiXG4gIGVsc2UgT2sgKClcblxubGV0IGNoZWNrX2dlb21ldHJ5IGdlb21ldHJ5ID1cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IE9rICgpIC0+IHRydWVcbiAgfCBFcnJvciBfIC0+IGZhbHNlXG5cbmxldCBwcF9nZXRfbWFyZ2luIHN0YXRlICgpID0gc3RhdGUucHBfbWFyZ2luXG5cbmxldCBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSB7bWFyZ2luOyBtYXhfaW5kZW50fSA9XG4gIHBwX3NldF9tYXJnaW4gc3RhdGUgbWFyZ2luO1xuICBwcF9zZXRfbWF4X2luZGVudCBzdGF0ZSBtYXhfaW5kZW50O1xuICAoKVxuXG5sZXQgcHBfc2V0X2dlb21ldHJ5IHN0YXRlIH5tYXhfaW5kZW50IH5tYXJnaW4gPVxuICBsZXQgZ2VvbWV0cnkgPSB7IG1heF9pbmRlbnQ7IG1hcmdpbiB9IGluXG4gIG1hdGNoIHZhbGlkYXRlX2dlb21ldHJ5IGdlb21ldHJ5IHdpdGhcbiAgfCBFcnJvciBtc2cgLT5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJGb3JtYXQucHBfc2V0X2dlb21ldHJ5OiBcIiBeIG1zZykpXG4gIHwgT2sgKCkgLT5cbiAgICBwcF9zZXRfZnVsbF9nZW9tZXRyeSBzdGF0ZSBnZW9tZXRyeVxuXG5sZXQgcHBfc2FmZV9zZXRfZ2VvbWV0cnkgc3RhdGUgfm1heF9pbmRlbnQgfm1hcmdpbiA9XG4gIGxldCBnZW9tZXRyeSA9IHsgbWF4X2luZGVudDsgbWFyZ2luIH0gaW5cbiAgbWF0Y2ggdmFsaWRhdGVfZ2VvbWV0cnkgZ2VvbWV0cnkgd2l0aFxuICB8IEVycm9yIF9tc2cgLT5cbiAgICAgKClcbiAgfCBPayAoKSAtPlxuICAgIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlIGdlb21ldHJ5XG5cbmxldCBwcF9nZXRfZ2VvbWV0cnkgc3RhdGUgKCkgPVxuICB7IG1hcmdpbiA9IHBwX2dldF9tYXJnaW4gc3RhdGUgKCk7IG1heF9pbmRlbnQgPSBwcF9nZXRfbWF4X2luZGVudCBzdGF0ZSAoKSB9XG5cbmxldCBwcF91cGRhdGVfZ2VvbWV0cnkgc3RhdGUgdXBkYXRlID1cbiAgbGV0IGdlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0YXRlICgpIGluXG4gIHBwX3NldF9mdWxsX2dlb21ldHJ5IHN0YXRlICh1cGRhdGUgZ2VvbWV0cnkpXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgb3V0cHV0IGZ1bmN0aW9ucy4gKilcbmxldCBwcF9zZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RhdGUge1xuICAgICAgb3V0X3N0cmluZyA9IGY7XG4gICAgICBvdXRfZmx1c2ggPSBnO1xuICAgICAgb3V0X25ld2xpbmUgPSBoO1xuICAgICAgb3V0X3NwYWNlcyA9IGk7XG4gICAgICBvdXRfaW5kZW50ID0gajtcbiAgICB9ID1cbiAgc3RhdGUucHBfb3V0X3N0cmluZyA8LSBmO1xuICBzdGF0ZS5wcF9vdXRfZmx1c2ggPC0gZztcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gaDtcbiAgc3RhdGUucHBfb3V0X3NwYWNlcyA8LSBpO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGpcblxubGV0IHBwX2dldF9mb3JtYXR0ZXJfb3V0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9IHtcbiAgb3V0X3N0cmluZyA9IHN0YXRlLnBwX291dF9zdHJpbmc7XG4gIG91dF9mbHVzaCA9IHN0YXRlLnBwX291dF9mbHVzaDtcbiAgb3V0X25ld2xpbmUgPSBzdGF0ZS5wcF9vdXRfbmV3bGluZTtcbiAgb3V0X3NwYWNlcyA9IHN0YXRlLnBwX291dF9zcGFjZXM7XG4gIG91dF9pbmRlbnQgPSBzdGF0ZS5wcF9vdXRfaW5kZW50O1xufVxuXG5cbigqIFNldHRpbmcgYSBmb3JtYXR0ZXIgYmFzaWMgc3RyaW5nIG91dHB1dCBhbmQgZmx1c2ggZnVuY3Rpb25zLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGcgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIGY7IHN0YXRlLnBwX291dF9mbHVzaCA8LSBnXG5cbmxldCBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RhdGUgKCkgPVxuICAoc3RhdGUucHBfb3V0X3N0cmluZywgc3RhdGUucHBfb3V0X2ZsdXNoKVxuXG5cbigqIFRoZSBkZWZhdWx0IGZ1bmN0aW9uIHRvIG91dHB1dCBuZXcgbGluZXMuICopXG5sZXQgZGlzcGxheV9uZXdsaW5lIHN0YXRlICgpID0gc3RhdGUucHBfb3V0X3N0cmluZyBcIlxcblwiIDAgIDFcblxuKCogVGhlIGRlZmF1bHQgZnVuY3Rpb24gdG8gb3V0cHV0IHNwYWNlcy4gKilcbmxldCBibGFua19saW5lID0gU3RyaW5nLm1ha2UgODAgJyAnXG5sZXQgcmVjIGRpc3BsYXlfYmxhbmtzIHN0YXRlIG4gPVxuICBpZiBuID4gMCB0aGVuXG4gIGlmIG4gPD0gODAgdGhlbiBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCBuIGVsc2VcbiAgYmVnaW5cbiAgICBzdGF0ZS5wcF9vdXRfc3RyaW5nIGJsYW5rX2xpbmUgMCA4MDtcbiAgICBkaXNwbGF5X2JsYW5rcyBzdGF0ZSAobiAtIDgwKVxuICBlbmRcblxuXG4oKiBUaGUgZGVmYXVsdCBmdW5jdGlvbiB0byBvdXRwdXQgaW5kZW50YXRpb24gb2YgbmV3IGxpbmVzLiAqKVxubGV0IGRpc3BsYXlfaW5kZW50ID0gZGlzcGxheV9ibGFua3NcblxuKCogU2V0dGluZyBhIGZvcm1hdHRlciBiYXNpYyBvdXRwdXQgZnVuY3Rpb25zIGFzIHByaW50aW5nIHRvIGEgZ2l2ZW5cbiAgIFtQZXJ2YXNpdmUub3V0X2NoYW5uZWxdIHZhbHVlLiAqKVxubGV0IHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RhdGUgb2MgPVxuICBzdGF0ZS5wcF9vdXRfc3RyaW5nIDwtIG91dHB1dF9zdWJzdHJpbmcgb2M7XG4gIHN0YXRlLnBwX291dF9mbHVzaCA8LSAoZnVuICgpIC0+IGZsdXNoIG9jKTtcbiAgc3RhdGUucHBfb3V0X25ld2xpbmUgPC0gZGlzcGxheV9uZXdsaW5lIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHN0YXRlO1xuICBzdGF0ZS5wcF9vdXRfaW5kZW50IDwtIGRpc3BsYXlfaW5kZW50IHN0YXRlXG5cbigqXG5cbiAgRGVmaW5pbmcgc3BlY2lmaWMgZm9ybWF0dGVyc1xuXG4qKVxuXG5sZXQgZGVmYXVsdF9wcF9tYXJrX29wZW5fdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8XCIgXiBzIF4gXCI+XCJcbiAgfCBfIC0+IFwiXCJcbmxldCBkZWZhdWx0X3BwX21hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgfCBTdHJpbmdfdGFnIHMgLT4gXCI8L1wiIF4gcyBeIFwiPlwiXG4gIHwgXyAtPiBcIlwiXG5cbmxldCBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnID0gaWdub3JlXG5sZXQgZGVmYXVsdF9wcF9wcmludF9jbG9zZV90YWcgPSBpZ25vcmVcblxuKCogQnVpbGRpbmcgYSBmb3JtYXR0ZXIgZ2l2ZW4gaXRzIGJhc2ljIG91dHB1dCBmdW5jdGlvbnMuXG4gICBPdGhlciBmaWVsZHMgZ2V0IHJlYXNvbmFibGUgZGVmYXVsdCB2YWx1ZXMuICopXG5sZXQgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqID1cbiAgKCogVGhlIGluaXRpYWwgc3RhdGUgb2YgdGhlIGZvcm1hdHRlciBjb250YWlucyBhIGR1bW15IGJveC4gKilcbiAgbGV0IHBwX3F1ZXVlID0gUXVldWUuY3JlYXRlICgpIGluXG4gIGxldCBzeXNfdG9rID1cbiAgICB7IHNpemUgPSBTaXplLnVua25vd247IHRva2VuID0gUHBfYmVnaW4gKDAsIFBwX2hvdmJveCk7IGxlbmd0aCA9IDAgfSBpblxuICBRdWV1ZS5hZGQgc3lzX3RvayBwcF9xdWV1ZTtcbiAgbGV0IHNjYW5fc3RhY2sgPSBTdGFjay5jcmVhdGUgKCkgaW5cbiAgaW5pdGlhbGl6ZV9zY2FuX3N0YWNrIHNjYW5fc3RhY2s7XG4gIFN0YWNrLnB1c2ggeyBsZWZ0X3RvdGFsID0gMTsgcXVldWVfZWxlbSA9IHN5c190b2sgfSBzY2FuX3N0YWNrO1xuICBsZXQgcHBfbWFyZ2luID0gNzhcbiAgYW5kIHBwX21pbl9zcGFjZV9sZWZ0ID0gMTAgaW5cbiAge1xuICAgIHBwX3NjYW5fc3RhY2sgPSBzY2FuX3N0YWNrO1xuICAgIHBwX2Zvcm1hdF9zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF90Ym94X3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX3RhZ19zdGFjayA9IFN0YWNrLmNyZWF0ZSAoKTtcbiAgICBwcF9tYXJrX3N0YWNrID0gU3RhY2suY3JlYXRlICgpO1xuICAgIHBwX21hcmdpbiA9IHBwX21hcmdpbjtcbiAgICBwcF9taW5fc3BhY2VfbGVmdCA9IHBwX21pbl9zcGFjZV9sZWZ0O1xuICAgIHBwX21heF9pbmRlbnQgPSBwcF9tYXJnaW4gLSBwcF9taW5fc3BhY2VfbGVmdDtcbiAgICBwcF9zcGFjZV9sZWZ0ID0gcHBfbWFyZ2luO1xuICAgIHBwX2N1cnJlbnRfaW5kZW50ID0gMDtcbiAgICBwcF9pc19uZXdfbGluZSA9IHRydWU7XG4gICAgcHBfbGVmdF90b3RhbCA9IDE7XG4gICAgcHBfcmlnaHRfdG90YWwgPSAxO1xuICAgIHBwX2N1cnJfZGVwdGggPSAxO1xuICAgIHBwX21heF9ib3hlcyA9IG1heF9pbnQ7XG4gICAgcHBfZWxsaXBzaXMgPSBcIi5cIjtcbiAgICBwcF9vdXRfc3RyaW5nID0gZjtcbiAgICBwcF9vdXRfZmx1c2ggPSBnO1xuICAgIHBwX291dF9uZXdsaW5lID0gaDtcbiAgICBwcF9vdXRfc3BhY2VzID0gaTtcbiAgICBwcF9vdXRfaW5kZW50ID0gajtcbiAgICBwcF9wcmludF90YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya190YWdzID0gZmFsc2U7XG4gICAgcHBfbWFya19vcGVuX3RhZyA9IGRlZmF1bHRfcHBfbWFya19vcGVuX3RhZztcbiAgICBwcF9tYXJrX2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfbWFya19jbG9zZV90YWc7XG4gICAgcHBfcHJpbnRfb3Blbl90YWcgPSBkZWZhdWx0X3BwX3ByaW50X29wZW5fdGFnO1xuICAgIHBwX3ByaW50X2Nsb3NlX3RhZyA9IGRlZmF1bHRfcHBfcHJpbnRfY2xvc2VfdGFnO1xuICAgIHBwX3F1ZXVlID0gcHBfcXVldWU7XG4gIH1cblxuXG4oKiBCdWlsZCBhIGZvcm1hdHRlciBvdXQgb2YgaXRzIG91dCBmdW5jdGlvbnMuICopXG5sZXQgZm9ybWF0dGVyX29mX291dF9mdW5jdGlvbnMgb3V0X2Z1bnMgPVxuICBwcF9tYWtlX2Zvcm1hdHRlclxuICAgIG91dF9mdW5zLm91dF9zdHJpbmdcbiAgICBvdXRfZnVucy5vdXRfZmx1c2hcbiAgICBvdXRfZnVucy5vdXRfbmV3bGluZVxuICAgIG91dF9mdW5zLm91dF9zcGFjZXNcbiAgICBvdXRfZnVucy5vdXRfaW5kZW50XG5cblxuKCogTWFrZSBhIGZvcm1hdHRlciB3aXRoIGRlZmF1bHQgZnVuY3Rpb25zIHRvIG91dHB1dCBzcGFjZXMsXG4gIGluZGVudGF0aW9uLCBhbmQgbmV3IGxpbmVzLiAqKVxubGV0IG1ha2VfZm9ybWF0dGVyIG91dHB1dCBmbHVzaCA9XG4gIGxldCBwcGYgPSBwcF9tYWtlX2Zvcm1hdHRlciBvdXRwdXQgZmx1c2ggaWdub3JlIGlnbm9yZSBpZ25vcmUgaW5cbiAgcHBmLnBwX291dF9uZXdsaW5lIDwtIGRpc3BsYXlfbmV3bGluZSBwcGY7XG4gIHBwZi5wcF9vdXRfc3BhY2VzIDwtIGRpc3BsYXlfYmxhbmtzIHBwZjtcbiAgcHBmLnBwX291dF9pbmRlbnQgPC0gZGlzcGxheV9pbmRlbnQgcHBmO1xuICBwcGZcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbUGVydmFzaXZlLm91dF9jaGFubmVsXSB2YWx1ZS4gKilcbmxldCBmb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgPVxuICBtYWtlX2Zvcm1hdHRlciAob3V0cHV0X3N1YnN0cmluZyBvYykgKGZ1biAoKSAtPiBmbHVzaCBvYylcblxuXG4oKiBNYWtlIGEgZm9ybWF0dGVyIHdyaXRpbmcgdG8gYSBnaXZlbiBbQnVmZmVyLnRdIHZhbHVlLiAqKVxubGV0IGZvcm1hdHRlcl9vZl9idWZmZXIgYiA9XG4gIG1ha2VfZm9ybWF0dGVyIChCdWZmZXIuYWRkX3N1YnN0cmluZyBiKSBpZ25vcmVcblxuXG4oKiBBbGxvY2F0aW5nIGJ1ZmZlciBmb3IgcHJldHR5LXByaW50aW5nIHB1cnBvc2VzLlxuICAgRGVmYXVsdCBidWZmZXIgc2l6ZSBpcyBwcF9idWZmZXJfc2l6ZSBvciA1MTIuXG4qKVxubGV0IHBwX2J1ZmZlcl9zaXplID0gNTEyXG5sZXQgcHBfbWFrZV9idWZmZXIgKCkgPSBCdWZmZXIuY3JlYXRlIHBwX2J1ZmZlcl9zaXplXG5cbigqIFRoZSBzdGFuZGFyZCAoc2hhcmVkKSBidWZmZXIuICopXG5sZXQgc3RkYnVmID0gcHBfbWFrZV9idWZmZXIgKClcblxuKCogUHJlZGVmaW5lZCBmb3JtYXR0ZXJzIHN0YW5kYXJkIGZvcm1hdHRlciB0byBwcmludFxuICAgdG8gW1N0ZGxpYi5zdGRvdXRdLCBbU3RkbGliLnN0ZGVycl0sIGFuZCB7IXN0ZGJ1Zn0uICopXG5sZXQgc3RkX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3Rkb3V0XG5hbmQgZXJyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBTdGRsaWIuc3RkZXJyXG5hbmQgc3RyX2Zvcm1hdHRlciA9IGZvcm1hdHRlcl9vZl9idWZmZXIgc3RkYnVmXG5cblxuKCogW2ZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZl0gZmx1c2hlcyBmb3JtYXR0ZXIgW3BwZl0sXG4gICB0aGVuIHJldHVybnMgdGhlIGNvbnRlbnRzIG9mIGJ1ZmZlciBbYnVmXSB0aGF0IGlzIHJlc2V0LlxuICAgRm9ybWF0dGVyIFtwcGZdIGlzIHN1cHBvc2VkIHRvIHByaW50IHRvIGJ1ZmZlciBbYnVmXSwgb3RoZXJ3aXNlIHRoaXNcbiAgIGZ1bmN0aW9uIGlzIG5vdCByZWFsbHkgdXNlZnVsLiAqKVxubGV0IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYnVmIHBwZiA9XG4gIHBwX2ZsdXNoX3F1ZXVlIHBwZiBmYWxzZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYnVmIGluXG4gIEJ1ZmZlci5yZXNldCBidWY7XG4gIHNcblxuXG4oKiBGbHVzaCBbc3RyX2Zvcm1hdHRlcl0gYW5kIGdldCB0aGUgY29udGVudHMgb2YgW3N0ZGJ1Zl0uICopXG5sZXQgZmx1c2hfc3RyX2Zvcm1hdHRlciAoKSA9IGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgc3RkYnVmIHN0cl9mb3JtYXR0ZXJcblxuKCpcbiAgU3ltYm9saWMgcHJldHR5LXByaW50aW5nXG4qKVxuXG4oKlxuICBTeW1ib2xpYyBwcmV0dHktcHJpbnRpbmcgaXMgcHJldHR5LXByaW50aW5nIHdpdGggbm8gbG93IGxldmVsIG91dHB1dC5cblxuICBXaGVuIHVzaW5nIGEgc3ltYm9saWMgZm9ybWF0dGVyLCBhbGwgcmVndWxhciBwcmV0dHktcHJpbnRpbmcgYWN0aXZpdGllc1xuICBvY2N1ciBidXQgb3V0cHV0IG1hdGVyaWFsIGlzIHN5bWJvbGljIGFuZCBzdG9yZWQgaW4gYSBidWZmZXIgb2Ygb3V0cHV0XG4gIGl0ZW1zLiBBdCB0aGUgZW5kIG9mIHByZXR0eS1wcmludGluZywgZmx1c2hpbmcgdGhlIG91dHB1dCBidWZmZXIgYWxsb3dzXG4gIHBvc3QtcHJvY2Vzc2luZyBvZiBzeW1ib2xpYyBvdXRwdXQgYmVmb3JlIGxvdyBsZXZlbCBvdXRwdXQgb3BlcmF0aW9ucy5cbiopXG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2l0ZW0gPVxuICB8IE91dHB1dF9mbHVzaFxuICB8IE91dHB1dF9uZXdsaW5lXG4gIHwgT3V0cHV0X3N0cmluZyBvZiBzdHJpbmdcbiAgfCBPdXRwdXRfc3BhY2VzIG9mIGludFxuICB8IE91dHB1dF9pbmRlbnQgb2YgaW50XG5cbnR5cGUgc3ltYm9saWNfb3V0cHV0X2J1ZmZlciA9IHtcbiAgbXV0YWJsZSBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgOiBzeW1ib2xpY19vdXRwdXRfaXRlbSBsaXN0O1xufVxuXG5sZXQgbWFrZV9zeW1ib2xpY19vdXRwdXRfYnVmZmVyICgpID1cbiAgeyBzeW1ib2xpY19vdXRwdXRfY29udGVudHMgPSBbXSB9XG5cbmxldCBjbGVhcl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHMgPC0gW11cblxubGV0IGdldF9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIExpc3QucmV2IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZsdXNoX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iID1cbiAgbGV0IGl0ZW1zID0gZ2V0X3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iIGluXG4gIGNsZWFyX3N5bWJvbGljX291dHB1dF9idWZmZXIgc29iO1xuICBpdGVtc1xuXG5sZXQgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBpdGVtID1cbiAgc29iLnN5bWJvbGljX291dHB1dF9jb250ZW50cyA8LSBpdGVtIDo6IHNvYi5zeW1ib2xpY19vdXRwdXRfY29udGVudHNcblxubGV0IGZvcm1hdHRlcl9vZl9zeW1ib2xpY19vdXRwdXRfYnVmZmVyIHNvYiA9XG4gIGxldCBzeW1ib2xpY19mbHVzaCBzb2IgKCkgPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgT3V0cHV0X2ZsdXNoXG4gIGFuZCBzeW1ib2xpY19uZXdsaW5lIHNvYiAoKSA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiBPdXRwdXRfbmV3bGluZVxuICBhbmQgc3ltYm9saWNfc3RyaW5nIHNvYiBzIGkgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X3N0cmluZyAoU3RyaW5nLnN1YiBzIGkgbikpXG4gIGFuZCBzeW1ib2xpY19zcGFjZXMgc29iIG4gPVxuICAgIGFkZF9zeW1ib2xpY19vdXRwdXRfaXRlbSBzb2IgKE91dHB1dF9zcGFjZXMgbilcbiAgYW5kIHN5bWJvbGljX2luZGVudCBzb2IgbiA9XG4gICAgYWRkX3N5bWJvbGljX291dHB1dF9pdGVtIHNvYiAoT3V0cHV0X2luZGVudCBuKSBpblxuXG4gIGxldCBmID0gc3ltYm9saWNfc3RyaW5nIHNvYlxuICBhbmQgZyA9IHN5bWJvbGljX2ZsdXNoIHNvYlxuICBhbmQgaCA9IHN5bWJvbGljX25ld2xpbmUgc29iXG4gIGFuZCBpID0gc3ltYm9saWNfc3BhY2VzIHNvYlxuICBhbmQgaiA9IHN5bWJvbGljX2luZGVudCBzb2IgaW5cbiAgcHBfbWFrZV9mb3JtYXR0ZXIgZiBnIGggaSBqXG5cbigqXG5cbiAgQmFzaWMgZnVuY3Rpb25zIG9uIHRoZSAnc3RhbmRhcmQnIGZvcm1hdHRlclxuICAodGhlIGZvcm1hdHRlciB0aGF0IHByaW50cyB0byBbU3RkbGliLnN0ZG91dF0pLlxuXG4qKVxuXG5sZXQgb3Blbl9oYm94ID0gcHBfb3Blbl9oYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX3Zib3ggPSBwcF9vcGVuX3Zib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5faHZib3ggPSBwcF9vcGVuX2h2Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2hvdmJveCA9IHBwX29wZW5faG92Ym94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBvcGVuX2JveCA9IHBwX29wZW5fYm94IHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9ib3ggPSBwcF9jbG9zZV9ib3ggc3RkX2Zvcm1hdHRlclxuYW5kIG9wZW5fdGFnID0gcHBfb3Blbl90YWcgc3RkX2Zvcm1hdHRlclxuYW5kIGNsb3NlX3RhZyA9IHBwX2Nsb3NlX3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgb3Blbl9zdGFnID0gcHBfb3Blbl9zdGFnIHN0ZF9mb3JtYXR0ZXJcbmFuZCBjbG9zZV9zdGFnID0gcHBfY2xvc2Vfc3RhZyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYXMgPSBwcF9wcmludF9hcyBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfc3RyaW5nID0gcHBfcHJpbnRfc3RyaW5nIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ieXRlcyA9IHBwX3ByaW50X2J5dGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9pbnQgPSBwcF9wcmludF9pbnQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2Zsb2F0ID0gcHBfcHJpbnRfZmxvYXQgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2NoYXIgPSBwcF9wcmludF9jaGFyIHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9ib29sID0gcHBfcHJpbnRfYm9vbCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfYnJlYWsgPSBwcF9wcmludF9icmVhayBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfY3V0ID0gcHBfcHJpbnRfY3V0IHN0ZF9mb3JtYXR0ZXJcbmFuZCBwcmludF9zcGFjZSA9IHBwX3ByaW50X3NwYWNlIHN0ZF9mb3JtYXR0ZXJcbmFuZCBmb3JjZV9uZXdsaW5lID0gcHBfZm9yY2VfbmV3bGluZSBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfZmx1c2ggPSBwcF9wcmludF9mbHVzaCBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfbmV3bGluZSA9IHBwX3ByaW50X25ld2xpbmUgc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X2lmX25ld2xpbmUgPSBwcF9wcmludF9pZl9uZXdsaW5lIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIG9wZW5fdGJveCA9IHBwX29wZW5fdGJveCBzdGRfZm9ybWF0dGVyXG5hbmQgY2xvc2VfdGJveCA9IHBwX2Nsb3NlX3Rib3ggc3RkX2Zvcm1hdHRlclxuYW5kIHByaW50X3RicmVhayA9IHBwX3ByaW50X3RicmVhayBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfdGFiID0gcHBfc2V0X3RhYiBzdGRfZm9ybWF0dGVyXG5hbmQgcHJpbnRfdGFiID0gcHBfcHJpbnRfdGFiIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9tYXJnaW4gPSBwcF9zZXRfbWFyZ2luIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWFyZ2luID0gcHBfZ2V0X21hcmdpbiBzdGRfZm9ybWF0dGVyXG5cbmFuZCBzZXRfbWF4X2luZGVudCA9IHBwX3NldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfbWF4X2luZGVudCA9IHBwX2dldF9tYXhfaW5kZW50IHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9nZW9tZXRyeSA9IHBwX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgc2FmZV9zZXRfZ2VvbWV0cnkgPSBwcF9zYWZlX3NldF9nZW9tZXRyeSBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X2dlb21ldHJ5ID0gcHBfZ2V0X2dlb21ldHJ5IHN0ZF9mb3JtYXR0ZXJcbmFuZCB1cGRhdGVfZ2VvbWV0cnkgPSBwcF91cGRhdGVfZ2VvbWV0cnkgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X21heF9ib3hlcyA9IHBwX3NldF9tYXhfYm94ZXMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9tYXhfYm94ZXMgPSBwcF9nZXRfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBvdmVyX21heF9ib3hlcyA9IHBwX292ZXJfbWF4X2JveGVzIHN0ZF9mb3JtYXR0ZXJcblxuYW5kIHNldF9lbGxpcHNpc190ZXh0ID0gcHBfc2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9lbGxpcHNpc190ZXh0ID0gcHBfZ2V0X2VsbGlwc2lzX3RleHQgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfY2hhbm5lbCA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0X2NoYW5uZWwgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfc2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5hbmQgc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgPVxuICBwcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfcHJpbnRfdGFncyA9XG4gIHBwX3NldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBnZXRfcHJpbnRfdGFncyA9XG4gIHBwX2dldF9wcmludF90YWdzIHN0ZF9mb3JtYXR0ZXJcbmFuZCBzZXRfbWFya190YWdzID1cbiAgcHBfc2V0X21hcmtfdGFncyBzdGRfZm9ybWF0dGVyXG5hbmQgZ2V0X21hcmtfdGFncyA9XG4gIHBwX2dldF9tYXJrX3RhZ3Mgc3RkX2Zvcm1hdHRlclxuYW5kIHNldF90YWdzID1cbiAgcHBfc2V0X3RhZ3Mgc3RkX2Zvcm1hdHRlclxuXG5cbigqIENvbnZlbmllbmNlIGZ1bmN0aW9ucyAqKVxuXG4oKiBUbyBmb3JtYXQgYSBsaXN0ICopXG5sZXQgcmVjIHBwX3ByaW50X2xpc3QgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFt2XSAtPiBwcF92IHBwZiB2XG4gIHwgdiA6OiB2cyAtPlxuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfc2VwIHBwZiAoKTtcbiAgICBwcF9wcmludF9saXN0IH5wcF9zZXAgcHBfdiBwcGYgdnNcblxuKCogVG8gZm9ybWF0IGEgc2VxdWVuY2UgKilcbmxldCByZWMgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxID1cbiAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgfCBTZXEuTmlsIC0+ICgpXG4gIHwgU2VxLkNvbnMgKHYsIHNlcSkgLT5cbiAgICBwcF9zZXAgcHBmICgpO1xuICAgIHBwX3YgcHBmIHY7XG4gICAgcHBfcHJpbnRfc2VxX2luIH5wcF9zZXAgcHBfdiBwcGYgc2VxXG5cbmxldCBwcF9wcmludF9zZXEgPyhwcF9zZXAgPSBwcF9wcmludF9jdXQpIHBwX3YgcHBmIHNlcSA9XG4gIG1hdGNoIHNlcSAoKSB3aXRoXG4gIHwgU2VxLk5pbCAtPiAoKVxuICB8IFNlcS5Db25zICh2LCBzZXEpIC0+XG4gICAgcHBfdiBwcGYgdjtcbiAgICBwcF9wcmludF9zZXFfaW4gfnBwX3NlcCBwcF92IHBwZiBzZXFcblxuKCogVG8gZm9ybWF0IGZyZWUtZmxvd2luZyB0ZXh0ICopXG5sZXQgcHBfcHJpbnRfdGV4dCBwcGYgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGxlZnQgPSByZWYgMCBpblxuICBsZXQgcmlnaHQgPSByZWYgMCBpblxuICBsZXQgZmx1c2ggKCkgPVxuICAgIHBwX3ByaW50X3N0cmluZyBwcGYgKFN0cmluZy5zdWIgcyAhbGVmdCAoIXJpZ2h0IC0gIWxlZnQpKTtcbiAgICBpbmNyIHJpZ2h0OyBsZWZ0IDo9ICFyaWdodDtcbiAgaW5cbiAgd2hpbGUgKCFyaWdodCA8PiBsZW4pIGRvXG4gICAgbWF0Y2ggcy5bIXJpZ2h0XSB3aXRoXG4gICAgICB8ICdcXG4nIC0+XG4gICAgICAgIGZsdXNoICgpO1xuICAgICAgICBwcF9mb3JjZV9uZXdsaW5lIHBwZiAoKVxuICAgICAgfCAnICcgLT5cbiAgICAgICAgZmx1c2ggKCk7IHBwX3ByaW50X3NwYWNlIHBwZiAoKVxuICAgICAgKCogdGhlcmUgaXMgbm8gc3BlY2lmaWMgc3VwcG9ydCBmb3IgJ1xcdCdcbiAgICAgICAgIGFzIGl0IGlzIHVuY2xlYXIgd2hhdCBhIHJpZ2h0IHNlbWFudGljcyB3b3VsZCBiZSAqKVxuICAgICAgfCBfIC0+IGluY3IgcmlnaHRcbiAgZG9uZTtcbiAgaWYgIWxlZnQgPD4gbGVuIHRoZW4gZmx1c2ggKClcblxubGV0IHBwX3ByaW50X29wdGlvbiA/KG5vbmUgPSBmdW4gXyAoKSAtPiAoKSkgcHBfdiBwcGYgPSBmdW5jdGlvblxufCBOb25lIC0+IG5vbmUgcHBmICgpXG58IFNvbWUgdiAtPiBwcF92IHBwZiB2XG5cbmxldCBwcF9wcmludF9yZXN1bHQgfm9rIH5lcnJvciBwcGYgPSBmdW5jdGlvblxufCBPayB2IC0+IG9rIHBwZiB2XG58IEVycm9yIGUgLT4gZXJyb3IgcHBmIGVcblxubGV0IHBwX3ByaW50X2VpdGhlciB+bGVmdCB+cmlnaHQgcHBmID0gZnVuY3Rpb25cbnwgRWl0aGVyLkxlZnQgbCAtPiBsZWZ0IHBwZiBsXG58IEVpdGhlci5SaWdodCByIC0+IHJpZ2h0IHBwZiByXG5cbiAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBjb21wdXRlX3RhZyBvdXRwdXQgdGFnX2FjYyA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDE2IGluXG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICBvdXRwdXQgcHBmIHRhZ19hY2M7XG4gIHBwX3ByaW50X2ZsdXNoIHBwZiAoKTtcbiAgbGV0IGxlbiA9IEJ1ZmZlci5sZW5ndGggYnVmIGluXG4gIGlmIGxlbiA8IDIgdGhlbiBCdWZmZXIuY29udGVudHMgYnVmXG4gIGVsc2UgQnVmZmVyLnN1YiBidWYgMSAobGVuIC0gMilcblxuICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4gIERlZmluaW5nIGNvbnRpbnVhdGlvbnMgdG8gYmUgcGFzc2VkIGFzIGFyZ3VtZW50cyBvZlxuICBDYW1saW50ZXJuYWxGb3JtYXQubWFrZV9wcmludGYuXG5cbiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBJbnRlcnByZXQgYSBmb3JtYXR0aW5nIGVudGl0eSBvbiBhIGZvcm1hdHRlci4gKilcbmxldCBvdXRwdXRfZm9ybWF0dGluZ19saXQgcHBmIGZtdGluZ19saXQgPSBtYXRjaCBmbXRpbmdfbGl0IHdpdGhcbiAgfCBDbG9zZV9ib3ggICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX2JveCBwcGYgKClcbiAgfCBDbG9zZV90YWcgICAgICAgICAgICAgICAgIC0+IHBwX2Nsb3NlX3RhZyBwcGYgKClcbiAgfCBCcmVhayAoXywgd2lkdGgsIG9mZnNldCkgIC0+IHBwX3ByaW50X2JyZWFrIHBwZiB3aWR0aCBvZmZzZXRcbiAgfCBGRmx1c2ggICAgICAgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2ZsdXNoIHBwZiAoKVxuICB8IEZvcmNlX25ld2xpbmUgICAgICAgICAgICAgLT4gcHBfZm9yY2VfbmV3bGluZSBwcGYgKClcbiAgfCBGbHVzaF9uZXdsaW5lICAgICAgICAgICAgIC0+IHBwX3ByaW50X25ld2xpbmUgcHBmICgpXG4gIHwgTWFnaWNfc2l6ZSAoXywgXykgICAgICAgICAtPiAoKVxuICB8IEVzY2FwZWRfYXQgICAgICAgICAgICAgICAgLT4gcHBfcHJpbnRfY2hhciBwcGYgJ0AnXG4gIHwgRXNjYXBlZF9wZXJjZW50ICAgICAgICAgICAtPiBwcF9wcmludF9jaGFyIHBwZiAnJSdcbiAgfCBTY2FuX2luZGljIGMgICAgICAgICAgICAgIC0+IHBwX3ByaW50X2NoYXIgcHBmICdAJzsgcHBfcHJpbnRfY2hhciBwcGYgY1xuXG4oKiBSZWN1cnNpdmVseSBvdXRwdXQgYW4gXCJhY2N1bXVsYXRvclwiIGNvbnRhaW5pbmcgYSByZXZlcnNlZCBsaXN0IG9mXG4gICBwcmludGluZyBlbnRpdGllcyAoc3RyaW5nLCBjaGFyLCBmbHVzLCAuLi4pIGluIGFuIG91dHB1dF9zdHJlYW0uICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYub3V0cHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBvdXRwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBvdXRwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgb3V0cHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIG91dHB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIG91dHB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IG91dHB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBvdXRwdXRfYWNjIHBwZiBwOyBmIHBwZjtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gb3V0cHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBvdXRwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqIFJlY3Vyc2l2ZWx5IG91dHB1dCBhbiBcImFjY3VtdWxhdG9yXCIgY29udGFpbmluZyBhIHJldmVyc2VkIGxpc3Qgb2ZcbiAgIHByaW50aW5nIGVudGl0aWVzIChzdHJpbmcsIGNoYXIsIGZsdXMsIC4uLikgaW4gYSBidWZmZXIuICopXG4oKiBEaWZmZXIgZnJvbSBQcmludGYuYnVmcHV0X2FjYyBieSB0aGUgaW50ZXJwcmV0YXRpb24gb2YgZm9ybWF0dGluZy4gKilcbigqIFVzZWQgYXMgYSBjb250aW51YXRpb24gb2YgQ2FtbGludGVybmFsRm9ybWF0Lm1ha2VfcHJpbnRmLiAqKVxubGV0IHJlYyBzdHJwdXRfYWNjIHBwZiBhY2MgPSBtYXRjaCBhY2Mgd2l0aFxuICB8IEFjY19zdHJpbmdfbGl0ZXJhbCAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChBY2NfZm9ybWF0dGluZ19saXQgKHAsIE1hZ2ljX3NpemUgKF8sIHNpemUpKSwgcykgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIHBwX3ByaW50X2FzX3NpemUgcHBmIChTaXplLm9mX2ludCBzaXplKSBzO1xuICB8IEFjY19jaGFyX2xpdGVyYWwgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKEFjY19mb3JtYXR0aW5nX2xpdCAocCwgTWFnaWNfc2l6ZSAoXywgc2l6ZSkpLCBjKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfcHJpbnRfYXNfc2l6ZSBwcGYgKFNpemUub2ZfaW50IHNpemUpIChTdHJpbmcubWFrZSAxIGMpO1xuICB8IEFjY19kZWxheSAoQWNjX2Zvcm1hdHRpbmdfbGl0IChwLCBNYWdpY19zaXplIChfLCBzaXplKSksIGYpIC0+XG4gICAgc3RycHV0X2FjYyBwcGYgcDtcbiAgICBwcF9wcmludF9hc19zaXplIHBwZiAoU2l6ZS5vZl9pbnQgc2l6ZSkgKGYgKCkpO1xuICB8IEFjY19mb3JtYXR0aW5nX2xpdCAocCwgZikgLT5cbiAgICBzdHJwdXRfYWNjIHBwZiBwO1xuICAgIG91dHB1dF9mb3JtYXR0aW5nX2xpdCBwcGYgZjtcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX3RhZyBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgcHBfb3Blbl9zdGFnIHBwZiAoU3RyaW5nX3RhZyAoY29tcHV0ZV90YWcgc3RycHV0X2FjYyBhY2MnKSlcbiAgfCBBY2NfZm9ybWF0dGluZ19nZW4gKHAsIEFjY19vcGVuX2JveCBhY2MnKSAtPlxuICAgIHN0cnB1dF9hY2MgcHBmIHA7XG4gICAgbGV0IChpbmRlbnQsIGJ0eSkgPSBvcGVuX2JveF9vZl9zdHJpbmcgKGNvbXB1dGVfdGFnIHN0cnB1dF9hY2MgYWNjJykgaW5cbiAgICBwcF9vcGVuX2JveF9nZW4gcHBmIGluZGVudCBidHlcbiAgfCBBY2Nfc3RyaW5nX2xpdGVyYWwgKHAsIHMpXG4gIHwgQWNjX2RhdGFfc3RyaW5nIChwLCBzKSAgIC0+IHN0cnB1dF9hY2MgcHBmIHA7IHBwX3ByaW50X3N0cmluZyBwcGYgcztcbiAgfCBBY2NfY2hhcl9saXRlcmFsIChwLCBjKVxuICB8IEFjY19kYXRhX2NoYXIgKHAsIGMpICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9jaGFyIHBwZiBjO1xuICB8IEFjY19kZWxheSAocCwgZikgICAgICAgICAtPiBzdHJwdXRfYWNjIHBwZiBwOyBwcF9wcmludF9zdHJpbmcgcHBmIChmICgpKTtcbiAgfCBBY2NfZmx1c2ggcCAgICAgICAgICAgICAgLT4gc3RycHV0X2FjYyBwcGYgcDsgcHBfcHJpbnRfZmx1c2ggcHBmICgpO1xuICB8IEFjY19pbnZhbGlkX2FyZyAocCwgbXNnKSAtPiBzdHJwdXRfYWNjIHBwZiBwOyBpbnZhbGlkX2FyZyBtc2c7XG4gIHwgRW5kX29mX2FjYyAgICAgICAgICAgICAgIC0+ICgpXG5cbigqXG5cbiAgRGVmaW5pbmcgW2ZwcmludGZdIGFuZCB2YXJpb3VzIGZsYXZvcnMgb2YgW2ZwcmludGZdLlxuXG4qKVxuXG5sZXQga2ZwcmludGYgayBwcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IG91dHB1dF9hY2MgcHBmIGFjYzsgayBwcGYpXG4gICAgRW5kX29mX2FjYyBmbXRcblxuYW5kIGlrZnByaW50ZiBrIHBwZiAoRm9ybWF0IChmbXQsIF8pKSA9XG4gIG1ha2VfaXByaW50ZiBrIHBwZiBmbXRcblxubGV0IGlmcHJpbnRmIF9wcGYgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX2lwcmludGYgaWdub3JlICgpIGZtdFxuXG5sZXQgZnByaW50ZiBwcGYgPSBrZnByaW50ZiBpZ25vcmUgcHBmXG5sZXQgcHJpbnRmIGZtdCA9IGZwcmludGYgc3RkX2Zvcm1hdHRlciBmbXRcbmxldCBlcHJpbnRmIGZtdCA9IGZwcmludGYgZXJyX2Zvcm1hdHRlciBmbXRcblxubGV0IGtkcHJpbnRmIGsgKEZvcm1hdCAoZm10LCBfKSkgPVxuICBtYWtlX3ByaW50ZlxuICAgIChmdW4gYWNjIC0+IGsgKGZ1biBwcGYgLT4gb3V0cHV0X2FjYyBwcGYgYWNjKSlcbiAgICBFbmRfb2ZfYWNjIGZtdFxuXG5sZXQgZHByaW50ZiBmbXQgPSBrZHByaW50ZiAoZnVuIGkgLT4gaSkgZm10XG5cbmxldCBrc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgc3RycHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgc3ByaW50ZiBmbXQgPSBrc3ByaW50ZiBpZCBmbXRcblxubGV0IGthc3ByaW50ZiBrIChGb3JtYXQgKGZtdCwgXykpID1cbiAgbGV0IGIgPSBwcF9tYWtlX2J1ZmZlciAoKSBpblxuICBsZXQgcHBmID0gZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gIGxldCBrIGFjYyA9XG4gICAgb3V0cHV0X2FjYyBwcGYgYWNjO1xuICAgIGsgKGZsdXNoX2J1ZmZlcl9mb3JtYXR0ZXIgYiBwcGYpIGluXG4gIG1ha2VfcHJpbnRmIGsgRW5kX29mX2FjYyBmbXRcblxuXG5sZXQgYXNwcmludGYgZm10ID0ga2FzcHJpbnRmIGlkIGZtdFxuXG4oKiBGbHVzaGluZyBzdGFuZGFyZCBmb3JtYXR0ZXJzIGF0IGVuZCBvZiBleGVjdXRpb24uICopXG5cbmxldCBmbHVzaF9zdGFuZGFyZF9mb3JtYXR0ZXJzICgpID1cbiAgcHBfcHJpbnRfZmx1c2ggc3RkX2Zvcm1hdHRlciAoKTtcbiAgcHBfcHJpbnRfZmx1c2ggZXJyX2Zvcm1hdHRlciAoKVxuXG5sZXQgKCkgPSBhdF9leGl0IGZsdXNoX3N0YW5kYXJkX2Zvcm1hdHRlcnNcblxuKCpcblxuICBEZXByZWNhdGVkIHN0dWZmLlxuXG4qKVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZVxuICAgIH5vdXQ6ZiB+Zmx1c2g6ZyB+bmV3bGluZTpoIH5zcGFjZXM6aSA9XG4gIHBwX3NldF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSBmIGc7XG4gIHN0YXRlLnBwX291dF9uZXdsaW5lIDwtIGg7XG4gIHN0YXRlLnBwX291dF9zcGFjZXMgPC0gaVxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgcHBfZ2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGF0ZSAoKSA9XG4gIChzdGF0ZS5wcF9vdXRfc3RyaW5nLCBzdGF0ZS5wcF9vdXRfZmx1c2gsXG4gICBzdGF0ZS5wcF9vdXRfbmV3bGluZSwgc3RhdGUucHBfb3V0X3NwYWNlcylcblxuXG4oKiBEZXByZWNhdGVkIDogc3Vic3VtZWQgYnkgc2V0X2Zvcm1hdHRlcl9vdXRfZnVuY3Rpb25zICopXG5sZXQgc2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyA9XG4gIHBwX3NldF9hbGxfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuXG5cbigqIERlcHJlY2F0ZWQgOiBzdWJzdW1lZCBieSBnZXRfZm9ybWF0dGVyX291dF9mdW5jdGlvbnMgKilcbmxldCBnZXRfYWxsX2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zID1cbiAgcHBfZ2V0X2FsbF9mb3JtYXR0ZXJfb3V0cHV0X2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG5cblxuKCogRGVwcmVjYXRlZCA6IGVycm9yIHByb25lIGZ1bmN0aW9uLCBkbyBub3QgdXNlIGl0LlxuICAgVGhpcyBmdW5jdGlvbiBpcyBuZWl0aGVyIGNvbXBvc2l0aW9uYWwgbm9yIGluY3JlbWVudGFsLCBzaW5jZSBpdCBmbHVzaGVzXG4gICB0aGUgcHJldHR5LXByaW50ZXIgcXVldWUgYXQgZWFjaCBjYWxsLlxuICAgVG8gZ2V0IHRoZSBzYW1lIGZ1bmN0aW9uYWxpdHksIGRlZmluZSBhIGZvcm1hdHRlciBvZiB5b3VyIG93biB3cml0aW5nIHRvXG4gICB0aGUgYnVmZmVyIGFyZ3VtZW50LCBhcyBpblxuICAgbGV0IHBwZiA9IGZvcm1hdHRlcl9vZl9idWZmZXIgYlxuICAgdGhlbiB1c2UgeyFmcHJpbnRmIHBwZn0gYXMgdXN1YWwuICopXG5sZXQgYnByaW50ZiBiIChGb3JtYXQgKGZtdCwgXykgOiAoJ2EsIGZvcm1hdHRlciwgdW5pdCkgZm9ybWF0KSA9XG4gIGxldCBwcGYgPSBmb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IGsgYWNjID0gb3V0cHV0X2FjYyBwcGYgYWNjOyBwcF9mbHVzaF9xdWV1ZSBwcGYgZmFsc2UgaW5cbiAgbWFrZV9wcmludGYgayBFbmRfb2ZfYWNjIGZtdFxuXG5cbigqIERlcHJlY2F0ZWQgOiBhbGlhcyBmb3Iga3NwcmludGYuICopXG5sZXQga3ByaW50ZiA9IGtzcHJpbnRmXG5cblxuXG4oKiBEZXByZWNhdGVkIHRhZyBmdW5jdGlvbnMgKilcblxudHlwZSBmb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9IHtcbiAgbWFya19vcGVuX3RhZyA6IHRhZyAtPiBzdHJpbmc7XG4gIG1hcmtfY2xvc2VfdGFnIDogdGFnIC0+IHN0cmluZztcbiAgcHJpbnRfb3Blbl90YWcgOiB0YWcgLT4gdW5pdDtcbiAgcHJpbnRfY2xvc2VfdGFnIDogdGFnIC0+IHVuaXQ7XG59XG5cblxubGV0IHBwX3NldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGF0ZSB7XG4gICAgIG1hcmtfb3Blbl90YWcgPSBtb3Q7XG4gICAgIG1hcmtfY2xvc2VfdGFnID0gbWN0O1xuICAgICBwcmludF9vcGVuX3RhZyA9IHBvdDtcbiAgICAgcHJpbnRfY2xvc2VfdGFnID0gcGN0O1xuICAgfSA9XG4gIGxldCBzdHJpbmdpZnkgZiBlID0gZnVuY3Rpb24gU3RyaW5nX3RhZyBzIC0+IGYgcyB8IF8gLT4gZSBpblxuICBzdGF0ZS5wcF9tYXJrX29wZW5fdGFnIDwtIHN0cmluZ2lmeSBtb3QgXCJcIjtcbiAgc3RhdGUucHBfbWFya19jbG9zZV90YWcgPC0gc3RyaW5naWZ5IG1jdCBcIlwiO1xuICBzdGF0ZS5wcF9wcmludF9vcGVuX3RhZyA8LSBzdHJpbmdpZnkgcG90ICgpO1xuICBzdGF0ZS5wcF9wcmludF9jbG9zZV90YWcgPC0gc3RyaW5naWZ5IHBjdCAoKVxuXG5sZXQgcHBfZ2V0X2Zvcm1hdHRlcl90YWdfZnVuY3Rpb25zIGZtdCAoKSA9XG4gIGxldCBmdW5zID0gcHBfZ2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgKCkgaW5cbiAgbGV0IG1hcmtfb3Blbl90YWcgcyA9IGZ1bnMubWFya19vcGVuX3N0YWcgKFN0cmluZ190YWcgcykgaW5cbiAgbGV0IG1hcmtfY2xvc2VfdGFnIHMgPSBmdW5zLm1hcmtfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICBsZXQgcHJpbnRfb3Blbl90YWcgcyA9IGZ1bnMucHJpbnRfb3Blbl9zdGFnIChTdHJpbmdfdGFnIHMpIGluXG4gIGxldCBwcmludF9jbG9zZV90YWcgcyA9IGZ1bnMucHJpbnRfY2xvc2Vfc3RhZyAoU3RyaW5nX3RhZyBzKSBpblxuICB7bWFya19vcGVuX3RhZzsgbWFya19jbG9zZV90YWc7IHByaW50X29wZW5fdGFnOyBwcmludF9jbG9zZV90YWd9XG5cbmxldCBzZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgPVxuICBwcF9zZXRfZm9ybWF0dGVyX3RhZ19mdW5jdGlvbnMgc3RkX2Zvcm1hdHRlclxuYW5kIGdldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyA9XG4gIHBwX2dldF9mb3JtYXR0ZXJfdGFnX2Z1bmN0aW9ucyBzdGRfZm9ybWF0dGVyXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICBQaWVycmUgV2VpcywgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAyMDAyIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ2FtbGludGVybmFsRm9ybWF0QmFzaWNzXG5vcGVuIENhbWxpbnRlcm5hbEZvcm1hdFxuXG4oKiBhbGlhcyB0byBhdm9pZCB3YXJuaW5nIGZvciBhbWJpZ3VpdHkgYmV0d2VlblxuICAgU3RkbGliLmZvcm1hdDZcbiAgIGFuZCBDYW1saW50ZXJuYWxGb3JtYXRCYXNpY3MuZm9ybWF0NlxuXG4gICAodGhlIGZvcm1lciBpcyBpbiBmYWN0IGFuIGFsaWFzIGZvciB0aGUgbGF0dGVyLFxuICAgIGJ1dCB0aGUgYW1iaWd1aXR5IHdhcm5pbmcgZG9lc24ndCBjYXJlKVxuKilcbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgPVxuICAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgU3RkbGliLmZvcm1hdDZcblxuXG4oKiBUaGUgcnVuLXRpbWUgbGlicmFyeSBmb3Igc2Nhbm5lcnMuICopXG5cbigqIFNjYW5uaW5nIGJ1ZmZlcnMuICopXG5tb2R1bGUgdHlwZSBTQ0FOTklORyA9IHNpZ1xuXG4gIHR5cGUgaW5fY2hhbm5lbFxuXG4gIHR5cGUgc2NhbmJ1ZiA9IGluX2NoYW5uZWxcblxuICB0eXBlIGZpbGVfbmFtZSA9IHN0cmluZ1xuXG4gIHZhbCBzdGRpbiA6IGluX2NoYW5uZWxcbiAgKCogVGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb20gW1N0ZGxpYi5zdGRpbl0uXG4gICAgIFtzdGRpYl0gaXMgZXF1aXZhbGVudCB0byBbU2Nhbm5pbmcuZnJvbV9jaGFubmVsIFN0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIHN0ZGliIDogaW5fY2hhbm5lbFxuICAoKiBBbiBhbGlhcyBmb3IgW1NjYW5mLnN0ZGluXSwgdGhlIHNjYW5uaW5nIGJ1ZmZlciByZWFkaW5nIGZyb21cbiAgICAgW1N0ZGxpYi5zdGRpbl0uICopXG5cbiAgdmFsIG5leHRfY2hhciA6IHNjYW5idWYgLT4gY2hhclxuICAoKiBbU2Nhbm5pbmcubmV4dF9jaGFyIGliXSBhZHZhbmNlIHRoZSBzY2FubmluZyBidWZmZXIgZm9yXG4gICAgIG9uZSBjaGFyYWN0ZXIuXG4gICAgIElmIG5vIG1vcmUgY2hhcmFjdGVyIGNhbiBiZSByZWFkLCBzZXRzIGEgZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGludmFsaWRhdGVfY3VycmVudF9jaGFyIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYl0gbWFyayB0aGUgY3VycmVudF9jaGFyIGFzIGFscmVhZHlcbiAgICAgc2Nhbm5lZC4gKilcblxuICB2YWwgcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFtTY2FubmluZy5wZWVrX2NoYXIgaWJdIHJldHVybnMgdGhlIGN1cnJlbnQgY2hhciBhdmFpbGFibGUgaW5cbiAgICAgdGhlIGJ1ZmZlciBvciByZWFkcyBvbmUgaWYgbmVjZXNzYXJ5ICh3aGVuIHRoZSBjdXJyZW50IGNoYXJhY3RlciBpc1xuICAgICBhbHJlYWR5IHNjYW5uZWQpLlxuICAgICBJZiBubyBjaGFyYWN0ZXIgY2FuIGJlIHJlYWQsIHNldHMgYW4gZW5kIG9mIGZpbGUgY29uZGl0aW9uIGFuZFxuICAgICByZXR1cm5zICdcXDAwMCcuICopXG5cbiAgdmFsIGNoZWNrZWRfcGVla19jaGFyIDogc2NhbmJ1ZiAtPiBjaGFyXG4gICgqIFNhbWUgYXMgW1NjYW5uaW5nLnBlZWtfY2hhcl0gYWJvdmUgYnV0IGFsd2F5cyByZXR1cm5zIGEgdmFsaWQgY2hhciBvclxuICAgICBmYWlsczogaW5zdGVhZCBvZiByZXR1cm5pbmcgYSBudWxsIGNoYXIgd2hlbiB0aGUgcmVhZGluZyBtZXRob2Qgb2YgdGhlXG4gICAgIGlucHV0IGJ1ZmZlciBoYXMgcmVhY2hlZCBhbiBlbmQgb2YgZmlsZSwgdGhlIGZ1bmN0aW9uIHJhaXNlcyBleGNlcHRpb25cbiAgICAgW0VuZF9vZl9maWxlXS4gKilcblxuICB2YWwgc3RvcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGNoYXIgLT4gaW50XG4gICgqIFtTY2FubmluZy5zdG9yZV9jaGFyIGxpbSBpYiBjXSBhZGRzIFtjXSB0byB0aGUgdG9rZW4gYnVmZmVyXG4gICAgIG9mIHRoZSBzY2FubmluZyBidWZmZXIgW2liXS4gSXQgYWxzbyBhZHZhbmNlcyB0aGUgc2Nhbm5pbmcgYnVmZmVyIGZvclxuICAgICBvbmUgY2hhcmFjdGVyIGFuZCByZXR1cm5zIFtsaW0gLSAxXSwgaW5kaWNhdGluZyB0aGUgbmV3IGxpbWl0IGZvciB0aGVcbiAgICAgbGVuZ3RoIG9mIHRoZSBjdXJyZW50IHRva2VuLiAqKVxuXG4gIHZhbCBza2lwX2NoYXIgOiBpbnQgLT4gc2NhbmJ1ZiAtPiBpbnRcbiAgKCogW1NjYW5uaW5nLnNraXBfY2hhciBsaW0gaWJdIGlnbm9yZXMgdGhlIGN1cnJlbnQgY2hhcmFjdGVyLiAqKVxuXG4gIHZhbCBpZ25vcmVfY2hhciA6IGludCAtPiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcuaWdub3JlX2NoYXIgaWIgbGltXSBpZ25vcmVzIHRoZSBjdXJyZW50IGNoYXJhY3RlciBhbmRcbiAgICAgZGVjcmVtZW50cyB0aGUgbGltaXQuICopXG5cbiAgdmFsIHRva2VuIDogc2NhbmJ1ZiAtPiBzdHJpbmdcbiAgKCogW1NjYW5uaW5nLnRva2VuIGliXSByZXR1cm5zIHRoZSBzdHJpbmcgc3RvcmVkIGludG8gdGhlIHRva2VuXG4gICAgIGJ1ZmZlciBvZiB0aGUgc2Nhbm5pbmcgYnVmZmVyOiBpdCByZXR1cm5zIHRoZSB0b2tlbiBtYXRjaGVkIGJ5IHRoZVxuICAgICBmb3JtYXQuICopXG5cbiAgdmFsIHJlc2V0X3Rva2VuIDogc2NhbmJ1ZiAtPiB1bml0XG4gICgqIFtTY2FubmluZy5yZXNldF90b2tlbiBpYl0gcmVzZXRzIHRoZSB0b2tlbiBidWZmZXIgb2ZcbiAgICAgdGhlIGdpdmVuIHNjYW5uaW5nIGJ1ZmZlci4gKilcblxuICB2YWwgY2hhcl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy5jaGFyX2NvdW50IGliXSByZXR1cm5zIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVyc1xuICAgICByZWFkIHNvIGZhciBmcm9tIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGxpbmVfY291bnQgOiBzY2FuYnVmIC0+IGludFxuICAoKiBbU2Nhbm5pbmcubGluZV9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG5ldyBsaW5lXG4gICAgIGNoYXJhY3RlcnMgcmVhZCBzbyBmYXIgZnJvbSB0aGUgZ2l2ZW4gYnVmZmVyLiAqKVxuXG4gIHZhbCB0b2tlbl9jb3VudCA6IHNjYW5idWYgLT4gaW50XG4gICgqIFtTY2FubmluZy50b2tlbl9jb3VudCBpYl0gcmV0dXJucyB0aGUgbnVtYmVyIG9mIHRva2VucyByZWFkXG4gICAgIHNvIGZhciBmcm9tIFtpYl0uICopXG5cbiAgdmFsIGVvZiA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW9mIGliXSByZXR1cm5zIHRoZSBlbmQgb2YgaW5wdXQgY29uZGl0aW9uXG4gICAgIG9mIHRoZSBnaXZlbiBidWZmZXIuICopXG5cbiAgdmFsIGVuZF9vZl9pbnB1dCA6IHNjYW5idWYgLT4gYm9vbFxuICAoKiBbU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliXSB0ZXN0cyB0aGUgZW5kIG9mIGlucHV0IGNvbmRpdGlvblxuICAgICBvZiB0aGUgZ2l2ZW4gYnVmZmVyIChpZiBubyBjaGFyIGhhcyBldmVyIGJlZW4gcmVhZCwgYW4gYXR0ZW1wdCB0b1xuICAgICByZWFkIG9uZSBpcyBwZXJmb3JtZWQpLiAqKVxuXG4gIHZhbCBiZWdpbm5pbmdfb2ZfaW5wdXQgOiBzY2FuYnVmIC0+IGJvb2xcbiAgKCogW1NjYW5uaW5nLmJlZ2lubmluZ19vZl9pbnB1dCBpYl0gdGVzdHMgdGhlIGJlZ2lubmluZyBvZiBpbnB1dFxuICAgICBjb25kaXRpb24gb2YgdGhlIGdpdmVuIGJ1ZmZlci4gKilcblxuICB2YWwgbmFtZV9vZl9pbnB1dCA6IHNjYW5idWYgLT4gc3RyaW5nXG4gICgqIFtTY2FubmluZy5uYW1lX29mX2lucHV0IGliXSByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBjaGFyYWN0ZXJcbiAgICAgc291cmNlIGZvciBpbnB1dCBidWZmZXIgW2liXS4gKilcblxuICB2YWwgb3Blbl9pbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBvcGVuX2luX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2ZpbGUgOiBmaWxlX25hbWUgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9maWxlX2JpbiA6IGZpbGVfbmFtZSAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX3N0cmluZyA6IHN0cmluZyAtPiBpbl9jaGFubmVsXG4gIHZhbCBmcm9tX2Z1bmN0aW9uIDogKHVuaXQgLT4gY2hhcikgLT4gaW5fY2hhbm5lbFxuICB2YWwgZnJvbV9jaGFubmVsIDogU3RkbGliLmluX2NoYW5uZWwgLT4gaW5fY2hhbm5lbFxuXG4gIHZhbCBjbG9zZV9pbiA6IGluX2NoYW5uZWwgLT4gdW5pdFxuXG4gIHZhbCBtZW1vX2Zyb21fY2hhbm5lbCA6IFN0ZGxpYi5pbl9jaGFubmVsIC0+IGluX2NoYW5uZWxcbiAgKCogT2Jzb2xldGUuICopXG5cbmVuZFxuXG5cbm1vZHVsZSBTY2FubmluZyA6IFNDQU5OSU5HID0gc3RydWN0XG5cbiAgKCogVGhlIHJ1bi10aW1lIGxpYnJhcnkgZm9yIHNjYW5mLiAqKVxuXG4gIHR5cGUgZmlsZV9uYW1lID0gc3RyaW5nXG5cbiAgdHlwZSBpbl9jaGFubmVsX25hbWUgPVxuICAgIHwgRnJvbV9jaGFubmVsIG9mIFN0ZGxpYi5pbl9jaGFubmVsXG4gICAgfCBGcm9tX2ZpbGUgb2YgZmlsZV9uYW1lICogU3RkbGliLmluX2NoYW5uZWxcbiAgICB8IEZyb21fZnVuY3Rpb25cbiAgICB8IEZyb21fc3RyaW5nXG5cblxuICB0eXBlIGluX2NoYW5uZWwgPSB7XG4gICAgbXV0YWJsZSBpY19lb2YgOiBib29sO1xuICAgIG11dGFibGUgaWNfY3VycmVudF9jaGFyIDogY2hhcjtcbiAgICBtdXRhYmxlIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA6IGJvb2w7XG4gICAgbXV0YWJsZSBpY19jaGFyX2NvdW50IDogaW50O1xuICAgIG11dGFibGUgaWNfbGluZV9jb3VudCA6IGludDtcbiAgICBtdXRhYmxlIGljX3Rva2VuX2NvdW50IDogaW50O1xuICAgIGljX2dldF9uZXh0X2NoYXIgOiB1bml0IC0+IGNoYXI7XG4gICAgaWNfdG9rZW5fYnVmZmVyIDogQnVmZmVyLnQ7XG4gICAgaWNfaW5wdXRfbmFtZSA6IGluX2NoYW5uZWxfbmFtZTtcbiAgfVxuXG5cbiAgdHlwZSBzY2FuYnVmID0gaW5fY2hhbm5lbFxuXG4gIGxldCBudWxsX2NoYXIgPSAnXFwwMDAnXG5cbiAgKCogUmVhZHMgYSBuZXcgY2hhcmFjdGVyIGZyb20gaW5wdXQgYnVmZmVyLlxuICAgICBOZXh0X2NoYXIgbmV2ZXIgZmFpbHMsIGV2ZW4gaW4gY2FzZSBvZiBlbmQgb2YgaW5wdXQ6XG4gICAgIGl0IHRoZW4gc2ltcGx5IHNldHMgdGhlIGVuZCBvZiBmaWxlIGNvbmRpdGlvbi4gKilcbiAgbGV0IG5leHRfY2hhciBpYiA9XG4gICAgdHJ5XG4gICAgICBsZXQgYyA9IGliLmljX2dldF9uZXh0X2NoYXIgKCkgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIHRydWU7XG4gICAgICBpYi5pY19jaGFyX2NvdW50IDwtIHN1Y2MgaWIuaWNfY2hhcl9jb3VudDtcbiAgICAgIGlmIGMgPSAnXFxuJyB0aGVuIGliLmljX2xpbmVfY291bnQgPC0gc3VjYyBpYi5pY19saW5lX2NvdW50O1xuICAgICAgYyB3aXRoXG4gICAgfCBFbmRfb2ZfZmlsZSAtPlxuICAgICAgbGV0IGMgPSBudWxsX2NoYXIgaW5cbiAgICAgIGliLmljX2N1cnJlbnRfY2hhciA8LSBjO1xuICAgICAgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkIDwtIGZhbHNlO1xuICAgICAgaWIuaWNfZW9mIDwtIHRydWU7XG4gICAgICBjXG5cblxuICBsZXQgcGVla19jaGFyIGliID1cbiAgICBpZiBpYi5pY19jdXJyZW50X2NoYXJfaXNfdmFsaWRcbiAgICB0aGVuIGliLmljX2N1cnJlbnRfY2hhclxuICAgIGVsc2UgbmV4dF9jaGFyIGliXG5cblxuICAoKiBSZXR1cm5zIGEgdmFsaWQgY3VycmVudCBjaGFyIGZvciB0aGUgaW5wdXQgYnVmZmVyLiBJbiBwYXJ0aWN1bGFyXG4gICAgIG5vIGlycmVsZXZhbnQgbnVsbCBjaGFyYWN0ZXIgKGFzIHNldCBieSBbbmV4dF9jaGFyXSBpbiBjYXNlIG9mIGVuZFxuICAgICBvZiBpbnB1dCkgaXMgcmV0dXJuZWQsIHNpbmNlIFtFbmRfb2ZfZmlsZV0gaXMgcmFpc2VkIHdoZW5cbiAgICAgW25leHRfY2hhcl0gc2V0cyB0aGUgZW5kIG9mIGZpbGUgY29uZGl0aW9uIHdoaWxlIHRyeWluZyB0byByZWFkIGFcbiAgICAgbmV3IGNoYXJhY3Rlci4gKilcbiAgbGV0IGNoZWNrZWRfcGVla19jaGFyIGliID1cbiAgICBsZXQgYyA9IHBlZWtfY2hhciBpYiBpblxuICAgIGlmIGliLmljX2VvZiB0aGVuIHJhaXNlIEVuZF9vZl9maWxlO1xuICAgIGNcblxuXG4gIGxldCBlbmRfb2ZfaW5wdXQgaWIgPVxuICAgIGlnbm9yZSAocGVla19jaGFyIGliKTtcbiAgICBpYi5pY19lb2ZcblxuXG4gIGxldCBlb2YgaWIgPSBpYi5pY19lb2ZcblxuICBsZXQgYmVnaW5uaW5nX29mX2lucHV0IGliID0gaWIuaWNfY2hhcl9jb3VudCA9IDBcblxuICBsZXQgbmFtZV9vZl9pbnB1dCBpYiA9XG4gICAgbWF0Y2ggaWIuaWNfaW5wdXRfbmFtZSB3aXRoXG4gICAgfCBGcm9tX2NoYW5uZWwgX2ljIC0+IFwidW5uYW1lZCBTdGRsaWIgaW5wdXQgY2hhbm5lbFwiXG4gICAgfCBGcm9tX2ZpbGUgKGZuYW1lLCBfaWMpIC0+IGZuYW1lXG4gICAgfCBGcm9tX2Z1bmN0aW9uIC0+IFwidW5uYW1lZCBmdW5jdGlvblwiXG4gICAgfCBGcm9tX3N0cmluZyAtPiBcInVubmFtZWQgY2hhcmFjdGVyIHN0cmluZ1wiXG5cblxuICBsZXQgY2hhcl9jb3VudCBpYiA9XG4gICAgaWYgaWIuaWNfY3VycmVudF9jaGFyX2lzX3ZhbGlkXG4gICAgdGhlbiBpYi5pY19jaGFyX2NvdW50IC0gMVxuICAgIGVsc2UgaWIuaWNfY2hhcl9jb3VudFxuXG5cbiAgbGV0IGxpbmVfY291bnQgaWIgPSBpYi5pY19saW5lX2NvdW50XG5cbiAgbGV0IHJlc2V0X3Rva2VuIGliID0gQnVmZmVyLnJlc2V0IGliLmljX3Rva2VuX2J1ZmZlclxuXG4gIGxldCBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiA9IGliLmljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA8LSBmYWxzZVxuXG4gIGxldCB0b2tlbiBpYiA9XG4gICAgbGV0IHRva2VuX2J1ZmZlciA9IGliLmljX3Rva2VuX2J1ZmZlciBpblxuICAgIGxldCB0b2sgPSBCdWZmZXIuY29udGVudHMgdG9rZW5fYnVmZmVyIGluXG4gICAgQnVmZmVyLmNsZWFyIHRva2VuX2J1ZmZlcjtcbiAgICBpYi5pY190b2tlbl9jb3VudCA8LSBzdWNjIGliLmljX3Rva2VuX2NvdW50O1xuICAgIHRva1xuXG5cbiAgbGV0IHRva2VuX2NvdW50IGliID0gaWIuaWNfdG9rZW5fY291bnRcblxuICBsZXQgc2tpcF9jaGFyIHdpZHRoIGliID1cbiAgICBpbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjtcbiAgICB3aWR0aFxuXG5cbiAgbGV0IGlnbm9yZV9jaGFyIHdpZHRoIGliID0gc2tpcF9jaGFyICh3aWR0aCAtIDEpIGliXG5cbiAgbGV0IHN0b3JlX2NoYXIgd2lkdGggaWIgYyA9XG4gICAgQnVmZmVyLmFkZF9jaGFyIGliLmljX3Rva2VuX2J1ZmZlciBjO1xuICAgIGlnbm9yZV9jaGFyIHdpZHRoIGliXG5cblxuICBsZXQgZGVmYXVsdF90b2tlbl9idWZmZXJfc2l6ZSA9IDEwMjRcblxuICBsZXQgY3JlYXRlIGluYW1lIG5leHQgPSB7XG4gICAgaWNfZW9mID0gZmFsc2U7XG4gICAgaWNfY3VycmVudF9jaGFyID0gbnVsbF9jaGFyO1xuICAgIGljX2N1cnJlbnRfY2hhcl9pc192YWxpZCA9IGZhbHNlO1xuICAgIGljX2NoYXJfY291bnQgPSAwO1xuICAgIGljX2xpbmVfY291bnQgPSAwO1xuICAgIGljX3Rva2VuX2NvdW50ID0gMDtcbiAgICBpY19nZXRfbmV4dF9jaGFyID0gbmV4dDtcbiAgICBpY190b2tlbl9idWZmZXIgPSBCdWZmZXIuY3JlYXRlIGRlZmF1bHRfdG9rZW5fYnVmZmVyX3NpemU7XG4gICAgaWNfaW5wdXRfbmFtZSA9IGluYW1lO1xuICB9XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgcyA9XG4gICAgbGV0IGkgPSByZWYgMCBpblxuICAgIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgbmV4dCAoKSA9XG4gICAgICBpZiAhaSA+PSBsZW4gdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlXG4gICAgICBsZXQgYyA9IHMuWyFpXSBpblxuICAgICAgaW5jciBpO1xuICAgICAgYyBpblxuICAgIGNyZWF0ZSBGcm9tX3N0cmluZyBuZXh0XG5cblxuICBsZXQgZnJvbV9mdW5jdGlvbiA9IGNyZWF0ZSBGcm9tX2Z1bmN0aW9uXG5cbiAgKCogU2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsLiAqKVxuXG4gICgqIFBvc2l0aW9uIG9mIHRoZSBwcm9ibGVtOlxuXG4gICAgIFdlIGNhbm5vdCBwcmV2ZW50IHRoZSBzY2FubmluZyBtZWNoYW5pc20gdG8gdXNlIG9uZSBsb29rYWhlYWQgY2hhcmFjdGVyLFxuICAgICBpZiBuZWVkZWQgYnkgdGhlIHNlbWFudGljcyBvZiB0aGUgZm9ybWF0IHN0cmluZyBzcGVjaWZpY2F0aW9ucyAoZS5nLiBhXG4gICAgIHRyYWlsaW5nICdza2lwIHNwYWNlJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBmb3JtYXQgc3RyaW5nKTsgaW4gdGhpcyBjYXNlLFxuICAgICB0aGUgbWFuZGF0b3J5IGxvb2thaGVhZCBjaGFyYWN0ZXIgaXMgaW5kZWVkIHJlYWQgZnJvbSB0aGUgaW5wdXQgYW5kIG5vdFxuICAgICB1c2VkIHRvIHJldHVybiB0aGUgdG9rZW4gcmVhZC4gSXQgaXMgdGh1cyBtYW5kYXRvcnkgdG8gYmUgYWJsZSB0byBzdG9yZVxuICAgICBhbiB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBzb21ld2hlcmUgdG8gZ2V0IGl0IGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAgICAgb2YgdGhlIG5leHQgc2Nhbi5cblxuICAgICBUbyBjaXJjdW12ZW50IHRoaXMgcHJvYmxlbSwgYWxsIHRoZSBzY2FubmluZyBmdW5jdGlvbnMgZ2V0IGEgbG93IGxldmVsXG4gICAgIGlucHV0IGJ1ZmZlciBhcmd1bWVudCB3aGVyZSB0aGV5IHN0b3JlIHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyIHdoZW5cbiAgICAgbmVlZGVkOyBhZGRpdGlvbmFsbHksIHRoZSBpbnB1dCBidWZmZXIgaXMgdGhlIG9ubHkgc291cmNlIG9mIGNoYXJhY3RlciBvZlxuICAgICBhIHNjYW5uZXIuIFRoZSBbc2NhbmJ1Zl0gaW5wdXQgYnVmZmVycyBhcmUgZGVmaW5lZCBpbiBtb2R1bGUgeyFTY2FubmluZ30uXG5cbiAgICAgTm93IHdlIHVuZGVyc3RhbmQgdGhhdCBpdCBpcyBleHRyZW1lbHkgaW1wb3J0YW50IHRoYXQgcmVsYXRlZCBhbmRcbiAgICAgc3VjY2Vzc2l2ZSBjYWxscyB0byBzY2FubmVycyBpbmRlZWQgcmVhZCBmcm9tIHRoZSBzYW1lIGlucHV0IGJ1ZmZlci5cbiAgICAgSW4gZWZmZWN0LCBpZiBhIHNjYW5uZXIgW3NjYW4xXSBpcyByZWFkaW5nIGZyb20gW2liMV0gYW5kIHN0b3JlcyBhblxuICAgICB1bnVzZWQgbG9va2FoZWFkIGNoYXJhY3RlciBbYzFdIGludG8gaXRzIGlucHV0IGJ1ZmZlciBbaWIxXSwgdGhlblxuICAgICBhbm90aGVyIHNjYW5uZXIgW3NjYW4yXSBub3QgcmVhZGluZyBmcm9tIHRoZSBzYW1lIGJ1ZmZlciBbaWIxXSB3aWxsIG1pc3NcbiAgICAgdGhlIGNoYXJhY3RlciBbYzFdLCBzZWVtaW5nbHkgdmFuaXNoZWQgaW4gdGhlIGFpciBmcm9tIHRoZSBwb2ludCBvZiB2aWV3XG4gICAgIG9mIFtzY2FuMl0uXG5cbiAgICAgVGhpcyBtZWNoYW5pc20gd29ya3MgcGVyZmVjdGx5IHRvIHJlYWQgZnJvbSBzdHJpbmdzLCBmcm9tIGZpbGVzLCBhbmQgZnJvbVxuICAgICBmdW5jdGlvbnMsIHNpbmNlIGluIHRob3NlIGNhc2VzLCBhbGxvY2F0aW5nIHR3byBidWZmZXJzIHJlYWRpbmcgZnJvbSB0aGVcbiAgICAgc2FtZSBzb3VyY2UgaXMgdW5uYXR1cmFsLlxuXG4gICAgIFN0aWxsLCB0aGVyZSBpcyBhIGRpZmZpY3VsdHkgaW4gdGhlIGNhc2Ugb2Ygc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dFxuICAgICBjaGFubmVsLiBJbiBlZmZlY3QsIHdoZW4gc2Nhbm5pbmcgZnJvbSBhbiBpbnB1dCBjaGFubmVsIFtpY10sIHRoaXMgY2hhbm5lbFxuICAgICBtYXkgbm90IGhhdmUgYmVlbiBhbGxvY2F0ZWQgZnJvbSB3aXRoaW4gdGhpcyBsaWJyYXJ5LiBIZW5jZSwgaXQgbWF5IGJlXG4gICAgIHNoYXJlZCAodHdvIGZ1bmN0aW9ucyBvZiB0aGUgdXNlcidzIHByb2dyYW0gbWF5IHN1Y2Nlc3NpdmVseSByZWFkIGZyb21cbiAgICAgW2ljXSkuIFRoaXMgaXMgaGlnaGx5IGVycm9yIHByb25lIHNpbmNlLCBvbmUgb2YgdGhlIGZ1bmN0aW9uIG1heSBzZWVrIHRoZVxuICAgICBpbnB1dCBjaGFubmVsLCB3aGlsZSB0aGUgb3RoZXIgZnVuY3Rpb24gaGFzIHN0aWxsIGFuIHVudXNlZCBsb29rYWhlYWRcbiAgICAgY2hhcmFjdGVyIGluIGl0cyBpbnB1dCBidWZmZXIuIEluIGNvbmNsdXNpb24sIHlvdSBzaG91bGQgbmV2ZXIgbWl4IGRpcmVjdFxuICAgICBsb3cgbGV2ZWwgcmVhZGluZyBhbmQgaGlnaCBsZXZlbCBzY2FubmluZyBmcm9tIHRoZSBzYW1lIGlucHV0IGNoYW5uZWwuXG5cbiAgKilcblxuICAoKiBQZXJmb3JtIGJ1ZmZlcml6ZWQgaW5wdXQgdG8gaW1wcm92ZSBlZmZpY2llbmN5LiAqKVxuICBsZXQgZmlsZV9idWZmZXJfc2l6ZSA9IHJlZiAxMDI0XG5cbiAgKCogVGhlIHNjYW5uZXIgY2xvc2VzIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dC4gKilcbiAgbGV0IHNjYW5fY2xvc2VfYXRfZW5kIGljID0gU3RkbGliLmNsb3NlX2luIGljOyByYWlzZSBFbmRfb2ZfZmlsZVxuXG4gICgqIFRoZSBzY2FubmVyIGRvZXMgbm90IGNsb3NlIHRoZSBpbnB1dCBjaGFubmVsIGF0IGVuZCBvZiBpbnB1dDpcbiAgICAgaXQganVzdCByYWlzZXMgW0VuZF9vZl9maWxlXS4gKilcbiAgbGV0IHNjYW5fcmFpc2VfYXRfZW5kIF9pYyA9IHJhaXNlIEVuZF9vZl9maWxlXG5cbiAgbGV0IGZyb21faWMgc2Nhbl9jbG9zZV9pYyBpbmFtZSBpYyA9XG4gICAgbGV0IGxlbiA9ICFmaWxlX2J1ZmZlcl9zaXplIGluXG4gICAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgICBsZXQgaSA9IHJlZiAwIGluXG4gICAgbGV0IGxpbSA9IHJlZiAwIGluXG4gICAgbGV0IGVvZiA9IHJlZiBmYWxzZSBpblxuICAgIGxldCBuZXh0ICgpID1cbiAgICAgIGlmICFpIDwgIWxpbSB0aGVuIGJlZ2luIGxldCBjID0gQnl0ZXMuZ2V0IGJ1ZiAhaSBpbiBpbmNyIGk7IGMgZW5kIGVsc2VcbiAgICAgIGlmICFlb2YgdGhlbiByYWlzZSBFbmRfb2ZfZmlsZSBlbHNlIGJlZ2luXG4gICAgICAgIGxpbSA6PSBpbnB1dCBpYyBidWYgMCBsZW47XG4gICAgICAgIGlmICFsaW0gPSAwIHRoZW4gYmVnaW4gZW9mIDo9IHRydWU7IHNjYW5fY2xvc2VfaWMgaWMgZW5kIGVsc2UgYmVnaW5cbiAgICAgICAgICBpIDo9IDE7XG4gICAgICAgICAgQnl0ZXMuZ2V0IGJ1ZiAwXG4gICAgICAgIGVuZFxuICAgICAgZW5kIGluXG4gICAgY3JlYXRlIGluYW1lIG5leHRcblxuXG4gIGxldCBmcm9tX2ljX2Nsb3NlX2F0X2VuZCA9IGZyb21faWMgc2Nhbl9jbG9zZV9hdF9lbmRcbiAgbGV0IGZyb21faWNfcmFpc2VfYXRfZW5kID0gZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG4gICgqIFRoZSBzY2FubmluZyBidWZmZXIgcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLlxuICAgICBPbmUgY291bGQgdHJ5IHRvIGRlZmluZSBbc3RkaWJdIGFzIGEgc2Nhbm5pbmcgYnVmZmVyIHJlYWRpbmcgYSBjaGFyYWN0ZXJcbiAgICAgYXQgYSB0aW1lIChubyBidWZmZXJpemF0aW9uIGF0IGFsbCksIGJ1dCB1bmZvcnR1bmF0ZWx5IHRoZSB0b3AtbGV2ZWxcbiAgICAgaW50ZXJhY3Rpb24gd291bGQgYmUgd3JvbmcuIFRoaXMgaXMgZHVlIHRvIHNvbWUga2luZCBvZlxuICAgICAncmFjZSBjb25kaXRpb24nIHdoZW4gcmVhZGluZyBmcm9tIFtTdGRsaWIuc3RkaW5dLFxuICAgICBzaW5jZSB0aGUgaW50ZXJhY3RpdmUgY29tcGlsZXIgYW5kIFtTY2FuZi5zY2FuZl0gd2lsbCBzaW11bHRhbmVvdXNseVxuICAgICByZWFkIHRoZSBtYXRlcmlhbCB0aGV5IG5lZWQgZnJvbSBbU3RkbGliLnN0ZGluXTsgdGhlbiwgY29uZnVzaW9uXG4gICAgIHdpbGwgcmVzdWx0IGZyb20gd2hhdCBzaG91bGQgYmUgcmVhZCBieSB0aGUgdG9wLWxldmVsIGFuZCB3aGF0IHNob3VsZCBiZVxuICAgICByZWFkIGJ5IFtTY2FuZi5zY2FuZl0uXG4gICAgIFRoaXMgaXMgZXZlbiBtb3JlIGNvbXBsaWNhdGVkIGJ5IHRoZSBvbmUgY2hhcmFjdGVyIGxvb2thaGVhZCB0aGF0XG4gICAgIFtTY2FuZi5zY2FuZl0gaXMgc29tZXRpbWVzIG9ibGlnZWQgdG8gbWFpbnRhaW46IHRoZSBsb29rYWhlYWQgY2hhcmFjdGVyXG4gICAgIHdpbGwgYmUgYXZhaWxhYmxlIGZvciB0aGUgbmV4dCBbU2NhbmYuc2NhbmZdIGVudHJ5LCBzZWVtaW5nbHkgY29taW5nIGZyb21cbiAgICAgbm93aGVyZS5cbiAgICAgQWxzbyBubyBbRW5kX29mX2ZpbGVdIGlzIHJhaXNlZCB3aGVuIHJlYWRpbmcgZnJvbSBzdGRpbjogaWYgbm90IGVub3VnaFxuICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiByZWFkLCB3ZSBzaW1wbHkgYXNrIHRvIHJlYWQgbW9yZS4gKilcbiAgbGV0IHN0ZGluID1cbiAgICBmcm9tX2ljIHNjYW5fcmFpc2VfYXRfZW5kXG4gICAgICAoRnJvbV9maWxlIChcIi1cIiwgU3RkbGliLnN0ZGluKSkgU3RkbGliLnN0ZGluXG5cblxuICBsZXQgc3RkaWIgPSBzdGRpblxuXG4gIGxldCBvcGVuX2luX2ZpbGUgb3Blbl9pbiBmbmFtZSA9XG4gICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgIHwgXCItXCIgLT4gc3RkaW5cbiAgICB8IGZuYW1lIC0+XG4gICAgICBsZXQgaWMgPSBvcGVuX2luIGZuYW1lIGluXG4gICAgICBmcm9tX2ljX2Nsb3NlX2F0X2VuZCAoRnJvbV9maWxlIChmbmFtZSwgaWMpKSBpY1xuXG5cbiAgbGV0IG9wZW5faW4gPSBvcGVuX2luX2ZpbGUgU3RkbGliLm9wZW5faW5cbiAgbGV0IG9wZW5faW5fYmluID0gb3Blbl9pbl9maWxlIFN0ZGxpYi5vcGVuX2luX2JpblxuXG4gIGxldCBmcm9tX2ZpbGUgPSBvcGVuX2luXG4gIGxldCBmcm9tX2ZpbGVfYmluID0gb3Blbl9pbl9iaW5cblxuICBsZXQgZnJvbV9jaGFubmVsIGljID1cbiAgICBmcm9tX2ljX3JhaXNlX2F0X2VuZCAoRnJvbV9jaGFubmVsIGljKSBpY1xuXG5cbiAgbGV0IGNsb3NlX2luIGliID1cbiAgICBtYXRjaCBpYi5pY19pbnB1dF9uYW1lIHdpdGhcbiAgICB8IEZyb21fY2hhbm5lbCBpYyAtPlxuICAgICAgU3RkbGliLmNsb3NlX2luIGljXG4gICAgfCBGcm9tX2ZpbGUgKF9mbmFtZSwgaWMpIC0+IFN0ZGxpYi5jbG9zZV9pbiBpY1xuICAgIHwgRnJvbV9mdW5jdGlvbiB8IEZyb21fc3RyaW5nIC0+ICgpXG5cblxuICAoKlxuICAgICBPYnNvbGV0ZTogYSBtZW1vIFtmcm9tX2NoYW5uZWxdIHZlcnNpb24gdG8gYnVpbGQgYSBbU2Nhbm5pbmcuaW5fY2hhbm5lbF1cbiAgICAgc2Nhbm5pbmcgYnVmZmVyIG91dCBvZiBhIFtTdGRsaWIuaW5fY2hhbm5lbF0uXG4gICAgIFRoaXMgZnVuY3Rpb24gd2FzIHVzZWQgdG8gdHJ5IHRvIHByZXNlcnZlIHRoZSBzY2FubmluZ1xuICAgICBzZW1hbnRpY3MgZm9yIHRoZSAobm93IG9ic29sZXRlKSBmdW5jdGlvbiBbZnNjYW5mXS5cbiAgICAgR2l2ZW4gdGhhdCBhbGwgc2Nhbm5lciBtdXN0IHJlYWQgZnJvbSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBzY2FubmluZ1xuICAgICBidWZmZXIsIFtmc2NhbmZdIG11c3QgcmVhZCBmcm9tIG9uZSFcbiAgICAgTW9yZSBwcmVjaXNlbHksIGdpdmVuIFtpY10sIGFsbCBzdWNjZXNzaXZlIGNhbGxzIFtmc2NhbmYgaWNdIG11c3QgcmVhZFxuICAgICBmcm9tIHRoZSBzYW1lIHNjYW5uaW5nIGJ1ZmZlci5cbiAgICAgVGhpcyBvYmxpZ2VkIHRoaXMgbGlicmFyeSB0byBhbGxvY2F0ZWQgc2Nhbm5pbmcgYnVmZmVycyB0aGF0IHdlcmVcbiAgICAgbm90IHByb3Blcmx5IGdhcmJhZ2UgY29sbGVjdGFibGUsIGhlbmNlIGxlYWRpbmcgdG8gbWVtb3J5IGxlYWtzLlxuICAgICBJZiB5b3UgbmVlZCB0byByZWFkIGZyb20gYSBbU3RkbGliLmluX2NoYW5uZWxdIGlucHV0IGNoYW5uZWxcbiAgICAgW2ljXSwgc2ltcGx5IGRlZmluZSBhIFtTY2FubmluZy5pbl9jaGFubmVsXSBmb3JtYXR0ZWQgaW5wdXQgY2hhbm5lbCBhcyBpblxuICAgICBbbGV0IGliID0gU2Nhbm5pbmcuZnJvbV9jaGFubmVsIGljXSwgdGhlbiB1c2UgW1NjYW5mLmJzY2FuZiBpYl0gYXMgdXN1YWwuXG4gICopXG4gIGxldCBtZW1vX2Zyb21faWMgPVxuICAgIGxldCBtZW1vID0gcmVmIFtdIGluXG4gICAgKGZ1biBzY2FuX2Nsb3NlX2ljIGljIC0+XG4gICAgIHRyeSBMaXN0LmFzc3EgaWMgIW1lbW8gd2l0aFxuICAgICB8IE5vdF9mb3VuZCAtPlxuICAgICAgIGxldCBpYiA9XG4gICAgICAgICBmcm9tX2ljIHNjYW5fY2xvc2VfaWMgKEZyb21fY2hhbm5lbCBpYykgaWMgaW5cbiAgICAgICBtZW1vIDo9IChpYywgaWIpIDo6ICFtZW1vO1xuICAgICAgIGliKVxuXG5cbiAgKCogT2Jzb2xldGU6IHNlZSB7IW1lbW9fZnJvbV9pY30gYWJvdmUuICopXG4gIGxldCBtZW1vX2Zyb21fY2hhbm5lbCA9IG1lbW9fZnJvbV9pYyBzY2FuX3JhaXNlX2F0X2VuZFxuXG5lbmRcblxuXG4oKiBGb3JtYXR0ZWQgaW5wdXQgZnVuY3Rpb25zLiAqKVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgc2Nhbm5lciA9XG4gICAgICgnYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgJ2IsICdjLCAnYSAtPiAnZCwgJ2QpIGZvcm1hdDYgLT4gJ2NcblxuXG4oKiBSZXBvcnRpbmcgZXJyb3JzLiAqKVxuZXhjZXB0aW9uIFNjYW5fZmFpbHVyZSBvZiBzdHJpbmdcblxubGV0IGJhZF9pbnB1dCBzID0gcmFpc2UgKFNjYW5fZmFpbHVyZSBzKVxuXG5sZXQgYmFkX2lucHV0X2VzY2FwZSBjID1cbiAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImlsbGVnYWwgZXNjYXBlIGNoYXJhY3RlciAlQ1wiIGMpXG5cblxubGV0IGJhZF90b2tlbl9sZW5ndGggbWVzc2FnZSA9XG4gIGJhZF9pbnB1dFxuICAgIChQcmludGYuc3ByaW50ZlxuICAgICAgIFwic2Nhbm5pbmcgb2YgJXMgZmFpbGVkOiBcXFxuICAgICAgICB0aGUgc3BlY2lmaWVkIGxlbmd0aCB3YXMgdG9vIHNob3J0IGZvciB0b2tlblwiXG4gICAgICAgbWVzc2FnZSlcblxuXG5sZXQgYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlID1cbiAgYmFkX2lucHV0XG4gICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgXCJzY2FubmluZyBvZiAlcyBmYWlsZWQ6IFxcXG4gICAgICAgIHByZW1hdHVyZSBlbmQgb2YgZmlsZSBvY2N1cnJlZCBiZWZvcmUgZW5kIG9mIHRva2VuXCJcbiAgICAgICBtZXNzYWdlKVxuXG5cbmxldCBiYWRfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJubyBkb3Qgb3IgZXhwb25lbnQgcGFydCBmb3VuZCBpbiBmbG9hdCB0b2tlblwiXG5cblxubGV0IGJhZF9oZXhfZmxvYXQgKCkgPVxuICBiYWRfaW5wdXQgXCJub3QgYSB2YWxpZCBmbG9hdCBpbiBoZXhhZGVjaW1hbCBub3RhdGlvblwiXG5cblxubGV0IGNoYXJhY3Rlcl9taXNtYXRjaF9lcnIgYyBjaSA9XG4gIFByaW50Zi5zcHJpbnRmIFwibG9va2luZyBmb3IgJUMsIGZvdW5kICVDXCIgYyBjaVxuXG5cbmxldCBjaGFyYWN0ZXJfbWlzbWF0Y2ggYyBjaSA9XG4gIGJhZF9pbnB1dCAoY2hhcmFjdGVyX21pc21hdGNoX2VyciBjIGNpKVxuXG5cbmxldCByZWMgc2tpcF93aGl0ZXMgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICBpZiBub3QgKFNjYW5uaW5nLmVvZiBpYikgdGhlbiBiZWdpblxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgJyAnIHwgJ1xcdCcgfCAnXFxuJyB8ICdcXHInIC0+XG4gICAgICBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYjsgc2tpcF93aGl0ZXMgaWJcbiAgICB8IF8gLT4gKClcbiAgZW5kXG5cblxuKCogQ2hlY2tpbmcgdGhhdCBbY10gaXMgaW5kZWVkIGluIHRoZSBpbnB1dCwgdGhlbiBza2lwcyBpdC5cbiAgIEluIHRoaXMgY2FzZSwgdGhlIGNoYXJhY3RlciBbY10gaGFzIGJlZW4gZXhwbGljaXRseSBzcGVjaWZpZWQgaW4gdGhlXG4gICBmb3JtYXQgYXMgYmVpbmcgbWFuZGF0b3J5IGluIHRoZSBpbnB1dDsgaGVuY2Ugd2Ugc2hvdWxkIGZhaWwgd2l0aFxuICAgW0VuZF9vZl9maWxlXSBpbiBjYXNlIG9mIGVuZF9vZl9pbnB1dC5cbiAgIChSZW1lbWJlciB0aGF0IFtTY2FuX2ZhaWx1cmVdIGlzIHJhaXNlZCBvbmx5IHdoZW4gKHdlIGNhbiBwcm92ZSBieVxuICAgZXZpZGVuY2UpIHRoYXQgdGhlIGlucHV0IGRvZXMgbm90IG1hdGNoIHRoZSBmb3JtYXQgc3RyaW5nIGdpdmVuLiBXZSBtdXN0XG4gICB0aHVzIGRpZmZlcmVudGlhdGUgW0VuZF9vZl9maWxlXSBhcyBhbiBlcnJvciBkdWUgdG8gbGFjayBvZiBpbnB1dCwgYW5kXG4gICBbU2Nhbl9mYWlsdXJlXSB3aGljaCBpcyBkdWUgdG8gcHJvdmFibHkgd3JvbmcgaW5wdXQuIEkgYW0gbm90IHN1cmUgdGhpcyBpc1xuICAgd29ydGggdGhlIGJ1cmRlbjogaXQgaXMgY29tcGxleCBhbmQgc29tZWhvdyBzdWJsaW1pbmFsOyBzaG91bGQgYmUgY2xlYXJlclxuICAgdG8gZmFpbCB3aXRoIFNjYW5fZmFpbHVyZSBcIk5vdCBlbm91Z2ggaW5wdXQgdG8gY29tcGxldGUgc2Nhbm5pbmdcIiEpXG5cbiAgIFRoYXQncyB3aHksIHdhaXRpbmcgZm9yIGEgYmV0dGVyIHNvbHV0aW9uLCB3ZSB1c2UgY2hlY2tlZF9wZWVrX2NoYXIgaGVyZS5cbiAgIFdlIGFyZSBhbHNvIGNhcmVmdWwgdG8gdHJlYXQgXCJcXHJcXG5cIiBpbiB0aGUgaW5wdXQgYXMgYW4gZW5kIG9mIGxpbmUgbWFya2VyOlxuICAgaXQgYWx3YXlzIG1hdGNoZXMgYSAnXFxuJyBzcGVjaWZpY2F0aW9uIGluIHRoZSBpbnB1dCBmb3JtYXQgc3RyaW5nLiAqKVxubGV0IHJlYyBjaGVja19jaGFyIGliIGMgPVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnICcgLT4gc2tpcF93aGl0ZXMgaWJcbiAgfCAnXFxuJyAtPiBjaGVja19uZXdsaW5lIGliXG4gIHwgYyAtPiBjaGVja190aGlzX2NoYXIgaWIgY1xuXG5hbmQgY2hlY2tfdGhpc19jaGFyIGliIGMgPVxuICBsZXQgY2kgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBpZiBjaSA9IGMgdGhlbiBTY2FubmluZy5pbnZhbGlkYXRlX2N1cnJlbnRfY2hhciBpYiBlbHNlXG4gIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cbmFuZCBjaGVja19uZXdsaW5lIGliID1cbiAgbGV0IGNpID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgbWF0Y2ggY2kgd2l0aFxuICB8ICdcXG4nIC0+IFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gIHwgJ1xccicgLT4gU2Nhbm5pbmcuaW52YWxpZGF0ZV9jdXJyZW50X2NoYXIgaWI7IGNoZWNrX3RoaXNfY2hhciBpYiAnXFxuJ1xuICB8IF8gLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXG4nIGNpXG5cblxuKCogRXh0cmFjdGluZyB0b2tlbnMgZnJvbSB0aGUgb3V0cHV0IHRva2VuIGJ1ZmZlci4gKilcblxubGV0IHRva2VuX2NoYXIgaWIgPSAoU2Nhbm5pbmcudG9rZW4gaWIpLlswXVxuXG5sZXQgdG9rZW5fc3RyaW5nID0gU2Nhbm5pbmcudG9rZW5cblxubGV0IHRva2VuX2Jvb2wgaWIgPVxuICBtYXRjaCBTY2FubmluZy50b2tlbiBpYiB3aXRoXG4gIHwgXCJ0cnVlXCIgLT4gdHJ1ZVxuICB8IFwiZmFsc2VcIiAtPiBmYWxzZVxuICB8IHMgLT4gYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImludmFsaWQgYm9vbGVhbiAnJXMnXCIgcylcblxuXG4oKiBUaGUgdHlwZSBvZiBpbnRlZ2VyIGNvbnZlcnNpb25zLiAqKVxudHlwZSBpbnRlZ2VyX2NvbnZlcnNpb24gPVxuICB8IEJfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBiaW5hcnkgY29udmVyc2lvbiAqKVxuICB8IERfY29udmVyc2lvbiAoKiBTaWduZWQgZGVjaW1hbCBjb252ZXJzaW9uICopXG4gIHwgSV9jb252ZXJzaW9uICgqIFNpZ25lZCBpbnRlZ2VyIGNvbnZlcnNpb24gKilcbiAgfCBPX2NvbnZlcnNpb24gKCogVW5zaWduZWQgb2N0YWwgY29udmVyc2lvbiAqKVxuICB8IFVfY29udmVyc2lvbiAoKiBVbnNpZ25lZCBkZWNpbWFsIGNvbnZlcnNpb24gKilcbiAgfCBYX2NvbnZlcnNpb24gKCogVW5zaWduZWQgaGV4YWRlY2ltYWwgY29udmVyc2lvbiAqKVxuXG5cbmxldCBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciA9IGZ1bmN0aW9uXG4gIHwgJ2InIC0+IEJfY29udmVyc2lvblxuICB8ICdkJyAtPiBEX2NvbnZlcnNpb25cbiAgfCAnaScgLT4gSV9jb252ZXJzaW9uXG4gIHwgJ28nIC0+IE9fY29udmVyc2lvblxuICB8ICd1JyAtPiBVX2NvbnZlcnNpb25cbiAgfCAneCcgfCAnWCcgLT4gWF9jb252ZXJzaW9uXG4gIHwgXyAtPiBhc3NlcnQgZmFsc2VcblxuXG4oKiBFeHRyYWN0IGFuIGludGVnZXIgbGl0ZXJhbCB0b2tlbi5cbiAgIFNpbmNlIHRoZSBmdW5jdGlvbnMgU3RkbGliLippbnQqX29mX3N0cmluZyBkbyBub3QgYWNjZXB0IGEgbGVhZGluZyArLFxuICAgd2Ugc2tpcCBpdCBpZiBuZWNlc3NhcnkuICopXG5sZXQgdG9rZW5faW50X2xpdGVyYWwgY29udiBpYiA9XG4gIGxldCB0b2sgPVxuICAgIG1hdGNoIGNvbnYgd2l0aFxuICAgIHwgRF9jb252ZXJzaW9uIHwgSV9jb252ZXJzaW9uIC0+IFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBVX2NvbnZlcnNpb24gLT4gXCIwdVwiIF4gU2Nhbm5pbmcudG9rZW4gaWJcbiAgICB8IE9fY29udmVyc2lvbiAtPiBcIjBvXCIgXiBTY2FubmluZy50b2tlbiBpYlxuICAgIHwgWF9jb252ZXJzaW9uIC0+IFwiMHhcIiBeIFNjYW5uaW5nLnRva2VuIGliXG4gICAgfCBCX2NvbnZlcnNpb24gLT4gXCIwYlwiIF4gU2Nhbm5pbmcudG9rZW4gaWIgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHRvayBpblxuICBpZiBsID0gMCB8fCB0b2suWzBdIDw+ICcrJyB0aGVuIHRvayBlbHNlIFN0cmluZy5zdWIgdG9rIDEgKGwgLSAxKVxuXG5cbigqIEFsbCB0aGUgZnVuY3Rpb25zIHRoYXQgY29udmVydCBhIHN0cmluZyB0byBhIG51bWJlciByYWlzZSB0aGUgZXhjZXB0aW9uXG4gICBGYWlsdXJlIHdoZW4gdGhlIGNvbnZlcnNpb24gaXMgbm90IHBvc3NpYmxlLlxuICAgVGhpcyBleGNlcHRpb24gaXMgdGhlbiB0cmFwcGVkIGluIFtrc2NhbmZdLiAqKVxubGV0IHRva2VuX2ludCBjb252IGliID0gaW50X29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcblxubGV0IHRva2VuX2Zsb2F0IGliID0gZmxvYXRfb2Zfc3RyaW5nIChTY2FubmluZy50b2tlbiBpYilcblxuKCogVG8gc2NhbiBuYXRpdmUgaW50cywgaW50MzIgYW5kIGludDY0IGludGVnZXJzLlxuICAgV2UgY2Fubm90IGFjY2VzcyB0byBjb252ZXJzaW9ucyB0by9mcm9tIHN0cmluZ3MgZm9yIHRob3NlIHR5cGVzLFxuICAgTmF0aXZlaW50Lm9mX3N0cmluZywgSW50MzIub2Zfc3RyaW5nLCBhbmQgSW50NjQub2Zfc3RyaW5nLFxuICAgc2luY2UgdGhvc2UgbW9kdWxlcyBhcmUgbm90IGF2YWlsYWJsZSB0byBbU2NhbmZdLlxuICAgSG93ZXZlciwgd2UgY2FuIGJpbmQgYW5kIHVzZSB0aGUgY29ycmVzcG9uZGluZyBwcmltaXRpdmVzIHRoYXQgYXJlXG4gICBhdmFpbGFibGUgaW4gdGhlIHJ1bnRpbWUuICopXG5leHRlcm5hbCBuYXRpdmVpbnRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IG5hdGl2ZWludFxuICA9IFwiY2FtbF9uYXRpdmVpbnRfb2Zfc3RyaW5nXCJcblxuZXh0ZXJuYWwgaW50MzJfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IGludDMyXG4gID0gXCJjYW1sX2ludDMyX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIGludDY0X29mX3N0cmluZyA6IHN0cmluZyAtPiBpbnQ2NFxuICA9IFwiY2FtbF9pbnQ2NF9vZl9zdHJpbmdcIlxuXG5cbmxldCB0b2tlbl9uYXRpdmVpbnQgY29udiBpYiA9IG5hdGl2ZWludF9vZl9zdHJpbmcgKHRva2VuX2ludF9saXRlcmFsIGNvbnYgaWIpXG5sZXQgdG9rZW5faW50MzIgY29udiBpYiA9IGludDMyX29mX3N0cmluZyAodG9rZW5faW50X2xpdGVyYWwgY29udiBpYilcbmxldCB0b2tlbl9pbnQ2NCBjb252IGliID0gaW50NjRfb2Zfc3RyaW5nICh0b2tlbl9pbnRfbGl0ZXJhbCBjb252IGliKVxuXG4oKiBTY2FubmluZyBudW1iZXJzLiAqKVxuXG4oKiBEaWdpdHMgc2Nhbm5pbmcgZnVuY3Rpb25zIHN1cHBvc2UgdGhhdCBvbmUgY2hhcmFjdGVyIGhhcyBiZWVuIGNoZWNrZWQgYW5kXG4gICBpcyBhdmFpbGFibGUsIHNpbmNlIHRoZXkgcmV0dXJuIGF0IGVuZCBvZiBmaWxlIHdpdGggdGhlIGN1cnJlbnRseSBmb3VuZFxuICAgdG9rZW4gc2VsZWN0ZWQuXG5cbiAgIFB1dCBpdCBpbiBhbm90aGVyIHdheSwgdGhlIGRpZ2l0cyBzY2FubmluZyBmdW5jdGlvbnMgc2NhbiBmb3IgYSBwb3NzaWJseVxuICAgZW1wdHkgc2VxdWVuY2Ugb2YgZGlnaXRzLCAoaGVuY2UsIGEgc3VjY2Vzc2Z1bCBzY2FubmluZyBmcm9tIG9uZSBvZiB0aG9zZVxuICAgZnVuY3Rpb25zIGRvZXMgbm90IGltcGx5IHRoYXQgdGhlIHRva2VuIGlzIGEgd2VsbC1mb3JtZWQgbnVtYmVyOiB0byBnZXQgYVxuICAgdHJ1ZSBudW1iZXIsIGl0IGlzIG1hbmRhdG9yeSB0byBjaGVjayB0aGF0IGF0IGxlYXN0IG9uZSB2YWxpZCBkaWdpdCBpc1xuICAgYXZhaWxhYmxlIGJlZm9yZSBjYWxsaW5nIG9uZSBvZiB0aGUgZGlnaXQgc2Nhbm5pbmcgZnVuY3Rpb25zKS4gKilcblxuKCogVGhlIGRlY2ltYWwgY2FzZSBpcyB0cmVhdGVkIGVzcGVjaWFsbHkgZm9yIG9wdGltaXphdGlvbiBwdXJwb3Nlcy4gKilcbmxldCByZWMgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCAnXycgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYiBpblxuICAgIHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliXG4gIHwgXyAtPiB3aWR0aFxuXG5cbmxldCBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1cyB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkZWNpbWFsIGRpZ2l0c1wiIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnMCcgLi4gJzknIC0+XG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcbiAgfCBjIC0+XG4gICAgYmFkX2lucHV0IChQcmludGYuc3ByaW50ZiBcImNoYXJhY3RlciAlQyBpcyBub3QgYSBkZWNpbWFsIGRpZ2l0XCIgYylcblxuXG4oKiBUbyBzY2FuIG51bWJlcnMgZnJvbSBvdGhlciBiYXNlcywgd2UgdXNlIGEgcHJlZGljYXRlIGFyZ3VtZW50IHRvXG4gICBzY2FuIGRpZ2l0cy4gKilcbmxldCBzY2FuX2RpZ2l0X3N0YXIgZGlnaXRwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBzY2FuX2RpZ2l0cyB3aWR0aCBpYiA9XG4gICAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGggZWxzZVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICAgIG1hdGNoIGMgd2l0aFxuICAgIHwgYyB3aGVuIGRpZ2l0cCBjIC0+XG4gICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgIHNjYW5fZGlnaXRzIHdpZHRoIGliXG4gICAgfCAnXycgLT5cbiAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliIGluXG4gICAgICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuICAgIHwgXyAtPiB3aWR0aCBpblxuICBzY2FuX2RpZ2l0cyB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2RpZ2l0X3BsdXMgYmFzaXMgZGlnaXRwIHdpZHRoIGliID1cbiAgKCogRW5zdXJlIHdlIGhhdmUgZ290IGVub3VnaCB3aWR0aCBsZWZ0LFxuICAgICBhbmQgcmVhZCBhdCBsZWFzdCBvbmUgZGlnaXQuICopXG4gIGlmIHdpZHRoID0gMCB0aGVuIGJhZF90b2tlbl9sZW5ndGggXCJkaWdpdHNcIiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgaW5cbiAgaWYgZGlnaXRwIGMgdGhlblxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIHNjYW5fZGlnaXRfc3RhciBkaWdpdHAgd2lkdGggaWJcbiAgZWxzZVxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJjaGFyYWN0ZXIgJUMgaXMgbm90IGEgdmFsaWQgJXMgZGlnaXRcIiBjIGJhc2lzKVxuXG5cbmxldCBpc19iaW5hcnlfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnMScgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxuXG5sZXQgc2Nhbl9iaW5hcnlfaW50ID0gc2Nhbl9kaWdpdF9wbHVzIFwiYmluYXJ5XCIgaXNfYmluYXJ5X2RpZ2l0XG5cbmxldCBpc19vY3RhbF9kaWdpdCA9IGZ1bmN0aW9uXG4gIHwgJzAnIC4uICc3JyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX29jdGFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcIm9jdGFsXCIgaXNfb2N0YWxfZGlnaXRcblxubGV0IGlzX2hleGFfZGlnaXQgPSBmdW5jdGlvblxuICB8ICcwJyAuLiAnOScgfCAnYScgLi4gJ2YnIHwgJ0EnIC4uICdGJyAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5cbmxldCBzY2FuX2hleGFkZWNpbWFsX2ludCA9IHNjYW5fZGlnaXRfcGx1cyBcImhleGFkZWNpbWFsXCIgaXNfaGV4YV9kaWdpdFxuXG4oKiBTY2FuIGEgZGVjaW1hbCBpbnRlZ2VyLiAqKVxubGV0IHNjYW5fdW5zaWduZWRfZGVjaW1hbF9pbnQgPSBzY2FuX2RlY2ltYWxfZGlnaXRfcGx1c1xuXG5sZXQgc2Nhbl9zaWduIHdpZHRoIGliID1cbiAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICBtYXRjaCBjIHdpdGhcbiAgfCAnKycgLT4gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjXG4gIHwgJy0nIC0+IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgY1xuICB8IF8gLT4gd2lkdGhcblxuXG5sZXQgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG5cblxuKCogU2NhbiBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgY291bGQgYmUgZ2l2ZW4gaW4gYW55IChjb21tb24pIGJhc2lzLlxuICAgSWYgZGlnaXRzIGFyZSBwcmVmaXhlZCBieSBvbmUgb2YgMHgsIDBYLCAwbywgb3IgMGIsIHRoZSBudW1iZXIgaXNcbiAgIGFzc3VtZWQgdG8gYmUgd3JpdHRlbiByZXNwZWN0aXZlbHkgaW4gaGV4YWRlY2ltYWwsIGhleGFkZWNpbWFsLFxuICAgb2N0YWwsIG9yIGJpbmFyeS4gKilcbmxldCBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIG1hdGNoIFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICBiZWdpbiBtYXRjaCBjIHdpdGhcbiAgICB8ICd4JyB8ICdYJyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpYlxuICAgIHwgJ28nIC0+IHNjYW5fb2N0YWxfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCAnYicgLT4gc2Nhbl9iaW5hcnlfaW50IChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpIGliXG4gICAgfCBfIC0+IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGVuZFxuICB8IF8gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2ludCB3aWR0aCBpYiA9XG4gIGxldCB3aWR0aCA9IHNjYW5fc2lnbiB3aWR0aCBpYiBpblxuICBzY2FuX3Vuc2lnbmVkX2ludCB3aWR0aCBpYlxuXG5cbmxldCBzY2FuX2ludF9jb252ZXJzaW9uIGNvbnYgd2lkdGggaWIgPVxuICBtYXRjaCBjb252IHdpdGhcbiAgfCBCX2NvbnZlcnNpb24gLT4gc2Nhbl9iaW5hcnlfaW50IHdpZHRoIGliXG4gIHwgRF9jb252ZXJzaW9uIC0+IHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgd2lkdGggaWJcbiAgfCBJX2NvbnZlcnNpb24gLT4gc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9pbnQgd2lkdGggaWJcbiAgfCBPX2NvbnZlcnNpb24gLT4gc2Nhbl9vY3RhbF9pbnQgd2lkdGggaWJcbiAgfCBVX2NvbnZlcnNpb24gLT4gc2Nhbl91bnNpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICB8IFhfY29udmVyc2lvbiAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYlxuXG5cbigqIFNjYW5uaW5nIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICopXG5cbigqIEZyYWN0aW9uYWwgcGFydCBpcyBvcHRpb25hbCBhbmQgY2FuIGJlIHJlZHVjZWQgdG8gMCBkaWdpdHMuICopXG5sZXQgc2Nhbl9mcmFjdGlvbmFsX3BhcnQgd2lkdGggaWIgPVxuICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgbWF0Y2ggYyB3aXRoXG4gIHwgJzAnIC4uICc5JyBhcyBjIC0+XG4gICAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogRXhwIHBhcnQgaXMgb3B0aW9uYWwgYW5kIGNhbiBiZSByZWR1Y2VkIHRvIDAgZGlnaXRzLiAqKVxubGV0IHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYiA9XG4gIGlmIHdpZHRoID0gMCB0aGVuIHdpZHRoIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gd2lkdGggZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnZScgfCAnRScgYXMgYyAtPlxuICAgIHNjYW5fb3B0aW9uYWxseV9zaWduZWRfZGVjaW1hbF9pbnQgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYykgaWJcbiAgfCBfIC0+IHdpZHRoXG5cblxuKCogU2NhbiB0aGUgaW50ZWdlciBwYXJ0IG9mIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCAobm90IHVzaW5nIHRoZVxuICAgT0NhbWwgbGV4aWNhbCBjb252ZW50aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHBhcnQgY2FuIGJlIGVtcHR5KTpcbiAgIGFuIG9wdGlvbmFsIHNpZ24sIGZvbGxvd2VkIGJ5IGEgcG9zc2libHkgZW1wdHkgc2VxdWVuY2Ugb2YgZGVjaW1hbFxuICAgZGlnaXRzIChlLmcuIC0uMSkuICopXG5sZXQgc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgPVxuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgc2Nhbl9kZWNpbWFsX2RpZ2l0X3N0YXIgd2lkdGggaWJcblxuXG4oKlxuICAgRm9yIHRoZSB0aW1lIGJlaW5nIHdlIGhhdmUgKGFzIGZvdW5kIGluIHNjYW5mLm1saSk6XG4gICB0aGUgZmllbGQgd2lkdGggaXMgY29tcG9zZWQgb2YgYW4gb3B0aW9uYWwgaW50ZWdlciBsaXRlcmFsXG4gICBpbmRpY2F0aW5nIHRoZSBtYXhpbWFsIHdpZHRoIG9mIHRoZSB0b2tlbiB0byByZWFkLlxuICAgVW5mb3J0dW5hdGVseSwgdGhlIHR5cGUtY2hlY2tlciBsZXQgdGhlIHVzZXIgd3JpdGUgYW4gb3B0aW9uYWwgcHJlY2lzaW9uLFxuICAgc2luY2UgdGhpcyBpcyB2YWxpZCBmb3IgcHJpbnRmIGZvcm1hdCBzdHJpbmdzLlxuXG4gICBUaHVzLCB0aGUgbmV4dCBzdGVwIGZvciBTY2FuZiBpcyB0byBzdXBwb3J0IGEgZnVsbCB3aWR0aCBhbmQgcHJlY2lzaW9uXG4gICBpbmRpY2F0aW9uLCBtb3JlIG9yIGxlc3Mgc2ltaWxhciB0byB0aGUgb25lIGZvciBwcmludGYsIHBvc3NpYmx5IGV4dGVuZGVkXG4gICB0byB0aGUgc3BlY2lmaWNhdGlvbiBvZiBhIFttYXgsIG1pbl0gcmFuZ2UgZm9yIHRoZSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZFxuICAgZm9yIHN0cmluZ3MuIFNvbWV0aGluZyBsaWtlIHRoZSBmb2xsb3dpbmcgc3BlYyBmb3Igc2NhbmYubWxpOlxuXG4gICBUaGUgb3B0aW9uYWwgW3dpZHRoXSBpcyBhbiBpbnRlZ2VyIGluZGljYXRpbmcgdGhlIG1heGltYWxcbiAgIHdpZHRoIG9mIHRoZSB0b2tlbiByZWFkLiBGb3IgaW5zdGFuY2UsIFslNmRdIHJlYWRzIGFuIGludGVnZXIsXG4gICBoYXZpbmcgYXQgbW9zdCA2IGNoYXJhY3RlcnMuXG5cbiAgIFRoZSBvcHRpb25hbCBbcHJlY2lzaW9uXSBpcyBhIGRvdCBbLl0gZm9sbG93ZWQgYnkgYW4gaW50ZWdlcjpcblxuICAgLSBpbiB0aGUgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIGNvbnZlcnNpb25zIChbJWZdLCBbJWVdLCBbJWddLCBbJUZdLCBbJUVdLFxuICAgYW5kIFslRl0gY29udmVyc2lvbnMsIHRoZSBbcHJlY2lzaW9uXSBpbmRpY2F0ZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mXG4gICBkaWdpdHMgdGhhdCBtYXkgZm9sbG93IHRoZSBkZWNpbWFsIHBvaW50LiBGb3IgaW5zdGFuY2UsIFslLjRmXSByZWFkcyBhXG4gICBbZmxvYXRdIHdpdGggYXQgbW9zdCA0IGZyYWN0aW9uYWwgZGlnaXRzLFxuXG4gICAtIGluIHRoZSBzdHJpbmcgY29udmVyc2lvbnMgKFslc10sIFslU10sIFslXFxbIHJhbmdlIFxcXV0pLCBhbmQgaW4gdGhlXG4gICBpbnRlZ2VyIG51bWJlciBjb252ZXJzaW9ucyAoWyVpXSwgWyVkXSwgWyV1XSwgWyV4XSwgWyVvXSwgYW5kIHRoZWlyXG4gICBbaW50MzJdLCBbaW50NjRdLCBhbmQgW25hdGl2ZV9pbnRdIGNvcnJlc3BvbmRlbnQpLCB0aGUgW3ByZWNpc2lvbl1cbiAgIGluZGljYXRlcyB0aGUgcmVxdWlyZWQgbWluaW11bSB3aWR0aCBvZiB0aGUgdG9rZW4gcmVhZCxcblxuICAgLSBvbiBhbGwgb3RoZXIgY29udmVyc2lvbnMsIHRoZSB3aWR0aCBhbmQgcHJlY2lzaW9uIHNwZWNpZnkgdGhlIFttYXgsIG1pbl1cbiAgIHJhbmdlIGZvciB0aGUgd2lkdGggb2YgdGhlIHRva2VuIHJlYWQuXG4qKVxubGV0IHNjYW5fZmxvYXQgd2lkdGggcHJlY2lzaW9uIGliID1cbiAgbGV0IHdpZHRoID0gc2Nhbl9pbnRlZ2VyX3BhcnQgd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHRoZW4gd2lkdGgsIHByZWNpc2lvbiBlbHNlXG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIGlmIFNjYW5uaW5nLmVvZiBpYiB0aGVuIHdpZHRoLCBwcmVjaXNpb24gZWxzZVxuICBtYXRjaCBjIHdpdGhcbiAgfCAnLicgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBsZXQgcHJlY2lzaW9uID0gSW50Lm1pbiB3aWR0aCBwcmVjaXNpb24gaW5cbiAgICBsZXQgd2lkdGggPSB3aWR0aCAtIChwcmVjaXNpb24gLSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIpIGluXG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cbiAgfCBfIC0+XG4gICAgc2Nhbl9leHBvbmVudF9wYXJ0IHdpZHRoIGliLCBwcmVjaXNpb25cblxuXG5sZXQgY2hlY2tfY2FzZV9pbnNlbnNpdGl2ZV9zdHJpbmcgd2lkdGggaWIgZXJyb3Igc3RyID1cbiAgbGV0IGxvd2VyY2FzZSBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICdBJyAuLiAnWicgLT5cbiAgICAgIGNoYXJfb2ZfaW50IChpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ0EnICsgaW50X29mX2NoYXIgJ2EnKVxuICAgIHwgXyAtPiBjIGluXG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgd2lkdGggPSByZWYgd2lkdGggaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBsZXQgYyA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgIGlmIGxvd2VyY2FzZSBjIDw+IGxvd2VyY2FzZSBzdHIuW2ldIHRoZW4gZXJyb3IgKCk7XG4gICAgaWYgIXdpZHRoID0gMCB0aGVuIGVycm9yICgpO1xuICAgIHdpZHRoIDo9IFNjYW5uaW5nLnN0b3JlX2NoYXIgIXdpZHRoIGliIGM7XG4gIGRvbmU7XG4gICF3aWR0aFxuXG5cbmxldCBzY2FuX2hleF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgbGV0IHdpZHRoID0gc2Nhbl9zaWduIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICB8ICcwJyBhcyBjIC0+IChcbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBsZXQgd2lkdGggPSBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwieFwiIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgIGxldCB3aWR0aCA9IG1hdGNoIFNjYW5uaW5nLnBlZWtfY2hhciBpYiB3aXRoXG4gICAgICAgIHwgJy4nIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgIHwgXyAtPiBzY2FuX2hleGFkZWNpbWFsX2ludCB3aWR0aCBpYiBpblxuICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgbGV0IHdpZHRoID0gbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgICAgfCAncCcgfCAnUCcgLT4gd2lkdGhcbiAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgICAgd2lkdGggLSAocHJlY2lzaW9uIC0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgcHJlY2lzaW9uIGliKVxuICAgICAgICAgIClcbiAgICAgICAgICB8IF8gLT4gd2lkdGggaW5cbiAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIHdpZHRoIGVsc2VcbiAgICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICAgIHwgJ3AnIHwgJ1AnIGFzIGMgLT5cbiAgICAgICAgICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgICBzY2FuX29wdGlvbmFsbHlfc2lnbmVkX2RlY2ltYWxfaW50IHdpZHRoIGliXG4gICAgICAgICAgfCBfIC0+IHdpZHRoXG4gIClcbiAgfCAnbicgfCAnTicgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfaGV4X2Zsb2F0ICgpO1xuICAgIGNoZWNrX2Nhc2VfaW5zZW5zaXRpdmVfc3RyaW5nIHdpZHRoIGliIGJhZF9oZXhfZmxvYXQgXCJhblwiXG4gIHwgJ2knIHwgJ0knIGFzIGMgLT5cbiAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2hleF9mbG9hdCAoKTtcbiAgICBjaGVja19jYXNlX2luc2Vuc2l0aXZlX3N0cmluZyB3aWR0aCBpYiBiYWRfaGV4X2Zsb2F0IFwibmZpbml0eVwiXG4gIHwgXyAtPiBiYWRfaGV4X2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdF9yZXN0IHdpZHRoIHByZWNpc2lvbiBpYiA9XG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCB3aWR0aCA9IHNjYW5fZGVjaW1hbF9kaWdpdF9zdGFyIHdpZHRoIGliIGluXG4gIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gIG1hdGNoIGMgd2l0aFxuICB8ICcuJyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgICgqIFRoZSBlZmZlY3RpdmUgd2lkdGggYXZhaWxhYmxlIGZvciBzY2FubmluZyB0aGUgZnJhY3Rpb25hbCBwYXJ0IGlzXG4gICAgICAgdGhlIG1pbmltdW0gb2YgZGVjbGFyZWQgcHJlY2lzaW9uIGFuZCB3aWR0aCBsZWZ0LiAqKVxuICAgIGxldCBwcmVjaXNpb24gPSBJbnQubWluIHdpZHRoIHByZWNpc2lvbiBpblxuICAgICgqIEFmdGVyIHNjYW5uaW5nIHRoZSBmcmFjdGlvbmFsIHBhcnQgd2l0aCBbcHJlY2lzaW9uXSBwcm92aXNpb25hbCB3aWR0aCxcbiAgICAgICBbd2lkdGhfcHJlY2lzaW9uXSBpcyBsZWZ0LiAqKVxuICAgIGxldCB3aWR0aF9wcmVjaXNpb24gPSBzY2FuX2ZyYWN0aW9uYWxfcGFydCBwcmVjaXNpb24gaWIgaW5cbiAgICAoKiBIZW5jZSwgc2Nhbm5pbmcgdGhlIGZyYWN0aW9uYWwgcGFydCB0b29rIGV4YWN0bHlcbiAgICAgICBbcHJlY2lzaW9uIC0gd2lkdGhfcHJlY2lzaW9uXSBjaGFycy4gKilcbiAgICBsZXQgZnJhY193aWR0aCA9IHByZWNpc2lvbiAtIHdpZHRoX3ByZWNpc2lvbiBpblxuICAgICgqIEFuZCBuZXcgcHJvdmlzaW9uYWwgd2lkdGggaXMgW3dpZHRoIC0gd2lkdGhfcHJlY2lzaW9uLiAqKVxuICAgIGxldCB3aWR0aCA9IHdpZHRoIC0gZnJhY193aWR0aCBpblxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8ICdlJyB8ICdFJyAtPlxuICAgIHNjYW5fZXhwb25lbnRfcGFydCB3aWR0aCBpYlxuICB8IF8gLT4gYmFkX2Zsb2F0ICgpXG5cblxubGV0IHNjYW5fY2FtbF9mbG9hdCB3aWR0aCBwcmVjaXNpb24gaWIgPVxuICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICBsZXQgd2lkdGggPSBzY2FuX3NpZ24gd2lkdGggaWIgaW5cbiAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgfCAnMCcgYXMgYyAtPiAoXG4gICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9mbG9hdCAoKTtcbiAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ3gnIHwgJ1gnIGFzIGMgLT4gKFxuICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gYmFkX2Zsb2F0ICgpO1xuICAgICAgbGV0IHdpZHRoID0gc2Nhbl9oZXhhZGVjaW1hbF9pbnQgd2lkdGggaWIgaW5cbiAgICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgICBsZXQgd2lkdGggPSBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICcuJyBhcyBjIC0+IChcbiAgICAgICAgICBsZXQgd2lkdGggPSBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMgaW5cbiAgICAgICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICAgICAgbWF0Y2ggU2Nhbm5pbmcucGVla19jaGFyIGliIHdpdGhcbiAgICAgICAgICAgIHwgJ3AnIHwgJ1AnIC0+IHdpZHRoXG4gICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgbGV0IHByZWNpc2lvbiA9IEludC5taW4gd2lkdGggcHJlY2lzaW9uIGluXG4gICAgICAgICAgICAgIHdpZHRoIC0gKHByZWNpc2lvbiAtIHNjYW5faGV4YWRlY2ltYWxfaW50IHByZWNpc2lvbiBpYilcbiAgICAgICAgKVxuICAgICAgICB8ICdwJyB8ICdQJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gYmFkX2Zsb2F0ICgpIGluXG4gICAgICBpZiB3aWR0aCA9IDAgfHwgU2Nhbm5pbmcuZW5kX29mX2lucHV0IGliIHRoZW4gd2lkdGggZWxzZVxuICAgICAgICBtYXRjaCBTY2FubmluZy5wZWVrX2NoYXIgaWIgd2l0aFxuICAgICAgICB8ICdwJyB8ICdQJyBhcyBjIC0+XG4gICAgICAgICAgbGV0IHdpZHRoID0gU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjIGluXG4gICAgICAgICAgaWYgd2lkdGggPSAwIHx8IFNjYW5uaW5nLmVuZF9vZl9pbnB1dCBpYiB0aGVuIGJhZF9oZXhfZmxvYXQgKCk7XG4gICAgICAgICAgc2Nhbl9vcHRpb25hbGx5X3NpZ25lZF9kZWNpbWFsX2ludCB3aWR0aCBpYlxuICAgICAgICB8IF8gLT4gd2lkdGhcbiAgICApXG4gICAgfCBfIC0+XG4gICAgICBzY2FuX2NhbWxfZmxvYXRfcmVzdCB3aWR0aCBwcmVjaXNpb24gaWJcbiAgKVxuICB8ICcxJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCB3aWR0aCA9IFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgYyBpblxuICAgIGlmIHdpZHRoID0gMCB8fCBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBiYWRfZmxvYXQgKCk7XG4gICAgc2Nhbl9jYW1sX2Zsb2F0X3Jlc3Qgd2lkdGggcHJlY2lzaW9uIGliXG4oKiBTcGVjaWFsIGNhc2Ugb2YgbmFuIGFuZCBpbmZpbml0eTpcbiAgfCAnaScgLT5cbiAgfCAnbicgLT5cbiopXG4gIHwgXyAtPiBiYWRfZmxvYXQgKClcblxuXG4oKiBTY2FuIGEgcmVndWxhciBzdHJpbmc6XG4gICBzdG9wcyB3aGVuIGVuY291bnRlcmluZyBhIHNwYWNlLCBpZiBubyBzY2FubmluZyBpbmRpY2F0aW9uIGhhcyBiZWVuIGdpdmVuO1xuICAgb3RoZXJ3aXNlLCBzdG9wcyB3aGVuIGVuY291bnRlcmluZyB0aGUgY2hhcmFjdGVycyBpbiB0aGUgc2Nhbm5pbmdcbiAgIGluZGljYXRpb24gW3N0cF0uXG4gICBJdCBhbHNvIHN0b3BzIGF0IGVuZCBvZiBmaWxlIG9yIHdoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgaGFzXG4gICBiZWVuIHJlYWQuICopXG5sZXQgc2Nhbl9zdHJpbmcgc3RwIHdpZHRoIGliID1cbiAgbGV0IHJlYyBsb29wIHdpZHRoID1cbiAgICBpZiB3aWR0aCA9IDAgdGhlbiB3aWR0aCBlbHNlXG4gICAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgICBpZiBTY2FubmluZy5lb2YgaWIgdGhlbiB3aWR0aCBlbHNlXG4gICAgICBtYXRjaCBzdHAgd2l0aFxuICAgICAgfCBTb21lIGMnIHdoZW4gYyA9IGMnIC0+IFNjYW5uaW5nLnNraXBfY2hhciB3aWR0aCBpYlxuICAgICAgfCBTb21lIF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICB8ICcgJyB8ICdcXHQnIHwgJ1xcbicgfCAnXFxyJyAtPiB3aWR0aFxuICAgICAgICB8IF8gLT4gbG9vcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKSBpblxuICBsb29wIHdpZHRoXG5cblxuKCogU2NhbiBhIGNoYXI6IHBlZWsgc3RyaWN0bHkgb25lIGNoYXJhY3RlciBpbiB0aGUgaW5wdXQsIHdoYXRzb2V2ZXIuICopXG5sZXQgc2Nhbl9jaGFyIHdpZHRoIGliID1cbiAgKCogVGhlIGNhc2Ugd2lkdGggPSAwIGNvdWxkIG5vdCBoYXBwZW4gaGVyZSwgc2luY2UgaXQgaXMgdGVzdGVkIGJlZm9yZVxuICAgICBjYWxsaW5nIHNjYW5fY2hhciwgaW4gdGhlIG1haW4gc2Nhbm5pbmcgZnVuY3Rpb24uXG4gICAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBcImEgY2hhcmFjdGVyXCIgZWxzZSAqKVxuICBTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIChTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYilcblxuXG5sZXQgY2hhcl9mb3JfYmFja3NsYXNoID0gZnVuY3Rpb25cbiAgfCAnbicgLT4gJ1xcMDEwJ1xuICB8ICdyJyAtPiAnXFwwMTMnXG4gIHwgJ2InIC0+ICdcXDAwOCdcbiAgfCAndCcgLT4gJ1xcMDA5J1xuICB8IGMgLT4gY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBkZWNpbWFsIGRpZ2l0IGNoYXJhY3Rlci4gKilcbmxldCBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYyA9IGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnMCdcblxubGV0IGNoYXJfZm9yX2RlY2ltYWxfY29kZSBjMCBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxMDAgKiBkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzAgK1xuICAgICAxMCAqIGRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMSArXG4gICAgICAgICAgZGVjaW1hbF92YWx1ZV9vZl9jaGFyIGMyIGluXG4gIGlmIGMgPCAwIHx8IGMgPiAyNTUgdGhlblxuICAgIGJhZF9pbnB1dFxuICAgICAgKFByaW50Zi5zcHJpbnRmXG4gICAgICAgICBcImJhZCBjaGFyYWN0ZXIgZGVjaW1hbCBlbmNvZGluZyBcXFxcJWMlYyVjXCIgYzAgYzEgYzIpIGVsc2VcbiAgY2hhcl9vZl9pbnQgY1xuXG5cbigqIFRoZSBpbnRlZ2VyIHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZhY2lhbCB2YWx1ZSBvZiBhIHZhbGlkXG4gICBoZXhhZGVjaW1hbCBkaWdpdCBjaGFyYWN0ZXIuICopXG5sZXQgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjID1cbiAgbGV0IGQgPSBpbnRfb2ZfY2hhciBjIGluXG4gICgqIENvdWxkIGFsc28gYmU6XG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnOScgdGhlbiBkIC0gaW50X29mX2NoYXIgJzAnIGVsc2VcbiAgICBpZiBkIDw9IGludF9vZl9jaGFyICdGJyB0aGVuIDEwICsgZCAtIGludF9vZl9jaGFyICdBJyBlbHNlXG4gICAgaWYgZCA8PSBpbnRfb2ZfY2hhciAnZicgdGhlbiAxMCArIGQgLSBpbnRfb2ZfY2hhciAnYScgZWxzZSBhc3NlcnQgZmFsc2VcbiAgKilcbiAgaWYgZCA+PSBpbnRfb2ZfY2hhciAnYScgdGhlblxuICAgIGQgLSA4NyAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnYScgKikgZWxzZVxuICBpZiBkID49IGludF9vZl9jaGFyICdBJyB0aGVuXG4gICAgZCAtIDU1ICAoKiAxMCArIGludF9vZl9jaGFyIGMgLSBpbnRfb2ZfY2hhciAnQScgKikgZWxzZVxuICAgIGQgLSBpbnRfb2ZfY2hhciAnMCdcblxuXG5sZXQgY2hhcl9mb3JfaGV4YWRlY2ltYWxfY29kZSBjMSBjMiA9XG4gIGxldCBjID1cbiAgICAxNiAqIGhleGFkZWNpbWFsX3ZhbHVlX29mX2NoYXIgYzEgK1xuICAgICAgICAgaGV4YWRlY2ltYWxfdmFsdWVfb2ZfY2hhciBjMiBpblxuICBpZiBjIDwgMCB8fCBjID4gMjU1IHRoZW5cbiAgICBiYWRfaW5wdXRcbiAgICAgIChQcmludGYuc3ByaW50ZiBcImJhZCBjaGFyYWN0ZXIgaGV4YWRlY2ltYWwgZW5jb2RpbmcgXFxcXCVjJWNcIiBjMSBjMikgZWxzZVxuICBjaGFyX29mX2ludCBjXG5cblxuKCogQ2FsbGVkIGluIHBhcnRpY3VsYXIgd2hlbiBlbmNvdW50ZXJpbmcgJ1xcXFwnIGFzIHN0YXJ0ZXIgb2YgYSBjaGFyLlxuICAgU3RvcHMgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nICdcXCcnLiAqKVxubGV0IGNoZWNrX25leHRfY2hhciBtZXNzYWdlIHdpZHRoIGliID1cbiAgaWYgd2lkdGggPSAwIHRoZW4gYmFkX3Rva2VuX2xlbmd0aCBtZXNzYWdlIGVsc2VcbiAgbGV0IGMgPSBTY2FubmluZy5wZWVrX2NoYXIgaWIgaW5cbiAgaWYgU2Nhbm5pbmcuZW9mIGliIHRoZW4gYmFkX2VuZF9vZl9pbnB1dCBtZXNzYWdlIGVsc2VcbiAgY1xuXG5cbmxldCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgPSBjaGVja19uZXh0X2NoYXIgXCJhIENoYXJcIlxubGV0IGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nID0gY2hlY2tfbmV4dF9jaGFyIFwiYSBTdHJpbmdcIlxuXG5sZXQgc2Nhbl9iYWNrc2xhc2hfY2hhciB3aWR0aCBpYiA9XG4gIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gIHwgJ1xcXFwnIHwgJ1xcJycgfCAnXFxcIicgfCAnbicgfCAndCcgfCAnYicgfCAncicgYXMgYyAtPlxuICAgIFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgKGNoYXJfZm9yX2JhY2tzbGFzaCBjKVxuICB8ICcwJyAuLiAnOScgYXMgYyAtPlxuICAgIGxldCBnZXRfZGlnaXQgKCkgPVxuICAgICAgbGV0IGMgPSBTY2FubmluZy5uZXh0X2NoYXIgaWIgaW5cbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gY1xuICAgICAgfCBjIC0+IGJhZF9pbnB1dF9lc2NhcGUgYyBpblxuICAgIGxldCBjMCA9IGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9kZWNpbWFsX2NvZGUgYzAgYzEgYzIpXG4gIHwgJ3gnIC0+XG4gICAgbGV0IGdldF9kaWdpdCAoKSA9XG4gICAgICBsZXQgYyA9IFNjYW5uaW5nLm5leHRfY2hhciBpYiBpblxuICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICB8ICcwJyAuLiAnOScgfCAnQScgLi4gJ0YnIHwgJ2EnIC4uICdmJyBhcyBjIC0+IGNcbiAgICAgIHwgYyAtPiBiYWRfaW5wdXRfZXNjYXBlIGMgaW5cbiAgICBsZXQgYzEgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBsZXQgYzIgPSBnZXRfZGlnaXQgKCkgaW5cbiAgICBTY2FubmluZy5zdG9yZV9jaGFyICh3aWR0aCAtIDIpIGliIChjaGFyX2Zvcl9oZXhhZGVjaW1hbF9jb2RlIGMxIGMyKVxuICB8IGMgLT5cbiAgICBiYWRfaW5wdXRfZXNjYXBlIGNcblxuXG4oKiBTY2FuIGEgY2hhcmFjdGVyIChhbiBPQ2FtbCB0b2tlbikuICopXG5sZXQgc2Nhbl9jYW1sX2NoYXIgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcJycgLT4gZmluZF9jaGFyIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gY2hhcmFjdGVyX21pc21hdGNoICdcXCcnIGNcblxuICBhbmQgZmluZF9jaGFyIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX2NoYXIgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcXFwnIC0+XG4gICAgICBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKSBpYilcbiAgICB8IGMgLT5cbiAgICAgIGZpbmRfc3RvcCAoU2Nhbm5pbmcuc3RvcmVfY2hhciB3aWR0aCBpYiBjKVxuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3JfY2hhciB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFwnJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgYyAtPiBjaGFyYWN0ZXJfbWlzbWF0Y2ggJ1xcJycgYyBpblxuXG4gIGZpbmRfc3RhcnQgd2lkdGhcblxuXG4oKiBTY2FuIGEgZGVsaW1pdGVkIHN0cmluZyAoYW4gT0NhbWwgdG9rZW4pLiAqKVxubGV0IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgPVxuXG4gIGxldCByZWMgZmluZF9zdGFydCB3aWR0aCA9XG4gICAgbWF0Y2ggU2Nhbm5pbmcuY2hlY2tlZF9wZWVrX2NoYXIgaWIgd2l0aFxuICAgIHwgJ1xcXCInIC0+IGZpbmRfc3RvcCAoU2Nhbm5pbmcuaWdub3JlX2NoYXIgd2lkdGggaWIpXG4gICAgfCBjIC0+IGNoYXJhY3Rlcl9taXNtYXRjaCAnXFxcIicgY1xuXG4gIGFuZCBmaW5kX3N0b3Agd2lkdGggPVxuICAgIG1hdGNoIGNoZWNrX25leHRfY2hhcl9mb3Jfc3RyaW5nIHdpZHRoIGliIHdpdGhcbiAgICB8ICdcXFwiJyAtPiBTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYlxuICAgIHwgJ1xcXFwnIC0+IHNjYW5fYmFja3NsYXNoIChTY2FubmluZy5pZ25vcmVfY2hhciB3aWR0aCBpYilcbiAgICB8IGMgLT4gZmluZF9zdG9wIChTY2FubmluZy5zdG9yZV9jaGFyIHdpZHRoIGliIGMpXG5cbiAgYW5kIHNjYW5fYmFja3NsYXNoIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnXFxyJyAtPiBza2lwX25ld2xpbmUgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKHNjYW5fYmFja3NsYXNoX2NoYXIgd2lkdGggaWIpXG5cbiAgYW5kIHNraXBfbmV3bGluZSB3aWR0aCA9XG4gICAgbWF0Y2ggY2hlY2tfbmV4dF9jaGFyX2Zvcl9zdHJpbmcgd2lkdGggaWIgd2l0aFxuICAgIHwgJ1xcbicgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3AgKFNjYW5uaW5nLnN0b3JlX2NoYXIgd2lkdGggaWIgJ1xccicpXG5cbiAgYW5kIHNraXBfc3BhY2VzIHdpZHRoID1cbiAgICBtYXRjaCBjaGVja19uZXh0X2NoYXJfZm9yX3N0cmluZyB3aWR0aCBpYiB3aXRoXG4gICAgfCAnICcgLT4gc2tpcF9zcGFjZXMgKFNjYW5uaW5nLmlnbm9yZV9jaGFyIHdpZHRoIGliKVxuICAgIHwgXyAtPiBmaW5kX3N0b3Agd2lkdGggaW5cblxuICBmaW5kX3N0YXJ0IHdpZHRoXG5cblxuKCogU2NhbiBhIGJvb2xlYW4gKGFuIE9DYW1sIHRva2VuKS4gKilcbmxldCBzY2FuX2Jvb2wgaWIgPVxuICBsZXQgYyA9IFNjYW5uaW5nLmNoZWNrZWRfcGVla19jaGFyIGliIGluXG4gIGxldCBtID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICB8ICd0JyAtPiA0XG4gICAgfCAnZicgLT4gNVxuICAgIHwgYyAtPlxuICAgICAgYmFkX2lucHV0XG4gICAgICAgIChQcmludGYuc3ByaW50ZiBcInRoZSBjaGFyYWN0ZXIgJUMgY2Fubm90IHN0YXJ0IGEgYm9vbGVhblwiIGMpIGluXG4gIHNjYW5fc3RyaW5nIE5vbmUgbSBpYlxuXG5cbigqIFNjYW4gYSBzdHJpbmcgY29udGFpbmluZyBlbGVtZW50cyBpbiBjaGFyX3NldCBhbmQgdGVybWluYXRlZCBieSBzY2FuX2luZGljXG4gICBpZiBwcm92aWRlZC4gKilcbmxldCBzY2FuX2NoYXJzX2luX2NoYXJfc2V0IGNoYXJfc2V0IHNjYW5faW5kaWMgd2lkdGggaWIgPVxuICBsZXQgcmVjIHNjYW5fY2hhcnMgaSBzdHAgPVxuICAgIGxldCBjID0gU2Nhbm5pbmcucGVla19jaGFyIGliIGluXG4gICAgaWYgaSA+IDAgJiYgbm90IChTY2FubmluZy5lb2YgaWIpICYmXG4gICAgICAgaXNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgYyAmJlxuICAgICAgIGludF9vZl9jaGFyIGMgPD4gc3RwIHRoZW5cbiAgICAgIGxldCBfID0gU2Nhbm5pbmcuc3RvcmVfY2hhciBtYXhfaW50IGliIGMgaW5cbiAgICAgIHNjYW5fY2hhcnMgKGkgLSAxKSBzdHAgaW5cbiAgbWF0Y2ggc2Nhbl9pbmRpYyB3aXRoXG4gIHwgTm9uZSAtPiBzY2FuX2NoYXJzIHdpZHRoICgtMSk7XG4gIHwgU29tZSBjIC0+XG4gICAgc2Nhbl9jaGFycyB3aWR0aCAoaW50X29mX2NoYXIgYyk7XG4gICAgaWYgbm90IChTY2FubmluZy5lb2YgaWIpIHRoZW5cbiAgICAgIGxldCBjaSA9IFNjYW5uaW5nLnBlZWtfY2hhciBpYiBpblxuICAgICAgaWYgYyA9IGNpXG4gICAgICB0aGVuIFNjYW5uaW5nLmludmFsaWRhdGVfY3VycmVudF9jaGFyIGliXG4gICAgICBlbHNlIGNoYXJhY3Rlcl9taXNtYXRjaCBjIGNpXG5cblxuKCogVGhlIGdsb2JhbCBlcnJvciByZXBvcnQgZnVuY3Rpb24gZm9yIFtTY2FuZl0uICopXG5sZXQgc2NhbmZfYmFkX2lucHV0IGliID0gZnVuY3Rpb25cbiAgfCBTY2FuX2ZhaWx1cmUgcyB8IEZhaWx1cmUgcyAtPlxuICAgIGxldCBpID0gU2Nhbm5pbmcuY2hhcl9jb3VudCBpYiBpblxuICAgIGJhZF9pbnB1dCAoUHJpbnRmLnNwcmludGYgXCJzY2FuZjogYmFkIGlucHV0IGF0IGNoYXIgbnVtYmVyICVpOiAlc1wiIGkgcylcbiAgfCB4IC0+IHJhaXNlIHhcblxuXG4oKiBHZXQgdGhlIGNvbnRlbnQgb2YgYSBjb3VudGVyIGZyb20gYW4gaW5wdXQgYnVmZmVyLiAqKVxubGV0IGdldF9jb3VudGVyIGliIGNvdW50ZXIgPVxuICBtYXRjaCBjb3VudGVyIHdpdGhcbiAgfCBMaW5lX2NvdW50ZXIgLT4gU2Nhbm5pbmcubGluZV9jb3VudCBpYlxuICB8IENoYXJfY291bnRlciAtPiBTY2FubmluZy5jaGFyX2NvdW50IGliXG4gIHwgVG9rZW5fY291bnRlciAtPiBTY2FubmluZy50b2tlbl9jb3VudCBpYlxuXG5cbigqIENvbXB1dGUgdGhlIHdpZHRoIG9mIGEgcGFkZGluZyBvcHRpb24gKHNlZSBcIiU0MntcIiBhbmQgXCIlMTIzKFwiKS4gKilcbmxldCB3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQgPSBtYXRjaCBwYWRfb3B0IHdpdGhcbiAgfCBOb25lIC0+IG1heF9pbnRcbiAgfCBTb21lIHdpZHRoIC0+IHdpZHRoXG5cblxubGV0IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nID1cbiAgaWYgZm10aW5nID0gRXNjYXBlZF9wZXJjZW50IHRoZW4gJyUnLCBcIlwiIGVsc2VcbiAgICBsZXQgc3RyID0gc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZtdGluZyBpblxuICAgIGxldCBzdHAgPSBzdHIuWzFdIGluXG4gICAgbGV0IHN1Yl9zdHIgPSBTdHJpbmcuc3ViIHN0ciAyIChTdHJpbmcubGVuZ3RoIHN0ciAtIDIpIGluXG4gICAgc3RwLCBzdWJfc3RyXG5cblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFJlYWRlciBtYW5hZ2VtZW50ICopXG5cbigqIEEgY2FsbCB0byB0YWtlX2Zvcm1hdF9yZWFkZXJzIG9uIGEgZm9ybWF0IGlzIGV2YWx1YXRlZCBpbnRvIGZ1bmN0aW9uc1xuICAgdGFraW5nIHJlYWRlcnMgYXMgYXJndW1lbnRzIGFuZCBhZ2dyZWdhdGUgdGhlbSBpbnRvIGFuIGhldGVyb2dlbmVvdXMgbGlzdCAqKVxuKCogV2hlbiBhbGwgcmVhZGVycyBhcmUgdGFrZW4sIGZpbmFsbHkgcGFzcyB0aGUgbGlzdCBvZiB0aGUgcmVhZGVycyB0byB0aGVcbiAgIGNvbnRpbnVhdGlvbiBrLiAqKVxubGV0IHJlYyB0YWtlX2Zvcm1hdF9yZWFkZXJzIDogdHlwZSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgZCA9XG5mdW4gayBmbXQgLT4gbWF0Y2ggZm10IHdpdGhcbiAgfCBSZWFkZXIgZm10X3Jlc3QgLT5cbiAgICBmdW4gcmVhZGVyIC0+XG4gICAgICBsZXQgbmV3X2sgcmVhZGVyc19yZXN0ID0gayAoQ29ucyAocmVhZGVyLCByZWFkZXJzX3Jlc3QpKSBpblxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBuZXdfayBmbXRfcmVzdFxuICB8IENoYXIgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQ2FtbF9jaGFyIHJlc3QgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBTdHJpbmcgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IENhbWxfc3RyaW5nIChfLCByZXN0KSAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50IChfLCBfLCBfLCByZXN0KSAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBJbnQzMiAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IE5hdGl2ZWludCAoXywgXywgXywgcmVzdCkgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgSW50NjQgKF8sIF8sIF8sIHJlc3QpICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBGbG9hdCAoXywgXywgXywgcmVzdCkgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEJvb2wgKF8sIHJlc3QpICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgQWxwaGEgcmVzdCAgICAgICAgICAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBUaGV0YSByZXN0ICAgICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEZsdXNoIHJlc3QgICAgICAgICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU3RyaW5nX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcbiAgfCBDaGFyX2xpdGVyYWwgKF8sIHJlc3QpICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IEN1c3RvbSAoXywgXywgcmVzdCkgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG5cbiAgfCBTY2FuX2NoYXJfc2V0IChfLCBfLCByZXN0KSAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgcmVzdFxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKF8sIHJlc3QpICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgU2Nhbl9uZXh0X2NoYXIgcmVzdCAgICAgICAgICAgICAgLT4gdGFrZV9mb3JtYXRfcmVhZGVycyBrIHJlc3RcblxuICB8IEZvcm1hdHRpbmdfbGl0IChfLCByZXN0KSAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCwgXykpLCByZXN0KSAtPlxuICAgICAgdGFrZV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10IGZtdCByZXN0KVxuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQsIF8pKSwgcmVzdCkgLT5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgayAoY29uY2F0X2ZtdCBmbXQgcmVzdClcblxuICB8IEZvcm1hdF9hcmcgKF8sIF8sIHJlc3QpICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayByZXN0XG4gIHwgRm9ybWF0X3N1YnN0IChfLCBmbXR0eSwgcmVzdCkgICAgLT5cbiAgICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChlcmFzZV9yZWwgKHN5bW0gZm10dHkpKSByZXN0XG4gIHwgSWdub3JlZF9wYXJhbSAoaWduLCByZXN0KSAgICAgICAgLT4gdGFrZV9pZ25vcmVkX2Zvcm1hdF9yZWFkZXJzIGsgaWduIHJlc3RcblxuICB8IEVuZF9vZl9mb3JtYXQgICAgICAgICAgICAgICAgICAgIC0+IGsgTmlsXG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGZtdHR5IGNvbWluZyBmcm9tIGEgRm9ybWF0X3N1YnN0IFwiJSguLi4lKVwiLiAqKVxuYW5kIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgOiB0eXBlIHggeSBhIGMgZCBlIGYgLlxuICAgICgoZCwgZSkgaGV0ZXJfbGlzdCAtPiBlKSAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgeCwgeSkgZm10dHkgLT5cbiAgICAgICh5LCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCB4LCBlLCBmKSBmbXQgLT4gZCA9XG5mdW4gayBmbXR0eSBmbXQgLT4gbWF0Y2ggZm10dHkgd2l0aFxuICB8IFJlYWRlcl90eSBmbXRfcmVzdCAtPlxuICAgIGZ1biByZWFkZXIgLT5cbiAgICAgIGxldCBuZXdfayByZWFkZXJzX3Jlc3QgPSBrIChDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkpIGluXG4gICAgICB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIG5ld19rIGZtdF9yZXN0IGZtdFxuICB8IElnbm9yZWRfcmVhZGVyX3R5IGZtdF9yZXN0IC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10X3Jlc3QgZm10XG4gIHwgQ2hhcl90eSByZXN0ICAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IFN0cmluZ190eSByZXN0ICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnRfdHkgcmVzdCAgICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgSW50MzJfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IE5hdGl2ZWludF90eSByZXN0ICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBJbnQ2NF90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRmxvYXRfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEJvb2xfdHkgcmVzdCAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBBbHBoYV90eSByZXN0ICAgICAgICAgICAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgVGhldGFfdHkgcmVzdCAgICAgICAgICAgICAgIC0+IHRha2VfZm10dHlfZm9ybWF0X3JlYWRlcnMgayByZXN0IGZtdFxuICB8IEFueV90eSByZXN0ICAgICAgICAgICAgICAgICAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgcmVzdCBmbXRcbiAgfCBGb3JtYXRfYXJnX3R5IChfLCByZXN0KSAgICAgLT4gdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIHJlc3QgZm10XG4gIHwgRW5kX29mX2ZtdHR5ICAgICAgICAgICAgICAgIC0+IHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcbiAgfCBGb3JtYXRfc3Vic3RfdHkgKHR5MSwgdHkyLCByZXN0KSAtPlxuICAgIGxldCB0eSA9IHRyYW5zIChzeW1tIHR5MSkgdHkyIGluXG4gICAgdGFrZV9mbXR0eV9mb3JtYXRfcmVhZGVycyBrIChjb25jYXRfZm10dHkgdHkgcmVzdCkgZm10XG5cbigqIFRha2UgcmVhZGVycyBhc3NvY2lhdGVkIHRvIGFuIGlnbm9yZWQgcGFyYW1ldGVyLiAqKVxuYW5kIHRha2VfaWdub3JlZF9mb3JtYXRfcmVhZGVycyA6IHR5cGUgeCB5IGEgYyBkIGUgZiAuXG4gICAgKChkLCBlKSBoZXRlcl9saXN0IC0+IGUpIC0+IChhLCBTY2FubmluZy5pbl9jaGFubmVsLCBjLCBkLCB4LCB5KSBpZ25vcmVkIC0+XG4gICAgICAoeSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgeCwgZSwgZikgZm10IC0+IGQgPVxuZnVuIGsgaWduIGZtdCAtPiBtYXRjaCBpZ24gd2l0aFxuICB8IElnbm9yZWRfcmVhZGVyIC0+XG4gICAgZnVuIHJlYWRlciAtPlxuICAgICAgbGV0IG5ld19rIHJlYWRlcnNfcmVzdCA9IGsgKENvbnMgKHJlYWRlciwgcmVhZGVyc19yZXN0KSkgaW5cbiAgICAgIHRha2VfZm9ybWF0X3JlYWRlcnMgbmV3X2sgZm10XG4gIHwgSWdub3JlZF9jaGFyICAgICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX2NoYXIgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zdHJpbmcgXyAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9jYW1sX3N0cmluZyBfICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQgKF8sIF8pICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQzMiAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9uYXRpdmVpbnQgKF8sIF8pICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9pbnQ2NCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mbG9hdCAoXywgXykgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9ib29sIF8gICAgICAgICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfYXJnIF8gICAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9mb3JtYXRfc3Vic3QgKF8sIGZtdHR5KSAtPiB0YWtlX2ZtdHR5X2Zvcm1hdF9yZWFkZXJzIGsgZm10dHkgZm10XG4gIHwgSWdub3JlZF9zY2FuX2NoYXJfc2V0IF8gICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX2dldF9jb3VudGVyIF8gICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG4gIHwgSWdub3JlZF9zY2FuX25leHRfY2hhciAgICAgICAgICAtPiB0YWtlX2Zvcm1hdF9yZWFkZXJzIGsgZm10XG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIEdlbmVyaWMgc2Nhbm5pbmcgKilcblxuKCogTWFrZSBhIGdlbmVyaWMgc2Nhbm5pbmcgZnVuY3Rpb24uICopXG4oKiBTY2FuIGEgc3RyZWFtIGFjY29yZGluZyB0byBhIGZvcm1hdCBhbmQgcmVhZGVycyBvYnRhaW5lZCBieVxuICAgdGFrZV9mb3JtYXRfcmVhZGVycywgYW5kIGFnZ3JlZ2F0ZSBzY2FubmVkIHZhbHVlcyBpbnRvIGFuXG4gICBoZXRlcm9nZW5lb3VzIGxpc3QuICopXG4oKiBSZXR1cm4gdGhlIGhldGVyb2dlbmVvdXMgbGlzdCBvZiBzY2FubmVkIHZhbHVlcy4gKilcbmxldCByZWMgbWFrZV9zY2FuZiA6IHR5cGUgYSBjIGQgZSBmLlxuICAgIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKGEsIFNjYW5uaW5nLmluX2NoYW5uZWwsIGMsIGQsIGUsIGYpIGZtdCAtPlxuICAgICAgKGQsIGUpIGhldGVyX2xpc3QgLT4gKGEsIGYpIGhldGVyX2xpc3QgPVxuZnVuIGliIGZtdCByZWFkZXJzIC0+IG1hdGNoIGZtdCB3aXRoXG4gIHwgQ2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NoYXIgMCBpYiBpblxuICAgIGxldCBjID0gdG9rZW5fY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IENhbWxfY2hhciByZXN0IC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfY2hhciAwIGliIGluXG4gICAgbGV0IGMgPSB0b2tlbl9jaGFyIGliIGluXG4gICAgQ29ucyAoYywgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnMpXG5cbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSBzdHApIHdpZHRoIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiBzdHJfcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcbiAgfCBTdHJpbmcgKHBhZCwgRm9ybWF0dGluZ19nZW4gKE9wZW5fdGFnIChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fc3RyaW5nIChTb21lICd7Jykgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuXG4gICAgICAgICAgICAgICAgICAgdG9rZW5fc3RyaW5nXG4gIHwgU3RyaW5nIChwYWQsIEZvcm1hdHRpbmdfZ2VuIChPcGVuX2JveCAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpKSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyAoU29tZSAnWycpIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhblxuICAgICAgICAgICAgICAgICAgIHRva2VuX3N0cmluZ1xuICB8IFN0cmluZyAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX3N0cmluZyBOb25lIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBOb19wcmVjaXNpb24gc2NhbiB0b2tlbl9zdHJpbmdcblxuICB8IENhbWxfc3RyaW5nIChwYWQsIHJlc3QpIC0+XG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5fY2FtbF9zdHJpbmcgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIE5vX3ByZWNpc2lvbiBzY2FuIHRva2VuX3N0cmluZ1xuICB8IEludCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50IGMpXG4gIHwgSW50MzIgKGljb252LCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgbGV0IGMgPSBpbnRlZ2VyX2NvbnZlcnNpb25fb2ZfY2hhciAoY2hhcl9vZl9pY29udiBpY29udikgaW5cbiAgICBsZXQgc2NhbiB3aWR0aCBfIGliID0gc2Nhbl9pbnRfY29udmVyc2lvbiBjIHdpZHRoIGliIGluXG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW4gKHRva2VuX2ludDMyIGMpXG4gIHwgTmF0aXZlaW50IChpY29udiwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIGxldCBjID0gaW50ZWdlcl9jb252ZXJzaW9uX29mX2NoYXIgKGNoYXJfb2ZfaWNvbnYgaWNvbnYpIGluXG4gICAgbGV0IHNjYW4gd2lkdGggXyBpYiA9IHNjYW5faW50X2NvbnZlcnNpb24gYyB3aWR0aCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuICh0b2tlbl9uYXRpdmVpbnQgYylcbiAgfCBJbnQ2NCAoaWNvbnYsIHBhZCwgcHJlYywgcmVzdCkgLT5cbiAgICBsZXQgYyA9IGludGVnZXJfY29udmVyc2lvbl9vZl9jaGFyIChjaGFyX29mX2ljb252IGljb252KSBpblxuICAgIGxldCBzY2FuIHdpZHRoIF8gaWIgPSBzY2FuX2ludF9jb252ZXJzaW9uIGMgd2lkdGggaWIgaW5cbiAgICBwYWRfcHJlY19zY2FuZiBpYiByZXN0IHJlYWRlcnMgcGFkIHByZWMgc2NhbiAodG9rZW5faW50NjQgYylcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9GIHwgRmxvYXRfQ0YpKSwgcGFkLCBwcmVjLCByZXN0KSAtPlxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgcHJlYyBzY2FuX2NhbWxfZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9mIHwgRmxvYXRfZSB8IEZsb2F0X0UgfCBGbG9hdF9nIHwgRmxvYXRfRykpLFxuICAgICAgICAgICBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5fZmxvYXQgdG9rZW5fZmxvYXRcbiAgfCBGbG9hdCAoKF8sIChGbG9hdF9oIHwgRmxvYXRfSCkpLCBwYWQsIHByZWMsIHJlc3QpIC0+XG4gICAgcGFkX3ByZWNfc2NhbmYgaWIgcmVzdCByZWFkZXJzIHBhZCBwcmVjIHNjYW5faGV4X2Zsb2F0IHRva2VuX2Zsb2F0XG4gIHwgQm9vbCAocGFkLCByZXN0KSAtPlxuICAgIGxldCBzY2FuIF8gXyBpYiA9IHNjYW5fYm9vbCBpYiBpblxuICAgIHBhZF9wcmVjX3NjYW5mIGliIHJlc3QgcmVhZGVycyBwYWQgTm9fcHJlY2lzaW9uIHNjYW4gdG9rZW5fYm9vbFxuICB8IEFscGhhIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJWFcXFwiXCJcbiAgfCBUaGV0YSBfIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiV0XFxcIlwiXG4gIHwgQ3VzdG9tIF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJT9cXFwiIChjdXN0b20gY29udmVydGVyKVwiXG4gIHwgUmVhZGVyIGZtdF9yZXN0IC0+XG4gICAgYmVnaW4gbWF0Y2ggcmVhZGVycyB3aXRoXG4gICAgfCBDb25zIChyZWFkZXIsIHJlYWRlcnNfcmVzdCkgLT5cbiAgICAgICAgbGV0IHggPSByZWFkZXIgaWIgaW5cbiAgICAgICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXRfcmVzdCByZWFkZXJzX3Jlc3QpXG4gICAgfCBOaWwgLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJzY2FuZjogbWlzc2luZyByZWFkZXJcIlxuICAgIGVuZFxuICB8IEZsdXNoIHJlc3QgLT5cbiAgICBpZiBTY2FubmluZy5lbmRfb2ZfaW5wdXQgaWIgdGhlbiBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICAgIGVsc2UgYmFkX2lucHV0IFwiZW5kIG9mIGlucHV0IG5vdCBmb3VuZFwiXG5cbiAgfCBTdHJpbmdfbGl0ZXJhbCAoc3RyLCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSBzdHI7XG4gICAgbWFrZV9zY2FuZiBpYiByZXN0IHJlYWRlcnNcbiAgfCBDaGFyX2xpdGVyYWwgKGNociwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliIGNocjtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuXG4gIHwgRm9ybWF0X2FyZyAocGFkX29wdCwgZm10dHksIHJlc3QpIC0+XG4gICAgbGV0IF8gPSBzY2FuX2NhbWxfc3RyaW5nICh3aWR0aF9vZl9wYWRfb3B0IHBhZF9vcHQpIGliIGluXG4gICAgbGV0IHMgPSB0b2tlbl9zdHJpbmcgaWIgaW5cbiAgICBsZXQgZm10ID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2ZtdHR5IHMgZm10dHlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoZm10LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBGb3JtYXRfc3Vic3QgKHBhZF9vcHQsIGZtdHR5LCByZXN0KSAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyAod2lkdGhfb2ZfcGFkX29wdCBwYWRfb3B0KSBpYiBpblxuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IGZtdCwgZm10JyA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IEZtdF9FQkIgZm10ID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICBsZXQgRm10X0VCQiBmbXQnID0gZm10X2ViYl9vZl9zdHJpbmcgcyBpblxuICAgICAgICAoKiBUT0RPOiBmaW5kIGEgd2F5IHRvIGF2b2lkIHJlcGFyc2luZyB0d2ljZSAqKVxuXG4gICAgICAgICgqIFRPRE86IHRoZXNlIHR5cGUtY2hlY2tzIGJlbG93ICpjYW4qIGZhaWwgYmVjYXVzZSBvZiB0eXBlXG4gICAgICAgICAgIGFtYmlndWl0eSBpbiBwcmVzZW5jZSBvZiBpZ25vcmVkLXJlYWRlcnM6IFwiJV9yJWRcIiBhbmQgXCIlZCVfclwiXG4gICAgICAgICAgIGFyZSB0eXBlZCBpbiB0aGUgc2FtZSB3YXkuXG5cbiAgICAgICAgICAgIyBTY2FuZi5zc2NhbmYgXCJcXFwiJV9yJWRcXFwiM1wiIFwiJSglZCVfciUpXCIgaWdub3JlXG4gICAgICAgICAgICAgKGZ1biBmbXQgbiAtPiBzdHJpbmdfb2ZfZm9ybWF0IGZtdCwgbilcbiAgICAgICAgICAgRXhjZXB0aW9uOiBDYW1saW50ZXJuYWxGb3JtYXQuVHlwZV9taXNtYXRjaC5cblxuICAgICAgICAgICBXZSBzaG91bGQgcHJvcGVybHkgY2F0Y2ggdGhpcyBleGNlcHRpb24uXG4gICAgICAgICopXG4gICAgICAgIHR5cGVfZm9ybWF0IGZtdCAoZXJhc2VfcmVsIGZtdHR5KSxcbiAgICAgICAgdHlwZV9mb3JtYXQgZm10JyAoZXJhc2VfcmVsIChzeW1tIGZtdHR5KSlcbiAgICAgIHdpdGggRmFpbHVyZSBtc2cgLT4gYmFkX2lucHV0IG1zZ1xuICAgIGluXG4gICAgQ29ucyAoRm9ybWF0IChmbXQsIHMpLFxuICAgICAgICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzKVxuXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgRm9ybWF0dGluZ19saXQgKGZtdGluZ19saXQsIHJlc3QpKSAtPlxuICAgIGxldCBzdHAsIHN0ciA9IHN0b3BwZXJfb2ZfZm9ybWF0dGluZ19saXQgZm10aW5nX2xpdCBpblxuICAgIGxldCB3aWR0aCA9IHdpZHRoX29mX3BhZF9vcHQgd2lkdGhfb3B0IGluXG4gICAgc2Nhbl9jaGFyc19pbl9jaGFyX3NldCBjaGFyX3NldCAoU29tZSBzdHApIHdpZHRoIGliO1xuICAgIGxldCBzID0gdG9rZW5fc3RyaW5nIGliIGluXG4gICAgbGV0IHN0cl9yZXN0ID0gU3RyaW5nX2xpdGVyYWwgKHN0ciwgcmVzdCkgaW5cbiAgICBDb25zIChzLCBtYWtlX3NjYW5mIGliIHN0cl9yZXN0IHJlYWRlcnMpXG4gIHwgU2Nhbl9jaGFyX3NldCAod2lkdGhfb3B0LCBjaGFyX3NldCwgcmVzdCkgLT5cbiAgICBsZXQgd2lkdGggPSB3aWR0aF9vZl9wYWRfb3B0IHdpZHRoX29wdCBpblxuICAgIHNjYW5fY2hhcnNfaW5fY2hhcl9zZXQgY2hhcl9zZXQgTm9uZSB3aWR0aCBpYjtcbiAgICBsZXQgcyA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIENvbnMgKHMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuICB8IFNjYW5fZ2V0X2NvdW50ZXIgKGNvdW50ZXIsIHJlc3QpIC0+XG4gICAgbGV0IGNvdW50ID0gZ2V0X2NvdW50ZXIgaWIgY291bnRlciBpblxuICAgIENvbnMgKGNvdW50LCBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVycylcbiAgfCBTY2FuX25leHRfY2hhciByZXN0IC0+XG4gICAgbGV0IGMgPSBTY2FubmluZy5jaGVja2VkX3BlZWtfY2hhciBpYiBpblxuICAgIENvbnMgKGMsIG1ha2Vfc2NhbmYgaWIgcmVzdCByZWFkZXJzKVxuXG4gIHwgRm9ybWF0dGluZ19saXQgKGZvcm1hdHRpbmdfbGl0LCByZXN0KSAtPlxuICAgIFN0cmluZy5pdGVyIChjaGVja19jaGFyIGliKSAoc3RyaW5nX29mX2Zvcm1hdHRpbmdfbGl0IGZvcm1hdHRpbmdfbGl0KTtcbiAgICBtYWtlX3NjYW5mIGliIHJlc3QgcmVhZGVyc1xuICB8IEZvcm1hdHRpbmdfZ2VuIChPcGVuX3RhZyAoRm9ybWF0IChmbXQnLCBfKSksIHJlc3QpIC0+XG4gICAgY2hlY2tfY2hhciBpYiAnQCc7IGNoZWNrX2NoYXIgaWIgJ3snO1xuICAgIG1ha2Vfc2NhbmYgaWIgKGNvbmNhdF9mbXQgZm10JyByZXN0KSByZWFkZXJzXG4gIHwgRm9ybWF0dGluZ19nZW4gKE9wZW5fYm94IChGb3JtYXQgKGZtdCcsIF8pKSwgcmVzdCkgLT5cbiAgICBjaGVja19jaGFyIGliICdAJzsgY2hlY2tfY2hhciBpYiAnWyc7XG4gICAgbWFrZV9zY2FuZiBpYiAoY29uY2F0X2ZtdCBmbXQnIHJlc3QpIHJlYWRlcnNcblxuICB8IElnbm9yZWRfcGFyYW0gKGlnbiwgcmVzdCkgLT5cbiAgICBsZXQgUGFyYW1fZm9ybWF0X0VCQiBmbXQnID0gcGFyYW1fZm9ybWF0X29mX2lnbm9yZWRfZm9ybWF0IGlnbiByZXN0IGluXG4gICAgYmVnaW4gbWF0Y2ggbWFrZV9zY2FuZiBpYiBmbXQnIHJlYWRlcnMgd2l0aFxuICAgIHwgQ29ucyAoXywgYXJnX3Jlc3QpIC0+IGFyZ19yZXN0XG4gICAgfCBOaWwgLT4gYXNzZXJ0IGZhbHNlXG4gICAgZW5kXG5cbiAgfCBFbmRfb2ZfZm9ybWF0IC0+XG4gICAgTmlsXG5cbigqIENhc2UgYW5hbHlzaXMgb24gcGFkZGluZyBhbmQgcHJlY2lzaW9uLiAqKVxuKCogUmVqZWN0IGZvcm1hdHMgY29udGFpbmluZyBcIiUqXCIgb3IgXCIlLipcIi4gKilcbigqIFBhc3MgcGFkZGluZyBhbmQgcHJlY2lzaW9uIHRvIHRoZSBnZW5lcmljIHNjYW5uZXIgYHNjYW4nLiAqKVxuYW5kIHBhZF9wcmVjX3NjYW5mIDogdHlwZSBhIGMgZCBlIGYgeCB5IHogdCAuXG4gICAgU2Nhbm5pbmcuaW5fY2hhbm5lbCAtPiAoYSwgU2Nhbm5pbmcuaW5fY2hhbm5lbCwgYywgZCwgZSwgZikgZm10IC0+XG4gICAgICAoZCwgZSkgaGV0ZXJfbGlzdCAtPiAoeCwgeSkgcGFkZGluZyAtPiAoeSwgeiAtPiBhKSBwcmVjaXNpb24gLT5cbiAgICAgIChpbnQgLT4gaW50IC0+IFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gdCkgLT5cbiAgICAgIChTY2FubmluZy5pbl9jaGFubmVsIC0+IHopIC0+XG4gICAgICAoeCwgZikgaGV0ZXJfbGlzdCA9XG5mdW4gaWIgZm10IHJlYWRlcnMgcGFkIHByZWMgc2NhbiB0b2tlbiAtPiBtYXRjaCBwYWQsIHByZWMgd2l0aFxuICB8IE5vX3BhZGRpbmcsIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiBtYXhfaW50IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBOb19wYWRkaW5nLCBMaXRfcHJlY2lzaW9uIHAgLT5cbiAgICBsZXQgXyA9IHNjYW4gbWF4X2ludCBwIGliIGluXG4gICAgbGV0IHggPSB0b2tlbiBpYiBpblxuICAgIENvbnMgKHgsIG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpXG4gIHwgTGl0X3BhZGRpbmcgKChSaWdodCB8IFplcm9zKSwgdyksIE5vX3ByZWNpc2lvbiAtPlxuICAgIGxldCBfID0gc2NhbiB3IG1heF9pbnQgaWIgaW5cbiAgICBsZXQgeCA9IHRva2VuIGliIGluXG4gICAgQ29ucyAoeCwgbWFrZV9zY2FuZiBpYiBmbXQgcmVhZGVycylcbiAgfCBMaXRfcGFkZGluZyAoKFJpZ2h0IHwgWmVyb3MpLCB3KSwgTGl0X3ByZWNpc2lvbiBwIC0+XG4gICAgbGV0IF8gPSBzY2FuIHcgcCBpYiBpblxuICAgIGxldCB4ID0gdG9rZW4gaWIgaW5cbiAgICBDb25zICh4LCBtYWtlX3NjYW5mIGliIGZtdCByZWFkZXJzKVxuICB8IExpdF9wYWRkaW5nIChMZWZ0LCBfKSwgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlLVxcXCJcIlxuICB8IExpdF9wYWRkaW5nICgoUmlnaHQgfCBaZXJvcyksIF8pLCBBcmdfcHJlY2lzaW9uIC0+XG4gICAgaW52YWxpZF9hcmcgXCJzY2FuZjogYmFkIGNvbnZlcnNpb24gXFxcIiUqXFxcIlwiXG4gIHwgQXJnX3BhZGRpbmcgXywgXyAtPlxuICAgIGludmFsaWRfYXJnIFwic2NhbmY6IGJhZCBjb252ZXJzaW9uIFxcXCIlKlxcXCJcIlxuICB8IE5vX3BhZGRpbmcsIEFyZ19wcmVjaXNpb24gLT5cbiAgICBpbnZhbGlkX2FyZyBcInNjYW5mOiBiYWQgY29udmVyc2lvbiBcXFwiJSpcXFwiXCJcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICAgICAgICgqIERlZmluaW5nIFtzY2FuZl0gYW5kIHZhcmlvdXMgZmxhdm9ycyBvZiBbc2NhbmZdICopXG5cbnR5cGUgJ2Ega3NjYW5mX3Jlc3VsdCA9IEFyZ3Mgb2YgJ2EgfCBFeGMgb2YgZXhuXG5cbmxldCBrc2NhbmYgaWIgZWYgKEZvcm1hdCAoZm10LCBzdHIpKSA9XG4gIGxldCByZWMgYXBwbHkgOiB0eXBlIGEgYiAuIGEgLT4gKGEsIGIpIGhldGVyX2xpc3QgLT4gYiA9XG4gICAgZnVuIGYgYXJncyAtPiBtYXRjaCBhcmdzIHdpdGhcbiAgICB8IENvbnMgKHgsIHIpIC0+IGFwcGx5IChmIHgpIHJcbiAgICB8IE5pbCAtPiBmXG4gIGluXG4gIGxldCBrIHJlYWRlcnMgZiA9XG4gICAgU2Nhbm5pbmcucmVzZXRfdG9rZW4gaWI7XG4gICAgbWF0Y2ggdHJ5IEFyZ3MgKG1ha2Vfc2NhbmYgaWIgZm10IHJlYWRlcnMpIHdpdGhcbiAgICAgIHwgKFNjYW5fZmFpbHVyZSBfIHwgRmFpbHVyZSBfIHwgRW5kX29mX2ZpbGUpIGFzIGV4YyAtPiBFeGMgZXhjXG4gICAgICB8IEludmFsaWRfYXJndW1lbnQgbXNnIC0+XG4gICAgICAgIGludmFsaWRfYXJnIChtc2cgXiBcIiBpbiBmb3JtYXQgXFxcIlwiIF4gU3RyaW5nLmVzY2FwZWQgc3RyIF4gXCJcXFwiXCIpXG4gICAgd2l0aFxuICAgICAgfCBBcmdzIGFyZ3MgLT4gYXBwbHkgZiBhcmdzXG4gICAgICB8IEV4YyBleGMgLT4gZWYgaWIgZXhjXG4gIGluXG4gIHRha2VfZm9ybWF0X3JlYWRlcnMgayBmbXRcblxuKCoqKilcblxubGV0IGtic2NhbmYgPSBrc2NhbmZcbmxldCBic2NhbmYgaWIgZm10ID0ga2JzY2FuZiBpYiBzY2FuZl9iYWRfaW5wdXQgZm10XG5cbmxldCBrc3NjYW5mIHMgZWYgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZWYgZm10XG5sZXQgc3NjYW5mIHMgZm10ID0ga2JzY2FuZiAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgc2NhbmZfYmFkX2lucHV0IGZtdFxuXG5sZXQgc2NhbmYgZm10ID0ga3NjYW5mIFNjYW5uaW5nLnN0ZGliIHNjYW5mX2JhZF9pbnB1dCBmbXRcblxuKCoqKilcblxuKCogU2Nhbm5pbmcgZm9ybWF0IHN0cmluZ3MuICopXG5sZXQgYnNjYW5mX2Zvcm1hdCA6XG4gIFNjYW5uaW5nLmluX2NoYW5uZWwgLT4gKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT5cbiAgKCgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmKSBmb3JtYXQ2IC0+ICdnKSAtPiAnZyA9XG4gIGZ1biBpYiBmb3JtYXQgZiAtPlxuICAgIGxldCBfID0gc2Nhbl9jYW1sX3N0cmluZyBtYXhfaW50IGliIGluXG4gICAgbGV0IHN0ciA9IHRva2VuX3N0cmluZyBpYiBpblxuICAgIGxldCBmbXQnID1cbiAgICAgIHRyeSBmb3JtYXRfb2Zfc3RyaW5nX2Zvcm1hdCBzdHIgZm9ybWF0XG4gICAgICB3aXRoIEZhaWx1cmUgbXNnIC0+IGJhZF9pbnB1dCBtc2cgaW5cbiAgICBmIGZtdCdcblxuXG5sZXQgc3NjYW5mX2Zvcm1hdCA6XG4gIHN0cmluZyAtPiAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZikgZm9ybWF0NiAtPlxuICAoKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIGZvcm1hdDYgLT4gJ2cpIC0+ICdnID1cbiAgZnVuIHMgZm9ybWF0IGYgLT4gYnNjYW5mX2Zvcm1hdCAoU2Nhbm5pbmcuZnJvbV9zdHJpbmcgcykgZm9ybWF0IGZcblxuXG5sZXQgZm9ybWF0X2Zyb21fc3RyaW5nIHMgZm10ID1cbiAgc3NjYW5mX2Zvcm1hdCAoXCJcXFwiXCIgXiBTdHJpbmcuZXNjYXBlZCBzIF4gXCJcXFwiXCIpIGZtdCAoZnVuIHggLT4geClcblxuXG5sZXQgdW5lc2NhcGVkIHMgPVxuICBzc2NhbmYgKFwiXFxcIlwiIF4gcyBeIFwiXFxcIlwiKSBcIiVTJSFcIiAoZnVuIHggLT4geClcblxuXG4oKiBEZXByZWNhdGVkICopXG5sZXQga2ZzY2FuZiBpYyBlZiBmbXQgPSBrYnNjYW5mIChTY2FubmluZy5tZW1vX2Zyb21fY2hhbm5lbCBpYykgZWYgZm10XG5sZXQgZnNjYW5mIGljIGZtdCA9IGtzY2FuZiAoU2Nhbm5pbmcubWVtb19mcm9tX2NoYW5uZWwgaWMpIHNjYW5mX2JhZF9pbnB1dCBmbXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogUmVnaXN0ZXJpbmcgT0NhbWwgdmFsdWVzIHdpdGggdGhlIEMgcnVudGltZSBmb3IgbGF0ZXIgY2FsbGJhY2tzICopXG5cbmV4dGVybmFsIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIDogc3RyaW5nIC0+IE9iai50IC0+IHVuaXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gXCJjYW1sX3JlZ2lzdGVyX25hbWVkX3ZhbHVlXCJcblxubGV0IHJlZ2lzdGVyIG5hbWUgdiA9XG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgKE9iai5yZXByIHYpXG5cbmxldCByZWdpc3Rlcl9leGNlcHRpb24gbmFtZSAoZXhuIDogZXhuKSA9XG4gIGxldCBleG4gPSBPYmoucmVwciBleG4gaW5cbiAgbGV0IHNsb3QgPSBpZiBPYmoudGFnIGV4biA9IE9iai5vYmplY3RfdGFnIHRoZW4gZXhuIGVsc2UgT2JqLmZpZWxkIGV4biAwIGluXG4gIHJlZ2lzdGVyX25hbWVkX3ZhbHVlIG5hbWUgc2xvdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgSmVyb21lIFZvdWlsbG9uLCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMjAwMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIE9ialxuXG4oKioqKiBPYmplY3QgcmVwcmVzZW50YXRpb24gKioqKilcblxuZXh0ZXJuYWwgc2V0X2lkOiAnYSAtPiAnYSA9IFwiY2FtbF9zZXRfb29faWRcIiBbQEBub2FsbG9jXVxuXG4oKioqKiBPYmplY3QgY29weSAqKioqKVxuXG5sZXQgY29weSBvID1cbiAgbGV0IG8gPSAoT2JqLm9iaiAoT2JqLmR1cCAoT2JqLnJlcHIgbykpKSBpblxuICBzZXRfaWQgb1xuXG4oKioqKiBDb21wcmVzc2lvbiBvcHRpb25zICoqKiopXG4oKiBQYXJhbWV0ZXJzICopXG50eXBlIHBhcmFtcyA9IHtcbiAgICBtdXRhYmxlIGNvbXBhY3RfdGFibGUgOiBib29sO1xuICAgIG11dGFibGUgY29weV9wYXJlbnQgOiBib29sO1xuICAgIG11dGFibGUgY2xlYW5fd2hlbl9jb3B5aW5nIDogYm9vbDtcbiAgICBtdXRhYmxlIHJldHJ5X2NvdW50IDogaW50O1xuICAgIG11dGFibGUgYnVja2V0X3NtYWxsX3NpemUgOiBpbnRcbiAgfVxuXG5sZXQgcGFyYW1zID0ge1xuICBjb21wYWN0X3RhYmxlID0gdHJ1ZTtcbiAgY29weV9wYXJlbnQgPSB0cnVlO1xuICBjbGVhbl93aGVuX2NvcHlpbmcgPSB0cnVlO1xuICByZXRyeV9jb3VudCA9IDM7XG4gIGJ1Y2tldF9zbWFsbF9zaXplID0gMTZcbn1cblxuKCoqKiogUGFyYW1ldGVycyAqKioqKVxuXG5sZXQgaW5pdGlhbF9vYmplY3Rfc2l6ZSA9IDJcblxuKCoqKiogSXRlbXMgKioqKilcblxudHlwZSBpdGVtID0gRHVtbXlBIHwgRHVtbXlCIHwgRHVtbXlDIG9mIGludFxubGV0IF8gPSBbRHVtbXlBOyBEdW1teUI7IER1bW15QyAwXSAoKiB0byBhdm9pZCB3YXJuaW5ncyAqKVxuXG5sZXQgZHVtbXlfaXRlbSA9IChtYWdpYyAoKSA6IGl0ZW0pXG5cbigqKioqIFR5cGVzICoqKiopXG5cbnR5cGUgdGFnXG50eXBlIGxhYmVsID0gaW50XG50eXBlIGNsb3N1cmUgPSBpdGVtXG50eXBlIHQgPSBEdW1teUEgfCBEdW1teUIgfCBEdW1teUMgb2YgaW50XG5sZXQgXyA9IFtEdW1teUE7IER1bW15QjsgRHVtbXlDIDBdICgqIHRvIGF2b2lkIHdhcm5pbmdzICopXG5cbnR5cGUgb2JqID0gdCBhcnJheVxuZXh0ZXJuYWwgcmV0IDogKG9iaiAtPiAnYSkgLT4gY2xvc3VyZSA9IFwiJWlkZW50aXR5XCJcblxuKCoqKiogTGFiZWxzICoqKiopXG5cbmxldCBwdWJsaWNfbWV0aG9kX2xhYmVsIHMgOiB0YWcgPVxuICBsZXQgYWNjdSA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgYWNjdSA6PSAyMjMgKiAhYWNjdSArIENoYXIuY29kZSBzLltpXVxuICBkb25lO1xuICAoKiByZWR1Y2UgdG8gMzEgYml0cyAqKVxuICBhY2N1IDo9ICFhY2N1IGxhbmQgKDEgbHNsIDMxIC0gMSk7XG4gICgqIG1ha2UgaXQgc2lnbmVkIGZvciA2NCBiaXRzIGFyY2hpdGVjdHVyZXMgKilcbiAgbGV0IHRhZyA9IGlmICFhY2N1ID4gMHgzRkZGRkZGRiB0aGVuICFhY2N1IC0gKDEgbHNsIDMxKSBlbHNlICFhY2N1IGluXG4gICgqIFByaW50Zi5lcHJpbnRmIFwiJXMgPSAlZFxcblwiIHMgdGFnOyBmbHVzaCBzdGRlcnI7ICopXG4gIG1hZ2ljIHRhZ1xuXG4oKioqKiBTcGFyc2UgYXJyYXkgKioqKilcblxubW9kdWxlIFZhcnMgPVxuICBNYXAuTWFrZShzdHJ1Y3QgdHlwZSB0ID0gc3RyaW5nIGxldCBjb21wYXJlICh4OnQpIHkgPSBjb21wYXJlIHggeSBlbmQpXG50eXBlIHZhcnMgPSBpbnQgVmFycy50XG5cbm1vZHVsZSBNZXRocyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBzdHJpbmcgbGV0IGNvbXBhcmUgKHg6dCkgeSA9IGNvbXBhcmUgeCB5IGVuZClcbnR5cGUgbWV0aHMgPSBsYWJlbCBNZXRocy50XG5tb2R1bGUgTGFicyA9XG4gIE1hcC5NYWtlKHN0cnVjdCB0eXBlIHQgPSBsYWJlbCBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxudHlwZSBsYWJzID0gYm9vbCBMYWJzLnRcblxuKCogVGhlIGNvbXBpbGVyIGFzc3VtZXMgdGhhdCB0aGUgZmlyc3QgZmllbGQgb2YgdGhpcyBzdHJ1Y3R1cmUgaXMgW3NpemVdLiAqKVxudHlwZSB0YWJsZSA9XG4geyBtdXRhYmxlIHNpemU6IGludDtcbiAgIG11dGFibGUgbWV0aG9kczogY2xvc3VyZSBhcnJheTtcbiAgIG11dGFibGUgbWV0aG9kc19ieV9uYW1lOiBtZXRocztcbiAgIG11dGFibGUgbWV0aG9kc19ieV9sYWJlbDogbGFicztcbiAgIG11dGFibGUgcHJldmlvdXNfc3RhdGVzOlxuICAgICAobWV0aHMgKiBsYWJzICogKGxhYmVsICogaXRlbSkgbGlzdCAqIHZhcnMgKlxuICAgICAgbGFiZWwgbGlzdCAqIHN0cmluZyBsaXN0KSBsaXN0O1xuICAgbXV0YWJsZSBoaWRkZW5fbWV0aHM6IChsYWJlbCAqIGl0ZW0pIGxpc3Q7XG4gICBtdXRhYmxlIHZhcnM6IHZhcnM7XG4gICBtdXRhYmxlIGluaXRpYWxpemVyczogKG9iaiAtPiB1bml0KSBsaXN0IH1cblxubGV0IGR1bW15X3RhYmxlID1cbiAgeyBtZXRob2RzID0gW3wgZHVtbXlfaXRlbSB8XTtcbiAgICBtZXRob2RzX2J5X25hbWUgPSBNZXRocy5lbXB0eTtcbiAgICBtZXRob2RzX2J5X2xhYmVsID0gTGFicy5lbXB0eTtcbiAgICBwcmV2aW91c19zdGF0ZXMgPSBbXTtcbiAgICBoaWRkZW5fbWV0aHMgPSBbXTtcbiAgICB2YXJzID0gVmFycy5lbXB0eTtcbiAgICBpbml0aWFsaXplcnMgPSBbXTtcbiAgICBzaXplID0gMCB9XG5cbmxldCB0YWJsZV9jb3VudCA9IHJlZiAwXG5cbigqIGR1bW15X21ldCBzaG91bGQgYmUgYSBwb2ludGVyLCBzbyB1c2UgYW4gYXRvbSAqKVxubGV0IGR1bW15X21ldCA6IGl0ZW0gPSBvYmogKE9iai5uZXdfYmxvY2sgMCAwKVxuKCogaWYgZGVidWdnaW5nIGlzIG5lZWRlZCwgdGhpcyBjb3VsZCBiZSBhIGdvb2QgaWRlYTogKilcbigqIGxldCBkdW1teV9tZXQgKCkgPSBmYWlsd2l0aCBcIlVuZGVmaW5lZCBtZXRob2RcIiAqKVxuXG5sZXQgcmVjIGZpdF9zaXplIG4gPVxuICBpZiBuIDw9IDIgdGhlbiBuIGVsc2VcbiAgZml0X3NpemUgKChuKzEpLzIpICogMlxuXG5sZXQgbmV3X3RhYmxlIHB1Yl9sYWJlbHMgPVxuICBpbmNyIHRhYmxlX2NvdW50O1xuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIHB1Yl9sYWJlbHMgaW5cbiAgbGV0IG1ldGhvZHMgPSBBcnJheS5tYWtlIChsZW4qMisyKSBkdW1teV9tZXQgaW5cbiAgbWV0aG9kcy4oMCkgPC0gbWFnaWMgbGVuO1xuICBtZXRob2RzLigxKSA8LSBtYWdpYyAoZml0X3NpemUgbGVuICogU3lzLndvcmRfc2l6ZSAvIDggLSAxKTtcbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG8gbWV0aG9kcy4oaSoyKzMpIDwtIG1hZ2ljIHB1Yl9sYWJlbHMuKGkpIGRvbmU7XG4gIHsgbWV0aG9kcyA9IG1ldGhvZHM7XG4gICAgbWV0aG9kc19ieV9uYW1lID0gTWV0aHMuZW1wdHk7XG4gICAgbWV0aG9kc19ieV9sYWJlbCA9IExhYnMuZW1wdHk7XG4gICAgcHJldmlvdXNfc3RhdGVzID0gW107XG4gICAgaGlkZGVuX21ldGhzID0gW107XG4gICAgdmFycyA9IFZhcnMuZW1wdHk7XG4gICAgaW5pdGlhbGl6ZXJzID0gW107XG4gICAgc2l6ZSA9IGluaXRpYWxfb2JqZWN0X3NpemUgfVxuXG5sZXQgcmVzaXplIGFycmF5IG5ld19zaXplID1cbiAgbGV0IG9sZF9zaXplID0gQXJyYXkubGVuZ3RoIGFycmF5Lm1ldGhvZHMgaW5cbiAgaWYgbmV3X3NpemUgPiBvbGRfc2l6ZSB0aGVuIGJlZ2luXG4gICAgbGV0IG5ld19idWNrID0gQXJyYXkubWFrZSBuZXdfc2l6ZSBkdW1teV9tZXQgaW5cbiAgICBBcnJheS5ibGl0IGFycmF5Lm1ldGhvZHMgMCBuZXdfYnVjayAwIG9sZF9zaXplO1xuICAgIGFycmF5Lm1ldGhvZHMgPC0gbmV3X2J1Y2tcbiBlbmRcblxubGV0IHB1dCBhcnJheSBsYWJlbCBlbGVtZW50ID1cbiAgcmVzaXplIGFycmF5IChsYWJlbCArIDEpO1xuICBhcnJheS5tZXRob2RzLihsYWJlbCkgPC0gZWxlbWVudFxuXG4oKioqKiBDbGFzc2VzICoqKiopXG5cbmxldCBtZXRob2RfY291bnQgPSByZWYgMFxubGV0IGluc3RfdmFyX2NvdW50ID0gcmVmIDBcblxuKCogdHlwZSB0ICopXG50eXBlIG1ldGggPSBpdGVtXG5cbmxldCBuZXdfbWV0aG9kIHRhYmxlID1cbiAgbGV0IGluZGV4ID0gQXJyYXkubGVuZ3RoIHRhYmxlLm1ldGhvZHMgaW5cbiAgcmVzaXplIHRhYmxlIChpbmRleCArIDEpO1xuICBpbmRleFxuXG5sZXQgZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBuYW1lID1cbiAgdHJ5XG4gICAgTWV0aHMuZmluZCBuYW1lIHRhYmxlLm1ldGhvZHNfYnlfbmFtZVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBsYWJlbCA9IG5ld19tZXRob2QgdGFibGUgaW5cbiAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgPC0gTWV0aHMuYWRkIG5hbWUgbGFiZWwgdGFibGUubWV0aG9kc19ieV9uYW1lO1xuICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiZWwgdHJ1ZSB0YWJsZS5tZXRob2RzX2J5X2xhYmVsO1xuICAgIGxhYmVsXG5cbmxldCBnZXRfbWV0aG9kX2xhYmVscyB0YWJsZSBuYW1lcyA9XG4gIEFycmF5Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgbmFtZXNcblxubGV0IHNldF9tZXRob2QgdGFibGUgbGFiZWwgZWxlbWVudCA9XG4gIGluY3IgbWV0aG9kX2NvdW50O1xuICBpZiBMYWJzLmZpbmQgbGFiZWwgdGFibGUubWV0aG9kc19ieV9sYWJlbCB0aGVuXG4gICAgcHV0IHRhYmxlIGxhYmVsIGVsZW1lbnRcbiAgZWxzZVxuICAgIHRhYmxlLmhpZGRlbl9tZXRocyA8LSAobGFiZWwsIGVsZW1lbnQpIDo6IHRhYmxlLmhpZGRlbl9tZXRoc1xuXG5sZXQgZ2V0X21ldGhvZCB0YWJsZSBsYWJlbCA9XG4gIHRyeSBMaXN0LmFzc29jIGxhYmVsIHRhYmxlLmhpZGRlbl9tZXRoc1xuICB3aXRoIE5vdF9mb3VuZCAtPiB0YWJsZS5tZXRob2RzLihsYWJlbClcblxubGV0IHRvX2xpc3QgYXJyID1cbiAgaWYgYXJyID09IG1hZ2ljIDAgdGhlbiBbXSBlbHNlIEFycmF5LnRvX2xpc3QgYXJyXG5cbmxldCBuYXJyb3cgdGFibGUgdmFycyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzID1cbiAgbGV0IHZhcnMgPSB0b19saXN0IHZhcnNcbiAgYW5kIHZpcnRfbWV0aHMgPSB0b19saXN0IHZpcnRfbWV0aHNcbiAgYW5kIGNvbmNyX21ldGhzID0gdG9fbGlzdCBjb25jcl9tZXRocyBpblxuICBsZXQgdmlydF9tZXRoX2xhYnMgPSBMaXN0Lm1hcCAoZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSkgdmlydF9tZXRocyBpblxuICBsZXQgY29uY3JfbWV0aF9sYWJzID0gTGlzdC5tYXAgKGdldF9tZXRob2RfbGFiZWwgdGFibGUpIGNvbmNyX21ldGhzIGluXG4gIHRhYmxlLnByZXZpb3VzX3N0YXRlcyA8LVxuICAgICAodGFibGUubWV0aG9kc19ieV9uYW1lLCB0YWJsZS5tZXRob2RzX2J5X2xhYmVsLCB0YWJsZS5oaWRkZW5fbWV0aHMsXG4gICAgICB0YWJsZS52YXJzLCB2aXJ0X21ldGhfbGFicywgdmFycylcbiAgICAgOjogdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgVmFycy5mb2xkXG4gICAgICAoZnVuIGxhYiBpbmZvIHR2YXJzIC0+XG4gICAgICAgIGlmIExpc3QubWVtIGxhYiB2YXJzIHRoZW4gVmFycy5hZGQgbGFiIGluZm8gdHZhcnMgZWxzZSB0dmFycylcbiAgICAgIHRhYmxlLnZhcnMgVmFycy5lbXB0eTtcbiAgbGV0IGJ5X25hbWUgPSByZWYgTWV0aHMuZW1wdHkgaW5cbiAgbGV0IGJ5X2xhYmVsID0gcmVmIExhYnMuZW1wdHkgaW5cbiAgTGlzdC5pdGVyMlxuICAgIChmdW4gbWV0IGxhYmVsIC0+XG4gICAgICAgYnlfbmFtZSA6PSBNZXRocy5hZGQgbWV0IGxhYmVsICFieV9uYW1lO1xuICAgICAgIGJ5X2xhYmVsIDo9XG4gICAgICAgICAgTGFicy5hZGQgbGFiZWxcbiAgICAgICAgICAgICh0cnkgTGFicy5maW5kIGxhYmVsIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZSlcbiAgICAgICAgICAgICFieV9sYWJlbClcbiAgICBjb25jcl9tZXRocyBjb25jcl9tZXRoX2xhYnM7XG4gIExpc3QuaXRlcjJcbiAgICAoZnVuIG1ldCBsYWJlbCAtPlxuICAgICAgIGJ5X25hbWUgOj0gTWV0aHMuYWRkIG1ldCBsYWJlbCAhYnlfbmFtZTtcbiAgICAgICBieV9sYWJlbCA6PSBMYWJzLmFkZCBsYWJlbCBmYWxzZSAhYnlfbGFiZWwpXG4gICAgdmlydF9tZXRocyB2aXJ0X21ldGhfbGFicztcbiAgdGFibGUubWV0aG9kc19ieV9uYW1lIDwtICFieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtICFieV9sYWJlbDtcbiAgdGFibGUuaGlkZGVuX21ldGhzIDwtXG4gICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgIChmdW4gKChsYWIsIF8pIGFzIG1ldCkgaG0gLT5cbiAgICAgICAgICBpZiBMaXN0Lm1lbSBsYWIgdmlydF9tZXRoX2xhYnMgdGhlbiBobSBlbHNlIG1ldDo6aG0pXG4gICAgICAgdGFibGUuaGlkZGVuX21ldGhzXG4gICAgICAgW11cblxubGV0IHdpZGVuIHRhYmxlID1cbiAgbGV0IChieV9uYW1lLCBieV9sYWJlbCwgc2F2ZWRfaGlkZGVuX21ldGhzLCBzYXZlZF92YXJzLCB2aXJ0X21ldGhzLCB2YXJzKSA9XG4gICAgTGlzdC5oZCB0YWJsZS5wcmV2aW91c19zdGF0ZXNcbiAgaW5cbiAgdGFibGUucHJldmlvdXNfc3RhdGVzIDwtIExpc3QudGwgdGFibGUucHJldmlvdXNfc3RhdGVzO1xuICB0YWJsZS52YXJzIDwtXG4gICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biBzIHYgLT4gVmFycy5hZGQgdiAoVmFycy5maW5kIHYgdGFibGUudmFycykgcylcbiAgICAgICBzYXZlZF92YXJzIHZhcnM7XG4gIHRhYmxlLm1ldGhvZHNfYnlfbmFtZSA8LSBieV9uYW1lO1xuICB0YWJsZS5tZXRob2RzX2J5X2xhYmVsIDwtIGJ5X2xhYmVsO1xuICB0YWJsZS5oaWRkZW5fbWV0aHMgPC1cbiAgICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoKGxhYiwgXykgYXMgbWV0KSBobSAtPlxuICAgICAgICAgIGlmIExpc3QubWVtIGxhYiB2aXJ0X21ldGhzIHRoZW4gaG0gZWxzZSBtZXQ6OmhtKVxuICAgICAgIHRhYmxlLmhpZGRlbl9tZXRoc1xuICAgICAgIHNhdmVkX2hpZGRlbl9tZXRoc1xuXG5sZXQgbmV3X3Nsb3QgdGFibGUgPVxuICBsZXQgaW5kZXggPSB0YWJsZS5zaXplIGluXG4gIHRhYmxlLnNpemUgPC0gaW5kZXggKyAxO1xuICBpbmRleFxuXG5sZXQgbmV3X3ZhcmlhYmxlIHRhYmxlIG5hbWUgPVxuICB0cnkgVmFycy5maW5kIG5hbWUgdGFibGUudmFyc1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBpbmRleCA9IG5ld19zbG90IHRhYmxlIGluXG4gICAgaWYgbmFtZSA8PiBcIlwiIHRoZW4gdGFibGUudmFycyA8LSBWYXJzLmFkZCBuYW1lIGluZGV4IHRhYmxlLnZhcnM7XG4gICAgaW5kZXhcblxubGV0IHRvX2FycmF5IGFyciA9XG4gIGlmIGFyciA9IE9iai5tYWdpYyAwIHRoZW4gW3x8XSBlbHNlIGFyclxuXG5sZXQgbmV3X21ldGhvZHNfdmFyaWFibGVzIHRhYmxlIG1ldGhzIHZhbHMgPVxuICBsZXQgbWV0aHMgPSB0b19hcnJheSBtZXRocyBpblxuICBsZXQgbm1ldGhzID0gQXJyYXkubGVuZ3RoIG1ldGhzIGFuZCBudmFscyA9IEFycmF5Lmxlbmd0aCB2YWxzIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChubWV0aHMgKyBudmFscykgMCBpblxuICBmb3IgaSA9IDAgdG8gbm1ldGhzIC0gMSBkb1xuICAgIHJlcy4oaSkgPC0gZ2V0X21ldGhvZF9sYWJlbCB0YWJsZSBtZXRocy4oaSlcbiAgZG9uZTtcbiAgZm9yIGkgPSAwIHRvIG52YWxzIC0gMSBkb1xuICAgIHJlcy4oaStubWV0aHMpIDwtIG5ld192YXJpYWJsZSB0YWJsZSB2YWxzLihpKVxuICBkb25lO1xuICByZXNcblxubGV0IGdldF92YXJpYWJsZSB0YWJsZSBuYW1lID1cbiAgdHJ5IFZhcnMuZmluZCBuYW1lIHRhYmxlLnZhcnMgd2l0aCBOb3RfZm91bmQgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBnZXRfdmFyaWFibGVzIHRhYmxlIG5hbWVzID1cbiAgQXJyYXkubWFwIChnZXRfdmFyaWFibGUgdGFibGUpIG5hbWVzXG5cbmxldCBhZGRfaW5pdGlhbGl6ZXIgdGFibGUgZiA9XG4gIHRhYmxlLmluaXRpYWxpemVycyA8LSBmOjp0YWJsZS5pbml0aWFsaXplcnNcblxuKCpcbm1vZHVsZSBLZXlzID1cbiAgTWFwLk1ha2Uoc3RydWN0IHR5cGUgdCA9IHRhZyBhcnJheSBsZXQgY29tcGFyZSAoeDp0KSB5ID0gY29tcGFyZSB4IHkgZW5kKVxubGV0IGtleV9tYXAgPSByZWYgS2V5cy5lbXB0eVxubGV0IGdldF9rZXkgdGFncyA6IGl0ZW0gPVxuICB0cnkgbWFnaWMgKEtleXMuZmluZCB0YWdzICFrZXlfbWFwIDogdGFnIGFycmF5KVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGtleV9tYXAgOj0gS2V5cy5hZGQgdGFncyB0YWdzICFrZXlfbWFwO1xuICAgIG1hZ2ljIHRhZ3NcbiopXG5cbmxldCBjcmVhdGVfdGFibGUgcHVibGljX21ldGhvZHMgPVxuICBpZiBwdWJsaWNfbWV0aG9kcyA9PSBtYWdpYyAwIHRoZW4gbmV3X3RhYmxlIFt8fF0gZWxzZVxuICAoKiBbcHVibGljX21ldGhvZHNdIG11c3QgYmUgaW4gYXNjZW5kaW5nIG9yZGVyIGZvciBieXRlY29kZSAqKVxuICBsZXQgdGFncyA9IEFycmF5Lm1hcCBwdWJsaWNfbWV0aG9kX2xhYmVsIHB1YmxpY19tZXRob2RzIGluXG4gIGxldCB0YWJsZSA9IG5ld190YWJsZSB0YWdzIGluXG4gIEFycmF5Lml0ZXJpXG4gICAgKGZ1biBpIG1ldCAtPlxuICAgICAgbGV0IGxhYiA9IGkqMisyIGluXG4gICAgICB0YWJsZS5tZXRob2RzX2J5X25hbWUgIDwtIE1ldGhzLmFkZCBtZXQgbGFiIHRhYmxlLm1ldGhvZHNfYnlfbmFtZTtcbiAgICAgIHRhYmxlLm1ldGhvZHNfYnlfbGFiZWwgPC0gTGFicy5hZGQgbGFiIHRydWUgdGFibGUubWV0aG9kc19ieV9sYWJlbClcbiAgICBwdWJsaWNfbWV0aG9kcztcbiAgdGFibGVcblxubGV0IGluaXRfY2xhc3MgdGFibGUgPVxuICBpbnN0X3Zhcl9jb3VudCA6PSAhaW5zdF92YXJfY291bnQgKyB0YWJsZS5zaXplIC0gMTtcbiAgdGFibGUuaW5pdGlhbGl6ZXJzIDwtIExpc3QucmV2IHRhYmxlLmluaXRpYWxpemVycztcbiAgcmVzaXplIHRhYmxlICgzICsgbWFnaWMgdGFibGUubWV0aG9kcy4oMSkgKiAxNiAvIFN5cy53b3JkX3NpemUpXG5cbmxldCBpbmhlcml0cyBjbGEgdmFscyB2aXJ0X21ldGhzIGNvbmNyX21ldGhzIChfLCBzdXBlciwgXywgZW52KSB0b3AgPVxuICBuYXJyb3cgY2xhIHZhbHMgdmlydF9tZXRocyBjb25jcl9tZXRocztcbiAgbGV0IGluaXQgPVxuICAgIGlmIHRvcCB0aGVuIHN1cGVyIGNsYSBlbnYgZWxzZSBPYmoucmVwciAoc3VwZXIgY2xhKSBpblxuICB3aWRlbiBjbGE7XG4gIEFycmF5LmNvbmNhdFxuICAgIFtbfCByZXByIGluaXQgfF07XG4gICAgIG1hZ2ljIChBcnJheS5tYXAgKGdldF92YXJpYWJsZSBjbGEpICh0b19hcnJheSB2YWxzKSA6IGludCBhcnJheSk7XG4gICAgIEFycmF5Lm1hcFxuICAgICAgIChmdW4gbm0gLT4gcmVwciAoZ2V0X21ldGhvZCBjbGEgKGdldF9tZXRob2RfbGFiZWwgY2xhIG5tKSA6IGNsb3N1cmUpKVxuICAgICAgICh0b19hcnJheSBjb25jcl9tZXRocykgXVxuXG5sZXQgbWFrZV9jbGFzcyBwdWJfbWV0aHMgY2xhc3NfaW5pdCA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICAoZW52X2luaXQgKE9iai5yZXByIDApLCBjbGFzc19pbml0LCBlbnZfaW5pdCwgT2JqLnJlcHIgMClcblxudHlwZSBpbml0X3RhYmxlID0geyBtdXRhYmxlIGVudl9pbml0OiB0OyBtdXRhYmxlIGNsYXNzX2luaXQ6IHRhYmxlIC0+IHQgfVxuW0BAd2FybmluZyBcIi11bnVzZWQtZmllbGRcIl1cblxubGV0IG1ha2VfY2xhc3Nfc3RvcmUgcHViX21ldGhzIGNsYXNzX2luaXQgaW5pdF90YWJsZSA9XG4gIGxldCB0YWJsZSA9IGNyZWF0ZV90YWJsZSBwdWJfbWV0aHMgaW5cbiAgbGV0IGVudl9pbml0ID0gY2xhc3NfaW5pdCB0YWJsZSBpblxuICBpbml0X2NsYXNzIHRhYmxlO1xuICBpbml0X3RhYmxlLmNsYXNzX2luaXQgPC0gY2xhc3NfaW5pdDtcbiAgaW5pdF90YWJsZS5lbnZfaW5pdCA8LSBlbnZfaW5pdFxuXG5sZXQgZHVtbXlfY2xhc3MgbG9jID1cbiAgbGV0IHVuZGVmID0gZnVuIF8gLT4gcmFpc2UgKFVuZGVmaW5lZF9yZWN1cnNpdmVfbW9kdWxlIGxvYykgaW5cbiAgKE9iai5tYWdpYyB1bmRlZiwgdW5kZWYsIHVuZGVmLCBPYmoucmVwciAwKVxuXG4oKioqKiBPYmplY3RzICoqKiopXG5cbmxldCBjcmVhdGVfb2JqZWN0IHRhYmxlID1cbiAgKCogWFhYIEFwcGVsIGRlIFtvYmpfYmxvY2tdIHwgQ2FsbCB0byBbb2JqX2Jsb2NrXSAgKilcbiAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAoKiBYWFggQXBwZWwgZGUgW2NhbWxfbW9kaWZ5XSB8IENhbGwgdG8gW2NhbWxfbW9kaWZ5XSAqKVxuICBPYmouc2V0X2ZpZWxkIG9iaiAwIChPYmoucmVwciB0YWJsZS5tZXRob2RzKTtcbiAgT2JqLm9iaiAoc2V0X2lkIG9iailcblxubGV0IGNyZWF0ZV9vYmplY3Rfb3B0IG9ial8wIHRhYmxlID1cbiAgaWYgKE9iai5tYWdpYyBvYmpfMCA6IGJvb2wpIHRoZW4gb2JqXzAgZWxzZSBiZWdpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbb2JqX2Jsb2NrXSB8IENhbGwgdG8gW29ial9ibG9ja10gICopXG4gICAgbGV0IG9iaiA9IE9iai5uZXdfYmxvY2sgT2JqLm9iamVjdF90YWcgdGFibGUuc2l6ZSBpblxuICAgICgqIFhYWCBBcHBlbCBkZSBbY2FtbF9tb2RpZnldIHwgQ2FsbCB0byBbY2FtbF9tb2RpZnldICopXG4gICAgT2JqLnNldF9maWVsZCBvYmogMCAoT2JqLnJlcHIgdGFibGUubWV0aG9kcyk7XG4gICAgT2JqLm9iaiAoc2V0X2lkIG9iailcbiAgZW5kXG5cbmxldCByZWMgaXRlcl9mIG9iaiA9XG4gIGZ1bmN0aW9uXG4gICAgW10gICAtPiAoKVxuICB8IGY6OmwgLT4gZiBvYmo7IGl0ZXJfZiBvYmogbFxuXG5sZXQgcnVuX2luaXRpYWxpemVycyBvYmogdGFibGUgPVxuICBsZXQgaW5pdHMgPSB0YWJsZS5pbml0aWFsaXplcnMgaW5cbiAgaWYgaW5pdHMgPD4gW10gdGhlblxuICAgIGl0ZXJfZiBvYmogaW5pdHNcblxubGV0IHJ1bl9pbml0aWFsaXplcnNfb3B0IG9ial8wIG9iaiB0YWJsZSA9XG4gIGlmIChPYmoubWFnaWMgb2JqXzAgOiBib29sKSB0aGVuIG9iaiBlbHNlIGJlZ2luXG4gICAgbGV0IGluaXRzID0gdGFibGUuaW5pdGlhbGl6ZXJzIGluXG4gICAgaWYgaW5pdHMgPD4gW10gdGhlbiBpdGVyX2Ygb2JqIGluaXRzO1xuICAgIG9ialxuICBlbmRcblxubGV0IGNyZWF0ZV9vYmplY3RfYW5kX3J1bl9pbml0aWFsaXplcnMgb2JqXzAgdGFibGUgPVxuICBpZiAoT2JqLm1hZ2ljIG9ial8wIDogYm9vbCkgdGhlbiBvYmpfMCBlbHNlIGJlZ2luXG4gICAgbGV0IG9iaiA9IGNyZWF0ZV9vYmplY3QgdGFibGUgaW5cbiAgICBydW5faW5pdGlhbGl6ZXJzIG9iaiB0YWJsZTtcbiAgICBvYmpcbiAgZW5kXG5cbigqIEVxdWl2YWxlbnQgcHJpbWl0aXZlIGJlbG93XG5sZXQgc2VuZHNlbGYgb2JqIGxhYiA9XG4gIChtYWdpYyBvYmogOiAob2JqIC0+IHQpIGFycmF5IGFycmF5KS4oMCkuKGxhYikgb2JqXG4qKVxuZXh0ZXJuYWwgc2VuZCA6IG9iaiAtPiB0YWcgLT4gJ2EgPSBcIiVzZW5kXCJcbmV4dGVybmFsIHNlbmRjYWNoZSA6IG9iaiAtPiB0YWcgLT4gdCAtPiBpbnQgLT4gJ2EgPSBcIiVzZW5kY2FjaGVcIlxuZXh0ZXJuYWwgc2VuZHNlbGYgOiBvYmogLT4gbGFiZWwgLT4gJ2EgPSBcIiVzZW5kc2VsZlwiXG5leHRlcm5hbCBnZXRfcHVibGljX21ldGhvZCA6IG9iaiAtPiB0YWcgLT4gY2xvc3VyZVxuICAgID0gXCJjYW1sX2dldF9wdWJsaWNfbWV0aG9kXCIgW0BAbm9hbGxvY11cblxuKCoqKiogdGFibGUgY29sbGVjdGlvbiBhY2Nlc3MgKioqKilcblxudHlwZSB0YWJsZXMgPVxuICB8IEVtcHR5XG4gIHwgQ29ucyBvZiB7a2V5IDogY2xvc3VyZTsgbXV0YWJsZSBkYXRhOiB0YWJsZXM7IG11dGFibGUgbmV4dDogdGFibGVzfVxuXG5sZXQgc2V0X2RhdGEgdGFibGVzIHYgPSBtYXRjaCB0YWJsZXMgd2l0aFxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5kYXRhIDwtIHZcbmxldCBzZXRfbmV4dCB0YWJsZXMgdiA9IG1hdGNoIHRhYmxlcyB3aXRoXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHQgPC0gdlxubGV0IGdldF9rZXkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IGFzc2VydCBmYWxzZVxuICB8IENvbnMgdGFibGVzIC0+IHRhYmxlcy5rZXlcbmxldCBnZXRfZGF0YSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLmRhdGFcbmxldCBnZXRfbmV4dCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgQ29ucyB0YWJsZXMgLT4gdGFibGVzLm5leHRcblxubGV0IGJ1aWxkX3BhdGggbiBrZXlzIHRhYmxlcyA9XG4gIGxldCByZXMgPSBDb25zIHtrZXkgPSBPYmoubWFnaWMgMDsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gIGxldCByID0gcmVmIHJlcyBpblxuICBmb3IgaSA9IDAgdG8gbiBkb1xuICAgIHIgOj0gQ29ucyB7a2V5ID0ga2V5cy4oaSk7IGRhdGEgPSAhcjsgbmV4dCA9IEVtcHR5fVxuICBkb25lO1xuICBzZXRfZGF0YSB0YWJsZXMgIXI7XG4gIHJlc1xuXG5sZXQgcmVjIGxvb2t1cF9rZXlzIGkga2V5cyB0YWJsZXMgPVxuICBpZiBpIDwgMCB0aGVuIHRhYmxlcyBlbHNlXG4gIGxldCBrZXkgPSBrZXlzLihpKSBpblxuICBsZXQgcmVjIGxvb2t1cF9rZXkgKHRhYmxlczp0YWJsZXMpID1cbiAgICBpZiBnZXRfa2V5IHRhYmxlcyA9PSBrZXkgdGhlblxuICAgICAgbWF0Y2ggZ2V0X2RhdGEgdGFibGVzIHdpdGhcbiAgICAgIHwgRW1wdHkgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IENvbnMgXyBhcyB0YWJsZXNfZGF0YSAtPlxuICAgICAgICAgIGxvb2t1cF9rZXlzIChpLTEpIGtleXMgdGFibGVzX2RhdGFcbiAgICBlbHNlXG4gICAgICBtYXRjaCBnZXRfbmV4dCB0YWJsZXMgd2l0aFxuICAgICAgfCBDb25zIF8gYXMgbmV4dCAtPiBsb29rdXBfa2V5IG5leHRcbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBsZXQgbmV4dCA6IHRhYmxlcyA9IENvbnMge2tleTsgZGF0YSA9IEVtcHR5OyBuZXh0ID0gRW1wdHl9IGluXG4gICAgICAgICAgc2V0X25leHQgdGFibGVzIG5leHQ7XG4gICAgICAgICAgYnVpbGRfcGF0aCAoaS0xKSBrZXlzIG5leHRcbiAgaW5cbiAgbG9va3VwX2tleSB0YWJsZXNcblxubGV0IGxvb2t1cF90YWJsZXMgcm9vdCBrZXlzID1cbiAgbWF0Y2ggZ2V0X2RhdGEgcm9vdCB3aXRoXG4gIHwgQ29ucyBfIGFzIHJvb3RfZGF0YSAtPlxuICAgIGxvb2t1cF9rZXlzIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdF9kYXRhXG4gIHwgRW1wdHkgLT5cbiAgICBidWlsZF9wYXRoIChBcnJheS5sZW5ndGgga2V5cyAtIDEpIGtleXMgcm9vdFxuXG4oKioqKiBidWlsdGluIG1ldGhvZHMgKioqKilcblxubGV0IGdldF9jb25zdCB4ID0gcmV0IChmdW4gX29iaiAtPiB4KVxubGV0IGdldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIC0+IEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pXG5sZXQgZ2V0X2VudiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKVxubGV0IGdldF9tZXRoIG4gID0gcmV0IChmdW4gb2JqIC0+IHNlbmRzZWxmIG9iaiBuKVxubGV0IHNldF92YXIgbiAgID0gcmV0IChmdW4gb2JqIHggLT4gQXJyYXkudW5zYWZlX3NldCBvYmogbiB4KVxubGV0IGFwcF9jb25zdCBmIHggPSByZXQgKGZ1biBfb2JqIC0+IGYgeClcbmxldCBhcHBfdmFyIGYgbiAgID0gcmV0IChmdW4gb2JqIC0+IGYgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9lbnYgZiBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIChBcnJheS51bnNhZmVfZ2V0IChPYmoubWFnaWMgKEFycmF5LnVuc2FmZV9nZXQgb2JqIGUpIDogb2JqKSBuKSlcbmxldCBhcHBfbWV0aCBmIG4gID0gcmV0IChmdW4gb2JqIC0+IGYgKHNlbmRzZWxmIG9iaiBuKSlcbmxldCBhcHBfY29uc3RfY29uc3QgZiB4IHkgPSByZXQgKGZ1biBfb2JqIC0+IGYgeCB5KVxubGV0IGFwcF9jb25zdF92YXIgZiB4IG4gICA9IHJldCAoZnVuIG9iaiAtPiBmIHggKEFycmF5LnVuc2FmZV9nZXQgb2JqIG4pKVxubGV0IGFwcF9jb25zdF9tZXRoIGYgeCBuID0gcmV0IChmdW4gb2JqIC0+IGYgeCAoc2VuZHNlbGYgb2JqIG4pKVxubGV0IGFwcF92YXJfY29uc3QgZiBuIHggPSByZXQgKGZ1biBvYmogLT4gZiAoQXJyYXkudW5zYWZlX2dldCBvYmogbikgeClcbmxldCBhcHBfbWV0aF9jb25zdCBmIG4geCA9IHJldCAoZnVuIG9iaiAtPiBmIChzZW5kc2VsZiBvYmogbikgeClcbmxldCBhcHBfY29uc3RfZW52IGYgeCBlIG4gPVxuICByZXQgKGZ1biBvYmogLT5cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pKVxubGV0IGFwcF9lbnZfY29uc3QgZiBlIG4geCA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIGYgKEFycmF5LnVuc2FmZV9nZXQgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldCBvYmogZSkgOiBvYmopIG4pIHgpXG5sZXQgbWV0aF9hcHBfY29uc3QgbiB4ID0gcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgeClcbmxldCBtZXRoX2FwcF92YXIgbiBtID1cbiAgcmV0IChmdW4gb2JqIC0+IChzZW5kc2VsZiBvYmogbiA6IF8gLT4gXykgKEFycmF5LnVuc2FmZV9nZXQgb2JqIG0pKVxubGV0IG1ldGhfYXBwX2VudiBuIGUgbSA9XG4gIHJldCAoZnVuIG9iaiAtPiAoc2VuZHNlbGYgb2JqIG4gOiBfIC0+IF8pXG4gICAgICAoQXJyYXkudW5zYWZlX2dldCAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbSkpXG5sZXQgbWV0aF9hcHBfbWV0aCBuIG0gPVxuICByZXQgKGZ1biBvYmogLT4gKHNlbmRzZWxmIG9iaiBuIDogXyAtPiBfKSAoc2VuZHNlbGYgb2JqIG0pKVxubGV0IHNlbmRfY29uc3QgbSB4IGMgPVxuICByZXQgKGZ1biBvYmogLT4gc2VuZGNhY2hlIHggbSAoQXJyYXkudW5zYWZlX2dldCBvYmogMCkgYylcbmxldCBzZW5kX3ZhciBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBuKSA6IG9iaikgbVxuICAgICAgKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgc2VuZF9lbnYgbSBlIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZVxuICAgICAgKE9iai5tYWdpYyAoQXJyYXkudW5zYWZlX2dldFxuICAgICAgICAgICAgICAgICAgICAoT2JqLm1hZ2ljIChBcnJheS51bnNhZmVfZ2V0IG9iaiBlKSA6IG9iaikgbikgOiBvYmopXG4gICAgICBtIChBcnJheS51bnNhZmVfZ2V0IG9iaiAwKSBjKVxubGV0IHNlbmRfbWV0aCBtIG4gYyA9XG4gIHJldCAoZnVuIG9iaiAtPlxuICAgIHNlbmRjYWNoZSAoc2VuZHNlbGYgb2JqIG4pIG0gKEFycmF5LnVuc2FmZV9nZXQgb2JqIDApIGMpXG5sZXQgbmV3X2NhY2hlIHRhYmxlID1cbiAgbGV0IG4gPSBuZXdfbWV0aG9kIHRhYmxlIGluXG4gIGxldCBuID1cbiAgICBpZiBuIG1vZCAyID0gMCB8fCBuID4gMiArIG1hZ2ljIHRhYmxlLm1ldGhvZHMuKDEpICogMTYgLyBTeXMud29yZF9zaXplXG4gICAgdGhlbiBuIGVsc2UgbmV3X21ldGhvZCB0YWJsZVxuICBpblxuICB0YWJsZS5tZXRob2RzLihuKSA8LSBPYmoubWFnaWMgMDtcbiAgblxuXG50eXBlIGltcGwgPVxuICAgIEdldENvbnN0XG4gIHwgR2V0VmFyXG4gIHwgR2V0RW52XG4gIHwgR2V0TWV0aFxuICB8IFNldFZhclxuICB8IEFwcENvbnN0XG4gIHwgQXBwVmFyXG4gIHwgQXBwRW52XG4gIHwgQXBwTWV0aFxuICB8IEFwcENvbnN0Q29uc3RcbiAgfCBBcHBDb25zdFZhclxuICB8IEFwcENvbnN0RW52XG4gIHwgQXBwQ29uc3RNZXRoXG4gIHwgQXBwVmFyQ29uc3RcbiAgfCBBcHBFbnZDb25zdFxuICB8IEFwcE1ldGhDb25zdFxuICB8IE1ldGhBcHBDb25zdFxuICB8IE1ldGhBcHBWYXJcbiAgfCBNZXRoQXBwRW52XG4gIHwgTWV0aEFwcE1ldGhcbiAgfCBTZW5kQ29uc3RcbiAgfCBTZW5kVmFyXG4gIHwgU2VuZEVudlxuICB8IFNlbmRNZXRoXG4gIHwgQ2xvc3VyZSBvZiBjbG9zdXJlXG5cbmxldCBtZXRob2RfaW1wbCB0YWJsZSBpIGFyciA9XG4gIGxldCBuZXh0ICgpID0gaW5jciBpOyBtYWdpYyBhcnIuKCFpKSBpblxuICBtYXRjaCBuZXh0KCkgd2l0aFxuICAgIEdldENvbnN0IC0+IGxldCB4IDogdCA9IG5leHQoKSBpbiBnZXRfY29uc3QgeFxuICB8IEdldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIGdldF92YXIgblxuICB8IEdldEVudiAgIC0+IGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluIGdldF9lbnYgZSBuXG4gIHwgR2V0TWV0aCAgLT4gbGV0IG4gPSBuZXh0KCkgaW4gZ2V0X21ldGggblxuICB8IFNldFZhciAgIC0+IGxldCBuID0gbmV4dCgpIGluIHNldF92YXIgblxuICB8IEFwcENvbnN0IC0+IGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGFwcF9jb25zdCBmIHhcbiAgfCBBcHBWYXIgICAtPiBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gYXBwX3ZhciBmIG5cbiAgfCBBcHBFbnYgICAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gIGxldCBlID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfZW52IGYgZSBuXG4gIHwgQXBwTWV0aCAgLT4gbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0ICgpIGluIGFwcF9tZXRoIGYgblxuICB8IEFwcENvbnN0Q29uc3QgLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCB5ID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfY29uc3QgZiB4IHlcbiAgfCBBcHBDb25zdFZhciAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9jb25zdF92YXIgZiB4IG5cbiAgfCBBcHBDb25zdEVudiAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0ICgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfZW52IGYgeCBlIG5cbiAgfCBBcHBDb25zdE1ldGggLT5cbiAgICAgIGxldCBmID0gbmV4dCgpIGluIGxldCB4ID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCgpIGluXG4gICAgICBhcHBfY29uc3RfbWV0aCBmIHggblxuICB8IEFwcFZhckNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpblxuICAgICAgYXBwX3Zhcl9jb25zdCBmIG4geFxuICB8IEFwcEVudkNvbnN0IC0+XG4gICAgICBsZXQgZiA9IG5leHQoKSBpbiBsZXQgZSA9IG5leHQgKCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9lbnZfY29uc3QgZiBlIG4geFxuICB8IEFwcE1ldGhDb25zdCAtPlxuICAgICAgbGV0IGYgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW5cbiAgICAgIGFwcF9tZXRoX2NvbnN0IGYgbiB4XG4gIHwgTWV0aEFwcENvbnN0IC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgeCA9IG5leHQoKSBpbiBtZXRoX2FwcF9jb25zdCBuIHhcbiAgfCBNZXRoQXBwVmFyIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF92YXIgbiBtXG4gIHwgTWV0aEFwcEVudiAtPlxuICAgICAgbGV0IG4gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG0gPSBuZXh0KCkgaW5cbiAgICAgIG1ldGhfYXBwX2VudiBuIGUgbVxuICB8IE1ldGhBcHBNZXRoIC0+XG4gICAgICBsZXQgbiA9IG5leHQoKSBpbiBsZXQgbSA9IG5leHQoKSBpbiBtZXRoX2FwcF9tZXRoIG4gbVxuICB8IFNlbmRDb25zdCAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IHggPSBuZXh0KCkgaW4gc2VuZF9jb25zdCBtIHggKG5ld19jYWNoZSB0YWJsZSlcbiAgfCBTZW5kVmFyIC0+XG4gICAgICBsZXQgbSA9IG5leHQoKSBpbiBsZXQgbiA9IG5leHQgKCkgaW4gc2VuZF92YXIgbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZEVudiAtPlxuICAgICAgbGV0IG0gPSBuZXh0KCkgaW4gbGV0IGUgPSBuZXh0KCkgaW4gbGV0IG4gPSBuZXh0KCkgaW5cbiAgICAgIHNlbmRfZW52IG0gZSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgU2VuZE1ldGggLT5cbiAgICAgIGxldCBtID0gbmV4dCgpIGluIGxldCBuID0gbmV4dCAoKSBpbiBzZW5kX21ldGggbSBuIChuZXdfY2FjaGUgdGFibGUpXG4gIHwgQ2xvc3VyZSBfIGFzIGNsbyAtPiBtYWdpYyBjbG9cblxubGV0IHNldF9tZXRob2RzIHRhYmxlIG1ldGhvZHMgPVxuICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIG1ldGhvZHMgaW4gbGV0IGkgPSByZWYgMCBpblxuICB3aGlsZSAhaSA8IGxlbiBkb1xuICAgIGxldCBsYWJlbCA9IG1ldGhvZHMuKCFpKSBpbiBsZXQgY2xvID0gbWV0aG9kX2ltcGwgdGFibGUgaSBtZXRob2RzIGluXG4gICAgc2V0X21ldGhvZCB0YWJsZSBsYWJlbCBjbG87XG4gICAgaW5jciBpXG4gIGRvbmVcblxuKCoqKiogU3RhdGlzdGljcyAqKioqKVxuXG50eXBlIHN0YXRzID1cbiAgeyBjbGFzc2VzOiBpbnQ7IG1ldGhvZHM6IGludDsgaW5zdF92YXJzOiBpbnQ7IH1cblxubGV0IHN0YXRzICgpID1cbiAgeyBjbGFzc2VzID0gIXRhYmxlX2NvdW50O1xuICAgIG1ldGhvZHMgPSAhbWV0aG9kX2NvdW50OyBpbnN0X3ZhcnMgPSAhaW5zdF92YXJfY291bnQ7IH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzaGFwZSA9XG4gIHwgRnVuY3Rpb25cbiAgfCBMYXp5XG4gIHwgQ2xhc3NcbiAgfCBNb2R1bGUgb2Ygc2hhcGUgYXJyYXlcbiAgfCBWYWx1ZSBvZiBPYmoudFxuXG5sZXQgcmVjIGluaXRfbW9kX2ZpZWxkIG1vZHUgaSBsb2Mgc2hhcGUgPVxuICBsZXQgaW5pdCA9XG4gICAgbWF0Y2ggc2hhcGUgd2l0aFxuICAgIHwgRnVuY3Rpb24gLT5cbiAgICAgICBsZXQgcmVjIGZuICh4IDogJ2EpID1cbiAgICAgICAgIGxldCBmbicgOiAnYSAtPiAnYiA9IE9iai5vYmogKE9iai5maWVsZCBtb2R1IGkpIGluXG4gICAgICAgICBpZiBmbiA9PSBmbicgdGhlblxuICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBmbicgeCBpblxuICAgICAgIE9iai5yZXByIGZuXG4gICAgfCBMYXp5IC0+XG4gICAgICAgbGV0IHJlYyBsID1cbiAgICAgICAgIGxhenkgKFxuICAgICAgICAgICBsZXQgbCcgPSBPYmoub2JqIChPYmouZmllbGQgbW9kdSBpKSBpblxuICAgICAgICAgICBpZiBsID09IGwnIHRoZW5cbiAgICAgICAgICAgICByYWlzZSAoVW5kZWZpbmVkX3JlY3Vyc2l2ZV9tb2R1bGUgbG9jKVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTGF6eS5mb3JjZSBsJykgaW5cbiAgICAgICBPYmoucmVwciBsXG4gICAgfCBDbGFzcyAtPlxuICAgICAgIE9iai5yZXByIChDYW1saW50ZXJuYWxPTy5kdW1teV9jbGFzcyBsb2MpXG4gICAgfCBNb2R1bGUgY29tcHMgLT5cbiAgICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICAgIHwgVmFsdWUgdiAtPiB2XG4gIGluXG4gIE9iai5zZXRfZmllbGQgbW9kdSBpIGluaXRcblxuYW5kIGluaXRfbW9kX2Jsb2NrIGxvYyBjb21wcyA9XG4gIGxldCBsZW5ndGggPSBBcnJheS5sZW5ndGggY29tcHMgaW5cbiAgbGV0IG1vZHUgPSBPYmoubmV3X2Jsb2NrIDAgbGVuZ3RoIGluXG4gIGZvciBpID0gMCB0byBsZW5ndGggLSAxIGRvXG4gICAgaW5pdF9tb2RfZmllbGQgbW9kdSBpIGxvYyBjb21wcy4oaSlcbiAgZG9uZTtcbiAgbW9kdVxuXG5sZXQgaW5pdF9tb2QgbG9jIHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICBPYmoucmVwciAoaW5pdF9tb2RfYmxvY2sgbG9jIGNvbXBzKVxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QuaW5pdF9tb2Q6IG5vdCBhIG1vZHVsZVwiXG5cbmxldCByZWMgdXBkYXRlX21vZF9maWVsZCBtb2R1IGkgc2hhcGUgbiA9XG4gIG1hdGNoIHNoYXBlIHdpdGhcbiAgfCBGdW5jdGlvbiB8IExhenkgLT5cbiAgICAgT2JqLnNldF9maWVsZCBtb2R1IGkgblxuICB8IFZhbHVlIF8gLT5cbiAgICAgKCkgKCogdGhlIHZhbHVlIGlzIGFscmVhZHkgdGhlcmUgKilcbiAgfCBDbGFzcyAtPlxuICAgICBhc3NlcnQgKE9iai50YWcgbiA9IDAgJiYgT2JqLnNpemUgbiA9IDQpO1xuICAgICBsZXQgY2wgPSBPYmouZmllbGQgbW9kdSBpIGluXG4gICAgIGZvciBqID0gMCB0byAzIGRvXG4gICAgICAgT2JqLnNldF9maWVsZCBjbCBqIChPYmouZmllbGQgbiBqKVxuICAgICBkb25lXG4gIHwgTW9kdWxlIGNvbXBzIC0+XG4gICAgIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgKE9iai5maWVsZCBtb2R1IGkpIG5cblxuYW5kIHVwZGF0ZV9tb2RfYmxvY2sgY29tcHMgbyBuID1cbiAgYXNzZXJ0IChPYmoudGFnIG4gPSAwICYmIE9iai5zaXplIG4gPj0gQXJyYXkubGVuZ3RoIGNvbXBzKTtcbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBjb21wcyAtIDEgZG9cbiAgICB1cGRhdGVfbW9kX2ZpZWxkIG8gaSBjb21wcy4oaSkgKE9iai5maWVsZCBuIGkpXG4gIGRvbmVcblxubGV0IHVwZGF0ZV9tb2Qgc2hhcGUgbyBuID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IE1vZHVsZSBjb21wcyAtPlxuICAgICB1cGRhdGVfbW9kX2Jsb2NrIGNvbXBzIG8gblxuICB8IF8gLT4gZmFpbHdpdGggXCJDYW1saW50ZXJuYWxNb2QudXBkYXRlX21vZDogbm90IGEgbW9kdWxlXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0b2tlbiA9XG4gICAgS3dkIG9mIHN0cmluZ1xuICB8IElkZW50IG9mIHN0cmluZ1xuICB8IEludCBvZiBpbnRcbiAgfCBGbG9hdCBvZiBmbG9hdFxuICB8IFN0cmluZyBvZiBzdHJpbmdcbiAgfCBDaGFyIG9mIGNoYXJcblxuKCogVGhlIHN0cmluZyBidWZmZXJpbmcgbWFjaGluZXJ5ICopXG5cbmxldCBpbml0aWFsX2J1ZmZlciA9IEJ5dGVzLmNyZWF0ZSAzMlxuXG5sZXQgYnVmZmVyID0gcmVmIGluaXRpYWxfYnVmZmVyXG5sZXQgYnVmcG9zID0gcmVmIDBcblxubGV0IHJlc2V0X2J1ZmZlciAoKSA9IGJ1ZmZlciA6PSBpbml0aWFsX2J1ZmZlcjsgYnVmcG9zIDo9IDBcblxubGV0IHN0b3JlIGMgPVxuICBpZiAhYnVmcG9zID49IEJ5dGVzLmxlbmd0aCAhYnVmZmVyIHRoZW4gYmVnaW5cbiAgICBsZXQgbmV3YnVmZmVyID0gQnl0ZXMuY3JlYXRlICgyICogIWJ1ZnBvcykgaW5cbiAgICBCeXRlcy5ibGl0ICFidWZmZXIgMCBuZXdidWZmZXIgMCAhYnVmcG9zO1xuICAgIGJ1ZmZlciA6PSBuZXdidWZmZXJcbiAgZW5kO1xuICBCeXRlcy5zZXQgIWJ1ZmZlciAhYnVmcG9zIGM7XG4gIGluY3IgYnVmcG9zXG5cbmxldCBnZXRfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5zdWJfc3RyaW5nICFidWZmZXIgMCAhYnVmcG9zIGluIGJ1ZmZlciA6PSBpbml0aWFsX2J1ZmZlcjsgc1xuXG4oKiBUaGUgbGV4ZXIgKilcblxubGV0IG1ha2VfbGV4ZXIga2V5d29yZHMgPVxuICBsZXQga3dkX3RhYmxlID0gSGFzaHRibC5jcmVhdGUgMTcgaW5cbiAgTGlzdC5pdGVyIChmdW4gcyAtPiBIYXNodGJsLmFkZCBrd2RfdGFibGUgcyAoS3dkIHMpKSBrZXl3b3JkcztcbiAgbGV0IGlkZW50X29yX2tleXdvcmQgaWQgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQga3dkX3RhYmxlIGlkIHdpdGhcbiAgICAgIE5vdF9mb3VuZCAtPiBJZGVudCBpZFxuICBhbmQga2V5d29yZF9vcl9lcnJvciBjID1cbiAgICBsZXQgcyA9IFN0cmluZy5tYWtlIDEgYyBpblxuICAgIHRyeSBIYXNodGJsLmZpbmQga3dkX3RhYmxlIHMgd2l0aFxuICAgICAgTm90X2ZvdW5kIC0+IHJhaXNlIChTdHJlYW0uRXJyb3IgKFwiSWxsZWdhbCBjaGFyYWN0ZXIgXCIgXiBzKSlcbiAgaW5cbiAgbGV0IHJlYyBuZXh0X3Rva2VuIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcgJyB8ICdcXDAxMCcgfCAnXFwwMTMnIHwgJ1xcMDA5JyB8ICdcXDAyNicgfCAnXFwwMTInKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IG5leHRfdG9rZW4gc3RybV9fXG4gICAgfCBTb21lICgnQScuLidaJyB8ICdhJy4uJ3onIHwgJ18nIHwgJ1xcMTkyJy4uJ1xcMjU1JyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgaWRlbnQgc1xuICAgIHwgU29tZVxuICAgICAgICAoJyEnIHwgJyUnIHwgJyYnIHwgJyQnIHwgJyMnIHwgJysnIHwgJy8nIHwgJzonIHwgJzwnIHwgJz0nIHwgJz4nIHxcbiAgICAgICAgICc/JyB8ICdAJyB8ICdcXFxcJyB8ICd+JyB8ICdeJyB8ICd8JyB8ICcqJyBhcyBjKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHJlc2V0X2J1ZmZlciAoKTsgc3RvcmUgYzsgaWRlbnQyIHNcbiAgICB8IFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXztcbiAgICAgICAgbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgU29tZSAnXFwnJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBjID1cbiAgICAgICAgICB0cnkgY2hhciBzdHJtX18gd2l0aFxuICAgICAgICAgICAgU3RyZWFtLkZhaWx1cmUgLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICBpblxuICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgIFNvbWUgJ1xcJycgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBTb21lIChDaGFyIGMpXG4gICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSAnXFxcIicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IFNvbWUgKFN0cmluZyAoc3RyaW5nIHMpKVxuICAgIHwgU29tZSAnLScgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBuZWdfbnVtYmVyIHN0cm1fX1xuICAgIHwgU29tZSAnKCcgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgU29tZSAoa2V5d29yZF9vcl9lcnJvciBjKVxuICAgIHwgXyAtPiBOb25lXG4gIGFuZCBpZGVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lXG4gICAgICAgICgnQScuLidaJyB8ICdhJy4uJ3onIHwgJ1xcMTkyJy4uJ1xcMjU1JyB8ICcwJy4uJzknIHwgJ18nIHwgJ1xcJycgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBpZGVudCBzXG4gICAgfCBfIC0+IFNvbWUgKGlkZW50X29yX2tleXdvcmQgKGdldF9zdHJpbmcgKCkpKVxuICBhbmQgaWRlbnQyIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWVcbiAgICAgICAgKCchJyB8ICclJyB8ICcmJyB8ICckJyB8ICcjJyB8ICcrJyB8ICctJyB8ICcvJyB8ICc6JyB8ICc8JyB8ICc9JyB8XG4gICAgICAgICAnPicgfCAnPycgfCAnQCcgfCAnXFxcXCcgfCAnficgfCAnXicgfCAnfCcgfCAnKicgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBpZGVudDIgc1xuICAgIHwgXyAtPiBTb21lIChpZGVudF9vcl9rZXl3b3JkIChnZXRfc3RyaW5nICgpKSlcbiAgYW5kIG5lZ19udW1iZXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fO1xuICAgICAgICBsZXQgcyA9IHN0cm1fXyBpbiByZXNldF9idWZmZXIgKCk7IHN0b3JlICctJzsgc3RvcmUgYzsgbnVtYmVyIHNcbiAgICB8IF8gLT4gbGV0IHMgPSBzdHJtX18gaW4gcmVzZXRfYnVmZmVyICgpOyBzdG9yZSAnLSc7IGlkZW50MiBzXG4gIGFuZCBudW1iZXIgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBudW1iZXIgc1xuICAgIHwgU29tZSAnLicgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSAnLic7IGRlY2ltYWxfcGFydCBzXG4gICAgfCBTb21lICgnZScgfCAnRScpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgJ0UnOyBleHBvbmVudF9wYXJ0IHNcbiAgICB8IF8gLT4gU29tZSAoSW50IChpbnRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBkZWNpbWFsX3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJzAnLi4nOScgYXMgYykgLT5cbiAgICAgICAgU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBkZWNpbWFsX3BhcnQgc1xuICAgIHwgU29tZSAoJ2UnIHwgJ0UnKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIHN0b3JlICdFJzsgZXhwb25lbnRfcGFydCBzXG4gICAgfCBfIC0+IFNvbWUgKEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGdldF9zdHJpbmcgKCkpKSlcbiAgYW5kIGV4cG9uZW50X3BhcnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAoJysnIHwgJy0nIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZW5kX2V4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBlbmRfZXhwb25lbnRfcGFydCBzdHJtX19cbiAgYW5kIGVuZF9leHBvbmVudF9wYXJ0IChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgKCcwJy4uJzknIGFzIGMpIC0+XG4gICAgICAgIFN0cmVhbS5qdW5rIHN0cm1fXzsgbGV0IHMgPSBzdHJtX18gaW4gc3RvcmUgYzsgZW5kX2V4cG9uZW50X3BhcnQgc1xuICAgIHwgXyAtPiBTb21lIChGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChnZXRfc3RyaW5nICgpKSkpXG4gIGFuZCBzdHJpbmcgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnXFxcIicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBnZXRfc3RyaW5nICgpXG4gICAgfCBTb21lICdcXFxcJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGxldCBjID1cbiAgICAgICAgICB0cnkgZXNjYXBlIHN0cm1fXyB3aXRoXG4gICAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzID0gc3RybV9fIGluIHN0b3JlIGM7IHN0cmluZyBzXG4gICAgfCBTb21lIGMgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBsZXQgcyA9IHN0cm1fXyBpbiBzdG9yZSBjOyBzdHJpbmcgc1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgY2hhciAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICdcXFxcJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGJlZ2luIHRyeSBlc2NhcGUgc3RybV9fIHdpdGhcbiAgICAgICAgICBTdHJlYW0uRmFpbHVyZSAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgZXNjYXBlIChzdHJtX18gOiBfIFN0cmVhbS50KSA9XG4gICAgbWF0Y2ggU3RyZWFtLnBlZWsgc3RybV9fIHdpdGhcbiAgICAgIFNvbWUgJ24nIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xcbidcbiAgICB8IFNvbWUgJ3InIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xccidcbiAgICB8IFNvbWUgJ3QnIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgJ1xcdCdcbiAgICB8IFNvbWUgKCcwJy4uJzknIGFzIGMxKSAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgIGJlZ2luIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICAgICAgU29tZSAoJzAnLi4nOScgYXMgYzIpIC0+XG4gICAgICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgICAgICAgICBTb21lICgnMCcuLic5JyBhcyBjMykgLT5cbiAgICAgICAgICAgICAgICBTdHJlYW0uanVuayBzdHJtX187XG4gICAgICAgICAgICAgICAgQ2hhci5jaHJcbiAgICAgICAgICAgICAgICAgICgoQ2hhci5jb2RlIGMxIC0gNDgpICogMTAwICsgKENoYXIuY29kZSBjMiAtIDQ4KSAqIDEwICtcbiAgICAgICAgICAgICAgICAgICAgIChDaGFyLmNvZGUgYzMgLSA0OCkpXG4gICAgICAgICAgICB8IF8gLT4gcmFpc2UgKFN0cmVhbS5FcnJvciBcIlwiKVxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgXyAtPiByYWlzZSAoU3RyZWFtLkVycm9yIFwiXCIpXG4gICAgICAgIGVuZFxuICAgIHwgU29tZSBjIC0+IFN0cmVhbS5qdW5rIHN0cm1fXzsgY1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcqJyAtPlxuICAgICAgICBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIGNvbW1lbnQgczsgbmV4dF90b2tlbiBzXG4gICAgfCBfIC0+IFNvbWUgKGtleXdvcmRfb3JfZXJyb3IgJygnKVxuICBhbmQgY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcoJyAtPiBTdHJlYW0uanVuayBzdHJtX187IG1heWJlX25lc3RlZF9jb21tZW50IHN0cm1fX1xuICAgIHwgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9lbmRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGFuZCBtYXliZV9uZXN0ZWRfY29tbWVudCAoc3RybV9fIDogXyBTdHJlYW0udCkgPVxuICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0cm1fXyB3aXRoXG4gICAgICBTb21lICcqJyAtPiBTdHJlYW0uanVuayBzdHJtX187IGxldCBzID0gc3RybV9fIGluIGNvbW1lbnQgczsgY29tbWVudCBzXG4gICAgfCBTb21lIF8gLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBjb21tZW50IHN0cm1fX1xuICAgIHwgXyAtPiByYWlzZSBTdHJlYW0uRmFpbHVyZVxuICBhbmQgbWF5YmVfZW5kX2NvbW1lbnQgKHN0cm1fXyA6IF8gU3RyZWFtLnQpID1cbiAgICBtYXRjaCBTdHJlYW0ucGVlayBzdHJtX18gd2l0aFxuICAgICAgU29tZSAnKScgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyAoKVxuICAgIHwgU29tZSAnKicgLT4gU3RyZWFtLmp1bmsgc3RybV9fOyBtYXliZV9lbmRfY29tbWVudCBzdHJtX19cbiAgICB8IFNvbWUgXyAtPiBTdHJlYW0uanVuayBzdHJtX187IGNvbW1lbnQgc3RybV9fXG4gICAgfCBfIC0+IHJhaXNlIFN0cmVhbS5GYWlsdXJlXG4gIGluXG4gIGZ1biBpbnB1dCAtPiBTdHJlYW0uZnJvbSAoZnVuIF9jb3VudCAtPiBuZXh0X3Rva2VuIGlucHV0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgRGFtaWVuIERvbGlnZXosIHByb2pldCBQYXJhLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgdHlwZSBTZWVkZWRTID0gc2lnXG4gIGluY2x1ZGUgSGFzaHRibC5TZWVkZWRTXG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIGluY2x1ZGUgSGFzaHRibC5TXG4gIHZhbCBjbGVhbjogJ2EgdCAtPiB1bml0XG4gIHZhbCBzdGF0c19hbGl2ZTogJ2EgdCAtPiBIYXNodGJsLnN0YXRpc3RpY3NcbiAgICAoKiogc2FtZSBhcyB7IXN0YXRzfSBidXQgb25seSBjb3VudCB0aGUgYWxpdmUgYmluZGluZ3MgKilcbmVuZFxuXG5tb2R1bGUgR2VuSGFzaFRhYmxlID0gc3RydWN0XG5cbiAgdHlwZSBlcXVhbCA9XG4gIHwgRVRydWUgfCBFRmFsc2VcbiAgfCBFRGVhZCAoKiogdGhlIGdhcmJhZ2UgY29sbGVjdG9yIHJlY2xhaW1lZCB0aGUgZGF0YSAqKVxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkKEg6IHNpZ1xuICAgIHR5cGUgdFxuICAgIHR5cGUgJ2EgY29udGFpbmVyXG4gICAgdmFsIGNyZWF0ZTogdCAtPiAnYSAtPiAnYSBjb250YWluZXJcbiAgICB2YWwgaGFzaDogaW50IC0+IHQgLT4gaW50XG4gICAgdmFsIGVxdWFsOiAnYSBjb250YWluZXIgLT4gdCAtPiBlcXVhbFxuICAgIHZhbCBnZXRfZGF0YTogJ2EgY29udGFpbmVyIC0+ICdhIG9wdGlvblxuICAgIHZhbCBnZXRfa2V5OiAnYSBjb250YWluZXIgLT4gdCBvcHRpb25cbiAgICB2YWwgc2V0X2tleV9kYXRhOiAnYSBjb250YWluZXIgLT4gdCAtPiAnYSAtPiB1bml0XG4gICAgdmFsIGNoZWNrX2tleTogJ2EgY29udGFpbmVyIC0+IGJvb2xcbiAgZW5kKSA6IFNlZWRlZFMgd2l0aCB0eXBlIGtleSA9IEgudFxuICA9IHN0cnVjdFxuXG4gICAgdHlwZSAnYSB0ID1cbiAgICAgIHsgbXV0YWJsZSBzaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogbnVtYmVyIG9mIGVudHJpZXMgKilcbiAgICAgICAgbXV0YWJsZSBkYXRhOiAnYSBidWNrZXRsaXN0IGFycmF5OyAgKCogdGhlIGJ1Y2tldHMgKilcbiAgICAgICAgc2VlZDogaW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgKCogZm9yIHJhbmRvbWl6YXRpb24gKilcbiAgICAgICAgaW5pdGlhbF9zaXplOiBpbnQ7ICAgICAgICAgICAgICAgICAgKCogaW5pdGlhbCBhcnJheSBzaXplICopXG4gICAgICB9XG5cbiAgICBhbmQgJ2EgYnVja2V0bGlzdCA9XG4gICAgfCBFbXB0eVxuICAgIHwgQ29ucyBvZiBpbnQgKCogaGFzaCBvZiB0aGUga2V5ICopICogJ2EgSC5jb250YWluZXIgKiAnYSBidWNrZXRsaXN0XG5cbiAgICAoKiogdGhlIGhhc2ggb2YgdGhlIGtleSBpcyBrZXB0IGluIG9yZGVyIHRvIHRlc3QgdGhlIGVxdWFsaXR5IG9mIHRoZSBoYXNoXG4gICAgICBiZWZvcmUgdGhlIGtleS4gU2FtZSByZWFzb24gYXMgZm9yIFdlYWsuTWFrZSAqKVxuXG4gICAgdHlwZSBrZXkgPSBILnRcblxuICAgIGxldCByZWMgcG93ZXJfMl9hYm92ZSB4IG4gPVxuICAgICAgaWYgeCA+PSBuIHRoZW4geFxuICAgICAgZWxzZSBpZiB4ICogMiA+IFN5cy5tYXhfYXJyYXlfbGVuZ3RoIHRoZW4geFxuICAgICAgZWxzZSBwb3dlcl8yX2Fib3ZlICh4ICogMikgblxuXG4gICAgbGV0IHBybmcgPSBsYXp5IChSYW5kb20uU3RhdGUubWFrZV9zZWxmX2luaXQoKSlcblxuICAgIGxldCBjcmVhdGUgPyhyYW5kb20gPSAoSGFzaHRibC5pc19yYW5kb21pemVkICgpKSkgaW5pdGlhbF9zaXplID1cbiAgICAgIGxldCBzID0gcG93ZXJfMl9hYm92ZSAxNiBpbml0aWFsX3NpemUgaW5cbiAgICAgIGxldCBzZWVkID0gaWYgcmFuZG9tIHRoZW4gUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykgZWxzZSAwIGluXG4gICAgICB7IGluaXRpYWxfc2l6ZSA9IHM7IHNpemUgPSAwOyBzZWVkID0gc2VlZDsgZGF0YSA9IEFycmF5Lm1ha2UgcyBFbXB0eSB9XG5cbiAgICBsZXQgY2xlYXIgaCA9XG4gICAgICBoLnNpemUgPC0gMDtcbiAgICAgIGxldCBsZW4gPSBBcnJheS5sZW5ndGggaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICBoLmRhdGEuKGkpIDwtIEVtcHR5XG4gICAgICBkb25lXG5cbiAgICBsZXQgcmVzZXQgaCA9XG4gICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGguZGF0YSBpblxuICAgICAgaWYgbGVuID0gaC5pbml0aWFsX3NpemUgdGhlblxuICAgICAgICBjbGVhciBoXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGguc2l6ZSA8LSAwO1xuICAgICAgICBoLmRhdGEgPC0gQXJyYXkubWFrZSBoLmluaXRpYWxfc2l6ZSBFbXB0eVxuICAgICAgZW5kXG5cbiAgICBsZXQgY29weSBoID0geyBoIHdpdGggZGF0YSA9IEFycmF5LmNvcHkgaC5kYXRhIH1cblxuICAgIGxldCBrZXlfaW5kZXggaCBoa2V5ID1cbiAgICAgIGhrZXkgbGFuZCAoQXJyYXkubGVuZ3RoIGguZGF0YSAtIDEpXG5cbiAgICBsZXQgY2xlYW4gaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIEVtcHR5XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSB3aGVuIG5vdCAoSC5jaGVja19rZXkgYykgLT5cbiAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgfCBDb25zKGhrZXksIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBDb25zKGhrZXksIGMsIGRvX2J1Y2tldCByZXN0KVxuICAgICAgaW5cbiAgICAgIGxldCBkID0gaC5kYXRhIGluXG4gICAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGQgLSAxIGRvXG4gICAgICAgIGQuKGkpIDwtIGRvX2J1Y2tldCBkLihpKVxuICAgICAgZG9uZVxuXG4gICAgKCoqIHJlc2l6ZSBpcyB0aGUgb25seSBmdW5jdGlvbiB0byBkbyB0aGUgYWN0dWFsIGNsZWFuaW5nIG9mIGRlYWQga2V5c1xuICAgICAgICAocmVtb3ZlIGRvZXMgaXQganVzdCBiZWNhdXNlIGl0IGNvdWxkKS5cblxuICAgICAgICBUaGUgZ29hbCBpcyB0bzpcblxuICAgICAgICAtIG5vdCByZXNpemUgaW5maW5pdGVseSB3aGVuIHRoZSBhY3R1YWwgbnVtYmVyIG9mIGFsaXZlIGtleXMgaXNcbiAgICAgICAgYm91bmRlZCBidXQga2V5cyBhcmUgY29udGludW91c2x5IGFkZGVkLiBUaGF0IHdvdWxkIGhhcHBlbiBpZlxuICAgICAgICB0aGlzIGZ1bmN0aW9uIGFsd2F5cyByZXNpemUuXG4gICAgICAgIC0gbm90IGNhbGwgdGhpcyBmdW5jdGlvbiBhZnRlciBlYWNoIGFkZGl0aW9uLCB0aGF0IHdvdWxkIGhhcHBlbiBpZiB0aGlzXG4gICAgICAgIGZ1bmN0aW9uIGRvbid0IHJlc2l6ZSBldmVuIHdoZW4gb25seSBvbmUga2V5IGlzIGRlYWQuXG5cbiAgICAgICAgU28gdGhlIGFsZ29yaXRobTpcbiAgICAgICAgLSBjbGVhbiB0aGUga2V5cyBiZWZvcmUgcmVzaXppbmdcbiAgICAgICAgLSBpZiB0aGUgbnVtYmVyIG9mIHJlbWFpbmluZyBrZXlzIGlzIGxlc3MgdGhhbiBoYWxmIHRoZSBzaXplIG9mIHRoZVxuICAgICAgICBhcnJheSwgZG9uJ3QgcmVzaXplLlxuICAgICAgICAtIGlmIGl0IGlzIG1vcmUsIHJlc2l6ZS5cblxuICAgICAgICBUaGUgc2Vjb25kIHByb2JsZW0gcmVtYWlucyBpZiB0aGUgdGFibGUgcmVhY2hlcyB7IVN5cy5tYXhfYXJyYXlfbGVuZ3RofS5cblxuICAgICopXG4gICAgbGV0IHJlc2l6ZSBoID1cbiAgICAgIGxldCBvZGF0YSA9IGguZGF0YSBpblxuICAgICAgbGV0IG9zaXplID0gQXJyYXkubGVuZ3RoIG9kYXRhIGluXG4gICAgICBsZXQgbnNpemUgPSBvc2l6ZSAqIDIgaW5cbiAgICAgIGNsZWFuIGg7XG4gICAgICBpZiBuc2l6ZSA8IFN5cy5tYXhfYXJyYXlfbGVuZ3RoICYmIGguc2l6ZSA+PSBvc2l6ZSBsc3IgMSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBuZGF0YSA9IEFycmF5Lm1ha2UgbnNpemUgRW1wdHkgaW5cbiAgICAgICAgaC5kYXRhIDwtIG5kYXRhOyAgICAgICAoKiBzbyB0aGF0IGtleV9pbmRleCBzZWVzIHRoZSBuZXcgYnVja2V0IGNvdW50ICopXG4gICAgICAgIGxldCByZWMgaW5zZXJ0X2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgICAgICBFbXB0eSAtPiAoKVxuICAgICAgICAgIHwgQ29ucyhoa2V5LCBkYXRhLCByZXN0KSAtPlxuICAgICAgICAgICAgICBpbnNlcnRfYnVja2V0IHJlc3Q7ICgqIHByZXNlcnZlIG9yaWdpbmFsIG9yZGVyIG9mIGVsZW1lbnRzICopXG4gICAgICAgICAgICAgIGxldCBuaWR4ID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgICAgICAgICBuZGF0YS4obmlkeCkgPC0gQ29ucyhoa2V5LCBkYXRhLCBuZGF0YS4obmlkeCkpIGluXG4gICAgICAgIGZvciBpID0gMCB0byBvc2l6ZSAtIDEgZG9cbiAgICAgICAgICBpbnNlcnRfYnVja2V0IG9kYXRhLihpKVxuICAgICAgICBkb25lXG4gICAgICBlbmRcblxuICAgIGxldCBhZGQgaCBrZXkgaW5mbyA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgaSA9IGtleV9pbmRleCBoIGhrZXkgaW5cbiAgICAgIGxldCBjb250YWluZXIgPSBILmNyZWF0ZSBrZXkgaW5mbyBpblxuICAgICAgbGV0IGJ1Y2tldCA9IENvbnMoaGtleSwgY29udGFpbmVyLCBoLmRhdGEuKGkpKSBpblxuICAgICAgaC5kYXRhLihpKSA8LSBidWNrZXQ7XG4gICAgICBoLnNpemUgPC0gaC5zaXplICsgMTtcbiAgICAgIGlmIGguc2l6ZSA+IEFycmF5Lmxlbmd0aCBoLmRhdGEgbHNsIDEgdGhlbiByZXNpemUgaFxuXG4gICAgbGV0IHJlbW92ZSBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIHJlbW92ZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IEVtcHR5XG4gICAgICAgIHwgQ29ucyhoaywgYywgbmV4dCkgd2hlbiBoa2V5ID0gaGsgLT5cbiAgICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgICAgfCBFVHJ1ZSAtPiBoLnNpemUgPC0gaC5zaXplIC0gMTsgbmV4dFxuICAgICAgICAgICAgfCBFRmFsc2UgLT4gQ29ucyhoaywgYywgcmVtb3ZlX2J1Y2tldCBuZXh0KVxuICAgICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICAgICgqIFRoZSBkZWFkIGtleSBpcyBhdXRvbWF0aWNhbGx5IHJlbW92ZWQuIEl0IGlzIGFjY2VwdGFibGVcbiAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgZnVuY3Rpb24gc2luY2UgaXQgYWxyZWFkeSByZW1vdmVzIGEgYmluZGluZyAqKVxuICAgICAgICAgICAgICAgIGguc2l6ZSA8LSBoLnNpemUgLSAxO1xuICAgICAgICAgICAgICAgIHJlbW92ZV9idWNrZXQgbmV4dFxuICAgICAgICAgICAgZW5kXG4gICAgICAgIHwgQ29ucyhoayxjLG5leHQpIC0+IENvbnMoaGssIGMsIHJlbW92ZV9idWNrZXQgbmV4dCkgaW5cbiAgICAgIGxldCBpID0ga2V5X2luZGV4IGggaGtleSBpblxuICAgICAgaC5kYXRhLihpKSA8LSByZW1vdmVfYnVja2V0IGguZGF0YS4oaSlcblxuICAgICgqKiB7IWZpbmR9IGRvbid0IHJlbW92ZSBkZWFkIGtleXMgYmVjYXVzZSBpdCB3b3VsZCBiZSBzdXJwcmlzaW5nIGZvclxuICAgICAgICB0aGUgdXNlciB0aGF0IGEgcmVhZC1vbmx5IGZ1bmN0aW9uIG11dGF0ZXMgdGhlIHN0YXRlIChlZy4gY29uY3VycmVudFxuICAgICAgICBhY2Nlc3MpLiBTYW1lIGZvciB7IWl0ZXJ9LCB7IWZvbGR9LCB7IW1lbX0uXG4gICAgKilcbiAgICBsZXQgcmVjIGZpbmRfcmVjIGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPlxuICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICgqIFRoaXMgY2FzZSBpcyBub3QgaW1wb3NzaWJsZSBiZWNhdXNlIHRoZSBnYyBjYW4gcnVuIGJldHdlZW5cbiAgICAgICAgICAgICAgICAgICAgICBILmVxdWFsIGFuZCBILmdldF9kYXRhICopXG4gICAgICAgICAgICAgICAgICBmaW5kX3JlYyBrZXkgaGtleSByZXN0XG4gICAgICAgICAgICAgIHwgU29tZSBkIC0+IGRcbiAgICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWMga2V5IGhrZXkgcmVzdFxuXG4gICAgbGV0IGZpbmQgaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgKCogVE9ETyBpbmxpbmUgMyBpdGVyYXRpb25zICopXG4gICAgICBmaW5kX3JlYyBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCByZWMgZmluZF9yZWNfb3B0IGtleSBoa2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBOb25lXG4gICAgICB8IENvbnMoaGssIGMsIHJlc3QpIHdoZW4gaGtleSA9IGhrICAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT5cbiAgICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAoKiBUaGlzIGNhc2UgaXMgbm90IGltcG9zc2libGUgYmVjYXVzZSB0aGUgZ2MgY2FuIHJ1biBiZXR3ZWVuXG4gICAgICAgICAgICAgICAgICAgICAgSC5lcXVhbCBhbmQgSC5nZXRfZGF0YSAqKVxuICAgICAgICAgICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIF8gYXMgZCAtPiBkXG4gICAgICAgICAgICAgIGVuZFxuICAgICAgICAgIHwgRUZhbHNlIC0+IGZpbmRfcmVjX29wdCBrZXkgaGtleSByZXN0XG4gICAgICAgICAgfCBFRGVhZCAtPlxuICAgICAgICAgICAgICBmaW5kX3JlY19vcHQga2V5IGhrZXkgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9yZWNfb3B0IGtleSBoa2V5IHJlc3RcblxuICAgIGxldCBmaW5kX29wdCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICAoKiBUT0RPIGlubGluZSAzIGl0ZXJhdGlvbnMgKilcbiAgICAgIGZpbmRfcmVjX29wdCBrZXkgaGtleSAoaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KSlcblxuICAgIGxldCBmaW5kX2FsbCBoIGtleSA9XG4gICAgICBsZXQgaGtleSA9IEguaGFzaCBoLnNlZWQga2V5IGluXG4gICAgICBsZXQgcmVjIGZpbmRfaW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT4gW11cbiAgICAgIHwgQ29ucyhoaywgYywgcmVzdCkgd2hlbiBoa2V5ID0gaGsgIC0+XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggSC5lcXVhbCBjIGtleSB3aXRoXG4gICAgICAgICAgfCBFVHJ1ZSAtPiBiZWdpbiBtYXRjaCBILmdldF9kYXRhIGMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgIGZpbmRfaW5fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgfCBTb21lIGQgLT4gZDo6ZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgICAgZW5kXG4gICAgICAgICAgfCBFRmFsc2UgLT4gZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIHwgRURlYWQgLT5cbiAgICAgICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdFxuICAgICAgICAgIGVuZFxuICAgICAgfCBDb25zKF8sIF8sIHJlc3QpIC0+XG4gICAgICAgICAgZmluZF9pbl9idWNrZXQgcmVzdCBpblxuICAgICAgZmluZF9pbl9idWNrZXQgaC5kYXRhLihrZXlfaW5kZXggaCBoa2V5KVxuXG5cbiAgICBsZXQgcmVwbGFjZSBoIGtleSBpbmZvID1cbiAgICAgIGxldCBoa2V5ID0gSC5oYXNoIGguc2VlZCBrZXkgaW5cbiAgICAgIGxldCByZWMgcmVwbGFjZV9idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICB8IENvbnMoaGssIGMsIG5leHQpIHdoZW4gaGtleSA9IGhrIC0+XG4gICAgICAgICAgICBiZWdpbiBtYXRjaCBILmVxdWFsIGMga2V5IHdpdGhcbiAgICAgICAgICAgIHwgRVRydWUgLT4gSC5zZXRfa2V5X2RhdGEgYyBrZXkgaW5mb1xuICAgICAgICAgICAgfCBFRmFsc2UgfCBFRGVhZCAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICAgICAgICBlbmRcbiAgICAgICAgfCBDb25zKF8sXyxuZXh0KSAtPiByZXBsYWNlX2J1Y2tldCBuZXh0XG4gICAgICBpblxuICAgICAgbGV0IGkgPSBrZXlfaW5kZXggaCBoa2V5IGluXG4gICAgICBsZXQgbCA9IGguZGF0YS4oaSkgaW5cbiAgICAgIHRyeVxuICAgICAgICByZXBsYWNlX2J1Y2tldCBsXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBsZXQgY29udGFpbmVyID0gSC5jcmVhdGUga2V5IGluZm8gaW5cbiAgICAgICAgaC5kYXRhLihpKSA8LSBDb25zKGhrZXksIGNvbnRhaW5lciwgbCk7XG4gICAgICAgIGguc2l6ZSA8LSBoLnNpemUgKyAxO1xuICAgICAgICBpZiBoLnNpemUgPiBBcnJheS5sZW5ndGggaC5kYXRhIGxzbCAxIHRoZW4gcmVzaXplIGhcblxuICAgIGxldCBtZW0gaCBrZXkgPVxuICAgICAgbGV0IGhrZXkgPSBILmhhc2ggaC5zZWVkIGtleSBpblxuICAgICAgbGV0IHJlYyBtZW1faW5fYnVja2V0ID0gZnVuY3Rpb25cbiAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICBmYWxzZVxuICAgICAgfCBDb25zKGhrLCBjLCByZXN0KSB3aGVuIGhrID0gaGtleSAtPlxuICAgICAgICAgIGJlZ2luIG1hdGNoIEguZXF1YWwgYyBrZXkgd2l0aFxuICAgICAgICAgIHwgRVRydWUgLT4gdHJ1ZVxuICAgICAgICAgIHwgRUZhbHNlIHwgRURlYWQgLT4gbWVtX2luX2J1Y2tldCByZXN0XG4gICAgICAgICAgZW5kXG4gICAgICB8IENvbnMoX2hrLCBfYywgcmVzdCkgLT4gbWVtX2luX2J1Y2tldCByZXN0IGluXG4gICAgICBtZW1faW5fYnVja2V0IGguZGF0YS4oa2V5X2luZGV4IGggaGtleSlcblxuICAgIGxldCBpdGVyIGYgaCA9XG4gICAgICBsZXQgcmVjIGRvX2J1Y2tldCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgaywgU29tZSBkIC0+IGYgayBkXG4gICAgICAgICAgICBlbmQ7IGRvX2J1Y2tldCByZXN0IGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBmb2xkIGYgaCBpbml0ID1cbiAgICAgIGxldCByZWMgZG9fYnVja2V0IGIgYWNjdSA9XG4gICAgICAgIG1hdGNoIGIgd2l0aFxuICAgICAgICAgIEVtcHR5IC0+XG4gICAgICAgICAgICBhY2N1XG4gICAgICAgIHwgQ29ucyhfLCBjLCByZXN0KSAtPlxuICAgICAgICAgICAgbGV0IGFjY3UgPSBiZWdpbiBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgU29tZSBrLCBTb21lIGQgLT4gZiBrIGQgYWNjdVxuICAgICAgICAgICAgZW5kIGluXG4gICAgICAgICAgICBkb19idWNrZXQgcmVzdCBhY2N1ICBpblxuICAgICAgbGV0IGQgPSBoLmRhdGEgaW5cbiAgICAgIGxldCBhY2N1ID0gcmVmIGluaXQgaW5cbiAgICAgIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggZCAtIDEgZG9cbiAgICAgICAgYWNjdSA6PSBkb19idWNrZXQgZC4oaSkgIWFjY3VcbiAgICAgIGRvbmU7XG4gICAgICAhYWNjdVxuXG4gICAgbGV0IGZpbHRlcl9tYXBfaW5wbGFjZSBmIGggPVxuICAgICAgbGV0IHJlYyBkb19idWNrZXQgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgICAgICBFbXB0eVxuICAgICAgICB8IENvbnMoaGssIGMsIHJlc3QpIC0+XG4gICAgICAgICAgICBtYXRjaCBILmdldF9rZXkgYywgSC5nZXRfZGF0YSBjIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgICAgICAgICAgICBkb19idWNrZXQgcmVzdFxuICAgICAgICAgICAgfCBTb21lIGssIFNvbWUgZCAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGYgayBkIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgZG9fYnVja2V0IHJlc3RcbiAgICAgICAgICAgICAgICB8IFNvbWUgbmV3X2QgLT5cbiAgICAgICAgICAgICAgICAgICAgSC5zZXRfa2V5X2RhdGEgYyBrIG5ld19kO1xuICAgICAgICAgICAgICAgICAgICBDb25zKGhrLCBjLCBkb19idWNrZXQgcmVzdClcbiAgICAgIGluXG4gICAgICBsZXQgZCA9IGguZGF0YSBpblxuICAgICAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBkIC0gMSBkb1xuICAgICAgICBkLihpKSA8LSBkb19idWNrZXQgZC4oaSlcbiAgICAgIGRvbmVcblxuICAgIGxldCBsZW5ndGggaCA9IGguc2l6ZVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgXywgcmVzdCkgLT4gYnVja2V0X2xlbmd0aCAoYWNjdSArIDEpIHJlc3RcblxuICAgIGxldCBzdGF0cyBoID1cbiAgICAgIGxldCBtYmwgPVxuICAgICAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBtIGIgLT4gSW50Lm1heCBtIChidWNrZXRfbGVuZ3RoIDAgYikpIDAgaC5kYXRhIGluXG4gICAgICBsZXQgaGlzdG8gPSBBcnJheS5tYWtlIChtYmwgKyAxKSAwIGluXG4gICAgICBBcnJheS5pdGVyXG4gICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICBsZXQgbCA9IGJ1Y2tldF9sZW5ndGggMCBiIGluXG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gaC5zaXplO1xuICAgICAgICBudW1fYnVja2V0cyA9IEFycmF5Lmxlbmd0aCBoLmRhdGE7XG4gICAgICAgIG1heF9idWNrZXRfbGVuZ3RoID0gbWJsO1xuICAgICAgICBidWNrZXRfaGlzdG9ncmFtID0gaGlzdG8gfVxuXG4gICAgbGV0IHJlYyBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBFbXB0eSAtPiBhY2N1XG4gICAgICB8IENvbnMoXywgYywgcmVzdCkgd2hlbiBILmNoZWNrX2tleSBjIC0+XG4gICAgICAgICAgYnVja2V0X2xlbmd0aF9hbGl2ZSAoYWNjdSArIDEpIHJlc3RcbiAgICAgIHwgQ29ucyhfLCBfLCByZXN0KSAtPiBidWNrZXRfbGVuZ3RoX2FsaXZlIGFjY3UgcmVzdFxuXG4gICAgbGV0IHN0YXRzX2FsaXZlIGggPVxuICAgICAgbGV0IHNpemUgPSByZWYgMCBpblxuICAgICAgbGV0IG1ibCA9XG4gICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gbSBiIC0+IEludC5tYXggbSAoYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIpKSAwIGguZGF0YVxuICAgICAgaW5cbiAgICAgIGxldCBoaXN0byA9IEFycmF5Lm1ha2UgKG1ibCArIDEpIDAgaW5cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgIGxldCBsID0gYnVja2V0X2xlbmd0aF9hbGl2ZSAwIGIgaW5cbiAgICAgICAgICAgc2l6ZSA6PSAhc2l6ZSArIGw7XG4gICAgICAgICAgIGhpc3RvLihsKSA8LSBoaXN0by4obCkgKyAxKVxuICAgICAgICBoLmRhdGE7XG4gICAgICB7IEhhc2h0YmwubnVtX2JpbmRpbmdzID0gIXNpemU7XG4gICAgICAgIG51bV9idWNrZXRzID0gQXJyYXkubGVuZ3RoIGguZGF0YTtcbiAgICAgICAgbWF4X2J1Y2tldF9sZW5ndGggPSBtYmw7XG4gICAgICAgIGJ1Y2tldF9oaXN0b2dyYW0gPSBoaXN0byB9XG5cbiAgICBsZXQgdG9fc2VxIHRibCA9XG4gICAgICAoKiBjYXB0dXJlIGN1cnJlbnQgYXJyYXksIHNvIHRoYXQgZXZlbiBpZiB0aGUgdGFibGUgaXMgcmVzaXplZCB3ZVxuICAgICAgICAga2VlcCBpdGVyYXRpbmcgb24gdGhlIHNhbWUgYXJyYXkgKilcbiAgICAgIGxldCB0YmxfZGF0YSA9IHRibC5kYXRhIGluXG4gICAgICAoKiBzdGF0ZTogaW5kZXggKiBuZXh0IGJ1Y2tldCB0byB0cmF2ZXJzZSAqKVxuICAgICAgbGV0IHJlYyBhdXggaSBidWNrICgpID0gbWF0Y2ggYnVjayB3aXRoXG4gICAgICAgIHwgRW1wdHkgLT5cbiAgICAgICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggdGJsX2RhdGFcbiAgICAgICAgICAgIHRoZW4gU2VxLk5pbFxuICAgICAgICAgICAgZWxzZSBhdXgoaSsxKSB0YmxfZGF0YS4oaSkgKClcbiAgICAgICAgfCBDb25zIChfLCBjLCBuZXh0KSAtPlxuICAgICAgICAgICAgYmVnaW4gbWF0Y2ggSC5nZXRfa2V5IGMsIEguZ2V0X2RhdGEgYyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gYXV4IGkgbmV4dCAoKVxuICAgICAgICAgICAgICB8IFNvbWUga2V5LCBTb21lIGRhdGEgLT5cbiAgICAgICAgICAgICAgICAgIFNlcS5Db25zICgoa2V5LCBkYXRhKSwgYXV4IGkgbmV4dClcbiAgICAgICAgICAgIGVuZFxuICAgICAgaW5cbiAgICAgIGF1eCAwIEVtcHR5XG5cbiAgICBsZXQgdG9fc2VxX2tleXMgbSA9IFNlcS5tYXAgZnN0ICh0b19zZXEgbSlcblxuICAgIGxldCB0b19zZXFfdmFsdWVzIG0gPSBTZXEubWFwIHNuZCAodG9fc2VxIG0pXG5cbiAgICBsZXQgYWRkX3NlcSB0YmwgaSA9XG4gICAgICBTZXEuaXRlciAoZnVuIChrLHYpIC0+IGFkZCB0YmwgayB2KSBpXG5cbiAgICBsZXQgcmVwbGFjZV9zZXEgdGJsIGkgPVxuICAgICAgU2VxLml0ZXIgKGZ1biAoayx2KSAtPiByZXBsYWNlIHRibCBrIHYpIGlcblxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBPYmpFcGggPSBPYmouRXBoZW1lcm9uXG5cbmxldCBfb2JqX29wdCA6IE9iai50IG9wdGlvbiAtPiAnYSBvcHRpb24gPSBmdW4geCAtPlxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHhcbiAgfCBTb21lIHYgLT4gU29tZSAoT2JqLm9iaiB2KVxuXG4oKiogVGhlIHByZXZpb3VzIGZ1bmN0aW9uIGlzIHR5cGVkIHNvIHRoaXMgb25lIGlzIGFsc28gY29ycmVjdCAqKVxubGV0IG9ial9vcHQgOiBPYmoudCBvcHRpb24gLT4gJ2Egb3B0aW9uID0gZnVuIHggLT4gT2JqLm1hZ2ljIHhcblxuXG5tb2R1bGUgSzEgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgKCkgOiAoJ2ssJ2QpIHQgPSBPYmpFcGguY3JlYXRlIDFcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIDogJ2sgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9rZXkgdCAwKVxuICBsZXQgZ2V0X2tleV9jb3B5ICh0OignaywnZCkgdCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgMClcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAoazonaykgOiB1bml0ID0gT2JqRXBoLnNldF9rZXkgdCAwIChPYmoucmVwciBrKVxuICBsZXQgdW5zZXRfa2V5ICh0OignaywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IDBcbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIDogYm9vbCA9IE9iakVwaC5jaGVja19rZXkgdCAwXG5cbiAgbGV0IGJsaXRfa2V5ICh0MTooJ2ssJ2QpIHQpICh0MjooJ2ssJ2QpIHQpOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcblxuICBsZXQgZ2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YSB0KVxuICBsZXQgZ2V0X2RhdGFfY29weSAodDooJ2ssJ2QpIHQpIDogJ2Qgb3B0aW9uID0gb2JqX29wdCAoT2JqRXBoLmdldF9kYXRhX2NvcHkgdClcbiAgbGV0IHNldF9kYXRhICh0OignaywnZCkgdCkgKGQ6J2QpIDogdW5pdCA9IE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2ssJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9kYXRhIHRcbiAgbGV0IGNoZWNrX2RhdGEgKHQ6KCdrLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfZGF0YSB0XG4gIGxldCBibGl0X2RhdGEgKHQxOihfLCdkKSB0KSAodDI6KF8sJ2QpIHQpIDogdW5pdCA9IE9iakVwaC5ibGl0X2RhdGEgdDEgdDJcblxuICBtb2R1bGUgTWFrZVNlZWRlZCAoSDpIYXNodGJsLlNlZWRlZEhhc2hlZFR5cGUpID1cbiAgICBHZW5IYXNoVGFibGUuTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgIHR5cGUgJ2EgY29udGFpbmVyID0gKEgudCwnYSkgdFxuICAgICAgdHlwZSB0ID0gSC50XG4gICAgICBsZXQgY3JlYXRlIGsgZCA9XG4gICAgICAgIGxldCBjID0gY3JlYXRlICgpIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgc2V0X2tleSBjIGs7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoID0gSC5oYXNoXG4gICAgICBsZXQgZXF1YWwgYyBrID1cbiAgICAgICAgKCogeyFnZXRfa2V5X2NvcHl9IGlzIG5vdCB1c2VkIGJlY2F1c2UgdGhlIGVxdWFsaXR5IG9mIHRoZSB1c2VyIGNhbiBiZVxuICAgICAgICAgICAgdGhlIHBoeXNpY2FsIGVxdWFsaXR5ICopXG4gICAgICAgIG1hdGNoIGdldF9rZXkgYyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBHZW5IYXNoVGFibGUuRURlYWRcbiAgICAgICAgfCBTb21lIGsnIC0+XG4gICAgICAgICAgICBpZiBILmVxdWFsIGsgaycgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgPSBnZXRfa2V5XG4gICAgICBsZXQgc2V0X2tleV9kYXRhIGMgayBkID1cbiAgICAgICAgdW5zZXRfZGF0YSBjO1xuICAgICAgICBzZXRfa2V5IGMgaztcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5ID0gY2hlY2tfa2V5XG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEg6IEhhc2h0YmwuSGFzaGVkVHlwZSk6IChTIHdpdGggdHlwZSBrZXkgPSBILnQpID1cbiAgc3RydWN0XG4gICAgaW5jbHVkZSBNYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgICB0eXBlIHQgPSBILnRcbiAgICAgICAgbGV0IGVxdWFsID0gSC5lcXVhbFxuICAgICAgICBsZXQgaGFzaCAoX3NlZWQ6IGludCkgeCA9IEguaGFzaCB4XG4gICAgICBlbmQpXG4gICAgbGV0IGNyZWF0ZSBzeiA9IGNyZWF0ZSB+cmFuZG9tOmZhbHNlIHN6XG4gICAgbGV0IG9mX3NlcSBpID1cbiAgICAgIGxldCB0YmwgPSBjcmVhdGUgMTYgaW5cbiAgICAgIHJlcGxhY2Vfc2VxIHRibCBpO1xuICAgICAgdGJsXG4gIGVuZFxuXG5lbmRcblxubW9kdWxlIEsyID0gc3RydWN0XG4gIHR5cGUgKCdrMSwgJ2syLCAnZCkgdCA9IE9iakVwaC50XG5cbiAgbGV0IGNyZWF0ZSAoKSA6ICgnazEsJ2syLCdkKSB0ID0gT2JqRXBoLmNyZWF0ZSAyXG5cbiAgbGV0IGdldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IDApXG4gIGxldCBnZXRfa2V5MV9jb3B5ICh0OignazEsJ2syLCdkKSB0KSA6ICdrMSBvcHRpb24gPVxuICAgIG9ial9vcHQgKE9iakVwaC5nZXRfa2V5X2NvcHkgdCAwKVxuICBsZXQgc2V0X2tleTEgKHQ6KCdrMSwnazIsJ2QpIHQpIChrOidrMSkgOiB1bml0ID1cbiAgICBPYmpFcGguc2V0X2tleSB0IDAgKE9iai5yZXByIGspXG4gIGxldCB1bnNldF9rZXkxICh0OignazEsJ2syLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfa2V5IHQgMFxuICBsZXQgY2hlY2tfa2V5MSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IDBcblxuICBsZXQgZ2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfa2V5IHQgMSlcbiAgbGV0IGdldF9rZXkyX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2syIG9wdGlvbiA9XG4gICAgb2JqX29wdCAoT2JqRXBoLmdldF9rZXlfY29weSB0IDEpXG4gIGxldCBzZXRfa2V5MiAodDooJ2sxLCdrMiwnZCkgdCkgKGs6J2syKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgMSAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleTIgKHQ6KCdrMSwnazIsJ2QpIHQpIDogdW5pdCA9IE9iakVwaC51bnNldF9rZXkgdCAxXG4gIGxldCBjaGVja19rZXkyICh0OignazEsJ2syLCdkKSB0KSA6IGJvb2wgPSBPYmpFcGguY2hlY2tfa2V5IHQgMVxuXG5cbiAgbGV0IGJsaXRfa2V5MSAodDE6KCdrMSxfLF8pIHQpICh0MjooJ2sxLF8sXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMCB0MiAwIDFcbiAgbGV0IGJsaXRfa2V5MiAodDE6KF8sJ2syLF8pIHQpICh0MjooXywnazIsXykgdCkgOiB1bml0ID1cbiAgICBPYmpFcGguYmxpdF9rZXkgdDEgMSB0MiAxIDFcbiAgbGV0IGJsaXRfa2V5MTIgKHQxOignazEsJ2syLF8pIHQpICh0MjooJ2sxLCdrMixfKSB0KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSAwIHQyIDAgMlxuXG4gIGxldCBnZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrMSwnazIsJ2QpIHQpIDogJ2Qgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGFfY29weSB0KVxuICBsZXQgc2V0X2RhdGEgKHQ6KCdrMSwnazIsJ2QpIHQpIChkOidkKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfZGF0YSB0IChPYmoucmVwciBkKVxuICBsZXQgdW5zZXRfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2RhdGEgdFxuICBsZXQgY2hlY2tfZGF0YSAodDooJ2sxLCdrMiwnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXyxfLCdkKSB0KSAodDI6KF8sXywnZCkgdCkgOiB1bml0ID0gT2JqRXBoLmJsaXRfZGF0YSB0MSB0MlxuXG4gIG1vZHVsZSBNYWtlU2VlZGVkXG4gICAgICAoSDE6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKVxuICAgICAgKEgyOkhhc2h0YmwuU2VlZGVkSGFzaGVkVHlwZSkgPVxuICAgIEdlbkhhc2hUYWJsZS5NYWtlU2VlZGVkKHN0cnVjdFxuICAgICAgdHlwZSAnYSBjb250YWluZXIgPSAoSDEudCxIMi50LCdhKSB0XG4gICAgICB0eXBlIHQgPSBIMS50ICogSDIudFxuICAgICAgbGV0IGNyZWF0ZSAoazEsazIpIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoKSBpblxuICAgICAgICBzZXRfZGF0YSBjIGQ7XG4gICAgICAgIHNldF9rZXkxIGMgazE7IHNldF9rZXkyIGMgazI7XG4gICAgICAgIGNcbiAgICAgIGxldCBoYXNoIHNlZWQgKGsxLGsyKSA9XG4gICAgICAgIEgxLmhhc2ggc2VlZCBrMSArIEgyLmhhc2ggc2VlZCBrMiAqIDY1NTk5XG4gICAgICBsZXQgZXF1YWwgYyAoazEsazIpID1cbiAgICAgICAgbWF0Y2ggZ2V0X2tleTEgYywgZ2V0X2tleTIgYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgXyB8IF8gLCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICB8IFNvbWUgazEnLCBTb21lIGsyJyAtPlxuICAgICAgICAgICAgaWYgSDEuZXF1YWwgazEgazEnICYmIEgyLmVxdWFsIGsyIGsyJ1xuICAgICAgICAgICAgdGhlbiBHZW5IYXNoVGFibGUuRVRydWUgZWxzZSBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIG1hdGNoIGdldF9rZXkxIGMsIGdldF9rZXkyIGMgd2l0aFxuICAgICAgICB8IE5vbmUsIF8gfCBfICwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBrMScsIFNvbWUgazInIC0+IFNvbWUgKGsxJywgazInKVxuICAgICAgbGV0IHNldF9rZXlfZGF0YSBjIChrMSxrMikgZCA9XG4gICAgICAgIHVuc2V0X2RhdGEgYztcbiAgICAgICAgc2V0X2tleTEgYyBrMTsgc2V0X2tleTIgYyBrMjtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPSBjaGVja19rZXkxIGMgJiYgY2hlY2tfa2V5MiBjXG4gICAgZW5kKVxuXG4gIG1vZHVsZSBNYWtlKEgxOiBIYXNodGJsLkhhc2hlZFR5cGUpKEgyOiBIYXNodGJsLkhhc2hlZFR5cGUpOlxuICAgIChTIHdpdGggdHlwZSBrZXkgPSBIMS50ICogSDIudCkgPVxuICBzdHJ1Y3RcbiAgICBpbmNsdWRlIE1ha2VTZWVkZWRcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgxLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMS5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDEuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICAgICAgKHN0cnVjdFxuICAgICAgICAgIHR5cGUgdCA9IEgyLnRcbiAgICAgICAgICBsZXQgZXF1YWwgPSBIMi5lcXVhbFxuICAgICAgICAgIGxldCBoYXNoIChfc2VlZDogaW50KSB4ID0gSDIuaGFzaCB4XG4gICAgICAgIGVuZClcbiAgICBsZXQgY3JlYXRlIHN6ID0gY3JlYXRlIH5yYW5kb206ZmFsc2Ugc3pcbiAgICBsZXQgb2Zfc2VxIGkgPVxuICAgICAgbGV0IHRibCA9IGNyZWF0ZSAxNiBpblxuICAgICAgcmVwbGFjZV9zZXEgdGJsIGk7XG4gICAgICB0YmxcbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgS24gPSBzdHJ1Y3RcbiAgdHlwZSAoJ2ssJ2QpIHQgPSBPYmpFcGgudFxuXG4gIGxldCBjcmVhdGUgbiA6ICgnaywnZCkgdCA9IE9iakVwaC5jcmVhdGUgblxuICBsZXQgbGVuZ3RoIChrOignaywnZCkgdCkgOiBpbnQgPSBPYmpFcGgubGVuZ3RoIGtcblxuICBsZXQgZ2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiAnayBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2tleSB0IG4pXG4gIGxldCBnZXRfa2V5X2NvcHkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIDogJ2sgb3B0aW9uID1cbiAgICBvYmpfb3B0IChPYmpFcGguZ2V0X2tleV9jb3B5IHQgbilcbiAgbGV0IHNldF9rZXkgKHQ6KCdrLCdkKSB0KSAobjppbnQpIChrOidrKSA6IHVuaXQgPVxuICAgIE9iakVwaC5zZXRfa2V5IHQgbiAoT2JqLnJlcHIgaylcbiAgbGV0IHVuc2V0X2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiB1bml0ID0gT2JqRXBoLnVuc2V0X2tleSB0IG5cbiAgbGV0IGNoZWNrX2tleSAodDooJ2ssJ2QpIHQpIChuOmludCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2tleSB0IG5cblxuICBsZXQgYmxpdF9rZXkgKHQxOignaywnZCkgdCkgKG8xOmludCkgKHQyOignaywnZCkgdCkgKG8yOmludCkgKGw6aW50KSA6IHVuaXQgPVxuICAgIE9iakVwaC5ibGl0X2tleSB0MSBvMSB0MiBvMiBsXG5cbiAgbGV0IGdldF9kYXRhICh0OignaywnZCkgdCkgOiAnZCBvcHRpb24gPSBvYmpfb3B0IChPYmpFcGguZ2V0X2RhdGEgdClcbiAgbGV0IGdldF9kYXRhX2NvcHkgKHQ6KCdrLCdkKSB0KSA6ICdkIG9wdGlvbiA9IG9ial9vcHQgKE9iakVwaC5nZXRfZGF0YV9jb3B5IHQpXG4gIGxldCBzZXRfZGF0YSAodDooJ2ssJ2QpIHQpIChkOidkKSA6IHVuaXQgPSBPYmpFcGguc2V0X2RhdGEgdCAoT2JqLnJlcHIgZClcbiAgbGV0IHVuc2V0X2RhdGEgKHQ6KCdrLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGgudW5zZXRfZGF0YSB0XG4gIGxldCBjaGVja19kYXRhICh0OignaywnZCkgdCkgOiBib29sID0gT2JqRXBoLmNoZWNrX2RhdGEgdFxuICBsZXQgYmxpdF9kYXRhICh0MTooXywnZCkgdCkgKHQyOihfLCdkKSB0KSA6IHVuaXQgPSBPYmpFcGguYmxpdF9kYXRhIHQxIHQyXG5cbiAgbW9kdWxlIE1ha2VTZWVkZWQgKEg6SGFzaHRibC5TZWVkZWRIYXNoZWRUeXBlKSA9XG4gICAgR2VuSGFzaFRhYmxlLk1ha2VTZWVkZWQoc3RydWN0XG4gICAgICB0eXBlICdhIGNvbnRhaW5lciA9IChILnQsJ2EpIHRcbiAgICAgIHR5cGUgdCA9IEgudCBhcnJheVxuICAgICAgbGV0IGNyZWF0ZSBrIGQgPVxuICAgICAgICBsZXQgYyA9IGNyZWF0ZSAoQXJyYXkubGVuZ3RoIGspIGluXG4gICAgICAgIHNldF9kYXRhIGMgZDtcbiAgICAgICAgZm9yIGk9MCB0byBBcnJheS5sZW5ndGggayAtMSBkb1xuICAgICAgICAgIHNldF9rZXkgYyBpIGsuKGkpO1xuICAgICAgICBkb25lO1xuICAgICAgICBjXG4gICAgICBsZXQgaGFzaCBzZWVkIGsgPVxuICAgICAgICBsZXQgaCA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBoIDo9IEguaGFzaCBzZWVkIGsuKGkpICogNjU1OTkgKyAhaDtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgIWhcbiAgICAgIGxldCBlcXVhbCBjIGsgPVxuICAgICAgICBsZXQgbGVuICA9IEFycmF5Lmxlbmd0aCBrIGluXG4gICAgICAgIGxldCBsZW4nID0gbGVuZ3RoIGMgaW5cbiAgICAgICAgaWYgbGVuICE9IGxlbicgdGhlbiBHZW5IYXNoVGFibGUuRUZhbHNlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgcmVjIGVxdWFsX2FycmF5IGsgYyBpID1cbiAgICAgICAgICAgIGlmIGkgPCAwIHRoZW4gR2VuSGFzaFRhYmxlLkVUcnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIG1hdGNoIGdldF9rZXkgYyBpIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IEdlbkhhc2hUYWJsZS5FRGVhZFxuICAgICAgICAgICAgICB8IFNvbWUga2kgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEguZXF1YWwgay4oaSkga2lcbiAgICAgICAgICAgICAgICAgIHRoZW4gZXF1YWxfYXJyYXkgayBjIChpLTEpXG4gICAgICAgICAgICAgICAgICBlbHNlIEdlbkhhc2hUYWJsZS5FRmFsc2VcbiAgICAgICAgICBpblxuICAgICAgICAgIGVxdWFsX2FycmF5IGsgYyAobGVuLTEpXG4gICAgICBsZXQgZ2V0X2RhdGEgPSBnZXRfZGF0YVxuICAgICAgbGV0IGdldF9rZXkgYyA9XG4gICAgICAgIGxldCBsZW4gPSBsZW5ndGggYyBpblxuICAgICAgICBpZiBsZW4gPSAwIHRoZW4gU29tZSBbfHxdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgMCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgazAgLT5cbiAgICAgICAgICAgICAgbGV0IHJlYyBmaWxsIGEgaSA9XG4gICAgICAgICAgICAgICAgaWYgaSA8IDEgdGhlbiBTb21lIGFcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBtYXRjaCBnZXRfa2V5IGMgaSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGtpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgYS4oaSkgPC0ga2k7XG4gICAgICAgICAgICAgICAgICAgICAgZmlsbCBhIChpLTEpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4gazAgaW5cbiAgICAgICAgICAgICAgZmlsbCBhIChsZW4tMSlcbiAgICAgIGxldCBzZXRfa2V5X2RhdGEgYyBrIGQgPVxuICAgICAgICB1bnNldF9kYXRhIGM7XG4gICAgICAgIGZvciBpPTAgdG8gQXJyYXkubGVuZ3RoIGsgLTEgZG9cbiAgICAgICAgICBzZXRfa2V5IGMgaSBrLihpKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgc2V0X2RhdGEgYyBkXG4gICAgICBsZXQgY2hlY2tfa2V5IGMgPVxuICAgICAgICBsZXQgcmVjIGNoZWNrIGMgaSA9XG4gICAgICAgICAgaSA8IDAgfHwgKGNoZWNrX2tleSBjIGkgJiYgY2hlY2sgYyAoaS0xKSkgaW5cbiAgICAgICAgY2hlY2sgYyAobGVuZ3RoIGMgLSAxKVxuICAgIGVuZClcblxuICBtb2R1bGUgTWFrZShIOiBIYXNodGJsLkhhc2hlZFR5cGUpOiAoUyB3aXRoIHR5cGUga2V5ID0gSC50IGFycmF5KSA9XG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTWFrZVNlZWRlZChzdHJ1Y3RcbiAgICAgICAgdHlwZSB0ID0gSC50XG4gICAgICAgIGxldCBlcXVhbCA9IEguZXF1YWxcbiAgICAgICAgbGV0IGhhc2ggKF9zZWVkOiBpbnQpIHggPSBILmhhc2ggeFxuICAgICAgZW5kKVxuICAgIGxldCBjcmVhdGUgc3ogPSBjcmVhdGUgfnJhbmRvbTpmYWxzZSBzelxuICAgIGxldCBvZl9zZXEgaSA9XG4gICAgICBsZXQgdGJsID0gY3JlYXRlIDE2IGluXG4gICAgICByZXBsYWNlX3NlcSB0YmwgaTtcbiAgICAgIHRibFxuICBlbmRcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPQ2FtbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgIFhhdmllciBMZXJveSBhbmQgRGFtaWVuIERvbGlnZXosIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgICAqKVxuKCogICAgIGVuIEF1dG9tYXRpcXVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiAgICAqKVxuKCogICB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIHZlcnNpb24gMi4xLCB3aXRoIHRoZSAgICAgICAgICAqKVxuKCogICBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiB0aGUgZmlsZSBMSUNFTlNFLiAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgZ2VuZXJpY19xdW90ZSBxdW90ZXF1b3RlIHMgPVxuICBsZXQgbCA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIGIgJ1xcJyc7XG4gIGZvciBpID0gMCB0byBsIC0gMSBkb1xuICAgIGlmIHMuW2ldID0gJ1xcJydcbiAgICB0aGVuIEJ1ZmZlci5hZGRfc3RyaW5nIGIgcXVvdGVxdW90ZVxuICAgIGVsc2UgQnVmZmVyLmFkZF9jaGFyIGIgIHMuW2ldXG4gIGRvbmU7XG4gIEJ1ZmZlci5hZGRfY2hhciBiICdcXCcnO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzFdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvYmFzZW5hbWUuaHRtbFxuICBJbiBzdGVwIDEgb2YgW1sxXV0sIHdlIGNob29zZSB0byByZXR1cm4gXCIuXCIgZm9yIGVtcHR5IGlucHV0LlxuICAgIChmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzIHZlcnNpb25zIG9mIE9DYW1sKVxuICBJbiBzdGVwIDIsIHdlIGNob29zZSB0byBwcm9jZXNzIFwiLy9cIiBub3JtYWxseS5cbiAgU3RlcCA2IGlzIG5vdCBpbXBsZW1lbnRlZDogd2UgY29uc2lkZXIgdGhhdCB0aGUgW3N1ZmZpeF0gb3BlcmFuZCBpc1xuICAgIGFsd2F5cyBhYnNlbnQuICBTdWZmaXhlcyBhcmUgaGFuZGxlZCBieSBbY2hvcF9zdWZmaXhdIGFuZCBbY2hvcF9leHRlbnNpb25dLlxuKilcbmxldCBnZW5lcmljX2Jhc2VuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZSBuYW1lID1cbiAgbGV0IHJlYyBmaW5kX2VuZCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gZmluZF9lbmQgKG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgbiAobiArIDEpXG4gIGFuZCBmaW5kX2JlZyBuIHAgPVxuICAgIGlmIG4gPCAwIHRoZW4gU3RyaW5nLnN1YiBuYW1lIDAgcFxuICAgIGVsc2UgaWYgaXNfZGlyX3NlcCBuYW1lIG4gdGhlbiBTdHJpbmcuc3ViIG5hbWUgKG4gKyAxKSAocCAtIG4gLSAxKVxuICAgIGVsc2UgZmluZF9iZWcgKG4gLSAxKSBwXG4gIGluXG4gIGlmIG5hbWUgPSBcIlwiXG4gIHRoZW4gY3VycmVudF9kaXJfbmFtZVxuICBlbHNlIGZpbmRfZW5kIChTdHJpbmcubGVuZ3RoIG5hbWUgLSAxKVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIE9wZW4gR3JvdXAgc3BlY2lmaWNhdGlvbiBmb3VuZCBoZXJlOlxuICBbWzJdXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS91dGlsaXRpZXMvZGlybmFtZS5odG1sXG4gIEluIHN0ZXAgNiBvZiBbWzJdXSwgd2UgY2hvb3NlIHRvIHByb2Nlc3MgXCIvL1wiIG5vcm1hbGx5LlxuKilcbmxldCBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lIG5hbWUgPVxuICBsZXQgcmVjIHRyYWlsaW5nX3NlcCBuID1cbiAgICBpZiBuIDwgMCB0aGVuIFN0cmluZy5zdWIgbmFtZSAwIDFcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gdHJhaWxpbmdfc2VwIChuIC0gMSlcbiAgICBlbHNlIGJhc2UgblxuICBhbmQgYmFzZSBuID1cbiAgICBpZiBuIDwgMCB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgICBlbHNlIGlmIGlzX2Rpcl9zZXAgbmFtZSBuIHRoZW4gaW50ZXJtZWRpYXRlX3NlcCBuXG4gICAgZWxzZSBiYXNlIChuIC0gMSlcbiAgYW5kIGludGVybWVkaWF0ZV9zZXAgbiA9XG4gICAgaWYgbiA8IDAgdGhlbiBTdHJpbmcuc3ViIG5hbWUgMCAxXG4gICAgZWxzZSBpZiBpc19kaXJfc2VwIG5hbWUgbiB0aGVuIGludGVybWVkaWF0ZV9zZXAgKG4gLSAxKVxuICAgIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKG4gKyAxKVxuICBpblxuICBpZiBuYW1lID0gXCJcIlxuICB0aGVuIGN1cnJlbnRfZGlyX25hbWVcbiAgZWxzZSB0cmFpbGluZ19zZXAgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbm1vZHVsZSB0eXBlIFNZU0RFUFMgPSBzaWdcbiAgdmFsIG51bGwgOiBzdHJpbmdcbiAgdmFsIGN1cnJlbnRfZGlyX25hbWUgOiBzdHJpbmdcbiAgdmFsIHBhcmVudF9kaXJfbmFtZSA6IHN0cmluZ1xuICB2YWwgZGlyX3NlcCA6IHN0cmluZ1xuICB2YWwgaXNfZGlyX3NlcCA6IHN0cmluZyAtPiBpbnQgLT4gYm9vbFxuICB2YWwgaXNfcmVsYXRpdmUgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgaXNfaW1wbGljaXQgOiBzdHJpbmcgLT4gYm9vbFxuICB2YWwgY2hlY2tfc3VmZml4IDogc3RyaW5nIC0+IHN0cmluZyAtPiBib29sXG4gIHZhbCBjaG9wX3N1ZmZpeF9vcHQgOiBzdWZmaXg6c3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCB0ZW1wX2Rpcl9uYW1lIDogc3RyaW5nXG4gIHZhbCBxdW90ZSA6IHN0cmluZyAtPiBzdHJpbmdcbiAgdmFsIHF1b3RlX2NvbW1hbmQgOlxuICAgIHN0cmluZyAtPiA/c3RkaW46IHN0cmluZyAtPiA/c3Rkb3V0OiBzdHJpbmcgLT4gP3N0ZGVycjogc3RyaW5nXG4gICAgICAgICAgIC0+IHN0cmluZyBsaXN0IC0+IHN0cmluZ1xuICB2YWwgYmFzZW5hbWUgOiBzdHJpbmcgLT4gc3RyaW5nXG4gIHZhbCBkaXJuYW1lIDogc3RyaW5nIC0+IHN0cmluZ1xuZW5kXG5cbm1vZHVsZSBVbml4IDogU1lTREVQUyA9IHN0cnVjdFxuICBsZXQgbnVsbCA9IFwiL2Rldi9udWxsXCJcbiAgbGV0IGN1cnJlbnRfZGlyX25hbWUgPSBcIi5cIlxuICBsZXQgcGFyZW50X2Rpcl9uYW1lID0gXCIuLlwiXG4gIGxldCBkaXJfc2VwID0gXCIvXCJcbiAgbGV0IGlzX2Rpcl9zZXAgcyBpID0gcy5baV0gPSAnLydcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPSBTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJ1xuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgbGV0IGNoZWNrX3N1ZmZpeCBuYW1lIHN1ZmYgPVxuICAgIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDpzdWZmIG5hbWVcblxuICBsZXQgY2hvcF9zdWZmaXhfb3B0IH5zdWZmaXggZmlsZW5hbWUgPVxuICAgIGxldCBsZW5fcyA9IFN0cmluZy5sZW5ndGggc3VmZml4IGFuZCBsZW5fZiA9IFN0cmluZy5sZW5ndGggZmlsZW5hbWUgaW5cbiAgICBpZiBsZW5fZiA+PSBsZW5fcyB0aGVuXG4gICAgICBsZXQgciA9IFN0cmluZy5zdWIgZmlsZW5hbWUgKGxlbl9mIC0gbGVuX3MpIGxlbl9zIGluXG4gICAgICBpZiByID0gc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgdGVtcF9kaXJfbmFtZSA9XG4gICAgdHJ5IFN5cy5nZXRlbnYgXCJUTVBESVJcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi90bXBcIlxuICBsZXQgcXVvdGUgPSBnZW5lcmljX3F1b3RlIFwiJ1xcXFwnJ1wiXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCIgXCIgKExpc3QubWFwIHF1b3RlIChjbWQgOjogYXJncykpXG4gICAgXiAobWF0Y2ggc3RkaW4gIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiIDxcIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlIGYpXG4gICAgXiAobWF0Y2ggc3RkZXJyIHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IGlmIHN0ZGVyciA9IHN0ZG91dFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiBcIiAyPiYxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlIGYpXG4gIGxldCBiYXNlbmFtZSA9IGdlbmVyaWNfYmFzZW5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG4gIGxldCBkaXJuYW1lID0gZ2VuZXJpY19kaXJuYW1lIGlzX2Rpcl9zZXAgY3VycmVudF9kaXJfbmFtZVxuZW5kXG5cbm1vZHVsZSBXaW4zMiA6IFNZU0RFUFMgPSBzdHJ1Y3RcbiAgbGV0IG51bGwgPSBcIk5VTFwiXG4gIGxldCBjdXJyZW50X2Rpcl9uYW1lID0gXCIuXCJcbiAgbGV0IHBhcmVudF9kaXJfbmFtZSA9IFwiLi5cIlxuICBsZXQgZGlyX3NlcCA9IFwiXFxcXFwiXG4gIGxldCBpc19kaXJfc2VwIHMgaSA9IGxldCBjID0gcy5baV0gaW4gYyA9ICcvJyB8fCBjID0gJ1xcXFwnIHx8IGMgPSAnOidcbiAgbGV0IGlzX3JlbGF0aXZlIG4gPVxuICAgIChTdHJpbmcubGVuZ3RoIG4gPCAxIHx8IG4uWzBdIDw+ICcvJylcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMSB8fCBuLlswXSA8PiAnXFxcXCcpXG4gICAgJiYgKFN0cmluZy5sZW5ndGggbiA8IDIgfHwgbi5bMV0gPD4gJzonKVxuICBsZXQgaXNfaW1wbGljaXQgbiA9XG4gICAgaXNfcmVsYXRpdmUgblxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuL1wiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAyIHx8IFN0cmluZy5zdWIgbiAwIDIgPD4gXCIuXFxcXFwiKVxuICAgICYmIChTdHJpbmcubGVuZ3RoIG4gPCAzIHx8IFN0cmluZy5zdWIgbiAwIDMgPD4gXCIuLi9cIilcbiAgICAmJiAoU3RyaW5nLmxlbmd0aCBuIDwgMyB8fCBTdHJpbmcuc3ViIG4gMCAzIDw+IFwiLi5cXFxcXCIpXG4gIGxldCBjaGVja19zdWZmaXggbmFtZSBzdWZmID1cbiAgIFN0cmluZy5sZW5ndGggbmFtZSA+PSBTdHJpbmcubGVuZ3RoIHN1ZmYgJiZcbiAgIChsZXQgcyA9IFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gU3RyaW5nLmxlbmd0aCBzdWZmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTdHJpbmcubGVuZ3RoIHN1ZmYpIGluXG4gICAgU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzID0gU3RyaW5nLmxvd2VyY2FzZV9hc2NpaSBzdWZmKVxuXG4gIGxldCBjaG9wX3N1ZmZpeF9vcHQgfnN1ZmZpeCBmaWxlbmFtZSA9XG4gICAgbGV0IGxlbl9zID0gU3RyaW5nLmxlbmd0aCBzdWZmaXggYW5kIGxlbl9mID0gU3RyaW5nLmxlbmd0aCBmaWxlbmFtZSBpblxuICAgIGlmIGxlbl9mID49IGxlbl9zIHRoZW5cbiAgICAgIGxldCByID0gU3RyaW5nLnN1YiBmaWxlbmFtZSAobGVuX2YgLSBsZW5fcykgbGVuX3MgaW5cbiAgICAgIGlmIFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgciA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWkgc3VmZml4IHRoZW5cbiAgICAgICAgU29tZSAoU3RyaW5nLnN1YiBmaWxlbmFtZSAwIChsZW5fZiAtIGxlbl9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuXG4gIGxldCB0ZW1wX2Rpcl9uYW1lID1cbiAgICB0cnkgU3lzLmdldGVudiBcIlRFTVBcIiB3aXRoIE5vdF9mb3VuZCAtPiBcIi5cIlxuICBsZXQgcXVvdGUgcyA9XG4gICAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKGwgKyAyMCkgaW5cbiAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7XG4gICAgbGV0IHJlYyBsb29wIGkgPVxuICAgICAgaWYgaSA9IGwgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIicgZWxzZVxuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgfCAnXFxcIicgLT4gbG9vcF9icyAwIGk7XG4gICAgICB8ICdcXFxcJyAtPiBsb29wX2JzIDAgaTtcbiAgICAgIHwgYyAgICAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjOyBsb29wIChpKzEpO1xuICAgIGFuZCBsb29wX2JzIG4gaSA9XG4gICAgICBpZiBpID0gbCB0aGVuIGJlZ2luXG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBiICdcXFwiJztcbiAgICAgICAgYWRkX2JzIG47XG4gICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgIHwgJ1xcXCInIC0+IGFkZF9icyAoMipuKzEpOyBCdWZmZXIuYWRkX2NoYXIgYiAnXFxcIic7IGxvb3AgKGkrMSk7XG4gICAgICAgIHwgJ1xcXFwnIC0+IGxvb3BfYnMgKG4rMSkgKGkrMSk7XG4gICAgICAgIHwgXyAgICAtPiBhZGRfYnMgbjsgbG9vcCBpXG4gICAgICBlbmRcbiAgICBhbmQgYWRkX2JzIG4gPSBmb3IgX2ogPSAxIHRvIG4gZG8gQnVmZmVyLmFkZF9jaGFyIGIgJ1xcXFwnOyBkb25lXG4gICAgaW5cbiAgICBsb29wIDA7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJcbigqXG5RdW90aW5nIGNvbW1hbmRzIGZvciBleGVjdXRpb24gYnkgY21kLmV4ZSBpcyBkaWZmaWN1bHQuXG4xLSBFYWNoIGFyZ3VtZW50IGlzIGZpcnN0IHF1b3RlZCB1c2luZyB0aGUgXCJxdW90ZVwiIGZ1bmN0aW9uIGFib3ZlLCB0b1xuICAgcHJvdGVjdCBpdCBhZ2FpbnN0IHRoZSBwcm9jZXNzaW5nIHBlcmZvcm1lZCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSxcbiAgIHRoZW4gY21kLmV4ZSdzIHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgZXNjYXBlZCB3aXRoICdeJywgdXNpbmdcbiAgIHRoZSBcInF1b3RlX2NtZFwiIGZ1bmN0aW9uIGJlbG93LiAgRm9yIG1vcmUgZGV0YWlscywgc2VlXG4gICBodHRwczovL2Jsb2dzLm1zZG4ubWljcm9zb2Z0LmNvbS90d2lzdHlsaXR0bGVwYXNzYWdlc2FsbGFsaWtlLzIwMTEvMDQvMjNcbjItIFRoZSBjb21tYW5kIGFuZCB0aGUgcmVkaXJlY3Rpb24gZmlsZXMsIGlmIGFueSwgbXVzdCBiZSBkb3VibGUtcXVvdGVkXG4gICBpbiBjYXNlIHRoZXkgY29udGFpbiBzcGFjZXMuICBUaGlzIHF1b3RpbmcgaXMgaW50ZXJwcmV0ZWQgYnkgY21kLmV4ZSxcbiAgIG5vdCBieSB0aGUgQyBydW50aW1lIHN5c3RlbSwgaGVuY2UgdGhlIFwicXVvdGVcIiBmdW5jdGlvbiBhYm92ZVxuICAgY2Fubm90IGJlIHVzZWQuICBUaGUgdHdvIGNoYXJhY3RlcnMgd2UgZG9uJ3Qga25vdyBob3cgdG8gcXVvdGVcbiAgIGluc2lkZSBhIGRvdWJsZS1xdW90ZWQgY21kLmV4ZSBzdHJpbmcgYXJlIGRvdWJsZS1xdW90ZSBhbmQgcGVyY2VudC5cbiAgIFdlIGp1c3QgZmFpbCBpZiB0aGUgY29tbWFuZCBuYW1lIG9yIHRoZSByZWRpcmVjdGlvbiBmaWxlIG5hbWVzXG4gICBjb250YWluIGEgZG91YmxlIHF1b3RlIChub3QgYWxsb3dlZCBpbiBXaW5kb3dzIGZpbGUgbmFtZXMsIGFueXdheSlcbiAgIG9yIGEgcGVyY2VudC4gIFNlZSBmdW5jdGlvbiBcInF1b3RlX2NtZF9maWxlbmFtZVwiIGJlbG93LlxuMy0gVGhlIHdob2xlIHN0cmluZyBwYXNzZWQgdG8gU3lzLmNvbW1hbmQgaXMgdGhlbiBlbmNsb3NlZCBpbiBkb3VibGVcbiAgIHF1b3Rlcywgd2hpY2ggYXJlIGltbWVkaWF0ZWx5IHN0cmlwcGVkIGJ5IGNtZC5leGUuICBPdGhlcndpc2UsXG4gICBzb21lIG9mIHRoZSBkb3VibGUgcXVvdGVzIGZyb20gc3RlcCAyIGFib3ZlIGNhbiBiZSBtaXNwYXJzZWQuXG4gICBTZWUgZS5nLiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL2EvOTk2NTE0MVxuKilcbiAgbGV0IHF1b3RlX2NtZCBzID1cbiAgICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcyArIDIwKSBpblxuICAgIFN0cmluZy5pdGVyXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgbWF0Y2ggYyB3aXRoXG4gICAgICAgIHwgJygnIHwgJyknIHwgJyEnIHwgJ14nIHwgJyUnIHwgJ1xcXCInIHwgJzwnIHwgJz4nIHwgJyYnIHwgJ3wnIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiAnXic7IEJ1ZmZlci5hZGRfY2hhciBiIGNcbiAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjKVxuICAgICAgcztcbiAgICBCdWZmZXIuY29udGVudHMgYlxuICBsZXQgcXVvdGVfY21kX2ZpbGVuYW1lIGYgPVxuICAgIGlmIFN0cmluZy5jb250YWlucyBmICdcXFwiJyB8fCBTdHJpbmcuY29udGFpbnMgZiAnJScgdGhlblxuICAgICAgZmFpbHdpdGggKFwiRmlsZW5hbWUucXVvdGVfY29tbWFuZDogYmFkIGZpbGUgbmFtZSBcIiBeIGYpXG4gICAgZWxzZSBpZiBTdHJpbmcuY29udGFpbnMgZiAnICcgdGhlblxuICAgICAgXCJcXFwiXCIgXiBmIF4gXCJcXFwiXCJcbiAgICBlbHNlXG4gICAgICBmXG4gICgqIFJlZGlyZWN0aW9ucyBpbiBjbWQuZXhlOiBzZWUgaHR0cHM6Ly9zczY0LmNvbS9udC9zeW50YXgtcmVkaXJlY3Rpb24uaHRtbFxuICAgICBhbmQgaHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvcHJldmlvdXMtdmVyc2lvbnMvd2luZG93cy9pdC1wcm8vd2luZG93cy14cC9iYjQ5MDk4Mih2PXRlY2huZXQuMTApXG4gICopXG4gIGxldCBxdW90ZV9jb21tYW5kIGNtZCA/c3RkaW4gP3N0ZG91dCA/c3RkZXJyIGFyZ3MgPVxuICAgIFN0cmluZy5jb25jYXQgXCJcIiBbXG4gICAgICBcIlxcXCJcIjtcbiAgICAgIHF1b3RlX2NtZF9maWxlbmFtZSBjbWQ7XG4gICAgICBcIiBcIjtcbiAgICAgIHF1b3RlX2NtZCAoU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgcXVvdGUgYXJncykpO1xuICAgICAgKG1hdGNoIHN0ZGluICB3aXRoIE5vbmUgLT4gXCJcIiB8IFNvbWUgZiAtPiBcIiA8XCIgXiBxdW90ZV9jbWRfZmlsZW5hbWUgZik7XG4gICAgICAobWF0Y2ggc3Rkb3V0IHdpdGggTm9uZSAtPiBcIlwiIHwgU29tZSBmIC0+IFwiID5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIChtYXRjaCBzdGRlcnIgd2l0aCBOb25lIC0+IFwiXCIgfCBTb21lIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBzdGRlcnIgPSBzdGRvdXRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIFwiIDI+JjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgXCIgMj5cIiBeIHF1b3RlX2NtZF9maWxlbmFtZSBmKTtcbiAgICAgIFwiXFxcIlwiXG4gICAgXVxuICBsZXQgaGFzX2RyaXZlIHMgPVxuICAgIGxldCBpc19sZXR0ZXIgPSBmdW5jdGlvblxuICAgICAgfCAnQScgLi4gJ1onIHwgJ2EnIC4uICd6JyAtPiB0cnVlXG4gICAgICB8IF8gLT4gZmFsc2VcbiAgICBpblxuICAgIFN0cmluZy5sZW5ndGggcyA+PSAyICYmIGlzX2xldHRlciBzLlswXSAmJiBzLlsxXSA9ICc6J1xuICBsZXQgZHJpdmVfYW5kX3BhdGggcyA9XG4gICAgaWYgaGFzX2RyaXZlIHNcbiAgICB0aGVuIChTdHJpbmcuc3ViIHMgMCAyLCBTdHJpbmcuc3ViIHMgMiAoU3RyaW5nLmxlbmd0aCBzIC0gMikpXG4gICAgZWxzZSAoXCJcIiwgcylcbiAgbGV0IGRpcm5hbWUgcyA9XG4gICAgbGV0IChkcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgbGV0IGRpciA9IGdlbmVyaWNfZGlybmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aCBpblxuICAgIGRyaXZlIF4gZGlyXG4gIGxldCBiYXNlbmFtZSBzID1cbiAgICBsZXQgKF9kcml2ZSwgcGF0aCkgPSBkcml2ZV9hbmRfcGF0aCBzIGluXG4gICAgZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWUgcGF0aFxuZW5kXG5cbm1vZHVsZSBDeWd3aW4gOiBTWVNERVBTID0gc3RydWN0XG4gIGxldCBudWxsID0gXCIvZGV2L251bGxcIlxuICBsZXQgY3VycmVudF9kaXJfbmFtZSA9IFwiLlwiXG4gIGxldCBwYXJlbnRfZGlyX25hbWUgPSBcIi4uXCJcbiAgbGV0IGRpcl9zZXAgPSBcIi9cIlxuICBsZXQgaXNfZGlyX3NlcCA9IFdpbjMyLmlzX2Rpcl9zZXBcbiAgbGV0IGlzX3JlbGF0aXZlID0gV2luMzIuaXNfcmVsYXRpdmVcbiAgbGV0IGlzX2ltcGxpY2l0ID0gV2luMzIuaXNfaW1wbGljaXRcbiAgbGV0IGNoZWNrX3N1ZmZpeCA9IFdpbjMyLmNoZWNrX3N1ZmZpeFxuICBsZXQgY2hvcF9zdWZmaXhfb3B0ID0gV2luMzIuY2hvcF9zdWZmaXhfb3B0XG4gIGxldCB0ZW1wX2Rpcl9uYW1lID0gVW5peC50ZW1wX2Rpcl9uYW1lXG4gIGxldCBxdW90ZSA9IFVuaXgucXVvdGVcbiAgbGV0IHF1b3RlX2NvbW1hbmQgPSBVbml4LnF1b3RlX2NvbW1hbmRcbiAgbGV0IGJhc2VuYW1lID0gZ2VuZXJpY19iYXNlbmFtZSBpc19kaXJfc2VwIGN1cnJlbnRfZGlyX25hbWVcbiAgbGV0IGRpcm5hbWUgPSBnZW5lcmljX2Rpcm5hbWUgaXNfZGlyX3NlcCBjdXJyZW50X2Rpcl9uYW1lXG5lbmRcblxubW9kdWxlIFN5c2RlcHMgPVxuICAodmFsIChtYXRjaCBTeXMub3NfdHlwZSB3aXRoXG4gICAgICAgfCBcIldpbjMyXCIgLT4gKG1vZHVsZSBXaW4zMjogU1lTREVQUylcbiAgICAgICB8IFwiQ3lnd2luXCIgLT4gKG1vZHVsZSBDeWd3aW46IFNZU0RFUFMpXG4gICAgICAgfCBfIC0+IChtb2R1bGUgVW5peDogU1lTREVQUykpKVxuXG5pbmNsdWRlIFN5c2RlcHNcblxubGV0IGNvbmNhdCBkaXJuYW1lIGZpbGVuYW1lID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIGRpcm5hbWUgaW5cbiAgaWYgbCA9IDAgfHwgaXNfZGlyX3NlcCBkaXJuYW1lIChsLTEpXG4gIHRoZW4gZGlybmFtZSBeIGZpbGVuYW1lXG4gIGVsc2UgZGlybmFtZSBeIGRpcl9zZXAgXiBmaWxlbmFtZVxuXG5sZXQgY2hvcF9zdWZmaXggbmFtZSBzdWZmID1cbiAgbGV0IG4gPSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBTdHJpbmcubGVuZ3RoIHN1ZmYgaW5cbiAgaWYgbiA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkZpbGVuYW1lLmNob3Bfc3VmZml4XCIgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCBuXG5cbmxldCBleHRlbnNpb25fbGVuIG5hbWUgPVxuICBsZXQgcmVjIGNoZWNrIGkwIGkgPVxuICAgIGlmIGkgPCAwIHx8IGlzX2Rpcl9zZXAgbmFtZSBpIHRoZW4gMFxuICAgIGVsc2UgaWYgbmFtZS5baV0gPSAnLicgdGhlbiBjaGVjayBpMCAoaSAtIDEpXG4gICAgZWxzZSBTdHJpbmcubGVuZ3RoIG5hbWUgLSBpMFxuICBpblxuICBsZXQgcmVjIHNlYXJjaF9kb3QgaSA9XG4gICAgaWYgaSA8IDAgfHwgaXNfZGlyX3NlcCBuYW1lIGkgdGhlbiAwXG4gICAgZWxzZSBpZiBuYW1lLltpXSA9ICcuJyB0aGVuIGNoZWNrIGkgKGkgLSAxKVxuICAgIGVsc2Ugc2VhcmNoX2RvdCAoaSAtIDEpXG4gIGluXG4gIHNlYXJjaF9kb3QgKFN0cmluZy5sZW5ndGggbmFtZSAtIDEpXG5cbmxldCBleHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gXCJcIiBlbHNlIFN0cmluZy5zdWIgbmFtZSAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbCkgbFxuXG5sZXQgY2hvcF9leHRlbnNpb24gbmFtZSA9XG4gIGxldCBsID0gZXh0ZW5zaW9uX2xlbiBuYW1lIGluXG4gIGlmIGwgPSAwIHRoZW4gaW52YWxpZF9hcmcgXCJGaWxlbmFtZS5jaG9wX2V4dGVuc2lvblwiXG4gIGVsc2UgU3RyaW5nLnN1YiBuYW1lIDAgKFN0cmluZy5sZW5ndGggbmFtZSAtIGwpXG5cbmxldCByZW1vdmVfZXh0ZW5zaW9uIG5hbWUgPVxuICBsZXQgbCA9IGV4dGVuc2lvbl9sZW4gbmFtZSBpblxuICBpZiBsID0gMCB0aGVuIG5hbWUgZWxzZSBTdHJpbmcuc3ViIG5hbWUgMCAoU3RyaW5nLmxlbmd0aCBuYW1lIC0gbClcblxuZXh0ZXJuYWwgb3Blbl9kZXNjOiBzdHJpbmcgLT4gb3Blbl9mbGFnIGxpc3QgLT4gaW50IC0+IGludCA9IFwiY2FtbF9zeXNfb3BlblwiXG5leHRlcm5hbCBjbG9zZV9kZXNjOiBpbnQgLT4gdW5pdCA9IFwiY2FtbF9zeXNfY2xvc2VcIlxuXG5sZXQgcHJuZyA9IGxhenkoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgdGVtcF9maWxlX25hbWUgdGVtcF9kaXIgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCBybmQgPSAoUmFuZG9tLlN0YXRlLmJpdHMgKExhenkuZm9yY2UgcHJuZykpIGxhbmQgMHhGRkZGRkYgaW5cbiAgY29uY2F0IHRlbXBfZGlyIChQcmludGYuc3ByaW50ZiBcIiVzJTA2eCVzXCIgcHJlZml4IHJuZCBzdWZmaXgpXG5cblxubGV0IGN1cnJlbnRfdGVtcF9kaXJfbmFtZSA9IHJlZiB0ZW1wX2Rpcl9uYW1lXG5cbmxldCBzZXRfdGVtcF9kaXJfbmFtZSBzID0gY3VycmVudF90ZW1wX2Rpcl9uYW1lIDo9IHNcbmxldCBnZXRfdGVtcF9kaXJfbmFtZSAoKSA9ICFjdXJyZW50X3RlbXBfZGlyX25hbWVcblxubGV0IHRlbXBfZmlsZSA/KHRlbXBfZGlyID0gIWN1cnJlbnRfdGVtcF9kaXJfbmFtZSkgcHJlZml4IHN1ZmZpeCA9XG4gIGxldCByZWMgdHJ5X25hbWUgY291bnRlciA9XG4gICAgbGV0IG5hbWUgPSB0ZW1wX2ZpbGVfbmFtZSB0ZW1wX2RpciBwcmVmaXggc3VmZml4IGluXG4gICAgdHJ5XG4gICAgICBjbG9zZV9kZXNjKG9wZW5fZGVzYyBuYW1lIFtPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgT3Blbl9leGNsXSAwbzYwMCk7XG4gICAgICBuYW1lXG4gICAgd2l0aCBTeXNfZXJyb3IgXyBhcyBlIC0+XG4gICAgICBpZiBjb3VudGVyID49IDEwMDAgdGhlbiByYWlzZSBlIGVsc2UgdHJ5X25hbWUgKGNvdW50ZXIgKyAxKVxuICBpbiB0cnlfbmFtZSAwXG5cbmxldCBvcGVuX3RlbXBfZmlsZSA/KG1vZGUgPSBbT3Blbl90ZXh0XSkgPyhwZXJtcyA9IDBvNjAwKVxuICAgICAgICAgICAgICAgICAgID8odGVtcF9kaXIgPSAhY3VycmVudF90ZW1wX2Rpcl9uYW1lKSBwcmVmaXggc3VmZml4ID1cbiAgbGV0IHJlYyB0cnlfbmFtZSBjb3VudGVyID1cbiAgICBsZXQgbmFtZSA9IHRlbXBfZmlsZV9uYW1lIHRlbXBfZGlyIHByZWZpeCBzdWZmaXggaW5cbiAgICB0cnlcbiAgICAgIChuYW1lLFxuICAgICAgIG9wZW5fb3V0X2dlbiAoT3Blbl93cm9ubHk6Ok9wZW5fY3JlYXQ6Ok9wZW5fZXhjbDo6bW9kZSkgcGVybXMgbmFtZSlcbiAgICB3aXRoIFN5c19lcnJvciBfIGFzIGUgLT5cbiAgICAgIGlmIGNvdW50ZXIgPj0gMTAwMCB0aGVuIHJhaXNlIGUgZWxzZSB0cnlfbmFtZSAoY291bnRlciArIDEpXG4gIGluIHRyeV9uYW1lIDBcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogQ29tcGxleCBudW1iZXJzICopXG5cbnR5cGUgdCA9IHsgcmU6IGZsb2F0OyBpbTogZmxvYXQgfVxuXG5sZXQgemVybyA9IHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbmxldCBvbmUgPSB7IHJlID0gMS4wOyBpbSA9IDAuMCB9XG5sZXQgaSA9IHsgcmUgPSAwLjA7IGltID0gMS4wIH1cblxubGV0IGFkZCB4IHkgPSB7IHJlID0geC5yZSArLiB5LnJlOyBpbSA9IHguaW0gKy4geS5pbSB9XG5cbmxldCBzdWIgeCB5ID0geyByZSA9IHgucmUgLS4geS5yZTsgaW0gPSB4LmltIC0uIHkuaW0gfVxuXG5sZXQgbmVnIHggPSB7IHJlID0gLS4geC5yZTsgaW0gPSAtLiB4LmltIH1cblxubGV0IGNvbmogeCA9IHsgcmUgPSB4LnJlOyBpbSA9IC0uIHguaW0gfVxuXG5sZXQgbXVsIHggeSA9IHsgcmUgPSB4LnJlICouIHkucmUgLS4geC5pbSAqLiB5LmltO1xuICAgICAgICAgICAgICAgIGltID0geC5yZSAqLiB5LmltICsuIHguaW0gKi4geS5yZSB9XG5cbmxldCBkaXYgeCB5ID1cbiAgaWYgYWJzX2Zsb2F0IHkucmUgPj0gYWJzX2Zsb2F0IHkuaW0gdGhlblxuICAgIGxldCByID0geS5pbSAvLiB5LnJlIGluXG4gICAgbGV0IGQgPSB5LnJlICsuIHIgKi4geS5pbSBpblxuICAgIHsgcmUgPSAoeC5yZSArLiByICouIHguaW0pIC8uIGQ7XG4gICAgICBpbSA9ICh4LmltIC0uIHIgKi4geC5yZSkgLy4gZCB9XG4gIGVsc2VcbiAgICBsZXQgciA9IHkucmUgLy4geS5pbSBpblxuICAgIGxldCBkID0geS5pbSArLiByICouIHkucmUgaW5cbiAgICB7IHJlID0gKHIgKi4geC5yZSArLiB4LmltKSAvLiBkO1xuICAgICAgaW0gPSAociAqLiB4LmltIC0uIHgucmUpIC8uIGQgfVxuXG5sZXQgaW52IHggPSBkaXYgb25lIHhcblxubGV0IG5vcm0yIHggPSB4LnJlICouIHgucmUgKy4geC5pbSAqLiB4LmltXG5cbmxldCBub3JtIHggPVxuICAoKiBXYXRjaCBvdXQgZm9yIG92ZXJmbG93IGluIGNvbXB1dGluZyByZV4yICsgaW1eMiAqKVxuICBsZXQgciA9IGFic19mbG9hdCB4LnJlIGFuZCBpID0gYWJzX2Zsb2F0IHguaW0gaW5cbiAgaWYgciA9IDAuMCB0aGVuIGlcbiAgZWxzZSBpZiBpID0gMC4wIHRoZW4gclxuICBlbHNlIGlmIHIgPj0gaSB0aGVuXG4gICAgbGV0IHEgPSBpIC8uIHIgaW4gciAqLiBzcXJ0KDEuMCArLiBxICouIHEpXG4gIGVsc2VcbiAgICBsZXQgcSA9IHIgLy4gaSBpbiBpICouIHNxcnQoMS4wICsuIHEgKi4gcSlcblxubGV0IGFyZyB4ID0gYXRhbjIgeC5pbSB4LnJlXG5cbmxldCBwb2xhciBuIGEgPSB7IHJlID0gY29zIGEgKi4gbjsgaW0gPSBzaW4gYSAqLiBuIH1cblxubGV0IHNxcnQgeCA9XG4gIGlmIHgucmUgPSAwLjAgJiYgeC5pbSA9IDAuMCB0aGVuIHsgcmUgPSAwLjA7IGltID0gMC4wIH1cbiAgZWxzZSBiZWdpblxuICAgIGxldCByID0gYWJzX2Zsb2F0IHgucmUgYW5kIGkgPSBhYnNfZmxvYXQgeC5pbSBpblxuICAgIGxldCB3ID1cbiAgICAgIGlmIHIgPj0gaSB0aGVuIGJlZ2luXG4gICAgICAgIGxldCBxID0gaSAvLiByIGluXG4gICAgICAgIHNxcnQocikgKi4gc3FydCgwLjUgKi4gKDEuMCArLiBzcXJ0KDEuMCArLiBxICouIHEpKSlcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCBxID0gciAvLiBpIGluXG4gICAgICAgIHNxcnQoaSkgKi4gc3FydCgwLjUgKi4gKHEgKy4gc3FydCgxLjAgKy4gcSAqLiBxKSkpXG4gICAgICBlbmQgaW5cbiAgICBpZiB4LnJlID49IDAuMFxuICAgIHRoZW4geyByZSA9IHc7ICBpbSA9IDAuNSAqLiB4LmltIC8uIHcgfVxuICAgIGVsc2UgeyByZSA9IDAuNSAqLiBpIC8uIHc7ICBpbSA9IGlmIHguaW0gPj0gMC4wIHRoZW4gdyBlbHNlIC0uIHcgfVxuICBlbmRcblxubGV0IGV4cCB4ID1cbiAgbGV0IGUgPSBleHAgeC5yZSBpbiB7IHJlID0gZSAqLiBjb3MgeC5pbTsgaW0gPSBlICouIHNpbiB4LmltIH1cblxubGV0IGxvZyB4ID0geyByZSA9IGxvZyAobm9ybSB4KTsgaW0gPSBhdGFuMiB4LmltIHgucmUgfVxuXG5sZXQgcG93IHggeSA9IGV4cCAobXVsIHkgKGxvZyB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICBNYW51ZWwgU2VycmFubyBldCBYYXZpZXIgTGVyb3ksIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDIwMDAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kdWxlIFtCaWdhcnJheV06IGxhcmdlLCBtdWx0aS1kaW1lbnNpb25hbCwgbnVtZXJpY2FsIGFycmF5cyAqKVxuXG4oKiBUaGVzZSB0eXBlcyBpbiBtdXN0IGJlIGtlcHQgaW4gc3luYyB3aXRoIHRoZSB0YWJsZXMgaW5cbiAgIC4uL3R5cGluZy90eXBlb3B0Lm1sICopXG5cbnR5cGUgZmxvYXQzMl9lbHQgPSBGbG9hdDMyX2VsdFxudHlwZSBmbG9hdDY0X2VsdCA9IEZsb2F0NjRfZWx0XG50eXBlIGludDhfc2lnbmVkX2VsdCA9IEludDhfc2lnbmVkX2VsdFxudHlwZSBpbnQ4X3Vuc2lnbmVkX2VsdCA9IEludDhfdW5zaWduZWRfZWx0XG50eXBlIGludDE2X3NpZ25lZF9lbHQgPSBJbnQxNl9zaWduZWRfZWx0XG50eXBlIGludDE2X3Vuc2lnbmVkX2VsdCA9IEludDE2X3Vuc2lnbmVkX2VsdFxudHlwZSBpbnQzMl9lbHQgPSBJbnQzMl9lbHRcbnR5cGUgaW50NjRfZWx0ID0gSW50NjRfZWx0XG50eXBlIGludF9lbHQgPSBJbnRfZWx0XG50eXBlIG5hdGl2ZWludF9lbHQgPSBOYXRpdmVpbnRfZWx0XG50eXBlIGNvbXBsZXgzMl9lbHQgPSBDb21wbGV4MzJfZWx0XG50eXBlIGNvbXBsZXg2NF9lbHQgPSBDb21wbGV4NjRfZWx0XG5cbnR5cGUgKCdhLCAnYikga2luZCA9XG4gICAgRmxvYXQzMiA6IChmbG9hdCwgZmxvYXQzMl9lbHQpIGtpbmRcbiAgfCBGbG9hdDY0IDogKGZsb2F0LCBmbG9hdDY0X2VsdCkga2luZFxuICB8IEludDhfc2lnbmVkIDogKGludCwgaW50OF9zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50OF91bnNpZ25lZCA6IChpbnQsIGludDhfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MTZfc2lnbmVkIDogKGludCwgaW50MTZfc2lnbmVkX2VsdCkga2luZFxuICB8IEludDE2X3Vuc2lnbmVkIDogKGludCwgaW50MTZfdW5zaWduZWRfZWx0KSBraW5kXG4gIHwgSW50MzIgOiAoaW50MzIsIGludDMyX2VsdCkga2luZFxuICB8IEludDY0IDogKGludDY0LCBpbnQ2NF9lbHQpIGtpbmRcbiAgfCBJbnQgOiAoaW50LCBpbnRfZWx0KSBraW5kXG4gIHwgTmF0aXZlaW50IDogKG5hdGl2ZWludCwgbmF0aXZlaW50X2VsdCkga2luZFxuICB8IENvbXBsZXgzMiA6IChDb21wbGV4LnQsIGNvbXBsZXgzMl9lbHQpIGtpbmRcbiAgfCBDb21wbGV4NjQgOiAoQ29tcGxleC50LCBjb21wbGV4NjRfZWx0KSBraW5kXG4gIHwgQ2hhciA6IChjaGFyLCBpbnQ4X3Vuc2lnbmVkX2VsdCkga2luZFxuXG50eXBlIGNfbGF5b3V0ID0gQ19sYXlvdXRfdHlwXG50eXBlIGZvcnRyYW5fbGF5b3V0ID0gRm9ydHJhbl9sYXlvdXRfdHlwICgqKilcblxudHlwZSAnYSBsYXlvdXQgPVxuICAgIENfbGF5b3V0OiBjX2xheW91dCBsYXlvdXRcbiAgfCBGb3J0cmFuX2xheW91dDogZm9ydHJhbl9sYXlvdXQgbGF5b3V0XG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9raW5kIGVudW1lcmF0aW9uXG4gICBpbiBiaWdhcnJheS5oICopXG5cbmxldCBmbG9hdDMyID0gRmxvYXQzMlxubGV0IGZsb2F0NjQgPSBGbG9hdDY0XG5sZXQgaW50OF9zaWduZWQgPSBJbnQ4X3NpZ25lZFxubGV0IGludDhfdW5zaWduZWQgPSBJbnQ4X3Vuc2lnbmVkXG5sZXQgaW50MTZfc2lnbmVkID0gSW50MTZfc2lnbmVkXG5sZXQgaW50MTZfdW5zaWduZWQgPSBJbnQxNl91bnNpZ25lZFxubGV0IGludDMyID0gSW50MzJcbmxldCBpbnQ2NCA9IEludDY0XG5sZXQgaW50ID0gSW50XG5sZXQgbmF0aXZlaW50ID0gTmF0aXZlaW50XG5sZXQgY29tcGxleDMyID0gQ29tcGxleDMyXG5sZXQgY29tcGxleDY0ID0gQ29tcGxleDY0XG5sZXQgY2hhciA9IENoYXJcblxubGV0IGtpbmRfc2l6ZV9pbl9ieXRlcyA6IHR5cGUgYSBiLiAoYSwgYikga2luZCAtPiBpbnQgPSBmdW5jdGlvblxuICB8IEZsb2F0MzIgLT4gNFxuICB8IEZsb2F0NjQgLT4gOFxuICB8IEludDhfc2lnbmVkIC0+IDFcbiAgfCBJbnQ4X3Vuc2lnbmVkIC0+IDFcbiAgfCBJbnQxNl9zaWduZWQgLT4gMlxuICB8IEludDE2X3Vuc2lnbmVkIC0+IDJcbiAgfCBJbnQzMiAtPiA0XG4gIHwgSW50NjQgLT4gOFxuICB8IEludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IE5hdGl2ZWludCAtPiBTeXMud29yZF9zaXplIC8gOFxuICB8IENvbXBsZXgzMiAtPiA4XG4gIHwgQ29tcGxleDY0IC0+IDE2XG4gIHwgQ2hhciAtPiAxXG5cbigqIEtlZXAgdGhvc2UgY29uc3RhbnRzIGluIHN5bmMgd2l0aCB0aGUgY2FtbF9iYV9sYXlvdXQgZW51bWVyYXRpb25cbiAgIGluIGJpZ2FycmF5LmggKilcblxubGV0IGNfbGF5b3V0ID0gQ19sYXlvdXRcbmxldCBmb3J0cmFuX2xheW91dCA9IEZvcnRyYW5fbGF5b3V0XG5cbm1vZHVsZSBHZW5hcnJheSA9IHN0cnVjdFxuICB0eXBlICghJ2EsICEnYiwgISdjKSB0XG4gIGV4dGVybmFsIGNyZWF0ZTogKCdhLCAnYikga2luZCAtPiAnYyBsYXlvdXQgLT4gaW50IGFycmF5IC0+ICgnYSwgJ2IsICdjKSB0XG4gICAgID0gXCJjYW1sX2JhX2NyZWF0ZVwiXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IGFycmF5IC0+ICdhXG4gICAgID0gXCJjYW1sX2JhX2dldF9nZW5lcmljXCJcbiAgZXh0ZXJuYWwgc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgYXJyYXkgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9zZXRfZ2VuZXJpY1wiXG5cbiAgbGV0IHJlYyBjbG9vcCBhcnIgaWR4IGYgY29sIG1heCA9XG4gICAgaWYgY29sID0gQXJyYXkubGVuZ3RoIGlkeCB0aGVuIHNldCBhcnIgaWR4IChmIGlkeClcbiAgICBlbHNlIGZvciBqID0gMCB0byBwcmVkIG1heC4oY29sKSBkb1xuICAgICAgICAgICBpZHguKGNvbCkgPC0gajtcbiAgICAgICAgICAgY2xvb3AgYXJyIGlkeCBmIChzdWNjIGNvbCkgbWF4XG4gICAgICAgICBkb25lXG4gIGxldCByZWMgZmxvb3AgYXJyIGlkeCBmIGNvbCBtYXggPVxuICAgIGlmIGNvbCA8IDAgdGhlbiBzZXQgYXJyIGlkeCAoZiBpZHgpXG4gICAgZWxzZSBmb3IgaiA9IDEgdG8gbWF4Lihjb2wpIGRvXG4gICAgICAgICAgIGlkeC4oY29sKSA8LSBqO1xuICAgICAgICAgICBmbG9vcCBhcnIgaWR4IGYgKHByZWQgY29sKSBtYXhcbiAgICAgICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbXMgZiA9XG4gICAgbGV0IGFyciA9IGNyZWF0ZSBraW5kIGxheW91dCBkaW1zIGluXG4gICAgbWF0Y2ggQXJyYXkubGVuZ3RoIGRpbXMsIGxheW91dCB3aXRoXG4gICAgfCAwLCBfIC0+IGFyclxuICAgIHwgZGxlbiwgQ19sYXlvdXQgLT4gY2xvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMCkgZiAwIGRpbXM7IGFyclxuICAgIHwgZGxlbiwgRm9ydHJhbl9sYXlvdXQgLT4gZmxvb3AgYXJyIChBcnJheS5tYWtlIGRsZW4gMSkgZiAocHJlZCBkbGVuKSBkaW1zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyXG5cbiAgZXh0ZXJuYWwgbnVtX2RpbXM6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiY2FtbF9iYV9udW1fZGltc1wiXG4gIGV4dGVybmFsIG50aF9kaW06ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgPSBcImNhbWxfYmFfZGltXCJcbiAgbGV0IGRpbXMgYSA9XG4gICAgbGV0IG4gPSBudW1fZGltcyBhIGluXG4gICAgbGV0IGQgPSBBcnJheS5tYWtlIG4gMCBpblxuICAgIGZvciBpID0gMCB0byBuLTEgZG8gZC4oaSkgPC0gbnRoX2RpbSBhIGkgZG9uZTtcbiAgICBkXG5cbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9XG4gICAgKGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpKSAqIChBcnJheS5mb2xkX2xlZnQgKCAqICkgMSAoZGltcyBhcnIpKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzbGljZV9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhLCAnYiwgY19sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc2xpY2VcIlxuICBleHRlcm5hbCBzbGljZV9yaWdodDogKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHQgLT4gaW50IGFycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3NsaWNlXCJcbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdFxuICAgICA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcbmVuZFxuXG5tb2R1bGUgQXJyYXkwID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0ID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3x8XVxuICBsZXQgZ2V0IGFyciA9IEdlbmFycmF5LmdldCBhcnIgW3x8XVxuICBsZXQgc2V0IGFyciA9IEdlbmFycmF5LnNldCBhcnIgW3x8XVxuICBleHRlcm5hbCBraW5kOiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiKSBraW5kID0gXCJjYW1sX2JhX2tpbmRcIlxuICBleHRlcm5hbCBsYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdjIGxheW91dCA9IFwiY2FtbF9iYV9sYXlvdXRcIlxuXG4gIGV4dGVybmFsIGNoYW5nZV9sYXlvdXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICdkIGxheW91dCAtPiAoJ2EsICdiLCAnZCkgdFxuICAgID0gXCJjYW1sX2JhX2NoYW5nZV9sYXlvdXRcIlxuXG4gIGxldCBzaXplX2luX2J5dGVzIGFyciA9IGtpbmRfc2l6ZV9pbl9ieXRlcyAoa2luZCBhcnIpXG5cbiAgZXh0ZXJuYWwgYmxpdDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYiwgJ2MpIHQgLT4gdW5pdCA9IFwiY2FtbF9iYV9ibGl0XCJcbiAgZXh0ZXJuYWwgZmlsbDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2EgLT4gdW5pdCA9IFwiY2FtbF9iYV9maWxsXCJcblxuICBsZXQgb2ZfdmFsdWUga2luZCBsYXlvdXQgdiA9XG4gICAgbGV0IGEgPSBjcmVhdGUga2luZCBsYXlvdXQgaW5cbiAgICBzZXQgYSB2O1xuICAgIGFcbiAgbGV0IGluaXQgPSBvZl92YWx1ZVxuZW5kXG5cbm1vZHVsZSBBcnJheTEgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltID1cbiAgICBHZW5hcnJheS5jcmVhdGUga2luZCBsYXlvdXQgW3xkaW18XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzFcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSAtPiB1bml0ID0gXCIlY2FtbF9iYV9zZXRfMVwiXG4gIGV4dGVybmFsIHVuc2FmZV9nZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8xXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMVwiXG4gIGV4dGVybmFsIGRpbTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGtpbmQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IpIGtpbmQgPSBcImNhbWxfYmFfa2luZFwiXG4gIGV4dGVybmFsIGxheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2MgbGF5b3V0ID0gXCJjYW1sX2JhX2xheW91dFwiXG5cbiAgZXh0ZXJuYWwgY2hhbmdlX2xheW91dDogKCdhLCAnYiwgJ2MpIHQgLT4gJ2QgbGF5b3V0IC0+ICgnYSwgJ2IsICdkKSB0XG4gICAgPSBcImNhbWxfYmFfY2hhbmdlX2xheW91dFwiXG5cbiAgbGV0IHNpemVfaW5fYnl0ZXMgYXJyID1cbiAgICAoa2luZF9zaXplX2luX2J5dGVzIChraW5kIGFycikpICogKGRpbSBhcnIpXG5cbiAgZXh0ZXJuYWwgc3ViOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsICdjKSB0ID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZSAodHlwZSB0KSAoYSA6IChfLCBfLCB0KSBHZW5hcnJheS50KSBuID1cbiAgICBtYXRjaCBsYXlvdXQgYSB3aXRoXG4gICAgfCBDX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfbGVmdCBhIFt8bnxdIDogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiAoR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XTogKF8sIF8sIHQpIEdlbmFycmF5LnQpXG4gIGV4dGVybmFsIGJsaXQ6ICgnYSwgJ2IsICdjKSB0IC0+ICgnYSwgJ2IsICdjKSB0IC0+IHVuaXQgPSBcImNhbWxfYmFfYmxpdFwiXG4gIGV4dGVybmFsIGZpbGw6ICgnYSwgJ2IsICdjKSB0IC0+ICdhIC0+IHVuaXQgPSBcImNhbWxfYmFfZmlsbFwiXG4gIGxldCBjX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0gZG8gdW5zYWZlX3NldCBhcnIgaSAoZiBpKSBkb25lXG4gIGxldCBmb3J0cmFuX2luaXQgYXJyIGRpbSBmID1cbiAgICBmb3IgaSA9IDEgdG8gZGltIGRvIHVuc2FmZV9zZXQgYXJyIGkgKGYgaSkgZG9uZVxuICBsZXQgaW5pdCAodHlwZSB0KSBraW5kIChsYXlvdXQgOiB0IGxheW91dCkgZGltIGYgPVxuICAgIGxldCBhcnIgPSBjcmVhdGUga2luZCBsYXlvdXQgZGltIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltIGY7IGFyclxuICAgIHwgRm9ydHJhbl9sYXlvdXQgLT4gZm9ydHJhbl9pbml0IGFyciBkaW0gZjsgYXJyXG4gIGxldCBvZl9hcnJheSAodHlwZSB0KSBraW5kIChsYXlvdXQ6IHQgbGF5b3V0KSBkYXRhID1cbiAgICBsZXQgYmEgPSBjcmVhdGUga2luZCBsYXlvdXQgKEFycmF5Lmxlbmd0aCBkYXRhKSBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIGRhdGEgLSAxIGRvIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIGRhdGEuKGkpIGRvbmU7XG4gICAgYmFcbmVuZFxuXG5tb2R1bGUgQXJyYXkyID0gc3RydWN0XG4gIHR5cGUgKCEnYSwgISdiLCAhJ2MpIHQgPSAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICBsZXQgY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiA9XG4gICAgR2VuYXJyYXkuY3JlYXRlIGtpbmQgbGF5b3V0IFt8ZGltMTsgZGltMnxdXG4gIGV4dGVybmFsIGdldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiAnYSA9IFwiJWNhbWxfYmFfcmVmXzJcIlxuICBleHRlcm5hbCBzZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFwiJWNhbWxfYmFfc2V0XzJcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhXG4gICAgID0gXCIlY2FtbF9iYV91bnNhZmVfcmVmXzJcIlxuICBleHRlcm5hbCB1bnNhZmVfc2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+ICdhIC0+IHVuaXRcbiAgICAgPSBcIiVjYW1sX2JhX3Vuc2FmZV9zZXRfMlwiXG4gIGV4dGVybmFsIGRpbTE6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzFcIlxuICBleHRlcm5hbCBkaW0yOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8yXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKVxuXG4gIGV4dGVybmFsIHN1Yl9sZWZ0OiAoJ2EsICdiLCBjX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGNfbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGV4dGVybmFsIHN1Yl9yaWdodDpcbiAgICAoJ2EsICdiLCBmb3J0cmFuX2xheW91dCkgdCAtPiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0XG4gICAgID0gXCJjYW1sX2JhX3N1YlwiXG4gIGxldCBzbGljZV9sZWZ0IGEgbiA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG58XVxuICBsZXQgc2xpY2VfcmlnaHQgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZiA9XG4gICAgZm9yIGkgPSAwIHRvIHByZWQgZGltMSBkb1xuICAgICAgZm9yIGogPSAwIHRvIHByZWQgZGltMiBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGYgPVxuICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICBmb3IgaSA9IDEgdG8gZGltMSBkb1xuICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogKGYgaSBqKVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGluaXQgKHR5cGUgdCkga2luZCAobGF5b3V0IDogdCBsYXlvdXQpIGRpbTEgZGltMiBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIG1hdGNoIGxheW91dCB3aXRoXG4gICAgfCBDX2xheW91dCAtPiBjX2luaXQgYXJyIGRpbTEgZGltMiBmOyBhcnJcbiAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBpblxuICAgIGxldCBvZnMgPVxuICAgICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICAgICAgQ19sYXlvdXQgLT4gMFxuICAgICAgfCBGb3J0cmFuX2xheW91dCAtPiAxXG4gICAgaW5cbiAgICBmb3IgaSA9IDAgdG8gZGltMSAtIDEgZG9cbiAgICAgIGxldCByb3cgPSBkYXRhLihpKSBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIHJvdyA8PiBkaW0yIHRoZW5cbiAgICAgICAgaW52YWxpZF9hcmcoXCJCaWdhcnJheS5BcnJheTIub2ZfYXJyYXk6IG5vbi1yZWN0YW5ndWxhciBkYXRhXCIpO1xuICAgICAgZm9yIGogPSAwIHRvIGRpbTIgLSAxIGRvXG4gICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSByb3cuKGopXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbm1vZHVsZSBBcnJheTMgPSBzdHJ1Y3RcbiAgdHlwZSAoISdhLCAhJ2IsICEnYykgdCA9ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gIGxldCBjcmVhdGUga2luZCBsYXlvdXQgZGltMSBkaW0yIGRpbTMgPVxuICAgIEdlbmFycmF5LmNyZWF0ZSBraW5kIGxheW91dCBbfGRpbTE7IGRpbTI7IGRpbTN8XVxuICBleHRlcm5hbCBnZXQ6ICgnYSwgJ2IsICdjKSB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+ICdhID0gXCIlY2FtbF9iYV9yZWZfM1wiXG4gIGV4dGVybmFsIHNldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfc2V0XzNcIlxuICBleHRlcm5hbCB1bnNhZmVfZ2V0OiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiAnYVxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3JlZl8zXCJcbiAgZXh0ZXJuYWwgdW5zYWZlX3NldDogKCdhLCAnYiwgJ2MpIHQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gJ2EgLT4gdW5pdFxuICAgICA9IFwiJWNhbWxfYmFfdW5zYWZlX3NldF8zXCJcbiAgZXh0ZXJuYWwgZGltMTogKCdhLCAnYiwgJ2MpIHQgLT4gaW50ID0gXCIlY2FtbF9iYV9kaW1fMVwiXG4gIGV4dGVybmFsIGRpbTI6ICgnYSwgJ2IsICdjKSB0IC0+IGludCA9IFwiJWNhbWxfYmFfZGltXzJcIlxuICBleHRlcm5hbCBkaW0zOiAoJ2EsICdiLCAnYykgdCAtPiBpbnQgPSBcIiVjYW1sX2JhX2RpbV8zXCJcbiAgZXh0ZXJuYWwga2luZDogKCdhLCAnYiwgJ2MpIHQgLT4gKCdhLCAnYikga2luZCA9IFwiY2FtbF9iYV9raW5kXCJcbiAgZXh0ZXJuYWwgbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnYyBsYXlvdXQgPSBcImNhbWxfYmFfbGF5b3V0XCJcblxuICBleHRlcm5hbCBjaGFuZ2VfbGF5b3V0OiAoJ2EsICdiLCAnYykgdCAtPiAnZCBsYXlvdXQgLT4gKCdhLCAnYiwgJ2QpIHRcbiAgICA9IFwiY2FtbF9iYV9jaGFuZ2VfbGF5b3V0XCJcblxuICBsZXQgc2l6ZV9pbl9ieXRlcyBhcnIgPVxuICAgIChraW5kX3NpemVfaW5fYnl0ZXMgKGtpbmQgYXJyKSkgKiAoZGltMSBhcnIpICogKGRpbTIgYXJyKSAqIChkaW0zIGFycilcblxuICBleHRlcm5hbCBzdWJfbGVmdDogKCdhLCAnYiwgY19sYXlvdXQpIHQgLT4gaW50IC0+IGludCAtPiAoJ2EsICdiLCBjX2xheW91dCkgdFxuICAgICA9IFwiY2FtbF9iYV9zdWJcIlxuICBleHRlcm5hbCBzdWJfcmlnaHQ6XG4gICAgICgnYSwgJ2IsIGZvcnRyYW5fbGF5b3V0KSB0IC0+IGludCAtPiBpbnQgLT4gKCdhLCAnYiwgZm9ydHJhbl9sYXlvdXQpIHRcbiAgICAgPSBcImNhbWxfYmFfc3ViXCJcbiAgbGV0IHNsaWNlX2xlZnRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX2xlZnQgYSBbfG47IG18XVxuICBsZXQgc2xpY2VfcmlnaHRfMSBhIG4gbSA9IEdlbmFycmF5LnNsaWNlX3JpZ2h0IGEgW3xuOyBtfF1cbiAgbGV0IHNsaWNlX2xlZnRfMiBhIG4gPSBHZW5hcnJheS5zbGljZV9sZWZ0IGEgW3xufF1cbiAgbGV0IHNsaWNlX3JpZ2h0XzIgYSBuID0gR2VuYXJyYXkuc2xpY2VfcmlnaHQgYSBbfG58XVxuICBleHRlcm5hbCBibGl0OiAoJ2EsICdiLCAnYykgdCAtPiAoJ2EsICdiLCAnYykgdCAtPiB1bml0ID0gXCJjYW1sX2JhX2JsaXRcIlxuICBleHRlcm5hbCBmaWxsOiAoJ2EsICdiLCAnYykgdCAtPiAnYSAtPiB1bml0ID0gXCJjYW1sX2JhX2ZpbGxcIlxuICBsZXQgY19pbml0IGFyciBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBmb3IgaSA9IDAgdG8gcHJlZCBkaW0xIGRvXG4gICAgICBmb3IgaiA9IDAgdG8gcHJlZCBkaW0yIGRvXG4gICAgICAgIGZvciBrID0gMCB0byBwcmVkIGRpbTMgZG9cbiAgICAgICAgICB1bnNhZmVfc2V0IGFyciBpIGogayAoZiBpIGogaylcbiAgICAgICAgZG9uZVxuICAgICAgZG9uZVxuICAgIGRvbmVcbiAgbGV0IGZvcnRyYW5faW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZiA9XG4gICAgZm9yIGsgPSAxIHRvIGRpbTMgZG9cbiAgICAgIGZvciBqID0gMSB0byBkaW0yIGRvXG4gICAgICAgIGZvciBpID0gMSB0byBkaW0xIGRvXG4gICAgICAgICAgdW5zYWZlX3NldCBhcnIgaSBqIGsgKGYgaSBqIGspXG4gICAgICAgIGRvbmVcbiAgICAgIGRvbmVcbiAgICBkb25lXG4gIGxldCBpbml0ICh0eXBlIHQpIGtpbmQgKGxheW91dCA6IHQgbGF5b3V0KSBkaW0xIGRpbTIgZGltMyBmID1cbiAgICBsZXQgYXJyID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbWF0Y2ggbGF5b3V0IHdpdGhcbiAgICB8IENfbGF5b3V0IC0+IGNfaW5pdCBhcnIgZGltMSBkaW0yIGRpbTMgZjsgYXJyXG4gICAgfCBGb3J0cmFuX2xheW91dCAtPiBmb3J0cmFuX2luaXQgYXJyIGRpbTEgZGltMiBkaW0zIGY7IGFyclxuICBsZXQgb2ZfYXJyYXkgKHR5cGUgdCkga2luZCAobGF5b3V0OiB0IGxheW91dCkgZGF0YSA9XG4gICAgbGV0IGRpbTEgPSBBcnJheS5sZW5ndGggZGF0YSBpblxuICAgIGxldCBkaW0yID0gaWYgZGltMSA9IDAgdGhlbiAwIGVsc2UgQXJyYXkubGVuZ3RoIGRhdGEuKDApIGluXG4gICAgbGV0IGRpbTMgPSBpZiBkaW0yID0gMCB0aGVuIDAgZWxzZSBBcnJheS5sZW5ndGggZGF0YS4oMCkuKDApIGluXG4gICAgbGV0IGJhID0gY3JlYXRlIGtpbmQgbGF5b3V0IGRpbTEgZGltMiBkaW0zIGluXG4gICAgbGV0IG9mcyA9XG4gICAgICBtYXRjaCBsYXlvdXQgd2l0aFxuICAgICAgICBDX2xheW91dCAtPiAwXG4gICAgICB8IEZvcnRyYW5fbGF5b3V0IC0+IDFcbiAgICBpblxuICAgIGZvciBpID0gMCB0byBkaW0xIC0gMSBkb1xuICAgICAgbGV0IHJvdyA9IGRhdGEuKGkpIGluXG4gICAgICBpZiBBcnJheS5sZW5ndGggcm93IDw+IGRpbTIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICBmb3IgaiA9IDAgdG8gZGltMiAtIDEgZG9cbiAgICAgICAgbGV0IGNvbCA9IHJvdy4oaikgaW5cbiAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGNvbCA8PiBkaW0zIHRoZW5cbiAgICAgICAgICBpbnZhbGlkX2FyZyhcIkJpZ2FycmF5LkFycmF5My5vZl9hcnJheTogbm9uLWN1YmljIGRhdGFcIik7XG4gICAgICAgIGZvciBrID0gMCB0byBkaW0zIC0gMSBkb1xuICAgICAgICAgIHVuc2FmZV9zZXQgYmEgKGkgKyBvZnMpIChqICsgb2ZzKSAoayArIG9mcykgY29sLihrKVxuICAgICAgICBkb25lXG4gICAgICBkb25lXG4gICAgZG9uZTtcbiAgICBiYVxuZW5kXG5cbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MDogKCdhLCAnYiwgJ2MpIEFycmF5MC50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MTogKCdhLCAnYiwgJ2MpIEFycmF5MS50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MjogKCdhLCAnYiwgJ2MpIEFycmF5Mi50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmV4dGVybmFsIGdlbmFycmF5X29mX2FycmF5MzogKCdhLCAnYiwgJ2MpIEFycmF5My50IC0+ICgnYSwgJ2IsICdjKSBHZW5hcnJheS50XG4gICA9IFwiJWlkZW50aXR5XCJcbmxldCBhcnJheTBfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAwIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkwX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTFfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAxIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkxX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTJfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAyIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkyX29mX2dlbmFycmF5XCJcbmxldCBhcnJheTNfb2ZfZ2VuYXJyYXkgYSA9XG4gIGlmIEdlbmFycmF5Lm51bV9kaW1zIGEgPSAzIHRoZW4gYVxuICBlbHNlIGludmFsaWRfYXJnIFwiQmlnYXJyYXkuYXJyYXkzX29mX2dlbmFycmF5XCJcblxuZXh0ZXJuYWwgcmVzaGFwZTpcbiAgICgnYSwgJ2IsICdjKSBHZW5hcnJheS50IC0+IGludCBhcnJheSAtPiAoJ2EsICdiLCAnYykgR2VuYXJyYXkudFxuICAgPSBcImNhbWxfYmFfcmVzaGFwZVwiXG5sZXQgcmVzaGFwZV8wIGEgPSByZXNoYXBlIGEgW3x8XVxubGV0IHJlc2hhcGVfMSBhIGRpbTEgPSByZXNoYXBlIGEgW3xkaW0xfF1cbmxldCByZXNoYXBlXzIgYSBkaW0xIGRpbTIgPSByZXNoYXBlIGEgW3xkaW0xO2RpbTJ8XVxubGV0IHJlc2hhcGVfMyBhIGRpbTEgZGltMiBkaW0zID0gcmVzaGFwZSBhIFt8ZGltMTtkaW0yO2RpbTN8XVxuXG4oKiBGb3JjZSBjYW1sX2JhX2dldF97MSwyLDMsTn0gdG8gYmUgbGlua2VkIGluLCBzaW5jZSB3ZSBkb24ndCByZWZlclxuICAgdG8gdGhvc2UgcHJpbWl0aXZlcyBkaXJlY3RseSBpbiB0aGlzIGZpbGUgKilcblxubGV0IF8gPVxuICBsZXQgXyA9IEdlbmFycmF5LmdldCBpblxuICBsZXQgXyA9IEFycmF5MS5nZXQgaW5cbiAgbGV0IF8gPSBBcnJheTIuZ2V0IGluXG4gIGxldCBfID0gQXJyYXkzLmdldCBpblxuICAoKVxuXG5bQEBAb2NhbWwud2FybmluZyBcIi0zMlwiXVxuZXh0ZXJuYWwgZ2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX2dldF8xXCJcbmV4dGVybmFsIGdldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9nZXRfMlwiXG5leHRlcm5hbCBnZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfZ2V0XzNcIlxuZXh0ZXJuYWwgc2V0MTogdW5pdCAtPiB1bml0ID0gXCJjYW1sX2JhX3NldF8xXCJcbmV4dGVybmFsIHNldDI6IHVuaXQgLT4gdW5pdCA9IFwiY2FtbF9iYV9zZXRfMlwiXG5leHRlcm5hbCBzZXQzOiB1bml0IC0+IHVuaXQgPSBcImNhbWxfYmFfc2V0XzNcIlxuIiwiKCogZ2VuZXJhdGVkIGJ5IGR1bmUgKilcblxuKCoqIEBjYW5vbmljYWwgSnNvb19ydW50aW1lLlJ1bnRpbWVfdmVyc2lvbiAqKVxubW9kdWxlIFJ1bnRpbWVfdmVyc2lvbiA9IEpzb29fcnVudGltZV9fUnVudGltZV92ZXJzaW9uXG5cbm1vZHVsZSBKc29vX3J1bnRpbWVfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwibW9kdWxlIEpzID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIHR5cGUgJ2EganNfYXJyYXkgPSB0XG5cbiAgdHlwZSAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrID0gdFxuXG4gIGV4dGVybmFsIHN0cmluZyA6IHN0cmluZyAtPiB0ID0gXCJjYW1sX2pzc3RyaW5nX29mX3N0cmluZ1wiXG5cbiAgZXh0ZXJuYWwgdG9fc3RyaW5nIDogdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBleHRlcm5hbCBieXRlc3RyaW5nIDogc3RyaW5nIC0+IHQgPSBcImNhbWxfanNieXRlc19vZl9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiB0IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfanNieXRlc1wiXG5cbiAgZXh0ZXJuYWwgYm9vbCA6IGJvb2wgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG4gIGV4dGVybmFsIHRvX2Jvb2wgOiB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbiAgZXh0ZXJuYWwgYXJyYXkgOiAnYSBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Zyb21fYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2FycmF5IDogdCAtPiAnYSBhcnJheSA9IFwiY2FtbF9qc190b19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX2Zsb2F0XCJcblxuICBleHRlcm5hbCBmbG9hdF9vZl9udW1iZXIgOiB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuICBleHRlcm5hbCBudW1iZXJfb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCJjYW1sX2pzX2Zyb21faW50MzJcIlxuXG4gIGV4dGVybmFsIGludDMyX29mX251bWJlciA6IHQgLT4gaW50MzIgPSBcImNhbWxfanNfdG9faW50MzJcIlxuXG4gIGV4dGVybmFsIG51bWJlcl9vZl9uYXRpdmVpbnQgOiBuYXRpdmVpbnQgLT4gdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgbmF0aXZlaW50X29mX251bWJlciA6IHQgLT4gbmF0aXZlaW50ID0gXCJjYW1sX2pzX3RvX25hdGl2ZWludFwiXG5cbiAgZXh0ZXJuYWwgdHlwZW9mIDogdCAtPiB0ID0gXCJjYW1sX2pzX3R5cGVvZlwiXG5cbiAgZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG4gIGV4dGVybmFsIGRlYnVnZ2VyIDogdW5pdCAtPiB1bml0ID0gXCJkZWJ1Z2dlclwiXG5cbiAgZXh0ZXJuYWwgZ2V0IDogdCAtPiB0IC0+IHQgPSBcImNhbWxfanNfZ2V0XCJcblxuICBleHRlcm5hbCBzZXQgOiB0IC0+IHQgLT4gdCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgZXh0ZXJuYWwgZGVsZXRlIDogdCAtPiB0IC0+IHVuaXQgPSBcImNhbWxfanNfZGVsZXRlXCJcblxuICBleHRlcm5hbCBjYWxsIDogdCAtPiB0IC0+IHQgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19jYWxsXCJcblxuICBleHRlcm5hbCBmdW5fY2FsbCA6IHQgLT4gdCBhcnJheSAtPiB0ID0gXCJjYW1sX2pzX2Z1bl9jYWxsXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGwgOiB0IC0+IHN0cmluZyAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbWV0aF9jYWxsXCJcblxuICBleHRlcm5hbCBuZXdfb2JqIDogdCAtPiB0IGFycmF5IC0+IHQgPSBcImNhbWxfanNfbmV3XCJcblxuICBleHRlcm5hbCBuZXdfb2JqX2FyciA6IHQgLT4gdCBqc19hcnJheSAtPiB0ID0gXCJjYW1sX29qc19uZXdfYXJyXCJcblxuICBleHRlcm5hbCBvYmogOiAoc3RyaW5nICogdCkgYXJyYXkgLT4gdCA9IFwiY2FtbF9qc19vYmplY3RcIlxuXG4gIGV4dGVybmFsIGVxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX2VxdWFsc1wiXG5cbiAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IHQgLT4gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gIGV4dGVybmFsIHB1cmVfZXhwciA6ICh1bml0IC0+ICdhKSAtPiAnYSA9IFwiY2FtbF9qc19wdXJlX2V4cHJcIlxuXG4gIGV4dGVybmFsIGV2YWxfc3RyaW5nIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V2YWxfc3RyaW5nXCJcblxuICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIHB1cmVfanNfZXhwciA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9wdXJlX2pzX2V4cHJcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJndW1lbnRzIDpcbiAgICAodCBqc19hcnJheSAtPiAnYikgLT4gKCdjLCB0IGpzX2FycmF5IC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja19zdHJpY3RcIlxuXG4gIGV4dGVybmFsIG1ldGhfY2FsbGJhY2sgOiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgKCdiIC0+IHQganNfYXJyYXkgLT4gJ2EpIC0+ICgnYiwgdCBqc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19hcmd1bWVudHNcIlxuXG4gIGV4dGVybmFsIHdyYXBfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYywgJ2EgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrXCJcblxuICBleHRlcm5hbCB3cmFwX21ldGhfY2FsbGJhY2sgOiAoJ2EgLT4gJ2IpIC0+ICgnYSwgJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tcIlxuZW5kXG5cbm1vZHVsZSBTeXMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSBjYWxsYmFjayA9ICdhXG5cbiAgZXh0ZXJuYWwgY3JlYXRlX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBjb250ZW50OnN0cmluZyAtPiB1bml0ID0gXCJjYW1sX2NyZWF0ZV9maWxlXCJcblxuICBleHRlcm5hbCByZWFkX2ZpbGUgOiBuYW1lOnN0cmluZyAtPiBzdHJpbmcgPSBcImNhbWxfcmVhZF9maWxlX2NvbnRlbnRcIlxuXG4gIGV4dGVybmFsIHNldF9jaGFubmVsX291dHB1dCcgOiBvdXRfY2hhbm5lbCAtPiAoanNfc3RyaW5nOkpzLnQgLT4gdW5pdCkgY2FsbGJhY2sgLT4gdW5pdFxuICAgID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbiAgZXh0ZXJuYWwgc2V0X2NoYW5uZWxfaW5wdXQnIDogaW5fY2hhbm5lbCAtPiAodW5pdCAtPiBzdHJpbmcpIGNhbGxiYWNrIC0+IHVuaXRcbiAgICA9IFwiY2FtbF9tbF9zZXRfY2hhbm5lbF9yZWZpbGxcIlxuXG4gIGV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuICBleHRlcm5hbCBtb3VudF9hdXRvbG9hZCA6IHN0cmluZyAtPiAoc3RyaW5nIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uKSBjYWxsYmFjayAtPiB1bml0XG4gICAgPSBcImNhbWxfbW91bnRfYXV0b2xvYWRcIlxuXG4gIGV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxuICBtb2R1bGUgQ29uZmlnID0gc3RydWN0XG4gICAgZXh0ZXJuYWwgdXNlX2pzX3N0cmluZyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX3VzZV9qc19zdHJpbmdcIlxuXG4gICAgZXh0ZXJuYWwgZWZmZWN0cyA6IHVuaXQgLT4gYm9vbCA9IFwiY2FtbF9qc29vX2ZsYWdzX2VmZmVjdHNcIlxuICBlbmRcblxuICBsZXQgdmVyc2lvbiA9IFJ1bnRpbWVfdmVyc2lvbi5zXG5cbiAgbGV0IGdpdF92ZXJzaW9uID0gUnVudGltZV92ZXJzaW9uLmdpdF92ZXJzaW9uXG5lbmRcblxubW9kdWxlIEVycm9yIDogc2lnXG4gIHR5cGUgdFxuXG4gIHZhbCByYWlzZV8gOiB0IC0+ICdhXG5cbiAgdmFsIGF0dGFjaF9qc19iYWNrdHJhY2UgOiBleG4gLT4gZm9yY2U6Ym9vbCAtPiBleG5cbiAgKCoqIEF0dGFjaCBhIEphdmFzU2NyaXB0IGVycm9yIHRvIGFuIE9DYW1sIGV4Y2VwdGlvbi4gIGlmIFtmb3JjZSA9IGZhbHNlXSBhbmQgYVxuICAgIEphdmFzU2NyaXB0IGVycm9yIGlzIGFscmVhZHkgYXR0YWNoZWQsIGl0IHdpbGwgZG8gbm90aGluZy4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgdG9cbiAgICBzdG9yZSBhbmQgcmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgSmF2YVNjcmlwdCBzdGFjayB0cmFjZXMuXG5cbiAgICBBdHRhY2hpbmcgSmF2YXNTY3JpcHQgZXJyb3JzIHdpbGwgaGFwcGVuIGF1dG9tYXRpY2FsbHkgd2hlbiBjb21waWxpbmcgd2l0aFxuICAgIFstLWVuYWJsZSB3aXRoLWpzLWVycm9yXS4gKilcblxuICB2YWwgb2ZfZXhuIDogZXhuIC0+IHQgb3B0aW9uXG4gICgqKiBFeHRyYWN0IGEgSmF2YVNjcmlwdCBlcnJvciBhdHRhY2hlZCB0byBhbiBPQ2FtbCBleGNlcHRpb24sIGlmIGFueS4gIFRoaXMgaXMgdXNlZnVsIHRvXG4gICAgICBpbnNwZWN0IGFuIGV2ZW50dWFsIHN0YWNrIHN0cmFjZSwgZXNwZWNpYWxseSB3aGVuIHNvdXJjZW1hcCBpcyBlbmFibGVkLiAqKVxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuICAoKiogVGhlIFtFcnJvcl0gZXhjZXB0aW9uIHdyYXAgamF2YXNjcmlwdCBleGNlcHRpb25zIHdoZW4gY2F1Z2h0IGJ5IE9DYW1sIGNvZGUuXG4gICAgICBJbiBjYXNlIHRoZSBqYXZhc2NyaXB0IGV4Y2VwdGlvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgamF2YXNjcmlwdCBbRXJyb3JdLFxuICAgICAgaXQgd2lsbCBiZSBzZXJpYWxpemVkIGFuZCB3cmFwcGVkIGludG8gYSBbRmFpbHVyZV0gZXhjZXB0aW9uLlxuICAqKVxuZW5kID0gc3RydWN0XG4gIHR5cGUgdFxuXG4gIGV4Y2VwdGlvbiBFeG4gb2YgdFxuXG4gIGxldCBfID0gQ2FsbGJhY2sucmVnaXN0ZXJfZXhjZXB0aW9uIFwianNFcnJvclwiIChFeG4gKE9iai5tYWdpYyBbfHxdKSlcblxuICBsZXQgcmFpc2VfIDogdCAtPiAnYSA9IEpzLmpzX2V4cHIgXCIoZnVuY3Rpb24gKGV4bikgeyB0aHJvdyBleG4gfSlcIlxuXG4gIGV4dGVybmFsIG9mX2V4biA6IGV4biAtPiB0IG9wdGlvbiA9IFwiY2FtbF9qc19lcnJvcl9vcHRpb25fb2ZfZXhjZXB0aW9uXCJcblxuICBleHRlcm5hbCBhdHRhY2hfanNfYmFja3RyYWNlIDogZXhuIC0+IGZvcmNlOmJvb2wgLT4gZXhuID0gXCJjYW1sX2V4bl93aXRoX2pzX2JhY2t0cmFjZVwiXG5lbmRcblxuW0BAQG9jYW1sLndhcm5pbmcgXCItMzItNjBcIl1cblxubW9kdWxlIEZvcl9jb21wYXRpYmlsaXR5X29ubHkgPSBzdHJ1Y3RcbiAgKCogQWRkIHByaW1pdGl2ZXMgZm9yIGNvbXBhdGliaWxpdHkgcmVhc29ucy4gRXhpc3RpbmcgdXNlcnMgbWlnaHRcbiAgICAgZGVwZW5kIG9uIGl0IChlLmcuIGdlbl9qc19hcGkpLCB3ZSBkb250IHdhbnQgdGhlIG9jYW1sIGNvbXBpbGVyXG4gICAgIHRvIGNvbXBsYWluIGFib3V0IHRoZXNlcyBtaXNzaW5nIHByaW1pdGl2ZXMuICopXG5cbiAgZXh0ZXJuYWwgY2FtbF9qc19mcm9tX3N0cmluZyA6IHN0cmluZyAtPiBKcy50ID0gXCJjYW1sX2pzX2Zyb21fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2pzX3RvX2J5dGVfc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fYnl0ZV9zdHJpbmdcIlxuXG4gIGV4dGVybmFsIGNhbWxfanNfdG9fc3RyaW5nIDogSnMudCAtPiBzdHJpbmcgPSBcImNhbWxfanNfdG9fc3RyaW5nXCJcblxuICBleHRlcm5hbCBjYW1sX2xpc3Rfb2ZfanNfYXJyYXkgOiAnYSBKcy5qc19hcnJheSAtPiAnYSBsaXN0ID0gXCJjYW1sX2xpc3Rfb2ZfanNfYXJyYXlcIlxuXG4gIGV4dGVybmFsIGNhbWxfbGlzdF90b19qc19hcnJheSA6ICdhIGxpc3QgLT4gJ2EgSnMuanNfYXJyYXkgPSBcImNhbWxfbGlzdF90b19qc19hcnJheVwiXG5cbiAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbmVuZFxuXG5tb2R1bGUgVHlwZWRfYXJyYXkgPSBzdHJ1Y3RcbiAgdHlwZSAoJ2EsICdiKSB0eXBlZEFycmF5ID0gSnMudFxuXG4gIHR5cGUgYXJyYXlCdWZmZXIgPSBKcy50XG5cbiAgdHlwZSB1aW50OEFycmF5ID0gSnMudFxuXG4gIGV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IpIEJpZ2FycmF5LmtpbmRcbiAgICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuICBleHRlcm5hbCBmcm9tX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiLCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuR2VuYXJyYXkudCAtPiAoJ2EsICdiKSB0eXBlZEFycmF5XG4gICAgPSBcImNhbWxfYmFfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgICAoJ2EsICdiKSB0eXBlZEFycmF5IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gICAgPSBcImNhbWxfYmFfZnJvbV90eXBlZF9hcnJheVwiXG5cbiAgbW9kdWxlIEJpZ3N0cmluZyA9IHN0cnVjdFxuICAgIHR5cGUgdCA9IChjaGFyLCBCaWdhcnJheS5pbnQ4X3Vuc2lnbmVkX2VsdCwgQmlnYXJyYXkuY19sYXlvdXQpIEJpZ2FycmF5LkFycmF5MS50XG5cbiAgICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgPSBcImJpZ3N0cmluZ190b19hcnJheV9idWZmZXJcIlxuXG4gICAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSA9IFwiYmlnc3RyaW5nX3RvX3R5cGVkX2FycmF5XCJcblxuICAgIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgLT4gdCA9IFwiYmlnc3RyaW5nX29mX2FycmF5X2J1ZmZlclwiXG5cbiAgICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfdHlwZWRfYXJyYXlcIlxuICBlbmRcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2FycmF5XCJcbmVuZFxuXG5tb2R1bGUgSW50NjQgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgY3JlYXRlX2ludDY0X2xvX21pX2hpIDogaW50IC0+IGludCAtPiBpbnQgLT4gSW50NjQudFxuICAgID0gXCJjYW1sX2ludDY0X2NyZWF0ZV9sb19taV9oaVwiXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkNTUyAqKVxubW9kdWxlIENTUyA9IEpzX29mX29jYW1sX19DU1NcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tICopXG5tb2R1bGUgRG9tID0gSnNfb2Zfb2NhbWxfX0RvbVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Eb21fZXZlbnRzICopXG5tb2R1bGUgRG9tX2V2ZW50cyA9IEpzX29mX29jYW1sX19Eb21fZXZlbnRzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkRvbV9odG1sICopXG5tb2R1bGUgRG9tX2h0bWwgPSBKc19vZl9vY2FtbF9fRG9tX2h0bWxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRG9tX3N2ZyAqKVxubW9kdWxlIERvbV9zdmcgPSBKc19vZl9vY2FtbF9fRG9tX3N2Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5FdmVudFNvdXJjZSAqKVxubW9kdWxlIEV2ZW50U291cmNlID0gSnNfb2Zfb2NhbWxfX0V2ZW50U291cmNlXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkZpbGUgKilcbm1vZHVsZSBGaWxlID0gSnNfb2Zfb2NhbWxfX0ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuRmlyZWJ1ZyAqKVxubW9kdWxlIEZpcmVidWcgPSBKc19vZl9vY2FtbF9fRmlyZWJ1Z1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Gb3JtICopXG5tb2R1bGUgRm9ybSA9IEpzX29mX29jYW1sX19Gb3JtXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkdlb2xvY2F0aW9uICopXG5tb2R1bGUgR2VvbG9jYXRpb24gPSBKc19vZl9vY2FtbF9fR2VvbG9jYXRpb25cblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSW1wb3J0ICopXG5tb2R1bGUgSW1wb3J0ID0gSnNfb2Zfb2NhbWxfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5JbnRlcnNlY3Rpb25PYnNlcnZlciAqKVxubW9kdWxlIEludGVyc2VjdGlvbk9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX0ludGVyc2VjdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkludGwgKilcbm1vZHVsZSBJbnRsID0gSnNfb2Zfb2NhbWxfX0ludGxcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuSnMgKilcbm1vZHVsZSBKcyA9IEpzX29mX29jYW1sX19Kc1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Kc29uICopXG5tb2R1bGUgSnNvbiA9IEpzX29mX29jYW1sX19Kc29uXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLkpzdGFibGUgKilcbm1vZHVsZSBKc3RhYmxlID0gSnNfb2Zfb2NhbWxfX0pzdGFibGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuTGliX3ZlcnNpb24gKilcbm1vZHVsZSBMaWJfdmVyc2lvbiA9IEpzX29mX29jYW1sX19MaWJfdmVyc2lvblxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5NdXRhdGlvbk9ic2VydmVyICopXG5tb2R1bGUgTXV0YXRpb25PYnNlcnZlciA9IEpzX29mX29jYW1sX19NdXRhdGlvbk9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlBlcmZvcm1hbmNlT2JzZXJ2ZXIgKilcbm1vZHVsZSBQZXJmb3JtYW5jZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1BlcmZvcm1hbmNlT2JzZXJ2ZXJcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuUmVnZXhwICopXG5tb2R1bGUgUmVnZXhwID0gSnNfb2Zfb2NhbWxfX1JlZ2V4cFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5SZXNpemVPYnNlcnZlciAqKVxubW9kdWxlIFJlc2l6ZU9ic2VydmVyID0gSnNfb2Zfb2NhbWxfX1Jlc2l6ZU9ic2VydmVyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlN5c19qcyAqKVxubW9kdWxlIFN5c19qcyA9IEpzX29mX29jYW1sX19TeXNfanNcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuVHlwZWRfYXJyYXkgKilcbm1vZHVsZSBUeXBlZF9hcnJheSA9IEpzX29mX29jYW1sX19UeXBlZF9hcnJheVxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5VcmwgKilcbm1vZHVsZSBVcmwgPSBKc19vZl9vY2FtbF9fVXJsXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLldlYkdMICopXG5tb2R1bGUgV2ViR0wgPSBKc19vZl9vY2FtbF9fV2ViR0xcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWwuV2ViU29ja2V0cyAqKVxubW9kdWxlIFdlYlNvY2tldHMgPSBKc19vZl9vY2FtbF9fV2ViU29ja2V0c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbC5Xb3JrZXIgKilcbm1vZHVsZSBXb3JrZXIgPSBKc19vZl9vY2FtbF9fV29ya2VyXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0ICopXG5tb2R1bGUgWG1sSHR0cFJlcXVlc3QgPSBKc19vZl9vY2FtbF9fWG1sSHR0cFJlcXVlc3RcblxubW9kdWxlIEpzX29mX29jYW1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwgKCA8ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVub3RlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA9ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiBpbnQgLT4gaW50IC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogaW50IC0+IGludCAtPiBib29sID0gXCIlZ3JlYXRlcmVxdWFsXCJcblxuICBleHRlcm5hbCBjb21wYXJlIDogaW50IC0+IGludCAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6IGludCAtPiBpbnQgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuKCogVGhpcyBsb2NhbCBtb2R1bGUgW0pzXSBpcyBuZWVkZWQgc28gdGhhdCB0aGUgcHB4X2pzIGV4dGVuc2lvbiB3b3JrIHdpdGhpbiB0aGF0IGZpbGUuICopXG5tb2R1bGUgSnMgPSBzdHJ1Y3RcbiAgdHlwZSArJ2EgdFxuXG4gIHR5cGUgKC0nYSwgKydiKSBtZXRoX2NhbGxiYWNrXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuICAgIHR5cGUgdG9wXG5cbiAgICB0eXBlIGFueSA9IHRvcCB0XG5cbiAgICB0eXBlIGFueV9qc19hcnJheSA9IGFueVxuXG4gICAgZXh0ZXJuYWwgaW5qZWN0IDogJ2EgLT4gYW55ID0gXCIlaWRlbnRpdHlcIlxuXG4gICAgZXh0ZXJuYWwgY29lcmNlIDogXyB0IC0+IF8gdCA9IFwiJWlkZW50aXR5XCJcblxuICAgIGV4dGVybmFsIGdldCA6ICdhIC0+ICdiIC0+ICdjID0gXCJjYW1sX2pzX2dldFwiXG5cbiAgICBleHRlcm5hbCBzZXQgOiAnYSAtPiAnYiAtPiAnYyAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbiAgICBleHRlcm5hbCBkZWxldGUgOiAnYSAtPiAnYiAtPiB1bml0ID0gXCJjYW1sX2pzX2RlbGV0ZVwiXG5cbiAgICBleHRlcm5hbCBjYWxsIDogJ2EgLT4gJ2IgLT4gYW55IGFycmF5IC0+ICdjID0gXCJjYW1sX2pzX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgZnVuX2NhbGwgOiAnYSAtPiBhbnkgYXJyYXkgLT4gJ2IgPSBcImNhbWxfanNfZnVuX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsIDogJ2EgLT4gc3RyaW5nIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19tZXRoX2NhbGxcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29iaiA6ICdhIC0+IGFueSBhcnJheSAtPiAnYiA9IFwiY2FtbF9qc19uZXdcIlxuXG4gICAgZXh0ZXJuYWwgbmV3X29ial9hcnIgOiAnYSAtPiBhbnlfanNfYXJyYXkgLT4gJ2IgPSBcImNhbWxfb2pzX25ld19hcnJcIlxuXG4gICAgZXh0ZXJuYWwgb2JqIDogKHN0cmluZyAqIGFueSkgYXJyYXkgLT4gJ2EgPSBcImNhbWxfanNfb2JqZWN0XCJcblxuICAgIGV4dGVybmFsIGVxdWFscyA6ICdhIC0+ICdiIC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiAnYSAtPiAnYiAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9leHByIDogKHVuaXQgLT4gJ2EpIC0+ICdhID0gXCJjYW1sX2pzX3B1cmVfZXhwclwiXG5cbiAgICBleHRlcm5hbCBldmFsX3N0cmluZyA6IHN0cmluZyAtPiAnYSA9IFwiY2FtbF9qc19ldmFsX3N0cmluZ1wiXG5cbiAgICBleHRlcm5hbCBqc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX2pzX2V4cHJcIlxuXG4gICAgZXh0ZXJuYWwgcHVyZV9qc19leHByIDogc3RyaW5nIC0+ICdhID0gXCJjYW1sX3B1cmVfanNfZXhwclwiXG5cbiAgICBsZXQgZ2xvYmFsID0gcHVyZV9qc19leHByIFwiZ2xvYmFsVGhpc1wiXG5cbiAgICBleHRlcm5hbCBjYWxsYmFjayA6ICgnYSAtPiAnYikgLT4gKCdjLCAnYSAtPiAnYikgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja191bnNhZmVcIlxuXG4gICAgZXh0ZXJuYWwgY2FsbGJhY2tfd2l0aF9hcmd1bWVudHMgOlxuICAgICAgKGFueV9qc19hcnJheSAtPiAnYikgLT4gKCdjLCBhbnlfanNfYXJyYXkgLT4gJ2IpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfY2FsbGJhY2tfYXJndW1lbnRzXCJcblxuICAgIGV4dGVybmFsIGNhbGxiYWNrX3dpdGhfYXJpdHkgOiBpbnQgLT4gKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX2NhbGxiYWNrX3N0cmljdFwiXG5cbiAgICBleHRlcm5hbCBtZXRoX2NhbGxiYWNrIDogKCdiIC0+ICdhKSAtPiAoJ2IsICdhKSBtZXRoX2NhbGxiYWNrXG4gICAgICA9IFwiY2FtbF9qc193cmFwX21ldGhfY2FsbGJhY2tfdW5zYWZlXCJcblxuICAgIGV4dGVybmFsIG1ldGhfY2FsbGJhY2tfd2l0aF9hcml0eSA6IGludCAtPiAoJ2IgLT4gJ2EpIC0+ICgnYiwgJ2EpIG1ldGhfY2FsbGJhY2tcbiAgICAgID0gXCJjYW1sX2pzX3dyYXBfbWV0aF9jYWxsYmFja19zdHJpY3RcIlxuXG4gICAgZXh0ZXJuYWwgbWV0aF9jYWxsYmFja193aXRoX2FyZ3VtZW50cyA6XG4gICAgICAoJ2IgLT4gYW55X2pzX2FycmF5IC0+ICdhKSAtPiAoJ2IsIGFueV9qc19hcnJheSAtPiAnYSkgbWV0aF9jYWxsYmFja1xuICAgICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrX2FyZ3VtZW50c1wiXG5cbiAgICAoKiBERVBSRUNBVEVEICopXG4gICAgZXh0ZXJuYWwgdmFyaWFibGUgOiBzdHJpbmcgLT4gJ2EgPSBcImNhbWxfanNfdmFyXCJcbiAgZW5kXG5cbiAgKCoqKiopXG5cbiAgdHlwZSAnYSBvcHQgPSAnYVxuXG4gIHR5cGUgJ2Egb3B0ZGVmID0gJ2FcblxuICBleHRlcm5hbCBkZWJ1Z2dlciA6IHVuaXQgLT4gdW5pdCA9IFwiZGVidWdnZXJcIlxuXG4gIGxldCBudWxsIDogJ2Egb3B0ID0gVW5zYWZlLnB1cmVfanNfZXhwciBcIm51bGxcIlxuXG4gIGV4dGVybmFsIHNvbWUgOiAnYSAtPiAnYSBvcHQgPSBcIiVpZGVudGl0eVwiXG5cbiAgbGV0IHVuZGVmaW5lZCA6ICdhIG9wdGRlZiA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ1bmRlZmluZWRcIlxuXG4gIGV4dGVybmFsIGRlZiA6ICdhIC0+ICdhIG9wdGRlZiA9IFwiJWlkZW50aXR5XCJcblxuICBtb2R1bGUgdHlwZSBPUFQgPSBzaWdcbiAgICB0eXBlICdhIHRcblxuICAgIHZhbCBlbXB0eSA6ICdhIHRcblxuICAgIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG5cbiAgICB2YWwgbWFwIDogJ2EgdCAtPiAoJ2EgLT4gJ2IpIC0+ICdiIHRcblxuICAgIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuXG4gICAgdmFsIHRlc3QgOiAnYSB0IC0+IGJvb2xcblxuICAgIHZhbCBpdGVyIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuXG4gICAgdmFsIGNhc2UgOiAnYSB0IC0+ICh1bml0IC0+ICdiKSAtPiAoJ2EgLT4gJ2IpIC0+ICdiXG5cbiAgICB2YWwgZ2V0IDogJ2EgdCAtPiAodW5pdCAtPiAnYSkgLT4gJ2FcblxuICAgIHZhbCBvcHRpb24gOiAnYSBvcHRpb24gLT4gJ2EgdFxuXG4gICAgdmFsIHRvX29wdGlvbiA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG4gIGVuZFxuXG4gIG1vZHVsZSBPcHQgOiBPUFQgd2l0aCB0eXBlICdhIHQgPSAnYSBvcHQgPSBzdHJ1Y3RcbiAgICB0eXBlICdhIHQgPSAnYSBvcHRcblxuICAgIGxldCBlbXB0eSA9IG51bGxcblxuICAgIGxldCByZXR1cm4gPSBzb21lXG5cbiAgICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICAgIGV4dGVybmFsIHN0cmljdF9lcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfc3RyaWN0X2VxdWFsc1wiXG5cbiAgICBsZXQgbWFwIHggZiA9IGlmIGVxdWFscyB4IG51bGwgdGhlbiBudWxsIGVsc2UgcmV0dXJuIChmIHgpXG5cbiAgICBsZXQgYmluZCB4IGYgPSBpZiBlcXVhbHMgeCBudWxsIHRoZW4gbnVsbCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoZXF1YWxzIHggbnVsbClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoZXF1YWxzIHggbnVsbCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgZXF1YWxzIHggbnVsbCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICBtb2R1bGUgT3B0ZGVmIDogT1BUIHdpdGggdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmID0gc3RydWN0XG4gICAgdHlwZSAnYSB0ID0gJ2Egb3B0ZGVmXG5cbiAgICBsZXQgZW1wdHkgPSB1bmRlZmluZWRcblxuICAgIGxldCByZXR1cm4gPSBkZWZcblxuICAgIGV4dGVybmFsIGVxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19lcXVhbHNcIlxuXG4gICAgZXh0ZXJuYWwgc3RyaWN0X2VxdWFscyA6IF8gdCAtPiBfIHQgLT4gYm9vbCA9IFwiY2FtbF9qc19zdHJpY3RfZXF1YWxzXCJcblxuICAgIGxldCBtYXAgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIHJldHVybiAoZiB4KVxuXG4gICAgbGV0IGJpbmQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIHVuZGVmaW5lZCBlbHNlIGYgeFxuXG4gICAgbGV0IHRlc3QgeCA9IG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZClcblxuICAgIGxldCBpdGVyIHggZiA9IGlmIG5vdCAoc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCkgdGhlbiBmIHhcblxuICAgIGxldCBjYXNlIHggZiBnID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSBnIHhcblxuICAgIGxldCBnZXQgeCBmID0gaWYgc3RyaWN0X2VxdWFscyB4IHVuZGVmaW5lZCB0aGVuIGYgKCkgZWxzZSB4XG5cbiAgICBsZXQgb3B0aW9uIHggPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZW1wdHlcbiAgICAgIHwgU29tZSB4IC0+IHJldHVybiB4XG5cbiAgICBsZXQgdG9fb3B0aW9uIHggPSBjYXNlIHggKGZ1biAoKSAtPiBOb25lKSAoZnVuIHggLT4gU29tZSB4KVxuICBlbmRcblxuICAoKioqKilcblxuICBsZXQgY29lcmNlIHggZiBnID0gT3B0LmdldCAoZiB4KSAoZnVuICgpIC0+IGcgeClcblxuICBsZXQgY29lcmNlX29wdCB4IGYgZyA9IE9wdC5nZXQgKE9wdC5iaW5kIHggZikgKGZ1biAoKSAtPiBnIHgpXG5cbiAgKCoqKiopXG5cbiAgdHlwZSArJ2EgbWV0aFxuXG4gIHR5cGUgKydhIGdlbl9wcm9wXG5cbiAgdHlwZSAnYSByZWFkb25seV9wcm9wID0gPCBnZXQgOiAnYSA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSB3cml0ZW9ubHlfcHJvcCA9IDwgc2V0IDogJ2EgLT4gdW5pdCA+IGdlbl9wcm9wXG5cbiAgdHlwZSAnYSBwcm9wID0gPCBnZXQgOiAnYSA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgJ2Egb3B0ZGVmX3Byb3AgPSA8IGdldCA6ICdhIG9wdGRlZiA7IHNldCA6ICdhIC0+IHVuaXQgPiBnZW5fcHJvcFxuXG4gIHR5cGUgKydhIGNvbnN0clxuXG4gICgqKioqKVxuXG4gIHR5cGUgJ2EgY2FsbGJhY2sgPSAodW5pdCwgJ2EpIG1ldGhfY2FsbGJhY2tcblxuICBleHRlcm5hbCB3cmFwX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2MsICdhIC0+ICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9jYWxsYmFja1wiXG5cbiAgZXh0ZXJuYWwgd3JhcF9tZXRoX2NhbGxiYWNrIDogKCdhIC0+ICdiKSAtPiAoJ2EsICdiKSBtZXRoX2NhbGxiYWNrXG4gICAgPSBcImNhbWxfanNfd3JhcF9tZXRoX2NhbGxiYWNrXCJcblxuICAoKioqKilcblxuICBleHRlcm5hbCBlcXVhbHMgOiBfIHQgLT4gXyB0IC0+IGJvb2wgPSBcImNhbWxfanNfZXF1YWxzXCJcblxuICBleHRlcm5hbCBzdHJpY3RfZXF1YWxzIDogXyB0IC0+IF8gdCAtPiBib29sID0gXCJjYW1sX2pzX3N0cmljdF9lcXVhbHNcIlxuXG4gICgqKioqKVxuXG4gIGxldCBfdHJ1ZSA9IFVuc2FmZS5wdXJlX2pzX2V4cHIgXCJ0cnVlXCJcblxuICBsZXQgX2ZhbHNlID0gVW5zYWZlLnB1cmVfanNfZXhwciBcImZhbHNlXCJcblxuICB0eXBlIG1hdGNoX3Jlc3VsdF9oYW5kbGVcblxuICB0eXBlIHN0cmluZ19hcnJheVxuXG4gIHR5cGUgbnVtYmVyX3QgPSBmbG9hdFxuXG4gIGNsYXNzIHR5cGUgbnVtYmVyID0gb2JqZWN0XG4gICAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvU3RyaW5nX3JhZGl4IDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0ZpeGVkIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b0V4cG9uZW50aWFsIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHRvRXhwb25lbnRpYWxfZGlnaXRzIDogaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1ByZWNpc2lvbiA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG4gIGVuZFxuXG4gIGFuZCBqc19zdHJpbmcgPSBvYmplY3RcbiAgICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdmFsdWVPZiA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBjaGFyQXQgOiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGNoYXJDb2RlQXQgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gICAgKCogVGhpcyBtYXkgcmV0dXJuIE5hTi4uLiAqKVxuICAgIG1ldGhvZCBjb25jYXQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzIgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgY29uY2F0XzQgOlxuICAgICAganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2YgOiBqc19zdHJpbmcgdCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGluZGV4T2ZfZnJvbSA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBpbnQgbWV0aFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleE9mIDoganNfc3RyaW5nIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBsYXN0SW5kZXhPZl9mcm9tIDoganNfc3RyaW5nIHQgLT4gaW50IC0+IGludCBtZXRoXG5cbiAgICBtZXRob2QgbG9jYWxlQ29tcGFyZSA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IG1ldGhcblxuICAgIG1ldGhvZCBfbWF0Y2ggOiByZWdFeHAgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCBub3JtYWxpemUgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgbm9ybWFsaXplX2Zvcm0gOiBub3JtYWxpemF0aW9uIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHJlcGxhY2UgOiByZWdFeHAgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgcmVwbGFjZV9zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc2VhcmNoIDogcmVnRXhwIHQgLT4gaW50IG1ldGhcblxuICAgIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHNsaWNlX2VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXQgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfbGltaXRlZCA6IGpzX3N0cmluZyB0IC0+IGludCAtPiBzdHJpbmdfYXJyYXkgdCBtZXRoXG5cbiAgICBtZXRob2Qgc3BsaXRfcmVnRXhwIDogcmVnRXhwIHQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHNwbGl0X3JlZ0V4cExpbWl0ZWQgOiByZWdFeHAgdCAtPiBpbnQgLT4gc3RyaW5nX2FycmF5IHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZyA6IGludCAtPiBpbnQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gICAgbWV0aG9kIHN1YnN0cmluZ190b0VuZCA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVMb3dlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9VcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdG9Mb2NhbGVVcHBlckNhc2UgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgICBtZXRob2QgdHJpbSA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBhbmQgcmVnRXhwID0gb2JqZWN0XG4gICAgbWV0aG9kIGV4ZWMgOiBqc19zdHJpbmcgdCAtPiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgb3B0IG1ldGhcblxuICAgIG1ldGhvZCB0ZXN0IDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICAgIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICAgIG1ldGhvZCBzb3VyY2UgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZ2xvYmFsIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBpZ25vcmVDYXNlIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBtdWx0aWxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGxhc3RJbmRleCA6IGludCBwcm9wXG4gIGVuZFxuXG4gIGFuZCBub3JtYWxpemF0aW9uID0ganNfc3RyaW5nXG5cbiAgKCogc3RyaW5nIGlzIHVzZWQgYnkgcHB4X2pzLCBpdCBuZWVkcyB0byBjb21lIGJlZm9yZSBhbnkgdXNlIG9mIHRoZVxuICAgICBuZXcgc3ludGF4IGluIHRoaXMgZmlsZSAqKVxuICBleHRlcm5hbCBzdHJpbmcgOiBzdHJpbmcgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNzdHJpbmdfb2Zfc3RyaW5nXCJcblxuICBleHRlcm5hbCB0b19zdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzc3RyaW5nXCJcblxuICBsZXQgbmZjID0gc3RyaW5nIFwiTkZDXCJcblxuICBsZXQgbmZkID0gc3RyaW5nIFwiTkZEXCJcblxuICBsZXQgbmZrYyA9IHN0cmluZyBcIk5GS0NcIlxuXG4gIGxldCBuZmtkID0gc3RyaW5nIFwiTkZLRFwiXG5lbmRcblxuaW5jbHVkZSBKc1xuXG5jbGFzcyB0eXBlIHN0cmluZ19jb25zdHIgPSBvYmplY3RcbiAgbWV0aG9kIGZyb21DaGFyQ29kZSA6IGludCAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IHN0cmluZ19jb25zdHIgPSBVbnNhZmUuZ2xvYmFsIyMuX1N0cmluZ1xuXG5sZXQgcmVnRXhwID0gVW5zYWZlLmdsb2JhbCMjLl9SZWdFeHBcblxubGV0IHJlZ0V4cF9jb3B5ID0gcmVnRXhwXG5cbmxldCByZWdFeHBfd2l0aEZsYWdzID0gcmVnRXhwXG5cbmNsYXNzIHR5cGUgWydhXSBqc19hcnJheSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvTG9jYWxlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBjb25jYXQgOiAnYSBqc19hcnJheSB0IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBqb2luIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBwb3AgOiAnYSBvcHRkZWYgbWV0aFxuXG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcHVzaF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgcmV2ZXJzZSA6ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzaGlmdCA6ICdhIG9wdGRlZiBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2VfZW5kIDogaW50IC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzb3J0IDogKCdhIC0+ICdhIC0+IG51bWJlcl90KSBjYWxsYmFjayAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc29ydF9hc1N0cmluZ3MgOiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlIDogaW50IC0+IGludCAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzEgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBzcGxpY2VfMiA6IGludCAtPiBpbnQgLT4gJ2EgLT4gJ2EgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNwbGljZV8zIDogaW50IC0+IGludCAtPiAnYSAtPiAnYSAtPiAnYSAtPiAnYSBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3BsaWNlXzQgOiBpbnQgLT4gaW50IC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIC0+ICdhIGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCB1bnNoaWZ0IDogJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8yIDogJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF8zIDogJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2QgdW5zaGlmdF80IDogJ2EgLT4gJ2EgLT4gJ2EgLT4gJ2EgLT4gaW50IG1ldGhcblxuICBtZXRob2Qgc29tZSA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiBib29sIHQpIGNhbGxiYWNrIC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGV2ZXJ5IDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZm9yRWFjaCA6ICgnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiB1bml0KSBjYWxsYmFjayAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbWFwIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiBqc19hcnJheSB0IG1ldGhcblxuICBtZXRob2QgZmlsdGVyIDogKCdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+IGJvb2wgdCkgY2FsbGJhY2sgLT4gJ2EganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZV9pbml0IDogKCdiIC0+ICdhIC0+IGludCAtPiAnYSBqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAtPiAnYiBtZXRoXG5cbiAgbWV0aG9kIHJlZHVjZSA6ICgnYSAtPiAnYSAtPiBpbnQgLT4gJ2EganNfYXJyYXkgdCAtPiAnYSkgY2FsbGJhY2sgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCByZWR1Y2VSaWdodF9pbml0IDpcbiAgICAoJ2IgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2IpIGNhbGxiYWNrIC0+ICdiIC0+ICdiIG1ldGhcblxuICBtZXRob2QgcmVkdWNlUmlnaHQgOiAoJ2EgLT4gJ2EgLT4gaW50IC0+ICdhIGpzX2FycmF5IHQgLT4gJ2EpIGNhbGxiYWNrIC0+ICdhIG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHByb3BcbmVuZFxuXG5sZXQgb2JqZWN0X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IG9iamVjdF9rZXlzIG8gOiBqc19zdHJpbmcgdCBqc19hcnJheSB0ID0gb2JqZWN0X2NvbnN0cnVjdG9yIyNrZXlzIG9cblxubGV0IGFycmF5X2NvbnN0cnVjdG9yID0gVW5zYWZlLmdsb2JhbCMjLl9BcnJheVxuXG5sZXQgYXJyYXlfZW1wdHkgPSBhcnJheV9jb25zdHJ1Y3RvclxuXG5sZXQgYXJyYXlfbGVuZ3RoID0gYXJyYXlfY29uc3RydWN0b3JcblxubGV0IGFycmF5X2dldCA6ICdhICNqc19hcnJheSB0IC0+IGludCAtPiAnYSBvcHRkZWYgPSBVbnNhZmUuZ2V0XG5cbmxldCBhcnJheV9zZXQgOiAnYSAjanNfYXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9IFVuc2FmZS5zZXRcblxubGV0IGFycmF5X21hcF9wb2x5IDpcbiAgICAnYSAjanNfYXJyYXkgdCAtPiAoJ2EgLT4gaW50IC0+ICdhICNqc19hcnJheSB0IC0+ICdiKSBjYWxsYmFjayAtPiAnYiAjanNfYXJyYXkgdCA9XG4gZnVuIGEgY2IgLT4gKFVuc2FmZS5jb2VyY2UgYSkjI21hcCBjYlxuXG5sZXQgYXJyYXlfbWFwIGYgYSA9IGFycmF5X21hcF9wb2x5IGEgKHdyYXBfY2FsbGJhY2sgKGZ1biB4IF9pZHggXyAtPiBmIHgpKVxuXG5sZXQgYXJyYXlfbWFwaSBmIGEgPSBhcnJheV9tYXBfcG9seSBhICh3cmFwX2NhbGxiYWNrIChmdW4geCBpZHggXyAtPiBmIGlkeCB4KSlcblxuY2xhc3MgdHlwZSBtYXRjaF9yZXN1bHQgPSBvYmplY3RcbiAgaW5oZXJpdCBbanNfc3RyaW5nIHRdIGpzX2FycmF5XG5cbiAgbWV0aG9kIGluZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW5wdXQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IHN0cl9hcnJheSA6IHN0cmluZ19hcnJheSB0IC0+IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgPSBVbnNhZmUuY29lcmNlXG5cbmxldCBtYXRjaF9yZXN1bHQgOiBtYXRjaF9yZXN1bHRfaGFuZGxlIHQgLT4gbWF0Y2hfcmVzdWx0IHQgPSBVbnNhZmUuY29lcmNlXG5cbmNsYXNzIHR5cGUgZGF0ZSA9IG9iamVjdFxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0ZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9UaW1lU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVN0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9Mb2NhbGVEYXRlU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0xvY2FsZVRpbWVTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHZhbHVlT2YgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZ1bGxZZWFyIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDRnVsbFllYXIgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRNb250aCA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01vbnRoIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0RGF0ZSA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0RhdGUgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVVENEYXkgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRIb3VycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ0hvdXJzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0TWludXRlcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbnV0ZXMgOiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTZWNvbmRzIDogaW50IG1ldGhcblxuICBtZXRob2QgZ2V0VVRDU2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldE1pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVUQ01pbGxpc2Vjb25kcyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFRpbWV6b25lT2Zmc2V0IDogaW50IG1ldGhcblxuICBtZXRob2Qgc2V0VGltZSA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0RnVsbFllYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENGdWxsWWVhciA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldE1vbnRoIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTW9udGggOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRlIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDRGF0ZSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldERheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVUQ0RheSA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEhvdXJzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDSG91cnMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRNaW51dGVzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWludXRlcyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldFNlY29uZHMgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBzZXRVVENTZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0TWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0VVRDTWlsbGlzZWNvbmRzIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdG9VVENTdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvSVNPU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCB0b0pTT04gOiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBkYXRlX2NvbnN0ciA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbW9udGggOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19kYXkgOiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19ob3VyIDogaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19taW4gOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgX1VUQ19zZWMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIF9VVENfbXMgOiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBub3cgOiBudW1iZXJfdCBtZXRoXG5lbmRcblxubGV0IGRhdGVfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9EYXRlXG5cbmxldCBkYXRlIDogZGF0ZV9jb25zdHIgdCA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX25vdyA6IGRhdGUgdCBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9mcm9tVGltZVZhbHVlIDogKG51bWJlcl90IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbW9udGggOiAoaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2RheSA6IChpbnQgLT4gaW50IC0+IGludCAtPiBkYXRlIHQpIGNvbnN0ciA9IGRhdGVfY29uc3RyXG5cbmxldCBkYXRlX2hvdXIgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGRhdGUgdCkgY29uc3RyID0gZGF0ZV9jb25zdHJcblxubGV0IGRhdGVfbWluIDogKGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9zZWMgOiAoaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPSBkYXRlX2NvbnN0clxuXG5sZXQgZGF0ZV9tcyA6IChpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gZGF0ZSB0KSBjb25zdHIgPVxuICBkYXRlX2NvbnN0clxuXG5jbGFzcyB0eXBlIG1hdGggPSBvYmplY3RcbiAgbWV0aG9kIF9FIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4yIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE4xMCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPRzJFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTE9HMTBFIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUVJUMV8yXyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NRUlQyIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYnMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGFzaW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4gOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGF0YW4yIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjZWlsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBjb3MgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGV4cCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZmxvb3IgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGxvZyA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBtYXhfMyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWF4XzQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbiA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgbWluXzMgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIG1pbl80IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBwb3cgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHJhbmRvbSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgcm91bmQgOiBudW1iZXJfdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNpbiA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc3FydCA6IG51bWJlcl90IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgdGFuIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgbWV0aFxuZW5kXG5cbmxldCBtYXRoID0gVW5zYWZlLmdsb2JhbCMjLl9NYXRoXG5cbmNsYXNzIHR5cGUgZXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lc3NhZ2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YWNrIDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2QgdG9TdHJpbmcgOiBqc19zdHJpbmcgdCBtZXRoXG5lbmRcblxubGV0IGVycm9yX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fRXJyb3JcblxubW9kdWxlIEpzX2Vycm9yID0gc3RydWN0XG4gIHR5cGUgZXJyb3JfdCA9IGVycm9yIHRcblxuICBpbmNsdWRlIEpzb29fcnVudGltZS5FcnJvclxuXG4gIGV4dGVybmFsIG9mX2Vycm9yIDogZXJyb3JfdCAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGV4dGVybmFsIHRvX2Vycm9yIDogdCAtPiBlcnJvcl90ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBuYW1lIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubmFtZVxuXG4gIGxldCBtZXNzYWdlIGUgPSB0b19zdHJpbmcgKHRvX2Vycm9yIGUpIyMubWVzc2FnZVxuXG4gIGxldCBzdGFjayAoZSA6IHQpIDogc3RyaW5nIG9wdGlvbiA9XG4gICAgT3B0LnRvX29wdGlvbiAoT3B0Lm1hcCAodG9fZXJyb3IgZSkjIy5zdGFjayB0b19zdHJpbmcpXG5cbiAgbGV0IHRvX3N0cmluZyBlID0gdG9fc3RyaW5nICh0b19lcnJvciBlKSMjdG9TdHJpbmdcbmVuZFxuXG5tb2R1bGUgTWFnaWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIHR5cGUgVCA9IHNpZ1xuICAgIGV4Y2VwdGlvbiBFcnJvciBvZiBlcnJvciB0XG4gIGVuZFxuXG4gIHR5cGUgKCdhLCAnYikgZXEgPSBFcSA6ICgnYSwgJ2EpIGVxXG5cbiAgbGV0IChlcSA6IChlcnJvciB0LCBKc19lcnJvci50KSBlcSkgPSBPYmoubWFnaWMgRXFcblxuICBsZXQgbSA9XG4gICAgbWF0Y2ggZXEgd2l0aFxuICAgIHwgRXEgLT5cbiAgICAgICAgKG1vZHVsZSBzdHJ1Y3RcbiAgICAgICAgICBleGNlcHRpb24gRXJyb3IgPSBKc19lcnJvci5FeG5cbiAgICAgICAgZW5kIDogVClcblxuICBtb2R1bGUgRXJyb3IgPSAodmFsIG0gOiBUKVxuZW5kXG5cbmluY2x1ZGUgTWFnaWMuRXJyb3JcblxubGV0IHJhaXNlX2pzX2Vycm9yIGUgPSBKc19lcnJvci5yYWlzZV8gKEpzX2Vycm9yLm9mX2Vycm9yIGUpXG5cbmxldCBzdHJpbmdfb2ZfZXJyb3IgZSA9IEpzX2Vycm9yLnRvX3N0cmluZyAoSnNfZXJyb3Iub2ZfZXJyb3IgZSlcblxubGV0IGV4bl93aXRoX2pzX2JhY2t0cmFjZSA9IEpzX2Vycm9yLmF0dGFjaF9qc19iYWNrdHJhY2VcblxuZXh0ZXJuYWwganNfZXJyb3Jfb2ZfZXhuIDogZXhuIC0+IGVycm9yIHQgb3B0ID0gXCJjYW1sX2pzX2Vycm9yX29mX2V4Y2VwdGlvblwiXG5cbmNsYXNzIHR5cGUganNvbiA9IG9iamVjdFxuICBtZXRob2QgcGFyc2UgOiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQgX0pTT04gOiBqc29uIHQgPSBVbnNhZmUuZ2xvYmFsIyMuX0pTT05cblxubGV0IGRlY29kZVVSSSAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5kZWNvZGVVUkkgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBkZWNvZGVVUklDb21wb25lbnQgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZGVjb2RlVVJJQ29tcG9uZW50IFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgZW5jb2RlVVJJIChzIDoganNfc3RyaW5nIHQpIDoganNfc3RyaW5nIHQgPVxuICBVbnNhZmUuZnVuX2NhbGwgVW5zYWZlLmdsb2JhbCMjLmVuY29kZVVSSSBbfCBVbnNhZmUuaW5qZWN0IHMgfF1cblxubGV0IGVuY29kZVVSSUNvbXBvbmVudCAocyA6IGpzX3N0cmluZyB0KSA6IGpzX3N0cmluZyB0ID1cbiAgVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5lbmNvZGVVUklDb21wb25lbnQgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmxldCBlc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMuZXNjYXBlIFt8IFVuc2FmZS5pbmplY3QgcyB8XVxuXG5sZXQgdW5lc2NhcGUgKHMgOiBqc19zdHJpbmcgdCkgOiBqc19zdHJpbmcgdCA9XG4gIFVuc2FmZS5mdW5fY2FsbCBVbnNhZmUuZ2xvYmFsIyMudW5lc2NhcGUgW3wgVW5zYWZlLmluamVjdCBzIHxdXG5cbmV4dGVybmFsIGJvb2wgOiBib29sIC0+IGJvb2wgdCA9IFwiY2FtbF9qc19mcm9tX2Jvb2xcIlxuXG5leHRlcm5hbCB0b19ib29sIDogYm9vbCB0IC0+IGJvb2wgPSBcImNhbWxfanNfdG9fYm9vbFwiXG5cbmV4dGVybmFsIGFycmF5IDogJ2EgYXJyYXkgLT4gJ2EganNfYXJyYXkgdCA9IFwiY2FtbF9qc19mcm9tX2FycmF5XCJcblxuZXh0ZXJuYWwgdG9fYXJyYXkgOiAnYSBqc19hcnJheSB0IC0+ICdhIGFycmF5ID0gXCJjYW1sX2pzX3RvX2FycmF5XCJcblxuZXh0ZXJuYWwgYnl0ZXN0cmluZyA6IHN0cmluZyAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc2J5dGVzX29mX3N0cmluZ1wiXG5cbmV4dGVybmFsIHRvX2J5dGVzdHJpbmcgOiBqc19zdHJpbmcgdCAtPiBzdHJpbmcgPSBcImNhbWxfc3RyaW5nX29mX2pzYnl0ZXNcIlxuXG5leHRlcm5hbCBmbG9hdCA6IGZsb2F0IC0+IG51bWJlcl90ID0gXCJjYW1sX2pzX2Zyb21fZmxvYXRcIlxuXG5leHRlcm5hbCB0b19mbG9hdCA6IG51bWJlcl90IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgbnVtYmVyX29mX2Zsb2F0IDogZmxvYXQgLT4gbnVtYmVyIHQgPSBcImNhbWxfanNfZnJvbV9mbG9hdFwiXG5cbmV4dGVybmFsIGZsb2F0X29mX251bWJlciA6IG51bWJlciB0IC0+IGZsb2F0ID0gXCJjYW1sX2pzX3RvX2Zsb2F0XCJcblxuZXh0ZXJuYWwgaW50MzIgOiBpbnQzMiAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX2ludDMyXCJcblxuZXh0ZXJuYWwgdG9faW50MzIgOiBudW1iZXJfdCAtPiBpbnQzMiA9IFwiY2FtbF9qc190b19pbnQzMlwiXG5cbmV4dGVybmFsIG5hdGl2ZWludCA6IG5hdGl2ZWludCAtPiBudW1iZXJfdCA9IFwiY2FtbF9qc19mcm9tX25hdGl2ZWludFwiXG5cbmV4dGVybmFsIHRvX25hdGl2ZWludCA6IG51bWJlcl90IC0+IG5hdGl2ZWludCA9IFwiY2FtbF9qc190b19uYXRpdmVpbnRcIlxuXG5leHRlcm5hbCB0eXBlb2YgOiBfIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfdHlwZW9mXCJcblxuZXh0ZXJuYWwgaW5zdGFuY2VvZiA6IF8gdCAtPiBfIGNvbnN0ciAtPiBib29sID0gXCJjYW1sX2pzX2luc3RhbmNlb2ZcIlxuXG5sZXQgaXNOYU4gKGkgOiAnYSkgOiBib29sID1cbiAgdG9fYm9vbCAoVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5pc05hTiBbfCBVbnNhZmUuaW5qZWN0IGkgfF0pXG5cbmxldCBwYXJzZUludCAocyA6IGpzX3N0cmluZyB0KSA6IGludCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUludCBbfCBVbnNhZmUuaW5qZWN0IHMgfF0gaW5cbiAgaWYgaXNOYU4gcyB0aGVuIGZhaWx3aXRoIFwicGFyc2VJbnRcIiBlbHNlIHNcblxubGV0IHBhcnNlRmxvYXQgKHMgOiBqc19zdHJpbmcgdCkgOiBudW1iZXJfdCA9XG4gIGxldCBzID0gVW5zYWZlLmZ1bl9jYWxsIFVuc2FmZS5nbG9iYWwjIy5wYXJzZUZsb2F0IFt8IFVuc2FmZS5pbmplY3QgcyB8XSBpblxuICBpZiBpc05hTiBzIHRoZW4gZmFpbHdpdGggXCJwYXJzZUZsb2F0XCIgZWxzZSBzXG5cbmxldCBfID1cbiAgUHJpbnRleGMucmVnaXN0ZXJfcHJpbnRlciAoZnVuY3Rpb25cbiAgICAgIHwgSnNfZXJyb3IuRXhuIGUgLT4gU29tZSAoSnNfZXJyb3IudG9fc3RyaW5nIGUpXG4gICAgICB8IF8gLT4gTm9uZSlcblxubGV0IF8gPVxuICBQcmludGV4Yy5yZWdpc3Rlcl9wcmludGVyIChmdW4gZSAtPlxuICAgICAgbGV0IGUgOiA8IC4uID4gdCA9IE9iai5tYWdpYyBlIGluXG4gICAgICBpZiBpbnN0YW5jZW9mIGUgYXJyYXlfY29uc3RydWN0b3IgdGhlbiBOb25lIGVsc2UgU29tZSAodG9fc3RyaW5nIGUjI3RvU3RyaW5nKSlcblxubGV0IGV4cG9ydF9qcyAoZmllbGQgOiBqc19zdHJpbmcgdCkgeCA9XG4gIFVuc2FmZS5zZXRcbiAgICAoVW5zYWZlLnB1cmVfanNfZXhwciBcImpzb29fZXhwb3J0c1wiKVxuICAgIGZpZWxkXG4gICAgKGlmIFN0cmluZy5lcXVhbCAoSnMudG9fc3RyaW5nICh0eXBlb2YgKE9iai5tYWdpYyB4KSkpIFwiZnVuY3Rpb25cIlxuICAgICAgICAoKiBmdW5jdGlvbiB3aXRoIGFyaXR5L2xlbmd0aCBlcXVhbCB0byB6ZXJvIGFyZSBhbHJlYWR5IHdyYXBwZWQgKilcbiAgICAgICAgJiYgVW5zYWZlLmdldCAoT2JqLm1hZ2ljIHgpIChKcy5zdHJpbmcgXCJsZW5ndGhcIikgPiAwXG4gICAgIHRoZW4gT2JqLm1hZ2ljICh3cmFwX2NhbGxiYWNrIChPYmoubWFnaWMgeCkpXG4gICAgIGVsc2UgeClcblxubGV0IGV4cG9ydCBmaWVsZCB4ID0gZXhwb3J0X2pzIChzdHJpbmcgZmllbGQpIHhcblxubGV0IGV4cG9ydF9hbGwgb2JqID1cbiAgbGV0IGtleXMgPSBvYmplY3Rfa2V5cyBvYmogaW5cbiAga2V5cyMjZm9yRWFjaFxuICAgICh3cmFwX2NhbGxiYWNrIChmdW4gKGtleSA6IGpzX3N0cmluZyB0KSBfIF8gLT4gZXhwb3J0X2pzIGtleSAoVW5zYWZlLmdldCBvYmoga2V5KSkpXG5cbigqKioqKVxuXG4oKiBERVBSRUNBVEVEICopXG5cbnR5cGUgZmxvYXRfcHJvcCA9IG51bWJlcl90IHByb3BcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgSsOpcsO0bWUgVm91aWxsb25cbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ25vZGVdIG5vZGVMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBpdGVtIDogaW50IC0+ICdub2RlIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbGlzdF9vZl9ub2RlTGlzdCAobm9kZUxpc3QgOiAnYSBub2RlTGlzdCB0KSA9XG4gIGxldCBsZW5ndGggPSBub2RlTGlzdCMjLmxlbmd0aCBpblxuICBsZXQgcmVjIGFkZF9pdGVtIGFjYyBpID1cbiAgICBpZiBpIDwgbGVuZ3RoXG4gICAgdGhlblxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAobm9kZUxpc3QjI2l0ZW0gaSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFkZF9pdGVtIGFjYyAoaSArIDEpXG4gICAgICB8IFNvbWUgZSAtPiBhZGRfaXRlbSAoZSA6OiBhY2MpIChpICsgMSlcbiAgICBlbHNlIExpc3QucmV2IGFjY1xuICBpblxuICBhZGRfaXRlbSBbXSAwXG5cbnR5cGUgbm9kZVR5cGUgPVxuICB8IE9USEVSXG4gICgqIFdpbGwgbm90IGhhcHBlbiAqKVxuICB8IEVMRU1FTlRcbiAgfCBBVFRSSUJVVEVcbiAgfCBURVhUXG4gIHwgQ0RBVEFfU0VDVElPTlxuICB8IEVOVElUWV9SRUZFUkVOQ0VcbiAgfCBFTlRJVFlcbiAgfCBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OXG4gIHwgQ09NTUVOVFxuICB8IERPQ1VNRU5UXG4gIHwgRE9DVU1FTlRfVFlQRVxuICB8IERPQ1VNRU5UX0ZSQUdNRU5UXG4gIHwgTk9UQVRJT05cblxubW9kdWxlIERvY3VtZW50UG9zaXRpb24gPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gaW50XG5cbiAgdHlwZSBtYXNrID0gaW50XG5cbiAgbGV0IGRpc2Nvbm5lY3RlZCA9IDB4MDFcblxuICBsZXQgcHJlY2VkaW5nID0gMHgwMlxuXG4gIGxldCBmb2xsb3dpbmcgPSAweDA0XG5cbiAgbGV0IGNvbnRhaW5zID0gMHgwOFxuXG4gIGxldCBjb250YWluZWRfYnkgPSAweDEwXG5cbiAgbGV0IGltcGxlbWVudGF0aW9uX3NwZWNpZmljID0gMHgyMFxuXG4gIGxldCBoYXMgdCBtYXNrID0gdCBsYW5kIG1hc2sgPSBtYXNrXG5cbiAgbGV0IGFkZCB4IHkgPSB4IGxvciB5XG5cbiAgbGV0ICggKyApID0gYWRkXG5lbmRcblxuY2xhc3MgdHlwZSBub2RlID0gb2JqZWN0XG4gIG1ldGhvZCBub2RlTmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgbm9kZVR5cGUgOiBub2RlVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhcmVudE5vZGUgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgY2hpbGROb2RlcyA6IG5vZGUgbm9kZUxpc3QgdCBwcm9wXG5cbiAgbWV0aG9kIGZpcnN0Q2hpbGQgOiBub2RlIHQgb3B0IHByb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogbm9kZSB0IG9wdCBwcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuZXh0U2libGluZyA6IG5vZGUgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lc3BhY2VVUkkgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRCZWZvcmUgOiBub2RlIHQgLT4gbm9kZSB0IG9wdCAtPiBub2RlIHQgbWV0aFxuXG4gIG1ldGhvZCByZXBsYWNlQ2hpbGQgOiBub2RlIHQgLT4gbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZUNoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZENoaWxkIDogbm9kZSB0IC0+IG5vZGUgdCBtZXRoXG5cbiAgbWV0aG9kIGhhc0NoaWxkTm9kZXMgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZU5vZGUgOiBib29sIHQgLT4gbm9kZSB0IG1ldGhcblxuICBtZXRob2QgY29tcGFyZURvY3VtZW50UG9zaXRpb24gOiBub2RlIHQgLT4gRG9jdW1lbnRQb3NpdGlvbi50IG1ldGhcblxuICBtZXRob2QgbG9va3VwTmFtZXNwYWNlVVJJIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbG9va3VwUHJlZml4IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgYXBwZW5kQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNhcHBlbmRDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVtb3ZlQ2hpbGQgKHAgOiAjbm9kZSB0KSAobiA6ICNub2RlIHQpID0gaWdub3JlIChwIyNyZW1vdmVDaGlsZCAobiA6PiBub2RlIHQpKVxuXG5sZXQgcmVwbGFjZUNoaWxkIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQpID1cbiAgaWdub3JlIChwIyNyZXBsYWNlQ2hpbGQgKG4gOj4gbm9kZSB0KSAobyA6PiBub2RlIHQpKVxuXG5sZXQgaW5zZXJ0QmVmb3JlIChwIDogI25vZGUgdCkgKG4gOiAjbm9kZSB0KSAobyA6ICNub2RlIHQgb3B0KSA9XG4gIGlnbm9yZSAocCMjaW5zZXJ0QmVmb3JlIChuIDo+IG5vZGUgdCkgKG8gOj4gbm9kZSB0IG9wdCkpXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtBdHRyXSBvYmplY3RzLiAqKVxuY2xhc3MgdHlwZSBhdHRyID0gb2JqZWN0XG4gIGluaGVyaXQgbm9kZVxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcGVjaWZpZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJFbGVtZW50IDogZWxlbWVudCB0IHByb3BcbmVuZFxuXG4oKiogU3BlY2lmaWNhdGlvbiBvZiBbTmFtZWROb2RlTWFwXSBvYmplY3RzLiAqKVxuYW5kIFsnbm9kZV0gbmFtZWROb2RlTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBnZXROYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldE5hbWVkSXRlbSA6ICdub2RlIHQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVOYW1lZEl0ZW0gOiBqc19zdHJpbmcgdCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gJ25vZGUgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiBTcGVjaWZpY2F0aW9uIG9mIFtFbGVtZW50XSBvYmplY3RzLiAqKVxuYW5kIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIHRhZ05hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHNldEF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGUgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaGFzQXR0cmlidXRlIDoganNfc3RyaW5nIHQgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZ2V0QXR0cmlidXRlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBzZXRBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBoYXNBdHRyaWJ1dGVOUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYnV0ZU5vZGUgOiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQXR0cmlidXRlTm9kZSA6IGF0dHIgdCAtPiBhdHRyIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRyaWJ1dGVOb2RlTlMgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBhdHRyIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0QXR0cmlidXRlTm9kZU5TIDogYXR0ciB0IC0+IGF0dHIgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50c0J5VGFnTmFtZSA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgbm9kZUxpc3QgdCBtZXRoXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZXMgOiBhdHRyIG5hbWVkTm9kZU1hcCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGNoYXJhY3RlckRhdGEgPSBvYmplY3RcbiAgaW5oZXJpdCBub2RlXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1YmpzX3N0cmluZ0RhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kRGF0YSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbnNlcnREYXRhIDogaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVEYXRhIDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZURhdGEgOiBpbnQgLT4gaW50IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgY29tbWVudCA9IGNoYXJhY3RlckRhdGFcblxuY2xhc3MgdHlwZSB0ZXh0ID0gY2hhcmFjdGVyRGF0YVxuXG5jbGFzcyB0eXBlIGRvY3VtZW50RnJhZ21lbnQgPSBub2RlXG5cbmNsYXNzIHR5cGUgWydlbGVtZW50XSBkb2N1bWVudCA9IG9iamVjdFxuICBpbmhlcml0IG5vZGVcblxuICBtZXRob2QgZG9jdW1lbnRFbGVtZW50IDogJ2VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNyZWF0ZURvY3VtZW50RnJhZ21lbnQgOiBkb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVFbGVtZW50IDoganNfc3RyaW5nIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUVsZW1lbnROUyA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVUZXh0Tm9kZSA6IGpzX3N0cmluZyB0IC0+IHRleHQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUF0dHJpYnV0ZSA6IGpzX3N0cmluZyB0IC0+IGF0dHIgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNvbW1lbnQgOiBqc19zdHJpbmcgdCAtPiBjb21tZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbGVtZW50QnlJZCA6IGpzX3N0cmluZyB0IC0+ICdlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeVRhZ05hbWUgOiBqc19zdHJpbmcgdCAtPiAnZWxlbWVudCBub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgaW1wb3J0Tm9kZSA6IGVsZW1lbnQgdCAtPiBib29sIHQgLT4gJ2VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGFkb3B0Tm9kZSA6IGVsZW1lbnQgdCAtPiAnZWxlbWVudCB0IG1ldGhcbmVuZFxuXG50eXBlIG5vZGVfdHlwZSA9XG4gIHwgRWxlbWVudCBvZiBlbGVtZW50IHRcbiAgfCBBdHRyIG9mIGF0dHIgdFxuICB8IFRleHQgb2YgdGV4dCB0XG4gIHwgT3RoZXIgb2Ygbm9kZSB0XG5cbmxldCBub2RlVHlwZSBlID1cbiAgbWF0Y2ggZSMjLm5vZGVUeXBlIHdpdGhcbiAgfCBFTEVNRU5UIC0+IEVsZW1lbnQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBBVFRSSUJVVEUgLT4gQXR0ciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICB8IENEQVRBX1NFQ1RJT04gfCBURVhUIC0+IFRleHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgfCBfIC0+IE90aGVyIChlIDo+IG5vZGUgdClcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBjYXN0IChlIDogI25vZGUgSnMudCkgdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IHQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCBlbGVtZW50IGUgOiBlbGVtZW50IEpzLnQgSnMub3B0ID0gY2FzdCBlIEVMRU1FTlRcblxuICBsZXQgdGV4dCBlIDogdGV4dCBKcy50IEpzLm9wdCA9XG4gICAgaWYgZSMjLm5vZGVUeXBlID09IFRFWFQgfHwgZSMjLm5vZGVUeXBlID09IENEQVRBX1NFQ1RJT05cbiAgICB0aGVuIEpzLnNvbWUgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYXR0ciBlIDogYXR0ciBKcy50IEpzLm9wdCA9IGNhc3QgZSBBVFRSSUJVVEVcbmVuZFxuXG50eXBlICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gKCdhLCAnYiAtPiBib29sIHQpIG1ldGhfY2FsbGJhY2sgb3B0XG4oKiogVGhlIHR5cGUgb2YgZXZlbnQgbGlzdGVuZXIgZnVuY3Rpb25zLiAgVGhlIGZpcnN0IHR5cGUgcGFyYW1ldGVyXG4gICAgICBbJ2FdIGlzIHRoZSB0eXBlIG9mIHRoZSB0YXJnZXQgb2JqZWN0OyB0aGUgc2Vjb25kIHBhcmFtZXRlclxuICAgICAgWydiXSBpcyB0aGUgdHlwZSBvZiB0aGUgZXZlbnQgb2JqZWN0LiAqKVxuXG5jbGFzcyB0eXBlIFsnYV0gZXZlbnQgPSBvYmplY3RcbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN1cnJlbnRUYXJnZXQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgKCogTGVnYWN5IG1ldGhvZHMgKilcbiAgbWV0aG9kIHNyY0VsZW1lbnQgOiAnYSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSBjdXN0b21FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gZXZlbnRcblxuICBtZXRob2QgZGV0YWlsIDogJ2IgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgbm9faGFuZGxlciA6ICgnYSwgJ2IpIGV2ZW50X2xpc3RlbmVyID0gSnMubnVsbFxuXG5sZXQgd2luZG93X2V2ZW50ICgpIDogJ2EgI2V2ZW50IHQgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiZXZlbnRcIlxuXG4oKiBUaGUgZnVuY3Rpb24gcHJldmVudERlZmF1bHQgbXVzdCBiZSBjYWxsZWQgZXhwbGljaXRseSB3aGVuXG4gICB1c2luZyBhZGRFdmVudExpc3RlbmVyLi4uICopXG5sZXQgaGFuZGxlciBmID1cbiAgSnMuc29tZVxuICAgIChKcy5VbnNhZmUuY2FsbGJhY2sgKGZ1biBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkLiAqKVxuICAgICAgICAgaWYgbm90IChKcy5PcHQudGVzdCAoc29tZSBlKSlcbiAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICBsZXQgZSA9IHdpbmRvd19ldmVudCAoKSBpblxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gZSMjLnJldHVyblZhbHVlIDo9IHJlcztcbiAgICAgICAgICAgcmVzKVxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBsZXQgcmVzID0gZiBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgZnVsbF9oYW5kbGVyIGYgPVxuICBKcy5zb21lXG4gICAgKEpzLlVuc2FmZS5tZXRoX2NhbGxiYWNrIChmdW4gdGhpcyBlIC0+XG4gICAgICAgICAoKiBkZXBlbmRpbmcgb24gdGhlIGludGVybmV0IGV4cGxvcmVyIHZlcnNpb24sIGUgY2FuIGJlIG51bGwgb3IgdW5kZWZpbmVkICopXG4gICAgICAgICBpZiBub3QgKEpzLk9wdC50ZXN0IChzb21lIGUpKVxuICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgIGxldCBlID0gd2luZG93X2V2ZW50ICgpIGluXG4gICAgICAgICAgIGxldCByZXMgPSBmIHRoaXMgZSBpblxuICAgICAgICAgICBpZiBub3QgKEpzLnRvX2Jvb2wgcmVzKSB0aGVuIGUjIy5yZXR1cm5WYWx1ZSA6PSByZXM7XG4gICAgICAgICAgIHJlcylcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbGV0IHJlcyA9IGYgdGhpcyBlIGluXG4gICAgICAgICAgIGlmIG5vdCAoSnMudG9fYm9vbCByZXMpIHRoZW4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3ByZXZlbnREZWZhdWx0O1xuICAgICAgICAgICByZXMpKVxuXG5sZXQgaW52b2tlX2hhbmRsZXIgKGYgOiAoJ2EsICdiKSBldmVudF9saXN0ZW5lcikgKHRoaXMgOiAnYSkgKGV2ZW50IDogJ2IpIDogYm9vbCB0ID1cbiAgSnMuVW5zYWZlLmNhbGwgZiB0aGlzIFt8IEpzLlVuc2FmZS5pbmplY3QgZXZlbnQgfF1cblxubGV0IGV2ZW50VGFyZ2V0IChlIDogKDwgLi4gPiBhcyAnYSkgI2V2ZW50IHQpIDogJ2EgdCA9XG4gIGxldCB0YXJnZXQgPVxuICAgIE9wdC5nZXQgZSMjLnRhcmdldCAoZnVuICgpIC0+IE9wdC5nZXQgZSMjLnNyY0VsZW1lbnQgKGZ1biAoKSAtPiByYWlzZSBOb3RfZm91bmQpKVxuICBpblxuICBpZiBKcy5pbnN0YW5jZW9mIHRhcmdldCBKcy5VbnNhZmUuZ2xvYmFsIyMuX05vZGVcbiAgdGhlblxuICAgICgqIFdvcmthcm91bmQgZm9yIFNhZmFyaSBidWcgKilcbiAgICBsZXQgdGFyZ2V0JyA6IG5vZGUgSnMudCA9IEpzLlVuc2FmZS5jb2VyY2UgdGFyZ2V0IGluXG4gICAgaWYgdGFyZ2V0JyMjLm5vZGVUeXBlID09IFRFWFRcbiAgICB0aGVuIEpzLlVuc2FmZS5jb2VyY2UgKE9wdC5nZXQgdGFyZ2V0JyMjLnBhcmVudE5vZGUgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpKVxuICAgIGVsc2UgdGFyZ2V0XG4gIGVsc2UgdGFyZ2V0XG5cbm1vZHVsZSBFdmVudCA9IHN0cnVjdFxuICB0eXBlICdhIHR5cCA9IEpzLmpzX3N0cmluZyBKcy50XG5cbiAgbGV0IG1ha2UgcyA9IEpzLnN0cmluZyBzXG5lbmRcblxudHlwZSBldmVudF9saXN0ZW5lcl9pZCA9IHVuaXQgLT4gdW5pdFxuXG5jbGFzcyB0eXBlIGV2ZW50X2xpc3RlbmVyX29wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIGNhcHR1cmUgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25jZSA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXNzaXZlIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5lbmRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9ucyAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCA/Y2FwdHVyZSA/b25jZSA/cGFzc2l2ZSBoID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmFkZEV2ZW50TGlzdGVuZXIpXG4gIHRoZW5cbiAgICBsZXQgZXYgPSAoSnMuc3RyaW5nIFwib25cIikjI2NvbmNhdCB0eXAgaW5cbiAgICBsZXQgY2FsbGJhY2sgZSA9IEpzLlVuc2FmZS5jYWxsIChoLCBlLCBbfHxdKSBpblxuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhdHRhY2hFdmVudCBldiBjYWxsYmFjayBpblxuICAgIGZ1biAoKSAtPiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjZGV0YWNoRXZlbnQgZXYgY2FsbGJhY2tcbiAgZWxzZVxuICAgIGxldCBvcHRzIDogZXZlbnRfbGlzdGVuZXJfb3B0aW9ucyB0ID0gSnMuVW5zYWZlLm9iaiBbfHxdIGluXG4gICAgbGV0IGl0ZXIgdCBmID1cbiAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgYiAtPiBmIGJcbiAgICBpblxuICAgIGl0ZXIgY2FwdHVyZSAoZnVuIGIgLT4gb3B0cyMjLmNhcHR1cmUgOj0gYik7XG4gICAgaXRlciBvbmNlIChmdW4gYiAtPiBvcHRzIyMub25jZSA6PSBiKTtcbiAgICBpdGVyIHBhc3NpdmUgKGZ1biBiIC0+IG9wdHMjIy5wYXNzaXZlIDo9IGIpO1xuICAgIGxldCAoKSA9IChKcy5VbnNhZmUuY29lcmNlIGUpIyNhZGRFdmVudExpc3RlbmVyIHR5cCBoIG9wdHMgaW5cbiAgICBmdW4gKCkgLT4gKEpzLlVuc2FmZS5jb2VyY2UgZSkjI3JlbW92ZUV2ZW50TGlzdGVuZXIgdHlwIGggb3B0c1xuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciAoZSA6ICg8IC4uID4gYXMgJ2EpIHQpIHR5cCBoIGNhcHQgPVxuICBhZGRFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgZSB0eXAgfmNhcHR1cmU6Y2FwdCBoXG5cbmxldCByZW1vdmVFdmVudExpc3RlbmVyIGlkID0gaWQgKClcblxubGV0IHByZXZlbnREZWZhdWx0IGV2ID1cbiAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgZXYpIyMucHJldmVudERlZmF1bHQgKCogSUUgaGFjayAqKVxuICB0aGVuIChKcy5VbnNhZmUuY29lcmNlIGV2KSMjcHJldmVudERlZmF1bHRcbiAgZWxzZSAoSnMuVW5zYWZlLmNvZXJjZSBldikjIy5yZXR1cm5WYWx1ZSA6PSBKcy5ib29sIGZhbHNlXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA/YnViYmxlcyA/Y2FuY2VsYWJsZSA/ZGV0YWlsIHR5cCA9XG4gIGxldCBvcHRfaXRlciBmID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9wdHMgPSBVbnNhZmUub2JqIFt8fF0gaW5cbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5idWJibGVzIDo9IGJvb2wgeCkgYnViYmxlcztcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5jYW5jZWxhYmxlIDo9IGJvb2wgeCkgY2FuY2VsYWJsZTtcbiAgb3B0X2l0ZXIgKGZ1biB4IC0+IG9wdHMjIy5kZXRhaWwgOj0gc29tZSB4KSBkZXRhaWw7XG4gIGxldCBjb25zdHIgOlxuICAgICAgKCAgICgnYSwgJ2IpICNjdXN0b21FdmVudCBKcy50IEV2ZW50LnR5cFxuICAgICAgIC0+IDwgZGV0YWlsIDogJ2Igb3B0IHByb3AgPiB0XG4gICAgICAgLT4gKCdhLCAnYikgY3VzdG9tRXZlbnQgdClcbiAgICAgIGNvbnN0ciA9XG4gICAgVW5zYWZlLmdsb2JhbCMjLl9DdXN0b21FdmVudFxuICBpblxuICBuZXclanMgY29uc3RyIHR5cCBvcHRzXG5cbigqIElFIDwgOSAqKVxuXG5jbGFzcyB0eXBlIHN0cmluZ0xpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEyIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxub3BlbiBKc1xuXG50eXBlIHVpbnQzMiA9IGZsb2F0XG5cbmNsYXNzIHR5cGUgYXJyYXlCdWZmZXIgPSBvYmplY3RcbiAgbWV0aG9kIGJ5dGVMZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYXJyYXlCdWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+IGFycmF5QnVmZmVyIHQgbWV0aFxuZW5kXG5cbmxldCBhcnJheUJ1ZmZlciA6IChpbnQgLT4gYXJyYXlCdWZmZXIgdCkgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9BcnJheUJ1ZmZlclxuXG5jbGFzcyB0eXBlIGFycmF5QnVmZmVyVmlldyA9IG9iamVjdFxuICBtZXRob2QgYnVmZmVyIDogYXJyYXlCdWZmZXIgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJ5dGVPZmZzZXQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBieXRlTGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYSwgJ2JdIHR5cGVkQXJyYXkgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgX0JZVEVTX1BFUl9FTEVNRU5UIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0X2Zyb21BcnJheSA6ICdhIGpzX2FycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRfZnJvbVR5cGVkQXJyYXkgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdWJhcnJheSA6IGludCAtPiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc3ViYXJyYXlfdG9FbmQgOiBpbnQgLT4gKCdhLCAnYikgdHlwZWRBcnJheSB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2UgOiBpbnQgLT4gaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIHNsaWNlX3RvRW5kIDogaW50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCBtZXRoXG5cbiAgKCogVGhpcyBmYWtlIG1ldGhvZCBpcyBuZWVkZWQgZm9yIHR5cGluZyBwdXJwb3Nlcy5cbiAgICAgV2l0aG91dCBpdCwgWydiXSB3b3VsZCBub3QgYmUgY29uc3RyYWluZWQuICopXG4gIG1ldGhvZCBfY29udGVudF90eXBlXyA6ICdiIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxudHlwZSBpbnQ4QXJyYXkgPSAoaW50LCBCaWdhcnJheS5pbnQ4X3NpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSB1aW50OEFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfc2lnbmVkX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIHVpbnQxNkFycmF5ID0gKGludCwgQmlnYXJyYXkuaW50MTZfdW5zaWduZWRfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgaW50MzJBcnJheSA9IChpbnQzMiwgQmlnYXJyYXkuaW50MzJfZWx0KSB0eXBlZEFycmF5XG5cbnR5cGUgdWludDMyQXJyYXkgPSAoaW50MzIsIEJpZ2FycmF5LmludDMyX2VsdCkgdHlwZWRBcnJheVxuXG50eXBlIGZsb2F0MzJBcnJheSA9IChmbG9hdCwgQmlnYXJyYXkuZmxvYXQzMl9lbHQpIHR5cGVkQXJyYXlcblxudHlwZSBmbG9hdDY0QXJyYXkgPSAoZmxvYXQsIEJpZ2FycmF5LmZsb2F0NjRfZWx0KSB0eXBlZEFycmF5XG5cbmV4dGVybmFsIGtpbmQgOiAoJ2EsICdiKSB0eXBlZEFycmF5IHQgLT4gKCdhLCAnYikgQmlnYXJyYXkua2luZFxuICA9IFwiY2FtbF9iYV9raW5kX29mX3R5cGVkX2FycmF5XCJcblxuZXh0ZXJuYWwgZnJvbV9nZW5hcnJheSA6XG4gICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50IC0+ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdFxuICA9IFwiY2FtbF9iYV90b190eXBlZF9hcnJheVwiXG5cbmV4dGVybmFsIHRvX2dlbmFycmF5IDpcbiAgKCdhLCAnYikgdHlwZWRBcnJheSB0IC0+ICgnYSwgJ2IsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5HZW5hcnJheS50XG4gID0gXCJjYW1sX2JhX2Zyb21fdHlwZWRfYXJyYXlcIlxuXG5sZXQgaW50OEFycmF5ID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tQXJyYXkgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDhBcnJheVxuXG5sZXQgaW50OEFycmF5X2Zyb21CdWZmZXIgPSBpbnQ4QXJyYXlcblxubGV0IGludDhBcnJheV9pbkJ1ZmZlciA9IGludDhBcnJheVxuXG5sZXQgdWludDhBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQXJyYXkgPSB1aW50OEFycmF5XG5cbmxldCB1aW50OEFycmF5X2Zyb21UeXBlZEFycmF5ID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9mcm9tQnVmZmVyID0gdWludDhBcnJheVxuXG5sZXQgdWludDhBcnJheV9pbkJ1ZmZlciA9IHVpbnQ4QXJyYXlcblxubGV0IGludDE2QXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUFycmF5ID0gaW50MTZBcnJheVxuXG5sZXQgaW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfZnJvbUJ1ZmZlciA9IGludDE2QXJyYXlcblxubGV0IGludDE2QXJyYXlfaW5CdWZmZXIgPSBpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2Zyb21BcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQxNkFycmF5XG5cbmxldCB1aW50MTZBcnJheV9mcm9tQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IHVpbnQxNkFycmF5X2luQnVmZmVyID0gdWludDE2QXJyYXlcblxubGV0IGludDMyQXJyYXkgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUFycmF5ID0gaW50MzJBcnJheVxuXG5sZXQgaW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfZnJvbUJ1ZmZlciA9IGludDMyQXJyYXlcblxubGV0IGludDMyQXJyYXlfaW5CdWZmZXIgPSBpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fVWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2Zyb21BcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tVHlwZWRBcnJheSA9IHVpbnQzMkFycmF5XG5cbmxldCB1aW50MzJBcnJheV9mcm9tQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IHVpbnQzMkFycmF5X2luQnVmZmVyID0gdWludDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbUFycmF5ID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0MzJBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQzMkFycmF5XG5cbmxldCBmbG9hdDMyQXJyYXlfaW5CdWZmZXIgPSBmbG9hdDMyQXJyYXlcblxubGV0IGZsb2F0NjRBcnJheSA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbUFycmF5ID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfZnJvbVR5cGVkQXJyYXkgPSBmbG9hdDY0QXJyYXlcblxubGV0IGZsb2F0NjRBcnJheV9mcm9tQnVmZmVyID0gZmxvYXQ2NEFycmF5XG5cbmxldCBmbG9hdDY0QXJyYXlfaW5CdWZmZXIgPSBmbG9hdDY0QXJyYXlcblxubGV0IHNldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgLT4gdW5pdCA9XG4gZnVuIGEgaSB2IC0+IGFycmF5X3NldCAoVW5zYWZlLmNvZXJjZSBhKSBpIHZcblxubGV0IGdldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2Egb3B0ZGVmID0gZnVuIGEgaSAtPiBKcy5VbnNhZmUuZ2V0IGEgaVxuXG5sZXQgdW5zYWZlX2dldCA6ICgnYSwgJ2IpIHR5cGVkQXJyYXkgdCAtPiBpbnQgLT4gJ2EgPSBmdW4gYSBpIC0+IEpzLlVuc2FmZS5nZXQgYSBpXG5cbmNsYXNzIHR5cGUgZGF0YVZpZXcgPSBvYmplY3RcbiAgaW5oZXJpdCBhcnJheUJ1ZmZlclZpZXdcblxuICBtZXRob2QgZ2V0SW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50OCA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQxNl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQxNiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MTZfIDogaW50IC0+IGJvb2wgdCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMiA6IGludCAtPiBpbnQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJbnQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVpbnQzMiA6IGludCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRVaW50MzJfIDogaW50IC0+IGJvb2wgdCAtPiB1aW50MzIgbWV0aFxuXG4gIG1ldGhvZCBnZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQzMl8gOiBpbnQgLT4gYm9vbCB0IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0RmxvYXQ2NCA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZsb2F0NjRfIDogaW50IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDggOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRVaW50OCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludDE2IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MTZfIDogaW50IC0+IGludCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNiA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFVpbnQxNl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0SW50MzIgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRJbnQzMl8gOiBpbnQgLT4gaW50IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyIDogaW50IC0+IHVpbnQzMiAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0VWludDMyXyA6IGludCAtPiB1aW50MzIgLT4gYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyIDogaW50IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRGbG9hdDMyXyA6IGludCAtPiBudW1iZXJfdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjQgOiBpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEZsb2F0NjRfIDogaW50IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZGF0YVZpZXcgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0RhdGFWaWV3XG5cbmxldCBkYXRhVmlld19pbkJ1ZmZlciA9IGRhdGFWaWV3XG5cbm1vZHVsZSBCaWdzdHJpbmcgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gKGNoYXIsIEJpZ2FycmF5LmludDhfdW5zaWduZWRfZWx0LCBCaWdhcnJheS5jX2xheW91dCkgQmlnYXJyYXkuQXJyYXkxLnRcblxuICBleHRlcm5hbCB0b19hcnJheUJ1ZmZlciA6IHQgLT4gYXJyYXlCdWZmZXIgSnMudCA9IFwiYmlnc3RyaW5nX3RvX2FycmF5X2J1ZmZlclwiXG5cbiAgZXh0ZXJuYWwgdG9fdWludDhBcnJheSA6IHQgLT4gdWludDhBcnJheSBKcy50ID0gXCJiaWdzdHJpbmdfdG9fdHlwZWRfYXJyYXlcIlxuXG4gIGV4dGVybmFsIG9mX2FycmF5QnVmZmVyIDogYXJyYXlCdWZmZXIgSnMudCAtPiB0ID0gXCJiaWdzdHJpbmdfb2ZfYXJyYXlfYnVmZmVyXCJcblxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHQgPSBcImJpZ3N0cmluZ19vZl90eXBlZF9hcnJheVwiXG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBleHRlcm5hbCBvZl91aW50OEFycmF5IDogdWludDhBcnJheSBKcy50IC0+IHN0cmluZyA9IFwiY2FtbF9zdHJpbmdfb2ZfYXJyYXlcIlxuXG4gIGxldCBvZl9hcnJheUJ1ZmZlciBhYiA9XG4gICAgbGV0IHVpbnQ4ID0gbmV3JWpzIHVpbnQ4QXJyYXlfZnJvbUJ1ZmZlciBhYiBpblxuICAgIG9mX3VpbnQ4QXJyYXkgdWludDhcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbVxub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgYmxvYiA9IG9iamVjdFxuICBtZXRob2Qgc2l6ZSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzbGljZSA6IGludCAtPiBpbnQgLT4gYmxvYiB0IG1ldGhcblxuICBtZXRob2Qgc2xpY2Vfd2l0aENvbnRlbnRUeXBlIDogaW50IC0+IGludCAtPiBqc19zdHJpbmcgdCAtPiBibG9iIHQgbWV0aFxuZW5kXG5cbmxldCBibG9iX2NvbnN0ciA9IFVuc2FmZS5nbG9iYWwjIy5fQmxvYlxuXG50eXBlICdhIG1ha2VfYmxvYiA9XG4gID9jb250ZW50VHlwZTpzdHJpbmcgLT4gP2VuZGluZ3M6WyBgVHJhbnNwYXJlbnQgfCBgTmF0aXZlIF0gLT4gJ2EgLT4gYmxvYiB0XG5cbmxldCByZWMgZmlsdGVyX21hcCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IHYgOjogcSAtPiAoXG4gICAgICBtYXRjaCBmIHYgd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBxXG4gICAgICB8IFNvbWUgdicgLT4gdicgOjogZmlsdGVyX21hcCBmIHEpXG5cbmxldCBtYWtlX2Jsb2Jfb3B0aW9ucyBjb250ZW50VHlwZSBlbmRpbmdzID1cbiAgbGV0IG9wdGlvbnMgPVxuICAgIGZpbHRlcl9tYXBcbiAgICAgIChmdW4gKG5hbWUsIHYpIC0+XG4gICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgdiAtPiBTb21lIChuYW1lLCBVbnNhZmUuaW5qZWN0IChzdHJpbmcgdikpKVxuICAgICAgWyBcInR5cGVcIiwgY29udGVudFR5cGVcbiAgICAgIDsgKCBcImVuZGluZ3NcIlxuICAgICAgICAsIG1hdGNoIGVuZGluZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGBUcmFuc3BhcmVudCAtPiBTb21lIFwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgIHwgU29tZSBgTmF0aXZlIC0+IFNvbWUgXCJuYXRpdmVcIiApXG4gICAgICBdXG4gIGluXG4gIG1hdGNoIG9wdGlvbnMgd2l0aFxuICB8IFtdIC0+IHVuZGVmaW5lZFxuICB8IGwgLT4gVW5zYWZlLm9iaiAoQXJyYXkub2ZfbGlzdCBsKVxuXG5sZXQgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIGEgPVxuICBsZXQgb3B0aW9ucyA9IG1ha2VfYmxvYl9vcHRpb25zIGNvbnRlbnRUeXBlIGVuZGluZ3MgaW5cbiAgbmV3JWpzIGJsb2JfY29uc3RyIChhcnJheSBhKSBvcHRpb25zXG5cbmxldCBibG9iX2Zyb21fc3RyaW5nID9jb250ZW50VHlwZSA/ZW5kaW5ncyBzID1cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIFt8IHN0cmluZyBzIHxdXG5cbmxldCBibG9iX2Zyb21fYW55ID9jb250ZW50VHlwZSA/ZW5kaW5ncyBsID1cbiAgbGV0IGwgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuY3Rpb25cbiAgICAgICAgfCBgYXJyYXlCdWZmZXIgYSAtPiBVbnNhZmUuaW5qZWN0IGFcbiAgICAgICAgfCBgYXJyYXlCdWZmZXJWaWV3IGEgLT4gVW5zYWZlLmluamVjdCBhXG4gICAgICAgIHwgYHN0cmluZyBzIC0+IFVuc2FmZS5pbmplY3QgKHN0cmluZyBzKVxuICAgICAgICB8IGBqc19zdHJpbmcgcyAtPiBVbnNhZmUuaW5qZWN0IHNcbiAgICAgICAgfCBgYmxvYiBiIC0+IFVuc2FmZS5pbmplY3QgYilcbiAgICAgIGxcbiAgaW5cbiAgYmxvYl9yYXcgP2NvbnRlbnRUeXBlID9lbmRpbmdzIChBcnJheS5vZl9saXN0IGwpXG5cbmNsYXNzIHR5cGUgZmlsZSA9IG9iamVjdFxuICBpbmhlcml0IGJsb2JcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdE1vZGlmaWVkRGF0ZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbiBmaXJlZm94IDMuMC0zLjUgZmlsZS5uYW1lIGlzIG5vdCBhdmFpbGFibGUsIHdlIHVzZSB0aGUgbm9uc3RhbmRhcmQgZmlsZU5hbWUgaW5zdGVhZCAqKVxuY2xhc3MgdHlwZSBmaWxlX25hbWVfb25seSA9IG9iamVjdFxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZpbGVOYW1lIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgZmlsZW5hbWUgZmlsZSA9XG4gIGxldCBmaWxlIDogZmlsZV9uYW1lX29ubHkgdCA9IEpzLlVuc2FmZS5jb2VyY2UgZmlsZSBpblxuICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGZpbGUjIy5uYW1lIHdpdGhcbiAgfCBOb25lIC0+IChcbiAgICAgIG1hdGNoIE9wdGRlZi50b19vcHRpb24gZmlsZSMjLmZpbGVOYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcImNhbid0IHJldHJpZXZlIGZpbGUgbmFtZTogbm90IGltcGxlbWVudGVkXCJcbiAgICAgIHwgU29tZSBuYW1lIC0+IG5hbWUpXG4gIHwgU29tZSBuYW1lIC0+IG5hbWVcblxudHlwZSBmaWxlX2FueSA9IDwgPiB0XG5cbmxldCBkb2NfY29uc3RyID0gVW5zYWZlLmdsb2JhbCMjLl9Eb2N1bWVudFxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgZXh0ZXJuYWwganNvbiA6IGZpbGVfYW55IC0+ICdhIE9wdC50ID0gXCIlaWRlbnRpdHlcIlxuXG4gIGxldCBkb2N1bWVudCAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGRvY19jb25zdHJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IGVsZW1lbnQgZG9jdW1lbnQgdClcbiAgICBlbHNlIEpzLm51bGxcblxuICBsZXQgYmxvYiAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgaW5zdGFuY2VvZiBlIGJsb2JfY29uc3RyIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDogI2Jsb2IgdCkgZWxzZSBKcy5udWxsXG5cbiAgbGV0IHN0cmluZyAoZSA6IGZpbGVfYW55KSA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgZSkgKHN0cmluZyBcInN0cmluZ1wiKVxuICAgIHRoZW4gSnMuc29tZSAoVW5zYWZlLmNvZXJjZSBlIDoganNfc3RyaW5nIHQpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGFycmF5QnVmZmVyIChlIDogZmlsZV9hbnkpID1cbiAgICBpZiBpbnN0YW5jZW9mIGUgVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJcbiAgICB0aGVuIEpzLnNvbWUgKFVuc2FmZS5jb2VyY2UgZSA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQpXG4gICAgZWxzZSBKcy5udWxsXG5lbmRcblxuY2xhc3MgdHlwZSBmaWxlTGlzdCA9IG9iamVjdFxuICBpbmhlcml0IFtmaWxlXSBEb20ubm9kZUxpc3RcbmVuZFxuXG5jbGFzcyB0eXBlIGZpbGVFcnJvciA9IG9iamVjdFxuICBtZXRob2QgY29kZSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIHByb2dyZXNzRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbJ2FdIGV2ZW50XG5cbiAgbWV0aG9kIGxlbmd0aENvbXB1dGFibGUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2FkZWQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0b3RhbCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcm9ncmVzc0V2ZW50VGFyZ2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ubG9hZHN0YXJ0IDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wcm9ncmVzcyA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICgnc2VsZiB0LCAnc2VsZiBwcm9ncmVzc0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYWJvcnQgOiAoJ3NlbGYgdCwgJ3NlbGYgcHJvZ3Jlc3NFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2FkZW5kIDogKCdzZWxmIHQsICdzZWxmIHByb2dyZXNzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEVNUFRZXG4gIHwgTE9BRElOR1xuICB8IERPTkVcblxuY2xhc3MgdHlwZSBmaWxlUmVhZGVyID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHJlYWRBc0FycmF5QnVmZmVyIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzQmluYXJ5U3RyaW5nIDogI2Jsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzVGV4dCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWRBc1RleHRfd2l0aEVuY29kaW5nIDogI2Jsb2IgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVhZEFzRGF0YVVSTCA6ICNibG9iIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFib3J0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzdWx0IDogZmlsZV9hbnkgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBlcnJvciA6IGZpbGVFcnJvciB0IHJlYWRvbmx5X3Byb3BcblxuICBpbmhlcml0IHByb2dyZXNzRXZlbnRUYXJnZXRcbmVuZFxuXG5tb2R1bGUgUmVhZGVyRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0eXAgPSBmaWxlUmVhZGVyIHByb2dyZXNzRXZlbnQgdCBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGxvYWRzdGFydCA9IEV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IEV2ZW50Lm1ha2UgXCJwcm9ncmVzc1wiXG5cbiAgbGV0IGFib3J0ID0gRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgZXJyb3IgPSBFdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRXZlbnQubWFrZSBcImxvYWRcIlxuXG4gIGxldCBsb2FkZW5kID0gRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmxldCBmaWxlUmVhZGVyIDogZmlsZVJlYWRlciB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRmlsZVJlYWRlclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNhbWxfanNfb25faWUgOiB1bml0IC0+IGJvb2wgdCA9IFwiY2FtbF9qc19vbl9pZVwiXG5cbmxldCBvbklFID0gSnMudG9fYm9vbCAoY2FtbF9qc19vbl9pZSAoKSlcblxuZXh0ZXJuYWwgaHRtbF9lc2NhcGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCA9IFwiY2FtbF9qc19odG1sX2VzY2FwZVwiXG5cbmV4dGVybmFsIGRlY29kZV9odG1sX2VudGl0aWVzIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgPSBcImNhbWxfanNfaHRtbF9lbnRpdGllc1wiXG5cbmNsYXNzIHR5cGUgY3NzU3R5bGVEZWNsYXJhdGlvbiA9IG9iamVjdFxuICBtZXRob2Qgc2V0UHJvcGVydHkgOlxuICAgIGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdGRlZiAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5VmFsdWUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb3BlcnR5UHJpb3JpdHkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVByb3BlcnR5IDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBhbmltYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkRlbGF5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25EaXJlY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbkR1cmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRpb25GaWxsTW9kZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGFuaW1hdGlvblBsYXlTdGF0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0aW9uVGltaW5nRnVuY3Rpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRBdHRhY2htZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJhY2tncm91bmRJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYmFja2dyb3VuZFBvc2l0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBiYWNrZ3JvdW5kUmVwZWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQm90dG9tQ29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckJvdHRvbVN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJCb3R0b21XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyQ29sbGFwc2UgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJMZWZ0Q29sb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlckxlZnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyTGVmdFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSYWRpdXMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclJpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodENvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJSaWdodFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJUb3BDb2xvciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm9yZGVyVG9wU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGJvcmRlclRvcFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXJXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjYXB0aW9uU2lkZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xlYXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVySW5jcmVtZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb3VudGVyUmVzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNzc0Zsb2F0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjc3NUZXh0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJzb3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzcGxheSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZW1wdHlDZWxscyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsbCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udEZhbWlseSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFNpemUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRTdHlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9udFZhcmlhbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvbnRXZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGV0dGVyU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsaXN0U3R5bGVJbWFnZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGlzdFN0eWxlUG9zaXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxpc3RTdHlsZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5MZWZ0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5SaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhIZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1heFdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtaW5IZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pbldpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGFjaXR5IDoganNfc3RyaW5nIHQgb3B0ZGVmIHByb3BcblxuICBtZXRob2Qgb3V0bGluZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3V0bGluZUNvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lT2Zmc2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvdXRsaW5lU3R5bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGxpbmVXaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3cgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG92ZXJmbG93WCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3ZlcmZsb3dZIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nQm90dG9tIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nTGVmdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFkZGluZ1JpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWRkaW5nVG9wIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYWdlQnJlYWtBZnRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcGFnZUJyZWFrQmVmb3JlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb2ludGVyRXZlbnRzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwb3NpdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc3Ryb2tlV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYmxlTGF5b3V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbmNob3IgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHREZWNvcmF0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0SW5kZW50IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0VHJhbnNmb3JtIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0b3AgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmVydGljYWxBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmlzaWJpbGl0eSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2hpdGVTcGFjZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdvcmRTcGFjaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB6SW5kZXggOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxudHlwZSAoJ2EsICdiKSBldmVudF9saXN0ZW5lciA9ICgnYSwgJ2IpIERvbS5ldmVudF9saXN0ZW5lclxuXG50eXBlIG1vdXNlX2J1dHRvbiA9XG4gIHwgTm9fYnV0dG9uXG4gIHwgTGVmdF9idXR0b25cbiAgfCBNaWRkbGVfYnV0dG9uXG4gIHwgUmlnaHRfYnV0dG9uXG5cbnR5cGUgZGVsdGFfbW9kZSA9XG4gIHwgRGVsdGFfcGl4ZWxcbiAgfCBEZWx0YV9saW5lXG4gIHwgRGVsdGFfcGFnZVxuXG5jbGFzcyB0eXBlIGV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5ldmVudFxuZW5kXG5cbmFuZCBbJ2FdIGN1c3RvbUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnQsICdhXSBEb20uY3VzdG9tRXZlbnRcbmVuZFxuXG5hbmQgZm9jdXNFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHJlbGF0ZWRUYXJnZXQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIG1vdXNlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRYIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xpZW50WSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5ZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0WCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldFkgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdHJsS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2hpZnRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbHRLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXRhS2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnV0dG9uIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2hpY2ggOiBtb3VzZV9idXR0b24gb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZnJvbUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVkgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQga2V5Ym9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNoaWZ0S2V5IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3RybEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb2NhdGlvbiA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvZGUgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aGljaCA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyQ29kZSA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBrZXlDb2RlIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TW9kaWZpZXJTdGF0ZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGtleUlkZW50aWZpZXIgOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZXdoZWVsRXZlbnQgPSBvYmplY3RcbiAgKCogQWxsIG1vZGVybiBicm93c2VycyAqKVxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2Qgd2hlZWxEZWx0YSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFYIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdoZWVsRGVsdGFZIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhWCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGVsdGFZIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWx0YVogOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRlbHRhTW9kZSA6IGRlbHRhX21vZGUgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtb3VzZVNjcm9sbEV2ZW50ID0gb2JqZWN0XG4gICgqIEZpcmVmb3ggKilcbiAgaW5oZXJpdCBtb3VzZUV2ZW50XG5cbiAgbWV0aG9kIGRldGFpbCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF4aXMgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hPUklaT05UQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVElDQUxfQVhJUyA6IGludCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgdG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGFyZ2V0VG91Y2hlcyA6IHRvdWNoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhbmdlZFRvdWNoZXMgOiB0b3VjaExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN0cmxLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaGlmdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdEtleSA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1ldGFLZXkgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWxhdGVkVGFyZ2V0IDogZWxlbWVudCB0IG9wdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0b3VjaExpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4gdG91Y2ggdCBvcHRkZWYgbWV0aFxuZW5kXG5cbmFuZCB0b3VjaCA9IG9iamVjdFxuICBtZXRob2QgaWRlbnRpZmllciA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGVsZW1lbnQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JlZW5YIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2NyZWVuWSA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudFggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRZIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFnZVggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYWdlWSA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN1Ym1pdEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2Qgc3VibWl0dGVyIDogZWxlbWVudCB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRyYWdFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgZGF0YVRyYW5zZmVyIDogZGF0YVRyYW5zZmVyIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBjbGlwYm9hcmRFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGNsaXBib2FyZERhdGEgOiBkYXRhVHJhbnNmZXIgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGRhdGFUcmFuc2ZlciA9IG9iamVjdFxuICBtZXRob2QgZHJvcEVmZmVjdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZWZmZWN0QWxsb3dlZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0eXBlcyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRFbGVtZW50IDogZWxlbWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckRhdGEgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEYXRhX2FsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBzZXREYXRhIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldERyYWdJbWFnZSA6IGVsZW1lbnQgdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBldmVudFRhcmdldCA9IG9iamVjdCAoJ3NlbGYpXG4gIG1ldGhvZCBvbmNsaWNrIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kYmxjbGljayA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2Vkb3duIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZXVwIDogKCdzZWxmIHQsIG1vdXNlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25tb3VzZW92ZXIgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1vdXNlbW92ZSA6ICgnc2VsZiB0LCBtb3VzZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubW91c2VvdXQgOiAoJ3NlbGYgdCwgbW91c2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmtleXByZXNzIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXlkb3duIDogKCdzZWxmIHQsIGtleWJvYXJkRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25rZXl1cCA6ICgnc2VsZiB0LCBrZXlib2FyZEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uc2Nyb2xsIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2hlZWwgOiAoJ3NlbGYgdCwgbW91c2V3aGVlbEV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ3N0YXJ0IDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdlbmQgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZHJhZ2VudGVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdvdmVyIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyYWdsZWF2ZSA6ICgnc2VsZiB0LCBkcmFnRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kcmFnIDogKCdzZWxmIHQsIGRyYWdFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmRyb3AgOiAoJ3NlbGYgdCwgZHJhZ0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uYW5pbWF0aW9uc3RhcnQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25lbmQgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25pdGVyYXRpb24gOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25hbmltYXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgYW5pbWF0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9ucnVuIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25zdGFydCA6ICgnc2VsZiB0LCB0cmFuc2l0aW9uRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb250cmFuc2l0aW9uZW5kIDogKCdzZWxmIHQsIHRyYW5zaXRpb25FdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnRyYW5zaXRpb25jYW5jZWwgOiAoJ3NlbGYgdCwgdHJhbnNpdGlvbkV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZ290cG9pbnRlcmNhcHR1cmUgOiAoJ3NlbGYgdCwgcG9pbnRlckV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ubG9zdHBvaW50ZXJjYXB0dXJlIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJlbnRlciA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyY2FuY2VsIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJkb3duIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJsZWF2ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVybW92ZSA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wb2ludGVyb3V0IDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJvdmVyIDogKCdzZWxmIHQsIHBvaW50ZXJFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBvaW50ZXJ1cCA6ICgnc2VsZiB0LCBwb2ludGVyRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZGlzcGF0Y2hFdmVudCA6IGV2ZW50IHQgLT4gYm9vbCB0IG1ldGhcbmVuZFxuXG5hbmQgcG9wU3RhdGVFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIHN0YXRlIDogSnMuVW5zYWZlLmFueSByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHBvaW50ZXJFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IG1vdXNlRXZlbnRcblxuICBtZXRob2QgcG9pbnRlcklkIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlc3N1cmUgOiBudW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhbmdlbnRpYWxQcmVzc3VyZSA6IG51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGlsdFggOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aWx0WSA6IGludCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHR3aXN0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcG9pbnRlclR5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlzUHJpbWFyeSA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGtleSA6IGpzX3N0cmluZyB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9sZFZhbHVlIDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VmFsdWUgOiBqc19zdHJpbmcgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cmwgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0b3JhZ2VBcmVhIDogc3RvcmFnZSB0IG9wdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIHN0b3JhZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGtleSA6IGludCAtPiBqc19zdHJpbmcgdCBvcHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDoganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc2V0SXRlbSA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZW1vdmVJdGVtIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNsZWFyIDogdW5pdCBtZXRoXG5lbmRcblxuYW5kIGhhc2hDaGFuZ2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIG9sZFVSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV3VVJMIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBhbmltYXRpb25FdmVudCA9IG9iamVjdFxuICBpbmhlcml0IGV2ZW50XG5cbiAgbWV0aG9kIGFuaW1hdGlvbk5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB0cmFuc2l0aW9uRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBwcm9wZXJ0eU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVsYXBzZWRUaW1lIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwc2V1ZG9FbGVtZW50IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBtZWRpYUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcbmVuZFxuXG5hbmQgbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IFVuc2FmZS5hbnkgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc291cmNlIDogVW5zYWZlLmFueSBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCBub2RlU2VsZWN0b3IgPSBvYmplY3RcbiAgbWV0aG9kIHF1ZXJ5U2VsZWN0b3IgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2QgcXVlcnlTZWxlY3RvckFsbCA6IGpzX3N0cmluZyB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuZW5kXG5cbmFuZCB0b2tlbkxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGl0ZW0gOiBpbnQgLT4ganNfc3RyaW5nIHQgb3B0ZGVmIG1ldGhcblxuICBtZXRob2QgY29udGFpbnMgOiBqc19zdHJpbmcgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBhZGQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRvZ2dsZSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmaWVyIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmFuZCBlbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tLmVsZW1lbnRcblxuICBpbmhlcml0IG5vZGVTZWxlY3RvclxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGl0bGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxhbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRpciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2xhc3NOYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGFzc0xpc3QgOiB0b2tlbkxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsb3Nlc3QgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IHQgb3B0IG1ldGhcblxuICBtZXRob2Qgc3R5bGUgOiBjc3NTdHlsZURlY2xhcmF0aW9uIHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhUTUwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG91dGVySFRNTCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dENvbnRlbnQgOiBqc19zdHJpbmcgdCBvcHQgcHJvcFxuXG4gIG1ldGhvZCBpbm5lclRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNsaWVudExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGllbnRXaWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNsaWVudEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9mZnNldExlZnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRUb3AgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRQYXJlbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb2Zmc2V0V2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvZmZzZXRIZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxMZWZ0IDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsVG9wIDogaW50IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsV2lkdGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzY3JvbGxIZWlnaHQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBnZXRDbGllbnRSZWN0cyA6IGNsaWVudFJlY3RMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgOiBjbGllbnRSZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBzY3JvbGxJbnRvVmlldyA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpY2sgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9jdXMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYmx1ciA6IHVuaXQgbWV0aFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5hbmQgY2xpZW50UmVjdCA9IG9iamVjdFxuICBtZXRob2QgdG9wIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByaWdodCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm90dG9tIDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsZWZ0IDogbnVtYmVyX3QgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IG51bWJlcl90IG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGNsaWVudFJlY3RMaXN0ID0gb2JqZWN0XG4gIG1ldGhvZCBsZW5ndGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpdGVtIDogaW50IC0+IGNsaWVudFJlY3QgdCBvcHQgbWV0aFxuZW5kXG5cbmxldCBub19oYW5kbGVyIDogKCdhLCAnYikgZXZlbnRfbGlzdGVuZXIgPSBEb20ubm9faGFuZGxlclxuXG5sZXQgaGFuZGxlciA9IERvbS5oYW5kbGVyXG5cbmxldCBmdWxsX2hhbmRsZXIgPSBEb20uZnVsbF9oYW5kbGVyXG5cbmxldCBpbnZva2VfaGFuZGxlciA9IERvbS5pbnZva2VfaGFuZGxlclxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0eXAgPSAnYSBEb20uRXZlbnQudHlwXG5cbiAgbGV0IGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJjbGlja1wiXG5cbiAgbGV0IGNvcHkgPSBEb20uRXZlbnQubWFrZSBcImNvcHlcIlxuXG4gIGxldCBjdXQgPSBEb20uRXZlbnQubWFrZSBcImN1dFwiXG5cbiAgbGV0IHBhc3RlID0gRG9tLkV2ZW50Lm1ha2UgXCJwYXN0ZVwiXG5cbiAgbGV0IGRibGNsaWNrID0gRG9tLkV2ZW50Lm1ha2UgXCJkYmxjbGlja1wiXG5cbiAgbGV0IG1vdXNlZG93biA9IERvbS5FdmVudC5tYWtlIFwibW91c2Vkb3duXCJcblxuICBsZXQgbW91c2V1cCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V1cFwiXG5cbiAgbGV0IG1vdXNlb3ZlciA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdmVyXCJcblxuICBsZXQgbW91c2Vtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJtb3VzZW1vdmVcIlxuXG4gIGxldCBtb3VzZW91dCA9IERvbS5FdmVudC5tYWtlIFwibW91c2VvdXRcIlxuXG4gIGxldCBrZXlwcmVzcyA9IERvbS5FdmVudC5tYWtlIFwia2V5cHJlc3NcIlxuXG4gIGxldCBrZXlkb3duID0gRG9tLkV2ZW50Lm1ha2UgXCJrZXlkb3duXCJcblxuICBsZXQga2V5dXAgPSBEb20uRXZlbnQubWFrZSBcImtleXVwXCJcblxuICBsZXQgbW91c2V3aGVlbCA9IERvbS5FdmVudC5tYWtlIFwibW91c2V3aGVlbFwiXG5cbiAgbGV0IHdoZWVsID0gRG9tLkV2ZW50Lm1ha2UgXCJ3aGVlbFwiXG5cbiAgbGV0IF9ET01Nb3VzZVNjcm9sbCA9IERvbS5FdmVudC5tYWtlIFwiRE9NTW91c2VTY3JvbGxcIlxuXG4gIGxldCB0b3VjaHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaHN0YXJ0XCJcblxuICBsZXQgdG91Y2htb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0b3VjaG1vdmVcIlxuXG4gIGxldCB0b3VjaGVuZCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hlbmRcIlxuXG4gIGxldCB0b3VjaGNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidG91Y2hjYW5jZWxcIlxuXG4gIGxldCBkcmFnc3RhcnQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdzdGFydFwiXG5cbiAgbGV0IGRyYWdlbmQgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbmRcIlxuXG4gIGxldCBkcmFnZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcImRyYWdlbnRlclwiXG5cbiAgbGV0IGRyYWdvdmVyID0gRG9tLkV2ZW50Lm1ha2UgXCJkcmFnb3ZlclwiXG5cbiAgbGV0IGRyYWdsZWF2ZSA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ2xlYXZlXCJcblxuICBsZXQgZHJhZyA9IERvbS5FdmVudC5tYWtlIFwiZHJhZ1wiXG5cbiAgbGV0IGRyb3AgPSBEb20uRXZlbnQubWFrZSBcImRyb3BcIlxuXG4gIGxldCBoYXNoY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJoYXNoY2hhbmdlXCJcblxuICBsZXQgY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJjaGFuZ2VcIlxuXG4gIGxldCBpbnB1dCA9IERvbS5FdmVudC5tYWtlIFwiaW5wdXRcIlxuXG4gIGxldCB0aW1ldXBkYXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJ0aW1ldXBkYXRlXCJcblxuICBsZXQgc3VibWl0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzdWJtaXRcIlxuXG4gIGxldCBzY3JvbGwgPSBEb20uRXZlbnQubWFrZSBcInNjcm9sbFwiXG5cbiAgbGV0IGZvY3VzID0gRG9tLkV2ZW50Lm1ha2UgXCJmb2N1c1wiXG5cbiAgbGV0IGJsdXIgPSBEb20uRXZlbnQubWFrZSBcImJsdXJcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdW5sb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJ1bmxvYWRcIlxuXG4gIGxldCBiZWZvcmV1bmxvYWQgPSBEb20uRXZlbnQubWFrZSBcImJlZm9yZXVubG9hZFwiXG5cbiAgbGV0IHJlc2l6ZSA9IERvbS5FdmVudC5tYWtlIFwicmVzaXplXCJcblxuICBsZXQgb3JpZW50YXRpb25jaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcIm9yaWVudGF0aW9uY2hhbmdlXCJcblxuICBsZXQgcG9wc3RhdGUgPSBEb20uRXZlbnQubWFrZSBcInBvcHN0YXRlXCJcblxuICBsZXQgZXJyb3IgPSBEb20uRXZlbnQubWFrZSBcImVycm9yXCJcblxuICBsZXQgYWJvcnQgPSBEb20uRXZlbnQubWFrZSBcImFib3J0XCJcblxuICBsZXQgc2VsZWN0ID0gRG9tLkV2ZW50Lm1ha2UgXCJzZWxlY3RcIlxuXG4gIGxldCBvbmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9ubGluZVwiXG5cbiAgbGV0IG9mZmxpbmUgPSBEb20uRXZlbnQubWFrZSBcIm9mZmxpbmVcIlxuXG4gIGxldCBjaGVja2luZyA9IERvbS5FdmVudC5tYWtlIFwiY2hlY2tpbmdcIlxuXG4gIGxldCBub3VwZGF0ZSA9IERvbS5FdmVudC5tYWtlIFwibm91cGRhdGVcIlxuXG4gIGxldCBkb3dubG9hZGluZyA9IERvbS5FdmVudC5tYWtlIFwiZG93bmxvYWRpbmdcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCB1cGRhdGVyZWFkeSA9IERvbS5FdmVudC5tYWtlIFwidXBkYXRlcmVhZHlcIlxuXG4gIGxldCBjYWNoZWQgPSBEb20uRXZlbnQubWFrZSBcImNhY2hlZFwiXG5cbiAgbGV0IG9ic29sZXRlID0gRG9tLkV2ZW50Lm1ha2UgXCJvYnNvbGV0ZVwiXG5cbiAgbGV0IGRvbUNvbnRlbnRMb2FkZWQgPSBEb20uRXZlbnQubWFrZSBcIkRPTUNvbnRlbnRMb2FkZWRcIlxuXG4gIGxldCBhbmltYXRpb25zdGFydCA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uc3RhcnRcIlxuXG4gIGxldCBhbmltYXRpb25lbmQgPSBEb20uRXZlbnQubWFrZSBcImFuaW1hdGlvbmVuZFwiXG5cbiAgbGV0IGFuaW1hdGlvbml0ZXJhdGlvbiA9IERvbS5FdmVudC5tYWtlIFwiYW5pbWF0aW9uaXRlcmF0aW9uXCJcblxuICBsZXQgYW5pbWF0aW9uY2FuY2VsID0gRG9tLkV2ZW50Lm1ha2UgXCJhbmltYXRpb25jYW5jZWxcIlxuXG4gIGxldCB0cmFuc2l0aW9ucnVuID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9ucnVuXCJcblxuICBsZXQgdHJhbnNpdGlvbnN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uc3RhcnRcIlxuXG4gIGxldCB0cmFuc2l0aW9uZW5kID0gRG9tLkV2ZW50Lm1ha2UgXCJ0cmFuc2l0aW9uZW5kXCJcblxuICBsZXQgdHJhbnNpdGlvbmNhbmNlbCA9IERvbS5FdmVudC5tYWtlIFwidHJhbnNpdGlvbmNhbmNlbFwiXG5cbiAgbGV0IGNhbnBsYXkgPSBEb20uRXZlbnQubWFrZSBcImNhbnBsYXlcIlxuXG4gIGxldCBjYW5wbGF5dGhyb3VnaCA9IERvbS5FdmVudC5tYWtlIFwiY2FucGxheXRocm91Z2hcIlxuXG4gIGxldCBkdXJhdGlvbmNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwiZHVyYXRpb25jaGFuZ2VcIlxuXG4gIGxldCBlbXB0aWVkID0gRG9tLkV2ZW50Lm1ha2UgXCJlbXB0aWVkXCJcblxuICBsZXQgZW5kZWQgPSBEb20uRXZlbnQubWFrZSBcImVuZGVkXCJcblxuICBsZXQgZ290cG9pbnRlcmNhcHR1cmUgPSBEb20uRXZlbnQubWFrZSBcImdvdHBvaW50ZXJjYXB0dXJlXCJcblxuICBsZXQgbG9hZGVkZGF0YSA9IERvbS5FdmVudC5tYWtlIFwibG9hZGVkZGF0YVwiXG5cbiAgbGV0IGxvYWRlZG1ldGFkYXRhID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkZWRtZXRhZGF0YVwiXG5cbiAgbGV0IGxvYWRzdGFydCA9IERvbS5FdmVudC5tYWtlIFwibG9hZHN0YXJ0XCJcblxuICBsZXQgbG9zdHBvaW50ZXJjYXB0dXJlID0gRG9tLkV2ZW50Lm1ha2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIlxuXG4gIGxldCBtZXNzYWdlID0gRG9tLkV2ZW50Lm1ha2UgXCJtZXNzYWdlXCJcblxuICBsZXQgcGF1c2UgPSBEb20uRXZlbnQubWFrZSBcInBhdXNlXCJcblxuICBsZXQgcGxheSA9IERvbS5FdmVudC5tYWtlIFwicGxheVwiXG5cbiAgbGV0IHBsYXlpbmcgPSBEb20uRXZlbnQubWFrZSBcInBsYXlpbmdcIlxuXG4gIGxldCBwb2ludGVyZW50ZXIgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJlbnRlclwiXG5cbiAgbGV0IHBvaW50ZXJjYW5jZWwgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJjYW5jZWxcIlxuXG4gIGxldCBwb2ludGVyZG93biA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcmRvd25cIlxuXG4gIGxldCBwb2ludGVybGVhdmUgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJsZWF2ZVwiXG5cbiAgbGV0IHBvaW50ZXJtb3ZlID0gRG9tLkV2ZW50Lm1ha2UgXCJwb2ludGVybW92ZVwiXG5cbiAgbGV0IHBvaW50ZXJvdXQgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJvdXRcIlxuXG4gIGxldCBwb2ludGVyb3ZlciA9IERvbS5FdmVudC5tYWtlIFwicG9pbnRlcm92ZXJcIlxuXG4gIGxldCBwb2ludGVydXAgPSBEb20uRXZlbnQubWFrZSBcInBvaW50ZXJ1cFwiXG5cbiAgbGV0IHJhdGVjaGFuZ2UgPSBEb20uRXZlbnQubWFrZSBcInJhdGVjaGFuZ2VcIlxuXG4gIGxldCBzZWVrZWQgPSBEb20uRXZlbnQubWFrZSBcInNlZWtlZFwiXG5cbiAgbGV0IHNlZWtpbmcgPSBEb20uRXZlbnQubWFrZSBcInNlZWtpbmdcIlxuXG4gIGxldCBzdGFsbGVkID0gRG9tLkV2ZW50Lm1ha2UgXCJzdGFsbGVkXCJcblxuICBsZXQgc3VzcGVuZCA9IERvbS5FdmVudC5tYWtlIFwic3VzcGVuZFwiXG5cbiAgbGV0IHZvbHVtZWNoYW5nZSA9IERvbS5FdmVudC5tYWtlIFwidm9sdW1lY2hhbmdlXCJcblxuICBsZXQgd2FpdGluZyA9IERvbS5FdmVudC5tYWtlIFwid2FpdGluZ1wiXG5cbiAgbGV0IG1ha2UgPSBEb20uRXZlbnQubWFrZVxuZW5kXG5cbnR5cGUgZXZlbnRfbGlzdGVuZXJfaWQgPSBEb20uZXZlbnRfbGlzdGVuZXJfaWRcblxubGV0IGFkZEV2ZW50TGlzdGVuZXIgPSBEb20uYWRkRXZlbnRMaXN0ZW5lclxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zID0gRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuXG5sZXQgcmVtb3ZlRXZlbnRMaXN0ZW5lciA9IERvbS5yZW1vdmVFdmVudExpc3RlbmVyXG5cbmxldCBjcmVhdGVDdXN0b21FdmVudCA9IERvbS5jcmVhdGVDdXN0b21FdmVudFxuXG5jbGFzcyB0eXBlIFsnbm9kZV0gY29sbGVjdGlvbiA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiAnbm9kZSB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIG5hbWVkSXRlbSA6IGpzX3N0cmluZyB0IC0+ICdub2RlIHQgb3B0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGh0bWxFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGhlYWRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBwcm9maWxlIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGlua0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3Jvc3NvcmlnaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtZWRpYSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVsIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZXYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0aXRsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHRleHQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtZXRhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY29udGVudCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHR0cEVxdWl2IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzY2hlbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBiYXNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc3R5bGVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJvZHlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGZvcm1FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBlbGVtZW50cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXB0Q2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBlbmN0eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfbWV0aG9kIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0YXJnZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN1Ym1pdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXNldCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvbnN1Ym1pdCA6ICgnc2VsZiB0LCBzdWJtaXRFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0R3JvdXBFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkaXNhYmxlZCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGxhYmVsIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgb3B0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG9wdEdyb3VwRWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkZWZhdWx0U2VsZWN0ZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCB0ZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbmRleCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBzZWxlY3RFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3RlZEluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxlbmd0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG9wdGlvbnMgOiBvcHRpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzaXplIDogaW50IHByb3BcblxuICBtZXRob2QgdGFiSW5kZXggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBhZGQgOiAjb3B0R3JvdXBFbGVtZW50IHQgLT4gI29wdEdyb3VwRWxlbWVudCB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZXF1aXJlZCA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNoYW5nZSA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uaW5wdXQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgaW5wdXRFbGVtZW50ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGRlZmF1bHRWYWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmYXVsdENoZWNrZWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2VwdCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYWx0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaGVja2VkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXhMZW5ndGggOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHJlcXVpcmVkIDogYm9vbCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNpemUgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNlbGVjdCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxlcyA6IEZpbGUuZmlsZUxpc3QgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGFjZWhvbGRlciA6IGpzX3N0cmluZyB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlbGVjdGlvbkRpcmVjdGlvbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uU3RhcnQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRleHRBcmVhRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBkZWZhdWx0VmFsdWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29scyA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGRpc2FibGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZE9ubHkgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogaW50IHByb3BcblxuICBtZXRob2Qgc2VsZWN0aW9uRGlyZWN0aW9uIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25FbmQgOiBpbnQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3Rpb25TdGFydCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzZWxlY3QgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWlyZWQgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgcGxhY2Vob2xkZXIgOiBqc19zdHJpbmcgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlbGVjdCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2hhbmdlIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25pbnB1dCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uYmx1ciA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25mb2N1cyA6ICgnc2VsZiB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGJ1dHRvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZvcm0gOiBmb3JtRWxlbWVudCB0IG9wdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFjY2Vzc0tleSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0YWJJbmRleCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGxhYmVsRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBodG1sRm9yIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZmllbGRTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbGVnZW5kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgZm9ybSA6IGZvcm1FbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgdUxpc3RFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIG9MaXN0RWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBkTGlzdEVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbGlFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGRpdkVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgcGFyYWdyYXBoRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBoZWFkaW5nRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBxdW90ZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGNpdGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBwcmVFbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIGJyRWxlbWVudCA9IGVsZW1lbnRcblxuY2xhc3MgdHlwZSBockVsZW1lbnQgPSBlbGVtZW50XG5cbmNsYXNzIHR5cGUgbW9kRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2l0ZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGF0ZVRpbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhbmNob3JFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhY2Nlc3NLZXkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoYXJzZXQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZG93bmxvYWQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhyZWZsYW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByZWwgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJldiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGltYWdlRWxlbWVudCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdXNlTWFwIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBpc01hcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogaW50IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDogaW50IHByb3BcblxuICBtZXRob2QgbmF0dXJhbFdpZHRoIDogaW50IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hdHVyYWxIZWlnaHQgOiBpbnQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29tcGxldGUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWQgOiAoJ3NlbGYgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmVycm9yIDogKCdzZWxmIHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25hYm9ydCA6ICgnc2VsZiB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvYmplY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmb3JtIDogZm9ybUVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhcmNoaXZlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2RlQmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29kZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRhdGEgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRlY2xhcmUgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0YW5kYnkgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHVzZU1hcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgd2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50IDogRG9tLmVsZW1lbnQgRG9tLmRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBhcmFtRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcmVhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYWNjZXNzS2V5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvb3JkcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgbm9IcmVmIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2hhcGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRhYkluZGV4IDogaW50IHByb3BcblxuICBtZXRob2QgdGFyZ2V0IDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgbWFwRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgYXJlYXMgOiBhcmVhRWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyaXB0RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgdGV4dCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hhcnNldCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZGVmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIF90eXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3luYyA6IGJvb2wgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBlbWJlZEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX3R5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNlbGxFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjZWxsSW5kZXggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhYmJyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgYXhpcyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb2xTcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgaGVhZGVycyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93U3BhbiA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHNjb3BlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2QWxpZ24gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZVJvd0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIHJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2VjdGlvblJvd0luZGV4IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2VsbHMgOiB0YWJsZUNlbGxFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgaW5zZXJ0Q2VsbCA6IGludCAtPiB0YWJsZUNlbGxFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDZWxsIDogaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgdGFibGVDb2xFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBhbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2ggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNoT2ZmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcGFuIDogaW50IHByb3BcblxuICBtZXRob2QgdkFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHRhYmxlU2VjdGlvbkVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjaCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY2hPZmYgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHZBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgcm93cyA6IHRhYmxlUm93RWxlbWVudCBjb2xsZWN0aW9uIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbnNlcnRSb3cgOiBpbnQgLT4gdGFibGVSb3dFbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVSb3cgOiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuY2xhc3MgdHlwZSB0YWJsZUNhcHRpb25FbGVtZW50ID0gZWxlbWVudFxuXG5jbGFzcyB0eXBlIHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FwdGlvbiA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIHRIZWFkIDogdGFibGVTZWN0aW9uRWxlbWVudCB0IHByb3BcblxuICBtZXRob2QgdEZvb3QgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDogdGFibGVSb3dFbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRCb2RpZXMgOiB0YWJsZVNlY3Rpb25FbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsaWduIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBib3JkZXIgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNlbGxQYWRkaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjZWxsU3BhY2luZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZnJhbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHJ1bGVzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzdW1tYXJ5IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY3JlYXRlVEhlYWQgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUSGVhZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVURm9vdCA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVRGb290IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZUNhcHRpb24gOiB0YWJsZUNhcHRpb25FbGVtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVDYXB0aW9uIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluc2VydFJvdyA6IGludCAtPiB0YWJsZVJvd0VsZW1lbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJvdyA6IGludCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHRpbWVSYW5nZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxlbmd0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0IDogaW50IC0+IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZW5kXyA6IGludCAtPiBudW1iZXJfdCBtZXRoXG5lbmRcblxudHlwZSBuZXR3b3JrU3RhdGUgPVxuICB8IE5FVFdPUktfRU1QVFlcbiAgfCBORVRXT1JLX0lETEVcbiAgfCBORVRXT1JLX0xPQURJTkdcbiAgfCBORVRXT1JLX05PX1NPVVJDRVxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IEhBVkVfTk9USElOR1xuICB8IEhBVkVfTUVUQURBVEFcbiAgfCBIQVZFX0NVUlJFTlRfREFUQVxuICB8IEhBVkVfRlVUVVJFX0RBVEFcbiAgfCBIQVZFX0VOT1VHSF9EQVRBXG5cbigqIGh0dHA6Ly93d3cudzNzY2hvb2xzLmNvbS90YWdzL3JlZl9hdl9kb20uYXNwICopXG4oKiBvbmx5IGZlYXR1cmVzIHN1cHBvcnRlZCBieSBhbGwgYnJvd3Nlci4gKElFOSspICopXG5jbGFzcyB0eXBlIG1lZGlhRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBtZXRob2QgY2FuUGxheVR5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGxvYWQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGxheSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwYXVzZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhdXRvcGxheSA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIGJ1ZmZlcmVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udHJvbHMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50U3JjIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VGltZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHVyYXRpb24gOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVuZGVkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9vcCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhZ3JvdXAgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG11dGVkIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgbmV0d29ya1N0YXRlX2ludCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5ldHdvcmtTdGF0ZSA6IG5ldHdvcmtTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdXNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBsYXliYWNrUmF0ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcGxheWVkIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcHJlbG9hZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZV9pbnQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFkeVN0YXRlIDogcmVhZHlTdGF0ZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNlZWthYmxlIDogdGltZVJhbmdlcyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2Vla2luZyA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNyYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgdm9sdW1lIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXkgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNhbnBsYXl0aHJvdWdoIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25kdXJhdGlvbmNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW1wdGllZCA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZW5kZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZGRhdGEgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmxvYWRlZG1ldGFkYXRhIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25sb2Fkc3RhcnQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnBhdXNlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5IDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25wbGF5aW5nIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25yYXRlY2hhbmdlIDogKCdzZWxmIHQsIG1lZGlhRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25zZWVrZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnNlZWtpbmcgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN0YWxsZWQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnN1c3BlbmQgOiAoJ3NlbGYgdCwgbWVkaWFFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbnZvbHVtZWNoYW5nZSA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9ud2FpdGluZyA6ICgnc2VsZiB0LCBtZWRpYUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhdWRpb0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBtZWRpYUVsZW1lbnRcbmVuZFxuXG5jbGFzcyB0eXBlIHZpZGVvRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IG1lZGlhRWxlbWVudFxuZW5kXG5cbnR5cGUgY29udGV4dCA9IGpzX3N0cmluZyB0XG5cbmxldCBfMmRfID0gSnMuc3RyaW5nIFwiMmRcIlxuXG50eXBlIGNhbnZhc1BhdHRlcm5cblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCB3aWR0aCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCBwcm9wXG5cbiAgbWV0aG9kIHRvRGF0YVVSTCA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgdG9EYXRhVVJMX3R5cGUgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHRvRGF0YVVSTF90eXBlX2NvbXByZXNzaW9uIDoganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gY2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHQgbWV0aFxuZW5kXG5cbmFuZCBjYW52YXNSZW5kZXJpbmdDb250ZXh0MkQgPSBvYmplY3RcbiAgbWV0aG9kIGNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNhdmUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVzdG9yZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByb3RhdGUgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdHJhbnNsYXRlIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zZm9ybSA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdsb2JhbEFscGhhIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBnbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgc3Ryb2tlU3R5bGVfZ3JhZGllbnQgOiBjYW52YXNHcmFkaWVudCB0IHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0cm9rZVN0eWxlX3BhdHRlcm4gOiBjYW52YXNQYXR0ZXJuIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlIDoganNfc3RyaW5nIHQgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsbFN0eWxlX2dyYWRpZW50IDogY2FudmFzR3JhZGllbnQgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWxsU3R5bGVfcGF0dGVybiA6IGNhbnZhc1BhdHRlcm4gdCB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjcmVhdGVMaW5lYXJHcmFkaWVudCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gY2FudmFzR3JhZGllbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhZGlhbEdyYWRpZW50IDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBjYW52YXNHcmFkaWVudCB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUGF0dGVybiA6IGltYWdlRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVBhdHRlcm5fZnJvbUNhbnZhcyA6IGNhbnZhc0VsZW1lbnQgdCAtPiBqc19zdHJpbmcgdCAtPiBjYW52YXNQYXR0ZXJuIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVQYXR0ZXJuX2Zyb21WaWRlbyA6IHZpZGVvRWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNhbnZhc1BhdHRlcm4gdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmVXaWR0aCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGluZUNhcCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbGluZUpvaW4gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1pdGVyTGltaXQgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd09mZnNldFkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0JsdXIgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHNoYWRvd0NvbG9yIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjbGVhclJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbFJlY3QgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlUmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZWdpblBhdGggOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VQYXRoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1vdmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcXVhZHJhdGljQ3VydmVUbyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiZXppZXJDdXJ2ZVRvIDpcbiAgICBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXJjVG8gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVjdCA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhcmMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZWxsaXBzZSA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBib29sIHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmlsbCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xpcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpc1BvaW50SW5QYXRoIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IG1ldGhcblxuICBtZXRob2QgZHJhd0ZvY3VzUmluZyA6ICNlbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gYm9vbCB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGZvbnQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHRleHRBbGlnbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgdGV4dEJhc2VsaW5lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmaWxsVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmaWxsVGV4dF93aXRoV2lkdGggOiBqc19zdHJpbmcgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3Ryb2tlVGV4dCA6IGpzX3N0cmluZyB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdHJva2VUZXh0X3dpdGhXaWR0aCA6XG4gICAganNfc3RyaW5nIHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG1lYXN1cmVUZXh0IDoganNfc3RyaW5nIHQgLT4gdGV4dE1ldHJpY3MgdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZSA6IGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2Vfd2l0aFNpemUgOlxuICAgIGltYWdlRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnVsbCA6XG4gICAgICAgaW1hZ2VFbGVtZW50IHRcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mcm9tQ2FudmFzIDogY2FudmFzRWxlbWVudCB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbUNhbnZhc1dpdGhTaXplIDpcbiAgICBjYW52YXNFbGVtZW50IHQgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRyYXdJbWFnZV9mdWxsRnJvbUNhbnZhcyA6XG4gICAgICAgY2FudmFzRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3SW1hZ2VfZnJvbVZpZGVvV2l0aFZpZGVvIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Zyb21WaWRlb1dpdGhTaXplIDpcbiAgICB2aWRlb0VsZW1lbnQgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0ltYWdlX2Z1bGxGcm9tVmlkZW8gOlxuICAgICAgIHZpZGVvRWxlbWVudCB0XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVJbWFnZURhdGEgOiBpbnQgLT4gaW50IC0+IGltYWdlRGF0YSB0IG1ldGhcblxuICBtZXRob2QgZ2V0SW1hZ2VEYXRhIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gaW1hZ2VEYXRhIHQgbWV0aFxuXG4gIG1ldGhvZCBwdXRJbWFnZURhdGEgOiBpbWFnZURhdGEgdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5hbmQgY2FudmFzR3JhZGllbnQgPSBvYmplY3RcbiAgbWV0aG9kIGFkZENvbG9yU3RvcCA6IG51bWJlcl90IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCB0ZXh0TWV0cmljcyA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGltYWdlRGF0YSA9IG9iamVjdFxuICBtZXRob2Qgd2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkYXRhIDogY2FudmFzUGl4ZWxBcnJheSB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgY2FudmFzUGl4ZWxBcnJheSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5leHRlcm5hbCBwaXhlbF9nZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCA9IFwiY2FtbF9qc19nZXRcIlxuXG5leHRlcm5hbCBwaXhlbF9zZXQgOiBjYW52YXNQaXhlbEFycmF5IHQgLT4gaW50IC0+IGludCAtPiB1bml0ID0gXCJjYW1sX2pzX3NldFwiXG5cbmNsYXNzIHR5cGUgcmFuZ2UgPSBvYmplY3RcbiAgbWV0aG9kIGNvbGxhcHNlZCA6IGJvb2wgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN0YXJ0T2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRDb250YWluZXIgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZW5kQ29udGFpbmVyIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFN0YXJ0IDogRG9tLm5vZGUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTdGFydEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEVuZEJlZm9yZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFN0YXJ0QWZ0ZXIgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRFbmRBZnRlciA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdE5vZGUgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZWxlY3ROb2RlQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xsYXBzZSA6IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvbmVDb250ZW50cyA6IERvbS5kb2N1bWVudEZyYWdtZW50IHQgbWV0aFxuXG4gIG1ldGhvZCBleHRyYWN0Q29udGVudHMgOiBEb20uZG9jdW1lbnRGcmFnbWVudCB0IG1ldGhcblxuICBtZXRob2QgZGVsZXRlQ29udGVudHMgOiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5zZXJ0Tm9kZSA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN1cnJvdW5kQ29udGVudHMgOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9uZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHRvU3RyaW5nIDoganNfc3RyaW5nIHQgbWV0aFxuZW5kXG5cbigqKiBJbmZvcm1hdGlvbiBvbiBjdXJyZW50IHNlbGVjdGlvbiAqKVxuY2xhc3MgdHlwZSBzZWxlY3Rpb24gPSBvYmplY3RcbiAgbWV0aG9kIGFuY2hvck5vZGUgOiBEb20ubm9kZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9yT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZm9jdXNOb2RlIDogRG9tLm5vZGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvY3VzT2Zmc2V0IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXNDb2xsYXBzZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZUNvdW50IDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0UmFuZ2VBdCA6IGludCAtPiByYW5nZSB0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2UgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGV4dGVuZCA6IERvbS5ub2RlIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBtb2RpZnkgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29sbGFwc2VUb1N0YXJ0IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbGxhcHNlVG9FbmQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VsZWN0QWxsQ2hpbGRyZW4gOiBEb20ubm9kZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhZGRSYW5nZSA6IHJhbmdlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHJlbW92ZVJhbmdlIDogcmFuZ2UgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVtb3ZlQWxsUmFuZ2VzIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUZyb21Eb2N1bWVudCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb250YWluc05vZGUgOiBEb20ubm9kZSB0IC0+IGJvb2wgdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCB0b1N0cmluZyA6IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIGRvY3VtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgW2VsZW1lbnRdIERvbS5kb2N1bWVudFxuXG4gIGluaGVyaXQgbm9kZVNlbGVjdG9yXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVhZCA6IGhlYWRFbGVtZW50IHQgcHJvcFxuXG4gIG1ldGhvZCBib2R5IDogYm9keUVsZW1lbnQgdCBwcm9wXG5cbiAgbWV0aG9kIGRvY3VtZW50RWxlbWVudCA6IGh0bWxFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbWFnZXMgOiBpbWFnZUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGV0cyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGlua3MgOiBlbGVtZW50IGNvbGxlY3Rpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZvcm1zIDogZm9ybUVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5jaG9ycyA6IGVsZW1lbnQgY29sbGVjdGlvbiB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29va2llIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXNpZ25Nb2RlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcGVuXyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB3cml0ZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBleGVjQ29tbWFuZCA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVJhbmdlIDogcmFuZ2UgdCBtZXRoXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRzQnlDbGFzc05hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0RWxlbWVudHNCeU5hbWUgOiBqc19zdHJpbmcgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgYWN0aXZlRWxlbWVudCA6IGVsZW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoaWRkZW4gOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmZ1bGxzY3JlZW5jaGFuZ2UgOiAoZG9jdW1lbnQgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb253ZWJraXRmdWxsc2NyZWVuY2hhbmdlIDogKGRvY3VtZW50IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgaW5oZXJpdCBldmVudFRhcmdldFxuZW5kXG5cbnR5cGUgaW50ZXJ2YWxfaWRcblxudHlwZSB0aW1lb3V0X2lkXG5cbnR5cGUgYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWRcblxuY2xhc3MgdHlwZSBsb2NhdGlvbiA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcHJvdG9jb2wgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3QgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGhvc3RuYW1lIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBvcmlnaW4gOiBqc19zdHJpbmcgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwb3J0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBwYXRobmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2VhcmNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoYXNoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBhc3NpZ24gOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZSA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCByZWxvYWQgOiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgbG9jYXRpb25fb3JpZ2luIChsb2MgOiBsb2NhdGlvbiB0KSA9XG4gIE9wdGRlZi5jYXNlXG4gICAgbG9jIyMub3JpZ2luXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHByb3RvY29sID0gbG9jIyMucHJvdG9jb2wgaW5cbiAgICAgIGxldCBob3N0bmFtZSA9IGxvYyMjLmhvc3RuYW1lIGluXG4gICAgICBsZXQgcG9ydCA9IGxvYyMjLnBvcnQgaW5cbiAgICAgIGlmIHByb3RvY29sIyMubGVuZ3RoID0gMCAmJiBob3N0bmFtZSMjLmxlbmd0aCA9IDBcbiAgICAgIHRoZW4gSnMuc3RyaW5nIFwiXCJcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IG9yaWdpbiA9IHByb3RvY29sIyNjb25jYXRfMiAoSnMuc3RyaW5nIFwiLy9cIikgaG9zdG5hbWUgaW5cbiAgICAgICAgaWYgcG9ydCMjLmxlbmd0aCA+IDAgdGhlbiBvcmlnaW4jI2NvbmNhdF8yIChKcy5zdHJpbmcgXCI6XCIpIGxvYyMjLnBvcnQgZWxzZSBvcmlnaW4pXG4gICAgKGZ1biBvIC0+IG8pXG5cbmNsYXNzIHR5cGUgaGlzdG9yeSA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhdGUgOiBKcy5VbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ28gOiBpbnQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiYWNrIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZvcndhcmQgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcHVzaFN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVwbGFjZVN0YXRlIDogJ2EuICdhIC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5jbGFzcyB0eXBlIHVuZG9NYW5hZ2VyID0gb2JqZWN0IGVuZFxuXG5jbGFzcyB0eXBlIG5hdmlnYXRvciA9IG9iamVjdFxuICBtZXRob2QgYXBwQ29kZU5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcE5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFwcFZlcnNpb24gOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvb2tpZUVuYWJsZWQgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbkxpbmUgOiBib29sIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwbGF0Zm9ybSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdmVuZG9yIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1c2VyQWdlbnQgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdXNlckxhbmd1YWdlIDoganNfc3RyaW5nIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF4VG91Y2hQb2ludHMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgc2NyZWVuID0gb2JqZWN0XG4gIG1ldGhvZCB3aWR0aCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF2YWlsV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdmFpbEhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBhcHBsaWNhdGlvbkNhY2hlID0gb2JqZWN0XG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1cGRhdGUgOiB1bml0IG1ldGhcblxuICBtZXRob2QgYWJvcnQgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3dhcENhY2hlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIG9uY2hlY2tpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ubm91cGRhdGUgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uZG93bmxvYWRpbmcgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9ucHJvZ3Jlc3MgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9udXBkYXRlcmVhZHkgOiAoYXBwbGljYXRpb25DYWNoZSB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciBwcm9wXG5cbiAgbWV0aG9kIG9uY2FjaGVkIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ic29sZXRlIDogKGFwcGxpY2F0aW9uQ2FjaGUgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcbmVuZFxuXG5jbGFzcyB0eXBlIF9VUkwgPSBvYmplY3RcbiAgbWV0aG9kIGNyZWF0ZU9iamVjdFVSTCA6ICNGaWxlLmJsb2IgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHJldm9rZU9iamVjdFVSTCA6IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuZW5kXG5cbmNsYXNzIHR5cGUgd2luZG93ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRUYXJnZXRcblxuICBtZXRob2QgZG9jdW1lbnQgOiBkb2N1bWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYXBwbGljYXRpb25DYWNoZSA6IGFwcGxpY2F0aW9uQ2FjaGUgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGxvY2F0aW9uIDogbG9jYXRpb24gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhpc3RvcnkgOiBoaXN0b3J5IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB1bmRvTWFuYWdlciA6IHVuZG9NYW5hZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBuYXZpZ2F0b3IgOiBuYXZpZ2F0b3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldFNlbGVjdGlvbiA6IHNlbGVjdGlvbiB0IG1ldGhcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xvc2VkIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RvcCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBmb2N1cyA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBibHVyIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbCA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNjcm9sbEJ5IDogaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2Vzc2lvblN0b3JhZ2UgOiBzdG9yYWdlIHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbG9jYWxTdG9yYWdlIDogc3RvcmFnZSB0IG9wdGRlZiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRvcCA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcGFyZW50IDogd2luZG93IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmcmFtZUVsZW1lbnQgOiBlbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3Blbl8gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBvcHQgLT4gd2luZG93IHQgb3B0IG1ldGhcblxuICBtZXRob2QgYWxlcnQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29uZmlybSA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHByb21wdCA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIHByaW50IDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldEludGVydmFsIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gbnVtYmVyX3QgLT4gaW50ZXJ2YWxfaWQgbWV0aFxuXG4gIG1ldGhvZCBjbGVhckludGVydmFsIDogaW50ZXJ2YWxfaWQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRpbWVvdXQgOiAodW5pdCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiBudW1iZXJfdCAtPiB0aW1lb3V0X2lkIG1ldGhcblxuICBtZXRob2QgY2xlYXJUaW1lb3V0IDogdGltZW91dF9pZCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDpcbiAgICAobnVtYmVyX3QgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gYW5pbWF0aW9uX2ZyYW1lX3JlcXVlc3RfaWQgbWV0aFxuXG4gIG1ldGhvZCBjYW5jZWxBbmltYXRpb25GcmFtZSA6IGFuaW1hdGlvbl9mcmFtZV9yZXF1ZXN0X2lkIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzY3JlZW4gOiBzY3JlZW4gdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGlubmVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpbm5lckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG91dGVyV2lkdGggOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvdXRlckhlaWdodCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGUgOiAjZWxlbWVudCB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkU3R5bGVfcHNldWRvRWx0IDpcbiAgICAjZWxlbWVudCB0IC0+IGpzX3N0cmluZyB0IC0+IGNzc1N0eWxlRGVjbGFyYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGF0b2IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGJ0b2EgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIG9ubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJlZm9yZXVubG9hZCA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmJsdXIgOiAod2luZG93IHQsIGZvY3VzRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbmZvY3VzIDogKHdpbmRvdyB0LCBmb2N1c0V2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25yZXNpemUgOiAod2luZG93IHQsIGV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25vcmllbnRhdGlvbmNoYW5nZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbnBvcHN0YXRlIDogKHdpbmRvdyB0LCBwb3BTdGF0ZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHByb3BcblxuICBtZXRob2Qgb25oYXNoY2hhbmdlIDogKHdpbmRvdyB0LCBoYXNoQ2hhbmdlRXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgcHJvcFxuXG4gIG1ldGhvZCBvbm9ubGluZSA6ICh3aW5kb3cgdCwgZXZlbnQgdCkgZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25vZmZsaW5lIDogKHdpbmRvdyB0LCBldmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVVJMIDogX1VSTCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGV2aWNlUGl4ZWxSYXRpbyA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2luZG93IDogd2luZG93IHQgPSBKcy5VbnNhZmUuZ2xvYmFsXG5cbigqIFRoZSB0b3BsZXZlbCBvYmplY3QgKilcblxubGV0IGRvY3VtZW50ID0gd2luZG93IyMuZG9jdW1lbnRcblxubGV0IGdldEVsZW1lbnRCeUlkIGlkID1cbiAgSnMuT3B0LmNhc2VcbiAgICAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gcG5vZGUgLT4gcG5vZGUpXG5cbmxldCBnZXRFbGVtZW50QnlJZF9leG4gaWQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgKGZ1biAoKSAtPiBmYWlsd2l0aCAoUHJpbnRmLnNwcmludGYgXCJnZXRFbGVtZW50QnlJZF9leG46ICVTIG5vdCBmb3VuZFwiIGlkKSlcbiAgICAoZnVuIHBub2RlIC0+IHBub2RlKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfb3B0IGlkID0gSnMuT3B0LnRvX29wdGlvbiAoZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuXG5sZXQgZ2V0RWxlbWVudEJ5SWRfY29lcmNlIGlkIGNvZXJjZSA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKGRvY3VtZW50IyNnZXRFbGVtZW50QnlJZCAoSnMuc3RyaW5nIGlkKSlcbiAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgKGZ1biBlIC0+IEpzLk9wdC50b19vcHRpb24gKGNvZXJjZSBlKSlcblxuKCoqKiopXG5cbmNsYXNzIHR5cGUgZnJhbWVTZXRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBjb2xzIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCByb3dzIDoganNfc3RyaW5nIHQgcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZnJhbWVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIG1ldGhvZCBmcmFtZUJvcmRlciA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbG9uZ0Rlc2MgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1hcmdpbkhlaWdodCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luV2lkdGggOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5hbWUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5vUmVzaXplIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIGlGcmFtZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgbWV0aG9kIGZyYW1lQm9yZGVyIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBsb25nRGVzYyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbWFyZ2luSGVpZ2h0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBtYXJnaW5XaWR0aCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgc2Nyb2xsaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBzcmMgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnREb2N1bWVudCA6IGRvY3VtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29udGVudFdpbmRvdyA6IHdpbmRvdyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKioqKilcblxuKCpYWFggU2hvdWxkIHByb3ZpZGUgY3JlYXRpb24gZnVuY3Rpb25zIGEgbGEgbGFibGd0ay4uLiAqKVxuXG5sZXQgb3B0X2l0ZXIgeCBmID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgdiAtPiBmIHZcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKVxuXG5sZXQgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgbmFtZSA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIG5hbWUpXG5cbmxldCBjcmVhdGVFbGVtZW50U3ludGF4ID0gcmVmIGBVbmtub3duXG5cbmxldCByZWMgdW5zYWZlQ3JlYXRlRWxlbWVudEV4ID9fdHlwZSA/bmFtZSBkb2MgZWx0ID1cbiAgaWYgUG9seS4oX3R5cGUgPSBOb25lKSAmJiBQb2x5LihuYW1lID0gTm9uZSlcbiAgdGhlbiBKcy5VbnNhZmUuY29lcmNlIChjcmVhdGVFbGVtZW50IGRvYyBlbHQpXG4gIGVsc2VcbiAgICBtYXRjaCAhY3JlYXRlRWxlbWVudFN5bnRheCB3aXRoXG4gICAgfCBgU3RhbmRhcmQgLT5cbiAgICAgICAgbGV0IHJlcyA9IEpzLlVuc2FmZS5jb2VyY2UgKGNyZWF0ZUVsZW1lbnQgZG9jIGVsdCkgaW5cbiAgICAgICAgb3B0X2l0ZXIgX3R5cGUgKGZ1biB0IC0+IHJlcyMjLl90eXBlIDo9IHQpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPiByZXMjIy5uYW1lIDo9IG4pO1xuICAgICAgICByZXNcbiAgICB8IGBFeHRlbmRlZCAtPlxuICAgICAgICBsZXQgYSA9IG5ldyVqcyBKcy5hcnJheV9lbXB0eSBpblxuICAgICAgICBpZ25vcmUgKGEjI3B1c2hfMiAoSnMuc3RyaW5nIFwiPFwiKSAoSnMuc3RyaW5nIGVsdCkpO1xuICAgICAgICBvcHRfaXRlciBfdHlwZSAoZnVuIHQgLT5cbiAgICAgICAgICAgIGlnbm9yZSAoYSMjcHVzaF8zIChKcy5zdHJpbmcgXCIgdHlwZT1cXFwiXCIpIChodG1sX2VzY2FwZSB0KSAoSnMuc3RyaW5nIFwiXFxcIlwiKSkpO1xuICAgICAgICBvcHRfaXRlciBuYW1lIChmdW4gbiAtPlxuICAgICAgICAgICAgaWdub3JlIChhIyNwdXNoXzMgKEpzLnN0cmluZyBcIiBuYW1lPVxcXCJcIikgKGh0bWxfZXNjYXBlIG4pIChKcy5zdHJpbmcgXCJcXFwiXCIpKSk7XG4gICAgICAgIGlnbm9yZSAoYSMjcHVzaCAoSnMuc3RyaW5nIFwiPlwiKSk7XG4gICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgKGRvYyMjY3JlYXRlRWxlbWVudCAoYSMjam9pbiAoSnMuc3RyaW5nIFwiXCIpKSlcbiAgICB8IGBVbmtub3duIC0+XG4gICAgICAgIGNyZWF0ZUVsZW1lbnRTeW50YXggOj1cbiAgICAgICAgICBpZiB0cnlcbiAgICAgICAgICAgICAgIGxldCBlbCA6IGlucHV0RWxlbWVudCBKcy50ID1cbiAgICAgICAgICAgICAgICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgICAgICAgICAgICAgIChkb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIFwiPGlucHV0IG5hbWU9XFxcInhcXFwiPlwiKSlcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5lcXVhbHMgZWwjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSAoSnMuc3RyaW5nIFwiaW5wdXRcIilcbiAgICAgICAgICAgICAgICYmIEpzLmVxdWFscyBlbCMjLm5hbWUgKEpzLnN0cmluZyBcInhcIilcbiAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICB0aGVuIGBFeHRlbmRlZFxuICAgICAgICAgIGVsc2UgYFN0YW5kYXJkO1xuICAgICAgICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBlbHRcblxubGV0IGNyZWF0ZUh0bWwgZG9jIDogaHRtbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHRtbFwiXG5cbmxldCBjcmVhdGVIZWFkIGRvYyA6IGhlYWRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImhlYWRcIlxuXG5sZXQgY3JlYXRlTGluayBkb2MgOiBsaW5rRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJsaW5rXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVNZXRhIGRvYyA6IG1ldGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFcIlxuXG5sZXQgY3JlYXRlQmFzZSBkb2MgOiBiYXNlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiYXNlXCJcblxubGV0IGNyZWF0ZVN0eWxlIGRvYyA6IHN0eWxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzdHlsZVwiXG5cbmxldCBjcmVhdGVCb2R5IGRvYyA6IGJvZHlFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJvZHlcIlxuXG5sZXQgY3JlYXRlRm9ybSBkb2MgOiBmb3JtRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JtXCJcblxubGV0IGNyZWF0ZU9wdGdyb3VwIGRvYyA6IG9wdEdyb3VwRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRncm91cFwiXG5cbmxldCBjcmVhdGVPcHRpb24gZG9jIDogb3B0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvcHRpb25cIlxuXG5sZXQgY3JlYXRlU2VsZWN0ID9fdHlwZSA/bmFtZSBkb2MgOiBzZWxlY3RFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcInNlbGVjdFwiXG5cbmxldCBjcmVhdGVJbnB1dCA/X3R5cGUgP25hbWUgZG9jIDogaW5wdXRFbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImlucHV0XCJcblxubGV0IGNyZWF0ZVRleHRhcmVhID9fdHlwZSA/bmFtZSBkb2MgOiB0ZXh0QXJlYUVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnRFeCA/X3R5cGUgP25hbWUgZG9jIFwidGV4dGFyZWFcIlxuXG5sZXQgY3JlYXRlQnV0dG9uID9fdHlwZSA/bmFtZSBkb2MgOiBidXR0b25FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50RXggP190eXBlID9uYW1lIGRvYyBcImJ1dHRvblwiXG5cbmxldCBjcmVhdGVMYWJlbCBkb2MgOiBsYWJlbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGFiZWxcIlxuXG5sZXQgY3JlYXRlRmllbGRzZXQgZG9jIDogZmllbGRTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZpZWxkc2V0XCJcblxubGV0IGNyZWF0ZUxlZ2VuZCBkb2MgOiBsZWdlbmRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxlZ2VuZFwiXG5cbmxldCBjcmVhdGVVbCBkb2MgOiB1TGlzdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidWxcIlxuXG5sZXQgY3JlYXRlT2wgZG9jIDogb0xpc3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm9sXCJcblxubGV0IGNyZWF0ZURsIGRvYyA6IGRMaXN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkbFwiXG5cbmxldCBjcmVhdGVMaSBkb2MgOiBsaUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGlcIlxuXG5sZXQgY3JlYXRlRGl2IGRvYyA6IGRpdkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZGl2XCJcblxubGV0IGNyZWF0ZUVtYmVkIGRvYyA6IGVtYmVkRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJlbWJlZFwiXG5cbmxldCBjcmVhdGVQIGRvYyA6IHBhcmFncmFwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicFwiXG5cbmxldCBjcmVhdGVIMSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMVwiXG5cbmxldCBjcmVhdGVIMiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoMlwiXG5cbmxldCBjcmVhdGVIMyBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoM1wiXG5cbmxldCBjcmVhdGVINCBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNFwiXG5cbmxldCBjcmVhdGVINSBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNVwiXG5cbmxldCBjcmVhdGVINiBkb2MgOiBoZWFkaW5nRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJoNlwiXG5cbmxldCBjcmVhdGVRIGRvYyA6IHF1b3RlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJxXCJcblxubGV0IGNyZWF0ZUJsb2NrcXVvdGUgZG9jIDogcXVvdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImJsb2NrcXVvdGVcIlxuXG5sZXQgY3JlYXRlUHJlIGRvYyA6IHByZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicHJlXCJcblxubGV0IGNyZWF0ZUJyIGRvYyA6IGJyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJiclwiXG5cbmxldCBjcmVhdGVIciBkb2MgOiBockVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaHJcIlxuXG5sZXQgY3JlYXRlSW5zIGRvYyA6IG1vZEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaW5zXCJcblxubGV0IGNyZWF0ZURlbCBkb2MgOiBtb2RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlbFwiXG5cbmxldCBjcmVhdGVBIGRvYyA6IGFuY2hvckVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVJbWcgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltZ1wiXG5cbmxldCBjcmVhdGVPYmplY3QgZG9jIDogb2JqZWN0RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJvYmplY3RcIlxuXG5sZXQgY3JlYXRlUGFyYW0gZG9jIDogcGFyYW1FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBhcmFtXCJcblxubGV0IGNyZWF0ZU1hcCBkb2MgOiBtYXBFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hcFwiXG5cbmxldCBjcmVhdGVBcmVhIGRvYyA6IGFyZWFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFyZWFcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVRhYmxlIGRvYyA6IHRhYmxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0YWJsZVwiXG5cbmxldCBjcmVhdGVDYXB0aW9uIGRvYyA6IHRhYmxlQ2FwdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2FwdGlvblwiXG5cbmxldCBjcmVhdGVDb2wgZG9jIDogdGFibGVDb2xFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbFwiXG5cbmxldCBjcmVhdGVDb2xncm91cCBkb2MgOiB0YWJsZUNvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY29sZ3JvdXBcIlxuXG5sZXQgY3JlYXRlVGhlYWQgZG9jIDogdGFibGVTZWN0aW9uRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aGVhZFwiXG5cbmxldCBjcmVhdGVUZm9vdCBkb2MgOiB0YWJsZVNlY3Rpb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRmb290XCJcblxubGV0IGNyZWF0ZVRib2R5IGRvYyA6IHRhYmxlU2VjdGlvbkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGJvZHlcIlxuXG5sZXQgY3JlYXRlVHIgZG9jIDogdGFibGVSb3dFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyXCJcblxubGV0IGNyZWF0ZVRoIGRvYyA6IHRhYmxlQ2VsbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwidGhcIlxuXG5sZXQgY3JlYXRlVGQgZG9jIDogdGFibGVDZWxsRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0ZFwiXG5cbmxldCBjcmVhdGVTdWIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdWJcIlxuXG5sZXQgY3JlYXRlU3VwIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic3VwXCJcblxubGV0IGNyZWF0ZVNwYW4gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzcGFuXCJcblxubGV0IGNyZWF0ZVR0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwidHRcIlxuXG5sZXQgY3JlYXRlSSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImlcIlxuXG5sZXQgY3JlYXRlQiBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImJcIlxuXG5sZXQgY3JlYXRlQmlnIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiYmlnXCJcblxubGV0IGNyZWF0ZVNtYWxsIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwic21hbGxcIlxuXG5sZXQgY3JlYXRlRW0gZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJlbVwiXG5cbmxldCBjcmVhdGVTdHJvbmcgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzdHJvbmdcIlxuXG5sZXQgY3JlYXRlQ2l0ZSBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImNpdGVcIlxuXG5sZXQgY3JlYXRlRGZuIGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwiZGZuXCJcblxubGV0IGNyZWF0ZUNvZGUgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJjb2RlXCJcblxubGV0IGNyZWF0ZVNhbXAgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJzYW1wXCJcblxubGV0IGNyZWF0ZUtiZCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImtiZFwiXG5cbmxldCBjcmVhdGVWYXIgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJ2YXJcIlxuXG5sZXQgY3JlYXRlQWJiciBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFiYnJcIlxuXG5sZXQgY3JlYXRlRGQgZG9jID0gY3JlYXRlRWxlbWVudCBkb2MgXCJkZFwiXG5cbmxldCBjcmVhdGVEdCBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImR0XCJcblxubGV0IGNyZWF0ZU5vc2NyaXB0IGRvYyA9IGNyZWF0ZUVsZW1lbnQgZG9jIFwibm9zY3JpcHRcIlxuXG5sZXQgY3JlYXRlQWRkcmVzcyBkb2MgPSBjcmVhdGVFbGVtZW50IGRvYyBcImFkZHJlc3NcIlxuXG5sZXQgY3JlYXRlRnJhbWVzZXQgZG9jIDogZnJhbWVTZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZyYW1lc2V0XCJcblxubGV0IGNyZWF0ZUZyYW1lIGRvYyA6IGZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmcmFtZVwiXG5cbmxldCBjcmVhdGVJZnJhbWUgZG9jIDogaUZyYW1lRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJpZnJhbWVcIlxuXG5sZXQgY3JlYXRlQXVkaW8gZG9jIDogYXVkaW9FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImF1ZGlvXCJcblxubGV0IGNyZWF0ZVZpZGVvIGRvYyA6IGF1ZGlvRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2aWRlb1wiXG5cbmV4Y2VwdGlvbiBDYW52YXNfbm90X2F2YWlsYWJsZVxuXG5sZXQgY3JlYXRlQ2FudmFzIGRvYyA6IGNhbnZhc0VsZW1lbnQgdCA9XG4gIGxldCBjID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjYW52YXNcIiBpblxuICBpZiBub3QgKE9wdC50ZXN0IGMjIy5nZXRDb250ZXh0KSB0aGVuIHJhaXNlIENhbnZhc19ub3RfYXZhaWxhYmxlO1xuICBjXG5cbmxldCBodG1sX2VsZW1lbnQgOiBodG1sRWxlbWVudCB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSFRNTEVsZW1lbnRcblxubW9kdWxlIENvZXJjZVRvID0gc3RydWN0XG4gIGxldCBlbGVtZW50IDogI0RvbS5ub2RlIEpzLnQgLT4gZWxlbWVudCBKcy50IEpzLm9wdCA9XG4gICAgaWYgbm90IChKcy5PcHRkZWYudGVzdCAoZGVmIGh0bWxfZWxlbWVudCkpXG4gICAgdGhlblxuICAgICAgKCogaWUgPCA5IGRvZXMgbm90IGhhdmUgSFRNTEVsZW1lbnQ6IHdlIGhhdmUgdG8gY2hlYXQgdG8gY2hlY2tcbiAgICAgICAgIHRoYXQgc29tZXRoaW5nIGlzIGFuIGh0bWwgZWxlbWVudCAqKVxuICAgICAgZnVuIGUgLT5cbiAgICAgIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgKGRlZiAoSnMuVW5zYWZlLmNvZXJjZSBlKSMjLmlubmVySFRNTCkpXG4gICAgICB0aGVuIEpzLm51bGxcbiAgICAgIGVsc2UgSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2VcbiAgICAgIGZ1biBlIC0+XG4gICAgICBpZiBKcy5pbnN0YW5jZW9mIGUgaHRtbF9lbGVtZW50IHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKSBlbHNlIEpzLm51bGxcblxuICBsZXQgdW5zYWZlQ29lcmNlIHRhZyAoZSA6ICNlbGVtZW50IHQpID1cbiAgICBpZiBKcy5lcXVhbHMgZSMjLnRhZ05hbWUjI3RvTG93ZXJDYXNlIChKcy5zdHJpbmcgdGFnKVxuICAgIHRoZW4gSnMuc29tZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBhIGUgPSB1bnNhZmVDb2VyY2UgXCJhXCIgZVxuXG4gIGxldCBhcmVhIGUgPSB1bnNhZmVDb2VyY2UgXCJhcmVhXCIgZVxuXG4gIGxldCBiYXNlIGUgPSB1bnNhZmVDb2VyY2UgXCJiYXNlXCIgZVxuXG4gIGxldCBibG9ja3F1b3RlIGUgPSB1bnNhZmVDb2VyY2UgXCJibG9ja3F1b3RlXCIgZVxuXG4gIGxldCBib2R5IGUgPSB1bnNhZmVDb2VyY2UgXCJib2R5XCIgZVxuXG4gIGxldCBiciBlID0gdW5zYWZlQ29lcmNlIFwiYnJcIiBlXG5cbiAgbGV0IGJ1dHRvbiBlID0gdW5zYWZlQ29lcmNlIFwiYnV0dG9uXCIgZVxuXG4gIGxldCBjYW52YXMgZSA9IHVuc2FmZUNvZXJjZSBcImNhbnZhc1wiIGVcblxuICBsZXQgY2FwdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwiY2FwdGlvblwiIGVcblxuICBsZXQgY29sIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xcIiBlXG5cbiAgbGV0IGNvbGdyb3VwIGUgPSB1bnNhZmVDb2VyY2UgXCJjb2xncm91cFwiIGVcblxuICBsZXQgZGVsIGUgPSB1bnNhZmVDb2VyY2UgXCJkZWxcIiBlXG5cbiAgbGV0IGRpdiBlID0gdW5zYWZlQ29lcmNlIFwiZGl2XCIgZVxuXG4gIGxldCBkbCBlID0gdW5zYWZlQ29lcmNlIFwiZGxcIiBlXG5cbiAgbGV0IGZpZWxkc2V0IGUgPSB1bnNhZmVDb2VyY2UgXCJmaWVsZHNldFwiIGVcblxuICBsZXQgZW1iZWQgZSA9IHVuc2FmZUNvZXJjZSBcImVtYmVkXCIgZVxuXG4gIGxldCBmb3JtIGUgPSB1bnNhZmVDb2VyY2UgXCJmb3JtXCIgZVxuXG4gIGxldCBmcmFtZXNldCBlID0gdW5zYWZlQ29lcmNlIFwiZnJhbWVzZXRcIiBlXG5cbiAgbGV0IGZyYW1lIGUgPSB1bnNhZmVDb2VyY2UgXCJmcmFtZVwiIGVcblxuICBsZXQgaDEgZSA9IHVuc2FmZUNvZXJjZSBcImgxXCIgZVxuXG4gIGxldCBoMiBlID0gdW5zYWZlQ29lcmNlIFwiaDJcIiBlXG5cbiAgbGV0IGgzIGUgPSB1bnNhZmVDb2VyY2UgXCJoM1wiIGVcblxuICBsZXQgaDQgZSA9IHVuc2FmZUNvZXJjZSBcImg0XCIgZVxuXG4gIGxldCBoNSBlID0gdW5zYWZlQ29lcmNlIFwiaDVcIiBlXG5cbiAgbGV0IGg2IGUgPSB1bnNhZmVDb2VyY2UgXCJoNlwiIGVcblxuICBsZXQgaGVhZCBlID0gdW5zYWZlQ29lcmNlIFwiaGVhZFwiIGVcblxuICBsZXQgaHIgZSA9IHVuc2FmZUNvZXJjZSBcImhyXCIgZVxuXG4gIGxldCBodG1sIGUgPSB1bnNhZmVDb2VyY2UgXCJodG1sXCIgZVxuXG4gIGxldCBpZnJhbWUgZSA9IHVuc2FmZUNvZXJjZSBcImlmcmFtZVwiIGVcblxuICBsZXQgaW1nIGUgPSB1bnNhZmVDb2VyY2UgXCJpbWdcIiBlXG5cbiAgbGV0IGlucHV0IGUgPSB1bnNhZmVDb2VyY2UgXCJpbnB1dFwiIGVcblxuICBsZXQgaW5zIGUgPSB1bnNhZmVDb2VyY2UgXCJpbnNcIiBlXG5cbiAgbGV0IGxhYmVsIGUgPSB1bnNhZmVDb2VyY2UgXCJsYWJlbFwiIGVcblxuICBsZXQgbGVnZW5kIGUgPSB1bnNhZmVDb2VyY2UgXCJsZWdlbmRcIiBlXG5cbiAgbGV0IGxpIGUgPSB1bnNhZmVDb2VyY2UgXCJsaVwiIGVcblxuICBsZXQgbGluayBlID0gdW5zYWZlQ29lcmNlIFwibGlua1wiIGVcblxuICBsZXQgbWFwIGUgPSB1bnNhZmVDb2VyY2UgXCJtYXBcIiBlXG5cbiAgbGV0IG1ldGEgZSA9IHVuc2FmZUNvZXJjZSBcIm1ldGFcIiBlXG5cbiAgbGV0IF9vYmplY3QgZSA9IHVuc2FmZUNvZXJjZSBcIm9iamVjdFwiIGVcblxuICBsZXQgb2wgZSA9IHVuc2FmZUNvZXJjZSBcIm9sXCIgZVxuXG4gIGxldCBvcHRncm91cCBlID0gdW5zYWZlQ29lcmNlIFwib3B0Z3JvdXBcIiBlXG5cbiAgbGV0IG9wdGlvbiBlID0gdW5zYWZlQ29lcmNlIFwib3B0aW9uXCIgZVxuXG4gIGxldCBwIGUgPSB1bnNhZmVDb2VyY2UgXCJwXCIgZVxuXG4gIGxldCBwYXJhbSBlID0gdW5zYWZlQ29lcmNlIFwicGFyYW1cIiBlXG5cbiAgbGV0IHByZSBlID0gdW5zYWZlQ29lcmNlIFwicHJlXCIgZVxuXG4gIGxldCBxIGUgPSB1bnNhZmVDb2VyY2UgXCJxXCIgZVxuXG4gIGxldCBzY3JpcHQgZSA9IHVuc2FmZUNvZXJjZSBcInNjcmlwdFwiIGVcblxuICBsZXQgc2VsZWN0IGUgPSB1bnNhZmVDb2VyY2UgXCJzZWxlY3RcIiBlXG5cbiAgbGV0IHN0eWxlIGUgPSB1bnNhZmVDb2VyY2UgXCJzdHlsZVwiIGVcblxuICBsZXQgdGFibGUgZSA9IHVuc2FmZUNvZXJjZSBcInRhYmxlXCIgZVxuXG4gIGxldCB0Ym9keSBlID0gdW5zYWZlQ29lcmNlIFwidGJvZHlcIiBlXG5cbiAgbGV0IHRkIGUgPSB1bnNhZmVDb2VyY2UgXCJ0ZFwiIGVcblxuICBsZXQgdGV4dGFyZWEgZSA9IHVuc2FmZUNvZXJjZSBcInRleHRhcmVhXCIgZVxuXG4gIGxldCB0Zm9vdCBlID0gdW5zYWZlQ29lcmNlIFwidGZvb3RcIiBlXG5cbiAgbGV0IHRoIGUgPSB1bnNhZmVDb2VyY2UgXCJ0aFwiIGVcblxuICBsZXQgdGhlYWQgZSA9IHVuc2FmZUNvZXJjZSBcInRoZWFkXCIgZVxuXG4gIGxldCB0aXRsZSBlID0gdW5zYWZlQ29lcmNlIFwidGl0bGVcIiBlXG5cbiAgbGV0IHRyIGUgPSB1bnNhZmVDb2VyY2UgXCJ0clwiIGVcblxuICBsZXQgdWwgZSA9IHVuc2FmZUNvZXJjZSBcInVsXCIgZVxuXG4gIGxldCBhdWRpbyBlID0gdW5zYWZlQ29lcmNlIFwiYXVkaW9cIiBlXG5cbiAgbGV0IHZpZGVvIGUgPSB1bnNhZmVDb2VyY2UgXCJ2aWRlb1wiIGVcblxuICBsZXQgdW5zYWZlQ29lcmNlRXZlbnQgY29uc3RyIChldiA6ICNldmVudCB0KSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKGRlZiBjb25zdHIpICYmIEpzLmluc3RhbmNlb2YgZXYgY29uc3RyXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGV2KVxuICAgIGVsc2UgSnMubnVsbFxuXG4gIGxldCBtb3VzZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZUV2ZW50IGV2XG5cbiAgbGV0IGtleWJvYXJkRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX0tleWJvYXJkRXZlbnQgZXZcblxuICBsZXQgd2hlZWxFdmVudCBldiA9IHVuc2FmZUNvZXJjZUV2ZW50IEpzLlVuc2FmZS5nbG9iYWwjIy5fV2hlZWxFdmVudCBldlxuXG4gIGxldCBtb3VzZVNjcm9sbEV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9Nb3VzZVNjcm9sbEV2ZW50IGV2XG5cbiAgbGV0IHBvcFN0YXRlRXZlbnQgZXYgPSB1bnNhZmVDb2VyY2VFdmVudCBKcy5VbnNhZmUuZ2xvYmFsIyMuX1BvcFN0YXRlRXZlbnQgZXZcblxuICBsZXQgbWVzc2FnZUV2ZW50IGV2ID0gdW5zYWZlQ29lcmNlRXZlbnQgSnMuVW5zYWZlLmdsb2JhbCMjLl9NZXNzYWdlRXZlbnQgZXZcbmVuZFxuXG4oKioqKilcblxubGV0IGV2ZW50VGFyZ2V0ID0gRG9tLmV2ZW50VGFyZ2V0XG5cbmxldCBldmVudFJlbGF0ZWRUYXJnZXQgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIE9wdGRlZi5nZXQgZSMjLnJlbGF0ZWRUYXJnZXQgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggSnMudG9fc3RyaW5nIGUjIy5fdHlwZSB3aXRoXG4gICAgICB8IFwibW91c2VvdmVyXCIgLT4gT3B0ZGVmLmdldCBlIyMuZnJvbUVsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IFwibW91c2VvdXRcIiAtPiBPcHRkZWYuZ2V0IGUjIy50b0VsZW1lbnQgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICB8IF8gLT4gSnMubnVsbClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgKGUgOiAjbW91c2VFdmVudCB0KSA9XG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCBlIyMuY2xpZW50WCArIGJvZHkjIy5zY3JvbGxMZWZ0ICsgaHRtbCMjLnNjcm9sbExlZnRcbiAgLCBlIyMuY2xpZW50WSArIGJvZHkjIy5zY3JvbGxUb3AgKyBodG1sIyMuc2Nyb2xsVG9wIClcblxubGV0IGV2ZW50QWJzb2x1dGVQb3NpdGlvbiAoZSA6ICNtb3VzZUV2ZW50IHQpID1cbiAgT3B0ZGVmLmNhc2VcbiAgICBlIyMucGFnZVhcbiAgICAoZnVuICgpIC0+IGV2ZW50QWJzb2x1dGVQb3NpdGlvbicgZSlcbiAgICAoZnVuIHggLT4gT3B0ZGVmLmNhc2UgZSMjLnBhZ2VZIChmdW4gKCkgLT4gZXZlbnRBYnNvbHV0ZVBvc2l0aW9uJyBlKSAoZnVuIHkgLT4geCwgeSkpXG5cbmxldCBlbGVtZW50Q2xpZW50UG9zaXRpb24gKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCByID0gZSMjZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGluXG4gIGxldCBib2R5ID0gZG9jdW1lbnQjIy5ib2R5IGluXG4gIGxldCBodG1sID0gZG9jdW1lbnQjIy5kb2N1bWVudEVsZW1lbnQgaW5cbiAgKCB0cnVuY2F0ZSAoSnMudG9fZmxvYXQgciMjLmxlZnQpIC0gYm9keSMjLmNsaWVudExlZnQgLSBodG1sIyMuY2xpZW50TGVmdFxuICAsIHRydW5jYXRlIChKcy50b19mbG9hdCByIyMudG9wKSAtIGJvZHkjIy5jbGllbnRUb3AgLSBodG1sIyMuY2xpZW50VG9wIClcblxubGV0IGdldERvY3VtZW50U2Nyb2xsICgpID1cbiAgbGV0IGJvZHkgPSBkb2N1bWVudCMjLmJvZHkgaW5cbiAgbGV0IGh0bWwgPSBkb2N1bWVudCMjLmRvY3VtZW50RWxlbWVudCBpblxuICBib2R5IyMuc2Nyb2xsTGVmdCArIGh0bWwjIy5zY3JvbGxMZWZ0LCBib2R5IyMuc2Nyb2xsVG9wICsgaHRtbCMjLnNjcm9sbFRvcFxuXG5sZXQgYnV0dG9uUHJlc3NlZCAoZXYgOiAjbW91c2VFdmVudCBKcy50KSA9XG4gIEpzLk9wdGRlZi5jYXNlXG4gICAgZXYjIy53aGljaFxuICAgIChmdW4gKCkgLT5cbiAgICAgIG1hdGNoIGV2IyMuYnV0dG9uIHdpdGhcbiAgICAgIHwgMSAtPiBMZWZ0X2J1dHRvblxuICAgICAgfCAyIC0+IFJpZ2h0X2J1dHRvblxuICAgICAgfCA0IC0+IE1pZGRsZV9idXR0b25cbiAgICAgIHwgXyAtPiBOb19idXR0b24pXG4gICAgKGZ1biB4IC0+IHgpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lcldpdGhPcHRpb25zIGUgP2NhcHR1cmUgP29uY2UgP3Bhc3NpdmUgaCA9XG4gIGFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgID9jYXB0dXJlXG4gICAgP29uY2VcbiAgICA/cGFzc2l2ZVxuICAgIGVcbiAgICBFdmVudC53aGVlbFxuICAgIChoYW5kbGVyIChmdW4gKGUgOiBtb3VzZXdoZWVsRXZlbnQgdCkgLT5cbiAgICAgICAgIGxldCBkeCA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWCAoZnVuICgpIC0+IDApIC8gNDAgaW5cbiAgICAgICAgIGxldCBkeSA9IC1PcHRkZWYuZ2V0IGUjIy53aGVlbERlbHRhWSAoZnVuICgpIC0+IGUjIy53aGVlbERlbHRhKSAvIDQwIGluXG4gICAgICAgICBoIChlIDo+IG1vdXNlRXZlbnQgdCkgfmR4IH5keSkpXG5cbmxldCBhZGRNb3VzZXdoZWVsRXZlbnRMaXN0ZW5lciBlIGggY2FwdCA9XG4gIGFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnMgfmNhcHR1cmU6Y2FwdCBlIGhcblxuKCoqKioqKVxuXG5tb2R1bGUgS2V5Ym9hcmRfY29kZSA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHwgVW5pZGVudGlmaWVkXG4gICAgKCogQWxwaGFiZXRpYyBDaGFyYWN0ZXJzICopXG4gICAgfCBLZXlBXG4gICAgfCBLZXlCXG4gICAgfCBLZXlDXG4gICAgfCBLZXlEXG4gICAgfCBLZXlFXG4gICAgfCBLZXlGXG4gICAgfCBLZXlHXG4gICAgfCBLZXlIXG4gICAgfCBLZXlJXG4gICAgfCBLZXlKXG4gICAgfCBLZXlLXG4gICAgfCBLZXlMXG4gICAgfCBLZXlNXG4gICAgfCBLZXlOXG4gICAgfCBLZXlPXG4gICAgfCBLZXlQXG4gICAgfCBLZXlRXG4gICAgfCBLZXlSXG4gICAgfCBLZXlTXG4gICAgfCBLZXlUXG4gICAgfCBLZXlVXG4gICAgfCBLZXlWXG4gICAgfCBLZXlXXG4gICAgfCBLZXlYXG4gICAgfCBLZXlZXG4gICAgfCBLZXlaXG4gICAgKCogRGlnaXRzICopXG4gICAgfCBEaWdpdDBcbiAgICB8IERpZ2l0MVxuICAgIHwgRGlnaXQyXG4gICAgfCBEaWdpdDNcbiAgICB8IERpZ2l0NFxuICAgIHwgRGlnaXQ1XG4gICAgfCBEaWdpdDZcbiAgICB8IERpZ2l0N1xuICAgIHwgRGlnaXQ4XG4gICAgfCBEaWdpdDlcbiAgICB8IE1pbnVzXG4gICAgfCBFcXVhbFxuICAgICgqIFdoaXRlc3BhY2UgKilcbiAgICB8IFRhYlxuICAgIHwgRW50ZXJcbiAgICB8IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgRXNjYXBlXG4gICAgfCBCYWNrc3BhY2VcbiAgICB8IEluc2VydFxuICAgIHwgRGVsZXRlXG4gICAgfCBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBCcmFja2V0TGVmdFxuICAgIHwgQnJhY2tldFJpZ2h0XG4gICAgfCBTZW1pY29sb25cbiAgICB8IFF1b3RlXG4gICAgfCBCYWNrcXVvdGVcbiAgICB8IEJhY2tzbGFzaFxuICAgIHwgQ29tbWFcbiAgICB8IFBlcmlvZFxuICAgIHwgU2xhc2hcbiAgICAoKiBGdW5jdGlvbiBrZXlzICopXG4gICAgfCBGMVxuICAgIHwgRjJcbiAgICB8IEYzXG4gICAgfCBGNFxuICAgIHwgRjVcbiAgICB8IEY2XG4gICAgfCBGN1xuICAgIHwgRjhcbiAgICB8IEY5XG4gICAgfCBGMTBcbiAgICB8IEYxMVxuICAgIHwgRjEyXG4gICAgKCogTnVtcGFkIGtleXMgKilcbiAgICB8IE51bXBhZDBcbiAgICB8IE51bXBhZDFcbiAgICB8IE51bXBhZDJcbiAgICB8IE51bXBhZDNcbiAgICB8IE51bXBhZDRcbiAgICB8IE51bXBhZDVcbiAgICB8IE51bXBhZDZcbiAgICB8IE51bXBhZDdcbiAgICB8IE51bXBhZDhcbiAgICB8IE51bXBhZDlcbiAgICB8IE51bXBhZE11bHRpcGx5XG4gICAgfCBOdW1wYWRTdWJ0cmFjdFxuICAgIHwgTnVtcGFkQWRkXG4gICAgfCBOdW1wYWREZWNpbWFsXG4gICAgfCBOdW1wYWRFcXVhbFxuICAgIHwgTnVtcGFkRW50ZXJcbiAgICB8IE51bXBhZERpdmlkZVxuICAgIHwgTnVtTG9ja1xuICAgICgqIE1vZGlmaWVyIGtleXMgKilcbiAgICB8IENvbnRyb2xMZWZ0XG4gICAgfCBDb250cm9sUmlnaHRcbiAgICB8IE1ldGFMZWZ0XG4gICAgfCBNZXRhUmlnaHRcbiAgICB8IFNoaWZ0TGVmdFxuICAgIHwgU2hpZnRSaWdodFxuICAgIHwgQWx0TGVmdFxuICAgIHwgQWx0UmlnaHRcbiAgICAoKiBBcnJvdyBrZXlzICopXG4gICAgfCBBcnJvd0xlZnRcbiAgICB8IEFycm93UmlnaHRcbiAgICB8IEFycm93VXBcbiAgICB8IEFycm93RG93blxuICAgICgqIE5hdmlnYXRpb24gKilcbiAgICB8IFBhZ2VVcFxuICAgIHwgUGFnZURvd25cbiAgICB8IEhvbWVcbiAgICB8IEVuZFxuICAgICgqIFNvdW5kICopXG4gICAgfCBWb2x1bWVNdXRlXG4gICAgfCBWb2x1bWVEb3duXG4gICAgfCBWb2x1bWVVcFxuICAgICgqIE1lZGlhICopXG4gICAgfCBNZWRpYVRyYWNrUHJldmlvdXNcbiAgICB8IE1lZGlhVHJhY2tOZXh0XG4gICAgfCBNZWRpYVBsYXlQYXVzZVxuICAgIHwgTWVkaWFTdG9wXG4gICAgKCogQnJvd3NlciBzcGVjaWFsICopXG4gICAgfCBDb250ZXh0TWVudVxuICAgIHwgQnJvd3NlclNlYXJjaFxuICAgIHwgQnJvd3NlckhvbWVcbiAgICB8IEJyb3dzZXJGYXZvcml0ZXNcbiAgICB8IEJyb3dzZXJSZWZyZXNoXG4gICAgfCBCcm93c2VyU3RvcFxuICAgIHwgQnJvd3NlckZvcndhcmRcbiAgICB8IEJyb3dzZXJCYWNrXG4gICAgKCogTWlzYyAqKVxuICAgIHwgT1NMZWZ0XG4gICAgfCBPU1JpZ2h0XG4gICAgfCBTY3JvbGxMb2NrXG4gICAgfCBQcmludFNjcmVlblxuICAgIHwgSW50bEJhY2tzbGFzaFxuICAgIHwgSW50bFllblxuICAgIHwgUGF1c2VcblxuICBsZXQgdHJ5X2NvZGUgdiA9XG4gICAgbWF0Y2ggSnMudG9fc3RyaW5nIHYgd2l0aFxuICAgICgqIEFscGhhYmV0aWMgQ2hhcmFjdGVycyAqKVxuICAgIHwgXCJLZXlBXCIgLT4gS2V5QVxuICAgIHwgXCJLZXlCXCIgLT4gS2V5QlxuICAgIHwgXCJLZXlDXCIgLT4gS2V5Q1xuICAgIHwgXCJLZXlEXCIgLT4gS2V5RFxuICAgIHwgXCJLZXlFXCIgLT4gS2V5RVxuICAgIHwgXCJLZXlGXCIgLT4gS2V5RlxuICAgIHwgXCJLZXlHXCIgLT4gS2V5R1xuICAgIHwgXCJLZXlIXCIgLT4gS2V5SFxuICAgIHwgXCJLZXlJXCIgLT4gS2V5SVxuICAgIHwgXCJLZXlKXCIgLT4gS2V5SlxuICAgIHwgXCJLZXlLXCIgLT4gS2V5S1xuICAgIHwgXCJLZXlMXCIgLT4gS2V5TFxuICAgIHwgXCJLZXlNXCIgLT4gS2V5TVxuICAgIHwgXCJLZXlOXCIgLT4gS2V5TlxuICAgIHwgXCJLZXlPXCIgLT4gS2V5T1xuICAgIHwgXCJLZXlQXCIgLT4gS2V5UFxuICAgIHwgXCJLZXlRXCIgLT4gS2V5UVxuICAgIHwgXCJLZXlSXCIgLT4gS2V5UlxuICAgIHwgXCJLZXlTXCIgLT4gS2V5U1xuICAgIHwgXCJLZXlUXCIgLT4gS2V5VFxuICAgIHwgXCJLZXlVXCIgLT4gS2V5VVxuICAgIHwgXCJLZXlWXCIgLT4gS2V5VlxuICAgIHwgXCJLZXlXXCIgLT4gS2V5V1xuICAgIHwgXCJLZXlYXCIgLT4gS2V5WFxuICAgIHwgXCJLZXlZXCIgLT4gS2V5WVxuICAgIHwgXCJLZXlaXCIgLT4gS2V5WlxuICAgICgqIERpZ2l0cyAqKVxuICAgIHwgXCJEaWdpdDBcIiAtPiBEaWdpdDBcbiAgICB8IFwiRGlnaXQxXCIgLT4gRGlnaXQxXG4gICAgfCBcIkRpZ2l0MlwiIC0+IERpZ2l0MlxuICAgIHwgXCJEaWdpdDNcIiAtPiBEaWdpdDNcbiAgICB8IFwiRGlnaXQ0XCIgLT4gRGlnaXQ0XG4gICAgfCBcIkRpZ2l0NVwiIC0+IERpZ2l0NVxuICAgIHwgXCJEaWdpdDZcIiAtPiBEaWdpdDZcbiAgICB8IFwiRGlnaXQ3XCIgLT4gRGlnaXQ3XG4gICAgfCBcIkRpZ2l0OFwiIC0+IERpZ2l0OFxuICAgIHwgXCJEaWdpdDlcIiAtPiBEaWdpdDlcbiAgICB8IFwiTWludXNcIiAtPiBNaW51c1xuICAgIHwgXCJFcXVhbFwiIC0+IEVxdWFsXG4gICAgKCogV2hpdGVzcGFjZSAqKVxuICAgIHwgXCJUYWJcIiAtPiBUYWJcbiAgICB8IFwiRW50ZXJcIiAtPiBFbnRlclxuICAgIHwgXCJTcGFjZVwiIC0+IFNwYWNlXG4gICAgKCogRWRpdGluZyAqKVxuICAgIHwgXCJFc2NhcGVcIiAtPiBFc2NhcGVcbiAgICB8IFwiQmFja3NwYWNlXCIgLT4gQmFja3NwYWNlXG4gICAgfCBcIkluc2VydFwiIC0+IEluc2VydFxuICAgIHwgXCJEZWxldGVcIiAtPiBEZWxldGVcbiAgICB8IFwiQ2Fwc0xvY2tcIiAtPiBDYXBzTG9ja1xuICAgICgqIE1pc2MgUHJpbnRhYmxlICopXG4gICAgfCBcIkJyYWNrZXRMZWZ0XCIgLT4gQnJhY2tldExlZnRcbiAgICB8IFwiQnJhY2tldFJpZ2h0XCIgLT4gQnJhY2tldFJpZ2h0XG4gICAgfCBcIlNlbWljb2xvblwiIC0+IFNlbWljb2xvblxuICAgIHwgXCJRdW90ZVwiIC0+IFF1b3RlXG4gICAgfCBcIkJhY2txdW90ZVwiIC0+IEJhY2txdW90ZVxuICAgIHwgXCJCYWNrc2xhc2hcIiAtPiBCYWNrc2xhc2hcbiAgICB8IFwiQ29tbWFcIiAtPiBDb21tYVxuICAgIHwgXCJQZXJpb2RcIiAtPiBQZXJpb2RcbiAgICB8IFwiU2xhc2hcIiAtPiBTbGFzaFxuICAgICgqIEZ1bmN0aW9uIGtleXMgKilcbiAgICB8IFwiRjFcIiAtPiBGMVxuICAgIHwgXCJGMlwiIC0+IEYyXG4gICAgfCBcIkYzXCIgLT4gRjNcbiAgICB8IFwiRjRcIiAtPiBGNFxuICAgIHwgXCJGNVwiIC0+IEY1XG4gICAgfCBcIkY2XCIgLT4gRjZcbiAgICB8IFwiRjdcIiAtPiBGN1xuICAgIHwgXCJGOFwiIC0+IEY4XG4gICAgfCBcIkY5XCIgLT4gRjlcbiAgICB8IFwiRjEwXCIgLT4gRjEwXG4gICAgfCBcIkYxMVwiIC0+IEYxMVxuICAgIHwgXCJGMTJcIiAtPiBGMTJcbiAgICAoKiBOdW1wYWQga2V5cyAqKVxuICAgIHwgXCJOdW1wYWQwXCIgLT4gTnVtcGFkMFxuICAgIHwgXCJOdW1wYWQxXCIgLT4gTnVtcGFkMVxuICAgIHwgXCJOdW1wYWQyXCIgLT4gTnVtcGFkMlxuICAgIHwgXCJOdW1wYWQzXCIgLT4gTnVtcGFkM1xuICAgIHwgXCJOdW1wYWQ0XCIgLT4gTnVtcGFkNFxuICAgIHwgXCJOdW1wYWQ1XCIgLT4gTnVtcGFkNVxuICAgIHwgXCJOdW1wYWQ2XCIgLT4gTnVtcGFkNlxuICAgIHwgXCJOdW1wYWQ3XCIgLT4gTnVtcGFkN1xuICAgIHwgXCJOdW1wYWQ4XCIgLT4gTnVtcGFkOFxuICAgIHwgXCJOdW1wYWQ5XCIgLT4gTnVtcGFkOVxuICAgIHwgXCJOdW1wYWRNdWx0aXBseVwiIC0+IE51bXBhZE11bHRpcGx5XG4gICAgfCBcIk51bXBhZFN1YnRyYWN0XCIgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IFwiTnVtcGFkQWRkXCIgLT4gTnVtcGFkQWRkXG4gICAgfCBcIk51bXBhZERlY2ltYWxcIiAtPiBOdW1wYWREZWNpbWFsXG4gICAgfCBcIk51bXBhZEVxdWFsXCIgLT4gTnVtcGFkRXF1YWxcbiAgICB8IFwiTnVtcGFkRW50ZXJcIiAtPiBOdW1wYWRFbnRlclxuICAgIHwgXCJOdW1wYWREaXZpZGVcIiAtPiBOdW1wYWREaXZpZGVcbiAgICB8IFwiTnVtTG9ja1wiIC0+IE51bUxvY2tcbiAgICAoKiBNb2RpZmllciBrZXlzICopXG4gICAgfCBcIkNvbnRyb2xMZWZ0XCIgLT4gQ29udHJvbExlZnRcbiAgICB8IFwiQ29udHJvbFJpZ2h0XCIgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCBcIk1ldGFMZWZ0XCIgLT4gTWV0YUxlZnRcbiAgICB8IFwiTWV0YVJpZ2h0XCIgLT4gTWV0YVJpZ2h0XG4gICAgfCBcIlNoaWZ0TGVmdFwiIC0+IFNoaWZ0TGVmdFxuICAgIHwgXCJTaGlmdFJpZ2h0XCIgLT4gU2hpZnRSaWdodFxuICAgIHwgXCJBbHRMZWZ0XCIgLT4gQWx0TGVmdFxuICAgIHwgXCJBbHRSaWdodFwiIC0+IEFsdFJpZ2h0XG4gICAgKCogQXJyb3cga2V5cyAqKVxuICAgIHwgXCJBcnJvd0xlZnRcIiAtPiBBcnJvd0xlZnRcbiAgICB8IFwiQXJyb3dSaWdodFwiIC0+IEFycm93UmlnaHRcbiAgICB8IFwiQXJyb3dVcFwiIC0+IEFycm93VXBcbiAgICB8IFwiQXJyb3dEb3duXCIgLT4gQXJyb3dEb3duXG4gICAgKCogTmF2aWdhdGlvbiAqKVxuICAgIHwgXCJQYWdlVXBcIiAtPiBQYWdlVXBcbiAgICB8IFwiUGFnZURvd25cIiAtPiBQYWdlRG93blxuICAgIHwgXCJIb21lXCIgLT4gSG9tZVxuICAgIHwgXCJFbmRcIiAtPiBFbmRcbiAgICAoKiBTb3VuZCAqKVxuICAgIHwgXCJWb2x1bWVNdXRlXCIgLT4gVm9sdW1lTXV0ZVxuICAgIHwgXCJWb2x1bWVEb3duXCIgLT4gVm9sdW1lRG93blxuICAgIHwgXCJWb2x1bWVVcFwiIC0+IFZvbHVtZVVwXG4gICAgKCogTWVkaWEgKilcbiAgICB8IFwiTWVkaWFUcmFja1ByZXZpb3VzXCIgLT4gTWVkaWFUcmFja1ByZXZpb3VzXG4gICAgfCBcIk1lZGlhVHJhY2tOZXh0XCIgLT4gTWVkaWFUcmFja05leHRcbiAgICB8IFwiTWVkaWFQbGF5UGF1c2VcIiAtPiBNZWRpYVBsYXlQYXVzZVxuICAgIHwgXCJNZWRpYVN0b3BcIiAtPiBNZWRpYVN0b3BcbiAgICAoKiBCcm93c2VyIHNwZWNpYWwgKilcbiAgICB8IFwiQ29udGV4dE1lbnVcIiAtPiBDb250ZXh0TWVudVxuICAgIHwgXCJCcm93c2VyU2VhcmNoXCIgLT4gQnJvd3NlclNlYXJjaFxuICAgIHwgXCJCcm93c2VySG9tZVwiIC0+IEJyb3dzZXJIb21lXG4gICAgfCBcIkJyb3dzZXJGYXZvcml0ZXNcIiAtPiBCcm93c2VyRmF2b3JpdGVzXG4gICAgfCBcIkJyb3dzZXJSZWZyZXNoXCIgLT4gQnJvd3NlclJlZnJlc2hcbiAgICB8IFwiQnJvd3NlclN0b3BcIiAtPiBCcm93c2VyU3RvcFxuICAgIHwgXCJCcm93c2VyRm9yd2FyZFwiIC0+IEJyb3dzZXJGb3J3YXJkXG4gICAgfCBcIkJyb3dzZXJCYWNrXCIgLT4gQnJvd3NlckJhY2tcbiAgICAoKiBNaXNjICopXG4gICAgfCBcIk9TTGVmdFwiIC0+IE9TTGVmdFxuICAgIHwgXCJPU1JpZ2h0XCIgLT4gT1NSaWdodFxuICAgIHwgXCJTY3JvbGxMb2NrXCIgLT4gU2Nyb2xsTG9ja1xuICAgIHwgXCJQcmludFNjcmVlblwiIC0+IFByaW50U2NyZWVuXG4gICAgfCBcIkludGxCYWNrc2xhc2hcIiAtPiBJbnRsQmFja3NsYXNoXG4gICAgfCBcIkludGxZZW5cIiAtPiBJbnRsWWVuXG4gICAgfCBcIlBhdXNlXCIgLT4gUGF1c2VcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9sZWZ0ID0gZnVuY3Rpb25cbiAgICB8IDE2IC0+IFNoaWZ0TGVmdFxuICAgIHwgMTcgLT4gQ29udHJvbExlZnRcbiAgICB8IDE4IC0+IEFsdExlZnRcbiAgICB8IDkxIC0+IE1ldGFMZWZ0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfcmlnaHQgPSBmdW5jdGlvblxuICAgIHwgMTYgLT4gU2hpZnRSaWdodFxuICAgIHwgMTcgLT4gQ29udHJvbFJpZ2h0XG4gICAgfCAxOCAtPiBBbHRSaWdodFxuICAgIHwgOTEgLT4gTWV0YVJpZ2h0XG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCB0cnlfa2V5X2NvZGVfbnVtcGFkID0gZnVuY3Rpb25cbiAgICB8IDQ2IC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDQ1IC0+IE51bXBhZDBcbiAgICB8IDM1IC0+IE51bXBhZDFcbiAgICB8IDQwIC0+IE51bXBhZDJcbiAgICB8IDM0IC0+IE51bXBhZDNcbiAgICB8IDM3IC0+IE51bXBhZDRcbiAgICB8IDEyIC0+IE51bXBhZDVcbiAgICB8IDM5IC0+IE51bXBhZDZcbiAgICB8IDM2IC0+IE51bXBhZDdcbiAgICB8IDM4IC0+IE51bXBhZDhcbiAgICB8IDMzIC0+IE51bXBhZDlcbiAgICB8IDEzIC0+IE51bXBhZEVudGVyXG4gICAgfCAxMTEgLT4gTnVtcGFkRGl2aWRlXG4gICAgfCAxMDcgLT4gTnVtcGFkQWRkXG4gICAgfCAxMDkgLT4gTnVtcGFkU3VidHJhY3RcbiAgICB8IDEwNiAtPiBOdW1wYWRNdWx0aXBseVxuICAgIHwgMTEwIC0+IE51bXBhZERlY2ltYWxcbiAgICB8IDk2IC0+IE51bXBhZDBcbiAgICB8IDk3IC0+IE51bXBhZDFcbiAgICB8IDk4IC0+IE51bXBhZDJcbiAgICB8IDk5IC0+IE51bXBhZDNcbiAgICB8IDEwMCAtPiBOdW1wYWQ0XG4gICAgfCAxMDEgLT4gTnVtcGFkNVxuICAgIHwgMTAyIC0+IE51bXBhZDZcbiAgICB8IDEwMyAtPiBOdW1wYWQ3XG4gICAgfCAxMDQgLT4gTnVtcGFkOFxuICAgIHwgMTA1IC0+IE51bXBhZDlcbiAgICB8IF8gLT4gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9rZXlfY29kZV9ub3JtYWwgPSBmdW5jdGlvblxuICAgIHwgMjcgLT4gRXNjYXBlXG4gICAgfCAxMTIgLT4gRjFcbiAgICB8IDExMyAtPiBGMlxuICAgIHwgMTE0IC0+IEYzXG4gICAgfCAxMTUgLT4gRjRcbiAgICB8IDExNiAtPiBGNVxuICAgIHwgMTE3IC0+IEY2XG4gICAgfCAxMTggLT4gRjdcbiAgICB8IDExOSAtPiBGOFxuICAgIHwgMTIwIC0+IEY5XG4gICAgfCAxMjEgLT4gRjEwXG4gICAgfCAxMjIgLT4gRjExXG4gICAgfCAxMjMgLT4gRjEyXG4gICAgfCA0MiAtPiBQcmludFNjcmVlblxuICAgIHwgMTQ1IC0+IFNjcm9sbExvY2tcbiAgICB8IDE5IC0+IFBhdXNlXG4gICAgfCAxOTIgLT4gQmFja3F1b3RlXG4gICAgfCA0OSAtPiBEaWdpdDFcbiAgICB8IDUwIC0+IERpZ2l0MlxuICAgIHwgNTEgLT4gRGlnaXQzXG4gICAgfCA1MiAtPiBEaWdpdDRcbiAgICB8IDUzIC0+IERpZ2l0NVxuICAgIHwgNTQgLT4gRGlnaXQ2XG4gICAgfCA1NSAtPiBEaWdpdDdcbiAgICB8IDU2IC0+IERpZ2l0OFxuICAgIHwgNTcgLT4gRGlnaXQ5XG4gICAgfCA0OCAtPiBEaWdpdDBcbiAgICB8IDE4OSAtPiBNaW51c1xuICAgIHwgMTg3IC0+IEVxdWFsXG4gICAgfCA4IC0+IEJhY2tzcGFjZVxuICAgIHwgOSAtPiBUYWJcbiAgICB8IDgxIC0+IEtleVFcbiAgICB8IDg3IC0+IEtleVdcbiAgICB8IDY5IC0+IEtleUVcbiAgICB8IDgyIC0+IEtleVJcbiAgICB8IDg0IC0+IEtleVRcbiAgICB8IDg5IC0+IEtleVlcbiAgICB8IDg1IC0+IEtleVVcbiAgICB8IDczIC0+IEtleUlcbiAgICB8IDc5IC0+IEtleU9cbiAgICB8IDgwIC0+IEtleVBcbiAgICB8IDIxOSAtPiBCcmFja2V0TGVmdFxuICAgIHwgMjIxIC0+IEJyYWNrZXRSaWdodFxuICAgIHwgMjIwIC0+IEJhY2tzbGFzaFxuICAgIHwgMjAgLT4gQ2Fwc0xvY2tcbiAgICB8IDY1IC0+IEtleUFcbiAgICB8IDgzIC0+IEtleVNcbiAgICB8IDY4IC0+IEtleURcbiAgICB8IDcwIC0+IEtleUZcbiAgICB8IDcxIC0+IEtleUdcbiAgICB8IDcyIC0+IEtleUhcbiAgICB8IDc0IC0+IEtleUpcbiAgICB8IDc1IC0+IEtleUtcbiAgICB8IDc2IC0+IEtleUxcbiAgICB8IDE4NiAtPiBTZW1pY29sb25cbiAgICB8IDIyMiAtPiBRdW90ZVxuICAgIHwgMTMgLT4gRW50ZXJcbiAgICB8IDkwIC0+IEtleVpcbiAgICB8IDg4IC0+IEtleVhcbiAgICB8IDY3IC0+IEtleUNcbiAgICB8IDg2IC0+IEtleVZcbiAgICB8IDY2IC0+IEtleUJcbiAgICB8IDc4IC0+IEtleU5cbiAgICB8IDc3IC0+IEtleU1cbiAgICB8IDE4OCAtPiBDb21tYVxuICAgIHwgMTkwIC0+IFBlcmlvZFxuICAgIHwgMTkxIC0+IFNsYXNoXG4gICAgfCAzMiAtPiBTcGFjZVxuICAgIHwgOTMgLT4gQ29udGV4dE1lbnVcbiAgICB8IDQ1IC0+IEluc2VydFxuICAgIHwgMzYgLT4gSG9tZVxuICAgIHwgMzMgLT4gUGFnZVVwXG4gICAgfCA0NiAtPiBEZWxldGVcbiAgICB8IDM1IC0+IEVuZFxuICAgIHwgMzQgLT4gUGFnZURvd25cbiAgICB8IDM3IC0+IEFycm93TGVmdFxuICAgIHwgNDAgLT4gQXJyb3dEb3duXG4gICAgfCAzOSAtPiBBcnJvd1JpZ2h0XG4gICAgfCAzOCAtPiBBcnJvd1VwXG4gICAgfCBfIC0+IFVuaWRlbnRpZmllZFxuXG4gIGxldCBtYWtlX3VuaWRlbnRpZmllZCBfID0gVW5pZGVudGlmaWVkXG5cbiAgbGV0IHRyeV9uZXh0IHZhbHVlIGYgPSBmdW5jdGlvblxuICAgIHwgVW5pZGVudGlmaWVkIC0+IE9wdGRlZi5jYXNlIHZhbHVlIG1ha2VfdW5pZGVudGlmaWVkIGZcbiAgICB8IHYgLT4gdlxuXG4gIGxldCBydW5fbmV4dCB2YWx1ZSBmID0gZnVuY3Rpb25cbiAgICB8IFVuaWRlbnRpZmllZCAtPiBmIHZhbHVlXG4gICAgfCB2IC0+IHZcblxuICBsZXQgZ2V0X2tleV9jb2RlIGV2dCA9IGV2dCMjLmtleUNvZGVcblxuICBsZXQgdHJ5X2tleV9sb2NhdGlvbiBldnQgPVxuICAgIG1hdGNoIGV2dCMjLmxvY2F0aW9uIHdpdGhcbiAgICB8IDEgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9sZWZ0XG4gICAgfCAyIC0+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfcmlnaHRcbiAgICB8IDMgLT4gcnVuX25leHQgKGdldF9rZXlfY29kZSBldnQpIHRyeV9rZXlfY29kZV9udW1wYWRcbiAgICB8IF8gLT4gbWFrZV91bmlkZW50aWZpZWRcblxuICBsZXQgKCB8PiApIHggZiA9IGYgeFxuXG4gIGxldCBvZl9ldmVudCBldnQgPVxuICAgIFVuaWRlbnRpZmllZFxuICAgIHw+IHRyeV9uZXh0IGV2dCMjLmNvZGUgdHJ5X2NvZGVcbiAgICB8PiB0cnlfa2V5X2xvY2F0aW9uIGV2dFxuICAgIHw+IHJ1bl9uZXh0IChnZXRfa2V5X2NvZGUgZXZ0KSB0cnlfa2V5X2NvZGVfbm9ybWFsXG5cbiAgbGV0IG9mX2tleV9jb2RlID0gdHJ5X2tleV9jb2RlX25vcm1hbFxuZW5kXG5cbm1vZHVsZSBLZXlib2FyZF9rZXkgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gVWNoYXIudCBvcHRpb25cblxuICBsZXQgY2hhcl9vZl9pbnQgdmFsdWUgPVxuICAgIGlmIDAgPCB2YWx1ZSB0aGVuIHRyeSBTb21lIChVY2hhci5vZl9pbnQgdmFsdWUpIHdpdGggXyAtPiBOb25lIGVsc2UgTm9uZVxuXG4gIGxldCBlbXB0eV9zdHJpbmcgXyA9IEpzLnN0cmluZyBcIlwiXG5cbiAgbGV0IG5vbmUgXyA9IE5vbmVcblxuICBsZXQgb2ZfZXZlbnQgZXZ0ID1cbiAgICBsZXQga2V5ID0gT3B0ZGVmLmdldCBldnQjIy5rZXkgZW1wdHlfc3RyaW5nIGluXG4gICAgbWF0Y2gga2V5IyMubGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gT3B0ZGVmLmNhc2UgZXZ0IyMuY2hhckNvZGUgbm9uZSBjaGFyX29mX2ludFxuICAgIHwgMSAtPiBjaGFyX29mX2ludCAoaW50X29mX2Zsb2F0IChKcy50b19mbG9hdCAoa2V5IyNjaGFyQ29kZUF0IDApKSlcbiAgICB8IF8gLT4gTm9uZVxuZW5kXG5cbigqKioqKilcblxubGV0IGVsZW1lbnQgOiAjRG9tLmVsZW1lbnQgdCAtPiBlbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlXG5cbnR5cGUgdGFnZ2VkRWxlbWVudCA9XG4gIHwgQSBvZiBhbmNob3JFbGVtZW50IHRcbiAgfCBBcmVhIG9mIGFyZWFFbGVtZW50IHRcbiAgfCBBdWRpbyBvZiBhdWRpb0VsZW1lbnQgdFxuICB8IEJhc2Ugb2YgYmFzZUVsZW1lbnQgdFxuICB8IEJsb2NrcXVvdGUgb2YgcXVvdGVFbGVtZW50IHRcbiAgfCBCb2R5IG9mIGJvZHlFbGVtZW50IHRcbiAgfCBCciBvZiBickVsZW1lbnQgdFxuICB8IEJ1dHRvbiBvZiBidXR0b25FbGVtZW50IHRcbiAgfCBDYW52YXMgb2YgY2FudmFzRWxlbWVudCB0XG4gIHwgQ2FwdGlvbiBvZiB0YWJsZUNhcHRpb25FbGVtZW50IHRcbiAgfCBDb2wgb2YgdGFibGVDb2xFbGVtZW50IHRcbiAgfCBDb2xncm91cCBvZiB0YWJsZUNvbEVsZW1lbnQgdFxuICB8IERlbCBvZiBtb2RFbGVtZW50IHRcbiAgfCBEaXYgb2YgZGl2RWxlbWVudCB0XG4gIHwgRGwgb2YgZExpc3RFbGVtZW50IHRcbiAgfCBFbWJlZCBvZiBlbWJlZEVsZW1lbnQgdFxuICB8IEZpZWxkc2V0IG9mIGZpZWxkU2V0RWxlbWVudCB0XG4gIHwgRm9ybSBvZiBmb3JtRWxlbWVudCB0XG4gIHwgRnJhbWVzZXQgb2YgZnJhbWVTZXRFbGVtZW50IHRcbiAgfCBGcmFtZSBvZiBmcmFtZUVsZW1lbnQgdFxuICB8IEgxIG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBIMiBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDMgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEg0IG9mIGhlYWRpbmdFbGVtZW50IHRcbiAgfCBINSBvZiBoZWFkaW5nRWxlbWVudCB0XG4gIHwgSDYgb2YgaGVhZGluZ0VsZW1lbnQgdFxuICB8IEhlYWQgb2YgaGVhZEVsZW1lbnQgdFxuICB8IEhyIG9mIGhyRWxlbWVudCB0XG4gIHwgSHRtbCBvZiBodG1sRWxlbWVudCB0XG4gIHwgSWZyYW1lIG9mIGlGcmFtZUVsZW1lbnQgdFxuICB8IEltZyBvZiBpbWFnZUVsZW1lbnQgdFxuICB8IElucHV0IG9mIGlucHV0RWxlbWVudCB0XG4gIHwgSW5zIG9mIG1vZEVsZW1lbnQgdFxuICB8IExhYmVsIG9mIGxhYmVsRWxlbWVudCB0XG4gIHwgTGVnZW5kIG9mIGxlZ2VuZEVsZW1lbnQgdFxuICB8IExpIG9mIGxpRWxlbWVudCB0XG4gIHwgTGluayBvZiBsaW5rRWxlbWVudCB0XG4gIHwgTWFwIG9mIG1hcEVsZW1lbnQgdFxuICB8IE1ldGEgb2YgbWV0YUVsZW1lbnQgdFxuICB8IE9iamVjdCBvZiBvYmplY3RFbGVtZW50IHRcbiAgfCBPbCBvZiBvTGlzdEVsZW1lbnQgdFxuICB8IE9wdGdyb3VwIG9mIG9wdEdyb3VwRWxlbWVudCB0XG4gIHwgT3B0aW9uIG9mIG9wdGlvbkVsZW1lbnQgdFxuICB8IFAgb2YgcGFyYW1FbGVtZW50IHRcbiAgfCBQYXJhbSBvZiBwYXJhbUVsZW1lbnQgdFxuICB8IFByZSBvZiBwcmVFbGVtZW50IHRcbiAgfCBRIG9mIHF1b3RlRWxlbWVudCB0XG4gIHwgU2NyaXB0IG9mIHNjcmlwdEVsZW1lbnQgdFxuICB8IFNlbGVjdCBvZiBzZWxlY3RFbGVtZW50IHRcbiAgfCBTdHlsZSBvZiBzdHlsZUVsZW1lbnQgdFxuICB8IFRhYmxlIG9mIHRhYmxlRWxlbWVudCB0XG4gIHwgVGJvZHkgb2YgdGFibGVTZWN0aW9uRWxlbWVudCB0XG4gIHwgVGQgb2YgdGFibGVDZWxsRWxlbWVudCB0XG4gIHwgVGV4dGFyZWEgb2YgdGV4dEFyZWFFbGVtZW50IHRcbiAgfCBUZm9vdCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaCBvZiB0YWJsZUNlbGxFbGVtZW50IHRcbiAgfCBUaGVhZCBvZiB0YWJsZVNlY3Rpb25FbGVtZW50IHRcbiAgfCBUaXRsZSBvZiB0aXRsZUVsZW1lbnQgdFxuICB8IFRyIG9mIHRhYmxlUm93RWxlbWVudCB0XG4gIHwgVWwgb2YgdUxpc3RFbGVtZW50IHRcbiAgfCBWaWRlbyBvZiB2aWRlb0VsZW1lbnQgdFxuICB8IE90aGVyIG9mIGVsZW1lbnQgdFxuXG5sZXQgb3RoZXIgZSA9IE90aGVyIChlIDogI2VsZW1lbnQgdCA6PiBlbGVtZW50IHQpXG5cbmxldCB0YWdnZWQgKGUgOiAjZWxlbWVudCB0KSA9XG4gIGxldCB0YWcgPSBKcy50b19ieXRlc3RyaW5nIGUjIy50YWdOYW1lIyN0b0xvd2VyQ2FzZSBpblxuICBpZiBTdHJpbmcubGVuZ3RoIHRhZyA9IDBcbiAgdGhlbiBvdGhlciBlXG4gIGVsc2VcbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCB0YWcgMCB3aXRoXG4gICAgfCAnYScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiYVwiIC0+IEEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImFyZWFcIiAtPiBBcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJhdWRpb1wiIC0+IEF1ZGlvIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ2InIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcImJhc2VcIiAtPiBCYXNlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJibG9ja3F1b3RlXCIgLT4gQmxvY2txdW90ZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiYm9keVwiIC0+IEJvZHkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJyXCIgLT4gQnIgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImJ1dHRvblwiIC0+IEJ1dHRvbiAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdjJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJjYW52YXNcIiAtPiBDYW52YXMgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNhcHRpb25cIiAtPiBDYXB0aW9uIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJjb2xcIiAtPiBDb2wgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImNvbGdyb3VwXCIgLT4gQ29sZ3JvdXAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZGVsXCIgLT4gRGVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJkaXZcIiAtPiBEaXYgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImRsXCIgLT4gRGwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnZScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiZW1iZWRcIiAtPiBFbWJlZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdmJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJmaWVsZHNldFwiIC0+IEZpZWxkc2V0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJmb3JtXCIgLT4gRm9ybSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVzZXRcIiAtPiBGcmFtZXNldCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiZnJhbWVcIiAtPiBGcmFtZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdoJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJoMVwiIC0+IEgxIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoMlwiIC0+IEgyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoM1wiIC0+IEgzIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNFwiIC0+IEg0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNVwiIC0+IEg1IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoNlwiIC0+IEg2IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJoZWFkXCIgLT4gSGVhZCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHJcIiAtPiBIciAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwiaHRtbFwiIC0+IEh0bWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnaScgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwiaWZyYW1lXCIgLT4gSWZyYW1lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJpbWdcIiAtPiBJbWcgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImlucHV0XCIgLT4gSW5wdXQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImluc1wiIC0+IElucyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdsJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJsYWJlbFwiIC0+IExhYmVsIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJsZWdlbmRcIiAtPiBMZWdlbmQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpXCIgLT4gTGkgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcImxpbmtcIiAtPiBMaW5rIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ20nIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcIm1hcFwiIC0+IE1hcCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwibWV0YVwiIC0+IE1ldGEgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAnbycgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwib2JqZWN0XCIgLT4gT2JqZWN0IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvbFwiIC0+IE9sIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRncm91cFwiIC0+IE9wdGdyb3VwIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJvcHRpb25cIiAtPiBPcHRpb24gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAncCcgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwicFwiIC0+IFAgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInBhcmFtXCIgLT4gUGFyYW0gKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInByZVwiIC0+IFByZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdxJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJxXCIgLT4gUSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICdzJyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJzY3JpcHRcIiAtPiBTY3JpcHQgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBcInNlbGVjdFwiIC0+IFNlbGVjdCAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IFwic3R5bGVcIiAtPiBTdHlsZSAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8ICd0JyAtPiAoXG4gICAgICAgIG1hdGNoIHRhZyB3aXRoXG4gICAgICAgIHwgXCJ0YWJsZVwiIC0+IFRhYmxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Ym9keVwiIC0+IFRib2R5IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZFwiIC0+IFRkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0ZXh0YXJlYVwiIC0+IFRleHRhcmVhIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0Zm9vdFwiIC0+IFRmb290IChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aFwiIC0+IFRoIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aGVhZFwiIC0+IFRoZWFkIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0aXRsZVwiIC0+IFRpdGxlIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXCJ0clwiIC0+IFRyIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgICAgIHwgXyAtPiBvdGhlciBlKVxuICAgIHwgJ3UnIC0+IChcbiAgICAgICAgbWF0Y2ggdGFnIHdpdGhcbiAgICAgICAgfCBcInVsXCIgLT4gVWwgKEpzLlVuc2FmZS5jb2VyY2UgZSlcbiAgICAgICAgfCBfIC0+IG90aGVyIGUpXG4gICAgfCAndicgLT4gKFxuICAgICAgICBtYXRjaCB0YWcgd2l0aFxuICAgICAgICB8IFwidmlkZW9cIiAtPiBWaWRlbyAoSnMuVW5zYWZlLmNvZXJjZSBlKVxuICAgICAgICB8IF8gLT4gb3RoZXIgZSlcbiAgICB8IF8gLT4gb3RoZXIgZVxuXG5sZXQgb3B0X3RhZ2dlZCBlID0gT3B0LmNhc2UgZSAoZnVuICgpIC0+IE5vbmUpIChmdW4gZSAtPiBTb21lICh0YWdnZWQgZSkpXG5cbnR5cGUgdGFnZ2VkRXZlbnQgPVxuICB8IE1vdXNlRXZlbnQgb2YgbW91c2VFdmVudCB0XG4gIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZEV2ZW50IHRcbiAgfCBNZXNzYWdlRXZlbnQgb2YgbWVzc2FnZUV2ZW50IHRcbiAgfCBNb3VzZXdoZWVsRXZlbnQgb2YgbW91c2V3aGVlbEV2ZW50IHRcbiAgfCBNb3VzZVNjcm9sbEV2ZW50IG9mIG1vdXNlU2Nyb2xsRXZlbnQgdFxuICB8IFBvcFN0YXRlRXZlbnQgb2YgcG9wU3RhdGVFdmVudCB0XG4gIHwgT3RoZXJFdmVudCBvZiBldmVudCB0XG5cbmxldCB0YWdnZWRFdmVudCAoZXYgOiAjZXZlbnQgSnMudCkgPVxuICBKcy5PcHQuY2FzZVxuICAgIChDb2VyY2VUby5tb3VzZUV2ZW50IGV2KVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChDb2VyY2VUby5rZXlib2FyZEV2ZW50IGV2KVxuICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChDb2VyY2VUby53aGVlbEV2ZW50IGV2KVxuICAgICAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgICAgIChDb2VyY2VUby5tb3VzZVNjcm9sbEV2ZW50IGV2KVxuICAgICAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5wb3BTdGF0ZUV2ZW50IGV2KVxuICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIChDb2VyY2VUby5tZXNzYWdlRXZlbnQgZXYpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgpIC0+IE90aGVyRXZlbnQgKGV2IDo+IGV2ZW50IHQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBldiAtPiBNZXNzYWdlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgICAgICAoZnVuIGV2IC0+IFBvcFN0YXRlRXZlbnQgZXYpKVxuICAgICAgICAgICAgICAgIChmdW4gZXYgLT4gTW91c2VTY3JvbGxFdmVudCBldikpXG4gICAgICAgICAgICAoZnVuIGV2IC0+IE1vdXNld2hlZWxFdmVudCBldikpXG4gICAgICAgIChmdW4gZXYgLT4gS2V5Ym9hcmRFdmVudCBldikpXG4gICAgKGZ1biBldiAtPiBNb3VzZUV2ZW50IGV2KVxuXG5sZXQgb3B0X3RhZ2dlZEV2ZW50IGV2ID0gT3B0LmNhc2UgZXYgKGZ1biAoKSAtPiBOb25lKSAoZnVuIGV2IC0+IFNvbWUgKHRhZ2dlZEV2ZW50IGV2KSlcblxubGV0IHN0b3BQcm9wYWdhdGlvbiBldiA9XG4gIGxldCBlID0gSnMuVW5zYWZlLmNvZXJjZSBldiBpblxuICBPcHRkZWYuY2FzZVxuICAgIGUjIy5zdG9wUHJvcGFnYXRpb25cbiAgICAoZnVuICgpIC0+IGUjIy5jYW5jZWxCdWJibGUgOj0gSnMuX3RydWUpXG4gICAgKGZ1biBfIC0+IGUjI19zdG9wUHJvcGFnYXRpb24pXG5cbmxldCBfcmVxdWVzdEFuaW1hdGlvbkZyYW1lIDogKHVuaXQgLT4gdW5pdCkgSnMuY2FsbGJhY2sgLT4gdW5pdCA9XG4gIEpzLlVuc2FmZS5wdXJlX2V4cHIgKGZ1biBfIC0+XG4gICAgICBsZXQgdyA9IEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IGluXG4gICAgICBsZXQgbCA9XG4gICAgICAgIFsgdyMjLnJlcXVlc3RBbmltYXRpb25GcmFtZVxuICAgICAgICA7IHcjIy5tb3pSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMud2Via2l0UmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAgIDsgdyMjLm9SZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgOyB3IyMubXNSZXF1ZXN0QW5pbWF0aW9uRnJhbWVcbiAgICAgICAgXVxuICAgICAgaW5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgcmVxID0gTGlzdC5maW5kIChmdW4gYyAtPiBKcy5PcHRkZWYudGVzdCBjKSBsIGluXG4gICAgICAgIGZ1biBjYWxsYmFjayAtPiBKcy5VbnNhZmUuZnVuX2NhbGwgcmVxIFt8IEpzLlVuc2FmZS5pbmplY3QgY2FsbGJhY2sgfF1cbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBub3cgKCkgPSBKcy50b19mbG9hdCAobmV3JWpzIEpzLmRhdGVfbm93KSMjZ2V0VGltZSBpblxuICAgICAgICBsZXQgbGFzdCA9IHJlZiAobm93ICgpKSBpblxuICAgICAgICBmdW4gY2FsbGJhY2sgLT5cbiAgICAgICAgICBsZXQgdCA9IG5vdyAoKSBpblxuICAgICAgICAgIGxldCBkdCA9ICFsYXN0ICsuICgxMDAwLiAvLiA2MC4pIC0uIHQgaW5cbiAgICAgICAgICBsZXQgZHQgPSBpZiBQb2x5LihkdCA8IDAuKSB0aGVuIDAuIGVsc2UgZHQgaW5cbiAgICAgICAgICBsYXN0IDo9IHQ7XG4gICAgICAgICAgaWdub3JlICh3aW5kb3cjI3NldFRpbWVvdXQgY2FsbGJhY2sgKEpzLmZsb2F0IGR0KSkpXG5cbigqKioqKVxuXG5sZXQgaGFzUHVzaFN0YXRlICgpID0gSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2Ugd2luZG93IyMuaGlzdG9yeSkjIy5wdXNoU3RhdGVcblxubGV0IGhhc1BsYWNlaG9sZGVyICgpID1cbiAgbGV0IGkgPSBjcmVhdGVJbnB1dCBkb2N1bWVudCBpblxuICBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmNvZXJjZSBpKSMjLnBsYWNlaG9sZGVyXG5cbmxldCBoYXNSZXF1aXJlZCAoKSA9XG4gIGxldCBpID0gY3JlYXRlSW5wdXQgZG9jdW1lbnQgaW5cbiAgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5jb2VyY2UgaSkjIy5yZXF1aXJlZFxuXG5sZXQgb3ZlcmZsb3dfbGltaXQgPSAyMTQ3NDgzXzAwMC5cblxuKCogbXMgKilcblxudHlwZSB0aW1lb3V0X2lkX3NhZmUgPSB0aW1lb3V0X2lkIG9wdGlvbiByZWZcblxubGV0IHNldFRpbWVvdXQgY2FsbGJhY2sgZCA6IHRpbWVvdXRfaWRfc2FmZSA9XG4gIGxldCBpZCA9IHJlZiBOb25lIGluXG4gIGxldCByZWMgbG9vcCBkICgpID1cbiAgICBsZXQgc3RlcCwgcmVtYWluID1cbiAgICAgIGlmIFBvbHkuKGQgPiBvdmVyZmxvd19saW1pdCkgdGhlbiBvdmVyZmxvd19saW1pdCwgZCAtLiBvdmVyZmxvd19saW1pdCBlbHNlIGQsIDAuXG4gICAgaW5cbiAgICBsZXQgY2IgPSBpZiBQb2x5LihyZW1haW4gPSAwLikgdGhlbiBjYWxsYmFjayBlbHNlIGxvb3AgcmVtYWluIGluXG4gICAgaWQgOj0gU29tZSAod2luZG93IyNzZXRUaW1lb3V0IChKcy53cmFwX2NhbGxiYWNrIGNiKSAoSnMuZmxvYXQgc3RlcCkpXG4gIGluXG4gIGxvb3AgZCAoKTtcbiAgaWRcblxubGV0IGNsZWFyVGltZW91dCAoaWQgOiB0aW1lb3V0X2lkX3NhZmUpID1cbiAgbWF0Y2ggIWlkIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSB4IC0+XG4gICAgICBpZCA6PSBOb25lO1xuICAgICAgd2luZG93IyNjbGVhclRpbWVvdXQgeFxuXG5sZXQganNfYXJyYXlfb2ZfY29sbGVjdGlvbiAoYyA6ICNlbGVtZW50IGNvbGxlY3Rpb24gSnMudCkgOiAjZWxlbWVudCBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICA9XG4gIEpzLlVuc2FmZS4obWV0aF9jYWxsIChqc19leHByIFwiW10uc2xpY2VcIikgXCJjYWxsXCIgW3wgaW5qZWN0IGMgfF0pXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4gRG9tX2h0bWxcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIGZvcm1EYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBhcHBlbmQgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYXBwZW5kX2Jsb2IgOiBqc19zdHJpbmcgdCAtPiBGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5sZXQgZm9ybURhdGEgOiBmb3JtRGF0YSB0IGNvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fRm9ybURhdGFcblxubGV0IGZvcm1EYXRhX2Zvcm0gOiAoZm9ybUVsZW1lbnQgdCAtPiBmb3JtRGF0YSB0KSBjb25zdHIgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0Zvcm1EYXRhXG5cbnR5cGUgZm9ybV9lbHQgPVxuICBbIGBTdHJpbmcgb2YganNfc3RyaW5nIHRcbiAgfCBgRmlsZSBvZiBGaWxlLmZpbGUgdFxuICBdXG5cbnR5cGUgZm9ybV9jb250ZW50cyA9XG4gIFsgYEZpZWxkcyBvZiAoc3RyaW5nICogZm9ybV9lbHQpIGxpc3QgcmVmXG4gIHwgYEZvcm1EYXRhIG9mIGZvcm1EYXRhIHRcbiAgXVxuXG5sZXQgcmVjIGZpbHRlcl9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCB2IDo6IHEgLT4gKFxuICAgICAgbWF0Y2ggZiB2IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgcVxuICAgICAgfCBTb21lIHYnIC0+IHYnIDo6IGZpbHRlcl9tYXAgZiBxKVxuXG5jbGFzcyB0eXBlIHN1Ym1pdHRhYmxlRWxlbWVudCA9IG9iamVjdFxuICBtZXRob2QgZGlzYWJsZWQgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBuYW1lIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG5sZXQgaGF2ZV9jb250ZW50IChlbHQgOiBzdWJtaXR0YWJsZUVsZW1lbnQgdCkgPVxuICBlbHQjIy5uYW1lIyMubGVuZ3RoID4gMCAmJiBub3QgKEpzLnRvX2Jvb2wgZWx0IyMuZGlzYWJsZWQpXG5cbmxldCBnZXRfdGV4dGFyZWFfdmFsIChlbHQgOiB0ZXh0QXJlYUVsZW1lbnQgdCkgPVxuICBpZiBoYXZlX2NvbnRlbnQgKGVsdCA6PiBzdWJtaXR0YWJsZUVsZW1lbnQgdClcbiAgdGhlblxuICAgIGxldCBuYW1lID0gdG9fc3RyaW5nIGVsdCMjLm5hbWUgaW5cbiAgICBbIG5hbWUsIGBTdHJpbmcgZWx0IyMudmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfc2VsZWN0X3ZhbCAoZWx0IDogc2VsZWN0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGlmIHRvX2Jvb2wgZWx0IyMubXVsdGlwbGVcbiAgICB0aGVuXG4gICAgICBsZXQgb3B0aW9ucyA9XG4gICAgICAgIEFycmF5LmluaXQgZWx0IyMub3B0aW9ucyMjLmxlbmd0aCAoZnVuIGkgLT4gT3B0LnRvX29wdGlvbiAoZWx0IyMub3B0aW9ucyMjaXRlbSBpKSlcbiAgICAgIGluXG4gICAgICBmaWx0ZXJfbWFwXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICAgICAgaWYgSnMudG9fYm9vbCBlIyMuc2VsZWN0ZWQgdGhlbiBTb21lIChuYW1lLCBgU3RyaW5nIGUjIy52YWx1ZSkgZWxzZSBOb25lKVxuICAgICAgICAoQXJyYXkudG9fbGlzdCBvcHRpb25zKVxuICAgIGVsc2UgWyBuYW1lLCBgU3RyaW5nIGVsdCMjLnZhbHVlIF1cbiAgZWxzZSBbXVxuXG5jbGFzcyB0eXBlIGZpbGVfaW5wdXQgPSBvYmplY3RcbiAgaW5oZXJpdCBpbnB1dEVsZW1lbnRcblxuICBtZXRob2QgZmlsZXMgOiBGaWxlLmZpbGVMaXN0IHQgb3B0ZGVmIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbXVsdGlwbGUgOiBib29sIG9wdGRlZiByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGdldF9pbnB1dF92YWwgPyhnZXQgPSBmYWxzZSkgKGVsdCA6IGlucHV0RWxlbWVudCB0KSA9XG4gIGlmIGhhdmVfY29udGVudCAoZWx0IDo+IHN1Ym1pdHRhYmxlRWxlbWVudCB0KVxuICB0aGVuXG4gICAgbGV0IG5hbWUgPSB0b19zdHJpbmcgZWx0IyMubmFtZSBpblxuICAgIGxldCB2YWx1ZSA9IGVsdCMjLnZhbHVlIGluXG4gICAgbWF0Y2ggdG9fYnl0ZXN0cmluZyBlbHQjIy5fdHlwZSMjdG9Mb3dlckNhc2Ugd2l0aFxuICAgIHwgXCJjaGVja2JveFwiIHwgXCJyYWRpb1wiIC0+XG4gICAgICAgIGlmIHRvX2Jvb2wgZWx0IyMuY2hlY2tlZCB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdIGVsc2UgW11cbiAgICB8IFwic3VibWl0XCIgfCBcInJlc2V0XCIgLT4gW11cbiAgICB8IFwidGV4dFwiIHwgXCJwYXNzd29yZFwiIC0+IFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgfCBcImZpbGVcIiAtPiAoXG4gICAgICAgIGlmIGdldFxuICAgICAgICB0aGVuIFsgbmFtZSwgYFN0cmluZyB2YWx1ZSBdXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgZWx0IDogZmlsZV9pbnB1dCB0ID0gVW5zYWZlLmNvZXJjZSBlbHQgaW5cbiAgICAgICAgICBtYXRjaCBPcHRkZWYudG9fb3B0aW9uIGVsdCMjLmZpbGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgbGlzdCAtPiAoXG4gICAgICAgICAgICAgIGlmIGxpc3QjIy5sZW5ndGggPSAwXG4gICAgICAgICAgICAgIHRoZW4gWyBuYW1lLCBgU3RyaW5nIChKcy5zdHJpbmcgXCJcIikgXVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgbWF0Y2ggT3B0ZGVmLnRvX29wdGlvbiBlbHQjIy5tdWx0aXBsZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSBmYWxzZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIE9wdC50b19vcHRpb24gKGxpc3QjI2l0ZW0gMCkgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGZpbGUgLT4gWyBuYW1lLCBgRmlsZSBmaWxlIF0pXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyX21hcFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiBmIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgZmlsZSAtPiBTb21lIChuYW1lLCBgRmlsZSBmaWxlKSlcbiAgICAgICAgICAgICAgICAgICAgICAoQXJyYXkudG9fbGlzdCAoQXJyYXkuaW5pdCBsaXN0IyMubGVuZ3RoIChmdW4gaSAtPiBsaXN0IyNpdGVtIGkpKSkpKVxuICAgIHwgXyAtPiBbIG5hbWUsIGBTdHJpbmcgdmFsdWUgXVxuICBlbHNlIFtdXG5cbmxldCBnZXRfZm9ybV9lbGVtZW50cyAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgbGV0IHJlYyBsb29wIGFjYyBpID1cbiAgICBpZiBpIDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgbWF0Y2ggT3B0LnRvX29wdGlvbiAoZm9ybSMjLmVsZW1lbnRzIyNpdGVtIGkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29wIGFjYyAoaSAtIGkpXG4gICAgICB8IFNvbWUgeCAtPiBsb29wICh4IDo6IGFjYykgKGkgLSAxKVxuICBpblxuICBsb29wIFtdIChmb3JtIyMuZWxlbWVudHMjIy5sZW5ndGggLSAxKVxuXG5sZXQgZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYgPVxuICBtYXRjaCB0YWdnZWQgdiB3aXRoXG4gIHwgU2VsZWN0IHYgLT4gZ2V0X3NlbGVjdF92YWwgdlxuICB8IElucHV0IHYgLT4gZ2V0X2lucHV0X3ZhbCA/Z2V0IHZcbiAgfCBUZXh0YXJlYSB2IC0+IGdldF90ZXh0YXJlYV92YWwgdlxuICB8IF8gLT4gW11cblxubGV0IGZvcm1fZWxlbWVudHMgP2dldCAoZm9ybSA6IGZvcm1FbGVtZW50IHQpID1cbiAgTGlzdC5mbGF0dGVuIChMaXN0Lm1hcCAoZnVuIHYgLT4gZ2V0X2VsZW1lbnRfY29udGVudCA/Z2V0IHYpIChnZXRfZm9ybV9lbGVtZW50cyBmb3JtKSlcblxubGV0IGFwcGVuZCAoZm9ybV9jb250ZW50cyA6IGZvcm1fY29udGVudHMpIChmb3JtX2VsdCA6IHN0cmluZyAqIGZvcm1fZWx0KSA9XG4gIG1hdGNoIGZvcm1fY29udGVudHMgd2l0aFxuICB8IGBGaWVsZHMgbGlzdCAtPiBsaXN0IDo9IGZvcm1fZWx0IDo6ICFsaXN0XG4gIHwgYEZvcm1EYXRhIGYgLT4gKFxuICAgICAgbWF0Y2ggZm9ybV9lbHQgd2l0aFxuICAgICAgfCBuYW1lLCBgU3RyaW5nIHMgLT4gZiMjYXBwZW5kIChzdHJpbmcgbmFtZSkgc1xuICAgICAgfCBuYW1lLCBgRmlsZSBmaWxlIC0+IGYjI2FwcGVuZF9ibG9iIChzdHJpbmcgbmFtZSkgKGZpbGUgOj4gRmlsZS5ibG9iIHQpKVxuXG5sZXQgZW1wdHlfZm9ybV9jb250ZW50cyAoKSA9XG4gIG1hdGNoIE9wdGRlZi50b19vcHRpb24gKEpzLmRlZiBmb3JtRGF0YSkgd2l0aFxuICB8IE5vbmUgLT4gYEZpZWxkcyAocmVmIFtdKVxuICB8IFNvbWUgY29uc3RyIC0+IGBGb3JtRGF0YSAobmV3JWpzIGNvbnN0cilcblxubGV0IHBvc3RfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgbGV0IGNvbnRlbnRzID0gZW1wdHlfZm9ybV9jb250ZW50cyAoKSBpblxuICBMaXN0Lml0ZXIgKGFwcGVuZCBjb250ZW50cykgKGZvcm1fZWxlbWVudHMgZm9ybSk7XG4gIGNvbnRlbnRzXG5cbmxldCBnZXRfZm9ybV9jb250ZW50cyBmb3JtID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgbmFtZSwgYFN0cmluZyBzIC0+IG5hbWUsIHRvX3N0cmluZyBzXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIChmb3JtX2VsZW1lbnRzIH5nZXQ6dHJ1ZSBmb3JtKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IFVOU0VOVFxuICB8IE9QRU5FRFxuICB8IEhFQURFUlNfUkVDRUlWRURcbiAgfCBMT0FESU5HXG4gIHwgRE9ORVxuXG50eXBlIF8gcmVzcG9uc2UgPVxuICB8IEFycmF5QnVmZmVyIDogVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXIgdCBPcHQudCByZXNwb25zZVxuICB8IEJsb2IgOiAjRmlsZS5ibG9iIHQgT3B0LnQgcmVzcG9uc2VcbiAgfCBEb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IE9wdC50IHJlc3BvbnNlXG4gIHwgSlNPTiA6ICdhIE9wdC50IHJlc3BvbnNlXG4gIHwgVGV4dCA6IGpzX3N0cmluZyB0IHJlc3BvbnNlXG4gIHwgRGVmYXVsdCA6IHN0cmluZyByZXNwb25zZVxuXG5jbGFzcyB0eXBlIHhtbEh0dHBSZXF1ZXN0ID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIG9ucmVhZHlzdGF0ZWNoYW5nZSA6ICh1bml0IC0+IHVuaXQpIEpzLmNhbGxiYWNrIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX29wZW4gOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIF9vcGVuX2Z1bGwgOlxuICAgICAgIGpzX3N0cmluZyB0XG4gICAgLT4ganNfc3RyaW5nIHRcbiAgICAtPiBib29sIHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiBqc19zdHJpbmcgdCBvcHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0UmVxdWVzdEhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBvdmVycmlkZU1pbWVUeXBlIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmQgOiBqc19zdHJpbmcgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6ICNGaWxlLmJsb2IgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2VuZF9kb2N1bWVudCA6IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZW5kX2Zvcm1EYXRhIDogRm9ybS5mb3JtRGF0YSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhYm9ydCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGF0dXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdGF0dXNUZXh0IDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRSZXNwb25zZUhlYWRlciA6IGpzX3N0cmluZyB0IC0+IGpzX3N0cmluZyB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldEFsbFJlc3BvbnNlSGVhZGVycyA6IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgcmVzcG9uc2UgOiBGaWxlLmZpbGVfYW55IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VUZXh0IDoganNfc3RyaW5nIHQgb3B0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVzcG9uc2VYTUwgOiBEb20uZWxlbWVudCBEb20uZG9jdW1lbnQgdCBvcHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXNwb25zZVR5cGUgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIHdpdGhDcmVkZW50aWFscyA6IGJvb2wgdCB3cml0ZW9ubHlfcHJvcFxuXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9udGltZW91dCA6XG4gICAgKCdzZWxmIHQsICdzZWxmIEZpbGUucHJvZ3Jlc3NFdmVudCB0KSBEb20uZXZlbnRfbGlzdGVuZXIgd3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgdXBsb2FkIDogeG1sSHR0cFJlcXVlc3RVcGxvYWQgdCBvcHRkZWYgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmFuZCB4bWxIdHRwUmVxdWVzdFVwbG9hZCA9IG9iamVjdCAoJ3NlbGYpXG4gIGluaGVyaXQgRmlsZS5wcm9ncmVzc0V2ZW50VGFyZ2V0XG5lbmRcblxubW9kdWxlIEV2ZW50ID0gc3RydWN0XG4gIHR5cGUgdHlwID0geG1sSHR0cFJlcXVlc3QgRmlsZS5wcm9ncmVzc0V2ZW50IHQgRG9tLkV2ZW50LnR5cFxuXG4gIGxldCByZWFkeXN0YXRlY2hhbmdlID0gRG9tLkV2ZW50Lm1ha2UgXCJyZWFkeXN0YXRlY2hhbmdlXCJcblxuICBsZXQgbG9hZHN0YXJ0ID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2Fkc3RhcnRcIlxuXG4gIGxldCBwcm9ncmVzcyA9IERvbS5FdmVudC5tYWtlIFwicHJvZ3Jlc3NcIlxuXG4gIGxldCBhYm9ydCA9IERvbS5FdmVudC5tYWtlIFwiYWJvcnRcIlxuXG4gIGxldCBlcnJvciA9IERvbS5FdmVudC5tYWtlIFwiZXJyb3JcIlxuXG4gIGxldCBsb2FkID0gRG9tLkV2ZW50Lm1ha2UgXCJsb2FkXCJcblxuICBsZXQgdGltZW91dCA9IERvbS5FdmVudC5tYWtlIFwidGltZW91dFwiXG5cbiAgbGV0IGxvYWRlbmQgPSBEb20uRXZlbnQubWFrZSBcImxvYWRlbmRcIlxuZW5kXG5cbmV4dGVybmFsIGNyZWF0ZSA6IHVuaXQgLT4geG1sSHR0cFJlcXVlc3QgSnMudCA9IFwiY2FtbF94bWxodHRwcmVxdWVzdF9jcmVhdGVcIlxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBPQ2FtbFBybzogR3LDqWdvaXJlIEhlbnJ5LCDDh2HEn2RhxZ8gQm96bWFuLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuIERvbV9odG1sXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3b3JrZXIgPSBvYmplY3QgKCdzZWxmKVxuICBpbmhlcml0IGV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgZXJyb3JFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ2IgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHBvc3RNZXNzYWdlIDogJ2EgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRlcm1pbmF0ZSA6IHVuaXQgbWV0aFxuZW5kXG5cbmFuZCBlcnJvckV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZXZlbnRcblxuICBtZXRob2QgbWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlsZW5hbWUgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxpbmVubyA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbG5vIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZXJyb3IgOiBVbnNhZmUuYW55IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5hbmQgWydhXSBtZXNzYWdlRXZlbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBldmVudFxuXG4gIG1ldGhvZCBkYXRhIDogJ2EgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCB3b3JrZXIgPSBVbnNhZmUuZ2xvYmFsIyMuX1dvcmtlclxuXG5sZXQgY3JlYXRlIHNjcmlwdCA9IG5ldyVqcyB3b3JrZXIgKHN0cmluZyBzY3JpcHQpXG5cbmxldCBpbXBvcnRfc2NyaXB0cyBzY3JpcHRzIDogdW5pdCA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLmltcG9ydFNjcmlwdHMpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIuaW1wb3J0X3NjcmlwdHMgaXMgdW5kZWZpbmVkXCI7XG4gIFVuc2FmZS5mdW5fY2FsbFxuICAgIFVuc2FmZS5nbG9iYWwjIy5pbXBvcnRTY3JpcHRzXG4gICAgKEFycmF5Lm1hcCAoZnVuIHMgLT4gVW5zYWZlLmluamVjdCAoc3RyaW5nIHMpKSAoQXJyYXkub2ZfbGlzdCBzY3JpcHRzKSlcblxubGV0IHNldF9vbm1lc3NhZ2UgaGFuZGxlciA9XG4gIGlmIG5vdCAoSnMuT3B0ZGVmLnRlc3QgVW5zYWZlLmdsb2JhbCMjLm9ubWVzc2FnZSlcbiAgdGhlbiBpbnZhbGlkX2FyZyBcIldvcmtlci5vbm1lc3NhZ2UgaXMgdW5kZWZpbmVkXCI7XG4gIGxldCBqc19oYW5kbGVyIChldiA6ICdhIG1lc3NhZ2VFdmVudCBKcy50KSA9IGhhbmRsZXIgZXYjIy5kYXRhIGluXG4gIFVuc2FmZS5nbG9iYWwjIy5vbm1lc3NhZ2UgOj0gd3JhcF9jYWxsYmFjayBqc19oYW5kbGVyXG5cbmxldCBwb3N0X21lc3NhZ2UgbXNnID1cbiAgaWYgbm90IChKcy5PcHRkZWYudGVzdCBVbnNhZmUuZ2xvYmFsIyMucG9zdE1lc3NhZ2UpXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJXb3JrZXIub25tZXNzYWdlIGlzIHVuZGVmaW5lZFwiO1xuICBVbnNhZmUuZ2xvYmFsIyNwb3N0TWVzc2FnZSBtc2dcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSmFjcXVlcy1QYXNjYWwgRGVwbGFpeFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlYWR5U3RhdGUgPVxuICB8IENPTk5FQ1RJTkdcbiAgfCBPUEVOXG4gIHwgQ0xPU0lOR1xuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gY2xvc2VFdmVudCA9IG9iamVjdFxuICBpbmhlcml0IFsnYV0gRG9tLmV2ZW50XG5cbiAgbWV0aG9kIGNvZGUgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZWFzb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdhc0NsZWFuIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9idWZmZXIgOiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZGF0YV9ibG9iIDogRmlsZS5ibG9iIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgd2ViU29ja2V0ID0gb2JqZWN0ICgnc2VsZilcbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB1cmwgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJlYWR5U3RhdGUgOiByZWFkeVN0YXRlIEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYnVmZmVyZWRBbW91bnQgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm9wZW4gOiAoJ3NlbGYgSnMudCwgJ3NlbGYgRG9tLmV2ZW50IEpzLnQpIERvbS5ldmVudF9saXN0ZW5lciBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbmNsb3NlIDpcbiAgICAoJ3NlbGYgSnMudCwgJ3NlbGYgY2xvc2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2Qgb25lcnJvciA6ICgnc2VsZiBKcy50LCAnc2VsZiBEb20uZXZlbnQgSnMudCkgRG9tLmV2ZW50X2xpc3RlbmVyIEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIGV4dGVuc2lvbnMgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByb3RvY29sIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbG9zZSA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjbG9zZV93aXRoQ29kZSA6IGludCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgY2xvc2Vfd2l0aENvZGVBbmRSZWFzb24gOiBpbnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9ubWVzc2FnZSA6XG4gICAgKCdzZWxmIEpzLnQsICdzZWxmIG1lc3NhZ2VFdmVudCBKcy50KSBEb20uZXZlbnRfbGlzdGVuZXIgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgYmluYXJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICBtZXRob2Qgc2VuZCA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBzZW5kX2J1ZmZlciA6IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHNlbmRfYmxvYiA6IEZpbGUuYmxvYiBKcy50IC0+IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCB3ZWJTb2NrZXQgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbCA9IHdlYlNvY2tldFxuXG5sZXQgd2ViU29ja2V0X3dpdGhQcm90b2NvbHMgPSB3ZWJTb2NrZXRcblxubGV0IGlzX3N1cHBvcnRlZCAoKSA9IEpzLk9wdGRlZi50ZXN0IHdlYlNvY2tldFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMiBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG4oKiogNS4xIFR5cGVzICopXG5cbnR5cGUgc2l6ZWkgPSBpbnRcblxudHlwZSBzaXplaXB0ciA9IGludFxuXG50eXBlIGludHB0ciA9IGludFxuXG50eXBlIHVpbnQgPSBpbnRcblxudHlwZSBjbGFtcGYgPSBudW1iZXJfdFxuXG50eXBlIHZvaWRcblxudHlwZSBjbGVhckJ1ZmZlck1hc2sgPSBpbnRcblxudHlwZSBiZWdpbk1vZGVcblxudHlwZSBibGVuZGluZ0ZhY3RvclxuXG50eXBlIGJsZW5kTW9kZVxuXG50eXBlIGJ1ZmZlclRhcmdldFxuXG50eXBlIGJ1ZmZlclVzYWdlXG5cbnR5cGUgY3VsbEZhY2VNb2RlXG5cbnR5cGUgZGVwdGhGdW5jdGlvblxuXG50eXBlIGVuYWJsZUNhcFxuXG50eXBlIGVycm9yQ29kZVxuXG50eXBlIGZyb250RmFjZURpclxuXG50eXBlIGhpbnRUYXJnZXRcblxudHlwZSBoaW50TW9kZVxuXG50eXBlIHRleHR1cmVVbml0ID0gaW50XG5cbnR5cGUgJ2EgcGl4ZWxTdG9yZVBhcmFtXG5cbnR5cGUgc3RlbmNpbE9wXG5cbnR5cGUgZmJUYXJnZXRcblxudHlwZSBhdHRhY2htZW50UG9pbnRcblxudHlwZSByYlRhcmdldFxuXG50eXBlIHRleFRhcmdldFxuXG50eXBlICdhIHBhcmFtZXRlclxuXG50eXBlICdhIGJ1ZmZlclBhcmFtZXRlclxuXG50eXBlICdhIHZlcnRleEF0dHJpYlBhcmFtXG5cbnR5cGUgdmVydGV4QXR0cmliUG9pbnRlclBhcmFtXG5cbnR5cGUgJ2EgYXR0YWNoUGFyYW1cblxudHlwZSBmcmFtZWJ1ZmZlclN0YXR1c1xuXG50eXBlICdhIHJlbmRlcmJ1ZmZlclBhcmFtXG5cbnR5cGUgZm9ybWF0XG5cbnR5cGUgcGl4ZWxGb3JtYXRcblxudHlwZSBwaXhlbFR5cGVcblxudHlwZSAnYSB0ZXhQYXJhbVxuXG50eXBlIGRhdGFUeXBlXG5cbnR5cGUgc2hhZGVyVHlwZVxuXG50eXBlICdhIHByb2dyYW1QYXJhbVxuXG50eXBlICdhIHNoYWRlclBhcmFtXG5cbnR5cGUgdGV4dHVyZUZpbHRlclxuXG50eXBlIHdyYXBNb2RlXG5cbnR5cGUgdGV4RmlsdGVyXG5cbnR5cGUgdW5pZm9ybVR5cGVcblxudHlwZSBjb2xvcnNwYWNlQ29udmVyc2lvblxuXG50eXBlIHNoYWRlclByZWNpc2lvblR5cGVcblxudHlwZSBvYmplY3RUeXBlXG5cbigqKiA1LjIgV2ViR0xDb250ZXh0QXR0cmlidXRlcyAqKVxuY2xhc3MgdHlwZSBjb250ZXh0QXR0cmlidXRlcyA9IG9iamVjdFxuICBtZXRob2QgYWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBkZXB0aCA6IGJvb2wgdCBwcm9wXG5cbiAgbWV0aG9kIHN0ZW5jaWwgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBhbnRpYWxpYXMgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVtdWx0aXBsaWVkQWxwaGEgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZURyYXdpbmdCdWZmZXIgOiBib29sIHQgcHJvcFxuXG4gIG1ldGhvZCBwcmVmZXJMb3dQb3dlclRvSGlnaFBlcmZvcm1hbmNlIDogYm9vbCB0IHByb3BcblxuICBtZXRob2QgZmFpbElmTWFqb3JQZXJmb3JtYW5jZUNhdmVhdCA6IGJvb2wgdCBwcm9wXG5lbmRcblxubGV0IGRlZmF1bHRDb250ZXh0QXR0cmlidXRlcyA9XG4gIEpzLlVuc2FmZS4oXG4gICAgb2JqXG4gICAgICBbfCBcImFscGhhXCIsIGluamVjdCBfdHJ1ZVxuICAgICAgIDsgXCJkZXB0aFwiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwic3RlbmNpbFwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImFudGlhbGlhc1wiLCBpbmplY3QgX3RydWVcbiAgICAgICA7IFwicHJlbXVsdGlwbGllZEFscGhhXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlc2VydmVEcmF3aW5nQnVmZmVyXCIsIGluamVjdCBfZmFsc2VcbiAgICAgICA7IFwicHJlZmVyTG93UG93ZXJUb0hpZ2hQZXJmb3JtYW5jZVwiLCBpbmplY3QgX2ZhbHNlXG4gICAgICAgOyBcImZhaWxJZk1ham9yUGVyZm9ybWFuY2VDYXZlYXRcIiwgaW5qZWN0IF9mYWxzZVxuICAgICAgfF0pXG5cbnR5cGUgYnVmZmVyXG5cbnR5cGUgZnJhbWVidWZmZXJcblxudHlwZSBwcm9ncmFtXG5cbnR5cGUgcmVuZGVyYnVmZmVyXG5cbnR5cGUgc2hhZGVyXG5cbnR5cGUgdGV4dHVyZVxuXG50eXBlICdhIHVuaWZvcm1Mb2NhdGlvblxuXG5jbGFzcyB0eXBlIGFjdGl2ZUluZm8gPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfdHlwZSA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmFtZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHNoYWRlclByZWNpc2lvbkZvcm1hdCA9IG9iamVjdFxuICBtZXRob2QgcmFuZ2VNaW4gOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByYW5nZU1heCA6IGludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZWNpc2lvbiA6IGludCByZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSByZW5kZXJpbmdDb250ZXh0ID0gb2JqZWN0XG4gICgqKiA1LjEzLjEgQXR0cmlidXRlcyAqKVxuXG4gIG1ldGhvZCBjYW52YXMgOiBEb21faHRtbC5jYW52YXNFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkcmF3aW5nQnVmZmVyV2lkdGggOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRyYXdpbmdCdWZmZXJIZWlnaHQgOiBzaXplaSByZWFkb25seV9wcm9wXG5cbiAgKCoqIDUuMTMuMiBHZXR0aW5nIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb250ZXh0ICopXG5cbiAgbWV0aG9kIGdldENvbnRleHRBdHRyaWJ1dGVzIDogY29udGV4dEF0dHJpYnV0ZXMgdCBtZXRoXG5cbiAgKCoqIDUuMTMuMyBTZXR0aW5nIGFuZCBnZXR0aW5nIHN0YXRlICopXG5cbiAgbWV0aG9kIGFjdGl2ZVRleHR1cmUgOiB0ZXh0dXJlVW5pdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvbiA6IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRFcXVhdGlvblNlcGFyYXRlIDogYmxlbmRNb2RlIC0+IGJsZW5kTW9kZSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmxlbmRGdW5jIDogYmxlbmRpbmdGYWN0b3IgLT4gYmxlbmRpbmdGYWN0b3IgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJsZW5kRnVuY1NlcGFyYXRlIDpcbiAgICBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiBibGVuZGluZ0ZhY3RvciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJDb2xvciA6IGNsYW1wZiAtPiBjbGFtcGYgLT4gY2xhbXBmIC0+IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJEZXB0aCA6IGNsYW1wZiAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY2xlYXJTdGVuY2lsIDogaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb2xvck1hc2sgOiBib29sIHQgLT4gYm9vbCB0IC0+IGJvb2wgdCAtPiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGN1bGxGYWNlIDogY3VsbEZhY2VNb2RlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZXB0aE1hc2sgOiBib29sIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlcHRoUmFuZ2UgOiBjbGFtcGYgLT4gY2xhbXBmIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkaXNhYmxlIDogZW5hYmxlQ2FwIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlbmFibGUgOiBlbmFibGVDYXAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyb250RmFjZSA6IGZyb250RmFjZURpciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0UGFyYW1ldGVyIDogJ2EuICdhIHBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldEVycm9yIDogZXJyb3JDb2RlIG1ldGhcblxuICBtZXRob2QgaGludCA6IGhpbnRUYXJnZXQgLT4gaGludE1vZGUgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGlzRW5hYmxlZCA6IGVuYWJsZUNhcCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBsaW5lV2lkdGggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgcGl4ZWxTdG9yZWkgOiAnYS4gJ2EgcGl4ZWxTdG9yZVBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBwb2x5Z29uT2Zmc2V0IDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNhbXBsZUNvdmVyYWdlIDogY2xhbXBmIC0+IGJvb2wgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbEZ1bmMgOiBkZXB0aEZ1bmN0aW9uIC0+IGludCAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsRnVuY1NlcGFyYXRlIDogY3VsbEZhY2VNb2RlIC0+IGRlcHRoRnVuY3Rpb24gLT4gaW50IC0+IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHN0ZW5jaWxNYXNrIDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE1hc2tTZXBhcmF0ZSA6IGN1bGxGYWNlTW9kZSAtPiB1aW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzdGVuY2lsT3AgOiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc3RlbmNpbE9wU2VwYXJhdGUgOlxuICAgIGN1bGxGYWNlTW9kZSAtPiBzdGVuY2lsT3AgLT4gc3RlbmNpbE9wIC0+IHN0ZW5jaWxPcCAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy40IFZpZXdpbmcgYW5kIGNsaXBwaW5nICopXG5cbiAgbWV0aG9kIHNjaXNzb3IgOiBpbnQgLT4gaW50IC0+IHNpemVpIC0+IHNpemVpIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuNSBCdWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyIDogYnVmZmVyVGFyZ2V0IC0+IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kQnVmZmVyXyA6IGJ1ZmZlclRhcmdldCAtPiBidWZmZXIgdCBvcHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlckRhdGFfY3JlYXRlIDogYnVmZmVyVGFyZ2V0IC0+IHNpemVpcHRyIC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhIDpcbiAgICBidWZmZXJUYXJnZXQgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IGJ1ZmZlclVzYWdlIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IFR5cGVkX2FycmF5LmFycmF5QnVmZmVyIHQgLT4gYnVmZmVyVXNhZ2UgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJ1ZmZlclN1YkRhdGEgOlxuICAgIGJ1ZmZlclRhcmdldCAtPiBpbnRwdHIgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBidWZmZXJTdWJEYXRhX3JhdyA6XG4gICAgYnVmZmVyVGFyZ2V0IC0+IGludHB0ciAtPiBUeXBlZF9hcnJheS5hcnJheUJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVCdWZmZXIgOiBidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZUJ1ZmZlciA6IGJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRCdWZmZXJQYXJhbWV0ZXIgOiAnYS4gYnVmZmVyVGFyZ2V0IC0+ICdhIGJ1ZmZlclBhcmFtZXRlciAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzQnVmZmVyIDogYnVmZmVyIHQgLT4gYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy42IEZyYW1lYnVmZmVyIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEZyYW1lYnVmZmVyXyA6IGZiVGFyZ2V0IC0+IGZyYW1lYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjaGVja0ZyYW1lYnVmZmVyU3RhdHVzIDogZmJUYXJnZXQgLT4gZnJhbWVidWZmZXJTdGF0dXMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVGcmFtZWJ1ZmZlciA6IGZyYW1lYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZyYW1lYnVmZmVyVGV4dHVyZTJEIDpcbiAgICBmYlRhcmdldCAtPiBhdHRhY2htZW50UG9pbnQgLT4gdGV4VGFyZ2V0IC0+IHRleHR1cmUgdCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlciA6XG4gICAgJ2EuIGZiVGFyZ2V0IC0+IGF0dGFjaG1lbnRQb2ludCAtPiAnYSBhdHRhY2hQYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGlzRnJhbWVidWZmZXIgOiBmcmFtZWJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgKCoqIDUuMTMuNyBSZW5kZXJidWZmZXIgb2JqZWN0cyAqKVxuXG4gIG1ldGhvZCBiaW5kUmVuZGVyYnVmZmVyIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGJpbmRSZW5kZXJidWZmZXJfIDogcmJUYXJnZXQgLT4gcmVuZGVyYnVmZmVyIHQgb3B0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVSZW5kZXJidWZmZXIgOiByZW5kZXJidWZmZXIgdCBtZXRoXG5cbiAgbWV0aG9kIGRlbGV0ZVJlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXIgOiAnYS4gcmJUYXJnZXQgLT4gJ2EgcmVuZGVyYnVmZmVyUGFyYW0gLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBpc1JlbmRlcmJ1ZmZlciA6IHJlbmRlcmJ1ZmZlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHJlbmRlcmJ1ZmZlclN0b3JhZ2UgOiByYlRhcmdldCAtPiBmb3JtYXQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuOCBUZXh0dXJlIG9iamVjdHMgKilcblxuICBtZXRob2QgYmluZFRleHR1cmUgOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBiaW5kVGV4dHVyZV8gOiB0ZXhUYXJnZXQgLT4gdGV4dHVyZSB0IG9wdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY29tcHJlc3NlZFRleEltYWdlMkQgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+ICNUeXBlZF9hcnJheS5hcnJheUJ1ZmZlclZpZXcgdFxuICAgIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvcHlUZXhJbWFnZTJEIDpcbiAgICB0ZXhUYXJnZXQgLT4gaW50IC0+IHBpeGVsRm9ybWF0IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb3B5VGV4U3ViSW1hZ2UyRCA6XG4gICAgdGV4VGFyZ2V0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiBpbnQgLT4gc2l6ZWkgLT4gc2l6ZWkgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVRleHR1cmUgOiB0ZXh0dXJlIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVUZXh0dXJlIDogdGV4dHVyZSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZW5lcmF0ZU1pcG1hcCA6IHRleFRhcmdldCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0VGV4UGFyYW1ldGVyIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgaXNUZXh0dXJlIDogdGV4dHVyZSB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfbmV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHNpemVpXG4gICAgLT4gc2l6ZWlcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IHZvaWQgb3B0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZXcgOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gc2l6ZWlcbiAgICAtPiBzaXplaVxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gI1R5cGVkX2FycmF5LmFycmF5QnVmZmVyVmlldyB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlRGF0YSA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuaW1hZ2VFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4SW1hZ2UyRF9mcm9tQ2FudmFzIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleEltYWdlMkRfZnJvbVZpZGVvIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiB7W1xuICAgICAgbWV0aG9kIHRleFBhcmFtZXRlcmYgOiB0ZXhUYXJnZXQgLT4gdGV4UGFyYW0gLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG4gICAgIF19XG4gICopXG4gIG1ldGhvZCB0ZXhQYXJhbWV0ZXJpIDogdGV4VGFyZ2V0IC0+ICdhIHRleFBhcmFtIC0+ICdhIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0ZXhTdWJJbWFnZTJEX2Zyb21WaWV3IDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tSW1hZ2VEYXRhIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRGF0YSB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUltYWdlIDpcbiAgICAgICB0ZXhUYXJnZXRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBwaXhlbEZvcm1hdFxuICAgIC0+IHBpeGVsVHlwZVxuICAgIC0+IERvbV9odG1sLmltYWdlRWxlbWVudCB0XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRleFN1YkltYWdlMkRfZnJvbUNhbnZhcyA6XG4gICAgICAgdGV4VGFyZ2V0XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gaW50XG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiBEb21faHRtbC5jYW52YXNFbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdGV4U3ViSW1hZ2UyRF9mcm9tVmlkZW8gOlxuICAgICAgIHRleFRhcmdldFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IGludFxuICAgIC0+IHBpeGVsRm9ybWF0XG4gICAgLT4gcGl4ZWxUeXBlXG4gICAgLT4gRG9tX2h0bWwudmlkZW9FbGVtZW50IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy45IFByb2dyYW1zIGFuZCBTaGFkZXJzICopXG5cbiAgbWV0aG9kIGF0dGFjaFNoYWRlciA6IHByb2dyYW0gdCAtPiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgYmluZEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbXBpbGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlUHJvZ3JhbSA6IHByb2dyYW0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNoYWRlciA6IHNoYWRlclR5cGUgLT4gc2hhZGVyIHQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWxldGVTaGFkZXIgOiBzaGFkZXIgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGV0YWNoU2hhZGVyIDogcHJvZ3JhbSB0IC0+IHNoYWRlciB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBnZXRBdHRhY2hlZFNoYWRlcnMgOiBwcm9ncmFtIHQgLT4gc2hhZGVyIHQganNfYXJyYXkgdCBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1QYXJhbWV0ZXIgOiAnYS4gcHJvZ3JhbSB0IC0+ICdhIHByb2dyYW1QYXJhbSAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGdldFByb2dyYW1JbmZvTG9nIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUGFyYW1ldGVyIDogJ2EuIHNoYWRlciB0IC0+ICdhIHNoYWRlclBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IDpcbiAgICBzaGFkZXJUeXBlIC0+IHNoYWRlclByZWNpc2lvblR5cGUgLT4gc2hhZGVyUHJlY2lzaW9uRm9ybWF0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJJbmZvTG9nIDogc2hhZGVyIHQgLT4ganNfc3RyaW5nIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIGlzUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBpc1NoYWRlciA6IHNoYWRlciB0IC0+IGJvb2wgdCBtZXRoXG5cbiAgbWV0aG9kIGxpbmtQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzaGFkZXJTb3VyY2UgOiBzaGFkZXIgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdXNlUHJvZ3JhbSA6IHByb2dyYW0gdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmFsaWRhdGVQcm9ncmFtIDogcHJvZ3JhbSB0IC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjEwIFVuaWZvcm1zIGFuZCBhdHRyaWJ1dGVzICopXG5cbiAgbWV0aG9kIGRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSA6IHVpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVuYWJsZVZlcnRleEF0dHJpYkFycmF5IDogdWludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlQXR0cmliIDogcHJvZ3JhbSB0IC0+IHVpbnQgLT4gYWN0aXZlSW5mbyB0IG1ldGhcblxuICBtZXRob2QgZ2V0QWN0aXZlVW5pZm9ybSA6IHByb2dyYW0gdCAtPiB1aW50IC0+IGFjdGl2ZUluZm8gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEF0dHJpYkxvY2F0aW9uIDogcHJvZ3JhbSB0IC0+IGpzX3N0cmluZyB0IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldFVuaWZvcm0gOiAnYSAnYi4gcHJvZ3JhbSB0IC0+ICdhIHVuaWZvcm1Mb2NhdGlvbiB0IC0+ICdiIG1ldGhcblxuICBtZXRob2QgZ2V0VW5pZm9ybUxvY2F0aW9uIDogJ2EuIHByb2dyYW0gdCAtPiBqc19zdHJpbmcgdCAtPiAnYSB1bmlmb3JtTG9jYXRpb24gdCBtZXRoXG5cbiAgbWV0aG9kIGdldFZlcnRleEF0dHJpYiA6ICdhLiB1aW50IC0+ICdhIHZlcnRleEF0dHJpYlBhcmFtIC0+ICdhIG1ldGhcblxuICBtZXRob2QgZ2V0VmVydGV4QXR0cmliT2Zmc2V0IDogdWludCAtPiB2ZXJ0ZXhBdHRyaWJQb2ludGVyUGFyYW0gLT4gc2l6ZWlwdHIgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFmdl90eXBlZCA6XG4gICAgbnVtYmVyX3QgdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0xZnYgOiBudW1iZXJfdCB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWkgOiBpbnQgdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMWl2X3R5cGVkIDogaW50IHVuaWZvcm1Mb2NhdGlvbiB0IC0+IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTFpdiA6IGludCB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJmIDogWyBgdmVjMiBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMmZ2X3R5cGVkIDpcbiAgICBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0yZnYgOiBbIGB2ZWMyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpIDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtMml2IDogWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTJpdl90eXBlZCA6XG4gICAgWyBgaXZlYzIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZiA6XG4gICAgWyBgdmVjMyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtM2Z2X3R5cGVkIDpcbiAgICBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zZnYgOiBbIGB2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpIDogWyBgaXZlYzMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTNpdiA6IFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm0zaXZfdHlwZWQgOlxuICAgIFsgYGl2ZWMzIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGYgOlxuICAgICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00ZnZfdHlwZWQgOlxuICAgIFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRmdiA6IFsgYHZlYzQgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtNGkgOiBbIGBpdmVjNCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGludCAtPiBpbnQgLT4gaW50IC0+IGludCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybTRpdiA6IFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gaW50IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm00aXZfdHlwZWQgOlxuICAgIFsgYGl2ZWM0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4MmZ2IDpcbiAgICBbIGBtYXQyIF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgyZnZfdHlwZWQgOlxuICAgIFsgYG1hdDIgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVuaWZvcm1NYXRyaXgzZnYgOlxuICAgIFsgYG1hdDMgXSB1bmlmb3JtTG9jYXRpb24gdCAtPiBib29sIHQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDNmdl90eXBlZCA6XG4gICAgWyBgbWF0MyBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdW5pZm9ybU1hdHJpeDRmdiA6XG4gICAgWyBgbWF0NCBdIHVuaWZvcm1Mb2NhdGlvbiB0IC0+IGJvb2wgdCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bmlmb3JtTWF0cml4NGZ2X3R5cGVkIDpcbiAgICBbIGBtYXQ0IF0gdW5pZm9ybUxvY2F0aW9uIHQgLT4gYm9vbCB0IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIxZiA6IHVpbnQgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjFmdiA6IHVpbnQgLT4gbnVtYmVyX3QganNfYXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMWZ2X3R5cGVkIDogdWludCAtPiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliMmYgOiB1aW50IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIyZnYgOiB1aW50IC0+IG51bWJlcl90IGpzX2FycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjJmdl90eXBlZCA6IHVpbnQgLT4gVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHZlcnRleEF0dHJpYjNmIDogdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliM2Z2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWIzZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZiA6XG4gICAgdWludCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgdmVydGV4QXR0cmliNGZ2IDogdWludCAtPiBudW1iZXJfdCBqc19hcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWI0ZnZfdHlwZWQgOiB1aW50IC0+IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB2ZXJ0ZXhBdHRyaWJQb2ludGVyIDpcbiAgICB1aW50IC0+IGludCAtPiBkYXRhVHlwZSAtPiBib29sIHQgLT4gc2l6ZWkgLT4gaW50cHRyIC0+IHVuaXQgbWV0aFxuXG4gICgqKiA1LjEzLjExIFdyaXRpbmcgdG8gdGhlIGRyYXdpbmcgYnVmZmVyICopXG5cbiAgbWV0aG9kIGNsZWFyIDogY2xlYXJCdWZmZXJNYXNrIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkcmF3QXJyYXlzIDogYmVnaW5Nb2RlIC0+IGludCAtPiBzaXplaSAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZHJhd0VsZW1lbnRzIDogYmVnaW5Nb2RlIC0+IHNpemVpIC0+IGRhdGFUeXBlIC0+IGludHB0ciAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZmluaXNoIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGZsdXNoIDogdW5pdCBtZXRoXG5cbiAgKCoqIDUuMTMuMTIgUmVhZGluZyBiYWNrIHBpeGVscyAqKVxuXG4gIG1ldGhvZCByZWFkUGl4ZWxzIDpcbiAgICAgICBpbnRcbiAgICAtPiBpbnRcbiAgICAtPiBzaXplaVxuICAgIC0+IHNpemVpXG4gICAgLT4gcGl4ZWxGb3JtYXRcbiAgICAtPiBwaXhlbFR5cGVcbiAgICAtPiAjVHlwZWRfYXJyYXkuYXJyYXlCdWZmZXJWaWV3IHRcbiAgICAtPiB1bml0IG1ldGhcblxuICAoKiogNS4xMy4xMyBEZXRlY3RpbmcgY29udGV4dCBsb3N0IGV2ZW50cyAqKVxuXG4gIG1ldGhvZCBpc0NvbnRleHRMb3N0IDogYm9vbCB0IG1ldGhcblxuICAoKiogNS4xMy4xNCBEZXRlY3RpbmcgYW5kIGVuYWJsaW5nIGV4dGVuc2lvbnMgKilcblxuICBtZXRob2QgZ2V0U3VwcG9ydGVkRXh0ZW5zaW9ucyA6IGpzX3N0cmluZyB0IGpzX2FycmF5IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnNpb24gOiAnYS4ganNfc3RyaW5nIHQgLT4gJ2EgdCBvcHQgbWV0aFxuXG4gICgqIFVudHlwZWQhICopXG4gICgqKiBDb25zdGFudHMgKilcblxuICBtZXRob2QgX0RFUFRIX0JVRkZFUl9CSVRfIDogY2xlYXJCdWZmZXJNYXNrIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQlVGRkVSX0JJVF8gOiBjbGVhckJ1ZmZlck1hc2sgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9JTlRTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVfTE9PUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9TVFJJUF8gOiBiZWdpbk1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVFJJQU5HTEVTIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RSSUFOR0xFX1NUUklQXyA6IGJlZ2luTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9UUklBTkdMRV9GQU5fIDogYmVnaW5Nb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1pFUk8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9PTkUgOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX1NSQ19BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQUxQSEFfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9EU1RfQ09MT1JfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfT05FX01JTlVTX0RTVF9DT0xPUl8gOiBibGVuZGluZ0ZhY3RvciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TUkNfQUxQSEFfU0FUVVJBVEVfIDogYmxlbmRpbmdGYWN0b3IgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlVOQ19BRERfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfU1VCVFJBQ1RfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZVTkNfUkVWRVJTRV9TVUJUUkFDVF8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQ09MT1JfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUl8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09OU1RBTlRfQUxQSEFfIDogYmxlbmRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQV8gOiBibGVuZE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSXyA6IGJ1ZmZlclRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl8gOiBidWZmZXJUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RSRUFNX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RBVElDX0RSQVdfIDogYnVmZmVyVXNhZ2UgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRFlOQU1JQ19EUkFXXyA6IGJ1ZmZlclVzYWdlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZST05UIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JBQ0sgOiBjdWxsRmFjZU1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfQU5EX0JBQ0tfIDogY3VsbEZhY2VNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkQgOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfVEVTVF8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0NJU1NPUl9URVNUXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9GSUxMXyA6IGVuYWJsZUNhcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVfQUxQSEFfVE9fQ09WRVJBR0VfIDogZW5hYmxlQ2FwIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV8gOiBlbmFibGVDYXAgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTk9fRVJST1JfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVkFMSURfRU5VTV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9WQUxVRV8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX09VVF9PRl9NRU1PUllfIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTlRFWFRfTE9TVF9XRUJHTF8gOiBlcnJvckNvZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WQUxJRF9GUkFNRUJVRkZFUl9PUEVSQVRJT05fIDogZXJyb3JDb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NXIDogZnJvbnRGYWNlRGlyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NDVyA6IGZyb250RmFjZURpciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ET05UX0NBUkVfIDogaGludE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkFTVEVTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05JQ0VTVCA6IGhpbnRNb2RlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UXyA6IGhpbnRUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfRVFVQVRJT05fIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9SR0JfIDogYmxlbmRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9FUVVBVElPTl9BTFBIQV8gOiBibGVuZE1vZGUgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX1NSQ19SR0JfIDogYmxlbmRpbmdGYWN0b3IgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JMRU5EX0RTVF9BTFBIQV8gOiBibGVuZGluZ0ZhY3RvciBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxFTkRfU1JDX0FMUEhBXyA6IGJsZW5kaW5nRmFjdG9yIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9DT0xPUl8gOiBUeXBlZF9hcnJheS5mbG9hdDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVJSQVlfQlVGRkVSX0JJTkRJTkdfIDogYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6IGJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ1VMTF9GQUNFX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CTEVORF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRElUSEVSX1BBUkFNIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1RFU1RfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfVEVTVF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRklMTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORV9XSURUSF8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0VfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVTExfRkFDRV9NT0RFXyA6IGN1bGxGYWNlTW9kZSBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJPTlRfRkFDRV8gOiBmcm9udEZhY2VEaXIgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX1JBTkdFXyA6IFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9XUklURU1BU0tfIDogYm9vbCB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9DTEVBUl9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfRlVOQ18gOiBkZXB0aEZ1bmN0aW9uIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0NMRUFSX1ZBTFVFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GVU5DXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUxfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9WQUxVRV9NQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9XUklURU1BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfRlVOQ18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19GQUlMXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfRkFJTF8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQkFDS19QQVNTX0RFUFRIX1BBU1NfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfUkVGXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9CQUNLX1ZBTFVFX01BU0tfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JBQ0tfV1JJVEVNQVNLXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVklFV1BPUlQgOiBUeXBlZF9hcnJheS5pbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NDSVNTT1JfQk9YXyA6IFR5cGVkX2FycmF5LmludDMyQXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQ0xFQVJfVkFMVUVfIDogVHlwZWRfYXJyYXkuZmxvYXQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTE9SX1dSSVRFTUFTS18gOiBib29sIHQganNfYXJyYXkgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF9QQVJBTSA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUEFDS19BTElHTk1FTlRfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9TSVpFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZJRVdQT1JUX0RJTVNfIDogVHlwZWRfYXJyYXkuaW50MzJBcnJheSB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVUJQSVhFTF9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVEX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVFTl9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQkxVRV9CSVRTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQUxQSEFfQklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TVEVOQ0lMX0JJVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT0xZR09OX09GRlNFVF9VTklUU18gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUE9MWUdPTl9PRkZTRVRfRkFDVE9SXyA6IG51bWJlcl90IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0JJTkRJTkdfMkRfIDogdGV4dHVyZSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQXyA6IHRleHR1cmUgdCBvcHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9CVUZGRVJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NBTVBMRV9DT1ZFUkFHRV9WQUxVRV8gOiBudW1iZXJfdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFX0NPVkVSQUdFX0lOVkVSVF8gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTXyA6IFR5cGVkX2FycmF5LnVpbnQzMkFycmF5IHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0dFTkVSQVRFX01JUE1BUF9ISU5UX1BBUkFNXyA6IGhpbnRNb2RlIHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CVUZGRVJfU0laRV8gOiBpbnQgYnVmZmVyUGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JVRkZFUl9VU0FHRV8gOiBidWZmZXJVc2FnZSBidWZmZXJQYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQllURSA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfRFQgOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSE9SVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXyA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0lOVF8gOiBkYXRhVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVCA6IGRhdGFUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX0JZVEVfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNV81XzFfIDogcGl4ZWxUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOU0lHTkVEX1NIT1JUXzVfNl81XyA6IHBpeGVsVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFBIQSA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQiA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JHQkEgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0UgOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MVU1JTkFOQ0VfQUxQSEFfIDogcGl4ZWxGb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU1RFTkNJTF9JTkRFWF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERVBUSF9TVEVOQ0lMXyA6IHBpeGVsRm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0NPTVBPTkVOVF8gOiBwaXhlbEZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFHTUVOVF9TSEFERVJfIDogc2hhZGVyVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfU0hBREVSXyA6IHNoYWRlclR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9BVFRSSUJTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX1ZFUlRFWF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkFSWUlOR19WRUNUT1JTXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVkVSVEVYX1RFWFRVUkVfSU1BR0VfVU5JVFNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfVEVYVFVSRV9JTUFHRV9VTklUU18gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01BWF9GUkFHTUVOVF9VTklGT1JNX1ZFQ1RPUlNfIDogaW50IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TSEFERVJfVFlQRV8gOiBzaGFkZXJUeXBlIHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFTEVURV9TVEFUVVNfIDogYm9vbCB0IHNoYWRlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NPTVBJTEVfU1RBVFVTXyA6IGJvb2wgdCBzaGFkZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ERUxFVEVfU1RBVFVTX1BST0cgOiBib29sIHQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTktfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkFMSURBVEVfU1RBVFVTXyA6IGJvb2wgdCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQVRUQUNIRURfU0hBREVSU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9VTklGT1JNU18gOiBpbnQgcHJvZ3JhbVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9BVFRSSUJVVEVTXyA6IGludCBwcm9ncmFtUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0hBRElOR19MQU5HVUFHRV9WRVJTSU9OXyA6IGpzX3N0cmluZyB0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9DVVJSRU5UX1BST0dSQU1fIDogcHJvZ3JhbSB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVORE9SIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkVSIDoganNfc3RyaW5nIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlNJT04gOiBqc19zdHJpbmcgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUFYX0NVQkVfTUFQX1RFWFRVUkVfU0laRV8gOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0FDVElWRV9URVhUVVJFXyA6IGludCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQklORElOR18gOiBmcmFtZWJ1ZmZlciB0IG9wdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0JJTkRJTkdfIDogcmVuZGVyYnVmZmVyIHQgb3B0IHBhcmFtZXRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NQVhfUkVOREVSQlVGRkVSX1NJWkUgOiBpbnQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FVkVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MRVNTIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9FUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTEVRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9HUkVBVEVSIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT1RFUVVBTCA6IGRlcHRoRnVuY3Rpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfR0VRVUFMIDogZGVwdGhGdW5jdGlvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9BTFdBWVMgOiBkZXB0aEZ1bmN0aW9uIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0tFRVAgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQTEFDRSA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9JTkNSIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFQ1IgOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5WRVJUIDogc3RlbmNpbE9wIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOQ1JfV1JBUF8gOiBzdGVuY2lsT3AgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVDUl9XUkFQXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9aRVJPXyA6IHN0ZW5jaWxPcCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xJTkVBUiA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUXyA6IHRleEZpbHRlciByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MSU5FQVJfTUlQTUFQX05FQVJFU1RfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05FQVJFU1RfTUlQTUFQX0xJTkVBUl8gOiB0ZXhGaWx0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTElORUFSX01JUE1BUF9MSU5FQVJfIDogdGV4RmlsdGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfTUFHX0ZJTFRFUl8gOiB0ZXhGaWx0ZXIgdGV4UGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9NSU5fRklMVEVSXyA6IHRleEZpbHRlciB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfU18gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX1dSQVBfVF8gOiB3cmFwTW9kZSB0ZXhQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9OT05FX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX09UIDogb2JqZWN0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfT1QgOiBvYmplY3RUeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfMkRfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWF8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1lfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV8gOiB0ZXhUYXJnZXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9aXyA6IHRleFRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfIDogdGV4VGFyZ2V0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFMiA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkUzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTQgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFNSA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTcgOiB0ZXh0dXJlVW5pdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9URVhUVVJFOCA6IHRleHR1cmVVbml0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1RFWFRVUkU5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTExIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTEzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTE5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIyIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTIzIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI0IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI1IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI2IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI3IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI4IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTI5IDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMwIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVEVYVFVSRTMxIDogdGV4dHVyZVVuaXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVQRUFUIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ0xBTVBfVE9fRURHRV8gOiB3cmFwTW9kZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9NSVJST1JFRF9SRVBFQVRfIDogd3JhcE1vZGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfVkVDMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfSU5UXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUMzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0lOVF9WRUM0XyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQk9PTF9WRUMyXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0JPT0xfVkVDM18gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CT09MX1ZFQzRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRkxPQVRfTUFUMl8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GTE9BVF9NQVQzXyA6IHVuaWZvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZMT0FUX01BVDRfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfU0FNUExFUl8yRF8gOiB1bmlmb3JtVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9TQU1QTEVSX0NVQkVfIDogdW5pZm9ybVR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9FTkFCTEVEXyA6IGJvb2wgdCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfU1RSSURFXyA6IGludCB2ZXJ0ZXhBdHRyaWJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX1RZUEVfIDogaW50IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1ZFUlRFWF9BVFRSSUJfQVJSQVlfTk9STUFMSVpFRF8gOiBib29sIHQgdmVydGV4QXR0cmliUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVkVSVEVYX0FUVFJJQl9BUlJBWV9QT0lOVEVSXyA6IHZlcnRleEF0dHJpYlBvaW50ZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9WRVJURVhfQVRUUklCX0FSUkFZX0JVRkZFUl9CSU5ESU5HXyA6XG4gICAgYnVmZmVyIHQgb3B0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0NVUlJFTlRfVkVSVEVYX0FUVFJJQl8gOlxuICAgIFR5cGVkX2FycmF5LmZsb2F0MzJBcnJheSB0IHZlcnRleEF0dHJpYlBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0xPV19GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX01FRElVTV9GTE9BVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfRkxPQVRfIDogc2hhZGVyUHJlY2lzaW9uVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9MT1dfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTUVESVVNX0lOVF8gOiBzaGFkZXJQcmVjaXNpb25UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0hJR0hfSU5UXyA6IHNoYWRlclByZWNpc2lvblR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVIgOiBmYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVIgOiByYlRhcmdldCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0JBNCA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1X0ExXyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SR0I1NjUgOiBmb3JtYXQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfQ09NUE9ORU5UMTZfIDogZm9ybWF0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfSU5ERVg4XyA6IGZvcm1hdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfV0lEVEhfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9IRUlHSFRfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfIDogZm9ybWF0IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9SRURfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX0dSRUVOX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9CTFVFX1NJWkVfIDogaW50IHJlbmRlcmJ1ZmZlclBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFXyA6IGludCByZW5kZXJidWZmZXJQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRV8gOiBpbnQgcmVuZGVyYnVmZmVyUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRV8gOiBvYmplY3RUeXBlIGF0dGFjaFBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX05BTUVfUkVOREVSQlVGRkVSIDpcbiAgICByZW5kZXJidWZmZXIgdCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX1RFWFRVUkUgOiB0ZXh0dXJlIHQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMXyA6IGludCBhdHRhY2hQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX1RFWFRVUkVfQ1VCRV9NQVBfRkFDRV8gOiBpbnQgYXR0YWNoUGFyYW0gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfQ09MT1JfQVRUQUNITUVOVDBfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0RFUFRIX0FUVEFDSE1FTlRfIDogYXR0YWNobWVudFBvaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1NURU5DSUxfQVRUQUNITUVOVF8gOiBhdHRhY2htZW50UG9pbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfREVQVEhfU1RFTkNJTF9BVFRBQ0hNRU5UXyA6IGF0dGFjaG1lbnRQb2ludCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9DT01QTEVURV8gOiBmcmFtZWJ1ZmZlclN0YXR1cyByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfIDogZnJhbWVidWZmZXJTdGF0dXMgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEXyA6IGZyYW1lYnVmZmVyU3RhdHVzIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfUEFSQU0gOiBib29sIHQgcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19QUkVNVUxUSVBMWV9BTFBIQV9XRUJHTF9QQVJBTSA6IGJvb2wgdCBwYXJhbWV0ZXIgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0NPTE9SU1BBQ0VfQ09OVkVSU0lPTl9XRUJHTF9QQVJBTSA6XG4gICAgY29sb3JzcGFjZUNvbnZlcnNpb24gcGFyYW1ldGVyIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX05PTkUgOiBjb2xvcnNwYWNlQ29udmVyc2lvbiByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9CUk9XU0VSX0RFRkFVTFRfV0VCR0xfIDogY29sb3JzcGFjZUNvbnZlcnNpb24gcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfVU5QQUNLX0FMSUdOTUVOVF8gOiBpbnQgcGl4ZWxTdG9yZVBhcmFtIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgX1VOUEFDS19GTElQX1lfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfUFJFTVVMVElQTFlfQUxQSEFfV0VCR0xfIDogYm9vbCB0IHBpeGVsU3RvcmVQYXJhbSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9VTlBBQ0tfQ09MT1JTUEFDRV9DT05WRVJTSU9OX1dFQkdMXyA6IGludCBwaXhlbFN0b3JlUGFyYW0gcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqKiA1LjE0IFdlYkdMQ29udGV4dEV2ZW50ICopXG5cbmNsYXNzIHR5cGUgY29udGV4dEV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRcblxuICBtZXRob2Qgc3RhdHVzTWVzc2FnZSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG5tb2R1bGUgRXZlbnQgPSBzdHJ1Y3RcbiAgbGV0IHdlYmdsY29udGV4dGxvc3QgPSBEb21faHRtbC5FdmVudC5tYWtlIFwid2ViZ2xjb250ZXh0bG9zdFwiXG5cbiAgbGV0IHdlYmdsY29udGV4dHJlc3RvcmVkID0gRG9tX2h0bWwuRXZlbnQubWFrZSBcIndlYmdsY29udGV4dHJlc3RvcmVkXCJcblxuICBsZXQgd2ViZ2xjb250ZXh0Y3JlYXRpb25lcnJvciA9IERvbV9odG1sLkV2ZW50Lm1ha2UgXCJ3ZWJnbGNvbnRleHRjcmVhdGlvbmVycm9yXCJcbmVuZFxuXG4oKioqKilcblxuY2xhc3MgdHlwZSBjYW52YXNFbGVtZW50ID0gb2JqZWN0XG4gIG1ldGhvZCBnZXRDb250ZXh0IDoganNfc3RyaW5nIHQgLT4gcmVuZGVyaW5nQ29udGV4dCB0IG9wdCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbnRleHRfIDoganNfc3RyaW5nIHQgLT4gY29udGV4dEF0dHJpYnV0ZXMgdCAtPiByZW5kZXJpbmdDb250ZXh0IHQgb3B0IG1ldGhcbmVuZFxuXG5sZXQgZ2V0Q29udGV4dCAoYyA6IERvbV9odG1sLmNhbnZhc0VsZW1lbnQgdCkgPVxuICBsZXQgYyA6IGNhbnZhc0VsZW1lbnQgdCA9IEpzLlVuc2FmZS5jb2VyY2UgYyBpblxuICBsZXQgY3R4ID0gYyMjZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwid2ViZ2xcIikgaW5cbiAgaWYgT3B0LnRlc3QgY3R4IHRoZW4gY3R4IGVsc2UgYyAjIyAoZ2V0Q29udGV4dCAoSnMuc3RyaW5nIFwiZXhwZXJpbWVudGFsLXdlYmdsXCIpKVxuXG5sZXQgZ2V0Q29udGV4dFdpdGhBdHRyaWJ1dGVzIChjIDogRG9tX2h0bWwuY2FudmFzRWxlbWVudCB0KSBhdHRyaWJzID1cbiAgbGV0IGMgOiBjYW52YXNFbGVtZW50IHQgPSBKcy5VbnNhZmUuY29lcmNlIGMgaW5cbiAgbGV0IGN0eCA9IGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJ3ZWJnbFwiKSBhdHRyaWJzIGluXG4gIGlmIE9wdC50ZXN0IGN0eCB0aGVuIGN0eCBlbHNlIGMjI2dldENvbnRleHRfIChKcy5zdHJpbmcgXCJleHBlcmltZW50YWwtd2ViZ2xcIikgYXR0cmlic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3QsIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlIHJlZ2V4cCA9IEpzLnJlZ0V4cCBKcy50XG5cbnR5cGUgcmVzdWx0ID0gSnMubWF0Y2hfcmVzdWx0IEpzLnRcblxubGV0IHJlZ2V4cCBzID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLmJ5dGVzdHJpbmcgcykgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHJlZ2V4cF9jYXNlX2ZvbGQgcyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5ieXRlc3RyaW5nIHMpIChKcy5zdHJpbmcgXCJnaVwiKVxuXG5sZXQgcmVnZXhwX3dpdGhfZmxhZyBzIGYgPVxuICBuZXclanMgSnMucmVnRXhwX3dpdGhGbGFncyAoSnMuYnl0ZXN0cmluZyBzKSAoSnMuc3RyaW5nIChcImdcIiBeIGYpKVxuXG5sZXQgYmx1bnRfc3RyX2FycmF5X2dldCBhIGkgPVxuICBKcy50b19ieXRlc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgYSBpKSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCBzdHJpbmdfbWF0Y2ggciBzIGkgPVxuICByIyMubGFzdEluZGV4IDo9IGk7XG4gIEpzLk9wdC50b19vcHRpb24gKEpzLk9wdC5tYXAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpIEpzLm1hdGNoX3Jlc3VsdClcblxubGV0IHNlYXJjaCByIHMgaSA9XG4gIHIjIy5sYXN0SW5kZXggOj0gaTtcbiAgSnMuT3B0LnRvX29wdGlvblxuICAgIChKcy5PcHQubWFwXG4gICAgICAgKHIjI2V4ZWMgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAgKGZ1biByZXNfcHJlIC0+XG4gICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IHJlc19wcmUgaW5cbiAgICAgICAgIHJlcyMjLmluZGV4LCByZXMpKVxuXG5sZXQgc2VhcmNoX2ZvcndhcmQgPSBzZWFyY2hcblxubGV0IG1hdGNoZWRfc3RyaW5nIHIgPSBibHVudF9zdHJfYXJyYXlfZ2V0IHIgMFxuXG5sZXQgbWF0Y2hlZF9ncm91cCByIGkgPVxuICBKcy5PcHRkZWYudG9fb3B0aW9uIChKcy5PcHRkZWYubWFwIChKcy5hcnJheV9nZXQgciBpKSBKcy50b19ieXRlc3RyaW5nKVxuXG5sZXQgcXVvdGVfcmVwbF9yZSA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIChKcy5zdHJpbmcgXCJbJF1cIikgKEpzLnN0cmluZyBcImdcIilcblxubGV0IHF1b3RlX3JlcGwgcyA9IChKcy5ieXRlc3RyaW5nIHMpIyNyZXBsYWNlIHF1b3RlX3JlcGxfcmUgKEpzLnN0cmluZyBcIiQkJCRcIilcblxubGV0IGdsb2JhbF9yZXBsYWNlIHIgcyBzX2J5ID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHIgKHF1b3RlX3JlcGwgc19ieSkpXG5cbmxldCByZXBsYWNlX2ZpcnN0IHIgcyBzX2J5ID1cbiAgbGV0IGZsYWdzID1cbiAgICBtYXRjaCBKcy50b19ib29sIHIjIy5pZ25vcmVDYXNlLCBKcy50b19ib29sIHIjIy5tdWx0aWxpbmUgd2l0aFxuICAgIHwgZmFsc2UsIGZhbHNlIC0+IEpzLnN0cmluZyBcIlwiXG4gICAgfCBmYWxzZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtXCJcbiAgICB8IHRydWUsIGZhbHNlIC0+IEpzLnN0cmluZyBcImlcIlxuICAgIHwgdHJ1ZSwgdHJ1ZSAtPiBKcy5zdHJpbmcgXCJtaVwiXG4gIGluXG4gIGxldCByJyA9IG5ldyVqcyBKcy5yZWdFeHBfd2l0aEZsYWdzIHIjIy5zb3VyY2UgZmxhZ3MgaW5cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuYnl0ZXN0cmluZyBzKSAjIyAocmVwbGFjZSByJyAocXVvdGVfcmVwbCBzX2J5KSlcblxubGV0IGxpc3Rfb2ZfanNfYXJyYXkgYSA9XG4gIGxldCByZWMgYXV4IGFjY3UgaWR4ID1cbiAgICBpZiBpZHggPCAwIHRoZW4gYWNjdSBlbHNlIGF1eCAoYmx1bnRfc3RyX2FycmF5X2dldCBhIGlkeCA6OiBhY2N1KSAoaWR4IC0gMSlcbiAgaW5cbiAgYXV4IFtdIChhIyMubGVuZ3RoIC0gMSlcblxubGV0IHNwbGl0IHIgcyA9XG4gIHIjIy5sYXN0SW5kZXggOj0gMDtcbiAgbGlzdF9vZl9qc19hcnJheSAoSnMuc3RyX2FycmF5IChKcy5ieXRlc3RyaW5nIHMpICMjIChzcGxpdF9yZWdFeHAgcikpXG5cbmxldCBib3VuZGVkX3NwbGl0IHIgcyBpID1cbiAgciMjLmxhc3RJbmRleCA6PSAwO1xuICBsaXN0X29mX2pzX2FycmF5IChKcy5zdHJfYXJyYXkgKEpzLmJ5dGVzdHJpbmcgcykgIyMgKHNwbGl0X3JlZ0V4cExpbWl0ZWQgciBpKSlcblxuKCogTW9yZSBjb25zdHJ1Y3RvcnMgKilcblxubGV0IHF1b3RlX3JlID0gcmVnZXhwIFwiW1xcXFxdWygpXFxcXFxcXFx8KyouP3t9XiRdXCJcblxubGV0IHF1b3RlIHMgPSBKcy50b19ieXRlc3RyaW5nIChKcy5ieXRlc3RyaW5nIHMpICMjIChyZXBsYWNlIHF1b3RlX3JlIChKcy5zdHJpbmcgXCJcXFxcJCZcIikpXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSByZWdleHAgKHF1b3RlIHMpXG5cbmxldCByZWdleHBfc3RyaW5nX2Nhc2VfZm9sZCBzID0gcmVnZXhwX2Nhc2VfZm9sZCAocXVvdGUgcylcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgUmFwaGHDq2wgUHJvdXN0XG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG4oKiBVcmwgdGFtcGVyaW5nLiAqKVxuXG5sZXQgc3BsaXQgYyBzID0gSnMuc3RyX2FycmF5IChzIyNzcGxpdCAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSlcblxubGV0IHNwbGl0XzIgYyBzID1cbiAgbGV0IGluZGV4ID0gcyMjaW5kZXhPZiAoSnMuc3RyaW5nIChTdHJpbmcubWFrZSAxIGMpKSBpblxuICBpZiBpbmRleCA8IDAgdGhlbiBKcy51bmRlZmluZWQgZWxzZSBKcy5kZWYgKHMjI3NsaWNlIDAgaW5kZXgsIHMjI3NsaWNlX2VuZCAoaW5kZXggKyAxKSlcblxuZXhjZXB0aW9uIExvY2FsX2V4blxuXG5sZXQgaW50ZXJydXB0ICgpID0gcmFpc2UgTG9jYWxfZXhuXG5cbigqIHVybCAoQUtBIHBlcmNlbnQpIGVuY29kaW5nL2RlY29kaW5nICopXG5cbmxldCBwbHVzX3JlID0gUmVnZXhwLnJlZ2V4cF9zdHJpbmcgXCIrXCJcblxubGV0IGVzY2FwZV9wbHVzIHMgPSBSZWdleHAuZ2xvYmFsX3JlcGxhY2UgcGx1c19yZSBzIFwiJTJCXCJcblxubGV0IHVuZXNjYXBlX3BsdXMgcyA9IFJlZ2V4cC5nbG9iYWxfcmVwbGFjZSBwbHVzX3JlIHMgXCIgXCJcblxubGV0IHBsdXNfcmVfanNfc3RyaW5nID0gbmV3JWpzIEpzLnJlZ0V4cF93aXRoRmxhZ3MgKEpzLnN0cmluZyBcIlxcXFwrXCIpIChKcy5zdHJpbmcgXCJnXCIpXG5cbmxldCB1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzID1cbiAgcGx1c19yZV9qc19zdHJpbmcjIy5sYXN0SW5kZXggOj0gMDtcbiAgcyMjcmVwbGFjZSBwbHVzX3JlX2pzX3N0cmluZyAoSnMuc3RyaW5nIFwiIFwiKVxuXG5sZXQgdXJsZGVjb2RlX2pzX3N0cmluZ19zdHJpbmcgcyA9XG4gIEpzLnRvX2J5dGVzdHJpbmcgKEpzLnVuZXNjYXBlICh1bmVzY2FwZV9wbHVzX2pzX3N0cmluZyBzKSlcblxubGV0IHVybGRlY29kZSBzID0gSnMudG9fYnl0ZXN0cmluZyAoSnMudW5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgKHVuZXNjYXBlX3BsdXMgcykpKVxuXG4oKmxldCB1cmxlbmNvZGVfanNfc3RyaW5nX3N0cmluZyBzID1cbiAgSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIHMpKilcblxubGV0IHVybGVuY29kZSA/KHdpdGhfcGx1cyA9IHRydWUpIHMgPVxuICBpZiB3aXRoX3BsdXNcbiAgdGhlbiBlc2NhcGVfcGx1cyAoSnMudG9fYnl0ZXN0cmluZyAoSnMuZXNjYXBlIChKcy5ieXRlc3RyaW5nIHMpKSlcbiAgZWxzZSBKcy50b19ieXRlc3RyaW5nIChKcy5lc2NhcGUgKEpzLmJ5dGVzdHJpbmcgcykpXG5cbnR5cGUgaHR0cF91cmwgPVxuICB7IGh1X2hvc3QgOiBzdHJpbmcgICgqKiBUaGUgaG9zdCBwYXJ0IG9mIHRoZSB1cmwuICopXG4gIDsgaHVfcG9ydCA6IGludCAgKCoqIFRoZSBwb3J0IGZvciB0aGUgY29ubmVjdGlvbiBpZiBhbnkuICopXG4gIDsgaHVfcGF0aCA6IHN0cmluZyBsaXN0ICAoKiogVGhlIHBhdGggc3BsaXQgb24gWycvJ10gY2hhcmFjdGVycy4gKilcbiAgOyBodV9wYXRoX3N0cmluZyA6IHN0cmluZyAgKCoqIFRoZSBvcmlnaW5hbCBlbnRpcmUgcGF0aC4gKilcbiAgOyBodV9hcmd1bWVudHMgOiAoc3RyaW5nICogc3RyaW5nKSBsaXN0XG4gICAgICAgICgqKiBBcmd1bWVudHMgYXMgYSBmaWVsZC12YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NpYXRpb24gbGlzdC4qKVxuICA7IGh1X2ZyYWdtZW50IDogc3RyaW5nICAoKiogVGhlIGZyYWdtZW50IHBhcnQgKGFmdGVyIHRoZSBbJyMnXSBjaGFyYWN0ZXIpLiAqKVxuICB9XG4oKiogVGhlIHR5cGUgZm9yIEhUVFAgdXJsLiAqKVxuXG50eXBlIGZpbGVfdXJsID1cbiAgeyBmdV9wYXRoIDogc3RyaW5nIGxpc3RcbiAgOyBmdV9wYXRoX3N0cmluZyA6IHN0cmluZ1xuICA7IGZ1X2FyZ3VtZW50cyA6IChzdHJpbmcgKiBzdHJpbmcpIGxpc3RcbiAgOyBmdV9mcmFnbWVudCA6IHN0cmluZ1xuICB9XG4oKiogVGhlIHR5cGUgZm9yIGxvY2FsIGZpbGUgdXJscy4gKilcblxudHlwZSB1cmwgPVxuICB8IEh0dHAgb2YgaHR0cF91cmxcbiAgfCBIdHRwcyBvZiBodHRwX3VybFxuICB8IEZpbGUgb2YgZmlsZV91cmxcbiAgICAgICgqKiBUaGUgdHlwZSBmb3IgdXJscy4gW0ZpbGVdIGlzIGZvciBsb2NhbCBmaWxlcyBhbmQgW0V4b3RpYyBzXSBpcyBmb3JcbiAgICB1bmtub3duL3Vuc3VwcG9ydGVkIHByb3RvY29scy4gKilcblxuZXhjZXB0aW9uIE5vdF9hbl9odHRwX3Byb3RvY29sXG5cbmxldCBpc19zZWN1cmUgcHJvdF9zdHJpbmcgPVxuICBtYXRjaCBKcy50b19ieXRlc3RyaW5nIHByb3Rfc3RyaW5nIyN0b0xvd2VyQ2FzZSB3aXRoXG4gIHwgXCJodHRwczpcIiB8IFwiaHR0cHNcIiAtPiB0cnVlXG4gIHwgXCJodHRwOlwiIHwgXCJodHRwXCIgLT4gZmFsc2VcbiAgfCBcImZpbGU6XCIgfCBcImZpbGVcIiB8IF8gLT4gcmFpc2UgTm90X2FuX2h0dHBfcHJvdG9jb2xcblxuKCogcG9ydCBudW1iZXIgKilcbmxldCBkZWZhdWx0X2h0dHBfcG9ydCA9IDgwXG5cbmxldCBkZWZhdWx0X2h0dHBzX3BvcnQgPSA0NDNcblxuKCogcGF0aCAqKVxubGV0IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcyA9XG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGxldCBqID0gdHJ5IFN0cmluZy5pbmRleF9mcm9tIHMgaSAnLycgd2l0aCBOb3RfZm91bmQgLT4gbCBpblxuICAgIGxldCB3b3JkID0gU3RyaW5nLnN1YiBzIGkgKGogLSBpKSBpblxuICAgIGlmIGogPj0gbCB0aGVuIFsgd29yZCBdIGVsc2Ugd29yZCA6OiBhdXggKGogKyAxKVxuICBpblxuICBtYXRjaCBhdXggMCB3aXRoXG4gIHwgWyBcIlwiIF0gLT4gW11cbiAgfCBbIFwiXCI7IFwiXCIgXSAtPiBbIFwiXCIgXVxuICB8IGEgLT4gYVxuXG4oKiBBcmd1bWVudHMgKilcbmxldCBlbmNvZGVfYXJndW1lbnRzIGwgPVxuICBTdHJpbmcuY29uY2F0IFwiJlwiIChMaXN0Lm1hcCAoZnVuIChuLCB2KSAtPiB1cmxlbmNvZGUgbiBeIFwiPVwiIF4gdXJsZW5jb2RlIHYpIGwpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyBzID1cbiAgbGV0IGFyciA9IHNwbGl0ICcmJyBzIGluXG4gIGxldCBsZW4gPSBhcnIjIy5sZW5ndGggaW5cbiAgbGV0IG5hbWVfdmFsdWVfc3BsaXQgcyA9IHNwbGl0XzIgJz0nIHMgaW5cbiAgbGV0IHJlYyBhdXggYWNjIGlkeCA9XG4gICAgaWYgaWR4IDwgMFxuICAgIHRoZW4gYWNjXG4gICAgZWxzZVxuICAgICAgdHJ5XG4gICAgICAgIGF1eFxuICAgICAgICAgIChKcy5PcHRkZWYuY2FzZSAoSnMuYXJyYXlfZ2V0IGFyciBpZHgpIGludGVycnVwdCAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgIEpzLk9wdGRlZi5jYXNlIChuYW1lX3ZhbHVlX3NwbGl0IHMpIGludGVycnVwdCAoZnVuICh4LCB5KSAtPlxuICAgICAgICAgICAgICAgICAgIGxldCBnZXQgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBpblxuICAgICAgICAgICAgICAgICAgIGdldCB4LCBnZXQgeSkpXG4gICAgICAgICAgOjogYWNjKVxuICAgICAgICAgIChwcmVkIGlkeClcbiAgICAgIHdpdGggTG9jYWxfZXhuIC0+IGF1eCBhY2MgKHByZWQgaWR4KVxuICBpblxuICBhdXggW10gKGxlbiAtIDEpXG5cbmxldCBkZWNvZGVfYXJndW1lbnRzIHMgPSBkZWNvZGVfYXJndW1lbnRzX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgdXJsX3JlID1cbiAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgIChKcy5ieXRlc3RyaW5nXG4gICAgICAgXCJeKFtIaF1bVHRdW1R0XVtQcF1bU3NdPyk6Ly8oWzAtOWEtekEtWi4tXSt8XFxcXFtbMC05YS16QS1aLi1dK1xcXFxdfFxcXFxbWzAtOUEtRmEtZjouXStcXFxcXSk/KDooWzAtOV0rKSk/KC8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyk/JFwiKVxuXG5sZXQgZmlsZV9yZSA9XG4gIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAoSnMuYnl0ZXN0cmluZyBcIl4oW0ZmXVtJaV1bTGxdW0VlXSk6Ly8oW15cXFxcPyNdKikoXFxcXD8oW14jXSopKT8oIyguKikpPyRcIilcblxubGV0IHVybF9vZl9qc19zdHJpbmcgcyA9XG4gIEpzLk9wdC5jYXNlXG4gICAgKHVybF9yZSMjZXhlYyBzKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgIChmaWxlX3JlIyNleGVjIHMpXG4gICAgICAgIChmdW4gKCkgLT4gTm9uZSlcbiAgICAgICAgKGZ1biBoYW5kbGUgLT5cbiAgICAgICAgICBsZXQgcmVzID0gSnMubWF0Y2hfcmVzdWx0IGhhbmRsZSBpblxuICAgICAgICAgIGxldCBwYXRoX3N0ciA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAyKSBpbnRlcnJ1cHQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lXG4gICAgICAgICAgICAoRmlsZVxuICAgICAgICAgICAgICAgeyBmdV9wYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0clxuICAgICAgICAgICAgICAgOyBmdV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgICAgICAgICA7IGZ1X2FyZ3VtZW50cyA9XG4gICAgICAgICAgICAgICAgICAgZGVjb2RlX2FyZ3VtZW50c19qc19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIDsgZnVfZnJhZ21lbnQgPVxuICAgICAgICAgICAgICAgICAgIEpzLnRvX2J5dGVzdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgICAgICAgIH0pKSlcbiAgICAoZnVuIGhhbmRsZSAtPlxuICAgICAgbGV0IHJlcyA9IEpzLm1hdGNoX3Jlc3VsdCBoYW5kbGUgaW5cbiAgICAgIGxldCBzc2wgPSBpc19zZWN1cmUgKEpzLk9wdGRlZi5nZXQgKEpzLmFycmF5X2dldCByZXMgMSkgaW50ZXJydXB0KSBpblxuICAgICAgbGV0IHBvcnRfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgICAgICAgfCBcIlwiIC0+IGlmIHNzbCB0aGVuIDQ0MyBlbHNlIDgwXG4gICAgICAgIHwgcyAtPiBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgIGluXG4gICAgICBsZXQgcGF0aF9zdHIgPVxuICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDYpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgIGluXG4gICAgICBsZXQgdXJsID1cbiAgICAgICAgeyBodV9ob3N0ID1cbiAgICAgICAgICAgIHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDIpIGludGVycnVwdClcbiAgICAgICAgOyBodV9wb3J0ID1cbiAgICAgICAgICAgIHBvcnRfb2Zfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy50b19ieXRlc3RyaW5nXG4gICAgICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDQpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSkpXG4gICAgICAgIDsgaHVfcGF0aCA9IHBhdGhfb2ZfcGF0aF9zdHJpbmcgcGF0aF9zdHJcbiAgICAgICAgOyBodV9wYXRoX3N0cmluZyA9IHBhdGhfc3RyXG4gICAgICAgIDsgaHVfYXJndW1lbnRzID1cbiAgICAgICAgICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAgICAgICAgIChKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQgcmVzIDgpIChmdW4gKCkgLT4gSnMuYnl0ZXN0cmluZyBcIlwiKSlcbiAgICAgICAgOyBodV9mcmFnbWVudCA9XG4gICAgICAgICAgICB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZ1xuICAgICAgICAgICAgICAoSnMuT3B0ZGVmLmdldCAoSnMuYXJyYXlfZ2V0IHJlcyAxMCkgKGZ1biAoKSAtPiBKcy5ieXRlc3RyaW5nIFwiXCIpKVxuICAgICAgICB9XG4gICAgICBpblxuICAgICAgU29tZSAoaWYgc3NsIHRoZW4gSHR0cHMgdXJsIGVsc2UgSHR0cCB1cmwpKVxuXG5sZXQgdXJsX29mX3N0cmluZyBzID0gdXJsX29mX2pzX3N0cmluZyAoSnMuYnl0ZXN0cmluZyBzKVxuXG5sZXQgc3RyaW5nX29mX3VybCA9IGZ1bmN0aW9uXG4gIHwgRmlsZSB7IGZ1X3BhdGggPSBwYXRoOyBmdV9hcmd1bWVudHMgPSBhcmdzOyBmdV9mcmFnbWVudCA9IGZyYWc7IF8gfSAtPiAoXG4gICAgICBcImZpbGU6Ly9cIlxuICAgICAgXiBTdHJpbmcuY29uY2F0IFwiL1wiIChMaXN0Lm1hcCAoZnVuIHggLT4gdXJsZW5jb2RlIHgpIHBhdGgpXG4gICAgICBeIChtYXRjaCBhcmdzIHdpdGhcbiAgICAgICAgfCBbXSAtPiBcIlwiXG4gICAgICAgIHwgbCAtPiBcIj9cIiBeIGVuY29kZV9hcmd1bWVudHMgbClcbiAgICAgIF5cbiAgICAgIG1hdGNoIGZyYWcgd2l0aFxuICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgIHwgcyAtPiBcIiNcIiBeIHVybGVuY29kZSBzKVxuICB8IEh0dHBcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHA6Ly9cIlxuICAgICAgXiB1cmxlbmNvZGUgaG9zdFxuICAgICAgXiAobWF0Y2ggcG9ydCB3aXRoXG4gICAgICAgIHwgODAgLT4gXCJcIlxuICAgICAgICB8IG4gLT4gXCI6XCIgXiBzdHJpbmdfb2ZfaW50IG4pXG4gICAgICBeIFwiL1wiXG4gICAgICBeIFN0cmluZy5jb25jYXQgXCIvXCIgKExpc3QubWFwIChmdW4geCAtPiB1cmxlbmNvZGUgeCkgcGF0aClcbiAgICAgIF4gKG1hdGNoIGFyZ3Mgd2l0aFxuICAgICAgICB8IFtdIC0+IFwiXCJcbiAgICAgICAgfCBsIC0+IFwiP1wiIF4gZW5jb2RlX2FyZ3VtZW50cyBsKVxuICAgICAgXlxuICAgICAgbWF0Y2ggZnJhZyB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCBzIC0+IFwiI1wiIF4gdXJsZW5jb2RlIHMpXG4gIHwgSHR0cHNcbiAgICAgIHsgaHVfaG9zdCA9IGhvc3RcbiAgICAgIDsgaHVfcG9ydCA9IHBvcnRcbiAgICAgIDsgaHVfcGF0aCA9IHBhdGhcbiAgICAgIDsgaHVfYXJndW1lbnRzID0gYXJnc1xuICAgICAgOyBodV9mcmFnbWVudCA9IGZyYWdcbiAgICAgIDsgX1xuICAgICAgfSAtPiAoXG4gICAgICBcImh0dHBzOi8vXCJcbiAgICAgIF4gdXJsZW5jb2RlIGhvc3RcbiAgICAgIF4gKG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8IDQ0MyAtPiBcIlwiXG4gICAgICAgIHwgbiAtPiBcIjpcIiBeIHN0cmluZ19vZl9pbnQgbilcbiAgICAgIF4gXCIvXCJcbiAgICAgIF4gU3RyaW5nLmNvbmNhdCBcIi9cIiAoTGlzdC5tYXAgKGZ1biB4IC0+IHVybGVuY29kZSB4KSBwYXRoKVxuICAgICAgXiAobWF0Y2ggYXJncyB3aXRoXG4gICAgICAgIHwgW10gLT4gXCJcIlxuICAgICAgICB8IGwgLT4gXCI/XCIgXiBlbmNvZGVfYXJndW1lbnRzIGwpXG4gICAgICBeXG4gICAgICBtYXRjaCBmcmFnIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBcIlwiXG4gICAgICB8IHMgLT4gXCIjXCIgXiB1cmxlbmNvZGUgcylcblxubW9kdWxlIEN1cnJlbnQgPSBzdHJ1Y3RcbiAgbGV0IGwgPVxuICAgIGlmIEpzLk9wdGRlZi50ZXN0IChKcy5PcHRkZWYucmV0dXJuIERvbV9odG1sLndpbmRvdyMjLmxvY2F0aW9uKVxuICAgIHRoZW4gRG9tX2h0bWwud2luZG93IyMubG9jYXRpb25cbiAgICBlbHNlXG4gICAgICBsZXQgZW1wdHkgPSBKcy5zdHJpbmcgXCJcIiBpblxuICAgICAgb2JqZWN0JWpzXG4gICAgICAgIHZhbCBtdXRhYmxlIGhyZWYgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHByb3RvY29sID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0ID0gZW1wdHlcblxuICAgICAgICB2YWwgbXV0YWJsZSBob3N0bmFtZSA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcG9ydCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgcGF0aG5hbWUgPSBlbXB0eVxuXG4gICAgICAgIHZhbCBtdXRhYmxlIHNlYXJjaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG11dGFibGUgaGFzaCA9IGVtcHR5XG5cbiAgICAgICAgdmFsIG9yaWdpbiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICAgIG1ldGhvZCByZWxvYWQgPSAoKVxuXG4gICAgICAgIG1ldGhvZCByZXBsYWNlIF8gPSAoKVxuXG4gICAgICAgIG1ldGhvZCBhc3NpZ24gXyA9ICgpXG4gICAgICBlbmRcblxuICBsZXQgaG9zdCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5ob3N0bmFtZVxuXG4gIGxldCBwcm90b2NvbCA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wcm90b2NvbFxuXG4gIGxldCBwb3J0ID1cbiAgICAoZnVuICgpIC0+XG4gICAgICB0cnkgU29tZSAoaW50X29mX3N0cmluZyAoSnMudG9fYnl0ZXN0cmluZyBsIyMucG9ydCkpIHdpdGggRmFpbHVyZSBfIC0+IE5vbmUpXG4gICAgICAoKVxuXG4gIGxldCBwYXRoX3N0cmluZyA9IHVybGRlY29kZV9qc19zdHJpbmdfc3RyaW5nIGwjIy5wYXRobmFtZVxuXG4gIGxldCBwYXRoID0gcGF0aF9vZl9wYXRoX3N0cmluZyBwYXRoX3N0cmluZ1xuXG4gIGxldCBhcmd1bWVudHMgPVxuICAgIGRlY29kZV9hcmd1bWVudHNfanNfc3RyaW5nXG4gICAgICAoaWYgSnMuZXF1YWxzIChsIyMuc2VhcmNoIyNjaGFyQXQgMCkgKEpzLnN0cmluZyBcIj9cIilcbiAgICAgICB0aGVuIGwjIy5zZWFyY2gjI3NsaWNlX2VuZCAxXG4gICAgICAgZWxzZSBsIyMuc2VhcmNoKVxuXG4gIGxldCBnZXRfZnJhZ21lbnQgKCkgPVxuICAgIGxldCBzID0gSnMudG9fYnl0ZXN0cmluZyBsIyMuaGFzaCBpblxuICAgIGlmIFN0cmluZy5sZW5ndGggcyA+IDAgJiYgQ2hhci5lcXVhbCBzLlswXSAnIydcbiAgICB0aGVuIFN0cmluZy5zdWIgcyAxIChTdHJpbmcubGVuZ3RoIHMgLSAxKVxuICAgIGVsc2Ugc1xuXG4gIGxldCBzZXRfZnJhZ21lbnQgcyA9IGwjIy5oYXNoIDo9IEpzLmJ5dGVzdHJpbmcgc1xuXG4gIGxldCBnZXQgKCkgPSB1cmxfb2ZfanNfc3RyaW5nIGwjIy5ocmVmXG5cbiAgbGV0IHNldCB1ID0gbCMjLmhyZWYgOj0gSnMuYnl0ZXN0cmluZyAoc3RyaW5nX29mX3VybCB1KVxuXG4gIGxldCBhc19zdHJpbmcgPSB1cmxkZWNvZGVfanNfc3RyaW5nX3N0cmluZyBsIyMuaHJlZlxuZW5kXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbmV4dGVybmFsIGNyZWF0ZV9maWxlIDogbmFtZTpzdHJpbmcgLT4gY29udGVudDpzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF9jcmVhdGVfZmlsZVwiXG5cbmV4dGVybmFsIHJlYWRfZmlsZSA6IG5hbWU6c3RyaW5nIC0+IHN0cmluZyA9IFwiY2FtbF9yZWFkX2ZpbGVfY29udGVudFwiXG5cbmxldCB1cGRhdGVfZmlsZSB+bmFtZSB+Y29udGVudCA9XG4gIGxldCBvYyA9IG9wZW5fb3V0IG5hbWUgaW5cbiAgb3V0cHV0X3N0cmluZyBvYyBjb250ZW50O1xuICBjbG9zZV9vdXQgb2NcblxuZXh0ZXJuYWwgc2V0X2NoYW5uZWxfb3V0cHV0JyA6XG4gIG91dF9jaGFubmVsIC0+IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX291dHB1dFwiXG5cbmV4dGVybmFsIHNldF9jaGFubmVsX2lucHV0JyA6IGluX2NoYW5uZWwgLT4gKHVuaXQgLT4gc3RyaW5nKSBKcy5jYWxsYmFjayAtPiB1bml0XG4gID0gXCJjYW1sX21sX3NldF9jaGFubmVsX3JlZmlsbFwiXG5cbmxldCBzZXRfY2hhbm5lbF9mbHVzaGVyIChvdXRfY2hhbm5lbCA6IG91dF9jaGFubmVsKSAoZiA6IHN0cmluZyAtPiB1bml0KSA9XG4gIGxldCBmJyA6IChKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0KSBKcy5jYWxsYmFjayA9XG4gICAgSnMud3JhcF9jYWxsYmFjayAoZnVuIHMgLT4gZiAoSnMudG9fYnl0ZXN0cmluZyBzKSlcbiAgaW5cbiAgc2V0X2NoYW5uZWxfb3V0cHV0JyBvdXRfY2hhbm5lbCBmJ1xuXG5sZXQgc2V0X2NoYW5uZWxfZmlsbGVyIChpbl9jaGFubmVsIDogaW5fY2hhbm5lbCkgKGYgOiB1bml0IC0+IHN0cmluZykgPVxuICBsZXQgZicgOiAodW5pdCAtPiBzdHJpbmcpIEpzLmNhbGxiYWNrID0gSnMud3JhcF9jYWxsYmFjayBmIGluXG4gIHNldF9jaGFubmVsX2lucHV0JyBpbl9jaGFubmVsIGYnXG5cbmV4dGVybmFsIG1vdW50X3BvaW50IDogdW5pdCAtPiBzdHJpbmcgbGlzdCA9IFwiY2FtbF9saXN0X21vdW50X3BvaW50XCJcblxuZXh0ZXJuYWwgbW91bnRfYXV0b2xvYWQgOlxuICBzdHJpbmcgLT4gKHN0cmluZyAtPiBzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikgSnMuY2FsbGJhY2sgLT4gdW5pdFxuICA9IFwiY2FtbF9tb3VudF9hdXRvbG9hZFwiXG5cbmV4dGVybmFsIHVubW91bnQgOiBzdHJpbmcgLT4gdW5pdCA9IFwiY2FtbF91bm1vdW50XCJcblxubGV0IG1vdW50IH5wYXRoIGYgPVxuICBtb3VudF9hdXRvbG9hZCBwYXRoIChKcy53cmFwX2NhbGxiYWNrIChmdW4gcHJlZml4IHBhdGggLT4gZiB+cHJlZml4IH5wYXRoKSlcblxubGV0IHVubW91bnQgfnBhdGggPSB1bm1vdW50IHBhdGhcblxubGV0IGpzX29mX29jYW1sX3ZlcnNpb24gPVxuICBpZiBTdHJpbmcuZXF1YWwgTGliX3ZlcnNpb24uZ2l0X3ZlcnNpb24gXCJcIlxuICB0aGVuIExpYl92ZXJzaW9uLnNcbiAgZWxzZSBMaWJfdmVyc2lvbi5zIF4gXCIrXCIgXiBMaWJfdmVyc2lvbi5naXRfdmVyc2lvblxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxOSBBbGV4YW5kZXIgWWFuaW5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5jbGFzcyB0eXBlIHJlc2l6ZU9ic2VydmVyU2l6ZSA9IG9iamVjdFxuICBtZXRob2QgaW5saW5lU2l6ZSA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYmxvY2tTaXplIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRSZWN0IDogRG9tX2h0bWwuY2xpZW50UmVjdCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYm9yZGVyQm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50Qm94U2l6ZSA6IHJlc2l6ZU9ic2VydmVyU2l6ZSBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXJPcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCBib3ggOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcmVzaXplT2JzZXJ2ZXIgPSBvYmplY3RcbiAgbWV0aG9kIG9ic2VydmUgOiAjRG9tLm5vZGUgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb2JzZXJ2ZV93aXRoT3B0aW9ucyA6XG4gICAgI0RvbS5ub2RlIEpzLnQgLT4gcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Jlc2l6ZV9vYnNlcnZlcl9vcHRpb25zICgpIDogcmVzaXplT2JzZXJ2ZXJPcHRpb25zIEpzLnQgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IHJlc2l6ZU9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9SZXNpemVPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcmVzaXplT2JzZXJ2ZXJcblxubGV0IHJlc2l6ZU9ic2VydmVyIDpcbiAgICAoICAgKHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gcmVzaXplT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICByZXNpemVPYnNlcnZlclxuXG5sZXQgb2JzZXJ2ZVxuICAgIH4obm9kZSA6ICNEb20ubm9kZSBKcy50KVxuICAgIH4oZiA6IHJlc2l6ZU9ic2VydmVyRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IC0+IHJlc2l6ZU9ic2VydmVyIEpzLnQgLT4gdW5pdClcbiAgICA/KGJveCA6IEpzLmpzX3N0cmluZyBKcy50IG9wdGlvbilcbiAgICAoKSA6IHJlc2l6ZU9ic2VydmVyIEpzLnQgPVxuICBsZXQgb2JzID0gbmV3JWpzIHJlc2l6ZU9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIChtYXRjaCBib3ggd2l0aFxuICB8IE5vbmUgLT4gb2JzIyNvYnNlcnZlIG5vZGVcbiAgfCBTb21lIGJveCAtPlxuICAgICAgbGV0IG9wdHMgPSBlbXB0eV9yZXNpemVfb2JzZXJ2ZXJfb3B0aW9ucyAoKSBpblxuICAgICAgb3B0cyMjLmJveCA6PSBib3g7XG4gICAgICBvYnMjI29ic2VydmVfd2l0aE9wdGlvbnMgbm9kZSBvcHRzKTtcbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDIxIFBoaWxpcCBXaGl0ZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgZW50cnlUeXBlcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlRW50cnkgPSBvYmplY3RcbiAgbWV0aG9kIG5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGVudHJ5VHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3RhcnRUaW1lIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkdXJhdGlvbiA6IEpzLm51bWJlcl90IEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBlcmZvcm1hbmNlT2JzZXJ2ZXJFbnRyeUxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIGdldEVudHJpZXMgOiBwZXJmb3JtYW5jZUVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBwZXJmb3JtYW5jZU9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IHBlcmZvcm1hbmNlRW50cnkgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbmVuZFxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fUGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgcGVyZm9ybWFuY2VPYnNlcnZlclxuXG5sZXQgcGVyZm9ybWFuY2VPYnNlcnZlciA6XG4gICAgKCAgIChwZXJmb3JtYW5jZU9ic2VydmVyRW50cnlMaXN0IEpzLnQgLT4gcGVyZm9ybWFuY2VPYnNlcnZlciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgIC0+IHBlcmZvcm1hbmNlT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBwZXJmb3JtYW5jZU9ic2VydmVyXG5cbmxldCBvYnNlcnZlIH5lbnRyeV90eXBlcyB+ZiA9XG4gIGxldCBlbnRyeV90eXBlcyA9IGVudHJ5X3R5cGVzIHw+IExpc3QubWFwIEpzLnN0cmluZyB8PiBBcnJheS5vZl9saXN0IHw+IEpzLmFycmF5IGluXG4gIGxldCBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IDogcGVyZm9ybWFuY2VPYnNlcnZlckluaXQgSnMudCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBsZXQgKCkgPSBwZXJmb3JtYW5jZV9vYnNlcnZlcl9pbml0IyMuZW50cnlUeXBlcyA6PSBlbnRyeV90eXBlcyBpblxuICBsZXQgb2JzID0gbmV3JWpzIHBlcmZvcm1hbmNlT2JzZXJ2ZXIgKEpzLndyYXBfY2FsbGJhY2sgZikgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIHBlcmZvcm1hbmNlX29ic2VydmVyX2luaXQgaW5cbiAgb2JzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE1IFN0w6lwaGFuZSBMZWdyYW5kXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVySW5pdCA9IG9iamVjdFxuICBtZXRob2QgY2hpbGRMaXN0IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVzIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGFyYWN0ZXJEYXRhIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzdWJ0cmVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVPbGRWYWx1ZSA6IGJvb2wgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgY2hhcmFjdGVyRGF0YU9sZFZhbHVlIDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVGaWx0ZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvblJlY29yZCA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRhcmdldCA6IERvbS5ub2RlIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhZGRlZE5vZGVzIDogRG9tLm5vZGUgRG9tLm5vZGVMaXN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZW1vdmVkTm9kZXMgOiBEb20ubm9kZSBEb20ubm9kZUxpc3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXZpb3VzU2libGluZyA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbmV4dFNpYmxpbmcgOiBEb20ubm9kZSBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGF0dHJpYnV0ZU5hbWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhdHRyaWJ1dGVOYW1lc3BhY2UgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbGRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBtdXRhdGlvbk9ic2VydmVyID0gb2JqZWN0XG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlckluaXQgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZGlzY29ubmVjdCA6IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCB0YWtlUmVjb3JkcyA6IG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X211dGF0aW9uX29ic2VydmVyX2luaXQgKCkgOiBtdXRhdGlvbk9ic2VydmVySW5pdCBKcy50ID0gSnMuVW5zYWZlLm9iaiBbfHxdXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9NdXRhdGlvbk9ic2VydmVyXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBtdXRhdGlvbk9ic2VydmVyXG5cbmxldCBtdXRhdGlvbk9ic2VydmVyIDpcbiAgICAoICAgKG11dGF0aW9uUmVjb3JkIEpzLnQgSnMuanNfYXJyYXkgSnMudCAtPiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50KVxuICAgIEpzLmNvbnN0ciA9XG4gIG11dGF0aW9uT2JzZXJ2ZXJcblxubGV0IG9ic2VydmVcbiAgICB+KG5vZGUgOiAjRG9tLm5vZGUgSnMudClcbiAgICB+KGYgOiBtdXRhdGlvblJlY29yZCBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gbXV0YXRpb25PYnNlcnZlciBKcy50IC0+IHVuaXQpXG4gICAgPyhjaGlsZF9saXN0IDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVzIDogYm9vbCBvcHRpb24pXG4gICAgPyhjaGFyYWN0ZXJfZGF0YSA6IGJvb2wgb3B0aW9uKVxuICAgID8oc3VidHJlZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oYXR0cmlidXRlX29sZF92YWx1ZSA6IGJvb2wgb3B0aW9uKVxuICAgID8oY2hhcmFjdGVyX2RhdGFfb2xkX3ZhbHVlIDogYm9vbCBvcHRpb24pXG4gICAgPyhhdHRyaWJ1dGVfZmlsdGVyIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCBvcHRpb24pXG4gICAgKCkgOiBtdXRhdGlvbk9ic2VydmVyIEpzLnQgPVxuICBsZXQgb3B0X2l0ZXIgeCBmID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgeCAtPiBmIHhcbiAgaW5cbiAgbGV0IG9icyA9IG5ldyVqcyBtdXRhdGlvbk9ic2VydmVyIChKcy53cmFwX2NhbGxiYWNrIGYpIGluXG4gIGxldCBjZmcgPSBlbXB0eV9tdXRhdGlvbl9vYnNlcnZlcl9pbml0ICgpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoaWxkX2xpc3QgKGZ1biB2IC0+IGNmZyMjLmNoaWxkTGlzdCA6PSB2KSBpblxuICBsZXQgKCkgPSBvcHRfaXRlciBhdHRyaWJ1dGVzIChmdW4gdiAtPiBjZmcjIy5hdHRyaWJ1dGVzIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIGNoYXJhY3Rlcl9kYXRhIChmdW4gdiAtPiBjZmcjIy5jaGFyYWN0ZXJEYXRhIDo9IHYpIGluXG4gIGxldCAoKSA9IG9wdF9pdGVyIHN1YnRyZWUgKGZ1biB2IC0+IGNmZyMjLnN1YnRyZWUgOj0gdikgaW5cbiAgbGV0ICgpID0gb3B0X2l0ZXIgYXR0cmlidXRlX29sZF92YWx1ZSAoZnVuIHYgLT4gY2ZnIyMuYXR0cmlidXRlT2xkVmFsdWUgOj0gdikgaW5cbiAgbGV0ICgpID1cbiAgICBvcHRfaXRlciBjaGFyYWN0ZXJfZGF0YV9vbGRfdmFsdWUgKGZ1biB2IC0+IGNmZyMjLmNoYXJhY3RlckRhdGFPbGRWYWx1ZSA6PSB2KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG9wdF9pdGVyIGF0dHJpYnV0ZV9maWx0ZXIgKGZ1biBsIC0+XG4gICAgICAgIGNmZyMjLmF0dHJpYnV0ZUZpbHRlciA6PSBKcy5hcnJheSAoQXJyYXkub2ZfbGlzdCBsKSlcbiAgaW5cbiAgbGV0ICgpID0gb2JzIyNvYnNlcnZlIG5vZGUgY2ZnIGluXG4gIG9ic1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCBQaWVycmUgQ2hhbWJhcnQgMjAxMi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG50eXBlICdhIHQgPSA8ID4gSnMudFxuXG5sZXQgb2JqID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9PYmplY3RcblxubGV0IGNyZWF0ZSAoKSA6ICdhIHQgPSBuZXclanMgb2JqXG5cbmxldCBhZGQgKHQgOiAnYSB0KSAoayA6IEpzLmpzX3N0cmluZyBKcy50KSAodiA6ICdhKSA9XG4gICgqICdfJyBpcyBhZGRlZCB0byBhdm9pZCBjb25mbGljdHMgd2l0aCBvYmplY3RzIG1ldGhvZHMgKilcbiAgSnMuVW5zYWZlLnNldCB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpIHZcblxubGV0IHJlbW92ZSAodCA6ICdhIHQpIChrIDogSnMuanNfc3RyaW5nIEpzLnQpID1cbiAgSnMuVW5zYWZlLmRlbGV0ZSB0IChrIyNjb25jYXQgKEpzLnN0cmluZyBcIl9cIikpXG5cbmxldCBmaW5kICh0IDogJ2EgdCkgKGsgOiBKcy5qc19zdHJpbmcgSnMudCkgOiAnYSBKcy5PcHRkZWYudCA9XG4gIEpzLlVuc2FmZS5nZXQgdCAoayMjY29uY2F0IChKcy5zdHJpbmcgXCJfXCIpKVxuXG5sZXQga2V5cyAodCA6ICdhIHQpIDogSnMuanNfc3RyaW5nIEpzLnQgbGlzdCA9XG4gIGxldCBrZXlfYXJyYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50ID1cbiAgICBKcy5VbnNhZmUuZ2xvYmFsIyMuX09iamVjdCMja2V5cyB0XG4gIGluXG4gIGxldCByZXMgPSByZWYgW10gaW5cbiAgZm9yIGkgPSAwIHRvIHByZWQga2V5X2FycmF5IyMubGVuZ3RoIGRvXG4gICAgbGV0IGtleSA9XG4gICAgICBKcy5PcHRkZWYuZ2V0IChKcy5hcnJheV9nZXQga2V5X2FycmF5IGkpIChmdW4gKCkgLT4gZmFpbHdpdGggXCJKc3RhYmxlLmtleXNcIilcbiAgICBpblxuICAgIHJlcyA6PSBrZXkjI3N1YnN0cmluZyAwIChwcmVkIGtleSMjLmxlbmd0aCkgOjogIXJlc1xuICBkb25lO1xuICBMaXN0LnJldiAhcmVzXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IEdyw6lnb2lyZSBIZW5yeSAyMDEwLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzXG5vcGVuISBJbXBvcnRcblxuY2xhc3MgdHlwZSBqc29uID0gb2JqZWN0XG4gIG1ldGhvZCBwYXJzZSA6ICdhLiBqc19zdHJpbmcgdCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHBhcnNlXyA6XG4gICAgJ2EgJ2IgJ2MgJ2QuIGpzX3N0cmluZyB0IC0+ICgnYiB0LCBqc19zdHJpbmcgdCAtPiAnYyAtPiAnZCkgbWV0aF9jYWxsYmFjayAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeSA6ICdhLiAnYSAtPiBqc19zdHJpbmcgdCBtZXRoXG5cbiAgbWV0aG9kIHN0cmluZ2lmeV8gOlxuICAgICdhICdiICdjICdkLiAnYSAtPiAoJ2IsIGpzX3N0cmluZyB0IC0+ICdjIC0+ICdkKSBtZXRoX2NhbGxiYWNrIC0+IGpzX3N0cmluZyB0IG1ldGhcbmVuZFxuXG5sZXQganNvbiA6IGpzb24gSnMudCA9IFVuc2FmZS5nbG9iYWwjIy5fSlNPTlxuXG5sZXQgaW5wdXRfcmV2aXZlciA9XG4gIGxldCByZXZpdmVyIF90aGlzIF9rZXkgKHZhbHVlIDogVW5zYWZlLmFueSkgOiBPYmoudCA9XG4gICAgaWYgSnMuZXF1YWxzICh0eXBlb2YgdmFsdWUpIChzdHJpbmcgXCJzdHJpbmdcIilcbiAgICB0aGVuIE9iai5yZXByICh0b19ieXRlc3RyaW5nIChVbnNhZmUuY29lcmNlIHZhbHVlKSlcbiAgICBlbHNlIGlmIGluc3RhbmNlb2YgdmFsdWUgSnMuYXJyYXlfZW1wdHlcbiAgICAgICAgICAgICYmIChVbnNhZmUuY29lcmNlIHZhbHVlKSMjLmxlbmd0aCA9PSA0XG4gICAgICAgICAgICAmJiBVbnNhZmUuZ2V0IHZhbHVlIDAgPT0gMjU1XG4gICAgdGhlblxuICAgICAgT2JqLnJlcHJcbiAgICAgICAgKEpzb29fcnVudGltZS5JbnQ2NC5jcmVhdGVfaW50NjRfbG9fbWlfaGlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMSlcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMilcbiAgICAgICAgICAgKFVuc2FmZS5nZXQgdmFsdWUgMykpXG4gICAgZWxzZSBPYmoucmVwciB2YWx1ZVxuICBpblxuICB3cmFwX21ldGhfY2FsbGJhY2sgcmV2aXZlclxuXG5sZXQgdW5zYWZlX2lucHV0IHMgPSBqc29uIyNwYXJzZV8gcyBpbnB1dF9yZXZpdmVyXG5cbmNsYXNzIHR5cGUgb2JqID0gb2JqZWN0XG4gIG1ldGhvZCBjb25zdHJ1Y3RvciA6ICdhLiAnYSBjb25zdHIgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBtbEludDY0X2NvbnN0ciA9XG4gIGxldCBkdW1teV9pbnQ2NCA9IDFMIGluXG4gIGxldCBkdW1teV9vYmogOiBvYmogdCA9IE9iai5tYWdpYyBkdW1teV9pbnQ2NCBpblxuICBkdW1teV9vYmojIy5jb25zdHJ1Y3RvclxuXG5sZXQgb3V0cHV0X3Jldml2ZXIgX2tleSAodmFsdWUgOiBVbnNhZmUuYW55KSA6IE9iai50ID1cbiAgaWYgT2JqLnRhZyAoT2JqLnJlcHIgdmFsdWUpID0gT2JqLnN0cmluZ190YWdcbiAgdGhlbiBPYmoucmVwciAoYnl0ZXN0cmluZyAoT2JqLm1hZ2ljIHZhbHVlIDogc3RyaW5nKSlcbiAgZWxzZSBpZiBpbnN0YW5jZW9mIHZhbHVlIG1sSW50NjRfY29uc3RyXG4gIHRoZW5cbiAgICBsZXQgdmFsdWUgPSBVbnNhZmUuY29lcmNlIHZhbHVlIGluXG4gICAgT2JqLnJlcHIgKGFycmF5IFt8IDI1NTsgdmFsdWUjIy5sbzsgdmFsdWUjIy5taTsgdmFsdWUjIy5oaSB8XSlcbiAgZWxzZSBPYmoucmVwciB2YWx1ZVxuXG5sZXQgb3V0cHV0IG9iaiA9IGpzb24jI3N0cmluZ2lmeV8gb2JqIChKcy53cmFwX2NhbGxiYWNrIG91dHB1dF9yZXZpdmVyKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBSYXBoYcOrbCBQcm91c3RcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuISBJbXBvcnRcblxubW9kdWxlIENvbG9yID0gc3RydWN0XG4gICgqIFRoZSB0eXBlIG9mIENTUyBjb2xvcnMuIEZpcnN0IGJ5IG5hbWUgYW5kIHRoZW4gYnkgY29uc3RydWN0b3IuICopXG4gIHR5cGUgbmFtZSA9XG4gICAgfCBBbGljZWJsdWVcbiAgICB8IEFudGlxdWV3aGl0ZVxuICAgIHwgQXF1YVxuICAgIHwgQXF1YW1hcmluZVxuICAgIHwgQXp1cmVcbiAgICB8IEJlaWdlXG4gICAgfCBCaXNxdWVcbiAgICB8IEJsYWNrXG4gICAgfCBCbGFuY2hlZGFsbW9uZFxuICAgIHwgQmx1ZVxuICAgIHwgQmx1ZXZpb2xldFxuICAgIHwgQnJvd25cbiAgICB8IEJ1cmx5d29vZFxuICAgIHwgQ2FkZXRibHVlXG4gICAgfCBDaGFydHJldXNlXG4gICAgfCBDaG9jb2xhdGVcbiAgICB8IENvcmFsXG4gICAgfCBDb3JuZmxvd2VyYmx1ZVxuICAgIHwgQ29ybnNpbGtcbiAgICB8IENyaW1zb25cbiAgICB8IEN5YW5cbiAgICB8IERhcmtibHVlXG4gICAgfCBEYXJrY3lhblxuICAgIHwgRGFya2dvbGRlbnJvZFxuICAgIHwgRGFya2dyYXlcbiAgICB8IERhcmtncmVlblxuICAgIHwgRGFya2dyZXlcbiAgICB8IERhcmtraGFraVxuICAgIHwgRGFya21hZ2VudGFcbiAgICB8IERhcmtvbGl2ZWdyZWVuXG4gICAgfCBEYXJrb3JhbmdlXG4gICAgfCBEYXJrb3JjaGlkXG4gICAgfCBEYXJrcmVkXG4gICAgfCBEYXJrc2FsbW9uXG4gICAgfCBEYXJrc2VhZ3JlZW5cbiAgICB8IERhcmtzbGF0ZWJsdWVcbiAgICB8IERhcmtzbGF0ZWdyYXlcbiAgICB8IERhcmtzbGF0ZWdyZXlcbiAgICB8IERhcmt0dXJxdW9pc2VcbiAgICB8IERhcmt2aW9sZXRcbiAgICB8IERlZXBwaW5rXG4gICAgfCBEZWVwc2t5Ymx1ZVxuICAgIHwgRGltZ3JheVxuICAgIHwgRGltZ3JleVxuICAgIHwgRG9kZ2VyYmx1ZVxuICAgIHwgRmlyZWJyaWNrXG4gICAgfCBGbG9yYWx3aGl0ZVxuICAgIHwgRm9yZXN0Z3JlZW5cbiAgICB8IEZ1Y2hzaWFcbiAgICB8IEdhaW5zYm9yb1xuICAgIHwgR2hvc3R3aGl0ZVxuICAgIHwgR29sZFxuICAgIHwgR29sZGVucm9kXG4gICAgfCBHcmF5XG4gICAgfCBHcmV5XG4gICAgfCBHcmVlblxuICAgIHwgR3JlZW55ZWxsb3dcbiAgICB8IEhvbmV5ZGV3XG4gICAgfCBIb3RwaW5rXG4gICAgfCBJbmRpYW5yZWRcbiAgICB8IEluZGlnb1xuICAgIHwgSXZvcnlcbiAgICB8IEtoYWtpXG4gICAgfCBMYXZlbmRlclxuICAgIHwgTGF2ZW5kZXJibHVzaFxuICAgIHwgTGF3bmdyZWVuXG4gICAgfCBMZW1vbmNoaWZmb25cbiAgICB8IExpZ2h0Ymx1ZVxuICAgIHwgTGlnaHRjb3JhbFxuICAgIHwgTGlnaHRjeWFuXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvd1xuICAgIHwgTGlnaHRncmF5XG4gICAgfCBMaWdodGdyZWVuXG4gICAgfCBMaWdodGdyZXlcbiAgICB8IExpZ2h0cGlua1xuICAgIHwgTGlnaHRzYWxtb25cbiAgICB8IExpZ2h0c2VhZ3JlZW5cbiAgICB8IExpZ2h0c2t5Ymx1ZVxuICAgIHwgTGlnaHRzbGF0ZWdyYXlcbiAgICB8IExpZ2h0c2xhdGVncmV5XG4gICAgfCBMaWdodHN0ZWVsYmx1ZVxuICAgIHwgTGlnaHR5ZWxsb3dcbiAgICB8IExpbWVcbiAgICB8IExpbWVncmVlblxuICAgIHwgTGluZW5cbiAgICB8IE1hZ2VudGFcbiAgICB8IE1hcm9vblxuICAgIHwgTWVkaXVtYXF1YW1hcmluZVxuICAgIHwgTWVkaXVtYmx1ZVxuICAgIHwgTWVkaXVtb3JjaGlkXG4gICAgfCBNZWRpdW1wdXJwbGVcbiAgICB8IE1lZGl1bXNlYWdyZWVuXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IE1lZGl1bXNwcmluZ2dyZWVuXG4gICAgfCBNZWRpdW10dXJxdW9pc2VcbiAgICB8IE1lZGl1bXZpb2xldHJlZFxuICAgIHwgTWlkbmlnaHRibHVlXG4gICAgfCBNaW50Y3JlYW1cbiAgICB8IE1pc3R5cm9zZVxuICAgIHwgTW9jY2FzaW5cbiAgICB8IE5hdmFqb3doaXRlXG4gICAgfCBOYXZ5XG4gICAgfCBPbGRsYWNlXG4gICAgfCBPbGl2ZVxuICAgIHwgT2xpdmVkcmFiXG4gICAgfCBPcmFuZ2VcbiAgICB8IE9yYW5nZXJlZFxuICAgIHwgT3JjaGlkXG4gICAgfCBQYWxlZ29sZGVucm9kXG4gICAgfCBQYWxlZ3JlZW5cbiAgICB8IFBhbGV0dXJxdW9pc2VcbiAgICB8IFBhbGV2aW9sZXRyZWRcbiAgICB8IFBhcGF5YXdoaXBcbiAgICB8IFBlYWNocHVmZlxuICAgIHwgUGVydVxuICAgIHwgUGlua1xuICAgIHwgUGx1bVxuICAgIHwgUG93ZGVyYmx1ZVxuICAgIHwgUHVycGxlXG4gICAgfCBSZWRcbiAgICB8IFJvc3licm93blxuICAgIHwgUm95YWxibHVlXG4gICAgfCBTYWRkbGVicm93blxuICAgIHwgU2FsbW9uXG4gICAgfCBTYW5keWJyb3duXG4gICAgfCBTZWFncmVlblxuICAgIHwgU2Vhc2hlbGxcbiAgICB8IFNpZW5uYVxuICAgIHwgU2lsdmVyXG4gICAgfCBTa3libHVlXG4gICAgfCBTbGF0ZWJsdWVcbiAgICB8IFNsYXRlZ3JheVxuICAgIHwgU2xhdGVncmV5XG4gICAgfCBTbm93XG4gICAgfCBTcHJpbmdncmVlblxuICAgIHwgU3RlZWxibHVlXG4gICAgfCBUYW5cbiAgICB8IFRlYWxcbiAgICB8IFRoaXN0bGVcbiAgICB8IFRvbWF0b1xuICAgIHwgVHVycXVvaXNlXG4gICAgfCBWaW9sZXRcbiAgICB8IFdoZWF0XG4gICAgfCBXaGl0ZVxuICAgIHwgV2hpdGVzbW9rZVxuICAgIHwgWWVsbG93XG4gICAgfCBZZWxsb3dncmVlblxuXG4gIGxldCBzdHJpbmdfb2ZfbmFtZSA9IGZ1bmN0aW9uXG4gICAgfCBBbGljZWJsdWUgLT4gXCJhbGljZWJsdWVcIlxuICAgIHwgQW50aXF1ZXdoaXRlIC0+IFwiYW50aXF1ZXdoaXRlXCJcbiAgICB8IEFxdWEgLT4gXCJhcXVhXCJcbiAgICB8IEFxdWFtYXJpbmUgLT4gXCJhcXVhbWFyaW5lXCJcbiAgICB8IEF6dXJlIC0+IFwiYXp1cmVcIlxuICAgIHwgQmVpZ2UgLT4gXCJiZWlnZVwiXG4gICAgfCBCaXNxdWUgLT4gXCJiaXNxdWVcIlxuICAgIHwgQmxhY2sgLT4gXCJibGFja1wiXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiBcImJsYW5jaGVkYWxtb25kXCJcbiAgICB8IEJsdWUgLT4gXCJibHVlXCJcbiAgICB8IEJsdWV2aW9sZXQgLT4gXCJibHVldmlvbGV0XCJcbiAgICB8IEJyb3duIC0+IFwiYnJvd25cIlxuICAgIHwgQnVybHl3b29kIC0+IFwiYnVybHl3b29kXCJcbiAgICB8IENhZGV0Ymx1ZSAtPiBcImNhZGV0Ymx1ZVwiXG4gICAgfCBDaGFydHJldXNlIC0+IFwiY2hhcnRyZXVzZVwiXG4gICAgfCBDaG9jb2xhdGUgLT4gXCJjaG9jb2xhdGVcIlxuICAgIHwgQ29yYWwgLT4gXCJjb3JhbFwiXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiBcImNvcm5mbG93ZXJibHVlXCJcbiAgICB8IENvcm5zaWxrIC0+IFwiY29ybnNpbGtcIlxuICAgIHwgQ3JpbXNvbiAtPiBcImNyaW1zb25cIlxuICAgIHwgQ3lhbiAtPiBcImN5YW5cIlxuICAgIHwgRGFya2JsdWUgLT4gXCJkYXJrYmx1ZVwiXG4gICAgfCBEYXJrY3lhbiAtPiBcImRhcmtjeWFuXCJcbiAgICB8IERhcmtnb2xkZW5yb2QgLT4gXCJkYXJrZ29sZGVucm9kXCJcbiAgICB8IERhcmtncmF5IC0+IFwiZGFya2dyYXlcIlxuICAgIHwgRGFya2dyZWVuIC0+IFwiZGFya2dyZWVuXCJcbiAgICB8IERhcmtncmV5IC0+IFwiZGFya2dyZXlcIlxuICAgIHwgRGFya2toYWtpIC0+IFwiZGFya2toYWtpXCJcbiAgICB8IERhcmttYWdlbnRhIC0+IFwiZGFya21hZ2VudGFcIlxuICAgIHwgRGFya29saXZlZ3JlZW4gLT4gXCJkYXJrb2xpdmVncmVlblwiXG4gICAgfCBEYXJrb3JhbmdlIC0+IFwiZGFya29yYW5nZVwiXG4gICAgfCBEYXJrb3JjaGlkIC0+IFwiZGFya29yY2hpZFwiXG4gICAgfCBEYXJrcmVkIC0+IFwiZGFya3JlZFwiXG4gICAgfCBEYXJrc2FsbW9uIC0+IFwiZGFya3NhbG1vblwiXG4gICAgfCBEYXJrc2VhZ3JlZW4gLT4gXCJkYXJrc2VhZ3JlZW5cIlxuICAgIHwgRGFya3NsYXRlYmx1ZSAtPiBcImRhcmtzbGF0ZWJsdWVcIlxuICAgIHwgRGFya3NsYXRlZ3JheSAtPiBcImRhcmtzbGF0ZWdyYXlcIlxuICAgIHwgRGFya3NsYXRlZ3JleSAtPiBcImRhcmtzbGF0ZWdyZXlcIlxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiBcImRhcmt0dXJxdW9pc2VcIlxuICAgIHwgRGFya3Zpb2xldCAtPiBcImRhcmt2aW9sZXRcIlxuICAgIHwgRGVlcHBpbmsgLT4gXCJkZWVwcGlua1wiXG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiBcImRlZXBza3libHVlXCJcbiAgICB8IERpbWdyYXkgLT4gXCJkaW1ncmF5XCJcbiAgICB8IERpbWdyZXkgLT4gXCJkaW1ncmV5XCJcbiAgICB8IERvZGdlcmJsdWUgLT4gXCJkb2RnZXJibHVlXCJcbiAgICB8IEZpcmVicmljayAtPiBcImZpcmVicmlja1wiXG4gICAgfCBGbG9yYWx3aGl0ZSAtPiBcImZsb3JhbHdoaXRlXCJcbiAgICB8IEZvcmVzdGdyZWVuIC0+IFwiZm9yZXN0Z3JlZW5cIlxuICAgIHwgRnVjaHNpYSAtPiBcImZ1Y2hzaWFcIlxuICAgIHwgR2FpbnNib3JvIC0+IFwiZ2FpbnNib3JvXCJcbiAgICB8IEdob3N0d2hpdGUgLT4gXCJnaG9zdHdoaXRlXCJcbiAgICB8IEdvbGQgLT4gXCJnb2xkXCJcbiAgICB8IEdvbGRlbnJvZCAtPiBcImdvbGRlbnJvZFwiXG4gICAgfCBHcmF5IC0+IFwiZ3JheVwiXG4gICAgfCBHcmVlbiAtPiBcImdyZWVuXCJcbiAgICB8IEdyZWVueWVsbG93IC0+IFwiZ3JlZW55ZWxsb3dcIlxuICAgIHwgR3JleSAtPiBcImdyZXlcIlxuICAgIHwgSG9uZXlkZXcgLT4gXCJob25leWRld1wiXG4gICAgfCBIb3RwaW5rIC0+IFwiaG90cGlua1wiXG4gICAgfCBJbmRpYW5yZWQgLT4gXCJpbmRpYW5yZWRcIlxuICAgIHwgSW5kaWdvIC0+IFwiaW5kaWdvXCJcbiAgICB8IEl2b3J5IC0+IFwiaXZvcnlcIlxuICAgIHwgS2hha2kgLT4gXCJraGFraVwiXG4gICAgfCBMYXZlbmRlciAtPiBcImxhdmVuZGVyXCJcbiAgICB8IExhdmVuZGVyYmx1c2ggLT4gXCJsYXZlbmRlcmJsdXNoXCJcbiAgICB8IExhd25ncmVlbiAtPiBcImxhd25ncmVlblwiXG4gICAgfCBMZW1vbmNoaWZmb24gLT4gXCJsZW1vbmNoaWZmb25cIlxuICAgIHwgTGlnaHRibHVlIC0+IFwibGlnaHRibHVlXCJcbiAgICB8IExpZ2h0Y29yYWwgLT4gXCJsaWdodGNvcmFsXCJcbiAgICB8IExpZ2h0Y3lhbiAtPiBcImxpZ2h0Y3lhblwiXG4gICAgfCBMaWdodGdvbGRlbnJvZHllbGxvdyAtPiBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICB8IExpZ2h0Z3JheSAtPiBcImxpZ2h0Z3JheVwiXG4gICAgfCBMaWdodGdyZWVuIC0+IFwibGlnaHRncmVlblwiXG4gICAgfCBMaWdodGdyZXkgLT4gXCJsaWdodGdyZXlcIlxuICAgIHwgTGlnaHRwaW5rIC0+IFwibGlnaHRwaW5rXCJcbiAgICB8IExpZ2h0c2FsbW9uIC0+IFwibGlnaHRzYWxtb25cIlxuICAgIHwgTGlnaHRzZWFncmVlbiAtPiBcImxpZ2h0c2VhZ3JlZW5cIlxuICAgIHwgTGlnaHRza3libHVlIC0+IFwibGlnaHRza3libHVlXCJcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgIHwgTGlnaHRzbGF0ZWdyZXkgLT4gXCJsaWdodHNsYXRlZ3JleVwiXG4gICAgfCBMaWdodHN0ZWVsYmx1ZSAtPiBcImxpZ2h0c3RlZWxibHVlXCJcbiAgICB8IExpZ2h0eWVsbG93IC0+IFwibGlnaHR5ZWxsb3dcIlxuICAgIHwgTGltZSAtPiBcImxpbWVcIlxuICAgIHwgTGltZWdyZWVuIC0+IFwibGltZWdyZWVuXCJcbiAgICB8IExpbmVuIC0+IFwibGluZW5cIlxuICAgIHwgTWFnZW50YSAtPiBcIm1hZ2VudGFcIlxuICAgIHwgTWFyb29uIC0+IFwibWFyb29uXCJcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gXCJtZWRpdW1hcXVhbWFyaW5lXCJcbiAgICB8IE1lZGl1bWJsdWUgLT4gXCJtZWRpdW1ibHVlXCJcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiBcIm1lZGl1bW9yY2hpZFwiXG4gICAgfCBNZWRpdW1wdXJwbGUgLT4gXCJtZWRpdW1wdXJwbGVcIlxuICAgIHwgTWVkaXVtc2VhZ3JlZW4gLT4gXCJtZWRpdW1zZWFncmVlblwiXG4gICAgfCBNZWRpdW1zbGF0ZWJsdWUgLT4gXCJtZWRpdW1zbGF0ZWJsdWVcIlxuICAgIHwgTWVkaXVtc3ByaW5nZ3JlZW4gLT4gXCJtZWRpdW1zcHJpbmdncmVlblwiXG4gICAgfCBNZWRpdW10dXJxdW9pc2UgLT4gXCJtZWRpdW10dXJxdW9pc2VcIlxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IFwibWVkaXVtdmlvbGV0cmVkXCJcbiAgICB8IE1pZG5pZ2h0Ymx1ZSAtPiBcIm1pZG5pZ2h0Ymx1ZVwiXG4gICAgfCBNaW50Y3JlYW0gLT4gXCJtaW50Y3JlYW1cIlxuICAgIHwgTWlzdHlyb3NlIC0+IFwibWlzdHlyb3NlXCJcbiAgICB8IE1vY2Nhc2luIC0+IFwibW9jY2FzaW5cIlxuICAgIHwgTmF2YWpvd2hpdGUgLT4gXCJuYXZham93aGl0ZVwiXG4gICAgfCBOYXZ5IC0+IFwibmF2eVwiXG4gICAgfCBPbGRsYWNlIC0+IFwib2xkbGFjZVwiXG4gICAgfCBPbGl2ZSAtPiBcIm9saXZlXCJcbiAgICB8IE9saXZlZHJhYiAtPiBcIm9saXZlZHJhYlwiXG4gICAgfCBPcmFuZ2UgLT4gXCJvcmFuZ2VcIlxuICAgIHwgT3JhbmdlcmVkIC0+IFwib3JhbmdlcmVkXCJcbiAgICB8IE9yY2hpZCAtPiBcIm9yY2hpZFwiXG4gICAgfCBQYWxlZ29sZGVucm9kIC0+IFwicGFsZWdvbGRlbnJvZFwiXG4gICAgfCBQYWxlZ3JlZW4gLT4gXCJwYWxlZ3JlZW5cIlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiBcInBhbGV0dXJxdW9pc2VcIlxuICAgIHwgUGFsZXZpb2xldHJlZCAtPiBcInBhbGV2aW9sZXRyZWRcIlxuICAgIHwgUGFwYXlhd2hpcCAtPiBcInBhcGF5YXdoaXBcIlxuICAgIHwgUGVhY2hwdWZmIC0+IFwicGVhY2hwdWZmXCJcbiAgICB8IFBlcnUgLT4gXCJwZXJ1XCJcbiAgICB8IFBpbmsgLT4gXCJwaW5rXCJcbiAgICB8IFBsdW0gLT4gXCJwbHVtXCJcbiAgICB8IFBvd2RlcmJsdWUgLT4gXCJwb3dkZXJibHVlXCJcbiAgICB8IFB1cnBsZSAtPiBcInB1cnBsZVwiXG4gICAgfCBSZWQgLT4gXCJyZWRcIlxuICAgIHwgUm9zeWJyb3duIC0+IFwicm9zeWJyb3duXCJcbiAgICB8IFJveWFsYmx1ZSAtPiBcInJveWFsYmx1ZVwiXG4gICAgfCBTYWRkbGVicm93biAtPiBcInNhZGRsZWJyb3duXCJcbiAgICB8IFNhbG1vbiAtPiBcInNhbG1vblwiXG4gICAgfCBTYW5keWJyb3duIC0+IFwic2FuZHlicm93blwiXG4gICAgfCBTZWFncmVlbiAtPiBcInNlYWdyZWVuXCJcbiAgICB8IFNlYXNoZWxsIC0+IFwic2Vhc2hlbGxcIlxuICAgIHwgU2llbm5hIC0+IFwic2llbm5hXCJcbiAgICB8IFNpbHZlciAtPiBcInNpbHZlclwiXG4gICAgfCBTa3libHVlIC0+IFwic2t5Ymx1ZVwiXG4gICAgfCBTbGF0ZWJsdWUgLT4gXCJzbGF0ZWJsdWVcIlxuICAgIHwgU2xhdGVncmF5IC0+IFwic2xhdGVncmF5XCJcbiAgICB8IFNsYXRlZ3JleSAtPiBcInNsYXRlZ3JleVwiXG4gICAgfCBTbm93IC0+IFwic25vd1wiXG4gICAgfCBTcHJpbmdncmVlbiAtPiBcInNwcmluZ2dyZWVuXCJcbiAgICB8IFN0ZWVsYmx1ZSAtPiBcInN0ZWVsYmx1ZVwiXG4gICAgfCBUYW4gLT4gXCJ0YW5cIlxuICAgIHwgVGVhbCAtPiBcInRlYWxcIlxuICAgIHwgVGhpc3RsZSAtPiBcInRoaXN0bGVcIlxuICAgIHwgVG9tYXRvIC0+IFwidG9tYXRvXCJcbiAgICB8IFR1cnF1b2lzZSAtPiBcInR1cnF1b2lzZVwiXG4gICAgfCBWaW9sZXQgLT4gXCJ2aW9sZXRcIlxuICAgIHwgV2hlYXQgLT4gXCJ3aGVhdFwiXG4gICAgfCBXaGl0ZSAtPiBcIndoaXRlXCJcbiAgICB8IFdoaXRlc21va2UgLT4gXCJ3aGl0ZXNtb2tlXCJcbiAgICB8IFllbGxvdyAtPiBcInllbGxvd1wiXG4gICAgfCBZZWxsb3dncmVlbiAtPiBcInllbGxvd2dyZWVuXCJcblxuICBsZXQgbmFtZV9vZl9zdHJpbmcgPSBmdW5jdGlvblxuICAgIHwgXCJhbGljZWJsdWVcIiAtPiBBbGljZWJsdWVcbiAgICB8IFwiYW50aXF1ZXdoaXRlXCIgLT4gQW50aXF1ZXdoaXRlXG4gICAgfCBcImFxdWFcIiAtPiBBcXVhXG4gICAgfCBcImFxdWFtYXJpbmVcIiAtPiBBcXVhbWFyaW5lXG4gICAgfCBcImF6dXJlXCIgLT4gQXp1cmVcbiAgICB8IFwiYmVpZ2VcIiAtPiBCZWlnZVxuICAgIHwgXCJiaXNxdWVcIiAtPiBCaXNxdWVcbiAgICB8IFwiYmxhY2tcIiAtPiBCbGFja1xuICAgIHwgXCJibGFuY2hlZGFsbW9uZFwiIC0+IEJsYW5jaGVkYWxtb25kXG4gICAgfCBcImJsdWVcIiAtPiBCbHVlXG4gICAgfCBcImJsdWV2aW9sZXRcIiAtPiBCbHVldmlvbGV0XG4gICAgfCBcImJyb3duXCIgLT4gQnJvd25cbiAgICB8IFwiYnVybHl3b29kXCIgLT4gQnVybHl3b29kXG4gICAgfCBcImNhZGV0Ymx1ZVwiIC0+IENhZGV0Ymx1ZVxuICAgIHwgXCJjaGFydHJldXNlXCIgLT4gQ2hhcnRyZXVzZVxuICAgIHwgXCJjaG9jb2xhdGVcIiAtPiBDaG9jb2xhdGVcbiAgICB8IFwiY29yYWxcIiAtPiBDb3JhbFxuICAgIHwgXCJjb3JuZmxvd2VyYmx1ZVwiIC0+IENvcm5mbG93ZXJibHVlXG4gICAgfCBcImNvcm5zaWxrXCIgLT4gQ29ybnNpbGtcbiAgICB8IFwiY3JpbXNvblwiIC0+IENyaW1zb25cbiAgICB8IFwiY3lhblwiIC0+IEN5YW5cbiAgICB8IFwiZGFya2JsdWVcIiAtPiBEYXJrYmx1ZVxuICAgIHwgXCJkYXJrY3lhblwiIC0+IERhcmtjeWFuXG4gICAgfCBcImRhcmtnb2xkZW5yb2RcIiAtPiBEYXJrZ29sZGVucm9kXG4gICAgfCBcImRhcmtncmF5XCIgLT4gRGFya2dyYXlcbiAgICB8IFwiZGFya2dyZWVuXCIgLT4gRGFya2dyZWVuXG4gICAgfCBcImRhcmtncmV5XCIgLT4gRGFya2dyZXlcbiAgICB8IFwiZGFya2toYWtpXCIgLT4gRGFya2toYWtpXG4gICAgfCBcImRhcmttYWdlbnRhXCIgLT4gRGFya21hZ2VudGFcbiAgICB8IFwiZGFya29saXZlZ3JlZW5cIiAtPiBEYXJrb2xpdmVncmVlblxuICAgIHwgXCJkYXJrb3JhbmdlXCIgLT4gRGFya29yYW5nZVxuICAgIHwgXCJkYXJrb3JjaGlkXCIgLT4gRGFya29yY2hpZFxuICAgIHwgXCJkYXJrcmVkXCIgLT4gRGFya3JlZFxuICAgIHwgXCJkYXJrc2FsbW9uXCIgLT4gRGFya3NhbG1vblxuICAgIHwgXCJkYXJrc2VhZ3JlZW5cIiAtPiBEYXJrc2VhZ3JlZW5cbiAgICB8IFwiZGFya3NsYXRlYmx1ZVwiIC0+IERhcmtzbGF0ZWJsdWVcbiAgICB8IFwiZGFya3NsYXRlZ3JheVwiIC0+IERhcmtzbGF0ZWdyYXlcbiAgICB8IFwiZGFya3NsYXRlZ3JleVwiIC0+IERhcmtzbGF0ZWdyZXlcbiAgICB8IFwiZGFya3R1cnF1b2lzZVwiIC0+IERhcmt0dXJxdW9pc2VcbiAgICB8IFwiZGFya3Zpb2xldFwiIC0+IERhcmt2aW9sZXRcbiAgICB8IFwiZGVlcHBpbmtcIiAtPiBEZWVwcGlua1xuICAgIHwgXCJkZWVwc2t5Ymx1ZVwiIC0+IERlZXBza3libHVlXG4gICAgfCBcImRpbWdyYXlcIiAtPiBEaW1ncmF5XG4gICAgfCBcImRpbWdyZXlcIiAtPiBEaW1ncmV5XG4gICAgfCBcImRvZGdlcmJsdWVcIiAtPiBEb2RnZXJibHVlXG4gICAgfCBcImZpcmVicmlja1wiIC0+IEZpcmVicmlja1xuICAgIHwgXCJmbG9yYWx3aGl0ZVwiIC0+IEZsb3JhbHdoaXRlXG4gICAgfCBcImZvcmVzdGdyZWVuXCIgLT4gRm9yZXN0Z3JlZW5cbiAgICB8IFwiZnVjaHNpYVwiIC0+IEZ1Y2hzaWFcbiAgICB8IFwiZ2FpbnNib3JvXCIgLT4gR2FpbnNib3JvXG4gICAgfCBcImdob3N0d2hpdGVcIiAtPiBHaG9zdHdoaXRlXG4gICAgfCBcImdvbGRcIiAtPiBHb2xkXG4gICAgfCBcImdvbGRlbnJvZFwiIC0+IEdvbGRlbnJvZFxuICAgIHwgXCJncmF5XCIgLT4gR3JheVxuICAgIHwgXCJncmVlblwiIC0+IEdyZWVuXG4gICAgfCBcImdyZWVueWVsbG93XCIgLT4gR3JlZW55ZWxsb3dcbiAgICB8IFwiZ3JleVwiIC0+IEdyZXlcbiAgICB8IFwiaG9uZXlkZXdcIiAtPiBIb25leWRld1xuICAgIHwgXCJob3RwaW5rXCIgLT4gSG90cGlua1xuICAgIHwgXCJpbmRpYW5yZWRcIiAtPiBJbmRpYW5yZWRcbiAgICB8IFwiaW5kaWdvXCIgLT4gSW5kaWdvXG4gICAgfCBcIml2b3J5XCIgLT4gSXZvcnlcbiAgICB8IFwia2hha2lcIiAtPiBLaGFraVxuICAgIHwgXCJsYXZlbmRlclwiIC0+IExhdmVuZGVyXG4gICAgfCBcImxhdmVuZGVyYmx1c2hcIiAtPiBMYXZlbmRlcmJsdXNoXG4gICAgfCBcImxhd25ncmVlblwiIC0+IExhd25ncmVlblxuICAgIHwgXCJsZW1vbmNoaWZmb25cIiAtPiBMZW1vbmNoaWZmb25cbiAgICB8IFwibGlnaHRibHVlXCIgLT4gTGlnaHRibHVlXG4gICAgfCBcImxpZ2h0Y29yYWxcIiAtPiBMaWdodGNvcmFsXG4gICAgfCBcImxpZ2h0Y3lhblwiIC0+IExpZ2h0Y3lhblxuICAgIHwgXCJsaWdodGdvbGRlbnJvZHllbGxvd1wiIC0+IExpZ2h0Z29sZGVucm9keWVsbG93XG4gICAgfCBcImxpZ2h0Z3JheVwiIC0+IExpZ2h0Z3JheVxuICAgIHwgXCJsaWdodGdyZWVuXCIgLT4gTGlnaHRncmVlblxuICAgIHwgXCJsaWdodGdyZXlcIiAtPiBMaWdodGdyZXlcbiAgICB8IFwibGlnaHRwaW5rXCIgLT4gTGlnaHRwaW5rXG4gICAgfCBcImxpZ2h0c2FsbW9uXCIgLT4gTGlnaHRzYWxtb25cbiAgICB8IFwibGlnaHRzZWFncmVlblwiIC0+IExpZ2h0c2VhZ3JlZW5cbiAgICB8IFwibGlnaHRza3libHVlXCIgLT4gTGlnaHRza3libHVlXG4gICAgfCBcImxpZ2h0c2xhdGVncmF5XCIgLT4gTGlnaHRzbGF0ZWdyYXlcbiAgICB8IFwibGlnaHRzbGF0ZWdyZXlcIiAtPiBMaWdodHNsYXRlZ3JleVxuICAgIHwgXCJsaWdodHN0ZWVsYmx1ZVwiIC0+IExpZ2h0c3RlZWxibHVlXG4gICAgfCBcImxpZ2h0eWVsbG93XCIgLT4gTGlnaHR5ZWxsb3dcbiAgICB8IFwibGltZVwiIC0+IExpbWVcbiAgICB8IFwibGltZWdyZWVuXCIgLT4gTGltZWdyZWVuXG4gICAgfCBcImxpbmVuXCIgLT4gTGluZW5cbiAgICB8IFwibWFnZW50YVwiIC0+IE1hZ2VudGFcbiAgICB8IFwibWFyb29uXCIgLT4gTWFyb29uXG4gICAgfCBcIm1lZGl1bWFxdWFtYXJpbmVcIiAtPiBNZWRpdW1hcXVhbWFyaW5lXG4gICAgfCBcIm1lZGl1bWJsdWVcIiAtPiBNZWRpdW1ibHVlXG4gICAgfCBcIm1lZGl1bW9yY2hpZFwiIC0+IE1lZGl1bW9yY2hpZFxuICAgIHwgXCJtZWRpdW1wdXJwbGVcIiAtPiBNZWRpdW1wdXJwbGVcbiAgICB8IFwibWVkaXVtc2VhZ3JlZW5cIiAtPiBNZWRpdW1zZWFncmVlblxuICAgIHwgXCJtZWRpdW1zbGF0ZWJsdWVcIiAtPiBNZWRpdW1zbGF0ZWJsdWVcbiAgICB8IFwibWVkaXVtc3ByaW5nZ3JlZW5cIiAtPiBNZWRpdW1zcHJpbmdncmVlblxuICAgIHwgXCJtZWRpdW10dXJxdW9pc2VcIiAtPiBNZWRpdW10dXJxdW9pc2VcbiAgICB8IFwibWVkaXVtdmlvbGV0cmVkXCIgLT4gTWVkaXVtdmlvbGV0cmVkXG4gICAgfCBcIm1pZG5pZ2h0Ymx1ZVwiIC0+IE1pZG5pZ2h0Ymx1ZVxuICAgIHwgXCJtaW50Y3JlYW1cIiAtPiBNaW50Y3JlYW1cbiAgICB8IFwibWlzdHlyb3NlXCIgLT4gTWlzdHlyb3NlXG4gICAgfCBcIm1vY2Nhc2luXCIgLT4gTW9jY2FzaW5cbiAgICB8IFwibmF2YWpvd2hpdGVcIiAtPiBOYXZham93aGl0ZVxuICAgIHwgXCJuYXZ5XCIgLT4gTmF2eVxuICAgIHwgXCJvbGRsYWNlXCIgLT4gT2xkbGFjZVxuICAgIHwgXCJvbGl2ZVwiIC0+IE9saXZlXG4gICAgfCBcIm9saXZlZHJhYlwiIC0+IE9saXZlZHJhYlxuICAgIHwgXCJvcmFuZ2VcIiAtPiBPcmFuZ2VcbiAgICB8IFwib3JhbmdlcmVkXCIgLT4gT3JhbmdlcmVkXG4gICAgfCBcIm9yY2hpZFwiIC0+IE9yY2hpZFxuICAgIHwgXCJwYWxlZ29sZGVucm9kXCIgLT4gUGFsZWdvbGRlbnJvZFxuICAgIHwgXCJwYWxlZ3JlZW5cIiAtPiBQYWxlZ3JlZW5cbiAgICB8IFwicGFsZXR1cnF1b2lzZVwiIC0+IFBhbGV0dXJxdW9pc2VcbiAgICB8IFwicGFsZXZpb2xldHJlZFwiIC0+IFBhbGV2aW9sZXRyZWRcbiAgICB8IFwicGFwYXlhd2hpcFwiIC0+IFBhcGF5YXdoaXBcbiAgICB8IFwicGVhY2hwdWZmXCIgLT4gUGVhY2hwdWZmXG4gICAgfCBcInBlcnVcIiAtPiBQZXJ1XG4gICAgfCBcInBpbmtcIiAtPiBQaW5rXG4gICAgfCBcInBsdW1cIiAtPiBQbHVtXG4gICAgfCBcInBvd2RlcmJsdWVcIiAtPiBQb3dkZXJibHVlXG4gICAgfCBcInB1cnBsZVwiIC0+IFB1cnBsZVxuICAgIHwgXCJyZWRcIiAtPiBSZWRcbiAgICB8IFwicm9zeWJyb3duXCIgLT4gUm9zeWJyb3duXG4gICAgfCBcInJveWFsYmx1ZVwiIC0+IFJveWFsYmx1ZVxuICAgIHwgXCJzYWRkbGVicm93blwiIC0+IFNhZGRsZWJyb3duXG4gICAgfCBcInNhbG1vblwiIC0+IFNhbG1vblxuICAgIHwgXCJzYW5keWJyb3duXCIgLT4gU2FuZHlicm93blxuICAgIHwgXCJzZWFncmVlblwiIC0+IFNlYWdyZWVuXG4gICAgfCBcInNlYXNoZWxsXCIgLT4gU2Vhc2hlbGxcbiAgICB8IFwic2llbm5hXCIgLT4gU2llbm5hXG4gICAgfCBcInNpbHZlclwiIC0+IFNpbHZlclxuICAgIHwgXCJza3libHVlXCIgLT4gU2t5Ymx1ZVxuICAgIHwgXCJzbGF0ZWJsdWVcIiAtPiBTbGF0ZWJsdWVcbiAgICB8IFwic2xhdGVncmF5XCIgLT4gU2xhdGVncmF5XG4gICAgfCBcInNsYXRlZ3JleVwiIC0+IFNsYXRlZ3JleVxuICAgIHwgXCJzbm93XCIgLT4gU25vd1xuICAgIHwgXCJzcHJpbmdncmVlblwiIC0+IFNwcmluZ2dyZWVuXG4gICAgfCBcInN0ZWVsYmx1ZVwiIC0+IFN0ZWVsYmx1ZVxuICAgIHwgXCJ0YW5cIiAtPiBUYW5cbiAgICB8IFwidGVhbFwiIC0+IFRlYWxcbiAgICB8IFwidGhpc3RsZVwiIC0+IFRoaXN0bGVcbiAgICB8IFwidG9tYXRvXCIgLT4gVG9tYXRvXG4gICAgfCBcInR1cnF1b2lzZVwiIC0+IFR1cnF1b2lzZVxuICAgIHwgXCJ2aW9sZXRcIiAtPiBWaW9sZXRcbiAgICB8IFwid2hlYXRcIiAtPiBXaGVhdFxuICAgIHwgXCJ3aGl0ZVwiIC0+IFdoaXRlXG4gICAgfCBcIndoaXRlc21va2VcIiAtPiBXaGl0ZXNtb2tlXG4gICAgfCBcInllbGxvd1wiIC0+IFllbGxvd1xuICAgIHwgXCJ5ZWxsb3dncmVlblwiIC0+IFllbGxvd2dyZWVuXG4gICAgfCBzIC0+IHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzIF4gXCIgaXMgbm90IGEgdmFsaWQgY29sb3IgbmFtZVwiKSlcblxuICBsZXQgcmdiX29mX25hbWUgPSBmdW5jdGlvblxuICAgIHwgQWxpY2VibHVlIC0+IDI0MCwgMjQ4LCAyNTVcbiAgICB8IEFudGlxdWV3aGl0ZSAtPiAyNTAsIDIzNSwgMjE1XG4gICAgfCBBcXVhIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBBcXVhbWFyaW5lIC0+IDEyNywgMjU1LCAyMTJcbiAgICB8IEF6dXJlIC0+IDI0MCwgMjU1LCAyNTVcbiAgICB8IEJlaWdlIC0+IDI0NSwgMjQ1LCAyMjBcbiAgICB8IEJpc3F1ZSAtPiAyNTUsIDIyOCwgMTk2XG4gICAgfCBCbGFjayAtPiAwLCAwLCAwXG4gICAgfCBCbGFuY2hlZGFsbW9uZCAtPiAyNTUsIDIzNSwgMjA1XG4gICAgfCBCbHVlIC0+IDAsIDAsIDI1NVxuICAgIHwgQmx1ZXZpb2xldCAtPiAxMzgsIDQzLCAyMjZcbiAgICB8IEJyb3duIC0+IDE2NSwgNDIsIDQyXG4gICAgfCBCdXJseXdvb2QgLT4gMjIyLCAxODQsIDEzNVxuICAgIHwgQ2FkZXRibHVlIC0+IDk1LCAxNTgsIDE2MFxuICAgIHwgQ2hhcnRyZXVzZSAtPiAxMjcsIDI1NSwgMFxuICAgIHwgQ2hvY29sYXRlIC0+IDIxMCwgMTA1LCAzMFxuICAgIHwgQ29yYWwgLT4gMjU1LCAxMjcsIDgwXG4gICAgfCBDb3JuZmxvd2VyYmx1ZSAtPiAxMDAsIDE0OSwgMjM3XG4gICAgfCBDb3Juc2lsayAtPiAyNTUsIDI0OCwgMjIwXG4gICAgfCBDcmltc29uIC0+IDIyMCwgMjAsIDYwXG4gICAgfCBDeWFuIC0+IDAsIDI1NSwgMjU1XG4gICAgfCBEYXJrYmx1ZSAtPiAwLCAwLCAxMzlcbiAgICB8IERhcmtjeWFuIC0+IDAsIDEzOSwgMTM5XG4gICAgfCBEYXJrZ29sZGVucm9kIC0+IDE4NCwgMTM0LCAxMVxuICAgIHwgRGFya2dyYXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2dyZWVuIC0+IDAsIDEwMCwgMFxuICAgIHwgRGFya2dyZXkgLT4gMTY5LCAxNjksIDE2OVxuICAgIHwgRGFya2toYWtpIC0+IDE4OSwgMTgzLCAxMDdcbiAgICB8IERhcmttYWdlbnRhIC0+IDEzOSwgMCwgMTM5XG4gICAgfCBEYXJrb2xpdmVncmVlbiAtPiA4NSwgMTA3LCA0N1xuICAgIHwgRGFya29yYW5nZSAtPiAyNTUsIDE0MCwgMFxuICAgIHwgRGFya29yY2hpZCAtPiAxNTMsIDUwLCAyMDRcbiAgICB8IERhcmtyZWQgLT4gMTM5LCAwLCAwXG4gICAgfCBEYXJrc2FsbW9uIC0+IDIzMywgMTUwLCAxMjJcbiAgICB8IERhcmtzZWFncmVlbiAtPiAxNDMsIDE4OCwgMTQzXG4gICAgfCBEYXJrc2xhdGVibHVlIC0+IDcyLCA2MSwgMTM5XG4gICAgfCBEYXJrc2xhdGVncmF5IC0+IDQ3LCA3OSwgNzlcbiAgICB8IERhcmtzbGF0ZWdyZXkgLT4gNDcsIDc5LCA3OVxuICAgIHwgRGFya3R1cnF1b2lzZSAtPiAwLCAyMDYsIDIwOVxuICAgIHwgRGFya3Zpb2xldCAtPiAxNDgsIDAsIDIxMVxuICAgIHwgRGVlcHBpbmsgLT4gMjU1LCAyMCwgMTQ3XG4gICAgfCBEZWVwc2t5Ymx1ZSAtPiAwLCAxOTEsIDI1NVxuICAgIHwgRGltZ3JheSAtPiAxMDUsIDEwNSwgMTA1XG4gICAgfCBEaW1ncmV5IC0+IDEwNSwgMTA1LCAxMDVcbiAgICB8IERvZGdlcmJsdWUgLT4gMzAsIDE0NCwgMjU1XG4gICAgfCBGaXJlYnJpY2sgLT4gMTc4LCAzNCwgMzRcbiAgICB8IEZsb3JhbHdoaXRlIC0+IDI1NSwgMjUwLCAyNDBcbiAgICB8IEZvcmVzdGdyZWVuIC0+IDM0LCAxMzksIDM0XG4gICAgfCBGdWNoc2lhIC0+IDI1NSwgMCwgMjU1XG4gICAgfCBHYWluc2Jvcm8gLT4gMjIwLCAyMjAsIDIyMFxuICAgIHwgR2hvc3R3aGl0ZSAtPiAyNDgsIDI0OCwgMjU1XG4gICAgfCBHb2xkIC0+IDI1NSwgMjE1LCAwXG4gICAgfCBHb2xkZW5yb2QgLT4gMjE4LCAxNjUsIDMyXG4gICAgfCBHcmF5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEdyZWVuIC0+IDAsIDEyOCwgMFxuICAgIHwgR3JlZW55ZWxsb3cgLT4gMTczLCAyNTUsIDQ3XG4gICAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgICB8IEhvbmV5ZGV3IC0+IDI0MCwgMjU1LCAyNDBcbiAgICB8IEhvdHBpbmsgLT4gMjU1LCAxMDUsIDE4MFxuICAgIHwgSW5kaWFucmVkIC0+IDIwNSwgOTIsIDkyXG4gICAgfCBJbmRpZ28gLT4gNzUsIDAsIDEzMFxuICAgIHwgSXZvcnkgLT4gMjU1LCAyNTUsIDI0MFxuICAgIHwgS2hha2kgLT4gMjQwLCAyMzAsIDE0MFxuICAgIHwgTGF2ZW5kZXIgLT4gMjMwLCAyMzAsIDI1MFxuICAgIHwgTGF2ZW5kZXJibHVzaCAtPiAyNTUsIDI0MCwgMjQ1XG4gICAgfCBMYXduZ3JlZW4gLT4gMTI0LCAyNTIsIDBcbiAgICB8IExlbW9uY2hpZmZvbiAtPiAyNTUsIDI1MCwgMjA1XG4gICAgfCBMaWdodGJsdWUgLT4gMTczLCAyMTYsIDIzMFxuICAgIHwgTGlnaHRjb3JhbCAtPiAyNDAsIDEyOCwgMTI4XG4gICAgfCBMaWdodGN5YW4gLT4gMjI0LCAyNTUsIDI1NVxuICAgIHwgTGlnaHRnb2xkZW5yb2R5ZWxsb3cgLT4gMjUwLCAyNTAsIDIxMFxuICAgIHwgTGlnaHRncmF5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0Z3JlZW4gLT4gMTQ0LCAyMzgsIDE0NFxuICAgIHwgTGlnaHRncmV5IC0+IDIxMSwgMjExLCAyMTFcbiAgICB8IExpZ2h0cGluayAtPiAyNTUsIDE4MiwgMTkzXG4gICAgfCBMaWdodHNhbG1vbiAtPiAyNTUsIDE2MCwgMTIyXG4gICAgfCBMaWdodHNlYWdyZWVuIC0+IDMyLCAxNzgsIDE3MFxuICAgIHwgTGlnaHRza3libHVlIC0+IDEzNSwgMjA2LCAyNTBcbiAgICB8IExpZ2h0c2xhdGVncmF5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c2xhdGVncmV5IC0+IDExOSwgMTM2LCAxNTNcbiAgICB8IExpZ2h0c3RlZWxibHVlIC0+IDE3NiwgMTk2LCAyMjJcbiAgICB8IExpZ2h0eWVsbG93IC0+IDI1NSwgMjU1LCAyMjRcbiAgICB8IExpbWUgLT4gMCwgMjU1LCAwXG4gICAgfCBMaW1lZ3JlZW4gLT4gNTAsIDIwNSwgNTBcbiAgICB8IExpbmVuIC0+IDI1MCwgMjQwLCAyMzBcbiAgICB8IE1hZ2VudGEgLT4gMjU1LCAwLCAyNTVcbiAgICB8IE1hcm9vbiAtPiAxMjgsIDAsIDBcbiAgICB8IE1lZGl1bWFxdWFtYXJpbmUgLT4gMTAyLCAyMDUsIDE3MFxuICAgIHwgTWVkaXVtYmx1ZSAtPiAwLCAwLCAyMDVcbiAgICB8IE1lZGl1bW9yY2hpZCAtPiAxODYsIDg1LCAyMTFcbiAgICB8IE1lZGl1bXB1cnBsZSAtPiAxNDcsIDExMiwgMjE5XG4gICAgfCBNZWRpdW1zZWFncmVlbiAtPiA2MCwgMTc5LCAxMTNcbiAgICB8IE1lZGl1bXNsYXRlYmx1ZSAtPiAxMjMsIDEwNCwgMjM4XG4gICAgfCBNZWRpdW1zcHJpbmdncmVlbiAtPiAwLCAyNTAsIDE1NFxuICAgIHwgTWVkaXVtdHVycXVvaXNlIC0+IDcyLCAyMDksIDIwNFxuICAgIHwgTWVkaXVtdmlvbGV0cmVkIC0+IDE5OSwgMjEsIDEzM1xuICAgIHwgTWlkbmlnaHRibHVlIC0+IDI1LCAyNSwgMTEyXG4gICAgfCBNaW50Y3JlYW0gLT4gMjQ1LCAyNTUsIDI1MFxuICAgIHwgTWlzdHlyb3NlIC0+IDI1NSwgMjI4LCAyMjVcbiAgICB8IE1vY2Nhc2luIC0+IDI1NSwgMjI4LCAxODFcbiAgICB8IE5hdmFqb3doaXRlIC0+IDI1NSwgMjIyLCAxNzNcbiAgICB8IE5hdnkgLT4gMCwgMCwgMTI4XG4gICAgfCBPbGRsYWNlIC0+IDI1MywgMjQ1LCAyMzBcbiAgICB8IE9saXZlIC0+IDEyOCwgMTI4LCAwXG4gICAgfCBPbGl2ZWRyYWIgLT4gMTA3LCAxNDIsIDM1XG4gICAgfCBPcmFuZ2UgLT4gMjU1LCAxNjUsIDBcbiAgICB8IE9yYW5nZXJlZCAtPiAyNTUsIDY5LCAwXG4gICAgfCBPcmNoaWQgLT4gMjE4LCAxMTIsIDIxNFxuICAgIHwgUGFsZWdvbGRlbnJvZCAtPiAyMzgsIDIzMiwgMTcwXG4gICAgfCBQYWxlZ3JlZW4gLT4gMTUyLCAyNTEsIDE1MlxuICAgIHwgUGFsZXR1cnF1b2lzZSAtPiAxNzUsIDIzOCwgMjM4XG4gICAgfCBQYWxldmlvbGV0cmVkIC0+IDIxOSwgMTEyLCAxNDdcbiAgICB8IFBhcGF5YXdoaXAgLT4gMjU1LCAyMzksIDIxM1xuICAgIHwgUGVhY2hwdWZmIC0+IDI1NSwgMjE4LCAxODVcbiAgICB8IFBlcnUgLT4gMjA1LCAxMzMsIDYzXG4gICAgfCBQaW5rIC0+IDI1NSwgMTkyLCAyMDNcbiAgICB8IFBsdW0gLT4gMjIxLCAxNjAsIDIyMVxuICAgIHwgUG93ZGVyYmx1ZSAtPiAxNzYsIDIyNCwgMjMwXG4gICAgfCBQdXJwbGUgLT4gMTI4LCAwLCAxMjhcbiAgICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgICB8IFJvc3licm93biAtPiAxODgsIDE0MywgMTQzXG4gICAgfCBSb3lhbGJsdWUgLT4gNjUsIDEwNSwgMjI1XG4gICAgfCBTYWRkbGVicm93biAtPiAxMzksIDY5LCAxOVxuICAgIHwgU2FsbW9uIC0+IDI1MCwgMTI4LCAxMTRcbiAgICB8IFNhbmR5YnJvd24gLT4gMjQ0LCAxNjQsIDk2XG4gICAgfCBTZWFncmVlbiAtPiA0NiwgMTM5LCA4N1xuICAgIHwgU2Vhc2hlbGwgLT4gMjU1LCAyNDUsIDIzOFxuICAgIHwgU2llbm5hIC0+IDE2MCwgODIsIDQ1XG4gICAgfCBTaWx2ZXIgLT4gMTkyLCAxOTIsIDE5MlxuICAgIHwgU2t5Ymx1ZSAtPiAxMzUsIDIwNiwgMjM1XG4gICAgfCBTbGF0ZWJsdWUgLT4gMTA2LCA5MCwgMjA1XG4gICAgfCBTbGF0ZWdyYXkgLT4gMTEyLCAxMjgsIDE0NFxuICAgIHwgU2xhdGVncmV5IC0+IDExMiwgMTI4LCAxNDRcbiAgICB8IFNub3cgLT4gMjU1LCAyNTAsIDI1MFxuICAgIHwgU3ByaW5nZ3JlZW4gLT4gMCwgMjU1LCAxMjdcbiAgICB8IFN0ZWVsYmx1ZSAtPiA3MCwgMTMwLCAxODBcbiAgICB8IFRhbiAtPiAyMTAsIDE4MCwgMTQwXG4gICAgfCBUZWFsIC0+IDAsIDEyOCwgMTI4XG4gICAgfCBUaGlzdGxlIC0+IDIxNiwgMTkxLCAyMTZcbiAgICB8IFRvbWF0byAtPiAyNTUsIDk5LCA3MVxuICAgIHwgVHVycXVvaXNlIC0+IDY0LCAyMjQsIDIwOFxuICAgIHwgVmlvbGV0IC0+IDIzOCwgMTMwLCAyMzhcbiAgICB8IFdoZWF0IC0+IDI0NSwgMjIyLCAxNzlcbiAgICB8IFdoaXRlIC0+IDI1NSwgMjU1LCAyNTVcbiAgICB8IFdoaXRlc21va2UgLT4gMjQ1LCAyNDUsIDI0NVxuICAgIHwgWWVsbG93IC0+IDI1NSwgMjU1LCAwXG4gICAgfCBZZWxsb3dncmVlbiAtPiAxNTQsIDIwNSwgNTBcblxuICB0eXBlIHQgPVxuICAgIHwgTmFtZSBvZiBuYW1lXG4gICAgfCBSR0Igb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJlZCwgR3JlZW4gYW5kIEJsdWUgdmFsdWVzLiBDbGlwcGVkIHRvIFtbMC4uMjU1XV0gYnkgbW9zdCAoQWxsPylcbiAgICAgICAgICAgIGJyb3dzZXJzLiAqKVxuICAgIHwgUkdCX3BlcmNlbnQgb2YgKGludCAqIGludCAqIGludClcbiAgICAgICAgKCoqIFJHQiBjaGFubmVscyBhcmUgc3BlY2lmaWVkIGFzIGEgcGVyY2VudGFnZSBvZiB0aGVpciBtYXhpbWFsIHZhbHVlLiAqKVxuICAgIHwgUkdCQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIFJHQiB3aXRoIGFkZGl0aW9uYWwgdHJhbnNwYXJlbmN5IGFyZ3VtZW50LiBPcGFjaXR5IHNob3VsZCBiZSBpblxuICAgICAgICAgICAgWzAuXSAoY29tcGxldGVseSB0cmFuc3BhcmVudCkgYW5kIFsxLl0gKGNvbXBsZXRlbHkgb3BhcXVlKS4gKilcbiAgICB8IFJHQkFfcGVyY2VudCBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBSR0IgY2hhbm5lbHMgc3BlY2lmaWVkIGFzIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgbWF4aW1hbCB2YWx1ZS4gQWxwaGFcbiAgICAgICAgICAgIGNoYW5uZWwgKG9wYWNpdHkpIGlzIHN0aWxsIGEgWzAuXSB0byBbMS5dIGZsb2F0LiAqKVxuICAgIHwgSFNMIG9mIChpbnQgKiBpbnQgKiBpbnQpXG4gICAgICAgICgqKiBIdWUsIFNhdHVyYXRpb24gYW5kIExpZ2h0bmVzcyB2YWx1ZXMuIEh1ZSBpcyBhbiBhbmdsZSBpbiBkZWdyZWUgKGluXG4gICAgICAgICAgICBpbnRlcnZhbCBbWzAuLjM2MFtdKS4gU2F0dXJhdGlvbiBpcyBhIHBlcmNlbnRhZ2UgKFtbMC4uMTAwXV0pIHdpdGggWzBdXG4gICAgICAgICAgICBiZWluZyBjb2xvcmxlc3MuIExpZ2h0bmVzcyBpcyBhbHNvIGEgcGVyY2VudGFnZSAoW1swLi4xMDBdXSkgd2l0aCBbMF1cbiAgICAgICAgICAgIGJlaW5nIGJsYWNrLiAqKVxuICAgIHwgSFNMQSBvZiAoaW50ICogaW50ICogaW50ICogZmxvYXQpXG4gICAgICAgICgqKiBTYW1lIGFzIEhTTCB3aXRoIGFuIG9wYWNpdHkgYXJndW1lbnQgYmV0d2VlbiBbMC5dIGFuZCBbMS5dLiAqKVxuXG4gIGxldCByZ2IgP2EgciBnIGIgPVxuICAgIG1hdGNoIGEgd2l0aFxuICAgIHwgTm9uZSAtPiBSR0IgKHIsIGcsIGIpXG4gICAgfCBTb21lIGEgLT4gUkdCQSAociwgZywgYiwgYSlcblxuICBsZXQgaHNsID9hIGggcyBsID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IE5vbmUgLT4gSFNMIChoLCBzLCBsKVxuICAgIHwgU29tZSBhIC0+IEhTTEEgKGgsIHMsIGwsIGEpXG5cbiAgbGV0IHN0cmluZ19vZl90ID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBzdHJpbmdfb2ZfbmFtZSBuXG4gICAgfCBSR0IgKHIsIGcsIGIpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiKCVkLCVkLCVkKVwiIHIgZyBiXG4gICAgfCBSR0JfcGVyY2VudCAociwgZywgYikgLT4gUHJpbnRmLnNwcmludGYgXCJyZ2IoJWQlJSwlZCUlLCVkJSUpXCIgciBnIGJcbiAgICB8IFJHQkEgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCwlZCwlZCwlZilcIiByIGcgYiBhXG4gICAgfCBSR0JBX3BlcmNlbnQgKHIsIGcsIGIsIGEpIC0+IFByaW50Zi5zcHJpbnRmIFwicmdiYSglZCUlLCVkJSUsJWQlJSwlZilcIiByIGcgYiBhXG4gICAgfCBIU0wgKGgsIHMsIGwpIC0+IFByaW50Zi5zcHJpbnRmIFwiaHNsKCVkLCVkJSUsJWQlJSlcIiBoIHMgbFxuICAgIHwgSFNMQSAoaCwgcywgbCwgYSkgLT4gUHJpbnRmLnNwcmludGYgXCJoc2xhKCVkLCVkJSUsJWQlJSwlZilcIiBoIHMgbCBhXG5cbiAgbGV0IGhleF9vZl9yZ2IgKHJlZCwgZ3JlZW4sIGJsdWUpID1cbiAgICBsZXQgaW5fcmFuZ2UgaSA9XG4gICAgICBpZiBpIDwgMCB8fCBpID4gMjU1XG4gICAgICB0aGVuIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChzdHJpbmdfb2ZfaW50IGkgXiBcIiBpcyBvdXQgb2YgdmFsaWQgcmFuZ2VcIikpXG4gICAgaW5cbiAgICBpbl9yYW5nZSByZWQ7XG4gICAgaW5fcmFuZ2UgZ3JlZW47XG4gICAgaW5fcmFuZ2UgYmx1ZTtcbiAgICBQcmludGYuc3ByaW50ZiBcIiMlMDJYJTAyWCUwMlhcIiByZWQgZ3JlZW4gYmx1ZVxuXG4gICgqIE9jYW1sIDwtPiBKUyByZXByZXNlbnRhdGlvbiAqKVxuICB0eXBlIGpzX3QgPSBKcy5qc19zdHJpbmcgSnMudFxuXG4gICgqIFRPRE8/IGJlIG1vcmUgcmVzdHJpY3RpdmUsIGNsaXAgdmFsdWVzIGludG8gc3RhbmRhcmQgcmFuZ2UgKilcbiAgbGV0IGpzX3Rfb2ZfanNfc3RyaW5nIHMgPVxuICAgIGxldCByZ2JfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXHMqXFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiX3BjdF9yZSA9XG4gICAgICBuZXclanMgSnMucmVnRXhwIChKcy5ieXRlc3RyaW5nIFwiXnJnYlxcXFwoXFxcXHMqXFxcXGQqJSxcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCByZ2JhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJecmdiYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKixcXFxccypcXFxcZCosXFxcXGQqXFxcXC4/XFxcXGQqXFxcXCkkXCIpXG4gICAgaW5cbiAgICBsZXQgcmdiYV9wY3RfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cFxuICAgICAgICAoSnMuYnl0ZXN0cmluZyBcIl5yZ2JhXFxcXChcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xfcmUgPVxuICAgICAgbmV3JWpzIEpzLnJlZ0V4cCAoSnMuYnl0ZXN0cmluZyBcIl5oc2xcXFxcKFxcXFxzKlxcXFxkKixcXFxccypcXFxcZColLFxcXFxzKlxcXFxkKiVcXFxcKSRcIilcbiAgICBpblxuICAgIGxldCBoc2xhX3JlID1cbiAgICAgIG5ldyVqcyBKcy5yZWdFeHBcbiAgICAgICAgKEpzLmJ5dGVzdHJpbmcgXCJeaHNsYVxcXFwoXFxcXHMqXFxcXGQqLFxcXFxzKlxcXFxkKiUsXFxcXHMqXFxcXGQqJSxcXFxcZCpcXFxcLj9cXFxcZCpcXFxcKSRcIilcbiAgICBpblxuICAgIGlmIEpzLnRvX2Jvb2wgKHJnYl9yZSMjdGVzdCBzKVxuICAgICAgIHx8IEpzLnRvX2Jvb2wgKHJnYmFfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChyZ2JfcGN0X3JlIyN0ZXN0IHMpXG4gICAgICAgfHwgSnMudG9fYm9vbCAocmdiYV9wY3RfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xfcmUjI3Rlc3QgcylcbiAgICAgICB8fCBKcy50b19ib29sIChoc2xhX3JlIyN0ZXN0IHMpXG4gICAgdGhlbiBzXG4gICAgZWxzZSBpZiBMaXN0Lm1lbVxuICAgICAgICAgICAgICAoSnMudG9fc3RyaW5nIHMpXG4gICAgICAgICAgICAgIFsgXCJhbGljZWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiYW50aXF1ZXdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImFxdWFcIlxuICAgICAgICAgICAgICA7IFwiYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJhenVyZVwiXG4gICAgICAgICAgICAgIDsgXCJiZWlnZVwiXG4gICAgICAgICAgICAgIDsgXCJiaXNxdWVcIlxuICAgICAgICAgICAgICA7IFwiYmxhY2tcIlxuICAgICAgICAgICAgICA7IFwiYmxhbmNoZWRhbG1vbmRcIlxuICAgICAgICAgICAgICA7IFwiYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJibHVldmlvbGV0XCJcbiAgICAgICAgICAgICAgOyBcImJyb3duXCJcbiAgICAgICAgICAgICAgOyBcImJ1cmx5d29vZFwiXG4gICAgICAgICAgICAgIDsgXCJjYWRldGJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY2hhcnRyZXVzZVwiXG4gICAgICAgICAgICAgIDsgXCJjaG9jb2xhdGVcIlxuICAgICAgICAgICAgICA7IFwiY29yYWxcIlxuICAgICAgICAgICAgICA7IFwiY29ybmZsb3dlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiY29ybnNpbGtcIlxuICAgICAgICAgICAgICA7IFwiY3JpbXNvblwiXG4gICAgICAgICAgICAgIDsgXCJjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRhcmtraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrbWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb2xpdmVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrb3JhbmdlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtvcmNoaWRcIlxuICAgICAgICAgICAgICA7IFwiZGFya3JlZFwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmtzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwiZGFya3NsYXRlZ3JleVwiXG4gICAgICAgICAgICAgIDsgXCJkYXJrdHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcImRhcmt2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiZGVlcHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZGltZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJkaW1ncmV5XCJcbiAgICAgICAgICAgICAgOyBcImRvZGdlcmJsdWVcIlxuICAgICAgICAgICAgICA7IFwiZmlyZWJyaWNrXCJcbiAgICAgICAgICAgICAgOyBcImZsb3JhbHdoaXRlXCJcbiAgICAgICAgICAgICAgOyBcImZvcmVzdGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImZ1Y2hzaWFcIlxuICAgICAgICAgICAgICA7IFwiZ2FpbnNib3JvXCJcbiAgICAgICAgICAgICAgOyBcImdob3N0d2hpdGVcIlxuICAgICAgICAgICAgICA7IFwiZ29sZFwiXG4gICAgICAgICAgICAgIDsgXCJnb2xkZW5yb2RcIlxuICAgICAgICAgICAgICA7IFwiZ3JheVwiXG4gICAgICAgICAgICAgIDsgXCJncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJncmVlbnllbGxvd1wiXG4gICAgICAgICAgICAgIDsgXCJncmV5XCJcbiAgICAgICAgICAgICAgOyBcImhvbmV5ZGV3XCJcbiAgICAgICAgICAgICAgOyBcImhvdHBpbmtcIlxuICAgICAgICAgICAgICA7IFwiaW5kaWFucmVkXCJcbiAgICAgICAgICAgICAgOyBcImluZGlnb1wiXG4gICAgICAgICAgICAgIDsgXCJpdm9yeVwiXG4gICAgICAgICAgICAgIDsgXCJraGFraVwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlclwiXG4gICAgICAgICAgICAgIDsgXCJsYXZlbmRlcmJsdXNoXCJcbiAgICAgICAgICAgICAgOyBcImxhd25ncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsZW1vbmNoaWZmb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Y29yYWxcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRjeWFuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z29sZGVucm9keWVsbG93XCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JheVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodGdyZWVuXCJcbiAgICAgICAgICAgICAgOyBcImxpZ2h0Z3JleVwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHBpbmtcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzYWxtb25cIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzZWFncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJsaWdodHNreWJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzbGF0ZWdyZXlcIlxuICAgICAgICAgICAgICA7IFwibGlnaHRzdGVlbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwibGlnaHR5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwibGltZVwiXG4gICAgICAgICAgICAgIDsgXCJsaW1lZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibGluZW5cIlxuICAgICAgICAgICAgICA7IFwibWFnZW50YVwiXG4gICAgICAgICAgICAgIDsgXCJtYXJvb25cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtYXF1YW1hcmluZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1ibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bW9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW1wdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwibWVkaXVtc2xhdGVibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXNwcmluZ2dyZWVuXCJcbiAgICAgICAgICAgICAgOyBcIm1lZGl1bXR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJtZWRpdW12aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwibWlkbmlnaHRibHVlXCJcbiAgICAgICAgICAgICAgOyBcIm1pbnRjcmVhbVwiXG4gICAgICAgICAgICAgIDsgXCJtaXN0eXJvc2VcIlxuICAgICAgICAgICAgICA7IFwibW9jY2FzaW5cIlxuICAgICAgICAgICAgICA7IFwibmF2YWpvd2hpdGVcIlxuICAgICAgICAgICAgICA7IFwibmF2eVwiXG4gICAgICAgICAgICAgIDsgXCJvbGRsYWNlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlXCJcbiAgICAgICAgICAgICAgOyBcIm9saXZlZHJhYlwiXG4gICAgICAgICAgICAgIDsgXCJvcmFuZ2VcIlxuICAgICAgICAgICAgICA7IFwib3JhbmdlcmVkXCJcbiAgICAgICAgICAgICAgOyBcIm9yY2hpZFwiXG4gICAgICAgICAgICAgIDsgXCJwYWxlZ29sZGVucm9kXCJcbiAgICAgICAgICAgICAgOyBcInBhbGVncmVlblwiXG4gICAgICAgICAgICAgIDsgXCJwYWxldHVycXVvaXNlXCJcbiAgICAgICAgICAgICAgOyBcInBhbGV2aW9sZXRyZWRcIlxuICAgICAgICAgICAgICA7IFwicGFwYXlhd2hpcFwiXG4gICAgICAgICAgICAgIDsgXCJwZWFjaHB1ZmZcIlxuICAgICAgICAgICAgICA7IFwicGVydVwiXG4gICAgICAgICAgICAgIDsgXCJwaW5rXCJcbiAgICAgICAgICAgICAgOyBcInBsdW1cIlxuICAgICAgICAgICAgICA7IFwicG93ZGVyYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJwdXJwbGVcIlxuICAgICAgICAgICAgICA7IFwicmVkXCJcbiAgICAgICAgICAgICAgOyBcInJvc3licm93blwiXG4gICAgICAgICAgICAgIDsgXCJyb3lhbGJsdWVcIlxuICAgICAgICAgICAgICA7IFwic2FkZGxlYnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2FsbW9uXCJcbiAgICAgICAgICAgICAgOyBcInNhbmR5YnJvd25cIlxuICAgICAgICAgICAgICA7IFwic2VhZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic2Vhc2hlbGxcIlxuICAgICAgICAgICAgICA7IFwic2llbm5hXCJcbiAgICAgICAgICAgICAgOyBcInNpbHZlclwiXG4gICAgICAgICAgICAgIDsgXCJza3libHVlXCJcbiAgICAgICAgICAgICAgOyBcInNsYXRlYmx1ZVwiXG4gICAgICAgICAgICAgIDsgXCJzbGF0ZWdyYXlcIlxuICAgICAgICAgICAgICA7IFwic2xhdGVncmV5XCJcbiAgICAgICAgICAgICAgOyBcInNub3dcIlxuICAgICAgICAgICAgICA7IFwic3ByaW5nZ3JlZW5cIlxuICAgICAgICAgICAgICA7IFwic3RlZWxibHVlXCJcbiAgICAgICAgICAgICAgOyBcInRhblwiXG4gICAgICAgICAgICAgIDsgXCJ0ZWFsXCJcbiAgICAgICAgICAgICAgOyBcInRoaXN0bGVcIlxuICAgICAgICAgICAgICA7IFwidG9tYXRvXCJcbiAgICAgICAgICAgICAgOyBcInR1cnF1b2lzZVwiXG4gICAgICAgICAgICAgIDsgXCJ2aW9sZXRcIlxuICAgICAgICAgICAgICA7IFwid2hlYXRcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVcIlxuICAgICAgICAgICAgICA7IFwid2hpdGVzbW9rZVwiXG4gICAgICAgICAgICAgIDsgXCJ5ZWxsb3dcIlxuICAgICAgICAgICAgICA7IFwieWVsbG93Z3JlZW5cIlxuICAgICAgICAgICAgICBdXG4gICAgdGhlbiBzXG4gICAgZWxzZSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoSnMudG9fc3RyaW5nIHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSlcblxuICBsZXQgbmFtZSBjbiA9IEpzLnN0cmluZyAoc3RyaW5nX29mX25hbWUgY24pXG5cbiAgbGV0IGpzID0gZnVuY3Rpb25cbiAgICB8IE5hbWUgbiAtPiBuYW1lIG5cbiAgICB8IChSR0IgXyB8IFJHQl9wZXJjZW50IF8gfCBSR0JBIF8gfCBSR0JBX3BlcmNlbnQgXyB8IEhTTCBfIHwgSFNMQSBfKSBhcyBjIC0+XG4gICAgICAgIEpzLnN0cmluZyAoc3RyaW5nX29mX3QgYylcblxuICBsZXQgbWwgYyA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgYyBpblxuICAgIHRyeSBOYW1lIChuYW1lX29mX3N0cmluZyBzKVxuICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IChcbiAgICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBjb2xvclwiKSkgaW5cbiAgICAgIGxldCByZV9yZ2IgPVxuICAgICAgICBSZWdleHAucmVnZXhwIFwiKHJnYmE/KVxcXFwoKD86KFxcXFxkKiksKFxcXFxkKiksKFxcXFxkKikoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCByZV9yZ2JfcGN0ID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihyZ2JhPylcXFxcKCg/OihcXFxcZCopJSwoXFxcXGQqKSUsKFxcXFxkKiklKD86LChcXFxcZCooPzpcXFxcLlxcXFxkKik/KSk/KVxcXFwpXCJcbiAgICAgIGluXG4gICAgICBsZXQgcmVfaHNsID1cbiAgICAgICAgUmVnZXhwLnJlZ2V4cCBcIihoc2xhPylcXFxcKCg/OihcXFxcZCopLChcXFxcZCopJSwoXFxcXGQqKSUoPzosKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pKT8pXFxcXClcIlxuICAgICAgaW5cbiAgICAgIGxldCBpX29mX3NfbyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgIHwgU29tZSBpIC0+IChcbiAgICAgICAgICAgIHRyeSBpbnRfb2Zfc3RyaW5nIGlcbiAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImNvbG9yIGNvbnZlcnNpb24gZXJyb3IgKFwiIF4gaSBeIFwiKTogXCIgXiBzKSkpXG4gICAgICBpblxuICAgICAgbGV0IGZfb2ZfcyBmID1cbiAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIHwgRmFpbHVyZSBzIC0+XG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwiY29sb3IgY29udmVyc2lvbiBlcnJvciAoXCIgXiBmIF4gXCIpOiBcIiBeIHMpKVxuICAgICAgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfcmdiIHMgMCB3aXRoXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IHJlZCA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiBpblxuICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgIGxldCBibHVlID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA0IGluXG4gICAgICAgICAgbGV0IGFscGhhID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciA1IGluXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JcIiAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gUkdCIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICB8IFNvbWUgXCJyZ2JhXCIgLT4gKFxuICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgIHwgU29tZSBhIC0+IFJHQkEgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUsIGZfb2ZfcyBhKSlcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZV9yZ2JfcGN0IHMgMCB3aXRoXG4gICAgICAgICAgfCBTb21lIHIgLT4gKFxuICAgICAgICAgICAgICBsZXQgcmVkID0gUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAyIGluXG4gICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICBsZXQgYmx1ZSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNCBpblxuICAgICAgICAgICAgICBsZXQgYWxwaGEgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDUgaW5cbiAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiXCIgLT4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggYWxwaGEgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFJHQl9wZXJjZW50IChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlKSlcbiAgICAgICAgICAgICAgfCBTb21lIFwicmdiYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIGFscGhhIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgIFJHQkFfcGVyY2VudCAoaV9vZl9zX28gcmVkLCBpX29mX3NfbyBncmVlbiwgaV9vZl9zX28gYmx1ZSwgZl9vZl9zIGEpXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgU29tZSBfIHwgTm9uZSAtPiBmYWlsICgpKVxuICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmVfaHNsIHMgMCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByIC0+IChcbiAgICAgICAgICAgICAgICAgIGxldCByZWQgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBncmVlbiA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMyBpblxuICAgICAgICAgICAgICAgICAgbGV0IGJsdWUgPSBSZWdleHAubWF0Y2hlZF9ncm91cCByIDQgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBhbHBoYSA9IFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgNSBpblxuICAgICAgICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgU29tZSBcImhzbFwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT4gZmFpbCAoKVxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBIU0wgKGlfb2Zfc19vIHJlZCwgaV9vZl9zX28gZ3JlZW4sIGlfb2Zfc19vIGJsdWUpKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIFwiaHNsYVwiIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhbHBoYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBIU0xBIChpX29mX3NfbyByZWQsIGlfb2Zfc19vIGdyZWVuLCBpX29mX3NfbyBibHVlLCBmX29mX3MgYSkpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGZhaWwgKCkpKSlcbmVuZFxuXG5tb2R1bGUgTGVuZ3RoID0gc3RydWN0XG4gICgqIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtdmFsdWVzLyNsZW5ndGhzICopXG5cbiAgKCogVE9ETzpcbiAgICAge1tcbiAgICAgICB0eXBlIGpzX3QgPSBwcml2YXRlIEpzLnN0cmluZyBKcy50XG4gICAgICAgdmFsIGpzX3Rfb2ZfdFxuICAgICAgIHZhbCB0X29mX2pzX3RcbiAgICAgICB2YWwgdF9vZl9zdHJpbmdcbiAgICAgXX1cbiAgKilcblxuICB0eXBlIHQgPVxuICAgIHwgWmVyb1xuICAgICgqIHJlbGF0aXZlICopXG4gICAgfCBFbSBvZiBmbG9hdFxuICAgIHwgRXggb2YgZmxvYXRcbiAgICB8IFB4IG9mIGZsb2F0XG4gICAgfCBHZCBvZiBmbG9hdFxuICAgIHwgUmVtIG9mIGZsb2F0XG4gICAgfCBWdyBvZiBmbG9hdFxuICAgIHwgVmggb2YgZmxvYXRcbiAgICB8IFZtIG9mIGZsb2F0XG4gICAgfCBDaCBvZiBmbG9hdFxuICAgICgqIGFic29sdXRlICopXG4gICAgfCBNbSBvZiBmbG9hdFxuICAgIHwgQ20gb2YgZmxvYXRcbiAgICB8IEluIG9mIGZsb2F0XG4gICAgfCBQdCBvZiBmbG9hdFxuICAgIHwgUGMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgWmVybyAtPiBcIjBcIlxuICAgIHwgRW0gZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZW1cIlxuICAgIHwgRXggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZXhcIlxuICAgIHwgUHggZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwicHhcIlxuICAgIHwgR2QgZiAtPiBQcmludGYuc3ByaW50ZiBcIiVmJXNcIiBmIFwiZ2RcIlxuICAgIHwgUmVtIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJlbVwiXG4gICAgfCBWdyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2d1wiXG4gICAgfCBWaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2aFwiXG4gICAgfCBWbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ2bVwiXG4gICAgfCBDaCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjaFwiXG4gICAgfCBNbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJtbVwiXG4gICAgfCBDbSBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJjbVwiXG4gICAgfCBJbiBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJpblwiXG4gICAgfCBQdCBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwdFwiXG4gICAgfCBQYyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJwY1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgdCA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgdCBpblxuICAgIGlmIFN0cmluZy5lcXVhbCBzIFwiMFwiXG4gICAgdGhlbiBaZXJvXG4gICAgZWxzZVxuICAgICAgbGV0IGZhaWwgKCkgPSByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAocyBeIFwiIGlzIG5vdCBhIHZhbGlkIGxlbmd0aFwiKSkgaW5cbiAgICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKT8pXFxcXHMqKFxcXFxTKikkXCIgaW5cbiAgICAgIG1hdGNoIFJlZ2V4cC5zdHJpbmdfbWF0Y2ggcmUgcyAwIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICB8IFNvbWUgciAtPiAoXG4gICAgICAgICAgbGV0IGYgPVxuICAgICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiAoXG4gICAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IHMgLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IChcImxlbmd0aCBjb252ZXJzaW9uIGVycm9yOiBcIiBeIHMpKSlcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIFJlZ2V4cC5tYXRjaGVkX2dyb3VwIHIgMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhaWwgKClcbiAgICAgICAgICB8IFNvbWUgXCJlbVwiIC0+IEVtIGZcbiAgICAgICAgICB8IFNvbWUgXCJleFwiIC0+IEV4IGZcbiAgICAgICAgICB8IFNvbWUgXCJweFwiIC0+IFB4IGZcbiAgICAgICAgICB8IFNvbWUgXCJnZFwiIC0+IEdkIGZcbiAgICAgICAgICB8IFNvbWUgXCJyZW1cIiAtPiBSZW0gZlxuICAgICAgICAgIHwgU29tZSBcInZ3XCIgLT4gVncgZlxuICAgICAgICAgIHwgU29tZSBcInZoXCIgLT4gVmggZlxuICAgICAgICAgIHwgU29tZSBcInZtXCIgLT4gVm0gZlxuICAgICAgICAgIHwgU29tZSBcImNoXCIgLT4gQ2ggZlxuICAgICAgICAgIHwgU29tZSBcIm1tXCIgLT4gTW0gZlxuICAgICAgICAgIHwgU29tZSBcImNtXCIgLT4gQ20gZlxuICAgICAgICAgIHwgU29tZSBcImluXCIgLT4gSW4gZlxuICAgICAgICAgIHwgU29tZSBcInB0XCIgLT4gUHQgZlxuICAgICAgICAgIHwgU29tZSBcInBjXCIgLT4gUGMgZlxuICAgICAgICAgIHwgU29tZSBfIC0+IGZhaWwgKCkpXG5lbmRcblxubW9kdWxlIEFuZ2xlID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBEZWcgb2YgZmxvYXRcbiAgICB8IEdyYWQgb2YgZmxvYXRcbiAgICB8IFJhZCBvZiBmbG9hdFxuICAgIHwgVHVybnMgb2YgZmxvYXRcblxuICBsZXQgc3RyaW5nX29mX3QgPSBmdW5jdGlvblxuICAgIHwgRGVnIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImRlZ1wiXG4gICAgfCBHcmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcImdyYWRcIlxuICAgIHwgUmFkIGYgLT4gUHJpbnRmLnNwcmludGYgXCIlZiVzXCIgZiBcInJhZFwiXG4gICAgfCBUdXJucyBmIC0+IFByaW50Zi5zcHJpbnRmIFwiJWYlc1wiIGYgXCJ0dXJuc1wiXG5cbiAgdHlwZSBqc190ID0gSnMuanNfc3RyaW5nIEpzLnRcblxuICBsZXQganMgdCA9IEpzLnN0cmluZyAoc3RyaW5nX29mX3QgdClcblxuICBsZXQgbWwgaiA9XG4gICAgbGV0IHMgPSBKcy50b19zdHJpbmcgaiBpblxuICAgIGxldCByZSA9IFJlZ2V4cC5yZWdleHAgXCJeKFxcXFxkKig/OlxcXFwuXFxcXGQqKSkoZGVnfGdyYWR8cmFkfHR1cm5zKSRcIiBpblxuICAgIGxldCBmYWlsICgpID0gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKHMgXiBcIiBpcyBub3QgYSB2YWxpZCBsZW5ndGhcIikpIGluXG4gICAgbWF0Y2ggUmVnZXhwLnN0cmluZ19tYXRjaCByZSBzIDAgd2l0aFxuICAgIHwgTm9uZSAtPiBmYWlsICgpXG4gICAgfCBTb21lIHIgLT4gKFxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggUmVnZXhwLm1hdGNoZWRfZ3JvdXAgciAxIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFpbCAoKVxuICAgICAgICAgIHwgU29tZSBmIC0+IChcbiAgICAgICAgICAgICAgdHJ5IGZsb2F0X29mX3N0cmluZyBmXG4gICAgICAgICAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBzIC0+XG4gICAgICAgICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgKFwibGVuZ3RoIGNvbnZlcnNpb24gZXJyb3I6IFwiIF4gcykpKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBSZWdleHAubWF0Y2hlZF9ncm91cCByIDIgd2l0aFxuICAgICAgICB8IFNvbWUgXCJkZWdcIiAtPiBEZWcgZlxuICAgICAgICB8IFNvbWUgXCJncmFkXCIgLT4gR3JhZCBmXG4gICAgICAgIHwgU29tZSBcInJhZFwiIC0+IFJhZCBmXG4gICAgICAgIHwgU29tZSBcInR1cm5zXCIgLT4gVHVybnMgZlxuICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gZmFpbCAoKSlcbmVuZFxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqKiBKYXZhc2NyaXB0IGV2ZW50cy4gKilcblxub3BlbiEgSW1wb3J0XG5tb2R1bGUgVHlwID0gRG9tX2h0bWwuRXZlbnRcblxudHlwZSBsaXN0ZW5lciA9IERvbV9odG1sLmV2ZW50X2xpc3RlbmVyX2lkXG5cbmxldCBsaXN0ZW4gPyhjYXB0dXJlID0gZmFsc2UpIHRhcmdldCB0eXAgY2IgPVxuICBEb21faHRtbC5hZGRFdmVudExpc3RlbmVyXG4gICAgdGFyZ2V0XG4gICAgdHlwXG4gICAgKERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIG4gZSAtPiBKcy5ib29sIChjYiBuIGUpKSlcbiAgICAoSnMuYm9vbCBjYXB0dXJlKVxuXG5sZXQgc3RvcF9saXN0ZW4gPSBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICogQ29weXJpZ2h0IChDKSAyMDE0IErDqXLDtG1lIFZvdWlsbG9uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNcbm9wZW4hIEltcG9ydFxuXG5sZXQgeG1sbnMgPSBKcy5zdHJpbmcgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG5cbigqIHRyYW5zbGF0ZSBzcGVjIGZyb20gaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL2lkbC5odG1sICopXG4oKiBodHRwOi8vd3d3LnczLm9yZy9UUi9TVkcvc3RydWN0Lmh0bWwgKilcblxudHlwZSBlcnJvcl9jb2RlID1cbiAgfCBXUk9OR19UWVBFX0VSUlxuICB8IElOVkFMSURfVkFMVUVfRVJSXG4gIHwgTUFUUklYX05PVF9JTlZFUlRBQkxFXG5cbmNsYXNzIHR5cGUgc3ZnX2Vycm9yID0gb2JqZWN0XG4gIGluaGVyaXQgSnMuZXJyb3JcblxuICBtZXRob2QgY29kZSA6IGVycm9yX2NvZGUgdCByZWFkb25seV9wcm9wXG5lbmRcblxuZXhjZXB0aW9uIFNWR0Vycm9yIG9mIHN2Z19lcnJvclxuXG50eXBlIGxlbmd0aFVuaXRUeXBlID1cbiAgfCBMRU5HVEhUWVBFX1VOS05PV05cbiAgfCBMRU5HVEhUWVBFX05VTUJFUlxuICB8IExFTkdUSFRZUEVfUEVSQ0VOVEFHRVxuICB8IExFTkdUSFRZUEVfRU1TXG4gIHwgTEVOR1RIVFlQRV9FWFNcbiAgfCBMRU5HVEhUWVBFX1BYXG4gIHwgTEVOR1RIVFlQRV9DTVxuICB8IExFTkdUSFRZUEVfTU1cbiAgfCBMRU5HVEhUWVBFX0lOXG4gIHwgTEVOR1RIVFlQRV9QVFxuICB8IExFTkdUSFRZUEVfUENcblxudHlwZSBhbmdsZVVuaXRUeXBlID1cbiAgfCBBTkdMRVRZUEVfVU5LTk9XTlxuICB8IEFOR0xFVFlQRV9VTlNQRUNJRklFRFxuICB8IEFOR0xFVFlQRV9ERUdcbiAgfCBBTkdMRVRZUEVfUkFEXG4gIHwgQU5HTEVUWVBFX0dSQURcblxudHlwZSBjb2xvclR5cGUgPVxuICB8IENPTE9SVFlQRV9VTktOT1dOXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SXG4gIHwgQ09MT1JUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SXG4gIHwgQ09MT1JUWVBFX0NVUlJFTlRDT0xPUlxuXG50eXBlIGFsaWdubWVudFR5cGUgPVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORVxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU5cbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTlxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSURcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRFxuICB8IFBSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVhcbiAgfCBQUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYXG4gIHwgUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWFxuXG50eXBlIG1lZXRPclNsaWNlVHlwZSA9XG4gIHwgTUVFVE9SU0xJQ0VfVU5LTk9XTlxuICB8IE1FRVRPUlNMSUNFX01FRVRcbiAgfCBNRUVUT1JTTElDRV9TTElDRVxuXG50eXBlIHRyYW5zZm9ybVR5cGUgPVxuICB8IFRSQU5TRk9STV9VTktOT1dOXG4gIHwgVFJBTlNGT1JNX01BVFJJWFxuICB8IFRSQU5TRk9STV9UUkFOU0xBVEVcbiAgfCBUUkFOU0ZPUk1fU0NBTEVcbiAgfCBUUkFOU0ZPUk1fUk9UQVRFXG4gIHwgVFJBTlNGT1JNX1NLRVdYXG4gIHwgVFJBTlNGT1JNX1NLRVdZXG5cbnR5cGUgem9vbUFuZFBhblR5cGUgPVxuICB8IFpPT01BTkRQQU5fVU5LTk9XTlxuICB8IFpPT01BTkRQQU5fRElTQUJMRVxuICB8IFpPT01BTkRQQU5fTUFHTklGWVxuXG50eXBlIGxlbmd0aEFkanVzdCA9XG4gIHwgTEVOR1RIQURKVVNUX1VOS05PV05cbiAgfCBMRU5HVEhBREpVU1RfU1BBQ0lOR1xuICB8IExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhTXG5cbnR5cGUgdW5pdFR5cGUgPVxuICB8IFVOSVRfVFlQRV9VTktOT1dOXG4gIHwgVU5JVF9UWVBFX1VTRVJTUEFDRU9OVVNFXG4gIHwgVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YXG5cbigqIGludGVyZmFjZSBTVkdSZW5kZXJpbmdJbnRlbnQgKilcbnR5cGUgaW50ZW50VHlwZSA9XG4gIHwgUkVOREVSSU5HX0lOVEVOVF9VTktOT1dOXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9BVVRPXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9QRVJDRVBUVUFMXG4gIHwgUkVOREVSSU5HX0lOVEVOVF9SRUxBVElWRV9DT0xPUklNRVRSSUNcbiAgfCBSRU5ERVJJTkdfSU5URU5UX1NBVFVSQVRJT05cbiAgfCBSRU5ERVJJTkdfSU5URU5UX0FCU09MVVRFX0NPTE9SSU1FVFJJQ1xuXG4oKiBQYXRoIFNlZ21lbnQgVHlwZXMgKilcbnR5cGUgcGF0aFNlZ21lbnRUeXBlID1cbiAgfCBQQVRIU0VHX1VOS05PV05cbiAgfCBQQVRIU0VHX0NMT1NFUEFUSFxuICB8IFBBVEhTRUdfTU9WRVRPX0FCU1xuICB8IFBBVEhTRUdfTU9WRVRPX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0FCU1xuICB8IFBBVEhTRUdfTElORVRPX1JFTFxuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19BQlNcbiAgfCBQQVRIU0VHX0NVUlZFVE9fUVVBRFJBVElDX1JFTFxuICB8IFBBVEhTRUdfQVJDX0FCU1xuICB8IFBBVEhTRUdfQVJDX1JFTFxuICB8IFBBVEhTRUdfTElORVRPX0hPUklaT05UQUxfQUJTXG4gIHwgUEFUSFNFR19MSU5FVE9fSE9SSVpPTlRBTF9SRUxcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9BQlNcbiAgfCBQQVRIU0VHX0xJTkVUT19WRVJUSUNBTF9SRUxcbiAgfCBQQVRIU0VHX0NVUlZFVE9fQ1VCSUNfU01PT1RIX0FCU1xuICB8IFBBVEhTRUdfQ1VSVkVUT19DVUJJQ19TTU9PVEhfUkVMXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfQUJTXG4gIHwgUEFUSFNFR19DVVJWRVRPX1FVQURSQVRJQ19TTU9PVEhfUkVMXG5cbigqIHRleHRQYXRoIE1ldGhvZCBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aE1ldGhvZFR5cGUgPVxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTlxuICB8IFRFWFRQQVRIX01FVEhPRFRZUEVfQUxJR05cbiAgfCBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0hcblxuKCogdGV4dFBhdGggU3BhY2luZyBUeXBlcyAqKVxudHlwZSB0ZXh0UGF0aFNwYWNpbmdUeXBlID1cbiAgfCBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dOXG4gIHwgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUT1xuICB8IFRFWFRQQVRIX1NQQUNJTkdUWVBFX0VYQUNUXG5cbigqIFNwcmVhZCBNZXRob2QgVHlwZXMgKilcbnR5cGUgc3ByZWFkTWV0aG9kVHlwZSA9XG4gIHwgU1BSRUFETUVUSE9EX1VOS05PV05cbiAgfCBTUFJFQURNRVRIT0RfUEFEXG4gIHwgU1BSRUFETUVUSE9EX1JFRkxFQ1RcbiAgfCBTUFJFQURNRVRIT0RfUkVQRUFUXG5cbnR5cGUgc3VzcGVuZEhhbmRsZUlEXG5cbigqKioqKVxuXG5jbGFzcyB0eXBlIFsnYV0gYW5pbWF0ZWQgPSBvYmplY3RcbiAgbWV0aG9kIGJhc2VWYWwgOiAnYSBwcm9wXG5cbiAgbWV0aG9kIGFuaW1WYWwgOiAnYSBwcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBbJ2FdIGxpc3QgPSBvYmplY3RcbiAgbWV0aG9kIG51bWJlck9mSXRlbXMgOiBpbnQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjbGVhciA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBpbml0aWFsaXplIDogJ2EgLT4gJ2EgbWV0aFxuXG4gIG1ldGhvZCBnZXRJdGVtIDogaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgaW5zZXJ0SXRlbUJlZm9yZSA6ICdhIC0+IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIHJlcGxhY2VJdGVtIDogJ2EgLT4gaW50IC0+ICdhIG1ldGhcblxuICBtZXRob2QgcmVtb3ZlSXRlbSA6IGludCAtPiAnYSBtZXRoXG5cbiAgbWV0aG9kIGFwcGVuZEl0ZW0gOiAnYSAtPiAnYSBtZXRoXG5lbmRcblxuKCoqKiopXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50ICopXG5jbGFzcyB0eXBlIGVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBEb20uZWxlbWVudFxuXG4gIG1ldGhvZCBpZCA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sYmFzZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2Qgb3duZXJTVkdFbGVtZW50IDogc3ZnRWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgdmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRTdHJpbmcgKilcbmFuZCBhbmltYXRlZFN0cmluZyA9IFtqc19zdHJpbmcgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQm9vbGVhbiAqKVxuYW5kIGFuaW1hdGVkQm9vbGVhbiA9IFtib29sIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHJpbmdMaXN0ICopXG5hbmQgc3RyaW5nTGlzdCA9IFtqc19zdHJpbmcgdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiAqKVxuYW5kIGFuaW1hdGVkRW51bWVyYXRpb24gPSBbaW50ICgqc2hvcnQqKV0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkSW50ZWdlciAqKVxuYW5kIGFuaW1hdGVkSW50ZWdlciA9IFtpbnRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZE51bWJlciAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyID0gW251bWJlcl90XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTnVtYmVyTGlzdCAqKVxuYW5kIG51bWJlckxpc3QgPSBbbnVtYmVyIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCAqKVxuYW5kIGFuaW1hdGVkTnVtYmVyTGlzdCA9IFtudW1iZXJMaXN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGggKilcbmFuZCBsZW5ndGggPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogbGVuZ3RoVW5pdFR5cGUgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgdmFsdWVJblNwZWNpZmllZFVuaXRzIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUFzU3RyaW5nIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBuZXdWYWx1ZVNwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gbnVtYmVyX3QgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnZlcnRUb1NwZWNpZmllZFVuaXRzIDogbGVuZ3RoVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkTGVuZ3RoICopXG5hbmQgYW5pbWF0ZWRMZW5ndGggPSBbbGVuZ3RoIHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdMZW5ndGhMaXN0ICopXG5hbmQgbGVuZ3RoTGlzdCA9IFtsZW5ndGggdF0gbGlzdFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRMZW5ndGhMaXN0ICopXG5hbmQgYW5pbWF0ZWRMZW5ndGhMaXN0ID0gW2xlbmd0aExpc3QgdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR0FuZ2xlICopXG5hbmQgYW5nbGUgPSBvYmplY3RcbiAgbWV0aG9kIHVuaXRUeXBlIDogYW5nbGVVbml0VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZhbHVlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB2YWx1ZUluU3BlY2lmaWVkVW5pdHMgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHZhbHVlQXNTdHJpbmcgOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG5ld1ZhbHVlU3BlY2lmaWVkVW5pdHMgOiBhbmdsZVVuaXRUeXBlIC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBjb252ZXJ0VG9TcGVjaWZpZWRVbml0cyA6IGFuZ2xlVW5pdFR5cGUgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkQW5nbGUgKilcbmFuZCBhbmltYXRlZEFuZ2xlID0gW2FuZ2xlIHRdIGFuaW1hdGVkXG5cbigqIFhYWFhYIE1vdmUgaXQgKilcbmFuZCByZ2JDb2xvciA9IG9iamVjdCBlbmRcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yICopXG5hbmQgY29sb3IgPSBvYmplY3RcbiAgKCogWFhYIGluaGVyaXQgY3NzVmFsdWUgKilcbiAgbWV0aG9kIGNvbG9yVHlwZSA6IGNvbG9yVHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJnYkNvbG9yIDogcmdiQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGljY0NvbG9yIDogaWNjQ29sb3IgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9yIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFJHQkNvbG9ySUNDQ29sb3IgOiBqc19zdHJpbmcgdCAtPiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0Q29sb3IgOiBjb2xvclR5cGUgLT4ganNfc3RyaW5nIHQgLT4ganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0lDQ0NvbG9yICopXG5hbmQgaWNjQ29sb3IgPSBvYmplY3RcbiAgbWV0aG9kIGNvbG9yUHJvZmlsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgY29sb3JzIDogbnVtYmVyTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUmVjdCAqKVxuYW5kIHJlY3QgPSBvYmplY3RcbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUmVjdCAqKVxuYW5kIGFuaW1hdGVkUmVjdCA9IFtyZWN0IHRdIGFuaW1hdGVkXG5cbigqIGludGVyZmFjZSBTVkdTdHlsYWJsZSAqKVxuYW5kIHN0eWxhYmxlID0gb2JqZWN0XG4gIG1ldGhvZCBjbGFzc05hbWUgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3R5bGUgOiBEb21faHRtbC5jc3NTdHlsZURlY2xhcmF0aW9uIHQgcmVhZG9ubHlfcHJvcFxuICAoKiAgIENTU1ZhbHVlIGdldFByZXNlbnRhdGlvbkF0dHJpYnV0ZShpbiBET01TdHJpbmcgbmFtZSk7ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xvY2F0YWJsZSAqKVxuYW5kIGxvY2F0YWJsZSA9IG9iamVjdFxuICBtZXRob2QgbmVhcmVzdFZpZXdwb3J0RWxlbWVudCA6IGVsZW1lbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZhcnRoZXN0Vmlld3BvcnRFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0QkJveCA6IHJlY3QgdCBtZXRoXG5cbiAgbWV0aG9kIGdldENUTSA6IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZ2V0U2NyZWVuQ1RNIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRUcmFuc2Zvcm1Ub0VsZW1lbnQgOiBlbGVtZW50IHQgLT4gbWF0cml4IHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUcmFuc2Zvcm1hYmxlICopXG5hbmQgdHJhbnNmb3JtYWJsZSA9IG9iamVjdFxuICBpbmhlcml0IGxvY2F0YWJsZVxuXG4gIG1ldGhvZCB0cmFuc2Zvcm0gOiBhbmltYXRlZFRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1Rlc3RzICopXG5hbmQgdGVzdHMgPSBvYmplY3RcbiAgbWV0aG9kIHJlcXVpcmVkRmVhdHVyZXMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByZXF1aXJlZEV4dGVuc2lvbnMgOiBzdHJpbmdMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzeXN0ZW1MYW5ndWFnZSA6IHN0cmluZ0xpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhhc0V4dGVuc2lvbiA6IGpzX3N0cmluZyB0IC0+IGJvb2wgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xhbmdTcGFjZSAqKVxuYW5kIGxhbmdTcGFjZSA9IG9iamVjdFxuICBtZXRob2QgeG1sbGFuZyA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgeG1sc3BhY2UgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgKilcbmFuZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkID0gb2JqZWN0XG4gIG1ldGhvZCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIDogYW5pbWF0ZWRCb29sZWFuIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaXRUb1ZpZXdCb3ggKilcbmFuZCBmaXRUb1ZpZXdCb3ggPSBvYmplY3RcbiAgbWV0aG9kIHZpZXdCb3ggOiBhbmltYXRlZFJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHByZXNlcnZlQXNwZWN0UmF0aW8gOiBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21BbmRQYW4gKilcbmFuZCB6b29tQW5kUGFuID0gb2JqZWN0XG4gIG1ldGhvZCB6b29tQW5kUGFuIDogem9vbUFuZFBhblR5cGUgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdWaWV3U3BlYyAqKVxuYW5kIHZpZXdTcGVjID0gb2JqZWN0XG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIGluaGVyaXQgZml0VG9WaWV3Qm94XG5cbiAgbWV0aG9kIHRyYW5zZm9ybSA6IHRyYW5zZm9ybUxpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB2aWV3Qm94U3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0cmFuc2Zvcm1TdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHZpZXdUYXJnZXRTdHJpbmcgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VSSVJlZmVyZW5jZSAqKVxuYW5kIHVyaVJlZmVyZW5jZSA9IG9iamVjdFxuICBtZXRob2QgaHJlZiA6IGFuaW1hdGVkU3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDU1NSdWxlIDogQ1NTUnVsZSAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBDT0xPUl9QUk9GSUxFX1JVTEUgPSA3OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0RvY3VtZW50ICopXG5hbmQgZG9jdW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBbZWxlbWVudF0gRG9tLmRvY3VtZW50XG5cbiAgKCpYWFggaW5oZXJpdCBkb2N1bWVudEV2ZW50ICopXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgcmVmZXJyZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGRvbWFpbiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgX1VSTCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdEVsZW1lbnQgOiBzdmdFbGVtZW50IHQgb3B0IHJlYWRvbmx5X3Byb3BcbiAgKCogcm9vdEVsZW1lbnQgd2lsbCBiZSBudWxsIG9yIHVuZGVmaW5lZCBpbiBhbiBodG1sIGNvbnRleHQgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU1ZHRWxlbWVudCAqKVxuYW5kIHN2Z0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgbG9jYXRhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IHpvb21BbmRQYW5cblxuICAoKlhYWCBpbmhlcml0IGRvY3VtZW50ZXZlbnQsIHZpZXdjc3MsIGRvY3VtZW50Y3NzICopXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGNvbnRlbnRTY3JpcHRUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBjb250ZW50U3R5bGVUeXBlIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB2aWV3cG9ydCA6IHJlY3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclggOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNjcmVlblBpeGVsVW5pdFRvTWlsbGltZXRlclkgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHVzZUN1cnJlbnRWaWV3IDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFZpZXcgOiB2aWV3U3BlYyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY3VycmVudFNjYWxlIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBjdXJyZW50VHJhbnNsYXRlIDogcG9pbnQgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHN1c3BlbmRSZWRyYXcgOiBpbnQgLT4gc3VzcGVuZEhhbmRsZUlEIG1ldGhcblxuICBtZXRob2QgdW5zdXNwZW5kUmVkcmF3IDogc3VzcGVuZEhhbmRsZUlEIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB1bnN1c3BlbmRSZWRyYXdBbGwgOiB1bml0IG1ldGhcblxuICBtZXRob2QgZm9yY2VSZWRyYXcgOiB1bml0IG1ldGhcblxuICBtZXRob2QgcGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHVucGF1c2VBbmltYXRpb25zIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFuaW1hdGlvbnNQYXVzZWQgOiBib29sIHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRDdXJyZW50VGltZSA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2Qgc2V0Q3VycmVudFRpbWUgOiBpbnQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdldEludGVyc2VjdGlvbkxpc3QgOiByZWN0IHQgLT4gZWxlbWVudCB0IC0+IGVsZW1lbnQgRG9tLm5vZGVMaXN0IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFbmNsb3N1cmVMaXN0IDogcmVjdCB0IC0+IGVsZW1lbnQgdCAtPiBlbGVtZW50IERvbS5ub2RlTGlzdCB0IG1ldGhcblxuICBtZXRob2QgY2hlY2tJbnRlcnNlY3Rpb24gOiBlbGVtZW50IHQgLT4gcmVjdCB0IC0+IGJvb2wgdFxuXG4gIG1ldGhvZCBjaGVja0VuY2xvc3VyZSA6IGVsZW1lbnQgdCAtPiByZWN0IHQgLT4gYm9vbCB0XG5cbiAgbWV0aG9kIGRlc2VsZWN0QWxsIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR051bWJlciA6IG51bWJlciB0IG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHTGVuZ3RoIDogbGVuZ3RoIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdBbmdsZSA6IGFuZ2xlIHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQb2ludCA6IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdNYXRyaXggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1JlY3QgOiByZWN0IHQgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdUcmFuc2Zvcm0gOiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1RyYW5zZm9ybUZyb21NYXRyaXggOiBtYXRyaXggdCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVsZW1lbnRCeUlkIDoganNfc3RyaW5nIHQgLT4gRG9tLmVsZW1lbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0dFbGVtZW50ICopXG5hbmQgZ0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIGluaGVyaXQgRG9tX2h0bWwuZXZlbnRUYXJnZXRcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRGVmc0VsZW1lbnQgKilcbmFuZCBkZWZzRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0Rlc2NFbGVtZW50ICopXG5hbmQgZGVzY0VsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IHN0eWxhYmxlXG4gICgqIFhYWFhYWFggPyBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0ICopXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RpdGxlRWxlbWVudCAqKVxuYW5kIHRpdGxlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU3ltYm9sRWxlbWVudCAqKVxuYW5kIHN5bWJvbEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBmaXRUb1ZpZXdCb3hcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1VzZUVsZW1lbnQgKilcbmFuZCB1c2VFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGluc3RhbmNlUm9vdCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRJbnN0YW5jZVJvb3QgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5lbmRcblxuYW5kIGVsZW1lbnRJbnN0YW5jZSA9IG9iamVjdFxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIGNvcnJlc3BvbmRpbmdFbGVtZW50IDogZWxlbWVudCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgOiB1c2VFbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwYXJlbnROb2RlIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjaGlsZE5vZGVzIDogZWxlbWVudEluc3RhbmNlTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZmlyc3RDaGlsZCA6IGVsZW1lbnRJbnN0YW5jZSB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbGFzdENoaWxkIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBwcmV2aW91c1NpYmxpbmcgOiBlbGVtZW50SW5zdGFuY2UgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG5leHRTaWJsaW5nIDogZWxlbWVudEluc3RhbmNlIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdFbGVtZW50SW5zdGFuY2VMaXN0ICopXG5hbmQgZWxlbWVudEluc3RhbmNlTGlzdCA9IG9iamVjdFxuICBtZXRob2QgbGVuZ3RoIDogaW50IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaXRlbSA6IGludCAtPiBlbGVtZW50SW5zdGFuY2UgdFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdJbWFnZUVsZW1lbnQgKilcbmFuZCBpbWFnZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbiAgKCogcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5lbmRcblxuYW5kIHN3aXRjaEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbigqIFhYWCBkZXByZWNhdGVkID0+IGludGVyZmFjZSBHZXRTVkdEb2N1bWVudCA9PiBTVkdEb2N1bWVudCBnZXRTVkdEb2N1bWVudCgpICopXG5cbigqIGludGVyZmFjZSBTVkdTdHlsZUVsZW1lbnQgKilcbmFuZCBzdHlsZUVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5cbiAgbWV0aG9kIG1lZGlhIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB0aXRsZSA6IGpzX3N0cmluZyB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUG9pbnQgKilcbmFuZCBwb2ludCA9IG9iamVjdFxuICBtZXRob2QgeCA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4VHJhbnNmb3JtIDogbWF0cml4IHQgLT4gcG9pbnQgdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvaW50TGlzdCAqKVxuYW5kIHBvaW50TGlzdCA9IFtwb2ludCB0XSBsaXN0XG5cbigqIGludGVyZmFjZSBTVkdNYXRyaXggKilcbmFuZCBtYXRyaXggPSBvYmplY3RcbiAgbWV0aG9kIGEgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGIgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGMgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGQgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGUgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGYgOiBudW1iZXJfdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG11bHRpcGx5IDogbWF0cml4IHQgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBpbnZlcnNlIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCB0cmFuc2xhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHNjYWxlIDogbnVtYmVyX3QgLT4gbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBzY2FsZU5vblVuaWZvcm0gOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIHJvdGF0ZSA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgcm90YXRlRnJvbVZlY3RvciA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2QgZmxpcFggOiBtYXRyaXggdCBtZXRoXG5cbiAgbWV0aG9kIGZsaXBZIDogbWF0cml4IHQgbWV0aFxuXG4gIG1ldGhvZCBza2V3WCA6IG51bWJlcl90IC0+IG1hdHJpeCB0IG1ldGhcblxuICBtZXRob2Qgc2tld1kgOiBudW1iZXJfdCAtPiBtYXRyaXggdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RyYW5zZm9ybSAqKVxuYW5kIHRyYW5zZm9ybSA9IG9iamVjdFxuICBtZXRob2QgX3R5cGUgOiB0cmFuc2Zvcm1UeXBlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWF0cml4IDogbWF0cml4IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc2V0TWF0cml4IDogbWF0cml4IHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHNldFRyYW5zbGF0ZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRTY2FsZSA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBzZXRSb3RhdGUgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1ggOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgc2V0U2tld1kgOiBudW1iZXJfdCAtPiB1bml0IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVHJhbnNmb3JtTGlzdCAqKVxuYW5kIHRyYW5zZm9ybUxpc3QgPSBvYmplY3RcbiAgaW5oZXJpdCBbdHJhbnNmb3JtIHRdIGxpc3RcblxuICBtZXRob2QgY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeCA6IG1hdHJpeCAtPiB0cmFuc2Zvcm0gdCBtZXRoXG5cbiAgbWV0aG9kIGNvbnNvbGlkYXRlIDogdHJhbnNmb3JtIHQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlZFRyYW5zZm9ybUxpc3QgKilcbmFuZCBhbmltYXRlZFRyYW5zZm9ybUxpc3QgPSBbdHJhbnNmb3JtTGlzdCB0XSBhbmltYXRlZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyAqKVxuYW5kIHByZXNlcnZlQXNwZWN0UmF0aW8gPSBvYmplY3RcbiAgbWV0aG9kIGFsaWduIDogYWxpZ25tZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIG1lZXRPclNsaWNlIDogbWVldE9yU2xpY2VUeXBlIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvICopXG5hbmQgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gW3ByZXNlcnZlQXNwZWN0UmF0aW8gdF0gYW5pbWF0ZWRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWcgKilcbmFuZCBwYXRoU2VnID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnVHlwZSA6IHBhdGhTZWdtZW50VHlwZSByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHBhdGhTZWdUeXBlQXNMZXR0ZXIgOiBqc19zdHJpbmcgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDbG9zZVBhdGggKilcbmFuZCBwYXRoU2VnQ2xvc2VQYXRoID0gcGF0aFNlZ1xuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ01vdmV0b0FicyAqKVxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdNb3ZldG9SZWwgKilcbmFuZCBwYXRoU2VnTW92ZXRvID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1JlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG8gPSBvYmplY3RcbiAgaW5oZXJpdCBwYXRoU2VnXG5cbiAgbWV0aG9kIHggOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsICopXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeTIgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgeDEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHkxIDogbnVtYmVyX3QgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQXJjQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0FyY1JlbCopXG5hbmQgcGF0aFNlZ0FyYyA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgcjEgOiBudW1iZXJfdCBwcm9wXG5cbiAgbWV0aG9kIHIyIDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBhbmdsZSA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgbGFyZ2VBcmNGbGFnIDogYm9vbCB0IHByb3BcblxuICBtZXRob2Qgc3dlZXBGbGFnIDogYm9vbCB0IHByb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b0hvcml6b250YWxBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCAqKVxuYW5kIHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzICopXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsICopXG5hbmQgcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsID0gb2JqZWN0XG4gIGluaGVyaXQgcGF0aFNlZ1xuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3RcbmVuZFxuXG5hbmQgcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuXG4gIG1ldGhvZCB4MiA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkyIDogbnVtYmVyX3RcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGhBYnMgKilcbigqIGludGVyZmFjZSBTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCAgKilcbmFuZCBwYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aCA9IG9iamVjdFxuICBpbmhlcml0IHBhdGhTZWdcblxuICBtZXRob2QgeCA6IG51bWJlcl90XG5cbiAgbWV0aG9kIHkgOiBudW1iZXJfdFxuZW5kXG5cbmFuZCBwYXRoU2VnTGlzdCA9IFtwYXRoU2VnIHRdIGxpc3RcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUGF0aERhdGEgKilcbmFuZCBhbmltYXRlZFBhdGhEYXRhID0gb2JqZWN0XG4gIG1ldGhvZCBwYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBub3JtYWxpemVkUGF0aFNlZ0xpc3QgOiBwYXRoU2VnTGlzdCB0IHByb3BcblxuICBtZXRob2QgYW5pbWF0ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuXG4gIG1ldGhvZCBhbmltYXRlZE5vcm1hbGl6ZWRQYXRoU2VnTGlzdCA6IHBhdGhTZWdMaXN0IHQgcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQYXRoRWxlbWVudCAqKVxuYW5kIHBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUGF0aERhdGFcblxuICBtZXRob2QgcGF0aExlbmd0aCA6IGFuaW1hdGVkTnVtYmVyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRUb3RhbExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0UG9pbnRBdExlbmd0aCA6IG51bWJlcl90IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRQYXRoU2VnQXRMZW5ndGggOiBudW1iZXJfdCAtPiBpbnRcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0Nsb3NlUGF0aCA6IHBhdGhTZWdDbG9zZVBhdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTW92ZXRvQWJzIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ01vdmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdNb3ZldG9SZWwgOiBudW1iZXJfdCAtPiBudW1iZXJfdCAtPiBwYXRoU2VnTW92ZXRvIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b0FicyA6IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG8gbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvUmVsIDogbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0byBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNBYnMgOlxuICAgICAgIG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBwYXRoU2VnQ3VydmV0b0N1YmljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNBYnMgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvUXVhZHJhdGljIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0FyY0FicyA6XG4gICAgICAgbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IGJvb2wgdFxuICAgIC0+IHBhdGhTZWdBcmMgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQXJjUmVsIDpcbiAgICAgICBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gbnVtYmVyX3RcbiAgICAtPiBudW1iZXJfdFxuICAgIC0+IG51bWJlcl90XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gYm9vbCB0XG4gICAgLT4gcGF0aFNlZ0FyYyBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdMaW5ldG9Ib3Jpem9udGFsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b0hvcml6b250YWwgbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnTGluZXRvSG9yaXpvbnRhbFJlbCA6IG51bWJlcl90IC0+IHBhdGhTZWdMaW5ldG9Ib3Jpem9udGFsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsQWJzIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0xpbmV0b1ZlcnRpY2FsUmVsIDogbnVtYmVyX3QgLT4gcGF0aFNlZ0xpbmV0b1ZlcnRpY2FsIG1ldGhcblxuICBtZXRob2QgY3JlYXRlU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aCBtZXRoXG5cbiAgbWV0aG9kIGNyZWF0ZVNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwgOlxuICAgIG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IG51bWJlcl90IC0+IHBhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aEFicyA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuXG4gIG1ldGhvZCBjcmVhdGVTVkdQYXRoU2VnQ3VydmV0b1F1YWRyYXRpY1Ntb290aFJlbCA6XG4gICAgbnVtYmVyX3QgLT4gbnVtYmVyX3QgLT4gcGF0aFNlZ0N1cnZldG9RdWFkcmF0aWNTbW9vdGggbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdSZWN0RWxlbWVudCAqKVxuYW5kIHJlY3RFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdDaXJjbGVFbGVtZW50ICopXG5hbmQgY2lyY2xlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHIgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRWxsaXBzZUVsZW1lbnQgKilcbmFuZCBlbGxpcHNlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgbWV0aG9kIGN4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGN5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0xpbmVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGxpbmVFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IERvbV9odG1sLmV2ZW50VGFyZ2V0XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVkUG9pbnRzICopXG5hbmQgYW5pbWF0ZWRQb2ludHMgPSBvYmplY3RcbiAgbWV0aG9kIHBvaW50cyA6IHBvaW50TGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYW5pbWF0ZWRwb2ludHMgOiBwb2ludExpc3QgdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BvbHlsaW5lRWxlbWVudCAqKVxuYW5kIHBvbHlMaW5lRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG5cbiAgaW5oZXJpdCBhbmltYXRlZFBvaW50c1xuZW5kXG5cbigqIGludGVyZmFjZSBTVkdQb2x5Z29uRWxlbWVudCAqKVxuYW5kIHBvbHlnb25FbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IHRyYW5zZm9ybWFibGVcblxuICBpbmhlcml0IGFuaW1hdGVkUG9pbnRzXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRDb250ZW50RWxlbWVudCAqKVxuYW5kIHRleHRDb250ZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCBEb21faHRtbC5ldmVudFRhcmdldFxuXG4gIG1ldGhvZCB0ZXh0TGVuZ3RoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGxlbmd0aEFkanVzdCA6IGxlbmd0aEFkanVzdCBhbmltYXRlZCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgZ2V0TnVtYmVyT2ZDaGFycyA6IGludCBtZXRoXG5cbiAgbWV0aG9kIGdldENvbXB1dGVkVGV4dExlbmd0aCA6IG51bWJlcl90IG1ldGhcblxuICBtZXRob2QgZ2V0U3ViU3RyaW5nTGVuZ3RoIDogaW50IC0+IGludCAtPiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldFN0YXJ0UG9zaXRpb25PZkNoYXIgOiBpbnQgLT4gcG9pbnQgdCBtZXRoXG5cbiAgbWV0aG9kIGdldEVuZFBvc2l0aW9uT2ZDaGFyIDogaW50IC0+IHBvaW50IHQgbWV0aFxuXG4gIG1ldGhvZCBnZXRFeHRlbnRPZkNoYXIgOiBpbnQgLT4gcmVjdCB0IG1ldGhcblxuICBtZXRob2QgZ2V0Um90YXRpb25PZkNoYXIgOiBpbnQgLT4gbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRDaGFyTnVtQXRQb3NpdGlvbiA6IHBvaW50IC0+IGludCBtZXRoXG5cbiAgbWV0aG9kIHNlbGVjdFN1YlN0cmluZyA6IGludCAtPiBpbnQgLT4gdW5pdCBtZXRoXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQgKilcbmFuZCB0ZXh0UG9zaXRpb25pbmdFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aExpc3QgdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGR4IDogYW5pbWF0ZWRMZW5ndGhMaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBkeSA6IGFuaW1hdGVkTGVuZ3RoTGlzdCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm90YXRlIDogYW5pbWF0ZWROdW1iZXJMaXN0IHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0RWxlbWVudCAqKVxuYW5kIHRleHRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuZW5kXG5cbmFuZCB0c3BhbkVsZW1lbnQgPSB0ZXh0UG9zaXRpb25pbmdFbGVtZW50XG5cbmFuZCB0cmVmRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IHRleHRQb3NpdGlvbmluZ0VsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdUZXh0UGF0aEVsZW1lbnQgKilcbmFuZCB0ZXh0UGF0aEVsZW1lbnRNZXRob2QgPSBbdGV4dFBhdGhNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50U3BhY2luZyA9IFt0ZXh0UGF0aFNwYWNpbmdUeXBlXSBhbmltYXRlZFxuXG5hbmQgdGV4dFBhdGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dENvbnRlbnRFbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBtZXRob2Qgc3RhcnRPZmZzZXQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgbWV0aG9kXyA6IHRleHRQYXRoRWxlbWVudE1ldGhvZCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHNwYWNpbmcgOiB0ZXh0UGF0aEVsZW1lbnRTcGFjaW5nIHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQWx0R2x5cGhFbGVtZW50ICopXG5hbmQgYWx0R2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgdGV4dFBvc2l0aW9uaW5nRWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgbWV0aG9kIGdseXBoUmVmIDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCBmb3JtYXQgOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoRGVmRWxlbWVudCAqKVxuYW5kIGFsdEdseXBoRGVmRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0FsdEdseXBoSXRlbUVsZW1lbnQgKilcbmFuZCBhbHRHbHlwaEl0ZW1FbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhSZWZFbGVtZW50ICopXG5hbmQgZ2x5cGhSZWZFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBnbHlwaFJlZiA6IGpzX3N0cmluZyB0IHByb3BcblxuICBtZXRob2QgZm9ybWF0IDoganNfc3RyaW5nIHQgcHJvcFxuXG4gIG1ldGhvZCB4IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCB5IDogbnVtYmVyX3QgcHJvcFxuXG4gIG1ldGhvZCBkeCA6IG51bWJlcl90IHByb3BcblxuICBtZXRob2QgZHkgOiBudW1iZXJfdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1BhaW50IDogU1ZHQ29sb3IgeyAqKVxuXG4oKiAgIC8vIFBhaW50IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfUkdCQ09MT1IgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1JHQkNPTE9SX0lDQ0NPTE9SID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9OT05FID0gMTAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX0NVUlJFTlRDT0xPUiA9IDEwMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfTk9ORSA9IDEwMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfQ1VSUkVOVENPTE9SID0gMTA0OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfUEFJTlRUWVBFX1VSSV9SR0JDT0xPUiA9IDEwNTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1BBSU5UVFlQRV9VUklfUkdCQ09MT1JfSUNDQ09MT1IgPSAxMDY7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QQUlOVFRZUEVfVVJJID0gMTA3OyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCBwYWludFR5cGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgdXJpOyAqKVxuXG4oKiAgIHZvaWQgc2V0VXJpKGluIERPTVN0cmluZyB1cmkpOyAqKVxuKCogICB2b2lkIHNldFBhaW50KGluIHVuc2lnbmVkIHNob3J0IHBhaW50VHlwZSwgaW4gRE9NU3RyaW5nIHVyaSwgaW4gRE9NU3RyaW5nIHJnYkNvbG9yLCBpbiBET01TdHJpbmcgaWNjQ29sb3IpIHJhaXNlcyhTVkdFeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR01hcmtlckVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1N0eWxhYmxlLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaXRUb1ZpZXdCb3ggeyAqKVxuXG4oKiAgIC8vIE1hcmtlciBVbml0IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJVTklUU19VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1VTRVJTUEFDRU9OVVNFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUlVOSVRTX1NUUk9LRVdJRFRIID0gMjsgKilcblxuKCogICAvLyBNYXJrZXIgT3JpZW50YXRpb24gVHlwZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01BUktFUl9PUklFTlRfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NQVJLRVJfT1JJRU5UX0FVVE8gPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfTUFSS0VSX09SSUVOVF9BTkdMRSA9IDI7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHJlZlg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCByZWZZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXJrZXJVbml0czsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIG1hcmtlcldpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggbWFya2VySGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcmllbnRUeXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRBbmdsZSBvcmllbnRBbmdsZTsgKilcblxuKCogICB2b2lkIHNldE9yaWVudFRvQXV0bygpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogICB2b2lkIHNldE9yaWVudFRvQW5nbGUoaW4gU1ZHQW5nbGUgYW5nbGUpIHJhaXNlcyhET01FeGNlcHRpb24pOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbG9yUHJvZmlsZUVsZW1lbnQgOiBTVkdFbGVtZW50LCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR1JlbmRlcmluZ0ludGVudCB7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbG9jYWw7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdDb2xvclByb2ZpbGVSdWxlIDogU1ZHQ1NTUnVsZSwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHUmVuZGVyaW5nSW50ZW50IHsgKilcbigqICAgYXR0cmlidXRlIERPTVN0cmluZyBzcmMgc2V0cmFpc2VzKERPTUV4Y2VwdGlvbik7ICopXG4oKiAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbmFtZSBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqICAgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlbmRlcmluZ0ludGVudCBzZXRyYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdHcmFkaWVudEVsZW1lbnQgKilcbmFuZCBhbmltYXRlZFNwcmVhZE1ldGhvZCA9IFtzcHJlYWRNZXRob2RUeXBlXSBhbmltYXRlZFxuXG5hbmQgZ3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZ3JhZGllbnRVbml0czsgKilcbiAgbWV0aG9kIGdyYWRpZW50VHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzcHJlYWRNZXRob2QgOiBhbmltYXRlZFNwcmVhZE1ldGhvZCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50ICopXG5hbmQgbGluZWFyR3JhZGllbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZ3JhZGllbnRFbGVtZW50XG5cbiAgbWV0aG9kIHgxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkxIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHgyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkyIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCAqKVxuYW5kIHJhZGlhbEdyYWRpZW50RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGdyYWRpZW50RWxlbWVudFxuXG4gIG1ldGhvZCBjeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCByIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGZ5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1N0b3BFbGVtZW50ICopXG5hbmQgc3RvcEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIG1ldGhvZCBvZmZzZXQgOiBhbmltYXRlZE51bWJlciB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHUGF0dGVybkVsZW1lbnQgKilcbmFuZCBwYXR0ZXJuRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgdGVzdHNcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gcGF0dGVyblVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHBhdHRlcm5Db250ZW50VW5pdHM7ICopXG4gIG1ldGhvZCBwYXR0ZXJuVHJhbnNmb3JtIDogYW5pbWF0ZWRUcmFuc2Zvcm1MaXN0IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0NsaXBQYXRoRWxlbWVudCAqKVxuYW5kIGNsaXBQYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgaW5oZXJpdCB0cmFuc2Zvcm1hYmxlXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gY2xpcFBhdGhVbml0czsgKilcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHTWFza0VsZW1lbnQgKilcbmFuZCBtYXNrRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBsYW5nU3BhY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5cbiAgKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtYXNrVW5pdHM7ICopXG4gICgqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gbWFza0NvbnRlbnRVbml0czsgKilcbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB3aWR0aCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWlnaHQgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHRmlsdGVyRWxlbWVudCAqKVxuYW5kIGZpbHRlckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGxhbmdTcGFjZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuXG4gIGluaGVyaXQgc3R5bGFibGVcblxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIGZpbHRlclVuaXRzOyAqKVxuICAoKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHByaW1pdGl2ZVVuaXRzOyAqKVxuICBtZXRob2QgeCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB5IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHdpZHRoIDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGhlaWdodCA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNYIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBmaWx0ZXJSZXNZIDogYW5pbWF0ZWRJbnRlZ2VyIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBzZXRGaWx0ZXJSZXMgOiBpbnQgLT4gaW50IC0+IHVuaXQgbWV0aFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgOiBTVkdTdHlsYWJsZSB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZExlbmd0aCB4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggeTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTGVuZ3RoIHdpZHRoOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRMZW5ndGggaGVpZ2h0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgcmVzdWx0OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQmxlbmRFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQmxlbmQgTW9kZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX05PUk1BTCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfTVVMVElQTFkgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVCTEVORF9NT0RFX1NDUkVFTiA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUJMRU5EX01PREVfREFSS0VOID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQkxFTkRfTU9ERV9MSUdIVEVOID0gNTsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBtb2RlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gQ29sb3IgTWF0cml4IFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfTUFUUklYID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9TQVRVUkFURSA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTE9STUFUUklYX1RZUEVfSFVFUk9UQVRFID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09MT1JNQVRSSVhfVFlQRV9MVU1JTkFOQ0VUT0FMUEhBID0gNDsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB0eXBlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IHZhbHVlczsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG5cbigqICAgLy8gQ29tcG9uZW50IFRyYW5zZmVyIFR5cGVzICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfSURFTlRJVFkgPSAxOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFID0gMjsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9ESVNDUkVURSA9IDM7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPTkVOVFRSQU5TRkVSX1RZUEVfTElORUFSID0gNDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQRV9HQU1NQSA9IDU7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gdHlwZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyTGlzdCB0YWJsZVZhbHVlczsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNsb3BlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgaW50ZXJjZXB0OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYW1wbGl0dWRlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZXhwb25lbnQ7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBvZmZzZXQ7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jUkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jR0VsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQkVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVGdW5jQUVsZW1lbnQgOiBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudCB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVDb21wb3NpdGVFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIENvbXBvc2l0ZSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0ZFQ09NUE9TSVRFX09QRVJBVE9SX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfT1ZFUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9JTiA9IDI7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9PVVQgPSAzOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVRPUCA9IDQ7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19GRUNPTVBPU0lURV9PUEVSQVRPUl9YT1IgPSA1OyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRkVDT01QT1NJVEVfT1BFUkFUT1JfQVJJVEhNRVRJQyA9IDY7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gb3BlcmF0b3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGsyOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgazM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrNDsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIC8vIEVkZ2UgTW9kZSBWYWx1ZXMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfRFVQTElDQVRFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0VER0VNT0RFX1dSQVAgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfRURHRU1PREVfTk9ORSA9IDM7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBvcmRlclg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgb3JkZXJZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXJMaXN0IGtlcm5lbE1hdHJpeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGRpdmlzb3I7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiaWFzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRJbnRlZ2VyIHRhcmdldFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEludGVnZXIgdGFyZ2V0WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gZWRnZU1vZGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRCb29sZWFuIHByZXNlcnZlQWxwaGE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3VyZmFjZVNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZGlmZnVzZUNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBrZXJuZWxVbml0TGVuZ3RoWTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRURpc3RhbnRMaWdodEVsZW1lbnQgOiBTVkdFbGVtZW50IHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGF6aW11dGg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBlbGV2YXRpb247ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVQb2ludExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFU3BvdExpZ2h0RWxlbWVudCA6IFNWR0VsZW1lbnQgeyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgeDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHk7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciB6OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRZOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgcG9pbnRzQXRaOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGxpbWl0aW5nQ29uZUFuZ2xlOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcblxuKCogICAvLyBDaGFubmVsIFNlbGVjdG9ycyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9VTktOT1dOID0gMDsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfUiA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19DSEFOTkVMX0cgPSAyOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfQ0hBTk5FTF9CID0gMzsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0NIQU5ORUxfQSA9IDQ7ICopXG5cbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHNjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB4Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiB5Q2hhbm5lbFNlbGVjdG9yOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFRmxvb2RFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMgeyAqKVxuXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdGREZXZpYXRpb25YOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3RkRGV2aWF0aW9uWTsgKilcblxuKCogICB2b2lkIHNldFN0ZERldmlhdGlvbihpbiBmbG9hdCBzdGREZXZpYXRpb25YLCBpbiBmbG9hdCBzdGREZXZpYXRpb25ZKSByYWlzZXMoRE9NRXhjZXB0aW9uKTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdGRUltYWdlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdVUklSZWZlcmVuY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdMYW5nU3BhY2UsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFTWVyZ2VFbGVtZW50IDogU1ZHRWxlbWVudCwgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNZXJnZU5vZGVFbGVtZW50IDogU1ZHRWxlbWVudCB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gTW9ycGhvbG9neSBPcGVyYXRvcnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19NT1JQSE9MT0dZX09QRVJBVE9SX0VST0RFID0gMTsgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX01PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRTdHJpbmcgaW4xOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbiBvcGVyYXRvcjsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIHJhZGl1c1g7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciByYWRpdXNZOyAqKVxuKCogfTsgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZFT2Zmc2V0RWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzIHsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkU3RyaW5nIGluMTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGR4OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgZHk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzdXJmYWNlU2NhbGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBzcGVjdWxhckNvbnN0YW50OyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc3BlY3VsYXJFeHBvbmVudDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkTnVtYmVyIGtlcm5lbFVuaXRMZW5ndGhYOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIga2VybmVsVW5pdExlbmd0aFk7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUaWxlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZFN0cmluZyBpbjE7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHRkVUdXJidWxlbmNlRWxlbWVudCA6IFNWR0VsZW1lbnQsICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyB7ICopXG5cbigqICAgLy8gVHVyYnVsZW5jZSBUeXBlcyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX1VOS05PV04gPSAwOyAqKVxuKCogICBjb25zdCB1bnNpZ25lZCBzaG9ydCBTVkdfVFVSQlVMRU5DRV9UWVBFX0ZSQUNUQUxOT0lTRSA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19UVVJCVUxFTkNFX1RZUEVfVFVSQlVMRU5DRSA9IDI7ICopXG5cbigqICAgLy8gU3RpdGNoIE9wdGlvbnMgKilcbigqICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX1NUSVRDSFRZUEVfVU5LTk9XTiA9IDA7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX1NUSVRDSCA9IDE7ICopXG4oKiAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19TVElUQ0hUWVBFX05PU1RJVENIID0gMjsgKilcblxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgYmFzZUZyZXF1ZW5jeVg7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZE51bWJlciBiYXNlRnJlcXVlbmN5WTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkSW50ZWdlciBudW1PY3RhdmVzOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHQW5pbWF0ZWROdW1iZXIgc2VlZDsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR0FuaW1hdGVkRW51bWVyYXRpb24gc3RpdGNoVGlsZXM7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBTVkdBbmltYXRlZEVudW1lcmF0aW9uIHR5cGU7ICopXG4oKiB9OyAqKVxuXG4oKiBpbnRlcmZhY2UgU1ZHQ3Vyc29yRWxlbWVudCAqKVxuYW5kIGN1cnNvckVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgbWV0aG9kIHggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgeSA6IGFuaW1hdGVkTGVuZ3RoIHQgcmVhZG9ubHlfcHJvcFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBRWxlbWVudCAqKVxuYW5kIGFFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgdXJpUmVmZXJlbmNlXG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB0YXJnZXQgOiBhbmltYXRlZFN0cmluZyB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHVmlld0VsZW1lbnQgKilcbmFuZCB2aWV3RWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBpbmhlcml0IGZpdFRvVmlld0JveFxuXG4gIGluaGVyaXQgem9vbUFuZFBhblxuXG4gIG1ldGhvZCB2aWV3VGFyZ2V0IDogc3RyaW5nTGlzdCB0IHJlYWRvbmx5X3Byb3BcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHU2NyaXB0RWxlbWVudCAqKVxuYW5kIHNjcmlwdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB1cmlSZWZlcmVuY2VcblxuICBpbmhlcml0IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcblxuICBtZXRob2QgdHlwZV8gOiBqc19zdHJpbmcgdCBwcm9wXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1pvb21FdmVudCA6IFVJRXZlbnQgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1JlY3Qgem9vbVJlY3RTY3JlZW47ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBwcmV2aW91c1NjYWxlOyAqKVxuKCogICByZWFkb25seSBhdHRyaWJ1dGUgU1ZHUG9pbnQgcHJldmlvdXNUcmFuc2xhdGU7ICopXG4oKiAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBmbG9hdCBuZXdTY2FsZTsgKilcbigqICAgcmVhZG9ubHkgYXR0cmlidXRlIFNWR1BvaW50IG5ld1RyYW5zbGF0ZTsgKilcbigqIH07ICopXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRpb25FbGVtZW50ICopXG5hbmQgYW5pbWF0aW9uRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHRlc3RzXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgKCogaW5oZXJpdCBlbGVtZW50VGltZUNvbnRyb2wgKilcbiAgbWV0aG9kIHRhcmdldEVsZW1lbnQgOiBlbGVtZW50IHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBnZXRTdGFydFRpbWUgOiBudW1iZXJfdCBtZXRoXG5cbiAgbWV0aG9kIGdldEN1cnJlbnRUaW1lIDogbnVtYmVyX3QgbWV0aFxuXG4gIG1ldGhvZCBnZXRTaW1wbGVEdXJhdGlvbiA6IG51bWJlcl90IG1ldGhcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZUVsZW1lbnQgKilcbmFuZCBhbmltYXRlRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR1NldEVsZW1lbnQgKilcbmFuZCBzZXRFbGVtZW50ID0gYW5pbWF0aW9uRWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQgKilcbmFuZCBhbmltYXRlTW90aW9uRWxlbWVudCA9IGFuaW1hdGlvbkVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR01QYXRoRWxlbWVudCAqKVxuYW5kIG1QYXRoRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGVsZW1lbnRcblxuICBpbmhlcml0IHVyaVJlZmVyZW5jZVxuXG4gIGluaGVyaXQgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZFxuZW5kXG5cbigqIGludGVyZmFjZSBTVkdBbmltYXRlQ29sb3JFbGVtZW50ICopXG5hbmQgYW5pbWF0ZUNvbG9yRWxlbWVudCA9IG9iamVjdFxuICBpbmhlcml0IGFuaW1hdGlvbkVsZW1lbnRcblxuICBpbmhlcml0IHN0eWxhYmxlXG5lbmRcblxuKCogaW50ZXJmYWNlIFNWR0FuaW1hdGVUcmFuc2Zvcm1FbGVtZW50ICopXG5hbmQgYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgPSBhbmltYXRpb25FbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RWxlbWVudCAqKVxuYW5kIGZvbnRFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHR2x5cGhFbGVtZW50ICopXG4oKiBpbnRlcmZhY2UgU1ZHTWlzc2luZ0dseXBoRWxlbWVudCopXG5hbmQgZ2x5cGhFbGVtZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgZWxlbWVudFxuXG4gIGluaGVyaXQgc3R5bGFibGVcbmVuZFxuXG4oKiBpbnRlcmZhY2UgU1ZHSEtlcm5FbGVtZW50IDogU1ZHRWxlbWVudCAqKVxuKCogaW50ZXJmYWNlIFNWR1ZLZXJuRWxlbWVudCA6IFNWR0VsZW1lbnQgKilcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZVNyY0VsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9udEZhY2VTcmNFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9udEZhY2VVcmlFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlVXJpRWxlbWVudCA9IGVsZW1lbnRcblxuKCogaW50ZXJmYWNlIFNWR0ZvbnRGYWNlRm9ybWF0RWxlbWVudCAqKVxuY2xhc3MgdHlwZSBmb250RmFjZUZvcm1hdEVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdGb250RmFjZU5hbWVFbGVtZW50ICopXG5jbGFzcyB0eXBlIGZvbnRGYWNlTmFtZUVsZW1lbnQgPSBlbGVtZW50XG5cbigqIGludGVyZmFjZSBTVkdNZXRhZGF0YUVsZW1lbnQgKilcbmNsYXNzIHR5cGUgbWV0YWRhdGFFbGVtZW50ID0gZWxlbWVudFxuXG4oKiBpbnRlcmZhY2UgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQgKilcbmNsYXNzIHR5cGUgZm9yZWlnbk9iamVjdEVsZW1lbnQgPSBvYmplY3RcbiAgaW5oZXJpdCBlbGVtZW50XG5cbiAgaW5oZXJpdCB0ZXN0c1xuXG4gIGluaGVyaXQgbGFuZ1NwYWNlXG5cbiAgaW5oZXJpdCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkXG5cbiAgaW5oZXJpdCBzdHlsYWJsZVxuXG4gIGluaGVyaXQgdHJhbnNmb3JtYWJsZVxuXG4gIG1ldGhvZCB4IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHkgOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2lkdGggOiBhbmltYXRlZExlbmd0aCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaGVpZ2h0IDogYW5pbWF0ZWRMZW5ndGggdCByZWFkb25seV9wcm9wXG5lbmRcblxubGV0IGNyZWF0ZUVsZW1lbnQgKGRvYyA6IGRvY3VtZW50IHQpIG5hbWUgPSBkb2MjI2NyZWF0ZUVsZW1lbnROUyB4bWxucyAoSnMuc3RyaW5nIG5hbWUpXG5cbmxldCB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBuYW1lID0gSnMuVW5zYWZlLmNvZXJjZSAoY3JlYXRlRWxlbWVudCBkb2MgbmFtZSlcblxubGV0IGNyZWF0ZUEgZG9jIDogYUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYVwiXG5cbmxldCBjcmVhdGVBbHRHbHlwaCBkb2MgOiBhbHRHbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYWx0Z2x5cGhcIlxuXG5sZXQgY3JlYXRlQWx0R2x5cGhEZWYgZG9jIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoZGVmXCJcblxubGV0IGNyZWF0ZUFsdEdseXBoSXRlbSBkb2MgOiBhbHRHbHlwaEl0ZW1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFsdGdseXBoaXRlbVwiXG5cbmxldCBjcmVhdGVBbmltYXRlIGRvYyA6IGFuaW1hdGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGVcIlxuXG5sZXQgY3JlYXRlQW5pbWF0ZUNvbG9yIGRvYyA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZWNvbG9yXCJcblxubGV0IGNyZWF0ZUFuaW1hdGVNb3Rpb24gZG9jIDogYW5pbWF0ZU1vdGlvbkVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiYW5pbWF0ZW1vdGlvblwiXG5cbmxldCBjcmVhdGVBbmltYXRlVHJhbnNmb3JtIGRvYyA6IGFuaW1hdGVUcmFuc2Zvcm1FbGVtZW50IHQgPVxuICB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImFuaW1hdGV0cmFuc2Zvcm1cIlxuXG5sZXQgY3JlYXRlQ2lyY2xlIGRvYyA6IGNpcmNsZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiY2lyY2xlXCJcblxubGV0IGNyZWF0ZUNsaXBQYXRoIGRvYyA6IGNsaXBQYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJjbGlwcGF0aFwiXG5cbigqIGxldCBjcmVhdGVDb2xvclByb2ZpbGUgZG9jIDogY29sb3JQcm9maWxlIHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImNvbG9yLXByb2ZpbGVcIiAqKVxubGV0IGNyZWF0ZUN1cnNvciBkb2MgOiBjdXJzb3JFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImN1cnNvclwiXG5cbmxldCBjcmVhdGVEZWZzIGRvYyA6IGRlZnNFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImRlZnNcIlxuXG5sZXQgY3JlYXRlRGVzYyBkb2MgOiBkZXNjRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJkZXNjXCJcblxubGV0IGNyZWF0ZUVsbGlwc2UgZG9jIDogZWxsaXBzZUVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZWxsaXBzZVwiXG5cbigqIGxldCBjcmVhdGVGZSogKilcbmxldCBjcmVhdGVGaWx0ZXIgZG9jIDogZmlsdGVyRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmaWx0ZXJcIlxuXG5sZXQgY3JlYXRlRm9udCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZUZvcm1hdCBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtZm9ybWF0XCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlTmFtZSBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2UtbmFtZVwiXG5cbmxldCBjcmVhdGVGb250RmFjZVNyYyBkb2MgOiBmb250RWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb250LWZhY2Utc3JjXCJcblxubGV0IGNyZWF0ZUZvbnRGYWNlVXJpIGRvYyA6IGZvbnRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImZvbnQtZmFjZS11cmlcIlxuXG5sZXQgY3JlYXRlRm9yZWlnbk9iamVjdCBkb2MgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJmb3JlaWduT2JqZWN0XCJcblxubGV0IGNyZWF0ZUcgZG9jIDogZ0VsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ1wiXG5cbmxldCBjcmVhdGVHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiZ2x5cGhcIlxuXG5sZXQgY3JlYXRlR2x5cGhSZWYgZG9jIDogZ2x5cGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImdseXBocmVmXCJcblxubGV0IGNyZWF0ZWhrZXJuIGRvYyA6IGVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwiaGtlcm5cIlxuXG5sZXQgY3JlYXRlSW1hZ2UgZG9jIDogaW1hZ2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImltYWdlXCJcblxubGV0IGNyZWF0ZUxpbmVFbGVtZW50IGRvYyA6IGxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcImxpbmVcIlxuXG5sZXQgY3JlYXRlTGluZWFyRWxlbWVudCBkb2MgOiBsaW5lYXJHcmFkaWVudEVsZW1lbnQgdCA9XG4gIHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibGluZWFyZ3JhZGllbnRcIlxuXG4oKiBsZXQgY3JlYXRlTWFya2VyIGRvYyA6IG1hcmtlckVsZW1lbnQgKilcbmxldCBjcmVhdGVNYXNrIGRvYyA6IG1hc2tFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1hc2tcIlxuXG5sZXQgY3JlYXRlTWV0YURhdGEgZG9jIDogbWV0YWRhdGFFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcIm1ldGFkYXRhXCJcblxubGV0IGNyZWF0ZU1pc3NpbmdHbHlwaCBkb2MgOiBnbHlwaEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibWlzc2luZy1nbHlwaFwiXG5cbmxldCBjcmVhdGVNUGF0aCBkb2MgOiBtUGF0aEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwibXBhdGhcIlxuXG5sZXQgY3JlYXRlUGF0aCBkb2MgOiBwYXRoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJwYXRoXCJcblxubGV0IGNyZWF0ZVBhdHRlcm4gZG9jIDogcGF0dGVybkVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwicGF0dGVyblwiXG5cbmxldCBjcmVhdGVQb2x5Z29uIGRvYyA6IHBvbHlnb25FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlnb25cIlxuXG5sZXQgY3JlYXRlUG9seWxpbmUgZG9jIDogcG9seUxpbmVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInBvbHlsaW5lXCJcblxubGV0IGNyZWF0ZVJhZGlhbGdyYWRpZW50IGRvYyA6IHJhZGlhbEdyYWRpZW50RWxlbWVudCB0ID1cbiAgdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJyYWRpYWxncmFkaWVudFwiXG5cbmxldCBjcmVhdGVSZWN0IGRvYyA6IHJlY3RFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInJlY3RcIlxuXG5sZXQgY3JlYXRlU2NyaXB0IGRvYyA6IHNjcmlwdEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic2NyaXB0XCJcblxubGV0IGNyZWF0ZVNldCBkb2MgOiBzZXRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInNldFwiXG5cbmxldCBjcmVhdGVTdG9wIGRvYyA6IHN0b3BFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0b3BcIlxuXG5sZXQgY3JlYXRlU3R5bGUgZG9jIDogc3R5bGVFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN0eWxlXCJcblxubGV0IGNyZWF0ZVN2ZyBkb2MgOiBzdmdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInN2Z1wiXG5cbmxldCBjcmVhdGVTd2l0Y2ggZG9jIDogc3dpdGNoRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJzd2l0Y2hcIlxuXG5sZXQgY3JlYXRlU3ltYm9sIGRvYyA6IHN5bWJvbEVsZW1lbnQgdCA9IHVuc2FmZUNyZWF0ZUVsZW1lbnQgZG9jIFwic3ltYm9sXCJcblxubGV0IGNyZWF0ZVRleHRFbGVtZW50IGRvYyA6IHRleHRFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRcIlxuXG5sZXQgY3JlYXRlVGV4dHBhdGggZG9jIDogdGV4dFBhdGhFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRleHRwYXRoXCJcblxubGV0IGNyZWF0ZVRpdGxlIGRvYyA6IHRpdGxlRWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ0aXRsZVwiXG5cbmxldCBjcmVhdGVUcmVmIGRvYyA6IHRyZWZFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRyZWZcIlxuXG5sZXQgY3JlYXRlVHNwYW4gZG9jIDogdHNwYW5FbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInRzcGFuXCJcblxubGV0IGNyZWF0ZVVzZSBkb2MgOiB1c2VFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInVzZVwiXG5cbmxldCBjcmVhdGVWaWV3IGRvYyA6IHZpZXdFbGVtZW50IHQgPSB1bnNhZmVDcmVhdGVFbGVtZW50IGRvYyBcInZpZXdcIlxuXG5sZXQgY3JlYXRldmtlcm4gZG9jIDogZWxlbWVudCB0ID0gdW5zYWZlQ3JlYXRlRWxlbWVudCBkb2MgXCJ2a2VyblwiXG5cbigqKioqKVxuXG5sZXQgc3ZnX2VsZW1lbnQgOiBlbGVtZW50IHQgY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9TVkdFbGVtZW50XG5cbmxldCBkb2N1bWVudCA9IEpzLlVuc2FmZS5nbG9iYWwjIy5kb2N1bWVudFxuXG5sZXQgZ2V0RWxlbWVudEJ5SWQgaWQgOiBlbGVtZW50IHQgPVxuICBKcy5PcHQuY2FzZVxuICAgIChKcy5VbnNhZmUuZ2xvYmFsIyMuZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgaWQpKVxuICAgIChmdW4gKCkgLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIChmdW4gZSAtPiBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBlIGVsc2UgcmFpc2UgTm90X2ZvdW5kKVxuXG5tb2R1bGUgQ29lcmNlVG8gPSBzdHJ1Y3RcbiAgbGV0IGVsZW1lbnQgKGUgOiAjRG9tLm5vZGUgSnMudCkgOiBlbGVtZW50IEpzLnQgSnMub3B0ID1cbiAgICBpZiBKcy5pbnN0YW5jZW9mIGUgc3ZnX2VsZW1lbnQgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpIGVsc2UgSnMubnVsbFxuXG4gIGxldCB1bnNhZmVDb2VyY2UgKGUgOiAjZWxlbWVudCB0KSB0YWcgPVxuICAgIGlmIEpzLmVxdWFscyBlIyMudGFnTmFtZSMjdG9Mb3dlckNhc2UgKEpzLnN0cmluZyB0YWcpXG4gICAgdGhlbiBKcy5zb21lIChKcy5VbnNhZmUuY29lcmNlIGUpXG4gICAgZWxzZSBKcy5udWxsXG5cbiAgbGV0IGEgZSA6IGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhXCJcblxuICBsZXQgYWx0R2x5cGggZSA6IGFsdEdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiBlIDogYWx0R2x5cGhEZWZFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbHRnbHlwaGRlZlwiXG5cbiAgbGV0IGFsdEdseXBoSXRlbSBlIDogYWx0R2x5cGhJdGVtRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiYWx0Z2x5cGhpdGVtXCJcblxuICBsZXQgYW5pbWF0ZSBlIDogYW5pbWF0ZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRlQ29sb3IgZSA6IGFuaW1hdGVDb2xvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImFuaW1hdGVjb2xvclwiXG5cbiAgbGV0IGFuaW1hdGVNb3Rpb24gZSA6IGFuaW1hdGVNb3Rpb25FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJhbmltYXRlbW90aW9uXCJcblxuICBsZXQgYW5pbWF0ZVRyYW5zZm9ybSBlIDogYW5pbWF0ZVRyYW5zZm9ybUVsZW1lbnQgdCBvcHQgPVxuICAgIHVuc2FmZUNvZXJjZSBlIFwiYW5pbWF0ZXRyYW5zZm9ybVwiXG5cbiAgbGV0IGNpcmNsZSBlIDogY2lyY2xlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2lyY2xlXCJcblxuICBsZXQgY2xpcFBhdGggZSA6IGNsaXBQYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY2xpcHBhdGhcIlxuXG4gICgqIGxldCBDb2xvclByb2ZpbGUgZSA6IGNvbG9yUHJvZmlsZSB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiY29sb3ItcHJvZmlsZVwiICopXG4gIGxldCBjdXJzb3IgZSA6IGN1cnNvckVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImN1cnNvclwiXG5cbiAgbGV0IGRlZnMgZSA6IGRlZnNFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJkZWZzXCJcblxuICBsZXQgZGVzYyBlIDogZGVzY0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImRlc2NcIlxuXG4gIGxldCBlbGxpcHNlIGUgOiBlbGxpcHNlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZWxsaXBzZVwiXG5cbiAgKCogbGV0IEZlKiAqKVxuICBsZXQgZmlsdGVyIGUgOiBmaWx0ZXJFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmaWx0ZXJcIlxuXG4gIGxldCBmb250IGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udFwiXG5cbiAgbGV0IGZvbnRGYWNlIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udEZhY2VGb3JtYXQgZSA6IGZvbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJmb250LWZhY2UtZm9ybWF0XCJcblxuICBsZXQgZm9udEZhY2VOYW1lIGUgOiBmb250RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIGxldCBmb250RmFjZVNyYyBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS1zcmNcIlxuXG4gIGxldCBmb250RmFjZVVyaSBlIDogZm9udEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImZvbnQtZmFjZS11cmlcIlxuXG4gIGxldCBmb3JlaWduT2JqZWN0IGUgOiBmb3JlaWduT2JqZWN0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZm9yZWlnbm9iamVjdFwiXG5cbiAgbGV0IGcgZSA6IGdFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnXCJcblxuICBsZXQgZ2x5cGggZSA6IGdseXBoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwiZ2x5cGhcIlxuXG4gIGxldCBnbHlwaFJlZiBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJnbHlwaHJlZlwiXG5cbiAgbGV0IGhrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJoa2VyblwiXG5cbiAgbGV0IGltYWdlIGUgOiBpbWFnZUVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcImltYWdlXCJcblxuICBsZXQgbGluZUVsZW1lbnQgZSA6IGxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lXCJcblxuICBsZXQgbGluZWFyRWxlbWVudCBlIDogbGluZWFyR3JhZGllbnRFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJsaW5lYXJncmFkaWVudFwiXG5cbiAgKCogbGV0IE1hcmtlciBlIDogbWFya2VyRWxlbWVudCAqKVxuICBsZXQgbWFzayBlIDogbWFza0VsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcIm1hc2tcIlxuXG4gIGxldCBtZXRhRGF0YSBlIDogbWV0YWRhdGFFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtZXRhZGF0YVwiXG5cbiAgbGV0IG1pc3NpbmdHbHlwaCBlIDogZ2x5cGhFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJtaXNzaW5nLWdseXBoXCJcblxuICBsZXQgbVBhdGggZSA6IG1QYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwibXBhdGhcIlxuXG4gIGxldCBwYXRoIGUgOiBwYXRoRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwicGF0aFwiXG5cbiAgbGV0IHBhdHRlcm4gZSA6IHBhdHRlcm5FbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwYXR0ZXJuXCJcblxuICBsZXQgcG9seWdvbiBlIDogcG9seWdvbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInBvbHlnb25cIlxuXG4gIGxldCBwb2x5bGluZSBlIDogcG9seUxpbmVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHJhZGlhbGdyYWRpZW50IGUgOiByYWRpYWxHcmFkaWVudEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJhZGlhbGdyYWRpZW50XCJcblxuICBsZXQgcmVjdCBlIDogcmVjdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInJlY3RcIlxuXG4gIGxldCBzY3JpcHQgZSA6IHNjcmlwdEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInNjcmlwdFwiXG5cbiAgbGV0IHNldCBlIDogc2V0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic2V0XCJcblxuICBsZXQgc3RvcCBlIDogc3RvcEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN0b3BcIlxuXG4gIGxldCBzdHlsZSBlIDogc3R5bGVFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzdHlsZVwiXG5cbiAgbGV0IHN2ZyBlIDogc3ZnRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwic3ZnXCJcblxuICBsZXQgc3dpdGNoIGUgOiBzd2l0Y2hFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJzd2l0Y2hcIlxuXG4gIGxldCBzeW1ib2wgZSA6IHN5bWJvbEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInN5bWJvbFwiXG5cbiAgbGV0IHRleHRFbGVtZW50IGUgOiB0ZXh0RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGV4dFwiXG5cbiAgbGV0IHRleHRwYXRoIGUgOiB0ZXh0UGF0aEVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRleHRwYXRoXCJcblxuICBsZXQgdGl0bGUgZSA6IHRpdGxlRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidGl0bGVcIlxuXG4gIGxldCB0cmVmIGUgOiB0cmVmRWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidHJlZlwiXG5cbiAgbGV0IHRzcGFuIGUgOiB0c3BhbkVsZW1lbnQgdCBvcHQgPSB1bnNhZmVDb2VyY2UgZSBcInRzcGFuXCJcblxuICBsZXQgdXNlIGUgOiB1c2VFbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ1c2VcIlxuXG4gIGxldCB2aWV3IGUgOiB2aWV3RWxlbWVudCB0IG9wdCA9IHVuc2FmZUNvZXJjZSBlIFwidmlld1wiXG5cbiAgbGV0IHZrZXJuIGUgOiBlbGVtZW50IHQgb3B0ID0gdW5zYWZlQ29lcmNlIGUgXCJ2a2VyblwiXG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbigqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9FdmVudFNvdXJjZSAqKVxub3BlbiBKc1xub3BlbiBEb21cbm9wZW4hIEltcG9ydFxuXG50eXBlIHN0YXRlID1cbiAgfCBDT05ORUNUSU5HXG4gIHwgT1BFTlxuICB8IENMT1NFRFxuXG5jbGFzcyB0eXBlIFsnYV0gbWVzc2FnZUV2ZW50ID0gb2JqZWN0XG4gIGluaGVyaXQgWydhXSBEb20uZXZlbnRcblxuICBtZXRob2QgZGF0YSA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgb3JpZ2luIDoganNfc3RyaW5nIHQgcmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsYXN0RXZlbnRJZCA6IGpzX3N0cmluZyB0IHJlYWRvbmx5X3Byb3BcbiAgKCogbWV0aG9kIHNvdXJjZSA6IHVuaXQgKilcbmVuZFxuXG5jbGFzcyB0eXBlIGV2ZW50U291cmNlID0gb2JqZWN0ICgnc2VsZilcbiAgbWV0aG9kIHVybCA6IHN0cmluZyB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgd2l0aENyZWRlbnRpYWxzIDogYm9vbCB0IHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgcmVhZHlTdGF0ZSA6IHN0YXRlIHJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgY2xvc2UgOiB1bml0IG1ldGhcblxuICBtZXRob2Qgb25vcGVuIDogKCdzZWxmIHQsICdzZWxmIG1lc3NhZ2VFdmVudCB0KSBldmVudF9saXN0ZW5lciB3cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvbm1lc3NhZ2UgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG9uZXJyb3IgOiAoJ3NlbGYgdCwgJ3NlbGYgbWVzc2FnZUV2ZW50IHQpIGV2ZW50X2xpc3RlbmVyIHdyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gIG1ldGhvZCB3aXRoQ3JlZGVudGlhbHMgOiBib29sIHQgd3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5sZXQgd2l0aENyZWRlbnRpYWxzIGIgOiBvcHRpb25zIHQgPVxuICBsZXQgaW5pdCA9IEpzLlVuc2FmZS5vYmogW3x8XSBpblxuICBpbml0IyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgYjtcbiAgaW5pdFxuXG5sZXQgZXZlbnRTb3VyY2UgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0V2ZW50U291cmNlXG5cbmxldCBldmVudFNvdXJjZV9vcHRpb25zID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9FdmVudFNvdXJjZVxuXG5sZXQgYWRkRXZlbnRMaXN0ZW5lciA9IERvbS5hZGRFdmVudExpc3RlbmVyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIErDqXLDtG1lIFZvdWlsbG9uXG4gKiBMYWJvcmF0b2lyZSBQUFMgLSBDTlJTIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3RcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcblxub3BlbiBKc1xub3BlbiEgSW1wb3J0XG5cbmNsYXNzIHR5cGUgY29uc29sZSA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzIgOiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzUgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ182IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGxvZ183IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgbG9nXzggOiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRlYnVnIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBkZWJ1Z180IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZGVidWdfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mbyA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgaW5mb18zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGluZm9fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2FybiA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2Qgd2Fybl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNCA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHdhcm5fNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZXJyb3IgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGVycm9yXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBlcnJvcl81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfIDogYm9vbCB0IC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMSA6IGJvb2wgdCAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfMiA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGFzc2VydF8zIDogYm9vbCB0IC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNCA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBhc3NlcnRfNSA6IGJvb2wgdCAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpciA6IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGRpcnhtbCA6IERvbS5ub2RlIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRyYWNlIDogdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwIDogXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMiA6IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfMyA6IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cF80IDogXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBfNSA6IF8gLT4gXyAtPiBfIC0+IF8gLT4gXyAtPiB1bml0IG1ldGhcblxuICBtZXRob2QgZ3JvdXBDb2xsYXBzZWQgOiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8yIDogXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF8zIDogXyAtPiBfIC0+IF8gLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIGdyb3VwQ29sbGFwc2VkXzQgOiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cENvbGxhcHNlZF81IDogXyAtPiBfIC0+IF8gLT4gXyAtPiBfIC0+IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCBncm91cEVuZCA6IHVuaXQgbWV0aFxuXG4gIG1ldGhvZCB0aW1lIDoganNfc3RyaW5nIHQgLT4gdW5pdCBtZXRoXG5cbiAgbWV0aG9kIHRpbWVFbmQgOiBqc19zdHJpbmcgdCAtPiB1bml0IG1ldGhcbmVuZFxuXG5leHRlcm5hbCBnZXRfY29uc29sZSA6IHVuaXQgLT4gY29uc29sZSB0ID0gXCJjYW1sX2pzX2dldF9jb25zb2xlXCJcblxubGV0IGNvbnNvbGUgPSBnZXRfY29uc29sZSAoKVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxNSBTdMOpcGhhbmUgTGVncmFuZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxub3BlbiEgSW1wb3J0XG5cbnR5cGUgcG9zaXRpb25FcnJvckNvZGVcblxudHlwZSB3YXRjaElkXG5cbmNsYXNzIHR5cGUgY29vcmRpbmF0ZXMgPSBvYmplY3RcbiAgbWV0aG9kIGxhdGl0dWRlIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBsb25naXR1ZGUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgYWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGFsdGl0dWRlQWNjdXJhY3kgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBoZWFkaW5nIDogSnMubnVtYmVyX3QgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgc3BlZWQgOiBKcy5udW1iZXJfdCBKcy5vcHQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgcG9zaXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNvb3JkcyA6IGNvb3JkaW5hdGVzIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lc3RhbXAgOiBKcy5kYXRlIEpzLnJlYWRvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uT3B0aW9ucyA9IG9iamVjdFxuICBtZXRob2QgZW5hYmxlSGlnaEFjY3VyYWN5IDogYm9vbCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aW1lb3V0IDogaW50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIG1heGltdW1BZ2UgOiBpbnQgSnMud3JpdGVvbmx5X3Byb3BcbmVuZFxuXG5jbGFzcyB0eXBlIHBvc2l0aW9uRXJyb3IgPSBvYmplY3RcbiAgbWV0aG9kIF9QRVJNSVNTSU9OX0RFTklFRF8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QT1NJVElPTl9VTkFWQUlMQUJMRV8gOiBwb3NpdGlvbkVycm9yQ29kZSBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9USU1FT1VUIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBjb2RlIDogcG9zaXRpb25FcnJvckNvZGUgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBtZXNzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZ2VvbG9jYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGdldEN1cnJlbnRQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgd2F0Y2hQb3NpdGlvbiA6XG4gICAgICAgKHBvc2l0aW9uIEpzLnQgLT4gdW5pdCkgSnMuY2FsbGJhY2tcbiAgICAtPiAocG9zaXRpb25FcnJvciBKcy50IC0+IHVuaXQpIEpzLmNhbGxiYWNrXG4gICAgLT4gcG9zaXRpb25PcHRpb25zIEpzLnRcbiAgICAtPiB3YXRjaElkIEpzLm1ldGhcblxuICBtZXRob2QgY2xlYXJXYXRjaCA6IHdhdGNoSWQgLT4gdW5pdCBKcy5tZXRoXG5lbmRcblxubGV0IGVtcHR5X3Bvc2l0aW9uX29wdGlvbnMgKCkgPSBKcy5VbnNhZmUub2JqIFt8fF1cblxubGV0IGdlb2xvY2F0aW9uID1cbiAgbGV0IHggPSBKcy5VbnNhZmUuZ2xvYmFsIyMubmF2aWdhdG9yIGluXG4gIGlmIEpzLk9wdGRlZi50ZXN0IHggdGhlbiB4IyMuZ2VvbG9jYXRpb24gZWxzZSB4XG5cbigqIHVuZGVmaW5lZCAqKVxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgZ2VvbG9jYXRpb25cbiIsImNsYXNzIHR5cGUgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSA9IG9iamVjdFxuICBtZXRob2QgdGFyZ2V0IDogRG9tLm5vZGUgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGJvdW5kaW5nQ2xpZW50UmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RCb3VuZHMgOiBEb21faHRtbC5jbGllbnRSZWN0IEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgaW50ZXJzZWN0aW9uUmVjdCA6IERvbV9odG1sLmNsaWVudFJlY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGludGVyc2VjdGlvblJhdGlvIDogSnMubnVtYmVyX3QgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBpc0ludGVyc2VjdGluZyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIHRpbWUgOiBKcy5udW1iZXJfdCBKcy5yZWFkb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgPSBvYmplY3RcbiAgbWV0aG9kIHJvb3QgOiBEb20ubm9kZSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5cbiAgbWV0aG9kIHJvb3RNYXJnaW4gOiBKcy5qc19zdHJpbmcgSnMudCBKcy53cml0ZW9ubHlfcHJvcFxuXG4gIG1ldGhvZCB0aHJlc2hvbGQgOiBKcy5udW1iZXJfdCBKcy5qc19hcnJheSBKcy50IEpzLndyaXRlb25seV9wcm9wXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IG9iamVjdFxuICBtZXRob2Qgcm9vdCA6IERvbS5ub2RlIEpzLnQgSnMub3B0IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2Qgcm9vdE1hcmdpbiA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICBtZXRob2QgdGhyZXNob2xkcyA6IEpzLm51bWJlcl90IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBvYnNlcnZlIDogI0RvbS5ub2RlIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHVub2JzZXJ2ZSA6ICNEb20ubm9kZSBKcy50IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBkaXNjb25uZWN0IDogdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIHRha2VSZWNvcmRzIDogaW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSBKcy50IEpzLmpzX2FycmF5IEpzLm1ldGhcbmVuZFxuXG5sZXQgZW1wdHlfaW50ZXJzZWN0aW9uX29ic2VydmVyX29wdGlvbnMgKCkgOiBpbnRlcnNlY3Rpb25PYnNlcnZlck9wdGlvbnMgSnMudCA9XG4gIEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRlcnNlY3Rpb25PYnNlcnZlclxuXG5sZXQgaXNfc3VwcG9ydGVkICgpID0gSnMuT3B0ZGVmLnRlc3QgaW50ZXJzZWN0aW9uT2JzZXJ2ZXJfdW5zYWZlXG5cbmxldCBpbnRlcnNlY3Rpb25PYnNlcnZlciA6XG4gICAgKCAgICggICBpbnRlcnNlY3Rpb25PYnNlcnZlckVudHJ5IEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudFxuICAgICAgICAgLT4gdW5pdClcbiAgICAgICAgSnMuY2FsbGJhY2tcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXJPcHRpb25zIEpzLnRcbiAgICAgLT4gaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgSnMudClcbiAgICBKcy5jb25zdHIgPVxuICBpbnRlcnNlY3Rpb25PYnNlcnZlcl91bnNhZmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTggU3TDqXBoYW5lIExlZ3JhbmRcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuXG4gKilcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgdHlwZSBTaGFyZWQgPSBzaWdcbiAgY2xhc3MgdHlwZSBvYmplY3Rfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICB2YWwgb2JqZWN0X29wdGlvbnMgOiB1bml0IC0+IG9iamVjdF9vcHRpb25zIEpzLnRcblxuICBjbGFzcyB0eXBlIF9vYmplY3QgPSBvYmplY3RcbiAgICBtZXRob2Qgc3VwcG9ydGVkTG9jYWxlc09mIDpcbiAgICAgICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnRcbiAgICAgIC0+IG9iamVjdF9vcHRpb25zIEpzLnQgSnMub3B0ZGVmXG4gICAgICAtPiBKcy5qc19zdHJpbmcgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxubW9kdWxlIFNoYXJlZCA6IFNoYXJlZCA9IHN0cnVjdFxuICBjbGFzcyB0eXBlIG9iamVjdF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvYmplY3Rfb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgX29iamVjdCA9IG9iamVjdFxuICAgIG1ldGhvZCBzdXBwb3J0ZWRMb2NhbGVzT2YgOlxuICAgICAgICAgSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudFxuICAgICAgLT4gb2JqZWN0X29wdGlvbnMgSnMudCBKcy5vcHRkZWZcbiAgICAgIC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgQ29sbGF0b3IgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBTaGFyZWRcblxuICBjbGFzcyB0eXBlIHJlc29sdmVkX29wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHVzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHNlbnNpdGl2aXR5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGlnbm9yZVB1bmN0dWF0aW9uIDogYm9vbCBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBjb2xsYXRpb24gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIG9wdGlvbnMgPSBvYmplY3RcbiAgICBtZXRob2QgbG9jYWxlTWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1c2FnZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBzZW5zaXRpdml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCBpZ25vcmVQdW5jdHVhdGlvbiA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgbnVtZXJpYyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgY2FzZUZpcnN0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSB1c2FnZSA9IEpzLnN0cmluZyBcInNvcnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBzZW5zaXRpdml0eSA9IEpzLnN0cmluZyBcInZhcmlhbnRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBpZ25vcmVQdW5jdHVhdGlvbiA9IEpzLl9mYWxzZVxuXG4gICAgICB2YWwgbXV0YWJsZSBudW1lcmljID0gSnMuX2ZhbHNlXG5cbiAgICAgIHZhbCBtdXRhYmxlIGNhc2VGaXJzdCA9IEpzLnN0cmluZyBcImZhbHNlXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgY29tcGFyZSA6IChKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiBpbnQpIEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBEYXRlVGltZUZvcm1hdCA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY2FsZW5kYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgbnVtYmVyaW5nU3lzdGVtIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIHRpbWVab25lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgd2Vla2RheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZXJhIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCB5ZWFyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtb250aCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBob3VyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcblxuICAgIG1ldGhvZCBtaW51dGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIHNlY29uZCA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmX3Byb3BcbiAgZW5kXG5cbiAgY2xhc3MgdHlwZSBvcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGRhdGVTdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVN0eWxlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBjYWxlbmRhciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZGF5UGVyaW9kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGxvY2FsZU1hdGNoZXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIxMiA6IGJvb2wgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXJDeWNsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0TWF0Y2hlciA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB3ZWVrZGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBlcmEgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHllYXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1vbnRoIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBkYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGhvdXIgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbnV0ZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgc2Vjb25kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdGltZVpvbmVOYW1lIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcbiAgZW5kXG5cbiAgbGV0IG9wdGlvbnMgKCkgOiBvcHRpb25zIEpzLnQgPVxuICAgIG9iamVjdCVqc1xuICAgICAgdmFsIG11dGFibGUgZGF0ZVN0eWxlID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVTdHlsZSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjYWxlbmRhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXlQZXJpb2QgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGxvY2FsZU1hdGNoZXIgPSBKcy5zdHJpbmcgXCJiZXN0IGZpdFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHRpbWVab25lID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGhvdXIxMiA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBob3VyQ3ljbGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgZm9ybWF0TWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgd2Vla2RheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBlcmEgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgeWVhciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtb250aCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBkYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgaG91ciA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtaW51dGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgc2Vjb25kID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGZyYWN0aW9uYWxTZWNvbmREaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdGltZVpvbmVOYW1lID0gSnMudW5kZWZpbmVkXG4gICAgZW5kXG5cbiAgY2xhc3MgdHlwZSBmb3JtYXRfcGFydCA9IG9iamVjdFxuICAgIG1ldGhvZCBfdHlwZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBfdmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgdCA9IG9iamVjdFxuICAgIG1ldGhvZCBmb3JtYXQgOiAoSnMuZGF0ZSBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5kYXRlIEpzLnQgSnMub3B0ZGVmIC0+IGZvcm1hdF9wYXJ0IEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5cbiAgICBtZXRob2QgcmVzb2x2ZWRPcHRpb25zIDogdW5pdCAtPiByZXNvbHZlZF9vcHRpb25zIEpzLnQgSnMubWV0aFxuICBlbmRcbmVuZFxuXG5tb2R1bGUgTnVtYmVyRm9ybWF0ID0gc3RydWN0XG4gIGluY2x1ZGUgU2hhcmVkXG5cbiAgY2xhc3MgdHlwZSByZXNvbHZlZF9vcHRpb25zID0gb2JqZWN0XG4gICAgbWV0aG9kIGxvY2FsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnJlYWRvbmx5X3Byb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2Qgc3R5bGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWZfcHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBjb21wYWN0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3kgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIGN1cnJlbmN5RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgY3VycmVuY3lTaWduIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIG5vdGF0aW9uIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBudW1iZXJpbmdTeXN0ZW0gOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHNpZ25EaXNwbGF5IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCBzdHlsZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0IDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ZGVmIEpzLnByb3BcblxuICAgIG1ldGhvZCB1bml0RGlzcGxheSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgdXNlR3JvdXBpbmcgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIHJvdW5kaW5nTW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdQcmlvcml0eSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2Qgcm91bmRpbmdJbmNyZW1lbnQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIHRyYWlsaW5nWmVyb0Rpc3BsYXkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHRkZWYgSnMucHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZiBKcy5wcm9wXG4gIGVuZFxuXG4gIGxldCBvcHRpb25zICgpIDogb3B0aW9ucyBKcy50ID1cbiAgICBvYmplY3QlanNcbiAgICAgIHZhbCBtdXRhYmxlIGNvbXBhY3REaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIGN1cnJlbmN5RGlzcGxheSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBjdXJyZW5jeVNpZ24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbG9jYWxlTWF0Y2hlciA9IEpzLnN0cmluZyBcImJlc3QgZml0XCJcblxuICAgICAgdmFsIG11dGFibGUgbm90YXRpb24gPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbnVtYmVyaW5nU3lzdGVtID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHNpZ25EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIHN0eWxlID0gSnMuc3RyaW5nIFwiZGVjaW1hbFwiXG5cbiAgICAgIHZhbCBtdXRhYmxlIHVuaXQgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdW5pdERpc3BsYXkgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgdXNlR3JvdXBpbmcgPSBKcy5fdHJ1ZVxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ01vZGUgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgcm91bmRpbmdQcmlvcml0eSA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSByb3VuZGluZ0luY3JlbWVudCA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSB0cmFpbGluZ1plcm9EaXNwbGF5ID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1JbnRlZ2VyRGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuXG4gICAgICB2YWwgbXV0YWJsZSBtYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBKcy51bmRlZmluZWRcblxuICAgICAgdmFsIG11dGFibGUgbWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gSnMudW5kZWZpbmVkXG5cbiAgICAgIHZhbCBtdXRhYmxlIG1heGltdW1TaWduaWZpY2FudERpZ2l0cyA9IEpzLnVuZGVmaW5lZFxuICAgIGVuZFxuXG4gIGNsYXNzIHR5cGUgZm9ybWF0X3BhcnQgPSBvYmplY3RcbiAgICBtZXRob2QgX3R5cGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgX3ZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2QgZm9ybWF0IDogKEpzLm51bWJlciBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50KSBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgZm9ybWF0VG9QYXJ0cyA6XG4gICAgICBKcy5udW1iZXIgSnMudCBKcy5vcHRkZWYgLT4gZm9ybWF0X3BhcnQgSnMudCBKcy5qc19hcnJheSBKcy50IEpzLm1ldGhcblxuICAgIG1ldGhvZCByZXNvbHZlZE9wdGlvbnMgOiB1bml0IC0+IHJlc29sdmVkX29wdGlvbnMgSnMudCBKcy5tZXRoXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBQbHVyYWxSdWxlcyA9IHN0cnVjdFxuICBpbmNsdWRlIFNoYXJlZFxuXG4gIGNsYXNzIHR5cGUgcmVzb2x2ZWRfb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgICBtZXRob2QgcGx1cmFsQ2F0ZWdvcmllcyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gICAgbWV0aG9kIG1pbmltdW1JbnRlZ2VyRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bUZyYWN0aW9uRGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWluaW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG5cbiAgICBtZXRob2QgbWF4aW11bVNpZ25pZmljYW50RGlnaXRzIDogaW50IEpzLm9wdGRlZl9wcm9wXG4gIGVuZFxuXG4gIGNsYXNzIHR5cGUgb3B0aW9ucyA9IG9iamVjdFxuICAgIG1ldGhvZCBsb2NhbGVNYXRjaGVyIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICAgbWV0aG9kIF90eXBlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBlbmRcblxuICBsZXQgb3B0aW9ucyAoKSA6IG9wdGlvbnMgSnMudCA9XG4gICAgb2JqZWN0JWpzXG4gICAgICB2YWwgbXV0YWJsZSBsb2NhbGVNYXRjaGVyID0gSnMuc3RyaW5nIFwiYmVzdCBmaXRcIlxuXG4gICAgICB2YWwgbXV0YWJsZSBfdHlwZSA9IEpzLnN0cmluZyBcImNhcmRpbmFsXCJcbiAgICBlbmRcblxuICBjbGFzcyB0eXBlIHQgPSBvYmplY3RcbiAgICBtZXRob2Qgc2VsZWN0IDogSnMubnVtYmVyIEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMubWV0aFxuXG4gICAgbWV0aG9kIHJlc29sdmVkT3B0aW9ucyA6IHVuaXQgLT4gcmVzb2x2ZWRfb3B0aW9ucyBKcy50IEpzLm1ldGhcbiAgZW5kXG5lbmRcblxuY2xhc3MgdHlwZSBpbnRsID0gb2JqZWN0XG4gIG1ldGhvZCBfQ29sbGF0b3IgOiBDb2xsYXRvci5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfRGF0ZVRpbWVGb3JtYXQgOiBEYXRlVGltZUZvcm1hdC5fb2JqZWN0IEpzLnQgSnMucmVhZG9ubHlfcHJvcFxuXG4gIG1ldGhvZCBfTnVtYmVyRm9ybWF0IDogTnVtYmVyRm9ybWF0Ll9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIF9QbHVyYWxSdWxlcyA6IFBsdXJhbFJ1bGVzLl9vYmplY3QgSnMudCBKcy5yZWFkb25seV9wcm9wXG5cbiAgbWV0aG9kIGdldENhbm9uaWNhbExvY2FsZXMgOlxuICAgIEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgLT4gSnMuanNfc3RyaW5nIEpzLnQgSnMuanNfYXJyYXkgSnMudCBKcy5tZXRoXG5lbmRcblxubGV0IGludGwgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX0ludGxcblxubGV0IGNvbGxhdG9yX2NvbnN0ciA9IEpzLlVuc2FmZS5nbG9iYWwjIy5fSW50bCMjLl9Db2xsYXRvclxuXG5sZXQgZGF0ZVRpbWVGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX0RhdGVUaW1lRm9ybWF0XG5cbmxldCBudW1iZXJGb3JtYXRfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX051bWJlckZvcm1hdFxuXG5sZXQgcGx1cmFsUnVsZXNfY29uc3RyID0gSnMuVW5zYWZlLmdsb2JhbCMjLl9JbnRsIyMuX1BsdXJhbFJ1bGVzXG5cbmxldCBpc19zdXBwb3J0ZWQgKCkgPSBKcy5PcHRkZWYudGVzdCBpbnRsXG4iLCJcbnR5cGUgdCA9IGludFxubGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxubGV0IGNvbXBhcmUgKHggOiBpbnQpICh5IDogaW50KSA9IGNvbXBhcmUgeCB5XG5sZXQgdG9faW50IHggPSB4XG5sZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5cbmxldCBpbnRlcnNlY3QgeCB5ID0geCBsYW5kIHkgPD4gMFxubGV0ICgrKykgeCB5ID0geCBsb3IgeVxuXG5sZXQgZHVtbXkgPSAtMVxubGV0IGluZXhpc3RhbnQgPSAxXG5sZXQgbGV0dGVyID0gMlxubGV0IG5vdF9sZXR0ZXIgPSA0XG5sZXQgbmV3bGluZSA9IDhcbmxldCBsYXN0bmV3bGluZSA9IDE2XG5sZXQgc2VhcmNoX2JvdW5kYXJ5ID0gMzJcblxubGV0IGZyb21fY2hhciA9IGZ1bmN0aW9uXG4gICgqIFNob3VsZCBtYXRjaCBbY3dvcmRdIGRlZmluaXRpb24gKilcbiAgfCAnYScuLid6JyB8ICdBJy4uJ1onIHwgJzAnLi4nOScgfCAnXycgfCAnXFwxNzAnIHwgJ1xcMTgxJyB8ICdcXDE4NidcbiAgfCAnXFwxOTInLi4nXFwyMTQnIHwgJ1xcMjE2Jy4uJ1xcMjQ2JyB8ICdcXDI0OCcuLidcXDI1NScgLT5cbiAgICBsZXR0ZXJcbiAgfCAnXFxuJyAtPlxuICAgIG5vdF9sZXR0ZXIgKysgbmV3bGluZVxuICB8IF8gLT5cbiAgICBub3RfbGV0dGVyXG4iLCIoKiogVmVyeSBzbWFsbCB0b29saW5nIGZvciBmb3JtYXQgcHJpbnRlcnMuICopXG5cbmluY2x1ZGUgRm9ybWF0XG5cbnR5cGUgJ2EgdCA9IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgLT4gdW5pdFxuXG5sZXQgbGlzdCA9IHBwX3ByaW50X2xpc3RcbmxldCBzdHIgPSBwcF9wcmludF9zdHJpbmdcbmxldCBzZXhwIGZtdCBzIHBwIHggPSBmcHJpbnRmIGZtdCBcIkBbPDM+KCVzQCAlYSlAXVwiIHMgcHAgeFxubGV0IHBhaXIgcHAxIHBwMiBmbXQgKHYxLHYyKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7IHBwMiBmbXQgdjJcbmxldCB0cmlwbGUgcHAxIHBwMiBwcDMgZm10ICh2MSwgdjIsIHYzKSA9XG4gIHBwMSBmbXQgdjE7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMiBmbXQgdjI7IHBwX3ByaW50X3NwYWNlIGZtdCAoKSA7XG4gIHBwMyBmbXQgdjNcbmxldCBpbnQgPSBwcF9wcmludF9pbnRcbmxldCBvcHRpbnQgZm10ID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpIC0+IGZwcmludGYgZm10IFwiQCAlZFwiIGlcblxubGV0IHF1b3RlIGZtdCBzID0gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIHNcblxubGV0IHBwX29saXN0IHBwX2VsZW0gZm10ID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mz5bQCAlYUAgXUBdXCJcbiAgICAocHBfcHJpbnRfbGlzdFxuICAgICAgIH5wcF9zZXA6KGZ1biBmbXQgKCkgLT4gZnByaW50ZiBmbXQgXCI7QCBcIilcbiAgICAgICBwcF9lbGVtKVxuXG5sZXQgcHBfc3RyX2xpc3QgPSBwcF9vbGlzdCBxdW90ZVxuXG5sZXQgdG9fdG9fc3RyaW5nIHBwIHggPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTYgaW5cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgcHAgZm10IHg7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG50eXBlIGMgPSBpbnRcbnR5cGUgdCA9IChjICogYykgbGlzdFxuXG5sZXQgcmVjIHVuaW9uIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gbFxuICB8IFtdLCBfIC0+IGwnXG4gIHwgKGMxLCBjMik6OnIsIChjMScsIGMyJyk6OnInIC0+XG4gICAgaWYgYzIgKyAxIDwgYzEnIHRoZW5cbiAgICAgIChjMSwgYzIpOjp1bmlvbiByIGwnXG4gICAgZWxzZSBpZiBjMicgKyAxIDwgYzEgdGhlblxuICAgICAgKGMxJywgYzInKTo6dW5pb24gbCByJ1xuICAgIGVsc2UgaWYgYzIgPCBjMicgdGhlblxuICAgICAgdW5pb24gciAoKG1pbiBjMSBjMScsIGMyJyk6OnInKVxuICAgIGVsc2VcbiAgICAgIHVuaW9uICgobWluIGMxIGMxJywgYzIpOjpyKSByJ1xuXG5sZXQgcmVjIGludGVyIGwgbCcgPVxuICBtYXRjaCBsLCBsJyB3aXRoXG4gICAgXywgW10gLT4gW11cbiAgfCBbXSwgXyAtPiBbXVxuICB8IChjMSwgYzIpOjpyLCAoYzEnLCBjMicpOjpyJyAtPlxuICAgIGlmIGMyIDwgYzEnIHRoZW5cbiAgICAgIGludGVyIHIgbCdcbiAgICBlbHNlIGlmIGMyJyA8IGMxIHRoZW5cbiAgICAgIGludGVyIGwgcidcbiAgICBlbHNlIGlmIGMyIDwgYzInIHRoZW5cbiAgICAgIChtYXggYzEgYzEnLCBjMik6OmludGVyIHIgbCdcbiAgICBlbHNlXG4gICAgICAobWF4IGMxIGMxJywgYzInKTo6aW50ZXIgbCByJ1xuXG5sZXQgcmVjIGRpZmYgbCBsJyA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgICBfLCBbXSAtPiBsXG4gIHwgW10sIF8gLT4gW11cbiAgfCAoYzEsIGMyKTo6ciwgKGMxJywgYzInKTo6cicgLT5cbiAgICBpZiBjMiA8IGMxJyB0aGVuXG4gICAgICAoYzEsIGMyKTo6ZGlmZiByIGwnXG4gICAgZWxzZSBpZiBjMicgPCBjMSB0aGVuXG4gICAgICBkaWZmIGwgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcicnID0gaWYgYzInIDwgYzIgdGhlbiAoYzInICsgMSwgYzIpIDo6IHIgZWxzZSByIGluXG4gICAgICBpZiBjMSA8IGMxJyB0aGVuXG4gICAgICAgIChjMSwgYzEnIC0gMSk6OmRpZmYgcicnIHInXG4gICAgICBlbHNlXG4gICAgICAgIGRpZmYgcicnIHInXG5cbmxldCBzaW5nbGUgYyA9IFtjLCBjXVxuXG5sZXQgYWRkIGMgbCA9IHVuaW9uIChzaW5nbGUgYykgbFxuXG5sZXQgc2VxIGMgYycgPSBpZiBjIDw9IGMnIHRoZW4gW2MsIGMnXSBlbHNlIFtjJywgY11cblxubGV0IHJlYyBvZmZzZXQgbyBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgICAgICAgICAtPiBbXVxuICB8IChjMSwgYzIpIDo6IHIgLT4gKGMxICsgbywgYzIgKyBvKSA6OiBvZmZzZXQgbyByXG5cbmxldCBlbXB0eSA9IFtdXG5cbmxldCByZWMgbWVtIChjIDogaW50KSBzID1cbiAgbWF0Y2ggcyB3aXRoXG4gICAgW10gICAgICAgICAgICAgIC0+IGZhbHNlXG4gIHwgKGMxLCBjMikgOjogcmVtIC0+IGlmIGMgPD0gYzIgdGhlbiBjID49IGMxIGVsc2UgbWVtIGMgcmVtXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcblxubGV0IHJlYyBoYXNoX3JlYyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgIC0+IDBcbiAgfCAoaSwgaik6OnIgLT4gaSArIDEzICogaiArIDI1NyAqIGhhc2hfcmVjIHJcbmxldCBoYXNoIGwgPSAoaGFzaF9yZWMgbCkgbGFuZCAweDNGRkZGRkZGXG5cbigqKioqKVxuXG5sZXQgcHJpbnRfb25lIGNoIChjMSwgYzIpID1cbiAgaWYgYzEgPSBjMiB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZFwiIGMxXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBjaCBcIiVkLSVkXCIgYzEgYzJcblxubGV0IHBwID0gRm10Lmxpc3QgcHJpbnRfb25lXG5cbmxldCByZWMgaXRlciB0IH5mID1cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCAoeCwgeSk6OnhzIC0+XG4gICAgZiB4IHk7XG4gICAgaXRlciB4cyAgfmZcblxubGV0IG9uZV9jaGFyID0gZnVuY3Rpb25cbiAgfCBbaSwgal0gd2hlbiBpID0gaiAtPiBTb21lIGlcbiAgfCBfIC0+IE5vbmVcblxuXG5tb2R1bGUgQ1NldE1hcCA9IE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBpbnQgKiAoaW50ICogaW50KSBsaXN0XG4gICAgbGV0IGNvbXBhcmUgKGksIHUpIChqLCB2KSA9XG4gICAgICBsZXQgYyA9IGNvbXBhcmUgaSBqIGluXG4gICAgICBpZiBjIDw+IDBcbiAgICAgIHRoZW4gY1xuICAgICAgZWxzZSBjb21wYXJlIHUgdlxuICBlbmQpXG5cbmxldCBmb2xkX3JpZ2h0IHQgfmluaXQgfmYgPSBMaXN0LmZvbGRfcmlnaHQgZiB0IGluaXRcblxubGV0IGNzaW5nbGUgYyA9IHNpbmdsZSAoQ2hhci5jb2RlIGMpXG5cbmxldCBjYW55ID0gWzAsIDI1NV1cblxubGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgXyAtPiBmYWxzZVxuXG5sZXQgcmVjIHByZXBlbmQgcyB4IGwgPVxuICBtYXRjaCBzLCBsIHdpdGhcbiAgfCBbXSwgXyAtPiBsXG4gIHwgX3IsIFtdIC0+IFtdXG4gIHwgKF9jLCBjJykgOjogciwgKFtkLCBfZCddLCBfeCcpIDo6IF9yJyB3aGVuIGMnIDwgZCAtPiBwcmVwZW5kIHIgeCBsXG4gIHwgKGMsIGMnKSA6OiByLCAoW2QsIGQnXSwgeCcpIDo6IHInIC0+XG4gICAgaWYgYyA8PSBkIHRoZW4gYmVnaW5cbiAgICAgIGlmIGMnIDwgZCdcbiAgICAgIHRoZW4gKFtkLCBjJ10sIHggQCB4JykgOjogcHJlcGVuZCByIHggKChbYycgKyAxLCBkJ10sIHgnKSA6OiByJylcbiAgICAgIGVsc2UgKFtkLCBkJ10sIHggQCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgaWYgYyA+IGQnXG4gICAgICB0aGVuIChbZCwgZCddLCB4JykgOjogcHJlcGVuZCBzIHggcidcbiAgICAgIGVsc2UgKFtkLCBjIC0gMV0sIHgnKSA6OiBwcmVwZW5kIHMgeCAoKFtjLCBkJ10sIHgnKSA6OiByJylcbiAgICBlbmRcbiAgfCBfIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcGljayA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gaW52YWxpZF9hcmcgXCJSZV9jc2V0LnBpY2tcIlxuICB8ICh4LCBfKTo6XyAtPiB4XG4iLCJcbm1vZHVsZSBQbWFyayA9IHN0cnVjdFxuICB0eXBlIHQgPSBpbnRcbiAgbGV0IGVxdWFsICh4IDogaW50KSAoeSA6IGludCkgPSB4ID0geVxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgKHkgOiBpbnQpID0gY29tcGFyZSB4IHlcbiAgbGV0IHIgPSByZWYgMFxuICBsZXQgZ2VuICgpID0gaW5jciByIDsgIXJcblxuICBsZXQgcHAgPSBGb3JtYXQucHBfcHJpbnRfaW50XG5lbmRcblxuaW5jbHVkZSBQbWFya1xubW9kdWxlIFNldCA9IFNldC5NYWtlKFBtYXJrKVxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxudHlwZSBzZW0gPSBbIGBMb25nZXN0IHwgYFNob3J0ZXN0IHwgYEZpcnN0IF1cblxudHlwZSByZXBfa2luZCA9IFsgYEdyZWVkeSB8IGBOb25fZ3JlZWR5IF1cblxudHlwZSBtYXJrID0gaW50XG50eXBlIGlkeCA9IGludFxuXG50eXBlIGV4cHIgPSB7IGlkIDogaW50OyBkZWYgOiBkZWYgfVxuXG5hbmQgZGVmID1cbiAgICBDc3Qgb2YgQ3NldC50XG4gIHwgQWx0IG9mIGV4cHIgbGlzdFxuICB8IFNlcSBvZiBzZW0gKiBleHByICogZXhwclxuICB8IEVwc1xuICB8IFJlcCBvZiByZXBfa2luZCAqIHNlbSAqIGV4cHJcbiAgfCBNYXJrIG9mIGludFxuICB8IEVyYXNlIG9mIGludCAqIGludFxuICB8IEJlZm9yZSBvZiBDYXRlZ29yeS50XG4gIHwgQWZ0ZXIgb2YgQ2F0ZWdvcnkudFxuICB8IFBtYXJrIG9mIFBtYXJrLnRcblxubGV0IGhhc2hfY29tYmluZSBoIGFjY3UgPSBhY2N1ICogNjU1OTkgKyBoXG5cbm1vZHVsZSBNYXJrcyA9IHN0cnVjdFxuICB0eXBlIHQgPVxuICAgIHsgbWFya3MgOiAoaW50ICogaW50KSBsaXN0XG4gICAgOyBwbWFya3MgOiBQbWFyay5TZXQudCB9XG5cbiAgbGV0IGVtcHR5ID0geyBtYXJrcyA9IFtdIDsgcG1hcmtzID0gUG1hcmsuU2V0LmVtcHR5IH1cblxuICBsZXQgcmVjIG1lcmdlX21hcmtzX29mZnNldCBvbGQgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIG9sZFxuICAgIHwgKGksIHYpIDo6IHJlbSAtPlxuICAgICAgbGV0IG53JyA9IG1lcmdlX21hcmtzX29mZnNldCAoTGlzdC5yZW1vdmVfYXNzcSBpIG9sZCkgcmVtIGluXG4gICAgICBpZiB2ID0gLTIgdGhlblxuICAgICAgICBudydcbiAgICAgIGVsc2VcbiAgICAgICAgKGksIHYpIDo6IG53J1xuXG4gIGxldCBtZXJnZSBvbGQgbncgPVxuICAgIHsgbWFya3MgPSBtZXJnZV9tYXJrc19vZmZzZXQgb2xkLm1hcmtzIG53Lm1hcmtzXG4gICAgOyBwbWFya3MgPSBQbWFyay5TZXQudW5pb24gb2xkLnBtYXJrcyBudy5wbWFya3MgfVxuXG4gIGxldCByZWMgaGFzaF9tYXJrc19vZmZzZXQgbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdICAgICAgICAgIC0+IGFjY3VcbiAgICB8IChhLCBpKSA6OiByIC0+IGhhc2hfbWFya3Nfb2Zmc2V0IHIgKGhhc2hfY29tYmluZSBhIChoYXNoX2NvbWJpbmUgaSBhY2N1KSlcblxuICBsZXQgaGFzaCBtIGFjY3UgPVxuICAgIGhhc2hfbWFya3Nfb2Zmc2V0IG0ubWFya3MgKGhhc2hfY29tYmluZSAoSGFzaHRibC5oYXNoIG0ucG1hcmtzKSBhY2N1KVxuXG4gIGxldCByZWMgbWFya3Nfc2V0X2lkeCBpZHggPSBmdW5jdGlvblxuICAgIHwgKGEsIC0xKSA6OiByZW0gLT5cbiAgICAgIChhLCBpZHgpIDo6IG1hcmtzX3NldF9pZHggaWR4IHJlbVxuICAgIHwgbWFya3MgLT5cbiAgICAgIG1hcmtzXG5cbiAgbGV0IG1hcmtzX3NldF9pZHggbWFya3MgaWR4ID1cbiAgICB7IG1hcmtzIHdpdGggbWFya3MgPSBtYXJrc19zZXRfaWR4IGlkeCBtYXJrcy5tYXJrcyB9XG5cbiAgbGV0IHBwX21hcmtzIGNoIHQgPVxuICAgIG1hdGNoIHQubWFya3Mgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgICgpXG4gICAgfCAoYSwgaSkgOjogciAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIlZC0lZFwiIGEgaTtcbiAgICAgIExpc3QuaXRlciAoZnVuIChhLCBpKSAtPiBGb3JtYXQuZnByaW50ZiBjaCBcIiAlZC0lZFwiIGEgaSkgclxuZW5kXG5cbigqKioqKVxuXG5sZXQgcHBfc2VtIGNoIGsgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGNoXG4gICAgKG1hdGNoIGsgd2l0aFxuICAgICAgIGBTaG9ydGVzdCAtPiBcInNob3J0XCJcbiAgICAgfCBgTG9uZ2VzdCAgLT4gXCJsb25nXCJcbiAgICAgfCBgRmlyc3QgICAgLT4gXCJmaXJzdFwiKVxuXG5cbmxldCBwcF9yZXBfa2luZCBmbXQgPSBmdW5jdGlvblxuICB8IGBHcmVlZHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJHcmVlZHlcIlxuICB8IGBOb25fZ3JlZWR5IC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uX2dyZWVkeVwiXG5cbmxldCByZWMgcHAgY2ggZSA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBtYXRjaCBlLmRlZiB3aXRoXG4gICAgQ3N0IGwgLT5cbiAgICBzZXhwIGNoIFwiY3N0XCIgQ3NldC5wcCBsO1xuICB8IEFsdCBsIC0+XG4gICAgc2V4cCBjaCBcImFsdFwiIChsaXN0IHBwKSBsXG4gIHwgU2VxIChrLCBlLCBlJykgLT5cbiAgICBzZXhwIGNoIFwic2VxXCIgKHRyaXBsZSBwcF9zZW0gcHAgcHApIChrLCBlLCBlJylcbiAgfCBFcHMgLT5cbiAgICBzdHIgY2ggXCJlcHNcIlxuICB8IFJlcCAoX3JrLCBrLCBlKSAtPlxuICAgIHNleHAgY2ggXCJyZXBcIiAocGFpciBwcF9zZW0gcHApIChrLCBlKVxuICB8IE1hcmsgaSAtPlxuICAgIHNleHAgY2ggXCJtYXJrXCIgaW50IGlcbiAgfCBQbWFyayBpIC0+XG4gICAgc2V4cCBjaCBcInBtYXJrXCIgaW50IChpIDo+IGludClcbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBzZXhwIGNoIFwiZXJhc2VcIiAocGFpciBpbnQgaW50KSAoYiwgZSlcbiAgfCBCZWZvcmUgYyAtPlxuICAgIHNleHAgY2ggXCJiZWZvcmVcIiBDYXRlZ29yeS5wcCBjXG4gIHwgQWZ0ZXIgYyAtPlxuICAgIHNleHAgY2ggXCJhZnRlclwiIENhdGVnb3J5LnBwIGNcblxuXG4oKioqKilcblxubGV0IHJlYyBmaXJzdCBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIE5vbmVcbiAgfCB4IDo6IHIgLT5cbiAgICBtYXRjaCBmIHggd2l0aFxuICAgICAgTm9uZSAgICAgICAgICAtPiBmaXJzdCBmIHJcbiAgICB8IFNvbWUgXyBhcyByZXMgLT4gcmVzXG5cbigqKioqKVxuXG50eXBlIGlkcyA9IGludCByZWZcbmxldCBjcmVhdGVfaWRzICgpID0gcmVmIDBcblxubGV0IGVwc19leHByID0geyBpZCA9IDA7IGRlZiA9IEVwcyB9XG5cbmxldCBta19leHByIGlkcyBkZWYgPVxuICBpbmNyIGlkcztcbiAgeyBpZCA9ICFpZHM7IGRlZiA9IGRlZiB9XG5cbmxldCBlbXB0eSBpZHMgPSBta19leHByIGlkcyAoQWx0IFtdKVxuXG5sZXQgY3N0IGlkcyBzID1cbiAgaWYgQ3NldC5pc19lbXB0eSBzXG4gIHRoZW4gZW1wdHkgaWRzXG4gIGVsc2UgbWtfZXhwciBpZHMgKENzdCBzKVxuXG5sZXQgYWx0IGlkcyA9IGZ1bmN0aW9uXG4gIHwgW10gIC0+IGVtcHR5IGlkc1xuICB8IFtjXSAtPiBjXG4gIHwgbCAgIC0+IG1rX2V4cHIgaWRzIChBbHQgbClcblxubGV0IHNlcSBpZHMga2luZCB4IHkgPVxuICBtYXRjaCB4LmRlZiwgeS5kZWYgd2l0aFxuICAgIEFsdCBbXSwgXyAgICAgICAgICAgICAgICAgLT4geFxuICB8IF8sIEFsdCBbXSAgICAgICAgICAgICAgICAgLT4geVxuICB8IEVwcywgXyAgICAgICAgICAgICAgICAgICAgLT4geVxuICB8IF8sIEVwcyB3aGVuIGtpbmQgPSBgRmlyc3QgLT4geFxuICB8IF8gICAgICAgICAgICAgICAgICAgICAgICAgLT4gbWtfZXhwciBpZHMgKFNlcSAoa2luZCwgeCwgeSkpXG5cbmxldCBpc19lcHMgZXhwciA9XG4gIG1hdGNoIGV4cHIuZGVmIHdpdGhcbiAgfCBFcHMgLT4gdHJ1ZVxuICB8IF8gLT4gZmFsc2VcblxubGV0IGVwcyBpZHMgPSBta19leHByIGlkcyBFcHNcblxubGV0IHJlcCBpZHMga2luZCBzZW0geCA9IG1rX2V4cHIgaWRzIChSZXAgKGtpbmQsIHNlbSwgeCkpXG5cbmxldCBtYXJrIGlkcyBtID0gbWtfZXhwciBpZHMgKE1hcmsgbSlcblxubGV0IHBtYXJrIGlkcyBpID0gbWtfZXhwciBpZHMgKFBtYXJrIGkpXG5cbmxldCBlcmFzZSBpZHMgbSBtJyA9IG1rX2V4cHIgaWRzIChFcmFzZSAobSwgbScpKVxuXG5sZXQgYmVmb3JlIGlkcyBjID0gbWtfZXhwciBpZHMgKEJlZm9yZSBjKVxuXG5sZXQgYWZ0ZXIgaWRzIGMgPSBta19leHByIGlkcyAoQWZ0ZXIgYylcblxuKCoqKiopXG5cbmxldCByZWMgcmVuYW1lIGlkcyB4ID1cbiAgbWF0Y2ggeC5kZWYgd2l0aFxuICAgIENzdCBfIHwgRXBzIHwgTWFyayBfIHwgUG1hcmsgXyB8IEVyYXNlIF8gfCBCZWZvcmUgXyB8IEFmdGVyIF8gLT5cbiAgICBta19leHByIGlkcyB4LmRlZlxuICB8IEFsdCBsIC0+XG4gICAgbWtfZXhwciBpZHMgKEFsdCAoTGlzdC5tYXAgKHJlbmFtZSBpZHMpIGwpKVxuICB8IFNlcSAoaywgeSwgeikgLT5cbiAgICBta19leHByIGlkcyAoU2VxIChrLCByZW5hbWUgaWRzIHksIHJlbmFtZSBpZHMgeikpXG4gIHwgUmVwIChnLCBrLCB5KSAtPlxuICAgIG1rX2V4cHIgaWRzIChSZXAgKGcsIGssIHJlbmFtZSBpZHMgeSkpXG5cbigqKioqKVxuXG50eXBlIGhhc2ggPSBpbnRcbnR5cGUgbWFya19pbmZvcyA9IGludCBhcnJheVxudHlwZSBzdGF0dXMgPSBGYWlsZWQgfCBNYXRjaCBvZiBtYXJrX2luZm9zICogUG1hcmsuU2V0LnQgfCBSdW5uaW5nXG5cbm1vZHVsZSBFID0gc3RydWN0XG4gIHR5cGUgdCA9XG4gICAgfCBUU2VxIG9mIHQgbGlzdCAqIGV4cHIgKiBzZW1cbiAgICB8IFRFeHAgb2YgTWFya3MudCAqIGV4cHJcbiAgICB8IFRNYXRjaCBvZiBNYXJrcy50XG5cbiAgbGV0IHJlYyBlcXVhbCBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgVFNlcSAobDEnLCBlMSwgXykgOjogcjEsIFRTZXEgKGwyJywgZTIsIF8pIDo6IHIyIC0+XG4gICAgICBlMS5pZCA9IGUyLmlkICYmIGVxdWFsIGwxJyBsMicgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRFeHAgKG1hcmtzMSwgZTEpIDo6IHIxLCBURXhwIChtYXJrczIsIGUyKSA6OiByMiAtPlxuICAgICAgZTEuaWQgPSBlMi5pZCAmJiBtYXJrczEgPSBtYXJrczIgJiYgZXF1YWwgcjEgcjJcbiAgICB8IFRNYXRjaCBtYXJrczEgOjogcjEsIFRNYXRjaCBtYXJrczIgOjogcjIgLT5cbiAgICAgIG1hcmtzMSA9IG1hcmtzMiAmJiBlcXVhbCByMSByMlxuICAgIHwgXyAtPlxuICAgICAgZmFsc2VcblxuICBsZXQgcmVjIGhhc2ggbCBhY2N1ID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhY2N1XG4gICAgfCBUU2VxIChsJywgZSwgXykgOjogciAtPlxuICAgICAgaGFzaCByIChoYXNoX2NvbWJpbmUgMHgxNzJhMWJjZSAoaGFzaF9jb21iaW5lIGUuaWQgKGhhc2ggbCcgYWNjdSkpKVxuICAgIHwgVEV4cCAobWFya3MsIGUpIDo6IHIgLT5cbiAgICAgIGhhc2ggclxuICAgICAgICAoaGFzaF9jb21iaW5lIDB4MmI0YzBkNzcgKGhhc2hfY29tYmluZSBlLmlkIChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKSlcbiAgICB8IFRNYXRjaCBtYXJrcyA6OiByIC0+XG4gICAgICBoYXNoIHIgKGhhc2hfY29tYmluZSAweDFjMjA1YWQ1IChNYXJrcy5oYXNoIG1hcmtzIGFjY3UpKVxuXG4gIGxldCB0ZXhwIG1hcmtzIHggPSBURXhwIChtYXJrcywgeClcblxuICBsZXQgdHNlcSBraW5kIHggeSByZW0gPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiByZW1cbiAgICB8IFtURXhwIChtYXJrcywge2RlZiA9IEVwcyA7IF99KV0gLT4gVEV4cCAobWFya3MsIHkpIDo6IHJlbVxuICAgIHwgXyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPiBUU2VxICh4LCB5LCBraW5kKSA6OiByZW1cblxuICBsZXQgcmVjIHByaW50X3N0YXRlX3JlYyBjaCBlIHkgPVxuICAgIG1hdGNoIGUgd2l0aFxuICAgIHwgVE1hdGNoIG1hcmtzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KE1hdGNoQCAlYSlAXVwiIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBUU2VxIChsJywgeCwgX2tpbmQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBjaCBcIkBbPDI+KFNlcUAgXCI7XG4gICAgICBwcmludF9zdGF0ZV9sc3QgY2ggbCcgeDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQCAlYSlAXVwiIHBwIHhcbiAgICB8IFRFeHAgKG1hcmtzLCB7ZGVmID0gRXBzOyBffSkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgKGVwcykpQF1cIiB5LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzXG4gICAgfCBURXhwIChtYXJrcywgeCkgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGNoIFwiQFs8Mj4oRXhwQCAlZEAgKCVhKUAgJWEpQF1cIiB4LmlkIE1hcmtzLnBwX21hcmtzIG1hcmtzIHBwIHhcblxuICBhbmQgcHJpbnRfc3RhdGVfbHN0IGNoIGwgeSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCIoKVwiXG4gICAgfCBlIDo6IHJlbSAtPlxuICAgICAgcHJpbnRfc3RhdGVfcmVjIGNoIGUgeTtcbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGUgLT5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgY2ggXCJAIHwgXCI7XG4gICAgICAgICAgIHByaW50X3N0YXRlX3JlYyBjaCBlIHkpXG4gICAgICAgIHJlbVxuXG4gIGxldCBwcCBjaCB0ID0gcHJpbnRfc3RhdGVfbHN0IGNoIFt0XSB7IGlkID0gMDsgZGVmID0gRXBzIH1cbmVuZFxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID1cbiAgICB7IGlkeDogaWR4XG4gICAgOyBjYXRlZ29yeTogQ2F0ZWdvcnkudFxuICAgIDsgZGVzYzogRS50IGxpc3RcbiAgICA7IG11dGFibGUgc3RhdHVzOiBzdGF0dXMgb3B0aW9uXG4gICAgOyBoYXNoOiBoYXNoIH1cblxuICBsZXQgZHVtbXkgPVxuICAgIHsgaWR4ID0gLTFcbiAgICA7IGNhdGVnb3J5ID0gQ2F0ZWdvcnkuZHVtbXlcbiAgICA7IGRlc2MgPSBbXVxuICAgIDsgc3RhdHVzID0gTm9uZVxuICAgIDsgaGFzaCA9IC0xIH1cblxuICBsZXQgaGFzaCBpZHggY2F0IGRlc2MgPVxuICAgIEUuaGFzaCBkZXNjIChoYXNoX2NvbWJpbmUgaWR4IChoYXNoX2NvbWJpbmUgKENhdGVnb3J5LnRvX2ludCBjYXQpIDApKSBsYW5kIDB4M0ZGRkZGRkZcblxuICBsZXQgbWsgaWR4IGNhdCBkZXNjID1cbiAgICB7IGlkeFxuICAgIDsgY2F0ZWdvcnkgPSBjYXRcbiAgICA7IGRlc2NcbiAgICA7IHN0YXR1cyA9IE5vbmVcbiAgICA7IGhhc2ggPSBoYXNoIGlkeCBjYXQgZGVzY31cblxuICBsZXQgY3JlYXRlIGNhdCBlID0gbWsgMCBjYXQgW0UuVEV4cCAoTWFya3MuZW1wdHksIGUpXVxuXG4gIGxldCBlcXVhbCB4IHkgPVxuICAgICh4Lmhhc2ggOiBpbnQpID0geS5oYXNoICYmICh4LmlkeCA6IGludCkgPSB5LmlkeCAmJlxuICAgIENhdGVnb3J5LmVxdWFsIHguY2F0ZWdvcnkgeS5jYXRlZ29yeSAmJiBFLmVxdWFsIHguZGVzYyB5LmRlc2NcblxuICBsZXQgY29tcGFyZSB4IHkgPVxuICAgIGxldCBjID0gY29tcGFyZSAoeC5oYXNoIDogaW50KSB5Lmhhc2ggaW5cbiAgICBpZiBjIDw+IDAgdGhlbiBjIGVsc2VcbiAgICAgIGxldCBjID0gQ2F0ZWdvcnkuY29tcGFyZSB4LmNhdGVnb3J5IHkuY2F0ZWdvcnkgaW5cbiAgICAgIGlmIGMgPD4gMCB0aGVuIGMgZWxzZVxuICAgICAgICBjb21wYXJlIHguZGVzYyB5LmRlc2NcblxuICB0eXBlIHQnID0gdFxuICBtb2R1bGUgVGFibGUgPSBIYXNodGJsLk1ha2UoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSB0J1xuICAgICAgbGV0IGVxdWFsID0gZXF1YWxcbiAgICAgIGxldCBoYXNoIHQgPSB0Lmhhc2hcbiAgICBlbmQpXG5lbmRcblxuKCoqKiogRmluZCBhIGZyZWUgaW5kZXggKioqKilcblxudHlwZSB3b3JraW5nX2FyZWEgPSBib29sIGFycmF5IHJlZlxuXG5sZXQgY3JlYXRlX3dvcmtpbmdfYXJlYSAoKSA9IHJlZiBbfCBmYWxzZSB8XVxuXG5sZXQgaW5kZXhfY291bnQgdyA9IEFycmF5Lmxlbmd0aCAhd1xuXG5sZXQgcmVzZXRfdGFibGUgYSA9IEFycmF5LmZpbGwgYSAwIChBcnJheS5sZW5ndGggYSkgZmFsc2VcblxubGV0IHJlYyBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgPVxuICBMaXN0Lml0ZXIgKGZ1bmN0aW9uXG4gICAgICB8IEUuVFNlcSAobCwgXywgXykgLT4gbWFya191c2VkX2luZGljZXMgdGJsIGxcbiAgICAgIHwgRS5URXhwIChtYXJrcywgXylcbiAgICAgIHwgRS5UTWF0Y2ggbWFya3MgLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKF8sIGkpIC0+IGlmIGkgPj0gMCB0aGVuIHRibC4oaSkgPC0gdHJ1ZSlcbiAgICAgICAgICBtYXJrcy5NYXJrcy5tYXJrcylcblxubGV0IHJlYyBmaW5kX2ZyZWUgdGJsIGlkeCBsZW4gPVxuICBpZiBpZHggPSBsZW4gfHwgbm90IHRibC4oaWR4KSB0aGVuIGlkeCBlbHNlIGZpbmRfZnJlZSB0YmwgKGlkeCArIDEpIGxlblxuXG5sZXQgZnJlZV9pbmRleCB0YmxfcmVmIGwgPVxuICBsZXQgdGJsID0gIXRibF9yZWYgaW5cbiAgcmVzZXRfdGFibGUgdGJsO1xuICBtYXJrX3VzZWRfaW5kaWNlcyB0YmwgbDtcbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCB0YmwgaW5cbiAgbGV0IGlkeCA9IGZpbmRfZnJlZSB0YmwgMCBsZW4gaW5cbiAgaWYgaWR4ID0gbGVuIHRoZW4gdGJsX3JlZiA6PSBBcnJheS5tYWtlICgyICogbGVuKSBmYWxzZTtcbiAgaWR4XG5cbigqKioqIENvbXB1dGF0aW9uIG9mIHRoZSBuZXh0IHN0YXRlICoqKiopXG5cbmxldCByZW1vdmVfbWF0Y2hlcyA9IExpc3QuZmlsdGVyIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IGZhbHNlIHwgXyAtPiB0cnVlKVxuXG5sZXQgcmVjIHNwbGl0X2F0X21hdGNoX3JlYyBsJyA9IGZ1bmN0aW9uXG4gIHwgW10gICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgfCBFLlRNYXRjaCBfIDo6IHIgLT4gKExpc3QucmV2IGwnLCByZW1vdmVfbWF0Y2hlcyByKVxuICB8IHggOjogciAgICAgICAgLT4gc3BsaXRfYXRfbWF0Y2hfcmVjICh4IDo6IGwnKSByXG5cbmxldCBzcGxpdF9hdF9tYXRjaCBsID0gc3BsaXRfYXRfbWF0Y2hfcmVjIFtdIGxcblxubGV0IHJlYyByZW1vdmVfZHVwbGljYXRlcyBwcmV2IGwgeSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdIC0+XG4gICAgKFtdLCBwcmV2KVxuICB8IEUuVE1hdGNoIF8gYXMgeCA6OiBfIC0+ICgqIFRydW5jYXRlIGFmdGVyIGZpcnN0IG1hdGNoICopXG4gICAgKFt4XSwgcHJldilcbiAgfCBFLlRTZXEgKGwnLCB4LCBraW5kKSA6OiByIC0+XG4gICAgbGV0IChsJycsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzIHByZXYgbCcgeCBpblxuICAgIGxldCAocicsIHByZXYnJykgPSByZW1vdmVfZHVwbGljYXRlcyBwcmV2JyByIHkgaW5cbiAgICAoRS50c2VxIGtpbmQgbCcnIHggcicsIHByZXYnJylcbiAgfCBFLlRFeHAgKF9tYXJrcywge2RlZiA9IEVwczsgX30pIGFzIGUgOjogciAtPlxuICAgIGlmIExpc3QubWVtcSB5LmlkIHByZXYgdGhlblxuICAgICAgcmVtb3ZlX2R1cGxpY2F0ZXMgcHJldiByIHlcbiAgICBlbHNlXG4gICAgICBsZXQgKHInLCBwcmV2JykgPSByZW1vdmVfZHVwbGljYXRlcyAoeS5pZCA6OiBwcmV2KSByIHkgaW5cbiAgICAgIChlIDo6IHInLCBwcmV2JylcbiAgfCBFLlRFeHAgKF9tYXJrcywgeCkgYXMgZSA6OiByIC0+XG4gICAgaWYgTGlzdC5tZW1xIHguaWQgcHJldiB0aGVuXG4gICAgICByZW1vdmVfZHVwbGljYXRlcyBwcmV2IHIgeVxuICAgIGVsc2VcbiAgICAgIGxldCAocicsIHByZXYnKSA9IHJlbW92ZV9kdXBsaWNhdGVzICh4LmlkIDo6IHByZXYpIHIgeSBpblxuICAgICAgKGUgOjogcicsIHByZXYnKVxuXG5sZXQgcmVjIHNldF9pZHggaWR4ID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgRS5UTWF0Y2ggbWFya3MgOjogciAtPlxuICAgIEUuVE1hdGNoIChNYXJrcy5tYXJrc19zZXRfaWR4IG1hcmtzIGlkeCkgOjogc2V0X2lkeCBpZHggclxuICB8IEUuVFNlcSAobCcsIHgsIGtpbmQpIDo6IHIgLT5cbiAgICBFLlRTZXEgKHNldF9pZHggaWR4IGwnLCB4LCBraW5kKSA6OiBzZXRfaWR4IGlkeCByXG4gIHwgRS5URXhwIChtYXJrcywgeCkgOjogciAtPlxuICAgIEUuVEV4cCAoKE1hcmtzLm1hcmtzX3NldF9pZHggbWFya3MgaWR4KSwgeCkgOjogc2V0X2lkeCBpZHggclxuXG5sZXQgZmlsdGVyX21hcmtzIGIgZSBtYXJrcyA9XG4gIHttYXJrcyB3aXRoIE1hcmtzLm1hcmtzID0gTGlzdC5maWx0ZXIgKGZ1biAoaSwgXykgLT4gaSA8IGIgfHwgaSA+IGUpIG1hcmtzLk1hcmtzLm1hcmtzIH1cblxubGV0IHJlYyBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB4IHJlbSA9XG4gICgqRm9ybWF0LmVwcmludGYgXCIlZEAuXCIgeC5pZDsqKVxuICBtYXRjaCB4LmRlZiB3aXRoXG4gICAgQ3N0IHMgLT5cbiAgICBpZiBDc2V0Lm1lbSBjIHMgdGhlbiBFLnRleHAgbWFya3MgZXBzX2V4cHIgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWx0IGwgLT5cbiAgICBkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbVxuICB8IFNlcSAoa2luZCwgeSwgeikgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgZGVsdGFfc2VxIGMgfm5leHRfY2F0IH5wcmV2X2NhdCBraW5kIHknIHogcmVtXG4gIHwgUmVwIChyZXBfa2luZCwga2luZCwgeSkgLT5cbiAgICBsZXQgeScgPSBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5IFtdIGluXG4gICAgbGV0ICh5JycsIG1hcmtzJykgPVxuICAgICAgbWF0Y2hcbiAgICAgICAgZmlyc3RcbiAgICAgICAgICAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeSdcbiAgICAgIHdpdGhcbiAgICAgICAgTm9uZSAgICAgICAgLT4gKHknLCBtYXJrcylcbiAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHknLCBtYXJrcycpXG4gICAgaW5cbiAgICBiZWdpbiBtYXRjaCByZXBfa2luZCB3aXRoXG4gICAgICAgIGBHcmVlZHkgICAgIC0+IEUudHNlcSBraW5kIHknJyB4IChFLlRNYXRjaCBtYXJrcycgOjogcmVtKVxuICAgICAgfCBgTm9uX2dyZWVkeSAtPiBFLlRNYXRjaCBtYXJrcyA6OiBFLnRzZXEga2luZCB5JycgeCByZW1cbiAgICBlbmRcbiAgfCBFcHMgLT5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBsZXQgbWFya3MgPSB7IG1hcmtzIHdpdGggTWFya3MubWFya3MgPSAoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyB9IGluXG4gICAgRS5UTWF0Y2ggbWFya3MgOjogcmVtXG4gIHwgUG1hcmsgaSAtPlxuICAgIGxldCBtYXJrcyA9IHsgbWFya3Mgd2l0aCBNYXJrcy5wbWFya3MgPSBQbWFyay5TZXQuYWRkIGkgbWFya3MuTWFya3MucG1hcmtzIH0gaW5cbiAgICBFLlRNYXRjaCBtYXJrcyA6OiByZW1cbiAgfCBFcmFzZSAoYiwgZSkgLT5cbiAgICBFLlRNYXRjaCAoZmlsdGVyX21hcmtzIGIgZSBtYXJrcykgOjogcmVtXG4gIHwgQmVmb3JlIGNhdCcnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IG5leHRfY2F0IGNhdCcnIHRoZW4gRS5UTWF0Y2ggbWFya3MgOjogcmVtIGVsc2UgcmVtXG4gIHwgQWZ0ZXIgY2F0JycgLT5cbiAgICBpZiBDYXRlZ29yeS5pbnRlcnNlY3QgcHJldl9jYXQgY2F0JycgdGhlbiBFLlRNYXRjaCBtYXJrcyA6OiByZW0gZWxzZSByZW1cblxuYW5kIGRlbHRhXzIgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGwgcmVtID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgW10gICAgIC0+IHJlbVxuICB8IHkgOjogciAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHlcbiAgICAgIChkZWx0YV8yIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCByIHJlbSlcblxuYW5kIGRlbHRhX3NlcSBjIH5uZXh0X2NhdCB+cHJldl9jYXQga2luZCB5IHogcmVtID1cbiAgbWF0Y2hcbiAgICBmaXJzdCAoZnVuY3Rpb24gRS5UTWF0Y2ggbWFya3MgLT4gU29tZSBtYXJrcyB8IF8gLT4gTm9uZSkgeVxuICB3aXRoXG4gICAgTm9uZSAtPlxuICAgIEUudHNlcSBraW5kIHkgeiByZW1cbiAgfCBTb21lIG1hcmtzIC0+XG4gICAgbWF0Y2gga2luZCB3aXRoXG4gICAgICBgTG9uZ2VzdCAtPlxuICAgICAgRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHpcbiAgICAgICAgKGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHogcmVtKVxuICAgIHwgYFNob3J0ZXN0IC0+XG4gICAgICBkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6XG4gICAgICAgIChFLnRzZXEga2luZCAocmVtb3ZlX21hdGNoZXMgeSkgeiByZW0pXG4gICAgfCBgRmlyc3QgLT5cbiAgICAgIGxldCAoeScsIHknJykgPSBzcGxpdF9hdF9tYXRjaCB5IGluXG4gICAgICBFLnRzZXEga2luZCB5JyB6XG4gICAgICAgIChkZWx0YV8xIG1hcmtzIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB6IChFLnRzZXEga2luZCB5JycgeiByZW0pKVxuXG5sZXQgcmVjIGRlbHRhXzMgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlbHRhXzQgYyB+bmV4dF9jYXQgfnByZXZfY2F0IHkgW10gaW5cbiAgICBkZWx0YV9zZXEgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlbHRhXzEgbWFya3MgYyB+bmV4dF9jYXQgfnByZXZfY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIHggOjogcmVtXG5cbmFuZCBkZWx0YV80IGMgfm5leHRfY2F0IH5wcmV2X2NhdCBsIHJlbSA9XG4gIG1hdGNoIGwgd2l0aFxuICAgIFtdICAgICAtPiByZW1cbiAgfCB5IDo6IHIgLT5cbiAgICBkZWx0YV8zIGMgfm5leHRfY2F0IH5wcmV2X2NhdCB5XG4gICAgICAoZGVsdGFfNCBjIH5uZXh0X2NhdCB+cHJldl9jYXQgciByZW0pXG5cbmxldCBkZWx0YSB0YmxfcmVmIG5leHRfY2F0IGNoYXIgc3QgPVxuICBsZXQgcHJldl9jYXQgPSBzdC5TdGF0ZS5jYXRlZ29yeSBpblxuICBsZXQgKGV4cHInLCBfKSA9XG4gICAgcmVtb3ZlX2R1cGxpY2F0ZXMgW11cbiAgICAgIChkZWx0YV80IGNoYXIgfm5leHRfY2F0IH5wcmV2X2NhdCBzdC5TdGF0ZS5kZXNjIFtdKVxuICAgICAgZXBzX2V4cHIgaW5cbiAgbGV0IGlkeCA9IGZyZWVfaW5kZXggdGJsX3JlZiBleHByJyBpblxuICBsZXQgZXhwcicnID0gc2V0X2lkeCBpZHggZXhwcicgaW5cbiAgU3RhdGUubWsgaWR4IG5leHRfY2F0IGV4cHInJ1xuXG4oKioqKilcblxubGV0IHJlYyByZWRfdHIgPSBmdW5jdGlvblxuICB8IFtdIHwgW19dIGFzIGwgLT5cbiAgICBsXG4gIHwgKChzMSwgc3QxKSBhcyB0cjEpIDo6ICgoczIsIHN0MikgYXMgdHIyKSA6OiByZW0gLT5cbiAgICBpZiBTdGF0ZS5lcXVhbCBzdDEgc3QyIHRoZW5cbiAgICAgIHJlZF90ciAoKENzZXQudW5pb24gczEgczIsIHN0MSkgOjogcmVtKVxuICAgIGVsc2VcbiAgICAgIHRyMSA6OiByZWRfdHIgKHRyMiA6OiByZW0pXG5cbmxldCBzaW1wbF90ciBsID1cbiAgTGlzdC5zb3J0XG4gICAgKGZ1biAoczEsIF8pIChzMiwgXykgLT4gY29tcGFyZSBzMSBzMilcbiAgICAocmVkX3RyIChMaXN0LnNvcnQgKGZ1biAoXywgc3QxKSAoXywgc3QyKSAtPiBTdGF0ZS5jb21wYXJlIHN0MSBzdDIpIGwpKVxuXG4oKioqKilcblxubGV0IHByZXBlbmRfZGVyaXYgPSBMaXN0LmZvbGRfcmlnaHQgKGZ1biAocywgeCkgbCAtPiBDc2V0LnByZXBlbmQgcyB4IGwpXG5cbmxldCByZWMgcmVzdHJpY3QgcyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gW11cbiAgfCAocycsIHgnKSA6OiByZW0gLT5cbiAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgaWYgQ3NldC5pc19lbXB0eSBzJydcbiAgICB0aGVuIHJlc3RyaWN0IHMgcmVtXG4gICAgZWxzZSAocycnLCB4JykgOjogcmVzdHJpY3QgcyByZW1cblxubGV0IHJlYyByZW1vdmVfbWFya3MgYiBlIHJlbSA9XG4gIGlmIGIgPiBlIHRoZW4gcmVtIGVsc2UgcmVtb3ZlX21hcmtzIGIgKGUgLSAxKSAoKGUsIC0yKSA6OiByZW0pXG5cbmxldCByZWMgcHJlcGVuZF9tYXJrc19leHByIG0gPSBmdW5jdGlvblxuICB8IEUuVFNlcSAobCwgZScsIHMpIC0+IEUuVFNlcSAocHJlcGVuZF9tYXJrc19leHByX2xzdCBtIGwsIGUnLCBzKVxuICB8IEUuVEV4cCAobScsIGUnKSAgIC0+IEUuVEV4cCAoTWFya3MubWVyZ2UgbSBtJywgZScpXG4gIHwgRS5UTWF0Y2ggbScgICAgICAgLT4gRS5UTWF0Y2ggKE1hcmtzLm1lcmdlIG0gbScpXG5cbmFuZCBwcmVwZW5kX21hcmtzX2V4cHJfbHN0IG0gbCA9XG4gIExpc3QubWFwIChwcmVwZW5kX21hcmtzX2V4cHIgbSkgbFxuXG5sZXQgcHJlcGVuZF9tYXJrcyBtID1cbiAgTGlzdC5tYXAgKGZ1biAocywgeCkgLT4gKHMsIHByZXBlbmRfbWFya3NfZXhwcl9sc3QgbSB4KSlcblxubGV0IHJlYyBkZXJpdl8xIGFsbF9jaGFycyBjYXRlZ29yaWVzIG1hcmtzIGNhdCB4IHJlbSA9XG4gIG1hdGNoIHguZGVmIHdpdGhcbiAgfCBDc3QgcyAtPlxuICAgIENzZXQucHJlcGVuZCBzIFtFLnRleHAgbWFya3MgZXBzX2V4cHJdIHJlbVxuICB8IEFsdCBsIC0+XG4gICAgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW1cbiAgfCBTZXEgKGtpbmQsIHksIHopIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIGRlcml2X3NlcSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQga2luZCB5JyB6IHJlbVxuICB8IFJlcCAocmVwX2tpbmQsIGtpbmQsIHkpIC0+XG4gICAgbGV0IHknID0gZGVyaXZfMSBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgeSBbKGFsbF9jaGFycywgW10pXSBpblxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeikgcmVtIC0+XG4gICAgICAgICBsZXQgKHonLCBtYXJrcycpID1cbiAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICBmaXJzdFxuICAgICAgICAgICAgICAgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgICB6XG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICBOb25lICAgICAgICAtPiAoeiwgbWFya3MpXG4gICAgICAgICAgIHwgU29tZSBtYXJrcycgLT4gKHJlbW92ZV9tYXRjaGVzIHosIG1hcmtzJylcbiAgICAgICAgIGluXG4gICAgICAgICBDc2V0LnByZXBlbmQgc1xuICAgICAgICAgICAobWF0Y2ggcmVwX2tpbmQgd2l0aFxuICAgICAgICAgICAgICBgR3JlZWR5ICAgICAtPiBFLnRzZXEga2luZCB6JyB4IFtFLlRNYXRjaCBtYXJrcyddXG4gICAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+IEUuVE1hdGNoIG1hcmtzIDo6IEUudHNlcSBraW5kIHonIHggW10pXG4gICAgICAgICAgIHJlbSlcbiAgICAgIHknIHJlbVxuICB8IEVwcyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBNYXJrIGkgLT5cbiAgICBDc2V0LnByZXBlbmQgYWxsX2NoYXJzIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9ICgoaSwgLTEpIDo6IExpc3QucmVtb3ZlX2Fzc3EgaSBtYXJrcy5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBQbWFyayBfIC0+XG4gICAgQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbVxuICB8IEVyYXNlIChiLCBlKSAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnNcbiAgICAgIFtFLlRNYXRjaCB7bWFya3Mgd2l0aCBNYXJrcy5tYXJrcyA9IChyZW1vdmVfbWFya3MgYiBlIChmaWx0ZXJfbWFya3MgYiBlIG1hcmtzKS5NYXJrcy5tYXJrcyl9XSByZW1cbiAgfCBCZWZvcmUgY2F0JyAtPlxuICAgIENzZXQucHJlcGVuZCAoTGlzdC5hc3NxIGNhdCcgY2F0ZWdvcmllcykgW0UuVE1hdGNoIG1hcmtzXSByZW1cbiAgfCBBZnRlciBjYXQnIC0+XG4gICAgaWYgQ2F0ZWdvcnkuaW50ZXJzZWN0IGNhdCBjYXQnIHRoZW4gQ3NldC5wcmVwZW5kIGFsbF9jaGFycyBbRS5UTWF0Y2ggbWFya3NdIHJlbSBlbHNlIHJlbVxuXG5hbmQgZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfMiBhbGxfY2hhcnMgY2F0ZWdvcmllcyBtYXJrcyBjYXQgciByZW0pXG5cbmFuZCBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeSB6IHJlbSA9XG4gIGlmXG4gICAgTGlzdC5leGlzdHNcbiAgICAgIChmdW4gKF9zLCB4bCkgLT5cbiAgICAgICAgIExpc3QuZXhpc3RzIChmdW5jdGlvbiBFLlRNYXRjaCBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSB4bClcbiAgICAgIHlcbiAgdGhlblxuICAgIGxldCB6JyA9IGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgTWFya3MuZW1wdHkgY2F0IHogWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gKHMsIHkpIHJlbSAtPlxuICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgZmlyc3QgKGZ1bmN0aW9uIEUuVE1hdGNoIG1hcmtzIC0+IFNvbWUgbWFya3MgfCBfIC0+IE5vbmUpXG4gICAgICAgICAgICAgeVxuICAgICAgICAgd2l0aFxuICAgICAgICAgICBOb25lIC0+XG4gICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5IHogW10pIHJlbVxuICAgICAgICAgfCBTb21lIG1hcmtzIC0+XG4gICAgICAgICAgIGxldCB6JycgPSBwcmVwZW5kX21hcmtzIG1hcmtzIHonIGluXG4gICAgICAgICAgIG1hdGNoIGtpbmQgd2l0aFxuICAgICAgICAgICAgIGBMb25nZXN0IC0+XG4gICAgICAgICAgICAgQ3NldC5wcmVwZW5kIHMgKEUudHNlcSBraW5kIChyZW1vdmVfbWF0Y2hlcyB5KSB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgcmVtKVxuICAgICAgICAgICB8IGBTaG9ydGVzdCAtPlxuICAgICAgICAgICAgIHByZXBlbmRfZGVyaXYgKHJlc3RyaWN0IHMgeicnKSAoXG4gICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgKHJlbW92ZV9tYXRjaGVzIHkpIHogW10pIHJlbSlcbiAgICAgICAgICAgfCBgRmlyc3QgLT5cbiAgICAgICAgICAgICBsZXQgKHknLCB5JycpID0gc3BsaXRfYXRfbWF0Y2ggeSBpblxuICAgICAgICAgICAgIENzZXQucHJlcGVuZCBzIChFLnRzZXEga2luZCB5JyB6IFtdKSAoXG4gICAgICAgICAgICAgICBwcmVwZW5kX2Rlcml2IChyZXN0cmljdCBzIHonJykgKFxuICAgICAgICAgICAgICAgICBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeScnIHogW10pIHJlbSkpKVxuICAgICAgeSByZW1cbiAgZWxzZVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biAocywgeGwpIHJlbSAtPiBDc2V0LnByZXBlbmQgcyAoRS50c2VxIGtpbmQgeGwgeiBbXSkgcmVtKSB5IHJlbVxuXG5sZXQgcmVjIGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHggcmVtID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgRS5UU2VxICh5LCB6LCBraW5kKSAtPlxuICAgIGxldCB5JyA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHkgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgICBkZXJpdl9zZXEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IGtpbmQgeScgeiByZW1cbiAgfCBFLlRFeHAgKG1hcmtzLCBlKSAtPlxuICAgIGRlcml2XzEgYWxsX2NoYXJzIGNhdGVnb3JpZXMgbWFya3MgY2F0IGUgcmVtXG4gIHwgRS5UTWF0Y2ggXyAtPlxuICAgIENzZXQucHJlcGVuZCBhbGxfY2hhcnMgW3hdIHJlbVxuXG5hbmQgZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgbCByZW0gPVxuICBtYXRjaCBsIHdpdGhcbiAgICBbXSAgICAgLT4gcmVtXG4gIHwgeSA6OiByIC0+IGRlcml2XzMgYWxsX2NoYXJzIGNhdGVnb3JpZXMgY2F0IHlcbiAgICAgICAgICAgICAgICAoZGVyaXZfNCBhbGxfY2hhcnMgY2F0ZWdvcmllcyBjYXQgciByZW0pXG5cbmxldCBkZXJpdiB0YmxfcmVmIGFsbF9jaGFycyBjYXRlZ29yaWVzIHN0ID1cbiAgbGV0IGRlciA9IGRlcml2XzQgYWxsX2NoYXJzIGNhdGVnb3JpZXMgc3QuU3RhdGUuY2F0ZWdvcnkgc3QuU3RhdGUuZGVzY1xuICAgICAgWyhhbGxfY2hhcnMsIFtdKV0gaW5cbiAgc2ltcGxfdHIgKFxuICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChzLCBleHByKSByZW0gLT5cbiAgICAgICAgbGV0IChleHByJywgXykgPSByZW1vdmVfZHVwbGljYXRlcyBbXSBleHByIGVwc19leHByIGluXG4oKlxuRm9ybWF0LmVwcmludGYgXCJAWzwzPkBbJWFAXTogJWEgLyAlYUBdQC5cIiBDc2V0LnByaW50IHMgcHJpbnRfc3RhdGUgZXhwciBwcmludF9zdGF0ZSBleHByJztcbiopXG4gICAgICAgIGxldCBpZHggPSBmcmVlX2luZGV4IHRibF9yZWYgZXhwcicgaW5cbiAgICAgICAgbGV0IGV4cHInJyA9IHNldF9pZHggaWR4IGV4cHInIGluXG4gICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuIChjYXQnLCBzJykgcmVtIC0+XG4gICAgICAgICAgICBsZXQgcycnID0gQ3NldC5pbnRlciBzIHMnIGluXG4gICAgICAgICAgICBpZiBDc2V0LmlzX2VtcHR5IHMnJ1xuICAgICAgICAgICAgdGhlbiByZW1cbiAgICAgICAgICAgIGVsc2UgKHMnJywgU3RhdGUubWsgaWR4IGNhdCcgZXhwcicnKSA6OiByZW0pXG4gICAgICAgICAgY2F0ZWdvcmllcyByZW0pIGRlciBbXSlcblxuKCoqKiopXG5cbmxldCBmbGF0dGVuX21hdGNoIG0gPVxuICBsZXQgbWEgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIG1hIChpLCBfKSAtPiBtYXggbWEgaSkgKC0xKSBtIGluXG4gIGxldCByZXMgPSBBcnJheS5tYWtlIChtYSArIDEpICgtMSkgaW5cbiAgTGlzdC5pdGVyIChmdW4gKGksIHYpIC0+IHJlcy4oaSkgPC0gdikgbTtcbiAgcmVzXG5cbmxldCBzdGF0dXMgcyA9XG4gIG1hdGNoIHMuU3RhdGUuc3RhdHVzIHdpdGhcbiAgICBTb21lIHN0IC0+XG4gICAgc3RcbiAgfCBOb25lIC0+XG4gICAgbGV0IHN0ID1cbiAgICAgIG1hdGNoIHMuU3RhdGUuZGVzYyB3aXRoXG4gICAgICAgIFtdICAgICAgICAgICAgICAtPiBGYWlsZWRcbiAgICAgIHwgRS5UTWF0Y2ggbSA6OiBfIC0+IE1hdGNoIChmbGF0dGVuX21hdGNoIG0uTWFya3MubWFya3MsIG0uTWFya3MucG1hcmtzKVxuICAgICAgfCBfICAgICAgICAgICAgICAgLT4gUnVubmluZ1xuICAgIGluXG4gICAgcy5TdGF0ZS5zdGF0dXMgPC0gU29tZSBzdDtcbiAgICBzdFxuIiwiKCogSW4gcmVhbGl0eSwgdGhpcyBjYW4gcmVhbGx5IGJlIHJlcHJlc2VudGVkIGFzIGEgYm9vbCBhcnJheS5cblxuICAgVGhlIHJlcHJlc2VudGF0aW9uIGlzIGJlc3QgdGhvdWdodCBvZiBhcyBhIGxpc3Qgb2YgYWxsIGNoYXJzIGFsb25nIHdpdGggYVxuICAgZmxhZzpcblxuICAgKGEsIDApLCAoYiwgMSksIChjLCAwKSwgKGQsIDApLCAuLi5cblxuICAgY2hhcmFjdGVycyBiZWxvbmdpbmcgdG8gdGhlIHNhbWUgY29sb3IgYXJlIHJlcHJlc2VudGVkIGJ5IHNlcXVuY2VzIG9mXG4gICBjaGFyYWN0ZXJzIHdpdGggdGhlIGZsYWcgc2V0IHRvIDAuXG4qKVxuXG50eXBlIHQgPSBCeXRlcy50XG5cbmxldCBtYWtlICgpID0gQnl0ZXMubWFrZSAyNTcgJ1xcMDAwJ1xuXG5sZXQgZmxhdHRlbiBjbSA9XG4gIGxldCBjID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBsZXQgY29sb3JfcmVwciA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgbGV0IHYgPSByZWYgMCBpblxuICBCeXRlcy5zZXQgYyAwICdcXDAwMCc7XG4gIEJ5dGVzLnNldCBjb2xvcl9yZXByIDAgJ1xcMDAwJztcbiAgZm9yIGkgPSAxIHRvIDI1NSBkb1xuICAgIGlmIEJ5dGVzLmdldCBjbSBpIDw+ICdcXDAwMCcgdGhlbiBpbmNyIHY7XG4gICAgQnl0ZXMuc2V0IGMgaSAoQ2hhci5jaHIgIXYpO1xuICAgIEJ5dGVzLnNldCBjb2xvcl9yZXByICF2IChDaGFyLmNociBpKVxuICBkb25lO1xuICAoQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBjLCBCeXRlcy5zdWJfc3RyaW5nIGNvbG9yX3JlcHIgMCAoIXYgKyAxKSwgIXYgKyAxKVxuXG4oKiBtYXJrIGFsbCB0aGUgZW5kcG9pbnRzIG9mIHRoZSBpbnRlcnZhbHMgb2YgdGhlIGNoYXIgc2V0IHdpdGggdGhlIDEgYnl0ZSAqKVxubGV0IHNwbGl0IHMgY20gPVxuICBDc2V0Lml0ZXIgcyB+ZjooZnVuIGkgaiAtPlxuICAgICAgQnl0ZXMuc2V0IGNtIGkgJ1xcMDAxJztcbiAgICAgIEJ5dGVzLnNldCBjbSAoaiArIDEpICdcXDAwMSc7XG4gICAgKVxuIiwiKCogUmVzdWx0IG9mIGEgc3VjY2Vzc2Z1bCBtYXRjaC4gKilcbnR5cGUgdCA9XG4gIHsgcyA6IHN0cmluZ1xuICA7IG1hcmtzIDogQXV0b21hdGEubWFya19pbmZvc1xuICA7IHBtYXJrcyA6IFBtYXJrLlNldC50XG4gIDsgZ3BvcyA6IGludCBhcnJheVxuICA7IGdjb3VudCA6IGludFxuICB9XG5cbmxldCBvZmZzZXQgdCBpID1cbiAgaWYgMiAqIGkgKyAxID49IEFycmF5Lmxlbmd0aCB0Lm1hcmtzIHRoZW4gcmFpc2UgTm90X2ZvdW5kO1xuICBsZXQgbTEgPSB0Lm1hcmtzLigyICogaSkgaW5cbiAgaWYgbTEgPSAtMSB0aGVuIHJhaXNlIE5vdF9mb3VuZDtcbiAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgbGV0IHAyID0gdC5ncG9zLih0Lm1hcmtzLigyICogaSArIDEpKSBpblxuICAocDEsIHAyKVxuXG5sZXQgZ2V0IHQgaSA9XG4gIGxldCAocDEsIHAyKSA9IG9mZnNldCB0IGkgaW5cbiAgU3RyaW5nLnN1YiB0LnMgcDEgKHAyIC0gcDEpXG5cbmxldCBzdGFydCBzdWJzIGkgPSBmc3QgKG9mZnNldCBzdWJzIGkpXG5cbmxldCBzdG9wIHN1YnMgaSA9IHNuZCAob2Zmc2V0IHN1YnMgaSlcblxubGV0IHRlc3QgdCBpID1cbiAgaWYgMiAqIGkgPj0gQXJyYXkubGVuZ3RoIHQubWFya3MgdGhlblxuICAgIGZhbHNlXG4gIGVsc2VcbiAgICBsZXQgaWR4ID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWR4IDw+IC0xXG5cbmxldCBnZXRfb3B0IHQgaSA9XG4gIGlmIHRlc3QgdCBpXG4gIHRoZW4gU29tZSAoZ2V0IHQgaSlcbiAgZWxzZSBOb25lXG5cbmxldCBkdW1teV9vZmZzZXQgPSAoLTEsIC0xKVxuXG5sZXQgYWxsX29mZnNldCB0ID1cbiAgbGV0IHJlcyA9IEFycmF5Lm1ha2UgdC5nY291bnQgZHVtbXlfb2Zmc2V0IGluXG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggdC5tYXJrcyAvIDIgLSAxIGRvXG4gICAgbGV0IG0xID0gdC5tYXJrcy4oMiAqIGkpIGluXG4gICAgaWYgbTEgPD4gLTEgdGhlbiBiZWdpblxuICAgICAgbGV0IHAxID0gdC5ncG9zLihtMSkgaW5cbiAgICAgIGxldCBwMiA9IHQuZ3Bvcy4odC5tYXJrcy4oMiAqIGkgKyAxKSkgaW5cbiAgICAgIHJlcy4oaSkgPC0gKHAxLCBwMilcbiAgICBlbmRcbiAgZG9uZTtcbiAgcmVzXG5cbmxldCBkdW1teV9zdHJpbmcgPSBcIlwiXG5cbmxldCBhbGwgdCA9XG4gIGxldCByZXMgPSBBcnJheS5tYWtlIHQuZ2NvdW50IGR1bW15X3N0cmluZyBpblxuICBmb3IgaSA9IDAgdG8gQXJyYXkubGVuZ3RoIHQubWFya3MgLyAyIC0gMSBkb1xuICAgIGxldCBtMSA9IHQubWFya3MuKDIgKiBpKSBpblxuICAgIGlmIG0xIDw+IC0xIHRoZW4gYmVnaW5cbiAgICAgIGxldCBwMSA9IHQuZ3Bvcy4obTEpIGluXG4gICAgICBsZXQgcDIgPSB0Lmdwb3MuKHQubWFya3MuKDIgKiBpICsgMSkpIGluXG4gICAgICByZXMuKGkpIDwtIFN0cmluZy5zdWIgdC5zIHAxIChwMiAtIHAxKVxuICAgIGVuZFxuICBkb25lO1xuICByZXNcblxubGV0IHBwIGZtdCB0ID1cbiAgbGV0IG1hdGNoZXMgPVxuICAgIGxldCBvZmZzZXRzID0gYWxsX29mZnNldCB0IGluXG4gICAgbGV0IHN0cnMgPSBhbGwgdCBpblxuICAgIEFycmF5LnRvX2xpc3QgKFxuICAgICAgQXJyYXkuaW5pdCAoQXJyYXkubGVuZ3RoIHN0cnMpIChmdW4gaSAtPiBzdHJzLihpKSwgb2Zmc2V0cy4oaSkpXG4gICAgKSBpblxuICBsZXQgb3BlbiBGbXQgaW5cbiAgbGV0IHBwX21hdGNoIGZtdCAoc3RyLCAoc3RhcnQsIHN0b3ApKSA9XG4gICAgZnByaW50ZiBmbXQgXCJAWyglcyAoJWQgJWQpKUBdXCIgc3RyIHN0YXJ0IHN0b3AgaW5cbiAgc2V4cCBmbXQgXCJHcm91cFwiIChsaXN0IHBwX21hdGNoKSBtYXRjaGVzXG5cbmxldCBuYl9ncm91cHMgdCA9IHQuZ2NvdW50XG4iLCIoKlxuICAgUkUgLSBBIHJlZ3VsYXIgZXhwcmVzc2lvbiBsaWJyYXJ5XG5cbiAgIENvcHlyaWdodCAoQykgMjAwMSBKZXJvbWUgVm91aWxsb25cbiAgIGVtYWlsOiBKZXJvbWUuVm91aWxsb25AcHBzLmp1c3NpZXUuZnJcblxuICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vclxuICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aFxuICAgbGlua2luZyBleGNlcHRpb247IGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0XG4gICB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VXG4gICBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuXG4gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBXG4qKVxuXG5sZXQgcmVjIGl0ZXIgbiBmIHYgPSBpZiBuID0gMCB0aGVuIHYgZWxzZSBpdGVyIChuIC0gMSkgZiAoZiB2KVxuXG4oKioqKilcblxubGV0IHVua25vd24gPSAtMlxubGV0IGJyZWFrID0gLTNcblxudHlwZSBtYXRjaF9pbmZvID1cbiAgfCBNYXRjaCBvZiBHcm91cC50XG4gIHwgRmFpbGVkXG4gIHwgUnVubmluZyBvZiB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgOiBpbnQgfVxuXG50eXBlIHN0YXRlID1cbiAgeyBpZHggOiBpbnQ7XG4gICAgKCogSW5kZXggb2YgdGhlIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIHBvc2l0aW9uIHRhYmxlLlxuICAgICAgIE5vdCB5ZXQgY29tcHV0ZWQgdHJhbnNpdGlvbnMgcG9pbnQgdG8gYSBkdW1teSBzdGF0ZSB3aGVyZVxuICAgICAgIFtpZHhdIGlzIHNldCB0byBbdW5rbm93bl07XG4gICAgICAgSWYgW2lkeF0gaXMgc2V0IHRvIFticmVha10gZm9yIHN0YXRlcyB0aGF0IGVpdGhlciBhbHdheXNcbiAgICAgICBzdWNjZWVkIG9yIGFsd2F5cyBmYWlsLiAqKVxuICAgIHJlYWxfaWR4IDogaW50O1xuICAgICgqIFRoZSByZWFsIGluZGV4LCBpbiBjYXNlIFtpZHhdIGlzIHNldCB0byBbYnJlYWtdICopXG4gICAgbmV4dCA6IHN0YXRlIGFycmF5O1xuICAgICgqIFRyYW5zaXRpb24gdGFibGUsIGluZGV4ZWQgYnkgY29sb3IgKilcbiAgICBtdXRhYmxlIGZpbmFsIDpcbiAgICAgIChDYXRlZ29yeS50ICpcbiAgICAgICAoQXV0b21hdGEuaWR4ICogQXV0b21hdGEuc3RhdHVzKSkgbGlzdDtcbiAgICAoKiBNYXBwaW5nIGZyb20gdGhlIGNhdGVnb3J5IG9mIHRoZSBuZXh0IGNoYXJhY3RlciB0b1xuICAgICAgIC0gdGhlIGluZGV4IHdoZXJlIHRoZSBuZXh0IHBvc2l0aW9uIHNob3VsZCBiZSBzYXZlZFxuICAgICAgIC0gcG9zc2libHksIHRoZSBsaXN0IG9mIG1hcmtzIChhbmQgdGhlIGNvcnJlc3BvbmRpbmcgaW5kaWNlcylcbiAgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGJlc3QgbWF0Y2ggKilcbiAgICBkZXNjIDogQXV0b21hdGEuU3RhdGUudFxuICAgICgqIERlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgb2YgdGhlIGF1dG9tYXRhICopIH1cblxuKCogQXV0b21hdGEgKGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbikgKilcbnR5cGUgcmUgPVxuICB7IGluaXRpYWwgOiBBdXRvbWF0YS5leHByO1xuICAgICgqIFRoZSB3aG9sZSByZWd1bGFyIGV4cHJlc3Npb24gKilcbiAgICBtdXRhYmxlIGluaXRpYWxfc3RhdGVzIDogKENhdGVnb3J5LnQgKiBzdGF0ZSkgbGlzdDtcbiAgICAoKiBJbml0aWFsIHN0YXRlcywgaW5kZXhlZCBieSBpbml0aWFsIGNhdGVnb3J5ICopXG4gICAgY29sb3JzIDogc3RyaW5nO1xuICAgICgqIENvbG9yIHRhYmxlICopXG4gICAgY29sb3JfcmVwciA6IHN0cmluZztcbiAgICAoKiBUYWJsZSBmcm9tIGNvbG9ycyB0byBvbmUgY2hhcmFjdGVyIG9mIHRoaXMgY29sb3IgKilcbiAgICBuY29sb3IgOiBpbnQ7XG4gICAgKCogTnVtYmVyIG9mIGNvbG9ycy4gKilcbiAgICBsbmwgOiBpbnQ7XG4gICAgKCogQ29sb3Igb2YgdGhlIGxhc3QgbmV3bGluZS4gLTEgaWYgdW5uZWNlc3NhcnkgKilcbiAgICB0YmwgOiBBdXRvbWF0YS53b3JraW5nX2FyZWE7XG4gICAgKCogVGVtcG9yYXJ5IHRhYmxlIHVzZWQgdG8gY29tcHV0ZSB0aGUgZmlyc3QgYXZhaWxhYmxlIGluZGV4XG4gICAgICAgd2hlbiBjb21wdXRpbmcgYSBuZXcgc3RhdGUgKilcbiAgICBzdGF0ZXMgOiBzdGF0ZSBBdXRvbWF0YS5TdGF0ZS5UYWJsZS50O1xuICAgICgqIFN0YXRlcyBvZiB0aGUgZGV0ZXJtaW5pc3RpYyBhdXRvbWF0YSAqKVxuICAgIGdyb3VwX25hbWVzIDogKHN0cmluZyAqIGludCkgbGlzdDtcbiAgICAoKiBOYW1lZCBncm91cHMgaW4gdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiAqKVxuICAgIGdyb3VwX2NvdW50IDogaW50XG4gICAgKCogTnVtYmVyIG9mIGdyb3VwcyBpbiB0aGUgcmVndWxhciBleHByZXNzaW9uICopIH1cblxubGV0IHBwX3JlIGNoIHJlID0gQXV0b21hdGEucHAgY2ggcmUuaW5pdGlhbFxuXG5sZXQgcHJpbnRfcmUgPSBwcF9yZVxuXG5sZXQgZ3JvdXBfY291bnQgcmUgPSByZS5ncm91cF9jb3VudFxuXG5sZXQgZ3JvdXBfbmFtZXMgcmUgPSByZS5ncm91cF9uYW1lc1xuXG4oKiBJbmZvcm1hdGlvbiB1c2VkIGR1cmluZyBtYXRjaGluZyAqKVxudHlwZSBpbmZvID1cbiAgeyByZSA6IHJlO1xuICAgICgqIFRoZSBhdXRvbWF0YSAqKVxuICAgIGNvbG9ycyA6IHN0cmluZztcbiAgICAoKiBDb2xvciB0YWJsZSAoW3guY29sb3JzID0geC5yZS5jb2xvcnNdKVxuICAgICAgIFNob3J0Y3V0IHVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgKilcbiAgICBtdXRhYmxlIHBvc2l0aW9ucyA6IGludCBhcnJheTtcbiAgICAoKiBBcnJheSBvZiBtYXJrIHBvc2l0aW9uc1xuICAgICAgIFRoZSBtYXJrIGFyZSBvZmYgYnkgb25lIGZvciBwZXJmb3JtYW5jZSByZWFzb25zICopXG4gICAgcG9zIDogaW50O1xuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBpcyBzdGFydGVkICopXG4gICAgbGFzdCA6IGludFxuICAgICgqIFBvc2l0aW9uIHdoZXJlIHRoZSBtYXRjaCBzaG91bGQgc3RvcCAqKSB9XG5cblxuKCoqKiopXG5cbmxldCBjYXRlZ29yeSByZSB+Y29sb3IgPVxuICBpZiBjb2xvciA9IC0xIHRoZW5cbiAgICBDYXRlZ29yeS5pbmV4aXN0YW50XG4gICAgKCogU3BlY2lhbCBjYXRlZ29yeSBmb3IgdGhlIGxhc3QgbmV3bGluZSAqKVxuICBlbHNlIGlmIGNvbG9yID0gcmUubG5sIHRoZW5cbiAgICBDYXRlZ29yeS4obGFzdG5ld2xpbmUgKysgbmV3bGluZSArKyBub3RfbGV0dGVyKVxuICBlbHNlXG4gICAgQ2F0ZWdvcnkuZnJvbV9jaGFyIChyZS5jb2xvcl9yZXByLltjb2xvcl0pXG5cbigqKioqKVxuXG5sZXQgZHVtbXlfbmV4dCA9IFt8fF1cblxubGV0IHVua25vd25fc3RhdGUgPVxuICB7IGlkeCA9IHVua25vd247IHJlYWxfaWR4ID0gMDtcbiAgICBuZXh0ID0gZHVtbXlfbmV4dDsgZmluYWwgPSBbXTtcbiAgICBkZXNjID0gQXV0b21hdGEuU3RhdGUuZHVtbXkgfVxuXG5sZXQgbWtfc3RhdGUgbmNvbCBkZXNjID1cbiAgbGV0IGJyZWFrX3N0YXRlID1cbiAgICBtYXRjaCBBdXRvbWF0YS5zdGF0dXMgZGVzYyB3aXRoXG4gICAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+IGZhbHNlXG4gICAgfCBBdXRvbWF0YS5GYWlsZWRcbiAgICB8IEF1dG9tYXRhLk1hdGNoIF8gLT4gdHJ1ZVxuICBpblxuICB7IGlkeCA9IGlmIGJyZWFrX3N0YXRlIHRoZW4gYnJlYWsgZWxzZSBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeDtcbiAgICByZWFsX2lkeCA9IGRlc2MuQXV0b21hdGEuU3RhdGUuaWR4O1xuICAgIG5leHQgPSBpZiBicmVha19zdGF0ZSB0aGVuIGR1bW15X25leHQgZWxzZSBBcnJheS5tYWtlIG5jb2wgdW5rbm93bl9zdGF0ZTtcbiAgICBmaW5hbCA9IFtdO1xuICAgIGRlc2MgfVxuXG5sZXQgZmluZF9zdGF0ZSByZSBkZXNjID1cbiAgdHJ5XG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuZmluZCByZS5zdGF0ZXMgZGVzY1xuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBzdCA9IG1rX3N0YXRlIHJlLm5jb2xvciBkZXNjIGluXG4gICAgQXV0b21hdGEuU3RhdGUuVGFibGUuYWRkIHJlLnN0YXRlcyBkZXNjIHN0O1xuICAgIHN0XG5cbigqKioqIE1hdGNoIHdpdGggbWFya3MgKioqKilcblxubGV0IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCA9XG4gIGxldCBkZXNjID0gQXV0b21hdGEuZGVsdGEgaW5mby5yZS50YmwgY2F0IGNvbG9yIHN0LmRlc2MgaW5cbiAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBpbmZvLnBvc2l0aW9ucyBpblxuICBpZiBkZXNjLkF1dG9tYXRhLlN0YXRlLmlkeCA9IGxlbiAmJiBsZW4gPiAwIHRoZW4gYmVnaW5cbiAgICBsZXQgcG9zID0gaW5mby5wb3NpdGlvbnMgaW5cbiAgICBpbmZvLnBvc2l0aW9ucyA8LSBBcnJheS5tYWtlICgyICogbGVuKSAwO1xuICAgIEFycmF5LmJsaXQgcG9zIDAgaW5mby5wb3NpdGlvbnMgMCBsZW5cbiAgZW5kO1xuICBkZXNjXG5cbmxldCB2YWxpZGF0ZSBpbmZvIChzOnN0cmluZykgfnBvcyBzdCA9XG4gIGxldCBjb2xvciA9IENoYXIuY29kZSAoaW5mby5jb2xvcnMuW0NoYXIuY29kZSBzLltwb3NdXSkgaW5cbiAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gIGxldCBkZXNjJyA9IGRlbHRhIGluZm8gY2F0IH5jb2xvciBzdCBpblxuICBsZXQgc3QnID0gZmluZF9zdGF0ZSBpbmZvLnJlIGRlc2MnIGluXG4gIHN0Lm5leHQuKGNvbG9yKSA8LSBzdCdcblxubGV0IHJlYyBsb29wIGluZm8gcyB+cG9zIHN0ID1cbiAgaWYgcG9zIDwgaW5mby5sYXN0IHRoZW5cbiAgICBsZXQgc3QnID0gc3QubmV4dC4oQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV0pIGluXG4gICAgbGV0IGlkeCA9IHN0Jy5pZHggaW5cbiAgICBpZiBpZHggPj0gMCB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oaWR4KSA8LSBwb3M7XG4gICAgICBsb29wIGluZm8gcyB+cG9zOihwb3MgKyAxKSBzdCdcbiAgICBlbmQgZWxzZSBpZiBpZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgICBpbmZvLnBvc2l0aW9ucy4oc3QnLnJlYWxfaWR4KSA8LSBwb3M7XG4gICAgICBzdCdcbiAgICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgICB2YWxpZGF0ZSBpbmZvIHMgfnBvcyBzdDtcbiAgICAgIGxvb3AgaW5mbyBzIH5wb3Mgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCByZWMgbG9vcF9ub19tYXJrIGluZm8gcyB+cG9zIH5sYXN0IHN0ID1cbiAgaWYgcG9zIDwgbGFzdCB0aGVuXG4gICAgbGV0IHN0JyA9IHN0Lm5leHQuKENoYXIuY29kZSBpbmZvLmNvbG9ycy5bQ2hhci5jb2RlIHMuW3Bvc11dKSBpblxuICAgIGlmIHN0Jy5pZHggPj0gMCB0aGVuXG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3M6KHBvcyArIDEpIH5sYXN0IHN0J1xuICAgIGVsc2UgaWYgc3QnLmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0J1xuICAgIGVsc2UgYmVnaW4gKCogVW5rbm93biAqKVxuICAgICAgdmFsaWRhdGUgaW5mbyBzIH5wb3Mgc3Q7XG4gICAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3Qgc3RcbiAgICBlbmRcbiAgZWxzZVxuICAgIHN0XG5cbmxldCBmaW5hbCBpbmZvIHN0IGNhdCA9XG4gIHRyeVxuICAgIExpc3QuYXNzcSBjYXQgc3QuZmluYWxcbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICBsZXQgc3QnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOigtMSkgc3QgaW5cbiAgICBsZXQgcmVzID0gKHN0Jy5BdXRvbWF0YS5TdGF0ZS5pZHgsIEF1dG9tYXRhLnN0YXR1cyBzdCcpIGluXG4gICAgc3QuZmluYWwgPC0gKGNhdCwgcmVzKSA6OiBzdC5maW5hbDtcbiAgICByZXNcblxubGV0IGZpbmRfaW5pdGlhbF9zdGF0ZSByZSBjYXQgPVxuICB0cnlcbiAgICBMaXN0LmFzc3EgY2F0IHJlLmluaXRpYWxfc3RhdGVzXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IHN0ID0gZmluZF9zdGF0ZSByZSAoQXV0b21hdGEuU3RhdGUuY3JlYXRlIGNhdCByZS5pbml0aWFsKSBpblxuICAgIHJlLmluaXRpYWxfc3RhdGVzIDwtIChjYXQsIHN0KSA6OiByZS5pbml0aWFsX3N0YXRlcztcbiAgICBzdFxuXG5sZXQgZ2V0X2NvbG9yIHJlIChzOnN0cmluZykgcG9zID1cbiAgaWYgcG9zIDwgMCB0aGVuXG4gICAgLTFcbiAgZWxzZVxuICAgIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgaWYgcG9zID49IHNsZW4gdGhlblxuICAgICAgLTFcbiAgICBlbHNlIGlmIHBvcyA9IHNsZW4gLSAxICYmIHJlLmxubCA8PiAtMSAmJiBzLltwb3NdID0gJ1xcbicgdGhlblxuICAgICAgKCogU3BlY2lhbCBjYXNlIGZvciB0aGUgbGFzdCBuZXdsaW5lICopXG4gICAgICByZS5sbmxcbiAgICBlbHNlXG4gICAgICBDaGFyLmNvZGUgcmUuY29sb3JzLltDaGFyLmNvZGUgcy5bcG9zXV1cblxubGV0IHJlYyBoYW5kbGVfbGFzdF9uZXdsaW5lIGluZm8gfnBvcyBzdCB+Z3JvdXBzID1cbiAgbGV0IHN0JyA9IHN0Lm5leHQuKGluZm8ucmUubG5sKSBpblxuICBpZiBzdCcuaWR4ID49IDAgdGhlbiBiZWdpblxuICAgIGlmIGdyb3VwcyB0aGVuIGluZm8ucG9zaXRpb25zLihzdCcuaWR4KSA8LSBwb3M7XG4gICAgc3QnXG4gIGVuZCBlbHNlIGlmIHN0Jy5pZHggPSBicmVhayB0aGVuIGJlZ2luXG4gICAgaWYgZ3JvdXBzIHRoZW4gaW5mby5wb3NpdGlvbnMuKHN0Jy5yZWFsX2lkeCkgPC0gcG9zO1xuICAgIHN0J1xuICBlbmQgZWxzZSBiZWdpbiAoKiBVbmtub3duICopXG4gICAgbGV0IGNvbG9yID0gaW5mby5yZS5sbmwgaW5cbiAgICBsZXQgcmVhbF9jID0gQ2hhci5jb2RlIGluZm8uY29sb3JzLltDaGFyLmNvZGUgJ1xcbiddIGluXG4gICAgbGV0IGNhdCA9IGNhdGVnb3J5IGluZm8ucmUgfmNvbG9yIGluXG4gICAgbGV0IGRlc2MnID0gZGVsdGEgaW5mbyBjYXQgfmNvbG9yOnJlYWxfYyBzdCBpblxuICAgIGxldCBzdCcgPSBmaW5kX3N0YXRlIGluZm8ucmUgZGVzYycgaW5cbiAgICBzdC5uZXh0Lihjb2xvcikgPC0gc3QnO1xuICAgIGhhbmRsZV9sYXN0X25ld2xpbmUgaW5mbyB+cG9zIHN0IH5ncm91cHNcbiAgZW5kXG5cbmxldCByZWMgc2Nhbl9zdHIgaW5mbyAoczpzdHJpbmcpIGluaXRpYWxfc3RhdGUgfmdyb3VwcyA9XG4gIGxldCBwb3MgPSBpbmZvLnBvcyBpblxuICBsZXQgbGFzdCA9IGluZm8ubGFzdCBpblxuICBpZiAobGFzdCA9IFN0cmluZy5sZW5ndGggc1xuICAgICAgJiYgaW5mby5yZS5sbmwgPD4gLTFcbiAgICAgICYmIGxhc3QgPiBwb3NcbiAgICAgICYmIFN0cmluZy5nZXQgcyAobGFzdCAtIDEpID0gJ1xcbicpXG4gIHRoZW4gYmVnaW5cbiAgICBsZXQgaW5mbyA9IHsgaW5mbyB3aXRoIGxhc3QgPSBsYXN0IC0gMSB9IGluXG4gICAgbGV0IHN0ID0gc2Nhbl9zdHIgaW5mbyBzIGluaXRpYWxfc3RhdGUgfmdyb3VwcyBpblxuICAgIGlmIHN0LmlkeCA9IGJyZWFrIHRoZW5cbiAgICAgIHN0XG4gICAgZWxzZVxuICAgICAgaGFuZGxlX2xhc3RfbmV3bGluZSBpbmZvIH5wb3M6KGxhc3QgLSAxKSBzdCB+Z3JvdXBzXG4gIGVuZCBlbHNlIGlmIGdyb3VwcyB0aGVuXG4gICAgbG9vcCBpbmZvIHMgfnBvcyBpbml0aWFsX3N0YXRlXG4gIGVsc2VcbiAgICBsb29wX25vX21hcmsgaW5mbyBzIH5wb3Mgfmxhc3QgaW5pdGlhbF9zdGF0ZVxuXG4oKiBUaGlzIGZ1bmN0aW9uIGFkZHMgYSBmaW5hbCBib3VuZGFyeSBjaGVjayBvbiB0aGUgaW5wdXQuXG4gICBUaGlzIGlzIHVzZWZ1bCB0byBpbmRpY2F0ZSB0aGF0IHRoZSBvdXRwdXQgZmFpbGVkIGJlY2F1c2VcbiAgIG9mIGluc3VmZmljaWVudCBpbnB1dCwgb3IgdG8gdmVyaWZ5IHRoYXQgdGhlIG91dHB1dCBhY3R1YWxseVxuICAgbWF0Y2hlcyBmb3IgcmVnZXggdGhhdCBoYXZlIGJvdW5kYXJ5IGNvbmRpdGlvbnMgd2l0aCByZXNwZWN0XG4gICB0byB0aGUgaW5wdXQgc3RyaW5nLlxuICopXG5sZXQgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3VwcyA9XG4gIGxldCBmaW5hbF9jYXQgPVxuICAgIGlmIGxhc3QgPSBzbGVuIHRoZW5cbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnkgKysgaW5leGlzdGFudClcbiAgICBlbHNlXG4gICAgICBDYXRlZ29yeS4oc2VhcmNoX2JvdW5kYXJ5ICsrIGNhdGVnb3J5IHJlIH5jb2xvcjooZ2V0X2NvbG9yIHJlIHMgbGFzdCkpXG4gIGluXG4gIGxldCAoaWR4LCByZXMpID0gZmluYWwgaW5mbyBzdCBmaW5hbF9jYXQgaW5cbiAgKG1hdGNoIGdyb3VwcywgcmVzIHdpdGhcbiAgfCB0cnVlLCBNYXRjaCBfIC0+IGluZm8ucG9zaXRpb25zLihpZHgpIDwtIGxhc3RcbiAgfCBfIC0+ICgpKTtcbiAgcmVzXG5cbmxldCBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlbiA9XG4gIGxldCBzbGVuID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBsYXN0ID0gaWYgbGVuID0gLTEgdGhlbiBzbGVuIGVsc2UgcG9zICsgbGVuIGluXG4gIGxldCBpbmZvID1cbiAgICB7IHJlIDsgY29sb3JzID0gcmUuY29sb3JzOyBwb3MgOyBsYXN0XG4gICAgOyBwb3NpdGlvbnMgPVxuICAgICAgICBpZiBncm91cHMgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCBuID0gQXV0b21hdGEuaW5kZXhfY291bnQgcmUudGJsICsgMSBpblxuICAgICAgICAgIGlmIG4gPD0gMTAgdGhlblxuICAgICAgICAgICAgW3wwOzA7MDswOzA7MDswOzA7MDswfF1cbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBcnJheS5tYWtlIG4gMFxuICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgIFt8fF0gfVxuICBpblxuICBsZXQgaW5pdGlhbF9jYXQgPVxuICAgIGlmIHBvcyA9IDAgdGhlblxuICAgICAgQ2F0ZWdvcnkuKHNlYXJjaF9ib3VuZGFyeSArKyBpbmV4aXN0YW50KVxuICAgIGVsc2VcbiAgICAgIENhdGVnb3J5LihzZWFyY2hfYm91bmRhcnlcbiAgICAgICAgICAgICAgICArKyBjYXRlZ29yeSByZSB+Y29sb3I6KGdldF9jb2xvciByZSBzIChwb3MgLSAxKSkpXG4gIGluXG4gIGxldCBpbml0aWFsX3N0YXRlID0gZmluZF9pbml0aWFsX3N0YXRlIHJlIGluaXRpYWxfY2F0IGluXG4gIGxldCBzdCA9IHNjYW5fc3RyIGluZm8gcyBpbml0aWFsX3N0YXRlIH5ncm91cHMgaW5cbiAgbGV0IHJlcyA9XG4gICAgaWYgc3QuaWR4ID0gYnJlYWsgfHwgKHBhcnRpYWwgJiYgbm90IGdyb3VwcykgdGhlblxuICAgICAgQXV0b21hdGEuc3RhdHVzIHN0LmRlc2NcbiAgICBlbHNlIGlmIHBhcnRpYWwgJiYgZ3JvdXBzIHRoZW5cbiAgICAgIG1hdGNoIEF1dG9tYXRhLnN0YXR1cyBzdC5kZXNjIHdpdGhcbiAgICAgIHwgTWF0Y2ggXyB8IEZhaWxlZCBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICB8IFJ1bm5pbmcgLT5cbiAgICAgICAgKCogVGhpcyBjb3VsZCBiZSBiZWNhdXNlIGl0J3Mgc3RpbGwgbm90IGZ1bGx5IG1hdGNoZWQsIG9yIGl0XG4gICAgICAgICAgIGNvdWxkIGJlIHRoYXQgYmVjYXVzZSB3ZSBuZWVkIHRvIHJ1biBzcGVjaWFsIGVuZCBvZiBpbnB1dFxuICAgICAgICAgICBjaGVja3MuICopXG4gICAgICAgIChtYXRjaCBmaW5hbF9ib3VuZGFyeV9jaGVjayB+bGFzdCB+c2xlbiByZSBzIH5pbmZvIH5zdCB+Z3JvdXBzIHdpdGhcbiAgICAgICAgIHwgTWF0Y2ggXyBhcyBzdGF0dXMgLT4gc3RhdHVzXG4gICAgICAgICB8IEZhaWxlZCB8IFJ1bm5pbmcgLT5cbiAgICAgICAgICAgKCogQSBmYWlsdXJlIGhlcmUganVzdCBtZWFucyB0aGF0IHdlIG5lZWQgbW9yZSBkYXRhLCBpLmUuXG4gICAgICAgICAgICAgIGl0J3MgYSBwYXJ0aWFsIG1hdGNoLiAqKVxuICAgICAgICAgICBSdW5uaW5nKVxuICAgIGVsc2UgZmluYWxfYm91bmRhcnlfY2hlY2sgfmxhc3QgfnNsZW4gcmUgcyB+aW5mbyB+c3Qgfmdyb3Vwc1xuICBpblxuICBtYXRjaCByZXMgd2l0aFxuICAgIEF1dG9tYXRhLk1hdGNoIChtYXJrcywgcG1hcmtzKSAtPlxuICAgIE1hdGNoIHsgcyA7IG1hcmtzOyBwbWFya3MgOyBncG9zID0gaW5mby5wb3NpdGlvbnM7IGdjb3VudCA9IHJlLmdyb3VwX2NvdW50fVxuICB8IEF1dG9tYXRhLkZhaWxlZCAtPiBGYWlsZWRcbiAgfCBBdXRvbWF0YS5SdW5uaW5nIC0+XG4gICAgbGV0IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgPSBpZiBncm91cHMgdGhlbiBpbmZvLnBvc2l0aW9ucy4oMCkgZWxzZSAwIGluXG4gICAgUnVubmluZyB7IG5vX21hdGNoX3N0YXJ0c19iZWZvcmUgfVxuXG5sZXQgbWtfcmUgfmluaXRpYWwgfmNvbG9ycyB+Y29sb3JfcmVwciB+bmNvbG9yIH5sbmwgfmdyb3VwX25hbWVzIH5ncm91cF9jb3VudCA9XG4gIHsgaW5pdGlhbCA7XG4gICAgaW5pdGlhbF9zdGF0ZXMgPSBbXTtcbiAgICBjb2xvcnM7XG4gICAgY29sb3JfcmVwcjtcbiAgICBuY29sb3I7XG4gICAgbG5sO1xuICAgIHRibCA9IEF1dG9tYXRhLmNyZWF0ZV93b3JraW5nX2FyZWEgKCk7XG4gICAgc3RhdGVzID0gQXV0b21hdGEuU3RhdGUuVGFibGUuY3JlYXRlIDk3O1xuICAgIGdyb3VwX25hbWVzO1xuICAgIGdyb3VwX2NvdW50IH1cblxuKCoqKiogQ2hhcmFjdGVyIHNldHMgKioqKilcblxubGV0IGNzZXEgYyBjJyA9IENzZXQuc2VxIChDaGFyLmNvZGUgYykgKENoYXIuY29kZSBjJylcbmxldCBjYWRkIGMgcyA9IENzZXQuYWRkIChDaGFyLmNvZGUgYykgc1xuXG5sZXQgdHJhbnNfc2V0IGNhY2hlIGNtIHMgPVxuICBtYXRjaCBDc2V0Lm9uZV9jaGFyIHMgd2l0aFxuICB8IFNvbWUgaSAtPiBDc2V0LmNzaW5nbGUgY20uW2ldXG4gIHwgTm9uZSAtPlxuICAgIGxldCB2ID0gKENzZXQuaGFzaF9yZWMgcywgcykgaW5cbiAgICB0cnlcbiAgICAgIENzZXQuQ1NldE1hcC5maW5kIHYgIWNhY2hlXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIGxldCBsID1cbiAgICAgICAgQ3NldC5mb2xkX3JpZ2h0XG4gICAgICAgICAgc1xuICAgICAgICAgIH5mOihmdW4gKGksIGopIGwgLT4gQ3NldC51bmlvbiAoY3NlcSBjbS5baV0gY20uW2pdKSBsKVxuICAgICAgICAgIH5pbml0OkNzZXQuZW1wdHlcbiAgICAgIGluXG4gICAgICBjYWNoZSA6PSBDc2V0LkNTZXRNYXAuYWRkIHYgbCAhY2FjaGU7XG4gICAgICBsXG5cbigqKioqKVxuXG50eXBlIHJlZ2V4cCA9XG4gICAgU2V0IG9mIENzZXQudFxuICB8IFNlcXVlbmNlIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQWx0ZXJuYXRpdmUgb2YgcmVnZXhwIGxpc3RcbiAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCB8IEVuZF9vZl93b3JkIHwgTm90X2JvdW5kXG4gIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgfCBMYXN0X2VuZF9vZl9saW5lIHwgU3RhcnQgfCBTdG9wXG4gIHwgU2VtIG9mIEF1dG9tYXRhLnNlbSAqIHJlZ2V4cFxuICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgfCBHcm91cCBvZiBzdHJpbmcgb3B0aW9uICogcmVnZXhwIHwgTm9fZ3JvdXAgb2YgcmVnZXhwIHwgTmVzdCBvZiByZWdleHBcbiAgfCBDYXNlIG9mIHJlZ2V4cCB8IE5vX2Nhc2Ugb2YgcmVnZXhwXG4gIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gIHwgQ29tcGxlbWVudCBvZiByZWdleHAgbGlzdFxuICB8IERpZmZlcmVuY2Ugb2YgcmVnZXhwICogcmVnZXhwXG4gIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG5tb2R1bGUgVmlldyA9IHN0cnVjdFxuICB0eXBlIHQgPSByZWdleHAgPVxuICAgICAgU2V0IG9mIENzZXQudFxuICAgIHwgU2VxdWVuY2Ugb2YgcmVnZXhwIGxpc3RcbiAgICB8IEFsdGVybmF0aXZlIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBSZXBlYXQgb2YgcmVnZXhwICogaW50ICogaW50IG9wdGlvblxuICAgIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICAgIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0ciB8IEVuZF9vZl9zdHJcbiAgICB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgICB8IFNlbSBvZiBBdXRvbWF0YS5zZW0gKiByZWdleHBcbiAgICB8IFNlbV9ncmVlZHkgb2YgQXV0b21hdGEucmVwX2tpbmQgKiByZWdleHBcbiAgICB8IEdyb3VwIG9mIHN0cmluZyBvcHRpb24gKiByZWdleHAgfCBOb19ncm91cCBvZiByZWdleHAgfCBOZXN0IG9mIHJlZ2V4cFxuICAgIHwgQ2FzZSBvZiByZWdleHAgfCBOb19jYXNlIG9mIHJlZ2V4cFxuICAgIHwgSW50ZXJzZWN0aW9uIG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBDb21wbGVtZW50IG9mIHJlZ2V4cCBsaXN0XG4gICAgfCBEaWZmZXJlbmNlIG9mIHJlZ2V4cCAqIHJlZ2V4cFxuICAgIHwgUG1hcmsgb2YgUG1hcmsudCAqIHJlZ2V4cFxuXG4gIGxldCB2aWV3IHQgPSB0XG5lbmRcblxubGV0IHJlYyBwcCBmbXQgdCA9XG4gIGxldCBvcGVuIEZtdCBpblxuICBsZXQgdmFyIHMgcmUgPSBzZXhwIGZtdCBzIHBwIHJlIGluXG4gIGxldCBzZXEgcyByZWwgPSBzZXhwIGZtdCBzIChsaXN0IHBwKSByZWwgaW5cbiAgbWF0Y2ggdCB3aXRoXG4gIHwgU2V0IHMgLT4gIHNleHAgZm10IFwiU2V0XCIgQ3NldC5wcCBzXG4gIHwgU2VxdWVuY2Ugc3EgLT4gc2VxIFwiU2VxdWVuY2VcIiBzcVxuICB8IEFsdGVybmF0aXZlIGFsdCAtPiBzZXEgXCJBbHRlcm5hdGl2ZVwiIGFsdFxuICB8IFJlcGVhdCAocmUsIHN0YXJ0LCBzdG9wKSAtPlxuICAgIGxldCBwcCcgZm10ICgpID0gZnByaW50ZiBmbXQgXCIlYUAgJWQlYVwiIHBwIHJlICAgc3RhcnQgICBvcHRpbnQgc3RvcCBpblxuICAgIHNleHAgZm10IFwiUmVwZWF0XCIgcHAnICgpXG4gIHwgQmVnX29mX2xpbmUgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX2xpbmVcIlxuICB8IEVuZF9vZl9saW5lICAgICAgLT4gc3RyIGZtdCBcIkVuZF9vZl9saW5lXCJcbiAgfCBCZWdfb2Zfd29yZCAgICAgIC0+IHN0ciBmbXQgXCJCZWdfb2Zfd29yZFwiXG4gIHwgRW5kX29mX3dvcmQgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3dvcmRcIlxuICB8IE5vdF9ib3VuZCAgICAgICAgLT4gc3RyIGZtdCBcIk5vdF9ib3VuZFwiXG4gIHwgQmVnX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiQmVnX29mX3N0clwiXG4gIHwgRW5kX29mX3N0ciAgICAgICAtPiBzdHIgZm10IFwiRW5kX29mX3N0clwiXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPiBzdHIgZm10IFwiTGFzdF9lbmRfb2ZfbGluZVwiXG4gIHwgU3RhcnQgICAgICAgICAgICAtPiBzdHIgZm10IFwiU3RhcnRcIlxuICB8IFN0b3AgICAgICAgICAgICAgLT4gc3RyIGZtdCBcIlN0b3BcIlxuICB8IFNlbSAoc2VtLCByZSkgICAgLT5cbiAgICBzZXhwIGZtdCBcIlNlbVwiIChwYWlyIEF1dG9tYXRhLnBwX3NlbSBwcCkgKHNlbSwgcmUpXG4gIHwgU2VtX2dyZWVkeSAoaywgcmUpIC0+XG4gICAgc2V4cCBmbXQgXCJTZW1fZ3JlZWR5XCIgKHBhaXIgQXV0b21hdGEucHBfcmVwX2tpbmQgcHApIChrLCByZSlcbiAgfCBHcm91cCAoTm9uZSwgYykgICAtPiB2YXIgXCJHcm91cFwiIGNcbiAgfCBHcm91cCAoU29tZSBuLCBjKSAtPiBzZXhwIGZtdCBcIk5hbWVkX2dyb3VwXCIgKHBhaXIgc3RyIHBwKSAobiwgYylcbiAgfCBOb19ncm91cCBjICAgICAtPiB2YXIgXCJOb19ncm91cFwiIGNcbiAgfCBOZXN0IGMgICAgICAgICAtPiB2YXIgXCJOZXN0XCIgY1xuICB8IENhc2UgYyAgICAgICAgIC0+IHZhciBcIkNhc2VcIiBjXG4gIHwgTm9fY2FzZSBjICAgICAgLT4gdmFyIFwiTm9fY2FzZVwiIGNcbiAgfCBJbnRlcnNlY3Rpb24gYyAtPiBzZXEgXCJJbnRlcnNlY3Rpb25cIiBjXG4gIHwgQ29tcGxlbWVudCBjICAgLT4gc2VxIFwiQ29tcGxlbWVudFwiIGNcbiAgfCBEaWZmZXJlbmNlIChhLCBiKSAtPiBzZXhwIGZtdCBcIkRpZmZlcmVuY2VcIiAocGFpciBwcCBwcCkgKGEsIGIpXG4gIHwgUG1hcmsgKG0sIHIpICAgICAgLT4gc2V4cCBmbXQgXCJQbWFya1wiIChwYWlyIFBtYXJrLnBwIHBwKSAobSwgcilcblxubGV0IHJlYyBpc19jaGFyc2V0ID0gZnVuY3Rpb25cbiAgfCBTZXQgXyAtPlxuICAgIHRydWVcbiAgfCBBbHRlcm5hdGl2ZSBsIHwgSW50ZXJzZWN0aW9uIGwgfCBDb21wbGVtZW50IGwgLT5cbiAgICBMaXN0LmZvcl9hbGwgaXNfY2hhcnNldCBsXG4gIHwgRGlmZmVyZW5jZSAociwgcicpIC0+XG4gICAgaXNfY2hhcnNldCByICYmIGlzX2NoYXJzZXQgcidcbiAgfCBTZW0gKF8sIHIpIHwgU2VtX2dyZWVkeSAoXywgcilcbiAgfCBOb19ncm91cCByIHwgQ2FzZSByIHwgTm9fY2FzZSByIC0+XG4gICAgaXNfY2hhcnNldCByXG4gIHwgU2VxdWVuY2UgXyB8IFJlcGVhdCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZVxuICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmQgfCBCZWdfb2Zfc3RyIHwgRW5kX29mX3N0clxuICB8IE5vdF9ib3VuZCB8IExhc3RfZW5kX29mX2xpbmUgfCBTdGFydCB8IFN0b3BcbiAgfCBHcm91cCBfIHwgTmVzdCBfIHwgUG1hcmsgKF8sXyktPlxuICAgIGZhbHNlXG5cbigqWFhYIFVzZSBhIGJldHRlciBhbGdvcml0aG0gYWxsb3dpbmcgbm9uLWNvbnRpZ3VvdXMgcmVnaW9ucz8gKilcblxubGV0IGN1cHBlciA9XG4gIENzZXQudW5pb24gKGNzZXEgJ0EnICdaJylcbiAgICAoQ3NldC51bmlvbiAoY3NlcSAnXFwxOTInICdcXDIxNCcpIChjc2VxICdcXDIxNicgJ1xcMjIyJykpXG5sZXQgY2xvd2VyID0gQ3NldC5vZmZzZXQgMzIgY3VwcGVyXG5sZXQgY2FscGhhID1cbiAgTGlzdC5mb2xkX3JpZ2h0IGNhZGQgWydcXDE3MCc7ICdcXDE4MSc7ICdcXDE4Nic7ICdcXDIyMyc7ICdcXDI1NSddXG4gICAgKENzZXQudW5pb24gY2xvd2VyIGN1cHBlcilcbmxldCBjZGlnaXQgPSBjc2VxICcwJyAnOSdcbmxldCBjYWxudW0gPSBDc2V0LnVuaW9uIGNhbHBoYSBjZGlnaXRcbmxldCBjd29yZCA9IGNhZGQgJ18nIGNhbG51bVxuXG5sZXQgY29sb3JpemUgYyByZWdleHAgPVxuICBsZXQgbG5sID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgY29sb3JpemUgcmVnZXhwID1cbiAgICBtYXRjaCByZWdleHAgd2l0aFxuICAgICAgU2V0IHMgICAgICAgICAgICAgICAgICAgICAtPiBDb2xvcl9tYXAuc3BsaXQgcyBjXG4gICAgfCBTZXF1ZW5jZSBsICAgICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBBbHRlcm5hdGl2ZSBsICAgICAgICAgICAgIC0+IExpc3QuaXRlciBjb2xvcml6ZSBsXG4gICAgfCBSZXBlYXQgKHIsIF8sIF8pICAgICAgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IEJlZ19vZl9saW5lIHwgRW5kX29mX2xpbmUgLT4gQ29sb3JfbWFwLnNwbGl0IChDc2V0LmNzaW5nbGUgJ1xcbicpIGNcbiAgICB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZCAgICAgICAgICAgICAgICAgLT4gQ29sb3JfbWFwLnNwbGl0IGN3b3JkIGNcbiAgICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyXG4gICAgfCBTdGFydCB8IFN0b3AgICAgICAgICAgICAgIC0+ICgpXG4gICAgfCBMYXN0X2VuZF9vZl9saW5lICAgICAgICAgIC0+IGxubCA6PSB0cnVlXG4gICAgfCBTZW0gKF8sIHIpXG4gICAgfCBTZW1fZ3JlZWR5IChfLCByKVxuICAgIHwgR3JvdXAgKF8sIHIpIHwgTm9fZ3JvdXAgclxuICAgIHwgTmVzdCByIHwgUG1hcmsgKF8scikgICAgIC0+IGNvbG9yaXplIHJcbiAgICB8IENhc2UgXyB8IE5vX2Nhc2UgX1xuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSBfICAgICAgICAgICAgICAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgY29sb3JpemUgcmVnZXhwO1xuICAhbG5sXG5cbigqKioqIENvbXBpbGF0aW9uICoqKiopXG5cbmxldCByZWMgZXF1YWwgeDEgeDIgPVxuICBtYXRjaCB4MSwgeDIgd2l0aFxuICAgIFNldCBzMSwgU2V0IHMyIC0+XG4gICAgczEgPSBzMlxuICB8IFNlcXVlbmNlIGwxLCBTZXF1ZW5jZSBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBBbHRlcm5hdGl2ZSBsMSwgQWx0ZXJuYXRpdmUgbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgUmVwZWF0ICh4MScsIGkxLCBqMSksIFJlcGVhdCAoeDInLCBpMiwgajIpIC0+XG4gICAgaTEgPSBpMiAmJiBqMSA9IGoyICYmIGVxdWFsIHgxJyB4MidcbiAgfCBCZWdfb2ZfbGluZSwgQmVnX29mX2xpbmVcbiAgfCBFbmRfb2ZfbGluZSwgRW5kX29mX2xpbmVcbiAgfCBCZWdfb2Zfd29yZCwgQmVnX29mX3dvcmRcbiAgfCBFbmRfb2Zfd29yZCwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQsIE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIsIEJlZ19vZl9zdHJcbiAgfCBFbmRfb2Zfc3RyLCBFbmRfb2Zfc3RyXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSwgTGFzdF9lbmRfb2ZfbGluZVxuICB8IFN0YXJ0LCBTdGFydFxuICB8IFN0b3AsIFN0b3AgLT5cbiAgICB0cnVlXG4gIHwgU2VtIChzZW0xLCB4MScpLCBTZW0gKHNlbTIsIHgyJykgLT5cbiAgICBzZW0xID0gc2VtMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgU2VtX2dyZWVkeSAoazEsIHgxJyksIFNlbV9ncmVlZHkgKGsyLCB4MicpIC0+XG4gICAgazEgPSBrMiAmJiBlcXVhbCB4MScgeDInXG4gIHwgR3JvdXAgXywgR3JvdXAgXyAtPiAoKiBEbyBub3QgbWVyZ2UgZ3JvdXBzISAqKVxuICAgIGZhbHNlXG4gIHwgTm9fZ3JvdXAgeDEnLCBOb19ncm91cCB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgTmVzdCB4MScsIE5lc3QgeDInIC0+XG4gICAgZXF1YWwgeDEnIHgyJ1xuICB8IENhc2UgeDEnLCBDYXNlIHgyJyAtPlxuICAgIGVxdWFsIHgxJyB4MidcbiAgfCBOb19jYXNlIHgxJywgTm9fY2FzZSB4MicgLT5cbiAgICBlcXVhbCB4MScgeDInXG4gIHwgSW50ZXJzZWN0aW9uIGwxLCBJbnRlcnNlY3Rpb24gbDIgLT5cbiAgICBlcV9saXN0IGwxIGwyXG4gIHwgQ29tcGxlbWVudCBsMSwgQ29tcGxlbWVudCBsMiAtPlxuICAgIGVxX2xpc3QgbDEgbDJcbiAgfCBEaWZmZXJlbmNlICh4MScsIHgxJycpLCBEaWZmZXJlbmNlICh4MicsIHgyJycpIC0+XG4gICAgZXF1YWwgeDEnIHgyJyAmJiBlcXVhbCB4MScnIHgyJydcbiAgfCBQbWFyayAobTEsIHIxKSwgUG1hcmsgKG0yLCByMikgLT5cbiAgICBQbWFyay5lcXVhbCBtMSBtMiAmJiBlcXVhbCByMSByMlxuICB8IF8gLT5cbiAgICBmYWxzZVxuXG5hbmQgZXFfbGlzdCBsMSBsMiA9XG4gIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgW10sIFtdIC0+XG4gICAgdHJ1ZVxuICB8IHgxIDo6IHIxLCB4MiA6OiByMiAtPlxuICAgIGVxdWFsIHgxIHgyICYmIGVxX2xpc3QgcjEgcjJcbiAgfCBfIC0+XG4gICAgZmFsc2VcblxubGV0IHNlcXVlbmNlID0gZnVuY3Rpb25cbiAgfCBbeF0gLT4geFxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCByZWMgbWVyZ2Vfc2VxdWVuY2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIFtdXG4gIHwgQWx0ZXJuYXRpdmUgbCcgOjogciAtPlxuICAgIG1lcmdlX3NlcXVlbmNlcyAobCcgQCByKVxuICB8IFNlcXVlbmNlICh4IDo6IHkpIDo6IHIgLT5cbiAgICBiZWdpbiBtYXRjaCBtZXJnZV9zZXF1ZW5jZXMgciB3aXRoXG4gICAgICAgIFNlcXVlbmNlICh4JyA6OiB5JykgOjogcicgd2hlbiBlcXVhbCB4IHgnIC0+XG4gICAgICAgIFNlcXVlbmNlIFt4OyBBbHRlcm5hdGl2ZSBbc2VxdWVuY2UgeTsgc2VxdWVuY2UgeSddXSA6OiByJ1xuICAgICAgfCByJyAtPlxuICAgICAgICBTZXF1ZW5jZSAoeCA6OiB5KSA6OiByJ1xuICAgIGVuZFxuICB8IHggOjogciAtPlxuICAgIHggOjogbWVyZ2Vfc2VxdWVuY2VzIHJcblxubW9kdWxlIEEgPSBBdXRvbWF0YVxuXG5sZXQgZW5mb3JjZV9raW5kIGlkcyBraW5kIGtpbmQnIGNyID1cbiAgbWF0Y2gga2luZCwga2luZCcgd2l0aFxuICAgIGBGaXJzdCwgYEZpcnN0IC0+IGNyXG4gIHwgYEZpcnN0LCBrICAgICAgIC0+IEEuc2VxIGlkcyBrIGNyIChBLmVwcyBpZHMpXG4gIHwgIF8gICAgICAgICAgICAgICAtPiBjclxuXG4oKiBYWFggc2hvdWxkIHByb2JhYmx5IGNvbXB1dGUgYSBjYXRlZ29yeSBtYXNrICopXG5sZXQgcmVjIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjID0gZnVuY3Rpb25cbiAgfCBTZXQgcyAtPlxuICAgIChBLmNzdCBpZHMgKHRyYW5zX3NldCBjYWNoZSBjIHMpLCBraW5kKVxuICB8IFNlcXVlbmNlIGwgLT5cbiAgICAodHJhbnNfc2VxIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgbCwga2luZClcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgYmVnaW4gbWF0Y2ggbWVyZ2Vfc2VxdWVuY2VzIGwgd2l0aFxuICAgICAgICBbciddIC0+XG4gICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAgICAgKGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjciwga2luZClcbiAgICAgIHwgbWVyZ2VkX3NlcXVlbmNlcyAtPlxuICAgICAgICAoQS5hbHQgaWRzXG4gICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAoZnVuIHInIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICAgICAgICAgICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHlcbiAgICAgICAgICAgICAgICAgICAgIHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgICAgICAgICAgICAgIGVuZm9yY2Vfa2luZCBpZHMga2luZCBraW5kJyBjcilcbiAgICAgICAgICAgICAgbWVyZ2VkX3NlcXVlbmNlcyksXG4gICAgICAgICBraW5kKVxuICAgIGVuZFxuICB8IFJlcGVhdCAocicsIGksIGopIC0+XG4gICAgbGV0IChjciwga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInIGluXG4gICAgbGV0IHJlbSA9XG4gICAgICBtYXRjaCBqIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICBBLnJlcCBpZHMgZ3JlZWR5IGtpbmQnIGNyXG4gICAgICB8IFNvbWUgaiAtPlxuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgbWF0Y2ggZ3JlZWR5IHdpdGhcbiAgICAgICAgICAgIGBHcmVlZHkgLT5cbiAgICAgICAgICAgIGZ1biByZW0gLT5cbiAgICAgICAgICAgICAgQS5hbHQgaWRzXG4gICAgICAgICAgICAgICAgW0Euc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW07IEEuZXBzIGlkc11cbiAgICAgICAgICB8IGBOb25fZ3JlZWR5IC0+XG4gICAgICAgICAgICBmdW4gcmVtIC0+XG4gICAgICAgICAgICAgIEEuYWx0IGlkc1xuICAgICAgICAgICAgICAgIFtBLmVwcyBpZHM7IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW1dXG4gICAgICAgIGluXG4gICAgICAgIGl0ZXIgKGogLSBpKSBmIChBLmVwcyBpZHMpXG4gICAgaW5cbiAgICAoaXRlciBpIChmdW4gcmVtIC0+IEEuc2VxIGlkcyBraW5kJyAoQS5yZW5hbWUgaWRzIGNyKSByZW0pIHJlbSwga2luZClcbiAgfCBCZWdfb2ZfbGluZSAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBuZXdsaW5lKSwga2luZClcbiAgfCBFbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbmV3bGluZSksIGtpbmQpXG4gIHwgQmVnX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSlcbiAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmxldHRlciksXG4gICAgIGtpbmQpXG4gIHwgRW5kX29mX3dvcmQgLT5cbiAgICAoQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5sZXR0ZXIpXG4gICAgICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS4oaW5leGlzdGFudCArKyBub3RfbGV0dGVyKSksXG4gICAgIGtpbmQpXG4gIHwgTm90X2JvdW5kIC0+XG4gICAgKEEuYWx0IGlkcyBbQS5zZXEgaWRzIGBGaXJzdFxuICAgICAgICAgICAgICAgICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LmxldHRlcilcbiAgICAgICAgICAgICAgICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkubGV0dGVyKTtcbiAgICAgICAgICAgICAgICBBLnNlcSBpZHMgYEZpcnN0XG4gICAgICAgICAgICAgICAgICAoQS5hZnRlciBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbm90X2xldHRlcikpXG4gICAgICAgICAgICAgICAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LihpbmV4aXN0YW50ICsrIG5vdF9sZXR0ZXIpKV0sXG4gICAgIGtpbmQpXG4gIHwgQmVnX29mX3N0ciAtPlxuICAgIChBLmFmdGVyIGlkcyBDYXRlZ29yeS5pbmV4aXN0YW50LCBraW5kKVxuICB8IEVuZF9vZl9zdHIgLT5cbiAgICAoQS5iZWZvcmUgaWRzIENhdGVnb3J5LmluZXhpc3RhbnQsIGtpbmQpXG4gIHwgTGFzdF9lbmRfb2ZfbGluZSAtPlxuICAgIChBLmJlZm9yZSBpZHMgQ2F0ZWdvcnkuKGluZXhpc3RhbnQgKysgbGFzdG5ld2xpbmUpLCBraW5kKVxuICB8IFN0YXJ0IC0+XG4gICAgKEEuYWZ0ZXIgaWRzIENhdGVnb3J5LnNlYXJjaF9ib3VuZGFyeSwga2luZClcbiAgfCBTdG9wIC0+XG4gICAgKEEuYmVmb3JlIGlkcyBDYXRlZ29yeS5zZWFyY2hfYm91bmRhcnksIGtpbmQpXG4gIHwgU2VtIChraW5kJywgcicpIC0+XG4gICAgbGV0IChjciwga2luZCcnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQnIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcicgaW5cbiAgICAoZW5mb3JjZV9raW5kIGlkcyBraW5kJyBraW5kJycgY3IsXG4gICAgIGtpbmQnKVxuICB8IFNlbV9ncmVlZHkgKGdyZWVkeScsIHInKSAtPlxuICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5JyBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICB8IEdyb3VwIChuLCByJykgLT5cbiAgICBpZiBpZ25fZ3JvdXAgdGhlblxuICAgICAgdHJhbnNsYXRlIGlkcyBraW5kIGlnbl9ncm91cCBpZ25fY2FzZSBncmVlZHkgcG9zIG5hbWVzIGNhY2hlIGMgcidcbiAgICBlbHNlXG4gICAgICBsZXQgcCA9ICFwb3MgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFNvbWUgbmFtZSAtPiBuYW1lcyA6PSAobmFtZSwgcCAvIDIpIDo6ICFuYW1lc1xuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgIGluXG4gICAgICBwb3MgOj0gIXBvcyArIDI7XG4gICAgICBsZXQgKGNyLCBraW5kJykgPVxuICAgICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEubWFyayBpZHMgcCkgKFxuICAgICAgICAgIEEuc2VxIGlkcyBgRmlyc3QgY3IgKEEubWFyayBpZHMgKHAgKyAxKSkpLFxuICAgICAgIGtpbmQnKVxuICB8IE5vX2dyb3VwIHInIC0+XG4gICAgdHJhbnNsYXRlIGlkcyBraW5kIHRydWUgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHInXG4gIHwgTmVzdCByJyAtPlxuICAgIGxldCBiID0gIXBvcyBpblxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJ1xuICAgIGluXG4gICAgbGV0IGUgPSAhcG9zIC0gMSBpblxuICAgIGlmIGUgPCBiIHRoZW5cbiAgICAgIChjciwga2luZCcpXG4gICAgZWxzZVxuICAgICAgKEEuc2VxIGlkcyBgRmlyc3QgKEEuZXJhc2UgaWRzIGIgZSkgY3IsIGtpbmQnKVxuICB8IERpZmZlcmVuY2UgXyB8IENvbXBsZW1lbnQgXyB8IEludGVyc2VjdGlvbiBfIHwgTm9fY2FzZSBfIHwgQ2FzZSBfIC0+XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHwgUG1hcmsgKGksIHInKSAtPlxuICAgIGxldCAoY3IsIGtpbmQnKSA9XG4gICAgICB0cmFuc2xhdGUgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByJyBpblxuICAgIChBLnNlcSBpZHMgYEZpcnN0IChBLnBtYXJrIGlkcyBpKSBjciwga2luZCcpXG5cbmFuZCB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICBBLmVwcyBpZHNcbiAgfCBbcl0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBlbmZvcmNlX2tpbmQgaWRzIGtpbmQga2luZCcgY3InXG4gIHwgciA6OiByZW0gLT5cbiAgICBsZXQgKGNyJywga2luZCcpID1cbiAgICAgIHRyYW5zbGF0ZSBpZHMga2luZCBpZ25fZ3JvdXAgaWduX2Nhc2UgZ3JlZWR5IHBvcyBuYW1lcyBjYWNoZSBjIHIgaW5cbiAgICBsZXQgY3InJyA9XG4gICAgICB0cmFuc19zZXEgaWRzIGtpbmQgaWduX2dyb3VwIGlnbl9jYXNlIGdyZWVkeSBwb3MgbmFtZXMgY2FjaGUgYyByZW0gaW5cbiAgICBpZiBBLmlzX2VwcyBjcicnIHRoZW5cbiAgICAgIGNyJ1xuICAgIGVsc2UgaWYgQS5pc19lcHMgY3InIHRoZW5cbiAgICAgIGNyJydcbiAgICBlbHNlXG4gICAgICBBLnNlcSBpZHMga2luZCcgY3InIGNyJydcblxuKCoqKiogQ2FzZSAqKioqKVxuXG5sZXQgY2FzZV9pbnNlbnMgcyA9XG4gIENzZXQudW5pb24gcyAoQ3NldC51bmlvbiAoQ3NldC5vZmZzZXQgMzIgKENzZXQuaW50ZXIgcyBjdXBwZXIpKVxuICAgICAgICAgICAgICAgICAgKENzZXQub2Zmc2V0ICgtMzIpIChDc2V0LmludGVyIHMgY2xvd2VyKSkpXG5cbmxldCBhc19zZXQgPSBmdW5jdGlvblxuICB8IFNldCBzIC0+IHNcbiAgfCBfICAgICAtPiBhc3NlcnQgZmFsc2VcblxuKCogWFhYIFNob3VsZCBzcGxpdCBhbHRlcm5hdGl2ZXMgaW50byAoMSkgY2hhcnNldHMgYW5kICgyKSBtb3JlXG4gICBjb21wbGV4IHJlZ3VsYXIgZXhwcmVzc2lvbnM7IGFsdGVybmF0aXZlIHNob3VsZCB0aGVyZWZvcmUgcHJvYmFibHlcbiAgIGJlIGZsYXR0ZW4gaGVyZSAqKVxubGV0IHJlYyBoYW5kbGVfY2FzZSBpZ25fY2FzZSA9IGZ1bmN0aW9uXG4gIHwgU2V0IHMgLT5cbiAgICBTZXQgKGlmIGlnbl9jYXNlIHRoZW4gY2FzZV9pbnNlbnMgcyBlbHNlIHMpXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIFNlcXVlbmNlIChMaXN0Lm1hcCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UpIGwpXG4gIHwgQWx0ZXJuYXRpdmUgbCAtPlxuICAgIGxldCBsJyA9IExpc3QubWFwIChoYW5kbGVfY2FzZSBpZ25fY2FzZSkgbCBpblxuICAgIGlmIGlzX2NoYXJzZXQgKEFsdGVybmF0aXZlIGwnKSB0aGVuXG4gICAgICBTZXQgKExpc3QuZm9sZF9sZWZ0IChmdW4gcyByIC0+IENzZXQudW5pb24gcyAoYXNfc2V0IHIpKSBDc2V0LmVtcHR5IGwnKVxuICAgIGVsc2VcbiAgICAgIEFsdGVybmF0aXZlIGwnXG4gIHwgUmVwZWF0IChyLCBpLCBqKSAtPlxuICAgIFJlcGVhdCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciwgaSwgailcbiAgfCBCZWdfb2ZfbGluZSB8IEVuZF9vZl9saW5lIHwgQmVnX29mX3dvcmQgfCBFbmRfb2Zfd29yZCB8IE5vdF9ib3VuZFxuICB8IEJlZ19vZl9zdHIgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0YXJ0IHwgU3RvcCBhcyByIC0+XG4gICAgclxuICB8IFNlbSAoaywgcikgLT5cbiAgICBsZXQgcicgPSBoYW5kbGVfY2FzZSBpZ25fY2FzZSByIGluXG4gICAgaWYgaXNfY2hhcnNldCByJyB0aGVuIHInIGVsc2UgU2VtIChrLCByJylcbiAgfCBTZW1fZ3JlZWR5IChrLCByKSAtPlxuICAgIGxldCByJyA9IGhhbmRsZV9jYXNlIGlnbl9jYXNlIHIgaW5cbiAgICBpZiBpc19jaGFyc2V0IHInIHRoZW4gcicgZWxzZSBTZW1fZ3JlZWR5IChrLCByJylcbiAgfCBHcm91cCAobiwgcikgLT5cbiAgICBHcm91cCAobiwgaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcbiAgfCBOb19ncm91cCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5vX2dyb3VwIHInXG4gIHwgTmVzdCByIC0+XG4gICAgbGV0IHInID0gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgciBpblxuICAgIGlmIGlzX2NoYXJzZXQgcicgdGhlbiByJyBlbHNlIE5lc3QgcidcbiAgfCBDYXNlIHIgLT5cbiAgICBoYW5kbGVfY2FzZSBmYWxzZSByXG4gIHwgTm9fY2FzZSByIC0+XG4gICAgaGFuZGxlX2Nhc2UgdHJ1ZSByXG4gIHwgSW50ZXJzZWN0aW9uIGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC5pbnRlciBzIChhc19zZXQgcikpIENzZXQuY2FueSBsJylcbiAgfCBDb21wbGVtZW50IGwgLT5cbiAgICBsZXQgbCcgPSBMaXN0Lm1hcCAoZnVuIHIgLT4gaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcikgbCBpblxuICAgIFNldCAoQ3NldC5kaWZmIENzZXQuY2FueVxuICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBzIHIgLT4gQ3NldC51bmlvbiBzIChhc19zZXQgcikpXG4gICAgICAgICAgICAgIENzZXQuZW1wdHkgbCcpKVxuICB8IERpZmZlcmVuY2UgKHIsIHInKSAtPlxuICAgIFNldCAoQ3NldC5pbnRlciAoYXNfc2V0IChoYW5kbGVfY2FzZSBpZ25fY2FzZSByKSlcbiAgICAgICAgICAgKENzZXQuZGlmZiBDc2V0LmNhbnkgKGFzX3NldCAoaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcicpKSkpXG4gIHwgUG1hcmsgKGkscikgLT4gUG1hcmsgKGksaGFuZGxlX2Nhc2UgaWduX2Nhc2UgcilcblxuKCoqKiopXG5cbmxldCBjb21waWxlXzEgcmVnZXhwID1cbiAgbGV0IHJlZ2V4cCA9IGhhbmRsZV9jYXNlIGZhbHNlIHJlZ2V4cCBpblxuICBsZXQgYyA9IENvbG9yX21hcC5tYWtlICgpIGluXG4gIGxldCBuZWVkX2xubCA9IGNvbG9yaXplIGMgcmVnZXhwIGluXG4gIGxldCAoY29sb3JzLCBjb2xvcl9yZXByLCBuY29sb3IpID0gQ29sb3JfbWFwLmZsYXR0ZW4gYyBpblxuICBsZXQgbG5sID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgZWxzZSAtMSBpblxuICBsZXQgbmNvbG9yID0gaWYgbmVlZF9sbmwgdGhlbiBuY29sb3IgKyAxIGVsc2UgbmNvbG9yIGluXG4gIGxldCBpZHMgPSBBLmNyZWF0ZV9pZHMgKCkgaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCBuYW1lcyA9IHJlZiBbXSBpblxuICBsZXQgKHIsIGtpbmQpID1cbiAgICB0cmFuc2xhdGUgaWRzXG4gICAgICBgRmlyc3QgZmFsc2UgZmFsc2UgYEdyZWVkeSBwb3MgbmFtZXMgKHJlZiBDc2V0LkNTZXRNYXAuZW1wdHkpIGNvbG9ycyByZWdleHAgaW5cbiAgbGV0IHIgPSBlbmZvcmNlX2tpbmQgaWRzIGBGaXJzdCBraW5kIHIgaW5cbiAgKCpGb3JtYXQuZXByaW50ZiBcIjwlZCAlZD5ALlwiICFpZHMgbmNvbDsqKVxuICBta19yZSB+aW5pdGlhbDpyIH5jb2xvcnMgfmNvbG9yX3JlcHIgfm5jb2xvciB+bG5sIH5ncm91cF9uYW1lczooTGlzdC5yZXYgIW5hbWVzKSB+Z3JvdXBfY291bnQ6KCFwb3MgLyAyKVxuXG4oKioqKilcblxubGV0IHJlYyBhbmNob3JlZCA9IGZ1bmN0aW9uXG4gIHwgU2VxdWVuY2UgbCAtPlxuICAgIExpc3QuZXhpc3RzIGFuY2hvcmVkIGxcbiAgfCBBbHRlcm5hdGl2ZSBsIC0+XG4gICAgTGlzdC5mb3JfYWxsIGFuY2hvcmVkIGxcbiAgfCBSZXBlYXQgKHIsIGksIF8pIC0+XG4gICAgaSA+IDAgJiYgYW5jaG9yZWQgclxuICB8IFNldCBfIHwgQmVnX29mX2xpbmUgfCBFbmRfb2ZfbGluZSB8IEJlZ19vZl93b3JkIHwgRW5kX29mX3dvcmRcbiAgfCBOb3RfYm91bmQgfCBFbmRfb2Zfc3RyIHwgTGFzdF9lbmRfb2ZfbGluZSB8IFN0b3BcbiAgfCBJbnRlcnNlY3Rpb24gXyB8IENvbXBsZW1lbnQgXyB8IERpZmZlcmVuY2UgXyAtPlxuICAgIGZhbHNlXG4gIHwgQmVnX29mX3N0ciB8IFN0YXJ0IC0+XG4gICAgdHJ1ZVxuICB8IFNlbSAoXywgcikgfCBTZW1fZ3JlZWR5IChfLCByKSB8IEdyb3VwIChfLCByKSB8IE5vX2dyb3VwIHIgfCBOZXN0IHJcbiAgfCBDYXNlIHIgfCBOb19jYXNlIHIgfCBQbWFyayAoXywgcikgLT5cbiAgICBhbmNob3JlZCByXG5cbigqKioqKVxuXG50eXBlIHQgPSByZWdleHBcblxubGV0IHN0ciBzID1cbiAgbGV0IGwgPSByZWYgW10gaW5cbiAgZm9yIGkgPSBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvd250byAwIGRvXG4gICAgbCA6PSBTZXQgKENzZXQuY3NpbmdsZSBzLltpXSkgOjogIWxcbiAgZG9uZTtcbiAgU2VxdWVuY2UgIWxcbmxldCBjaGFyIGMgPSBTZXQgKENzZXQuY3NpbmdsZSBjKVxuXG5sZXQgYWx0ID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBBbHRlcm5hdGl2ZSBsXG5sZXQgc2VxID0gZnVuY3Rpb25cbiAgfCBbcl0gLT4gclxuICB8IGwgICAtPiBTZXF1ZW5jZSBsXG5cbmxldCBlbXB0eSA9IGFsdCBbXVxubGV0IGVwc2lsb24gPSBzZXEgW11cbmxldCByZXBuIHIgaSBqID1cbiAgaWYgaSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIjtcbiAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgfCBTb21lIGogd2hlbiBqIDwgaSAtPiBpbnZhbGlkX2FyZyBcIlJlLnJlcG5cIlxuICAgIHwgXyAtPiAoKVxuICBlbmQ7XG4gIFJlcGVhdCAociwgaSwgailcbmxldCByZXAgciA9IHJlcG4gciAwIE5vbmVcbmxldCByZXAxIHIgPSByZXBuIHIgMSBOb25lXG5sZXQgb3B0IHIgPSByZXBuIHIgMCAoU29tZSAxKVxubGV0IGJvbCA9IEJlZ19vZl9saW5lXG5sZXQgZW9sID0gRW5kX29mX2xpbmVcbmxldCBib3cgPSBCZWdfb2Zfd29yZFxubGV0IGVvdyA9IEVuZF9vZl93b3JkXG5sZXQgd29yZCByID0gc2VxIFtib3c7IHI7IGVvd11cbmxldCBub3RfYm91bmRhcnkgPSBOb3RfYm91bmRcbmxldCBib3MgPSBCZWdfb2Zfc3RyXG5sZXQgZW9zID0gRW5kX29mX3N0clxubGV0IHdob2xlX3N0cmluZyByID0gc2VxIFtib3M7IHI7IGVvc11cbmxldCBsZW9sID0gTGFzdF9lbmRfb2ZfbGluZVxubGV0IHN0YXJ0ID0gU3RhcnRcbmxldCBzdG9wID0gU3RvcFxubGV0IGxvbmdlc3QgciA9IFNlbSAoYExvbmdlc3QsIHIpXG5sZXQgc2hvcnRlc3QgciA9IFNlbSAoYFNob3J0ZXN0LCByKVxubGV0IGZpcnN0IHIgPSBTZW0gKGBGaXJzdCwgcilcbmxldCBncmVlZHkgciA9IFNlbV9ncmVlZHkgKGBHcmVlZHksIHIpXG5sZXQgbm9uX2dyZWVkeSByID0gU2VtX2dyZWVkeSAoYE5vbl9ncmVlZHksIHIpXG5sZXQgZ3JvdXAgP25hbWUgciA9IEdyb3VwIChuYW1lLCByKVxubGV0IG5vX2dyb3VwIHIgPSBOb19ncm91cCByXG5sZXQgbmVzdCByID0gTmVzdCByXG5sZXQgbWFyayByID0gbGV0IGkgPSBQbWFyay5nZW4gKCkgaW4gKGksUG1hcmsgKGkscikpXG5cbmxldCBzZXQgc3RyID1cbiAgbGV0IHMgPSByZWYgQ3NldC5lbXB0eSBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzdHIgLSAxIGRvXG4gICAgcyA6PSBDc2V0LnVuaW9uIChDc2V0LmNzaW5nbGUgc3RyLltpXSkgIXNcbiAgZG9uZTtcbiAgU2V0ICFzXG5cbmxldCByZyBjIGMnID0gU2V0IChjc2VxIGMgYycpXG5cbmxldCBpbnRlciBsID1cbiAgbGV0IHIgPSBJbnRlcnNlY3Rpb24gbCBpblxuICBpZiBpc19jaGFyc2V0IHIgdGhlblxuICAgIHJcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuaW50ZXJcIlxuXG5sZXQgY29tcGwgbCA9XG4gIGxldCByID0gQ29tcGxlbWVudCBsIGluXG4gIGlmIGlzX2NoYXJzZXQgciB0aGVuXG4gICAgclxuICBlbHNlXG4gICAgaW52YWxpZF9hcmcgXCJSZS5jb21wbFwiXG5cbmxldCBkaWZmIHIgcicgPVxuICBsZXQgcicnID0gRGlmZmVyZW5jZSAociwgcicpIGluXG4gIGlmIGlzX2NoYXJzZXQgcicnIHRoZW5cbiAgICByJydcbiAgZWxzZVxuICAgIGludmFsaWRfYXJnIFwiUmUuZGlmZlwiXG5cbmxldCBhbnkgPSBTZXQgQ3NldC5jYW55XG5sZXQgbm90bmwgPSBTZXQgKENzZXQuZGlmZiBDc2V0LmNhbnkgKENzZXQuY3NpbmdsZSAnXFxuJykpXG5cbmxldCBsb3dlciA9IGFsdCBbcmcgJ2EnICd6JzsgY2hhciAnXFwxODEnOyByZyAnXFwyMjMnICdcXDI0Nic7IHJnICdcXDI0OCcgJ1xcMjU1J11cbmxldCB1cHBlciA9IGFsdCBbcmcgJ0EnICdaJzsgcmcgJ1xcMTkyJyAnXFwyMTQnOyByZyAnXFwyMTYnICdcXDIyMiddXG5sZXQgYWxwaGEgPSBhbHQgW2xvd2VyOyB1cHBlcjsgY2hhciAnXFwxNzAnOyBjaGFyICdcXDE4NiddXG5sZXQgZGlnaXQgPSByZyAnMCcgJzknXG5sZXQgYWxudW0gPSBhbHQgW2FscGhhOyBkaWdpdF1cbmxldCB3b3JkYyA9IGFsdCBbYWxudW07IGNoYXIgJ18nXVxubGV0IGFzY2lpID0gcmcgJ1xcMDAwJyAnXFwxMjcnXG5sZXQgYmxhbmsgPSBzZXQgXCJcXHQgXCJcbmxldCBjbnRybCA9IGFsdCBbcmcgJ1xcMDAwJyAnXFwwMzEnOyByZyAnXFwxMjcnICdcXDE1OSddXG5sZXQgZ3JhcGggPSBhbHQgW3JnICdcXDAzMycgJ1xcMTI2JzsgcmcgJ1xcMTYwJyAnXFwyNTUnXVxubGV0IHByaW50ID0gYWx0IFtyZyAnXFwwMzInICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMjU1J11cbmxldCBwdW5jdCA9XG4gIGFsdCBbcmcgJ1xcMDMzJyAnXFwwNDcnOyByZyAnXFwwNTgnICdcXDA2NCc7IHJnICdcXDA5MScgJ1xcMDk2JztcbiAgICAgICByZyAnXFwxMjMnICdcXDEyNic7IHJnICdcXDE2MCcgJ1xcMTY5JzsgcmcgJ1xcMTcxJyAnXFwxODAnO1xuICAgICAgIHJnICdcXDE4MicgJ1xcMTg1JzsgcmcgJ1xcMTg3JyAnXFwxOTEnOyBjaGFyICdcXDIxNSc7IGNoYXIgJ1xcMjQ3J11cbmxldCBzcGFjZSA9IGFsdCBbY2hhciAnICc7IHJnICdcXDAwOScgJ1xcMDEzJ11cbmxldCB4ZGlnaXQgPSBhbHQgW2RpZ2l0OyByZyAnYScgJ2YnOyByZyAnQScgJ0YnXVxuXG5sZXQgY2FzZSByID0gQ2FzZSByXG5sZXQgbm9fY2FzZSByID0gTm9fY2FzZSByXG5cbigqKioqKVxuXG5sZXQgY29tcGlsZSByID1cbiAgY29tcGlsZV8xIChcbiAgICBpZiBhbmNob3JlZCByIHRoZW5cbiAgICAgIGdyb3VwIHJcbiAgICBlbHNlXG4gICAgICBzZXEgW3Nob3J0ZXN0IChyZXAgYW55KTsgZ3JvdXAgcl1cbiAgKVxuXG5sZXQgZXhlY19pbnRlcm5hbCBuYW1lID8ocG9zPTApID8obGVuID0gLTEpIH5wYXJ0aWFsIH5ncm91cHMgcmUgcyA9XG4gIGlmIHBvcyA8IDAgfHwgbGVuIDwgLTEgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBuYW1lO1xuICBtYXRjaF9zdHIgfmdyb3VwcyB+cGFydGlhbCByZSBzIH5wb3MgfmxlblxuXG5sZXQgZXhlYyA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgXCJSZS5leGVjXCIgP3BvcyA/bGVuIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIHdpdGhcbiAgICBNYXRjaCBzdWJzdHIgLT4gc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZXhlY19vcHQgP3BvcyA/bGVuIHJlIHMgPVxuICBtYXRjaCBleGVjX2ludGVybmFsIFwiUmUuZXhlY19vcHRcIiA/cG9zID9sZW4gfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlXG4gICAgICAgICAgcmUgcyB3aXRoXG4gICAgTWF0Y2ggc3Vic3RyIC0+IFNvbWUgc3Vic3RyXG4gIHwgXyAgICAgICAgICAgIC0+IE5vbmVcblxubGV0IGV4ZWNwID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOmZhbHNlIFwiUmUuZXhlY3BcIiA/cG9zID9sZW4gcmUgcyB3aXRoXG4gICAgTWF0Y2ggX3N1YnN0ciAtPiB0cnVlXG4gIHwgXyAgICAgICAgICAgICAtPiBmYWxzZVxuXG5sZXQgZXhlY19wYXJ0aWFsID9wb3MgP2xlbiByZSBzID1cbiAgbWF0Y2ggZXhlY19pbnRlcm5hbCB+Z3JvdXBzOmZhbHNlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBfIC0+IGBGdWxsXG4gIHwgUnVubmluZyBfIC0+IGBQYXJ0aWFsXG4gIHwgRmFpbGVkICAtPiBgTWlzbWF0Y2hcblxubGV0IGV4ZWNfcGFydGlhbF9kZXRhaWxlZCA/cG9zID9sZW4gcmUgcyA9XG4gIG1hdGNoIGV4ZWNfaW50ZXJuYWwgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOnRydWUgXCJSZS5leGVjX3BhcnRpYWxfZGV0YWlsZWRcIlxuICAgICAgICAgID9wb3MgP2xlbiByZSBzIHdpdGhcbiAgICBNYXRjaCBncm91cCAtPiBgRnVsbCBncm91cFxuICB8IFJ1bm5pbmcgeyBub19tYXRjaF9zdGFydHNfYmVmb3JlIH0gLT4gYFBhcnRpYWwgbm9fbWF0Y2hfc3RhcnRzX2JlZm9yZVxuICB8IEZhaWxlZCAgLT4gYE1pc21hdGNoXG5cbm1vZHVsZSBNYXJrID0gc3RydWN0XG5cbiAgdHlwZSB0ID0gUG1hcmsudFxuXG4gIGxldCB0ZXN0IChnIDogR3JvdXAudCkgcCA9XG4gICAgUG1hcmsuU2V0Lm1lbSBwIGcucG1hcmtzXG5cbiAgbGV0IGFsbCAoZyA6IEdyb3VwLnQpID0gZy5wbWFya3NcblxuICBtb2R1bGUgU2V0ID0gUG1hcmsuU2V0XG5cbiAgbGV0IGVxdWFsID0gUG1hcmsuZXF1YWxcblxuICBsZXQgY29tcGFyZSA9IFBtYXJrLmNvbXBhcmVcblxuZW5kXG5cbnR5cGUgc3BsaXRfdG9rZW4gPVxuICBbIGBUZXh0IG9mIHN0cmluZ1xuICB8IGBEZWxpbSBvZiBHcm91cC50XG4gIF1cblxubW9kdWxlIFJzZXEgPSBzdHJ1Y3RcbiAgbGV0IGFsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAoKiBpbmRleCBvZiB0aGUgZmlyc3QgcG9zaXRpb24gd2UgZG8gbm90IGNvbnNpZGVyLlxuICAgICAgICFwb3MgPCBsaW1pdCBpcyBhbiBpbnZhcmlhbnQgKilcbiAgICBsZXQgbGltaXQgPSBtYXRjaCBsZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgaWYgbDwwIHx8IHBvcytsID4gU3RyaW5nLmxlbmd0aCBzIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5hbGxcIjtcbiAgICAgICAgcG9zK2xcbiAgICBpblxuICAgICgqIGl0ZXJhdGUgb24gbWF0Y2hlcy4gV2hlbiBhIG1hdGNoIGlzIGZvdW5kLCBzZWFyY2ggZm9yIHRoZSBuZXh0XG4gICAgICAgb25lIGp1c3QgYWZ0ZXIgaXRzIGVuZCAqKVxuICAgIGxldCByZWMgYXV4IHBvcyAoKSA9XG4gICAgICBpZiBwb3MgPj0gbGltaXRcbiAgICAgIHRoZW4gU2VxLk5pbCAoKiBubyBtb3JlIG1hdGNoZXMgKilcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzXG4gICAgICAgICAgICAgICAgfnBvcyB+bGVuOihsaW1pdCAtIHBvcykgd2l0aFxuICAgICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICAgIGxldCBwMSwgcDIgPSBHcm91cC5vZmZzZXQgc3Vic3RyIDAgaW5cbiAgICAgICAgICBsZXQgcG9zID0gaWYgcDE9cDIgdGhlbiBwMisxIGVsc2UgcDIgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoc3Vic3RyLCBhdXggcG9zKVxuICAgICAgICB8IFJ1bm5pbmcgX1xuICAgICAgICB8IEZhaWxlZCAtPiBTZXEuTmlsXG4gICAgaW5cbiAgICBhdXggcG9zXG5cbiAgbGV0IG1hdGNoZXMgP3BvcyA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBhbGwgP3BvcyA/bGVuIHJlIHNcbiAgICB8PiBTZXEubWFwIChmdW4gc3ViIC0+IEdyb3VwLmdldCBzdWIgMClcblxuICBsZXQgc3BsaXRfZnVsbCA/KHBvcz0wKSA/bGVuIHJlIHMgOiBfIFNlcS50ID1cbiAgICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5zcGxpdFwiO1xuICAgIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gU3RyaW5nLmxlbmd0aCBzXG4gICAgICB8IFNvbWUgbCAtPlxuICAgICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnNwbGl0XCI7XG4gICAgICAgIHBvcytsXG4gICAgaW5cbiAgICAoKiBpOiBzdGFydCBvZiBkZWxpbWl0ZWQgc3RyaW5nXG4gICAgICAgcG9zOiBmaXJzdCBwb3NpdGlvbiBhZnRlciBsYXN0IG1hdGNoIG9mIFtyZV1cbiAgICAgICBsaW1pdDogZmlyc3QgaW5kZXggd2UgaWdub3JlICghcG9zIDwgbGltaXQgaXMgYW4gaW52YXJpYW50KSAqKVxuICAgIGxldCBwb3MwID0gcG9zIGluXG4gICAgbGV0IHJlYyBhdXggc3RhdGUgaSBwb3MgKCkgPSBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IGBJZGxlIHdoZW4gcG9zID49IGxpbWl0IC0+XG4gICAgICAgIGlmIGkgPCBsaW1pdCB0aGVuIChcbiAgICAgICAgICBsZXQgc3ViID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgc3ViLCBhdXggc3RhdGUgKGkrMSkgcG9zKVxuICAgICAgICApIGVsc2UgU2VxLk5pbFxuICAgICAgfCBgSWRsZSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBtYXRjaF9zdHIgfmdyb3Vwczp0cnVlIH5wYXJ0aWFsOmZhbHNlIHJlIHMgfnBvc1xuICAgICAgICAgICAgICAgICAgICAgIH5sZW46KGxpbWl0IC0gcG9zKSB3aXRoXG4gICAgICAgIHwgTWF0Y2ggc3Vic3RyIC0+XG4gICAgICAgICAgbGV0IHAxLCBwMiA9IEdyb3VwLm9mZnNldCBzdWJzdHIgMCBpblxuICAgICAgICAgIGxldCBwb3MgPSBpZiBwMT1wMiB0aGVuIHAyKzEgZWxzZSBwMiBpblxuICAgICAgICAgIGxldCBvbGRfaSA9IGkgaW5cbiAgICAgICAgICBsZXQgaSA9IHAyIGluXG4gICAgICAgICAgaWYgcDEgPiBwb3MwIHRoZW4gKFxuICAgICAgICAgICAgKCogc3RyaW5nIGRvZXMgbm90IHN0YXJ0IGJ5IGEgZGVsaW1pdGVyICopXG4gICAgICAgICAgICBsZXQgdGV4dCA9IFN0cmluZy5zdWIgcyBvbGRfaSAocDEgLSBvbGRfaSkgaW5cbiAgICAgICAgICAgIGxldCBzdGF0ZSA9IGBZaWVsZCAoYERlbGltIHN1YnN0cikgaW5cbiAgICAgICAgICAgIFNlcS5Db25zIChgVGV4dCB0ZXh0LCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgICAgKSBlbHNlIFNlcS5Db25zIChgRGVsaW0gc3Vic3RyLCBhdXggc3RhdGUgaSBwb3MpXG4gICAgICAgIHwgUnVubmluZyBfIC0+IFNlcS5OaWxcbiAgICAgICAgfCBGYWlsZWQgLT5cbiAgICAgICAgICBpZiBpIDwgbGltaXRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIGxldCB0ZXh0ID0gU3RyaW5nLnN1YiBzIGkgKGxpbWl0IC0gaSkgaW5cbiAgICAgICAgICAgICgqIHlpZWxkIGxhc3Qgc3RyaW5nICopXG4gICAgICAgICAgICBTZXEuQ29ucyAoYFRleHQgdGV4dCwgYXV4IHN0YXRlIGxpbWl0IHBvcylcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIFNlcS5OaWxcbiAgICAgICAgZW5kXG4gICAgICB8IGBZaWVsZCB4IC0+XG4gICAgICAgIFNlcS5Db25zICh4LCBhdXggYElkbGUgaSBwb3MpXG4gICAgaW5cbiAgICBhdXggYElkbGUgcG9zIHBvc1xuXG4gIGxldCBzcGxpdCA/cG9zID9sZW4gcmUgcyA6IF8gU2VxLnQgPVxuICAgIGxldCBzZXEgPSBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIGluXG4gICAgbGV0IHJlYyBmaWx0ZXIgc2VxICgpID0gbWF0Y2ggc2VxICgpICB3aXRoXG4gICAgICB8IFNlcS5OaWwgLT4gU2VxLk5pbFxuICAgICAgfCBTZXEuQ29ucyAoYERlbGltIF8sIHRsKSAtPiBmaWx0ZXIgdGwgKClcbiAgICAgIHwgU2VxLkNvbnMgKGBUZXh0IHMsdGwpIC0+IFNlcS5Db25zIChzLCBmaWx0ZXIgdGwpXG4gICAgaW4gZmlsdGVyIHNlcVxuZW5kXG5cbm1vZHVsZSBSbGlzdCA9IHN0cnVjdFxuICBsZXQgbGlzdF9vZl9zZXEgKHM6J2EgU2VxLnQpIDogJ2EgbGlzdCA9XG4gICAgU2VxLmZvbGRfbGVmdCAoZnVuIGwgeCAtPiB4IDo6IGwpIFtdIHMgfD4gTGlzdC5yZXZcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gbGlzdF9vZl9zZXFcblxuICBsZXQgbWF0Y2hlcyA/cG9zID9sZW4gcmUgcyA9IFJzZXEubWF0Y2hlcyA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuXG4gIGxldCBzcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGxpc3Rfb2Zfc2VxXG5cbiAgbGV0IHNwbGl0ID9wb3MgP2xlbiByZSBzID0gUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBsaXN0X29mX3NlcVxuZW5kXG5cbm1vZHVsZSBHZW4gPSBzdHJ1Y3RcbiAgdHlwZSAnYSBnZW4gPSB1bml0IC0+ICdhIG9wdGlvblxuICBsZXQgZ2VuX29mX3NlcSAoczonYSBTZXEudCkgOiAnYSBnZW4gPVxuICAgIGxldCByID0gcmVmIHMgaW5cbiAgICBmdW4gKCkgLT4gbWF0Y2ggIXIgKCkgd2l0aFxuICAgICAgfCBTZXEuTmlsIC0+IE5vbmVcbiAgICAgIHwgU2VxLkNvbnMgKHgsIHRsKSAtPlxuICAgICAgICByIDo9IHRsO1xuICAgICAgICBTb21lIHhcblxuICBsZXQgc3BsaXQgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdCA/cG9zID9sZW4gcmUgcyB8PiBnZW5fb2Zfc2VxXG5cbiAgbGV0IHNwbGl0X2Z1bGwgP3BvcyA/bGVuIHJlIHMgOiBfIGdlbiA9XG4gICAgUnNlcS5zcGxpdF9mdWxsID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcblxuICBsZXQgYWxsID9wb3MgP2xlbiByZSBzID0gUnNlcS5hbGwgP3BvcyA/bGVuIHJlIHMgfD4gZ2VuX29mX3NlcVxuXG4gIGxldCBtYXRjaGVzID9wb3MgP2xlbiByZSBzID0gUnNlcS5tYXRjaGVzID9wb3MgP2xlbiByZSBzIHw+IGdlbl9vZl9zZXFcbmVuZFxuXG5sZXQgcmVwbGFjZSA/KHBvcz0wKSA/bGVuID8oYWxsPXRydWUpIHJlIH5mIHMgPVxuICBpZiBwb3MgPCAwIHRoZW4gaW52YWxpZF9hcmcgXCJSZS5yZXBsYWNlXCI7XG4gIGxldCBsaW1pdCA9IG1hdGNoIGxlbiB3aXRoXG4gICAgfCBOb25lIC0+IFN0cmluZy5sZW5ndGggc1xuICAgIHwgU29tZSBsIC0+XG4gICAgICBpZiBsPDAgfHwgcG9zK2wgPiBTdHJpbmcubGVuZ3RoIHMgdGhlbiBpbnZhbGlkX2FyZyBcIlJlLnJlcGxhY2VcIjtcbiAgICAgIHBvcytsXG4gIGluXG4gICgqIGJ1ZmZlciBpbnRvIHdoaWNoIHdlIHdyaXRlIHRoZSByZXN1bHQgKilcbiAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgKCogaXRlcmF0ZSBvbiBtYXRjaGVkIHN1YnN0cmluZ3MuICopXG4gIGxldCByZWMgaXRlciBwb3MgPVxuICAgIGlmIHBvcyA8IGxpbWl0XG4gICAgdGhlblxuICAgICAgbWF0Y2ggbWF0Y2hfc3RyIH5ncm91cHM6dHJ1ZSB+cGFydGlhbDpmYWxzZSByZSBzIH5wb3MgfmxlbjoobGltaXQtcG9zKSB3aXRoXG4gICAgICB8IE1hdGNoIHN1YnN0ciAtPlxuICAgICAgICBsZXQgcDEsIHAyID0gR3JvdXAub2Zmc2V0IHN1YnN0ciAwIGluXG4gICAgICAgICgqIGFkZCBzdHJpbmcgYmV0d2VlbiBwcmV2aW91cyBtYXRjaCBhbmQgY3VycmVudCBtYXRjaCAqKVxuICAgICAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBidWYgcyBwb3MgKHAxLXBvcyk7XG4gICAgICAgICgqIHdoYXQgc2hvdWxkIHdlIHJlcGxhY2UgdGhlIG1hdGNoZWQgZ3JvdXAgd2l0aD8gKilcbiAgICAgICAgbGV0IHJlcGxhY2luZyA9IGYgc3Vic3RyIGluXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiByZXBsYWNpbmc7XG4gICAgICAgIGlmIGFsbCB0aGVuXG4gICAgICAgICAgKCogaWYgd2UgbWF0Y2hlZCBhIG5vbi1jaGFyIGUuZy4gXiB3ZSBtdXN0IG1hbnVhbGx5IGFkdmFuY2UgYnkgMSAqKVxuICAgICAgICAgIGl0ZXIgKFxuICAgICAgICAgICAgaWYgcDE9cDIgdGhlbiAoXG4gICAgICAgICAgICAgICgqIGEgbm9uIGNoYXIgY291bGQgYmUgcGFzdCB0aGUgZW5kIG9mIHN0cmluZy4gZS5nLiAkICopXG4gICAgICAgICAgICAgIGlmIHAyIDwgbGltaXQgdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmIHMuW3AyXTtcbiAgICAgICAgICAgICAgcDIrMVxuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIHAyKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYnVmIHMgcDIgKGxpbWl0LXAyKVxuICAgICAgfCBSdW5uaW5nIF8gLT4gKClcbiAgICAgIHwgRmFpbGVkIC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIGJ1ZiBzIHBvcyAobGltaXQtcG9zKVxuICBpblxuICBpdGVyIHBvcztcbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG5sZXQgcmVwbGFjZV9zdHJpbmcgP3BvcyA/bGVuID9hbGwgcmUgfmJ5IHMgPVxuICByZXBsYWNlID9wb3MgP2xlbiA/YWxsIHJlIHMgfmY6KGZ1biBfIC0+IGJ5KVxuXG5sZXQgd2l0bmVzcyB0ID1cbiAgbGV0IHJlYyB3aXRuZXNzID0gZnVuY3Rpb25cbiAgICB8IFNldCBjIC0+IFN0cmluZy5tYWtlIDEgKENoYXIuY2hyIChDc2V0LnBpY2sgYykpXG4gICAgfCBTZXF1ZW5jZSB4cyAtPiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHdpdG5lc3MgeHMpXG4gICAgfCBBbHRlcm5hdGl2ZSAoeCA6OiBfKSAtPiB3aXRuZXNzIHhcbiAgICB8IEFsdGVybmF0aXZlIFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgUmVwZWF0IChyLCBmcm9tLCBfdG8pIC0+XG4gICAgICBsZXQgdyA9IHdpdG5lc3MgciBpblxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIChTdHJpbmcubGVuZ3RoIHcgKiBmcm9tKSBpblxuICAgICAgZm9yIF9pPTEgdG8gZnJvbSBkb1xuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIHdcbiAgICAgIGRvbmU7XG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIHwgTm9fY2FzZSByIC0+IHdpdG5lc3MgclxuICAgIHwgSW50ZXJzZWN0aW9uIF9cbiAgICB8IENvbXBsZW1lbnQgX1xuICAgIHwgRGlmZmVyZW5jZSAoXywgXykgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBHcm91cCAoXywgcilcbiAgICB8IE5vX2dyb3VwIHJcbiAgICB8IE5lc3QgclxuICAgIHwgU2VtIChfLCByKVxuICAgIHwgUG1hcmsgKF8sIHIpXG4gICAgfCBDYXNlIHJcbiAgICB8IFNlbV9ncmVlZHkgKF8sIHIpIC0+IHdpdG5lc3MgclxuICAgIHwgQmVnX29mX2xpbmVcbiAgICB8IEVuZF9vZl9saW5lXG4gICAgfCBCZWdfb2Zfd29yZFxuICAgIHwgRW5kX29mX3dvcmRcbiAgICB8IE5vdF9ib3VuZFxuICAgIHwgQmVnX29mX3N0clxuICAgIHwgTGFzdF9lbmRfb2ZfbGluZVxuICAgIHwgU3RhcnRcbiAgICB8IFN0b3BcbiAgICB8IEVuZF9vZl9zdHIgLT4gXCJcIiBpblxuICB3aXRuZXNzIChoYW5kbGVfY2FzZSBmYWxzZSB0KVxuXG5tb2R1bGUgU2VxID0gUnNlcVxubW9kdWxlIExpc3QgPSBSbGlzdFxubW9kdWxlIEdyb3VwID0gR3JvdXBcblxuKCoqIHsyIERlcHJlY2F0ZWQgZnVuY3Rpb25zfSAqKVxuXG5sZXQgc3BsaXRfZnVsbF9zZXEgPSBTZXEuc3BsaXRfZnVsbFxubGV0IHNwbGl0X3NlcSA9IFNlcS5zcGxpdFxubGV0IG1hdGNoZXNfc2VxID0gU2VxLm1hdGNoZXNcbmxldCBhbGxfc2VxID0gU2VxLmFsbFxuXG50eXBlICdhIGdlbiAgICAgICAgPSAnYSBHZW4uZ2VuXG5sZXQgYWxsX2dlbiAgICAgICAgPSBHZW4uYWxsXG5sZXQgbWF0Y2hlc19nZW4gICAgPSBHZW4ubWF0Y2hlc1xubGV0IHNwbGl0X2dlbiAgICAgID0gR2VuLnNwbGl0XG5sZXQgc3BsaXRfZnVsbF9nZW4gPSBHZW4uc3BsaXRfZnVsbFxuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcblxubGV0IGdldCA9IEdyb3VwLmdldFxubGV0IGdldF9vZnMgPSBHcm91cC5vZmZzZXRcbmxldCBnZXRfYWxsID0gR3JvdXAuYWxsXG5sZXQgZ2V0X2FsbF9vZnMgPSBHcm91cC5hbGxfb2Zmc2V0XG5sZXQgdGVzdCA9IEdyb3VwLnRlc3RcblxudHlwZSBtYXJraWQgPSBNYXJrLnRcblxubGV0IG1hcmtlZCA9IE1hcmsudGVzdFxubGV0IG1hcmtfc2V0ID0gTWFyay5hbGxcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqXG5JbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJldmlvdXMgY2hhcmFjdGVyOlxuLSBkb2VzIG5vdCBleGlzdHNcbi0gaXMgYSBsZXR0ZXJcbi0gaXMgbm90IGEgbGV0dGVyXG4tIGlzIGEgbmV3bGluZVxuLSBpcyBsYXN0IG5ld2xpbmVcblxuQmVnaW5uaW5nIG9mIHdvcmQ6XG4tIHByZXZpb3VzIGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIGEgbGV0dGVyIG9yIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiB3b3JkOlxuLSBwcmV2aW91cyBpcyBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuLSBjdXJyZW50IGlzIG5vdCBhIGxldHRlciBvciBkb2VzIG5vdCBleGlzdFxuXG5CZWdpbm5pbmcgb2YgbGluZTpcbi0gcHJldmlvdXMgaXMgYSBuZXdsaW5lIG9yIGRvZXMgbm90IGV4aXN0XG5cbkJlZ2lubmluZyBvZiBidWZmZXI6XG4tIHByZXZpb3VzIGRvZXMgbm90IGV4aXN0XG5cbkVuZCBvZiBidWZmZXJcbi0gY3VycmVudCBkb2VzIG5vdCBleGlzdFxuXG5FbmQgb2YgbGluZVxuLSBjdXJyZW50IGlzIGEgbmV3bGluZSBvciBkb2VzIG5vdCBleGlzdFxuKilcblxuKCpcblJlcDogZSA9IFQsZSB8ICgpXG4gIC0gc2VtYW50aWNzIG9mIHRoZSBjb21tYSAoc2hvcnRlc3QvbG9uZ2VzdC9maXJzdClcbiAgLSBzZW1hbnRpY3Mgb2YgdGhlIHVuaW9uIChncmVlZHkvbm9uLWdyZWVkeSlcblxuQm91bmRlZCByZXBldGl0aW9uXG4gIGF7MCwzfSA9IChhLChhLGE/KT8pP1xuKilcblxudHlwZSBncm91cHMgPSBHcm91cC50XG5cbmluY2x1ZGUgUmxpc3RcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcGFyc2UgcyA9XG4gIGxldCBpID0gcmVmIDAgaW5cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGVvcyAoKSA9ICFpID0gbCBpblxuICBsZXQgdGVzdCBjID0gbm90IChlb3MgKCkpICYmIHMuWyFpXSA9IGMgaW5cbiAgbGV0IHRlc3QyIGMgYycgPSAhaSArIDEgPCBsICYmIHMuWyFpXSA9IGMgJiYgcy5bIWkgKyAxXSA9IGMnIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdDIgYyBjJyA9IGxldCByID0gdGVzdDIgYyBjJyBpbiBpZiByIHRoZW4gaSA6PSAhaSArIDI7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuXG4gIGxldCByZWMgcmVnZXhwICgpID0gcmVnZXhwJyAoYnJhbmNoICgpKVxuICBhbmQgcmVnZXhwJyBsZWZ0ID1cbiAgICBpZiBhY2NlcHQyICdcXFxcJyAnfCcgdGhlbiByZWdleHAnIChSZS5hbHQgW2xlZnQ7IGJyYW5jaCAoKV0pIGVsc2UgbGVmdFxuICBhbmQgYnJhbmNoICgpID0gYnJhbmNoJyBbXVxuICBhbmQgYnJhbmNoJyBsZWZ0ID1cbiAgICBpZiBlb3MgKCkgfHwgdGVzdDIgJ1xcXFwnICd8JyB8fCB0ZXN0MiAnXFxcXCcgJyknIHRoZW4gUmUuc2VxIChMaXN0LnJldiBsZWZ0KVxuICAgIGVsc2UgYnJhbmNoJyAocGllY2UgKCkgOjogbGVmdClcbiAgYW5kIHBpZWNlICgpID1cbiAgICBsZXQgciA9IGF0b20gKCkgaW5cbiAgICBpZiBhY2NlcHQgJyonIHRoZW4gUmUucmVwIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnKycgdGhlbiBSZS5yZXAxIHIgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgUmUuYm9sXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICckJyB0aGVuIGJlZ2luXG4gICAgICBSZS5lb2xcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnXicgdGhlblxuICAgICAgICBSZS5jb21wbCAoYnJhY2tldCBbXSlcbiAgICAgIGVsc2VcbiAgICAgICAgUmUuYWx0IChicmFja2V0IFtdKVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICcoJyB0aGVuIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0MiAnXFxcXCcgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBSZS5ncm91cCByXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ2AnIHRoZW5cbiAgICAgICAgUmUuYm9zXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnXFwnJyB0aGVuXG4gICAgICAgIFJlLmVvc1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz0nIHRoZW5cbiAgICAgICAgUmUuc3RhcnRcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdiJyB0aGVuXG4gICAgICAgIFJlLmFsdCBbUmUuYm93OyBSZS5lb3ddXG4gICAgICBlbHNlIGlmIGFjY2VwdCAnQicgdGhlblxuICAgICAgICBSZS5ub3RfYm91bmRhcnlcbiAgICAgIGVsc2UgaWYgYWNjZXB0ICc8JyB0aGVuXG4gICAgICAgIFJlLmJvd1xuICAgICAgZWxzZSBpZiBhY2NlcHQgJz4nIHRoZW5cbiAgICAgICAgUmUuZW93XG4gICAgICBlbHNlIGlmIGFjY2VwdCAndycgdGhlblxuICAgICAgICBSZS5hbHQgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ11cbiAgICAgIGVsc2UgaWYgYWNjZXB0ICdXJyB0aGVuXG4gICAgICAgIFJlLmNvbXBsIFtSZS5hbG51bTsgUmUuY2hhciAnXyddXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICdbJyB8ICddJyB8ICcuJyB8ICdeJyB8ICckJyB8ICdcXFxcJyBhcyBjIC0+XG4gICAgICAgICAgICBSZS5jaGFyIGNcbiAgICAgICAgfCAnMCcgLi4gJzknIC0+XG4gICAgICAgICAgICByYWlzZSBOb3Rfc3VwcG9ydGVkXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZFxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgYyAgICAgICAgLT4gUmUuY2hhciBjXG4gICAgZW5kXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICBpZiBhY2NlcHQgJy0nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICBsZXQgYycgPSBjaGFyICgpIGluXG4gICAgICAgICAgYnJhY2tldCAoUmUucmcgYyBjJyA6OiBzKVxuICAgICAgICBlbmRcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgZ2V0ICgpXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG5sZXQgcmUgPyhjYXNlID0gdHJ1ZSkgcyA9IGxldCByID0gcGFyc2UgcyBpbiBpZiBjYXNlIHRoZW4gciBlbHNlIFJlLm5vX2Nhc2UgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KGNhc2UgPSB0cnVlKSBzID0gY29tcGlsZSAocmUgfmNhc2UgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgT2JqZWN0aXZlIENhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICBDb3B5cmlnaHQgMTk5NiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0ICAgKilcbigqICBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgICAgKilcbigqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIHdpdGggICAgKilcbigqICBsaW5raW5nIGV4Y2VwdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogTW9kaWZpZWQgYnkgSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyIGZvciBpbnRlZ3JhdGlvbiBpbiBSRSAqKVxuXG4oKiAkSWQ6IHJlX3N0ci5tbCx2IDEuMyAyMDAyLzA3LzAzIDE1OjQ3OjU0IHZvdWlsbG9uIEV4cCAkICopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxudHlwZSByZWdleHAgPVxuICB7IHJlOiBSZS50XG4gIDsgbXRjaDogUmUucmUgTGF6eS50XG4gIDsgc3JjaDogUmUucmUgTGF6eS50IH1cblxubGV0IGNvbXBpbGVfcmVnZXhwIHMgYyA9XG4gIGxldCByZSA9IEVtYWNzLnJlIH5jYXNlOihub3QgYykgcyBpblxuICB7IHJlXG4gIDsgbXRjaCA9IGxhenkgKFJlLmNvbXBpbGUgKFJlLnNlcSBbUmUuc3RhcnQ7IHJlXSkpXG4gIDsgc3JjaCA9IGxhenkgKFJlLmNvbXBpbGUgcmUpIH1cblxubGV0IHN0YXRlID0gcmVmIE5vbmVcblxubGV0IHN0cmluZ19tYXRjaCByZSBzIHAgPVxuICB0cnlcbiAgICBzdGF0ZSA6PSBTb21lIChSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5tdGNoKSBzKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBmYWxzZVxuXG5sZXQgc3RyaW5nX3BhcnRpYWxfbWF0Y2ggcmUgcyBwID1cbiAgbWF0Y2hcbiAgICBSZS5leGVjX3BhcnRpYWwgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHNcbiAgd2l0aFxuICAgIGBGdWxsICAgICAtPiBzdHJpbmdfbWF0Y2ggcmUgcyBwXG4gIHwgYFBhcnRpYWwgIC0+IHRydWVcbiAgfCBgTWlzbWF0Y2ggLT4gZmFsc2VcblxubGV0IHNlYXJjaF9mb3J3YXJkIHJlIHMgcCA9XG4gIHRyeVxuICAgIGxldCByZXMgPSBSZS5leGVjIH5wb3M6cCAoTGF6eS5mb3JjZSByZS5zcmNoKSBzIGluXG4gICAgc3RhdGUgOj0gU29tZSByZXM7XG4gICAgZnN0IChSZS5Hcm91cC5vZmZzZXQgcmVzIDApXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICByYWlzZSBOb3RfZm91bmRcblxubGV0IHJlYyBzZWFyY2hfYmFja3dhcmQgcmUgcyBwID1cbiAgdHJ5XG4gICAgbGV0IHJlcyA9IFJlLmV4ZWMgfnBvczpwIChMYXp5LmZvcmNlIHJlLm10Y2gpIHMgaW5cbiAgICBzdGF0ZSA6PSBTb21lIHJlcztcbiAgICBwXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgc3RhdGUgOj0gTm9uZTtcbiAgICBpZiBwID0gMCB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlXG4gICAgICBzZWFyY2hfYmFja3dhcmQgcmUgcyAocCAtIDEpXG5cbmxldCB2YWxpZF9ncm91cCBuID1cbiAgbiA+PSAwICYmIG4gPCAxMCAmJiAoXG4gICAgbWF0Y2ggIXN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgbSAtPiBuIDwgUmUuR3JvdXAubmJfZ3JvdXBzIG1cbiAgKVxuXG5sZXQgb2Zmc2V0X2dyb3VwIGkgPVxuICBtYXRjaCAhc3RhdGUgd2l0aFxuICB8IFNvbWUgbSAtPiBSZS5Hcm91cC5vZmZzZXQgbSBpXG4gIHwgTm9uZSAgIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgZ3JvdXBfbGVuIGkgPVxuICB0cnlcbiAgICBsZXQgKGIsIGUpID0gb2Zmc2V0X2dyb3VwIGkgaW5cbiAgICBlIC0gYlxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIDBcblxubGV0IHJlYyByZXBsX2xlbmd0aCByZXBsIHAgcSBsZW4gPVxuICBpZiBwIDwgbGVuIHRoZW4gYmVnaW5cbiAgICBpZiByZXBsLltwXSA8PiAnXFxcXCcgdGhlblxuICAgICAgcmVwbF9sZW5ndGggcmVwbCAocCArIDEpIChxICsgMSkgbGVuXG4gICAgZWxzZSBiZWdpblxuICAgICAgbGV0IHAgPSBwICsgMSBpblxuICAgICAgaWYgcCA9IGxlbiB0aGVuIGZhaWx3aXRoIFwiU3RyLnJlcGxhY2U6IGlsbGVnYWwgYmFja3NsYXNoIHNlcXVlbmNlXCI7XG4gICAgICBsZXQgcSA9XG4gICAgICAgIG1hdGNoIHJlcGwuW3BdIHdpdGhcbiAgICAgICAgfCAnXFxcXCcgLT4gcSArIDFcbiAgICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT4gcSArIGdyb3VwX2xlbiAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKVxuICAgICAgICB8IF8gLT4gcSArIDIgaW5cbiAgICAgIHJlcGxfbGVuZ3RoIHJlcGwgKHAgKyAxKSBxIGxlblxuICAgIGVuZFxuICBlbmQgZWxzZVxuICAgIHFcblxubGV0IHJlYyByZXBsYWNlIG9yaWcgcmVwbCBwIHJlcyBxIGxlbiA9XG4gIGlmIHAgPCBsZW4gdGhlbiBiZWdpblxuICAgIGxldCBjID0gcmVwbC5bcF0gaW5cbiAgICBpZiBjIDw+ICdcXFxcJyB0aGVuIGJlZ2luXG4gICAgICBCeXRlcy5zZXQgcmVzIHEgYztcbiAgICAgIHJlcGxhY2Ugb3JpZyByZXBsIChwICsgMSkgcmVzIChxICsgMSkgbGVuXG4gICAgZW5kIGVsc2UgYmVnaW5cbiAgICAgIG1hdGNoIHJlcGwuW3AgKyAxXSB3aXRoXG4gICAgICAgICdcXFxcJyAtPlxuICAgICAgICBCeXRlcy5zZXQgcmVzIHEgJ1xcXFwnO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDEpIGxlblxuICAgICAgfCAnMCcgLi4gJzknIGFzIGMgLT5cbiAgICAgICAgbGV0IGQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCAoQ2hhci5jb2RlIGMgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICAgICAgbGV0IGQgPSBlIC0gYiBpblxuICAgICAgICAgICAgaWYgZCA+IDAgdGhlbiBTdHJpbmcuYmxpdCBvcmlnIGIgcmVzIHEgZDtcbiAgICAgICAgICAgIGRcbiAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgMFxuICAgICAgICBpblxuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIGQpIGxlblxuICAgICAgfCBjIC0+XG4gICAgICAgIEJ5dGVzLnNldCByZXMgcSAnXFxcXCc7XG4gICAgICAgIEJ5dGVzLnNldCByZXMgKHEgKyAxKSBjO1xuICAgICAgICByZXBsYWNlIG9yaWcgcmVwbCAocCArIDIpIHJlcyAocSArIDIpIGxlblxuICAgIGVuZFxuICBlbmRcblxubGV0IHJlcGxhY2VtZW50X3RleHQgcmVwbCBvcmlnID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcmVwbCBpblxuICBsZXQgcmVzID0gQnl0ZXMuY3JlYXRlIChyZXBsX2xlbmd0aCByZXBsIDAgMCBsZW4pIGluXG4gIHJlcGxhY2Ugb3JpZyByZXBsIDAgcmVzIDAgKFN0cmluZy5sZW5ndGggcmVwbCk7XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcmVzXG5cbmxldCBxdW90ZSBzID1cbiAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAoMiAqIGxlbikgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAnWycgfCAnXScgfCAnKicgfCAnLicgfCAnXFxcXCcgfCAnPycgfCAnKycgfCAnXicgfCAnJCcgYXMgYyAtPlxuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnXFxcXCc7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYnVmIGNcbiAgICB8IGMgLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiBjXG4gIGRvbmU7XG4gIEJ1ZmZlci5jb250ZW50cyBidWZcblxubGV0IHN0cmluZ19iZWZvcmUgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgc3RyaW5nX2FmdGVyIHMgbiA9IFN0cmluZy5zdWIgcyBuIChTdHJpbmcubGVuZ3RoIHMgLSBuKVxuXG5sZXQgZmlyc3RfY2hhcnMgcyBuID0gU3RyaW5nLnN1YiBzIDAgblxuXG5sZXQgbGFzdF9jaGFycyBzIG4gPSBTdHJpbmcuc3ViIHMgKFN0cmluZy5sZW5ndGggcyAtIG4pIG5cblxubGV0IHJlZ2V4cCBlID0gY29tcGlsZV9yZWdleHAgZSBmYWxzZVxuXG5sZXQgcmVnZXhwX2Nhc2VfZm9sZCBlID0gY29tcGlsZV9yZWdleHAgZSB0cnVlXG5cbmxldCByZWdleHBfc3RyaW5nIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgZmFsc2VcblxubGV0IHJlZ2V4cF9zdHJpbmdfY2FzZV9mb2xkIHMgPSBjb21waWxlX3JlZ2V4cCAocXVvdGUgcykgdHJ1ZVxuXG5sZXQgZ3JvdXBfYmVnaW5uaW5nIG4gPVxuICBpZiBub3QgKHZhbGlkX2dyb3VwIG4pIHRoZW4gaW52YWxpZF9hcmcgXCJTdHIuZ3JvdXBfYmVnaW5uaW5nXCI7XG4gIGxldCBwb3MgPSBmc3QgKG9mZnNldF9ncm91cCBuKSBpblxuICBpZiBwb3MgPSAtMSB0aGVuXG4gICAgcmFpc2UgTm90X2ZvdW5kXG4gIGVsc2VcbiAgICBwb3NcblxubGV0IGdyb3VwX2VuZCBuID1cbiAgaWYgbm90ICh2YWxpZF9ncm91cCBuKSB0aGVuIGludmFsaWRfYXJnIFwiU3RyLmdyb3VwX2VuZFwiO1xuICBsZXQgcG9zID0gc25kIChvZmZzZXRfZ3JvdXAgbikgaW5cbiAgaWYgcG9zID0gLTEgdGhlblxuICAgIHJhaXNlIE5vdF9mb3VuZFxuICBlbHNlXG4gICAgcG9zXG5cbmxldCBtYXRjaGVkX2dyb3VwIG4gdHh0ID1cbiAgbGV0IChiLCBlKSA9IG9mZnNldF9ncm91cCBuIGluXG4gIFN0cmluZy5zdWIgdHh0IGIgKGUgLSBiKVxuXG5sZXQgcmVwbGFjZV9tYXRjaGVkIHJlcGwgbWF0Y2hlZCA9IHJlcGxhY2VtZW50X3RleHQgcmVwbCBtYXRjaGVkXG5cbmxldCBtYXRjaF9iZWdpbm5pbmcgKCkgPSBncm91cF9iZWdpbm5pbmcgMFxuYW5kIG1hdGNoX2VuZCAoKSA9IGdyb3VwX2VuZCAwXG5hbmQgbWF0Y2hlZF9zdHJpbmcgdHh0ID0gbWF0Y2hlZF9ncm91cCAwIHR4dFxuXG5sZXQgc3Vic3RpdHV0ZV9maXJzdCBleHByIHJlcGxfZnVuIHRleHQgPVxuICB0cnlcbiAgICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgZXhwciB0ZXh0IDAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgW3N0cmluZ19iZWZvcmUgdGV4dCBwb3M7XG4gICAgICAgICAgICAgICAgICAgICAgcmVwbF9mdW4gdGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfYWZ0ZXIgdGV4dCAobWF0Y2hfZW5kICgpKV1cbiAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICB0ZXh0XG5cbmxldCBnbG9iYWxfc3Vic3RpdHV0ZSBleHByIHJlcGxfZnVuIHRleHQgPVxuICBsZXQgcmVjIHJlcGxhY2UgYWNjdSBzdGFydCBsYXN0X3dhc19lbXB0eSA9XG4gICAgbGV0IHN0YXJ0cG9zID0gaWYgbGFzdF93YXNfZW1wdHkgdGhlbiBzdGFydCArIDEgZWxzZSBzdGFydCBpblxuICAgIGlmIHN0YXJ0cG9zID4gU3RyaW5nLmxlbmd0aCB0ZXh0IHRoZW5cbiAgICAgIChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHNlYXJjaF9mb3J3YXJkIGV4cHIgdGV4dCBzdGFydHBvcyB3aXRoXG4gICAgICB8IHBvcyAtPlxuICAgICAgICBsZXQgZW5kX3BvcyA9IG1hdGNoX2VuZCAoKSBpblxuICAgICAgICBsZXQgcmVwbF90ZXh0ID0gcmVwbF9mdW4gdGV4dCBpblxuICAgICAgICByZXBsYWNlIChyZXBsX3RleHQgOjogU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgZW5kX3BvcyAoZW5kX3BvcyA9IHBvcylcbiAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgaW5cbiAgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiAocmVwbGFjZSBbXSAwIGZhbHNlKSlcblxubGV0IGdsb2JhbF9yZXBsYWNlIGV4cHIgcmVwbCB0ZXh0ID1cbiAgZ2xvYmFsX3N1YnN0aXR1dGUgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5hbmQgcmVwbGFjZV9maXJzdCBleHByIHJlcGwgdGV4dCA9XG4gIHN1YnN0aXR1dGVfZmlyc3QgZXhwciAocmVwbGFjZW1lbnRfdGV4dCByZXBsKSB0ZXh0XG5cbmxldCBzZWFyY2hfZm9yd2FyZF9wcm9ncmVzcyByZSBzIHAgPVxuICBsZXQgcG9zID0gc2VhcmNoX2ZvcndhcmQgcmUgcyBwIGluXG4gIGlmIG1hdGNoX2VuZCAoKSA+IHAgdGhlblxuICAgIHBvc1xuICBlbHNlIGlmIHAgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgIHNlYXJjaF9mb3J3YXJkIHJlIHMgKHAgKyAxKVxuICBlbHNlXG4gICAgcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBib3VuZGVkX3NwbGl0IGV4cHIgdGV4dCBudW0gPVxuICBsZXQgc3RhcnQgPVxuICAgIGlmIHN0cmluZ19tYXRjaCBleHByIHRleHQgMCB0aGVuIG1hdGNoX2VuZCAoKSBlbHNlIDAgaW5cbiAgbGV0IHJlYyBzcGxpdCBhY2N1IHN0YXJ0IG4gPVxuICAgIGlmIHN0YXJ0ID49IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoKFN0cmluZy5zdWIgdGV4dCBzdGFydCAocG9zLXN0YXJ0KSkgOjogYWNjdSlcbiAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3UgaW5cbiAgTGlzdC5yZXYgKHNwbGl0IFtdIHN0YXJ0IG51bSlcblxubGV0IHNwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfc3BsaXQgZXhwciB0ZXh0IDBcblxubGV0IGJvdW5kZWRfc3BsaXRfZGVsaW0gZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+IFN0cmluZy5sZW5ndGggdGV4dCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBuID0gMSB0aGVuXG4gICAgICAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBzcGxpdCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3Mtc3RhcnQpIDo6IGFjY3UpXG4gICAgICAgICAgKG1hdGNoX2VuZCAoKSkgKG4gLSAxKVxuICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgKHN0cmluZ19hZnRlciB0ZXh0IHN0YXJ0KSA6OiBhY2N1IGluXG4gIGlmIHRleHQgPSBcIlwiIHRoZW5cbiAgICBbXVxuICBlbHNlXG4gICAgTGlzdC5yZXYgKHNwbGl0IFtdIDAgbnVtKVxuXG5sZXQgc3BsaXRfZGVsaW0gZXhwciB0ZXh0ID0gYm91bmRlZF9zcGxpdF9kZWxpbSBleHByIHRleHQgMFxuXG50eXBlIHNwbGl0X3Jlc3VsdCA9IFRleHQgb2Ygc3RyaW5nIHwgRGVsaW0gb2Ygc3RyaW5nXG5cbmxldCBib3VuZGVkX2Z1bGxfc3BsaXQgZXhwciB0ZXh0IG51bSA9XG4gIGxldCByZWMgc3BsaXQgYWNjdSBzdGFydCBuID1cbiAgICBpZiBzdGFydCA+PSBTdHJpbmcubGVuZ3RoIHRleHQgdGhlblxuICAgICAgYWNjdVxuICAgIGVsc2UgaWYgbiA9IDEgdGhlblxuICAgICAgVGV4dCAoc3RyaW5nX2FmdGVyIHRleHQgc3RhcnQpIDo6IGFjY3VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBvcyA9IHNlYXJjaF9mb3J3YXJkX3Byb2dyZXNzIGV4cHIgdGV4dCBzdGFydCBpblxuICAgICAgICBsZXQgcyA9IG1hdGNoZWRfc3RyaW5nIHRleHQgaW5cbiAgICAgICAgaWYgcG9zID4gc3RhcnQgdGhlblxuICAgICAgICAgIHNwbGl0IChEZWxpbSAocykgOjpcbiAgICAgICAgICAgICAgICAgVGV4dCAoU3RyaW5nLnN1YiB0ZXh0IHN0YXJ0IChwb3MgLSBzdGFydCkpIDo6XG4gICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzcGxpdCAoRGVsaW0gKHMpIDo6IGFjY3UpXG4gICAgICAgICAgICAobWF0Y2hfZW5kICgpKSAobiAtIDEpXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICBUZXh0IChzdHJpbmdfYWZ0ZXIgdGV4dCBzdGFydCkgOjogYWNjdSBpblxuICBMaXN0LnJldiAoc3BsaXQgW10gMCBudW0pXG5cbmxldCBmdWxsX3NwbGl0IGV4cHIgdGV4dCA9IGJvdW5kZWRfZnVsbF9zcGxpdCBleHByIHRleHQgMFxuIiwiKCpcbiAgIFJFIC0gQSByZWd1bGFyIGV4cHJlc3Npb24gbGlicmFyeVxuXG4gICBDb3B5cmlnaHQgKEMpIDIwMDEgSmVyb21lIFZvdWlsbG9uXG4gICBlbWFpbDogSmVyb21lLlZvdWlsbG9uQHBwcy5qdXNzaWV1LmZyXG5cbiAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3JcbiAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGhcbiAgIGxpbmtpbmcgZXhjZXB0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdFxuICAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVVxuICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cblxuICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpY1xuICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQVxuKilcblxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcblxudHlwZSBlbmNsb3NlZCA9XG4gIHwgQ2hhciBvZiBjaGFyXG4gIHwgUmFuZ2Ugb2YgY2hhciAqIGNoYXJcblxudHlwZSBwaWVjZSA9XG4gIHwgRXhhY3RseSBvZiBjaGFyXG4gIHwgQW55X29mIG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBBbnlfYnV0IG9mIGVuY2xvc2VkIGxpc3RcbiAgfCBPbmVcbiAgfCBNYW55XG4gIHwgTWFueU1hbnlcblxudHlwZSB0ID0gcGllY2UgbGlzdFxuXG5sZXQgb2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcyA6IHQgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHJlYWQgYyA9XG4gICAgbGV0IHIgPSBub3QgKGVvcyAoKSkgJiYgcy5bIWldID0gYyBpblxuICAgIGlmIHIgdGhlbiBpbmNyIGk7XG4gICAgclxuICBpblxuXG4gICgqKlxuICAgW3JlYWRfYWhlYWQgcGF0dGVybl0gd2lsbCBhdHRlbXB0IHRvIHJlYWQgW3BhdHRlcm5dIGFuZCB3aWxsIHJldHVybiBbdHJ1ZV0gaWYgaXQgd2FzIHN1Y2Nlc3NmdWwuXG4gICBJZiBpdCBmYWlscywgaXQgd2lsbCByZXR1cm4gW2ZhbHNlXSBhbmQgbm90IGluY3JlbWVudCB0aGUgcmVhZCBpbmRleC5cbiAgKilcbiAgbGV0IHJlYWRfYWhlYWQgcGF0dGVybiA9XG4gICAgbGV0IHBhdHRlcm5fbGVuID0gU3RyaW5nLmxlbmd0aCBwYXR0ZXJuIGluXG4gICAgKCogaWYgdGhlIHBhdHRlcm4gd2UgYXJlIGxvb2tpbmcgZm9yIGV4ZWVkcyB0aGUgcmVtYWluaW5nIGxlbmd0aCBvZiBzLCByZXR1cm4gZmFsc2UgaW1tZWRpYXRlbHkgKilcbiAgICBpZiAhaSArIHBhdHRlcm5fbGVuID49IGwgdGhlblxuICAgICAgZmFsc2VcbiAgICBlbHNlXG4gICAgICB0cnlcbiAgICAgICAgZm9yIGogPSAwIHRvIHBhdHRlcm5fbGVuIC0gMSBkb1xuICAgICAgICAgIGxldCBmb3VuZCA9IG5vdCAoZW9zICgpKSAmJiBzLlshaSArIGpdID0gcGF0dGVybi5bal0gaW5cbiAgICAgICAgICBpZiBub3QgZm91bmQgdGhlbiByYWlzZV9ub3RyYWNlIEV4aXQ7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGkgOj0gIWkgKyBwYXR0ZXJuX2xlbjtcbiAgICAgICAgdHJ1ZVxuICAgICAgd2l0aCB8IEV4aXQgIC0+IGZhbHNlXG4gIGluXG5cbiAgbGV0IGNoYXIgKCkgPVxuICAgIGlnbm9yZSAocmVhZCAnXFxcXCcgOiBib29sKTtcbiAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICBsZXQgciA9IHMuWyFpXSBpblxuICAgIGluY3IgaTtcbiAgICByXG4gIGluXG5cbiAgbGV0IGVuY2xvc2VkICgpIDogZW5jbG9zZWQgbGlzdCA9XG4gICAgbGV0IHJlYyBsb29wIHMgPVxuICAgICAgKCogVGhpcyByZXR1cm5zIHRoZSBsaXN0IGluIHJldmVyc2Ugb3JkZXIsIGJ1dCBvcmRlciBpc24ndCBpbXBvcnRhbnQgYW55d2F5ICopXG4gICAgICBpZiBzIDw+IFtdICYmIHJlYWQgJ10nXG4gICAgICB0aGVuIHNcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IGMgPSBjaGFyICgpIGluXG4gICAgICAgIGlmIG5vdCAocmVhZCAnLScpXG4gICAgICAgIHRoZW4gbG9vcCAoQ2hhciBjIDo6IHMpXG4gICAgICAgIGVsc2UgaWYgcmVhZCAnXSdcbiAgICAgICAgdGhlbiBDaGFyIGMgOjogQ2hhciAnLScgOjogc1xuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGxvb3AgKFJhbmdlIChjLCBjJykgOjogcylcbiAgICBpblxuICAgIGxvb3AgW11cbiAgaW5cblxuICBsZXQgcGllY2UgKCkgPVxuICAgIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkX2FoZWFkIFwiLyoqXCIgJiYgbm90IChlb3MgKCkpXG4gICAgdGhlbiBNYW55TWFueVxuICAgIGVsc2UgaWYgcmVhZCAnKidcbiAgICB0aGVuIGlmIGRvdWJsZV9hc3RlcmlzayAmJiByZWFkICcqJ1xuICAgICAgdGhlbiBNYW55TWFueVxuICAgICAgZWxzZSBNYW55XG4gICAgZWxzZSBpZiByZWFkICc/J1xuICAgIHRoZW4gT25lXG4gICAgZWxzZSBpZiBub3QgKHJlYWQgJ1snKVxuICAgIHRoZW4gRXhhY3RseSAoY2hhciAoKSlcbiAgICBlbHNlIGlmIHJlYWQgJ14nIHx8IHJlYWQgJyEnXG4gICAgdGhlbiBBbnlfYnV0IChlbmNsb3NlZCAoKSlcbiAgICBlbHNlIEFueV9vZiAoZW5jbG9zZWQgKCkpXG4gIGluXG5cbiAgbGV0IHJlYyBsb29wIHBpZWNlcyA9XG4gICAgaWYgZW9zICgpXG4gICAgdGhlbiBMaXN0LnJldiBwaWVjZXNcbiAgICBlbHNlIGxvb3AgKHBpZWNlICgpIDo6IHBpZWNlcylcbiAgaW5cblxuICBsb29wIFtdXG5cbmxldCBtdWwgbCBsJyA9XG4gIExpc3QuZmxhdHRlbiAoTGlzdC5tYXAgKGZ1biBzIC0+IExpc3QubWFwIChmdW4gcycgLT4gcyBeIHMnKSBsJykgbClcblxubGV0IGV4cGxvZGUgc3RyID1cbiAgbGV0IGwgPSBTdHJpbmcubGVuZ3RoIHN0ciBpblxuICBsZXQgcmVjIGV4cGwgaW5uZXIgcyBpIGFjYyBiZWcgPVxuICAgIGlmIGkgPj0gbCB0aGVuIGJlZ2luXG4gICAgICBpZiBpbm5lciB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0sIGkpXG4gICAgZW5kIGVsc2VcbiAgICAgIG1hdGNoIHN0ci5baV0gd2l0aFxuICAgICAgfCAnXFxcXCcgLT4gZXhwbCBpbm5lciBzIChpICsgMikgYWNjIGJlZ1xuICAgICAgfCAneycgLT5cbiAgICAgICAgbGV0ICh0LCBpJykgPSBleHBsIHRydWUgKGkgKyAxKSAoaSArIDEpIFtdIFtcIlwiXSBpblxuICAgICAgICBleHBsIGlubmVyIGknIGknIGFjY1xuICAgICAgICAgIChtdWwgYmVnIChtdWwgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gdCkpXG4gICAgICB8ICcsJyB3aGVuIGlubmVyIC0+XG4gICAgICAgIGV4cGwgaW5uZXIgKGkgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKG11bCBiZWcgW1N0cmluZy5zdWIgc3RyIHMgKGkgLSBzKV0gQCBhY2MpIFtcIlwiXVxuICAgICAgfCAnfScgd2hlbiBpbm5lciAtPlxuICAgICAgICAobXVsIGJlZyBbU3RyaW5nLnN1YiBzdHIgcyAoaSAtIHMpXSBAIGFjYywgaSArIDEpXG4gICAgICB8IF8gLT5cbiAgICAgICAgZXhwbCBpbm5lciBzIChpICsgMSkgYWNjIGJlZ1xuICBpblxuICBMaXN0LnJldiAoZnN0IChleHBsIGZhbHNlIDAgMCBbXSBbXCJcIl0pKVxuXG5tb2R1bGUgU3RhdGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHJlX3BpZWNlcyAgICAgICAgICAgICAgICA6IFJlLnQgbGlzdDsgICgqIGxhc3QgcGllY2UgYXQgaGVhZCBvZiBsaXN0LiAqKVxuICAgIHJlbWFpbmluZyAgICAgICAgICAgICAgICA6IHBpZWNlIGxpc3Q7ICgqIGxhc3QgcGllY2UgYXQgdGFpbCBvZiBsaXN0LiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gICA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiAqKVxuICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCA6IGJvb2w7ICAgICAgICgqIHRydWUgYXQgc3RhcnQgb2YgcGF0dGVybiBvciBpbW1lZGlhdGVseVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFmdGVyICcvJyAqKVxuICAgIHBhdGhuYW1lICAgICAgICAgICAgICAgICA6IGJvb2w7XG4gICAgbWF0Y2hfYmFja3NsYXNoZXMgICAgICAgIDogYm9vbDtcbiAgICBwZXJpb2QgICAgICAgICAgICAgICAgICAgOiBib29sO1xuICB9XG5cbiAgbGV0IGNyZWF0ZSB+cGVyaW9kIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgcmVtYWluaW5nID1cbiAgICB7XG4gICAgICByZV9waWVjZXMgPSBbXTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSB0cnVlO1xuICAgICAgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gdHJ1ZTtcbiAgICAgIHBhdGhuYW1lO1xuICAgICAgbWF0Y2hfYmFja3NsYXNoZXM7XG4gICAgICBwZXJpb2Q7XG4gICAgICByZW1haW5pbmc7XG4gICAgfVxuXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgdCA9XG4gICAgdC5wZXJpb2QgJiYgKFxuICAgICAgdC5hbV9hdF9zdGFydF9vZl9wYXR0ZXJuIHx8XG4gICAgICAodC5hbV9hdF9zdGFydF9vZl9jb21wb25lbnQgJiYgdC5wYXRobmFtZSlcbiAgICApXG5cbiAgbGV0IGV4cGxpY2l0X3NsYXNoIHQgPSB0LnBhdGhuYW1lXG5cbiAgbGV0IHNsYXNoZXMgdCA9XG4gICAgaWYgdC5tYXRjaF9iYWNrc2xhc2hlcyB0aGVuIFsnLyc7ICdcXFxcJ10gZWxzZSBbJy8nXVxuXG4gIGxldCBhcHBlbmQgPyhhbV9hdF9zdGFydF9vZl9jb21wb25lbnQ9ZmFsc2UpIHQgcGllY2UgPVxuICAgIHsgdCB3aXRoXG4gICAgICByZV9waWVjZXMgPSBwaWVjZSA6OiB0LnJlX3BpZWNlcztcbiAgICAgIGFtX2F0X3N0YXJ0X29mX3BhdHRlcm4gPSBmYWxzZTtcbiAgICAgIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudDtcbiAgICB9XG5cbiAgbGV0IHRvX3JlIHQgPSBSZS5zZXEgKExpc3QucmV2IHQucmVfcGllY2VzKVxuXG4gIGxldCBuZXh0IHQgPVxuICAgIG1hdGNoIHQucmVtYWluaW5nIHdpdGhcbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHBpZWNlIDo6IHJlbWFpbmluZyAtPiBTb21lIChwaWVjZSwgeyB0IHdpdGggcmVtYWluaW5nIH0pXG5lbmRcblxubGV0IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCA9XG4gIFJlLmNvbXBsIChcbiAgICBMaXN0LmNvbmNhdCBbXG4gICAgICBpZiBleHBsaWNpdF9zbGFzaCAgdGhlbiBMaXN0Lm1hcCBSZS5jaGFyIHNsYXNoZXMgZWxzZSBbXTtcbiAgICAgIGlmIGV4cGxpY2l0X3BlcmlvZCB0aGVuIFtSZS5jaGFyICcuJ10gZWxzZSBbXTtcbiAgICBdXG4gIClcblxubGV0IGVuY2xvc2VkIGVuY2xvc2VkID1cbiAgbWF0Y2ggZW5jbG9zZWQgd2l0aFxuICB8IENoYXIgYyAtPiBSZS5jaGFyIGNcbiAgfCBSYW5nZSAobG93LCBoaWdoKSAtPiBSZS5yZyBsb3cgaGlnaFxuXG5sZXQgZW5jbG9zZWRfc2V0IH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGtpbmQgc2V0ID1cbiAgbGV0IHNldCA9IExpc3QubWFwIGVuY2xvc2VkIHNldCBpblxuICBsZXQgZW5jbG9zdXJlID1cbiAgICBtYXRjaCBraW5kIHdpdGhcbiAgICB8IGBBbnlfb2YgLT4gUmUuYWx0IHNldFxuICAgIHwgYEFueV9idXQgLT4gUmUuY29tcGwgc2V0XG4gIGluXG4gIFJlLmludGVyIFtlbmNsb3N1cmU7IG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZF1cblxubGV0IGV4YWN0bHkgc3RhdGUgYyA9XG4gIGxldCBzbGFzaGVzID0gU3RhdGUuc2xhc2hlcyBzdGF0ZSBpblxuICBsZXQgYW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50ID0gTGlzdC5tZW0gYyBzbGFzaGVzIGluXG4gIGxldCBjaGFycyA9IGlmIGFtX2F0X3N0YXJ0X29mX2NvbXBvbmVudCB0aGVuIHNsYXNoZXMgZWxzZSBbY10gaW5cbiAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgKExpc3QubWFwIFJlLmNoYXIgY2hhcnMpKSB+YW1fYXRfc3RhcnRfb2ZfY29tcG9uZW50XG5cbmxldCBtYW55X21hbnkgc3RhdGUgPVxuICBsZXQgZXhwbGljaXRfcGVyaW9kID0gc3RhdGUuU3RhdGUucGVyaW9kICYmIHN0YXRlLlN0YXRlLnBhdGhuYW1lIGluXG4gIGxldCBmaXJzdF9leHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gIGxldCBtYXRjaF9jb21wb25lbnQgfmV4cGxpY2l0X3BlcmlvZCA9XG4gICAgUmUuc2VxIFtcbiAgICAgIG9uZSAgICAgICAgIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q7XG4gICAgICBSZS5yZXAgKG9uZSB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlKTtcbiAgICBdXG4gIGluXG4gICgqIFdlIG11c3QgbWF0Y2ggY29tcG9uZW50cyBpbmRpdmlkdWFsbHkgd2hlbiBbcGVyaW9kXSBmbGFnIGlzIHNldCxcbiAgICAgbWFraW5nIHN1cmUgdG8gbm90IG1hdGNoIFtcImZvby8uYmFyXCJdLiAqKVxuICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFxuICAgIFJlLnNlcSBbXG4gICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kOmZpcnN0X2V4cGxpY2l0X3BlcmlvZCk7XG4gICAgICBSZS5yZXAgKFxuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIFJlLmFsdCAoTGlzdC5tYXAgUmUuY2hhciBzbGFzaGVzKTtcbiAgICAgICAgICBSZS5vcHQgKG1hdGNoX2NvbXBvbmVudCB+ZXhwbGljaXRfcGVyaW9kKTtcbiAgICAgICAgXVxuICAgICAgKTtcbiAgICBdKVxuXG5sZXQgbWFueSAoc3RhdGUgOiBTdGF0ZS50KSA9XG4gIGxldCBleHBsaWNpdF9zbGFzaCA9IFN0YXRlLmV4cGxpY2l0X3NsYXNoIHN0YXRlIGluXG4gIGxldCBleHBsaWNpdF9wZXJpb2QgPSBTdGF0ZS5leHBsaWNpdF9wZXJpb2Qgc3RhdGUgaW5cbiAgbGV0IHNsYXNoZXMgPSBTdGF0ZS5zbGFzaGVzIHN0YXRlIGluXG4gICgqIFdoZXRoZXIgd2UgbXVzdCBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZCBkZXBlbmRzIG9uIHRoZSBzdXJyb3VuZGluZyBjaGFyYWN0ZXJzLCBidXRcbiAgICAgc2xhc2hlcyBhcmUgZWFzeSB0byBleHBsaWNpdCBtYXRjaC4gVGhpcyBjb25kaXRpb25hbCBzcGxpdHMgb3V0IHNvbWUgc2ltcGxlIGNhc2VzLlxuICAqKVxuICBpZiBub3QgZXhwbGljaXRfcGVyaW9kIHRoZW4gYmVnaW5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kKSlcbiAgZW5kIGVsc2UgaWYgbm90IGV4cGxpY2l0X3NsYXNoIHRoZW4gYmVnaW5cbiAgICAoKiBJbiB0aGlzIHN0YXRlLCB3ZSBleHBsaWNpdGx5IG1hdGNoIHBlcmlvZHMgb25seSBhdCB0aGUgdmVyeSBiZWdpbm5pbmcgKilcbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKFJlLm9wdCAoXG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6ZmFsc2UgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDtcbiAgICAgICAgUmUucmVwIChvbmUgfmV4cGxpY2l0X3NsYXNoOmZhbHNlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgICkpXG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgbGV0IG5vdF9lbXB0eSA9XG4gICAgICBSZS5zZXEgW1xuICAgICAgICBvbmUgICAgICAgICB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOnRydWU7XG4gICAgICAgIFJlLnJlcCAob25lIH5leHBsaWNpdF9zbGFzaDp0cnVlIH5zbGFzaGVzIH5leHBsaWNpdF9wZXJpb2Q6ZmFsc2UpO1xuICAgICAgXVxuICAgIGluXG4gICAgKCogW21heWJlX2VtcHR5XSBpcyB0aGUgZGVmYXVsdCB0cmFuc2xhdGlvbiBvZiBNYW55LCBleGNlcHQgaW4gc29tZSBzcGVjaWFsIGNhc2VzLlxuICAgICopXG4gICAgbGV0IG1heWJlX2VtcHR5ID0gUmUub3B0IG5vdF9lbXB0eSBpblxuICAgIGxldCBlbmNsb3NlZF9zZXQgc3RhdGUga2luZCBzZXQgPVxuICAgICAgU3RhdGUuYXBwZW5kIHN0YXRlIChSZS5hbHQgW1xuICAgICAgICBlbmNsb3NlZF9zZXQga2luZCBzZXQgfmV4cGxpY2l0X3NsYXNoOnRydWUgfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZDp0cnVlO1xuICAgICAgICBSZS5zZXEgW1xuICAgICAgICAgIG5vdF9lbXB0eTtcbiAgICAgICAgICAoKiBTaW5jZSBbbm90X2VtcHR5XSBtYXRjaGVkLCBzdWJzZXF1ZW50IGRvdHMgYXJlIG5vdCBsZWFkaW5nLiAqKVxuICAgICAgICAgIGVuY2xvc2VkX3NldCBraW5kIHNldCB+ZXhwbGljaXRfc2xhc2g6dHJ1ZSB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kOmZhbHNlO1xuICAgICAgICBdO1xuICAgICAgXSlcbiAgICBpblxuICAgIGxldCByZWMgbG9va2FoZWFkIHN0YXRlID1cbiAgICAgIG1hdGNoIFN0YXRlLm5leHQgc3RhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IFN0YXRlLmFwcGVuZCBzdGF0ZSBtYXliZV9lbXB0eVxuICAgICAgKCogZ2xvYiAqKiA9PT0gZ2xvYiAqIC4gKilcbiAgICAgIHwgU29tZSAoTWFueSwgc3RhdGUpIC0+IGxvb2thaGVhZCBzdGF0ZVxuICAgICAgfCBTb21lIChFeGFjdGx5IGMsIHN0YXRlKSAtPlxuICAgICAgICBsZXQgc3RhdGUgPVxuICAgICAgICAgIFN0YXRlLmFwcGVuZCBzdGF0ZVxuICAgICAgICAgICAgKGlmIGMgPSAnLidcbiAgICAgICAgICAgICB0aGVuIG5vdF9lbXB0eVxuICAgICAgICAgICAgIGVsc2UgbWF5YmVfZW1wdHkpXG4gICAgICAgIGluXG4gICAgICAgIGV4YWN0bHkgc3RhdGUgY1xuICAgICAgKCogZ2xvYiAqPyA9PT0gZ2xvYiA/KiAqKVxuICAgICAgfCBTb21lIChPbmUsIHN0YXRlKSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgbm90X2VtcHR5XG4gICAgICB8IFNvbWUgKEFueV9vZiBlbmNsb3NlZCwgc3RhdGUpIC0+IGVuY2xvc2VkX3NldCBzdGF0ZSBgQW55X29mIGVuY2xvc2VkXG4gICAgICB8IFNvbWUgKEFueV9idXQgZW5jbG9zZWQsIHN0YXRlKSAtPiBlbmNsb3NlZF9zZXQgc3RhdGUgYEFueV9idXQgZW5jbG9zZWRcbiAgICAgICgqICogdGhlbiAqKiA9PT0gKiogKilcbiAgICAgIHwgU29tZSAoTWFueU1hbnksIHN0YXRlKSAtPiBtYW55X21hbnkgc3RhdGVcbiAgICBpblxuICAgIGxvb2thaGVhZCBzdGF0ZVxuICBlbmRcblxubGV0IHBpZWNlIHN0YXRlIHBpZWNlID1cbiAgbGV0IGV4cGxpY2l0X3NsYXNoID0gU3RhdGUuZXhwbGljaXRfc2xhc2ggc3RhdGUgaW5cbiAgbGV0IGV4cGxpY2l0X3BlcmlvZCA9IFN0YXRlLmV4cGxpY2l0X3BlcmlvZCBzdGF0ZSBpblxuICBsZXQgc2xhc2hlcyA9IFN0YXRlLnNsYXNoZXMgc3RhdGUgaW5cbiAgbWF0Y2ggcGllY2Ugd2l0aFxuICB8IE9uZSAtPiBTdGF0ZS5hcHBlbmQgc3RhdGUgKG9uZSB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZClcbiAgfCBNYW55IC0+IG1hbnkgc3RhdGVcbiAgfCBBbnlfb2YgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X29mIH5leHBsaWNpdF9zbGFzaCB+c2xhc2hlcyB+ZXhwbGljaXRfcGVyaW9kIGVuY2xvc2VkKVxuICB8IEFueV9idXQgZW5jbG9zZWQgLT5cbiAgICBTdGF0ZS5hcHBlbmQgc3RhdGUgKGVuY2xvc2VkX3NldCBgQW55X2J1dCB+ZXhwbGljaXRfc2xhc2ggfnNsYXNoZXMgfmV4cGxpY2l0X3BlcmlvZCBlbmNsb3NlZClcbiAgfCBFeGFjdGx5IGMgLT4gZXhhY3RseSBzdGF0ZSBjXG4gIHwgTWFueU1hbnkgLT4gbWFueV9tYW55IHN0YXRlXG5cbmxldCBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCBnbG9iID1cbiAgbGV0IHJlYyBsb29wIHN0YXRlID1cbiAgICBtYXRjaCBTdGF0ZS5uZXh0IHN0YXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RhdGUudG9fcmUgc3RhdGVcbiAgICB8IFNvbWUgKHAsIHN0YXRlKSAtPiBsb29wIChwaWVjZSBzdGF0ZSBwKVxuICBpblxuICBsb29wIChTdGF0ZS5jcmVhdGUgfnBhdGhuYW1lIH5tYXRjaF9iYWNrc2xhc2hlcyB+cGVyaW9kIGdsb2IpXG5cbmxldCBnbG9iXG4gICAgICA/KGFuY2hvcmVkID0gZmFsc2UpXG4gICAgICA/KHBhdGhuYW1lID0gdHJ1ZSlcbiAgICAgID8obWF0Y2hfYmFja3NsYXNoZXMgPSBmYWxzZSlcbiAgICAgID8ocGVyaW9kID0gdHJ1ZSlcbiAgICAgID8oZXhwYW5kX2JyYWNlcyA9IGZhbHNlKVxuICAgICAgPyhkb3VibGVfYXN0ZXJpc2sgPSB0cnVlKVxuICAgICAgc1xuICA9XG4gIGxldCB0b19yZSBzID1cbiAgICBsZXQgcmUgPSBnbG9iIH5wYXRobmFtZSB+bWF0Y2hfYmFja3NsYXNoZXMgfnBlcmlvZCAob2Zfc3RyaW5nIH5kb3VibGVfYXN0ZXJpc2sgcykgaW5cbiAgICBpZiBhbmNob3JlZFxuICAgIHRoZW4gUmUud2hvbGVfc3RyaW5nIHJlXG4gICAgZWxzZSByZVxuICBpblxuICBpZiBleHBhbmRfYnJhY2VzXG4gIHRoZW4gUmUuYWx0IChMaXN0Lm1hcCB0b19yZSAoZXhwbG9kZSBzKSlcbiAgZWxzZSB0b19yZSBzXG5cbmxldCBnbG9iJyA/YW5jaG9yZWQgcGVyaW9kIHMgPSBnbG9iID9hbmNob3JlZCB+cGVyaW9kIHNcblxubGV0IGdsb2J4ID9hbmNob3JlZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSBzXG5cbmxldCBnbG9ieCcgP2FuY2hvcmVkIHBlcmlvZCBzID0gZ2xvYiA/YW5jaG9yZWQgfmV4cGFuZF9icmFjZXM6dHJ1ZSB+cGVyaW9kIHNcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbm1vZHVsZSBSZSA9IENvcmVcblxuZXhjZXB0aW9uIFBhcnNlX2Vycm9yXG5leGNlcHRpb24gTm90X3N1cHBvcnRlZFxuXG5sZXQgcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImFscGhhXCIgIC0+IFJlLmFscGhhXG4gIHwgXCJhbG51bVwiICAtPiBSZS5hbG51bVxuICB8IFwiYXNjaWlcIiAgLT4gUmUuYXNjaWlcbiAgfCBcImJsYW5rXCIgIC0+IFJlLmJsYW5rXG4gIHwgXCJjbnRybFwiICAtPiBSZS5jbnRybFxuICB8IFwiZGlnaXRcIiAgLT4gUmUuZGlnaXRcbiAgfCBcImxvd2VyXCIgIC0+IFJlLmxvd2VyXG4gIHwgXCJwcmludFwiICAtPiBSZS5wcmludFxuICB8IFwic3BhY2VcIiAgLT4gUmUuc3BhY2VcbiAgfCBcInVwcGVyXCIgIC0+IFJlLnVwcGVyXG4gIHwgXCJ3b3JkXCIgICAtPiBSZS53b3JkY1xuICB8IFwicHVuY3RcIiAgLT4gUmUucHVuY3RcbiAgfCBcImdyYXBoXCIgIC0+IFJlLmdyYXBoXG4gIHwgXCJ4ZGlnaXRcIiAtPiBSZS54ZGlnaXRcbiAgfCBjbGFzc18gICAtPiBpbnZhbGlkX2FyZyAoXCJJbnZhbGlkIHBjcmUgY2xhc3M6IFwiIF4gY2xhc3NfKVxuXG5sZXQgcG9zaXhfY2xhc3Nfc3RyaW5ncyA9XG4gIFsgXCJhbHBoYVwiIDsgXCJhbG51bVwiIDsgXCJhc2NpaVwiXG4gIDsgXCJibGFua1wiIDsgXCJjbnRybFwiIDsgXCJkaWdpdFwiXG4gIDsgXCJsb3dlclwiIDsgXCJwcmludFwiIDsgXCJzcGFjZVwiXG4gIDsgXCJ1cHBlclwiIDsgXCJ3b3JkXCIgIDsgXCJwdW5jdFwiXG4gIDsgXCJncmFwaFwiIDsgXCJ4ZGlnaXRcIiBdXG5cbmxldCBwYXJzZSBtdWx0aWxpbmUgZG9sbGFyX2VuZG9ubHkgZG90YWxsIHVuZ3JlZWR5IHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGFjY2VwdF9zIHMnID1cbiAgICBsZXQgbGVuID0gU3RyaW5nLmxlbmd0aCBzJyBpblxuICAgIHRyeVxuICAgICAgZm9yIGogPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgICAgdHJ5IGlmIHMnLltqXSA8PiBzLlshaSArIGpdIHRoZW4gcmFpc2UgRXhpdFxuICAgICAgICB3aXRoIF8gLT4gcmFpc2UgRXhpdFxuICAgICAgZG9uZTtcbiAgICAgIGkgOj0gIWkgKyBsZW47XG4gICAgICB0cnVlXG4gICAgd2l0aCBFeGl0IC0+IGZhbHNlIGluXG4gIGxldCBnZXQgKCkgPSBsZXQgciA9IHMuWyFpXSBpbiBpbmNyIGk7IHIgaW5cbiAgbGV0IHVuZ2V0ICgpID0gZGVjciBpIGluXG4gIGxldCBncmVlZHlfbW9kIHIgPVxuICAgIGxldCBnciA9IGFjY2VwdCAnPycgaW5cbiAgICBsZXQgZ3IgPSBpZiB1bmdyZWVkeSB0aGVuIG5vdCBnciBlbHNlIGdyIGluXG4gICAgaWYgZ3IgdGhlbiBSZS5ub25fZ3JlZWR5IHIgZWxzZSBSZS5ncmVlZHkgclxuICBpblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIGdyZWVkeV9tb2QgKFJlLnJlcDEgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBncmVlZHlfbW9kIChSZS5vcHQgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAneycgdGhlblxuICAgICAgbWF0Y2ggaW50ZWdlciAoKSB3aXRoXG4gICAgICAgIFNvbWUgaSAtPlxuICAgICAgICAgIGxldCBqID0gaWYgYWNjZXB0ICcsJyB0aGVuIGludGVnZXIgKCkgZWxzZSBTb21lIGkgaW5cbiAgICAgICAgICBpZiBub3QgKGFjY2VwdCAnfScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgICAgYmVnaW4gbWF0Y2ggaiB3aXRoXG4gICAgICAgICAgICBTb21lIGogd2hlbiBqIDwgaSAtPiByYWlzZSBQYXJzZV9lcnJvciB8IF8gLT4gKClcbiAgICAgICAgICBlbmQ7XG4gICAgICAgICAgZ3JlZWR5X21vZCAoUmUucmVwbiByIGkgailcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHVuZ2V0ICgpOyByXG4gICAgZWxzZVxuICAgICAgclxuICBhbmQgYXRvbSAoKSA9XG4gICAgaWYgYWNjZXB0ICcuJyB0aGVuIGJlZ2luXG4gICAgICBpZiBkb3RhbGwgdGhlbiBSZS5hbnkgZWxzZSBSZS5ub3RubFxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICc/JyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnOicgdGhlbiBiZWdpblxuICAgICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgICAgaWYgbm90IChhY2NlcHQgJyknKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgICAgIHJcbiAgICAgICAgZW5kIGVsc2UgaWYgYWNjZXB0ICcjJyB0aGVuIGJlZ2luXG4gICAgICAgICAgY29tbWVudCAoKVxuICAgICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJzwnIHRoZW4gYmVnaW5cbiAgICAgICAgICBsZXQgbmFtZSA9IG5hbWUgKCkgaW5cbiAgICAgICAgICBsZXQgciA9IHJlZ2V4cCAoKSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBSZS5ncm91cCB+bmFtZSByXG4gICAgICAgIGVuZCBlbHNlXG4gICAgICAgICAgcmFpc2UgUGFyc2VfZXJyb3JcbiAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgIGxldCByID0gcmVnZXhwICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgUmUuZ3JvdXAgclxuICAgICAgZW5kXG4gICAgZW5kIGVsc2VcbiAgICBpZiBhY2NlcHQgJ14nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG11bHRpbGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbXVsdGlsaW5lIHRoZW4gUmUuZW9sIGVsc2UgaWYgZG9sbGFyX2VuZG9ubHkgdGhlbiBSZS5sZW9sIGVsc2UgUmUuZW9zXG4gICAgZW5kIGVsc2UgaWYgYWNjZXB0ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJ14nIHRoZW5cbiAgICAgICAgUmUuY29tcGwgKGJyYWNrZXQgW10pXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJ1xcXFwnIHRoZW4gYmVnaW5cbigqIFhYWFxuICAgLSBCYWNrLXJlZmVyZW5jZXNcbiAgIC0gXFxjeCAoY29udHJvbC14KSwgXFxkZGRcbiopXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICd3JyAtPlxuICAgICAgICAgIFJlLmFsdCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAnVycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuYWxudW07IFJlLmNoYXIgJ18nXVxuICAgICAgfCAncycgLT5cbiAgICAgICAgICBSZS5zcGFjZVxuICAgICAgfCAnUycgLT5cbiAgICAgICAgICBSZS5jb21wbCBbUmUuc3BhY2VdXG4gICAgICB8ICdkJyAtPlxuICAgICAgICAgIFJlLmRpZ2l0XG4gICAgICB8ICdEJyAtPlxuICAgICAgICAgIFJlLmNvbXBsIFtSZS5kaWdpdF1cbiAgICAgIHwgJ2InIC0+XG4gICAgICAgICAgUmUuYWx0IFtSZS5ib3c7IFJlLmVvd11cbiAgICAgIHwgJ0InIC0+XG4gICAgICAgICAgUmUubm90X2JvdW5kYXJ5XG4gICAgICB8ICdBJyAtPlxuICAgICAgICAgIFJlLmJvc1xuICAgICAgfCAnWicgLT5cbiAgICAgICAgICBSZS5sZW9sXG4gICAgICB8ICd6JyAtPlxuICAgICAgICAgIFJlLmVvc1xuICAgICAgfCAnRycgLT5cbiAgICAgICAgICBSZS5zdGFydFxuICAgICAgfCAnZScgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHgxYidcbiAgICAgIHwgJ2YnIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFx4MGMnXG4gICAgICB8ICduJyAtPlxuICAgICAgICAgIFJlLmNoYXIgJ1xcbidcbiAgICAgIHwgJ3InIC0+XG4gICAgICAgICAgUmUuY2hhciAnXFxyJ1xuICAgICAgfCAndCcgLT5cbiAgICAgICAgICBSZS5jaGFyICdcXHQnXG4gICAgICB8ICd4JyAtPlxuICAgICAgICAgIGxldCBjMSA9IGhleGRpZ2l0ICgpIGluXG4gICAgICAgICAgbGV0IGMyID0gaGV4ZGlnaXQgKCkgaW5cbiAgICAgICAgICBsZXQgY29kZSA9IGMxICogMTYgKyBjMiBpblxuICAgICAgICAgIFJlLmNoYXIgKGNoYXJfb2ZfaW50IGNvZGUpXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgYyAtPlxuICAgICAgICAgIFJlLmNoYXIgY1xuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaGV4ZGlnaXQgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAnMCcuLic5JyBhcyBkIC0+IENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJ1xuICAgIHwgJ2EnLi4nZicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnYScgKyAxMFxuICAgIHwgJ0EnLi4nRicgYXMgZCAtPiBDaGFyLmNvZGUgZCAtIENoYXIuY29kZSAnQScgKyAxMFxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgbmFtZSAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJykgYXMgYyAtPlxuICAgICAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIDMyIGluXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgXyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICBhbmQgbmFtZScgYiA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3IgZWxzZVxuICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAoJ18nIHwgJ2EnLi4neicgfCAnQScuLidaJyB8ICcwJy4uJzknKSBhcyBjIC0+XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgYiBjO1xuICAgICAgbmFtZScgYlxuICAgIHwgJz4nIC0+IEJ1ZmZlci5jb250ZW50cyBiXG4gICAgfCBfIC0+IHJhaXNlIFBhcnNlX2Vycm9yXG4gIGFuZCBicmFja2V0IHMgPVxuICAgIGlmIHMgPD4gW10gJiYgYWNjZXB0ICddJyB0aGVuIHMgZWxzZSBiZWdpblxuICAgICAgbWF0Y2ggY2hhciAoKSB3aXRoXG4gICAgICB8IGBDaGFyIGMgLT5cbiAgICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgICAgaWYgYWNjZXB0ICddJyB0aGVuIFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzIGVsc2UgYmVnaW5cbiAgICAgICAgICAgIG1hdGNoIGNoYXIgKCkgd2l0aFxuICAgICAgICAgICAgICBgQ2hhciBjJyAtPlxuICAgICAgICAgICAgICBicmFja2V0IChSZS5yZyBjIGMnIDo6IHMpXG4gICAgICAgICAgICB8IGBTZXQgc3QnIC0+XG4gICAgICAgICAgICAgIGJyYWNrZXQgKFJlLmNoYXIgYyA6OiBSZS5jaGFyICctJyA6OiBzdCcgOjogcylcbiAgICAgICAgICBlbmRcbiAgICAgICAgZW5kIGVsc2VcbiAgICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICAgIHwgYFNldCBzdCAtPiBicmFja2V0IChzdCA6OiBzKVxuICAgIGVuZFxuICBhbmQgY2hhciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgbGV0IGMgPSBnZXQgKCkgaW5cbiAgICBpZiBjID0gJ1snIHRoZW4gYmVnaW5cbiAgICAgIGlmIGFjY2VwdCAnPScgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgaWYgYWNjZXB0ICc6JyB0aGVuXG4gICAgICAgIGxldCBjb21wbCA9IGFjY2VwdCAnXicgaW5cbiAgICAgICAgbGV0IGNscyA9XG4gICAgICAgICAgdHJ5IExpc3QuZmluZCBhY2NlcHRfcyBwb3NpeF9jbGFzc19zdHJpbmdzXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgUGFyc2VfZXJyb3IgaW5cbiAgICAgICAgaWYgbm90IChhY2NlcHRfcyBcIjpdXCIpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCByZSA9XG4gICAgICAgICAgbGV0IHBvc2l4X2NsYXNzID0gcG9zaXhfY2xhc3Nfb2Zfc3RyaW5nIGNscyBpblxuICAgICAgICAgIGlmIGNvbXBsIHRoZW4gUmUuY29tcGwgW3Bvc2l4X2NsYXNzXSBlbHNlIHBvc2l4X2NsYXNzIGluXG4gICAgICAgIGBTZXQgKHJlKVxuICAgICAgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGBDaGFyIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZSBpZiBjID0gJ1xcXFwnIHRoZW4gYmVnaW5cbiAgICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgICAgbGV0IGMgPSBnZXQgKCkgaW5cbigqIFhYWFxuICAgXFwxMjcsIC4uLlxuKilcbiAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAnYicgLT4gYENoYXIgJ1xcMDA4J1xuICAgICAgfCAnbicgLT4gYENoYXIgJ1xcbicgKCpYWFgqKVxuICAgICAgfCAncicgLT4gYENoYXIgJ1xccicgKCpYWFgqKVxuICAgICAgfCAndCcgLT4gYENoYXIgJ1xcdCcgKCpYWFgqKVxuICAgICAgfCAndycgLT4gYFNldCAoUmUuYWx0IFtSZS5hbG51bTsgUmUuY2hhciAnXyddKVxuICAgICAgfCAnVycgLT4gYFNldCAoUmUuY29tcGwgW1JlLmFsbnVtOyBSZS5jaGFyICdfJ10pXG4gICAgICB8ICdzJyAtPiBgU2V0IChSZS5zcGFjZSlcbiAgICAgIHwgJ1MnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5zcGFjZV0pXG4gICAgICB8ICdkJyAtPiBgU2V0IChSZS5kaWdpdClcbiAgICAgIHwgJ0QnIC0+IGBTZXQgKFJlLmNvbXBsIFtSZS5kaWdpdF0pXG4gICAgICB8ICdhJy4uJ3onIHwgJ0EnLi4nWicgLT5cbiAgICAgICAgICByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAnMCcuLic5JyAtPlxuICAgICAgICAgIHJhaXNlIE5vdF9zdXBwb3J0ZWRcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGBDaGFyIGNcbiAgICBlbmQgZWxzZVxuICAgICAgYENoYXIgY1xuICBhbmQgY29tbWVudCAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgaWYgYWNjZXB0ICcpJyB0aGVuIFJlLmVwc2lsb24gZWxzZSBiZWdpbiBpbmNyIGk7IGNvbW1lbnQgKCkgZW5kXG4gIGluXG4gIGxldCByZXMgPSByZWdleHAgKCkgaW5cbiAgaWYgbm90IChlb3MgKCkpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gIHJlc1xuXG50eXBlIG9wdCA9XG4gIFsgYFVuZ3JlZWR5IHwgYERvdGFsbCB8IGBEb2xsYXJfZW5kb25seVxuICB8IGBNdWx0aWxpbmUgfCBgQW5jaG9yZWQgfCBgQ2FzZWxlc3MgXVxuXG5sZXQgcmUgID8ob3B0cyA9IFtdKSBzID1cbiAgbGV0IHIgPVxuICAgIHBhcnNlXG4gICAgICAoTGlzdC5tZW1xIGBNdWx0aWxpbmUgb3B0cykgKExpc3QubWVtcSBgRG9sbGFyX2VuZG9ubHkgb3B0cylcbiAgICAgIChMaXN0Lm1lbXEgYERvdGFsbCBvcHRzKSAoTGlzdC5tZW1xIGBVbmdyZWVkeSBvcHRzKVxuICAgICAgc1xuICBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQW5jaG9yZWQgb3B0cyB0aGVuIFJlLnNlcSBbUmUuc3RhcnQ7IHJdIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgQ2FzZWxlc3Mgb3B0cyB0aGVuIFJlLm5vX2Nhc2UgciBlbHNlIHIgaW5cbiAgclxuXG5sZXQgY29tcGlsZSA9IFJlLmNvbXBpbGVcbmxldCBjb21waWxlX3BhdCA/KG9wdHMgPSBbXSkgcyA9IGNvbXBpbGUgKHJlIH5vcHRzIHMpXG4iLCJtb2R1bGUgUmUgPSBDb3JlXG5cbmV4Y2VwdGlvbiBQYXJzZV9lcnJvciA9IFBlcmwuUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkID0gUGVybC5Ob3Rfc3VwcG9ydGVkXG5cbnR5cGUgcmVnZXhwID0gUmUucmVcblxudHlwZSBmbGFnID0gWyBgQ0FTRUxFU1MgfCBgTVVMVElMSU5FIHwgYEFOQ0hPUkVEIHwgYERPVEFMTCBdXG5cbnR5cGUgc3BsaXRfcmVzdWx0ID1cbiAgfCBUZXh0ICBvZiBzdHJpbmdcbiAgfCBEZWxpbSBvZiBzdHJpbmdcbiAgfCBHcm91cCBvZiBpbnQgKiBzdHJpbmdcbiAgfCBOb0dyb3VwXG5cbnR5cGUgZ3JvdXBzID0gQ29yZS5Hcm91cC50XG5cbmxldCByZSA/KGZsYWdzID0gW10pIHBhdCA9XG4gIGxldCBvcHRzID0gTGlzdC5tYXAgKGZ1bmN0aW9uXG4gICAgfCBgQ0FTRUxFU1MgLT4gYENhc2VsZXNzXG4gICAgfCBgTVVMVElMSU5FIC0+IGBNdWx0aWxpbmVcbiAgICB8IGBBTkNIT1JFRCAtPiBgQW5jaG9yZWRcbiAgICB8IGBET1RBTEwgLT4gYERvdGFsbFxuICApIGZsYWdzIGluXG4gIFBlcmwucmUgfm9wdHMgcGF0XG5cbmxldCByZWdleHAgP2ZsYWdzIHBhdCA9IFJlLmNvbXBpbGUgKHJlID9mbGFncyBwYXQpXG5cbmxldCBleHRyYWN0IH5yZXggcyA9XG4gIFJlLkdyb3VwLmFsbCAoUmUuZXhlYyByZXggcylcblxubGV0IGV4ZWMgfnJleCA/cG9zIHMgPVxuICBSZS5leGVjIHJleCA/cG9zIHNcblxubGV0IGdldF9zdWJzdHJpbmcgcyBpID1cbiAgUmUuR3JvdXAuZ2V0IHMgaVxuXG5sZXQgbmFtZXMgcmV4ID1cbiAgUmUuZ3JvdXBfbmFtZXMgcmV4XG4gIHw+IExpc3QubWFwIGZzdFxuICB8PiBBcnJheS5vZl9saXN0XG5cbmxldCBnZXRfbmFtZWRfc3Vic3RyaW5nIHJleCBuYW1lIHMgPVxuICBsZXQgcmVjIGxvb3AgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCAobiwgaSkgOjogcmVtIHdoZW4gbiA9IG5hbWUgLT5cbiAgICAgICBiZWdpblxuICAgICAgICAgdHJ5IGdldF9zdWJzdHJpbmcgcyBpXG4gICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBsb29wIHJlbVxuICAgICAgIGVuZFxuICAgIHwgXyA6OiByZW0gLT4gbG9vcCByZW1cbiAgaW5cbiAgbG9vcCAoUmUuZ3JvdXBfbmFtZXMgcmV4KVxuXG5sZXQgZ2V0X3N1YnN0cmluZ19vZnMgcyBpID1cbiAgUmUuR3JvdXAub2Zmc2V0IHMgaVxuXG5sZXQgcG1hdGNoIH5yZXggcyA9XG4gIFJlLmV4ZWNwIHJleCBzXG5cbmxldCBzdWJzdGl0dXRlIH5yZXggfnN1YnN0IHN0ciA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAxMDI0IGluXG4gIGxldCByZWMgbG9vcCBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBCdWZmZXIuY29udGVudHMgYlxuICAgIGVsc2UgaWYgUmUuZXhlY3AgfnBvcyByZXggc3RyIHRoZW4gKFxuICAgICAgbGV0IHNzID0gUmUuZXhlYyB+cG9zIHJleCBzdHIgaW5cbiAgICAgIGxldCBzdGFydCwgZmluID0gUmUuR3JvdXAub2Zmc2V0IHNzIDAgaW5cbiAgICAgIGxldCBwYXQgPSBSZS5Hcm91cC5nZXQgc3MgMCBpblxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChzdGFydCAtIHBvcyk7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdWJzdCBwYXQpO1xuICAgICAgbG9vcCBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgYiBzdHIgcG9zIChTdHJpbmcubGVuZ3RoIHN0ciAtIHBvcyk7XG4gICAgICBsb29wIChTdHJpbmcubGVuZ3RoIHN0cilcbiAgICApXG4gIGluXG4gIGxvb3AgMFxuXG5sZXQgc3BsaXQgfnJleCBzdHIgPVxuICBsZXQgcmVjIGxvb3AgYWNjdSBwb3MgPVxuICAgIGlmIHBvcyA+PSBTdHJpbmcubGVuZ3RoIHN0ciB0aGVuXG4gICAgICBMaXN0LnJldiBhY2N1XG4gICAgZWxzZSBpZiBSZS5leGVjcCB+cG9zIHJleCBzdHIgdGhlbiAoXG4gICAgICBsZXQgc3MgPSBSZS5leGVjIH5wb3MgcmV4IHN0ciBpblxuICAgICAgbGV0IHN0YXJ0LCBmaW4gPSBSZS5Hcm91cC5vZmZzZXQgc3MgMCBpblxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKHN0YXJ0IC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSBmaW5cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHMgPSBTdHJpbmcuc3ViIHN0ciBwb3MgKFN0cmluZy5sZW5ndGggc3RyIC0gcG9zKSBpblxuICAgICAgbG9vcCAocyA6OiBhY2N1KSAoU3RyaW5nLmxlbmd0aCBzdHIpXG4gICAgKSBpblxuICBsb29wIFtdIDBcblxuKCogRnJvbSBQQ1JFICopXG5sZXQgc3RyaW5nX3Vuc2FmZV9zdWIgcyBvZnMgbGVuID1cbiAgbGV0IHIgPSBCeXRlcy5jcmVhdGUgbGVuIGluXG4gIEJ5dGVzLnVuc2FmZV9ibGl0IHMgb2ZzIHIgMCBsZW47XG4gIEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgclxuXG5sZXQgcXVvdGUgcyA9XG4gIGxldCBsZW4gPSBTdHJpbmcubGVuZ3RoIHMgaW5cbiAgbGV0IGJ1ZiA9IEJ5dGVzLmNyZWF0ZSAobGVuIGxzbCAxKSBpblxuICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIGkgd2l0aFxuICAgIHwgJ1xcXFwnIHwgJ14nIHwgJyQnIHwgJy4nIHwgJ1snIHwgJ3wnXG4gICAgfCAnKCcgIHwgJyknIHwgJz8nIHwgJyonIHwgJysnIHwgJ3snIGFzIGMgLT5cbiAgICAgIEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgJ1xcXFwnO1xuICAgICAgaW5jciBwb3M7XG4gICAgICBCeXRlcy51bnNhZmVfc2V0IGJ1ZiAhcG9zIGM7IGluY3IgcG9zXG4gICAgfCBjIC0+IEJ5dGVzLnVuc2FmZV9zZXQgYnVmICFwb3MgYzsgaW5jciBwb3NcbiAgZG9uZTtcbiAgc3RyaW5nX3Vuc2FmZV9zdWIgYnVmIDAgIXBvc1xuXG5sZXQgZnVsbF9zcGxpdCA/KG1heD0wKSB+cmV4IHMgPVxuICBpZiBTdHJpbmcubGVuZ3RoIHMgPSAwIHRoZW4gW11cbiAgZWxzZSBpZiBtYXggPSAxIHRoZW4gW1RleHQgc11cbiAgZWxzZVxuICAgIGxldCByZXN1bHRzID0gUmUuc3BsaXRfZnVsbCByZXggcyBpblxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIExpc3QubWFwIChmdW5jdGlvblxuICAgICAgICB8IGBUZXh0IHMgLT4gW1RleHQgc11cbiAgICAgICAgfCBgRGVsaW0gZCAtPlxuICAgICAgICAgIGxldCBtYXRjaGVzID0gUmUuR3JvdXAuYWxsX29mZnNldCBkIGluXG4gICAgICAgICAgbGV0IGRlbGltID0gUmUuR3JvdXAuZ2V0IGQgMCBpblxuICAgICAgICAgIChEZWxpbSBkZWxpbSk6OihcbiAgICAgICAgICAgIGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgICBmb3IgaSA9IDEgdG8gQXJyYXkubGVuZ3RoIG1hdGNoZXMgLSAxIGRvXG4gICAgICAgICAgICAgIGwgOj1cbiAgICAgICAgICAgICAgICAoaWYgbWF0Y2hlcy4oaSkgPSAoLTEsIC0xKVxuICAgICAgICAgICAgICAgICB0aGVuIE5vR3JvdXBcbiAgICAgICAgICAgICAgICAgZWxzZSBHcm91cCAoaSwgUmUuR3JvdXAuZ2V0IGQgaSkpXG4gICAgICAgICAgICAgICAgOjooIWwpXG4gICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgTGlzdC5yZXYgIWwpKSByZXN1bHRzIGluXG4gICAgTGlzdC5jb25jYXQgbWF0Y2hlc1xuXG5cbnR5cGUgc3Vic3RyaW5ncyA9IEdyb3VwLnRcbiIsIigqXG4gICBSRSAtIEEgcmVndWxhciBleHByZXNzaW9uIGxpYnJhcnlcblxuICAgQ29weXJpZ2h0IChDKSAyMDAxIEplcm9tZSBWb3VpbGxvblxuICAgZW1haWw6IEplcm9tZS5Wb3VpbGxvbkBwcHMuanVzc2lldS5mclxuXG4gICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yXG4gICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljXG4gICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoXG4gICBsaW5raW5nIGV4Y2VwdGlvbjsgZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXRcbiAgIHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cblxuICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlVcbiAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG5cbiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWNcbiAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAgIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0FcbiopXG5cbigqXG5XaGF0IHdlIGNvdWxkIChzaG91bGQ/KSBkbzpcbi0gYSogPT0+IGxvbmdlc3QgKChzaG9ydGVzdCAobm9fZ3JvdXAgYSkqICksIGEgfCAoKSkgICghISEpXG4tIGFiYyB1bmRlcnN0b29kIGFzIChhYiljXG4tIFwiKChhPyl8YilcIiBhZ2FpbnN0IFwiYWJcIiBzaG91bGQgbm90IGJpbmQgdGhlIGZpcnN0IHN1YnBhdHRlcm4gdG8gYW55dGhpbmdcblxuTm90ZSB0aGF0IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBoYW5kbGUgXCIoKChhYiljKWQpZVwiIGVmZmljaWVudGx5XG4qKVxubW9kdWxlIFJlID0gQ29yZVxuXG5leGNlcHRpb24gUGFyc2VfZXJyb3JcbmV4Y2VwdGlvbiBOb3Rfc3VwcG9ydGVkXG5cbmxldCBwYXJzZSBuZXdsaW5lIHMgPVxuICBsZXQgaSA9IHJlZiAwIGluXG4gIGxldCBsID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gIGxldCBlb3MgKCkgPSAhaSA9IGwgaW5cbiAgbGV0IHRlc3QgYyA9IG5vdCAoZW9zICgpKSAmJiBzLlshaV0gPSBjIGluXG4gIGxldCBhY2NlcHQgYyA9IGxldCByID0gdGVzdCBjIGluIGlmIHIgdGhlbiBpbmNyIGk7IHIgaW5cbiAgbGV0IGdldCAoKSA9IGxldCByID0gcy5bIWldIGluIGluY3IgaTsgciBpblxuICBsZXQgdW5nZXQgKCkgPSBkZWNyIGkgaW5cblxuICBsZXQgcmVjIHJlZ2V4cCAoKSA9IHJlZ2V4cCcgKGJyYW5jaCAoKSlcbiAgYW5kIHJlZ2V4cCcgbGVmdCA9XG4gICAgaWYgYWNjZXB0ICd8JyB0aGVuIHJlZ2V4cCcgKFJlLmFsdCBbbGVmdDsgYnJhbmNoICgpXSkgZWxzZSBsZWZ0XG4gIGFuZCBicmFuY2ggKCkgPSBicmFuY2gnIFtdXG4gIGFuZCBicmFuY2gnIGxlZnQgPVxuICAgIGlmIGVvcyAoKSB8fCB0ZXN0ICd8JyB8fCB0ZXN0ICcpJyB0aGVuIFJlLnNlcSAoTGlzdC5yZXYgbGVmdClcbiAgICBlbHNlIGJyYW5jaCcgKHBpZWNlICgpIDo6IGxlZnQpXG4gIGFuZCBwaWVjZSAoKSA9XG4gICAgbGV0IHIgPSBhdG9tICgpIGluXG4gICAgaWYgYWNjZXB0ICcqJyB0aGVuIFJlLnJlcCAoUmUubmVzdCByKSBlbHNlXG4gICAgaWYgYWNjZXB0ICcrJyB0aGVuIFJlLnJlcDEgKFJlLm5lc3QgcikgZWxzZVxuICAgIGlmIGFjY2VwdCAnPycgdGhlbiBSZS5vcHQgciBlbHNlXG4gICAgaWYgYWNjZXB0ICd7JyB0aGVuXG4gICAgICBtYXRjaCBpbnRlZ2VyICgpIHdpdGhcbiAgICAgICAgU29tZSBpIC0+XG4gICAgICAgICAgbGV0IGogPSBpZiBhY2NlcHQgJywnIHRoZW4gaW50ZWdlciAoKSBlbHNlIFNvbWUgaSBpblxuICAgICAgICAgIGlmIG5vdCAoYWNjZXB0ICd9JykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgICBiZWdpbiBtYXRjaCBqIHdpdGhcbiAgICAgICAgICAgIFNvbWUgaiB3aGVuIGogPCBpIC0+IHJhaXNlIFBhcnNlX2Vycm9yIHwgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBSZS5yZXBuIChSZS5uZXN0IHIpIGkgalxuICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgdW5nZXQgKCk7IHJcbiAgICBlbHNlXG4gICAgICByXG4gIGFuZCBhdG9tICgpID1cbiAgICBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgIGlmIG5ld2xpbmUgdGhlbiBSZS5ub3RubCBlbHNlIFJlLmFueVxuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnKCcgdGhlbiBiZWdpblxuICAgICAgbGV0IHIgPSByZWdleHAgKCkgaW5cbiAgICAgIGlmIG5vdCAoYWNjZXB0ICcpJykgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIFJlLmdyb3VwIHJcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXicgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmJvbCBlbHNlIFJlLmJvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnJCcgdGhlbiBiZWdpblxuICAgICAgaWYgbmV3bGluZSB0aGVuIFJlLmVvbCBlbHNlIFJlLmVvc1xuICAgIGVuZCBlbHNlIGlmIGFjY2VwdCAnWycgdGhlbiBiZWdpblxuICAgICAgaWYgYWNjZXB0ICdeJyB0aGVuXG4gICAgICAgIFJlLmRpZmYgKFJlLmNvbXBsIChicmFja2V0IFtdKSkgKFJlLmNoYXIgJ1xcbicpXG4gICAgICBlbHNlXG4gICAgICAgIFJlLmFsdCAoYnJhY2tldCBbXSlcbiAgICBlbmQgZWxzZVxuICAgIGlmIGFjY2VwdCAnXFxcXCcgdGhlbiBiZWdpblxuICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgICAnfCcgfCAnKCcgfCAnKScgfCAnKicgfCAnKycgfCAnPydcbiAgICAgIHwgJ1snIHwgJy4nIHwgJ14nIHwgJyQnIHwgJ3snIHwgJ1xcXFwnIGFzIGMgLT4gUmUuY2hhciBjXG4gICAgICB8ICAgICAgICAgICAgICAgICBfICAgICAgICAgICAgICAgICAgICAgICAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICBpZiBlb3MgKCkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgIG1hdGNoIGdldCAoKSB3aXRoXG4gICAgICAgICcqJyB8ICcrJyB8ICc/JyB8ICd7JyB8ICdcXFxcJyAtPiByYWlzZSBQYXJzZV9lcnJvclxuICAgICAgfCAgICAgICAgICAgICAgICAgYyAgICAgICAgICAgIC0+IFJlLmNoYXIgY1xuICAgIGVuZFxuICBhbmQgaW50ZWdlciAoKSA9XG4gICAgaWYgZW9zICgpIHRoZW4gTm9uZSBlbHNlXG4gICAgbWF0Y2ggZ2V0ICgpIHdpdGhcbiAgICAgICcwJy4uJzknIGFzIGQgLT4gaW50ZWdlcicgKENoYXIuY29kZSBkIC0gQ2hhci5jb2RlICcwJylcbiAgICB8ICAgICBfICAgICAgICAtPiB1bmdldCAoKTsgTm9uZVxuICBhbmQgaW50ZWdlcicgaSA9XG4gICAgaWYgZW9zICgpIHRoZW4gU29tZSBpIGVsc2VcbiAgICBtYXRjaCBnZXQgKCkgd2l0aFxuICAgICAgJzAnLi4nOScgYXMgZCAtPlxuICAgICAgICBsZXQgaScgPSAxMCAqIGkgKyAoQ2hhci5jb2RlIGQgLSBDaGFyLmNvZGUgJzAnKSBpblxuICAgICAgICBpZiBpJyA8IGkgdGhlbiByYWlzZSBQYXJzZV9lcnJvcjtcbiAgICAgICAgaW50ZWdlcicgaSdcbiAgICB8IF8gLT5cbiAgICAgICAgdW5nZXQgKCk7IFNvbWUgaVxuICBhbmQgYnJhY2tldCBzID1cbiAgICBpZiBzIDw+IFtdICYmIGFjY2VwdCAnXScgdGhlbiBzIGVsc2UgYmVnaW5cbiAgICAgIGxldCBjID0gY2hhciAoKSBpblxuICAgICAgaWYgYWNjZXB0ICctJyB0aGVuIGJlZ2luXG4gICAgICAgIGlmIGFjY2VwdCAnXScgdGhlbiBSZS5jaGFyIGMgOjogUmUuY2hhciAnLScgOjogcyBlbHNlIGJlZ2luXG4gICAgICAgICAgbGV0IGMnID0gY2hhciAoKSBpblxuICAgICAgICAgIGJyYWNrZXQgKFJlLnJnIGMgYycgOjogcylcbiAgICAgICAgZW5kXG4gICAgICBlbmQgZWxzZVxuICAgICAgICBicmFja2V0IChSZS5jaGFyIGMgOjogcylcbiAgICBlbmRcbiAgYW5kIGNoYXIgKCkgPVxuICAgIGlmIGVvcyAoKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgaWYgYyA9ICdbJyB0aGVuIGJlZ2luXG4gICAgICBpZiBhY2NlcHQgJz0nIHRoZW4gcmFpc2UgTm90X3N1cHBvcnRlZFxuICAgICAgZWxzZSBpZiBhY2NlcHQgJzonIHRoZW4gYmVnaW5cbiAgICAgICAgcmFpc2UgTm90X3N1cHBvcnRlZCAoKlhYWCopXG4gICAgICBlbmQgZWxzZSBpZiBhY2NlcHQgJy4nIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgZW9zICgpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGxldCBjID0gZ2V0ICgpIGluXG4gICAgICAgIGlmIG5vdCAoYWNjZXB0ICcuJykgdGhlbiByYWlzZSBOb3Rfc3VwcG9ydGVkO1xuICAgICAgICBpZiBub3QgKGFjY2VwdCAnXScpIHRoZW4gcmFpc2UgUGFyc2VfZXJyb3I7XG4gICAgICAgIGNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIGNcbiAgICBlbmQgZWxzZVxuICAgICAgY1xuICBpblxuICBsZXQgcmVzID0gcmVnZXhwICgpIGluXG4gIGlmIG5vdCAoZW9zICgpKSB0aGVuIHJhaXNlIFBhcnNlX2Vycm9yO1xuICByZXNcblxudHlwZSBvcHQgPSBbYElDYXNlIHwgYE5vU3ViIHwgYE5ld2xpbmVdXG5cbmxldCByZSA/KG9wdHMgPSBbXSkgcyA9XG4gIGxldCByID0gcGFyc2UgKExpc3QubWVtcSBgTmV3bGluZSBvcHRzKSBzIGluXG4gIGxldCByID0gaWYgTGlzdC5tZW1xIGBJQ2FzZSBvcHRzIHRoZW4gUmUubm9fY2FzZSByIGVsc2UgciBpblxuICBsZXQgciA9IGlmIExpc3QubWVtcSBgTm9TdWIgb3B0cyB0aGVuIFJlLm5vX2dyb3VwIHIgZWxzZSByIGluXG4gIHJcblxubGV0IGNvbXBpbGUgcmUgPSBSZS5jb21waWxlIChSZS5sb25nZXN0IHJlKVxubGV0IGNvbXBpbGVfcGF0ID8ob3B0cyA9IFtdKSBzID0gY29tcGlsZSAocmUgfm9wdHMgcylcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTMgR2FicmllbCBSYWRhbm5lIDxkcnVweW9nK2NhbWxAem9oby5jb20+XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgdHlwZSBUID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB2YWwgcmV0dXJuIDogJ2EgLT4gJ2EgdFxuXG4gIHR5cGUgKC0nYSwgJ2IpIGZ0XG4gIHZhbCBmbWFwIDogKCdhLCAnYikgZnQgLT4gJ2EgdCAtPiAnYiB0XG5cbiAgdHlwZSAnYSB0bGlzdFxuICB2YWwgbmlsIDogdW5pdCAtPiAnYSB0bGlzdFxuICB2YWwgc2luZ2xldG9uIDogJ2EgdCAtPiAnYSB0bGlzdFxuICB2YWwgY29ucyA6ICdhIHQgLT4gJ2EgdGxpc3QgLT4gJ2EgdGxpc3RcbiAgdmFsIGFwcGVuZCA6ICdhIHRsaXN0IC0+ICdhIHRsaXN0IC0+ICdhIHRsaXN0XG4gIHZhbCBtYXAgOiAoJ2EsICdiKSBmdCAtPiAnYSB0bGlzdCAtPiAnYiB0bGlzdFxuZW5kXG5cbm1vZHVsZSB0eXBlIE5vV3JhcCA9XG4gIFQgd2l0aCB0eXBlICdhIHQgPSAnYVxuICAgICBhbmQgdHlwZSAnYSB0bGlzdCA9ICdhIGxpc3RcbiAgICAgYW5kIHR5cGUgKC0nYSwgJ2IpIGZ0ID0gJ2EgLT4gJ2JcblxubW9kdWxlIE5vV3JhcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYVxuICB0eXBlICdhIHRsaXN0ID0gJ2EgbGlzdFxuICB0eXBlICgtJ2EsICdiKSBmdCA9ICdhIC0+ICdiXG4gIGV4dGVybmFsIHJldHVybiA6ICdhIC0+ICdhID0gXCIlaWRlbnRpdHlcIlxuICBsZXQgZm1hcCBmIDogICdhIHQgLT4gJ2IgdCA9IGZcblxuICBsZXQgbmlsICgpID0gW11cbiAgbGV0IHNpbmdsZXRvbiB4ID0gW3hdXG4gIGxldCBjb25zIHggeHMgPSB4Ojp4c1xuICBsZXQgYXBwZW5kIHggeT0geEB5XG4gIGxldCBtYXAgPSBMaXN0Lm1hcFxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDE4IEdhYnJpZWwgUmFkYW5uZVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxudHlwZSBuYW1lID0gc3RyaW5nICogc3RyaW5nXG5cbigqKiBJbnB1dCAqKVxuXG50eXBlIHNpZ25hbCA9IFtcbiAgfCBgQ29tbWVudCBvZiBzdHJpbmdcbiAgfCBgRW5kX2VsZW1lbnRcbiAgfCBgU3RhcnRfZWxlbWVudCBvZiBuYW1lICogKG5hbWUgKiBzdHJpbmcpIGxpc3RcbiAgfCBgVGV4dCBvZiBzdHJpbmcgbGlzdFxuXVxuXG5leGNlcHRpb24gTWFsZm9ybWVkX3N0cmVhbVxuXG5tb2R1bGUgSW1wb3J0XG4gICAgKFhtbCA6IFhtbF9zaWdzLlQpXG49IHN0cnVjdFxuXG4gIGxldCBvZl9saXN0IGwgPVxuICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgKGZ1biBhIGIgLT4gWG1sLlcuKGNvbnMgKHJldHVybiBhKSBiKSlcbiAgICAgIGwgKFhtbC5XLm5pbCAoKSlcblxuICBsZXQgbWtfYXR0cmlicyBhdHRycyA9XG4gICAgKCogVE9ETzogVGhpcyBpcyBub3QgdmVyeSBzdHJ1Y3R1cmVkICopXG4gICAgbGV0IGYgKChfLG5hbWUpLCB2KSA9IFhtbC5zdHJpbmdfYXR0cmliIG5hbWUgKFhtbC5XLnJldHVybiB2KSBpblxuICAgIExpc3QubWFwIGYgYXR0cnNcblxuICBsZXQgcmVjIG1rIGNoaWxkcmVuIChzZXEgOiBzaWduYWwgU2VxLnQpID0gbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IENvbnMgKGBDb21tZW50IHMsIHEpIC0+XG4gICAgICBtayAoWG1sLmNvbW1lbnQgcyA6OiBjaGlsZHJlbikgcVxuICAgIHwgQ29ucyAoYFRleHQgcywgcSkgLT5cbiAgICAgIG1rIChMaXN0Lm1hcCAoZnVuIHggLT4gWG1sLnBjZGF0YSBAQCBYbWwuVy5yZXR1cm4geCkgcyBAIGNoaWxkcmVuKSBxXG4gICAgfCBDb25zIChgU3RhcnRfZWxlbWVudCAoKF8sIG5hbWUpLCBhdHRycyksIHEpIC0+XG4gICAgICBsZXQgYSA9IG1rX2F0dHJpYnMgYXR0cnMgaW5cbiAgICAgIGxldCBzdWJfY2hpbGRyZW4sIHJlc3QgPSBtayBbXSBxIGluXG4gICAgICBtayAoWG1sLm5vZGUgfmEgbmFtZSBzdWJfY2hpbGRyZW4gOjogY2hpbGRyZW4pIHJlc3RcbiAgICB8IENvbnMgKGBFbmRfZWxlbWVudCwgcmVzdCkgLT5cbiAgICAgIG9mX2xpc3QgKExpc3QucmV2IGNoaWxkcmVuKSwgcmVzdFxuICAgIHwgTmlsIC0+XG4gICAgICBvZl9saXN0IChMaXN0LnJldiBjaGlsZHJlbiksIFNlcS5lbXB0eVxuXG4gIGxldCBvZl9zZXEgc2VxID1cbiAgICBsZXQgbCwgcmVzdCA9IG1rIFtdIHNlcSBpblxuICAgIG1hdGNoIHJlc3QgKCkgd2l0aFxuICAgIHwgU2VxLk5pbCAtPiBsXG4gICAgfCBfIC0+IHJhaXNlIE1hbGZvcm1lZF9zdHJlYW1cblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA4IFZpbmNlbnQgQmFsYXQsIE1hdXJpY2lvIEZlcm5hbmRlelxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5sZXQgaXNfY29udHJvbCBjID1cbiAgbGV0IGNjID0gQ2hhci5jb2RlIGMgaW5cbiAgKGNjIDw9IDggfHwgY2MgPSAxMSB8fCBjYyA9IDEyIHx8ICgxNCA8PSBjYyAmJiBjYyA8PSAzMSkgfHwgY2MgPSAxMjcpXG5cbmxldCBhZGRfdW5zYWZlX2NoYXIgYiA9IGZ1bmN0aW9uXG4gIHwgJzwnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImbHQ7XCJcbiAgfCAnPicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZndDtcIlxuICB8ICdcIicgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYiBcIiZxdW90O1wiXG4gIHwgJyYnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImYW1wO1wiXG4gIHwgYyB3aGVuIGlzX2NvbnRyb2wgYyAtPlxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImI1wiIDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIChzdHJpbmdfb2ZfaW50IChDaGFyLmNvZGUgYykpIDtcbiAgICBCdWZmZXIuYWRkX3N0cmluZyBiIFwiO1wiXG4gIHwgYyAtPiBCdWZmZXIuYWRkX2NoYXIgYiBjXG5cbmxldCBlbmNvZGVfdW5zYWZlX2NoYXIgcyA9XG4gIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzKSBpblxuICBTdHJpbmcuaXRlciAoYWRkX3Vuc2FmZV9jaGFyIGIpIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCBlbmNvZGVfdW5zYWZlX2NoYXJfYW5kX2F0IHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgbGV0IGYgPSBmdW5jdGlvblxuICAgIHwgJ0AnIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGIgXCImIzY0O1wiXG4gICAgfCBjIC0+IGFkZF91bnNhZmVfY2hhciBiIGNcbiAgaW5cbiAgU3RyaW5nLml0ZXIgZiBzO1xuICBCdWZmZXIuY29udGVudHMgYlxuXG5sZXQgY29tcG9zZV9kZWNsID8odmVyc2lvbiA9IFwiMS4wXCIpID8oZW5jb2RpbmcgPSBcIlVURi04XCIpICgpID1cbiAgRm9ybWF0LnNwcmludGZcbiAgICB7fDw/eG1sIHZlcnNpb249XCIlc1wiIGVuY29kaW5nPVwiJXNcIj8+XFxufH1cbiAgICB2ZXJzaW9uIGVuY29kaW5nXG5cbmxldCBjb21wb3NlX2RvY3R5cGUgZHQgYXJncyA9XG4gIGxldCBwcF9hcmdzIGZtdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgbCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiIFBVQkxJQyAlYVwiXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOkZvcm1hdC5wcF9wcmludF9zcGFjZVxuICAgICAgICAgICAoZnVuIGZtdCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCJcXFwiJXNcXFwiXCIpKVxuICAgICAgICBsXG4gIGluXG4gIEZvcm1hdC5hc3ByaW50ZlxuICAgIFwiPCFET0NUWVBFICVzJWE+XCJcbiAgICBkdFxuICAgIHBwX2FyZ3MgYXJnc1xuXG5sZXQgcmVfZW5kX2NvbW1lbnQgPSBSZS4oY29tcGlsZSBAQCBhbHQgW1xuICBzZXEgWyBib3MgOyBzdHIgXCI+XCIgXSA7XG4gIHNlcSBbIGJvcyA7IHN0ciBcIi0+XCIgXSA7XG4gIHN0ciBcIi0tPlwiIDtcbiAgc3RyIFwiLS0hPlwiIDtcbl0pXG5sZXQgZXNjYXBlX2NvbW1lbnQgcyA9XG4gIGxldCBmIGcgPSBtYXRjaCBSZS5Hcm91cC5nZXQgZyAwIHdpdGhcbiAgICB8IFwiPlwiIC0+IFwiJmd0O1wiXG4gICAgfCBcIi0+XCIgLT4gXCItJmd0O1wiXG4gICAgfCBcIi0tPlwiIC0+IFwiLS0mZ3Q7XCJcbiAgICB8IFwiLS0hPlwiIC0+IFwiLS0hJmd0O1wiXG4gICAgfCBzIC0+IHNcbiAgaW5cbiAgUmUucmVwbGFjZSB+YWxsOnRydWUgcmVfZW5kX2NvbW1lbnQgfmYgc1xuXG4oKiBjb3BpZWQgZm9ybSBqc19vZl9vY2FtbDogY29tcGlsZXIvamF2YXNjcmlwdC5tbCAqKVxubGV0IHBwX251bWJlciBmbXQgdiA9XG4gIGlmIHYgPSBpbmZpbml0eVxuICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiSW5maW5pdHlcIlxuICBlbHNlIGlmIHYgPSBuZWdfaW5maW5pdHlcbiAgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIi1JbmZpbml0eVwiXG4gIGVsc2UgaWYgdiA8PiB2XG4gIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOYU5cIlxuICBlbHNlXG4gICAgbGV0IHZpbnQgPSBpbnRfb2ZfZmxvYXQgdiBpblxuICAgICgqIGNvbXBpbGVyIDEwMDAgaW50byAxZTMgKilcbiAgICBpZiBmbG9hdF9vZl9pbnQgdmludCA9IHZcbiAgICB0aGVuXG4gICAgICBsZXQgcmVjIGRpdiBuIGkgPVxuICAgICAgICBpZiBuIDw+IDAgJiYgbiBtb2QgMTAgPSAwXG4gICAgICAgIHRoZW4gZGl2IChuLzEwKSAoc3VjYyBpKVxuICAgICAgICBlbHNlXG4gICAgICAgIGlmIGkgPiAyXG4gICAgICAgIHRoZW4gRm9ybWF0LmZwcmludGYgZm10IFwiJWRlJWRcIiBuIGlcbiAgICAgICAgZWxzZSBGb3JtYXQucHBfcHJpbnRfaW50IGZtdCB2aW50IGluXG4gICAgICBkaXYgdmludCAwXG4gICAgZWxzZVxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjEyZ1wiIHYgaW5cbiAgICAgIGlmIHYgPSBmbG9hdF9vZl9zdHJpbmcgczFcbiAgICAgIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgczFcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHMyID0gUHJpbnRmLnNwcmludGYgXCIlLjE1Z1wiIHYgaW5cbiAgICAgICAgaWYgdiA9IGZsb2F0X29mX3N0cmluZyBzMlxuICAgICAgICB0aGVuIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHMyXG4gICAgICAgIGVsc2UgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiUuMThnXCIgdlxuXG5sZXQgc3RyaW5nX29mX251bWJlciB2ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcF9udW1iZXIgdlxuXG5tb2R1bGUgVXRmOCA9IHN0cnVjdFxuICB0eXBlIHV0ZjggPSBzdHJpbmdcblxuICBsZXQgbm9ybWFsaXplIHNyYyA9XG4gICAgbGV0IHdhcm4gPSByZWYgZmFsc2UgaW5cbiAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSAoU3RyaW5nLmxlbmd0aCBzcmMpIGluXG4gICAgVXV0Zi5TdHJpbmcuZm9sZF91dGZfOFxuICAgICAgKGZ1biBfIF8gZCAtPlxuICAgICAgICAgbWF0Y2ggZCB3aXRoXG4gICAgICAgICB8IGBVY2hhciBjb2RlIC0+IFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgY29kZVxuICAgICAgICAgfCBgTWFsZm9ybWVkIF8gLT5cbiAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgVXV0Zi51X3JlcDtcbiAgICAgICAgICAgICAgIHdhcm46PXRydWUpXG4gICAgICAoKSBzcmM7XG4gICAgKEJ1ZmZlci5jb250ZW50cyBidWZmZXIsICF3YXJuKVxuXG4gIGxldCBub3JtYWxpemF0aW9uX25lZWRlZCBzcmMgPVxuICAgIGxldCByZWMgbG9vcCBzcmMgaSBsID1cbiAgICAgIGkgPCBsICYmXG4gICAgICBtYXRjaCBzcmMuW2ldIHdpdGhcbiAgICAgICgqIENoYXJhY3RlcnMgdGhhdCBuZWVkIHRvIGJlIGVuY29kZWQgaW4gSFRNTCAqKVxuICAgICAgfCAnXFwwMzQnIHwgJ1xcMDM4JyB8ICdcXDA2MCcgfCdcXDA2MicgLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAoKiBBU0NJSSBjaGFyYWN0ZXJzICopXG4gICAgICB8ICdcXDAwOScgfCAnXFwwMTAnIHwgJ1xcMDEzJyB8ICdcXDAzMicuLidcXDEyNicgLT5cbiAgICAgICAgICBsb29wIHNyYyAoaSArIDEpIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICAgIHRydWVcbiAgICBpblxuICAgIGxvb3Agc3JjIDAgKFN0cmluZy5sZW5ndGggc3JjKVxuXG4gIGxldCBub3JtYWxpemVfaHRtbCBzcmMgPVxuICAgIGlmIG5vcm1hbGl6YXRpb25fbmVlZGVkIHNyYyB0aGVuIGJlZ2luXG4gICAgICBsZXQgd2FybiA9IHJlZiBmYWxzZSBpblxuICAgICAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgKFN0cmluZy5sZW5ndGggc3JjKSBpblxuICAgICAgVXV0Zi5TdHJpbmcuZm9sZF91dGZfOFxuICAgICAgICAoZnVuIF8gXyBkIC0+XG4gICAgICAgICAgIG1hdGNoIGQgd2l0aFxuICAgICAgICAgICB8IGBVY2hhciB1IC0+XG4gICAgICAgICAgICAgICBiZWdpbiBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gICAgICAgICAgICAgICB8IDM0IC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJnF1b3Q7XCJcbiAgICAgICAgICAgICAgIHwgMzggLT5cbiAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWZmZXIgXCImYW1wO1wiXG4gICAgICAgICAgICAgICB8IDYwIC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmx0O1wiXG4gICAgICAgICAgICAgICB8IDYyIC0+XG4gICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIFwiJmd0O1wiXG4gICAgICAgICAgICAgICB8IGNvZGUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgdSA9XG4gICAgICAgICAgICAgICAgICAgICAoKiBJbGxlZ2FsIGNoYXJhY3RlcnMgaW4gaHRtbFxuICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9DaGFyYWN0ZXJfZW5jb2RpbmdzX2luX0hUTUxcbiAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sICopXG4gICAgICAgICAgICAgICAgICAgICBpZiAoKiBBLiBjb250cm9sIEMwICopXG4gICAgICAgICAgICAgICAgICAgICAgIChjb2RlIDw9IDMxICYmIGNvZGUgPD4gOSAmJiBjb2RlIDw+IDEwICYmIGNvZGUgPD4gMTMpXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEIuIERFTCArIGNvbnRyb2wgQzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSBpbnZhbGlkIGluIGh0bWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLSBkaXNjb3VyYWdlZCBpbiB4bWw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAweDg1IHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dCBsZXQncyBkaXNjYXJkIGl0IGFueXdheSAqKVxuICAgICAgICAgICAgICAgICAgICAgICB8fCAoY29kZSA+PSAxMjcgJiYgY29kZSA8PSAxNTkpXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEMuIFVURi0xNiBzdXJyb2dhdGUgaGFsdmVzIDogYWxyZWFkeSBkaXNjYXJkZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdXV0ZiB8fCAoY29kZSA+PSAweEQ4MDAgJiYgY29kZSA8PSAweERGRkYpICopXG4gICAgICAgICAgICAgICAgICAgICAgICgqIEQuIEJPTSByZWxhdGVkICopXG4gICAgICAgICAgICAgICAgICAgICAgIHx8IGNvZGUgbGFuZCAweEZGRkYgPSAweEZGRkVcbiAgICAgICAgICAgICAgICAgICAgICAgfHwgY29kZSBsYW5kIDB4RkZGRiA9IDB4RkZGRlxuICAgICAgICAgICAgICAgICAgICAgdGhlbiAod2Fybjo9dHJ1ZTsgVXV0Zi51X3JlcClcbiAgICAgICAgICAgICAgICAgICAgIGVsc2UgdVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgVXV0Zi5CdWZmZXIuYWRkX3V0Zl84IGJ1ZmZlciB1XG4gICAgICAgICAgICAgICBlbmRcbiAgICAgICAgICAgfCBgTWFsZm9ybWVkIF8gLT5cbiAgICAgICAgICAgICAgIFV1dGYuQnVmZmVyLmFkZF91dGZfOCBidWZmZXIgVXV0Zi51X3JlcDtcbiAgICAgICAgICAgICAgIHdhcm46PXRydWUpXG4gICAgICAgICgpIHNyYztcbiAgICAgIChCdWZmZXIuY29udGVudHMgYnVmZmVyLCAhd2FybilcbiAgICBlbmQgZWxzZVxuICAgICAgKHNyYywgZmFsc2UpXG5cbmVuZFxuXG5tb2R1bGUgdHlwZSBUYWdMaXN0ID0gc2lnIHZhbCBlbXB0eXRhZ3MgOiBzdHJpbmcgbGlzdCBlbmRcblxuKCoqIEZvcm1hdCBiYXNlZCBwcmludGVycyAqKVxuXG5sZXQgcHBfbm9vcCBfZm10IF8gPSAoKVxuXG5tb2R1bGUgTWFrZV9mbXRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKEkgOiBUYWdMaXN0KSA9XG5zdHJ1Y3RcbiAgb3BlbiBYbWxcblxuICBsZXQgb3Blbl9ib3ggaW5kZW50IGZtdCA9IGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9vcGVuX2JveCBmbXQgMCBlbHNlICgpXG4gIGxldCBjbG9zZV9ib3ggaW5kZW50IGZtdCA9IGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpIGVsc2UgKClcbiAgbGV0IHNwIGluZGVudCBmbXQgPVxuICAgIGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9wcmludF9zcGFjZSBmbXQgKCkgZWxzZSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIlxuICBsZXQgY3V0IGluZGVudCBmbXQgPVxuICAgIGlmIGluZGVudCB0aGVuIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpIGVsc2UgKClcblxuICBtb2R1bGUgUyA9IFNldC5NYWtlKFN0cmluZylcbiAgbGV0IGlzX2VtcHR5dGFnID0gbWF0Y2ggSS5lbXB0eXRhZ3Mgd2l0aFxuICAgIHwgW10gLT4gZnVuIF8gLT4gZmFsc2VcbiAgICB8IGwgLT5cbiAgICAgIGxldCBzZXQgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIHMgeCAtPiBTLmFkZCB4IHMpIFMuZW1wdHkgbCBpblxuICAgICAgZnVuIHggLT4gUy5tZW0geCBzZXRcblxuICBsZXQgcHBfZW5jb2RlIGVuY29kZSBpbmRlbnQgZm10IHMgPVxuICAgIGxldCBzID0gZW5jb2RlIHMgaW5cbiAgICBpZiBpbmRlbnQgdGhlblxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFslYUBdXCIgRm9ybWF0LnBwX3ByaW50X3RleHQgc1xuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHNcblxuICBsZXQgcHBfc2VwIGluZGVudCA9IGZ1bmN0aW9uXG4gICAgfCBTcGFjZSAtPiBmdW4gZm10ICgpIC0+IHNwIGluZGVudCBmbXRcbiAgICB8IENvbW1hIC0+IGZ1biBmbXQgKCkgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiLCV0XCIgKHNwIGluZGVudClcblxuICBsZXQgcHBfYXR0cmliX3ZhbHVlIGVuY29kZSBpbmRlbnQgZm10IGEgPSBtYXRjaCBhY29udGVudCBhIHdpdGhcbiAgICB8IEFGbG9hdCBmIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlYVxcXCJcIiBwcF9udW1iZXIgZlxuICAgIHwgQUludCBpIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIlxcXCIlZFxcXCJcIiBpXG4gICAgfCBBU3RyIHMgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVzXFxcIlwiIChlbmNvZGUgcylcbiAgICB8IEFTdHJMIChzZXAsIHNsaXN0KSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiXFxcIiVhXFxcIlwiXG4gICAgICAgIChGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwOihwcF9zZXAgaW5kZW50IHNlcClcbiAgICAgICAgICAgKHBwX2VuY29kZSBlbmNvZGUgaW5kZW50KSkgc2xpc3RcblxuICBsZXQgcHBfYXR0cmliIGVuY29kZSBpbmRlbnQgZm10IGEgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdFxuICAgICAgXCIldCVzPSVhXCIgKHNwIGluZGVudCkgKGFuYW1lIGEpIChwcF9hdHRyaWJfdmFsdWUgZW5jb2RlIGluZGVudCkgYVxuXG4gIGxldCBwcF9hdHRyaWJzIGVuY29kZSBpbmRlbnQgPVxuICAgIEZvcm1hdC5wcF9wcmludF9saXN0IH5wcF9zZXA6cHBfbm9vcCAocHBfYXR0cmliIGVuY29kZSBpbmRlbnQpXG5cbiAgbGV0IHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50IGZtdCAodGFnLCBhdHRycykgPVxuICAgIG9wZW5fYm94IGluZGVudCBmbXQgO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzJWEldFwiIHRhZyAocHBfYXR0cmlicyBlbmNvZGUgaW5kZW50KSBhdHRycyAoY3V0IGluZGVudCk7XG4gICAgY2xvc2VfYm94IGluZGVudCBmbXRcblxuICBsZXQgcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRycyA9XG4gICAgaWYgaXNfZW1wdHl0YWcgdGFnIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwlYS8+XCIgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICBlbHNlIGJlZ2luXG4gICAgICBvcGVuX2JveCBpbmRlbnQgZm10IDtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwlYT4ldDwvJXM+XCJcbiAgICAgICAgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIHRhZyA7XG4gICAgICBjbG9zZV9ib3ggaW5kZW50IGZtdFxuICAgIGVuZFxuXG4gIGxldCByZWMgcHBfdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRycyBjaGlsZHJlbiA9XG4gICAgbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgIHwgW10gLT4gcHBfY2xvc2VkdGFnIGVuY29kZSBpbmRlbnQgZm10IHRhZyBhdHRyc1xuICAgIHwgXyAtPlxuICAgICAgb3Blbl9ib3ggaW5kZW50IGZtdCA7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8JXQlYT4ldCVhJXQldDwvJXM+XCJcbiAgICAgICAgKG9wZW5fYm94IGluZGVudClcbiAgICAgICAgKHBwX3RhZ19hbmRfYXR0cmlicyBlbmNvZGUgaW5kZW50KSAodGFnLCBhdHRycylcbiAgICAgICAgKGN1dCBpbmRlbnQpXG4gICAgICAgIChwcF9lbHRzIGVuY29kZSBpbmRlbnQpIGNoaWxkcmVuXG4gICAgICAgIChjbG9zZV9ib3ggaW5kZW50KVxuICAgICAgICAoY3V0IGluZGVudClcbiAgICAgICAgdGFnIDtcbiAgICAgIGNsb3NlX2JveCBpbmRlbnQgZm10XG5cbiAgYW5kIHBwX2VsdCBlbmNvZGUgaW5kZW50IGZtdCBlbHQgPSBtYXRjaCBjb250ZW50IGVsdCB3aXRoXG4gICAgfCBDb21tZW50IHRleHRlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI8IS0tJXMtLT5cIiAoZXNjYXBlX2NvbW1lbnQgdGV4dGUpXG5cbiAgICB8IEVudGl0eSBlIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCImJXM7XCIgZVxuXG4gICAgfCBQQ0RBVEEgdGV4dGUgLT5cbiAgICAgIHBwX2VuY29kZSBlbmNvZGUgaW5kZW50IGZtdCB0ZXh0ZVxuXG4gICAgfCBFbmNvZGVkUENEQVRBIHRleHRlIC0+XG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCB0ZXh0ZVxuXG4gICAgfCBOb2RlIChuYW1lLCB4aF9hdHRycywgeGhfdGFnbGlzdCkgLT5cbiAgICAgIHBwX3RhZyBlbmNvZGUgaW5kZW50IGZtdCBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3RcblxuICAgIHwgTGVhZiAobmFtZSwgeGhfYXR0cnMpIC0+XG4gICAgICBwcF9jbG9zZWR0YWcgZW5jb2RlIGluZGVudCBmbXQgbmFtZSB4aF9hdHRyc1xuXG4gICAgfCBFbXB0eSAtPiAoKVxuXG4gIGFuZCBwcF9lbHRzIGVuY29kZSBpbmRlbnQgPVxuICAgIEZvcm1hdC5wcF9wcmludF9saXN0XG4gICAgICB+cHBfc2VwOihmdW4gZm10ICgpIC0+IGN1dCBpbmRlbnQgZm10KVxuICAgICAgKHBwX2VsdCBlbmNvZGUgaW5kZW50KVxuXG4gIGxldCBwcCA/KGVuY29kZT1lbmNvZGVfdW5zYWZlX2NoYXIpID8oaW5kZW50PWZhbHNlKSAoKSA9XG4gICAgcHBfZWx0IGVuY29kZSBpbmRlbnRcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkX2ZtdFxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoVHlwZWRfeG1sIDogWG1sX3NpZ3MuVHlwZWRfeG1sIHdpdGggbW9kdWxlIFhtbCA6PSBYbWwpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBQID0gTWFrZV9mbXQoWG1sKShUeXBlZF94bWwuSW5mbylcblxuICAoKiBBZGQgYW4geG1sbnMgdGFnIG9uIHRoZSBodG1sIGVsZW1lbnQgaWYgaXQncyBub3QgYWxyZWFkeSBwcmVzZW50ICopXG4gIGxldCBwcmVwYXJlX2RvY3VtZW50IGRvYyA9XG4gICAgbGV0IGRvYyA9IFR5cGVkX3htbC5kb2NfdG9lbHQgZG9jIGluXG4gICAgbWF0Y2ggWG1sLmNvbnRlbnQgZG9jIHdpdGhcbiAgICB8IFhtbC5Ob2RlIChuLCBhLCBjKSAtPlxuICAgICAgbGV0IGEgPVxuICAgICAgICBpZiBMaXN0LmV4aXN0cyAoZnVuIGEgLT4gWG1sLmFuYW1lIGEgPSBcInhtbG5zXCIpIGFcbiAgICAgICAgdGhlbiBhXG4gICAgICAgIGVsc2UgWG1sLnN0cmluZ19hdHRyaWIgXCJ4bWxuc1wiIFR5cGVkX3htbC5JbmZvLm5hbWVzcGFjZSA6OiBhXG4gICAgICBpblxuICAgICAgWG1sLm5vZGUgfmEgbiBjXG4gICAgfCBfIC0+IGRvY1xuXG4gIGxldCBwcF9lbHQgPyhlbmNvZGU9ZW5jb2RlX3Vuc2FmZV9jaGFyKSA/KGluZGVudD1mYWxzZSkgKCkgZm10IGZvcmV0ID1cbiAgICBQLnBwX2VsdCBlbmNvZGUgaW5kZW50IGZtdCAoVHlwZWRfeG1sLnRvZWx0IGZvcmV0KVxuXG4gIGxldCBwcCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgPyhpbmRlbnQ9ZmFsc2UpID9hZHZlcnQgKCkgZm10IGRvYyA9XG4gICAgRm9ybWF0LnBwX29wZW5fdmJveCBmbXQgMCA7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJXNALFwiIFR5cGVkX3htbC5JbmZvLmRvY3R5cGUgO1xuXG4gICAgYmVnaW4gbWF0Y2ggYWR2ZXJ0IHdpdGhcbiAgICAgIHwgU29tZSBzIC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBcIjwhLS0gJXMgLS0+QCxcIiBzXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBlbmQgO1xuXG4gICAgUC5wcF9lbHQgZW5jb2RlIGluZGVudCBmbXQgKHByZXBhcmVfZG9jdW1lbnQgZG9jKSA7XG4gICAgRm9ybWF0LnBwX2Nsb3NlX2JveCBmbXQgKCk7XG5cbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoSSA6IFRhZ0xpc3QpXG4gICAgKE8gOiBYbWxfc2lncy5PdXRwdXQpID1cbnN0cnVjdFxuXG4gIGxldCAoKyspID0gTy5jb25jYXRcblxuICBvcGVuIFhtbFxuXG4gIGxldCBzZXBhcmF0b3JfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFNwYWNlIC0+IFwiIFwiXG4gICAgfCBDb21tYSAtPiBcIiwgXCJcblxuICBsZXQgYXR0cmliX3ZhbHVlX3RvX3N0cmluZyBlbmNvZGUgYSA9IG1hdGNoIGFjb250ZW50IGEgd2l0aFxuICAgIHwgQUZsb2F0IGYgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCIgKHN0cmluZ19vZl9udW1iZXIgZilcbiAgICB8IEFJbnQgaSAtPiBQcmludGYuc3ByaW50ZiBcIlxcXCIlZFxcXCJcIiBpXG4gICAgfCBBU3RyIHMgLT4gUHJpbnRmLnNwcmludGYgXCJcXFwiJXNcXFwiXCIgKGVuY29kZSBzKVxuICAgIHwgQVN0ckwgKHNlcCwgc2xpc3QpIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcIlxcXCIlc1xcXCJcIlxuICAgICAgICAoZW5jb2RlIChTdHJpbmcuY29uY2F0IChzZXBhcmF0b3JfdG9fc3RyaW5nIHNlcCkgc2xpc3QpKVxuXG4gIGxldCBhdHRyaWJfdG9fc3RyaW5nIGVuY29kZSBhID1cbiAgICBQcmludGYuc3ByaW50ZiBcIiVzPSVzXCIgKGFuYW1lIGEpIChhdHRyaWJfdmFsdWVfdG9fc3RyaW5nIGVuY29kZSBhKVxuXG4gIGxldCByZWMgeGhfcHJpbnRfYXR0cnMgZW5jb2RlIGF0dHJzID0gbWF0Y2ggYXR0cnMgd2l0aFxuICAgIHwgW10gLT4gTy5lbXB0eVxuICAgIHwgYXR0cjo6cXVldWUgLT5cbiAgICAgIE8ucHV0IChcIiBcIl4gYXR0cmliX3RvX3N0cmluZyBlbmNvZGUgYXR0cilcbiAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBxdWV1ZVxuXG4gIGFuZCB4aF9wcmludF9jbG9zZWR0YWcgZW5jb2RlIHRhZyBhdHRycyA9XG4gICAgaWYgSS5lbXB0eXRhZ3MgPSBbXSB8fCBMaXN0Lm1lbSB0YWcgSS5lbXB0eXRhZ3NcbiAgICB0aGVuXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCBcIiAvPlwiKVxuICAgIGVsc2VcbiAgICAgIChPLnB1dCAoXCI8XCJedGFnKVxuICAgICAgICsrIHhoX3ByaW50X2F0dHJzIGVuY29kZSBhdHRyc1xuICAgICAgICsrIE8ucHV0IChcIj48L1wiXnRhZ15cIj5cIikpXG5cbiAgYW5kIHhoX3ByaW50X3RhZyBlbmNvZGUgdGFnIGF0dHJzIHRhZ2xpc3QgPVxuICAgIGlmIHRhZ2xpc3QgPSBbXVxuICAgIHRoZW4geGhfcHJpbnRfY2xvc2VkdGFnIGVuY29kZSB0YWcgYXR0cnNcbiAgICBlbHNlXG4gICAgICAoTy5wdXQgKFwiPFwiXnRhZylcbiAgICAgICArKyB4aF9wcmludF9hdHRycyBlbmNvZGUgYXR0cnNcbiAgICAgICArKyBPLnB1dCBcIj5cIlxuICAgICAgICsrIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHRhZ2xpc3RcbiAgICAgICArKyBPLnB1dCAoXCI8L1wiXnRhZ15cIj5cIikpXG5cbiAgYW5kIHByaW50X25vZGVzIGVuY29kZSBuYW1lIHhoX2F0dHJzIHhoX3RhZ2xpc3QgcXVldWUgPVxuICAgIHhoX3ByaW50X3RhZyBlbmNvZGUgbmFtZSB4aF9hdHRycyB4aF90YWdsaXN0XG4gICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICBhbmQgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgdGFnbGlzdCA9XG4gICAgbWF0Y2ggdGFnbGlzdCB3aXRoXG5cbiAgICB8IFtdIC0+IE8uZW1wdHlcblxuICAgIHwgZWx0IDo6IHF1ZXVlIC0+IG1hdGNoIGNvbnRlbnQgZWx0IHdpdGhcblxuICAgICAgfCBDb21tZW50IHRleHRlIC0+XG4gICAgICAgIE8ucHV0IChcIjwhLS1cIl4oZW5jb2RlIHRleHRlKV5cIi0tPlwiKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IEVudGl0eSBlIC0+XG4gICAgICAgIE8ucHV0IChcIiZcIl5lXlwiO1wiKSAoKiBubyBlbmNvZGluZyAqKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IFBDREFUQSB0ZXh0ZSAtPlxuICAgICAgICBPLnB1dCAoZW5jb2RlIHRleHRlKVxuICAgICAgICArKyB4aF9wcmludF90YWdsaXN0IGVuY29kZSBxdWV1ZVxuXG4gICAgICB8IEVuY29kZWRQQ0RBVEEgdGV4dGUgLT5cbiAgICAgICAgTy5wdXQgdGV4dGVcbiAgICAgICAgKysgeGhfcHJpbnRfdGFnbGlzdCBlbmNvZGUgcXVldWVcblxuICAgICAgfCBOb2RlIChuYW1lLCB4aF9hdHRycywgeGhfdGFnbGlzdCkgLT5cbiAgICAgICAgcHJpbnRfbm9kZXMgZW5jb2RlIG5hbWUgeGhfYXR0cnMgeGhfdGFnbGlzdCBxdWV1ZVxuXG4gICAgICB8IExlYWYgKG5hbWUsIHhoX2F0dHJzKSAtPlxuICAgICAgICBwcmludF9ub2RlcyBlbmNvZGUgbmFtZSB4aF9hdHRycyBbXSBxdWV1ZVxuXG4gICAgICB8IEVtcHR5IC0+XG4gICAgICAgIHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIHF1ZXVlXG5cbiAgbGV0IHByaW50X2xpc3QgPyhlbmNvZGUgPSBlbmNvZGVfdW5zYWZlX2NoYXIpIGZvcmV0ID1cbiAgICBPLm1ha2UgKHhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIGZvcmV0KVxuXG5lbmRcblxubW9kdWxlIE1ha2VfdHlwZWRcbiAgICAoWG1sIDogWG1sX3NpZ3MuSXRlcmFibGUpXG4gICAgKFR5cGVkX3htbCA6IFhtbF9zaWdzLlR5cGVkX3htbCB3aXRoIG1vZHVsZSBYbWwgOj0gWG1sKVxuICAgIChPIDogWG1sX3NpZ3MuT3V0cHV0KSA9XG5zdHJ1Y3RcblxuICBtb2R1bGUgUCA9IE1ha2UoWG1sKShUeXBlZF94bWwuSW5mbykoTylcbiAgbGV0ICgrKykgPSBPLmNvbmNhdFxuXG4gIGxldCBwcmludF9saXN0ID8oZW5jb2RlID0gZW5jb2RlX3Vuc2FmZV9jaGFyKSBmb3JldCA9XG4gICAgTy5tYWtlIChQLnhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIChMaXN0Lm1hcCBUeXBlZF94bWwudG9lbHQgZm9yZXQpKVxuXG4gIGxldCBwcmludCA/KGVuY29kZSA9IGVuY29kZV91bnNhZmVfY2hhcikgPyhhZHZlcnQgPSBcIlwiKSBkb2MgPVxuICAgIGxldCBkb2MgPSBUeXBlZF94bWwuZG9jX3RvZWx0IGRvYyBpblxuICAgIGxldCBkb2MgPSBtYXRjaCBYbWwuY29udGVudCBkb2Mgd2l0aFxuICAgICAgfCBYbWwuTm9kZSAobiwgYSwgYykgLT5cbiAgICAgICAgbGV0IGEgPVxuICAgICAgICAgIGlmIExpc3QuZXhpc3RzIChmdW4gYSAtPiBYbWwuYW5hbWUgYSA9IFwieG1sbnNcIikgYVxuICAgICAgICAgIHRoZW4gYVxuICAgICAgICAgIGVsc2UgWG1sLnN0cmluZ19hdHRyaWIgXCJ4bWxuc1wiIFR5cGVkX3htbC5JbmZvLm5hbWVzcGFjZSA6OiBhXG4gICAgICAgIGluXG4gICAgICAgIFhtbC5ub2RlIH5hIG4gY1xuICAgICAgfCBfIC0+IGRvYyBpblxuICAgIE8ubWFrZVxuICAgICAgKE8ucHV0IFR5cGVkX3htbC5JbmZvLmRvY3R5cGVcbiAgICAgICArKyBPLnB1dCAoaWYgYWR2ZXJ0IDw+IFwiXCIgdGhlbiAoXCI8IS0tIFwiIF4gYWR2ZXJ0IF4gXCIgLS0+XFxuXCIpIGVsc2UgXCJcXG5cIilcbiAgICAgICArKyBQLnhoX3ByaW50X3RhZ2xpc3QgZW5jb2RlIFtkb2NdKVxuXG5lbmRcblxubW9kdWxlIFNpbXBsZV9vdXRwdXQoTSA6IHNpZyB2YWwgcHV0OiBzdHJpbmcgLT4gdW5pdCBlbmQpID0gc3RydWN0XG4gIHR5cGUgb3V0ID0gdW5pdFxuICB0eXBlIG0gPSB1bml0IC0+IHVuaXRcbiAgbGV0IGVtcHR5ICgpID0gKClcbiAgbGV0IGNvbmNhdCBmMSBmMiAoKSA9IGYxICgpOyBmMiAoKVxuICBsZXQgcHV0IHMgKCkgPSBNLnB1dCBzXG4gIGxldCBtYWtlIGYgPSBmICgpXG5lbmRcblxubW9kdWxlIE1ha2Vfc2ltcGxlXG4gICAgKFhtbCA6IFhtbF9zaWdzLkl0ZXJhYmxlKVxuICAgIChJIDogVGFnTGlzdCkgPVxuc3RydWN0XG5cbiAgbGV0IHByaW50X2xpc3Qgfm91dHB1dCA9XG4gICAgbGV0IG1vZHVsZSBNID0gTWFrZShYbWwpKEkpKFNpbXBsZV9vdXRwdXQoc3RydWN0IGxldCBwdXQgPSBvdXRwdXQgZW5kKSkgaW5cbiAgICBNLnByaW50X2xpc3RcblxuZW5kXG5cbm1vZHVsZSBNYWtlX3R5cGVkX3NpbXBsZVxuICAgIChYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSlcbiAgICAoVHlwZWRfeG1sIDogWG1sX3NpZ3MuVHlwZWRfeG1sIHdpdGggIG1vZHVsZSBYbWwgOj0gWG1sKSA9XG5zdHJ1Y3RcblxuICBsZXQgcHJpbnRfbGlzdCB+b3V0cHV0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgTWFrZV90eXBlZChYbWwpKFR5cGVkX3htbCkoU2ltcGxlX291dHB1dChzdHJ1Y3QgbGV0IHB1dCA9IG91dHB1dCBlbmQpKSBpblxuICAgIE0ucHJpbnRfbGlzdFxuXG4gIGxldCBwcmludCB+b3V0cHV0ID1cbiAgICBsZXQgbW9kdWxlIE0gPVxuICAgICAgTWFrZV90eXBlZChYbWwpKFR5cGVkX3htbCkoU2ltcGxlX291dHB1dChzdHJ1Y3QgbGV0IHB1dCA9IG91dHB1dCBlbmQpKSBpblxuICAgIE0ucHJpbnRcblxuZW5kXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydCwgR3LDqWdvaXJlIEhlbnJ5XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTWFrZShYbWwgOiBYbWxfc2lncy5JdGVyYWJsZSkgPSBzdHJ1Y3RcblxuICBvcGVuIFhtbFxuXG4gICgqKiBJdGVyYXRvcnMgKilcblxuICBsZXQgYW1hcDEgZiBuID1cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgRW1wdHkgfCBDb21tZW50IF8gfCBQQ0RBVEEgXyB8IEVuY29kZWRQQ0RBVEEgXyB8IEVudGl0eSBfIC0+IG5cbiAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+IGxlYWYgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lXG4gICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPiBub2RlIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZSBlbHRzXG5cbiAgbGV0IHJlYyBhbWFwIGYgbiA9XG4gICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICB8IEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXyAtPiBuXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBsZWFmIH5hOihmIG5hbWUgYXR0cmlicykgbmFtZVxuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgIG5vZGUgfmE6KGYgbmFtZSBhdHRyaWJzKSBuYW1lIChMaXN0Lm1hcCAoYW1hcCBmKSBlbHRzKVxuXG4gIGxldCByZWMgYWRkX2Zsb2F0X2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZV1cbiAgICB8IGhlYWQgOjogdGFpbCB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICBmbG9hdF9hdHRyaWIgbmFtZSB2YWx1ZSA6OiB0YWlsXG4gICAgfCBoZWFkIDo6IHRhaWwgLT4gaGVhZCA6OiBhZGRfZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfZmxvYXRfYXR0cmliIGlzX2F0dHJpYiBmIGwgPVxuICAgIGxldCBhdXggaGVhZCA9IG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBRmxvYXQgdmFsdWUgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+IGZsb2F0X2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfaW50X2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtpbnRfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgaW50X2F0dHJpYiBuYW1lIHZhbHVlIDo6IHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IGFkZF9pbnRfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCByZWMgcm1fYXR0cmliIGlzX2F0dHJpYiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgaGVhZCA6OiB0YWlsIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPiBybV9hdHRyaWIgaXNfYXR0cmliIHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IHJtX2F0dHJpYiBpc19hdHRyaWIgdGFpbFxuXG4gIGxldCBtYXBfaW50X2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQUludCB2YWx1ZSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gaW50X2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtzdHJpbmdfYXR0cmliIG5hbWUgdmFsdWVdXG4gICAgfCBoZWFkIDo6IHRhaWwgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlIDo6IHRhaWxcbiAgICB8IGhlYWQgOjogdGFpbCAtPiBoZWFkIDo6IGFkZF9zdHJpbmdfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCBtYXBfc3RyaW5nX2F0dHJpYiBpc19hdHRyaWIgZiBsID1cbiAgICBsZXQgYXV4IGhlYWQgPSBtYXRjaCBhY29udGVudCBoZWFkIHdpdGhcbiAgICAgIHwgQVN0ciB2YWx1ZSB3aGVuIGlzX2F0dHJpYiAoYW5hbWUgaGVhZCkgLT4gc3RyaW5nX2F0dHJpYiAoYW5hbWUgaGVhZCkgKGYgdmFsdWUpXG4gICAgICB8IF8gLT4gaGVhZCBpblxuICAgIExpc3QubWFwIGF1eCBsXG5cbiAgbGV0IHJlYyBhZGRfc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtzcGFjZV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXV1cbiAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChTcGFjZSwgdmFsdWVzJykgd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBzcGFjZV9zZXBfYXR0cmliIG5hbWUgKHZhbHVlIDo6IHZhbHVlcycpIDo6IHRhaWxcbiAgICAgIHwgXyB3aGVuIGFuYW1lIGhlYWQgPSBuYW1lIC0+XG4gICAgICAgIHNwYWNlX3NlcF9hdHRyaWIgbmFtZSBbdmFsdWVdIDo6IHRhaWxcbiAgICAgIHwgXyAtPiBoZWFkIDo6IGFkZF9zcGFjZV9zZXBfYXR0cmliIG5hbWUgdmFsdWUgdGFpbFxuXG4gIGxldCByZWMgYWRkX2NvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbY29tbWFfc2VwX2F0dHJpYiBuYW1lIFt2YWx1ZV1dXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoQ29tbWEsIHZhbHVlcycpIHdoZW4gYW5hbWUgaGVhZCA9IG5hbWUgLT5cbiAgICAgICAgY29tbWFfc2VwX2F0dHJpYiBuYW1lICh2YWx1ZSA6OiB2YWx1ZXMnKSA6OiB0YWlsXG4gICAgICB8IF8gd2hlbiBhbmFtZSBoZWFkID0gbmFtZSAtPlxuICAgICAgICBjb21tYV9zZXBfYXR0cmliIG5hbWUgW3ZhbHVlXSA6OiB0YWlsXG4gICAgICB8IF8gLT4gaGVhZCA6OiBhZGRfY29tbWFfc2VwX2F0dHJpYiBuYW1lIHZhbHVlIHRhaWxcblxuICBsZXQgcmVjIHJtX2F0dHJpYl9mcm9tX2xpc3QgaXNfYXR0cmliIGlzX3ZhbHVlID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFtdXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIG1hdGNoIGFjb250ZW50IGhlYWQgd2l0aFxuICAgICAgfCBBU3RyTCAoc2VwLCB2YWx1ZXMpIHdoZW4gaXNfYXR0cmliIChhbmFtZSBoZWFkKSAtPlxuICAgICAgICBiZWdpbiBtYXRjaCBMaXN0LmZpbHRlciAoZnVuIHYgLT4gbm90IChpc192YWx1ZSB2KSkgdmFsdWVzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IHRhaWxcbiAgICAgICAgICB8IHZhbHVlcycgLT5cbiAgICAgICAgICAgIG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICAgICB8IFNwYWNlIC0+IHNwYWNlX3NlcF9hdHRyaWIgKGFuYW1lIGhlYWQpIHZhbHVlcycgOjogdGFpbFxuICAgICAgICAgICAgfCBDb21tYSAtPiBjb21tYV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSB2YWx1ZXMnIDo6IHRhaWxcbiAgICAgICAgZW5kXG4gICAgICB8IF8gLT4gaGVhZCA6OiBybV9hdHRyaWJfZnJvbV9saXN0IGlzX2F0dHJpYiBpc192YWx1ZSB0YWlsXG5cbiAgbGV0IG1hcF9zdHJpbmdfYXR0cmliX2luX2xpc3QgaXNfYXR0cmliIGYgbCA9XG4gICAgbGV0IGF1eCBoZWFkID0gbWF0Y2ggYWNvbnRlbnQgaGVhZCB3aXRoXG4gICAgICB8IEFTdHJMIChzZXAsIHZhbHVlcykgd2hlbiBpc19hdHRyaWIgKGFuYW1lIGhlYWQpIC0+XG4gICAgICAgIGJlZ2luIG1hdGNoIHNlcCB3aXRoXG4gICAgICAgICAgfCBDb21tYSAtPiBjb21tYV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSAoTGlzdC5tYXAgZiB2YWx1ZXMpXG4gICAgICAgICAgfCBTcGFjZSAtPiBzcGFjZV9zZXBfYXR0cmliIChhbmFtZSBoZWFkKSAoTGlzdC5tYXAgZiB2YWx1ZXMpXG4gICAgICAgIGVuZFxuICAgICAgfCBfIC0+IGhlYWQgaW5cbiAgICBMaXN0Lm1hcCBhdXggbFxuXG4gIGxldCByZWMgZm9sZCBvZl9lbXB0eSBvZl9jb21tZW50IG9mX3R4dCBvZl9lbmNvZGVkcGNkYXRhIG9mX2VudGl0eVxuICAgICAgb2ZfbGVhZiBvZl9ub2RlIG4gPVxuICAgIG1hdGNoIGNvbnRlbnQgbiB3aXRoXG4gICAgfCBFbXB0eSAtPiBvZl9lbXB0eSAoKVxuICAgIHwgQ29tbWVudCBzIC0+IG9mX2NvbW1lbnQgc1xuICAgIHwgUENEQVRBIHMgLT4gb2ZfdHh0IHNcbiAgICB8IEVuY29kZWRQQ0RBVEEgcyAtPiBvZl9lbmNvZGVkcGNkYXRhIHNcbiAgICB8IEVudGl0eSBzIC0+IG9mX2VudGl0eSBzXG4gICAgfCBMZWFmIChuYW1lLCBhdHRyaWJzKSAtPiBvZl9sZWFmIG5hbWUgYXR0cmlic1xuICAgIHwgTm9kZSAobmFtZSwgYXR0cmlicywgZWx0cykgLT5cbiAgICAgIG9mX25vZGUgbmFtZSBhdHRyaWJzXG4gICAgICAgIChMaXN0Lm1hcCAoZm9sZCBvZl9lbXB0eSBvZl9jb21tZW50IG9mX3R4dCBvZl9lbmNvZGVkcGNkYXRhIG9mX2VudGl0eSBvZl9sZWFmIG9mX25vZGUpIGVsdHMpXG5cbiAgbGV0IGFsbF9lbnRpdGllcyBlbHQgPVxuICAgIGxldCBmIF8gPSBbXSBpblxuICAgIGZvbGQgZiBmIGYgZiBmXG4gICAgICAoZnVuIF9lbmFtZSBfYXR0cmlicyAtPiBbXSkgKGZ1biBfZW5hbWUgX2F0dHJpYnMgZWx0cyAtPiBMaXN0LmZsYXR0ZW4gZWx0cylcbiAgICAgIGVsdFxuXG4gIGxldCBmbGF0bWFwIGYgbCA9IExpc3QuY29uY2F0IChMaXN0Lm1hcCBmIGwpXG5cbiAgbGV0IHRyYW5zbGF0ZSByb290X2xlYWYgcm9vdF9ub2RlIHN1Yl9sZWFmIHN1Yl9ub2RlIHVwZGF0ZV9zdGF0ZSBzdGF0ZSBuID1cbiAgICBsZXQgcmVjIHRyYW5zbGF0ZScgc3RhdGUgIG4gPVxuICAgICAgbWF0Y2ggY29udGVudCBuIHdpdGhcbiAgICAgIHwgKEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXykgLT4gW25dXG4gICAgICB8IExlYWYgKG5hbWUsIGF0dHJpYnMpIC0+XG4gICAgICAgIHN1Yl9sZWFmIHN0YXRlIG5hbWUgYXR0cmlic1xuICAgICAgfCBOb2RlIChuYW1lLCBhdHRyaWJzLCBlbHRzKSAtPlxuICAgICAgICBzdWJfbm9kZSBzdGF0ZSBuYW1lIGF0dHJpYnNcbiAgICAgICAgICAoZmxhdG1hcCAodHJhbnNsYXRlJyAodXBkYXRlX3N0YXRlIG5hbWUgYXR0cmlicyBzdGF0ZSkpIGVsdHMpXG4gICAgaW5cbiAgICBtYXRjaCBjb250ZW50IG4gd2l0aFxuICAgIHwgKEVtcHR5IHwgQ29tbWVudCBfIHwgUENEQVRBIF8gfCBFbmNvZGVkUENEQVRBIF8gfCBFbnRpdHkgXykgLT4gblxuICAgIHwgTGVhZiAobmFtZSwgYXR0cmlicykgLT5cbiAgICAgIHJvb3RfbGVhZiBuYW1lIGF0dHJpYnNcbiAgICB8IE5vZGUgKG5hbWUsIGF0dHJpYnMsIGVsdHMpIC0+XG4gICAgICByb290X25vZGUgbmFtZSBhdHRyaWJzIChmbGF0bWFwICh0cmFuc2xhdGUnIHN0YXRlKSBlbHRzKVxuXG5lbmRcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgU2ltb24gQ2FzdGVsbGFuXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgQ2VjaWxlIEhlcmJlbGluXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgVmluY2VudCBCYWxhdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxuKCoqIFR5cGUgaW5zdGFudGlhdGlvbnMgZm9yIFNWRyAqKVxuXG4oKiogVGhpcyBtb2R1bGUgZGVmaW5lcyBiYXNpYyBkYXRhIHR5cGVzIGZvciBkYXRhLCBhdHRyaWJ1dGVzXG4gICAgYW5kIGVsZW1lbnQgb2NjdXJyaW5nIGluIFNWRyBkb2N1bWVudHMuXG4gICAgSXQgaXMgYmFzZWQgb24gdGhlIHNwZWNpZmljYXRpb24gYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy8uXG5cbiAgICBUaGlzIG1vZHVsZSBpcyBleHBlcmltZW50YWwsIGl0IG1heSBsYWNrIG9mIHNvbWUgYXR0cmlidXRlcyxcbiAgICBhbmQgdGhlIGludGVyZmFjZSBpcyB2ZXJ5IGxvdyBsZXZlbCBhbmQgZG8gbm90IHRha2UgZGVlcGx5IGludG8gYWNjb3VudFxuICAgIHRoZSBuZWVkcyBvZiBTVkcgZWxlbWVudHMuICopXG5cbm9wZW4gU3ZnX3R5cGVzXG5cbm9wZW4gVW5pdFxuXG5sZXQgc3RyaW5nX29mX2lyaSB4ID0gUHJpbnRmLnNwcmludGYgXCJ1cmwoJXMpXCIgeFxuXG5tb2R1bGUgVW5pdCA9IHN0cnVjdFxuXG4gICgqIGxldCByZWwgeCAgICAgPSAoeCwgTm9uZSkgKilcbiAgKCogbGV0IGRlZyB4ICAgICA9ICh4LCBTb21lIGBEZWcpICopXG4gICgqIGxldCBncmFkIHggICAgPSAoeCwgU29tZSBgR3JhZCkgKilcbiAgKCogbGV0IHJhZCB4ICAgICA9ICh4LCBTb21lIGBSYWQpICopXG4gICgqIGxldCBtcyB4ICAgICAgPSAoeCwgU29tZSBgTXMpICopXG4gICgqIGxldCBzIHggICAgICAgPSAoeCwgU29tZSBgUykgKilcbiAgKCogbGV0IGVtIHggICAgICA9ICh4LCBTb21lIGBFbSkgKilcbiAgKCogbGV0IGV4IHggICAgICA9ICh4LCBTb21lIGBFeCkgKilcbiAgKCogbGV0IHB4IHggICAgICA9ICh4LCBTb21lIGBQeCkgKilcbiAgKCogbGV0IGluXyB4ICAgICA9ICh4LCBTb21lIGBJbikgKilcbiAgKCogbGV0IGNtIHggICAgICA9ICh4LCBTb21lIGBDbSkgKilcbiAgKCogbGV0IG1tIHggICAgICA9ICh4LCBTb21lIGBNbSkgKilcbiAgKCogbGV0IHB0IHggICAgICA9ICh4LCBTb21lIGBQdCkgKilcbiAgKCogbGV0IHBjIHggICAgICA9ICh4LCBTb21lIGBQYykgKilcbiAgKCogbGV0IHBlcmNlbnQgeCA9ICh4LCBTb21lIGBQZXJjZW50KSAqKVxuICAoKiBsZXQgaHogeCAgICAgID0gKHgsIFNvbWUgYEh6KSAqKVxuICAoKiBsZXQga2h6IHggICAgID0gKHgsIFNvbWUgYEtIeikgKilcblxuICBsZXQgdG9fc3RyaW5nIGYgKG4sIHVuaXQpID0gUHJpbnRmLnNwcmludGYgXCIlZyVzXCIgbiBiZWdpblxuICAgIG1hdGNoIHVuaXQgd2l0aFxuICAgIHwgU29tZSB1bml0IC0+IGYgdW5pdFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gIGVuZFxuXG4gIGxldCBhbmdsZV9uYW1lcyA9IGZ1bmN0aW9uIGBEZWcgLT4gXCJkZWdcIiB8IGBHcmFkIC0+IFwiZ3JhZFwiIHwgYFJhZCAtPiBcInJhZFwiXG4gIGxldCBzdHJpbmdfb2ZfYW5nbGUgYSA9IHRvX3N0cmluZyBhbmdsZV9uYW1lcyBhXG5cbiAgKCogbGV0IHRpbWVfbmFtZXMgPSBmdW5jdGlvbiBgTXMgLT4gXCJtc1wiIHwgYFMgLT4gXCJzXCIgKilcbiAgKCogbGV0IHN0cmluZ19vZl90aW1lIGEgPSB0b19zdHJpbmcgdGltZV9uYW1lcyBhICopXG5cbiAgbGV0IGxlbmd0aF9uYW1lcyA9IGZ1bmN0aW9uXG4gICAgfCBgRW0gLT4gXCJlbVwiIHwgYEV4IC0+IFwiZXhcIiB8IGBQeCAtPiBcInB4XCIgfCBgSW4gLT4gXCJpblwiIHwgYENtIC0+IFwiY21cIlxuICAgIHwgYE1tIC0+IFwibW1cIiB8IGBQdCAtPiBcInB0XCIgfCBgUGMgLT4gXCJwY1wiIHwgYFBlcmNlbnQgLT4gXCIlXCJcbiAgbGV0IHN0cmluZ19vZl9sZW5ndGggKGE6IGxlbmd0aCkgPSB0b19zdHJpbmcgbGVuZ3RoX25hbWVzIGFcblxuICAoKiBsZXQgZnJlcV9uYW1lcyA9IGZ1bmN0aW9uIGBIeiAtPiBcIkh6XCIgfCBgS0h6IC0+IFwia0h6XCIgKilcbiAgKCogbGV0IHN0cmluZ19vZl9mcmVxIGEgPSB0b19zdHJpbmcgZnJlcV9uYW1lcyBhICopXG5cbmVuZFxuXG5vcGVuIFVuaXRcblxubGV0IG9wdF9jb25jYXQgPyhzZXA9XCIgXCIpIHMgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IHMgXiBzZXAgXiAoZiB4KVxuICB8IE5vbmUgLT4gc1xuXG5sZXQgbGlzdCA/KHNlcD1cIiBcIikgZiBsID0gU3RyaW5nLmNvbmNhdCBzZXAgKExpc3QubWFwIGYgbClcblxubGV0IHN0cmluZ19vZl9jb2xvciBzID0gc1xuKCogRm9yIG5vdyBqdXN0IHN0cmluZywgd2UgbWF5IHdhbnQgc29tZXRoaW5nIGJldHRlciBpbiB0aGUgZnV0dXJlLiAqKVxuXG5sZXQgc3RyaW5nX29mX2ljY2NvbG9yIHMgPSBzXG5cbmxldCBzdHJpbmdfb2ZfcGFpbnRfd2hpdG91dF9pY2MgPSBmdW5jdGlvblxuICB8IGBOb25lIC0+IFwibm9uZVwiXG4gIHwgYEN1cnJlbnRDb2xvciAtPiBcImN1cnJlbnRDb2xvclwiXG4gIHwgYENvbG9yIChjLCBpY2MpIC0+IG9wdF9jb25jYXQgKHN0cmluZ19vZl9jb2xvciBjKSBzdHJpbmdfb2ZfaWNjY29sb3IgaWNjXG5cbmxldCBzdHJpbmdfb2ZfcGFpbnQgPSBmdW5jdGlvblxuICB8IGBJY2MgKGlyaSwgTm9uZSkgLT4gc3RyaW5nX29mX2lyaSBpcmlcbiAgfCBgSWNjIChpcmksIFNvbWUgYikgLT5cbiAgICAoc3RyaW5nX29mX2lyaSBpcmkpIF5cIiBcIl4gKHN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyBiKVxuICB8ICNwYWludF93aGl0b3V0X2ljYyBhcyBjIC0+IHN0cmluZ19vZl9wYWludF93aGl0b3V0X2ljYyBjXG5cbmxldCBzdHJpbmdfb2ZfZmlsbF9ydWxlID0gZnVuY3Rpb25cbiAgfCBgTm9uemVybyAtPiBcIm5vbnplcm9cIlxuICB8IGBFdmVub2RkIC0+IFwiZXZlbm9kZFwiXG5cbm1vZHVsZSBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnNcblxuICAgIChYbWwgOiBYbWxfc2lncy5UKVxuICAgIChDIDogU3ZnX3NpZ3MuV3JhcHBlZF9mdW5jdGlvbnMgd2l0aCBtb2R1bGUgWG1sID0gWG1sKSA9XG5cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcbiAgbW9kdWxlIFcgPSBYbWwuV1xuXG4gIG1vZHVsZSBJbmZvID0gc3RydWN0XG4gICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwiaW1hZ2Uvc3ZnK3htbFwiXG4gICAgbGV0IGFsdGVybmF0aXZlX2NvbnRlbnRfdHlwZXMgPSBbXVxuICAgIGxldCBlbXB0eXRhZ3MgPSBbXVxuICAgIGxldCB2ZXJzaW9uID0gXCJTVkcgMS4xXCJcbiAgICBsZXQgc3RhbmRhcmQgPSBcImh0dHA6Ly93d3cudzMub3JnL1RSL3N2ZzExL1wiXG4gICAgbGV0IG5hbWVzcGFjZSA9IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIGxldCBkb2N0eXBlID1cbiAgICAgIFhtbF9wcmludC5jb21wb3NlX2RvY3R5cGVcInN2Z1wiXG4gICAgICAgIFtcIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOXCI7XG4gICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZFwiXVxuICBlbmRcblxuICB0eXBlIHVyaSA9IFhtbC51cmlcbiAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuICBsZXQgdXJpX29mX3N0cmluZyA9IFhtbC51cmlfb2Zfc3RyaW5nXG5cblxuICAoKiBNYW5kYXRvcnkgWE1MIHN0dWZmLiAqKVxuXG4gIHR5cGUgJ2EgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gIHR5cGUgKydhIGVsdCA9IFhtbC5lbHRcblxuICB0eXBlICdhIHdyYXAgPSAnYSBXLnRcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBXLnRsaXN0XG5cbiAgdHlwZSAoJ2EsICdiKSBudWxsYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiB1bml0IC0+ICdiIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHVuYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAnYiBlbHQgd3JhcCAtPiAnYyBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBzdGFyID1cbiAgICA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICgnYiBlbHQpIGxpc3Rfd3JhcCAtPiAnYyBlbHRcblxuICBsZXQgdG90IHggPSB4XG5cbiAgbGV0IHRvdGwgeCA9IHhcblxuICBsZXQgdG9lbHQgeCA9IHhcblxuICBsZXQgdG9lbHRsIHggPSB4XG5cbiAgbGV0IHRvX2F0dHJpYiB4ID0geFxuXG4gIGxldCBudWxsYXJ5IHRhZyA/YSAoKSA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLm5pbCAoKSlcblxuICBsZXQgdW5hcnkgdGFnID9hIGVsdCA9XG4gICAgWG1sLm5vZGUgP2EgdGFnIChXLnNpbmdsZXRvbiBlbHQpXG5cbiAgbGV0IHN0YXIgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gIHR5cGUgYWx0Z2x5cGhkZWZfY29udGVudCA9XG4gICAgWyBgUmVmIG9mIChnbHlwaHJlZiBlbHQpIGxpc3RcbiAgICB8IGBJdGVtIG9mIChhbHRnbHlwaGl0ZW0gZWx0KSBsaXN0XG4gICAgXVxuXG4gIGxldCB0b194bWxhdHRyaWJzIHggPSB4XG5cbiAgbGV0IGZsb2F0X2F0dHJpYiA9IFhtbC5mbG9hdF9hdHRyaWJcblxuICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgKCogd3JhcCBDIG1vZHVsZSBmdW5jdGlvbnMgKilcblxuICBsZXQgc3RyaW5nX29mX2Nvb3JkID0gQy5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGggPSBDLnN0cmluZ19vZl9sZW5ndGhcblxuICBsZXQgc3RyaW5nX29mX2xlbmd0aHMgPSBDLnN0cmluZ19vZl9sZW5ndGhzXG5cbiAgKCogQ3VzdG9tIFhNTCBhdHRyaWJ1dGVzICopXG5cbiAgbGV0IHVzZXJfYXR0cmliIGYgbmFtZSB2ID1cbiAgICBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChXLmZtYXAgZiB2KVxuXG4gIGxldCBudW1iZXJfYXR0cmliID0gZmxvYXRfYXR0cmliXG5cbiAgKCogZm9yIG5vdyBzdHJpbmdfYXR0cmliLCB3ZSBtYXkgd2FudCBzb21ldGhpbmcgYmV0dGVyIGluIHRoZVxuICAgICBmdXR1cmUuICopXG4gIGxldCBjb2xvcl9hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICgqIFNWRyBhdHRyaWJ1dGVzICopXG5cbiAgbGV0IG1ldGFkYXRhID9hIGNoaWxkcmVuID0gWG1sLm5vZGUgP2EgXCJtZXRhZGF0YVwiIGNoaWxkcmVuXG5cbiAgbGV0IGZvcmVpZ25PYmplY3QgP2EgY2hpbGRyZW4gPSBYbWwubm9kZSA/YSBcImZvcmVpZ25PYmplY3RcIiBjaGlsZHJlblxuXG4gIGxldCB0eHQgcyA9IFhtbC5wY2RhdGEgc1xuICBsZXQgcGNkYXRhID0gdHh0XG5cbiAgKCogZ2VuZXJhdGVkICopXG4gIGxldCBhX3ZlcnNpb24gPSBzdHJpbmdfYXR0cmliIFwidmVyc2lvblwiXG5cbiAgbGV0IGFfYmFzZVByb2ZpbGUgPSBzdHJpbmdfYXR0cmliIFwiYmFzZVByb2ZpbGVcIlxuXG4gIGxldCBhX3ggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4XCJcblxuICBsZXQgYV95ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwieVwiXG5cbiAgbGV0IGFfd2lkdGggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwid2lkdGhcIlxuXG4gIGxldCBhX2hlaWdodCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJoZWlnaHRcIlxuXG4gIGxldCBhX3ByZXNlcnZlQXNwZWN0UmF0aW8gPVxuICAgIHN0cmluZ19hdHRyaWIgXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCJcblxuICBsZXQgYV9jb250ZW50U2NyaXB0VHlwZSA9XG4gICAgc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRTY3JpcHRUeXBlXCJcblxuICBsZXQgYV9jb250ZW50U3R5bGVUeXBlID0gc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRTdHlsZVR5cGVcIlxuXG4gIGxldCBhX3pvb21BbmRQYW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ6b29tQW5kU3BhblwiIHhcblxuICBsZXQgYV9ocmVmID0gc3RyaW5nX2F0dHJpYiBcImhyZWZcIlxuXG4gIGxldCBhX3hsaW5rX2hyZWYgPSBzdHJpbmdfYXR0cmliIFwieGxpbms6aHJlZlwiXG5cbiAgbGV0IGFfcmVxdWlyZWRGZWF0dXJlcyA9XG4gICAgWG1sLnNwYWNlX3NlcF9hdHRyaWIgXCJyZXF1aXJlZEZlYXR1cmVzXCJcblxuICBsZXQgYV9yZXF1aXJlZEV4dGVuc2lvbnMgPVxuICAgIFhtbC5zcGFjZV9zZXBfYXR0cmliIFwicmVxdWlyZWRFeHRlbnNpb25cIlxuXG4gIGxldCBhX3N5c3RlbUxhbmd1YWdlID1cbiAgICBYbWwuY29tbWFfc2VwX2F0dHJpYiBcInN5c3RlbUxhbmd1YWdlXCJcblxuICBsZXQgYV9leHRlcm5hbFJlc3NvdXJjZXNSZXF1aXJlZCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYm9vbCBcImV4dGVybmFsUmVzc291cmNlc1JlcXVpcmVkXCJcblxuICBsZXQgYV9pZCA9IHN0cmluZ19hdHRyaWIgXCJpZFwiXG5cbiAgbGV0IGFfdXNlcl9kYXRhIG5hbWUgPSBzdHJpbmdfYXR0cmliIChcImRhdGEtXCIgXiBuYW1lKVxuXG4gIGxldCBhX3htbF9iYXNlID0gc3RyaW5nX2F0dHJpYiBcInhtbDpiYXNlXCJcblxuICBsZXQgYV94bWxfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJ4bWw6bGFuZ1wiXG5cbiAgbGV0IGFfeG1sX3NwYWNlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sOnNwYWNlXCIgeFxuXG4gIGxldCBhX3R5cGUgPSBzdHJpbmdfYXR0cmliIFwidHlwZVwiXG5cbiAgbGV0IGFfbWVkaWEgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcIm1lZGlhXCJcblxuICBsZXQgYV94bGlua190aXRsZSA9IHN0cmluZ19hdHRyaWIgXCJ4bGluazp0aXRsZVwiXG5cbiAgbGV0IGFfY2xhc3MgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYiBcImNsYXNzXCJcblxuICBsZXQgYV9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJzdHlsZVwiXG5cbiAgbGV0IGFfdHJhbnNmb3JtID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfdHJhbnNmb3JtcyBcInRyYW5zZm9ybVwiXG5cbiAgbGV0IGFfdmlld0JveCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ZvdXJmbG9hdHMgXCJ2aWV3Qm94XCJcblxuICBsZXQgYV9kID0gc3RyaW5nX2F0dHJpYiBcImRcIlxuXG4gIGxldCBhX3BhdGhMZW5ndGggPSBudW1iZXJfYXR0cmliIFwicGF0aExlbmd0aFwiXG5cbiAgbGV0IGFfcnggPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwicnhcIlxuXG4gIGxldCBhX3J5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInJ5XCJcblxuICBsZXQgYV9jeCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJjeFwiXG5cbiAgbGV0IGFfY3kgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiY3lcIlxuXG4gIGxldCBhX3IgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RoIFwiclwiXG5cbiAgbGV0IGFfeDEgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4MVwiXG5cbiAgbGV0IGFfeTEgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ5MVwiXG5cbiAgbGV0IGFfeDIgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ4MlwiXG5cbiAgbGV0IGFfeTIgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJ5MlwiXG5cbiAgbGV0IGFfcG9pbnRzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfY29vcmRzIFwicG9pbnRzXCJcblxuICBsZXQgYV94X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcInhcIlxuXG4gIGxldCBhX3lfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwieVwiXG5cbiAgbGV0IGFfZHggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkeFwiXG5cbiAgbGV0IGFfZHkgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkeVwiXG5cbiAgbGV0IGFfZHhfbGlzdCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGhzIFwiZHhcIlxuXG4gIGxldCBhX2R5X2xpc3QgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfbGVuZ3RocyBcImR5XCJcblxuICBsZXQgYV9sZW5ndGhBZGp1c3QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJsZW5ndGhBZGp1c3RcIiB4XG5cbiAgbGV0IGFfdGV4dExlbmd0aCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJ0ZXh0TGVuZ3RoXCJcblxuICBsZXQgYV90ZXh0X2FuY2hvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtYW5jaG9yXCIgeFxuXG4gIGxldCBhX3RleHRfZGVjb3JhdGlvbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtZGVjb3JhdGlvblwiIHhcblxuICBsZXQgYV90ZXh0X3JlbmRlcmluZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRleHQtcmVuZGVyaW5nXCIgeFxuXG4gIGxldCBhX3JvdGF0ZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJyb3RhdGVcIlxuXG4gIGxldCBhX3N0YXJ0T2Zmc2V0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcInN0YXJ0T2Zmc2V0XCJcblxuICBsZXQgYV9tZXRob2QgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtZXRob2RcIiB4XG5cbiAgbGV0IGFfc3BhY2luZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNwYWNpbmdcIiB4XG5cbiAgbGV0IGFfZ2x5cGhSZWYgPSBzdHJpbmdfYXR0cmliIFwiZ2x5cGhSZWZcIlxuXG4gIGxldCBhX2Zvcm1hdCA9IHN0cmluZ19hdHRyaWIgXCJmb3JtYXRcIlxuXG4gIGxldCBhX21hcmtlclVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFya2VyVW5pdHNcIiB4XG5cbiAgbGV0IGFfcmVmWCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9jb29yZCBcInJlZlhcIlxuXG4gIGxldCBhX3JlZlkgPSB1c2VyX2F0dHJpYiBzdHJpbmdfb2ZfY29vcmQgXCJyZWZZXCJcblxuICBsZXQgYV9tYXJrZXJXaWR0aCA9IHVzZXJfYXR0cmliIHN0cmluZ19vZl9sZW5ndGggXCJtYXJrZXJXaWR0aFwiXG5cbiAgbGV0IGFfbWFya2VySGVpZ2h0ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2xlbmd0aCBcIm1hcmtlckhlaWdodFwiXG5cbiAgbGV0IGFfb3JpZW50IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX29yaWVudCBcIm9yaWVudFwiIHhcblxuICBsZXQgYV9sb2NhbCA9IHN0cmluZ19hdHRyaWIgXCJsb2NhbFwiXG5cbiAgbGV0IGFfcmVuZGVyaW5nX2ludGVudCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJlbmRlcmluZy1pbnRlbnRcIiB4XG5cbiAgbGV0IGFfZ3JhZGllbnRVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImdyYWRpZW50VW5pdHNcIiB4XG5cbiAgbGV0IGFfZ3JhZGllbnRUcmFuc2Zvcm0gPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3RyYW5zZm9ybXMgXCJncmFkaWVudFRyYW5zZm9ybVwiXG5cbiAgbGV0IGFfc3ByZWFkTWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3ByZWFkTWV0aG9kXCIgeFxuXG4gIGxldCBhX2Z4ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwiZnhcIlxuXG4gIGxldCBhX2Z5ID0gdXNlcl9hdHRyaWIgc3RyaW5nX29mX2Nvb3JkIFwiZnlcIlxuXG4gIGxldCBhX29mZnNldCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9vZmZzZXQgXCJvZmZzZXRcIiB4XG5cbiAgbGV0IGFfcGF0dGVyblVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicGF0dGVyblVuaXRzXCIgeFxuXG4gIGxldCBhX3BhdHRlcm5Db250ZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJwYXR0ZXJuQ29udGVudFVuaXRzXCIgeFxuXG4gIGxldCBhX3BhdHRlcm5UcmFuc2Zvcm0geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfdHJhbnNmb3JtcyBcInBhdHRlcm5UcmFuc2Zvcm1cIiB4XG5cbiAgbGV0IGFfY2xpcFBhdGhVbml0cyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImNsaXBQYXRoVW5pdHNcIiB4XG5cbiAgbGV0IGFfbWFza1VuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWFza1VuaXRzXCIgeFxuXG4gIGxldCBhX21hc2tDb250ZW50VW5pdHMgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJtYXNrQ29udGVudFVuaXRzXCIgeFxuXG4gIGxldCBhX3ByaW1pdGl2ZVVuaXRzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicHJpbWl0aXZlVW5pdHNcIiB4XG5cbiAgbGV0IGFfZmlsdGVyUmVzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIFwiZmlsdGVyUmVzVW5pdHNcIlxuXG4gIGxldCBhX3Jlc3VsdCA9IHN0cmluZ19hdHRyaWIgXCJyZXN1bHRcIlxuXG4gIGxldCBhX2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2luX3ZhbHVlIFwiaW5cIiB4XG5cbiAgbGV0IGFfaW4yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2luX3ZhbHVlIFwiaW4yXCIgeFxuXG4gIGxldCBhX2F6aW11dGggPSBudW1iZXJfYXR0cmliIFwiYXppbXV0aFwiXG5cbiAgbGV0IGFfZWxldmF0aW9uID0gbnVtYmVyX2F0dHJpYiBcImVsZXZhdGlvblwiXG5cbiAgbGV0IGFfcG9pbnRzQXRYID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WFwiXG5cbiAgbGV0IGFfcG9pbnRzQXRZID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WVwiXG5cbiAgbGV0IGFfcG9pbnRzQXRaID0gbnVtYmVyX2F0dHJpYiBcInBvaW50c0F0WlwiXG5cbiAgbGV0IGFfc3BlY3VsYXJFeHBvbmVudCA9IG51bWJlcl9hdHRyaWIgXCJzcGVjdWxhckV4cG9uZW50XCJcblxuICBsZXQgYV9zcGVjdWxhckNvbnN0YW50ID0gbnVtYmVyX2F0dHJpYiBcInNwZWN1bGFyQ29uc3RhbnRcIlxuXG4gIGxldCBhX2xpbWl0aW5nQ29uZUFuZ2xlID0gbnVtYmVyX2F0dHJpYiBcImxpbWl0aW5nQ29uZUFuZ2xlXCJcblxuICBsZXQgYV9tb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibW9kZVwiIHhcblxuICBsZXQgYV9mZUNvbG9yTWF0cml4X3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3ZhbHVlcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJ2YWx1ZXNcIlxuXG4gIGxldCBhX3RyYW5zZmVyX3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3RhYmxlVmFsdWVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVycyBcInRhYmxlVmFsdWVzXCJcblxuICBsZXQgYV9pbnRlcmNlcHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJpbnRlcmNlcHRcIlxuXG4gIGxldCBhX2FtcGxpdHVkZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFtcGxpdHVkZVwiXG5cbiAgbGV0IGFfZXhwb25lbnQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJleHBvbmVudFwiXG5cbiAgbGV0IGFfdHJhbnNmZXJfb2Zmc2V0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib2Zmc2V0XCJcblxuICBsZXQgYV9mZUNvbXBvc2l0ZV9vcGVyYXRvciB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9wZXJhdG9yXCIgeFxuXG4gIGxldCBhX2sxID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazFcIlxuXG4gIGxldCBhX2syID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazJcIlxuXG4gIGxldCBhX2szID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazNcIlxuXG4gIGxldCBhX2s0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiazRcIlxuXG4gIGxldCBhX29yZGVyID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcIm9yZGVyXCJcblxuICBsZXQgYV9rZXJuZWxNYXRyaXggPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXJzIFwia2VybmVsTWF0cml4XCJcblxuICBsZXQgYV9kaXZpc29yID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiZGl2aXNvclwiXG5cbiAgbGV0IGFfYmlhcyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImJpYXNcIlxuXG4gIGxldCBhX2tlcm5lbFVuaXRMZW5ndGggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJrZXJuZWxVbml0TGVuZ3RoXCJcblxuICBsZXQgYV90YXJnZXRYID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW50IFwidGFyZ2V0WFwiXG5cbiAgbGV0IGFfdGFyZ2V0WSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2ludCBcInRhcmdldFlcIlxuXG4gIGxldCBhX2VkZ2VNb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidGFyZ2V0WVwiIHhcblxuICBsZXQgYV9wcmVzZXJ2ZUFscGhhID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYm9vbCBcInByZXNlcnZlQWxwaGFcIlxuXG4gIGxldCBhX3N1cmZhY2VTY2FsZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN1cmZhY2VTY2FsZVwiXG5cbiAgbGV0IGFfZGlmZnVzZUNvbnN0YW50ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJkaWZmdXNlQ29uc3RhbnRcIlxuXG4gIGxldCBhX3NjYWxlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic2NhbGVcIlxuXG4gIGxldCBhX3hDaGFubmVsU2VsZWN0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4Q2hhbm5lbFNlbGVjdG9yXCIgeFxuXG4gIGxldCBhX3lDaGFubmVsU2VsZWN0b3IgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ5Q2hhbm5lbFNlbGVjdG9yXCIgeFxuXG4gIGxldCBhX3N0ZERldmlhdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcInN0ZERldmlhdGlvblwiXG5cbiAgbGV0IGFfZmVNb3JwaG9sb2d5X29wZXJhdG9yIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwib3BlcmF0b3JcIiB4XG5cbiAgbGV0IGFfcmFkaXVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciBcInJhZGl1c1wiXG5cbiAgbGV0IGFfYmFzZUZyZW5xdWVuY3kgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgXCJiYXNlRnJlcXVlbmN5XCJcblxuICBsZXQgYV9udW1PY3RhdmVzID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW50IFwibnVtT2N0YXZlc1wiXG5cbiAgbGV0IGFfc2VlZCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNlZWRcIlxuXG4gIGxldCBhX3N0aXRjaFRpbGVzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwic3RpdGNoVGlsZXNcIiB4XG5cbiAgbGV0IGFfZmVUdXJidWxlbmNlX3R5cGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCIgeFxuXG4gIGxldCBhX3hsaW5rX3Nob3cgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bGluazpzaG93XCIgeFxuXG4gIGxldCBhX3hsaW5rX2FjdHVhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ4bGluazphY3R1YXRlXCIgeFxuXG4gIGxldCBhX3RhcmdldCA9IHN0cmluZ19hdHRyaWIgXCJ4bGluazp0YXJnZXRcIlxuXG4gIGxldCBhX3ZpZXdUYXJnZXQgPSBzdHJpbmdfYXR0cmliIFwidmlld1RhcmdldFwiXG5cbiAgbGV0IGFfYXR0cmlidXRlTmFtZSA9IHN0cmluZ19hdHRyaWIgXCJhdHRyaWJ1dGVOYW1lXCJcblxuICBsZXQgYV9hdHRyaWJ1dGVUeXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYXR0cmlidXRlVHlwZVwiIHhcblxuICBsZXQgYV9iZWdpbiA9IHN0cmluZ19hdHRyaWIgXCJiZWdpblwiXG5cbiAgbGV0IGFfZHVyID0gc3RyaW5nX2F0dHJpYiBcImR1clwiXG5cbiAgbGV0IGFfbWluID0gc3RyaW5nX2F0dHJpYiBcIm1pblwiXG5cbiAgbGV0IGFfbWF4ID0gc3RyaW5nX2F0dHJpYiBcIm1heFwiXG5cbiAgbGV0IGFfcmVzdGFydCB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInJlc3RhcnRcIiB4XG5cbiAgbGV0IGFfcmVwZWF0Q291bnQgPSBzdHJpbmdfYXR0cmliIFwicmVwZWF0Q291bnRcIlxuXG4gIGxldCBhX3JlcGVhdER1ciA9IHN0cmluZ19hdHRyaWIgXCJyZXBlYXREdXJcIlxuXG4gIGxldCBhX2ZpbGwgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9wYWludCBcImZpbGxcIlxuXG4gIGxldCBhX2FuaW1hdGlvbl9maWxsIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZmlsbFwiIHhcblxuICBsZXQgYV9maWxsX3J1bGUgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9maWxsX3J1bGUgXCJmaWxsLXJ1bGVcIlxuXG4gIGxldCBhX2NhbGNNb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiY2FsY01vZGVcIiB4XG5cbiAgbGV0IGFfYW5pbWF0aW9uX3ZhbHVlcyA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwidmFsdWVzXCJcblxuICBsZXQgYV9rZXlUaW1lcyA9IFhtbC5jb21tYV9zZXBfYXR0cmliIFwia2V5VGltZXNcIlxuXG4gIGxldCBhX2tleVNwbGluZXMgPSBYbWwuY29tbWFfc2VwX2F0dHJpYiBcImtleVNwbGluZXNcIlxuXG4gIGxldCBhX2Zyb20gPSBzdHJpbmdfYXR0cmliIFwiZnJvbVwiXG5cbiAgbGV0IGFfdG8gPSBzdHJpbmdfYXR0cmliIFwidG9cIlxuXG4gIGxldCBhX2J5ID0gc3RyaW5nX2F0dHJpYiBcImJ5XCJcblxuICBsZXQgYV9hZGRpdGl2ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcImFkZGl0aXZlXCIgeFxuXG4gIGxldCBhX2FjY3VtdWxhdGUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJhY2N1bXVsYXRlXCIgeFxuXG4gIGxldCBhX2tleVBvaW50cyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnNfc2VtaWNvbG9uIFwia2V5UG9pbnRzXCJcblxuICBsZXQgYV9wYXRoID0gc3RyaW5nX2F0dHJpYiBcInBhdGhcIlxuXG4gIGxldCBhX2FuaW1hdGVUcmFuc2Zvcm1fdHlwZSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ0eXBlXCJcblxuICBsZXQgYV9ob3Jpel9vcmlnaW5feCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LW9yaWdpbi14XCJcblxuICBsZXQgYV9ob3Jpel9vcmlnaW5feSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LW9yaWdpbi15XCJcblxuICBsZXQgYV9ob3Jpel9hZHZfeCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImhvcml6LWFkdi14XCJcblxuICBsZXQgYV92ZXJ0X29yaWdpbl94ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidmVydC1vcmlnaW4teFwiXG5cbiAgbGV0IGFfdmVydF9vcmlnaW5feSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInZlcnQtb3JpZ2luLXlcIlxuXG4gIGxldCBhX3ZlcnRfYWR2X3kgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2ZXJ0LWFkdi15XCJcblxuICBsZXQgYV91bmljb2RlID0gc3RyaW5nX2F0dHJpYiBcInVuaWNvZGVcIlxuXG4gIGxldCBhX2dseXBoX25hbWUgPSBzdHJpbmdfYXR0cmliIFwiZ2x5cGhuYW1lXCJcblxuICBsZXQgYV9vcmllbnRhdGlvbiB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcIm9yaWVudGF0aW9uXCIgeFxuXG4gIGxldCBhX2FyYWJpY19mb3JtIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYXJhYmljLWZvcm1cIiB4XG5cbiAgbGV0IGFfbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJsYW5nXCJcblxuICBsZXQgYV91MSA9IHN0cmluZ19hdHRyaWIgXCJ1MVwiXG5cbiAgbGV0IGFfdTIgPSBzdHJpbmdfYXR0cmliIFwidTJcIlxuXG4gIGxldCBhX2cxID0gc3RyaW5nX2F0dHJpYiBcImcxXCJcblxuICBsZXQgYV9nMiA9IHN0cmluZ19hdHRyaWIgXCJnMlwiXG5cbiAgbGV0IGFfayA9IHN0cmluZ19hdHRyaWIgXCJrXCJcblxuICBsZXQgYV9mb250X2ZhbWlseSA9IHN0cmluZ19hdHRyaWIgXCJmb250LWZhbWlseVwiXG5cbiAgbGV0IGFfZm9udF9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJmb250LXN0eWxlXCJcblxuICBsZXQgYV9mb250X3ZhcmlhbnQgPSBzdHJpbmdfYXR0cmliIFwiZm9udC12YXJpYW50XCJcblxuICBsZXQgYV9mb250X3dlaWdodCA9IHN0cmluZ19hdHRyaWIgXCJmb250LXdlaWdodFwiXG5cbiAgbGV0IGFfZm9udF9zdHJldGNoID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtc3RyZXRjaFwiXG5cbiAgbGV0IGFfZm9udF9zaXplID0gc3RyaW5nX2F0dHJpYiBcImZvbnQtc2l6ZVwiXG5cbiAgbGV0IGFfdW5pY29kZV9yYW5nZSA9IHN0cmluZ19hdHRyaWIgXCJ1bmljb2RlLXJhbmdlXCJcblxuICBsZXQgYV91bml0c19wZXJfZW0gPSBzdHJpbmdfYXR0cmliIFwidW5pdHMtcGVyLWVtXCJcblxuICBsZXQgYV9zdGVtdiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0ZW12XCJcblxuICBsZXQgYV9zdGVtaCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0ZW1oXCJcblxuICBsZXQgYV9zbG9wZSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInNsb3BlXCJcblxuICBsZXQgYV9jYXBfaGVpZ2h0ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiY2FwLWhlaWdodFwiXG5cbiAgbGV0IGFfeF9oZWlnaHQgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ4LWhlaWdodFwiXG5cbiAgbGV0IGFfYWNjZW50X2hlaWdodCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFjY2VudC1oZWlnaHRcIlxuXG4gIGxldCBhX2FzY2VudCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImFzY2VudFwiXG5cbiAgbGV0IGFfd2lkdGhzID0gc3RyaW5nX2F0dHJpYiBcIndpZHRoc1wiXG5cbiAgbGV0IGFfYmJveCA9IHN0cmluZ19hdHRyaWIgXCJiYm94XCJcblxuICBsZXQgYV9pZGVvZ3JhcGhpYyA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcImlkZW9ncmFwaGljXCJcblxuICBsZXQgYV9hbHBoYWJldGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiYWxwaGFiZXRpY1wiXG5cbiAgbGV0IGFfbWF0aGVtYXRpY2FsID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwibWF0aGVtYXRpY2FsXCJcblxuICBsZXQgYV9oYW5naW5nID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwiaGFuZ2luZ1wiXG5cbiAgbGV0IGFfdmlkZW9ncmFwaGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1pZGVvZ3JhcGhpY1wiXG5cbiAgbGV0IGFfdl9hbHBoYWJldGljID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidi1hbHBoYWJldGljXCJcblxuICBsZXQgYV92X21hdGhlbWF0aWNhbCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInYtbWF0aGVtYXRpY2FsXCJcblxuICBsZXQgYV92X2hhbmdpbmcgPSB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ2LWhhbmdpbmdcIlxuXG4gIGxldCBhX3VuZGVybGluZV9wb3NpdGlvbiA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwidW5kZXJsaW5lLXBvc2l0aW9uXCJcblxuICBsZXQgYV91bmRlcmxpbmVfdGhpY2tuZXNzID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJ1bmRlcmxpbmUtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9zdHJpa2V0aHJvdWdoX3Bvc2l0aW9uID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9udW1iZXIgXCJzdHJpa2V0aHJvdWdoLXBvc2l0aW9uXCJcblxuICBsZXQgYV9zdHJpa2V0aHJvdWdoX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3RyaWtldGhyb3VnaC10aGlja25lc3NcIlxuXG4gIGxldCBhX292ZXJsaW5lX3Bvc2l0aW9uID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib3ZlcmxpbmUtcG9zaXRpb25cIlxuXG4gIGxldCBhX292ZXJsaW5lX3RoaWNrbmVzcyA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwib3ZlcmxpbmUtdGhpY2tuZXNzXCJcblxuICBsZXQgYV9zdHJpbmcgPSBzdHJpbmdfYXR0cmliIFwic3RyaW5nXCJcblxuICBsZXQgYV9uYW1lID0gc3RyaW5nX2F0dHJpYiBcIm5hbWVcIlxuXG4gIGxldCBhX2FsaWdubWVudF9iYXNlbGluZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9hbGlnbm1lbnRfYmFzZWxpbmUgXCJhbGlnbm1lbnQtYmFzZWxpbmVcIiB4XG5cbiAgbGV0IGFfZG9taW5hbnRfYmFzZWxpbmUgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfZG9taW5hbnRfYmFzZWxpbmUgXCJkb21pbmFudC1iYXNlbGluZVwiIHhcblxuICAoKiogSmF2YXNjcmlwdCBldmVudHMgKilcblxuICBsZXQgYV9vbmFib3J0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25hYm9ydFwiXG4gIGxldCBhX29uYWN0aXZhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFjdGl2YXRlXCJcbiAgbGV0IGFfb25iZWdpbiA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYmVnaW5cIlxuICBsZXQgYV9vbmVuZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW5kXCJcbiAgbGV0IGFfb25lcnJvciA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZXJyb3JcIlxuICBsZXQgYV9vbmZvY3VzaW4gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvY3VzaW5cIlxuICBsZXQgYV9vbmZvY3Vzb3V0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb2N1c291dFwiXG4gIGxldCBhX29ubG9hZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZFwiXG4gIGxldCBhX29ucmVwZWF0ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25yZXBlYXRcIlxuICBsZXQgYV9vbnJlc2l6ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVzaXplXCJcbiAgbGV0IGFfb25zY3JvbGwgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNjcm9sbFwiXG4gIGxldCBhX29udW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib251bmxvYWRcIlxuICBsZXQgYV9vbnpvb20gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnpvb21cIlxuXG4gICgqKiBKYXZhc2NyaXB0IG1vdXNlIGV2ZW50cyAqKVxuXG4gIGxldCBhX29uY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNsaWNrXCJcbiAgbGV0IGFfb25tb3VzZWRvd24gPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlZG93blwiXG4gIGxldCBhX29ubW91c2V1cCA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2V1cFwiXG4gIGxldCBhX29ubW91c2VvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW92ZXJcIlxuICBsZXQgYV9vbm1vdXNlb3V0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW91dFwiXG4gIGxldCBhX29ubW91c2Vtb3ZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW1vdmVcIlxuXG4gICgqKiBKYXZhc2NyaXB0IHRvdWNoIGV2ZW50cyAqKVxuICBsZXQgYV9vbnRvdWNoc3RhcnQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoc3RhcnRcIlxuICBsZXQgYV9vbnRvdWNoZW5kID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGVuZFwiXG4gIGxldCBhX29udG91Y2htb3ZlID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaG1vdmVcIlxuICBsZXQgYV9vbnRvdWNoY2FuY2VsID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib250b3VjaGNhbmNlbFwiXG5cbiAgbGV0IGFfc3RvcF9jb2xvciA9IGNvbG9yX2F0dHJpYiBcInN0b3AtY29sb3JcIlxuXG4gIGxldCBhX3N0b3Bfb3BhY2l0eSA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0b3Atb3BhY2l0eVwiXG5cbiAgbGV0IGFfc3Ryb2tlID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfcGFpbnQgXCJzdHJva2VcIlxuXG4gIGxldCBhX3N0cm9rZV93aWR0aCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xlbmd0aCBcInN0cm9rZS13aWR0aFwiXG5cbiAgbGV0IGFfc3Ryb2tlX2xpbmVjYXAgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzdHJva2UtbGluZWNhcFwiIHhcblxuICBsZXQgYV9zdHJva2VfbGluZWpvaW4geCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJzdHJva2UtbGluZWpvaW5cIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX21pdGVybGltaXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlciBcInN0cm9rZS1taXRlcmxpbWl0XCJcblxuICBsZXQgYV9zdHJva2VfZGFzaGFycmF5IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3N0cm9rZWRhc2hhcnJheSBcInN0cm9rZS1kYXNoYXJyYXlcIiB4XG5cbiAgbGV0IGFfc3Ryb2tlX2Rhc2hvZmZzZXQgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xlbmd0aCBcInN0cm9rZS1kYXNob2Zmc2V0XCJcblxuICBsZXQgYV9zdHJva2Vfb3BhY2l0eSA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyIFwic3Ryb2tlLW9wYWNpdHlcIlxuXG4gICgqIHhsaW5rIG5hbWVzcGFjZSBnaXZlbiBhIG5pY2tuYW1lIHNpbmNlIHNvbWUgYXR0cmlidXRlcyBtYW5kYXRlZCBieVxuICAgICB0aGUgc3ZnIHN0YW5kYXJkIHN1Y2ggYXMgeGxpbms6aHJlZiBsaXZlIGluIHRoYXQgbmFtZXNwYWNlLCBhbmQgd2VcbiAgICAgcmVmZXIgdG8gdGhlbSBhcyBcInhsaW5rOndoYXRldmVyXCIgKHNlZSBhX3hsaW5rX2hyZWYgb3IgYV94bGlua3Nob3cpXG4gICopXG4gIGxldCBzdmcgPyhhID0gW10pIGNoaWxkcmVuID1cbiAgICBsZXQgYXR0cmlicyA9XG4gICAgICBzdHJpbmdfYXR0cmliIFwieG1sbnNcIiAoVy5yZXR1cm4gXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiKVxuICAgICAgOjogc3RyaW5nX2F0dHJpYiBcInhtbG5zOnhsaW5rXCIgKFcucmV0dXJuIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiKVxuICAgICAgOjogdG9feG1sYXR0cmlicyBhXG4gICAgaW5cbiAgICBzdGFyIH5hOihhdHRyaWJzKSBcInN2Z1wiIGNoaWxkcmVuXG5cbiAgKCogYWxzbyBnZW5lcmF0ZWQgKilcbiAgbGV0IGcgPSBzdGFyIFwiZ1wiXG5cbiAgbGV0IGRlZnMgPSBzdGFyIFwiZGVmc1wiXG5cbiAgbGV0IGRlc2MgPSB1bmFyeSBcImRlc2NcIlxuXG4gIGxldCB0aXRsZSA9IHVuYXJ5IFwidGl0bGVcIlxuXG4gIGxldCBzeW1ib2wgPSBzdGFyIFwic3ltYm9sXCJcblxuICBsZXQgdXNlID0gc3RhciBcInVzZVwiXG5cbiAgbGV0IGltYWdlID0gc3RhciBcImltYWdlXCJcblxuICBsZXQgc3dpdGNoID0gc3RhciBcInN3aXRjaFwiXG5cbiAgbGV0IHN0eWxlID0gdW5hcnkgXCJzdHlsZVwiXG5cbiAgbGV0IHBhdGggPSBzdGFyIFwicGF0aFwiXG5cbiAgbGV0IHJlY3QgPSBzdGFyIFwicmVjdFwiXG5cbiAgbGV0IGNpcmNsZSA9IHN0YXIgXCJjaXJjbGVcIlxuXG4gIGxldCBlbGxpcHNlID0gc3RhciBcImVsbGlwc2VcIlxuXG4gIGxldCBsaW5lID0gc3RhciBcImxpbmVcIlxuXG4gIGxldCBwb2x5bGluZSA9IHN0YXIgXCJwb2x5bGluZVwiXG5cbiAgbGV0IHBvbHlnb24gPSBzdGFyIFwicG9seWdvblwiXG5cbiAgbGV0IHRleHQgPSBzdGFyIFwidGV4dFwiXG5cbiAgbGV0IHRzcGFuID0gc3RhciBcInRzcGFuXCJcblxuICBsZXQgdHJlZiA9IHN0YXIgXCJ0cmVmXCJcblxuICBsZXQgdGV4dFBhdGggPSBzdGFyIFwidGV4dFBhdGhcIlxuXG4gIGxldCBhbHRHbHlwaCA9IHVuYXJ5IFwiYWx0R2x5cGhcIlxuXG4gIGxldCBhbHRHbHlwaERlZiA9IHVuYXJ5IFwiYWx0R2x5cGhEZWZcIlxuXG4gIGxldCBhbHRHbHlwaEl0ZW0gPSBzdGFyIFwiYWx0R2x5cGhJdGVtXCJcblxuICBsZXQgZ2x5cGhSZWYgPSBudWxsYXJ5IFwiZ2x5cGhSZWZcIlxuXG4gIGxldCBtYXJrZXIgPSBzdGFyIFwibWFya2VyXCJcblxuICBsZXQgY29sb3JfcHJvZmlsZSA9IHN0YXIgXCJjb2xvci1wcm9maWxlXCJcblxuICBsZXQgbGluZWFyR3JhZGllbnQgPSBzdGFyIFwibGluZWFyR3JhZGllbnRcIlxuXG4gIGxldCByYWRpYWxHcmFkaWVudCA9IHN0YXIgXCJyYWRpYWxHcmFkaWVudFwiXG5cbiAgbGV0IHN0b3AgPSBzdGFyIFwic3RvcFwiXG5cbiAgbGV0IHBhdHRlcm4gPSBzdGFyIFwicGF0dGVyblwiXG5cbiAgbGV0IGNsaXBQYXRoID0gc3RhciBcImNsaXBQYXRoXCJcblxuICBsZXQgZmlsdGVyID0gc3RhciBcImZpbHRlclwiXG5cbiAgbGV0IGZlRGlzdGFudExpZ2h0ID0gc3RhciBcImZlRGlzdGFudExpZ2h0XCJcblxuICBsZXQgZmVQb2ludExpZ2h0ID0gc3RhciBcImZlUG9pbnRMaWdodFwiXG5cbiAgbGV0IGZlU3BvdExpZ2h0ID0gc3RhciBcImZlU3BvdExpZ2h0XCJcblxuICBsZXQgZmVCbGVuZCA9IHN0YXIgXCJmZUJsZW5kXCJcblxuICBsZXQgZmVDb2xvck1hdHJpeCA9IHN0YXIgXCJmZUNvbG9yTWF0cml4XCJcblxuICBsZXQgZmVDb21wb25lbnRUcmFuc2ZlciA9IHN0YXIgXCJmZUNvbXBvbmVudFRyYW5zZmVyXCJcblxuICBsZXQgZmVGdW5jQSA9IHN0YXIgXCJmZUZ1bmNBXCJcblxuICBsZXQgZmVGdW5jRyA9IHN0YXIgXCJmZUZ1bmNHXCJcblxuICBsZXQgZmVGdW5jQiA9IHN0YXIgXCJmZUZ1bmNCXCJcblxuICBsZXQgZmVGdW5jUiA9IHN0YXIgXCJmZUZ1bmNSXCJcblxuICBsZXQgZmVDb21wb3NpdGUgPSBzdGFyIFwiZmVDb21wb3NpdGVcIlxuXG4gIGxldCBmZUNvbnZvbHZlTWF0cml4ID0gc3RhciBcImZlQ29udm9sdmVNYXRyaXhcIlxuXG4gIGxldCBmZURpZmZ1c2VMaWdodGluZyA9IHN0YXIgXCJmZURpZmZ1c2VMaWdodGluZ1wiXG5cbiAgbGV0IGZlRGlzcGxhY2VtZW50TWFwID0gc3RhciBcImZlRGlzcGxhY2VtZW50TWFwXCJcblxuICBsZXQgZmVGbG9vZCA9IHN0YXIgXCJmZUZsb29kXCJcblxuICBsZXQgZmVHYXVzc2lhbkJsdXIgPSBzdGFyIFwiZmVHYXVzc2lhbkJsdXJcIlxuXG4gIGxldCBmZUltYWdlID0gc3RhciBcImZlSW1hZ2VcIlxuXG4gIGxldCBmZU1lcmdlID0gc3RhciBcImZlTWVyZ2VcIlxuXG4gIGxldCBmZU1vcnBob2xvZ3kgPSBzdGFyIFwiZmVNb3JwaG9sb2d5XCJcblxuICBsZXQgZmVPZmZzZXQgPSBzdGFyIFwiZmVPZmZzZXRcIlxuXG4gIGxldCBmZVNwZWN1bGFyTGlnaHRpbmcgPSBzdGFyIFwiZmVTcGVjdWxhckxpZ2h0aW5nXCJcblxuICBsZXQgZmVUaWxlID0gc3RhciBcImZlVGlsZVwiXG5cbiAgbGV0IGZlVHVyYnVsZW5jZSA9IHN0YXIgXCJmZVR1cmJ1bGVuY2VcIlxuXG4gIGxldCBjdXJzb3IgPSBzdGFyIFwiY3Vyc29yXCJcblxuICBsZXQgYSA9IHN0YXIgXCJhXCJcblxuICBsZXQgdmlldyA9IHN0YXIgXCJ2aWV3XCJcblxuICBsZXQgc2NyaXB0ID0gdW5hcnkgXCJzY3JpcHRcIlxuXG4gIGxldCBhbmltYXRlID0gc3RhciBcImFuaW1hdGVcIlxuXG4gIGxldCBhbmltYXRpb24gPSBhbmltYXRlXG5cbiAgbGV0IHNldCA9IHN0YXIgXCJzZXRcIlxuXG4gIGxldCBhbmltYXRlTW90aW9uID0gc3RhciBcImFuaW1hdGVNb3Rpb25cIlxuXG4gIGxldCBtcGF0aCA9IHN0YXIgXCJtcGF0aFwiXG5cbiAgbGV0IGFuaW1hdGVDb2xvciA9IHN0YXIgXCJhbmltYXRlQ29sb3JcIlxuXG4gIGxldCBhbmltYXRlVHJhbnNmb3JtID0gc3RhciBcImFuaW1hdGVUcmFuc2Zvcm1cIlxuXG4gIGxldCBmb250ID0gc3RhciBcImZvbnRcIlxuXG4gIGxldCBnbHlwaCA9IHN0YXIgXCJnbHlwaFwiXG5cbiAgbGV0IG1pc3NpbmdfZ2x5cGggPSBzdGFyIFwibWlzc2luZy1nbHlwaFwiXG5cbiAgbGV0IGhrZXJuID0gbnVsbGFyeSBcImhrZXJuXCJcblxuICBsZXQgdmtlcm4gPSBudWxsYXJ5IFwidmtlcm5cIlxuXG4gIGxldCBmb250X2ZhY2UgPSBudWxsYXJ5IFwiZm9udC1mYWNlXCJcblxuICBsZXQgZm9udF9mYWNlX3NyYyA9IHN0YXIgXCJmb250LWZhY2Utc3JjXCJcblxuICBsZXQgZm9udF9mYWNlX3VyaSA9IHN0YXIgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9udF9mYWNlX2Zvcm1hdCA9IG51bGxhcnkgXCJmb250LWZhY2UtdXJpXCJcblxuICBsZXQgZm9udF9mYWNlX25hbWUgPSBudWxsYXJ5IFwiZm9udC1mYWNlLW5hbWVcIlxuXG4gIHR5cGUgZG9jID0gWyBgU3ZnIF0gZWx0XG4gIGxldCBkb2NfdG9lbHQgeCA9IHhcblxuICBtb2R1bGUgSSA9IFhtbF9zdHJlYW0uSW1wb3J0KFhtbClcbiAgbGV0IG9mX3NlcSBzID0gdG90bCBAQCBJLm9mX3NlcSBzXG5cbiAgbW9kdWxlIFVuc2FmZSA9IHN0cnVjdFxuXG4gICAgbGV0IGRhdGEgcyA9IFhtbC5lbmNvZGVkcGNkYXRhIHNcblxuICAgIGxldCBsZWFmIHRhZyA/YSAoKSA9IFhtbC5sZWFmID9hIHRhZ1xuXG4gICAgbGV0IG5vZGUgdGFnID9hIGVsdHMgPSBYbWwubm9kZSA/YSB0YWcgZWx0c1xuXG4gICAgbGV0IGNvZXJjZV9lbHQgeCA9IHhcblxuICAgIGxldCBmbG9hdF9hdHRyaWIgPSBYbWwuZmxvYXRfYXR0cmliXG5cbiAgICBsZXQgaW50X2F0dHJpYiA9IFhtbC5pbnRfYXR0cmliXG5cbiAgICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgICBsZXQgdXJpX2F0dHJpYiBhIHMgPSBYbWwudXJpX2F0dHJpYiBhIHNcblxuICAgIGxldCBzcGFjZV9zZXBfYXR0cmliID0gWG1sLnNwYWNlX3NlcF9hdHRyaWJcblxuICAgIGxldCBjb21tYV9zZXBfYXR0cmliID0gWG1sLmNvbW1hX3NlcF9hdHRyaWJcblxuICBlbmRcblxuZW5kXG5cbm1vZHVsZSBXcmFwcGVkX2Z1bmN0aW9uc1xuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsJ2IpIFcuZnQgPSAnYSAtPiAnYikgPVxuc3RydWN0XG5cbiAgbW9kdWxlIFhtbCA9IFhtbFxuXG4gIGxldCBzdHJpbmdfb2ZfYWxpZ25tZW50X2Jhc2VsaW5lID0gZnVuY3Rpb25cbiAgICB8IGBBdXRvIC0+IFwiYXV0b1wiXG4gICAgfCBgQmFzZWxpbmUgLT4gXCJiYXNlbGluZVwiXG4gICAgfCBgQmVmb3JlX2VkZ2UgLT4gXCJiZWZvcmUtZWRnZVwiXG4gICAgfCBgVGV4dF9iZWZvcmVfZWRnZSAtPiBcInRleHQtYmVmb3JlLWVkZ2VcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgQ2VudHJhbCAtPiBcImNlbnRyYWxcIlxuICAgIHwgYEFmdGVyX2VkZ2UgLT4gXCJhZnRlci1lZGdlXCJcbiAgICB8IGBUZXh0X2FmdGVyX2VkZ2UgLT4gXCJ0ZXh0LWFmdGVyLWVkZ2VcIlxuICAgIHwgYElkZW9ncmFwaGljIC0+IFwiaWRlb2dyYXBoaWNcIlxuICAgIHwgYEFscGhhYmV0aWMgLT4gXCJhbHBoYWJldGljXCJcbiAgICB8IGBIYW5naW5nLT4gXCJoYW5naW5nXCJcbiAgICB8IGBNYXRoZW1hdGljYWwgLT4gXCJtYXRoZW1hdGljYWxcIlxuICAgIHwgYEluaGVyaXQgLT4gXCJpbmhlcml0XCJcblxuICBsZXQgc3RyaW5nX29mX2JpZ192YXJpYW50ID0gZnVuY3Rpb25cbiAgICB8IGBBIC0+IFwiYVwiXG4gICAgfCBgQWJzb2x1dGVfY29sb3JpbWV0cmljIC0+IFwiYWJzb2x1dGVfY29sb3JpbWV0cmljXCJcbiAgICB8IGBBbGlnbiAtPiBcIlwiXG4gICAgfCBgQWx3YXlzIC0+IFwiYWx3YXlzXCJcbiAgICB8IGBBdG9wIC0+IFwiYXRvcFwiXG4gICAgfCBgQXJpdGhtZXRpYyAtPiBcImFyaXRobWV0aWNcIlxuICAgIHwgYEF1dG8gLT4gXCJhdXRvXCJcbiAgICB8IGBCIC0+IFwiYlwiXG4gICAgfCBgQmV2ZXIgLT4gXCJiZXZlbFwiXG4gICAgfCBgQmxpbmsgLT4gXCJibGlua1wiXG4gICAgfCBgQnV0dCAtPiBcImJ1dHRcIlxuICAgIHwgYENTUyAtPiBcIkNTU1wiXG4gICAgfCBgRGFya2VuIC0+IFwiZGFya2VuXCJcbiAgICB8IGBEZWZhdWx0IC0+IFwiZGVmYXVsdFwiXG4gICAgfCBgRGlsYXRlIC0+IFwiZGlsYXRlXCJcbiAgICB8IGBEaXNhYmxlIC0+IFwiZGlzYWJsZVwiXG4gICAgfCBgRGlzY3JldGUgLT4gXCJkaXNjcmV0ZVwiXG4gICAgfCBgRHVwbGljYXRlIC0+IFwiZHVwbGljYXRlXCJcbiAgICB8IGBFbmQgLT4gXCJlbmRcIlxuICAgIHwgYEVyb2RlIC0+IFwiZXJvZGVcIlxuICAgIHwgYEV4YWN0IC0+IFwiZXhhY3RcIlxuICAgIHwgYEZyYWN0YWxOb2lzZSAtPiBcImZyYWN0YWxOb2lzZVwiXG4gICAgfCBgRnJlZXplIC0+IFwiZnJlZXplXCJcbiAgICB8IGBIdWVSb3RhdGUgLT4gXCJodWVSb3RhdGVcIlxuICAgIHwgYEcgLT4gXCJnXCJcbiAgICB8IGBHYW1tYSAtPiBcImdhbW1hXCJcbiAgICB8IGBHZW9tZXRyaWNQcmVjaXNpb24gLT4gXCJnZW9tZXRyaWNQcmVjaXNpb25cIlxuICAgIHwgYEggLT4gXCJoXCJcbiAgICB8IGBJZGVudGl0eSAtPiBcImlkZW50aXR5XCJcbiAgICB8IGBJbiAtPiBcImluXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG4gICAgfCBgSW5pdGlhbCAtPiBcImluaXRpYWxcIlxuICAgIHwgYElzb2xhdGVkIC0+IFwiaXNvbGF0ZWRcIlxuICAgIHwgYExpZ2h0ZW4gLT4gXCJsaWdodGVuXCJcbiAgICB8IGBMaW5lX3Rocm91Z2ggLT4gXCJsaW5lLXRocm91Z2hcIlxuICAgIHwgYExpbmVhciAtPiBcImxpbmVhclwiXG4gICAgfCBgTHVtaW5hbmNlVG9BbHBoYSAtPiBcImx1bWluYW5jZVRvQWxwaGFcIlxuICAgIHwgYE1hZ25pZnkgLT4gXCJtYWduaWZ5XCJcbiAgICB8IGBNYXRyaXggLT4gXCJtYXRyaXhcIlxuICAgIHwgYE1lZGlhbCAtPiBcIm1lZGlhbFwiXG4gICAgfCBgTWlkZGxlIC0+IFwibWlkZGxlXCJcbiAgICB8IGBNaXRlciAtPiBcIm1pdGVyXCJcbiAgICB8IGBNdWx0aXBseSAtPiBcIm11bHRpcGx5XCJcbiAgICB8IGBOZXZlciAtPiBcIm5ldmVyXCJcbiAgICB8IGBOZXcgLT4gXCJuZXdcIlxuICAgIHwgYE5vbmUgLT4gXCJub25lXCJcbiAgICB8IGBOb3JtYWwgLT4gXCJub3JtYWxcIlxuICAgIHwgYE5vU3RpdGNoIC0+IFwibm9TdGl0Y2hcIlxuICAgIHwgYE9iamVjdEJvdW5kaW5nQm94IC0+IFwib2JqZWN0Qm91bmRpbmdCb3hcIlxuICAgIHwgYE9uTG9hZCAtPiBcIm9uTG9hZFwiXG4gICAgfCBgT25SZXF1ZXN0IC0+IFwib25SZXF1ZXN0XCJcbiAgICB8IGBPcHRpbWl6ZUxlZ2liaWxpdHkgLT4gXCJvcHRpbWl6ZUxlZ2liaWxpdHlcIlxuICAgIHwgYE9wdGltaXplU3BlZWQgLT4gXCJvcHRpbWl6ZVNwZWVkXCJcbiAgICB8IGBPdGhlciAtPiBcIm90aGVyXCJcbiAgICB8IGBPdXQgLT4gXCJvdXRcIlxuICAgIHwgYE92ZXIgLT4gXCJvdmVyXCJcbiAgICB8IGBPdmVybGluZSAtPiBcIm92ZXJsaW5lXCJcbiAgICB8IGBQYWNlZCAtPiBcInBhY2VkXCJcbiAgICB8IGBQYWQgLT4gXCJwYWRcIlxuICAgIHwgYFBlcmNlcHR1YWwgLT4gXCJwZXJjZXB0dWFsXCJcbiAgICB8IGBQcmVzZXJ2ZSAtPiBcInByZXNlcnZlXCJcbiAgICB8IGBSIC0+IFwiclwiXG4gICAgfCBgUmVmbGVjdCAtPiBcInJlZmxlY3RcIlxuICAgIHwgYFJlbW92ZSAtPiBcInJlbW92ZVwiXG4gICAgfCBgUmVwZWF0IC0+IFwicmVwZWF0XCJcbiAgICB8IGBSZXBsYWNlIC0+IFwicmVwbGFjZVwiXG4gICAgfCBgUmVsYXRpdmVfY29sb3JpbWV0cmljIC0+IFwicmVsYXRpdmVfY29sb3JpbWV0cmljXCJcbiAgICB8IGBSb3RhdGUgLT4gXCJyb3RhdGVcIlxuICAgIHwgYFJvdW5kIC0+IFwicm91bmRcIlxuICAgIHwgYFNhdHVyYXRlIC0+IFwic2F0dXJhdGVcIlxuICAgIHwgYFNhdHVyYXRpb24gLT4gXCJzYXR1cmF0aW9uXCJcbiAgICB8IGBTY2FsZSAtPiBcInNjYWxlXCJcbiAgICB8IGBTY3JlZW4gLT4gXCJzY3JlZW5cIlxuICAgIHwgYFNrZXdYIC0+IFwic2tld1hcIlxuICAgIHwgYFNrZXdZIC0+IFwic2tld1lcIlxuICAgIHwgYFNwYWNpbmcgLT4gXCJzcGFjaW5nXCJcbiAgICB8IGBTcGFjaW5nQW5kR2x5cGhzIC0+IFwic3BhY2luZ0FuZEdseXBoc1wiXG4gICAgfCBgU3BsaW5lIC0+IFwic3BsaW5lXCJcbiAgICB8IGBTcXVhcmUgLT4gXCJzcXVhcmVcIlxuICAgIHwgYFN0YXJ0IC0+IFwic3RhcnRcIlxuICAgIHwgYFN0aXRjaCAtPiBcInN0aXRjaFwiXG4gICAgfCBgU3RyZXRjaCAtPiBcInN0cmV0Y2hcIlxuICAgIHwgYFN0cm9rZVdpZHRoIC0+IFwic3Ryb2tlLXdpZHRoXCJcbiAgICB8IGBTdW0gLT4gXCJzdW1cIlxuICAgIHwgYFRhYmxlIC0+IFwidGFibGVcIlxuICAgIHwgYFRlcm1pbmFsIC0+IFwidGVybWluYWxcIlxuICAgIHwgYFRyYW5zbGF0ZSAtPiBcInRyYW5zbGF0ZVwiXG4gICAgfCBgVHVyYnVsZW5jZSAtPiBcInR1cmJ1bGVuY2VcIlxuICAgIHwgYFVuZGVybGluZSAtPiBcInVuZGVybGluZVwiXG4gICAgfCBgVXNlclNwYWNlT25Vc2UgLT4gXCJ1c2VyU3BhY2VPblVzZVwiXG4gICAgfCBgViAtPiBcInZcIlxuICAgIHwgYFdoZW5Ob3RBY3RpdmUgLT4gXCJ3aGVuTm90QWN0aXZlXCJcbiAgICB8IGBXcmFwIC0+IFwid3JhcFwiXG4gICAgfCBgWE1MIC0+IFwiWE1MXCJcbiAgICB8IGBYb3IgLT4gXCJ4b3JcIlxuXG4gIGxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5cbiAgbGV0IHN0cmluZ19vZl9jb29yZHMgPVxuICAgIGxpc3QgKGZ1biAoYSwgYikgLT4gUHJpbnRmLnNwcmludGYgXCIlZywgJWdcIiBhIGIpXG5cbiAgbGV0IHN0cmluZ19vZl9kb21pbmFudF9iYXNlbGluZSA9IGZ1bmN0aW9uXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYFVzZV9zY3JpcHQgLT4gXCJ1c2VzY3JpcHRcIlxuICAgIHwgYE5vX2NoYW5nZSAtPiBcIm5vY2hhbmdlXCJcbiAgICB8IGBSZXNldF9zaXplIC0+IFwicmVzZXRzaXplXCJcbiAgICB8IGBJZGVvZ3JhcGhpYyAtPiBcImlkZW9ncmFwaGljXCJcbiAgICB8IGBBbHBoYWJldGljIC0+IFwiYWxwaGFiZXRpY1wiXG4gICAgfCBgSGFuZ2luZyAtPiBcImhhbmdpbmdcIlxuICAgIHwgYE1hdGhlbWF0aWNhbCAtPiBcIm1hdGhlbWF0aWNhbFwiXG4gICAgfCBgQ2VudHJhbCAtPiBcImNlbnRyYWxcIlxuICAgIHwgYE1pZGRsZSAtPiBcIm1pZGRsZVwiXG4gICAgfCBgVGV4dF9hZnRlcl9lZGdlIC0+IFwidGV4dGFmdGVyZWRnZVwiXG4gICAgfCBgVGV4dF9iZWZvcmVfZWRnZSAtPiBcInRleHRiZWZvcmVlZGdlXCJcbiAgICB8IGBJbmhlcml0IC0+IFwiaW5oZXJpdFwiXG5cblxuICBsZXQgc3RyaW5nX29mX2luX3ZhbHVlID0gZnVuY3Rpb25cbiAgICB8IGBTb3VyY2VHcmFwaGljIC0+IFwic291cmNlR3JhcGhpY1wiXG4gICAgfCBgU291cmNlQWxwaGEgLT4gXCJzb3VyY2VBbHBoYVwiXG4gICAgfCBgQmFja2dyb3VuZEltYWdlIC0+IFwiYmFja2dyb3VuZEltYWdlXCJcbiAgICB8IGBCYWNrZ3JvdW5kQWxwaGEgLT4gXCJiYWNrZ3JvdW5kQWxwaGFcIlxuICAgIHwgYEZpbGxQYWludCAtPiBcImZpbGxQYWludFwiXG4gICAgfCBgU3Ryb2tlUGFpbnQgLT4gXCJzdHJva2VQYWludFwiXG4gICAgfCBgUmVmIF9zdmcgLT4gX3N2Z1xuXG4gIGxldCBzdHJpbmdfb2ZfaW50ID0gc3RyaW5nX29mX2ludFxuXG4gIGxldCBzdHJpbmdfb2ZfbGVuZ3RoID0gVW5pdC5zdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9sZW5ndGhzID0gbGlzdCBzdHJpbmdfb2ZfbGVuZ3RoXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXIgPSBYbWxfcHJpbnQuc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2ZfcGVyY2VudGFnZSB4ID0gKHN0cmluZ19vZl9udW1iZXIgeCkgXiBcIiVcIlxuXG4gIGxldCBzdHJpbmdfb2ZfZm91cmZsb2F0cyAoYSwgYiwgYywgZCkgPVxuICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXMgJXMgJXNcIlxuICAgICAgKHN0cmluZ19vZl9udW1iZXIgYSkgKHN0cmluZ19vZl9udW1iZXIgYikgKHN0cmluZ19vZl9udW1iZXIgYykgKHN0cmluZ19vZl9udW1iZXIgZClcblxuICBsZXQgc3RyaW5nX29mX251bWJlcl9vcHRpb25hbF9udW1iZXIgPSBmdW5jdGlvblxuICAgIHwgeCwgU29tZSB5IC0+IFByaW50Zi5zcHJpbnRmIFwiJWcsICVnXCIgeCB5XG4gICAgfCB4LCBOb25lIC0+IFByaW50Zi5zcHJpbnRmIFwiJWdcIiB4XG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJzID0gbGlzdCBzdHJpbmdfb2ZfbnVtYmVyXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJzX3NlbWljb2xvbiA9IGxpc3QgfnNlcDpcIjsgXCIgc3RyaW5nX29mX251bWJlclxuXG4gIGxldCBzdHJpbmdfb2Zfb2Zmc2V0ID0gZnVuY3Rpb25cbiAgICB8IGBOdW1iZXIgeCAtPiBzdHJpbmdfb2ZfbnVtYmVyIHhcbiAgICB8IGBQZXJjZW50YWdlIHggLT4gc3RyaW5nX29mX3BlcmNlbnRhZ2UgeFxuXG4gIGxldCBzdHJpbmdfb2Zfb3JpZW50ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gXCJhdXRvXCJcbiAgICB8IFNvbWUgX19zdmcgLT4gc3RyaW5nX29mX2FuZ2xlIF9fc3ZnXG5cbiAgbGV0IHN0cmluZ19vZl9wYWludCA9IHN0cmluZ19vZl9wYWludFxuXG4gIGxldCBzdHJpbmdfb2ZfZmlsbF9ydWxlID0gc3RyaW5nX29mX2ZpbGxfcnVsZVxuXG4gIGxldCBzdHJpbmdfb2Zfc3Ryb2tlZGFzaGFycmF5ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFwibm9uZVwiXG4gICAgfCBsIC0+IGxpc3Qgc3RyaW5nX29mX2xlbmd0aCBsXG5cbiAgbGV0IHN0cmluZ19vZl90cmFuc2Zvcm0gPSBmdW5jdGlvblxuICAgIHwgYE1hdHJpeCAoYSwgYiwgYywgZCwgZSwgZikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwibWF0cml4KCVnICVnICVnICVnICVnICVnKVwiIGEgYiBjIGQgZSBmXG4gICAgfCBgVHJhbnNsYXRlIHggLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwidHJhbnNsYXRlKCVzKVwiXG4gICAgICAgIChzdHJpbmdfb2ZfbnVtYmVyX29wdGlvbmFsX251bWJlciB4KVxuICAgIHwgYFNjYWxlIHggLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwic2NhbGUoJXMpXCIgKHN0cmluZ19vZl9udW1iZXJfb3B0aW9uYWxfbnVtYmVyIHgpXG4gICAgfCBgUm90YXRlICgoYW5nbGUsIHgpKSAtPlxuICAgICAgUHJpbnRmLnNwcmludGYgXCJyb3RhdGUoJXMgJXMpXCIgKHN0cmluZ19vZl9hbmdsZSBhbmdsZSlcbiAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgfCBTb21lICgoeCwgeSkpIC0+IFByaW50Zi5zcHJpbnRmIFwiJWcgJWdcIiB4IHlcbiAgICAgICAgIHwgTm9uZSAtPiBcIlwiKVxuICAgIHwgYFNrZXdYIGFuZ2xlIC0+XG4gICAgICBQcmludGYuc3ByaW50ZiBcInNrZXdYKCVzKVwiIChzdHJpbmdfb2ZfYW5nbGUgYW5nbGUpXG4gICAgfCBgU2tld1kgYW5nbGUgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwic2tld1koJXMpXCIgKHN0cmluZ19vZl9hbmdsZSBhbmdsZSlcblxuICBsZXQgc3RyaW5nX29mX3RyYW5zZm9ybXMgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiBcIiAoTGlzdC5tYXAgc3RyaW5nX29mX3RyYW5zZm9ybSBsKVxuXG5lbmRcblxubW9kdWxlIE1ha2VcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCAnYikgVy5mdCA9ICgnYSAtPiAnYikpID1cbiAgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zKFhtbCkoV3JhcHBlZF9mdW5jdGlvbnMoWG1sKSlcbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMDQgYnkgVGhvcnN0ZW4gT2hsIDxvaGxAcGh5c2lrLnVuaS13dWVyemJ1cmcuZGU+XG4gKiBDb3B5cmlnaHQgKEMpIDIwMDcgYnkgVmluY2VudCBCYWxhdCwgR2FicmllbCBLZXJuZWlzXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTAgYnkgQ2VjaWxlIEhlcmJlbGluXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIFN1aXRlIDUwMCwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuXG4qKVxuXG5tb2R1bGUgTWFrZV93aXRoX3dyYXBwZWRfZnVuY3Rpb25zXG5cbiAgICAoWG1sIDogWG1sX3NpZ3MuVClcbiAgICAoQyA6IEh0bWxfc2lncy5XcmFwcGVkX2Z1bmN0aW9ucyB3aXRoIG1vZHVsZSBYbWwgPSBYbWwpXG4gICAgKFN2ZyA6IFN2Z19zaWdzLlQgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuXG5zdHJ1Y3RcblxuICBtb2R1bGUgWG1sID0gWG1sXG5cbiAgbW9kdWxlIFcgPSBYbWwuV1xuXG4gIG1vZHVsZSBJbmZvID0gc3RydWN0XG4gICAgbGV0IGNvbnRlbnRfdHlwZSA9IFwidGV4dC9odG1sXCJcbiAgICBsZXQgYWx0ZXJuYXRpdmVfY29udGVudF90eXBlcyA9IFtcImFwcGxpY2F0aW9uL3hodG1sK3htbFwiO1wiYXBwbGljYXRpb24veG1sXCI7XCJ0ZXh0L3htbFwiXVxuICAgIGxldCB2ZXJzaW9uID0gXCJIVE1MNS1kcmFmdFwiXG4gICAgbGV0IHN0YW5kYXJkID0gXCJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9cIlxuICAgIGxldCBuYW1lc3BhY2UgPSBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWxcIlxuICAgIGxldCBkb2N0eXBlID1cbiAgICAgIFhtbF9wcmludC5jb21wb3NlX2RvY3R5cGUgXCJodG1sXCIgW11cbiAgICBsZXQgZW1wdHl0YWdzID1cbiAgICAgIFsgXCJhcmVhXCI7IFwiYmFzZVwiOyBcImJyXCI7IFwiY29sXCI7IFwiY29tbWFuZFwiOyBcImVtYmVkXCI7IFwiaHJcIjsgXCJpbWdcIjtcbiAgICAgICAgXCJpbnB1dFwiOyBcImtleWdlblwiOyBcImxpbmtcIjsgXCJtZXRhXCI7IFwicGFyYW1cIjsgXCJzb3VyY2VcIjsgXCJ3YnJcIiBdXG4gIGVuZFxuXG4gIHR5cGUgJ2Egd3JhcCA9ICdhIFcudFxuICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIFcudGxpc3RcblxuICB0eXBlIHVyaSA9IFhtbC51cmlcbiAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuICBsZXQgdXJpX29mX3N0cmluZyA9IFhtbC51cmlfb2Zfc3RyaW5nXG5cbiAgdHlwZSBpbWFnZV9jYW5kaWRhdGUgPVxuICAgIFsgYFVybCBvZiB1cmlcbiAgICB8IGBVcmxfd2lkdGggb2YgdXJpICogSHRtbF90eXBlcy5udW1iZXJcbiAgICB8IGBVcmxfcGl4ZWwgb2YgdXJpICogSHRtbF90eXBlcy5mbG9hdF9udW1iZXIgXVxuXG4gIHR5cGUgJ2EgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gIGxldCB0b194bWxhdHRyaWJzIHggPSB4XG4gIGxldCB0b19hdHRyaWIgeCA9IHhcblxuICAoKiBWQiAqKVxuICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gIGxldCBpbnRfYXR0cmliID0gWG1sLmludF9hdHRyaWJcblxuICBsZXQgc3RyaW5nX2F0dHJpYiA9IFhtbC5zdHJpbmdfYXR0cmliXG5cbiAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgPSBYbWwuc3BhY2Vfc2VwX2F0dHJpYlxuXG4gIGxldCBjb21tYV9zZXBfYXR0cmliID0gWG1sLmNvbW1hX3NlcF9hdHRyaWJcblxuICBsZXQgdXNlcl9hdHRyaWIgZiBuYW1lIHYgPSBYbWwuc3RyaW5nX2F0dHJpYiBuYW1lIChXLmZtYXAgZiB2KVxuXG4gIGxldCBib29sX2F0dHJpYiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2Jvb2xcblxuICBsZXQgY29uc3RhbnRfYXR0cmliIGEgKCkgPVxuICAgIHN0cmluZ19hdHRyaWIgYSAoVy5yZXR1cm4gYSlcblxuICBsZXQgbGlua3R5cGVzX2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2xpbmt0eXBlcyBuYW1lIHhcblxuICBsZXQgbWVkaWFkZXNjX2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX21lZGlhZGVzYyBuYW1lIHhcblxuICBsZXQgc3Jjc2V0X2F0dHJpYiBuYW1lIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NyY3NldCBuYW1lIHhcblxuICAoKiBDb3JlOiAqKVxuICBsZXQgYV9jbGFzcyA9IHNwYWNlX3NlcF9hdHRyaWIgXCJjbGFzc1wiXG5cbiAgbGV0IGFfaWQgPSBzdHJpbmdfYXR0cmliIFwiaWRcIlxuXG4gIGxldCBhX3VzZXJfZGF0YSBuYW1lID0gc3RyaW5nX2F0dHJpYiAoXCJkYXRhLVwiIF4gbmFtZSlcblxuICBsZXQgYV90aXRsZSA9IHN0cmluZ19hdHRyaWIgXCJ0aXRsZVwiXG5cbiAgKCogSTE4TjogKilcbiAgbGV0IGFfeG1sX2xhbmcgPSBzdHJpbmdfYXR0cmliIFwieG1sOmxhbmdcIlxuICBsZXQgYV9sYW5nID0gc3RyaW5nX2F0dHJpYiBcImxhbmdcIlxuXG4gICgqIFN0eWxlOiAqKVxuICBsZXQgYV9zdHlsZSA9IHN0cmluZ19hdHRyaWIgXCJzdHlsZVwiXG5cbiAgbGV0IGFfcHJvcGVydHkgPSBzdHJpbmdfYXR0cmliIFwicHJvcGVydHlcIlxuXG4gICgqIEV2ZW50czogKilcbiAgbGV0IGFfb25hYm9ydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uYWJvcnRcIlxuICBsZXQgYV9vbmFmdGVycHJpbnQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmFmdGVycHJpbnRcIlxuICBsZXQgYV9vbmJlZm9yZXByaW50ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25iZWZvcmVwcmludFwiXG4gIGxldCBhX29uYmVmb3JldW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25iZWZvcmV1bmxvYWRcIlxuICBsZXQgYV9vbmJsdXIgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmJsdXJcIlxuICBsZXQgYV9vbmNhbnBsYXkgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmNhbnBsYXlcIlxuICBsZXQgYV9vbmNhbnBsYXl0aHJvdWdoID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jYW5wbGF5dGhyb3VnaFwiXG4gIGxldCBhX29uY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jaGFuZ2VcIlxuICBsZXQgYV9vbmNsb3NlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jbG9zZVwiXG4gIGxldCBhX29uZHVyYXRpb25jaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmR1cmF0aW9uY2hhbmdlXCJcbiAgbGV0IGFfb25lbXB0aWVkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lbXB0aWVkXCJcbiAgbGV0IGFfb25lbmRlZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uZW5kZWRcIlxuICBsZXQgYV9vbmVycm9yID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25lcnJvclwiXG4gIGxldCBhX29uZm9jdXMgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvY3VzXCJcbiAgbGV0IGFfb25mb3JtY2hhbmdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25mb3JtY2hhbmdlXCJcbiAgbGV0IGFfb25mb3JtaW5wdXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmZvcm1pbnB1dFwiXG4gIGxldCBhX29uaGFzaGNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uaGFzaGNoYW5nZVwiXG4gIGxldCBhX29uaW5wdXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmlucHV0XCJcbiAgbGV0IGFfb25pbnZhbGlkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25pbnZhbGlkXCJcbiAgbGV0IGFfb25vZmZsaW5lID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25vZmZsaW5lXCJcbiAgbGV0IGFfb25vbmxpbmUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm9ubGluZVwiXG4gIGxldCBhX29ucGF1c2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBhdXNlXCJcbiAgbGV0IGFfb25wbGF5ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wbGF5XCJcbiAgbGV0IGFfb25wbGF5aW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wbGF5aW5nXCJcbiAgbGV0IGFfb25wYWdlaGlkZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucGFnZWhpZGVcIlxuICBsZXQgYV9vbnBhZ2VzaG93ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25wYWdlc2hvd1wiXG4gIGxldCBhX29ucG9wc3RhdGUgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnBvcHN0YXRlXCJcbiAgbGV0IGFfb25wcm9ncmVzcyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucHJvZ3Jlc3NcIlxuICBsZXQgYV9vbnJhdGVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJhdGVjaGFuZ2VcIlxuICBsZXQgYV9vbnJlYWR5c3RhdGVjaGFuZ2UgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIlxuICBsZXQgYV9vbnJlZG8gPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnJlZG9cIlxuICBsZXQgYV9vbnJlc2l6ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ucmVzaXplXCJcbiAgbGV0IGFfb25zY3JvbGwgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNjcm9sbFwiXG4gIGxldCBhX29uc2Vla2VkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zZWVrZWRcIlxuICBsZXQgYV9vbnNlZWtpbmcgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnNlZWtpbmdcIlxuICBsZXQgYV9vbnNlbGVjdCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc2VsZWN0XCJcbiAgbGV0IGFfb25zaG93ID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zaG93XCJcbiAgbGV0IGFfb25zdGFsbGVkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdGFsbGVkXCJcbiAgbGV0IGFfb25zdG9yYWdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25zdG9yYWdlXCJcbiAgbGV0IGFfb25zdWJtaXQgPSBYbWwuZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnN1Ym1pdFwiXG4gIGxldCBhX29uc3VzcGVuZCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uc3VzcGVuZFwiXG4gIGxldCBhX29udGltZXVwZGF0ZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udGltZXVwZGF0ZVwiXG4gIGxldCBhX29udW5kbyA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udW5kb1wiXG4gIGxldCBhX29udW5sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib251bmxvYWRcIlxuICBsZXQgYV9vbnZvbHVtZWNoYW5nZSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udm9sdW1lY2hhbmdlXCJcbiAgbGV0IGFfb253YWl0aW5nID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib253YWl0aW5nXCJcbiAgbGV0IGFfb25sb2FkID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkXCJcbiAgbGV0IGFfb25sb2FkZWRkYXRhID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25sb2FkZWRkYXRhXCJcbiAgbGV0IGFfb25sb2FkZWRtZXRhZGF0YSA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZGVkbWV0YWRhdGFcIlxuICBsZXQgYV9vbmxvYWRzdGFydCA9IFhtbC5ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubG9hZHN0YXJ0XCJcbiAgbGV0IGFfb25tZXNzYWdlID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tZXNzYWdlXCJcbiAgbGV0IGFfb25tb3VzZXdoZWVsID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZXdoZWVsXCJcblxuICAoKiogSmF2YXNjcmlwdCBtb3VzZSBldmVudHMgKilcbiAgbGV0IGFfb25jbGljayA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9uY2xpY2tcIlxuICBsZXQgYV9vbmNvbnRleHRtZW51ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25jb250ZXh0bWVudVwiXG4gIGxldCBhX29uZGJsY2xpY2sgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRibGNsaWNrXCJcbiAgbGV0IGFfb25kcmFnID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnXCJcbiAgbGV0IGFfb25kcmFnZW5kID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnZW5kXCJcbiAgbGV0IGFfb25kcmFnZW50ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyYWdlbnRlclwiXG4gIGxldCBhX29uZHJhZ2xlYXZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnbGVhdmVcIlxuICBsZXQgYV9vbmRyYWdvdmVyID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnb3ZlclwiXG4gIGxldCBhX29uZHJhZ3N0YXJ0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25kcmFnc3RhcnRcIlxuICBsZXQgYV9vbmRyb3AgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmRyb3BcIlxuICBsZXQgYV9vbm1vdXNlZG93biA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ubW91c2Vkb3duXCJcbiAgbGV0IGFfb25tb3VzZXVwID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZXVwXCJcbiAgbGV0IGFfb25tb3VzZW92ZXIgPSBYbWwubW91c2VfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbm1vdXNlb3ZlclwiXG4gIGxldCBhX29ubW91c2Vtb3ZlID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW1vdmVcIlxuICBsZXQgYV9vbm1vdXNlb3V0ID0gWG1sLm1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25tb3VzZW91dFwiXG5cbiAgKCoqIEphdmFzY3JpcHQgdG91Y2ggZXZlbnRzICopXG4gIGxldCBhX29udG91Y2hzdGFydCA9IFhtbC50b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9udG91Y2hzdGFydFwiXG4gIGxldCBhX29udG91Y2hlbmQgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoZW5kXCJcbiAgbGV0IGFfb250b3VjaG1vdmUgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNobW92ZVwiXG4gIGxldCBhX29udG91Y2hjYW5jZWwgPSBYbWwudG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbnRvdWNoY2FuY2VsXCJcblxuICAoKiogSmF2YXNjcmlwdCBrZXlib2FyZCBldmVudHMgKilcbiAgbGV0IGFfb25rZXlwcmVzcyA9IFhtbC5rZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBcIm9ua2V5cHJlc3NcIlxuICBsZXQgYV9vbmtleWRvd24gPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgXCJvbmtleWRvd25cIlxuICBsZXQgYV9vbmtleXVwID0gWG1sLmtleWJvYXJkX2V2ZW50X2hhbmRsZXJfYXR0cmliIFwib25rZXl1cFwiXG5cbiAgKCogT3RoZXIgQXR0cmlidXRlcyAqKVxuICBsZXQgYV92ZXJzaW9uID0gc3RyaW5nX2F0dHJpYiBcInZlcnNpb25cIlxuXG4gIGxldCBhX3htbG5zIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sbnNcIiB4XG5cbiAgbGV0IGFfbWFuaWZlc3QgPSB1cmlfYXR0cmliIFwibWFuaWZlc3RcIlxuXG4gIGxldCBhX2NpdGUgPSB1cmlfYXR0cmliIFwiY2l0ZVwiXG5cbiAgbGV0IGFfeG1sX3NwYWNlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwieG1sOnNwYWNlXCIgeFxuXG4gIGxldCBhX2FjY2Vzc2tleSBjID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9jaGFyYWN0ZXIgXCJhY2Nlc3NrZXlcIiBjXG5cbiAgbGV0IGFfY2hhcnNldCA9IHN0cmluZ19hdHRyaWIgXCJjaGFyc2V0XCJcblxuICBsZXQgYV9hY2NlcHRfY2hhcnNldCA9IHNwYWNlX3NlcF9hdHRyaWIgXCJhY2NlcHQtY2hhcnNldFwiXG5cbiAgbGV0IGFfYWNjZXB0ID0gY29tbWFfc2VwX2F0dHJpYiBcImFjY2VwdFwiXG5cbiAgbGV0IGFfaHJlZiA9IHVyaV9hdHRyaWIgXCJocmVmXCJcblxuICBsZXQgYV9ocmVmbGFuZyA9IHN0cmluZ19hdHRyaWIgXCJocmVmbGFuZ1wiXG5cbiAgbGV0IGFfZG93bmxvYWQgZmlsZSA9XG4gICAgdXNlcl9hdHRyaWIgKEMudW5vcHRpb25fc3RyaW5nKSBcImRvd25sb2FkXCIgZmlsZVxuXG4gIGxldCBhX3JlbCA9IGxpbmt0eXBlc19hdHRyaWIgXCJyZWxcIlxuXG4gIGxldCBhX3RhYmluZGV4ID0gaW50X2F0dHJpYiBcInRhYmluZGV4XCJcblxuICBsZXQgYV9taW1lX3R5cGUgPSBzdHJpbmdfYXR0cmliIFwidHlwZVwiXG5cbiAgbGV0IGFfYWx0ID0gc3RyaW5nX2F0dHJpYiBcImFsdFwiXG5cbiAgbGV0IGFfaGVpZ2h0IHAgPSBpbnRfYXR0cmliIFwiaGVpZ2h0XCIgcFxuXG4gIGxldCBhX3NyYyA9IHVyaV9hdHRyaWIgXCJzcmNcIlxuXG4gIGxldCBhX3dpZHRoIHAgPSBpbnRfYXR0cmliIFwid2lkdGhcIiBwXG5cbiAgbGV0IGFfbGFiZWxfZm9yID0gc3RyaW5nX2F0dHJpYiBcImZvclwiXG4gIGxldCBhX2ZvciA9IGFfbGFiZWxfZm9yXG5cbiAgbGV0IGFfb3V0cHV0X2ZvciA9IHNwYWNlX3NlcF9hdHRyaWIgXCJmb3JcIlxuICBsZXQgYV9mb3JfbGlzdCA9IGFfb3V0cHV0X2ZvclxuXG4gIGxldCBhX3NlbGVjdGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzZWxlY3RlZFwiXG5cbiAgbGV0IGFfdGV4dF92YWx1ZSA9IHN0cmluZ19hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfaW50X3ZhbHVlID0gaW50X2F0dHJpYiBcInZhbHVlXCJcblxuICBsZXQgYV92YWx1ZSA9IHN0cmluZ19hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfZmxvYXRfdmFsdWUgPSBmbG9hdF9hdHRyaWIgXCJ2YWx1ZVwiXG5cbiAgbGV0IGFfYWN0aW9uID0gdXJpX2F0dHJpYiBcImFjdGlvblwiXG5cbiAgbGV0IGFfbWV0aG9kIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwibWV0aG9kXCIgeFxuXG4gIGxldCBhX2Zvcm1tZXRob2QgeCA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZm9ybW1ldGhvZFwiIHhcblxuICBsZXQgYV9lbmN0eXBlID0gc3RyaW5nX2F0dHJpYiBcImVuY3R5cGVcIlxuXG4gIGxldCBhX2NoZWNrZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImNoZWNrZWRcIlxuXG4gIGxldCBhX2Rpc2FibGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJkaXNhYmxlZFwiXG5cbiAgbGV0IGFfcmVhZG9ubHkgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInJlYWRvbmx5XCJcblxuICBsZXQgYV9tYXhsZW5ndGggPSBpbnRfYXR0cmliIFwibWF4bGVuZ3RoXCJcblxuICBsZXQgYV9taW5sZW5ndGggPSBpbnRfYXR0cmliIFwibWlubGVuZ3RoXCJcblxuICBsZXQgYV9uYW1lID0gc3RyaW5nX2F0dHJpYiBcIm5hbWVcIlxuXG4gIGxldCBhX2FsbG93ZnVsbHNjcmVlbiA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiYWxsb3dmdWxsc2NyZWVuXCJcblxuICBsZXQgYV9hbGxvd3BheW1lbnRyZXF1ZXN0ID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJhbGxvd3BheW1lbnRyZXF1ZXN0XCJcblxuICBsZXQgYV9yZWZlcnJlcnBvbGljeSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9yZWZlcnJlcnBvbGljeSBcInJlZmVycmVycG9saWN5XCIgeFxuXG4gIGxldCBhX2F1dG9jb21wbGV0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9hdXRvY29tcGxldGUgXCJhdXRvY29tcGxldGVcIiB4XG5cbiAgbGV0IGFfYXN5bmMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImFzeW5jXCJcblxuICBsZXQgYV9hdXRvZm9jdXMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImF1dG9mb2N1c1wiXG5cbiAgbGV0IGFfYXV0b3BsYXkgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImF1dG9wbGF5XCJcblxuICBsZXQgYV9tdXRlZCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibXV0ZWRcIlxuXG4gIGxldCBhX2Nyb3Nzb3JpZ2luIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiY3Jvc3NvcmlnaW5cIiB4XG5cbiAgbGV0IGFfaW50ZWdyaXR5ID0gc3RyaW5nX2F0dHJpYiBcImludGVncml0eVwiXG5cbiAgbGV0IGFfbWVkaWFncm91cCA9IHN0cmluZ19hdHRyaWIgXCJtZWRpYWdyb3VwXCJcblxuICBsZXQgYV9jaGFsbGVuZ2UgPSBzdHJpbmdfYXR0cmliIFwiY2hhbGxlbmdlXCJcblxuICBsZXQgYV9jb250ZW50ZWRpdGFibGUgY2UgPVxuICAgIGJvb2xfYXR0cmliIFwiY29udGVudGVkaXRhYmxlXCIgY2VcblxuICBsZXQgYV9jb250ZXh0bWVudSA9IHN0cmluZ19hdHRyaWIgXCJjb250ZXh0bWVudVwiXG5cbiAgbGV0IGFfY29udHJvbHMgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImNvbnRyb2xzXCJcblxuICBsZXQgYV9kaXIgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJkaXJcIiB4XG5cbiAgbGV0IGFfZHJhZ2dhYmxlIGQgPVxuICAgIGJvb2xfYXR0cmliIFwiZHJhZ2dhYmxlXCIgZFxuXG4gIGxldCBhX2Zvcm0gPSBzdHJpbmdfYXR0cmliIFwiZm9ybVwiXG5cbiAgbGV0IGFfZm9ybWFjdGlvbiA9IHVyaV9hdHRyaWIgXCJmb3JtYWN0aW9uXCJcblxuICBsZXQgYV9mb3JtZW5jdHlwZSA9IHN0cmluZ19hdHRyaWIgXCJmb3JtZW5jdHlwZVwiXG5cbiAgbGV0IGFfZm9ybW5vdmFsaWRhdGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcImZvcm1ub3ZhbGlkYXRlXCJcblxuICBsZXQgYV9mb3JtdGFyZ2V0ID0gc3RyaW5nX2F0dHJpYiBcImZvcm10YXJnZXRcIlxuXG4gIGxldCBhX2hpZGRlbiA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiaGlkZGVuXCJcblxuICBsZXQgYV9oaWdoID0gZmxvYXRfYXR0cmliIFwiaGlnaFwiXG5cbiAgbGV0IGFfaWNvbiA9IHVyaV9hdHRyaWIgXCJpY29uXCJcblxuICBsZXQgYV9pc21hcCA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiaXNtYXBcIlxuXG4gIGxldCBhX2tleXR5cGUgPSBzdHJpbmdfYXR0cmliIFwia2V5dHlwZVwiXG5cbiAgbGV0IGFfbGlzdCA9IHN0cmluZ19hdHRyaWIgXCJsaXN0XCJcblxuICBsZXQgYV9sb29wID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJsb29wXCJcblxuICBsZXQgYV9sb3cgPSBmbG9hdF9hdHRyaWIgXCJsb3dcIlxuXG4gIGxldCBhX21heCA9IGZsb2F0X2F0dHJpYiBcIm1heFwiXG5cbiAgbGV0IGFfaW5wdXRfbWF4ID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfbnVtYmVyX29yX2RhdGV0aW1lIFwibWF4XCJcblxuICBsZXQgYV9taW4gPSBmbG9hdF9hdHRyaWIgXCJtaW5cIlxuXG4gIGxldCBhX2lucHV0X21pbiA9IHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcl9vcl9kYXRldGltZSBcIm1pblwiXG5cbiAgbGV0IGFfaW5wdXRtb2RlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiaW5wdXRtb2RlXCIgeFxuXG4gIGxldCBhX25vdmFsaWRhdGUgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm5vdmFsaWRhdGVcIlxuXG4gIGxldCBhX29wZW4gPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcIm9wZW5cIlxuXG4gIGxldCBhX29wdGltdW0gPSBmbG9hdF9hdHRyaWIgXCJvcHRpbXVtXCJcblxuICBsZXQgYV9wYXR0ZXJuID0gc3RyaW5nX2F0dHJpYiBcInBhdHRlcm5cIlxuXG4gIGxldCBhX3BsYWNlaG9sZGVyID0gc3RyaW5nX2F0dHJpYiBcInBsYWNlaG9sZGVyXCJcblxuICBsZXQgYV9wb3N0ZXIgPSB1cmlfYXR0cmliIFwicG9zdGVyXCJcblxuICBsZXQgYV9wcmVsb2FkIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicHJlbG9hZFwiIHhcblxuICBsZXQgYV9wdWJkYXRlID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJwdWJkYXRlXCJcblxuICBsZXQgYV9yYWRpb2dyb3VwID0gc3RyaW5nX2F0dHJpYiBcInJhZGlvZ3JvdXBcIlxuXG4gIGxldCBhX3JlcXVpcmVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJyZXF1aXJlZFwiXG5cbiAgbGV0IGFfcmV2ZXJzZWQgPVxuICAgIGNvbnN0YW50X2F0dHJpYiBcInJlc2VydmVkXCJcblxuICBsZXQgYV9zYW5kYm94IHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NhbmRib3ggXCJzYW5kYm94XCIgeFxuXG4gIGxldCBhX3NwZWxsY2hlY2sgc2MgPVxuICAgIGJvb2xfYXR0cmliIFwic3BlbGxjaGVja1wiIHNjXG5cbiAgbGV0IGFfc2NvcGVkID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzY29wZWRcIlxuXG4gIGxldCBhX3NlYW1sZXNzID1cbiAgICBjb25zdGFudF9hdHRyaWIgXCJzZWFtbGVzc1wiXG5cbiAgbGV0IGFfc2l6ZXMgc2l6ZXMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3NpemVzIFwic2l6ZXNcIiBzaXplc1xuXG4gIGxldCBhX3NwYW4gPSBpbnRfYXR0cmliIFwic3BhblwiXG5cbiAgKCpsZXQgYV9zcmNkb2MqKVxuICBsZXQgYV9zcmNsYW5nID0gc3RyaW5nX2F0dHJpYiBcInhtbDpsYW5nXCJcblxuICBsZXQgYV9zcmNzZXQgPSBzcmNzZXRfYXR0cmliIFwic3Jjc2V0XCJcblxuICBsZXQgYV9pbWdfc2l6ZXMgPSBjb21tYV9zZXBfYXR0cmliIFwic2l6ZXNcIlxuXG4gIGxldCBhX3N0YXJ0ID0gaW50X2F0dHJpYiBcInN0YXJ0XCJcblxuICBsZXQgYV9zdGVwIHN0ZXAgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX3N0ZXAgXCJzdGVwXCIgc3RlcFxuXG4gIGxldCBhX3RyYW5zbGF0ZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInRyYW5zbGF0ZVwiIHhcbiAgXG4gIGxldCBhX3dyYXAgeCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgXCJ3cmFwXCIgeFxuXG4gIGxldCBhX3NpemUgPSBpbnRfYXR0cmliIFwic2l6ZVwiXG5cbiAgbGV0IGFfaW5wdXRfdHlwZSBpdCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5wdXRfdHlwZSBcInR5cGVcIiBpdFxuXG4gIGxldCBhX21lbnVfdHlwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInR5cGVcIiB4XG5cbiAgbGV0IGFfY29tbWFuZF90eXBlIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwidHlwZVwiIHhcblxuICBsZXQgYV9idXR0b25fdHlwZSBidCA9XG4gICAgdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2ZfaW5wdXRfdHlwZSBcInR5cGVcIiBidFxuXG4gIGxldCBhX3NjcmlwdF90eXBlIHNjID0gdXNlcl9hdHRyaWIgQy5zdHJpbmdfb2Zfc2NyaXB0X3R5cGUgXCJ0eXBlXCIgc2NcblxuICBsZXQgYV9tdWx0aXBsZSA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwibXVsdGlwbGVcIlxuXG4gIGxldCBhX2NvbHMgPSBpbnRfYXR0cmliIFwiY29sc1wiXG5cbiAgbGV0IGFfcm93cyA9IGludF9hdHRyaWIgXCJyb3dzXCJcblxuICBsZXQgYV9zdW1tYXJ5ID0gc3RyaW5nX2F0dHJpYiBcInN1bW1hcnlcIlxuXG4gIGxldCBhX2FsaWduIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiYWxpZ25cIiB4XG5cbiAgbGV0IGFfYXhpcyA9IHN0cmluZ19hdHRyaWIgXCJheGlzXCJcblxuICBsZXQgYV9jb2xzcGFuID0gaW50X2F0dHJpYiBcImNvbHNwYW5cIlxuXG4gIGxldCBhX2hlYWRlcnMgPSBzcGFjZV9zZXBfYXR0cmliIFwiaGVhZGVyc1wiXG5cbiAgbGV0IGFfcm93c3BhbiA9IGludF9hdHRyaWIgXCJyb3dzcGFuXCJcblxuICBsZXQgYV9zY29wZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNjb3BlXCIgeFxuXG4gIGxldCBhX2JvcmRlciA9IGludF9hdHRyaWIgXCJib3JkZXJcIlxuXG4gIGxldCBhX3J1bGVzIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwicnVsZXNcIiB4XG5cbiAgbGV0IGFfY2hhciBjID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9jaGFyYWN0ZXIgXCJjaGFyXCIgY1xuXG4gIGxldCBhX2RhdGEgPSB1cmlfYXR0cmliIFwiZGF0YVwiXG5cbiAgbGV0IGFfY29kZXR5cGUgPSBzdHJpbmdfYXR0cmliIFwiY29kZXR5cGVcIlxuXG4gIGxldCBhX2ZyYW1lYm9yZGVyIHggPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX2JpZ192YXJpYW50IFwiZnJhbWVib3JkZXJcIiB4XG5cbiAgbGV0IGFfbWFyZ2luaGVpZ2h0ID0gaW50X2F0dHJpYiBcIm1hcmdpbmhlaWdodFwiXG5cbiAgbGV0IGFfbWFyZ2lud2lkdGggPSBpbnRfYXR0cmliIFwibWFyZ2lud2lkdGhcIlxuXG4gIGxldCBhX3Njcm9sbGluZyB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNjcm9sbGluZ1wiIHhcblxuICBsZXQgYV90YXJnZXQgPSBzdHJpbmdfYXR0cmliIFwidGFyZ2V0XCJcblxuICBsZXQgYV9jb250ZW50ID0gc3RyaW5nX2F0dHJpYiBcImNvbnRlbnRcIlxuXG4gIGxldCBhX2h0dHBfZXF1aXYgPSBzdHJpbmdfYXR0cmliIFwiaHR0cC1lcXVpdlwiXG5cbiAgbGV0IGFfbWVkaWEgPSBtZWRpYWRlc2NfYXR0cmliIFwibWVkaWFcIlxuXG4gICgqIEFSSUEgKilcblxuICBsZXQgYV9yb2xlID0gc3BhY2Vfc2VwX2F0dHJpYiBcInJvbGVcIlxuXG4gIGxldCBhX2FyaWEgbmFtZSA9IHNwYWNlX3NlcF9hdHRyaWIgKFwiYXJpYS1cIiBeIG5hbWUpXG5cbiAgdHlwZSAnYSBlbHQgPSBYbWwuZWx0XG5cbiAgdHlwZSAoJ2EsICdiKSBudWxsYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiB1bml0IC0+ICdiIGVsdFxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIHVuYXJ5ID0gP2E6ICgoJ2EgYXR0cmliKSBsaXN0KSAtPiAnYiBlbHQgd3JhcCAtPiAnYyBlbHRcblxuICB0eXBlICgnYSwgJ2IsICdjKSBzdGFyID1cbiAgICA/YTogKCgnYSBhdHRyaWIpIGxpc3QpIC0+ICgnYiBlbHQpIGxpc3Rfd3JhcCAtPiAnYyBlbHRcblxuICBsZXQgdGVybWluYWwgdGFnID9hICgpID0gWG1sLmxlYWYgP2EgdGFnXG5cbiAgbGV0IHVuYXJ5IHRhZyA/YSBlbHQgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5zaW5nbGV0b24gZWx0KVxuXG4gIGxldCBzdGFyIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICBsZXQgcGx1cyB0YWcgP2EgZWx0IGVsdHMgPVxuICAgIFhtbC5ub2RlID9hIHRhZyAoVy5jb25zIGVsdCBlbHRzKVxuXG4gIGxldCBvcHRpb25fY29ucyBvcHQgZWx0cyA9XG4gICAgbWF0Y2ggb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gZWx0c1xuICAgIHwgU29tZSB4IC0+IFcuY29ucyB4IGVsdHNcblxuICBsZXQgYm9keSA9IHN0YXIgXCJib2R5XCJcblxuICBsZXQgaGVhZCA9IHBsdXMgXCJoZWFkXCJcblxuICBsZXQgdGl0bGUgPSB1bmFyeSBcInRpdGxlXCJcblxuICBsZXQgaHRtbCA/YSBoZWFkIGJvZHkgPVxuICAgIGxldCBjb250ZW50ID0gVy5jb25zIGhlYWQgKFcuc2luZ2xldG9uIGJvZHkpIGluXG4gICAgWG1sLm5vZGUgP2EgXCJodG1sXCIgY29udGVudFxuXG4gIGxldCBmb290ZXIgPSBzdGFyIFwiZm9vdGVyXCJcblxuICBsZXQgaGVhZGVyID0gc3RhciBcImhlYWRlclwiXG5cbiAgbGV0IHNlY3Rpb24gPSBzdGFyIFwic2VjdGlvblwiXG5cbiAgbGV0IG5hdiA9IHN0YXIgXCJuYXZcIlxuXG4gIGxldCB0eHQgcyA9IFhtbC5wY2RhdGEgc1xuICBsZXQgcGNkYXRhID0gdHh0XG5cbiAgbGV0IGVudGl0eSA9IFhtbC5lbnRpdHlcblxuICBsZXQgc3BhY2UgKCkgPSBlbnRpdHkgXCJuYnNwXCJcblxuICBsZXQgY2RhdGEgPSBYbWwuY2RhdGFcblxuICBsZXQgY2RhdGFfc2NyaXB0ID0gWG1sLmNkYXRhX3NjcmlwdFxuXG4gIGxldCBjZGF0YV9zdHlsZSA9IFhtbC5jZGF0YV9zdHlsZVxuXG4gIGxldCBoMSA9IHN0YXIgXCJoMVwiXG5cbiAgbGV0IGgyID0gc3RhciBcImgyXCJcblxuICBsZXQgaDMgPSBzdGFyIFwiaDNcIlxuXG4gIGxldCBoNCA9IHN0YXIgXCJoNFwiXG5cbiAgbGV0IGg1ID0gc3RhciBcImg1XCJcblxuICBsZXQgaDYgPSBzdGFyIFwiaDZcIlxuXG4gIGxldCBoZ3JvdXAgPSBzdGFyIFwiaGdyb3VwXCJcblxuICBsZXQgYWRkcmVzcyA9IHN0YXIgXCJhZGRyZXNzXCJcblxuICBsZXQgYmxvY2txdW90ZSA9IHN0YXIgXCJibG9ja3F1b3RlXCJcblxuICBsZXQgZGlhbG9nID0gc3RhciBcImRpYWxvZ1wiXG5cbiAgbGV0IGRpdiA9IHN0YXIgXCJkaXZcIlxuXG4gIGxldCBwID0gc3RhciBcInBcIlxuXG4gIGxldCBwcmUgPSBzdGFyIFwicHJlXCJcblxuICBsZXQgYWJiciA9IHN0YXIgXCJhYmJyXCJcblxuICBsZXQgYnIgPSB0ZXJtaW5hbCBcImJyXCJcblxuICBsZXQgY2l0ZSA9IHN0YXIgXCJjaXRlXCJcblxuICBsZXQgY29kZSA9IHN0YXIgXCJjb2RlXCJcblxuICBsZXQgZGZuID0gc3RhciBcImRmblwiXG5cbiAgbGV0IGVtID0gc3RhciBcImVtXCJcblxuICBsZXQga2JkID0gc3RhciBcImtiZFwiXG5cbiAgbGV0IHEgPSBzdGFyIFwicVwiXG5cbiAgbGV0IHNhbXAgPSBzdGFyIFwic2FtcFwiXG5cbiAgbGV0IHNwYW4gPSBzdGFyIFwic3BhblwiXG5cbiAgbGV0IHN0cm9uZyA9IHN0YXIgXCJzdHJvbmdcIlxuXG4gIGxldCB0aW1lID0gc3RhciBcInRpbWVcIlxuXG4gIGxldCB2YXIgPSBzdGFyIFwidmFyXCJcblxuICBsZXQgYSA9IHN0YXIgXCJhXCJcblxuICBsZXQgZGwgPSBzdGFyIFwiZGxcIlxuXG4gIGxldCBvbCA9IHN0YXIgXCJvbFwiXG5cbiAgbGV0IHVsID0gc3RhciBcInVsXCJcblxuICBsZXQgZGQgPSBzdGFyIFwiZGRcIlxuXG4gIGxldCBkdCA9IHN0YXIgXCJkdFwiXG5cbiAgbGV0IGxpID0gc3RhciBcImxpXCJcblxuICBsZXQgaHIgPSB0ZXJtaW5hbCBcImhyXCJcblxuICBsZXQgYiA9IHN0YXIgXCJiXCJcblxuICBsZXQgaSA9IHN0YXIgXCJpXCJcblxuICBsZXQgdSA9IHN0YXIgXCJ1XCJcblxuICBsZXQgc21hbGwgPSBzdGFyIFwic21hbGxcIlxuXG4gIGxldCBzdWIgPSBzdGFyIFwic3ViXCJcblxuICBsZXQgc3VwID0gc3RhciBcInN1cFwiXG5cbiAgbGV0IG1hcmsgPSBzdGFyIFwibWFya1wiXG5cbiAgbGV0IHJwID0gc3RhciBcInJwXCJcblxuICBsZXQgcnQgPSBzdGFyIFwicnRcIlxuXG4gIGxldCBydWJ5ID0gc3RhciBcInJ1YnlcIlxuXG4gIGxldCB3YnIgPSB0ZXJtaW5hbCBcIndiclwiXG5cbiAgKCogVkIgKilcbiAgdHlwZSBzaGFwZSA9IFsgfCBgUmVjdCB8IGBDaXJjbGUgfCBgUG9seSB8IGBEZWZhdWx0IF1cblxuICBsZXQgYmRvIH5kaXIgPyhhID0gW10pIGVsdHMgPSBYbWwubm9kZSB+YTogKChhX2RpciBkaXIpIDo6IGEpIFwiYmRvXCIgZWx0c1xuXG4gIGxldCBhX2RhdGV0aW1lID0gc3RyaW5nX2F0dHJpYiBcImRhdGV0aW1lXCJcblxuICBsZXQgYV9zaGFwZSB4ID1cbiAgICB1c2VyX2F0dHJpYiBDLnN0cmluZ19vZl9iaWdfdmFyaWFudCBcInNoYXBlXCIgeFxuXG4gIGxldCBhX2Nvb3JkcyBjb29yZHMgPVxuICAgIHVzZXJfYXR0cmliIEMuc3RyaW5nX29mX251bWJlcnMgXCJjb29yZHNcIiBjb29yZHNcblxuICBsZXQgYV91c2VtYXAgPSBzdHJpbmdfYXR0cmliIFwidXNlbWFwXCJcblxuICBsZXQgYV9kZWZlciA9XG4gICAgY29uc3RhbnRfYXR0cmliIFwiZGVmZXJcIlxuXG4gIGxldCBhX2xhYmVsID0gc3RyaW5nX2F0dHJpYiBcImxhYmVsXCJcblxuICBsZXQgYXJlYSB+YWx0ID8oYSA9IFtdKSAoKSA9IFhtbC5sZWFmIH5hOiAoKGFfYWx0IGFsdCkgOjogYSkgXCJhcmVhXCJcblxuICBsZXQgbWFwID0gc3RhciBcIm1hcFwiXG5cbiAgbGV0IGRlbCA9IHN0YXIgXCJkZWxcIlxuXG4gIGxldCBpbnMgPSBzdGFyIFwiaW5zXCJcblxuICBsZXQgc2NyaXB0ID0gdW5hcnkgXCJzY3JpcHRcIlxuXG4gIGxldCBub3NjcmlwdCA9IHN0YXIgXCJub3NjcmlwdFwiXG5cbiAgbGV0IHRlbXBsYXRlID0gc3RhciBcInRlbXBsYXRlXCJcblxuICBsZXQgYXJ0aWNsZSA9IHN0YXIgXCJhcnRpY2xlXCJcblxuICBsZXQgYXNpZGUgPSBzdGFyIFwiYXNpZGVcIlxuXG4gIGxldCBtYWluID0gc3RhciBcIm1haW5cIlxuXG4gIGxldCB2aWRlb19hdWRpbyBuYW1lID9zcmMgP3NyY3MgPyhhID0gW10pIGVsdHMgPVxuICAgIGxldCBhID1cbiAgICAgIG1hdGNoIHNyYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gYVxuICAgICAgfCBTb21lIHVyaSAtPiAoYV9zcmMgdXJpKSA6OiBhXG4gICAgaW5cbiAgICBtYXRjaCBzcmNzIHdpdGhcbiAgICB8IE5vbmUgLT4gWG1sLm5vZGUgbmFtZSB+YSBlbHRzXG4gICAgfCBTb21lIHNyY3MgLT4gWG1sLm5vZGUgbmFtZSB+YSAoVy5hcHBlbmQgc3JjcyBlbHRzKVxuXG4gIGxldCBhdWRpbyA9IHZpZGVvX2F1ZGlvIFwiYXVkaW9cIlxuXG4gIGxldCB2aWRlbyA9IHZpZGVvX2F1ZGlvIFwidmlkZW9cIlxuXG4gIGxldCBjYW52YXMgPSBzdGFyIFwiY2FudmFzXCJcblxuICBsZXQgY29tbWFuZCB+bGFiZWwgPyhhID0gW10pICgpID1cbiAgICBYbWwubGVhZiB+YTogKChhX2xhYmVsIGxhYmVsKSA6OiBhKSBcImNvbW1hbmRcIlxuXG4gIGxldCBtZW51ID9jaGlsZHJlbiA/YSAoKSA9XG4gICAgbGV0IGNoaWxkcmVuID0gbWF0Y2ggY2hpbGRyZW4gd2l0aFxuICAgICAgfCBOb25lIC0+IFcubmlsICgpXG4gICAgICB8IFNvbWUgKGBMaXMgbClcbiAgICAgIHwgU29tZSAoYEZsb3dzIGwpIC0+IGwgaW5cbiAgICBYbWwubm9kZSA/YSBcIm1lbnVcIiBjaGlsZHJlblxuXG4gIGxldCBlbWJlZCA9IHRlcm1pbmFsIFwiZW1iZWRcIlxuXG4gIGxldCBzb3VyY2UgPSB0ZXJtaW5hbCBcInNvdXJjZVwiXG5cbiAgbGV0IG1ldGVyID0gc3RhciBcIm1ldGVyXCJcblxuICBsZXQgb3V0cHV0X2VsdCA9IHN0YXIgXCJvdXRwdXRcIlxuXG4gIGxldCBmb3JtID0gc3RhciBcImZvcm1cIlxuXG4gIGxldCBzdmcgPyhhID0gW10pIGNoaWxkcmVuID1cbiAgICBTdmcudG9lbHQgKFN2Zy5zdmcgfmEgY2hpbGRyZW4pXG5cbiAgbGV0IGlucHV0ID0gdGVybWluYWwgXCJpbnB1dFwiXG5cbiAgbGV0IGtleWdlbiA9IHRlcm1pbmFsIFwia2V5Z2VuXCJcblxuICBsZXQgbGFiZWwgPSBzdGFyIFwibGFiZWxcIlxuXG4gIGxldCBvcHRpb24gPSB1bmFyeSBcIm9wdGlvblwiXG5cbiAgbGV0IHNlbGVjdCA9IHN0YXIgXCJzZWxlY3RcIlxuXG4gIGxldCB0ZXh0YXJlYSA9IHVuYXJ5IFwidGV4dGFyZWFcIlxuXG4gIGxldCBidXR0b24gPSBzdGFyIFwiYnV0dG9uXCJcblxuICBsZXQgZGF0YWxpc3QgP2NoaWxkcmVuID9hICgpID1cbiAgICBsZXQgY2hpbGRyZW4gPSBtYXRjaCBjaGlsZHJlbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gVy5uaWwgKClcbiAgICAgIHwgU29tZSAoYE9wdGlvbnMgeCB8IGBQaHJhcyB4KSAtPiB4IGluXG4gICAgWG1sLm5vZGUgP2EgXCJkYXRhbGlzdFwiIGNoaWxkcmVuXG5cbiAgbGV0IHByb2dyZXNzID0gc3RhciBcInByb2dyZXNzXCJcblxuICBsZXQgbGVnZW5kID0gc3RhciBcImxlZ2VuZFwiXG5cbiAgbGV0IGRldGFpbHMgc3VtbWFyeSA/YSBjaGlsZHJlbiA9XG4gICAgcGx1cyBcImRldGFpbHNcIiA/YSBzdW1tYXJ5IGNoaWxkcmVuXG5cbiAgbGV0IHN1bW1hcnkgPSBzdGFyIFwic3VtbWFyeVwiXG5cbiAgbGV0IGZpZWxkc2V0ID9sZWdlbmQgP2EgZWx0cyA9XG4gICAgWG1sLm5vZGUgP2EgXCJmaWVsZHNldFwiIChvcHRpb25fY29ucyBsZWdlbmQgZWx0cylcblxuICBsZXQgb3B0Z3JvdXAgfmxhYmVsID8oYSA9IFtdKSBlbHRzID1cbiAgICBYbWwubm9kZSB+YTogKChhX2xhYmVsIGxhYmVsKSA6OiBhKSBcIm9wdGdyb3VwXCIgZWx0c1xuXG4gIGxldCBmaWdjYXB0aW9uID0gc3RhciBcImZpZ2NhcHRpb25cIlxuICBsZXQgZmlndXJlID9maWdjYXB0aW9uID9hIGVsdHMgPVxuICAgIGxldCBjb250ZW50ID0gbWF0Y2ggZmlnY2FwdGlvbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWx0c1xuICAgICAgfCBTb21lIChgVG9wIGMpIC0+IFcuY29ucyBjIGVsdHNcbiAgICAgIHwgU29tZSAoYEJvdHRvbSBjKSAtPiBXLmFwcGVuZCBlbHRzIChXLnNpbmdsZXRvbiBjKVxuICAgIGluXG4gICAgWG1sLm5vZGUgP2EgXCJmaWd1cmVcIiBjb250ZW50XG5cbiAgbGV0IGNhcHRpb24gPSBzdGFyIFwiY2FwdGlvblwiXG5cbiAgbGV0IHRhYmxleCA/Y2FwdGlvbiA/Y29sdW1ucyA/dGhlYWQgP3Rmb290ID9hIGVsdHMgPVxuICAgIGxldCBjb250ZW50ID0gb3B0aW9uX2NvbnMgdGhlYWQgKG9wdGlvbl9jb25zIHRmb290IGVsdHMpIGluXG4gICAgbGV0IGNvbnRlbnQgPSBtYXRjaCBjb2x1bW5zIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBjb250ZW50XG4gICAgICB8IFNvbWUgY29sdW1ucyAtPiBXLmFwcGVuZCBjb2x1bW5zIGNvbnRlbnQgaW5cbiAgICBsZXQgY29udGVudCA9IG9wdGlvbl9jb25zIGNhcHRpb24gY29udGVudCBpblxuICAgIFhtbC5ub2RlID9hIFwidGFibGVcIiBjb250ZW50XG5cbiAgbGV0IHRhYmxlID0gdGFibGV4XG5cbiAgbGV0IHRkID0gc3RhciBcInRkXCJcblxuICBsZXQgdGggPSBzdGFyIFwidGhcIlxuXG4gIGxldCB0ciA9IHN0YXIgXCJ0clwiXG5cbiAgbGV0IGNvbGdyb3VwID0gc3RhciBcImNvbGdyb3VwXCJcblxuICBsZXQgY29sID0gdGVybWluYWwgXCJjb2xcIlxuXG4gIGxldCB0aGVhZCA9IHN0YXIgXCJ0aGVhZFwiXG5cbiAgbGV0IHRib2R5ID0gc3RhciBcInRib2R5XCJcblxuICBsZXQgdGZvb3QgPSBzdGFyIFwidGZvb3RcIlxuXG4gIGxldCBpZnJhbWUgPSBzdGFyIFwiaWZyYW1lXCJcblxuICBsZXQgb2JqZWN0XyA/cGFyYW1zID8oYSA9IFtdKSBlbHRzID1cbiAgICBsZXQgZWx0cyA9IG1hdGNoIHBhcmFtcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWx0c1xuICAgICAgfCBTb21lIGUgLT4gVy5hcHBlbmQgZSBlbHRzIGluXG4gICAgWG1sLm5vZGUgfmEgXCJvYmplY3RcIiBlbHRzXG5cbiAgbGV0IHBhcmFtID0gdGVybWluYWwgXCJwYXJhbVwiXG5cbiAgbGV0IGltZyB+c3JjIH5hbHQgPyhhID0gW10pICgpID1cbiAgICBsZXQgYSA9IChhX3NyYyBzcmMpIDo6IChhX2FsdCBhbHQpIDo6IGEgaW5cbiAgICBYbWwubGVhZiB+YSBcImltZ1wiXG5cbiAgbGV0IHBpY3R1cmUgfmltZyA/YSBlbHRzID1cbiAgICBsZXQgdGFpbF9ub2RlID0gVy5jb25zIGltZyAoVy5uaWwgKCkpIGluXG4gICAgbGV0IGNvbnRlbnQgPSBXLmFwcGVuZCBlbHRzIHRhaWxfbm9kZSBpblxuICAgIFhtbC5ub2RlID9hIFwicGljdHVyZVwiIGNvbnRlbnRcblxuICBsZXQgbWV0YSA9IHRlcm1pbmFsIFwibWV0YVwiXG5cbiAgbGV0IHN0eWxlID8oYSA9IFtdKSBlbHRzID0gWG1sLm5vZGUgfmEgXCJzdHlsZVwiIGVsdHNcblxuICBsZXQgbGluayB+cmVsIH5ocmVmID8oYSA9IFtdKSAoKSA9XG4gICAgWG1sLmxlYWYgfmE6ICgoYV9yZWwgcmVsKSA6OiAoYV9ocmVmIGhyZWYpIDo6IGEpIFwibGlua1wiXG5cbiAgbGV0IGJhc2UgPSB0ZXJtaW5hbCBcImJhc2VcIlxuXG4gICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICgqIENvbnZlcnNpb24gZnJvbSBhbmQgdG8gWG1sIG1vZHVsZSAqKVxuICBsZXQgdG90IHggPSB4XG5cbiAgbGV0IHRvdGwgeCA9IHhcblxuICBsZXQgdG9lbHQgeCA9IHhcblxuICBsZXQgdG9lbHRsIHggPSB4XG5cbiAgdHlwZSBkb2MgID0gWyBgSHRtbCBdIGVsdFxuICBsZXQgZG9jX3RvZWx0IHggPSB4XG5cbiAgbW9kdWxlIEkgPSBYbWxfc3RyZWFtLkltcG9ydChYbWwpXG4gIGxldCBvZl9zZXEgcyA9IHRvdGwgQEAgSS5vZl9zZXEgc1xuXG4gIG1vZHVsZSBVbnNhZmUgPSBzdHJ1Y3RcblxuICAgIGxldCBkYXRhIHMgPSBYbWwuZW5jb2RlZHBjZGF0YSBzXG5cbiAgICBsZXQgbGVhZiB0YWcgP2EgKCkgPSBYbWwubGVhZiA/YSB0YWdcblxuICAgIGxldCBub2RlIHRhZyA/YSBlbHRzID0gWG1sLm5vZGUgP2EgdGFnIGVsdHNcblxuICAgIGxldCBjb2VyY2VfZWx0IHggPSB4XG5cbiAgICBsZXQgZmxvYXRfYXR0cmliID0gWG1sLmZsb2F0X2F0dHJpYlxuXG4gICAgbGV0IGludF9hdHRyaWIgPSBYbWwuaW50X2F0dHJpYlxuXG4gICAgbGV0IHN0cmluZ19hdHRyaWIgPSBYbWwuc3RyaW5nX2F0dHJpYlxuXG4gICAgbGV0IHVyaV9hdHRyaWIgYSBzID0gWG1sLnVyaV9hdHRyaWIgYSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiA9IFhtbC5zcGFjZV9zZXBfYXR0cmliXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiA9IFhtbC5jb21tYV9zZXBfYXR0cmliXG5cbiAgZW5kXG5cbmVuZFxuXG5tb2R1bGUgV3JhcHBlZF9mdW5jdGlvbnNcbiAgICAoWG1sIDogWG1sX3NpZ3MuVCB3aXRoIHR5cGUgKCdhLCdiKSBXLmZ0ID0gJ2EgLT4gJ2IpID1cbnN0cnVjdFxuXG4gIG1vZHVsZSBYbWwgPSBYbWxcblxuICBsZXQgc3RyaW5nX29mX3NhbmRib3hfdG9rZW4gPSBmdW5jdGlvblxuICAgIHwgYEFsbG93X2Zvcm1zIC0+IFwiYWxsb3ctZm9ybXNcIlxuICAgIHwgYEFsbG93X3BvaW50ZXJfbG9jayAtPiBcImFsbG93LXBvaW50ZXItbG9ja1wiXG4gICAgfCBgQWxsb3dfcG9wdXBzIC0+IFwiYWxsb3ctcG9wdXBzXCJcbiAgICB8IGBBbGxvd190b3BfbmF2aWdhdGlvbiAtPiBcImFsbG93LXRvcC1uYXZpZ2F0aW9uXCJcbiAgICB8IGBBbGxvd19zYW1lX29yaWdpbiAtPiBcImFsbG93LXNhbWUtb3JpZ2luXCJcbiAgICB8IGBBbGxvd19zY3JpcHQgLT4gXCJhbGxvdy1zY3JpcHRcIlxuXG4gIGxldCBzdHJpbmdfb2ZfbGlua3R5cGUgPSBmdW5jdGlvblxuICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgfCBgQXJjaGl2ZXMgLT4gXCJhcmNoaXZlc1wiXG4gICAgfCBgQXV0aG9yIC0+IFwiYXV0aG9yXCJcbiAgICB8IGBCb29rbWFyayAtPiBcImJvb2ttYXJrXCJcbiAgICB8IGBDYW5vbmljYWwgLT4gXCJjYW5vbmljYWxcIlxuICAgIHwgYERuc19wcmVmZXRjaCAtPiBcImRucy1wcmVmZXRjaFwiXG4gICAgfCBgRXh0ZXJuYWwgLT4gXCJleHRlcm5hbFwiXG4gICAgfCBgRmlyc3QgLT4gXCJmaXJzdFwiXG4gICAgfCBgSGVscCAtPiBcImhlbHBcIlxuICAgIHwgYEljb24gLT4gXCJpY29uXCJcbiAgICB8IGBJbmRleCAtPiBcImluZGV4XCJcbiAgICB8IGBMYXN0IC0+IFwibGFzdFwiXG4gICAgfCBgTGljZW5zZSAtPiBcImxpY2Vuc2VcIlxuICAgIHwgYE1hbmlmZXN0IC0+IFwibWFuaWZlc3RcIlxuICAgIHwgYE1lIC0+IFwibWVcIlxuICAgIHwgYE1vZHVsZXByZWxvYWQgLT4gXCJtb2R1bGVwcmVsb2FkXCJcbiAgICB8IGBOZXh0IC0+IFwibmV4dFwiXG4gICAgfCBgTm9mb2xsb3cgLT4gXCJub2ZvbGxvd1wiXG4gICAgfCBgTm9vcGVuZXIgLT4gXCJub29wZW5lclwiXG4gICAgfCBgTm9yZWZlcnJlciAtPiBcIm5vcmVmZXJyZXJcIlxuICAgIHwgYE9wZW5lciAtPiBcIm9wZW5lclwiXG4gICAgfCBgUGluZ2JhY2sgLT4gXCJwaW5nYmFja1wiXG4gICAgfCBgUHJlY29ubmVjdCAtPiBcInByZWNvbm5lY3RcIlxuICAgIHwgYFByZWZldGNoIC0+IFwicHJlZmV0Y2hcIlxuICAgIHwgYFByZWxvYWQgLT4gXCJwcmVsb2FkXCJcbiAgICB8IGBQcmVyZW5kZXIgLT4gXCJwcmVyZW5kZXJcIlxuICAgIHwgYFByZXYgLT4gXCJwcmV2XCJcbiAgICB8IGBTZWFyY2ggLT4gXCJzZWFyY2hcIlxuICAgIHwgYFN0eWxlc2hlZXQgLT4gXCJzdHlsZXNoZWV0XCJcbiAgICB8IGBTaWRlYmFyIC0+IFwic2lkZWJhclwiXG4gICAgfCBgVGFnIC0+IFwidGFnXCJcbiAgICB8IGBVcCAtPiBcInVwXCJcbiAgICB8IGBPdGhlciBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX21lZGlhZGVzY190b2tlbiA9XG4gICAgZnVuY3Rpb25cbiAgICB8IGBBbGwgLT4gXCJhbGxcIlxuICAgIHwgYEF1cmFsIC0+IFwiYXVyYWxcIlxuICAgIHwgYEJyYWlsbGUgLT4gXCJicmFpbGxlXCJcbiAgICB8IGBFbWJvc3NlZCAtPiBcImVtYm9zc2VkXCJcbiAgICB8IGBIYW5kaGVsZCAtPiBcImhhbmRoZWxkXCJcbiAgICB8IGBQcmludCAtPiBcInByaW50XCJcbiAgICB8IGBQcm9qZWN0aW9uIC0+IFwicHJvamVjdGlvblwiXG4gICAgfCBgU2NyZWVuIC0+IFwic2NyZWVuXCJcbiAgICB8IGBTcGVlY2ggLT4gXCJzcGVlY2hcIlxuICAgIHwgYFR0eSAtPiBcInR0eVwiXG4gICAgfCBgVHYgLT4gXCJ0dlwiXG4gICAgfCBgUmF3X21lZGlhZGVzYyBzIC0+IHNcblxuICBsZXQgc3RyaW5nX29mX3JlZmVycmVycG9saWN5ID0gZnVuY3Rpb25cbiAgICB8IGBFbXB0eSAtPiBcIlwiXG4gICAgfCBgTm9fcmVmZXJyZXIgLT4gXCJuby1yZWZlcnJlclwiXG4gICAgfCBgTm9fcmVmZXJyZXJfd2hlbl9kb3duZ3JhZGUgLT4gXCJuby1yZWZlcnJlci13aGVuLWRvd25ncmFkZVwiXG4gICAgfCBgT3JpZ2luIC0+IFwib3JpZ2luXCJcbiAgICB8IGBPcmlnaW5fd2hlbl9jcm9zc19vcmlnaW4gLT4gXCJvcmlnaW4td2hlbi1jcm9zcy1vcmlnaW5cIlxuICAgIHwgYFNhbWVfb3JpZ2luIC0+IFwic2FtZS1vcmlnaW5cIlxuICAgIHwgYFN0cmljdF9vcmlnaW4gLT4gXCJzdHJpY3Qtb3JpZ2luXCJcbiAgICB8IGBTdHJpY3Rfb3JpZ2luX3doZW5fY3Jvc3Nfb3JpZ2luIC0+IFwic3RyaWN0LW9yaWdpbi13aGVuLWNyb3NzLW9yaWdpblwiXG4gICAgfCBgVW5zYWZlX3VybCAtPiBcInVuc2FmZS11cmxcIlxuXG4gIGxldCBzdHJpbmdfb2ZfYmlnX3ZhcmlhbnQgPSBmdW5jdGlvblxuICAgIHwgYEFub255bW91cyAtPiBcImFub255bW91c1wiXG4gICAgfCBgQXN5bmMgLT4gXCJhc3luY1wiXG4gICAgfCBgQXV0b2ZvY3VzIC0+IFwiYXV0b2ZvY3VzXCJcbiAgICB8IGBBdXRvcGxheSAtPiBcImF1dG9wbGF5XCJcbiAgICB8IGBDaGVja2VkIC0+IFwiY2hlY2tlZFwiXG4gICAgfCBgRGVmZXIgLT4gXCJkZWZlclwiXG4gICAgfCBgRGlzYWJsZWQgLT4gXCJkaXNhYmxlZFwiXG4gICAgfCBgTXV0ZWQgLT4gXCJtdXRlZFwiXG4gICAgfCBgUmVhZE9ubHkgLT4gXCJyZWFkb25seVwiXG4gICAgfCBgUmVjdCAtPiBcInJlY3RcIlxuICAgIHwgYFNlbGVjdGVkIC0+IFwic2VsZWN0ZWRcIlxuICAgIHwgYFVzZV9jcmVkZW50aWFscyAtPiBcInVzZS1jcmVkZW50aWFsc1wiXG4gICAgfCBgVzNfb3JnXzE5OTlfeGh0bWwgLT4gXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sXCJcbiAgICB8IGBBbGwgLT4gXCJhbGxcIlxuICAgIHwgYFByZXNlcnZlIC0+IFwicHJlc2VydmVcIlxuICAgIHwgYERlZmF1bHQgLT4gXCJkZWZhdWx0XCJcbiAgICB8IGBDb250cm9scyAtPiBcImNvbnRyb2xzXCJcbiAgICB8IGBMdHIgLT4gXCJsdHJcIlxuICAgIHwgYFJ0bCAtPiBcInJ0bFwiXG4gICAgfCBgR2V0IC0+IFwiR0VUXCJcbiAgICB8IGBQb3N0IC0+IFwiUE9TVFwiXG4gICAgfCBgRm9ybW5vdmFsaWRhdGUgLT4gXCJmb3Jtbm92YWxpZGF0ZVwiXG4gICAgfCBgSGlkZGVuIC0+IFwiaGlkZGVuXCJcbiAgICB8IGBJc21hcCAtPiBcImlzbWFwXCJcbiAgICB8IGBMb29wIC0+IFwibG9vcFwiXG4gICAgfCBgTm92YWxpZGF0ZSAtPiBcIm5vdmFsaWRhdGVcIlxuICAgIHwgYE9wZW4gLT4gXCJvcGVuXCJcbiAgICB8IGBOb25lIC0+IFwibm9uZVwiXG4gICAgfCBgTWV0YWRhdGEgLT4gXCJtZXRhZGF0YVwiXG4gICAgfCBgQXVkaW8gLT4gXCJhdWRpb1wiXG4gICAgfCBgUHViZGF0ZSAtPiBcInB1YmRhdGVcIlxuICAgIHwgYFJlcXVpcmVkIC0+IFwicmVxdWlyZWRcIlxuICAgIHwgYFJldmVyc2VkIC0+IFwicmVzZXJ2ZWRcIlxuICAgIHwgYFNjb3BlZCAtPiBcInNjb3BlZFwiXG4gICAgfCBgU2VhbWxlc3MgLT4gXCJzZWFtbGVzc1wiXG4gICAgfCBgQW55IC0+IFwiYW55XCJcbiAgICB8IGBTb2Z0IC0+IFwic29mdFwiXG4gICAgfCBgSGFyZCAtPiBcImhhcmRcIlxuICAgIHwgYENvbnRleHQgLT4gXCJjb250ZXh0XCJcbiAgICB8IGBUb29sYmFyIC0+IFwidG9vbGJhclwiXG4gICAgfCBgQ29tbWFuZCAtPiBcImNvbW1hbmRcIlxuICAgIHwgYENoZWNrYm94IC0+IFwiY2hlY2tib3hcIlxuICAgIHwgYFJhZGlvIC0+IFwicmFkaW9cIlxuICAgIHwgYE11bHRpcGxlIC0+IFwibXVsdGlwbGVcIlxuICAgIHwgYExlZnQgLT4gXCJsZWZ0XCJcbiAgICB8IGBSaWdodCAtPiBcInJpZ2h0XCJcbiAgICB8IGBKdXN0aWZ5IC0+IFwianVzdGlmeVwiXG4gICAgfCBgQ2hhciAtPiBcImNoYXJcIlxuICAgIHwgYFJvdyAtPiBcInJvd1wiXG4gICAgfCBgQ29sIC0+IFwiY29sXCJcbiAgICB8IGBSb3dncm91cCAtPiBcInJvd2dyb3VwXCJcbiAgICB8IGBDb2xncm91cCAtPiBcImNvbGdyb3VwXCJcbiAgICB8IGBHcm91cHMgLT4gXCJncm91cHNcIlxuICAgIHwgYFJvd3MgLT4gXCJyb3dzXCJcbiAgICB8IGBDb2xzIC0+IFwiY29sc1wiXG4gICAgfCBgWmVybyAtPiBcIjBcIlxuICAgIHwgYE9uZSAtPiBcIjFcIlxuICAgIHwgYFllcyAtPiBcInllc1wiXG4gICAgfCBgTm8gLT4gXCJub1wiXG4gICAgfCBgQXV0byAtPiBcImF1dG9cIlxuICAgIHwgYENpcmNsZSAtPiBcImNpcmNsZVwiXG4gICAgfCBgUG9seSAtPiBcInBvbHlcIlxuICAgIHwgYEFsdGVybmF0ZSAtPiBcImFsdGVybmF0ZVwiXG4gICAgfCBgQXJjaGl2ZXMgLT4gXCJhcmNoaXZlc1wiXG4gICAgfCBgQXV0aG9yIC0+IFwiYXV0aG9yXCJcbiAgICB8IGBCb29rbWFyayAtPiBcImJvb2ttYXJrXCJcbiAgICB8IGBFeHRlcm5hbCAtPiBcImV4dGVybmFsXCJcbiAgICB8IGBGaXJzdCAtPiBcImZpcnN0XCJcbiAgICB8IGBIZWxwIC0+IFwiaGVscFwiXG4gICAgfCBgSWNvbiAtPiBcImljb25cIlxuICAgIHwgYEluZGV4IC0+IFwiaW5kZXhcIlxuICAgIHwgYExhc3QgLT4gXCJsYXN0XCJcbiAgICB8IGBMaWNlbnNlIC0+IFwibGljZW5zZVwiXG4gICAgfCBgTmV4dCAtPiBcIm5leHRcIlxuICAgIHwgYE5vZm9sbG93IC0+IFwibm9mb2xsb3dcIlxuICAgIHwgYE5vcmVmZXJyZXIgLT4gXCJub3JlZmVycmVyXCJcbiAgICB8IGBQaW5nYmFjayAtPiBcInBpbmdiYWNrXCJcbiAgICB8IGBQcmVmZXRjaCAtPiBcInByZWZldGNoXCJcbiAgICB8IGBQcmV2IC0+IFwicHJldlwiXG4gICAgfCBgU2VhcmNoIC0+IFwic2VhcmNoXCJcbiAgICB8IGBTdHlsZXNoZWV0IC0+IFwic3R5bGVzaGVldFwiXG4gICAgfCBgU2lkZWJhciAtPiBcInNpZGViYXJcIlxuICAgIHwgYFRhZyAtPiBcInRhZ1wiXG4gICAgfCBgVXAgLT4gXCJ1cFwiXG4gICAgfCBgVmVyYmF0aW0gLT4gXCJ2ZXJiYXRpbVwiXG4gICAgfCBgTGF0aW4gLT4gXCJsYXRpblwiXG4gICAgfCBgTGF0aW5fbmFtZSAtPiBcImxhdGluLW5hbWVcIlxuICAgIHwgYExhdGluX3Byb3NlIC0+IFwibGF0aW4tcHJvc2VcIlxuICAgIHwgYEZ1bGxfd2lkdGhfbGF0aW4gLT4gXCJmdWxsLXdpZHRoLWxhdGluXCJcbiAgICB8IGBLYW5hIC0+IFwia2FuYVwiXG4gICAgfCBgS2F0YWthbmEgLT4gXCJrYXRha2FuYVwiXG4gICAgfCBgTnVtZXJpYyAtPiBcIm51bWVyaWNcIlxuICAgIHwgYFRlbCAtPiBcInRlbFwiXG4gICAgfCBgRW1haWwgLT4gXCJlbWFpbFwiXG4gICAgfCBgVXJsIC0+IFwidXJsXCJcbiAgICB8IGBUZXh0IC0+IFwidGV4dFwiXG4gICAgfCBgRGVjaW1hbCAtPiBcImRlY2ltYWxcIlxuICAgIHwgYE90aGVyIHMgLT4gc1xuXG4gIGxldCBzdHJpbmdfb2ZfaW5wdXRfdHlwZSA9IGZ1bmN0aW9uXG4gICAgfCBgQnV0dG9uIC0+IFwiYnV0dG9uXCJcbiAgICB8IGBDaGVja2JveCAtPiBcImNoZWNrYm94XCJcbiAgICB8IGBDb2xvciAtPiBcImNvbG9yXCJcbiAgICB8IGBEYXRlIC0+IFwiZGF0ZVwiXG4gICAgfCBgRGF0ZXRpbWUgLT4gXCJkYXRldGltZVwiXG4gICAgfCBgRGF0ZXRpbWVfbG9jYWwgLT4gXCJkYXRldGltZS1sb2NhbFwiXG4gICAgfCBgRW1haWwgLT4gXCJlbWFpbFwiXG4gICAgfCBgRmlsZSAtPiBcImZpbGVcIlxuICAgIHwgYEhpZGRlbiAtPiBcImhpZGRlblwiXG4gICAgfCBgSW1hZ2UgLT4gXCJpbWFnZVwiXG4gICAgfCBgTW9udGggLT4gXCJtb250aFwiXG4gICAgfCBgTnVtYmVyIC0+IFwibnVtYmVyXCJcbiAgICB8IGBQYXNzd29yZCAtPiBcInBhc3N3b3JkXCJcbiAgICB8IGBSYWRpbyAtPiBcInJhZGlvXCJcbiAgICB8IGBSYW5nZSAtPiBcInJhbmdlXCJcbiAgICB8IGBSZWFkb25seSAtPiBcInJlYWRvbmx5XCJcbiAgICB8IGBSZXNldCAtPiBcInJlc2V0XCJcbiAgICB8IGBTZWFyY2ggLT4gXCJzZWFyY2hcIlxuICAgIHwgYFN1Ym1pdCAtPiBcInN1Ym1pdFwiXG4gICAgfCBgVGVsIC0+IFwidGVsXCJcbiAgICB8IGBUZXh0IC0+IFwidGV4dFwiXG4gICAgfCBgVGltZSAtPiBcInRpbWVcIlxuICAgIHwgYFVybCAtPiBcInVybFwiXG4gICAgfCBgV2VlayAtPiBcIndlZWtcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2NyaXB0X3R5cGUgPSBmdW5jdGlvblxuICB8IGBKYXZhc2NyaXB0IC0+IFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiXG4gIHwgYE1vZHVsZSAtPiBcIm1vZHVsZVwiXG4gIHwgYE1pbWUgcyAtPiBzXG5cbiAgbGV0IHN0cmluZ19vZl9udW1iZXJfb3JfZGF0ZXRpbWUgPSBmdW5jdGlvblxuICAgIHwgYE51bWJlciBuIC0+IHN0cmluZ19vZl9pbnQgblxuICAgIHwgYERhdGV0aW1lIHQgLT4gdFxuXG4gIGxldCBzdHJpbmdfb2ZfY2hhcmFjdGVyID0gU3RyaW5nLm1ha2UgMVxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVyID0gc3RyaW5nX29mX2ludFxuXG4gIGxldCBzdHJpbmdfb2ZfYm9vbCA9IHN0cmluZ19vZl9ib29sXG5cbiAgbGV0IG9ub2ZmX29mX2Jvb2wgPSBmdW5jdGlvblxuICAgIHwgZmFsc2UgLT4gXCJvZmZcIlxuICAgIHwgdHJ1ZSAtPiBcIm9uXCJcblxuICBsZXQgdW5vcHRpb25fc3RyaW5nID0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+IFwiXCJcblxuICBsZXQgc3RyaW5nX29mX3N0ZXAgPSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IFhtbF9wcmludC5zdHJpbmdfb2ZfbnVtYmVyIHhcbiAgICB8IE5vbmUgLT4gXCJhbnlcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2l6ZXMgPSBmdW5jdGlvblxuICAgIHwgU29tZSBsIC0+XG4gICAgICBTdHJpbmcuY29uY2F0IFwiIFwiXG4gICAgICAgIChMaXN0Lm1hcCAoZnVuICh4LCB5KSAtPiBQcmludGYuc3ByaW50ZiBcIiVkeCVkXCIgeCB5KSBsKVxuICAgIHwgTm9uZSAtPlxuICAgICAgXCJhbnlcIlxuXG4gIGxldCBzdHJpbmdfb2Zfc2FuZGJveCBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2Zfc2FuZGJveF90b2tlbiBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfbnVtYmVycyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiLFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbnVtYmVyIGwpXG5cbiAgbGV0IHN0cmluZ19vZl9tZWRpYWRlc2MgbCA9XG4gICAgU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9tZWRpYWRlc2NfdG9rZW4gbClcblxuICBsZXQgc3RyaW5nX29mX2xpbmt0eXBlcyBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiIFwiIChMaXN0Lm1hcCBzdHJpbmdfb2ZfbGlua3R5cGUgbClcblxuICB0eXBlIGltYWdlX2NhbmRpZGF0ZSA9XG4gICAgWyBgVXJsIG9mIFhtbC51cmlcbiAgICB8IGBVcmxfd2lkdGggb2YgWG1sLnVyaSAqIEh0bWxfdHlwZXMubnVtYmVyXG4gICAgfCBgVXJsX3BpeGVsIG9mIFhtbC51cmkgKiBIdG1sX3R5cGVzLmZsb2F0X251bWJlciBdXG5cbiAgbGV0IHN0cmluZ19vZl9zcmNzZXQgKGwgOiBbPCBpbWFnZV9jYW5kaWRhdGVdIGxpc3QpID1cbiAgICBsZXQgZiA9IGZ1bmN0aW9uXG4gICAgfCBgVXJsIHVybCAtPiBYbWwuc3RyaW5nX29mX3VyaSB1cmxcbiAgICB8IGBVcmxfd2lkdGggKHVybCwgdikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXN3XCIgKFhtbC5zdHJpbmdfb2ZfdXJpIHVybCkgKHN0cmluZ19vZl9udW1iZXIgdilcbiAgICB8IGBVcmxfcGl4ZWwgKHVybCwgdikgLT5cbiAgICAgIFByaW50Zi5zcHJpbnRmIFwiJXMgJXN4XCIgKFhtbC5zdHJpbmdfb2ZfdXJpIHVybCkgKFhtbF9wcmludC5zdHJpbmdfb2ZfbnVtYmVyIHYpXG4gICAgaW5cbiAgICBTdHJpbmcuY29uY2F0IFwiLCBcIiAoTGlzdC5tYXAgZiBsKVxuXG4gIGxldCBzdHJpbmdfb2ZfYXV0b2NvbXBsZXRlIChsIDogSHRtbF90eXBlcy5hdXRvY29tcGxldGVfb3B0aW9uKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBgT24gfCBgVG9rZW5zIFtdIC0+IFwib25cIlxuICAgIHwgYE9mZiAtPiBcIm9mZlwiXG4gICAgfCBgVG9rZW5zIHN0cnMgLT4gU3RyaW5nLmNvbmNhdCBcIiBcIiBzdHJzXG5cbmVuZFxuXG5tb2R1bGUgTWFrZVxuICAgIChYbWwgOiBYbWxfc2lncy5UIHdpdGggdHlwZSAoJ2EsICdiKSBXLmZ0ID0gJ2EgLT4gJ2IpXG4gICAgKFN2ZyA6IFN2Z19zaWdzLlQgd2l0aCBtb2R1bGUgWG1sIDo9IFhtbCkgPVxuICBNYWtlX3dpdGhfd3JhcHBlZF9mdW5jdGlvbnMoWG1sKShXcmFwcGVkX2Z1bmN0aW9ucyhYbWwpKShTdmcpXG4iLCIoKiBUeVhNTFxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy90eXhtbFxuICogQ29weXJpZ2h0IChDKSAyMDA0IFRob3JzdGVuIE9obCA8b2hsQHBoeXNpay51bmktd3VlcnpidXJnLmRlPlxuICogQ29weXJpZ2h0IChDKSAyMDA3IEdhYnJpZWwgS2VybmVpc1xuICogQ29weXJpZ2h0IChDKSAyMDEwIENlY2lsZSBIZXJiZWxpblxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxuXG5tb2R1bGUgTSA9IHN0cnVjdFxuXG4gIG1vZHVsZSBXID0gWG1sX3dyYXAuTm9XcmFwXG5cbiAgdHlwZSAnYSB3cmFwID0gJ2FcbiAgdHlwZSAnYSBsaXN0X3dyYXAgPSAnYSBsaXN0XG5cbiAgdHlwZSB1cmkgPSBzdHJpbmdcbiAgbGV0IHVyaV9vZl9zdHJpbmcgcyA9IHNcbiAgbGV0IHN0cmluZ19vZl91cmkgcyA9IHNcblxuICB0eXBlIHNlcGFyYXRvciA9IFNwYWNlIHwgQ29tbWFcblxuICAoKiogQXR0cmlidXRlcyAqKVxuXG4gIHR5cGUgYW5hbWUgPSBzdHJpbmdcbiAgdHlwZSBhY29udGVudCA9XG4gICAgfCBBRmxvYXQgb2YgZmxvYXRcbiAgICB8IEFJbnQgb2YgaW50XG4gICAgfCBBU3RyIG9mIHN0cmluZ1xuICAgIHwgQVN0ckwgb2Ygc2VwYXJhdG9yICogc3RyaW5nIGxpc3RcbiAgdHlwZSBhdHRyaWIgPSBhbmFtZSAqIGFjb250ZW50XG5cbiAgdHlwZSBldmVudF9oYW5kbGVyID0gc3RyaW5nXG4gIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IHN0cmluZ1xuICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBzdHJpbmdcbiAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gc3RyaW5nXG5cbiAgbGV0IGFjb250ZW50IChfLCBhKSA9IGFcbiAgbGV0IGFuYW1lIChuYW1lLCBfKSA9IG5hbWVcblxuICBsZXQgZmxvYXRfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBRmxvYXQgdmFsdWVcbiAgbGV0IGludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFJbnQgdmFsdWVcbiAgbGV0IHN0cmluZ19hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoU3BhY2UsIHZhbHVlcylcbiAgbGV0IGNvbW1hX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBuYW1lLCBBU3RyTCAoQ29tbWEsIHZhbHVlcylcbiAgbGV0IGV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCBtb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHZhbHVlID0gbmFtZSwgQVN0ciB2YWx1ZVxuICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSB2YWx1ZSA9IG5hbWUsIEFTdHIgdmFsdWVcbiAgbGV0IHRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB1cmlfYXR0cmliIG5hbWUgdmFsdWUgPSBuYW1lLCBBU3RyIHZhbHVlXG4gIGxldCB1cmlzX2F0dHJpYiBuYW1lIHZhbHVlcyA9IG5hbWUsIEFTdHJMIChTcGFjZSwgdmFsdWVzKVxuXG5cbiAgKCoqIEVsZW1lbnQgKilcblxuICB0eXBlIGVuYW1lID0gc3RyaW5nXG4gIHR5cGUgZWNvbnRlbnQgPVxuICAgIHwgRW1wdHlcbiAgICB8IENvbW1lbnQgb2Ygc3RyaW5nXG4gICAgfCBFbmNvZGVkUENEQVRBIG9mIHN0cmluZ1xuICAgIHwgUENEQVRBIG9mIHN0cmluZ1xuICAgIHwgRW50aXR5IG9mIHN0cmluZ1xuICAgIHwgTGVhZiBvZiBlbmFtZSAqIGF0dHJpYiBsaXN0XG4gICAgfCBOb2RlIG9mIGVuYW1lICogYXR0cmliIGxpc3QgKiBlY29udGVudCBsaXN0XG5cbiAgdHlwZSBlbHQgPSAgZWNvbnRlbnRcblxuICBsZXQgY29udGVudCBlbHQgPSBlbHRcblxuICBsZXQgZW1wdHkgKCkgPSBFbXB0eVxuXG4gIGxldCBjb21tZW50IGMgPSBDb21tZW50IGNcblxuICBsZXQgcGNkYXRhIGQgPSBQQ0RBVEEgZFxuICBsZXQgZW5jb2RlZHBjZGF0YSBkID0gRW5jb2RlZFBDREFUQSBkXG4gIGxldCBlbnRpdHkgZSA9IEVudGl0eSBlXG5cbiAgKCogRm9yIHNlY3VyaXR5IHJlYXNvbnMsIHdlIGRvIG5vdCBhbGxvdyBcIl1dPlwiIGluc2lkZSBDREFUQVxuICAgICAoYXMgdGhpcyBzdHJpbmcgaXMgdG8gYmUgY29uc2lkZXJlZCBhcyB0aGUgZW5kIG9mIHRoZSBjZGF0YSlcbiAgKilcbiAgbGV0IHJlX2VuZF9jZGF0YSA9IFJlLihjb21waWxlIEBAIHN0ciBcIl1dPlwiKVxuICBsZXQgZW5jb2RlZF9jZGF0YSBzMSBzMiBzID1cbiAgICBlbmNvZGVkcGNkYXRhXG4gICAgICAoUHJpbnRmLnNwcmludGYgXCJcXG4lc1xcbiVzXFxuJXNcXG5cIlxuICAgICAgICAgczFcbiAgICAgICAgIChSZS5yZXBsYWNlX3N0cmluZyB+YWxsOnRydWUgcmVfZW5kX2NkYXRhIH5ieTpcIlwiIHMpXG4gICAgICAgICBzMiApXG5cbiAgbGV0IGNkYXRhID0gZW5jb2RlZF9jZGF0YSBcIjwhW0NEQVRBW1wiIFwiXV0+XCJcbiAgbGV0IGNkYXRhX3NjcmlwdCA9IGVuY29kZWRfY2RhdGEgXCIvLzwhW0NEQVRBW1wiIFwiLy9dXT5cIlxuICBsZXQgY2RhdGFfc3R5bGUgPSBlbmNvZGVkX2NkYXRhIFwiLyogPCFbQ0RBVEFbICovXCIgXCIvKiBdXT4gKi9cIlxuXG4gIGxldCBsZWFmID8oYT1bXSkgbmFtZSA9IExlYWYgKG5hbWUsIGEpXG4gIGxldCBub2RlID8oYT1bXSkgbmFtZSBjaGlsZHJlbiA9IE5vZGUgKG5hbWUsIGEsIGNoaWxkcmVuKVxuXG5lbmRcblxuaW5jbHVkZSBNXG5pbmNsdWRlIFhtbF9wcmludC5NYWtlX3NpbXBsZShNKShzdHJ1Y3QgbGV0IGVtcHR5dGFncyA9IFtdIGVuZClcbltAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxuXG5pbmNsdWRlIFhtbF9pdGVyLk1ha2UoTSlcbmluY2x1ZGUgWG1sX3ByaW50Lk1ha2VfZm10KE0pKHN0cnVjdCBsZXQgZW1wdHl0YWdzID0gW10gZW5kKVxuXG5pbmNsdWRlIFhtbF9zdHJlYW0uSW1wb3J0KE0pXG5sZXQgcHJpbnQgZm10IHggPSBwcmludF9saXN0IH5vdXRwdXQ6KEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10KSBbeF1cbiIsIigqIFR5WE1MXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL3R5eG1sXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTEgUGllcnJlIENoYW1iYXJ0LCBHcsOpZ29pcmUgSGVucnlcbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3aXRoIGxpbmtpbmcgZXhjZXB0aW9uO1xuICogZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLFxuICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2ZcbiAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGVcbiAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZVxuICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmVcbiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgU3VpdGUgNTAwLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS5cbiopXG5cbm1vZHVsZSBNID0gU3ZnX2YuTWFrZShUeXhtbF94bWwpXG5tb2R1bGUgUCA9IFhtbF9wcmludC5NYWtlX3R5cGVkX2ZtdChUeXhtbF94bWwpKE0pXG5tb2R1bGUgTWFrZV9wcmludGVyID0gWG1sX3ByaW50Lk1ha2VfdHlwZWQoVHl4bWxfeG1sKShNKVxuW0BAb2NhbWwud2FybmluZyBcIi0zXCJdXG5cblxuaW5jbHVkZSBNXG5pbmNsdWRlIFBcblxubGV0IF9wcCA9IHBwICgpXG5sZXQgX3BwX2VsdCA9IHBwX2VsdCAoKVxuIiwiKCogVHlYTUxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvdHl4bWxcbiAqIENvcHlyaWdodCAoQykgMjAxMSBQaWVycmUgQ2hhbWJhcnQsIEdyw6lnb2lyZSBIZW5yeVxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBTdWl0ZSA1MDAsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLlxuKilcblxubW9kdWxlIE0gPSBIdG1sX2YuTWFrZShUeXhtbF94bWwpKFR5eG1sX3N2Zylcbm1vZHVsZSBQID0gWG1sX3ByaW50Lk1ha2VfdHlwZWRfZm10KFR5eG1sX3htbCkoTSlcbm1vZHVsZSBNYWtlX3ByaW50ZXIgPSBYbWxfcHJpbnQuTWFrZV90eXBlZChUeXhtbF94bWwpKE0pXG5bQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cblxuaW5jbHVkZSBNXG5pbmNsdWRlIFBcblxubGV0IF9wcCA9IHBwICgpXG5sZXQgX3BwX2VsdCA9IHBwX2VsdCAoKVxuIiwiKCogUmVhY3RpdmVEYXRhXG4gKiBodHRwczovL2dpdGh1Yi5jb20vaGh1Z28vcmVhY3RpdmVEYXRhXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSB0eXBlIERBVEEgPSBzaWdcbiAgdHlwZSAnYSBkYXRhXG4gIHR5cGUgJ2EgcGF0Y2hcbiAgdmFsIG1lcmdlIDogJ2EgcGF0Y2ggLT4gJ2EgZGF0YSAtPiAnYSBkYXRhXG4gIHZhbCBtYXBfcGF0Y2ggOiAoJ2EgLT4gJ2IpIC0+ICdhIHBhdGNoIC0+ICdiIHBhdGNoXG4gIHZhbCBtYXBfZGF0YSA6ICgnYSAtPiAnYikgLT4gJ2EgZGF0YSAtPiAnYiBkYXRhXG4gIHZhbCBlbXB0eSA6ICdhIGRhdGFcbiAgdmFsIGVxdWFsIDogKCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YSAtPiBib29sXG4gIHZhbCBkaWZmIDogZXE6KCdhIC0+ICdhIC0+IGJvb2wpIC0+ICdhIGRhdGEgLT4gJ2EgZGF0YSAtPiAnYSBwYXRjaFxuZW5kXG5tb2R1bGUgdHlwZSBTID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlICdhIGRhdGFcbiAgdHlwZSAnYSBwYXRjaFxuICB0eXBlICdhIG1zZyA9IFBhdGNoIG9mICdhIHBhdGNoIHwgU2V0IG9mICdhIGRhdGFcbiAgdHlwZSAnYSBoYW5kbGVcbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgY3JlYXRlIDogJ2EgZGF0YSAtPiAnYSB0ICogJ2EgaGFuZGxlXG4gIHZhbCBmcm9tX2V2ZW50IDogJ2EgZGF0YSAtPiAnYSBtc2cgUmVhY3QuRS50IC0+ICdhIHRcbiAgdmFsIGZyb21fc2lnbmFsIDogP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSBkYXRhIFJlYWN0LlMudCAtPiAnYSB0XG4gIHZhbCBjb25zdCA6ICdhIGRhdGEgLT4gJ2EgdFxuICB2YWwgcGF0Y2ggOiAnYSBoYW5kbGUgLT4gJ2EgcGF0Y2ggLT4gdW5pdFxuICB2YWwgc2V0ICAgOiAnYSBoYW5kbGUgLT4gJ2EgZGF0YSAtPiB1bml0XG4gIHZhbCBtYXBfbXNnIDogKCdhIC0+ICdiKSAtPiAnYSBtc2cgLT4gJ2IgbXNnXG4gIHZhbCBtYXAgOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgdmFsdWUgOiAnYSB0IC0+ICdhIGRhdGFcbiAgdmFsIGZvbGQgOiAoJ2EgLT4gJ2IgbXNnIC0+ICdhKSAtPiAnYiB0IC0+ICdhIC0+ICdhIFJlYWN0LnNpZ25hbFxuICB2YWwgc2lnbmFsIDogP2VxOignYSAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+ICdhIGRhdGEgUmVhY3QuUy50XG4gIHZhbCBldmVudCA6ICdhIHQgLT4gJ2EgbXNnIFJlYWN0LkUudFxuZW5kXG5cbm1vZHVsZSBNYWtlKEQgOiBEQVRBKSA6XG4gIFMgd2l0aCB0eXBlICdhIGRhdGEgPSAnYSBELmRhdGFcbiAgICAgYW5kIHR5cGUgJ2EgcGF0Y2ggPSAnYSBELnBhdGNoID0gc3RydWN0XG5cbiAgdHlwZSAnYSBkYXRhID0gJ2EgRC5kYXRhXG4gIHR5cGUgJ2EgcGF0Y2ggPSAnYSBELnBhdGNoXG4gIGxldCBtZXJnZSA9IEQubWVyZ2VcbiAgbGV0IG1hcF9wYXRjaCA9IEQubWFwX3BhdGNoXG4gIGxldCBtYXBfZGF0YSA9IEQubWFwX2RhdGFcblxuICB0eXBlICdhIG1zZyA9XG4gICAgfCBQYXRjaCBvZiAnYSBwYXRjaFxuICAgIHwgU2V0IG9mICdhIGRhdGFcblxuICB0eXBlICdhIGhhbmRsZSA9ID9zdGVwOlJlYWN0LnN0ZXAgLT4gJ2EgbXNnIC0+IHVuaXRcblxuICB0eXBlICdhIG11dCA9IHtcbiAgICBjdXJyZW50IDogJ2EgZGF0YSByZWY7XG4gICAgZXZlbnQgOiAnYSBtc2cgUmVhY3QuRS50O1xuICB9XG5cbiAgdHlwZSAnYSB0ID1cbiAgICB8IENvbnN0IG9mICdhIGRhdGFcbiAgICB8IE11dCBvZiAnYSBtdXRcblxuICBsZXQgZW1wdHkgPSBDb25zdCBELmVtcHR5XG5cbiAgbGV0IGNyZWF0ZSBsID1cbiAgICBsZXQgaW5pdGlhbF9ldmVudCxzZW5kID0gUmVhY3QuRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgY3VycmVudCA9IHJlZiBsIGluXG4gICAgbGV0IGV2ZW50ID0gUmVhY3QuRS5tYXAgKGZ1biBtc2cgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICB8IFNldCBsIC0+IGN1cnJlbnQgOj0gbDtcbiAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgIGVuZDtcbiAgICAgICAgbXNnKSBpbml0aWFsX2V2ZW50IGluXG4gICAgTXV0IHtjdXJyZW50O2V2ZW50fSxzZW5kXG5cbiAgbGV0IGZyb21fZXZlbnQgbCBpbml0aWFsX2V2ZW50ID1cbiAgICBsZXQgY3VycmVudCA9IHJlZiBsIGluXG4gICAgbGV0IGV2ZW50ID0gUmVhY3QuRS5tYXAgKGZ1biBtc2cgLT5cbiAgICAgICAgYmVnaW4gbWF0Y2ggbXNnIHdpdGhcbiAgICAgICAgICB8IFNldCBsIC0+IGN1cnJlbnQgOj0gbDtcbiAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgIGVuZDtcbiAgICAgICAgbXNnKSBpbml0aWFsX2V2ZW50IGluXG4gICAgTXV0IHtjdXJyZW50O2V2ZW50fVxuXG4gIGxldCBjb25zdCB4ID0gQ29uc3QgeFxuXG4gIGxldCBtYXBfbXNnIChmIDogJ2EgLT4gJ2IpIDogJ2EgbXNnIC0+ICdiIG1zZyA9IGZ1bmN0aW9uXG4gICAgfCBTZXQgbCAtPiBTZXQgKG1hcF9kYXRhIGYgbClcbiAgICB8IFBhdGNoIHAgLT4gUGF0Y2ggKG1hcF9wYXRjaCBmIHApXG5cbiAgbGV0IG1hcCBmIHMgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgeCAtPiBDb25zdCAobWFwX2RhdGEgZiB4KVxuICAgIHwgTXV0IHMgLT5cbiAgICAgIGxldCBjdXJyZW50ID0gcmVmIChtYXBfZGF0YSBmICEocy5jdXJyZW50KSkgaW5cbiAgICAgIGxldCBldmVudCA9IFJlYWN0LkUubWFwIChmdW4gbXNnIC0+XG4gICAgICAgICAgbGV0IG1zZyA9IG1hcF9tc2cgZiBtc2cgaW5cbiAgICAgICAgICBiZWdpbiBtYXRjaCBtc2cgd2l0aFxuICAgICAgICAgICAgfCBTZXQgbCAtPiBjdXJyZW50IDo9IGw7XG4gICAgICAgICAgICB8IFBhdGNoIHAgLT4gY3VycmVudCA6PSBtZXJnZSBwICFjdXJyZW50XG4gICAgICAgICAgZW5kO1xuICAgICAgICAgIG1zZykgcy5ldmVudCBpblxuICAgICAgTXV0IHtjdXJyZW50IDtldmVudH1cblxuICBsZXQgdmFsdWUgcyA9IG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgYyAtPiBjXG4gICAgfCBNdXQgcyAtPiAhKHMuY3VycmVudClcblxuICBsZXQgZXZlbnQgcyA9IG1hdGNoIHMgd2l0aFxuICAgIHwgQ29uc3QgXyAtPiBSZWFjdC5FLm5ldmVyXG4gICAgfCBNdXQgcyAtPiBzLmV2ZW50XG5cbiAgbGV0IHBhdGNoIChzIDogJ2EgaGFuZGxlKSBwID0gcyAoUGF0Y2ggcClcblxuICBsZXQgc2V0IChzIDogJ2EgaGFuZGxlKSBwID0gcyAoU2V0IHApXG5cbiAgbGV0IGZvbGQgZiBzIGFjYyA9XG4gICAgbWF0Y2ggcyB3aXRoXG4gICAgfCBDb25zdCBjIC0+IFJlYWN0LlMuY29uc3QgKGYgYWNjIChTZXQgYykpXG4gICAgfCBNdXQgcyAtPlxuICAgICAgbGV0IGFjYyA9IGYgYWNjIChTZXQgKCEocy5jdXJyZW50KSkpIGluXG4gICAgICBSZWFjdC5TLmZvbGQgZiBhY2Mgcy5ldmVudFxuXG4gIGxldCBzaWduYWwgPyhlcSA9ICg9KSkgKHMgOiAnYSB0KSA6ICdhIGRhdGEgUmVhY3QuUy50ID1cbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IENvbnN0IGMgLT4gUmVhY3QuUy5jb25zdCBjXG4gICAgfCBNdXQgcyAtPlxuICAgICAgUmVhY3QuUy5mb2xkIH5lcTooRC5lcXVhbCBlcSkgKGZ1biBsIG1zZyAtPlxuICAgICAgICAgIG1hdGNoIG1zZyB3aXRoXG4gICAgICAgICAgfCBTZXQgbCAtPiBsXG4gICAgICAgICAgfCBQYXRjaCBwIC0+IG1lcmdlIHAgbCkgKCEocy5jdXJyZW50KSkgcy5ldmVudFxuXG4gIGxldCBmcm9tX3NpZ25hbCA/KGVxID0gKD0pKSBzID1cbiAgICBsZXQgZiBkJyBkID0gUGF0Y2ggKEQuZGlmZiB+ZXEgZCBkJykgaW5cbiAgICBmcm9tX2V2ZW50IChSZWFjdC5TLnZhbHVlIHMpIChSZWFjdC5TLmRpZmYgZiBzKVxuXG5lbmRcblxubW9kdWxlIERhdGFMaXN0ID0gc3RydWN0XG4gIHR5cGUgJ2EgZGF0YSA9ICdhIGxpc3RcbiAgdHlwZSAnYSBwID1cbiAgICB8IEkgb2YgaW50ICogJ2FcbiAgICB8IFIgb2YgaW50XG4gICAgfCBVIG9mIGludCAqICdhXG4gICAgfCBYIG9mIGludCAqIGludFxuICB0eXBlICdhIHBhdGNoID0gJ2EgcCBsaXN0XG4gIGxldCBlbXB0eSA9IFtdXG4gIGxldCBtYXBfZGF0YSA9IExpc3QubWFwXG4gIGxldCBtYXBfcGF0Y2ggZiA9IGZ1bmN0aW9uXG4gICAgfCBJIChpLHgpIC0+IEkgKGksIGYgeClcbiAgICB8IFIgaSAtPiBSIGlcbiAgICB8IFggKGksaikgLT4gWCAoaSxqKVxuICAgIHwgVSAoaSx4KSAtPiBVIChpLGYgeClcbiAgbGV0IG1hcF9wYXRjaCBmID0gTGlzdC5tYXAgKG1hcF9wYXRjaCBmKVxuXG4gIGxldCBtZXJnZV9wIG9wIGwgPVxuICAgIG1hdGNoIG9wIHdpdGhcbiAgICB8IEkgKGknLHgpIC0+XG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIExpc3QubGVuZ3RoIGwgKyAxICsgaScgZWxzZSBpJyBpblxuICAgICAgbGV0IHJlYyBhdXggYWNjIG4gbCA9IG1hdGNoIG4sbCB3aXRoXG4gICAgICAgIHwgMCxsIC0+IExpc3QucmV2X2FwcGVuZCBhY2MgKHg6OmwpXG4gICAgICAgIHwgXyxbXSAtPiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiXG4gICAgICAgIHwgbix4Ojp4cyAtPiBhdXggKHg6OmFjYykgKHByZWQgbikgeHNcbiAgICAgIGluIGF1eCBbXSBpIGxcbiAgICB8IFIgaScgLT5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gTGlzdC5sZW5ndGggbCArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCByZWMgYXV4IGFjYyBuIGwgPSBtYXRjaCBuLGwgd2l0aFxuICAgICAgICB8IDAsXzo6bCAtPiBMaXN0LnJldl9hcHBlbmQgYWNjIGxcbiAgICAgICAgfCBfLFtdIC0+IGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCJcbiAgICAgICAgfCBuLHg6OnhzIC0+IGF1eCAoeDo6YWNjKSAocHJlZCBuKSB4c1xuICAgICAgaW4gYXV4IFtdIGkgbFxuICAgIHwgVSAoaScseCkgLT5cbiAgICAgIGxldCBpID0gaWYgaScgPCAwIHRoZW4gTGlzdC5sZW5ndGggbCArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gICAgICBhLihpKSA8LSB4O1xuICAgICAgQXJyYXkudG9fbGlzdCBhXG4gICAgfCBYIChpJyxvZmZzZXQpIC0+XG4gICAgICBsZXQgYSA9IEFycmF5Lm9mX2xpc3QgbCBpblxuICAgICAgbGV0IGxlbiA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgICBsZXQgaSA9IGlmIGknIDwgMCB0aGVuIGxlbiArIGknIGVsc2UgaScgaW5cbiAgICAgIGxldCB2ID0gYS4oaSkgaW5cbiAgICAgIGlmIG9mZnNldCA+IDBcbiAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgaWYgKGkgKyBvZmZzZXQgPj0gbGVuKSB0aGVuIGZhaWx3aXRoIFwiUmVhY3RpdmVEYXRhLlJsaXN0Lm1lcmdlXCI7XG4gICAgICAgIGZvciBqID0gaSB0byBpICsgb2Zmc2V0IC0gMSBkb1xuICAgICAgICAgIGEuKGopIDwtIGEuKGogKyAxKVxuICAgICAgICBkb25lO1xuICAgICAgICBhLihpK29mZnNldCkgPC0gdlxuICAgICAgZW5kXG4gICAgICBlbHNlIGJlZ2luXG4gICAgICAgIGlmIChpICsgb2Zmc2V0IDwgMCkgdGhlbiBmYWlsd2l0aCBcIlJlYWN0aXZlRGF0YS5SbGlzdC5tZXJnZVwiO1xuICAgICAgICBmb3IgaiA9IGkgZG93bnRvIGkgKyBvZmZzZXQgKyAxIGRvXG4gICAgICAgICAgYS4oaikgPC0gYS4oaiAtIDEpXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGEuKGkrb2Zmc2V0KSA8LSB2XG4gICAgICBlbmQ7XG4gICAgICBBcnJheS50b19saXN0IGFcblxuICAoKiBhY2N1bXVsYXRlcyBpbnRvIGFjYyBpIHVubW9kaWZpZWQgZWxlbWVudHMgZnJvbSBsICopXG4gIGxldCByZWMgbGluZWFyX21lcmdlX2Z3ZCB+YWNjIGkgbCA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIGkgPiAwIHRoZW5cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBoIDo6IGwgLT5cbiAgICAgICAgbGV0IGFjYyA9IGggOjogYWNjIGluXG4gICAgICAgIGxpbmVhcl9tZXJnZV9md2QgfmFjYyAoaSAtIDEpIGxcbiAgICAgIHwgW10gLT5cbiAgICAgICAgaW52YWxpZF9hcmcgXCJpbnZhbGlkIGluZGV4XCJcbiAgICBlbHNlXG4gICAgICBsLCBhY2NcblxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZSB+YWNjIGkwIHAgbCA9XG4gICAgbGV0IGwsIGFjYyA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgKEkgKGksIF8pIHwgUiBpIHwgVSAoaSwgXykpIDo6IF8gd2hlbiBpID4gaTAgLT5cbiAgICAgICAgbGluZWFyX21lcmdlX2Z3ZCB+YWNjIChpIC0gaTApIGxcbiAgICAgIHwgXyAtPlxuICAgICAgICBsLCBhY2NcbiAgICBpblxuICAgIG1hdGNoIHAsIGwgd2l0aFxuICAgIHwgSSAoaSwgeCkgOjogcCwgXyAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwICh4IDo6IGwpXG4gICAgfCBSIGkgOjogcCwgXyA6OiBsIC0+XG4gICAgICBsaW5lYXJfbWVyZ2UgfmFjYyBpIHAgbFxuICAgIHwgUiBfIDo6IF8sIFtdIC0+XG4gICAgICBpbnZhbGlkX2FyZyBcIm1lcmdlOiBpbnZhbGlkIGluZGV4XCJcbiAgICB8IFUgKGksIHgpIDo6IHAsIF8gOjogbCAtPlxuICAgICAgbGluZWFyX21lcmdlIH5hY2MgaSBwICh4IDo6IGwpXG4gICAgfCBVIChfLCBfKSA6OiBfLCBbXSAtPlxuICAgICAgaW52YWxpZF9hcmcgXCJtZXJnZTogaW52YWxpZCBpbmRleFwiXG4gICAgfCBbXSwgbCAtPlxuICAgICAgTGlzdC5yZXZfYXBwZW5kIGFjYyBsXG4gICAgfCBYIChfLCBfKSA6OiBfLCBfIC0+XG4gICAgICBmYWlsd2l0aCBcImxpbmVhcl9tZXJnZTogWCBub3Qgc3VwcG9ydGVkXCJcblxuICBsZXQgcmVjIGxpbmVhcl9tZXJnZWFibGUgfm4gcCA9XG4gICAgYXNzZXJ0IChuID49IDApO1xuICAgIG1hdGNoIHAgd2l0aFxuICAgIHwgKEkgKGksIF8pIHwgUiBpIHwgVSAoaSwgXykpIDo6IHAgd2hlbiBpID49IG4gLT5cbiAgICAgICgqIG5lZ2F0aXZlIGkncyBydWxlZCBvdXQgKGFtb25nIG90aGVycykgKilcbiAgICAgIGxpbmVhcl9tZXJnZWFibGUgfm46aSBwXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBbXSAtPlxuICAgICAgdHJ1ZVxuXG4gIGxldCBtZXJnZSBwIGwgPVxuICAgIGlmIGxpbmVhcl9tZXJnZWFibGUgfm46MCBwIHRoZW5cbiAgICAgIGxpbmVhcl9tZXJnZSB+YWNjOltdIDAgcCBsXG4gICAgZWxzZVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsIHggLT4gbWVyZ2VfcCB4IGwpIGwgcFxuXG4gIGxldCByZWMgZXF1YWwgZiBsMSBsMiA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IHgxIDo6IGwxLCB4MiA6OiBsMiB3aGVuIGYgeDEgeDIgLT5cbiAgICAgIGVxdWFsIGYgbDEgbDJcbiAgICB8IFtdLCBbXSAtPlxuICAgICAgdHJ1ZVxuICAgIHwgXyA6OiBfICwgXyA6OiBfXG4gICAgfCBfIDo6IF8gLCBbXVxuICAgIHwgW10gICAgICwgXyA6OiBfIC0+XG4gICAgICBmYWxzZVxuXG4gIGxldCBtZW0gKHR5cGUgdSkgbCA9XG4gICAgbGV0IG1vZHVsZSBIID1cbiAgICAgIEhhc2h0YmwuTWFrZVxuICAgICAgICAoc3RydWN0IHR5cGUgdCA9IHUgbGV0IGhhc2ggPSBIYXNodGJsLmhhc2ggbGV0IGVxdWFsID0gKD09KSBlbmQpIGluXG4gICAgbGV0IGggPSBILmNyZWF0ZSAxNiBpblxuICAgIExpc3QuaXRlciAoZnVuIHggLT4gSC5hZGQgaCB4ICgpKSBsO1xuICAgIEgubWVtIGhcblxuICBsZXQgZm9sZF9kaWZmID8oZXEgPSAoPSkpIH5hY2MgfnJlbW92ZSB+YWRkIGx4IGx5ID1cbiAgICBsZXQgbWVteCA9IG1lbSBseFxuICAgIGFuZCBtZW15ID0gbWVtIGx5IGluXG4gICAgbGV0IHJlYyBmIH5hY2MgfmxlZnQgbHggbHkgbiA9XG4gICAgICBtYXRjaCBseCwgbHkgd2l0aFxuICAgICAgKCogdHJhaWxpbmcgZWxlbWVudHMgdG8gYmUgcmVtb3ZlZCAqKVxuICAgICAgfCBfIDo6IGx4LCBbXSAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBbXSBuXG4gICAgICAoKiB0cmFpbGluZyBlbGVtZW50cyB0byBiZSBhZGRlZCAqKVxuICAgICAgfCBbXSwgeSA6OiBseSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IFtdIGx5IChuICsgMSlcbiAgICAgICgqIGRvbmUhICopXG4gICAgICB8IFtdLCBbXSAtPlxuICAgICAgICBhY2NcbiAgICAgICgqIHNhbWUgKilcbiAgICAgIHwgeCA6OiBseCwgeSA6OiBseSB3aGVuIGVxIHggeSAtPlxuICAgICAgICBmIH5hY2MgfmxlZnQgbHggbHkgKG4gKyAxKVxuICAgICAgKCogeCBuZWVkcyB0byBiZSByZW1vdmVkIGZvciBzdXJlICopXG4gICAgICB8IHggOjogbHgsIF8gOjogXyB3aGVuIG5vdCAobWVteSB4KSAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdCBseCBseSBuXG4gICAgICAoKiB5IG5lZWRzIHRvIGJlIGFkZGVkIGZvciBzdXJlICopXG4gICAgICB8IF8gOjogXywgeSA6OiBseSB3aGVuIG5vdCAobWVteCB5KSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0IGx4IGx5IChuICsgMSlcbiAgICAgICgqIG5vIG1vcmUgY2VydGFpbnR5LCB+bGVmdCBkZWNpZGVzIHdoYXQgdG8gcmVjdXIgb24gKilcbiAgICAgIHwgXyA6OiBseCwgXyA6OiBfIHdoZW4gbGVmdCAtPlxuICAgICAgICBsZXQgYWNjID0gcmVtb3ZlIGFjYyBuIGluXG4gICAgICAgIGYgfmFjYyB+bGVmdDpmYWxzZSBseCBseSBuXG4gICAgICB8IF8gOjogXywgeSA6OiBseSAtPlxuICAgICAgICBsZXQgYWNjID0gYWRkIGFjYyBuIHkgaW5cbiAgICAgICAgZiB+YWNjIH5sZWZ0OnRydWUgbHggbHkgKG4gKyAxKVxuICAgIGluXG4gICAgZiB+YWNjIH5sZWZ0OnRydWUgbHggbHkgMFxuXG4gIGxldCByZWMgbGlzdF9yZXYgPyhhY2MgPSBbXSkgPSBmdW5jdGlvblxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgYWNjID0gaCA6OiBhY2MgaW5cbiAgICAgIGxpc3RfcmV2IH5hY2MgdFxuICAgIHwgW10gLT5cbiAgICAgIGFjY1xuXG4gIGxldCBkaWZmIH5lcSB4IHkgPVxuICAgIGxldCBhZGQgYWNjIGkgdiA9IEkgKGksIHYpIDo6IGFjY1xuICAgIGFuZCByZW1vdmUgYWNjIGkgPSBSIGkgOjogYWNjXG4gICAgYW5kIGFjYyA9IFtdIGluXG4gICAgbGlzdF9yZXYgKGZvbGRfZGlmZiB+ZXEgfmFjYyB+YWRkIH5yZW1vdmUgeCB5KVxuXG5lbmRcblxubW9kdWxlIFJMaXN0ID0gc3RydWN0XG4gIGluY2x1ZGUgTWFrZSAoRGF0YUxpc3QpXG4gIG1vZHVsZSBEID0gRGF0YUxpc3RcbiAgdHlwZSAnYSBwID0gJ2EgRC5wID1cbiAgICB8IEkgb2YgaW50ICogJ2FcbiAgICB8IFIgb2YgaW50XG4gICAgfCBVIG9mIGludCAqICdhXG4gICAgfCBYIG9mIGludCAqIGludFxuXG4gIGxldCBjb25zIHggcyA9IHBhdGNoIHMgW0QuSSAoMCx4KV1cbiAgbGV0IHNub2MgeCBzID0gcGF0Y2ggcyBbRC5JICgtMSx4KV1cbiAgbGV0IGluc2VydCB4IGkgcyA9IHBhdGNoIHMgW0QuSSAoaSx4KV1cbiAgbGV0IHVwZGF0ZSB4IGkgcyA9IHBhdGNoIHMgW0QuVSAoaSx4KV1cbiAgbGV0IG1vdmUgaSBqIHMgPSBwYXRjaCBzIFtELlggKGksaildXG4gIGxldCByZW1vdmUgaSBzID0gcGF0Y2ggcyBbRC5SIGldXG5cbiAgbGV0IGluZGV4ID8oZXEgPSAoPSkpIGwgeCA9XG4gICAgbGV0IHJlYyBmIG4gPSBmdW5jdGlvblxuICAgICAgfCBoZCA6OiBfIHdoZW4gZXEgaGQgeCAtPiBuXG4gICAgICB8IF8gOjogdGwgLT4gZiAobiArIDEpIHRsXG4gICAgICB8IFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIGluXG4gICAgZiAwIGxcblxuICBsZXQgdXBkYXRlX2VxID9lcSAoZGF0YSwgaGFuZGxlKSB4IHkgPVxuICAgIGxldCBpID0gaW5kZXggP2VxICh2YWx1ZSBkYXRhKSB4IGluXG4gICAgdXBkYXRlIHkgaSBoYW5kbGVcblxuICBsZXQgcmVtb3ZlX2xhc3QgKGRhdGEsIGhhbmRsZSkgPVxuICAgIHJlbW92ZSAoTGlzdC5sZW5ndGggKHZhbHVlIGRhdGEpIC0gMSkgaGFuZGxlXG5cbiAgbGV0IHJlbW92ZV9lcSA/ZXEgKGRhdGEsIGhhbmRsZSkgeCA9XG4gICAgbGV0IGkgPSBpbmRleCA/ZXEgKHZhbHVlIGRhdGEpIHggaW5cbiAgICByZW1vdmUgaSBoYW5kbGVcblxuICBsZXQgc2luZ2xldG9uIHggPSBjb25zdCBbeF1cblxuICBsZXQgc2luZ2xldG9uX3MgcyA9XG4gICAgbGV0IGZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBsZXQgZSxzZW5kID0gUmVhY3QuRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID0gZnJvbV9ldmVudCBbXSBlIGluXG4gICAgbGV0IF8gPSBSZWFjdC5TLm1hcCAoZnVuIHggLT5cbiAgICAgICAgaWYgIWZpcnN0XG4gICAgICAgIHRoZW4gYmVnaW5cbiAgICAgICAgICBmaXJzdDo9ZmFsc2U7XG4gICAgICAgICAgc2VuZCAoUGF0Y2ggW0koMCx4KV0pXG4gICAgICAgIGVuZFxuICAgICAgICBlbHNlIHNlbmQgKFBhdGNoIFtVKDAseCldKSkgcyBpblxuICAgIHJlc3VsdFxuXG4gIGxldCBjb25jYXQgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCA9IGZ1biB4IHkgLT5cbiAgICBsZXQgdjEgPSB2YWx1ZSB4XG4gICAgYW5kIHYyID0gdmFsdWUgeSBpblxuICAgIGxldCBzaXplMSA9IHJlZiAwXG4gICAgYW5kIHNpemUyID0gcmVmIDAgaW5cbiAgICBsZXQgc2l6ZV93aXRoX3BhdGNoIHNpemV4IDogJ2EgRC5wIC0+IHVuaXQgPSBmdW5jdGlvblxuICAgICAgfCAoRC5JIF8pIC0+IGluY3Igc2l6ZXhcbiAgICAgIHwgKEQuUiBfKSAtPiBkZWNyIHNpemV4XG4gICAgICB8IChELlggXyB8IEQuVSBfKSAtPiAoKSBpblxuICAgIGxldCBzaXplX3dpdGhfc2V0IHNpemV4IGwgPSBzaXpleDo9TGlzdC5sZW5ndGggbCBpblxuXG4gICAgc2l6ZV93aXRoX3NldCBzaXplMSB2MTtcbiAgICBzaXplX3dpdGhfc2V0IHNpemUyIHYyO1xuXG4gICAgbGV0IHVwZGF0ZV9wYXRjaDEgPSBMaXN0Lm1hcCAoZnVuIHAgLT5cbiAgICAgICAgbGV0IG0gPSBtYXRjaCBwIHdpdGhcbiAgICAgICAgICB8IEQuSSAocG9zLHgpIC0+XG4gICAgICAgICAgICBsZXQgaSA9IGlmIHBvcyA8IDAgdGhlbiBwb3MgLSAhc2l6ZTIgZWxzZSBwb3MgaW5cbiAgICAgICAgICAgIEQuSSAoaSwgeClcbiAgICAgICAgICB8IEQuUiBwb3MgICAgIC0+IEQuUiAgKGlmIHBvcyA8IDAgdGhlbiBwb3MgLSAhc2l6ZTIgZWxzZSBwb3MpXG4gICAgICAgICAgfCBELlUgKHBvcyx4KSAtPiBELlUgKChpZiBwb3MgPCAwIHRoZW4gcG9zIC0gIXNpemUyIGVsc2UgcG9zKSwgeClcbiAgICAgICAgICB8IEQuWCAoaSxqKSAtPiAgIEQuWCAoKGlmIGkgPCAwIHRoZW4gaSAtICFzaXplMiBlbHNlIGkpLGopXG4gICAgICAgIGluXG4gICAgICAgIHNpemVfd2l0aF9wYXRjaCBzaXplMSBtO1xuICAgICAgICBtKSBpblxuICAgIGxldCB1cGRhdGVfcGF0Y2gyID0gTGlzdC5tYXAgKGZ1biBwIC0+XG4gICAgICAgIGxldCBtID0gbWF0Y2ggcCB3aXRoXG4gICAgICAgICAgfCBELkkgKHBvcyx4KSAtPiBELkkgKChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKSwgeClcbiAgICAgICAgICB8IEQuUiBwb3MgICAgIC0+IEQuUiAgKGlmIHBvcyA8IDAgdGhlbiBwb3MgZWxzZSAhc2l6ZTEgKyBwb3MpXG4gICAgICAgICAgfCBELlUgKHBvcyx4KSAtPiBELlUgKChpZiBwb3MgPCAwIHRoZW4gcG9zIGVsc2UgIXNpemUxICsgcG9zKSwgeClcbiAgICAgICAgICB8IEQuWCAoaSxqKSAtPiAgIEQuWCAoKGlmIGkgPCAwIHRoZW4gaSBlbHNlICFzaXplMSArIGkpLGopXG4gICAgICAgIGluXG4gICAgICAgIHNpemVfd2l0aF9wYXRjaCBzaXplMiBtO1xuICAgICAgICBtKSBpblxuICAgIGxldCB0dXBsZV9ldiA9XG4gICAgICBSZWFjdC5FLm1lcmdlIChmdW4gYWNjIHggLT5cbiAgICAgICAgICBtYXRjaCBhY2MseCB3aXRoXG4gICAgICAgICAgfCAoTm9uZSxwMiksYEUxIHggLT4gU29tZSB4LHAyXG4gICAgICAgICAgfCAocDEsTm9uZSksYEUyIHggLT4gcDEsIFNvbWUgeFxuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICAgIChOb25lLE5vbmUpXG4gICAgICAgIFtSZWFjdC5FLm1hcCAoZnVuIGUgLT4gYEUxIGUpIChldmVudCB4KTtcbiAgICAgICAgIFJlYWN0LkUubWFwIChmdW4gZSAtPiBgRTIgZSkgKGV2ZW50IHkpXSBpblxuICAgIGxldCBtZXJnZWRfZXYgPSBSZWFjdC5FLm1hcCAoZnVuIHAgLT5cbiAgICAgICAgbWF0Y2ggcCB3aXRoXG4gICAgICAgIHwgU29tZSAoU2V0IHAxKSwgU29tZSAoU2V0IHAyKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgcDE7XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBwMjtcbiAgICAgICAgICBTZXQgKHAxIEAgcDIpXG4gICAgICAgIHwgU29tZSAoU2V0IHAxKSwgTm9uZSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgcDE7XG4gICAgICAgICAgU2V0IChwMSBAIHZhbHVlIHkpXG4gICAgICAgIHwgTm9uZSwgU29tZSAoU2V0IHAyKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgcDI7XG4gICAgICAgICAgU2V0ICh2YWx1ZSB4IEAgcDIgKVxuICAgICAgICB8IFNvbWUgKFBhdGNoIHAxKSwgU29tZSAoUGF0Y2ggcDIpIC0+XG4gICAgICAgICAgbGV0IHAxID0gdXBkYXRlX3BhdGNoMSBwMSBpblxuICAgICAgICAgIGxldCBwMiA9IHVwZGF0ZV9wYXRjaDIgcDIgaW5cbiAgICAgICAgICBQYXRjaCAocDEgQCBwMilcbiAgICAgICAgfCBTb21lIChQYXRjaCBwMSksIE5vbmUgLT4gUGF0Y2ggKHVwZGF0ZV9wYXRjaDEgcDEpXG4gICAgICAgIHwgTm9uZSwgU29tZSAoUGF0Y2ggcDIpIC0+IFBhdGNoICh1cGRhdGVfcGF0Y2gyIHAyKVxuICAgICAgICB8IFNvbWUgKFBhdGNoIF8pLCBTb21lIChTZXQgczIpIC0+XG4gICAgICAgICAgbGV0IHMxID0gdmFsdWUgeCBpblxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgczE7XG4gICAgICAgICAgc2l6ZV93aXRoX3NldCBzaXplMiBzMjtcbiAgICAgICAgICBTZXQoczEgQCBzMilcbiAgICAgICAgfCBTb21lIChTZXQgczEpLCBTb21lIChQYXRjaCBfKSAtPlxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTEgczE7XG4gICAgICAgICAgbGV0IHMyID0gdmFsdWUgeSBpblxuICAgICAgICAgIHNpemVfd2l0aF9zZXQgc2l6ZTIgczI7XG4gICAgICAgICAgU2V0KHMxIEAgczIpXG4gICAgICAgIHwgTm9uZSxOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgKSB0dXBsZV9ldiBpblxuICAgIGZyb21fZXZlbnQgKHYxIEAgdjIpIG1lcmdlZF9ldlxuXG4gIGxldCBpbnZlcnNlIDogJ2EgLiAnYSBwIC0+ICdhIHAgPSBmdW5jdGlvblxuICAgIHwgSSAoaSx4KSAtPiBJKC1pLTEsIHgpXG4gICAgfCBVIChpLHgpIC0+IFUoLWktMSwgeClcbiAgICB8IFIgaSAtPiBSICgtaS0xKVxuICAgIHwgWCAoaSxqKSAtPiBYICgtaS0xLC1qKVxuXG4gIGxldCByZXYgdCA9XG4gICAgbGV0IGUgPSBSZWFjdC5FLm1hcCAoZnVuY3Rpb25cbiAgICAgICAgfCBTZXQgbCAtPiBTZXQgKExpc3QucmV2IGwpXG4gICAgICAgIHwgUGF0Y2ggcCAtPiBQYXRjaCAoTGlzdC5tYXAgaW52ZXJzZSBwKSkgIChldmVudCB0KVxuICAgIGluXG4gICAgZnJvbV9ldmVudCAoTGlzdC5yZXYgKHZhbHVlIHQpKSBlXG5cbiAgbGV0IGZpbHRlciBwcmVkIGwgPVxuICAgIGxldCBtb2R1bGUgSW50TWFwID0gTWFwLk1ha2UoSW50KSBpblxuXG4gICAgbGV0IGluZGV4ID0gcmVmIEludE1hcC5lbXB0eSBpblxuICAgIGxldCBzaXplID0gcmVmIDAgaW5cblxuICAgIGxldCBmaWx0ZXJfbGlzdCBsID1cbiAgICAgIGxldCByZWMgYXV4IChsOiAnYSBsaXN0KSByZXMgdGhlaXJfaSBteV9pID0gbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4gcmVzXG4gICAgICAgIHwgeDo6eHMgLT5cbiAgICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICBiZWdpblxuICAgICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCB0aGVpcl9pIChteV9pICsgMSkgIWluZGV4O1xuICAgICAgICAgICAgICAgYXV4IHhzICh4OjpyZXMpICh0aGVpcl9pICsgMSkgKG15X2kgKyAxKVxuICAgICAgICAgICAgIGVuZFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICAgIGF1eCB4cyByZXMgKHRoZWlyX2kgKyAxKSBteV9pXG4gICAgICAgICAgICAgZW5kXG4gICAgICBpblxuICAgICAgc2l6ZSA6PSBMaXN0Lmxlbmd0aCBsO1xuICAgICAgaW5kZXggOj0gSW50TWFwLmVtcHR5O1xuICAgICAgTGlzdC5yZXYgKGF1eCBsIFtdIDAgKC0xKSlcbiAgICBpblxuXG4gICAgbGV0IG5vcm1hbGlzZSBpID0gaWYgaSA8IDAgdGhlbiAhc2l6ZSArIDEgKyBpIGVsc2UgaSBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9pbnNlcnQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgdmlzaWJsZSA9XG4gICAgICBsZXQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgPSBub3JtYWxpc2UgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgaW5cbiAgICAgIGxldCBsZWZ0X2Fsb25lLCBkaXNwbGFjZWQsIHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgaW5zZXJ0X3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBsZXQgdXBkYXRhYmxlcyA9IG1hdGNoIGRpc3BsYWNlZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB1cGRhdGFibGVzXG4gICAgICAgIHwgU29tZSBkaXNwbGFjZWRfaW5fZmlsdGVyZWQgLT5cbiAgICAgICAgICAgSW50TWFwLmFkZCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCBkaXNwbGFjZWRfaW5fZmlsdGVyZWQgdXBkYXRhYmxlc1xuICAgICAgaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBsZXQgbmV3X2pfZmlsdGVyZWQgPSBpZiB2aXNpYmxlIHRoZW4gal9maWx0ZXJlZF9saXN0ICsgMSBlbHNlIGpfZmlsdGVyZWRfbGlzdCBpblxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChqX2Z1bGxfbGlzdCArIDEpIG5ld19qX2ZpbHRlcmVkICFpbmRleFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXMgaW5cbiAgICAgIGxldCBpbnNlcnRfcG9zX2ZpbHRlcmVkID0gaWYgSW50TWFwLmlzX2VtcHR5IGxlZnRfYWxvbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlbiAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIGxlZnRfYWxvbmUpKSArIDFcbiAgICAgIGluXG4gICAgICBpZiB2aXNpYmxlIHRoZW4gaW5kZXggOj0gSW50TWFwLmFkZCBpbnNlcnRfcG9zX2Z1bGxfbGlzdCBpbnNlcnRfcG9zX2ZpbHRlcmVkICFpbmRleDtcbiAgICAgIGluY3Igc2l6ZTtcbiAgICAgIGluc2VydF9wb3NfZmlsdGVyZWRcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9yZW1vdmUgcmVtb3ZlX3Bvc19mdWxsX2xpc3QgPVxuICAgICAgbGV0IHdhc192aXNpYmxlID0gSW50TWFwLm1lbSByZW1vdmVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCBfLF8sdXBkYXRhYmxlcyA9IEludE1hcC5zcGxpdCByZW1vdmVfcG9zX2Z1bGxfbGlzdCAhaW5kZXggaW5cbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBsZXQgbmV3X2ogPSBpZiB3YXNfdmlzaWJsZSB0aGVuIGpfZmlsdGVyZWRfbGlzdCBlbHNlIGpfZmlsdGVyZWRfbGlzdCAtIDEgaW5cbiAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoal9mdWxsX2xpc3QgLSAxKSBuZXdfaiAhaW5kZXhcbiAgICAgIGluXG4gICAgICBpZiBub3QgKEludE1hcC5pc19lbXB0eSAhaW5kZXgpXG4gICAgICB0aGVuXG4gICAgICAgIGxldCBsYXN0X2ksIF8gPSBJbnRNYXAubWF4X2JpbmRpbmcgIWluZGV4IGluXG4gICAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgbGFzdF9pICFpbmRleFxuICAgICAgZWxzZSAoKTtcbiAgICAgIGRlY3Igc2l6ZTtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXNcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF91cGRhdGVfZGVsZXRlIHVwZGF0ZV9wb3NfZnVsbF9saXN0ID1cbiAgICAgIGxldCBfLCBfLCB1cGRhdGFibGVzID0gSW50TWFwLnNwbGl0IHVwZGF0ZV9wb3NfZnVsbF9saXN0ICFpbmRleCBpblxuICAgICAgbGV0IHVwZGF0ZV9qIGpfZnVsbF9saXN0IGpfZmlsdGVyZWRfbGlzdCA9XG4gICAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgal9mdWxsX2xpc3QgKGpfZmlsdGVyZWRfbGlzdCAtIDEpICFpbmRleFxuICAgICAgaW5cbiAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgdXBkYXRlX3Bvc19mdWxsX2xpc3QgIWluZGV4O1xuICAgICAgSW50TWFwLml0ZXIgdXBkYXRlX2ogdXBkYXRhYmxlc1xuICAgIGluXG5cbiAgICBsZXQgdXBkYXRlX2luZGV4X3VwZGF0ZV9pbnNlcnQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgPVxuICAgICAgbGV0IGxlZnRfYWxvbmUsIG5vbmUsIHVwZGF0YWJsZXMgPSBJbnRNYXAuc3BsaXQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgIWluZGV4IGluXG4gICAgICBhc3NlcnQgKG5vbmUgPSBOb25lKTtcbiAgICAgIGxldCB1cGRhdGVfaiBqX2Z1bGxfbGlzdCBqX2ZpbHRlcmVkX2xpc3QgPVxuICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIGpfZnVsbF9saXN0IChqX2ZpbHRlcmVkX2xpc3QgKyAxKSAhaW5kZXhcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X3Bvc19maWx0ZXJlZF9saXN0ID1cbiAgICAgICAgbGV0IHByZXZpb3VzX3Bvc19maWx0ZXJlZCA9IHRyeSAoc25kIChJbnRNYXAubWF4X2JpbmRpbmcgbGVmdF9hbG9uZSkpIHdpdGggTm90X2ZvdW5kIC0+ICgtMSkgaW5cbiAgICAgICAgcHJldmlvdXNfcG9zX2ZpbHRlcmVkICsgMVxuICAgICAgaW5cbiAgICAgIGluZGV4IDo9IEludE1hcC5hZGQgdXBkYXRlX3Bvc19mdWxsX2xpc3QgbmV3X3Bvc19maWx0ZXJlZF9saXN0ICFpbmRleDtcbiAgICAgIEludE1hcC5pdGVyIHVwZGF0ZV9qIHVwZGF0YWJsZXM7XG4gICAgICBuZXdfcG9zX2ZpbHRlcmVkX2xpc3RcbiAgICBpblxuXG4gICAgbGV0IHVwZGF0ZV9pbmRleF9tb3ZlIGZyb21fZnVsbF9saXN0IHRvX2Z1bGxfbGlzdCB0b19maWx0ZXJlZCA9XG4gICAgICBsZXQgd2FzX3Zpc2libGUgPSBtYXRjaCB0b19maWx0ZXJlZCB3aXRoIHwgU29tZSBfIC0+IHRydWUgfCBOb25lIC0+IGZhbHNlIGluXG4gICAgICBsZXQgZm9yd2FyZCA9IGZyb21fZnVsbF9saXN0IDwgdG9fZnVsbF9saXN0IGluXG4gICAgICBpZiBmb3J3YXJkIHRoZW5cbiAgICAgICAgZm9yIGlfZnVsbCA9IGZyb21fZnVsbF9saXN0ICsgMSB0byB0b19mdWxsX2xpc3QgZG9cbiAgICAgICAgICBsZXQgZGVsdGEgPSBpZiB3YXNfdmlzaWJsZSB0aGVuICgtMSkgZWxzZSAwIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgaV9maWx0ZXJlZCA9IEludE1hcC5maW5kIGlfZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgIGxldCBuZXdfdmFsID0gaV9maWx0ZXJlZCArIGRlbHRhIGluXG4gICAgICAgICAgICBpbmRleCA6PSBJbnRNYXAuYWRkIChpX2Z1bGwgLSAxKSBuZXdfdmFsICFpbmRleFxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IE5vdF9mb3VuZCAtPiAoKVxuICAgICAgICBkb25lXG4gICAgICBlbHNlXG4gICAgICAgIGZvciBpX2Z1bGwgPSBmcm9tX2Z1bGxfbGlzdCAtIDEgZG93bnRvIHRvX2Z1bGxfbGlzdCBkb1xuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGRlbHRhID0gaWYgd2FzX3Zpc2libGUgdGhlbiAxIGVsc2UgMCBpblxuICAgICAgICAgICAgbGV0IGlfZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBpX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICBsZXQgbmV3X3ZhbCA9IGlfZmlsdGVyZWQgKyBkZWx0YSBpblxuICAgICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCAoaV9mdWxsICsgMSkgbmV3X3ZhbCAhaW5kZXhcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb3RfZm91bmQgLT4gKClcbiAgICAgICAgZG9uZTtcbiAgICAgIG1hdGNoIHRvX2ZpbHRlcmVkIHdpdGhcbiAgICAgIHwgU29tZSB0b19maWx0ZXJlZCAtPlxuICAgICAgICAgaW5kZXggOj0gSW50TWFwLmFkZCB0b19mdWxsX2xpc3QgdG9fZmlsdGVyZWQgIWluZGV4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgIGluZGV4IDo9IEludE1hcC5yZW1vdmUgdG9fZnVsbF9saXN0ICFpbmRleFxuICAgIGluXG5cbiAgICBsZXQgY29udmVydF9wID0gZnVuY3Rpb25cbiAgICAgIHwgSSAoaSwgeCkgLT5cbiAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgdGhlblxuICAgICAgICAgICBsZXQgbXlfaSA9IHVwZGF0ZV9pbmRleF9pbnNlcnQgaSB0cnVlIGluXG4gICAgICAgICAgIFtJIChteV9pLCB4KV1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgYmVnaW5cbiAgICAgICAgICAgICBpZ25vcmUgKHVwZGF0ZV9pbmRleF9pbnNlcnQgaSBmYWxzZSk7XG4gICAgICAgICAgICAgW11cbiAgICAgICAgICAgZW5kXG4gICAgICB8IFIgaSAtPlxuICAgICAgICAgbGV0IGkgPSBub3JtYWxpc2UgaSBpblxuICAgICAgICAgbGV0IHJldCA9IHRyeSBsZXQgaiA9IEludE1hcC5maW5kIGkgIWluZGV4IGluIFtSIGpdIHdpdGggfCBOb3RfZm91bmQgLT4gW10gaW5cbiAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9pbmRleF9yZW1vdmUgaSBpblxuICAgICAgICAgcmV0XG4gICAgICB8IFUgKGksIHgpIC0+XG4gICAgICAgICBsZXQgaSA9IG5vcm1hbGlzZSBpIGluXG4gICAgICAgICBiZWdpblxuICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICBsZXQgb2xkX2ogPSBJbnRNYXAuZmluZCBpICFpbmRleCBpblxuICAgICAgICAgICAgIGlmIHByZWQgeFxuICAgICAgICAgICAgIHRoZW4gW1UgKG9sZF9qLCB4KV1cbiAgICAgICAgICAgICBlbHNlICh1cGRhdGVfaW5kZXhfdXBkYXRlX2RlbGV0ZSBpOyBbUiBvbGRfal0pXG4gICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgfCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgaWYgcHJlZCB4XG4gICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICBsZXQgbmV3X2ogPSB1cGRhdGVfaW5kZXhfdXBkYXRlX2luc2VydCBpIGluXG4gICAgICAgICAgICAgICAgW0kgKG5ld19qLCB4KV1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICBlbmRcbiAgICAgIHwgWCAob3JpZ2luX2Z1bGwsIG9mZnNldF9mdWxsKSAtPlxuICAgICAgICAgbGV0IG9yaWdpbl9mdWxsID0gbm9ybWFsaXNlIG9yaWdpbl9mdWxsIGluXG4gICAgICAgICBsZXQgZGVzdF9mdWxsID0gb3JpZ2luX2Z1bGwgKyBvZmZzZXRfZnVsbCBpblxuICAgICAgICAgdHJ5XG4gICAgICAgICAgIGxldCBvcmlnaW5fZmlsdGVyZWQgPSBJbnRNYXAuZmluZCBvcmlnaW5fZnVsbCAhaW5kZXggaW5cbiAgICAgICAgICAgbGV0IGRlc3RfZmlsdGVyZWQgPVxuICAgICAgICAgICAgIHRyeSBJbnRNYXAuZmluZCBkZXN0X2Z1bGwgIWluZGV4XG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNtYWxsX29uZXMsIF8sIF8gPSBJbnRNYXAuc3BsaXQgb3JpZ2luX2Z1bGwgIWluZGV4IGluXG4gICAgICAgICAgICAgICAgaWYgSW50TWFwLmlzX2VtcHR5IHNtYWxsX29uZXNcbiAgICAgICAgICAgICAgICB0aGVuIDBcbiAgICAgICAgICAgICAgICBlbHNlIHNuZCAoSW50TWFwLm1heF9iaW5kaW5nIHNtYWxsX29uZXMpICsgMVxuICAgICAgICAgICBpblxuICAgICAgICAgICB1cGRhdGVfaW5kZXhfbW92ZSBvcmlnaW5fZnVsbCBkZXN0X2Z1bGwgKFNvbWUgZGVzdF9maWx0ZXJlZCk7XG4gICAgICAgICAgIGlmIGRlc3RfZmlsdGVyZWQgIT0gb3JpZ2luX2ZpbHRlcmVkXG4gICAgICAgICAgIHRoZW4gW1ggKG9yaWdpbl9maWx0ZXJlZCwgZGVzdF9maWx0ZXJlZCAtIG9yaWdpbl9maWx0ZXJlZCldXG4gICAgICAgICAgIGVsc2UgW11cbiAgICAgICAgIHdpdGhcbiAgICAgICAgIHwgTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAoKiBtb3ZpbmcgYW4gZWxlbWVudCB0aGF0IHdhcyBmaWx0ZXJlZCBvdXQgKilcbiAgICAgICAgICAgIHVwZGF0ZV9pbmRleF9tb3ZlIG9yaWdpbl9mdWxsIGRlc3RfZnVsbCBOb25lO1xuICAgICAgICAgICAgW11cbiAgICBpblxuXG4gICAgbGV0IGZpbHRlcl9lID0gZnVuY3Rpb25cbiAgICAgIHwgU2V0IGwgLT4gU2V0IChmaWx0ZXJfbGlzdCBsKVxuICAgICAgfCBQYXRjaCBwIC0+XG4gICAgICAgICBQYXRjaCAoTGlzdC5jb25jYXQgKExpc3QubWFwIGNvbnZlcnRfcCBwKSlcbiAgICBpblxuICAgIGxldCBlID0gUmVhY3QuRS5tYXAgZmlsdGVyX2UgKGV2ZW50IGwpIGluXG4gICAgZnJvbV9ldmVudCAoZmlsdGVyX2xpc3QgKHZhbHVlIGwpKSBlXG5cbiAgbW9kdWxlIEludFNldCA9IFNldC5NYWtlIChJbnQpXG5cbiAgbGV0IGZvcl9hbGwgZm4gZGF0YSA9XG4gICAgbGV0IG1heWJlX3VwZGF0ZSBhY2MgaSB2ID0gaWYgZm4gdiB0aGVuIGFjYyBlbHNlIEludFNldC5hZGQgaSBhY2MgaW5cbiAgICBsZXQgaW5pdCA9XG4gICAgICBsZXQgcmVjIGZvbGQgaSBhY2MgPSBmdW5jdGlvblxuICAgICAgICB8IHYgOjogdGwgLT4gZm9sZCAoaSArIDEpIChtYXliZV91cGRhdGUgYWNjIGkgdikgdGxcbiAgICAgICAgfCBbXSAtPiBhY2NcbiAgICAgIGluXG4gICAgICBmb2xkIDAgSW50U2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgdXBkYXRlX2lkeF9hZnRlciBpIGYgYWNjID1cbiAgICAgIEludFNldC5tYXAgKGZ1biBpJyAtPiBpZiBpJyA+PSBpIHRoZW4gZiBpJyAxIGVsc2UgaScpIGFjY1xuICAgIGluXG4gICAgbGV0IGYgPSBmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICB8IFNldCB4IC0+IGluaXQgeFxuICAgICAgfCBQYXRjaCB1cGRhdGVzIC0+XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICB8IFggKGksIGknKSAtPlxuICAgICAgICAgICAgICAgaWYgSW50U2V0Lm1lbSBpIGFjYyA9IEludFNldC5tZW0gaScgYWNjXG4gICAgICAgICAgICAgICB0aGVuIGFjY1xuICAgICAgICAgICAgICAgZWxzZSBpZiBJbnRTZXQubWVtIGkgYWNjXG4gICAgICAgICAgICAgICB0aGVuIEludFNldC5hZGQgaScgKEludFNldC5yZW1vdmUgaSBhY2MpXG4gICAgICAgICAgICAgICBlbHNlIEludFNldC5hZGQgaSAoSW50U2V0LnJlbW92ZSBpJyBhY2MpXG4gICAgICAgICAgICAgfCBSIGkgLT5cbiAgICAgICAgICAgICAgIHVwZGF0ZV9pZHhfYWZ0ZXIgaSAoLSkgKEludFNldC5yZW1vdmUgaSBhY2MpXG4gICAgICAgICAgICAgfCBJIChpLCB2KSAtPlxuICAgICAgICAgICAgICAgbGV0IGFjYyA9IHVwZGF0ZV9pZHhfYWZ0ZXIgaSAoKykgYWNjIGluXG4gICAgICAgICAgICAgICBtYXliZV91cGRhdGUgYWNjIGkgdlxuICAgICAgICAgICAgIHwgVSAoaSwgdikgLT5cbiAgICAgICAgICAgICAgIG1heWJlX3VwZGF0ZSAoSW50U2V0LnJlbW92ZSBpIGFjYykgaSB2KVxuICAgICAgICAgIGFjY1xuICAgICAgICAgIHVwZGF0ZXNcbiAgICBpblxuICAgIFJlYWN0LlMuZm9sZCBmIChpbml0ICh2YWx1ZSBkYXRhKSkgKGV2ZW50IGRhdGEpXG4gICAgfD4gUmVhY3QuUy5tYXAgSW50U2V0LmlzX2VtcHR5XG5cbmVuZFxuXG5tb2R1bGUgUk1hcChNIDogTWFwLlMpID0gc3RydWN0XG5cbiAgbW9kdWxlIERhdGEgPSBzdHJ1Y3RcblxuICAgIHR5cGUgJ2EgZGF0YSA9ICdhIE0udFxuXG4gICAgdHlwZSAnYSBwID0gW2BBZGQgb2YgKE0ua2V5ICogJ2EpIHwgYERlbCBvZiBNLmtleV1cblxuICAgIHR5cGUgJ2EgcGF0Y2ggPSAnYSBwIGxpc3RcblxuICAgIGxldCBtZXJnZV9wIHAgcyA9XG4gICAgICBtYXRjaCBwIHdpdGhcbiAgICAgIHwgYEFkZCAoayxhKSAtPiBNLmFkZCBrIGEgc1xuICAgICAgfCBgRGVsIGsgLT4gTS5yZW1vdmUgayBzXG5cbiAgICBsZXQgbWVyZ2UgcCBhY2MgPSBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBwIC0+IG1lcmdlX3AgcCBhY2MpIGFjYyBwXG5cbiAgICBsZXQgbWFwX3AgZiA9IGZ1bmN0aW9uXG4gICAgICB8IGBBZGQgKGssYSkgLT4gYEFkZCAoayxmIGEpXG4gICAgICB8IGBEZWwgayAtPiBgRGVsIGtcblxuICAgIGxldCBtYXBfcGF0Y2ggZiA9IExpc3QubWFwIChtYXBfcCBmKVxuXG4gICAgbGV0IG1hcF9kYXRhIGYgZCA9IE0ubWFwIGYgZFxuXG4gICAgbGV0IGVtcHR5ID0gTS5lbXB0eVxuXG4gICAgbGV0IGVxdWFsIGYgPSBNLmVxdWFsIGZcblxuICAgIGxldCBkaWZmIH5lcSB4IHkgPVxuICAgICAgbGV0IG0gPVxuICAgICAgICBsZXQgZyBfa2V5IHYgdyA9XG4gICAgICAgICAgbWF0Y2ggdiwgdyB3aXRoXG4gICAgICAgICAgfCBTb21lIHYsIFNvbWUgdyB3aGVuIGVxIHYgdyAtPlxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIHwgU29tZSBfLCBTb21lIHcgLT5cbiAgICAgICAgICAgIFNvbWUgKGBVIHcpXG4gICAgICAgICAgfCBTb21lIF8sIE5vbmUgLT5cbiAgICAgICAgICAgIFNvbWUgYERcbiAgICAgICAgICB8IE5vbmUsIFNvbWUgdiAtPlxuICAgICAgICAgICAgU29tZSAoYEEgdilcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT5cbiAgICAgICAgICAgIE5vbmVcbiAgICAgICAgaW5cbiAgICAgICAgTS5tZXJnZSBnIHggeVxuICAgICAgYW5kIGcga2V5IHggYWNjID1cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgYFUgdiAtPlxuICAgICAgICAgIGBEZWwga2V5IDo6IGBBZGQgKGtleSwgdikgOjogYWNjXG4gICAgICAgIHwgYEQgLT5cbiAgICAgICAgICBgRGVsIGtleSA6OiBhY2NcbiAgICAgICAgfCBgQSB2IC0+XG4gICAgICAgICAgYEFkZCAoa2V5LCB2KSA6OiBhY2NcbiAgICAgIGFuZCBhY2MgPSBbXSBpblxuICAgICAgTGlzdC5yZXYgKE0uZm9sZCBnIG0gYWNjKVxuXG4gIGVuZFxuXG4gIGluY2x1ZGUgTWFrZShEYXRhKVxuXG4gIGxldCBmaWx0ZXIgcHJlZCBtID1cblxuICAgIGxldCBjb252ZXJ0X3AgPSBmdW5jdGlvblxuICAgICAgfCBgQWRkIChrLHYpIC0+XG4gICAgICAgICBpZiBwcmVkIGsgdlxuICAgICAgICAgdGhlbiBbYEFkZCAoayx2KV1cbiAgICAgICAgIGVsc2UgW11cbiAgICAgIHwgYERlbCBrIC0+IFtgRGVsIGtdXG4gICAgaW5cblxuICAgIGxldCBmaWx0ZXJfZSA9IGZ1bmN0aW9uXG4gICAgICB8IFNldCBtIC0+IFNldCAoTS5maWx0ZXIgcHJlZCBtKVxuICAgICAgfCBQYXRjaCBwIC0+IFBhdGNoIChMaXN0LmNvbmNhdCAoTGlzdC5tYXAgY29udmVydF9wIHApKVxuICAgIGluXG5cbiAgICBsZXQgZSA9IFJlYWN0LkUubWFwIGZpbHRlcl9lIChldmVudCBtKSBpblxuICAgIGZyb21fZXZlbnQgKE0uZmlsdGVyIHByZWQgKHZhbHVlIG0pKSBlXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLkltcG9ydCAqKVxubW9kdWxlIEltcG9ydCA9IEpzX29mX29jYW1sX3R5eG1sX19JbXBvcnRcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfdHl4bWwuVHl4bWxfY2FzdCAqKVxubW9kdWxlIFR5eG1sX2Nhc3QgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfY2FzdFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF90eXhtbC5UeXhtbF9jYXN0X3NpZ3MgKilcbm1vZHVsZSBUeXhtbF9jYXN0X3NpZ3MgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfY2FzdF9zaWdzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX3R5eG1sLlR5eG1sX2pzICopXG5tb2R1bGUgVHl4bWxfanMgPSBKc19vZl9vY2FtbF90eXhtbF9fVHl4bWxfanNcblxubW9kdWxlIEpzX29mX29jYW1sX3R5eG1sX18gPSBzdHJ1Y3QgZW5kXG5bQEBkZXByZWNhdGVkIFwidGhpcyBtb2R1bGUgaXMgc2hhZG93ZWRcIl1cbiIsIigqIEpzX29mX29jYW1sXG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5tb2R1bGUgUG9seSA9IHN0cnVjdFxuICBleHRlcm5hbCAoIDwgKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVsZXNzdGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA8PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3NlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA8PiApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJW5vdGVxdWFsXCJcblxuICBleHRlcm5hbCAoID0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgKCA+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlZ3JlYXRlcnRoYW5cIlxuXG4gIGV4dGVybmFsICggPj0gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVyZXF1YWxcIlxuXG4gIGV4dGVybmFsIGNvbXBhcmUgOiAnYSAtPiAnYSAtPiBpbnQgPSBcIiVjb21wYXJlXCJcblxuICBleHRlcm5hbCBlcXVhbCA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVlcXVhbFwiXG5lbmRcblxubW9kdWxlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmUgPSBzdHJ1Y3RcbiAgbGV0ICggPCApICh4IDogaW50KSB5ID0geCA8IHlcblxuICBsZXQgKCA8PSApICh4IDogaW50KSB5ID0geCA8PSB5XG5cbiAgbGV0ICggPD4gKSAoeCA6IGludCkgeSA9IHggPD4geVxuXG4gIGxldCAoID0gKSAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0ICggPiApICh4IDogaW50KSB5ID0geCA+IHlcblxuICBsZXQgKCA+PSApICh4IDogaW50KSB5ID0geCA+PSB5XG5cbiAgbGV0IGNvbXBhcmUgKHggOiBpbnQpIHkgPSBjb21wYXJlIHggeVxuXG4gIGxldCBlcXVhbCAoeCA6IGludCkgeSA9IHggPSB5XG5cbiAgbGV0IG1heCAoeCA6IGludCkgeSA9IGlmIHggPj0geSB0aGVuIHggZWxzZSB5XG5cbiAgbGV0IG1pbiAoeCA6IGludCkgeSA9IGlmIHggPD0geSB0aGVuIHggZWxzZSB5XG5lbmRcblxubW9kdWxlIFN0cmluZyA9IHN0cnVjdFxuICBpbmNsdWRlIFN0cmluZ1xuXG4gIGxldCBlcXVhbCAoeCA6IHN0cmluZykgKHkgOiBzdHJpbmcpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5tb2R1bGUgQ2hhciA9IHN0cnVjdFxuICBpbmNsdWRlIENoYXJcblxuICBsZXQgZXF1YWwgKHggOiBjaGFyKSAoeSA6IGNoYXIpID0gUG9seS5lcXVhbCB4IHlcbmVuZFxuXG5pbmNsdWRlIEludF9yZXBsYWNlX3BvbHltb3JwaGljX2NvbXBhcmVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5tb2R1bGUgTWFrZVRvIChDIDogc2lnXG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGVsdCA6ICdhIGVsdCAtPiBEb20ubm9kZSBKcy50XG5lbmQpIDogVHl4bWxfY2FzdF9zaWdzLlRPIHdpdGggdHlwZSAnYSBlbHQgPSAnYSBDLmVsdCA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEMuZWx0XG5cbiAgbGV0IHJlYnVpbGRfbm9kZSBfIHggPSBKcy5VbnNhZmUuY29lcmNlIChDLmVsdCB4KVxuXG4gIGxldCBvZl9lbGVtZW50IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VsZW1lbnRcIiBlbHRcblxuICBsZXQgb2Zfbm9kZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ub2RlXCIgZWx0XG5cbiAgbGV0IG9mX3BjZGF0YSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9wY2RhdGFcIiBlbHRcblxuICBsZXQgb2ZfaHRtbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9odG1sXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZFwiIGVsdFxuXG4gIGxldCBvZl9saW5rIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpbmtcIiBlbHRcblxuICBsZXQgb2ZfdGl0bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGl0bGVcIiBlbHRcblxuICBsZXQgb2ZfbWV0YSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZXRhXCIgZWx0XG5cbiAgbGV0IG9mX2Jhc2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmFzZVwiIGVsdFxuXG4gIGxldCBvZl9zdHlsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdHlsZVwiIGVsdFxuXG4gIGxldCBvZl9ib2R5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JvZHlcIiBlbHRcblxuICBsZXQgb2ZfZm9ybSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9mb3JtXCIgZWx0XG5cbiAgbGV0IG9mX29wdGdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX29wdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRpb25cIiBlbHRcblxuICBsZXQgb2Zfc2VsZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlbGVjdFwiIGVsdFxuXG4gIGxldCBvZl9pbnB1dCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbnB1dFwiIGVsdFxuXG4gIGxldCBvZl90ZXh0YXJlYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90ZXh0YXJlYVwiIGVsdFxuXG4gIGxldCBvZl9idXR0b24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYnV0dG9uXCIgZWx0XG5cbiAgbGV0IG9mX2xhYmVsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xhYmVsXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZWxkc2V0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZWxkc2V0XCIgZWx0XG5cbiAgbGV0IG9mX2xlZ2VuZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sZWdlbmRcIiBlbHRcblxuICBsZXQgb2ZfdWwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdWxcIiBlbHRcblxuICBsZXQgb2Zfb2wgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb2xcIiBlbHRcblxuICBsZXQgb2ZfZGwgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGxcIiBlbHRcblxuICBsZXQgb2ZfbGkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlcIiBlbHRcblxuICBsZXQgb2ZfZGl2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RpdlwiIGVsdFxuXG4gIGxldCBvZl9wIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BcIiBlbHRcblxuICBsZXQgb2ZfaGVhZGluZyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9oZWFkaW5nXCIgZWx0XG5cbiAgbGV0IG9mX2Jsb2NrcXVvdGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmxvY2txdW90ZVwiIGVsdFxuXG4gIGxldCBvZl9wcmUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcHJlXCIgZWx0XG5cbiAgbGV0IG9mX2JyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JyXCIgZWx0XG5cbiAgbGV0IG9mX2hyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hyXCIgZWx0XG5cbiAgbGV0IG9mX2lucyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbnNcIiBlbHRcblxuICBsZXQgb2ZfZGVsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RlbFwiIGVsdFxuXG4gIGxldCBvZl9hIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FcIiBlbHRcblxuICBsZXQgb2ZfaW1nIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ltZ1wiIGVsdFxuXG4gIGxldCBvZl9vYmplY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb2JqZWN0XCIgZWx0XG5cbiAgbGV0IG9mX3BhcmFtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFtXCIgZWx0XG5cbiAgbGV0IG9mX2FyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJlYVwiIGVsdFxuXG4gIGxldCBvZl9tYXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFwXCIgZWx0XG5cbiAgbGV0IG9mX3NjcmlwdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2ZfdGQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGRcIiBlbHRcblxuICBsZXQgb2ZfdHIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdHJcIiBlbHRcblxuICBsZXQgb2ZfY29sIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvbFwiIGVsdFxuXG4gIGxldCBvZl90Zm9vdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90Zm9vdFwiIGVsdFxuXG4gIGxldCBvZl90aGVhZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aGVhZFwiIGVsdFxuXG4gIGxldCBvZl90Ym9keSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90Ym9keVwiIGVsdFxuXG4gIGxldCBvZl9jYXB0aW9uIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfdGFibGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVcIiBlbHRcblxuICBsZXQgb2ZfY2FudmFzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NhbnZhc1wiIGVsdFxuXG4gIGxldCBvZl9pZnJhbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaWZyYW1lXCIgZWx0XG5cbiAgbGV0IG9mX2F1ZGlvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2F1ZGlvXCIgZWx0XG5cbiAgbGV0IG9mX3ZpZGVvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZpZGVvXCIgZWx0XG5cbiAgKCogRG9tX2h0bWwuaGVhZGluZ0VsZW1lbnQgKilcblxuICBsZXQgb2ZfaDEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDFcIiBlbHRcblxuICBsZXQgb2ZfaDIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDJcIiBlbHRcblxuICBsZXQgb2ZfaDMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDNcIiBlbHRcblxuICBsZXQgb2ZfaDQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDRcIiBlbHRcblxuICBsZXQgb2ZfaDUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDVcIiBlbHRcblxuICBsZXQgb2ZfaDYgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaDZcIiBlbHRcblxuICAoKiBEb21faHRtbC5lbGVtZW50ICopXG5cbiAgbGV0IG9mX2FiYnIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYWJiclwiIGVsdFxuXG4gIGxldCBvZl9hZGRyZXNzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FkZHJlc3NcIiBlbHRcblxuICBsZXQgb2ZfYXJ0aWNsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9hcnRpY2xlXCIgZWx0XG5cbiAgbGV0IG9mX2FzaWRlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FzaWRlXCIgZWx0XG5cbiAgbGV0IG9mX2IgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYlwiIGVsdFxuXG4gIGxldCBvZl9iZG8gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmRvXCIgZWx0XG5cbiAgbGV0IG9mX2NpdGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY2l0ZVwiIGVsdFxuXG4gIGxldCBvZl9jb2RlIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NvZGVcIiBlbHRcblxuICBsZXQgb2ZfY29sZ3JvdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfY29sZ3JvdXBcIiBlbHRcblxuICBsZXQgb2ZfY29tbWFuZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9jb21tYW5kXCIgZWx0XG5cbiAgbGV0IG9mX2RhdGFsaXN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RhdGFsaXN0XCIgZWx0XG5cbiAgbGV0IG9mX2RkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RkXCIgZWx0XG5cbiAgbGV0IG9mX2RldGFpbHMgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGV0YWlsc1wiIGVsdFxuXG4gIGxldCBvZl9kZm4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZGZuXCIgZWx0XG5cbiAgbGV0IG9mX2R0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2R0XCIgZWx0XG5cbiAgbGV0IG9mX2VtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VtXCIgZWx0XG5cbiAgbGV0IG9mX2VtYmVkIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VtYmVkXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZ2NhcHRpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZmlnY2FwdGlvblwiIGVsdFxuXG4gIGxldCBvZl9maWd1cmUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZmlndXJlXCIgZWx0XG5cbiAgbGV0IG9mX2Zvb3RlciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9mb290ZXJcIiBlbHRcblxuICBsZXQgb2ZfaGVhZGVyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hlYWRlclwiIGVsdFxuXG4gIGxldCBvZl9oZ3JvdXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX2kgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaVwiIGVsdFxuXG4gIGxldCBvZl9rYmQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfa2JkXCIgZWx0XG5cbiAgbGV0IG9mX2tleWdlbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9rZXlnZW5cIiBlbHRcblxuICBsZXQgb2ZfbWFpbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tYWluXCIgZWx0XG5cbiAgbGV0IG9mX21hcmsgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFya1wiIGVsdFxuXG4gIGxldCBvZl9tZW51IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX21lbnVcIiBlbHRcblxuICBsZXQgb2ZfbWV0ZXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWV0ZXJcIiBlbHRcblxuICBsZXQgb2ZfbmF2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX25hdlwiIGVsdFxuXG4gIGxldCBvZl9ub3NjcmlwdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ub3NjcmlwdFwiIGVsdFxuXG4gIGxldCBvZl9vdXRwdXQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb3V0cHV0XCIgZWx0XG5cbiAgbGV0IG9mX3Byb2dyZXNzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3Byb2dyZXNzXCIgZWx0XG5cbiAgbGV0IG9mX3EgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcVwiIGVsdFxuXG4gIGxldCBvZl9ycCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ycFwiIGVsdFxuXG4gIGxldCBvZl9ydCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9ydFwiIGVsdFxuXG4gIGxldCBvZl9ydWJ5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3J1YnlcIiBlbHRcblxuICBsZXQgb2Zfc2FtcCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zYW1wXCIgZWx0XG5cbiAgbGV0IG9mX3NlY3Rpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc2VjdGlvblwiIGVsdFxuXG4gIGxldCBvZl9zbWFsbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zbWFsbFwiIGVsdFxuXG4gIGxldCBvZl9zb3VyY2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc291cmNlXCIgZWx0XG5cbiAgbGV0IG9mX3NwYW4gZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3BhblwiIGVsdFxuXG4gIGxldCBvZl9zdHJvbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfc3Ryb25nXCIgZWx0XG5cbiAgbGV0IG9mX3N1YiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdWJcIiBlbHRcblxuICBsZXQgb2Zfc3VtbWFyeSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdW1tYXJ5XCIgZWx0XG5cbiAgbGV0IG9mX3N1cCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdXBcIiBlbHRcblxuICBsZXQgb2ZfdGggZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGhcIiBlbHRcblxuICBsZXQgb2ZfdGltZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90aW1lXCIgZWx0XG5cbiAgbGV0IG9mX3UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdVwiIGVsdFxuXG4gIGxldCBvZl92YXIgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdmFyXCIgZWx0XG5cbiAgbGV0IG9mX3diciBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl93YnJcIiBlbHRcbmVuZFxuXG5tb2R1bGUgTWFrZU9mIChDIDogc2lnXG4gIHR5cGUgJ2EgZWx0XG5cbiAgdmFsIGVsdCA6IERvbS5ub2RlIEpzLnQgLT4gJ2EgZWx0XG5lbmQpIDogVHl4bWxfY2FzdF9zaWdzLk9GIHdpdGggdHlwZSAnYSBlbHQgPSAnYSBDLmVsdCA9IHN0cnVjdFxuICB0eXBlICdhIGVsdCA9ICdhIEMuZWx0XG5cbiAgbGV0IHJlYnVpbGRfbm9kZSBfIHggPSBDLmVsdCAoSnMuVW5zYWZlLmNvZXJjZSB4KVxuXG4gIGxldCBvZl9lbGVtZW50IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2VsZW1lbnRcIiBlbHRcblxuICBsZXQgb2ZfaHRtbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9odG1sXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZFwiIGVsdFxuXG4gIGxldCBvZl9saW5rIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xpbmtcIiBlbHRcblxuICBsZXQgb2ZfdGl0bGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGl0bGVcIiBlbHRcblxuICBsZXQgb2ZfbWV0YSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tZXRhXCIgZWx0XG5cbiAgbGV0IG9mX2Jhc2UgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYmFzZVwiIGVsdFxuXG4gIGxldCBvZl9zdHlsZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zdHlsZVwiIGVsdFxuXG4gIGxldCBvZl9ib2R5IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JvZHlcIiBlbHRcblxuICBsZXQgb2ZfZm9ybSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9mb3JtXCIgZWx0XG5cbiAgbGV0IG9mX29wdEdyb3VwIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX29wdEdyb3VwXCIgZWx0XG5cbiAgbGV0IG9mX29wdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9vcHRpb25cIiBlbHRcblxuICBsZXQgb2Zfc2VsZWN0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3NlbGVjdFwiIGVsdFxuXG4gIGxldCBvZl9pbnB1dCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbnB1dFwiIGVsdFxuXG4gIGxldCBvZl90ZXh0QXJlYSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90ZXh0QXJlYVwiIGVsdFxuXG4gIGxldCBvZl9idXR0b24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYnV0dG9uXCIgZWx0XG5cbiAgbGV0IG9mX2xhYmVsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2xhYmVsXCIgZWx0XG5cbiAgbGV0IG9mX2ZpZWxkU2V0IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2ZpZWxkU2V0XCIgZWx0XG5cbiAgbGV0IG9mX2xlZ2VuZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9sZWdlbmRcIiBlbHRcblxuICBsZXQgb2ZfdUxpc3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdUxpc3RcIiBlbHRcblxuICBsZXQgb2Zfb0xpc3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb0xpc3RcIiBlbHRcblxuICBsZXQgb2ZfZExpc3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZExpc3RcIiBlbHRcblxuICBsZXQgb2ZfbGkgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbGlcIiBlbHRcblxuICBsZXQgb2ZfZGl2IGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2RpdlwiIGVsdFxuXG4gIGxldCBvZl9wYXJhZ3JhcGggZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcGFyYWdyYXBoXCIgZWx0XG5cbiAgbGV0IG9mX2hlYWRpbmcgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaGVhZGluZ1wiIGVsdFxuXG4gIGxldCBvZl9xdW90ZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9xdW90ZVwiIGVsdFxuXG4gIGxldCBvZl9wcmUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfcHJlXCIgZWx0XG5cbiAgbGV0IG9mX2JyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2JyXCIgZWx0XG5cbiAgbGV0IG9mX2hyIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2hyXCIgZWx0XG5cbiAgbGV0IG9mX21vZCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9tb2RcIiBlbHRcblxuICBsZXQgb2ZfYW5jaG9yIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2FuY2hvclwiIGVsdFxuXG4gIGxldCBvZl9pbWFnZSBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9pbWFnZVwiIGVsdFxuXG4gIGxldCBvZl9vYmplY3QgZWx0ID0gcmVidWlsZF9ub2RlIFwib2Zfb2JqZWN0XCIgZWx0XG5cbiAgbGV0IG9mX3BhcmFtIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3BhcmFtXCIgZWx0XG5cbiAgbGV0IG9mX2FyZWEgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfYXJlYVwiIGVsdFxuXG4gIGxldCBvZl9tYXAgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfbWFwXCIgZWx0XG5cbiAgbGV0IG9mX3NjcmlwdCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl9zY3JpcHRcIiBlbHRcblxuICBsZXQgb2ZfZW1iZWQgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfZW1iZWRcIiBlbHRcblxuICBsZXQgb2ZfdGFibGVDZWxsIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3RhYmxlQ2VsbFwiIGVsdFxuXG4gIGxldCBvZl90YWJsZVJvdyBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZVJvd1wiIGVsdFxuXG4gIGxldCBvZl90YWJsZUNvbCBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNvbFwiIGVsdFxuXG4gIGxldCBvZl90YWJsZVNlY3Rpb24gZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVTZWN0aW9uXCIgZWx0XG5cbiAgbGV0IG9mX3RhYmxlQ2FwdGlvbiBlbHQgPSByZWJ1aWxkX25vZGUgXCJvZl90YWJsZUNhcHRpb25cIiBlbHRcblxuICBsZXQgb2ZfdGFibGUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfdGFibGVcIiBlbHRcblxuICBsZXQgb2ZfY2FudmFzIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2NhbnZhc1wiIGVsdFxuXG4gIGxldCBvZl9pRnJhbWUgZWx0ID0gcmVidWlsZF9ub2RlIFwib2ZfaUZyYW1lXCIgZWx0XG5cbiAgbGV0IG9mX2F1ZGlvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX2F1ZGlvXCIgZWx0XG5cbiAgbGV0IG9mX3ZpZGVvIGVsdCA9IHJlYnVpbGRfbm9kZSBcIm9mX3ZpZGVvXCIgZWx0XG5lbmRcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTQgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5sZXQganNfc3RyaW5nX29mX2Zsb2F0IGYgPSAoSnMubnVtYmVyX29mX2Zsb2F0IGYpIyN0b1N0cmluZ1xuXG5sZXQganNfc3RyaW5nX29mX2ludCBpID0gKEpzLm51bWJlcl9vZl9mbG9hdCAoZmxvYXRfb2ZfaW50IGkpKSMjdG9TdHJpbmdcblxubW9kdWxlIHR5cGUgWE1MID1cbiAgWG1sX3NpZ3MuVFxuICAgIHdpdGggdHlwZSB1cmkgPSBzdHJpbmdcbiAgICAgYW5kIHR5cGUgZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gYm9vbFxuICAgICBhbmQgdHlwZSBtb3VzZV9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwubW91c2VFdmVudCBKcy50IC0+IGJvb2xcbiAgICAgYW5kIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmtleWJvYXJkRXZlbnQgSnMudCAtPiBib29sXG4gICAgIGFuZCB0eXBlIGVsdCA9IERvbS5ub2RlIEpzLnRcblxuY2xhc3MgdHlwZSBbJ2EsICdiXSB3ZWFrTWFwID0gb2JqZWN0XG4gIG1ldGhvZCBzZXQgOiAnYSAtPiAnYiAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgZ2V0IDogJ2EgLT4gJ2IgSnMuT3B0ZGVmLnQgSnMubWV0aFxuZW5kXG5cbmxldCByZXRhaW4gPVxuICBsZXQgbWFwIDogKERvbS5ub2RlIEpzLnQsIE9iai50IEpzLmpzX2FycmF5IEpzLnQpIHdlYWtNYXAgSnMudCA9XG4gICAgbGV0IHdlYWtNYXAgPSBKcy5VbnNhZmUuZ2xvYmFsIyMuX1dlYWtNYXAgaW5cbiAgICBuZXclanMgd2Vha01hcFxuICBpblxuICBmdW4gKHR5cGUgYSkgbm9kZSB+KGtlZXBtZSA6IGEpIC0+XG4gICAgbGV0IHByZXYgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2UgKG1hcCMjZ2V0IG5vZGUpIChmdW4gKCkgLT4gbmV3JWpzIEpzLmFycmF5X2VtcHR5KSAoZnVuIHggLT4geClcbiAgICBpblxuICAgIGxldCAoXyA6IGludCkgPSBwcmV2IyNwdXNoIChPYmoucmVwciBrZWVwbWUpIGluXG4gICAgbWFwIyNzZXQgbm9kZSBwcmV2XG5cbm1vZHVsZSBYbWwgPSBzdHJ1Y3RcbiAgbW9kdWxlIFcgPSBYbWxfd3JhcC5Ob1dyYXBcblxuICB0eXBlICdhIHdyYXAgPSAnYVxuXG4gIHR5cGUgJ2EgbGlzdF93cmFwID0gJ2EgbGlzdFxuXG4gIHR5cGUgdXJpID0gc3RyaW5nXG5cbiAgbGV0IHVyaV9vZl9zdHJpbmcgcyA9IHNcblxuICBsZXQgc3RyaW5nX29mX3VyaSBzID0gc1xuXG4gIHR5cGUgYW5hbWUgPSBzdHJpbmdcblxuICB0eXBlIGV2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5ldmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIG1vdXNlX2V2ZW50X2hhbmRsZXIgPSBEb21faHRtbC5tb3VzZUV2ZW50IEpzLnQgLT4gYm9vbFxuXG4gIHR5cGUga2V5Ym9hcmRfZXZlbnRfaGFuZGxlciA9IERvbV9odG1sLmtleWJvYXJkRXZlbnQgSnMudCAtPiBib29sXG5cbiAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gRG9tX2h0bWwudG91Y2hFdmVudCBKcy50IC0+IGJvb2xcblxuICB0eXBlIGF0dHJpYl9rID1cbiAgICB8IEV2ZW50IG9mIGV2ZW50X2hhbmRsZXJcbiAgICB8IE1vdXNlRXZlbnQgb2YgbW91c2VfZXZlbnRfaGFuZGxlclxuICAgIHwgS2V5Ym9hcmRFdmVudCBvZiBrZXlib2FyZF9ldmVudF9oYW5kbGVyXG4gICAgfCBUb3VjaEV2ZW50IG9mIHRvdWNoX2V2ZW50X2hhbmRsZXJcbiAgICB8IEF0dHIgb2YgSnMuanNfc3RyaW5nIEpzLnQgb3B0aW9uIFJlYWN0LlMudFxuXG4gIHR5cGUgYXR0cmliID0gYW5hbWUgKiBhdHRyaWJfa1xuXG4gIGxldCBhdHRyIG5hbWUgdiA9IG5hbWUsIEF0dHIgKFJlYWN0LlMuY29uc3QgKFNvbWUgdikpXG5cbiAgbGV0IGZsb2F0X2F0dHJpYiBuYW1lIHZhbHVlIDogYXR0cmliID0gYXR0ciBuYW1lIChqc19zdHJpbmdfb2ZfZmxvYXQgdmFsdWUpXG5cbiAgbGV0IGludF9hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoanNfc3RyaW5nX29mX2ludCB2YWx1ZSlcblxuICBsZXQgc3RyaW5nX2F0dHJpYiBuYW1lIHZhbHVlID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgdmFsdWUpXG5cbiAgbGV0IHNwYWNlX3NlcF9hdHRyaWIgbmFtZSB2YWx1ZXMgPSBhdHRyIG5hbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiB2YWx1ZXMpKVxuXG4gIGxldCBjb21tYV9zZXBfYXR0cmliIG5hbWUgdmFsdWVzID0gYXR0ciBuYW1lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIsXCIgdmFsdWVzKSlcblxuICBsZXQgZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiBldmVudF9oYW5kbGVyKSA9IG5hbWUsIEV2ZW50IHZhbHVlXG5cbiAgbGV0IG1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgKHZhbHVlIDogbW91c2VfZXZlbnRfaGFuZGxlcikgPVxuICAgIG5hbWUsIE1vdXNlRXZlbnQgdmFsdWVcblxuICBsZXQga2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSAodmFsdWUgOiBrZXlib2FyZF9ldmVudF9oYW5kbGVyKSA9XG4gICAgbmFtZSwgS2V5Ym9hcmRFdmVudCB2YWx1ZVxuXG4gIGxldCB0b3VjaF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lICh2YWx1ZSA6IHRvdWNoX2V2ZW50X2hhbmRsZXIpID1cbiAgICBuYW1lLCBUb3VjaEV2ZW50IHZhbHVlXG5cbiAgbGV0IHVyaV9hdHRyaWIgbmFtZSB2YWx1ZSA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIHZhbHVlKVxuXG4gIGxldCB1cmlzX2F0dHJpYiBuYW1lIHZhbHVlcyA9IGF0dHIgbmFtZSAoSnMuc3RyaW5nIChTdHJpbmcuY29uY2F0IFwiIFwiIHZhbHVlcykpXG5cbiAgKCoqIEVsZW1lbnQgKilcblxuICB0eXBlIGVsdCA9IERvbS5ub2RlIEpzLnRcblxuICB0eXBlIGVuYW1lID0gc3RyaW5nXG5cbiAgbGV0IGVtcHR5ICgpID0gKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVEb2N1bWVudEZyYWdtZW50IDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IGNvbW1lbnQgYyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlQ29tbWVudCAoSnMuc3RyaW5nIGMpIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IHBjZGF0YSBzID0gKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVUZXh0Tm9kZSAoSnMuc3RyaW5nIHMpIDo+IERvbS5ub2RlIEpzLnQpXG5cbiAgbGV0IGVuY29kZWRwY2RhdGEgcyA9IChEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBzKSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBlbnRpdHkgPVxuICAgIGxldCBzdHJpbmdfZm9sZCBzIH5wb3MgfmluaXQgfmYgPVxuICAgICAgbGV0IHIgPSByZWYgaW5pdCBpblxuICAgICAgZm9yIGkgPSBwb3MgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgICBsZXQgYyA9IHMuW2ldIGluXG4gICAgICAgIHIgOj0gZiAhciBjXG4gICAgICBkb25lO1xuICAgICAgIXJcbiAgICBpblxuICAgIGxldCBpbnZhbGlkX2VudGl0eSBlID0gZmFpbHdpdGggKFByaW50Zi5zcHJpbnRmIFwiSW52YWxpZCBlbnRpdHkgJVNcIiBlKSBpblxuICAgIGxldCBpbnRfb2ZfY2hhciA9IGZ1bmN0aW9uXG4gICAgICB8ICcwJyAuLiAnOScgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnMCcpXG4gICAgICB8ICdhJyAuLiAnZicgYXMgeCAtPiBTb21lIChDaGFyLmNvZGUgeCAtIENoYXIuY29kZSAnYScgKyAxMClcbiAgICAgIHwgJ0EnIC4uICdGJyBhcyB4IC0+IFNvbWUgKENoYXIuY29kZSB4IC0gQ2hhci5jb2RlICdBJyArIDEwKVxuICAgICAgfCBfIC0+IE5vbmVcbiAgICBpblxuICAgIGxldCBwYXJzZV9pbnQgfnBvcyB+YmFzZSBlID1cbiAgICAgIHN0cmluZ19mb2xkIGUgfnBvcyB+aW5pdDowIH5mOihmdW4gYWNjIHggLT5cbiAgICAgICAgICBtYXRjaCBpbnRfb2ZfY2hhciB4IHdpdGhcbiAgICAgICAgICB8IFNvbWUgZCB3aGVuIGQgPCBiYXNlIC0+IChhY2MgKiBiYXNlKSArIGRcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT4gaW52YWxpZF9lbnRpdHkgZSlcbiAgICBpblxuICAgIGxldCBpc19hbHBoYV9udW0gPSBmdW5jdGlvblxuICAgICAgfCAnMCcgLi4gJzknIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBmdW4gZSAtPlxuICAgICAgbGV0IGxlbiA9IFN0cmluZy5sZW5ndGggZSBpblxuICAgICAgbGV0IHN0ciA9XG4gICAgICAgIGlmIGxlbiA+PSAxICYmIENoYXIuZXF1YWwgZS5bMF0gJyMnXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBsZXQgaSA9XG4gICAgICAgICAgICBpZiBsZW4gPj0gMiAmJiAoQ2hhci5lcXVhbCBlLlsxXSAneCcgfHwgQ2hhci5lcXVhbCBlLlsxXSAnWCcpXG4gICAgICAgICAgICB0aGVuIHBhcnNlX2ludCB+cG9zOjIgfmJhc2U6MTYgZVxuICAgICAgICAgICAgZWxzZSBwYXJzZV9pbnQgfnBvczoxIH5iYXNlOjEwIGVcbiAgICAgICAgICBpblxuICAgICAgICAgIEpzLnN0cmluZ19jb25zdHIjI2Zyb21DaGFyQ29kZSBpXG4gICAgICAgIGVsc2UgaWYgc3RyaW5nX2ZvbGQgZSB+cG9zOjAgfmluaXQ6dHJ1ZSB+ZjooZnVuIGFjYyB4IC0+XG4gICAgICAgICAgICAgICAgICAgICgqIFRoaXMgaXMgbm90IHF1aXRlIHJpZ2h0IGFjY29yZGluZyB0b1xuICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL3d3dy54bWwuY29tL2F4bWwvdGFyZ2V0Lmh0bWwjTlQtTmFtZS5cbiAgICAgICAgICAgICAgICAgICAgICAgYnV0IGl0IHNlZW1zIHRvIGNvdmVyIGFsbCBodG1sNSBlbnRpdGllc1xuICAgICAgICAgICAgICAgICAgICAgICBodHRwczovL2Rldi53My5vcmcvaHRtbDUvaHRtbC1hdXRob3IvY2hhcnJlZiAqKVxuICAgICAgICAgICAgICAgICAgICBhY2MgJiYgaXNfYWxwaGFfbnVtIHgpXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IFwicXVvdFwiIC0+IEpzLnN0cmluZyBcIlxcXCJcIlxuICAgICAgICAgIHwgXCJhbXBcIiAtPiBKcy5zdHJpbmcgXCImXCJcbiAgICAgICAgICB8IFwiYXBvc1wiIC0+IEpzLnN0cmluZyBcIidcIlxuICAgICAgICAgIHwgXCJsdFwiIC0+IEpzLnN0cmluZyBcIjxcIlxuICAgICAgICAgIHwgXCJndFwiIC0+IEpzLnN0cmluZyBcIj5cIlxuICAgICAgICAgIHwgXCJcIiAtPiBpbnZhbGlkX2VudGl0eSBlXG4gICAgICAgICAgfCBfIC0+IERvbV9odG1sLmRlY29kZV9odG1sX2VudGl0aWVzIChKcy5zdHJpbmcgKFwiJlwiIF4gZSBeIFwiO1wiKSlcbiAgICAgICAgZWxzZSBpbnZhbGlkX2VudGl0eSBlXG4gICAgICBpblxuICAgICAgKERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVUZXh0Tm9kZSBzdHIgOj4gRG9tLm5vZGUgSnMudClcblxuICAoKiBUT0RPOiBmaXggZ2V0X3Byb3BcbiAgICAgaXQgb25seSB3b3JrIHdoZW4gaHRtbCBhdHRyaWJ1dGUgYW5kIGRvbSBwcm9wZXJ0eSBuYW1lcyBjb3JyZXNwb25kLlxuICAgICBmaW5kIGEgd2F5IHRvIGdldCBkb20gcHJvcGVydHkgbmFtZSBjb3JyZXNwb25kaW5nIHRvIGh0bWwgYXR0cmlidXRlXG4gICopXG5cbiAgbGV0IGdldF9wcm9wIG5vZGUgbmFtZSA9XG4gICAgaWYgSnMuT3B0ZGVmLnRlc3QgKEpzLlVuc2FmZS5nZXQgbm9kZSBuYW1lKSB0aGVuIFNvbWUgbmFtZSBlbHNlIE5vbmVcblxuICBsZXQgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG5hbWUgZiA9XG4gICAgbWF0Y2ggZ2V0X3Byb3Agbm9kZSBuYW1lIHdpdGhcbiAgICB8IFNvbWUgbiAtPiAoIHRyeSBmIG4gd2l0aCBfIC0+ICgpKVxuICAgIHwgTm9uZSAtPiAoKVxuXG4gIGxldCBhdHRhY2hfYXR0cmlicyBub2RlIGwgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAobicsIGF0dCkgLT5cbiAgICAgICAgbGV0IG4gPSBKcy5zdHJpbmcgbicgaW5cbiAgICAgICAgbWF0Y2ggYXR0IHdpdGhcbiAgICAgICAgfCBBdHRyIGEgLT5cbiAgICAgICAgICAgIGxldCAoa2VlcG1lIDogdW5pdCBSZWFjdC5TLnQpID1cbiAgICAgICAgICAgICAgUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IChcbiAgICAgICAgICAgICAgICAgICAgICBpZ25vcmUgKG5vZGUjI3NldEF0dHJpYnV0ZSBuIHYpO1xuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIG4nIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFwic3R5bGVcIiAtPiBub2RlIyMuc3R5bGUjIy5jc3NUZXh0IDo9IHZcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG4gKGZ1biBuYW1lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbmFtZSB2KSlcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWdub3JlIChub2RlIyNyZW1vdmVBdHRyaWJ1dGUgbik7XG4gICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbicgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJzdHlsZVwiIC0+IG5vZGUjIy5zdHlsZSMjLmNzc1RleHQgOj0gSnMuc3RyaW5nIFwiXCJcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcl9wcm9wX3Byb3RlY3RlZCBub2RlIG4gKGZ1biBuYW1lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbmFtZSBKcy5udWxsKSkpXG4gICAgICAgICAgICAgICAgYVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHJldGFpbiAobm9kZSA6PiBEb20ubm9kZSBKcy50KSB+a2VlcG1lXG4gICAgICAgIHwgRXZlbnQgaCAtPiBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSlcbiAgICAgICAgfCBNb3VzZUV2ZW50IGggLT5cbiAgICAgICAgICAgIEpzLlVuc2FmZS5zZXQgbm9kZSBuIChKcy53cmFwX2NhbGxiYWNrIChmdW4gZXYgLT4gSnMuYm9vbCAoaCBldikpKVxuICAgICAgICB8IEtleWJvYXJkRXZlbnQgaCAtPlxuICAgICAgICAgICAgSnMuVW5zYWZlLnNldCBub2RlIG4gKEpzLndyYXBfY2FsbGJhY2sgKGZ1biBldiAtPiBKcy5ib29sIChoIGV2KSkpXG4gICAgICAgIHwgVG91Y2hFdmVudCBoIC0+XG4gICAgICAgICAgICBKcy5VbnNhZmUuc2V0IG5vZGUgbiAoSnMud3JhcF9jYWxsYmFjayAoZnVuIGV2IC0+IEpzLmJvb2wgKGggZXYpKSkpXG4gICAgICBsXG5cbiAgbGV0IGxlYWYgPyhhID0gW10pIG5hbWUgPVxuICAgIGxldCBlID0gRG9tX2h0bWwuZG9jdW1lbnQjI2NyZWF0ZUVsZW1lbnQgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGNoaWxkcmVuID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50IChKcy5zdHJpbmcgbmFtZSkgaW5cbiAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgTGlzdC5pdGVyIChmdW4gYyAtPiBpZ25vcmUgKGUjI2FwcGVuZENoaWxkIGMpKSBjaGlsZHJlbjtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBjZGF0YSBzID0gcGNkYXRhIHNcblxuICBsZXQgY2RhdGFfc2NyaXB0IHMgPSBjZGF0YSBzXG5cbiAgbGV0IGNkYXRhX3N0eWxlIHMgPSBjZGF0YSBzXG5lbmRcblxubW9kdWxlIFhtbF9TdmcgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBYbWxcblxuICBsZXQgbGVhZiA/KGEgPSBbXSkgbmFtZSA9XG4gICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudE5TIERvbV9zdmcueG1sbnMgKEpzLnN0cmluZyBuYW1lKSBpblxuICAgIGF0dGFjaF9hdHRyaWJzIGUgYTtcbiAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGNoaWxkcmVuID1cbiAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50TlMgRG9tX3N2Zy54bWxucyAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgYXR0YWNoX2F0dHJpYnMgZSBhO1xuICAgIExpc3QuaXRlciAoZnVuIGMgLT4gaWdub3JlIChlIyNhcHBlbmRDaGlsZCBjKSkgY2hpbGRyZW47XG4gICAgKGUgOj4gRG9tLm5vZGUgSnMudClcbmVuZFxuXG5tb2R1bGUgU3ZnID0gU3ZnX2YuTWFrZSAoWG1sX1N2Zylcbm1vZHVsZSBIdG1sID0gSHRtbF9mLk1ha2UgKFhtbCkgKFN2Zylcbm1vZHVsZSBIdG1sNSA9IEh0bWxcblxubW9kdWxlIFRvX2RvbSA9IFR5eG1sX2Nhc3QuTWFrZVRvIChzdHJ1Y3RcbiAgdHlwZSAnYSBlbHQgPSAnYSBIdG1sLmVsdFxuXG4gIGxldCBlbHQgPSBIdG1sLnRvZWx0XG5lbmQpXG5cbm1vZHVsZSBPZl9kb20gPSBUeXhtbF9jYXN0Lk1ha2VPZiAoc3RydWN0XG4gIHR5cGUgJ2EgZWx0ID0gJ2EgSHRtbC5lbHRcblxuICBsZXQgZWx0ID0gSHRtbC50b3RcbmVuZClcblxubW9kdWxlIFJlZ2lzdGVyID0gc3RydWN0XG4gIGxldCByZW1vdmVDaGlsZHJlbiAobm9kZSA6ICNEb20uZWxlbWVudCBKcy50KSA9XG4gICAgbGV0IGwgPSBub2RlIyMuY2hpbGROb2RlcyBpblxuICAgIGZvciBpID0gMCB0byBsIyMubGVuZ3RoIC0gMSBkb1xuICAgICAgSnMuT3B0Lml0ZXIgKGwjI2l0ZW0gaSkgKGZ1biB4IC0+IGlnbm9yZSAobm9kZSMjcmVtb3ZlQ2hpbGQgeCkpXG4gICAgZG9uZVxuXG4gIGxldCBhZGRfdG8gPyhrZWVwID0gdHJ1ZSkgbm9kZSBjb250ZW50ID1cbiAgICBpZiBub3Qga2VlcCB0aGVuIHJlbW92ZUNoaWxkcmVuIG5vZGU7XG4gICAgTGlzdC5pdGVyIChmdW4geCAtPiBEb20uYXBwZW5kQ2hpbGQgbm9kZSAoVG9fZG9tLm9mX2VsZW1lbnQgeCkpIGNvbnRlbnRcblxuICBsZXQgaWQgP2tlZXAgaWQgY29udGVudCA9XG4gICAgbGV0IG5vZGUgPSBEb21faHRtbC5nZXRFbGVtZW50QnlJZCBpZCBpblxuICAgIGFkZF90byA/a2VlcCBub2RlIGNvbnRlbnRcblxuICBsZXQgYm9keSA/a2VlcCBjb250ZW50ID0gYWRkX3RvID9rZWVwIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSBjb250ZW50XG5cbiAgbGV0IGhlYWQgP2tlZXAgY29udGVudCA9IGFkZF90byA/a2VlcCBEb21faHRtbC5kb2N1bWVudCMjLmhlYWQgY29udGVudFxuXG4gIGxldCBodG1sID9oZWFkIGJvZHkgPVxuICAgIChtYXRjaCBoZWFkIHdpdGhcbiAgICB8IFNvbWUgaCAtPiBEb21faHRtbC5kb2N1bWVudCMjLmhlYWQgOj0gVG9fZG9tLm9mX2hlYWQgaFxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgRG9tX2h0bWwuZG9jdW1lbnQjIy5ib2R5IDo9IFRvX2RvbS5vZl9ib2R5IGJvZHk7XG4gICAgKClcbmVuZFxuXG5tb2R1bGUgV3JhcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBSZWFjdC5zaWduYWxcblxuICB0eXBlICdhIHRsaXN0ID0gJ2EgUmVhY3RpdmVEYXRhLlJMaXN0LnRcblxuICB0eXBlICgnYSwgJ2IpIGZ0ID0gJ2EgLT4gJ2JcblxuICBsZXQgcmV0dXJuID0gUmVhY3QuUy5jb25zdFxuXG4gIGxldCBmbWFwIGYgPSBSZWFjdC5TLm1hcCBmXG5cbiAgbGV0IG5pbCAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxuXG4gIGxldCBzaW5nbGV0b24gPSBSZWFjdGl2ZURhdGEuUkxpc3Quc2luZ2xldG9uX3NcblxuICBsZXQgY29ucyB4IHhzID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdCAoc2luZ2xldG9uIHgpIHhzXG5cbiAgbGV0IG1hcCBmID0gUmVhY3RpdmVEYXRhLlJMaXN0Lm1hcCBmXG5cbiAgbGV0IGFwcGVuZCB4IHkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuY29uY2F0IHggeVxuZW5kXG5cbm1vZHVsZSBVdGlsID0gc3RydWN0XG4gIG9wZW4gUmVhY3RpdmVEYXRhXG4gIG9wZW4gUkxpc3RcblxuICBsZXQgaW5zZXJ0QXQgZG9tIGkgeCA9XG4gICAgbGV0IG5vZGVzID0gZG9tIyMuY2hpbGROb2RlcyBpblxuICAgIGFzc2VydCAoaSA8PSBub2RlcyMjLmxlbmd0aCk7XG4gICAgaWYgaSA9IG5vZGVzIyMubGVuZ3RoXG4gICAgdGhlbiBpZ25vcmUgKGRvbSMjYXBwZW5kQ2hpbGQgKHggOj4gRG9tLm5vZGUgSnMudCkpXG4gICAgZWxzZSBpZ25vcmUgKGRvbSMjaW5zZXJ0QmVmb3JlIHggKG5vZGVzIyNpdGVtIGkpKVxuXG4gIGxldCBtZXJnZV9vbmVfcGF0Y2ggKGRvbSA6IERvbS5ub2RlIEpzLnQpIChwIDogRG9tLm5vZGUgSnMudCBwKSA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBJIChpLCB4KSAtPlxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIDEgKyBpIGVsc2UgaSBpblxuICAgICAgICBpbnNlcnRBdCBkb20gaSB4XG4gICAgfCBSIGkgLT5cbiAgICAgICAgbGV0IGkgPSBpZiBpIDwgMCB0aGVuIGRvbSMjLmNoaWxkTm9kZXMjIy5sZW5ndGggKyBpIGVsc2UgaSBpblxuICAgICAgICBsZXQgbm9kZXMgPSBkb20jIy5jaGlsZE5vZGVzIGluXG4gICAgICAgIGFzc2VydCAoaSA+PSAwICYmIGkgPCBub2RlcyMjLmxlbmd0aCk7XG4gICAgICAgIEpzLk9wdC5pdGVyIChub2RlcyMjaXRlbSBpKSAoZnVuIG4gLT4gRG9tLnJlbW92ZUNoaWxkIGRvbSBuKVxuICAgIHwgVSAoaSwgeCkgLT4gKFxuICAgICAgICBsZXQgaSA9IGlmIGkgPCAwIHRoZW4gZG9tIyMuY2hpbGROb2RlcyMjLmxlbmd0aCArIGkgZWxzZSBpIGluXG4gICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gKGRvbSMjLmNoaWxkTm9kZXMjI2l0ZW0gaSkgd2l0aFxuICAgICAgICB8IFNvbWUgb2xkIC0+IGlnbm9yZSAoZG9tIyNyZXBsYWNlQ2hpbGQgeCBvbGQpXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgfCBYIChpLCBtb3ZlKSAtPiAoXG4gICAgICAgIGxldCBpID0gaWYgaSA8IDAgdGhlbiBkb20jIy5jaGlsZE5vZGVzIyMubGVuZ3RoICsgaSBlbHNlIGkgaW5cbiAgICAgICAgaWYgbW92ZSA9IDBcbiAgICAgICAgdGhlbiAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWF0Y2ggSnMuT3B0LnRvX29wdGlvbiAoZG9tIyMuY2hpbGROb2RlcyMjaXRlbSBpKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGknIC0+IGluc2VydEF0IGRvbSAoaSArIGlmIG1vdmUgPiAwIHRoZW4gbW92ZSArIDEgZWxzZSBtb3ZlKSBpJ1xuICAgICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG5cbiAgbGV0IHJlYyByZW1vdmVDaGlsZHJlbiBkb20gPVxuICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gZG9tIyMubGFzdENoaWxkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgYyAtPlxuICAgICAgICBpZ25vcmUgKGRvbSMjcmVtb3ZlQ2hpbGQgYyk7XG4gICAgICAgIHJlbW92ZUNoaWxkcmVuIGRvbVxuXG4gIGxldCBtZXJnZV9tc2cgKGRvbSA6IERvbS5ub2RlIEpzLnQpIChtc2cgOiBEb20ubm9kZSBKcy50IG1zZykgPVxuICAgIG1hdGNoIG1zZyB3aXRoXG4gICAgfCBTZXQgbCAtPlxuICAgICAgICAoKiBGb3JtYXQuZXByaW50ZiBcInJlcGxhY2UgYWxsQC5cIjsgKilcbiAgICAgICAgcmVtb3ZlQ2hpbGRyZW4gZG9tO1xuICAgICAgICBMaXN0Lml0ZXIgKGZ1biBsIC0+IGlnbm9yZSAoZG9tIyNhcHBlbmRDaGlsZCBsKSkgbFxuICAgIHwgUGF0Y2ggcCAtPlxuICAgICAgICAoKiBGb3JtYXQuZXByaW50ZiBcInBhdGNoQC5cIjsgKilcbiAgICAgICAgTGlzdC5pdGVyIChtZXJnZV9vbmVfcGF0Y2ggZG9tKSBwXG5cbiAgbGV0IHVwZGF0ZV9jaGlsZHJlbiAoZG9tIDogRG9tLm5vZGUgSnMudCkgKG5vZGVzIDogRG9tLm5vZGUgSnMudCB0KSA9XG4gICAgcmVtb3ZlQ2hpbGRyZW4gZG9tO1xuICAgIGxldCBrZWVwbWUgOiB1bml0IFJlYWN0LlMudCA9IGZvbGQgKGZ1biAoKSBtc2cgLT4gbWVyZ2VfbXNnIGRvbSBtc2cpIG5vZGVzICgpIGluXG4gICAgcmV0YWluIChkb20gOiBEb20ubm9kZSBKcy50KSB+a2VlcG1lO1xuICAgICgpXG5lbmRcblxubW9kdWxlIFIgPSBzdHJ1Y3RcbiAgbGV0IGZpbHRlcl9hdHRyaWIgKG5hbWUsIGEpIG9uID1cbiAgICBtYXRjaCBhIHdpdGhcbiAgICB8IFhtbC5FdmVudCBfIHwgWG1sLk1vdXNlRXZlbnQgXyB8IFhtbC5LZXlib2FyZEV2ZW50IF8gfCBYbWwuVG91Y2hFdmVudCBfIC0+XG4gICAgICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiZmlsdGVyX2F0dHJpYiBub3QgaW1wbGVtZW50ZWQgZm9yIGV2ZW50IGhhbmRsZXJcIilcbiAgICB8IFhtbC5BdHRyIGEgLT4gbmFtZSwgWG1sLkF0dHIgKFJlYWN0LlMubDIgKGZ1biBvbiBhIC0+IGlmIG9uIHRoZW4gYSBlbHNlIE5vbmUpIG9uIGEpXG5cbiAgbGV0IGF0dGFjaF9hdHRyaWJzID0gWG1sLmF0dGFjaF9hdHRyaWJzXG5cbiAgbW9kdWxlIFhtbCA9IHN0cnVjdFxuICAgIG1vZHVsZSBXID0gV3JhcFxuXG4gICAgdHlwZSAnYSB3cmFwID0gJ2EgVy50XG5cbiAgICB0eXBlICdhIGxpc3Rfd3JhcCA9ICdhIFcudGxpc3RcblxuICAgIHR5cGUgdXJpID0gWG1sLnVyaVxuXG4gICAgbGV0IHN0cmluZ19vZl91cmkgPSBYbWwuc3RyaW5nX29mX3VyaVxuXG4gICAgbGV0IHVyaV9vZl9zdHJpbmcgPSBYbWwudXJpX29mX3N0cmluZ1xuXG4gICAgdHlwZSBhbmFtZSA9IFhtbC5hbmFtZVxuXG4gICAgdHlwZSBldmVudF9oYW5kbGVyID0gWG1sLmV2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgbW91c2VfZXZlbnRfaGFuZGxlciA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyXG5cbiAgICB0eXBlIGtleWJvYXJkX2V2ZW50X2hhbmRsZXIgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlclxuXG4gICAgdHlwZSB0b3VjaF9ldmVudF9oYW5kbGVyID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJcblxuICAgIHR5cGUgYXR0cmliID0gWG1sLmF0dHJpYlxuXG4gICAgbGV0IGF0dHIgbmFtZSBmIHMgPVxuICAgICAgbGV0IGEgPSBXLmZtYXAgZiBzIGluXG4gICAgICBuYW1lLCBYbWwuQXR0ciBhXG5cbiAgICBsZXQgZmxvYXRfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoanNfc3RyaW5nX29mX2Zsb2F0IGYpKSBzXG5cbiAgICBsZXQgaW50X2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKGpzX3N0cmluZ19vZl9pbnQgZikpIHNcblxuICAgIGxldCBzdHJpbmdfYXR0cmliIG5hbWUgcyA9IGF0dHIgbmFtZSAoZnVuIGYgLT4gU29tZSAoSnMuc3RyaW5nIGYpKSBzXG5cbiAgICBsZXQgc3BhY2Vfc2VwX2F0dHJpYiBuYW1lIHMgPVxuICAgICAgYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIgXCIgZikpKSBzXG5cbiAgICBsZXQgY29tbWFfc2VwX2F0dHJpYiBuYW1lIHMgPVxuICAgICAgYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgKFN0cmluZy5jb25jYXQgXCIsXCIgZikpKSBzXG5cbiAgICBsZXQgZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLmV2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IG1vdXNlX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgcyA9IFhtbC5tb3VzZV9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHNcblxuICAgIGxldCBrZXlib2FyZF9ldmVudF9oYW5kbGVyX2F0dHJpYiBuYW1lIHMgPSBYbWwua2V5Ym9hcmRfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzXG5cbiAgICBsZXQgdG91Y2hfZXZlbnRfaGFuZGxlcl9hdHRyaWIgbmFtZSBzID0gWG1sLnRvdWNoX2V2ZW50X2hhbmRsZXJfYXR0cmliIG5hbWUgc1xuXG4gICAgbGV0IHVyaV9hdHRyaWIgbmFtZSBzID0gYXR0ciBuYW1lIChmdW4gZiAtPiBTb21lIChKcy5zdHJpbmcgZikpIHNcblxuICAgIGxldCB1cmlzX2F0dHJpYiBuYW1lIHMgPSBhdHRyIG5hbWUgKGZ1biBmIC0+IFNvbWUgKEpzLnN0cmluZyAoU3RyaW5nLmNvbmNhdCBcIiBcIiBmKSkpIHNcblxuICAgIHR5cGUgZWx0ID0gWG1sLmVsdFxuXG4gICAgdHlwZSBlbmFtZSA9IFhtbC5lbmFtZVxuXG4gICAgbGV0IGVtcHR5ID0gWG1sLmVtcHR5XG5cbiAgICBsZXQgY29tbWVudCA9IFhtbC5jb21tZW50XG5cbiAgICBsZXQgcGNkYXRhIHMgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlVGV4dE5vZGUgKEpzLnN0cmluZyBcIlwiKSBpblxuICAgICAgbGV0IGtlZXBtZSA9IFJlYWN0LlMubWFwIChmdW4gcyAtPiBlIyMuZGF0YSA6PSBKcy5zdHJpbmcgcykgcyBpblxuICAgICAgcmV0YWluIChlIDo+IERvbS5ub2RlIEpzLnQpIH5rZWVwbWU7XG4gICAgICAoZSA6PiBEb20ubm9kZSBKcy50KVxuXG4gICAgbGV0IGVuY29kZWRwY2RhdGEgcyA9IHBjZGF0YSBzXG5cbiAgICBsZXQgZW50aXR5IHMgPSBYbWwuZW50aXR5IHNcblxuICAgIGxldCBsZWFmID0gWG1sLmxlYWZcblxuICAgIGxldCBub2RlID8oYSA9IFtdKSBuYW1lIGwgPVxuICAgICAgbGV0IGUgPSBEb21faHRtbC5kb2N1bWVudCMjY3JlYXRlRWxlbWVudCAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgICBVdGlsLnVwZGF0ZV9jaGlsZHJlbiAoZSA6PiBEb20ubm9kZSBKcy50KSBsO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcblxuICAgIGxldCBjZGF0YSA9IFhtbC5jZGF0YVxuXG4gICAgbGV0IGNkYXRhX3NjcmlwdCA9IFhtbC5jZGF0YV9zY3JpcHRcblxuICAgIGxldCBjZGF0YV9zdHlsZSA9IFhtbC5jZGF0YV9zdHlsZVxuICBlbmRcblxuICBtb2R1bGUgWG1sX1N2ZyA9IHN0cnVjdFxuICAgIGluY2x1ZGUgWG1sXG5cbiAgICBsZXQgbGVhZiA9IFhtbF9TdmcubGVhZlxuXG4gICAgbGV0IG5vZGUgPyhhID0gW10pIG5hbWUgbCA9XG4gICAgICBsZXQgZSA9IERvbV9odG1sLmRvY3VtZW50IyNjcmVhdGVFbGVtZW50TlMgRG9tX3N2Zy54bWxucyAoSnMuc3RyaW5nIG5hbWUpIGluXG4gICAgICBhdHRhY2hfYXR0cmlicyBlIGE7XG4gICAgICBVdGlsLnVwZGF0ZV9jaGlsZHJlbiAoZSA6PiBEb20ubm9kZSBKcy50KSBsO1xuICAgICAgKGUgOj4gRG9tLm5vZGUgSnMudClcbiAgZW5kXG5cbiAgbW9kdWxlIFN2ZyA9IFN2Z19mLk1ha2UgKFhtbF9TdmcpXG4gIG1vZHVsZSBIdG1sID0gSHRtbF9mLk1ha2UgKFhtbCkgKFN2ZylcbiAgbW9kdWxlIEh0bWw1ID0gSHRtbFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbmV4Y2VwdGlvbiBFbXB0eVxuXG50eXBlICdhIHQgPSB7XG4gIG11dGFibGUgcHJldiA6ICdhIHQ7XG4gIG11dGFibGUgbmV4dCA6ICdhIHQ7XG59XG5cbnR5cGUgJ2Egbm9kZSA9IHtcbiAgbm9kZV9wcmV2IDogJ2EgdDtcbiAgbm9kZV9uZXh0IDogJ2EgdDtcbiAgbXV0YWJsZSBub2RlX2RhdGEgOiAnYTtcbiAgbXV0YWJsZSBub2RlX2FjdGl2ZSA6IGJvb2w7XG59XG5cbmV4dGVybmFsIHNlcV9vZl9ub2RlIDogJ2Egbm9kZSAtPiAnYSB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgbm9kZV9vZl9zZXEgOiAnYSB0IC0+ICdhIG5vZGUgPSBcIiVpZGVudGl0eVwiXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3BlcmF0aW9ucyBvbiBub2RlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGdldCBub2RlID1cbiAgbm9kZS5ub2RlX2RhdGFcblxubGV0IHNldCBub2RlIGRhdGEgPVxuICBub2RlLm5vZGVfZGF0YSA8LSBkYXRhXG5cbmxldCByZW1vdmUgbm9kZSA9XG4gIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBiZWdpblxuICAgIG5vZGUubm9kZV9hY3RpdmUgPC0gZmFsc2U7XG4gICAgbGV0IHNlcSA9IHNlcV9vZl9ub2RlIG5vZGUgaW5cbiAgICBzZXEucHJldi5uZXh0IDwtIHNlcS5uZXh0O1xuICAgIHNlcS5uZXh0LnByZXYgPC0gc2VxLnByZXZcbiAgZW5kXG5cbigqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgT3BlcmF0aW9ucyBvbiBzZXF1ZW5jZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxubGV0IGNyZWF0ZSAoKSA9XG4gIGxldCByZWMgc2VxID0geyBwcmV2ID0gc2VxOyBuZXh0ID0gc2VxIH0gaW5cbiAgc2VxXG5cbmxldCBjbGVhciBzZXEgPVxuICBzZXEucHJldiA8LSBzZXE7XG4gIHNlcS5uZXh0IDwtIHNlcVxuXG5sZXQgaXNfZW1wdHkgc2VxID0gc2VxLm5leHQgPT0gc2VxXG5cbmxldCBsZW5ndGggc2VxID1cbiAgbGV0IHJlYyBsb29wIGN1cnIgbGVuID1cbiAgICBpZiBjdXJyID09IHNlcSB0aGVuXG4gICAgICBsZW5cbiAgICBlbHNlXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW4gbG9vcCBub2RlLm5vZGVfbmV4dCAobGVuICsgMSlcbiAgaW5cbiAgbG9vcCBzZXEubmV4dCAwXG5cbmxldCBhZGRfbCBkYXRhIHNlcSA9XG4gIGxldCBub2RlID0geyBub2RlX3ByZXYgPSBzZXE7IG5vZGVfbmV4dCA9IHNlcS5uZXh0OyBub2RlX2RhdGEgPSBkYXRhOyBub2RlX2FjdGl2ZSA9IHRydWUgfSBpblxuICBzZXEubmV4dC5wcmV2IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIHNlcS5uZXh0IDwtIHNlcV9vZl9ub2RlIG5vZGU7XG4gIG5vZGVcblxubGV0IGFkZF9yIGRhdGEgc2VxID1cbiAgbGV0IG5vZGUgPSB7IG5vZGVfcHJldiA9IHNlcS5wcmV2OyBub2RlX25leHQgPSBzZXE7IG5vZGVfZGF0YSA9IGRhdGE7IG5vZGVfYWN0aXZlID0gdHJ1ZSB9IGluXG4gIHNlcS5wcmV2Lm5leHQgPC0gc2VxX29mX25vZGUgbm9kZTtcbiAgc2VxLnByZXYgPC0gc2VxX29mX25vZGUgbm9kZTtcbiAgbm9kZVxuXG5sZXQgdGFrZV9sIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgcmFpc2UgRW1wdHlcbiAgZWxzZSBiZWdpblxuICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgc2VxLm5leHQgaW5cbiAgICByZW1vdmUgbm9kZTtcbiAgICBub2RlLm5vZGVfZGF0YVxuICBlbmRcblxubGV0IHRha2VfciBzZXEgPVxuICBpZiBpc19lbXB0eSBzZXEgdGhlblxuICAgIHJhaXNlIEVtcHR5XG4gIGVsc2UgYmVnaW5cbiAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIHNlcS5wcmV2IGluXG4gICAgcmVtb3ZlIG5vZGU7XG4gICAgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX29wdF9sIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgTm9uZVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEubmV4dCBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIFNvbWUgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0YWtlX29wdF9yIHNlcSA9XG4gIGlmIGlzX2VtcHR5IHNlcSB0aGVuXG4gICAgTm9uZVxuICBlbHNlIGJlZ2luXG4gICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBzZXEucHJldiBpblxuICAgIHJlbW92ZSBub2RlO1xuICAgIFNvbWUgbm9kZS5ub2RlX2RhdGFcbiAgZW5kXG5cbmxldCB0cmFuc2Zlcl9sIHMxIHMyID1cbiAgczIubmV4dC5wcmV2IDwtIHMxLnByZXY7XG4gIHMxLnByZXYubmV4dCA8LSBzMi5uZXh0O1xuICBzMi5uZXh0IDwtIHMxLm5leHQ7XG4gIHMxLm5leHQucHJldiA8LSBzMjtcbiAgczEucHJldiA8LSBzMTtcbiAgczEubmV4dCA8LSBzMVxuXG5sZXQgdHJhbnNmZXJfciBzMSBzMiA9XG4gIHMyLnByZXYubmV4dCA8LSBzMS5uZXh0O1xuICBzMS5uZXh0LnByZXYgPC0gczIucHJldjtcbiAgczIucHJldiA8LSBzMS5wcmV2O1xuICBzMS5wcmV2Lm5leHQgPC0gczI7XG4gIHMxLnByZXYgPC0gczE7XG4gIHMxLm5leHQgPC0gczFcblxubGV0IGl0ZXJfbCBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuIGJlZ2luXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBmIG5vZGUubm9kZV9kYXRhO1xuICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5uZXh0XG5cbmxldCBpdGVyX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlLm5vZGVfZGF0YTtcbiAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXZcbiAgICBlbmRcbiAgaW5cbiAgbG9vcCBzZXEucHJldlxuXG5sZXQgaXRlcl9ub2RlX2wgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlbiBiZWdpblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW4gZiBub2RlO1xuICAgICAgbG9vcCBub2RlLm5vZGVfbmV4dFxuICAgIGVuZFxuICBpblxuICBsb29wIHNlcS5uZXh0XG5cbmxldCBpdGVyX25vZGVfciBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuIGJlZ2luXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlbiBmIG5vZGU7XG4gICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGZvbGRfbCBmIHNlcSBhY2MgPVxuICBsZXQgcmVjIGxvb3AgY3VyciBhY2MgPVxuICAgIGlmIGN1cnIgPT0gc2VxIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGxldCBub2RlID0gbm9kZV9vZl9zZXEgY3VyciBpblxuICAgICAgaWYgbm9kZS5ub2RlX2FjdGl2ZSB0aGVuXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX25leHQgKGYgbm9kZS5ub2RlX2RhdGEgYWNjKVxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0IGFjY1xuICBpblxuICBsb29wIHNlcS5uZXh0IGFjY1xuXG5sZXQgZm9sZF9yIGYgc2VxIGFjYyA9XG4gIGxldCByZWMgbG9vcCBjdXJyIGFjYyA9XG4gICAgaWYgY3VyciA9PSBzZXEgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldiAoZiBub2RlLm5vZGVfZGF0YSBhY2MpXG4gICAgICBlbHNlXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX3ByZXYgYWNjXG4gIGluXG4gIGxvb3Agc2VxLnByZXYgYWNjXG5cbmxldCBmaW5kX25vZGVfbCBmIHNlcSA9XG4gIGxldCByZWMgbG9vcCBjdXJyID1cbiAgICBpZiBjdXJyICE9IHNlcSB0aGVuXG4gICAgICBsZXQgbm9kZSA9IG5vZGVfb2Zfc2VxIGN1cnIgaW5cbiAgICAgIGlmIG5vZGUubm9kZV9hY3RpdmUgdGhlblxuICAgICAgICBpZiBmIG5vZGUubm9kZV9kYXRhIHRoZW5cbiAgICAgICAgICBub2RlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsb29wIG5vZGUubm9kZV9uZXh0XG4gICAgICBlbHNlXG4gICAgICAgIGxvb3Agbm9kZS5ub2RlX25leHRcbiAgICBlbHNlXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgaW5cbiAgbG9vcCBzZXEubmV4dFxuXG5sZXQgZmluZF9ub2RlX3IgZiBzZXEgPVxuICBsZXQgcmVjIGxvb3AgY3VyciA9XG4gICAgaWYgY3VyciAhPSBzZXEgdGhlblxuICAgICAgbGV0IG5vZGUgPSBub2RlX29mX3NlcSBjdXJyIGluXG4gICAgICBpZiBub2RlLm5vZGVfYWN0aXZlIHRoZW5cbiAgICAgICAgaWYgZiBub2RlLm5vZGVfZGF0YSB0aGVuXG4gICAgICAgICAgbm9kZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbG9vcCBub2RlLm5vZGVfcHJldlxuICAgICAgZWxzZVxuICAgICAgICBsb29wIG5vZGUubm9kZV9wcmV2XG4gICAgZWxzZVxuICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gIGluXG4gIGxvb3Agc2VxLnByZXZcblxubGV0IGZpbmRfbm9kZV9vcHRfbCBmIHNlcSA9XG4gIHRyeSBTb21lIChmaW5kX25vZGVfbCBmIHNlcSkgd2l0aCBOb3RfZm91bmQgLT4gTm9uZVxuXG5sZXQgZmluZF9ub2RlX29wdF9yIGYgc2VxID1cbiAgdHJ5IFNvbWUgKGZpbmRfbm9kZV9yIGYgc2VxKSB3aXRoIE5vdF9mb3VuZCAtPiBOb25lXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIFJlYWRpbmcgZ3VpZGVcblxuICAgV2VsY29tZSB0byB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEx3dCBjb3JlISBUaGlzIGlzIGEgYmlnIGZpbGUsIGJ1dCB3ZVxuICAgaG9wZSB0aGF0IHJlYWRpbmcgaXQgKHBhcnRzIGF0IGEgdGltZSEpIHdpbGwgbm90IGJlIHNjYXJ5IDopIEhlcmUgaXMgd2h5OlxuXG5cbiAgICogU2VjdGlvbmluZ1xuXG4gICBUaGUgY29kZSBpcyBicm9rZW4gdXAgaW50byBzZWN0aW9ucywgZWFjaCBvbmUgb2Ygd2hpY2ggaXMgYW4gaW50ZXJuYWwgbW9kdWxlLlxuICAgTW9zdCBvZiB0aGUgbW9kdWxlcyBoYXZlIGEgc2lnbmF0dXJlLCB3aGljaCBzZXJ2ZXMgYXMgYSBuZWF0IHRhYmxlIG9mXG4gICBjb250ZW50cy5cblxuICAgSXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVhZCB0aGlzIGZpbGUgd2l0aCBjb2RlIGZvbGRpbmcgZW5hYmxlZC4gSWYgeW91XG4gICBmb2xkIGFsbCB0aGUgbW9kdWxlcywgeW91IGNhbiB2aXN1YWxpemUgdGhlIGxvZ2ljYWwgc3RydWN0dXJlIG9mIEx3dCBxdWl0ZVxuICAgZWFzaWx5LiBZb3UgY2FuIHRoZW4gZXhwYW5kIG1vZHVsZXMgYXMgbmVlZGVkLCBkZXBlbmRpbmcgb24gd2hhdCBwYXJ0IG9mIHRoZVxuICAgaW1wbGVtZW50YXRpb24geW91IGFyZSBpbnRlcmVzdGVkIGluLiBXaXRob3V0IGNvZGUgZm9sZGluZywgeW91IGZhY2UgYW5cbiAgIGludGltaWRhdGluZyB3YWxsIG9mIGNvZGUgOiggWW91IGNhbiBzdGlsbCB2aXN1YWxseSBwYXJzZSB0aGUgZmlsZSwgaG93ZXZlcixcbiAgIGJlY2F1c2UgdGhlcmUgYXJlIHBsZW50eSBvZiBibGFuayBsaW5lcyB0byBoZWxwIHNlY3Rpb24gdGhpbmdzIG9mZi4gWW91IGNhblxuICAgYWxzbyB2aWV3IHRoaXMgZmlsZSBmb2xkZWQgb25saW5lOlxuXG4gICAgIGh0dHBzOi8vZ2lzdC5naXRodWIuY29tL2FhbnRyb24vOWZhYjBiZGVhZDk4YTYwZmNjZjA2ZTAxODkxODY4NjNcbiAgICAgaHR0cHM6Ly9naXN0LmdpdGh1Yi5jb20vYWFudHJvbi85N2I1ODUyMGQ1YmI0ODU4Y2NhYzZmNTQ3MDBhMjRkN1xuXG4gICBUaGUgc2lnbmF0dXJlcyBhcmUgdW51c3VhbDogYmlnIGNvbW1lbnRzIGFyZSBhYnNlbnQuIFRoZXkgYXJlIG1vdmVkIGludG8gdGhlXG4gICBtb2R1bGVzLCBzbyB0aGF0IHRoZXkgYXJlIGhpZGRlbiBieSBjb2RlIGZvbGRpbmcgd2hlbiB5b3UgKHRoZSByZWFkZXIhKSBhcmVcbiAgIG5vdCBpbnRlcmVzdGVkIGluIHRob3NlIG1vZHVsZXMuXG5cblxuICAgKiBEb2N1bWVudGF0aW9uXG5cbiAgIFRoZSBkb2N1bWVudGF0aW9uIGJlZ2lucyB3aXRoIGFuIG92ZXJ2aWV3IG9mIG1ham9yIGNvbmNlcHRzIGFuZCBjb21wb25lbnRzLlxuICAgVGhpcyBvdmVydmlldyBwdXRzIGV2ZXJ5dGhpbmcgaW50byBjb250ZXh0LiBZb3UgZG9uJ3QgaGF2ZSB0byByZWFkIHRoZSB3aG9sZVxuICAgdGhpbmcuIFRoZSBvdmVydmlldyBiZWdpbnMgd2l0aCBiYXNpYyBjb25jZXB0cywgbW92ZXMgb24gdG8gYWR2YW5jZWQgb25lcyxcbiAgIGFuZCB0aGVuIGdldHMgaW50byB0aGUgdHJ1bHkgZXNvdGVyaWMuIFlvdSBjYW4gcmVhZCBhYm91dCBlYWNoIGNvbmNlcHQgb24gYW5cbiAgIGFzLW5lZWRlZCBiYXNpcy4gSG93ZXZlciwgb25jZSB5b3UgaGF2ZSByZWFkIHRoZSB3aG9sZSBvdmVydmlldywgeW91IHdpbGwgYmVcbiAgIGF3YXJlIG9mICpldmVyeXRoaW5nKiB0aGF0IGlzIG5lZWRlZCB0byB1bmRlcnN0YW5kLCBhbmQgd29yayB3aXRoLCB0aGUgY29yZVxuICAgb2YgTHd0LlxuXG4gICBMaXR0ZXJlZCBpbiB0aGUgY29kZSBhcmUgYWRkaXRpb25hbCBjb21tZW50cywgdGhhdCBnbyBpbi1kZXB0aCBvbiB2YXJpb3VzXG4gICBsb2NhbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLCBvcHBvcnR1bml0aWVzLCByZWdyZXRzLCBhbmQgdGhlIGxpa2UuXG5cbiAgIFRoZSBzZWN0aW9ucyAobW9kdWxlcykgb2YgdGhlIGNvZGUgY29ycmVzcG9uZCBjbG9zZWx5IHRvIHNlY3Rpb25zIG9mIHRoZVxuICAgb3ZlcnZpZXcuXG5cblxuICAgKiBXaGl0ZXNwYWNlXG5cbiAgIFRoZSB0b3RhbCBsaW5lIGNvdW50IG9mIHRoaXMgZmlsZSBtYXkgc2VlbSBmcmlnaHRlbmluZywgYnV0IG9uZSB0aGlyZCBvZiBpdFxuICAgaXMgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMsIGJvdGggdGhlcmUgdG8gaGVscCB5b3UgcmVhZCB0aGUgcmVtYWluaW5nIHR3b1xuICAgdGhpcmRzIVxuXG4gICBBbHNvLCB3aXRoaW4gdGhvc2UgdHdvIHRoaXJkcywgdGhlcmUgYXJlIGxhcmdlIGdyb3VwcyBvZiBmdW5jdGlvbnMgdGhhdCBhcmVcbiAgIHJlcGV0aXRpdmUgYW5kIGZvcm11bGFpYywgc28gdGhlcmUgaXMgbXVjaCBsZXNzIGNvbmNlcHR1YWxseS11bmlxdWUgY29kZSBpblxuICAgTHd0IHRoYW4geW91IG1pZ2h0IHRoaW5rIGF0IGZpcnN0LlxuXG5cbiAgICogUGxlYXNlIGVkaXQgdGhlIGNvZGUgYW5kIHRoZSBkb2NzIVxuXG4gICBUaGlzIGNvZGUgaXMgbWVhbnQgdG8gYmUgcmVhZGFibGUsIGFuZCB0byBiZSBlZGl0ZWQuIElmIHlvdSBhcmUgcmVhZGluZ1xuICAgc29tZXRoaW5nLCBhbmQgdGhpbmsgdGhlcmUgaXMgYSBiZXR0ZXIgd2F5IHRvIGV4cHJlc3MgaXQsIHBsZWFzZSBnbyBhaGVhZCBhbmRcbiAgIG9wZW4gYSBwdWxsIHJlcXVlc3QgdG8gdGhlIEx3dCByZXBvc2l0b3J5IGF0XG5cbiAgICAgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0XG5cbiAgIEV2ZW4gaWYgeW91ciBwdWxsIHJlcXVlc3Qgc29tZWhvdyBkb2Vzbid0IGdldCBtZXJnZWQsIHlvdSB3aWxsIGhhdmUgZWR1Y2F0ZWRcbiAgIHRoZSBtYWludGFpbmVycywgbm90IHRvIG1lbnRpb24gb3RoZXIgY29udHJpYnV0b3JzLCBhbmQgdXNlcnMuIFRoaXMgaXMgdHJ1ZVxuICAgZXZlbiBpZiB0aGUgY2hhbmdlIGlzIHRyaXZpYWwgLS0gc29tZXRpbWVzLCBtYWludGFpbmVycyBqdXN0IG5lZWQgdG8gYmVcbiAgIGVkdWNhdGVkIG11bHRpcGxlIHRpbWVzIGJlZm9yZSB0aGV5IHNlZSB0aGUgd2lzZG9tIG9mIGl0IDovXG5cbiAgIExpa2V3aXNlLCBpZiB5b3Ugd291bGQgbGlrZSB0byBtYWtlIGEgY29kZSBjb250cmlidXRpb24gdG8gdGhlIEx3dCBjb3JlLCBpdFxuICAgaXMgcXVpdGUgd2VsY29tZSwgYW5kIHdlIGhvcGUgdGhhdCB0aGlzIGNvZGUgaXMgcmVhZGFibGUgZW5vdWdoIGZvciB5b3UgdG8gYmVcbiAgIGFibGUgdG8gbWFrZSBpdCFcblxuXG4gICBFbmpveSEgKilcblxuXG5cbigqIE92ZXJ2aWV3XG5cbiAgIEluIHRoaXMgZmlsZSwgdGhlcmUgaXMgYSBcIm1vZGVsXCIgZnVuY3Rpb24gLS0gW0x3dC5iaW5kXSAtLSB3aGljaCBwdWxsc1xuICAgdG9nZXRoZXIgbWFueSAodGhvdWdoIG5vdCBhbGwpIG9mIHRoZSBjb25jZXB0cyBhbmQgaGVscGVycyBkaXNjdXNzZWQgaW4gdGhpc1xuICAgb3ZlcnZpZXcuIFRvIGZpbmQgaXQsIHNlYXJjaCBmb3IgXCJsZXQgYmluZCxcIiBhbmQgeW91IGNhbiBleGFtaW5lIGl0IHdoaWxlXG4gICByZWFkaW5nIHRoZSBvdmVydmlldy4gVGhlIGF1dGhvcnMgb2YgdGhpcyBmaWxlIGludGVuZCB0byBwdXQgZXh0cmEgZWZmb3J0XG4gICBpbnRvIHdyaXRpbmcgbmljZSBjb21tZW50cyBpbnNpZGUgW0x3dC5iaW5kXSA6KVxuXG5cbiAgIDAuIE1haW4gbWVjaGFuaXNtIGFuZCB0d28gYXNwZWN0c1xuXG4gICBUaGUgTHd0IGludGVyZmFjZSAoW2x3dC5tbGldKSBwcm92aWRlcyBvbmUgbWFpbiBtZWNoYW5pc20sIHByb21pc2VzLCBhbmQgdHdvXG4gICBcImFzcGVjdHMsXCIgd2hpY2ggYXJlICpub3QqIG5lY2Vzc2FyeSB0byB1bmRlcnN0YW5kIHRoZSBtYWluIG1lY2hhbmlzbVxuICAgcHJvbWlzZXMsIGJ1dCB0aGV5IGFyZSBzdGlsbCB0aGVyZTpcblxuICAgLSBwcm9taXNlIGNhbmNlbGxhdGlvblxuICAgLSBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2VcblxuICAgSWYgeW91IGFyZSBub3QgaW50ZXJlc3RlZCBpbiBjYW5jZWxsYXRpb24gb3Igc3RvcmFnZSwgeW91IGNhbiBpZ25vcmUgdGhlc2VcbiAgIHR3byBjb21wbGljYXRpb25zLCBhbmQgc3RpbGwgZ2V0IGEgcHJldHR5IGdvb2QgdW5kZXJzdGFuZGluZyBvZiB0aGUgY29kZS4gVG9cbiAgIGhlbHAsIGFsbCBpZGVudGlmaWVycyByZWxhdGVkIHRvIGNhbmNlbGxhdGlvbiBjb250YWluIHRoZSBzdHJpbmcgXCJjYW5jZWwsXCJcbiAgIGFuZCBhbGwgaWRlbnRpZmllcnMgcmVsYXRlZCB0byBzdG9yYWdlIGNvbnRhaW4gXCJzdG9yYWdlLlwiXG5cblxuICAgMS4gUHJvbWlzZXNcblxuICAgQSBwcm9taXNlIGlzIGEgY2VsbCB0aGF0IGNhbiBiZSBpbiBvbmUgb2YgdHdvIHN0YXRlczogXCJyZXNvbHZlZFwiIG9yXG4gICBcInBlbmRpbmcuXCJcblxuICAgLSBSZXNvbHZlZCBwcm9taXNlc1xuXG4gICAgIEEgcmVzb2x2ZWQgcHJvbWlzZSBpcyBlaXRoZXIgXCJmdWxmaWxsZWRcIiB3aXRoIGEgdmFsdWUsIG9yIFwicmVqZWN0ZWRcIiB3aXRoXG4gICAgIGFuIGV4Y2VwdGlvbi4gVGhlIHN0YXRlIG9mIGEgcmVzb2x2ZWQgcHJvbWlzZSB3aWxsIG5ldmVyIGNoYW5nZSBhZ2FpbjogYVxuICAgICByZXNvbHZlZCBwcm9taXNlIGlzIGltbXV0YWJsZS4gQSByZXNvbHZlZCBwcm9taXNlIGlzIGJhc2ljYWxseSBlcXVpdmFsZW50XG4gICAgIHRvIGFuIFsoJ2EsIGV4bikgU3RkbGliLnJlc3VsdF0uIFJlc29sdmVkIHByb21pc2VzIGFyZSBwcm9kdWNlZCBpbiB0d29cbiAgICAgd2F5czpcblxuICAgICAtIFtMd3QucmV0dXJuXSwgW0x3dC5mYWlsXSwgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLCBwcm9kdWNlIFwidHJpdmlhbFwiXG4gICAgICAgcHJvbWlzZXMgdGhhdCBhcmUgcmVzb2x2ZWQgZnJvbSB0aGUgc3RhcnQuXG4gICAgIC0gVGhlIG90aGVyIHdheSBpcyB0byByZXNvbHZlIGEgcHJvbWlzZSB0aGF0IHN0YXJ0ZWQgb3V0IHBlbmRpbmcuXG5cbiAgICAgTm90ZSB0aGF0IHJlamVjdGVkIHByb21pc2VzIGhhdmUgbm90aGluZyB0byBkbyB3aXRoIHVuaGFuZGxlZCBleGNlcHRpb25zLlxuXG4gICAtIFBlbmRpbmcgcHJvbWlzZXNcblxuICAgICAuLi5hcmUgdGhvc2UgdGhhdCBtYXkgYmVjb21lIHJlc29sdmVkIGluIHRoZSBmdXR1cmUuIEVhY2ggcGVuZGluZyBwcm9taXNlXG4gICAgIGNhcnJpZXMgYSBsaXN0IG9mIGNhbGxiYWNrcy4gVGhlc2UgY2FsbGJhY2tzIGFyZSBhZGRlZCBieSBmdW5jdGlvbnMgbGlrZVxuICAgICBbTHd0LmJpbmRdLCBhbmQgY2FsbGVkIGJ5IEx3dCBpZi93aGVuIHRoZSBwcm9taXNlIGlzIHJlc29sdmVkLiBUaGVzZVxuICAgICBjYWxsYmFja3MgdHlwaWNhbGx5IGVuZCB1cCByZXNvbHZpbmcgYWRkaXRpb25hbCBwcm9taXNlczsgc2VlIHNlY3Rpb25cbiAgICAgXCJSZXNvbHV0aW9uIGxvb3BcIiBiZWxvdy5cblxuICAgICBQZW5kaW5nIHByb21pc2VzIGFyZSBwcm9kdWNlZCBpbiB0aHJlZSB3YXlzLCBhY2NvcmRpbmcgdG8gaG93IHRoZXkgY2FuIGJlXG4gICAgIHJlc29sdmVkOlxuXG4gICAgIC0gSW5pdGlhbCBwcm9taXNlc1xuXG4gICAgICAgLi4uYXJlIGNyZWF0ZWQgYnkgW0x3dC53YWl0XSBhbmQgW0x3dC50YXNrXS4gVGhlIHVzZXIgb2YgTHd0IHJlc29sdmVzXG4gICAgICAgdGhlc2UgcHJvbWlzZXMgbWFudWFsbHksIHRocm91Z2ggdGhlIHJlc29sdmVycyByZXR1cm5lZCBieSB0aG9zZVxuICAgICAgIGZ1bmN0aW9ucy5cblxuICAgICAtIFNlcXVlbnRpYWwgY29tcG9zaXRpb25cblxuICAgICAgIEZvciBleGFtcGxlLCBbTHd0LmJpbmRdLiBUaGVzZSBwcm9taXNlcyBvbmx5IGFyZSBvbmx5IHJlc29sdmVkIHdoZW4gdGhlXG4gICAgICAgcHJlY2VkaW5nIHNlcXVlbmNlIG9mIHByb21pc2VzIHJlc29sdmVzLiBUaGUgdXNlciBjYW5ub3QgcmVzb2x2ZSB0aGVzZVxuICAgICAgIHByb21pc2VzIGRpcmVjdGx5IChidXQgc2VlIHRoZSBzZWN0aW9uIG9uIGNhbmNlbGxhdGlvbiBiZWxvdykuXG5cbiAgICAgLSBDb25jdXJyZW50IGNvbXBvc2l0aW9uXG5cbiAgICAgICBGb3IgZXhhbXBsZSwgW0x3dC5qb2luXSBvciBbTHd0LmNob29zZV0uIFRoZXNlIHByb21pc2VzIGFyZSBvbmx5IHJlc29sdmVkXG4gICAgICAgd2hlbiBhbGwgb3Igb25lIG9mIGEgc2V0IG9mIFwicHJlY2VkaW5nXCIgcHJvbWlzZXMgcmVzb2x2ZS4gVGhlIHVzZXIgY2Fubm90XG4gICAgICAgcmVzb2x2ZSB0aGVzZSBwcm9taXNlcyBkaXJlY3RseSAoYnV0IHNlZSB0aGUgc2VjdGlvbiBvbiBjYW5jZWxsYXRpb25cbiAgICAgICBiZWxvdykuXG5cblxuICAgMi4gUmVzb2x2ZXJzXG5cbiAgIFJlc29sdmVycyBhcmUgZ2l2ZW4gdG8gdGhlIHVzZXIgYnkgW0x3dC53YWl0XSBhbmQgW0x3dC50YXNrXSwgYW5kIGNhbiBiZSB1c2VkXG4gICBieSB0aGUgdXNlciB0byByZXNvbHZlIHRoZSBjb3JyZXNwb25kaW5nIHByb21pc2VzLiBOb3RlIHRoYXQgdGhpcyBtZWFucyB0aGVcbiAgIHVzZXIgb25seSBldmVyIGdldHMgcmVzb2x2ZXJzIGZvciBpbml0aWFsIHByb21pc2VzLlxuXG4gICBJbnRlcm5hbGx5LCByZXNvbHZlcnMgYXJlIHRoZSBleGFjdCBzYW1lIG9iamVjdHMgYXMgdGhlIHByb21pc2VzIHRoZXlcbiAgIHJlc29sdmUsIGV2ZW4gdGhvdWdoIHRoZSByZXNvbHZlciBpcyBleHBvc2VkIGFzIGEgcmVmZXJlbmNlIG9mIGEgZGlmZmVyZW50XG4gICB0eXBlIGJ5IFtsd3QubWxpXS4gRm9yIGRldGFpbHMgb24gd2h5LCBzZWUgc2VjdGlvbiBcIlR5cGUgc3lzdGVtIGFidXNlXCIgYmVsb3cuXG5cblxuICAgMy4gQ2FsbGJhY2tzXG5cbiAgIC4uLmFyZSBhdHRhY2hlZCBieSBMd3QgdG8gcGVuZGluZyBwcm9taXNlcywgYW5kIGFyZSBydW4gYnkgTHd0IGlmL3doZW4gdGhvc2VcbiAgIHByb21pc2VzIGFyZSByZXNvbHZlZC4gVGhlc2UgY2FsbGJhY2tzIGFyZSBub3QgZGlyZWN0bHkgZXhwb3NlZCB0aHJvdWdoXG4gICBbbHd0Lm1saV0gLS0gdGhleSBhcmUgYSBsb3ctbGV2ZWwgbWVjaGFuaXNtLiBGb3IgZXhhbXBsZSwgdG8gaW1wbGVtZW50XG4gICBbTHd0LmJpbmQgcCBmXSwgTHd0IGF0dGFjaGVzIGEgY2FsbGJhY2sgdG8gW3BdIHRoYXQgZG9lcyBzb21lIGludGVybmFsIEx3dFxuICAgYm9vay1rZWVwaW5nLCBhbmQgdGhlbiBjYWxscyBbZl0gaWYgW3BdIGlzIGZ1bGZpbGxlZCwgYW5kIGRvZXMgc29tZXRoaW5nIGVsc2VcbiAgIGlmIFtwXSBpcyByZWplY3RlZC5cblxuICAgQ2FsbGJhY2tzIGNvbWUgaW4gdHdvIGZsYXZvcnM6IHJlZ3VsYXIgY2FsbGJhY2tzIGFuZCBjYW5jZWwgY2FsbGJhY2tzLiBUaGVcbiAgIG9ubHkgbWF0ZXJpYWwgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtIGFyZSB0aGF0OlxuXG4gICAtIHJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBhbHdheXMgY2FsbGVkIHdoZW4gYSBwcm9taXNlIGlzIHJlc29sdmVkLCBidXQgY2FuY2VsXG4gICAgIGNhbGxiYWNrcyBhcmUgY2FsbGVkLCBpbiBhZGRpdGlvbiwgb25seSBpZiB0aGUgcHJvbWlzZSBpcyBjYW5jZWxlZCwgYW5kXG4gICAtIGFsbCBjYW5jZWwgY2FsbGJhY2tzIG9mIGEgcHJvbWlzZSBhcmUgY2FsbGVkIGJlZm9yZSBhbnkgcmVndWxhciBjYWxsYmFja1xuICAgICBpcyBjYWxsZWQuXG5cbiAgIENhbmNlbGxhdGlvbiBpcyBhIHNwZWNpYWwgY2FzZSBvZiByZXNvbHV0aW9uLCBpbiBwYXJ0aWN1bGFyLCBhIHNwZWNpYWwgY2FzZVxuICAgb2YgcmVqZWN0aW9uLCBidXQgc2VlIHRoZSBzZWN0aW9uIG9uIGNhbmNlbGxhdGlvbiBsYXRlciBiZWxvdy5cblxuXG4gICA0LiBSZXNvbHV0aW9uIGxvb3BcblxuICAgUmVzb2x2aW5nIGEgcGVuZGluZyBwcm9taXNlIHRyaWdnZXJzIGl0cyBjYWxsYmFja3MsIGFuZCB0aG9zZSBtaWdodCByZXNvbHZlXG4gICBtb3JlIHBlbmRpbmcgcHJvbWlzZXMsIHRyaWdnZXJpbmcgbW9yZSBjYWxsYmFja3MsIGV0Yy4gVGhpcyBiZWhhdmlvciBpcyB0aGVcbiAgICpyZXNvbHV0aW9uIGxvb3AqLiBMd3QgaGFzIHNvbWUgbWFjaGluZXJ5IHRvIGF2b2lkIHN0YWNrIG92ZXJmbG93IGFuZCBvdGhlclxuICAgdW5mb3J0dW5hdGUgc2l0dWF0aW9ucyBkdXJpbmcgdGhpcyBsb29wLlxuXG4gICBUaGlzIGNoYWluaW5nIG9mIHByb21pc2UgcmVzb2x1dGlvbnMgdGhyb3VnaCBjYWxsYmFja3MgY2FuIGJlIHNlZW4gYXMgYSBraW5kXG4gICBvZiBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGgsIGluIHdoaWNoIHRoZSBub2RlcyBhcmUgcGVuZGluZyBwcm9taXNlcywgYW5kIHRoZVxuICAgZWRnZXMgYXJlIGNhbGxiYWNrcy4gRHVyaW5nIHRoZSByZXNvbHV0aW9uIGxvb3AsIEx3dCBzdGFydHMgYXQgc29tZSBpbml0aWFsXG4gICBwcm9taXNlIHRoYXQgaXMgZ2V0dGluZyByZXNvbHZlZCBieSB0aGUgdXNlciwgYW5kIHJlY3Vyc2l2ZWx5IHJlc29sdmVzIGFsbFxuICAgZGVwZW5kZW50IHByb21pc2VzLiBUaGUgZ3JhcGggaXMgbW9kaWZpZWQ6IHJlc29sdmVkIHByb21pc2VzIGFyZSBubyBsb25nZXJcbiAgIHBlbmRpbmcsIHNvIHRoZXkgYXJlIG5vIGxvbmdlciBwYXJ0IG9mIHRoZSBncmFwaC5cblxuICAgU29tZSBvZiB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIGV4cGxpY2l0IHRvIEx3dCwgZS5nLiB0aGUgY2FsbGJhY2tzIHJlZ2lzdGVyZWRcbiAgIGJ5IFtMd3QuYmluZF0uIE90aGVycyBhcmUgbm90IHZpc2libGUgdG8gTHd0LCBiZWNhdXNlIHRoZSB1c2VyIGNhbiBhbHdheXNcbiAgIHJlZ2lzdGVyIGEgY2FsbGJhY2sgdXNpbmcgYSBmdW5jdGlvbiBsaWtlIFtMd3Qub25fc3VjY2Vzc10sIGFuZCB1c2UgdGhhdFxuICAgY2FsbGJhY2sgdG8gcmVzb2x2ZSBhbm90aGVyIGluaXRpYWwgcHJvbWlzZS4gQWxsIHRoZSBleHBsaWNpdCBkZXBlbmRlbmNpZXNcbiAgIGFyZSBjcmVhdGVkIGJ5IEx3dCdzIG93biBzZXF1ZW50aWFsIGFuZCBjb25jdXJyZW50IGNvbXBvc2l0aW9uIGZ1bmN0aW9uc1xuICAgKHNvLCBbTHd0LmJpbmRdLCBbTHd0LmpvaW5dLCBldGMpLiBXaGV0aGVyIGRlcGVuZGVuY2llcyBhcmUgZXhwbGljaXQgb3Igbm90XG4gICBpcyByZWxldmFudCBvbmx5IHRvIGNhbmNlbGxhdGlvbi5cblxuXG4gICA1LiBDYW5jZWxsYXRpb25cblxuICAgQXMgZGVzY3JpYmVkIGFib3ZlLCBvcmRpbmFyeSBwcm9taXNlIHJlc29sdXRpb24gcHJvY2VlZHMgZnJvbSBhbiBpbml0aWFsXG4gICBwcm9taXNlLCBmb3J3YXJkIGFsb25nIGNhbGxiYWNrcyB0aHJvdWdoIHRoZSBkZXBlbmRlbmN5IGdyYXBoLiBTaW5jZSBpdFxuICAgc3RhcnRzIGZyb20gYW4gaW5pdGlhbCBwcm9taXNlLCBpdCBjYW4gb25seSBiZSB0cmlnZ2VyZWQgdXNpbmcgYSByZXNvbHZlci5cblxuICAgQ2FuY2VsbGF0aW9uIGlzIGEgc29ydCBvZiBkdWFsIHRvIG9yZGluYXJ5IHJlc29sdXRpb24uIEluc3RlYWQgb2Ygc3RhcnRpbmcgYXRcbiAgIGFuIGluaXRpYWwgcHJvbWlzZS9yZXNvbHZlciwgY2FuY2VsbGF0aW9uIHN0YXJ0cyBhdCAqYW55KiBwcm9taXNlLiBJdCB0aGVuXG4gICBnb2VzICpiYWNrd2FyZHMqIHRocm91Z2ggdGhlIGV4cGxpY2l0IGRlcGVuZGVuY3kgZ3JhcGgsIGxvb2tpbmcgZm9yXG4gICBjYW5jZWxhYmxlIGluaXRpYWwgcHJvbWlzZXMgdG8gY2FuY2VsIC0tIHRob3NlIHRoYXQgd2VyZSBjcmVhdGVkIGJ5XG4gICBbTHd0LnRhc2tdLiBBZnRlciBmaW5kaW5nIHRoZW0sIGNhbmNlbGxhdGlvbiByZXNvbHZlcyB0aGVtIG5vcm1hbGx5IHdpdGhcbiAgIFtSZWplY3RlZCBMd3QuQ2FuY2VsZWRdLCBjYXVzaW5nIGFuIG9yZGluYXJ5IHByb21pc2UgcmVzb2x1dGlvbiBwcm9jZXNzLlxuXG4gICBUbyBzdW1tYXJpemUsIGNhbmNlbGxhdGlvbiBpcyBhIHdheSB0byB0cmlnZ2VyIGFuICpvcmRpbmFyeSogcmVzb2x1dGlvbiBvZlxuICAgcHJvbWlzZXMgY3JlYXRlZCB3aXRoIFtMd3QudGFza10sIGJ5IGZpcnN0IHNlYXJjaGluZyBmb3IgdGhlbSBpbiB0aGUgcHJvbWlzZVxuICAgZGVwZW5kZW5jeSBncmFwaCAod2hpY2ggaXMgYXNzZW1ibGVkIGJ5IFtMd3QuYmluZF0sIFtMd3Quam9pbl0sIGV0YykuXG5cbiAgIFRoaXMgYmFja3dhcmRzIHNlYXJjaCBpcyB0cmlnZ2VyZWQgb25seSBieSBbTHd0LmNhbmNlbF0uIEl0IGlzIGFsc28gcG9zc2libGVcbiAgIGZvciB0aGUgdXNlciB0byBjYW5jZWwgYSBwcm9taXNlIGRpcmVjdGx5IGJ5IHJlamVjdGluZyBpdCB3aXRoXG4gICBbTHd0LkNhbmNlbGVkXSwgYnV0IGluIGFsbCBjYXNlcyB3aGVyZSB0aGUgdXNlciBjYW4gZG8gc28sIHRoZSBzZWFyY2ggd291bGRcbiAgIGJlIHJlZHVuZGFudCBhbnl3YXkgLS0gdGhlIHVzZXIgaGFzIG9ubHkgdHdvIHdheXMgb2YgZGlyZWN0bHkgcmVqZWN0aW5nIGFcbiAgIHByb21pc2Ugd2l0aCBbTHd0LkNhbmNlbGVkXSAob3IgYW55IGV4Y2VwdGlvbiwgZm9yIHRoYXQgbWF0dGVyKTpcblxuICAgLSBUaGUgdXNlciBjYW4gY3JlYXRlIGFuIGluaXRpYWwgcHJvbWlzZSwgdGhlbiByZWplY3QgaXQgdGhyb3VnaCBpdHNcbiAgICAgcmVzb2x2ZXIuIFRoZSBzZWFyY2ggaXMgcmVkdW5kYW50IGJlY2F1c2UgaXQgd291bGQgZmluZCBvbmx5IHRoZSBzYW1lXG4gICAgIGluaXRpYWwgcHJvbWlzZSB0byBjYW5jZWwuXG4gICAtIFRoZSB1c2VyIGNhbiBjcmVhdGUgYSB0cml2aWFsIHByb21pc2UgYnkgY2FsbGluZyBbTHd0LmZhaWwgTHd0LkNhbmNlbGVkXS5cbiAgICAgVGhlIHNlYXJjaCBpcyBhZ2FpbiByZWR1bmRhbnQ7IGluIHRoaXMgY2FzZSBpdCB3b3VsZCBmaW5kIG5vdGhpbmcgdG9cbiAgICAgY2FuY2VsLlxuXG4gICBOb3RlIHRoYXQgdGhlcmUgaXMgYSBxdWlyazogb25seSBwcm9taXNlcyBjcmVhdGVkIGJ5IFtMd3QudGFza10gYXJlXG4gICBzdXNjZXB0aWJsZSB0byBiZWluZyBjYW5jZWxlZCBieSBbTHd0LmNhbmNlbF0sIGJ1dCB0aGUgdXNlciBjYW4gbWFudWFsbHlcbiAgIGNhbmNlbCBpbml0aWFsIHByb21pc2VzIGNyZWF0ZWQgYnkgYm90aCBbTHd0LnRhc2tdIGFuZCBbTHd0LndhaXRdLlxuXG4gICBEdWUgdG8gW0x3dC5jYW5jZWxdLCBwcm9taXNlIGNhbmNlbGxhdGlvbiwgYW5kIHRoZXJlZm9yZSByZXNvbHV0aW9uLCBjYW4gYmVcbiAgIGluaXRpYXRlZCBieSB0aGUgdXNlciB3aXRob3V0IGFjY2VzcyB0byBhIHJlc29sdmVyLiBUaGlzIGlzIGltcG9ydGFudCBmb3JcbiAgIHJlYXNvbmluZyBhYm91dCBzdGF0ZSBjaGFuZ2VzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBMd3QsIGFuZCBpcyByZWZlcmVuY2VkXG4gICBpbiBzb21lIGltcGxlbWVudGF0aW9uIGRldGFpbCBjb21tZW50cy5cblxuXG4gICA2LiBObyBJL09cblxuICAgVGhlIEx3dCBjb3JlIGRlbGliZXJhdGVseSBkb2Vzbid0IGRvIEkvTy4gVGhlIHJlc29sdXRpb24gbG9vcCBzdG9wcyBydW5uaW5nXG4gICBvbmNlIG5vIHByb21pc2VzIGNhbiBiZSByZXNvbHZlZCBpbW1lZGlhdGVseS4gSXQgaGFzIHRvIGJlIHJlc3RhcnRlZCBsYXRlclxuICAgYnkgc29tZSBzdXJyb3VuZGluZyBJL08gbG9vcC4gVGhpcyBJL08gbG9vcCB0eXBpY2FsbHkga2VlcHMgdHJhY2sgb2YgcGVuZGluZ1xuICAgcHJvbWlzZXMgdGhhdCByZXByZXNlbnQgYmxvY2tlZCBvciBpbi1wcm9ncmVzcyBJL087IG90aGVyIHBlbmRpbmcgcHJvbWlzZXNcbiAgIHRoYXQgaW5kaXJlY3RseSBkZXBlbmQgb24gSS9PIGFyZSBub3QgZXhwbGljaXRseSB0cmFja2VkLiBUaGV5IGFyZSByZXRhaW5lZFxuICAgaW4gbWVtb3J5IGJ5IHJlZmVyZW5jZXMgY2FwdHVyZWQgaW5zaWRlIGNhbGxiYWNrcy5cblxuICAgT24gVW5peCBhbmQgV2luZG93cywgYSBzZXBhcmF0ZSB0b3AtbGV2ZWwgbG9vcCwgdHlwaWNhbGx5IFtMd3RfbWFpbi5ydW5dLCBpc1xuICAgbmVjZXNzYXJ5IHRvIHJlcGVhdGVkbHkgY2FsbCBbc2VsZWN0XSwgW2Vwb2xsXSwgb3IgW2tldmVudF0sIGFuZCByZXNvbHZlXG4gICBibG9ja2VkIEkvTyBwcm9taXNlcy5cblxuICAgSW4gSmF2YVNjcmlwdCwgcmVmZXJlbmNlcyB0byBwcm9taXNlcyBhcmUgcmV0YWluZWQgYnkgSmF2YVNjcmlwdCBjb2RlLCB3aGljaFxuICAgaXMsIGluIHR1cm4sIHRyaWdnZXJlZCBieSB0aGUgSlMgZW5naW5lLiBJbiBvdGhlciB3b3JkcywgdGhlIHRvcC1sZXZlbCBsb29wXG4gICBpcyBidXJpZWQgaW5zaWRlIHRoZSBKUyBlbmdpbmUuXG5cbiAgIFRoaXMgc2VwYXJhdGlvbiBvZiB0aGUgTHd0IGNvcmUgZnJvbSB0aGUgdG9wLWxldmVsIEkvTyBsb29wIGtlZXBzIHRoZSBjb3JlXG4gICBwb3J0YWJsZS5cblxuXG4gICA3LiBQcm9taXNlIFwicHJveHlpbmdcIlxuXG4gICBJbiBbTHd0LmJpbmQgOiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XSwgdGhlIG91dGVyIFsnYiB0XSBpcyBjcmVhdGVkIGJ5XG4gICBbYmluZF0gZmlyc3QsIGFuZCByZXR1cm5lZCB0byB0aGUgdXNlci4gVGhlIGlubmVyIFsnYiB0XSBpcyBjcmVhdGVkIGJ5IHRoZVxuICAgdXNlciBsYXRlciwgYW5kIHRoZW4gcmV0dXJuZWQgdG8gW2JpbmRdLiBBdCB0aGF0IHBvaW50LCBbYmluZF0gbmVlZHMgdG8gbWFrZVxuICAgdGhlIGlubmVyIGFuZCBvdXRlciBbJ2IgdF1zIGJlaGF2ZSBpZGVudGljYWxseS5cblxuICAgVGhpcyBpcyBhY2NvbXBsaXNoZWQgYnkgbWFraW5nIG9uZSBvZiB0aGUgcHJvbWlzZXMgcG9pbnQgdG8gdGhlIG90aGVyLiBUaGVcbiAgIGZpcnN0IG9mIHRoZSBwcm9taXNlcyB0aHVzIGJlY29tZXMgYSBcInByb3h5LFwiIGFuZCB0aGUgb3RoZXIgaXMgaXRzXG4gICBcInVuZGVybHlpbmdcIiBwcm9taXNlLlxuXG4gICBBZnRlciB0aGF0LCBhbGwgb3BlcmF0aW9ucyB0aGF0IHdvdWxkIGJlIHBlcmZvcm1lZCBieSBMd3Qgb24gdGhlIHByb3h5IGFyZVxuICAgaW5zdGVhZCBwZXJmb3JtZWQgb24gdGhlIHVuZGVybHlpbmcgcHJvbWlzZS4gVGhpcyBpcyBlbnN1cmVkIGJ5IHRoZSBudW1lcm91c1xuICAgY2FsbHMgdG8gdGhlIGludGVybmFsIGZ1bmN0aW9uIFt1bmRlcmx5aW5nXSBpbiB0aGlzIGZpbGUuXG5cbiAgIEJlY2F1c2Ugb2YgdGhlIHBlcnZhc2l2ZSB1c2Ugb2YgW3VuZGVybHlpbmddLCBwcm94aWVzIGNhbiBiZSBtb3JlIG9yIGxlc3NcbiAgIGlnbm9yZWQgb24gYSBmaXJzdCByZWFkaW5nIHRoZSBjb2RlLiBIb3dldmVyLCBiZWNvbWluZyBhIHByb3h5IGlzIGEga2luZCBvZlxuICAgc3RhdGUgY2hhbmdlLCBhbmQgYW55IHByb21pc2UgdGhhdCBpcyByZXR1cm5lZCBieSBhIGNhbGxiYWNrIHRvIFtiaW5kXSwgb3IgdG9cbiAgIGEgc2ltaWxhciBMd3QgZnVuY3Rpb24sIG1pZ2h0IGJlY29tZSBhIHByb3h5LiBUaGF0IG1lYW5zOiBqdXN0IGFib3V0IGFueVxuICAgcHJvbWlzZSB0aGF0IGlzIGhhbmRlZCB0byB0aGUgdXNlciwgbWlnaHQgYmVjb21lIGEgcHJveHkgcHJvbWlzZSBieSB0aGUgbmV4dFxuICAgdGltZSBMd3Qgc2VlcyBpdC4gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHJlYXNvbmluZyBhYm91dCBwb3NzaWJsZSBzdGF0ZVxuICAgY2hhbmdlcyBpbiBpbXBsZW1lbnRhdGlvbiBvZiBMd3QsIGFuZCBpcyByZWZlcmVuY2VkIGluIHNvbWUgaW1wbGVtZW50YXRpb25cbiAgIGRldGFpbCBjb21tZW50cy5cblxuXG4gICA4LiBTZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2VcblxuICAgTHd0IGhhcyBhIGdsb2JhbCBrZXktdmFsdWUgbWFwLiBUaGUgbWFwIGNhbiBiZSBwcmVzZXJ2ZWQgYWNyb3NzIHNlcXVlbnRpYWxcbiAgIGNvbXBvc2l0aW9uIGZ1bmN0aW9ucywgc28gdGhhdCBpdCBoYXMgdGhlIHNhbWUgc3RhdGUgaW4gdGhlIHVzZXIncyBjYWxsYmFja1xuICAgW2ZdIGFzIGl0IGRpZCBhdCB0aGUgdGltZSB0aGUgdXNlciBjYWxsZWQgW0x3dC5iaW5kIHAgZl0uXG5cbiAgIFRoZSBkZXRhaWxzIGFyZSBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLCBhbmQgZGlzY3Vzc2VkIGluIG1vZHVsZVxuICAgW1NlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZV0uIFRoZSBtYWluIHRoaW5nIHRvIGJlIGF3YXJlIG9mIGlzIHRoZSBtYW55XG4gICByZWZlcmVuY2VzIHRvIFtjdXJyZW50X3N0b3JhZ2VdIHRocm91Z2hvdXQgTHd0LCB3aGljaCBhcmUgbmVlZGVkIHRvIHByb3Blcmx5XG4gICBzYXZlIGFuZCByZXN0b3JlIHRoZSBtYXBwaW5nLlxuXG5cbiAgIDkuIFR5cGUgc3lzdGVtIGFidXNlXG5cbiAgIFRoZSBpbXBsZW1lbnRhdGlvbiB1c2VzIHRoZSB0eXBlIHN5c3RlbSBzb21ld2hhdCBleHRlbnNpdmVseS4gR2VudGxlXG4gICBpbnRyb2R1Y3Rpb25zIGNhbiBiZSBmb3VuZCBoZXJlOlxuXG4gICAgIGh0dHBzOi8vZGlzY3Vzcy5vY2FtbC5vcmcvdC8xNjEvN1xuICAgICBodHRwczovL2Rpc2N1c3Mub2NhbWwub3JnL3QvMTYxLzE2XG5cbiAgIEEgc2hvcnQgc3VtbWFyeSBmb2xsb3dzLlxuXG4gICBUaGUgcHJvbWlzZSBzdGF0ZSBpcywgaW50ZXJuYWxseSwgYSBHQURUIHdoaWNoIGVuY29kZXMgdGhlIHN0YXRlIGluIGl0cyB0eXBlXG4gICBwYXJhbWV0ZXJzLiBUaHVzLCBpZiB5b3UgZG8gW2xldCBwID0gdW5kZXJseWluZyBwXSwgdGhlIHNoYWRvd2luZyByZWZlcmVuY2VcbiAgIFtwXSBpcyBzdGF0aWNhbGx5IGtub3duICpub3QqIHRvIGJlIGEgcHJveHksIGFuZCB0aGUgY29tcGlsZXIga25vd3MgdGhhdCB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgbWF0Y2ggY2FzZSBbUHJveHkgX10gaXMgaW1wb3NzaWJsZS5cblxuICAgVGhlIGV4dGVybmFsIHByb21pc2UgdHlwZSwgWydhIHRdLCBhbmQgdGhlIGV4dGVybmFsIHJlc29sdmVyIHR5cGUsIFsnYSB1XSxcbiAgIGFyZSBub3QgR0FEVHMuIEZ1cnRoZXJtb3JlLCB0aGV5IGFyZSwgcmVzcGVjdGl2ZWx5LCBjb3ZhcmlhbnQgYW5kXG4gICBjb250cmF2YXJpYW50IGluIFsnYV0sIHdoaWxlIHRoZSBpbnRlcm5hbCBwcm9taXNlIHR5cGUgaXMgaW52YXJpYW50IGluIFsnYV0uXG4gICBGb3IgdGhlc2UgcmVhc29ucywgdGhlcmUgYXJlIG5hc3R5IGNhc3RzIGJldHdlZW4gWydhIHRdLCBbJ2EgdV0sIGFuZCB0aGVcbiAgIGludGVybmFsIHByb21pc2UgdHlwZS4gVGhlIGltcGxlbWVudGF0aW9uIGlzLCBvZiBjb3Vyc2UsIHdyaXR0ZW4gaW4gdGVybXMgb2ZcbiAgIHRoZSBpbnRlcm5hbCB0eXBlLlxuXG4gICBDYXN0aW5nIGZyb20gYW4gWydhIHRdIHRvIGFuIGludGVybmFsIHByb21pc2UgcHJvZHVjZXMgYSByZWZlcmVuY2UgZm9yXG4gICB3aGljaCB0aGUgc3RhdGUgaXMgXCJ1bmtub3duXCI6IHRoaXMgaXMgc2ltdWxhdGVkIHdpdGggYSBoZWxwZXIgR0FEVCwgd2hpY2hcbiAgIGVuY29kZXMgZXhpc3RlbnRpYWwgdHlwZXMuIFRoZXJlIGFyZSBzZXZlcmFsIHNpbWlsYXIgY2FzdHMsIHdoaWNoIGFyZSB1c2VkXG4gICB0byBkb2N1bWVudCBwb3NzaWJsZSBzdGF0ZSBjaGFuZ2VzIGJldHdlZW4gdGhlIHRpbWUgYSBwcm9taXNlIGlzIGNyZWF0ZWQsXG4gICBhbmQgdGhlIGxhdGVyIHRpbWUgaXQgaXMgdXNlZCBpbiBhIGNhbGxiYWNrLiBZb3UgY2FuIHNlZSB0aGVzZSBjYXN0cyBpblxuICAgYWN0aW9uIGluIFtMd3QuYmluZF0uIFRoZSBjYXN0IHN5bnRheCBpcyBwcmV0dHkgbGlnaHQsIGFuZCwgYmVzaWRlcyBiZWluZ1xuICAgY29tbWVudGVkIGluIFtiaW5kXSwgYWxsIHN1Y2ggY2FzdHMgYXJlIGRvY3VtZW50ZWQgaW4gbW9kdWxlcyBbUHVibGljX3R5cGVzXVxuICAgYW5kIFtCYXNpY19oZWxwZXJzXS5cblxuXG4gICBJZiB5b3UndmUgbWFkZSBpdCB0aGlzIGZhciwgeW91IGFyZSBhbiBMd3QgZXhwZXJ0ISBSZWpvaWNlISAqKVxuXG5cblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxuKCogU29tZSBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UgdHlwZXNcblxuICAgU2VxdWVuY2UtYXNzb2NpYXRlZCBzdG9yYWdlIGlzIGRlZmluZWQgYW5kIGRvY3VtZW50ZWQgbGF0ZXIsIGluIG1vZHVsZVxuICAgW1NlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZV0uIEhvd2V2ZXIsIHRoZSBmb2xsb3dpbmcgdHlwZXMgYXJlIG1lbnRpb25lZCBpblxuICAgdGhlIGRlZmluaXRpb24gb2YgW3Byb21pc2VdLCBzbyB0aGV5IG11c3QgYmUgZGVmaW5lZCBoZXJlIGZpcnN0LiAqKVxubW9kdWxlIFN0b3JhZ2VfbWFwID1cbiAgTWFwLk1ha2VcbiAgICAoc3RydWN0XG4gICAgICB0eXBlIHQgPSBpbnRcbiAgICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGVuZClcbnR5cGUgc3RvcmFnZSA9ICh1bml0IC0+IHVuaXQpIFN0b3JhZ2VfbWFwLnRcblxuXG5cbm1vZHVsZSBNYWluX2ludGVybmFsX3R5cGVzID1cbnN0cnVjdFxuICAoKiBQaGFudG9tIHR5cGVzIGZvciB1c2Ugd2l0aCB0eXBlcyBbcHJvbWlzZV0gYW5kIFtzdGF0ZV0uIFRoZXNlIGFyZSBuZXZlclxuICAgICBjb25zdHJ1Y3RlZDsgdGhlIHB1cnBvc2Ugb2YgdGhlIGNvbnN0cnVjdG9ycyBpcyB0byBwcm92ZSB0byB0aGUgdHlwZVxuICAgICBjaGVja2VyIHRoYXQgdGhlc2UgdHlwZXMgYXJlIGRpc3RpbmN0IGZyb20gZWFjaCBvdGhlci4gV2FybmluZyAzNywgXCJ1bnVzZWRcbiAgICAgY29uc3RydWN0b3IsXCIgdGhlcmVmb3JlIGhhcyB0byBiZSB0ZW1wb3JhcmlseSBzdXBwcmVzc2VkLiAqKVxuXG4gIFtAQEBvY2FtbC53YXJuaW5nIFwiLTM3XCJdXG5cbiAgdHlwZSB1bmRlcmx5aW5nID0gcHJpdmF0ZSBVbmRlcmx5aW5nX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG4gIHR5cGUgcHJveHkgPSBwcml2YXRlIFByb3h5X2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG5cbiAgdHlwZSByZXNvbHZlZCA9IHByaXZhdGUgUmVzb2x2ZWRfYW5kX3RoaXNfY29uc3RydWN0b3JfaXNfbm90X3VzZWRcbiAgdHlwZSBwZW5kaW5nID0gcHJpdmF0ZSBQZW5kaW5nX2FuZF90aGlzX2NvbnN0cnVjdG9yX2lzX25vdF91c2VkXG5cbiAgW0BAQG9jYW1sLndhcm5pbmcgXCIrMzdcIl1cblxuXG5cbiAgKCogUHJvbWlzZXMgcHJvcGVyLiAqKVxuXG4gIHR5cGUgKCdhLCAndSwgJ2MpIHByb21pc2UgPSB7XG4gICAgbXV0YWJsZSBzdGF0ZSA6ICgnYSwgJ3UsICdjKSBzdGF0ZTtcbiAgfVxuXG4gIGFuZCAoXywgXywgXykgc3RhdGUgPVxuICAgIHwgRnVsZmlsbGVkIDogJ2EgICAgICAgICAgICAgICAgICAtPiAoJ2EsIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZVxuICAgIHwgUmVqZWN0ZWQgIDogZXhuICAgICAgICAgICAgICAgICAtPiAoIF8sIHVuZGVybHlpbmcsIHJlc29sdmVkKSBzdGF0ZVxuICAgIHwgUGVuZGluZyAgIDogJ2EgY2FsbGJhY2tzICAgICAgICAtPiAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpICBzdGF0ZVxuICAgIHwgUHJveHkgICAgIDogKCdhLCBfLCAnYykgcHJvbWlzZSAtPiAoJ2EsIHByb3h5LCAgICAgICdjKSAgICAgICBzdGF0ZVxuXG4gICgqIE5vdGU6XG5cbiAgICAgQSBwcm9taXNlIHdob3NlIHN0YXRlIGlzIFtQcm94eSBfXSBpcyBhIFwicHJveHlcIiBwcm9taXNlLiBBIHByb21pc2Ugd2hvc2VcbiAgICAgc3RhdGUgaXMgKm5vdCogW1Byb3h5IF9dIGlzIGFuIFwidW5kZXJseWluZ1wiIHByb21pc2UuXG5cbiAgICAgVGhlIFwidW5kZXJseWluZyBwcm9taXNlIG9mIFtwXVwiIGlzOlxuXG4gICAgIC0gW3BdLCBpZiBbcF0gaXMgaXRzZWxmIHVuZGVybHlpbmcuXG4gICAgIC0gT3RoZXJ3aXNlLCBbcF0gaXMgYSBwcm94eSBhbmQgaGFzIHN0YXRlIFtQcm94eSBwJ10uIFRoZSB1bmRlcmx5aW5nXG4gICAgICAgcHJvbWlzZSBvZiBbcF0gaXMgdGhlIHVuZGVybHlpbmcgcHJvbWlzZSBvZiBbcCddLlxuXG4gICAgIEluIG90aGVyIHdvcmRzLCB0byBmaW5kIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgYSBwcm94eSwgTHd0IGZvbGxvd3MgdGhlXG4gICAgIFtQcm94eSBfXSBsaW5rcyB0byB0aGUgZW5kLiAqKVxuXG4gICgqIE5vdGU6XG5cbiAgICAgV2hlbiBhIHByb21pc2UgaXMgcmVzb2x2ZWQsIG9yIGJlY29tZXMgYSBwcm94eSwgaXRzIHN0YXRlIGZpZWxkIGlzXG4gICAgIG11dGF0ZWQuIFRoaXMgaW52YWxpZGF0ZXMgdGhlIHR5cGUgaW52YXJpYW50cyBvbiB0aGUgcHJvbWlzZS4gU2VlIGludGVybmFsXG4gICAgIGZ1bmN0aW9uIFtzZXRfcHJvbWlzZV9zdGF0ZV0gZm9yIGRldGFpbHMgYWJvdXQgdGhhdC5cblxuICAgICBXaGVuIGFuIEx3dCBmdW5jdGlvbiBoYXMgYSByZWZlcmVuY2UgdG8gYSBwcm9taXNlLCBhbmQgYWxzbyByZWdpc3RlcnMgYVxuICAgICBjYWxsYmFjayB0aGF0IGhhcyBhIHJlZmVyZW5jZSB0byB0aGUgc2FtZSBwcm9taXNlLCB0aGUgaW52YXJpYW50cyBvbiB0aGVcbiAgICAgcmVmZXJlbmNlIG1heSBiZWNvbWUgaW52YWxpZCBieSB0aGUgdGltZSB0aGUgY2FsbGJhY2sgaXMgY2FsbGVkLiBBbGwgc3VjaFxuICAgICBjYWxsYmFja3MgaGF2ZSBjb21tZW50cyBleHBsYWluaW5nIHdoYXQgdGhlIHZhbGlkIGludmFyaWFudHMgYXJlIGF0IHRoYXRcbiAgICAgcG9pbnQsIGFuZC9vciBjYXN0cyB0byAoMSkgZ2V0IHRoZSBjb3JyZWN0IHR5cGluZyBhbmQgKDIpIGRvY3VtZW50IHRoZVxuICAgICBwb3RlbnRpYWwgc3RhdGUgY2hhbmdlIGZvciByZWFkZXJzIG9mIHRoZSBjb2RlLiAqKVxuXG5cblxuICAoKiBDYWxsYmFjayBpbmZvcm1hdGlvbiBmb3IgcGVuZGluZyBwcm9taXNlcy4gKilcblxuICBhbmQgJ2EgY2FsbGJhY2tzID0ge1xuICAgIG11dGFibGUgcmVndWxhcl9jYWxsYmFja3MgOiAnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3Q7XG4gICAgbXV0YWJsZSBjYW5jZWxfY2FsbGJhY2tzICA6ICdhIGNhbmNlbF9jYWxsYmFja19saXN0O1xuICAgIG11dGFibGUgaG93X3RvX2NhbmNlbCAgICAgOiBob3dfdG9fY2FuY2VsO1xuICAgIG11dGFibGUgY2xlYW51cHNfZGVmZXJyZWQgOiBpbnQ7XG4gIH1cblxuICBhbmQgJ2EgcmVndWxhcl9jYWxsYmFjayA9ICdhIHJlc29sdmVkX3N0YXRlIC0+IHVuaXRcblxuICBhbmQgY2FuY2VsX2NhbGxiYWNrID0gdW5pdCAtPiB1bml0XG5cbiAgYW5kICdhIHJlc29sdmVkX3N0YXRlID0gKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVcblxuICBhbmQgaG93X3RvX2NhbmNlbCA9XG4gICAgfCBOb3RfY2FuY2VsYWJsZSAgICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvd190b19jYW5jZWxcbiAgICB8IENhbmNlbF90aGlzX3Byb21pc2UgICAgICAgICA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG93X3RvX2NhbmNlbFxuICAgIHwgUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgICAgIDogKF8sIF8sIF8pIHByb21pc2UgICAgICAtPiBob3dfdG9fY2FuY2VsXG4gICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgOiAoXywgXywgXykgcHJvbWlzZSBsaXN0IC0+IGhvd190b19jYW5jZWxcblxuICBhbmQgJ2EgcmVndWxhcl9jYWxsYmFja19saXN0ID1cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBvZlxuICAgICAgJ2EgcmVndWxhcl9jYWxsYmFja19saXN0ICogJ2EgcmVndWxhcl9jYWxsYmFja19saXN0XG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIG9mXG4gICAgICAnYSByZWd1bGFyX2NhbGxiYWNrXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2sgb2ZcbiAgICAgICdhIHJlZ3VsYXJfY2FsbGJhY2sgb3B0aW9uIHJlZlxuXG4gIGFuZCBfIGNhbmNlbF9jYWxsYmFja19saXN0ID1cbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5IDpcbiAgICAgIF8gY2FuY2VsX2NhbGxiYWNrX2xpc3RcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCA6XG4gICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdCAqICdhIGNhbmNlbF9jYWxsYmFja19saXN0IC0+XG4gICAgICAgICdhIGNhbmNlbF9jYWxsYmFja19saXN0XG4gICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jYWxsYmFjayA6XG4gICAgICBzdG9yYWdlICogY2FuY2VsX2NhbGxiYWNrIC0+XG4gICAgICAgIF8gY2FuY2VsX2NhbGxiYWNrX2xpc3RcbiAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIDpcbiAgICAgICgnYSwgXywgXykgcHJvbWlzZSBMd3Rfc2VxdWVuY2Uubm9kZSAtPlxuICAgICAgICAnYSBjYW5jZWxfY2FsbGJhY2tfbGlzdFxuXG4gICgqIE5vdGVzOlxuXG4gICAgIFRoZXNlIHR5cGUgZGVmaW5pdGlvbnMgYXJlIGd1aWx0eSBvZiBwZXJmb3JtaW5nIHNldmVyYWwgb3B0aW1pemF0aW9ucyxcbiAgICAgd2l0aG91dCB3aGljaCB0aGV5IHdvdWxkIGJlIG11Y2ggZWFzaWVyIHRvIHVuZGVyc3RhbmQuXG5cbiAgICAgLSBUaGUgdHlwZSBwYXJhbWV0ZXJzIG9mIFsnYSByZXNvbHZlZF9zdGF0ZV0gZ3VhcmFudGVlIHRoYXQgaXQgaXMgZWl0aGVyXG4gICAgICAgW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10uIFNvLCBpdCBpcyBlcXVpdmFsZW50IHRvXG4gICAgICAgWygnYSwgZXhuKSBTdGRsaWIucmVzdWx0XSwgYW5kLCBpbmRlZWQsIHNob3VsZCBoYXZlIGFuIGlkZW50aWNhbFxuICAgICAgIG1lbW9yeSByZXByZXNlbnRhdGlvbi5cblxuICAgICAtIEFzIHBlciB0aGUgT3ZlcnZpZXcsIHRoZXJlIGFyZSByZWd1bGFyIGNhbGxiYWNrcyBhbmQgY2FuY2VsIGNhbGxiYWNrcy5cbiAgICAgICBDYW5jZWwgY2FsbGJhY2tzIGFyZSBjYWxsZWQgb25seSBvbiBjYW5jZWxsYXRpb24sIGFuZCwgdGhlbiwgYmVmb3JlIGFueVxuICAgICAgIHJlZ3VsYXIgY2FsbGJhY2tzIGFyZSBjYWxsZWQuXG5cbiAgICAgICBEZXNwaXRlIHRoZSBkaWZmZXJlbnQgdHlwZXMgZm9yIHRoZSB0d28ga2luZHMgb2YgY2FsbGJhY2tzLCB0aGV5IGFyZVxuICAgICAgIG90aGVyd2lzZSB0aGUgc2FtZS4gQ2FuY2VsIGNhbGxiYWNrcyBqdXN0IGRvbid0IG5lZWQgYSByZXN1bHQgc3RhdGVcbiAgICAgICBhcmd1bWVudCwgYmVjYXVzZSBpdCBpcyBrbm93biB0byBiZSBbUmVqZWN0ZWQgQ2FuY2VsZWRdLlxuXG4gICAgIC0gUmVndWxhciBjYWxsYmFja3MgYXJlIG5vdCBhbGxvd2VkIHRvIHJhaXNlIGV4Y2VwdGlvbnMuIEFsbCByZWd1bGFyXG4gICAgICAgY2FsbGJhY2tzIGFyZSBjcmVhdGVkIGluIHRoaXMgZmlsZSwgc28gdGhpcyBjYW4gYmUgY2hlY2tlZC5cblxuICAgICAgIENhbmNlbCBjYWxsYmFja3MgY2FuIHJhaXNlIGV4Y2VwdGlvbnMsIGJ1dCBpZiB0aGV5IGRvIHNvLCB0aGUgZXhjZXB0aW9uc1xuICAgICAgIGFyZSBwYXNzZWQgdG8gW2FzeW5jX2V4Y2VwdGlvbl9ob29rXS5cblxuICAgICAtIFtob3dfdG9fY2FuY2VsXSBpbXBsZW1lbnRzIHRoZSBkZXBlbmRlbmN5IGdyYXBoIG1lbnRpb25lZCBpbiB0aGVcbiAgICAgICBPdmVydmlldy4gSXQgaXMgdHJhdmVyc2VkIGJhY2t3YXJkcyBkdXJpbmcgW0x3dC5jYW5jZWxdLiBJdCBpcyBhIEdBRFRcbiAgICAgICBiZWNhdXNlIHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGFjdHVhbCB0eXBlcyBvZiB0aGUgcHJvbWlzZSByZWZlcmVuY2VzXG4gICAgICAgc3RvcmVkLCBvciB0aGVpciBpbnZhcmlhbnRzLiBUaGUgY29uc3RydWN0b3JzIGNvcnJlc3BvbmQgdG8gcGVuZGluZ1xuICAgICAgIHByb21pc2Uga2luZHMgYXMgZm9sbG93czpcbiAgICAgICAgIC0gW05vdF9jYW5jZWxhYmxlXTogaW5pdGlhbCwgW0x3dC53YWl0XS5cbiAgICAgICAgIC0gW0NhbmNlbF90aGlzX3Byb21pc2VdOiBpbml0aWFsLCBbTHd0LnRhc2tdLlxuICAgICAgICAgLSBbUHJvcGFnYXRlX2NhbmNlbF90b19vbmVdOiBzZXF1ZW50aWFsIGNvbXBvc2l0aW9uLCBlLmcuIFtMd3QuYmluZF0uXG4gICAgICAgICAtIFtQcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWxdOiBjb25jdXJyZW50IGNvbXBvc2l0aW9uLCBlLmcuXG4gICAgICAgICAgIFtMd3Quam9pbl0uXG5cbiAgICAgLSBUaGUgdHdvIGNhbGxiYWNrIGxpc3QgdHlwZXMgYXJlIG9yZGluYXJ5IGFwcGVuZC1mcmllbmRseSBsaXN0cywgd2l0aCB0d29cbiAgICAgICBvcHRpbWl6YXRpb25zIGlubGluZWQ6XG5cbiAgICAgICAtIFsnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3RdIGFwcGFyZW50bHkgaGFzIHR3byBcImtpbmRzXCIgb2YgcmVndWxhclxuICAgICAgICAgY2FsbGJhY2tzLCBpbXBsaWNpdGx5IHJlbW92ZWQgYW5kIGV4cGxpY2l0bHkgcmVtb3ZhYmxlLiBBbGwgY2FsbGJhY2tzXG4gICAgICAgICBhcmUgcmVtb3ZhYmxlLiBJdCdzIGp1c3QgdGhhdCwgZm9yIHNvbWUgY2FsbGJhY2tzLCB0aGV5IHdpbGwgb25seSBiZVxuICAgICAgICAgcmVtb3ZlZCBhdCB0aGUgc2FtZSB0aW1lIHRoYXQgdGhlIHByb21pc2UgdGhleSBhcmUgYXR0YWNoZWQgdG8gYmVjb21lc1xuICAgICAgICAgcmVzb2x2ZWQuIFdoZW4gdGhhdCBoYXBwZW5zLCB0aGUgZW50aXJlIHN0YXRlIG9mIHRoYXQgcHJvbWlzZSBjaGFuZ2VzXG4gICAgICAgICB0byBbRnVsZmlsbGVkIF9dIG9yIFtSZWplY3RlZCBfXSwgYW5kIHRoZSByZWZlcmVuY2UgdG8gdGhlIHdob2xlXG4gICAgICAgICBjYWxsYmFjayBsaXN0IGlzIHNpbXBseSBsb3N0LiBUaGlzIFwicmVtb3Zlc1wiIHRoZSBjYWxsYmFjay4gRm9yIHRoZXNlXG4gICAgICAgICBjYWxsYmFja3MsIFsnYSByZWd1bGFyX2NhbGxiYWNrX2xpc3RdIGF0dGVtcHRzIHRvIHRyaW0gYW4gb3B0aW9uIGFuZCBhXG4gICAgICAgICByZWZlcmVuY2UgY2VsbCB3aXRoIHRoZVxuICAgICAgICAgW1JlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2tdIGNvbnN0cnVjdG9yLlxuXG4gICAgICAgLSBbJ2EgY2FuY2VsX2NhbGxiYWNrX2xpc3RdIGhhc1xuICAgICAgICAgW0NhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGVdLCB3aGljaCBpcyB0aGUgc2FtZSBhc1xuICAgICAgICAgW0NhbmNlbF9jYWxsYmFja19saXN0X2NhbGxiYWNrIChfLCAoZnVuIF8gLT5cbiAgICAgICAgICAgTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlKSldLlxuICAgICAgICAgVGhpcyB3YXMgcHJvYmFibHkgZG9uZSB0byBhdm9pZCBhIGNsb3N1cmUgYWxsb2NhdGlvbi5cblxuICAgICAtIFRoZSBbY2xlYW51cHNfZGVmZXJyZWRdIGZpZWxkIGlzIGV4cGxhaW5lZCBpbiBtb2R1bGVcbiAgICAgICBbUGVuZGluZ19jYWxsYmFja3NdLiAqKVxuZW5kXG5vcGVuIE1haW5faW50ZXJuYWxfdHlwZXNcblxuXG5cbm1vZHVsZSBQdWJsaWNfdHlwZXMgPVxuc3RydWN0XG4gIHR5cGUgKydhIHRcbiAgdHlwZSAtJ2EgdVxuXG4gIGxldCB0b19wdWJsaWNfcHJvbWlzZSA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAnYSB0ID0gT2JqLm1hZ2ljXG4gIGxldCB0b19wdWJsaWNfcmVzb2x2ZXIgOiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gJ2EgdSA9IE9iai5tYWdpY1xuXG4gIHR5cGUgXyBwYWNrZWRfcHJvbWlzZSA9XG4gICAgfCBJbnRlcm5hbCA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAnYSBwYWNrZWRfcHJvbWlzZVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgbGV0IHRvX2ludGVybmFsX3Byb21pc2UgKHAgOiAnYSB0KSA6ICdhIHBhY2tlZF9wcm9taXNlID1cbiAgICBJbnRlcm5hbCAoT2JqLm1hZ2ljIHApXG4gIGxldCB0b19pbnRlcm5hbF9yZXNvbHZlciAociA6ICdhIHUpIDogJ2EgcGFja2VkX3Byb21pc2UgPVxuICAgIEludGVybmFsIChPYmoubWFnaWMgcilcblxuICAoKiBNb3N0IGZ1bmN0aW9ucyB0aGF0IHRha2UgYSBwdWJsaWMgcHJvbWlzZSAoWydhIHRdKSBjb252ZXJ0IGl0IHRvIGFuXG4gICAgIGludGVybmFsIHByb21pc2UgYXMgZm9sbG93czpcblxuICAgICAgICgqIHAgOiAnYSB0ICopXG5cbiAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgICAgKCogcCA6ICgnYSwgdSwgYykgcHJvbWlzZSwgd2hlcmUgdSBhbmQgYyBhcmUgZnJlc2ggdHlwZXMsIGkuZS4gdGhlXG4gICAgICAgICAgaW52YXJpYW50cyBvbiBwIGFyZSB1bmtub3duLiAqKVxuXG4gICAgIFRoaXMgY2FzdCBpcyBhIG5vLW9wIGNhc3QuIEl0IG9ubHkgcHJvZHVjZXMgYSByZWZlcmVuY2Ugd2l0aCBhIGRpZmZlcmVudFxuICAgICB0eXBlLiBUaGUgaW50cm9kdWN0aW9uIGFuZCBpbW1lZGlhdGUgZWxpbWluYXRpb24gb2YgW0ludGVybmFsIF9dIHNlZW1zIHRvXG4gICAgIGJlIG9wdGltaXplZCBhd2F5IGV2ZW4gb24gb2xkZXIgdmVyc2lvbnMgb2YgT0NhbWwgdGhhdCBkb24ndCBoYXZlIEZsYW1iZGFcbiAgICAgYW5kIGRvbid0IHN1cHBvcnQgW1tAQG9jYW1sLnVuYm94ZWRdXS4gKilcblxuICAoKiBUaGlzIGNvdWxkIHByb2JhYmx5IHNhdmUgYW4gYWxsb2NhdGlvbiBieSB1c2luZyBbT2JqLm1hZ2ljXS4gKilcbiAgbGV0IHN0YXRlX29mX3Jlc3VsdCA9IGZ1bmN0aW9uXG4gICAgfCBPayB4IC0+IEZ1bGZpbGxlZCB4XG4gICAgfCBFcnJvciBleG4gLT4gUmVqZWN0ZWQgZXhuXG5lbmRcbmluY2x1ZGUgUHVibGljX3R5cGVzXG5cblxuXG5tb2R1bGUgQmFzaWNfaGVscGVycyA6XG5zaWdcbiAgdmFsIGlkZW50aWNhbCA6ICgnYSwgXywgXykgcHJvbWlzZSAtPiAoJ2EsIF8sIF8pIHByb21pc2UgLT4gYm9vbFxuICB2YWwgdW5kZXJseWluZyA6ICgnYSwgJ3UsICdjKSBwcm9taXNlIC0+ICgnYSwgdW5kZXJseWluZywgJ2MpIHByb21pc2VcblxuICB0eXBlICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkID1cbiAgICB8IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb2YgKCdhLCAndSwgJ2MpIHByb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuICB2YWwgc2V0X3Byb21pc2Vfc3RhdGUgOlxuICAgICgnYSwgXywgXykgcHJvbWlzZSAtPiAoJ2EsICd1LCAnYykgc3RhdGUgLT4gKCdhLCAndSwgJ2MpIHN0YXRlX2NoYW5nZWRcblxuICB0eXBlICdhIG1heV9ub3dfYmVfcHJveHkgPVxuICAgIHwgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IDpcbiAgICAgICgnYSwgXywgcGVuZGluZykgcHJvbWlzZSAtPiAnYSBtYXlfbm93X2JlX3Byb3h5XG4gICAgW0BAb2NhbWwudW5ib3hlZF1cbiAgdmFsIG1heV9ub3dfYmVfcHJveHkgOlxuICAgICgnYSwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSAtPiAnYSBtYXlfbm93X2JlX3Byb3h5XG5lbmQgPVxuc3RydWN0XG4gICgqIENoZWNrcyBwaHlzaWNhbCBlcXVhbGl0eSAoWz09XSkgb2YgdHdvIGludGVybmFsIHByb21pc2VzLiBVbmxpa2UgWz09XSwgZG9lc1xuICAgICBub3QgZm9yY2UgdW5pZmljYXRpb24gb2YgdGhlaXIgaW52YXJpYW50cy4gKilcbiAgbGV0IGlkZW50aWNhbCBwMSBwMiA9XG4gICAgKHRvX3B1YmxpY19wcm9taXNlIHAxKSA9PSAodG9fcHVibGljX3Byb21pc2UgcDIpXG5cbiAgKCogW3VuZGVybHlpbmcgcF0gZXZhbHVhdGVzIHRvIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgW3BdLlxuXG4gICAgIElmIG11bHRpcGxlIFtQcm94eSBfXSBsaW5rcyBhcmUgdHJhdmVyc2VkLCBbdW5kZXJseWluZ10gdXBkYXRlcyBhbGwgdGhlXG4gICAgIHByb3hpZXMgdG8gcG9pbnQgaW1tZWRpYXRlbHkgdG8gdGhlaXIgZmluYWwgdW5kZXJseWluZyBwcm9taXNlLiAqKVxuICBsZXQgcmVjIHVuZGVybHlpbmdcbiAgICAgIDogdHlwZSB1IGMuICgnYSwgdSwgYykgcHJvbWlzZSAtPiAoJ2EsIHVuZGVybHlpbmcsIGMpIHByb21pc2UgPVxuICAgIGZ1biBwIC0+XG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IChwIDogKF8sIHVuZGVybHlpbmcsIF8pIHByb21pc2UpXG4gICAgfCBSZWplY3RlZCBfIC0+IHBcbiAgICB8IFBlbmRpbmcgXyAtPiBwXG4gICAgfCBQcm94eSBwJyAtPlxuICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcgaW5cbiAgICAgIGlmIG5vdCAoaWRlbnRpY2FsIHAnJyBwJykgdGhlblxuICAgICAgICBwLnN0YXRlIDwtIFByb3h5IHAnJztcbiAgICAgIHAnJ1xuXG5cblxuICB0eXBlICgnYSwgJ3UsICdjKSBzdGF0ZV9jaGFuZ2VkID1cbiAgICB8IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgb2YgKCdhLCAndSwgJ2MpIHByb21pc2VcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBzZXRfcHJvbWlzZV9zdGF0ZSBwIHN0YXRlID1cbiAgICBsZXQgcCA6IChfLCBfLCBfKSBwcm9taXNlID0gT2JqLm1hZ2ljIHAgaW5cbiAgICBwLnN0YXRlIDwtIHN0YXRlO1xuICAgIFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcFxuXG4gICgqIFtzZXRfcHJvbWlzZV9zdGF0ZSBwIHN0YXRlXSBtdXRhdGVzIHRoZSBzdGF0ZSBvZiBbcF0sIGFuZCBldmFsdWF0ZXMgdG8gYVxuICAgICAod3JhcHBlZCkgcmVmZXJlbmNlIHRvIFtwXSB3aXRoIHRoZSBzYW1lIGludmFyaWFudHMgYXMgb24gW3N0YXRlXS4gVGhlXG4gICAgIG9yaWdpbmFsIHJlZmVyZW5jZSBbcF0gc2hvdWxkIGJlIHNoYWRvd2VkIHdoZW4gY2FsbGluZyB0aGlzIGZ1bmN0aW9uOlxuXG4gICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9IHNldF9wcm9taXNlX3N0YXRlIHAgKEZ1bGZpbGxlZCA0MikgaW4gLi4uXG5cbiAgICAgVGhpcyBpcyBhIGtpbmQgb2YgY2hlYXAgaW1pdGF0aW9uIG9mIGxpbmVhciB0eXBpbmcsIHdoaWNoIGlzIGdvb2QgZW5vdWdoXG4gICAgIGZvciB0aGUgbmVlZHMgb2YgW2x3dC5tbF0uXG5cbiAgICAgSW50ZXJuYWwgZnVuY3Rpb25zIHRoYXQgdHJhbnNpdGl2ZWx5IGNhbGwgW3NldF9wcm9taXNlX3N0YXRlXSBsaWtld2lzZVxuICAgICByZXR1cm4gdGhlIG5ldyByZWZlcmVuY2UuIFRoaXMgZW5kcyBhdCBzb21lIHRvcC1sZXZlbCBmdW5jdGlvbiwgdHlwaWNhbGx5XG4gICAgIGVpdGhlciBhIGNhbGxiYWNrIG9yIGEgZnVuY3Rpb24gaW4gdGhlIHB1YmxpYyBBUEkuIFRoZXJlLCB0aGUgbmV3IHJlZmVyZW5jZVxuICAgICBpcyBzdGlsbCBib3VuZCwgYnV0IGlzIHRoZW4gZXhwbGljaXRseSBpZ25vcmVkLlxuXG4gICAgIFRoZSBzdGF0ZSBvZiBhIHByb21pc2UgaXMgbmV2ZXIgdXBkYXRlZCBkaXJlY3RseSBvdXRzaWRlIHRoaXMgbW9kdWxlXG4gICAgIFtCYXNpY19oZWxwZXJzXS4gQWxsIHVwZGF0ZXMgZWxzZXdoZXJlIGFyZSBkb25lIHRocm91Z2hcbiAgICAgW3NldF9wcm9taXNlX3N0YXRlXS5cblxuICAgICBUbyBhdm9pZCBwcm9ibGVtcyB3aXRoIHR5cGUtbGV2ZWwgaW52YXJpYW50cyBub3QgbWF0Y2hpbmcgcmVhbGl0eSwgZGF0YVxuICAgICBzdHJ1Y3R1cmVzIGRvIG5vdCBzdG9yZSBwcm9taXNlcyB3aXRoIGNvbmNyZXRlIGludmFyaWFudHMgLS0gZXhjZXB0XG4gICAgIHJlc29sdmVkIHByb21pc2VzLCB3aGljaCBhcmUgaW1tdXRhYmxlLiBJbmRlZWQsIGlmIG9uZSBsb29rcyBhdFxuICAgICBkZWZpbml0aW9ucyBvZiBkYXRhIHN0cnVjdHVyZXMgdGhhdCBjYW4gc3RvcmUgcGVuZGluZyBwcm9taXNlcywgZS5nLiB0aGVcbiAgICAgW2hvd190b19jYW5jZWxdIGdyYXBoLCB0aGUgaW52YXJpYW50cyBhcmUgZXhpc3RlbnRpYWxseSBxdWFudGlmaWVkLlxuXG4gICAgIE5vdGU6IGl0J3MgcG9zc2libGUgdG8gc3RhdGljYWxseSBkaXNhbGxvdyB0aGUgc2V0dGluZyBvZiB0aGUgW3N0YXRlXSBmaWVsZFxuICAgICBieSBtYWtpbmcgdHlwZSBbcHJvbWlzZV0gcHJpdmF0ZS4gSG93ZXZlciwgdGhhdCBzZWVtcyB0byByZXF1aXJlIHdyaXRpbmcgYVxuICAgICBzaWduYXR1cmUgdGhhdCBpcyBhIG5lYXItZHVwbGljYXRlIG9mIFtNYWluX2ludGVybmFsX3R5cGVzXSwgb3Igc29tZSBhYnVzZVxuICAgICBvZiBmdW5jdG9ycy4gKilcblxuXG5cbiAgdHlwZSAnYSBtYXlfbm93X2JlX3Byb3h5ID1cbiAgICB8IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSA6XG4gICAgICAoJ2EsIF8sIHBlbmRpbmcpIHByb21pc2UgLT4gJ2EgbWF5X25vd19iZV9wcm94eVxuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgbGV0IG1heV9ub3dfYmVfcHJveHkgcCA9IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwXG5cbiAgKCogTWFueSBmdW5jdGlvbnMsIGZvciBleGFtcGxlIFtMd3QuYmluZF0gYW5kIFtMd3Quam9pbl0sIGNyZWF0ZSBhIGZyZXNoXG4gICAgIHBlbmRpbmcgcHJvbWlzZSBbcF0gYW5kIHJldHVybiBpdCB0byB0aGUgdXNlci5cblxuICAgICBUaGV5IGRvIG5vdCByZXR1cm4gYSBjb3JyZXNwb25kaW5nIHJlc29sdmVyLiBUaGF0IG1lYW5zIHRoYXQgb25seSB0aGVcbiAgICAgZnVuY3Rpb24gaXRzZWxmICh0eXBpY2FsbHksIGEgY2FsbGJhY2sgcmVnaXN0ZXJlZCBieSBpdCkgY2FuIHJlc29sdmUgW3BdLlxuICAgICBUaGUgb25seSB0aGluZyB0aGUgdXNlciBjYW4gZG8gZGlyZWN0bHkgaXMgdHJ5IHRvIGNhbmNlbCBbcF0sIGJ1dCwgc2luY2VcbiAgICAgW3BdIGlzIG5vdCBhbiBpbml0aWFsIHByb21pc2UsIHRoZSBjYW5jZWxsYXRpb24gYXR0ZW1wdCBzaW1wbHkgcHJvcGFnYXRlc1xuICAgICBwYXN0IFtwXSB0byBbcF0ncyBwcmVkZWNlc3NvcnMuIElmIHRoYXQgZXZlbnR1YWxseSByZXN1bHRzIGluIGNhbmNlbGluZ1xuICAgICBbcF0sIGl0IHdpbGwgYmUgdGhyb3VnaCB0aGUgbm9ybWFsIG1lY2hhbmlzbXMgb2YgdGhlIGZ1bmN0aW9uIChlLmcuXG4gICAgIFtMd3QuYmluZF0ncyBjYWxsYmFjaykuXG5cbiAgICAgQXMgYSByZXN1bHQsIHRoZSBvbmx5IHBvc3NpYmxlIHN0YXRlIGNoYW5nZSwgYmVmb3JlIHRoZSBjYWxsYmFjaywgaXMgdGhhdFxuICAgICBbcF0gbWF5IGhhdmUgYmVjb21lIGEgcHJveHkuIE5vdyxcblxuICAgICAtIElmIFtwXSBkb2VzIG5vdCB1bmRlcmdvIHRoaXMgc3RhdGUgY2hhbmdlIGFuZCBiZWNvbWUgYSBwcm94eSwgaXQgcmVtYWluc1xuICAgICAgIGFuIHVuZGVybHlpbmcsIHBlbmRpbmcgcHJvbWlzZS5cbiAgICAgLSBJZiBbcF0gZG9lcyBiZWNvbWUgYSBwcm94eSwgaXQgd2lsbCBiZSBhIHByb3h5IGZvciBhbm90aGVyIHByb21pc2UgW3AnXVxuICAgICAgIGNyZWF0ZWQgZnJlc2ggYnkgW0x3dC5iaW5kXSwgdG8gd2hpY2ggdGhpcyBzYW1lIGFyZ3VtZW50IGFwcGxpZXMuIFNlZVxuICAgICAgIFttYWtlX2ludG9fcHJveHldLlxuXG4gICAgIFNvLCBieSBpbmR1Y3Rpb24gb24gdGhlIGxlbmd0aCBvZiB0aGUgcHJveHkgKFtQcm94eSBfXSkgY2hhaW4sIGF0IHRoZSB0aW1lXG4gICAgIHRoZSBjYWxsYmFjayBpcyBjYWxsZWQsIFtwXSBpcyBlaXRoZXIgYW4gdW5kZXJseWluZywgcGVuZGluZyBwcm9taXNlLCBvciBhXG4gICAgIHByb3h5IGZvciBhIHBlbmRpbmcgcHJvbWlzZS5cblxuICAgICBUaGUgY2FzdFxuXG4gICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluIC4uLlxuXG4gICAgIGVuY29kZXMgdGhlIHBvc3NpYmlsaXR5IG9mIHRoaXMgc3RhdGUgY2hhbmdlLiBJdCByZXBsYWNlcyBhIHJlZmVyZW5jZVxuXG4gICAgICAgcCA6ICgnYSwgdW5kZXJseWluZywgcGVuZGluZylcblxuICAgICB3aXRoXG5cbiAgICAgICBwIDogKCdhLCAkVW5rbm93biwgcGVuZGluZylcblxuICAgICBhbmQgaXMgdHlwaWNhbGx5IHNlZW4gYXQgdGhlIGJlZ2lubmluZyBvZiBjYWxsYmFja3MgcmVnaXN0ZXJlZCBieVxuICAgICBbTHd0LmJpbmRdIGFuZCBzaW1pbGFyIGZ1bmN0aW9ucy5cblxuICAgICBUaGUgY2FzdCBpcyBhIG5vLW9wIGNhc3QuIFRoZSBpbnRyb2R1Y3Rpb24gYW5kIGltbWVkaWF0ZSBlbGltaW5hdGlvbiBvZlxuICAgICBbU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBfXSBzZWVtcyB0byBiZSBvcHRpbWl6ZWQgYXdheSBldmVuIG9uIG9sZCB2ZXJzaW9uc1xuICAgICBvZiBPQ2FtbC4gKilcbmVuZFxub3BlbiBCYXNpY19oZWxwZXJzXG5cbigqIFNtYWxsIGhlbHBlcnMgdG8gYXZvaWQgY2F0Y2hpbmcgb2NhbWwtcnVudGltZSBleGNlcHRpb25zICopXG5tb2R1bGUgRXhjZXB0aW9uX2ZpbHRlciA9IHN0cnVjdFxuICB0eXBlIHQgPSBleG4gLT4gYm9vbFxuICBsZXQgaGFuZGxlX2FsbCA9IGZ1biBfIC0+IHRydWVcbiAgbGV0IGhhbmRsZV9hbGxfZXhjZXB0X3J1bnRpbWUgPSBmdW5jdGlvblxuICAgIHwgT3V0X29mX21lbW9yeSAtPiBmYWxzZVxuICAgIHwgU3RhY2tfb3ZlcmZsb3cgLT4gZmFsc2VcbiAgICB8IF8gLT4gdHJ1ZVxuICBsZXQgdiA9XG4gICAgKCogRGVmYXVsdCB2YWx1ZTogdGhlIGxlZ2FjeSBiZWhhdmlvdXIgdG8gYXZvaWQgYnJlYWtpbmcgcHJvZ3JhbXMgKilcbiAgICByZWYgaGFuZGxlX2FsbFxuICBsZXQgc2V0IGYgPSB2IDo9IGZcbiAgbGV0IHJ1biBlID0gIXYgZVxuZW5kXG5cbm1vZHVsZSBTZXF1ZW5jZV9hc3NvY2lhdGVkX3N0b3JhZ2UgOlxuc2lnXG4gICgqIFB1YmxpYyBpbnRlcmZhY2UgKilcbiAgdHlwZSAndiBrZXlcbiAgdmFsIG5ld19rZXkgOiB1bml0IC0+IF8ga2V5XG4gIHZhbCBnZXQgOiAndiBrZXkgLT4gJ3Ygb3B0aW9uXG4gIHZhbCB3aXRoX3ZhbHVlIDogJ3Yga2V5IC0+ICd2IG9wdGlvbiAtPiAodW5pdCAtPiAnYikgLT4gJ2JcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgKilcbiAgdmFsIGN1cnJlbnRfc3RvcmFnZSA6IHN0b3JhZ2UgcmVmXG5lbmQgPVxuc3RydWN0XG4gICgqIFRoZSBpZGVhIGJlaGluZCBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UgaXMgdG8gcHJlc2VydmUgc29tZSB2YWx1ZXNcbiAgICAgZHVyaW5nIGEgY2FsbCB0byBbYmluZF0gb3Igb3RoZXIgc2VxdWVudGlhbCBjb21wb3NpdGlvbiBvcGVyYXRpb24sIGFuZFxuICAgICByZXN0b3JlIHRob3NlIHZhbHVlcyBpbiB0aGUgY2FsbGJhY2sgZnVuY3Rpb246XG5cbiAgICAgICBMd3Qud2l0aF92YWx1ZSBteV9rZXkgKFNvbWUgXCJmb29cIikgKGZ1biAoKSAtPlxuICAgICAgIHAgPnw9IGZ1biAoKSAtPlxuICAgICAgIGFzc2VydCAoTHd0LmdldCBteV9rZXkgPSBTb21lIFwiZm9vXCIpKVxuICAgICAgICAgKCogV2lsbCBzdWNjZWVkIGV2ZW4gaWYgdGhpcyBjYWxsYmFjayBpcyBjYWxsZWQgbGF0ZXIuICopXG5cbiAgICAgTm90ZSB0aGF0IGl0IGRvZXMgbm90IG1hdHRlciB0aGF0IHRoZSBjYWxsYmFjayBpcyBkZWZpbmVkIHdpdGhpbiBhblxuICAgICBhcmd1bWVudCBvZiBbd2l0aF92YWx1ZV0sIGkuZS4sIHRoaXMgZG9lcyB0aGUgc2FtZTpcblxuICAgICAgIGxldCBmID0gZnVuICgpIC0+IGFzc2VydCAoTHd0LmdldCBteV9rZXkgPSBTb21lIFwiZm9vXCIpIGluXG4gICAgICAgTHd0LndpdGhfdmFsdWUgbXlfa2V5IChTb21lIFwiZm9vXCIpIChmdW4gKCkgLT4gcCA+fD0gZilcblxuICAgICBBbGwgdGhhdCBtYXR0ZXJzIGlzIHRoYXQgdGhlIHRvcC1tb3N0IHNlcXVlbmNpbmcgb3BlcmF0aW9uIChpbiB0aGlzIGNhc2UsXG4gICAgIG1hcCkgaXMgZXhlY3V0ZWQgYnkgdGhhdCBhcmd1bWVudC5cblxuICAgICBUaGlzIGlzIGltcGxlbWVudGVkIHVzaW5nIGEgc2luZ2xlIGdsb2JhbCBoZXRlcm9nZW5lb3VzIGtleS12YWx1ZSBtYXAuXG4gICAgIFNlcXVlbnRpYWwgY29tcG9zaXRpb24gZnVuY3Rpb25zIHNuYXBzaG90IHRoaXMgbWFwIHdoZW4gdGhleSBhcmUgY2FsbGVkLFxuICAgICBhbmQgcmVzdG9yZSB0aGUgc25hcHNob3QgcmlnaHQgYmVmb3JlIGNhbGxpbmcgdGhlIHVzZXIncyBjYWxsYmFjay4gVGhlIHNhbWVcbiAgICAgaGFwcGVucyBmb3IgY2FuY2VsIHRyaWdnZXJzIGFkZGVkIGJ5IFtvbl9jYW5jZWxdLlxuXG4gICAgIE1haW50YWluZXIncyBub3RlOiBJIHRoaW5rIHVzaW5nIHRoaXMgbWVjaGFuaXNtIHNob3VsZCBiZSBkaXNjb3VyYWdlZCBpblxuICAgICBuZXcgY29kZS4gKilcblxuICB0eXBlICd2IGtleSA9IHtcbiAgICBpZCA6IGludDtcbiAgICBtdXRhYmxlIHZhbHVlIDogJ3Ygb3B0aW9uO1xuICB9XG5cbiAgbGV0IG5leHRfa2V5X2lkID0gcmVmIDBcblxuICBsZXQgbmV3X2tleSAoKSA9XG4gICAgbGV0IGlkID0gIW5leHRfa2V5X2lkIGluXG4gICAgbmV4dF9rZXlfaWQgOj0gaWQgKyAxO1xuICAgIHtpZCA9IGlkOyB2YWx1ZSA9IE5vbmV9XG5cbiAgbGV0IGN1cnJlbnRfc3RvcmFnZSA9IHJlZiBTdG9yYWdlX21hcC5lbXB0eVxuXG4gIGxldCBnZXQga2V5ID1cbiAgICBpZiBTdG9yYWdlX21hcC5tZW0ga2V5LmlkICFjdXJyZW50X3N0b3JhZ2UgdGhlbiBiZWdpblxuICAgICAgbGV0IHJlZnJlc2ggPSBTdG9yYWdlX21hcC5maW5kIGtleS5pZCAhY3VycmVudF9zdG9yYWdlIGluXG4gICAgICByZWZyZXNoICgpO1xuICAgICAgbGV0IHZhbHVlID0ga2V5LnZhbHVlIGluXG4gICAgICBrZXkudmFsdWUgPC0gTm9uZTtcbiAgICAgIHZhbHVlXG4gICAgZW5kXG4gICAgZWxzZVxuICAgICAgTm9uZVxuXG4gIGxldCB3aXRoX3ZhbHVlIGtleSB2YWx1ZSBmID1cbiAgICBsZXQgbmV3X3N0b3JhZ2UgPVxuICAgICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgbGV0IHJlZnJlc2ggPSBmdW4gKCkgLT4ga2V5LnZhbHVlIDwtIHZhbHVlIGluXG4gICAgICAgIFN0b3JhZ2VfbWFwLmFkZCBrZXkuaWQgcmVmcmVzaCAhY3VycmVudF9zdG9yYWdlXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgU3RvcmFnZV9tYXAucmVtb3ZlIGtleS5pZCAhY3VycmVudF9zdG9yYWdlXG4gICAgaW5cblxuICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBuZXdfc3RvcmFnZTtcbiAgICB0cnlcbiAgICAgIGxldCByZXN1bHQgPSBmICgpIGluXG4gICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgIHJlc3VsdFxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgIHJhaXNlIGV4blxuZW5kXG5pbmNsdWRlIFNlcXVlbmNlX2Fzc29jaWF0ZWRfc3RvcmFnZVxuXG5cblxubW9kdWxlIFBlbmRpbmdfY2FsbGJhY2tzIDpcbnNpZ1xuICAoKiBNdXRhdGluZyBjYWxsYmFjayBsaXN0cyBhdHRhY2hlZCB0byBwZW5kaW5nIHByb21pc2VzICopXG4gIHZhbCBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIDpcbiAgICAnYSBjYWxsYmFja3MgLT4gJ2EgcmVndWxhcl9jYWxsYmFjayAtPiB1bml0XG4gIHZhbCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiA6XG4gICAgJ2EgdCBsaXN0IC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gdW5pdFxuICB2YWwgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX3JlbW92ZV9mdW5jdGlvbiA6XG4gICAgJ2EgdCBsaXN0IC0+ICdhIHJlZ3VsYXJfY2FsbGJhY2sgLT4gY2FuY2VsX2NhbGxiYWNrXG4gIHZhbCBhZGRfY2FuY2VsX2NhbGxiYWNrIDogJ2EgY2FsbGJhY2tzIC0+IGNhbmNlbF9jYWxsYmFjayAtPiB1bml0XG4gIHZhbCBtZXJnZV9jYWxsYmFja3MgOiBmcm9tOidhIGNhbGxiYWNrcyAtPiBpbnRvOidhIGNhbGxiYWNrcyAtPiB1bml0XG5lbmQgPVxuc3RydWN0XG4gIGxldCBjb25jYXRfcmVndWxhcl9jYWxsYmFja3MgbDEgbDIgPVxuICAgIGJlZ2luIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHksIF8gLT4gbDJcbiAgICB8IF8sIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPiBsMVxuICAgIHwgXywgXyAtPiBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChsMSwgbDIpXG4gICAgZW5kIFtAb2NhbWwud2FybmluZyBcIi00XCJdXG5cbiAgbGV0IGNvbmNhdF9jYW5jZWxfY2FsbGJhY2tzIGwxIGwyID1cbiAgICBiZWdpbiBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHksIF8gLT4gbDJcbiAgICB8IF8sIENhbmNlbF9jYWxsYmFja19saXN0X2VtcHR5IC0+IGwxXG4gICAgfCBfLCBfIC0+IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCAobDEsIGwyKVxuICAgIGVuZCBbQG9jYW1sLndhcm5pbmcgXCItNFwiXVxuXG4gICgqIEluIGEgY2FsbGJhY2sgbGlzdCwgZmlsdGVycyBvdXQgY2VsbHMgb2YgZXhwbGljaXRseSByZW1vdmFibGUgY2FsbGJhY2tzXG4gICAgIHRoYXQgaGF2ZSBiZWVuIHJlbW92ZWQuICopXG4gIGxldCByZWMgY2xlYW5fdXBfY2FsbGJhY2tfY2VsbHMgPSBmdW5jdGlvblxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIHtjb250ZW50cyA9IE5vbmV9IC0+XG4gICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHlcblxuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIHtjb250ZW50cyA9IFNvbWUgX31cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgX1xuICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5IGFzIGNhbGxiYWNrcyAtPlxuICAgICAgY2FsbGJhY2tzXG5cbiAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGwxLCBsMikgLT5cbiAgICAgIGxldCBsMSA9IGNsZWFuX3VwX2NhbGxiYWNrX2NlbGxzIGwxIGluXG4gICAgICBsZXQgbDIgPSBjbGVhbl91cF9jYWxsYmFja19jZWxscyBsMiBpblxuICAgICAgY29uY2F0X3JlZ3VsYXJfY2FsbGJhY2tzIGwxIGwyXG5cbiAgKCogU2VlIFtjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsXSBhbmQgW21lcmdlX2NhbGxiYWNrc10uICopXG4gIGxldCBjbGVhbnVwX3Rocm90dGxlID0gNDJcblxuICAoKiBFeHBsaWNpdGx5IHJlbW92YWJsZSBjYWxsYmFja3MgYXJlIGFkZGVkIChtYWlubHkpIGJ5IFtMd3QuY2hvb3NlXSBhbmQgaXRzXG4gICAgIHNpbWlsYXIgZnVuY3Rpb25zLiBJbiBbTHd0LmNob29zZSBbcDsgcCddXSwgaWYgW3AnXSByZXNvbHZlcyBmaXJzdCwgdGhlXG4gICAgIGNhbGxiYWNrIGFkZGVkIGJ5IFtMd3QuY2hvb3NlXSB0byBbcF0gaXMgcmVtb3ZlZC5cblxuICAgICBUaGUgcmVtb3ZhbCBpdHNlbGYgaXMgYWNjb21wbGlzaGVkIHdoZW4gdGhpcyBmdW5jdGlvbiBjbGVhcnMgdGhlIHJlZmVyZW5jZVxuICAgICBjZWxsIFtjZWxsXSwgd2hpY2ggY29udGFpbnMgdGhlIHJlZmVyZW5jZSB0byB0aGF0IGNhbGxiYWNrLlxuXG4gICAgIElmIFtwXSBpcyBhIGxvbmctcGVuZGluZyBwcm9taXNlIHRoYXQgcmVwZWF0ZWRseSBwYXJ0aWNpcGF0ZXMgaW5cbiAgICAgW0x3dC5jaG9vc2VdLCBwZXJoYXBzIGluIGEgbG9vcCwgaXQgd2lsbCBhY2N1bXVsYXRlIGEgbGFyZ2UgbnVtYmVyIG9mXG4gICAgIGNsZWFyZWQgcmVmZXJlbmNlIGNlbGxzIGluIHRoaXMgZmFzaGlvbi4gVG8gYXZvaWQgYSBtZW1vcnkgbGVhaywgdGhleSBtdXN0XG4gICAgIGJlIGNsZWFuZWQgdXAuIEhvd2V2ZXIsIHRoZSBjZWxscyBhcmUgbm90IGNsZWFuZWQgdXAgb24gKmV2ZXJ5KiByZW1vdmFsLFxuICAgICBwcmVzdW1hYmx5IGJlY2F1c2Ugc2Nhbm5pbmcgdGhlIGNhbGxiYWNrIGxpc3QgdGhhdCBvZnRlbiwgYW5kIHJlYnVpbGRpbmdcbiAgICAgaXQsIGNhbiBnZXQgZXhwZW5zaXZlLlxuXG4gICAgIENsZWFudXAgaXMgdGhyb3R0bGVkIGJ5IG1haW50YWluaW5nIGEgY291bnRlciwgW2NsZWFudXBzX2RlZmVycmVkXSwgb24gZWFjaFxuICAgICBwZW5kaW5nIHByb21pc2UuIFRoZSBjb3VudGVyIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSB0aGlzIGZ1bmN0aW9uIHdhbnRzXG4gICAgIHRvIGNsZWFuIHRoZSBjYWxsYmFjayBsaXN0IChyaWdodCBhZnRlciBjbGVhcmluZyBhIGNlbGwpLiBXaGVuIHRoZSBjb3VudGVyXG4gICAgIHJlYWNoZXMgW2NsZWFudXBfdGhyb3R0bGVdLCB0aGUgY2FsbGJhY2sgbGlzdCBpcyBhY3R1YWxseSBzY2FubmVkIGFuZFxuICAgICBjbGVhcmVkIGNhbGxiYWNrIGNlbGxzIGFyZSByZW1vdmVkLiAqKVxuICBsZXQgY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbCBjZWxsIH5vcmlnaW5hbGx5X2FkZGVkX3RvOnBzID1cbiAgICBjZWxsIDo9IE5vbmU7XG5cbiAgICAoKiBHbyB0aHJvdWdoIHRoZSBwcm9taXNlcyB0aGUgY2VsbCBoYWQgb3JpZ2luYWxseSBiZWVuIGFkZGVkIHRvLCBhbmQgZWl0aGVyXG4gICAgICAgZGVmZXIgYSBjbGVhbnVwLCBvciBhY3R1YWxseSBjbGVhbiB1cCB0aGVpciBjYWxsYmFjayBsaXN0cy4gKilcbiAgICBwcyB8PiBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgKCogU29tZSBvZiB0aGUgcHJvbWlzZXMgbWF5IGFscmVhZHkgaGF2ZSBiZWVuIHJlc29sdmVkIGF0IHRoZSB0aW1lIHRoaXNcbiAgICAgICAgIGZ1bmN0aW9uIGlzIGNhbGxlZC4gKilcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT4gKClcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPiAoKVxuXG4gICAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICAgIG1hdGNoIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyB3aXRoXG4gICAgICAgICgqIElmIHRoZSBwcm9taXNlIGhhcyBvbmx5IG9uZSByZWd1bGFyIGNhbGxiYWNrLCBhbmQgaXQgaXMgcmVtb3ZhYmxlLCBpdFxuICAgICAgICAgICBtdXN0IGhhdmUgYmVlbiB0aGUgY2VsbCBjbGVhcmVkIGluIHRoaXMgZnVuY3Rpb24sIGFib3ZlLiBJbiB0aGF0XG4gICAgICAgICAgIGNhc2UsIGp1c3Qgc2V0IGl0cyBjYWxsYmFjayBsaXN0IHRvIGVtcHR5LiAqKVxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFjayBfIC0+XG4gICAgICAgICAgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIDwtIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9lbXB0eVxuXG4gICAgICAgICgqIE1haW50YWluZXIncyBub3RlOiBJIHRoaW5rIHRoaXMgZnVuY3Rpb24gc2hvdWxkbid0IHRyeSB0byB0cmlnZ2VyIGFcbiAgICAgICAgICAgY2xlYW51cCBpbiB0aGUgZmlyc3QgdHdvIGNhc2VzLCBidXQgSSBhbSBwcmVzZXJ2aW5nIHRoZW0gZm9yIG5vdywgYXNcbiAgICAgICAgICAgdGhpcyBpcyBob3cgdGhlIGNvZGUgd2FzIHdyaXR0ZW4gaW4gdGhlIHBhc3QuICopXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2VtcHR5XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBfXG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBfIC0+XG4gICAgICAgICAgbGV0IGNsZWFudXBzX2RlZmVycmVkID0gY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkICsgMSBpblxuICAgICAgICAgIGlmIGNsZWFudXBzX2RlZmVycmVkID4gY2xlYW51cF90aHJvdHRsZSB0aGVuIGJlZ2luXG4gICAgICAgICAgICBjYWxsYmFja3MuY2xlYW51cHNfZGVmZXJyZWQgPC0gMDtcbiAgICAgICAgICAgIGNhbGxiYWNrcy5yZWd1bGFyX2NhbGxiYWNrcyA8LVxuICAgICAgICAgICAgICBjbGVhbl91cF9jYWxsYmFja19jZWxscyBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3NcbiAgICAgICAgICBlbmQgZWxzZVxuICAgICAgICAgICAgY2FsbGJhY2tzLmNsZWFudXBzX2RlZmVycmVkIDwtIGNsZWFudXBzX2RlZmVycmVkKVxuXG4gICgqIENvbmNhdGVuYXRlcyBib3RoIGtpbmRzIG9mIGNhbGxiYWNrcyBvbiBbfmZyb21dIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxpc3RzXG4gICAgIG9mIFt+aW50b10uIFRoZSBjYWxsYmFjayBsaXN0cyBvbiBbfmZyb21dIGFyZSAqbm90KiB0aGVuIGNsZWFyZWQsIGJlY2F1c2VcbiAgICAgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBieSBbU2VxdWVudGlhbF9jb21wb3NpdGlvbi5tYWtlX2ludG9fcHJveHldLFxuICAgICB3aGljaCBpbW1lZGlhdGVseSBjaGFuZ2VzIHRoZSBzdGF0ZSBvZiBbfmZyb21dIGFuZCBsb3NlcyByZWZlcmVuY2VzIHRvIHRoZVxuICAgICBvcmlnaW5hbCBjYWxsYmFjayBsaXN0cy5cblxuICAgICBUaGUgW2NsZWFudXBzX2RlZmVycmVkXSBmaWVsZHMgb2YgYm90aCBwcm9taXNlcyBhcmUgc3VtbWVkLCBhbmQgaWYgdGhlIHN1bVxuICAgICBleGNlZWRzIFtjbGVhbnVwX3Rocm90dGxlXSwgYSBjbGVhbnVwIG9mIHJlZ3VsYXIgY2FsbGJhY2tzIGlzIHRyaWdnZXJlZC5cbiAgICAgVGhpcyBpcyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrczsgc2VlXG4gICAgIFtjbGVhcl9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19jZWxsXS4gKilcbiAgbGV0IG1lcmdlX2NhbGxiYWNrcyB+ZnJvbSB+aW50byA9XG4gICAgbGV0IHJlZ3VsYXJfY2FsbGJhY2tzID1cbiAgICAgIGNvbmNhdF9yZWd1bGFyX2NhbGxiYWNrcyBpbnRvLnJlZ3VsYXJfY2FsbGJhY2tzIGZyb20ucmVndWxhcl9jYWxsYmFja3MgaW5cbiAgICBsZXQgY2xlYW51cHNfZGVmZXJyZWQgPSBpbnRvLmNsZWFudXBzX2RlZmVycmVkICsgZnJvbS5jbGVhbnVwc19kZWZlcnJlZCBpblxuXG4gICAgbGV0IHJlZ3VsYXJfY2FsbGJhY2tzLCBjbGVhbnVwc19kZWZlcnJlZCA9XG4gICAgICBpZiBjbGVhbnVwc19kZWZlcnJlZCA+IGNsZWFudXBfdGhyb3R0bGUgdGhlblxuICAgICAgICBjbGVhbl91cF9jYWxsYmFja19jZWxscyByZWd1bGFyX2NhbGxiYWNrcywgMFxuICAgICAgZWxzZVxuICAgICAgICByZWd1bGFyX2NhbGxiYWNrcywgY2xlYW51cHNfZGVmZXJyZWRcbiAgICBpblxuXG4gICAgbGV0IGNhbmNlbF9jYWxsYmFja3MgPVxuICAgICAgY29uY2F0X2NhbmNlbF9jYWxsYmFja3MgaW50by5jYW5jZWxfY2FsbGJhY2tzIGZyb20uY2FuY2VsX2NhbGxiYWNrcyBpblxuXG4gICAgaW50by5yZWd1bGFyX2NhbGxiYWNrcyA8LSByZWd1bGFyX2NhbGxiYWNrcztcbiAgICBpbnRvLmNhbmNlbF9jYWxsYmFja3MgPC0gY2FuY2VsX2NhbGxiYWNrcztcbiAgICBpbnRvLmNsZWFudXBzX2RlZmVycmVkIDwtIGNsZWFudXBzX2RlZmVycmVkXG5cblxuXG4gICgqIEdlbmVyYWwsIGludGVybmFsLCBmdW5jdGlvbiBmb3IgYWRkaW5nIGEgcmVndWxhciBjYWxsYmFjay4gKilcbiAgbGV0IGFkZF9yZWd1bGFyX2NhbGxiYWNrX2xpc3Rfbm9kZSBjYWxsYmFja3Mgbm9kZSA9XG4gICAgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzIDwtXG4gICAgICBtYXRjaCBjYWxsYmFja3MucmVndWxhcl9jYWxsYmFja3Mgd2l0aFxuICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgbm9kZVxuICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIF9cbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIF9cbiAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2NvbmNhdCBfIGFzIGV4aXN0aW5nIC0+XG4gICAgICAgIFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9jb25jYXQgKG5vZGUsIGV4aXN0aW5nKVxuXG4gIGxldCBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIGNhbGxiYWNrcyBmID1cbiAgICBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGVcbiAgICAgIGNhbGxiYWNrcyAoUmVndWxhcl9jYWxsYmFja19saXN0X2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBmKVxuXG4gICgqIEFkZHMgW2NhbGxiYWNrXSBhcyByZW1vdmFibGUgdG8gZWFjaCBwcm9taXNlIGluIFtwc10uIFRoZSBmaXJzdCBwcm9taXNlIGluXG4gICAgIFtwc10gdG8gdHJpZ2dlciBbY2FsbGJhY2tdIHJlbW92ZXMgW2NhbGxiYWNrXSBmcm9tIHRoZSBvdGhlciBwcm9taXNlczsgdGhpc1xuICAgICBndWFyYW50ZWVzIHRoYXQgW2NhbGxiYWNrXSBpcyBjYWxsZWQgYXQgbW9zdCBvbmNlLiBBbGwgdGhlIHByb21pc2VzIGluIFtwc11cbiAgICAgbXVzdCBiZSBwZW5kaW5nLlxuXG4gICAgIFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIGluZGlyZWN0bHkgdXNlZCBieSB0aGUgaW1wbGVtZW50YXRpb25zIG9mXG4gICAgIFtMd3QuY2hvb3NlXSBhbmQgcmVsYXRlZCBmdW5jdGlvbnMuICopXG4gIGxldCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfY2VsbCBwcyBmID1cbiAgICBsZXQgcmVjIGNlbGwgPSByZWYgKFNvbWUgc2VsZl9yZW1vdmluZ19jYWxsYmFja193cmFwcGVyKVxuICAgIGFuZCBzZWxmX3JlbW92aW5nX2NhbGxiYWNrX3dyYXBwZXIgcmVzdWx0ID1cbiAgICAgIGNsZWFyX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2NlbGwgY2VsbCB+b3JpZ2luYWxseV9hZGRlZF90bzpwcztcbiAgICAgIGYgcmVzdWx0XG4gICAgaW5cblxuICAgIGxldCBub2RlID0gUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrIGNlbGwgaW5cbiAgICBwcyB8PiBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgfCBQZW5kaW5nIGNhbGxiYWNrcyAtPiBhZGRfcmVndWxhcl9jYWxsYmFja19saXN0X25vZGUgY2FsbGJhY2tzIG5vZGVcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFJlamVjdGVkIF8gLT4gYXNzZXJ0IGZhbHNlKTtcblxuICAgIGNlbGxcblxuICBsZXQgYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX3RvX2VhY2hfb2YgcHMgZiA9XG4gICAgaWdub3JlIChhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfY2VsbCBwcyBmKVxuXG4gICgqIFRoaXMgaXMgYmFzaWNhbGx5IGp1c3QgdG8gc3VwcG9ydCBbTHd0LnByb3RlY3RlZF0sIHdoaWNoIG5lZWRzIHRvIHJlbW92ZVxuICAgICB0aGUgY2FsbGJhY2sgaW4gY2lyY3Vtc3RhbmNlcyBvdGhlciB0aGFuIHRoZSBjYWxsYmFjayBiZWluZyBjYWxsZWQuICopXG4gIGxldCBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfYW5kX2dpdmVfcmVtb3ZlX2Z1bmN0aW9uIHBzIGYgPVxuICAgIGxldCBjZWxsID0gYWRkX2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrX2FuZF9naXZlX2NlbGwgcHMgZiBpblxuICAgIGZ1biAoKSAtPlxuICAgICAgY2xlYXJfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfY2VsbCBjZWxsIH5vcmlnaW5hbGx5X2FkZGVkX3RvOnBzXG5cbiAgbGV0IGFkZF9jYW5jZWxfY2FsbGJhY2sgY2FsbGJhY2tzIGYgPVxuICAgIGxldCBub2RlID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgKCFjdXJyZW50X3N0b3JhZ2UsIGYpIGluXG5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgbWF0Y2ggY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3Mgd2l0aFxuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPlxuICAgICAgICBub2RlXG5cbiAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgX1xuICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBfXG4gICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCBfIC0+XG4gICAgICAgIENhbmNlbF9jYWxsYmFja19saXN0X2NvbmNhdCAobm9kZSwgY2FsbGJhY2tzLmNhbmNlbF9jYWxsYmFja3MpXG5lbmRcbm9wZW4gUGVuZGluZ19jYWxsYmFja3NcblxuXG5cbm1vZHVsZSBSZXNvbHV0aW9uX2xvb3AgOlxuc2lnXG4gICgqIEFsbCB1c2VyLXByb3ZpZGVkIGNhbGxiYWNrcyBhcmUgY2FsbGVkIGJ5IEx3dCBvbmx5IHRocm91Z2ggdGhpcyBtb2R1bGUuIEl0XG4gICAgIHRyYWNrcyB0aGUgY3VycmVudCBjYWxsYmFjayBzdGFjayBkZXB0aCwgYW5kIGRlY2lkZXMgd2hldGhlciBlYWNoIGNhbGxiYWNrXG4gICAgIGNhbGwgc2hvdWxkIGJlIGRlZmVycmVkIG9yIG5vdC4gKilcblxuICAoKiBJbnRlcm5hbCBpbnRlcmZhY2UgdXNlZCBvbmx5IGluIHRoaXMgbW9kdWxlIEx3dCAqKVxuICB2YWwgcmVzb2x2ZSA6XG4gICAgP2FsbG93X2RlZmVycmluZzpib29sIC0+XG4gICAgP21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aDppbnQgLT5cbiAgICAoJ2EsIHVuZGVybHlpbmcsIHBlbmRpbmcpIHByb21pc2UgLT5cbiAgICAnYSByZXNvbHZlZF9zdGF0ZSAtPlxuICAgICAgKCdhLCB1bmRlcmx5aW5nLCByZXNvbHZlZCkgc3RhdGVfY2hhbmdlZFxuXG4gIHZhbCBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW0gOlxuICAgID9hbGxvd19kZWZlcnJpbmc6Ym9vbCAtPlxuICAgID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6aW50IC0+XG4gICAgKCdhIGNhbGxiYWNrcykgLT5cbiAgICAnYSByZXNvbHZlZF9zdGF0ZSAtPlxuICAgICAgdW5pdFxuXG4gIHZhbCBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXQgOlxuICAgID9ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6Ym9vbCAtPlxuICAgIGNhbGxiYWNrOih1bml0IC0+ICdhKSAtPlxuICAgIGlmX2RlZmVycmVkOih1bml0IC0+ICdhICogJ2IgcmVndWxhcl9jYWxsYmFjayAqICdiIHJlc29sdmVkX3N0YXRlKSAtPlxuICAgICAgJ2FcblxuICB2YWwgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgOiAoJ2EgLT4gdW5pdCkgLT4gJ2EgLT4gdW5pdFxuXG4gICgqIEludGVybmFsIGludGVyZmFjZSBleHBvc2VkIHRvIG90aGVyIG1vZHVsZXMgaW4gTHd0ICopXG4gIHZhbCBhYmFuZG9uX3dha2V1cHMgOiB1bml0IC0+IHVuaXRcblxuICAoKiBQdWJsaWMgaW50ZXJmYWNlICopXG4gIGV4Y2VwdGlvbiBDYW5jZWxlZFxuXG4gIHZhbCBhc3luY19leGNlcHRpb25faG9vayA6IChleG4gLT4gdW5pdCkgcmVmXG5lbmQgPVxuc3RydWN0XG4gICgqIFdoZW4gTHd0IG5lZWRzIHRvIGNhbGwgYSBjYWxsYmFjaywgaXQgZW50ZXJzIHRoZSByZXNvbHV0aW9uIGxvb3AuIFRoaXNcbiAgICAgdHlwaWNhbGx5IGhhcHBlbnMgd2hlbiBMd3Qgc2V0cyB0aGUgc3RhdGUgb2Ygb25lIHByb21pc2UgdG8gW0Z1bGZpbGxlZCBfXVxuICAgICBvciBbUmVqZWN0ZWQgX10uIFRoZSBjYWxsYmFja3MgdGhhdCB3ZXJlIGF0dGFjaGVkIHRvIHRoZSBwcm9taXNlIHdoZW4gaXRcbiAgICAgd2FzIHBlbmRpbmcgbXVzdCB0aGVuIGJlIGNhbGxlZC5cblxuICAgICBUaGlzIGFsc28gaGFwcGVucyBpbiBhIGZldyBvdGhlciBzaXR1YXRpb25zLiBGb3IgZXhhbXBsZSwgd2hlbiBbTHd0LmJpbmRdXG4gICAgIGlzIGNhbGxlZCBvbiBhIHByb21pc2UsIGJ1dCB0aGF0IHByb21pc2UgaXMgYWxyZWFkeSByZXNvbHZlZCwgdGhlIGNhbGxiYWNrXG4gICAgIHBhc3NlZCB0byBbYmluZF0gbXVzdCBiZSBjYWxsZWQuXG5cbiAgICAgVGhlIGNhbGxiYWNrcyB0cmlnZ2VyZWQgZHVyaW5nIHRoZSByZXNvbHV0aW9uIGxvb3AgbWlnaHQgcmVzb2x2ZSBtb3JlXG4gICAgIHByb21pc2VzLCB0cmlnZ2VyaW5nIG1vcmUgY2FsbGJhY2tzLCBhbmQgc28gb24uIFRoaXMgaXMgd2hhdCBtYWtlcyB0aGVcbiAgICAgcmVzb2x1dGlvbiBsb29wIGEge2UgbG9vcH0uXG5cbiAgICAgTHd0IGdlbmVyYWxseSB0cmllcyB0byBjYWxsIGVhY2ggY2FsbGJhY2sgaW1tZWRpYXRlbHkuIEhvd2V2ZXIsIHRoaXMgY2FuXG4gICAgIGxlYWQgdG8gYSBwcm9ncmVzc2l2ZSBkZWVwZW5pbmcgb2YgdGhlIGNhbGwgc3RhY2ssIHVudGlsIHRoZXJlIGlzIGEgc3RhY2tcbiAgICAgb3ZlcmZsb3cuIFRoaXMgY2FuJ3QgYmUgYXZvaWRlZCBieSBkb2luZyB0YWlsIGNhbGxzLCBiZWNhdXNlIEx3dCBhbHdheXNcbiAgICAgbmVlZHMgdG8gZG8gZXhjZXB0aW9uIGhhbmRsaW5nIGFyb3VuZCBjYWxsYmFja3MgY2FsbHM6IGVhY2ggY2FsbGJhY2sgY2FsbFxuICAgICBpcyBmb2xsb3dlZCBieSBhbiBleGNlcHRpb24gaGFuZGxlci4gSW5zdGVhZCwgd2hhdCBMd3QgZG9lcyBpcyB0cmFjayB0aGVcbiAgICAgY3VycmVudCBjYWxsYmFjayBjYWxsIGRlcHRoLiBPbmNlIHRoYXQgZGVwdGggcmVhY2hlcyBhIGNlcnRhaW4gbnVtYmVyLFxuICAgICBbZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGhdLCBkZWZpbmVkIGJlbG93LCBmdXJ0aGVyIGNhbGxiYWNrc1xuICAgICBhcmUgZGVmZXJyZWQgaW50byBhIHF1ZXVlIGluc3RlYWQuIFRoYXQgcXVldWUgaXMgZHJhaW5lZCB3aGVuIEx3dCBleGl0c1xuICAgICBmcm9tIHRoZSB0b3AtbW9zdCBjYWxsYmFjayBjYWxsIHRoYXQgdHJpZ2dlcmVkIHRoZSByZXNvbHV0aW9uIGxvb3AgaW4gdGhlXG4gICAgIGZpcnN0IHBsYWNlLlxuXG4gICAgIFRvIGVuc3VyZSB0aGF0IHRoaXMgZGVmZXJyYWwgbWVjaGFuaXNtIGlzIGFsd2F5cyBwcm9wZXJseSBpbnZva2VkLCBhbGxcbiAgICAgY2FsbGJhY2tzIGNhbGxlZCBieSBMd3QgYXJlIGNhbGxlZCB0aHJvdWdoIG9uZSBvZiB0aHJlZSBmdW5jdGlvbnMgcHJvdmlkZWRcbiAgICAgYnkgdGhpcyBtb2R1bGU6XG5cbiAgICAgLSBbcmVzb2x2ZV0sIHdoaWNoIGNhbGxzIGFsbCB0aGUgY2FsbGJhY2tzIGFzc29jaWF0ZWQgdG8gYSBwZW5kaW5nIHByb21pc2VcbiAgICAgICAoYW5kIHJlc29sdmVzIGl0LCBjaGFuZ2luZyBpdHMgc3RhdGUpLlxuICAgICAtIFtydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1dLCB3aGljaCBpcyBpbnRlcm5hbGx5IHVzZWQgYnkgW3Jlc29sdmVdIHRvXG4gICAgICAgY2FsbCBjYWxsYmFja3MgdGhhdCBhcmUgaW4gYSByZWNvcmQgb2YgdHlwZSBbJ2EgY2FsbGJhY2tzXSwgd2hpY2ggcmVjb3Jkc1xuICAgICAgIGFyZSBhc3NvY2lhdGVkIHdpdGggcGVuZGluZyBwcm9taXNlcy4gVGhpcyBmdW5jdGlvbiBpcyBleHBvc2VkIGJlY2F1c2VcbiAgICAgICB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBbTHd0LmNhbmNlbF0gbmVlZHMgdG8gY2FsbCBpdCBkaXJlY3RseS5cbiAgICAgICBQcm9taXNlIHJlc29sdXRpb24gYW5kIGNhbGxiYWNrIGNhbGxpbmcgYXJlIHNlcGFyYXRlZCBpbiBhIHVuaXF1ZSB3YXkgaW5cbiAgICAgICBbY2FuY2VsXS5cbiAgICAgLSBbcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XSwgd2hpY2ggaXMgdXNlZCBieSBbTHd0LmJpbmRdIGFuZCBzaW1pbGFyXG4gICAgICAgZnVuY3Rpb25zIHRvIGNhbGwgc2luZ2xlIGNhbGxiYWNrcyB3aGVuIHRoZSBwcm9taXNlcyBwYXNzZWQgdG9cbiAgICAgICBbTHd0LmJpbmRdLCBldGMuLCBhcmUgYWxyZWFkeSByZXNvbHZlZC5cblxuICAgICBDdXJyZW50IEx3dCBhY3R1YWxseSBoYXMgYSBtZXNzeSBtaXggb2YgY2FsbGJhY2stY2FsbGluZyBiZWhhdmlvcnMuIEZvclxuICAgICBleGFtcGxlLCBbTHd0LmJpbmRdIGlzIGV4cGVjdGVkIHRvIGFsd2F5cyBjYWxsIGl0cyBjYWxsYmFjayBpbW1lZGlhdGVseSxcbiAgICAgd2hpbGUgW0x3dC53YWtldXBfbGF0ZXJdIGlzIGV4cGVjdGVkIHRvIGRlZmVyIGFsbCBjYWxsYmFja3Mgb2YgdGhlIHByb21pc2VcbiAgICAgcmVzb2x2ZWQsIHtlIHVubGVzc30gTHd0IGlzIG5vdCBhbHJlYWR5IGluc2lkZSB0aGUgcmVzb2x1dGlvbiBsb29wLlxuXG4gICAgIFdlIHBsYW5uZWQgdG8gbWFrZSB0aGVzZSBiZWhhdmlvcnMgdW5pZm9ybSBpbiBMd3QgNC4wLjAsIGJ1dCBkZWNpZGVkXG4gICAgIGFnYWluc3QgaXQgZHVlIHRvIHRoZSByaXNrIG9mIGJyZWFraW5nIHVzZXJzLiBTZWVcblxuICAgICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzUwMFxuICAgICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzUxOVxuXG4gICAgIEFzIHBhcnQgb2YgdGhlIHByZXBhcmF0aW9uIGZvciB0aGUgY2hhbmdlLCB0aGUgYWJvdmUgY2FsbGJhY2staW52b2tpbmdcbiAgICAgZnVuY3Rpb25zIHN1cHBvcnQgc2V2ZXJhbCBvcHRpb25hbCBhcmd1bWVudHMgdG8gZW11bGF0ZSB0aGUgdmFyaW91c1xuICAgICBiZWhhdmlvcnMuIFdlIGRlY2lkZWQgbm90IHRvIHJlbW92ZSB0aGlzIG1hY2hpbmVyeSwgYmVjYXVzZSB3ZSBtaWdodCB3YW50XG4gICAgIHRvIGV4cG9zZSBkaWZmZXJlbnQgQVBJcyB0byBMd3QgaW4gdGhlIGZ1dHVyZS5cblxuICAgICAtIFt+YWxsb3dfZGVmZXJyaW5nOmZhbHNlXSBhbGxvd3MgaWdub3JpbmcgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoLCBhbmRcbiAgICAgICBjYWxsaW5nIHRoZSBjYWxsYmFja3MgaW1tZWRpYXRlbHkuIFRoaXMgZW11bGF0ZXMgdGhlIG9sZCByZXNvbHV0aW9uXG4gICAgICAgYmVoYXZpb3IuXG4gICAgIC0gW35tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGg6MV0gYWxsb3dzIGxpbWl0aW5nIHRoZSBkZXB0aCB3aGljaFxuICAgICAgIHRyaWdnZXJzIGRlZmVycmFsIG9uIGEgcGVyLWNhbGwtc2l0ZSBiYXNpcy4gVGhpcyBpcyB1c2VkIGJ5XG4gICAgICAgW0x3dC53YWtldXBfbGF0ZXJdLlxuICAgICAtIFt+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVdIGlzIGxpa2VcbiAgICAgICBbfmFsbG93X2RlZmVycmluZzpmYWxzZV0sIHdoaWNoIGlnbm9yZXMgdGhlIGNhbGxiYWNrIHN0YWNrIGRlcHRoLlxuICAgICAgIEhvd2V2ZXIsIHRvIGVuc3VyZSB0aGF0IHRoZSBjYWxsYmFjayBpcyB0YWlsLWNhbGxlZCwgTHd0IGRvZXNuJ3QgZXZlblxuICAgICAgIHVwZGF0ZSB0aGUgY2FsbGJhY2sgc3RhY2sgZGVwdGggZm9yIHRoZSBiZW5lZml0IG9mICpvdGhlciogY2FsbGJhY2tcbiAgICAgICBjYWxscy4gSXQganVzdCBibGluZGx5IGNhbGxzIHRoZSBjYWxsYmFjay5cblxuICAgICBTZWUgZGlzY3Vzc2lvbiBvZiBjYWxsYmFjay1jYWxsaW5nIHNlbWFudGljcyBpbjpcblxuICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9pc3N1ZXMvMzI5XG5cbiAgICAgKiBDb250ZXh0XG5cbiAgICAgVGhlIHJlc29sdXRpb24gbG9vcCBlZmZlY3RpdmVseSBoYW5kbGVzIGFsbCBwcm9taXNlcyB0aGF0IGNhbiBiZSByZXNvbHZlZFxuICAgICBpbW1lZGlhdGVseSwgd2l0aG91dCBibG9ja2luZyBvbiBJL08uIEEgY29tcGxldGUgcHJvZ3JhbSB0aGF0IGRvZXMgSS9PXG4gICAgIGNhbGxzIFtMd3RfbWFpbi5ydW5dLiBTZWUgXCJObyBJL09cIiBpbiB0aGUgT3ZlcnZpZXcuICopXG5cblxuXG4gIGxldCBhc3luY19leGNlcHRpb25faG9vayA9XG4gICAgcmVmIChmdW4gZXhuIC0+XG4gICAgICBwcmVycl9zdHJpbmcgXCJGYXRhbCBlcnJvcjogZXhjZXB0aW9uIFwiO1xuICAgICAgcHJlcnJfc3RyaW5nIChQcmludGV4Yy50b19zdHJpbmcgZXhuKTtcbiAgICAgIHByZXJyX2NoYXIgJ1xcbic7XG4gICAgICBQcmludGV4Yy5wcmludF9iYWNrdHJhY2Ugc3RkZXJyO1xuICAgICAgZmx1c2ggc3RkZXJyO1xuICAgICAgZXhpdCAyKVxuXG4gIGxldCBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHYgPVxuICAgICgqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNhcmUgaWYgW2ZdIGV2YWx1YXRlcyB0byBhIHByb21pc2UuIEluXG4gICAgICAgcGFydGljdWxhciwgaWYgW2Ygdl0gZXZhbHVhdGVzIHRvIFtwXSBhbmQgW3BdIGlzIGFscmVhZHkgcmVqZWN0ZWQgb3Igd2lsbFxuICAgICAgIGJlIHJlamVjdCBsYXRlciwgaXQgaXMgbm90IHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGlzIGZ1bmN0aW9uIHRvIHBhc3NcbiAgICAgICB0aGUgZXhjZXB0aW9uIHRvIFshYXN5bmNfZXhjZXB0aW9uX2hvb2tdLiAqKVxuICAgIHRyeSBmIHZcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuXG5cblxuICBleGNlcHRpb24gQ2FuY2VsZWRcblxuXG5cbiAgKCogUnVucyB0aGUgY2FsbGJhY2tzIChmb3JtZXJseSkgYXNzb2NpYXRlZCB0byBhIHByb21pc2UuIENhbmNlbCBjYWxsYmFja3MgYXJlXG4gICAgIHJ1biBmaXJzdCwgaWYgdGhlIHByb21pc2Ugd2FzIGNhbmNlbGVkLiBUaGVzZSBhcmUgZm9sbG93ZWQgYnkgcmVndWxhclxuICAgICBjYWxsYmFja3MuXG5cbiAgICAgVGhlIHJlYXNvbiBmb3IgdGhlIFwiZm9ybWVybHlcIiBpcyB0aGF0IHRoZSBwcm9taXNlJ3Mgc3RhdGUgaGFzIGFscmVhZHkgYmVlblxuICAgICBzZXQgdG8gW0Z1bGZpbGxlZCBfXSBvciBbUmVqZWN0ZWQgX10sIHNvIHRoZSBjYWxsYmFja3MgYXJlIG5vIGxvbmdlclxuICAgICByZWFjaGFibGUgdGhyb3VnaCB0aGUgcHJvbWlzZSByZWZlcmVuY2UuIFRoaXMgaXMgd2h5IHRoZSBkaXJlY3QgW2NhbGxiYWNrc11cbiAgICAgcmVjb3JkIG11c3QgYmUgZ2l2ZW4gdG8gdGhpcyBmdW5jdGlvbi4gKilcbiAgbGV0IHJ1bl9jYWxsYmFja3NcbiAgICAgIChjYWxsYmFja3MgOiAnYSBjYWxsYmFja3MpXG4gICAgICAocmVzdWx0IDogJ2EgcmVzb2x2ZWRfc3RhdGUpIDogdW5pdCA9XG5cbiAgICBsZXQgcnVuX2NhbmNlbF9jYWxsYmFja3MgZnMgPVxuICAgICAgbGV0IHJlYyBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdCA9XG4gICAgICAgIG1hdGNoIGZzIHdpdGhcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eSAtPlxuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfY2FsbGJhY2sgKHN0b3JhZ2UsIGYpIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHN0b3JhZ2U7XG4gICAgICAgICAgaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKTtcbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IENhbmNlbF9jYWxsYmFja19saXN0X3JlbW92ZV9zZXF1ZW5jZV9ub2RlIG5vZGUgLT5cbiAgICAgICAgICBMd3Rfc2VxdWVuY2UucmVtb3ZlIG5vZGU7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBDYW5jZWxfY2FsbGJhY2tfbGlzdF9jb25jYXQgKGZzLCBmcycpIC0+XG4gICAgICAgICAgaXRlcl9jYWxsYmFja19saXN0IGZzIChmcyc6OnJlc3QpXG5cbiAgICAgIGFuZCBpdGVyX2xpc3QgcmVzdCA9XG4gICAgICAgIG1hdGNoIHJlc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgIHwgZnM6OnJlc3QgLT4gaXRlcl9jYWxsYmFja19saXN0IGZzIHJlc3RcblxuICAgICAgaW5cblxuICAgICAgaXRlcl9jYWxsYmFja19saXN0IGZzIFtdXG4gICAgaW5cblxuICAgIGxldCBydW5fcmVndWxhcl9jYWxsYmFja3MgZnMgPVxuICAgICAgbGV0IHJlYyBpdGVyX2NhbGxiYWNrX2xpc3QgZnMgcmVzdCA9XG4gICAgICAgIG1hdGNoIGZzIHdpdGhcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHkgLT5cbiAgICAgICAgICBpdGVyX2xpc3QgcmVzdFxuICAgICAgICB8IFJlZ3VsYXJfY2FsbGJhY2tfbGlzdF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgZiAtPlxuICAgICAgICAgIGYgcmVzdWx0O1xuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrXG4gICAgICAgICAgICB7Y29udGVudHMgPSBOb25lfSAtPlxuICAgICAgICAgIGl0ZXJfbGlzdCByZXN0XG4gICAgICAgIHwgUmVndWxhcl9jYWxsYmFja19saXN0X2V4cGxpY2l0bHlfcmVtb3ZhYmxlX2NhbGxiYWNrXG4gICAgICAgICAgICB7Y29udGVudHMgPSBTb21lIGZ9IC0+XG4gICAgICAgICAgZiByZXN1bHQ7XG4gICAgICAgICAgaXRlcl9saXN0IHJlc3RcbiAgICAgICAgfCBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfY29uY2F0IChmcywgZnMnKSAtPlxuICAgICAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyAoZnMnOjpyZXN0KVxuXG4gICAgICBhbmQgaXRlcl9saXN0IHJlc3QgPVxuICAgICAgICBtYXRjaCByZXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICB8IGZzOjpyZXN0IC0+IGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyByZXN0XG5cbiAgICAgIGluXG5cbiAgICAgIGl0ZXJfY2FsbGJhY2tfbGlzdCBmcyBbXVxuICAgIGluXG5cbiAgICAoKiBQYXR0ZXJuIG1hdGNoaW5nIGlzIG11Y2ggZmFzdGVyIHRoYW4gcG9seW1vcnBoaWMgY29tcGFyaXNvbi4gKilcbiAgICBsZXQgaXNfY2FuY2VsZWQgPVxuICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT4gdHJ1ZVxuICAgICAgfCBSZWplY3RlZCBfIC0+IGZhbHNlXG4gICAgICB8IEZ1bGZpbGxlZCBfIC0+IGZhbHNlXG4gICAgaW5cbiAgICBpZiBpc19jYW5jZWxlZCB0aGVuXG4gICAgICBydW5fY2FuY2VsX2NhbGxiYWNrcyBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcztcbiAgICBydW5fcmVndWxhcl9jYWxsYmFja3MgY2FsbGJhY2tzLnJlZ3VsYXJfY2FsbGJhY2tzXG5cblxuXG4gIGxldCBkZWZhdWx0X21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IDQyXG5cbiAgbGV0IGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IHJlZiAwXG5cbiAgdHlwZSBkZWZlcnJlZF9jYWxsYmFja3MgPVxuICAgIERlZmVycmVkIDogKCdhIGNhbGxiYWNrcyAqICdhIHJlc29sdmVkX3N0YXRlKSAtPiBkZWZlcnJlZF9jYWxsYmFja3NcbiAgICBbQEBvY2FtbC51bmJveGVkXVxuXG4gIGxldCBkZWZlcnJlZF9jYWxsYmFja3MgOiBkZWZlcnJlZF9jYWxsYmFja3MgUXVldWUudCA9IFF1ZXVlLmNyZWF0ZSAoKVxuXG4gICgqIEJlZm9yZSBlbnRlcmluZyBhIHJlc29sdXRpb24gbG9vcCwgaXQgaXMgbmVjZXNzYXJ5IHRvIHRha2UgYSBzbmFwc2hvdCBvZlxuICAgICB0aGUgY3VycmVudCBzdGF0ZSBvZiBzZXF1ZW5jZS1hc3NvY2lhdGVkIHN0b3JhZ2UuIFRoaXMgaXMgYmVjYXVzZSBtYW55IG9mXG4gICAgIHRoZSBjYWxsYmFja3MgdGhhdCB3aWxsIGJlIHJ1biB3aWxsIG1vZGlmeSB0aGUgc3RvcmFnZS4gVGhlIHN0b3JhZ2UgaXNcbiAgICAgcmVzdG9yZWQgdG8gdGhlIHNuYXBzaG90IHdoZW4gdGhlIHJlc29sdXRpb24gbG9vcCBpcyBleGl0ZWQuICopXG4gIGxldCBlbnRlcl9yZXNvbHV0aW9uX2xvb3AgKCkgPVxuICAgIGN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA6PSAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoICsgMTtcbiAgICBsZXQgc3RvcmFnZV9zbmFwc2hvdCA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cbiAgICBzdG9yYWdlX3NuYXBzaG90XG5cbiAgbGV0IGxlYXZlX3Jlc29sdXRpb25fbG9vcCAoc3RvcmFnZV9zbmFwc2hvdCA6IHN0b3JhZ2UpIDogdW5pdCA9XG4gICAgaWYgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aCA9IDEgdGhlbiBiZWdpblxuICAgICAgd2hpbGUgbm90IChRdWV1ZS5pc19lbXB0eSBkZWZlcnJlZF9jYWxsYmFja3MpIGRvXG4gICAgICAgIGxldCBEZWZlcnJlZCAoY2FsbGJhY2tzLCByZXN1bHQpID0gUXVldWUucG9wIGRlZmVycmVkX2NhbGxiYWNrcyBpblxuICAgICAgICBydW5fY2FsbGJhY2tzIGNhbGxiYWNrcyByZXN1bHRcbiAgICAgIGRvbmVcbiAgICBlbmQ7XG4gICAgY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIDo9ICFjdXJyZW50X2NhbGxiYWNrX25lc3RpbmdfZGVwdGggLSAxO1xuICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzdG9yYWdlX3NuYXBzaG90XG5cbiAgbGV0IHJ1bl9pbl9yZXNvbHV0aW9uX2xvb3AgZiA9XG4gICAgbGV0IHN0b3JhZ2Vfc25hcHNob3QgPSBlbnRlcl9yZXNvbHV0aW9uX2xvb3AgKCkgaW5cbiAgICBsZXQgcmVzdWx0ID0gZiAoKSBpblxuICAgIGxlYXZlX3Jlc29sdXRpb25fbG9vcCBzdG9yYWdlX3NuYXBzaG90O1xuICAgIHJlc3VsdFxuXG4gICgqIFRoaXMgaXMgYmFzaWNhbGx5IGEgaGFjayB0byBmaXggaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2lzc3Vlcy80OC5cbiAgICAgSWYgY3VycmVudGx5IHJlc29sdmluZyBwcm9taXNlcywgaXQgaW1tZWRpYXRlbHkgZXhpdHMgYWxsIHJlY3Vyc2l2ZVxuICAgICBlbnRyaWVzIG9mIHRoZSByZXNvbHV0aW9uIGxvb3AsIGdvZXMgdG8gdGhlIHRvcCBsZXZlbCwgcnVucyBhbnkgZGVmZXJyZWRcbiAgICAgY2FsbGJhY2tzLCBhbmQgZXhpdHMgdGhlIHRvcC1sZXZlbCByZXNvbHV0aW9uIGxvb3AuXG5cbiAgICAgVGhlIG5hbWUgc2hvdWxkIHByb2JhYmx5IGJlIFthYmFvbmRvbl9yZXNvbHV0aW9uX2xvb3BdLiAqKVxuICBsZXQgYWJhbmRvbl93YWtldXBzICgpID1cbiAgICBpZiAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoIDw+IDAgdGhlblxuICAgICAgbGVhdmVfcmVzb2x1dGlvbl9sb29wIFN0b3JhZ2VfbWFwLmVtcHR5XG5cblxuXG4gIGxldCBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgID8oYWxsb3dfZGVmZXJyaW5nID0gdHJ1ZSlcbiAgICAgID8obWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoID0gZGVmYXVsdF9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGgpXG4gICAgICBjYWxsYmFja3MgcmVzdWx0ID1cblxuICAgIGxldCBzaG91bGRfZGVmZXIgPVxuICAgICAgYWxsb3dfZGVmZXJyaW5nXG4gICAgICAmJiAhY3VycmVudF9jYWxsYmFja19uZXN0aW5nX2RlcHRoID49IG1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgIGluXG5cbiAgICBpZiBzaG91bGRfZGVmZXIgdGhlblxuICAgICAgUXVldWUucHVzaCAoRGVmZXJyZWQgKGNhbGxiYWNrcywgcmVzdWx0KSkgZGVmZXJyZWRfY2FsbGJhY2tzXG4gICAgZWxzZVxuICAgICAgcnVuX2luX3Jlc29sdXRpb25fbG9vcCAoZnVuICgpIC0+XG4gICAgICAgIHJ1bl9jYWxsYmFja3MgY2FsbGJhY2tzIHJlc3VsdClcblxuICBsZXQgcmVzb2x2ZSA/YWxsb3dfZGVmZXJyaW5nID9tYXhpbXVtX2NhbGxiYWNrX25lc3RpbmdfZGVwdGggcCByZXN1bHQgPVxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBsZXQgcCA9IHNldF9wcm9taXNlX3N0YXRlIHAgcmVzdWx0IGluXG5cbiAgICBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgID9hbGxvd19kZWZlcnJpbmcgP21heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aCBjYWxsYmFja3MgcmVzdWx0O1xuXG4gICAgcFxuXG4gIGxldCBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgID8ocnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsID0gZmFsc2UpXG4gICAgICB+Y2FsbGJhY2s6ZlxuICAgICAgfmlmX2RlZmVycmVkID1cblxuICAgIGlmIHJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbCB0aGVuXG4gICAgICBmICgpXG5cbiAgICBlbHNlXG4gICAgICBsZXQgc2hvdWxkX2RlZmVyID1cbiAgICAgICAgIWN1cnJlbnRfY2FsbGJhY2tfbmVzdGluZ19kZXB0aFxuICAgICAgICAgID49IGRlZmF1bHRfbWF4aW11bV9jYWxsYmFja19uZXN0aW5nX2RlcHRoXG4gICAgICBpblxuXG4gICAgICBpZiBzaG91bGRfZGVmZXIgdGhlbiBiZWdpblxuICAgICAgICBsZXQgaW1tZWRpYXRlX3Jlc3VsdCwgZGVmZXJyZWRfY2FsbGJhY2ssIGRlZmVycmVkX3Jlc3VsdCA9XG4gICAgICAgICAgaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgbGV0IGRlZmVycmVkX3JlY29yZCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgcmVndWxhcl9jYWxsYmFja3MgPVxuICAgICAgICAgICAgICBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrXG4gICAgICAgICAgICAgICAgZGVmZXJyZWRfY2FsbGJhY2s7XG4gICAgICAgICAgICBjYW5jZWxfY2FsbGJhY2tzID0gQ2FuY2VsX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgICAgICBob3dfdG9fY2FuY2VsID0gTm90X2NhbmNlbGFibGU7XG4gICAgICAgICAgICBjbGVhbnVwc19kZWZlcnJlZCA9IDBcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIFF1ZXVlLnB1c2hcbiAgICAgICAgICAoRGVmZXJyZWQgKGRlZmVycmVkX3JlY29yZCwgZGVmZXJyZWRfcmVzdWx0KSkgZGVmZXJyZWRfY2FsbGJhY2tzO1xuICAgICAgICBpbW1lZGlhdGVfcmVzdWx0XG4gICAgICBlbmRcbiAgICAgIGVsc2VcbiAgICAgICAgcnVuX2luX3Jlc29sdXRpb25fbG9vcCAoZnVuICgpIC0+XG4gICAgICAgICAgZiAoKSlcbmVuZFxuaW5jbHVkZSBSZXNvbHV0aW9uX2xvb3BcblxuXG5cbm1vZHVsZSBSZXNvbHZpbmcgOlxuc2lnXG4gIHZhbCB3YWtldXBfbGF0ZXJfcmVzdWx0IDogJ2EgdSAtPiAoJ2EsIGV4bikgcmVzdWx0IC0+IHVuaXRcbiAgdmFsIHdha2V1cF9sYXRlciA6ICdhIHUgLT4gJ2EgLT4gdW5pdFxuICB2YWwgd2FrZXVwX2xhdGVyX2V4biA6IF8gdSAtPiBleG4gLT4gdW5pdFxuXG4gIHZhbCB3YWtldXBfcmVzdWx0IDogJ2EgdSAtPiAoJ2EsIGV4bikgcmVzdWx0IC0+IHVuaXRcbiAgdmFsIHdha2V1cCA6ICdhIHUgLT4gJ2EgLT4gdW5pdFxuICB2YWwgd2FrZXVwX2V4biA6IF8gdSAtPiBleG4gLT4gdW5pdFxuXG4gIHZhbCBjYW5jZWwgOiAnYSB0IC0+IHVuaXRcbmVuZCA9XG5zdHJ1Y3RcbiAgKCogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZGV2aWF0ZXMgZnJvbSB0aGUgXCJpZGVhbFwiIGNhbGxiYWNrIGRlZmVycmFsXG4gICAgIGJlaGF2aW9yOiBpdCBydW5zIGNhbGxiYWNrcyBkaXJlY3RseSBvbiB0aGUgY3VycmVudCBzdGFjay4gSXQgc2hvdWxkXG4gICAgIHRoZXJlZm9yZSBiZSBwb3NzaWJsZSB0byBjYXVzZSBhIHN0YWNrIG92ZXJmbG93IHVzaW5nIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCB3YWtldXBfZ2VuZXJhbCBhcGlfZnVuY3Rpb25fbmFtZSByIHJlc3VsdCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9yZXNvbHZlciByIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgQ2FuY2VsZWQgLT5cbiAgICAgICgpXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgIFByaW50Zi5rc3ByaW50ZiBpbnZhbGlkX2FyZyBcIkx3dC4lc1wiIGFwaV9mdW5jdGlvbl9uYW1lXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHJlc3VsdCA9IHN0YXRlX29mX3Jlc3VsdCByZXN1bHQgaW5cbiAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPSByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgIGlnbm9yZSBwXG5cbiAgbGV0IHdha2V1cF9yZXN1bHQgciByZXN1bHQgPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cF9yZXN1bHRcIiByIHJlc3VsdFxuICBsZXQgd2FrZXVwIHIgdiA9IHdha2V1cF9nZW5lcmFsIFwid2FrZXVwXCIgciAoT2sgdilcbiAgbGV0IHdha2V1cF9leG4gciBleG4gPSB3YWtldXBfZ2VuZXJhbCBcIndha2V1cF9leG5cIiByIChFcnJvciBleG4pXG5cbiAgbGV0IHdha2V1cF9sYXRlcl9nZW5lcmFsIGFwaV9mdW5jdGlvbl9uYW1lIHIgcmVzdWx0ID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Jlc29sdmVyIHIgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBSZWplY3RlZCBDYW5jZWxlZCAtPlxuICAgICAgKClcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICBQcmludGYua3NwcmludGYgaW52YWxpZF9hcmcgXCJMd3QuJXNcIiBhcGlfZnVuY3Rpb25fbmFtZVxuICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgUHJpbnRmLmtzcHJpbnRmIGludmFsaWRfYXJnIFwiTHd0LiVzXCIgYXBpX2Z1bmN0aW9uX25hbWVcblxuICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICBsZXQgcmVzdWx0ID0gc3RhdGVfb2ZfcmVzdWx0IHJlc3VsdCBpblxuICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgIHJlc29sdmUgfm1heGltdW1fY2FsbGJhY2tfbmVzdGluZ19kZXB0aDoxIHAgcmVzdWx0IGluXG4gICAgICBpZ25vcmUgcFxuXG4gIGxldCB3YWtldXBfbGF0ZXJfcmVzdWx0IHIgcmVzdWx0ID1cbiAgICB3YWtldXBfbGF0ZXJfZ2VuZXJhbCBcIndha2V1cF9sYXRlcl9yZXN1bHRcIiByIHJlc3VsdFxuICBsZXQgd2FrZXVwX2xhdGVyIHIgdiA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJcIiByIChPayB2KVxuICBsZXQgd2FrZXVwX2xhdGVyX2V4biByIGV4biA9XG4gICAgd2FrZXVwX2xhdGVyX2dlbmVyYWwgXCJ3YWtldXBfbGF0ZXJfZXhuXCIgciAoRXJyb3IgZXhuKVxuXG5cblxuICB0eXBlIHBhY2tlZF9jYWxsYmFja3MgPVxuICAgIHwgUGFja2VkIDogXyBjYWxsYmFja3MgLT4gcGFja2VkX2NhbGxiYWNrc1xuICAgIFtAQG9jYW1sLnVuYm94ZWRdXG5cbiAgKCogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gZGV2aWF0ZXMgZnJvbSB0aGUgXCJpZGVhbFwiIGNhbGxiYWNrIGRlZmVycmFsXG4gICAgIGJlaGF2aW9yOiBpdCBydW5zIGNhbGxiYWNrcyBkaXJlY3RseSBvbiB0aGUgY3VycmVudCBzdGFjay4gSXQgc2hvdWxkXG4gICAgIHRoZXJlZm9yZSBiZSBwb3NzaWJsZSB0byBjYXVzZSBhIHN0YWNrIG92ZXJmbG93IHVzaW5nIHRoaXMgZnVuY3Rpb24uICopXG4gIGxldCBjYW5jZWwgcCA9XG4gICAgbGV0IGNhbmNlbGVkX3Jlc3VsdCA9IFJlamVjdGVkIENhbmNlbGVkIGluXG5cbiAgICAoKiBXYWxrcyB0aGUgcHJvbWlzZSBkZXBlbmRlbmN5IGdyYXBoIGJhY2t3YXJkcywgbG9va2luZyBmb3IgY2FuY2VsYWJsZVxuICAgICAgIGluaXRpYWwgcHJvbWlzZXMsIGFuZCBjYW5jZWxzIChvbmx5KSB0aGVtLlxuXG4gICAgICAgRm91bmQgaW5pdGlhbCBwcm9taXNlcyBhcmUgY2FuY2VsZWQgaW1tZWRpYXRlbHksIGFzIHRoZXkgYXJlIGZvdW5kLCBieVxuICAgICAgIHNldHRpbmcgdGhlaXIgc3RhdGUgdG8gW1JlamVjdGVkIENhbmNlbGVkXS4gVGhpcyBpcyB0byBwcmV2ZW50IHRoZW0gZnJvbVxuICAgICAgIGJlaW5nIFwiZm91bmQgdHdpY2VcIiBpZiB0aGV5IGFyZSByZWFjaGFibGUgYnkgdHdvIG9yIG1vcmUgZGlzdGluY3QgcGF0aHNcbiAgICAgICB0aHJvdWdoIHRoZSBwcm9taXNlIGRlcGVuZGVuY3kgZ3JhcGguXG5cbiAgICAgICBUaGUgY2FsbGJhY2tzIG9mIHRoZXNlIGluaXRpYWwgcHJvbWlzZXMgYXJlIHRoZW4gcnVuLCBpbiBhIHNlcGFyYXRlXG4gICAgICAgcGhhc2UuIFRoZXNlIGNhbGxiYWNrcyBwcm9wYWdhdGUgY2FuY2VsbGF0aW9uIGZvcndhcmRzIHRvIGFueSBkZXBlbmRlbnRcbiAgICAgICBwcm9taXNlcy4gU2VlIFwiQ2FuY2VsbGF0aW9uXCIgaW4gdGhlIE92ZXJ2aWV3LiAqKVxuICAgIGxldCBwcm9wYWdhdGVfY2FuY2VsIDogKF8sIF8sIF8pIHByb21pc2UgLT4gcGFja2VkX2NhbGxiYWNrcyBsaXN0ID1cbiAgICAgICAgZnVuIHAgLT5cbiAgICAgIGxldCByZWMgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyA6XG4gICAgICAgICAgJ2EgJ3UgJ2MuIHBhY2tlZF9jYWxsYmFja3MgbGlzdCAtPiAoJ2EsICd1LCAnYykgcHJvbWlzZSAtPlxuICAgICAgICAgICAgcGFja2VkX2NhbGxiYWNrcyBsaXN0ID1cbiAgICAgICAgICBmdW4gKHR5cGUgYykgY2FsbGJhY2tzX2FjY3VtdWxhdG9yIChwIDogKF8sIF8sIGMpIHByb21pc2UpIC0+XG5cbiAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgICAgICgqIElmIHRoZSBwcm9taXNlIGlzIG5vdCBzdGlsbCBwZW5kaW5nLCBpdCBjYW4ndCBiZSBjYW5jZWxlZC4gKilcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgIGNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICAgICBjYWxsYmFja3NfYWNjdW11bGF0b3JcblxuICAgICAgICB8IFBlbmRpbmcgY2FsbGJhY2tzIC0+XG4gICAgICAgICAgbWF0Y2ggY2FsbGJhY2tzLmhvd190b19jYW5jZWwgd2l0aFxuICAgICAgICAgIHwgTm90X2NhbmNlbGFibGUgLT5cbiAgICAgICAgICAgIGNhbGxiYWNrc19hY2N1bXVsYXRvclxuICAgICAgICAgIHwgQ2FuY2VsX3RoaXNfcHJvbWlzZSAtPlxuICAgICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICAgIHNldF9wcm9taXNlX3N0YXRlIHAgY2FuY2VsZWRfcmVzdWx0IGluXG4gICAgICAgICAgICBpZ25vcmUgcDtcbiAgICAgICAgICAgIChQYWNrZWQgY2FsbGJhY2tzKTo6Y2FsbGJhY2tzX2FjY3VtdWxhdG9yXG4gICAgICAgICAgfCBQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwJyAtPlxuICAgICAgICAgICAgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBjYWxsYmFja3NfYWNjdW11bGF0b3IgcCdcbiAgICAgICAgICB8IFByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcyAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgY2FuY2VsX2FuZF9jb2xsZWN0X2NhbGxiYWNrcyBjYWxsYmFja3NfYWNjdW11bGF0b3IgcHNcbiAgICAgIGluXG4gICAgICBjYW5jZWxfYW5kX2NvbGxlY3RfY2FsbGJhY2tzIFtdIHBcbiAgICBpblxuXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgY2FsbGJhY2tzID0gcHJvcGFnYXRlX2NhbmNlbCBwIGluXG5cbiAgICBjYWxsYmFja3MgfD4gTGlzdC5pdGVyIChmdW4gKFBhY2tlZCBjYWxsYmFja3MpIC0+XG4gICAgICBydW5fY2FsbGJhY2tzX29yX2RlZmVyX3RoZW1cbiAgICAgICAgfmFsbG93X2RlZmVycmluZzpmYWxzZSBjYWxsYmFja3MgY2FuY2VsZWRfcmVzdWx0KVxuZW5kXG5pbmNsdWRlIFJlc29sdmluZ1xuXG5cblxubW9kdWxlIFRyaXZpYWxfcHJvbWlzZXMgOlxuc2lnXG4gIHZhbCByZXR1cm4gOiAnYSAtPiAnYSB0XG4gIHZhbCBmYWlsIDogZXhuIC0+IF8gdFxuICB2YWwgb2ZfcmVzdWx0IDogKCdhLCBleG4pIHJlc3VsdCAtPiAnYSB0XG5cbiAgdmFsIHJldHVybl91bml0IDogdW5pdCB0XG4gIHZhbCByZXR1cm5fdHJ1ZSA6IGJvb2wgdFxuICB2YWwgcmV0dXJuX2ZhbHNlIDogYm9vbCB0XG4gIHZhbCByZXR1cm5fbm9uZSA6IF8gb3B0aW9uIHRcbiAgdmFsIHJldHVybl9zb21lIDogJ2EgLT4gJ2Egb3B0aW9uIHRcbiAgdmFsIHJldHVybl9vayA6ICdhIC0+ICgnYSwgXykgcmVzdWx0IHRcbiAgdmFsIHJldHVybl9lcnJvciA6ICdlIC0+IChfLCAnZSkgcmVzdWx0IHRcbiAgdmFsIHJldHVybl9uaWwgOiBfIGxpc3QgdFxuXG4gIHZhbCBmYWlsX3dpdGggOiBzdHJpbmcgLT4gXyB0XG4gIHZhbCBmYWlsX2ludmFsaWRfYXJnIDogc3RyaW5nIC0+IF8gdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgcmV0dXJuIHYgPVxuICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IEZ1bGZpbGxlZCB2fVxuXG4gIGxldCBvZl9yZXN1bHQgcmVzdWx0ID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBzdGF0ZV9vZl9yZXN1bHQgcmVzdWx0fVxuXG4gIGxldCBmYWlsIGV4biA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgZXhufVxuXG4gIGxldCByZXR1cm5fdW5pdCA9IHJldHVybiAoKVxuICBsZXQgcmV0dXJuX25vbmUgPSByZXR1cm4gTm9uZVxuICBsZXQgcmV0dXJuX3NvbWUgeCA9IHJldHVybiAoU29tZSB4KVxuICBsZXQgcmV0dXJuX25pbCA9IHJldHVybiBbXVxuICBsZXQgcmV0dXJuX3RydWUgPSByZXR1cm4gdHJ1ZVxuICBsZXQgcmV0dXJuX2ZhbHNlID0gcmV0dXJuIGZhbHNlXG4gIGxldCByZXR1cm5fb2sgeCA9IHJldHVybiAoT2sgeClcbiAgbGV0IHJldHVybl9lcnJvciB4ID0gcmV0dXJuIChFcnJvciB4KVxuXG4gIGxldCBmYWlsX3dpdGggbXNnID1cbiAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSBSZWplY3RlZCAoRmFpbHVyZSBtc2cpfVxuXG4gIGxldCBmYWlsX2ludmFsaWRfYXJnIG1zZyA9XG4gICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKEludmFsaWRfYXJndW1lbnQgbXNnKX1cbmVuZFxuaW5jbHVkZSBUcml2aWFsX3Byb21pc2VzXG5cblxuXG5tb2R1bGUgUGVuZGluZ19wcm9taXNlcyA6XG5zaWdcbiAgKCogSW50ZXJuYWwgKilcbiAgdmFsIG5ld19wZW5kaW5nIDpcbiAgICBob3dfdG9fY2FuY2VsOmhvd190b19jYW5jZWwgLT4gKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlXG4gIHZhbCBwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgOiBfIHQgbGlzdCAtPiBob3dfdG9fY2FuY2VsXG5cbiAgKCogSW5pdGlhbCBwZW5kaW5nIHByb21pc2VzIChwdWJsaWMpICopXG4gIHZhbCB3YWl0IDogdW5pdCAtPiAnYSB0ICogJ2EgdVxuICB2YWwgdGFzayA6IHVuaXQgLT4gJ2EgdCAqICdhIHVcblxuICB2YWwgYWRkX3Rhc2tfciA6ICdhIHUgTHd0X3NlcXVlbmNlLnQgLT4gJ2EgdFxuICB2YWwgYWRkX3Rhc2tfbCA6ICdhIHUgTHd0X3NlcXVlbmNlLnQgLT4gJ2EgdFxuXG4gIHZhbCBwcm90ZWN0ZWQgOiAnYSB0IC0+ICdhIHRcbiAgdmFsIG5vX2NhbmNlbCA6ICdhIHQgLT4gJ2EgdFxuZW5kID1cbnN0cnVjdFxuICBsZXQgbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWwgPVxuICAgIGxldCBzdGF0ZSA9XG4gICAgICBQZW5kaW5nIHtcbiAgICAgICAgcmVndWxhcl9jYWxsYmFja3MgPSBSZWd1bGFyX2NhbGxiYWNrX2xpc3RfZW1wdHk7XG4gICAgICAgIGNhbmNlbF9jYWxsYmFja3MgPSBDYW5jZWxfY2FsbGJhY2tfbGlzdF9lbXB0eTtcbiAgICAgICAgaG93X3RvX2NhbmNlbDtcbiAgICAgICAgY2xlYW51cHNfZGVmZXJyZWQgPSAwO1xuICAgICAgfVxuICAgIGluXG4gICAge3N0YXRlfVxuXG4gIGxldCBwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMgPVxuICAgICgqIFVzaW5nIGEgZGlydHkgY2FzdCBoZXJlIHRvIGF2b2lkIHJlYnVpbGRpbmcgdGhlIGxpc3QgOiggTm90IGJvdGhlcmluZ1xuICAgICAgIHdpdGggdGhlIGludmFyaWFudHMsIGJlY2F1c2UgW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbF0gcGFja3MgdGhlbSxcbiAgICAgICBhbmQgY29kZSB0aGF0IG1hdGNoZXMgb24gW1Byb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbF0gZG9lc24ndCBjYXJlIGFib3V0XG4gICAgICAgdGhlbSBhbnl3YXkuICopXG4gICAgbGV0IGNhc3RfcHJvbWlzZV9saXN0IDogJ2EgdCBsaXN0IC0+ICgnYSwgXywgXykgcHJvbWlzZSBsaXN0ID0gT2JqLm1hZ2ljIGluXG4gICAgUHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIChjYXN0X3Byb21pc2VfbGlzdCBwcylcblxuXG5cbiAgbGV0IHdhaXQgKCkgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Tm90X2NhbmNlbGFibGUgaW5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwLCB0b19wdWJsaWNfcmVzb2x2ZXIgcFxuXG4gIGxldCB0YXNrICgpID1cbiAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOkNhbmNlbF90aGlzX3Byb21pc2UgaW5cbiAgICB0b19wdWJsaWNfcHJvbWlzZSBwLCB0b19wdWJsaWNfcmVzb2x2ZXIgcFxuXG5cblxuXG4gIGxldCBjYXN0X3NlcXVlbmNlX25vZGVcbiAgICAgIChub2RlIDogJ2EgdSBMd3Rfc2VxdWVuY2Uubm9kZSlcbiAgICAgIChfYWN0dWFsX2NvbnRlbnQ6KCdhLCAndSwgJ2MpIHByb21pc2UpXG4gICAgICAgIDogKCdhLCAndSwgJ2MpIHByb21pc2UgTHd0X3NlcXVlbmNlLm5vZGUgPVxuICAgIE9iai5tYWdpYyBub2RlXG5cbiAgbGV0IGFkZF90YXNrX3Igc2VxdWVuY2UgPVxuICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9yICh0b19wdWJsaWNfcmVzb2x2ZXIgcCkgc2VxdWVuY2UgaW5cbiAgICBsZXQgbm9kZSA9IGNhc3Rfc2VxdWVuY2Vfbm9kZSBub2RlIHAgaW5cblxuICAgIGxldCBQZW5kaW5nIGNhbGxiYWNrcyA9IHAuc3RhdGUgaW5cbiAgICBjYWxsYmFja3MuY2FuY2VsX2NhbGxiYWNrcyA8LVxuICAgICAgQ2FuY2VsX2NhbGxiYWNrX2xpc3RfcmVtb3ZlX3NlcXVlbmNlX25vZGUgbm9kZTtcblxuICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICBsZXQgYWRkX3Rhc2tfbCBzZXF1ZW5jZSA9XG4gICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDpDYW5jZWxfdGhpc19wcm9taXNlIGluXG4gICAgbGV0IG5vZGUgPSBMd3Rfc2VxdWVuY2UuYWRkX2wgKHRvX3B1YmxpY19yZXNvbHZlciBwKSBzZXF1ZW5jZSBpblxuICAgIGxldCBub2RlID0gY2FzdF9zZXF1ZW5jZV9ub2RlIG5vZGUgcCBpblxuXG4gICAgbGV0IFBlbmRpbmcgY2FsbGJhY2tzID0gcC5zdGF0ZSBpblxuICAgIGNhbGxiYWNrcy5jYW5jZWxfY2FsbGJhY2tzIDwtXG4gICAgICBDYW5jZWxfY2FsbGJhY2tfbGlzdF9yZW1vdmVfc2VxdWVuY2Vfbm9kZSBub2RlO1xuXG4gICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG5cblxuICBsZXQgcHJvdGVjdGVkIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcF9pbnRlcm5hbCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT4gcFxuICAgIHwgUmVqZWN0ZWQgXyAtPiBwXG5cbiAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Q2FuY2VsX3RoaXNfcHJvbWlzZSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcF9yZXN1bHQgPVxuICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnID0gbWF5X25vd19iZV9wcm94eSBwJyBpblxuICAgICAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICAgICgqIEluIHRoaXMgY2FsbGJhY2ssIFtwJ10gd2lsbCBlaXRoZXIgc3RpbGwgaXRzZWxmIGJlIHBlbmRpbmcsIG9yIGl0XG4gICAgICAgICAgIHdpbGwgaGF2ZSBiZWNvbWUgYSBwcm94eSBmb3IgYSBwZW5kaW5nIHByb21pc2UuIFRoZSByZWFzb25pbmcgZm9yXG4gICAgICAgICAgIHRoaXMgaXMgYWxtb3N0IHRoZSBzYW1lIGFzIGluIHRoZSBjb21tZW50IGF0IFttYXlfbm93X2JlX3Byb3h5XS4gVGhlXG4gICAgICAgICAgIGRpZmZlcmVuY2VzIGFyZTpcblxuICAgICAgICAgICAtIFtwJ10gKmlzKiBhbiBpbml0aWFsIHByb21pc2UsIHNvIGl0ICpjYW4qIGdldCBjYW5jZWxlZC4gSG93ZXZlciwgaWZcbiAgICAgICAgICAgICBpdCBkb2VzLCB0aGUgW29uX2NhbmNlbF0gaGFuZGxlciBpbnN0YWxsZWQgYmVsb3cgd2lsbCByZW1vdmUgdGhpc1xuICAgICAgICAgICAgIGNhbGxiYWNrLlxuICAgICAgICAgICAtIFtwJ10gbmV2ZXIgZ2V0cyBwYXNzZWQgdG8gW21ha2VfaW50b19wcm94eV0sIHRoZSBvbmx5IGVmZmVjdCBvZlxuICAgICAgICAgICAgIHdoaWNoIGlzIHRoYXQgaXQgY2Fubm90IGJlIHRoZSB1bmRlcmx5aW5nIHByb21pc2Ugb2YgYW5vdGhlclxuICAgICAgICAgICAgIChwcm94eSkgcHJvbWlzZS4gU28sIFtwJ10gY2FuIG9ubHkgYXBwZWFyIGF0IHRoZSBoZWFkIG9mIGEgY2hhaW4gb2ZcbiAgICAgICAgICAgICBbUHJveHkgX10gbGlua3MsIGFuZCBpdCdzIG5vdCBuZWNlc3NhcnkgdG8gd29ycnkgYWJvdXQgd2hldGhlciB0aGVcbiAgICAgICAgICAgICBpbmR1Y3RpdmUgcmVhc29uaW5nIGF0IFttYXlfbm93X2JlX3Byb3h5XSBhcHBsaWVzLiAqKVxuXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcgcF9yZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHAnXG4gICAgICBpblxuXG4gICAgICBsZXQgcmVtb3ZlX3RoZV9jYWxsYmFjayA9XG4gICAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja19hbmRfZ2l2ZV9yZW1vdmVfZnVuY3Rpb25cbiAgICAgICAgICBbcF0gY2FsbGJhY2tcbiAgICAgIGluXG5cbiAgICAgIGxldCBQZW5kaW5nIHAnX2NhbGxiYWNrcyA9IHAnLnN0YXRlIGluXG4gICAgICBhZGRfY2FuY2VsX2NhbGxiYWNrIHAnX2NhbGxiYWNrcyByZW1vdmVfdGhlX2NhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwJ1xuXG4gIGxldCBub19jYW5jZWwgcCA9XG4gICAgbGV0IEludGVybmFsIHBfaW50ZXJuYWwgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPiBwXG4gICAgfCBSZWplY3RlZCBfIC0+IHBcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6Tm90X2NhbmNlbGFibGUgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJyA9IG1heV9ub3dfYmVfcHJveHkgcCcgaW5cbiAgICAgICAgbGV0IHAnID0gdW5kZXJseWluZyBwJyBpblxuICAgICAgICAoKiBJbiB0aGlzIGNhbGxiYWNrLCBbcCddIHdpbGwgZWl0aGVyIHN0aWxsIGl0c2VsZiBiZSBwZW5kaW5nLCBvciBpdFxuICAgICAgICAgICB3aWxsIGhhdmUgYmVjb21lIGEgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGUgcmVhc29uaW5nIGZvclxuICAgICAgICAgICB0aGlzIGlzIGFzIGluIFtwcm90ZWN0ZWRdIGFuZCBbbWF5X25vd19iZV9wcm94eV0sIGJ1dCBldmVuIHNpbXBsZXIsXG4gICAgICAgICAgIGJlY2F1c2UgW3AnXSBpcyBub3QgY2FuY2VsYWJsZS4gKilcblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJyA9XG4gICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnIHBfcmVzdWx0IGluXG4gICAgICAgIGlnbm9yZSBwJ1xuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHAnXG5lbmRcbmluY2x1ZGUgUGVuZGluZ19wcm9taXNlc1xuXG5cblxubW9kdWxlIFNlcXVlbnRpYWxfY29tcG9zaXRpb24gOlxuc2lnXG4gICgqIE1haW4gaW50ZXJmYWNlIChwdWJsaWMpICopXG4gIHZhbCBiaW5kIDogJ2EgdCAtPiAoJ2EgLT4gJ2IgdCkgLT4gJ2IgdFxuICB2YWwgbWFwIDogKCdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuICB2YWwgY2F0Y2ggOiAodW5pdCAtPiAnYSB0KSAtPiAoZXhuIC0+ICdhIHQpIC0+ICdhIHRcbiAgdmFsIGZpbmFsaXplIDogKHVuaXQgLT4gJ2EgdCkgLT4gKHVuaXQgLT4gdW5pdCB0KSAtPiAnYSB0XG4gIHZhbCB0cnlfYmluZCA6ICh1bml0IC0+ICdhIHQpIC0+ICgnYSAtPiAnYiB0KSAtPiAoZXhuIC0+ICdiIHQpIC0+ICdiIHRcblxuICAoKiBDYW5jZWwgY2FsbGJhY2tzIChwdWJsaWMpLiAqKVxuICB2YWwgb25fY2FuY2VsIDogJ2EgdCAtPiAodW5pdCAtPiB1bml0KSAtPiB1bml0XG5cbiAgKCogTm9uLXByb21pc2UgY2FsbGJhY2tzIChwdWJsaWMpICopXG4gIHZhbCBvbl9zdWNjZXNzIDogJ2EgdCAtPiAoJ2EgLT4gdW5pdCkgLT4gdW5pdFxuICB2YWwgb25fZmFpbHVyZSA6IF8gdCAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX3Rlcm1pbmF0aW9uIDogXyB0IC0+ICh1bml0IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIG9uX2FueSA6ICdhIHQgLT4gKCdhIC0+IHVuaXQpIC0+IChleG4gLT4gdW5pdCkgLT4gdW5pdFxuXG4gICgqIEJhY2t0cmFjZSBzdXBwb3J0IChpbnRlcm5hbDsgZm9yIHVzZSBieSB0aGUgUFBYKSAqKVxuICB2YWwgYmFja3RyYWNlX2JpbmQgOlxuICAgIChleG4gLT4gZXhuKSAtPiAnYSB0IC0+ICgnYSAtPiAnYiB0KSAtPiAnYiB0XG4gIHZhbCBiYWNrdHJhY2VfY2F0Y2ggOlxuICAgIChleG4gLT4gZXhuKSAtPiAodW5pdCAtPiAnYSB0KSAtPiAoZXhuIC0+ICdhIHQpIC0+ICdhIHRcbiAgdmFsIGJhY2t0cmFjZV9maW5hbGl6ZSA6XG4gICAgKGV4biAtPiBleG4pIC0+ICh1bml0IC0+ICdhIHQpIC0+ICh1bml0IC0+IHVuaXQgdCkgLT4gJ2EgdFxuICB2YWwgYmFja3RyYWNlX3RyeV9iaW5kIDpcbiAgICAoZXhuIC0+IGV4bikgLT4gKHVuaXQgLT4gJ2EgdCkgLT4gKCdhIC0+ICdiIHQpIC0+IChleG4gLT4gJ2IgdCkgLT4gJ2IgdFxuZW5kID1cbnN0cnVjdFxuICAoKiBUaGVyZSBhcmUgZml2ZSBwcmltYXJ5IHNlcXVlbnRpYWwgY29tcG9zaXRpb24gZnVuY3Rpb25zOiBbYmluZF0sIFttYXBdLFxuICAgICBbY2F0Y2hdLCBbZmluYWxpemVdLCBhbmQgW3RyeV9iaW5kXS4gT2YgdGhlc2UsIFt0cnlfYmluZF0gaXMgdGhlIG1vc3RcbiAgICAgZ2VuZXJhbCAtLSBhbGwgdGhlIG90aGVycyBjYW4gYmUgaW1wbGVtZW50ZWQgaW4gdGVybXMgb2YgaXQuXG5cbiAgICAgTHd0IGNvbmZsYXRlcyBjb25jdXJyZW5jeSB3aXRoIGVycm9yIHByb3BhZ2F0aW9uLiBJZiBMd3QgZGlkIG5vdCBkbyB0aGlzLFxuICAgICB0aGVyZSB3b3VsZCBiZSBvbmx5IHR3byBwcmltYXJ5IGZ1bmN0aW9uczogW2JpbmRdIGFuZCBbbWFwXSwgYW5kLCBvZiB0aGVzZVxuICAgICB0d28sIFtiaW5kXSBpcyB0aGUgbW9zdCBnZW5lcmFsLiBTaW5jZSBbYmluZF0gaXMgdGhlIG1vc3QgcmVsZXZhbnRcbiAgICAgc3BlY2lmaWNhbGx5IHRvIGNvbmN1cnJlbmN5LCBhbmQgaXMgYWxzbyB0aGUgbW9zdCBmYW1pbGlhciBmdW5jdGlvbiBpbiBMd3QsXG4gICAgIGl0cyBpbXBsZW1lbnRhdGlvbiBzZXJ2ZXMgYXMgYSBraW5kIG9mIFwibW9kZWxcIiBmb3IgdGhlIHJlc3QuIEl0IGlzIHRoZSBtb3N0XG4gICAgIGNvbW1lbnRlZCwgYW5kIGFsbCB0aGUgb3RoZXIgZnVuY3Rpb25zIGZvbGxvdyBhIHNpbWlsYXIgcGF0dGVybiB0byBbYmluZF0uXG5cbiAgICAgRm91ciBvZiB0aGUgcHJpbWFyeSBmdW5jdGlvbnMgaGF2ZSBbYmFja3RyYWNlXypdIHZlcnNpb25zLCB3aGljaCBhcmUgbm90XG4gICAgIHRydWx5IHB1YmxpYywgYW5kIGV4aXN0IHRvIHN1cHBvcnQgdGhlIFBQWC4gW2JhY2t0cmFjZV9tYXBdIGRvZXMgbm90IGV4aXN0XG4gICAgIGJlY2F1c2UgdGhlIFBQWCBkb2VzIG5vdCBuZWVkIGl0LlxuXG4gICAgIFRoZSByZW1haW5pbmcgZm91ciBmdW5jdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGF0dGFjaCBcImxvd2VyLWxldmVsLWlzaFwiXG4gICAgIG5vbi1wcm9taXNlLXByb2R1Y2luZyBjYWxsYmFja3MgdG8gcHJvbWlzZXM6IHRoZXNlIGFyZSB0aGUgW29uXypdXG4gICAgIGZ1bmN0aW9ucy4gT2YgdGhlc2UsIFtvbl9hbnldIGlzIHRoZSBtb3N0IGdlbmVyYWwuIElmIEx3dCBkaWQgbm90IGNvbmZsYXRlXG4gICAgIGNvbmN1cnJlbmN5IHdpdGggZXJyb3IgaGFuZGxpbmcsIHRoZXJlIHdvdWxkIG9ubHkgYmUgb25lOiBbb25fc3VjY2Vzc10uICopXG5cblxuXG4gICgqIE1ha2VzIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSBpbnRvIGEgcHJveHkgb2YgW35vdXRlcl9wcm9taXNlXS4gQWZ0ZXJcbiAgICAgW21ha2VfaW50b19wcm94eV0sIHRoZXNlIHR3byBwcm9taXNlIHJlZmVyZW5jZXMgXCJiZWhhdmUgaWRlbnRpY2FsbHkuXCJcblxuICAgICBOb3RlIHRoYXQgdGhpcyBpcyBub3Qgc3ltbWV0cmljOiBbdXNlcl9wcm92aWRlZF9wcm9taXNlXSBhbHdheXMgYmVjb21lcyB0aGVcbiAgICAgcHJveHkuIFttYWtlX2ludG9fcHJveHldIGlzIGNhbGxlZCBvbmx5IGJ5IFtiaW5kXSBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaW5cbiAgICAgdGhpcyBtb2R1bGUuIFRoaXMgbWVhbnMgdGhhdDpcblxuICAgICAtIHRoZSBvbmx5IHdheSBmb3IgYSBwcm9taXNlIHRvIGJlY29tZSBhIHByb3h5IGlzIGJ5IGJlaW5nIHJldHVybmVkIGZyb21cbiAgICAgICB0aGUgY2FsbGJhY2sgZ2l2ZW4gYnkgdGhlIHVzZXIgdG8gW2JpbmRdLCBvciBhIHNpbWlsYXIgZnVuY3Rpb24sIGFuZFxuICAgICAtIHRoZSBvbmx5IHdheSBmb3IgYSBwcm9taXNlIHRvIGJlY29tZSB1bmRlcmx5aW5nIGZvciBhIHByb21pc2Ugb3RoZXIgdGhhblxuICAgICAgIGl0c2VsZiBpcyB0byBiZSB0aGUgb3V0ZXIgcHJvbWlzZSBvcmlnaW5hbGx5IHJldHVybmVkIHRvIHRoZSB1c2VyIGZyb21cbiAgICAgICBbYmluZF0sIG9yIGEgc2ltaWxhciBmdW5jdGlvbi5cblxuICAgICBUaGVzZSB0d28gZmFjdHMgYXJlIGltcG9ydGFudCBmb3IgcmVhc29uaW5nIGFib3V0IGhvdyBhbmQgd2hpY2ggcHJvbWlzZXNcbiAgICAgY2FuIGJlY29tZSBwcm94aWVzLCB1bmRlcmx5aW5nLCBldGMuOyBpbiBwYXJ0aWN1bGFyLCBpdCBpcyB1c2VkIGluIHRoZVxuICAgICBhcmd1bWVudCBpbiBbbWF5X25vd19iZV9wcm94eV0gZm9yIGNvcnJlY3QgcHJlZGljdGlvbnMgYWJvdXQgc3RhdGUgY2hhbmdlcy5cblxuICAgICBbfm91dGVyX3Byb21pc2VdIGlzIGFsd2F5cyBhIHBlbmRpbmcgcHJvbWlzZSB3aGVuIFttYWtlX2ludG9fcHJveHldIGlzXG4gICAgIGNhbGxlZDsgZm9yIHRoZSBleHBsYW5hdGlvbiwgc2VlIFttYXlfbm93X2JlX3Byb3h5XSAodGhvdWdoIHRoZSBjYWxsZXIgb2ZcbiAgICAgW21ha2VfaW50b19wcm94eV0gYWx3YXlzIGNhbGxzIFt1bmRlcmx5aW5nXSBmaXJzdCB0byBwYXNzIHRoZSB1bmRlcmx5aW5nXG4gICAgIHBlbmRpbmcgcHJvbWlzZSB0byBbbWFrZV9pbnRvX3Byb3h5XSkuXG5cbiAgICAgVGhlIHJlYXNvbnMgcHJveHlpbmcgaXMgdXNlZCwgaW5zdGVhZCBvZiBhZGRpbmcgYSBjYWxsYmFjayB0b1xuICAgICBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gdG8gcmVzb2x2ZSBbfm91dGVyX3Byb21pc2VdIHdoZW4gdGhlIGZvcm1lclxuICAgICBiZWNvbWVzIHJlc29sdmVkIHByb2JhYmx5IGFyZTpcblxuICAgICAtIFByb21pc2VzIGhhdmUgbW9yZSBiZWhhdmlvcnMgdGhhbiByZXNvbHV0aW9uLiBPbmUgd291bGQgaGF2ZSB0byBhZGQgYVxuICAgICAgIGNhbmNlbGxhdGlvbiBoYW5kbGVyIHRvIFt+b3V0ZXJfcHJvbWlzZV0gdG8gcHJvcGFnYXRlIHRoZSBjYW5jZWxsYXRpb25cbiAgICAgICBiYWNrIHRvIFt+dXNlcl9wcm92aWRlZF9wcm9taXNlXSwgZm9yIGV4YW1wbGUuIEl0IG1heSBiZSBlYXNpZXIgdG8ganVzdFxuICAgICAgIHRoaW5rIG9mIHRoZW0gYXMgdGhlIHNhbWUgcHJvbWlzZS5cbiAgICAgLSBJZiB1c2luZyBjYWxsYmFja3MsIHJlc29sdmluZyBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gd291bGQgbm90XG4gICAgICAgaW1tZWRpYXRlbHkgcmVzb2x2ZSBbfm91dGVyX3Byb21pc2VdLiBBbm90aGVyIGNhbGxiYWNrIGFkZGVkIHRvXG4gICAgICAgW351c2VyX3Byb3ZpZGVkX3Byb21pc2VdIG1pZ2h0IHNlZSBbfnVzZXJfcHJvdmlkZWRfcHJvbWlzZV0gcmVzb2x2ZWQsXG4gICAgICAgYnV0IFt+b3V0ZXJfcHJvbWlzZV0gc3RpbGwgcGVuZGluZywgZGVwZW5kaW5nIG9uIHRoZSBvcmRlciBpbiB3aGljaFxuICAgICAgIGNhbGxiYWNrcyBhcmUgcnVuLiAqKVxuICBsZXQgbWFrZV9pbnRvX3Byb3h5XG4gICAgICAodHlwZSBjKVxuICAgICAgfihvdXRlcl9wcm9taXNlIDogKCdhLCB1bmRlcmx5aW5nLCBwZW5kaW5nKSBwcm9taXNlKVxuICAgICAgfih1c2VyX3Byb3ZpZGVkX3Byb21pc2UgOiAoJ2EsIF8sIGMpIHByb21pc2UpXG4gICAgICAgIDogKCdhLCB1bmRlcmx5aW5nLCBjKSBzdGF0ZV9jaGFuZ2VkID1cblxuICAgICgqIFVzaW5nIFtwJ10gYXMgaXQncyB0aGUgbmFtZSB1c2VkIGluc2lkZSBbYmluZF0sIGV0Yy4sIGZvciBwcm9taXNlcyB3aXRoXG4gICAgICAgdGhpcyByb2xlIC0tIFtwJ10gaXMgdGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIHVzZXIncyBmdW5jdGlvbi4gKilcbiAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHVzZXJfcHJvdmlkZWRfcHJvbWlzZSBpblxuXG4gICAgaWYgaWRlbnRpY2FsIHAnIG91dGVyX3Byb21pc2UgdGhlblxuICAgICAgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJ1xuICAgICAgKCogV2UgcmVhbGx5IHdhbnQgdG8gcmV0dXJuIFtTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIG91dGVyX3Byb21pc2VdLCBidXRcbiAgICAgICAgIHRoZSByZWZlcmVuY2UgdGhyb3VnaCBbcCddIGhhcyB0aGUgcmlnaHQgdHlwZS4gKilcblxuICAgIGVsc2VcbiAgICAgIG1hdGNoIHAnLnN0YXRlIHdpdGhcbiAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIG91dGVyX3Byb21pc2UgcCcuc3RhdGVcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2Ugb3V0ZXJfcHJvbWlzZSBwJy5zdGF0ZVxuXG4gICAgICB8IFBlbmRpbmcgcCdfY2FsbGJhY2tzIC0+XG4gICAgICAgIGxldCBQZW5kaW5nIG91dGVyX2NhbGxiYWNrcyA9IG91dGVyX3Byb21pc2Uuc3RhdGUgaW5cblxuICAgICAgICBtZXJnZV9jYWxsYmFja3MgfmZyb206cCdfY2FsbGJhY2tzIH5pbnRvOm91dGVyX2NhbGxiYWNrcztcbiAgICAgICAgb3V0ZXJfY2FsbGJhY2tzLmhvd190b19jYW5jZWwgPC0gcCdfY2FsbGJhY2tzLmhvd190b19jYW5jZWw7XG5cbiAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcgPVxuICAgICAgICAgIHNldF9wcm9taXNlX3N0YXRlIHAnIChQcm94eSBvdXRlcl9wcm9taXNlKSBpblxuICAgICAgICBpZ25vcmUgcCc7XG5cbiAgICAgICAgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBvdXRlcl9wcm9taXNlXG4gICAgICAgICgqIFRoZSBzdGF0ZSBoYXNuJ3QgYWN0dWFsbHkgY2hhbmdlZCwgYnV0IHdlIHN0aWxsIGhhdmUgdG8gd3JhcFxuICAgICAgICAgICBbb3V0ZXJfcHJvbWlzZV0gZm9yIHR5cGUgY2hlY2tpbmcuICopXG5cbiAgICAgICAgKCogVGhlIHN0YXRlIG9mIFtwJ10gbWF5IGluc3RlYWQgaGF2ZSBjaGFuZ2VkIC0tIGl0IG1heSBoYXZlIGJlY29tZSBhXG4gICAgICAgICAgIHByb3h5LiBIb3dldmVyLCBjYWxsZXJzIG9mIFttYWtlX2ludG9fcHJveHldIGRvbid0IGtub3cgaWZcbiAgICAgICAgICAgW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gd2FzIGEgcHJveHkgb3Igbm90ICh0aGF0J3Mgd2h5IHdlIGNhbGxcbiAgICAgICAgICAgdW5kZXJseWluZyBvbiBpdCBhdCB0aGUgdG9wIG9mIHRoaXMgZnVuY3Rpb24sIHRvIGdldCBbcCddKS4gV2UgY2FuXG4gICAgICAgICAgIHRoZXJlZm9yZSB0YWtlIGEgZGFuZ2Vyb3VzIHNob3J0Y3V0IGFuZCBub3QgYm90aGVyIHJldHVybmluZyBhIG5ld1xuICAgICAgICAgICByZWZlcmVuY2UgdG8gW3VzZXJfcHJvdmlkZWRfcHJvbWlzZV0gZm9yIHNoYWRvd2luZy4gKilcblxuXG5cbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IGEgbG90IG9mIHRoZSBjb2RlIGJlbG93IGNhbiBwcm9iYWJseSBiZSBkZWR1cGxpY2F0ZWQgaW5cbiAgICAgc29tZSB3YXksIGVzcGVjaWFsbHkgaWYgYXNzdW1pbmcgRmxhbWJkYS4gKilcblxuICBsZXQgYmluZCBwIGYgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgICgqIEluIGNhc2UgW0x3dC5iaW5kXSBuZWVkcyB0byBkZWZlciB0aGUgY2FsbCB0byBbZl0sIHRoaXMgZnVuY3Rpb24gd2lsbCBiZVxuICAgICAgIGNhbGxlZCB0byBjcmVhdGU6XG5cbiAgICAgICAxLiBUaGUgcHJvbWlzZSwgW3AnJ10sIHRoYXQgbXVzdCBiZSByZXR1cm5lZCB0byB0aGUgY2FsbGVyIGltbWVkaWF0ZWx5LlxuICAgICAgIDIuIFRoZSBjYWxsYmFjayB0aGF0IHJlc29sdmVzIFtwJyddLlxuXG4gICAgICAgW0x3dC5iaW5kXSBkZWZlcnMgdGhlIGNhbGwgdG8gW2ZdIGluIHR3byBjaXJjdW1zdGFuY2VzOlxuXG4gICAgICAgMS4gVGhlIHByb21pc2UgW3BdIGlzIHBlbmRpbmcuXG4gICAgICAgMi4gVGhlIHByb21pc2UgW3BdIGlzIGZ1bGZpbGxlZCwgYnV0IHRoZSBjdXJyZW50IGNhbGxiYWNrIGNhbGwgbmVzdGluZ1xuICAgICAgICAgIGRlcHRoIGlzIHN1Y2ggdGhhdCB0aGUgY2FsbCB0byBbZl0gbXVzdCBnbyBpbnRvIHRoZSBjYWxsYmFjayBxdWV1ZSwgaW5cbiAgICAgICAgICBvcmRlciB0byBhdm9pZCBzdGFjayBvdmVyZmxvdy5cblxuICAgICAgTWVjaGFuaXNtICgyKSBpcyBjdXJyZW50bHkgZGlzYWJsZWQuIEl0IG1heSBiZSB1c2VkIGluIGFuIGFsdGVybmF0aXZlIEx3dFxuICAgICAgQVBJLlxuXG4gICAgICBGdW5jdGlvbnMgb3RoZXIgdGhhbiBbTHd0LmJpbmRdIGhhdmUgYW5hbG9nb3VzIGRlZmVycmFsIGJlaGF2aW9yLiAqKVxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cbiAgICAgICgqIFRoZSByZXN1bHQgcHJvbWlzZSBpcyBhIGZyZXNoIHBlbmRpbmcgcHJvbWlzZS5cblxuICAgICAgICAgSW5pdGlhbGx5LCB0cnlpbmcgdG8gY2FuY2VsIHRoaXMgZnJlc2ggcGVuZGluZyBwcm9taXNlIFtwJyddIHdpbGxcbiAgICAgICAgIHByb3BhZ2F0ZSB0aGUgY2FuY2VsbGF0aW9uIGF0dGVtcHQgdG8gW3BdIChiYWNrd2FyZHMgdGhyb3VnaCB0aGVcbiAgICAgICAgIHByb21pc2UgZGVwZW5kZW5jeSBncmFwaCkuIElmL3doZW4gW3BdIGlzIGZ1bGZpbGxlZCwgTHd0IHdpbGwgY2FsbCB0aGVcbiAgICAgICAgIHVzZXIncyBjYWxsYmFjayBbZl0gYmVsb3csIHdoaWNoIHdpbGwgcHJvdmlkZSBhIG5ldyBwcm9taXNlIFtwJ10sIGFuZFxuICAgICAgICAgW3AnXSB3aWxsIGJlY29tZSBhIHByb3h5IG9mIFtwJyddLiBBdCB0aGF0IHBvaW50LCB0cnlpbmcgdG8gY2FuY2VsXG4gICAgICAgICBbcCcnXSB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gdHJ5aW5nIHRvIGNhbmNlbCBbcCddLCBzbyB0aGUgYmVoYXZpb3Igd2lsbFxuICAgICAgICAgZGVwZW5kIG9uIGhvdyB0aGUgdXNlciBvYnRhaW5lZCBbcCddLiAqKVxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGYgdiB3aXRoIGV4blxuICAgICAgICAgICAgd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cbiAgICAgICAgICAoKiBSdW4gdGhlIHVzZXIncyBmdW5jdGlvbiBbZl0uICopXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG4gICAgICAgICAgKCogW3AnJ10gd2FzIGFuIHVuZGVybHlpbmcgcHJvbWlzZSB3aGVuIGl0IHdhcyBjcmVhdGVkIGFib3ZlLCBidXQgaXRcbiAgICAgICAgICAgICBtYXkgaGF2ZSBiZWNvbWUgYSBwcm94eSBieSB0aGUgdGltZSB0aGlzIGNvZGUgaXMgYmVpbmcgZXhlY3V0ZWQuXG4gICAgICAgICAgICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgZWl0aGVyIGFuIHVuZGVybHlpbmcgcGVuZGluZyBwcm9taXNlLCBvciBhXG4gICAgICAgICAgICAgcHJveHkgZm9yIGEgcGVuZGluZyBwcm9taXNlLiBUaGVyZWZvcmUsIFttYXlfbm93X2JlX3Byb3h5XSBwcm9kdWNlc1xuICAgICAgICAgICAgIGEgcmVmZXJlbmNlIHdpdGggdGhlIHJpZ2h0IHR5cGUgdmFyaWFibGVzLiBXZSBpbW1lZGlhdGVseSBnZXRcbiAgICAgICAgICAgICBbcCcnXSdzIGN1cnJlbnQgdW5kZXJseWluZyBwcm9taXNlLiAqKVxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgICAgICAoKiBNYWtlIHRoZSBvdXRlciBwcm9taXNlIFtwJyddIGJlaGF2aW9yYWxseSBpZGVudGljYWwgdG8gdGhlIHByb21pc2VcbiAgICAgICAgICAgICBbcCddIHJldHVybmVkIGJ5IFtmXSBieSBtYWtpbmcgW3AnXSBpbnRvIGEgcHJveHkgb2YgW3AnJ10uICopXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgKHAnJywgY2FsbGJhY2spID0gY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgIHAnJ1xuXG4gIGxldCBiYWNrdHJhY2VfYmluZCBhZGRfbG9jIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGYgdlxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT5cbiAgICAgICAgICAgICAgZmFpbCAoYWRkX2xvYyBleG4pIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIChSZWplY3RlZCAoYWRkX2xvYyBleG4pKSBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGYgdilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gUmVqZWN0ZWQgKGFkZF9sb2MgZXhuKX1cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgbWFwIGYgcCA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcnX3Jlc3VsdCA9XG4gICAgICAgICAgICB0cnkgRnVsZmlsbGVkIChmIHYpIHdpdGggZXhuXG4gICAgICAgICAgICB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBSZWplY3RlZCBleG5cbiAgICAgICAgICBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcCcnX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcF9yZXN1bHQgLT5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgcmVzb2x2ZSB+YWxsb3dfZGVmZXJyaW5nOmZhbHNlIHAnJyBwX3Jlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2VcbiAgICAgICAgICAgIHtzdGF0ZSA9XG4gICAgICAgICAgICAgIHRyeSBGdWxmaWxsZWQgKGYgdilcbiAgICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gUmVqZWN0ZWQgZXhufSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKHAnJywgY2FsbGJhY2spID1cbiAgICAgICAgICAgIGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAocCcnLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPSBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrO1xuICAgICAgcCcnXG5cbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBjYXRjaCBmIGggPVxuICAgIGxldCBwID1cbiAgICAgIHRyeSBmICgpXG4gICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgIGluXG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHAnJyA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihQcm9wYWdhdGVfY2FuY2VsX3RvX29uZSBwKSBpblxuXG4gICAgICBsZXQgc2F2ZWRfc3RvcmFnZSA9ICFjdXJyZW50X3N0b3JhZ2UgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHBfcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcF9yZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIGFzIHBfcmVzdWx0IC0+XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwJycgcF9yZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgSW50ZXJuYWwgcCcgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X25vd19iZV9wZW5kaW5nX3Byb3h5IHAnJyA9IG1heV9ub3dfYmVfcHJveHkgcCcnIGluXG4gICAgICAgICAgbGV0IHAnJyA9IHVuZGVybHlpbmcgcCcnIGluXG5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwJycgPVxuICAgICAgICAgICAgbWFrZV9pbnRvX3Byb3h5IH5vdXRlcl9wcm9taXNlOnAnJyB+dXNlcl9wcm92aWRlZF9wcm9taXNlOnAnIGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuICAgICAgaW5cblxuICAgICAgKHRvX3B1YmxpY19wcm9taXNlIHAnJywgY2FsbGJhY2spXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX2NhdGNoIGFkZF9sb2MgZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCcnIHBfcmVzdWx0IGluXG4gICAgICAgICAgaWdub3JlIHAnJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgY3VycmVudF9zdG9yYWdlIDo9IHNhdmVkX3N0b3JhZ2U7XG5cbiAgICAgICAgICBsZXQgcCcgPVxuICAgICAgICAgICAgdHJ5IGggZXhuXG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaCAoYWRkX2xvYyBleG4pKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgdHJ5X2JpbmQgZiBmJyBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmJyB2XG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBoIGV4blxuICAgICAgICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG4gICAgICBpblxuXG4gICAgICAodG9fcHVibGljX3Byb21pc2UgcCcnLCBjYWxsYmFjaylcbiAgICBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBmJyB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGggZXhuKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgYmFja3RyYWNlX3RyeV9iaW5kIGFkZF9sb2MgZiBmJyBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cblxuICAgIGxldCBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBwJycgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDooUHJvcGFnYXRlX2NhbmNlbF90b19vbmUgcCkgaW5cblxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGxldCBjYWxsYmFjayBwX3Jlc3VsdCA9XG4gICAgICAgIG1hdGNoIHBfcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuXG4gICAgICAgICAgbGV0IHAnID1cbiAgICAgICAgICAgIHRyeSBmJyB2XG4gICAgICAgICAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPlxuICAgICAgICAgICAgICBmYWlsIChhZGRfbG9jIGV4bilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCcgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcnID0gbWF5X25vd19iZV9wcm94eSBwJycgaW5cbiAgICAgICAgICBsZXQgcCcnID0gdW5kZXJseWluZyBwJycgaW5cblxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnJyA9XG4gICAgICAgICAgICBtYWtlX2ludG9fcHJveHkgfm91dGVyX3Byb21pc2U6cCcnIH51c2VyX3Byb3ZpZGVkX3Byb21pc2U6cCcgaW5cbiAgICAgICAgICBpZ25vcmUgcCcnXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcblxuICAgICAgICAgIGxldCBwJyA9XG4gICAgICAgICAgICB0cnkgaCBleG5cbiAgICAgICAgICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+XG4gICAgICAgICAgICAgIGZhaWwgKGFkZF9sb2MgZXhuKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwJycgPSBtYXlfbm93X2JlX3Byb3h5IHAnJyBpblxuICAgICAgICAgIGxldCBwJycgPSB1bmRlcmx5aW5nIHAnJyBpblxuXG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCcnID1cbiAgICAgICAgICAgIG1ha2VfaW50b19wcm94eSB+b3V0ZXJfcHJvbWlzZTpwJycgfnVzZXJfcHJvdmlkZWRfcHJvbWlzZTpwJyBpblxuICAgICAgICAgIGlnbm9yZSBwJydcbiAgICAgIGluXG5cbiAgICAgICh0b19wdWJsaWNfcHJvbWlzZSBwJycsIGNhbGxiYWNrKVxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgICAgfnJ1bl9pbW1lZGlhdGVseV9hbmRfZW5zdXJlX3RhaWxfY2FsbDp0cnVlXG4gICAgICAgIH5jYWxsYmFjazooZnVuICgpIC0+IGYnIHYpXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9XG4gICAgICAgICAgICBjcmVhdGVfcmVzdWx0X3Byb21pc2VfYW5kX2NhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKHAnJywgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaCAoYWRkX2xvYyBleG4pKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCAocCcnLCBjYWxsYmFjaykgPVxuICAgICAgICAgICAgY3JlYXRlX3Jlc3VsdF9wcm9taXNlX2FuZF9jYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgIChwJycsIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IChwJycsIGNhbGxiYWNrKSA9IGNyZWF0ZV9yZXN1bHRfcHJvbWlzZV9hbmRfY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2s7XG4gICAgICBwJydcblxuICBsZXQgZmluYWxpemUgZiBmJyA9XG4gICAgdHJ5X2JpbmQgZlxuICAgICAgKGZ1biB4IC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IHJldHVybiB4KSlcbiAgICAgIChmdW4gZSAtPiBiaW5kIChmJyAoKSkgKGZ1biAoKSAtPiBmYWlsIGUpKVxuXG4gIGxldCBiYWNrdHJhY2VfZmluYWxpemUgYWRkX2xvYyBmIGYnID1cbiAgICBiYWNrdHJhY2VfdHJ5X2JpbmQgYWRkX2xvYyBmXG4gICAgICAoZnVuIHggLT4gYmluZCAoZicgKCkpIChmdW4gKCkgLT4gcmV0dXJuIHgpKVxuICAgICAgKGZ1biBlIC0+IGJpbmQgKGYnICgpKSAoZnVuICgpIC0+IGZhaWwgKGFkZF9sb2MgZSkpKVxuXG5cblxuICBsZXQgb25fY2FuY2VsIHAgZiA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbWF0Y2ggcC5zdGF0ZSB3aXRoXG4gICAgfCBSZWplY3RlZCBDYW5jZWxlZCAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgICgoKSwgKGZ1biBfIC0+IGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgKCkpLCBGdWxmaWxsZWQgKCkpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcblxuICAgIHwgUGVuZGluZyBjYWxsYmFja3MgLT5cbiAgICAgIGFkZF9jYW5jZWxfY2FsbGJhY2sgY2FsbGJhY2tzIGZcblxuXG5cbiAgbGV0IG9uX3N1Y2Nlc3MgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biByZXN1bHQgLT5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGYgdlxuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIF8gLT5cbiAgICAgICgpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX2ZhaWx1cmUgcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biByZXN1bHQgLT5cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG5cbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIGV4blxuICAgIGluXG5cbiAgICBtYXRjaCBwLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAoKVxuXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiBleG4pXG4gICAgICAgIH5pZl9kZWZlcnJlZDooZnVuICgpIC0+XG4gICAgICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgICAgICAoKCksIGNhbGxiYWNrLCBwLnN0YXRlKSlcblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrID0gY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgb25fdGVybWluYXRpb24gcCBmID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG5cbiAgICBsZXQgY2FsbGJhY2tfaWZfZGVmZXJyZWQgKCkgPVxuICAgICAgbGV0IHNhdmVkX3N0b3JhZ2UgPSAhY3VycmVudF9zdG9yYWdlIGluXG5cbiAgICAgIGZ1biBfcmVzdWx0IC0+XG4gICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiAoKSlcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBSZWplY3RlZCBfIC0+XG4gICAgICBydW5fY2FsbGJhY2tfb3JfZGVmZXJfaXRcbiAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmICgpKVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICBhZGRfaW1wbGljaXRseV9yZW1vdmVkX2NhbGxiYWNrIHBfY2FsbGJhY2tzIGNhbGxiYWNrXG5cbiAgbGV0IG9uX2FueSBwIGYgZyA9XG4gICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuXG4gICAgbGV0IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpID1cbiAgICAgIGxldCBzYXZlZF9zdG9yYWdlID0gIWN1cnJlbnRfc3RvcmFnZSBpblxuXG4gICAgICBmdW4gcmVzdWx0IC0+XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjdXJyZW50X3N0b3JhZ2UgOj0gc2F2ZWRfc3RvcmFnZTtcbiAgICAgICAgICBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBmIHZcblxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGN1cnJlbnRfc3RvcmFnZSA6PSBzYXZlZF9zdG9yYWdlO1xuICAgICAgICAgIGhhbmRsZV93aXRoX2FzeW5jX2V4Y2VwdGlvbl9ob29rIGcgZXhuXG4gICAgaW5cblxuICAgIG1hdGNoIHAuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgIHJ1bl9jYWxsYmFja19vcl9kZWZlcl9pdFxuICAgICAgICB+cnVuX2ltbWVkaWF0ZWx5X2FuZF9lbnN1cmVfdGFpbF9jYWxsOnRydWVcbiAgICAgICAgfmNhbGxiYWNrOihmdW4gKCkgLT4gaGFuZGxlX3dpdGhfYXN5bmNfZXhjZXB0aW9uX2hvb2sgZiB2KVxuICAgICAgICB+aWZfZGVmZXJyZWQ6KGZ1biAoKSAtPlxuICAgICAgICAgIGxldCBjYWxsYmFjayA9IGNhbGxiYWNrX2lmX2RlZmVycmVkICgpIGluXG4gICAgICAgICAgKCgpLCBjYWxsYmFjaywgcC5zdGF0ZSkpXG5cbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgcnVuX2NhbGxiYWNrX29yX2RlZmVyX2l0XG4gICAgICAgIH5ydW5faW1tZWRpYXRlbHlfYW5kX2Vuc3VyZV90YWlsX2NhbGw6dHJ1ZVxuICAgICAgICB+Y2FsbGJhY2s6KGZ1biAoKSAtPiBoYW5kbGVfd2l0aF9hc3luY19leGNlcHRpb25faG9vayBnIGV4bilcbiAgICAgICAgfmlmX2RlZmVycmVkOihmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgICAgICgoKSwgY2FsbGJhY2ssIHAuc3RhdGUpKVxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgPSBjYWxsYmFja19pZl9kZWZlcnJlZCAoKSBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuZW5kXG5pbmNsdWRlIFNlcXVlbnRpYWxfY29tcG9zaXRpb25cblxuXG4oKiBUaGlzIGJlbG9uZ3Mgd2l0aCB0aGUgW3Byb3RlY3RlZF0gYW5kIHN1Y2gsIGJ1dCBpdCBkZXBlbmRzIG9uIHByaW1pdGl2ZXMgZnJvbVxuICAgW1NlcXVlbnRpYWxfY29tcG9zaXRpb25dLiAqKVxubGV0IHdyYXBfaW5fY2FuY2VsYWJsZSBwID1cbiBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuIGxldCBwX3VuZGVybHlpbmcgPSB1bmRlcmx5aW5nIHBfaW50ZXJuYWwgaW5cbiBtYXRjaCBwX3VuZGVybHlpbmcuc3RhdGUgd2l0aFxuIHwgRnVsZmlsbGVkIF8gLT4gcFxuIHwgUmVqZWN0ZWQgXyAtPiBwXG4gfCBQZW5kaW5nIF8gLT5cbiAgIGxldCBwJywgciA9IHRhc2sgKCkgaW5cbiAgIG9uX2NhbmNlbCBwJyAoZnVuICgpIC0+IGNhbmNlbCBwKTtcbiAgIG9uX2FueSBwICh3YWtldXAgcikgKHdha2V1cF9leG4gcik7XG4gICBwJ1xuXG5cbm1vZHVsZSBDb25jdXJyZW50X2NvbXBvc2l0aW9uIDpcbnNpZ1xuICB2YWwgZG9udF93YWl0IDogKHVuaXQgLT4gXyB0KSAtPiAoZXhuIC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGFzeW5jIDogKHVuaXQgLT4gXyB0KSAtPiB1bml0XG4gIHZhbCBpZ25vcmVfcmVzdWx0IDogXyB0IC0+IHVuaXRcblxuICB2YWwgYm90aCA6ICdhIHQgLT4gJ2IgdCAtPiAoJ2EgKiAnYikgdFxuICB2YWwgam9pbiA6IHVuaXQgdCBsaXN0IC0+IHVuaXQgdFxuICB2YWwgYWxsIDogKCdhIHQpIGxpc3QgLT4gKCdhIGxpc3QpIHRcblxuICB2YWwgY2hvb3NlIDogJ2EgdCBsaXN0IC0+ICdhIHRcbiAgdmFsIHBpY2sgOiAnYSB0IGxpc3QgLT4gJ2EgdFxuXG4gIHZhbCBuY2hvb3NlIDogJ2EgdCBsaXN0IC0+ICdhIGxpc3QgdFxuICB2YWwgbnBpY2sgOiAnYSB0IGxpc3QgLT4gJ2EgbGlzdCB0XG5cbiAgdmFsIG5jaG9vc2Vfc3BsaXQgOiAnYSB0IGxpc3QgLT4gKCdhIGxpc3QgKiAnYSB0IGxpc3QpIHRcbmVuZCA9XG5zdHJ1Y3RcbiAgZXh0ZXJuYWwgcmVyYWlzZSA6IGV4biAtPiAnYSA9IFwiJXJlcmFpc2VcIlxuXG4gIGxldCBkb250X3dhaXQgZiBoID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgaCBleG5cblxuICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIG1hdGNoIHJlc3VsdCB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICAgICAoKVxuICAgICAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgICAgIGggZXhuXG4gICAgICBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG4gIGxldCBhc3luYyBmID1cbiAgICBsZXQgcCA9XG4gICAgICB0cnkgZiAoKVxuICAgICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cbiAgICBpblxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG5cbiAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgKClcbiAgICB8IFJlamVjdGVkIGV4biAtPlxuICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuXG4gICAgfCBQZW5kaW5nIHBfY2FsbGJhY2tzIC0+XG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbWF0Y2ggcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICAgICgpXG4gICAgICAgIHwgUmVqZWN0ZWQgZXhuIC0+XG4gICAgICAgICAgIWFzeW5jX2V4Y2VwdGlvbl9ob29rIGV4blxuICAgICAgaW5cbiAgICAgIGFkZF9pbXBsaWNpdGx5X3JlbW92ZWRfY2FsbGJhY2sgcF9jYWxsYmFja3MgY2FsbGJhY2tcblxuICBsZXQgaWdub3JlX3Jlc3VsdCBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIF8gLT5cbiAgICAgICgpXG4gICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgIHJlcmFpc2UgZXhuXG5cbiAgICB8IFBlbmRpbmcgcF9jYWxsYmFja3MgLT5cbiAgICAgIGxldCBjYWxsYmFjayByZXN1bHQgPVxuICAgICAgICBtYXRjaCByZXN1bHQgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+XG4gICAgICAgICAgKClcbiAgICAgICAgfCBSZWplY3RlZCBleG4gLT5cbiAgICAgICAgICAhYXN5bmNfZXhjZXB0aW9uX2hvb2sgZXhuXG4gICAgICBpblxuICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFja1xuXG5cblxuICBsZXQgam9pbiBwcyA9XG4gICAgbGV0IHAnID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgIGxldCBudW1iZXJfcGVuZGluZ19pbl9wcyA9IHJlZiAwIGluXG4gICAgbGV0IGpvaW5fcmVzdWx0ID0gcmVmIChGdWxmaWxsZWQgKCkpIGluXG5cbiAgICAoKiBDYWxsYmFjayBhdHRhY2hlZCB0byBlYWNoIHByb21pc2UgaW4gW3BzXSB0aGF0IGlzIHN0aWxsIHBlbmRpbmcgYXQgdGhlXG4gICAgICAgdGltZSBbam9pbl0gaXMgY2FsbGVkLiAqKVxuICAgIGxldCBjYWxsYmFjayBuZXdfcmVzdWx0ID1cbiAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCcgPSBtYXlfbm93X2JlX3Byb3h5IHAnIGluXG5cbiAgICAgIGJlZ2luIG1hdGNoIG5ld19yZXN1bHQgd2l0aFxuICAgICAgfCBGdWxmaWxsZWQgKCkgLT4gKClcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgKCogRm9yIHRoZSBmaXJzdCBwcm9taXNlIGluIFtwc10gdG8gYmUgcmVqZWN0ZWQsIHNldCB0aGUgcmVzdWx0IG9mIHRoZVxuICAgICAgICAgW2pvaW5dIHRvIHJlamVjdGVkIHdpdGggdGhlIHNhbWUgZXhjZXB0aW9uLi4gKilcbiAgICAgICAgbWF0Y2ggIWpvaW5fcmVzdWx0IHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgKCkgLT4gam9pbl9yZXN1bHQgOj0gbmV3X3Jlc3VsdFxuICAgICAgICB8IFJlamVjdGVkIF8gLT4gKClcbiAgICAgIGVuZDtcblxuICAgICAgKCogSW4gYWxsIGNhc2VzLCBkZWNyZW1lbnQgdGhlIG51bWJlciBvZiBwcm9taXNlcyBzdGlsbCBwZW5kaW5nLCBhbmRcbiAgICAgICAgIHJlc29sdmUgdGhlIFtqb2luXSBvbmNlIGFsbCBwcm9taXNlcyByZXNvbHZlLiAqKVxuICAgICAgbnVtYmVyX3BlbmRpbmdfaW5fcHMgOj0gIW51bWJlcl9wZW5kaW5nX2luX3BzIC0gMTtcbiAgICAgIGlmICFudW1iZXJfcGVuZGluZ19pbl9wcyA9IDAgdGhlbiBiZWdpblxuICAgICAgICBsZXQgcCcgPSB1bmRlcmx5aW5nIHAnIGluXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAnID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgKHVuZGVybHlpbmcgcCcpICFqb2luX3Jlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcCdcbiAgICAgIGVuZFxuICAgIGluXG5cbiAgICAoKiBBdHRhY2ggdGhlIGFib3ZlIGNhbGxiYWNrLiBTaW11bHRhbmVvdXNseSBjb3VudCBob3cgbWFueSBwZW5kaW5nIHByb21pc2VzXG4gICAgICAgdGhlcmUgYXJlIGluIFtwc10gKGluaXRpYWxseSkuIElmIHRoYXQgbnVtYmVyIGlzIHplcm8sIHRoZSBbam9pbl0gbXVzdFxuICAgICAgIHJlc29sdmUgaW1tZWRpYXRlbHkuICopXG4gICAgbGV0IHJlYyBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwcyA9XG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmICFudW1iZXJfcGVuZGluZ19pbl9wcyA9IDAgdGhlblxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9ICFqb2luX3Jlc3VsdH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHAnXG5cbiAgICAgIHwgcDo6cHMgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgUGVuZGluZyBwX2NhbGxiYWNrcyAtPlxuICAgICAgICAgIG51bWJlcl9wZW5kaW5nX2luX3BzIDo9ICFudW1iZXJfcGVuZGluZ19pbl9wcyArIDE7XG4gICAgICAgICAgYWRkX2ltcGxpY2l0bHlfcmVtb3ZlZF9jYWxsYmFjayBwX2NhbGxiYWNrcyBjYWxsYmFjaztcbiAgICAgICAgICBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyBwX3Jlc3VsdCAtPlxuICAgICAgICAgICgqIEFzIGluIHRoZSBjYWxsYmFjayBhYm92ZSwgYnV0IGZvciBhbHJlYWR5LXJlc29sdmVkIHByb21pc2VzIGluXG4gICAgICAgICAgICAgW3BzXTogcmVqZWN0IHRoZSBbam9pbl0gd2l0aCB0aGUgc2FtZSBleGNlcHRpb24gYXMgaW4gdGhlIGZpcnN0XG4gICAgICAgICAgICAgcmVqZWN0ZWQgcHJvbWlzZSBmb3VuZC4gW2pvaW5dIHN0aWxsIHdhaXRzIGZvciBhbnkgcGVuZGluZyBwcm9taXNlc1xuICAgICAgICAgICAgIGJlZm9yZSBhY3R1YWxseSByZXNvbHZpbmcsIHRob3VnaC4gKilcbiAgICAgICAgICBiZWdpbiBtYXRjaCAham9pbl9yZXN1bHQgd2l0aFxuICAgICAgICAgIHwgRnVsZmlsbGVkICgpIC0+IGpvaW5fcmVzdWx0IDo9IHBfcmVzdWx0O1xuICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiAoKVxuICAgICAgICAgIGVuZDtcbiAgICAgICAgICBhdHRhY2hfY2FsbGJhY2tfb3JfcmVzb2x2ZV9pbW1lZGlhdGVseSBwc1xuXG4gICAgICAgIHwgRnVsZmlsbGVkICgpIC0+XG4gICAgICAgICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcbiAgICBpblxuXG4gICAgYXR0YWNoX2NhbGxiYWNrX29yX3Jlc29sdmVfaW1tZWRpYXRlbHkgcHNcblxuICAoKiB0aGlzIGlzIDMgd29yZHMsIHNtYWxsZXIgdGhhbiB0aGUgMiB0aW1lcyAyIHdvcmRzIGEgcGFpciBvZiByZWZlcmVuY2VzXG4gICAgIHdvdWxkIHRha2UuICopXG4gIHR5cGUgKCdhLCdiKSBwYWlyID0ge1xuICAgIG11dGFibGUgeDE6ICdhIG9wdGlvbjtcbiAgICBtdXRhYmxlIHgyOiAnYiBvcHRpb247XG4gIH1cblxuICBsZXQgYm90aCBwMSBwMiA9XG4gICAgbGV0IHBhaXIgPSB7eDEgPSBOb25lOyB4MiA9IE5vbmV9IGluXG4gICAgbGV0IHAxJyA9IGJpbmQgcDEgKGZ1biB2IC0+IHBhaXIueDEgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkgaW5cbiAgICBsZXQgcDInID0gYmluZCBwMiAoZnVuIHYgLT4gcGFpci54MiA8LSBTb21lIHY7IHJldHVybl91bml0KSBpblxuICAgIGpvaW4gW3AxJzsgcDInXSB8PiBtYXAgKGZ1biAoKSAtPlxuICAgICAgbWF0Y2ggcGFpci54MSwgcGFpci54MiB3aXRoXG4gICAgICB8IFNvbWUgdjEsIFNvbWUgdjIgLT4gdjEsIHYyXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBhbGwgcHMgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+IHJldHVybl9uaWxcbiAgICB8IFt4XSAtPiBtYXAgKGZ1biB5IC0+IFt5XSkgeFxuICAgIHwgW3g7IHldIC0+IG1hcCAoZnVuICh4LCB5KSAtPiBbeDsgeV0pIChib3RoIHggeSlcbiAgICB8IF8gLT5cbiAgICAgIGxldCB2cyA9IEFycmF5Lm1ha2UgKExpc3QubGVuZ3RoIHBzKSBOb25lIGluXG4gICAgICBwc1xuICAgICAgfD4gTGlzdC5tYXBpIChmdW4gaW5kZXggcCAtPlxuICAgICAgICBiaW5kIHAgKGZ1biB2IC0+IHZzLihpbmRleCkgPC0gU29tZSB2OyByZXR1cm5fdW5pdCkpXG4gICAgICB8PiBqb2luXG4gICAgICB8PiBtYXAgKGZ1biAoKSAtPlxuICAgICAgICAgIGxldCByZWMgdG9fbGlzdF91bm9wdCBpIGFjYyA9XG4gICAgICAgICAgICBpZiBpIDwgMCB0aGVuXG4gICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBtYXRjaCBBcnJheS51bnNhZmVfZ2V0IHZzIGkgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IHRvX2xpc3RfdW5vcHQgKGkgLSAxKSAoeDo6YWNjKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdG9fbGlzdF91bm9wdCAoQXJyYXkubGVuZ3RoIHZzIC0gMSkgW10pXG5cbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IHRoZSBuZXh0IGZldyBmdW5jdGlvbnMgYXJlIGhlbHBlcnMgZm9yIFtjaG9vc2VdIGFuZFxuICAgICBbcGlja10uIFBlcmhhcHMgdGhleSBzaG91bGQgYmUgZmFjdG9yZWQgaW50byBzb21lIGtpbmQgb2YgZ2VuZXJpY1xuICAgICBbY2hvb3NlXS9bcGlja10gaW1wbGVtZW50YXRpb24sIHdoaWNoIG1heSBhY3R1YWxseSBiZSBvcHRpbWFsIGFueXdheSB3aXRoXG4gICAgIEZsYW1iZGEuICopXG5cbiAgbGV0IGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIChwcyA6ICdhIHQgbGlzdCkgPVxuICAgIGxldCByZWMgY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCB0b3RhbCByZWplY3RlZCBwcyA9XG4gICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgIHwgW10gLT4gRXJyb3IgKHRvdGFsLCByZWplY3RlZClcbiAgICAgICB8IHAgOjogcHMgLT5cbiAgICAgICAgICAgIGxldCBJbnRlcm5hbCBxID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgICAgICBtYXRjaCAodW5kZXJseWluZyBxKS5zdGF0ZSB3aXRoXG4gICAgICAgICAgICB8IEZ1bGZpbGxlZCBfIC0+IGNvdW50X2FuZF9nYXRoZXJfcmVqZWN0ZWQgdG90YWwgcmVqZWN0ZWQgcHNcbiAgICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkICh0b3RhbCArIDEpIChwIDo6IHJlamVjdGVkKSBwc1xuICAgICAgICAgICAgfCBQZW5kaW5nIF8gLT4gY291bnRfYW5kX2dhdGhlcl9yZWplY3RlZCB0b3RhbCByZWplY3RlZCBwc1xuICAgIGluXG4gICAgbGV0IHJlYyBjb3VudF9mdWxmaWxsZWQgdG90YWwgcHMgPVxuICAgICAgIG1hdGNoIHBzIHdpdGhcbiAgICAgICB8IFtdIC0+IE9rIHRvdGFsXG4gICAgICAgfCBwIDo6IHBzIC0+XG4gICAgICAgICAgICBsZXQgSW50ZXJuYWwgcSA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcSkuc3RhdGUgd2l0aFxuICAgICAgICAgICAgfCBGdWxmaWxsZWQgXyAtPiBjb3VudF9mdWxmaWxsZWQgKHRvdGFsICsgMSkgcHNcbiAgICAgICAgICAgIHwgUmVqZWN0ZWQgXyAtPiBjb3VudF9hbmRfZ2F0aGVyX3JlamVjdGVkIDEgW3BdIHBzXG4gICAgICAgICAgICB8IFBlbmRpbmcgXyAtPiBjb3VudF9mdWxmaWxsZWQgdG90YWwgcHNcbiAgICBpblxuICAgIGNvdW50X2Z1bGZpbGxlZCAwIHBzXG5cbiAgKCogRXZhbHVhdGVzIHRvIHRoZSBbbl10aCBwcm9taXNlIGluIFtwc10sIGFtb25nIG9ubHkgdGhvc2UgcHJvbWlzZXMgaW4gW3BzXVxuICAgICB0aGF0IGFyZSByZXNvbHZlZC4gVGhlIGNhbGxlciBpcyBleHBlY3RlZCB0byBlbnN1cmUgdGhhdCB0aGVyZSBhcmUgYXRcbiAgICAgbGVhc3QgW25dIHJlc29sdmVkIHByb21pc2VzIGluIFtwc10uICopXG4gIGxldCByZWMgbnRoX3Jlc29sdmVkIChwcyA6ICdhIHQgbGlzdCkgKG4gOiBpbnQpIDogJ2EgdCA9XG4gICAgbWF0Y2ggcHMgd2l0aFxuICAgIHwgW10gLT5cbiAgICAgIGFzc2VydCBmYWxzZVxuXG4gICAgfCBwOjpwcyAtPlxuICAgICAgbGV0IEludGVybmFsIHAnID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICBtYXRjaCAodW5kZXJseWluZyBwJykuc3RhdGUgd2l0aFxuICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgbnRoX3Jlc29sdmVkIHBzIG5cblxuICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiBwXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkIHBzIChuIC0gMSlcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiBwXG4gICAgICAgIGVsc2UgbnRoX3Jlc29sdmVkIHBzIChuIC0gMSlcblxuICAoKiBMaWtlIFtudGhfcmVzb2x2ZWRdLCBidXQgY2FuY2VscyBhbGwgcGVuZGluZyBwcm9taXNlcyBmb3VuZCB3aGlsZVxuICAgICB0cmF2ZXJzaW5nIFtwc10uICopXG4gIGxldCByZWMgbnRoX3Jlc29sdmVkX2FuZF9jYW5jZWxfcGVuZGluZyAocHMgOiAnYSB0IGxpc3QpIChuIDogaW50KSA6ICdhIHQgPVxuICAgIG1hdGNoIHBzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBhc3NlcnQgZmFsc2VcblxuICAgIHwgcDo6cHMgLT5cbiAgICAgIGxldCBJbnRlcm5hbCBwJyA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCcpLnN0YXRlIHdpdGhcbiAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgIGNhbmNlbCBwO1xuICAgICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIG5cblxuICAgICAgfCBGdWxmaWxsZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiAoTGlzdC5pdGVyIGNhbmNlbCBwczsgcClcbiAgICAgICAgZWxzZSBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIChuIC0gMSlcbiAgICAgIHwgUmVqZWN0ZWQgXyAtPlxuICAgICAgICBpZiBuIDw9IDAgdGhlbiAoTGlzdC5pdGVyIGNhbmNlbCBwczsgcClcbiAgICAgICAgZWxzZSBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzIChuIC0gMSlcblxuICAoKiBUaGUgUFJORyBzdGF0ZSBpcyBpbml0aWFsaXplZCB3aXRoIGEgY29uc3RhbnQgdG8gbWFrZSBub24tSU8tYmFzZWQgcHJvZ3JhbXNcbiAgICAgZGV0ZXJtaW5pc3RpYy4gKilcbiAgKCogTWFpbnRhaW5lcidzIG5vdGU6IGlzIHRoaXMgbmVjZXNzYXJ5PyAqKVxuICBsZXQgcHJuZyA9IGxhenkgKFJhbmRvbS5TdGF0ZS5tYWtlIFt8fF0pXG5cbiAgbGV0IGNob29zZSBwcyA9XG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZ1xuICAgICAgICBcIkx3dC5jaG9vc2UgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIG1hdGNoIGNvdW50X3Jlc29sdmVkX3Byb21pc2VzX2luIHBzIHdpdGhcbiAgICB8IE9rIDAgLT5cbiAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgbGV0IGNhbGxiYWNrIHJlc3VsdCA9XG4gICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICBsZXQgcCA9IHVuZGVybHlpbmcgcCBpblxuICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgaWdub3JlIHBcbiAgICAgIGluXG4gICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgdG9fcHVibGljX3Byb21pc2UgcFxuXG4gICAgfCBPayAxIC0+XG4gICAgICBudGhfcmVzb2x2ZWQgcHMgMFxuXG4gICAgfCBPayBuIC0+XG4gICAgICBudGhfcmVzb2x2ZWQgcHMgKFJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgcHJuZykgbilcblxuICAgIHwgRXJyb3IgKG4sIHBzKSAtPlxuICAgICAgbnRoX3Jlc29sdmVkIHBzIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgbGV0IHBpY2sgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmcgXCJMd3QucGljayBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbWF0Y2ggY291bnRfcmVzb2x2ZWRfcHJvbWlzZXNfaW4gcHMgd2l0aFxuICAgIHwgT2sgMCAtPlxuICAgICAgbGV0IHAgPSBuZXdfcGVuZGluZyB+aG93X3RvX2NhbmNlbDoocHJvcGFnYXRlX2NhbmNlbF90b19zZXZlcmFsIHBzKSBpblxuXG4gICAgICBsZXQgY2FsbGJhY2sgcmVzdWx0ID1cbiAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgIGxldCBTdGF0ZV9tYXlfaGF2ZV9jaGFuZ2VkIHAgPVxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgICBpZ25vcmUgcFxuICAgICAgaW5cbiAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICB8IE9rIDEgLT5cbiAgICAgIG50aF9yZXNvbHZlZF9hbmRfY2FuY2VsX3BlbmRpbmcgcHMgMFxuXG4gICAgfCBPayBuIC0+XG4gICAgICBudGhfcmVzb2x2ZWRfYW5kX2NhbmNlbF9wZW5kaW5nIHBzXG4gICAgICAgIChSYW5kb20uU3RhdGUuaW50IChMYXp5LmZvcmNlIHBybmcpIG4pXG5cbiAgICB8IEVycm9yIChuLCBxcykgLT5cbiAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICBudGhfcmVzb2x2ZWQgcXMgKFJhbmRvbS5TdGF0ZS5pbnQgKExhenkuZm9yY2UgcHJuZykgbilcblxuXG5cbiAgKCogSWYgW25jaG9vc2UgcHNdIG9yIFtucGljayBwc10gZm91bmQgYWxsIHByb21pc2VzIGluIFtwc10gcGVuZGluZywgdGhlXG4gICAgIGNhbGxiYWNrIGFkZGVkIHRvIGVhY2ggcHJvbWlzZSBpbiBbcHNdIGV2ZW50dWFsbHkgY2FsbHMgdGhpcyBmdW5jdGlvbi4gVGhlXG4gICAgIGZ1bmN0aW9uIGNvbGxlY3RzIHByb21pc2VzIGluIFtwc10gdGhhdCBoYXZlIGJlY29tZSBmdWxmaWxsZWQsIG9yIGZpbmRzIG9uZVxuICAgICBwcm9taXNlIGluIFtwc10gdGhhdCBoYXMgYmVlbiByZWplY3RlZC4gSXQgdGhlbiByZXR1cm5zIHRoZSBkZXNpcmVkIHN0YXRlXG4gICAgIG9mIHRoZSBmaW5hbCBwcm9taXNlOiBlaXRoZXIgdGhlIGxpc3Qgb2YgcmVzdWx0cyBjb2xsZWN0ZWQsIG9yIHRoZVxuICAgICBleGNlcHRpb24gZm91bmQuICopXG4gIGxldCByZWMgY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZ1xuICAgICAgKHJlc3VsdHMgOiAnYSBsaXN0KVxuICAgICAgKHBzIDogJ2EgdCBsaXN0KSA6XG4gICAgICAgICgnYSBsaXN0IHJlc29sdmVkX3N0YXRlKSA9XG5cbiAgICBtYXRjaCBwcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgRnVsZmlsbGVkIChMaXN0LnJldiByZXN1bHRzKVxuXG4gICAgfCBwOjpwcyAtPlxuICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cblxuICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nICh2OjpyZXN1bHRzKSBwc1xuXG4gICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgIHJlc3VsdFxuXG4gICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICBjb2xsZWN0X2Z1bGZpbGxlZF9wcm9taXNlc19hZnRlcl9wZW5kaW5nIHJlc3VsdHMgcHNcblxuICBsZXQgbmNob29zZSBwcyA9XG4gICAgKCogSWYgYXQgbGVhc3Qgb25lIHByb21pc2UgaW4gW3BzXSBpcyBmb3VuZCBmdWxmaWxsZWQsIHRoaXMgZnVuY3Rpb24gaXNcbiAgICAgICBjYWxsZWQgdG8gZmluZCBhbGwgc3VjaCBwcm9taXNlcy4gKilcbiAgICBpZiBwcyA9IFtdIHRoZW5cbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIFwiTHd0Lm5jaG9vc2UgW10gd291bGQgcmV0dXJuIGEgcHJvbWlzZSB0aGF0IGlzIHBlbmRpbmcgZm9yZXZlclwiO1xuICAgIGxldCByZWMgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkIGFjYyBwcyA9XG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG4gICAgICB8IHA6OnBzIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCAodjo6YWNjKSBwc1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSB7c3RhdGUgPSByZXN1bHR9XG5cbiAgICAgICAgfCBQZW5kaW5nIF8gLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzXG4gICAgaW5cblxuICAgICgqIExvb2tzIGZvciBhbHJlYWR5LXJlc29sdmVkIHByb21pc2VzIGluIFtwc10uIElmIG5vbmUgYXJlIGZ1bGZpbGxlZCBvclxuICAgICAgIHJlamVjdGVkLCBhZGRzIGEgY2FsbGJhY2sgdG8gYWxsIHByb21pc2VzIGluIFtwc10gKGFsbCBvZiB3aGljaCBhcmVcbiAgICAgICBwZW5kaW5nKS4gKilcbiAgICBsZXQgcmVjIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBsZXQgcCA9IG5ld19wZW5kaW5nIH5ob3dfdG9fY2FuY2VsOihwcm9wYWdhdGVfY2FuY2VsX3RvX3NldmVyYWwgcHMpIGluXG5cbiAgICAgICAgbGV0IGNhbGxiYWNrIF9yZXN1bHQgPVxuICAgICAgICAgIGxldCBTdGF0ZV9tYXlfbm93X2JlX3BlbmRpbmdfcHJveHkgcCA9IG1heV9ub3dfYmVfcHJveHkgcCBpblxuICAgICAgICAgIGxldCBwID0gdW5kZXJseWluZyBwIGluXG4gICAgICAgICAgbGV0IHJlc3VsdCA9IGNvbGxlY3RfZnVsZmlsbGVkX3Byb21pc2VzX2FmdGVyX3BlbmRpbmcgW10gcHMgaW5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID1cbiAgICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSBwIHJlc3VsdCBpblxuICAgICAgICAgIGlnbm9yZSBwXG4gICAgICAgIGluXG4gICAgICAgIGFkZF9leHBsaWNpdGx5X3JlbW92YWJsZV9jYWxsYmFja190b19lYWNoX29mIHBzIGNhbGxiYWNrO1xuXG4gICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHBcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgW3ZdIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHBzXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMgaW5cbiAgICBwXG5cbiAgKCogU2VlIFtuY2hvb3NlXS4gVGhpcyBmdW5jdGlvbiBkaWZmZXJzIG9ubHkgaW4gaGF2aW5nIGFkZGl0aW9uYWwgY2FsbHMgdG9cbiAgICAgW2NhbmNlbF0uICopXG4gIGxldCBucGljayBwcyA9XG4gICAgaWYgcHMgPSBbXSB0aGVuXG4gICAgICBpbnZhbGlkX2FyZyBcIkx3dC5ucGljayBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbGV0IHJlYyBjb2xsZWN0X2FscmVhZHlfZnVsZmlsbGVkX3Byb21pc2VzX29yX2ZpbmRfcmVqZWN0ZWQgYWNjIHBzJyA9XG4gICAgICBtYXRjaCBwcycgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICByZXR1cm4gKExpc3QucmV2IGFjYylcblxuICAgICAgfCBwOjpwcycgLT5cbiAgICAgICAgbGV0IEludGVybmFsIHAgPSB0b19pbnRlcm5hbF9wcm9taXNlIHAgaW5cbiAgICAgICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgICAgICB8IEZ1bGZpbGxlZCB2IC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X2Z1bGZpbGxlZF9wcm9taXNlc19vcl9maW5kX3JlamVjdGVkICh2OjphY2MpIHBzJ1xuXG4gICAgICAgIHwgUmVqZWN0ZWQgXyBhcyByZXN1bHQgLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgY2FuY2VsIHBzO1xuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBhY2MgcHMnXG4gICAgaW5cblxuICAgIGxldCByZWMgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMnID1cbiAgICAgIG1hdGNoIHBzJyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgICBsZXQgY2FsbGJhY2sgX3Jlc3VsdCA9XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgICBsZXQgcmVzdWx0ID0gY29sbGVjdF9mdWxmaWxsZWRfcHJvbWlzZXNfYWZ0ZXJfcGVuZGluZyBbXSBwcyBpblxuICAgICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9oYXZlX2NoYW5nZWQgcCA9XG4gICAgICAgICAgICByZXNvbHZlIH5hbGxvd19kZWZlcnJpbmc6ZmFsc2UgcCByZXN1bHQgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9mdWxmaWxsZWRfcHJvbWlzZXNfb3JfZmluZF9yZWplY3RlZCBbdl0gcHMnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIExpc3QuaXRlciBjYW5jZWwgcHM7XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMnXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcHMgaW5cbiAgICBwXG5cblxuXG4gICgqIFNhbWUgZ2VuZXJhbCBwYXR0ZXJuIGFzIFtucGlja10gYW5kIFtuY2hvb3NlXS4gKilcbiAgbGV0IG5jaG9vc2Vfc3BsaXQgcHMgPVxuICAgIGlmIHBzID0gW10gdGhlblxuICAgICAgaW52YWxpZF9hcmdcbiAgICAgICAgXCJMd3QubmNob29zZV9zcGxpdCBbXSB3b3VsZCByZXR1cm4gYSBwcm9taXNlIHRoYXQgaXMgcGVuZGluZyBmb3JldmVyXCI7XG4gICAgbGV0IHJlYyBmaW5pc2hcbiAgICAgICAgKHRvX3Jlc29sdmUgOiAoJ2EgbGlzdCAqICdhIHQgbGlzdCwgdW5kZXJseWluZywgcGVuZGluZykgcHJvbWlzZSlcbiAgICAgICAgKGZ1bGZpbGxlZCA6ICdhIGxpc3QpXG4gICAgICAgIChwZW5kaW5nIDogJ2EgdCBsaXN0KVxuICAgICAgICAocHMgOiAnYSB0IGxpc3QpXG4gICAgICAgICAgOiAoJ2EgbGlzdCAqICdhIHQgbGlzdCwgdW5kZXJseWluZywgcmVzb2x2ZWQpIHN0YXRlX2NoYW5nZWQgPVxuXG4gICAgICBtYXRjaCBwcyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSB0b19yZXNvbHZlXG4gICAgICAgICAgKEZ1bGZpbGxlZCAoTGlzdC5yZXYgZnVsZmlsbGVkLCBMaXN0LnJldiBwZW5kaW5nKSlcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBmaW5pc2ggdG9fcmVzb2x2ZSAodjo6ZnVsZmlsbGVkKSBwZW5kaW5nIHBzXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHJlc29sdmUgfmFsbG93X2RlZmVycmluZzpmYWxzZSB0b19yZXNvbHZlIHJlc3VsdFxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgZmluaXNoIHRvX3Jlc29sdmUgZnVsZmlsbGVkIChwOjpwZW5kaW5nKSBwc1xuICAgIGluXG5cbiAgICBsZXQgcmVjIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyByZXN1bHRzIHBlbmRpbmcgcHMgPVxuICAgICAgbWF0Y2ggcHMgd2l0aFxuICAgICAgfCBbXSAtPlxuICAgICAgICAoKiBNYWludGFpbmVyJ3Mgbm90ZTogc2hvdWxkIHRoZSBwZW5kaW5nIHByb21pc2UgbGlzdCBhbHNvIGJlXG4gICAgICAgICAgIHJldmVyc2VkPyBJdCBpcyByZXZlcnNlZCBpbiBmaW5pc2guICopXG4gICAgICAgIHJldHVybiAoTGlzdC5yZXYgcmVzdWx0cywgcGVuZGluZylcblxuICAgICAgfCBwOjpwcyAtPlxuICAgICAgICBsZXQgSW50ZXJuYWwgcF9pbnRlcm5hbCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgICAgICBtYXRjaCAodW5kZXJseWluZyBwX2ludGVybmFsKS5zdGF0ZSB3aXRoXG4gICAgICAgIHwgRnVsZmlsbGVkIHYgLT5cbiAgICAgICAgICBjb2xsZWN0X2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgKHY6OnJlc3VsdHMpIHBlbmRpbmcgcHNcblxuICAgICAgICB8IFJlamVjdGVkIF8gYXMgcmVzdWx0IC0+XG4gICAgICAgICAgdG9fcHVibGljX3Byb21pc2Uge3N0YXRlID0gcmVzdWx0fVxuXG4gICAgICAgIHwgUGVuZGluZyBfIC0+XG4gICAgICAgICAgY29sbGVjdF9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIHJlc3VsdHMgKHA6OnBlbmRpbmcpIHBzXG4gICAgaW5cblxuICAgIGxldCByZWMgY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgcGVuZGluZ19hY2MgcHMnID1cbiAgICAgIG1hdGNoIHBzJyB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCBwID0gbmV3X3BlbmRpbmcgfmhvd190b19jYW5jZWw6KHByb3BhZ2F0ZV9jYW5jZWxfdG9fc2V2ZXJhbCBwcykgaW5cblxuICAgICAgICBsZXQgY2FsbGJhY2sgX3Jlc3VsdCA9XG4gICAgICAgICAgbGV0IFN0YXRlX21heV9ub3dfYmVfcGVuZGluZ19wcm94eSBwID0gbWF5X25vd19iZV9wcm94eSBwIGluXG4gICAgICAgICAgbGV0IHAgPSB1bmRlcmx5aW5nIHAgaW5cbiAgICAgICAgICBsZXQgU3RhdGVfbWF5X2hhdmVfY2hhbmdlZCBwID0gZmluaXNoIHAgW10gW10gcHMgaW5cbiAgICAgICAgICBpZ25vcmUgcFxuICAgICAgICBpblxuICAgICAgICBhZGRfZXhwbGljaXRseV9yZW1vdmFibGVfY2FsbGJhY2tfdG9fZWFjaF9vZiBwcyBjYWxsYmFjaztcblxuICAgICAgICB0b19wdWJsaWNfcHJvbWlzZSBwXG5cbiAgICAgIHwgcDo6cHMnIC0+XG4gICAgICAgIGxldCBJbnRlcm5hbCBwX2ludGVybmFsID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgICAgIG1hdGNoICh1bmRlcmx5aW5nIHBfaW50ZXJuYWwpLnN0YXRlIHdpdGhcbiAgICAgICAgfCBGdWxmaWxsZWQgdiAtPlxuICAgICAgICAgIGNvbGxlY3RfYWxyZWFkeV9yZXNvbHZlZF9wcm9taXNlcyBbdl0gcGVuZGluZ19hY2MgcHMnXG5cbiAgICAgICAgfCBSZWplY3RlZCBfIGFzIHJlc3VsdCAtPlxuICAgICAgICAgIHRvX3B1YmxpY19wcm9taXNlIHtzdGF0ZSA9IHJlc3VsdH1cblxuICAgICAgICB8IFBlbmRpbmcgXyAtPlxuICAgICAgICAgIGNoZWNrX2Zvcl9hbHJlYWR5X3Jlc29sdmVkX3Byb21pc2VzIChwOjpwZW5kaW5nX2FjYykgcHMnXG4gICAgaW5cblxuICAgIGxldCBwID0gY2hlY2tfZm9yX2FscmVhZHlfcmVzb2x2ZWRfcHJvbWlzZXMgW10gcHMgaW5cbiAgICBwXG5lbmRcbmluY2x1ZGUgQ29uY3VycmVudF9jb21wb3NpdGlvblxuXG5cblxubW9kdWxlIE1pc2NlbGxhbmVvdXMgOlxuc2lnXG4gICgqIFByb21pc2Ugc3RhdGUgcXVlcnkgKilcbiAgdHlwZSAnYSBzdGF0ZSA9XG4gICAgfCBSZXR1cm4gb2YgJ2FcbiAgICB8IEZhaWwgb2YgZXhuXG4gICAgfCBTbGVlcFxuXG4gIHZhbCBzdGF0ZSA6ICdhIHQgLT4gJ2Egc3RhdGVcbiAgdmFsIGlzX3NsZWVwaW5nIDogJ2EgdCAtPiBib29sXG4gIHZhbCBkZWJ1Z19zdGF0ZV9pcyA6ICdhIHN0YXRlIC0+ICdhIHQgLT4gYm9vbCB0XG5cbiAgKCogRnVuY3Rpb24gbGlmdGVycyAqKVxuICB2YWwgYXBwbHkgOiAoJ2EgLT4gJ2IgdCkgLT4gJ2EgLT4gJ2IgdFxuXG4gIHZhbCB3cmFwIDpcbiAgICAodW5pdCAtPiAnYikgLT5cbiAgICAnYiB0XG4gIHZhbCB3cmFwMSA6XG4gICAgKCdhMSAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdiIHQpXG4gIHZhbCB3cmFwMiA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2IgdClcbiAgdmFsIHdyYXAzIDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdiIHQpXG4gIHZhbCB3cmFwNCA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdiIHQpXG4gIHZhbCB3cmFwNSA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2IgdClcbiAgdmFsIHdyYXA2IDpcbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2IpIC0+XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdiIHQpXG4gIHZhbCB3cmFwNyA6XG4gICAgKCdhMSAtPiAnYTIgLT4gJ2EzIC0+ICdhNCAtPiAnYTUgLT4gJ2E2IC0+ICdhNyAtPiAnYikgLT5cbiAgICAoJ2ExIC0+ICdhMiAtPiAnYTMgLT4gJ2E0IC0+ICdhNSAtPiAnYTYgLT4gJ2E3IC0+ICdiIHQpXG5cbiAgKCogUGF1c2VkIHByb21pc2VzICopXG4gIHZhbCBwYXVzZSA6IHVuaXQgLT4gdW5pdCB0XG4gIHZhbCB3YWtldXBfcGF1c2VkIDogdW5pdCAtPiB1bml0XG4gIHZhbCBwYXVzZWRfY291bnQgOiB1bml0IC0+IGludFxuICB2YWwgcmVnaXN0ZXJfcGF1c2Vfbm90aWZpZXIgOiAoaW50IC0+IHVuaXQpIC0+IHVuaXRcbiAgdmFsIGFiYW5kb25fcGF1c2VkIDogdW5pdCAtPiB1bml0XG5cbiAgKCogSW50ZXJuYWwgaW50ZXJmYWNlIGZvciBvdGhlciBtb2R1bGVzIGluIEx3dCAqKVxuICB2YWwgcG9sbCA6ICdhIHQgLT4gJ2Egb3B0aW9uXG5lbmQgPVxuc3RydWN0XG4gIHR5cGUgJ2Egc3RhdGUgPVxuICAgIHwgUmV0dXJuIG9mICdhXG4gICAgfCBGYWlsIG9mIGV4blxuICAgIHwgU2xlZXBcblxuICBleHRlcm5hbCByZXJhaXNlIDogZXhuIC0+ICdhID0gXCIlcmVyYWlzZVwiXG5cbiAgbGV0IHN0YXRlIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgRnVsZmlsbGVkIHYgLT4gUmV0dXJuIHZcbiAgICB8IFJlamVjdGVkIGV4biAtPiBGYWlsIGV4blxuICAgIHwgUGVuZGluZyBfIC0+IFNsZWVwXG5cbiAgbGV0IGRlYnVnX3N0YXRlX2lzIGV4cGVjdGVkX3N0YXRlIHAgPVxuICAgIHJldHVybiAoc3RhdGUgcCA9IGV4cGVjdGVkX3N0YXRlKVxuXG4gIGxldCBpc19zbGVlcGluZyBwID1cbiAgICBsZXQgSW50ZXJuYWwgcCA9IHRvX2ludGVybmFsX3Byb21pc2UgcCBpblxuICAgIG1hdGNoICh1bmRlcmx5aW5nIHApLnN0YXRlIHdpdGhcbiAgICB8IEZ1bGZpbGxlZCBfIC0+IGZhbHNlXG4gICAgfCBSZWplY3RlZCBfIC0+IGZhbHNlXG4gICAgfCBQZW5kaW5nIF8gLT4gdHJ1ZVxuXG4gIGxldCBwb2xsIHAgPVxuICAgIGxldCBJbnRlcm5hbCBwID0gdG9faW50ZXJuYWxfcHJvbWlzZSBwIGluXG4gICAgbWF0Y2ggKHVuZGVybHlpbmcgcCkuc3RhdGUgd2l0aFxuICAgIHwgUmVqZWN0ZWQgZSAtPiByZXJhaXNlIGVcbiAgICB8IEZ1bGZpbGxlZCB2IC0+IFNvbWUgdlxuICAgIHwgUGVuZGluZyBfIC0+IE5vbmVcblxuXG5cbiAgbGV0IGFwcGx5IGYgeCA9XG4gICAgdHJ5IGYgeCB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwIGYgPVxuICAgIHRyeSByZXR1cm4gKGYgKCkpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDEgZiB4MSA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSlcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwMiBmIHgxIHgyID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyKVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXAzIGYgeDEgeDIgeDMgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDQgZiB4MSB4MiB4MyB4NCA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NClcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG4gIGxldCB3cmFwNSBmIHgxIHgyIHgzIHg0IHg1ID1cbiAgICB0cnkgcmV0dXJuIChmIHgxIHgyIHgzIHg0IHg1KVxuICAgIHdpdGggZXhuIHdoZW4gRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IGZhaWwgZXhuXG5cbiAgbGV0IHdyYXA2IGYgeDEgeDIgeDMgeDQgeDUgeDYgPVxuICAgIHRyeSByZXR1cm4gKGYgeDEgeDIgeDMgeDQgeDUgeDYpXG4gICAgd2l0aCBleG4gd2hlbiBFeGNlcHRpb25fZmlsdGVyLnJ1biBleG4gLT4gZmFpbCBleG5cblxuICBsZXQgd3JhcDcgZiB4MSB4MiB4MyB4NCB4NSB4NiB4NyA9XG4gICAgdHJ5IHJldHVybiAoZiB4MSB4MiB4MyB4NCB4NSB4NiB4NylcbiAgICB3aXRoIGV4biB3aGVuIEV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4biAtPiBmYWlsIGV4blxuXG5cblxuICBsZXQgcGF1c2VfaG9vayA9IHJlZiBpZ25vcmVcblxuICBsZXQgcGF1c2VkID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKVxuICBsZXQgcGF1c2VkX2NvdW50ID0gcmVmIDBcblxuICBsZXQgcGF1c2UgKCkgPVxuICAgIGxldCBwID0gYWRkX3Rhc2tfciBwYXVzZWQgaW5cbiAgICBpbmNyIHBhdXNlZF9jb3VudDtcbiAgICAhcGF1c2VfaG9vayAhcGF1c2VkX2NvdW50O1xuICAgIHBcblxuICBsZXQgd2FrZXVwX3BhdXNlZCAoKSA9XG4gICAgaWYgTHd0X3NlcXVlbmNlLmlzX2VtcHR5IHBhdXNlZCB0aGVuXG4gICAgICBwYXVzZWRfY291bnQgOj0gMFxuICAgIGVsc2UgYmVnaW5cbiAgICAgIGxldCB0bXAgPSBMd3Rfc2VxdWVuY2UuY3JlYXRlICgpIGluXG4gICAgICBMd3Rfc2VxdWVuY2UudHJhbnNmZXJfciBwYXVzZWQgdG1wO1xuICAgICAgcGF1c2VkX2NvdW50IDo9IDA7XG4gICAgICBMd3Rfc2VxdWVuY2UuaXRlcl9sIChmdW4gciAtPiB3YWtldXAgciAoKSkgdG1wXG4gICAgZW5kXG5cbiAgbGV0IHJlZ2lzdGVyX3BhdXNlX25vdGlmaWVyIGYgPSBwYXVzZV9ob29rIDo9IGZcblxuICBsZXQgYWJhbmRvbl9wYXVzZWQgKCkgPVxuICAgIEx3dF9zZXF1ZW5jZS5jbGVhciBwYXVzZWQ7XG4gICAgcGF1c2VkX2NvdW50IDo9IDBcblxuICBsZXQgcGF1c2VkX2NvdW50ICgpID0gIXBhdXNlZF9jb3VudFxuZW5kXG5pbmNsdWRlIE1pc2NlbGxhbmVvdXNcblxubW9kdWxlIExldF9zeW50YXggPVxuc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID1cbiAgc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgdCB+ZiA9IG1hcCBmIHRcbiAgICBsZXQgYmluZCB0IH5mID0gYmluZCB0IGZcbiAgICBsZXQgYm90aCA9IGJvdGhcblxuICAgIG1vZHVsZSBPcGVuX29uX3JocyA9XG4gICAgc3RydWN0XG4gICAgZW5kXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSBJbmZpeCA9XG5zdHJ1Y3RcbiAgbGV0ICg+Pj0pID0gYmluZFxuICBsZXQgKD08PCkgZiBwID0gYmluZCBwIGZcbiAgbGV0ICg+fD0pIHAgZiA9IG1hcCBmIHBcbiAgbGV0ICg9fDwpID0gbWFwXG4gIGxldCAoPCY+KSBwIHAnID0gam9pbiBbcDsgcCddXG4gIGxldCAoPD8+KSBwIHAnID0gY2hvb3NlIFtwOyBwJ11cblxuICBpbmNsdWRlIExldF9zeW50YXhcbmVuZFxuaW5jbHVkZSAoIEluZml4IDogbW9kdWxlIHR5cGUgb2YgSW5maXggd2l0aCBtb2R1bGUgTGV0X3N5bnRheCA6PSBMZXRfc3ludGF4LkxldF9zeW50YXggKVxuXG5tb2R1bGUgU3ludGF4ID1cbnN0cnVjdFxuICBsZXQgKGxldCopID0gYmluZFxuICBsZXQgKGFuZCopID0gYm90aFxuXG4gIGxldCAobGV0KykgeCBmID0gbWFwIGYgeFxuICBsZXQgKGFuZCspID0gYm90aFxuZW5kXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbmV4Y2VwdGlvbiBPZmZcblxudHlwZSBvbl9zd2l0Y2ggPSB7XG4gIG11dGFibGUgaG9va3MgOiAodW5pdCAtPiB1bml0IEx3dC50KSBsaXN0O1xufVxuXG50eXBlIHN0YXRlID1cbiAgfCBTdF9vbiBvZiBvbl9zd2l0Y2hcbiAgfCBTdF9vZmZcblxudHlwZSB0ID0geyBtdXRhYmxlIHN0YXRlIDogc3RhdGUgfVxuXG5sZXQgY3JlYXRlICgpID0geyBzdGF0ZSA9IFN0X29uIHsgaG9va3MgPSBbXSB9IH1cblxubGV0IGlzX29uIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaC5zdGF0ZSB3aXRoXG4gIHwgU3Rfb24gXyAtPiB0cnVlXG4gIHwgU3Rfb2ZmIC0+IGZhbHNlXG5cbmxldCBjaGVjayA9IGZ1bmN0aW9uXG4gIHwgU29tZXsgc3RhdGUgPSBTdF9vZmYgfSAtPiByYWlzZSBPZmZcbiAgfCBTb21lIHtzdGF0ZSA9IFN0X29uIF99IHwgTm9uZSAtPiAoKVxuXG5sZXQgYWRkX2hvb2sgc3dpdGNoIGhvb2sgPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29uIG9zIH0gLT5cbiAgICBvcy5ob29rcyA8LSBob29rIDo6IG9zLmhvb2tzXG4gIHwgU29tZSB7IHN0YXRlID0gU3Rfb2ZmIH0gLT5cbiAgICByYWlzZSBPZmZcbiAgfCBOb25lIC0+XG4gICAgKClcblxubGV0IGFkZF9ob29rX29yX2V4ZWMgc3dpdGNoIGhvb2sgPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29uIG9zIH0gLT5cbiAgICBvcy5ob29rcyA8LSBob29rIDo6IG9zLmhvb2tzO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IFNvbWUgeyBzdGF0ZSA9IFN0X29mZiB9IC0+XG4gICAgaG9vayAoKVxuICB8IE5vbmUgLT5cbiAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IHR1cm5fb2ZmIHN3aXRjaCA9XG4gIG1hdGNoIHN3aXRjaC5zdGF0ZSB3aXRoXG4gIHwgU3Rfb24geyBob29rcyA9IGhvb2tzIH0gLT5cbiAgICBzd2l0Y2guc3RhdGUgPC0gU3Rfb2ZmO1xuICAgIEx3dC5qb2luIChMaXN0Lm1hcCAoZnVuIGhvb2sgLT4gTHd0LmFwcGx5IGhvb2sgKCkpIGhvb2tzKVxuICB8IFN0X29mZiAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgd2l0aF9zd2l0Y2ggZm4gPVxuICBsZXQgc3dpdGNoID0gY3JlYXRlICgpIGluXG4gIEx3dC5maW5hbGl6ZVxuICAgIChmdW4gKCkgLT4gZm4gc3dpdGNoKVxuICAgIChmdW4gKCkgLT4gdHVybl9vZmYgc3dpdGNoKVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG5vcGVuIEx3dC5TeW50YXhcbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgKydhIG5vZGUgPSBOaWwgfCBDb25zIG9mICdhICogJ2EgdFxuXG5hbmQgJ2EgdCA9IHVuaXQgLT4gJ2Egbm9kZSBMd3QudFxuXG5sZXQgcmV0dXJuX25pbCA9IEx3dC5yZXR1cm4gTmlsXG5cbmxldCBlbXB0eSA6ICdhIHQgPSBmdW4gKCkgLT4gcmV0dXJuX25pbFxuXG5sZXQgcmV0dXJuICh4IDogJ2EpIDogJ2EgdCA9IGZ1biAoKSAtPiBMd3QucmV0dXJuIChDb25zICh4LCBlbXB0eSkpXG5cbmxldCByZXR1cm5fbHd0ICh4IDogJ2EgTHd0LnQpIDogJ2EgdCA9IGZ1biAoKSAtPlxuICAgbGV0KyB4ID0geCBpblxuICAgQ29ucyAoeCwgZW1wdHkpXG5cbmxldCBjb25zIHggdCAoKSA9IEx3dC5yZXR1cm4gKENvbnMgKHgsIHQpKVxuXG5sZXQgY29uc19sd3QgeCB0ICgpID1cbiAgIGxldCsgeCA9IHggaW5cbiAgIENvbnMgKHgsIHQpXG5cbigqIEEgbm90ZSBvbiByZWN1cnNpbmcgdGhyb3VnaCB0aGUgc2VxczpcbiAgIFdoZW4gdHJhdmVyc2luZyBhIHNlcSwgdGhlIGZpcnN0IHRpbWUgd2UgZXZhbHVhdGUgYSBzdXNwZW5kZWQgbm9kZSB3ZSBhcmVcbiAgIG9uIHRoZSBsZWZ0IG9mIHRoZSBmaXJzdCBiaW5kICg+Pj0pLiBJbiB0aGF0IGNhc2UsIHdlIHVzZSBhcHBseSB0byBjYXB0dXJlXG4gICBleGNlcHRpb25zIGludG8gcHJvbWlzZSByZWplY3Rpb24uXG5cbiAgIFRoaXMgaXMgb25seSBuZWVkZWQgb24gdGhlIGZpcnN0IGl0ZXJhdGlvbiBiZWNhdXNlIHdlIGFyZSB3aXRoaW4gYSBjYWxsYmFja1xuICAgcGFzc2VkIHRvIEx3dCBvbiB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGEgYmluZCBhZnRlciB0aGF0LlxuXG4gICBUaHJvdWdob3V0IHRoaXMgZmlsZSB3ZSB1c2UgdGhlIHNhbWUgY29kZSBwYXR0ZXJuIHRvIGFjaGlldmUgdGhpczogd2VcbiAgIHNoYWRvdyB0aGUgcmVjdXJzaXZlIHRyYXZlcnNhbCBmdW5jdGlvbiB3aXRoIGFuIGlkZW50aWNhbC1idXQtZm9yLXRoZS1hcHBseVxuICAgbm9uLXJlY3Vyc2l2ZSBjb3B5LiAqKVxuXG5sZXQgcmVjIGFwcGVuZCBzZXExIHNlcTIgKCkgPVxuICBzZXExICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBzZXEyICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMikpXG5sZXQgYXBwZW5kIHNlcTEgc2VxMiAoKSA9XG4gIEx3dC5hcHBseSBzZXExICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiBzZXEyICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgYXBwZW5kIG5leHQgc2VxMikpXG5cbmxldCByZWMgbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID58PSBmdW5jdGlvblxuICB8IE5pbCAtPiBOaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcCBmIG5leHQpXG5sZXQgbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+fD0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBDb25zICh4LCBtYXAgZiBuZXh0KVxuXG5sZXQgcmVjIG1hcF9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCsgeCA9IGYgeCBpblxuICAgICAgQ29ucyAoeCwgbWFwX3MgZiBuZXh0KVxubGV0IG1hcF9zIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQrIHggPSBmIHggaW5cbiAgICAgIENvbnMgKHgsIG1hcF9zIGYgbmV4dClcblxubGV0IHJlYyBmaWx0ZXJfbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXAgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwIGYgbmV4dCkgKSlcbmxldCBmaWx0ZXJfbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+IChcbiAgICAgIGxldCB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwIGYgbmV4dCAoKVxuICAgICAgfCBTb21lIHkgLT4gTHd0LnJldHVybiAoQ29ucyAoeSwgZmlsdGVyX21hcCBmIG5leHQpICkpXG5cbmxldCByZWMgZmlsdGVyX21hcF9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gKFxuICAgICAgbGV0KiB4ID0gZiB4IGluXG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmaWx0ZXJfbWFwX3MgZiBuZXh0ICgpXG4gICAgICB8IFNvbWUgeSAtPiBMd3QucmV0dXJuIChDb25zICh5LCBmaWx0ZXJfbWFwX3MgZiBuZXh0KSApKVxubGV0IGZpbHRlcl9tYXBfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPiAoXG4gICAgICBsZXQqIHggPSBmIHggaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBOb25lIC0+IGZpbHRlcl9tYXBfcyBmIG5leHQgKClcbiAgICAgIHwgU29tZSB5IC0+IEx3dC5yZXR1cm4gKENvbnMgKHksIGZpbHRlcl9tYXBfcyBmIG5leHQpICkpXG5cbmxldCByZWMgZmlsdGVyIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCBvayA9IGYgeCBpblxuICAgICAgaWYgb2sgdGhlbiBMd3QucmV0dXJuIChDb25zICh4LCBmaWx0ZXIgZiBuZXh0KSkgZWxzZSBmaWx0ZXIgZiBuZXh0ICgpXG5sZXQgZmlsdGVyIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBsZXQgb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyIGYgbmV4dCkpIGVsc2UgZmlsdGVyIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGZpbHRlcl9zIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGxldCogb2sgPSBmIHggaW5cbiAgICAgIGlmIG9rIHRoZW4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmlsdGVyX3MgZiBuZXh0KSkgZWxzZSBmaWx0ZXJfcyBmIG5leHQgKClcbmxldCBmaWx0ZXJfcyBmIHNlcSAoKSA9XG4gIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gIHwgTmlsIC0+IHJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgbGV0KiBvayA9IGYgeCBpblxuICAgICAgaWYgb2sgdGhlbiBMd3QucmV0dXJuIChDb25zICh4LCBmaWx0ZXJfcyBmIG5leHQpKSBlbHNlIGZpbHRlcl9zIGYgbmV4dCAoKVxuXG5sZXQgcmVjIGZsYXRfbWFwIGYgc2VxICgpID1cbiAgc2VxICgpID4+PSBmdW5jdGlvblxuICB8IE5pbCAtPiByZXR1cm5fbmlsXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgIGZsYXRfbWFwX2FwcCBmIChmIHgpIG5leHQgKClcblxuKCogdGhpcyBpcyBbYXBwZW5kIHNlcSAoZmxhdF9tYXAgZiB0YWlsKV0gKilcbmFuZCBmbGF0X21hcF9hcHAgZiBzZXEgdGFpbCAoKSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gZmxhdF9tYXAgZiB0YWlsICgpXG4gIHwgQ29ucyAoeCwgbmV4dCkgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgZmxhdF9tYXBfYXBwIGYgbmV4dCB0YWlsKSlcblxubGV0IGZsYXRfbWFwIGYgc2VxICgpID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gcmV0dXJuX25pbFxuICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICBmbGF0X21hcF9hcHAgZiAoZiB4KSBuZXh0ICgpXG5cbmxldCBmb2xkX2xlZnQgZiBhY2Mgc2VxID1cbiAgbGV0IHJlYyBhdXggZiBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybiBhY2NcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGxldCBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGxldCBhdXggZiBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgYWNjID0gZiBhY2MgeCBpblxuICAgICAgICBhdXggZiBhY2MgbmV4dFxuICBpblxuICBhdXggZiBhY2Mgc2VxXG5cbmxldCBmb2xkX2xlZnRfcyBmIGFjYyBzZXEgPVxuICBsZXQgcmVjIGF1eCBmIGFjYyBzZXEgPVxuICAgIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuIGFjY1xuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiBhY2MgPSBmIGFjYyB4IGluXG4gICAgICAgIGF1eCBmIGFjYyBuZXh0XG4gIGluXG4gIGxldCBhdXggZiBhY2Mgc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQqIGFjYyA9IGYgYWNjIHggaW5cbiAgICAgICAgYXV4IGYgYWNjIG5leHRcbiAgaW5cbiAgYXV4IGYgYWNjIHNlcVxuXG5sZXQgaXRlciBmIHNlcSA9XG4gIGxldCByZWMgYXV4IHNlcSA9XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgZiB4O1xuICAgICAgICBhdXggbmV4dFxuICBpblxuICBsZXQgYXV4IHNlcSA9XG4gICAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgICB8IE5pbCAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IENvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgIGYgeDtcbiAgICAgICAgYXV4IG5leHRcbiAgaW5cbiAgYXV4IHNlcVxuXG5sZXQgaXRlcl9zIGYgc2VxID1cbiAgbGV0IHJlYyBhdXggc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LnJldHVybl91bml0XG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQqICgpID0gZiB4IGluXG4gICAgICAgIGF1eCBuZXh0XG4gIGluXG4gIGxldCBhdXggc2VxID1cbiAgICBMd3QuYXBwbHkgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+IEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgQ29ucyAoeCwgbmV4dCkgLT5cbiAgICAgICAgbGV0KiAoKSA9IGYgeCBpblxuICAgICAgICBhdXggbmV4dFxuICBpblxuICBhdXggc2VxXG5cbmxldCBpdGVyX3AgZiBzZXEgPVxuICBsZXQgcmVjIGF1eCBhY2Mgc2VxID1cbiAgICBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LmpvaW4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgcCA9IGYgeCBpblxuICAgICAgICBhdXggKHA6OmFjYykgbmV4dFxuICBpblxuICBsZXQgYXV4IGFjYyBzZXEgPVxuICAgIEx3dC5hcHBseSBzZXEgKCkgPj49IGZ1bmN0aW9uXG4gICAgfCBOaWwgLT4gTHd0LmpvaW4gYWNjXG4gICAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgICAgICBsZXQgcCA9IGYgeCBpblxuICAgICAgICBhdXggKHA6OmFjYykgbmV4dFxuICBpblxuICBhdXggW10gc2VxXG5cbmxldCBpdGVyX24gPyhtYXhfY29uY3VycmVuY3kgPSAxKSBmIHNlcSA9XG4gIGJlZ2luXG4gICAgaWYgbWF4X2NvbmN1cnJlbmN5IDw9IDAgdGhlblxuICAgICAgbGV0IG1lc3NhZ2UgPVxuICAgICAgICBQcmludGYuc3ByaW50ZlxuICAgICAgICAgIFwiTHd0X3NlcS5pdGVyX246IG1heF9jb25jdXJyZW5jeSBtdXN0IGJlID4gMCwgJWQgZ2l2ZW5cIlxuICAgICAgICAgIG1heF9jb25jdXJyZW5jeVxuICAgICAgaW5cbiAgICAgIGludmFsaWRfYXJnIG1lc3NhZ2VcbiAgZW5kO1xuICBsZXQgcmVjIGxvb3AgcnVubmluZyBhdmFpbGFibGUgc2VxID1cbiAgICBiZWdpblxuICAgICAgaWYgYXZhaWxhYmxlID4gMCB0aGVuIChcbiAgICAgICAgTHd0LnJldHVybiAocnVubmluZywgYXZhaWxhYmxlKVxuICAgICAgKVxuICAgICAgZWxzZSAoXG4gICAgICAgIEx3dC5uY2hvb3NlX3NwbGl0IHJ1bm5pbmcgPj49IGZ1biAoY29tcGxldGUsIHJ1bm5pbmcpIC0+XG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSArIExpc3QubGVuZ3RoIGNvbXBsZXRlKVxuICAgICAgKVxuICAgIGVuZCA+Pj0gZnVuIChydW5uaW5nLCBhdmFpbGFibGUpIC0+XG4gICAgc2VxICgpID4+PSBmdW5jdGlvblxuICAgIHwgTmlsIC0+XG4gICAgICBMd3Quam9pbiBydW5uaW5nXG4gICAgfCBDb25zIChlbHQsIHNlcSkgLT5cbiAgICAgIGxvb3AgKGYgZWx0IDo6IHJ1bm5pbmcpIChwcmVkIGF2YWlsYWJsZSkgc2VxXG4gIGluXG4gICgqIGJlY2F1c2UgdGhlIHJlY3Vyc2lvbiBpcyBtb3JlIGNvbXBsaWNhdGVkIGhlcmUsIHdlIGFwcGx5IHRoZSBzZXEgZGlyZWN0bHkgYXRcbiAgICAgdGhlIGNhbGwtc2l0ZSBpbnN0ZWFkICopXG4gIGxvb3AgW10gbWF4X2NvbmN1cnJlbmN5IChmdW4gKCkgLT4gTHd0LmFwcGx5IHNlcSAoKSlcblxubGV0IHJlYyB1bmZvbGQgZiB1ICgpID1cbiAgbWF0Y2ggZiB1IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkIGYgdScpKVxuICB8IGV4Y2VwdGlvbiBleGMgd2hlbiBMd3QuRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhjIC0+IEx3dC5mYWlsIGV4Y1xuXG5sZXQgcmVjIHVuZm9sZF9sd3QgZiB1ICgpID1cbiAgbGV0KiB4ID0gZiB1IGluXG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gcmV0dXJuX25pbFxuICB8IFNvbWUgKHgsIHUnKSAtPiBMd3QucmV0dXJuIChDb25zICh4LCB1bmZvbGRfbHd0IGYgdScpKVxubGV0IHVuZm9sZF9sd3QgZiB1ICgpID1cbiAgbGV0KiB4ID0gTHd0LmFwcGx5IGYgdSBpblxuICBtYXRjaCB4IHdpdGhcbiAgfCBOb25lIC0+IHJldHVybl9uaWxcbiAgfCBTb21lICh4LCB1JykgLT4gTHd0LnJldHVybiAoQ29ucyAoeCwgdW5mb2xkX2x3dCBmIHUnKSlcblxubGV0IHJlYyBvZl9saXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBlbXB0eVxuICB8IGggOjogdCAtPiBjb25zIGggKG9mX2xpc3QgdClcblxubGV0IHJlYyB0b19saXN0IHNlcSA9XG4gIHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTHd0LnJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGxldCsgbCA9IHRvX2xpc3QgbmV4dCBpblxuICAgIHggOjogbFxubGV0IHRvX2xpc3Qgc2VxID1cbiAgTHd0LmFwcGx5IHNlcSAoKSA+Pj0gZnVuY3Rpb25cbiAgfCBOaWwgLT4gTHd0LnJldHVybl9uaWxcbiAgfCBDb25zICh4LCBuZXh0KSAtPlxuICAgIGxldCsgbCA9IHRvX2xpc3QgbmV4dCBpblxuICAgIHggOjogbFxuXG5sZXQgcmVjIG9mX3NlcSBzZXEgKCkgPVxuICBtYXRjaCBzZXEgKCkgd2l0aFxuICB8IFNlcS5OaWwgLT4gcmV0dXJuX25pbFxuICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgIEx3dC5yZXR1cm4gKENvbnMgKHgsIChvZl9zZXEgbmV4dCkpKVxuICB8IGV4Y2VwdGlvbiBleG4gd2hlbiBMd3QuRXhjZXB0aW9uX2ZpbHRlci5ydW4gZXhuIC0+IEx3dC5mYWlsIGV4blxuXG5sZXQgcmVjIG9mX3NlcV9sd3QgKHNlcTogJ2EgTHd0LnQgU2VxLnQpOiAnYSB0ID0gZnVuICgpIC0+XG4gICAgbWF0Y2ggc2VxICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gcmV0dXJuX25pbFxuICAgIHwgU2VxLkNvbnMgKHgsIG5leHQpIC0+XG4gICAgICAgbGV0KyB4ID0geCBpblxuICAgICAgIGxldCBuZXh0ID0gb2Zfc2VxX2x3dCBuZXh0IGluXG4gICAgICAgQ29ucyAoeCwgbmV4dClcbmxldCBvZl9zZXFfbHd0IChzZXE6ICdhIEx3dC50IFNlcS50KTogJ2EgdCA9IGZ1biAoKSAtPlxuICAgIG1hdGNoIHNlcSAoKSB3aXRoXG4gICAgfCBTZXEuTmlsIC0+IHJldHVybl9uaWxcbiAgICB8IFNlcS5Db25zICh4LCBuZXh0KSAtPlxuICAgICAgIGxldCsgeCA9IHggaW5cbiAgICAgICBsZXQgbmV4dCA9IG9mX3NlcV9sd3QgbmV4dCBpblxuICAgICAgIENvbnMgKHgsIG5leHQpXG4gICAgfCBleGNlcHRpb24gZXhjIHdoZW4gTHd0LkV4Y2VwdGlvbl9maWx0ZXIucnVuIGV4YyAtPiBMd3QuZmFpbCBleGNcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5leGNlcHRpb24gQ2xvc2VkXG5leGNlcHRpb24gRnVsbFxuZXhjZXB0aW9uIEVtcHR5XG5cbigqIEEgbm9kZSBpbiBhIHF1ZXVlIG9mIHBlbmRpbmcgZGF0YS4gKilcbnR5cGUgJ2Egbm9kZSA9IHtcbiAgbXV0YWJsZSBuZXh0IDogJ2Egbm9kZTtcbiAgKCogTmV4dCBub2RlIGluIHRoZSBxdWV1ZS4gRm9yIHRoZSBsYXN0IG5vZGUgaXQgcG9pbnRzIHRvIGl0c2VsZi4gKilcbiAgbXV0YWJsZSBkYXRhIDogJ2Egb3B0aW9uO1xuICAoKiBEYXRhIG9mIHRoaXMgbm9kZS4gRm9yIHRoZSBsYXN0IG5vZGUgaXQgaXMgYWx3YXlzIFtOb25lXS4gKilcbn1cblxuKCogTm90ZTogYSBxdWV1ZSBmb3IgYW4gZXhoYXVzdGVkIHN0cmVhbSBpcyByZXByZXNlbnRlZCBieSBhIG5vZGVcbiAgIGNvbnRhaW5pbmcgW05vbmVdIGZvbGxvd2VkIGJ5IGEgbm9kZSB3aXRoIGl0c2VsZiBhcyBuZXh0IGFuZCBbTm9uZV1cbiAgIGFzIGRhdGEuICopXG5cbmxldCBuZXdfbm9kZSAoKSA9XG4gIGxldCByZWMgbm9kZSA9IHsgbmV4dCA9IG5vZGU7IGRhdGEgPSBOb25lIH0gaW5cbiAgbm9kZVxuXG4oKiBUeXBlIG9mIGEgc3RyZWFtIHNvdXJjZSB1c2luZyBhIGZ1bmN0aW9uIHRvIGNyZWF0ZSBuZXcgZWxlbWVudHMuICopXG50eXBlICdhIGZyb20gPSB7XG4gIGZyb21fY3JlYXRlIDogdW5pdCAtPiAnYSBvcHRpb24gTHd0LnQ7XG4gICgqIEZ1bmN0aW9uIHVzZWQgdG8gY3JlYXRlIG5ldyBlbGVtZW50cy4gKilcbiAgbXV0YWJsZSBmcm9tX3RocmVhZCA6IHVuaXQgTHd0LnQ7XG4gICgqIFRocmVhZCB3aGljaDpcblxuICAgICAtIHdhaXQgZm9yIHRoZSB0aHJlYWQgcmV0dXJuZWQgYnkgdGhlIGxhc3QgY2FsbCB0byBbZnJvbV9uZXh0XSxcbiAgICAgLSBhZGQgdGhlIG5leHQgZWxlbWVudCB0byB0aGUgZW5kIG9mIHRoZSBxdWV1ZS5cblxuICAgICBJZiBpdCBpcyBhIHNsZWVwaW5nIHRocmVhZCwgdGhlbiBpdCBtdXN0IGJlIHVzZWQgaW5zdGVhZCBvZiBjcmVhdGluZyBhXG4gICAgIG5ldyBvbmUgd2l0aCBbZnJvbV9jcmVhdGVdLiAqKVxufVxuXG4oKiBUeXBlIG9mIGEgc3RyZWFtIHNvdXJjZSBmb3IgcHVzaCBzdHJlYW1zLiAqKVxudHlwZSBwdXNoID0ge1xuICBtdXRhYmxlIHB1c2hfc2lnbmFsIDogdW5pdCBMd3QudDtcbiAgKCogVGhyZWFkIHNpZ25hbGVkIHdoZW4gYSBuZXcgZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RyZWFtLiAqKVxuICBtdXRhYmxlIHB1c2hfd2FpdGluZyA6IGJvb2w7XG4gICgqIElzIGEgdGhyZWFkIHdhaXRpbmcgb24gW3B1c2hfc2lnbmFsXSA/ICopXG4gIG11dGFibGUgcHVzaF9leHRlcm5hbCA6IE9iai50IFtAb2NhbWwud2FybmluZyBcIi02OVwiXTtcbiAgKCogUmVmZXJlbmNlIHRvIGFuIGV4dGVybmFsIHNvdXJjZS4gKilcbn1cblxuKCogVHlwZSBvZiBhIHN0cmVhbSBzb3VyY2UgZm9yIGJvdW5kZWQtcHVzaCBzdHJlYW1zLiAqKVxudHlwZSAnYSBwdXNoX2JvdW5kZWQgPSB7XG4gIG11dGFibGUgcHVzaGJfc2lnbmFsIDogdW5pdCBMd3QudDtcbiAgKCogVGhyZWFkIHNpZ25hbGVkIHdoZW4gYSBuZXcgZWxlbWVudCBpcyBhZGRlZCB0byB0aGUgc3RyZWFtLiAqKVxuICBtdXRhYmxlIHB1c2hiX3dhaXRpbmcgOiBib29sO1xuICAoKiBJcyBhIHRocmVhZCB3YWl0aW5nIG9uIFtwdXNoYl9zaWduYWxdID8gKilcbiAgbXV0YWJsZSBwdXNoYl9zaXplIDogaW50O1xuICAoKiBTaXplIG9mIHRoZSBxdWV1ZS4gKilcbiAgbXV0YWJsZSBwdXNoYl9jb3VudCA6IGludDtcbiAgKCogQ3VycmVudCBsZW5ndGggb2YgdGhlIHF1ZXVlLiAqKVxuICBtdXRhYmxlIHB1c2hiX3BlbmRpbmcgOiAnYSBvcHRpb247XG4gICgqIFRoZSBuZXh0IGVsZW1lbnQgdG8gcHVzaCBpZiBhIHRocmVhZCBibG9ja2VkIG9uIHB1c2guIFdlIHN0b3JlIGl0XG4gICAgIGhlcmUgdG8gYmUgc3VyZSBpdCB3aWxsIGJlIHRoZSBmaXJzdCBlbGVtZW50IHRvIGJlIGFkZGVkIHdoZW5cbiAgICAgc3BhY2UgYmVjb21lcyBhdmFpbGFibGUuICopXG4gIG11dGFibGUgcHVzaGJfcHVzaF93YWl0ZXIgOiB1bml0IEx3dC50O1xuICBtdXRhYmxlIHB1c2hiX3B1c2hfd2FrZW5lciA6IHVuaXQgTHd0LnU7XG4gICgqIFRocmVhZCBibG9ja2VkIG9uIHB1c2guICopXG4gIG11dGFibGUgcHVzaGJfZXh0ZXJuYWwgOiBPYmoudCBbQG9jYW1sLndhcm5pbmcgXCItNjlcIl07XG4gICgqIFJlZmVyZW5jZSB0byBhbiBleHRlcm5hbCBzb3VyY2UuICopXG59XG5cbigqIFNvdXJjZSBvZiBhIHN0cmVhbS4gKilcbnR5cGUgJ2Egc291cmNlID1cbiAgfCBGcm9tIG9mICdhIGZyb21cbiAgfCBGcm9tX2RpcmVjdCBvZiAodW5pdCAtPiAnYSBvcHRpb24pXG4gIHwgUHVzaCBvZiBwdXNoXG4gIHwgUHVzaF9ib3VuZGVkIG9mICdhIHB1c2hfYm91bmRlZFxuXG50eXBlICdhIHQgPSB7XG4gIHNvdXJjZSA6ICdhIHNvdXJjZTtcbiAgKCogVGhlIHNvdXJjZSBvZiB0aGUgc3RyZWFtLiAqKVxuICBjbG9zZSA6IHVuaXQgTHd0LnU7XG4gICgqIEEgd2FrZW5lciBmb3IgYSB0aHJlYWQgdGhhdCBzbGVlcHMgdW50aWwgdGhlIHN0cmVhbSBpcyBjbG9zZWQuICopXG4gIGNsb3NlZCA6IHVuaXQgTHd0LnQ7XG4gICgqIEEgd2FpdGVyIGZvciBhIHRocmVhZCB0aGF0IHNsZWVwcyB1bnRpbCB0aGUgc3RyZWFtIGlzIGNsb3NlZC4gKilcbiAgbXV0YWJsZSBub2RlIDogJ2Egbm9kZTtcbiAgKCogUG9pbnRlciB0byBmaXJzdCBwZW5kaW5nIGVsZW1lbnQsIG9yIHRvIFtsYXN0XSBpZiB0aGVyZSBpcyBub1xuICAgICBwZW5kaW5nIGVsZW1lbnQuICopXG4gIGxhc3QgOiAnYSBub2RlIHJlZjtcbiAgKCogTm9kZSBtYXJraW5nIHRoZSBlbmQgb2YgdGhlIHF1ZXVlIG9mIHBlbmRpbmcgZWxlbWVudHMuICopXG59XG5cbmNsYXNzIHR5cGUgWydhXSBib3VuZGVkX3B1c2ggPSBvYmplY3RcbiAgbWV0aG9kIHNpemUgOiBpbnRcbiAgbWV0aG9kIHJlc2l6ZSA6IGludCAtPiB1bml0XG4gIG1ldGhvZCBwdXNoIDogJ2EgLT4gdW5pdCBMd3QudFxuICBtZXRob2QgY2xvc2UgOiB1bml0XG4gIG1ldGhvZCBjb3VudCA6IGludFxuICBtZXRob2QgYmxvY2tlZCA6IGJvb2xcbiAgbWV0aG9kIGNsb3NlZCA6IGJvb2xcbiAgbWV0aG9kIHNldF9yZWZlcmVuY2UgOiAnYS4gJ2EgLT4gdW5pdFxuZW5kXG5cbigqIFRoZSBvbmx5IGRpZmZlcmVuY2UgYmV0d2VlbiB0d28gY2xvbmVzIGlzIHRoZSBwb2ludGVyIHRvIHRoZSBmaXJzdFxuICAgcGVuZGluZyBlbGVtZW50LiAqKVxubGV0IGNsb25lIHMgPVxuICAobWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICAgfCBQdXNoX2JvdW5kZWQgXyAtPiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uY2xvbmVcIlxuICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+ICgpKTtcbiAge1xuICAgIHNvdXJjZSA9IHMuc291cmNlO1xuICAgIGNsb3NlID0gcy5jbG9zZTtcbiAgICBjbG9zZWQgPSBzLmNsb3NlZDtcbiAgICBub2RlID0gcy5ub2RlO1xuICAgIGxhc3QgPSBzLmxhc3Q7XG4gIH1cblxubGV0IGZyb21fc291cmNlIHNvdXJjZSA9XG4gIGxldCBub2RlID0gbmV3X25vZGUgKCkgaW5cbiAgbGV0IGNsb3NlZCwgY2xvc2UgPSBMd3Qud2FpdCAoKSBpblxuICB7IHNvdXJjZSA7IGNsb3NlIDsgY2xvc2VkIDsgbm9kZSA7IGxhc3QgPSByZWYgbm9kZSB9XG5cbmxldCBmcm9tIGYgPVxuICBmcm9tX3NvdXJjZSAoRnJvbSB7IGZyb21fY3JlYXRlID0gZjsgZnJvbV90aHJlYWQgPSBMd3QucmV0dXJuX3VuaXQgfSlcblxubGV0IGZyb21fZGlyZWN0IGYgPVxuICBmcm9tX3NvdXJjZSAoRnJvbV9kaXJlY3QgZilcblxubGV0IGNsb3NlZCBzID0gcy5jbG9zZWRcblxubGV0IGlzX2Nsb3NlZCBzID1cbiAgbm90IChMd3QuaXNfc2xlZXBpbmcgKGNsb3NlZCBzKSlcblxubGV0IGVucXVldWUnIGUgbGFzdCA9XG4gIGxldCBub2RlID0gIWxhc3RcbiAgYW5kIG5ld19sYXN0ID0gbmV3X25vZGUgKCkgaW5cbiAgbm9kZS5kYXRhIDwtIGU7XG4gIG5vZGUubmV4dCA8LSBuZXdfbGFzdDtcbiAgbGFzdCA6PSBuZXdfbGFzdFxuXG5sZXQgZW5xdWV1ZSBlIHMgPVxuICBlbnF1ZXVlJyBlIHMubGFzdFxuXG5sZXQgY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpID1cbiAgKCogQ3JlYXRlIHRoZSBzb3VyY2UgZm9yIG5vdGlmaWNhdGlvbnMgb2YgbmV3IGVsZW1lbnRzLiAqKVxuICBsZXQgc291cmNlLCBwdXNoX3NpZ25hbF9yZXNvbHZlciA9XG4gICAgbGV0IHB1c2hfc2lnbmFsLCBwdXNoX3NpZ25hbF9yZXNvbHZlciA9IEx3dC53YWl0ICgpIGluXG4gICAgKHsgcHVzaF9zaWduYWw7XG4gICAgICAgcHVzaF93YWl0aW5nID0gZmFsc2U7XG4gICAgICAgcHVzaF9leHRlcm5hbCA9IE9iai5yZXByICgpIH0sXG4gICAgIHJlZiBwdXNoX3NpZ25hbF9yZXNvbHZlcilcbiAgaW5cbiAgbGV0IHQgPSBmcm9tX3NvdXJjZSAoUHVzaCBzb3VyY2UpIGluXG4gICgqIFtwdXNoXSBzaG91bGQgbm90IGNsb3NlIG92ZXIgW3RdIHNvIHRoYXQgaXQgY2FuIGJlIGdhcmJhZ2UgY29sbGVjdGVkIGV2ZW5cbiAgICogdGhlcmUgYXJlIHN0aWxsIHJlZmVyZW5jZXMgdG8gW3B1c2hdLiBVbnBhY2sgYWxsIHRoZSBjb21wb25lbnRzIG9mIFt0XVxuICAgKiB0aGF0IFtwdXNoXSBuZWVkcyBhbmQgcmVmZXJlbmNlIHRob3NlIGlkZW50aWZpZXJzIGluc3RlYWQuICopXG4gIGxldCBjbG9zZSA9IHQuY2xvc2UgYW5kIGNsb3NlZCA9IHQuY2xvc2VkIGFuZCBsYXN0ID0gdC5sYXN0IGluXG4gICgqIFRoZSBwdXNoIGZ1bmN0aW9uLiBJdCBkb2VzIG5vdCBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJlYW0uICopXG4gIGxldCBwdXNoIHggPVxuICAgIGlmIG5vdCAoTHd0LmlzX3NsZWVwaW5nIGNsb3NlZCkgdGhlbiByYWlzZSBDbG9zZWQ7XG4gICAgKCogUHVzaCB0aGUgZWxlbWVudCBhdCB0aGUgZW5kIG9mIHRoZSBxdWV1ZS4gKilcbiAgICBlbnF1ZXVlJyB4IGxhc3Q7XG4gICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgZWxlbWVudC4gKilcbiAgICBpZiBzb3VyY2UucHVzaF93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgIHNvdXJjZS5wdXNoX3dhaXRpbmcgPC0gZmFsc2U7XG4gICAgICAoKiBVcGRhdGUgdGhyZWFkcy4gKilcbiAgICAgIGxldCBvbGRfcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSAhcHVzaF9zaWduYWxfcmVzb2x2ZXIgaW5cbiAgICAgIGxldCBuZXdfd2FpdGVyLCBuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXIgPSBMd3Qud2FpdCAoKSBpblxuICAgICAgc291cmNlLnB1c2hfc2lnbmFsIDwtIG5ld193YWl0ZXI7XG4gICAgICBwdXNoX3NpZ25hbF9yZXNvbHZlciA6PSBuZXdfcHVzaF9zaWduYWxfcmVzb2x2ZXI7XG4gICAgICAoKiBTaWduYWwgdGhhdCBhIG5ldyB2YWx1ZSBoYXMgYmVlbiByZWNlaXZlZC4gKilcbiAgICAgIEx3dC53YWtldXBfbGF0ZXIgb2xkX3B1c2hfc2lnbmFsX3Jlc29sdmVyICgpXG4gICAgZW5kO1xuICAgICgqIERvIHRoaXMgYXQgdGhlIGVuZCBpbiBjYXNlIG9uZSBvZiB0aGUgZnVuY3Rpb24gcmFpc2UgYW5cbiAgICAgICBleGNlcHRpb24uICopXG4gICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIGNsb3NlICgpXG4gIGluXG4gICh0LCBwdXNoLCBmdW4geCAtPiBzb3VyY2UucHVzaF9leHRlcm5hbCA8LSBPYmoucmVwciB4KVxuXG5sZXQgcmV0dXJuIGEgPVxuICBsZXQgc3RyZWFtLCBwdXNoLCBfID0gY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gIHB1c2ggKFNvbWUgYSk7XG4gIHB1c2ggTm9uZTtcbiAgc3RyZWFtXG5cbmxldCByZXR1cm5fbHd0IGEgPVxuICBsZXQgc291cmNlLCBwdXNoLCBfID0gY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gIEx3dC5kb250X3dhaXRcbiAgICAoZnVuICgpIC0+XG4gICAgICBMd3QuYmluZCBhIChmdW4geCAtPlxuICAgICAgICBwdXNoIChTb21lIHgpO1xuICAgICAgICBwdXNoIE5vbmU7XG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdCkpXG4gICAgKGZ1biBfZXhjIC0+IHB1c2ggTm9uZSk7XG4gIHNvdXJjZVxuXG5sZXQgb2Zfc2VxIHMgPVxuICBsZXQgcyA9IHJlZiBzIGluXG4gIGxldCBnZXQgKCkgPVxuICAgIG1hdGNoICFzICgpIHdpdGhcbiAgICB8IFNlcS5OaWwgLT4gTm9uZVxuICAgIHwgU2VxLkNvbnMgKGVsdCwgcycpIC0+IHMgOj0gcyc7IFNvbWUgZWx0XG4gIGluXG4gIGZyb21fZGlyZWN0IGdldFxuXG5sZXQgb2ZfbHd0X3NlcSBzID1cbiAgbGV0IHMgPSByZWYgcyBpblxuICBsZXQgZ2V0ICgpID1cbiAgICAhcyAoKSA+fD0gZnVuY3Rpb25cbiAgICB8IEx3dF9zZXEuTmlsIC0+IE5vbmVcbiAgICB8IEx3dF9zZXEuQ29ucyAoZWx0LCBzJykgLT4gcyA6PSBzJzsgU29tZSBlbHRcbiAgaW5cbiAgZnJvbSBnZXRcblxuXG5sZXQgY3JlYXRlICgpID1cbiAgbGV0IHNvdXJjZSwgcHVzaCwgXyA9IGNyZWF0ZV93aXRoX3JlZmVyZW5jZSAoKSBpblxuICAoc291cmNlLCBwdXNoKVxuXG5sZXQgb2ZfaXRlciBpdGVyIGkgPVxuICBsZXQgc3RyZWFtLCBwdXNoID0gY3JlYXRlICgpIGluXG4gIGl0ZXIgKGZ1biB4IC0+IHB1c2ggKFNvbWUgeCkpIGk7XG4gIHB1c2ggTm9uZTtcbiAgc3RyZWFtXG5cbmxldCBvZl9saXN0IGwgPVxuICBvZl9pdGVyIExpc3QuaXRlciBsXG5cbmxldCBvZl9hcnJheSBhID1cbiAgb2ZfaXRlciBBcnJheS5pdGVyIGFcblxubGV0IG9mX3N0cmluZyBzID1cbiAgb2ZfaXRlciBTdHJpbmcuaXRlciBzXG5cbigqIEFkZCB0aGUgcGVuZGluZyBlbGVtZW50IHRvIHRoZSBxdWV1ZSBhbmQgbm90aWZ5IHRoZSBibG9ja2VkIHB1c2hlZC5cblxuICAgUHJlY29uZGl0aW9uOiBpbmZvLnB1c2hiX3BlbmRpbmcgPSBTb21lIF9cblxuICAgVGhpcyBkb2VzIG5vdCBtb2RpZnkgaW5mby5wdXNoYl9jb3VudC4gKilcbmxldCBub3RpZnlfcHVzaGVyIGluZm8gbGFzdCA9XG4gICgqIFB1c2ggdGhlIGVsZW1lbnQgYXQgdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gIGVucXVldWUnIGluZm8ucHVzaGJfcGVuZGluZyBsYXN0O1xuICAoKiBDbGVhciBwZW5kaW5nIGVsZW1lbnQuICopXG4gIGluZm8ucHVzaGJfcGVuZGluZyA8LSBOb25lO1xuICAoKiBXYWtldXAgdGhlIHB1c2hlci4gKilcbiAgbGV0IG9sZF93YWtlbmVyID0gaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgaW5cbiAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gIGluZm8ucHVzaGJfcHVzaF93YWl0ZXIgPC0gd2FpdGVyO1xuICBpbmZvLnB1c2hiX3B1c2hfd2FrZW5lciA8LSB3YWtlbmVyO1xuICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG5cbmNsYXNzIFsnYV0gYm91bmRlZF9wdXNoX2ltcGwgKGluZm8gOiAnYSBwdXNoX2JvdW5kZWQpIHdha2VuZXJfY2VsbCBsYXN0IGNsb3NlID0gb2JqZWN0XG4gIHZhbCBtdXRhYmxlIGNsb3NlZCA9IGZhbHNlXG5cbiAgbWV0aG9kIHNpemUgPVxuICAgIGluZm8ucHVzaGJfc2l6ZVxuXG4gIG1ldGhvZCByZXNpemUgc2l6ZSA9XG4gICAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uYm91bmRlZF9wdXNoI3Jlc2l6ZVwiO1xuICAgIGluZm8ucHVzaGJfc2l6ZSA8LSBzaXplO1xuICAgIGlmIGluZm8ucHVzaGJfY291bnQgPCBpbmZvLnB1c2hiX3NpemUgJiYgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmUgdGhlbiBiZWdpblxuICAgICAgaW5mby5wdXNoYl9jb3VudCA8LSBpbmZvLnB1c2hiX2NvdW50ICsgMTtcbiAgICAgIG5vdGlmeV9wdXNoZXIgaW5mbyBsYXN0XG4gICAgZW5kXG5cbiAgbWV0aG9kIHB1c2ggeCA9XG4gICAgaWYgY2xvc2VkIHRoZW5cbiAgICAgIEx3dC5mYWlsIENsb3NlZFxuICAgIGVsc2UgaWYgaW5mby5wdXNoYl9wZW5kaW5nIDw+IE5vbmUgdGhlblxuICAgICAgTHd0LmZhaWwgRnVsbFxuICAgIGVsc2UgaWYgaW5mby5wdXNoYl9jb3VudCA+PSBpbmZvLnB1c2hiX3NpemUgdGhlbiBiZWdpblxuICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIFNvbWUgeDtcbiAgICAgIEx3dC5jYXRjaFxuICAgICAgICAoZnVuICgpIC0+IGluZm8ucHVzaGJfcHVzaF93YWl0ZXIpXG4gICAgICAgIChmdW4gZXhuIC0+XG4gICAgICAgICAgIG1hdGNoIGV4biB3aXRoXG4gICAgICAgICAgIHwgTHd0LkNhbmNlbGVkIC0+XG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIE5vbmU7XG4gICAgICAgICAgICAgbGV0IHdhaXRlciwgd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wdXNoX3dhaXRlciA8LSB3YWl0ZXI7XG4gICAgICAgICAgICAgaW5mby5wdXNoYl9wdXNoX3dha2VuZXIgPC0gd2FrZW5lcjtcbiAgICAgICAgICAgICBMd3QuZmFpbCBleG5cbiAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgTHd0LmZhaWwgZXhuKVxuICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAoKiBQdXNoIHRoZSBlbGVtZW50IGF0IHRoZSBlbmQgb2YgdGhlIHF1ZXVlLiAqKVxuICAgICAgZW5xdWV1ZScgKFNvbWUgeCkgbGFzdDtcbiAgICAgIGluZm8ucHVzaGJfY291bnQgPC0gaW5mby5wdXNoYl9jb3VudCArIDE7XG4gICAgICAoKiBTZW5kIGEgc2lnbmFsIGlmIGF0IGxlYXN0IG9uZSB0aHJlYWQgaXMgd2FpdGluZyBmb3IgYSBuZXdcbiAgICAgICAgIGVsZW1lbnQuICopXG4gICAgICBpZiBpbmZvLnB1c2hiX3dhaXRpbmcgdGhlbiBiZWdpblxuICAgICAgICBpbmZvLnB1c2hiX3dhaXRpbmcgPC0gZmFsc2U7XG4gICAgICAgICgqIFVwZGF0ZSB0aHJlYWRzLiAqKVxuICAgICAgICBsZXQgb2xkX3dha2VuZXIgPSAhd2FrZW5lcl9jZWxsIGluXG4gICAgICAgIGxldCBuZXdfd2FpdGVyLCBuZXdfd2FrZW5lciA9IEx3dC53YWl0ICgpIGluXG4gICAgICAgIGluZm8ucHVzaGJfc2lnbmFsIDwtIG5ld193YWl0ZXI7XG4gICAgICAgIHdha2VuZXJfY2VsbCA6PSBuZXdfd2FrZW5lcjtcbiAgICAgICAgKCogU2lnbmFsIHRoYXQgYSBuZXcgdmFsdWUgaGFzIGJlZW4gcmVjZWl2ZWQuICopXG4gICAgICAgIEx3dC53YWtldXBfbGF0ZXIgb2xkX3dha2VuZXIgKClcbiAgICAgIGVuZDtcbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIGVuZFxuXG4gIG1ldGhvZCBjbG9zZSA9XG4gICAgaWYgbm90IGNsb3NlZCB0aGVuIGJlZ2luXG4gICAgICBjbG9zZWQgPC0gdHJ1ZTtcbiAgICAgIGxldCBub2RlID0gIWxhc3QgYW5kIG5ld19sYXN0ID0gbmV3X25vZGUgKCkgaW5cbiAgICAgIG5vZGUuZGF0YSA8LSBOb25lO1xuICAgICAgbm9kZS5uZXh0IDwtIG5ld19sYXN0O1xuICAgICAgbGFzdCA6PSBuZXdfbGFzdDtcbiAgICAgIGlmIGluZm8ucHVzaGJfcGVuZGluZyA8PiBOb25lIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl9wZW5kaW5nIDwtIE5vbmU7XG4gICAgICAgIEx3dC53YWtldXBfbGF0ZXJfZXhuIGluZm8ucHVzaGJfcHVzaF93YWtlbmVyIENsb3NlZFxuICAgICAgZW5kO1xuICAgICAgKCogU2VuZCBhIHNpZ25hbCBpZiBhdCBsZWFzdCBvbmUgdGhyZWFkIGlzIHdhaXRpbmcgZm9yIGEgbmV3XG4gICAgICAgICBlbGVtZW50LiAqKVxuICAgICAgaWYgaW5mby5wdXNoYl93YWl0aW5nIHRoZW4gYmVnaW5cbiAgICAgICAgaW5mby5wdXNoYl93YWl0aW5nIDwtIGZhbHNlO1xuICAgICAgICBsZXQgb2xkX3dha2VuZXIgPSAhd2FrZW5lcl9jZWxsIGluXG4gICAgICAgICgqIFNpZ25hbCB0aGF0IGEgbmV3IHZhbHVlIGhhcyBiZWVuIHJlY2VpdmVkLiAqKVxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIG9sZF93YWtlbmVyICgpXG4gICAgICBlbmQ7XG4gICAgICBMd3Qud2FrZXVwIGNsb3NlICgpO1xuICAgIGVuZFxuXG4gIG1ldGhvZCBjb3VudCA9XG4gICAgaW5mby5wdXNoYl9jb3VudFxuXG4gIG1ldGhvZCBibG9ja2VkID1cbiAgICBpbmZvLnB1c2hiX3BlbmRpbmcgPD4gTm9uZVxuXG4gIG1ldGhvZCBjbG9zZWQgPVxuICAgIGNsb3NlZFxuXG4gIG1ldGhvZCBzZXRfcmVmZXJlbmNlIDogJ2EuICdhIC0+IHVuaXQgPVxuICAgIGZ1biB4IC0+IGluZm8ucHVzaGJfZXh0ZXJuYWwgPC0gT2JqLnJlcHIgeFxuZW5kXG5cbmxldCBjcmVhdGVfYm91bmRlZCBzaXplID1cbiAgaWYgc2l6ZSA8IDAgdGhlbiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0uY3JlYXRlX2JvdW5kZWRcIjtcbiAgKCogQ3JlYXRlIHRoZSBzb3VyY2UgZm9yIG5vdGlmaWNhdGlvbnMgb2YgbmV3IGVsZW1lbnRzLiAqKVxuICBsZXQgaW5mbywgd2FrZW5lcl9jZWxsID1cbiAgICBsZXQgd2FpdGVyLCB3YWtlbmVyID0gTHd0LndhaXQgKCkgaW5cbiAgICBsZXQgcHVzaF93YWl0ZXIsIHB1c2hfd2FrZW5lciA9IEx3dC50YXNrICgpIGluXG4gICAgKHsgcHVzaGJfc2lnbmFsID0gd2FpdGVyO1xuICAgICAgIHB1c2hiX3dhaXRpbmcgPSBmYWxzZTtcbiAgICAgICBwdXNoYl9zaXplID0gc2l6ZTtcbiAgICAgICBwdXNoYl9jb3VudCA9IDA7XG4gICAgICAgcHVzaGJfcGVuZGluZyA9IE5vbmU7XG4gICAgICAgcHVzaGJfcHVzaF93YWl0ZXIgPSBwdXNoX3dhaXRlcjtcbiAgICAgICBwdXNoYl9wdXNoX3dha2VuZXIgPSBwdXNoX3dha2VuZXI7XG4gICAgICAgcHVzaGJfZXh0ZXJuYWwgPSBPYmoucmVwciAoKSB9LFxuICAgICByZWYgd2FrZW5lcilcbiAgaW5cbiAgbGV0IHQgPSBmcm9tX3NvdXJjZSAoUHVzaF9ib3VuZGVkIGluZm8pIGluXG4gICh0LCBuZXcgYm91bmRlZF9wdXNoX2ltcGwgaW5mbyB3YWtlbmVyX2NlbGwgdC5sYXN0IHQuY2xvc2UpXG5cbigqIFdhaXQgZm9yIGEgbmV3IGVsZW1lbnQgdG8gYmUgYWRkZWQgdG8gdGhlIHF1ZXVlIG9mIHBlbmRpbmcgZWxlbWVudFxuICAgb2YgdGhlIHN0cmVhbS4gKilcbmxldCBmZWVkIHMgPVxuICBtYXRjaCBzLnNvdXJjZSB3aXRoXG4gIHwgRnJvbSBmcm9tIC0+XG4gICAgKCogVGhlcmUgaXMgYWxyZWFkeSBhIHRocmVhZCBzdGFydGVkIHRvIGNyZWF0ZSBhIG5ldyBlbGVtZW50LFxuICAgICAgIHdhaXQgZm9yIHRoaXMgb25lIHRvIHRlcm1pbmF0ZS4gKilcbiAgICBpZiBMd3QuaXNfc2xlZXBpbmcgZnJvbS5mcm9tX3RocmVhZCB0aGVuXG4gICAgICBMd3QucHJvdGVjdGVkIGZyb20uZnJvbV90aHJlYWRcbiAgICBlbHNlIGJlZ2luXG4gICAgICAoKiBPdGhlcndpc2UgcmVxdWVzdCBhIG5ldyBlbGVtZW50LiAqKVxuICAgICAgbGV0IHRocmVhZCA9XG4gICAgICAgIGZyb20uZnJvbV9jcmVhdGUgKCkgPj49IGZ1biB4IC0+XG4gICAgICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgICAgIGVucXVldWUgeCBzO1xuICAgICAgICBpZiB4ID0gTm9uZSB0aGVuIEx3dC53YWtldXAgcy5jbG9zZSAoKTtcbiAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICBpblxuICAgICAgKCogQWxsb3cgb3RoZXIgdGhyZWFkcyB0byBhY2Nlc3MgdGhpcyB0aHJlYWQuICopXG4gICAgICBmcm9tLmZyb21fdGhyZWFkIDwtIHRocmVhZDtcbiAgICAgIEx3dC5wcm90ZWN0ZWQgdGhyZWFkXG4gICAgZW5kXG4gIHwgRnJvbV9kaXJlY3QgZiAtPlxuICAgIGxldCB4ID0gZiAoKSBpblxuICAgICgqIFB1c2ggdGhlIGVsZW1lbnQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICopXG4gICAgZW5xdWV1ZSB4IHM7XG4gICAgaWYgeCA9IE5vbmUgdGhlbiBMd3Qud2FrZXVwIHMuY2xvc2UgKCk7XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgUHVzaCBwdXNoIC0+XG4gICAgcHVzaC5wdXNoX3dhaXRpbmcgPC0gdHJ1ZTtcbiAgICBMd3QucHJvdGVjdGVkIHB1c2gucHVzaF9zaWduYWxcbiAgfCBQdXNoX2JvdW5kZWQgcHVzaCAtPlxuICAgIHB1c2gucHVzaGJfd2FpdGluZyA8LSB0cnVlO1xuICAgIEx3dC5wcm90ZWN0ZWQgcHVzaC5wdXNoYl9zaWduYWxcblxuKCogUmVtb3ZlIFtub2RlXSBmcm9tIHRoZSB0b3Agb2YgdGhlIHF1ZXVlLCBvciBkbyBub3RoaW5nIGlmIGl0IHdhc1xuICAgYWxyZWFkeSBjb25zdW1lZC5cblxuICAgUHJlY29uZGl0aW9uOiBub2RlLmRhdGEgPD4gTm9uZVxuKilcbmxldCBjb25zdW1lIHMgbm9kZSA9XG4gIGlmIG5vZGUgPT0gcy5ub2RlIHRoZW4gYmVnaW5cbiAgICBzLm5vZGUgPC0gbm9kZS5uZXh0O1xuICAgIG1hdGNoIHMuc291cmNlIHdpdGhcbiAgICB8IFB1c2hfYm91bmRlZCBpbmZvIC0+XG4gICAgICBpZiBpbmZvLnB1c2hiX3BlbmRpbmcgPSBOb25lIHRoZW5cbiAgICAgICAgaW5mby5wdXNoYl9jb3VudCA8LSBpbmZvLnB1c2hiX2NvdW50IC0gMVxuICAgICAgZWxzZVxuICAgICAgICBub3RpZnlfcHVzaGVyIGluZm8gcy5sYXN0XG4gICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+XG4gICAgICAoKVxuICBlbmRcblxubGV0IHJlYyBwZWVrX3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gcGVla19yZWMgcyBub2RlXG4gIGVsc2VcbiAgICBMd3QucmV0dXJuIG5vZGUuZGF0YVxuXG5sZXQgcGVlayBzID0gcGVla19yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBucGVla19yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gIGVsc2UgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5wZWVrX3JlYyBub2RlIGFjYyBuIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIG5wZWVrX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSAobiAtIDEpIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IG5wZWVrIG4gcyA9IG5wZWVrX3JlYyBzLm5vZGUgW10gbiBzXG5cbmxldCByZWMgZ2V0X3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZ2V0X3JlYyBzIG5vZGVcbiAgZWxzZSBiZWdpblxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybiBub2RlLmRhdGFcbiAgZW5kXG5cbmxldCBnZXQgcyA9IGdldF9yZWMgcyBzLm5vZGVcblxubGV0IHJlYyBnZXRfZXhuX3JlYyBzIG5vZGUgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgTHd0LnRyeV9iaW5kXG4gICAgICAoZnVuICgpIC0+IGZlZWQgcylcbiAgICAgIChmdW4gKCkgLT4gZ2V0X2V4bl9yZWMgcyBub2RlKVxuICAgICAgKGZ1biBleG4gLT4gTHd0LnJldHVybiAoU29tZSAoUmVzdWx0LkVycm9yIGV4bikpKVxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgdmFsdWUgLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgTHd0LnJldHVybiAoU29tZSAoUmVzdWx0Lk9rIHZhbHVlKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgd3JhcF9leG4gcyA9IGZyb20gKGZ1biAoKSAtPiBnZXRfZXhuX3JlYyBzIHMubm9kZSlcblxubGV0IHJlYyBuZ2V0X3JlYyBub2RlIGFjYyBuIHMgPVxuICBpZiBuIDw9IDAgdGhlblxuICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gbmdldF9yZWMgbm9kZSBhY2MgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBzLm5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbmdldF9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG5cbmxldCBuZ2V0IG4gcyA9IG5nZXRfcmVjIHMubm9kZSBbXSBuIHNcblxubGV0IHJlYyBnZXRfd2hpbGVfcmVjIG5vZGUgYWNjIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBnZXRfd2hpbGVfcmVjIG5vZGUgYWNjIGYgc1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHRlc3QgPSBmIHggaW5cbiAgICAgIGlmIHRlc3QgdGhlbiBiZWdpblxuICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgZ2V0X3doaWxlX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSBmIHNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IGdldF93aGlsZSBmIHMgPSBnZXRfd2hpbGVfcmVjIHMubm9kZSBbXSBmIHNcblxubGV0IHJlYyBnZXRfd2hpbGVfc19yZWMgbm9kZSBhY2MgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGdldF93aGlsZV9zX3JlYyBub2RlIGFjYyBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT4gYmVnaW5cbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgICBnZXRfd2hpbGVfc19yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgZiBzXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIChMaXN0LnJldiBhY2MpXG4gICAgICBlbmRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKExpc3QucmV2IGFjYylcblxubGV0IGdldF93aGlsZV9zIGYgcyA9IGdldF93aGlsZV9zX3JlYyBzLm5vZGUgW10gZiBzXG5cbmxldCByZWMgbmV4dF9yZWMgcyBub2RlID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IG5leHRfcmVjIHMgbm9kZVxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBMd3QucmV0dXJuIHhcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5mYWlsIEVtcHR5XG5cbmxldCBuZXh0IHMgPSBuZXh0X3JlYyBzIHMubm9kZVxuXG5sZXQgcmVjIGxhc3RfbmV3X3JlYyBub2RlIHggcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGxhc3RfbmV3X3JlYyBub2RlIHggc1xuICAgIHwgTHd0LkZhaWwgZXhuIC0+XG4gICAgICBMd3QuZmFpbCBleG5cbiAgICB8IEx3dC5TbGVlcCAtPlxuICAgICAgTHd0LnJldHVybiB4XG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxhc3RfbmV3X3JlYyBub2RlLm5leHQgeCBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIHhcblxubGV0IGxhc3RfbmV3IHMgPVxuICBsZXQgbm9kZSA9IHMubm9kZSBpblxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IG5leHQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiB4IC0+XG4gICAgICBsYXN0X25ld19yZWMgbm9kZSB4IHNcbiAgICB8IEx3dC5GYWlsIF8gfCBMd3QuU2xlZXAgLT5cbiAgICAgIHRocmVhZFxuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsYXN0X25ld19yZWMgbm9kZS5uZXh0IHggc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LmZhaWwgRW1wdHlcblxubGV0IHJlYyB0b19saXN0X3JlYyBub2RlIGFjYyBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IHRvX2xpc3RfcmVjIG5vZGUgYWNjIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgdG9fbGlzdF9yZWMgbm9kZS5uZXh0ICh4IDo6IGFjYykgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjKVxuXG5sZXQgdG9fbGlzdCBzID0gdG9fbGlzdF9yZWMgcy5ub2RlIFtdIHNcblxubGV0IHJlYyB0b19zdHJpbmdfcmVjIG5vZGUgYnVmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gdG9fc3RyaW5nX3JlYyBub2RlIGJ1ZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgeDtcbiAgICAgIHRvX3N0cmluZ19yZWMgbm9kZS5uZXh0IGJ1ZiBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuIChCdWZmZXIuY29udGVudHMgYnVmKVxuXG5sZXQgdG9fc3RyaW5nIHMgPSB0b19zdHJpbmdfcmVjIHMubm9kZSAoQnVmZmVyLmNyZWF0ZSAxMjgpIHNcblxubGV0IGp1bmsgcyA9XG4gIGxldCBub2RlID0gcy5ub2RlIGluXG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW4gYmVnaW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPlxuICAgIGlmIG5vZGUuZGF0YSA8PiBOb25lIHRoZW4gY29uc3VtZSBzIG5vZGU7XG4gICAgTHd0LnJldHVybl91bml0XG4gIGVuZCBlbHNlIGJlZ2luXG4gICAgaWYgbm9kZS5kYXRhIDw+IE5vbmUgdGhlbiBjb25zdW1lIHMgbm9kZTtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZW5kXG5cbmxldCByZWMgbmp1bmtfcmVjIG5vZGUgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gbmp1bmtfcmVjIG5vZGUgbiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIG5qdW5rX3JlYyBub2RlLm5leHQgKG4gLSAxKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IG5qdW5rIG4gcyA9IG5qdW5rX3JlYyBzLm5vZGUgbiBzXG5cbmxldCByZWMganVua193aGlsZV9yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4ganVua193aGlsZV9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW4gYmVnaW5cbiAgICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICAgIGp1bmtfd2hpbGVfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgIGVuZCBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX3doaWxlIGYgcyA9IGp1bmtfd2hpbGVfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBqdW5rX3doaWxlX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGp1bmtfd2hpbGVfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT4gYmVnaW5cbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgICBqdW5rX3doaWxlX3NfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgICAgfCBmYWxzZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGp1bmtfd2hpbGVfcyBmIHMgPSBqdW5rX3doaWxlX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBqdW5rX29sZF9yZWMgbm9kZSBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGxldCB0aHJlYWQgPSBmZWVkIHMgaW5cbiAgICBtYXRjaCBMd3Quc3RhdGUgdGhyZWFkIHdpdGhcbiAgICB8IEx3dC5SZXR1cm4gXyAtPlxuICAgICAganVua19vbGRfcmVjIG5vZGUgc1xuICAgIHwgTHd0LkZhaWwgZXhuIC0+XG4gICAgICBMd3QuZmFpbCBleG5cbiAgICB8IEx3dC5TbGVlcCAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSBfIC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGp1bmtfb2xkX3JlYyBub2RlLm5leHQgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBqdW5rX29sZCBzID0ganVua19vbGRfcmVjIHMubm9kZSBzXG5cbmxldCByZWMgZ2V0X2F2YWlsYWJsZV9yZWMgbm9kZSBhY2MgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBsZXQgdGhyZWFkID0gZmVlZCBzIGluXG4gICAgbWF0Y2ggTHd0LnN0YXRlIHRocmVhZCB3aXRoXG4gICAgfCBMd3QuUmV0dXJuIF8gLT5cbiAgICAgIGdldF9hdmFpbGFibGVfcmVjIG5vZGUgYWNjIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgcmFpc2UgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggbm9kZS5kYXRhIHdpdGhcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBnZXRfYXZhaWxhYmxlX3JlYyBub2RlLm5leHQgKHggOjogYWNjKSBzXG4gICAgfCBOb25lIC0+XG4gICAgICBMaXN0LnJldiBhY2NcblxubGV0IGdldF9hdmFpbGFibGUgcyA9IGdldF9hdmFpbGFibGVfcmVjIHMubm9kZSBbXSBzXG5cbmxldCByZWMgZ2V0X2F2YWlsYWJsZV91cF90b19yZWMgbm9kZSBhY2MgbiBzID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBMaXN0LnJldiBhY2NcbiAgZWxzZSBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgbGV0IHRocmVhZCA9IGZlZWQgcyBpblxuICAgIG1hdGNoIEx3dC5zdGF0ZSB0aHJlYWQgd2l0aFxuICAgIHwgTHd0LlJldHVybiBfIC0+XG4gICAgICBnZXRfYXZhaWxhYmxlX3VwX3RvX3JlYyBub2RlIGFjYyBuIHNcbiAgICB8IEx3dC5GYWlsIGV4biAtPlxuICAgICAgcmFpc2UgZXhuXG4gICAgfCBMd3QuU2xlZXAgLT5cbiAgICAgIExpc3QucmV2IGFjY1xuICBlbHNlXG4gICAgbWF0Y2ggcy5ub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIG5vZGUubmV4dCAoeCA6OiBhY2MpIChuIC0gMSkgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTGlzdC5yZXYgYWNjXG5cbmxldCBnZXRfYXZhaWxhYmxlX3VwX3RvIG4gcyA9IGdldF9hdmFpbGFibGVfdXBfdG9fcmVjIHMubm9kZSBbXSBuIHNcblxubGV0IHJlYyBpc19lbXB0eSBzID1cbiAgaWYgcy5ub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gaXNfZW1wdHkgc1xuICBlbHNlXG4gICAgTHd0LnJldHVybiAocy5ub2RlLmRhdGEgPSBOb25lKVxuXG5sZXQgbWFwIGYgcyA9XG4gIGZyb20gKGZ1biAoKSAtPiBnZXQgcyA+fD0gZnVuY3Rpb25cbiAgfCBTb21lIHggLT5cbiAgICBsZXQgeCA9IGYgeCBpblxuICAgIFNvbWUgeFxuICB8IE5vbmUgLT5cbiAgICBOb25lKVxuXG5sZXQgbWFwX3MgZiBzID1cbiAgZnJvbSAoZnVuICgpIC0+IGdldCBzID4+PSBmdW5jdGlvblxuICB8IFNvbWUgeCAtPlxuICAgIGYgeCA+fD0gKGZ1biB4IC0+IFNvbWUgeClcbiAgfCBOb25lIC0+XG4gICAgTHd0LnJldHVybl9ub25lKVxuXG5sZXQgZmlsdGVyIGYgcyA9XG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbGV0IHQgPSBnZXQgcyBpblxuICAgIHQgPj49IGZ1bmN0aW9uXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGxldCB0ZXN0ID0gZiB4IGluXG4gICAgICBpZiB0ZXN0IHRoZW5cbiAgICAgICAgdFxuICAgICAgZWxzZVxuICAgICAgICBuZXh0ICgpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBmaWx0ZXJfcyBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0IHMgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+IGJlZ2luXG4gICAgICAgIGYgeCA+Pj0gZnVuY3Rpb25cbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgdFxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgbmV4dCAoKVxuICAgICAgZW5kXG4gICAgfCBOb25lIC0+XG4gICAgICB0XG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmlsdGVyX21hcCBmIHMgPVxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGdldCBzID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBsZXQgeCA9IGYgeCBpblxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICBMd3QucmV0dXJuIHhcbiAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgIG5leHQgKCkpXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBmaWx0ZXJfbWFwX3MgZiBzID1cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBnZXQgcyA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgeCAtPlxuICAgICAgbGV0IHQgPSBmIHggaW5cbiAgICAgICh0ID4+PSBmdW5jdGlvblxuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICB0XG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBuZXh0ICgpKVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgbWFwX2xpc3QgZiBzID1cbiAgbGV0IHBlbmRpbmdzID0gcmVmIFtdIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXBlbmRpbmdzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIGxldCBsID0gZiB4IGluXG4gICAgICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgICAgbmV4dCAoKVxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgTHd0LnJldHVybl9ub25lKVxuICAgIHwgeCA6OiBsIC0+XG4gICAgICBwZW5kaW5ncyA6PSBsO1xuICAgICAgTHd0LnJldHVybiAoU29tZSB4KVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IG1hcF9saXN0X3MgZiBzID1cbiAgbGV0IHBlbmRpbmdzID0gcmVmIFtdIGluXG4gIGxldCByZWMgbmV4dCAoKSA9XG4gICAgbWF0Y2ggIXBlbmRpbmdzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICAoZ2V0IHMgPj49IGZ1bmN0aW9uXG4gICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIGYgeCA+Pj0gZnVuIGwgLT5cbiAgICAgICAgIHBlbmRpbmdzIDo9IGw7XG4gICAgICAgICBuZXh0ICgpXG4gICAgICAgfCBOb25lIC0+XG4gICAgICAgICBMd3QucmV0dXJuX25vbmUpXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIHBlbmRpbmdzIDo9IGw7XG4gICAgICBMd3QucmV0dXJuIChTb21lIHgpXG4gIGluXG4gIGZyb20gbmV4dFxuXG5sZXQgZmxhdHRlbiBzID1cbiAgbWFwX2xpc3QgKGZ1biBsIC0+IGwpIHNcblxubGV0IHJlYyBmb2xkX3JlYyBub2RlIGYgcyBhY2MgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZm9sZF9yZWMgbm9kZSBmIHMgYWNjXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCBhY2MgPSBmIHggYWNjIGluXG4gICAgICBmb2xkX3JlYyBub2RlLm5leHQgZiBzIGFjY1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcblxubGV0IGZvbGQgZiBzIGFjYyA9IGZvbGRfcmVjIHMubm9kZSBmIHMgYWNjXG5cbmxldCByZWMgZm9sZF9zX3JlYyBub2RlIGYgcyBhY2MgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZm9sZF9zX3JlYyBub2RlIGYgcyBhY2NcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZiB4IGFjYyA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZm9sZF9zX3JlYyBub2RlLm5leHQgZiBzIGFjY1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcblxubGV0IGZvbGRfcyBmIHMgYWNjID0gZm9sZF9zX3JlYyBzLm5vZGUgZiBzIGFjY1xuXG5sZXQgcmVjIGl0ZXJfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGl0ZXJfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCAoKSA9IGYgeCBpblxuICAgICAgaXRlcl9yZWMgbm9kZS5uZXh0IGYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyIGYgcyA9IGl0ZXJfcmVjIHMubm9kZSBmIHNcblxubGV0IHJlYyBpdGVyX3NfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGl0ZXJfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgZiB4ID4+PSBmdW4gKCkgLT5cbiAgICAgIGl0ZXJfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl91bml0XG5cbmxldCBpdGVyX3MgZiBzID0gaXRlcl9zX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgaXRlcl9wX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBpdGVyX3BfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IC0+XG4gICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgIGxldCByZXMgPSBmIHggaW5cbiAgICAgIGxldCByZXN0ID0gaXRlcl9wX3JlYyBub2RlLm5leHQgZiBzIGluXG4gICAgICByZXMgPj49IGZ1biAoKSAtPiByZXN0XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX3VuaXRcblxubGV0IGl0ZXJfcCBmIHMgPSBpdGVyX3BfcmVjIHMubm9kZSBmIHNcblxubGV0IGl0ZXJfbiA/KG1heF9jb25jdXJyZW5jeSA9IDEpIGYgc3RyZWFtID1cbiAgYmVnaW5cbiAgICBpZiBtYXhfY29uY3VycmVuY3kgPD0gMCB0aGVuXG4gICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgICAgXCJMd3Rfc3RyZWFtLml0ZXJfbjogbWF4X2NvbmN1cnJlbmN5IG11c3QgYmUgPiAwLCAlZCBnaXZlblwiXG4gICAgICAgICAgbWF4X2NvbmN1cnJlbmN5XG4gICAgICBpblxuICAgICAgaW52YWxpZF9hcmcgbWVzc2FnZVxuICBlbmQ7XG4gIGxldCByZWMgbG9vcCBydW5uaW5nIGF2YWlsYWJsZSA9XG4gICAgYmVnaW5cbiAgICAgIGlmIGF2YWlsYWJsZSA+IDAgdGhlbiAoXG4gICAgICAgIEx3dC5yZXR1cm4gKHJ1bm5pbmcsIGF2YWlsYWJsZSlcbiAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICBMd3QubmNob29zZV9zcGxpdCBydW5uaW5nID4+PSBmdW4gKGNvbXBsZXRlLCBydW5uaW5nKSAtPlxuICAgICAgICBMd3QucmV0dXJuIChydW5uaW5nLCBhdmFpbGFibGUgKyBMaXN0Lmxlbmd0aCBjb21wbGV0ZSlcbiAgICAgIClcbiAgICBlbmQgPj49IGZ1biAocnVubmluZywgYXZhaWxhYmxlKSAtPlxuICAgIGdldCBzdHJlYW0gPj49IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+XG4gICAgICBMd3Quam9pbiBydW5uaW5nXG4gICAgfCBTb21lIGVsdCAtPlxuICAgICAgbG9vcCAoZiBlbHQgOjogcnVubmluZykgKHByZWQgYXZhaWxhYmxlKVxuICBpblxuICBsb29wIFtdIG1heF9jb25jdXJyZW5jeVxuXG5sZXQgcmVjIGZpbmRfcmVjIG5vZGUgZiBzID1cbiAgaWYgbm9kZSA9PSAhKHMubGFzdCkgdGhlblxuICAgIGZlZWQgcyA+Pj0gZnVuICgpIC0+IGZpbmRfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IGFzIG9wdCAtPlxuICAgICAgY29uc3VtZSBzIG5vZGU7XG4gICAgICBsZXQgdGVzdCA9IGYgeCBpblxuICAgICAgaWYgdGVzdCB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm4gb3B0XG4gICAgICBlbHNlXG4gICAgICAgIGZpbmRfcmVjIG5vZGUubmV4dCBmIHNcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZCBmIHMgPSBmaW5kX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgZmluZF9zX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX3NfcmVjIG5vZGUgZiBzXG4gIGVsc2VcbiAgICBtYXRjaCBub2RlLmRhdGEgd2l0aFxuICAgIHwgU29tZSB4IGFzIG9wdCAtPiBiZWdpblxuICAgICAgICBjb25zdW1lIHMgbm9kZTtcbiAgICAgICAgZiB4ID4+PSBmdW5jdGlvblxuICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICBMd3QucmV0dXJuIG9wdFxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgZmluZF9zX3JlYyBub2RlLm5leHQgZiBzXG4gICAgICBlbmRcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG5sZXQgZmluZF9zIGYgcyA9IGZpbmRfc19yZWMgcy5ub2RlIGYgc1xuXG5sZXQgcmVjIGZpbmRfbWFwX3JlYyBub2RlIGYgcyA9XG4gIGlmIG5vZGUgPT0gIShzLmxhc3QpIHRoZW5cbiAgICBmZWVkIHMgPj49IGZ1biAoKSAtPiBmaW5kX21hcF9yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHggPSBmIHggaW5cbiAgICAgIGlmIHggPSBOb25lIHRoZW5cbiAgICAgICAgZmluZF9tYXBfcmVjIG5vZGUubmV4dCBmIHNcbiAgICAgIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiB4XG4gICAgfCBOb25lIC0+XG4gICAgICBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbmRfbWFwIGYgcyA9IGZpbmRfbWFwX3JlYyBzLm5vZGUgZiBzXG5cbmxldCByZWMgZmluZF9tYXBfc19yZWMgbm9kZSBmIHMgPVxuICBpZiBub2RlID09ICEocy5sYXN0KSB0aGVuXG4gICAgZmVlZCBzID4+PSBmdW4gKCkgLT4gZmluZF9tYXBfc19yZWMgbm9kZSBmIHNcbiAgZWxzZVxuICAgIG1hdGNoIG5vZGUuZGF0YSB3aXRoXG4gICAgfCBTb21lIHggLT5cbiAgICAgIGNvbnN1bWUgcyBub2RlO1xuICAgICAgbGV0IHQgPSBmIHggaW5cbiAgICAgICh0ID4+PSBmdW5jdGlvblxuICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgZmluZF9tYXBfc19yZWMgbm9kZS5uZXh0IGYgc1xuICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICB0KVxuICAgIHwgTm9uZSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG5cbmxldCBmaW5kX21hcF9zIGYgcyA9IGZpbmRfbWFwX3NfcmVjIHMubm9kZSBmIHNcblxubGV0IGNvbWJpbmUgczEgczIgPVxuICBsZXQgbmV4dCAoKSA9XG4gICAgbGV0IHQxID0gZ2V0IHMxIGFuZCB0MiA9IGdldCBzMiBpblxuICAgIHQxID4+PSBmdW4gbjEgLT5cbiAgICB0MiA+Pj0gZnVuIG4yIC0+XG4gICAgbWF0Y2ggbjEsIG4yIHdpdGhcbiAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT5cbiAgICAgIEx3dC5yZXR1cm4gKFNvbWUoeDEsIHgyKSlcbiAgICB8IF8gLT5cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGFwcGVuZCBzMSBzMiA9XG4gIGxldCBjdXJyZW50X3MgPSByZWYgczEgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBsZXQgdCA9IGdldCAhY3VycmVudF9zIGluXG4gICAgdCA+Pj0gZnVuY3Rpb25cbiAgICB8IFNvbWUgXyAtPlxuICAgICAgdFxuICAgIHwgTm9uZSAtPlxuICAgICAgaWYgIWN1cnJlbnRfcyA9PSBzMiB0aGVuXG4gICAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICAgICAgZWxzZSBiZWdpblxuICAgICAgICBjdXJyZW50X3MgOj0gczI7XG4gICAgICAgIG5leHQgKClcbiAgICAgIGVuZFxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGNvbmNhdCBzX3RvcCA9XG4gIGxldCBjdXJyZW50X3MgPSByZWYgKGZyb20gKGZ1biAoKSAtPiBMd3QucmV0dXJuX25vbmUpKSBpblxuICBsZXQgcmVjIG5leHQgKCkgPVxuICAgIGxldCB0ID0gZ2V0ICFjdXJyZW50X3MgaW5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSBfIC0+XG4gICAgICB0XG4gICAgfCBOb25lIC0+XG4gICAgICBnZXQgc190b3AgPj49IGZ1bmN0aW9uXG4gICAgICB8IFNvbWUgcyAtPlxuICAgICAgICBjdXJyZW50X3MgOj0gcztcbiAgICAgICAgbmV4dCAoKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIEx3dC5yZXR1cm5fbm9uZVxuICBpblxuICBmcm9tIG5leHRcblxubGV0IGNob29zZSBzdHJlYW1zID1cbiAgbGV0IHNvdXJjZSBzID0gKHMsIGdldCBzID58PSBmdW4geCAtPiAocywgeCkpIGluXG4gIGxldCBzdHJlYW1zID0gcmVmIChMaXN0Lm1hcCBzb3VyY2Ugc3RyZWFtcykgaW5cbiAgbGV0IHJlYyBuZXh0ICgpID1cbiAgICBtYXRjaCAhc3RyZWFtcyB3aXRoXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gICAgfCBsIC0+XG4gICAgICBMd3QuY2hvb3NlIChMaXN0Lm1hcCBzbmQgbCkgPj49IGZ1biAocywgeCkgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZW1vdmVfYXNzcSBzIGwgaW5cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgc3RyZWFtcyA6PSBzb3VyY2UgcyA6OiBsO1xuICAgICAgICBMd3QucmV0dXJuIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBzdHJlYW1zIDo9IGw7XG4gICAgICAgIG5leHQgKClcbiAgaW5cbiAgZnJvbSBuZXh0XG5cbmxldCBwYXJzZSBzIGYgPVxuICAobWF0Y2ggcy5zb3VyY2Ugd2l0aFxuICAgfCBQdXNoX2JvdW5kZWQgXyAtPiBpbnZhbGlkX2FyZyBcIkx3dF9zdHJlYW0ucGFyc2VcIlxuICAgfCBGcm9tIF8gfCBGcm9tX2RpcmVjdCBfIHwgUHVzaCBfIC0+ICgpKTtcbiAgbGV0IG5vZGUgPSBzLm5vZGUgaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPiBmIHMpXG4gICAgKGZ1biBleG4gLT5cbiAgICAgICBzLm5vZGUgPC0gbm9kZTtcbiAgICAgICBMd3QuZmFpbCBleG4pXG5cbmxldCBoZXhkdW1wIHN0cmVhbSA9XG4gIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDgwIGFuZCBudW0gPSByZWYgMCBpblxuICBmcm9tIGJlZ2luIGZ1biBfIC0+XG4gICAgbmdldCAxNiBzdHJlYW0gPj49IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybl9ub25lXG4gICAgfCBsIC0+XG4gICAgICBCdWZmZXIuY2xlYXIgYnVmO1xuICAgICAgUHJpbnRmLmJwcmludGYgYnVmIFwiJTA4eHwgIFwiICFudW07XG4gICAgICBudW0gOj0gIW51bSArIDE2O1xuICAgICAgbGV0IHJlYyBieXRlcyBwb3MgPSBmdW5jdGlvblxuICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgYmxhbmtzIHBvc1xuICAgICAgICB8IHggOjogbCAtPlxuICAgICAgICAgIGlmIHBvcyA9IDggdGhlbiBCdWZmZXIuYWRkX2NoYXIgYnVmICcgJztcbiAgICAgICAgICBQcmludGYuYnByaW50ZiBidWYgXCIlMDJ4IFwiIChDaGFyLmNvZGUgeCk7XG4gICAgICAgICAgYnl0ZXMgKHBvcyArIDEpIGxcbiAgICAgIGFuZCBibGFua3MgcG9zID1cbiAgICAgICAgaWYgcG9zIDwgMTYgdGhlbiBiZWdpblxuICAgICAgICAgIGlmIHBvcyA9IDggdGhlblxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiICAgIFwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIFwiICAgXCI7XG4gICAgICAgICAgYmxhbmtzIChwb3MgKyAxKVxuICAgICAgICBlbmRcbiAgICAgIGluXG4gICAgICBieXRlcyAwIGw7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgXCIgfFwiO1xuICAgICAgTGlzdC5pdGVyIChmdW4gY2ggLT4gQnVmZmVyLmFkZF9jaGFyIGJ1ZiAoaWYgY2ggPj0gJ1xceDIwJyAmJiBjaCA8PSAnXFx4N2UnIHRoZW4gY2ggZWxzZSAnLicpKSBsO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIGJ1ZiAnfCc7XG4gICAgICBMd3QucmV0dXJuIChTb21lKEJ1ZmZlci5jb250ZW50cyBidWYpKVxuICBlbmRcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG4oKiogTW9kdWxlIFtMd3RfcmVzdWx0XTogZXhwbGljaXQgZXJyb3IgaGFuZGxpbmcgKilcblxub3BlbiBSZXN1bHRcblxudHlwZSAoKydhLCArJ2IpIHQgPSAoJ2EsICdiKSBSZXN1bHQudCBMd3QudFxuXG5sZXQgcmV0dXJuIHggPSBMd3QucmV0dXJuIChPayB4KVxubGV0IGZhaWwgZSA9IEx3dC5yZXR1cm4gKEVycm9yIGUpXG5cbmxldCBsaWZ0ID0gTHd0LnJldHVyblxubGV0IG9rIHggPSBMd3QubWFwIChmdW4geSAtPiBPayB5KSB4XG5sZXQgZXJyb3IgeCA9IEx3dC5tYXAgKGZ1biB5IC0+IEVycm9yIHkpIHhcblxubGV0IG1hcCBmIGUgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgfCBPayB4IC0+IE9rIChmIHgpKVxuICAgIGVcblxubGV0IG1hcF9lcnJvciBmIGUgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgKGYgZSlcbiAgICAgIHwgT2sgeCAtPiBPayB4KVxuICAgIGVcbmxldCBtYXBfZXJyIGYgZSA9IG1hcF9lcnJvciBmIGVcblxubGV0IGNhdGNoIGUgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IG9rIChlICgpKSlcbiAgICBmYWlsXG5cbmxldCBnZXRfZXhuIGUgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gTHd0LnJldHVybiB4XG4gICAgICB8IEVycm9yIGUgLT4gTHd0LmZhaWwgZSlcblxubGV0IGJpbmQgZSBmID1cbiAgTHd0LmJpbmQgZVxuICAgIChmdW5jdGlvblxuICAgICAgfCBFcnJvciBlIC0+IEx3dC5yZXR1cm4gKEVycm9yIGUpXG4gICAgICB8IE9rIHggLT4gZiB4KVxuICAgICAgXG5sZXQgYmluZF9lcnJvciBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgICB8IE9rIHggLT4gTHd0LnJldHVybiAoT2sgeCkpXG4gICAgICBcbmxldCBiaW5kX2x3dCBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gb2sgKGYgeClcbiAgICAgIHwgRXJyb3IgZSAtPiBmYWlsIGUpXG5cbmxldCBiaW5kX3Jlc3VsdCBlIGYgPVxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gRXJyb3IgZVxuICAgICAgfCBPayB4IC0+IGYgeClcbiAgICBlXG5cbmxldCBiaW5kX2x3dF9lcnJvciBlIGYgPVxuICBMd3QuYmluZCBlXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gTHd0LmJpbmQgKGYgZSkgZmFpbFxuICAgICAgfCBPayB4IC0+IHJldHVybiB4KVxubGV0IGJpbmRfbHd0X2VyciBlIGYgPSBiaW5kX2x3dF9lcnJvciBlIGZcblxubGV0IGJvdGggYSBiID1cbiAgbGV0IHMgPSByZWYgTm9uZSBpblxuICBsZXQgc2V0X29uY2UgZSA9XG4gICAgbWF0Y2ggIXMgd2l0aFxuICAgIHwgTm9uZSAtPiBzOj0gU29tZSBlXG4gICAgfCBTb21lIF8gLT4gKClcbiAgaW5cbiAgbGV0IChhLGIpID0gbWFwX2Vycm9yIHNldF9vbmNlIGEsbWFwX2Vycm9yIHNldF9vbmNlIGIgaW5cbiAgbGV0IHNvbWVfYXNzZXJ0ID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGUgLT4gRXJyb3IgZVxuICBpblxuICBMd3QubWFwXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHgsIE9rIHkgLT4gT2sgKHgseSlcbiAgICAgIHwgRXJyb3IgXywgT2sgX1xuICAgICAgfCBPayBfLEVycm9yIF9cbiAgICAgIHwgRXJyb3IgXywgRXJyb3IgXyAtPiBzb21lX2Fzc2VydCAhcylcbiAgICAoTHd0LmJvdGggYSBiKVxuXG5sZXQgaXRlciBmIHIgPVxuICBMd3QuYmluZCByXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IE9rIHggLT4gZiB4XG4gICAgICB8IEVycm9yIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgaXRlcl9lcnJvciBmIHIgPVxuICBMd3QuYmluZCByXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEVycm9yIGUgLT4gZiBlXG4gICAgICB8IE9rIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5tb2R1bGUgSW5maXggPSBzdHJ1Y3RcbiAgbGV0ICg+Pj0pID0gYmluZFxuICBsZXQgKD58PSkgZSBmID0gbWFwIGYgZVxuZW5kXG5cbm1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gIG1vZHVsZSBMZXRfc3ludGF4ID0gc3RydWN0XG4gICAgbGV0IHJldHVybiA9IHJldHVyblxuICAgIGxldCBtYXAgdCB+ZiA9IG1hcCBmIHRcbiAgICBsZXQgYmluZCB0IH5mID0gYmluZCB0IGZcbiAgICBsZXQgYm90aCA9IGJvdGhcbiAgICBtb2R1bGUgT3Blbl9vbl9yaHMgPSBzdHJ1Y3RcbiAgICBlbmRcbiAgZW5kXG5lbmRcblxubW9kdWxlIFN5bnRheCA9IHN0cnVjdFxuICBsZXQgKGxldCopID0gYmluZFxuICBsZXQgKGFuZCopID0gYm90aFxuXG4gIGxldCAobGV0KykgeCBmID0gbWFwIGYgeFxuICBsZXQgKGFuZCspID0gYm90aFxuZW5kXG5cbmluY2x1ZGUgSW5maXhcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPVxuc2lnXG4gIHR5cGUgdFxuICB2YWwgY29tcGFyZTogdCAtPiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSB0eXBlIFMgPVxuc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgdFxuICB2YWwgZW1wdHk6IHRcbiAgdmFsIGlzX2VtcHR5OiB0IC0+IGJvb2xcbiAgdmFsIGFkZDogZWx0IC0+IHQgLT4gdFxuICB2YWwgdW5pb246IHQgLT4gdCAtPiB0XG4gIHZhbCBmaW5kX21pbjogdCAtPiBlbHRcbiAgdmFsIGxvb2t1cF9taW46IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgcmVtb3ZlX21pbjogdCAtPiB0XG4gIHZhbCBzaXplOiB0IC0+IGludFxuZW5kXG5cbm1vZHVsZSBNYWtlKE9yZDogT3JkZXJlZFR5cGUpIDogKFMgd2l0aCB0eXBlIGVsdCA9IE9yZC50KSA9XG5zdHJ1Y3RcbiAgdHlwZSBlbHQgPSBPcmQudFxuXG4gIHR5cGUgdCA9IHRyZWUgbGlzdFxuICBhbmQgdHJlZSA9IE5vZGUgb2YgZWx0ICogaW50ICogdHJlZSBsaXN0XG5cbiAgbGV0IHJvb3QgKE5vZGUgKHgsIF8sIF8pKSA9IHhcbiAgbGV0IHJhbmsgKE5vZGUgKF8sIHIsIF8pKSA9IHJcbiAgbGV0IGxpbmsgKE5vZGUgKHgxLCByMSwgYzEpIGFzIHQxKSAoTm9kZSAoeDIsIHIyLCBjMikgYXMgdDIpID1cbiAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHgxIHgyIGluXG4gICAgaWYgYyA8PSAwIHRoZW4gTm9kZSAoeDEsIHIxICsgMSwgdDI6OmMxKSBlbHNlIE5vZGUoeDIsIHIyICsgMSwgdDE6OmMyKVxuICBsZXQgcmVjIGlucyB0ID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgIC0+XG4gICAgICBbdF1cbiAgICB8ICh0Jzo6XykgYXMgdHMgd2hlbiByYW5rIHQgPCByYW5rIHQnIC0+XG4gICAgICB0Ojp0c1xuICAgIHwgdCc6OnRzIC0+XG4gICAgICBpbnMgKGxpbmsgdCB0JykgdHNcblxuICBsZXQgZW1wdHkgPSBbXVxuICBsZXQgaXNfZW1wdHkgdHMgPSB0cyA9IFtdXG4gIGxldCBhZGQgeCB0cyA9IGlucyAoTm9kZSAoeCwgMCwgW10pKSB0c1xuICBsZXQgcmVjIHVuaW9uIHRzIHRzJyA9XG4gICAgbWF0Y2ggdHMsIHRzJyB3aXRoXG4gICAgICAoW10sIF8pIC0+IHRzJ1xuICAgIHwgKF8sIFtdKSAtPiB0c1xuICAgIHwgKHQxOjp0czEsIHQyOjp0czIpICAtPlxuICAgICAgaWYgcmFuayB0MSA8IHJhbmsgdDIgdGhlbiB0MSA6OiB1bmlvbiB0czEgKHQyOjp0czIpXG4gICAgICBlbHNlIGlmIHJhbmsgdDIgPCByYW5rIHQxIHRoZW4gdDIgOjogdW5pb24gKHQxOjp0czEpIHRzMlxuICAgICAgZWxzZSBpbnMgKGxpbmsgdDEgdDIpICh1bmlvbiB0czEgdHMyKVxuXG4gIGxldCByZWMgZmluZF9taW4gPVxuICAgIGZ1bmN0aW9uXG4gICAgICBbXSAgICAtPiByYWlzZSBOb3RfZm91bmRcbiAgICB8IFt0XSAgIC0+IHJvb3QgdFxuICAgIHwgdDo6dHMgLT5cbiAgICAgIGxldCB4ID0gZmluZF9taW4gdHMgaW5cbiAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgKHJvb3QgdCkgeCBpblxuICAgICAgaWYgYyA8IDAgdGhlbiByb290IHQgZWxzZSB4XG5cbiAgbGV0IHJlYyBsb29rdXBfbWluID1cbiAgICBmdW5jdGlvblxuICAgIHwgW10gICAgLT4gTm9uZVxuICAgIHwgW3RdICAgLT4gU29tZSAocm9vdCB0KVxuICAgIHwgdDo6dHMgLT5cbiAgICAgIG1hdGNoIGxvb2t1cF9taW4gdHMgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSB4IGFzIHJlc3VsdCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIChyb290IHQpIHggaW5cbiAgICAgICAgaWYgYyA8IDAgdGhlbiBTb21lIChyb290IHQpIGVsc2UgcmVzdWx0XG5cbiAgbGV0IHJlYyBnZXRfbWluID1cbiAgICBmdW5jdGlvblxuICAgICAgW10gICAgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBbdF0gICAtPiAodCwgW10pXG4gICAgfCB0Ojp0cyAtPlxuICAgICAgbGV0ICh0JywgdHMnKSA9IGdldF9taW4gdHMgaW5cbiAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgKHJvb3QgdCkgKHJvb3QgdCcpIGluXG4gICAgICBpZiBjIDwgMCB0aGVuICh0LCB0cykgZWxzZSAodCcsIHQ6OnRzJylcblxuICBsZXQgcmVtb3ZlX21pbiA9XG4gICAgZnVuY3Rpb25cbiAgICAgIFtdIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgIHwgdHMgLT5cbiAgICAgIGxldCAoTm9kZSAoXywgXywgYyksIHRzKSA9IGdldF9taW4gdHMgaW5cbiAgICAgIHVuaW9uIChMaXN0LnJldiBjKSB0c1xuXG4gIGxldCByZWMgc2l6ZSBsID1cbiAgICBsZXQgc2l6ZXRyZWUgKE5vZGUgKF8sXyx0bCkpID0gMSArIHNpemUgdGwgaW5cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIHMgdCAtPiBzICsgc2l6ZXRyZWUgdCkgMCBsXG5lbmRcbiIsIigqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEx3dCwgcmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlLiBTZWUgTElDRU5TRS5tZCBmb3JcbiAgIGRldGFpbHMsIG9yIHZpc2l0IGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9ibG9iL21hc3Rlci9MSUNFTlNFLm1kLiAqKVxuXG5cblxuKCogQSBzdXJ2ZXkgYW5kIG1lYXN1cmVtZW50cyBvZiBtb3JlIG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIGZvdW5kIGF0OlxuXG4gICAgaHR0cHM6Ly9qc3Rob21hcy5naXRodWIuaW8vbWFwLWNvbXBhcmlzb24uaHRtbFxuXG4gICBTZWUgZGlzY3Vzc2lvbiBpbiBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvcHVsbC8zNDcuICopXG5sZXQgdGFpbF9yZWN1cnNpdmVfbWFwIGYgbCA9XG4gIExpc3QucmV2IChMaXN0LnJldl9tYXAgZiBsKVxuXG5sZXQgdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2NcbiAgICB8IGhkOjp0bCAtPiAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pICgoZiBpIGhkKTo6YWNjKSAoaSArIDEpIHRsXG4gIGluXG4gIGlubmVyIFtdIDAgbFxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgcmVjIGl0ZXJfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fdW5pdFxuICB8IHggOjogbCAtPlxuICAgIEx3dC5hcHBseSBmIHggPj49IGZ1biAoKSAtPlxuICAgIGl0ZXJfcyBmIGxcblxubGV0IGl0ZXJfcCBmIGwgPVxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIEx3dC5qb2luIHRzXG5cbmxldCByZWMgaXRlcmlfcyBpIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybl91bml0XG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IChmIGkpIHggPj49IGZ1biAoKSAtPlxuICAgIGl0ZXJpX3MgKGkgKyAxKSBmIGxcblxubGV0IGl0ZXJpX3MgZiBsID0gaXRlcmlfcyAwIGYgbFxuXG5sZXQgaXRlcmlfcCBmIGwgPVxuICBsZXQgZicgaSA9IEx3dC5hcHBseSAoZiBpKSBpblxuICBsZXQgdHMgPSB0YWlsX3JlY3Vyc2l2ZV9tYXBpX3JldiBmJyBsIGluXG4gIEx3dC5qb2luIHRzXG5cbmxldCBtYXBfcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBMaXN0LnJldiBhY2MgfD4gTHd0LnJldHVyblxuICAgIHwgaGQ6OnRsIC0+XG4gICAgICBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuIHIgLT5cbiAgICAgIChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHI6OmFjYykgdGxcbiAgaW5cbiAgaW5uZXIgW10gbFxuXG5sZXQgcmVjIF9jb2xsZWN0X3JldiBhY2MgPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybiBhY2NcbiAgfCB0Ojp0cyAtPlxuICAgIHQgPj49IGZ1biBpIC0+XG4gICAgKF9jb2xsZWN0X3JldiBbQG9jYW1sLnRhaWxjYWxsXSkgKGk6OmFjYykgdHNcblxubGV0IG1hcF9wIGYgbCA9XG4gIGxldCB0cyA9IExpc3QucmV2X21hcCAoTHd0LmFwcGx5IGYpIGwgaW5cbiAgX2NvbGxlY3RfcmV2IFtdIHRzXG5cbmxldCBmaWx0ZXJfbWFwX3MgZiBsID1cbiAgbGV0IHJlYyBpbm5lciBhY2MgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IExpc3QucmV2IGFjYyB8PiBMd3QucmV0dXJuXG4gICAgfCBoZDo6dGwgLT5cbiAgICAgIEx3dC5hcHBseSBmIGhkID4+PSBmdW5jdGlvblxuICAgICAgfCBTb21lIHYgLT4gKGlubmVyIFtAb2NhbWwudGFpbGNhbGxdKSAodjo6YWNjKSB0bFxuICAgICAgfCBOb25lIC0+IChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgYWNjIHRsXG4gIGluXG4gIGlubmVyIFtdIGxcblxubGV0IGZpbHRlcl9tYXBfcCBmIGwgPVxuICBsZXQgcmVjIF9jb2xsZWN0X29wdGlvbmFsX3JldiBhY2MgPSBmdW5jdGlvblxuICB8IFtdICAgIC0+IEx3dC5yZXR1cm4gYWNjXG4gIHwgdDo6dHMgLT5cbiAgICB0ID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB2IC0+IChfY29sbGVjdF9vcHRpb25hbF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pICh2OjphY2MpIHRzXG4gICAgfCBOb25lIC0+IChfY29sbGVjdF9vcHRpb25hbF9yZXYgW0BvY2FtbC50YWlsY2FsbF0pIGFjYyB0c1xuICBpblxuICBsZXQgdHMgPSBMaXN0LnJldl9tYXAgKEx3dC5hcHBseSBmKSBsIGluXG4gIF9jb2xsZWN0X29wdGlvbmFsX3JldiBbXSB0c1xuXG5sZXQgbWFwaV9zIGYgbCA9XG4gIGxldCByZWMgaW5uZXIgYWNjIGkgPSBmdW5jdGlvblxuICAgIHwgW10gICAgIC0+IExpc3QucmV2IGFjYyB8PiBMd3QucmV0dXJuXG4gICAgfCBoZDo6dGwgLT5cbiAgICAgIEx3dC5hcHBseSAoZiBpKSBoZCA+Pj0gZnVuIHYgLT5cbiAgICAgIChpbm5lciBbQG9jYW1sLnRhaWxjYWxsXSkgKHY6OmFjYykgKGkrMSkgdGxcbiAgaW5cbiAgaW5uZXIgW10gMCBsXG5cbmxldCBtYXBpX3AgZiBsID1cbiAgbGV0IGYnIGkgPSBMd3QuYXBwbHkgKGYgaSkgaW5cbiAgbGV0IHRzID0gdGFpbF9yZWN1cnNpdmVfbWFwaV9yZXYgZicgbCBpblxuICBfY29sbGVjdF9yZXYgW10gdHNcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZF9zIGFjYyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm4gYWNjXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuIHggLT5cbiAgICByZXZfbWFwX2FwcGVuZF9zICh4IDo6IGFjYykgZiBsXG5cbmxldCByZXZfbWFwX3MgZiBsID1cbiAgcmV2X21hcF9hcHBlbmRfcyBbXSBmIGxcblxubGV0IHJlYyByZXZfbWFwX2FwcGVuZF9wIGFjYyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIGFjY1xuICB8IHggOjogbCAtPlxuICAgIHJldl9tYXBfYXBwZW5kX3BcbiAgICAgIChMd3QuYXBwbHkgZiB4ID4+PSBmdW4geCAtPlxuICAgICAgIGFjYyA+fD0gZnVuIGwgLT5cbiAgICAgICB4IDo6IGwpIGYgbFxuXG5sZXQgcmV2X21hcF9wIGYgbCA9XG4gIHJldl9tYXBfYXBwZW5kX3AgTHd0LnJldHVybl9uaWwgZiBsXG5cbmxldCByZWMgZm9sZF9sZWZ0X3MgZiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybiBhY2NcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgKGYgYWNjKSB4ID4+PSBmdW4gYWNjIC0+XG4gICAgKGZvbGRfbGVmdF9zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGFjYyBsXG5cbmxldCBmb2xkX3JpZ2h0X3MgZiBsIGFjYyA9XG4gIGxldCByZWMgaW5uZXIgZiBhID0gZnVuY3Rpb25cbiAgICB8IFtdICAgICAtPiBMd3QucmV0dXJuIGFcbiAgICB8IGhkOjp0bCAtPiAoTHd0LmFwcGx5IChmIGhkKSBhKSA+Pj0gZnVuIGEnIC0+XG4gICAgICAoaW5uZXIgW0BvY2FtbC50YWlsY2FsbF0pIGYgYScgdGxcbiAgaW5cbiAgaW5uZXIgZiBhY2MgKExpc3QucmV2IGwpXG5cbmxldCByZWMgZm9yX2FsbF9zIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LnJldHVybl90cnVlXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIChmb3JfYWxsX3MgW0BvY2FtbC50YWlsY2FsbF0pIGYgbFxuICAgIHwgZmFsc2UgLT5cbiAgICAgIEx3dC5yZXR1cm5fZmFsc2VcblxubGV0IGZvcl9hbGxfcCBmIGwgPVxuICBtYXBfcCBmIGwgPj49IGZ1biBibCAtPiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IHgpIGJsIHw+IEx3dC5yZXR1cm5cblxubGV0IHJlYyBleGlzdHNfcyBmIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5yZXR1cm5fZmFsc2VcbiAgfCB4IDo6IGwgLT5cbiAgICBMd3QuYXBwbHkgZiB4ID4+PSBmdW5jdGlvblxuICAgIHwgdHJ1ZSAtPlxuICAgICAgTHd0LnJldHVybl90cnVlXG4gICAgfCBmYWxzZSAtPlxuICAgICAgKGV4aXN0c19zIFtAb2NhbWwudGFpbGNhbGxdKSBmIGxcblxubGV0IGV4aXN0c19wIGYgbCA9XG4gIG1hcF9wIGYgbCA+Pj0gZnVuIGJsIC0+IExpc3QuZXhpc3RzIChmdW4geCAtPiB4KSBibCB8PiBMd3QucmV0dXJuXG5cbmxldCByZWMgZmluZF9zIGYgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LmZhaWwgTm90X2ZvdW5kXG4gIHwgeCA6OiBsIC0+XG4gICAgTHd0LmFwcGx5IGYgeCA+Pj0gZnVuY3Rpb25cbiAgICB8IHRydWUgLT5cbiAgICAgIEx3dC5yZXR1cm4geFxuICAgIHwgZmFsc2UgLT5cbiAgICAgIChmaW5kX3MgW0BvY2FtbC50YWlsY2FsbF0pIGYgbFxuXG5sZXQgX29wdGlvbmFsaXplIGYgeCA9XG4gIGYgeCA+Pj0gZnVuIGIgLT4gaWYgYiB0aGVuIEx3dC5yZXR1cm4gKFNvbWUgeCkgZWxzZSBMd3QucmV0dXJuX25vbmVcblxubGV0IGZpbHRlcl9zIGYgbCA9XG4gIGZpbHRlcl9tYXBfcyAoX29wdGlvbmFsaXplIGYpIGxcblxubGV0IGZpbHRlcl9wIGYgbCA9XG4gICBmaWx0ZXJfbWFwX3AgKF9vcHRpb25hbGl6ZSBmKSBsXG5cbmxldCBwYXJ0aXRpb25fcyBmIGwgPVxuICBsZXQgcmVjIGlubmVyIGFjYzEgYWNjMiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAgICAgLT4gTHd0LnJldHVybiAoTGlzdC5yZXYgYWNjMSwgTGlzdC5yZXYgYWNjMilcbiAgICB8IGhkOjp0bCAtPiBMd3QuYXBwbHkgZiBoZCA+Pj0gZnVuIGIgLT5cbiAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgaW5uZXIgKGhkOjphY2MxKSBhY2MyIHRsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpbm5lciBhY2MxIChoZDo6YWNjMikgdGxcbiAgaW5cbiAgaW5uZXIgW10gW10gbFxuXG5sZXQgcGFydGl0aW9uX3AgZiBsID1cbiAgbGV0IGcgeCA9IEx3dC5hcHBseSBmIHggPj49IGZ1biBiIC0+IEx3dC5yZXR1cm4gKGIsIHgpIGluXG4gIG1hcF9wIGcgbCA+Pj0gZnVuIHRsIC0+XG4gIGxldCBncm91cDEgPSB0YWlsX3JlY3Vyc2l2ZV9tYXAgc25kIEBAIExpc3QuZmlsdGVyIGZzdCB0bCBpblxuICBsZXQgZ3JvdXAyID1cbiAgICB0YWlsX3JlY3Vyc2l2ZV9tYXAgc25kIEBAIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgQEAgZnN0IHgpIHRsIGluXG4gIEx3dC5yZXR1cm4gKGdyb3VwMSwgZ3JvdXAyKVxuIiwiKCogVGhpcyBmaWxlIGlzIHBhcnQgb2YgTHd0LCByZWxlYXNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UuIFNlZSBMSUNFTlNFLm1kIGZvclxuICAgZGV0YWlscywgb3IgdmlzaXQgaHR0cHM6Ly9naXRodWIuY29tL29jc2lnZW4vbHd0L2Jsb2IvbWFzdGVyL0xJQ0VOU0UubWQuICopXG5cblxuXG4oKiBbTHd0X3NlcXVlbmNlXSBpcyBkZXByZWNhdGVkIOKAkyB3ZSBkb24ndCB3YW50IHVzZXJzIG91dHNpZGUgTHd0IHVzaW5nIGl0LlxuICAgSG93ZXZlciwgaXQgaXMgc3RpbGwgdXNlZCBpbnRlcm5hbGx5IGJ5IEx3dC4gU28sIGJyaWVmbHkgZGlzYWJsZSB3YXJuaW5nIDNcbiAgIChcImRlcHJlY2F0ZWRcIiksIGFuZCBjcmVhdGUgYSBsb2NhbCwgbm9uLWRlcHJlY2F0ZWQgYWxpYXMgZm9yXG4gICBbTHd0X3NlcXVlbmNlXSB0aGF0IGNhbiBiZSByZWZlcnJlZCB0byBieSB0aGUgcmVzdCBvZiB0aGUgY29kZSBpbiB0aGlzXG4gICBtb2R1bGUgd2l0aG91dCB0cmlnZ2VyaW5nIGFueSBtb3JlIHdhcm5pbmdzLiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItM1wiXVxubW9kdWxlIEx3dF9zZXF1ZW5jZSA9IEx3dF9zZXF1ZW5jZVxuW0BAQG9jYW1sLndhcm5pbmcgXCIrM1wiXVxuXG5vcGVuIEx3dC5JbmZpeFxuXG50eXBlICdhIHQgPSB7XG4gIGNyZWF0ZSA6IHVuaXQgLT4gJ2EgTHd0LnQ7XG4gICgqIENyZWF0ZSBhIG5ldyBwb29sIG1lbWJlci4gKilcbiAgY2hlY2sgOiAnYSAtPiAoYm9vbCAtPiB1bml0KSAtPiB1bml0O1xuICAoKiBDaGVjayB2YWxpZGl0eSBvZiBhIHBvb2wgbWVtYmVyIHdoZW4gdXNlIHJlc3VsdGVkIGluIGZhaWxlZCBwcm9taXNlLiAqKVxuICB2YWxpZGF0ZSA6ICdhIC0+IGJvb2wgTHd0LnQ7XG4gICgqIFZhbGlkYXRlIGFuIGV4aXN0aW5nIGZyZWUgcG9vbCBtZW1iZXIgYmVmb3JlIHVzZS4gKilcbiAgZGlzcG9zZSA6ICdhIC0+IHVuaXQgTHd0LnQ7XG4gICgqIERpc3Bvc2Ugb2YgYSBwb29sIG1lbWJlci4gKilcbiAgY2xlYXJlZCA6IGJvb2wgcmVmIHJlZjtcbiAgKCogSGF2ZSB0aGUgY3VycmVudCBwb29sIGVsZW1lbnRzIGJlZW4gY2xlYXJlZCBvdXQ/ICopXG4gIG1heCA6IGludDtcbiAgKCogU2l6ZSBvZiB0aGUgcG9vbC4gKilcbiAgbXV0YWJsZSBjb3VudCA6IGludDtcbiAgKCogTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBwb29sLiAqKVxuICBsaXN0IDogJ2EgUXVldWUudDtcbiAgKCogQXZhaWxhYmxlIHBvb2wgbWVtYmVycy4gKilcbiAgd2FpdGVycyA6ICdhIEx3dC51IEx3dF9zZXF1ZW5jZS50O1xuICAoKiBQcm9taXNlIHJlc29sdmVycyB3YWl0aW5nIGZvciBhIGZyZWUgbWVtYmVyLiAqKVxufVxuXG5sZXQgY3JlYXRlIG0gPyh2YWxpZGF0ZSA9IGZ1biBfIC0+IEx3dC5yZXR1cm5fdHJ1ZSkgPyhjaGVjayA9IGZ1biBfIGYgLT4gZiB0cnVlKSA/KGRpc3Bvc2UgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpIGNyZWF0ZSA9XG4gIHsgbWF4ID0gbTtcbiAgICBjcmVhdGUgPSBjcmVhdGU7XG4gICAgdmFsaWRhdGUgPSB2YWxpZGF0ZTtcbiAgICBjaGVjayA9IGNoZWNrO1xuICAgIGRpc3Bvc2UgPSBkaXNwb3NlO1xuICAgIGNsZWFyZWQgPSByZWYgKHJlZiBmYWxzZSk7XG4gICAgY291bnQgPSAwO1xuICAgIGxpc3QgPSBRdWV1ZS5jcmVhdGUgKCk7XG4gICAgd2FpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG4oKiBDcmVhdGUgYSBwb29sIG1lbWJlci4gKilcbmxldCBjcmVhdGVfbWVtYmVyIHAgPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICAgKCogTXVzdCBiZSBkb25lIGJlZm9yZSBwLmNyZWF0ZSB0byBwcmV2ZW50IG90aGVyIHJlc29sdmVycyBmcm9tXG4gICAgICAgICAgY3JlYXRpbmcgbmV3IG1lbWJlcnMgaWYgdGhlIGxpbWl0IGlzIHJlYWNoZWQuICopXG4gICAgICAgcC5jb3VudCA8LSBwLmNvdW50ICsgMTtcbiAgICAgICBwLmNyZWF0ZSAoKSlcbiAgICAoZnVuIGV4biAtPlxuICAgICAgICgqIENyZWF0aW9uIGZhaWxlZCwgc28gZG9uJ3QgaW5jcmVtZW50IGNvdW50LiAqKVxuICAgICAgIHAuY291bnQgPC0gcC5jb3VudCAtIDE7XG4gICAgICAgTHd0LmZhaWwgZXhuKVxuXG4oKiBSZWxlYXNlIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgcmVsZWFzZSBwIGMgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBwLndhaXRlcnMgd2l0aFxuICB8IFNvbWUgd2FrZW5lciAtPlxuICAgICgqIEEgcHJvbWlzZSByZXNvbHZlciBpcyB3YWl0aW5nLCBnaXZlIGl0IHRoZSBwb29sIG1lbWJlci4gKilcbiAgICBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgY1xuICB8IE5vbmUgLT5cbiAgICAoKiBObyBvbmUgaXMgd2FpdGluZywgcXVldWUgaXQuICopXG4gICAgUXVldWUucHVzaCBjIHAubGlzdFxuXG4oKiBEaXNwb3NlIG9mIGEgcG9vbCBtZW1iZXIuICopXG5sZXQgZGlzcG9zZSBwIGMgPVxuICBwLmRpc3Bvc2UgYyA+Pj0gZnVuICgpIC0+XG4gIHAuY291bnQgPC0gcC5jb3VudCAtIDE7XG4gIEx3dC5yZXR1cm5fdW5pdFxuXG4oKiBDcmVhdGUgYSBuZXcgbWVtYmVyIHdoZW4gb25lIGlzIHRocm93biBhd2F5LiAqKVxubGV0IHJlcGxhY2VfZGlzcG9zZWQgcCA9XG4gIG1hdGNoIEx3dF9zZXF1ZW5jZS50YWtlX29wdF9sIHAud2FpdGVycyB3aXRoXG4gIHwgTm9uZSAtPlxuICAgICgqIE5vIG9uZSBpcyB3YWl0aW5nLCBkbyBub3QgY3JlYXRlIGEgbmV3IG1lbWJlciB0byBhdm9pZFxuICAgICAgIGxvc2luZyBhbiBlcnJvciBpZiBjcmVhdGlvbiBmYWlscy4gKilcbiAgICAoKVxuICB8IFNvbWUgd2FrZW5lciAtPlxuICAgIEx3dC5vbl9hbnlcbiAgICAgIChMd3QuYXBwbHkgcC5jcmVhdGUgKCkpXG4gICAgICAoZnVuIGMgLT5cbiAgICAgICAgIEx3dC53YWtldXBfbGF0ZXIgd2FrZW5lciBjKVxuICAgICAgKGZ1biBleG4gLT5cbiAgICAgICAgICgqIENyZWF0aW9uIGZhaWxlZCwgbm90aWZ5IHRoZSB3YWl0ZXIgb2YgdGhlIGZhaWx1cmUuICopXG4gICAgICAgICBMd3Qud2FrZXVwX2xhdGVyX2V4biB3YWtlbmVyIGV4bilcblxuKCogVmVyaWZ5IGEgbWVtYmVyIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSB1c2luZyBpdC4gKilcbmxldCB2YWxpZGF0ZV9hbmRfcmV0dXJuIHAgYyA9XG4gIEx3dC50cnlfYmluZFxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgcC52YWxpZGF0ZSBjKVxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gY1xuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgKCogUmVtb3ZlIHRoaXMgbWVtYmVyIGFuZCBjcmVhdGUgYSBuZXcgb25lLiAqKVxuICAgICAgICAgIGRpc3Bvc2UgcCBjID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICBjcmVhdGVfbWVtYmVyIHApXG4gICAgICAoZnVuIGUgLT5cbiAgICAgICAgICgqIFZhbGlkYXRpb24gZmFpbGVkOiBjcmVhdGUgYSBuZXcgbWVtYmVyIGlmIGF0IGxlYXN0IG9uZVxuICAgICAgICAgICAgcmVzb2x2ZXIgaXMgd2FpdGluZy4gKilcbiAgICAgICAgIGRpc3Bvc2UgcCBjID4+PSBmdW4gKCkgLT5cbiAgICAgICAgIHJlcGxhY2VfZGlzcG9zZWQgcDtcbiAgICAgICAgIEx3dC5mYWlsIGUpXG5cbigqIEFjcXVpcmUgYSBwb29sIG1lbWJlci4gKilcbmxldCBhY3F1aXJlIHAgPVxuICBpZiBRdWV1ZS5pc19lbXB0eSBwLmxpc3QgdGhlblxuICAgICgqIE5vIG1vcmUgYXZhaWxhYmxlIG1lbWJlci4gKilcbiAgICBpZiBwLmNvdW50IDwgcC5tYXggdGhlblxuICAgICAgKCogTGltaXQgbm90IHJlYWNoZWQ6IGNyZWF0ZSBhIG5ldyBvbmUuICopXG4gICAgICBjcmVhdGVfbWVtYmVyIHBcbiAgICBlbHNlXG4gICAgICAoKiBMaW1pdCByZWFjaGVkOiB3YWl0IGZvciBhIGZyZWUgb25lLiAqKVxuICAgICAgKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBwLndhaXRlcnMgPj49IHZhbGlkYXRlX2FuZF9yZXR1cm4gcFxuICBlbHNlXG4gICAgKCogVGFrZSB0aGUgZmlyc3QgZnJlZSBtZW1iZXIgYW5kIHZhbGlkYXRlIGl0LiAqKVxuICAgIGxldCBjID0gUXVldWUudGFrZSBwLmxpc3QgaW5cbiAgICB2YWxpZGF0ZV9hbmRfcmV0dXJuIHAgY1xuXG4oKiBSZWxlYXNlIGEgbWVtYmVyIHdoZW4gdXNlIHJlc3VsdGVkIGluIGZhaWxlZCBwcm9taXNlIGlmIHRoZSBtZW1iZXJcbiAgIGlzIHN0aWxsIHZhbGlkLiAqKVxubGV0IGNoZWNrX2FuZF9yZWxlYXNlIHAgYyBjbGVhcmVkID1cbiAgbGV0IG9rID0gcmVmIGZhbHNlIGluXG4gIHAuY2hlY2sgYyAoZnVuIHJlc3VsdCAtPiBvayA6PSByZXN1bHQpO1xuICBpZiBjbGVhcmVkIHx8IG5vdCAhb2sgdGhlbiAoXG4gICAgKCogRWxlbWVudCBpcyBub3Qgb2sgb3IgdGhlIHBvb2wgd2FzIGNsZWFyZWQgLSBkaXNwb3NlIG9mIGl0ICopXG4gICAgZGlzcG9zZSBwIGNcbiAgKVxuICBlbHNlIChcbiAgICAoKiBFbGVtZW50IGlzIG9rIC0gcmVsZWFzZSBpdCBiYWNrIHRvIHRoZSBwb29sICopXG4gICAgcmVsZWFzZSBwIGM7XG4gICAgTHd0LnJldHVybl91bml0XG4gIClcblxubGV0IHVzZSBwIGYgPVxuICBhY3F1aXJlIHAgPj49IGZ1biBjIC0+XG4gICgqIENhcHR1cmUgdGhlIGN1cnJlbnQgY2xlYXJlZCBzdGF0ZSBzbyB3ZSBjYW4gc2VlIGlmIGl0IGNoYW5nZXMgd2hpbGUgdGhpc1xuICAgICBlbGVtZW50IGlzIGluIHVzZSAqKVxuICBsZXQgY2xlYXJlZCA9ICEocC5jbGVhcmVkKSBpblxuICBsZXQgcHJvbWlzZSA9XG4gICAgTHd0LmNhdGNoXG4gICAgICAoZnVuICgpIC0+IGYgYylcbiAgICAgIChmdW4gZSAtPlxuICAgICAgICAgY2hlY2tfYW5kX3JlbGVhc2UgcCBjICFjbGVhcmVkID4+PSBmdW4gKCkgLT5cbiAgICAgICAgIEx3dC5mYWlsIGUpXG4gIGluXG4gIHByb21pc2UgPj49IGZ1biBfIC0+XG4gIGlmICFjbGVhcmVkIHRoZW4gKFxuICAgICgqIHAgd2FzIGNsZWFyZWQgd2hpbGUgcHJvbWlzZSB3YXMgcmVzb2x2aW5nIC0gZGlzcG9zZSBvZiB0aGlzIGVsZW1lbnQgKilcbiAgICBkaXNwb3NlIHAgYyA+Pj0gZnVuICgpIC0+XG4gICAgcHJvbWlzZVxuICApXG4gIGVsc2UgKFxuICAgIHJlbGVhc2UgcCBjO1xuICAgIHByb21pc2VcbiAgKVxuXG5sZXQgY2xlYXIgcCA9XG4gIGxldCBlbGVtZW50cyA9IFF1ZXVlLmZvbGQgKGZ1biBsIGVsZW1lbnQgLT4gZWxlbWVudCA6OiBsKSBbXSBwLmxpc3QgaW5cbiAgUXVldWUuY2xlYXIgcC5saXN0O1xuICAoKiBJbmRpY2F0ZSB0byBhbnkgY3VycmVudGx5IGluLXVzZSBlbGVtZW50cyB0aGF0IHdlIGNsZWFyZWQgdGhlIHBvb2wgKilcbiAgbGV0IG9sZF9jbGVhcmVkID0gIShwLmNsZWFyZWQpIGluXG4gIG9sZF9jbGVhcmVkIDo9IHRydWU7XG4gIHAuY2xlYXJlZCA6PSByZWYgZmFsc2U7XG4gIEx3dF9saXN0Lml0ZXJfcyAoZGlzcG9zZSBwKSBlbGVtZW50c1xuXG5sZXQgd2FpdF9xdWV1ZV9sZW5ndGggcCA9IEx3dF9zZXF1ZW5jZS5sZW5ndGggcC53YWl0ZXJzXG4iLCIoKiBPQ2FtbCBwcm9taXNlIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvbHd0XG4gKiBDb3B5cmlnaHQgKGMpIDIwMDksIE1ldGF3ZWIgVGVjaG5vbG9naWVzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gKiBhcmUgbWV0OlxuICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcbiAqICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gKiAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWRcbiAqICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE1FVEFXRUIgVEVDSE5PTE9HSUVTIGBgQVMgSVMnJyBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSXG4gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBCRVxuICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUlxuICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0ZcbiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUlxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksXG4gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRVxuICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTlxuICogSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKilcblxuKCogVGhpcyBjb2RlIGlzIGFkYXB0ZWQgZnJvbVxuICAgaHR0cHM6Ly93ZWIuYXJjaGl2ZS5vcmcvd2ViLzIwMTAxMDAxMjE1NDI1L2h0dHA6Ly9laWdlbmNsYXNzLm9yZzo4MC9oaWtpL2xpZ2h0d2VpZ2h0LXRocmVhZHMtd2l0aC1sd3QuICopXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbnR5cGUgJ2EgdCA9IHtcbiAgbXV0YWJsZSBtdmFyX2NvbnRlbnRzIDogJ2Egb3B0aW9uO1xuICAoKiBDdXJyZW50IGNvbnRlbnRzICopXG5cbiAgd3JpdGVycyA6ICgnYSAqIHVuaXQgTHd0LnUpIEx3dF9zZXF1ZW5jZS50O1xuICAoKiBUaHJlYWRzIHdhaXRpbmcgdG8gcHV0IGEgdmFsdWUgKilcblxuICByZWFkZXJzIDogJ2EgTHd0LnUgTHd0X3NlcXVlbmNlLnQ7XG4gICgqIFRocmVhZHMgd2FpdGluZyBmb3IgYSB2YWx1ZSAqKVxufVxuXG5sZXQgY3JlYXRlX2VtcHR5ICgpID1cbiAgeyBtdmFyX2NvbnRlbnRzID0gTm9uZTtcbiAgICB3cml0ZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKTtcbiAgICByZWFkZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSB9XG5cbmxldCBjcmVhdGUgdiA9XG4gIHsgbXZhcl9jb250ZW50cyA9IFNvbWUgdjtcbiAgICB3cml0ZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKTtcbiAgICByZWFkZXJzID0gTHd0X3NlcXVlbmNlLmNyZWF0ZSAoKSB9XG5cbmxldCBwdXQgbXZhciB2ID1cbiAgbWF0Y2ggbXZhci5tdmFyX2NvbnRlbnRzIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgYmVnaW4gbWF0Y2ggTHd0X3NlcXVlbmNlLnRha2Vfb3B0X2wgbXZhci5yZWFkZXJzIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBtdmFyLm12YXJfY29udGVudHMgPC0gU29tZSB2XG4gICAgICB8IFNvbWUgdyAtPlxuICAgICAgICBMd3Qud2FrZXVwX2xhdGVyIHcgdlxuICAgIGVuZDtcbiAgICBMd3QucmV0dXJuX3VuaXRcbiAgfCBTb21lIF8gLT5cbiAgICBsZXQgKHJlcywgdykgPSBMd3QudGFzayAoKSBpblxuICAgIGxldCBub2RlID0gTHd0X3NlcXVlbmNlLmFkZF9yICh2LCB3KSBtdmFyLndyaXRlcnMgaW5cbiAgICBMd3Qub25fY2FuY2VsIHJlcyAoZnVuIF8gLT4gTHd0X3NlcXVlbmNlLnJlbW92ZSBub2RlKTtcbiAgICByZXNcblxubGV0IG5leHRfd3JpdGVyIG12YXIgPVxuICBtYXRjaCBMd3Rfc2VxdWVuY2UudGFrZV9vcHRfbCBtdmFyLndyaXRlcnMgd2l0aFxuICB8IFNvbWUodicsIHcpIC0+XG4gICAgbXZhci5tdmFyX2NvbnRlbnRzIDwtIFNvbWUgdic7XG4gICAgTHd0Lndha2V1cF9sYXRlciB3ICgpXG4gIHwgTm9uZSAtPlxuICAgIG12YXIubXZhcl9jb250ZW50cyA8LSBOb25lXG5cbmxldCB0YWtlX2F2YWlsYWJsZSBtdmFyID1cbiAgbWF0Y2ggbXZhci5tdmFyX2NvbnRlbnRzIHdpdGhcbiAgfCBTb21lIHYgLT5cbiAgICBuZXh0X3dyaXRlciBtdmFyO1xuICAgIFNvbWUgdlxuICB8IE5vbmUgLT5cbiAgICBOb25lXG5cbmxldCB0YWtlIG12YXIgPVxuICBtYXRjaCB0YWtlX2F2YWlsYWJsZSBtdmFyIHdpdGhcbiAgfCBTb21lIHYgLT4gTHd0LnJldHVybiB2XG4gIHwgTm9uZSAtPiAoTHd0LmFkZF90YXNrX3IgW0BvY2FtbC53YXJuaW5nIFwiLTNcIl0pIG12YXIucmVhZGVyc1xuXG5sZXQgaXNfZW1wdHkgbXZhciA9XG4gIG1hdGNoIG12YXIubXZhcl9jb250ZW50cyB3aXRoXG4gIHwgU29tZSBfIC0+IGZhbHNlXG4gIHwgTm9uZSAtPiB0cnVlXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbigqIFtMd3Rfc2VxdWVuY2VdIGlzIGRlcHJlY2F0ZWQg4oCTIHdlIGRvbid0IHdhbnQgdXNlcnMgb3V0c2lkZSBMd3QgdXNpbmcgaXQuXG4gICBIb3dldmVyLCBpdCBpcyBzdGlsbCB1c2VkIGludGVybmFsbHkgYnkgTHd0LiBTbywgYnJpZWZseSBkaXNhYmxlIHdhcm5pbmcgM1xuICAgKFwiZGVwcmVjYXRlZFwiKSwgYW5kIGNyZWF0ZSBhIGxvY2FsLCBub24tZGVwcmVjYXRlZCBhbGlhcyBmb3JcbiAgIFtMd3Rfc2VxdWVuY2VdIHRoYXQgY2FuIGJlIHJlZmVycmVkIHRvIGJ5IHRoZSByZXN0IG9mIHRoZSBjb2RlIGluIHRoaXNcbiAgIG1vZHVsZSB3aXRob3V0IHRyaWdnZXJpbmcgYW55IG1vcmUgd2FybmluZ3MuICopXG5bQEBAb2NhbWwud2FybmluZyBcIi0zXCJdXG5tb2R1bGUgTHd0X3NlcXVlbmNlID0gTHd0X3NlcXVlbmNlXG5bQEBAb2NhbWwud2FybmluZyBcIiszXCJdXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBsb2NrZWQgOiBib29sOyB3YWl0ZXJzIDogdW5pdCBMd3QudSBMd3Rfc2VxdWVuY2UudCAgfVxuXG5sZXQgY3JlYXRlICgpID0geyBsb2NrZWQgPSBmYWxzZTsgd2FpdGVycyA9IEx3dF9zZXF1ZW5jZS5jcmVhdGUgKCkgfVxuXG5sZXQgbG9jayBtID1cbiAgaWYgbS5sb2NrZWQgdGhlblxuICAgIChMd3QuYWRkX3Rhc2tfciBbQG9jYW1sLndhcm5pbmcgXCItM1wiXSkgbS53YWl0ZXJzXG4gIGVsc2UgYmVnaW5cbiAgICBtLmxvY2tlZCA8LSB0cnVlO1xuICAgIEx3dC5yZXR1cm5fdW5pdFxuICBlbmRcblxubGV0IHVubG9jayBtID1cbiAgaWYgbS5sb2NrZWQgdGhlbiBiZWdpblxuICAgIGlmIEx3dF9zZXF1ZW5jZS5pc19lbXB0eSBtLndhaXRlcnMgdGhlblxuICAgICAgbS5sb2NrZWQgPC0gZmFsc2VcbiAgICBlbHNlXG4gICAgICAoKiBXZSBkbyBub3QgdXNlIFtMd3Qud2FrZXVwXSBoZXJlIHRvIGF2b2lkIGEgc3RhY2sgb3ZlcmZsb3dcbiAgICAgICAgIHdoZW4gdW5sb2NraW5nIGEgbG90IG9mIHRocmVhZHMuICopXG4gICAgICBMd3Qud2FrZXVwX2xhdGVyIChMd3Rfc2VxdWVuY2UudGFrZV9sIG0ud2FpdGVycykgKClcbiAgZW5kXG5cbmxldCB3aXRoX2xvY2sgbSBmID1cbiAgbG9jayBtID4+PSBmdW4gKCkgLT5cbiAgTHd0LmZpbmFsaXplIGYgKGZ1biAoKSAtPiB1bmxvY2sgbTsgTHd0LnJldHVybl91bml0KVxuXG5sZXQgaXNfbG9ja2VkIG0gPSBtLmxvY2tlZFxubGV0IGlzX2VtcHR5IG0gPSBMd3Rfc2VxdWVuY2UuaXNfZW1wdHkgbS53YWl0ZXJzXG4iLCIoKiBPQ2FtbCBwcm9taXNlIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvbHd0XG4gKiBDb3B5cmlnaHQgKGMpIDIwMDksIE1ldGF3ZWIgVGVjaG5vbG9naWVzLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dFxuICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zXG4gKiBhcmUgbWV0OlxuICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHRcbiAqICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci5cbiAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmVcbiAqICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nXG4gKiAgICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWRcbiAqICAgICAgIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIE1FVEFXRUIgVEVDSE5PTE9HSUVTIGBgQVMgSVMnJyBBTkQgQU5ZXG4gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRVxuICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSXG4gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBNRVRBV0VCIFRFQ0hOT0xPR0lFUyBCRVxuICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUlxuICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0ZcbiAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUlxuICogQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksXG4gKiBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRVxuICogT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTlxuICogSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuXG4gKilcblxuKCogW0x3dF9zZXF1ZW5jZV0gaXMgZGVwcmVjYXRlZCDigJMgd2UgZG9uJ3Qgd2FudCB1c2VycyBvdXRzaWRlIEx3dCB1c2luZyBpdC5cbiAgIEhvd2V2ZXIsIGl0IGlzIHN0aWxsIHVzZWQgaW50ZXJuYWxseSBieSBMd3QuIFNvLCBicmllZmx5IGRpc2FibGUgd2FybmluZyAzXG4gICAoXCJkZXByZWNhdGVkXCIpLCBhbmQgY3JlYXRlIGEgbG9jYWwsIG5vbi1kZXByZWNhdGVkIGFsaWFzIGZvclxuICAgW0x3dF9zZXF1ZW5jZV0gdGhhdCBjYW4gYmUgcmVmZXJyZWQgdG8gYnkgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgaW4gdGhpc1xuICAgbW9kdWxlIHdpdGhvdXQgdHJpZ2dlcmluZyBhbnkgbW9yZSB3YXJuaW5ncy4gKilcbltAQEBvY2FtbC53YXJuaW5nIFwiLTNcIl1cbm1vZHVsZSBMd3Rfc2VxdWVuY2UgPSBMd3Rfc2VxdWVuY2VcbltAQEBvY2FtbC53YXJuaW5nIFwiKzNcIl1cblxudHlwZSAnYSB0ID0gJ2EgTHd0LnUgTHd0X3NlcXVlbmNlLnRcblxubGV0IGNyZWF0ZSA9IEx3dF9zZXF1ZW5jZS5jcmVhdGVcblxubGV0IHdhaXQgP211dGV4IGN2YXIgPVxuICBsZXQgd2FpdGVyID0gKEx3dC5hZGRfdGFza19yIFtAb2NhbWwud2FybmluZyBcIi0zXCJdKSBjdmFyIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbXV0ZXggd2l0aFxuICAgIHwgU29tZSBtIC0+IEx3dF9tdXRleC51bmxvY2sgbVxuICAgIHwgTm9uZSAtPiAoKVxuICBpblxuICBMd3QuZmluYWxpemVcbiAgICAoZnVuICgpIC0+IHdhaXRlcilcbiAgICAoZnVuICgpIC0+XG4gICAgICAgbWF0Y2ggbXV0ZXggd2l0aFxuICAgICAgIHwgU29tZSBtIC0+IEx3dF9tdXRleC5sb2NrIG1cbiAgICAgICB8IE5vbmUgLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2lnbmFsIGN2YXIgYXJnID1cbiAgdHJ5XG4gICAgTHd0Lndha2V1cF9sYXRlciAoTHd0X3NlcXVlbmNlLnRha2VfbCBjdmFyKSBhcmdcbiAgd2l0aCBMd3Rfc2VxdWVuY2UuRW1wdHkgLT5cbiAgICAoKVxuXG5sZXQgYnJvYWRjYXN0IGN2YXIgYXJnID1cbiAgbGV0IHdha2VuZXJzID0gTHd0X3NlcXVlbmNlLmZvbGRfciAoZnVuIHggbCAtPiB4IDo6IGwpIGN2YXIgW10gaW5cbiAgTHd0X3NlcXVlbmNlLml0ZXJfbm9kZV9sIEx3dF9zZXF1ZW5jZS5yZW1vdmUgY3ZhcjtcbiAgTGlzdC5pdGVyIChmdW4gd2FrZW5lciAtPiBMd3Qud2FrZXVwX2xhdGVyIHdha2VuZXIgYXJnKSB3YWtlbmVyc1xuXG5sZXQgYnJvYWRjYXN0X2V4biBjdmFyIGV4biA9XG4gIGxldCB3YWtlbmVycyA9IEx3dF9zZXF1ZW5jZS5mb2xkX3IgKGZ1biB4IGwgLT4geCA6OiBsKSBjdmFyIFtdIGluXG4gIEx3dF9zZXF1ZW5jZS5pdGVyX25vZGVfbCBMd3Rfc2VxdWVuY2UucmVtb3ZlIGN2YXI7XG4gIExpc3QuaXRlciAoZnVuIHdha2VuZXIgLT4gTHd0Lndha2V1cF9sYXRlcl9leG4gd2FrZW5lciBleG4pIHdha2VuZXJzXG4iLCIoKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBMd3QsIHJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4gU2VlIExJQ0VOU0UubWQgZm9yXG4gICBkZXRhaWxzLCBvciB2aXNpdCBodHRwczovL2dpdGh1Yi5jb20vb2NzaWdlbi9sd3QvYmxvYi9tYXN0ZXIvTElDRU5TRS5tZC4gKilcblxuXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgJ2EgZXZlbnQgPSAnYSBSZWFjdC5ldmVudFxudHlwZSAnYSBzaWduYWwgPSAnYSBSZWFjdC5zaWduYWxcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBSZWFjdC5FXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBMd3Qtc3BlY2lmaWMgdXRpbGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgZmluYWxpc2UgZiBfID0gZiAoKVxuXG4gIGxldCB3aXRoX2ZpbmFsaXNlciBmIGV2ZW50ID1cbiAgICBsZXQgciA9IHJlZiAoKSBpblxuICAgIEdjLmZpbmFsaXNlIChmaW5hbGlzZSBmKSByO1xuICAgIG1hcCAoZnVuIHggLT4gaWdub3JlIChTeXMub3BhcXVlX2lkZW50aXR5IHIpOyB4KSBldmVudFxuXG4gIGxldCBuZXh0IGV2ID1cbiAgICBsZXQgd2FpdGVyLCB3YWtlbmVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICBsZXQgZXYgPSBtYXAgKGZ1biB4IC0+IEx3dC53YWtldXAgd2FrZW5lciB4KSAob25jZSBldikgaW5cbiAgICBMd3Qub25fY2FuY2VsIHdhaXRlciAoZnVuICgpIC0+IHN0b3AgZXYpO1xuICAgIHdhaXRlclxuXG4gIGxldCBsaW1pdCBmIGUgPVxuICAgICgqIFRocmVhZCB3aGljaCBwcmV2ZW50cyBbZV0gZnJvbSBvY2N1cnJpbmcgd2hpbGUgaXQgaXMgc2xlZXBpbmcgKilcbiAgICBsZXQgbGltaXRlciA9IHJlZiBMd3QucmV0dXJuX3VuaXQgaW5cblxuICAgICgqIFRoZSBvY2N1cnJlbmNlIHRoYXQgaXMgZGVsYXllZCB1bnRpbCB0aGUgbGltaXRlciByZXR1cm5zLiAqKVxuICAgIGxldCBkZWxheWVkID0gcmVmIE5vbmUgaW5cblxuICAgICgqIFRoZSByZXN1bHRpbmcgZXZlbnQuICopXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBpZiBMd3QuaXNfc2xlZXBpbmcgIWxpbWl0ZXIgdGhlbiBiZWdpblxuICAgICAgICAgICAgICgqIFRoZSBsaW1pdGVyIGlzIHNsZWVwaW5nLCB3ZSBxdWV1ZSB0aGUgZXZlbnQgZm9yIGxhdGVyXG4gICAgICAgICAgICAgICAgZGVsaXZlcmluZy4gKilcbiAgICAgICAgICAgICBtYXRjaCAhZGVsYXllZCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIGNlbGwgLT5cbiAgICAgICAgICAgICAgICgqIEFuIG9jY3VycmVuY2UgaXMgYWxyZWFkeSBxdWV1ZWQsIHJlcGxhY2UgaXQuICopXG4gICAgICAgICAgICAgICBjZWxsIDo9IHg7XG4gICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICBsZXQgY2VsbCA9IHJlZiB4IGluXG4gICAgICAgICAgICAgICBkZWxheWVkIDo9IFNvbWUgY2VsbDtcbiAgICAgICAgICAgICAgIEx3dC5vbl9zdWNjZXNzICFsaW1pdGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgIGlmIEx3dC5pc19zbGVlcGluZyAhbGltaXRlciB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBsZXQgeCA9ICFjZWxsIGluXG4gICAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgbGltaXRlciA6PSBmICgpO1xuICAgICAgICAgICAgICAgICAgICBwdXNoIHgpO1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQgZWxzZSBiZWdpblxuICAgICAgICAgICAgICgqIFNldCB0aGUgbGltaXRlciBmb3IgZnV0dXJlIGV2ZW50cy4gKilcbiAgICAgICAgICAgICBsaW1pdGVyIDo9IGYgKCk7XG4gICAgICAgICAgICAgKCogU2VuZCB0aGUgb2NjdXJyZW5jZSBub3cuICopXG4gICAgICAgICAgICAgcHVzaCB4O1xuICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgZW5kKVxuICAgICAgICBlXG4gICAgaW5cblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGNhbmNlbF90aHJlYWQgdCAoKSA9XG4gICAgTHd0LmNhbmNlbCB0XG5cbiAgbGV0IGZyb20gZiA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IHJlYyBsb29wICgpID1cbiAgICAgIGYgKCkgPj49IGZ1biB4IC0+XG4gICAgICBwdXNoIHg7XG4gICAgICBsb29wICgpXG4gICAgaW5cbiAgICBsZXQgdCA9IEx3dC5wYXVzZSAoKSA+Pj0gbG9vcCBpblxuICAgIHdpdGhfZmluYWxpc2VyIChjYW5jZWxfdGhyZWFkIHQpIGV2ZW50XG5cbiAgbGV0IHRvX3N0cmVhbSBldmVudCA9XG4gICAgbGV0IHN0cmVhbSwgcHVzaCwgc2V0X3JlZiA9IEx3dF9zdHJlYW0uY3JlYXRlX3dpdGhfcmVmZXJlbmNlICgpIGluXG4gICAgc2V0X3JlZiAobWFwIChmdW4geCAtPiBwdXNoIChTb21lIHgpKSBldmVudCk7XG4gICAgc3RyZWFtXG5cbiAgbGV0IG9mX3N0cmVhbSBzdHJlYW0gPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCB0ID1cbiAgICAgIEx3dC5wYXVzZSAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICBMd3Rfc3RyZWFtLml0ZXIgKGZ1biB2IC0+IHRyeSBwdXNoIHYgd2l0aCBleG4gLT4gIUx3dC5hc3luY19leGNlcHRpb25faG9vayBleG4pIHN0cmVhbSBpblxuICAgIHdpdGhfZmluYWxpc2VyIChjYW5jZWxfdGhyZWFkIHQpIGV2ZW50XG5cbiAgbGV0IGRlbGF5IHRocmVhZCA9XG4gICAgbWF0Y2ggTHd0LnBvbGwgdGhyZWFkIHdpdGhcbiAgICB8IFNvbWUgZSAtPlxuICAgICAgZVxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGV2ZW50LCBzZW5kID0gY3JlYXRlICgpIGluXG4gICAgICBMd3Qub25fc3VjY2VzcyB0aHJlYWQgKGZ1biBlIC0+IHNlbmQgZTsgc3RvcCBldmVudCk7XG4gICAgICBzd2l0Y2ggbmV2ZXIgZXZlbnRcblxuICBsZXQga2VlcGVkID0gcmVmIFtdXG5cbiAgbGV0IGtlZXAgZSA9XG4gICAga2VlcGVkIDo9IG1hcCBpZ25vcmUgZSA6OiAha2VlcGVkXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBFdmVudCB0cmFuc2Zvcm1hdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgcnVuX3AgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4gdCAtPiBMd3Qub25fc3VjY2VzcyB0IChmdW4gdiAtPiBwdXNoIHYpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgcnVuX3MgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biB0IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiB0KSlcbiAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSkgZVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgbWFwX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW4gdiAtPiBwdXNoIHYpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgbWFwX3MgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpIGVcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGFwcF9wIGVmIGUgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3MgKGYgeCkgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChhcHAgKG1hcCAoZnVuIGYgeCAtPiAoZiwgeCkpIGVmKSBlKVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgYXBwX3MgZWYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIGZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChhcHAgKG1hcCAoZnVuIGYgeCAtPiAoZiwgeCkpIGVmKSBlKVxuICAgIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgZmlsdGVyX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW5jdGlvbiB0cnVlIC0+IHB1c2ggeCB8IGZhbHNlIC0+ICgpKTsgTm9uZSkgZSBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5cbiAgbGV0IGZpbHRlcl9zIGYgZSA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID0gZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmbWFwX3AgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IGZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChmIHgpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmbWFwX3MgZiBlID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpIChmdW5jdGlvbiBTb21lIHggLT4gcHVzaCB4IHwgTm9uZSAtPiAoKSk7IE5vbmUpIGUgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBkaWZmX3MgZiBlID1cbiAgICBsZXQgcHJldmlvdXMgPSByZWYgTm9uZSBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBtYXRjaCAhcHJldmlvdXMgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICBwcmV2aW91cyA6PSBTb21lIHg7XG4gICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICB8IFNvbWUgeSAtPlxuICAgICAgICAgICAgIHByZXZpb3VzIDo9IFNvbWUgeDtcbiAgICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHggeSkpXG4gICAgICAgICAgICAgICAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgICBOb25lKVxuICAgICAgICBlXG4gICAgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBhY2N1bV9zIGVmIGFjYyA9XG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4gZiAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgIWFjYykpIChmdW4geCAtPiBhY2MgOj0geDsgcHVzaCB4KTsgTm9uZSkgZWYgaW5cbiAgICBzZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBmb2xkX3MgZiBhY2MgZSA9XG4gICAgbGV0IGFjYyA9IHJlZiBhY2MgaW5cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBjcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBmbWFwIChmdW4geCAtPiBMd3Qub25fc3VjY2VzcyAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgIWFjYyB4KSkgKGZ1biB4IC0+IGFjYyA6PSB4OyBwdXNoIHgpOyBOb25lKSBlIGluXG4gICAgc2VsZWN0IFtpdGVyOyBldmVudF1cblxuICBsZXQgcmVjIHJldl9mb2xkIGYgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBMd3QucmV0dXJuIGFjY1xuICAgIHwgeCA6OiBsIC0+XG4gICAgICByZXZfZm9sZCBmIGFjYyBsID4+PSBmdW4gYWNjIC0+XG4gICAgICBmIGFjYyB4XG5cbiAgbGV0IG1lcmdlX3MgZiBhY2MgZWwgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IGNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBmbWFwXG4gICAgICAgIChmdW4gbCAtPlxuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gcmV2X2ZvbGQgZiBhY2MgbCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChtZXJnZSAoZnVuIGFjYyB4IC0+IHggOjogYWNjKSBbXSBlbClcbiAgICBpblxuICAgIHNlbGVjdCBbaXRlcjsgZXZlbnRdXG5lbmRcblxubW9kdWxlIFMgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBSZWFjdC5TXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBMd3Qtc3BlY2lmaWMgdXRpbGl0aWVzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgZmluYWxpc2UgZiBfID0gZiAoKVxuXG4gIGxldCB3aXRoX2ZpbmFsaXNlciBmIHNpZ25hbCA9XG4gICAgbGV0IHIgPSByZWYgKCkgaW5cbiAgICBHYy5maW5hbGlzZSAoZmluYWxpc2UgZikgcjtcbiAgICBtYXBcbiAgICAgIChmdW4geCAtPiBpZ25vcmUgKFN5cy5vcGFxdWVfaWRlbnRpdHkgcik7IHgpXG4gICAgICBzaWduYWxcblxuICBsZXQgbGltaXQgP2VxIGYgcyA9XG4gICAgKCogVGhyZWFkIHdoaWNoIHByZXZlbnQgW3NdIHRvIGNoYW5nZXMgd2hpbGUgaXQgaXMgc2xlZXBpbmcgKilcbiAgICBsZXQgbGltaXRlciA9IHJlZiAoZiAoKSkgaW5cblxuICAgICgqIFRoZSBvY2N1cnJlbmNlIHRoYXQgaXMgZGVsYXllZCB1bnRpbCB0aGUgbGltaXRlciByZXR1cm5zLiAqKVxuICAgIGxldCBkZWxheWVkID0gcmVmIE5vbmUgaW5cblxuICAgICgqIFRoZSByZXN1bHRpbmcgZXZlbnQuICopXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW4gYmVnaW5cbiAgICAgICAgICAgICAoKiBUaGUgbGltaXRlciBpcyBzbGVlcGluZywgd2UgcXVldWUgdGhlIGV2ZW50IGZvciBsYXRlclxuICAgICAgICAgICAgICAgIGRlbGl2ZXJpbmcuICopXG4gICAgICAgICAgICAgbWF0Y2ggIWRlbGF5ZWQgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBjZWxsIC0+XG4gICAgICAgICAgICAgICAoKiBBbiBvY2N1cnJlbmNlIGlzIGFscmVhZHkgcXVldWVkLCByZXBsYWNlIGl0LiAqKVxuICAgICAgICAgICAgICAgY2VsbCA6PSB4O1xuICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbGV0IGNlbGwgPSByZWYgeCBpblxuICAgICAgICAgICAgICAgZGVsYXllZCA6PSBTb21lIGNlbGw7XG4gICAgICAgICAgICAgICBMd3Qub25fc3VjY2VzcyAhbGltaXRlciAoZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgaWYgTHd0LmlzX3NsZWVwaW5nICFsaW1pdGVyIHRoZW5cbiAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGxldCB4ID0gIWNlbGwgaW5cbiAgICAgICAgICAgICAgICAgIGRlbGF5ZWQgOj0gTm9uZTtcbiAgICAgICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAgICAgIHB1c2ggeCk7XG4gICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgIGVuZCBlbHNlIGJlZ2luXG4gICAgICAgICAgICAgKCogU2V0IHRoZSBsaW1pdGVyIGZvciBmdXR1cmUgZXZlbnRzLiAqKVxuICAgICAgICAgICAgIGxpbWl0ZXIgOj0gZiAoKTtcbiAgICAgICAgICAgICAoKiBTZW5kIHRoZSBvY2N1cnJlbmNlIG5vdy4gKilcbiAgICAgICAgICAgICBwdXNoIHg7XG4gICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICBlbmQpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cblxuICAgIGhvbGQgP2VxICh2YWx1ZSBzKSAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSlcblxuICBsZXQga2VlcGVkID0gcmVmIFtdXG5cbiAgbGV0IGtlZXAgcyA9XG4gICAga2VlcGVkIDo9IG1hcCBpZ25vcmUgcyA6OiAha2VlcGVkXG5cbiAgKCogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgICAgfCBTaWduYWwgdHJhbnNmb3JtYXRpb25zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgKilcblxuICBsZXQgcnVuX3MgP2VxIHMgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHQgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHQpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHZhbHVlIHMpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIHggKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBtYXBfcyA/ZXEgZiBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgIEx3dC5vbl9zdWNjZXNzXG4gICAgICAgICAgICAgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuIHYgLT4gcHVzaCB2KTtcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAgKGNoYW5nZXMgcylcbiAgICBpblxuICAgIEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGFwcF9zID9lcSBzZiBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9XG4gICAgICBFLmZtYXBcbiAgICAgICAgKGZ1biAoZiwgeCkgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChFLmFwcCAoRS5tYXAgKGZ1biBmIHggLT4gKGYsIHgpKSAoY2hhbmdlcyBzZikpIChjaGFuZ2VzIHMpKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+ICh2YWx1ZSBzZikgKHZhbHVlIHMpKSA+Pj0gZnVuIHggLT5cbiAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZmlsdGVyX3MgP2VxIGYgaSBzID1cbiAgICBsZXQgZXZlbnQsIHB1c2ggPSBFLmNyZWF0ZSAoKSBpblxuICAgIGxldCBtdXRleCA9IEx3dF9tdXRleC5jcmVhdGUgKCkgaW5cbiAgICBsZXQgaXRlciA9IEUuZm1hcCAoZnVuIHggLT4gTHd0Lm9uX3N1Y2Nlc3MgKEx3dF9tdXRleC53aXRoX2xvY2sgbXV0ZXggKGZ1biAoKSAtPiBmIHgpKSAoZnVuY3Rpb24gdHJ1ZSAtPiBwdXNoIHggfCBmYWxzZSAtPiAoKSk7IE5vbmUpIChjaGFuZ2VzIHMpIGluXG4gICAgbGV0IHggPSB2YWx1ZSBzIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkgPj49IGZ1bmN0aW9uXG4gICAgfCB0cnVlIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcbiAgICB8IGZhbHNlIC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSBpIChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcblxuICBsZXQgZm1hcF9zID9lcSBmIGkgcyA9XG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPSBFLmZtYXAgKGZ1biB4IC0+IEx3dC5vbl9zdWNjZXNzIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4KSkgKGZ1bmN0aW9uIFNvbWUgeCAtPiBwdXNoIHggfCBOb25lIC0+ICgpKTsgTm9uZSkgKGNoYW5nZXMgcykgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW5jdGlvblxuICAgIHwgU29tZSB4IC0+XG4gICAgICBMd3QucmV0dXJuIChob2xkID9lcSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSlcbiAgICB8IE5vbmUgLT5cbiAgICAgIEx3dC5yZXR1cm4gKGhvbGQgP2VxIGkgKEUuc2VsZWN0IFtpdGVyOyBldmVudF0pKVxuXG4gIGxldCBkaWZmX3MgZiBzID1cbiAgICBsZXQgcHJldmlvdXMgPSByZWYgKHZhbHVlIHMpIGluXG4gICAgbGV0IGV2ZW50LCBwdXNoID0gRS5jcmVhdGUgKCkgaW5cbiAgICBsZXQgbXV0ZXggPSBMd3RfbXV0ZXguY3JlYXRlICgpIGluXG4gICAgbGV0IGl0ZXIgPVxuICAgICAgRS5mbWFwXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICBsZXQgeSA9ICFwcmV2aW91cyBpblxuICAgICAgICAgICBwcmV2aW91cyA6PSB4O1xuICAgICAgICAgICBMd3Qub25fc3VjY2Vzc1xuICAgICAgICAgICAgIChMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiB4IHkpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XVxuXG4gIGxldCBzYW1wbGVfcyBmIGUgcyA9XG4gICAgRS5tYXBfcyAoZnVuIHggLT4gZiB4ICh2YWx1ZSBzKSkgZVxuXG4gIGxldCBhY2N1bV9zID9lcSBlZiBpID1cbiAgICBob2xkID9lcSBpIChFLmFjY3VtX3MgZWYgaSlcblxuICBsZXQgZm9sZF9zID9lcSBmIGkgZSA9XG4gICAgaG9sZCA/ZXEgaSAoRS5mb2xkX3MgZiBpIGUpXG5cbiAgbGV0IHJlYyByZXZfZm9sZCBmIGFjYyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgTHd0LnJldHVybiBhY2NcbiAgICB8IHggOjogbCAtPlxuICAgICAgcmV2X2ZvbGQgZiBhY2MgbCA+Pj0gZnVuIGFjYyAtPlxuICAgICAgZiBhY2MgeFxuXG4gIGxldCBtZXJnZV9zID9lcSBmIGFjYyBzbCA9XG4gICAgbGV0IHMgPSBtZXJnZSAoZnVuIGFjYyB4IC0+IHggOjogYWNjKSBbXSBzbCBpblxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIGwgLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjIGwpKVxuICAgICAgICAgICAgIChmdW4gdiAtPiBwdXNoIHYpO1xuICAgICAgICAgICBOb25lKVxuICAgICAgICAoY2hhbmdlcyBzKVxuICAgIGluXG4gICAgTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IHJldl9mb2xkIGYgYWNjICh2YWx1ZSBzKSkgPj49IGZ1biB4IC0+XG4gICAgTHd0LnJldHVybiAoaG9sZCA/ZXEgeCAoRS5zZWxlY3QgW2l0ZXI7IGV2ZW50XSkpXG5cbiAgbGV0IGwxX3MgP2VxIGYgczEgPVxuICAgIG1hcF9zID9lcSBmIHMxXG5cbiAgbGV0IGwyX3MgP2VxIGYgczEgczIgPVxuICAgICgqIFNvbWUgZGV0YWlscyBhYm91dCB0aGUgdXNlIG9mIFtmdW4gXyBfIC0+IGZhbHNlXSBvblxuICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9vY3NpZ2VuL2x3dC9wdWxsLzg5MyNwdWxscmVxdWVzdHJldmlldy03ODMwODM0OTYgKilcbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyKSAtPiBmIHgxIHgyKSAobDIgfmVxOihmdW4gXyBfIC0+IGZhbHNlKSAoZnVuIHgxIHgyIC0+ICh4MSwgeDIpKSBzMSBzMilcblxuICBsZXQgbDNfcyA/ZXEgZiBzMSBzMiBzMyA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMpIC0+IGYgeDEgeDIgeDMpIChsMyB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMtPiAoeDEsIHgyLCB4MykpIHMxIHMyIHMzKVxuXG4gIGxldCBsNF9zID9lcSBmIHMxIHMyIHMzIHM0ID1cbiAgICBtYXBfcyA/ZXEgKGZ1biAoeDEsIHgyLCB4MywgeDQpIC0+IGYgeDEgeDIgeDMgeDQpIChsNCB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQtPiAoeDEsIHgyLCB4MywgeDQpKSBzMSBzMiBzMyBzNClcblxuICBsZXQgbDVfcyA/ZXEgZiBzMSBzMiBzMyBzNCBzNSA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0LCB4NSkgLT4gZiB4MSB4MiB4MyB4NCB4NSkgKGw1IH5lcTooZnVuIF8gXyAtPiBmYWxzZSkgKGZ1biB4MSB4MiB4MyB4NCB4NS0+ICh4MSwgeDIsIHgzLCB4NCwgeDUpKSBzMSBzMiBzMyBzNCBzNSlcblxuICBsZXQgbDZfcyA/ZXEgZiBzMSBzMiBzMyBzNCBzNSBzNiA9XG4gICAgbWFwX3MgP2VxIChmdW4gKHgxLCB4MiwgeDMsIHg0LCB4NSwgeDYpIC0+IGYgeDEgeDIgeDMgeDQgeDUgeDYpIChsNiB+ZXE6KGZ1biBfIF8gLT4gZmFsc2UpIChmdW4geDEgeDIgeDMgeDQgeDUgeDYtPiAoeDEsIHgyLCB4MywgeDQsIHg1LCB4NikpIHMxIHMyIHMzIHM0IHM1IHM2KVxuXG4gICgqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgIHwgTW9uYWRpYyBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rICopXG5cbiAgbGV0IHJldHVybiA9XG4gICAgY29uc3RcblxuICBsZXQgYmluZF9zID9lcSBzIGYgPVxuICAgIGxldCBldmVudCwgcHVzaCA9IEUuY3JlYXRlICgpIGluXG4gICAgbGV0IG11dGV4ID0gTHd0X211dGV4LmNyZWF0ZSAoKSBpblxuICAgIGxldCBpdGVyID1cbiAgICAgIEUuZm1hcFxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgTHd0Lm9uX3N1Y2Nlc3NcbiAgICAgICAgICAgICAoTHd0X211dGV4LndpdGhfbG9jayBtdXRleCAoZnVuICgpIC0+IGYgeCkpXG4gICAgICAgICAgICAgKGZ1biB2IC0+IHB1c2ggdik7XG4gICAgICAgICAgIE5vbmUpXG4gICAgICAgIChjaGFuZ2VzIHMpXG4gICAgaW5cbiAgICBMd3RfbXV0ZXgud2l0aF9sb2NrIG11dGV4IChmdW4gKCkgLT4gZiAodmFsdWUgcykpID4+PSBmdW4geCAtPlxuICAgIEx3dC5yZXR1cm4gKHN3aXRjaCA/ZXEgKGhvbGQgfmVxOiggPT0gKSB4IChFLnNlbGVjdCBbaXRlcjsgZXZlbnRdKSkpXG5lbmRcbiIsIigqIGdlbmVyYXRlZCBieSBkdW5lICopXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5JbXBvcnQgKilcbm1vZHVsZSBJbXBvcnQgPSBKc19vZl9vY2FtbF9sd3RfX0ltcG9ydFxuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2ZpbGUgKilcbm1vZHVsZSBMd3RfZmlsZSA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2ZpbGVcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcyAqKVxubW9kdWxlIEx3dF9qcyA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzXG5cbigqKiBAY2Fub25pY2FsIEpzX29mX29jYW1sX2x3dC5Md3RfanNfZXZlbnRzICopXG5tb2R1bGUgTHd0X2pzX2V2ZW50cyA9IEpzX29mX29jYW1sX2x3dF9fTHd0X2pzX2V2ZW50c1xuXG4oKiogQGNhbm9uaWNhbCBKc19vZl9vY2FtbF9sd3QuTHd0X2pzb25wICopXG5tb2R1bGUgTHd0X2pzb25wID0gSnNfb2Zfb2NhbWxfbHd0X19Md3RfanNvbnBcblxuKCoqIEBjYW5vbmljYWwgSnNfb2Zfb2NhbWxfbHd0Lkx3dF94bWxIdHRwUmVxdWVzdCAqKVxubW9kdWxlIEx3dF94bWxIdHRwUmVxdWVzdCA9IEpzX29mX29jYW1sX2x3dF9fTHd0X3htbEh0dHBSZXF1ZXN0XG5cbm1vZHVsZSBKc19vZl9vY2FtbF9sd3RfXyA9IHN0cnVjdCBlbmRcbltAQGRlcHJlY2F0ZWQgXCJ0aGlzIG1vZHVsZSBpcyBzaGFkb3dlZFwiXVxuIiwiKCogSnNfb2Zfb2NhbWxcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBQb2x5ID0gc3RydWN0XG4gIGV4dGVybmFsICggPCApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWxlc3N0aGFuXCJcblxuICBleHRlcm5hbCAoIDw9ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbGVzc2VxdWFsXCJcblxuICBleHRlcm5hbCAoIDw+ICkgOiAnYSAtPiAnYSAtPiBib29sID0gXCIlbm90ZXF1YWxcIlxuXG4gIGV4dGVybmFsICggPSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcblxuICBleHRlcm5hbCAoID4gKSA6ICdhIC0+ICdhIC0+IGJvb2wgPSBcIiVncmVhdGVydGhhblwiXG5cbiAgZXh0ZXJuYWwgKCA+PSApIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWdyZWF0ZXJlcXVhbFwiXG5cbiAgZXh0ZXJuYWwgY29tcGFyZSA6ICdhIC0+ICdhIC0+IGludCA9IFwiJWNvbXBhcmVcIlxuXG4gIGV4dGVybmFsIGVxdWFsIDogJ2EgLT4gJ2EgLT4gYm9vbCA9IFwiJWVxdWFsXCJcbmVuZFxuXG5tb2R1bGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZSA9IHN0cnVjdFxuICBsZXQgKCA8ICkgKHggOiBpbnQpIHkgPSB4IDwgeVxuXG4gIGxldCAoIDw9ICkgKHggOiBpbnQpIHkgPSB4IDw9IHlcblxuICBsZXQgKCA8PiApICh4IDogaW50KSB5ID0geCA8PiB5XG5cbiAgbGV0ICggPSApICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgKCA+ICkgKHggOiBpbnQpIHkgPSB4ID4geVxuXG4gIGxldCAoID49ICkgKHggOiBpbnQpIHkgPSB4ID49IHlcblxuICBsZXQgY29tcGFyZSAoeCA6IGludCkgeSA9IGNvbXBhcmUgeCB5XG5cbiAgbGV0IGVxdWFsICh4IDogaW50KSB5ID0geCA9IHlcblxuICBsZXQgbWF4ICh4IDogaW50KSB5ID0gaWYgeCA+PSB5IHRoZW4geCBlbHNlIHlcblxuICBsZXQgbWluICh4IDogaW50KSB5ID0gaWYgeCA8PSB5IHRoZW4geCBlbHNlIHlcbmVuZFxuXG5tb2R1bGUgU3RyaW5nID0gc3RydWN0XG4gIGluY2x1ZGUgU3RyaW5nXG5cbiAgbGV0IGVxdWFsICh4IDogc3RyaW5nKSAoeSA6IHN0cmluZykgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbm1vZHVsZSBDaGFyID0gc3RydWN0XG4gIGluY2x1ZGUgQ2hhclxuXG4gIGxldCBlcXVhbCAoeCA6IGNoYXIpICh5IDogY2hhcikgPSBQb2x5LmVxdWFsIHggeVxuZW5kXG5cbmluY2x1ZGUgSW50X3JlcGxhY2VfcG9seW1vcnBoaWNfY29tcGFyZVxuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gSnNcbm9wZW4gWG1sSHR0cFJlcXVlc3Rcbm9wZW4hIEltcG9ydFxuXG5sZXQgZW5jb2RlX3VybCBsID1cbiAgU3RyaW5nLmNvbmNhdFxuICAgIFwiJlwiXG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICB8IG5hbWUsIGBTdHJpbmcgcyAtPiBVcmwudXJsZW5jb2RlIG5hbWUgXiBcIj1cIiBeIFVybC51cmxlbmNvZGUgKHRvX3N0cmluZyBzKVxuICAgICAgICAgfCBuYW1lLCBgRmlsZSBzIC0+IFVybC51cmxlbmNvZGUgbmFtZSBeIFwiPVwiIF4gVXJsLnVybGVuY29kZSAodG9fc3RyaW5nIHMjIy5uYW1lKSlcbiAgICAgICBsKVxuXG4oKiBIaWdoZXIgbGV2ZWwgaW50ZXJmYWNlOiAqKVxuXG50eXBlICdyZXNwb25zZSBnZW5lcmljX2h0dHBfZnJhbWUgPVxuICB7IHVybCA6IHN0cmluZ1xuICA7IGNvZGUgOiBpbnRcbiAgOyBoZWFkZXJzIDogc3RyaW5nIC0+IHN0cmluZyBvcHRpb25cbiAgOyBjb250ZW50IDogJ3Jlc3BvbnNlXG4gIDsgY29udGVudF94bWwgOiB1bml0IC0+IERvbS5lbGVtZW50IERvbS5kb2N1bWVudCB0IG9wdGlvblxuICB9XG4oKiogdHlwZSBvZiB0aGUgaHR0cCBoZWFkZXJzICopXG5cbnR5cGUgaHR0cF9mcmFtZSA9IHN0cmluZyBnZW5lcmljX2h0dHBfZnJhbWVcblxuZXhjZXB0aW9uIFdyb25nX2hlYWRlcnMgb2YgKGludCAqIChzdHJpbmcgLT4gc3RyaW5nIG9wdGlvbikpXG5cbmxldCBkZWZhdWx0X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEpzLk9wdC5jYXNlIHJlcSMjLnJlc3BvbnNlVGV4dCAoZnVuICgpIC0+IFwiXCIpIChmdW4geCAtPiBKcy50b19zdHJpbmcgeClcbiAgOyBjb250ZW50X3htbCA9XG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgIG1hdGNoIEpzLk9wdC50b19vcHRpb24gcmVxIyMucmVzcG9uc2VYTUwgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZG9jIC0+IGlmIEpzLnNvbWUgZG9jIyMuZG9jdW1lbnRFbGVtZW50ID09IEpzLm51bGwgdGhlbiBOb25lIGVsc2UgU29tZSBkb2MpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCB0ZXh0X3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEpzLk9wdC5jYXNlIHJlcSMjLnJlc3BvbnNlVGV4dCAoZnVuICgpIC0+IEpzLnN0cmluZyBcIlwiKSAoZnVuIHggLT4geClcbiAgOyBjb250ZW50X3htbCA9IChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKVxuICA7IGhlYWRlcnNcbiAgfVxuXG5sZXQgZG9jdW1lbnRfcmVzcG9uc2UgdXJsIGNvZGUgaGVhZGVycyByZXEgPVxuICB7IHVybFxuICA7IGNvZGVcbiAgOyBjb250ZW50ID0gRmlsZS5Db2VyY2VUby5kb2N1bWVudCByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBqc29uX3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uanNvbiByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBibG9iX3Jlc3BvbnNlIHVybCBjb2RlIGhlYWRlcnMgcmVxID1cbiAgeyB1cmxcbiAgOyBjb2RlXG4gIDsgY29udGVudCA9IEZpbGUuQ29lcmNlVG8uYmxvYiByZXEjIy5yZXNwb25zZVxuICA7IGNvbnRlbnRfeG1sID0gKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpXG4gIDsgaGVhZGVyc1xuICB9XG5cbmxldCBhcnJheWJ1ZmZlcl9yZXNwb25zZSB1cmwgY29kZSBoZWFkZXJzIHJlcSA9XG4gIHsgdXJsXG4gIDsgY29kZVxuICA7IGNvbnRlbnQgPSBGaWxlLkNvZXJjZVRvLmFycmF5QnVmZmVyIHJlcSMjLnJlc3BvbnNlXG4gIDsgY29udGVudF94bWwgPSAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSlcbiAgOyBoZWFkZXJzXG4gIH1cblxubGV0IGhhc19nZXRfYXJncyB1cmwgPVxuICB0cnlcbiAgICBpZ25vcmUgKFN0cmluZy5pbmRleCB1cmwgJz8nKTtcbiAgICB0cnVlXG4gIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG5cbmxldCBwZXJmb3JtX3Jhd1xuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgPyhjaGVja19oZWFkZXJzID0gZnVuIF8gXyAtPiB0cnVlKVxuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/Y29udGVudHNcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgKHR5cGUgcmVzcHR5cGUpXG4gICAgfihyZXNwb25zZV90eXBlIDogcmVzcHR5cGUgcmVzcG9uc2UpXG4gICAgdXJsID1cbiAgbGV0IGNvbnRlbnRzX25vcm1hbGl6YXRpb24gPSBmdW5jdGlvblxuICAgIHwgYFBPU1RfZm9ybSBhcmdzIC0+XG4gICAgICAgIGxldCBvbmx5X3N0cmluZ3MgPVxuICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICB8IF8sIGBTdHJpbmcgXyAtPiB0cnVlXG4gICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgIGFyZ3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGZvcm1fY29udGVudHMgPVxuICAgICAgICAgIGlmIG9ubHlfc3RyaW5ncyB0aGVuIGBGaWVsZHMgKHJlZiBbXSkgZWxzZSBGb3JtLmVtcHR5X2Zvcm1fY29udGVudHMgKClcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gKG5hbWUsIHZhbHVlKSAtPiBGb3JtLmFwcGVuZCBmb3JtX2NvbnRlbnRzIChuYW1lLCB2YWx1ZSkpIGFyZ3M7XG4gICAgICAgIGBGb3JtX2NvbnRlbnRzIGZvcm1fY29udGVudHNcbiAgICB8IChgU3RyaW5nIF8gfCBgRm9ybV9jb250ZW50cyBfKSBhcyB4IC0+IHhcbiAgICB8IGBCbG9iIGIgLT4gYEJsb2IgKGIgOiAjRmlsZS5ibG9iIEpzLnQgOj4gRmlsZS5ibG9iIEpzLnQpXG4gIGluXG4gIGxldCBjb250ZW50cyA9XG4gICAgbWF0Y2ggY29udGVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGMgLT4gU29tZSAoY29udGVudHNfbm9ybWFsaXphdGlvbiBjKVxuICBpblxuICBsZXQgbWV0aG9kX3RvX3N0cmluZyBtID1cbiAgICBtYXRjaCBtIHdpdGhcbiAgICB8IGBHRVQgLT4gXCJHRVRcIlxuICAgIHwgYFBPU1QgLT4gXCJQT1NUXCJcbiAgICB8IGBIRUFEIC0+IFwiSEVBRFwiXG4gICAgfCBgUFVUIC0+IFwiUFVUXCJcbiAgICB8IGBERUxFVEUgLT4gXCJERUxFVEVcIlxuICAgIHwgYE9QVElPTlMgLT4gXCJPUFRJT05TXCJcbiAgICB8IGBQQVRDSCAtPiBcIlBBVENIXCJcbiAgaW5cbiAgbGV0IG1ldGhvZF8sIGNvbnRlbnRfdHlwZSA9XG4gICAgbGV0IG92ZXJyaWRlX21ldGhvZCBtID1cbiAgICAgIG1hdGNoIG92ZXJyaWRlX21ldGhvZCB3aXRoXG4gICAgICB8IE5vbmUgLT4gbVxuICAgICAgfCBTb21lIHYgLT4gbWV0aG9kX3RvX3N0cmluZyB2XG4gICAgaW5cbiAgICBsZXQgb3ZlcnJpZGVfY29udGVudF90eXBlIGMgPVxuICAgICAgbWF0Y2ggY29udGVudF90eXBlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBTb21lIGNcbiAgICAgIHwgU29tZSBfIC0+IGNvbnRlbnRfdHlwZVxuICAgIGluXG4gICAgbWF0Y2ggY29udGVudHMgd2l0aFxuICAgIHwgTm9uZSAtPiBvdmVycmlkZV9tZXRob2QgXCJHRVRcIiwgY29udGVudF90eXBlXG4gICAgfCBTb21lIChgRm9ybV9jb250ZW50cyBmb3JtKSAtPiAoXG4gICAgICAgIG1hdGNoIGZvcm0gd2l0aFxuICAgICAgICB8IGBGaWVsZHMgX3N0cmluZ3MgLT5cbiAgICAgICAgICAgICggb3ZlcnJpZGVfbWV0aG9kIFwiUE9TVFwiXG4gICAgICAgICAgICAsIG92ZXJyaWRlX2NvbnRlbnRfdHlwZSBcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFwiIClcbiAgICAgICAgfCBgRm9ybURhdGEgXyAtPiBvdmVycmlkZV9tZXRob2QgXCJQT1NUXCIsIGNvbnRlbnRfdHlwZSlcbiAgICB8IFNvbWUgKGBTdHJpbmcgXyB8IGBCbG9iIF8pIC0+IG92ZXJyaWRlX21ldGhvZCBcIlBPU1RcIiwgY29udGVudF90eXBlXG4gIGluXG4gIGxldCB1cmwgPVxuICAgIGlmIFBvbHkuKGdldF9hcmdzID0gW10pXG4gICAgdGhlbiB1cmxcbiAgICBlbHNlIHVybCBeIChpZiBoYXNfZ2V0X2FyZ3MgdXJsIHRoZW4gXCImXCIgZWxzZSBcIj9cIikgXiBVcmwuZW5jb2RlX2FyZ3VtZW50cyBnZXRfYXJnc1xuICBpblxuICBsZXQgKHJlcyA6IHJlc3B0eXBlIGdlbmVyaWNfaHR0cF9mcmFtZSBMd3QudCksIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgcmVxID0gY3JlYXRlICgpIGluXG4gIHJlcSMjX29wZW4gKEpzLnN0cmluZyBtZXRob2RfKSAoSnMuc3RyaW5nIHVybCkgSnMuX3RydWU7XG4gIChtYXRjaCBvdmVycmlkZV9taW1lX3R5cGUgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIG1pbWVfdHlwZSAtPiByZXEjI292ZXJyaWRlTWltZVR5cGUgKEpzLnN0cmluZyBtaW1lX3R5cGUpKTtcbiAgKG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICB8IEFycmF5QnVmZmVyIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJhcnJheWJ1ZmZlclwiXG4gIHwgQmxvYiAtPiByZXEjIy5yZXNwb25zZVR5cGUgOj0gSnMuc3RyaW5nIFwiYmxvYlwiXG4gIHwgRG9jdW1lbnQgLT4gcmVxIyMucmVzcG9uc2VUeXBlIDo9IEpzLnN0cmluZyBcImRvY3VtZW50XCJcbiAgfCBKU09OIC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJqc29uXCJcbiAgfCBUZXh0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJ0ZXh0XCJcbiAgfCBEZWZhdWx0IC0+IHJlcSMjLnJlc3BvbnNlVHlwZSA6PSBKcy5zdHJpbmcgXCJcIik7XG4gIChtYXRjaCB3aXRoX2NyZWRlbnRpYWxzIHdpdGhcbiAgfCBTb21lIGMgLT4gcmVxIyMud2l0aENyZWRlbnRpYWxzIDo9IEpzLmJvb2wgY1xuICB8IE5vbmUgLT4gKCkpO1xuICAobWF0Y2ggY29udGVudF90eXBlIHdpdGhcbiAgfCBTb21lIGNvbnRlbnRfdHlwZSAtPlxuICAgICAgcmVxIyNzZXRSZXF1ZXN0SGVhZGVyIChKcy5zdHJpbmcgXCJDb250ZW50LXR5cGVcIikgKEpzLnN0cmluZyBjb250ZW50X3R5cGUpXG4gIHwgXyAtPiAoKSk7XG4gIExpc3QuaXRlciAoZnVuIChuLCB2KSAtPiByZXEjI3NldFJlcXVlc3RIZWFkZXIgKEpzLnN0cmluZyBuKSAoSnMuc3RyaW5nIHYpKSBoZWFkZXJzO1xuICBsZXQgaGVhZGVycyBzID1cbiAgICBPcHQuY2FzZVxuICAgICAgKHJlcSMjZ2V0UmVzcG9uc2VIZWFkZXIgKEpzLmJ5dGVzdHJpbmcgcykpXG4gICAgICAoZnVuICgpIC0+IE5vbmUpXG4gICAgICAoZnVuIHYgLT4gU29tZSAoSnMudG9fc3RyaW5nIHYpKVxuICBpblxuICBsZXQgZG9fY2hlY2tfaGVhZGVycyA9XG4gICAgbGV0IHN0ID0gcmVmIGBOb3RfeWV0IGluXG4gICAgZnVuICgpIC0+XG4gICAgICBpZiBQb2x5Lighc3QgPSBgTm90X3lldClcbiAgICAgIHRoZW5cbiAgICAgICAgaWYgY2hlY2tfaGVhZGVycyByZXEjIy5zdGF0dXMgaGVhZGVyc1xuICAgICAgICB0aGVuIHN0IDo9IGBQYXNzZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgTHd0Lndha2V1cF9leG4gdyAoV3JvbmdfaGVhZGVycyAocmVxIyMuc3RhdHVzLCBoZWFkZXJzKSk7XG4gICAgICAgICAgc3QgOj0gYEZhaWxlZDtcbiAgICAgICAgICByZXEjI2Fib3J0KTtcbiAgICAgIFBvbHkuKCFzdCA8PiBgRmFpbGVkKVxuICBpblxuICByZXEjIy5vbnJlYWR5c3RhdGVjaGFuZ2UgOj1cbiAgICBKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPlxuICAgICAgICBtYXRjaCByZXEjIy5yZWFkeVN0YXRlIHdpdGhcbiAgICAgICAgKCogSUUgZG9lc24ndCBoYXZlIHRoZSBzYW1lIHNlbWFudGljcyBmb3IgSEVBREVSU19SRUNFSVZFRC5cbiAgICAgICAgICAgICBzbyB3ZSB3YWl0IHRpbCBMT0FESU5HIHRvIGNoZWNrIGhlYWRlcnMuIFNlZTpcbiAgICAgICAgICAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvbXM1MzQzNjEodj12cy44NSkuYXNweCAqKVxuICAgICAgICB8IEhFQURFUlNfUkVDRUlWRUQgd2hlbiBub3QgRG9tX2h0bWwub25JRSAtPiBpZ25vcmUgKGRvX2NoZWNrX2hlYWRlcnMgKCkpXG4gICAgICAgIHwgTE9BRElORyB3aGVuIERvbV9odG1sLm9uSUUgLT4gaWdub3JlIChkb19jaGVja19oZWFkZXJzICgpKVxuICAgICAgICB8IERPTkUgLT5cbiAgICAgICAgICAgICgqIElmIHdlIGRpZG4ndCBjYXRjaCBhIHByZXZpb3VzIGV2ZW50LCB3ZSBjaGVjayB0aGUgaGVhZGVyLiAqKVxuICAgICAgICAgICAgaWYgZG9fY2hlY2tfaGVhZGVycyAoKVxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2UgOiByZXNwdHlwZSBnZW5lcmljX2h0dHBfZnJhbWUgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlc3BvbnNlX3R5cGUgd2l0aFxuICAgICAgICAgICAgICAgIHwgQXJyYXlCdWZmZXIgLT4gYXJyYXlidWZmZXJfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgQmxvYiAtPiBibG9iX3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IERvY3VtZW50IC0+IGRvY3VtZW50X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgICB8IEpTT04gLT4ganNvbl9yZXNwb25zZSB1cmwgcmVxIyMuc3RhdHVzIGhlYWRlcnMgcmVxXG4gICAgICAgICAgICAgICAgfCBUZXh0IC0+IHRleHRfcmVzcG9uc2UgdXJsIHJlcSMjLnN0YXR1cyBoZWFkZXJzIHJlcVxuICAgICAgICAgICAgICAgIHwgRGVmYXVsdCAtPiBkZWZhdWx0X3Jlc3BvbnNlIHVybCByZXEjIy5zdGF0dXMgaGVhZGVycyByZXFcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0Lndha2V1cCB3IHJlc3BvbnNlXG4gICAgICAgIHwgXyAtPiAoKSk7XG4gIChtYXRjaCBwcm9ncmVzcyB3aXRoXG4gIHwgU29tZSBwcm9ncmVzcyAtPlxuICAgICAgcmVxIyMub25wcm9ncmVzcyA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgIHByb2dyZXNzIGUjIy5sb2FkZWQgZSMjLnRvdGFsO1xuICAgICAgICAgICAgSnMuX3RydWUpXG4gIHwgTm9uZSAtPiAoKSk7XG4gIE9wdGRlZi5pdGVyIHJlcSMjLnVwbG9hZCAoZnVuIHVwbG9hZCAtPlxuICAgICAgbWF0Y2ggdXBsb2FkX3Byb2dyZXNzIHdpdGhcbiAgICAgIHwgU29tZSB1cGxvYWRfcHJvZ3Jlc3MgLT5cbiAgICAgICAgICB1cGxvYWQjIy5vbnByb2dyZXNzIDo9XG4gICAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIGUgLT5cbiAgICAgICAgICAgICAgICB1cGxvYWRfcHJvZ3Jlc3MgZSMjLmxvYWRlZCBlIyMudG90YWw7XG4gICAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICB8IE5vbmUgLT4gKCkpO1xuICAobWF0Y2ggY29udGVudHMgd2l0aFxuICB8IE5vbmUgLT4gcmVxIyNzZW5kIEpzLm51bGxcbiAgfCBTb21lIChgRm9ybV9jb250ZW50cyAoYEZpZWxkcyBsKSkgLT4gcmVxIyNzZW5kIChKcy5zb21lIChzdHJpbmcgKGVuY29kZV91cmwgIWwpKSlcbiAgfCBTb21lIChgRm9ybV9jb250ZW50cyAoYEZvcm1EYXRhIGYpKSAtPiByZXEjI3NlbmRfZm9ybURhdGEgZlxuICB8IFNvbWUgKGBTdHJpbmcgcykgLT4gcmVxIyNzZW5kIChKcy5zb21lIChKcy5zdHJpbmcgcykpXG4gIHwgU29tZSAoYEJsb2IgYikgLT4gcmVxIyNzZW5kX2Jsb2IgYik7XG4gIEx3dC5vbl9jYW5jZWwgcmVzIChmdW4gKCkgLT4gcmVxIyNhYm9ydCk7XG4gIHJlc1xuXG5sZXQgcGVyZm9ybV9yYXdfdXJsXG4gICAgPyhoZWFkZXJzID0gW10pXG4gICAgP2NvbnRlbnRfdHlwZVxuICAgID8oZ2V0X2FyZ3MgPSBbXSlcbiAgICA/Y2hlY2tfaGVhZGVyc1xuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/Y29udGVudHNcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgdXJsID1cbiAgcGVyZm9ybV9yYXdcbiAgICB+aGVhZGVyc1xuICAgID9jb250ZW50X3R5cGVcbiAgICB+Z2V0X2FyZ3NcbiAgICA/Y29udGVudHNcbiAgICA/Y2hlY2tfaGVhZGVyc1xuICAgID9wcm9ncmVzc1xuICAgID91cGxvYWRfcHJvZ3Jlc3NcbiAgICA/b3ZlcnJpZGVfbWltZV90eXBlXG4gICAgP292ZXJyaWRlX21ldGhvZFxuICAgID93aXRoX2NyZWRlbnRpYWxzXG4gICAgfnJlc3BvbnNlX3R5cGU6RGVmYXVsdFxuICAgIHVybFxuXG5sZXQgcGVyZm9ybVxuICAgID8oaGVhZGVycyA9IFtdKVxuICAgID9jb250ZW50X3R5cGVcbiAgICA/KGdldF9hcmdzID0gW10pXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP2NvbnRlbnRzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIHVybCA9XG4gIHBlcmZvcm1fcmF3XG4gICAgfmhlYWRlcnNcbiAgICA/Y29udGVudF90eXBlXG4gICAgfmdldF9hcmdzXG4gICAgP2NvbnRlbnRzXG4gICAgP2NoZWNrX2hlYWRlcnNcbiAgICA/cHJvZ3Jlc3NcbiAgICA/dXBsb2FkX3Byb2dyZXNzXG4gICAgP292ZXJyaWRlX21pbWVfdHlwZVxuICAgID9vdmVycmlkZV9tZXRob2RcbiAgICA/d2l0aF9jcmVkZW50aWFsc1xuICAgIH5yZXNwb25zZV90eXBlOkRlZmF1bHRcbiAgICAoVXJsLnN0cmluZ19vZl91cmwgdXJsKVxuXG5sZXQgZ2V0IHMgPSBwZXJmb3JtX3Jhd191cmwgc1xuIiwiKCogSnNfb2Zfb2NhbWwgbGlicmFyeVxuICogaHR0cDovL3d3dy5vY3NpZ2VuLm9yZy9qc19vZl9vY2FtbC9cbiAqIENvcHlyaWdodCAoQykgMjAxMCBKw6lyw7RtZSBWb3VpbGxvblxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4hIEltcG9ydFxuXG5sZXQgc2xlZXAgZCA9XG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGlkID0gRG9tX2h0bWwuc2V0VGltZW91dCAoTHd0Lndha2V1cCB3KSAoZCAqLiAxMDAwLikgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IChmdW4gKCkgLT4gRG9tX2h0bWwuY2xlYXJUaW1lb3V0IGlkKTtcbiAgdFxuXG5sZXQgeWllbGQgKCkgPSBzbGVlcCAwLlxuXG5sZXQgd2FrZXVwID0gZnVuY3Rpb25cbiAgfCAxIC0+XG4gICAgICBpZ25vcmVcbiAgICAgICAgKERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dCAoSnMud3JhcF9jYWxsYmFjayBMd3Qud2FrZXVwX3BhdXNlZCkgKEpzLmZsb2F0IDAuKSlcbiAgfCBfIC0+ICgpXG5cbmxldCAoKSA9IEx3dC5yZWdpc3Rlcl9wYXVzZV9ub3RpZmllciB3YWtldXBcblxubGV0IHByZXJyX3N0cmluZyBzID0gRmlyZWJ1Zy5jb25zb2xlIyNsb2cgKEpzLnN0cmluZyBzKVxuXG5sZXQgXyA9XG4gIEx3dC5hc3luY19leGNlcHRpb25faG9vayA6PVxuICAgIGZ1biBleG4gLT5cbiAgICAgIHByZXJyX3N0cmluZyBcIkV4Y2VwdGlvbiBkdXJpbmcgTHd0LmFzeW5jOiBcIjtcbiAgICAgIHByZXJyX3N0cmluZyAoUHJpbnRleGMudG9fc3RyaW5nIGV4bik7XG4gICAgICBQcmludGV4Yy5wcmludF9iYWNrdHJhY2Ugc3RkZXJyXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDE0IEh1Z28gSGV1emFyZFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0IHJlYyByYW5kb21faWRlbnRpZmllciBzaXplID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIHNpemUgaW5cbiAgZm9yIF9pID0gMCB0byBzaXplIC0gMSBkb1xuICAgIEJ1ZmZlci5hZGRfY2hhciBiIChDaGFyLmNociAoOTcgKyBSYW5kb20uaW50IDI2KSlcbiAgZG9uZTtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgYiBpblxuICBpZiBKcy5PcHRkZWYudGVzdCAoSnMuVW5zYWZlLmdldCBEb21faHRtbC53aW5kb3cgKEpzLnN0cmluZyBzKSlcbiAgdGhlbiAoKiBuYW1lIGFscmVhZHkgaW4gdXNlLCBjaG9vc2UgYW5vdGhlciBvbmUqKVxuICAgIHJhbmRvbV9pZGVudGlmaWVyIHNpemVcbiAgZWxzZSBzXG5cbmxldCByYXdfY2FsbCBuYW1lIHVyaSBlcnJvcl9jYiB1c2VyX2NiID1cbiAgbGV0IHNjcmlwdCA9IERvbV9odG1sLihjcmVhdGVTY3JpcHQgZG9jdW1lbnQpIGluXG4gIGxldCBmaW5hbGl6ZSAoKSA9XG4gICAgSnMuVW5zYWZlLmRlbGV0ZSBEb21faHRtbC53aW5kb3cgKEpzLnN0cmluZyBuYW1lKTtcbiAgICBKcy5PcHQuaXRlciBzY3JpcHQjIy5wYXJlbnROb2RlIChmdW4gcGFyZW50IC0+IERvbS5yZW1vdmVDaGlsZCBwYXJlbnQgc2NyaXB0KVxuICBpblxuICBsZXQgZXhlY3V0ZWQgPSByZWYgZmFsc2UgaW5cbiAgSnMuVW5zYWZlLnNldFxuICAgIERvbV9odG1sLndpbmRvd1xuICAgIChKcy5zdHJpbmcgbmFtZSlcbiAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIHggLT5cbiAgICAgICAgIGV4ZWN1dGVkIDo9IHRydWU7XG4gICAgICAgICBmaW5hbGl6ZSAoKTtcbiAgICAgICAgIHVzZXJfY2IgeCkpO1xuICBzY3JpcHQjIy5zcmMgOj0gSnMuc3RyaW5nIHVyaTtcbiAgc2NyaXB0IyMuX3R5cGUgOj0gSnMuc3RyaW5nIFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gIHNjcmlwdCMjLmFzeW5jIDo9IEpzLl90cnVlO1xuICAoKEpzLlVuc2FmZS5jb2VyY2Ugc2NyaXB0KSMjLm9uZXJyb3JcbiAgOj0gZnVuIHggLT5cbiAgZmluYWxpemUgKCk7XG4gIGVycm9yX2NiIHgpO1xuICAoKEpzLlVuc2FmZS5jb2VyY2Ugc2NyaXB0KSMjLm9ubG9hZFxuICA6PSBmdW4geCAtPlxuICBMd3QuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgTHd0LmJpbmQgKEx3dF9qcy5zbGVlcCAxLikgKGZ1biAoKSAtPlxuICAgICAgICAgIGlmICFleGVjdXRlZFxuICAgICAgICAgIHRoZW4gTHd0LnJldHVybl91bml0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBGaXJlYnVnLmNvbnNvbGUjI3dhcm5cbiAgICAgICAgICAgICAgKEpzLnN0cmluZyBcIkpzb25wOiBzY3JpcHQgbG9hZGVkIGJ1dCBjYWxsYmFjayBub3QgZXhlY3V0ZWRcIik7XG4gICAgICAgICAgICBmaW5hbGl6ZSAoKTtcbiAgICAgICAgICAgIGVycm9yX2NiIHg7XG4gICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpKSkpO1xuICBsZXQgaW5pdCAoKSA9IGlnbm9yZSAoRG9tLmFwcGVuZENoaWxkIERvbV9odG1sLmRvY3VtZW50IyMuYm9keSBzY3JpcHQpIGluXG4gIGluaXQsIGZpbmFsaXplXG5cbmxldCBjYWxsXyBwcmVmaXggbWFrZV91cmkgZXJyb3JfY2IgdXNlcl9jYiA9XG4gIGxldCBuYW1lID0gcHJlZml4IF4gcmFuZG9tX2lkZW50aWZpZXIgMTAgaW5cbiAgbGV0IHVyaSA9IG1ha2VfdXJpIG5hbWUgaW5cbiAgcmF3X2NhbGwgbmFtZSB1cmkgZXJyb3JfY2IgdXNlcl9jYlxuXG5sZXQgY2FsbF9jdXN0b21fdXJsID90aW1lb3V0ID8ocHJlZml4ID0gXCJcIikgbWFrZV91cmkgPVxuICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gIGxldCBpbml0LCBmaW5hbGl6ZSA9IGNhbGxfIHByZWZpeCBtYWtlX3VyaSAoZnVuIF8gLT4gTHd0LmNhbmNlbCB0KSAoTHd0Lndha2V1cCB3KSBpblxuICBMd3Qub25fY2FuY2VsIHQgZmluYWxpemU7XG4gIGxldCBuZXdfdCA9XG4gICAgbWF0Y2ggdGltZW91dCB3aXRoXG4gICAgfCBOb25lIC0+IHRcbiAgICB8IFNvbWUgZGVsYXkgLT5cbiAgICAgICAgbGV0IHdhaXQgPVxuICAgICAgICAgIEx3dC5iaW5kIChMd3RfanMuc2xlZXAgZGVsYXkpIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LmNhbmNlbCB0O1xuICAgICAgICAgICAgICB0KVxuICAgICAgICBpblxuICAgICAgICBMd3QuY2hvb3NlIFsgd2FpdDsgdCBdXG4gIGluXG4gIGluaXQgKCk7XG4gIG5ld190XG5cbmxldCBhZGRfcGFyYW0gbmFtZSB2YWx1ZSBsID1cbiAgbGV0IGwgPSBMaXN0LmZpbHRlciAoZnVuICh4LCBfKSAtPiBub3QgKFN0cmluZy5lcXVhbCB4IG5hbWUpKSBsIGluXG4gIChuYW1lLCB2YWx1ZSkgOjogbFxuXG5sZXQgY2FsbCA/dGltZW91dCA/KHBhcmFtID0gXCJjYWxsYmFja1wiKSA/KHByZWZpeCA9IFwiXCIpIHVybCA9XG4gIGxldCBtYWtlX3VyaSBjYm5hbWUgPVxuICAgIG1hdGNoIFVybC51cmxfb2Zfc3RyaW5nIHVybCB3aXRoXG4gICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiSnNvbnAuY2FsbDogQ2Fubm90IHBhcnNlIHVybFwiXG4gICAgfCBTb21lIHVybCAtPlxuICAgICAgICBsZXQgbmV3X3VybCA9XG4gICAgICAgICAgbWF0Y2ggdXJsIHdpdGhcbiAgICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT5cbiAgICAgICAgICAgICAgVXJsLkh0dHBcbiAgICAgICAgICAgICAgICB7IGh0dHAgd2l0aFxuICAgICAgICAgICAgICAgICAgVXJsLmh1X2FyZ3VtZW50cyA9IGFkZF9wYXJhbSBwYXJhbSBjYm5hbWUgaHR0cC5VcmwuaHVfYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgIHwgVXJsLkh0dHBzIGh0dHAgLT5cbiAgICAgICAgICAgICAgVXJsLkh0dHBzXG4gICAgICAgICAgICAgICAgeyBodHRwIHdpdGhcbiAgICAgICAgICAgICAgICAgIFVybC5odV9hcmd1bWVudHMgPSBhZGRfcGFyYW0gcGFyYW0gY2JuYW1lIGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT5cbiAgICAgICAgICAgICAgVXJsLkZpbGVcbiAgICAgICAgICAgICAgICB7IGZpbGUgd2l0aFxuICAgICAgICAgICAgICAgICAgVXJsLmZ1X2FyZ3VtZW50cyA9IGFkZF9wYXJhbSBwYXJhbSBjYm5hbWUgZmlsZS5VcmwuZnVfYXJndW1lbnRzXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBVcmwuc3RyaW5nX29mX3VybCBuZXdfdXJsXG4gIGluXG4gIGNhbGxfY3VzdG9tX3VybCA/dGltZW91dCB+cHJlZml4IG1ha2VfdXJpXG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDEwIFZpbmNlbnQgQmFsYXRcbiAqIExhYm9yYXRvaXJlIFBQUyAtIENOUlMgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIHdpdGggbGlua2luZyBleGNlcHRpb247XG4gKiBlaXRoZXIgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZVxuICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuXG4gKlxuICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZVxuICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS5cbiAqKVxuXG5vcGVuIEpzX29mX29jYW1sXG5vcGVuISBJbXBvcnRcblxubGV0ICggPj49ICkgPSBMd3QuYmluZFxuXG5sZXQgYXN5bmMgZiA9IEx3dC5hc3luYyAoZnVuICgpIC0+IEx3dF9qcy55aWVsZCAoKSA+Pj0gZilcblxubGV0IG9wdF9tYXAgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcblxubGV0IG1ha2VfZXZlbnQgZXZlbnRfa2luZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbGV0IGVsID0gcmVmIEpzLm51bGwgaW5cbiAgbGV0IHQsIHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgY2FuY2VsICgpID0gSnMuT3B0Lml0ZXIgIWVsIERvbV9odG1sLnJlbW92ZUV2ZW50TGlzdGVuZXIgaW5cbiAgTHd0Lm9uX2NhbmNlbCB0IGNhbmNlbDtcbiAgZWwgOj1cbiAgICBKcy5zb21lXG4gICAgICAoRG9tLmFkZEV2ZW50TGlzdGVuZXJXaXRoT3B0aW9uc1xuICAgICAgICAgP2NhcHR1cmU6KG9wdF9tYXAgSnMuYm9vbCB1c2VfY2FwdHVyZSlcbiAgICAgICAgID9wYXNzaXZlOihvcHRfbWFwIEpzLmJvb2wgcGFzc2l2ZSlcbiAgICAgICAgIHRhcmdldFxuICAgICAgICAgZXZlbnRfa2luZFxuICAgICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biAoZXYgOiAjRG9tX2h0bWwuZXZlbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgY2FuY2VsICgpO1xuICAgICAgICAgICAgICBMd3Qud2FrZXVwIHcgZXY7XG4gICAgICAgICAgICAgIEpzLmJvb2wgdHJ1ZSkpXG4gICAgICAgICAoKiB0cnVlIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gcHJldmVudCBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXNlciBjYW4gdXNlIHRoZSBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUuICopKTtcbiAgdFxuXG5sZXQgY2F0Y2hfY2FuY2VsIGYgeCA9XG4gIEx3dC5jYXRjaFxuICAgIChmdW4gKCkgLT4gZiB4KVxuICAgIChmdW5jdGlvblxuICAgICAgfCBMd3QuQ2FuY2VsZWQgLT4gTHd0LnJldHVybiAoKVxuICAgICAgfCBlIC0+IEx3dC5mYWlsIGUpXG5cbmxldCB3aXRoX2Vycm9yX2xvZyBmIHggPVxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+IGYgeClcbiAgICAoZnVuIGUgLT5cbiAgICAgIEZpcmVidWcuY29uc29sZSMjbG9nIChKcy5zdHJpbmcgKFByaW50ZXhjLnRvX3N0cmluZyBlKSk7XG4gICAgICBMd3QucmV0dXJuICgpKVxuXG5sZXQgc2VxX2xvb3AgZXZoID8oY2FuY2VsX2hhbmRsZXIgPSBmYWxzZSkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY3VyID0gcmVmIChMd3QuZmFpbCAoRmFpbHVyZSBcIkx3dF9qc19ldmVudFwiKSkgaW5cbiAgKCogVXNpbmcgTHd0LmZhaWwgYXMgZGVmYXVsdCwgdG8gYmUgcG9seW1vcnBoaWMgKilcbiAgbGV0IGN1cl9oYW5kbGVyID0gcmVmIChMd3QucmV0dXJuICgpKSBpblxuICBsZXQgbHQsIF9sdyA9IEx3dC50YXNrICgpIGluXG4gIEx3dC5vbl9jYW5jZWwgbHQgKGZ1biAoKSAtPlxuICAgICAgTHd0LmNhbmNlbCAhY3VyO1xuICAgICAgaWYgY2FuY2VsX2hhbmRsZXIgdGhlbiBMd3QuY2FuY2VsICFjdXJfaGFuZGxlcjtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBhdXggKCkgPVxuICAgIGlmIG5vdCAhY2FuY2VsbGVkXG4gICAgICAgKCogSW4gdGhlIGNhc2UgaXQgaGFzIGJlZW4gY2FuY2VsbGVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHRoZSBwcmV2aW91cyBoYW5kbGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgIHdlIGRvIG5vdCByZWluc3RhbGwgdGhlIGV2ZW50IGhhbmRsZXIgKilcbiAgICB0aGVuIChcbiAgICAgIGxldCB0ID0gZXZoID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgaW5cbiAgICAgIGN1ciA6PSB0O1xuICAgICAgdFxuICAgICAgPj49IGZ1biBlIC0+XG4gICAgICBjdXJfaGFuZGxlciA6PSB3aXRoX2Vycm9yX2xvZyAoaGFuZGxlciBlKSBsdDtcbiAgICAgICFjdXJfaGFuZGxlciA+Pj0gYXV4KVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBhdXgpO1xuICBsdFxuXG5sZXQgYXN5bmNfbG9vcCBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgY3VyID0gcmVmIChMd3QuZmFpbCAoRmFpbHVyZSBcIkx3dF9qc19ldmVudFwiKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBhdXggKCkgPVxuICAgIGlmIG5vdCAhY2FuY2VsbGVkXG4gICAgdGhlbiAoXG4gICAgICBsZXQgdCA9IGV2aCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGluXG4gICAgICBjdXIgOj0gdDtcbiAgICAgIHRcbiAgICAgID4+PSBmdW4gZSAtPlxuICAgICAgTHd0LmFzeW5jIChmdW4gKCkgLT4gd2l0aF9lcnJvcl9sb2cgKGhhbmRsZXIgZSkgbHQpO1xuICAgICAgYXV4ICgpKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBhdXgpO1xuICBsdFxuXG5sZXQgYnVmZmVyZWRfbG9vcFxuICAgIGV2aFxuICAgID8oY2FuY2VsX2hhbmRsZXIgPSBmYWxzZSlcbiAgICA/KGNhbmNlbF9xdWV1ZSA9IHRydWUpXG4gICAgP3VzZV9jYXB0dXJlXG4gICAgP3Bhc3NpdmVcbiAgICB0YXJnZXRcbiAgICBoYW5kbGVyID1cbiAgbGV0IGNhbmNlbGxlZCA9IHJlZiBmYWxzZSBpblxuICBsZXQgcXVldWUgPSByZWYgW10gaW5cbiAgbGV0IGN1ciA9IHJlZiAoTHd0LmZhaWwgKEZhaWx1cmUgXCJMd3RfanNfZXZlbnRcIikpIGluXG4gIGxldCBjdXJfaGFuZGxlciA9IHJlZiAoTHd0LnJldHVybiAoKSkgaW5cbiAgbGV0IGx0LCBfbHcgPSBMd3QudGFzayAoKSBpblxuICBsZXQgc3Bhd24gPSBMd3RfY29uZGl0aW9uLmNyZWF0ZSAoKSBpblxuICBMd3Qub25fY2FuY2VsIGx0IChmdW4gKCkgLT5cbiAgICAgIEx3dC5jYW5jZWwgIWN1cjtcbiAgICAgIGlmIGNhbmNlbF9oYW5kbGVyIHRoZW4gTHd0LmNhbmNlbCAhY3VyX2hhbmRsZXI7XG4gICAgICBpZiBjYW5jZWxfcXVldWUgdGhlbiBxdWV1ZSA6PSBbXTtcbiAgICAgIGNhbmNlbGxlZCA6PSB0cnVlKTtcbiAgbGV0IHJlYyBzcGF3bmVyICgpID1cbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbGV0IHQgPSBldmggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCBpblxuICAgICAgY3VyIDo9IHQ7XG4gICAgICB0XG4gICAgICA+Pj0gZnVuIGUgLT5cbiAgICAgIHF1ZXVlIDo9IGUgOjogIXF1ZXVlO1xuICAgICAgTHd0X2NvbmRpdGlvbi5zaWduYWwgc3Bhd24gKCk7XG4gICAgICBzcGF3bmVyICgpKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBsZXQgcmVjIHJ1bm5lciAoKSA9XG4gICAgY3VyX2hhbmRsZXIgOj0gTHd0LnJldHVybiAoKTtcbiAgICBpZiBub3QgIWNhbmNlbGxlZFxuICAgIHRoZW4gKFxuICAgICAgbWF0Y2ggIXF1ZXVlIHdpdGhcbiAgICAgIHwgW10gLT4gTHd0X2NvbmRpdGlvbi53YWl0IHNwYXduID4+PSBydW5uZXJcbiAgICAgIHwgZSA6OiB0bCAtPlxuICAgICAgICAgIHF1ZXVlIDo9IHRsO1xuICAgICAgICAgIGN1cl9oYW5kbGVyIDo9IHdpdGhfZXJyb3JfbG9nIChoYW5kbGVyIGUpIGx0O1xuICAgICAgICAgICFjdXJfaGFuZGxlciA+Pj0gcnVubmVyKVxuICAgIGVsc2UgTHd0LnJldHVybiAoKVxuICBpblxuICBMd3QuYXN5bmMgKGNhdGNoX2NhbmNlbCBzcGF3bmVyKTtcbiAgTHd0LmFzeW5jIHJ1bm5lcjtcbiAgbHRcblxubGV0IGZ1bmNfbGltaXRlZF9sb29wIGV2ZW50IGxpbWl0ZWRfZnVuYyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0IGhhbmRsZXIgPVxuICBsZXQgY291bnQgPSByZWYgMCBpblxuICBhc3luY19sb29wIGV2ZW50ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgKGZ1biBldiBsdCAtPlxuICAgICAgaW5jciBjb3VudDtcbiAgICAgIGxldCBuYiA9ICFjb3VudCBpblxuICAgICAgbGltaXRlZF9mdW5jICgpID4+PSBmdW4gXyAtPiBpZiAhY291bnQgPSBuYiB0aGVuIGhhbmRsZXIgZXYgbHQgZWxzZSBMd3QucmV0dXJuICgpKVxuXG5sZXQgbGltaXRlZF9sb29wIGV2ZW50ID8oZWxhcHNlZF90aW1lID0gMC4xKSA9XG4gIGZ1bmNfbGltaXRlZF9sb29wIGV2ZW50IChmdW4gKCkgLT4gTHd0X2pzLnNsZWVwIGVsYXBzZWRfdGltZSlcblxubGV0IGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGNvcHkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY29weSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBhc3RlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBhc3RlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRibGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRibGNsaWNrID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlZG93biA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2V1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZXVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IG1vdXNlb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgbW91c2Vtb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm1vdXNlbW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBtb3VzZW91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5tb3VzZW91dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBrZXlwcmVzcyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5rZXlwcmVzcyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBrZXlkb3duID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmtleWRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQga2V5dXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQua2V5dXAgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBpbnB1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5pbnB1dCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0aW1ldXBkYXRlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRpbWV1cGRhdGUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ3N0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHJhZ2VudGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyYWdlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5kcmFnb3ZlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcmFnbGVhdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZ2xlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGRyYWcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHJhZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBkcm9wID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRyb3AgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZm9jdXMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZm9jdXMgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgYmx1ciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5ibHVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNjcm9sbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc3VibWl0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN1Ym1pdCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzZWxlY3QgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc2VsZWN0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGFib3J0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmFib3J0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVycm9yID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmVycm9yID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvYWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBjYW5wbGF5ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmNhbnBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgY2FucGxheXRocm91Z2ggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuY2FucGxheXRocm91Z2ggP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZHVyYXRpb25jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZHVyYXRpb25jaGFuZ2UgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZW1wdGllZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5lbXB0aWVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGVuZGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmVuZGVkID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvYWRlZGRhdGEgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZGVkZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2FkZWRtZXRhZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb2FkZWRtZXRhZGF0YSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBsb2Fkc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZHN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBhdXNlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBhdXNlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHBsYXkgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucGxheSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwbGF5aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBsYXlpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcmF0ZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5yYXRlY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHNlZWtlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zZWVrZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgc2Vla2luZyA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5zZWVraW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHN0YWxsZWQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuc3RhbGxlZCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBzdXNwZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnN1c3BlbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgdm9sdW1lY2hhbmdlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnZvbHVtZWNoYW5nZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB3YWl0aW5nID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LndhaXRpbmcgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG4oKiBzcGVjaWFsIGNhc2UgZm9yIG1vdXNld2hlZWwsIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiB0aGUgYnJvd3NlciAqKVxubGV0IG1vdXNld2hlZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIGxldCBlbCA9IHJlZiBKcy5udWxsIGluXG4gIGxldCB0LCB3ID0gTHd0LnRhc2sgKCkgaW5cbiAgbGV0IGNhbmNlbCAoKSA9IEpzLk9wdC5pdGVyICFlbCBEb21faHRtbC5yZW1vdmVFdmVudExpc3RlbmVyIGluXG4gIEx3dC5vbl9jYW5jZWwgdCBjYW5jZWw7XG4gIGVsIDo9XG4gICAgSnMuc29tZVxuICAgICAgKERvbV9odG1sLmFkZE1vdXNld2hlZWxFdmVudExpc3RlbmVyV2l0aE9wdGlvbnNcbiAgICAgICAgID9jYXB0dXJlOihvcHRfbWFwIEpzLmJvb2wgdXNlX2NhcHR1cmUpXG4gICAgICAgICA/cGFzc2l2ZToob3B0X21hcCBKcy5ib29sIHBhc3NpdmUpXG4gICAgICAgICB0YXJnZXRcbiAgICAgICAgIChmdW4gKGV2IDogI0RvbV9odG1sLmV2ZW50IEpzLnQpIH5keCB+ZHkgLT5cbiAgICAgICAgICAgRmlyZWJ1Zy5jb25zb2xlIyNsb2cgZXY7XG4gICAgICAgICAgIGNhbmNlbCAoKTtcbiAgICAgICAgICAgTHd0Lndha2V1cCB3IChldiwgKGR4LCBkeSkpO1xuICAgICAgICAgICBKcy5ib29sIHRydWUpXG4gICAgICAgICAoKiB0cnVlIGJlY2F1c2Ugd2UgZG8gbm90IHdhbnQgdG8gcHJldmVudCBkZWZhdWx0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgdXNlciBjYW4gdXNlIHRoZSBwcmV2ZW50RGVmYXVsdCBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWJvdmUuICopKTtcbiAgdFxuXG4oKiBsZXQgX0RPTU1vdXNlU2Nyb2xsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5fRE9NTW91c2VTY3JvbGwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuKilcblxubGV0IHdoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LndoZWVsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoc3RhcnQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudG91Y2hzdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0b3VjaG1vdmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQudG91Y2htb3ZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IHRvdWNoY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRvdWNoY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXRcblxubGV0IGxvc3Rwb2ludGVyY2FwdHVyZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5sb3N0cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgZ290cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuZ290cG9pbnRlcmNhcHR1cmUgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmVudGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJlbnRlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJjYW5jZWwgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcmRvd24gP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcmxlYXZlID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJsZWF2ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVybW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC5wb2ludGVybW92ZSA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCBwb2ludGVyb3V0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJvdXQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcm92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldCA9XG4gIG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9pbnRlcm92ZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRhcmdldFxuXG5sZXQgcG9pbnRlcnVwID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0YXJnZXQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnBvaW50ZXJ1cCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdGFyZ2V0XG5cbmxldCB0cmFuc2l0aW9uZW5kID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25lbmQgP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbnN0YXJ0ID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25zdGFydCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0XG5cbmxldCB0cmFuc2l0aW9ucnVuID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHQgPVxuICBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnRyYW5zaXRpb25ydW4gP3VzZV9jYXB0dXJlID9wYXNzaXZlIGVsdFxuXG5sZXQgdHJhbnNpdGlvbmNhbmNlbCA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgZWx0ID1cbiAgbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC50cmFuc2l0aW9uY2FuY2VsID91c2VfY2FwdHVyZSA/cGFzc2l2ZSBlbHRcblxubGV0IGNsaWNrcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjbGljayA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNvcGllcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjb3B5ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjdXQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwYXN0ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGFzdGUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkYmxjbGlja3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZGJsY2xpY2sgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZWRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlZG93biA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNldXBzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNldXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZW92ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IG1vdXNlbW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbW91c2Vtb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbW91c2VvdXRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIG1vdXNlb3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQga2V5cHJlc3NlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBrZXlwcmVzcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGtleWRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGtleWRvd24gP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBrZXl1cHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Aga2V5dXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGlucHV0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBpbnB1dCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRpbWV1cGRhdGVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRpbWV1cGRhdGUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnc3RhcnRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdzdGFydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdlbmQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBkcmFnZW50ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyYWdlbnRlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdvdmVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkcmFnb3ZlciA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyYWdsZWF2ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZ2xlYXZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZHJhZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZHJhZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGRyb3BzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGRyb3AgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBtb3VzZXdoZWVscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBtb3VzZXdoZWVsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgd2hlZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHdoZWVsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hzdGFydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdG91Y2hzdGFydCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHRvdWNobW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdG91Y2htb3ZlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hlbmRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdG91Y2hjYW5jZWxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHRvdWNoY2FuY2VsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZm9jdXNlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBmb2N1cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGJsdXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGJsdXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzY3JvbGxzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNjcm9sbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHN1Ym1pdHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3VibWl0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc2VsZWN0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzZWxlY3QgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBhYm9ydHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgYWJvcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlcnJvcnMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZXJyb3IgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb2FkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgY2FucGxheXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgY2FucGxheSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGNhbnBsYXl0aHJvdWdocyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBjYW5wbGF5dGhyb3VnaCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGR1cmF0aW9uY2hhbmdlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBkdXJhdGlvbmNoYW5nZSA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGVtcHRpZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGVtcHRpZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBlbmRlZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgZW5kZWQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBsb2FkZWRkYXRhcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2FkZWRkYXRhID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZGVkbWV0YWRhdGFzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGxvYWRlZG1ldGFkYXRhID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgbG9hZHN0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBsb2Fkc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwYXVzZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGF1c2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwbGF5cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwbGF5ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcGxheWluZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcGxheWluZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHJhdGVjaGFuZ2VzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHJhdGVjaGFuZ2UgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzZWVrZWRzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNlZWtlZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHNlZWtpbmdzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHNlZWtpbmcgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBzdGFsbGVkcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBzdGFsbGVkID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgc3VzcGVuZHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agc3VzcGVuZCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHZvbHVtZWNoYW5nZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agdm9sdW1lY2hhbmdlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgd2FpdGluZ3MgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3Agd2FpdGluZyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IGxvc3Rwb2ludGVyY2FwdHVyZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgbG9zdHBvaW50ZXJjYXB0dXJlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgZ290cG9pbnRlcmNhcHR1cmVzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIGdvdHBvaW50ZXJjYXB0dXJlID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmVudGVycyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyZW50ZXIgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyY2FuY2VscyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyY2FuY2VsID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmRvd25zID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJkb3duID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcmxlYXZlcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVybGVhdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVybW92ZXMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgcG9pbnRlcm1vdmUgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCBwb2ludGVyb3V0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVyb3V0ID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcm92ZXJzID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdCA9XG4gIHNlcV9sb29wIHBvaW50ZXJvdmVyID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgcG9pbnRlcnVwcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCBwb2ludGVydXAgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0cmFuc2l0aW9uZW5kcyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9uZW5kID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbnN0YXJ0cyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9uc3RhcnQgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0XG5cbmxldCB0cmFuc2l0aW9ucnVucyA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHQgPVxuICBzZXFfbG9vcCB0cmFuc2l0aW9ucnVuID9jYW5jZWxfaGFuZGxlciA/dXNlX2NhcHR1cmUgP3Bhc3NpdmUgdFxuXG5sZXQgdHJhbnNpdGlvbmNhbmNlbHMgP2NhbmNlbF9oYW5kbGVyID91c2VfY2FwdHVyZSA/cGFzc2l2ZSB0ID1cbiAgc2VxX2xvb3AgdHJhbnNpdGlvbmNhbmNlbCA/Y2FuY2VsX2hhbmRsZXIgP3VzZV9jYXB0dXJlID9wYXNzaXZlIHRcblxubGV0IHJlcXVlc3RfYW5pbWF0aW9uX2ZyYW1lICgpID1cbiAgbGV0IHQsIHMgPSBMd3Qud2FpdCAoKSBpblxuICBsZXQgKF8gOiBEb21faHRtbC5hbmltYXRpb25fZnJhbWVfcmVxdWVzdF9pZCkgPVxuICAgIERvbV9odG1sLndpbmRvdyMjcmVxdWVzdEFuaW1hdGlvbkZyYW1lXG4gICAgICAoSnMud3JhcF9jYWxsYmFjayAoZnVuIChfIDogSnMubnVtYmVyX3QpIC0+IEx3dC53YWtldXAgcyAoKSkpXG4gIGluXG4gIHRcblxubGV0IG9ubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQubG9hZCBEb21faHRtbC53aW5kb3dcblxubGV0IGRvbUNvbnRlbnRMb2FkZWQgPVxuICBsZXQgY29tcGxldGUgPSBKcy5zdHJpbmcgXCJjb21wbGV0ZVwiIGluXG4gIGxldCBkb2MgPSBEb21faHRtbC53aW5kb3cjIy5kb2N1bWVudCBpblxuICBmdW4gKCkgLT5cbiAgICBpZiBkb2MjIy5yZWFkeVN0YXRlID09IGNvbXBsZXRlXG4gICAgdGhlbiBMd3QucmV0dXJuX3VuaXRcbiAgICBlbHNlXG4gICAgICBsZXQgdCwgdyA9IEx3dC50YXNrICgpIGluXG4gICAgICBsZXQgd2FrZXVwIHcgXyA9IGlmIEx3dC5pc19zbGVlcGluZyB0IHRoZW4gTHd0Lndha2V1cCB3ICgpIGluXG4gICAgICBsZXQgd2FrZXVwX2V4biB3IGUgPSBpZiBMd3QuaXNfc2xlZXBpbmcgdCB0aGVuIEx3dC53YWtldXBfZXhuIHcgZSBpblxuICAgICAgKCogaHR0cHM6Ly9naXRodWIuY29tL2RwZXJpbmkvQ29udGVudExvYWRlZC9ibG9iL21hc3Rlci9zcmMvY29udGVudGxvYWRlZC5qcyAqKVxuICAgICAgbGV0IHJlZ3VsYXIgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmRvbUNvbnRlbnRMb2FkZWQgZG9jIGluXG4gICAgICBMd3Qub25fYW55IHJlZ3VsYXIgKHdha2V1cCB3KSAod2FrZXVwX2V4biB3KTtcbiAgICAgICgqIGllOCAqKVxuICAgICAgbGV0IHJlYWR5c3RhdGVjaGFuZ2UgPVxuICAgICAgICBhc3luY19sb29wXG4gICAgICAgICAgKG1ha2VfZXZlbnQgKERvbS5FdmVudC5tYWtlIFwicmVhZHlzdGF0ZWNoYW5nZVwiKSlcbiAgICAgICAgICBkb2NcbiAgICAgICAgICAoZnVuIGUgXyAtPlxuICAgICAgICAgICAgaWYgZG9jIyMucmVhZHlTdGF0ZSA9PSBjb21wbGV0ZSB0aGVuIHdha2V1cCB3IGU7XG4gICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICBpblxuICAgICAgKCogZmFsbGJhY2ssIGp1c3QgaW4gY2FzZSAqKVxuICAgICAgbGV0IGluaXQgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LmxvYWQgRG9tX2h0bWwud2luZG93IGluXG4gICAgICBMd3Qub25fYW55IGluaXQgKHdha2V1cCB3KSAod2FrZXVwX2V4biB3KTtcbiAgICAgICgqIGNsZWFuIGFuZCByZXR1cm4gKilcbiAgICAgIEx3dC5iaW5kIHQgKGZ1biBfZSAtPlxuICAgICAgICAgIEx3dC5jYW5jZWwgcmVndWxhcjtcbiAgICAgICAgICBMd3QuY2FuY2VsIHJlYWR5c3RhdGVjaGFuZ2U7XG4gICAgICAgICAgTHd0LmNhbmNlbCBpbml0O1xuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcblxubGV0IG9udW5sb2FkICgpID0gbWFrZV9ldmVudCBEb21faHRtbC5FdmVudC51bmxvYWQgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbmJlZm9yZXVubG9hZCAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQuYmVmb3JldW5sb2FkIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25yZXNpemUgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50LnJlc2l6ZSBEb21faHRtbC53aW5kb3dcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2UgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lm9yaWVudGF0aW9uY2hhbmdlIERvbV9odG1sLndpbmRvd1xuXG5sZXQgb25wb3BzdGF0ZSAoKSA9IG1ha2VfZXZlbnQgRG9tX2h0bWwuRXZlbnQucG9wc3RhdGUgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbmhhc2hjaGFuZ2UgKCkgPSBtYWtlX2V2ZW50IERvbV9odG1sLkV2ZW50Lmhhc2hjaGFuZ2UgRG9tX2h0bWwud2luZG93XG5cbmxldCBvbm9yaWVudGF0aW9uY2hhbmdlX29yX29ucmVzaXplICgpID0gTHd0LnBpY2sgWyBvbnJlc2l6ZSAoKTsgb25vcmllbnRhdGlvbmNoYW5nZSAoKSBdXG5cbmxldCBvbnJlc2l6ZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbnJlc2l6ZSAoKSkgKCkgdFxuXG5sZXQgb25vcmllbnRhdGlvbmNoYW5nZXMgdCA9XG4gIHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbm9yaWVudGF0aW9uY2hhbmdlICgpKSAoKSB0XG5cbmxldCBvbnBvcHN0YXRlcyB0ID0gc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ucG9wc3RhdGUgKCkpICgpIHRcblxubGV0IG9uaGFzaGNoYW5nZXMgdCA9IHNlcV9sb29wIChmdW4gP3VzZV9jYXB0dXJlOl8gP3Bhc3NpdmU6XyAoKSAtPiBvbmhhc2hjaGFuZ2UgKCkpICgpIHRcblxubGV0IG9ub3JpZW50YXRpb25jaGFuZ2VzX29yX29ucmVzaXplcyB0ID1cbiAgc2VxX2xvb3AgKGZ1biA/dXNlX2NhcHR1cmU6XyA/cGFzc2l2ZTpfICgpIC0+IG9ub3JpZW50YXRpb25jaGFuZ2Vfb3Jfb25yZXNpemUgKCkpICgpIHRcblxubGV0IGxpbWl0ZWRfb25yZXNpemVzID9lbGFwc2VkX3RpbWUgdCA9XG4gIGxpbWl0ZWRfbG9vcCAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25yZXNpemUgKCkpID9lbGFwc2VkX3RpbWUgKCkgdFxuXG5sZXQgbGltaXRlZF9vbm9yaWVudGF0aW9uY2hhbmdlcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3BcbiAgICAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZSAoKSlcbiAgICA/ZWxhcHNlZF90aW1lXG4gICAgKClcbiAgICB0XG5cbmxldCBsaW1pdGVkX29ub3JpZW50YXRpb25jaGFuZ2VzX29yX29ucmVzaXplcyA/ZWxhcHNlZF90aW1lIHQgPVxuICBsaW1pdGVkX2xvb3BcbiAgICAoZnVuID91c2VfY2FwdHVyZTpfID9wYXNzaXZlOl8gKCkgLT4gb25vcmllbnRhdGlvbmNoYW5nZV9vcl9vbnJlc2l6ZSAoKSlcbiAgICA/ZWxhcHNlZF90aW1lXG4gICAgKClcbiAgICB0XG4iLCIoKiBKc19vZl9vY2FtbCBsaWJyYXJ5XG4gKiBodHRwOi8vd3d3Lm9jc2lnZW4ub3JnL2pzX29mX29jYW1sL1xuICogQ29weXJpZ2h0IChDKSAyMDExIFBpZXJyZSBDaGFtYmFydFxuICogTGFib3JhdG9pcmUgUFBTIC0gQ05SUyBVbml2ZXJzaXTDqSBQYXJpcyBEaWRlcm90XG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm9wZW4gSnNfb2Zfb2NhbWxcbm9wZW4gSnNcbm9wZW4gRG9tXG5vcGVuIEZpbGVcbm9wZW4hIEltcG9ydFxuXG5sZXQgcmVhZF93aXRoX2ZpbGVyZWFkZXIgKGZpbGVSZWFkZXIgOiBmaWxlUmVhZGVyIHQgY29uc3RyKSBraW5kIGZpbGUgPVxuICBsZXQgcmVhZGVyID0gbmV3JWpzIGZpbGVSZWFkZXIgaW5cbiAgbGV0IHJlcywgdyA9IEx3dC50YXNrICgpIGluXG4gIHJlYWRlciMjLm9ubG9hZGVuZCA6PVxuICAgIGhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgIGlmIHJlYWRlciMjLnJlYWR5U3RhdGUgPT0gRE9ORVxuICAgICAgICB0aGVuXG4gICAgICAgICAgTHd0Lndha2V1cFxuICAgICAgICAgICAgd1xuICAgICAgICAgICAgKG1hdGNoIE9wdC50b19vcHRpb24gKENvZXJjZVRvLnN0cmluZyByZWFkZXIjIy5yZXN1bHQpIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2UgKCogY2FuJ3QgaGFwcGVuOiBjYWxsZWQgd2l0aCBnb29kIHJlYWRBc18gKilcbiAgICAgICAgICAgIHwgU29tZSBzIC0+IHMpXG4gICAgICAgIGVsc2UgKCk7XG4gICAgICAgICgqIENDQyBUT0RPOiBoYW5kbGUgZXJyb3JzICopXG4gICAgICAgIEpzLl9mYWxzZSk7XG4gIEx3dC5vbl9jYW5jZWwgcmVzIChmdW4gKCkgLT4gcmVhZGVyIyNhYm9ydCk7XG4gIChtYXRjaCBraW5kIHdpdGhcbiAgfCBgQmluYXJ5U3RyaW5nIC0+IHJlYWRlciMjcmVhZEFzQmluYXJ5U3RyaW5nIGZpbGVcbiAgfCBgVGV4dCAtPiByZWFkZXIjI3JlYWRBc1RleHQgZmlsZVxuICB8IGBUZXh0X3dpdGhFbmNvZGluZyBlIC0+IHJlYWRlciMjcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgZmlsZSBlXG4gIHwgYERhdGFVUkwgLT4gcmVhZGVyIyNyZWFkQXNEYXRhVVJMIGZpbGUpO1xuICByZXNcblxubGV0IHJlYWRlciBraW5kIGZpbGUgPSByZWFkX3dpdGhfZmlsZXJlYWRlciBmaWxlUmVhZGVyIGtpbmQgZmlsZVxuXG5sZXQgcmVhZEFzQmluYXJ5U3RyaW5nIGZpbGUgPSByZWFkZXIgYEJpbmFyeVN0cmluZyBmaWxlXG5cbmxldCByZWFkQXNUZXh0IGZpbGUgPSByZWFkZXIgYFRleHQgZmlsZVxuXG5sZXQgcmVhZEFzVGV4dF93aXRoRW5jb2RpbmcgZmlsZSBlID0gcmVhZGVyIChgVGV4dF93aXRoRW5jb2RpbmcgZSkgZmlsZVxuXG5sZXQgcmVhZEFzRGF0YVVSTCBmaWxlID0gcmVhZGVyIGBEYXRhVVJMIGZpbGVcbiIsIigqIEpzX29mX29jYW1sIGxpYnJhcnlcbiAqIGh0dHA6Ly93d3cub2NzaWdlbi5vcmcvanNfb2Zfb2NhbWwvXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTcgSHVnbyBIZXV6YXJkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgd2l0aCBsaW5raW5nIGV4Y2VwdGlvbjtcbiAqIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqXG4gKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlXG4gKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLlxuICopXG5cbm1vZHVsZSBYbWxIdHRwUmVxdWVzdCA9IHN0cnVjdFxuICBpbmNsdWRlIEpzX29mX29jYW1sLlhtbEh0dHBSZXF1ZXN0XG4gIGluY2x1ZGUgTHd0X3htbEh0dHBSZXF1ZXN0XG5lbmRcblxubW9kdWxlIEZpbGUgPSBzdHJ1Y3RcbiAgaW5jbHVkZSBKc19vZl9vY2FtbC5GaWxlXG4gIGluY2x1ZGUgTHd0X2ZpbGVcbmVuZFxuXG5tb2R1bGUgSnNvbnAgPSBMd3RfanNvbnBcbm1vZHVsZSBMd3RfanMgPSBMd3RfanNcbm1vZHVsZSBMd3RfanNfZXZlbnRzID0gTHd0X2pzX2V2ZW50c1xuIiwibW9kdWxlIFMgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIHZhbHVlOiAnYSByZWY7XG4gICAgaG9va3M6ICgnYSAtPiB1bml0KSBsaXN0IHJlZjtcbiAgICBlcTogJ2EgLT4gJ2EgLT4gYm9vbDtcbiAgICBzaWduYWw6ICdhIFJlYWN0LnNpZ25hbDtcbiAgICBzZXRfc2lnbmFsOiA/c3RlcDpSZWFjdC5zdGVwIC0+ICdhIC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgY3JlYXRlID8oZXEgOiAnYSAtPiAnYSAtPiBib29sID0gKCA9ICkpIChhIDogJ2EpIDogJ2EgdCA9XG4gICAgbGV0IHNpZ25hbCwgc2V0X3NpZ25hbCA9IFJlYWN0LlMuY3JlYXRlIGEgaW5cbiAgICB7IHZhbHVlID0gcmVmIGE7IGhvb2tzID0gcmVmIFtdOyBlcTsgc2lnbmFsOyBzZXRfc2lnbmFsIH1cblxuICBsZXQgcmVnaXN0ZXIgaG9va2VkIGYgPSBob29rZWQuaG9va3MgOj0gZiA6OiAhKGhvb2tlZC5ob29rcylcbiAgbGV0IHYgaG9va2VkID0gIShob29rZWQudmFsdWUpXG5cbiAgbGV0IHNldCBob29rZWQgdmFsdWUgPVxuICAgIGlmIG5vdCAoaG9va2VkLmVxIHZhbHVlICEoaG9va2VkLnZhbHVlKSkgdGhlbiAoXG4gICAgICBMaXN0Lml0ZXIgKGZ1biBmIC0+IGYgdmFsdWUpICEoaG9va2VkLmhvb2tzKTtcbiAgICAgIGhvb2tlZC52YWx1ZSA6PSB2YWx1ZTtcbiAgICAgIGhvb2tlZC5zZXRfc2lnbmFsIHZhbHVlXG4gICAgKVxuXG4gIGxldCBiaW5kID9lcSBob29rZWQgZiA9XG4gICAgbGV0IG5ld19ob29rZWQgPSBjcmVhdGUgP2VxIChmICh2IGhvb2tlZCkpIGluXG4gICAgcmVnaXN0ZXIgaG9va2VkIChmdW4gdmFsdWUgLT4gc2V0IG5ld19ob29rZWQgKGYgdmFsdWUpKTtcbiAgICBuZXdfaG9va2VkXG5cbiAgbGV0IHRvX3JlYWN0X3NpZ25hbCBob29rZWQgPSBob29rZWQuc2lnbmFsXG5lbmRcblxubW9kdWxlIEUgPSBzdHJ1Y3RcbiAgdHlwZSAnYSB0ID0ge1xuICAgIGhvb2tzOiAoJ2EgLT4gdW5pdCkgbGlzdCByZWY7XG4gICAgZXZlbnQ6ICdhIFJlYWN0LmV2ZW50O1xuICAgIHNlbmRfZXZlbnQ6ID9zdGVwOlJlYWN0LnN0ZXAgLT4gJ2EgLT4gdW5pdDtcbiAgfVxuXG4gIGxldCBjcmVhdGUgKCkgOiAnYSB0ID1cbiAgICBsZXQgZXZlbnQsIHNlbmRfZXZlbnQgPSBSZWFjdC5FLmNyZWF0ZSAoKSBpblxuICAgIHsgaG9va3MgPSByZWYgW107IGV2ZW50OyBzZW5kX2V2ZW50IH1cblxuICBsZXQgcmVnaXN0ZXIgaG9va2VkIGYgPSBob29rZWQuaG9va3MgOj0gZiA6OiAhKGhvb2tlZC5ob29rcylcblxuICBsZXQgc2VuZCBob29rZWQgdmFsdWUgPVxuICAgIExpc3QuaXRlciAoZnVuIGYgLT4gZiB2YWx1ZSkgIShob29rZWQuaG9va3MpO1xuICAgIGhvb2tlZC5zZW5kX2V2ZW50IHZhbHVlXG5cbiAgbGV0IG1hcCBob29rZWQgZiA9XG4gICAgbGV0IG5ld19ob29rZWQgPSBjcmVhdGUgKCkgaW5cbiAgICByZWdpc3RlciBob29rZWQgKGZ1biB2YWx1ZSAtPiBzZW5kIG5ld19ob29rZWQgKGYgdmFsdWUpKTtcbiAgICBuZXdfaG9va2VkXG5cbiAgbGV0IHRvX3JlYWN0X2V2ZW50IGhvb2tlZCA9IGhvb2tlZC5ldmVudFxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBuZWVkIHRvIHNwZWNpZnkgbWVzc2FnZXMgd2hlcmUgdGhlcmUgaXMgYW4gZXJyb3IgKilcbmxldCB0b3NzIDogJ2EgJ2IuICdhIC0+ICdiID1cbiBmdW4gZSAtPlxuICBsZXQgKCkgPVxuICAgIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJ0b3NzXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgZSB8XVxuICBpblxuICBhc3NlcnQgZmFsc2VcblxubGV0IGlkIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImlkXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGRlYnVnIHZhbHVlID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcImRlYnVnXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IGluZm8gdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwiaW5mb1wiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBub3RpY2UgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwibm90aWNlXCIpIFt8IEpzLlVuc2FmZS5pbmplY3QgdmFsdWUgfF1cblxubGV0IHdhcm5pbmcgdmFsdWUgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGwgKEpzLlVuc2FmZS5qc19leHByIFwid2FybmluZ1wiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBlcnJvciB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJlcnJvclwiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBmYXRhbCB2YWx1ZSA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJmYXRhbFwiKSBbfCBKcy5VbnNhZmUuaW5qZWN0IHZhbHVlIHxdXG5cbmxldCBqcXVlcnlfb24gKHNlbGVjdG9yIDogc3RyaW5nKSAoZXZlbnQgOiBzdHJpbmcpIGhhbmRsZXIgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJqcXVlcnlPblwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgc2VsZWN0b3IpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGV2ZW50KTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgaGFuZGxlcjtcbiAgICB8XVxuXG5sZXQgb3B0aW9uX3N0cmluZyAoaWQgOiBzdHJpbmcgb3B0aW9uKSA9XG4gIG1hdGNoIGlkIHdpdGhcbiAgfCBTb21lIGlkIC0+IEpzLnNvbWUgKEpzLnN0cmluZyBpZClcbiAgfCBOb25lIC0+IEpzLm51bGxcblxubGV0IHBsb3RQTkcgPyhwbG90U3R5bGVJZCA6IHN0cmluZyBvcHRpb24pIChwbG90RGl2SWQgOiBzdHJpbmcpICh0aXRsZSA6IHN0cmluZylcbiAgICAocGxvdE5hbWUgOiBzdHJpbmcpID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwicGxvdFBOR1wiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdERpdklkKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB0aXRsZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdE5hbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAob3B0aW9uX3N0cmluZyBwbG90U3R5bGVJZCk7XG4gICAgfF1cblxubGV0IHBsb3RTVkcgPyhwbG90U3R5bGVJZCA6IHN0cmluZyBvcHRpb24pIChwbG90RGl2SWQgOiBzdHJpbmcpICh0aXRsZSA6IHN0cmluZylcbiAgICAocGxvdE5hbWUgOiBzdHJpbmcpID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwicGxvdFNWR1wiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdERpdklkKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyB0aXRsZSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgcGxvdE5hbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAob3B0aW9uX3N0cmluZyBwbG90U3R5bGVJZCk7XG4gICAgfF1cblxubGV0IHNhdmVGaWxlIH4oZGF0YSA6ICdhIEpzLnQpIH4obWltZSA6IHN0cmluZykgfihmaWxlbmFtZSA6IHN0cmluZykgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwic2F2ZUZpbGVcIilcbiAgICBbfFxuICAgICAgSnMuVW5zYWZlLmluamVjdCBkYXRhO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIG1pbWUpO1xuICAgICAgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGZpbGVuYW1lKTtcbiAgICB8XVxuXG50eXBlIG1ldGggPSBbIGBERUxFVEUgfCBgR0VUIHwgYEhFQUQgfCBgT1BUSU9OUyB8IGBQQVRDSCB8IGBQT1NUIHwgYFBVVCBdXG5cbmxldCBtZXRob2RfdG9fc3RyaW5nIDogbWV0aCAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IGBERUxFVEUgLT4gXCJERUxFVEVcIlxuICB8IGBHRVQgLT4gXCJHRVRcIlxuICB8IGBIRUFEIC0+IFwiSEVBRFwiXG4gIHwgYE9QVElPTlMgLT4gXCJPUFRJT05TXCJcbiAgfCBgUEFUQ0ggLT4gXCJQQVRDSFwiXG4gIHwgYFBPU1QgLT4gXCJQT1NUXCJcbiAgfCBgUFVUIC0+IFwiUFVUXCJcblxubGV0IGFqYXhfcmVxdWVzdCA/KHRpbWVvdXQgOiBmbG9hdCBvcHRpb24pIH4odXJsIDogc3RyaW5nKSB+KG1ldGggOiBtZXRoKVxuICAgID8oZGF0YSA6IHN0cmluZyBvcHRpb24pIH4oaGFuZGxlciA6IGludCAtPiBzdHJpbmcgLT4gdW5pdCkgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJhamF4UmVxdWVzdFwiKVxuICAgIFt8XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgdXJsKTtcbiAgICAgIEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyAobWV0aG9kX3RvX3N0cmluZyBtZXRoKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy5PcHQub3B0aW9uXG4gICAgICAgICAgIChtYXRjaCBkYXRhIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgfCBTb21lIGRhdGEgLT4gU29tZSAoSnMuc3RyaW5nIGRhdGEpKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4gc3RhdHVzIHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIGRlYnVnXG4gICAgICAgICAgICAgICAgIChKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgKFwicmVxdWVzdCBcIiBeIHVybCBeIFwiIGFuc3dlcjogXCIgXiBzdHJpbmdfb2ZfaW50IHN0YXR1cykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSBkZWJ1ZyByZXNwb25zZSBpblxuICAgICAgICAgICAgIGhhbmRsZXIgc3RhdHVzIChKcy50b19zdHJpbmcgcmVzcG9uc2UpKSk7XG4gICAgICBKcy5VbnNhZmUuaW5qZWN0XG4gICAgICAgIChKcy5PcHQub3B0aW9uXG4gICAgICAgICAgIChtYXRjaCB0aW1lb3V0IHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgfCBTb21lIHRpbWVvdXQgLT4gU29tZSB0aW1lb3V0KSk7XG4gICAgfF1cblxuKCogVGhpcyBpcyB0byBoYW5kbGUgZXJyb3JzIGJlaW5nIGxvc3QgaW4gYXN5bmNzXG4gICBzbyB0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgYXN5bmMgY2FsbHMgaW4gdGhlXG4gICBjb2RlLlxuKilcbmxldCBhc3luYyBsb2MgKHRhc2sgOiB1bml0IC0+ICdhIEx3dC50KSA6IHVuaXQgPVxuICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzX2V2ZW50cy5hc3luYyAoZnVuICgpIC0+XG4gICAgICBMd3QuY2F0Y2ggdGFzayAoZnVuIGV4biAtPlxuICAgICAgICAgIGxldCAoKSA9IGluZm8gKEpzLnN0cmluZyAobG9jIF4gUHJpbnRleGMudG9fc3RyaW5nIGV4bikpIGluXG4gICAgICAgICAgbGV0ICgpID0gZGVidWcgKEpzLnN0cmluZyAoUHJpbnRleGMuZ2V0X2JhY2t0cmFjZSAoKSkpIGluXG4gICAgICAgICAgTHd0LnJldHVybl91bml0KSlcblxubGV0IGd1aWQgKCkgOiBzdHJpbmcgPVxuICBKcy50b19zdHJpbmcgKEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJndWlkXCIpIFt8fF0pXG5cbmxldCBtb2RhbCB+KGlkIDogc3RyaW5nKSB+KGFjdGlvbiA6IHN0cmluZykgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwibW9kYWxcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgYWN0aW9uKSB8XVxuXG5sZXQgZWxlbWVudF9kYXRhIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAobGFiZWwgOiBzdHJpbmcpIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJlbGVtZW50RGF0YVwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgZWxlbWVudDsgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGxhYmVsKSB8XVxuXG5sZXQgY3JlYXRlX3NvcnQgKGlkIDogc3RyaW5nKSAoaGFuZGxlciA6IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gJ2IgLT4gdW5pdCkgOlxuICAgIHVuaXQgPVxuICBKcy5VbnNhZmUuZnVuX2NhbGxcbiAgICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJjcmVhdGVTb3J0XCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBoYW5kbGVyIHxdXG5cbmxldCBjaGlsZHJlbl92YWx1ZSAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgKHNlbGVjdG9yIDogc3RyaW5nKVxuICAgIChtYXAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgLT4gJ2EpIDogJ2EgbGlzdCA9XG4gIEFycmF5LnRvX2xpc3RcbiAgICAoSnMudG9fYXJyYXlcbiAgICAgICAoSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgICAgICAgKEpzLlVuc2FmZS5qc19leHByIFwiY2hpbGRyZW5WYWx1ZVwiKVxuICAgICAgICAgIFt8XG4gICAgICAgICAgICBKcy5VbnNhZmUuaW5qZWN0IGVsZW1lbnQ7XG4gICAgICAgICAgICBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgc2VsZWN0b3IpO1xuICAgICAgICAgICAgSnMuVW5zYWZlLmluamVjdCBtYXA7XG4gICAgICAgICAgfF0pKVxuXG5sZXQgaGlkZV9jb2RlbWlycm9yICgpIDogdW5pdCA9XG4gIEpzLlVuc2FmZS5mdW5fY2FsbCAoSnMuVW5zYWZlLmpzX2V4cHIgXCJoaWRlQ29kZU1pcnJvclwiKSBbfHxdXG5cbmxldCBzaG93X2NvZGVtaXJyb3IgKCkgOiB1bml0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsIChKcy5VbnNhZmUuanNfZXhwciBcInNob3dDb2RlTWlycm9yXCIpIFt8fF1cbiIsImxldCByZXZfc3BsaXQgbCA9XG4gIGxldCByZWMgaW5uZXIgeHMgeXMgPSBmdW5jdGlvblxuICAgIHwgKHgsIHkpIDo6IHh5cyAtPlxuICAgICAgIGlubmVyICh4Ojp4cykgKHk6OnlzKSB4eXNcbiAgICB8IFtdIC0+ICh4cywgeXMpXG4gIGluXG4gIGlubmVyIFtdIFtdIGxcblxudHlwZSB3cmFwID0gW1xuICB8IGBXcmFwX2F0b21zXG4gIHwgYEFsd2F5c193cmFwXG4gIHwgYE5ldmVyX3dyYXBcbiAgfCBgRm9yY2VfYnJlYWtzXG4gIHwgYEZvcmNlX2JyZWFrc19yZWNcbiAgfCBgTm9fYnJlYWtzXG5dXG5cbnR5cGUgbGFiZWxfYnJlYWsgPSBbXG4gIHwgYEF1dG9cbiAgfCBgQWx3YXlzXG4gIHwgYEFsd2F5c19yZWNcbiAgfCBgTmV2ZXJcbl1cblxudHlwZSBzdHlsZV9uYW1lID0gc3RyaW5nXG50eXBlIHN0eWxlID0ge1xuICB0YWdfb3BlbiA6IHN0cmluZztcbiAgdGFnX2Nsb3NlIDogc3RyaW5nXG59XG5cbnR5cGUgYXRvbV9wYXJhbSA9IHtcbiAgYXRvbV9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xufVxuXG5sZXQgYXRvbSA9IHtcbiAgYXRvbV9zdHlsZSA9IE5vbmVcbn1cblxudHlwZSBsaXN0X3BhcmFtID0ge1xuICBzcGFjZV9hZnRlcl9vcGVuaW5nIDogYm9vbDtcbiAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yIDogYm9vbDtcbiAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA6IGJvb2w7XG4gIHNlcGFyYXRvcnNfc3RpY2tfbGVmdCA6IGJvb2w7XG4gIHNwYWNlX2JlZm9yZV9jbG9zaW5nIDogYm9vbDtcbiAgc3RpY2tfdG9fbGFiZWwgOiBib29sO1xuICBhbGlnbl9jbG9zaW5nIDogYm9vbDtcbiAgd3JhcF9ib2R5IDogd3JhcDtcbiAgaW5kZW50X2JvZHkgOiBpbnQ7XG4gIGxpc3Rfc3R5bGUgOiBzdHlsZV9uYW1lIG9wdGlvbjtcbiAgb3BlbmluZ19zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBib2R5X3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG4gIHNlcGFyYXRvcl9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xuICBjbG9zaW5nX3N0eWxlIDogc3R5bGVfbmFtZSBvcHRpb247XG59XG5cbmxldCBsaXN0ID0ge1xuICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gdHJ1ZTtcbiAgc3BhY2VfYWZ0ZXJfc2VwYXJhdG9yID0gdHJ1ZTtcbiAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IGZhbHNlO1xuICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlO1xuICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IHRydWU7XG4gIHN0aWNrX3RvX2xhYmVsID0gdHJ1ZTtcbiAgYWxpZ25fY2xvc2luZyA9IHRydWU7XG4gIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICBpbmRlbnRfYm9keSA9IDI7XG4gIGxpc3Rfc3R5bGUgPSBOb25lO1xuICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgYm9keV9zdHlsZSA9IE5vbmU7XG4gIHNlcGFyYXRvcl9zdHlsZSA9IE5vbmU7XG4gIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xufVxuXG50eXBlIGxhYmVsX3BhcmFtID0ge1xuICBsYWJlbF9icmVhazogbGFiZWxfYnJlYWs7XG4gIHNwYWNlX2FmdGVyX2xhYmVsIDogYm9vbDtcbiAgaW5kZW50X2FmdGVyX2xhYmVsIDogaW50O1xuICBsYWJlbF9zdHlsZSA6IHN0eWxlX25hbWUgb3B0aW9uO1xufVxuXG5sZXQgbGFiZWwgPSB7XG4gIGxhYmVsX2JyZWFrID0gYEF1dG87XG4gIHNwYWNlX2FmdGVyX2xhYmVsID0gdHJ1ZTtcbiAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgbGFiZWxfc3R5bGUgPSBOb25lO1xufVxuXG50eXBlIHQgPVxuICAgIEF0b20gb2Ygc3RyaW5nICogYXRvbV9wYXJhbVxuICB8IExpc3Qgb2YgKHN0cmluZyAqIHN0cmluZyAqIHN0cmluZyAqIGxpc3RfcGFyYW0pICogdCBsaXN0XG4gIHwgTGFiZWwgb2YgKHQgKiBsYWJlbF9wYXJhbSkgKiB0XG4gIHwgQ3VzdG9tIG9mIChGb3JtYXQuZm9ybWF0dGVyIC0+IHVuaXQpXG5cbnR5cGUgZXNjYXBlID1cbiAgICBbIGBOb25lXG4gICAgfCBgRXNjYXBlIG9mXG4gICAgICAgICgoc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdCkgLT4gc3RyaW5nIC0+IGludCAtPiBpbnQgLT4gdW5pdClcbiAgICB8IGBFc2NhcGVfc3RyaW5nIG9mIChzdHJpbmcgLT4gc3RyaW5nKSBdXG5cbnR5cGUgc3R5bGVzID0gKHN0eWxlX25hbWUgKiBzdHlsZSkgbGlzdFxuXG4oKlxuICAgVHJhbnNmb3JtIGEgdHJlZSBzdGFydGluZyBmcm9tIHRoZSBsZWF2ZXMsIHByb3BhZ2F0aW5nIGFuZCBtZXJnaW5nXG4gICBhY2N1bXVsYXRvcnMgdW50aWwgcmVhY2hpbmcgdGhlIHJvb3QuXG4qKVxubGV0IHByb3BhZ2F0ZV9mcm9tX2xlYWZfdG9fcm9vdFxuICB+aW5pdF9hY2MgICgqIGNyZWF0ZSBpbml0aWFsIGFjY3VtdWxhdG9yIGZvciBhIGxlYWYgKilcbiAgfm1lcmdlX2FjYyAoKiBtZXJnZSB0d28gYWNjdW11bGF0b3JzIGNvbWluZyBmcm9tIGNoaWxkIG5vZGVzICopXG4gIH5tYXBfbm9kZSAgKCogKG5vZGUsIGFjYykgLT4gKG5vZGUsIGFjYykgKilcbiAgeCA9XG5cbiAgbGV0IHJlYyBhdXggeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBBdG9tIF8gLT5cbiAgICAgICAgbGV0IGFjYyA9IGluaXRfYWNjIHggaW5cbiAgICAgICAgbWFwX25vZGUgeCBhY2NcbiAgICB8IExpc3QgKHBhcmFtLCBjaGlsZHJlbikgLT5cbiAgICAgICAgbGV0IG5ld19jaGlsZHJlbiwgYWNjcyA9IHJldl9zcGxpdCAoTGlzdC5yZXZfbWFwIGF1eCBjaGlsZHJlbikgaW5cbiAgICAgICAgbGV0IGFjYyA9IExpc3QuZm9sZF9sZWZ0IG1lcmdlX2FjYyAoaW5pdF9hY2MgeCkgYWNjcyBpblxuICAgICAgICBtYXBfbm9kZSAoTGlzdCAocGFyYW0sIG5ld19jaGlsZHJlbikpIGFjY1xuICAgIHwgTGFiZWwgKCh4MSwgcGFyYW0pLCB4MikgLT5cbiAgICAgICAgbGV0IGFjYzAgPSBpbml0X2FjYyB4IGluXG4gICAgICAgIGxldCBuZXdfeDEsIGFjYzEgPSBhdXggeDEgaW5cbiAgICAgICAgbGV0IG5ld194MiwgYWNjMiA9IGF1eCB4MiBpblxuICAgICAgICBsZXQgYWNjID0gbWVyZ2VfYWNjIChtZXJnZV9hY2MgYWNjMCBhY2MxKSBhY2MyIGluXG4gICAgICAgIG1hcF9ub2RlIChMYWJlbCAoKG5ld194MSwgcGFyYW0pLCBuZXdfeDIpKSBhY2NcbiAgICB8IEN1c3RvbSBfIC0+XG4gICAgICAgIGxldCBhY2MgPSBpbml0X2FjYyB4IGluXG4gICAgICAgIG1hcF9ub2RlIHggYWNjXG4gIGluXG4gIGF1eCB4XG5cbigqXG4gICBDb252ZXJ0IHdyYXBwYWJsZSBsaXN0cyBpbnRvIHZlcnRpY2FsIGxpc3RzIGlmIGFueSBvZiB0aGVpciBkZXNjZW5kYW50c1xuICAgaGFzIHRoZSBhdHRyaWJ1dGUgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrc19yZWMuXG4qKVxubGV0IHByb3BhZ2F0ZV9mb3JjZWRfYnJlYWtzIHggPVxuICAoKiBhY2MgPSB3aGV0aGVyIHRvIGZvcmNlIGJyZWFrcyBpbiB3cmFwcGFibGUgbGlzdHMgb3IgbGFiZWxzICopXG4gIGxldCBpbml0X2FjYyA9IGZ1bmN0aW9uXG4gICAgfCBMaXN0ICgoXywgXywgXywgeyB3cmFwX2JvZHkgPSBgRm9yY2VfYnJlYWtzX3JlYzsgXyB9KSwgXylcbiAgICB8IExhYmVsICgoXywgeyBsYWJlbF9icmVhayA9IGBBbHdheXNfcmVjOyBfIH0pLCBfKSAtPiB0cnVlXG4gICAgfCBBdG9tIF9cbiAgICB8IExhYmVsIF9cbiAgICB8IEN1c3RvbSBfXG4gICAgfCBMaXN0IF8gLT4gZmFsc2VcbiAgaW5cbiAgbGV0IG1lcmdlX2FjYyBmb3JjZV9icmVha3MxIGZvcmNlX2JyZWFrczIgPVxuICAgIGZvcmNlX2JyZWFrczEgfHwgZm9yY2VfYnJlYWtzMlxuICBpblxuICBsZXQgbWFwX25vZGUgeCBmb3JjZV9icmVha3MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrc19yZWM7IF8gfSksIF8pIC0+IHgsIHRydWVcbiAgICB8IExpc3QgKChfLCBfLCBfLCB7IHdyYXBfYm9keSA9IGBGb3JjZV9icmVha3M7IF8gfSksIF8pIC0+IHgsIGZvcmNlX2JyZWFrc1xuXG4gICAgfCBMaXN0ICgob3AsIHNlcCwgY2wsICh7IHdyYXBfYm9keSA9IChgV3JhcF9hdG9tc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBOZXZlcl93cmFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFsd2F5c193cmFwKTsgXyB9IGFzIHApKSxcbiAgICAgICAgICAgIGNoaWxkcmVuKSAtPlxuICAgICAgICBpZiBmb3JjZV9icmVha3MgdGhlblxuICAgICAgICAgIGxldCBwID0geyBwIHdpdGggd3JhcF9ib2R5ID0gYEZvcmNlX2JyZWFrcyB9IGluXG4gICAgICAgICAgTGlzdCAoKG9wLCBzZXAsIGNsLCBwKSwgY2hpbGRyZW4pLCB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB4LCBmYWxzZVxuXG4gICAgfCBMYWJlbCAoKGEsICh7IGxhYmVsX2JyZWFrID0gYEF1dG87IF8gfSBhcyBscCkpLCBiKSAtPlxuICAgICAgICBpZiBmb3JjZV9icmVha3MgdGhlblxuICAgICAgICAgIGxldCBscCA9IHsgbHAgd2l0aCBsYWJlbF9icmVhayA9IGBBbHdheXMgfSBpblxuICAgICAgICAgIExhYmVsICgoYSwgbHApLCBiKSwgdHJ1ZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgeCwgZmFsc2VcblxuICAgIHwgTGlzdCAoKF8sIF8sIF8sIHsgd3JhcF9ib2R5ID0gYE5vX2JyZWFrczsgXyB9KSwgXylcbiAgICB8IExhYmVsICgoXywgeyBsYWJlbF9icmVhayA9IChgQWx3YXlzIHwgYEFsd2F5c19yZWMgfCBgTmV2ZXIpOyBfIH0pLCBfKVxuICAgIHwgQXRvbSBfXG4gICAgfCBDdXN0b20gXyAtPiB4LCBmb3JjZV9icmVha3NcbiAgaW5cbiAgbGV0IG5ld194LCBfZm9yY2VkX2JyZWFrcyA9XG4gICAgcHJvcGFnYXRlX2Zyb21fbGVhZl90b19yb290XG4gICAgICB+aW5pdF9hY2NcbiAgICAgIH5tZXJnZV9hY2NcbiAgICAgIH5tYXBfbm9kZVxuICAgICAgeFxuICBpblxuICBuZXdfeFxuXG5tb2R1bGUgUHJldHR5ID1cbnN0cnVjdFxuICAoKlxuICAgICBSZXdyaXRlIHRoZSB0cmVlIHRvIGJlIHByaW50ZWQuXG4gICAgIEN1cnJlbnRseSwgdGhpcyBpcyB1c2VkIG9ubHkgdG8gaGFuZGxlIGBGb3JjZV9icmVha3NfcmVjLlxuICAqKVxuICBsZXQgcmV3cml0ZSB4ID0gcHJvcGFnYXRlX2ZvcmNlZF9icmVha3MgeFxuXG4gICgqXG4gICAgUmVsaWVzIG9uIHRoZSBmYWN0IHRoYXQgbWFya19vcGVuX3RhZyBhbmQgbWFya19jbG9zZV90YWdcbiAgICBhcmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgY2FsbGluZyBwcF9vdXRwdXRfc3RyaW5nIG9uY2UuXG4gICAgSXQncyBhIHJlYXNvbmFibGUgYXNzdW1wdGlvbiBhbHRob3VnaCBub3QgZ3VhcmFudGVlZCBieSB0aGVcbiAgICBkb2N1bWVudGF0aW9uIG9mIHRoZSBGb3JtYXQgbW9kdWxlLlxuICAqKVxuICBsZXQgc2V0X2VzY2FwZSBmbXQgZXNjYXBlID1cbiAgICBsZXQgcHJpbnQwLCBmbHVzaDAgPSBGb3JtYXQucHBfZ2V0X2Zvcm1hdHRlcl9vdXRwdXRfZnVuY3Rpb25zIGZtdCAoKSBpblxuICAgIGxldCB0YWdmMCA9IEZvcm1hdC5wcF9nZXRfZm9ybWF0dGVyX3N0YWdfZnVuY3Rpb25zIGZtdCAoKSBpblxuXG4gICAgbGV0IGlzX3RhZyA9IHJlZiBmYWxzZSBpblxuXG4gICAgbGV0IG1vdCB0YWcgPVxuICAgICAgaXNfdGFnIDo9IHRydWU7XG4gICAgICB0YWdmMC5tYXJrX29wZW5fc3RhZyB0YWdcbiAgICBpblxuXG4gICAgbGV0IG1jdCB0YWcgPVxuICAgICAgaXNfdGFnIDo9IHRydWU7XG4gICAgICB0YWdmMC5tYXJrX2Nsb3NlX3N0YWcgdGFnXG4gICAgaW5cblxuICAgIGxldCBwcmludCBzIHAgbiA9XG4gICAgICBpZiAhaXNfdGFnIHRoZW5cbiAgICAgICAgKHByaW50MCBzIHAgbjtcbiAgICAgICAgIGlzX3RhZyA6PSBmYWxzZSlcbiAgICAgIGVsc2VcbiAgICAgICAgZXNjYXBlIHByaW50MCBzIHAgblxuICAgIGluXG5cbiAgICBsZXQgdGFnZiA9IHtcbiAgICAgIHRhZ2YwIHdpdGhcbiAgICAgICAgbWFya19vcGVuX3N0YWcgPSBtb3Q7XG4gICAgICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1jdFxuICAgIH1cbiAgICBpblxuICAgIEZvcm1hdC5wcF9zZXRfZm9ybWF0dGVyX291dHB1dF9mdW5jdGlvbnMgZm10IHByaW50IGZsdXNoMDtcbiAgICBGb3JtYXQucHBfc2V0X2Zvcm1hdHRlcl9zdGFnX2Z1bmN0aW9ucyBmbXQgdGFnZlxuXG5cbiAgbGV0IHNldF9lc2NhcGVfc3RyaW5nIGZtdCBlc2MgPVxuICAgIGxldCBlc2NhcGUgcHJpbnQgcyBwIG4gPVxuICAgICAgbGV0IHMwID0gU3RyaW5nLnN1YiBzIHAgbiBpblxuICAgICAgbGV0IHMxID0gZXNjIHMwIGluXG4gICAgICBwcmludCBzMSAwIChTdHJpbmcubGVuZ3RoIHMxKVxuICAgIGluXG4gICAgc2V0X2VzY2FwZSBmbXQgZXNjYXBlXG5cblxuICBsZXQgZGVmaW5lX3N0eWxlcyBmbXQgZXNjYXBlIGwgPVxuICAgIGlmIGwgPD4gW10gdGhlbiAoXG4gICAgICBGb3JtYXQucHBfc2V0X3RhZ3MgZm10IHRydWU7XG4gICAgICBsZXQgdGJsMSA9IEhhc2h0YmwuY3JlYXRlICgyICogTGlzdC5sZW5ndGggbCkgaW5cbiAgICAgIGxldCB0YmwyID0gSGFzaHRibC5jcmVhdGUgKDIgKiBMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgTGlzdC5pdGVyIChcbiAgICAgICAgZnVuIChzdHlsZV9uYW1lLCBzdHlsZSkgLT5cbiAgICAgICAgICBIYXNodGJsLmFkZCB0YmwxIHN0eWxlX25hbWUgc3R5bGUudGFnX29wZW47XG4gICAgICAgICAgSGFzaHRibC5hZGQgdGJsMiBzdHlsZV9uYW1lIHN0eWxlLnRhZ19jbG9zZVxuICAgICAgKSBsO1xuICAgICAgbGV0IG1hcmtfb3Blbl90YWcgPSBmdW5jdGlvblxuICAgICAgICB8IEZvcm1hdC5TdHJpbmdfdGFnIHN0eWxlX25hbWUgLT5cbiAgICAgICAgICAgICh0cnkgSGFzaHRibC5maW5kIHRibDEgc3R5bGVfbmFtZVxuICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFwiXCIpXG4gICAgICAgIHwgXyAtPiBcIlwiXG4gICAgICBpblxuICAgICAgbGV0IG1hcmtfY2xvc2VfdGFnID0gZnVuY3Rpb25cbiAgICAgICAgfCBGb3JtYXQuU3RyaW5nX3RhZyBzdHlsZV9uYW1lIC0+XG4gICAgICAgICAgICAodHJ5IEhhc2h0YmwuZmluZCB0YmwyIHN0eWxlX25hbWVcbiAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBcIlwiKVxuICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgIFwiXCJcbiAgICAgIGluXG5cbiAgICAgIGxldCB0YWdmID0ge1xuICAgICAgICAoRm9ybWF0LnBwX2dldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10ICgpKSB3aXRoXG4gICAgICAgICAgbWFya19vcGVuX3N0YWcgPSBtYXJrX29wZW5fdGFnO1xuICAgICAgICAgIG1hcmtfY2xvc2Vfc3RhZyA9IG1hcmtfY2xvc2VfdGFnXG4gICAgICB9XG4gICAgICBpblxuICAgICAgRm9ybWF0LnBwX3NldF9mb3JtYXR0ZXJfc3RhZ19mdW5jdGlvbnMgZm10IHRhZ2ZcbiAgICApO1xuXG4gICAgKG1hdGNoIGVzY2FwZSB3aXRoXG4gICAgICAgICBgTm9uZSAtPiAoKVxuICAgICAgIHwgYEVzY2FwZSBlc2MgLT4gc2V0X2VzY2FwZSBmbXQgZXNjXG4gICAgICAgfCBgRXNjYXBlX3N0cmluZyBlc2MgLT4gc2V0X2VzY2FwZV9zdHJpbmcgZm10IGVzYylcblxuXG4gIGxldCBwcF9vcGVuX3hib3ggZm10IHAgaW5kZW50ID1cbiAgICBtYXRjaCBwLndyYXBfYm9keSB3aXRoXG4gICAgICAgIGBBbHdheXNfd3JhcFxuICAgICAgfCBgTmV2ZXJfd3JhcFxuICAgICAgfCBgV3JhcF9hdG9tcyAtPiBGb3JtYXQucHBfb3Blbl9odmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBGb3JjZV9icmVha3NcbiAgICAgIHwgYEZvcmNlX2JyZWFrc19yZWMgLT4gRm9ybWF0LnBwX29wZW5fdmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBOb19icmVha3MgLT4gRm9ybWF0LnBwX29wZW5faGJveCBmbXQgKClcblxuICBsZXQgZXh0cmFfYm94IHAgbCA9XG4gICAgbGV0IHdyYXAgPVxuICAgICAgbWF0Y2ggcC53cmFwX2JvZHkgd2l0aFxuICAgICAgICAgIGBBbHdheXNfd3JhcCAtPiB0cnVlXG4gICAgICAgIHwgYE5ldmVyX3dyYXBcbiAgICAgICAgfCBgRm9yY2VfYnJlYWtzXG4gICAgICAgIHwgYEZvcmNlX2JyZWFrc19yZWNcbiAgICAgICAgfCBgTm9fYnJlYWtzIC0+IGZhbHNlXG4gICAgICAgIHwgYFdyYXBfYXRvbXMgLT5cbiAgICAgICAgICAgIExpc3QuZm9yX2FsbCAoZnVuY3Rpb24gQXRvbSBfIC0+IHRydWUgfCBfIC0+IGZhbHNlKSBsXG4gICAgaW5cbiAgICBpZiB3cmFwIHRoZW5cbiAgICAgICgoZnVuIGZtdCAtPiBGb3JtYXQucHBfb3Blbl9ob3Zib3ggZm10IDApLFxuICAgICAgIChmdW4gZm10IC0+IEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpKSlcbiAgICBlbHNlXG4gICAgICAoKGZ1biBfIC0+ICgpKSxcbiAgICAgICAoZnVuIF8gLT4gKCkpKVxuXG5cbiAgbGV0IHBwX29wZW5fbm9uYWxpZ25lZF9ib3ggZm10IHAgaW5kZW50IGwgPVxuICAgIG1hdGNoIHAud3JhcF9ib2R5IHdpdGhcbiAgICAgICAgYEFsd2F5c193cmFwIC0+IEZvcm1hdC5wcF9vcGVuX2hvdmJveCBmbXQgaW5kZW50XG4gICAgICB8IGBOZXZlcl93cmFwIC0+IEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYFdyYXBfYXRvbXMgLT5cbiAgICAgICAgICBpZiBMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uIEF0b20gXyAtPiB0cnVlIHwgXyAtPiBmYWxzZSkgbCB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfb3Blbl9ob3Zib3ggZm10IGluZGVudFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEZvcm1hdC5wcF9vcGVuX2h2Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYEZvcmNlX2JyZWFrc1xuICAgICAgfCBgRm9yY2VfYnJlYWtzX3JlYyAtPiBGb3JtYXQucHBfb3Blbl92Ym94IGZtdCBpbmRlbnRcbiAgICAgIHwgYE5vX2JyZWFrcyAtPiBGb3JtYXQucHBfb3Blbl9oYm94IGZtdCAoKVxuXG5cbiAgbGV0IG9wZW5fdGFnIGZtdCA9IGZ1bmN0aW9uXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT4gRm9ybWF0LnBwX29wZW5fc3RhZyBmbXQgKEZvcm1hdC5TdHJpbmdfdGFnIHMpXG5cbiAgbGV0IGNsb3NlX3RhZyBmbXQgPSBmdW5jdGlvblxuICAgICAgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBfIC0+IEZvcm1hdC5wcF9jbG9zZV9zdGFnIGZtdCAoKVxuXG4gIGxldCB0YWdfc3RyaW5nIGZtdCBvIHMgPVxuICAgIG1hdGNoIG8gd2l0aFxuICAgICAgICBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IHNcbiAgICAgIHwgU29tZSB0YWcgLT5cbiAgICAgICAgICBGb3JtYXQucHBfb3Blbl9zdGFnIGZtdCAoRm9ybWF0LlN0cmluZ190YWcgdGFnKTtcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBzO1xuICAgICAgICAgIEZvcm1hdC5wcF9jbG9zZV9zdGFnIGZtdCAoKVxuXG4gIGxldCByZWMgZnByaW50X3QgZm10ID0gZnVuY3Rpb25cbiAgICAgIEF0b20gKHMsIHApIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuYXRvbV9zdHlsZSBzO1xuXG4gICAgfCBMaXN0ICgoXywgXywgXywgcCkgYXMgcGFyYW0sIGwpIC0+XG4gICAgICAgIG9wZW5fdGFnIGZtdCBwLmxpc3Rfc3R5bGU7XG4gICAgICAgIGlmIHAuYWxpZ25fY2xvc2luZyB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3QgZm10IE5vbmUgcGFyYW0gbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3QyIGZtdCBwYXJhbSBsO1xuICAgICAgICBjbG9zZV90YWcgZm10IHAubGlzdF9zdHlsZVxuXG4gICAgfCBMYWJlbCAobGFiZWwsIHgpIC0+IGZwcmludF9wYWlyIGZtdCBsYWJlbCB4XG4gICAgfCBDdXN0b20gZiAtPiBmIGZtdFxuXG4gIGFuZCBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX2xlZnQgZm10IHAgc2VwIGhkIHRsID1cbiAgICBvcGVuX3RhZyBmbXQgcC5ib2R5X3N0eWxlO1xuICAgIGZwcmludF90IGZtdCBoZDtcbiAgICBMaXN0Lml0ZXIgKFxuICAgICAgZnVuIHggLT5cbiAgICAgICAgaWYgcC5zcGFjZV9iZWZvcmVfc2VwYXJhdG9yIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIiBcIjtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcbiAgICBjbG9zZV90YWcgZm10IHAuYm9keV9zdHlsZVxuXG4gIGFuZCBmcHJpbnRfbGlzdF9ib2R5X3N0aWNrX3JpZ2h0IGZtdCBwIHNlcCBoZCB0bCA9XG4gICAgb3Blbl90YWcgZm10IHAuYm9keV9zdHlsZTtcbiAgICBmcHJpbnRfdCBmbXQgaGQ7XG4gICAgTGlzdC5pdGVyIChcbiAgICAgIGZ1biB4IC0+XG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuc2VwYXJhdG9yX3N0eWxlIHNlcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICBmcHJpbnRfdCBmbXQgeFxuICAgICkgdGw7XG4gICAgY2xvc2VfdGFnIGZtdCBwLmJvZHlfc3R5bGVcblxuICBhbmQgZnByaW50X29wdF9sYWJlbCBmbXQgPSBmdW5jdGlvblxuICAgICAgTm9uZSAtPiAoKVxuICAgIHwgU29tZSAobGFiLCBscCkgLT5cbiAgICAgICAgb3Blbl90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICBmcHJpbnRfdCBmbXQgbGFiO1xuICAgICAgICBjbG9zZV90YWcgZm10IGxwLmxhYmVsX3N0eWxlO1xuICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCJcblxuICAoKiBFaXRoZXIgaG9yaXpvbnRhbCBvciB2ZXJ0aWNhbCBsaXN0ICopXG4gIGFuZCBmcHJpbnRfbGlzdCBmbXQgbGFiZWwgKChvcCwgX3NlcCwgY2wsIHApIGFzIHBhcmFtKSA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPlxuICAgICAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5vcGVuaW5nX3N0eWxlIG9wO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgfHwgcC5zcGFjZV9iZWZvcmVfY2xvc2luZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbFxuXG4gICAgfCBoZCA6OiB0bCBhcyBsIC0+XG5cbiAgICAgICAgaWYgdGwgPSBbXSB8fCBwLnNlcGFyYXRvcnNfc3RpY2tfbGVmdCB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3Rfc3RpY2tfbGVmdCBmbXQgbGFiZWwgcGFyYW0gaGQgdGwgbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3Rfc3RpY2tfcmlnaHQgZm10IGxhYmVsIHBhcmFtIGhkIHRsIGxcblxuXG4gIGFuZCBmcHJpbnRfbGlzdF9zdGlja19sZWZ0IGZtdCBsYWJlbCAob3AsIHNlcCwgY2wsIHApIGhkIHRsIGwgPVxuICAgIGxldCBpbmRlbnQgPSBwLmluZGVudF9ib2R5IGluXG4gICAgcHBfb3Blbl94Ym94IGZtdCBwIGluZGVudDtcbiAgICBmcHJpbnRfb3B0X2xhYmVsIGZtdCBsYWJlbDtcblxuICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcblxuICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZm10ICgpXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LnBwX3ByaW50X2N1dCBmbXQgKCk7XG5cbiAgICBsZXQgb3Blbl9leHRyYSwgY2xvc2VfZXh0cmEgPSBleHRyYV9ib3ggcCBsIGluXG4gICAgb3Blbl9leHRyYSBmbXQ7XG4gICAgZnByaW50X2xpc3RfYm9keV9zdGlja19sZWZ0IGZtdCBwIHNlcCBoZCB0bDtcbiAgICBjbG9zZV9leHRyYSBmbXQ7XG5cbiAgICBpZiBwLnNwYWNlX2JlZm9yZV9jbG9zaW5nIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSAoLWluZGVudClcbiAgICBlbHNlXG4gICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgKC1pbmRlbnQpO1xuICAgIHRhZ19zdHJpbmcgZm10IHAuY2xvc2luZ19zdHlsZSBjbDtcbiAgICBGb3JtYXQucHBfY2xvc2VfYm94IGZtdCAoKVxuXG4gIGFuZCBmcHJpbnRfbGlzdF9zdGlja19yaWdodCBmbXQgbGFiZWwgKG9wLCBzZXAsIGNsLCBwKSBoZCB0bCBsID1cbiAgICBsZXQgYmFzZV9pbmRlbnQgPSBwLmluZGVudF9ib2R5IGluXG4gICAgbGV0IHNlcF9pbmRlbnQgPVxuICAgICAgU3RyaW5nLmxlbmd0aCBzZXAgKyAoaWYgcC5zcGFjZV9hZnRlcl9zZXBhcmF0b3IgdGhlbiAxIGVsc2UgMClcbiAgICBpblxuICAgIGxldCBpbmRlbnQgPSBiYXNlX2luZGVudCArIHNlcF9pbmRlbnQgaW5cblxuICAgIHBwX29wZW5feGJveCBmbXQgcCBpbmRlbnQ7XG4gICAgZnByaW50X29wdF9sYWJlbCBmbXQgbGFiZWw7XG5cbiAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG5cbiAgICBpZiBwLnNwYWNlX2FmdGVyX29wZW5pbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X3NwYWNlIGZtdCAoKVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9jdXQgZm10ICgpO1xuXG4gICAgbGV0IG9wZW5fZXh0cmEsIGNsb3NlX2V4dHJhID0gZXh0cmFfYm94IHAgbCBpblxuICAgIG9wZW5fZXh0cmEgZm10O1xuXG4gICAgZnByaW50X3QgZm10IGhkO1xuICAgIExpc3QuaXRlciAoXG4gICAgICBmdW4geCAtPlxuICAgICAgICBpZiBwLnNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSAoLXNlcF9pbmRlbnQpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfYnJlYWsgZm10IDAgKC1zZXBfaW5kZW50KTtcbiAgICAgICAgdGFnX3N0cmluZyBmbXQgcC5zZXBhcmF0b3Jfc3R5bGUgc2VwO1xuICAgICAgICBpZiBwLnNwYWNlX2FmdGVyX3NlcGFyYXRvciB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG4gICAgICAgIGZwcmludF90IGZtdCB4XG4gICAgKSB0bDtcblxuICAgIGNsb3NlX2V4dHJhIGZtdDtcblxuICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAxICgtaW5kZW50KVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMCAoLWluZGVudCk7XG4gICAgdGFnX3N0cmluZyBmbXQgcC5jbG9zaW5nX3N0eWxlIGNsO1xuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cblxuXG4gICgqIGFsaWduX2Nsb3NpbmcgPSBmYWxzZSAqKVxuICBhbmQgZnByaW50X2xpc3QyIGZtdCAob3AsIHNlcCwgY2wsIHApID0gZnVuY3Rpb25cbiAgICAgIFtdIC0+XG4gICAgICAgIHRhZ19zdHJpbmcgZm10IHAub3BlbmluZ19zdHlsZSBvcDtcbiAgICAgICAgaWYgcC5zcGFjZV9hZnRlcl9vcGVuaW5nIHx8IHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2xcblxuICAgIHwgaGQgOjogdGwgYXMgbCAtPlxuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLm9wZW5pbmdfc3R5bGUgb3A7XG4gICAgICAgIGlmIHAuc3BhY2VfYWZ0ZXJfb3BlbmluZyB0aGVuXG4gICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIgXCI7XG5cbiAgICAgICAgcHBfb3Blbl9ub25hbGlnbmVkX2JveCBmbXQgcCAwIGwgO1xuICAgICAgICBpZiBwLnNlcGFyYXRvcnNfc3RpY2tfbGVmdCB0aGVuXG4gICAgICAgICAgZnByaW50X2xpc3RfYm9keV9zdGlja19sZWZ0IGZtdCBwIHNlcCBoZCB0bFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnByaW50X2xpc3RfYm9keV9zdGlja19yaWdodCBmbXQgcCBzZXAgaGQgdGw7XG4gICAgICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpO1xuXG4gICAgICAgIGlmIHAuc3BhY2VfYmVmb3JlX2Nsb3NpbmcgdGhlblxuICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiIFwiO1xuICAgICAgICB0YWdfc3RyaW5nIGZtdCBwLmNsb3Npbmdfc3R5bGUgY2xcblxuXG4gICgqIFByaW50aW5nIGEgbGFiZWw6dmFsdWUgcGFpci5cblxuICAgICBUaGUgb3BlbmluZyBicmFja2V0IHN0YXlzIG9uIHRoZSBzYW1lIGxpbmUgYXMgdGhlIGtleSwgbm8gbWF0dGVyIHdoYXQsXG4gICAgIGFuZCB0aGUgY2xvc2luZyBicmFja2V0IGlzIGVpdGhlciBvbiB0aGUgc2FtZSBsaW5lXG4gICAgIG9yIHZlcnRpY2FsbHkgYWxpZ25lZCB3aXRoIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGtleS5cbiAgKilcbiAgYW5kIGZwcmludF9wYWlyIGZtdCAoKGxhYiwgbHApIGFzIGxhYmVsKSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgTGlzdCAoKG9wLCBzZXAsIGNsLCBwKSwgbCkgd2hlbiBwLnN0aWNrX3RvX2xhYmVsICYmIHAuYWxpZ25fY2xvc2luZyAtPlxuICAgICAgICAgIGZwcmludF9saXN0IGZtdCAoU29tZSBsYWJlbCkgKG9wLCBzZXAsIGNsLCBwKSBsXG5cbiAgICAgIHwgXyAtPlxuICAgICAgICAgIGxldCBpbmRlbnQgPSBscC5pbmRlbnRfYWZ0ZXJfbGFiZWwgaW5cbiAgICAgICAgICBGb3JtYXQucHBfb3Blbl9odmJveCBmbXQgMDtcblxuICAgICAgICAgIG9wZW5fdGFnIGZtdCBscC5sYWJlbF9zdHlsZTtcbiAgICAgICAgICBmcHJpbnRfdCBmbXQgbGFiO1xuICAgICAgICAgIGNsb3NlX3RhZyBmbXQgbHAubGFiZWxfc3R5bGU7XG5cbiAgICAgICAgICAobWF0Y2ggbHAubGFiZWxfYnJlYWsgd2l0aFxuICAgICAgICAgICB8IGBBdXRvIC0+XG4gICAgICAgICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9icmVhayBmbXQgMSBpbmRlbnRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2JyZWFrIGZtdCAwIGluZGVudFxuICAgICAgICAgICB8IGBBbHdheXNcbiAgICAgICAgICAgfCBgQWx3YXlzX3JlYyAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LnBwX2ZvcmNlX25ld2xpbmUgZm10ICgpO1xuICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgKFN0cmluZy5tYWtlIGluZGVudCAnICcpXG4gICAgICAgICAgIHwgYE5ldmVyIC0+XG4gICAgICAgICAgICAgICBpZiBscC5zcGFjZV9hZnRlcl9sYWJlbCB0aGVuXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9jaGFyIGZtdCAnICdcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICApO1xuICAgICAgICAgIGZwcmludF90IGZtdCB4O1xuICAgICAgICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZm10ICgpXG5cbiAgbGV0IHRvX2Zvcm1hdHRlciBmbXQgeCA9XG4gICAgbGV0IHggPSByZXdyaXRlIHggaW5cbiAgICBmcHJpbnRfdCBmbXQgeDtcbiAgICBGb3JtYXQucHBfcHJpbnRfZmx1c2ggZm10ICgpXG5cbiAgbGV0IHRvX2J1ZmZlciA/KGVzY2FwZSA9IGBOb25lKSA/KHN0eWxlcyA9IFtdKSBidWYgeCA9XG4gICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgIGRlZmluZV9zdHlsZXMgZm10IGVzY2FwZSBzdHlsZXM7XG4gICAgdG9fZm9ybWF0dGVyIGZtdCB4XG5cbiAgbGV0IHRvX3N0cmluZyA/ZXNjYXBlID9zdHlsZXMgeCA9XG4gICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgNTAwIGluXG4gICAgdG9fYnVmZmVyID9lc2NhcGUgP3N0eWxlcyBidWYgeDtcbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbiAgbGV0IHRvX2NoYW5uZWwgPyhlc2NhcGUgPSBgTm9uZSkgPyhzdHlsZXMgPSBbXSkgb2MgeCA9XG4gICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgICBkZWZpbmVfc3R5bGVzIGZtdCBlc2NhcGUgc3R5bGVzO1xuICAgIHRvX2Zvcm1hdHRlciBmbXQgeFxuXG4gIGxldCB0b19zdGRvdXQgP2VzY2FwZSA/c3R5bGVzIHggPSB0b19jaGFubmVsID9lc2NhcGUgP3N0eWxlcyBzdGRvdXQgeFxuICBsZXQgdG9fc3RkZXJyID9lc2NhcGUgP3N0eWxlcyB4ID0gdG9fY2hhbm5lbCA/ZXNjYXBlID9zdHlsZXMgc3RkZXJyIHhcblxuZW5kXG5cblxuXG5cbm1vZHVsZSBDb21wYWN0ID1cbnN0cnVjdFxuICBvcGVuIFByaW50ZlxuXG4gIGxldCByZWMgZnByaW50X3QgYnVmID0gZnVuY3Rpb25cbiAgICAgIEF0b20gKHMsIF8pIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIGJ1ZiBzXG4gICAgfCBMaXN0IChwYXJhbSwgbCkgLT4gZnByaW50X2xpc3QgYnVmIHBhcmFtIGxcbiAgICB8IExhYmVsIChsYWJlbCwgeCkgLT4gZnByaW50X3BhaXIgYnVmIGxhYmVsIHhcbiAgICB8IEN1c3RvbSBmIC0+XG4gICAgICAgICgqIFdpbGwgbW9zdCBsaWtlbHkgbm90IGJlIGNvbXBhY3QgKilcbiAgICAgICAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZiBpblxuICAgICAgICBmIGZtdDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuXG4gIGFuZCBmcHJpbnRfbGlzdCBidWYgKG9wLCBzZXAsIGNsLCBfKSA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiBicHJpbnRmIGJ1ZiBcIiVzJXNcIiBvcCBjbFxuICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgb3A7XG4gICAgICAgIGZwcmludF90IGJ1ZiB4O1xuICAgICAgICBMaXN0Lml0ZXIgKFxuICAgICAgICAgIGZ1biB4IC0+XG4gICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBidWYgc2VwO1xuICAgICAgICAgICAgZnByaW50X3QgYnVmIHhcbiAgICAgICAgKSB0bDtcbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgYnVmIGNsXG5cbiAgYW5kIGZwcmludF9wYWlyIGJ1ZiAobGFiZWwsIF8pIHggPVxuICAgIGZwcmludF90IGJ1ZiBsYWJlbDtcbiAgICBmcHJpbnRfdCBidWYgeFxuXG5cbiAgbGV0IHRvX2J1ZmZlciBidWYgeCA9IGZwcmludF90IGJ1ZiB4XG5cbiAgbGV0IHRvX3N0cmluZyB4ID1cbiAgICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSA1MDAgaW5cbiAgICB0b19idWZmZXIgYnVmIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIGJ1ZlxuXG4gIGxldCB0b19mb3JtYXR0ZXIgZm10IHggPVxuICAgIGxldCBzID0gdG9fc3RyaW5nIHggaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiIHM7XG4gICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuXG4gIGxldCB0b19jaGFubmVsIG9jIHggPVxuICAgIGxldCBidWYgPSBCdWZmZXIuY3JlYXRlIDUwMCBpblxuICAgIHRvX2J1ZmZlciBidWYgeDtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBidWZcblxuICBsZXQgdG9fc3Rkb3V0IHggPSB0b19jaGFubmVsIHN0ZG91dCB4XG4gIGxldCB0b19zdGRlcnIgeCA9IHRvX2NoYW5uZWwgc3RkZXJyIHhcbmVuZFxuXG5cblxuXG4oKiBPYnNvbGV0ZSAqKVxubW9kdWxlIFBhcmFtID1cbnN0cnVjdFxuICBsZXQgbGlzdF90cnVlID0ge1xuICAgIHNwYWNlX2FmdGVyX29wZW5pbmcgPSB0cnVlO1xuICAgIHNwYWNlX2FmdGVyX3NlcGFyYXRvciA9IHRydWU7XG4gICAgc3BhY2VfYmVmb3JlX3NlcGFyYXRvciA9IHRydWU7XG4gICAgc2VwYXJhdG9yc19zdGlja19sZWZ0ID0gdHJ1ZTtcbiAgICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IHRydWU7XG4gICAgc3RpY2tfdG9fbGFiZWwgPSB0cnVlO1xuICAgIGFsaWduX2Nsb3NpbmcgPSB0cnVlO1xuICAgIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICAgIGluZGVudF9ib2R5ID0gMjtcbiAgICBsaXN0X3N0eWxlID0gTm9uZTtcbiAgICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgICBib2R5X3N0eWxlID0gTm9uZTtcbiAgICBzZXBhcmF0b3Jfc3R5bGUgPSBOb25lO1xuICAgIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xuICB9XG5cbiAgbGV0IGxpc3RfZmFsc2UgPSB7XG4gICAgc3BhY2VfYWZ0ZXJfb3BlbmluZyA9IGZhbHNlO1xuICAgIHNwYWNlX2FmdGVyX3NlcGFyYXRvciA9IGZhbHNlO1xuICAgIHNwYWNlX2JlZm9yZV9zZXBhcmF0b3IgPSBmYWxzZTtcbiAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSBmYWxzZTtcbiAgICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IGZhbHNlO1xuICAgIHN0aWNrX3RvX2xhYmVsID0gZmFsc2U7XG4gICAgYWxpZ25fY2xvc2luZyA9IGZhbHNlO1xuICAgIHdyYXBfYm9keSA9IGBXcmFwX2F0b21zO1xuICAgIGluZGVudF9ib2R5ID0gMjtcbiAgICBsaXN0X3N0eWxlID0gTm9uZTtcbiAgICBvcGVuaW5nX3N0eWxlID0gTm9uZTtcbiAgICBib2R5X3N0eWxlID0gTm9uZTtcbiAgICBzZXBhcmF0b3Jfc3R5bGUgPSBOb25lO1xuICAgIGNsb3Npbmdfc3R5bGUgPSBOb25lO1xuICB9XG5cbiAgbGV0IGxhYmVsX3RydWUgPSB7XG4gICAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgICBzcGFjZV9hZnRlcl9sYWJlbCA9IHRydWU7XG4gICAgaW5kZW50X2FmdGVyX2xhYmVsID0gMjtcbiAgICBsYWJlbF9zdHlsZSA9IE5vbmU7XG4gIH1cblxuICBsZXQgbGFiZWxfZmFsc2UgPSB7XG4gICAgbGFiZWxfYnJlYWsgPSBgQXV0bztcbiAgICBzcGFjZV9hZnRlcl9sYWJlbCA9IGZhbHNlO1xuICAgIGluZGVudF9hZnRlcl9sYWJlbCA9IDI7XG4gICAgbGFiZWxfc3R5bGUgPSBOb25lO1xuICB9XG5lbmRcbiIsImV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxubGV0IGVycm9yIHMgPSByYWlzZSAoRXJyb3IgcylcblxuXG4oKlxuICBEZWJ1Z2dpbmcgdXRpbGl0aWVzLlxuKilcblxubGV0IHN0cmluZzhfb2ZfaW50IHggPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSA4IGluXG4gIGZvciBpID0gMCB0byA3IGRvXG4gICAgQnl0ZXMuc2V0IHMgKDctaSkgKENoYXIuY2hyICgweGZmIGxhbmQgKHggbHNyICg4ICogaSkpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHNcblxubGV0IHN0cmluZzRfb2ZfaW50IHggPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSA0IGluXG4gIGZvciBpID0gMCB0byAzIGRvXG4gICAgQnl0ZXMuc2V0IHMgKDMtaSkgKENoYXIuY2hyICgweGZmIGxhbmQgKHggbHNyICg4ICogaSkpKSlcbiAgZG9uZTtcbiAgQnl0ZXMudG9fc3RyaW5nIHNcblxubGV0IHByaW50X2JpdHMgPyhwb3MgPSAwKSA/bGVuIHMgPVxuICBsZXQgc2xlbiA9IFN0cmluZy5sZW5ndGggcyBpblxuICBpZiBwb3MgPCAwIHx8IChwb3MgPiAwICYmIHBvcyA+PSBzbGVuKSB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCaV91dGlsLnByaW50X2JpdHNcIjtcbiAgbGV0IGxlbiA9XG4gICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgTm9uZSAtPiBzbGVuIC0gcG9zXG4gICAgICB8IFNvbWUgbGVuIC0+XG4gICAgICAgICAgaWYgbGVuID4gc2xlbiAtIHBvcyB0aGVuIGludmFsaWRfYXJnIFwiQmlfdXRpbC5wcmludF9iaXRzXCJcbiAgICAgICAgICBlbHNlIGxlblxuICBpblxuXG4gIGxldCByID0gQnl0ZXMuY3JlYXRlIChsZW4gKiA5KSBpblxuICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgIGxldCBrID0gaSAqIDkgaW5cbiAgICBsZXQgeCA9IENoYXIuY29kZSBzLltwb3MraV0gaW5cbiAgICBmb3IgaiA9IDAgdG8gNyBkb1xuICAgICAgQnl0ZXMuc2V0IHIgKGsraikgKGlmICh4IGxzciAoNyAtIGopKSBsYW5kIDEgPSAwIHRoZW4gJzAnIGVsc2UgJzEnKVxuICAgIGRvbmU7XG4gICAgQnl0ZXMuc2V0IHIgKGsrOCkgKGlmIChpICsgMSkgbW9kIDggPSAwIHRoZW4gJ1xcbicgZWxzZSAnICcpXG4gIGRvbmU7XG4gIEJ5dGVzLnRvX3N0cmluZyByXG5cbigqIGludCBzaXplIGluIGJpdHMgKilcbmxldCBpbnRfc2l6ZSA9XG4gIGxldCBjID0gcmVmIDAgaW5cbiAgbGV0IHIgPSByZWYgKC0xKSBpblxuICB3aGlsZSAhciA8PiAwIGRvXG4gICAgciA6PSAhciBsc3IgMTtcbiAgICBpbmNyIGNcbiAgZG9uZTtcbiAgIWNcbiIsInR5cGUgdHlwZV9pZCA9IGludFxuXG5sZXQgZHVtbXlfdHlwZV9pZCA9IDBcblxubGV0IGNyZWF0ZV90eXBlX2lkID1cbiAgbGV0IG4gPSByZWYgZHVtbXlfdHlwZV9pZCBpblxuICBmdW4gKCkgLT5cbiAgICBpbmNyIG47XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIGZhaWx3aXRoIFwiQmlfc2hhcmUuUmRfcG9seS5jcmVhdGVfdHlwZV9pZDogXFxcbiAgICAgICAgICAgICAgICBleGhhdXN0ZWQgYXZhaWxhYmxlIHR5cGVfaWQnc1wiXG4gICAgZWxzZVxuICAgICAgIW5cblxubW9kdWxlIFdyID1cbnN0cnVjdFxuICBtb2R1bGUgSCA9IEhhc2h0YmwuTWFrZSAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIHQgPSBPYmoudCAqIHR5cGVfaWRcbiAgICAgIGxldCBlcXVhbCAoeDEsIHQxKSAoeDIsIHQyKSA9IHgxID09IHgyICYmIHQxID09IHQyXG4gICAgICBsZXQgaGFzaCA9IEhhc2h0YmwuaGFzaFxuICAgIGVuZFxuICApXG5cbiAgdHlwZSB0YmwgPSBpbnQgSC50XG5cbiAgbGV0IGNyZWF0ZSA9IEguY3JlYXRlXG4gIGxldCBjbGVhciB0YmwgPVxuICAgIGlmIEgubGVuZ3RoIHRibCA+IDAgdGhlblxuICAgICAgSC5jbGVhciB0YmxcblxuICBsZXQgcHV0IHRibCBrIHBvcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgcG9zMCA9IEguZmluZCB0YmwgKE9iai5tYWdpYyBrKSBpblxuICAgICAgcG9zIC0gcG9zMFxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBILmFkZCB0YmwgKE9iai5tYWdpYyBrKSBwb3M7XG4gICAgICAwXG5lbmRcblxubW9kdWxlIFJkID1cbnN0cnVjdFxuICB0eXBlIHRibCA9ICgoaW50ICogdHlwZV9pZCksIE9iai50KSBIYXNodGJsLnRcblxuICBsZXQgY3JlYXRlIG4gPSBIYXNodGJsLmNyZWF0ZSBuXG4gIGxldCBjbGVhciA9IEhhc2h0YmwuY2xlYXJcblxuICBsZXQgcHV0IHRibCBwb3MgeCA9XG4gICAgSGFzaHRibC5hZGQgdGJsIHBvcyB4XG5cbiAgbGV0IGdldCB0YmwgcG9zID1cbiAgICB0cnkgSGFzaHRibC5maW5kIHRibCBwb3NcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChpbnZhbGlkIHJlZmVyZW5jZSlcIlxuZW5kXG4iLCJ0eXBlIHQgPSB7XG4gIG11dGFibGUgaV9zIDogYnl0ZXM7XG4gIG11dGFibGUgaV9wb3MgOiBpbnQ7XG4gIG11dGFibGUgaV9sZW4gOiBpbnQ7XG4gIG11dGFibGUgaV9vZmZzIDogaW50O1xuICBtdXRhYmxlIGlfbWF4X2xlbiA6IGludDtcbiAgaV9yZWZpbGwgOiAodCAtPiBpbnQgLT4gdW5pdCk7XG4gIGlfc2hhcmVkIDogQmlfc2hhcmUuUmQudGJsO1xufVxuXG5leGNlcHRpb24gRW5kX29mX2lucHV0XG5cbmxldCB0cnlfcHJlcmVhZCBpYiBuID1cbiAgaWYgaWIuaV9sZW4gLSBpYi5pX3BvcyA8IG4gdGhlbiAoXG4gICAgaWIuaV9yZWZpbGwgaWIgbjtcbiAgICBtaW4gKGliLmlfbGVuIC0gaWIuaV9wb3MpIG5cbiAgKVxuICBlbHNlXG4gICAgblxuXG5sZXQgcmVhZCBpYiBuID1cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGlmIGliLmlfbGVuIC0gcG9zID49IG4gdGhlbiAoXG4gICAgaWIuaV9wb3MgPC0gcG9zICsgbjtcbiAgICBwb3NcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgbiA+PSBuIHRoZW5cbiAgICAgIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICAgICAgaWIuaV9wb3MgPC0gaWIuaV9wb3MgKyBuO1xuICAgICAgcG9zXG4gICAgZWxzZVxuICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG5cbmxldCByZWFkX2NoYXIgaWIgPVxuICBsZXQgcG9zID0gaWIuaV9wb3MgaW5cbiAgaWYgaWIuaV9sZW4gLSBwb3MgPiAwIHRoZW4gKFxuICAgIGxldCBjID0gQnl0ZXMudW5zYWZlX2dldCBpYi5pX3MgcG9zIGluXG4gICAgaWIuaV9wb3MgPC0gcG9zICsgMTtcbiAgICBjXG4gIClcbiAgZWxzZVxuICAgIGlmIHRyeV9wcmVyZWFkIGliIDEgPiAwIHRoZW5cbiAgICAgIGxldCBwb3MgPSBpYi5pX3BvcyBpblxuICAgICAgbGV0IGMgPSBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3MgaW5cbiAgICAgIGliLmlfcG9zIDwtIHBvcyArIDE7XG4gICAgICBjXG4gICAgZWxzZVxuICAgICAgcmFpc2UgRW5kX29mX2lucHV0XG5cbmxldCBwZWVrIGliID1cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGlmIGliLmlfbGVuIC0gcG9zID4gMCB0aGVuIChcbiAgICBCeXRlcy51bnNhZmVfZ2V0IGliLmlfcyBwb3NcbiAgKVxuICBlbHNlXG4gICAgaWYgdHJ5X3ByZXJlYWQgaWIgMSA+IDAgdGhlblxuICAgICAgQnl0ZXMudW5zYWZlX2dldCBpYi5pX3MgaWIuaV9wb3NcbiAgICBlbHNlXG4gICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcblxubGV0IGZyb21fYnl0ZXMgPyhwb3MgPSAwKSA/KHNocmxlbiA9IDE2KSBzID0ge1xuICBpX3MgPSBzO1xuICBpX3BvcyA9IHBvcztcbiAgaV9sZW4gPSBCeXRlcy5sZW5ndGggcztcbiAgaV9vZmZzID0gLXBvcztcbiAgaV9tYXhfbGVuID0gQnl0ZXMubGVuZ3RoIHM7XG4gIGlfcmVmaWxsID0gKGZ1biBpYiBuIC0+ICgpKTtcbiAgaV9zaGFyZWQgPSBCaV9zaGFyZS5SZC5jcmVhdGUgc2hybGVuO1xufVxuXG5sZXQgZnJvbV9zdHJpbmcgP3BvcyA/c2hybGVuIHMgPSBmcm9tX2J5dGVzID9wb3MgP3NocmxlbiAoQnl0ZXMub2Zfc3RyaW5nIHMpXG5cbigqXG4gIExpa2UgUGVydmFzaXZlcy5yZWFsbHlfaW5wdXQgYnV0IHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlc1xuICByZWFkIGluc3RlYWQgb2YgcmFpc2luZyBFbmRfb2ZfZmlsZSB3aGVuIHRoZSBlbmQgb2YgZmlsZSBpcyByZWFjaGVkLlxuKilcbmxldCByZWMgbm90X3JlYWxseV9pbnB1dCBpYyBzIHBvcyBsZW4gYWNjdSA9XG4gIGxldCBuID0gaW5wdXQgaWMgcyBwb3MgbGVuIGluXG4gIGlmIG4gPCBsZW4gJiYgbiA+IDAgdGhlblxuICAgIG5vdF9yZWFsbHlfaW5wdXQgaWMgcyAocG9zICsgbikgKGxlbiAtIG4pIChhY2N1ICsgbilcbiAgZWxzZVxuICAgIGFjY3UgKyBuXG5cbmxldCByZWZpbGxfZnJvbV9jaGFubmVsIGljIGliIG4gPVxuICBpZiBuID4gaWIuaV9tYXhfbGVuIHRoZW5cbiAgICBpbnZhbGlkX2FyZyBcIkJpX2luYnVmLnJlZmlsbF9mcm9tX2NoYW5uZWxcIlxuICBlbHNlIChcbiAgICBsZXQgcmVtX2xlbiA9IGliLmlfbGVuIC0gaWIuaV9wb3MgaW5cbiAgICBpZiByZW1fbGVuIDwgbiB0aGVuXG4gICAgICBsZXQgcyA9IGliLmlfcyBpblxuICAgICAgQnl0ZXMuYmxpdCBzIGliLmlfcG9zIHMgMCByZW1fbGVuO1xuICAgICAgbGV0IHRvX3JlYWQgPSBuIC0gcmVtX2xlbiBpblxuICAgICAgbGV0IHJlYWxseV9yZWFkID0gbm90X3JlYWxseV9pbnB1dCBpYyBzIHJlbV9sZW4gdG9fcmVhZCAwIGluXG4gICAgICBpYi5pX29mZnMgPC0gaWIuaV9vZmZzICsgaWIuaV9wb3M7XG4gICAgICBpYi5pX3BvcyA8LSAwO1xuICAgICAgaWIuaV9sZW4gPC0gcmVtX2xlbiArIHJlYWxseV9yZWFkXG4gIClcblxubGV0IGZyb21fY2hhbm5lbCA/KGxlbiA9IDQwOTYpID8oc2hybGVuID0gMTYpIGljID0ge1xuICBpX3MgPSBCeXRlcy5jcmVhdGUgbGVuO1xuICBpX3BvcyA9IDA7XG4gIGlfbGVuID0gMDtcbiAgaV9vZmZzID0gMDtcbiAgaV9tYXhfbGVuID0gbGVuO1xuICBpX3JlZmlsbCA9IHJlZmlsbF9mcm9tX2NoYW5uZWwgaWM7XG4gIGlfc2hhcmVkID0gQmlfc2hhcmUuUmQuY3JlYXRlIHNocmxlbjtcbn1cbiIsInR5cGUgdCA9IHtcbiAgbXV0YWJsZSBvX3MgOiBieXRlcztcbiAgbXV0YWJsZSBvX21heF9sZW4gOiBpbnQ7XG4gIG11dGFibGUgb19sZW4gOiBpbnQ7XG4gIG11dGFibGUgb19vZmZzIDogaW50O1xuICBvX2luaXRfbGVuIDogaW50O1xuICBvX21ha2Vfcm9vbSA6ICh0IC0+IGludCAtPiB1bml0KTtcbiAgbXV0YWJsZSBvX3NoYXJlZCA6IEJpX3NoYXJlLldyLnRibDtcbiAgb19zaGFyZWRfaW5pdF9sZW4gOiBpbnQ7XG59XG5cbmxldCByZWFsbHlfZXh0ZW5kIGIgbiA9XG4gIGxldCBzbGVuMCA9IGIub19tYXhfbGVuIGluXG4gIGxldCByZXFsZW4gPSBiLm9fbGVuICsgbiBpblxuICBsZXQgc2xlbiA9XG4gICAgbGV0IHggPSBtYXggcmVxbGVuICgyICogc2xlbjApIGluXG4gICAgaWYgeCA8PSBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlbiB4XG4gICAgZWxzZVxuICAgICAgaWYgU3lzLm1heF9zdHJpbmdfbGVuZ3RoIDwgcmVxbGVuIHRoZW5cblx0aW52YWxpZF9hcmcgXCJCdWYuZXh0ZW5kOiByZWFjaGVkIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFwiXG4gICAgICBlbHNlXG5cdFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICBpblxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSBzbGVuIGluXG4gIEJ5dGVzLmJsaXQgYi5vX3MgMCBzIDAgYi5vX2xlbjtcbiAgYi5vX3MgPC0gcztcbiAgYi5vX21heF9sZW4gPC0gc2xlblxuXG5sZXQgZmx1c2hfdG9fb3V0cHV0IGFic3RyYWN0X291dHB1dCBiIG4gPVxuICBhYnN0cmFjdF9vdXRwdXQgKEJ5dGVzLnRvX3N0cmluZyBiLm9fcykgMCBiLm9fbGVuO1xuICBiLm9fb2ZmcyA8LSBiLm9fb2ZmcyArIGIub19sZW47XG4gIGIub19sZW4gPC0gMDtcbiAgaWYgbiA+IGIub19tYXhfbGVuIHRoZW5cbiAgICByZWFsbHlfZXh0ZW5kIGIgblxuXG5sZXQgZmx1c2hfdG9fY2hhbm5lbCBvYyA9IGZsdXNoX3RvX291dHB1dCAob3V0cHV0X3N1YnN0cmluZyBvYylcblxuXG5sZXQgY3JlYXRlID8obWFrZV9yb29tID0gcmVhbGx5X2V4dGVuZCkgPyhzaHJsZW4gPSAxNikgbiA9IHtcbiAgb19zID0gQnl0ZXMuY3JlYXRlIG47XG4gIG9fbWF4X2xlbiA9IG47XG4gIG9fbGVuID0gMDtcbiAgb19vZmZzID0gMDtcbiAgb19pbml0X2xlbiA9IG47XG4gIG9fbWFrZV9yb29tID0gbWFrZV9yb29tO1xuICBvX3NoYXJlZCA9IEJpX3NoYXJlLldyLmNyZWF0ZSBzaHJsZW47XG4gIG9fc2hhcmVkX2luaXRfbGVuID0gc2hybGVuO1xufVxuXG5sZXQgY3JlYXRlX2NoYW5uZWxfd3JpdGVyID8obGVuID0gNDA5NikgP3NocmxlbiBvYyA9XG4gIGNyZWF0ZSB+bWFrZV9yb29tOihmbHVzaF90b19jaGFubmVsIG9jKSA/c2hybGVuIGxlblxuXG5sZXQgZmx1c2hfY2hhbm5lbF93cml0ZXIgYiA9XG4gIGIub19tYWtlX3Jvb20gYiAwXG5cbmxldCBjcmVhdGVfb3V0cHV0X3dyaXRlciA/KGxlbiA9IDQwOTYpID9zaHJsZW4gb3V0ID1cbiAgY3JlYXRlIH5tYWtlX3Jvb206KGZsdXNoX3RvX291dHB1dCBvdXQjb3V0cHV0KSA/c2hybGVuIGxlblxuXG5sZXQgZmx1c2hfb3V0cHV0X3dyaXRlciA9IGZsdXNoX2NoYW5uZWxfd3JpdGVyXG5cblxuKCpcbiAgR3VhcmFudGVlIHRoYXQgdGhlIGJ1ZmZlciBzdHJpbmcgaGFzIGVub3VnaCByb29tIGZvciBuIGFkZGl0aW9uYWwgYnl0ZXMuXG4qKVxubGV0IGV4dGVuZCBiIG4gPVxuICBpZiBiLm9fbGVuICsgbiA+IGIub19tYXhfbGVuIHRoZW5cbiAgICBiLm9fbWFrZV9yb29tIGIgblxuXG5sZXQgYWxsb2MgYiBuID1cbiAgZXh0ZW5kIGIgbjtcbiAgbGV0IHBvcyA9IGIub19sZW4gaW5cbiAgYi5vX2xlbiA8LSBwb3MgKyBuO1xuICBwb3NcblxubGV0IGFkZF9zdWIgYmxpdCBiIHMgcG9zIGxlbiA9XG4gIGV4dGVuZCBiIGxlbjtcbiAgYmxpdCBzIHBvcyBiLm9fcyBiLm9fbGVuIGxlbjtcbiAgYi5vX2xlbiA8LSBiLm9fbGVuICsgbGVuXG5cbmxldCBhZGRfc3Vic3RyaW5nID0gYWRkX3N1YiBTdHJpbmcuYmxpdFxubGV0IGFkZF9zdWJieXRlcyA9IGFkZF9zdWIgQnl0ZXMuYmxpdFxuXG5sZXQgYWRkX3N0cmluZyBiIHMgPVxuICBhZGRfc3Vic3RyaW5nIGIgcyAwIChTdHJpbmcubGVuZ3RoIHMpXG5cbmxldCBhZGRfYnl0ZXMgYiBzID1cbiAgYWRkX3N1YmJ5dGVzIGIgcyAwIChCeXRlcy5sZW5ndGggcylcblxuXG5sZXQgYWRkX2NoYXIgYiBjID1cbiAgbGV0IHBvcyA9IGFsbG9jIGIgMSBpblxuICBCeXRlcy5zZXQgYi5vX3MgcG9zIGNcblxubGV0IHVuc2FmZV9hZGRfY2hhciBiIGMgPVxuICBsZXQgbGVuID0gYi5vX2xlbiBpblxuICBCeXRlcy5zZXQgYi5vX3MgbGVuIGM7XG4gIGIub19sZW4gPC0gbGVuICsgMVxuXG5sZXQgYWRkX2NoYXIyIGIgYzEgYzIgPVxuICBsZXQgcG9zID0gYWxsb2MgYiAyIGluXG4gIGxldCBzID0gYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyBjMTtcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgYzJcblxubGV0IGFkZF9jaGFyNCBiIGMxIGMyIGMzIGM0ID1cbiAgbGV0IHBvcyA9IGFsbG9jIGIgNCBpblxuICBsZXQgcyA9IGIub19zIGluXG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyBwb3MgYzE7XG4gIEJ5dGVzLnVuc2FmZV9zZXQgcyAocG9zKzEpIGMyO1xuICBCeXRlcy51bnNhZmVfc2V0IHMgKHBvcysyKSBjMztcbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMykgYzRcblxuXG5cbmxldCBjbGVhciBiID1cbiAgYi5vX29mZnMgPC0gMDtcbiAgYi5vX2xlbiA8LSAwO1xuICBCaV9zaGFyZS5Xci5jbGVhciBiLm9fc2hhcmVkXG5cbmxldCByZXNldCBiID1cbiAgaWYgQnl0ZXMubGVuZ3RoIGIub19zIDw+IGIub19pbml0X2xlbiB0aGVuXG4gICAgYi5vX3MgPC0gQnl0ZXMuY3JlYXRlIGIub19pbml0X2xlbjtcbiAgYi5vX29mZnMgPC0gMDtcbiAgYi5vX2xlbiA8LSAwO1xuICBiLm9fc2hhcmVkIDwtIEJpX3NoYXJlLldyLmNyZWF0ZSBiLm9fc2hhcmVkX2luaXRfbGVuXG5cbmxldCBjb250ZW50cyBiID0gQnl0ZXMuc3ViX3N0cmluZyBiLm9fcyAwIGIub19sZW5cbiIsIigqIFZhcmlhYmxlLWJ5dGUgZW5jb2Rpbmcgb2YgOC1ieXRlIGludGVnZXJzIChzdGFydGluZyBmcm9tIDApLiAqKVxuXG5vcGVuIFByaW50Zlxub3BlbiBCaV9vdXRidWZcbm9wZW4gQmlfaW5idWZcblxudHlwZSB1aW50ID0gaW50XG5cbigqIE1heGltdW0gbGVuZ3RoIG9mIGEgdmludCBkZWNvZGFibGUgaW50byBhbiBPQ2FtbCBpbnQsXG4gICBtYXhpbXVtIHZhbHVlIG9mIHRoZSBoaWdoZXN0IGJ5dGUgb2YgdGhlIGxhcmdlc3QgdmludCBzdXBwb3J0ZWQgKilcbmxldCBtYXhfdmludF9ieXRlcywgbWF4X2hpZ2hlc3RfYnl0ZSA9XG4gIGlmIEJpX3V0aWwuaW50X3NpemUgbW9kIDcgPSAwIHRoZW5cbiAgICBsZXQgbSA9IEJpX3V0aWwuaW50X3NpemUgLyA3IGluXG4gICAgbGV0IGggPSAxIGxzbCA3IC0gMSBpblxuICAgIG0sIGhcbiAgZWxzZVxuICAgIGxldCBtID0gQmlfdXRpbC5pbnRfc2l6ZSAvIDcgKyAxIGluXG4gICAgbGV0IGggPSAxIGxzbCAoQmlfdXRpbC5pbnRfc2l6ZSBtb2QgNykgLSAxIGluXG4gICAgbSwgaFxuXG5sZXQgY2hlY2tfaGlnaGVzdF9ieXRlIHggPVxuICBpZiB4ID4gbWF4X2hpZ2hlc3RfYnl0ZSB0aGVuXG4gICAgQmlfdXRpbC5lcnJvciBcIlZpbnQgZXhjZWVkaW5nIHJhbmdlIG9mIE9DYW1sIGludHNcIlxuXG5cbmxldCB1bnNpZ25lZF9vZl9zaWduZWQgaSA9XG4gIGlmIGkgPj0gMCB0aGVuXG4gICAgKCpcbiAgICAgIDAgLT4gMFxuICAgICAgMSAtPiAyXG4gICAgICAyIC0+IDRcbiAgICAgIDMgLT4gNlxuICAgICopXG4gICAgaSBsc2wgMVxuICBlbHNlXG4gICAgKCpcbiAgICAgIC0xIC0+IDFcbiAgICAgIC0yIC0+IDNcbiAgICAgIC0zIC0+IDVcbiAgICAqKVxuICAgICgoLTEtaSkgbHNsIDEpIGxvciAxXG5cbmxldCBzaWduZWRfb2ZfdW5zaWduZWQgaSA9XG4gIGlmIGkgbGFuZCAxID0gMCB0aGVuIGkgbHNyIDFcbiAgZWxzZSAtMSAtIChpIGxzciAxKVxuXG5sZXQgd3JpdGVfdXZpbnQgYnVmIGkgID1cbiAgQmlfb3V0YnVmLmV4dGVuZCBidWYgbWF4X3ZpbnRfYnl0ZXM7XG5cbiAgbGV0IHggPSByZWYgaSBpblxuICB3aGlsZSAheCBsc3IgNyA8PiAwIGRvXG4gICAgbGV0IGJ5dGUgPSAweDgwIGxvciAoIXggbGFuZCAweDdmKSBpblxuICAgIEJpX291dGJ1Zi51bnNhZmVfYWRkX2NoYXIgYnVmIChDaGFyLmNociBieXRlKTtcbiAgICB4IDo9ICF4IGxzciA3O1xuICBkb25lO1xuICBCaV9vdXRidWYudW5zYWZlX2FkZF9jaGFyIGJ1ZiAoQ2hhci5jaHIgIXgpXG5cbmxldCB3cml0ZV9zdmludCBidWYgaSA9XG4gIHdyaXRlX3V2aW50IGJ1ZiAodW5zaWduZWRfb2Zfc2lnbmVkIGkpXG5cbigqIGNvbnZlbmllbmNlICopXG5sZXQgdXZpbnRfb2ZfdWludCA/YnVmIGkgPVxuICBsZXQgYnVmZmVyID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgfCBOb25lIC0+IEJpX291dGJ1Zi5jcmVhdGUgMTBcbiAgICAgIHwgU29tZSBiIC0+IGJcbiAgaW5cbiAgQmlfb3V0YnVmLmNsZWFyIGJ1ZmZlcjtcbiAgd3JpdGVfdXZpbnQgYnVmZmVyIGk7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBidWZmZXJcblxubGV0IHN2aW50X29mX2ludCA/YnVmIGkgPVxuICB1dmludF9vZl91aW50ID9idWYgKHVuc2lnbmVkX29mX3NpZ25lZCBpKVxuXG5cbmxldCByZWFkX3V2aW50IGliID1cbiAgbGV0IGF2YWlsID0gQmlfaW5idWYudHJ5X3ByZXJlYWQgaWIgbWF4X3ZpbnRfYnl0ZXMgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHBvcyA9IGliLmlfcG9zIGluXG4gIGxldCB4ID0gcmVmIDAgaW5cbiAgKHRyeVxuICAgICBmb3IgaSA9IDAgdG8gYXZhaWwgLSAxIGRvXG4gICAgICAgbGV0IGIgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChwb3MraSkpIGluXG4gICAgICAgeCA6PSAoKGIgbGFuZCAweDdmKSBsc2wgKDcqaSkpIGxvciAheDtcbiAgICAgICBpZiBiIDwgMHg4MCB0aGVuIChcblx0IGliLmlfcG9zIDwtIHBvcyArIGkgKyAxO1xuXHQgaWYgaSArIDEgPSBtYXhfdmludF9ieXRlcyB0aGVuXG5cdCAgIGNoZWNrX2hpZ2hlc3RfYnl0ZSBiO1xuXHQgcmFpc2UgRXhpdFxuICAgICAgIClcbiAgICAgZG9uZTtcbiAgICAgQmlfdXRpbC5lcnJvciBcIlVudGVybWluYXRlZCB2aW50IG9yIHZpbnQgZXhjZWVkaW5nIHJhbmdlIG9mIE9DYW1sIGludHNcIlxuICAgd2l0aCBFeGl0IC0+ICgpXG4gICk7XG4gICF4XG5cblxubGV0IHJlYWRfc3ZpbnQgaWIgPVxuICBzaWduZWRfb2ZfdW5zaWduZWQgKHJlYWRfdXZpbnQgaWIpXG5cbigqIGNvbnZlbmllbmNlICopXG5cbmxldCBjaGVja19lbmRfb2ZfaW5wdXQgaWIgPVxuICBpZiBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiAxID4gMCB0aGVuXG4gICAgQmlfdXRpbC5lcnJvciBcIkp1bmsgaW5wdXQgYWZ0ZXIgZW5kIG9mIHZpbnRcIlxuXG5sZXQgdWludF9vZl91dmludCBzID1cbiAgbGV0IGliID0gQmlfaW5idWYuZnJvbV9zdHJpbmcgcyBpblxuICBsZXQgeCA9IHJlYWRfdXZpbnQgaWIgaW5cbiAgY2hlY2tfZW5kX29mX2lucHV0IGliO1xuICB4XG5cbmxldCBpbnRfb2Zfc3ZpbnQgcyA9XG4gIGxldCBpYiA9IEJpX2luYnVmLmZyb21fc3RyaW5nIHMgaW5cbiAgbGV0IHggPSByZWFkX3N2aW50IGliIGluXG4gIGNoZWNrX2VuZF9vZl9pbnB1dCBpYjtcbiAgeFxuXG5cbigqXG4gIFRlc3RpbmdcbiopXG5cbmxldCBzdHJpbmdfb2ZfbGlzdCBsID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSAxMDAgaW5cbiAgTGlzdC5pdGVyICh3cml0ZV91dmludCBvYikgbDtcbiAgQmlfb3V0YnVmLmNvbnRlbnRzIG9iXG5cbmxldCByZWMgcmVhZF9saXN0IGliID1cbiAgaWYgaWIuaV9wb3MgPCBpYi5pX2xlbiB0aGVuXG4gICAgbGV0IHggPSByZWFkX3V2aW50IGliIGluXG4gICAgeCA6OiByZWFkX2xpc3QgaWJcbiAgZWxzZVxuICAgIFtdXG5cbmxldCBsaXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9saXN0IChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKVxuXG5sZXQgcHJpbnRfbGlzdCBsID1cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4gaSAtPlxuICAgICAgcHJpbnRmIFwiZGVjICVpXFxuaGV4ICV4XFxuYmluICVzXFxuXCIgaSBpXG5cdChCaV91dGlsLnByaW50X2JpdHMgKEJpX3V0aWwuc3RyaW5nOF9vZl9pbnQgaSkpXG4gICkgbFxuXG5sZXQgdGVzdCAoKSA9XG4gIGxldCBsID0gW1xuICAgIDA7XG4gICAgMHhmZmZmZmZmO1xuICAgICgweDAxMDIwMzA0IGxzbCAzMikgbG9yIDB4MDUwNjA3MDg7XG4gICAgbWF4X2ludDtcbiAgICBtaW5faW50XG4gIF0gaW5cbiAgcHJpbnRmIFwiSW5wdXQ6XFxuXCI7XG4gIHByaW50X2xpc3QgbDtcbiAgbGV0IGwnID0gbGlzdF9vZl9zdHJpbmcgKHN0cmluZ19vZl9saXN0IGwpIGluXG4gIHByaW50ZiBcIk91dHB1dDpcXG5cIjtcbiAgcHJpbnRfbGlzdCBsJztcbiAgaWYgbCA9IGwnIHRoZW5cbiAgICBwcmludF9lbmRsaW5lIFwiU1VDQ0VTU1wiXG4gIGVsc2VcbiAgICBwcmludF9lbmRsaW5lIFwiRkFJTFVSRVwiXG4iLCJvcGVuIFByaW50ZlxuXG5sZXQgZXJyb3IgcyA9IGZhaWx3aXRoIChcIkJpX3N0cmVhbTogXCIgXiBzKVxuXG5sZXQgaW5wdXRfaW50NjQgaWMgPVxuICBtYXRjaCBTeXMud29yZF9zaXplIHdpdGhcbiAgICAgIDY0IC0+XG4gICAgICAgIGxldCBuID0gcmVmIDAgaW5cbiAgICAgICAgZm9yIGkgPSAxIHRvIDggZG9cbiAgICAgICAgICBuIDo9ICghbiBsc2wgOCkgbG9yIChpbnB1dF9ieXRlIGljKTtcbiAgICAgICAgZG9uZTtcbiAgICAgICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgICAgICBlcnJvciBcIkNvcnJ1cHRlZCBzdHJlYW06IGV4Y2Vzc2l2ZSBjaHVuayBsZW5ndGhcIjtcbiAgICAgICAgIW5cbiAgICB8IDMyIC0+XG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgaWYgaW5wdXRfYnl0ZSBpYyA8PiAwIHRoZW5cbiAgICAgICAgICAgIGVycm9yIFwiQ2h1bmsgbGVuZ3RoIGV4Y2VlZHMgc3VwcG9ydGVkIHJhbmdlIG9uIHRoaXMgcGxhdGZvcm1cIlxuICAgICAgICBkb25lO1xuICAgICAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgbiA6PSAoIW4gbHNsIDgpIGxvciAoaW5wdXRfYnl0ZSBpYyk7XG4gICAgICAgIGRvbmU7XG4gICAgICAgIGlmICFuIDwgMCB0aGVuXG4gICAgICAgICAgZXJyb3IgXCJDaHVuayBsZW5ndGggZXhjZWVkcyBzdXBwb3J0ZWQgcmFuZ2Ugb24gdGhpcyBwbGF0Zm9ybVwiO1xuICAgICAgICAhblxuICAgIHwgbiAtPlxuICAgICAgICBlcnJvciAoc3ByaW50ZiBcInVuc3VwcG9ydGVkIHdvcmQgc2l6ZSAoJWkpXCIgbilcblxubGV0IG91dHB1dF9pbnQ2NCBvYyBuID1cbiAgbWF0Y2ggU3lzLndvcmRfc2l6ZSB3aXRoXG4gICAgICA2NCAtPlxuICAgICAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgICAgIGZvciBpID0gMSB0byA4IGRvXG4gICAgICAgICAgb3V0cHV0X2NoYXIgb2MgKGNoYXJfb2ZfaW50ICghbiBsc3IgNTYpKTtcbiAgICAgICAgICBuIDo9ICFuIGxzbCA4XG4gICAgICAgIGRvbmVcbiAgICB8IDMyIC0+XG4gICAgICAgIG91dHB1dF9zdHJpbmcgb2MgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICAgICAgICBsZXQgbiA9IHJlZiBuIGluXG4gICAgICAgIGZvciBpID0gMSB0byA0IGRvXG4gICAgICAgICAgb3V0cHV0X2NoYXIgb2MgKGNoYXJfb2ZfaW50ICghbiBsc3IgMjQpKTtcbiAgICAgICAgICBuIDo9ICFuIGxzbCA4XG4gICAgICAgIGRvbmVcbiAgICB8IG4gLT5cbiAgICAgICAgZXJyb3IgKHNwcmludGYgXCJ1bnN1cHBvcnRlZCB3b3JkIHNpemUgKCVpKVwiIG4pXG5cbmxldCByZWMgcmVhZF9jaHVuayBvZl9zdHJpbmcgaWMgPVxuICBtYXRjaCBpbnB1dF9jaGFyIGljIHdpdGhcbiAgICAgICdcXDAwMScgLT5cbiAgICAgICAgbGV0IGxlbiA9IGlucHV0X2ludDY0IGljIGluXG4gICAgICAgIGlmIGxlbiA+IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgIChzcHJpbnRmXG4gICAgICAgICAgICAgICBcIkNvcnJ1cHRlZCBzdHJlYW06IGV4Y2Vzc2l2ZSBjaHVuayBsZW5ndGggKCVpIGJ5dGVzKVwiIGxlbik7XG4gICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIGxlbiBpblxuICAgICAgICByZWFsbHlfaW5wdXQgaWMgcyAwIGxlbjtcbiAgICAgICAgU29tZSAob2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcykpXG5cbiAgICB8ICdcXDAwMCcgLT4gTm9uZVxuXG4gICAgfCBjIC0+IGVycm9yIChzcHJpbnRmIFwiQ29ycnVwdGVkIHN0cmVhbTogJUNcIiBjKVxuXG5cbmxldCBmbGF0dGVuIHN0ID1cbiAgbGV0IGEgPSByZWYgW3wgfF0gaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCByZWMgbmV4dCBpID1cbiAgICBpZiAhcG9zID49IEFycmF5Lmxlbmd0aCAhYSB0aGVuIChcbiAgICAgIG1hdGNoIFN0cmVhbS5wZWVrIHN0IHdpdGhcbiAgICAgICAgICBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGEnIC0+XG4gICAgICAgICAgICBTdHJlYW0uanVuayBzdDtcbiAgICAgICAgICAgIGEgOj0gYSc7XG4gICAgICAgICAgICBwb3MgOj0gMDtcbiAgICAgICAgICAgIG5leHQgaVxuICAgIClcbiAgICBlbHNlIChcbiAgICAgIGxldCB4ID0gKCFhKS4oIXBvcykgaW5cbiAgICAgIGluY3IgcG9zO1xuICAgICAgU29tZSB4XG4gICAgKVxuICBpblxuICBTdHJlYW0uZnJvbSBuZXh0XG5cblxubGV0IHJlYWRfc3RyZWFtIG9mX3N0cmluZyBpYyA9XG4gIGZsYXR0ZW4gKFN0cmVhbS5mcm9tIChmdW4gaSAtPiByZWFkX2NodW5rIG9mX3N0cmluZyBpYykpXG5cbmxldCByZXZfYXJyYXlfb2ZfbGlzdCBsID1cbiAgbWF0Y2ggbCB3aXRoXG4gICAgICBbXSAtPiBbfHxdXG4gICAgfCB4IDo6IHRsIC0+XG4gICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgIGxldCBhID0gQXJyYXkubWFrZSBsZW4geCBpblxuICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICBtYXRjaCAhciB3aXRoXG4gICAgICAgICAgICAgIGhkIDo6IHRsIC0+XG4gICAgICAgICAgICAgICAgYS4oaSkgPC0gaGQ7XG4gICAgICAgICAgICAgICAgciA6PSB0bDtcbiAgICAgICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFcblxubGV0IHdyaXRlX3N0cmVhbSA/KGNodW5rX2xlbiA9IDEwMjQpIHRvX3N0cmluZyBvYyBzdCA9XG4gIGxldCBuID0gcmVmIDAgaW5cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBsZXQgZmx1c2hfY2h1bmsgKCkgPVxuICAgIGxldCBhID0gcmV2X2FycmF5X29mX2xpc3QgIWFjYyBpblxuICAgIGFjYyA6PSBbXTtcbiAgICBuIDo9IDA7XG4gICAgbGV0IHMgPSB0b19zdHJpbmcgYSBpblxuICAgIG91dHB1dF9jaGFyIG9jICdcXDAwMSc7XG4gICAgb3V0cHV0X2ludDY0IG9jIChTdHJpbmcubGVuZ3RoIHMpO1xuICAgIG91dHB1dF9zdHJpbmcgb2Mgc1xuICBpblxuICBTdHJlYW0uaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGluY3IgbjtcbiAgICAgIGFjYyA6PSB4IDo6ICFhY2M7XG4gICAgICBpZiAhbiA+PSBjaHVua19sZW4gdGhlblxuICAgICAgICBmbHVzaF9jaHVuayAoKVxuICApIHN0O1xuICBpZiAhbiA+IDAgdGhlblxuICAgIGZsdXNoX2NodW5rICgpO1xuICBvdXRwdXRfY2hhciBvYyAnXFwwMDAnXG5cblxubGV0IHRlc3QgbCA9XG4gIExpc3QuaXRlciAoZnVuIHggLT4gYXNzZXJ0ICh4ID49IDAgJiYgeCA8PSA5KSkgbDtcbiAgbGV0IHRvX3N0cmluZyBhID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgKEFycmF5LnRvX2xpc3QgYSkpXG4gIGluXG4gIGxldCBvZl9zdHJpbmcgcyA9XG4gICAgQXJyYXkuaW5pdCAoU3RyaW5nLmxlbmd0aCBzKSAoZnVuIGkgLT4gaW50X29mX3N0cmluZyAoU3RyaW5nLm1ha2UgMSBzLltpXSkpXG4gIGluXG4gIGxldCBzdCA9IFN0cmVhbS5vZl9saXN0IGwgaW5cbiAgbGV0IG9jID0gb3Blbl9vdXQgXCJ0ZXN0LXN0cmVhbS5kYXRcIiBpblxuICB3cml0ZV9zdHJlYW0gfmNodW5rX2xlbjoyIHRvX3N0cmluZyBvYyBzdDtcbiAgY2xvc2Vfb3V0IG9jO1xuXG4gIGxldCBpYyA9IG9wZW5faW4gXCJ0ZXN0LXN0cmVhbS5kYXRcIiBpblxuICBsZXQgc3QnID0gcmVhZF9zdHJlYW0gb2Zfc3RyaW5nIGljIGluXG4gIGxldCBsJyA9IHJlZiBbXSBpblxuICBTdHJlYW0uaXRlciAoZnVuIGkgLT4gbCcgOj0gaSA6OiAhbCcpIHN0JztcbiAgY2xvc2VfaW4gaWM7XG4gIGwgPSBMaXN0LnJldiAhbCdcbiIsIm9wZW4gUHJpbnRmXG5cbm9wZW4gQmlfb3V0YnVmXG5vcGVuIEJpX2luYnVmXG5cbnR5cGUgbm9kZV90YWcgPSBpbnRcblxubGV0IGJvb2xfdGFnID0gMFxubGV0IGludDhfdGFnID0gMVxubGV0IGludDE2X3RhZyA9IDJcbmxldCBpbnQzMl90YWcgPSAzXG5sZXQgaW50NjRfdGFnID0gNFxubGV0IGZsb2F0MzJfdGFnID0gMTFcbmxldCBmbG9hdDY0X3RhZyA9IDEyXG5sZXQgdXZpbnRfdGFnID0gMTZcbmxldCBzdmludF90YWcgPSAxN1xubGV0IHN0cmluZ190YWcgPSAxOFxubGV0IGFycmF5X3RhZyA9IDE5XG5sZXQgdHVwbGVfdGFnID0gMjBcbmxldCByZWNvcmRfdGFnID0gMjFcbmxldCBudW1fdmFyaWFudF90YWcgPSAyMlxubGV0IHZhcmlhbnRfdGFnID0gMjNcbmxldCB1bml0X3RhZyA9IDI0XG5sZXQgdGFibGVfdGFnID0gMjVcbmxldCBzaGFyZWRfdGFnID0gMjZcblxudHlwZSBoYXNoID0gaW50XG5cbigqXG4gIERhdGEgdHJlZSwgZm9yIHRlc3RpbmcgcHVycG9zZXMuXG4qKVxudHlwZSB0cmVlID1cbiAgICBbIGBVbml0XG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgfCBgSW50OCBvZiBjaGFyXG4gICAgfCBgSW50MTYgb2YgaW50XG4gICAgfCBgSW50MzIgb2YgSW50MzIudFxuICAgIHwgYEludDY0IG9mIEludDY0LnRcbiAgICB8IGBGbG9hdDMyIG9mIGZsb2F0XG4gICAgfCBgRmxvYXQ2NCBvZiBmbG9hdFxuICAgIHwgYFV2aW50IG9mIGludFxuICAgIHwgYFN2aW50IG9mIGludFxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICB8IGBBcnJheSBvZiAobm9kZV90YWcgKiB0cmVlIGFycmF5KSBvcHRpb25cbiAgICB8IGBUdXBsZSBvZiB0cmVlIGFycmF5XG4gICAgfCBgUmVjb3JkIG9mIChzdHJpbmcgb3B0aW9uICogaGFzaCAqIHRyZWUpIGFycmF5XG4gICAgfCBgTnVtX3ZhcmlhbnQgb2YgKGludCAqIHRyZWUgb3B0aW9uKVxuICAgIHwgYFZhcmlhbnQgb2YgKHN0cmluZyBvcHRpb24gKiBoYXNoICogdHJlZSBvcHRpb24pXG4gICAgfCBgVGFibGUgb2Zcblx0KChzdHJpbmcgb3B0aW9uICogaGFzaCAqIG5vZGVfdGFnKSBhcnJheSAqIHRyZWUgYXJyYXkgYXJyYXkpIG9wdGlvblxuICAgIHwgYFNoYXJlZCBvZiB0cmVlIF1cblxuKCogZXh0ZW5kIHNpZ24gYml0ICopXG5sZXQgbWFrZV9zaWduZWQgeCA9XG4gIGlmIHggPiAweDNGRkZGRkZGIHRoZW4geCAtICgxIGxzbCAzMSkgZWxzZSB4XG5cbigqXG4gIFNhbWUgZnVuY3Rpb24gYXMgdGhlIG9uZSB1c2VkIGZvciBPQ2FtbCB2YXJpYW50cyBhbmQgb2JqZWN0IG1ldGhvZHMuXG4qKVxubGV0IGhhc2hfbmFtZSBzID1cbiAgbGV0IGFjY3UgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIGFjY3UgOj0gMjIzICogIWFjY3UgKyBDaGFyLmNvZGUgcy5baV1cbiAgZG9uZTtcbiAgKCogcmVkdWNlIHRvIDMxIGJpdHMgKilcbiAgYWNjdSA6PSAhYWNjdSBsYW5kICgxIGxzbCAzMSAtIDEpO1xuICAoKiBtYWtlIGl0IHNpZ25lZCBmb3IgNjQgYml0cyBhcmNoaXRlY3R1cmVzICopXG4gIG1ha2Vfc2lnbmVkICFhY2N1XG5cblxuKCpcbiAgU3RydWN0dXJlIG9mIGEgaGFzaHRhZzogNCBieXRlcyxcblxuICBhcmdiaXQgN2JpdHMgOGJpdHMgOGJpdHMgOGJpdHNcbiAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICAgICAgICAgICAgIDMxLWJpdCBoYXNoXG5cbiAgYXJnYml0ID0gMSBpZmYgaGFzaHRhZyBpcyBmb2xsb3dlZCBieSBhbiBhcmd1bWVudCwgdGhpcyBpcyBhbHdheXMgMSBmb3JcbiAgICAgICAgICAgcmVjb3JkIGZpZWxkcy5cblxuKilcblxubGV0IG1hc2tfMzFiaXQgPVxuICBsZXQgbiA9IEJpX3V0aWwuaW50X3NpemUgLSAzMSBpblxuICBhc3NlcnQgKG4gPj0gMCk7XG4gIGZ1biB4IC0+ICh4IGxzbCBuKSBsc3IgblxuXG5sZXQgd3JpdGVfaGFzaHRhZyBvYiBoIGhhc19hcmcgPVxuICBsZXQgaCA9IG1hc2tfMzFiaXQgaCBpblxuICBsZXQgcG9zID0gQmlfb3V0YnVmLmFsbG9jIG9iIDQgaW5cbiAgbGV0IHMgPSBvYi5vX3MgaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMykgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMikgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIChwb3MrMSkgKENoYXIuY2hyIChoIGxhbmQgMHhmZikpO1xuICBsZXQgaCA9IGggbHNyIDggaW5cbiAgQnl0ZXMudW5zYWZlX3NldCBzIHBvcyAoXG4gICAgQ2hhci5jaHIgKFxuICAgICAgaWYgaGFzX2FyZyB0aGVuIGggbG9yIDB4ODBcbiAgICAgIGVsc2UgaFxuICAgIClcbiAgKVxuXG5sZXQgc3RyaW5nX29mX2hhc2h0YWcgaCBoYXNfYXJnID1cbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSA0IGluXG4gIHdyaXRlX2hhc2h0YWcgb2IgaCBoYXNfYXJnO1xuICBCaV9vdXRidWYuY29udGVudHMgb2JcblxubGV0IHJlYWRfaGFzaHRhZyBpYiBjb250ID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHgwID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgcyBpKSBpblxuICBsZXQgaGFzX2FyZyA9IHgwID49IDB4ODAgaW5cbiAgbGV0IHgxID0gKHgwIGxhbmQgMHg3ZikgbHNsIDI0IGluXG4gIGxldCB4MiA9IChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzEpKSkgbHNsIDE2IGluXG4gIGxldCB4MyA9IChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzIpKSkgbHNsIDggaW5cbiAgbGV0IHg0ID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgcyAoaSszKSkgaW5cbiAgbGV0IGggPSBtYWtlX3NpZ25lZCAoeDEgbG9yIHgyIGxvciB4MyBsb3IgeDQpIGluXG5cbiAgY29udCBpYiBoIGhhc19hcmdcblxuXG5sZXQgcmVhZF9maWVsZF9oYXNodGFnIGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDQgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgbGV0IHgwID0gQ2hhci5jb2RlIChCeXRlcy51bnNhZmVfZ2V0IHMgaSkgaW5cbiAgaWYgeDAgPCAweDgwIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgZmllbGQgaGFzaHRhZylcIjtcbiAgbGV0IHgxID0gKHgwIGxhbmQgMHg3ZikgbHNsIDI0IGluXG4gIGxldCB4MiA9IChDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSsxKSkpIGxzbCAxNiBpblxuICBsZXQgeDMgPSAoQ2hhci5jb2RlIChCeXRlcy51bnNhZmVfZ2V0IHMgKGkrMikpKSBsc2wgOCBpblxuICBsZXQgeDQgPSBDaGFyLmNvZGUgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaSszKSkgaW5cbiAgbWFrZV9zaWduZWQgKHgxIGxvciB4MiBsb3IgeDMgbG9yIHg0KVxuXG5cbnR5cGUgaW50NyA9IGludFxuXG5sZXQgd3JpdGVfbnVtdGFnIG9iIGkgaGFzX2FyZyA9XG4gIGlmIGkgPCAwIHx8IGkgPiAweDdmIHRoZW5cbiAgICBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgbnVtdGFnKVwiO1xuICBsZXQgeCA9XG4gICAgaWYgaGFzX2FyZyB0aGVuIGkgbG9yIDB4ODBcbiAgICBlbHNlIGlcbiAgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociB4KVxuXG5sZXQgcmVhZF9udW10YWcgaWIgY29udCA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiAxIGluXG4gIGxldCB4ID0gQ2hhci5jb2RlIChCeXRlcy5nZXQgaWIuaV9zIGkpIGluXG4gIGxldCBoYXNfYXJnID0geCA+PSAweDgwIGluXG4gIGNvbnQgaWIgKHggbGFuZCAweDdmKSBoYXNfYXJnXG5cbmxldCBtYWtlX3VuaGFzaCBsID1cbiAgbGV0IHRibCA9IEhhc2h0YmwuY3JlYXRlICg0ICogTGlzdC5sZW5ndGggbCkgaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4gcyAtPlxuICAgICAgbGV0IGggPSBoYXNoX25hbWUgcyBpblxuICAgICAgdHJ5XG5cdG1hdGNoIEhhc2h0YmwuZmluZCB0YmwgaCB3aXRoXG5cdCAgICBTb21lIHMnIC0+XG5cdCAgICAgIGlmIHMgPD4gcycgdGhlblxuXHRcdGZhaWx3aXRoIChcblx0XHQgIHNwcmludGZcblx0XHQgICAgXCJCaV9pby5tYWtlX3VuaGFzaDogXFxcbiAgICAgICAgICAgICAgICAgICAgICVTIGFuZCAlUyBoYXZlIHRoZSBzYW1lIGhhc2gsIHBsZWFzZSBwaWNrIGFub3RoZXIgbmFtZVwiXG5cdFx0ICAgIHMgcydcblx0XHQpXG5cdCAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiBIYXNodGJsLmFkZCB0YmwgaCAoU29tZSBzKVxuICApIGw7XG4gIGZ1biBoIC0+XG4gICAgdHJ5IEhhc2h0YmwuZmluZCB0YmwgaFxuICAgIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxuXG5sZXQgd3JpdGVfdGFnIG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIHgpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iICdcXHgwMCdcblxubGV0IHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoaWYgeCB0aGVuICdcXHgwMScgZWxzZSAnXFx4MDAnKVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfY2hhciBvYiB4ID1cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIHhcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDggb2IgeCA9XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgeClcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDE2IG9iIHggPVxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4IGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHggbGFuZCAweGZmKSlcblxubGV0IHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHggPVxuICBsZXQgaGlnaCA9IEludDMyLnRvX2ludCAoSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDE2KSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyIChoaWdoIGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKGhpZ2ggbGFuZCAweGZmKSk7XG4gIGxldCBsb3cgPSBJbnQzMi50b19pbnQgeCBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgobG93IGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAobG93IGxhbmQgMHhmZikpXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9mbG9hdDMyIG9iIHggPVxuICB3cml0ZV91bnRhZ2dlZF9pbnQzMiBvYiAoSW50MzIuYml0c19vZl9mbG9hdCB4KVxuXG5sZXQgZmxvYXRfZW5kaWFubmVzcyA9IGxhenkgKFxuICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCAoT2JqLm1hZ2ljIDEuMCkgMCB3aXRoXG4gICAgICAnXFx4M2YnIC0+IGBCaWdcbiAgICB8ICdcXHgwMCcgLT4gYExpdHRsZVxuICAgIHwgXyAtPiBhc3NlcnQgZmFsc2VcbilcblxubGV0IHJlYWRfdW50YWdnZWRfZmxvYXQ2NCBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA4IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCB4ID0gT2JqLm5ld19ibG9jayBPYmouZG91YmxlX3RhZyA4IGluXG4gIChtYXRjaCBMYXp5LmZvcmNlIGZsb2F0X2VuZGlhbm5lc3Mgd2l0aFxuICAgICAgIGBMaXR0bGUgLT5cblx0IGZvciBqID0gMCB0byA3IGRvXG5cdCAgIEJ5dGVzLnVuc2FmZV9zZXQgKE9iai5vYmogeCkgKDctaikgKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaStqKSlcblx0IGRvbmVcbiAgICAgfCBgQmlnIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IChPYmoub2JqIHgpIGogKEJ5dGVzLnVuc2FmZV9nZXQgcyAoaStqKSlcblx0IGRvbmVcbiAgKTtcbiAgKE9iai5vYmogeCA6IGZsb2F0KVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiB4ID1cbiAgbGV0IGkgPSBCaV9vdXRidWYuYWxsb2Mgb2IgOCBpblxuICBsZXQgcyA9IG9iLm9fcyBpblxuICAobWF0Y2ggTGF6eS5mb3JjZSBmbG9hdF9lbmRpYW5uZXNzIHdpdGhcbiAgICAgICBgTGl0dGxlIC0+XG5cdCBmb3IgaiA9IDAgdG8gNyBkb1xuXHQgICBCeXRlcy51bnNhZmVfc2V0IHMgKGkraikgKFN0cmluZy51bnNhZmVfZ2V0IChPYmoubWFnaWMgeCkgKDctaikpXG5cdCBkb25lXG4gICAgIHwgYEJpZyAtPlxuXHQgZm9yIGogPSAwIHRvIDcgZG9cblx0ICAgQnl0ZXMudW5zYWZlX3NldCBzIChpK2opIChTdHJpbmcudW5zYWZlX2dldCAoT2JqLm1hZ2ljIHgpIGopXG5cdCBkb25lXG4gIClcblxuKCpcbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4ID1cbiAgbGV0IHg0ID0gSW50NjQudG9faW50IChJbnQ2NC5zaGlmdF9yaWdodF9sb2dpY2FsIHggNDgpIGluXG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHg0IGxzciA4KSk7XG4gIEJpX291dGJ1Zi5hZGRfY2hhciBvYiAoQ2hhci5jaHIgKHg0IGxhbmQgMHhmZikpO1xuICBsZXQgeDMgPSBJbnQ2NC50b19pbnQgKEludDY0LnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgeCAzMikgaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoKHgzIGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDMgbGFuZCAweGZmKSk7XG4gIGxldCB4MiA9IEludDY0LnRvX2ludCAoSW50NjQuc2hpZnRfcmlnaHRfbG9naWNhbCB4IDE2KSBpblxuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICgoeDIgbHNyIDgpIGxhbmQgMHhmZikpO1xuICBCaV9vdXRidWYuYWRkX2NoYXIgb2IgKENoYXIuY2hyICh4MiBsYW5kIDB4ZmYpKTtcbiAgbGV0IHgxID0gSW50NjQudG9faW50IHggaW5cbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoKHgxIGxzciA4KSBsYW5kIDB4ZmYpKTtcbiAgQmlfb3V0YnVmLmFkZF9jaGFyIG9iIChDaGFyLmNociAoeDEgbGFuZCAweGZmKSlcbiopXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4ID1cbiAgd3JpdGVfdW50YWdnZWRfZmxvYXQ2NCBvYiAoSW50NjQuZmxvYXRfb2ZfYml0cyB4KVxuXG5cbmxldCBzYWZldHlfdGVzdCAoKSA9XG4gIGxldCBzID0gXCJcXHgzZlxceGYwXFx4MDZcXHgwNVxceDA0XFx4MDNcXHgwMlxceDAxXCIgaW5cbiAgbGV0IHggPSAxLjAwMTQ2OTYyNzA2NjUxMjg4IGluXG4gIGxldCB5ID0gcmVhZF91bnRhZ2dlZF9mbG9hdDY0IChCaV9pbmJ1Zi5mcm9tX3N0cmluZyBzKSBpblxuICBpZiB4IDw+IHkgdGhlblxuICAgIGFzc2VydCBmYWxzZTtcbiAgbGV0IG9iID0gQmlfb3V0YnVmLmNyZWF0ZSA4IGluXG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0NjQgb2IgeDtcbiAgaWYgQmlfb3V0YnVmLmNvbnRlbnRzIG9iIDw+IHMgdGhlblxuICAgIGFzc2VydCBmYWxzZVxuXG5cblxubGV0IHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiBzID1cbiAgQmlfdmludC53cml0ZV91dmludCBvYiAoU3RyaW5nLmxlbmd0aCBzKTtcbiAgQmlfb3V0YnVmLmFkZF9zdHJpbmcgb2Igc1xuXG5sZXQgd3JpdGVfdW50YWdnZWRfdXZpbnQgPSBCaV92aW50LndyaXRlX3V2aW50XG5sZXQgd3JpdGVfdW50YWdnZWRfc3ZpbnQgPSBCaV92aW50LndyaXRlX3N2aW50XG5cbmxldCB3cml0ZV91bml0IG9iICgpID1cbiAgd3JpdGVfdGFnIG9iIHVuaXRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF91bml0IG9iICgpXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICB3cml0ZV90YWcgb2IgYm9vbF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Jvb2wgb2IgeFxuXG5sZXQgd3JpdGVfY2hhciBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDhfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9jaGFyIG9iIHhcblxubGV0IHdyaXRlX2ludDggb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQ4X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50OCBvYiB4XG5cbmxldCB3cml0ZV9pbnQxNiBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGludDE2X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeFxuXG5sZXQgd3JpdGVfaW50MzIgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBpbnQzMl90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHhcblxubGV0IHdyaXRlX2ludDY0IG9iIHggPVxuICB3cml0ZV90YWcgb2IgaW50NjRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4XG5cbmxldCB3cml0ZV9mbG9hdDMyIG9iIHggPVxuICB3cml0ZV90YWcgb2IgZmxvYXQzMl90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeFxuXG5sZXQgd3JpdGVfZmxvYXQ2NCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIGZsb2F0NjRfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHhcblxubGV0IHdyaXRlX3N0cmluZyBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHN0cmluZ190YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiB4XG5cbmxldCB3cml0ZV91dmludCBvYiB4ID1cbiAgd3JpdGVfdGFnIG9iIHV2aW50X3RhZztcbiAgd3JpdGVfdW50YWdnZWRfdXZpbnQgb2IgeFxuXG5sZXQgd3JpdGVfc3ZpbnQgb2IgeCA9XG4gIHdyaXRlX3RhZyBvYiBzdmludF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX3N2aW50IG9iIHhcblxuXG5cblxubGV0IHJlYyB3cml0ZV90IG9iIHRhZ2dlZCAoeCA6IHRyZWUpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgVW5pdCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiB1bml0X3RhZztcblx0d3JpdGVfdW50YWdnZWRfdW5pdCBvYiAoKVxuXG4gICAgfCBgQm9vbCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGJvb2xfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9ib29sIG9iIHhcblxuICAgIHwgYEludDggeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQ4X3RhZztcblx0d3JpdGVfdW50YWdnZWRfY2hhciBvYiB4XG5cbiAgICB8IGBJbnQxNiB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGludDE2X3RhZztcblx0d3JpdGVfdW50YWdnZWRfaW50MTYgb2IgeFxuXG4gICAgfCBgSW50MzIgeCAtPlxuXHRpZiB0YWdnZWQgdGhlblxuXHQgIHdyaXRlX3RhZyBvYiBpbnQzMl90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2ludDMyIG9iIHhcblxuICAgIHwgYEludDY0IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgaW50NjRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9pbnQ2NCBvYiB4XG5cbiAgICB8IGBGbG9hdDMyIHggLT5cbiAgICAgICAgaWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgZmxvYXQzMl90YWc7XG5cdHdyaXRlX3VudGFnZ2VkX2Zsb2F0MzIgb2IgeFxuXG4gICAgfCBgRmxvYXQ2NCB4IC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGZsb2F0NjRfdGFnO1xuXHR3cml0ZV91bnRhZ2dlZF9mbG9hdDY0IG9iIHhcblxuICAgIHwgYFV2aW50IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdXZpbnRfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIHhcblxuICAgIHwgYFN2aW50IHggLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2Igc3ZpbnRfdGFnO1xuXHRCaV92aW50LndyaXRlX3N2aW50IG9iIHhcblxuICAgIHwgYFN0cmluZyBzIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHN0cmluZ190YWc7XG5cdHdyaXRlX3VudGFnZ2VkX3N0cmluZyBvYiBzXG5cbiAgICB8IGBBcnJheSBvIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIGFycmF5X3RhZztcblx0KG1hdGNoIG8gd2l0aFxuXHQgICAgIE5vbmUgLT4gQmlfdmludC53cml0ZV91dmludCBvYiAwXG5cdCAgIHwgU29tZSAobm9kZV90YWcsIGEpIC0+XG5cdCAgICAgICBsZXQgbGVuID0gQXJyYXkubGVuZ3RoIGEgaW5cblx0ICAgICAgIEJpX3ZpbnQud3JpdGVfdXZpbnQgb2IgbGVuO1xuXHQgICAgICAgaWYgbGVuID4gMCB0aGVuIChcblx0XHQgd3JpdGVfdGFnIG9iIG5vZGVfdGFnO1xuXHRcdCBBcnJheS5pdGVyICh3cml0ZV90IG9iIGZhbHNlKSBhXG5cdCAgICAgICApXG5cdClcblxuICAgIHwgYFR1cGxlIGEgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdHVwbGVfdGFnO1xuXHRCaV92aW50LndyaXRlX3V2aW50IG9iIChBcnJheS5sZW5ndGggYSk7XG5cdEFycmF5Lml0ZXIgKHdyaXRlX3Qgb2IgdHJ1ZSkgYVxuXG4gICAgfCBgUmVjb3JkIGEgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgcmVjb3JkX3RhZztcblx0QmlfdmludC53cml0ZV91dmludCBvYiAoQXJyYXkubGVuZ3RoIGEpO1xuICAgICAgICBBcnJheS5pdGVyICh3cml0ZV9maWVsZCBvYikgYVxuXG4gICAgfCBgTnVtX3ZhcmlhbnQgKGksIHgpIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIG51bV92YXJpYW50X3RhZztcblx0d3JpdGVfbnVtdGFnIG9iIGkgKHggPD4gTm9uZSk7XG5cdChtYXRjaCB4IHdpdGhcblx0ICAgICBOb25lIC0+ICgpXG5cdCAgIHwgU29tZSB2IC0+IHdyaXRlX3Qgb2IgdHJ1ZSB2KVxuXG4gICAgfCBgVmFyaWFudCAobywgaCwgeCkgLT5cblx0aWYgdGFnZ2VkIHRoZW5cblx0ICB3cml0ZV90YWcgb2IgdmFyaWFudF90YWc7XG5cdHdyaXRlX2hhc2h0YWcgb2IgaCAoeCA8PiBOb25lKTtcblx0KG1hdGNoIHggd2l0aFxuXHQgICAgIE5vbmUgLT4gKClcblx0ICAgfCBTb21lIHYgLT4gd3JpdGVfdCBvYiB0cnVlIHYpXG5cbiAgICB8IGBUYWJsZSBvIC0+XG5cdGlmIHRhZ2dlZCB0aGVuXG5cdCAgd3JpdGVfdGFnIG9iIHRhYmxlX3RhZztcblx0KG1hdGNoIG8gd2l0aFxuXHQgICAgIE5vbmUgLT4gQmlfdmludC53cml0ZV91dmludCBvYiAwXG5cdCAgIHwgU29tZSAoZmllbGRzLCBhKSAtPlxuXHQgICAgICAgbGV0IHJvd19udW0gPSBBcnJheS5sZW5ndGggYSBpblxuXHQgICAgICAgQmlfdmludC53cml0ZV91dmludCBvYiByb3dfbnVtO1xuXHQgICAgICAgaWYgcm93X251bSA+IDAgdGhlblxuXHRcdCBsZXQgY29sX251bSA9IEFycmF5Lmxlbmd0aCBmaWVsZHMgaW5cblx0XHQgQmlfdmludC53cml0ZV91dmludCBvYiBjb2xfbnVtO1xuXHRcdCBBcnJheS5pdGVyIChcblx0XHQgICBmdW4gKG5hbWUsIGgsIHRhZykgLT5cblx0XHQgICAgIHdyaXRlX2hhc2h0YWcgb2IgaCB0cnVlO1xuXHRcdCAgICAgd3JpdGVfdGFnIG9iIHRhZ1xuXHRcdCApIGZpZWxkcztcblx0XHQgaWYgcm93X251bSA+IDAgdGhlbiAoXG5cdFx0ICAgZm9yIGkgPSAwIHRvIHJvd19udW0gLSAxIGRvXG5cdFx0ICAgICBsZXQgYWkgPSBhLihpKSBpblxuXHRcdCAgICAgaWYgQXJyYXkubGVuZ3RoIGFpIDw+IGNvbF9udW0gdGhlblxuXHRcdCAgICAgICBpbnZhbGlkX2FyZyBcIkJpX2lvLndyaXRlX3Q6IE1hbGZvcm1lZCBgVGFibGVcIjtcblx0XHQgICAgIGZvciBqID0gMCB0byBjb2xfbnVtIC0gMSBkb1xuXHRcdCAgICAgICB3cml0ZV90IG9iIGZhbHNlIGFpLihqKVxuXHRcdCAgICAgZG9uZVxuXHRcdCAgIGRvbmVcblx0XHQgKVxuXHQpXG5cbiAgICB8IGBTaGFyZWQgeCAtPlxuICAgICAgICBpZiB0YWdnZWQgdGhlblxuICAgICAgICAgIHdyaXRlX3RhZyBvYiBzaGFyZWRfdGFnO1xuICAgICAgICBsZXQgb2Zmc2V0ID1cbiAgICAgICAgICBCaV9zaGFyZS5Xci5wdXQgb2Iub19zaGFyZWRcbiAgICAgICAgICAgICh4LCBCaV9zaGFyZS5kdW1teV90eXBlX2lkKSAob2Iub19vZmZzICsgb2Iub19sZW4pIGluXG4gICAgICAgIEJpX3ZpbnQud3JpdGVfdXZpbnQgb2Igb2Zmc2V0O1xuICAgICAgICBpZiBvZmZzZXQgPSAwIHRoZW5cbiAgICAgICAgICB3cml0ZV90IG9iIHRydWUgeFxuXG5hbmQgd3JpdGVfZmllbGQgb2IgKHMsIGgsIHgpID1cbiAgd3JpdGVfaGFzaHRhZyBvYiBoIHRydWU7XG4gIHdyaXRlX3Qgb2IgdHJ1ZSB4XG5cbmxldCB3cml0ZV90cmVlIG9iIHggPVxuICB3cml0ZV90IG9iIHRydWUgeFxuXG5sZXQgc3RyaW5nX29mX3RyZWUgeCA9XG4gIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGUgMTAwMCBpblxuICB3cml0ZV90cmVlIG9iIHg7XG4gIEJpX291dGJ1Zi5jb250ZW50cyBvYlxuXG5sZXQgdGFnX29mX3RyZWUgKHggOiB0cmVlKSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYFVuaXQgLT4gdW5pdF90YWdcbiAgICB8IGBCb29sIF8gLT4gYm9vbF90YWdcbiAgICB8IGBJbnQ4IF8gLT4gaW50OF90YWdcbiAgICB8IGBJbnQxNiBfIC0+IGludDE2X3RhZ1xuICAgIHwgYEludDMyIF8gLT4gaW50MzJfdGFnXG4gICAgfCBgSW50NjQgXyAtPiBpbnQ2NF90YWdcbiAgICB8IGBGbG9hdDMyIF8gLT4gZmxvYXQzMl90YWdcbiAgICB8IGBGbG9hdDY0IF8gLT4gZmxvYXQ2NF90YWdcbiAgICB8IGBVdmludCBfIC0+IHV2aW50X3RhZ1xuICAgIHwgYFN2aW50IF8gLT4gc3ZpbnRfdGFnXG4gICAgfCBgU3RyaW5nIF8gLT4gc3RyaW5nX3RhZ1xuICAgIHwgYEFycmF5IF8gLT4gYXJyYXlfdGFnXG4gICAgfCBgVHVwbGUgXyAtPiB0dXBsZV90YWdcbiAgICB8IGBSZWNvcmQgXyAtPiByZWNvcmRfdGFnXG4gICAgfCBgTnVtX3ZhcmlhbnQgXyAtPiBudW1fdmFyaWFudF90YWdcbiAgICB8IGBWYXJpYW50IF8gLT4gdmFyaWFudF90YWdcbiAgICB8IGBUYWJsZSBfIC0+IHRhYmxlX3RhZ1xuICAgIHwgYFNoYXJlZCBfIC0+IHNoYXJlZF90YWdcblxuXG5sZXQgcmVhZF90YWcgaWIgPVxuICBDaGFyLmNvZGUgKEJpX2luYnVmLnJlYWRfY2hhciBpYilcblxubGV0IHJlYWRfdW50YWdnZWRfdW5pdCBpYiA9XG4gIG1hdGNoIEJpX2luYnVmLnJlYWRfY2hhciBpYiB3aXRoXG4gICAgICAnXFx4MDAnIC0+ICgpXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAodW5pdCB2YWx1ZSlcIlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9ib29sIGliID1cbiAgbWF0Y2ggQmlfaW5idWYucmVhZF9jaGFyIGliIHdpdGhcbiAgICAgICdcXHgwMCcgLT4gZmFsc2VcbiAgICB8ICdcXHgwMScgLT4gdHJ1ZVxuICAgIHwgXyAtPiBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGJvb2wgdmFsdWUpXCJcblxubGV0IHJlYWRfdW50YWdnZWRfY2hhciBpYiA9IEJpX2luYnVmLnJlYWRfY2hhciBpYlxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ4IGliID1cbiAgQ2hhci5jb2RlIChCaV9pbmJ1Zi5yZWFkX2NoYXIgaWIpXG5cbmxldCByZWFkX3VudGFnZ2VkX2ludDE2IGliID1cbiAgbGV0IGkgPSBCaV9pbmJ1Zi5yZWFkIGliIDIgaW5cbiAgbGV0IHMgPSBpYi5pX3MgaW5cbiAgKChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpKSBsc2wgOCkgbG9yIChDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIChpKzEpKSlcblxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQzMiBpYiA9XG4gIGxldCBpID0gQmlfaW5idWYucmVhZCBpYiA0IGluXG4gIGxldCBzID0gaWIuaV9zIGluXG4gIGxldCBnZXRfY29kZSBzIGkgPSBDaGFyLmNvZGUgKEJ5dGVzLmdldCBzIGkpIGluXG4gIGxldCB4MSA9XG4gICAgSW50MzIub2ZfaW50ICgoKGdldF9jb2RlIHMgKGkgICkpIGxzbCA4KSBsb3IgKGdldF9jb2RlIHMgKGkrMSkpKSBpblxuICBsZXQgeDIgPVxuICAgIEludDMyLm9mX2ludCAoKChnZXRfY29kZSBzIChpKzIpKSBsc2wgOCkgbG9yIChnZXRfY29kZSBzIChpKzMpKSkgaW5cbiAgSW50MzIubG9nb3IgKEludDMyLnNoaWZ0X2xlZnQgeDEgMTYpIHgyXG5cbmxldCByZWFkX3VudGFnZ2VkX2Zsb2F0MzIgaWIgPVxuICBJbnQzMi5mbG9hdF9vZl9iaXRzIChyZWFkX3VudGFnZ2VkX2ludDMyIGliKVxuXG4oKlxubGV0IHJlYWRfdW50YWdnZWRfaW50NjQgaWIgPVxuICBsZXQgaSA9IEJpX2luYnVmLnJlYWQgaWIgOCBpblxuICBsZXQgcyA9IGliLmlfcyBpblxuICBsZXQgeDEgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSAgXSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krMV0pKSBpblxuICBsZXQgeDIgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSsyXSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krM10pKSBpblxuICBsZXQgeDMgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSs0XSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krNV0pKSBpblxuICBsZXQgeDQgPVxuICAgIEludDY0Lm9mX2ludCAoKChDaGFyLmNvZGUgcy5baSs2XSkgbHNsIDgpIGxvciAoQ2hhci5jb2RlIHMuW2krN10pKSBpblxuICBJbnQ2NC5sb2dvciAoSW50NjQuc2hpZnRfbGVmdCB4MSA0OClcbiAgICAoSW50NjQubG9nb3IgKEludDY0LnNoaWZ0X2xlZnQgeDIgMzIpXG4gICAgICAgKEludDY0LmxvZ29yIChJbnQ2NC5zaGlmdF9sZWZ0IHgzIDE2KSB4NCkpXG4qKVxuXG5sZXQgcmVhZF91bnRhZ2dlZF9pbnQ2NCBpYiA9XG4gIEludDY0LmJpdHNfb2ZfZmxvYXQgKHJlYWRfdW50YWdnZWRfZmxvYXQ2NCBpYilcblxuXG5cbmxldCByZWFkX3VudGFnZ2VkX3N0cmluZyBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgbGV0IHN0ciA9IEJ5dGVzLmNyZWF0ZSBsZW4gaW5cbiAgbGV0IHBvcyA9IHJlZiAwIGluXG4gIGxldCByZW0gPSByZWYgbGVuIGluXG4gIHdoaWxlICFyZW0gPiAwIGRvXG4gICAgbGV0IGJ5dGVzX3JlYWQgPSBCaV9pbmJ1Zi50cnlfcHJlcmVhZCBpYiAhcmVtIGluXG4gICAgaWYgYnl0ZXNfcmVhZCA9IDAgdGhlblxuICAgICAgQmlfdXRpbC5lcnJvciBcIkNvcnJ1cHRlZCBkYXRhIChzdHJpbmcpXCJcbiAgICBlbHNlIChcbiAgICAgIEJ5dGVzLmJsaXQgaWIuaV9zIGliLmlfcG9zIHN0ciAhcG9zIGJ5dGVzX3JlYWQ7XG4gICAgICBpYi5pX3BvcyA8LSBpYi5pX3BvcyArIGJ5dGVzX3JlYWQ7XG4gICAgICBwb3MgOj0gIXBvcyArIGJ5dGVzX3JlYWQ7XG4gICAgICByZW0gOj0gIXJlbSAtIGJ5dGVzX3JlYWRcbiAgICApXG4gIGRvbmU7XG4gIEJ5dGVzLnRvX3N0cmluZyBzdHJcblxubGV0IHJlYWRfdW50YWdnZWRfdXZpbnQgPSBCaV92aW50LnJlYWRfdXZpbnRcbmxldCByZWFkX3VudGFnZ2VkX3N2aW50ID0gQmlfdmludC5yZWFkX3N2aW50XG5cbmxldCByZWFkX3VuaXQgaWIgPSByZWFkX3VudGFnZ2VkX3VuaXQgaWI7IGBVbml0XG5cbmxldCByZWFkX2Jvb2wgaWIgPSBgQm9vbCAocmVhZF91bnRhZ2dlZF9ib29sIGliKVxuXG5sZXQgcmVhZF9pbnQ4IGliID0gYEludDggKHJlYWRfdW50YWdnZWRfY2hhciBpYilcblxubGV0IHJlYWRfaW50MTYgaWIgPSBgSW50MTYgKHJlYWRfdW50YWdnZWRfaW50MTYgaWIpXG5cbmxldCByZWFkX2ludDMyIGliID0gYEludDMyIChyZWFkX3VudGFnZ2VkX2ludDMyIGliKVxuXG5sZXQgcmVhZF9pbnQ2NCBpYiA9IGBJbnQ2NCAocmVhZF91bnRhZ2dlZF9pbnQ2NCBpYilcblxubGV0IHJlYWRfZmxvYXQzMiBpYiA9XG4gIGBGbG9hdDMyIChyZWFkX3VudGFnZ2VkX2Zsb2F0MzIgaWIpXG5cbmxldCByZWFkX2Zsb2F0NjQgaWIgPVxuICBgRmxvYXQ2NCAocmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliKVxuXG5sZXQgcmVhZF91dmludCBpYiA9IGBVdmludCAocmVhZF91bnRhZ2dlZF91dmludCBpYilcbmxldCByZWFkX3N2aW50IGliID0gYFN2aW50IChyZWFkX3VudGFnZ2VkX3N2aW50IGliKVxuXG5sZXQgcmVhZF9zdHJpbmcgaWIgPSBgU3RyaW5nIChyZWFkX3VudGFnZ2VkX3N0cmluZyBpYilcblxubGV0IHByaW50IHMgPSBwcmludF9zdHJpbmcgczsgcHJpbnRfbmV3bGluZSAoKVxuXG5sZXQgcmVhZF90cmVlID8odW5oYXNoID0gbWFrZV91bmhhc2ggW10pIGliIDogdHJlZSA9XG5cbiAgbGV0IHJlYyByZWFkX2FycmF5IGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgaWYgbGVuID0gMCB0aGVuIGBBcnJheSBOb25lXG4gICAgZWxzZVxuICAgICAgbGV0IHRhZyA9IHJlYWRfdGFnIGliIGluXG4gICAgICBsZXQgcmVhZCA9IHJlYWRlcl9vZl90YWcgdGFnIGluXG4gICAgICBgQXJyYXkgKFNvbWUgKHRhZywgQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWQgaWIpKSlcblxuICBhbmQgcmVhZF90dXBsZSBpYiA9XG4gICAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGBUdXBsZSAoQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWRfdHJlZSBpYikpXG5cbiAgYW5kIHJlYWRfZmllbGQgaWIgPVxuICAgIGxldCBoID0gcmVhZF9maWVsZF9oYXNodGFnIGliIGluXG4gICAgbGV0IG5hbWUgPSB1bmhhc2ggaCBpblxuICAgIGxldCB4ID0gcmVhZF90cmVlIGliIGluXG4gICAgKG5hbWUsIGgsIHgpXG5cbiAgYW5kIHJlYWRfcmVjb3JkIGliID1cbiAgICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgYFJlY29yZCAoQXJyYXkuaW5pdCBsZW4gKGZ1biBfIC0+IHJlYWRfZmllbGQgaWIpKVxuXG4gIGFuZCByZWFkX251bV92YXJpYW50X2NvbnQgaWIgaSBoYXNfYXJnID1cbiAgICBsZXQgeCA9XG4gICAgICBpZiBoYXNfYXJnIHRoZW5cblx0U29tZSAocmVhZF90cmVlIGliKVxuICAgICAgZWxzZVxuXHROb25lXG4gICAgaW5cbiAgICBgTnVtX3ZhcmlhbnQgKGksIHgpXG5cbiAgYW5kIHJlYWRfbnVtX3ZhcmlhbnQgaWIgPVxuICAgIHJlYWRfbnVtdGFnIGliIHJlYWRfbnVtX3ZhcmlhbnRfY29udFxuXG4gIGFuZCByZWFkX3ZhcmlhbnRfY29udCBpYiBoIGhhc19hcmcgPVxuICAgIGxldCBuYW1lID0gdW5oYXNoIGggaW5cbiAgICBsZXQgeCA9XG4gICAgICBpZiBoYXNfYXJnIHRoZW5cblx0U29tZSAocmVhZF90cmVlIGliKVxuICAgICAgZWxzZVxuXHROb25lXG4gICAgaW5cbiAgICBgVmFyaWFudCAobmFtZSwgaCwgeClcblxuICBhbmQgcmVhZF92YXJpYW50IGliID1cbiAgICByZWFkX2hhc2h0YWcgaWIgcmVhZF92YXJpYW50X2NvbnRcblxuICBhbmQgcmVhZF90YWJsZSBpYiA9XG4gICAgbGV0IHJvd19udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgICBpZiByb3dfbnVtID0gMCB0aGVuXG4gICAgICBgVGFibGUgTm9uZVxuICAgIGVsc2VcbiAgICAgIGxldCBjb2xfbnVtID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgICBsZXQgZmllbGRzID1cblx0QXJyYXkuaW5pdCBjb2xfbnVtIChcblx0ICBmdW4gXyAtPlxuXHQgICAgbGV0IGggPSByZWFkX2ZpZWxkX2hhc2h0YWcgaWIgaW5cblx0ICAgIGxldCBuYW1lID0gdW5oYXNoIGggaW5cblx0ICAgIGxldCB0YWcgPSByZWFkX3RhZyBpYiBpblxuXHQgICAgKG5hbWUsIGgsIHRhZylcblx0KVxuICAgICAgaW5cbiAgICAgIGxldCByZWFkZXJzID1cblx0QXJyYXkubWFwIChmdW4gKG5hbWUsIGgsIHRhZykgLT4gcmVhZGVyX29mX3RhZyB0YWcpIGZpZWxkcyBpblxuICAgICAgbGV0IGEgPVxuXHRBcnJheS5pbml0IHJvd19udW1cblx0ICAoZnVuIF8gLT5cblx0ICAgICBBcnJheS5pbml0IGNvbF9udW0gKGZ1biBqIC0+IHJlYWRlcnMuKGopIGliKSlcbiAgICAgIGluXG4gICAgICBgVGFibGUgKFNvbWUgKGZpZWxkcywgYSkpXG5cbiAgYW5kIHJlYWRfc2hhcmVkIGliID1cbiAgICBsZXQgcG9zID0gaWIuaV9vZmZzICsgaWIuaV9wb3MgaW5cbiAgICBsZXQgb2Zmc2V0ID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gICAgaWYgb2Zmc2V0ID0gMCB0aGVuXG4gICAgICBsZXQgcmVjIHIgPSBgU2hhcmVkIHIgaW5cbiAgICAgIEJpX3NoYXJlLlJkLnB1dCBpYi5pX3NoYXJlZFxuICAgICAgICAocG9zLCBCaV9zaGFyZS5kdW1teV90eXBlX2lkKSAoT2JqLnJlcHIgcik7XG4gICAgICBsZXQgeCA9IHJlYWRfdHJlZSBpYiBpblxuICAgICAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgcikgMSAoT2JqLnJlcHIgeCk7XG4gICAgICByXG4gICAgZWxzZVxuICAgICAgT2JqLm9iaiAoQmlfc2hhcmUuUmQuZ2V0IGliLmlfc2hhcmVkXG4gICAgICAgICAgICAgICAgIChwb3MgLSBvZmZzZXQsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpKVxuXG4gIGFuZCByZWFkZXJfb2ZfdGFnID0gZnVuY3Rpb25cbiAgICAgIDAgKCogYm9vbCAqKSAtPiByZWFkX2Jvb2xcbiAgICB8IDEgKCogaW50OCAqKSAtPiByZWFkX2ludDhcbiAgICB8IDIgKCogaW50MTYgKikgLT4gcmVhZF9pbnQxNlxuICAgIHwgMyAoKiBpbnQzMiAqKSAtPiByZWFkX2ludDMyXG4gICAgfCA0ICgqIGludDY0ICopIC0+IHJlYWRfaW50NjRcbiAgICB8IDExICgqIGZsb2F0MzIgKikgLT4gcmVhZF9mbG9hdDMyXG4gICAgfCAxMiAoKiBmbG9hdDY0ICopIC0+IHJlYWRfZmxvYXQ2NFxuICAgIHwgMTYgKCogdXZpbnQgKikgLT4gcmVhZF91dmludFxuICAgIHwgMTcgKCogc3ZpbnQgKikgLT4gcmVhZF9zdmludFxuICAgIHwgMTggKCogc3RyaW5nICopIC0+IHJlYWRfc3RyaW5nXG4gICAgfCAxOSAoKiBhcnJheSAqKSAtPiByZWFkX2FycmF5XG4gICAgfCAyMCAoKiB0dXBsZSAqKSAtPiByZWFkX3R1cGxlXG4gICAgfCAyMSAoKiByZWNvcmQgKikgLT4gcmVhZF9yZWNvcmRcbiAgICB8IDIyICgqIG51bV92YXJpYW50ICopIC0+IHJlYWRfbnVtX3ZhcmlhbnRcbiAgICB8IDIzICgqIHZhcmlhbnQgKikgLT4gcmVhZF92YXJpYW50XG4gICAgfCAyNCAoKiB1bml0ICopIC0+IHJlYWRfdW5pdFxuICAgIHwgMjUgKCogdGFibGUgKikgLT4gcmVhZF90YWJsZVxuICAgIHwgMjYgKCogc2hhcmVkICopIC0+IHJlYWRfc2hhcmVkXG4gICAgfCBfIC0+IEJpX3V0aWwuZXJyb3IgXCJDb3JydXB0ZWQgZGF0YSAoaW52YWxpZCB0YWcpXCJcblxuICBhbmQgcmVhZF90cmVlIGliIDogdHJlZSA9XG4gICAgcmVhZGVyX29mX3RhZyAocmVhZF90YWcgaWIpIGliXG5cbiAgaW5cbiAgcmVhZF90cmVlIGliXG5cbmxldCB0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMgPSByZWFkX3RyZWUgP3VuaGFzaCAoQmlfaW5idWYuZnJvbV9zdHJpbmcgcylcblxuXG5sZXQgc2tpcF9ieXRlcyBpYiBuID0gaWdub3JlIChCaV9pbmJ1Zi5yZWFkIGliIG4pXG5cbmxldCBza2lwX3VuaXQgaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2Jvb2wgaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2ludDggaWIgPSBza2lwX2J5dGVzIGliIDFcbmxldCBza2lwX2ludDE2IGliID0gc2tpcF9ieXRlcyBpYiAyXG5sZXQgc2tpcF9pbnQzMiBpYiA9IHNraXBfYnl0ZXMgaWIgNFxubGV0IHNraXBfaW50NjQgaWIgPSBza2lwX2J5dGVzIGliIDhcbmxldCBza2lwX2Zsb2F0MzIgaWIgPSBza2lwX2J5dGVzIGliIDRcbmxldCBza2lwX2Zsb2F0NjQgaWIgPSBza2lwX2J5dGVzIGliIDhcbmxldCBza2lwX3V2aW50IGliID0gaWdub3JlIChyZWFkX3VudGFnZ2VkX3V2aW50IGliKVxubGV0IHNraXBfc3ZpbnQgaWIgPSBpZ25vcmUgKHJlYWRfdW50YWdnZWRfc3ZpbnQgaWIpXG5cbmxldCBza2lwX3N0cmluZyBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgc2tpcF9ieXRlcyBpYiBsZW5cblxubGV0IHJlYyBza2lwX2FycmF5IGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBpZiBsZW4gPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCB0YWcgPSByZWFkX3RhZyBpYiBpblxuICAgIGxldCByZWFkID0gc2tpcHBlcl9vZl90YWcgdGFnIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiBkb1xuICAgICAgcmVhZCBpYlxuICAgIGRvbmVcblxuYW5kIHNraXBfdHVwbGUgaWIgPVxuICBsZXQgbGVuID0gQmlfdmludC5yZWFkX3V2aW50IGliIGluXG4gIGZvciBpID0gMSB0byBsZW4gZG9cbiAgICBza2lwIGliXG4gIGRvbmVcblxuYW5kIHNraXBfZmllbGQgaWIgPVxuICBpZ25vcmUgKHJlYWRfZmllbGRfaGFzaHRhZyBpYik7XG4gIHNraXAgaWJcblxuYW5kIHNraXBfcmVjb3JkIGliID1cbiAgbGV0IGxlbiA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICBmb3IgaSA9IDEgdG8gbGVuIGRvXG4gICAgc2tpcF9maWVsZCBpYlxuICBkb25lXG5cbmFuZCBza2lwX251bV92YXJpYW50X2NvbnQgaWIgaSBoYXNfYXJnID1cbiAgaWYgaGFzX2FyZyB0aGVuXG4gICAgc2tpcCBpYlxuXG5hbmQgc2tpcF9udW1fdmFyaWFudCBpYiA9XG4gIHJlYWRfbnVtdGFnIGliIHNraXBfbnVtX3ZhcmlhbnRfY29udFxuXG5hbmQgc2tpcF92YXJpYW50X2NvbnQgaWIgaCBoYXNfYXJnID1cbiAgaWYgaGFzX2FyZyB0aGVuXG4gICAgc2tpcCBpYlxuXG5hbmQgc2tpcF92YXJpYW50IGliID1cbiAgcmVhZF9oYXNodGFnIGliIHNraXBfdmFyaWFudF9jb250XG5cbmFuZCBza2lwX3RhYmxlIGliID1cbiAgbGV0IHJvd19udW0gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgaWYgcm93X251bSA9IDAgdGhlblxuICAgICgpXG4gIGVsc2VcbiAgICBsZXQgY29sX251bSA9IEJpX3ZpbnQucmVhZF91dmludCBpYiBpblxuICAgIGxldCByZWFkZXJzID1cbiAgICAgIEFycmF5LmluaXQgY29sX251bSAoXG5cdGZ1biBfIC0+XG5cdCAgaWdub3JlIChyZWFkX2ZpZWxkX2hhc2h0YWcgaWIpO1xuXHQgIHNraXBwZXJfb2ZfdGFnIChyZWFkX3RhZyBpYilcbiAgICAgIClcbiAgICBpblxuICAgIGZvciBpID0gMSB0byByb3dfbnVtIGRvXG4gICAgICBmb3IgaiA9IDEgdG8gY29sX251bSBkb1xuXHRyZWFkZXJzLihqKSBpYlxuICAgICAgZG9uZVxuICAgIGRvbmVcblxuYW5kIHNraXBwZXJfb2ZfdGFnID0gZnVuY3Rpb25cbiAgICAwICgqIGJvb2wgKikgLT4gc2tpcF9ib29sXG4gIHwgMSAoKiBpbnQ4ICopIC0+IHNraXBfaW50OFxuICB8IDIgKCogaW50MTYgKikgLT4gc2tpcF9pbnQxNlxuICB8IDMgKCogaW50MzIgKikgLT4gc2tpcF9pbnQzMlxuICB8IDQgKCogaW50NjQgKikgLT4gc2tpcF9pbnQ2NFxuICB8IDExICgqIGZsb2F0MzIgKikgLT4gc2tpcF9mbG9hdDMyXG4gIHwgMTIgKCogZmxvYXQ2NCAqKSAtPiBza2lwX2Zsb2F0NjRcbiAgfCAxNiAoKiB1dmludCAqKSAtPiBza2lwX3V2aW50XG4gIHwgMTcgKCogc3ZpbnQgKikgLT4gc2tpcF9zdmludFxuICB8IDE4ICgqIHN0cmluZyAqKSAtPiBza2lwX3N0cmluZ1xuICB8IDE5ICgqIGFycmF5ICopIC0+IHNraXBfYXJyYXlcbiAgfCAyMCAoKiB0dXBsZSAqKSAtPiBza2lwX3R1cGxlXG4gIHwgMjEgKCogcmVjb3JkICopIC0+IHNraXBfcmVjb3JkXG4gIHwgMjIgKCogbnVtX3ZhcmlhbnQgKikgLT4gc2tpcF9udW1fdmFyaWFudFxuICB8IDIzICgqIHZhcmlhbnQgKikgLT4gc2tpcF92YXJpYW50XG4gIHwgMjQgKCogdW5pdCAqKSAtPiBza2lwX3VuaXRcbiAgfCAyNSAoKiB0YWJsZSAqKSAtPiBza2lwX3RhYmxlXG4gIHwgXyAtPiBCaV91dGlsLmVycm9yIFwiQ29ycnVwdGVkIGRhdGEgKGludmFsaWQgdGFnKVwiXG5cbmFuZCBza2lwIGliIDogdW5pdCA9XG4gIHNraXBwZXJfb2ZfdGFnIChyZWFkX3RhZyBpYikgaWJcblxuXG4oKiBFcXVpdmFsZW50IG9mIEFycmF5Lm1hcCB0aGF0IGd1YXJhbnRlZXMgYSBsZWZ0LXRvLXJpZ2h0IG9yZGVyICopXG5sZXQgYXJyYXlfbWFwIGYgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBpZiBsZW4gPSAwIHRoZW4gW3x8XVxuICBlbHNlIChcbiAgICBsZXQgciA9IEFycmF5Lm1ha2UgbGVuIChmIChBcnJheS51bnNhZmVfZ2V0IGEgMCkpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgciBpIChmIChBcnJheS51bnNhZmVfZ2V0IGEgaSkpXG4gICAgZG9uZTtcbiAgICByXG4gIClcblxuXG5tb2R1bGUgUHAgPVxuc3RydWN0XG4gIG9wZW4gRWFzeV9mb3JtYXRcblxuICBsZXQgYXJyYXkgPSBsaXN0XG4gIGxldCByZWNvcmQgPSBsaXN0XG4gIGxldCB0dXBsZSA9IHsgbGlzdCB3aXRoXG5cdFx0ICBzcGFjZV9hZnRlcl9vcGVuaW5nID0gZmFsc2U7XG5cdFx0ICBzcGFjZV9iZWZvcmVfY2xvc2luZyA9IGZhbHNlO1xuXHRcdCAgYWxpZ25fY2xvc2luZyA9IGZhbHNlIH1cbiAgbGV0IHZhcmlhbnQgPSB7IGxpc3Qgd2l0aFxuXHRcdCAgICBzZXBhcmF0b3JzX3N0aWNrX2xlZnQgPSB0cnVlIH1cblxuICBsZXQgbWFwIGYgYSA9IEFycmF5LnRvX2xpc3QgKGFycmF5X21hcCBmIGEpXG5cbiAgbGV0IHJlYyBmb3JtYXQgc2hhcmVkICh4IDogdHJlZSkgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgICAgICBgVW5pdCAtPiBBdG9tIChcInVuaXRcIiwgYXRvbSlcbiAgICAgIHwgYEJvb2wgeCAtPiBBdG9tICgoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKSwgYXRvbSlcbiAgICAgIHwgYEludDggeCAtPiBBdG9tIChzcHJpbnRmIFwiMHglMDJ4XCIgKENoYXIuY29kZSB4KSwgYXRvbSlcbiAgICAgIHwgYEludDE2IHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTA0eFwiIHgsIGF0b20pXG4gICAgICB8IGBJbnQzMiB4IC0+IEF0b20gKHNwcmludGYgXCIweCUwOGx4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEludDY0IHggLT4gQXRvbSAoc3ByaW50ZiBcIjB4JTAxNkx4XCIgeCwgYXRvbSlcbiAgICAgIHwgYEZsb2F0MzIgeCAtPiBBdG9tIChzdHJpbmdfb2ZfZmxvYXQgeCwgYXRvbSlcbiAgICAgIHwgYEZsb2F0NjQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfZmxvYXQgeCwgYXRvbSlcbiAgICAgIHwgYFV2aW50IHggLT4gQXRvbSAoc3RyaW5nX29mX2ludCB4LCBhdG9tKVxuICAgICAgfCBgU3ZpbnQgeCAtPiBBdG9tIChzdHJpbmdfb2ZfaW50IHgsIGF0b20pXG4gICAgICB8IGBTdHJpbmcgcyAtPiBBdG9tIChzcHJpbnRmIFwiJVNcIiBzLCBhdG9tKVxuICAgICAgfCBgQXJyYXkgTm9uZSAtPiBBdG9tIChcIltdXCIsIGF0b20pXG4gICAgICB8IGBBcnJheSAoU29tZSAoXywgYSkpIC0+XG4gICAgICAgICAgTGlzdCAoKFwiW1wiLCBcIixcIiwgXCJdXCIsIGFycmF5KSwgbWFwIChmb3JtYXQgc2hhcmVkKSBhKVxuICAgICAgfCBgVHVwbGUgYSAtPiBMaXN0ICgoXCIoXCIsIFwiLFwiLCBcIilcIiwgdHVwbGUpLCBtYXAgKGZvcm1hdCBzaGFyZWQpIGEpXG4gICAgICB8IGBSZWNvcmQgYSAtPiBMaXN0ICgoXCJ7XCIsIFwiLFwiLCBcIn1cIiwgcmVjb3JkKSwgbWFwIChmb3JtYXRfZmllbGQgc2hhcmVkKSBhKVxuICAgICAgfCBgTnVtX3ZhcmlhbnQgKGksIG8pIC0+XG5cdCAgbGV0IHN1ZmZpeCA9XG5cdCAgICBpZiBpID0gMCB0aGVuIFwiXCJcblx0ICAgIGVsc2Ugc3RyaW5nX29mX2ludCBpXG5cdCAgaW5cblx0ICAobWF0Y2ggbyB3aXRoXG5cdCAgICAgICBOb25lIC0+IEF0b20gKFwiTm9uZVwiIF4gc3VmZml4LCBhdG9tKVxuXHQgICAgIHwgU29tZSB4IC0+XG5cdFx0IGxldCBjb25zID0gQXRvbSAoXCJTb21lXCIgXiBzdWZmaXgsIGF0b20pIGluXG5cdFx0IExhYmVsICgoY29ucywgbGFiZWwpLCBmb3JtYXQgc2hhcmVkIHgpKVxuICAgICAgfCBgVmFyaWFudCAob3B0X25hbWUsIGgsIG8pIC0+XG5cdCAgbGV0IG5hbWUgPVxuXHQgICAgbWF0Y2ggb3B0X25hbWUgd2l0aFxuXHRcdE5vbmUgLT4gc3ByaW50ZiBcIiMlMDhseFwiIChJbnQzMi5vZl9pbnQgaClcblx0ICAgICAgfCBTb21lIHMgLT4gc3ByaW50ZiBcIiVTXCIgc1xuXHQgIGluXG5cdCAgKG1hdGNoIG8gd2l0aFxuXHQgICAgICAgTm9uZSAtPiBBdG9tIChcIjxcIiBeIG5hbWUgXiBcIj5cIiwgYXRvbSlcblx0ICAgICB8IFNvbWUgeCAtPlxuXHRcdCBMaXN0ICgoXCI8XCIsIFwiXCIsIFwiPlwiLCB0dXBsZSksXG4gICAgICAgICAgICAgICAgICAgICAgIFsgTGFiZWwgKChBdG9tIChuYW1lIF4gXCI6XCIsIGF0b20pLCBsYWJlbCksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCBzaGFyZWQgeCkgXSlcblx0ICApXG4gICAgICB8IGBUYWJsZSBOb25lIC0+IEF0b20gKFwiW11cIiwgYXRvbSlcbiAgICAgIHwgYFRhYmxlIChTb21lIChoZWFkZXIsIGFhKSkgLT5cblx0ICBsZXQgcmVjb3JkX2FycmF5ID1cblx0ICAgIGBBcnJheSAoXG5cdCAgICAgIFNvbWUgKFxuXHRcdHJlY29yZF90YWcsXG5cdFx0QXJyYXkubWFwIChcblx0XHQgIGZ1biBhIC0+XG5cdFx0ICAgIGBSZWNvcmQgKFxuXHRcdCAgICAgIEFycmF5Lm1hcGkgKFxuXHRcdFx0ZnVuIGkgeCAtPlxuXHRcdFx0ICBsZXQgcywgaCwgXyA9IGhlYWRlci4oaSkgaW5cblx0XHRcdCAgKHMsIGgsIHgpXG5cdFx0ICAgICAgKSBhXG5cdFx0ICAgIClcblx0XHQpIGFhXG5cdCAgICAgIClcblx0ICAgICkgaW5cblx0ICBmb3JtYXQgc2hhcmVkIHJlY29yZF9hcnJheVxuXG4gICAgICB8IGBTaGFyZWQgeCAtPlxuICAgICAgICAgIGxldCB0YmwsIHAgPSBzaGFyZWQgaW5cbiAgICAgICAgICBpbmNyIHA7XG4gICAgICAgICAgbGV0IHBvcyA9ICFwIGluXG4gICAgICAgICAgbGV0IG9mZnNldCA9IEJpX3NoYXJlLldyLnB1dCB0YmwgKHgsIEJpX3NoYXJlLmR1bW15X3R5cGVfaWQpIHBvcyBpblxuICAgICAgICAgIGlmIG9mZnNldCA9IDAgdGhlblxuICAgICAgICAgICAgTGFiZWwgKChBdG9tIChzcHJpbnRmIFwic2hhcmVkJWkgLT5cIiBwb3MsIGF0b20pLCBsYWJlbCksXG4gICAgICAgICAgICAgICAgICAgZm9ybWF0IHNoYXJlZCB4KVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIEF0b20gKHNwcmludGYgXCJzaGFyZWQlaVwiIChwb3MgLSBvZmZzZXQpLCBhdG9tKVxuXG4gIGFuZCBmb3JtYXRfZmllbGQgc2hhcmVkIChvLCBoLCB4KSA9XG4gICAgbGV0IHMgPVxuICAgICAgbWF0Y2ggbyB3aXRoXG5cdCAgTm9uZSAtPiBzcHJpbnRmIFwiIyUwOGx4XCIgKEludDMyLm9mX2ludCBoKVxuXHR8IFNvbWUgcyAtPiBzcHJpbnRmIFwiJVNcIiBzXG4gICAgaW5cbiAgICBMYWJlbCAoKEF0b20gKHNwcmludGYgXCIlczpcIiBzLCBhdG9tKSwgbGFiZWwpLCBmb3JtYXQgc2hhcmVkIHgpXG5lbmRcblxubGV0IGluaXQgKCkgPSAoQmlfc2hhcmUuV3IuY3JlYXRlIDUxMiwgcmVmIDApXG5cbmxldCB2aWV3X29mX3RyZWUgdCA9XG4gIEVhc3lfZm9ybWF0LlByZXR0eS50b19zdHJpbmcgKFBwLmZvcm1hdCAoaW5pdCAoKSkgdClcblxubGV0IHByaW50X3ZpZXdfb2ZfdHJlZSB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX3N0ZG91dCAoUHAuZm9ybWF0IChpbml0ICgpKSB0KVxuXG5sZXQgb3V0cHV0X3ZpZXdfb2ZfdHJlZSBvYyB0ID1cbiAgRWFzeV9mb3JtYXQuUHJldHR5LnRvX2NoYW5uZWwgb2MgKFBwLmZvcm1hdCAoaW5pdCAoKSkgdClcblxubGV0IHZpZXcgP3VuaGFzaCBzID1cbiAgdmlld19vZl90cmVlICh0cmVlX29mX3N0cmluZyA/dW5oYXNoIHMpXG5cbmxldCBwcmludF92aWV3ID91bmhhc2ggcyA9XG4gIHByaW50X3ZpZXdfb2ZfdHJlZSAodHJlZV9vZl9zdHJpbmcgP3VuaGFzaCBzKVxuXG5sZXQgb3V0cHV0X3ZpZXcgP3VuaGFzaCBvYyBzID1cbiAgb3V0cHV0X3ZpZXdfb2ZfdHJlZSBvYyAodHJlZV9vZl9zdHJpbmcgP3VuaGFzaCBzKVxuIiwib3BlbiBQcmludGZcblxuKCpcbmxldCBzcGxpdCBzID0gU3RyLnNwbGl0IChTdHIucmVnZXhwIFwiLFwiKSBzXG4qKVxuXG5sZXQgc3BsaXQgcyA9XG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgbGV0IHN0b3AgPSByZWYgKFN0cmluZy5sZW5ndGggcykgaW5cbiAgZm9yIGkgPSAhc3RvcCAtIDEgZG93bnRvIDAgZG9cbiAgICBpZiBzLltpXSA9ICcsJyB0aGVuIChcbiAgICAgIGxldCBzdGFydCA9IGkgKyAxIGluXG4gICAgICBhY2MgOj0gU3RyaW5nLnN1YiBzIHN0YXJ0ICghc3RvcCAtIHN0YXJ0KSA6OiAhYWNjO1xuICAgICAgc3RvcCA6PSBpXG4gICAgKVxuICBkb25lO1xuICBTdHJpbmcuc3ViIHMgMCAhc3RvcCA6OiAhYWNjXG5cblxubGV0IGxvYWRfbGluZXMgYWNjdSBzID1cbiAgbGV0IGljID0gb3Blbl9pbiBzIGluXG4gIGxldCBsID0gcmVmIGFjY3UgaW5cbiAgKHRyeVxuICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgbCA6PSBpbnB1dF9saW5lIGljIDo6IExpc3QucmV2ICFsXG4gICAgIGRvbmVcbiAgIHdpdGggRW5kX29mX2ZpbGUgLT5cbiAgICAgY2xvc2VfaW4gaWNcbiAgKTtcbiAgIWxcblxubGV0IGxvYWQgaWMgPVxuICBsZXQgYnVmID0gQnVmZmVyLmNyZWF0ZSAxMDAwIGluXG4gIHRyeVxuICAgIHdoaWxlIHRydWUgZG9cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBidWYgKGlucHV0X2NoYXIgaWMpO1xuICAgIGRvbmU7XG4gICAgYXNzZXJ0IGZhbHNlXG4gIHdpdGggRW5kX29mX2ZpbGUgLT5cbiAgICBCdWZmZXIuY29udGVudHMgYnVmXG5cbmxldCAoIC8vICkgPSBGaWxlbmFtZS5jb25jYXRcblxubGV0IGRlZmF1bHRfZGljdF9wYXRoICgpID1cbiAgdHJ5XG4gICAgbWF0Y2ggU3lzLm9zX3R5cGUgd2l0aFxuICAgICAgICBcIlVuaXhcIiAtPiBTb21lIChTeXMuZ2V0ZW52IFwiSE9NRVwiIC8vIFwiLmJkdW1wLWRpY3RcIilcbiAgICAgIHwgXCJXaW4zMlwiIC0+IFNvbWUgKFN5cy5nZXRlbnYgXCJIT01FUEFUSFwiIC8vIFwiX2JkdW1wLWRpY3RcIilcbiAgICAgIHwgXCJDeWd3aW5cIiAtPiBTb21lIChTeXMuZ2V0ZW52IFwiSE9NRVwiIC8vIFwiLmJkdW1wLWRpY3RcIilcbiAgICAgIHwgXyAtPiBOb25lXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgTm9uZVxuXG5sZXQgbG9hZF9kaWN0aW9uYXJ5IGRpY19maWxlIGFjY3UgPVxuICBtYXRjaCBkaWNfZmlsZSB3aXRoXG4gICAgICBOb25lIC0+IGFjY3VcbiAgICB8IFNvbWUgZm4gLT5cbiAgICAgICAgaWYgU3lzLmZpbGVfZXhpc3RzIGZuIHRoZW5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIGxvYWRfbGluZXMgYWNjdSBmblxuICAgICAgICAgIHdpdGggZSAtPlxuICAgICAgICAgICAgZmFpbHdpdGggKHNwcmludGYgXCJDYW5ub3QgbG9hZCBkaWN0aW9uYXJ5IGZyb20gJVM6ICVzXFxuJSFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZm4gKFByaW50ZXhjLnRvX3N0cmluZyBlKSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjY3VcblxubGV0IHdyaXRlX3VuaXEgb2MgYSA9XG4gIGlmIEFycmF5Lmxlbmd0aCBhID4gMCB0aGVuIChcbiAgICBmcHJpbnRmIG9jIFwiJXNcXG5cIiBhLigwKTtcbiAgICBpZ25vcmUgKFxuICAgICAgQXJyYXkuZm9sZF9sZWZ0IChcbiAgICAgICAgZnVuIGxhc3QgeCAtPlxuICAgICAgICAgIGlmIGxhc3QgPD4geCB0aGVuXG4gICAgICAgICAgICBmcHJpbnRmIG9jIFwiJXNcXG5cIiB4O1xuICAgICAgICAgIHhcbiAgICAgICkgYS4oMCkgYVxuICAgIClcbiAgKVxuXG5sZXQgc2F2ZV9kaWN0aW9uYXJ5IGRpY19maWxlIGwgPVxuICBtYXRjaCBkaWNfZmlsZSB3aXRoXG4gICAgICBOb25lIC0+ICgpXG4gICAgfCBTb21lIGZuIC0+XG4gICAgICAgIGxldCBhID0gQXJyYXkub2ZfbGlzdCBsIGluXG4gICAgICAgIEFycmF5LnNvcnQgU3RyaW5nLmNvbXBhcmUgYTtcbiAgICAgICAgbGV0IG9jID0gb3Blbl9vdXQgZm4gaW5cbiAgICAgICAgbGV0IGZpbmFsbHkgKCkgPSBjbG9zZV9vdXRfbm9lcnIgb2MgaW5cbiAgICAgICAgdHJ5XG4gICAgICAgICAgd3JpdGVfdW5pcSBvYyBhO1xuICAgICAgICAgIGZpbmFsbHkgKClcbiAgICAgICAgd2l0aCBlIC0+XG4gICAgICAgICAgZmluYWxseSAoKTtcbiAgICAgICAgICByYWlzZSBlXG4iLCIjIDEgXCJjb21tb24ubWxcIlxubGV0IHZlcnNpb24gPSBcIjIuMS4wXCJcblxuZXhjZXB0aW9uIEpzb25fZXJyb3Igb2Ygc3RyaW5nXG5cbmxldCBqc29uX2Vycm9yIHMgPSByYWlzZSAoSnNvbl9lcnJvciBzKVxuXG5leGNlcHRpb24gRW5kX29mX2FycmF5XG5leGNlcHRpb24gRW5kX29mX29iamVjdFxuZXhjZXB0aW9uIEVuZF9vZl90dXBsZVxuZXhjZXB0aW9uIEVuZF9vZl9pbnB1dFxuXG50eXBlIGluX3BhcmFtID0geyBzdHJpbmdfYnVmIDogQnVmZmVyLnQgfVxuXG5sZXQgY3JlYXRlX2luX3BhcmFtID8obGVuID0gMjU2KSAoKSA9IHsgc3RyaW5nX2J1ZiA9IEJ1ZmZlci5jcmVhdGUgbGVuIH1cblxubGV0IHV0Zjhfb2ZfY29kZSBidWYgeCA9XG4gIGxldCBhZGQgPSBCdWZmZXIuYWRkX2NoYXIgaW5cblxuICAoKiBTdHJhaWdodCA8PSBkb2Vzbid0IHdvcmsgd2l0aCBzaWduZWQgMzEtYml0IGludHMgKilcbiAgbGV0IG1heGJpdHMgbiB4ID0geCBsc3IgbiA9IDAgaW5cblxuICBpZiBtYXhiaXRzIDcgeCB0aGVuICgqIDcgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociB4KVxuICBlbHNlIGlmIG1heGJpdHMgMTEgeCB0aGVuIChcbiAgICAoKiA1ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDAxMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMTYgeCB0aGVuIChcbiAgICAoKiA0ICsgNiArIDYgKilcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMTEwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMDAxMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjEgeCB0aGVuIChcbiAgICAoKiAzICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDAwMDExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIGlmIG1heGJpdHMgMjYgeCB0aGVuIChcbiAgICAoKiAyICsgNiArIDYgKyA2ICsgNiAqKVxuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjExMTExMDAwIGxvciAoKHggbHNyIDI0KSBsYW5kIDBiMDAwMDAwMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTgpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAxMikgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDYpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKHggbGFuZCAwYjAwMTExMTExKSkpKVxuICBlbHNlIChcbiAgICBhc3NlcnQgKG1heGJpdHMgMzEgeCk7XG4gICAgKCogMSArIDYgKyA2ICsgNiArIDYgKyA2ICopXG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTExMTExMDAgbG9yICgoeCBsc3IgMzApIGxhbmQgMGIwMDAwMDAwMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciAyNCkgbGFuZCAwYjAwMTExMTExKSkpO1xuICAgIGFkZCBidWYgKENoYXIuY2hyICgwYjEwMDAwMDAwIGxvciAoKHggbHNyIDE4KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICgoeCBsc3IgMTIpIGxhbmQgMGIwMDExMTExMSkpKTtcbiAgICBhZGQgYnVmIChDaGFyLmNociAoMGIxMDAwMDAwMCBsb3IgKCh4IGxzciA2KSBsYW5kIDBiMDAxMTExMTEpKSk7XG4gICAgYWRkIGJ1ZiAoQ2hhci5jaHIgKDBiMTAwMDAwMDAgbG9yICh4IGxhbmQgMGIwMDExMTExMSkpKSlcblxubGV0IGNvZGVfb2Zfc3Vycm9nYXRlX3BhaXIgaSBqID1cbiAgbGV0IGhpZ2gxMCA9IGkgLSAweEQ4MDAgaW5cbiAgbGV0IGxvdzEwID0gaiAtIDB4REMwMCBpblxuICAweDEwMDAwICsgKChoaWdoMTAgbHNsIDEwKSBsb3IgbG93MTApXG5cbmxldCB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIGJ1ZiBpIGogPVxuICB1dGY4X29mX2NvZGUgYnVmIChjb2RlX29mX3N1cnJvZ2F0ZV9wYWlyIGkgailcblxudHlwZSBsZXhlcl9zdGF0ZSA9IHtcbiAgYnVmIDogQnVmZmVyLnQ7ICgqIEJ1ZmZlciB1c2VkIHRvIGFjY3VtdWxhdGUgc3Vic3RyaW5ncyAqKVxuICBtdXRhYmxlIGxudW0gOiBpbnQ7ICgqIEN1cnJlbnQgbGluZSBudW1iZXIgKHN0YXJ0aW5nIGZyb20gMSkgKilcbiAgbXV0YWJsZSBib2wgOiBpbnQ7XG4gICAgICAoKiBBYnNvbHV0ZSBwb3NpdGlvbiBvZiB0aGUgZmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBjdXJyZW50IGxpbmVcbiAgICAgICAgIChzdGFydGluZyBmcm9tIDApICopXG4gIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uOyAoKiBOYW1lIGRlc2NyaWJpbmcgdGhlIGlucHV0IGZpbGUgKilcbn1cblxubW9kdWxlIExleGVyX3N0YXRlID0gc3RydWN0XG4gIHR5cGUgdCA9IGxleGVyX3N0YXRlID0ge1xuICAgIGJ1ZiA6IEJ1ZmZlci50O1xuICAgIG11dGFibGUgbG51bSA6IGludDtcbiAgICBtdXRhYmxlIGJvbCA6IGludDtcbiAgICBtdXRhYmxlIGZuYW1lIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuZW5kXG5cbmxldCBpbml0X2xleGVyID9idWYgP2ZuYW1lID8obG51bSA9IDEpICgpID1cbiAgbGV0IGJ1ZiA9IG1hdGNoIGJ1ZiB3aXRoIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSAyNTYgfCBTb21lIGJ1ZiAtPiBidWYgaW5cbiAgeyBidWY7IGxudW07IGJvbCA9IDA7IGZuYW1lIH1cblxuIyAxIFwidHlwZS5tbFwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgXG4jIDggXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgXG4jIDExIFwidHlwZS5tbFwiXG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIFxuIyAxNCBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgXG4jIDE3IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDIwIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIFxuIyAyMyBcInR5cGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBvZiBzdHJpbmdcbiAgICBcbiMgMjUgXCJ0eXBlLm1sXCJcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXG4jIDI4IFwidHlwZS5tbFwiXG4gICAgfCBgVHVwbGUgb2YgdCBsaXN0XG4gICAgXG4jIDMxIFwidHlwZS5tbFwiXG4gICAgfCBgVmFyaWFudCBvZiAoc3RyaW5nICogdCBvcHRpb24pXG4gICAgXG4jIDMzIFwidHlwZS5tbFwiXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG4jIDEgXCJ3cml0ZS5tbFwiXG4oKiBpbmNsdWRlZDogdHlwZS5tbCAqKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgdGVzdF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnNldCBzIGkgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIGpzb25fc3RyaW5nX29mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxuXG5sZXQgbWF4X2RpZ2l0cyA9XG4gIG1heFxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1heF9pbnQpKVxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1pbl9pbnQpKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBvcGVuIFByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB0ZXN0X2Zsb2F0ICgpID1cbiAgbGV0IGwgPSBbIDAuOyAxLjsgLTEuIF0gaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IDIuICouIHggKy4gMS4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggLy4gc3FydCAyLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiBzcXJ0IDMuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIGNvcyBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIDEuMjNlNTApIGwgaW5cbiAgbGV0IGwgPSBsIEAgWyBpbmZpbml0eTsgbmVnX2luZmluaXR5IF0gaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHMgPSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeCBpblxuICAgICAgbGV0IHkgPSBmbG9hdF9vZl9zdHJpbmcgcyBpblxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVnICVnICVTICVCXFxuXCIgeCB5IHMgKHggPSB5KVxuICApXG4gICAgbFxuXG4oKlxubGV0ICgpID0gdGVzdF9mbG9hdCAoKVxuKilcblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMjY0IFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDI2NyBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3MCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICBcbiMgMjczIFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzYgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjc5IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMjgxIFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfYXNzb2Mgb2IgbFxuICAgIHwgYExpc3QgbCAtPiB3cml0ZV9saXN0IG9iIGxcbiAgICBcbiMgMjg0IFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfdHVwbGUgb2IgbFxuICAgIFxuIyAyODcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfdmFyaWFudCBvYiBzIG9cblxuIyAyOTAgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9saXN0IG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuIyAzMDYgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdHVwbGUgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKCc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcpJ1xuXG4jIDMxMyBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV92YXJpYW50IG9iIHMgbyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPCc7XG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICAobWF0Y2ggbyB3aXRoXG4gICAgICAgTm9uZSAtPiAoKVxuICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICAgICAgIHdyaXRlX2pzb24gb2IgeFxuICApO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJz4nXG5cbiMgMzI1IFwid3JpdGUubWxcIlxubGV0IHdyaXRlX3QgPSB3cml0ZV9qc29uXG5cbmxldCByZWMgd3JpdGVfc3RkX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMzMyIFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDMzNSBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDMzOCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX3N0ZF9mbG9hdCBvYiBmXG4gICAgXG4jIDM0MSBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ0IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0NyBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0OSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICBcbiMgMzUyIFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICBcbiMgMzU1IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG4jIDM1OCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDM3OSBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbiMgMzkxIFwid3JpdGUubWxcIlxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg1IFwid3JpdGUubWxcIlxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4OSBcIndyaXRlLm1sXCJcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICBcbiMgNDk1IFwid3JpdGUubWxcIlxuICB8IHggLT4geFxuIyAxIFwibW9ub21vcnBoaWMubWxcIlxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAxNSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyMSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMjcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEZsb2F0bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgRmxvYXRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDMzIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmcgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmcgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDM5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBTdHJpbmdsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBTdHJpbmdsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDQ0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBBc3NvYyB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBBc3NvYyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIChrZXksIHZhbHVlKSAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIga2V5O1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgICAgICAgIHBwIGZtdCB2YWx1ZTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICB8IGBMaXN0IHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYExpc3QgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCB4IC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgcHAgZm10IHg7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDcxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBUdXBsZSB0dXAgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVHVwbGUgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCBlIC0+XG4gICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICAgcHAgZm10IGU7XG4gICAgICAgICAgIHRydWUpIGZhbHNlIHR1cCk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgODQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFZhcmlhbnQgKG5hbWUsIHZhbHVlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBWYXJpYW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBuYW1lO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixAIFwiO1xuICAgIChtYXRjaCB2YWx1ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJOb25lXCJcbiAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKFNvbWUgXCI7XG4gICAgICAgIHBwIGZtdCB4O1xuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIilcIik7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcblxuIyA5OSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCBzaG93IHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIHBwIHhcblxubGV0IHJlYyBlcXVhbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBgTnVsbCwgYE51bGwgLT4gdHJ1ZVxuICB8IGBCb29sIGEsIGBCb29sIGIgLT4gYSA9IGJcbiAgXG4jIDEwNyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IGEsIGBJbnQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTAgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgSW50bGl0IGEsIGBJbnRsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTMgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgRmxvYXQgYSwgYEZsb2F0IGIgLT4gYSA9IGJcbiAgICBcbiMgMTE2IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0bGl0IGEsIGBGbG9hdGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgXG4jIDEyMiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgYSwgYFN0cmluZ2xpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzcgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVHVwbGUgeHMsIGBUdXBsZSB5c1xuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE0NiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSksIGBWYXJpYW50IChuYW1lJywgdmFsdWUnKSAtPlxuICAgICAgKG1hdGNoIG5hbWUgPSBuYW1lJyB3aXRoXG4gICAgICB8IGZhbHNlIC0+IGZhbHNlXG4gICAgICB8IHRydWUgLT5cbiAgICAgICAgbWF0Y2ggdmFsdWUsIHZhbHVlJyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSB4LCBTb21lIHkgLT4gZXF1YWwgeCB5XG4gICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICBcbiMgMTU1IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgXyAtPiBmYWxzZVxuIyAxNCBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4jIDEgXCJwcmV0dHkubWxcIlxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIFxuIyA3OCBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIFxuIyA4MSBcInByZXR0eS5tbFwiXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA4OSBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIFxuIyA5MiBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA5NSBcInByZXR0eS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDk4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDEwMCBcInByZXR0eS5tbFwiXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgXG4jIDExOSBcInByZXR0eS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBsKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaWYgbCA9IFtdIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiKClcIlxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxob3YyPlwiO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiKEAsJWFAOzwwIC0yPilcIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgICAgICAgKVxuICAgIFxuIyAxMzIgXCJwcmV0dHkubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIE5vbmUpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDEzNSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDEzOSBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgcmVwcmVzZW50YXRpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjwlcz5cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG5cbiAgICB8IGBWYXJpYW50IChzLCBTb21lIHgpIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgXG4jIDE0NiBcInByZXR0eS5tbFwiXG4gICAgICAgICAgbGV0IHJlcHJlc2VudGF0aW9uID0gYFN0cmluZyBzIGluXG4gICAgICAgICAgXG4jIDE1MCBcInByZXR0eS5tbFwiXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IFsgcmVwcmVzZW50YXRpb247IHggXSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGxldCBvcCA9IGpzb25fc3RyaW5nX29mX3N0cmluZyBzIGluXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPEBbPGh2Mj4lczogJWFAXT5cIiBvcCAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbiMgMTU2IFwicHJldHR5Lm1sXCJcbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG4jIDE3IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEgXCJ3cml0ZTIubWxcIlxubGV0IHByZXR0eV9wcmludCA/c3RkIG91dCB4ID0gUHJldHR5LnBwID9zdGQgb3V0IHhcbmxldCBwcmV0dHlfdG9fc3RyaW5nID9zdGQgeCA9IFByZXR0eS50b19zdHJpbmcgP3N0ZCB4XG5sZXQgcHJldHR5X3RvX2NoYW5uZWwgP3N0ZCBvYyB4ID0gUHJldHR5LnRvX2NoYW5uZWwgP3N0ZCBvYyB4XG5cbiMgMjggXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgQmFzaWMgPVxuc3RydWN0XG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgOCBcInR5cGUubWxcIlxuICAgIHwgYEludCBvZiBpbnRcbiAgICBcbiMgMTQgXCJ0eXBlLm1sXCJcbiAgICB8IGBGbG9hdCBvZiBmbG9hdFxuICAgIFxuIyAyMCBcInR5cGUubWxcIlxuICAgIHwgYFN0cmluZyBvZiBzdHJpbmdcbiAgICBcbiMgMjUgXCJ0eXBlLm1sXCJcbiAgICB8IGBBc3NvYyBvZiAoc3RyaW5nICogdCkgbGlzdFxuICAgIHwgYExpc3Qgb2YgdCBsaXN0XG4gICAgXG4jIDMzIFwidHlwZS5tbFwiXG4gICAgXVxuKCoqXG5BbGwgcG9zc2libGUgY2FzZXMgZGVmaW5lZCBpbiBZb2pzb246XG4tIGBOdWxsOiBKU09OIG51bGxcbi0gYEJvb2wgb2YgYm9vbDogSlNPTiBib29sZWFuXG4tIGBJbnQgb2YgaW50OiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQuXG4tIGBJbnRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciB3aXRob3V0IGRlY2ltYWwgcG9pbnQgb3IgZXhwb25lbnQsXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBGbG9hdCBvZiBmbG9hdDogSlNPTiBudW1iZXIsIEluZmluaXR5LCAtSW5maW5pdHkgb3IgTmFOLlxuLSBgRmxvYXRsaXQgb2Ygc3RyaW5nOiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4sXG5cdCAgICBwcmVzZXJ2ZWQgYXMgYSBzdHJpbmcuXG4tIGBTdHJpbmcgb2Ygc3RyaW5nOiBKU09OIHN0cmluZy4gQnl0ZXMgaW4gdGhlIHJhbmdlIDEyOC0yNTUgYXJlIHByZXNlcnZlZFxuXHQgICAgYXMtaXMgd2l0aG91dCBlbmNvZGluZyB2YWxpZGF0aW9uIGZvciBib3RoIHJlYWRpbmdcblx0ICAgIGFuZCB3cml0aW5nLlxuLSBgU3RyaW5nbGl0IG9mIHN0cmluZzogSlNPTiBzdHJpbmcgbGl0ZXJhbCBpbmNsdWRpbmcgdGhlIGRvdWJsZSBxdW90ZXMuXG4tIGBBc3NvYyBvZiAoc3RyaW5nICoganNvbikgbGlzdDogSlNPTiBvYmplY3QuXG4tIGBMaXN0IG9mIGpzb24gbGlzdDogSlNPTiBhcnJheS5cbi0gYFR1cGxlIG9mIGpzb24gbGlzdDogVHVwbGUgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFsoXCJhYmNcIiwgMTIzKV0uXG4tIGBWYXJpYW50IG9mIChzdHJpbmcgKiBqc29uIG9wdGlvbik6IFZhcmlhbnQgKG5vbi1zdGFuZGFyZCBleHRlbnNpb24gb2YgSlNPTikuXG5cdCAgICBTeW50YXg6IFs8XCJGb29cIj5dIG9yIFs8XCJCYXJcIjoxMjM+XS5cbiopXG5cbigqXG4gIE5vdGUgdG8gYWR2ZW50dXJlcnM6IG9jYW1sZG9jIGRvZXMgbm90IHN1cHBvcnQgaW5saW5lIGNvbW1lbnRzXG4gIG9uIGVhY2ggcG9seW1vcnBoaWMgdmFyaWFudCwgYW5kIGNwcG8gZG9lc24ndCBhbGxvdyB0byBjb25jYXRlbmF0ZVxuICBjb21tZW50cywgc28gaXQgd291bGQgYmUgY29tcGxpY2F0ZWQgdG8gZG9jdW1lbnQgb25seSB0aGVcbiAgY2FzZXMgdGhhdCBhcmUgcHJlc2VydmVkIGJ5IGNwcG8gaW4gdGhlIHR5cGUgZGVmaW5pdGlvbi5cbiopXG4jIDEgXCJ3cml0ZS5tbFwiXG4oKiBpbmNsdWRlZDogdHlwZS5tbCAqKVxuXG5sZXQgaGV4IG4gPVxuICBDaGFyLmNociAoXG4gICAgaWYgbiA8IDEwIHRoZW4gbiArIDQ4XG4gICAgZWxzZSBuICsgODdcbiAgKVxuXG5sZXQgd3JpdGVfc3BlY2lhbCBzcmMgc3RhcnQgc3RvcCBvYiBzdHIgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3RyO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgd3JpdGVfY29udHJvbF9jaGFyIHNyYyBzdGFydCBzdG9wIG9iIGMgPVxuICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChzdG9wIC0gIXN0YXJ0KTtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFxcdTAwXCI7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsc3IgNCkpO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbGFuZCAweGYpKTtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IGZpbmlzaF9zdHJpbmcgc3JjIHN0YXJ0IG9iID1cbiAgdHJ5XG4gICAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpXG4gIHdpdGggZXhjIC0+XG4gICAgUHJpbnRmLmVwcmludGYgXCJzcmM9JVMgc3RhcnQ9JWkgbGVuPSVpXFxuJSFcIlxuICAgICAgc3JjICFzdGFydCAoU3RyaW5nLmxlbmd0aCBzcmMgLSAhc3RhcnQpO1xuICAgIHJhaXNlIGV4Y1xuXG5sZXQgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcyA9XG4gIGxldCBzdGFydCA9IHJlZiAwIGluXG4gIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAnXCInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXCJcIlxuICAgICAgfCAnXFxcXCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcXFwiXG4gICAgICB8ICdcXGInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGJcIlxuICAgICAgfCAnXFwwMTInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXGZcIlxuICAgICAgfCAnXFxuJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxuXCJcbiAgICAgIHwgJ1xccicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcclwiXG4gICAgICB8ICdcXHQnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHRcIlxuICAgICAgfCAnXFx4MDAnLi4nXFx4MUYnXG4gICAgICB8ICdcXHg3RicgYXMgYyAtPiB3cml0ZV9jb250cm9sX2NoYXIgcyBzdGFydCBpIG9iIGNcbiAgICAgIHwgXyAtPiAoKVxuICBkb25lO1xuICBmaW5pc2hfc3RyaW5nIHMgc3RhcnQgb2JcblxubGV0IHdyaXRlX3N0cmluZyBvYiBzID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX3N0cmluZ19ib2R5IG9iIHM7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMTAgaW5cbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgdGVzdF9zdHJpbmcgKCkgPVxuICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAyNTYgaW5cbiAgZm9yIGkgPSAwIHRvIDI1NSBkb1xuICAgIEJ5dGVzLnNldCBzIGkgKENoYXIuY2hyIGkpXG4gIGRvbmU7XG4gIGpzb25fc3RyaW5nX29mX3N0cmluZyAoQnl0ZXMudG9fc3RyaW5nIHMpXG5cblxubGV0IHdyaXRlX251bGwgb2IgKCkgPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIm51bGxcIlxuXG5sZXQgd3JpdGVfYm9vbCBvYiB4ID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggdGhlbiBcInRydWVcIiBlbHNlIFwiZmFsc2VcIilcblxuXG5sZXQgbWF4X2RpZ2l0cyA9XG4gIG1heFxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1heF9pbnQpKVxuICAgIChTdHJpbmcubGVuZ3RoIChzdHJpbmdfb2ZfaW50IG1pbl9pbnQpKVxuXG5sZXQgZGVjIG4gPVxuICBDaGFyLmNociAobiArIDQ4KVxuXG5sZXQgcmVjIHdyaXRlX2RpZ2l0cyBzIHggPVxuICBpZiB4ID0gMCB0aGVuICgpXG4gIGVsc2VcbiAgICBsZXQgZCA9IHggbW9kIDEwIGluXG4gICAgd3JpdGVfZGlnaXRzIHMgKHggLyAxMCk7XG4gICAgQnVmZmVyLmFkZF9jaGFyIHMgKGRlYyAoYWJzIGQpKVxuXG5sZXQgd3JpdGVfaW50IG9iIHggPVxuICBpZiB4ID4gMCB0aGVuXG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgZWxzZSBpZiB4IDwgMCB0aGVuIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJy0nO1xuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIClcbiAgZWxzZVxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnMCdcblxuXG5sZXQganNvbl9zdHJpbmdfb2ZfaW50IGkgPVxuICBzdHJpbmdfb2ZfaW50IGlcblxuXG4oKlxuICBFbnN1cmUgdGhhdCB0aGUgZmxvYXQgaXMgbm90IHByaW50ZWQgYXMgYW4gaW50LlxuICBUaGlzIGlzIG5vdCByZXF1aXJlZCBieSBKU09OLCBidXQgdXNlZnVsIGluIG9yZGVyIHRvIGd1YXJhbnRlZVxuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCBmbG9hdF9uZWVkc19wZXJpb2QgcyA9XG4gIHRyeVxuICAgIGZvciBpID0gMCB0byBTdHJpbmcubGVuZ3RoIHMgLSAxIGRvXG4gICAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICAgJzAnLi4nOScgfCAnLScgLT4gKClcbiAgICAgICAgfCBfIC0+IHJhaXNlIEV4aXRcbiAgICBkb25lO1xuICAgIHRydWVcbiAgd2l0aCBFeGl0IC0+XG4gICAgZmFsc2VcblxuKCpcbiAgR3VhcmFudGVlcyB0aGF0IGEgc3VmZmljaWVudCBudW1iZXIgb2YgZGlnaXRzIGFyZSBwcmludGVkIGluIG9yZGVyIHRvIGFsbG93XG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IHdyaXRlX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxubGV0IHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIGxldCBvcGVuIFByaW50ZiBpblxuICBsZXQgcyA9XG4gICAgbWF0Y2ggc2lnbmlmaWNhbnRfZmlndXJlcyB3aXRoXG4gICAgICAgIDEgLT4gc3ByaW50ZiBcIiUuMWdcIiB4XG4gICAgICB8IDIgLT4gc3ByaW50ZiBcIiUuMmdcIiB4XG4gICAgICB8IDMgLT4gc3ByaW50ZiBcIiUuM2dcIiB4XG4gICAgICB8IDQgLT4gc3ByaW50ZiBcIiUuNGdcIiB4XG4gICAgICB8IDUgLT4gc3ByaW50ZiBcIiUuNWdcIiB4XG4gICAgICB8IDYgLT4gc3ByaW50ZiBcIiUuNmdcIiB4XG4gICAgICB8IDcgLT4gc3ByaW50ZiBcIiUuN2dcIiB4XG4gICAgICB8IDggLT4gc3ByaW50ZiBcIiUuOGdcIiB4XG4gICAgICB8IDkgLT4gc3ByaW50ZiBcIiUuOWdcIiB4XG4gICAgICB8IDEwIC0+IHNwcmludGYgXCIlLjEwZ1wiIHhcbiAgICAgIHwgMTEgLT4gc3ByaW50ZiBcIiUuMTFnXCIgeFxuICAgICAgfCAxMiAtPiBzcHJpbnRmIFwiJS4xMmdcIiB4XG4gICAgICB8IDEzIC0+IHNwcmludGYgXCIlLjEzZ1wiIHhcbiAgICAgIHwgMTQgLT4gc3ByaW50ZiBcIiUuMTRnXCIgeFxuICAgICAgfCAxNSAtPiBzcHJpbnRmIFwiJS4xNWdcIiB4XG4gICAgICB8IDE2IC0+IHNwcmludGYgXCIlLjE2Z1wiIHhcbiAgICAgIHwgXyAtPiBzcHJpbnRmIFwiJS4xN2dcIiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IGpzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB3cml0ZV9zdGRfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfc3RkX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfc3RkX2Zsb2F0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5cbmxldCB0ZXN0X2Zsb2F0ICgpID1cbiAgbGV0IGwgPSBbIDAuOyAxLjsgLTEuIF0gaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IDIuICouIHggKy4gMS4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggLy4gc3FydCAyLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiBzcXJ0IDMuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIGNvcyBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIDEuMjNlNTApIGwgaW5cbiAgbGV0IGwgPSBsIEAgWyBpbmZpbml0eTsgbmVnX2luZmluaXR5IF0gaW5cbiAgTGlzdC5pdGVyIChcbiAgICBmdW4geCAtPlxuICAgICAgbGV0IHMgPSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeCBpblxuICAgICAgbGV0IHkgPSBmbG9hdF9vZl9zdHJpbmcgcyBpblxuICAgICAgUHJpbnRmLnByaW50ZiBcIiVnICVnICVTICVCXFxuXCIgeCB5IHMgKHggPSB5KVxuICApXG4gICAgbFxuXG4oKlxubGV0ICgpID0gdGVzdF9mbG9hdCAoKVxuKilcblxubGV0IHdyaXRlX2ludGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfZmxvYXRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX3N0cmluZ2xpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5cbmxldCByZWMgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX3NlcCB4O1xuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgaXRlcjIgZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGZfc2VwIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgcmVjIHdyaXRlX2pzb24gb2IgKHggOiB0KSA9XG4gIG1hdGNoIHggd2l0aFxuICAgICAgYE51bGwgLT4gd3JpdGVfbnVsbCBvYiAoKVxuICAgIHwgYEJvb2wgYiAtPiB3cml0ZV9ib29sIG9iIGJcbiAgICBcbiMgMjY0IFwid3JpdGUubWxcIlxuICAgIHwgYEludCBpIC0+IHdyaXRlX2ludCBvYiBpXG4gICAgXG4jIDI3MCBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdCBmIC0+IHdyaXRlX2Zsb2F0IG9iIGZcbiAgICBcbiMgMjc2IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDI4MSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG5cbiMgMjkwIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuXG4jIDMyNSBcIndyaXRlLm1sXCJcbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDMzMiBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAzMzggXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9zdGRfZmxvYXQgb2IgZlxuICAgIFxuIyAzNDQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuXG4jIDM1OCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDM1IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDc4IFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnQgeCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2ZfaW50IHgpXG4gICAgXG4jIDgxIFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdCB4IC0+XG4gICAgICAgIGxldCBzID1cbiAgICAgICAgICBpZiBzdGQgdGhlbiBzdGRfanNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICAgIGVsc2UganNvbl9zdHJpbmdfb2ZfZmxvYXQgeFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDg5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMpXG4gICAgXG4jIDEwMCBcInByZXR0eS5tbFwiXG4gICAgfCBgTGlzdCBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIltdXCJcbiAgICB8IGBMaXN0IGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgaWYgaXNfYXRvbV9saXN0IGwgdGhlblxuICAgICAgICAoKiB1c2UgbGluZSB3cmFwcGluZyBsaWtlIHdlIHdvdWxkIGRvIGZvciBhIHBhcmFncmFwaCBvZiB0ZXh0ICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aG92PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbFxuICAgICAgZWxzZVxuICAgICAgICAoKiBwcmludCB0aGUgZWxlbWVudHMgaG9yaXpvbnRhbGx5IGlmIHRoZXkgZml0IG9uIHRoZSBsaW5lLFxuICAgICAgICAgICBvdGhlcndpc2UgcHJpbnQgdGhlbSBpbiBhIGNvbHVtbiAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGh2PiVhQF1AOzwxIC0yPl1cIlxuICAgICAgICAgIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICB8IGBBc3NvYyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcInt9XCJcbiAgICB8IGBBc3NvYyBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIntAOzwxIDA+JWFAOzwxIC0yPn1cIiAocHBfbGlzdCBcIixcIiAoZm9ybWF0X2ZpZWxkIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG5cbiMgMTU2IFwicHJldHR5Lm1sXCJcbmFuZCBmb3JtYXRfZmllbGQgc3RkIG91dCAobmFtZSwgeCkgPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JXM6ICVhQF1cIiAoanNvbl9zdHJpbmdfb2Zfc3RyaW5nIG5hbWUpIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxubGV0IHBwID8oc3RkID0gZmFsc2UpIG91dCB4ID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVhQF1cIiAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSAoeCA6PiB0KVxuXG5sZXQgdG9fc3RyaW5nID9zdGQgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKHBwID9zdGQpIHhcblxubGV0IHRvX2NoYW5uZWwgP3N0ZCBvYyB4ID1cbiAgbGV0IGZtdCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgb2MgaW5cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiJWFAP1wiIChwcCA/c3RkKSB4XG4jIDM4IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgcmVjIHBwIGZtdCA9XG4gIGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCJgTnVsbFwiXG4gIHwgYEJvb2wgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBCb29sIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUJcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA5IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlZFwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDIxIFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJUZcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA0NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbiMgOTkgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gIFxuIyAxMDcgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEludCBhLCBgSW50IGIgLT4gYSA9IGJcbiAgICBcbiMgMTEzIFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYEZsb2F0IGEsIGBGbG9hdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBTdHJpbmcgYSwgYFN0cmluZyBiIC0+IGEgPSBiXG4gICAgXG4jIDEyNCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBBc3NvYyB4cywgYEFzc29jIHlzIC0+XG4gICAgICBsZXQgY29tcGFyZV9rZXlzID0gZnVuIChrZXksIF8pIChrZXknLCBfKSAtPiBTdHJpbmcuY29tcGFyZSBrZXkga2V5JyBpblxuICAgICAgbGV0IHhzID0gTGlzdC5zdGFibGVfc29ydCBjb21wYXJlX2tleXMgeHMgaW5cbiAgICAgIGxldCB5cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHlzIGluXG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiAoZnVuIChrZXksIHZhbHVlKSAoa2V5JywgdmFsdWUnKSAtPlxuICAgICAgICBtYXRjaCBrZXkgPSBrZXknIHdpdGhcbiAgICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgICB8IHRydWUgLT4gZXF1YWwgdmFsdWUgdmFsdWUnKSB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxMzkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgTGlzdCB4cywgYExpc3QgeXMgLT5cbiAgICAgIChtYXRjaCBMaXN0LmZvcl9hbGwyIGVxdWFsIHhzIHlzIHdpdGhcbiAgICAgIHwgcmVzdWx0IC0+IHJlc3VsdFxuICAgICAgfCBleGNlcHRpb24gSW52YWxpZF9hcmd1bWVudCBfIC0+XG4gICAgICAgICgqIHRoZSBsaXN0cyB3ZXJlIG9mIGRpZmZlcmVudCBsZW5ndGhzLCB0aHVzIHVuZXF1YWwgKilcbiAgICAgICAgZmFsc2UpXG4gICAgXG4jIDE1NSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IF8gLT4gZmFsc2VcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDIgXCJsaWIvcmVhZC5tbGxcIlxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IExleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBzcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIHNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBzcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIGpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IHJlYWRfanVuayA9IHJlZiAoZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSAhcmVhZF9qdW5rIGxleGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cbiAgXG4jIDExMyBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmXG5cblxuICBcbiMgMTQxIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IHNldF9maWxlX25hbWUgdiBmbmFtZSA9XG4gICAgdi5mbmFtZSA8LSBmbmFtZVxuXG4gIGxldCBuZXdsaW5lIHYgbGV4YnVmID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cbiAgdHlwZSB0dXBsZV9raW5kID0gWyBgUGFyZW50aGVzaXMgfCBgU3F1YXJlX2JyYWNrZXQgXVxuXG5cbiMgMTYxIFwibGliL3JlYWQubWxcIlxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQwXFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMTUwXFwwMDFcXDE1MVxcMDAxXFwxNTRcXDAwMVxcMTY4XFwwMDFcXFxuICAgIFxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNzJcXDAwMVxcMTczXFwwMDFcXDE4MVxcMDAxXFwxODRcXDAwMVxcMTg1XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTNcXDAwMVxcMTk1XFwwMDFcXDE5NlxcMDAxXFwxOTdcXDAwMVxcMjAwXFwwMDFcXDIwM1xcMDAxXFwyMjNcXDAwMVxcXG4gICAgXFwyMjVcXDAwMVxcMjI4XFwwMDFcXDI0OVxcMDAxXFwyNTFcXDAwMVxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXFxuICAgIFxcMDEzXFwwMDJcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDAwXFwwMDBcXDAwNVxcMDAyXFwwMDZcXDAwMlxcMDA3XFwwMDJcXDAwOFxcMDAyXFxcbiAgICBcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDAxNVxcMDAyXFwwMTZcXDAwMlxcXG4gICAgXFwwMTdcXDAwMlxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDIxXFwwMDJcXDAyMlxcMDAyXFwwMjNcXDAwMlxcMDI0XFwwMDJcXFxuICAgIFxcMDI1XFwwMDJcXDAyNlxcMDAyXFwwMjdcXDAwMlxcMDI4XFwwMDJcXDAyOVxcMDAyXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFxcbiAgICBcXDAzM1xcMDAyXFwwMDNcXDAwMlwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDNcXDAwMlxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDEyNlxcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXFxuICAgIFxcMjIxXFwwMDFcXDAwM1xcMDAyXFwyNTNcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwM1xcMDAyXFxcbiAgICBcXDI0MVxcMDAxXFwwMDNcXDAwMlxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDAwM1xcMDAyXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwM1xcMDAyXFwxOThcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwwMDFcXDAwMlxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDAwMlxcMDAyXFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwwMDRcXDAwMlxcMDA1XFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwwMDZcXDAwMlxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwwMDdcXDAwMlxcMTIyXFwwMDFcXDAwOFxcMDAyXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwwMTJcXDAwMlxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDk4XFwwMDBcXDAxNVxcMDAyXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwwMTZcXDAwMlxcXG4gICAgXFwyMjBcXDAwMVxcMDE3XFwwMDJcXDI1MVxcMDAxXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMDIxXFwwMDJcXDE5NFxcMDAxXFwwOThcXDAwMFxcMDIyXFwwMDJcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMDIzXFwwMDJcXFxuICAgIFxcMjM4XFwwMDFcXDAyNFxcMDAyXFwyNTFcXDAwMVxcMjM4XFwwMDFcXDAyNVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDAyNlxcMDAyXFwxOTdcXDAwMVxcMDI3XFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDI4XFwwMDJcXDE5NFxcMDAxXFwwMjlcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcblxuIyAxMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDM4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMTkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5hblxuICAgICAgICAgICAgICAgIFxuIyAxOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDU0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBpbmZpbml0eVxuICAgICAgICAgICAgICAgIFxuIyAyMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDY1IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICBcbiMgMjExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgIGBTdHJpbmcgKGZpbmlzaF9zdHJpbmcgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgXG4jIDIxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX3Bvc2l0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDk4IFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIGBGbG9hdCAoZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSlcbiAgICAgICAgICAgICAgICAgXG4jIDIyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBBc3NvYyAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICBgTGlzdCAoTGlzdC5yZXYgIWFjYylcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE3OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDMwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMTk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTk4IFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTIxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTkgLT5cblxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAxMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjIzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiA1OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggQnVmZmVyLmNvbnRlbnRzIHYuYnVmIClcblxuIyAxMjM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjM1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDEyNDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfc3RyaW5nIHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiA2M1xuYW5kIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBsZXQgYiA9IHYuYnVmIGluXG4gICAgICAgICAgICAgICAgICAgIGYgKEJ1ZmZlci5jb250ZW50cyBiKSAwIChCdWZmZXIubGVuZ3RoIGIpIClcblxuIyAxMjY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjY1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjc3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIDY4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgY1xuXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG4jIDEyOTQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBpblxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgYyApXG5cbiMgMTI5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcYicgKVxuXG4jIDEzMDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXDAxMicgKVxuXG4jIDEzMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXG4nIClcblxuIyAxMzEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxyJyApXG5cbiMgMTMxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcdCcgKVxuXG4jIDEzMjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxubGV0XG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBhXG5cbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMyOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbiMgMTMzNCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbiMgMTM0NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpIGluXG5cbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHggPj0gMHhEODAwICYmIHggPD0gMHhEQkZGIHRoZW5cbiAgICAgICAgICAgICBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZlxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgdXRmOF9vZl9jb2RlIHYuYnVmIHhcbiAgICAgICAgIClcblxuIyAxMzU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzU2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGVzY2FwZSBzZXF1ZW5jZVwiIHYgbGV4YnVmIClcblxuIyAxMzYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzYxIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIDgyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgYVxuXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG4jIDEzNzggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuIyAxMzgzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1xuXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG4jIDEzODggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzOTMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA1KSBpblxuXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHkgPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB5ID49IDB4REMwMCAmJiB5IDw9IDB4REZGRiB0aGVuXG4gICAgICAgICAgICAgdXRmOF9vZl9zdXJyb2dhdGVfcGFpciB2LmJ1ZiB4IHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIGxvdyBzdXJyb2dhdGUgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiXG4gICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDE0MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIk1pc3NpbmcgZXNjYXBlIHNlcXVlbmNlIHJlcHJlc2VudGluZyBsb3cgc3Vycm9nYXRlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIiB2IGxleGJ1ZiApXG5cbiMgMTQxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N1cnJvZ2F0ZV9wYWlyX3JlYyB2IHggbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDkxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgICAgICAgIGxldCBzID0gQnl0ZXMuY3JlYXRlIChsZW4rMSkgaW5cbiAgICAgICAgICAgQnl0ZXMuc2V0IHMgMCAnXCInO1xuICAgICAgICAgICBCeXRlcy5ibGl0IGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIHMgMSBsZW47XG4gICAgICAgICAgIEJ5dGVzLnRvX3N0cmluZyBzXG4gICAgICAgICApXG5cbiMgMTQzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAxNDM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDEwMlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID0gcmVhZF9qc29uIHYgbGV4YnVmIGluXG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWY7XG4gICAgICAgICAgIFNvbWUgeCApXG5cbiMgMTQ1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBOb25lIClcblxuIyAxNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgMTA3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAxNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ndCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiAxMTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbW1hIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIDExNVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMTlcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBFZGd5X2JyYWNrZXQgKVxuXG4jIDE1NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBgRG91YmxlX3F1b3RlIClcblxuIyAxNTU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTU4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYFNxdWFyZV9icmFja2V0IClcblxuIyAxNTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTYzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc8JywgJ1xcXCInIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTU2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiAxMjVcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTU4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMTU4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMTU5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9lb2YgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgMTMxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjEyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTYxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3BhY2UgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgMTMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYyOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYyOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIDE0MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnbnVsbCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGxfaWZfcG9zc2libGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiAxNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2ODIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjg4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ib29sIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgMTUyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY5OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzA1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTcwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzE1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd0cnVlJyBvciAnZmFsc2UnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzIwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTcyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiAxNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X3Bvc2l0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzQ2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50ZWdlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE3NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50ZWdlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTc2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50MzIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgMTg1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQzMi5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQzMi5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50MzIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODA2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDMyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODExIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDY0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIDE5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50NjQub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE4MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50NjQub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDY0IGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTg0NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg0OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQ2NCBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udW1iZXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIDE5OVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmFuIClcblxuIyAxODY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODcwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggaW5maW5pdHkgKVxuXG4jIDE4NzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuZWdfaW5maW5pdHkgKVxuXG4jIDE4NzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpIClcblxuIyAxODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODg1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBmbG9hdCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMuICopXG4gICAgICAgICAgICAgICAgICAgIGZsb2F0X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICBcIk5hTlwiIC0+IG5hblxuICAgICAgICAgICAgICAgICAgICAgIHwgXCJJbmZpbml0eVwiIC0+IGluZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBcIi1JbmZpbml0eVwiIC0+IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGEgbnVtYmVyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYSBudW1iZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgKVxuXG4jIDE5MDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgbnVtYmVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTEyIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIDIzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTkyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXFxcIicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIDIzN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTUzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cbmxldFxuXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgc1xuXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG4jIDE5NTggXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cblxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcyApXG5cbiMgMTk2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX2lkZW50IHYgZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIDI0MlxuYW5kIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxOTg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbWFwX2xleGVtZSBmIGxleGJ1ZiApXG5cbiMgMTk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTk5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc2VxdWVuY2UgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiAyNTFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMDYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDYzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjA2NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIwNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIDI1NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjA4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMDg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDkwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIDI1N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxMDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIxMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjExMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxMTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGUgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiAyNjJcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA2MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgNjM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDIxNTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTU2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjE2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgMjY2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTczIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIxNzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIDI2OFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIG9yICcnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjAxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDI3MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyMTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgMjc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjQ1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjUzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjYxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXAyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgMjgyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjc1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2ZpZWxkICFhY2MgZmllbGRfbmFtZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgIWFjY1xuICAgICAgICAgICAgIClcblxuIyAyMzA0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzA1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMwOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sY3VybCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiAyODZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIDI5MFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgMjkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzNjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAyMzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnfScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzNzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb2xvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiAyOTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIzOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdHVwbGUgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiAzMDFcbmFuZCBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMjQxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDI0MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIG9yICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiAzMDZcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ0MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9ycGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgMzEwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiAzMTRcbmFuZCBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDg1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDg2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdbJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcmJyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiAzMThcbmFuZCBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNTA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTA4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIDMyMlxuYW5kIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjU1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI1OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjE0IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgODE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTIgLT5cblxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA4MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjY1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNjc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjc2IFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjY4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDM3OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjY5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBzdHJpbmcgbGl0ZXJhbFwiIHYgbGV4YnVmIClcblxuIyAyNjk3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjk4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDM4OVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmIClcblxuIyAyNzE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzE3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNzIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzIyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzI3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3MzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiAzOTRcbmFuZCBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI3NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3NTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiAzOTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyNzcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzcxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd7JztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODAzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnWyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDkzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODQ2IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDk0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA5NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODczIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODg1IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjg4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI4OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcblxuIyAyOTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI5MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjkxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG5cbiMgMjkzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAyOTM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjk2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyOTY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTcxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDUwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDU1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzA1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTIzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzEyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMxMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzE0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcblxuIyAzMTY2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTY3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTcxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTcyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTc3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMzE4OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE4OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcblxuIyAzMjEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjExIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDMyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBqdW5rIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgNTEzXG5hbmQgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5sZXhlbWUgbGV4YnVmIClcblxuIyAzMjM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cblxuIyAxMDU1IFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDEwNTYgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCAoKSA9XG4gICAgcmVhZF9qdW5rIDo9IGp1bmtcblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IGluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuXG4jIDM0MDggXCJsaWIvcmVhZC5tbFwiXG4jIDQyIFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFV0aWwgPVxuc3RydWN0XG4jIDEgXCJ1dGlsLm1sXCJcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgXG4jIDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICBcbiMgMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICBcbiMgMTggXCJ1dGlsLm1sXCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIFxuIyA3MCBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIFxuIyA3MyBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IGZcbiAgXG4jIDc1IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgNzkgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgXG4jIDgyIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIFxuIyA4NCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIFxuIyA4OSBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IGZcbiAgXG4jIDkxIFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDk1IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIFxuIyA5NyBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIFxuIyAxMDIgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gaVxuICBcbiMgMTA0IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTA4IFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICBcbiMgMTEwIFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICBcbiMgMTE3IFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgXG4jIDExOSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDEyMyBcInV0aWwubWxcIlxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgXG4jIDEyNSBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgXG4jIDE3MiBcInV0aWwubWxcIlxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE3NCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxODEgXCJ1dGlsLm1sXCJcbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE4MyBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMTkwIFwidXRpbC5tbFwiXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgXG4jIDE5MyBcInV0aWwubWxcIlxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAxOTUgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgXG4jIDIwMiBcInV0aWwubWxcIlxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICBcbiMgMjA0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG4jIDQ1IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDQ5IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG5cbm1vZHVsZSBTYWZlID1cbnN0cnVjdFxuIyAxIFwidHlwZS5tbFwiXG4oKiogezMgVHlwZSBvZiB0aGUgSlNPTiB0cmVlfSAqKVxuXG50eXBlIHQgPVxuICAgIFtcbiAgICB8IGBOdWxsXG4gICAgfCBgQm9vbCBvZiBib29sXG4gICAgXG4jIDggXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnQgb2YgaW50XG4gICAgXG4jIDExIFwidHlwZS5tbFwiXG4gICAgfCBgSW50bGl0IG9mIHN0cmluZ1xuICAgIFxuIyAxNCBcInR5cGUubWxcIlxuICAgIHwgYEZsb2F0IG9mIGZsb2F0XG4gICAgXG4jIDIwIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nIG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMjggXCJ0eXBlLm1sXCJcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICBcbiMgMzEgXCJ0eXBlLm1sXCJcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcInNhZmUubWxcIlxubGV0IHJlYyB0b19iYXNpYyA6IHQgLT4gQmFzaWMudCA9IGZ1bmN0aW9uXG4gIHwgKGBOdWxsIHwgYEJvb2wgXyB8IGBJbnQgXyB8IGBGbG9hdCBfIHwgYFN0cmluZyBfKSBhcyB4IC0+IHhcbiAgfCBgSW50bGl0IHMgLT4gYFN0cmluZyBzXG4gIHwgYExpc3QgbCB8IGBUdXBsZSBsIC0+IGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHRvX2Jhc2ljIGwpKVxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBgQXNzb2MgKExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHRvX2Jhc2ljIHYpKSBsKSlcbiAgfCBgVmFyaWFudCAoaywgTm9uZSkgLT4gYFN0cmluZyBrXG4gIHwgYFZhcmlhbnQgKGssIFNvbWUgdikgLT4gYExpc3QgWyBgU3RyaW5nIGs7IHRvX2Jhc2ljIHYgXVxuIyAxIFwid3JpdGUubWxcIlxuKCogaW5jbHVkZWQ6IHR5cGUubWwgKilcblxubGV0IGhleCBuID1cbiAgQ2hhci5jaHIgKFxuICAgIGlmIG4gPCAxMCB0aGVuIG4gKyA0OFxuICAgIGVsc2UgbiArIDg3XG4gIClcblxubGV0IHdyaXRlX3NwZWNpYWwgc3JjIHN0YXJ0IHN0b3Agb2Igc3RyID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHN0cjtcbiAgc3RhcnQgOj0gc3RvcCArIDFcblxubGV0IHdyaXRlX2NvbnRyb2xfY2hhciBzcmMgc3RhcnQgc3RvcCBvYiBjID1cbiAgQnVmZmVyLmFkZF9zdWJzdHJpbmcgb2Igc3JjICFzdGFydCAoc3RvcCAtICFzdGFydCk7XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcXHUwMFwiO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgKGhleCAoQ2hhci5jb2RlIGMgbHNyIDQpKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxhbmQgMHhmKSk7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCBmaW5pc2hfc3RyaW5nIHNyYyBzdGFydCBvYiA9XG4gIHRyeVxuICAgIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KVxuICB3aXRoIGV4YyAtPlxuICAgIFByaW50Zi5lcHJpbnRmIFwic3JjPSVTIHN0YXJ0PSVpIGxlbj0laVxcbiUhXCJcbiAgICAgIHNyYyAhc3RhcnQgKFN0cmluZy5sZW5ndGggc3JjIC0gIXN0YXJ0KTtcbiAgICByYWlzZSBleGNcblxubGV0IHdyaXRlX3N0cmluZ19ib2R5IG9iIHMgPVxuICBsZXQgc3RhcnQgPSByZWYgMCBpblxuICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgJ1wiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgJ1xcXFwnIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXFxcXFxcIlxuICAgICAgfCAnXFxiJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxiXCJcbiAgICAgIHwgJ1xcMDEyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxmXCJcbiAgICAgIHwgJ1xcbicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcblwiXG4gICAgICB8ICdcXHInIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXHJcIlxuICAgICAgfCAnXFx0JyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFx0XCJcbiAgICAgIHwgJ1xceDAwJy4uJ1xceDFGJ1xuICAgICAgfCAnXFx4N0YnIGFzIGMgLT4gd3JpdGVfY29udHJvbF9jaGFyIHMgc3RhcnQgaSBvYiBjXG4gICAgICB8IF8gLT4gKClcbiAgZG9uZTtcbiAgZmluaXNoX3N0cmluZyBzIHN0YXJ0IG9iXG5cbmxldCB3cml0ZV9zdHJpbmcgb2IgcyA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9zdHJpbmdfYm9keSBvYiBzO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDEwIGluXG4gIHdyaXRlX3N0cmluZyBvYiBzO1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHRlc3Rfc3RyaW5nICgpID1cbiAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgMjU2IGluXG4gIGZvciBpID0gMCB0byAyNTUgZG9cbiAgICBCeXRlcy5zZXQgcyBpIChDaGFyLmNociBpKVxuICBkb25lO1xuICBqc29uX3N0cmluZ19vZl9zdHJpbmcgKEJ5dGVzLnRvX3N0cmluZyBzKVxuXG5cbmxldCB3cml0ZV9udWxsIG9iICgpID1cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcblxubGV0IHdyaXRlX2Jvb2wgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4IHRoZW4gXCJ0cnVlXCIgZWxzZSBcImZhbHNlXCIpXG5cblxubGV0IG1heF9kaWdpdHMgPVxuICBtYXhcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtYXhfaW50KSlcbiAgICAoU3RyaW5nLmxlbmd0aCAoc3RyaW5nX29mX2ludCBtaW5faW50KSlcblxubGV0IGRlYyBuID1cbiAgQ2hhci5jaHIgKG4gKyA0OClcblxubGV0IHJlYyB3cml0ZV9kaWdpdHMgcyB4ID1cbiAgaWYgeCA9IDAgdGhlbiAoKVxuICBlbHNlXG4gICAgbGV0IGQgPSB4IG1vZCAxMCBpblxuICAgIHdyaXRlX2RpZ2l0cyBzICh4IC8gMTApO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBzIChkZWMgKGFicyBkKSlcblxubGV0IHdyaXRlX2ludCBvYiB4ID1cbiAgaWYgeCA+IDAgdGhlblxuICAgIHdyaXRlX2RpZ2l0cyBvYiB4XG4gIGVsc2UgaWYgeCA8IDAgdGhlbiAoXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICctJztcbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICApXG4gIGVsc2VcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzAnXG5cblxubGV0IGpzb25fc3RyaW5nX29mX2ludCBpID1cbiAgc3RyaW5nX29mX2ludCBpXG5cblxuKCpcbiAgRW5zdXJlIHRoYXQgdGhlIGZsb2F0IGlzIG5vdCBwcmludGVkIGFzIGFuIGludC5cbiAgVGhpcyBpcyBub3QgcmVxdWlyZWQgYnkgSlNPTiwgYnV0IHVzZWZ1bCBpbiBvcmRlciB0byBndWFyYW50ZWVcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgZmxvYXRfbmVlZHNfcGVyaW9kIHMgPVxuICB0cnlcbiAgICBmb3IgaSA9IDAgdG8gU3RyaW5nLmxlbmd0aCBzIC0gMSBkb1xuICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICAgICcwJy4uJzknIHwgJy0nIC0+ICgpXG4gICAgICAgIHwgXyAtPiByYWlzZSBFeGl0XG4gICAgZG9uZTtcbiAgICB0cnVlXG4gIHdpdGggRXhpdCAtPlxuICAgIGZhbHNlXG5cbigqXG4gIEd1YXJhbnRlZXMgdGhhdCBhIHN1ZmZpY2llbnQgbnVtYmVyIG9mIGRpZ2l0cyBhcmUgcHJpbnRlZCBpbiBvcmRlciB0byBhbGxvd1xuICByZXZlcnNpYmlsaXR5LlxuKilcbmxldCB3cml0ZV9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIGxldCBzMSA9IFByaW50Zi5zcHJpbnRmIFwiJS4xNmdcIiB4IGluXG4gICAgICBsZXQgcyA9XG4gICAgICAgIGlmIGZsb2F0X29mX3N0cmluZyBzMSA9IHggdGhlbiBzMVxuICAgICAgICBlbHNlIFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4XG4gICAgICBpblxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgICAgIGlmIGZsb2F0X25lZWRzX3BlcmlvZCBzIHRoZW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbmxldCB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBsZXQgb3BlbiBQcmludGYgaW5cbiAgbGV0IHMgPVxuICAgIG1hdGNoIHNpZ25pZmljYW50X2ZpZ3VyZXMgd2l0aFxuICAgICAgICAxIC0+IHNwcmludGYgXCIlLjFnXCIgeFxuICAgICAgfCAyIC0+IHNwcmludGYgXCIlLjJnXCIgeFxuICAgICAgfCAzIC0+IHNwcmludGYgXCIlLjNnXCIgeFxuICAgICAgfCA0IC0+IHNwcmludGYgXCIlLjRnXCIgeFxuICAgICAgfCA1IC0+IHNwcmludGYgXCIlLjVnXCIgeFxuICAgICAgfCA2IC0+IHNwcmludGYgXCIlLjZnXCIgeFxuICAgICAgfCA3IC0+IHNwcmludGYgXCIlLjdnXCIgeFxuICAgICAgfCA4IC0+IHNwcmludGYgXCIlLjhnXCIgeFxuICAgICAgfCA5IC0+IHNwcmludGYgXCIlLjlnXCIgeFxuICAgICAgfCAxMCAtPiBzcHJpbnRmIFwiJS4xMGdcIiB4XG4gICAgICB8IDExIC0+IHNwcmludGYgXCIlLjExZ1wiIHhcbiAgICAgIHwgMTIgLT4gc3ByaW50ZiBcIiUuMTJnXCIgeFxuICAgICAgfCAxMyAtPiBzcHJpbnRmIFwiJS4xM2dcIiB4XG4gICAgICB8IDE0IC0+IHNwcmludGYgXCIlLjE0Z1wiIHhcbiAgICAgIHwgMTUgLT4gc3ByaW50ZiBcIiUuMTVnXCIgeFxuICAgICAgfCAxNiAtPiBzcHJpbnRmIFwiJS4xNmdcIiB4XG4gICAgICB8IF8gLT4gc3ByaW50ZiBcIiUuMTdnXCIgeFxuICBpblxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCIuMFwiXG5cbigqIHVzZWQgYnkgYXRkZ2VuICopXG5sZXQgd3JpdGVfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiTmFOXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgKGlmIHggPiAwLiB0aGVuIFwiSW5maW5pdHlcIiBlbHNlIFwiLUluZmluaXR5XCIpXG4gIHwgXyAtPlxuICAgICAgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4XG5cbmxldCBqc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgd3JpdGVfc3RkX2Zsb2F0IG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX3N0ZF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAganNvbl9lcnJvciBcIk5hTiB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgfCBGUF9pbmZpbml0ZSAtPlxuICAgICAganNvbl9lcnJvclxuICAgICAgICAoaWYgeCA+IDAuIHRoZW5cbiAgICAgICAgICAgXCJJbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCJcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgXCItSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIHdyaXRlX3N0ZF9mbG9hdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxuXG5sZXQgdGVzdF9mbG9hdCAoKSA9XG4gIGxldCBsID0gWyAwLjsgMS47IC0xLiBdIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiAyLiAqLiB4ICsuIDEuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4IC8uIHNxcnQgMi4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gc3FydCAzLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCBjb3MgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAqLiAxLjIzZTUwKSBsIGluXG4gIGxldCBsID0gbCBAIFsgaW5maW5pdHk7IG5lZ19pbmZpbml0eSBdIGluXG4gIExpc3QuaXRlciAoXG4gICAgZnVuIHggLT5cbiAgICAgIGxldCBzID0gUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHggaW5cbiAgICAgIGxldCB5ID0gZmxvYXRfb2Zfc3RyaW5nIHMgaW5cbiAgICAgIFByaW50Zi5wcmludGYgXCIlZyAlZyAlUyAlQlxcblwiIHggeSBzICh4ID0geSlcbiAgKVxuICAgIGxcblxuKCpcbmxldCAoKSA9IHRlc3RfZmxvYXQgKClcbiopXG5cbmxldCB3cml0ZV9pbnRsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xubGV0IHdyaXRlX2Zsb2F0bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9zdHJpbmdsaXQgPSBCdWZmZXIuYWRkX3N0cmluZ1xuXG5sZXQgcmVjIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9zZXAgeDtcbiAgICAgIGZfZWx0IHggeTtcbiAgICAgIGl0ZXIyX2F1eCBmX2VsdCBmX3NlcCB4IGxcblxubGV0IGl0ZXIyIGZfZWx0IGZfc2VwIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBmX3NlcCBvYiA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCdcblxubGV0IHJlYyB3cml0ZV9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDI2NCBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnQgaSAtPiB3cml0ZV9pbnQgb2IgaVxuICAgIFxuIyAyNjcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzAgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXQgZiAtPiB3cml0ZV9mbG9hdCBvYiBmXG4gICAgXG4jIDI3NiBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmcgcyAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIFxuIyAyODEgXCJ3cml0ZS5tbFwiXG4gICAgfCBgQXNzb2MgbCAtPiB3cml0ZV9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX2xpc3Qgb2IgbFxuICAgIFxuIyAyODQgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV90dXBsZSBvYiBsXG4gICAgXG4jIDI4NyBcIndyaXRlLm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBvKSAtPiB3cml0ZV92YXJpYW50IG9iIHMgb1xuXG4jIDI5MCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9qc29uIG9iIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgaXRlcjIgZl9lbHQgZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcblxuYW5kIHdyaXRlX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDMwNiBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcoJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJyknXG5cbiMgMzEzIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3ZhcmlhbnQgb2IgcyBvID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc8JztcbiAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gIChtYXRjaCBvIHdpdGhcbiAgICAgICBOb25lIC0+ICgpXG4gICAgIHwgU29tZSB4IC0+XG4gICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgICAgd3JpdGVfanNvbiBvYiB4XG4gICk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnPidcblxuIyAzMjUgXCJ3cml0ZS5tbFwiXG5sZXQgd3JpdGVfdCA9IHdyaXRlX2pzb25cblxubGV0IHJlYyB3cml0ZV9zdGRfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAzMzIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50IGkgLT4gd3JpdGVfaW50IG9iIGlcbiAgICBcbiMgMzM1IFwid3JpdGUubWxcIlxuICAgIHwgYEludGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzM4IFwid3JpdGUubWxcIlxuICAgIHwgYEZsb2F0IGYgLT4gd3JpdGVfc3RkX2Zsb2F0IG9iIGZcbiAgICBcbiMgMzQ0IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZyBzIC0+IHdyaXRlX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0OSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX3N0ZF9hc3NvYyBvYiBsXG4gICAgfCBgTGlzdCBsIC0+IHdyaXRlX3N0ZF9saXN0IG9iIGxcbiAgICBcbiMgMzUyIFwid3JpdGUubWxcIlxuICAgIHwgYFR1cGxlIGwgLT4gd3JpdGVfc3RkX3R1cGxlIG9iIGxcbiAgICBcbiMgMzU1IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgb1xuXG4jIDM1OCBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfYXNzb2Mgb2IgbCA9XG4gIGxldCBmX2VsdCBvYiAocywgeCkgPVxuICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfc3RkX2xpc3Qgb2IgbCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gIGl0ZXIyIHdyaXRlX3N0ZF9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxuYW5kIHdyaXRlX3N0ZF90dXBsZSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG4jIDM3OSBcIndyaXRlLm1sXCJcbmFuZCB3cml0ZV9zdGRfdmFyaWFudCBvYiBzIG8gPVxuICBtYXRjaCBvIHdpdGhcbiAgICAgIE5vbmUgLT4gd3JpdGVfc3RyaW5nIG9iIHNcbiAgICB8IFNvbWUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICAgICAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgICAgd3JpdGVfc3RkX2pzb24gb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5cbiMgMzkxIFwid3JpdGUubWxcIlxubGV0IHRvX2J1ZmZlciA/KHN1ZiA9IFwiXCIpID8oc3RkID0gZmFsc2UpIG9iIHggPVxuICBpZiBzdGQgdGhlblxuICAgIHdyaXRlX3N0ZF9qc29uIG9iIHhcbiAgZWxzZVxuICAgIHdyaXRlX2pzb24gb2IgeDtcbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2Igc3VmXG5cbmxldCB0b19zdHJpbmcgP2J1ZiA/KGxlbiA9IDI1NikgPyhzdWYgPSBcIlwiKSA/c3RkIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIGxldCBzID0gQnVmZmVyLmNvbnRlbnRzIG9iIGluXG4gIEJ1ZmZlci5jbGVhciBvYjtcbiAgc1xuXG5sZXQgdG9fY2hhbm5lbCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvYyB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX291dHB1dCA/YnVmID8obGVuPTQwOTYpID8oc3VmID0gXCJcIikgP3N0ZCBvdXQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiB4O1xuICBvdXQjb3V0cHV0IChCdWZmZXIuY29udGVudHMgb2IpIDAgKEJ1ZmZlci5sZW5ndGggb2IpO1xuICBCdWZmZXIuY2xlYXIgb2JcblxubGV0IHRvX2ZpbGUgP2xlbiA/c3RkID8oc3VmID0gXCJcXG5cIikgZmlsZSB4ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICB0b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHg7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbmxldCBzZXFfdG9fYnVmZmVyID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYiBzdCA9XG4gIFNlcS5pdGVyICh0b19idWZmZXIgfnN1ZiA/c3RkIG9iKSBzdFxuXG5sZXQgc2VxX3RvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXFxuXCIpID9zdGQgc3QgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPlxuICAgICAgICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgICAgICAgICBvYlxuICBpblxuICBzZXFfdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBzdDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCBzZXFfdG9fY2hhbm5lbCA/YnVmID8obGVuPTIwOTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBvYyBzZXEgPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIFNlcS5pdGVyIChmdW4ganNvbiAtPlxuICAgIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IganNvbjtcbiAgICBCdWZmZXIub3V0cHV0X2J1ZmZlciBvYyBvYjtcbiAgICBCdWZmZXIuY2xlYXIgb2I7XG4gICkgc2VxXG5cbmxldCBzZXFfdG9fZmlsZSA/bGVuID8oc3VmID0gXCJcXG5cIikgP3N0ZCBmaWxlIHN0ID1cbiAgbGV0IG9jID0gb3Blbl9vdXQgZmlsZSBpblxuICB0cnlcbiAgICBzZXFfdG9fY2hhbm5lbCA/bGVuIH5zdWYgP3N0ZCBvYyBzdDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxuXG5sZXQgcmVjIHNvcnQgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIC0+XG4gICAgICBsZXQgbCA9IExpc3QucmV2IChMaXN0LnJldl9tYXAgKGZ1biAoaywgdikgLT4gKGssIHNvcnQgdikpIGwpIGluXG4gICAgICBgQXNzb2MgKExpc3Quc3RhYmxlX3NvcnQgKGZ1biAoYSwgXykgKGIsIF8pIC0+IFN0cmluZy5jb21wYXJlIGEgYikgbClcbiAgfCBgTGlzdCBsIC0+XG4gICAgICBgTGlzdCAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg1IFwid3JpdGUubWxcIlxuICB8IGBUdXBsZSBsIC0+XG4gICAgICBgVHVwbGUgKExpc3QucmV2IChMaXN0LnJldl9tYXAgc29ydCBsKSlcbiAgXG4jIDQ4OSBcIndyaXRlLm1sXCJcbiAgfCBgVmFyaWFudCAoaywgU29tZSB2KSBhcyB4IC0+XG4gICAgICBsZXQgdicgPSBzb3J0IHYgaW5cbiAgICAgIGlmIHYgPT0gdicgdGhlbiB4XG4gICAgICBlbHNlXG4gICAgICAgIGBWYXJpYW50IChrLCBTb21lIHYnKVxuICBcbiMgNDk1IFwid3JpdGUubWxcIlxuICB8IHggLT4geFxuIyA2MiBcInlvanNvbi5jcHBvLm1sXCJcbm1vZHVsZSBQcmV0dHkgPVxuc3RydWN0XG4jIDEgXCJwcmV0dHkubWxcIlxuKCpcbiAgIFByZXR0eS1wcmludCBKU09OIGRhdGEgaW4gYW4gYXR0ZW1wdCB0byBtYXhpbWl6ZSByZWFkYWJpbGl0eS5cblxuICAgMS4gV2hhdCBmaXRzIG9uIG9uZSBsaW5lIHN0YXlzIG9uIG9uZSBsaW5lLlxuICAgMi4gV2hhdCBkb2Vzbid0IGZpdCBvbiBvbmUgbGluZSBnZXRzIHByaW50ZWQgbW9yZSB2ZXJ0aWNhbGx5IHNvIGFzIHRvIG5vdFxuICAgICAgZXhjZWVkIGEgcmVhc29uYWJsZSBwYWdlIHdpZHRoLCBpZiBwb3NzaWJsZS5cblxuICAgQXJyYXlzIGNvbnRhaW5pbmcgb25seSBzaW1wbGUgZWxlbWVudHMgKFwiYXRvbXNcIikgYXJlIHByZXR0eS1wcmludGVkIHdpdGhcbiAgIGVuZC1vZi1saW5lIHdyYXBwaW5nIGxpa2Ugb3JkaW5hcnkgdGV4dDpcblxuICAgICBbXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLFxuICAgICAgICBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIlxuICAgICBdXG5cbiAgIE90aGVyIGFycmF5cyBhcmUgcHJpbnRlZCBlaXRoZXIgaG9yaXpvbnRhbGx5IG9yIHZlcnRpY2FsbHkgZGVwZW5kaW5nXG4gICBvbiB3aGV0aGVyIHRoZXkgZml0IG9uIGEgc2luZ2xlIGxpbmU6XG5cbiAgICAgWyB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9IF1cblxuICAgb3JcblxuICAgICBbXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9XG4gICAgIF1cbiopXG5cbmxldCBwcF9saXN0IHNlcCBwcHggb3V0IGwgPVxuICBsZXQgcHBfc2VwIG91dCAoKSA9IEZvcm1hdC5mcHJpbnRmIG91dCBcIiVzQCBcIiBzZXAgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2xpc3QgfnBwX3NlcCBwcHggb3V0IGxcblxubGV0IGlzX2F0b20gKHg6IFs+IHRdKSA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBOdWxsXG4gIHwgYEJvb2wgX1xuICB8IGBJbnQgX1xuICB8IGBGbG9hdCBfXG4gIHwgYFN0cmluZyBfXG4gIHwgYEludGxpdCBfXG4gIHwgYEZsb2F0bGl0IF9cbiAgfCBgU3RyaW5nbGl0IF9cbiAgfCBgTGlzdCBbXVxuICB8IGBBc3NvYyBbXVxuICB8IGBUdXBsZSBbXVxuICB8IGBWYXJpYW50IChfLCBOb25lKSAtPiB0cnVlXG4gIHwgYExpc3QgX1xuICB8IGBBc3NvYyBfXG4gIHwgYFR1cGxlIF9cbiAgfCBgVmFyaWFudCAoXywgU29tZSBfKSAtPiBmYWxzZVxuXG5sZXQgaXNfYXRvbV9saXN0IGwgPVxuICBMaXN0LmZvcl9hbGwgaXNfYXRvbSBsXG5cbigqXG4gICBpbnNpZGVfYm94OiBpbmRpY2F0ZXMgdGhhdCB3ZSdyZSBhbHJlYWR5IHdpdGhpbiBhIGJveCB0aGF0IGltcG9zZXNcbiAgIGEgY2VydGFpbiBzdHlsZSBhbmQgd2Ugc2hvdWxkbid0IGNyZWF0ZSBhIG5ldyBvbmUuIFRoaXMgaXMgdXNlZCBmb3JcbiAgIHByaW50aW5nIGZpZWxkIHZhbHVlcyBsaWtlIHRoaXM6XG5cbiAgICAgZm9vOiBbXG4gICAgICAgYmFyXG4gICAgIF1cblxuICAgcmF0aGVyIHRoYW4gc29tZXRoaW5nIGVsc2UgbGlrZVxuXG4gICAgIGZvbzpcbiAgICAgICBbXG4gICAgICAgICBiYXJcbiAgICAgICBdXG4qKVxubGV0IHJlYyBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIChvdXQ6Rm9ybWF0LmZvcm1hdHRlcikgKHg6dCkgOiB1bml0ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIm51bGxcIlxuICAgIHwgYEJvb2wgeCAtPiBGb3JtYXQucHBfcHJpbnRfYm9vbCBvdXQgeFxuICAgIFxuIyA3OCBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50IHggLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX2ludCB4KVxuICAgIFxuIyA4MSBcInByZXR0eS5tbFwiXG4gICAgfCBgRmxvYXQgeCAtPlxuICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgaWYgc3RkIHRoZW4gc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgICBlbHNlIGpzb25fc3RyaW5nX29mX2Zsb2F0IHhcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyA4OSBcInByZXR0eS5tbFwiXG4gICAgfCBgU3RyaW5nIHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuICAgIFxuIyA5MiBcInByZXR0eS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgc1xuICAgIFxuIyAxMDAgXCJwcmV0dHkubWxcIlxuICAgIHwgYExpc3QgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJbXVwiXG4gICAgfCBgTGlzdCBsIC0+XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj5cIjtcbiAgICAgIGlmIGlzX2F0b21fbGlzdCBsIHRoZW5cbiAgICAgICAgKCogdXNlIGxpbmUgd3JhcHBpbmcgbGlrZSB3ZSB3b3VsZCBkbyBmb3IgYSBwYXJhZ3JhcGggb2YgdGV4dCAqKVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJbQDs8MSAwPkBbPGhvdj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGxcbiAgICAgIGVsc2VcbiAgICAgICAgKCogcHJpbnQgdGhlIGVsZW1lbnRzIGhvcml6b250YWxseSBpZiB0aGV5IGZpdCBvbiB0aGUgbGluZSxcbiAgICAgICAgICAgb3RoZXJ3aXNlIHByaW50IHRoZW0gaW4gYSBjb2x1bW4gKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxodj4lYUBdQDs8MSAtMj5dXCJcbiAgICAgICAgICAocHBfbGlzdCBcIixcIiAoZm9ybWF0IH5pbnNpZGVfYm94OmZhbHNlIHN0ZCkpIGw7XG4gICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBdXCI7XG4gICAgfCBgQXNzb2MgW10gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCJ7fVwiXG4gICAgfCBgQXNzb2MgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCJ7QDs8MSAwPiVhQDs8MSAtMj59XCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdF9maWVsZCBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIFxuIyAxMTkgXCJwcmV0dHkubWxcIlxuICAgIHwgYFR1cGxlIGwgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgbClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGlmIGwgPSBbXSB0aGVuXG4gICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBcIigpXCJcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aG92Mj5cIjtcbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIihALCVhQDs8MCAtMj4pXCIgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgICAgICAgIClcbiAgICBcbiMgMTMyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBWYXJpYW50IChzLCBOb25lKSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxMzUgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIFxuIyAxMzkgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IHJlcHJlc2VudGF0aW9uXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8JXM+XCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBzKVxuXG4gICAgfCBgVmFyaWFudCAocywgU29tZSB4KSAtPlxuICAgICAgICBpZiBzdGQgdGhlblxuICAgICAgICAgIFxuIyAxNDYgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGxldCByZXByZXNlbnRhdGlvbiA9IGBTdHJpbmcgcyBpblxuICAgICAgICAgIFxuIyAxNTAgXCJwcmV0dHkubWxcIlxuICAgICAgICAgIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgb3V0IChgTGlzdCBbIHJlcHJlc2VudGF0aW9uOyB4IF0pXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBsZXQgb3AgPSBqc29uX3N0cmluZ19vZl9zdHJpbmcgcyBpblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIjxAWzxodjI+JXM6ICVhQF0+XCIgb3AgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG4jIDE1NiBcInByZXR0eS5tbFwiXG5hbmQgZm9ybWF0X2ZpZWxkIHN0ZCBvdXQgKG5hbWUsIHgpID1cbiAgRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPiVzOiAlYUBdXCIgKGpzb25fc3RyaW5nX29mX3N0cmluZyBuYW1lKSAoZm9ybWF0IH5pbnNpZGVfYm94OnRydWUgc3RkKSB4XG5cbmxldCBwcCA/KHN0ZCA9IGZhbHNlKSBvdXQgeCA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lYUBdXCIgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgKHggOj4gdClcblxubGV0IHRvX3N0cmluZyA/c3RkIHggPVxuICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChwcCA/c3RkKSB4XG5cbmxldCB0b19jaGFubmVsID9zdGQgb2MgeCA9XG4gIGxldCBmbXQgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIG9jIGluXG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVhQD9cIiAocHAgP3N0ZCkgeFxuIyA2NSBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIyAxIFwibW9ub21vcnBoaWMubWxcIlxubGV0IHJlYyBwcCBmbXQgPVxuICBmdW5jdGlvblxuICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiYE51bGxcIlxuICB8IGBCb29sIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQm9vbCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVCXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJWRcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAxNSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgSW50bGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgSW50bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAyMSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgRmxvYXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBGbG9hdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVGXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgMzMgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFN0cmluZyB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFN0cmluZyAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgeDtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNDQgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYEFzc29jIHhzIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEFzc29jIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgKGtleSwgdmFsdWUpIC0+XG4gICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiKEBbXCI7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiBrZXk7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgICAgICAgcHAgZm10IHZhbHVlO1xuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIHwgYExpc3QgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgTGlzdCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIHggLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgICB0cnVlKSBmYWxzZSB4cyk7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQCxdQF1cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuICBcbiMgNzEgXCJtb25vbW9ycGhpYy5tbFwiXG4gIHwgYFR1cGxlIHR1cCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBUdXBsZSAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBbPDI+W1wiO1xuICAgIGlnbm9yZSAoTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gc2VwIGUgLT5cbiAgICAgICAgIGlmIHNlcCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgICBwcCBmbXQgZTtcbiAgICAgICAgICAgdHJ1ZSkgZmFsc2UgdHVwKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA4NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFZhcmlhbnQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIG5hbWU7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiLEAgXCI7XG4gICAgKG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIk5vbmVcIlxuICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIoU29tZSBcIjtcbiAgICAgICAgcHAgZm10IHg7XG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiKVwiKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAXSlcIlxuXG4jIDk5IFwibW9ub21vcnBoaWMubWxcIlxubGV0IHNob3cgeCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgcHAgeFxuXG5sZXQgcmVjIGVxdWFsIGEgYiA9XG4gIG1hdGNoIGEsIGIgd2l0aFxuICB8IGBOdWxsLCBgTnVsbCAtPiB0cnVlXG4gIHwgYEJvb2wgYSwgYEJvb2wgYiAtPiBhID0gYlxuICBcbiMgMTA3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnQgYSwgYEludCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMyBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdCBhLCBgRmxvYXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMTkgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgU3RyaW5nIGEsIGBTdHJpbmcgYiAtPiBhID0gYlxuICAgIFxuIyAxMjQgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTM3IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICBcbiMgMTM5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxNDYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgXG4jIDE1NSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IF8gLT4gZmFsc2VcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDIgXCJsaWIvcmVhZC5tbGxcIlxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IExleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBzcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIHNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBzcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIGpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IHJlYWRfanVuayA9IHJlZiAoZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSAhcmVhZF9qdW5rIGxleGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgIFxuIyAxMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgdHJ5IGBJbnQgKGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZilcbiAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgIFxuIyAxMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICBgSW50bGl0IChsZXhlbWUgbGV4YnVmKVxuXG4gIFxuIyAxMTMgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgZXh0cmFjdF9uZWdhdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyArIDEgaW5cbiAgICBsZXQgc3RvcCA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgaW5cbiAgICBsZXQgcyA9IGxleGJ1Zi5sZXhfYnVmZmVyIGluXG4gICAgbGV0IG4gPSByZWYgMCBpblxuICAgIGZvciBpID0gc3RhcnQgdG8gc3RvcCAtIDEgZG9cbiAgICAgIGlmICFuIDw9IG1pbjEwIHRoZW5cbiAgICAgICAgcmFpc2UgSW50X292ZXJmbG93XG4gICAgICBlbHNlXG4gICAgICAgIG4gOj0gMTAgKiAhbiAtIGRlYyAoQnl0ZXMuZ2V0IHMgaSlcbiAgICBkb25lO1xuICAgIGlmICFuID4gMCB0aGVuXG4gICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICBlbHNlXG4gICAgICAhblxuXG4gIGxldCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiA9XG4gICAgICBcbiMgMTMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgIHRyeSBgSW50IChleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYpXG4gICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICBcbiMgMTM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgYEludGxpdCAobGV4ZW1lIGxleGJ1ZilcblxuXG4gIFxuIyAxNDEgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgc2V0X2ZpbGVfbmFtZSB2IGZuYW1lID1cbiAgICB2LmZuYW1lIDwtIGZuYW1lXG5cbiAgbGV0IG5ld2xpbmUgdiBsZXhidWYgPVxuICAgIHYubG51bSA8LSB2LmxudW0gKyAxO1xuICAgIHYuYm9sIDwtIGxleGJ1Zi5sZXhfYWJzX3BvcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3NcblxuICBsZXQgYWRkX2xleGVtZSBidWYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgQnVmZmVyLmFkZF9zdWJieXRlcyBidWYgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgbGVuXG5cbiAgbGV0IG1hcF9sZXhlbWUgZiBsZXhidWYgPVxuICAgIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICBmIChCeXRlcy5zdWJfc3RyaW5nIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlbikgMCBsZW5cblxuICB0eXBlIHZhcmlhbnRfa2luZCA9IFsgYEVkZ3lfYnJhY2tldCB8IGBTcXVhcmVfYnJhY2tldCB8IGBEb3VibGVfcXVvdGUgXVxuICB0eXBlIHR1cGxlX2tpbmQgPSBbIGBQYXJlbnRoZXNpcyB8IGBTcXVhcmVfYnJhY2tldCBdXG5cblxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG4jIDE2MSBcImxpYi9yZWFkLm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIzNlxcMjU1XFwyMzdcXDI1NVxcMDAzXFwwMDBcXDIzOVxcMjU1XFwwMTZcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFxcbiAgICBcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMDAwXFwwMDBcXDAzMVxcMDAwXFwyNDlcXDI1NVxcMDg1XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDI1NFxcMjU1XFwwMDFcXDAwMFxcMDA0XFwwMDBcXDI1M1xcMjU1XFwwMTFcXDAwMFxcMjUyXFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMjUxXFwyNTVcXDAyMVxcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDIyXFwwMDBcXDAyMFxcMDAwXFwwMTZcXDAwMFxcMDIyXFwwMDBcXDAxMlxcMDAwXFwwMDhcXDAwMFxcMjUwXFwyNTVcXFxuICAgIFxcMTE5XFwwMDBcXDEyOVxcMDAwXFwxMzlcXDAwMFxcMTYxXFwwMDBcXDE3MVxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDIwOVxcMDAwXFxcbiAgICBcXDI0MFxcMjU1XFwwMTFcXDAwMFxcMDM4XFwwMDBcXDI1MlxcMjU1XFwwNjVcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMTBcXDAwMFxcXG4gICAgXFwyNTJcXDI1NVxcMTYzXFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjM0XFwwMDBcXDI0N1xcMjU1XFwyNDhcXDI1NVxcMDQ4XFwwMDFcXFxuICAgIFxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDEyNlxcMDAxXFxcbiAgICBcXDE0OVxcMDAxXFwyNDlcXDI1NVxcMDM5XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDM4XFwwMDBcXDE4N1xcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNDhcXDAwMVxcMDE1XFwwMDJcXDI1NVxcMjU1XFwyMjBcXDAwMFxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMDM5XFwwMDJcXFxuICAgIFxcMTA5XFwwMDJcXDAxNFxcMDAxXFwwODhcXDAwMlxcMTY0XFwwMDJcXDE4N1xcMDAyXFwyMjVcXDAwMlxcMDEzXFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDFcXFxuICAgIFxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDFcXDAwNVxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwwMjNcXDAwMFxcMjU0XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDQyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwyNTVcXDI1NVxcMDUzXFwwMDBcXDA0OFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAyN1xcMDAxXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDEzN1xcMDAwXFwxMDRcXDAwMFxcMDg5XFwwMDBcXDA4OFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDBcXDEzN1xcMDAwXFwxNzdcXDAwMFxcMjU0XFwyNTVcXDE4M1xcMDAwXFwxNjhcXDAwMFxcMTY2XFwwMDBcXFxuICAgIFxcMTgzXFwwMDBcXDAwMlxcMDAwXFwyNTNcXDI1NVxcMTc3XFwwMDBcXDE3MlxcMDAwXFwxODdcXDAwMFxcMDA0XFwwMDBcXDI1MlxcMjU1XFxcbiAgICBcXDA1M1xcMDAyXFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwxMDNcXDAwMVxcMjU1XFwyNTVcXDI0OFxcMDAyXFwyNTRcXDI1NVxcXG4gICAgXFwwMDZcXDAwM1xcMDMwXFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwM1xcMDUwXFwwMDNcXFxuICAgIFxcMDc0XFwwMDNcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwM1xcMDg0XFwwMDNcXDEwOFxcMDAzXFxcbiAgICBcXDI0OVxcMjU1XFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI0NFxcMDAwXFwxMjBcXDAwM1xcMTQyXFwwMDNcXDE3OVxcMDAwXFwxOTRcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDE5MFxcMDAwXFwxODhcXDAwMFxcMTg3XFwwMDBcXDE5M1xcMDAwXFwxODNcXDAwMFxcMTc5XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDE5MVxcMDAwXFwyMDFcXDAwMFxcMjAwXFwwMDBcXDE5NlxcMDAwXFwyMDNcXDAwMFxcMTkzXFwwMDBcXDE4OVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwxNTdcXDAwM1xcMDk1XFwwMDNcXDE3NFxcMDAzXFwxOTZcXDAwM1xcMjA2XFwwMDNcXDIxNlxcMDAzXFwyMjhcXDAwM1xcXG4gICAgXFwyMzlcXDAwM1xcMDYwXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDA0XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMDg3XFwwMDRcXDI1NVxcMjU1XFwxNDVcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyMjFcXDAwNFxcMjU1XFwyNTVcXDIyOVxcMDAwXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzMVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDE4XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzRcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAxXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMVxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIwOFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMTFcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODlcXDAwMFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDk1XFwwMDFcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjZcXDAwMVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzNcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjIyXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDVcXDIzN1xcMjU1XFwyMzhcXDI1NVxcMDEwXFwwMDBcXDI0MFxcMjU1XFwwNDRcXDAwMVxcXG4gICAgXFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMDYxXFwwMDFcXDAwMlxcMDA0XFwyNDlcXDI1NVxcMDQ1XFwwMDVcXFxuICAgIFxcMjA5XFwwMDBcXDIyOFxcMDAwXFwyMTFcXDAwMFxcMjMyXFwwMDBcXDIyNVxcMDAwXFwyMjNcXDAwMFxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDIzNVxcMDAwXFwyMzRcXDAwMFxcMDA4XFwwMDFcXDI1NFxcMjU1XFwwMDRcXDAwMVxcMDIzXFwwMDFcXDI1M1xcMjU1XFwwNTRcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMDMxXFwwMDFcXDAyOVxcMDAxXFwwMzJcXDAwMVxcMDM5XFwwMDFcXDA0OVxcMDAxXFwwNDVcXDAwMVxcMjUxXFwyNTVcXFxuICAgIFxcMDU3XFwwMDFcXDA4MlxcMDAxXFwwODBcXDAwMVxcMDc4XFwwMDFcXDA4NFxcMDAxXFwwNzRcXDAwMVxcMDg2XFwwMDFcXDI1MFxcMjU1XFxcbiAgICBcXDExMFxcMDA1XFwwMTJcXDAwNFxcMTIzXFwwMDVcXDE1NVxcMDA1XFwxNjVcXDAwNVxcMTc3XFwwMDVcXDE4N1xcMDA1XFwxOTdcXDAwNVxcXG4gICAgXFwyNDFcXDI1NVxcMTk5XFwwMDFcXDA3N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDE1NFxcMDAyXFwyMjJcXDAwNVxcMjA5XFwwMDVcXFxuICAgIFxcMTU1XFwwMDJcXDIzOVxcMDA1XFwwNTNcXDAwNlxcMDc2XFwwMDZcXDExNFxcMDA2XFwwMTZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTUyXFwwMDZcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjI3XFwwMDZcXDI1NVxcMjU1XFwwODVcXDAwN1xcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAxMVxcMDAwXFwyNDdcXDI1NVxcMDc2XFwwMDJcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMzFcXDAwMlxcMjQzXFwwMDVcXDA1MVxcMDA3XFwxMDBcXDAwMVxcMTE1XFwwMDFcXDEwNFxcMDAxXFxcbiAgICBcXDEzM1xcMDAxXFwxMThcXDAwMVxcMTU0XFwwMDFcXDE3MVxcMDAxXFwyNTVcXDI1NVxcMTczXFwwMDFcXDE3NlxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg3XFwwMDFcXDI1M1xcMDAxXFwyMzBcXDAwMVxcMjMwXFwwMDFcXDIzNFxcMDAxXFwyNDdcXDAwMVxcMjM3XFwwMDFcXFxuICAgIFxcMjM0XFwwMDFcXDAwOVxcMDAyXFwwMTlcXDAwMlxcMDE5XFwwMDJcXDAxNVxcMDAyXFwwMjFcXDAwMlxcMDExXFwwMDJcXDAwN1xcMDAyXFxcbiAgICBcXDE0MlxcMDA2XFwxNTJcXDAwNlxcMTE2XFwwMDdcXDE3MFxcMDA3XFwxODBcXDAwN1xcMTkwXFwwMDdcXDIwMFxcMDA3XFwyMTBcXDAwN1xcXG4gICAgXFwyNDhcXDI1NVxcMTIwXFwwMDJcXDE2N1xcMDAyXFwyNTNcXDI1NVxcMjU1XFwyNTVcXDIxNlxcMDAyXFwwODJcXDAwN1xcMjIwXFwwMDdcXFxuICAgIFxcMjM2XFwwMDJcXDI0NFxcMDA3XFwwNThcXDAwOFxcMDgxXFwwMDhcXDExOVxcMDA4XFwwNzZcXDAwMlxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTU3XFwwMDhcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjMyXFwwMDhcXDI1NVxcMjU1XFwxMzVcXDAwMlxcXG4gICAgXFwxMjBcXDAwMlxcMjUzXFwyNTVcXDEwMFxcMDAyXFwyNTRcXDI1NVxcMTgyXFwwMDJcXDI1NVxcMjU1XFwwMTFcXDAwMlxcMjU1XFwyNTVcXFxuICAgIFxcMjA0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMlxcMjU1XFwyNTVcXDE3OFxcMDAyXFxcbiAgICBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMjNcXDAwMFxcMjU1XFwyNTVcXDE4M1xcMDAyXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwxODdcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIxXFwwMDJcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxNDBcXDAwMVxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwxNTBcXDAwMVxcMTUxXFwwMDFcXDE1NFxcMDAxXFwxNjhcXDAwMVxcXG4gICAgXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE3MlxcMDAxXFwxNzNcXDAwMVxcMTgxXFwwMDFcXDE4NFxcMDAxXFwxODVcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5M1xcMDAxXFwxOTVcXDAwMVxcMTk2XFwwMDFcXDE5N1xcMDAxXFwyMDBcXDAwMVxcMjAzXFwwMDFcXDIyM1xcMDAxXFxcbiAgICBcXDIyNVxcMDAxXFwyMjhcXDAwMVxcMjQ5XFwwMDFcXDI1MVxcMDAxXFwwMDJcXDAwMlxcMDA0XFwwMDJcXDAxMVxcMDAyXFwwMTJcXDAwMlxcXG4gICAgXFwwMTNcXDAwMlxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTdcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDAwOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcMDAzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMDA3XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwxMzhcXDAwMFxcMDAwXFwwMDBcXDE0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwxNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE4N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDlcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTdcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMyXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDEyMVxcMDAxXFwxMjVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTM1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTQ0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDE5M1xcMDAxXFwxOTdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDIyMFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDIyNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMDBcXDAwMFxcMDA1XFwwMDJcXDAwNlxcMDAyXFwwMDdcXDAwMlxcMDA4XFwwMDJcXFxuICAgIFxcMDA5XFwwMDJcXDAxMFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDE1XFwwMDJcXDAxNlxcMDAyXFxcbiAgICBcXDAxN1xcMDAyXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwMjFcXDAwMlxcMDIyXFwwMDJcXDAyM1xcMDAyXFwwMjRcXDAwMlxcXG4gICAgXFwwMjVcXDAwMlxcMDI2XFwwMDJcXDAyN1xcMDAyXFwwMjhcXDAwMlxcMDI5XFwwMDJcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXFxuICAgIFxcMDMzXFwwMDJcXDAwM1xcMDAyXCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI3XFwwMDBcXDEzOVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAxMlxcMDAwXFwwMDNcXDAwMFxcMTcwXFwwMDBcXDEzNFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAxMVxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxNFxcMDAxXFwwMTNcXDAwMFxcMDQ5XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDA1NlxcMDAwXFwxMThcXDAwMFxcMDA2XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDFcXDEzN1xcMDAwXFwwMDBcXDAwMlxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwNDhcXDAwMFxcMTM4XFwwMDBcXDEwNlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwMTRcXDAwMFxcMTEwXFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAxNVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAzMFxcMDAwXFwwNDhcXDAwMFxcMDA4XFwwMDBcXDExNFxcMDAwXFwyMDlcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAxXFxcbiAgICBcXDAxM1xcMDAxXFwwMjlcXDAwMFxcMDIyXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDAxN1xcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMjVcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzVcXDAwMFxcMDIzXFwwMDBcXDAyN1xcMDAwXFwwMTZcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDI4XFwwMDBcXDAzNFxcMDAwXFwwMTlcXDAwMFxcMDI0XFwwMDBcXDAxOFxcMDAwXFwwMjZcXDAwMFxcMDIwXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMzdcXDAwMFxcMDQ4XFwwMDBcXDAwOVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFwwNDVcXDAwMFxcXG4gICAgXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXDA2MVxcMDAwXFwwODVcXDAwMFxcMDQ4XFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA2N1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODZcXDAwMFxcMTQzXFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcMTQ0XFwwMDBcXFxuICAgIFxcMTQ1XFwwMDBcXDE0NlxcMDAwXFwwNTVcXDAwMFxcMTQ4XFwwMDBcXDA1NVxcMDAwXFwxNDlcXDAwMFxcMDQ4XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwxNTBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMFxcMTYxXFwwMDBcXDA2NlxcMDAwXFwxNThcXDAwMFxcMDUzXFwwMDBcXDE1OVxcMDAwXFwwNTNcXDAwMFxcMTYwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDE2NVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NlxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAyXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMFxcMTAzXFwwMDBcXDEwOFxcMDAwXFwxMTZcXDAwMFxcXG4gICAgXFwxMzJcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMjhcXDAwMFxcMTM5XFwwMDBcXDEzNFxcMDAwXFwxNjRcXDAwMFxcMDkzXFwwMDBcXFxuICAgIFxcMTcxXFwwMDBcXDA3N1xcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzJcXDAwMFxcMTEyXFwwMDBcXDE3M1xcMDAwXFxcbiAgICBcXDE3NFxcMDAwXFwyMTBcXDAwMFxcMjI2XFwwMDBcXDIwOFxcMDAwXFwyMTFcXDAwMFxcMjEyXFwwMDBcXDA1OVxcMDAwXFwwODNcXDAwMFxcXG4gICAgXFwxMzRcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE2XFwwMDBcXDIxOFxcMDAwXFwxNDFcXDAwMFxcMjE5XFwwMDBcXFxuICAgIFxcMDkzXFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTIzXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMjI0XFwwMDBcXDEzNlxcMDAwXFxcbiAgICBcXDA5NVxcMDAwXFwyMjVcXDAwMFxcMDM1XFwwMDFcXDA2NVxcMDAxXFwyMzRcXDAwMFxcMTU1XFwwMDBcXDAwNVxcMDAxXFwwOTdcXDAwMVxcXG4gICAgXFwyNTBcXDAwMFxcMjU1XFwyNTVcXDI1NFxcMDAwXFwwNTdcXDAwMVxcMDYxXFwwMDFcXDA5NVxcMDAxXFwwNzdcXDAwMFxcMDQ0XFwwMDFcXFxuICAgIFxcMDkyXFwwMDFcXDA4OFxcMDAxXFwwMDlcXDAwMVxcMDI5XFwwMDFcXDA3NlxcMDAwXFwxMjRcXDAwMFxcMDMzXFwwMDFcXDAxOFxcMDAxXFxcbiAgICBcXDA3NVxcMDAwXFwwOThcXDAwMFxcMDE5XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDg3XFwwMDFcXDEyMFxcMDAxXFwwODlcXDAwMVxcXG4gICAgXFwwNzRcXDAwMFxcMjI1XFwwMDBcXDA1M1xcMDAxXFwxMjFcXDAwMVxcMDczXFwwMDBcXDA5MFxcMDAxXFwwNzJcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDk4XFwwMDBcXDExM1xcMDAxXFwxMjJcXDAwMFxcMDkxXFwwMDFcXDA2NFxcMDAwXFwwMDRcXDAwMVxcXG4gICAgXFwwOTNcXDAwMVxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwxNTZcXDAwMFxcMTEyXFwwMDFcXDA5NFxcMDAxXFwwOTZcXDAwMVxcMDk4XFwwMDFcXDA5OVxcMDAxXFwwNDlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwxMDBcXDAwMVxcMTU3XFwwMDBcXFxuICAgIFxcMTAxXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDE4M1xcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMDI0XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMDI1XFwwMDFcXDEwMlxcMDAxXFwxMDNcXDAwMVxcMTA1XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwxMDZcXDAwMVxcMTA3XFwwMDFcXDA0OFxcMDAxXFwwNDBcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwxMTBcXDAwMVxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwxMTFcXDAwMVxcXG4gICAgXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDE3MVxcMDAxXFwwMzFcXDAwMVxcMTcwXFwwMDFcXDAyM1xcMDAxXFwwODFcXDAwMFxcMDgxXFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA5MlxcMDAwXFwxNjhcXDAwMVxcMDYzXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMjQ4XFwwMDBcXDE2NVxcMDAxXFwyNTJcXDAwMFxcXG4gICAgXFwxNjJcXDAwMVxcMDU5XFwwMDFcXDA2OVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwyNTVcXDI1NVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDAzOVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDE2M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwxMjBcXDAwMFxcMDAyXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMTY2XFwwMDFcXDA1NVxcMDAxXFwxNTNcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwMDdcXDAwMVxcMTY3XFwwMDFcXDE2NFxcMDAxXFwxNjlcXDAwMVxcMDE2XFwwMDFcXDE2NFxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA1MVxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDEzN1xcMDAxXFwxNjRcXDAwMVxcMTcyXFwwMDFcXDE4NVxcMDAxXFwxMzZcXDAwMVxcMTczXFwwMDFcXFxuICAgIFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDk3XFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDE3NFxcMDAxXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNDZcXDAwMVxcXG4gICAgXFwxNzVcXDAwMVxcMTc2XFwwMDFcXDE4MFxcMDAwXFwxNjRcXDAwMVxcMTg0XFwwMDFcXDE4MVxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDEyNFxcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDE5MlxcMDAxXFwxNzhcXDAwMVxcXG4gICAgXFwwMjFcXDAwMVxcMTc5XFwwMDFcXDA5N1xcMDAwXFwxOTNcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcMTgzXFwwMDFcXFxuICAgIFxcMTY0XFwwMDFcXDIxNlxcMDAxXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDE4NFxcMDAxXFwyMTZcXDAwMVxcMjA5XFwwMDFcXDA5N1xcMDAwXFxcbiAgICBcXDIyM1xcMDAxXFwwOTdcXDAwMFxcMjA4XFwwMDFcXDIzMFxcMDAxXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDIxOVxcMDAxXFwwMzdcXDAwMVxcXG4gICAgXFwyMTZcXDAwMVxcMjE3XFwwMDFcXDAwM1xcMDAyXFwyMjBcXDAwMVxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMTZcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMTI2XFwwMDFcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMjE4XFwwMDFcXDI1MFxcMDAxXFxcbiAgICBcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDAwM1xcMDAyXFwxMjRcXDAwMVxcMTI0XFwwMDFcXDA5N1xcMDAwXFwwMDNcXDAwMlxcXG4gICAgXFwyMjFcXDAwMVxcMDAzXFwwMDJcXDI1M1xcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDJcXDE5NlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwyMzVcXDAwMVxcMDAzXFwwMDJcXFxuICAgIFxcMjQxXFwwMDFcXDAwM1xcMDAyXFwyNTVcXDAwMVxcMjQyXFwwMDFcXDAwM1xcMDAyXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI0NlxcMDAxXFwxMjlcXDAwMVxcMTI5XFwwMDFcXFxuICAgIFxcMjI4XFwwMDFcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDAzXFwwMDJcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMDAzXFwwMDJcXDE5OFxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMjM0XFwwMDFcXFxuICAgIFxcMTM0XFwwMDFcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDFcXDAwMVxcMTc3XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg4XFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDIwMVxcMDAxXFwyMjdcXDAwMVxcMDAwXFwwMDBcXDE5MVxcMDAwXFwyMDZcXDAwMVxcMTIzXFwwMDFcXDE4OVxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTg5XFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTk1XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNDhcXDAwMVxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk2XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMjAyXFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjI2XFwwMDBcXDE5NVxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNlxcMDAwXFwyMjFcXDAwMVxcMjM5XFwwMDFcXFxuICAgIFxcMjU0XFwwMDFcXDAwMFxcMDAwXFwyMDdcXDAwMFxcMjQ0XFwwMDFcXDAwMFxcMDAwXFwyMjVcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIzMlxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDFcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIxN1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg2XFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTEzXFwwMDFcXDAwMFxcMDAwXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwMDBcXDAwMFxcMTEyXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwyMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDIzOFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNFxcMDAxXFwwNzNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDFcXDAwMFxcMDAwXFwwNzFcXDAwMVxcMDc2XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDFcXDExOVxcMDAxXFwwMDBcXDAwMFxcMTE5XFwwMDFcXDAwMFxcMDAwXFwwODFcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE3XFwwMDFcXDAwMFxcMDAwXFwwNzVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTg1XFwwMDFcXDAwMFxcMDAwXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxODRcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjdcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDE5MVxcMDAxXFwxNDJcXDAwMVxcMTkxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDZcXDAwMVxcMTQ3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDZcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE0NlxcMDAxXFwwMDBcXDAwMFxcMTUzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3N1xcMDAxXFwxNTBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMTU2XFwwMDFcXDAwMFxcMDAwXFwxNDhcXDAwMVxcMTU0XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1N1xcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNThcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDE1MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMTg3XFwwMDFcXDAwMFxcMDAwXFwxNjBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU5XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxNjFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAxXFwwMDBcXDAwMFxcMTg5XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDVcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE5OVxcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDAwMFxcMDAwXFwyMTRcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDEzNFxcMDAwXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMDY5XFwwMDFcXFxuICAgIFxcMTQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjVcXDAwMFxcMTM4XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwM1xcMDAwXFwxNjlcXDAwMFxcMTM0XFwwMDBcXDE3NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDFcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMDEyXFwwMDFcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDExNVxcMDAwXFwwMDBcXDAwMFxcMTI1XFwwMDBcXDEyOVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyMzZcXDAwMVxcMTM2XFwwMDBcXDI1NVxcMDAxXFwwMzhcXDAwMFxcMjU1XFwyNTVcXDAxMFxcMDAwXFwxMzZcXDAwMFxcMTAyXFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDAwMFxcMDAwXFwxMDdcXDAwMFxcMTAyXFwwMDBcXDI1NVxcMjU1XFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDI5XFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDIwOFxcMDAwXFwyMzNcXDAwMFxcMjU1XFwwMDBcXFxuICAgIFxcMDEyXFwwMDFcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDYwXFwwMDBcXDAxMVxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyNFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzNFxcMDAwXFwwMjJcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMTRcXDAwMFxcXG4gICAgXFwwMjdcXDAwMFxcMDMzXFwwMDBcXDAxOFxcMDAwXFwwMjNcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAwXFwwMTlcXDAwMFxcMDM1XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAzNlxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0NFxcMDAwXFxcbiAgICBcXDA0NVxcMDAwXFwwNDZcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFwwMTFcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcXG4gICAgXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDA4NVxcMDAwXFwxNDBcXDAwMFxcMDYwXFwwMDBcXDAxM1xcMDAwXFwxNDNcXDAwMFxcXG4gICAgXFwxNDRcXDAwMFxcMTQ1XFwwMDBcXDA0OFxcMDAwXFwxNDdcXDAwMFxcMDQ4XFwwMDBcXDE0OFxcMDAwXFwwMzlcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNjVcXDAwMFxcMDM5XFwwMDBcXDE0OVxcMDAwXFxcbiAgICBcXDE1MFxcMDAwXFwxNTZcXDAwMFxcMDYzXFwwMDBcXDE1N1xcMDAwXFwwNTFcXDAwMFxcMTU4XFwwMDBcXDA1MVxcMDAwXFwxNTlcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcXG4gICAgXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMTU1XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTU1XFwwMDBcXDA5MVxcMDAwXFwwNjVcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU3XFwwMDBcXDA2OFxcMDAwXFwxMDJcXDAwMFxcMTA3XFwwMDBcXDExNVxcMDAwXFxcbiAgICBcXDEzMVxcMDAwXFwxMzNcXDAwMFxcMTMzXFwwMDBcXDEyNVxcMDAwXFwxMzhcXDAwMFxcMTMzXFwwMDBcXDE2M1xcMDAwXFwwOTRcXDAwMFxcXG4gICAgXFwxNjVcXDAwMFxcMDY4XFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE3MVxcMDAwXFwxMTFcXDAwMFxcMTcyXFwwMDBcXFxuICAgIFxcMTczXFwwMDBcXDIwNlxcMDAwXFwyMDNcXDAwMFxcMjA3XFwwMDBcXDIxMFxcMDAwXFwyMTFcXDAwMFxcMDU4XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDEzM1xcMDAwXFwyMTJcXDAwMFxcMjEzXFwwMDBcXDIxNFxcMDAwXFwyMTVcXDAwMFxcMjE3XFwwMDBcXDE0MFxcMDAwXFwyMThcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMTlcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwyMjNcXDAwMFxcMTMzXFwwMDBcXFxuICAgIFxcMDkxXFwwMDBcXDIwM1xcMDAwXFwwMzRcXDAwMVxcMDYyXFwwMDFcXDIzM1xcMDAwXFwxNTJcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAxXFxcbiAgICBcXDI0N1xcMDAwXFwwNjBcXDAwMFxcMjUxXFwwMDBcXDA1NFxcMDAxXFwwNThcXDAwMVxcMDgxXFwwMDFcXDA2OFxcMDAwXFwwNDFcXDAwMVxcXG4gICAgXFwwODJcXDAwMVxcMDgzXFwwMDFcXDAwNlxcMDAxXFwwMjZcXDAwMVxcMDY4XFwwMDBcXDExOVxcMDAwXFwwMzBcXDAwMVxcMDE1XFwwMDFcXFxuICAgIFxcMDY4XFwwMDBcXDA5NFxcMDAwXFwwMTVcXDAwMVxcMDg0XFwwMDFcXDA4NVxcMDAxXFwwODZcXDAwMVxcMDcxXFwwMDFcXDA4OFxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwyMDNcXDAwMFxcMDUwXFwwMDFcXDA3MVxcMDAxXFwwNjhcXDAwMFxcMDg5XFwwMDFcXDA2OFxcMDAwXFwwNjhcXDAwMFxcXG4gICAgXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwOTdcXDAwMFxcMDc2XFwwMDFcXDExOVxcMDAwXFwwOTBcXDAwMVxcMDYzXFwwMDBcXDAwMVxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDE1MlxcMDAwXFwwNzZcXDAwMVxcMDkzXFwwMDFcXDA5NVxcMDAxXFwwOTdcXDAwMVxcMDk4XFwwMDFcXDA0NVxcMDAxXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OVxcMDAxXFwxNTJcXDAwMFxcXG4gICAgXFwxMDBcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMTgwXFwwMDBcXFxuICAgIFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwwMjBcXDAwMVxcMDc2XFwwMDFcXDA2NVxcMDAwXFwwMjBcXDAwMVxcMTAxXFwwMDFcXDEwMlxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDEwNVxcMDAxXFwxMDZcXDAwMVxcMDQ1XFwwMDFcXDAzNlxcMDAxXFwxMDdcXDAwMVxcMTA4XFwwMDFcXDEwOVxcMDAxXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDExMFxcMDAxXFxcbiAgICBcXDAyNlxcMDAxXFwxMjFcXDAwMVxcMTU3XFwwMDFcXDAzMFxcMDAxXFwxNThcXDAwMVxcMDIwXFwwMDFcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDkxXFwwMDBcXDE1OVxcMDAxXFwwNjJcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwyNDdcXDAwMFxcMTYwXFwwMDFcXDI1MVxcMDAwXFxcbiAgICBcXDE2MVxcMDAxXFwwNThcXDAwMVxcMDY4XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA5NFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFxcbiAgICBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDM2XFwwMDFcXDA0MVxcMDAxXFwwOTdcXDAwMFxcMTYyXFwwMDFcXFxuICAgIFxcMTYzXFwwMDFcXDExOVxcMDAwXFwwMDFcXDAwMVxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwxNjVcXDAwMVxcMDU0XFwwMDFcXDE1MlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwNlxcMDAxXFwxNjZcXDAwMVxcMTY3XFwwMDFcXDE2OFxcMDAxXFwwMTVcXDAwMVxcMTY5XFwwMDFcXFxuICAgIFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDUwXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTMzXFwwMDFcXDE3MFxcMDAxXFwxNzFcXDAwMVxcMTU0XFwwMDFcXDEzM1xcMDAxXFwxNzJcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTVcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTczXFwwMDFcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA0NVxcMDAxXFxcbiAgICBcXDE3NFxcMDAxXFwxNzVcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAxXFwxNTRcXDAwMVxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcXG4gICAgXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTIyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMTQ4XFwwMDFcXDE3N1xcMDAxXFxcbiAgICBcXDAyMFxcMDAxXFwxNzhcXDAwMVxcMDk4XFwwMDBcXDE0OFxcMDAxXFwxNzlcXDAwMVxcMTgwXFwwMDFcXDE4MVxcMDAxXFwxODJcXDAwMVxcXG4gICAgXFwxODNcXDAwMVxcMjE2XFwwMDFcXDE5M1xcMDAxXFwwOTVcXDAwMFxcMTU0XFwwMDFcXDIxNlxcMDAxXFwyMDVcXDAwMVxcMDk4XFwwMDBcXFxuICAgIFxcMjIyXFwwMDFcXDA5NVxcMDAwXFwyMDVcXDAwMVxcMjI5XFwwMDFcXDAwMVxcMDAyXFwwOTVcXDAwMFxcMjE4XFwwMDFcXDAzNlxcMDAxXFxcbiAgICBcXDIxNVxcMDAxXFwyMTVcXDAwMVxcMDAyXFwwMDJcXDIxOFxcMDAxXFwyMTVcXDAwMVxcMDk1XFwwMDBcXDAwNFxcMDAyXFwwMDVcXDAwMlxcXG4gICAgXFwyMTZcXDAwMVxcMDk1XFwwMDBcXDAwNlxcMDAyXFwwOTVcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDIxNVxcMDAxXFxcbiAgICBcXDAwN1xcMDAyXFwxMjJcXDAwMVxcMDA4XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDA5NlxcMDAwXFwwOTZcXDAwMFxcXG4gICAgXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk4XFwwMDBcXDAxMlxcMDAyXFwyMTVcXDAwMVxcMjQ3XFwwMDFcXFxuICAgIFxcMDEzXFwwMDJcXDAxNFxcMDAyXFwwOThcXDAwMFxcMDE1XFwwMDJcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMDk4XFwwMDBcXDAxNlxcMDAyXFxcbiAgICBcXDIyMFxcMDAxXFwwMTdcXDAwMlxcMjUxXFwwMDFcXDAxOFxcMDAyXFwwMTlcXDAwMlxcMDIwXFwwMDJcXDA5OFxcMDAwXFwxMjFcXDAwMVxcXG4gICAgXFwwMjFcXDAwMlxcMTk0XFwwMDFcXDA5OFxcMDAwXFwwMjJcXDAwMlxcMDk4XFwwMDBcXDA5OFxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDIzMVxcMDAxXFwwMjNcXDAwMlxcXG4gICAgXFwyMzhcXDAwMVxcMDI0XFwwMDJcXDI1MVxcMDAxXFwyMzhcXDAwMVxcMDI1XFwwMDJcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjQzXFwwMDFcXDEyNVxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwyMjRcXDAwMVxcMDI2XFwwMDJcXDE5N1xcMDAxXFwwMjdcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwMjhcXDAwMlxcMTk0XFwwMDFcXDAyOVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDAzMFxcMDAyXFwwMzFcXDAwMlxcMDMyXFwwMDJcXDIwMFxcMDAxXFwyMzFcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMjU1XFwyNTVcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5N1xcMDAxXFwxNzZcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMjU1XFwyNTVcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIyNFxcMDAxXFwyNTVcXDI1NVxcMTg1XFwwMDBcXDIwNVxcMDAxXFwxMjJcXDAwMVxcMTg1XFwwMDBcXDE4NVxcMDAwXFxcbiAgICBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFxcbiAgICBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTJcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcXG4gICAgXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTkyXFwwMDBcXFxuICAgIFxcMTkzXFwwMDFcXDI0N1xcMDAxXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOTlcXDAwMFxcMjI2XFwwMDBcXFxuICAgIFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwxOTlcXDAwMFxcMTI1XFwwMDFcXDEyOFxcMDAxXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcXG4gICAgXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwyMDRcXDAwMFxcMTk0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDBcXDIyMFxcMDAxXFwyMzhcXDAwMVxcXG4gICAgXFwyNTFcXDAwMVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyNDNcXDAwMVxcMjU1XFwyNTVcXDIwNFxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI1XFwwMDBcXDI1NVxcMjU1XFwyMjRcXDAwMVxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjA1XFwwMDBcXFxuICAgIFxcMTk3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjI4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDIyOFxcMDAwXFwyNTVcXDI1NVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFxcbiAgICBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwxODVcXDAwMFxcMjMyXFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFxcbiAgICBcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjM3XFwwMDBcXDE5OVxcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjM3XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFxcbiAgICBcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNjZcXDAwMVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwxMTJcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXFxuICAgIFxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcXG4gICAgXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDExNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExNVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTVcXDAwMVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXFxuICAgIFxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFxcbiAgICBcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXFxuICAgIFxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcXG4gICAgXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMjU1XFwyNTVcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDEyNlxcMDAxXFwxMjlcXDAwMVxcMTI2XFwwMDFcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMTI5XFwwMDFcXDEyOVxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTg0XFwwMDFcXDEzOFxcMDAxXFwxODRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxODRcXDAwMVxcMTg0XFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzOFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXFxuICAgIFxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTU2XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE5OFxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFxcbiAgICBcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcXG4gICAgXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxOThcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE5OFxcMDAxXFwxODZcXDAwMVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTk4XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDFcXDI1NVxcMjU1XFwxODdcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTg2XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXFxuICAgIFxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcXG4gICAgXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcXG4gICAgXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyMDFcXDAwMVxcMjAxXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwNFxcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjU1XFwyNTVcXDIxMFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9jaGVja19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY29kZSA9XG4gICBcIlwiO1xufVxuXG5sZXQgcmVjIHJlYWRfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE4OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgQm9vbCB0cnVlIClcblxuIyAxMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgZmFsc2UgKVxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwMzggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBgTnVsbCApXG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA0MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAxOTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXQgbmFuXG4gICAgICAgICAgICAgICAgXG4jIDE5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IGluZmluaXR5XG4gICAgICAgICAgICAgICAgXG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IG5lZ19pbmZpbml0eVxuICAgICAgICAgICAgICAgIFxuIyAyMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDc2IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAyMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgXG4jIDIxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgYFN0cmluZyAoZmluaXNoX3N0cmluZyB2IGxleGJ1ZilcbiAgICAgICAgICAgICAgICBcbiMgMjE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMjIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmIClcblxuIyAxMDkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDkzIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9uZWdhdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIyMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0IChmbG9hdF9vZl9zdHJpbmcgKGxleGVtZSBsZXhidWYpKVxuICAgICAgICAgICAgICAgICBcbiMgMjI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExMDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExMDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9pZGVudCB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSAoZmllbGRfbmFtZSwgcmVhZF9qc29uIHYgbGV4YnVmKSA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgYEFzc29jIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEzNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEzNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgIGBMaXN0IChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyNzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9qc29uIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgYFR1cGxlIChMaXN0LnJldiAhYWNjKVxuICAgICAgICAgICAgICAgICBcbiMgMjg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExNzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExNzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMjkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDI5MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbnMgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYFZhcmlhbnQgKGNvbnMsIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgICBcbiMgMzAwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDExOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDExOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDExOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTUgLT5cblxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjAzIFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjA3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjA4IFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggcmVhZF9qc29uIHYgbGV4YnVmIClcblxuIyAxMjEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjEzIFwibGliL3JlYWQubWxcIlxuICB8IDE4IC0+XG5cbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOSAtPlxuXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDEyMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdfcmVjIHYgbGV4YnVmIDU4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBCdWZmZXIuY29udGVudHMgdi5idWYgKVxuXG4jIDEyMzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTI0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjUyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIDYzXG5hbmQgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGxldCBiID0gdi5idWYgaW5cbiAgICAgICAgICAgICAgICAgICAgZiAoQnVmZmVyLmNvbnRlbnRzIGIpIDAgKEJ1ZmZlci5sZW5ndGggYikgKVxuXG4jIDEyNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgbWFwX3N0cmluZyB2IGYgbGV4YnVmIClcblxuIyAxMjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjcxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDMyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTI4MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI4MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9lc2NhcGVkX2NoYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgNjhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICBjXG5cbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbiMgMTI5NCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiBjIClcblxuIyAxMjk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjk5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxiJyApXG5cbiMgMTMwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcMDEyJyApXG5cbiMgMTMwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbicgKVxuXG4jIDEzMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDMzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHInIClcblxuIyAxMzE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzE5IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyAzMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFx0JyApXG5cbiMgMTMyMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMyNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5sZXRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIGFcblxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuIyAxMzI5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSlcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJcblxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuIyAxMzM0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbiMgMTMzOSBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuIyAxMzQ0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNCkgaW5cblxuIyAzMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB4ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeCA+PSAweEQ4MDAgJiYgeCA8PSAweERCRkYgdGhlblxuICAgICAgICAgICAgIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB1dGY4X29mX2NvZGUgdi5idWYgeFxuICAgICAgICAgKVxuXG4jIDEzNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDM0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgZXNjYXBlIHNlcXVlbmNlXCIgdiBsZXhidWYgKVxuXG4jIDEzNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDM0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc3Vycm9nYXRlX3BhaXIgdiB4IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgODJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5sZXRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBhXG5cbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM3OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG4jIDEzODMgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAzKVxuYW5kXG5cbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjXG5cbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbiMgMTM4OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDQpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkXG5cbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM5MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDUpIGluXG5cbiMgMzUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeSA9XG4gICAgICAgICAgICAgKGhleCBhIGxzbCAxMikgbG9yIChoZXggYiBsc2wgOCkgbG9yIChoZXggYyBsc2wgNCkgbG9yIGhleCBkXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGlmIHkgPj0gMHhEQzAwICYmIHkgPD0gMHhERkZGIHRoZW5cbiAgICAgICAgICAgICB1dGY4X29mX3N1cnJvZ2F0ZV9wYWlyIHYuYnVmIHggeVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgbG9uZ19lcnJvciBcIkludmFsaWQgbG93IHN1cnJvZ2F0ZSBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCJcbiAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICApXG5cbiMgMTQwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiTWlzc2luZyBlc2NhcGUgc2VxdWVuY2UgcmVwcmVzZW50aW5nIGxvdyBzdXJyb2dhdGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNvZGUgcG9pbnQgYmV5b25kIFUrRkZGRlwiIHYgbGV4YnVmIClcblxuIyAxNDExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDEyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzNjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE0MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3Vycm9nYXRlX3BhaXJfcmVjIHYgeCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgOTFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzNjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCBsZW4gPSBsZXhidWYubGV4X2N1cnJfcG9zIC0gbGV4YnVmLmxleF9zdGFydF9wb3MgaW5cbiAgICAgICAgICAgbGV0IHMgPSBCeXRlcy5jcmVhdGUgKGxlbisxKSBpblxuICAgICAgICAgICBCeXRlcy5zZXQgcyAwICdcIic7XG4gICAgICAgICAgIEJ5dGVzLmJsaXQgbGV4YnVmLmxleF9idWZmZXIgbGV4YnVmLmxleF9zdGFydF9wb3MgcyAxIGxlbjtcbiAgICAgICAgICAgQnl0ZXMudG9fc3RyaW5nIHNcbiAgICAgICAgIClcblxuIyAxNDMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDE0MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgMTAyXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM3NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPSByZWFkX2pzb24gdiBsZXhidWYgaW5cbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZjtcbiAgICAgICAgICAgU29tZSB4IClcblxuIyAxNDU4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDU5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIE5vbmUgKVxuXG4jIDE0NjMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDM4MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiAxMDdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2x0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDE0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIDExMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM5MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTUxMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUxMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29tbWEgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgMTE1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb21tYV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzk2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIDExOVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYEVkZ3lfYnJhY2tldCApXG5cbiMgMTU1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGBEb3VibGVfcXVvdGUgKVxuXG4jIDE1NTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgU3F1YXJlX2JyYWNrZXQgKVxuXG4jIDE1NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzwnLCAnXFxcIicgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTY4IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTU3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIDEyNVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJVbnRlcm1pbmF0ZWQgY29tbWVudFwiIHYgbGV4YnVmIClcblxuIyAxNTg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTkwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTk1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmIClcblxuIyAxNTk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjAwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2VvZiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiAxMzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAxNjE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9lb2ZfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiAxMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjI4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjI5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTYzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggcmVhZF9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMTY0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQyNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDE2NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgMTQwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdudWxsJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVsbF9pZl9wb3NzaWJsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIDE0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTY4MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bGxfaWZfcG9zc2libGVfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Jvb2wgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiAxNTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjk5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzAwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzEwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA0NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE3MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3RydWUnIG9yICdmYWxzZScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3MTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzI1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ib29sX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIDE3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfcG9zaXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTczOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTczOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggSW50X292ZXJmbG93IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50IG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50X29mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnRlZ2VyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTc2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnRlZ2VyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNzY4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY5IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTc3MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc3NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQzMiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiAxODVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDMyLm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzg4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDMyLm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQzMiBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4MDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50MzIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4MTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODE1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODE2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQzMl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaW50NjQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgMTkyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIHRyeSBJbnQ2NC5vZl9zdHJpbmcgKExleGluZy5sZXhlbWUgbGV4YnVmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxleGVyX2Vycm9yIFwiSW50MzIgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTgyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnQ2NC5vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYW4gaW50NjQgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxODQ3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODQ4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludDY0IGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxODUyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODUzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA1MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTg1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaW50NjRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bWJlciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgMTk5XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBuYW4gKVxuXG4jIDE4NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBpbmZpbml0eSApXG5cbiMgMTg3NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5lZ19pbmZpbml0eSApXG5cbiMgMTg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZsb2F0X29mX3N0cmluZyAobGV4ZW1lIGxleGJ1ZikgKVxuXG4jIDE4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGZsb2F0IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3Jlcy4gKilcbiAgICAgICAgICAgICAgICAgICAgZmxvYXRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiTmFOXCIgLT4gbmFuXG4gICAgICAgICAgICAgICAgICAgICAgfCBcIkluZmluaXR5XCIgLT4gaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IFwiLUluZmluaXR5XCIgLT4gbmVnX2luZmluaXR5XG4gICAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRXhwZWN0ZWQgYSBudW1iZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhIG51bWJlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICApXG5cbiMgMTkwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBudW1iZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDUzOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udW1iZXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3N0cmluZyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgMjMzXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zdHJpbmdfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxOTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICdcXFwiJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgMjM3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQ4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxubGV0XG5cbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBzXG5cbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbiMgMTk1OCBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBzIClcblxuIyAxOTYyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTYzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTY4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTk3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBtYXBfaWRlbnQgdiBmIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgMjQyXG5hbmQgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDE5ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBtYXBfbGV4ZW1lIGYgbGV4YnVmIClcblxuIyAxOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTk2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9zZXF1ZW5jZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI0N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwMjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDMyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjAzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc2VxdWVuY2VfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIDI1MVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIwNjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMDY3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDY4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjA3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGlzdF9yZXZfcmVjIHJlYWRfY2VsbCB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hcnJheV9lbmQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgMjU1XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMDg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDg1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIwODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwOTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgMjU3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjEwMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMjEwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjEwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMTExIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTEyIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjExNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjExNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZSByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIDI2MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfcmVjIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNjEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDYxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBsZXQgcG9zID0gcmVmIDAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBhY2MgPSByZWYgaW5pdF9hY2MgaW5cbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFwb3MgIWFjYyB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmNyIHBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgICAgIFxuIyA2MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjE1MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxNTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTYxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiAyNjZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxNzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjE3NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kMiB2IHN0ZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgMjY4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWZcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMTkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgcmFpc2UgRW5kX29mX3R1cGxlXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgb3IgJycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMDAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMDEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgMjcxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjIxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjI4IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjIzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9zZXAyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiAyNzZcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDIyNDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIyNTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiAyODJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2Fic3RyYWN0X2ZpZWxkc19yZWMgcmVhZF9rZXkgcmVhZF9maWVsZCBpbml0X2FjYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfa2V5IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfZmllbGQgIWFjYyBmaWVsZF9uYW1lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAhYWNjXG4gICAgICAgICAgICAgKVxuXG4jIDIzMDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ3snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzA5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzEwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjMxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xjdXJsIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIDI4NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGN1cmxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjMyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgMjkwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiAyOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDIzNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIDI5N1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjM5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzOTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzOTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHN0YXJ0X2FueV90dXBsZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdHVwbGVfcmVjIHYgbGV4YnVmIDMwMVxuYW5kIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZhbHNlIClcblxuIyAyNDE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDE1IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMjQxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKCcgb3IgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDI0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDI1IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbHBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIDMwNlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDQxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ0NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ0NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JwYXIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiAzMTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9ycGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9sYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIDMxNFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0ODUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0ODYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1snIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDkxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbGJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9yYnIgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIDMxOFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjUxNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUxOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfcmJyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc2tpcF9qc29uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfanNvbl9yZWMgdiBsZXhidWYgMzIyXG5hbmQgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTQwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NDQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTU1IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNTU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTYwIFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNzU4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTcwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjU5NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU5NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3ODQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTEgLT5cblxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgNzk5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDgwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIFxuIyA4MTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYzNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYzNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMiAtPlxuXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDgyOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjUxIFwibGliL3JlYWQubWxcIlxuICB8IDEzIC0+XG5cbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjU1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjU2IFwibGliL3JlYWQubWxcIlxuICB8IDE0IC0+XG5cbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY2NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY2NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNiAtPlxuXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjY3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNyAtPlxuXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI2NzUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NzYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCB0b2tlblwiIHYgbGV4YnVmIClcblxuIyAyNjgwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjgxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgMzc4XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAyNjkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA4NDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI2OTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjcwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9za2lwX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgMzg5XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIHJlYWRfZ3QgdiBsZXhidWYgKVxuXG4jIDI3MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI3MjEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDg1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI3MjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3MjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjczMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjczMiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9za2lwX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2lkZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIDM5NFxuYW5kIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI3NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDg1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjc0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBzdHJpbmcgb3IgaWRlbnRpZmllciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI3NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIDM5OVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA4NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI3NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI3NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ3snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX29iamVjdCAtPlxuICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4OTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdbJztcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9lbmQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDkxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA5MTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKCc7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgXG4jIDkzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODQ1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODQ2IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzwnO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgIFxuIyA5NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMjg2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODY2IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgICAgICAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODczIFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZiApXG5cbiMgMjg3OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg4MCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODg0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODg1IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjg4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI4OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA0NTBcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1wiJztcbiAgICAgICAgICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWZcbiAgICAgICAgIClcblxuIyAyOTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTA5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHN0cmluZyBsaXRlcmFsXCIgdiBsZXhidWYgKVxuXG4jIDI5MTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk2NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjkxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgNDYxXG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOic7XG4gICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9ndCB2IGxleGJ1ZiApXG5cbiMgMjkzMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkzNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAyOTM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgb3IgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTQ0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5NzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI5NDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiA0NjZcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBmaW5pc2hfYnVmZmVyX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjk2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmIClcblxuIyAyOTY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyOTcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTcxIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5ODAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfc3BhY2VfcmVjIHYgbGV4YnVmIDQ3MVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIi8qXCI7XG4gICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMjk5OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk5OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMDYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMDcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAzMDEzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAxOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAxOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9vYmplY3RfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiA0NzhcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7XG4gICAgICByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDMzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzAzNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAzOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDQ4MFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDUwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ30nOyByYWlzZSBFbmRfb2Zfb2JqZWN0IClcblxuIyAzMDU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDU1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICd9JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzA1OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzA2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3Rfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiA0ODVcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgNDg3XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzA5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICddJzsgcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAzMDk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICddJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIDQ5MlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJyknO1xuICAgICAgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTIzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMzEyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzEyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIDQ5NFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMxMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7IHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMzE0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2NvbG9uIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9jb2xvbl9yZWMgdiBsZXhidWYgNDk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJzonIClcblxuIyAzMTY2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTY3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTcxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTcyIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTc2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTc3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2d0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9ndF9yZWMgdiBsZXhidWYgNTAzXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc+JyApXG5cbiMgMzE4OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE4OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxOTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTk5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgNTA3XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9zdHJpbmcgdi5idWYgXCIqL1wiIClcblxuIyAzMjEwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjExIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDMyMTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xcbic7XG4gICAgICAgICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgICAgICAgIGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmOyBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDMyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBqdW5rIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgNTEzXG5hbmQgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5sZXhlbWUgbGV4YnVmIClcblxuIyAzMjM5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjQwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfanVua19yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cblxuIyAxMDU1IFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDEwNTYgXCJsaWIvcmVhZC5tbGxcIlxuICBsZXQgXyA9IChyZWFkX2pzb24gOiBsZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHQpXG5cbiAgbGV0IHJlYWRfdCA9IHJlYWRfanNvblxuXG4gIGxldCAoKSA9XG4gICAgcmVhZF9qdW5rIDo9IGp1bmtcblxuICBsZXQgcmVhZF9pbnQ4IHYgbGV4YnVmID1cbiAgICBsZXQgbiA9IHJlYWRfaW50IHYgbGV4YnVmIGluXG4gICAgaWYgbiA8IDAgfHwgbiA+IDI1NSB0aGVuXG4gICAgICBsZXhlcl9lcnJvciBcIkludDggb3ZlcmZsb3dcIiB2IGxleGJ1ZlxuICAgIGVsc2VcbiAgICAgIGNoYXJfb2ZfaW50IG5cblxuICBsZXQgcmVhZF9saXN0IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgTGlzdC5yZXYgKHJlYWRfbGlzdF9yZXYgcmVhZF9jZWxsIHYgbGV4YnVmKVxuXG4gIGxldCBhcnJheV9vZl9yZXZfbGlzdCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgW10gLT4gW3wgfF1cbiAgICAgIHwgeCA6OiB0bCAtPlxuICAgICAgICAgIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gICAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgICAgbGV0IHIgPSByZWYgdGwgaW5cbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDIgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgICByIDo9IExpc3QudGwgIXJcbiAgICAgICAgICBkb25lO1xuICAgICAgICAgIGFcblxuICBsZXQgcmVhZF9hcnJheSByZWFkX2NlbGwgdiBsZXhidWYgPVxuICAgIGxldCBsID0gcmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYgaW5cbiAgICBhcnJheV9vZl9yZXZfbGlzdCBsXG5cbiAgKCogUmVhZCBhIEpTT04gb2JqZWN0LCByZWFkaW5nIHRoZSBrZXlzIGludG8gT0NhbWwgc3RyaW5nc1xuICAgICAocHJvdmlkZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkpICopXG4gIGxldCByZWFkX2ZpZWxkcyByZWFkX2ZpZWxkIGluaXRfYWNjIHYgPVxuICAgIHJlYWRfYWJzdHJhY3RfZmllbGRzIHJlYWRfaWRlbnQgcmVhZF9maWVsZCBpbml0X2FjYyB2XG5cbiAgbGV0IGZpbmlzaCB2IGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICBpZiBub3QgKHJlYWRfZW9mIGxleGJ1ZikgdGhlblxuICAgICAgbG9uZ19lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWU6XCIgdiBsZXhidWZcblxuICBsZXQgaW5pdF9sZXhlciA9IGluaXRfbGV4ZXJcblxuICBsZXQgZnJvbV9sZXhidWYgdiA/KHN0cmVhbSA9IGZhbHNlKSBsZXhidWYgPVxuICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiByZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBFbmRfb2ZfaW5wdXRcbiAgICAgIGVsc2VcbiAgICAgICAgcmVhZF9qc29uIHYgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIHYgbGV4YnVmO1xuXG4gICAgeFxuXG5cbiAgbGV0IGZyb21fc3RyaW5nID9idWYgP2ZuYW1lID9sbnVtIHMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBzIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIGljID1cbiAgICB0cnlcbiAgICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICAgIGZyb21fbGV4YnVmIHYgbGV4YnVmXG4gICAgd2l0aCBFbmRfb2ZfaW5wdXQgLT5cbiAgICAgIGpzb25fZXJyb3IgXCJCbGFuayBpbnB1dCBkYXRhXCJcblxuICBsZXQgZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIHRyeVxuICAgICAgbGV0IHggPSBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgaW5cbiAgICAgIGNsb3NlX2luIGljO1xuICAgICAgeFxuICAgIHdpdGggZSAtPlxuICAgICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgICByYWlzZSBlXG5cbiAgZXhjZXB0aW9uIEZpbmFsbHkgb2YgZXhuICogZXhuXG5cbiAgbGV0IHNlcV9mcm9tX2xleGJ1ZiB2ID8oZmluID0gZnVuICgpIC0+ICgpKSBsZXhidWYgPVxuICAgIGxldCBzdHJlYW0gPSBTb21lIHRydWUgaW5cbiAgICBsZXQgcmVjIGYgKCkgPVxuICAgICAgdHJ5IFNlcS5Db25zIChmcm9tX2xleGJ1ZiB2ID9zdHJlYW0gbGV4YnVmLCBmKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgU2VxLk5pbFxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggZmluX2UgLT4gcmFpc2UgKEZpbmFsbHkgKGUsIGZpbl9lKSkpO1xuICAgICAgICAgICAgcmFpc2UgZVxuICAgIGluXG4gICAgZlxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG4gIGxldCBzZXFfZnJvbV9jaGFubmVsID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgP2ZpbiBsZXhidWZcblxuICBsZXQgc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiB2IH5maW4gbGV4YnVmXG5cbiAgdHlwZSBqc29uX2xpbmUgPSBbIGBKc29uIG9mIHQgfCBgRXhuIG9mIGV4biBdXG5cbiAgbGV0IGxpbmVzZXFfZnJvbV9jaGFubmVsXG4gICAgICA/YnVmID8oZmluID0gZnVuICgpIC0+ICgpKSA/Zm5hbWUgP2xudW06KGxudW0wID0gMSkgaWMgPVxuICAgIGxldCBidWYgPVxuICAgICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgKEJ1ZmZlci5jcmVhdGUgMjU2KVxuICAgICAgICB8IFNvbWUgXyAtPiBidWZcbiAgICBpblxuICAgIGxldCByZWMgZiBsbnVtID0gZnVuICgpIC0+XG4gICAgICB0cnlcbiAgICAgICAgbGV0IGxpbmUgPSBpbnB1dF9saW5lIGljIGluXG4gICAgICAgIFNlcS5Db25zIChgSnNvbiAoZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgfmxudW0gbGluZSksIGYgKGxudW0gKyAxKSlcbiAgICAgIHdpdGhcbiAgICAgICAgICBFbmRfb2ZfZmlsZSAtPiBmaW4gKCk7IFNlcS5OaWxcbiAgICAgICAgfCBlIC0+IFNlcS5Db25zIChgRXhuIGUsIGYgKGxudW0gKyAxKSlcbiAgICBpblxuICAgIGYgbG51bTBcblxuICBsZXQgbGluZXNlcV9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luIGljIGluXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFNvbWUgZmlsZVxuICAgICAgICB8IHggLT4geFxuICAgIGluXG4gICAgbGluZXNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluID9mbmFtZSA/bG51bSBpY1xuXG4gIGxldCBwcmV0dGlmeSA/c3RkIHMgPVxuICAgIHByZXR0eV90b19zdHJpbmcgP3N0ZCAoZnJvbV9zdHJpbmcgcylcblxuICBsZXQgY29tcGFjdCA/c3RkIHMgPVxuICAgIHRvX3N0cmluZyAoZnJvbV9zdHJpbmcgcylcblxuXG4jIDM0MDggXCJsaWIvcmVhZC5tbFwiXG4jIDY5IFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFV0aWwgPVxuc3RydWN0XG4jIDEgXCJ1dGlsLm1sXCJcbmV4Y2VwdGlvbiBUeXBlX2Vycm9yIG9mIHN0cmluZyAqIHRcblxubGV0IHR5cGVvZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIF8gLT4gXCJvYmplY3RcIlxuICB8IGBCb29sIF8gLT4gXCJib29sXCJcbiAgfCBgRmxvYXQgXyAtPiBcImZsb2F0XCJcbiAgXG4jIDggXCJ1dGlsLm1sXCJcbiAgfCBgSW50IF8gLT4gXCJpbnRcIlxuICBcbiMgMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICBcbiMgMTggXCJ1dGlsLm1sXCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIFxuIyA3MCBcInV0aWwubWxcIlxuICB8IGBJbnQgaSAtPiBmbG9hdCBpXG4gIFxuIyA3MyBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IGZcbiAgXG4jIDc1IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgbnVtYmVyLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlcl9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgNzkgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gU29tZSAoZmxvYXQgaSlcbiAgXG4jIDgyIFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIFxuIyA4NCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBudW1iZXIgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19mbG9hdCA9IGZ1bmN0aW9uXG4gIFxuIyA4OSBcInV0aWwubWxcIlxuICB8IGBGbG9hdCBmIC0+IGZcbiAgXG4jIDkxIFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDk1IFwidXRpbC5tbFwiXG4gIHwgYEZsb2F0IGYgLT4gU29tZSBmXG4gIFxuIyA5NyBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBmbG9hdCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2ludCA9IGZ1bmN0aW9uXG4gIFxuIyAxMDIgXCJ1dGlsLm1sXCJcbiAgfCBgSW50IGkgLT4gaVxuICBcbiMgMTA0IFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgaW50LCBnb3QgXCIganNcblxubGV0IHRvX2ludF9vcHRpb24gPSBmdW5jdGlvblxuICBcbiMgMTA4IFwidXRpbC5tbFwiXG4gIHwgYEludCBpIC0+IFNvbWUgaVxuICBcbiMgMTEwIFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2xpc3QgPSBmdW5jdGlvbiBgTGlzdCBsIC0+IGwgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBhcnJheSwgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmcgPSBmdW5jdGlvblxuICBcbiMgMTE3IFwidXRpbC5tbFwiXG4gIHwgYFN0cmluZyBzIC0+IHNcbiAgXG4jIDExOSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDEyMyBcInV0aWwubWxcIlxuICB8IGBTdHJpbmcgcyAtPiBTb21lIHNcbiAgXG4jIDEyNSBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgXG4jIDE3MiBcInV0aWwubWxcIlxuICAgICAgfCAgYEludCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE3NCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxODEgXCJ1dGlsLm1sXCJcbiAgICAgIGBGbG9hdCB4IC0+IFNvbWUgeFxuICAgICAgXG4jIDE4MyBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgKSBsXG5cbmxldCBmaWx0ZXJfbnVtYmVyIGwgPVxuICBmaWx0ZXJfbWFwIChcbiAgICBmdW5jdGlvblxuICAgICAgICBcbiMgMTkwIFwidXRpbC5tbFwiXG4gICAgICAgIGBJbnQgeCAtPiBTb21lIChmbG9hdCB4KVxuICAgICAgXG4jIDE5MyBcInV0aWwubWxcIlxuICAgICAgfCBgRmxvYXQgeCAtPiBTb21lIHhcbiAgICAgIFxuIyAxOTUgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgICAgXG4jIDIwMiBcInV0aWwubWxcIlxuICAgICAgICBgU3RyaW5nIHggLT4gU29tZSB4XG4gICAgICBcbiMgMjA0IFwidXRpbC5tbFwiXG4gICAgICB8IF8gLT4gTm9uZVxuICApIGxcblxubGV0IGtleXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoa2V5LCBfKSAtPiBrZXkpXG5cbmxldCB2YWx1ZXMgbyA9XG4gIHRvX2Fzc29jIG8gfD4gTGlzdC5tYXAgKGZ1biAoXywgdmFsdWUpIC0+IHZhbHVlKVxuXG5sZXQgY29tYmluZSAoZmlyc3QgOiB0KSAoc2Vjb25kIDogdCkgPVxuICBtYXRjaCAoZmlyc3QsIHNlY29uZCkgd2l0aFxuICB8IGBBc3NvYyBhLCBgQXNzb2MgYiAtPiAoYEFzc29jIChhIEAgYikgOiB0KVxuICB8IGEsIGIgLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJFeHBlY3RlZCB0d28gb2JqZWN0cywgY2hlY2sgaW5wdXRzXCIpXG4jIDcyIFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDc5IFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG5cbm1vZHVsZSBSYXcgPVxuc3RydWN0XG4jIDEgXCJ0eXBlLm1sXCJcbigqKiB7MyBUeXBlIG9mIHRoZSBKU09OIHRyZWV9ICopXG5cbnR5cGUgdCA9XG4gICAgW1xuICAgIHwgYE51bGxcbiAgICB8IGBCb29sIG9mIGJvb2xcbiAgICBcbiMgMTEgXCJ0eXBlLm1sXCJcbiAgICB8IGBJbnRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDE3IFwidHlwZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgb2Ygc3RyaW5nXG4gICAgXG4jIDIzIFwidHlwZS5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IG9mIHN0cmluZ1xuICAgIFxuIyAyNSBcInR5cGUubWxcIlxuICAgIHwgYEFzc29jIG9mIChzdHJpbmcgKiB0KSBsaXN0XG4gICAgfCBgTGlzdCBvZiB0IGxpc3RcbiAgICBcbiMgMjggXCJ0eXBlLm1sXCJcbiAgICB8IGBUdXBsZSBvZiB0IGxpc3RcbiAgICBcbiMgMzEgXCJ0eXBlLm1sXCJcbiAgICB8IGBWYXJpYW50IG9mIChzdHJpbmcgKiB0IG9wdGlvbilcbiAgICBcbiMgMzMgXCJ0eXBlLm1sXCJcbiAgICBdXG4oKipcbkFsbCBwb3NzaWJsZSBjYXNlcyBkZWZpbmVkIGluIFlvanNvbjpcbi0gYE51bGw6IEpTT04gbnVsbFxuLSBgQm9vbCBvZiBib29sOiBKU09OIGJvb2xlYW5cbi0gYEludCBvZiBpbnQ6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudC5cbi0gYEludGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyIHdpdGhvdXQgZGVjaW1hbCBwb2ludCBvciBleHBvbmVudCxcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYEZsb2F0IG9mIGZsb2F0OiBKU09OIG51bWJlciwgSW5maW5pdHksIC1JbmZpbml0eSBvciBOYU4uXG4tIGBGbG9hdGxpdCBvZiBzdHJpbmc6IEpTT04gbnVtYmVyLCBJbmZpbml0eSwgLUluZmluaXR5IG9yIE5hTixcblx0ICAgIHByZXNlcnZlZCBhcyBhIHN0cmluZy5cbi0gYFN0cmluZyBvZiBzdHJpbmc6IEpTT04gc3RyaW5nLiBCeXRlcyBpbiB0aGUgcmFuZ2UgMTI4LTI1NSBhcmUgcHJlc2VydmVkXG5cdCAgICBhcy1pcyB3aXRob3V0IGVuY29kaW5nIHZhbGlkYXRpb24gZm9yIGJvdGggcmVhZGluZ1xuXHQgICAgYW5kIHdyaXRpbmcuXG4tIGBTdHJpbmdsaXQgb2Ygc3RyaW5nOiBKU09OIHN0cmluZyBsaXRlcmFsIGluY2x1ZGluZyB0aGUgZG91YmxlIHF1b3Rlcy5cbi0gYEFzc29jIG9mIChzdHJpbmcgKiBqc29uKSBsaXN0OiBKU09OIG9iamVjdC5cbi0gYExpc3Qgb2YganNvbiBsaXN0OiBKU09OIGFycmF5LlxuLSBgVHVwbGUgb2YganNvbiBsaXN0OiBUdXBsZSAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWyhcImFiY1wiLCAxMjMpXS5cbi0gYFZhcmlhbnQgb2YgKHN0cmluZyAqIGpzb24gb3B0aW9uKTogVmFyaWFudCAobm9uLXN0YW5kYXJkIGV4dGVuc2lvbiBvZiBKU09OKS5cblx0ICAgIFN5bnRheDogWzxcIkZvb1wiPl0gb3IgWzxcIkJhclwiOjEyMz5dLlxuKilcblxuKCpcbiAgTm90ZSB0byBhZHZlbnR1cmVyczogb2NhbWxkb2MgZG9lcyBub3Qgc3VwcG9ydCBpbmxpbmUgY29tbWVudHNcbiAgb24gZWFjaCBwb2x5bW9ycGhpYyB2YXJpYW50LCBhbmQgY3BwbyBkb2Vzbid0IGFsbG93IHRvIGNvbmNhdGVuYXRlXG4gIGNvbW1lbnRzLCBzbyBpdCB3b3VsZCBiZSBjb21wbGljYXRlZCB0byBkb2N1bWVudCBvbmx5IHRoZVxuICBjYXNlcyB0aGF0IGFyZSBwcmVzZXJ2ZWQgYnkgY3BwbyBpbiB0aGUgdHlwZSBkZWZpbml0aW9uLlxuKilcbiMgMSBcIndyaXRlLm1sXCJcbigqIGluY2x1ZGVkOiB0eXBlLm1sICopXG5cbmxldCBoZXggbiA9XG4gIENoYXIuY2hyIChcbiAgICBpZiBuIDwgMTAgdGhlbiBuICsgNDhcbiAgICBlbHNlIG4gKyA4N1xuICApXG5cbmxldCB3cml0ZV9zcGVjaWFsIHNyYyBzdGFydCBzdG9wIG9iIHN0ciA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdHI7XG4gIHN0YXJ0IDo9IHN0b3AgKyAxXG5cbmxldCB3cml0ZV9jb250cm9sX2NoYXIgc3JjIHN0YXJ0IHN0b3Agb2IgYyA9XG4gIEJ1ZmZlci5hZGRfc3Vic3RyaW5nIG9iIHNyYyAhc3RhcnQgKHN0b3AgLSAhc3RhcnQpO1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXFx1MDBcIjtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iIChoZXggKENoYXIuY29kZSBjIGxzciA0KSk7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAoaGV4IChDaGFyLmNvZGUgYyBsYW5kIDB4ZikpO1xuICBzdGFydCA6PSBzdG9wICsgMVxuXG5sZXQgZmluaXNoX3N0cmluZyBzcmMgc3RhcnQgb2IgPVxuICB0cnlcbiAgICBCdWZmZXIuYWRkX3N1YnN0cmluZyBvYiBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydClcbiAgd2l0aCBleGMgLT5cbiAgICBQcmludGYuZXByaW50ZiBcInNyYz0lUyBzdGFydD0laSBsZW49JWlcXG4lIVwiXG4gICAgICBzcmMgIXN0YXJ0IChTdHJpbmcubGVuZ3RoIHNyYyAtICFzdGFydCk7XG4gICAgcmFpc2UgZXhjXG5cbmxldCB3cml0ZV9zdHJpbmdfYm9keSBvYiBzID1cbiAgbGV0IHN0YXJ0ID0gcmVmIDAgaW5cbiAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICBtYXRjaCBzLltpXSB3aXRoXG4gICAgICAgICdcIicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcXFxcIlwiXG4gICAgICB8ICdcXFxcJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxcXFxcXCJcbiAgICAgIHwgJ1xcYicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcYlwiXG4gICAgICB8ICdcXDAxMicgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcZlwiXG4gICAgICB8ICdcXG4nIC0+IHdyaXRlX3NwZWNpYWwgcyBzdGFydCBpIG9iIFwiXFxcXG5cIlxuICAgICAgfCAnXFxyJyAtPiB3cml0ZV9zcGVjaWFsIHMgc3RhcnQgaSBvYiBcIlxcXFxyXCJcbiAgICAgIHwgJ1xcdCcgLT4gd3JpdGVfc3BlY2lhbCBzIHN0YXJ0IGkgb2IgXCJcXFxcdFwiXG4gICAgICB8ICdcXHgwMCcuLidcXHgxRidcbiAgICAgIHwgJ1xceDdGJyBhcyBjIC0+IHdyaXRlX2NvbnRyb2xfY2hhciBzIHN0YXJ0IGkgb2IgY1xuICAgICAgfCBfIC0+ICgpXG4gIGRvbmU7XG4gIGZpbmlzaF9zdHJpbmcgcyBzdGFydCBvYlxuXG5sZXQgd3JpdGVfc3RyaW5nIG9iIHMgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfc3RyaW5nX2JvZHkgb2IgcztcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IGpzb25fc3RyaW5nX29mX3N0cmluZyBzID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAxMCBpblxuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCB0ZXN0X3N0cmluZyAoKSA9XG4gIGxldCBzID0gQnl0ZXMuY3JlYXRlIDI1NiBpblxuICBmb3IgaSA9IDAgdG8gMjU1IGRvXG4gICAgQnl0ZXMuc2V0IHMgaSAoQ2hhci5jaHIgaSlcbiAgZG9uZTtcbiAganNvbl9zdHJpbmdfb2Zfc3RyaW5nIChCeXRlcy50b19zdHJpbmcgcylcblxuXG5sZXQgd3JpdGVfbnVsbCBvYiAoKSA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwibnVsbFwiXG5cbmxldCB3cml0ZV9ib29sIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCB0aGVuIFwidHJ1ZVwiIGVsc2UgXCJmYWxzZVwiKVxuXG5cbmxldCBtYXhfZGlnaXRzID1cbiAgbWF4XG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWF4X2ludCkpXG4gICAgKFN0cmluZy5sZW5ndGggKHN0cmluZ19vZl9pbnQgbWluX2ludCkpXG5cbmxldCBkZWMgbiA9XG4gIENoYXIuY2hyIChuICsgNDgpXG5cbmxldCByZWMgd3JpdGVfZGlnaXRzIHMgeCA9XG4gIGlmIHggPSAwIHRoZW4gKClcbiAgZWxzZVxuICAgIGxldCBkID0geCBtb2QgMTAgaW5cbiAgICB3cml0ZV9kaWdpdHMgcyAoeCAvIDEwKTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgcyAoZGVjIChhYnMgZCkpXG5cbmxldCB3cml0ZV9pbnQgb2IgeCA9XG4gIGlmIHggPiAwIHRoZW5cbiAgICB3cml0ZV9kaWdpdHMgb2IgeFxuICBlbHNlIGlmIHggPCAwIHRoZW4gKFxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLSc7XG4gICAgd3JpdGVfZGlnaXRzIG9iIHhcbiAgKVxuICBlbHNlXG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICcwJ1xuXG5cbmxldCBqc29uX3N0cmluZ19vZl9pbnQgaSA9XG4gIHN0cmluZ19vZl9pbnQgaVxuXG5cbigqXG4gIEVuc3VyZSB0aGF0IHRoZSBmbG9hdCBpcyBub3QgcHJpbnRlZCBhcyBhbiBpbnQuXG4gIFRoaXMgaXMgbm90IHJlcXVpcmVkIGJ5IEpTT04sIGJ1dCB1c2VmdWwgaW4gb3JkZXIgdG8gZ3VhcmFudGVlXG4gIHJldmVyc2liaWxpdHkuXG4qKVxubGV0IGZsb2F0X25lZWRzX3BlcmlvZCBzID1cbiAgdHJ5XG4gICAgZm9yIGkgPSAwIHRvIFN0cmluZy5sZW5ndGggcyAtIDEgZG9cbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgICAgICAnMCcuLic5JyB8ICctJyAtPiAoKVxuICAgICAgICB8IF8gLT4gcmFpc2UgRXhpdFxuICAgIGRvbmU7XG4gICAgdHJ1ZVxuICB3aXRoIEV4aXQgLT5cbiAgICBmYWxzZVxuXG4oKlxuICBHdWFyYW50ZWVzIHRoYXQgYSBzdWZmaWNpZW50IG51bWJlciBvZiBkaWdpdHMgYXJlIHByaW50ZWQgaW4gb3JkZXIgdG8gYWxsb3dcbiAgcmV2ZXJzaWJpbGl0eS5cbiopXG5sZXQgd3JpdGVfZmxvYXQgb2IgeCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIEZQX25hbiAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJOYU5cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoaWYgeCA+IDAuIHRoZW4gXCJJbmZpbml0eVwiIGVsc2UgXCItSW5maW5pdHlcIilcbiAgfCBfIC0+XG4gICAgICBsZXQgczEgPSBQcmludGYuc3ByaW50ZiBcIiUuMTZnXCIgeCBpblxuICAgICAgbGV0IHMgPVxuICAgICAgICBpZiBmbG9hdF9vZl9zdHJpbmcgczEgPSB4IHRoZW4gczFcbiAgICAgICAgZWxzZSBQcmludGYuc3ByaW50ZiBcIiUuMTdnXCIgeFxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHM7XG4gICAgICBpZiBmbG9hdF9uZWVkc19wZXJpb2QgcyB0aGVuXG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG5sZXQgd3JpdGVfbm9ybWFsX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbGV0IG9wZW4gUHJpbnRmIGluXG4gIGxldCBzID1cbiAgICBtYXRjaCBzaWduaWZpY2FudF9maWd1cmVzIHdpdGhcbiAgICAgICAgMSAtPiBzcHJpbnRmIFwiJS4xZ1wiIHhcbiAgICAgIHwgMiAtPiBzcHJpbnRmIFwiJS4yZ1wiIHhcbiAgICAgIHwgMyAtPiBzcHJpbnRmIFwiJS4zZ1wiIHhcbiAgICAgIHwgNCAtPiBzcHJpbnRmIFwiJS40Z1wiIHhcbiAgICAgIHwgNSAtPiBzcHJpbnRmIFwiJS41Z1wiIHhcbiAgICAgIHwgNiAtPiBzcHJpbnRmIFwiJS42Z1wiIHhcbiAgICAgIHwgNyAtPiBzcHJpbnRmIFwiJS43Z1wiIHhcbiAgICAgIHwgOCAtPiBzcHJpbnRmIFwiJS44Z1wiIHhcbiAgICAgIHwgOSAtPiBzcHJpbnRmIFwiJS45Z1wiIHhcbiAgICAgIHwgMTAgLT4gc3ByaW50ZiBcIiUuMTBnXCIgeFxuICAgICAgfCAxMSAtPiBzcHJpbnRmIFwiJS4xMWdcIiB4XG4gICAgICB8IDEyIC0+IHNwcmludGYgXCIlLjEyZ1wiIHhcbiAgICAgIHwgMTMgLT4gc3ByaW50ZiBcIiUuMTNnXCIgeFxuICAgICAgfCAxNCAtPiBzcHJpbnRmIFwiJS4xNGdcIiB4XG4gICAgICB8IDE1IC0+IHNwcmludGYgXCIlLjE1Z1wiIHhcbiAgICAgIHwgMTYgLT4gc3ByaW50ZiBcIiUuMTZnXCIgeFxuICAgICAgfCBfIC0+IHNwcmludGYgXCIlLjE3Z1wiIHhcbiAgaW5cbiAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgcztcbiAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiLjBcIlxuXG4oKiB1c2VkIGJ5IGF0ZGdlbiAqKVxubGV0IHdyaXRlX2Zsb2F0X3ByZWMgc2lnbmlmaWNhbnRfZmlndXJlcyBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIk5hTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChpZiB4ID4gMC4gdGhlbiBcIkluZmluaXR5XCIgZWxzZSBcIi1JbmZpbml0eVwiKVxuICB8IF8gLT5cbiAgICAgIHdyaXRlX25vcm1hbF9mbG9hdF9wcmVjIHNpZ25pZmljYW50X2ZpZ3VyZXMgb2IgeFxuXG5sZXQganNvbl9zdHJpbmdfb2ZfZmxvYXQgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgMjAgaW5cbiAgd3JpdGVfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHdyaXRlX3N0ZF9mbG9hdCBvYiB4ID1cbiAgbWF0Y2ggY2xhc3NpZnlfZmxvYXQgeCB3aXRoXG4gICAgRlBfbmFuIC0+XG4gICAgICBqc29uX2Vycm9yIFwiTmFOIHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICB8IEZQX2luZmluaXRlIC0+XG4gICAgICBqc29uX2Vycm9yXG4gICAgICAgIChpZiB4ID4gMC4gdGhlblxuICAgICAgICAgICBcIkluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIi1JbmZpbml0eSB2YWx1ZSBub3QgYWxsb3dlZCBpbiBzdGFuZGFyZCBKU09OXCIpXG4gIHwgXyAtPlxuICAgICAgbGV0IHMxID0gUHJpbnRmLnNwcmludGYgXCIlLjE2Z1wiIHggaW5cbiAgICAgIGxldCBzID1cbiAgICAgICAgaWYgZmxvYXRfb2Zfc3RyaW5nIHMxID0geCB0aGVuIHMxXG4gICAgICAgIGVsc2UgUHJpbnRmLnNwcmludGYgXCIlLjE3Z1wiIHhcbiAgICAgIGluXG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzO1xuICAgICAgaWYgZmxvYXRfbmVlZHNfcGVyaW9kIHMgdGhlblxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIi4wXCJcblxuKCogdXNlZCBieSBhdGRnZW4gKilcbmxldCB3cml0ZV9zdGRfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHggPVxuICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICBGUF9uYW4gLT5cbiAgICAgIGpzb25fZXJyb3IgXCJOYU4gdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gIHwgRlBfaW5maW5pdGUgLT5cbiAgICAgIGpzb25fZXJyb3JcbiAgICAgICAgKGlmIHggPiAwLiB0aGVuXG4gICAgICAgICAgIFwiSW5maW5pdHkgdmFsdWUgbm90IGFsbG93ZWQgaW4gc3RhbmRhcmQgSlNPTlwiXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIFwiLUluZmluaXR5IHZhbHVlIG5vdCBhbGxvd2VkIGluIHN0YW5kYXJkIEpTT05cIilcbiAgfCBfIC0+XG4gICAgICB3cml0ZV9ub3JtYWxfZmxvYXRfcHJlYyBzaWduaWZpY2FudF9maWd1cmVzIG9iIHhcblxubGV0IHN0ZF9qc29uX3N0cmluZ19vZl9mbG9hdCB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSAyMCBpblxuICB3cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cblxubGV0IHRlc3RfZmxvYXQgKCkgPVxuICBsZXQgbCA9IFsgMC47IDEuOyAtMS4gXSBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4gMi4gKi4geCArLiAxLikgbCBpblxuICBsZXQgbCA9IGwgQCBMaXN0Lm1hcCAoZnVuIHggLT4geCAvLiBzcXJ0IDIuKSBsIGluXG4gIGxldCBsID0gbCBAIExpc3QubWFwIChmdW4geCAtPiB4ICouIHNxcnQgMy4pIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgY29zIGwgaW5cbiAgbGV0IGwgPSBsIEAgTGlzdC5tYXAgKGZ1biB4IC0+IHggKi4gMS4yM2U1MCkgbCBpblxuICBsZXQgbCA9IGwgQCBbIGluZmluaXR5OyBuZWdfaW5maW5pdHkgXSBpblxuICBMaXN0Lml0ZXIgKFxuICAgIGZ1biB4IC0+XG4gICAgICBsZXQgcyA9IFByaW50Zi5zcHJpbnRmIFwiJS4xN2dcIiB4IGluXG4gICAgICBsZXQgeSA9IGZsb2F0X29mX3N0cmluZyBzIGluXG4gICAgICBQcmludGYucHJpbnRmIFwiJWcgJWcgJVMgJUJcXG5cIiB4IHkgcyAoeCA9IHkpXG4gIClcbiAgICBsXG5cbigqXG5sZXQgKCkgPSB0ZXN0X2Zsb2F0ICgpXG4qKVxuXG5sZXQgd3JpdGVfaW50bGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcbmxldCB3cml0ZV9mbG9hdGxpdCA9IEJ1ZmZlci5hZGRfc3RyaW5nXG5sZXQgd3JpdGVfc3RyaW5nbGl0ID0gQnVmZmVyLmFkZF9zdHJpbmdcblxubGV0IHJlYyBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCA9IGZ1bmN0aW9uXG4gICAgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICAgIGZfc2VwIHg7XG4gICAgICBmX2VsdCB4IHk7XG4gICAgICBpdGVyMl9hdXggZl9lbHQgZl9zZXAgeCBsXG5cbmxldCBpdGVyMiBmX2VsdCBmX3NlcCB4ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHkgOjogbCAtPlxuICAgICAgZl9lbHQgeCB5O1xuICAgICAgaXRlcjJfYXV4IGZfZWx0IGZfc2VwIHggbFxuXG5sZXQgZl9zZXAgb2IgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgd3JpdGVfanNvbiBvYiAoeCA6IHQpID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBgTnVsbCAtPiB3cml0ZV9udWxsIG9iICgpXG4gICAgfCBgQm9vbCBiIC0+IHdyaXRlX2Jvb2wgb2IgYlxuICAgIFxuIyAyNjcgXCJ3cml0ZS5tbFwiXG4gICAgfCBgSW50bGl0IHMgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc1xuICAgIFxuIyAyNzMgXCJ3cml0ZS5tbFwiXG4gICAgfCBgRmxvYXRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI3OSBcIndyaXRlLm1sXCJcbiAgICB8IGBTdHJpbmdsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDI4MSBcIndyaXRlLm1sXCJcbiAgICB8IGBBc3NvYyBsIC0+IHdyaXRlX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfbGlzdCBvYiBsXG4gICAgXG4jIDI4NCBcIndyaXRlLm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+IHdyaXRlX3R1cGxlIG9iIGxcbiAgICBcbiMgMjg3IFwid3JpdGUubWxcIlxuICAgIHwgYFZhcmlhbnQgKHMsIG8pIC0+IHdyaXRlX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMjkwIFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX2Fzc29jIG9iIGwgPVxuICBsZXQgZl9lbHQgb2IgKHMsIHgpID1cbiAgICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgIHdyaXRlX2pzb24gb2IgeFxuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICBpdGVyMiBmX2VsdCBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuXG5hbmQgd3JpdGVfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzA2IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJygnO1xuICBpdGVyMiB3cml0ZV9qc29uIGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnKSdcblxuIyAzMTMgXCJ3cml0ZS5tbFwiXG5hbmQgd3JpdGVfdmFyaWFudCBvYiBzIG8gPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJzwnO1xuICB3cml0ZV9zdHJpbmcgb2IgcztcbiAgKG1hdGNoIG8gd2l0aFxuICAgICAgIE5vbmUgLT4gKClcbiAgICAgfCBTb21lIHggLT5cbiAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICAgICB3cml0ZV9qc29uIG9iIHhcbiAgKTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICc+J1xuXG4jIDMyNSBcIndyaXRlLm1sXCJcbmxldCB3cml0ZV90ID0gd3JpdGVfanNvblxuXG5sZXQgcmVjIHdyaXRlX3N0ZF9qc29uIG9iICh4IDogdCkgPVxuICBtYXRjaCB4IHdpdGhcbiAgICAgIGBOdWxsIC0+IHdyaXRlX251bGwgb2IgKClcbiAgICB8IGBCb29sIGIgLT4gd3JpdGVfYm9vbCBvYiBiXG4gICAgXG4jIDMzNSBcIndyaXRlLm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBzXG4gICAgXG4jIDM0MSBcIndyaXRlLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ3IFwid3JpdGUubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHNcbiAgICBcbiMgMzQ5IFwid3JpdGUubWxcIlxuICAgIHwgYEFzc29jIGwgLT4gd3JpdGVfc3RkX2Fzc29jIG9iIGxcbiAgICB8IGBMaXN0IGwgLT4gd3JpdGVfc3RkX2xpc3Qgb2IgbFxuICAgIFxuIyAzNTIgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVHVwbGUgbCAtPiB3cml0ZV9zdGRfdHVwbGUgb2IgbFxuICAgIFxuIyAzNTUgXCJ3cml0ZS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgbykgLT4gd3JpdGVfc3RkX3ZhcmlhbnQgb2IgcyBvXG5cbiMgMzU4IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF9hc3NvYyBvYiBsID1cbiAgbGV0IGZfZWx0IG9iIChzLCB4KSA9XG4gICAgd3JpdGVfc3RyaW5nIG9iIHM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICc6JztcbiAgICB3cml0ZV9zdGRfanNvbiBvYiB4XG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gIGl0ZXIyIGZfZWx0IGZfc2VwIG9iIGw7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG5cbmFuZCB3cml0ZV9zdGRfbGlzdCBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdbJztcbiAgaXRlcjIgd3JpdGVfc3RkX2pzb24gZl9zZXAgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5hbmQgd3JpdGVfc3RkX3R1cGxlIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBpdGVyMiB3cml0ZV9zdGRfanNvbiBmX3NlcCBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbiMgMzc5IFwid3JpdGUubWxcIlxuYW5kIHdyaXRlX3N0ZF92YXJpYW50IG9iIHMgbyA9XG4gIG1hdGNoIG8gd2l0aFxuICAgICAgTm9uZSAtPiB3cml0ZV9zdHJpbmcgb2Igc1xuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAgIHdyaXRlX3N0cmluZyBvYiBzO1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgICB3cml0ZV9zdGRfanNvbiBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cblxuIyAzOTEgXCJ3cml0ZS5tbFwiXG5sZXQgdG9fYnVmZmVyID8oc3VmID0gXCJcIikgPyhzdGQgPSBmYWxzZSkgb2IgeCA9XG4gIGlmIHN0ZCB0aGVuXG4gICAgd3JpdGVfc3RkX2pzb24gb2IgeFxuICBlbHNlXG4gICAgd3JpdGVfanNvbiBvYiB4O1xuICBCdWZmZXIuYWRkX3N0cmluZyBvYiBzdWZcblxubGV0IHRvX3N0cmluZyA/YnVmID8obGVuID0gMjU2KSA/KHN1ZiA9IFwiXCIpID9zdGQgeCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgbGV0IHMgPSBCdWZmZXIuY29udGVudHMgb2IgaW5cbiAgQnVmZmVyLmNsZWFyIG9iO1xuICBzXG5cbmxldCB0b19jaGFubmVsID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG9jIHggPVxuICBsZXQgb2IgPVxuICAgIG1hdGNoIGJ1ZiB3aXRoXG4gICAgICAgIE5vbmUgLT4gQnVmZmVyLmNyZWF0ZSBsZW5cbiAgICAgIHwgU29tZSBvYiAtPiBCdWZmZXIuY2xlYXIgb2I7IG9iXG4gIGluXG4gIHRvX2J1ZmZlciB+c3VmID9zdGQgb2IgeDtcbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2I7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fb3V0cHV0ID9idWYgPyhsZW49NDA5NikgPyhzdWYgPSBcIlwiKSA/c3RkIG91dCB4ID1cbiAgbGV0IG9iID1cbiAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICBOb25lIC0+IEJ1ZmZlci5jcmVhdGUgbGVuXG4gICAgICB8IFNvbWUgb2IgLT4gQnVmZmVyLmNsZWFyIG9iOyBvYlxuICBpblxuICB0b19idWZmZXIgfnN1ZiA/c3RkIG9iIHg7XG4gIG91dCNvdXRwdXQgKEJ1ZmZlci5jb250ZW50cyBvYikgMCAoQnVmZmVyLmxlbmd0aCBvYik7XG4gIEJ1ZmZlci5jbGVhciBvYlxuXG5sZXQgdG9fZmlsZSA/bGVuID9zdGQgPyhzdWYgPSBcIlxcblwiKSBmaWxlIHggPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHRvX2NoYW5uZWwgP2xlbiB+c3VmID9zdGQgb2MgeDtcbiAgICBjbG9zZV9vdXQgb2NcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2Vfb3V0X25vZXJyIG9jO1xuICAgIHJhaXNlIGVcblxubGV0IHNlcV90b19idWZmZXIgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9iIHN0ID1cbiAgU2VxLml0ZXIgKHRvX2J1ZmZlciB+c3VmID9zdGQgb2IpIHN0XG5cbmxldCBzZXFfdG9fc3RyaW5nID9idWYgPyhsZW4gPSAyNTYpID8oc3VmID0gXCJcXG5cIikgP3N0ZCBzdCA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+XG4gICAgICAgICAgQnVmZmVyLmNsZWFyIG9iO1xuICAgICAgICAgIG9iXG4gIGluXG4gIHNlcV90b19idWZmZXIgfnN1ZiA/c3RkIG9iIHN0O1xuICBsZXQgcyA9IEJ1ZmZlci5jb250ZW50cyBvYiBpblxuICBCdWZmZXIuY2xlYXIgb2I7XG4gIHNcblxubGV0IHNlcV90b19jaGFubmVsID9idWYgPyhsZW49MjA5NikgPyhzdWYgPSBcIlxcblwiKSA/c3RkIG9jIHNlcSA9XG4gIGxldCBvYiA9XG4gICAgbWF0Y2ggYnVmIHdpdGhcbiAgICAgICAgTm9uZSAtPiBCdWZmZXIuY3JlYXRlIGxlblxuICAgICAgfCBTb21lIG9iIC0+IEJ1ZmZlci5jbGVhciBvYjsgb2JcbiAgaW5cbiAgU2VxLml0ZXIgKGZ1biBqc29uIC0+XG4gICAgdG9fYnVmZmVyIH5zdWYgP3N0ZCBvYiBqc29uO1xuICAgIEJ1ZmZlci5vdXRwdXRfYnVmZmVyIG9jIG9iO1xuICAgIEJ1ZmZlci5jbGVhciBvYjtcbiAgKSBzZXFcblxubGV0IHNlcV90b19maWxlID9sZW4gPyhzdWYgPSBcIlxcblwiKSA/c3RkIGZpbGUgc3QgPVxuICBsZXQgb2MgPSBvcGVuX291dCBmaWxlIGluXG4gIHRyeVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gfnN1ZiA/c3RkIG9jIHN0O1xuICAgIGNsb3NlX291dCBvY1xuICB3aXRoIGUgLT5cbiAgICBjbG9zZV9vdXRfbm9lcnIgb2M7XG4gICAgcmFpc2UgZVxuXG5cbmxldCByZWMgc29ydCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgLT5cbiAgICAgIGxldCBsID0gTGlzdC5yZXYgKExpc3QucmV2X21hcCAoZnVuIChrLCB2KSAtPiAoaywgc29ydCB2KSkgbCkgaW5cbiAgICAgIGBBc3NvYyAoTGlzdC5zdGFibGVfc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gU3RyaW5nLmNvbXBhcmUgYSBiKSBsKVxuICB8IGBMaXN0IGwgLT5cbiAgICAgIGBMaXN0IChMaXN0LnJldiAoTGlzdC5yZXZfbWFwIHNvcnQgbCkpXG4gIFxuIyA0ODUgXCJ3cml0ZS5tbFwiXG4gIHwgYFR1cGxlIGwgLT5cbiAgICAgIGBUdXBsZSAoTGlzdC5yZXYgKExpc3QucmV2X21hcCBzb3J0IGwpKVxuICBcbiMgNDg5IFwid3JpdGUubWxcIlxuICB8IGBWYXJpYW50IChrLCBTb21lIHYpIGFzIHggLT5cbiAgICAgIGxldCB2JyA9IHNvcnQgdiBpblxuICAgICAgaWYgdiA9PSB2JyB0aGVuIHhcbiAgICAgIGVsc2VcbiAgICAgICAgYFZhcmlhbnQgKGssIFNvbWUgdicpXG4gIFxuIyA0OTUgXCJ3cml0ZS5tbFwiXG4gIHwgeCAtPiB4XG4jIDkwIFwieW9qc29uLmNwcG8ubWxcIlxubW9kdWxlIFByZXR0eSA9XG5zdHJ1Y3RcbiMgMSBcInByZXR0eS5tbFwiXG4oKlxuICAgUHJldHR5LXByaW50IEpTT04gZGF0YSBpbiBhbiBhdHRlbXB0IHRvIG1heGltaXplIHJlYWRhYmlsaXR5LlxuXG4gICAxLiBXaGF0IGZpdHMgb24gb25lIGxpbmUgc3RheXMgb24gb25lIGxpbmUuXG4gICAyLiBXaGF0IGRvZXNuJ3QgZml0IG9uIG9uZSBsaW5lIGdldHMgcHJpbnRlZCBtb3JlIHZlcnRpY2FsbHkgc28gYXMgdG8gbm90XG4gICAgICBleGNlZWQgYSByZWFzb25hYmxlIHBhZ2Ugd2lkdGgsIGlmIHBvc3NpYmxlLlxuXG4gICBBcnJheXMgY29udGFpbmluZyBvbmx5IHNpbXBsZSBlbGVtZW50cyAoXCJhdG9tc1wiKSBhcmUgcHJldHR5LXByaW50ZWQgd2l0aFxuICAgZW5kLW9mLWxpbmUgd3JhcHBpbmcgbGlrZSBvcmRpbmFyeSB0ZXh0OlxuXG4gICAgIFtcbiAgICAgICAgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsXG4gICAgICAgIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiLCBcImhlbGxvXCIsIFwiaGVsbG9cIiwgXCJoZWxsb1wiXG4gICAgIF1cblxuICAgT3RoZXIgYXJyYXlzIGFyZSBwcmludGVkIGVpdGhlciBob3Jpem9udGFsbHkgb3IgdmVydGljYWxseSBkZXBlbmRpbmdcbiAgIG9uIHdoZXRoZXIgdGhleSBmaXQgb24gYSBzaW5nbGUgbGluZTpcblxuICAgICBbIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSwgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LCB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0gXVxuXG4gICBvclxuXG4gICAgIFtcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH0sXG4gICAgICAgeyBcImhlbGxvXCI6IFwid29ybGRcIiB9LFxuICAgICAgIHsgXCJoZWxsb1wiOiBcIndvcmxkXCIgfSxcbiAgICAgICB7IFwiaGVsbG9cIjogXCJ3b3JsZFwiIH1cbiAgICAgXVxuKilcblxubGV0IHBwX2xpc3Qgc2VwIHBweCBvdXQgbCA9XG4gIGxldCBwcF9zZXAgb3V0ICgpID0gRm9ybWF0LmZwcmludGYgb3V0IFwiJXNAIFwiIHNlcCBpblxuICBGb3JtYXQucHBfcHJpbnRfbGlzdCB+cHBfc2VwIHBweCBvdXQgbFxuXG5sZXQgaXNfYXRvbSAoeDogWz4gdF0pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYE51bGxcbiAgfCBgQm9vbCBfXG4gIHwgYEludCBfXG4gIHwgYEZsb2F0IF9cbiAgfCBgU3RyaW5nIF9cbiAgfCBgSW50bGl0IF9cbiAgfCBgRmxvYXRsaXQgX1xuICB8IGBTdHJpbmdsaXQgX1xuICB8IGBMaXN0IFtdXG4gIHwgYEFzc29jIFtdXG4gIHwgYFR1cGxlIFtdXG4gIHwgYFZhcmlhbnQgKF8sIE5vbmUpIC0+IHRydWVcbiAgfCBgTGlzdCBfXG4gIHwgYEFzc29jIF9cbiAgfCBgVHVwbGUgX1xuICB8IGBWYXJpYW50IChfLCBTb21lIF8pIC0+IGZhbHNlXG5cbmxldCBpc19hdG9tX2xpc3QgbCA9XG4gIExpc3QuZm9yX2FsbCBpc19hdG9tIGxcblxuKCpcbiAgIGluc2lkZV9ib3g6IGluZGljYXRlcyB0aGF0IHdlJ3JlIGFscmVhZHkgd2l0aGluIGEgYm94IHRoYXQgaW1wb3Nlc1xuICAgYSBjZXJ0YWluIHN0eWxlIGFuZCB3ZSBzaG91bGRuJ3QgY3JlYXRlIGEgbmV3IG9uZS4gVGhpcyBpcyB1c2VkIGZvclxuICAgcHJpbnRpbmcgZmllbGQgdmFsdWVzIGxpa2UgdGhpczpcblxuICAgICBmb286IFtcbiAgICAgICBiYXJcbiAgICAgXVxuXG4gICByYXRoZXIgdGhhbiBzb21ldGhpbmcgZWxzZSBsaWtlXG5cbiAgICAgZm9vOlxuICAgICAgIFtcbiAgICAgICAgIGJhclxuICAgICAgIF1cbiopXG5sZXQgcmVjIGZvcm1hdCB+aW5zaWRlX2JveCBzdGQgKG91dDpGb3JtYXQuZm9ybWF0dGVyKSAoeDp0KSA6IHVuaXQgPVxuICBtYXRjaCB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwibnVsbFwiXG4gICAgfCBgQm9vbCB4IC0+IEZvcm1hdC5wcF9wcmludF9ib29sIG91dCB4XG4gICAgXG4jIDkyIFwicHJldHR5Lm1sXCJcbiAgICB8IGBJbnRsaXQgcyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIG91dCBzXG4gICAgXG4jIDk1IFwicHJldHR5Lm1sXCJcbiAgICB8IGBGbG9hdGxpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgOTggXCJwcmV0dHkubWxcIlxuICAgIHwgYFN0cmluZ2xpdCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IHNcbiAgICBcbiMgMTAwIFwicHJldHR5Lm1sXCJcbiAgICB8IGBMaXN0IFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwiW11cIlxuICAgIHwgYExpc3QgbCAtPlxuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+XCI7XG4gICAgICBpZiBpc19hdG9tX2xpc3QgbCB0aGVuXG4gICAgICAgICgqIHVzZSBsaW5lIHdyYXBwaW5nIGxpa2Ugd2Ugd291bGQgZG8gZm9yIGEgcGFyYWdyYXBoIG9mIHRleHQgKilcbiAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiW0A7PDEgMD5AWzxob3Y+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsXG4gICAgICBlbHNlXG4gICAgICAgICgqIHByaW50IHRoZSBlbGVtZW50cyBob3Jpem9udGFsbHkgaWYgdGhleSBmaXQgb24gdGhlIGxpbmUsXG4gICAgICAgICAgIG90aGVyd2lzZSBwcmludCB0aGVtIGluIGEgY29sdW1uICopXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIG91dCBcIltAOzwxIDA+QFs8aHY+JWFAXUA7PDEgLTI+XVwiXG4gICAgICAgICAgKHBwX2xpc3QgXCIsXCIgKGZvcm1hdCB+aW5zaWRlX2JveDpmYWxzZSBzdGQpKSBsO1xuICAgICAgaWYgbm90IGluc2lkZV9ib3ggdGhlbiBGb3JtYXQuZnByaW50ZiBvdXQgXCJAXVwiO1xuICAgIHwgYEFzc29jIFtdIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgb3V0IFwie31cIlxuICAgIHwgYEFzc29jIGwgLT5cbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQFs8aHYyPlwiO1xuICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwie0A7PDEgMD4lYUA7PDEgLTI+fVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXRfZmllbGQgc3RkKSkgbDtcbiAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICBcbiMgMTE5IFwicHJldHR5Lm1sXCJcbiAgICB8IGBUdXBsZSBsIC0+XG4gICAgICAgIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgZm9ybWF0IH5pbnNpZGVfYm94IHN0ZCBvdXQgKGBMaXN0IGwpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBpZiBsID0gW10gdGhlblxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBvdXQgXCIoKVwiXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBpZiBub3QgaW5zaWRlX2JveCB0aGVuIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGhvdjI+XCI7XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCIoQCwlYUA7PDAgLTI+KVwiIChwcF9saXN0IFwiLFwiIChmb3JtYXQgfmluc2lkZV9ib3g6ZmFsc2Ugc3RkKSkgbDtcbiAgICAgICAgICAgIGlmIG5vdCBpbnNpZGVfYm94IHRoZW4gRm9ybWF0LmZwcmludGYgb3V0IFwiQF1cIjtcbiAgICAgICAgICApXG4gICAgXG4jIDEzMiBcInByZXR0eS5tbFwiXG4gICAgfCBgVmFyaWFudCAocywgTm9uZSkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTM3IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nbGl0IHMgaW5cbiAgICAgICAgICBcbiMgMTM5IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCByZXByZXNlbnRhdGlvblxuICAgICAgICBlbHNlXG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgb3V0IFwiPCVzPlwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgcylcblxuICAgIHwgYFZhcmlhbnQgKHMsIFNvbWUgeCkgLT5cbiAgICAgICAgaWYgc3RkIHRoZW5cbiAgICAgICAgICBcbiMgMTQ4IFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBsZXQgcmVwcmVzZW50YXRpb24gPSBgU3RyaW5nbGl0IHMgaW5cbiAgICAgICAgICBcbiMgMTUwIFwicHJldHR5Lm1sXCJcbiAgICAgICAgICBmb3JtYXQgfmluc2lkZV9ib3ggc3RkIG91dCAoYExpc3QgWyByZXByZXNlbnRhdGlvbjsgeCBdKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgbGV0IG9wID0ganNvbl9zdHJpbmdfb2Zfc3RyaW5nIHMgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBvdXQgXCI8QFs8aHYyPiVzOiAlYUBdPlwiIG9wIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpIHhcblxuIyAxNTYgXCJwcmV0dHkubWxcIlxuYW5kIGZvcm1hdF9maWVsZCBzdGQgb3V0IChuYW1lLCB4KSA9XG4gIEZvcm1hdC5mcHJpbnRmIG91dCBcIkBbPGh2Mj4lczogJWFAXVwiIChqc29uX3N0cmluZ19vZl9zdHJpbmcgbmFtZSkgKGZvcm1hdCB+aW5zaWRlX2JveDp0cnVlIHN0ZCkgeFxuXG5sZXQgcHAgPyhzdGQgPSBmYWxzZSkgb3V0IHggPVxuICBGb3JtYXQuZnByaW50ZiBvdXQgXCJAWzxodjI+JWFAXVwiIChmb3JtYXQgfmluc2lkZV9ib3g6dHJ1ZSBzdGQpICh4IDo+IHQpXG5cbmxldCB0b19zdHJpbmcgP3N0ZCB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAocHAgP3N0ZCkgeFxuXG5sZXQgdG9fY2hhbm5lbCA/c3RkIG9jIHggPVxuICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBvYyBpblxuICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlYUA/XCIgKHBwID9zdGQpIHhcbiMgOTMgXCJ5b2pzb24uY3Bwby5tbFwiXG5lbmRcbiMgMSBcIm1vbm9tb3JwaGljLm1sXCJcbmxldCByZWMgcHAgZm10ID1cbiAgZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcImBOdWxsXCJcbiAgfCBgQm9vbCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEJvb2wgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlQlwiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDE1IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBJbnRsaXQgeCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBJbnRsaXQgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIHg7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDI3IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBGbG9hdGxpdCB4IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYEZsb2F0bGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyAzOSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgU3RyaW5nbGl0IHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgU3RyaW5nbGl0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiJVNcIiB4O1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA0NCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgQXNzb2MgeHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgQXNzb2MgKEBbPGhvdj5cIjtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJAWzwyPltcIjtcbiAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHNlcCAoa2V5LCB2YWx1ZSkgLT5cbiAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCI7QCBcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIoQFtcIjtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlU1wiIGtleTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAgICAgICBwcCBmbXQgdmFsdWU7XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCI7XG4gICAgICAgICAgdHJ1ZSkgZmFsc2UgeHMpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgfCBgTGlzdCB4cyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcImBMaXN0IChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgeCAtPlxuICAgICAgICBpZiBzZXAgdGhlblxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIjtAIFwiO1xuICAgICAgICAgIHBwIGZtdCB4O1xuICAgICAgICAgIHRydWUpIGZhbHNlIHhzKTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJALF1AXVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG4gIFxuIyA3MSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgfCBgVHVwbGUgdHVwIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiYFR1cGxlIChAWzxob3Y+XCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQFs8Mj5bXCI7XG4gICAgaWdub3JlIChMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBzZXAgZSAtPlxuICAgICAgICAgaWYgc2VwIHRoZW5cbiAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm10IFwiO0AgXCI7XG4gICAgICAgICAgIHBwIGZtdCBlO1xuICAgICAgICAgICB0cnVlKSBmYWxzZSB0dXApO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkAsXUBdXCI7XG4gICAgRm9ybWF0LmZwcmludGYgZm10IFwiQF0pXCJcbiAgXG4jIDg0IFwibW9ub21vcnBoaWMubWxcIlxuICB8IGBWYXJpYW50IChuYW1lLCB2YWx1ZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCJgVmFyaWFudCAoQFs8aG92PlwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIihAW1wiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVTXCIgbmFtZTtcbiAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIsQCBcIjtcbiAgICAobWF0Y2ggdmFsdWUgd2l0aFxuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZm10IFwiTm9uZVwiXG4gICAgICB8IFNvbWUgeCAtPlxuICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZtdCBcIihTb21lIFwiO1xuICAgICAgICBwcCBmbXQgeDtcbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCIpXCIpO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiO1xuICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIkBdKVwiXG5cbiMgOTkgXCJtb25vbW9ycGhpYy5tbFwiXG5sZXQgc2hvdyB4ID1cbiAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBwcCB4XG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgYE51bGwsIGBOdWxsIC0+IHRydWVcbiAgfCBgQm9vbCBhLCBgQm9vbCBiIC0+IGEgPSBiXG4gICAgXG4jIDExMCBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBJbnRsaXQgYSwgYEludGxpdCBiIC0+IGEgPSBiXG4gICAgXG4jIDExNiBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IGBGbG9hdGxpdCBhLCBgRmxvYXRsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMjIgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgU3RyaW5nbGl0IGEsIGBTdHJpbmdsaXQgYiAtPiBhID0gYlxuICAgIFxuIyAxMjQgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgQXNzb2MgeHMsIGBBc3NvYyB5cyAtPlxuICAgICAgbGV0IGNvbXBhcmVfa2V5cyA9IGZ1biAoa2V5LCBfKSAoa2V5JywgXykgLT4gU3RyaW5nLmNvbXBhcmUga2V5IGtleScgaW5cbiAgICAgIGxldCB4cyA9IExpc3Quc3RhYmxlX3NvcnQgY29tcGFyZV9rZXlzIHhzIGluXG4gICAgICBsZXQgeXMgPSBMaXN0LnN0YWJsZV9zb3J0IGNvbXBhcmVfa2V5cyB5cyBpblxuICAgICAgKG1hdGNoIExpc3QuZm9yX2FsbDIgKGZ1biAoa2V5LCB2YWx1ZSkgKGtleScsIHZhbHVlJykgLT5cbiAgICAgICAgbWF0Y2gga2V5ID0ga2V5JyB3aXRoXG4gICAgICAgIHwgZmFsc2UgLT4gZmFsc2VcbiAgICAgICAgfCB0cnVlIC0+IGVxdWFsIHZhbHVlIHZhbHVlJykgeHMgeXMgd2l0aFxuICAgICAgfCByZXN1bHQgLT4gcmVzdWx0XG4gICAgICB8IGV4Y2VwdGlvbiBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgICAgKCogdGhlIGxpc3RzIHdlcmUgb2YgZGlmZmVyZW50IGxlbmd0aHMsIHRodXMgdW5lcXVhbCAqKVxuICAgICAgICBmYWxzZSlcbiAgICBcbiMgMTM3IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYFR1cGxlIHhzLCBgVHVwbGUgeXNcbiAgICBcbiMgMTM5IFwibW9ub21vcnBoaWMubWxcIlxuICAgIHwgYExpc3QgeHMsIGBMaXN0IHlzIC0+XG4gICAgICAobWF0Y2ggTGlzdC5mb3JfYWxsMiBlcXVhbCB4cyB5cyB3aXRoXG4gICAgICB8IHJlc3VsdCAtPiByZXN1bHRcbiAgICAgIHwgZXhjZXB0aW9uIEludmFsaWRfYXJndW1lbnQgXyAtPlxuICAgICAgICAoKiB0aGUgbGlzdHMgd2VyZSBvZiBkaWZmZXJlbnQgbGVuZ3RocywgdGh1cyB1bmVxdWFsICopXG4gICAgICAgIGZhbHNlKVxuICAgIFxuIyAxNDYgXCJtb25vbW9ycGhpYy5tbFwiXG4gICAgfCBgVmFyaWFudCAobmFtZSwgdmFsdWUpLCBgVmFyaWFudCAobmFtZScsIHZhbHVlJykgLT5cbiAgICAgIChtYXRjaCBuYW1lID0gbmFtZScgd2l0aFxuICAgICAgfCBmYWxzZSAtPiBmYWxzZVxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIG1hdGNoIHZhbHVlLCB2YWx1ZScgd2l0aFxuICAgICAgICB8IE5vbmUsIE5vbmUgLT4gdHJ1ZVxuICAgICAgICB8IFNvbWUgeCwgU29tZSB5IC0+IGVxdWFsIHggeVxuICAgICAgICB8IF8gLT4gZmFsc2UpXG4gICAgXG4jIDE1NSBcIm1vbm9tb3JwaGljLm1sXCJcbiAgICB8IF8gLT4gZmFsc2VcbiMgMSBcIndyaXRlMi5tbFwiXG5sZXQgcHJldHR5X3ByaW50ID9zdGQgb3V0IHggPSBQcmV0dHkucHAgP3N0ZCBvdXQgeFxubGV0IHByZXR0eV90b19zdHJpbmcgP3N0ZCB4ID0gUHJldHR5LnRvX3N0cmluZyA/c3RkIHhcbmxldCBwcmV0dHlfdG9fY2hhbm5lbCA/c3RkIG9jIHggPSBQcmV0dHkudG9fY2hhbm5lbCA/c3RkIG9jIHhcblxuIyAxIFwibGliL3JlYWQubWxsXCJcbiBcbiAgXG4jIDIgXCJsaWIvcmVhZC5tbGxcIlxuICBtb2R1bGUgTGV4aW5nID1cbiAgICAoKlxuICAgICAgV2Ugb3ZlcnJpZGUgTGV4aW5nLmVuZ2luZSBpbiBvcmRlciB0byBhdm9pZCBjcmVhdGluZyBhIG5ldyBwb3NpdGlvblxuICAgICAgcmVjb3JkIGVhY2ggdGltZSBhIHJ1bGUgaXMgbWF0Y2hlZC5cbiAgICAgIFRoaXMgcmVkdWNlcyB0b3RhbCBwYXJzaW5nIHRpbWUgYnkgYWJvdXQgMzElLlxuICAgICopXG4gIHN0cnVjdFxuICAgIGluY2x1ZGUgTGV4aW5nXG5cbiAgICBleHRlcm5hbCBjX2VuZ2luZSA6IGxleF90YWJsZXMgLT4gaW50IC0+IGxleGJ1ZiAtPiBpbnQgPSBcImNhbWxfbGV4X2VuZ2luZVwiXG5cbiAgICBsZXQgZW5naW5lIHRibCBzdGF0ZSBidWYgPVxuICAgICAgbGV0IHJlc3VsdCA9IGNfZW5naW5lIHRibCBzdGF0ZSBidWYgaW5cbiAgICAgICgqXG4gICAgICBpZiByZXN1bHQgPj0gMCB0aGVuIGJlZ2luXG4gICAgICAgIGJ1Zi5sZXhfc3RhcnRfcCA8LSBidWYubGV4X2N1cnJfcDtcbiAgICAgICAgYnVmLmxleF9jdXJyX3AgPC0ge2J1Zi5sZXhfY3Vycl9wXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHBvc19jbnVtID0gYnVmLmxleF9hYnNfcG9zICsgYnVmLmxleF9jdXJyX3Bvc307XG4gICAgICBlbmQ7XG4gICAgICAqKVxuICAgICAgcmVzdWx0XG4gIGVuZFxuXG4gIG9wZW4gUHJpbnRmXG4gIG9wZW4gTGV4aW5nXG5cbiAgKCogc2VlIGRlc2NyaXB0aW9uIGluIGNvbW1vbi5tbGkgKilcbiAgdHlwZSBsZXhlcl9zdGF0ZSA9IExleGVyX3N0YXRlLnQgPSB7XG4gICAgYnVmIDogQnVmZmVyLnQ7XG4gICAgbXV0YWJsZSBsbnVtIDogaW50O1xuICAgIG11dGFibGUgYm9sIDogaW50O1xuICAgIG11dGFibGUgZm5hbWUgOiBzdHJpbmcgb3B0aW9uO1xuICB9XG5cbiAgbGV0IGRlYyBjID1cbiAgICBDaGFyLmNvZGUgYyAtIDQ4XG5cbiAgbGV0IGhleCBjID1cbiAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgJzAnLi4nOScgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICcwJ1xuICAgICAgfCAnYScuLidmJyAtPiBpbnRfb2ZfY2hhciBjIC0gaW50X29mX2NoYXIgJ2EnICsgMTBcbiAgICAgIHwgJ0EnLi4nRicgLT4gaW50X29mX2NoYXIgYyAtIGludF9vZl9jaGFyICdBJyArIDEwXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgbGV0IGN1c3RvbV9lcnJvciBkZXNjciB2IGxleGJ1ZiA9XG4gICAgbGV0IG9mZnMgPSBsZXhidWYubGV4X2Fic19wb3MgLSAxIGluXG4gICAgbGV0IGJvbCA9IHYuYm9sIGluXG4gICAgbGV0IHBvczEgPSBvZmZzICsgbGV4YnVmLmxleF9zdGFydF9wb3MgLSBib2wgLSAxIGluXG4gICAgbGV0IHBvczIgPSBtYXggcG9zMSAob2ZmcyArIGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBib2wpIGluXG4gICAgbGV0IGZpbGVfbGluZSA9XG4gICAgICBtYXRjaCB2LmZuYW1lIHdpdGhcbiAgICAgICAgICBOb25lIC0+IFwiTGluZVwiXG4gICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBzcHJpbnRmIFwiRmlsZSAlcywgbGluZVwiIHNcbiAgICBpblxuICAgIGxldCBieXRlcyA9XG4gICAgICBpZiBwb3MxID0gcG9zMiB0aGVuXG4gICAgICAgIHNwcmludGYgXCJieXRlICVpXCIgKHBvczErMSlcbiAgICAgIGVsc2VcbiAgICAgICAgc3ByaW50ZiBcImJ5dGVzICVpLSVpXCIgKHBvczErMSkgKHBvczIrMSlcbiAgICBpblxuICAgIGxldCBtc2cgPSBzcHJpbnRmIFwiJXMgJWksICVzOlxcbiVzXCIgZmlsZV9saW5lIHYubG51bSBieXRlcyBkZXNjciBpblxuICAgIGpzb25fZXJyb3IgbXNnXG5cblxuICBsZXQgbGV4ZXJfZXJyb3IgZGVzY3IgdiBsZXhidWYgPVxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMnXCIgZGVzY3IgKExleGluZy5sZXhlbWUgbGV4YnVmKSlcbiAgICAgIHYgbGV4YnVmXG5cbiAgbGV0IHJlYWRfanVuayA9IHJlZiAoZnVuIF8gLT4gYXNzZXJ0IGZhbHNlKVxuXG4gIGxldCBsb25nX2Vycm9yIGRlc2NyIHYgbGV4YnVmID1cbiAgICBsZXQganVuayA9IExleGluZy5sZXhlbWUgbGV4YnVmIGluXG4gICAgbGV0IGV4dHJhX2p1bmsgPSAhcmVhZF9qdW5rIGxleGJ1ZiBpblxuICAgIGN1c3RvbV9lcnJvclxuICAgICAgKHNwcmludGYgXCIlcyAnJXMlcydcIiBkZXNjciBqdW5rIGV4dHJhX2p1bmspXG4gICAgICB2IGxleGJ1ZlxuXG4gIGxldCBtaW4xMCA9IG1pbl9pbnQgLyAxMCAtIChpZiBtaW5faW50IG1vZCAxMCA9IDAgdGhlbiAwIGVsc2UgMSlcbiAgbGV0IG1heDEwID0gbWF4X2ludCAvIDEwICsgKGlmIG1heF9pbnQgbW9kIDEwID0gMCB0aGVuIDAgZWxzZSAxKVxuXG4gIGV4Y2VwdGlvbiBJbnRfb3ZlcmZsb3dcblxuICBsZXQgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmID1cbiAgICBsZXQgc3RhcnQgPSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPj0gbWF4MTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuICsgZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPCAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfcG9zaXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgXG4jIDEwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGBJbnRsaXQgKGxleGVtZSBsZXhidWYpXG5cbiAgXG4jIDExMyBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBleHRyYWN0X25lZ2F0aXZlX2ludCBsZXhidWYgPVxuICAgIGxldCBzdGFydCA9IGxleGJ1Zi5sZXhfc3RhcnRfcG9zICsgMSBpblxuICAgIGxldCBzdG9wID0gbGV4YnVmLmxleF9jdXJyX3BvcyBpblxuICAgIGxldCBzID0gbGV4YnVmLmxleF9idWZmZXIgaW5cbiAgICBsZXQgbiA9IHJlZiAwIGluXG4gICAgZm9yIGkgPSBzdGFydCB0byBzdG9wIC0gMSBkb1xuICAgICAgaWYgIW4gPD0gbWluMTAgdGhlblxuICAgICAgICByYWlzZSBJbnRfb3ZlcmZsb3dcbiAgICAgIGVsc2VcbiAgICAgICAgbiA6PSAxMCAqICFuIC0gZGVjIChCeXRlcy5nZXQgcyBpKVxuICAgIGRvbmU7XG4gICAgaWYgIW4gPiAwIHRoZW5cbiAgICAgIHJhaXNlIEludF9vdmVyZmxvd1xuICAgIGVsc2VcbiAgICAgICFuXG5cbiAgbGV0IG1ha2VfbmVnYXRpdmVfaW50IHYgbGV4YnVmID1cbiAgICAgICAgXG4jIDEzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgIGBJbnRsaXQgKGxleGVtZSBsZXhidWYpXG5cblxuICBcbiMgMTQxIFwibGliL3JlYWQubWxsXCJcbiAgbGV0IHNldF9maWxlX25hbWUgdiBmbmFtZSA9XG4gICAgdi5mbmFtZSA8LSBmbmFtZVxuXG4gIGxldCBuZXdsaW5lIHYgbGV4YnVmID1cbiAgICB2LmxudW0gPC0gdi5sbnVtICsgMTtcbiAgICB2LmJvbCA8LSBsZXhidWYubGV4X2Fic19wb3MgKyBsZXhidWYubGV4X2N1cnJfcG9zXG5cbiAgbGV0IGFkZF9sZXhlbWUgYnVmIGxleGJ1ZiA9XG4gICAgbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgIEJ1ZmZlci5hZGRfc3ViYnl0ZXMgYnVmIGxleGJ1Zi5sZXhfYnVmZmVyIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGxlblxuXG4gIGxldCBtYXBfbGV4ZW1lIGYgbGV4YnVmID1cbiAgICBsZXQgbGVuID0gbGV4YnVmLmxleF9jdXJyX3BvcyAtIGxleGJ1Zi5sZXhfc3RhcnRfcG9zIGluXG4gICAgZiAoQnl0ZXMuc3ViX3N0cmluZyBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBsZW4pIDAgbGVuXG5cbiAgdHlwZSB2YXJpYW50X2tpbmQgPSBbIGBFZGd5X2JyYWNrZXQgfCBgU3F1YXJlX2JyYWNrZXQgfCBgRG91YmxlX3F1b3RlIF1cbiAgdHlwZSB0dXBsZV9raW5kID0gWyBgUGFyZW50aGVzaXMgfCBgU3F1YXJlX2JyYWNrZXQgXVxuXG5cbiMgMTYxIFwibGliL3JlYWQubWxcIlxuIyAxNjEgXCJsaWIvcmVhZC5tbFwiXG5sZXQgX19vY2FtbF9sZXhfdGFibGVzID0ge1xuICBMZXhpbmcubGV4X2Jhc2UgPVxuICAgXCJcXDAwMFxcMDAwXFwyMzZcXDI1NVxcMjM3XFwyNTVcXDAwM1xcMDAwXFwyMzlcXDI1NVxcMDE2XFwwMDBcXDI0MlxcMjU1XFwyNDNcXDI1NVxcXG4gICAgXFwyNDRcXDI1NVxcMjQ1XFwyNTVcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMjQ5XFwyNTVcXDA4NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwyNTRcXDI1NVxcMDAxXFwwMDBcXDAwNFxcMDAwXFwyNTNcXDI1NVxcMDExXFwwMDBcXDI1MlxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDI1MVxcMjU1XFwwMjFcXDAwMFxcMDk3XFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAyMlxcMDAwXFwwMjBcXDAwMFxcMDE2XFwwMDBcXDAyMlxcMDAwXFwwMTJcXDAwMFxcMDA4XFwwMDBcXDI1MFxcMjU1XFxcbiAgICBcXDExOVxcMDAwXFwxMjlcXDAwMFxcMTM5XFwwMDBcXDE2MVxcMDAwXFwxNzFcXDAwMFxcMTgxXFwwMDBcXDE5M1xcMDAwXFwyMDlcXDAwMFxcXG4gICAgXFwyNDBcXDI1NVxcMDExXFwwMDBcXDAzOFxcMDAwXFwyNTJcXDI1NVxcMDY1XFwwMDBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTEwXFwwMDBcXFxuICAgIFxcMjUyXFwyNTVcXDE2M1xcMDAwXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIzNFxcMDAwXFwyNDdcXDI1NVxcMjQ4XFwyNTVcXDA0OFxcMDAxXFxcbiAgICBcXDI1MFxcMjU1XFwyNTFcXDI1NVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwxMjZcXDAwMVxcXG4gICAgXFwxNDlcXDAwMVxcMjQ5XFwyNTVcXDAzOVxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDAzOFxcMDAwXFwxODdcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjQ4XFwwMDFcXDAxNVxcMDAyXFwyNTVcXDI1NVxcMjIwXFwwMDBcXDI1M1xcMjU1XFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDAzOVxcMDAyXFxcbiAgICBcXDEwOVxcMDAyXFwwMTRcXDAwMVxcMDg4XFwwMDJcXDE2NFxcMDAyXFwxODdcXDAwMlxcMjI1XFwwMDJcXDAxM1xcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDMwXFwwMDBcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDAxN1xcMDAxXFxcbiAgICBcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDBcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAxXFwwMDVcXDAwMFxcMjUzXFwyNTVcXFxuICAgIFxcMDIzXFwwMDBcXDI1NFxcMjU1XFwwMjBcXDAwMFxcMjU1XFwyNTVcXDA0NlxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMjU1XFwyNTVcXDA1M1xcMDAwXFwwNDhcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjdcXDAwMVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwxMzdcXDAwMFxcMTA0XFwwMDBcXDA4OVxcMDAwXFwwODhcXDAwMFxcMTA2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAwXFwxMzdcXDAwMFxcMTc3XFwwMDBcXDI1NFxcMjU1XFwxODNcXDAwMFxcMTY4XFwwMDBcXDE2NlxcMDAwXFxcbiAgICBcXDE4M1xcMDAwXFwwMDJcXDAwMFxcMjUzXFwyNTVcXDE3N1xcMDAwXFwxNzJcXDAwMFxcMTg3XFwwMDBcXDAwNFxcMDAwXFwyNTJcXDI1NVxcXG4gICAgXFwwNTNcXDAwMlxcMjUxXFwyNTVcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMTAzXFwwMDFcXDI1NVxcMjU1XFwyNDhcXDAwMlxcMjU0XFwyNTVcXFxuICAgIFxcMDA2XFwwMDNcXDAzMFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDNcXDA1MFxcMDAzXFxcbiAgICBcXDA3NFxcMDAzXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDYxXFwwMDNcXDA4NFxcMDAzXFwxMDhcXDAwM1xcXG4gICAgXFwyNDlcXDI1NVxcMjUwXFwyNTVcXDI1MVxcMjU1XFwyNDRcXDAwMFxcMTIwXFwwMDNcXDE0MlxcMDAzXFwxNzlcXDAwMFxcMTk0XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDI1NVxcMjU1XFwxOTBcXDAwMFxcMTg4XFwwMDBcXDE4N1xcMDAwXFwxOTNcXDAwMFxcMTgzXFwwMDBcXDE3OVxcMDAwXFxcbiAgICBcXDI1NFxcMjU1XFwxOTFcXDAwMFxcMjAxXFwwMDBcXDIwMFxcMDAwXFwxOTZcXDAwMFxcMjAzXFwwMDBcXDE5M1xcMDAwXFwxODlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMTU3XFwwMDNcXDA5NVxcMDAzXFwxNzRcXDAwM1xcMTk2XFwwMDNcXDIwNlxcMDAzXFwyMTZcXDAwM1xcMjI4XFwwMDNcXFxuICAgIFxcMjM5XFwwMDNcXDA2MFxcMDAwXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwNFxcMjUyXFwyNTVcXDI1M1xcMjU1XFxcbiAgICBcXDA4N1xcMDA0XFwyNTVcXDI1NVxcMTQ1XFwwMDRcXDI1MlxcMjU1XFwyNTNcXDI1NVxcMjIxXFwwMDRcXDI1NVxcMjU1XFwyMjlcXDAwMFxcXG4gICAgXFwyNTNcXDI1NVxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAxOFxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwMzhcXDAwMVxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTIwXFwwMDFcXDI1MVxcMjU1XFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjExXFwwMDBcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg5XFwwMDBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjUyXFwyNTVcXDI1M1xcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDFcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA5NVxcMDAxXFwyNTJcXDI1NVxcMjUzXFwyNTVcXFxuICAgIFxcMjU0XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDI1M1xcMjU1XFxcbiAgICBcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMjMzXFwwMDBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDIyMlxcMDAwXFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDA1XFwyMzdcXDI1NVxcMjM4XFwyNTVcXDAxMFxcMDAwXFwyNDBcXDI1NVxcMDQ0XFwwMDFcXFxuICAgIFxcMjQzXFwyNTVcXDI0NFxcMjU1XFwyNDVcXDI1NVxcMjQ2XFwyNTVcXDA2MVxcMDAxXFwwMDJcXDAwNFxcMjQ5XFwyNTVcXDA0NVxcMDA1XFxcbiAgICBcXDIwOVxcMDAwXFwyMjhcXDAwMFxcMjExXFwwMDBcXDIzMlxcMDAwXFwyMjVcXDAwMFxcMjIzXFwwMDBcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyMzVcXDAwMFxcMjM0XFwwMDBcXDAwOFxcMDAxXFwyNTRcXDI1NVxcMDA0XFwwMDFcXDAyM1xcMDAxXFwyNTNcXDI1NVxcMDU0XFwwMDFcXFxuICAgIFxcMjUyXFwyNTVcXDAzMVxcMDAxXFwwMjlcXDAwMVxcMDMyXFwwMDFcXDAzOVxcMDAxXFwwNDlcXDAwMVxcMDQ1XFwwMDFcXDI1MVxcMjU1XFxcbiAgICBcXDA1N1xcMDAxXFwwODJcXDAwMVxcMDgwXFwwMDFcXDA3OFxcMDAxXFwwODRcXDAwMVxcMDc0XFwwMDFcXDA4NlxcMDAxXFwyNTBcXDI1NVxcXG4gICAgXFwxMTBcXDAwNVxcMDEyXFwwMDRcXDEyM1xcMDA1XFwxNTVcXDAwNVxcMTY1XFwwMDVcXDE3N1xcMDA1XFwxODdcXDAwNVxcMTk3XFwwMDVcXFxuICAgIFxcMjQxXFwyNTVcXDE5OVxcMDAxXFwwNzdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwxNTRcXDAwMlxcMjIyXFwwMDVcXDIwOVxcMDA1XFxcbiAgICBcXDE1NVxcMDAyXFwyMzlcXDAwNVxcMDUzXFwwMDZcXDA3NlxcMDA2XFwxMTRcXDAwNlxcMDE2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1MlxcMDA2XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIyN1xcMDA2XFwyNTVcXDI1NVxcMDg1XFwwMDdcXFxuICAgIFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwwMTFcXDAwMFxcMjQ3XFwyNTVcXDA3NlxcMDAyXFwyNTBcXDI1NVxcMjUxXFwyNTVcXDI1MlxcMjU1XFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMDMxXFwwMDJcXDI0M1xcMDA1XFwwNTFcXDAwN1xcMTAwXFwwMDFcXDExNVxcMDAxXFwxMDRcXDAwMVxcXG4gICAgXFwxMzNcXDAwMVxcMTE4XFwwMDFcXDE1NFxcMDAxXFwxNzFcXDAwMVxcMjU1XFwyNTVcXDE3M1xcMDAxXFwxNzZcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4N1xcMDAxXFwyNTNcXDAwMVxcMjMwXFwwMDFcXDIzMFxcMDAxXFwyMzRcXDAwMVxcMjQ3XFwwMDFcXDIzN1xcMDAxXFxcbiAgICBcXDIzNFxcMDAxXFwwMDlcXDAwMlxcMDE5XFwwMDJcXDAxOVxcMDAyXFwwMTVcXDAwMlxcMDIxXFwwMDJcXDAxMVxcMDAyXFwwMDdcXDAwMlxcXG4gICAgXFwxNDJcXDAwNlxcMTUyXFwwMDZcXDExNlxcMDA3XFwxNzBcXDAwN1xcMTgwXFwwMDdcXDE5MFxcMDA3XFwyMDBcXDAwN1xcMjEwXFwwMDdcXFxuICAgIFxcMjQ4XFwyNTVcXDEyMFxcMDAyXFwxNjdcXDAwMlxcMjUzXFwyNTVcXDI1NVxcMjU1XFwyMTZcXDAwMlxcMDgyXFwwMDdcXDIyMFxcMDA3XFxcbiAgICBcXDIzNlxcMDAyXFwyNDRcXDAwN1xcMDU4XFwwMDhcXDA4MVxcMDA4XFwxMTlcXDAwOFxcMDc2XFwwMDJcXDI1MlxcMjU1XFwyNTNcXDI1NVxcXG4gICAgXFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE1N1xcMDA4XFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzMlxcMDA4XFwyNTVcXDI1NVxcMTM1XFwwMDJcXFxuICAgIFxcMTIwXFwwMDJcXDI1M1xcMjU1XFwxMDBcXDAwMlxcMjU0XFwyNTVcXDE4MlxcMDAyXFwyNTVcXDI1NVxcMDExXFwwMDJcXDI1NVxcMjU1XFxcbiAgICBcXDIwNFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDQ2XFwwMDJcXDI1NVxcMjU1XFwxNzhcXDAwMlxcXG4gICAgXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMDIzXFwwMDBcXDI1NVxcMjU1XFwxODNcXDAwMlxcMjUyXFwyNTVcXFxuICAgIFxcMjUzXFwyNTVcXDI1NFxcMjU1XFwyNTVcXDI1NVxcMTg3XFwwMDJcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDEyMVxcMDAyXFxcbiAgICBcXDI1M1xcMjU1XFwyNTRcXDI1NVxcMjU1XFwyNTVcXDE4NFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDI1NFxcMjU1XFwwMTlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMTQwXFwwMDFcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMTUwXFwwMDFcXDE1MVxcMDAxXFwxNTRcXDAwMVxcMTY4XFwwMDFcXFxuICAgIFxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNzJcXDAwMVxcMTczXFwwMDFcXDE4MVxcMDAxXFwxODRcXDAwMVxcMTg1XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE5MVxcMDAxXFwxOTNcXDAwMVxcMTk1XFwwMDFcXDE5NlxcMDAxXFwxOTdcXDAwMVxcMjAwXFwwMDFcXDIwM1xcMDAxXFwyMjNcXDAwMVxcXG4gICAgXFwyMjVcXDAwMVxcMjI4XFwwMDFcXDI0OVxcMDAxXFwyNTFcXDAwMVxcMDAyXFwwMDJcXDAwNFxcMDAyXFwwMTFcXDAwMlxcMDEyXFwwMDJcXFxuICAgIFxcMDEzXFwwMDJcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE3XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwMDhcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDlcXDAwMFxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMVxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDAwM1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDBcXDI1NVxcMjU1XFwwMThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMDE4XFwwMDBcXFxuICAgIFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwOVxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0ID1cbiAgIFwiXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDk3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFwxNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwxODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyMzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE3XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDM4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxMjFcXDAwMVxcMTI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwxOTNcXDAwMVxcMTk3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwN1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyMjBcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjMzXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjQwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAwMlxcMDAyXFwwMDRcXDAwMlxcMDAwXFwwMDBcXDAwNVxcMDAyXFwwMDZcXDAwMlxcMDA3XFwwMDJcXDAwOFxcMDAyXFxcbiAgICBcXDAwOVxcMDAyXFwwMTBcXDAwMlxcMDExXFwwMDJcXDAxMlxcMDAyXFwwMTNcXDAwMlxcMDE0XFwwMDJcXDAxNVxcMDAyXFwwMTZcXDAwMlxcXG4gICAgXFwwMTdcXDAwMlxcMDE4XFwwMDJcXDAxOVxcMDAyXFwwMjBcXDAwMlxcMDIxXFwwMDJcXDAyMlxcMDAyXFwwMjNcXDAwMlxcMDI0XFwwMDJcXFxuICAgIFxcMDI1XFwwMDJcXDAyNlxcMDAyXFwwMjdcXDAwMlxcMDI4XFwwMDJcXDAyOVxcMDAyXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFxcbiAgICBcXDAzM1xcMDAyXFwwMDNcXDAwMlwiO1xuICBMZXhpbmcubGV4X3RyYW5zID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDA2OVxcMDAxXFwxNDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyN1xcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMTJcXDAwMFxcMDAzXFwwMDBcXDE3MFxcMDAwXFwxMzRcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMTFcXDAwMVxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwMTRcXDAwMVxcMDEzXFwwMDBcXDA0OVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwNTZcXDAwMFxcMTE4XFwwMDBcXDAwNlxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDIzN1xcMDAxXFwxMzdcXDAwMFxcMDAwXFwwMDJcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDQ4XFwwMDBcXDEzOFxcMDAwXFwxMDZcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDE0XFwwMDBcXDExMFxcMDAwXFwxMDVcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMTVcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFxcbiAgICBcXDAxMVxcMDAwXFwwMzBcXDAwMFxcMDQ4XFwwMDBcXDAwOFxcMDAwXFwxMTRcXDAwMFxcMjA5XFwwMDBcXDIzNlxcMDAwXFwwMDBcXDAwMVxcXG4gICAgXFwwMTNcXDAwMVxcMDI5XFwwMDBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwMTdcXDAwMFxcMDIxXFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDM1XFwwMDBcXDAyM1xcMDAwXFwwMjdcXDAwMFxcMDE2XFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAyOFxcMDAwXFwwMzRcXDAwMFxcMDE5XFwwMDBcXDAyNFxcMDAwXFwwMThcXDAwMFxcMDI2XFwwMDBcXDAyMFxcMDAwXFwwMzZcXDAwMFxcXG4gICAgXFwwNDFcXDAwMFxcMDM3XFwwMDBcXDA0OFxcMDAwXFwwMDlcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDQ1XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDA0N1xcMDAwXFwwNjFcXDAwMFxcMDg1XFwwMDBcXDA0OFxcMDAwXFwwMzhcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNjdcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXFxuICAgIFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDg2XFwwMDBcXDE0M1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDE0NFxcMDAwXFxcbiAgICBcXDE0NVxcMDAwXFwxNDZcXDAwMFxcMDU1XFwwMDBcXDE0OFxcMDAwXFwwNTVcXDAwMFxcMTQ5XFwwMDBcXDA0OFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNDhcXDAwMFxcMTUwXFwwMDBcXFxuICAgIFxcMTUxXFwwMDBcXDE2MVxcMDAwXFwwNjZcXDAwMFxcMTU4XFwwMDBcXDA1M1xcMDAwXFwxNTlcXDAwMFxcMDUzXFwwMDBcXDE2MFxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFxcbiAgICBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwxNjVcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMTYyXFwwMDBcXDE2M1xcMDAwXFwxNjZcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMlxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMTE2XFwwMDBcXFxuICAgIFxcMTMyXFwwMDBcXDEzNFxcMDAwXFwxMzVcXDAwMFxcMTI4XFwwMDBcXDEzOVxcMDAwXFwxMzRcXDAwMFxcMTY0XFwwMDBcXDA5M1xcMDAwXFxcbiAgICBcXDE3MVxcMDAwXFwwNzdcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNjlcXDAwMFxcMTcyXFwwMDBcXDExMlxcMDAwXFwxNzNcXDAwMFxcXG4gICAgXFwxNzRcXDAwMFxcMjEwXFwwMDBcXDIyNlxcMDAwXFwyMDhcXDAwMFxcMjExXFwwMDBcXDIxMlxcMDAwXFwwNTlcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMTM0XFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxNlxcMDAwXFwyMThcXDAwMFxcMTQxXFwwMDBcXDIxOVxcMDAwXFxcbiAgICBcXDA5M1xcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEyM1xcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDIyNFxcMDAwXFwxMzZcXDAwMFxcXG4gICAgXFwwOTVcXDAwMFxcMjI1XFwwMDBcXDAzNVxcMDAxXFwwNjVcXDAwMVxcMjM0XFwwMDBcXDE1NVxcMDAwXFwwMDVcXDAwMVxcMDk3XFwwMDFcXFxuICAgIFxcMjUwXFwwMDBcXDI1NVxcMjU1XFwyNTRcXDAwMFxcMDU3XFwwMDFcXDA2MVxcMDAxXFwwOTVcXDAwMVxcMDc3XFwwMDBcXDA0NFxcMDAxXFxcbiAgICBcXDA5MlxcMDAxXFwwODhcXDAwMVxcMDA5XFwwMDFcXDAyOVxcMDAxXFwwNzZcXDAwMFxcMTI0XFwwMDBcXDAzM1xcMDAxXFwwMThcXDAwMVxcXG4gICAgXFwwNzVcXDAwMFxcMDk4XFwwMDBcXDAxOVxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA4N1xcMDAxXFwxMjBcXDAwMVxcMDg5XFwwMDFcXFxuICAgIFxcMDc0XFwwMDBcXDIyNVxcMDAwXFwwNTNcXDAwMVxcMTIxXFwwMDFcXDA3M1xcMDAwXFwwOTBcXDAwMVxcMDcyXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA5OFxcMDAwXFwxMTNcXDAwMVxcMTIyXFwwMDBcXDA5MVxcMDAxXFwwNjRcXDAwMFxcMDA0XFwwMDFcXFxuICAgIFxcMDkzXFwwMDFcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwNzlcXDAwMFxcMTU2XFwwMDBcXDExMlxcMDAxXFwwOTRcXDAwMVxcMDk2XFwwMDFcXDA5OFxcMDAxXFwwOTlcXDAwMVxcMDQ5XFwwMDFcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMTAwXFwwMDFcXDE1N1xcMDAwXFxcbiAgICBcXDEwMVxcMDAxXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwxODNcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDAyNFxcMDAxXFwxMTJcXDAwMVxcMjU1XFwyNTVcXDAyNVxcMDAxXFwxMDJcXDAwMVxcMTAzXFwwMDFcXDEwNVxcMDAxXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTA2XFwwMDFcXDEwN1xcMDAxXFwwNDhcXDAwMVxcMDQwXFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMTEwXFwwMDFcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMTExXFwwMDFcXFxuICAgIFxcMDI3XFwwMDFcXDI1NVxcMjU1XFwxNzFcXDAwMVxcMDMxXFwwMDFcXDE3MFxcMDAxXFwwMjNcXDAwMVxcMDgxXFwwMDBcXDA4MVxcMDAwXFxcbiAgICBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwOTJcXDAwMFxcMTY4XFwwMDFcXDA2M1xcMDAxXFwwODBcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDI0OFxcMDAwXFwxNjVcXDAwMVxcMjUyXFwwMDBcXFxuICAgIFxcMTYyXFwwMDFcXDA1OVxcMDAxXFwwNjlcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4MVxcMDAwXFwwODFcXDAwMFxcXG4gICAgXFwwODFcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwODFcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwMzlcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwxNjNcXDAwMVxcXG4gICAgXFwxNjRcXDAwMVxcMTIwXFwwMDBcXDAwMlxcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXFxuICAgIFxcMDg4XFwwMDBcXDE2NlxcMDAxXFwwNTVcXDAwMVxcMTUzXFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDA3XFwwMDFcXDE2N1xcMDAxXFwxNjRcXDAwMVxcMTY5XFwwMDFcXDAxNlxcMDAxXFwxNjRcXDAwMVxcXG4gICAgXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwNTFcXDAwMVxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFxcbiAgICBcXDA4OFxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxMzdcXDAwMVxcMTY0XFwwMDFcXDE3MlxcMDAxXFwxODVcXDAwMVxcMTM2XFwwMDFcXDE3M1xcMDAxXFxcbiAgICBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5N1xcMDAwXFwxNzlcXDAwMFxcXG4gICAgXFwxNzRcXDAwMVxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDQ2XFwwMDFcXFxuICAgIFxcMTc1XFwwMDFcXDE3NlxcMDAxXFwxODBcXDAwMFxcMTY0XFwwMDFcXDE4NFxcMDAxXFwxODFcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxMjRcXDAwMVxcXG4gICAgXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwwOTBcXDAwMFxcMDkwXFwwMDBcXDA5MFxcMDAwXFwxOTJcXDAwMVxcMTc4XFwwMDFcXFxuICAgIFxcMDIxXFwwMDFcXDE3OVxcMDAxXFwwOTdcXDAwMFxcMTkzXFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDE4M1xcMDAxXFxcbiAgICBcXDE2NFxcMDAxXFwyMTZcXDAwMVxcMjU1XFwyNTVcXDA5N1xcMDAwXFwxODRcXDAwMVxcMjE2XFwwMDFcXDIwOVxcMDAxXFwwOTdcXDAwMFxcXG4gICAgXFwyMjNcXDAwMVxcMDk3XFwwMDBcXDIwOFxcMDAxXFwyMzBcXDAwMVxcMDAzXFwwMDJcXDA5N1xcMDAwXFwyMTlcXDAwMVxcMDM3XFwwMDFcXFxuICAgIFxcMjE2XFwwMDFcXDIxN1xcMDAxXFwwMDNcXDAwMlxcMjIwXFwwMDFcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFxcbiAgICBcXDIxNlxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwOTZcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMjE2XFwwMDFcXFxuICAgIFxcMDAzXFwwMDJcXDEyNlxcMDAxXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTdcXDAwMFxcMDAzXFwwMDJcXDIxOFxcMDAxXFwyNTBcXDAwMVxcXG4gICAgXFwwMDNcXDAwMlxcMDAzXFwwMDJcXDA5N1xcMDAwXFwwMDNcXDAwMlxcMTI0XFwwMDFcXDEyNFxcMDAxXFwwOTdcXDAwMFxcMDAzXFwwMDJcXFxuICAgIFxcMjIxXFwwMDFcXDAwM1xcMDAyXFwyNTNcXDAwMVxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMDk3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwM1xcMDAyXFwxOTZcXDAwMVxcMDk3XFwwMDBcXDAwM1xcMDAyXFwwOTdcXDAwMFxcMDk2XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMjM1XFwwMDFcXDAwM1xcMDAyXFxcbiAgICBcXDI0MVxcMDAxXFwwMDNcXDAwMlxcMjU1XFwwMDFcXDI0MlxcMDAxXFwwMDNcXDAwMlxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwyNDZcXDAwMVxcMTI5XFwwMDFcXDEyOVxcMDAxXFxcbiAgICBcXDIyOFxcMDAxXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDAwM1xcMDAyXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDAwM1xcMDAyXFwxOThcXDAwMVxcMDAzXFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXFxuICAgIFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDAzXFwwMDJcXDAwM1xcMDAyXFwwMDNcXDAwMlxcMTk2XFwwMDFcXDIzNFxcMDAxXFxcbiAgICBcXDEzNFxcMDAxXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcXG4gICAgXFwxODJcXDAwMFxcMTgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAxXFwwMDFcXDE3N1xcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFxcbiAgICBcXDE4OFxcMDAwXFwwMDBcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcMDk3XFwwMDBcXDA5N1xcMDAwXFwwOTdcXDAwMFxcXG4gICAgXFwyMDFcXDAwMVxcMjI3XFwwMDFcXDAwMFxcMDAwXFwxOTFcXDAwMFxcMjA2XFwwMDFcXDEyM1xcMDAxXFwxODlcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcXG4gICAgXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE4OVxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5NVxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOThcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjQ4XFwwMDFcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5NlxcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFxcbiAgICBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDIwMlxcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIyNlxcMDAwXFwxOTVcXDAwMVxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjIxXFwwMDFcXDIzOVxcMDAxXFxcbiAgICBcXDI1NFxcMDAxXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDI0NFxcMDAxXFwwMDBcXDAwMFxcMjI1XFwwMDBcXDIwM1xcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXFxuICAgIFxcMjMyXFwwMDBcXDAwMFxcMDAwXFwyMzJcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAxXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMTdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcXG4gICAgXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwwMDBcXDAwMFxcMjI4XFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFxcbiAgICBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDE4NlxcMDAwXFwyMzFcXDAwMFxcXG4gICAgXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDExM1xcMDAxXFwwMDBcXDAwMFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDAwXFwwMDBcXDExMlxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwxMTJcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMjAwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwyNDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyMzhcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDVcXDAwMFxcMDAwXFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXFxuICAgIFxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDRcXDAwMVxcMDczXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDcxXFwwMDFcXDA3NlxcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcXG4gICAgXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDI0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MFxcMDAxXFwxMTlcXDAwMVxcMDAwXFwwMDBcXDExOVxcMDAxXFwwMDBcXDAwMFxcMDgxXFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFxcbiAgICBcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTE1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExN1xcMDAxXFwwMDBcXDAwMFxcMDc1XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXFxuICAgIFxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDExNVxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXFxuICAgIFxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFxcbiAgICBcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDE4NVxcMDAxXFwwMDBcXDAwMFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFxcbiAgICBcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXFxuICAgIFxcMTg0XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDEyOFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDFcXFxuICAgIFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDE4NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMTI3XFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcXG4gICAgXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMVxcMTMxXFwwMDFcXFxuICAgIFxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFxcbiAgICBcXDEyOFxcMDAxXFwxOTFcXDAwMVxcMTQyXFwwMDFcXDE5MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMDAwXFwwMDBcXDEyOFxcMDAxXFwxMjhcXDAwMVxcMTI4XFwwMDFcXDEyOFxcMDAxXFwxMjhcXDAwMVxcXG4gICAgXFwxMjhcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQ2XFwwMDFcXDE0N1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ2XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxNDZcXDAwMVxcMDAwXFwwMDBcXDE1M1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzdcXDAwMVxcMTUwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDE1NlxcMDAxXFwwMDBcXDAwMFxcMTQ4XFwwMDFcXDE1NFxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwxNDlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwxMzlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFxcbiAgICBcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwxNTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDE4N1xcMDAxXFwwMDBcXDAwMFxcMTYwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMTYxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMTUyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODlcXDAwMVxcMDAwXFwwMDBcXDE4OVxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwxODdcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXFxuICAgIFxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFxcbiAgICBcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXFxuICAgIFxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDBcXDAwMVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcXG4gICAgXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ1XFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXDAwMFxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwxOTlcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcXG4gICAgXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAwXFwwMDFcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFxcbiAgICBcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcXG4gICAgXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwwMDBcXDAwMFxcMjE0XFwwMDFcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjAwXFwwMDFcXDIwMFxcMDAxXFwyMDBcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMDAwXFwwMDBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTNcXDAwMVxcXG4gICAgXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAzXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAzXFwwMDBcXDI1NVxcMjU1XFwxMzRcXDAwMFxcMDY5XFwwMDFcXDE0NlxcMDAxXFwwNTdcXDAwMFxcMjU1XFwyNTVcXDA2OVxcMDAxXFxcbiAgICBcXDE0NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI1XFwwMDBcXDEzOFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMTY5XFwwMDBcXDEzNFxcMDAwXFwxNzRcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNjlcXDAwMVxcMTQ2XFwwMDFcXDAxMlxcMDAxXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNVxcMDAwXFwxMTVcXDAwMFxcMDAwXFwwMDBcXDEyNVxcMDAwXFwxMjlcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjM2XFwwMDFcXDEzNlxcMDAwXFwyNTVcXDAwMVxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwMTBcXDAwMFxcMTM2XFwwMDBcXDEwMlxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMTA3XFwwMDBcXDEwMlxcMDAwXFwyNTVcXDI1NVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcXG4gICAgXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuICAgIFxcMDExXFwwMDBcXDAyOVxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXDExMVxcMDAwXFwyMDhcXDAwMFxcMjMzXFwwMDBcXDI1NVxcMDAwXFxcbiAgICBcXDAxMlxcMDAxXFwwMTVcXDAwMFxcMDE3XFwwMDBcXDA2MFxcMDAwXFwwMTFcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjRcXDAwMFxcMDMxXFwwMDBcXDAzMlxcMDAwXFwwMzRcXDAwMFxcMDIyXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXFxuICAgIFxcMDI3XFwwMDBcXDAzM1xcMDAwXFwwMThcXDAwMFxcMDIzXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcMDE5XFwwMDBcXDAzNVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMzZcXDAwMFxcMDM4XFwwMDBcXDAwMFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcXG4gICAgXFwwNDVcXDAwMFxcMDQ2XFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcMDExXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXFxuICAgIFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTNcXDAwMFxcMDEzXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcXG4gICAgXFwwMzlcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwODVcXDAwMFxcMTQwXFwwMDBcXDA2MFxcMDAwXFwwMTNcXDAwMFxcMTQzXFwwMDBcXFxuICAgIFxcMTQ0XFwwMDBcXDE0NVxcMDAwXFwwNDhcXDAwMFxcMTQ3XFwwMDBcXDA0OFxcMDAwXFwxNDhcXDAwMFxcMDM5XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDY1XFwwMDBcXDAzOVxcMDAwXFwxNDlcXDAwMFxcXG4gICAgXFwxNTBcXDAwMFxcMTU2XFwwMDBcXDA2M1xcMDAwXFwxNTdcXDAwMFxcMDUxXFwwMDBcXDE1OFxcMDAwXFwwNTFcXDAwMFxcMTU5XFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcXG4gICAgXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDE1NVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwxNjFcXDAwMFxcMTYyXFwwMDBcXDE1NVxcMDAwXFwwOTFcXDAwMFxcMDY1XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1N1xcMDAwXFwwNjhcXDAwMFxcMTAyXFwwMDBcXDEwN1xcMDAwXFwxMTVcXDAwMFxcXG4gICAgXFwxMzFcXDAwMFxcMTMzXFwwMDBcXDEzM1xcMDAwXFwxMjVcXDAwMFxcMTM4XFwwMDBcXDEzM1xcMDAwXFwxNjNcXDAwMFxcMDk0XFwwMDBcXFxuICAgIFxcMTY1XFwwMDBcXDA2OFxcMDAwXFwxNjZcXDAwMFxcMTY3XFwwMDBcXDE2OFxcMDAwXFwxNzFcXDAwMFxcMTExXFwwMDBcXDE3MlxcMDAwXFxcbiAgICBcXDE3M1xcMDAwXFwyMDZcXDAwMFxcMjAzXFwwMDBcXDIwN1xcMDAwXFwyMTBcXDAwMFxcMjExXFwwMDBcXDA1OFxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwxMzNcXDAwMFxcMjEyXFwwMDBcXDIxM1xcMDAwXFwyMTRcXDAwMFxcMjE1XFwwMDBcXDIxN1xcMDAwXFwxNDBcXDAwMFxcMjE4XFwwMDBcXFxuICAgIFxcMDk3XFwwMDBcXDIxOVxcMDAwXFwyMjBcXDAwMFxcMTE5XFwwMDBcXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjIzXFwwMDBcXDEzM1xcMDAwXFxcbiAgICBcXDA5MVxcMDAwXFwyMDNcXDAwMFxcMDM0XFwwMDFcXDA2MlxcMDAxXFwyMzNcXDAwMFxcMTUyXFwwMDBcXDAwMVxcMDAxXFwwODBcXDAwMVxcXG4gICAgXFwyNDdcXDAwMFxcMDYwXFwwMDBcXDI1MVxcMDAwXFwwNTRcXDAwMVxcMDU4XFwwMDFcXDA4MVxcMDAxXFwwNjhcXDAwMFxcMDQxXFwwMDFcXFxuICAgIFxcMDgyXFwwMDFcXDA4M1xcMDAxXFwwMDZcXDAwMVxcMDI2XFwwMDFcXDA2OFxcMDAwXFwxMTlcXDAwMFxcMDMwXFwwMDFcXDAxNVxcMDAxXFxcbiAgICBcXDA2OFxcMDAwXFwwOTRcXDAwMFxcMDE1XFwwMDFcXDA4NFxcMDAxXFwwODVcXDAwMVxcMDg2XFwwMDFcXDA3MVxcMDAxXFwwODhcXDAwMVxcXG4gICAgXFwwNjhcXDAwMFxcMjAzXFwwMDBcXDA1MFxcMDAxXFwwNzFcXDAwMVxcMDY4XFwwMDBcXDA4OVxcMDAxXFwwNjhcXDAwMFxcMDY4XFwwMDBcXFxuICAgIFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFxcbiAgICBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDk3XFwwMDBcXDA3NlxcMDAxXFwxMTlcXDAwMFxcMDkwXFwwMDFcXDA2M1xcMDAwXFwwMDFcXDAwMVxcXG4gICAgXFwwOTJcXDAwMVxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwxNTJcXDAwMFxcMDc2XFwwMDFcXDA5M1xcMDAxXFwwOTVcXDAwMVxcMDk3XFwwMDFcXDA5OFxcMDAxXFwwNDVcXDAwMVxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwOTlcXDAwMVxcMTUyXFwwMDBcXFxuICAgIFxcMTAwXFwwMDFcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDA3MVxcMDAwXFwwNzFcXDAwMFxcMDcxXFwwMDBcXDE4MFxcMDAwXFxcbiAgICBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcMTgwXFwwMDBcXDE4MFxcMDAwXFwxODBcXDAwMFxcXG4gICAgXFwxODBcXDAwMFxcMDIwXFwwMDFcXDA3NlxcMDAxXFwwNjVcXDAwMFxcMDIwXFwwMDFcXDEwMVxcMDAxXFwxMDJcXDAwMVxcMTA0XFwwMDFcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwxMDVcXDAwMVxcMTA2XFwwMDFcXDA0NVxcMDAxXFwwMzZcXDAwMVxcMTA3XFwwMDFcXDEwOFxcMDAxXFwxMDlcXDAwMVxcMDc5XFwwMDBcXFxuICAgIFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwxMTBcXDAwMVxcXG4gICAgXFwwMjZcXDAwMVxcMTIxXFwwMDFcXDE1N1xcMDAxXFwwMzBcXDAwMVxcMTU4XFwwMDFcXDAyMFxcMDAxXFwwODBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA5MVxcMDAwXFwxNTlcXDAwMVxcMDYyXFwwMDFcXDA3OVxcMDAwXFxcbiAgICBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMDc5XFwwMDBcXDA3OVxcMDAwXFwwNzlcXDAwMFxcMjQ3XFwwMDBcXDE2MFxcMDAxXFwyNTFcXDAwMFxcXG4gICAgXFwxNjFcXDAwMVxcMDU4XFwwMDFcXDA2OFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwOTRcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFxcbiAgICBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcXG4gICAgXFwwODZcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDAzNlxcMDAxXFwwNDFcXDAwMVxcMDk3XFwwMDBcXDE2MlxcMDAxXFxcbiAgICBcXDE2M1xcMDAxXFwxMTlcXDAwMFxcMDAxXFwwMDFcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcXG4gICAgXFwwODdcXDAwMFxcMTY1XFwwMDFcXDA1NFxcMDAxXFwxNTJcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwODZcXDAwMFxcMDg2XFwwMDBcXFxuICAgIFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDZcXDAwMVxcMTY2XFwwMDFcXDE2N1xcMDAxXFwxNjhcXDAwMVxcMDE1XFwwMDFcXDE2OVxcMDAxXFxcbiAgICBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcXG4gICAgXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA1MFxcMDAxXFwwODdcXDAwMFxcMDg3XFwwMDBcXDA4N1xcMDAwXFwwODdcXDAwMFxcMDg3XFwwMDBcXFxuICAgIFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcXG4gICAgXFwwODlcXDAwMFxcMDk1XFwwMDBcXDEzM1xcMDAxXFwxNzBcXDAwMVxcMTcxXFwwMDFcXDE1NFxcMDAxXFwxMzNcXDAwMVxcMTcyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDk1XFwwMDBcXDE3NlxcMDAwXFxcbiAgICBcXDE3M1xcMDAxXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwODhcXDAwMFxcMDg4XFwwMDBcXDA4OFxcMDAwXFwwNDVcXDAwMVxcXG4gICAgXFwxNzRcXDAwMVxcMTc1XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMVxcMTU0XFwwMDFcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXFxuICAgIFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDE3NlxcMDAwXFwxNzZcXDAwMFxcMTc2XFwwMDBcXDEyMlxcMDAxXFxcbiAgICBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDA4OVxcMDAwXFwwODlcXDAwMFxcMDg5XFwwMDBcXDE0OFxcMDAxXFwxNzdcXDAwMVxcXG4gICAgXFwwMjBcXDAwMVxcMTc4XFwwMDFcXDA5OFxcMDAwXFwxNDhcXDAwMVxcMTc5XFwwMDFcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXFxuICAgIFxcMTgzXFwwMDFcXDIxNlxcMDAxXFwxOTNcXDAwMVxcMDk1XFwwMDBcXDE1NFxcMDAxXFwyMTZcXDAwMVxcMjA1XFwwMDFcXDA5OFxcMDAwXFxcbiAgICBcXDIyMlxcMDAxXFwwOTVcXDAwMFxcMjA1XFwwMDFcXDIyOVxcMDAxXFwwMDFcXDAwMlxcMDk1XFwwMDBcXDIxOFxcMDAxXFwwMzZcXDAwMVxcXG4gICAgXFwyMTVcXDAwMVxcMjE1XFwwMDFcXDAwMlxcMDAyXFwyMThcXDAwMVxcMjE1XFwwMDFcXDA5NVxcMDAwXFwwMDRcXDAwMlxcMDA1XFwwMDJcXFxuICAgIFxcMjE2XFwwMDFcXDA5NVxcMDAwXFwwMDZcXDAwMlxcMDk1XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwyMTVcXDAwMVxcXG4gICAgXFwwMDdcXDAwMlxcMTIyXFwwMDFcXDAwOFxcMDAyXFwwMDlcXDAwMlxcMDEwXFwwMDJcXDAxMVxcMDAyXFwwOTZcXDAwMFxcMDk2XFwwMDBcXFxuICAgIFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5OFxcMDAwXFwwMTJcXDAwMlxcMjE1XFwwMDFcXDI0N1xcMDAxXFxcbiAgICBcXDAxM1xcMDAyXFwwMTRcXDAwMlxcMDk4XFwwMDBcXDAxNVxcMDAyXFwxMjVcXDAwMVxcMTI4XFwwMDFcXDA5OFxcMDAwXFwwMTZcXDAwMlxcXG4gICAgXFwyMjBcXDAwMVxcMDE3XFwwMDJcXDI1MVxcMDAxXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAyMFxcMDAyXFwwOThcXDAwMFxcMTIxXFwwMDFcXFxuICAgIFxcMDIxXFwwMDJcXDE5NFxcMDAxXFwwOThcXDAwMFxcMDIyXFwwMDJcXDA5OFxcMDAwXFwwOThcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFxcbiAgICBcXDA5NlxcMDAwXFwwOTZcXDAwMFxcMDk2XFwwMDBcXDA5NlxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwyMzFcXDAwMVxcMDIzXFwwMDJcXFxuICAgIFxcMjM4XFwwMDFcXDAyNFxcMDAyXFwyNTFcXDAwMVxcMjM4XFwwMDFcXDAyNVxcMDAyXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFxcbiAgICBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDI0M1xcMDAxXFwxMjVcXDAwMVxcMTI4XFwwMDFcXFxuICAgIFxcMjI0XFwwMDFcXDAyNlxcMDAyXFwxOTdcXDAwMVxcMDI3XFwwMDJcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFxcbiAgICBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcMDI4XFwwMDJcXDE5NFxcMDAxXFwwMjlcXDAwMlxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwOTlcXDAwMFxcXG4gICAgXFwwOTlcXDAwMFxcMDk5XFwwMDBcXDA5OVxcMDAwXFwwMzBcXDAwMlxcMDMxXFwwMDJcXDAzMlxcMDAyXFwyMDBcXDAwMVxcMjMxXFwwMDFcXFxuICAgIFxcMTMzXFwwMDFcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDI1NVxcMjU1XFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMFxcMDAwXFwxMDBcXDAwMFxcXG4gICAgXFwxMDBcXDAwMFxcMTAwXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMTgyXFwwMDBcXDE4MlxcMDAwXFxcbiAgICBcXDE4MlxcMDAwXFwxODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTdcXDAwMVxcMTc2XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcXG4gICAgXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXDE4NFxcMDAwXFwxODRcXDAwMFxcMTg0XFwwMDBcXFxuICAgIFxcMTg1XFwwMDBcXDI1NVxcMjU1XFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFwxMDFcXDAwMFxcMTAxXFwwMDBcXDEwMVxcMDAwXFxcbiAgICBcXDIwMFxcMDAxXFwyMjRcXDAwMVxcMjU1XFwyNTVcXDE4NVxcMDAwXFwyMDVcXDAwMVxcMTIyXFwwMDFcXDE4NVxcMDAwXFwxODVcXDAwMFxcXG4gICAgXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXDE4NVxcMDAwXFwxODVcXDAwMFxcMTg1XFwwMDBcXFxuICAgIFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkwXFwwMDBcXDE5MFxcMDAwXFxcbiAgICBcXDE5MFxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcXG4gICAgXFwxOTFcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwxOTFcXDAwMFxcMTkyXFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXFxuICAgIFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5N1xcMDAwXFwxOTdcXDAwMFxcMTk3XFwwMDBcXDE5MlxcMDAwXFxcbiAgICBcXDE5M1xcMDAxXFwyNDdcXDAwMVxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcXG4gICAgXFwxOTJcXDAwMFxcMTkyXFwwMDBcXDE5MlxcMDAwXFwxOTJcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXFxuICAgIFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk4XFwwMDBcXDE5OFxcMDAwXFwxOThcXDAwMFxcMTk5XFwwMDBcXDIyNlxcMDAwXFxcbiAgICBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcMjI2XFwwMDBcXDIyNlxcMDAwXFwyMjZcXDAwMFxcXG4gICAgXFwyMjZcXDAwMFxcMTk5XFwwMDBcXDEyNVxcMDAxXFwxMjhcXDAwMVxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXFxuICAgIFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMTk5XFwwMDBcXDE5OVxcMDAwXFwxOTlcXDAwMFxcMjA0XFwwMDBcXDE5NFxcMDAxXFxcbiAgICBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIwNFxcMDAwXFwyMDRcXDAwMFxcXG4gICAgXFwyMDRcXDAwMFxcMjA0XFwwMDBcXDIzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAwXFwyMjBcXDAwMVxcMjM4XFwwMDFcXFxuICAgIFxcMjUxXFwwMDFcXDI1NVxcMjU1XFwxOTlcXDAwMFxcMjQzXFwwMDFcXDI1NVxcMjU1XFwyMDRcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcMjA1XFwwMDBcXDIwNVxcMDAwXFwyMDVcXDAwMFxcXG4gICAgXFwyMjVcXDAwMFxcMjU1XFwyNTVcXDIyNVxcMDAwXFwyNTVcXDI1NVxcMjI0XFwwMDFcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXFxuICAgIFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIyNVxcMDAwXFwyMjVcXDAwMFxcMjI1XFwwMDBcXDIwNVxcMDAwXFxcbiAgICBcXDE5N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjA0XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcXG4gICAgXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXDIyN1xcMDAwXFwyMjdcXDAwMFxcMjI3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIyOFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyMjhcXDAwMFxcMjU1XFwyNTVcXDIyN1xcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcXG4gICAgXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjhcXDAwMFxcMjI4XFwwMDBcXDIyOFxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXFxuICAgIFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFwyMjlcXDAwMFxcMjI5XFwwMDBcXDIyOVxcMDAwXFxcbiAgICBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDIzMFxcMDAwXFwyMzBcXDAwMFxcXG4gICAgXFwyMzBcXDAwMFxcMjMwXFwwMDBcXDI1NVxcMjU1XFwyMjdcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXFxuICAgIFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMjMxXFwwMDBcXDIzMVxcMDAwXFwyMzFcXDAwMFxcMTg1XFwwMDBcXDIzMlxcMDAwXFxcbiAgICBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcMjMyXFwwMDBcXDIzMlxcMDAwXFwyMzJcXDAwMFxcXG4gICAgXFwyMzJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFxcbiAgICBcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcXG4gICAgXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwxMTNcXDAwMVxcMTEzXFwwMDFcXDExM1xcMDAxXFwyNTVcXDI1NVxcMDc3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDA3N1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIzN1xcMDAwXFwxOTlcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcXG4gICAgXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXFxuICAgIFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFxcbiAgICBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyMzdcXDAwMFxcMjM3XFwwMDBcXDIzN1xcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjU1XFwyNTVcXDI0MlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0MFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXFxuICAgIFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFxcbiAgICBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MFxcMDAwXFwyNDBcXDAwMFxcXG4gICAgXFwyNDBcXDAwMFxcMjQwXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFxcbiAgICBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcXG4gICAgXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXFxuICAgIFxcMjQyXFwwMDBcXDI0MlxcMDAwXFwyNDJcXDAwMFxcMjQyXFwwMDBcXDIzN1xcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI0NVxcMDAwXFwyNTVcXDI1NVxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcXG4gICAgXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXFxuICAgIFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFwyNDVcXDAwMFxcMjQ1XFwwMDBcXDI0NVxcMDAwXFxcbiAgICBcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcXG4gICAgXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMDc5XFwwMDFcXDA3OVxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OVxcMDAxXFwwNjZcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMDY2XFwwMDFcXFxuICAgIFxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFwwNjZcXDAwMVxcMDY2XFwwMDFcXDA2NlxcMDAxXFxcbiAgICBcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDFcXDExMlxcMDAxXFwyNTVcXDI1NVxcMTEyXFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFxcbiAgICBcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcMTEyXFwwMDFcXDExMlxcMDAxXFwxMTJcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NlxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXFxuICAgIFxcMTE0XFwwMDFcXDExNFxcMDAxXFwxMTRcXDAwMVxcMTE0XFwwMDFcXDExNFxcMDAxXFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMTVcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE1XFwwMDFcXDI1NVxcMjU1XFwwNjZcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFxcbiAgICBcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE1XFwwMDFcXDExNVxcMDAxXFwxMTVcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcXG4gICAgXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMTE2XFwwMDFcXDExNlxcMDAxXFwxMTZcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMTE0XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExN1xcMDAxXFxcbiAgICBcXDExN1xcMDAxXFwxMTdcXDAwMVxcMTE3XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcXG4gICAgXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOFxcMDAxXFwxMThcXDAwMVxcMTE4XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXFxuICAgIFxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDExOVxcMDAxXFwxMTlcXDAwMVxcMTE5XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDEyNlxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMTU1XFwwMDFcXDI1NVxcMjU1XFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXFxuICAgIFxcMTU1XFwwMDFcXDE1NVxcMDAxXFwxNTVcXDAwMVxcMTU1XFwwMDFcXDE1NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcMTI3XFwwMDFcXDEyN1xcMDAxXFwxMjdcXDAwMVxcXG4gICAgXFwxNTVcXDAwMVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTI2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMVxcXG4gICAgXFwxMjZcXDAwMVxcMTI5XFwwMDFcXDEyNlxcMDAxXFwxMjZcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTU1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxMjlcXDAwMVxcMjU1XFwyNTVcXDEyOVxcMDAxXFwxMjlcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTMwXFwwMDFcXDEzMFxcMDAxXFxcbiAgICBcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFxcbiAgICBcXDEzMVxcMDAxXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEzMFxcMDAxXFwxMzBcXDAwMVxcXG4gICAgXFwxMzBcXDAwMVxcMTMwXFwwMDFcXDEzMFxcMDAxXFwxMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwyNTVcXDI1NVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzFcXDAwMVxcXG4gICAgXFwxMzFcXDAwMVxcMTMxXFwwMDFcXDEzMVxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXFxuICAgIFxcMTMyXFwwMDFcXDE4NFxcMDAxXFwxMzhcXDAwMVxcMTg0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTg0XFwwMDFcXDE4NFxcMDAxXFxcbiAgICBcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcMTg0XFwwMDFcXDE4NFxcMDAxXFwxODRcXDAwMVxcXG4gICAgXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXDE4NVxcMDAxXFwxODVcXDAwMVxcMTg1XFwwMDFcXFxuICAgIFxcMTg1XFwwMDFcXDE4NVxcMDAxXFwyNTVcXDI1NVxcMTMyXFwwMDFcXDEzMlxcMDAxXFwxMzJcXDAwMVxcMTMyXFwwMDFcXDEzMlxcMDAxXFxcbiAgICBcXDEzMlxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzhcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXFxuICAgIFxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFxcbiAgICBcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxMzhcXDAwMVxcXG4gICAgXFwxMzhcXDAwMVxcMTM4XFwwMDFcXDEzOFxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0MVxcMDAxXFwyNTVcXDI1NVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXFxuICAgIFxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFxcbiAgICBcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcXG4gICAgXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDFcXDAwMVxcMTQxXFwwMDFcXDE0MVxcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFxcbiAgICBcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMTU2XFwwMDFcXDE1NlxcMDAxXFwxNTZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMTQzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE1NlxcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwxOThcXDAwMVxcMTQzXFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcXG4gICAgXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMTQzXFwwMDFcXDE0M1xcMDAxXFwxNDNcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDEzOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE0M1xcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXFxuICAgIFxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTg2XFwwMDFcXDE4NlxcMDAxXFwxODZcXDAwMVxcMTk4XFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDE0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOThcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxOThcXDAwMVxcMTg2XFwwMDFcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMTk4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQzXFwwMDFcXDE5OFxcMDAxXFwyNTVcXDI1NVxcMTk4XFwwMDFcXDE5OFxcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwxNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE4N1xcMDAxXFwyNTVcXDI1NVxcMTg3XFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDE4NlxcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFxcbiAgICBcXDE4N1xcMDAxXFwxODdcXDAwMVxcMTg3XFwwMDFcXDE4N1xcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcXG4gICAgXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODhcXDAwMVxcMTg4XFwwMDFcXDE4OFxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXFxuICAgIFxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFwxODlcXDAwMVxcMTg5XFwwMDFcXDE4OVxcMDAxXFxcbiAgICBcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MFxcMDAxXFwxOTBcXDAwMVxcXG4gICAgXFwxOTBcXDAwMVxcMTkwXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXFxuICAgIFxcMTkxXFwwMDFcXDE5MVxcMDAxXFwxOTFcXDAwMVxcMTkxXFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDIwMVxcMDAxXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXFxuICAgIFxcMTk5XFwwMDFcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxOTlcXDAwMVxcMTk5XFwwMDFcXDE5OVxcMDAxXFxcbiAgICBcXDE5OVxcMDAxXFwxOTlcXDAwMVxcMTk5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxNDNcXDAwMVxcMjAxXFwwMDFcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDFcXDAwMVxcMjU1XFwyNTVcXFxuICAgIFxcMjAxXFwwMDFcXDIwMVxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXFxuICAgIFxcMjAyXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjAyXFwwMDFcXDIwMlxcMDAxXFwyMDJcXDAwMVxcMjAyXFwwMDFcXDIwMlxcMDAxXFxcbiAgICBcXDIwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDRcXDAwMVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXFxuICAgIFxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFwyMDNcXDAwMVxcMjAzXFwwMDFcXDIwM1xcMDAxXFxcbiAgICBcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDI1NVxcMjU1XFwyMTBcXDAwMVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMDRcXDAwMVxcMjA0XFwwMDFcXDIwNFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcXG4gICAgXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXFxuICAgIFxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFwyMTBcXDAwMVxcMjEwXFwwMDFcXDIxMFxcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxM1xcMDAxXFxcbiAgICBcXDI1NVxcMjU1XFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcXG4gICAgXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXFxuICAgIFxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDIxM1xcMDAxXFxcbiAgICBcXDIxM1xcMDAxXFwyMTNcXDAwMVxcMjEzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDIxMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9iYXNlX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF9kZWZhdWx0X2NvZGUgPVxuICAgXCJcIjtcbiAgTGV4aW5nLmxleF90cmFuc19jb2RlID1cbiAgIFwiXCI7XG4gIExleGluZy5sZXhfY2hlY2tfY29kZSA9XG4gICBcIlwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcIjtcbn1cblxubGV0IHJlYyByZWFkX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiAwXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxODggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYEJvb2wgdHJ1ZSApXG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTAzMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTg5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGBCb29sIGZhbHNlIClcblxuIyAxMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDM4IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyAxOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggYE51bGwgKVxuXG4jIDEwNDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDE5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiTmFOXCJcbiAgICAgICAgICAgICAgICBcbiMgMTk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA1NCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgXCJJbmZpbml0eVwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKVxuXG4jIDEwNjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwNjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDIwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBcbiMgMjA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgYEZsb2F0bGl0IFwiLUluZmluaXR5XCJcbiAgICAgICAgICAgICAgICBcbiMgMjExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICApXG5cbiMgMTA3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgU3RyaW5nbGl0IChmaW5pc2hfc3RyaW5nbGl0IHYgbGV4YnVmKVxuICAgICAgICAgICAgICAgIFxuIyAyMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIClcblxuIyAxMDg3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMDg4IFwibGliL3JlYWQubWxcIlxuICB8IDcgLT5cblxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAyMjAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbWFrZV9wb3NpdGl2ZV9pbnQgdiBsZXhidWYgKVxuXG4jIDEwOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEwOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDIyMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBtYWtlX25lZ2F0aXZlX2ludCB2IGxleGJ1ZiApXG5cbiMgMTA5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTA5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCA5IC0+XG5cbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgMjIyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIFxuIyAyMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICBgRmxvYXRsaXQgKGxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgIFxuIyAyMjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTEwOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTEwOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMCAtPlxuXG4jIDIzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxldCBhY2MgPSByZWYgW10gaW5cbiAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2lkZW50IHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBhY2MgOj0gKGZpZWxkX25hbWUsIHJlYWRfanNvbiB2IGxleGJ1ZikgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZmllbGRfbmFtZSA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IChmaWVsZF9uYW1lLCByZWFkX2pzb24gdiBsZXhidWYpIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICBgQXNzb2MgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTM1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTM2IFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgMjU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9hcnJheSAtPlxuICAgICAgICAgICAgICAgICAgICAgYExpc3QgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIClcblxuIyAxMTU0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMTU1IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgMjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDI3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyAyNzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfanNvbiB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2pzb24gdiBsZXhidWYgOjogIWFjYztcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgVHVwbGUgKExpc3QucmV2ICFhY2MpXG4gICAgICAgICAgICAgICAgIFxuIyAyODkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE3OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE3OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMyAtPlxuXG4jIDI5MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAyOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgMjkzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBsZXQgY29ucyA9IHJlYWRfaWRlbnQgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBgVmFyaWFudCAoY29ucywgZmluaXNoX3ZhcmlhbnQgdiBsZXhidWYpXG4gICAgICAgICAgICAgICAgIFxuIyAzMDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICApXG5cbiMgMTE5MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNCAtPlxuXG4jIDMwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHJlYWRfanNvbiB2IGxleGJ1ZiApXG5cbiMgMTE5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTE5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxNSAtPlxuXG4jIDMwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyAzMDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTYgLT5cblxuIyAzMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTcgLT5cblxuIyAzMDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCByZWFkX2pzb24gdiBsZXhidWYgKVxuXG4jIDEyMTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyMTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTggLT5cblxuIyAzMDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgMzA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDE5IC0+XG5cbiMgMzA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDMwNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMTIyMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIyMyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfanNvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ19yZWMgdiBsZXhidWYgNThcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzMTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jb250ZW50cyB2LmJ1ZiApXG5cbiMgMTIzNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTIzNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzEyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQxIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIClcblxuIyAxMjQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjQ3IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgXG4jIDMxNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDEyNTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgbWFwX3N0cmluZyB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9zdHJpbmdfcmVjIHYgZiBsZXhidWYgNjNcbmFuZCBfX29jYW1sX2xleF9tYXBfc3RyaW5nX3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDMxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggbGV0IGIgPSB2LmJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICBmIChCdWZmZXIuY29udGVudHMgYikgMCAoQnVmZmVyLmxlbmd0aCBiKSApXG5cbiMgMTI2NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI2NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzIxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBmaW5pc2hfZXNjYXBlZF9jaGFyIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICBtYXBfc3RyaW5nIHYgZiBsZXhidWYgKVxuXG4jIDEyNzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyNzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDMyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzIzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTI3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTI3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIFxuIyAzMjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMjgxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMjgyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX3N0cmluZ19yZWMgdiBmIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2VzY2FwZWRfY2hhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfZXNjYXBlZF9jaGFyX3JlYyB2IGxleGJ1ZiA2OFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9lc2NhcGVkX2NoYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG5cbiMgMzMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgXG4jIDMzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgIGNcblxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuIyAxMjk0IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cblxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAzMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmIGMgKVxuXG4jIDEyOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEyOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDMzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXGInIClcblxuIyAxMzAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFwwMTInIClcblxuIyAxMzA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzA5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAzMzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDMzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJyApXG5cbiMgMTMxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTMxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgMzM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzMzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1xccicgKVxuXG4jIDEzMTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDEzMTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDMzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICdcXHQnIClcblxuIyAxMzIzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzI0IFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cbmxldFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgYVxuXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMjkgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYlxuXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzMzQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAyKVxuYW5kXG5cbiMgMzM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuIyAxMzM5IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMylcbmFuZFxuXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDMzNiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZFxuXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG4jIDEzNDQgXCJsaWIvcmVhZC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lX2NoYXIgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyA0KSBpblxuXG4jIDMzNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IHggPVxuICAgICAgICAgICAgIChoZXggYSBsc2wgMTIpIGxvciAoaGV4IGIgbHNsIDgpIGxvciAoaGV4IGMgbHNsIDQpIGxvciBoZXggZFxuICAgICAgICAgICBpblxuICAgICAgICAgICBpZiB4ID49IDB4RDgwMCAmJiB4IDw9IDB4REJGRiB0aGVuXG4gICAgICAgICAgICAgZmluaXNoX3N1cnJvZ2F0ZV9wYWlyIHYgeCBsZXhidWZcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIHV0Zjhfb2ZfY29kZSB2LmJ1ZiB4XG4gICAgICAgICApXG5cbiMgMTM1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCA3IC0+XG5cbiMgMzQ1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiSW52YWxpZCBlc2NhcGUgc2VxdWVuY2VcIiB2IGxleGJ1ZiApXG5cbiMgMTM2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTM2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCA4IC0+XG5cbiMgMzQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxMzY2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2VzY2FwZWRfY2hhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF9zdXJyb2dhdGVfcGFpciB2IHggbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiA4MlxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgIGFcblxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuIyAxMzc4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMilcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiXG5cbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbiMgMTM4MyBcImxpYi9yZWFkLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDMpXG5hbmRcblxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyAzNDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNcblxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuIyAxMzg4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNClcbmFuZFxuXG4jIDM0OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgMzQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRcblxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuIyAxMzkzIFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgNSkgaW5cblxuIyAzNTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxldCB5ID1cbiAgICAgICAgICAgICAoaGV4IGEgbHNsIDEyKSBsb3IgKGhleCBiIGxzbCA4KSBsb3IgKGhleCBjIGxzbCA0KSBsb3IgaGV4IGRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgaWYgeSA+PSAweERDMDAgJiYgeSA8PSAweERGRkYgdGhlblxuICAgICAgICAgICAgIHV0Zjhfb2Zfc3Vycm9nYXRlX3BhaXIgdi5idWYgeCB5XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsb25nX2Vycm9yIFwiSW52YWxpZCBsb3cgc3Vycm9nYXRlIGZvciBjb2RlIHBvaW50IGJleW9uZCBVK0ZGRkZcIlxuICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgIClcblxuIyAxNDA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDA2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzNTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM1OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJNaXNzaW5nIGVzY2FwZSBzZXF1ZW5jZSByZXByZXNlbnRpbmcgbG93IHN1cnJvZ2F0ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBmb3IgY29kZSBwb2ludCBiZXlvbmQgVStGRkZGXCIgdiBsZXhidWYgKVxuXG4jIDE0MTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzYxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTQxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdXJyb2dhdGVfcGFpcl9yZWMgdiB4IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3N0cmluZ2xpdCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiA5MVxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM2NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbGV0IGxlbiA9IGxleGJ1Zi5sZXhfY3Vycl9wb3MgLSBsZXhidWYubGV4X3N0YXJ0X3BvcyBpblxuICAgICAgICAgICBsZXQgcyA9IEJ5dGVzLmNyZWF0ZSAobGVuKzEpIGluXG4gICAgICAgICAgIEJ5dGVzLnNldCBzIDAgJ1wiJztcbiAgICAgICAgICAgQnl0ZXMuYmxpdCBsZXhidWYubGV4X2J1ZmZlciBsZXhidWYubGV4X3N0YXJ0X3BvcyBzIDEgbGVuO1xuICAgICAgICAgICBCeXRlcy50b19zdHJpbmcgc1xuICAgICAgICAgKVxuXG4jIDE0MzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0MzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMTQzOCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQzOSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDQ0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3N0cmluZ2xpdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGZpbmlzaF92YXJpYW50IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2ZpbmlzaF92YXJpYW50X3JlYyB2IGxleGJ1ZiAxMDJcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzc2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzNzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsZXQgeCA9IHJlYWRfanNvbiB2IGxleGJ1ZiBpblxuICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICByZWFkX2d0IHYgbGV4YnVmO1xuICAgICAgICAgICBTb21lIHggKVxuXG4jIDE0NTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0NTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDM4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzgwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggTm9uZSApXG5cbiMgMTQ2MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMzgxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMzgyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzODIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2x0IHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIDEwN1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfbHRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMTQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMzg2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDM4NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sdF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgMTExXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9ndF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMzkwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMTUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMzkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAzOTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJz4nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNTEyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTEzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAzOTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE1MTcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MTggXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2d0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9jb21tYSB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiAxMTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2NvbW1hX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAzOTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoICgpIClcblxuIyAxNTI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAzOTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDM5NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1MzQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1MzUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDM5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMzk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTUzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfY29tbWFfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBzdGFydF9hbnlfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9zdGFydF9hbnlfdmFyaWFudF9yZWMgdiBsZXhidWYgMTE5XG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBgRWRneV9icmFja2V0IClcblxuIyAxNTUxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTUyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA0MDEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgYERvdWJsZV9xdW90ZSApXG5cbiMgMTU1NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU1OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDAzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGBTcXVhcmVfYnJhY2tldCApXG5cbiMgMTU2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTU2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnPCcsICdcXFwiJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE1NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDQwNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfY29tbWVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgMTI1XG5hbmQgX19vY2FtbF9sZXhfZmluaXNoX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQwOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDE1ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIlVudGVybWluYXRlZCBjb21tZW50XCIgdiBsZXhidWYgKVxuXG4jIDE1ODkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDQxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbmV3bGluZSB2IGxleGJ1ZjsgZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE1OTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQxMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgNDExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggZmluaXNoX2NvbW1lbnQgdiBsZXhidWYgKVxuXG4jIDE1OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9maW5pc2hfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfZW9mIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIDEzMVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfZW9mX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggdHJ1ZSApXG5cbiMgMTYxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTYxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgXG4jIDQyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDE2MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2VvZl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIDEzM1xuYW5kIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIG5ld2xpbmUgdiBsZXhidWY7IHJlYWRfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDE2MjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE2MjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQyNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGZpbmlzaF9jb21tZW50IHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM0IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBuZXdsaW5lIHYgbGV4YnVmOyByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjM5IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0MjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCByZWFkX3NwYWNlIHYgbGV4YnVmIClcblxuIyAxNjQzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjQ0IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA0MjcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDI3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMTY0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3BhY2VfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX251bGwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiAxNDBcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bGxfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgIFxuIyA0MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAoICgpIClcblxuIyAxNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ251bGwnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA0MzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjcxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9udWxsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9udWxsX2lmX3Bvc3NpYmxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgMTQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9udWxsX2lmX3Bvc3NpYmxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCB0cnVlIClcblxuIyAxNjgyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNjgzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICBcbiMgNDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTY4NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTY4OCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbnVsbF9pZl9wb3NzaWJsZV9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYm9vbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIDE1MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYm9vbF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE2OTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIHRydWUgKVxuXG4jIDE3MDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDQ0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmYWxzZSApXG5cbiMgMTcxNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcxNSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAndHJ1ZScgb3IgJ2ZhbHNlJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTcxOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTcyMCBcImxpYi9yZWFkLm1sXCJcbiAgfCA1IC0+XG5cbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNDQ3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE3MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2Jvb2xfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludF9yZWMgdiBsZXhidWYgMTc2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgZXh0cmFjdF9wb3NpdGl2ZV9pbnQgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIEludF9vdmVyZmxvdyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludCBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxNzM4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzM5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IGV4dHJhY3RfbmVnYXRpdmVfaW50IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBJbnRfb3ZlcmZsb3cgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQgb3ZlcmZsb3dcIiB2IGxleGJ1ZiApXG5cbiMgMTc0NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTc0NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoICgqIFN1cHBvcnQgZm9yIGRvdWJsZS1xdW90ZWQgXCJpbnRzXCIgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgaW50IHdpbGwgcGFzcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkaW5nIGhleGFkZWNpbWFsIGFuZCBvY3RhbCBub3RhdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBlbWJlZGRlZCB1bmRlcnNjb3JlcyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRfb2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludGVnZXIgYnV0IGZvdW5kIGEgc3RyaW5nIHRoYXQgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9lc24ndCBldmVuIHJlcHJlc2VudCBhbiBpbnRlZ2VyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICAgICAgICAgIClcblxuIyAxNzYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzY0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0NzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIGludGVnZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE3NjggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3NjkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxNzczIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxNzc0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2ludDMyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIDE4NVxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfaW50MzJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCB0cnkgSW50MzIub2Zfc3RyaW5nIChMZXhpbmcubGV4ZW1lIGxleGJ1ZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXhlcl9lcnJvciBcIkludDMyIG92ZXJmbG93XCIgdiBsZXhidWYgKVxuXG4jIDE3ODcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE3ODggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDQ3NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCAoKiBTdXBwb3J0IGZvciBkb3VibGUtcXVvdGVkIFwiaW50c1wiICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBCdWZmZXIuY2xlYXIgdi5idWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcyA9IGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBBbnkgT0NhbWwtY29tcGxpYW50IGludCB3aWxsIHBhc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgbm90YXRpb25zLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgZW1iZWRkZWQgdW5kZXJzY29yZXMgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50MzIub2Zfc3RyaW5nIHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXN0b21fZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIkV4cGVjdGVkIGFuIGludDMyIGJ1dCBmb3VuZCBhIHN0cmluZyB0aGF0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvZXNuJ3QgZXZlbiByZXByZXNlbnQgYW4gaW50ZWdlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgICAgICAgICApXG5cbiMgMTgwNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgwNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCBpbnQzMiBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTgxMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTgxMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgNDkyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE4MTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4MTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2ludDMyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pbnQ2NCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiAxOTJcbmFuZCBfX29jYW1sX2xleF9yZWFkX2ludDY0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggdHJ5IEludDY0Lm9mX3N0cmluZyAoTGV4aW5nLmxleGVtZSBsZXhidWYpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV4ZXJfZXJyb3IgXCJJbnQzMiBvdmVyZmxvd1wiIHYgbGV4YnVmIClcblxuIyAxODI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODMwIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA0OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggKCogU3VwcG9ydCBmb3IgZG91YmxlLXF1b3RlZCBcImludHNcIiAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBmaW5pc2hfc3RyaW5nIHYgbGV4YnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogQW55IE9DYW1sLWNvbXBsaWFudCBpbnQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludDY0Lm9mX3N0cmluZyBzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhbiBpbnQ2NCBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGFuIGludGVnZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYgbGV4YnVmXG4gICAgICAgICAgICAgICAgICAgICAgICAgKVxuXG4jIDE4NDcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NDggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgaW50NjQgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE4NTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE4NTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDUxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxODU3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODU4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pbnQ2NF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbnVtYmVyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbnVtYmVyX3JlYyB2IGxleGJ1ZiAxOTlcbmFuZCBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIG5hbiApXG5cbiMgMTg2OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg3MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGluZmluaXR5IClcblxuIyAxODc0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODc1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbmVnX2luZmluaXR5IClcblxuIyAxODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxODgwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggZmxvYXRfb2Zfc3RyaW5nIChsZXhlbWUgbGV4YnVmKSApXG5cbiMgMTg4NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTg4NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgICAgIGxldCBzID0gZmluaXNoX3N0cmluZyB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICgqIEFueSBPQ2FtbC1jb21wbGlhbnQgZmxvYXQgd2lsbCBwYXNzLFxuICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIG5vdGF0aW9ucyxcbiAgICAgICAgICAgICAgICAgICAgICAgYW5kIGVtYmVkZGVkIHVuZGVyc2NvcmVzLiAqKVxuICAgICAgICAgICAgICAgICAgICBmbG9hdF9vZl9zdHJpbmcgc1xuICAgICAgICAgICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOYU5cIiAtPiBuYW5cbiAgICAgICAgICAgICAgICAgICAgICB8IFwiSW5maW5pdHlcIiAtPiBpbmZpbml0eVxuICAgICAgICAgICAgICAgICAgICAgIHwgXCItSW5maW5pdHlcIiAtPiBuZWdfaW5maW5pdHlcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJFeHBlY3RlZCBhIG51bWJlciBidXQgZm91bmQgYSBzdHJpbmcgdGhhdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2Vzbid0IGV2ZW4gcmVwcmVzZW50IGEgbnVtYmVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgIClcblxuIyAxOTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTA3IFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA1MzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIG51bWJlciBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMTkxMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTkxMiBcImxpYi9yZWFkLm1sXCJcbiAgfCA2IC0+XG5cbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNTM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDE5MTYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MTcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX251bWJlcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfc3RyaW5nIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiAyMzNcbmFuZCBfX29jYW1sX2xleF9yZWFkX3N0cmluZ19yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIGZpbmlzaF9zdHJpbmcgdiBsZXhidWYgKVxuXG4jIDE5MjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5MzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJ1xcXCInIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAxOTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMTkzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfc3RyaW5nX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiAyMzdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmNsZWFyIHYuYnVmO1xuICAgICAgICAgICAgICAgZmluaXNoX3N0cmluZyB2IGxleGJ1ZiApXG5cbiMgMTk1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5sZXRcblxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA1NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIHNcblxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuIyAxOTU4IFwibGliL3JlYWQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG5cbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHMgKVxuXG4jIDE5NjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5NjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5NjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAxOTcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAxOTczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIG1hcF9pZGVudCB2IGYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X21hcF9pZGVudF9yZWMgdiBmIGxleGJ1ZiAyNDJcbmFuZCBfX29jYW1sX2xleF9tYXBfaWRlbnRfcmVjIHYgZiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5jbGVhciB2LmJ1ZjtcbiAgICAgICAgICAgICAgIG1hcF9zdHJpbmcgdiBmIGxleGJ1ZiApXG5cbiMgMTk4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMTk4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTU5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIG1hcF9sZXhlbWUgZiBsZXhidWYgKVxuXG4jIDE5OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDE5OTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDE5OTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDAwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDAxIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfbWFwX2lkZW50X3JlYyB2IGYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3NlcXVlbmNlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3NlcXVlbmNlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjQ3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjAyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjAyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTc5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwMzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwMzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDM3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9zZXF1ZW5jZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xpc3RfcmV2X3JlYyByZWFkX2NlbGwgdiBsZXhidWYgMjUxXG5hbmQgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU4MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIFtdIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9jZWxsIHYgbGV4YnVmIDo6ICFhY2M7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCB2IGxleGJ1ZiA6OiAhYWNjO1xuICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjA2MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA2MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNTk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIwNjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwNjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDU5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMDcyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMDczIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9saXN0X3Jldl9yZWMgcmVhZF9jZWxsIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2FycmF5X2VuZCBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9lbmRfcmVjIGxleGJ1ZiAyNTVcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X2VuZF9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDIwODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIwODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjA4OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjA5MCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfYXJyYXlfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiAyNTdcbmFuZCBfX29jYW1sX2xleF9yZWFkX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjA2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTAxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTAyIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX2FycmF5IClcblxuIyAyMTA2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTA3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIxMTEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxMTIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDYwOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMTE2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTE3IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hcnJheV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlIHJlYWRfY2VsbCBpbml0X2FjYyB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgMjYyXG5hbmQgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9yZWMgcmVhZF9jZWxsIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDYxMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA2MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgNjE1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIGxldCBwb3MgPSByZWYgMCBpblxuICAgICAgICAgICAgICAgICAgICAgbGV0IGFjYyA9IHJlZiBpbml0X2FjYyBpblxuICAgICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYWNjIDo9IHJlYWRfY2VsbCAhcG9zICFhY2MgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGFjYyA6PSByZWFkX2NlbGwgIXBvcyAhYWNjIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX3R1cGxlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICAgICAgXG4jIDYzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyMTUwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTUxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2MzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjE1NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE1NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIxNjAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxNjEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3JlYyByZWFkX2NlbGwgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZF9yZWMgbGV4YnVmIDI2NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjE3MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjE3MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMTc3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMTc4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF90dXBsZV9lbmQyIHYgc3RkIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiAyNjhcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX2VuZDJfcmVjIHYgc3RkIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggaWYgc3RkIHRoZW5cbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDIxOTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIxOTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY0OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBpZiBzdGQgdGhlblxuICAgICAgICAgICAgICAgICByYWlzZSBFbmRfb2ZfdHVwbGVcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgbG9uZ19lcnJvciBcIkV4cGVjdGVkICddJyBvciAnJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjIwMCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjIwMSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjA1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjA2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9lbmQyX3JlYyB2IHN0ZCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfdHVwbGVfc2VwIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwX3JlYyB2IGxleGJ1ZiAyNzFcbmFuZCBfX29jYW1sX2xleF9yZWFkX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMjE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjE4IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAyMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcsJyBvciAnKScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIyMjcgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIyMjggXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMjMyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjMzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3R1cGxlX3NlcDIgdiBzdGQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIDI3NlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjI0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjYyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZSApXG5cbiMgMjI1MiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI1MyBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjY2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGlmIHN0ZCB0aGVuXG4gICAgICAgICAgICAgICAgIHJhaXNlIEVuZF9vZl90dXBsZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjI2MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI2MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjcwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJyknIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMjY2IFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA2NzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjI3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjI3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfdHVwbGVfc2VwMl9yZWMgdiBzdGQgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIDI4MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfYWJzdHJhY3RfZmllbGRzX3JlYyByZWFkX2tleSByZWFkX2ZpZWxkIGluaXRfYWNjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY3NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsZXQgYWNjID0gcmVmIGluaXRfYWNjIGluXG4gICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgbGV0IGZpZWxkX25hbWUgPSByZWFkX2tleSB2IGxleGJ1ZiBpblxuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX2NvbG9uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGxldCBmaWVsZF9uYW1lID0gcmVhZF9rZXkgdiBsZXhidWYgaW5cbiAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICBhY2MgOj0gcmVhZF9maWVsZCAhYWNjIGZpZWxkX25hbWUgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICFhY2NcbiAgICAgICAgICAgICApXG5cbiMgMjMwNCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMwNSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNjk4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAneycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDIzMDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDY5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyMzE0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzE1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9hYnN0cmFjdF9maWVsZHNfcmVjIHJlYWRfa2V5IHJlYWRfZmllbGQgaW5pdF9hY2MgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfbGN1cmwgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgMjg2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sY3VybF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzAyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzI2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzI3IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICd7JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjMzMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjMzMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDIzMzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDIzMzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2xjdXJsX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9vYmplY3RfZW5kIGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiAyOTBcbmFuZCBfX29jYW1sX2xleF9yZWFkX29iamVjdF9lbmRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzU0IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9vYmplY3RfZW5kX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIDI5MlxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzExIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzY2IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggcmFpc2UgRW5kX29mX29iamVjdCApXG5cbiMgMjM3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyMzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzc2IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjM4MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM4MSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgMjk3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9jb2xvbl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyMzkyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyMzkzIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjM5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjM5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0MDIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MDMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX2NvbG9uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgc3RhcnRfYW55X3R1cGxlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3N0YXJ0X2FueV90dXBsZV9yZWMgdiBsZXhidWYgMzAxXG5hbmQgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggZmFsc2UgKVxuXG4jIDI0MTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCB0cnVlIClcblxuIyAyNDE5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDIwIFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcoJyBvciAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0MjQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0MjUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDI5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDMwIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfc3RhcnRfYW55X3R1cGxlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgcmVhZF9scGFyIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgMzA2XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9scGFyX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MjggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDI0NDEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NDIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDcyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJygnIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNDQ2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDQ3IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ1MSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ1MiBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3JlYWRfbHBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlYWRfcnBhciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIDMxMFxuYW5kIF9fb2NhbWxfbGV4X3JlYWRfcnBhcl9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNDYzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDY0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA3MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjQ2OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ2OSBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDI0NzMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0NzQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWFkX3JwYXJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX2xicl9yZWMgdiBsZXhidWYgMzE0XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDczOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjQ4NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjQ4NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzM5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnWycgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI0OTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI0OTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNDk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNDk2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX3JiciB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWFkX3Jicl9yZWMgdiBsZXhidWYgMzE4XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUwNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUwOCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgNzQ0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnXScgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI1MTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1MTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDc0NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNTE3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTE4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9yYnJfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBza2lwX2pzb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9qc29uX3JlYyB2IGxleGJ1ZiAzMjJcbmFuZCBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjUyOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjUzMCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzUyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTM0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTM1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1MzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCAoKSApXG5cbiMgMjU0NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjU0NSBcImxpYi9yZWFkLm1sXCJcbiAgfCA0IC0+XG5cbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgNzU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTQ5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTUwIFwibGliL3JlYWQubWxcIlxuICB8IDUgLT5cblxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNiAtPlxuXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDc1NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgKVxuXG4jIDI1NTkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NjAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDc1OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA3NTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAyNTY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTY1IFwibGliL3JlYWQubWxcIlxuICB8IDggLT5cblxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgIFxuIyA3NTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICggKCkgKVxuXG4jIDI1NjkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI1NzAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOSAtPlxuXG4jIDc2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIHRyeVxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfb2JqZWN0X2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBza2lwX2lkZW50IHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX29iamVjdF9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl9vYmplY3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNTk1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNTk2IFwibGliL3JlYWQubWxcIlxuICB8IDEwIC0+XG5cbiMgNzg0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDc4NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgcmVhZF9hcnJheV9lbmQgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX2FycmF5X3NlcCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgc2tpcF9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHdpdGggRW5kX29mX2FycmF5IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjYxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjYxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxMSAtPlxuXG4jIDc5OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA3OTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgODAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICByZWFkX3R1cGxlX2VuZCBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF90dXBsZV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBza2lwX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfdHVwbGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgXG4jIDgxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyNjM2IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjM3IFwibGliL3JlYWQubWxcIlxuICB8IDEyIC0+XG5cbiMgODE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgxOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgIFxuIyA4MjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIHNraXBfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZlxuICAgICAgICAgICAgICAgICBcbiMgODI4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI2NTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTMgLT5cblxuIyA4MzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBza2lwX2pzb24gdiBsZXhidWYgKVxuXG4jIDI2NTUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2NTYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTQgLT5cblxuIyA4MzEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBmaW5pc2hfY29tbWVudCB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjYxIFwibGliL3JlYWQubWxcIlxuICB8IDE1IC0+XG5cbiMgODMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbmV3bGluZSB2IGxleGJ1Zjsgc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjY1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjY2IFwibGliL3JlYWQubWxcIlxuICB8IDE2IC0+XG5cbiMgODMzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggc2tpcF9qc29uIHYgbGV4YnVmIClcblxuIyAyNjcwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNjcxIFwibGliL3JlYWQubWxcIlxuICB8IDE3IC0+XG5cbiMgODM0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDgzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjY3NSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY3NiBcImxpYi9yZWFkLm1sXCJcbiAgfCAxOCAtPlxuXG4jIDgzNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA4MzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJJbnZhbGlkIHRva2VuXCIgdiBsZXhidWYgKVxuXG4jIDI2ODAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2ODEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9za2lwX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfc2tpcF9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiAzNzhcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg0MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggKCkgKVxuXG4jIDI2OTIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI2OTMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDg0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgODQyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjY5NyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjY5OCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODQzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzAyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzAzIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX3NraXBfdmFyaWFudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiAzODlcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfc2tpcF92YXJpYW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA4NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDg0NiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIHNraXBfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgcmVhZF9ndCB2IGxleGJ1ZiApXG5cbiMgMjcxNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcxNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODQ5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCAoKSApXG5cbiMgMjcyMSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyMiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgODUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJzonIG9yICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMjcyNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjcyNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODUxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA4NTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyNzMxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzMyIFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX3NraXBfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHNraXBfaWRlbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgMzk0XG5hbmQgX19vY2FtbF9sZXhfc2tpcF9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9za2lwX3N0cmluZ2xpdCB2IGxleGJ1ZiApXG5cbiMgMjc0MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc0NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgODU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAyNzQ4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzQ5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkIHN0cmluZyBvciBpZGVudGlmaWVyIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAyNzUzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzU0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA4NTcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjc1OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc1OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3NraXBfaWRlbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfanNvbiB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfanNvbl9yZWMgdiBsZXhidWYgMzk5XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX2pzb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgXG4jIDg3MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZiApXG5cbiMgMjc3MCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjc3MSBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICBcbiMgODcyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyNzc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyNzc2IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA4NzMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgODczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCB0cnlcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAneyc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfb2JqZWN0X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9jb2xvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9vYmplY3Rfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfY29sb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2Zfb2JqZWN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICApXG5cbiMgMjgwMiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjgwMyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgODk3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDg5NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggdHJ5XG4gICAgICAgICAgICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ1snO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2FycmF5X2VuZCB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9hcnJheV9zZXAgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBkb25lO1xuICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgd2l0aCBFbmRfb2ZfYXJyYXkgLT5cbiAgICAgICAgICAgICAgICAgICAgICgpXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODIxIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODIyIFwibGliL3JlYWQubWxcIlxuICB8IDQgLT5cblxuIyA5MTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgXG4jIDkxNSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcoJztcbiAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfZW5kIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfdHVwbGVfc2VwIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJfanNvbiB2IGxleGJ1ZjtcbiAgICAgICAgICAgICAgICAgICAgICAgZG9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB3aXRoIEVuZF9vZl90dXBsZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICBcbiMgOTMyIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKVxuXG4jIDI4NDUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NDYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNSAtPlxuXG4jIDkzNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5MzQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgICBcbiMgOTM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPCc7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfaWRlbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBidWZmZXJfc3BhY2UgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWZcbiAgICAgICAgICAgICAgICAgXG4jIDk0NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIClcblxuIyAyODYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODYxIFwibGliL3JlYWQubWxcIlxuICB8IDYgLT5cblxuIyA5NDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTQ2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNyAtPlxuXG4jIDk0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICAgICAgICAgICAgICAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgICAgICAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4NzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4NzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgOCAtPlxuXG4jIDk1MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgIFxuIyA5NTAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgICAgICAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl9qc29uIHYgbGV4YnVmIClcblxuIyAyODc5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODgwIFwibGliL3JlYWQubWxcIlxuICB8IDkgLT5cblxuIyA5NTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTUzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjsgYnVmZmVyX2pzb24gdiBsZXhidWYgKVxuXG4jIDI4ODQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI4ODUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMTAgLT5cblxuIyA5NTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICBcbiMgOTU0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyODg5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyODkwIFwibGliL3JlYWQubWxcIlxuICB8IDExIC0+XG5cbiMgOTU1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgXG4jIDk1NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgdG9rZW5cIiB2IGxleGJ1ZiApXG5cbiMgMjg5NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjg5NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9qc29uX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIDQ1MFxuYW5kIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfc3RyaW5nbGl0X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5NjEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk2MSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXCInO1xuICAgICAgICAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZlxuICAgICAgICAgKVxuXG4jIDI5MDggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MDkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDk2NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkludmFsaWQgc3RyaW5nIGxpdGVyYWxcIiB2IGxleGJ1ZiApXG5cbiMgMjkxMyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjkxNCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgOTY1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyA5NjUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9zdHJpbmdsaXRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX3ZhcmlhbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl92YXJpYW50X3JlYyB2IGxleGJ1ZiA0NjFcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX3ZhcmlhbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDk2OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTY4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICc6JztcbiAgICAgICAgICAgYnVmZmVyX2pzb24gdiBsZXhidWY7XG4gICAgICAgICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgYnVmZmVyX2d0IHYgbGV4YnVmIClcblxuIyAyOTMzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTM0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDk3MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnPicgKVxuXG4jIDI5MzggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5MzkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTczIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc6JyBvciAnPicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NDMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NDQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk3NCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgOTc0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMjk0OCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMjk0OSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfdmFyaWFudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl9pZGVudCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfaWRlbnRfcmVjIHYgbGV4YnVmIDQ2NlxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9pZGVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgOTc3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGZpbmlzaF9idWZmZXJfc3RyaW5nbGl0IHYgbGV4YnVmIClcblxuIyAyOTYwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTYxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyA5NzggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWYgKVxuXG4jIDI5NjUgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NjYgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk3OSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgc3RyaW5nIG9yIGlkZW50aWZpZXIgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDI5NzAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDI5NzEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMyAtPlxuXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDk4MCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAyOTc1IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTc2IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2lkZW50X3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX3NwYWNlIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9zcGFjZV9yZWMgdiBsZXhidWYgNDcxXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyA5ODMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTgzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIGFkZF9sZXhlbWUgdi5idWYgbGV4YnVmO1xuICAgIG5ld2xpbmUgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTkwIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTkxIFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyA5ODcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTg3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfc3RyaW5nIHYuYnVmIFwiLypcIjtcbiAgICBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWY7XG4gICAgYnVmZmVyX3NwYWNlIHYgbGV4YnVmIClcblxuIyAyOTk4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAyOTk5IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyA5OTEgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiMgOTkxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICBuZXdsaW5lIHYgbGV4YnVmO1xuICAgIGJ1ZmZlcl9zcGFjZSB2IGxleGJ1ZiApXG5cbiMgMzAwNiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzAwNyBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgOTk1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4jIDk5NSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcbiAgICBhZGRfbGV4ZW1lIHYuYnVmIGxleGJ1ZjtcbiAgICBidWZmZXJfc3BhY2UgdiBsZXhidWYgKVxuXG4jIDMwMTMgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMTQgXCJsaWIvcmVhZC5tbFwiXG4gIHwgNCAtPlxuXG4jIDk5OCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIyA5OTggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoICgpIClcblxuIyAzMDE4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDE5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3NwYWNlX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX29iamVjdF9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIDQ3OFxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9vYmplY3RfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDAxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAwMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKFxuICAgICAgQnVmZmVyLmFkZF9jaGFyIHYuYnVmICd9JztcbiAgICAgIHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwMzIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwMzMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA0IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMDM3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDM4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfb2JqZWN0X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfb2JqZWN0X3NlcF9yZWMgdiBsZXhidWYgNDgwXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMDcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnLCcgKVxuXG4jIDMwNDkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMDggXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnfSc7IHJhaXNlIEVuZF9vZl9vYmplY3QgKVxuXG4jIDMwNTQgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwNTUgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMDkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDA5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ30nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMDU5IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDYwIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDEwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMDY0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDY1IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX29iamVjdF9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfYXJyYXlfZW5kIHYgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIDQ4NVxuYW5kIF9fb2NhbWxfbGV4X2J1ZmZlcl9hcnJheV9lbmRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDEzIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXSc7IHJhaXNlIEVuZF9vZl9hcnJheSApXG5cbiMgMzA3NiBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzA3NyBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAxNCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMTQgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggKCkgKVxuXG4jIDMwODEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwODIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfZW5kX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG5hbmQgYnVmZmVyX2FycmF5X3NlcCB2IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiA0ODdcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfYXJyYXlfc2VwX3JlYyB2IGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cblxuIyAxMDE3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxNyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJywnIClcblxuIyAzMDkzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMDk0IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDE4IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAxOCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJ10nOyByYWlzZSBFbmRfb2ZfYXJyYXkgKVxuXG4jIDMwOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMwOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMTkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDE5IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnLCcgb3IgJ10nIGJ1dCBmb3VuZFwiIHYgbGV4YnVmIClcblxuIyAzMTAzIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA0IFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDIwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAyMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBjdXN0b21fZXJyb3IgXCJVbmV4cGVjdGVkIGVuZCBvZiBpbnB1dFwiIHYgbGV4YnVmIClcblxuIyAzMTA4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTA5IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX2FycmF5X3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9lbmQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgNDkyXG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyMyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIChcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnKSc7XG4gICAgICByYWlzZSBFbmRfb2ZfdHVwbGUgKVxuXG4jIDMxMjIgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxMjMgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMjYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDI2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoICgpIClcblxuIyAzMTI3IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTI4IFwibGliL3JlYWQubWxcIlxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX2VuZF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGJ1ZmZlcl90dXBsZV9zZXAgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgNDk0XG5hbmQgX19vY2FtbF9sZXhfYnVmZmVyX3R1cGxlX3NlcF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTAyOSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMjkgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcsJyApXG5cbiMgMzEzOSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE0MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAxIC0+XG5cbiMgMTAzMCBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggQnVmZmVyLmFkZF9jaGFyIHYuYnVmICcpJzsgcmFpc2UgRW5kX29mX3R1cGxlIClcblxuIyAzMTQ0IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTQ1IFwibGliL3JlYWQubWxcIlxuICB8IDIgLT5cblxuIyAxMDMxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICBcbiMgMTAzMSBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgKCBsb25nX2Vycm9yIFwiRXhwZWN0ZWQgJywnIG9yICcpJyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE0OSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1MCBcImxpYi9yZWFkLm1sXCJcbiAgfCAzIC0+XG5cbiMgMTAzMiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwMzIgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggY3VzdG9tX2Vycm9yIFwiVW5leHBlY3RlZCBlbmQgb2YgaW5wdXRcIiB2IGxleGJ1ZiApXG5cbiMgMzE1NCBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE1NSBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2J1ZmZlcl90dXBsZV9zZXBfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfY29sb24gdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2NvbG9uX3JlYyB2IGxleGJ1ZiA0OTlcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwMzUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM1IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnOicgKVxuXG4jIDMxNjYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNjcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwMzYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM2IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGxvbmdfZXJyb3IgXCJFeHBlY3RlZCAnOicgYnV0IGZvdW5kXCIgdiBsZXhidWYgKVxuXG4jIDMxNzEgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzIgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMiAtPlxuXG4jIDEwMzcgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgIFxuIyAxMDM3IFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxNzYgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxNzcgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfY29sb25fcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBidWZmZXJfZ3QgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfYnVmZmVyX2d0X3JlYyB2IGxleGJ1ZiA1MDNcbmFuZCBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDAgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX2NoYXIgdi5idWYgJz4nIClcblxuIyAzMTg4IFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMTg5IFwibGliL3JlYWQubWxcIlxuICB8IDEgLT5cblxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDQxIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggbG9uZ19lcnJvciBcIkV4cGVjdGVkICc+JyBidXQgZm91bmRcIiB2IGxleGJ1ZiApXG5cbiMgMzE5MyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzE5NCBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0MiBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIGN1c3RvbV9lcnJvciBcIlVuZXhwZWN0ZWQgZW5kIG9mIGlucHV0XCIgdiBsZXhidWYgKVxuXG4jIDMxOTggXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMxOTkgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9idWZmZXJfZ3RfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCBmaW5pc2hfYnVmZmVyX2NvbW1lbnQgdiBsZXhidWYgPVxuICAgX19vY2FtbF9sZXhfZmluaXNoX2J1ZmZlcl9jb21tZW50X3JlYyB2IGxleGJ1ZiA1MDdcbmFuZCBfX29jYW1sX2xleF9maW5pc2hfYnVmZmVyX2NvbW1lbnRfcmVjIHYgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLmVuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDUgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBCdWZmZXIuYWRkX3N0cmluZyB2LmJ1ZiBcIiovXCIgKVxuXG4jIDMyMTAgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyMTEgXCJsaWIvcmVhZC5tbFwiXG4gIHwgMSAtPlxuXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgXG4jIDEwNDYgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgKCBsb25nX2Vycm9yIFwiVW50ZXJtaW5hdGVkIGNvbW1lbnRcIiB2IGxleGJ1ZiApXG5cbiMgMzIxNSBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIxNiBcImxpYi9yZWFkLm1sXCJcbiAgfCAyIC0+XG5cbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICBcbiMgMTA0NyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAoIEJ1ZmZlci5hZGRfY2hhciB2LmJ1ZiAnXFxuJztcbiAgICAgICAgICAgbmV3bGluZSB2IGxleGJ1ZjtcbiAgICAgICAgICAgZmluaXNoX2J1ZmZlcl9jb21tZW50IHYgbGV4YnVmIClcblxuIyAzMjIyIFwibGliL3JlYWQubWxcIlxuXG4gIFxuIyAzMjIzIFwibGliL3JlYWQubWxcIlxuICB8IDMgLT5cblxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgIFxuIyAxMDUwIFwibGliL3JlYWQubWxsXCJcbiAgICAgICAgICggYWRkX2xleGVtZSB2LmJ1ZiBsZXhidWY7IGZpbmlzaF9idWZmZXJfY29tbWVudCB2IGxleGJ1ZiApXG5cbiMgMzIyNyBcImxpYi9yZWFkLm1sXCJcblxuICBcbiMgMzIyOCBcImxpYi9yZWFkLm1sXCJcbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X2ZpbmlzaF9idWZmZXJfY29tbWVudF9yZWMgdiBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGp1bmsgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2p1bmtfcmVjIGxleGJ1ZiA1MTNcbmFuZCBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG5cbiMgMTA1MyBcImxpYi9yZWFkLm1sbFwiXG4gICAgICAgICAgICAgXG4jIDEwNTMgXCJsaWIvcmVhZC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLmxleGVtZSBsZXhidWYgKVxuXG4jIDMyMzkgXCJsaWIvcmVhZC5tbFwiXG5cbiAgXG4jIDMyNDAgXCJsaWIvcmVhZC5tbFwiXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9qdW5rX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuOztcblxuXG4jIDEwNTUgXCJsaWIvcmVhZC5tbGxcIlxuIFxuICBcbiMgMTA1NiBcImxpYi9yZWFkLm1sbFwiXG4gIGxldCBfID0gKHJlYWRfanNvbiA6IGxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gdClcblxuICBsZXQgcmVhZF90ID0gcmVhZF9qc29uXG5cbiAgbGV0ICgpID1cbiAgICByZWFkX2p1bmsgOj0ganVua1xuXG4gIGxldCByZWFkX2ludDggdiBsZXhidWYgPVxuICAgIGxldCBuID0gcmVhZF9pbnQgdiBsZXhidWYgaW5cbiAgICBpZiBuIDwgMCB8fCBuID4gMjU1IHRoZW5cbiAgICAgIGxleGVyX2Vycm9yIFwiSW50OCBvdmVyZmxvd1wiIHYgbGV4YnVmXG4gICAgZWxzZVxuICAgICAgY2hhcl9vZl9pbnQgblxuXG4gIGxldCByZWFkX2xpc3QgcmVhZF9jZWxsIHYgbGV4YnVmID1cbiAgICBMaXN0LnJldiAocmVhZF9saXN0X3JldiByZWFkX2NlbGwgdiBsZXhidWYpXG5cbiAgbGV0IGFycmF5X29mX3Jldl9saXN0IGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICBbXSAtPiBbfCB8XVxuICAgICAgfCB4IDo6IHRsIC0+XG4gICAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgICBsZXQgYSA9IEFycmF5Lm1ha2UgbGVuIHggaW5cbiAgICAgICAgICBsZXQgciA9IHJlZiB0bCBpblxuICAgICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgICAgYS4oaSkgPC0gTGlzdC5oZCAhcjtcbiAgICAgICAgICAgIHIgOj0gTGlzdC50bCAhclxuICAgICAgICAgIGRvbmU7XG4gICAgICAgICAgYVxuXG4gIGxldCByZWFkX2FycmF5IHJlYWRfY2VsbCB2IGxleGJ1ZiA9XG4gICAgbGV0IGwgPSByZWFkX2xpc3RfcmV2IHJlYWRfY2VsbCB2IGxleGJ1ZiBpblxuICAgIGFycmF5X29mX3Jldl9saXN0IGxcblxuICAoKiBSZWFkIGEgSlNPTiBvYmplY3QsIHJlYWRpbmcgdGhlIGtleXMgaW50byBPQ2FtbCBzdHJpbmdzXG4gICAgIChwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSkgKilcbiAgbGV0IHJlYWRfZmllbGRzIHJlYWRfZmllbGQgaW5pdF9hY2MgdiA9XG4gICAgcmVhZF9hYnN0cmFjdF9maWVsZHMgcmVhZF9pZGVudCByZWFkX2ZpZWxkIGluaXRfYWNjIHZcblxuICBsZXQgZmluaXNoIHYgbGV4YnVmID1cbiAgICByZWFkX3NwYWNlIHYgbGV4YnVmO1xuICAgIGlmIG5vdCAocmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBsb25nX2Vycm9yIFwiSnVuayBhZnRlciBlbmQgb2YgSlNPTiB2YWx1ZTpcIiB2IGxleGJ1ZlxuXG4gIGxldCBpbml0X2xleGVyID0gaW5pdF9sZXhlclxuXG4gIGxldCBmcm9tX2xleGJ1ZiB2ID8oc3RyZWFtID0gZmFsc2UpIGxleGJ1ZiA9XG4gICAgcmVhZF9zcGFjZSB2IGxleGJ1ZjtcblxuICAgIGxldCB4ID1cbiAgICAgIGlmIHJlYWRfZW9mIGxleGJ1ZiB0aGVuXG4gICAgICAgIHJhaXNlIEVuZF9vZl9pbnB1dFxuICAgICAgZWxzZVxuICAgICAgICByZWFkX2pzb24gdiBsZXhidWZcbiAgICBpblxuXG4gICAgaWYgbm90IHN0cmVhbSB0aGVuXG4gICAgICBmaW5pc2ggdiBsZXhidWY7XG5cbiAgICB4XG5cblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2NoYW5uZWwgP2J1ZiA/Zm5hbWUgP2xudW0gaWMgPVxuICAgIHRyeVxuICAgICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICAgIGxldCB2ID0gaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgICAgZnJvbV9sZXhidWYgdiBsZXhidWZcbiAgICB3aXRoIEVuZF9vZl9pbnB1dCAtPlxuICAgICAganNvbl9lcnJvciBcIkJsYW5rIGlucHV0IGRhdGFcIlxuXG4gIGxldCBmcm9tX2ZpbGUgP2J1ZiA/Zm5hbWUgP2xudW0gZmlsZSA9XG4gICAgbGV0IGljID0gb3Blbl9pbiBmaWxlIGluXG4gICAgdHJ5XG4gICAgICBsZXQgeCA9IGZyb21fY2hhbm5lbCA/YnVmID9mbmFtZSA/bG51bSBpYyBpblxuICAgICAgY2xvc2VfaW4gaWM7XG4gICAgICB4XG4gICAgd2l0aCBlIC0+XG4gICAgICBjbG9zZV9pbl9ub2VyciBpYztcbiAgICAgIHJhaXNlIGVcblxuICBleGNlcHRpb24gRmluYWxseSBvZiBleG4gKiBleG5cblxuICBsZXQgc2VxX2Zyb21fbGV4YnVmIHYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIGxleGJ1ZiA9XG4gICAgbGV0IHN0cmVhbSA9IFNvbWUgdHJ1ZSBpblxuICAgIGxldCByZWMgZiAoKSA9XG4gICAgICB0cnkgU2VxLkNvbnMgKGZyb21fbGV4YnVmIHYgP3N0cmVhbSBsZXhidWYsIGYpXG4gICAgICB3aXRoXG4gICAgICAgICAgRW5kX29mX2lucHV0IC0+XG4gICAgICAgICAgICBmaW4gKCk7XG4gICAgICAgICAgICBTZXEuTmlsXG4gICAgICAgIHwgZSAtPlxuICAgICAgICAgICAgKHRyeSBmaW4gKCkgd2l0aCBmaW5fZSAtPiByYWlzZSAoRmluYWxseSAoZSwgZmluX2UpKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICBmXG5cbiAgbGV0IHNlcV9mcm9tX3N0cmluZyA/YnVmID9mbmFtZSA/bG51bSBzID1cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSBpYyA9XG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgaWMgaW5cbiAgICBsZXQgdiA9IGluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgdiA/ZmluIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgP2ZuYW1lID9sbnVtIGZpbGUgPVxuICAgIGxldCBpYyA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBmaW4gKCkgPSBjbG9zZV9pbiBpYyBpblxuICAgIGxldCBmbmFtZSA9XG4gICAgICBtYXRjaCBmbmFtZSB3aXRoXG4gICAgICAgICAgTm9uZSAtPiBTb21lIGZpbGVcbiAgICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IHYgPSBpbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgc2VxX2Zyb21fbGV4YnVmIHYgfmZpbiBsZXhidWZcblxuICB0eXBlIGpzb25fbGluZSA9IFsgYEpzb24gb2YgdCB8IGBFeG4gb2YgZXhuIF1cblxuICBsZXQgbGluZXNlcV9mcm9tX2NoYW5uZWxcbiAgICAgID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZSA/bG51bToobG51bTAgPSAxKSBpYyA9XG4gICAgbGV0IGJ1ZiA9XG4gICAgICBtYXRjaCBidWYgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSAoQnVmZmVyLmNyZWF0ZSAyNTYpXG4gICAgICAgIHwgU29tZSBfIC0+IGJ1ZlxuICAgIGluXG4gICAgbGV0IHJlYyBmIGxudW0gPSBmdW4gKCkgLT5cbiAgICAgIHRyeVxuICAgICAgICBsZXQgbGluZSA9IGlucHV0X2xpbmUgaWMgaW5cbiAgICAgICAgU2VxLkNvbnMgKGBKc29uIChmcm9tX3N0cmluZyA/YnVmID9mbmFtZSB+bG51bSBsaW5lKSwgZiAobG51bSArIDEpKVxuICAgICAgd2l0aFxuICAgICAgICAgIEVuZF9vZl9maWxlIC0+IGZpbiAoKTsgU2VxLk5pbFxuICAgICAgICB8IGUgLT4gU2VxLkNvbnMgKGBFeG4gZSwgZiAobG51bSArIDEpKVxuICAgIGluXG4gICAgZiBsbnVtMFxuXG4gIGxldCBsaW5lc2VxX2Zyb21fZmlsZSA/YnVmID9mbmFtZSA/bG51bSBmaWxlID1cbiAgICBsZXQgaWMgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW4gaWMgaW5cbiAgICBsZXQgZm5hbWUgPVxuICAgICAgbWF0Y2ggZm5hbWUgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gU29tZSBmaWxlXG4gICAgICAgIHwgeCAtPiB4XG4gICAgaW5cbiAgICBsaW5lc2VxX2Zyb21fY2hhbm5lbCA/YnVmIH5maW4gP2ZuYW1lID9sbnVtIGljXG5cbiAgbGV0IHByZXR0aWZ5ID9zdGQgcyA9XG4gICAgcHJldHR5X3RvX3N0cmluZyA/c3RkIChmcm9tX3N0cmluZyBzKVxuXG4gIGxldCBjb21wYWN0ID9zdGQgcyA9XG4gICAgdG9fc3RyaW5nIChmcm9tX3N0cmluZyBzKVxuXG5cbiMgMzQwOCBcImxpYi9yZWFkLm1sXCJcbiMgOTcgXCJ5b2pzb24uY3Bwby5tbFwiXG5tb2R1bGUgVXRpbCA9XG5zdHJ1Y3RcbiMgMSBcInV0aWwubWxcIlxuZXhjZXB0aW9uIFR5cGVfZXJyb3Igb2Ygc3RyaW5nICogdFxuXG5sZXQgdHlwZW9mID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgXyAtPiBcIm9iamVjdFwiXG4gIHwgYEJvb2wgXyAtPiBcImJvb2xcIlxuICB8IGBGbG9hdCBfIC0+IFwiZmxvYXRcIlxuICBcbiMgMTAgXCJ1dGlsLm1sXCJcbiAgfCBgTGlzdCBfIC0+IFwiYXJyYXlcIlxuICB8IGBOdWxsIC0+IFwibnVsbFwiXG4gIHwgYFN0cmluZyBfIC0+IFwic3RyaW5nXCJcbiAgfCBgSW50bGl0IF8gLT4gXCJpbnRsaXRcIlxuICB8IGBGbG9hdGxpdCBfIC0+IFwiZmxvYXRsaXRcIlxuICBcbiMgMTYgXCJ1dGlsLm1sXCJcbiAgfCBgU3RyaW5nbGl0IF8gLT4gXCJzdHJpbmdsaXRcIlxuICBcbiMgMTggXCJ1dGlsLm1sXCJcbiAgfCBgVHVwbGUgXyAtPiBcInR1cGxlXCJcbiAgfCBgVmFyaWFudCBfIC0+IFwidmFyaWFudFwiXG5cbmxldCB0eXBlcnIgbXNnIGpzID0gcmFpc2UgKFR5cGVfZXJyb3IgKG1zZyBeIHR5cGVvZiBqcywganMpKVxuXG5leGNlcHRpb24gVW5kZWZpbmVkIG9mIHN0cmluZyAqIHRcblxubGV0IGFzc29jIG5hbWUgb2JqID0gdHJ5IExpc3QuYXNzb2MgbmFtZSBvYmogd2l0aCBOb3RfZm91bmQgLT4gYE51bGxcblxubGV0IG1lbWJlciBuYW1lID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IGFzc29jIG5hbWUgb2JqXG4gIHwganMgLT4gdHlwZXJyIChcIkNhbid0IGdldCBtZW1iZXIgJ1wiIF4gbmFtZSBeIFwiJyBvZiBub24tb2JqZWN0IHR5cGUgXCIpIGpzXG5cbmxldCByZWMgcGF0aCBsIG9iaiA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFNvbWUgb2JqXG4gIHwga2V5IDo6IGwgLT4gKFxuICAgICAgbWF0Y2ggb2JqIHdpdGhcbiAgICAgIHwgYEFzc29jIGFzc29jIC0+IChcbiAgICAgICAgICBtYXRjaCBMaXN0LmFzc29jIGtleSBhc3NvYyB3aXRoXG4gICAgICAgICAgfCBvYmogLT4gcGF0aCBsIG9ialxuICAgICAgICAgIHwgZXhjZXB0aW9uIE5vdF9mb3VuZCAtPiBOb25lKVxuICAgICAgfCBfIC0+IE5vbmUpXG5cbmxldCBpbmRleCBpID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIGpzIC0+XG4gICAgICBsZXQgbGVuID0gTGlzdC5sZW5ndGggbCBpblxuICAgICAgbGV0IHdyYXBwZWRfaW5kZXggPSBpZiBpIDwgMCB0aGVuIGxlbiArIGkgZWxzZSBpIGluXG4gICAgICBpZiB3cmFwcGVkX2luZGV4IDwgMCB8fCB3cmFwcGVkX2luZGV4ID49IGxlbiB0aGVuXG4gICAgICAgIHJhaXNlIChVbmRlZmluZWQgKFwiSW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvdXQgb2YgYm91bmRzXCIsIGpzKSlcbiAgICAgIGVsc2UgTGlzdC5udGggbCB3cmFwcGVkX2luZGV4XG4gIHwganMgLT5cbiAgICAgIHR5cGVyciAoXCJDYW4ndCBnZXQgaW5kZXggXCIgXiBzdHJpbmdfb2ZfaW50IGkgXiBcIiBvZiBub24tYXJyYXkgdHlwZSBcIikganNcblxubGV0IG1hcCBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+IGBMaXN0IChMaXN0Lm1hcCBmIGwpXG4gIHwganMgLT4gdHlwZXJyIFwiQ2FuJ3QgbWFwIGZ1bmN0aW9uIG92ZXIgbm9uLWFycmF5IHR5cGUgXCIganNcblxubGV0IHRvX2Fzc29jID0gZnVuY3Rpb25cbiAgfCBgQXNzb2Mgb2JqIC0+IG9ialxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG9iamVjdCwgZ290IFwiIGpzXG5cbmxldCB0b19vcHRpb24gZiA9IGZ1bmN0aW9uIGBOdWxsIC0+IE5vbmUgfCB4IC0+IFNvbWUgKGYgeClcbmxldCB0b19ib29sID0gZnVuY3Rpb24gYEJvb2wgYiAtPiBiIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCwgZ290IFwiIGpzXG5cbmxldCB0b19ib29sX29wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPiBTb21lIGJcbiAgfCBgTnVsbCAtPiBOb25lXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYm9vbCBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX251bWJlciA9IGZ1bmN0aW9uXG4gIFxuIyA3NSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciwgZ290IFwiIGpzXG5cbmxldCB0b19udW1iZXJfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDg0IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIG51bWJlciBvciBudWxsLCBnb3QgXCIganNcblxubGV0IHRvX2Zsb2F0ID0gZnVuY3Rpb25cbiAgXG4jIDkxIFwidXRpbC5tbFwiXG4gIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgZmxvYXQsIGdvdCBcIiBqc1xuXG5sZXQgdG9fZmxvYXRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDk3IFwidXRpbC5tbFwiXG4gIHwgYE51bGwgLT4gTm9uZVxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGZsb2F0IG9yIG51bGwsIGdvdCBcIiBqc1xuXG5sZXQgdG9faW50ID0gZnVuY3Rpb25cbiAgXG4jIDEwNCBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIGludCwgZ290IFwiIGpzXG5cbmxldCB0b19pbnRfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDExMCBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBpbnQgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCB0b19saXN0ID0gZnVuY3Rpb24gYExpc3QgbCAtPiBsIHwganMgLT4gdHlwZXJyIFwiRXhwZWN0ZWQgYXJyYXksIGdvdCBcIiBqc1xuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgXG4jIDExOSBcInV0aWwubWxcIlxuICB8IGpzIC0+IHR5cGVyciBcIkV4cGVjdGVkIHN0cmluZywgZ290IFwiIGpzXG5cbmxldCB0b19zdHJpbmdfb3B0aW9uID0gZnVuY3Rpb25cbiAgXG4jIDEyNSBcInV0aWwubWxcIlxuICB8IGBOdWxsIC0+IE5vbmVcbiAgfCBqcyAtPiB0eXBlcnIgXCJFeHBlY3RlZCBzdHJpbmcgb3IgbnVsbCwgZ290IFwiIGpzXG5cbmxldCBjb252ZXJ0X2VhY2ggZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBmIGxcbiAgfCBqcyAtPiB0eXBlcnIgXCJDYW4ndCBjb252ZXJ0IGVhY2ggZWxlbWVudCBvZiBub24tYXJyYXkgdHlwZSBcIiBqc1xuXG5sZXQgcmVjIHJldl9maWx0ZXJfbWFwIGYgYWNjIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCB4IDo6IHRsIC0+IChcbiAgICAgIG1hdGNoIGYgeCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcmV2X2ZpbHRlcl9tYXAgZiBhY2MgdGxcbiAgICAgIHwgU29tZSB5IC0+IHJldl9maWx0ZXJfbWFwIGYgKHkgOjogYWNjKSB0bClcblxubGV0IGZpbHRlcl9tYXAgZiBsID0gTGlzdC5yZXYgKHJldl9maWx0ZXJfbWFwIGYgW10gbClcblxubGV0IHJlYyByZXZfZmxhdHRlbiBhY2MgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IGFjY1xuICB8IHggOjogdGwgLT4gKFxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBMaXN0IGwyIC0+IHJldl9mbGF0dGVuIChMaXN0LnJldl9hcHBlbmQgbDIgYWNjKSB0bFxuICAgICAgfCBfIC0+IHJldl9mbGF0dGVuIGFjYyB0bClcblxubGV0IGZsYXR0ZW4gbCA9IExpc3QucmV2IChyZXZfZmxhdHRlbiBbXSBsKVxuXG5sZXQgZmlsdGVyX2luZGV4IGkgbCA9XG4gIGZpbHRlcl9tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgYExpc3QgbCAtPiAoIHRyeSBTb21lIChMaXN0Lm50aCBsIGkpIHdpdGggXyAtPiBOb25lKSB8IF8gLT4gTm9uZSlcbiAgICBsXG5cbmxldCBmaWx0ZXJfbGlzdCBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYExpc3QgbCAtPiBTb21lIGwgfCBfIC0+IE5vbmUpIGxcblxubGV0IGZpbHRlcl9tZW1iZXIgayBsID1cbiAgZmlsdGVyX21hcFxuICAgIChmdW5jdGlvblxuICAgICAgfCBgQXNzb2MgbCAtPiAoIHRyeSBTb21lIChMaXN0LmFzc29jIGsgbCkgd2l0aCBfIC0+IE5vbmUpIHwgXyAtPiBOb25lKVxuICAgIGxcblxubGV0IGZpbHRlcl9hc3NvYyBsID0gZmlsdGVyX21hcCAoZnVuY3Rpb24gYEFzc29jIGwgLT4gU29tZSBsIHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2Jvb2wgbCA9IGZpbHRlcl9tYXAgKGZ1bmN0aW9uIGBCb29sIHggLT4gU29tZSB4IHwgXyAtPiBOb25lKSBsXG5sZXQgZmlsdGVyX2ludCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgICBmdW5jdGlvblxuICAgICAgXG4jIDE3NCBcInV0aWwubWxcIlxuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGxcblxubGV0IGZpbHRlcl9mbG9hdCBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxODMgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX251bWJlciBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAxOTUgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQgZmlsdGVyX3N0cmluZyBsID1cbiAgZmlsdGVyX21hcCAoXG4gICAgZnVuY3Rpb25cbiAgICAgIFxuIyAyMDQgXCJ1dGlsLm1sXCJcbiAgICAgIHwgXyAtPiBOb25lXG4gICkgbFxuXG5sZXQga2V5cyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChrZXksIF8pIC0+IGtleSlcblxubGV0IHZhbHVlcyBvID1cbiAgdG9fYXNzb2MgbyB8PiBMaXN0Lm1hcCAoZnVuIChfLCB2YWx1ZSkgLT4gdmFsdWUpXG5cbmxldCBjb21iaW5lIChmaXJzdCA6IHQpIChzZWNvbmQgOiB0KSA9XG4gIG1hdGNoIChmaXJzdCwgc2Vjb25kKSB3aXRoXG4gIHwgYEFzc29jIGEsIGBBc3NvYyBiIC0+IChgQXNzb2MgKGEgQCBiKSA6IHQpXG4gIHwgYSwgYiAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkV4cGVjdGVkIHR3byBvYmplY3RzLCBjaGVjayBpbnB1dHNcIilcbiMgMTAwIFwieW9qc29uLmNwcG8ubWxcIlxuZW5kXG4jIDEwNiBcInlvanNvbi5jcHBvLm1sXCJcbmVuZFxuIiwiXG50eXBlICdhIG9jYW1sX2FycmF5ID0gJ2EgYXJyYXlcblxubGV0IGlucHV0X2ZpbGUgZm5hbWUgcmVhZCA9XG4gIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gIHRyeVxuICAgIGxldCB4ID0gcmVhZCBpYyBpblxuICAgIGNsb3NlX2luIGljO1xuICAgIHhcbiAgd2l0aCBlIC0+XG4gICAgY2xvc2VfaW5fbm9lcnIgaWM7XG4gICAgcmFpc2UgZVxuXG5sZXQgb3V0cHV0X2ZpbGUgZm5hbWUgd3JpdGUgPVxuICBsZXQgb2MgPSBvcGVuX291dF9iaW4gZm5hbWUgaW5cbiAgdHJ5XG4gICAgd3JpdGUgb2M7XG4gICAgY2xvc2Vfb3V0IG9jXG4gIHdpdGggZSAtPlxuICAgIGNsb3NlX291dF9ub2VyciBvYztcbiAgICByYWlzZSBlXG5cbm1vZHVsZSBCaW5pb3UgPVxuc3RydWN0XG4gIHR5cGUgJ2EgcmVhZGVyID0gQmlfaW5idWYudCAtPiAnYVxuICB0eXBlICdhIHdyaXRlciA9IEJpX291dGJ1Zi50IC0+ICdhIC0+IHVuaXRcblxuICBsZXQgZnJvbV9jaGFubmVsID9sZW4gPyhzaHJsZW4gPSAwKSByZWFkIGljID1cbiAgICBsZXQgaWIgPSBCaV9pbmJ1Zi5mcm9tX2NoYW5uZWwgP2xlbiB+c2hybGVuIGljIGluXG4gICAgcmVhZCBpYlxuXG4gIGxldCBmcm9tX2ZpbGUgP2xlbiA/KHNocmxlbiA9IDApIHJlYWQgZm5hbWUgPVxuICAgIGlucHV0X2ZpbGUgZm5hbWUgKGZ1biBpYyAtPiBmcm9tX2NoYW5uZWwgP2xlbiB+c2hybGVuIHJlYWQgaWMpXG5cbiAgbGV0IHRvX2NoYW5uZWwgP2xlbiA/KHNocmxlbiA9IDApIHdyaXRlIG9jIHggPVxuICAgIGxldCBvYiA9IEJpX291dGJ1Zi5jcmVhdGVfY2hhbm5lbF93cml0ZXIgP2xlbiB+c2hybGVuIG9jIGluXG4gICAgd3JpdGUgb2IgeDtcbiAgICBCaV9vdXRidWYuZmx1c2hfY2hhbm5lbF93cml0ZXIgb2JcblxuICBsZXQgdG9fZmlsZSA/bGVuID8oc2hybGVuID0gMCkgd3JpdGUgZm5hbWUgeCA9XG4gICAgb3V0cHV0X2ZpbGUgZm5hbWUgKGZ1biBvYyAtPiB0b19jaGFubmVsID9sZW4gfnNocmxlbiB3cml0ZSBvYyB4KVxuZW5kXG5cbm1vZHVsZSBKc29uID1cbnN0cnVjdFxuICB0eXBlICdhIHJlYWRlciA9IFlvanNvbi5TYWZlLmxleGVyX3N0YXRlIC0+IExleGluZy5sZXhidWYgLT4gJ2FcbiAgdHlwZSAnYSB3cml0ZXIgPSBCdWZmZXIudCAtPiAnYSAtPiB1bml0XG5cbiAgbGV0IGZpbmlzaCBscyBsZXhidWYgPVxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgbHMgbGV4YnVmO1xuICAgIGlmIG5vdCAoWW9qc29uLlNhZmUucmVhZF9lb2YgbGV4YnVmKSB0aGVuXG4gICAgICBZb2pzb24uanNvbl9lcnJvciBcIkp1bmsgYWZ0ZXIgZW5kIG9mIEpTT04gdmFsdWVcIlxuXG4gIGxldCBmcm9tX2xleGJ1ZiA/KHN0cmVhbSA9IGZhbHNlKSByZWFkIGxzIGxleGJ1ZiA9XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBscyBsZXhidWY7XG5cbiAgICBsZXQgeCA9XG4gICAgICBpZiBZb2pzb24uU2FmZS5yZWFkX2VvZiBsZXhidWYgdGhlblxuICAgICAgICByYWlzZSBZb2pzb24uRW5kX29mX2lucHV0XG4gICAgICBlbHNlXG4gICAgICAgIHJlYWQgbHMgbGV4YnVmXG4gICAgaW5cblxuICAgIGlmIG5vdCBzdHJlYW0gdGhlblxuICAgICAgZmluaXNoIGxzIGxleGJ1ZjtcblxuICAgIHhcblxuICBsZXQgZnJvbV9zdHJpbmcgP2J1ZiA/Zm5hbWUgP2xudW0gcmVhZCBzID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIHMgaW5cbiAgICBsZXQgbHMgPSBZb2pzb24uU2FmZS5pbml0X2xleGVyID9idWYgP2ZuYW1lID9sbnVtICgpIGluXG4gICAgZnJvbV9sZXhidWYgcmVhZCBscyBsZXhidWZcblxuICBsZXQgZnJvbV9jaGFubmVsID9idWYgP2ZuYW1lID9sbnVtIHJlYWQgaWMgPVxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIGZyb21fbGV4YnVmIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IGZyb21fZmlsZSA/YnVmID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgaW5wdXRfZmlsZSBmbmFtZSAoZnVuIGljIC0+IGZyb21fY2hhbm5lbCA/YnVmIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpYylcblxuICAoKiBzZXFfdW5mb2xkIGlzIFNlcS51bmZvbGQsIG5lZWRlZCBmb3Igb2NhbWwgPCA0LjExICopXG4gIGxldCByZWMgc2VxX3VuZm9sZCBmIHUgKCkgPVxuICAgIG1hdGNoIGYgdSB3aXRoXG4gICAgfCBOb25lIC0+IFNlcS5OaWxcbiAgICB8IFNvbWUgKHgsIHUnKSAtPiBTZXEuQ29ucyAoeCwgc2VxX3VuZm9sZCBmIHUnKVxuXG4gIGxldCBzZXFfZnJvbV9sZXhidWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpIHJlYWQgbHMgbGV4YnVmID1cbiAgICBsZXQgZiAoKSA9XG4gICAgICB0cnlcbiAgICAgICAgbGV0IHYgPSBmcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcmVhZCBscyBsZXhidWYgaW5cbiAgICAgICAgU29tZSAodiwgKCkpXG4gICAgICB3aXRoXG4gICAgICAgICAgWW9qc29uLkVuZF9vZl9pbnB1dCAtPlxuICAgICAgICAgICAgZmluICgpO1xuICAgICAgICAgICAgTm9uZVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICAgICh0cnkgZmluICgpIHdpdGggXyAtPiAoKSk7XG4gICAgICAgICAgICByYWlzZSBlXG4gICAgaW5cbiAgICAoKiBTZXEudW5mb2xkIGlzIG9ubHkgYXZhaWxhYmxlIGZyb20gb2NhbWwgNC4xMSAqKVxuICAgIHNlcV91bmZvbGQgZiAoKVxuXG4gIGxldCBzZXFfZnJvbV9zdHJpbmcgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGljIGluXG4gICAgbGV0IGxzID0gWW9qc29uLlNhZmUuaW5pdF9sZXhlciA/YnVmID9mbmFtZSA/bG51bSAoKSBpblxuICAgIHNlcV9mcm9tX2xleGJ1ZiA/ZmluIHJlYWQgbHMgbGV4YnVmXG5cbiAgbGV0IHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBpYyBpblxuICAgIGxldCBscyA9IFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgP2J1ZiA/Zm5hbWUgP2xudW0gKCkgaW5cbiAgICBzZXFfZnJvbV9sZXhidWYgP2ZpbiByZWFkIGxzIGxleGJ1ZlxuXG4gIGxldCBzZXFfZnJvbV9maWxlID9idWYgPyhmaW4gPSBmdW4gKCkgLT4gKCkpID9mbmFtZTpzcmMgP2xudW0gcmVhZCBmbmFtZSA9XG4gICAgbGV0IGZuYW1lMCA9XG4gICAgICBtYXRjaCBzcmMgd2l0aFxuICAgICAgICAgIE5vbmUgLT4gZm5hbWVcbiAgICAgICAgfCBTb21lIHMgLT4gc1xuICAgIGluXG4gICAgbGV0IGljID0gb3Blbl9pbl9iaW4gZm5hbWUgaW5cbiAgICBsZXQgZmluICgpID0gY2xvc2VfaW5fbm9lcnIgaWM7IGZpbiAoKSBpblxuICAgIHNlcV9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpY1xuXG4gIGxldCBsaXN0X2Zyb21fc3RyaW5nID9idWYgP2ZpbiA/Zm5hbWUgP2xudW0gcmVhZCBpYyA9XG4gICAgbGV0IHNlcSA9IHNlcV9mcm9tX3N0cmluZyA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgaW5cbiAgICBMaXN0Lm9mX3NlcSBzZXFcblxuICBsZXQgbGlzdF9mcm9tX2NoYW5uZWwgP2J1ZiA/ZmluID9mbmFtZSA/bG51bSByZWFkIGljID1cbiAgICBsZXQgc2VxID0gc2VxX2Zyb21fY2hhbm5lbCA/YnVmID9maW4gP2ZuYW1lID9sbnVtIHJlYWQgaWMgaW5cbiAgICBMaXN0Lm9mX3NlcSBzZXFcblxuICBsZXQgbGlzdF9mcm9tX2ZpbGUgP2J1ZiA/Zm5hbWU6c3JjID9sbnVtIHJlYWQgZm5hbWUgPVxuICAgIGxldCBmbmFtZTAgPVxuICAgICAgbWF0Y2ggc3JjIHdpdGhcbiAgICAgICAgICBOb25lIC0+IGZuYW1lXG4gICAgICAgIHwgU29tZSBzIC0+IHNcbiAgICBpblxuICAgIGxldCBpYyA9IG9wZW5faW5fYmluIGZuYW1lIGluXG4gICAgbGV0IGZpbiAoKSA9IGNsb3NlX2luX25vZXJyIGljIGluXG4gICAgbGlzdF9mcm9tX2NoYW5uZWwgP2J1ZiB+ZmluIH5mbmFtZTpmbmFtZTAgP2xudW0gcmVhZCBpY1xuXG4gIGxldCB0b19zdHJpbmcgPyhsZW4gPSAxMDI0KSB3cml0ZSB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlIG9iIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHRvX2NoYW5uZWwgPyhsZW4gPSAxMDI0KSB3cml0ZSBvYyB4ID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIHdyaXRlIG9iIHg7XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2JcblxuICBsZXQgdG9fZmlsZSA/bGVuIHdyaXRlIGZuYW1lIHggPVxuICAgIG91dHB1dF9maWxlIGZuYW1lIChmdW4gb2MgLT4gdG9fY2hhbm5lbCA/bGVuIHdyaXRlIG9jIHgpXG5cbiAgbGV0IHNlcV90b19zdHJpbmcgPyhsZW4gPSAxMDI0KSA/KGxmID0gXCJcXG5cIikgd3JpdGUgc2VxID1cbiAgICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICAgIFNlcS5pdGVyIChmdW4geCAtPiB3cml0ZSBvYiB4OyBCdWZmZXIuYWRkX3N0cmluZyBvYiBsZikgc2VxO1xuICAgIEJ1ZmZlci5jb250ZW50cyBvYlxuXG4gIGxldCBzZXFfdG9fY2hhbm5lbCA/KGxlbiA9IDEwMjQpID8obGYgPSBcIlxcblwiKSB3cml0ZSBvYyBzZXEgPVxuICAgIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gICAgU2VxLml0ZXIgKGZ1biB4IC0+IHdyaXRlIG9iIHg7IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIGxmKSBzZXE7XG4gICAgQnVmZmVyLm91dHB1dF9idWZmZXIgb2Mgb2JcblxuICBsZXQgc2VxX3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgc2VxID1cbiAgICBvdXRwdXRfZmlsZSBmbmFtZSAoZnVuIG9jIC0+IHNlcV90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIHNlcSlcblxuICBsZXQgbGlzdF90b19zdHJpbmcgP2xlbiA/bGYgd3JpdGUgbCA9XG4gICAgc2VxX3RvX3N0cmluZyA/bGVuID9sZiB3cml0ZSAoTGlzdC50b19zZXEgbClcblxuICBsZXQgbGlzdF90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIGwgPVxuICAgIHNlcV90b19jaGFubmVsID9sZW4gP2xmIHdyaXRlIG9jIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBsaXN0X3RvX2ZpbGUgP2xlbiA/bGYgd3JpdGUgZm5hbWUgIGwgPVxuICAgIHNlcV90b19maWxlID9sZW4gP2xmIHdyaXRlIGZuYW1lIChMaXN0LnRvX3NlcSBsKVxuXG4gIGxldCBwcmVzZXRfdW5rbm93bl9maWVsZF9oYW5kbGVyIGxvYyBuYW1lID1cbiAgICBsZXQgbXNnID1cbiAgICAgIFByaW50Zi5zcHJpbnRmXG4gICAgICAgIFwiRm91bmQgdW5rbm93biBKU09OIGZpZWxkICVzIHdoaWxlIGV4cGVjdGluZyB0eXBlIGRlZmluZWQgYXQ6ICVzXCJcbiAgICAgICAgbmFtZSBsb2NcbiAgICBpblxuICAgIGZhaWx3aXRoIG1zZ1xuXG4gIGxldCB1bmtub3duX2ZpZWxkX2hhbmRsZXIgPSByZWYgcHJlc2V0X3Vua25vd25fZmllbGRfaGFuZGxlclxuZW5kXG5cbm1vZHVsZSBWYWxpZGF0aW9uID1cbnN0cnVjdFxuICB0eXBlIHBhdGhfZWxlbSA9IFsgYEZpZWxkIG9mIHN0cmluZyB8IGBJbmRleCBvZiBpbnQgXVxuICB0eXBlIHBhdGggPSBwYXRoX2VsZW0gbGlzdFxuXG4gIGxldCBzdHJpbmdfb2ZfcGF0aCBsID1cbiAgICBTdHJpbmcuY29uY2F0IFwiXCIgKFxuICAgICAgTGlzdC5yZXZfbWFwIChcbiAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICB8IGBGaWVsZCBzIC0+IFwiLlwiIF4gc1xuICAgICAgICAgIHwgYEluZGV4IG4gLT4gXCJbXCIgXiBzdHJpbmdfb2ZfaW50IG4gXiBcIl1cIlxuICAgICAgKSBsXG4gICAgKVxuXG4gIHR5cGUgZXJyb3IgPSB7XG4gICAgZXJyb3JfcGF0aCA6IHBhdGg7XG4gICAgZXJyb3JfbXNnIDogc3RyaW5nIG9wdGlvbjtcbiAgfVxuXG4gIGxldCBlcnJvciA/bXNnIHBhdGggPSB7XG4gICAgZXJyb3JfcGF0aCA9IHBhdGg7XG4gICAgZXJyb3JfbXNnID0gbXNnO1xuICB9XG5cbiAgbGV0IHN0cmluZ19vZl9lcnJvciB4ID1cbiAgICBsZXQgcGF0aCA9IHN0cmluZ19vZl9wYXRoIHguZXJyb3JfcGF0aCBpblxuICAgIG1hdGNoIHguZXJyb3JfbXNnIHdpdGhcbiAgICAgICAgTm9uZSAtPlxuICAgICAgICAgIFwiVmFsaWRhdGlvbiBlcnJvcjsgcGF0aCA9IDxyb290PlwiIF4gcGF0aFxuICAgICAgfCBTb21lIG1zZyAtPlxuICAgICAgICAgIFByaW50Zi5zcHJpbnRmIFwiVmFsaWRhdGlvbiBlcnJvcjogJXM7IHBhdGggPSA8cm9vdD4lc1wiIG1zZyBwYXRoXG5lbmRcbiIsImxldCB2YWxpZGF0ZV9saXN0IGYgcGF0aCBsID1cbiAgbGV0IHJlYyBsb29wIGYgcGF0aCBpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8IHggOjogbCAtPlxuICAgICAgICBsZXQgc3VicGF0aCA9IGBJbmRleCBpIDo6IHBhdGggaW5cbiAgICAgICAgbWF0Y2ggZiBzdWJwYXRoIHggd2l0aFxuICAgICAgICAgICAgTm9uZSAtPiBsb29wIGYgcGF0aCAoaSsxKSBsXG4gICAgICAgICAgfCBlcnIgLT4gZXJyXG4gIGluXG4gIGxvb3AgZiBwYXRoIDAgbFxuXG5sZXQgdmFsaWRhdGVfYXJyYXkgZiBwYXRoIGEgPVxuICBsZXQgcmVjIGxvb3AgZiBwYXRoIGEgbGVuIGkgPVxuICAgIGlmIGkgPj0gbGVuIHRoZW4gTm9uZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoIGYgKGBJbmRleCBpIDo6IHBhdGgpIGEuKGkpIHdpdGhcbiAgICAgICAgICBOb25lIC0+IGxvb3AgZiBwYXRoIGEgbGVuIChpKzEpXG4gICAgICAgIHwgZXJyIC0+IGVyclxuICBpblxuICBsb29wIGYgcGF0aCBhIChBcnJheS5sZW5ndGggYSkgMFxuXG5sZXQgdmFsaWRhdGVfb3B0aW9uIGYgcGF0aCA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB4IC0+IGYgcGF0aCB4XG4iLCIoKlxuICBSdW50aW1lIGxpYnJhcnkgZm9yIEpTT05cbiopXG5cbm9wZW4gUHJpbnRmXG5cbnR5cGUgJ2Egd3JpdGUgPSBCdWZmZXIudCAtPiAnYSAtPiB1bml0XG5cbmV4Y2VwdGlvbiBFcnJvciBvZiBzdHJpbmdcblxuKCpcbiAgRXJyb3IgbWVzc2FnZXNcbiopXG5sZXQgZXJyb3IgcyA9IHJhaXNlIChFcnJvciBzKVxuXG5sZXQgZXJyb3Jfd2l0aF9saW5lIHAgcyA9XG4gIGxldCBzMiA9XG4gICAgbWF0Y2ggcC5Zb2pzb24uTGV4ZXJfc3RhdGUuZm5hbWUgd2l0aFxuICAgICAgU29tZSBmIC0+IHNwcmludGYgXCJGaWxlICVzLCBsaW5lICVpOlxcbiVzXCIgZiBwLllvanNvbi5MZXhlcl9zdGF0ZS5sbnVtIHNcbiAgICB8IE5vbmUgLT4gc3ByaW50ZiBcIkxpbmUgJWk6XFxuJXNcIiBwLllvanNvbi5MZXhlcl9zdGF0ZS5sbnVtIHNcbiAgaW5cbiAgcmFpc2UgKEVycm9yIHMyKVxuXG5cbmxldCBsaXN0X2l0ZXIgZiBzZXAgeCBsID1cbiAgbGV0IHJlYyBhdXggZiBzZXAgeCA9IGZ1bmN0aW9uXG4gICAgICBbXSAtPiAoKVxuICAgIHwgeSA6OiBsIC0+XG4gICAgICAgIHNlcCB4O1xuICAgICAgICBmIHggeTtcbiAgICAgICAgYXV4IGYgc2VwIHggbFxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgICAgIFtdIC0+ICgpXG4gICAgfCB5IDo6IGwgLT5cbiAgICAgICAgZiB4IHk7XG4gICAgICAgIGF1eCBmIHNlcCB4IGxcblxubGV0IGFycmF5X2l0ZXIgZiBzZXAgeCBhID1cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggYSBpblxuICBpZiBuID4gMCB0aGVuIChcbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSAwKTtcbiAgICBmb3IgaSA9IDEgdG8gbiAtIDEgZG9cbiAgICAgIHNlcCB4O1xuICAgICAgZiB4IChBcnJheS51bnNhZmVfZ2V0IGEgaSlcbiAgICBkb25lXG4gIClcblxubGV0IHdyaXRlX2NvbW1hIG9iID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJ1xuXG5sZXQgd3JpdGVfbGlzdCB3cml0ZV9pdGVtIG9iIGwgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBsaXN0X2l0ZXIgd3JpdGVfaXRlbSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCB3cml0ZV9hcnJheSB3cml0ZV9pdGVtIG9iIGEgPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snO1xuICBhcnJheV9pdGVyIHdyaXRlX2l0ZW0gd3JpdGVfY29tbWEgb2IgYTtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgd3JpdGVfYXNzb2NfbGlzdCB3cml0ZV9rZXkgd3JpdGVfaXRlbSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgbGlzdF9pdGVyIChcbiAgICBmdW4gb2IgKGssIHYpIC0+XG4gICAgICB3cml0ZV9rZXkgb2IgaztcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnOic7XG4gICAgICB3cml0ZV9pdGVtIG9iIHZcbiAgKSB3cml0ZV9jb21tYSBvYiBsO1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCB3cml0ZV9hc3NvY19hcnJheSB3cml0ZV9rZXkgd3JpdGVfaXRlbSBvYiBsID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgYXJyYXlfaXRlciAoXG4gICAgZnVuIG9iIChrLCB2KSAtPlxuICAgICAgd3JpdGVfa2V5IG9iIGs7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJzonO1xuICAgICAgd3JpdGVfaXRlbSBvYiB2XG4gICkgd3JpdGVfY29tbWEgb2IgbDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5cbmxldCB3cml0ZV9vcHRpb24gd3JpdGVfaXRlbSBvYiA9IGZ1bmN0aW9uXG4gICAgTm9uZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjxcXFwiTm9uZVxcXCI+XCJcbiAgfCBTb21lIHggLT5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPFxcXCJTb21lXFxcIjpcIjtcbiAgICAgIHdyaXRlX2l0ZW0gb2IgeDtcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiPlwiXG5cbmxldCB3cml0ZV9zdGRfb3B0aW9uIHdyaXRlX2l0ZW0gb2IgPSBmdW5jdGlvblxuICAgIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiTm9uZVxcXCJcIlxuICB8IFNvbWUgeCAtPlxuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNvbWVcXFwiLFwiO1xuICAgICAgd3JpdGVfaXRlbSBvYiB4O1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJdXCJcblxubGV0IHdyaXRlX251bGxhYmxlIHdyaXRlX2l0ZW0gb2IgPSBmdW5jdGlvblxuICAgIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJudWxsXCJcbiAgfCBTb21lIHggLT4gd3JpdGVfaXRlbSBvYiB4XG5cbmxldCB3cml0ZV9pbnRfYXNfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgWW9qc29uLlNhZmUud3JpdGVfaW50IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCB3cml0ZV9pbnQ4IG9iIHggPVxuICBZb2pzb24uU2FmZS53cml0ZV9pbnQgb2IgKGludF9vZl9jaGFyIHgpXG5cbmxldCB3cml0ZV9pbnQ4X2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDggb2IgeDtcbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIidcblxubGV0IHdyaXRlX2ludDMyIG9iIHggPVxuICBCdWZmZXIuYWRkX3N0cmluZyBvYiAoSW50MzIudG9fc3RyaW5nIHgpXG5cbmxldCB3cml0ZV9pbnQzMl9hc19zdHJpbmcgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInO1xuICB3cml0ZV9pbnQzMiBvYiB4O1xuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgd3JpdGVfaW50NjQgb2IgeCA9XG4gIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIChJbnQ2NC50b19zdHJpbmcgeClcblxubGV0IHdyaXRlX2ludDY0X2FzX3N0cmluZyBvYiB4ID1cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICdcIic7XG4gIHdyaXRlX2ludDY0IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbmxldCBtaW5fZmxvYXQgPSBmbG9hdCBtaW5faW50XG5sZXQgbWF4X2Zsb2F0ID0gZmxvYXQgbWF4X2ludFxuXG5sZXQgd3JpdGVfZmxvYXRfYXNfaW50IG9iIHggPVxuICBpZiB4ID49IG1pbl9mbG9hdCAmJiB4IDw9IG1heF9mbG9hdCB0aGVuXG4gICAgWW9qc29uLlNhZmUud3JpdGVfaW50IG9iXG4gICAgICAoaW50X29mX2Zsb2F0IChpZiB4IDwgMC4gdGhlbiB4IC0uIDAuNSBlbHNlIHggKy4gMC41KSlcbiAgZWxzZVxuICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgICAgICBGUF9ub3JtYWxcbiAgICAgIHwgRlBfc3Vibm9ybWFsXG4gICAgICB8IEZQX3plcm8gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgKFByaW50Zi5zcHJpbnRmIFwiJS4wZlwiIHgpXG4gICAgICB8IEZQX2luZmluaXRlIC0+IGVycm9yIFwiQ2Fubm90IGNvbnZlcnQgaW5mIG9yIC1pbmYgaW50byBhIEpTT04gaW50XCJcbiAgICAgIHwgRlBfbmFuIC0+IGVycm9yIFwiQ2Fubm90IGNvbnZlcnQgTmFOIGludG8gYSBKU09OIGludFwiXG5cbmxldCB3cml0ZV9mbG9hdF9hc19pbnRfc3RyaW5nIG9iIHggPVxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJztcbiAgd3JpdGVfZmxvYXRfYXNfaW50IG9iIHg7XG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXCInXG5cbnR5cGUgJ2EgcmVhZCA9IFlvanNvbi5sZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+ICdhXG5cbmxldCByZWFkX251bGwgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9udWxsIHAgbGJcblxubGV0IHJlYWRfYm9vbCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2Jvb2wgcCBsYlxuXG5sZXQgcmVhZF9pbnQgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9pbnQgcCBsYlxuXG5sZXQgcmVhZF9pbnQ4IHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50OCBwIGxiXG5cbmxldCByZWFkX2ludDMyIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfaW50MzIgcCBsYlxuXG5sZXQgcmVhZF9pbnQ2NCBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2ludDY0IHAgbGJcblxubGV0IHJlYWRfbnVtYmVyIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfbnVtYmVyIHAgbGJcblxubGV0IHJlYWRfc3RyaW5nIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfc3RyaW5nIHAgbGJcblxubGV0IHJlYWRfanNvbiBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2pzb24gcCBsYlxuXG5sZXQgcmVhZF9saXN0IHJlYWRfaXRlbSBwIGxiID1cbiAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX2xpc3QgcmVhZF9pdGVtIHAgbGJcblxubGV0IHJlYWRfYXJyYXkgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIFlvanNvbi5TYWZlLnJlYWRfYXJyYXkgcmVhZF9pdGVtIHAgbGJcblxubGV0IHJlYWRfYXNzb2NfbGlzdF9yZXYgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIgPVxuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gIGxldCByZWFkIGFjYyBrIHAgbGIgPSAoaywgcmVhZF9pdGVtIHAgbGIpIDo6IGFjYyBpblxuICBZb2pzb24uU2FmZS5yZWFkX2Fic3RyYWN0X2ZpZWxkcyByZWFkX2tleSByZWFkIFtdIHAgbGJcblxubGV0IHJlYWRfYXNzb2NfbGlzdCByZWFkX2tleSByZWFkX2l0ZW0gcCBsYiA9XG4gIExpc3QucmV2IChyZWFkX2Fzc29jX2xpc3RfcmV2IHJlYWRfa2V5IHJlYWRfaXRlbSBwIGxiKVxuXG5sZXQgYXJyYXlfb2ZfcmV2X2xpc3QgbCA9XG4gIG1hdGNoIGwgd2l0aFxuICAgICAgW10gLT4gW3wgfF1cbiAgICB8IHggOjogdGwgLT5cbiAgICAgICAgbGV0IGxlbiA9IExpc3QubGVuZ3RoIGwgaW5cbiAgICAgICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiB4IGluXG4gICAgICAgIGxldCByID0gcmVmIHRsIGluXG4gICAgICAgIGZvciBpID0gbGVuIC0gMiBkb3dudG8gMCBkb1xuICAgICAgICAgIGEuKGkpIDwtIExpc3QuaGQgIXI7XG4gICAgICAgICAgciA6PSBMaXN0LnRsICFyXG4gICAgICAgIGRvbmU7XG4gICAgICAgIGFcblxubGV0IHJlYWRfYXNzb2NfYXJyYXkgcmVhZF9rZXkgcmVhZF9pdGVtIHAgbGIgPVxuICBhcnJheV9vZl9yZXZfbGlzdCAocmVhZF9hc3NvY19saXN0X3JldiByZWFkX2tleSByZWFkX2l0ZW0gcCBsYilcblxubGV0IHJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYiA9XG4gIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgWW9qc29uLlNhZmUucmVhZF9jb2xvbiBwIGxiO1xuICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGJcblxubGV0IG1pc3NpbmdfdHVwbGVfZmllbGRzIHAgbGVuIHJlcV9maWVsZHMgPVxuICBsZXQgbWlzc2luZyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IChcbiAgICAgIGZ1biBpIGFjYyAtPiBpZiBpID49IGxlbiB0aGVuIGkgOjogYWNjIGVsc2UgYWNjXG4gICAgKSByZXFfZmllbGRzIFtdXG4gIGluXG4gIGVycm9yX3dpdGhfbGluZSBwIChzcHJpbnRmIFwiTWlzc2luZyB0dXBsZSBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoIG1pc3NpbmcgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgbWlzc2luZykpKVxuXG5sZXQgbWlzc2luZ19maWVsZCBwIGZpZWxkX25hbWUgPVxuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIk1pc3NpbmcgcmVjb3JkIGZpZWxkICVzXCIgZmllbGRfbmFtZSlcblxubGV0IG1pc3NpbmdfZmllbGRzIHAgYml0X2ZpZWxkcyBmaWVsZF9uYW1lcyA9XG4gIGxldCBhY2MgPSByZWYgW10gaW5cbiAgZm9yIHogPSBBcnJheS5sZW5ndGggZmllbGRfbmFtZXMgLSAxIGRvd250byAwIGRvXG4gICAgbGV0IGkgPSB6IC8gMzEgaW5cbiAgICBsZXQgaiA9IHogbW9kIDMxIGluXG4gICAgaWYgYml0X2ZpZWxkcy4oaSkgbGFuZCAoMSBsc2wgaikgPSAwIHRoZW5cbiAgICAgIGFjYyA6PSBmaWVsZF9uYW1lcy4oeikgOjogIWFjY1xuICBkb25lO1xuICBlcnJvcl93aXRoX2xpbmUgcCAoc3ByaW50ZiBcIk1pc3NpbmcgcmVjb3JkIGZpZWxkJXMgJXNcIlxuICAgICAgICAgICAoaWYgTGlzdC5sZW5ndGggIWFjYyA+IDEgdGhlbiBcInNcIiBlbHNlIFwiXCIpXG4gICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiLCBcIiAhYWNjKSlcblxubGV0IGludmFsaWRfdmFyaWFudF90YWcgcCBzID1cbiAgZXJyb3Jfd2l0aF9saW5lIHAgKHNwcmludGYgXCJVbnN1cHBvcnRlZCB2YXJpYW50ICVTXCIgcylcblxubGV0IHJlYWRfd2l0aF9hZGFwdGVyIG5vcm1hbGl6ZSByZWFkZXIgcCBsYiA9XG4gIGxldCBhc3QgPSBZb2pzb24uU2FmZS5yZWFkX2pzb24gcCBsYiBpblxuICBsZXQgYXN0JyA9IG5vcm1hbGl6ZSBhc3QgaW5cbiAgbGV0IHMnID0gWW9qc29uLlNhZmUudG9fc3RyaW5nIGFzdCcgaW5cbiAgbGV0IGxiJyA9IExleGluZy5mcm9tX3N0cmluZyBzJyBpblxuICByZWFkZXIgcCBsYidcblxubGV0IHdyaXRlX3dpdGhfYWRhcHRlciByZXN0b3JlIHdyaXRlciBvYiB4ID1cbiAgbGV0IG9iX3RtcCA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICB3cml0ZXIgb2JfdG1wIHg7XG4gIGxldCBzX3RtcCA9IEJ1ZmZlci5jb250ZW50cyBvYl90bXAgaW5cbiAgbGV0IGFzdCA9IFlvanNvbi5TYWZlLmZyb21fc3RyaW5nIHNfdG1wIGluXG4gIGxldCBhc3QnID0gcmVzdG9yZSBhc3QgaW5cbiAgWW9qc29uLlNhZmUudG9fYnVmZmVyIG9iIGFzdCdcblxuKCpcbiAgQ2hlY2tpbmcgYXQgcnVudGltZSB0aGF0IG91ciBhc3N1bXB0aW9ucyBvbiB1bnNwZWNpZmllZCBjb21waWxlciBiZWhhdmlvclxuICBzdGlsbCBob2xkLlxuICAgVE9ETzogd2hhdCBhcmUgdGhlc2UgYXNzdW1wdGlvbnMgYW5kIHdoaWNoIGNvbXBvbmVudCBtYWtlcyB0aGVtP1xuKilcbnR5cGUgdCA9IHtcbiAgX2EgOiBpbnQgb3B0aW9uO1xuICBfYiA6IGludDtcbn1cblxuKCogVGhpcyBtdXN0IGJlIGEgdGVzdCBmb3IgdGhlIHR5cGUgY2hlY2tlciBzaW5jZSB0aGUgZnVuY3Rpb24gaXNuJ3QgdXNlZFxuICAgYW55d2hlcmUuICopXG5sZXQgX3Rlc3QgKCkgPVxuICB7IHsgX2EgPSBOb25lOyBfYiA9IEFycmF5Lmxlbmd0aCBTeXMuYXJndiB9IHdpdGggX2EgPSBOb25lIH1cbiIsIltAQEBvY2FtbC53YXJuaW5nIFwiLTMyXCJdXG5cbigqXG4gIFJ1bnRpbWUgbGlicmFyeVxuKilcblxub3BlbiBQcmludGZcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZ1xuXG4oKlxuICBFcnJvciBtZXNzYWdlc1xuKilcbmxldCBlcnJvciBzID0gcmFpc2UgKEVycm9yIHMpXG5cbmxldCByZWFkX2Vycm9yICgpID1cbiAgZXJyb3IgXCJSZWFkIGVycm9yXCJcblxubGV0IHJlYWRfZXJyb3JfYXQgaWIgPVxuICBlcnJvciAoc3ByaW50ZiBcIlJlYWQgZXJyb3IgKCVpKVwiIGliLkJpX2luYnVmLmlfcG9zKVxuXG5sZXQgdGFnX2Vycm9yIHRhZyBzID1cbiAgZXJyb3IgKHNwcmludGYgXCJGb3VuZCB3cm9uZyB0YWcgJWkgZm9yICVzXCIgdGFnIHMpXG5cbmxldCB1bnN1cHBvcnRlZF92YXJpYW50IGggaGFzX2FyZyA9XG4gIGVycm9yIChzcHJpbnRmIFwiVW5zdXBwb3J0ZWQgdmFyaWFudCAoaGFzaD0laSwgYXJnPSVCKVwiIGggaGFzX2FyZylcblxuXG5sZXQgbWlzc2luZ190dXBsZV9maWVsZHMgbGVuIHJlcV9maWVsZHMgPVxuICBsZXQgbWlzc2luZyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0IChcbiAgICAgIGZ1biBpIGFjYyAtPiBpZiBpID49IGxlbiB0aGVuIGkgOjogYWNjIGVsc2UgYWNjXG4gICAgKSByZXFfZmllbGRzIFtdXG4gIGluXG4gIGVycm9yIChzcHJpbnRmIFwiTWlzc2luZyB0dXBsZSBmaWVsZCVzICVzXCJcbiAgICAgICAgICAgKGlmIExpc3QubGVuZ3RoIG1pc3NpbmcgPiAxIHRoZW4gXCJzXCIgZWxzZSBcIlwiKVxuICAgICAgICAgICAoU3RyaW5nLmNvbmNhdCBcIiwgXCIgKExpc3QubWFwIHN0cmluZ19vZl9pbnQgbWlzc2luZykpKVxuXG5cbmxldCBtaXNzaW5nX2ZpZWxkcyBiaXRfZmllbGRzIGZpZWxkX25hbWVzID1cbiAgbGV0IGFjYyA9IHJlZiBbXSBpblxuICBmb3IgeiA9IEFycmF5Lmxlbmd0aCBmaWVsZF9uYW1lcyAtIDEgZG93bnRvIDAgZG9cbiAgICBsZXQgaSA9IHogLyAzMSBpblxuICAgIGxldCBqID0geiBtb2QgMzEgaW5cbiAgICBpZiBiaXRfZmllbGRzLihpKSBsYW5kICgxIGxzbCBqKSA9IDAgdGhlblxuICAgICAgYWNjIDo9IGZpZWxkX25hbWVzLih6KSA6OiAhYWNjXG4gIGRvbmU7XG4gIGVycm9yIChzcHJpbnRmIFwiTWlzc2luZyByZWNvcmQgZmllbGQlcyAlc1wiXG4gICAgICAgICAgIChpZiBMaXN0Lmxlbmd0aCAhYWNjID4gMSB0aGVuIFwic1wiIGVsc2UgXCJcIilcbiAgICAgICAgICAgKFN0cmluZy5jb25jYXQgXCIsIFwiICFhY2MpKVxuXG5cbigqXG4gIFJlYWRlcnNcbiopXG5cbmxldCBnZXRfdW5pdF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8udW5pdF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfdW5pdFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcInVuaXRcIlxuXG5sZXQgcmVhZF91bml0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby51bml0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF91bml0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfYm9vbF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uYm9vbF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfYm9vbFxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImJvb2xcIlxuXG5sZXQgcmVhZF9ib29sIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5ib29sX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9ib29sIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50X3JlYWRlciB0YWcgPVxuICBtYXRjaCB0YWcgd2l0aFxuICAgICAgMSAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDhcbiAgICB8IDIgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNlxuICAgIHwgMTYgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF91dmludFxuICAgIHwgMTcgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9zdmludFxuICAgIHwgXyAtPiB0YWdfZXJyb3IgdGFnIFwiaW50XCJcblxubGV0IHJlYWRfaW50IGliID1cbiAgbWF0Y2ggQmlfaW8ucmVhZF90YWcgaWIgd2l0aFxuICAgICAgMSAtPiBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDggaWJcbiAgICB8IDIgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNiBpYlxuICAgIHwgMTYgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF91dmludCBpYlxuICAgIHwgMTcgLT4gQmlfaW8ucmVhZF91bnRhZ2dlZF9zdmludCBpYlxuICAgIHwgXyAtPiByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfY2hhcl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50OF90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfY2hhclxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImNoYXJcIlxuXG5sZXQgcmVhZF9jaGFyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQ4X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9jaGFyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfaW50MTZfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmludDE2X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImludDE2XCJcblxubGV0IHJlYWRfaW50MTYgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmludDE2X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9pbnQxNiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgZ2V0X2ludDMyX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5pbnQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MzJcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJpbnQzMlwiXG5cbmxldCByZWFkX2ludDMyIGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5pbnQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfaW50MzIgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IGdldF9pbnQ2NF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uaW50NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDY0XG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwiaW50NjRcIlxuXG5sZXQgcmVhZF9pbnQ2NCBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uaW50NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2ludDY0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCBnZXRfZmxvYXQzMl9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uZmxvYXQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQzMlxuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcImZsb2F0MzJcIlxuXG5sZXQgZ2V0X2Zsb2F0NjRfcmVhZGVyIHRhZyA9XG4gIGlmIHRhZyA9IEJpX2lvLmZsb2F0NjRfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX2Zsb2F0NjRcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJmbG9hdDY0XCJcblxubGV0IGdldF9mbG9hdF9yZWFkZXIgPSBnZXRfZmxvYXQ2NF9yZWFkZXJcblxubGV0IHJlYWRfZmxvYXQzMiBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uZmxvYXQzMl90YWcgdGhlblxuICAgIEJpX2lvLnJlYWRfdW50YWdnZWRfZmxvYXQzMiBpYlxuICBlbHNlXG4gICAgcmVhZF9lcnJvcl9hdCBpYlxuXG5sZXQgcmVhZF9mbG9hdDY0IGliID1cbiAgaWYgQmlfaW8ucmVhZF90YWcgaWIgPSBCaV9pby5mbG9hdDY0X3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9mbG9hdDY0IGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2Zsb2F0ID0gcmVhZF9mbG9hdDY0XG5cbmxldCBnZXRfc3RyaW5nX3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5zdHJpbmdfdGFnIHRoZW5cbiAgICBCaV9pby5yZWFkX3VudGFnZ2VkX3N0cmluZ1xuICBlbHNlXG4gICAgdGFnX2Vycm9yIHRhZyBcInN0cmluZ1wiXG5cbmxldCByZWFkX3N0cmluZyBpYiA9XG4gIGlmIEJpX2lvLnJlYWRfdGFnIGliID0gQmlfaW8uc3RyaW5nX3RhZyB0aGVuXG4gICAgQmlfaW8ucmVhZF91bnRhZ2dlZF9zdHJpbmcgaWJcbiAgZWxzZVxuICAgIHJlYWRfZXJyb3JfYXQgaWJcblxubGV0IHJlYWRfYXJyYXlfdmFsdWUgZ2V0X3JlYWRlciBpYiA9XG4gIGxldCBsZW4gPSBCaV92aW50LnJlYWRfdXZpbnQgaWIgaW5cbiAgaWYgbGVuID0gMCB0aGVuIFt8IHxdXG4gIGVsc2VcbiAgICBsZXQgcmVhZGVyID0gZ2V0X3JlYWRlciAoQmlfaW8ucmVhZF90YWcgaWIpIGluXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAocmVhZGVyIGliKSBpblxuICAgIGZvciBpID0gMSB0byBsZW4gLSAxIGRvXG4gICAgICBBcnJheS51bnNhZmVfc2V0IGEgaSAocmVhZGVyIGliKVxuICAgIGRvbmU7XG4gICAgYVxuXG5sZXQgcmVhZF9saXN0X3ZhbHVlIGdldF9yZWFkZXIgaWIgPVxuICBBcnJheS50b19saXN0IChyZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWIpXG5cbmxldCBnZXRfYXJyYXlfcmVhZGVyIGdldF9yZWFkZXIgdGFnID1cbiAgaWYgdGFnID0gQmlfaW8uYXJyYXlfdGFnIHRoZW5cbiAgICByZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXJcbiAgZWxzZVxuICAgIHRhZ19lcnJvciB0YWcgXCJhcnJheVwiXG5cbmxldCBnZXRfbGlzdF9yZWFkZXIgZ2V0X3JlYWRlciB0YWcgPVxuICBpZiB0YWcgPSBCaV9pby5hcnJheV90YWcgdGhlblxuICAgIGZ1biBpYiAtPiBBcnJheS50b19saXN0IChyZWFkX2FycmF5X3ZhbHVlIGdldF9yZWFkZXIgaWIpXG4gIGVsc2VcbiAgICB0YWdfZXJyb3IgdGFnIFwibGlzdFwiXG5cbmxldCByZWFkX2FycmF5IGdldF9yZWFkZXIgaWIgPVxuICBpZiBCaV9pby5yZWFkX3RhZyBpYiA9IEJpX2lvLmFycmF5X3RhZyB0aGVuXG4gICAgcmVhZF9hcnJheV92YWx1ZSBnZXRfcmVhZGVyIGliXG4gIGVsc2VcbiAgICByZWFkX2Vycm9yX2F0IGliXG5cbmxldCByZWFkX2xpc3QgcmVhZCBpYiA9XG4gIEFycmF5LnRvX2xpc3QgKHJlYWRfYXJyYXkgcmVhZCBpYilcblxuXG4oKlxuICBXcml0ZXJzXG4qKVxuXG5sZXQgd3JpdGVfdGFnZ2VkIHRhZyB3cml0ZSBidWYgeCA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgdGFnO1xuICB3cml0ZSBidWYgeFxuXG5sZXQgd3JpdGVfdW50YWdnZWRfb3B0aW9uIHdyaXRlIGJ1ZiB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gICAgICBOb25lIC0+IEJpX2lvLndyaXRlX251bXRhZyBidWYgMCBmYWxzZVxuICAgIHwgU29tZSB4IC0+XG4gICAgICAgIEJpX2lvLndyaXRlX251bXRhZyBidWYgMCB0cnVlO1xuICAgICAgICB3cml0ZSBidWYgeFxuXG5sZXQgd3JpdGVfb3B0aW9uIHdyaXRlIGJ1ZiB4ID1cbiAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBCaV9pby5udW1fdmFyaWFudF90YWc7XG4gIHdyaXRlX3VudGFnZ2VkX29wdGlvbiB3cml0ZSBidWYgeFxuXG5sZXQgYXJyYXlfaW5pdDIgbGVuIHggZiA9XG4gIGlmIGxlbiA9IDAgdGhlbiBbfCB8XVxuICBlbHNlXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAoZiAwIHgpIGluXG4gICAgZm9yIGkgPSAxIHRvIGxlbiAtIDEgZG9cbiAgICAgIEFycmF5LnVuc2FmZV9zZXQgYSBpIChmIGkgeClcbiAgICBkb25lO1xuICAgIGFcblxubGV0IGFycmF5X2luaXQzIGxlbiB4IHkgZiA9XG4gIGlmIGxlbiA9IDAgdGhlbiBbfCB8XVxuICBlbHNlXG4gICAgbGV0IGEgPSBBcnJheS5tYWtlIGxlbiAoZiAwIHggeSkgaW5cbiAgICBmb3IgaSA9IDEgdG8gbGVuIC0gMSBkb1xuICAgICAgQXJyYXkudW5zYWZlX3NldCBhIGkgKGYgaSB4IHkpXG4gICAgZG9uZTtcbiAgICBhXG5cbmxldCBhcnJheV9pdGVyMiBmIHggYSA9XG4gIGZvciBpID0gMCB0byBBcnJheS5sZW5ndGggYSAtIDEgZG9cbiAgICBmIHggKEFycmF5LnVuc2FmZV9nZXQgYSBpKVxuICBkb25lXG5cbmxldCBhcnJheV9pdGVyMyBmIHggeSBhID1cbiAgZm9yIGkgPSAwIHRvIEFycmF5Lmxlbmd0aCBhIC0gMSBkb1xuICAgIGYgeCB5IChBcnJheS51bnNhZmVfZ2V0IGEgaSlcbiAgZG9uZVxuXG5cbmxldCByZWMgbGlzdF9pdGVyMiBmIHggPSBmdW5jdGlvblxuICAgIFtdIC0+ICgpXG4gIHwgeSA6OiBsIC0+XG4gICAgICBmIHggeTtcbiAgICAgIGxpc3RfaXRlcjIgZiB4IGxcblxubGV0IHJlYyBsaXN0X2l0ZXIzIGYgeCB5ID0gZnVuY3Rpb25cbiAgICBbXSAtPiAoKVxuICB8IHogOjogbCAtPlxuICAgICAgZiB4IHkgejtcbiAgICAgIGxpc3RfaXRlcjMgZiB4IHkgbFxuXG5cbmxldCB3cml0ZV91bnRhZ2dlZF9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYSA9XG4gIGxldCBsZW4gPSBBcnJheS5sZW5ndGggYSBpblxuICBCaV92aW50LndyaXRlX3V2aW50IGJ1ZiBsZW47XG4gIGlmIGxlbiA+IDAgdGhlbiAoXG4gICAgQmlfaW8ud3JpdGVfdGFnIGJ1ZiBjZWxsX3RhZztcbiAgICBhcnJheV9pdGVyMiB3cml0ZSBidWYgYVxuICApXG5cbmxldCB3cml0ZV9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYSA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgQmlfaW8uYXJyYXlfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9hcnJheSBjZWxsX3RhZyB3cml0ZSBidWYgYVxuXG5sZXQgd3JpdGVfdW50YWdnZWRfbGlzdCBjZWxsX3RhZyB3cml0ZSBidWYgbCA9XG4gIGxldCBsZW4gPSBMaXN0Lmxlbmd0aCBsIGluXG4gIEJpX3ZpbnQud3JpdGVfdXZpbnQgYnVmIGxlbjtcbiAgaWYgbGVuID4gMCB0aGVuIChcbiAgICBCaV9pby53cml0ZV90YWcgYnVmIGNlbGxfdGFnO1xuICAgIGxpc3RfaXRlcjIgd3JpdGUgYnVmIGxcbiAgKVxuXG5sZXQgd3JpdGVfbGlzdCBjZWxsX3RhZyB3cml0ZSBidWYgbCA9XG4gIEJpX2lvLndyaXRlX3RhZyBidWYgQmlfaW8uYXJyYXlfdGFnO1xuICB3cml0ZV91bnRhZ2dlZF9saXN0IGNlbGxfdGFnIHdyaXRlIGJ1ZiBsXG5cbigqXG4gIHNob3J0Y3V0IGZvciBnZXR0aW5nIHRoZSB0YWcgb2YgYSBwb2x5bW9ycGhpYyB2YXJpYW50IHNpbmNlXG4gIGJpbmlvdSB1c2VzIHRoZSBzYW1lIHJlcHJlc2VudGF0aW9uXG4gICh1c2VmdWxuZXNzPylcbiopXG5sZXQgZ2V0X3BvbHlfdGFnICh4IDogWz4gXSkgPVxuICBsZXQgciA9IE9iai5yZXByIHggaW5cbiAgaWYgT2JqLmlzX2Jsb2NrIHIgdGhlblxuICAgIChPYmoub2JqIChPYmouZmllbGQgciAwKSA6IGludClcbiAgZWxzZVxuICAgIChPYmoub2JqIHIgOiBpbnQpXG5cbigqIFdlIHdhbnQgYW4gaWRlbnRpdHkgZnVuY3Rpb24gdGhhdCBpcyBub3QgaW5saW5lZCAqKVxudHlwZSBpZGVudGl0eV90ID0geyBtdXRhYmxlIF9pZGVudGl0eSA6ICdhLiAnYSAtPiAnYSB9XG5sZXQgaWRlbnRpdHlfcmVmID0geyBfaWRlbnRpdHkgPSAoZnVuIHggLT4geCkgfVxubGV0IGlkZW50aXR5IHggPSBpZGVudGl0eV9yZWYuX2lkZW50aXR5IHhcblxuKCpcbiAgQ2hlY2tpbmcgYXQgcnVudGltZSB0aGF0IG91ciBhc3N1bXB0aW9ucyBvbiB1bnNwZWNpZmllZCBjb21waWxlciBiZWhhdmlvclxuICBzdGlsbCBob2xkLlxuKilcblxudHlwZSB0ID0ge1xuICBfYSA6IGludCBvcHRpb247XG4gIF9iIDogaW50O1xufVxuXG5sZXQgY3JlYXRlICgpID1cbiAgeyB7IF9hID0gTm9uZTsgX2IgPSBBcnJheS5sZW5ndGggU3lzLmFyZ3YgfSB3aXRoIF9hID0gTm9uZSB9XG5cbigqXG4gICBUaGlzIGlzIGEgcnVudGltZSB0ZXN0IHRoYXQgY2hlY2tzIHdoZXRoZXIgb3VyIGFzc3VtcHRpb25zIGFib3V0XG4gICB0aGUgY29tcGlsZXIgc3RpbGwgaG9sZC5cblxuICAgV2UgZ2V0IHRoZSBmb2xsb3dpbmcgd2FybmluZyB3aGVuIHVzaW5nIGFuIE9DYW1sIGNvbXBpbGVyIGJ1aWx0XG4gICB3aXRoIHRoZSBmbGFtYmRhIG9wdGltaXphdGlvbi4gVGhpcyBpcyBwcm9iYWJseSBhIGdvb2Qgd2FybmluZ1xuICAgYW5kIHNob3VsZG4ndCBiZSBpZ25vcmVkIGlmIHRoZSBPQ2FtbC9iaW5pb3UgaXMgdG8gYmUgdXNlZC5cbiAgIFRoaXMgd29uJ3QgYWZmZWN0IHRoZSBPQ2FtbC9KU09OIGJhY2tlbmQuXG5cbiAgID4gV2FybmluZyA1OSBbZmxhbWJkYS1hc3NpZ25tZW50LXRvLW5vbi1tdXRhYmxlLXZhbHVlXTogQSBwb3RlbnRpYWxcbiAgID4gYXNzaWdubWVudCB0byBhIG5vbi1tdXRhYmxlIHZhbHVlIHdhcyBkZXRlY3RlZCBpbiB0aGlzIHNvdXJjZSBmaWxlLlxuICAgPiBTdWNoIGFzc2lnbm1lbnRzIG1heSBnZW5lcmF0ZSBpbmNvcnJlY3QgY29kZSB3aGVuIHVzaW5nIEZsYW1iZGEuXG4qKVxubGV0IHRlc3QgKCkgPVxuICBsZXQgciA9IGNyZWF0ZSAoKSBpblxuICBsZXQgdiA9IFNvbWUgMTcgaW5cbiAgT2JqLnNldF9maWVsZCAoT2JqLnJlcHIgcikgMCAoT2JqLnJlcHIgdik7XG4gIGxldCBzYWZlX3IgPSBpZGVudGl0eSByIGluXG4gICgqIHIuX2EgaXMgaW5saW5lZCBieSBvY2FtbG9wdCBhbmQgZXF1YWxzIE5vbmVcbiAgICAgYmVjYXVzZSB0aGUgZmllbGQgaXMgc3VwcG9zZWQgdG8gYmUgaW1tdXRhYmxlLiAqKVxuICBhc3NlcnQgKHNhZmVfci5fYSA9IHYpXG5cbmxldCAoKSA9IHRlc3QgKClcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiIsIigqIEpzb24gYWRhcHRlcnMuIFNlZSAubWxpLiAqKVxuXG5sZXQgbm9ybWFsaXplX3R5cGVfZmllbGQgdHlwZV9maWVsZF9uYW1lICh4IDogWW9qc29uLlNhZmUudCkgOiBZb2pzb24uU2FmZS50ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgYEFzc29jIGZpZWxkcyAtPlxuICAgICAgKG1hdGNoIExpc3QuYXNzb2MgdHlwZV9maWVsZF9uYW1lIGZpZWxkcyB3aXRoXG4gICAgICAgfCBgU3RyaW5nIHR5cGVfIC0+IGBMaXN0IFsgYFN0cmluZyB0eXBlXzsgeCBdXG4gICAgICAgfCBleGNlcHRpb24gTm90X2ZvdW5kIC0+IHhcbiAgICAgICB8IF8gLT4geCAoKiBtYWxmb3JtZWQgKilcbiAgICAgIClcbiAgfCBgU3RyaW5nIHR5cGVfIGFzIHggLT4geFxuICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcblxubGV0IHJlc3RvcmVfdHlwZV9maWVsZCB0eXBlX2ZpZWxkX25hbWUgKHggOiBZb2pzb24uU2FmZS50KSA6IFlvanNvbi5TYWZlLnQgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBgTGlzdCBbIGBTdHJpbmcgdHlwZV87IGBBc3NvYyBmaWVsZHMgXSAtPlxuICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICh0eXBlX2ZpZWxkX25hbWUsIGBTdHJpbmcgdHlwZV8pIDo6XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4gKGssIHYpIC0+IGsgPD4gdHlwZV9maWVsZF9uYW1lKSBmaWVsZHNcbiAgICAgIGluXG4gICAgICBgQXNzb2MgZmllbGRzXG4gIHwgYFN0cmluZyB0eXBlXyBhcyB4IC0+IHhcbiAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbm1vZHVsZSB0eXBlIFMgPSBzaWdcbiAgdmFsIG5vcm1hbGl6ZSA6IFlvanNvbi5TYWZlLnQgLT4gWW9qc29uLlNhZmUudFxuICB2YWwgcmVzdG9yZSA6IFlvanNvbi5TYWZlLnQgLT4gWW9qc29uLlNhZmUudFxuZW5kXG5cbm1vZHVsZSBUeXBlX2ZpZWxkID0gc3RydWN0XG4gIG1vZHVsZSB0eXBlIFBhcmFtID0gc2lnXG4gICAgdmFsIHR5cGVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICBlbmRcblxuICBtb2R1bGUgTWFrZSAoUGFyYW0gOiBQYXJhbSkgOiBTID0gc3RydWN0XG4gICAgbGV0IG5vcm1hbGl6ZSA9IG5vcm1hbGl6ZV90eXBlX2ZpZWxkIFBhcmFtLnR5cGVfZmllbGRfbmFtZVxuXG4gICAgbGV0IHJlc3RvcmUgPSByZXN0b3JlX3R5cGVfZmllbGQgUGFyYW0udHlwZV9maWVsZF9uYW1lXG4gIGVuZFxuXG4gIG1vZHVsZSBEZWZhdWx0X3BhcmFtIDogUGFyYW0gPSBzdHJ1Y3RcbiAgICBsZXQgdHlwZV9maWVsZF9uYW1lID0gXCJ0eXBlXCJcbiAgZW5kXG5cbiAgaW5jbHVkZSBNYWtlIChEZWZhdWx0X3BhcmFtKVxuZW5kXG5cbm1vZHVsZSBPbmVfZmllbGQgPSBzdHJ1Y3RcbiAgb3BlbiBZb2pzb24uU2FmZVxuXG4gIGxldCBub3JtYWxpemUgKHggOiB0KSA6IHQgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgYEFzc29jIFtuYW1lLCB2YWx1ZV0gLT4gYExpc3QgW2BTdHJpbmcgbmFtZTsgdmFsdWVdXG4gICAgfCBgU3RyaW5nIF8gYXMgeCAtPiB4XG4gICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbiAgbGV0IHJlc3RvcmUgKHggOiB0KSA6IHQgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgYExpc3QgW2BTdHJpbmcgbmFtZTsgdmFsdWVdIC0+IGBBc3NvYyBbbmFtZSwgdmFsdWVdXG4gICAgfCBgU3RyaW5nIF8gYXMgeCAtPiB4XG4gICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5lbmRcblxubW9kdWxlIFR5cGVfYW5kX3ZhbHVlX2ZpZWxkcyA9IHN0cnVjdFxuICBtb2R1bGUgdHlwZSBQYXJhbSA9IHNpZ1xuICAgIHZhbCB0eXBlX2ZpZWxkX25hbWUgOiBzdHJpbmdcbiAgICB2YWwgdmFsdWVfZmllbGRfbmFtZSA6IHN0cmluZ1xuICAgIHZhbCBrbm93bl90YWdzIDogKHN0cmluZyBsaXN0ICogc3RyaW5nKSBvcHRpb25cbiAgZW5kXG5cbiAgbW9kdWxlIE1ha2UgKFBhcmFtIDogUGFyYW0pIDogUyA9IHN0cnVjdFxuICAgIG9wZW4gWW9qc29uLlNhZmVcbiAgICBvcGVuIFBhcmFtXG5cbiAgICBsZXQgaXNfa25vd25fdGFnID1cbiAgICAgIG1hdGNoIGtub3duX3RhZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IChmdW4gXyAtPiB0cnVlKVxuICAgICAgfCBTb21lIChsLCBfKSAtPlxuICAgICAgICAgIGxldCB0YmwgPSBIYXNodGJsLmNyZWF0ZSAoMiAqIExpc3QubGVuZ3RoIGwpIGluXG4gICAgICAgICAgTGlzdC5pdGVyIChmdW4geCAtPiBIYXNodGJsLmFkZCB0YmwgeCAoKSkgbDtcbiAgICAgICAgICBIYXNodGJsLm1lbSB0YmxcblxuICAgIGxldCBpc19jYXRjaF9hbGxfdGFnID1cbiAgICAgIG1hdGNoIGtub3duX3RhZ3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IChmdW4gXyAtPiBmYWxzZSlcbiAgICAgIHwgU29tZSAoXywgcykgLT4gKCg9KSBzKVxuXG4gICAgbGV0IGNhdGNoX2FsbF90YWcgKCkgPVxuICAgICAgbWF0Y2gga25vd25fdGFncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgKF8sIHMpIC0+IHNcblxuICAgIGxldCB3cmFwX3ZhcmlhbnQgdHlwZV8gdmFsdWUgPVxuICAgICAgbGV0IHZhcmlhbnQgPSBgTGlzdCBbYFN0cmluZyB0eXBlXzsgdmFsdWVdIGluXG4gICAgICBpZiBpc19rbm93bl90YWcgdHlwZV8gdGhlblxuICAgICAgICB2YXJpYW50XG4gICAgICBlbHNlXG4gICAgICAgIGBMaXN0IFsgYFN0cmluZyAoY2F0Y2hfYWxsX3RhZyAoKSk7IHZhcmlhbnQgXVxuXG4gICAgbGV0IHdyYXBfZW51bSB0eXBlXyA9XG4gICAgICBpZiBpc19rbm93bl90YWcgdHlwZV8gdGhlblxuICAgICAgICBgU3RyaW5nIHR5cGVfXG4gICAgICBlbHNlXG4gICAgICAgIGBMaXN0IFsgYFN0cmluZyAoY2F0Y2hfYWxsX3RhZyAoKSk7IGBOdWxsIF1cblxuICAgIGxldCBub3JtYWxpemUgKHggOiB0KSA6IHQgPVxuICAgICAgbGV0IG9wZW4gWW9qc29uLlNhZmUuVXRpbCBpblxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBBc3NvYyBmaWVsZHMgLT5cbiAgICAgICAgICBsZXQgdHlwZV8gPSBtZW1iZXIgdHlwZV9maWVsZF9uYW1lIHggfD4gdG9fc3RyaW5nIGluXG4gICAgICAgICAgbGV0IGZvdW5kID0gcmVmIGZhbHNlIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoZnVuICgoaywgdikgYXMgZmllbGQpIC0+XG4gICAgICAgICAgICAgIGlmIGsgPSB2YWx1ZV9maWVsZF9uYW1lIHRoZW4gKFxuICAgICAgICAgICAgICAgIGZvdW5kIDo9IHRydWU7XG4gICAgICAgICAgICAgICAgKGssIHdyYXBfdmFyaWFudCB0eXBlXyB2KVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBmaWVsZFxuICAgICAgICAgICAgKSBmaWVsZHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmaWVsZHMgPVxuICAgICAgICAgICAgaWYgIWZvdW5kIHRoZW5cbiAgICAgICAgICAgICAgZmllbGRzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICh2YWx1ZV9maWVsZF9uYW1lLCB3cmFwX2VudW0gdHlwZV8pIDo6IGZpZWxkc1xuICAgICAgICAgIGluXG4gICAgICAgICAgYEFzc29jIGZpZWxkc1xuICAgICAgfCBtYWxmb3JtZWQgLT4gbWFsZm9ybWVkXG5cbiAgICBsZXQgdW53cmFwX3ZhbHVlICh4IDogdCkgPVxuICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBTdHJpbmcgdGFnIC0+ICh0YWcsIE5vbmUpXG4gICAgICB8IGBMaXN0IFtgU3RyaW5nIHRhZzsgdl0gLT5cbiAgICAgICAgICBpZiBpc19jYXRjaF9hbGxfdGFnIHRhZyB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIHYgd2l0aFxuICAgICAgICAgICAgfCBgTGlzdCBbYFN0cmluZyByZWFsX3RhZzsgYE51bGxdIC0+IChyZWFsX3RhZywgTm9uZSlcbiAgICAgICAgICAgIHwgYExpc3QgW2BTdHJpbmcgcmVhbF90YWc7IHJlYWxfdl0gLT4gKHJlYWxfdGFnLCBTb21lIHJlYWxfdilcbiAgICAgICAgICAgIHwgXyAtPiBmYWlsd2l0aCAoXCJNYWxmb3JtZWQganNvbiBmaWVsZCBcIiBeIHZhbHVlX2ZpZWxkX25hbWUpXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICh0YWcsIFNvbWUgdilcbiAgICAgIHwgbWFsZm9ybWVkIC0+IGZhaWx3aXRoIChcIk1hbGZvcm1lZCBqc29uIGZpZWxkIFwiIF4gdmFsdWVfZmllbGRfbmFtZSlcblxuICAgIGxldCByZXN0b3JlICh4IDogdCkgOiB0ID1cbiAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgfCBgQXNzb2MgZmllbGRzIC0+XG4gICAgICAgICAgbGV0IHR5cGVfID0gcmVmIE5vbmUgaW5cbiAgICAgICAgICBsZXQgZmllbGRzID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCAoZnVuICgoaywgdGFnZ2VkKSBhcyBmaWVsZCkgYWNjIC0+XG4gICAgICAgICAgICAgIGlmIGsgPSB2YWx1ZV9maWVsZF9uYW1lIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCB0YWcsIG9wdF92YWx1ZSA9IHVud3JhcF92YWx1ZSB0YWdnZWQgaW5cbiAgICAgICAgICAgICAgICB0eXBlXyA6PSBTb21lIHRhZztcbiAgICAgICAgICAgICAgICBtYXRjaCBvcHRfdmFsdWUgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICB8IFNvbWUgdiAtPiAodmFsdWVfZmllbGRfbmFtZSwgdikgOjogYWNjXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZSBpZiBrID0gdHlwZV9maWVsZF9uYW1lIHRoZW5cbiAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGZpZWxkIDo6IGFjY1xuICAgICAgICAgICAgICApIGZpZWxkcyBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpZWxkcyA9XG4gICAgICAgICAgICBtYXRjaCAhdHlwZV8gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZpZWxkc1xuICAgICAgICAgICAgfCBTb21lIHRhZyAtPiAodHlwZV9maWVsZF9uYW1lLCBgU3RyaW5nIHRhZykgOjogZmllbGRzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBgQXNzb2MgZmllbGRzXG4gICAgICB8IG1hbGZvcm1lZCAtPiBtYWxmb3JtZWRcbiAgZW5kXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqKiBBcnJheSB3aXRoIGR5bmFtaWMgc2l6ZVxuXG4gICAgSXQgdXNlcyBpbXBlcmF0aXZlIHN0eWxlcyB0byBlbnN1cmUgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIG1vZHVsZXMgKilcblxubW9kdWxlIER5bkFycmF5ID1cbmZ1bmN0b3JcbiAgKEcgOiBHZW5BcnJheS5HZW5BcnJheSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSAnYSB0ID0ge1xuICAgICAgICBtdXRhYmxlIGFycmF5OiAnYSBHLnQ7XG4gICAgICAgIG11dGFibGUgY3VycmVudF9zaXplOiBpbnQ7XG4gICAgICAgIGRlZmF1bHQ6IGludCAtPiAnYTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNyZWF0ZSBuIGEgPVxuICAgICAgICB7IGFycmF5ID0gRy5jcmVhdGUgbiBhOyBjdXJyZW50X3NpemUgPSBuOyBkZWZhdWx0ID0gKGZ1biBfIC0+IGEpIH1cblxuICAgICAgbGV0IGxlbmd0aCBhID0gYS5jdXJyZW50X3NpemVcblxuICAgICAgbGV0IGV4cGFuZCB0ID1cbiAgICAgICAgbGV0IG4gPSBsZW5ndGggdCBpblxuICAgICAgICBsZXQgbicgPSBtYXggKG4gKyAxKSAobiAqIDIpIGluXG4gICAgICAgIGxldCBhcnJheScgPSBHLmluaXQgbicgdC5kZWZhdWx0IGluXG4gICAgICAgIGxldCAoKSA9IEcuYmxpdCB0LmFycmF5IDAgYXJyYXknIDAgbiBpblxuICAgICAgICBsZXQgKCkgPSB0LmFycmF5IDwtIGFycmF5JyBpblxuICAgICAgICB0LmN1cnJlbnRfc2l6ZSA8LSBuJ1xuXG4gICAgICBsZXQgZ2V0IGEgaSA9XG4gICAgICAgIGlmIGxlbmd0aCBhID4gaSB0aGVuXG4gICAgICAgICAgRy5nZXQgYS5hcnJheSBpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhLmRlZmF1bHQgaVxuXG4gICAgICBsZXQgcmVjIHNldCBhIGkgdiA9XG4gICAgICAgIGxldCBuID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgaWYgbiA+IGkgdGhlblxuICAgICAgICAgIEcuc2V0IGEuYXJyYXkgaSB2XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGV4cGFuZCBhIGluXG4gICAgICAgICAgc2V0IGEgaSB2XG4gICAgICAgIClcblxuICAgICAgbGV0IG1ha2UgPSBjcmVhdGVcbiAgICAgIGxldCBpbml0IG4gZiA9IHsgYXJyYXkgPSBHLmluaXQgbiBmOyBjdXJyZW50X3NpemUgPSBuOyBkZWZhdWx0ID0gZiB9XG5cbiAgICAgIGxldCBhcHBlbmQgYSBiID1cbiAgICAgICAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgICAgICAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgICAgICAgbGV0IGMgPSBsYSArIGxiIGluXG4gICAgICAgIGluaXQgYyAoZnVuIHggLT5cbiAgICAgICAgICAgIGlmIHggPCBsYSB0aGVuXG4gICAgICAgICAgICAgIGdldCBhIHhcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgZ2V0IGIgKHggLSBsYSkpXG5cbiAgICAgIGxldCBjb25jYXQgbCA9XG4gICAgICAgIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biB4IC0+IGxlbmd0aCB4ID4gMCkgbCBpblxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkR5bmFtaWNBcnJheS5jb25jYXRcIilcbiAgICAgICAgfCB0IDo6IF8gLT5cbiAgICAgICAgICBsZXQgZWx0ID0gZ2V0IHQgMCBpblxuICAgICAgICAgIGxldCBjID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBzb2wgYSAtPiBzb2wgKyBsZW5ndGggYSkgMCBsIGluXG4gICAgICAgICAgbGV0IG0gPSBjcmVhdGUgYyBlbHQgaW5cbiAgICAgICAgICBsZXQgcmVjIGF1eCBrIGwgPVxuICAgICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgICB8IFtdIC0+ICgpXG4gICAgICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgICAgICBsZXQgcyA9IGxlbmd0aCB0IGluXG4gICAgICAgICAgICAgIGxldCByZWMgYXV4MiBvZmZzZXQgayA9XG4gICAgICAgICAgICAgICAgaWYgb2Zmc2V0ID0gcyB0aGVuXG4gICAgICAgICAgICAgICAgICBhdXggayBxXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBzZXQgbSBrIChnZXQgdCBvZmZzZXQpO1xuICAgICAgICAgICAgICAgICAgYXV4MiAob2Zmc2V0ICsgMSkgKGsgKyAxKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgYXV4MiAwIGtcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGF1eCAwIGwgaW5cbiAgICAgICAgICBtXG5cbiAgICAgIGxldCBzdWIgYSBzdGFydCBsZW4gPVxuICAgICAgICBsZXQgc2l6ZSA9IGxlbmd0aCBhIGluXG4gICAgICAgIGlmIHN0YXJ0IDwgMCB8fCBsZW4gPCAwIHx8IHN0YXJ0ICsgbGVuID4gc2l6ZSB0aGVuXG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEeW5hbWljX2FycmF5LnN1YlwiKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5pdCBsZW4gKGZ1biB4IC0+IGdldCBhICh4ICsgc3RhcnQpKVxuXG4gICAgICBsZXQgY29weSBhID1cbiAgICAgICAge1xuICAgICAgICAgIGFycmF5ID0gRy5jb3B5IGEuYXJyYXk7XG4gICAgICAgICAgY3VycmVudF9zaXplID0gYS5jdXJyZW50X3NpemU7XG4gICAgICAgICAgZGVmYXVsdCA9IGEuZGVmYXVsdDtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgZmlsbCBhIHN0YXJ0IGxlbiB4ID1cbiAgICAgICAgbGV0IHJlYyBhdXggayBpID1cbiAgICAgICAgICBpZiBrIDwgbGVuIHRoZW4gKFxuICAgICAgICAgICAgbGV0ICgpID0gc2V0IGEgaSB4IGluXG4gICAgICAgICAgICBhdXggKGsgKyAxKSAoaSArIDEpXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgc2l6ZSA9IGxlbmd0aCBhIGluXG4gICAgICAgIGlmIHN0YXJ0IDwgMCB8fCBsZW4gPCAwIHx8IHN0YXJ0ICsgbGVuID4gc2l6ZSB0aGVuXG4gICAgICAgICAgcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJEeW5hbWljX2FycmF5LmZpbGxcIilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGF1eCAwIHN0YXJ0XG5cbiAgICAgIGxldCBvZl9saXN0IH5kZWZhdWx0IGwgPVxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudF9zaXplID0gTGlzdC5sZW5ndGggbDtcbiAgICAgICAgICBhcnJheSA9IEcub2ZfbGlzdCB+ZGVmYXVsdCBsO1xuICAgICAgICAgIGRlZmF1bHQgPSAoZnVuIF8gLT4gZGVmYXVsdCk7XG4gICAgICAgIH1cblxuICAgICAgbGV0IGl0ZXIgZiBhID0gRy5pdGVyIGYgYS5hcnJheVxuICAgICAgbGV0IGl0ZXJpIGYgYSA9IEcuaXRlcmkgZiBhLmFycmF5XG4gICAgICBsZXQgZm9sZF9sZWZ0aSBmIGIgYSA9IEcuZm9sZF9sZWZ0aSBmIGIgYS5hcnJheVxuICAgICAgbGV0IGZvbGRfcmlnaHRpIGYgYSBiID0gRy5mb2xkX3JpZ2h0aSBmIGEuYXJyYXkgYlxuICAgICAgbGV0IG1hcCBmIGEgPSBpbml0IChsZW5ndGggYSkgKGZ1biBpIC0+IGYgKGdldCBhIGkpKVxuXG4gICAgICBsZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgICAgICAgaWZcbiAgICAgICAgICBsZW4gPCAwIHx8IG9mczEgPCAwXG4gICAgICAgICAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgICAgICAgIHx8IG9mczIgPCAwXG4gICAgICAgICAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICAgICAgICB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgXCJEeW5hbWljQXJyYXkuYmxpdFwiXG4gICAgICAgIGVsc2UgaWYgb2ZzMSA8IG9mczIgdGhlblxuICAgICAgICAgICgqIFRvcC1kb3duIGNvcHkgKilcbiAgICAgICAgICBmb3IgaSA9IGxlbiAtIDEgZG93bnRvIDAgZG9cbiAgICAgICAgICAgIEcuc2V0IGEyLmFycmF5IChvZnMyICsgaSkgKEcuZ2V0IGExLmFycmF5IChvZnMxICsgaSkpXG4gICAgICAgICAgZG9uZVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCogQm90dG9tLXVwIGNvcHkgKilcbiAgICAgICAgICBmb3IgaSA9IDAgdG8gbGVuIC0gMSBkb1xuICAgICAgICAgICAgRy5zZXQgYTIuYXJyYXkgKG9mczIgKyBpKSAoRy5nZXQgYTEuYXJyYXkgKG9mczEgKyBpKSlcbiAgICAgICAgICBkb25lXG5cbiAgICAgIGxldCBwcmludCA/dHJhaWxpbmcgcHJfcyBwcl9hIGYgYSA9IEcucHJpbnQgP3RyYWlsaW5nIHByX3MgcHJfYSBmIGEuYXJyYXlcbiAgICBlbmQgOlxuICAgICAgR2VuQXJyYXkuR2VuQXJyYXkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSBVbmFyeSBvZiAnYSBhcnJheSB8IEJpbmFyeSBvZiAnYSBhcnJheSBhcnJheVxuXG5sZXQgbWF4X2FycmF5X3NpemUxID0gU3lzLm1heF9hcnJheV9sZW5ndGggKCogNSAqKVxuXG5sZXQgbWF4X2FycmF5X3NpemUyID1cbiAgaWYgZmxvYXRfb2ZfaW50IG1heF9hcnJheV9zaXplMSA+IHNxcnQgKGZsb2F0X29mX2ludCBtYXhfaW50KSB0aGVuXG4gICAgbWF4X2ludFxuICBlbHNlXG4gICAgbWF4X2FycmF5X3NpemUxICogbWF4X2FycmF5X3NpemUxXG5cbmxldCBldWNsaWRlZW4gcCBxID0gcCAvIHEsIHAgbW9kIHFcblxubGV0IGNyZWF0ZSBuIGEgPVxuICBpZiBuIDw9IG1heF9hcnJheV9zaXplMSB0aGVuXG4gICAgVW5hcnkgKEFycmF5Lm1ha2UgbiBhKVxuICBlbHNlIGlmIG4gPiBtYXhfYXJyYXlfc2l6ZTIgdGhlblxuICAgIGludmFsaWRfYXJnIFwiR2VuQXJyYXk6IGFycmF5IHRvbyBsYXJnZVwiXG4gIGVsc2UgKFxuICAgIGxldCBtID1cbiAgICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIG4gbWF4X2FycmF5X3NpemUxIGluXG4gICAgICBsZXQgbCA9IEFycmF5Lm1ha2UgbWF4X2FycmF5X3NpemUxIGEgaW5cbiAgICAgIGxldCBtID1cbiAgICAgICAgQXJyYXkubWFrZVxuICAgICAgICAgIChpZiBxID0gMCB0aGVuXG4gICAgICAgICAgICAgcFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgcCArIDEpXG4gICAgICAgICAgbFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGsgPVxuICAgICAgICBpZiBrID0gLTEgdGhlblxuICAgICAgICAgIG1cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbS4oaykgPC0gQXJyYXkubWFrZSBtYXhfYXJyYXlfc2l6ZTEgYTtcbiAgICAgICAgICBhdXggKGsgLSAxKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgaWYgcSA9IDAgdGhlblxuICAgICAgICBhdXggKHAgLSAxKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG0uKHApIDwtIEFycmF5Lm1ha2UgcSBhO1xuICAgICAgICBhdXggKHAgLSAxKVxuICAgICAgKVxuICAgIGluXG4gICAgQmluYXJ5IG1cbiAgKVxuXG5sZXQgbGVuZ3RoID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lmxlbmd0aCBhXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgcCA9IEFycmF5Lmxlbmd0aCBhIGluXG4gICAgbGV0IHEgPSBBcnJheS5sZW5ndGggKEFycmF5LnVuc2FmZV9nZXQgYSAocCAtIDEpKSBpblxuICAgICgocCAtIDEpICogbWF4X2FycmF5X3NpemUxKSArIHFcblxubGV0IGdldDIgYSBwIHEgPSBBcnJheS51bnNhZmVfZ2V0IChBcnJheS51bnNhZmVfZ2V0IGEgcCkgcVxuXG5sZXQgZ2V0IGEgaSA9XG4gIG1hdGNoIGEgd2l0aFxuICB8IFVuYXJ5IGEgLT4gQXJyYXkudW5zYWZlX2dldCBhIGlcbiAgfCBCaW5hcnkgYSAtPlxuICAgIGxldCBwLCBxID0gZXVjbGlkZWVuIGkgbWF4X2FycmF5X3NpemUxIGluXG4gICAgZ2V0MiBhIHAgcVxuXG5sZXQgc2V0MiBhIHAgcSBqID0gQXJyYXkudW5zYWZlX3NldCAoQXJyYXkudW5zYWZlX2dldCBhIHApIHEgalxuXG5sZXQgc2V0IGEgaSBqID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS51bnNhZmVfc2V0IGEgaSBqXG4gIHwgQmluYXJ5IGEgLT5cbiAgICBsZXQgcCwgcSA9IGV1Y2xpZGVlbiBpIG1heF9hcnJheV9zaXplMSBpblxuICAgIHNldDIgYSBwIHEgalxuXG5sZXQgbWFrZSA9IGNyZWF0ZVxuXG5sZXQgaW5pdCBuIGYgPVxuICBpZiBuIDwgMCB8fCBuID4gbWF4X2FycmF5X3NpemUyIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCAoXCJCaWdfYXJyYXkuaW5pdCA6IFwiIF4gc3RyaW5nX29mX2ludCBuKSlcbiAgZWxzZSBpZiBuIDw9IG1heF9hcnJheV9zaXplMSB0aGVuXG4gICAgVW5hcnkgKEFycmF5LmluaXQgbiBmKVxuICBlbHNlIChcbiAgICBsZXQgbSA9XG4gICAgICBsZXQgcCwgcSA9IGV1Y2xpZGVlbiBuIG1heF9hcnJheV9zaXplMSBpblxuICAgICAgQXJyYXkuaW5pdFxuICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICBwXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIHAgKyAxKVxuICAgICAgICAoZnVuIHAnIC0+XG4gICAgICAgICAgaWYgcCcgPSBwIHRoZW5cbiAgICAgICAgICAgIEFycmF5LmluaXQgcSAoZnVuIHggLT4gZiAoKHAgKiBtYXhfYXJyYXlfc2l6ZTEpICsgeCkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQXJyYXkuaW5pdCBtYXhfYXJyYXlfc2l6ZTEgKGZ1biB4IC0+IGYgKChwJyAqIG1heF9hcnJheV9zaXplMSkgKyB4KSkpXG4gICAgaW5cbiAgICBCaW5hcnkgbVxuICApXG5cbmxldCBhcHBlbmQgYSBiID1cbiAgbGV0IGxiID0gbGVuZ3RoIGIgaW5cbiAgbGV0IGxhID0gbGVuZ3RoIGEgaW5cbiAgbGV0IGMgPSBsYSArIGxiIGluXG4gIGluaXQgYyAoZnVuIHggLT5cbiAgICAgIGlmIHggPCBsYSB0aGVuXG4gICAgICAgIGdldCBhIHhcbiAgICAgIGVsc2VcbiAgICAgICAgZ2V0IGIgKHggLSBsYSkpXG5cbmxldCBjb25jYXQgbCA9XG4gIGxldCBsID0gTGlzdC5maWx0ZXIgKGZ1biB4IC0+IGxlbmd0aCB4ID4gMCkgbCBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBVbmFyeSBbfHxdXG4gIHwgdCA6OiBfIC0+XG4gICAgbGV0IGVsdCA9IGdldCB0IDAgaW5cbiAgICBsZXQgYyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gc29sIGEgLT4gc29sICsgbGVuZ3RoIGEpIDAgbCBpblxuICAgIGxldCBtID0gY3JlYXRlIGMgZWx0IGluXG4gICAgbGV0IHJlYyBhdXggayBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBtXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgcyA9IGxlbmd0aCB0IGluXG4gICAgICAgIGxldCByZWMgYXV4MiBvZmZzZXQgayA9XG4gICAgICAgICAgaWYgb2Zmc2V0ID0gcyB0aGVuXG4gICAgICAgICAgICBhdXggayBxXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBzZXQgbSBrIChnZXQgdCBvZmZzZXQpO1xuICAgICAgICAgICAgYXV4MiAob2Zmc2V0ICsgMSkgKGsgKyAxKVxuICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4MiAwIGtcbiAgICBpblxuICAgIGF1eCAwIGxcblxubGV0IHN1YiBhIHN0YXJ0IGxlbiA9XG4gIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkJpZ19hcnJheS5zdWJcIilcbiAgZWxzZSBpZiBzaXplID0gMCB0aGVuXG4gICAgVW5hcnkgW3x8XVxuICBlbHNlXG4gICAgaW5pdCBsZW4gKGZ1biB4IC0+IGdldCBhICh4ICsgc3RhcnQpKVxuXG5sZXQgY29weSA9IGZ1bmN0aW9uXG4gIHwgVW5hcnkgYSAtPiBVbmFyeSAoQXJyYXkuY29weSBhKVxuICB8IEJpbmFyeSBiJyAtPlxuICAgIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIGInIGluXG4gICAgQmluYXJ5IChBcnJheS5pbml0IHNpemUgKGZ1biB4IC0+IEFycmF5LmNvcHkgYicuKHgpKSlcblxubGV0IGZpbGwgYSBzdGFydCBsZW4geCA9XG4gIGxldCBzaXplID0gbGVuZ3RoIGEgaW5cbiAgaWYgc3RhcnQgPCAwIHx8IGxlbiA8IDAgfHwgc3RhcnQgKyBsZW4gPiBzaXplIHRoZW5cbiAgICByYWlzZSAoSW52YWxpZF9hcmd1bWVudCBcIkJpZ19hcnJheS5maWxsXCIpXG4gIGVsc2UgKFxuICAgIGxldCByZWMgYXV4IGsgaSA9XG4gICAgICBpZiBrIDwgbGVuIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBzZXQgYSBpIHggaW5cbiAgICAgICAgYXV4IChrICsgMSkgKGkgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgc3RhcnRcbiAgKVxuXG5sZXQgb2ZfbGlzdCB+ZGVmYXVsdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gVW5hcnkgW3x8XVxuICB8IHQgOjogXyBhcyBsIC0+XG4gICAgbGV0IF9pa25vd3doYXRpbWRvaW5nID0gZGVmYXVsdCBpblxuICAgIGxldCBzaXplID0gTGlzdC5sZW5ndGggbCBpblxuICAgIGxldCBhID0gY3JlYXRlIHNpemUgdCBpblxuICAgIGxldCByZWMgYXV4IGsgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBhXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBsZXQgKCkgPSBzZXQgYSBrIHQgaW5cbiAgICAgICAgYXV4IChrICsgMSkgcVxuICAgIGluXG4gICAgYXV4IDAgbFxuXG5sZXQgaXRlciBmID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lml0ZXIgZiBhXG4gIHwgQmluYXJ5IGEgLT4gQXJyYXkuaXRlciAoQXJyYXkuaXRlciBmKSBhXG5cbmxldCBpdGVyaSBmID0gZnVuY3Rpb25cbiAgfCBVbmFyeSBhIC0+IEFycmF5Lml0ZXJpIGYgYVxuICB8IEJpbmFyeSBhIC0+XG4gICAgbGV0IGcgayBrJyA9IChrICogbWF4X2FycmF5X3NpemUxKSArIGsnIGluXG4gICAgQXJyYXkuaXRlcmkgKGZ1biBrIGEgLT4gQXJyYXkuaXRlcmkgKGZ1biBrJyBhIC0+IGYgKGcgayBrJykgYSkgYSkgYVxuXG5sZXQgZ2VuIGcxIGcyIGgxIGgyIGYgPSBmdW5jdGlvblxuICB8IFVuYXJ5IGEgLT4gaDEgKGcxIGYgYSlcbiAgfCBCaW5hcnkgYSAtPiBoMiAoZzIgKGcxIGYpIGEpXG5cbmxldCBtYXAgZiB4ID0gZ2VuIEFycmF5Lm1hcCBBcnJheS5tYXAgKGZ1biB4IC0+IFVuYXJ5IHgpIChmdW4geCAtPiBCaW5hcnkgeCkgZiB4XG5cbigqbGV0IGdlbmkgZzEgZzIgaDEgaDIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFVuYXJ5IGEgLT4gaDEgKGcxIGYgYSlcbiAgICAgIHwgQmluYXJ5IGIgLT5cbiAgaDJcbiAgICAoZzJcbiAgICAgICAoZnVuIHAgYSAtPlxuICAgICAgICBsZXQgbiA9IHAgKiBtYXhfYXJyYXlfc2l6ZTEgaW5cbiAgICAgICAgZzFcbiAgIChmdW4gcSBhIC0+IGYgKHEgKyBuKSBhKVxuICAgYSlcbiAgICAgICBiKVxuXG4gICAgbGV0IG1hcGkgPVxuICAgICAgZ2VuaSBBcnJheS5tYXBpIEFycmF5Lm1hcGkgKGZ1biB4IC0+IFVuYXJ5IHgpIChmdW4geCAtPiBCaW5hcnkgeCkqKVxuXG5sZXQgYmxpdCBhMSBvZnMxIGEyIG9mczIgbGVuID1cbiAgaWZcbiAgICBsZW4gPCAwIHx8IG9mczEgPCAwXG4gICAgfHwgb2ZzMSA+IGxlbmd0aCBhMSAtIGxlblxuICAgIHx8IG9mczIgPCAwXG4gICAgfHwgb2ZzMiA+IGxlbmd0aCBhMiAtIGxlblxuICB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJBcnJheS5ibGl0XCJcbiAgZWxzZSBpZiBvZnMxIDwgb2ZzMiB0aGVuXG4gICAgKCogVG9wLWRvd24gY29weSAqKVxuICAgIGZvciBpID0gbGVuIC0gMSBkb3dudG8gMCBkb1xuICAgICAgc2V0IGEyIChvZnMyICsgaSkgKGdldCBhMSAob2ZzMSArIGkpKVxuICAgIGRvbmVcbiAgZWxzZVxuICAgICgqIEJvdHRvbS11cCBjb3B5ICopXG4gICAgZm9yIGkgPSAwIHRvIGxlbiAtIDEgZG9cbiAgICAgIHNldCBhMiAob2ZzMiArIGkpIChnZXQgYTEgKG9mczEgKyBpKSlcbiAgICBkb25lXG5cbmxldCBmb2xkX2xlZnRpIGYgaW5pdCBhID1cbiAgbGV0IHkgPSByZWYgaW5pdCBpblxuICBsZXQgKCkgPSBpdGVyaSAoZnVuIGkgZSAtPiB5IDo9IGYgaSAheSBlKSBhIGluXG4gICF5XG5cbmxldCBmb2xkX3JpZ2h0IGYgYSBpbml0ID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVW5hcnkgYSAtPiBBcnJheS5mb2xkX3JpZ2h0IGYgYSBpbml0XG4gIHwgQmluYXJ5IGEgLT4gQXJyYXkuZm9sZF9yaWdodCAoQXJyYXkuZm9sZF9yaWdodCBmKSBhIGluaXRcblxubGV0IGZvbGRfcmlnaHRpIGYgYSBpbml0ID1cbiAgbGV0IGcgayAoaSwgY3VycmVudCkgPSBpIC0gMSwgZiBpIGsgY3VycmVudCBpblxuICBzbmQgKGZvbGRfcmlnaHQgZyBhIChsZW5ndGggYSAtIDEsIGluaXQpKVxuXG5sZXQgcHJpbnQgPyh0cmFpbGluZyA9IGZ1biBfIC0+ICgpKSBwcl9zZXAgcHJfZWwgZiBhID1cbiAgbGV0IHJlYyBhdXggaSBmID1cbiAgICBpZiBpIDwgbGVuZ3RoIGEgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBwcl9lbCBpIGYgKGdldCBhIGkpIGluXG4gICAgICBpZiBpIDwgbGVuZ3RoIGEgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgICBhdXggKHN1Y2MgaSkgZlxuICAgICAgKSBlbHNlIGlmIGkgPiAwIHRoZW5cbiAgICAgICAgdHJhaWxpbmcgZlxuICAgIClcbiAgaW5cbiAgYXV4IDAgZlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGZsb2F0X2lzX3plcm8geCA9XG4gIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICB8IEZQX3plcm8gLT4gdHJ1ZVxuICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IGZhbHNlXG5cbmxldCBwb3cgaSBqID1cbiAgbGV0ICgpID0gYXNzZXJ0ICgwIDw9IGopIGluXG4gIGxldCByZWMgYXV4IGkgayBhY2N1ID1cbiAgICBpZiBrID0gMCB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBrIGxhbmQgMSA9IDAgdGhlblxuICAgICAgYXV4IGkgKGsgLyAyKSBhY2N1ICogYWNjdVxuICAgIGVsc2VcbiAgICAgIGF1eCBpIChrIC8gMikgKGkgKiBhY2N1ICogYWNjdSlcbiAgaW5cbiAgYXV4IGkgaiAxXG5cbmxldCBmYWN0IGkgPVxuICBsZXQgcmVjIGF1eCBpIGFjY3UgPVxuICAgIGlmIGkgPCAyIHRoZW5cbiAgICAgIGFjY3VcbiAgICBlbHNlXG4gICAgICBhdXggKGkgLSAxKSAoaSAqIGFjY3UpXG4gIGluXG4gIGF1eCBpIDFcblxubGV0IGdldF9wcm9kdWN0X2ltYWdlX29jYyBzdGFydCBjb21iaW5lIGYgbCA9XG4gIGxldCBsID0gTGlzdC5zb3J0IGNvbXBhcmUgbCBpblxuICBsZXQgcmVjIGF1eCBsIG9sZCBvY2MgYWNjdSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBoIDo6IHQgd2hlbiBoID0gb2xkIC0+IGF1eCB0IG9sZCAoMSArIG9jYykgYWNjdVxuICAgIHwgXyAtPlxuICAgICAgbGV0IGFjY3UgPSBjb21iaW5lIGFjY3UgKGYgb2NjKSBpblxuICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgfCBoIDo6IHQgLT4gYXV4IHQgaCAxIGFjY3VcbiAgICAgIHwgW10gLT4gYWNjdSlcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gMVxuICB8IGggOjogdCAtPiBhdXggdCBoIDEgc3RhcnRcblxubGV0IGdldF9wcm9kdWN0X2ltYWdlX29jY18yIHN0YXJ0IGNvbWJpbmUgZiBsMSBsMiA9XG4gIGxldCBsMSA9IExpc3Quc29ydCBjb21wYXJlIGwxIGluXG4gIGxldCBsMiA9IExpc3Quc29ydCBjb21wYXJlIGwyIGluXG4gIGxldCBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IFtdLCAwXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCByZWMgYXV4IGwgaCBvY2MgPVxuICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgfCBbXSAtPiBbXSwgb2NjXG4gICAgICAgIHwgaCcgOjogdCB3aGVuIGggPSBoJyAtPiBhdXggdCBoIChvY2MgKyAxKVxuICAgICAgICB8IF8gLT4gbCwgb2NjXG4gICAgICBpblxuICAgICAgYXV4IHQgaCAxXG4gIGluXG4gIGxldCByZWMgYXV4IGwxIGwyIGFjY3UgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBoMSA6OiBfLCBoMiA6OiBfIHdoZW4gaDEgPSBoMiAtPlxuICAgICAgbGV0IGwxLCBvY2MxID0gY291bnRfaGVhZF9hbmRfZ2V0X3RhaWwgbDEgaW5cbiAgICAgIGxldCBsMiwgb2NjMiA9IGNvdW50X2hlYWRfYW5kX2dldF90YWlsIGwyIGluXG4gICAgICBhdXggbDEgbDIgKGNvbWJpbmUgYWNjdSAoZiBvY2MxIG9jYzIpKVxuICAgIHwgaDEgOjogXywgaDIgOjogXyB3aGVuIGNvbXBhcmUgaDEgaDIgPCAwIC0+XG4gICAgICBsZXQgbDEsIG9jYzEgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMSBpblxuICAgICAgYXV4IGwxIGwyIChjb21iaW5lIGFjY3UgKGYgb2NjMSAwKSlcbiAgICB8IF8gOjogXywgXyA6OiBfIC0+XG4gICAgICBsZXQgbDIsIG9jYzIgPSBjb3VudF9oZWFkX2FuZF9nZXRfdGFpbCBsMiBpblxuICAgICAgYXV4IGwxIGwyIChjb21iaW5lIGFjY3UgKGYgMCBvY2MyKSlcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gYWNjdVxuICBpblxuICBhdXggbDEgbDIgc3RhcnRcblxubGV0IGRpdjIgeCA9IEludDY0LmRpdiB4IChJbnQ2NC5hZGQgSW50NjQub25lIEludDY0Lm9uZSlcblxubGV0IHBvdzY0IHggbiA9XG4gIGFzc2VydCAobiA+PSBJbnQ2NC56ZXJvKTtcbiAgbGV0IHJlYyBhdXggayBhY2N1ID1cbiAgICBpZiBrID0gSW50NjQuemVybyB0aGVuXG4gICAgICBhY2N1XG4gICAgZWxzZSBpZiBJbnQ2NC5sb2dhbmQgayBJbnQ2NC5vbmUgPSBJbnQ2NC56ZXJvIHRoZW5cbiAgICAgIGF1eCAoZGl2MiBrKSAoSW50NjQubXVsIGFjY3UgYWNjdSlcbiAgICBlbHNlXG4gICAgICBhdXggKGRpdjIgaykgKEludDY0Lm11bCB4IChJbnQ2NC5tdWwgYWNjdSBhY2N1KSlcbiAgaW5cbiAgYXV4IG4gSW50NjQub25lXG5cbmxldCBjYW50b3JfcGFpcmluZyB4IHkgPVxuICBsZXQgcyA9IHggKyB5IGluXG4gIChzdWNjIHMgKiBzIC8gMikgKyB5XG5cbmxldCByZWFkX2lucHV0ICgpID1cbiAgbGV0IHJlYyBwYXJzZSBhY2MgaW5wdXQgPVxuICAgIG1hdGNoIFN0cmVhbS5uZXh0IGlucHV0IHdpdGhcbiAgICB8ICdcXG4nIC0+IGFjY1xuICAgIHwgYyAtPiBwYXJzZSAoUHJpbnRmLnNwcmludGYgXCIlcyVjXCIgYWNjIGMpIGlucHV0XG4gIGluXG4gIHRyeVxuICAgIGxldCB1c2VyX2lucHV0ID0gU3RyZWFtLm9mX2NoYW5uZWwgc3RkaW4gaW5cbiAgICBwYXJzZSBcIlwiIHVzZXJfaW5wdXRcbiAgd2l0aCBTdHJlYW0uRmFpbHVyZSAtPiBpbnZhbGlkX2FyZyBcIlRvb2xzLlJlYWRfaW5wdXQ6IGNhbm5vdCByZWFkIHN0cmVhbVwiXG5cbmxldCBub3RfYW5faWQgcyA9XG4gIFN0cmluZy5sZW5ndGggcyA9IDBcbiAgfHxcbiAgbGV0IGkgPSBpbnRfb2ZfY2hhciBzLlswXSBpblxuICAoaSA8IDY1IHx8IGkgPiAxMjIgfHwgKGkgPiA5MCAmJiAoaSA8PiA5NSB8fCBTdHJpbmcubGVuZ3RoIHMgPSAxKSAmJiBpIDwgOTcpKVxuICB8fFxuICB0cnlcbiAgICBTdHJpbmcuaXRlclxuICAgICAgKGZ1biBjIC0+XG4gICAgICAgIGxldCBpID0gaW50X29mX2NoYXIgYyBpblxuICAgICAgICBpZlxuICAgICAgICAgIGkgPCA0OCB8fCBpID4gMTIyXG4gICAgICAgICAgfHwgKGkgPiA1NyAmJiAoaSA8IDY1IHx8IChpID4gOTAgJiYgaSA8PiA5NSAmJiBpIDwgOTcpKSlcbiAgICAgICAgdGhlblxuICAgICAgICAgIHJhaXNlIE5vdF9mb3VuZClcbiAgICAgIHM7XG4gICAgZmFsc2VcbiAgd2l0aCBOb3RfZm91bmQgLT4gdHJ1ZVxuXG5sZXQgYXJyYXlfZm9sZF9sZWZ0X21hcGkgZiB4IGEgPVxuICBsZXQgeSA9IHJlZiB4IGluXG4gIGxldCBvID1cbiAgICBBcnJheS5pbml0IChBcnJheS5sZW5ndGggYSkgKGZ1biBpIC0+XG4gICAgICAgIGxldCB5Jywgb3V0ID0gZiBpICF5IGEuKGkpIGluXG4gICAgICAgIGxldCAoKSA9IHkgOj0geScgaW5cbiAgICAgICAgb3V0KVxuICBpblxuICAheSwgb1xuXG5sZXQgYXJyYXlfbWFwX29mX2xpc3QgPVxuICBsZXQgcmVjIGZpbGwgZiBpIHYgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gKClcbiAgICB8IHggOjogbCAtPlxuICAgICAgQXJyYXkudW5zYWZlX3NldCB2IGkgKGYgeCk7XG4gICAgICBmaWxsIGYgKHN1Y2MgaSkgdiBsXG4gIGluXG4gIGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBbfHxdXG4gICAgfCB4IDo6IGwgLT5cbiAgICAgIGxldCBsZW4gPSBzdWNjIChMaXN0Lmxlbmd0aCBsKSBpblxuICAgICAgbGV0IGFucyA9IEFycmF5Lm1ha2UgbGVuIChmIHgpIGluXG4gICAgICBsZXQgKCkgPSBmaWxsIGYgMSBhbnMgbCBpblxuICAgICAgYW5zXG5cbmxldCBhcnJheV9yZXZfb2ZfbGlzdCA9XG4gIGxldCByZWMgZmlsbCBvdXQgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICB8IGgnIDo6IHQnIC0+XG4gICAgICBsZXQgKCkgPSBBcnJheS51bnNhZmVfc2V0IG91dCBpIGgnIGluXG4gICAgICBmaWxsIG91dCAocHJlZCBpKSB0J1xuICBpblxuICBmdW5jdGlvblxuICB8IFtdIC0+IFt8fF1cbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgbCA9IHN1Y2MgKExpc3QubGVuZ3RoIHQpIGluXG4gICAgbGV0IG91dCA9IEFycmF5Lm1ha2UgbCBoIGluXG4gICAgbGV0ICgpID0gZmlsbCBvdXQgKGwgLSAyKSB0IGluXG4gICAgb3V0XG5cbmxldCBhcnJheV9yZXZfbWFwX29mX2xpc3QgPVxuICBsZXQgcmVjIGZpbGwgZiBvdXQgaSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhc3NlcnQgKGkgPSAtMSlcbiAgICB8IGgnIDo6IHQnIC0+XG4gICAgICBsZXQgKCkgPSBBcnJheS51bnNhZmVfc2V0IG91dCBpIChmIGgnKSBpblxuICAgICAgZmlsbCBmIG91dCAocHJlZCBpKSB0J1xuICBpblxuICBmdW4gZiAtPiBmdW5jdGlvblxuICAgIHwgW10gLT4gW3x8XVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgbCA9IHN1Y2MgKExpc3QubGVuZ3RoIHQpIGluXG4gICAgICBsZXQgb3V0ID0gQXJyYXkubWFrZSBsIChmIGgpIGluXG4gICAgICBsZXQgKCkgPSBmaWxsIGYgb3V0IChsIC0gMikgdCBpblxuICAgICAgb3V0XG5cbmxldCBhcnJheV9mb2xkX2xlZnRpIGYgeCBhID1cbiAgbGV0IHkgPSByZWYgeCBpblxuICBsZXQgKCkgPSBBcnJheS5pdGVyaSAoZnVuIGkgZSAtPiB5IDo9IGYgaSAheSBlKSBhIGluXG4gICF5XG5cbmxldCByZWMgYXV4X2ZvbGRfcmlnaHRpIGkgZiBhIHggPVxuICBpZiBpIDwgMCB0aGVuXG4gICAgeFxuICBlbHNlXG4gICAgYXV4X2ZvbGRfcmlnaHRpIChwcmVkIGkpIGYgYSAoZiBpIGEuKGkpIHgpXG5cbmxldCBhcnJheV9mb2xkX3JpZ2h0aSBmIGEgeCA9IGF1eF9mb2xkX3JpZ2h0aSAoQXJyYXkubGVuZ3RoIGEgLSAxKSBmIGEgeFxuXG5sZXQgYXJyYXlfZm9sZF9sZWZ0MmkgZiB4IGExIGEyID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYTEgaW5cbiAgaWYgbCA8PiBBcnJheS5sZW5ndGggYTIgdGhlblxuICAgIHJhaXNlIChJbnZhbGlkX2FyZ3VtZW50IFwiYXJyYXlfZm9sZF9sZWZ0MmlcIilcbiAgZWxzZVxuICAgIGFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggZSAtPiBmIGkgeCBlIGEyLihpKSkgeCBhMVxuXG5sZXQgYXJyYXlfZmlsdGVyIGYgYSA9XG4gIGFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgYWNjIHggLT5cbiAgICAgIGlmIGYgaSB4IHRoZW5cbiAgICAgICAgaSA6OiBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjKVxuICAgIFtdIGFcblxubGV0IGFycmF5X21pbl9lcXVhbF9ub3RfbnVsbCBsMSBsMiA9XG4gIGlmIEFycmF5Lmxlbmd0aCBsMSA8PiBBcnJheS5sZW5ndGggbDIgdGhlblxuICAgIE5vbmVcbiAgZWxzZSAoXG4gICAgbGV0IHJlYyBmIGogPVxuICAgICAgaWYgaiA9IEFycmF5Lmxlbmd0aCBsMSB0aGVuXG4gICAgICAgIFNvbWUgKFtdLCBbXSlcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbmIxLCBhZzEgPSBsMS4oaikgaW5cbiAgICAgICAgbGV0IG5iMiwgYWcyID0gbDIuKGopIGluXG4gICAgICAgIGlmIG5iMSA8PiBuYjIgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBpZiBuYjEgPSAwIHRoZW5cbiAgICAgICAgICBmIChzdWNjIGopXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZWMgYXV4IGkgdmEgb3V0ID1cbiAgICAgICAgICAgIGlmIGkgPSBBcnJheS5sZW5ndGggbDEgdGhlblxuICAgICAgICAgICAgICBTb21lIG91dFxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBuYjEsIGFnMSA9IGwxLihpKSBpblxuICAgICAgICAgICAgICBsZXQgbmIyLCBhZzIgPSBsMi4oaSkgaW5cbiAgICAgICAgICAgICAgaWYgbmIxIDw+IG5iMiB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlIGlmIG5iMSA+IDAgJiYgbmIxIDwgdmEgdGhlblxuICAgICAgICAgICAgICAgIGF1eCAoc3VjYyBpKSBuYjEgKGFnMSwgYWcyKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYXV4IChzdWNjIGkpIHZhIG91dFxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChzdWNjIGopIG5iMSAoYWcxLCBhZzIpXG4gICAgICAgIClcbiAgICAgIClcbiAgICBpblxuICAgIGYgMFxuICApXG5cbmxldCBhcnJheV9jb21wYXJlIGNvbXBhcmUgYSBiID1cbiAgbGV0IGwgPSBBcnJheS5sZW5ndGggYSBpblxuICBsZXQgbCcgPSBBcnJheS5sZW5ndGggYiBpblxuICBsZXQgZCA9IFN0ZGxpYi5jb21wYXJlIGwgbCcgaW5cbiAgbGV0IHJlYyBhdXhfYXJyYXlfY29tcGFyZSBrID1cbiAgICBpZiBrID49IGwgdGhlblxuICAgICAgMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG8gPSBjb21wYXJlIGEuKGspIGIuKGspIGluXG4gICAgICBpZiBvIDw+IDAgdGhlblxuICAgICAgICBvXG4gICAgICBlbHNlXG4gICAgICAgIGF1eF9hcnJheV9jb21wYXJlIChzdWNjIGspXG4gICAgKVxuICBpblxuICBpZiBkIDw+IDAgdGhlblxuICAgIGRcbiAgZWxzZVxuICAgIGF1eF9hcnJheV9jb21wYXJlIDBcblxubGV0IGl0ZXJpIGYgaSA9XG4gIGxldCByZWMgYXV4IGogPVxuICAgIGlmIGogPCBpIHRoZW4gKFxuICAgICAgbGV0ICgpID0gZiBqIGluXG4gICAgICBhdXggKHN1Y2MgailcbiAgICApXG4gIGluXG4gIGF1eCAwXG5cbmxldCByZWMgcmVjdGkgZiB4IGkgPVxuICBpZiAwIDwgaSB0aGVuIChcbiAgICBsZXQgaScgPSBwcmVkIGkgaW5cbiAgICByZWN0aSBmIChmIHggaScpIGknXG4gICkgZWxzZVxuICAgIHhcblxubGV0IG1pbl9wb3NfaW50X25vdF96ZXJvIChrZXlhLCBkYXRhYSkgKGtleWIsIGRhdGFiKSA9XG4gIGlmIGtleWEgPSAwIHRoZW5cbiAgICBrZXliLCBkYXRhYlxuICBlbHNlIGlmIGtleWIgPSAwIHRoZW5cbiAgICBrZXlhLCBkYXRhYVxuICBlbHNlIGlmIGNvbXBhcmUga2V5YSBrZXliID4gMCB0aGVuXG4gICAga2V5YiwgZGF0YWJcbiAgZWxzZVxuICAgIGtleWEsIGRhdGFhXG5cbmxldCBtYXhfcG9zX2ludF9ub3RfemVybyAoa2V5YSwgZGF0YWEpIChrZXliLCBkYXRhYikgPVxuICBpZiBjb21wYXJlIGtleWEga2V5YiA+IDAgdGhlblxuICAgIGtleWEsIGRhdGFhXG4gIGVsc2VcbiAgICBrZXliLCBkYXRhYlxuXG5sZXQgZm9sZF9vdmVyX3Blcm11dGF0aW9ucyBmIGwgYWNjdSA9XG4gIGxldCByZWMgYXV4IHRvX2RvIGRpc2NhcmRlZCBwZXJtdXRhdGlvbiBhY2N1ID1cbiAgICBtYXRjaCB0b19kbywgZGlzY2FyZGVkIHdpdGhcbiAgICB8IFtdLCBbXSAtPiBmIHBlcm11dGF0aW9uIGFjY3VcbiAgICB8IFtdLCBfIDo6IF8gLT4gYWNjdVxuICAgIHwgaCA6OiB0LCBfIC0+XG4gICAgICBsZXQgdG9fZG8xID0gTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGEgLT4gYSA6OiBsaXN0KSB0IGRpc2NhcmRlZCBpblxuICAgICAgbGV0IGFjY3UgPSBhdXggdG9fZG8xIFtdIChoIDo6IHBlcm11dGF0aW9uKSBhY2N1IGluXG4gICAgICBsZXQgYWNjdSA9IGF1eCB0IChoIDo6IGRpc2NhcmRlZCkgcGVybXV0YXRpb24gYWNjdSBpblxuICAgICAgYWNjdVxuICBpblxuICBhdXggbCBbXSBbXSBhY2N1XG5cbmxldCBnY2RfMiBhIGIgPVxuICBsZXQgcmVjIGF1eCBhIGIgPVxuICAgIGlmIGIgPSAwIHRoZW5cbiAgICAgIGFcbiAgICBlbHNlXG4gICAgICBhdXggYiAoYSBtb2QgYilcbiAgaW5cbiAgbGV0IGEgPSBhYnMgYSBpblxuICBsZXQgYiA9IGFicyBiIGluXG4gIGlmIGEgPCBiIHRoZW5cbiAgICBhdXggYiBhXG4gIGVsc2VcbiAgICBhdXggYSBiXG5cbmxldCBsY21fMiBhIGIgPSBhYnMgYSAqIGFicyBiIC8gZ2NkXzIgYSBiXG5cbmxldCBsY20gbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IFtdIC0+IDBcbiAgfCBoIDo6IHQgLT4gTGlzdC5mb2xkX2xlZnQgbGNtXzIgaCB0XG5cbmxldCBnZXRfaW50ZXJ2YWxfbGlzdCBwIGkgaiA9XG4gIGxldCBhZGQgY3VycmVudCBvdXRwdXQgPVxuICAgIG1hdGNoIGN1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRwdXRcbiAgICB8IFNvbWUgcCAtPiBwIDo6IG91dHB1dFxuICBpblxuICBsZXQgaW5zZXJ0IGsgY3VycmVudCA9XG4gICAgbWF0Y2ggY3VycmVudCB3aXRoXG4gICAgfCBOb25lIC0+IFNvbWUgKGssIGspXG4gICAgfCBTb21lIChfLCBqKSAtPiBTb21lIChrLCBqKVxuICBpblxuICBsZXQgcmVjIGF1eCBwIGsgY3VycmVudCBvdXRwdXQgPVxuICAgIGlmIGsgPCBpIHRoZW5cbiAgICAgIGFkZCBjdXJyZW50IG91dHB1dFxuICAgIGVsc2UgaWYgcCBrIHRoZW5cbiAgICAgIGF1eCBwIChrIC0gMSkgKGluc2VydCBrIGN1cnJlbnQpIG91dHB1dFxuICAgIGVsc2VcbiAgICAgIGF1eCBwIChrIC0gMSkgTm9uZSAoYWRkIGN1cnJlbnQgb3V0cHV0KVxuICBpblxuICBhdXggcCBqIE5vbmUgW11cblxubGV0IGxvd2VyY2FzZSA9IFN0cmluZy5sb3dlcmNhc2VfYXNjaWlcbmxldCBjYXBpdGFsaXplID0gU3RyaW5nLmNhcGl0YWxpemVfYXNjaWlcblxubGV0IHN0cmluZ19zcGxpdF9vbl9jaGFyIChkZWxpbWl0ZXIgOiBjaGFyKSAocyA6IHN0cmluZykgOlxuICAgIHN0cmluZyAqIHN0cmluZyBvcHRpb24gPVxuICB0cnlcbiAgICBsZXQgaW5kZXggPSBTdHJpbmcuaW5kZXggcyBkZWxpbWl0ZXIgaW5cbiAgICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBzIGluXG4gICAgU3RyaW5nLnN1YiBzIDAgaW5kZXgsIFNvbWUgKFN0cmluZy5zdWIgcyAoaW5kZXggKyAxKSAobGVuZ3RoIC0gaW5kZXggLSAxKSlcbiAgd2l0aCBOb3RfZm91bmQgLT4gcywgTm9uZVxuXG5sZXQgc21hc2hfZHVwbGljYXRlX2luX29yZGVyZWRfbGlzdCBwIGwgPVxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIkRVUEwgXFxuXCIgaW5cblxuICBsZXQgcmVjIGF1eCB0YWlsIG5vY2MgY3VycmVudCBhY2N1ID1cbiAgICBtYXRjaCB0YWlsIHdpdGhcbiAgICB8IFtdIC0+IChjdXJyZW50LCBub2NjKSA6OiBhY2N1XG4gICAgfCAoaCwgbikgOjogdCB3aGVuIHAgaCBjdXJyZW50ID0gMCAtPlxuICAgICAgKCpsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIkRVUEwgJWlcXG5cIiAobitub2NjKSBpbiopXG4gICAgICBhdXggdCAobiArIG5vY2MpIGN1cnJlbnQgYWNjdVxuICAgIHwgKGgsIG4pIDo6IHQgLT4gYXV4IHQgbiBoICgoY3VycmVudCwgbm9jYykgOjogYWNjdSlcbiAgaW5cbiAgbWF0Y2ggTGlzdC5yZXYgbCB3aXRoXG4gIHwgW10gLT4gW11cbiAgfCAoaCwgbikgOjogdCAtPiBhdXggdCBuIGggW11cblxubGV0IGNob3Bfc3VmZml4X29yX2V4dGVuc2lvbiBuYW1lIGV4dCA9XG4gIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIGV4dCB0aGVuXG4gICAgRmlsZW5hbWUuY2hvcF9zdWZmaXggbmFtZSBleHRcbiAgZWxzZVxuICAgIEZpbGVuYW1lLnJlbW92ZV9leHRlbnNpb24gbmFtZVxuXG5sZXQgZmluZF9hdmFpbGFibGVfbmFtZSB+YWxyZWFkeV90aGVyZSBuYW1lIH5mYWN1bHRhdGl2ZSB+ZXh0ID1cbiAgbGV0IGV4dCA9XG4gICAgbWF0Y2ggZXh0IHdpdGhcbiAgICB8IFNvbWUgZSAtPiBlXG4gICAgfCBOb25lIC0+IEZpbGVuYW1lLmV4dGVuc2lvbiBuYW1lXG4gIGluXG4gIGxldCBiYXNlID0gY2hvcF9zdWZmaXhfb3JfZXh0ZW5zaW9uIG5hbWUgZXh0IGluXG4gIGlmIGFscmVhZHlfdGhlcmUgKGJhc2UgXiBleHQpIHRoZW4gKFxuICAgIGxldCBiYXNlJyA9XG4gICAgICBpZiBmYWN1bHRhdGl2ZSA8PiBcIlwiIHRoZW5cbiAgICAgICAgYmFzZSBeIFwiX1wiIF4gZmFjdWx0YXRpdmVcbiAgICAgIGVsc2VcbiAgICAgICAgYmFzZVxuICAgIGluXG4gICAgaWYgYWxyZWFkeV90aGVyZSAoYmFzZScgXiBleHQpIHRoZW4gKFxuICAgICAgbGV0IHYgPSByZWYgMCBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2hpbGUgYWxyZWFkeV90aGVyZSAoYmFzZScgXiBcIn5cIiBeIHN0cmluZ19vZl9pbnQgIXYgXiBleHQpIGRvXG4gICAgICAgICAgaW5jciB2XG4gICAgICAgIGRvbmVcbiAgICAgIGluXG4gICAgICBiYXNlJyBeIFwiflwiIF4gc3RyaW5nX29mX2ludCAhdiBeIGV4dFxuICAgICkgZWxzZVxuICAgICAgYmFzZScgXiBleHRcbiAgKSBlbHNlXG4gICAgYmFzZSBeIGV4dFxuXG5sZXQgZGVmYXVsdF9tZXNzYWdlX2RlbGltdGVyIDogY2hhciA9ICdcXHgxZScgKCogXCJcXHRcIiAqKVxuXG5sZXQgZ2V0X3JlZiByZWYgPVxuICBsZXQgaSA9ICFyZWYgaW5cbiAgbGV0ICgpID0gcmVmIDo9IGkgKyAxIGluXG4gIGlcblxubGV0IHJlbW92ZV9kb3VibGVfZWxlbWVudHMgbCA9XG4gIGxldCBsID0gTGlzdC5zb3J0IGNvbXBhcmUgbCBpblxuICBsZXQgcmVjIGF1eCBsIGFjY3Ugb2xkID1cbiAgICBtYXRjaCBsLCBvbGQgd2l0aFxuICAgIHwgW10sIF8gLT4gYWNjdVxuICAgIHwgaCA6OiB0LCBTb21lIGgnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IGFjY3Ugb2xkXG4gICAgfCBoIDo6IHQsIChOb25lIHwgU29tZSBfKSAtPiBhdXggdCAoaCA6OiBhY2N1KSAoU29tZSBoKVxuICBpblxuICBhdXggbCBbXSBOb25lXG5cbmxldCBmcm9tX25fdG9fMCBuID1cbiAgbGV0IHJlYyBhdXggayBhY2MgPVxuICAgIGlmIGsgPiBuIHRoZW5cbiAgICAgIGFjY1xuICAgIGVsc2VcbiAgICAgIGF1eCAoayArIDEpIChrIDo6IGFjYylcbiAgaW5cbiAgYXV4IDAgW11cblxubGV0IGNsZWFyIGEgPSBBcnJheS5pdGVyaSAoZnVuIGkgXyAtPiBhLihpKSA8LSBbXSkgYVxuXG5sZXQgc29ydF9ieV9wcmlvcml0eSBmIG4gPVxuICBsZXQgYSA9IEFycmF5Lm1ha2UgKG4gKyAxKSBbXSBpblxuICBsZXQga2V5cyA9IGZyb21fbl90b18wIG4gaW5cbiAgbGV0IHNvcnQgbCA9XG4gICAgbGV0IHJlYyBhdXggbCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgIGxldCBrID0gZiBoIGluXG4gICAgICAgIGxldCAoKSA9IGEuKGspIDwtIGggOjogYS4oaykgaW5cbiAgICAgICAgYXV4IHRcbiAgICBpblxuICAgIGxldCAoKSA9IGF1eCBsIGluXG4gICAgbGV0IG91dHB1dCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3Qga2V5IC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBsaXN0IGVsdCAtPiBlbHQgOjogbGlzdCkgbGlzdCBhLihrZXkpKVxuICAgICAgICBbXSBrZXlzXG4gICAgaW5cbiAgICBsZXQgKCkgPSBjbGVhciBhIGluXG4gICAgb3V0cHV0XG4gIGluXG4gIHNvcnRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBpbml0aWFsX2J1ZmZlcl9zaXplID0gMHgxMDAwXG5cbmxldCB3cml0ZV90b19jaGFubmVsIGYgZCB4ID1cbiAgbGV0IGIgPSBCdWZmZXIuY3JlYXRlIGluaXRpYWxfYnVmZmVyX3NpemUgaW5cbiAgbGV0ICgpID0gZiBiIHggaW5cbiAgQnVmZmVyLm91dHB1dF9idWZmZXIgZCBiXG5cbmxldCBzdHJpbmdfb2Zfd3JpdGUgZiA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICBsZXQgKCkgPSBmIG9iIHggaW5cbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX29mX3N0cmluZyBmIHggPVxuICBsZXQgbGV4X3N0ID0gWW9qc29uLkJhc2ljLmluaXRfbGV4ZXIgKCkgaW5cbiAgbGV0IGxleF9idWYgPSBMZXhpbmcuZnJvbV9zdHJpbmcgeCBpblxuICBmIGxleF9zdCBsZXhfYnVmXG5cbmxldCByZWFkX2JldHdlZW5fc3BhY2VzIGYgbGV4X3N0IGxleF9idWYgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgeCA9IGYgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgbGV4X3N0IGxleF9idWYgaW5cbiAgeFxuXG5sZXQgcmVhZF9uZXh0X2l0ZW0gZiBzdCBiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgc3QgYiBpblxuICByZWFkX2JldHdlZW5fc3BhY2VzIGYgc3QgYlxuXG5sZXQgYnVpbGRfbXNnIHMgPSBcIk5vdCBhIGNvcnJlY3QgXCIgXiBzXG5sZXQgb2Zfc3RyaW5nIChzIDogc3RyaW5nKSA9IGBTdHJpbmcgc1xuXG5sZXQgdG9fc3RyaW5nID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwic3RyaW5nXCIpID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIChzIDogc3RyaW5nKSAtPiBzXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IG9mX2ludCAocyA6IGludCkgPSBgSW50IHNcblxubGV0IHRvX2ludCA/KGVycm9yX21zZyA9IGJ1aWxkX21zZyBcImludFwiKSA9IGZ1bmN0aW9uXG4gIHwgYEludCAocyA6IGludCkgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl9ib29sIChzIDogYm9vbCkgPVxuICBgU3RyaW5nXG4gICAgKGlmIHMgdGhlblxuICAgICAgIFwidHJ1ZVwiXG4gICAgIGVsc2VcbiAgICAgICBcImZhbHNlXCIpXG5cbmxldCB0b19ib29sID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYm9vbGVhblwiKSA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcInRydWVcIiAtPiB0cnVlXG4gIHwgYFN0cmluZyBcImZhbHNlXCIgLT4gZmFsc2VcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfdW5pdCAoKSA9IGBOdWxsXG5cbmxldCB0b191bml0ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwidW5pdFwiKSA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gKClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2Zfb3B0aW9uIHRvX2pzb24gPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gYE51bGxcbiAgfCBTb21lIHggLT5cbiAgICAobWF0Y2ggdG9fanNvbiB4IHdpdGhcbiAgICB8IGBOdWxsIC0+IGZhaWx3aXRoIFwiYW1iaWd1b3VzIEpzb25VdGlsLm9mX29wdGlvblwiXG4gICAgfCB4IC0+IHgpXG5cbmxldCB0b19vcHRpb24gPSBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cblxubGV0IHdyaXRlX29wdGlvbiBmIG9iID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG9iICgpXG4gIHwgU29tZSB4IC0+IGYgb2IgeFxuXG5sZXQgcmVhZF9vcHRpb24gZiBwIGxiID1cbiAgaWYgWW9qc29uLkJhc2ljLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIChmIHAgbGIpXG5cbmxldCBvZl9saXN0IHRvX2pzb24gbCA9IGBMaXN0IChMaXN0LnJldl9tYXAgdG9fanNvbiAoTGlzdC5yZXYgbCkpXG5cbmxldCB0b19saXN0ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwibGlzdFwiKSBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIGFzIHggLT5cbiAgICAodHJ5IExpc3QucmV2X21hcCBvZl9qc29uIChMaXN0LnJldiBsKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSkpXG4gIHwgYE51bGwgLT4gW11cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgd3JpdGVfY29tbWEgb2IgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnXG5cbmxldCByZWMgaXRlcjIgZl9lbHQgeCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCB5IDo6IGwgLT5cbiAgICB3cml0ZV9jb21tYSB4O1xuICAgIGZfZWx0IHggeTtcbiAgICBpdGVyMiBmX2VsdCB4IGxcblxubGV0IHdyaXRlX2xpc3QgZiBvYiBsID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdbJyBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHkgOjogbCAtPlxuICAgICAgZiBvYiB5O1xuICAgICAgaXRlcjIgZiBvYiBsXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IG9mX2FycmF5IHRvX2pzb24gYSA9XG4gIGBMaXN0IChBcnJheS5mb2xkX3JpZ2h0IChmdW4geCBhY2MgLT4gdG9fanNvbiB4IDo6IGFjYykgYSBbXSlcblxubGV0IHRvX2FycmF5ID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYXJyYXlcIikgb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCBvZl9qc29uIGxcbiAgfCBgTnVsbCAtPiBbfHxdXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IHdyaXRlX2FycmF5IGYgb2IgbCA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID0gaWYgQXJyYXkubGVuZ3RoIGwgPiAwIHRoZW4gZiBvYiBsLigwKSBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0ICgpID0gd3JpdGVfY29tbWEgb2IgaW5cbiAgICAgICAgZiBvYiBsLihzdWNjIGkpKVxuICAgICAgKHByZWQgKEFycmF5Lmxlbmd0aCBsKSlcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuXG5sZXQgcmVjIGl0ZXJfc2VxIG9iID0gZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IGYgOjogcSAtPlxuICAgIGxldCAoKSA9IHdyaXRlX2NvbW1hIG9iIGluXG4gICAgbGV0ICgpID0gZiBvYiBpblxuICAgIGl0ZXJfc2VxIG9iIHFcblxubGV0IHdyaXRlX3NlcXVlbmNlIG9iIGwgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgZiA6OiBxIC0+XG4gICAgICBsZXQgKCkgPSBmIG9iIGluXG4gICAgICBpdGVyX3NlcSBvYiBxXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHJlYWRfdmFyaWFudCByZWFkX2lkIHJlYWQgc3QgYiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xiciBzdCBiIGluXG4gIGxldCBjc3QgPSByZWFkX2JldHdlZW5fc3BhY2VzIHJlYWRfaWQgc3QgYiBpblxuICBsZXQgb3V0ID0gcmVhZCBzdCBiIGNzdCBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9yYnIgc3QgYiBpblxuICBvdXRcblxubGV0IHNtYXJ0X2Fzc29jIGwgPVxuICBgQXNzb2NcbiAgICAoTGlzdC5yZXZcbiAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBfLCAoYE51bGwgfCBgQXNzb2MgW10gfCBgTGlzdCBbXSkgLT4gYWNjXG4gICAgICAgICAgICB8IHggLT4geCA6OiBhY2MpXG4gICAgICAgICAgW10gbCkpXG5cbmxldCBvZl9hc3NvYyB0b19qc29uIGwgPSBgQXNzb2MgKExpc3QucmV2X21hcCB0b19qc29uIChMaXN0LnJldiBsKSlcblxubGV0IHRvX2Fzc29jID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwiYXNzb2NpYXRpb25cIikgb2ZfanNvbiBqc29uID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnkgTGlzdC5yZXZfbWFwIG9mX2pzb24gKExpc3QucmV2IGwpXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCBgTnVsbCAtPiBbXVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9maWVsZCBuYSBmIG9iIHggPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIG5hIGluXG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnOicgaW5cbiAgZiBvYiB4XG5cbmxldCBvZl9wYWlyID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgdG9fanNvbjEgdG9fanNvbjIgKGEsIGIpID1cbiAgYEFzc29jIFsgbGFiMSwgdG9fanNvbjEgYTsgbGFiMiwgdG9fanNvbjIgYiBdXG5cbmxldCB0b190cmlwbGUgPyhsYWIxID0gXCJmaXJzdFwiKSA/KGxhYjIgPSBcInNlY29uZFwiKSA/KGxhYjMgPSBcInRoaXJkXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJ0cmlwbGVcIikgb2ZfanNvbjEgb2ZfanNvbjIgb2ZfanNvbjMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICAoIG9mX2pzb24xIChMaXN0LmFzc29jIGxhYjEgbCksXG4gICAgICAgICBvZl9qc29uMiAoTGlzdC5hc3NvYyBsYWIyIGwpLFxuICAgICAgICAgb2ZfanNvbjMgKExpc3QuYXNzb2MgbGFiMyBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgb2ZfdHJpcGxlID8obGFiMSA9IFwiZmlyc3RcIikgPyhsYWIyID0gXCJzZWNvbmRcIikgPyhsYWIzID0gXCJ0aGlyZFwiKSB0b19qc29uMVxuICAgIHRvX2pzb24yIHRvX2pzb24zIChhLCBiLCBjKSA9XG4gIGBBc3NvYyBbIGxhYjEsIHRvX2pzb24xIGE7IGxhYjIsIHRvX2pzb24yIGI7IGxhYjMsIHRvX2pzb24zIGMgXVxuXG5sZXQgdG9fcGFpciA/KGxhYjEgPSBcImZpcnN0XCIpID8obGFiMiA9IFwic2Vjb25kXCIpID8oZXJyb3JfbXNnID0gYnVpbGRfbXNnIFwicGFpclwiKVxuICAgIG9mX2pzb24xIG9mX2pzb24yID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDIgLT5cbiAgICAodHJ5IG9mX2pzb24xIChMaXN0LmFzc29jIGxhYjEgbCksIG9mX2pzb24yIChMaXN0LmFzc29jIGxhYjIgbClcbiAgICAgd2l0aCBOb3RfZm91bmQgLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCB3cml0ZV9jb21wYWN0X3BhaXIgZiBnIG9iICh4LCB5KSA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAnWycgaW5cbiAgbGV0ICgpID0gZiBvYiB4IGluXG4gIGxldCAoKSA9IHdyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IGcgb2IgeSBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCByZWFkX2NvbXBhY3RfcGFpciBmIGcgc3QgYiA9XG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2xiciBzdCBiIGluXG4gIGxldCB4ID0gcmVhZF9iZXR3ZWVuX3NwYWNlcyBmIHN0IGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgc3QgYiBpblxuICBsZXQgeSA9IHJlYWRfYmV0d2Vlbl9zcGFjZXMgZyBzdCBiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX3JiciBzdCBiIGluXG4gIHgsIHlcblxubGV0IGNvbXBhY3RfdG9fcGFpciBmIGcgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgeDsgeSBdIC0+IGYgeCwgZyB5XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb21wYWN0IHBhaXJcIiwgeCkpXG5cbmxldCBvZl9tYXAgPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpIH5mb2xkIGtleV90b19qc29uXG4gICAgdmFsdWVfdG9fanNvbiBtYXAgPVxuICBgTGlzdFxuICAgIChMaXN0LnJldlxuICAgICAgIChmb2xkXG4gICAgICAgICAgKGZ1biAoa2V5IDogJ2tleSkgKHZhbHVlIDogJ3ZhbHVlKSAobGlzdCA6IFlvanNvbi5CYXNpYy50IGxpc3QpIC0+XG4gICAgICAgICAgICBgQXNzb2MgWyBsYWJfa2V5LCBrZXlfdG9fanNvbiBrZXk7IGxhYl92YWx1ZSwgdmFsdWVfdG9fanNvbiB2YWx1ZSBdXG4gICAgICAgICAgICA6OiBsaXN0KVxuICAgICAgICAgIG1hcCBbXSkpXG5cbmxldCB0b19tYXAgPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpXG4gICAgPyhlcnJvcl9tc2cgPSBidWlsZF9tc2cgXCJtYXBcIikgfmFkZCB+ZW1wdHkganNvbl90b19rZXkganNvbl90b192YWx1ZSA9XG4gIGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1hcCB4IC0+XG4gICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICBhZGRcbiAgICAgICAgICAgICAgIChqc29uX3RvX2tleSAoTGlzdC5hc3NvYyBsYWJfa2V5IGwpKVxuICAgICAgICAgICAgICAgKGpzb25fdG9fdmFsdWUgKExpc3QuYXNzb2MgbGFiX3ZhbHVlIGwpKVxuICAgICAgICAgICAgICAgbWFwXG4gICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpKVxuICAgICAgZW1wdHkgbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGVycm9yX21zZywgeCkpXG5cbmxldCBvZl91bml4X2xhYmVsID0gZnVuY3Rpb25cbiAgfCBVbml4TGFiZWxzLkUyQklHIC0+IGBBc3NvYyBbIFwiRTJCSUdcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUFDQ0VTIC0+IGBBc3NvYyBbIFwiRUFDQ0VTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBR0FJTiAtPiBgQXNzb2MgWyBcIkVBR0FJTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQkFERiAtPiBgQXNzb2MgWyBcIkVCQURGXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVCVVNZIC0+IGBBc3NvYyBbIFwiRUJVU1lcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUNISUxEIC0+IGBBc3NvYyBbIFwiRUNISUxEXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVERUFETEsgLT4gYEFzc29jIFsgXCJFREVBRExLXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVET00gLT4gYEFzc29jIFsgXCJFRE9NXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVFWElTVCAtPiBgQXNzb2MgWyBcIkVFWElTVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FRkFVTFQgLT4gYEFzc29jIFsgXCJFRkFVTFRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUZCSUcgLT4gYEFzc29jIFsgXCJFRkJJR1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5UUiAtPiBgQXNzb2MgWyBcIkVJTlRSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVJTlZBTCAtPiBgQXNzb2MgWyBcIkVJTlZBTFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU8gLT4gYEFzc29jIFsgXCJFSU9cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUlTRElSIC0+IGBBc3NvYyBbIFwiRUlTRElSXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVNRklMRSAtPiBgQXNzb2MgWyBcIkVNRklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTUxJTksgLT4gYEFzc29jIFsgXCJFTUxJTktcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5BTUVUT09MT05HIC0+IGBBc3NvYyBbIFwiRU5BTUVUT09MT05HXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORklMRSAtPiBgQXNzb2MgWyBcIkVORklMRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9ERVYgLT4gYEFzc29jIFsgXCJFTk9ERVZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PRU5UIC0+IGBBc3NvYyBbIFwiRU5PRU5UXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0VYRUMgLT4gYEFzc29jIFsgXCJFTk9FWEVDXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT0xDSyAtPiBgQXNzb2MgWyBcIkVOT0xDS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9NRU0gLT4gYEFzc29jIFsgXCJFTk9NRU1cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PU1BDIC0+IGBBc3NvYyBbIFwiRU5PU1BDXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOT1NZUyAtPiBgQXNzb2MgWyBcIkVOT1NZU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9URElSIC0+IGBBc3NvYyBbIFwiRU5PVERJUlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9URU1QVFkgLT4gYEFzc29jIFsgXCJFTk9URU1QVFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVFRZIC0+IGBBc3NvYyBbIFwiRU5PVFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVOWElPIC0+IGBBc3NvYyBbIFwiRU5YSU9cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBFUk0gLT4gYEFzc29jIFsgXCJFUEVSTVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUElQRSAtPiBgQXNzb2MgWyBcIkVQSVBFXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVSQU5HRSAtPiBgQXNzb2MgWyBcIkVSQU5HRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUk9GUyAtPiBgQXNzb2MgWyBcIkVST0ZTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTUElQRSAtPiBgQXNzb2MgWyBcIkVTUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU1JDSCAtPiBgQXNzb2MgWyBcIkVTUkNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVYREVWIC0+IGBBc3NvYyBbIFwiRVhERVZcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVdPVUxEQkxPQ0sgLT4gYEFzc29jIFsgXCJFV09VTERCTE9DS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSU5QUk9HUkVTUyAtPiBgQXNzb2MgWyBcIkVJTlBST0dSRVNTXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBTFJFQURZIC0+IGBBc3NvYyBbIFwiRUFMUkVBRFlcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5PVFNPQ0sgLT4gYEFzc29jIFsgXCJFTk9UU09DS1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FREVTVEFERFJSRVEgLT4gYEFzc29jIFsgXCJFREVTVEFERFJSRVFcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU1TR1NJWkUgLT4gYEFzc29jIFsgXCJFTVNHU0laRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FUFJPVE9UWVBFIC0+IGBBc3NvYyBbIFwiRVBST1RPVFlQRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9QUk9UT09QVCAtPiBgQXNzb2MgWyBcIkVOT1BST1RPT1BUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVQUk9UT05PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FU09DS1ROT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFU09DS1ROT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU9QTk9UU1VQUCAtPiBgQXNzb2MgWyBcIkVPUE5PVFNVUFBcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVBGTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVBRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVBRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUREUklOVVNFIC0+IGBBc3NvYyBbIFwiRUFERFJJTlVTRVwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQUREUk5PVEFWQUlMIC0+IGBBc3NvYyBbIFwiRUFERFJOT1RBVkFJTFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTkVURE9XTiAtPiBgQXNzb2MgWyBcIkVORVRET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVORVRVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRU5FVFVOUkVBQ0hcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU5FVFJFU0VUIC0+IGBBc3NvYyBbIFwiRU5FVFJFU0VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OQUJPUlRFRCAtPiBgQXNzb2MgWyBcIkVDT05OQUJPUlRFRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FQ09OTlJFU0VUIC0+IGBBc3NvYyBbIFwiRUNPTk5SRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9CVUZTIC0+IGBBc3NvYyBbIFwiRU5PQlVGU1wiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSVNDT05OIC0+IGBBc3NvYyBbIFwiRUlTQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FTk9UQ09OTiAtPiBgQXNzb2MgWyBcIkVOT1RDT05OXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVTSFVURE9XTiAtPiBgQXNzb2MgWyBcIkVTSFVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FVE9PTUFOWVJFRlMgLT4gYEFzc29jIFsgXCJFVE9PTUFOWVJFRlNcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRVRJTUVET1VUIC0+IGBBc3NvYyBbIFwiRVRJTUVET1VUXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVDT05OUkVGVVNFRCAtPiBgQXNzb2MgWyBcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCBdXG4gIHwgVW5peExhYmVscy5FSE9TVERPV04gLT4gYEFzc29jIFsgXCJFSE9TVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRUhPU1RVTlJFQUNIIC0+IGBBc3NvYyBbIFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVMT09QIC0+IGBBc3NvYyBbIFwiRUxPT1BcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuRU9WRVJGTE9XIC0+IGBBc3NvYyBbIFwiRU9WRVJGTE9XXCIsIGBOdWxsIF1cbiAgfCBVbml4TGFiZWxzLkVVTktOT1dORVJSIGludCAtPiBgQXNzb2MgWyBcIkVVTktOT1dORVJSXCIsIG9mX2ludCBpbnQgXVxuXG5sZXQgKHRvX3VuaXhfbGFiZWwgOiBZb2pzb24uQmFzaWMudCAtPiBVbml4TGFiZWxzLmVycm9yKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwiRTJCSUdcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FMkJJR1xuICB8IGBBc3NvYyBbIChcIkVBQ0NFU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBQ0NFU1xuICB8IGBBc3NvYyBbIChcIkVBR0FJTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVBR0FJTlxuICB8IGBBc3NvYyBbIChcIkVCQURGXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUJBREZcbiAgfCBgQXNzb2MgWyAoXCJFQlVTWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVCVVNZXG4gIHwgYEFzc29jIFsgKFwiRUNISUxEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNISUxEXG4gIHwgYEFzc29jIFsgKFwiRURFQURMS1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVERUFETEtcbiAgfCBgQXNzb2MgWyAoXCJFRE9NXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRURPTVxuICB8IGBBc3NvYyBbIChcIkVFWElTVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVFWElTVFxuICB8IGBBc3NvYyBbIChcIkVGQVVMVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVGQVVMVFxuICB8IGBBc3NvYyBbIChcIkVGQklHXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUZCSUdcbiAgfCBgQXNzb2MgWyAoXCJFSU5UUlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlRSXG4gIHwgYEFzc29jIFsgKFwiRUlOVkFMXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlOVkFMXG4gIHwgYEFzc29jIFsgKFwiRUlPXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlPXG4gIHwgYEFzc29jIFsgKFwiRUlTRElSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUlTRElSXG4gIHwgYEFzc29jIFsgKFwiRU1GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU1MSU5LXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU1MSU5LXG4gIHwgYEFzc29jIFsgKFwiRU5BTUVUT09MT05HXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5BTUVUT09MT05HXG4gIHwgYEFzc29jIFsgKFwiRU5GSUxFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5GSUxFXG4gIHwgYEFzc29jIFsgKFwiRU5PREVWXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PREVWXG4gIHwgYEFzc29jIFsgKFwiRU5PRU5UXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PRU5UXG4gIHwgYEFzc29jIFsgKFwiRU5PRVhFQ1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT0VYRUNcbiAgfCBgQXNzb2MgWyAoXCJFTk9MQ0tcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9MQ0tcbiAgfCBgQXNzb2MgWyAoXCJFTk9NRU1cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9NRU1cbiAgfCBgQXNzb2MgWyAoXCJFTk9TUENcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9TUENcbiAgfCBgQXNzb2MgWyAoXCJFTk9TWVNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9TWVNcbiAgfCBgQXNzb2MgWyAoXCJFTk9URElSXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVERJUlxuICB8IGBBc3NvYyBbIChcIkVOT1RFTVBUWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RFTVBUWVxuICB8IGBBc3NvYyBbIChcIkVOT1RUWVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RUWVxuICB8IGBBc3NvYyBbIChcIkVOWElPXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5YSU9cbiAgfCBgQXNzb2MgWyAoXCJFUEVSTVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQRVJNXG4gIHwgYEFzc29jIFsgKFwiRVBJUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUElQRVxuICB8IGBBc3NvYyBbIChcIkVSQU5HRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVSQU5HRVxuICB8IGBBc3NvYyBbIChcIkVST0ZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVJPRlNcbiAgfCBgQXNzb2MgWyAoXCJFU1BJUEVcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FU1BJUEVcbiAgfCBgQXNzb2MgWyAoXCJFU1JDSFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVTUkNIXG4gIHwgYEFzc29jIFsgKFwiRVhERVZcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FWERFVlxuICB8IGBBc3NvYyBbIChcIkVXT1VMREJMT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVdPVUxEQkxPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJTlBST0dSRVNTXG4gIHwgYEFzc29jIFsgKFwiRUFMUkVBRFlcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUxSRUFEWVxuICB8IGBBc3NvYyBbIChcIkVOT1RTT0NLXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5PVFNPQ0tcbiAgfCBgQXNzb2MgWyAoXCJFREVTVEFERFJSRVFcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FREVTVEFERFJSRVFcbiAgfCBgQXNzb2MgWyAoXCJFTVNHU0laRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVNU0dTSVpFXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPVFlQRVwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVQUk9UT1RZUEVcbiAgfCBgQXNzb2MgWyAoXCJFTk9QUk9UT09QVFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1BST1RPT1BUXG4gIHwgYEFzc29jIFsgKFwiRVBST1RPTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVBST1RPTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNPQ0tUTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRU9QTk9UU1VQUFwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVPUE5PVFNVUFBcbiAgfCBgQXNzb2MgWyAoXCJFUEZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FUEZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUZOT1NVUFBPUlRcbiAgfCBgQXNzb2MgWyAoXCJFQUREUklOVVNFXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUFERFJJTlVTRVxuICB8IGBBc3NvYyBbIChcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQUREUk5PVEFWQUlMXG4gIHwgYEFzc29jIFsgKFwiRU5FVERPV05cIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVORVRVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRU5FVFVOUkVBQ0hcbiAgfCBgQXNzb2MgWyAoXCJFTkVUUkVTRVRcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTkVUUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTkFCT1JURURcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FQ09OTkFCT1JURURcbiAgfCBgQXNzb2MgWyAoXCJFQ09OTlJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5SRVNFVFxuICB8IGBBc3NvYyBbIChcIkVOT0JVRlNcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTk9CVUZTXG4gIHwgYEFzc29jIFsgKFwiRUlTQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVJU0NPTk5cbiAgfCBgQXNzb2MgWyAoXCJFTk9UQ09OTlwiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVOT1RDT05OXG4gIHwgYEFzc29jIFsgKFwiRVNIVVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVNIVVRET1dOXG4gIHwgYEFzc29jIFsgKFwiRVRPT01BTllSRUZTXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVRPT01BTllSRUZTXG4gIHwgYEFzc29jIFsgKFwiRVRJTUVET1VUXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRVRJTUVET1VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRUZVU0VEXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUNPTk5SRUZVU0VEXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUhPU1RET1dOXG4gIHwgYEFzc29jIFsgKFwiRUhPU1RVTlJFQUNIXCIsIGBOdWxsKSBdIC0+IFVuaXhMYWJlbHMuRUhPU1RVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRUxPT1BcIiwgYE51bGwpIF0gLT4gVW5peExhYmVscy5FTE9PUFxuICB8IGBBc3NvYyBbIChcIkVPVkVSRkxPV1wiLCBgTnVsbCkgXSAtPiBVbml4TGFiZWxzLkVPVkVSRkxPV1xuICB8IGBBc3NvYyBbIChcIkVVTktOT1dORVJSXCIsIGludCkgXSAtPiBVbml4TGFiZWxzLkVVTktOT1dORVJSICh0b19pbnQgaW50KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKGJ1aWxkX21zZyBcInVuaXggbGFiZWxzIGVycm9yXCIsIHgpKVxuXG5sZXQgb2ZfdW5peF9lcnJvciA9IGZ1bmN0aW9uXG4gIHwgVW5peC5FMkJJRyAtPiBgQXNzb2MgWyBcIkUyQklHXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVBQ0NFUyAtPiBgQXNzb2MgWyBcIkVBQ0NFU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUdBSU4gLT4gYEFzc29jIFsgXCJFQUdBSU5cIiwgYE51bGwgXVxuICB8IFVuaXguRUJBREYgLT4gYEFzc29jIFsgXCJFQkFERlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQlVTWSAtPiBgQXNzb2MgWyBcIkVCVVNZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVDSElMRCAtPiBgQXNzb2MgWyBcIkVDSElMRFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FREVBRExLIC0+IGBBc3NvYyBbIFwiRURFQURMS1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FRE9NIC0+IGBBc3NvYyBbIFwiRURPTVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FRVhJU1QgLT4gYEFzc29jIFsgXCJFRVhJU1RcIiwgYE51bGwgXVxuICB8IFVuaXguRUZBVUxUIC0+IGBBc3NvYyBbIFwiRUZBVUxUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVGQklHIC0+IGBBc3NvYyBbIFwiRUZCSUdcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOVFIgLT4gYEFzc29jIFsgXCJFSU5UUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FSU5WQUwgLT4gYEFzc29jIFsgXCJFSU5WQUxcIiwgYE51bGwgXVxuICB8IFVuaXguRUlPIC0+IGBBc3NvYyBbIFwiRUlPXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVJU0RJUiAtPiBgQXNzb2MgWyBcIkVJU0RJUlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTUZJTEUgLT4gYEFzc29jIFsgXCJFTUZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU1MSU5LIC0+IGBBc3NvYyBbIFwiRU1MSU5LXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOQU1FVE9PTE9ORyAtPiBgQXNzb2MgWyBcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkZJTEUgLT4gYEFzc29jIFsgXCJFTkZJTEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PREVWIC0+IGBBc3NvYyBbIFwiRU5PREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT0VOVCAtPiBgQXNzb2MgWyBcIkVOT0VOVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9FWEVDIC0+IGBBc3NvYyBbIFwiRU5PRVhFQ1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9MQ0sgLT4gYEFzc29jIFsgXCJFTk9MQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PTUVNIC0+IGBBc3NvYyBbIFwiRU5PTUVNXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1NQQyAtPiBgQXNzb2MgWyBcIkVOT1NQQ1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FTk9TWVMgLT4gYEFzc29jIFsgXCJFTk9TWVNcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVERJUiAtPiBgQXNzb2MgWyBcIkVOT1RESVJcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVEVNUFRZIC0+IGBBc3NvYyBbIFwiRU5PVEVNUFRZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RUWSAtPiBgQXNzb2MgWyBcIkVOT1RUWVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTlhJTyAtPiBgQXNzb2MgWyBcIkVOWElPXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQRVJNIC0+IGBBc3NvYyBbIFwiRVBFUk1cIiwgYE51bGwgXVxuICB8IFVuaXguRVBJUEUgLT4gYEFzc29jIFsgXCJFUElQRVwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUkFOR0UgLT4gYEFzc29jIFsgXCJFUkFOR0VcIiwgYE51bGwgXVxuICB8IFVuaXguRVJPRlMgLT4gYEFzc29jIFsgXCJFUk9GU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FU1BJUEUgLT4gYEFzc29jIFsgXCJFU1BJUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRVNSQ0ggLT4gYEFzc29jIFsgXCJFU1JDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FWERFViAtPiBgQXNzb2MgWyBcIkVYREVWXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVXT1VMREJMT0NLIC0+IGBBc3NvYyBbIFwiRVdPVUxEQkxPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRUlOUFJPR1JFU1MgLT4gYEFzc29jIFsgXCJFSU5QUk9HUkVTU1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUxSRUFEWSAtPiBgQXNzb2MgWyBcIkVBTFJFQURZXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVOT1RTT0NLIC0+IGBBc3NvYyBbIFwiRU5PVFNPQ0tcIiwgYE51bGwgXVxuICB8IFVuaXguRURFU1RBRERSUkVRIC0+IGBBc3NvYyBbIFwiRURFU1RBRERSUkVRXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVNU0dTSVpFIC0+IGBBc3NvYyBbIFwiRU1TR1NJWkVcIiwgYE51bGwgXVxuICB8IFVuaXguRVBST1RPVFlQRSAtPiBgQXNzb2MgWyBcIkVQUk9UT1RZUEVcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PUFJPVE9PUFQgLT4gYEFzc29jIFsgXCJFTk9QUk9UT09QVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FUFJPVE9OT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFUFJPVE9OT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRVNPQ0tUTk9TVVBQT1JUIC0+IGBBc3NvYyBbIFwiRVNPQ0tUTk9TVVBQT1JUXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVPUE5PVFNVUFAgLT4gYEFzc29jIFsgXCJFT1BOT1RTVVBQXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVQRk5PU1VQUE9SVCAtPiBgQXNzb2MgWyBcIkVQRk5PU1VQUE9SVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQUZOT1NVUFBPUlQgLT4gYEFzc29jIFsgXCJFQUZOT1NVUFBPUlRcIiwgYE51bGwgXVxuICB8IFVuaXguRUFERFJJTlVTRSAtPiBgQXNzb2MgWyBcIkVBRERSSU5VU0VcIiwgYE51bGwgXVxuICB8IFVuaXguRUFERFJOT1RBVkFJTCAtPiBgQXNzb2MgWyBcIkVBRERSTk9UQVZBSUxcIiwgYE51bGwgXVxuICB8IFVuaXguRU5FVERPV04gLT4gYEFzc29jIFsgXCJFTkVURE9XTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTkVUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVORVRVTlJFQUNIXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVORVRSRVNFVCAtPiBgQXNzb2MgWyBcIkVORVRSRVNFVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTkFCT1JURUQgLT4gYEFzc29jIFsgXCJFQ09OTkFCT1JURURcIiwgYE51bGwgXVxuICB8IFVuaXguRUNPTk5SRVNFVCAtPiBgQXNzb2MgWyBcIkVDT05OUkVTRVRcIiwgYE51bGwgXVxuICB8IFVuaXguRU5PQlVGUyAtPiBgQXNzb2MgWyBcIkVOT0JVRlNcIiwgYE51bGwgXVxuICB8IFVuaXguRUlTQ09OTiAtPiBgQXNzb2MgWyBcIkVJU0NPTk5cIiwgYE51bGwgXVxuICB8IFVuaXguRU5PVENPTk4gLT4gYEFzc29jIFsgXCJFTk9UQ09OTlwiLCBgTnVsbCBdXG4gIHwgVW5peC5FU0hVVERPV04gLT4gYEFzc29jIFsgXCJFU0hVVERPV05cIiwgYE51bGwgXVxuICB8IFVuaXguRVRPT01BTllSRUZTIC0+IGBBc3NvYyBbIFwiRVRPT01BTllSRUZTXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVUSU1FRE9VVCAtPiBgQXNzb2MgWyBcIkVUSU1FRE9VVFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FQ09OTlJFRlVTRUQgLT4gYEFzc29jIFsgXCJFQ09OTlJFRlVTRURcIiwgYE51bGwgXVxuICB8IFVuaXguRUhPU1RET1dOIC0+IGBBc3NvYyBbIFwiRUhPU1RET1dOXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVIT1NUVU5SRUFDSCAtPiBgQXNzb2MgWyBcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCBdXG4gIHwgVW5peC5FTE9PUCAtPiBgQXNzb2MgWyBcIkVMT09QXCIsIGBOdWxsIF1cbiAgfCBVbml4LkVPVkVSRkxPVyAtPiBgQXNzb2MgWyBcIkVPVkVSRkxPV1wiLCBgTnVsbCBdXG4gIHwgVW5peC5FVU5LTk9XTkVSUiBpbnQgLT4gYEFzc29jIFsgXCJFVU5LTk9XTkVSUlwiLCBvZl9pbnQgaW50IF1cblxubGV0ICh0b191bml4X2Vycm9yIDogWW9qc29uLkJhc2ljLnQgLT4gVW5peC5lcnJvcikgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcIkUyQklHXCIsIGBOdWxsKSBdIC0+IFVuaXguRTJCSUdcbiAgfCBgQXNzb2MgWyAoXCJFQUNDRVNcIiwgYE51bGwpIF0gLT4gVW5peC5FQUNDRVNcbiAgfCBgQXNzb2MgWyAoXCJFQUdBSU5cIiwgYE51bGwpIF0gLT4gVW5peC5FQUdBSU5cbiAgfCBgQXNzb2MgWyAoXCJFQkFERlwiLCBgTnVsbCkgXSAtPiBVbml4LkVCQURGXG4gIHwgYEFzc29jIFsgKFwiRUJVU1lcIiwgYE51bGwpIF0gLT4gVW5peC5FQlVTWVxuICB8IGBBc3NvYyBbIChcIkVDSElMRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDSElMRFxuICB8IGBBc3NvYyBbIChcIkVERUFETEtcIiwgYE51bGwpIF0gLT4gVW5peC5FREVBRExLXG4gIHwgYEFzc29jIFsgKFwiRURPTVwiLCBgTnVsbCkgXSAtPiBVbml4LkVET01cbiAgfCBgQXNzb2MgWyAoXCJFRVhJU1RcIiwgYE51bGwpIF0gLT4gVW5peC5FRVhJU1RcbiAgfCBgQXNzb2MgWyAoXCJFRkFVTFRcIiwgYE51bGwpIF0gLT4gVW5peC5FRkFVTFRcbiAgfCBgQXNzb2MgWyAoXCJFRkJJR1wiLCBgTnVsbCkgXSAtPiBVbml4LkVGQklHXG4gIHwgYEFzc29jIFsgKFwiRUlOVFJcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5UUlxuICB8IGBBc3NvYyBbIChcIkVJTlZBTFwiLCBgTnVsbCkgXSAtPiBVbml4LkVJTlZBTFxuICB8IGBBc3NvYyBbIChcIkVJT1wiLCBgTnVsbCkgXSAtPiBVbml4LkVJT1xuICB8IGBBc3NvYyBbIChcIkVJU0RJUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVJU0RJUlxuICB8IGBBc3NvYyBbIChcIkVNRklMRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVNRklMRVxuICB8IGBBc3NvYyBbIChcIkVNTElOS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVNTElOS1xuICB8IGBBc3NvYyBbIChcIkVOQU1FVE9PTE9OR1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOQU1FVE9PTE9OR1xuICB8IGBBc3NvYyBbIChcIkVORklMRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVORklMRVxuICB8IGBBc3NvYyBbIChcIkVOT0RFVlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0RFVlxuICB8IGBBc3NvYyBbIChcIkVOT0VOVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT0VOVFxuICB8IGBBc3NvYyBbIChcIkVOT0VYRUNcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9FWEVDXG4gIHwgYEFzc29jIFsgKFwiRU5PTENLXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PTENLXG4gIHwgYEFzc29jIFsgKFwiRU5PTUVNXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PTUVNXG4gIHwgYEFzc29jIFsgKFwiRU5PU1BDXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PU1BDXG4gIHwgYEFzc29jIFsgKFwiRU5PU1lTXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PU1lTXG4gIHwgYEFzc29jIFsgKFwiRU5PVERJUlwiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RESVJcbiAgfCBgQXNzb2MgWyAoXCJFTk9URU1QVFlcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9URU1QVFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UVFlcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UVFlcbiAgfCBgQXNzb2MgWyAoXCJFTlhJT1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOWElPXG4gIHwgYEFzc29jIFsgKFwiRVBFUk1cIiwgYE51bGwpIF0gLT4gVW5peC5FUEVSTVxuICB8IGBBc3NvYyBbIChcIkVQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBJUEVcbiAgfCBgQXNzb2MgWyAoXCJFUkFOR0VcIiwgYE51bGwpIF0gLT4gVW5peC5FUkFOR0VcbiAgfCBgQXNzb2MgWyAoXCJFUk9GU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVST0ZTXG4gIHwgYEFzc29jIFsgKFwiRVNQSVBFXCIsIGBOdWxsKSBdIC0+IFVuaXguRVNQSVBFXG4gIHwgYEFzc29jIFsgKFwiRVNSQ0hcIiwgYE51bGwpIF0gLT4gVW5peC5FU1JDSFxuICB8IGBBc3NvYyBbIChcIkVYREVWXCIsIGBOdWxsKSBdIC0+IFVuaXguRVhERVZcbiAgfCBgQXNzb2MgWyAoXCJFV09VTERCTE9DS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVXT1VMREJMT0NLXG4gIHwgYEFzc29jIFsgKFwiRUlOUFJPR1JFU1NcIiwgYE51bGwpIF0gLT4gVW5peC5FSU5QUk9HUkVTU1xuICB8IGBBc3NvYyBbIChcIkVBTFJFQURZXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFMUkVBRFlcbiAgfCBgQXNzb2MgWyAoXCJFTk9UU09DS1wiLCBgTnVsbCkgXSAtPiBVbml4LkVOT1RTT0NLXG4gIHwgYEFzc29jIFsgKFwiRURFU1RBRERSUkVRXCIsIGBOdWxsKSBdIC0+IFVuaXguRURFU1RBRERSUkVRXG4gIHwgYEFzc29jIFsgKFwiRU1TR1NJWkVcIiwgYE51bGwpIF0gLT4gVW5peC5FTVNHU0laRVxuICB8IGBBc3NvYyBbIChcIkVQUk9UT1RZUEVcIiwgYE51bGwpIF0gLT4gVW5peC5FUFJPVE9UWVBFXG4gIHwgYEFzc29jIFsgKFwiRU5PUFJPVE9PUFRcIiwgYE51bGwpIF0gLT4gVW5peC5FTk9QUk9UT09QVFxuICB8IGBBc3NvYyBbIChcIkVQUk9UT05PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVQUk9UT05PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVTT0NLVE5PU1VQUE9SVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVTT0NLVE5PU1VQUE9SVFxuICB8IGBBc3NvYyBbIChcIkVPUE5PVFNVUFBcIiwgYE51bGwpIF0gLT4gVW5peC5FT1BOT1RTVVBQXG4gIHwgYEFzc29jIFsgKFwiRVBGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRVBGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFGTk9TVVBQT1JUXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFGTk9TVVBQT1JUXG4gIHwgYEFzc29jIFsgKFwiRUFERFJJTlVTRVwiLCBgTnVsbCkgXSAtPiBVbml4LkVBRERSSU5VU0VcbiAgfCBgQXNzb2MgWyAoXCJFQUREUk5PVEFWQUlMXCIsIGBOdWxsKSBdIC0+IFVuaXguRUFERFJOT1RBVkFJTFxuICB8IGBBc3NvYyBbIChcIkVORVRET1dOXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVERPV05cbiAgfCBgQXNzb2MgWyAoXCJFTkVUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVORVRVTlJFQUNIXG4gIHwgYEFzc29jIFsgKFwiRU5FVFJFU0VUXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5FVFJFU0VUXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5BQk9SVEVEXCIsIGBOdWxsKSBdIC0+IFVuaXguRUNPTk5BQk9SVEVEXG4gIHwgYEFzc29jIFsgKFwiRUNPTk5SRVNFVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OUkVTRVRcbiAgfCBgQXNzb2MgWyAoXCJFTk9CVUZTXCIsIGBOdWxsKSBdIC0+IFVuaXguRU5PQlVGU1xuICB8IGBBc3NvYyBbIChcIkVJU0NPTk5cIiwgYE51bGwpIF0gLT4gVW5peC5FSVNDT05OXG4gIHwgYEFzc29jIFsgKFwiRU5PVENPTk5cIiwgYE51bGwpIF0gLT4gVW5peC5FTk9UQ09OTlxuICB8IGBBc3NvYyBbIChcIkVTSFVURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVTSFVURE9XTlxuICB8IGBBc3NvYyBbIChcIkVUT09NQU5ZUkVGU1wiLCBgTnVsbCkgXSAtPiBVbml4LkVUT09NQU5ZUkVGU1xuICB8IGBBc3NvYyBbIChcIkVUSU1FRE9VVFwiLCBgTnVsbCkgXSAtPiBVbml4LkVUSU1FRE9VVFxuICB8IGBBc3NvYyBbIChcIkVDT05OUkVGVVNFRFwiLCBgTnVsbCkgXSAtPiBVbml4LkVDT05OUkVGVVNFRFxuICB8IGBBc3NvYyBbIChcIkVIT1NURE9XTlwiLCBgTnVsbCkgXSAtPiBVbml4LkVIT1NURE9XTlxuICB8IGBBc3NvYyBbIChcIkVIT1NUVU5SRUFDSFwiLCBgTnVsbCkgXSAtPiBVbml4LkVIT1NUVU5SRUFDSFxuICB8IGBBc3NvYyBbIChcIkVMT09QXCIsIGBOdWxsKSBdIC0+IFVuaXguRUxPT1BcbiAgfCBgQXNzb2MgWyAoXCJFT1ZFUkZMT1dcIiwgYE51bGwpIF0gLT4gVW5peC5FT1ZFUkZMT1dcbiAgfCBgQXNzb2MgWyAoXCJFVU5LTk9XTkVSUlwiLCBpbnQpIF0gLT4gVW5peC5FVU5LTk9XTkVSUiAodG9faW50IGludClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChidWlsZF9tc2cgXCJ1bml4IGVycm9yXCIsIHgpKVxuXG5sZXQgc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIDIwIGluXG4gIFlvanNvbi5CYXNpYy53cml0ZV9zdGRfZmxvYXQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2IpIHN0b3AgPSBTdG9wIG9mICdiIHwgU3VjY2VzcyBvZiAnYVxuXG5sZXQgc3VjY2VzcyBhID0gU3VjY2VzcyBhXG5sZXQgc3RvcCBhID0gU3RvcCBhXG5cbmxldCBzdWNjZXNzX29yX3N0b3AgZiBnIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTdWNjZXNzIGEgLT4gZiBhXG4gIHwgU3RvcCBhIC0+IGcgYVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIHR5cGUgT3JkZXJlZFR5cGUgPSBzaWdcbiAgdHlwZSB0XG5cbiAgdmFsIGNvbXBhcmUgOiB0IC0+IHQgLT4gaW50XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG5lbmRcblxudHlwZSAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EpIHdpdGhfbG9nX3dyYXAgPVxuICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IHN0cmluZyAtPiBzdHJpbmcgb3B0aW9uIC0+IGV4biAtPiAnZXJyb3IpIC0+XG4gICdwYXJhbWV0ZXJzIC0+XG4gICdlcnJvciAtPlxuICAnYVxuXG5tb2R1bGUgdHlwZSBTZXQgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCBpc19zaW5nbGV0b24gOiB0IC0+IGJvb2xcbiAgdmFsIGFkZCA6IGVsdCAtPiB0IC0+IHRcblxuICB2YWwgYWRkX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIGVsdCAtPiB0IC0+ICdlcnJvciAqIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlIDogZWx0IC0+IHQgLT4gdFxuXG4gIHZhbCBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiBib29sICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2UgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gdCAtPiAnZXJyb3IgKiBib29sICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCByZW1vdmVfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBzcGxpdCA6IGVsdCAtPiB0IC0+IHQgKiBib29sICogdFxuICB2YWwgdW5pb24gOiB0IC0+IHQgLT4gdFxuICB2YWwgZGlzam9pbnRfdW5pb24gOiB0IC0+IHQgLT4gdCBvcHRpb25cbiAgdmFsIGludGVyIDogdCAtPiB0IC0+IHRcblxuICB2YWwgbWludXMgOiB0IC0+IHQgLT4gdFxuICAoKiogW21pbnVzIGEgYl0gY29udGFpbnMgZWxlbWVudHMgb2YgW2FdIHRoYXQgYXJlIG5vdCBpbiBbYl0gKilcblxuICB2YWwgZGlmZiA6IHQgLT4gdCAtPiB0XG4gICgqKiBbZGlmZiBhIGJdID0gW21pbnVzICh1bmlvbiBhIGIpIChpbnRlciBhIGIpXSAqKVxuXG4gIHZhbCBtaW51c193aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCB1bmlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBkaXNqb2ludF91bmlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBpbnRlcl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBkaWZmX3dpdGhfbG9ncyA6ICgncGFyYW1ldGVycywgJ2Vycm9yLCB0IC0+IHQgLT4gJ2Vycm9yICogdCkgd2l0aF9sb2dfd3JhcFxuICAoKiB2YWwgc3BsaXRfd2l0aF9sb2dzOlxuICAgICAgICAoJ3BhcmFtZXRlcnMsJ2Vycm9yLGVsdCAtPiB0IC0+ICdlcnJvciAqICggdCAqIGJvb2wgKiB0KSkgd2l0aF9sb2dfd3JhcCAqKVxuXG4gIHZhbCBzaXplIDogdCAtPiBpbnRcbiAgdmFsIG1lbSA6IGVsdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGV4aXN0cyA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBmaWx0ZXIgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdFxuXG4gIHZhbCBmaWx0ZXJfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgKGVsdCAtPiBib29sKSAtPiB0IC0+ICdlcnJvciAqIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gYm9vbCkgLT4gdCAtPiBib29sXG4gIHZhbCBwYXJ0aXRpb24gOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gdCAqIHRcblxuICB2YWwgcGFydGl0aW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsIChlbHQgLT4gYm9vbCkgLT4gdCAtPiAnZXJyb3IgKiB0ICogdCkgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3Vic2V0IDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGZvbGRfaW52IDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBwcmludCA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIHJhbmRvbSA6IFJhbmRvbS5TdGF0ZS50IC0+IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWluX2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuICB2YWwgbWF4X2VsdCA6IHQgLT4gZWx0IG9wdGlvblxuZW5kXG5cbm1vZHVsZSB0eXBlIE1hcCA9IHNpZ1xuICB0eXBlIGVsdFxuICB0eXBlIHNldFxuICB0eXBlICsnYSB0XG5cbiAgdmFsIGVtcHR5IDogJ2EgdFxuICB2YWwgaXNfZW1wdHkgOiAnYSB0IC0+IGJvb2xcbiAgdmFsIHNpemUgOiAnYSB0IC0+IGludFxuICB2YWwgcm9vdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIG1heF9rZXkgOiAnYSB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIGFkZCA6IGVsdCAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHJlbW92ZSA6IGVsdCAtPiAnYSB0IC0+ICdhIHRcblxuICB2YWwgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgZWx0IC0+ICdhIC0+ICdhIHQgLT4gJ2Vycm9yICogYm9vbCAqICdhIHQgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgZWx0IC0+ICdhIHQgLT4gJ2Vycm9yICogYm9vbCAqICdhIHQpIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgcG9wIDogZWx0IC0+ICdhIHQgLT4gJ2Egb3B0aW9uICogJ2EgdFxuICB2YWwgbWVyZ2UgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIGZpbmRfb3B0aW9uIDogZWx0IC0+ICdhIHQgLT4gJ2Egb3B0aW9uXG4gIHZhbCBmaW5kX2RlZmF1bHQgOiAnYSAtPiBlbHQgLT4gJ2EgdCAtPiAnYVxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSBvcHRpb24pIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZmluZF9kZWZhdWx0X3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIC0+IGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhKSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1lbSA6IGVsdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGRpZmYgOiAnYSB0IC0+ICdhIHQgLT4gJ2EgdCAqICdhIHRcbiAgdmFsIHVuaW9uIDogJ2EgdCAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIHVwZGF0ZSA6ICdhIHQgLT4gJ2EgdCAtPiAnYSB0XG4gIHZhbCBkaWZmX3ByZWQgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+ICdhIHQgKiAnYSB0XG5cbiAgdmFsIGFkZF93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHJlbW92ZV93aXRoX2xvZ3MgOlxuICAgICgncGFyYW1ldGVycywgJ2Vycm9yLCBlbHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGpvaW5fd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgJ2EgdCAtPiBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHNwbGl0X3dpdGhfbG9ncyA6XG4gICAgKCAncGFyYW1ldGVycyxcbiAgICAgICdlcnJvcixcbiAgICAgIGVsdCAtPiAnYSB0IC0+ICdlcnJvciAqICgnYSB0ICogJ2Egb3B0aW9uICogJ2EgdCkgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgdXBkYXRlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1hcDJfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiAnYSAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gJ2IgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdiIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2Vycm9yICogJ2MgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBtYXAyel93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+ICdhIC0+ICdhIC0+ICdlcnJvciAqICdhKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2Vycm9yICogJ2EgdCApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBmb2xkMnpfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAnYSB0IC0+XG4gICAgICAnYiB0IC0+XG4gICAgICAnYyAtPlxuICAgICAgJ2Vycm9yICogJ2MgKVxuICAgIHdpdGhfbG9nX3dyYXBcblxuICB2YWwgZm9sZDJfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2MgLT4gJ2Vycm9yICogJ2MpIC0+XG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICgncGFyYW1ldGVycyAtPiAnZXJyb3IgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdjIC0+ICdlcnJvciAqICdjKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2MgLT5cbiAgICAgICdlcnJvciAqICdjIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ3BhcmFtZXRlcnMgLT4gJ2Vycm9yIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnYyAtPiAnZXJyb3IgKiAnYykgLT5cbiAgICAgICdhIHQgLT5cbiAgICAgICdiIHQgLT5cbiAgICAgICdjIC0+XG4gICAgICAnZXJyb3IgKiAnYyApXG4gICAgd2l0aF9sb2dfd3JhcFxuXG4gIHZhbCBpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKCdwYXJhbWV0ZXJzIC0+ICdlcnJvciAtPiBlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2Vycm9yKSAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgdCAtPlxuICAgICAgJ2Vycm9yIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfd2l0aF9sb2dzIDpcbiAgICAoJ3BhcmFtZXRlcnMsICdlcnJvciwgJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGRpZmZfcHJlZF93aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+ICdlcnJvciAqICdhIHQgKiAnYSB0IClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIG1lcmdlX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIHVuaW9uX3dpdGhfbG9ncyA6XG4gICAgKCdwYXJhbWV0ZXJzLCAnZXJyb3IsICdhIHQgLT4gJ2EgdCAtPiAnZXJyb3IgKiAnYSB0KSB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9sb2dzIDpcbiAgICAoICdwYXJhbWV0ZXJzLFxuICAgICAgJ2Vycm9yLFxuICAgICAgKGVsdCAtPiAnYSAtPiAnZXJyb3IgKiAnYiAtPiAnZXJyb3IgKiAnYikgLT5cbiAgICAgIHNldCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgLT5cbiAgICAgICdlcnJvciAqICdiIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9uc193aXRoX2xvZ3MgOlxuICAgICggJ3BhcmFtZXRlcnMsXG4gICAgICAnZXJyb3IsXG4gICAgICAoZWx0IC0+ICdhIC0+ICdlcnJvciAqICdiIC0+ICdlcnJvciAqICdiKSAtPlxuICAgICAgKGVsdCAtPiAnZXJyb3IgKiAnYiAtPiAnZXJyb3IgKiAnYikgLT5cbiAgICAgIHNldCAtPlxuICAgICAgJ2EgdCAtPlxuICAgICAgJ2IgLT5cbiAgICAgICdlcnJvciAqICdiIClcbiAgICB3aXRoX2xvZ193cmFwXG5cbiAgdmFsIGl0ZXIgOiAoZWx0IC0+ICdhIC0+IHVuaXQpIC0+ICdhIHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2IgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgLT4gJ2JcblxuICB2YWwgZm9sZF93aXRoX2ludGVycnVwdGlvbiA6XG4gICAgKGVsdCAtPiAnYSAtPiAnYiAtPiAoJ2IsICdjKSBTdG9wLnN0b3ApIC0+ICdhIHQgLT4gJ2IgLT4gKCdiLCAnYykgU3RvcC5zdG9wXG5cbiAgdmFsIG1vbmFkaWNfZm9sZDIgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2EgLT4gJ2MgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHQgLT4gJ2IgLT4gJ2MgLT4gJ21ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIG1vbmFkaWNfZm9sZDJfc3BhcnNlIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgKiAnY1xuXG4gIHZhbCBtb25hZGljX2l0ZXIyX3NwYXJzZSA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdCAtPiAnYSAtPiAnYiAtPiAnbWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXJcblxuICB2YWwgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgICgncGFyYW1ldGVycyAtPiAnbWV0aG9kX2hhbmRsZXIgLT4gZWx0IC0+ICdhIC0+ICdiIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIG1hcGkgOiAoZWx0IC0+ICdhIC0+ICdiKSAtPiAnYSB0IC0+ICdiIHRcbiAgdmFsIG1hcCA6ICgnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBtYXAyIDogKCdhIC0+ICdhIC0+ICdhKSAtPiAnYSB0IC0+ICdhIHQgLT4gJ2EgdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBmaWx0ZXJfb25lIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IChlbHQgKiAnYSkgb3B0aW9uXG4gIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGJpbmRpbmdzIDogJ2EgdCAtPiAoZWx0ICogJ2EpIGxpc3RcblxuICB2YWwgcHJpbnQgOlxuICAgIChGb3JtYXQuZm9ybWF0dGVyIC0+ICdhIC0+IHVuaXQpIC0+IEZvcm1hdC5mb3JtYXR0ZXIgLT4gJ2EgdCAtPiB1bml0XG5cbiAgdmFsIG9mX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgP2Vycm9yX21zZzpzdHJpbmcgLT5cbiAgICAoWW9qc29uLkJhc2ljLnQgLT4gZWx0KSAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiAndmFsdWUpIC0+XG4gICAgWW9qc29uLkJhc2ljLnQgLT5cbiAgICAndmFsdWUgdFxuXG4gIHZhbCB0b19qc29uIDpcbiAgICA/bGFiX2tleTpzdHJpbmcgLT5cbiAgICA/bGFiX3ZhbHVlOnN0cmluZyAtPlxuICAgIChlbHQgLT4gWW9qc29uLkJhc2ljLnQpIC0+XG4gICAgKCd2YWx1ZSAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAndmFsdWUgdCAtPlxuICAgIFlvanNvbi5CYXNpYy50XG5lbmRcblxubW9kdWxlIHR5cGUgUyA9IHNpZ1xuICB0eXBlIGVsdFxuXG4gIG1vZHVsZSBTZXQgOiBTZXQgd2l0aCB0eXBlIGVsdCA9IGVsdFxuICBtb2R1bGUgTWFwIDogTWFwIHdpdGggdHlwZSBlbHQgPSBlbHQgYW5kIHR5cGUgc2V0ID0gU2V0LnRcbmVuZFxuXG5leGNlcHRpb24gRGVhZENvZGVJc05vdERlYWQgb2Ygc3RyaW5nXG5cbm1vZHVsZSBNYWtlIChPcmQgOiBPcmRlcmVkVHlwZSkgOiBTIHdpdGggdHlwZSBlbHQgPSBPcmQudCA9IHN0cnVjdFxuICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgbW9kdWxlIFNldCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gT3JkLnRcblxuICAgIG1vZHVsZSBQcml2YXRlIDogc2lnXG4gICAgICB0eXBlIHQgPSBwcml2YXRlIEVtcHR5IHwgTm9kZSBvZiB0ICogZWx0ICogdCAqIGludCAqIGludFxuXG4gICAgICB2YWwgZW1wdHkgOiB0XG4gICAgICB2YWwgaGVpZ2h0IDogdCAtPiBpbnRcbiAgICAgIHZhbCBzaXplIDogdCAtPiBpbnRcbiAgICAgIHZhbCBub2RlIDogdCAtPiBlbHQgLT4gdCAtPiB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlIHQgPSBFbXB0eSB8IE5vZGUgb2YgdCAqIGVsdCAqIHQgKiBpbnQgKiBpbnRcblxuICAgICAgbGV0IGVtcHR5ID0gRW1wdHlcblxuICAgICAgbGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcblxuICAgICAgbGV0IHNpemUgPSBmdW5jdGlvblxuICAgICAgICB8IEVtcHR5IC0+IDBcbiAgICAgICAgfCBOb2RlIChfLCBfLCBfLCBfLCBzKSAtPiBzXG5cbiAgICAgIGxldCBub2RlIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgICBsZXQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAgICAgTm9kZVxuICAgICAgICAgICggbGVmdCxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAoaWYgaGwgPiBociB0aGVuXG4gICAgICAgICAgICAgICBobFxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGhyKVxuICAgICAgICAgICAgKyAxLFxuICAgICAgICAgICAgc2l6ZSBsZWZ0ICsgc2l6ZSByaWdodCArIDEgKVxuICAgIGVuZFxuXG4gICAgdHlwZSB0ID0gUHJpdmF0ZS50XG5cbiAgICBsZXQgZW1wdHkgPSBQcml2YXRlLmVtcHR5XG4gICAgbGV0IGhlaWdodCA9IFByaXZhdGUuaGVpZ2h0XG4gICAgbGV0IHNpemUgPSBQcml2YXRlLnNpemVcbiAgICBsZXQgbm9kZSA9IFByaXZhdGUubm9kZVxuXG4gICAgbGV0IGlzX2VtcHR5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSBfIC0+IGZhbHNlXG5cbiAgICBsZXQgc2luZ2xldG9uIHZhbHVlID0gbm9kZSBlbXB0eSB2YWx1ZSBlbXB0eVxuXG4gICAgbGV0IGlzX3NpbmdsZXRvbiBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBmYWxzZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKHNldDEsIF8sIHNldDIsIF8sIF8pIC0+IGlzX2VtcHR5IHNldDEgJiYgaXNfZW1wdHkgc2V0MlxuXG4gICAgbGV0IGJhbGFuY2UgbGVmdCB2YWx1ZSByaWdodCA9XG4gICAgICBsZXQgaGVpZ2h0X2xlZnQgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgbGV0IGhlaWdodF9yaWdodCA9IGhlaWdodCByaWdodCBpblxuICAgICAgaWYgaGVpZ2h0X2xlZnQgPiBoZWlnaHRfcmlnaHQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDIyMlwiKVxuICAgICAgICAoKiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCBsZWZ0bGVmdCA+PSBoZWlnaHQgbGVmdHJpZ2h0IHRoZW5cbiAgICAgICAgICAgIG5vZGUgbGVmdGxlZnQgbGVmdHZhbHVlIChub2RlIGxlZnRyaWdodCB2YWx1ZSByaWdodClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGxlZnRyaWdodCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMjI5XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCBsZWZ0bGVmdCA8IGhlaWdodCBsZWZ0cmlnaHQgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0cmlnaHRsZWZ0LCBsZWZ0cmlnaHR2YWx1ZSwgbGVmdHJpZ2h0cmlnaHQsIF8sIF8pXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgICAgICAobm9kZSBsZWZ0bGVmdCBsZWZ0dmFsdWUgbGVmdHJpZ2h0bGVmdClcbiAgICAgICAgICAgICAgICBsZWZ0cmlnaHR2YWx1ZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnRyaWdodHJpZ2h0IHZhbHVlIHJpZ2h0KVxuICAgICAgICAgIClcbiAgICAgICkgZWxzZSBpZiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgdGhlbiAoXG4gICAgICAgIG1hdGNoIHJpZ2h0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDIzOFwiKVxuICAgICAgICAoKiBoZWlnaHRfcmlnaHQgPiBoZWlnaHRfbGVmdCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAocmlnaHRsZWZ0LCByaWdodHZhbHVlLCByaWdodHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCByaWdodHJpZ2h0ID49IGhlaWdodCByaWdodGxlZnQgdGhlblxuICAgICAgICAgICAgbm9kZSAobm9kZSBsZWZ0IHZhbHVlIHJpZ2h0bGVmdCkgcmlnaHR2YWx1ZSByaWdodHJpZ2h0XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaCByaWdodGxlZnQgd2l0aFxuICAgICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDI0NVwiKVxuICAgICAgICAgICAgKCogMCA8PSBoZWlnaHQgcmlnaHRyaWdodCA8IGhlaWdodCByaWdodGxlZnQgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnRsZWZ0LCByaWdodGxlZnR2YWx1ZSwgcmlnaHRsZWZ0cmlnaHQsIF8sIF8pXG4gICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgIG5vZGVcbiAgICAgICAgICAgICAgICAobm9kZSBsZWZ0IHZhbHVlIHJpZ2h0bGVmdGxlZnQpXG4gICAgICAgICAgICAgICAgcmlnaHRsZWZ0dmFsdWVcbiAgICAgICAgICAgICAgICAobm9kZSByaWdodGxlZnRyaWdodCByaWdodHZhbHVlIHJpZ2h0cmlnaHQpXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgbGV0IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIHRyeSBlcnJvciwgYmFsYW5jZSBsZWZ0IHZhbHVlIHJpZ2h0XG4gICAgICB3aXRoIERlYWRDb2RlSXNOb3REZWFkIGxvYyAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSAobG9jIF4gXCIgU2V0IGludmFyaWFudCBpcyBicm9rZW4sIGtlZXAgb24gd2l0aCB1bmJhbGFuY2VkIHNldFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuU0VULmJhbGFuY2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgKCoqIEJld2FyZSBzb21lIGNvZGUgcmVsaWVzIG9uIHRoZSBpbnZhcmlhbnQgW2FkZCB4IHMgPT0gc10gaWZmIFttZW0geCBzXSAqKVxuICAgIGxldCByZWMgYWRkIHggPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHNpbmdsZXRvbiB4XG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgciwgXywgXykgYXMgdCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgdFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBvID0gYWRkIHggbCBpblxuICAgICAgICAgIGlmIG8gPT0gbCB0aGVuXG4gICAgICAgICAgICB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBvIHYgclxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBvID0gYWRkIHggciBpblxuICAgICAgICAgIGlmIG8gPT0gciB0aGVuXG4gICAgICAgICAgICB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsIHYgb1xuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbmV3X3ZhbCBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgdHJ1ZSwgc2luZ2xldG9uIG5ld192YWxcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZV9zZXQsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIG5ld192YWwgdmFsdWVfc2V0IGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZmFsc2UsIHNldFxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWwgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgc2V0ID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBzZXRcbiAgICAgICAgKVxuXG4gICAgbGV0IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXQgPVxuICAgICAgbGV0IGVycm9yLCBib29sLCBzZXQgPVxuICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG5ld192YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lIChcIlNldE1hcCBsaW5lIDMwMFwiIF4gXCIgYW4gYWxyZWFkeSBlbHQgaGFzIGJlZW4gYWRkZWQgdG8gYSBzZXRcIikpXG4gICAgICAgICAgICAoRmFpbHVyZSBcIlNldF9hbmRfTWFwLlNFVC5hZGRcIilcbiAgICAgIGluXG4gICAgICBlcnJvciwgc2V0XG5cbiAgICBsZXQgYWRkX2V2ZW5faWZfaXRfZXhpc3RzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsdWUgc2V0ID1cbiAgICAgIGxldCBlcnJvciwgXywgc2V0ID1cbiAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBuZXdfdmFsdWUgc2V0XG4gICAgICBpblxuICAgICAgZXJyb3IsIHNldFxuXG4gICAgbGV0IHJlYyBqb2luIGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCwgcmlnaHQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGFkZCB2YWx1ZSByaWdodFxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGFkZCB2YWx1ZSBsZWZ0XG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0bGVmdCwgbGVmdHZhbHVlLCBsZWZ0cmlnaHQsIGxlZnRoZWlnaHQsIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAocmlnaHRsZWZ0LCByaWdodHZhbHVlLCByaWdodHJpZ2h0LCByaWdodGhlaWdodCwgXykgKSAtPlxuICAgICAgICBpZiBsZWZ0aGVpZ2h0ID4gcmlnaHRoZWlnaHQgKyAyIHRoZW4gKFxuICAgICAgICAgIGxldCByaWdodCcgPSBqb2luIGxlZnRyaWdodCB2YWx1ZSByaWdodCBpblxuICAgICAgICAgIGJhbGFuY2UgbGVmdGxlZnQgbGVmdHZhbHVlIHJpZ2h0J1xuICAgICAgICApIGVsc2UgaWYgcmlnaHRoZWlnaHQgPiBsZWZ0aGVpZ2h0ICsgMiB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdCcgPSBqb2luIGxlZnQgdmFsdWUgcmlnaHRsZWZ0IGluXG4gICAgICAgICAgYmFsYW5jZSBsZWZ0JyByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbm9kZSBsZWZ0IHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgcmVjIHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnQgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggbGVmdCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gdmFsdWUsIHJpZ2h0XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdGxlZnQsIGxlZnR2YWx1ZSwgbGVmdHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluLCBsZWZ0JyA9IHNhZmVfZXh0cmFjdF9taW5fZWx0IGxlZnRsZWZ0IGxlZnR2YWx1ZSBsZWZ0cmlnaHQgaW5cbiAgICAgICAgbWluLCBiYWxhbmNlIGxlZnQnIHZhbHVlIHJpZ2h0XG5cbiAgICBsZXQgcmVjIG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibWluX2VsdF93aXRoX2xvZ3MsIGxpbmUgMzAzXCIpXG4gICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCB2LCBfLCBfLCBfKSAtPiBlcnJvciwgU29tZSB2XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgXywgXywgXywgXykgLT5cbiAgICAgICAgbWluX2VsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRcblxuICAgIGxldCByZWMgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSBcInJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncywgbGluZSAzMTFcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIF8sIHJpZ2h0LCBfLCBfKSAtPiBlcnJvciwgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgIHJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdFxuICAgICAgICBpblxuICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUgcmlnaHRcblxuICAgIGxldCBtZXJnZSBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluMiwgc2V0MicgPSBzYWZlX2V4dHJhY3RfbWluX2VsdCBsZWZ0MiB2YWx1ZTIgcmlnaHQyIGluXG4gICAgICAgIGJhbGFuY2Ugc2V0MSBtaW4yIHNldDInXG5cbiAgICBsZXQgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgXywgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsZWZ0MiA9XG4gICAgICAgICAgcmVtb3ZlX21pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgZWx0X29wdCA9IG1pbl9lbHRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQyIGluXG4gICAgICAgIChtYXRjaCBlbHRfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibWVyZ2Vfd2l0aF9sb2dzLGxpbmUgMzM5XCIpXG4gICAgICAgICAgICAgIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIHNldDFcbiAgICAgICAgfCBTb21lIGVsdCAtPiBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBlbHQgbGVmdDIpXG5cbiAgICBsZXQgcmVjIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlIHJpZ2h0ID1cbiAgICAgIG1hdGNoIGxlZnQsIHJpZ2h0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBhZGRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSByaWdodFxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGxlZnRcbiAgICAgIHwgKCBQcml2YXRlLk5vZGUgKGxlZnRsZWZ0LCBsZWZ0dmFsdWUsIGxlZnRyaWdodCwgbGVmdGhlaWdodCwgXyksXG4gICAgICAgICAgUHJpdmF0ZS5Ob2RlIChyaWdodGxlZnQsIHJpZ2h0dmFsdWUsIHJpZ2h0cmlnaHQsIHJpZ2h0aGVpZ2h0LCBfKSApIC0+XG4gICAgICAgIGlmIGxlZnRoZWlnaHQgPiByaWdodGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRyaWdodCB2YWx1ZSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnRsZWZ0IGxlZnR2YWx1ZSByaWdodCdcbiAgICAgICAgKSBlbHNlIGlmIHJpZ2h0aGVpZ2h0ID4gbGVmdGhlaWdodCArIDIgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCB2YWx1ZSByaWdodGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodHZhbHVlIHJpZ2h0cmlnaHRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCB2YWx1ZSByaWdodFxuXG4gICAgbGV0IGNvbmNhdCBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluMiwgc2V0MicgPSBzYWZlX2V4dHJhY3RfbWluX2VsdCBsZWZ0MiB2YWx1ZTIgcmlnaHQyIGluXG4gICAgICAgIGpvaW4gc2V0MSBtaW4yIHNldDInXG5cbiAgICBsZXQgY29uY2F0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVycm9yLCBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8sIFByaXZhdGUuTm9kZSBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgbGVmdDIgPVxuICAgICAgICAgIHJlbW92ZV9taW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGVsdF9vcHQgPSBtaW5fZWx0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc2V0MiBpblxuICAgICAgICAobWF0Y2ggZWx0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcImNvbmNhdF93aXRoX2xvZ3MsbGluZSAzOTBcIilcbiAgICAgICAgICAgICAgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgc2V0MVxuICAgICAgICB8IFNvbWUgZWx0IC0+IGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIGVsdCBsZWZ0MilcblxuICAgIGxldCByZWMgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzcGxpdF92YWwgc2V0ID1cbiAgICAgIG1hdGNoIHNldCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIChlbXB0eSwgZmFsc2UsIGVtcHR5KVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHNldF92YWwsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNwbGl0X3ZhbCBzZXRfdmFsIGluXG4gICAgICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgKGxlZnQsIHRydWUsIHJpZ2h0KVxuICAgICAgICBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnRsZWZ0LCBib29sLCByaWdodGxlZnQpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igc3BsaXRfdmFsIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHRyaWdodCA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHRsZWZ0IHNldF92YWwgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdGxlZnQsIGJvb2wsIHJpZ2h0cmlnaHQpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdHJpZ2h0LCBib29sLCByaWdodHJpZ2h0KSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNwbGl0X3ZhbCByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0bGVmdCA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBzZXRfdmFsIGxlZnRyaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIChsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodClcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyByZW1vdmUgdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IGFzIHNldCAtPiBzZXRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZV9zZXQsIHJpZ2h0LCBfLCBfKSBhcyBzZXQgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2YWx1ZSB2YWx1ZV9zZXQgaW5cbiAgICAgICAgaWYgYyA9IDAgdGhlblxuICAgICAgICAgIG1lcmdlIGxlZnQgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdCcgPSByZW1vdmUgdmFsdWUgbGVmdCBpblxuICAgICAgICAgIGlmIGxlZnQgPT0gbGVmdCcgdGhlblxuICAgICAgICAgICAgc2V0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYmFsYW5jZSBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgcmlnaHQnID0gcmVtb3ZlIHZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgaWYgcmlnaHQgPT0gcmlnaHQnIHRoZW5cbiAgICAgICAgICAgIHNldFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGJhbGFuY2UgbGVmdCB2YWx1ZV9zZXQgcmlnaHQnXG4gICAgICAgIClcblxuICAgIGxldCByZWMgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSA9XG4gICAgICBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IGFzIHNldCAtPiBlcnJvciwgZmFsc2UsIHNldFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlX3NldCwgcmlnaHQsIF8sIF8pIGFzIHNldCAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHZhbHVlIHZhbHVlX3NldCBpblxuICAgICAgICBpZiBjID0gMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9IG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCByaWdodCBpblxuICAgICAgICAgIGVycm9yLCB0cnVlLCBzZXRcbiAgICAgICAgKSBlbHNlIGlmIGMgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsZWZ0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZWZ0ID09IGxlZnQnIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA0NTRcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyB2YWx1ZV9zZXQgcmlnaHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgcmlnaHQnID1cbiAgICAgICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHJpZ2h0ID09IHJpZ2h0JyB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiU2V0TWFwIGxpbmUgNDY3XCIpXG4gICAgICAgICAgICAgICAgICBOb3RfZm91bmRcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIHNldFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHNldCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IHZhbHVlX3NldCByaWdodCdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgc2V0XG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVtb3ZlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgc2V0ID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgc2V0ID1cbiAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBzZXRcbiAgICAgIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgZXJyb3IsIHNldFxuICAgICAgZWxzZVxuICAgICAgICAoIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgKFwiU2V0TWFwIGxpbmUgNDgxXCJcbiAgICAgICAgICAgICAgXiBcIkF0dGVtcHQgdG8gcmVtb3ZlIGFuIGVsdCB0aGF0IGRvZXMgbm90IGV4aXN0XCIpKVxuICAgICAgICAgICAgTm90X2ZvdW5kLFxuICAgICAgICAgIHNldCApXG5cbiAgICBsZXQgcmVjIHNwbGl0IHNwbGl0X3ZhbHVlIHNldCA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBmYWxzZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBzZXRfdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHNwbGl0X3ZhbHVlIHNldF92YWx1ZSBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgbGVmdCwgdHJ1ZSwgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgbGVmdGxlZnQsIGJvb2wsIHJpZ2h0bGVmdCA9IHNwbGl0IHNwbGl0X3ZhbHVlIGxlZnQgaW5cbiAgICAgICAgICBsZXQgcmlnaHRyaWdodCA9IGpvaW4gcmlnaHRsZWZ0IHNldF92YWx1ZSByaWdodCBpblxuICAgICAgICAgIGxlZnRsZWZ0LCBib29sLCByaWdodHJpZ2h0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnRyaWdodCwgYm9vbCwgcmlnaHRyaWdodCA9IHNwbGl0IHNwbGl0X3ZhbHVlIHJpZ2h0IGluXG4gICAgICAgICAgbGV0IGxlZnRsZWZ0ID0gam9pbiBsZWZ0IHNldF92YWx1ZSBsZWZ0cmlnaHQgaW5cbiAgICAgICAgICBsZWZ0bGVmdCwgYm9vbCwgcmlnaHRyaWdodFxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBzZXQyXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlblxuICAgICAgICAgICAgYWRkIHZhbHVlMiBzZXQxXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGVmdDIsIF8sIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgICBsZXQgbGVmdCcgPSB1bmlvbiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICAgICAgbGV0IHJpZ2h0JyA9IHVuaW9uIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgICAgIGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuXG4gICAgICAgICAgYWRkIHZhbHVlMSBzZXQyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBsZWZ0MSwgXywgcmlnaHQxID0gc3BsaXQgdmFsdWUyIHNldDEgaW5cbiAgICAgICAgICBsZXQgbGVmdCcgPSB1bmlvbiBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICAgIGxldCByaWdodCcgPSB1bmlvbiByaWdodDEgcmlnaHQyIGluXG4gICAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTIgcmlnaHQnXG4gICAgICAgIClcblxuICAgIGxldCByZWMgZGlzam9pbnRfdW5pb24gc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IFNvbWUgc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IFNvbWUgc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlbiAoXG4gICAgICAgICAgICBsZXQgb3V0ID0gYWRkIHZhbHVlMiBzZXQxIGluXG4gICAgICAgICAgICBpZiBvdXQgPT0gc2V0MSB0aGVuXG4gICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgU29tZSBvdXRcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGxlZnQyLCBfLCByaWdodDIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICAgICAgbWF0Y2ggZGlzam9pbnRfdW5pb24gbGVmdDEgbGVmdDIsIGRpc2pvaW50X3VuaW9uIHJpZ2h0MSByaWdodDIgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGxlZnQnLCBTb21lIHJpZ2h0JyAtPiBTb21lIChqb2luIGxlZnQnIHZhbHVlMSByaWdodCcpXG4gICAgICAgICAgICB8IF8sIF8gLT4gTm9uZVxuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBoZWlnaHQxID0gMSB0aGVuIChcbiAgICAgICAgICBsZXQgb3V0ID0gYWRkIHZhbHVlMSBzZXQyIGluXG4gICAgICAgICAgaWYgc2V0MiA9PSBvdXQgdGhlblxuICAgICAgICAgICAgTm9uZVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNvbWUgb3V0XG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBfLCByaWdodDEgPSBzcGxpdCB2YWx1ZTIgc2V0MSBpblxuICAgICAgICAgIG1hdGNoIGRpc2pvaW50X3VuaW9uIGxlZnQxIGxlZnQyLCBkaXNqb2ludF91bmlvbiByaWdodDEgcmlnaHQyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgbGVmdCcsIFNvbWUgcmlnaHQnIC0+IFNvbWUgKGpvaW4gbGVmdCcgdmFsdWUyIHJpZ2h0JylcbiAgICAgICAgICB8IF8sIF8gLT4gTm9uZVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIHNldDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCAoIFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIHJpZ2h0MiwgaGVpZ2h0MiwgXykgKSAtPlxuICAgICAgICBpZiBoZWlnaHQxID4gaGVpZ2h0MiB0aGVuXG4gICAgICAgICAgaWYgaGVpZ2h0MiA9IDEgdGhlblxuICAgICAgICAgICAgYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIHNldDFcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBfLCByaWdodDIpID1cbiAgICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICAgIHVuaW9uX2dlbiBhZGRfZ2VuIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMSByaWdodCdcbiAgICAgICAgICApXG4gICAgICAgIGVsc2UgaWYgaGVpZ2h0MSA9IDEgdGhlblxuICAgICAgICAgIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQxLCBfLCByaWdodDEpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIHNldDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fZ2VuIGFkZF9nZW4gd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9XG4gICAgICAgICAgICB1bmlvbl9nZW4gYWRkX2dlbiB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMiByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHVuaW9uX3dpdGhfbG9ncyB3IHAgZSBzIHMnID0gdW5pb25fZ2VuIGFkZF9ldmVuX2lmX2l0X2V4aXN0cyB3IHAgZSBzIHMnXG4gICAgbGV0IGRpc2pvaW50X3VuaW9uX3dpdGhfbG9ncyB3IHAgZSBzIHMnID0gdW5pb25fZ2VuIGFkZF93aXRoX2xvZ3MgdyBwIGUgcyBzJ1xuXG4gICAgbGV0IHN1dHVyZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSAobGVmdDIsIGJvb2wsIHJpZ2h0MikgZiA9XG4gICAgICBsZXQgbGVmdCcgPSBmIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgcmlnaHQnID0gZiByaWdodDEgcmlnaHQyIGluXG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgam9pbiBsZWZ0JyB2YWx1ZTEgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGNvbmNhdCBsZWZ0JyByaWdodCdcblxuICAgIGxldCBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIChsZWZ0MiwgYm9vbCwgcmlnaHQyKSBmID1cbiAgICAgIGxldCBsZWZ0JyA9IGYgbGVmdDEgbGVmdDIgaW5cbiAgICAgIGxldCByaWdodCcgPSBmIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBjb25jYXQgbGVmdCcgcmlnaHQnXG4gICAgICBlbHNlXG4gICAgICAgIGpvaW4gbGVmdCcgdmFsdWUxIHJpZ2h0J1xuXG4gICAgbGV0IHJlYyBpbnRlciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgdHJpcGxlMiA9IHNwbGl0IHZhbHVlMSBzZXQyIGluXG4gICAgICAgIHN1dHVyZSAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSB0cmlwbGUyIGludGVyXG5cbiAgICBsZXQgc3V0dXJlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxIHJpZ2h0J1xuICAgICAgZWxzZVxuICAgICAgICBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodCdcblxuICAgIGxldCBzdXR1cmVfbm90X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgKGxlZnQyLCBib29sLCByaWdodDIpIGYgPVxuICAgICAgbGV0IGVycm9yLCBsZWZ0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyIGluXG4gICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IGYgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBjb25jYXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyByaWdodCdcbiAgICAgIGVsc2VcbiAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMSByaWdodCdcblxuICAgIGxldCByZWMgaW50ZXJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IG1oJywgdHJpcGxlMiA9IHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgbWgnIChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTJcbiAgICAgICAgICBpbnRlcl93aXRoX2xvZ3NcblxuICAgIGxldCByZWMgZGlmZiBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gc2V0MlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCB0cmlwbGUyID0gc3BsaXQgdmFsdWUxIHNldDIgaW5cbiAgICAgICAgc3V0dXJlX25vdCAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKSB0cmlwbGUyIGRpZmZcblxuICAgIGxldCByZWMgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHNldDEgc2V0MiA9XG4gICAgICBtYXRjaCBzZXQxLCBzZXQyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgZW1wdHlcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBlcnJvciwgc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IGVycm9yLCB0cmlwbGUyID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBzZXQyXG4gICAgICAgIGluXG4gICAgICAgIHN1dHVyZV9ub3Rfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciAobGVmdDEsIHZhbHVlMSwgcmlnaHQxKVxuICAgICAgICAgIHRyaXBsZTIgZGlmZl93aXRoX2xvZ3NcblxuICAgIGxldCByZWMgbWludXMgc2V0MSBzZXQyID1cbiAgICAgIG1hdGNoIHNldDEsIHNldDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IGVtcHR5XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gc2V0MVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSwgXywgXyksIF8gLT5cbiAgICAgICAgbGV0IHRyaXBsZTIgPSBzcGxpdCB2YWx1ZTEgc2V0MiBpblxuICAgICAgICBzdXR1cmVfbm90IChsZWZ0MSwgdmFsdWUxLCByaWdodDEpIHRyaXBsZTIgbWludXNcblxuICAgIGxldCByZWMgbWludXNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gZXJyb3IsIGVtcHR5XG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHNldDFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgdHJpcGxlMiA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZTEgc2V0MlxuICAgICAgICBpblxuICAgICAgICBzdXR1cmVfbm90X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgKGxlZnQxLCB2YWx1ZTEsIHJpZ2h0MSlcbiAgICAgICAgICB0cmlwbGUyIG1pbnVzX3dpdGhfbG9nc1xuXG4gICAgbGV0IHJlYyBtZW0gc2VhcmNoZWRfdmFsdWUgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgc2V0X3ZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSBzZWFyY2hlZF92YWx1ZSBzZXRfdmFsdWUgaW5cbiAgICAgICAgYyA9PSAwXG4gICAgICAgIHx8IG1lbSBzZWFyY2hlZF92YWx1ZVxuICAgICAgICAgICAgIChpZiBjIDwgMCB0aGVuXG4gICAgICAgICAgICAgICAgbGVmdFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmlnaHQpXG5cbiAgICBsZXQgZmlsdGVyIHAgc2V0ID1cbiAgICAgIGxldCByZWMgZmlsdCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBmaWx0XG4gICAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkIHZhbHVlIGFjY3VcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY2N1KVxuICAgICAgICAgICAgICAgbGVmdClcbiAgICAgICAgICAgIHJpZ2h0XG4gICAgICBpblxuICAgICAgZmlsdCBlbXB0eSBzZXRcblxuICAgIGxldCBmaWx0ZXJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBwIHNldCA9XG4gICAgICBsZXQgcmVjIGZpbHQgYWNjdSBzZXQgPVxuICAgICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGFjY3UgaW5cbiAgICAgICAgICBmaWx0XG4gICAgICAgICAgICAoZmlsdFxuICAgICAgICAgICAgICAgKGlmIHAgdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgbGlzdFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY3UpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBmaWx0IChlcnJvciwgZW1wdHkpIHNldFxuXG4gICAgbGV0IHBhcnRpdGlvbiBwIHNldCA9XG4gICAgICBsZXQgcmVjIHBhcnQgKCh0LCBmKSBhcyBhY2N1KSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgICAgcGFydFxuICAgICAgICAgICAgKHBhcnRcbiAgICAgICAgICAgICAgIChpZiBwIHZhbHVlIHRoZW5cbiAgICAgICAgICAgICAgICAgIGFkZCB2YWx1ZSB0LCBmXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgdCwgYWRkIHZhbHVlIGYpXG4gICAgICAgICAgICAgICBsZWZ0KVxuICAgICAgICAgICAgcmlnaHRcbiAgICAgIGluXG4gICAgICBwYXJ0IChlbXB0eSwgZW1wdHkpIHNldFxuXG4gICAgbGV0IHBhcnRpdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHAgc2V0ID1cbiAgICAgIGxldCByZWMgcGFydCAoKHJoLCB0LCBmKSBhcyBhY2N1KSBzZXQgPVxuICAgICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gYWNjdVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICAgIHBhcnRcbiAgICAgICAgICAgIChwYXJ0XG4gICAgICAgICAgICAgICAoaWYgcCB2YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCBhLCBiID0gYWRkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgcmggdmFsdWUgdCBpblxuICAgICAgICAgICAgICAgICAgYSwgYiwgZlxuICAgICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgICBsZXQgYSwgYyA9IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIHJoIHZhbHVlIGYgaW5cbiAgICAgICAgICAgICAgICAgIGEsIHQsIGNcbiAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgbGVmdClcbiAgICAgICAgICAgIHJpZ2h0XG4gICAgICBpblxuICAgICAgcGFydCAoZXJyb3IsIGVtcHR5LCBlbXB0eSkgc2V0XG5cbiAgICB0eXBlIGVudW1lcmF0aW9uID0gRW5kIHwgTW9yZSBvZiBlbHQgKiB0ICogZW51bWVyYXRpb25cblxuICAgIGxldCByZWMgY29uc19lbnVtIGVudW0gPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVudW1cbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGNvbnNfZW51bSAoTW9yZSAodmFsdWUsIHJpZ2h0LCBlbnVtKSkgbGVmdFxuXG4gICAgbGV0IHJlYyBjb21wYXJlX2F1eCBlMSBlMiA9XG4gICAgICBtYXRjaCBlMSwgZTIgd2l0aFxuICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICB8IEVuZCwgXyAtPiAtMVxuICAgICAgfCBfLCBFbmQgLT4gMVxuICAgICAgfCBNb3JlICh2MSwgcjEsIGUxKSwgTW9yZSAodjIsIHIyLCBlMikgLT5cbiAgICAgICAgbGV0IGMgPSBPcmQuY29tcGFyZSB2MSB2MiBpblxuICAgICAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgICAgIGNcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGNvbXBhcmVfYXV4IChjb25zX2VudW0gZTEgcjEpIChjb25zX2VudW0gZTIgcjIpXG5cbiAgICBsZXQgY29tcGFyZSBzZXQxIHNldDIgPVxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBFbmQgc2V0MSkgKGNvbnNfZW51bSBFbmQgc2V0MilcblxuICAgIGxldCBlcXVhbCBzZXQxIHNldDIgPSBjb21wYXJlIHNldDEgc2V0MiA9PSAwXG5cbiAgICBsZXQgcmVjIHN1YnNldCBzZXQxIHNldDIgPVxuICAgICAgbWF0Y2ggc2V0MSwgc2V0MiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIF8gLT4gdHJ1ZVxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGZhbHNlXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCByaWdodDEsIF8sIF8pLFxuICAgICAgICAgIFByaXZhdGUuTm9kZSAobGVmdDIsIHZhbHVlMiwgcmlnaHQyLCBfLCBfKSApIC0+XG4gICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdmFsdWUxIHZhbHVlMiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgc3Vic2V0IGxlZnQxIGxlZnQyICYmIHN1YnNldCByaWdodDEgcmlnaHQyXG4gICAgICAgIGVsc2UgaWYgYyA8IDAgdGhlblxuICAgICAgICAgIHN1YnNldCAobm9kZSBsZWZ0MSB2YWx1ZTEgZW1wdHkpIGxlZnQyICYmIHN1YnNldCByaWdodDEgc2V0MlxuICAgICAgICBlbHNlXG4gICAgICAgICAgc3Vic2V0IChub2RlIGVtcHR5IHZhbHVlMSByaWdodDEpIHJpZ2h0MiAmJiBzdWJzZXQgbGVmdDEgc2V0MlxuXG4gICAgbGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+ICgpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgKCkgPSBpdGVyIGYgbGVmdCBpblxuICAgICAgICBsZXQgKCkgPSBmIHZhbHVlIGluXG4gICAgICAgIGl0ZXIgZiByaWdodFxuXG4gICAgbGV0IHJlYyBmb2xkIGYgc2V0IGFjY3UgPVxuICAgICAgbWF0Y2ggc2V0IHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBmb2xkIGYgcmlnaHQgKGYgdmFsdWUgKGZvbGQgZiBsZWZ0IGFjY3UpKVxuXG4gICAgbGV0IHJlYyBmb2xkX2ludiBmIHMgYWNjdSA9XG4gICAgICBtYXRjaCBzIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBhY2N1XG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgciwgXywgXykgLT4gZm9sZF9pbnYgZiBsIChmIHYgKGZvbGRfaW52IGYgciBhY2N1KSlcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgdmFsdWUsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBwIHZhbHVlICYmIGZvcl9hbGwgcCBsZWZ0ICYmIGZvcl9hbGwgcCByaWdodFxuXG4gICAgbGV0IHJlYyBleGlzdHMgcCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCB2YWx1ZSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIHAgdmFsdWUgfHwgZXhpc3RzIHAgbGVmdCB8fCBleGlzdHMgcCByaWdodFxuXG4gICAgbGV0IGVsZW1lbnRzIHNldCA9XG4gICAgICBsZXQgcmVjIGVsZW1lbnRzX2F1eCBhY2N1ID0gZnVuY3Rpb25cbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgICBlbGVtZW50c19hdXggKHZhbHVlIDo6IGVsZW1lbnRzX2F1eCBhY2N1IHJpZ2h0KSBsZWZ0XG4gICAgICBpblxuICAgICAgZWxlbWVudHNfYXV4IFtdIHNldFxuXG4gICAgbGV0IHJlYyBhdXhfcHJpbnQgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gKClcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCBrZXksIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhQF1cIiBPcmQucHJpbnQga2V5XG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCByaWdodCwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXSxAICVhXCIgT3JkLnByaW50IGtleSBhdXhfcHJpbnQgcmlnaHRcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSxAIEBbJWFAXVwiIGF1eF9wcmludCBsZWZ0IE9yZC5wcmludCBrZXlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhQF0sQCAlYVwiIGF1eF9wcmludCBsZWZ0IE9yZC5wcmludCBrZXlcbiAgICAgICAgICBhdXhfcHJpbnQgcmlnaHRcblxuICAgIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDg4XFx4ODVcIlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyBhcyBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAW3slYX1AXVwiIGF1eF9wcmludCBtXG5cbiAgICBsZXQgcmVjIG1pbl9lbHQgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChQcml2YXRlLkVtcHR5LCB2LCBfLCBfLCBfKSAtPiBTb21lIHZcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBfLCBfLCBfLCBfKSAtPiBtaW5fZWx0IGxlZnRcblxuICAgIGxldCByZWMgbWF4X2VsdCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIHYsIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+IFNvbWUgdlxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIF8sIHJpZ2h0LCBfLCBfKSAtPiBtYXhfZWx0IHJpZ2h0XG5cbiAgICBsZXQgY2hvb3NlID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgdiwgXywgXywgXykgLT4gU29tZSB2XG5cbiAgICBsZXQgcmVjIGZpbmRfYWNjIGFpbV9hY2MgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCBrZXksIHIsIF8sIGFjYykgLT5cbiAgICAgICAgaWYgYWltX2FjYyA+PSBhY2MgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGFjY19sID0gc2l6ZSBsIGluXG4gICAgICAgICAgbGV0IGFjY19yID0gc2l6ZSByIGluXG4gICAgICAgICAgaWYgYWNjX2wgPiBhaW1fYWNjIHRoZW5cbiAgICAgICAgICAgIGZpbmRfYWNjIGFpbV9hY2MgbFxuICAgICAgICAgIGVsc2UgaWYgYWNjX3IgKyBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICAgICAgZmluZF9hY2MgKGFpbV9hY2MgLSBhY2NfbCkgclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFNvbWUga2V5XG4gICAgICAgIClcblxuICAgICgqIGxldCByZWMgZmluZF9hY2MgayBtID1cbiAgICAgICAgIG1hdGNoIG0gd2l0aFxuICAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCBrZXksIHIsIF8sIF8pIC0+XG4gICAgICAgICAgICBsZXQgcyA9IHNpemUgbCBpblxuICAgICAgICAgICAgaWYgayA8IHMgdGhlbiBmaW5kX2FjYyBrIGxcbiAgICAgICAgICAgICAgZWxzZSBpZiBrID0gcyB0aGVuIFNvbWUga2V5XG4gICAgICAgICAgICAgIGVsc2UgZmluZF9hY2MgKGsgLSBzIC0gMSkgciAqKVxuXG4gICAgbGV0IHJhbmRvbSBycyBtID1cbiAgICAgIGxldCBzID0gc2l6ZSBtIGluXG4gICAgICBpZiBzID0gMCB0aGVuXG4gICAgICAgIE5vbmVcbiAgICAgIGVsc2VcbiAgICAgICAgZmluZF9hY2MgKFJhbmRvbS5TdGF0ZS5pbnQgcnMgKHNpemUgbSkpIG1cblxuICAgICgqIGxldCBhZGQgPSBMaWZ0X2Vycm9yX2xvZ3MubGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gYWRkX3dpdGhfbG9nc1xuICAgICAgIGxldCBzcGxpdCA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBzcGxpdF93aXRoX2xvZ3NcbiAgICAgICBsZXQgcmVtb3ZlID0gIExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSByZW1vdmVfd2l0aF9sb2dzXG4gICAgICAgbGV0IHVuaW9uID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIHVuaW9uX3dpdGhfbG9nc1xuICAgICAgIGxldCBpbnRlciA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBpbnRlcl93aXRoX2xvZ3NcbiAgICAgICBsZXQgZGlmZiA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBkaWZmX3dpdGhfbG9nc1xuICAgICAgIGxldCBtaW51cyA9IExpZnRfZXJyb3JfbG9ncy5saWZ0X2dlbmVyaWNfYmluYXJ5X2Zvcl9LYVNpbSBtaW51c193aXRoX2xvZ3NcbiAgICAgICBsZXQgZmlsdGVyID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfZm9yX0thU2ltIGZpbHRlcl93aXRoX2xvZ3NcbiAgICAgICBsZXQgcGFydGl0aW9uID0gTGlmdF9lcnJvcl9sb2dzLmxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2Zvcl9LYVNpbSBwYXJ0aXRpb25fd2l0aF9sb2dzXG4gICAgKilcbiAgZW5kXG5cbiAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAoKiBNYXAgaW1wbGVtZW50YXRpb24qKVxuXG4gIG1vZHVsZSBNYXAgPSBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IE9yZC50XG5cbiAgICBtb2R1bGUgUHJpdmF0ZSA6IHNpZ1xuICAgICAgdHlwZSArJ2RhdGEgdCA9IHByaXZhdGVcbiAgICAgICAgfCBFbXB0eVxuICAgICAgICB8IE5vZGUgb2YgJ2RhdGEgdCAqIGVsdCAqICdkYXRhICogJ2RhdGEgdCAqIGludCAqIGludFxuXG4gICAgICB2YWwgZW1wdHkgOiAnYSB0XG4gICAgICB2YWwgaGVpZ2h0IDogJ2EgdCAtPiBpbnRcbiAgICAgIHZhbCBzaXplIDogJ2EgdCAtPiBpbnRcbiAgICAgIHZhbCBub2RlIDogJ2EgdCAtPiBlbHQgLT4gJ2EgLT4gJ2EgdCAtPiAnYSB0XG4gICAgZW5kID0gc3RydWN0XG4gICAgICB0eXBlICsnZGF0YSB0ID1cbiAgICAgICAgfCBFbXB0eVxuICAgICAgICB8IE5vZGUgb2YgJ2RhdGEgdCAqIGVsdCAqICdkYXRhICogJ2RhdGEgdCAqIGludCAqIGludFxuXG4gICAgICBsZXQgZW1wdHkgPSBFbXB0eVxuXG4gICAgICBsZXQgaGVpZ2h0ID0gZnVuY3Rpb25cbiAgICAgICAgfCBFbXB0eSAtPiAwXG4gICAgICAgIHwgTm9kZSAoXywgXywgXywgXywgaCwgXykgLT4gaFxuXG4gICAgICBsZXQgc2l6ZSA9IGZ1bmN0aW9uXG4gICAgICAgIHwgRW1wdHkgLT4gMFxuICAgICAgICB8IE5vZGUgKF8sIF8sIF8sIF8sIF8sIHMpIC0+IHNcblxuICAgICAgbGV0IG5vZGUgbGVmdCBrZXkwIGRhdGEgcmlnaHQgPVxuICAgICAgICBsZXQgaGwgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgICBsZXQgaHIgPSBoZWlnaHQgcmlnaHQgaW5cbiAgICAgICAgTm9kZVxuICAgICAgICAgICggbGVmdCxcbiAgICAgICAgICAgIGtleTAsXG4gICAgICAgICAgICBkYXRhLFxuICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAoMVxuICAgICAgICAgICAgK1xuICAgICAgICAgICAgaWYgaGwgPiBociB0aGVuXG4gICAgICAgICAgICAgIGhsXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGhyKSxcbiAgICAgICAgICAgIDEgKyBzaXplIGxlZnQgKyBzaXplIHJpZ2h0IClcbiAgICBlbmRcblxuICAgIHR5cGUgKydhIHQgPSAnYSBQcml2YXRlLnRcblxuICAgIGxldCBlbXB0eSA9IFByaXZhdGUuZW1wdHlcbiAgICBsZXQgaGVpZ2h0ID0gUHJpdmF0ZS5oZWlnaHRcbiAgICBsZXQgc2l6ZSA9IFByaXZhdGUuc2l6ZVxuICAgIGxldCBub2RlID0gUHJpdmF0ZS5ub2RlXG5cbiAgICB0eXBlIHNldCA9IFNldC50XG5cbiAgICBsZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHRydWVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT4gZmFsc2VcblxuICAgIGxldCByb290ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoXywgeCwgZCwgXywgXywgXykgLT4gU29tZSAoeCwgZClcblxuICAgIGxldCByZWMgbWF4X2tleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIGssIF8sIFByaXZhdGUuRW1wdHksIF8sIF8pIC0+IFNvbWUga1xuICAgICAgfCBQcml2YXRlLk5vZGUgKF8sIF8sIF8sIG0sIF8sIF8pIC0+IG1heF9rZXkgbVxuXG4gICAgbGV0IGJhbGFuY2UgbGVmdCBrZXkgZGF0YSByaWdodCA9XG4gICAgICBsZXQgaGVpZ2h0X2xlZnQgPSBoZWlnaHQgbGVmdCBpblxuICAgICAgbGV0IGhlaWdodF9yaWdodCA9IGhlaWdodCByaWdodCBpblxuICAgICAgaWYgaGVpZ2h0X2xlZnQgPiBoZWlnaHRfcmlnaHQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCBsZWZ0IHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IHJhaXNlIChEZWFkQ29kZUlzTm90RGVhZCBcIlNldE1hcCBsaW5lIDgyOFwiKVxuICAgICAgICAoKiBoZWlnaHRfbGVmdCA+IGhlaWdodF9yaWdodCArIDIgPj0gMiAqKVxuICAgICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDAsIGtleTAsIGRhdGEwLCByaWdodDAsIF8sIF8pIC0+XG4gICAgICAgICAgaWYgaGVpZ2h0IGxlZnQwID49IGhlaWdodCByaWdodDAgdGhlblxuICAgICAgICAgICAgbm9kZSBsZWZ0MCBrZXkwIGRhdGEwIChub2RlIHJpZ2h0MCBrZXkgZGF0YSByaWdodClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIHJpZ2h0MCB3aXRoXG4gICAgICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgODM1XCIpXG4gICAgICAgICAgICAoKiAwIDw9IGhlaWdodCBsZWZ0MCA8IGhlaWdodCByaWdodDAgKilcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgICAgICAgbm9kZVxuICAgICAgICAgICAgICAgIChub2RlIGxlZnQwIGtleTAgZGF0YTAgbGVmdDEpXG4gICAgICAgICAgICAgICAga2V5MSBkYXRhMVxuICAgICAgICAgICAgICAgIChub2RlIHJpZ2h0MSBrZXkgZGF0YSByaWdodClcbiAgICAgICAgICApXG4gICAgICApIGVsc2UgaWYgaGVpZ2h0X3JpZ2h0ID4gaGVpZ2h0X2xlZnQgKyAyIHRoZW4gKFxuICAgICAgICBtYXRjaCByaWdodCB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4NDRcIilcbiAgICAgICAgKCogaGVpZ2h0X3JpZ2h0ID4gaGVpZ2h0X2xlZnQgKyAyID49IDIgKilcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQwLCBrZXkwLCBkYXRhMCwgcmlnaHQwLCBfLCBfKSAtPlxuICAgICAgICAgIGlmIGhlaWdodCByaWdodDAgPj0gaGVpZ2h0IGxlZnQwIHRoZW5cbiAgICAgICAgICAgIG5vZGUgKG5vZGUgbGVmdCBrZXkgZGF0YSBsZWZ0MCkga2V5MCBkYXRhMCByaWdodDBcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIG1hdGNoIGxlZnQwIHdpdGhcbiAgICAgICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiByYWlzZSAoRGVhZENvZGVJc05vdERlYWQgXCJTZXRNYXAgbGluZSA4NTFcIilcbiAgICAgICAgICAgICgqIDAgPD0gaGVpZ2h0IHJpZ2h0MCA8IGhlaWdodCBsZWZ0MCAqKVxuICAgICAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgICAgICBub2RlIChub2RlIGxlZnQga2V5IGRhdGEgbGVmdDEpIGtleTEgZGF0YTFcbiAgICAgICAgICAgICAgICAobm9kZSByaWdodDEga2V5MCBkYXRhMCByaWdodDApXG4gICAgICAgICAgKVxuICAgICAgKSBlbHNlXG4gICAgICAgIG5vZGUgbGVmdCBrZXkgZGF0YSByaWdodFxuXG4gICAgbGV0IGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleSBkYXRhIHJpZ2h0ID1cbiAgICAgIHRyeSBlcnJvciwgYmFsYW5jZSBsZWZ0IGtleSBkYXRhIHJpZ2h0XG4gICAgICB3aXRoIERlYWRDb2RlSXNOb3REZWFkIGxvYyAtPlxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAoU29tZSAobG9jIF4gXCIgTWFwIGludmFyaWFudCBpcyBicm9rZW4sIGtlZXAgb24gd2l0aCB1bmJhbGFuY2VkIG1hcFwiKSlcbiAgICAgICAgICAgIChGYWlsdXJlIFwiU2V0X2FuZF9NYXAuTWFwLmJhbGFuY2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG5vZGUgbGVmdCBrZXkgZGF0YSByaWdodFxuXG4gICAgbGV0IHJlYyBhZGQga2V5IGRhdGEgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG5vZGUgZW1wdHkga2V5IGRhdGEgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhX21hcCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBub2RlIGxlZnQga2V5X21hcCBkYXRhIHJpZ2h0XG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgYmFsYW5jZSAoYWRkIGtleSBkYXRhIGxlZnQpIGtleV9tYXAgZGF0YV9tYXAgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJhbGFuY2UgbGVmdCBrZXlfbWFwIGRhdGFfbWFwIChhZGQga2V5IGRhdGEgcmlnaHQpXG5cbiAgICBsZXQgcmVjIGFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyB3YXJuIHBhcmFtZXRlciBlcnJvciBrZXkgZGF0YSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHRydWUsIG5vZGUgZW1wdHkga2V5IGRhdGEgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhX21hcCwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgZmFsc2UsIG5vZGUgbGVmdCBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhIGxlZnRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGxlZnQnIGtleV9tYXAgZGF0YV9tYXAgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICBhZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgcmlnaHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbWFwID1cbiAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGxlZnQga2V5X21hcCBkYXRhX21hcCByaWdodCdcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgKVxuXG4gICAgbGV0IGFkZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5IGRhdGEgbWFwID1cbiAgICAgIGxldCBlcnJvciwgYm9vbCwgbWFwID1cbiAgICAgICAgYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSBkYXRhIG1hcFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgbWFwXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGEsIGIsIF8sIF8gPSBfX1BPU19fIGluXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXIgZXJyb3IgXCJzZXRNYXAubWwgXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoYSBeIFwiIGxpbmU6IFwiIF4gc3RyaW5nX29mX2ludCBiXG4gICAgICAgICAgICAgIF4gXCI6IEF0dGVtcHQgdG8gYWRkIGFuIGFzc29jaWF0aW9uIG92ZXIgYSBmb3JtZXIgb25lIGluIGEgbWFwXCIpKVxuICAgICAgICAgICAgKEZhaWx1cmUgXCJTZXRfYW5kX01hcC5NYXAuYWRkXCIpLFxuICAgICAgICAgIG1hcCApXG4gICAgICApXG5cbiAgICBsZXQgcmVjIGV4dHJhY3RfbWluX2JpbmRpbmcgbWFwIGtleSBkYXRhIG1hcCcgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoa2V5LCBkYXRhKSwgbWFwJ1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbWluLCBsZWZ0JyA9IGV4dHJhY3RfbWluX2JpbmRpbmcgbGVmdDIga2V5MiBkYXRhMiByaWdodDIgaW5cbiAgICAgICAgbWluLCBiYWxhbmNlIGxlZnQnIGtleSBkYXRhIG1hcCdcblxuICAgIGxldCByZWMgZXh0cmFjdF9taW5fYmluZGluZ193aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcCBrZXkgZGF0YVxuICAgICAgICBtYXAnID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsICgoa2V5LCBkYXRhKSwgbWFwJylcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgLT5cbiAgICAgICAgbGV0IGVycm9yLCAobWluLCBsZWZ0JykgPVxuICAgICAgICAgIGV4dHJhY3RfbWluX2JpbmRpbmdfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MiBrZXkyIGRhdGEyXG4gICAgICAgICAgICByaWdodDJcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIChtaW4sIGJhbGFuY2UgbGVmdCcga2V5IGRhdGEgbWFwJylcblxuICAgIGxldCBtZXJnZSBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwMlxuICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPlxuICAgICAgICAobWF0Y2ggbWFwMiB3aXRoXG4gICAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBtYXAxXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgLT5cbiAgICAgICAgICBsZXQgKGtleTMsIGRhdGEzKSwgbGVmdCcgPVxuICAgICAgICAgICAgZXh0cmFjdF9taW5fYmluZGluZyBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgYmFsYW5jZSBtYXAxIGtleTMgZGF0YTMgbGVmdCcpXG5cbiAgICBsZXQgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gLT5cbiAgICAgICAgKG1hdGNoIG1hcDIgd2l0aFxuICAgICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIG1hcDFcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQyLCBrZXkyLCBkYXRhMiwgcmlnaHQyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgKChrZXkzLCBkYXRhMyksIGxlZnQnKSA9XG4gICAgICAgICAgICBleHRyYWN0X21pbl9iaW5kaW5nX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDIga2V5MiBkYXRhMlxuICAgICAgICAgICAgICByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIGtleTMgZGF0YTMgbGVmdCcpXG5cbiAgICBsZXQgcmVjIHJlbW92ZSBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBtZXJnZSBsZWZ0IHJpZ2h0XG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgYmFsYW5jZSAocmVtb3ZlIGtleSBsZWZ0KSBrZXlfbWFwIGRhdGEgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGJhbGFuY2UgbGVmdCBrZXlfbWFwIGRhdGEgKHJlbW92ZSBrZXkgcmlnaHQpXG5cbiAgICBsZXQgcmVjIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcCA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBmYWxzZSwgZW1wdHlcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBtYXAgPSBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQgcmlnaHQgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbWFwXG4gICAgICAgICkgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgYm9vbCwgbGVmdCcgPVxuICAgICAgICAgICAgcmVtb3ZlX3doaWxlX3Rlc3RpbmdfZXhpc3RlbmNlIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkgbGVmdFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgbGVmdCcgPT0gbGVmdCB0aGVuIChcbiAgICAgICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwiU2V0TWFwIGxpbmUgOTYxXCIpXG4gICAgICAgICAgICAgICAgICAoZmFpbHdpdGggXCJJbnZhcmlhbnQgaXMgYnJva2VuXCIpXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBib29sLCBtYXBcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBtYXAgPVxuICAgICAgICAgICAgICBiYWxhbmNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcga2V5X21hcCBkYXRhIHJpZ2h0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIHJpZ2h0JyA9XG4gICAgICAgICAgICByZW1vdmVfd2hpbGVfdGVzdGluZ19leGlzdGVuY2Ugd2FybiBwYXJhbWV0ZXJzIGVycm9yIGtleSByaWdodFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgcmlnaHQnID09IHJpZ2h0IHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCIgKFNvbWUgXCJTZXRNYXAgbGluZSA5NzhcIilcbiAgICAgICAgICAgICAgICAgIChmYWlsd2l0aCBcIkludmFyaWFudCBpcyBicm9rZW5cIilcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGJvb2wsIG1hcFxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIG1hcCA9XG4gICAgICAgICAgICAgIGJhbGFuY2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0IGtleV9tYXAgZGF0YSByaWdodCdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgYm9vbCwgbWFwXG4gICAgICAgICAgKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVtb3ZlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcCA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIG1hcCA9XG4gICAgICAgIHJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5IG1hcFxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBlcnJvciwgbWFwXG4gICAgICBlbHNlXG4gICAgICAgICggd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgIChTb21lXG4gICAgICAgICAgICAgICAoXCJTZXRNYXAgbGluZSA5OTRcIlxuICAgICAgICAgICAgICBeIFwiVHJ5IHRvIHJlbW92ZSBhbiBhc3NvY2lhdGlvbiB0aGF0IGlzIG5vdCBkZWZpbmVkIGluIE1hcC5yZW1vdmVcIlxuICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgIChmYWlsd2l0aFxuICAgICAgICAgICAgICAgXCJUcnkgdG8gcmVtb3ZlIGFuIGFzc29jaWF0aW9uIHRoYXQgaXMgbm90IGRlZmluZWQgaW4gTWFwLnJlbW92ZVwiKSxcbiAgICAgICAgICBtYXAgKVxuXG4gICAgbGV0IHJlYyBwb3AgeCA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgYXMgbSAtPiBOb25lLCBtXG4gICAgICB8IFByaXZhdGUuTm9kZSAobCwgdiwgZCwgciwgXywgXykgYXMgbSAtPlxuICAgICAgICBsZXQgYyA9IE9yZC5jb21wYXJlIHggdiBpblxuICAgICAgICBpZiBjID0gMCB0aGVuXG4gICAgICAgICAgU29tZSBkLCBtZXJnZSBsIHJcbiAgICAgICAgZWxzZSBpZiBjIDwgMCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBwb3AgeCBsIHdpdGhcbiAgICAgICAgICB8IChOb25lIGFzIG8pLCBfIC0+IG8sIG1cbiAgICAgICAgICB8IChTb21lIF8gYXMgbyksIHQgLT4gbywgYmFsYW5jZSB0IHYgZCByXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggcG9wIHggciB3aXRoXG4gICAgICAgICAgfCAoTm9uZSBhcyBvKSwgXyAtPiBvLCBtXG4gICAgICAgICAgfCAoU29tZSBfIGFzIG8pLCB0IC0+IG8sIGJhbGFuY2UgbCB2IGQgdFxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGpvaW4gbGVmdCBrZXkgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggYmFsYW5jZSBsZWZ0IGtleSB2YWx1ZSByaWdodCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgcmFpc2UgKERlYWRDb2RlSXNOb3REZWFkIFwiU2V0TWFwIGxpbmUgMTAxM1wiKSAoKiBCeSBjYXNlIGFuYWx5c2lzICopXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDIsIGtleTIsIGRhdGEyLCByaWdodDIsIF8sIF8pIGFzIG1hcDIgLT5cbiAgICAgICAgbGV0IGggPSBoZWlnaHQgbGVmdDIgLSBoZWlnaHQgcmlnaHQyIGluXG4gICAgICAgIGlmIGggPiAyIHx8IGggPCAtMiB0aGVuXG4gICAgICAgICAgam9pbiBsZWZ0MiBrZXkyIGRhdGEyIHJpZ2h0MlxuICAgICAgICBlbHNlXG4gICAgICAgICAgbWFwMlxuXG4gICAgbGV0IHJlYyBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCBrZXkgdmFsdWUgcmlnaHQgPVxuICAgICAgbWF0Y2ggYmFsYW5jZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQga2V5IHZhbHVlIHJpZ2h0IHdpdGhcbiAgICAgIHwgZXJyb3IsIFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgXCJzZXRNYXAubWxcIlxuICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgIFwiTWFwLmpvaW5fd2l0aF9sb2dzLCBsaW5lIDk4NiwgdGhlIG91dHB1dCBvZiBiYWxhbmNlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICBiZSBlbXB0eVwiKVxuICAgICAgICAgICAgKGZhaWx3aXRoIFwidGhlIG91dHB1dCBvZiBiYWxhbmNlIHNob3VsZCBub3QgYmUgZW1wdHlcIilcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGVtcHR5XG4gICAgICB8IGVycm9yLCAoUHJpdmF0ZS5Ob2RlIChsZWZ0Miwga2V5MiwgZGF0YTIsIHJpZ2h0MiwgXywgXykgYXMgbWFwMikgLT5cbiAgICAgICAgbGV0IGggPSBoZWlnaHQgbGVmdDIgLSBoZWlnaHQgcmlnaHQyIGluXG4gICAgICAgIGlmIGggPiAyIHx8IGggPCAtMiB0aGVuXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQyIGtleTIgZGF0YTIgcmlnaHQyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBlcnJvciwgbWFwMlxuXG4gICAgbGV0IHJlYyBzcGxpdCB2YWx1ZSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZW1wdHksIE5vbmUsIGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSB2YWx1ZSBrZXkxIGluXG4gICAgICAgIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgIGxlZnQxLCBTb21lIGRhdGExLCByaWdodDFcbiAgICAgICAgZWxzZSBpZiBjbXAgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlIGxlZnQxIGluXG4gICAgICAgICAgbGV0IHJpZ2h0MicgPSBqb2luIHJpZ2h0MiBrZXkxIGRhdGExIHJpZ2h0MSBpblxuICAgICAgICAgIGxlZnQyLCBkYXRhMiwgcmlnaHQyJ1xuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlIHJpZ2h0MSBpblxuICAgICAgICAgIGxldCBsZWZ0MicgPSBqb2luIGxlZnQxIGtleTEgZGF0YTEgbGVmdDIgaW5cbiAgICAgICAgICBsZWZ0MicsIGRhdGEyLCByaWdodDJcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIG1hcCA9XG4gICAgICBtYXRjaCBtYXAgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCAoZW1wdHksIE5vbmUsIGVtcHR5KVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUgdmFsdWUga2V5MSBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgKGxlZnQxLCBTb21lIGRhdGExLCByaWdodDEpXG4gICAgICAgIGVsc2UgaWYgY21wIDwgMCB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciB2YWx1ZSBsZWZ0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodDInID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDIga2V5MSBkYXRhMSByaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdDIsIGRhdGEyLCByaWdodDInKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIHJpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsZWZ0MicgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGtleTEgZGF0YTEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAobGVmdDInLCBkYXRhMiwgcmlnaHQyKVxuICAgICAgICApXG5cbiAgICBsZXQgcmVjIGRpZmYgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICBsZXQgb2xlZnQxLCBvbGVmdDIgPSBkaWZmIGxlZnQxIGxlZnQyIGluXG4gICAgICAgIGxldCBvcmlnaHQxLCBvcmlnaHQyID0gZGlmZiByaWdodDEgcmlnaHQyIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgU29tZSB4IHdoZW4geCA9IGRhdGExIC0+IG1lcmdlIG9sZWZ0MSBvcmlnaHQxLCBtZXJnZSBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIGpvaW4gb2xlZnQyIGtleTEgZGF0YTIgb3JpZ2h0MlxuICAgICAgICB8IE5vbmUgLT4gam9pbiBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxLCBtZXJnZSBvbGVmdDIgb3JpZ2h0MilcblxuICAgIGxldCByZWMgdW5pb24gbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1hcDJcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtYXAxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCBkYXRhMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIGRhdGEyLCByaWdodDIsIGhlaWdodDIsIF8pICkgLT5cbiAgICAgICAgaWYgaGVpZ2h0MSA+PSBoZWlnaHQyIHRoZW4gKFxuICAgICAgICAgIGxldCBsZWZ0Miwgb3BfZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IHZhbHVlMSBtYXAyIGluXG4gICAgICAgICAgam9pbiAodW5pb24gbGVmdDEgbGVmdDIpIHZhbHVlMVxuICAgICAgICAgICAgKG1hdGNoIG9wX2RhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgKHVuaW9uIHJpZ2h0MSByaWdodDIpXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxlZnQxLCBvcF9kYXRhMSwgcmlnaHQxID0gc3BsaXQgdmFsdWUyIG1hcDEgaW5cbiAgICAgICAgICBqb2luICh1bmlvbiBsZWZ0MSBsZWZ0MikgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEyXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gZDEpXG4gICAgICAgICAgICAodW5pb24gcmlnaHQxIHJpZ2h0MilcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyB1bmlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG1hcDEgbWFwMiA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgbWFwMlxuICAgICAgfCBfLCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBtYXAxXG4gICAgICB8ICggUHJpdmF0ZS5Ob2RlIChsZWZ0MSwgdmFsdWUxLCBkYXRhMSwgcmlnaHQxLCBoZWlnaHQxLCBfKSxcbiAgICAgICAgICBQcml2YXRlLk5vZGUgKGxlZnQyLCB2YWx1ZTIsIGRhdGEyLCByaWdodDIsIGhlaWdodDIsIF8pICkgLT5cbiAgICAgICAgaWYgaGVpZ2h0MSA+PSBoZWlnaHQyIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBvcF9kYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlMSBtYXAyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxlZnQnID1cbiAgICAgICAgICAgIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVuaW9uX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcmlnaHQxIHJpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQnIHZhbHVlMVxuICAgICAgICAgICAgKG1hdGNoIG9wX2RhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgcmlnaHQnXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCAobGVmdDEsIG9wX2RhdGExLCByaWdodDEpID1cbiAgICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUyIG1hcDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0MSBsZWZ0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgICAgdW5pb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciByaWdodDEgcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdCcgdmFsdWUxXG4gICAgICAgICAgICAobWF0Y2ggb3BfZGF0YTEgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGEyXG4gICAgICAgICAgICB8IFNvbWUgZDEgLT4gZDEpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgICAgKVxuXG4gICAgbGV0IHJlYyB1cGRhdGUgbWFwMSBtYXAyID1cbiAgICAgIGlmIG1hcDEgPT0gbWFwMiB0aGVuXG4gICAgICAgIG1hcDJcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IG1hcDJcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICAgIGpvaW4gKHVwZGF0ZSBsZWZ0MSBsZWZ0Mikga2V5MVxuICAgICAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBkYXRhMVxuICAgICAgICAgICAgfCBTb21lIGQyIC0+IGQyKVxuICAgICAgICAgICAgKHVwZGF0ZSByaWdodDEgcmlnaHQyKVxuICAgICAgKVxuXG4gICAgbGV0IHJlYyB1cGRhdGVfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgaWYgbWFwMSA9PSBtYXAyIHRoZW5cbiAgICAgICAgZXJyb3IsIG1hcDJcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBtYXAxIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCBtYXAyXG4gICAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0MSwga2V5MSwgZGF0YTEsIHJpZ2h0MSwgXywgXykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbGVmdCcgPVxuICAgICAgICAgICAgdXBkYXRlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgbGVmdDEgbGVmdDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgcmlnaHQnID1cbiAgICAgICAgICAgIHVwZGF0ZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXkxXG4gICAgICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGRhdGExXG4gICAgICAgICAgICB8IFNvbWUgZDIgLT4gZDIpXG4gICAgICAgICAgICByaWdodCdcbiAgICAgIClcblxuICAgIGxldCByZWMgZGlmZl9wcmVkIHByZWQgbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICBsZXQgb2xlZnQxLCBvbGVmdDIgPSBkaWZmX3ByZWQgcHJlZCBsZWZ0MSBsZWZ0MiBpblxuICAgICAgICBsZXQgb3JpZ2h0MSwgb3JpZ2h0MiA9IGRpZmZfcHJlZCBwcmVkIHJpZ2h0MSByaWdodDIgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiBwcmVkIHggZGF0YTEgLT4gbWVyZ2Ugb2xlZnQxIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGpvaW4gb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MSwgam9pbiBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgIHwgTm9uZSAtPiBqb2luIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDEsIG1lcmdlIG9sZWZ0MiBvcmlnaHQyKVxuXG4gICAgbGV0IHJlYyBtaW5fZWx0ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAoUHJpdmF0ZS5FbXB0eSwga2V5LCBkYXRhLCBfLCBfLCBfKSAtPiBTb21lIChrZXksIGRhdGEpXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwgXywgXywgXywgXywgXykgLT4gbWluX2VsdCBsZWZ0XG5cbiAgICBsZXQgcmVjIGZpbmRfb3B0aW9uIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gTm9uZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgU29tZSBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX29wdGlvbiBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9kZWZhdWx0IGQga2V5ID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiBkXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX2RlZmF1bHQgZCBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgZmluZF9vcHRpb25fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyIGVycm9yIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT5cbiAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBcInNldE1hcC5tbFwiIChTb21lIFwibGluZSA2NTlcIikgTm90X2ZvdW5kXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBOb25lXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5X21hcCwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBjbXAgPSBPcmQuY29tcGFyZSBrZXkga2V5X21hcCBpblxuICAgICAgICBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgICBlcnJvciwgU29tZSBkYXRhXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBmaW5kX29wdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3Iga2V5XG4gICAgICAgICAgICAoaWYgY21wIDwgMCB0aGVuXG4gICAgICAgICAgICAgICBsZWZ0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgcmlnaHQpXG5cbiAgICBsZXQgcmVjIGZpbmRfZGVmYXVsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZCBrZXkgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgXCJzZXRNYXAubWxcIiAoU29tZSBcImxpbmUgNjY5XCIpIE5vdF9mb3VuZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgZFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleV9tYXAsIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBsZXQgY21wID0gT3JkLmNvbXBhcmUga2V5IGtleV9tYXAgaW5cbiAgICAgICAgaWYgY21wID0gMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGRhdGFcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGZpbmRfZGVmYXVsdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZCBrZXlcbiAgICAgICAgICAgIChpZiBjbXAgPCAwIHRoZW5cbiAgICAgICAgICAgICAgIGxlZnRcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICByaWdodClcblxuICAgIGxldCByZWMgbWVtIGtleSA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXlfbWFwLCBfLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbGV0IGNtcCA9IE9yZC5jb21wYXJlIGtleSBrZXlfbWFwIGluXG4gICAgICAgIGNtcCA9PSAwXG4gICAgICAgIHx8XG4gICAgICAgIGlmIGNtcCA+IDAgdGhlblxuICAgICAgICAgIG1lbSBrZXkgcmlnaHRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIG1lbSBrZXkgbGVmdFxuXG4gICAgbGV0IHJlYyBmaWx0ZXJfb25lIHAgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IE5vbmVcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIHZhbHVlLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgaWYgcCBrZXkgdmFsdWUgdGhlblxuICAgICAgICAgIFNvbWUgKGtleSwgdmFsdWUpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIG1hdGNoIGZpbHRlcl9vbmUgcCBsZWZ0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmlsdGVyX29uZSBwIHJpZ2h0XG4gICAgICAgICAgfCBvdXQgLT4gb3V0XG4gICAgICAgIClcblxuICAgIGxldCByZWMgaXRlciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCAoKSA9IGl0ZXIgZiBsZWZ0IGluXG4gICAgICAgIGxldCAoKSA9IGYga2V5IGRhdGEgaW5cbiAgICAgICAgaXRlciBmIHJpZ2h0XG5cbiAgICBsZXQgcmVjIGZvbGQgZiBtYXAgdmFsdWUgPVxuICAgICAgbWF0Y2ggbWFwIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGZvbGQgZiByaWdodCAoZiBrZXkgZGF0YSAoZm9sZCBmIGxlZnQgdmFsdWUpKVxuXG4gICAgbGV0IHJlYyBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbWFwIHZhbHVlID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZmFsc2UsIFN0b3Auc3VjY2VzcyB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBvdXRwdXRsID0gZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIGxlZnQgdmFsdWUgaW5cbiAgICAgICAgbGV0IGludGVycnVwdGVkLCB2YWx1ZSA9IG91dHB1dGwgaW5cbiAgICAgICAgaWYgaW50ZXJydXB0ZWQgdGhlblxuICAgICAgICAgIG91dHB1dGxcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgICAgIGxldCB2YWxfb3B0ID1cbiAgICAgICAgICAgICAgICB0cnkgU29tZSAoZiBrZXkgZGF0YSB2YWx1ZSkgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCB2YWxfb3B0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IHRydWUsIFN0b3Auc3VjY2VzcyB2YWx1ZVxuICAgICAgICAgICAgICB8IFNvbWUgdiAtPlxuICAgICAgICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAgICAgICAoZnVuIHYgLT4gZm9sZF93aXRoX2ludGVycnVwdGlvbiBmIHJpZ2h0IHYpXG4gICAgICAgICAgICAgICAgICAoZnVuIHYgLT4gZmFsc2UsIFN0b3Auc3RvcCB2KVxuICAgICAgICAgICAgICAgICAgdilcbiAgICAgICAgICAgIChmdW4geCAtPiBmYWxzZSwgU3RvcC5zdG9wIHgpXG4gICAgICAgICAgICB2YWx1ZVxuXG4gICAgbGV0IGZvbGRfd2l0aF9pbnRlcnJ1cHRpb24gZiBtYXAgdmFsdWUgPVxuICAgICAgc25kIChmb2xkX3dpdGhfaW50ZXJydXB0aW9uIGYgbWFwIHZhbHVlKVxuXG4gICAgbGV0IHJlYyBtb25hZGljX2ZvbGQgcGFyYW0gZXJyIGYgbWFwIHZhbHVlID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyLCB2YWx1ZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnInLCB2YWx1ZScgPSBtb25hZGljX2ZvbGQgcGFyYW0gZXJyIGYgbGVmdCB2YWx1ZSBpblxuICAgICAgICBsZXQgZXJyJycsIHZhbHVlJycgPSBmIHBhcmFtIGVycicga2V5IGRhdGEgdmFsdWUnIGluXG4gICAgICAgIG1vbmFkaWNfZm9sZCBwYXJhbSBlcnInJyBmIHJpZ2h0IHZhbHVlJydcblxuICAgIGxldCByZWMgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIG1hcDEgbWFwMiByZXMgPVxuICAgICAgbWF0Y2ggbWFwMSwgbWFwMiB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHksIFByaXZhdGUuRW1wdHkgLT4gcmgsIHJlc1xuICAgICAgfCBQcml2YXRlLkVtcHR5LCBfIC0+IG1vbmFkaWNfZm9sZCBwYXJhbWV0ZXJzIHJoIGggbWFwMiByZXNcbiAgICAgIHwgXywgUHJpdmF0ZS5FbXB0eSAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyByaCBnIG1hcDEgcmVzXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwMiBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID0gbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIGxlZnQxIGxlZnQyIHJlcyBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGcgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMSByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoJycgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID0gbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgZyBoIGxlZnQxIGxlZnQyIHJlcyBpblxuICAgICAgICAgIGxldCByaCcnLCByZXMnJyA9IGYgcGFyYW1ldGVycyByaCcga2V5MSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoJycgZiBnIGggcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBtb25hZGljX2ZvbGQyX3NwYXJzZSBwYXJhbWV0ZXJzIHJoIGYgbWFwMSBtYXAyIHJlcyA9XG4gICAgICBsZXQgaWQgXyB4IF8gXyB5ID0geCwgeSBpblxuICAgICAgbW9uYWRpY19mb2xkMiBwYXJhbWV0ZXJzIHJoIGYgaWQgaWQgbWFwMSBtYXAyIHJlc1xuXG4gICAgbGV0IG1vbmFkaWNfaXRlcjJfc3BhcnNlIHBhcmFtZXRlcnMgcmggZiBtYXAxIG1hcDIgPVxuICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgIG1vbmFkaWNfZm9sZDJfc3BhcnNlIHBhcmFtZXRlcnMgcmhcbiAgICAgICAgICAoZnVuIHAgZSBrIGEgYiAoKSAtPiBmIHAgZSBrIGEgYiwgKCkpXG4gICAgICAgICAgbWFwMSBtYXAyICgpXG4gICAgICBpblxuICAgICAgZXJyb3JcblxuICAgIGxldCByZWMgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBzZXQgbWFwIHJlcyA9XG4gICAgICBtYXRjaCBzZXQgd2l0aFxuICAgICAgfCBTZXQuUHJpdmF0ZS5FbXB0eSAtPiByaCwgcmVzXG4gICAgICB8IFNldC5Qcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBsZWZ0MiwgZGF0YTIsIHJpZ2h0MiA9IHNwbGl0IGtleTEgbWFwIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCByaCcsIHJlcycgPVxuICAgICAgICAgICAgbW9uYWRpY19mb2xkX3Jlc3RyaWN0aW9uIHBhcmFtZXRlcnMgcmggZiBsZWZ0MSBsZWZ0MiByZXNcbiAgICAgICAgICBpblxuICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoJyBmIHJpZ2h0MSByaWdodDIgcmVzJ1xuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgcmgnLCByZXMnID1cbiAgICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmgnJywgcmVzJycgPSBmIHBhcmFtZXRlcnMgcmgnIGtleTEgZGF0YTIgcmVzJyBpblxuICAgICAgICAgIG1vbmFkaWNfZm9sZF9yZXN0cmljdGlvbiBwYXJhbWV0ZXJzIHJoJycgZiByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IHJlYyBtYXBpIGYgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVtcHR5XG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgbm9kZSAobWFwaSBmIGxlZnQpIGtleSAoZiBrZXkgZGF0YSkgKG1hcGkgZiByaWdodClcblxuICAgIGxldCBtYXAgZiBzID0gbWFwaSAoZnVuIF8geCAtPiBmIHgpIHNcblxuICAgIGxldCByZWMgbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgbWFwID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3JzLCBlbXB0eVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvcnMsIGxlZnQnID0gbWFwX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzIGYgbGVmdCBpblxuICAgICAgICBsZXQgZXJyb3JzLCBkYXRhJyA9IGYgcGFyYW1ldGVycyBlcnJvcnMgZGF0YSBpblxuICAgICAgICBsZXQgZXJyb3IsIHJpZ2h0JyA9IG1hcF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBmIHJpZ2h0IGluXG4gICAgICAgIGVycm9yLCBub2RlIGxlZnQnIGtleSBkYXRhJyByaWdodCdcblxuICAgIGxldCByZWMgbWFwMiBmIG1hcCBtYXAnID1cbiAgICAgIG1hdGNoIG1hcCB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gbWFwJ1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgbGVmdDIsIGRhdGEyLCByaWdodDIgPSBzcGxpdCBrZXkxIG1hcCcgaW5cbiAgICAgICAgam9pbiAobWFwMiBmIGxlZnQxIGxlZnQyKSBrZXkxXG4gICAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZGF0YTFcbiAgICAgICAgICB8IFNvbWUgZDIgLT4gZiBkYXRhMSBkMilcbiAgICAgICAgICAobWFwMiBmIHJpZ2h0MSByaWdodDIpXG5cbiAgICBsZXQgcmVjIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggbWFwMSBtYXAyID1cbiAgICAgIG1hdGNoIG1hcDEgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+XG4gICAgICAgIChtYXRjaCBtYXAyIHdpdGhcbiAgICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGVycm9ycywgZW1wdHlcbiAgICAgICAgfCBQcml2YXRlLk5vZGUgXyAtPiBtYXBfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZyBtYXAyKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSAtPlxuICAgICAgICBsZXQgZXJyb3JzLCAobGVmdDIsIGRhdGEyLCByaWdodDIpID1cbiAgICAgICAgICBzcGxpdF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9ycyBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9ycywgbGVmdCcgPVxuICAgICAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggbGVmdDEgbGVmdDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCByaWdodCcgPVxuICAgICAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnMgZiBnIGggcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID1cbiAgICAgICAgICBtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGYgcGFyYW1ldGVycyBlcnJvciBkYXRhMVxuICAgICAgICAgIHwgU29tZSBkMiAtPiBoIHBhcmFtZXRlcnMgZXJyb3JzIGRhdGExIGQyXG4gICAgICAgIGluXG4gICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBsZWZ0JyBrZXkxIGRhdGEnIHJpZ2h0J1xuXG4gICAgbGV0IG1hcDJ6X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JzID1cbiAgICAgIG1hcDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvcnNcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNDgsIGluY29tcGF0aWJsZSBtYXBzIGluIG1hcDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNTEsIGluY29tcGF0aWJsZSBtYXBzIGluIG1hcDJ6X3NhZmVcIikgTm90X2ZvdW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgYSlcblxuICAgIGxldCByZWMgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCBtYXAxIG1hcDIgcmVzID1cbiAgICAgIG1hdGNoIG1hcDEsIG1hcDIgd2l0aFxuICAgICAgfCBQcml2YXRlLkVtcHR5LCBQcml2YXRlLkVtcHR5IC0+IGVycm9yLCByZXNcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyAtPiBtb25hZGljX2ZvbGQgcGFyYW1ldGVycyBlcnJvciBnIG1hcDIgcmVzXG4gICAgICB8IF8sIFByaXZhdGUuRW1wdHkgLT4gbW9uYWRpY19mb2xkIHBhcmFtZXRlcnMgZXJyb3IgZiBtYXAxIHJlc1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBtYXAyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnJyA9IGYgcGFyYW1ldGVycyBlcnJvciBrZXkxIGRhdGExIHJlcycgaW5cbiAgICAgICAgICBmb2xkMl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgZyBoIHJpZ2h0MSByaWdodDIgcmVzJydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiBnIGggbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gaCBwYXJhbWV0ZXJzIGVycm9yIChrZXkxIDogZWx0KSBkYXRhMSBkYXRhMiByZXMnIGluXG4gICAgICAgICAgZm9sZDJfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGcgaCByaWdodDEgcmlnaHQyIHJlcycnKVxuXG4gICAgbGV0IGZvbGQyel93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yID1cbiAgICAgIGZvbGQyX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXJzIGVycm9yIF8gXyBhIC0+XG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVycyBlcnJvciBcInNldE1hcC5tbFwiXG4gICAgICAgICAgICAgIChTb21lIFwibGluZSAxMjQ4LCBpbmNvbXBhdGlibGUgbWFwcyBpbiBmb2xkMnpfc2FmZVwiKSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBhKVxuICAgICAgICAoZnVuIHBhcmFtZXRlcnMgZXJyb3IgXyBfIGEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXJzIGVycm9yIFwic2V0TWFwLm1sXCJcbiAgICAgICAgICAgICAgKFNvbWUgXCJsaW5lIDEyNTEsIGluY29tcGF0aWJsZSBtYXBzIGluIGZvbGQyel9zYWZlXCIpIE5vdF9mb3VuZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGEpXG5cbiAgICBsZXQgcmVjIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbWFwMSBtYXAyIHJlcyA9XG4gICAgICBtYXRjaCBtYXAxLCBtYXAyIHdpdGhcbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSwgXyB8IF8sIFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIHJlc1xuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCBkYXRhMSwgcmlnaHQxLCBfLCBfKSwgXyAtPlxuICAgICAgICBsZXQgZXJyb3IsIChsZWZ0MiwgZGF0YTIsIHJpZ2h0MikgPVxuICAgICAgICAgIHNwbGl0X3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Iga2V5MSBtYXAyXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBkYXRhMiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgZiByaWdodDEgcmlnaHQyIHJlcydcbiAgICAgICAgfCBTb21lIGRhdGEyIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnID1cbiAgICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBwYXJhbWV0ZXJzIGVycm9yIGtleTEgZGF0YTEgZGF0YTIgcmVzJyBpblxuICAgICAgICAgIGZvbGQyX3NwYXJzZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgcmlnaHQxIHJpZ2h0MiByZXMnJylcblxuICAgIGxldCBpdGVyMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBmIG1hcDEgbWFwMiA9XG4gICAgICBsZXQgZXJyb3IsIF8gPVxuICAgICAgICBmb2xkMl9zcGFyc2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyIGVyciBhIGIgYyBfIC0+IGYgcGFyIGVyciBhIGIgYywgKCkpXG4gICAgICAgICAgbWFwMSBtYXAyICgpXG4gICAgICBpblxuICAgICAgZXJyb3JcblxuICAgIGxldCByZWMgZm9yX2FsbCBwID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiB0cnVlXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdCwga2V5LCBkYXRhLCByaWdodCwgXywgXykgLT5cbiAgICAgICAgcCBrZXkgZGF0YSAmJiBmb3JfYWxsIHAgcmlnaHQgJiYgZm9yX2FsbCBwIGxlZnRcblxuICAgIHR5cGUgJ2EgZW51bWVyYXRpb24gPSBFbmQgfCBNb3JlIG9mIGVsdCAqICdhICogJ2EgdCAqICdhIGVudW1lcmF0aW9uXG5cbiAgICBsZXQgcmVjIGNvbnNfZW51bSBtIGUgPVxuICAgICAgbWF0Y2ggbSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZVxuICAgICAgfCBQcml2YXRlLk5vZGUgKGwsIHYsIGQsIHIsIF8sIF8pIC0+IGNvbnNfZW51bSBsIChNb3JlICh2LCBkLCByLCBlKSlcblxuICAgIGxldCBjb21wYXJlIGNtcCBtMSBtMiA9XG4gICAgICBsZXQgcmVjIGNvbXBhcmVfYXV4IGUxIGUyID1cbiAgICAgICAgbWF0Y2ggZTEsIGUyIHdpdGhcbiAgICAgICAgfCBFbmQsIEVuZCAtPiAwXG4gICAgICAgIHwgRW5kLCBfIC0+IC0xXG4gICAgICAgIHwgXywgRW5kIC0+IDFcbiAgICAgICAgfCBNb3JlICh2MSwgZDEsIHIxLCBlMSksIE1vcmUgKHYyLCBkMiwgcjIsIGUyKSAtPlxuICAgICAgICAgIGxldCBjID0gT3JkLmNvbXBhcmUgdjEgdjIgaW5cbiAgICAgICAgICBpZiBjIDw+IDAgdGhlblxuICAgICAgICAgICAgY1xuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbGV0IGMgPSBjbXAgZDEgZDIgaW5cbiAgICAgICAgICAgIGlmIGMgPD4gMCB0aGVuXG4gICAgICAgICAgICAgIGNcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSByMSBlMSkgKGNvbnNfZW51bSByMiBlMilcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgY29tcGFyZV9hdXggKGNvbnNfZW51bSBtMSBFbmQpIChjb25zX2VudW0gbTIgRW5kKVxuXG4gICAgbGV0IGVxdWFsIGNtcCBtMSBtMiA9XG4gICAgICBjb21wYXJlXG4gICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgaWYgY21wIHggeSB0aGVuXG4gICAgICAgICAgICAwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgMSlcbiAgICAgICAgbTEgbTJcbiAgICAgID09IDBcblxuICAgIGxldCByZWMgYmluZGluZ3NfYXV4IGFjY3UgPSBmdW5jdGlvblxuICAgICAgfCBQcml2YXRlLkVtcHR5IC0+IGFjY3VcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsLCB2LCBkLCByLCBfLCBfKSAtPlxuICAgICAgICBiaW5kaW5nc19hdXggKCh2LCBkKSA6OiBiaW5kaW5nc19hdXggYWNjdSByKSBsXG5cbiAgICBsZXQgYmluZGluZ3MgcyA9IGJpbmRpbmdzX2F1eCBbXSBzXG5cbiAgICBsZXQgcmVjIGF1eF9wcmludCBwciBmID0gZnVuY3Rpb25cbiAgICAgIHwgUHJpdmF0ZS5FbXB0eSAtPiAoKVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgZGF0YSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEtPkAsJWFAXVwiIE9yZC5wcmludCBrZXkgcHIgZGF0YVxuICAgICAgfCBQcml2YXRlLk5vZGUgKFByaXZhdGUuRW1wdHksIGtleSwgZGF0YSwgcmlnaHQsIF8sIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhLT4lYUBdLEAgJWFcIiBPcmQucHJpbnQga2V5IHByIGRhdGEgKGF1eF9wcmludCBwcilcbiAgICAgICAgICByaWdodFxuICAgICAgfCBQcml2YXRlLk5vZGUgKGxlZnQsIGtleSwgZGF0YSwgUHJpdmF0ZS5FbXB0eSwgXywgXykgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLEAgQFslYS0+JWFAXVwiIChhdXhfcHJpbnQgcHIpIGxlZnQgT3JkLnByaW50IGtleSBwclxuICAgICAgICAgIGRhdGFcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIChsZWZ0LCBrZXksIGRhdGEsIHJpZ2h0LCBfLCBfKSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEsQCBAWyVhLT4lYUBdLEAgJWFcIiAoYXV4X3ByaW50IHByKSBsZWZ0IE9yZC5wcmludFxuICAgICAgICAgIGtleSBwciBkYXRhIChhdXhfcHJpbnQgcHIpIHJpZ2h0XG5cbiAgICBsZXQgcHJpbnQgcHIgZiA9IGZ1bmN0aW9uXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiXFx4RTJcXHg4OFxceDg1XCJcbiAgICAgIHwgUHJpdmF0ZS5Ob2RlIF8gYXMgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFt7JWF9QF1cIiAoYXV4X3ByaW50IHByKSBtXG5cbiAgICBsZXQgcmVjIGRpZmZfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGVmdDEsIG9sZWZ0MiA9XG4gICAgICAgICAgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGxlZnQxIGxlZnQyXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb3JpZ2h0MSwgb3JpZ2h0MiA9XG4gICAgICAgICAgZGlmZl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHJpZ2h0MSByaWdodDJcbiAgICAgICAgaW5cbiAgICAgICAgKG1hdGNoIGRhdGEyIHdpdGhcbiAgICAgICAgfCBTb21lIHggd2hlbiB4ID0gZGF0YTEgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIG1lcmdlX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMlxuICAgICAgICB8IFNvbWUgZGF0YTIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8xID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEga2V5MSBkYXRhMSBvcmlnaHQxXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIG8yID1cbiAgICAgICAgICAgIGpvaW5fd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIga2V5MSBkYXRhMiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDIgb3JpZ2h0MlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIG8xLCBvMilcblxuICAgIGxldCByZWMgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCBtYXAxIG1hcDIgPVxuICAgICAgbWF0Y2ggbWFwMSB3aXRoXG4gICAgICB8IFByaXZhdGUuRW1wdHkgLT4gZXJyb3IsIGVtcHR5LCBtYXAyXG4gICAgICB8IFByaXZhdGUuTm9kZSAobGVmdDEsIGtleTEsIGRhdGExLCByaWdodDEsIF8sIF8pIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcDJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBvbGVmdDEsIG9sZWZ0MiA9XG4gICAgICAgICAgZGlmZl9wcmVkX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3IgcHJlZCBsZWZ0MSBsZWZ0MlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG9yaWdodDEsIG9yaWdodDIgPVxuICAgICAgICAgIGRpZmZfcHJlZF93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIHByZWQgcmlnaHQxIHJpZ2h0MlxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IFNvbWUgeCB3aGVuIHByZWQgeCBkYXRhMSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgbWVyZ2Vfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBvbGVmdDEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbzEgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MSBrZXkxIGRhdGExIG9yaWdodDFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbzIgPVxuICAgICAgICAgICAgam9pbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBrZXkxIGRhdGEyIG9yaWdodDJcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBvMSwgbzJcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvMSA9XG4gICAgICAgICAgICBqb2luX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3Igb2xlZnQxIGtleTEgZGF0YTEgb3JpZ2h0MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBvMiA9XG4gICAgICAgICAgICBtZXJnZV93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIG9sZWZ0MiBvcmlnaHQyXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbzEsIG8yKVxuXG4gICAgbGV0IHJlYyBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICBlcnJvciBmIGcgc2V0IG1hcCByZXMgPVxuICAgICAgbWF0Y2ggc2V0LCBtYXAgd2l0aFxuICAgICAgfCBTZXQuUHJpdmF0ZS5FbXB0eSwgXyAtPiBlcnJvciwgcmVzXG4gICAgICB8IFNldC5Qcml2YXRlLk5vZGUgKGxlZnQxLCBrZXkxLCByaWdodDEsIF8sIF8pLCBfIC0+XG4gICAgICAgIGxldCBlcnJvciwgKGxlZnQyLCBkYXRhMiwgcmlnaHQyKSA9XG4gICAgICAgICAgc3BsaXRfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVycyBlcnJvciBrZXkxIG1hcFxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggZGF0YTIgd2l0aFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycgPVxuICAgICAgICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgZXJyb3IgZiBnIGxlZnQxIGxlZnQyIHJlc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCByZXMnJyA9IGcga2V5MSAoZXJyb3IsIHJlcycpIGluXG4gICAgICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnNcbiAgICAgICAgICAgIGVycm9yIGYgZyByaWdodDEgcmlnaHQyIHJlcycnXG4gICAgICAgIHwgU29tZSBkYXRhMiAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcmVzJyA9XG4gICAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgICBlcnJvciBmIGcgbGVmdDEgbGVmdDIgcmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHJlcycnID0gZiBrZXkxIGRhdGEyIChlcnJvciwgcmVzJykgaW5cbiAgICAgICAgICBmb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbWlzc2luZ19hc3NvY2lhdGlvbnNfd2l0aF9sb2dzIHdhcm4gcGFyYW1ldGVyc1xuICAgICAgICAgICAgZXJyb3IgZiBnIHJpZ2h0MSByaWdodDIgcmVzJycpXG5cbiAgICBsZXQgZm9sZF9yZXN0cmljdGlvbl93aXRoX2xvZ3Mgd2FybiBwYXJhbWV0ZXJzIGVycm9yIGYgc2V0IG1hcCByZXMgPVxuICAgICAgZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyB3YXJuIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgZlxuICAgICAgICAoZnVuIF8geCAtPiB4KVxuICAgICAgICBzZXQgbWFwIHJlc1xuXG4gICAgbGV0IHRvX2pzb24gPyhsYWJfa2V5ID0gXCJrZXlcIikgPyhsYWJfdmFsdWUgPSBcInZhbHVlXCIpID1cbiAgICAgIEpzb25VdGlsLm9mX21hcCB+bGFiX2tleSB+bGFiX3ZhbHVlIH5mb2xkXG5cbiAgICBsZXQgb2ZfanNvbiA/KGxhYl9rZXkgPSBcImtleVwiKSA/KGxhYl92YWx1ZSA9IFwidmFsdWVcIilcbiAgICAgICAgPyhlcnJvcl9tc2cgPSBKc29uVXRpbC5idWlsZF9tc2cgXCJtYXBcIikgPVxuICAgICAgSnNvblV0aWwudG9fbWFwIH5sYWJfa2V5IH5sYWJfdmFsdWUgfmVycm9yX21zZyB+YWRkIH5lbXB0eVxuICBlbmRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uID0gc2lnXG4gIHR5cGUgZWx0X2FcbiAgdHlwZSBlbHRfYlxuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSBzZXRfYVxuICB0eXBlIHNldF9iXG5cbiAgdmFsIHByb2pfbWFwIDpcbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+ICdiIC0+ICgnYiAtPiAnYSAtPiAnYikgLT4gJ2EgbWFwX2EgLT4gJ2IgbWFwX2JcblxuICB2YWwgcHJval9tYXBfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2IpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+ICdiIC0+ICdhIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2JcblxuICB2YWwgcHJval9zZXQgOiAoZWx0X2EgLT4gZWx0X2IpIC0+IHNldF9hIC0+IHNldF9iXG5cbiAgdmFsIHByb2pfc2V0X21vbmFkaWMgOlxuICAgICdwYXJhbWV0ZXJzIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyIC0+XG4gICAgKCdwYXJhbWV0ZXJzIC0+ICdtZXRob2RfaGFuZGxlciAtPiBlbHRfYSAtPiAnbWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBzZXRfYSAtPlxuICAgICdtZXRob2RfaGFuZGxlciAqIHNldF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXQgOiAoZWx0X2EgLT4gZWx0X2IpIC0+IHNldF9hIC0+IHNldF9hIG1hcF9iXG5cbiAgdmFsIHBhcnRpdGlvbl9zZXRfbW9uYWRpYyA6XG4gICAgJ3BhcmFtZXRlcnMgLT5cbiAgICAnbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+IGVsdF9hIC0+ICdtZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIHNldF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogc2V0X2EgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvaiAoQSA6IFMpIChCIDogUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIFNBID0gQS5TZXRcbiAgbW9kdWxlIFNCID0gQi5TZXRcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBzZXRfYSA9IFNBLnRcbiAgdHlwZSBzZXRfYiA9IFNCLnRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcblxuICBsZXQgcHJval9tYXAgZiBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYlxuICAgICAgICAgIChtZXJnZSAoTUIuZmluZF9kZWZhdWx0IGlkZW50aXR5X2VsdCBrZXlfYiBtYXBfYikgZGF0YV9hKVxuICAgICAgICAgIG1hcF9iKVxuICAgICAgbWFwIE1CLmVtcHR5XG5cbiAgbGV0IHByb2pfbWFwX21vbmFkaWMgcGFyYW1ldGVyIGhhbmRsZXIgZiBpZGVudGl0eV9lbHQgbW9uYWRpY19tZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQgaGFuZGxlciwgZGF0YScgPVxuICAgICAgICAgIG1vbmFkaWNfbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgIChNQi5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9iIG1hcF9iKVxuICAgICAgICAgICAgZGF0YV9hXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZXIsIE1CLmFkZCBrZXlfYiBkYXRhJyBtYXBfYilcbiAgICAgIG1hcCAoaGFuZGxlciwgTUIuZW1wdHkpXG5cbiAgbGV0IHByb2pfc2V0IGYgc2V0X2EgPSBTQS5mb2xkIChmdW4ga2V5X2EgLT4gU0IuYWRkIChmIGtleV9hKSkgc2V0X2EgU0IuZW1wdHlcblxuICBsZXQgcHJval9zZXRfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChoYW5kbGVyLCBzZXRfYikgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGtleV9iID0gZiBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYSBpblxuICAgICAgICBoYW5kbGVyLCBTQi5hZGQga2V5X2Igc2V0X2IpXG4gICAgICBzZXRfYSAoaGFuZGxlciwgU0IuZW1wdHkpXG5cbiAgbGV0IHBhcnRpdGlvbl9zZXQgZiBzZXRfYSA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBtYXBfYiAtPlxuICAgICAgICBsZXQga2V5X2IgPSBmIGtleV9hIGluXG4gICAgICAgIE1CLmFkZCBrZXlfYiAoU0EuYWRkIGtleV9hIChNQi5maW5kX2RlZmF1bHQgU0EuZW1wdHkga2V5X2IgbWFwX2IpKSBtYXBfYilcbiAgICAgIHNldF9hIE1CLmVtcHR5XG5cbiAgbGV0IHBhcnRpdGlvbl9zZXRfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBmIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChoYW5kbGVyLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGtleV9iID0gZiBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYSBpblxuICAgICAgICAoIGhhbmRsZXIsXG4gICAgICAgICAgTUIuYWRkIGtleV9iXG4gICAgICAgICAgICAoU0EuYWRkIGtleV9hIChNQi5maW5kX2RlZmF1bHQgU0EuZW1wdHkga2V5X2IgbWFwX2IpKVxuICAgICAgICAgICAgbWFwX2IgKSlcbiAgICAgIHNldF9hIChoYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuKCogdG9kbzogYWRkIHRoZSBmb2xsb3dpbmcgIHRlc3QgdG8gdGhlIHNhbml0eSB0ZXN0cyAqKVxuXG4oKlxuKCogZm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIGNvZGU6ICopXG5cbm1vZHVsZSBJbnRNYXAgPSBNYWtlKHN0cnVjdCB0eXBlIHQgPSBpbnQgbGV0IGNvbXBhcmUgPSBjb21wYXJlIGVuZClcbm1vZHVsZSBQID0gUHJvaihJbnRNYXApKEludE1hcClcblxuXG5sZXQgZiA9IExpc3QuZm9sZF9sZWZ0XG4oZnVuIG1hcCAoYSxiKSAtPiBJbnRNYXAuTWFwLmFkZCBhIGIgbWFwKVxuSW50TWFwLk1hcC5lbXB0eVxuWzEsWzI7M107MixbMzs0XTs1LFs2OzddOzgsWzEyOzEzXV1cblxuKCogYmFkIGltcGxlbWVudGF0aW9uIChxdWFkcmF0aWMgdGltZSBjb21wbGV4aXR5KSAqKVxubGV0IGcgPSBQLnByb2ogKGZ1biBpIC0+IGkgbW9kIDIpIFtdIChMaXN0LmFwcGVuZCkgZlxuXG4oKiBnb29kIGltcGxlbWVudGF0aW9uIChsaW5lYXIgdGltZSBjb21wbGV4aXR5KSopXG5sZXQgZycgPSBJbnRNYXAuTWFwLm1hcCBMaXN0LnJldiAoUC5wcm9qIChmdW4gaSAtPiBpIG1vZCAyKSBbXSAoZnVuIHggeSAtPiBMaXN0LmFwcGVuZCAoTGlzdC5yZXYgeSkgeCkgZilcblxuXG5sZXQgZHVtcCAoczpzdHJpbmcpIGYgPVxuICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVzOiBcXG5cIiBzIGluXG4gIGxldCBfID0gSW50TWFwLk1hcC5pdGVyXG4oZnVuIGEgbCAtPlxubGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCIgICVpOlwiIGEgaW5cbmxldCBfID0gTGlzdC5pdGVyIChQcmludGYuZnByaW50ZiBzdGRlcnIgXCIlaSxcIikgbCBpblxubGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJcXG5cIiBpbiAoKSlcbmYgaW5cbiAgKClcbmxldCBfID0gZHVtcCBcImZcIiBmXG5sZXQgXyA9IGR1bXAgXCJnXCIgZ1xubGV0IF8gPSBkdW1wIFwiZydcIiBnJ1xuXG4oKiBzaG91bGQgZHVtcDogKilcbigqXG5cbmY6XG4gIDE6MiwzLFxuICAyOjMsNCxcbiAgNTo2LDcsXG4gIDg6MTIsMTMsXG5nOlxuICAwOjMsNCwxMiwxMyxcbiAgMToyLDMsNiw3LFxuICopXG4gKilcblxubW9kdWxlIHR5cGUgUHJvamVjdGlvbjIgPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgZWx0X2NcbiAgdHlwZSAnYSBtYXBfYVxuICB0eXBlICdhIG1hcF9iXG4gIHR5cGUgJ2EgbWFwX2NcblxuICB2YWwgcHJvajIgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ2IgLT4gJ2EgLT4gJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICAnYiBtYXBfYyBtYXBfYlxuXG4gIHZhbCBwcm9qMl9tb25hZGljIDpcbiAgICAncGFyYW1ldGVycyAtPlxuICAgICdtZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoJ3BhcmFtZXRlcnMgLT4gJ21ldGhvZF9oYW5kbGVyIC0+ICdiIC0+ICdhIC0+ICdtZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgJ21ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2MgbWFwX2JcbmVuZFxuXG5tb2R1bGUgUHJvajIgKEEgOiBTKSAoQiA6IFMpIChDIDogUykgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIE1DID0gQy5NYXBcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBlbHRfYyA9IE1DLmVsdFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuICB0eXBlICdhIG1hcF9jID0gJ2EgTUMudFxuXG4gIGxldCBwcm9qMiBmIGcgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgbWFwX2IgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBsZXQga2V5X2MgPSBnIGtleV9hIGluXG4gICAgICAgIGxldCBzdWJtYXAgPSBNQi5maW5kX2RlZmF1bHQgTUMuZW1wdHkga2V5X2IgbWFwX2IgaW5cbiAgICAgICAgbGV0IHN1Ym1hcCA9XG4gICAgICAgICAgTUMuYWRkIGtleV9jXG4gICAgICAgICAgICAobWVyZ2UgKE1DLmZpbmRfZGVmYXVsdCBpZGVudGl0eV9lbHQga2V5X2Mgc3VibWFwKSBkYXRhX2EpXG4gICAgICAgICAgICBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgTUIuYWRkIGtleV9iIHN1Ym1hcCBtYXBfYilcbiAgICAgIG1hcCBNQi5lbXB0eVxuXG4gIGxldCBwcm9qMl9tb25hZGljIHBhcmFtZXRlciBoYW5kbGVyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUIuZmluZF9kZWZhdWx0IE1DLmVtcHR5IGtleV9iIG1hcF9iIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBkYXRhJyA9XG4gICAgICAgICAgbWVyZ2UgcGFyYW1ldGVyIGhhbmRsZXJcbiAgICAgICAgICAgIChNQy5maW5kX2RlZmF1bHQgaWRlbnRpdHlfZWx0IGtleV9jIHN1Ym1hcClcbiAgICAgICAgICAgIGRhdGFfYVxuICAgICAgICBpblxuICAgICAgICBsZXQgc3VibWFwID0gTUMuYWRkIGtleV9jIGRhdGEnIHN1Ym1hcCBpblxuICAgICAgICBoYW5kbGVyLCBNQi5hZGQga2V5X2Igc3VibWFwIG1hcF9iKVxuICAgICAgbWFwIChoYW5kbGVyLCBNQi5lbXB0eSlcbmVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGludF9jb21wYXJlICh4IDogaW50KSB5ID0gU3RkbGliLmNvbXBhcmUgeCB5XG5cbmxldCBpbnRfcGFpcl9jb21wYXJlIChwLCBxKSAocCcsIHEnKSA9XG4gIGxldCBvID0gaW50X2NvbXBhcmUgcCBwJyBpblxuICBpZiBvID0gMCB0aGVuXG4gICAgaW50X2NvbXBhcmUgcSBxJ1xuICBlbHNlXG4gICAgb1xuXG5sZXQgc3RyaW5nX3BhaXJfY29tcGFyZSAocCwgcSkgKHAnLCBxJykgPVxuICBsZXQgbyA9IFN0cmluZy5jb21wYXJlIHAgcCcgaW5cbiAgaWYgbyA9IDAgdGhlblxuICAgIFN0cmluZy5jb21wYXJlIHEgcSdcbiAgZWxzZVxuICAgIG9cblxubGV0IHBhaXJfZXF1YWwgZXFhIGVxYiAoeGEsIHhiKSAoeWEsIHliKSA9IGVxYSB4YSB5YSAmJiBlcWIgeGIgeWJcblxubW9kdWxlIFN0cmluZ1NldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBTdHJpbmcuY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG5lbmQpXG5cbm1vZHVsZSBTdHJpbmdTZXQgPSBTdHJpbmdTZXRNYXAuU2V0XG5tb2R1bGUgU3RyaW5nTWFwID0gU3RyaW5nU2V0TWFwLk1hcFxuXG5tb2R1bGUgU3RyaW5nMlNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogc3RyaW5nXG5cbiAgbGV0IGNvbXBhcmUgPSBzdHJpbmdfcGFpcl9jb21wYXJlXG4gIGxldCBwcmludCBmIChhLCBiKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIoJXMsICVzKVwiIGEgYlxuZW5kKVxuXG5tb2R1bGUgU3RyaW5nMk1hcCA9IFN0cmluZzJTZXRNYXAuTWFwXG5cbm1vZHVsZSBJbnRTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGludFxuXG4gIGxldCBjb21wYXJlID0gaW50X2NvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kKVxuXG5tb2R1bGUgSW50U2V0ID0gSW50U2V0TWFwLlNldFxubW9kdWxlIEludE1hcCA9IEludFNldE1hcC5NYXBcblxubW9kdWxlIEludDJTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGludCAqIGludFxuXG4gIGxldCBjb21wYXJlID0gaW50X3BhaXJfY29tcGFyZVxuICBsZXQgcHJpbnQgZiAoYSwgYikgPSBGb3JtYXQuZnByaW50ZiBmIFwiKCVpLCAlaSlcIiBhIGJcbmVuZClcblxubW9kdWxlIEludDJTZXQgPSBJbnQyU2V0TWFwLlNldFxubW9kdWxlIEludDJNYXAgPSBJbnQyU2V0TWFwLk1hcFxuXG5tb2R1bGUgQ2hhclNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gY2hhclxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBGb3JtYXQucHBfcHJpbnRfY2hhclxuZW5kKVxuXG5tb2R1bGUgQ2hhclNldCA9IENoYXJTZXRNYXAuU2V0XG5tb2R1bGUgQ2hhck1hcCA9IENoYXJTZXRNYXAuTWFwXG5tb2R1bGUgRHluQXJyYXkgPSBEeW5hbWljQXJyYXkuRHluQXJyYXkgKExhcmdlQXJyYXkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdW5zb21lIGRlZmF1bHQgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gZGVmYXVsdFxuICB8IFNvbWUgYSAtPiBhXG5cbmxldCB1bnNvbWVfb3JfcmFpc2VcbiAgICA/KGV4Y2VwID0gSW52YWxpZF9hcmd1bWVudCBcInVuc29tZV9vcl9yYWlzZSB3YXMgcGFzc2VkIGEgTm9uZVwiKSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiByYWlzZSBleGNlcFxuICB8IFNvbWUgYSAtPiBhXG5cbmxldCBtYXAgZiA9IGZ1bmN0aW9uXG4gIHwgU29tZSB4IC0+IFNvbWUgKGYgeClcbiAgfCBOb25lIC0+IE5vbmVcblxubGV0IGJpbmQgZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBvIC0+IGYgb1xuXG5sZXQgZm9sZCBmIHggPSBmdW5jdGlvblxuICB8IE5vbmUgLT4geFxuICB8IFNvbWUgeSAtPiBmIHggeVxuXG5sZXQgZXF1YWwgZXEgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBfLCBOb25lIHwgTm9uZSwgU29tZSBfIC0+IGZhbHNlXG4gIHwgU29tZSB4LCBTb21lIHkgLT4gZXEgeCB5XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHBvc2l0aW9uID0geyBjaHI6IGludDsgbGluZTogaW50IH1cbnR5cGUgdCA9IHsgZmlsZTogc3RyaW5nOyBmcm9tX3Bvc2l0aW9uOiBwb3NpdGlvbjsgdG9fcG9zaXRpb246IHBvc2l0aW9uIH1cbnR5cGUgJ2EgYW5ub3RlZCA9ICdhICogdFxuXG5sZXQgdiAodiwgXykgPSB2XG5sZXQgZ2V0X2Fubm90IChfLCBhbm5vdCkgPSBhbm5vdFxubGV0IGNvcHlfYW5ub3QgKF8sIGxvYykgYSA9IGEsIGxvY1xubGV0IG1hcF9hbm5vdCBmIChhLCBsb2MpID0gZiBhLCBsb2NcblxubGV0IG9mX3BvcyBzdGFydF9sb2NhdGlvbiBlbmRfbG9jYXRpb24gPVxuICBsZXQgKCkgPVxuICAgIGFzc2VydCAoc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19mbmFtZSA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2ZuYW1lKVxuICBpblxuICB7XG4gICAgZmlsZSA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfZm5hbWU7XG4gICAgZnJvbV9wb3NpdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGNociA9IHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfY251bSAtIHN0YXJ0X2xvY2F0aW9uLkxleGluZy5wb3NfYm9sO1xuICAgICAgICBsaW5lID0gc3RhcnRfbG9jYXRpb24uTGV4aW5nLnBvc19sbnVtO1xuICAgICAgfTtcbiAgICB0b19wb3NpdGlvbiA9XG4gICAgICB7XG4gICAgICAgIGNociA9IGVuZF9sb2NhdGlvbi5MZXhpbmcucG9zX2NudW0gLSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19ib2w7XG4gICAgICAgIGxpbmUgPSBlbmRfbG9jYXRpb24uTGV4aW5nLnBvc19sbnVtO1xuICAgICAgfTtcbiAgfVxuXG5sZXQgZHVtbXlfcG9zaXRpb24gPVxuICB7XG4gICAgY2hyID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2NudW0gLSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfYm9sO1xuICAgIGxpbmUgPSBMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfbG51bTtcbiAgfVxuXG5sZXQgZHVtbXkgPVxuICB7XG4gICAgZmlsZSA9IExleGluZy5kdW1teV9wb3MuTGV4aW5nLnBvc19mbmFtZTtcbiAgICBmcm9tX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb247XG4gICAgdG9fcG9zaXRpb24gPSBkdW1teV9wb3NpdGlvbjtcbiAgfVxuXG5sZXQgYW5ub3Rfd2l0aF9kdW1teSB4ID0geCwgZHVtbXlcblxubGV0IGlzX2R1bW15IGxvYyA9XG4gIGxvYy5maWxlID0gTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lXG4gICYmIGxvYy5mcm9tX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb25cbiAgJiYgbG9jLnRvX3Bvc2l0aW9uID0gZHVtbXlfcG9zaXRpb25cblxubGV0IGlzX2Fubm90ZWRfd2l0aF9kdW1teSAoXywgbG9jKSA9IGlzX2R1bW15IGxvY1xuXG5sZXQgcHJpbnQgZiBsb2MgPVxuICBsZXQgcHJfZiBmID1cbiAgICBpZiBsb2MuZmlsZSA8PiBcIlwiIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkZpbGUgXFxcIiVzXFxcIiwgXCIgbG9jLmZpbGVcbiAgaW5cbiAgbGV0IHByX2wgZiA9XG4gICAgaWYgbG9jLmZyb21fcG9zaXRpb24ubGluZSA9IGxvYy50b19wb3NpdGlvbi5saW5lIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJsaW5lICVpXCIgbG9jLmZyb21fcG9zaXRpb24ubGluZVxuICAgIGVsc2VcbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJsaW5lcyAlaS0laVwiIGxvYy5mcm9tX3Bvc2l0aW9uLmxpbmUgbG9jLnRvX3Bvc2l0aW9uLmxpbmVcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiV0JXQsIGNoYXJhY3RlcnMgJWktJWk6XCIgcHJfZiBwcl9sIGxvYy5mcm9tX3Bvc2l0aW9uLmNoclxuICAgIGxvYy50b19wb3NpdGlvbi5jaHJcblxubGV0IHRvX3N0cmluZyBsb2MgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludCBsb2NcbmxldCBwcmludF9hbm5vdGVkIHByIGYgKHgsIGwpID0gRm9ybWF0LmZwcmludGYgZiBcIiVhQCAlYVwiIHByaW50IGwgcHIgeFxuXG5sZXQgcmVhZF9wb3NpdGlvbiBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBJbnQgbGluZSk7IChcImNoclwiLCBgSW50IGNocikgXVxuICB8IGBBc3NvYyBbIChcImNoclwiLCBgSW50IGNocik7IChcImxpbmVcIiwgYEludCBsaW5lKSBdIC0+XG4gICAgeyBsaW5lOyBjaHIgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwb3NpdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3Bvc2l0aW9uIG9iIHsgbGluZTsgY2hyIH0gPVxuICBZb2pzb24ud3JpdGVfYXNzb2Mgb2IgWyBcImxpbmVcIiwgYEludCBsaW5lOyBcImNoclwiLCBgSW50IGNociBdXG5cbmxldCB0b19jb21wYWN0X3lvanNvbiBkZWNscyBsb2MgPVxuICBpZiBpc19kdW1teSBsb2MgdGhlblxuICAgIGBOdWxsXG4gIGVsc2VcbiAgICBgQXNzb2NcbiAgICAgICgoaWYgbG9jLmZyb21fcG9zaXRpb24ubGluZSA8PiBsb2MudG9fcG9zaXRpb24ubGluZSB0aGVuXG4gICAgICAgICAgZnVuIGwgLT5cbiAgICAgICAgKFwiZWxpbmVcIiwgYEludCBsb2MudG9fcG9zaXRpb24ubGluZSkgOjogbFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnVuIGwgLT5cbiAgICAgICAgbClcbiAgICAgICAgIFtcbiAgICAgICAgICAgKCBcImZpbGVcIixcbiAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZCAoTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gbG9jLmZpbGUpIGRlY2xzXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgIHwgU29tZSBpIC0+IGBJbnQgaVxuICAgICAgICAgICAgIHwgTm9uZSAtPiBgU3RyaW5nIGxvYy5maWxlICk7XG4gICAgICAgICAgIFwiYmxpbmVcIiwgYEludCBsb2MuZnJvbV9wb3NpdGlvbi5saW5lO1xuICAgICAgICAgICBcImJjaHJcIiwgYEludCBsb2MuZnJvbV9wb3NpdGlvbi5jaHI7XG4gICAgICAgICAgIFwiZWNoclwiLCBgSW50IGxvYy50b19wb3NpdGlvbi5jaHI7XG4gICAgICAgICBdKVxuXG5sZXQgb2ZfY29tcGFjdF95b2pzb24gPyhmaWxlbmFtZXMgPSBbfHxdKSA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gZHVtbXlcbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8PSA1IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBmaWxlID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJmaWxlXCIgbCB3aXRoXG4gICAgICAgICB8IGBTdHJpbmcgeCAtPiB4XG4gICAgICAgICB8IGBJbnQgaSAtPiBmaWxlbmFtZXMuKGkpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCBvZl9saW5lID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJibGluZVwiIGwgd2l0aFxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICBsZXQgb2ZfY2hyID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJiY2hyXCIgbCB3aXRoXG4gICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBsb2NhdGlvblwiLCB4KSlcbiAgICAgICBpblxuICAgICAgIGxldCB0b19jaHIgPVxuICAgICAgICAgbWF0Y2ggTGlzdC5hc3NvYyBcImVjaHJcIiBsIHdpdGhcbiAgICAgICAgIHwgYEludCBpIC0+IGlcbiAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuICAgICAgIGluXG4gICAgICAgbGV0IHRvX2xpbmUgPVxuICAgICAgICAgbWF0Y2ggWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiZWxpbmVcIiB4IHdpdGhcbiAgICAgICAgIHwgYE51bGwgLT4gb2ZfbGluZVxuICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG4gICAgICAgaW5cbiAgICAgICB7XG4gICAgICAgICBmaWxlO1xuICAgICAgICAgZnJvbV9wb3NpdGlvbiA9IHsgbGluZSA9IG9mX2xpbmU7IGNociA9IG9mX2NociB9O1xuICAgICAgICAgdG9fcG9zaXRpb24gPSB7IGxpbmUgPSB0b19saW5lOyBjaHIgPSB0b19jaHIgfTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBhcnJvd19ub3RhdGlvblwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGxvY2F0aW9uXCIsIHgpKVxuXG5sZXQgeW9qc29uX29mX2Fubm90ZWQgP2ZpbGVuYW1lcyBmICh4LCBsKSA9XG4gIGxldCBqcCA9IHRvX2NvbXBhY3RfeW9qc29uIGZpbGVuYW1lcyBsIGluXG4gIGlmIGpwID0gYE51bGwgdGhlblxuICAgIGBBc3NvYyBbIFwidmFsXCIsIGYgeCBdXG4gIGVsc2VcbiAgICBgQXNzb2MgWyBcInZhbFwiLCBmIHg7IFwibG9jXCIsIGpwIF1cblxubGV0IGFubm90ZWRfb2ZfeW9qc29uID9maWxlbmFtZXMgZiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIHgpOyAoXCJsb2NcIiwgbCkgXSB8IGBBc3NvYyBbIChcImxvY1wiLCBsKTsgKFwidmFsXCIsIHgpIF0gLT5cbiAgICBmIHgsIG9mX2NvbXBhY3RfeW9qc29uID9maWxlbmFtZXMgbFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCB4KSBdIC0+IGYgeCwgZHVtbXlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbG9jYXRpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9yYW5nZSBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9fY29tcGFjdF95b2pzb24gTm9uZSBmKVxuXG5sZXQgc3RyaW5nX29mX3JhbmdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3JhbmdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF9yYW5nZSBwIGxiID1cbiAgb2ZfY29tcGFjdF95b2pzb24gP2ZpbGVuYW1lczpOb25lIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG5cbmxldCByYW5nZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmFuZ2UgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IGlzX2luY2x1ZGVkX2luIGZpbGUgeyBsaW5lOyBjaHIgfSByYW5nZSA9XG4gIGZpbGUgPSByYW5nZS5maWxlXG4gICYmIGxpbmUgPj0gcmFuZ2UuZnJvbV9wb3NpdGlvbi5saW5lXG4gICYmIGxpbmUgPD0gcmFuZ2UudG9fcG9zaXRpb24ubGluZVxuICAmJiAobGluZSA8PiByYW5nZS5mcm9tX3Bvc2l0aW9uLmxpbmUgfHwgY2hyID49IHJhbmdlLmZyb21fcG9zaXRpb24uY2hyKVxuICAmJiAobGluZSA8PiByYW5nZS50b19wb3NpdGlvbi5saW5lIHx8IGNociA8PSByYW5nZS50b19wb3NpdGlvbi5jaHIpXG5cbmxldCBtZXJnZSBiIGUgPVxuICBsZXQgKCkgPSBhc3NlcnQgKGIuZmlsZSA9IGUuZmlsZSkgaW5cbiAge1xuICAgIGZpbGUgPSBiLmZpbGU7XG4gICAgZnJvbV9wb3NpdGlvbiA9IGIuZnJvbV9wb3NpdGlvbjtcbiAgICB0b19wb3NpdGlvbiA9IGUudG9fcG9zaXRpb247XG4gIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gRm9ybWF0XG5cbmxldCBsaXN0aSA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGwgPVxuICBsZXQgcmVjIGF1eCBhY2MgZiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgWyBlbCBdIC0+XG4gICAgICBsZXQgKCkgPSBwcl9lbCBhY2MgZiBlbCBpblxuICAgICAgdHJhaWxpbmcgZlxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBsZXQgKCkgPSBwcl9lbCBhY2MgZiBoIGluXG4gICAgICBsZXQgKCkgPSBwcl9zZXAgZiBpblxuICAgICAgYXV4IChzdWNjIGFjYykgZiB0XG4gIGluXG4gIGF1eCAwIGYgbFxuXG5sZXQgbGlzdCA/dHJhaWxpbmcgcHJfc2VwIHByX2VsIGYgbCA9XG4gIGxpc3RpID90cmFpbGluZyBwcl9zZXAgKGZ1biBfIGYgeCAtPiBwcl9lbCBmIHgpIGYgbFxuXG5sZXQgc2V0ID90cmFpbGluZyBlbGVtZW50cyBwcl9zZXAgcHJfZWwgZiBzZXQgPVxuICBsaXN0ID90cmFpbGluZyBwcl9zZXAgcHJfZWwgZiAoZWxlbWVudHMgc2V0KVxuXG5sZXQgaGFzaHRibCBwcl9zZXAgcHJfZWwgZiB0YmwgPVxuICBsaXN0IHByX3NlcCBwcl9lbCBmIChIYXNodGJsLmZvbGQgKGZ1biBhIGIgbCAtPiAoYSwgYikgOjogbCkgdGJsIFtdKVxuXG5sZXQgYm90dG9tIGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhFMlxceDhBXFx4QTVcIlxubGV0IG51IGYgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJcXHhDRVxceEJEXCJcbmxldCBlbXB0eV9zZXQgZiA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlxceEUyXFx4ODhcXHg4NVwiXG5sZXQgY29tbWEgZiA9IGZwcmludGYgZiBcIixAIFwiXG5sZXQgZG90IGYgPSBmcHJpbnRmIGYgXCIuXCJcbmxldCBjb21wYWN0X2NvbW1hIGYgPSBmcHJpbnRmIGYgXCIsQCxcIlxubGV0IGNvbG9uIGYgPSBmcHJpbnRmIGYgXCI7QCBcIlxubGV0IHNwYWNlIGYgPSBwcF9wcmludF9zcGFjZSBmICgpXG5sZXQgY3V0IGYgPSBwcF9wcmludF9jdXQgZiAoKVxubGV0IGVtcHR5IF8gPSAoKVxubGV0IHVuaXQgXyAoKSA9ICgpXG5sZXQgcGFpciBwcGEgcHBiIGYgKGEsIGIpID0gZnByaW50ZiBmIFwiKCVhLCAlYSlcIiBwcGEgYSBwcGIgYlxuXG5sZXQgb3B0aW9uID8od2l0aF9zcGFjZSA9IHRydWUpIHByIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHggLT5cbiAgICBmcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBpZiB3aXRoX3NwYWNlIHRoZW5cbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3BhY2UgZiAoKVxuICAgICAgICBlbHNlXG4gICAgICAgICAgKCkpXG4gICAgICBwciB4XG5cbmxldCBhcnJheSA/KHRyYWlsaW5nID0gZnVuIF8gLT4gKCkpIHByX3NlcCBwcl9lbCBmIGEgPVxuICBsZXQgcmVjIGF1eCBpIGYgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggYSB0aGVuIChcbiAgICAgIGxldCAoKSA9IHByX2VsIGkgZiBhLihpKSBpblxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIC0gMSB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gcHJfc2VwIGYgaW5cbiAgICAgICAgYXV4IChzdWNjIGkpIGZcbiAgICAgICkgZWxzZSBpZiBpID4gMCB0aGVuXG4gICAgICAgIHRyYWlsaW5nIGZcbiAgICApXG4gIGluXG4gIGF1eCAwIGZcblxubGV0IHBsYWluX2FycmF5IHByX2VsIGYgYSA9XG4gIGxldCByZWMgYXV4IGkgZiA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIHRoZW4gKFxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiVpOiVhXCIgaSBwcl9lbCBhLihpKSBpblxuICAgICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBhIC0gMSB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCI7QCwldFwiIChhdXggKHN1Y2MgaSkpXG4gICAgKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiW3wldHxdXCIgKGF1eCAwKVxuXG5sZXQgZXJyb3IgcHIgeCA9IGVwcmludGYgXCIlYUAuXCIgKExvYy5wcmludF9hbm5vdGVkIHByKSB4XG5cbmxldCBsaXN0X3RvX3N0cmluZyBwcl9zZXAgcHJfZWwgKCkgbCA9XG4gIGxldCByZWMgYXV4ICgpID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IFwiXCJcbiAgICB8IFsgZWwgXSAtPiBwcl9lbCAoKSBlbFxuICAgIHwgaCA6OiB0IC0+IHNwcmludGYgXCIlYSV0JWFcIiBwcl9lbCBoIHByX3NlcCBhdXggdFxuICBpblxuICBhdXggKCkgbFxuXG5sZXQgc2V0X3RvX3N0cmluZyBlbGVtZW50cyBwcl9zZXAgcHJfZWwgKCkgc2V0ID1cbiAgbGlzdF90b19zdHJpbmcgcHJfc2VwIHByX2VsICgpIChlbGVtZW50cyBzZXQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGtleSA9IGludFxudHlwZSB0ID0gRW1wdHkgfCBOb2RlIG9mIHQgKiBrZXkgKiB0ICogaW50ICogSW50NjQudFxuKCpOb2RlKGxlZnQsa2V5LHJpZ2h0LGhlaWdodCxhY2MpKilcblxubGV0IGhlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMFxuICB8IE5vZGUgKF8sIF8sIF8sIGgsIF8pIC0+IGhcblxubGV0IGFjY3ZhbCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMExcbiAgfCBOb2RlIChfLCBfLCBfLCBfLCBhY2MpIC0+IGFjY1xuXG5sZXQgdG90YWwgPSBhY2N2YWxcblxubGV0IHdlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gMExcbiAgfCBOb2RlIChsLCBfLCByLCBfLCBhY2MpIC0+IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpXG5cbmxldCByZWMgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gUHAuZW1wdHlfc2V0IGZcbiAgfCBOb2RlIChsLCBrLCByLCBfLCBhY2MpIGFzIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+PCVkLCVMaSglTGkpPkAsWyVhQCx8JWFALF1cIiBrIGFjYyAod2VpZ2h0IHgpXG4gICAgICBwcmludCBsIHByaW50IHJcblxubGV0IGNyZWF0ZSBsIGtleSBhY2MgciA9XG4gIGxldCBobCA9IGhlaWdodCBsIGluXG4gIGxldCBociA9IGhlaWdodCByIGluXG4gIE5vZGUgKGwsIGtleSwgciwgc3VjYyAobWluIGhsIGhyKSwgYWNjKVxuXG5sZXQgYmFsIGwgeCB3IHIgPVxuICBsZXQgaGwgPSBoZWlnaHQgbCBpblxuICBsZXQgaHIgPSBoZWlnaHQgciBpblxuICBpZiBobCA+IGhyICsgMiB0aGVuIChcbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IEVtcHR5IC0+IGludmFsaWRfYXJnIFwiVmFsX21hcC5iYWxcIlxuICAgIHwgTm9kZSAobGwsIGx2LCBsciwgXywgYWNjX2wpIC0+XG4gICAgICBsZXQgYWNjX3IgPSBhY2N2YWwgciBpblxuICAgICAgaWYgaGVpZ2h0IGxsID49IGhlaWdodCBsciB0aGVuXG4gICAgICAgIGNyZWF0ZSBsbCBsdlxuICAgICAgICAgIChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcilcbiAgICAgICAgICAoY3JlYXRlIGxyIHggKEludDY0LmFkZCAoSW50NjQuYWRkIHcgKGFjY3ZhbCBscikpIGFjY19yKSByKVxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGxyIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICAgICAgfCBOb2RlIChscmwsIGxydiwgbHJyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBhY2NfbHJyID0gYWNjdmFsIGxyciBpblxuICAgICAgICAgIGNyZWF0ZVxuICAgICAgICAgICAgKGNyZWF0ZSBsbCBsdiAoSW50NjQuc3ViIGFjY19sIGFjY19scnIpIGxybClcbiAgICAgICAgICAgIGxydlxuICAgICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgICAgKGNyZWF0ZSBscnIgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2xyciB3KSBhY2NfcikgcilcbiAgICAgIClcbiAgKSBlbHNlIGlmIGhyID4gaGwgKyAyIHRoZW4gKFxuICAgIG1hdGNoIHIgd2l0aFxuICAgIHwgRW1wdHkgLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLmJhbFwiXG4gICAgfCBOb2RlIChybCwgcnYsIHJyLCBfLCBhY2NfcikgLT5cbiAgICAgIGxldCBhY2NfbCA9IGFjY3ZhbCBsIGluXG4gICAgICBpZiBoZWlnaHQgcnIgPj0gaGVpZ2h0IHJsIHRoZW5cbiAgICAgICAgY3JlYXRlXG4gICAgICAgICAgKGNyZWF0ZSBsIHggKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIChhY2N2YWwgcmwpKSBybClcbiAgICAgICAgICBydlxuICAgICAgICAgIChJbnQ2NC5hZGQgKEludDY0LmFkZCBhY2NfbCB3KSBhY2NfcilcbiAgICAgICAgICByclxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHJsIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAuYmFsXCJcbiAgICAgICAgfCBOb2RlIChybGwsIHJsdiwgcmxyLCBfLCBfKSAtPlxuICAgICAgICAgIGxldCBhY2NfcmxsID0gYWNjdmFsIHJsbCBpblxuICAgICAgICAgIGNyZWF0ZVxuICAgICAgICAgICAgKGNyZWF0ZSBsIHggKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19ybGwpIHJsbClcbiAgICAgICAgICAgIHJsdlxuICAgICAgICAgICAgKEludDY0LmFkZCAoSW50NjQuYWRkIGFjY19sIHcpIGFjY19yKVxuICAgICAgICAgICAgKGNyZWF0ZSBybHIgcnYgKEludDY0LnN1YiBhY2NfciBhY2NfcmxsKSBycilcbiAgICAgIClcbiAgKSBlbHNlIChcbiAgICBsZXQgYWNjX2wgPSBhY2N2YWwgbCBpblxuICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgY3JlYXRlIGwgeCAoSW50NjQuYWRkIChJbnQ2NC5hZGQgYWNjX2wgdykgYWNjX3IpIHJcbiAgKVxuXG5sZXQgZW1wdHkgPSBFbXB0eVxuXG5sZXQgaXNfZW1wdHkgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHRydWVcbiAgfCBOb2RlIF8gLT4gZmFsc2VcblxubGV0IHJlYyBhZGQga2V5IHdlaWdodCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gTm9kZSAoRW1wdHksIGtleSwgRW1wdHksIDEsIEludDY0Lm9mX2ludCB3ZWlnaHQpXG4gIHwgTm9kZSAobCwga2V5JywgciwgaCwgYWNjKSAtPlxuICAgIGlmIGtleSA9IGtleScgdGhlblxuICAgICAgTm9kZVxuICAgICAgICAoIGwsXG4gICAgICAgICAga2V5LFxuICAgICAgICAgIHIsXG4gICAgICAgICAgaCxcbiAgICAgICAgICBJbnQ2NC5hZGQgKEludDY0LmFkZCAoSW50NjQub2ZfaW50IHdlaWdodCkgKGFjY3ZhbCBsKSkgKGFjY3ZhbCByKSApXG4gICAgZWxzZSAoXG4gICAgICBsZXQgd2VpZ2h0JyA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgICBpZiBrZXkgPCBrZXknIHRoZW5cbiAgICAgICAgYmFsIChhZGQga2V5IHdlaWdodCBsKSBrZXknIHdlaWdodCcgclxuICAgICAgZWxzZVxuICAgICAgICBiYWwgbCBrZXknIHdlaWdodCcgKGFkZCBrZXkgd2VpZ2h0IHIpXG4gICAgKVxuXG5sZXQgcmVjIGZpbmRfYWNjIGFpbV9hY2MgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+IHJhaXNlIE5vdF9mb3VuZFxuICB8IE5vZGUgKGwsIGtleSwgciwgXywgYWNjKSAtPlxuICAgIGlmIGFpbV9hY2MgPj0gYWNjIHRoZW5cbiAgICAgIHJhaXNlIE5vdF9mb3VuZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGFjY19sID0gYWNjdmFsIGwgaW5cbiAgICAgIGxldCBhY2NfciA9IGFjY3ZhbCByIGluXG4gICAgICBpZiBhY2NfbCA+IGFpbV9hY2MgdGhlblxuICAgICAgICBmaW5kX2FjYyBhaW1fYWNjIGxcbiAgICAgIGVsc2UgaWYgSW50NjQuYWRkIGFjY19yIGFjY19sID4gYWltX2FjYyB0aGVuXG4gICAgICAgIGZpbmRfYWNjIChJbnQ2NC5zdWIgYWltX2FjYyBhY2NfbCkgclxuICAgICAgZWxzZVxuICAgICAgICBrZXlcbiAgICApXG5cbmxldCByZWMgbWVtIGtleSA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gZmFsc2VcbiAgfCBOb2RlIChsLCBrZXknLCByLCBfLCBfKSAtPlxuICAgIGxldCBjID0gTW9kcy5pbnRfY29tcGFyZSBrZXkga2V5JyBpblxuICAgIGMgPSAwXG4gICAgfHwgbWVtIGtleVxuICAgICAgICAgKGlmIGMgPCAwIHRoZW5cbiAgICAgICAgICAgIGxcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByKVxuXG5sZXQgcmVjIG1pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiByYWlzZSBOb3RfZm91bmRcbiAgfCBOb2RlIChFbXB0eSwgeCwgciwgXywgYWNjKSAtPiB4LCBJbnQ2NC5zdWIgYWNjIChhY2N2YWwgcilcbiAgfCBOb2RlIChsLCBfLCBfLCBfLCBfKSAtPiBtaW5fYmluZGluZyBsXG5cbmxldCByZWMgcmVtb3ZlX21pbl9iaW5kaW5nID0gZnVuY3Rpb25cbiAgfCBFbXB0eSAtPiBpbnZhbGlkX2FyZyBcIlZhbF9tYXAucmVtb3ZlX21pbl9lbHRcIlxuICB8IE5vZGUgKEVtcHR5LCBfLCByLCBfLCBfKSAtPiByXG4gIHwgTm9kZSAobCwgeCwgciwgXywgYWNjKSAtPlxuICAgIGxldCB3ZWlnaHQgPSBJbnQ2NC5zdWIgKEludDY0LnN1YiBhY2MgKGFjY3ZhbCBsKSkgKGFjY3ZhbCByKSBpblxuICAgIGJhbCAocmVtb3ZlX21pbl9iaW5kaW5nIGwpIHggd2VpZ2h0IHJcblxubGV0IG1lcmdlIHQxIHQyID1cbiAgbWF0Y2ggdDEsIHQyIHdpdGhcbiAgfCBFbXB0eSwgdCAtPiB0XG4gIHwgdCwgRW1wdHkgLT4gdFxuICB8IE5vZGUgXywgTm9kZSBfIC0+XG4gICAgbGV0IHgsIHcgPSBtaW5fYmluZGluZyB0MiBpblxuICAgIGJhbCB0MSB4IHcgKHJlbW92ZV9taW5fYmluZGluZyB0MilcblxubGV0IHJlYyByZW1vdmUgeCA9IGZ1bmN0aW9uXG4gIHwgRW1wdHkgLT4gRW1wdHlcbiAgfCBOb2RlIChsLCB2LCByLCBfLCBhY2MpIC0+XG4gICAgbGV0IGMgPSBjb21wYXJlIHggdiBpblxuICAgIGlmIGMgPSAwIHRoZW5cbiAgICAgIG1lcmdlIGwgclxuICAgIGVsc2UgKFxuICAgICAgbGV0IHdlaWdodCA9IEludDY0LnN1YiAoSW50NjQuc3ViIGFjYyAoYWNjdmFsIGwpKSAoYWNjdmFsIHIpIGluXG4gICAgICBpZiBjIDwgMCB0aGVuXG4gICAgICAgIGJhbCAocmVtb3ZlIHggbCkgdiB3ZWlnaHQgclxuICAgICAgZWxzZVxuICAgICAgICBiYWwgbCB2IHdlaWdodCAocmVtb3ZlIHggcilcbiAgICApXG4oKlxubGV0IHJlYyBpdGVyIGYgPSBmdW5jdGlvblxuICB8IEVtcHR5IC0+ICgpXG4gIHwgTm9kZShsLCB2LCByLCBfLF8pIGFzIHggLT4gaXRlciBmIGw7IGYgdiAod2VpZ2h0IHgpOyBpdGVyIGYgclxuXG5sZXQgcmVjIGZvbGQgZiBtIGFjY3UgPVxuICBtYXRjaCBtIHdpdGhcbiAgfCBFbXB0eSAtPiBhY2N1XG4gIHwgTm9kZShsLCB2LCByLCBfLF8pIGFzIHggLT4gZm9sZCBmIHIgKGYgdiAod2VpZ2h0IHgpIChmb2xkIGYgbCBhY2N1KSlcbiopXG5cbigqKlJldHVybnMgKGtleSx2YWx1ZSkgYXQgcmFuZG9tIGluIHRoZSB0cmVlKilcbmxldCByYW5kb20gc3RhdGUgbSA9XG4gIHRyeVxuICAgIGxldCByID0gUmFuZG9tLlN0YXRlLmludDY0IHN0YXRlIChhY2N2YWwgbSkgaW5cbiAgICBmaW5kX2FjYyByIG1cbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gaW52YWxpZF9hcmcgXCJWYWxfbWFwLnJhbmRvbV92YWxcIlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzdGF0dXMgPVxuICBbIGBPS1xuICB8IGBBY2NlcHRlZFxuICB8IGBDcmVhdGVkXG4gIHwgYEJhZF9yZXF1ZXN0XG4gIHwgYENvbmZsaWN0XG4gIHwgYE5vdF9mb3VuZFxuICB8IGBSZXF1ZXN0X3RpbWVvdXQgXVxuKCoqIFRoZSBzdWJzZXQgb2YgW0NvaHR0cC5Db2RlLnN0YXR1c10gd2UgbmVlZCAqKVxuXG50eXBlIG1lc3NhZ2UgPSB7XG4gIHNldmVyaXR5OiBMb2dzLmxldmVsO1xuICB0ZXh0OiBzdHJpbmc7ICgqc2hvdWxkIGJlIGFuIGFsZ2VicmFpYyB0eXBlKilcbiAgcmFuZ2U6IExvYy50IG9wdGlvbjtcbn1cblxudHlwZSAoJ2EsICdiKSB0ID0ge1xuICB2YWx1ZTogKCdhLCAnYikgUmVzdWx0LnJlc3VsdDtcbiAgc3RhdHVzOiBzdGF0dXM7XG4gIG1lc3NhZ2VzOiBtZXNzYWdlIGxpc3Q7XG59XG5cbmxldCB3cml0ZV9zZXZlcml0eSBvYiB4ID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICdcIicgaW5cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgKExvZ3MubGV2ZWxfdG9fc3RyaW5nIChTb21lIHgpKSBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ1wiJ1xuXG5sZXQgcmVhZF9zZXZlcml0eSBwIGxiID1cbiAgbWF0Y2ggTG9ncy5sZXZlbF9vZl9zdHJpbmcgKFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiKSB3aXRoXG4gIHwgUmVzdWx0Lk9rIChTb21lIHgpIC0+IHhcbiAgfCBSZXN1bHQuT2sgTm9uZSAtPiByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgXCJNZXNzYWdlIG9mIG5vIHNldmVyaXR5XCIpXG4gIHwgUmVzdWx0LkVycm9yIChgTXNnIHgpIC0+XG4gICAgcmFpc2UgKFlvanNvbi5Kc29uX2Vycm9yIChcIldoaWxlIHJlYWRpbmcgc2V2ZXJpdHk6IFwiIF4geCkpXG5cbmxldCB3cml0ZV9zdGF0dXMgb2IgPSBmdW5jdGlvblxuICB8IGBPSyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjIwMFwiXG4gIHwgYEFjY2VwdGVkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiMjAyXCJcbiAgfCBgQ3JlYXRlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIjIwMVwiXG4gIHwgYEJhZF9yZXF1ZXN0IC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiNDAwXCJcbiAgfCBgQ29uZmxpY3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDlcIlxuICB8IGBOb3RfZm91bmQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDRcIlxuICB8IGBSZXF1ZXN0X3RpbWVvdXQgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCI0MDhcIlxuXG5sZXQgcmVhZF9zdGF0dXMgcCBsYiA9XG4gIG1hdGNoIFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiIHdpdGhcbiAgfCAyMDAgLT4gYE9LXG4gIHwgMjAyIC0+IGBBY2NlcHRlZFxuICB8IDIwMSAtPiBgQ3JlYXRlZFxuICB8IDQwMCAtPiBgQmFkX3JlcXVlc3RcbiAgfCA0MDkgLT4gYENvbmZsaWN0XG4gIHwgNDA0IC0+IGBOb3RfZm91bmRcbiAgfCA0MDggLT4gYFJlcXVlc3RfdGltZW91dFxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5Kc29uX2Vycm9yXG4gICAgICAgICAoXCJTdGF0dXMgXCIgXiBzdHJpbmdfb2ZfaW50IHggXiBcIiBpcyBvdXQgb2YgdGhlIHNjb3BlIG9mIEthcHBhXCIpKVxuXG5sZXQgd3JpdGVfbWVzc2FnZSBvYiB7IHNldmVyaXR5OyB0ZXh0OyByYW5nZSB9ID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9maWVsZCBcInNldmVyaXR5XCIgd3JpdGVfc2V2ZXJpdHkgb2Igc2V2ZXJpdHkgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJ0ZXh0XCIgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiB0ZXh0IGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSByIC0+XG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJyYW5nZVwiIExvYy53cml0ZV9yYW5nZSBvYiByXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfbWVzc2FnZSBwIGxiID1cbiAgbGV0IHNldmVyaXR5LCB0ZXh0LCByYW5nZSA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChzLCB0LCByKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNldmVyaXR5XCIgdGhlblxuICAgICAgICAgIHJlYWRfc2V2ZXJpdHkgcCBsYiwgdCwgclxuICAgICAgICBlbHNlIGlmIGtleSA9IFwidGV4dFwiIHRoZW5cbiAgICAgICAgICBzLCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgclxuICAgICAgICBlbHNlIGlmIGtleSA9IFwicmFuZ2VcIiB0aGVuXG4gICAgICAgICAgcywgdCwgU29tZSAoTG9jLnJlYWRfcmFuZ2UgcCBsYilcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlIChZb2pzb24uSnNvbl9lcnJvciAoXCJObyBmaWVsZCBcIiBeIGtleSBeIFwiIGV4cGVjdGVkIGluIG1lc3NhZ2VcIikpKVxuICAgICAgKExvZ3MuQXBwLCBcIlwiLCBOb25lKSBwIGxiXG4gIGluXG4gIHsgc2V2ZXJpdHk7IHRleHQ7IHJhbmdlIH1cblxubGV0IHByaW50X21lc3NhZ2UgZiB7IHJhbmdlOyB0ZXh0OyBfIH0gPVxuICBtYXRjaCByYW5nZSB3aXRoXG4gIHwgU29tZSByYW5nZSAtPiBMb2MucHJpbnRfYW5ub3RlZCBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHRleHQsIHJhbmdlKVxuICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHRleHRcblxubGV0IHdyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiA9IGZ1bmN0aW9uXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5PayB4OyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiT2tcXFwiLFwiO1xuICAgIHdyaXRlX19vayBvYiB4O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgd3JpdGVfc3RhdHVzIG9iIHN0YXR1cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgIEpzb25VdGlsLndyaXRlX2xpc3Qgd3JpdGVfbWVzc2FnZSBvYiBtZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciB4OyBzdGF0dXM7IG1lc3NhZ2VzIH0gLT5cbiAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiRXJyb3JcXFwiLFwiO1xuICAgIHdyaXRlX19lcnJvciBvYiB4O1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgd3JpdGVfc3RhdHVzIG9iIHN0YXR1cztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgIEpzb25VdGlsLndyaXRlX2xpc3Qgd3JpdGVfbWVzc2FnZSBvYiBtZXNzYWdlcztcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG5cbmxldCBzdHJpbmdfb2ZfdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcblxubGV0IHJlYWRfdF9jb250ZW50IGYgcCBsYiA9XG4gIGxldCB2ID0gZiBwIGxiIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgcCBsYiBpblxuICBsZXQgcyA9IHJlYWRfc3RhdHVzIHAgbGIgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiIGluXG4gIHYsIHMsIFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgcmVhZF9tZXNzYWdlIHAgbGJcblxubGV0IHJlYWRfdCByZWFkX19vayByZWFkX19lcnJvciBwIGxiID1cbiAgbGV0IGF1eF9yZWFkX3QgY2xvc2luZyBwIGxiID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9zcGFjZSBwIGxiO1xuICAgIGxldCBvdXQgPVxuICAgICAgWW9qc29uLkJhc2ljLm1hcF9pZGVudCBwXG4gICAgICAgIChmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgbWF0Y2ggU3RyaW5nLnN1YiBzIHBvcyBsZW4gd2l0aFxuICAgICAgICAgIHwgXCJPa1wiIC0+XG4gICAgICAgICAgICBsZXQgdiwgc3RhdHVzLCBtZXNzYWdlcyA9IHJlYWRfdF9jb250ZW50IHJlYWRfX29rIHAgbGIgaW5cbiAgICAgICAgICAgIHsgdmFsdWUgPSBSZXN1bHQuT2sgdjsgc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgICAgICAgfCBcIkVycm9yXCIgLT5cbiAgICAgICAgICAgIGxldCB2LCBzdGF0dXMsIG1lc3NhZ2VzID0gcmVhZF90X2NvbnRlbnQgcmVhZF9fZXJyb3IgcCBsYiBpblxuICAgICAgICAgICAgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciB2OyBzdGF0dXM7IG1lc3NhZ2VzIH1cbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChZb2pzb24uSnNvbl9lcnJvclxuICAgICAgICAgICAgICAgICAoXCJGaWVsZCBcXFwiXCIgXiB4IF4gXCJcXFwiIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgcmVzdWx0IHR5cGVcIikpKVxuICAgICAgICBsYlxuICAgIGluXG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBjbG9zaW5nIHAgbGI7XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBvdXRcbiAgaW5cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICB8IGBFZGd5X2JyYWNrZXQgLT4gYXV4X3JlYWRfdCBZb2pzb24uQmFzaWMucmVhZF9ndCBwIGxiXG4gIHwgYERvdWJsZV9xdW90ZSAtPiByYWlzZSAoWW9qc29uLkpzb25fZXJyb3IgXCJOb3Qgb2YgcmVzdWx0IHR5cGVcIilcbiAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gYXV4X3JlYWRfdCBZb2pzb24uQmFzaWMucmVhZF9yYnIgcCBsYlxuXG5sZXQgdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgbGlmdCA/KG9rX3N0YXR1cyA9IGBPSykgPyhlcnJvcl9zdGF0dXMgPSBgQmFkX3JlcXVlc3QpID0gZnVuY3Rpb25cbiAgfCBSZXN1bHQuT2sgXyBhcyB2YWx1ZSAtPiB7IHZhbHVlOyBzdGF0dXMgPSBva19zdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuICB8IFJlc3VsdC5FcnJvciBfIGFzIHZhbHVlIC0+IHsgdmFsdWU7IHN0YXR1cyA9IGVycm9yX3N0YXR1czsgbWVzc2FnZXMgPSBbXSB9XG5cbmxldCBmb2xkIH4ob2sgOiAnb2sgLT4gJ2EpIH4oZXJyb3IgOiAnZXJyb3IgLT4gJ2EpIDogKCdvaywgJ2Vycm9yKSB0IC0+ICdhID1cbiAgZnVuY3Rpb25cbiAgfCB7IHZhbHVlID0gUmVzdWx0Lk9rIG87IF8gfSAtPiBvayBvXG4gIHwgeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBlOyBfIH0gLT4gZXJyb3IgZVxuXG5sZXQgYmluZCA6XG4gICAgdHlwZSBvayBhIGVyci5cbiAgICA/b3ZlcndyaXRlX3N0YXR1czpzdGF0dXMgLT5cbiAgICA/ZXJyb3Jfc3RhdHVzOnN0YXR1cyAtPlxuICAgIChvayAtPiAoYSwgZXJyKSBSZXN1bHQucmVzdWx0KSAtPlxuICAgIChvaywgZXJyKSB0IC0+XG4gICAgKGEsIGVycikgdCA9XG4gZnVuID9vdmVyd3JpdGVfc3RhdHVzID8oZXJyb3Jfc3RhdHVzID0gYEJhZF9yZXF1ZXN0KSBvayAtPiBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUgLT4gZVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gICAgKG1hdGNoIG9rIG8gd2l0aFxuICAgIHwgUmVzdWx0LkVycm9yIF8gYXMgdmFsdWUgLT4geyB2YWx1ZTsgc3RhdHVzID0gZXJyb3Jfc3RhdHVzOyBtZXNzYWdlcyB9XG4gICAgfCBSZXN1bHQuT2sgXyBhcyB2YWx1ZSAtPlxuICAgICAgKG1hdGNoIG92ZXJ3cml0ZV9zdGF0dXMgd2l0aFxuICAgICAgfCBOb25lIC0+IHsgdmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfVxuICAgICAgfCBTb21lIHN0YXR1cyAtPiB7IHZhbHVlOyBzdGF0dXM7IG1lc3NhZ2VzIH0pKVxuXG5sZXQgbWFwIDogdHlwZSBvayBhIGVyci4gKG9rIC0+IGEpIC0+IChvaywgZXJyKSB0IC0+IChhLCBlcnIpIHQgPVxuIGZ1biBvayAtPiBmdW5jdGlvblxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgbzsgc3RhdHVzOyBtZXNzYWdlcyB9IC0+XG4gICAgeyB2YWx1ZSA9IFJlc3VsdC5PayAob2sgbyk7IHN0YXR1czsgbWVzc2FnZXMgfVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IGFzIGUgLT4gZVxuXG5sZXQgbWFwMiA6XG4gICAgdHlwZSBhIGIgb2sgZXJyLiAoYSAtPiBiIC0+IG9rKSAtPiAoYSwgZXJyKSB0IC0+IChiLCBlcnIpIHQgLT4gKG9rLCBlcnIpIHQgPVxuIGZ1biBmIGEgYiAtPlxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCAoIHsgdmFsdWUgPSBSZXN1bHQuT2sgYTsgbWVzc2FnZXM7IF8gfSxcbiAgICAgIHsgdmFsdWUgPSBSZXN1bHQuT2sgYjsgc3RhdHVzOyBtZXNzYWdlcyA9IG0nIH0gKSAtPlxuICAgIHtcbiAgICAgIHZhbHVlID0gUmVzdWx0Lk9rIChmIGEgYik7XG4gICAgICBzdGF0dXM7XG4gICAgICBtZXNzYWdlcyA9IExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgbScpIG1lc3NhZ2VzO1xuICAgIH1cbiAgfCAoeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSksIF8gLT4gZVxuICB8IHsgdmFsdWUgPSBSZXN1bHQuT2sgXzsgXyB9LCAoeyB2YWx1ZSA9IFJlc3VsdC5FcnJvciBfOyBfIH0gYXMgZSkgLT4gZVxuXG5sZXQgZXJyb3IgPyhzdGF0dXMgPSBgQmFkX3JlcXVlc3QpIChlcnJvciA6ICdlcnJvcikgOiAoJ29rLCAnZXJyb3IpIHQgPVxuICB7IHZhbHVlID0gUmVzdWx0LkVycm9yIGVycm9yOyBzdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuXG5sZXQgb2sgPyhzdGF0dXMgPSBgT0spIChvayA6ICdvaykgOiAoJ29rLCAnZXJyb3IpIHQgPVxuICB7IHZhbHVlID0gUmVzdWx0Lk9rIG9rOyBzdGF0dXM7IG1lc3NhZ2VzID0gW10gfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuZXhjZXB0aW9uIFVuZGVmaW5lZFxuZXhjZXB0aW9uIE5vdEJpamVjdGl2ZVxuZXhjZXB0aW9uIENsYXNoaW5nXG5cbmxldCBzcGVjaWFsX3ZhbCA9IG1heF9pbnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGltbWVkaWF0ZTogaW50IGFycmF5O1xuICBtdXRhYmxlIGRlbGF5ZWQ6ICh0ICogdCkgb3B0aW9uO1xuICBtdXRhYmxlIGlzX2lkZW50aXR5OiBib29sO1xuICBtdXRhYmxlIGRzdHM6IE1vZHMuSW50U2V0LnQ7XG59XG5cbmxldCBlbXB0eSAoKSA9XG4gIHtcbiAgICBpbW1lZGlhdGUgPSBbfHxdO1xuICAgIGRlbGF5ZWQgPSBOb25lO1xuICAgIGlzX2lkZW50aXR5ID0gdHJ1ZTtcbiAgICBkc3RzID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gIH1cblxubGV0IGR1bW15ID0gZW1wdHkgKClcblxubGV0IGlkZW50aXR5IGwgPVxuICBsZXQgbWF4ID0gTGlzdC5mb2xkX2xlZnQgbWF4IDAgbCBpblxuICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoc3VjYyBtYXgpIHNwZWNpYWxfdmFsIGluXG4gIGxldCAoKSA9IExpc3QuaXRlciAoZnVuIHggLT4gaW1tZWRpYXRlLih4KSA8LSB4KSBsIGluXG4gIHtcbiAgICBpbW1lZGlhdGU7XG4gICAgZGVsYXllZCA9IE5vbmU7XG4gICAgaXNfaWRlbnRpdHkgPSB0cnVlO1xuICAgIGRzdHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBvdXQgeCAtPiBNb2RzLkludFNldC5hZGQgeCBvdXQpIE1vZHMuSW50U2V0LmVtcHR5IGw7XG4gIH1cblxubGV0IGlzX2lkZW50aXR5IGkgPSBpLmlzX2lkZW50aXR5XG5cbmxldCByZWMgY29tcHV0ZSBrIGkgPVxuICBsZXQgdiA9IGkuaW1tZWRpYXRlLihrKSBpblxuICBpZiB2IDw+IHNwZWNpYWxfdmFsIHRoZW5cbiAgICB2XG4gIGVsc2UgKFxuICAgIG1hdGNoIGkuZGVsYXllZCB3aXRoXG4gICAgfCBOb25lIC0+IHNwZWNpYWxfdmFsXG4gICAgfCBTb21lICh4LCB5KSAtPlxuICAgICAgaWYgayA+PSBBcnJheS5sZW5ndGggeC5pbW1lZGlhdGUgdGhlblxuICAgICAgICBzcGVjaWFsX3ZhbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCB2JyA9IGNvbXB1dGUgayB4IGluXG4gICAgICAgIGlmIHYnID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgIHNwZWNpYWxfdmFsXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCB2JycgPSBjb21wdXRlIHYnIHkgaW5cbiAgICAgICAgICBsZXQgbyA9XG4gICAgICAgICAgICBpZiB2JycgPSBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgICAgIHYnXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHYnJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gaS5pbW1lZGlhdGUuKGspIDwtIG8gaW5cbiAgICAgICAgICBvXG4gICAgICAgIClcbiAgICAgIClcbiAgKVxuXG5sZXQgZm9yY2UgaSA9XG4gIGlmIGkuZGVsYXllZCA8PiBOb25lIHRoZW4gKFxuICAgIGxldCAoKSA9IEFycmF5Lml0ZXJpIChmdW4gayBfIC0+IGlnbm9yZSAoY29tcHV0ZSBrIGkpKSBpLmltbWVkaWF0ZSBpblxuICAgIGkuZGVsYXllZCA8LSBOb25lXG4gIClcblxubGV0IHRvX2xpc3QgaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgdiAtPlxuICAgICAgaWYgdiA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgIChpLCB2KSA6OiBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgYWNjKVxuICAgIFtdIGkuaW1tZWRpYXRlXG4gIHw+IExpc3QucmV2XG5cbmxldCBpbWFnZSBpID0gaS5kc3RzXG5cbmxldCB1bnNhZmVfZnVuY3Rpb25uYWxfYWRkIHggeSBpID1cbiAgbGV0IGwgPSBtYXggKEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSkgKHggKyAxKSBpblxuICBsZXQgaW1tZWRpYXRlID0gQXJyYXkubWFrZSBsIHNwZWNpYWxfdmFsIGluXG4gIGxldCAoKSA9IEFycmF5LmJsaXQgaS5pbW1lZGlhdGUgMCBpbW1lZGlhdGUgMCAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSBpblxuICBsZXQgKCkgPSBpbW1lZGlhdGUuKHgpIDwtIHkgaW5cbiAge1xuICAgIGltbWVkaWF0ZTtcbiAgICBkZWxheWVkID0gaS5kZWxheWVkO1xuICAgIGlzX2lkZW50aXR5ID0gaS5pc19pZGVudGl0eSAmJiB4ID09IHk7XG4gICAgZHN0cyA9IE1vZHMuSW50U2V0LmFkZCB5IGkuZHN0cztcbiAgfVxuXG5sZXQgYWRkIH5kZWJ1Z19tb2RlIHggeSBpID1cbiAgbGV0IG5vdF9vayA9XG4gICAgZGVidWdfbW9kZSAmJiB4IDwgQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlICYmIGkuaW1tZWRpYXRlLih4KSA8PiBzcGVjaWFsX3ZhbFxuICBpblxuICBpZiBub3Rfb2sgdGhlblxuICAgIHJhaXNlIENsYXNoaW5nXG4gIGVsc2UgKFxuICAgIGxldCBpJyA9IHVuc2FmZV9mdW5jdGlvbm5hbF9hZGQgeCB5IGkgaW5cbiAgICBpZiBpLmRzdHMgPT0gaScuZHN0cyB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgU29tZSBpJ1xuICApXG5cbmxldCB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeCB5IGkgPVxuICBsZXQgKCkgPVxuICAgIGxldCBsID0gQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlIGluXG4gICAgaWYgeCA+PSBsIHRoZW4gKFxuICAgICAgbGV0IGltbWVkaWF0ZSA9IEFycmF5Lm1ha2UgKHN1Y2MgeCkgc3BlY2lhbF92YWwgaW5cbiAgICAgIGxldCAoKSA9IEFycmF5LmJsaXQgaS5pbW1lZGlhdGUgMCBpbW1lZGlhdGUgMCBsIGluXG4gICAgICBsZXQgKCkgPSBpbW1lZGlhdGUuKHgpIDwtIHkgaW5cbiAgICAgIGkuaW1tZWRpYXRlIDwtIGltbWVkaWF0ZVxuICAgICkgZWxzZVxuICAgICAgaS5pbW1lZGlhdGUuKHgpIDwtIHlcbiAgaW5cbiAgbGV0ICgpID0gaS5pc19pZGVudGl0eSA8LSBpLmlzX2lkZW50aXR5ICYmIHggPT0geSBpblxuICBpLmRzdHMgPC0gTW9kcy5JbnRTZXQuYWRkIHkgaS5kc3RzXG5cbmxldCBpbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSB4IHkgaSA9XG4gIGxldCBub3Rfb2sgPVxuICAgIGRlYnVnX21vZGUgJiYgeCA8IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSAmJiBpLmltbWVkaWF0ZS4oeCkgPD4gc3BlY2lhbF92YWxcbiAgaW5cbiAgaWYgbm90X29rIHRoZW5cbiAgICByYWlzZSBDbGFzaGluZ1xuICBlbHNlIChcbiAgICBsZXQgb3JpZ2luID0gaS5kc3RzIGluXG4gICAgbGV0ICgpID0gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHggeSBpIGluXG4gICAgbm90IChpLmRzdHMgPT0gb3JpZ2luKVxuICApXG5cbmxldCByZWMgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21faWRlbnRpdHkgbWF4IGlkIHN1YnN0IHByZSA9IGZ1bmN0aW9uXG4gIHwgXyB3aGVuIHByZSA9IGlkIC0+IHVuc2FmZV9pbXBlcmF0aXZlX2FkZCBwcmUgbWF4IHN1YnN0XG4gIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0ICgpID0gdW5zYWZlX2ltcGVyYXRpdmVfYWRkIHByZSBoIHN1YnN0IGluXG4gICAgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21faWRlbnRpdHkgbWF4IGlkIHN1YnN0IGggdFxuXG5sZXQgY3ljbGljX3Blcm11dGF0aW9uX2Zyb21fbGlzdCB+c3RvcF9hdCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gZmFpbHdpdGggXCJSZW5hbWluZy5jeWNsaWNfcGVybXV0YXRpb25fZnJvbV9saXN0XCJcbiAgfCBoIDo6IHQgLT5cbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPSBjeWNsaWNfcGVybXV0YXRpb25fZnJvbV9pZGVudGl0eSBoIHN0b3BfYXQgb3V0IGggdCBpblxuICAgIG91dFxuXG5sZXQgbWVtIHggaSA9IHggPCBBcnJheS5sZW5ndGggaS5pbW1lZGlhdGUgJiYgY29tcHV0ZSB4IGkgPD4gc3BlY2lhbF92YWxcblxubGV0IGZvbGQgZiBpIGFjYyA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaSBhY2MgdiAtPlxuICAgICAgaWYgdiA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIGYgaSB2IGFjYylcbiAgICBhY2MgaS5pbW1lZGlhdGVcblxubGV0IGFwcGx5IH5kZWJ1Z19tb2RlIGkgeCA9XG4gIGlmIChub3QgaS5pc19pZGVudGl0eSkgfHwgZGVidWdfbW9kZSB0aGVuIChcbiAgICBsZXQgYyA9IGNvbXB1dGUgeCBpIGluXG4gICAgaWYgYyA9IHNwZWNpYWxfdmFsIHRoZW5cbiAgICAgIHJhaXNlIFVuZGVmaW5lZFxuICAgIGVsc2VcbiAgICAgIGNcbiAgKSBlbHNlXG4gICAgeFxuXG5sZXQgY29tcG9zZSB+ZGVidWdfbW9kZSBleHRlbnNpYmxlIGkgaScgPVxuICBpZiAobm90IGkuaXNfaWRlbnRpdHkpIHx8IGV4dGVuc2libGUgfHwgZGVidWdfbW9kZSB0aGVuXG4gICAge1xuICAgICAgaW1tZWRpYXRlID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIGkuaW1tZWRpYXRlKSBzcGVjaWFsX3ZhbDtcbiAgICAgIGRlbGF5ZWQgPSBTb21lIChpLCBpJyk7XG4gICAgICBpc19pZGVudGl0eSA9IGkuaXNfaWRlbnRpdHkgJiYgaScuaXNfaWRlbnRpdHk7XG4gICAgICBkc3RzID1cbiAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgIChmdW4gdicgc2V0IC0+XG4gICAgICAgICAgICBsZXQgdicnID0gY29tcHV0ZSB2JyBpJyBpblxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuYWRkIHYnJyBzZXQpXG4gICAgICAgICAgaS5kc3RzIE1vZHMuSW50U2V0LmVtcHR5O1xuICAgIH1cbiAgKCogbGV0IHNpZ21hLGlzX2lkID1cbiAgICAgICBNb2RzLkludE1hcC5mb2xkIChmdW4geCB5IChvdXQsaXNfaWQpIC0+XG4gICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHkgaScuc2lnbWEgd2l0aFxuICAgICAgICAgICB8IFNvbWUgeiAtPiAoTW9kcy5JbnRNYXAuYWRkIHggeiBvdXQsaXNfaWQgJiYgeD09eilcbiAgICAgICAgICAgfCBOb25lIC0+IChvdXQsaXNfaWQgJiYgeD09eSlcbiAgICAgICAgICkgaS5zaWdtYSAoaS5zaWdtYSx0cnVlKVxuICAgICBpblxuICAgICB7c2lnbWE9c2lnbWEgOyBpc19pZGVudGl0eT1pc19pZCA7IGRzdHMgPSBpJy5kc3RzfVxuICAqKVxuICBlbHNlXG4gICAgaSdcblxubGV0IGludmVyc2UgaSA9XG4gIGlmIGkuaXNfaWRlbnRpdHkgdGhlblxuICAgIGlcbiAgZWxzZSAoXG4gICAgbGV0IG91dCA9IGVtcHR5ICgpIGluXG4gICAgbGV0ICgpID0gZm9yY2UgaSBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIHggeSAtPlxuICAgICAgICAgIGlmIHkgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgeSA8IEFycmF5Lmxlbmd0aCBvdXQuaW1tZWRpYXRlICYmIG91dC5pbW1lZGlhdGUuKHkpIDw+IHNwZWNpYWxfdmFsXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlIE5vdEJpamVjdGl2ZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB1bnNhZmVfaW1wZXJhdGl2ZV9hZGQgeSB4IG91dClcbiAgICAgICAgaS5pbW1lZGlhdGVcbiAgICBpblxuICAgIG91dFxuICApXG5cbmxldCBjb21wYXJlIGkgaScgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGxldCAoKSA9IGZvcmNlIGknIGluXG4gIFRvb2xzLmFycmF5X2NvbXBhcmUgTW9kcy5pbnRfY29tcGFyZSBpLmltbWVkaWF0ZSBpJy5pbW1lZGlhdGVcblxubGV0IGVxdWFsIGkgaScgPSBjb21wYXJlIGkgaScgPSAwXG5cbmxldCBtaW5fZWx0IGkgPVxuICBsZXQgbCA9IEFycmF5Lmxlbmd0aCBpLmltbWVkaWF0ZSBpblxuICBsZXQgcmVjIGF1eF9taW5fZWx0IGsgPVxuICAgIGlmIGsgPj0gbCB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbyA9IGNvbXB1dGUgayBpIGluXG4gICAgICBpZiBvID0gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICBhdXhfbWluX2VsdCAoc3VjYyBrKVxuICAgICAgZWxzZVxuICAgICAgICBTb21lIChrLCBvKVxuICAgIClcbiAgaW5cbiAgYXV4X21pbl9lbHQgMFxuXG5sZXQgcHJpbnQgZiBpID1cbiAgbGV0ICgpID0gZm9yY2UgaSBpblxuICBpZ25vcmVcbiAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgIChmdW4gc3JjIGIgZHN0IC0+XG4gICAgICAgICBpZiBzcmMgPD4gZHN0ICYmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuIChcbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlaS0+JWlcIlxuICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgUHAuY29tbWFcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgIHNyYyBkc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgIGIpXG4gICAgICAgZmFsc2UgaS5pbW1lZGlhdGUpXG5cbmxldCBwcmludF9mdWxsIGYgaSA9XG4gIGxldCAoKSA9IGZvcmNlIGkgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbKCVhKUBdXCJcbiAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBzcmMgZiBkc3QgLT5cbiAgICAgICAgIGlmIGRzdCA8PiBzcGVjaWFsX3ZhbCB0aGVuXG4gICAgICAgICAgIGlmIHNyYyA8PiBkc3QgdGhlblxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaS0+JWlcIiBzcmMgZHN0XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGYgc3JjKSlcbiAgICBpLmltbWVkaWF0ZVxuXG5sZXQgdG9feW9qc29uIGkgPVxuICBsZXQgKCkgPSBmb3JjZSBpIGluXG4gIGBMaXN0XG4gICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAoZnVuIHNyYyBhY2MgZHN0IC0+XG4gICAgICAgICBpZiBkc3QgPD4gc3BlY2lhbF92YWwgdGhlblxuICAgICAgICAgICBgTGlzdCBbIGBJbnQgc3JjOyBgSW50IGRzdCBdIDo6IGFjY1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBhY2MpXG4gICAgICAgW10gaS5pbW1lZGlhdGUpXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT5cbiAgICBsZXQgb3V0ID0gZW1wdHkgKCkgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYExpc3QgWyBgSW50IHNyYzsgYEludCBkc3QgXSBhcyB4IC0+XG4gICAgICAgICAgICBpZiBub3QgKGltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlOmZhbHNlIHNyYyBkc3Qgb3V0KSB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJlbmFtaW5nIGl0ZW1cIiwgeCkpXG4gICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgcmVuYW1pbmcgaXRlbVwiLCB4KSkpXG4gICAgICAgIGxcbiAgICBpblxuICAgIG91dFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHJlbmFtaW5nXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0cmVlID0ge1xuICBtYXNrOiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbiAgdW5tYXNrOiAoaW50LCBpbnQpIEhhc2h0YmwudDtcbiAgbXV0YWJsZSBuZXdfbWFzazogaW50O1xuICBtdXRhYmxlIGluZl9saXN0OiBNb2RzLkludFNldC50O1xuICBzaXplOiBpbnQ7XG4gIHdlaWdodF9vZl9ub2RlczogZmxvYXQgYXJyYXk7XG4gIHdlaWdodF9vZl9zdWJ0cmVlczogZmxvYXQgYXJyYXk7XG4gIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyOiBpbnQgbGlzdCBhcnJheTtcbiAgdW5iYWxhbmNlZF9ldmVudHM6IGJvb2wgYXJyYXk7XG4gIGxheWVyOiBpbnQgYXJyYXk7XG4gIG11dGFibGUgY29uc2lzdGVudDogYm9vbDtcbn1cblxubGV0IG1hc2sgdCBpID1cbiAgdHJ5IEhhc2h0YmwuZmluZCB0Lm1hc2sgaVxuICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgIGxldCBtID0gdC5uZXdfbWFzayBpblxuICAgIGxldCAoKSA9IHQubmV3X21hc2sgPC0gbSArIDEgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgdC5tYXNrIGkgbSBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSB0LnVubWFzayBtIGkgaW5cbiAgICBtXG5cbmxldCB1bm1hc2sgdCBtID1cbiAgdHJ5IEhhc2h0YmwuZmluZCB0LnVubWFzayBtXG4gIHdpdGggTm90X2ZvdW5kIC0+IGludmFsaWRfYXJnIFwiUmFuZG9tX3RyZWU6IGluY29oZXJlbnQgaGFzaFwiXG5cbmxldCBpc19pbmZpbml0ZSBpIHQgPVxuICBsZXQgaSA9IG1hc2sgdCBpIGluXG4gIE1vZHMuSW50U2V0Lm1lbSBpIHQuaW5mX2xpc3RcblxubGV0IGZpbmQgaSB0ID1cbiAgbGV0IGkgPSBtYXNrIHQgaSBpblxuICB0LndlaWdodF9vZl9ub2Rlcy4oaSlcblxubGV0IGNvcHkgdCA9XG4gIHtcbiAgICBtYXNrID0gSGFzaHRibC5jb3B5IHQubWFzaztcbiAgICB1bm1hc2sgPSBIYXNodGJsLmNvcHkgdC51bm1hc2s7XG4gICAgbmV3X21hc2sgPSB0Lm5ld19tYXNrO1xuICAgIHNpemUgPSB0LnNpemU7XG4gICAgKCpcdHRvdGFsID0gdC50b3RhbCA7KilcbiAgICB3ZWlnaHRfb2Zfbm9kZXMgPSBBcnJheS5jb3B5IHQud2VpZ2h0X29mX25vZGVzO1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlcyA9IEFycmF5LmNvcHkgdC53ZWlnaHRfb2Zfc3VidHJlZXM7XG4gICAgbGF5ZXIgPSBBcnJheS5jb3B5IHQubGF5ZXI7XG4gICAgY29uc2lzdGVudCA9IHQuY29uc2lzdGVudDtcbiAgICB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciA9IEFycmF5LmNvcHkgdC51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllcjtcbiAgICB1bmJhbGFuY2VkX2V2ZW50cyA9IEFycmF5LmNvcHkgdC51bmJhbGFuY2VkX2V2ZW50cztcbiAgICBpbmZfbGlzdCA9IE1vZHMuSW50U2V0LmVtcHR5O1xuICB9XG5cbmxldCBjb3B5X3ZlY3RfaW4gdCB0MSA9IEFycmF5Lml0ZXJpIChmdW4gaSBhIC0+IHQxLihpKSA8LSBhKSB0XG5cbmxldCBjb3B5X2luIHQxIHQyID1cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLndlaWdodF9vZl9ub2RlcyB0Mi53ZWlnaHRfb2Zfbm9kZXMgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLndlaWdodF9vZl9zdWJ0cmVlcyB0Mi53ZWlnaHRfb2Zfc3VidHJlZXMgaW5cbiAgbGV0ICgpID0gY29weV92ZWN0X2luIHQxLmxheWVyIHQyLmxheWVyIGluXG4gIGxldCAoKSA9IGNvcHlfdmVjdF9pbiB0MS51bmJhbGFuY2VkX2V2ZW50cyB0Mi51bmJhbGFuY2VkX2V2ZW50cyBpblxuICBsZXQgKCkgPVxuICAgIGNvcHlfdmVjdF9pbiB0MS51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllciB0Mi51bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllclxuICBpblxuICBsZXQgKCkgPSB0Mi5jb25zaXN0ZW50IDwtIHQxLmNvbnNpc3RlbnQgaW5cbiAgdDJcblxubGV0IGlzX3Jvb3QgaSA9IGkgPSAxXG5cbmxldCBkZWNsYXJlX3VuYmFsYW5jZWQgaSB0ID1cbiAgbGV0ICgpID1cbiAgICBpZiBub3QgdC51bmJhbGFuY2VkX2V2ZW50cy4oaSkgdGhlbiAoXG4gICAgICBsZXQgbCA9IHQubGF5ZXIuKGkpIGluXG4gICAgICBsZXQgKCkgPSB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSA8LSB0cnVlIGluXG4gICAgICB0LnVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyLihsKSA8LSBpIDo6IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGwpXG4gICAgKVxuICBpblxuICB0LmNvbnNpc3RlbnQgPC0gZmFsc2VcblxubGV0IHVwZGF0ZV9zdHJ1Y3R1cmUgdCA9XG4gIGlmIHQuY29uc2lzdGVudCB0aGVuXG4gICAgdFxuICBlbHNlIChcbiAgICBsZXQgbl9sYXllciA9IHQubGF5ZXIuKHQuc2l6ZSkgaW5cbiAgICBsZXQgdXBkYXRlX3N0cnVjdHVyZV9hdXggaSA9XG4gICAgICBsZXQgKCkgPVxuICAgICAgICB0LndlaWdodF9vZl9zdWJ0cmVlcy4oaSkgPC1cbiAgICAgICAgICAodC53ZWlnaHRfb2Zfbm9kZXMuKGkpXG4gICAgICAgICAgKy4gKGlmIDIgKiBpID4gdC5zaXplIHRoZW5cbiAgICAgICAgICAgICAgICAwLlxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKDIgKiBpKSlcbiAgICAgICAgICArLlxuICAgICAgICAgIGlmICgyICogaSkgKyAxID4gdC5zaXplIHRoZW5cbiAgICAgICAgICAgIDAuXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgdC53ZWlnaHRfb2Zfc3VidHJlZXMuKCgyICogaSkgKyAxKSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB0LnVuYmFsYW5jZWRfZXZlbnRzLihpKSA8LSBmYWxzZSBpblxuICAgICAgaWYgbm90IChpc19yb290IGkpIHRoZW4gKFxuICAgICAgICBsZXQgZmF0aGVyID0gaSAvIDIgaW5cbiAgICAgICAgZGVjbGFyZV91bmJhbGFuY2VkIGZhdGhlciB0XG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBrID1cbiAgICAgIGlmIGsgPSAwIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgbCA9IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGspIGluXG4gICAgICAgIGxldCAoKSA9IHQudW5iYWxhbmNlZF9ldmVudHNfYnlfbGF5ZXIuKGspIDwtIFtdIGluXG4gICAgICAgIGxldCAoKSA9IExpc3QuaXRlciB1cGRhdGVfc3RydWN0dXJlX2F1eCBsIGluXG4gICAgICAgIGF1eCAoayAtIDEpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBhdXggbl9sYXllciBpblxuICAgIGxldCAoKSA9IHQuY29uc2lzdGVudCA8LSB0cnVlIGluXG4gICAgdFxuICApXG5cbmxldCBjcmVhdGUgbiA9XG4gIGxldCB0X25vZGUgPSBBcnJheS5tYWtlIChuICsgMSkgMC4gaW5cbiAgbGV0IHRfc3VidHJlZSA9IEFycmF5Lm1ha2UgKG4gKyAxKSAwLiBpblxuICBsZXQgbGF5ZXIgPSBBcnJheS5tYWtlIChuICsgMSkgMCBpblxuICBsZXQgKCkgPVxuICAgIGxldCByZWMgYXV4IGsgY3VycmVudF9sYXllciBsYXllcl9lbmQgPVxuICAgICAgaWYgayA8PSBuIHRoZW5cbiAgICAgICAgaWYgayA+IGxheWVyX2VuZCB0aGVuXG4gICAgICAgICAgYXV4IGsgKGN1cnJlbnRfbGF5ZXIgKyAxKSAoKDIgKiBsYXllcl9lbmQpICsgMSlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gbGF5ZXIuKGspIDwtIGN1cnJlbnRfbGF5ZXIgaW5cbiAgICAgICAgICBhdXggKGsgKyAxKSBjdXJyZW50X2xheWVyIGxheWVyX2VuZFxuICAgICAgICApXG4gICAgaW5cbiAgICBhdXggMSAxIDFcbiAgaW5cbiAgbGV0IHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyID0gQXJyYXkubWFrZSAobGF5ZXIuKG4pICsgMSkgW10gaW5cbiAgbGV0IHVuYmFsYW5jZWRfZXZlbnRzID0gQXJyYXkubWFrZSAobiArIDEpIGZhbHNlIGluXG4gIHtcbiAgICBzaXplID0gbjtcbiAgICAoKlx0dG90YWwgPSAwLjsqKVxuICAgIG5ld19tYXNrID0gMTtcbiAgICBtYXNrID0gSGFzaHRibC5jcmVhdGUgKG4gKyAxKTtcbiAgICB1bm1hc2sgPSBIYXNodGJsLmNyZWF0ZSAobiArIDEpO1xuICAgIGluZl9saXN0ID0gTW9kcy5JbnRTZXQuZW1wdHk7XG4gICAgY29uc2lzdGVudCA9IHRydWU7XG4gICAgd2VpZ2h0X29mX25vZGVzID0gdF9ub2RlO1xuICAgIHdlaWdodF9vZl9zdWJ0cmVlcyA9IHRfc3VidHJlZTtcbiAgICB1bmJhbGFuY2VkX2V2ZW50c19ieV9sYXllcjtcbiAgICB1bmJhbGFuY2VkX2V2ZW50cztcbiAgICBsYXllcjtcbiAgfVxuXG5sZXQgYWRkIGkgdyB0ID1cbiAgbGV0IGkgPSBtYXNrIHQgaSBpblxuICBpZiB3IDwgMC4gdGhlblxuICAgIGZhaWx3aXRoIFwiTmVnYXRpdmUgdmFsdWUgZm9yYmlkZGVuIGluIFJhbmRvbV90cmVlXCJcbiAgZWxzZSAoXG4gICAgbGV0IHcgPVxuICAgICAgaWYgdyA9IGluZmluaXR5IHRoZW4gKFxuICAgICAgICBsZXQgKCkgPSB0LmluZl9saXN0IDwtIE1vZHMuSW50U2V0LmFkZCBpIHQuaW5mX2xpc3QgaW5cbiAgICAgICAgMC5cbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IHQuaW5mX2xpc3QgPC0gTW9kcy5JbnRTZXQucmVtb3ZlIGkgdC5pbmZfbGlzdCBpblxuICAgICAgICB3XG4gICAgICApXG4gICAgaW5cbiAgICAoKlx0bGV0IHRvdGFsID0gdC50b3RhbCAtLiB0LndlaWdodF9vZl9ub2Rlcy4oaSkgKy4gdyBpbiopXG4gICAgbGV0ICgpID0gdC53ZWlnaHRfb2Zfbm9kZXMuKGkpIDwtIHcgaW5cbiAgICBsZXQgKCkgPSBkZWNsYXJlX3VuYmFsYW5jZWQgaSB0IGluXG4gICAgKCkgKCp0LnRvdGFsIDwtIChtYXggMC4wIHRvdGFsKSAoKm5vdCBzYXRpc2ZhY3RvcnkqKSopXG4gIClcblxubGV0IHRvdGFsIHQgPVxuICBpZiBNb2RzLkludFNldC5pc19lbXB0eSB0LmluZl9saXN0IHRoZW4gKFxuICAgIGxldCB0ID0gdXBkYXRlX3N0cnVjdHVyZSB0IGluXG4gICAgaWYgdC5zaXplID0gMCB0aGVuXG4gICAgICAwLlxuICAgIGVsc2VcbiAgICAgIHQud2VpZ2h0X29mX3N1YnRyZWVzLigxKVxuICApIGVsc2VcbiAgICBpbmZpbml0eVxuXG5sZXQgcmFuZG9tIHJzIHQgPVxuICBtYXRjaCBNb2RzLkludFNldC5yYW5kb20gcnMgdC5pbmZfbGlzdCB3aXRoXG4gIHwgU29tZSB4IC0+IHVubWFzayB0IHgsIGluZmluaXR5XG4gIHwgTm9uZSAtPlxuICAgIGxldCB0ID0gdXBkYXRlX3N0cnVjdHVyZSB0IGluXG4gICAgbGV0IGEgPSB0b3RhbCB0IGluXG4gICAgaWYgYSA8PSAwLiB0aGVuXG4gICAgICByYWlzZSBOb3RfZm91bmRcbiAgICBlbHNlIChcbiAgICAgIGxldCByID0gUmFuZG9tLlN0YXRlLmZsb2F0IHJzIGEgaW5cbiAgICAgIGxldCByZWMgZmluZCBpIHIgPVxuICAgICAgICBsZXQgbm9kZSA9IHQud2VpZ2h0X29mX25vZGVzLihpKSBpblxuICAgICAgICBpZiByIDwgbm9kZSB0aGVuXG4gICAgICAgICAgaSwgbm9kZVxuICAgICAgICBlbHNlIGlmIDIgKiBpID4gdC5zaXplIHRoZW5cbiAgICAgICAgICByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHInID0gciAtLiBub2RlIGluXG4gICAgICAgICAgbGV0IGxzb24gPSAyICogaSBpblxuICAgICAgICAgIGxldCByc29uID0gKDIgKiBpKSArIDEgaW5cbiAgICAgICAgICBsZXQgbGVmdCA9IHQud2VpZ2h0X29mX3N1YnRyZWVzLihsc29uKSBpblxuICAgICAgICAgIGlmIHInIDwgbGVmdCB0aGVuXG4gICAgICAgICAgICBmaW5kIGxzb24gcidcbiAgICAgICAgICBlbHNlIGlmIHJzb24gPiB0LnNpemUgdGhlblxuICAgICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluZCByc29uIChyJyAtLiBsZWZ0KVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IHJlcCwgdyA9IGZpbmQgMSByIGluXG4gICAgICB1bm1hc2sgdCByZXAsIHdcbiAgICApXG5cbigqIFRPRE9cbiAgICB3ZWlnaHRfb2Zfc3VidHJlZXM6IGZsb2F0IGFycmF5IDtcbiAgIHVuYmFsYW5jZWRfZXZlbnRzX2J5X2xheWVyOiBpbnQgbGlzdCBhcnJheSA7XG4qKVxubGV0IGRlYnVnX3ByaW50IGYgdCA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJXNjb25zaXN0ZW50OkAgW1wiXG4gICAgICAoaWYgdC5jb25zaXN0ZW50IHRoZW5cbiAgICAgICAgIFwiXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcInVuXCIpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5pdGVyXG4gICAgICAoZnVuIGkgayAtPlxuICAgICAgICBsZXQgYmFsID1cbiAgICAgICAgICBpZiB0LnVuYmFsYW5jZWRfZXZlbnRzLihrKSB0aGVuXG4gICAgICAgICAgICBcIiFcIlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFwiXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGludiA9XG4gICAgICAgICAgaWYgSGFzaHRibC5maW5kIHQubWFzayBrID0gaSB0aGVuXG4gICAgICAgICAgICBcIlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCIgbm90IGludm9sdXRpdmVcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgaW5mID1cbiAgICAgICAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCB0LndlaWdodF9vZl9ub2Rlcy4oaykgd2l0aFxuICAgICAgICAgIHwgRlBfaW5maW5pdGUgd2hlbiBNb2RzLkludFNldC5tZW0gayB0LmluZl9saXN0IC0+IFwiXCJcbiAgICAgICAgICB8IEZQX2luZmluaXRlIC0+IFwiIG5vdCBpbiBpbmZfbGlzdFwiXG4gICAgICAgICAgfCBfIHdoZW4gbm90IChNb2RzLkludFNldC5tZW0gayB0LmluZl9saXN0KSAtPiBcIlwiXG4gICAgICAgICAgfCBGUF9ub3JtYWwgfCBGUF96ZXJvIHwgRlBfbmFuIHwgRlBfc3Vibm9ybWFsIC0+IFwiIGluIGluZl9saXN0XCJcbiAgICAgICAgaW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJWk6JWYlcyVzLEAsXCIgYmFsIGkgdC53ZWlnaHRfb2Zfbm9kZXMuKGspIGluZiBpbnYpXG4gICAgICB0LnVubWFza1xuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiXUBdXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBncmFwaF9wYWdlIHRpdGxlID9zdWJ0aXRsZSBkZXBzIGhlYWRlciBjb3JlIGYgPVxuICBsZXQgZGVwZW5kZW5jeSBmIHQgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8c2NyaXB0IHNyYz1cXFwiJXNcXFwiIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj48L3NjcmlwdD5cIiB0XG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PjwhZG9jdHlwZSBodG1sPkAsQCw8aHRtbD5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGhlYWQ+QCw8bWV0YSBjaGFyc2V0PVxcXCJ1dGYtOFxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHRpdGxlPiV0PC90aXRsZT5ALFwiIHRpdGxlIGluXG4gIGxldCAoKSA9IFBwLmxpc3QgfnRyYWlsaW5nOlBwLnNwYWNlIFBwLnNwYWNlIGRlcGVuZGVuY3kgZiBkZXBzIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIldEBdQCw8L2hlYWQ+QCxcIiBoZWFkZXIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48Ym9keT5ALDxkaXYgY2xhc3M9XFxcImNvbnRhaW5lclxcXCI+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8aDE+QFsldCV0QF08L2gxPkAsXCIgdGl0bGUgKGZ1biBmIC0+XG4gICAgICAgIG1hdGNoIHN1YnRpdGxlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSB0IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJALDxzbWFsbD4ldDwvc21hbGw+XCIgdClcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiV0QCw8L2Rpdj5AXUAsPC9ib2R5PkAsPC9odG1sPkBdQC5cIiBjb3JlXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGJpbl9hbGdfb3AgPSBNVUxUIHwgU1VNIHwgRElWIHwgTUlOVVMgfCBQT1cgfCBNT0RVTE8gfCBNSU4gfCBNQVhcbnR5cGUgdW5fYWxnX29wID0gTE9HIHwgU1FSVCB8IEVYUCB8IFNJTlVTIHwgQ09TSU5VUyB8IFRBTiB8IElOVCB8IFVNSU5VU1xuXG50eXBlIHN0YXRlX2FsZ19vcCA9XG4gIHwgQ1BVVElNRVxuICB8IFRJTUVfVkFSXG4gIHwgRVZFTlRfVkFSXG4gIHwgTlVMTF9FVkVOVF9WQVJcbiAgfCBUTUFYX1ZBUlxuICB8IEVNQVhfVkFSXG5cbnR5cGUgYmluX2Jvb2xfb3AgPSBBTkQgfCBPUlxudHlwZSB1bl9ib29sX29wID0gTk9UXG50eXBlIGNvbXBhcmVfb3AgPSBHUkVBVEVSIHwgU01BTExFUiB8IEVRVUFMIHwgRElGRlxudHlwZSByZXZfZGVwID0gQUxHIG9mIGludCB8IFJVTEUgb2YgaW50IHwgTU9ESUYgb2YgaW50XG5cbmxldCBiaW5fYWxnX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTVVMVCAtPiBcIipcIlxuICB8IFNVTSAtPiBcIitcIlxuICB8IERJViAtPiBcIi9cIlxuICB8IE1JTlVTIC0+IFwiLVwiXG4gIHwgUE9XIC0+IFwiXlwiXG4gIHwgTU9EVUxPIC0+IFwiW21vZF1cIlxuICB8IE1JTiAtPiBcIlttaW5dXCJcbiAgfCBNQVggLT4gXCJbbWF4XVwiXG5cbmxldCBiaW5fYWxnX29wX2lzX3ByZWZpeCA9IGZ1bmN0aW9uXG4gIHwgTUFYIHwgTUlOIC0+IHRydWVcbiAgfCBNVUxUIHwgU1VNIHwgRElWIHwgTUlOVVMgfCBQT1cgfCBNT0RVTE8gLT4gZmFsc2VcblxubGV0IHByaW50X2Jpbl9hbGdfb3AgZnggeCBmeSB5IGYgb3AgPVxuICBpZiBiaW5fYWxnX29wX2lzX3ByZWZpeCBvcCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzICglYSkgKCVhKVwiIChiaW5fYWxnX29wX3RvX3N0cmluZyBvcCkgZnggeCBmeSB5XG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiKCVhICVzICVhKVwiIGZ4IHggKGJpbl9hbGdfb3BfdG9fc3RyaW5nIG9wKSBmeSB5XG5cbmxldCBiaW5fYWxnX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChiaW5fYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IGJpbl9hbGdfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIipcIiAtPiBNVUxUXG4gIHwgYFN0cmluZyBcIitcIiAtPiBTVU1cbiAgfCBgU3RyaW5nIFwiL1wiIC0+IERJVlxuICB8IGBTdHJpbmcgXCItXCIgLT4gTUlOVVNcbiAgfCBgU3RyaW5nIFwiXlwiIC0+IFBPV1xuICB8IGBTdHJpbmcgXCJbbW9kXVwiIC0+IE1PRFVMT1xuICB8IGBTdHJpbmcgXCJbbWluXVwiIC0+IE1JTlxuICB8IGBTdHJpbmcgXCJbbWF4XVwiIC0+IE1BWFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGJpbl9hbGdfb3BcIiwgeCkpXG5cbmxldCB1bl9hbGdfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBDT1NJTlVTIC0+IFwiW2Nvc11cIlxuICB8IFNJTlVTIC0+IFwiW3Npbl1cIlxuICB8IFRBTiAtPiBcIlt0YW5dXCJcbiAgfCBFWFAgLT4gXCJbZXhwXVwiXG4gIHwgU1FSVCAtPiBcIltzcXJ0XVwiXG4gIHwgSU5UIC0+IFwiW2ludF1cIlxuICB8IExPRyAtPiBcIltsb2ddXCJcbiAgfCBVTUlOVVMgLT4gXCItXCJcblxubGV0IHByaW50X3VuX2FsZ19vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmICh1bl9hbGdfb3BfdG9fc3RyaW5nIG9wKVxubGV0IHVuX2FsZ19vcF90b19qc29uIG9wID0gYFN0cmluZyAodW5fYWxnX29wX3RvX3N0cmluZyBvcClcblxubGV0IHVuX2FsZ19vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiW2Nvc11cIiAtPiBDT1NJTlVTXG4gIHwgYFN0cmluZyBcIltzaW5dXCIgLT4gU0lOVVNcbiAgfCBgU3RyaW5nIFwiW3Rhbl1cIiAtPiBUQU5cbiAgfCBgU3RyaW5nIFwiW2V4cF1cIiAtPiBFWFBcbiAgfCBgU3RyaW5nIFwiW3NxcnRdXCIgLT4gU1FSVFxuICB8IGBTdHJpbmcgXCJbaW50XVwiIC0+IElOVFxuICB8IGBTdHJpbmcgXCJbbG9nXVwiIC0+IExPR1xuICB8IGBTdHJpbmcgXCItXCIgLT4gVU1JTlVTXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgdW5fYWxnX29wXCIsIHgpKVxuXG5sZXQgc3RhdGVfYWxnX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQ1BVVElNRSAtPiBcIltUc2ltXVwiXG4gIHwgVElNRV9WQVIgLT4gXCJbVF1cIlxuICB8IEVWRU5UX1ZBUiAtPiBcIltFXVwiXG4gIHwgTlVMTF9FVkVOVF9WQVIgLT4gXCJbRS1dXCJcbiAgfCBUTUFYX1ZBUiAtPiBcIltUbWF4XVwiXG4gIHwgRU1BWF9WQVIgLT4gXCJbRW1heF1cIlxuXG5sZXQgcHJpbnRfc3RhdGVfYWxnX29wIGYgb3AgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0YXRlX2FsZ19vcF90b19zdHJpbmcgb3ApXG5cbmxldCBzdGF0ZV9hbGdfb3BfdG9fanNvbiBvcCA9IGBTdHJpbmcgKHN0YXRlX2FsZ19vcF90b19zdHJpbmcgb3ApXG5cbmxldCBzdGF0ZV9hbGdfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIltUc2ltXVwiIC0+IENQVVRJTUVcbiAgfCBgU3RyaW5nIFwiW1RdXCIgLT4gVElNRV9WQVJcbiAgfCBgU3RyaW5nIFwiW0VdXCIgLT4gRVZFTlRfVkFSXG4gIHwgYFN0cmluZyBcIltFLV1cIiAtPiBOVUxMX0VWRU5UX1ZBUlxuICB8IGBTdHJpbmcgXCJbVG1heF1cIiAtPiBUTUFYX1ZBUlxuICB8IGBTdHJpbmcgXCJbRW1heF1cIiAtPiBFTUFYX1ZBUlxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IHN0YXRlX2FsZ19vcFwiLCB4KSlcblxubGV0IGJpbl9ib29sX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgQU5EIC0+IFwiJiZcIlxuICB8IE9SIC0+IFwifHxcIlxuXG5sZXQgcHJpbnRfYmluX2Jvb2xfb3AgZiBvcCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoYmluX2Jvb2xfb3BfdG9fc3RyaW5nIG9wKVxubGV0IGJpbl9ib29sX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nIChiaW5fYm9vbF9vcF90b19zdHJpbmcgb3ApXG5cbmxldCBiaW5fYm9vbF9vcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiJiZcIiAtPiBBTkRcbiAgfCBgU3RyaW5nIFwifHxcIiAtPiBPUlxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGJvb2xlYW4gb3BcIiwgeCkpXG5cbmxldCB1bl9ib29sX29wX3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTk9UIC0+IFwiW25vdF1cIlxuXG5sZXQgcHJpbnRfdW5fYm9vbF9vcCBmIG9wID0gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmICh1bl9ib29sX29wX3RvX3N0cmluZyBvcClcbmxldCB1bl9ib29sX29wX3RvX2pzb24gb3AgPSBgU3RyaW5nICh1bl9ib29sX29wX3RvX3N0cmluZyBvcClcblxubGV0IHVuX2Jvb2xfb3Bfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIltub3RdXCIgLT4gTk9UXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgYm9vbGVhbiBvcFwiLCB4KSlcblxubGV0IGNvbXBhcmVfb3BfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBHUkVBVEVSIC0+IFwiPlwiXG4gIHwgU01BTExFUiAtPiBcIjxcIlxuICB8IEVRVUFMIC0+IFwiPVwiXG4gIHwgRElGRiAtPiBcIiE9XCJcblxubGV0IHByaW50X2NvbXBhcmVfb3AgZiBvcCA9IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiAoY29tcGFyZV9vcF90b19zdHJpbmcgb3ApXG5sZXQgY29tcGFyZV9vcF90b19qc29uIG9wID0gYFN0cmluZyAoY29tcGFyZV9vcF90b19zdHJpbmcgb3ApXG5cbmxldCBjb21wYXJlX29wX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCI+XCIgLT4gR1JFQVRFUlxuICB8IGBTdHJpbmcgXCI8XCIgLT4gU01BTExFUlxuICB8IGBTdHJpbmcgXCI9XCIgLT4gRVFVQUxcbiAgfCBgU3RyaW5nIFwiIT1cIiAtPiBESUZGXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgY29tcGFyZV9vcFwiLCB4KSlcblxubGV0IHByaW50X3Jldl9kZXAgZiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSBpZCAtPiBGb3JtYXQuZnByaW50ZiBmIFwicmF0ZV9vZl9ydWxlIFslaV1cIiBpZFxuICAoKlwicmF0ZSBvZiBydWxlICclYSdcIiAoTW9kZWwucHJpbnRfcnVsZSBlbnYpIGlkKilcbiAgfCBBTEcgaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcImFsZ2VicmFpYyB2YXJpYWJsZSBbJWldXCIgaWRcbiAgKCpcInZhcmlhYmxlICclYSdcIiAoTW9kZWwucHJpbnRfYWxnIGVudikgaWQqKVxuICB8IE1PRElGIGlkIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJpbnRlcnZlbnRpb24gWyVpXVwiIGlkXG5cbmxldCByZXZfZGVwX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgUlVMRSBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJSVUxFXCI7IGBJbnQgaWQgXVxuICB8IEFMRyBpZCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJBTEdcIjsgYEludCBpZCBdXG4gIHwgTU9ESUYgaWQgLT4gYExpc3QgWyBgU3RyaW5nIFwiTU9ESUZcIjsgYEludCBpZCBdXG5cbmxldCByZXZfZGVwX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUlVMRVwiOyBgSW50IGlkIF0gLT4gUlVMRSBpZFxuICB8IGBMaXN0IFsgYFN0cmluZyBcIkFMR1wiOyBgSW50IGlkIF0gLT4gQUxHIGlkXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiTU9ESUZcIjsgYEludCBpZCBdIC0+IE1PRElGIGlkXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJVbmNvcnJlY3QgcmV2X2RlcFwiLCB4KSlcblxubW9kdWxlIERlcFNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gcmV2X2RlcFxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuICBsZXQgcHJpbnQgPSBwcmludF9yZXZfZGVwXG5lbmQpXG5cbm1vZHVsZSBEZXBTZXQgPSBEZXBTZXRNYXAuU2V0XG5cbmxldCBkZXBzZXRfdG9feW9qc29uIHggPVxuICBgTGlzdCAoRGVwU2V0LmZvbGQgKGZ1biB4IGEgLT4gcmV2X2RlcF90b195b2pzb24geCA6OiBhKSB4IFtdKVxuXG5sZXQgZGVwc2V0X29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYE51bGwgLT4gRGVwU2V0LmVtcHR5XG4gIHwgYExpc3QgbCAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB4IC0+IERlcFNldC5hZGQgKHJldl9kZXBfb2ZfeW9qc29uIHgpIGFjYylcbiAgICAgIERlcFNldC5lbXB0eSBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGRlcHNldFwiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IEYgb2YgZmxvYXQgfCBJIG9mIGludCB8IEk2NCBvZiBJbnQ2NC50XG5cbmxldCBjYXN0X2Jpbl9vcCB+b3BfZiA/b3BfaSA/b3BfaTY0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IEYgeCwgRiB5IC0+IEYgKG9wX2YgeCB5KVxuICB8IEkgeCwgRiB5IC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSB5KVxuICB8IEYgeCwgSSB5IC0+IEYgKG9wX2YgeCAoZmxvYXRfb2ZfaW50IHkpKVxuICB8IEkgeCwgSSB5IC0+XG4gICAgKG1hdGNoIG9wX2kgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChmbG9hdF9vZl9pbnQgeCkgKGZsb2F0X29mX2ludCB5KSlcbiAgICB8IFNvbWUgb3BfaSAtPiBJIChvcF9pIHggeSkpXG4gIHwgSSB4LCBJNjQgeSAtPlxuICAgIChtYXRjaCBvcF9pNjQgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChmbG9hdF9vZl9pbnQgeCkgKEludDY0LnRvX2Zsb2F0IHkpKVxuICAgIHwgU29tZSBvcF9pNjQgLT4gSTY0IChvcF9pNjQgKEludDY0Lm9mX2ludCB4KSB5KSlcbiAgfCBJNjQgeCwgSSB5IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBOb25lIC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIChmbG9hdF9vZl9pbnQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4IChJbnQ2NC5vZl9pbnQgeSkpKVxuICB8IEk2NCB4LCBJNjQgeSAtPlxuICAgIChtYXRjaCBvcF9pNjQgd2l0aFxuICAgIHwgTm9uZSAtPiBGIChvcF9mIChJbnQ2NC50b19mbG9hdCB4KSAoSW50NjQudG9fZmxvYXQgeSkpXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4IHkpKVxuICB8IEYgeCwgSTY0IHkgLT4gRiAob3BfZiB4IChJbnQ2NC50b19mbG9hdCB5KSlcbiAgfCBJNjQgeCwgRiB5IC0+IEYgKG9wX2YgKEludDY0LnRvX2Zsb2F0IHgpIHkpXG5cbmxldCBjYXN0X3VuX29wID9vcF9mID9vcF9pID9vcF9pNjQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEYgeCAtPlxuICAgIChtYXRjaCBvcF9mIHdpdGhcbiAgICB8IFNvbWUgb3BfZiAtPiBGIChvcF9mIHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfaSB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuXCJcbiAgICAgIHwgU29tZSBvcF9pIC0+IEkgKG9wX2kgKGludF9vZl9mbG9hdCB4KSkpKVxuICB8IEk2NCB4IC0+XG4gICAgKG1hdGNoIG9wX2k2NCB3aXRoXG4gICAgfCBTb21lIG9wX2k2NCAtPiBJNjQgKG9wX2k2NCB4KVxuICAgIHwgTm9uZSAtPlxuICAgICAgKG1hdGNoIG9wX2Ygd2l0aFxuICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIFwiY2FzdF91bl9vcFwiXG4gICAgICB8IFNvbWUgb3BfZiAtPiBGIChvcF9mIChJbnQ2NC50b19mbG9hdCB4KSkpKVxuICB8IEkgeCAtPlxuICAgIChtYXRjaCBvcF9pIHdpdGhcbiAgICB8IFNvbWUgb3BfaSAtPiBJIChvcF9pIHgpXG4gICAgfCBOb25lIC0+XG4gICAgICAobWF0Y2ggb3BfZiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW52YWxpZF9hcmcgXCJjYXN0X3VuX29wXCJcbiAgICAgIHwgU29tZSBvcF9mIC0+IEYgKG9wX2YgKGZsb2F0X29mX2ludCB4KSkpKVxuXG5sZXQgY29tcGFyZSBuMSBuMiA9XG4gIG1hdGNoIG4xLCBuMiB3aXRoXG4gIHwgRiB4LCBGIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgSSB4LCBJIHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgRiB4LCBJIHkgLT4gU3RkbGliLmNvbXBhcmUgeCAoZmxvYXRfb2ZfaW50IHkpXG4gIHwgSSB4LCBGIHkgLT4gU3RkbGliLmNvbXBhcmUgKGZsb2F0X29mX2ludCB4KSB5XG4gIHwgSSB4LCBJNjQgeSAtPiBTdGRsaWIuY29tcGFyZSAoSW50NjQub2ZfaW50IHgpIHlcbiAgfCBJNjQgeCwgSTY0IHkgLT4gU3RkbGliLmNvbXBhcmUgeCB5XG4gIHwgSTY0IHgsIEkgeSAtPiBTdGRsaWIuY29tcGFyZSB4IChJbnQ2NC5vZl9pbnQgeSlcbiAgfCBGIHgsIEk2NCB5IC0+IFN0ZGxpYi5jb21wYXJlIHggKEludDY0LnRvX2Zsb2F0IHkpXG4gIHwgSTY0IHgsIEYgeSAtPiBTdGRsaWIuY29tcGFyZSAoSW50NjQudG9fZmxvYXQgeCkgeVxuXG5sZXQgaXNfZ3JlYXRlciBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPiAwXG5sZXQgaXNfc21hbGxlciBuMSBuMiA9IGNvbXBhcmUgbjEgbjIgPCAwXG5sZXQgaXNfZXF1YWwgbjEgbjIgPSBjb21wYXJlIG4xIG4yID0gMFxubGV0IGFkZCBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggKy4gKSB+b3BfaTooICsgKSB+b3BfaTY0OkludDY0LmFkZCBuMSBuMlxubGV0IHN1YiBuMSBuMiA9IGNhc3RfYmluX29wIH5vcF9mOiggLS4gKSB+b3BfaTooIC0gKSB+b3BfaTY0OkludDY0LnN1YiBuMSBuMlxubGV0IG11bHQgbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjooICouICkgfm9wX2k6KCAqICkgfm9wX2k2NDpJbnQ2NC5tdWwgbjEgbjJcbmxldCBtaW4gbjEgbjIgPSBjYXN0X2Jpbl9vcCB+b3BfZjptaW4gfm9wX2k6bWluIH5vcF9pNjQ6bWluIG4xIG4yXG5sZXQgbWF4IG4xIG4yID0gY2FzdF9iaW5fb3Agfm9wX2Y6bWF4IH5vcF9pOm1heCB+b3BfaTY0Om1heCBuMSBuMlxuXG5sZXQgcmVtIG4xIG4yID1cbiAgY2FzdF9iaW5fb3Agfm9wX2k6KCBtb2QgKSB+b3BfaTY0OkludDY0LnJlbSB+b3BfZjptb2RfZmxvYXQgbjEgbjJcblxubGV0IGludGVybmFsX2RpdiBuMSBuMiA9XG4gIGNhc3RfYmluX29wIH5vcF9pOiggLyApIH5vcF9pNjQ6SW50NjQuZGl2IH5vcF9mOiggLy4gKSBuMSBuMlxuXG5sZXQgc3VjYyBuID0gY2FzdF91bl9vcCB+b3BfZjooKCArLiApIDEuKSB+b3BfaTpzdWNjIH5vcF9pNjQ6SW50NjQuc3VjYyBuXG5sZXQgcHJlZCBuID0gY2FzdF91bl9vcCB+b3BfZjooZnVuIHggLT4geCAtLiAxLikgfm9wX2k6cHJlZCB+b3BfaTY0OkludDY0LnByZWQgblxubGV0IG5lZyBuID0gY2FzdF91bl9vcCB+b3BfZjooIH4tLiApIH5vcF9pOiggfi0gKSB+b3BfaTY0OkludDY0Lm5lZyBuXG5cbmxldCB0b19mbG9hdCBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgSSB4IC0+IFNvbWUgKGZsb2F0X29mX2ludCB4KVxuICB8IEk2NCB4IC0+IFNvbWUgKEludDY0LnRvX2Zsb2F0IHgpXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBTb21lIHhcbiAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+IE5vbmUpXG5cbmxldCB0b19pbnQgbiA9XG4gIG1hdGNoIG4gd2l0aFxuICB8IEYgeCAtPiBpbnRfb2ZfZmxvYXQgeFxuICB8IEkgeCAtPiB4XG4gIHwgSTY0IHggLT4gSW50NjQudG9faW50IHggKCpNaWdodCBleGNlZWQgdGhlYmlnZ2VzdCAzMiBiaXRzIGludGVnZXIqKVxuXG5sZXQgemVybyA9IEkgMFxuXG5sZXQgaXNfemVybyA9IGZ1bmN0aW9uXG4gIHwgSTY0IHggLT4geCA9IEludDY0Lnplcm9cbiAgfCBJIHggLT4geCA9IDBcbiAgfCBGIHggLT4gVG9vbHMuZmxvYXRfaXNfemVybyB4XG5cbmxldCBvbmUgPSBJIDFcblxubGV0IGlzX3N0cmljdGx5X3Bvc2l0aXZlID0gZnVuY3Rpb25cbiAgfCBGIHggLT4geCA+IDAuXG4gIHwgSSB4IC0+IHggPiAwXG4gIHwgSTY0IHggLT4geCA+IEludDY0Lnplcm9cblxubGV0IHBvc19wb3cgbjEgbjIgPVxuICBjYXN0X2Jpbl9vcCB+b3BfZjooICoqICkgfm9wX2k6VG9vbHMucG93IH5vcF9pNjQ6VG9vbHMucG93NjQgbjEgbjJcblxubGV0IHBvdyB4IG4gPVxuICBpZiBpc196ZXJvIG4gfHwgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuXG4gICAgcG9zX3BvdyB4IG5cbiAgZWxzZSAoXG4gICAgbWF0Y2ggdG9fZmxvYXQgeCB3aXRoXG4gICAgfCBTb21lIHggLT4gcG9zX3BvdyAoRiAoMS4gLy4geCkpIChuZWcgbilcbiAgICB8IE5vbmUgLT4gRiBuYW5cbiAgKVxuXG5sZXQgcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIChzdHJpbmdfb2ZfZmxvYXQgeClcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEkgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiB4XG5cbmxldCBwcmV0dHlfcHJpbnQgZiA9IGZ1bmN0aW9uXG4gIHwgRiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZ1wiIHhcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEkgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWRcIiB4XG5cbmxldCBwcmludF9vcHRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgSSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlZFwiIHhcbiAgfCBJNjQgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJUxkXCIgeFxuICB8IEYgeCAtPlxuICAgIChtYXRjaCBjbGFzc2lmeV9mbG9hdCB4IHdpdGhcbiAgICB8IEZQX3plcm8gfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIChzdHJpbmdfb2ZfZmxvYXQgeClcbiAgICB8IEZQX2luZmluaXRlIHwgRlBfbmFuIC0+ICgpKVxuXG5sZXQgdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBGIHggLT4gc3RyaW5nX29mX2Zsb2F0IHhcbiAgfCBJNjQgeCAtPiBJbnQ2NC50b19zdHJpbmcgeFxuICB8IEkgeCAtPiBzdHJpbmdfb2ZfaW50IHhcblxubGV0IHJlYyBpdGVyaSBmIHggbiA9XG4gIGlmIGlzX3N0cmljdGx5X3Bvc2l0aXZlIG4gdGhlblxuICAgIGl0ZXJpIGYgKGYgbiB4KSAocHJlZCBuKVxuICBlbHNlXG4gICAgeFxuXG5sZXQgcmVjIG1heWJlX2l0ZXJpIGYgeCBuID1cbiAgaWYgaXNfc3RyaWN0bHlfcG9zaXRpdmUgbiB0aGVuIChcbiAgICBtYXRjaCBmIG4geCB3aXRoXG4gICAgfCBOb25lIC0+IHhcbiAgICB8IFNvbWUgeCcgLT4gbWF5YmVfaXRlcmkgZiB4JyAocHJlZCBuKVxuICApIGVsc2VcbiAgICB4XG5cbmxldCBvZl9zdHJpbmcgeCA9XG4gIHRyeSBJIChpbnRfb2Zfc3RyaW5nIHgpIHdpdGggRmFpbHVyZSBfIC0+IEYgKGZsb2F0X29mX3N0cmluZyB4KVxuXG5sZXQgdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBJIHggLT4gYEludCB4XG4gIHwgSTY0IHggLT4gYFN0cmluZyAoSW50NjQudG9fc3RyaW5nIHgpXG4gIHwgRiB4IC0+XG4gICAgKG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IHggd2l0aFxuICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBgRmxvYXQgeFxuICAgIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gYFN0cmluZyAoc3RyaW5nX29mX2Zsb2F0IHgpKVxuXG5sZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgSW50IHggLT4gSSB4XG4gIHwgYEZsb2F0IHggLT4gRiB4XG4gIHwgYFN0cmluZyBuIGFzIHggLT5cbiAgICAodHJ5IEk2NCAoSW50NjQub2Zfc3RyaW5nIG4pXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgKHRyeSBGIChmbG9hdF9vZl9zdHJpbmcgbilcbiAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gTmJyXCIsIHgpKSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYW4gTmJyXCIsIHgpKVxuXG5sZXQgd3JpdGVfdCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9feW9qc29uIGYpXG5cbmxldCBzdHJpbmdfb2ZfdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV90IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgcmVhZF90IHAgbGIgPSBvZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcbmxldCB0X29mX3N0cmluZyBzID0gcmVhZF90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBvZl9iaW5fYWxnX29wID0gZnVuY3Rpb25cbiAgfCBPcGVyYXRvci5NVUxUIC0+IG11bHRcbiAgfCBPcGVyYXRvci5TVU0gLT4gYWRkXG4gIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgZnVuIHggeSAtPlxuICAgICAgaWYgKG5vdCAoaXNfemVybyB5KSkgJiYgaXNfemVybyAocmVtIHggeSkgdGhlblxuICAgICAgICBpbnRlcm5hbF9kaXYgeCB5XG4gICAgICBlbHNlXG4gICAgICAgIGNhc3RfYmluX29wIH5vcF9mOiggLy4gKSB4IHlcbiAgfCBPcGVyYXRvci5NSU5VUyAtPiBzdWJcbiAgfCBPcGVyYXRvci5NT0RVTE8gLT4gcmVtXG4gIHwgT3BlcmF0b3IuTUlOIC0+IG1pblxuICB8IE9wZXJhdG9yLk1BWCAtPiBtYXhcbiAgfCBPcGVyYXRvci5QT1cgLT4gcG93XG5cbmxldCBvZl91bl9hbGdfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkxPRyAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmxvZyB4XG4gIHwgT3BlcmF0b3IuU1FSVCAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnNxcnQgeFxuICB8IE9wZXJhdG9yLkVYUCAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOmV4cCB4XG4gIHwgT3BlcmF0b3IuU0lOVVMgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpzaW4geFxuICB8IE9wZXJhdG9yLkNPU0lOVVMgLT4gZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfZjpjb3MgeFxuICB8IE9wZXJhdG9yLlRBTiAtPiBmdW4geCAtPiBjYXN0X3VuX29wIH5vcF9mOnRhbiB4XG4gIHwgT3BlcmF0b3IuSU5UIC0+XG4gICAgZnVuIHggLT4gY2FzdF91bl9vcCB+b3BfaTooZnVuIG4gLT4gbikgfm9wX2k2NDooZnVuIG4gLT4gbikgeFxuICB8IE9wZXJhdG9yLlVNSU5VUyAtPiBuZWdcblxubGV0IG9mX2NvbXBhcmVfb3AgPSBmdW5jdGlvblxuICB8IE9wZXJhdG9yLkdSRUFURVIgLT4gaXNfZ3JlYXRlclxuICB8IE9wZXJhdG9yLlNNQUxMRVIgLT4gaXNfc21hbGxlclxuICB8IE9wZXJhdG9yLkVRVUFMIC0+IGlzX2VxdWFsXG4gIHwgT3BlcmF0b3IuRElGRiAtPiBmdW4gdiB2JyAtPiBub3QgKGlzX2VxdWFsIHYgdicpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5leGNlcHRpb24gU3ludGF4X0Vycm9yIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuZXhjZXB0aW9uIE1hbGZvcm1lZF9EZWNsIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuZXhjZXB0aW9uIEludGVybmFsX0Vycm9yIG9mIHN0cmluZyBMb2MuYW5ub3RlZFxuXG5sZXQgd2FybmluZ19idWZmZXIgOiAoTG9jLnQgb3B0aW9uICogKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkpIGxpc3QgcmVmID1cbiAgcmVmIFtdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICdhIHQgPSB7IGRlY2xzOiAoc3RyaW5nICogJ2EpIGFycmF5OyBmaW5kZXI6IGludCBNb2RzLlN0cmluZ01hcC50IH1cblxubGV0IG5hbWVfbWFwX29mX2FycmF5ID9mb3JiaWRkZW4gYSA9XG4gIGxldCBiYWQgPVxuICAgIG1hdGNoIGZvcmJpZGRlbiB3aXRoXG4gICAgfCBOb25lIC0+IGZ1biBfIC0+IGZhbHNlXG4gICAgfCBTb21lIHMgLT4gZnVuIHggLT4gTW9kcy5TdHJpbmdTZXQubWVtIHggc1xuICBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIG1hcCAoKHgsIHBvcyksIF8pIC0+XG4gICAgICBpZiBiYWQgeCB8fCBNb2RzLlN0cmluZ01hcC5tZW0geCBtYXAgdGhlblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiTGFiZWwgJ1wiIF4geCBeIFwiJyBhbHJlYWR5IGRlZmluZWRcIiwgcG9zKSlcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgTW9kcy5TdHJpbmdNYXAuZW1wdHkgYVxuXG5sZXQgY3JlYXRlID9mb3JiaWRkZW4gYSA9XG4gIHtcbiAgICBkZWNscyA9IEFycmF5Lm1hcCAoZnVuICgoeCwgXyksIHkpIC0+IHgsIHkpIGE7XG4gICAgZmluZGVyID0gbmFtZV9tYXBfb2ZfYXJyYXkgP2ZvcmJpZGRlbiBhO1xuICB9XG5cbmxldCBjcmVhdGVfZnJvbV9saXN0ID9mb3JiaWRkZW4gbCA9IGNyZWF0ZSA/Zm9yYmlkZGVuIChBcnJheS5vZl9saXN0IGwpXG5cbigqIFRPRE8gc2VlIGlmIHdlIHNob3VsZCBrZWVwIHRoaXMgKilcbmxldCBjcmVhdGVfbm9fbG9jID9mb3JiaWRkZW4gYSA9XG4gIEFycmF5Lm1hcCAoZnVuICh4LCB5KSAtPiAoeCwgTG9jLmR1bW15KSwgeSkgYSB8PiBjcmVhdGUgP2ZvcmJpZGRlblxuXG5sZXQgc2l6ZSBuZCA9IEFycmF5Lmxlbmd0aCBuZC5kZWNsc1xubGV0IGVsdF9uYW1lIG5kIGkgPSBmc3QgbmQuZGVjbHMuKGkpXG5cbmxldCBlbHRfaWQgPyhraW5kID0gXCJlbGVtZW50XCIpIG5kIChzLCBwb3MpID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gcyBuZC5maW5kZXIgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIlxcXCIlc1xcXCIgaXMgbm90IGEgZGVjbGFyZWQgJXMuXCIgcyBraW5kLCBwb3MpKVxuXG5sZXQgcHJpbnQgfnNlcCBwcCBmIG5kID1cbiAgUHAuYXJyYXkgc2VwIChmdW4gaSBmIChuLCBlbCkgLT4gcHAgaSBuIGYgZWwpIGYgbmQuZGVjbHNcblxubGV0IGRlYnVnX3ByaW50IHByIGYgbmQgPVxuICBwcmludCB+c2VwOlBwLnNwYWNlXG4gICAgKGZ1biBpIG4gZiBlbCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslaT4lczogQFs8Mj4lYUBdQF1cIiBpIG4gcHIgZWwpXG4gICAgZiBuZFxuXG5sZXQgZm9sZCBmIGFjYyBuZCA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIGFjYyAobmEsIHgpIC0+IGYgaSBuYSBhY2MgeCkgYWNjIG5kLmRlY2xzXG5cbmxldCBtYXAgZiBuZCA9XG4gIHsgZGVjbHMgPSBBcnJheS5tYXAgKGZ1biAocywgdikgLT4gcywgZiBzIHYpIG5kLmRlY2xzOyBmaW5kZXIgPSBuZC5maW5kZXIgfVxuXG5sZXQgbWFwaSBmIG5kID1cbiAge1xuICAgIGRlY2xzID0gQXJyYXkubWFwaSAoZnVuIGkgKHMsIHYpIC0+IHMsIGYgaSBzIHYpIG5kLmRlY2xzO1xuICAgIGZpbmRlciA9IG5kLmZpbmRlcjtcbiAgfVxuXG5sZXQgZWx0X3ZhbCBuZCBpID0gc25kIG5kLmRlY2xzLihpKVxuXG5sZXQgdG9fanNvbiBhdXggbmQgPVxuICBgTGlzdFxuICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgKGZ1biAoeCwgYSkgYWNjIC0+IGBBc3NvYyBbIFwibmFtZVwiLCBgU3RyaW5nIHg7IFwiZGVjbFwiLCBhdXggYSBdIDo6IGFjYylcbiAgICAgICBuZC5kZWNscyBbXSlcblxubGV0IG9mX2pzb24gYXV4ID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBsIC0+XG4gICAgbGV0IGRlY2xzID1cbiAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgYEFzc29jIFsgKFwibmFtZVwiLCBgU3RyaW5nIHgpOyAoXCJkZWNsXCIsIGEpIF1cbiAgICAgICAgICB8IGBBc3NvYyBbIChcImRlY2xcIiwgYSk7IChcIm5hbWVcIiwgYFN0cmluZyB4KSBdIC0+XG4gICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCBhdXggYVxuICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgdmFsaWQgTmFtZWREZWNsIGVsZW1lbnRcIiwgeCkpKVxuICAgICAgICBsXG4gICAgaW5cbiAgICBjcmVhdGUgZGVjbHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIHZhbGlkIE5hbWVkRGVjbFwiLCB4KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCByZW1vdmVfc3VmZml4X2FmdGVyX2xhc3Rfb2NjdXJyZW5jZSBwIGxpc3QgPVxuICBsZXQgcmVjIGF1eCBsaXN0IGJ1ZmZlciBvdXRwdXQgPVxuICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgIHwgaCA6OiB0IHdoZW4gcCBoIC0+IGF1eCB0IFtdICgoaCA6OiBidWZmZXIpIDo6IG91dHB1dClcbiAgICB8IGggOjogdCAtPiBhdXggdCAoaCA6OiBidWZmZXIpIG91dHB1dFxuICAgIHwgW10gLT4gb3V0cHV0XG4gIGluXG4gIGxldCByZXZfY29uY2F0IGxpc3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChMaXN0LmZvbGRfbGVmdCAoZnVuIG91dHB1dCBhIC0+IGEgOjogb3V0cHV0KSkgW10gbGlzdFxuICBpblxuICByZXZfY29uY2F0IChhdXggbGlzdCBbXSBbXSlcblxubGV0IHJlYyBsYXN0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcImxpc3RfbGFzdFwiXG4gIHwgWyB4IF0gLT4geFxuICB8IF8gOjogbCAtPiBsYXN0IGxcblxubGV0IHJlYyBhdXhfcG9wX2xhc3QgYWNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBmYWlsd2l0aCBcImxpc3RfcG9wX2xhc3RcIlxuICB8IFsgeCBdIC0+IExpc3QucmV2IGFjYywgeFxuICB8IGggOjogdCAtPiBhdXhfcG9wX2xhc3QgKGggOjogYWNjKSB0XG5cbmxldCBwb3BfbGFzdCBsID0gYXV4X3BvcF9sYXN0IFtdIGxcblxubGV0IGNvbnNfb3B0aW9uIGggdCA9XG4gIG1hdGNoIGggd2l0aFxuICB8IFNvbWUgeCAtPiB4IDo6IHRcbiAgfCBOb25lIC0+IHRcblxubGV0IHJlYyBzbWFydF9maWx0ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgdCA6OiBxIGFzIGwgLT5cbiAgICBsZXQgcScgPSBzbWFydF9maWx0ZXIgZiBxIGluXG4gICAgaWYgZiB0IHRoZW5cbiAgICAgIGlmIHEgPT0gcScgdGhlblxuICAgICAgICBsXG4gICAgICBlbHNlXG4gICAgICAgIHQgOjogcSdcbiAgICBlbHNlXG4gICAgICBxJ1xuICB8IGwgLT4gbFxuXG5sZXQgcmVjIHNtYXJ0X21hcCBmID0gZnVuY3Rpb25cbiAgfCB0IDo6IHEgYXMgbCAtPlxuICAgIGxldCBxJyA9IHNtYXJ0X21hcCBmIHEgaW5cbiAgICBsZXQgdCcgPSBmIHQgaW5cbiAgICBpZiB0JyA9PSB0ICYmIHEnID09IHEgdGhlblxuICAgICAgbFxuICAgIGVsc2VcbiAgICAgIHQnIDo6IHEnXG4gIHwgbCAtPiBsXG5cbmxldCByZXZfbWFwaSBmIGwgPVxuICBsZXQgcmVjIGF1eF9tYXBpIGkgYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgaCA6OiBxIC0+IGF1eF9tYXBpIChwcmVkIGkpIChmIGkgaCA6OiBhY2MpIHFcbiAgaW5cbiAgYXV4X21hcGkgKExpc3QubGVuZ3RoIGwgLSAxKSBbXSBsXG5cbmxldCByZWMgbWFwX29wdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbXVxuICB8IGggOjogcSAtPiBjb25zX29wdGlvbiAoZiBoKSAobWFwX29wdGlvbiBmIHEpXG5cbmxldCBleGlzdHNfdW5pcSBmIGwgPVxuICBsZXQgcmVjIHNlY29uZCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiB0cnVlXG4gICAgfCBoIDo6IHQgLT4gKG5vdCAoZiBoKSkgJiYgc2Vjb25kIHRcbiAgaW5cbiAgbGV0IHJlYyBmaXJzdCA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBmYWxzZVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZiBmIGggdGhlblxuICAgICAgICBzZWNvbmQgdFxuICAgICAgZWxzZVxuICAgICAgICBmaXJzdCB0XG4gIGluXG4gIGZpcnN0IGxcblxubGV0IG1lcmdlX3VuaXEgY21wIGwxIGwyID1cbiAgbGV0IHJlYyBhdXhfbWVyZ2VfdW5pcSBsMSBsMiBrID1cbiAgICBtYXRjaCBsMSwgbDIgd2l0aFxuICAgIHwgW10sIF8gLT4gayBsMlxuICAgIHwgXywgW10gLT4gayBsMVxuICAgIHwgaDEgOjogdDEsIGgyIDo6IHQyIC0+XG4gICAgICBsZXQgYyA9IGNtcCBoMSBoMiBpblxuICAgICAgaWYgYyA8IDAgdGhlblxuICAgICAgICBhdXhfbWVyZ2VfdW5pcSB0MSBsMiAoZnVuIG8gLT5cbiAgICAgICAgICAgIGlmIG8gPT0gdDEgdGhlblxuICAgICAgICAgICAgICBrIGwxXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGsgKGgxIDo6IG8pKVxuICAgICAgZWxzZSBpZiBjID4gMCB0aGVuXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIGwxIHQyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MiB0aGVuXG4gICAgICAgICAgICAgIGsgbDJcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDIgOjogbykpXG4gICAgICBlbHNlXG4gICAgICAgIGF1eF9tZXJnZV91bmlxIHQxIHQyIChmdW4gbyAtPlxuICAgICAgICAgICAgaWYgbyA9PSB0MSB0aGVuXG4gICAgICAgICAgICAgIGsgbDFcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgayAoaDEgOjogbykpXG4gIGluXG4gIGF1eF9tZXJnZV91bmlxIGwxIGwyIChmdW4geCAtPiB4KVxuXG5sZXQgcmVjIHJldl9tYXBfYXBwZW5kIGYgbCBhY2MgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBhY2NcbiAgfCBoIDo6IHQgLT4gcmV2X21hcF9hcHBlbmQgZiB0IChmIGggOjogYWNjKVxuXG5sZXQgcmVjIG1hcF9mbGF0dGVuIGYgPSBmdW5jdGlvblxuICAoKiBsaXN0X2JpbmQgKilcbiAgfCBbXSAtPiBbXVxuICB8IGggOjogdCAtPiBMaXN0LmFwcGVuZCAoZiBoKSAobWFwX2ZsYXR0ZW4gZiB0KVxuKCogTGlzdC5yZXZcbiAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIHggeSAtPiBMaXN0LnJldl9hcHBlbmQgeSB4KSBbXSAoTGlzdC5yZXZfbWFwIGYgbCkpXG4qKVxuXG5sZXQgcmVtb3ZlX2NvbnNlY3V0aXZlX2RvdWJsZSBsID1cbiAgbGV0IHJlYyBhdXggbGFzdCBsIGFjYyA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBoIDo6IHEgd2hlbiBsYXN0ID0gaCAtPiBhdXggbGFzdCBxIGFjY1xuICAgIHwgaCA6OiBxIC0+IGF1eCBoIHEgKGggOjogYWNjKVxuICAgIHwgW10gLT4gTGlzdC5yZXYgYWNjXG4gIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdXG4gIHwgaCA6OiBxIC0+IGF1eCBoIHEgWyBoIF1cblxubGV0IHJlYyBmb2xkX3JpZ2h0X21hcCBmIGwgeCA9XG4gIG1hdGNoIGwgd2l0aFxuICB8IFtdIC0+IFtdLCB4XG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0IHQnLCB4JyA9IGZvbGRfcmlnaHRfbWFwIGYgdCB4IGluXG4gICAgbGV0IGgnLCB4JycgPSBmIGggeCcgaW5cbiAgICBoJyA6OiB0JywgeCcnXG5cbmxldCByZWMgZm9sZF9sZWZ0MiBmIHggbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiB4XG4gIHwgW10sIF8gOjogXyB8IF8gOjogXywgW10gLT4gcmFpc2UgKEludmFsaWRfYXJndW1lbnQgXCJsaXN0X2ZvbGRfbGVmdDJcIilcbiAgfCBoMSA6OiB0MSwgaDIgOjogdDIgLT4gZm9sZF9sZWZ0MiBmIChmIHggaDEgaDIpIHQxIHQyXG5cbmxldCByYW5kb20gcnMgbCA9IExpc3QubnRoIGwgKFJhbmRvbS5TdGF0ZS5pbnQgcnMgKExpc3QubGVuZ3RoIGwpKVxuXG5sZXQgZmluZF9vcHRpb24gKHAgOiAnYSAtPiBib29sKSAobCA6ICdhIGxpc3QpIDogJ2Egb3B0aW9uID1cbiAgdHJ5IFNvbWUgKExpc3QuZmluZCBwIGwpIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcblxubW9kdWxlIEluZml4ID0gc3RydWN0XG4gIGxldCAoICQkICkgPSBjb25zX29wdGlvblxuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGJhZzogaW50IE1vZHMuRHluQXJyYXkudDtcbiAgbXV0YWJsZSBzaXplOiBpbnQ7XG4gIGRpY3Q6IChpbnQsIGludCkgSGFzaHRibC50O1xufVxuXG5sZXQgY3JlYXRlIHNpemUgPVxuICB7IHNpemUgPSAwOyBiYWcgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSBzaXplICgtMSk7IGRpY3QgPSBIYXNodGJsLmNyZWF0ZSBzaXplIH1cblxubGV0IHByaW50IGYgcyA9XG4gIGlmIHMuc2l6ZSA8PSAwIHRoZW5cbiAgICBQcC5lbXB0eV9zZXQgZlxuICBlbHNlIChcbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJ7IFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBpID0gMCB0byBzLnNpemUgLSAyIGRvXG4gICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZiAoTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgaSk7XG4gICAgICAgIFBwLmNvbW1hIGZcbiAgICAgIGRvbmVcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5wcF9wcmludF9pbnQgZiAoTW9kcy5EeW5BcnJheS5nZXQgcy5iYWcgKHMuc2l6ZSAtIDEpKSBpblxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiB9XCJcbiAgKVxuXG5sZXQgaXNfZW1wdHkgcyA9IHMuc2l6ZSA9IDBcblxubGV0IGFkZCB4IHMgPVxuICBpZiBub3QgKEhhc2h0YmwubWVtIHMuZGljdCB4KSB0aGVuIChcbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBzLmJhZyBzLnNpemUgeCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVwbGFjZSBzLmRpY3QgeCBzLnNpemUgaW5cbiAgICBzLnNpemUgPC0gc3VjYyBzLnNpemVcbiAgKVxuXG5sZXQgcmVtb3ZlIHggcyA9XG4gIHRyeVxuICAgIGxldCBwb3MgPSBIYXNodGJsLmZpbmQgcy5kaWN0IHggaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlbW92ZSBzLmRpY3QgeCBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwb3MgPCBzLnNpemUgLSAxIHRoZW4gKFxuICAgICAgICBsZXQgbGFzdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHMuYmFnIChzLnNpemUgLSAxKSBpblxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2Ugcy5kaWN0IGxhc3QgcG9zIGluXG4gICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHMuYmFnIHBvcyBsYXN0XG4gICAgICApXG4gICAgaW5cbiAgICBzLnNpemUgPC0gcHJlZCBzLnNpemVcbiAgd2l0aCBOb3RfZm91bmQgLT4gKClcblxubGV0IHNpemUgcyA9IHMuc2l6ZVxuXG5sZXQgcmFuZG9tIHJzIHMgPVxuICBpZiBzLnNpemUgPCAxIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyAoUmFuZG9tLlN0YXRlLmludCBycyBzLnNpemUpKVxuXG5sZXQgZm9sZCBmIHMgYWNjID1cbiAgVG9vbHMucmVjdGkgKGZ1biBhY2MgaSAtPiBmIChNb2RzLkR5bkFycmF5LmdldCBzLmJhZyBpKSBhY2MpIGFjYyBzLnNpemVcblxubGV0IG1lbSB4IHMgPSBIYXNodGJsLm1lbSBzLmRpY3QgeFxuIiwidHlwZSAnYSB0ID0gJ2EgbGlzdFxuXG5sZXQgY3JlYXRlIF9pIF9kZWZhdWx0ID0gW11cbmxldCBhZGQgeCB0ID0geCA6OiB0XG5sZXQgaXRlciBmIHQgPSBMaXN0Lml0ZXIgZiAoTGlzdC5yZXYgdClcbmxldCBjbGVhbiBfID0gW11cbiIsIm1vZHVsZSB0eXBlIEhhc2ggPSBzaWdcbiAgdHlwZSBoYXNoZWRfbGlzdFxuICB0eXBlIGVsdFxuICB0eXBlIGNhY2hlXG5cbiAgdmFsIGludF9vZl9oYXNoZWRfbGlzdCA6IGhhc2hlZF9saXN0IC0+IGludFxuICB2YWwgY29tcGFyZSA6IGhhc2hlZF9saXN0IC0+IGhhc2hlZF9saXN0IC0+IGludFxuICB2YWwgaW5pdCA6IHVuaXQgLT4gY2FjaGVcbiAgdmFsIGhhc2ggOiBjYWNoZSAtPiBlbHQgbGlzdCAtPiBjYWNoZSAqIGhhc2hlZF9saXN0XG4gIHZhbCBjb25zIDogY2FjaGUgLT4gZWx0IC0+IGhhc2hlZF9saXN0IC0+IGNhY2hlICogaGFzaGVkX2xpc3RcbiAgdmFsIGVtcHR5IDogaGFzaGVkX2xpc3RcbiAgdmFsIHByaW50IDogRm9ybWF0LmZvcm1hdHRlciAtPiBoYXNoZWRfbGlzdCAtPiB1bml0XG4gIHZhbCBwcmludF9jYWNoZSA6IEZvcm1hdC5mb3JtYXR0ZXIgLT4gY2FjaGUgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBNYWtlID1cbmZ1bmN0b3JcbiAgKEEgOiBTZXRNYXAuT3JkZXJlZFR5cGUpXG4gIC0+XG4gIHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gQS50XG4gICAgdHlwZSBlbHRfaWQgPSBpbnRcbiAgICB0eXBlIGhhc2hlZF9saXN0ID0gaW50XG5cbiAgICBsZXQgaW50X29mX2hhc2hlZF9saXN0IChoIDogaGFzaGVkX2xpc3QpIDogaW50ID0gaFxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gICAgbW9kdWxlIFNldE1hcCA9IFNldE1hcC5NYWtlIChBKVxuXG4gICAgdHlwZSBjYWNoZSA9IHtcbiAgICAgIGRpY3Rpb25hcnk6IGVsdF9pZCBTZXRNYXAuTWFwLnQ7XG4gICAgICBuZXh0X2VsdF9pZDogZWx0X2lkO1xuICAgICAgY29uczogaGFzaGVkX2xpc3Qgb3B0aW9uIE1vZHMuRHluQXJyYXkudCBvcHRpb24gTW9kcy5EeW5BcnJheS50O1xuICAgICAgbmV4dF9saXN0X2lkOiBoYXNoZWRfbGlzdDtcbiAgICB9XG5cbiAgICBsZXQgZnN0X2VsdF9pZCA9IDFcbiAgICBsZXQgbmV4dF9lbHRfaWQgPSBzdWNjXG5cbiAgICBsZXQgZnJlc2hfZWx0X2lkIGNhY2hlID1cbiAgICAgICggY2FjaGUubmV4dF9lbHRfaWQsXG4gICAgICAgIHsgY2FjaGUgd2l0aCBuZXh0X2VsdF9pZCA9IG5leHRfZWx0X2lkIGNhY2hlLm5leHRfZWx0X2lkIH0gKVxuXG4gICAgbGV0IGZzdF9saXN0X2lkID0gMVxuICAgIGxldCBuZXh0X2xpc3RfaWQgPSBzdWNjXG5cbiAgICBsZXQgZnJlc2hfbGlzdF9pZCBjYWNoZSA9XG4gICAgICAoIHsgY2FjaGUgd2l0aCBuZXh0X2xpc3RfaWQgPSBuZXh0X2xpc3RfaWQgY2FjaGUubmV4dF9saXN0X2lkIH0sXG4gICAgICAgIGNhY2hlLm5leHRfbGlzdF9pZCApXG5cbiAgICBsZXQgaW5pdCAoKSA9XG4gICAgICB7XG4gICAgICAgIGRpY3Rpb25hcnkgPSBTZXRNYXAuTWFwLmVtcHR5O1xuICAgICAgICBuZXh0X2VsdF9pZCA9IGZzdF9lbHRfaWQ7XG4gICAgICAgIGNvbnMgPSBNb2RzLkR5bkFycmF5LmNyZWF0ZSAwIE5vbmU7XG4gICAgICAgIG5leHRfbGlzdF9pZCA9IGZzdF9saXN0X2lkO1xuICAgICAgfVxuXG4gICAgbGV0IGVtcHR5ID0gMFxuXG4gICAgbGV0IGhhc2hfZWx0IGNhY2hlIGVsdCA9XG4gICAgICBtYXRjaCBTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIGVsdCBjYWNoZS5kaWN0aW9uYXJ5IHdpdGhcbiAgICAgIHwgU29tZSBpIC0+IGNhY2hlLCBpXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGlkLCBjYWNoZSA9IGZyZXNoX2VsdF9pZCBjYWNoZSBpblxuICAgICAgICB7IGNhY2hlIHdpdGggZGljdGlvbmFyeSA9IFNldE1hcC5NYXAuYWRkIGVsdCBpZCBjYWNoZS5kaWN0aW9uYXJ5IH0sIGlkXG5cbiAgICBsZXQgY29ucyBjYWNoZSBoZWFkIHRhaWwgPVxuICAgICAgbGV0IGNhY2hlLCBoYXNoX2hlYWQgPSBoYXNoX2VsdCBjYWNoZSBoZWFkIGluXG4gICAgICBsZXQgc3VidGFiID1cbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgY2FjaGUuY29ucyBoYXNoX2hlYWQgd2l0aFxuICAgICAgICB8IFNvbWUgc3VidGFiIC0+IHN1YnRhYlxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgc3VidGFiID0gTW9kcy5EeW5BcnJheS5jcmVhdGUgMCBOb25lIGluXG4gICAgICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2FjaGUuY29ucyBoYXNoX2hlYWQgKFNvbWUgc3VidGFiKSBpblxuICAgICAgICAgIHN1YnRhYlxuICAgICAgaW5cbiAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHN1YnRhYiB0YWlsIHdpdGhcbiAgICAgIHwgU29tZSBoYXNoIC0+IGNhY2hlLCBoYXNoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IGNhY2hlLCBoYXNoID0gZnJlc2hfbGlzdF9pZCBjYWNoZSBpblxuICAgICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBzdWJ0YWIgdGFpbCAoU29tZSBoYXNoKSBpblxuICAgICAgICBjYWNoZSwgaGFzaFxuXG4gICAgbGV0IHJlYyBoYXNoIGNhY2hlIGxpc3QgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGNhY2hlLCBlbXB0eVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgbGV0IGNhY2hlLCB0ID0gaGFzaCBjYWNoZSB0IGluXG4gICAgICAgIGNvbnMgY2FjaGUgaCB0XG5cbiAgICBsZXQgcHJpbnQgZm9ybWF0dGVyID0gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiJWlcIlxuXG4gICAgbGV0IHByaW50X2NhY2hlIGZvcm1hdHRlciBjYWNoZSA9XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXJcbiAgICAgICAgICBcIkNhY2hlXFxuIG5leHRfZnJlc2hfbGlzdF9pZDogJWk7IG5leHRfZnJlc2hfZWx0X2lkOiAlaVxcblwiXG4gICAgICAgICAgY2FjaGUubmV4dF9saXN0X2lkIGNhY2hlLm5leHRfZWx0X2lkXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgU2V0TWFwLk1hcC5pdGVyXG4gICAgICAgICAgKGZ1biBhIGkgLT4gRm9ybWF0LmZwcmludGYgZm9ybWF0dGVyIFwiRElDOiVhOiVpXFxuXCIgQS5wcmludCBhIGkpXG4gICAgICAgICAgY2FjaGUuZGljdGlvbmFyeVxuICAgICAgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBhIG9wdCAtPlxuICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIG9wdCAtPlxuICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5pdGVyaVxuICAgICAgICAgICAgICAoZnVuIGIgayAtPlxuICAgICAgICAgICAgICAgIG1hdGNoIGsgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgU29tZSBrIC0+IEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiglaSwlaSktPiVpIFxcblwiIGEgYiBrKVxuICAgICAgICAgICAgICBvcHQpXG4gICAgICAgIGNhY2hlLmNvbnNcbiAgZW5kXG4iLCJ0eXBlIHQgPSB7IG51bTogaW50OyBkZW46IGludCB9XG5cbmxldCBzaWduIGYgPVxuICBpZiBmLm51bSA9IDAgdGhlblxuICAgIHsgbnVtID0gMDsgZGVuID0gMSB9XG4gIGVsc2UgaWYgZi5kZW4gPCAwIHRoZW5cbiAgICB7IG51bSA9IC1mLm51bTsgZGVuID0gLWYuZGVuIH1cbiAgZWxzZVxuICAgIGZcblxubGV0IHNpbXBsaWZ5IGYgPVxuICBsZXQgZ2NkID0gVG9vbHMuZ2NkXzIgZi5udW0gZi5kZW4gaW5cbiAgc2lnbiB7IG51bSA9IGYubnVtIC8gZ2NkOyBkZW4gPSBmLmRlbiAvIGdjZCB9XG5cbmxldCBhZGQgYSBiID1cbiAgc2ltcGxpZnkgeyBudW0gPSAoYS5udW0gKiBiLmRlbikgKyAoYi5udW0gKiBhLmRlbik7IGRlbiA9IGIuZGVuICogYS5kZW4gfVxuXG5sZXQgb3AgZiA9IHsgZiB3aXRoIG51bSA9IC1mLm51bSB9XG5sZXQgc3ViIGEgYiA9IGFkZCBhIChvcCBiKVxubGV0IG11bHQgYSBiID0gc2ltcGxpZnkgeyBudW0gPSBhLm51bSAqIGIubnVtOyBkZW4gPSBhLmRlbiAqIGIuZGVuIH1cblxubGV0IGludiBhID1cbiAgaWYgYS5udW0gPSAwIHRoZW5cbiAgICBOb25lXG4gIGVsc2VcbiAgICBTb21lIHsgbnVtID0gYS5kZW47IGRlbiA9IGEubnVtIH1cblxubGV0IGRpdiBhIGIgPVxuICBtYXRjaCBpbnYgYiB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSBiX2ludiAtPiBTb21lIChtdWx0IGEgYl9pbnYpXG5cbmxldCB6ZXJvID0geyBudW0gPSAwOyBkZW4gPSAxIH1cbmxldCBpc19lcXVhbCBhIGIgPSBhID0gYlxubGV0IG9mX2ludCBpID0gc2ltcGxpZnkgeyBudW0gPSBpOyBkZW4gPSAxIH1cbmxldCBpc196ZXJvIGEgPSBhLm51bSA9IDBcbmxldCBvbmUgPSBvZl9pbnQgMVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB0ID0geyB3YWl0aW5nX2VsdHM6ICdhIGxpc3Q7IGxpc3Q6ICdhIGxpc3QgfVxuXG5sZXQgZW1wdHkgPSB7IHdhaXRpbmdfZWx0cyA9IFtdOyBsaXN0ID0gW10gfVxubGV0IGlzX2VtcHR5IHQgPSB0LndhaXRpbmdfZWx0cyA9IFtdICYmIHQubGlzdCA9IFtdXG5sZXQgcHVzaCBhIHQgPSB7IHQgd2l0aCB3YWl0aW5nX2VsdHMgPSBhIDo6IHQud2FpdGluZ19lbHRzIH1cblxubGV0IHJlYyBwb3AgdCA9XG4gIG1hdGNoIHQubGlzdCB3aXRoXG4gIHwgaGVhZCA6OiB0YWlsIC0+IHsgdCB3aXRoIGxpc3QgPSB0YWlsIH0sIFNvbWUgaGVhZFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIHQud2FpdGluZ19lbHRzIHdpdGhcbiAgICB8IFtdIC0+IHQsIE5vbmVcbiAgICB8IGxpc3QgLT4gcG9wIHsgd2FpdGluZ19lbHRzID0gW107IGxpc3QgPSBMaXN0LnJldiBsaXN0IH0pXG4iLCIoKiBDb3B5cmlnaHQgKGMpIDIwMTEsIEpvbmF0aGFuIERlcnF1ZSAtIE1JVCBsaWNlbnNlZCAqKVxuXG5sZXQgKCAmJiYgKSA9IEludDMyLmxvZ2FuZFxubGV0ICggXl5eICkgPSBJbnQzMi5sb2d4b3JcbmxldCAoID4+PiApID0gSW50MzIuc2hpZnRfcmlnaHRfbG9naWNhbFxuXG5sZXQgY3JjX3RhYmxlID1cbiAgW3xcbiAgICAweDAwMDAwMDAwbDtcbiAgICAweDc3MDczMDk2bDtcbiAgICAweGVlMGU2MTJjbDtcbiAgICAweDk5MDk1MWJhbDtcbiAgICAweDA3NmRjNDE5bDtcbiAgICAweDcwNmFmNDhmbDtcbiAgICAweGU5NjNhNTM1bDtcbiAgICAweDllNjQ5NWEzbDtcbiAgICAweDBlZGI4ODMybDtcbiAgICAweDc5ZGNiOGE0bDtcbiAgICAweGUwZDVlOTFlbDtcbiAgICAweDk3ZDJkOTg4bDtcbiAgICAweDA5YjY0YzJibDtcbiAgICAweDdlYjE3Y2JkbDtcbiAgICAweGU3YjgyZDA3bDtcbiAgICAweDkwYmYxZDkxbDtcbiAgICAweDFkYjcxMDY0bDtcbiAgICAweDZhYjAyMGYybDtcbiAgICAweGYzYjk3MTQ4bDtcbiAgICAweDg0YmU0MWRlbDtcbiAgICAweDFhZGFkNDdkbDtcbiAgICAweDZkZGRlNGVibDtcbiAgICAweGY0ZDRiNTUxbDtcbiAgICAweDgzZDM4NWM3bDtcbiAgICAweDEzNmM5ODU2bDtcbiAgICAweDY0NmJhOGMwbDtcbiAgICAweGZkNjJmOTdhbDtcbiAgICAweDhhNjVjOWVjbDtcbiAgICAweDE0MDE1YzRmbDtcbiAgICAweDYzMDY2Y2Q5bDtcbiAgICAweGZhMGYzZDYzbDtcbiAgICAweDhkMDgwZGY1bDtcbiAgICAweDNiNmUyMGM4bDtcbiAgICAweDRjNjkxMDVlbDtcbiAgICAweGQ1NjA0MWU0bDtcbiAgICAweGEyNjc3MTcybDtcbiAgICAweDNjMDNlNGQxbDtcbiAgICAweDRiMDRkNDQ3bDtcbiAgICAweGQyMGQ4NWZkbDtcbiAgICAweGE1MGFiNTZibDtcbiAgICAweDM1YjVhOGZhbDtcbiAgICAweDQyYjI5ODZjbDtcbiAgICAweGRiYmJjOWQ2bDtcbiAgICAweGFjYmNmOTQwbDtcbiAgICAweDMyZDg2Y2UzbDtcbiAgICAweDQ1ZGY1Yzc1bDtcbiAgICAweGRjZDYwZGNmbDtcbiAgICAweGFiZDEzZDU5bDtcbiAgICAweDI2ZDkzMGFjbDtcbiAgICAweDUxZGUwMDNhbDtcbiAgICAweGM4ZDc1MTgwbDtcbiAgICAweGJmZDA2MTE2bDtcbiAgICAweDIxYjRmNGI1bDtcbiAgICAweDU2YjNjNDIzbDtcbiAgICAweGNmYmE5NTk5bDtcbiAgICAweGI4YmRhNTBmbDtcbiAgICAweDI4MDJiODllbDtcbiAgICAweDVmMDU4ODA4bDtcbiAgICAweGM2MGNkOWIybDtcbiAgICAweGIxMGJlOTI0bDtcbiAgICAweDJmNmY3Yzg3bDtcbiAgICAweDU4Njg0YzExbDtcbiAgICAweGMxNjExZGFibDtcbiAgICAweGI2NjYyZDNkbDtcbiAgICAweDc2ZGM0MTkwbDtcbiAgICAweDAxZGI3MTA2bDtcbiAgICAweDk4ZDIyMGJjbDtcbiAgICAweGVmZDUxMDJhbDtcbiAgICAweDcxYjE4NTg5bDtcbiAgICAweDA2YjZiNTFmbDtcbiAgICAweDlmYmZlNGE1bDtcbiAgICAweGU4YjhkNDMzbDtcbiAgICAweDc4MDdjOWEybDtcbiAgICAweDBmMDBmOTM0bDtcbiAgICAweDk2MDlhODhlbDtcbiAgICAweGUxMGU5ODE4bDtcbiAgICAweDdmNmEwZGJibDtcbiAgICAweDA4NmQzZDJkbDtcbiAgICAweDkxNjQ2Yzk3bDtcbiAgICAweGU2NjM1YzAxbDtcbiAgICAweDZiNmI1MWY0bDtcbiAgICAweDFjNmM2MTYybDtcbiAgICAweDg1NjUzMGQ4bDtcbiAgICAweGYyNjIwMDRlbDtcbiAgICAweDZjMDY5NWVkbDtcbiAgICAweDFiMDFhNTdibDtcbiAgICAweDgyMDhmNGMxbDtcbiAgICAweGY1MGZjNDU3bDtcbiAgICAweDY1YjBkOWM2bDtcbiAgICAweDEyYjdlOTUwbDtcbiAgICAweDhiYmViOGVhbDtcbiAgICAweGZjYjk4ODdjbDtcbiAgICAweDYyZGQxZGRmbDtcbiAgICAweDE1ZGEyZDQ5bDtcbiAgICAweDhjZDM3Y2YzbDtcbiAgICAweGZiZDQ0YzY1bDtcbiAgICAweDRkYjI2MTU4bDtcbiAgICAweDNhYjU1MWNlbDtcbiAgICAweGEzYmMwMDc0bDtcbiAgICAweGQ0YmIzMGUybDtcbiAgICAweDRhZGZhNTQxbDtcbiAgICAweDNkZDg5NWQ3bDtcbiAgICAweGE0ZDFjNDZkbDtcbiAgICAweGQzZDZmNGZibDtcbiAgICAweDQzNjllOTZhbDtcbiAgICAweDM0NmVkOWZjbDtcbiAgICAweGFkNjc4ODQ2bDtcbiAgICAweGRhNjBiOGQwbDtcbiAgICAweDQ0MDQyZDczbDtcbiAgICAweDMzMDMxZGU1bDtcbiAgICAweGFhMGE0YzVmbDtcbiAgICAweGRkMGQ3Y2M5bDtcbiAgICAweDUwMDU3MTNjbDtcbiAgICAweDI3MDI0MWFhbDtcbiAgICAweGJlMGIxMDEwbDtcbiAgICAweGM5MGMyMDg2bDtcbiAgICAweDU3NjhiNTI1bDtcbiAgICAweDIwNmY4NWIzbDtcbiAgICAweGI5NjZkNDA5bDtcbiAgICAweGNlNjFlNDlmbDtcbiAgICAweDVlZGVmOTBlbDtcbiAgICAweDI5ZDljOTk4bDtcbiAgICAweGIwZDA5ODIybDtcbiAgICAweGM3ZDdhOGI0bDtcbiAgICAweDU5YjMzZDE3bDtcbiAgICAweDJlYjQwZDgxbDtcbiAgICAweGI3YmQ1YzNibDtcbiAgICAweGMwYmE2Y2FkbDtcbiAgICAweGVkYjg4MzIwbDtcbiAgICAweDlhYmZiM2I2bDtcbiAgICAweDAzYjZlMjBjbDtcbiAgICAweDc0YjFkMjlhbDtcbiAgICAweGVhZDU0NzM5bDtcbiAgICAweDlkZDI3N2FmbDtcbiAgICAweDA0ZGIyNjE1bDtcbiAgICAweDczZGMxNjgzbDtcbiAgICAweGUzNjMwYjEybDtcbiAgICAweDk0NjQzYjg0bDtcbiAgICAweDBkNmQ2YTNlbDtcbiAgICAweDdhNmE1YWE4bDtcbiAgICAweGU0MGVjZjBibDtcbiAgICAweDkzMDlmZjlkbDtcbiAgICAweDBhMDBhZTI3bDtcbiAgICAweDdkMDc5ZWIxbDtcbiAgICAweGYwMGY5MzQ0bDtcbiAgICAweDg3MDhhM2QybDtcbiAgICAweDFlMDFmMjY4bDtcbiAgICAweDY5MDZjMmZlbDtcbiAgICAweGY3NjI1NzVkbDtcbiAgICAweDgwNjU2N2NibDtcbiAgICAweDE5NmMzNjcxbDtcbiAgICAweDZlNmIwNmU3bDtcbiAgICAweGZlZDQxYjc2bDtcbiAgICAweDg5ZDMyYmUwbDtcbiAgICAweDEwZGE3YTVhbDtcbiAgICAweDY3ZGQ0YWNjbDtcbiAgICAweGY5YjlkZjZmbDtcbiAgICAweDhlYmVlZmY5bDtcbiAgICAweDE3YjdiZTQzbDtcbiAgICAweDYwYjA4ZWQ1bDtcbiAgICAweGQ2ZDZhM2U4bDtcbiAgICAweGExZDE5MzdlbDtcbiAgICAweDM4ZDhjMmM0bDtcbiAgICAweDRmZGZmMjUybDtcbiAgICAweGQxYmI2N2YxbDtcbiAgICAweGE2YmM1NzY3bDtcbiAgICAweDNmYjUwNmRkbDtcbiAgICAweDQ4YjIzNjRibDtcbiAgICAweGQ4MGQyYmRhbDtcbiAgICAweGFmMGExYjRjbDtcbiAgICAweDM2MDM0YWY2bDtcbiAgICAweDQxMDQ3YTYwbDtcbiAgICAweGRmNjBlZmMzbDtcbiAgICAweGE4NjdkZjU1bDtcbiAgICAweDMxNmU4ZWVmbDtcbiAgICAweDQ2NjliZTc5bDtcbiAgICAweGNiNjFiMzhjbDtcbiAgICAweGJjNjY4MzFhbDtcbiAgICAweDI1NmZkMmEwbDtcbiAgICAweDUyNjhlMjM2bDtcbiAgICAweGNjMGM3Nzk1bDtcbiAgICAweGJiMGI0NzAzbDtcbiAgICAweDIyMDIxNmI5bDtcbiAgICAweDU1MDUyNjJmbDtcbiAgICAweGM1YmEzYmJlbDtcbiAgICAweGIyYmQwYjI4bDtcbiAgICAweDJiYjQ1YTkybDtcbiAgICAweDVjYjM2YTA0bDtcbiAgICAweGMyZDdmZmE3bDtcbiAgICAweGI1ZDBjZjMxbDtcbiAgICAweDJjZDk5ZThibDtcbiAgICAweDViZGVhZTFkbDtcbiAgICAweDliNjRjMmIwbDtcbiAgICAweGVjNjNmMjI2bDtcbiAgICAweDc1NmFhMzljbDtcbiAgICAweDAyNmQ5MzBhbDtcbiAgICAweDljMDkwNmE5bDtcbiAgICAweGViMGUzNjNmbDtcbiAgICAweDcyMDc2Nzg1bDtcbiAgICAweDA1MDA1NzEzbDtcbiAgICAweDk1YmY0YTgybDtcbiAgICAweGUyYjg3YTE0bDtcbiAgICAweDdiYjEyYmFlbDtcbiAgICAweDBjYjYxYjM4bDtcbiAgICAweDkyZDI4ZTlibDtcbiAgICAweGU1ZDViZTBkbDtcbiAgICAweDdjZGNlZmI3bDtcbiAgICAweDBiZGJkZjIxbDtcbiAgICAweDg2ZDNkMmQ0bDtcbiAgICAweGYxZDRlMjQybDtcbiAgICAweDY4ZGRiM2Y4bDtcbiAgICAweDFmZGE4MzZlbDtcbiAgICAweDgxYmUxNmNkbDtcbiAgICAweGY2YjkyNjVibDtcbiAgICAweDZmYjA3N2UxbDtcbiAgICAweDE4Yjc0Nzc3bDtcbiAgICAweDg4MDg1YWU2bDtcbiAgICAweGZmMGY2YTcwbDtcbiAgICAweDY2MDYzYmNhbDtcbiAgICAweDExMDEwYjVjbDtcbiAgICAweDhmNjU5ZWZmbDtcbiAgICAweGY4NjJhZTY5bDtcbiAgICAweDYxNmJmZmQzbDtcbiAgICAweDE2NmNjZjQ1bDtcbiAgICAweGEwMGFlMjc4bDtcbiAgICAweGQ3MGRkMmVlbDtcbiAgICAweDRlMDQ4MzU0bDtcbiAgICAweDM5MDNiM2MybDtcbiAgICAweGE3NjcyNjYxbDtcbiAgICAweGQwNjAxNmY3bDtcbiAgICAweDQ5Njk0NzRkbDtcbiAgICAweDNlNmU3N2RibDtcbiAgICAweGFlZDE2YTRhbDtcbiAgICAweGQ5ZDY1YWRjbDtcbiAgICAweDQwZGYwYjY2bDtcbiAgICAweDM3ZDgzYmYwbDtcbiAgICAweGE5YmNhZTUzbDtcbiAgICAweGRlYmI5ZWM1bDtcbiAgICAweDQ3YjJjZjdmbDtcbiAgICAweDMwYjVmZmU5bDtcbiAgICAweGJkYmRmMjFjbDtcbiAgICAweGNhYmFjMjhhbDtcbiAgICAweDUzYjM5MzMwbDtcbiAgICAweDI0YjRhM2E2bDtcbiAgICAweGJhZDAzNjA1bDtcbiAgICAweGNkZDcwNjkzbDtcbiAgICAweDU0ZGU1NzI5bDtcbiAgICAweDIzZDk2N2JmbDtcbiAgICAweGIzNjY3YTJlbDtcbiAgICAweGM0NjE0YWI4bDtcbiAgICAweDVkNjgxYjAybDtcbiAgICAweDJhNmYyYjk0bDtcbiAgICAweGI0MGJiZTM3bDtcbiAgICAweGMzMGM4ZWExbDtcbiAgICAweDVhMDVkZjFibDtcbiAgICAweDJkMDJlZjhkbDtcbiAgfF1cblxubGV0IHN0cmluZ19mb2xkX2xlZnQgZiBhY2Mgc3RyIG9mZnNldCBsZW5ndGggPVxuICBsZXQgYWNjX3IgPSByZWYgYWNjIGluXG4gIGZvciBpID0gb2Zmc2V0IHRvIG9mZnNldCArIGxlbmd0aCAtIDEgZG9cbiAgICBhY2NfciA6PSBmICFhY2NfciAoU3RyaW5nLmdldCBzdHIgaSlcbiAgZG9uZTtcbiAgIWFjY19yXG5cbigqbGV0IGJpZ3N0cmluZ19mb2xkX2xlZnQgZiBhY2Mgc3RyID1cbiAgbGV0IGFjY19yID0gcmVmIGFjYyBpblxuICBmb3IgaSA9IDAgdG8gKEJpZ2FycmF5LkFycmF5MS5kaW0gc3RyKSAtIDEgZG9cbiAgICBhY2NfciA6PSBmICFhY2NfciBAQCBCaWdhcnJheS5BcnJheTEuZ2V0IHN0ciBpXG4gIGRvbmU7XG4gICFhY2NfclxuKilcbnR5cGUgdCA9IGludDMyXG5cbmxldCB1cGRhdGVfY3JjIGFjYyBjID1cbiAgbGV0IGluZGV4ID0gSW50MzIudG9faW50IChhY2MgXl5eIEludDMyLm9mX2ludCAoaW50X29mX2NoYXIgYykgJiYmIDB4ZmZsKSBpblxuICBjcmNfdGFibGUuKGluZGV4KSBeXl4gKGFjYyA+Pj4gOCkgJiYmIDB4ZmZmZmZmZmZsXG5cbmxldCBzdHJpbmcgPyhjcmMgPSAwbCkgc3RyIG9mZnNldCBsZW5ndGggPVxuICBzdHJpbmdfZm9sZF9sZWZ0IHVwZGF0ZV9jcmMgKGNyYyBeXl4gMHhmZmZmZmZmZmwpIHN0ciBvZmZzZXQgbGVuZ3RoXG4gIF5eXiAweGZmZmZmZmZmbFxuXG4oKmxldCBiaWdzdHJpbmcgPyhjcmM9MGwpIHN0ciA9XG4gIChiaWdzdHJpbmdfZm9sZF9sZWZ0IHVwZGF0ZV9jcmMgKGNyYyBeXl4gMHhmZmZmZmZmZmwpIHN0cikgXl5eIDB4ZmZmZmZmZmZsXG4qKVxuKCpcbmxldCBkaWdlc3QgKGNyYyA6IHQpID8ob2ZmID0gMCkgP2xlbiBidWYgPVxuICBsZXQgbGVuID0gbWF0Y2ggbGVuIHdpdGggU29tZSBsZW4gLT4gbGVuIHwgTm9uZSAtPiBDc3RydWN0LmxlbiBidWYgLSBvZmYgaW5cbiAgY3N0cnVjdCB+Y3JjOihjcmMgOj4gaW50MzIpIChDc3RydWN0LnN1YiBidWYgb2ZmIGxlbilcblxubGV0IGRpZ2VzdHYgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyB2IC0+IGRpZ2VzdCBhY2MgdilcblxubGV0IGRpZ2VzdGMgKGNyYyA6IHQpIGJ5dGUgPVxuICAodXBkYXRlX2NyYyAoY3JjIF5eXiAweGZmZmZmZmZmbCkgKENoYXIuY2hyIGJ5dGUpKSBeXl4gMHhmZmZmZmZmZmxcblxubGV0IGRpZ2VzdHMgKGNyYyA6IHQpID8ob2ZmID0gMCkgP2xlbiBidWYgPVxuICBsZXQgbGVuID0gbWF0Y2ggbGVuIHdpdGggU29tZSBsZW4gLT4gbGVuIHwgTm9uZSAtPiBCeXRlcy5sZW5ndGggYnVmIC0gb2ZmIGluXG4gIGJ5dGVzIH5jcmM6KGNyYyA6PiBpbnQzMikgYnVmIG9mZiBsZW5cblxuZXh0ZXJuYWwgb2ZfaW50MzIgOiBpbnQzMiAtPiB0ID0gXCIlaWRlbnRpdHlcIlxuZXh0ZXJuYWwgdG9faW50MzIgOiB0IC0+IGludDMyID0gXCIlaWRlbnRpdHlcIlxuXG5sZXQgcHAgcHBmIHYgPSBGbXQucGYgcHBmIFwiJTA0bHhcIiAodiA6PiBpbnQzMilcblxubGV0IGRlZmF1bHQgPSAwbFxuXG5sZXQgZXEgPSBJbnQzMi5lcXVhbFxubGV0IG5lcSBhIGIgPSBub3QgKGVxIGEgYilcbiopXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIGNvbG9yID0gUmVkIHwgR3JleSB8IExpZ2h0Ymx1ZSB8IEJsYWNrXG5cbmxldCB0cmlwbGVfb2ZfY29sb3IgPSBmdW5jdGlvblxuICB8IFJlZCAtPiAyNTUsIDAsIDBcbiAgfCBHcmV5IC0+IDEyOCwgMTI4LCAxMjhcbiAgfCBMaWdodGJsdWUgLT4gMCwgMCwgMTI4XG4gIHwgQmxhY2sgLT4gMCwgMCwgMFxuIiwidHlwZSAnYSB0ID0ge1xuICBzaXplOiBpbnQ7XG4gIGRlZmF1bHQ6ICdhO1xuICBtdXRhYmxlIHN0YXJ0OiBpbnQ7XG4gIG11dGFibGUgZmluYWw6IGludDtcbiAgY29udGVudDogJ2EgYXJyYXk7XG59XG5cbmxldCBjcmVhdGUgaSBkZWZhdWx0ID1cbiAgbGV0IHNpemUgPSBtYXggaSAyIGluXG4gIHsgc2l6ZTsgZGVmYXVsdDsgc3RhcnQgPSAwOyBmaW5hbCA9IDA7IGNvbnRlbnQgPSBBcnJheS5tYWtlIHNpemUgZGVmYXVsdCB9XG5cbmxldCBzdWNjIGkgdCA9XG4gIGlmIGkgPSB0LnNpemUgLSAxIHRoZW5cbiAgICAwXG4gIGVsc2VcbiAgICBzdWNjIGlcblxubGV0IGZ1bGwgdCA9IHN1Y2MgdC5maW5hbCB0ID0gdC5zdGFydFxubGV0IGZyZWVfb25lIHQgPSB0LnN0YXJ0IDwtIHN1Y2MgdC5zdGFydCB0XG5cbmxldCBhZGQgeCB0ID1cbiAgbGV0ICgpID0gaWYgZnVsbCB0IHRoZW4gZnJlZV9vbmUgdCBpblxuICBsZXQgKCkgPSB0LmNvbnRlbnQuKHQuZmluYWwpIDwtIHggaW5cbiAgbGV0ICgpID0gdC5maW5hbCA8LSBzdWNjIHQuZmluYWwgdCBpblxuICB0XG5cbmxldCBpdGVyIGYgdCA9XG4gIGxldCByZWMgYXV4IGkgPVxuICAgIGlmIGkgPD4gdC5maW5hbCB0aGVuIChcbiAgICAgIGxldCAoKSA9IGYgdC5jb250ZW50LihpKSBpblxuICAgICAgYXV4IChzdWNjIGkgdClcbiAgICApXG4gIGluXG4gIGF1eCB0LnN0YXJ0XG5cbmxldCBjbGVhbiB0ID1cbiAgbGV0IHJlYyBhdXggayA9XG4gICAgaWYgayA9IHQuc2l6ZSB0aGVuXG4gICAgICB0XG4gICAgZWxzZSAoXG4gICAgICBsZXQgKCkgPSB0LmNvbnRlbnQuKGspIDwtIHQuZGVmYXVsdCBpblxuICAgICAgYXV4IChrICsgMSlcbiAgICApXG4gIGluXG4gIGF1eCAwXG4iLCIoKipcbiAgKiBjYWNoZS5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI3LzAzLzIwMTJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjcvMDMvMjAxMlxuICAqICpcbiAgKlxuICAqIEl0IHVzZXMgaW1wZXJhdGl2ZSBzdHlsZXMgdG8gZW5zdXJlIGNvbXBhdGliaWxpdHkgd2l0aCBvdGhlciBtb2R1bGVzXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIENhY2hlID0gc2lnXG4gIG1vZHVsZSBPIDogU2V0TWFwLk9yZGVyZWRUeXBlXG5cbiAgdHlwZSB0XG5cbiAgdmFsIGxhc3QgOiB0IC0+IE8udCBvcHRpb25cbiAgdmFsIGNyZWF0ZSA6IGludCBvcHRpb24gLT4gdFxuICB2YWwgYWRkIDogTy50IC0+IHQgLT4gdFxuICB2YWwgZm9sZCA6IChPLnQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGl0ZXIgOiAoTy50IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSBDYWNoZSA9XG5mdW5jdG9yXG4gIChPTyA6IFNldE1hcC5PcmRlcmVkVHlwZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgbW9kdWxlIE8gPSBPT1xuICAgICAgbW9kdWxlIFNNID0gU2V0TWFwLk1ha2UgKE8pXG4gICAgICBtb2R1bGUgUyA9IFNNLlNldFxuXG4gICAgICB0eXBlIGZpbml0ZV9jYWNoZSA9IHtcbiAgICAgICAgc2l6ZTogaW50O1xuICAgICAgICBvZmZzZXQ6IGludDtcbiAgICAgICAgY2FjaGU6IE8udCBvcHRpb24gYXJyYXk7XG4gICAgICAgIGJhZzogUy50O1xuICAgICAgICBsYXN0OiBPLnQgb3B0aW9uO1xuICAgICAgfVxuXG4gICAgICBsZXQgY3JlYXRlX2Zpbml0ZSBuID1cbiAgICAgICAge1xuICAgICAgICAgIHNpemUgPSBuO1xuICAgICAgICAgIG9mZnNldCA9IDA7XG4gICAgICAgICAgY2FjaGUgPSBBcnJheS5tYWtlIG4gTm9uZTtcbiAgICAgICAgICBiYWcgPSBTLmVtcHR5O1xuICAgICAgICAgIGxhc3QgPSBOb25lO1xuICAgICAgICB9XG5cbiAgICAgIGxldCBuZXh0IHQgPVxuICAgICAgICBsZXQgb2Zmc2V0ID0gdC5vZmZzZXQgaW5cbiAgICAgICAgaWYgb2Zmc2V0ID0gdC5zaXplIC0gMSB0aGVuXG4gICAgICAgICAgeyB0IHdpdGggb2Zmc2V0ID0gMCB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB7IHQgd2l0aCBvZmZzZXQgPSBvZmZzZXQgKyAxIH1cblxuICAgICAgbGV0IGFkZF9maW5pdGUga2V5IHQgPVxuICAgICAgICBsZXQgdCA9IHsgdCB3aXRoIGxhc3QgPSBTb21lIGtleSB9IGluXG4gICAgICAgIGlmIFMubWVtIGtleSB0LmJhZyB0aGVuXG4gICAgICAgICAgdFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgdCA9IHsgdCB3aXRoIGJhZyA9IFMuYWRkIGtleSB0LmJhZyB9IGluXG4gICAgICAgICAgbGV0IHQgPSBuZXh0IHQgaW5cbiAgICAgICAgICBsZXQgb3ZlcndyaXR0ZW5fdmFsdWUgPSB0LmNhY2hlLih0Lm9mZnNldCkgaW5cbiAgICAgICAgICBsZXQgdCA9XG4gICAgICAgICAgICBtYXRjaCBvdmVyd3JpdHRlbl92YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gdFxuICAgICAgICAgICAgfCBTb21lIG92ZXJ3cml0dGVuX3ZhbHVlIC0+XG4gICAgICAgICAgICAgIHsgdCB3aXRoIGJhZyA9IFMucmVtb3ZlIG92ZXJ3cml0dGVuX3ZhbHVlIHQuYmFnIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBfID0gdC5jYWNoZS4odC5vZmZzZXQpIDwtIFNvbWUga2V5IGluXG4gICAgICAgICAgdFxuICAgICAgICApXG5cbiAgICAgIGxldCBsYXN0X2Zpbml0ZSB0ID0gdC5sYXN0XG5cbiAgICAgIHR5cGUgaW5maW5pdGVfY2FjaGUgPSB7IGluZl9iYWc6IFMudDsgbGFzdDogTy50IG9wdGlvbiB9XG4gICAgICB0eXBlIHQgPSBGaW5pdGUgb2YgZmluaXRlX2NhY2hlIHwgSW5maW5pdGUgb2YgaW5maW5pdGVfY2FjaGVcblxuICAgICAgbGV0IGNyZWF0ZV9pbmZpbml0ZSA9IHsgaW5mX2JhZyA9IFMuZW1wdHk7IGxhc3QgPSBOb25lIH1cblxuICAgICAgbGV0IGFkZF9pbmZpbml0ZSBrZXkgdCA9XG4gICAgICAgIHsgaW5mX2JhZyA9IFMuYWRkIGtleSB0LmluZl9iYWc7IGxhc3QgPSBTb21lIGtleSB9XG5cbiAgICAgIGxldCBjcmVhdGUgc2l6ZSA9XG4gICAgICAgIG1hdGNoIHNpemUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gSW5maW5pdGUgY3JlYXRlX2luZmluaXRlXG4gICAgICAgIHwgU29tZSBhIC0+IEZpbml0ZSAoY3JlYXRlX2Zpbml0ZSBhKVxuXG4gICAgICBsZXQgbGFzdCB0ID1cbiAgICAgICAgbWF0Y2ggdCB3aXRoXG4gICAgICAgIHwgRmluaXRlIHQgLT4gbGFzdF9maW5pdGUgdFxuICAgICAgICB8IEluZmluaXRlIHQgLT4gdC5sYXN0XG5cbiAgICAgIGxldCBhZGQga2V5IHQgPVxuICAgICAgICBtYXRjaCB0IHdpdGhcbiAgICAgICAgfCBGaW5pdGUgdCAtPiBGaW5pdGUgKGFkZF9maW5pdGUga2V5IHQpXG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiBJbmZpbml0ZSAoYWRkX2luZmluaXRlIGtleSB0KVxuXG4gICAgICBsZXQgZm9sZCBmIHQgYSA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IFMuZm9sZCBmIHQuYmFnIGFcbiAgICAgICAgfCBJbmZpbml0ZSB0IC0+IFMuZm9sZCBmIHQuaW5mX2JhZyBhXG5cbiAgICAgIGxldCBpdGVyIGYgdCA9XG4gICAgICAgIG1hdGNoIHQgd2l0aFxuICAgICAgICB8IEZpbml0ZSB0IC0+IFMuaXRlciBmIHQuYmFnXG4gICAgICAgIHwgSW5maW5pdGUgdCAtPiBTLml0ZXIgZiB0LmluZl9iYWdcbiAgICBlbmQgOlxuICAgICAgQ2FjaGUgd2l0aCB0eXBlIE8udCA9IE9PLnQpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZyb20pIE9DYW1sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICBQaWVycmUgV2VpcyBhbmQgWGF2aWVyIExlcm95LCBwcm9qZXQgQ3Jpc3RhbCwgSU5SSUEgUm9jcXVlbmNvdXJ0ICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIENvcHlyaWdodCAxOTk5IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAgICopXG4oKiAgICAgZW4gQXV0b21hdGlxdWUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiAgIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mICAgICopXG4oKiAgIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyLjEsIHdpdGggdGhlICAgICAgICAgICopXG4oKiAgIHNwZWNpYWwgZXhjZXB0aW9uIG9uIGxpbmtpbmcgZGVzY3JpYmVkIGluIHRoZSBmaWxlIExJQ0VOU0UuICAgICAgICAgICopXG4oKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbigqIEV4dGVuc2libGUgYnVmZmVycyAqKVxuXG5tb2R1bGUgQkEgPSBCaWdhcnJheS5BcnJheTFcblxudHlwZSBiaWdzdHJpbmcgPVxuICAoY2hhciwgQmlnYXJyYXkuaW50OF91bnNpZ25lZF9lbHQsIEJpZ2FycmF5LmNfbGF5b3V0KSBCaWdhcnJheS5BcnJheTEudFxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgYnVmZmVyOiBiaWdzdHJpbmc7XG4gIG11dGFibGUgcG9zaXRpb246IGludDtcbiAgbXV0YWJsZSBsZW5ndGg6IGludDtcbiAgaW5pdGlhbF9idWZmZXI6IGJpZ3N0cmluZztcbn1cblxubGV0IGNyZWF0ZSBuID1cbiAgbGV0IG4gPVxuICAgIGlmIG4gPCAxIHRoZW5cbiAgICAgIDFcbiAgICBlbHNlXG4gICAgICBuXG4gIGluXG4gIGxldCBuID1cbiAgICBpZiBuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW5cbiAgICAgIFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2VcbiAgICAgIG5cbiAgaW5cbiAgbGV0IHMgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBuIGluXG4gIHsgYnVmZmVyID0gczsgcG9zaXRpb24gPSAwOyBsZW5ndGggPSBuOyBpbml0aWFsX2J1ZmZlciA9IHMgfVxuXG5sZXQgY29udGVudHMgYiA9XG4gIGxldCBvdXQgPSBCQS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dCBiLnBvc2l0aW9uIGluXG4gIGxldCAoKSA9IEJBLmJsaXQgKEJBLnN1YiBiLmJ1ZmZlciAwIGIucG9zaXRpb24pIG91dCBpblxuICBvdXRcblxuKCpsZXQgc3ViIGIgb2ZzIGxlbiA9XG4gIGlmIG9mcyA8IDAgfHwgbGVuIDwgMCB8fCBvZnMgPiBiLnBvc2l0aW9uIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuc3ViXCJcbiAgZWxzZSBCQS5zdWIgYi5idWZmZXIgb2ZzIGxlblxuKilcbigqXG5sZXQgYmxpdCBzcmMgc3Jjb2ZmIGRzdCBkc3RvZmYgbGVuID1cbiAgaWYgbGVuIDwgMCB8fCBzcmNvZmYgPCAwIHx8IHNyY29mZiA+IHNyYy5wb3NpdGlvbiAtIGxlblxuICAgICAgICAgICAgIHx8IGRzdG9mZiA8IDAgfHwgZHN0b2ZmID4gKEJ5dGVzLmxlbmd0aCBkc3QpIC0gbGVuXG4gIHRoZW4gaW52YWxpZF9hcmcgXCJCdWZmZXIuYmxpdFwiXG4gIGVsc2VcbiAgICBCQS5ibGl0IChzdWIgc3JjIHNyY29mZiBsZW4pXG4gICAgICAoQmlnc3RyaW5nLnN1YiAoQmlnc3RyaW5nLm9mX2FycmF5IEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgZHN0KSBkc3RvZmYgbGVuKVxuKilcblxubGV0IG50aCBiIG9mcyA9XG4gIGlmIG9mcyA8IDAgfHwgb2ZzID49IGIucG9zaXRpb24gdGhlblxuICAgIGludmFsaWRfYXJnIFwiQnVmZmVyLm50aFwiXG4gIGVsc2VcbiAgICBCQS51bnNhZmVfZ2V0IGIuYnVmZmVyIG9mc1xuXG5sZXQgbGVuZ3RoIGIgPSBiLnBvc2l0aW9uXG5sZXQgY2xlYXIgYiA9IGIucG9zaXRpb24gPC0gMFxuXG5sZXQgcmVzZXQgYiA9XG4gIGIucG9zaXRpb24gPC0gMDtcbiAgYi5idWZmZXIgPC0gYi5pbml0aWFsX2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gQkEuZGltIGIuYnVmZmVyXG5cbmxldCByZXNpemUgYiBtb3JlID1cbiAgbGV0IGxlbiA9IGIubGVuZ3RoIGluXG4gIGxldCBuZXdfbGVuID0gcmVmIGxlbiBpblxuICB3aGlsZSBiLnBvc2l0aW9uICsgbW9yZSA+ICFuZXdfbGVuIGRvXG4gICAgbmV3X2xlbiA6PSAyICogIW5ld19sZW5cbiAgZG9uZTtcbiAgaWYgIW5ld19sZW4gPiBTeXMubWF4X3N0cmluZ19sZW5ndGggdGhlblxuICAgIGlmIGIucG9zaXRpb24gKyBtb3JlIDw9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aCB0aGVuXG4gICAgICBuZXdfbGVuIDo9IFN5cy5tYXhfc3RyaW5nX2xlbmd0aFxuICAgIGVsc2VcbiAgICAgIGZhaWx3aXRoIFwiQnVmZmVyLmFkZDogY2Fubm90IGdyb3cgYnVmZmVyXCI7XG4gIGxldCBuZXdfYnVmZmVyID0gQkEuY3JlYXRlIEJpZ2FycmF5LmNoYXIgQmlnYXJyYXkuY19sYXlvdXQgIW5ld19sZW4gaW5cbiAgKCogUFIjNjE0ODogbGV0J3Mga2VlcCB1c2luZyBbYmxpdF0gcmF0aGVyIHRoYW4gW3Vuc2FmZV9ibGl0XSBpblxuICAgICB0aGlzIHRyaWNreSBmdW5jdGlvbiB0aGF0IGlzIHNsb3cgYW55d2F5LiAqKVxuICBCQS5ibGl0IChCQS5zdWIgYi5idWZmZXIgMCBiLnBvc2l0aW9uKSAoQkEuc3ViIG5ld19idWZmZXIgMCBiLnBvc2l0aW9uKTtcbiAgYi5idWZmZXIgPC0gbmV3X2J1ZmZlcjtcbiAgYi5sZW5ndGggPC0gIW5ld19sZW5cblxubGV0IGFkZF9jaGFyIGIgYyA9XG4gIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gIGlmIHBvcyA+PSBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDE7XG4gIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgcG9zIGM7XG4gIGIucG9zaXRpb24gPC0gcG9zICsgMVxuXG4oKlxuIGxldCBhZGRfdXRmXzhfdWNoYXIgYiB1ID0gbWF0Y2ggVWNoYXIudG9faW50IHUgd2l0aFxuIHwgdSB3aGVuIHUgPCAwIC0+IGFzc2VydCBmYWxzZVxuIHwgdSB3aGVuIHUgPD0gMHgwMDdGIC0+XG4gICAgIGFkZF9jaGFyIGIgKENoYXIudW5zYWZlX2NociB1KVxuIHwgdSB3aGVuIHUgPD0gMHgwN0ZGIC0+XG4gICAgIGxldCBwb3MgPSBiLnBvc2l0aW9uIGluXG4gICAgIGlmIHBvcyArIDIgPiBiLmxlbmd0aCB0aGVuIHJlc2l6ZSBiIDI7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyAgICApXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHhDMCBsb3IgKHUgbHNyIDYpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKHUgbGFuZCAweDNGKSkpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAzID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAzO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4RTAgbG9yICh1IGxzciAxMikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSlcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAoKHUgbHNyIDYpIGxhbmQgMHgzRikpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMilcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweDgwIGxvciAodSBsYW5kIDB4M0YpKSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgM1xuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgIClcbiAgICAgICAoQ2hhci51bnNhZmVfY2hyICgweEYwIGxvciAodSBsc3IgMTgpKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDEpXG4gICAgICAgKENoYXIudW5zYWZlX2NociAoMHg4MCBsb3IgKCh1IGxzciAxMikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAyKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICgodSBsc3IgNikgbGFuZCAweDNGKSkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAzKVxuICAgICAgIChDaGFyLnVuc2FmZV9jaHIgKDB4ODAgbG9yICh1IGxhbmQgMHgzRikpKTtcbiAgICAgYi5wb3NpdGlvbiA8LSBwb3MgKyA0XG4gfCBfIC0+IGFzc2VydCBmYWxzZVxuXG4gbGV0IGFkZF91dGZfMTZiZV91Y2hhciBiIHUgPSBtYXRjaCBVY2hhci50b19pbnQgdSB3aXRoXG4gfCB1IHdoZW4gdSA8IDAgLT4gYXNzZXJ0IGZhbHNlXG4gfCB1IHdoZW4gdSA8PSAweEZGRkYgLT5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgMiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgMjtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAodSBsc3IgOCkpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDJcbiB8IHUgd2hlbiB1IDw9IDB4MTBGRkZGIC0+XG4gICAgIGxldCB1JyA9IHUgLSAweDEwMDAwIGluXG4gICAgIGxldCBoaSA9IDB4RDgwMCBsb3IgKHUnIGxzciAxMCkgaW5cbiAgICAgbGV0IGxvID0gMHhEQzAwIGxvciAodScgbGFuZCAweDNGRikgaW5cbiAgICAgbGV0IHBvcyA9IGIucG9zaXRpb24gaW5cbiAgICAgaWYgcG9zICsgNCA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgNDtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICAgICkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDIpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxhbmQgMHhGRikpO1xuICAgICBiLnBvc2l0aW9uIDwtIHBvcyArIDRcbiB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiBsZXQgYWRkX3V0Zl8xNmxlX3VjaGFyIGIgdSA9IG1hdGNoIFVjaGFyLnRvX2ludCB1IHdpdGhcbiB8IHUgd2hlbiB1IDwgMCAtPiBhc3NlcnQgZmFsc2VcbiB8IHUgd2hlbiB1IDw9IDB4RkZGRiAtPlxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyAyID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiAyO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyICh1IGxhbmQgMHhGRikpO1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgKyAxKSAoQ2hhci51bnNhZmVfY2hyICh1IGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgMlxuIHwgdSB3aGVuIHUgPD0gMHgxMEZGRkYgLT5cbiAgICAgbGV0IHUnID0gdSAtIDB4MTAwMDAgaW5cbiAgICAgbGV0IGhpID0gMHhEODAwIGxvciAodScgbHNyIDEwKSBpblxuICAgICBsZXQgbG8gPSAweERDMDAgbG9yICh1JyBsYW5kIDB4M0ZGKSBpblxuICAgICBsZXQgcG9zID0gYi5wb3NpdGlvbiBpblxuICAgICBpZiBwb3MgKyA0ID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiA0O1xuICAgICBCQS51bnNhZmVfc2V0IGIuYnVmZmVyIChwb3MgICAgKSAoQ2hhci51bnNhZmVfY2hyIChoaSBsYW5kIDB4RkYpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMSkgKENoYXIudW5zYWZlX2NociAoaGkgbHNyIDgpKTtcbiAgICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAocG9zICsgMikgKENoYXIudW5zYWZlX2NociAobG8gbGFuZCAweEZGKSk7XG4gICAgIEJBLnVuc2FmZV9zZXQgYi5idWZmZXIgKHBvcyArIDMpIChDaGFyLnVuc2FmZV9jaHIgKGxvIGxzciA4KSk7XG4gICAgIGIucG9zaXRpb24gPC0gcG9zICsgNFxuIHwgXyAtPiBhc3NlcnQgZmFsc2VcbiopXG5cbmxldCBhZGRfc3Vic3RyaW5nIGIgcyBvZmZzZXQgbGVuID1cbiAgaWYgb2Zmc2V0IDwgMCB8fCBsZW4gPCAwIHx8IG9mZnNldCA+IFN0cmluZy5sZW5ndGggcyAtIGxlbiB0aGVuXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX3N1YnN0cmluZy9hZGRfc3ViYnl0ZXNcIjtcbiAgbGV0IG5ld19wb3NpdGlvbiA9IGIucG9zaXRpb24gKyBsZW4gaW5cbiAgaWYgbmV3X3Bvc2l0aW9uID4gYi5sZW5ndGggdGhlbiByZXNpemUgYiBsZW47XG4gIGZvciBpID0gMCB0byBsZW4gLSAxIGRvXG4gICAgQkEudW5zYWZlX3NldCBiLmJ1ZmZlciAoYi5wb3NpdGlvbiArIGkpIChTdHJpbmcuZ2V0IHMgKG9mZnNldCArIGkpKVxuICBkb25lO1xuICBiLnBvc2l0aW9uIDwtIG5ld19wb3NpdGlvblxuXG5sZXQgYWRkX3N1YmJ5dGVzIGIgcyBvZmZzZXQgbGVuID1cbiAgYWRkX3N1YnN0cmluZyBiIChCeXRlcy51bnNhZmVfdG9fc3RyaW5nIHMpIG9mZnNldCBsZW5cblxubGV0IGFkZF9zdHJpbmcgYiBzID0gYWRkX3N1YnN0cmluZyBiIHMgMCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4oKlxubGV0IGFkZF9ieXRlcyBiIHMgPSBhZGRfc3RyaW5nIGIgKEJ5dGVzLnVuc2FmZV90b19zdHJpbmcgcylcblxubGV0IGFkZF9idWZmZXIgYiBicyA9XG4gIGFkZF9zdWJieXRlcyBiIGJzLmJ1ZmZlciAwIGJzLnBvc2l0aW9uXG5cbigqIHJlYWQgdXAgdG8gW2xlbl0gYnl0ZXMgZnJvbSBbaWNdIGludG8gW2JdLiAqKVxubGV0IHJlYyBhZGRfY2hhbm5lbF9yZWMgYiBpYyBsZW4gPVxuICBpZiBsZW4gPiAwIHRoZW4gKFxuICAgIGxldCBuID0gaW5wdXQgaWMgYi5idWZmZXIgYi5wb3NpdGlvbiBsZW4gaW5cbiAgICBiLnBvc2l0aW9uIDwtIGIucG9zaXRpb24gKyBuO1xuICAgIGlmIG4gPSAwIHRoZW4gcmFpc2UgRW5kX29mX2ZpbGVcbiAgICBlbHNlIGFkZF9jaGFubmVsX3JlYyBiIGljIChsZW4tbikgICAoKiBuIDw9IGxlbiAqKVxuICApXG5cbmxldCBhZGRfY2hhbm5lbCBiIGljIGxlbiA9XG4gIGlmIGxlbiA8IDAgfHwgbGVuID4gU3lzLm1heF9zdHJpbmdfbGVuZ3RoIHRoZW4gICAoKiBQUiM1MDA0ICopXG4gICAgaW52YWxpZF9hcmcgXCJCdWZmZXIuYWRkX2NoYW5uZWxcIjtcbiAgaWYgYi5wb3NpdGlvbiArIGxlbiA+IGIubGVuZ3RoIHRoZW4gcmVzaXplIGIgbGVuO1xuICBhZGRfY2hhbm5lbF9yZWMgYiBpYyBsZW5cblxubGV0IG91dHB1dF9idWZmZXIgb2MgYiA9XG4gIG91dHB1dCBvYyAoTHd0X2J5dGVzLnRvX2J5dGVzIGIuYnVmZmVyKSAwIGIucG9zaXRpb25cbiopXG4oKmxldCBjbG9zaW5nID0gZnVuY3Rpb25cbiAgICB8ICcoJyAtPiAnKSdcbiAgICB8ICd7JyAtPiAnfSdcbiAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlXG5cbiAgKCogb3BlbmluZyBhbmQgY2xvc2luZzogb3BlbiBhbmQgY2xvc2UgY2hhcmFjdGVycywgdHlwaWNhbGx5ICggYW5kIClcbiAgICAgazogYmFsYW5jZSBvZiBvcGVuaW5nIGFuZCBjbG9zaW5nIGNoYXJzXG4gICAgIHM6IHRoZSBzdHJpbmcgd2hlcmUgd2UgYXJlIHNlYXJjaGluZ1xuICAgICBzdGFydDogdGhlIGluZGV4IHdoZXJlIHdlIHN0YXJ0IHRoZSBzZWFyY2guICopXG4gIGxldCBhZHZhbmNlX3RvX2Nsb3Npbmcgb3BlbmluZyBjbG9zaW5nIGsgcyBzdGFydCA9XG4gICAgbGV0IHJlYyBhZHZhbmNlIGsgaSBsaW0gPVxuICAgICAgaWYgaSA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgICAgaWYgcy5baV0gPSBvcGVuaW5nIHRoZW4gYWR2YW5jZSAoayArIDEpIChpICsgMSkgbGltIGVsc2VcbiAgICAgIGlmIHMuW2ldID0gY2xvc2luZyB0aGVuXG4gICAgICAgIGlmIGsgPSAwIHRoZW4gaSBlbHNlIGFkdmFuY2UgKGsgLSAxKSAoaSArIDEpIGxpbVxuICAgICAgZWxzZSBhZHZhbmNlIGsgKGkgKyAxKSBsaW0gaW5cbiAgICBhZHZhbmNlIGsgc3RhcnQgKFN0cmluZy5sZW5ndGggcylcblxuICBsZXQgYWR2YW5jZV90b19ub25fYWxwaGEgcyBzdGFydCA9XG4gICAgbGV0IHJlYyBhZHZhbmNlIGkgbGltID1cbiAgICAgIGlmIGkgPj0gbGltIHRoZW4gbGltIGVsc2VcbiAgICAgIG1hdGNoIHMuW2ldIHdpdGhcbiAgICAgIHwgJ2EnIC4uICd6JyB8ICdBJyAuLiAnWicgfCAnMCcgLi4gJzknIHwgJ18nIC0+IGFkdmFuY2UgKGkgKyAxKSBsaW1cbiAgICAgIHwgXyAtPiBpIGluXG4gICAgYWR2YW5jZSBzdGFydCAoU3RyaW5nLmxlbmd0aCBzKVxuXG4gICgqIFdlIGFyZSBqdXN0IGF0IHRoZSBiZWdpbm5pbmcgb2YgYW4gaWRlbnQgaW4gcywgc3RhcnRpbmcgYXQgc3RhcnQuICopXG4gIGxldCBmaW5kX2lkZW50IHMgc3RhcnQgbGltID1cbiAgICBpZiBzdGFydCA+PSBsaW0gdGhlbiByYWlzZSBOb3RfZm91bmQgZWxzZVxuICAgIG1hdGNoIHMuW3N0YXJ0XSB3aXRoXG4gICAgKCogUGFyZW50aGVzaXplZCBpZGVudCA/ICopXG4gICAgfCAnKCcgfCAneycgYXMgYyAtPlxuICAgICAgIGxldCBuZXdfc3RhcnQgPSBzdGFydCArIDEgaW5cbiAgICAgICBsZXQgc3RvcCA9IGFkdmFuY2VfdG9fY2xvc2luZyBjIChjbG9zaW5nIGMpIDAgcyBuZXdfc3RhcnQgaW5cbiAgICAgICBTdHJpbmcuc3ViIHMgbmV3X3N0YXJ0IChzdG9wIC0gc3RhcnQgLSAxKSwgc3RvcCArIDFcbiAgICAoKiBSZWd1bGFyIGlkZW50ICopXG4gICAgfCBfIC0+XG4gICAgICAgbGV0IHN0b3AgPSBhZHZhbmNlX3RvX25vbl9hbHBoYSBzIChzdGFydCArIDEpIGluXG4gICAgICAgU3RyaW5nLnN1YiBzIHN0YXJ0IChzdG9wIC0gc3RhcnQpLCBzdG9wXG5cbiAgKCogU3Vic3RpdHV0ZSAkaWRlbnQsICQoaWRlbnQpLCBvciAke2lkZW50fSBpbiBzLFxuICAgICAgYWNjb3JkaW5nIHRvIHRoZSBmdW5jdGlvbiBtYXBwaW5nIGYuICopXG4gIGxldCBhZGRfc3Vic3RpdHV0ZSBiIGYgcyA9XG4gICAgbGV0IGxpbSA9IFN0cmluZy5sZW5ndGggcyBpblxuICAgIGxldCByZWMgc3Vic3QgcHJldmlvdXMgaSA9XG4gICAgICBpZiBpIDwgbGltIHRoZW4gYmVnaW5cbiAgICAgICAgbWF0Y2ggcy5baV0gd2l0aFxuICAgICAgICB8ICckJyBhcyBjdXJyZW50IHdoZW4gcHJldmlvdXMgPSAnXFxcXCcgLT5cbiAgICAgICAgICAgYWRkX2NoYXIgYiBjdXJyZW50O1xuICAgICAgICAgICBzdWJzdCAnICcgKGkgKyAxKVxuICAgICAgICB8ICckJyAtPlxuICAgICAgICAgICBsZXQgaiA9IGkgKyAxIGluXG4gICAgICAgICAgIGxldCBpZGVudCwgbmV4dF9pID0gZmluZF9pZGVudCBzIGogbGltIGluXG4gICAgICAgICAgIGFkZF9zdHJpbmcgYiAoZiBpZGVudCk7XG4gICAgICAgICAgIHN1YnN0ICcgJyBuZXh0X2lcbiAgICAgICAgfCBjdXJyZW50IHdoZW4gcHJldmlvdXMgPT0gJ1xcXFwnIC0+XG4gICAgICAgICAgIGFkZF9jaGFyIGIgJ1xcXFwnO1xuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0ICcgJyAoaSArIDEpXG4gICAgICAgIHwgJ1xcXFwnIGFzIGN1cnJlbnQgLT5cbiAgICAgICAgICAgc3Vic3QgY3VycmVudCAoaSArIDEpXG4gICAgICAgIHwgY3VycmVudCAtPlxuICAgICAgICAgICBhZGRfY2hhciBiIGN1cnJlbnQ7XG4gICAgICAgICAgIHN1YnN0IGN1cnJlbnQgKGkgKyAxKVxuICAgICAgZW5kIGVsc2VcbiAgICAgIGlmIHByZXZpb3VzID0gJ1xcXFwnIHRoZW4gYWRkX2NoYXIgYiBwcmV2aW91cyBpblxuICAgIHN1YnN0ICcgJyAwXG5cbiAgbGV0IHRydW5jYXRlIGIgbGVuID1cbiAgICAgIGlmIGxlbiA8IDAgfHwgbGVuID4gbGVuZ3RoIGIgdGhlblxuICAgICAgICBpbnZhbGlkX2FyZyBcIkJ1ZmZlci50cnVuY2F0ZVwiXG4gICAgICBlbHNlXG4gICAgICAgIGIucG9zaXRpb24gPC0gbGVuXG4qKVxuIiwiKCpcbiAqIENvcHlyaWdodCAoYykgMjAwNi0yMDA5IENpdHJpeCBTeXN0ZW1zIEluYy5cbiAqIENvcHlyaWdodCAoYykgMjAxMCBUaG9tYXMgR2F6YWduYWlyZSA8dGhvbWFzQGdhemFnbmFpcmUuY29tPlxuICpcbiAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueVxuICogcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZVxuICogY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcy5cbiAqXG4gKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiIEFORCBUSEUgQVVUSE9SIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFU1xuICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRlxuICogTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1JcbiAqIEFOWSBTUEVDSUFMLCBESVJFQ1QsIElORElSRUNULCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT1IgQU5ZIERBTUFHRVNcbiAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTlxuICogQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0ZcbiAqIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SIFBFUkZPUk1BTkNFIE9GIFRISVMgU09GVFdBUkUuXG4gKlxuICopXG5cbmxldCBkZWZhdWx0X2FscGhhYmV0ID1cbiAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvXCJcblxubGV0IHVyaV9zYWZlX2FscGhhYmV0ID1cbiAgXCJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1fXCJcblxubGV0IHBhZGRpbmcgPSAnPSdcblxubGV0IG9mX2NoYXIgPyhhbHBoYWJldCA9IGRlZmF1bHRfYWxwaGFiZXQpIHggPVxuICBpZiB4ID0gcGFkZGluZyB0aGVuXG4gICAgMFxuICBlbHNlXG4gICAgU3RyaW5nLmluZGV4IGFscGhhYmV0IHhcblxubGV0IHRvX2NoYXIgPyhhbHBoYWJldCA9IGRlZmF1bHRfYWxwaGFiZXQpIHggPSBhbHBoYWJldC5beF1cblxubGV0IGRlY29kZSA/YWxwaGFiZXQgaW5wdXQgPVxuICBsZXQgbGVuZ3RoID0gU3RyaW5nLmxlbmd0aCBpbnB1dCBpblxuICBsZXQgaW5wdXQgPVxuICAgIGlmIGxlbmd0aCBtb2QgNCA9IDAgdGhlblxuICAgICAgaW5wdXRcbiAgICBlbHNlXG4gICAgICBpbnB1dCBeIFN0cmluZy5tYWtlICg0IC0gKGxlbmd0aCBtb2QgNCkpIHBhZGRpbmdcbiAgaW5cbiAgbGV0IGxlbmd0aCA9IFN0cmluZy5sZW5ndGggaW5wdXQgaW5cbiAgbGV0IHdvcmRzID0gbGVuZ3RoIC8gNCBpblxuICBsZXQgcGFkZGluZyA9XG4gICAgbWF0Y2ggbGVuZ3RoIHdpdGhcbiAgICB8IDAgLT4gMFxuICAgIHwgXyB3aGVuIGlucHV0LltsZW5ndGggLSAyXSA9IHBhZGRpbmcgLT4gMlxuICAgIHwgXyB3aGVuIGlucHV0LltsZW5ndGggLSAxXSA9IHBhZGRpbmcgLT4gMVxuICAgIHwgXyAtPiAwXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIEJpZ2FycmF5LkFycmF5MS5jcmVhdGUgQmlnYXJyYXkuY2hhciBCaWdhcnJheS5jX2xheW91dFxuICAgICAgKCh3b3JkcyAqIDMpIC0gcGFkZGluZylcbiAgaW5cbiAgZm9yIGkgPSAwIHRvIHdvcmRzIC0gMSBkb1xuICAgIGxldCBhID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAwKSlcbiAgICBhbmQgYiA9IG9mX2NoYXIgP2FscGhhYmV0IChTdHJpbmcuZ2V0IGlucHV0ICgoNCAqIGkpICsgMSkpXG4gICAgYW5kIGMgPSBvZl9jaGFyID9hbHBoYWJldCAoU3RyaW5nLmdldCBpbnB1dCAoKDQgKiBpKSArIDIpKVxuICAgIGFuZCBkID0gb2ZfY2hhciA/YWxwaGFiZXQgKFN0cmluZy5nZXQgaW5wdXQgKCg0ICogaSkgKyAzKSkgaW5cbiAgICBsZXQgbiA9IChhIGxzbCAxOCkgbG9yIChiIGxzbCAxMikgbG9yIChjIGxzbCA2KSBsb3IgZCBpblxuICAgIGxldCB4ID0gKG4gbHNyIDE2KSBsYW5kIDI1NSBhbmQgeSA9IChuIGxzciA4KSBsYW5kIDI1NSBhbmQgeiA9IG4gbGFuZCAyNTUgaW5cbiAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDApIChjaGFyX29mX2ludCB4KTtcbiAgICBpZiBpIDw+IHdvcmRzIC0gMSB8fCBwYWRkaW5nIDwgMiB0aGVuXG4gICAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDEpIChjaGFyX29mX2ludCB5KTtcbiAgICBpZiBpIDw+IHdvcmRzIC0gMSB8fCBwYWRkaW5nIDwgMSB0aGVuXG4gICAgICBCaWdhcnJheS5BcnJheTEuc2V0IG91dHB1dCAoKDMgKiBpKSArIDIpIChjaGFyX29mX2ludCB6KVxuICBkb25lO1xuICBvdXRwdXRcblxubGV0IGVuY29kZSA/KHBhZCA9IHRydWUpID9hbHBoYWJldCBpbnB1dCA9XG4gIGxldCBsZW5ndGggPSBCaWdhcnJheS5BcnJheTEuZGltIGlucHV0IGluXG4gIGxldCB3b3JkcyA9IChsZW5ndGggKyAyKSAvIDMgaW5cbiAgKCogcm91bmRlZCB1cCAqKVxuICBsZXQgcGFkZGluZ19sZW4gPVxuICAgIGlmIGxlbmd0aCBtb2QgMyA9IDAgdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIDMgLSAobGVuZ3RoIG1vZCAzKVxuICBpblxuICBsZXQgb3V0cHV0ID0gQnl0ZXMubWFrZSAod29yZHMgKiA0KSAnXFwwMDAnIGluXG4gIGxldCBnZXQgaSA9XG4gICAgaWYgaSA+PSBsZW5ndGggdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIGludF9vZl9jaGFyIChCaWdhcnJheS5BcnJheTEuZ2V0IGlucHV0IGkpXG4gIGluXG4gIGZvciBpID0gMCB0byB3b3JkcyAtIDEgZG9cbiAgICBsZXQgeCA9IGdldCAoKDMgKiBpKSArIDApXG4gICAgYW5kIHkgPSBnZXQgKCgzICogaSkgKyAxKVxuICAgIGFuZCB6ID0gZ2V0ICgoMyAqIGkpICsgMikgaW5cbiAgICBsZXQgbiA9ICh4IGxzbCAxNikgbG9yICh5IGxzbCA4KSBsb3IgeiBpblxuICAgIGxldCBhID0gKG4gbHNyIDE4KSBsYW5kIDYzXG4gICAgYW5kIGIgPSAobiBsc3IgMTIpIGxhbmQgNjNcbiAgICBhbmQgYyA9IChuIGxzciA2KSBsYW5kIDYzXG4gICAgYW5kIGQgPSBuIGxhbmQgNjMgaW5cbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMCkgKHRvX2NoYXIgP2FscGhhYmV0IGEpO1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKCg0ICogaSkgKyAxKSAodG9fY2hhciA/YWxwaGFiZXQgYik7XG4gICAgQnl0ZXMuc2V0IG91dHB1dCAoKDQgKiBpKSArIDIpICh0b19jaGFyID9hbHBoYWJldCBjKTtcbiAgICBCeXRlcy5zZXQgb3V0cHV0ICgoNCAqIGkpICsgMykgKHRvX2NoYXIgP2FscGhhYmV0IGQpXG4gIGRvbmU7XG4gIGZvciBpID0gMSB0byBwYWRkaW5nX2xlbiBkb1xuICAgIEJ5dGVzLnNldCBvdXRwdXQgKEJ5dGVzLmxlbmd0aCBvdXRwdXQgLSBpKSBwYWRkaW5nXG4gIGRvbmU7XG4gIGlmIHBhZCB0aGVuXG4gICAgQnl0ZXMudW5zYWZlX3RvX3N0cmluZyBvdXRwdXRcbiAgZWxzZVxuICAgIEJ5dGVzLnN1Yl9zdHJpbmcgb3V0cHV0IDAgKEJ5dGVzLmxlbmd0aCBvdXRwdXQgLSBwYWRkaW5nX2xlbilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgbGlua3MgPVxuICB8IExJTktTIG9mICgoaW50ICogaW50KSAqIGludCkgbGlzdFxuICB8IFdIQVRFVkVSXG4gIHwgU09NRVxuICB8IFRZUEUgb2Ygc3RyaW5nICogc3RyaW5nXG5cbnR5cGUgY2NfcG9ydCA9IHtcbiAgcG9ydF9saW5rczogbGlua3M7XG4gIHBvcnRfc3RhdGVzOiBzdHJpbmcgbGlzdCBvcHRpb247ICAoKiogW05vbmVdIG1lYW5zIFdIQVRFVkVSICopXG59XG5cbnR5cGUgc2l0ZSA9IFBvcnQgb2YgY2NfcG9ydCB8IENvdW50ZXIgb2YgaW50XG50eXBlIGNjX3NpdGUgPSB7IHNpdGVfbmFtZTogc3RyaW5nOyBzaXRlX3R5cGU6IHNpdGUgfVxuXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogc3RyaW5nO1xuICBub2RlX2lkOiBpbnQgb3B0aW9uO1xuICBub2RlX3NpdGVzOiBjY19zaXRlIGFycmF5O1xufVxuXG50eXBlIGNvbm5lY3RlZF9jb21wb25lbnQgPSBjY19ub2RlIG9wdGlvbiBhcnJheSBhcnJheVxuXG5tb2R1bGUgTGlua1NldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gKGludCAqIGludCkgKiBpbnRcblxuICBsZXQgcHJpbnQgPVxuICAgIFBwLnBhaXJcbiAgICAgIChQcC5wYWlyIEZvcm1hdC5wcF9wcmludF9pbnQgRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIEZvcm1hdC5wcF9wcmludF9pbnRcblxuICBsZXQgY29tcGFyZSAoeCwgeSkgKHgnLCB5JykgPVxuICAgIGxldCBjID0gTW9kcy5pbnRfcGFpcl9jb21wYXJlIHggeCcgaW5cbiAgICBpZiBjID0gMCB0aGVuXG4gICAgICBNb2RzLmludF9jb21wYXJlIHkgeSdcbiAgICBlbHNlXG4gICAgICBjXG5lbmQpXG5cbmxldCBwcmludF9saW5rIChkYW5nbGluZywgZnJlZV9pZCkgcCBmID0gZnVuY3Rpb25cbiAgfCBXSEFURVZFUiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbI11cIlxuICB8IFNPTUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiW19dXCJcbiAgfCBUWVBFIChzaSwgdHkpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJbJXMuJXNdXCIgc2kgdHlcbiAgfCBMSU5LUyBbXSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIlxuICB8IExJTktTIGwgLT5cbiAgICBsZXQgbXlzZWxmID1cbiAgICAgIHJlZiAoTGlua1NldE1hcC5NYXAuZmluZF9kZWZhdWx0IExpbmtTZXRNYXAuTWFwLmVtcHR5IHAgIWRhbmdsaW5nKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWFdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIHAnIC0+XG4gICAgICAgICAgICAgbGV0IGkgPVxuICAgICAgICAgICAgICAgaWYgcCA9IHAnIHRoZW5cbiAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgICAgICAgICAgIChMaW5rU2V0TWFwLk1hcC5maW5kX29wdGlvbiBwKVxuICAgICAgICAgICAgICAgICAgICAgKExpbmtTZXRNYXAuTWFwLmZpbmRfb3B0aW9uIHAnICFkYW5nbGluZylcbiAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBpbmNyIGZyZWVfaWQgaW5cbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBteXNlbGYgOj0gTGlua1NldE1hcC5NYXAuYWRkIHAnICFmcmVlX2lkICFteXNlbGYgaW5cbiAgICAgICAgICAgICAgICAgICAhZnJlZV9pZFxuICAgICAgICAgICAgICAgICB8IFNvbWUgdmEgLT4gdmFcbiAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaVwiIGkpKVxuICAgICAgICBsXG4gICAgaW5cbiAgICBkYW5nbGluZyA6PSBMaW5rU2V0TWFwLk1hcC5hZGQgcCAhbXlzZWxmICFkYW5nbGluZ1xuXG5sZXQgcHJpbnRfcG9ydCB3aXRoX2xpbmsgbm9kZSBwIGlkIGYgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwieyN9XCJcbiAgICAgIHwgU29tZSBbXSAtPiAoKVxuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIlxuICAgICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIGkpKVxuICAgICAgICAgIGwpXG4gICAgcC5wb3J0X3N0YXRlc1xuICAgIChtYXRjaCB3aXRoX2xpbmsgd2l0aFxuICAgIHwgU29tZSBwYWNrIC0+IHByaW50X2xpbmsgcGFjayAobm9kZSwgaWQpXG4gICAgfCBOb25lIC0+IGZ1biBfIF8gLT4gKCkpXG4gICAgcC5wb3J0X2xpbmtzXG5cbmxldCBwcmludF9pbnRmIHdpdGhfbGluayBub2RlID1cbiAgUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBpZCBmIHNpIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiBzaS5zaXRlX25hbWUgaW5cbiAgICAgIG1hdGNoIHNpLnNpdGVfdHlwZSB3aXRoXG4gICAgICB8IFBvcnQgcCAtPiBwcmludF9wb3J0IHdpdGhfbGluayBub2RlIHAgaWQgZlxuICAgICAgfCBDb3VudGVyIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIns9JWl9XCIgaSlcblxubGV0IHByaW50X2FnZW50IHdpdGhfaWQgbGluayBub2RlIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgU29tZSBhZyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVzKEBbPGg+JWFAXSlcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwieCVpOlwiIGkpKVxuICAgICAgKGlmIHdpdGhfaWQgdGhlblxuICAgICAgICAgYWcubm9kZV9pZFxuICAgICAgIGVsc2VcbiAgICAgICAgIE5vbmUpXG4gICAgICBhZy5ub2RlX3R5cGUgKHByaW50X2ludGYgbGluayBub2RlKSBhZy5ub2RlX3NpdGVzXG5cbmxldCBwcmludF9jYyBmIG1peCA9XG4gIGxldCBsaW5rID0gU29tZSAocmVmIExpbmtTZXRNYXAuTWFwLmVtcHR5LCByZWYgMCkgaW5cbiAgUHAuYXJyYXlcbiAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXFxAIFwiKVxuICAgIChmdW4gYWwgLT4gUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBhciAtPiBwcmludF9hZ2VudCB0cnVlIGxpbmsgKGFsLCBhcikpKVxuICAgIGYgbWl4XG5cbmxldCBnZXRfY29sb3IgPVxuICBsZXQgc3RvcmUgPSBIYXNodGJsLmNyZWF0ZSAxMCBpblxuICBmdW4gaSAtPlxuICAgIHRyeSBIYXNodGJsLmZpbmQgc3RvcmUgaVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBsZXQgdiA9XG4gICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiIyV4JXgleFwiIChSYW5kb20uaW50IDI1NSkgKFJhbmRvbS5pbnQgMjU1KVxuICAgICAgICAgIChSYW5kb20uaW50IDI1NSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBIYXNodGJsLmFkZCBzdG9yZSBpIHYgaW5cbiAgICAgIHZcblxubGV0IHByaW50X2RvdF9jYyBuYl9jYyBmIG1peCA9XG4gIFBwLmFycmF5IFBwLmVtcHR5XG4gICAgKGZ1biBpbCAtPlxuICAgICAgUHAuYXJyYXkgUHAuZW1wdHkgKGZ1biBpciBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICB8IFNvbWUgYWcgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICBcIm5vZGUlZF8lZF8lZCBbbGFiZWwgPSBcXFwiQFs8aD4lYUBdXFxcIiwgY29sb3IgPSBcXFwiJXNcXFwiLCBcXFxuICAgICAgICAgICAgIHN0eWxlPWZpbGxlZF07QCxcIlxuICAgICAgICAgICAgbmJfY2MgaWwgaXJcbiAgICAgICAgICAgIChwcmludF9hZ2VudCBmYWxzZSBOb25lIChpbCwgaXIpKVxuICAgICAgICAgICAgKFNvbWUgYWcpIChnZXRfY29sb3IgYWcubm9kZV90eXBlKTtcbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwibm9kZSVkXyVkXyVkIC0+IGNvdW50ZXIlZCBbc3R5bGU9aW52aXNdO0AsXCIgbmJfY2MgaWxcbiAgICAgICAgICAgIGlyIG5iX2NjKSlcbiAgICBmIG1peDtcbiAgaWdub3JlXG4gIEBAIEFycmF5Lml0ZXJpXG4gICAgICAgKGZ1biBhbCAtPlxuICAgICAgICAgQXJyYXkuaXRlcmkgKGZ1biBhciAtPiBmdW5jdGlvblxuICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgfCBTb21lIGFnIC0+XG4gICAgICAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAgICAgIChmdW4gcyBzaSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBzaS5zaXRlX3R5cGUgd2l0aFxuICAgICAgICAgICAgICAgICB8IENvdW50ZXIgXyAtPiAoKVxuICAgICAgICAgICAgICAgICB8IFBvcnQgcCAtPlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBwLnBvcnRfbGlua3Mgd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgV0hBVEVWRVIgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBTT01FIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgVFlQRSAoX3NpLCBfdHkpIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgICAgICAgICAgIHwgTElOS1MgbGlua3MgLT5cbiAgICAgICAgICAgICAgICAgICAgIFBwLmxpc3QgUHAuZW1wdHlcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmICgoYWwnLCBhcicpLCBzJykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgYWwgPCBhbCdcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChhbCA9IGFsJyAmJiAoYXIgPCBhcicgfHwgKGFyID0gYXInICYmIHMgPCBzJykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbWl4LihhbCcpLihhcicpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBhZycgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwibm9kZSVkXyVkXyVkIC0+IG5vZGUlZF8lZF8lZCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFpbGxhYmVsPVxcXCIlc1xcXCIsIGhlYWRsYWJlbD1cXFwiJXNcXFwiLCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXI9bm9uZV07QCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5iX2NjIGFsIGFyIG5iX2NjIGFsJyBhcicgc2kuc2l0ZV9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWcnLm5vZGVfc2l0ZXMuKHMnKS5zaXRlX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICBmIGxpbmtzKSlcbiAgICAgICAgICAgICAgIGFnLm5vZGVfc2l0ZXMpKVxuICAgICAgIG1peFxuXG4oKlxudHlwZSBjY19ub2RlID0ge1xuICBub2RlX3R5cGU6IHN0cmluZztcbiAgbm9kZV9zaXRlczogY2Nfc2l0ZSBhcnJheTtcbn1cbnR5cGUgY29ubmVjdGVkX2NvbXBvbmVudCA9IGNjX25vZGUgYXJyYXlcbiAqKVxuXG5sZXQgd3JpdGVfY2NfcG9ydCBvYiBwID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicG9ydF9saW5rc1wiXG4gICAgICAoZnVuIG9iIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgV0hBVEVWRVIgLT4gWW9qc29uLkJhc2ljLndyaXRlX251bGwgb2IgKClcbiAgICAgICAgfCBTT01FIC0+IFlvanNvbi5CYXNpYy53cml0ZV9ib29sIG9iIHRydWVcbiAgICAgICAgfCBUWVBFIChzaSwgdHkpIC0+XG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJ7XFxcInNpdGVfbmFtZVxcXCI6XFxcIlwiIGluXG4gICAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb2Igc2kgaW5cbiAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCIsXFxcImFnZW50X3R5cGVcXFwiOlxcXCJcIiBpblxuICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIHR5IGluXG4gICAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwifVwiXG4gICAgICAgIHwgTElOS1MgbCAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXJcbiAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludFxuICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2ludClcbiAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICAgICAgICBvYiBsKVxuICAgICAgb2IgcC5wb3J0X2xpbmtzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJwb3J0X3N0YXRlc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfb3B0aW9uIChKc29uVXRpbC53cml0ZV9saXN0IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcpKVxuICAgICAgb2IgcC5wb3J0X3N0YXRlc1xuICBpblxuICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nXG5cbmxldCB3cml0ZV9zaXRlIG9iIGYgPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ1snIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggZi5zaXRlX3R5cGUgd2l0aFxuICAgIHwgQ291bnRlciBpIC0+XG4gICAgICBsZXQgKCkgPSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwiY291bnRlclwiIGluXG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJywnIGluXG4gICAgICBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGlcbiAgICB8IFBvcnQgcCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBvYiBcInBvcnRcIiBpblxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICcsJyBpblxuICAgICAgd3JpdGVfY2NfcG9ydCBvYiBwXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcblxubGV0IHdyaXRlX2NjX3NpdGUgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNpdGVfbmFtZVwiIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgZi5zaXRlX25hbWVcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfZmllbGQgXCJzaXRlX3R5cGVcIiB3cml0ZV9zaXRlIG9iIGYgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgbGlua3Nfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBXSEFURVZFUlxuICB8IGBCb29sIGIgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgYiBpblxuICAgIFNPTUVcbiAgfCBgQXNzb2MgWyAoXCJzaXRlX25hbWVcIiwgYFN0cmluZyBzaSk7IChcImFnZW50X3R5cGVcIiwgYFN0cmluZyB0eSkgXVxuICB8IGBBc3NvYyBbIChcImFnZW50X3R5cGVcIiwgYFN0cmluZyB0eSk7IChcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpKSBdIC0+XG4gICAgVFlQRSAoc2ksIHR5KVxuICB8IGBMaXN0IF8gYXMgeCAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBOb25lIGluXG4gICAgTElOS1NcbiAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAoSnNvblV0aWwuY29tcGFjdF90b19wYWlyXG4gICAgICAgICAgICAoSnNvblV0aWwuY29tcGFjdF90b19wYWlyXG4gICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpXG4gICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2cpKVxuICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnKSlcbiAgICAgICAgIHgpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgY2NfcG9ydFwiLCB4KSlcblxubGV0IHJlYWRfY2NfcG9ydCBwIGxiID1cbiAgbGV0IHBvcnRfbGlua3MsIHBvcnRfc3RhdGVzID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKHMsIGkpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwicG9ydF9saW5rc1wiIHRoZW5cbiAgICAgICAgICBsaW5rc19vZl95b2pzb24gKFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiksIGlcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChrZXkgPSBcInBvcnRfc3RhdGVzXCIpIGluXG4gICAgICAgICAgKCBzLFxuICAgICAgICAgICAgSnNvblV0aWwucmVhZF9vcHRpb25cbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nKVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgKSlcbiAgICAgIChMSU5LUyBbXSwgU29tZSBbXSkgcCBsYlxuICBpblxuICB7IHBvcnRfbGlua3M7IHBvcnRfc3RhdGVzIH1cblxubGV0IHJlYWRfc2l0ZSBwIGxiID1cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGJyIHAgbGIgaW5cbiAgbGV0IGtleSA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29tbWEgcCBsYiBpblxuICBsZXQgb3V0ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzXG4gICAgICAoZnVuIHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJjb3VudGVyXCIgdGhlblxuICAgICAgICAgIENvdW50ZXIgKFlvanNvbi5CYXNpYy5yZWFkX2ludCBwIGxiKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwicG9ydFwiKSBpblxuICAgICAgICAgIFBvcnQgKHJlYWRfY2NfcG9ydCBwIGxiKVxuICAgICAgICApKVxuICAgICAgcCBsYlxuICBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9yYnIgcCBsYiBpblxuICBvdXRcblxubGV0IHJlYWRfY2Nfc2l0ZSBwIGxiID1cbiAgbGV0IHNpdGVfbmFtZSwgc2l0ZV90eXBlID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKG4sIHMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwic2l0ZV9uYW1lXCIgdGhlblxuICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJzaXRlX3R5cGVcIikgaW5cbiAgICAgICAgICBuLCByZWFkX3NpdGUgcCBsYlxuICAgICAgICApKVxuICAgICAgKFwiXCIsIENvdW50ZXIgKC0xKSkgcCBsYlxuICBpblxuICB7IHNpdGVfbmFtZTsgc2l0ZV90eXBlIH1cblxubGV0IHdyaXRlX2NjX25vZGUgb2IgeCA9XG4gIEpzb25VdGlsLndyaXRlX29wdGlvblxuICAgIChmdW4gb2IgZiAtPlxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJub2RlX3R5cGVcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iXG4gICAgICAgICAgZi5ub2RlX3R5cGVcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbWF0Y2ggZi5ub2RlX2lkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBub2RlX2lkIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibm9kZV9pZFwiIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgb2Igbm9kZV9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfY29tbWEgb2JcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcIm5vZGVfc2l0ZXNcIlxuICAgICAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSB3cml0ZV9jY19zaXRlKVxuICAgICAgICAgIG9iIGYubm9kZV9zaXRlc1xuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfScpXG4gICAgb2IgeFxuXG5sZXQgcmVhZF9jY19ub2RlIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX29wdGlvblxuICAgIChmdW4gcCBsYiAtPlxuICAgICAgbGV0IG5vZGVfaWQsIG5vZGVfdHlwZSwgbm9kZV9zaXRlcyA9XG4gICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2ZpZWxkc1xuICAgICAgICAgIChmdW4gKGlkLCBuLCBzKSBrZXkgcCBsYiAtPlxuICAgICAgICAgICAgaWYga2V5ID0gXCJub2RlX2lkXCIgdGhlblxuICAgICAgICAgICAgICBTb21lIChZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiksIG4sIHNcbiAgICAgICAgICAgIGVsc2UgaWYga2V5ID0gXCJub2RlX3R5cGVcIiB0aGVuXG4gICAgICAgICAgICAgIGlkLCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgc1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJub2RlX3NpdGVzXCIpIGluXG4gICAgICAgICAgICAgIGlkLCBuLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSByZWFkX2NjX3NpdGUgcCBsYlxuICAgICAgICAgICAgKSlcbiAgICAgICAgICAoTm9uZSwgXCJcIiwgW3x8XSkgcCBsYlxuICAgICAgaW5cbiAgICAgIHsgbm9kZV9pZDsgbm9kZV90eXBlOyBub2RlX3NpdGVzIH0pXG4gICAgcCBsYlxuXG5sZXQgd3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCBvYiBmID1cbiAgSnNvblV0aWwud3JpdGVfYXJyYXkgKEpzb25VdGlsLndyaXRlX2FycmF5IHdyaXRlX2NjX25vZGUpIG9iIGZcblxubGV0IHJlYWRfY29ubmVjdGVkX2NvbXBvbmVudCBvYiBmID1cbiAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgKFlvanNvbi5CYXNpYy5yZWFkX2FycmF5IHJlYWRfY2Nfbm9kZSkgb2IgZlxuXG5sZXQgc3RyaW5nX29mX2Nvbm5lY3RlZF9jb21wb25lbnQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgbGV0ICgpID0gd3JpdGVfY29ubmVjdGVkX2NvbXBvbmVudCBvYiB4IGluXG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgY29ubmVjdGVkX2NvbXBvbmVudF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfY29ubmVjdGVkX2NvbXBvbmVudCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBjb3VudGVyX2luZm8gPSB7XG4gIGNvdW50ZXJfaW5mb19taW46IGludCBvcHRpb247XG4gIGNvdW50ZXJfaW5mb19tYXg6IGludCBvcHRpb247XG4gIGNvdW50ZXJfZGVmYXVsdF92YWx1ZTogaW50O1xufVxuXG50eXBlICdsaW5rcyBzaXRlX3NpZyA9IHtcbiAgaW50ZXJuYWxfc3RhdGU6IHVuaXQgTmFtZWREZWNscy50O1xuICBsaW5rczogJ2xpbmtzIG9wdGlvbjtcbiAgY291bnRlcl9pbmZvOiBjb3VudGVyX2luZm8gb3B0aW9uO1xufVxuXG50eXBlIHQgPSBib29sIGFycmF5IGFycmF5IHNpdGVfc2lnIE5hbWVkRGVjbHMudFxuXG5sZXQgZm9sZCBmID0gTmFtZWREZWNscy5mb2xkIChmdW4gaSBuIG8gXyAtPiBmIGkgbiBvKVxuXG5sZXQgbnVtX29mX3NpdGUgP2FnZW50X25hbWUgc2l0ZV9uYW1lIHNpZ25hdHVyZSA9XG4gIGxldCBraW5kID1cbiAgICBtYXRjaCBhZ2VudF9uYW1lIHdpdGhcbiAgICB8IE5vbmUgLT4gXCJzaXRlIG5hbWVcIlxuICAgIHwgU29tZSBhZ2VudF9uYW1lIC0+IFwic2l0ZSBuYW1lIGZvciBhZ2VudCBcIiBeIGFnZW50X25hbWVcbiAgaW5cbiAgTmFtZWREZWNscy5lbHRfaWQgfmtpbmQgc2lnbmF0dXJlIHNpdGVfbmFtZVxuXG5sZXQgc2l0ZV9vZl9udW0gYWRkciBzaWduYXR1cmUgPVxuICB0cnkgTmFtZWREZWNscy5lbHRfbmFtZSBzaWduYXR1cmUgYWRkclxuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IG51bV9vZl9pbnRlcm5hbF9zdGF0ZSBzaXRlX2lkIHN0YXRlIHNpZ25hdHVyZSA9XG4gIHRyeVxuICAgIGxldCBzaXRlX25hbWUsIHNpdGVfc2lnID0gc2lnbmF0dXJlLk5hbWVkRGVjbHMuZGVjbHMuKHNpdGVfaWQpIGluXG4gICAgTmFtZWREZWNscy5lbHRfaWRcbiAgICAgIH5raW5kOihcImludGVybmFsIHN0YXRlIGZvciBzaXRlIFwiIF4gc2l0ZV9uYW1lKVxuICAgICAgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGUgc3RhdGVcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBpbnRlcm5hbF9zdGF0ZV9vZl9zaXRlX2lkIHNpdGVfaWQgdmFsX2lkIHNpZ25hdHVyZSA9XG4gIHRyeVxuICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgc2l0ZV9pZCBpblxuICAgIE5hbWVkRGVjbHMuZWx0X25hbWUgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGUgdmFsX2lkXG4gIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuXG5sZXQgY291bnRlcl9vZl9zaXRlX2lkIHNpdGVfaWQgc2lnbmF0dXJlID1cbiAgdHJ5IChOYW1lZERlY2xzLmVsdF92YWwgc2lnbmF0dXJlIHNpdGVfaWQpLmNvdW50ZXJfaW5mb1xuICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmRcblxubGV0IGhhc19jb3VudGVyIHNpZ25hdHVyZSA9XG4gIGZvbGRcbiAgICAoZnVuIHBfaWQgXyBvayAtPlxuICAgICAgdHJ5XG4gICAgICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCBzaWduYXR1cmUgcF9pZCBpblxuICAgICAgICBvayB8fCBub3QgKHNpdGVfc2lnLmNvdW50ZXJfaW5mbyA9IE5vbmUpXG4gICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgZmFsc2Ugc2lnbmF0dXJlXG5cbigqXG5sZXQgcmVhZF9wb3NpdGlvbiBwIGxiID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiIHdpdGhcbiAgfCBgQXNzb2MgWyAoXCJsaW5lXCIsIGBJbnQgbGluZSk7IChcImNoclwiLCBgSW50IGNocikgXVxuICB8IGBBc3NvYyBbIChcImNoclwiLCBgSW50IGNocik7IChcImxpbmVcIiwgYEludCBsaW5lKSBdIC0+XG4gICAgeyBsaW5lOyBjaHIgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBwb3NpdGlvblwiLCB4KSlcblxubGV0IHdyaXRlX3Bvc2l0aW9uIG9iIHsgbGluZTsgY2hyIH0gPVxuICBZb2pzb24ud3JpdGVfYXNzb2Mgb2IgWyBcImxpbmVcIiwgYEludCBsaW5lOyBcImNoclwiLCBgSW50IGNociBdXG4qKVxuXG5sZXQgb25lX3RvX2pzb24gPVxuICBOYW1lZERlY2xzLnRvX2pzb24gKGZ1biBzaWduYXR1cmUgLT5cbiAgICAgIGBBc3NvY1xuICAgICAgICBbXG4gICAgICAgICAgKCBcImludGVybmFsX3N0YXRlXCIsXG4gICAgICAgICAgICBOYW1lZERlY2xzLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgc2lnbmF0dXJlLmludGVybmFsX3N0YXRlICk7XG4gICAgICAgICAgKCBcImxpbmtzXCIsXG4gICAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBsaW5rcyAtPlxuICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biBhIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBgTGlzdCAoQXJyYXkuZm9sZF9yaWdodCAoZnVuIGIgYyAtPiBgQm9vbCBiIDo6IGMpIGEgW10pXG4gICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgIGxpbmtzIFtdKSlcbiAgICAgICAgICAgICAgc2lnbmF0dXJlLmxpbmtzICk7XG4gICAgICAgICAgKCBcImNvdW50ZXJfaW5mb1wiLFxuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgIChmdW4gYyAtPlxuICAgICAgICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAoIFwibWluXCIsXG4gICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIChmdW4geCAtPiBgSW50IHgpIGMuY291bnRlcl9pbmZvX21pbiApO1xuICAgICAgICAgICAgICAgICAgICAoIFwibWF4XCIsXG4gICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIChmdW4geCAtPiBgSW50IHgpIGMuY291bnRlcl9pbmZvX21heCApO1xuICAgICAgICAgICAgICAgICAgICBcImRlZmF1bHRcIiwgYEludCBjLmNvdW50ZXJfZGVmYXVsdF92YWx1ZTtcbiAgICAgICAgICAgICAgICAgIF0pXG4gICAgICAgICAgICAgIHNpZ25hdHVyZS5jb3VudGVyX2luZm8gKTtcbiAgICAgICAgXSlcblxubGV0IG9uZV9vZl9qc29uIDogWW9qc29uLkJhc2ljLnQgLT4gYm9vbCBhcnJheSBhcnJheSBzaXRlX3NpZyBOYW1lZERlY2xzLnQgPVxuICBOYW1lZERlY2xzLm9mX2pzb24gKGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbF9zdGF0ZVwiLCBhKTsgKFwibGlua3NcIiwgYik7IChcImNvdW50ZXJfaW5mb1wiLCBjKSBdIC0+XG4gICAgICB7XG4gICAgICAgIGludGVybmFsX3N0YXRlID1cbiAgICAgICAgICBOYW1lZERlY2xzLm9mX2pzb25cbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IGBOdWxsIC0+ICgpXG4gICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgIGE7XG4gICAgICAgIGxpbmtzID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCcgLT5cbiAgICAgICAgICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEJvb2wgYiAtPiBiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGwnXG4gICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoXCJQcm9ibGVtYXRpYyBhZ2VudCBzaWduYXR1cmVcIiwgeCkpKVxuICAgICAgICAgICAgYjtcbiAgICAgICAgY291bnRlcl9pbmZvID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IGBBc3NvY1xuICAgICAgICAgICAgICAgICAgWyAoXCJtaW5cIiwgYzFfb3B0KTsgKFwibWF4XCIsIGMyX29wdCk7IChcImRlZmF1bHRcIiwgYEludCBjMykgXSAtPlxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19taW4gPVxuICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHwgYEludCBjIC0+IGNcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcbiAgICAgICAgICAgICAgICAgICAgICBjMV9vcHQ7XG4gICAgICAgICAgICAgICAgICBjb3VudGVyX2luZm9fbWF4ID1cbiAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICB8IGBJbnQgYyAtPiBjXG4gICAgICAgICAgICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgICAgYzJfb3B0O1xuICAgICAgICAgICAgICAgICAgY291bnRlcl9kZWZhdWx0X3ZhbHVlID0gYzM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChcIlByb2JsZW1hdGljIGFnZW50IHNpZ25hdHVyZVwiLCB4KSkpXG4gICAgICAgICAgICBjO1xuICAgICAgfVxuICAgIHwgeCAtPlxuICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiUHJvYmxlbWF0aWMgYWdlbnQgc2lnbmF0dXJlXCIsIHgpKSlcblxudHlwZSBjb3VudGVyX2FnZW50X2luZm8gPSB7IGlkOiBpbnQ7IGFyaXR5OiBpbnQ7IHBvcnRzOiBpbnQgKiBpbnQgfVxuXG50eXBlIHMgPSB7XG4gIGFnZW50X3NpZ3M6IHQgTmFtZWREZWNscy50O1xuICBjb3VudGVyX2FnZW50X2luZm86IGNvdW50ZXJfYWdlbnRfaW5mbyBvcHRpb247XG59XG5cbmxldCBzaXplIHNpZ3MgPSBOYW1lZERlY2xzLnNpemUgc2lncy5hZ2VudF9zaWdzXG5sZXQgZ2V0IHNpZ3MgYWdlbnRfaWQgPSBOYW1lZERlY2xzLmVsdF92YWwgc2lncy5hZ2VudF9zaWdzIGFnZW50X2lkXG5sZXQgYXJpdHkgc2lncyBhZ2VudF9pZCA9IE5hbWVkRGVjbHMuc2l6ZSAoZ2V0IHNpZ3MgYWdlbnRfaWQpXG5cbmxldCBtYXhfYXJpdHkgc2lncyA9XG4gIE5hbWVkRGVjbHMuZm9sZCAoZnVuIF8gXyB4IGEgLT4gbWF4IHggKE5hbWVkRGVjbHMuc2l6ZSBhKSkgMCBzaWdzLmFnZW50X3NpZ3NcblxubGV0IGFnZW50X29mX251bSBpIHNpZ3MgPSBOYW1lZERlY2xzLmVsdF9uYW1lIHNpZ3MuYWdlbnRfc2lncyBpXG5cbmxldCBudW1fb2ZfYWdlbnQgbmFtZSBzaWdzID1cbiAgTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJhZ2VudFwiIHNpZ3MuYWdlbnRfc2lncyBuYW1lXG5cbmxldCBpZF9vZl9zaXRlICgoYWdlbnRfbmFtZSwgXykgYXMgYWdlbnRfdHkpIHNpdGVfbmFtZSBzaWdzID1cbiAgbGV0IG4gPSBudW1fb2ZfYWdlbnQgYWdlbnRfdHkgc2lncyBpblxuICBudW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBzaXRlX25hbWUgKGdldCBzaWdzIG4pXG5cbmxldCBzaXRlX29mX2lkIGFnZW50X2lkIHNpdGVfaWQgc2lncyA9IHNpdGVfb2ZfbnVtIHNpdGVfaWQgKGdldCBzaWdzIGFnZW50X2lkKVxuXG5sZXQgaWRfb2ZfaW50ZXJuYWxfc3RhdGUgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eSkgc2l0ZV9uYW1lIHN0YXRlIHNpZ3MgPVxuICBsZXQgbiA9IG51bV9vZl9hZ2VudCBhZ2VudF90eSBzaWdzIGluXG4gIGxldCBzaWduYXR1cmUgPSBnZXQgc2lncyBuIGluXG4gIGxldCBzaXRlX2lkID0gbnVtX29mX3NpdGUgfmFnZW50X25hbWUgc2l0ZV9uYW1lIHNpZ25hdHVyZSBpblxuICBudW1fb2ZfaW50ZXJuYWxfc3RhdGUgc2l0ZV9pZCBzdGF0ZSBzaWduYXR1cmVcblxubGV0IGludGVybmFsX3N0YXRlX29mX2lkIGFnZW50X2lkIGlkX3NpdGUgaWRfc3RhdGUgc2lncyA9XG4gIGludGVybmFsX3N0YXRlX29mX3NpdGVfaWQgaWRfc2l0ZSBpZF9zdGF0ZSAoZ2V0IHNpZ3MgYWdlbnRfaWQpXG5cbmxldCBpbnRlcm5hbF9zdGF0ZXNfbnVtYmVyIGFnZW50X2lkIHNpdGVfaWQgc2lncyA9XG4gIHRyeVxuICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCAoZ2V0IHNpZ3MgYWdlbnRfaWQpIHNpdGVfaWQgaW5cbiAgICBOYW1lZERlY2xzLnNpemUgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGVcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gcmFpc2UgTm90X2ZvdW5kXG5cbmxldCBkZWZhdWx0X2ludGVybmFsX3N0YXRlIGFnZW50X2lkIHNpdGVfaWQgc2lncyA9XG4gIHRyeVxuICAgIGxldCBzaXRlX3NpZyA9IE5hbWVkRGVjbHMuZWx0X3ZhbCAoZ2V0IHNpZ3MgYWdlbnRfaWQpIHNpdGVfaWQgaW5cbiAgICBpZiBOYW1lZERlY2xzLnNpemUgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGUgPSAwIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIDBcbiAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICBpbnZhbGlkX2FyZyBcIlNpZ25hdHVyZS5kZWZhdWx0X251bV92YWx1ZTogaW52YWxpZCBzaXRlIGlkZW50aWZpZXJcIlxuXG5sZXQgcmVjIGFsbG93ZWRfbGluayBhZzEgczEgYWcyIHMyIHNpZ3MgPVxuICBpZiBhZzEgPiBhZzIgdGhlblxuICAgIGFsbG93ZWRfbGluayBhZzIgczIgYWcxIHMxIHNpZ3NcbiAgZWxzZSAoXG4gICAgdHJ5XG4gICAgICBtYXRjaCAoTmFtZWREZWNscy5lbHRfdmFsIChnZXQgc2lncyBhZzEpIHMxKS5saW5rcyB3aXRoXG4gICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgfCBTb21lIGwgLT4gbC4oYWcyIC0gYWcxKS4oczIpXG4gICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT5cbiAgICAgIGludmFsaWRfYXJnIFwiU2lnbmF0dXJlLmFsbG93ZWRfbGluazogaW52YWxpZCBzaXRlIGlkZW50aWZpZXJcIlxuICApXG5cbmxldCBjcmVhdGUgfmNvdW50ZXJzX3Blcl9hZ2VudCBhZ2VudF9zaWdzID1cbiAge1xuICAgIGFnZW50X3NpZ3M7XG4gICAgY291bnRlcl9hZ2VudF9pbmZvID1cbiAgICAgIChpZiBjb3VudGVyc19wZXJfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgKCogSWYgdGhlcmUgaXMgYSBjb3VudGVyIGFnZW50LCB3ZSBjaG9vc2UgMCBmb3IgaXRzIGFnZW50IGlkIGFuZCAwIGFuZCAxIGFzIGl0cyBwb3J0IGlkcyAqKVxuICAgICAgICAgU29tZSB7IGlkID0gMDsgYXJpdHkgPSAyOyBwb3J0cyA9IDAsIDEgfSk7XG4gIH1cblxubGV0IGlzX2NvdW50ZXJfYWdlbnQgc2lncyBhZ2VudF9pZCA9XG4gIG1hdGNoIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSBhZ2VudF9pbmZvIC0+IGFnZW50X2lkID0gYWdlbnRfaW5mby5pZFxuXG5sZXQgcG9ydHNfaWZfY291bnRlcl9hZ2VudCBzaWdzIGFnZW50X2lkID1cbiAgbWF0Y2ggc2lncy5jb3VudGVyX2FnZW50X2luZm8gd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYWdlbnRfaW5mbyAtPlxuICAgIGlmIGFnZW50X2lkID0gYWdlbnRfaW5mby5pZCB0aGVuXG4gICAgICBTb21lIGFnZW50X2luZm8ucG9ydHNcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmxldCBzaXRlX2lzX2NvdW50ZXIgc2lncyBhZ190eSBpZCA9XG4gIGNvdW50ZXJfb2Zfc2l0ZV9pZCBpZCAoZ2V0IHNpZ3MgYWdfdHkpIDw+IE5vbmVcblxubGV0IGdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyA9XG4gIG1hdGNoIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGZhaWx3aXRoIFwiTm8gY291bnRlciBhZ2VudFwiXG4gIHwgU29tZSBjb3VudGVyX2FnZW50X2luZm8gLT4gY291bnRlcl9hZ2VudF9pbmZvXG5cbmxldCBpbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCA6IHN0cmluZyA9IFwiX19pbnZlcnRlZFwiXG5cbmxldCBpc19pbnZlcnRlZF9jb3VudGVyIChjb3VudGVyX25hbWUgOiBzdHJpbmcpIDogYm9vbCA9XG4gIFN0cmluZy5lbmRzX3dpdGggfnN1ZmZpeDppbnZlcnRlZF9jb3VudGVyX3N1ZmZpeCBjb3VudGVyX25hbWVcblxubGV0IHByaW50X2FnZW50IHNpZ3MgZiBhZ190eSA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBAQCBhZ2VudF9vZl9udW0gYWdfdHkgc2lnc1xuXG5sZXQgcHJpbnRfc2l0ZSBzaWdzIGFnX3R5IGYgaWQgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgQEAgc2l0ZV9vZl9pZCBhZ190eSBpZCBzaWdzXG5cbmxldCBwcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUgZiBpZCA9XG4gIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBAQCBpbnRlcm5hbF9zdGF0ZV9vZl9pZCBhZ190eSBzaXRlIGlkIHNpZ3NcblxubGV0IHByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gcHJpbnRfc2l0ZSBzaWdzIGFnX3R5IGYgc2l0ZVxuICB8IFNvbWUgaWQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXN7JXN9XCJcbiAgICAgIChzaXRlX29mX2lkIGFnX3R5IHNpdGUgc2lncylcbiAgICAgIChpbnRlcm5hbF9zdGF0ZV9vZl9pZCBhZ190eSBzaXRlIGlkIHNpZ3MpXG5cbmxldCBwcmludF9jb3VudGVyX2luZm8gZiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgYyAtPlxuICAgIChtYXRjaCBjLmNvdW50ZXJfaW5mb19taW4sIGMuY291bnRlcl9pbmZvX21heCB3aXRoXG4gICAgfCBTb21lIGksIFNvbWUgaiB3aGVuIGkgPSBjLmNvdW50ZXJfZGVmYXVsdF92YWx1ZSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIns9JWQvKz0lZH1cIiBpIGpcbiAgICB8IGlfb3B0LCBqX29wdCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInstPSVzLz0lZC8rPSVzfVwiXG4gICAgICAgIChtYXRjaCBpX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIi1vb1wiXG4gICAgICAgIHwgU29tZSBpIC0+IEZvcm1hdC5zcHJpbnRmIFwiJWRcIiBpKVxuICAgICAgICBjLmNvdW50ZXJfZGVmYXVsdF92YWx1ZVxuICAgICAgICAobWF0Y2ggal9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCItb29cIlxuICAgICAgICB8IFNvbWUgaSAtPiBGb3JtYXQuc3ByaW50ZiBcIiVkXCIgaSkpXG5cbmxldCBwcmludF9jb3VudGVyIHNpZ3MgYWdfdHkgZiBpZCA9XG4gIHByaW50X2NvdW50ZXJfaW5mbyBmIChjb3VudGVyX29mX3NpdGVfaWQgaWQgKGdldCBzaWdzIGFnX3R5KSlcblxubGV0IHByaW50X29uZSA/KHNpZ3MgOiBzIG9wdGlvbikgKGkgOiBpbnQpIChmIDogRm9ybWF0LmZvcm1hdHRlcilcbiAgICAoc2lnbmF0dXJlIDogdCkgPVxuICBsZXQgcHBfaW50IGYgeCA9XG4gICAgaWYgTmFtZWREZWNscy5zaXplIHggPiAwIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCJcbiAgICAgICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIF8gbmEgZiAoKSAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIG5hKSlcbiAgICAgICAgeFxuICBpblxuICBsZXQgcHBfbGluayA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+IGZ1biBfIF8gXyAtPiAoKVxuICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICBmdW4gaSBmIC0+IChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIGxpbmtzIC0+XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlslYV1cIlxuICAgICAgICAgICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gYWcgLT5cbiAgICAgICAgICAgICAgICAgUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBzaSBmIGIgLT5cbiAgICAgICAgICAgICAgICAgICAgIGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChwcmludF9zaXRlIHNpZ3MgKGkgKyBhZykpXG4gICAgICAgICAgICAgICAgICAgICAgICAgc2kgKHByaW50X2FnZW50IHNpZ3MpIChpICsgYWcpKSkpXG4gICAgICAgICAgICBsaW5rcylcbiAgaW5cbiAgKE5hbWVkRGVjbHMucHJpbnRcbiAgICAgfnNlcDooZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIixALFwiKVxuICAgICAoZnVuIF8gbmFtZSBmIHNpdGVfc2lnIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJWElYSVhXCIgbmFtZSBwcF9pbnQgc2l0ZV9zaWcuaW50ZXJuYWxfc3RhdGVcbiAgICAgICAgIChwcF9saW5rIGkpIHNpdGVfc2lnLmxpbmtzIHByaW50X2NvdW50ZXJfaW5mbyBzaXRlX3NpZy5jb3VudGVyX2luZm8pKVxuICAgIGYgc2lnbmF0dXJlXG5cbmxldCBwcmludCBmIHNpZ3MgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdXCJcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gaSBuIGYgc2kgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiUlYWdlbnQ6ICVzKCVhKUBdXCIgbiAocHJpbnRfb25lIH5zaWdzIGkpIHNpKSlcbiAgICBzaWdzLmFnZW50X3NpZ3NcblxubGV0IHRvX2pzb24gc2lncyA9IE5hbWVkRGVjbHMudG9fanNvbiBvbmVfdG9fanNvbiBzaWdzLmFnZW50X3NpZ3NcblxubGV0IG9mX2pzb24gdiA9XG4gIGxldCBhZ2VudF9zaWdzIDogJ2Egc2l0ZV9zaWcgTmFtZWREZWNscy50IE5hbWVkRGVjbHMudCA9XG4gICAgTmFtZWREZWNscy5vZl9qc29uIG9uZV9vZl9qc29uIHZcbiAgaW5cbiAgbWF0Y2hcbiAgICBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBcIl9fY291bnRlcl9hZ2VudFwiIGFnZW50X3NpZ3MuTmFtZWREZWNscy5maW5kZXJcbiAgd2l0aFxuICB8IFNvbWUgaWQgLT5cbiAgICBsZXQgYWdlbnRfc2lnbmF0dXJlID0gTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3MgaWQgaW5cbiAgICBsZXQgcG9ydHMgPVxuICAgICAgKCBudW1fb2Zfc2l0ZSAoXCJhXCIsIExvYy5kdW1teSkgYWdlbnRfc2lnbmF0dXJlLFxuICAgICAgICBudW1fb2Zfc2l0ZSAoXCJiXCIsIExvYy5kdW1teSkgYWdlbnRfc2lnbmF0dXJlIClcbiAgICBpblxuICAgIHsgYWdlbnRfc2lnczsgY291bnRlcl9hZ2VudF9pbmZvID0gU29tZSB7IGlkOyBhcml0eSA9IDI7IHBvcnRzIH0gfVxuICB8IE5vbmUgLT4geyBhZ2VudF9zaWdzOyBjb3VudGVyX2FnZW50X2luZm8gPSBOb25lIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgY2Nfc2l0ZSA9IHsgc2l0ZV9saW5rOiAoaW50ICogaW50KSBvcHRpb247IHNpdGVfc3RhdGU6IGludCBvcHRpb24gfVxuXG50eXBlIGNjX25vZGUgPSB7XG4gIG5vZGVfdHlwZTogaW50O1xuICBub2RlX2lkX2luX3dpdG5lc3M6IGludDtcbiAgbm9kZV9zaXRlczogY2Nfc2l0ZSBhcnJheTtcbn1cblxudHlwZSBjb25uZWN0ZWRfY29tcG9uZW50ID0gY2Nfbm9kZSBhcnJheVxuXG5sZXQgcmVjIGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiIGRvbiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gdHJ1ZVxuICB8ICh4LCB5KSA6OiBxIC0+XG4gICAgbGV0IG8gPSBhLih4KSBpblxuICAgIGxldCBwID0gYi4oeSkgaW5cbiAgICBvLm5vZGVfdHlwZSA9IHAubm9kZV90eXBlXG4gICAgJiZcbiAgICBsZXQgaV9vayA9XG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAoZnVuIF8gYiB4IHkgLT5cbiAgICAgICAgICBiXG4gICAgICAgICAgJiZcbiAgICAgICAgICBtYXRjaCB4LnNpdGVfc3RhdGUsIHkuc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPiBhID0gYlxuICAgICAgICAgIHwgTm9uZSwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgfCAoU29tZSBfIHwgTm9uZSksIF8gLT4gZmFsc2UpXG4gICAgICAgIHRydWUgby5ub2RlX3NpdGVzIHAubm9kZV9zaXRlc1xuICAgIGluXG4gICAgaV9va1xuICAgICYmXG4gICAgKG1hdGNoXG4gICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0MmlcbiAgICAgICAgIChmdW4gXyBjIHggeSAtPlxuICAgICAgICAgICBtYXRjaCBjIHdpdGhcbiAgICAgICAgICAgfCBOb25lIC0+IGNcbiAgICAgICAgICAgfCBTb21lIHRvZG8gLT5cbiAgICAgICAgICAgICAobWF0Y2ggeC5zaXRlX2xpbmssIHkuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUsIFNvbWUgXyB8IFNvbWUgXywgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgfCBOb25lLCBOb25lIC0+IGNcbiAgICAgICAgICAgICB8IFNvbWUgKGEsIHMpLCBTb21lIChiLCBzJykgLT5cbiAgICAgICAgICAgICAgIGlmIHMgPD4gcycgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAoIExpc3QuZmluZF9hbGwgKGZ1biAoYScsIGInKSAtPiBhID0gYScgfHwgYiA9IGInKSBkb24sXG4gICAgICAgICAgICAgICAgICAgICBMaXN0LmZpbmRfYWxsIChmdW4gKGEnLCBiJykgLT4gYSA9IGEnIHx8IGIgPSBiJykgdG9kbyApXG4gICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXywgXyB8IF8sIF8gOjogXyA6OiBfIHwgWyBfIF0sIFsgXyBdIC0+IE5vbmVcbiAgICAgICAgICAgICAgICAgfCBbIChhJywgYicpIF0sIFtdIHwgW10sIFsgKGEnLCBiJykgXSAtPlxuICAgICAgICAgICAgICAgICAgIGlmIGEgPSBhJyAmJiBiID0gYicgdGhlblxuICAgICAgICAgICAgICAgICAgICAgY1xuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgICAgfCBbXSwgW10gLT4gU29tZSAoKGEsIGIpIDo6IHRvZG8pXG4gICAgICAgICAgICAgICApKSlcbiAgICAgICAgIChTb21lIHEpIG8ubm9kZV9zaXRlcyBwLm5vZGVfc2l0ZXNcbiAgICAgd2l0aFxuICAgIHwgU29tZSB0b2RvJyAtPiBhZ2VudHNfYXJlX2NvbXBhdGlibGVzIGEgYiAoKHgsIHkpIDo6IGRvbikgdG9kbydcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBjbGFzc2lmeV9ieV90eXBlIHNpZ3MgbWl4ID1cbiAgbGV0IGxlbiA9IFNpZ25hdHVyZS5zaXplIHNpZ3MgaW5cbiAgbGV0IG91dCA9IEFycmF5Lm1ha2UgbGVuICgwLCBbXSkgaW5cbiAgbGV0IGNsYXNzaWZ5IGlkIGFnID1cbiAgICBsZXQgbmIsIGFncyA9IG91dC4oYWcubm9kZV90eXBlKSBpblxuICAgIG91dC4oYWcubm9kZV90eXBlKSA8LSBzdWNjIG5iLCBpZCA6OiBhZ3NcbiAgaW5cbiAgbGV0ICgpID0gQXJyYXkuaXRlcmkgY2xhc3NpZnkgbWl4IGluXG4gIG91dFxuXG5sZXQgZXF1YWwgY2J0X2EgYSBjYnRfYiBiID1cbiAgbWF0Y2ggVG9vbHMuYXJyYXlfbWluX2VxdWFsX25vdF9udWxsIGNidF9hIGNidF9iIHdpdGhcbiAgfCBOb25lIC0+IGZhbHNlXG4gIHwgU29tZSAoW10sIGFncykgLT4gYWdzID0gW11cbiAgfCBTb21lIChoMSA6OiBfLCBhZ3MpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYm9vbCBhZyAtPiBib29sIHx8IGFnZW50c19hcmVfY29tcGF0aWJsZXMgYSBiIFtdIFsgaDEsIGFnIF0pXG4gICAgICBmYWxzZSBhZ3NcblxubGV0IGhhc2hfcHJpbWUgPSAyOVxuXG5sZXQgY29hcnNlX2hhc2ggY2J0ID1cbiAgQXJyYXkuZm9sZF9yaWdodCAoZnVuIChsLCBfKSBhY2MgLT4gbCArIChoYXNoX3ByaW1lICogYWNjKSkgY2J0IDBcblxudHlwZSB0ID0gKGludCAqIChpbnQgKiBpbnQgbGlzdCkgYXJyYXkgKiBjb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0IE1vZHMuSW50TWFwLnRcblxubGV0IGVtcHR5ID0gTW9kcy5JbnRNYXAuZW1wdHlcblxubGV0IGluY3JlbWVudF9pbl9zbmFwc2hvdCB+cmF3IHNpZ3MgeCBzID1cbiAgbGV0IGNidF94ID0gY2xhc3NpZnlfYnlfdHlwZSBzaWdzIHggaW5cbiAgbGV0IGhzID0gY29hcnNlX2hhc2ggY2J0X3ggaW5cbiAgbGV0IGwgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW10gaHMgcyBpblxuICBsZXQgcmVjIGF1eF9pbmNyZW1lbnQgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gWyAxLCBjYnRfeCwgeCBdXG4gICAgfCAoKG4sIGNidF95LCB5KSBhcyBoKSA6OiB0IC0+XG4gICAgICBpZiBlcXVhbCBjYnRfeCB4IGNidF95IHkgdGhlblxuICAgICAgICAoc3VjYyBuLCBjYnRfeSwgeSkgOjogdFxuICAgICAgZWxzZVxuICAgICAgICBoIDo6IGF1eF9pbmNyZW1lbnQgdFxuICBpblxuICBNb2RzLkludE1hcC5hZGQgaHNcbiAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAoMSwgY2J0X3gsIHgpIDo6IGxcbiAgICAgZWxzZVxuICAgICAgIGF1eF9pbmNyZW1lbnQgbClcbiAgICBzXG5cbmxldCByZWMgY291bnRlcl92YWx1ZSBjYyAobmlkLCBzaWQpIGNvdW50ID1cbiAgbGV0IGFnID0gY2MuKG5pZCkgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gaWQgYWNjIHNpIC0+XG4gICAgICBpZiBpZCA9IHNpZCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHNpLnNpdGVfbGluayB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIHggLT4gY291bnRlcl92YWx1ZSBjYyB4IChhY2MgKyAxKVxuICAgICAgKSlcbiAgICBjb3VudCBhZy5ub2RlX3NpdGVzXG5cbmxldCBjY190b191c2VyX2NjID8oa2VlcF9pbnZlcnRlZF9jb3VudGVycyA6IGJvb2wgPSBmYWxzZSkgfmRlYnVnX21vZGUgfnJhdyBzaWdzXG4gICAgY2MgPVxuICBsZXQgciA6IFJlbmFtaW5nLnQgPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBsZXQgKGNjX2xpc3Rfd2l0aG91dF9jb3VudGVycywgaW5kZXhlcywgXykgOiBjY19ub2RlIGxpc3QgKiBSZW5hbWluZy50ICogaW50ID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgKGFjYywgaW5kZXhlcywgcG9zKSBhZyAtPlxuICAgICAgICBpZiBTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGFnLm5vZGVfdHlwZSB0aGVuXG4gICAgICAgICAgYWNjLCBpbmRleGVzLCBwb3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGluZGV4ZXMnID1cbiAgICAgICAgICAgIGlmIGkgPSBwb3MgdGhlblxuICAgICAgICAgICAgICBpbmRleGVzXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGkgcG9zIGluZGV4ZXMgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkluamVjdGl2aXR5IG9mIHJlbmFtaW5nIGluIHNuYXBzaG90XCIpKVxuICAgICAgICAgICAgICB8IFNvbWUgciAtPiByXG4gICAgICAgICAgICApXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhZyA6OiBhY2MsIGluZGV4ZXMnLCBwb3MgKyAxXG4gICAgICAgICkpXG4gICAgICAoW10sIHIsIDApIGNjXG4gIGluXG4gIGxldCBjY193aXRob3V0X2NvdW50ZXJzIDogY2Nfbm9kZSBhcnJheSA9XG4gICAgQXJyYXkub2ZfbGlzdCAoTGlzdC5yZXYgY2NfbGlzdF93aXRob3V0X2NvdW50ZXJzKVxuICBpblxuICBbfFxuICAgIEFycmF5Lm1hcFxuICAgICAgKGZ1biBhZyAtPlxuICAgICAgICBsZXQgbm9kZV9zaXRlc19hbGwgOiBVc2VyX2dyYXBoLmNjX3NpdGUgYXJyYXkgPVxuICAgICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAgIChmdW4gaWQgc2kgLT5cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID1cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWcubm9kZV90eXBlKVxuICAgICAgICAgICAgICAgICAgICBpZDtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAobGV0IHBvcnRfc3RhdGVzID1cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpLnNpdGVfc3RhdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFNvbWUgW11cbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZy5ub2RlX3R5cGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggc2kuc2l0ZV9saW5rIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzO1xuICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgfCBTb21lIChkbl9pZCwgcykgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCBkbl9pZCcgPVxuICAgICAgICAgICAgICAgICAgICAgICB0cnkgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5kZXhlcyBkbl9pZFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFJlbmFtaW5nLlVuZGVmaW5lZCB8IEludmFsaWRfYXJndW1lbnQgXyAtPiBkbl9pZFxuICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgY2MuKGRuX2lkKS5ub2RlX3R5cGVcbiAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Db3VudGVyIChjb3VudGVyX3ZhbHVlIGNjIChkbl9pZCwgcykgMClcbiAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5MSU5LUyBbICgwLCBkbl9pZCcpLCBzIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgYWcubm9kZV9zaXRlc1xuICAgICAgICBpblxuICAgICAgICBsZXQgbm9kZV9zaXRlcyA6IFVzZXJfZ3JhcGguY2Nfc2l0ZSBhcnJheSA9XG4gICAgICAgICAgaWYga2VlcF9pbnZlcnRlZF9jb3VudGVycyB0aGVuXG4gICAgICAgICAgICBub2RlX3NpdGVzX2FsbFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqIFJlbW92ZSBpbnZlcnRlZCBjb3VudGVycyBmcm9tIHVzZXIgc25hcHNob3QgKilcbiAgICAgICAgICAgIG5vZGVfc2l0ZXNfYWxsIHw+IEFycmF5LnRvX2xpc3RcbiAgICAgICAgICAgIHw+IExpc3QuZmlsdGVyIChmdW4gKHNpdGUgOiBVc2VyX2dyYXBoLmNjX3NpdGUpIDogYm9vbCAtPlxuICAgICAgICAgICAgICAgICAgIG5vdCAoU2lnbmF0dXJlLmlzX2ludmVydGVkX2NvdW50ZXIgc2l0ZS5zaXRlX25hbWUpKVxuICAgICAgICAgICAgfD4gQXJyYXkub2ZfbGlzdFxuICAgICAgICBpblxuXG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfaWQgPVxuICAgICAgICAgICAgICAoaWYgcmF3IHRoZW5cbiAgICAgICAgICAgICAgICAgU29tZSBhZy5ub2RlX2lkX2luX3dpdG5lc3NcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSk7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfdHlwZSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKSBhZy5ub2RlX3R5cGU7XG4gICAgICAgICAgICBVc2VyX2dyYXBoLm5vZGVfc2l0ZXM7XG4gICAgICAgICAgfSlcbiAgICAgIGNjX3dpdGhvdXRfY291bnRlcnM7XG4gIHxdXG5cbmxldCBmb2xkIGYgeCBzID1cbiAgTW9kcy5JbnRNYXAuZm9sZFxuICAgIChmdW4gXyBsIGFjYyAtPiBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgKG5iLCBfLCBjYykgLT4gZiBhIG5iIGNjKSBhY2MgbClcbiAgICBzIHhcblxubGV0IGV4cG9ydCB+ZGVidWdfbW9kZSB+cmF3IHNpZ3MgcyA9XG4gIGZvbGQgKGZ1biBhIHggeSAtPiAoeCwgY2NfdG9fdXNlcl9jYyB+ZGVidWdfbW9kZSB+cmF3IHNpZ3MgeSkgOjogYSkgW10gc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSB0ID0gaW50ICogaW50XG4oKiogYWdlbnRfaWQgKiBhZ2VudF90eXBlICopXG5cbnR5cGUgYWcgPSB0XG5cbmxldCBtYWtlIH5pZCB+c29ydCA9IGlkLCBzb3J0XG5cbmxldCBwcmludCA/c2lncyB+d2l0aF9pZCBmIChpLCB0eSkgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgdHkgKGZ1biBmIC0+XG4gICAgICAgIGlmIHdpdGhfaWQgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiLyolaSovXCIgaSlcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJuJWlcIiBpXG5cbmxldCBwcmludF9zaXRlID9zaWdzIChpLCBhZ2VudCkgZiBpZCA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnZW50IGYgaWRcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJuJWlzJWlcIiBpIGlkXG5cbmxldCBwcmludF9pbnRlcm5hbCA/c2lncyAoaSwgYWdlbnQpIHNpdGUgZiBpZCA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnZW50IHNpdGUgZiAoU29tZSBpZClcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJuJWlzJWl+JWlcIiBpIHNpdGUgaWRcblxubGV0IHByaW50X3Jhd19pbnRlcm5hbCA/c2lncyAoaSwgYWdlbnQpIHNpdGUgZiBpZCA9XG4gIG1hdGNoIHNpZ3Mgd2l0aFxuICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ2VudCBzaXRlIGYgaWRcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJuJWlzJWl+JWlcIiBpIHNpdGUgaWRcblxubGV0IHJlbmFtZSB+ZGVidWdfbW9kZSBpbmogKG5faWQsIG5fdHkpID1cbiAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIG5faWQsIG5fdHlcblxubGV0IHNvcnQgKF8sIHR5KSA9IHR5XG5sZXQgaWQgKGlkLCBfKSA9IGlkXG5sZXQgY29tcGFyZSAoaWQxLCBfKSAoaWQyLCBfKSA9IE1vZHMuaW50X2NvbXBhcmUgaWQxIGlkMlxubGV0IGpzb25fZGljdGlvbm5hcnkgPSBcIlxcXCJhZ2VudFxcXCI6e1xcXCJpZFxcXCI6MCxcXFwidHlwZVxcXCI6MX1cIlxuXG5sZXQgd3JpdGVfanNvbiBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9pbnQgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBhXG5cbmxldCByZWFkX2pzb24gcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludCBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYlxuXG5sZXQgdG9fanNvbiAoaWQsIHR5KSA9IGBMaXN0IFsgYEludCBpZDsgYEludCB0eSBdXG5cbmxldCBvZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgaWQ7IGBJbnQgdHkgXSAtPiBpZCwgdHlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5cbm1vZHVsZSBTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGFnXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCA9IHByaW50ID9zaWdzOk5vbmUgfndpdGhfaWQ6dHJ1ZVxuZW5kKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEVkZ2UgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gQWdlbnQudCAqIGludFxuICAoKiogYWdlbnQgKiBzaXRlICopXG5cbiAgbGV0IF9jb21wYXJlICgobiwgXyksIHMpICgobicsIF8pLCBzJykgPVxuICAgIGxldCBjID0gTW9kcy5pbnRfY29tcGFyZSBuIG4nIGluXG4gICAgaWYgYyA8PiAwIHRoZW5cbiAgICAgIGNcbiAgICBlbHNlXG4gICAgICBNb2RzLmludF9jb21wYXJlIHMgcydcblxuICAoKiBsZXQgZHVtbXlfbGluayA9ICgoLTEsLTEpLC0xKSAqKVxuZW5kXG5cbigqIGZ1bmN0aW9ucyB1c2luZyB0aGUgY2FjaGUgYXJlIHJlc3BvbnNpYmxlIG9mIHJlc2V0aW5nIHRoZSBjYWNoZSBhdCBleGl0ICopXG5tb2R1bGUgQ2FjaGUgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0ge1xuICAgIHRlc3RzOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICAgIGJhZzogaW50IE1vZHMuRHluQXJyYXkudDtcbiAgICBtdXRhYmxlIGxpbWl0OiBpbnQ7XG4gIH1cblxuICBsZXQgaW50X2wgPSAzMSAoKlN5cy5pbnRfc2l6ZSopXG5cbiAgbGV0IGNyZWF0ZSAoKSA9XG4gICAgeyB0ZXN0cyA9IE1vZHMuRHluQXJyYXkubWFrZSAxIDA7IGJhZyA9IE1vZHMuRHluQXJyYXkubWFrZSAxIDA7IGxpbWl0ID0gMCB9XG5cbiAgbGV0IG1hcmsgdCBpID1cbiAgICBsZXQgeCA9IGkgLyBpbnRfbCBpblxuICAgIGxldCBvbGQgPSBNb2RzLkR5bkFycmF5LmdldCB0LnRlc3RzIHggaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgb2xkID0gMCB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdC5iYWcgdC5saW1pdCB4IGluXG4gICAgICAgIHQubGltaXQgPC0gc3VjYyB0LmxpbWl0XG4gICAgICApXG4gICAgaW5cbiAgICBNb2RzLkR5bkFycmF5LnNldCB0LnRlc3RzIHggKG9sZCBsb3IgKDEgbHNsIChpIG1vZCBpbnRfbCkpKVxuXG4gIGxldCB0ZXN0IHQgaSA9XG4gICAgTW9kcy5EeW5BcnJheS5nZXQgdC50ZXN0cyAoaSAvIGludF9sKSBsYW5kICgxIGxzbCAoaSBtb2QgaW50X2wpKSA8PiAwXG5cbiAgbGV0IHJlc2V0IHQgPVxuICAgIGxldCAoKSA9XG4gICAgICBUb29scy5pdGVyaVxuICAgICAgICAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgdC50ZXN0cyAoTW9kcy5EeW5BcnJheS5nZXQgdC5iYWcgaSkgMClcbiAgICAgICAgdC5saW1pdFxuICAgIGluXG4gICAgdC5saW1pdCA8LSAwXG5cbiAgbGV0IGl0ZXJpX3Jlc2V0IGYgdCA9XG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4gayAtPlxuICAgICAgICAgIGxldCBpID0gTW9kcy5EeW5BcnJheS5nZXQgdC5iYWcgayBpblxuICAgICAgICAgIGxldCB2ID0gTW9kcy5EeW5BcnJheS5nZXQgdC50ZXN0cyBpIGluXG4gICAgICAgICAgaWYgdiA8PiAwIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGFjYyA9IGludF9sICogaSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgVG9vbHMuaXRlcmlcbiAgICAgICAgICAgICAgICAoZnVuIGogLT4gaWYgdiBsYW5kICgxIGxzbCBqKSA8PiAwIHRoZW4gZiAoYWNjICsgaikpXG4gICAgICAgICAgICAgICAgaW50X2xcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBNb2RzLkR5bkFycmF5LnNldCB0LnRlc3RzIGkgMFxuICAgICAgICAgICkpXG4gICAgICAgIHQubGltaXRcbiAgICBpblxuICAgIHQubGltaXQgPC0gMFxuZW5kXG5cbmxldCBnbHVlX2Nvbm5lY3RlZF9jb21wb25lbnQgbGlua3MgY2FjaGUgY2NzIG5vZGUxIG5vZGUyID1cbiAgbGV0IGNjX2lkX29wID0gTW9kcy5EeW5BcnJheS5nZXQgY2NzIG5vZGUyIGluXG4gIGxldCByZWMgZXhwbG9yZV9zaXRlIGlkIHNpdGUgbmV4dCA9XG4gICAgaWYgc2l0ZSA9IDAgdGhlblxuICAgICAgbmV4dFxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKS4ocHJlZCBzaXRlKSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZXhwbG9yZV9zaXRlIGlkIChwcmVkIHNpdGUpIG5leHRcbiAgICAgIHwgU29tZSAoKGlkJywgXyksIF8pIC0+XG4gICAgICAgIGlmIE1vZHMuRHluQXJyYXkuZ2V0IGNjcyBpZCcgPSBjY19pZF9vcCB8fCBDYWNoZS50ZXN0IGNhY2hlIGlkJyB0aGVuXG4gICAgICAgICAgZXhwbG9yZV9zaXRlIGlkIChwcmVkIHNpdGUpIG5leHRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUubWFyayBjYWNoZSBpZCcgaW5cbiAgICAgICAgICBleHBsb3JlX3NpdGUgaWQgKHByZWQgc2l0ZSkgKGlkJyA6OiBuZXh0KVxuICAgICAgICApXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGlzX2luX2NjIG5leHQgPSBmdW5jdGlvblxuICAgIHwgaWQgOjogdG9kb3MgLT5cbiAgICAgIGlzX2luX2NjXG4gICAgICAgIChleHBsb3JlX3NpdGUgaWQgKEFycmF5Lmxlbmd0aCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpKSBuZXh0KVxuICAgICAgICB0b2Rvc1xuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgQ2FjaGUuaXRlcmlfcmVzZXQgKGZ1biBpIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNjcyBpIGNjX2lkX29wKSBjYWNoZVxuICAgICAgfCBfIC0+IGlzX2luX2NjIFtdIG5leHQpXG4gIGluXG4gIGxldCAoKSA9IENhY2hlLm1hcmsgY2FjaGUgbm9kZTEgaW5cbiAgaXNfaW5fY2MgW10gWyBub2RlMSBdXG5cbmxldCBzZXBhcmF0ZV9jb25uZWN0ZWRfY29tcG9uZW50IGxpbmtzIChjYWNoZTEsIGNhY2hlMikgY2NzIG5vZGUxIG5vZGUyID1cbiAgbGV0IG9sZF9jY19pZCA9IE9wdGlvbl91dGlsLnVuc29tZSAoLTEpIChNb2RzLkR5bkFycmF5LmdldCBjY3Mgbm9kZTEpIGluXG4gIGxldCByZWMgaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgc2l0ZSBuZXh0ID1cbiAgICBpZiBzaXRlID0gMCB0aGVuXG4gICAgICBTb21lIG5leHRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCBsaW5rcyBpZCkuKHByZWQgc2l0ZSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGluc3BlY3Rfc2l0ZSBjYWNoZSA/ZHN0X2NhY2hlIGlkIChwcmVkIHNpdGUpIG5leHRcbiAgICAgIHwgU29tZSAoKGlkJywgXyksIF8pIC0+XG4gICAgICAgIGlmXG4gICAgICAgICAgbWF0Y2ggZHN0X2NhY2hlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgICB8IFNvbWUgZGMgLT4gQ2FjaGUudGVzdCBkYyBpZCdcbiAgICAgICAgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZSBpZiBDYWNoZS50ZXN0IGNhY2hlIGlkJyB0aGVuXG4gICAgICAgICAgaW5zcGVjdF9zaXRlIGNhY2hlID9kc3RfY2FjaGUgaWQgKHByZWQgc2l0ZSkgbmV4dFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGluc3BlY3Rfc2l0ZSBjYWNoZSA/ZHN0X2NhY2hlIGlkIChwcmVkIHNpdGUpIChpZCcgOjogbmV4dClcbiAgICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IHJlYyBtYXJrX25ld19jYyBvcmlnIGNhY2hlIG5leHQgPSBmdW5jdGlvblxuICAgIHwgaWQgOjogdG9kb3MgLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgaW5zcGVjdF9zaXRlIGNhY2hlIGlkIChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSkgbmV4dFxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgU29tZSBuZXh0JyAtPiBtYXJrX25ld19jYyBvcmlnIGNhY2hlIG5leHQnIHRvZG9zKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBDYWNoZS5pdGVyaV9yZXNldCAoZnVuIGkgLT4gTW9kcy5EeW5BcnJheS5zZXQgY2NzIGkgKFNvbWUgb3JpZykpIGNhY2hlXG4gICAgICAgIGluXG4gICAgICAgIFNvbWUgKG9sZF9jY19pZCwgb3JpZylcbiAgICAgIHwgXyAtPiBtYXJrX25ld19jYyBvcmlnIGNhY2hlIFtdIG5leHQpXG4gIGluXG4gIGxldCByZWMgaW5fc2FtZV9jYyBvdGhlcl9vcmlnIG90aGVyX2NhY2hlIG90aGVyX25leHQgdGhpc19vcmlnIHRoaXNfY2FjaGVcbiAgICAgIHRoaXNfbmV4dCA9IGZ1bmN0aW9uXG4gICAgfCBpZCA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBpbnNwZWN0X3NpdGUgdGhpc19jYWNoZSB+ZHN0X2NhY2hlOm90aGVyX2NhY2hlIGlkXG4gICAgICAgICAgIChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSlcbiAgICAgICAgICAgdGhpc19uZXh0XG4gICAgICAgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IHRoaXNfY2FjaGUgaW5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgb3RoZXJfY2FjaGUgaW5cbiAgICAgICAgTm9uZVxuICAgICAgfCBTb21lIG5leHQnIC0+XG4gICAgICAgIGluX3NhbWVfY2Mgb3RoZXJfb3JpZyBvdGhlcl9jYWNoZSBvdGhlcl9uZXh0IHRoaXNfb3JpZyB0aGlzX2NhY2hlIG5leHQnXG4gICAgICAgICAgdG9kb3MpXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIHRoaXNfbmV4dCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGlmIENhY2hlLnRlc3QgdGhpc19jYWNoZSBvbGRfY2NfaWQgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgdGhpc19jYWNoZSBpblxuICAgICAgICAgIG1hcmtfbmV3X2NjIG90aGVyX29yaWcgb3RoZXJfY2FjaGUgW10gb3RoZXJfbmV4dFxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IG90aGVyX2NhY2hlIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIENhY2hlLml0ZXJpX3Jlc2V0XG4gICAgICAgICAgICAgIChmdW4gaSAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaSAoU29tZSB0aGlzX29yaWcpKVxuICAgICAgICAgICAgICB0aGlzX2NhY2hlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTb21lIChvbGRfY2NfaWQsIHRoaXNfb3JpZylcbiAgICAgICAgKVxuICAgICAgfCBfIC0+XG4gICAgICAgIGluX3NhbWVfY2MgdGhpc19vcmlnIHRoaXNfY2FjaGUgdGhpc19uZXh0IG90aGVyX29yaWcgb3RoZXJfY2FjaGUgW11cbiAgICAgICAgICBvdGhlcl9uZXh0KVxuICBpblxuICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlMSBub2RlMSBpblxuICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlMiBub2RlMiBpblxuICBpbl9zYW1lX2NjIG5vZGUxIGNhY2hlMSBbIG5vZGUxIF0gbm9kZTIgY2FjaGUyIFtdIFsgbm9kZTIgXVxuXG50eXBlIHRhYmxlcyA9IHtcbiAgY29ubmVjdDogRWRnZS50IG9wdGlvbiBhcnJheSBNb2RzLkR5bkFycmF5LnQ7XG4gIHN0YXRlOiBpbnQgb3B0aW9uIGFycmF5IE1vZHMuRHluQXJyYXkudDtcbiAgc29ydDogaW50IG9wdGlvbiBNb2RzLkR5bkFycmF5LnQ7XG4gIGNvbm5lY3RlZF9jb21wb25lbnQ6IGludCBvcHRpb24gTW9kcy5EeW5BcnJheS50IG9wdGlvbjtcbiAgY2FjaGVzOiBDYWNoZS50ICogQ2FjaGUudDtcbn1cblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIHRhYmxlczogdGFibGVzIG9wdGlvbjtcbiAgbWlzc2luZ3M6IE1vZHMuSW50MlNldC50O1xuICBmcmVlX2lkOiBpbnQgKiBpbnQgbGlzdDtcbn1cbigqKiAoYWdlbnQsc2l0ZSAtPiBiaW5kaW5nX3N0YXRlOyBtaXNzaW5ncyk7XG4gICAgYWdlbnQsc2l0ZSAtPiBpbnRlcm5hbF9zdGF0ZTsgYWdlbnQgLT4gc29ydDsgZnJlZV9pZFxuICAgIHRoZSBmcmVlIHNpdGVzIGFyZSBuZWl0aGVyIGluIG1pc3NpbmdzIG5vciBpbiBsaW5raW5nX2Rlc3RpbmF0aW9uICopXG5cbmxldCBlbXB0eSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gIHtcbiAgICB0YWJsZXMgPVxuICAgICAgU29tZVxuICAgICAgICB7XG4gICAgICAgICAgY29ubmVjdCA9IE1vZHMuRHluQXJyYXkubWFrZSAxIFt8fF07XG4gICAgICAgICAgc3RhdGUgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSBbfHxdO1xuICAgICAgICAgIHNvcnQgPSBNb2RzLkR5bkFycmF5Lm1ha2UgMSBOb25lO1xuICAgICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnQgPVxuICAgICAgICAgICAgKGlmIHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgdGhlblxuICAgICAgICAgICAgICAgU29tZSAoTW9kcy5EeW5BcnJheS5tYWtlIDEgTm9uZSlcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBOb25lKTtcbiAgICAgICAgICBjYWNoZXMgPSBDYWNoZS5jcmVhdGUgKCksIENhY2hlLmNyZWF0ZSAoKTtcbiAgICAgICAgfTtcbiAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5lbXB0eTtcbiAgICBmcmVlX2lkID0gMCwgW107XG4gIH1cblxubGV0IGNvcHkgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICB7XG4gICAgICB0YWJsZXMgPVxuICAgICAgICBTb21lXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29ubmVjdCA9IE1vZHMuRHluQXJyYXkubWFwIEFycmF5LmNvcHkgdGFibGVzLmNvbm5lY3Q7XG4gICAgICAgICAgICBzdGF0ZSA9IE1vZHMuRHluQXJyYXkubWFwIEFycmF5LmNvcHkgdGFibGVzLnN0YXRlO1xuICAgICAgICAgICAgc29ydCA9IE1vZHMuRHluQXJyYXkuY29weSB0YWJsZXMuc29ydDtcbiAgICAgICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnQgPVxuICAgICAgICAgICAgICAobWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICB8IFNvbWUgY2NzIC0+IFNvbWUgKE1vZHMuRHluQXJyYXkuY29weSBjY3MpKTtcbiAgICAgICAgICAgIGNhY2hlcyA9IENhY2hlLmNyZWF0ZSAoKSwgQ2FjaGUuY3JlYXRlICgpO1xuICAgICAgICAgIH07XG4gICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgIG1pc3NpbmdzID0gZ3JhcGgubWlzc2luZ3M7XG4gICAgfVxuXG50eXBlIHN0YXRzID0geyBuYl9hZ2VudHM6IGludCB9XG5cbmxldCBzdGF0cyBncmFwaCA9XG4gIGxldCB0b3BfaWQsIGZyZWVfaWRzID0gZ3JhcGguZnJlZV9pZCBpblxuICB7IG5iX2FnZW50cyA9IHRvcF9pZCAtIExpc3QubGVuZ3RoIGZyZWVfaWRzIH1cblxubGV0IGFkZF9hZ2VudCA/aWQgc2lncyB0eSBncmFwaCA9XG4gIGxldCBhciA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5IGluXG4gIGxldCBhbCA9IEFycmF5Lm1ha2UgYXIgTm9uZSBpblxuICBsZXQgYWkgPSBBcnJheS5tYWtlIGFyIE5vbmUgaW5cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgaCwgZnJlZV9pZCA9XG4gICAgICBtYXRjaCBpZCB3aXRoXG4gICAgICB8IFNvbWUgaWQgLT5cbiAgICAgICAgKCBpZCxcbiAgICAgICAgICBsZXQgbmV3X2lkLCBsID0gZ3JhcGguZnJlZV9pZCBpblxuICAgICAgICAgIGlmIGlkIDwgbmV3X2lkIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2ggTGlzdC5wYXJ0aXRpb24gKGZ1biBpIC0+IGkgPSBpZCkgbCB3aXRoXG4gICAgICAgICAgICB8IFsgXyBdLCB0IC0+IG5ld19pZCwgdFxuICAgICAgICAgICAgfCBfLCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAoXCJUcnkgdG8gYWRkIGFuIGFnZW50IHdpdGggYSB0aGUgZnJlZSBpZCBcIlxuICAgICAgICAgICAgICAgICAgICAgXiBzdHJpbmdfb2ZfaW50IGlkKSkpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAoIHN1Y2MgaWQsXG4gICAgICAgICAgICAgIFRvb2xzLnJlY3RpIChmdW4gYWNjIGsgLT4gKGsgKyBuZXdfaWQpIDo6IGFjYykgbCAoaWQgLSBuZXdfaWQpICkgKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBncmFwaC5mcmVlX2lkIHdpdGhcbiAgICAgICAgfCBuZXdfaWQsIGggOjogdCAtPiBoLCAobmV3X2lkLCB0KVxuICAgICAgICB8IG5ld19pZCwgW10gLT4gbmV3X2lkLCAoc3VjYyBuZXdfaWQsIFtdKSlcbiAgICBpblxuICAgIGxldCBtaXNzaW5ncycgPVxuICAgICAgVG9vbHMucmVjdGkgKGZ1biBhIHMgLT4gTW9kcy5JbnQyU2V0LmFkZCAoaCwgcykgYSkgZ3JhcGgubWlzc2luZ3MgYXJcbiAgICBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5jb25uZWN0IGggYWwgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc3RhdGUgaCBhaSBpblxuICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IHRhYmxlcy5zb3J0IGggKFNvbWUgdHkpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgaCAoU29tZSBoKVxuICAgIGluXG4gICAgaCwgeyB0YWJsZXMgPSBTb21lIHRhYmxlczsgbWlzc2luZ3MgPSBtaXNzaW5ncyc7IGZyZWVfaWQgfVxuXG5sZXQgYWRkX2ZyZWUgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocykgPC0gTm9uZSBpblxuICAgIHtcbiAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgbWlzc2luZ3MgPSBNb2RzLkludDJTZXQucmVtb3ZlIChhZywgcykgZ3JhcGgubWlzc2luZ3M7XG4gICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICB9XG5cbmxldCBhZGRfaW50ZXJuYWwgYWcgcyBpIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgPC0gU29tZSBpIGluXG4gICAgeyB0YWJsZXMgPSBTb21lIHRhYmxlczsgbWlzc2luZ3MgPSBncmFwaC5taXNzaW5nczsgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQgfVxuXG5sZXQgYWRkX2xpbmsgKGFnLCB0eSkgcyAoYWcnLCB0eScpIHMnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocykgPC0gU29tZSAoKGFnJywgdHknKSwgcycpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnJykuKHMnKSA8LSBTb21lICgoYWcsIHR5KSwgcylcbiAgICBpblxuICAgIGxldCBvdXQgPVxuICAgICAgbWF0Y2ggdGFibGVzLmNvbm5lY3RlZF9jb21wb25lbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MgLT5cbiAgICAgICAgbGV0IGkgPSBPcHRpb25fdXRpbC51bnNvbWUgKC0xKSAoTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnKSBpblxuICAgICAgICBsZXQgaiA9IE9wdGlvbl91dGlsLnVuc29tZSAoLTIpIChNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcnKSBpblxuICAgICAgICBpZiBpID0gaiB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgZ2x1ZV9jb25uZWN0ZWRfY29tcG9uZW50IHRhYmxlcy5jb25uZWN0IChmc3QgdGFibGVzLmNhY2hlcykgY2NzIGFnXG4gICAgICAgICAgICAgIGFnJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgU29tZSAoaiwgaSlcbiAgICAgICAgKVxuICAgIGluXG4gICAgKCB7XG4gICAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgICBtaXNzaW5ncyA9XG4gICAgICAgICAgTW9kcy5JbnQyU2V0LnJlbW92ZSAoYWcsIHMpXG4gICAgICAgICAgICAoTW9kcy5JbnQyU2V0LnJlbW92ZSAoYWcnLCBzJykgZ3JhcGgubWlzc2luZ3MpO1xuICAgICAgICBmcmVlX2lkID0gZ3JhcGguZnJlZV9pZDtcbiAgICAgIH0sXG4gICAgICBvdXQgKVxuXG5sZXQgcmVtb3ZlX2FnZW50IGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuY29ubmVjdCBhZyBbfHxdIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgdGFibGVzLnN0YXRlIGFnIFt8fF0gaW5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCB0YWJsZXMuc29ydCBhZyBOb25lIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LnNldCBjY3MgYWcgTm9uZVxuICAgIGluXG4gICAge1xuICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5maWx0ZXIgKGZ1biAoYWcnLCBfKSAtPiBhZyA8PiBhZycpIGdyYXBoLm1pc3NpbmdzO1xuICAgICAgZnJlZV9pZCA9XG4gICAgICAgIChsZXQgbmV3X2lkLCBpZHMgPSBncmFwaC5mcmVlX2lkIGluXG4gICAgICAgICBuZXdfaWQsIGFnIDo6IGlkcyk7XG4gICAgfVxuXG5sZXQgcmVtb3ZlX2ZyZWUgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gYXNzZXJ0ICgoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA9IE5vbmUpIGluXG4gICAge1xuICAgICAgdGFibGVzID0gU29tZSB0YWJsZXM7XG4gICAgICBtaXNzaW5ncyA9IE1vZHMuSW50MlNldC5hZGQgKGFnLCBzKSBncmFwaC5taXNzaW5ncztcbiAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgIH1cblxubGV0IGdldF9pbnRlcm5hbCBhZyBzIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIChNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcpLihzKSB3aXRoXG4gICAgfCBTb21lIGkgLT4gaVxuICAgIHwgTm9uZSAtPlxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiU2l0ZSBcIiBeIHN0cmluZ19vZl9pbnQgcyBeIFwiIG9mIGFnZW50IFwiIF4gc3RyaW5nX29mX2ludCBhZ1xuICAgICAgIF4gXCIgaGFzIG5vIGludGVybmFsIHN0YXRlIGluIHRoZSBjdXJyZW50IGdyYXBoLlwiKSlcblxubGV0IGdldF9zaXRlcyBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBhcnIgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc3RhdGUgYWcgaW5cbiAgICBBcnJheS5sZW5ndGggYXJyXG5cbmxldCBnZXRfc29ydCBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIChtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBhZyB3aXRoXG4gICAgfCBTb21lIHR5IC0+IHR5XG4gICAgfCBOb25lIC0+XG4gICAgICBmYWlsd2l0aFxuICAgICAgICAoXCJBZ2VudCBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBoYXMgbm8gdHlwZSBpbiB0aGUgY3VycmVudCBncmFwaC5cIikpXG5cbmxldCByZW1vdmVfaW50ZXJuYWwgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGdyYXBoLnRhYmxlcyA8LSBOb25lIGluXG4gICAgbGV0IGkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnN0YXRlIGFnKS4ocykgPC0gTm9uZSBpblxuICAgIChtYXRjaCBpIHdpdGhcbiAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgfCBTb21lIGkgLT5cbiAgICAgICggaSxcbiAgICAgICAge1xuICAgICAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgICAgIG1pc3NpbmdzID0gZ3JhcGgubWlzc2luZ3M7XG4gICAgICAgICAgZnJlZV9pZCA9IGdyYXBoLmZyZWVfaWQ7XG4gICAgICAgIH0gKSlcblxubGV0IHJlbW92ZV9saW5rIGFnIHMgYWcnIHMnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gZ3JhcGgudGFibGVzIDwtIE5vbmUgaW5cbiAgICBsZXQgKCkgPSAoTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcpLihzKSA8LSBOb25lIGluXG4gICAgbGV0ICgpID0gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnJykuKHMnKSA8LSBOb25lIGluXG4gICAgbGV0IG91dCA9XG4gICAgICBtYXRjaCB0YWJsZXMuY29ubmVjdGVkX2NvbXBvbmVudCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGNjcyAtPlxuICAgICAgICBzZXBhcmF0ZV9jb25uZWN0ZWRfY29tcG9uZW50IHRhYmxlcy5jb25uZWN0IHRhYmxlcy5jYWNoZXMgY2NzIGFnIGFnJ1xuICAgIGluXG4gICAgKCB7XG4gICAgICAgIHRhYmxlcyA9IFNvbWUgdGFibGVzO1xuICAgICAgICBtaXNzaW5ncyA9XG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmFkZCAoYWcsIHMpIChNb2RzLkludDJTZXQuYWRkIChhZycsIHMnKSBncmFwaC5taXNzaW5ncyk7XG4gICAgICAgIGZyZWVfaWQgPSBncmFwaC5mcmVlX2lkO1xuICAgICAgfSxcbiAgICAgIG91dCApXG5cbmxldCBpc19hZ2VudCAoYWcsIHR5KSBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIChtYXRjaCBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuc29ydCBhZyB3aXRoXG4gICAgfCBTb21lIHR5JyAtPlxuICAgICAgbGV0ICgpID0gYXNzZXJ0ICh0eSA9IHR5JykgaW5cbiAgICAgIHRydWVcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG5cbmxldCBpc19hZ2VudF9pZCBhZyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIDw+IE5vbmVcblxubGV0IGlzX2ZyZWUgYWcgcyBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCAoKSA9IGFzc2VydCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGdyYXBoLm1pc3NpbmdzKSBpblxuICAgIGxldCB0ID0gTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLmNvbm5lY3QgYWcgaW5cbiAgICB0IDw+IFt8fF0gJiYgdC4ocykgPSBOb25lXG5cbmxldCBpc19pbnRlcm5hbCBpIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZyBpblxuICAgIHQgPD4gW3x8XVxuICAgICYmXG4gICAgKG1hdGNoIHQuKHMpIHdpdGhcbiAgICB8IFNvbWUgaiAtPiBqID0gaVxuICAgIHwgTm9uZSAtPiBmYWxzZSlcblxubGV0IGxpbmtfZXhpc3RzIGFnIHMgYWcnIHMnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludDJTZXQuaXNfZW1wdHkgZ3JhcGgubWlzc2luZ3MpIGluXG4gICAgbGV0IHQgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIHQgPD4gW3x8XVxuICAgICYmXG4gICAgKG1hdGNoIHQuKHMpIHdpdGhcbiAgICB8IFNvbWUgKChhZycnLCBfKSwgcycnKSAtPiBhZycgPSBhZycnICYmIHMnID0gcycnXG4gICAgfCBOb25lIC0+IGZhbHNlKVxuXG5sZXQgZXhpc3RzX2ZyZXNoIGFnIHMgdHkgcycgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgKCkgPSBhc3NlcnQgKE1vZHMuSW50MlNldC5pc19lbXB0eSBncmFwaC5taXNzaW5ncykgaW5cbiAgICBsZXQgdCA9IE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnIGluXG4gICAgaWYgdCA9IFt8fF0gdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggdC4ocykgd2l0aFxuICAgICAgfCBTb21lICgoYWcnLCB0eScpLCBzJycpIC0+XG4gICAgICAgIGlmIHR5JyA9IHR5ICYmIHMnID0gcycnIHRoZW5cbiAgICAgICAgICBTb21lIGFnJ1xuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICApXG5cbmxldCBsaW5rX2Rlc3RpbmF0aW9uIGFnIHMgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT4gKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5jb25uZWN0IGFnKS4ocylcblxubGV0IGl0ZXJfbmVpZ2hib3JzIGYgYWcgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgYWdfdGFibGUgPSBNb2RzLkR5bkFycmF5LmdldCB0YWJsZXMuY29ubmVjdCBhZyBpblxuICAgIEFycmF5Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgfCBTb21lIHMgLT4gZiAoZnN0IHMpKVxuICAgICAgYWdfdGFibGVcblxubGV0IGFsbF9hZ2VudHNfd2hlcmUgZiBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIHRhYmxlcyAtPlxuICAgIGxldCBvdXQgPSBJbnRDb2xsZWN0aW9uLmNyZWF0ZSAwIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpZCAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgU29tZSB0eSB3aGVuIGYgKGlkLCB0eSkgLT4gSW50Q29sbGVjdGlvbi5hZGQgaWQgb3V0XG4gICAgICAgICAgfCBfIC0+ICgpKVxuICAgICAgICB0YWJsZXMuc29ydFxuICAgIGluXG4gICAgb3V0XG5cbmxldCBpbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgYWcgYWcnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICBcImluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudCB3aGlsZSBub3QgdHJhY2tpbmcgY2NzXCIpKVxuICAgIHwgU29tZSBjY3MgLT4gTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnID0gTW9kcy5EeW5BcnJheS5nZXQgY2NzIGFnJylcblxubGV0IGdldF9jb25uZWN0ZWRfY29tcG9uZW50IGFnIGdyYXBoID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgKG1hdGNoIHRhYmxlcy5jb25uZWN0ZWRfY29tcG9uZW50IHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICBcImdldF9jb25uZWN0ZWRfY29tcG9uZW50IHdoaWxlIG5vdCB0cmFja2luZyBjY3NcIikpXG4gICAgfCBTb21lIGNjcyAtPiBNb2RzLkR5bkFycmF5LmdldCBjY3MgYWcpXG5cbigqKiBUaGUgc25hcHNob3QgbWFjaGluZXJ5ICopXG5sZXQgb25lX2Nvbm5lY3RlZF9jb21wb25lbnQgKHNpZ3MgOiBTaWduYXR1cmUucykgKHR5IDogaW50KSAobm9kZSA6IGludClcbiAgICAoZ3JhcGggOiB0YWJsZXMpIDogU25hcHNob3QuY2Nfbm9kZSBhcnJheSA9XG4gIGxldCByZWMgYnVpbGQgKGlkIDogaW50KVxuICAgICAgKGFjYyA6IChpbnQgKiBpbnQgKiAoRWRnZS50IG9wdGlvbiAqIGludCBvcHRpb24pIGxpc3QpIGxpc3QpXG4gICAgICAoa25vd24gOiBpbnQgTW9kcy5JbnRNYXAudCkgOiAoaW50ICogaW50KSBsaXN0IC0+IFNuYXBzaG90LmNjX25vZGUgYXJyYXkgPVxuICAgIGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgVG9vbHMuYXJyYXlfcmV2X21hcF9vZl9saXN0XG4gICAgICAgIChmdW4gKG5vZGVfaWRfaW5fd2l0bmVzcywgbm9kZV90eXBlLCBzaXRlcykgLT5cbiAgICAgICAgICB7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX2lkX2luX3dpdG5lc3M7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX3R5cGU7XG4gICAgICAgICAgICBTbmFwc2hvdC5ub2RlX3NpdGVzID1cbiAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAoZnVuIChsaW5rLCBzaXRlX3N0YXRlKSAtPlxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBTbmFwc2hvdC5zaXRlX2xpbmsgPVxuICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoKG4sIF8pLCBzKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgKC0xKSBuIGtub3duLCBzKVxuICAgICAgICAgICAgICAgICAgICAgICAgbGluaztcbiAgICAgICAgICAgICAgICAgICAgU25hcHNob3Quc2l0ZV9zdGF0ZTtcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgc2l0ZXM7XG4gICAgICAgICAgfSlcbiAgICAgICAgYWNjXG4gICAgfCAobm9kZSwgdHkpIDo6IHRvZG9zIC0+XG4gICAgICBpZiBDYWNoZS50ZXN0IChmc3QgZ3JhcGguY2FjaGVzKSBub2RlIHRoZW5cbiAgICAgICAgYnVpbGQgaWQgYWNjIGtub3duIHRvZG9zXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgZ3JhcGguc29ydCBub2RlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwiRWRnZXMub25lX2Nvbm5lY3RlZF9jb21wb25lbnRcIlxuICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgKGZzdCBncmFwaC5jYWNoZXMpIG5vZGUgaW5cbiAgICAgICAgICBsZXQga25vd24nID0gTW9kcy5JbnRNYXAuYWRkIG5vZGUgaWQga25vd24gaW5cbiAgICAgICAgICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eSBpblxuICAgICAgICAgIGxldCB0b2RvcycsIHBvcnRzID1cbiAgICAgICAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgIChmdW4gKHRvZG9zLCBhY2MpIGkgLT5cbiAgICAgICAgICAgICAgICBsZXQgbGluayA9IChNb2RzLkR5bkFycmF5LmdldCBncmFwaC5jb25uZWN0IG5vZGUpLihpKSBpblxuICAgICAgICAgICAgICAgICggKG1hdGNoIGxpbmsgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHRvZG9zXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKCgobicsIF8pIGFzIHApLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBpZiBNb2RzLkludE1hcC5tZW0gbicga25vd24nIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICB0b2Rvc1xuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgcCA6OiB0b2RvcyksXG4gICAgICAgICAgICAgICAgICAobGluaywgKE1vZHMuRHluQXJyYXkuZ2V0IGdyYXBoLnN0YXRlIG5vZGUpLihpKSkgOjogYWNjICkpXG4gICAgICAgICAgICAgICh0b2RvcywgW10pIGFyaXR5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBidWlsZCAoc3VjYyBpZCkgKChub2RlLCB0eSwgcG9ydHMpIDo6IGFjYykga25vd24nIHRvZG9zJ1xuICAgICAgKVxuICBpblxuICBidWlsZCAwIFtdIE1vZHMuSW50TWFwLmVtcHR5IFsgbm9kZSwgdHkgXVxuXG5sZXQgc3BlY2llcyB+ZGVidWdfbW9kZSBzaWdzIHJvb3QgZ3JhcGggPVxuICBtYXRjaCBncmFwaC50YWJsZXMgd2l0aFxuICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgc3BlY2llID1cbiAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IHJvb3Qgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAoXCJTb3J0IG9mIG5vZGUgdW5hdmFpbGFibGUgXCIgXiBzdHJpbmdfb2ZfaW50IHJvb3QpKSlcbiAgICAgIHwgU29tZSB0eSAtPlxuICAgICAgICBTbmFwc2hvdC5jY190b191c2VyX2NjIH5kZWJ1Z19tb2RlIH5yYXc6dHJ1ZSBzaWdzXG4gICAgICAgICAgKG9uZV9jb25uZWN0ZWRfY29tcG9uZW50IHNpZ3MgdHkgcm9vdCB0YWJsZXMpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBDYWNoZS5yZXNldCAoZnN0IHRhYmxlcy5jYWNoZXMpIGluXG4gICAgc3BlY2llXG5cbmxldCByZWMgYXV4X2J1aWxkX3NuYXBzaG90IChyYXcgOiBib29sKSAoc2lncyA6IFNpZ25hdHVyZS5zKSAodGFibGVzIDogdGFibGVzKVxuICAgIChjY3MgOiBTbmFwc2hvdC50KSAobm9kZSA6IGludCkgOiBTbmFwc2hvdC50ID1cbiAgaWYgbm9kZSA9IE1vZHMuRHluQXJyYXkubGVuZ3RoIHRhYmxlcy5zb3J0IHRoZW4gKFxuICAgICgqIFdlIHdlbnQgdGhyb3VnaCBhbGwgbm9kZXMsIHdlIHJldHVybiB0aGUgZnVsbCBzbmFwc2hvdCAqKVxuICAgIGxldCAoKSA9IENhY2hlLnJlc2V0IChmc3QgdGFibGVzLmNhY2hlcykgaW5cbiAgICBjY3NcbiAgKSBlbHNlIGlmIENhY2hlLnRlc3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBub2RlIHRoZW5cbiAgICAoKiBBbHJlYWR5IGluIGNhY2hlLCB3ZSBjb250aW51ZSB0byB0aGUgbmV4dCBub2RlICopXG4gICAgYXV4X2J1aWxkX3NuYXBzaG90IHJhdyBzaWdzIHRhYmxlcyBjY3MgKHN1Y2Mgbm9kZSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgdGFibGVzLnNvcnQgbm9kZSB3aXRoXG4gICAgfCBOb25lIC0+IGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXMgY2NzIChzdWNjIG5vZGUpXG4gICAgfCBTb21lICh0eSA6IGludCkgLT5cbiAgICAgIGxldCBvdXQgPSBvbmVfY29ubmVjdGVkX2NvbXBvbmVudCBzaWdzIHR5IG5vZGUgdGFibGVzIGluXG4gICAgICBhdXhfYnVpbGRfc25hcHNob3QgcmF3IHNpZ3MgdGFibGVzXG4gICAgICAgIChTbmFwc2hvdC5pbmNyZW1lbnRfaW5fc25hcHNob3QgfnJhdyBzaWdzIG91dCBjY3MpXG4gICAgICAgIChzdWNjIG5vZGUpXG4gIClcblxubGV0IGJ1aWxkX3NuYXBzaG90IH4ocmF3IDogYm9vbCkgKHNpZ3MgOiBTaWduYXR1cmUucykgKGdyYXBoIDogdCkgOiBTbmFwc2hvdC50ID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+IGF1eF9idWlsZF9zbmFwc2hvdCByYXcgc2lncyB0YWJsZXMgU25hcHNob3QuZW1wdHkgMFxuXG5sZXQgYnVpbGRfdXNlcl9zbmFwc2hvdCB+KGRlYnVnX21vZGUgOiBib29sKSB+KHJhdyA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKGdyYXBoIDogdCkgOiAoaW50ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0ID1cbiAgU25hcHNob3QuZXhwb3J0IH5kZWJ1Z19tb2RlIH5yYXcgc2lncyAoYnVpbGRfc25hcHNob3QgfnJhdyBzaWdzIGdyYXBoKVxuXG5sZXQgZGVidWdfcHJpbnQgZiBncmFwaCA9XG4gIG1hdGNoIGdyYXBoLnRhYmxlcyB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiT1VUREFURURAIFwiXG4gIHwgU29tZSB0YWJsZXMgLT5cbiAgICBsZXQgcHJpbnRfc2l0ZXMgYWcgPVxuICAgICAgUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBzIGYgbCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaSV0JXRcIiBzXG4gICAgICAgICAgICAobWF0Y2ggKE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zdGF0ZSBhZykuKHMpIHdpdGhcbiAgICAgICAgICAgIHwgU29tZSBpbnQgLT4gZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIn4laVwiIGludFxuICAgICAgICAgICAgfCBOb25lIC0+IGZ1biBfIC0+ICgpKVxuICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICBpZiBNb2RzLkludDJTZXQubWVtIChhZywgcykgZ3JhcGgubWlzc2luZ3MgdGhlblxuICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiP1wiXG4gICAgICAgICAgICAgIHwgU29tZSAoKGFnJywgdHknKSwgcycpIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi0+JWk6JWkuJWlcIiBhZycgdHknIHMnKSlcbiAgICBpblxuICAgIE1vZHMuRHluQXJyYXkucHJpbnQgUHAuZW1wdHlcbiAgICAgIChmdW4gYWcgZiBhIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuRHluQXJyYXkuZ2V0IHRhYmxlcy5zb3J0IGFnIHdpdGhcbiAgICAgICAgfCBTb21lIHR5IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaTolaShAWyVhQF0pQCBcIiBhZyB0eSAocHJpbnRfc2l0ZXMgYWcpIGFcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgaWYgYSA9IFt8fF0gdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWk6Tk9UWVBFKEBbJWFAXSlAIFwiIGFnIChwcmludF9zaXRlcyBhZykgYSlcbiAgICAgIGYgdGFibGVzLmNvbm5lY3RcblxudHlwZSBwYXRoID0gKChBZ2VudC50ICogaW50KSAqIChBZ2VudC50ICogaW50KSkgbGlzdFxuKCoqICgoYWdlbnRfaWQsIGFnZW50X25hbWUpLHNpdGVfbmFtZSkgKilcblxubGV0IHJlYyBwcmludF9wYXRoID9zaWdzIGYgPSBmdW5jdGlvblxuICB8IFtdIC0+IFBwLmVtcHR5X3NldCBmXG4gIHwgWyAoKGFnLCBzKSwgKGFnJywgcycpKSBdIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhQCwtJWEuJWFcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICBzXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZycpXG4gICAgICBzJ1xuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZydcbiAgfCAoKGFnLCBzKSwgKCgocCcsIF8pIGFzIGFnJyksIHMnKSkgOjogKCgoKHAnJywgXyksIF8pLCBfKSA6OiBfIGFzIGwpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhQCwtJWEuJXQlYVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBhZylcbiAgICAgIHNcbiAgICAgIChBZ2VudC5wcmludF9zaXRlID9zaWdzIGFnJylcbiAgICAgIHMnXG4gICAgICAoZnVuIGYgLT5cbiAgICAgICAgaWYgcCcgPD4gcCcnIHRoZW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEjI1wiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZycpXG4gICAgICAocHJpbnRfcGF0aCA/c2lncykgbFxuXG5sZXQgZW1wdHlfcGF0aCA9IFtdXG5sZXQgc2luZ2xldG9uX3BhdGggbiBzIG4nIHMnID0gWyAobiwgcyksIChuJywgcycpIF1cbmxldCByZXZfcGF0aCBsID0gTGlzdC5yZXZfbWFwIChmdW4gKHgsIHkpIC0+IHksIHgpIGxcblxubGV0IGlzX3ZhbGlkX3BhdGggcCBncmFwaCA9XG4gIExpc3QuZm9yX2FsbFxuICAgIChmdW4gKCgoYWcsIF8pLCBzKSwgKChhZycsIF8pLCBzJykpIC0+IGxpbmtfZXhpc3RzIGFnIHMgYWcnIHMnIGdyYXBoKVxuICAgIHBcblxubGV0IGJyZWFkdGhfZmlyc3RfdHJhdmVyc2FsIH5sb29waW5nID9tYXhfZGlzdGFuY2Ugc3RvcF9vbl9maW5kIGlzX2ludGVyZXN0aW5nXG4gICAgbGlua3MgY2FjaGUgb3V0IHRvZG9zID1cbiAgbGV0IHJlYyBsb29rX2VhY2hfc2l0ZSAoKCgoaWQsIF8pIGFzIGFnKSwgcGF0aCkgYXMgeCkgc2l0ZVxuICAgICAgKChvdXQsIG5leHQpIGFzIGFjYykgPVxuICAgIGlmIHNpdGUgPSAwIHRoZW5cbiAgICAgIFNvbWUgKGZhbHNlLCBvdXQsIG5leHQpXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCAoTW9kcy5EeW5BcnJheS5nZXQgbGlua3MgaWQpLihwcmVkIHNpdGUpIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBsb29rX2VhY2hfc2l0ZSB4IChwcmVkIHNpdGUpIGFjY1xuICAgICAgfCBTb21lICgoKChpZCcsIF8pIGFzIGFnJyksIHNpdGUnKSBhcyB5KSAtPlxuICAgICAgICBpZiBhZycgPSBmc3QgbG9vcGluZyAmJiBzaXRlJyA8PiBzbmQgbG9vcGluZyB0aGVuXG4gICAgICAgICAgTm9uZVxuICAgICAgICBlbHNlIGlmIENhY2hlLnRlc3QgY2FjaGUgaWQnIHRoZW5cbiAgICAgICAgICBsb29rX2VhY2hfc2l0ZSB4IChwcmVkIHNpdGUpIGFjY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBDYWNoZS5tYXJrIGNhY2hlIGlkJyBpblxuICAgICAgICAgIGxldCBwYXRoJyA9ICh5LCAoYWcsIHByZWQgc2l0ZSkpIDo6IHBhdGggaW5cbiAgICAgICAgICBsZXQgbmV4dCcgPSAoYWcnLCBwYXRoJykgOjogbmV4dCBpblxuICAgICAgICAgIGxldCBvdXQnLCBzdG9yZSA9XG4gICAgICAgICAgICBtYXRjaCBpc19pbnRlcmVzdGluZyBhZycgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4gKCh4LCBpZCcpLCBwYXRoJykgOjogb3V0LCB0cnVlXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0LCBmYWxzZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgc3RvcmUgJiYgc3RvcF9vbl9maW5kIHRoZW5cbiAgICAgICAgICAgIFNvbWUgKHRydWUsIG91dCcsIG5leHQnKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxvb2tfZWFjaF9zaXRlIHggKHByZWQgc2l0ZSkgKG91dCcsIG5leHQnKVxuICAgICAgICApXG4gICAgKVxuICBpblxuICAoKiBkZXB0aCA9IG51bWJlciBvZiBlZGdlcyBiZXR3ZWVuIHJvb3QgYW5kIG5vZGUgKilcbiAgbGV0IHJlYyBhdXggZGVwdGggb3V0IG5leHQgPSBmdW5jdGlvblxuICAgIHwgKCgoaWQsIF8pLCBfKSBhcyB4KSA6OiB0b2RvcyAtPlxuICAgICAgKG1hdGNoXG4gICAgICAgICBsb29rX2VhY2hfc2l0ZSB4IChBcnJheS5sZW5ndGggKE1vZHMuRHluQXJyYXkuZ2V0IGxpbmtzIGlkKSkgKG91dCwgbmV4dClcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUgLT4gW11cbiAgICAgIHwgU29tZSAoc3RvcCwgb3V0JywgbmV4dCcpIC0+XG4gICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgIG91dCdcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGF1eCBkZXB0aCBvdXQnIG5leHQnIHRvZG9zKVxuICAgIHwgW10gLT5cbiAgICAgIChtYXRjaCBuZXh0IHdpdGhcbiAgICAgIHwgW10gLT4gb3V0XG4gICAgICAoKiBlbmQgd2hlbiBhbGwgZ3JhcGggdHJhdmVyc2VkIGFuZCByZXR1cm4gdGhlIGxpc3Qgb2YgcGF0aHMgKilcbiAgICAgIHwgXyAtPlxuICAgICAgICAobWF0Y2ggbWF4X2Rpc3RhbmNlIHdpdGhcbiAgICAgICAgfCBTb21lIGQgd2hlbiBkIDw9IGRlcHRoIC0+IG91dFxuICAgICAgICAoKiBzdG9wIHdoZW4gdGhlIG1heCBkaXN0YW5jZSBpcyByZWFjaGVkICopXG4gICAgICAgIHwgU29tZSBfIC0+IGF1eCAoZGVwdGggKyAxKSBvdXQgW10gbmV4dFxuICAgICAgICB8IE5vbmUgLT4gYXV4IGRlcHRoIG91dCBbXSBuZXh0KSlcbiAgaW5cbiAgYXV4IDEgb3V0IFtdIHRvZG9zXG5cbigqIG5vZGVzX3g6IGFnZW50X2lkIGxpc3QgPSAoaW50ICogaW50KSBsaXN0XG4gICBub2Rlc195OiBhZGVudF9pZCBsaXN0ID0gaW50IGxpc3QgKilcbmxldCBhcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZ3JhcGggbm9kZXNfeCBub2Rlc195ID1cbiAgbWF0Y2ggZ3JhcGgudGFibGVzIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgdGFibGVzIC0+XG4gICAgaWZcbiAgICAgIGluX3NhbWVfY29ubmVjdGVkX2NvbXBvbmVudFxuICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzX3gpKVxuICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzX3kpKVxuICAgICAgICBncmFwaFxuICAgIHRoZW4gKFxuICAgICAgKCogbG9vayBmb3IgdGhlIGNsb3Nlc3Qgbm9kZSBpbiBub2Rlc195ICopXG4gICAgICBsZXQgaXNfaW5fbm9kZXNfeSB6ID1cbiAgICAgICAgaWYgTGlzdC5tZW0geiBub2Rlc195IHRoZW5cbiAgICAgICAgICBTb21lICgpXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBpblxuICAgICAgKCogYnJlYWR0aCBmaXJzdCBzZWFyY2ggaXMgY2FsbGVkIG9uIGEgbGlzdCBvZiBzaXRlcztcbiAgICAgICAgIHN0YXJ0IHRoZSBicmVhZHRoIGZpcnN0IHNlYXJjaCB3aXRoIHRoZSBib3VuZGFyaWVzIG9mIG5vZGVzX3gsXG4gICAgICAgICB0aGF0IGlzIGFsbCBzaXRlcyB0aGF0IGFyZSBjb25uZWN0ZWQgdG8gb3RoZXIgbm9kZXMgaW4geFxuICAgICAgICAgYW5kIHdpdGggYWxsIG5vZGVzIGluIG5vZGVzX3ggbWFya2VkIGFzIGRvbmUgKilcbiAgICAgIGxldCBwcmVwYXJlID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyAoKGlkLCBfKSBhcyBhZykgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IENhY2hlLm1hcmsgKGZzdCB0YWJsZXMuY2FjaGVzKSBpZCBpblxuICAgICAgICAgICAgKGFnLCBbXSkgOjogYWNjKVxuICAgICAgICAgIFtdIG5vZGVzX3hcbiAgICAgIGluXG4gICAgICBtYXRjaFxuICAgICAgICBicmVhZHRoX2ZpcnN0X3RyYXZlcnNhbFxuICAgICAgICAgIH5sb29waW5nOigoLTEsIC0xKSwgLTEpXG4gICAgICAgICAgP21heF9kaXN0YW5jZSB0cnVlIGlzX2luX25vZGVzX3kgdGFibGVzLmNvbm5lY3QgKGZzdCB0YWJsZXMuY2FjaGVzKSBbXVxuICAgICAgICAgIHByZXBhcmVcbiAgICAgIHdpdGhcbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgICAgICBOb25lXG4gICAgICB8IFsgKF8sIHApIF0gLT5cbiAgICAgICAgbGV0ICgpID0gQ2FjaGUucmVzZXQgKGZzdCB0YWJsZXMuY2FjaGVzKSBpblxuICAgICAgICBTb21lIHBcbiAgICAgIHwgXyA6OiBfIC0+IGZhaWx3aXRoIFwiRWRnZXMuYXJlX3RoZXlfY29ubmVjdGVkIGNvbXBsZXRlbHkgYnJva2VuXCJcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWJzdHJhY3QgPSBFeGlzdGluZyBvZiBpbnQgfCBGcmVzaCBvZiBBZ2VudC50XG50eXBlICdhIHBvcnQgPSAnYSAqIGludFxudHlwZSAnYSBhcnJvdyA9IFRvTm9kZSBvZiAnYSBwb3J0IHwgVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBvZiBpbnRcbnR5cGUgJ2Egc3RlcCA9ICdhIHBvcnQgKiAnYSBhcnJvd1xudHlwZSAnYSB0ID0gJ2Egc3RlcCBsaXN0XG5cbmxldCBwcmludF9pZCBzaWdzIGYgPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGlkIC0+IEZvcm1hdC5wcF9wcmludF9pbnQgZiBpZFxuICB8IEZyZXNoIChpZCwgdHkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYS0laVwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgdHkgaWRcblxubGV0IHByaW50X2lkX3NpdGUgP3NvdXJjZSBzaWdzIGZpbmRfdHkgbiA9XG4gIGxldCB0eSA9XG4gICAgbWF0Y2ggbiB3aXRoXG4gICAgfCBGcmVzaCAoXywgdHkpIC0+IHR5XG4gICAgfCBFeGlzdGluZyBpZCAtPlxuICAgICAgKG1hdGNoIHNvdXJjZSB3aXRoXG4gICAgICB8IFNvbWUgKEZyZXNoIChpZCcsIHR5KSkgd2hlbiBpZCA9IGlkJyAtPiB0eVxuICAgICAgfCBOb25lIHwgU29tZSAoRnJlc2ggXyB8IEV4aXN0aW5nIF8pIC0+IGZpbmRfdHkgaWQpXG4gIGluXG4gIFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgdHlcblxubGV0IHByaW50X2lkX2ludGVybmFsX3N0YXRlIHNpZ3MgZmluZF90eSBuID1cbiAgU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lnc1xuICAgIChtYXRjaCBuIHdpdGhcbiAgICB8IEV4aXN0aW5nIGlkIC0+IGZpbmRfdHkgaWRcbiAgICB8IEZyZXNoIChfLCB0eSkgLT4gdHkpXG5cbmxldCBpZF91cF90b19hbHBoYV90b195b2pzb24gPSBmdW5jdGlvblxuICB8IEV4aXN0aW5nIGkgLT4gYEludCBpXG4gIHwgRnJlc2ggZiAtPiBBZ2VudC50b19qc29uIGZcblxubGV0IGlkX3VwX3RvX2FscGhhX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBpIC0+IEV4aXN0aW5nIGlcbiAgfCB4IC0+IEZyZXNoIChBZ2VudC5vZl9qc29uIHgpXG5cbmxldCBwb3J0X3RvX3lvanNvbiAoYSwgcykgPSBgTGlzdCBbIGlkX3VwX3RvX2FscGhhX3RvX3lvanNvbiBhOyBgSW50IHMgXVxuXG5sZXQgcG9ydF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYTsgYEludCBzIF0gLT4gaWRfdXBfdG9fYWxwaGFfb2ZfeW9qc29uIGEsIHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBuYXZpZ2F0aW9uIHBvcnRcIiwgeCkpXG5cbmxldCBhcnJvd190b195b2pzb24gPSBmdW5jdGlvblxuICB8IFRvTm9kZSBwIC0+IHBvcnRfdG9feW9qc29uIHBcbiAgfCBUb05vdGhpbmcgLT4gYE51bGxcbiAgfCBUb0ludGVybmFsIGkgLT4gYEludCBpXG5cbmxldCBhcnJvd19vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IFRvTm90aGluZ1xuICB8IGBJbnQgaSAtPiBUb0ludGVybmFsIGlcbiAgfCB4IC0+IFRvTm9kZSAocG9ydF9vZl95b2pzb24geClcblxubGV0IHN0ZXBfdG9feW9qc29uIChwLCBhKSA9IGBMaXN0IFsgcG9ydF90b195b2pzb24gcDsgYXJyb3dfdG9feW9qc29uIGEgXVxuXG5sZXQgc3RlcF9vZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgcDsgYSBdIC0+IHBvcnRfb2ZfeW9qc29uIHAsIGFycm93X29mX3lvanNvbiBhXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgbmF2aWdhdGlvbiBzdGVwXCIsIHgpKVxuXG5sZXQgdG9feW9qc29uIGwgPSBgTGlzdCAoTGlzdC5tYXAgc3RlcF90b195b2pzb24gbClcblxubGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCBzdGVwX29mX3lvanNvbiBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgbmF2aWdhdGlvblwiLCB4KSlcblxubGV0IGV4dGVuZCBmID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBfIC0+IGZcbiAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgIGZ1biB4IC0+XG4gICAgICBpZiB4ID0gaWQgdGhlblxuICAgICAgICB0eVxuICAgICAgZWxzZVxuICAgICAgICBmIHhcblxubGV0IHJlYyBwcmludCBzaWdzIGZpbmRfdHkgZiA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvTm90aGluZykgOjogdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItJWEoJWFbLl0pLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9zaXRlIHNpZ3MgZmluZF90eSBzb3VyY2UpXG4gICAgICBzaXRlXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIGZpbmRfdHkgc291cmNlKSlcbiAgICAgIHRcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvTm9kZSAoaWQsIHBvcnQpKSA6OiB0IC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi0lYSglYVslYS4lYV0pLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9zaXRlIHNpZ3MgZmluZF90eSBzb3VyY2UpXG4gICAgICBzaXRlXG4gICAgICAocHJpbnRfaWRfc2l0ZSB+c291cmNlIHNpZ3MgZmluZF90eSBpZClcbiAgICAgIHBvcnQgKHByaW50X2lkIHNpZ3MpIGlkXG4gICAgICAocHJpbnQgc2lncyAoZXh0ZW5kIChleHRlbmQgZmluZF90eSBpZCkgc291cmNlKSlcbiAgICAgIHRcbiAgfCAoKHNvdXJjZSwgc2l0ZSksIFRvSW50ZXJuYWwgaSkgOjogdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCItJWEoJWEpLT4lYVwiIChwcmludF9pZCBzaWdzKSBzb3VyY2VcbiAgICAgIChwcmludF9pZF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGZpbmRfdHkgc291cmNlIHNpdGUpXG4gICAgICAoU29tZSBpKVxuICAgICAgKHByaW50IHNpZ3MgKGV4dGVuZCBmaW5kX3R5IHNvdXJjZSkpXG4gICAgICB0XG5cbmxldCBjb21wYXRpYmxlX2ZyZXNoX3BvaW50IH5kZWJ1Z19tb2RlIGUgKHNpZCwgc3R5KSBzc2l0ZSBhcnJvdyA9XG4gIG1hdGNoIGUsIGFycm93IHdpdGhcbiAgfCBfLCBUb05vZGUgKEV4aXN0aW5nIF8sIF8pIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgIFwiTmF2aWdhdGlvbi5jb21wYXRpYmxlX2ZyZXNoX3BvaW50IGRvZXMgbm90IGRlYWwgd2l0aCBleGlzdGluZyBcXFxuICAgICAgICAgICAgIGFycm93XCIpKVxuICB8ICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCB4KSwgVG9Ob3RoaW5nIC0+XG4gICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHggPSBUb05vdGhpbmcgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBTb21lIGlualxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgKSBlbHNlXG4gICAgICBOb25lXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIHgpLCBUb0ludGVybmFsIGkgLT5cbiAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgeCA9IFRvSW50ZXJuYWwgaSB0aGVuIChcbiAgICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgc2lkIGluaiB0aGVuXG4gICAgICAgIFNvbWUgaW5qXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICgoRnJlc2ggKGlkLCB0eSksIHNpdGUpLCBUb05vZGUgKEZyZXNoIChpZCcsIHR5JyksIHNpdGUnKSksXG4gICAgICBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSApIC0+XG4gICAgKCogbGluayBiZXR3ZWVuIDIgYWdlbnRzICopXG4gICAgaWYgdHkgPSBzdHkgJiYgc2l0ZSA9IHNzaXRlICYmIHR5JyA9IHN0eScgJiYgc2l0ZScgPSBzc2l0ZScgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogdGhlblxuICAgICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmogdGhlblxuICAgICAgICAgIFNvbWUgaW5qXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2UgaWYgdHkgPSBzdHknICYmIHNpdGUgPSBzc2l0ZScgJiYgdHknID0gc3R5ICYmIHNpdGUnID0gc3NpdGUgdGhlbiAoXG4gICAgICBsZXQgaW5qID0gUmVuYW1pbmcuZW1wdHkgKCkgaW5cbiAgICAgIGlmIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCcgaW5qIHRoZW5cbiAgICAgICAgaWYgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCBpbmogdGhlblxuICAgICAgICAgIFNvbWUgaW5qXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoICggKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCB0eSksIHNpdGUnKVxuICAgICAgfCAoRnJlc2ggKGlkJywgdHkpLCBzaXRlKSwgVG9Ob2RlIChFeGlzdGluZyBpZCwgc2l0ZScpICksXG4gICAgICBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSApIC0+XG4gICAgKCogc2VsZi1saW5rIGluIGFnZW50ICopXG4gICAgaWZcbiAgICAgICgoc3NpdGUgPSBzaXRlICYmIHNzaXRlJyA9IHNpdGUnKSB8fCAoc3NpdGUnID0gc2l0ZSAmJiBzc2l0ZSA9IHNpdGUnKSlcbiAgICAgICYmIGlkID0gaWQnICYmIHNpZCA9IHNpZCcgJiYgdHkgPSBzdHkgJiYgc3R5ID0gc3R5J1xuICAgIHRoZW4gKFxuICAgICAgbGV0IGluaiA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gICAgICBpZiBSZW5hbWluZy5pbXBlcmF0aXZlX2FkZCB+ZGVidWdfbW9kZSBpZCBzaWQgaW5qIHRoZW5cbiAgICAgICAgU29tZSBpbmpcbiAgICAgIGVsc2VcbiAgICAgICAgTm9uZVxuICAgICkgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRXhpc3RpbmcgXywgXyksIF8pLCBfIC0+IE5vbmVcbiAgfCAoKEZyZXNoIF8sIF8pLCAoVG9Ob3RoaW5nIHwgVG9JbnRlcm5hbCBfKSksIFRvTm9kZSBfIC0+IE5vbmVcblxubGV0IGNvbXBhdGlibGVfcG9pbnQgfmRlYnVnX21vZGUgaW5qIGUgZScgPVxuICBtYXRjaCBlLCBlJyB3aXRoXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm90aGluZyksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGlualxuICAgICAgJiYgZSA9ICgoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpLCBUb05vdGhpbmcpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvSW50ZXJuYWwgaSksIGUgLT5cbiAgICBpZlxuICAgICAgUmVuYW1pbmcubWVtIGlkIGlualxuICAgICAgJiYgZSA9ICgoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCksIHNpdGUpLCBUb0ludGVybmFsIGkpXG4gICAgdGhlblxuICAgICAgU29tZSBpbmpcbiAgICBlbHNlXG4gICAgICBOb25lXG4gIHwgKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykpLCBlIC0+XG4gICAgaWZcbiAgICAgIFJlbmFtaW5nLm1lbSBpZCBpbmogJiYgUmVuYW1pbmcubWVtIGlkJyBpbmpcbiAgICAgICYmIChlXG4gICAgICAgICAgPSAoIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkKSwgc2l0ZSksXG4gICAgICAgICAgICAgIFRvTm9kZSAoRXhpc3RpbmcgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCcpLCBzaXRlJykgKVxuICAgICAgICAgfHwgZVxuICAgICAgICAgICAgPSAoIChFeGlzdGluZyAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qIGlkJyksIHNpdGUnKSxcbiAgICAgICAgICAgICAgICBUb05vZGUgKEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQpLCBzaXRlKSApKVxuICAgIHRoZW5cbiAgICAgIFNvbWUgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykpLFxuICAgICAgKChFeGlzdGluZyBzaWQsIHNzaXRlKSwgVG9Ob2RlIChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUnKSkgKVxuICB8ICggKChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykpLFxuICAgICAgKChFeGlzdGluZyBzaWQsIHNzaXRlKSwgVG9Ob2RlIChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUnKSkgKVxuICB8ICggKChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUpLCBUb05vZGUgKEV4aXN0aW5nIHNpZCwgc3NpdGUnKSkgKVxuICB8ICggKChGcmVzaCAoaWQnLCB0eSksIHNpdGUpLCBUb05vZGUgKEV4aXN0aW5nIGlkLCBzaXRlJykpLFxuICAgICAgKChGcmVzaCAoc2lkJywgdHknKSwgc3NpdGUpLCBUb05vZGUgKEV4aXN0aW5nIHNpZCwgc3NpdGUnKSkgKSAtPlxuICAgIGlmXG4gICAgICB0eScgPSB0eVxuICAgICAgJiYgKG5vdCAoUmVuYW1pbmcubWVtIGlkJyBpbmopKVxuICAgICAgJiYgKChzc2l0ZSA9IHNpdGUgJiYgc3NpdGUnID0gc2l0ZScpXG4gICAgICAgICB8fCAoaWQgPSBpZCcgJiYgc3NpdGUgPSBzaXRlJyAmJiBzc2l0ZScgPSBzaXRlKSlcbiAgICB0aGVuIChcbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCcgc2lkJyBpbmogd2l0aFxuICAgICAgfCBTb21lIGluaidcbiAgICAgICAgd2hlbiBSZW5hbWluZy5tZW0gaWQgaW5qJyAmJiBzaWQgPSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGlkIC0+XG4gICAgICAgIFNvbWUgaW5qJ1xuICAgICAgfCBfIC0+IE5vbmVcbiAgICApIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEV4aXN0aW5nIF8sIF8pLCBUb05vZGUgKEZyZXNoIF8sIF8pKSwgKCgoRnJlc2ggXyB8IEV4aXN0aW5nIF8pLCBfKSwgXykgLT5cbiAgICBOb25lXG4gIHwgKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm90aGluZyksICgoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpLCB4KSAtPlxuICAgIGlmIHR5ID0gdHknICYmIHNpdGUgPSBzaXRlJyAmJiB4ID0gVG9Ob3RoaW5nICYmIG5vdCAoUmVuYW1pbmcubWVtIGlkIGluailcbiAgICB0aGVuXG4gICAgICBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgaWQnIGlualxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCAoKEZyZXNoIChpZCwgdHkpLCBzaXRlKSwgVG9JbnRlcm5hbCBpKSwgKChGcmVzaCAoaWQnLCB0eScpLCBzaXRlJyksIHgpIC0+XG4gICAgaWYgdHkgPSB0eScgJiYgc2l0ZSA9IHNpdGUnICYmIHggPSBUb0ludGVybmFsIGkgJiYgbm90IChSZW5hbWluZy5tZW0gaWQgaW5qKVxuICAgIHRoZW5cbiAgICAgIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCBpZCcgaW5qXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICggKChGcmVzaCAoaWQsIHR5KSwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgdHknKSwgc2l0ZScpKSxcbiAgICAgICgoRnJlc2ggKHNpZCwgc3R5KSwgc3NpdGUpLCBUb05vZGUgKEZyZXNoIChzaWQnLCBzdHknKSwgc3NpdGUnKSkgKSAtPlxuICAgIGlmIChub3QgKFJlbmFtaW5nLm1lbSBpZCBpbmopKSAmJiBub3QgKFJlbmFtaW5nLm1lbSBpZCcgaW5qKSB0aGVuXG4gICAgICBpZiB0eSA9IHN0eSAmJiBzaXRlID0gc3NpdGUgJiYgdHknID0gc3R5JyAmJiBzaXRlJyA9IHNzaXRlJyB0aGVuIChcbiAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCBpbmogd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIHNpZCcgaW5qJyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJycgLT4gU29tZSBpbmonJylcbiAgICAgICkgZWxzZSBpZiB0eSA9IHN0eScgJiYgc2l0ZSA9IHNzaXRlJyAmJiB0eScgPSBzdHkgJiYgc2l0ZScgPSBzc2l0ZSB0aGVuIChcbiAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkIHNpZCcgaW5qIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGlkJyBzaWQgaW5qJyB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgaW5qJycgLT4gU29tZSBpbmonJylcbiAgICAgICkgZWxzZVxuICAgICAgICBOb25lXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8ICgoRnJlc2ggXywgXyksIF8pLCAoKEZyZXNoIF8sIF8pLCBfKSAtPiBOb25lXG4gIHwgKChGcmVzaCBfLCBfKSwgXyksICgoRXhpc3RpbmcgXywgXyksIF8pIC0+IE5vbmVcblxubGV0IHJlYyBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBnb2FsIGFjYyA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gTm9uZVxuICB8IGggOjogdCAtPlxuICAgIChtYXRjaCBjb21wYXRpYmxlX3BvaW50IH5kZWJ1Z19tb2RlIGluaiBoIGdvYWwgd2l0aFxuICAgIHwgTm9uZSAtPiBhdXhfc3ViIH5kZWJ1Z19tb2RlIGluaiBnb2FsIChoIDo6IGFjYykgdFxuICAgIHwgU29tZSBpbmonIC0+IFNvbWUgKGluaicsIExpc3QucmV2X2FwcGVuZCBhY2MgdCkpXG5cbmxldCByZWMgaXNfc3VibmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpbmogbmF2ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTb21lIChpbmosIG5hdilcbiAgfCBoIDo6IHQgLT5cbiAgICAobWF0Y2ggYXV4X3N1YiB+ZGVidWdfbW9kZSBpbmogaCBbXSBuYXYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChpbmonLCBuYXYnKSAtPiBpc19zdWJuYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGluaicgbmF2JyB0KVxuXG5sZXQgcmVuYW1lX2lkIH5kZWJ1Z19tb2RlIGluajJjYyA9IGZ1bmN0aW9uXG4gIHwgRXhpc3RpbmcgbiAtPiBpbmoyY2MsIEV4aXN0aW5nIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoyY2MgbilcbiAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgIGxldCBpbWcgPSBSZW5hbWluZy5pbWFnZSBpbmoyY2MgaW5cbiAgICBsZXQgaWQnID1cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBpZCBpbWcgdGhlbiAoXG4gICAgICAgIG1hdGNoIE1vZHMuSW50U2V0Lm1heF9lbHQgaW1nIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IDFcbiAgICAgICAgfCBTb21lIGkgLT4gc3VjYyBpXG4gICAgICApIGVsc2VcbiAgICAgICAgaWRcbiAgICBpblxuICAgIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQgaWQnIGluajJjYyB3aXRoXG4gICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgU29tZSBpbmonIC0+IGluaicsIEZyZXNoIChpZCcsIHR5KSlcblxubGV0IHJlYyByZW5hbWUgfmRlYnVnX21vZGUgaW5qMmNjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBpbmoyY2MsIFtdXG4gIHwgKCh4LCBpKSwgKChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pIGFzIGEpKSA6OiB0IC0+XG4gICAgbGV0IGluaiwgeCcgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjIHggaW5cbiAgICBsZXQgaW5qJywgdCcgPSByZW5hbWUgfmRlYnVnX21vZGUgaW5qIHQgaW5cbiAgICBpbmonLCAoKHgnLCBpKSwgYSkgOjogdCdcbiAgfCAoKHgsIGkpLCBUb05vZGUgKHksIGopKSA6OiB0IC0+XG4gICAgbGV0IGluaiwgeCcgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qMmNjIHggaW5cbiAgICBsZXQgaW5qJywgeScgPSByZW5hbWVfaWQgfmRlYnVnX21vZGUgaW5qIHkgaW5cbiAgICBsZXQgaW5qJycsIHQnID0gcmVuYW1lIH5kZWJ1Z19tb2RlIGluaicgdCBpblxuICAgIGluaicnLCAoKHgnLCBpKSwgVG9Ob2RlICh5JywgaikpIDo6IHQnXG5cbmxldCBjaGVja19lZGdlIGdyYXBoID0gZnVuY3Rpb25cbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvTm90aGluZyAtPiBFZGdlcy5pc19mcmVlIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvSW50ZXJuYWwgaSAtPiBFZGdlcy5pc19pbnRlcm5hbCBpIGlkIHNpdGUgZ3JhcGhcbiAgfCAoRnJlc2ggKGlkLCBfKSwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChGcmVzaCAoaWQsIF8pLCBzaXRlKSwgVG9Ob2RlIChGcmVzaCAoaWQnLCBfKSwgc2l0ZScpIC0+XG4gICAgRWRnZXMubGlua19leGlzdHMgaWQgc2l0ZSBpZCcgc2l0ZScgZ3JhcGhcbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBUb05vdGhpbmcgLT4gRWRnZXMuaXNfZnJlZSBpZCBzaXRlIGdyYXBoXG4gIHwgKEV4aXN0aW5nIGlkLCBzaXRlKSwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgaWQgc2l0ZSBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRXhpc3RpbmcgaWQnLCBzaXRlJykgLT5cbiAgICBFZGdlcy5saW5rX2V4aXN0cyBpZCBzaXRlIGlkJyBzaXRlJyBncmFwaFxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIFRvTm9kZSAoRnJlc2ggKGlkJywgXyksIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIGlkIHNpdGUgaWQnIHNpdGUnIGdyYXBoXG5cbigqaW5qIGlzIHRoZSBwYXJ0aWFsIGluamVjdGlvbiBidWlsdCBzbyBmYXI6IGluajphYnMtPmNvbmNyZXRlKilcbmxldCBkc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgVG9Ob3RoaW5nIC0+XG4gICAgaWYgRWRnZXMuaXNfZnJlZSByb290IHNpdGUgZ3JhcGggdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvSW50ZXJuYWwgaSAtPlxuICAgIGlmIEVkZ2VzLmlzX2ludGVybmFsIGkgcm9vdCBzaXRlIGdyYXBoIHRoZW5cbiAgICAgIFNvbWUgaW5qJ1xuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBUb05vZGUgKEV4aXN0aW5nIGlkJywgc2l0ZScpIC0+XG4gICAgaWZcbiAgICAgIEVkZ2VzLmxpbmtfZXhpc3RzIHJvb3Qgc2l0ZVxuICAgICAgICAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qJyBpZCcpXG4gICAgICAgIHNpdGUnIGdyYXBoXG4gICAgdGhlblxuICAgICAgU29tZSBpbmonXG4gICAgZWxzZVxuICAgICAgTm9uZVxuICB8IFRvTm9kZSAoRnJlc2ggKGlkJywgdHkpLCBzaXRlJykgLT5cbiAgICAobWF0Y2ggRWRnZXMuZXhpc3RzX2ZyZXNoIHJvb3Qgc2l0ZSB0eSBzaXRlJyBncmFwaCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbm9kZSAtPiBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgaWQnIG5vZGUgaW5qJylcblxubGV0IGluamVjdGlvbl9mb3Jfb25lX21vcmVfZWRnZSB+ZGVidWdfbW9kZSA/cm9vdCBpbmogZ3JhcGggPSBmdW5jdGlvblxuICB8IChFeGlzdGluZyBpZCwgc2l0ZSksIGRzdCAtPlxuICAgIGRzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaiBncmFwaFxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZClcbiAgICAgIHNpdGUgZHN0XG4gIHwgKEZyZXNoIChpZCwgcnR5KSwgc2l0ZSksIGRzdCAtPlxuICAgIChtYXRjaCByb290IHdpdGhcbiAgICB8IFNvbWUgKHJvb3QsIHJ0eScpIHdoZW4gcnR5ID0gcnR5JyAtPlxuICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBpZCByb290IGluaiB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGluaicgLT4gZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qJyBncmFwaCByb290IHNpdGUgZHN0KVxuICAgIHwgXyAtPiBOb25lKVxuXG5sZXQgaW1wZXJhdGl2ZV9kc3RfaXNfb2theSB+ZGVidWdfbW9kZSBpbmonIGdyYXBoIHJvb3Qgc2l0ZSA9IGZ1bmN0aW9uXG4gIHwgVG9Ob3RoaW5nIC0+IEVkZ2VzLmlzX2ZyZWUgcm9vdCBzaXRlIGdyYXBoXG4gIHwgVG9JbnRlcm5hbCBpIC0+IEVkZ2VzLmlzX2ludGVybmFsIGkgcm9vdCBzaXRlIGdyYXBoXG4gIHwgVG9Ob2RlIChFeGlzdGluZyBpZCcsIHNpdGUnKSAtPlxuICAgIEVkZ2VzLmxpbmtfZXhpc3RzIHJvb3Qgc2l0ZVxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgaWQnKVxuICAgICAgc2l0ZScgZ3JhcGhcbiAgfCBUb05vZGUgKEZyZXNoIChpZCcsIHR5KSwgc2l0ZScpIC0+XG4gICAgKG1hdGNoIEVkZ2VzLmV4aXN0c19mcmVzaCByb290IHNpdGUgdHkgc2l0ZScgZ3JhcGggd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSBub2RlIC0+IFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGlkJyBub2RlIGluaicpXG5cbmxldCBpbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoID0gZnVuY3Rpb25cbiAgfCAoRXhpc3RpbmcgaWQsIHNpdGUpLCBkc3QgLT5cbiAgICBpbXBlcmF0aXZlX2RzdF9pc19va2F5IH5kZWJ1Z19tb2RlIGluaiBncmFwaFxuICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZClcbiAgICAgIHNpdGUgZHN0XG4gIHwgKEZyZXNoIChpZCwgcnR5KSwgc2l0ZSksIGRzdCAtPlxuICAgIChtYXRjaCByb290IHdpdGhcbiAgICB8IFNvbWUgKHJvb3QsIHJ0eScpIHdoZW4gcnR5ID0gcnR5JyAtPlxuICAgICAgUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgaWQgcm9vdCBpbmpcbiAgICAgICYmIGltcGVyYXRpdmVfZHN0X2lzX29rYXkgfmRlYnVnX21vZGUgaW5qIGdyYXBoIHJvb3Qgc2l0ZSBkc3RcbiAgICB8IF8gLT4gZmFsc2UpXG5cbmxldCBjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qID0gZnVuY3Rpb25cbiAgfCBFeGlzdGluZyBpZCwgc2l0ZSAtPiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmogaWQsIHNpdGVcbiAgfCBGcmVzaCAoaWQsIF8pLCBzaXRlIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaiBpZCwgc2l0ZVxuXG5sZXQgY29uY3JldGl6ZV9hcnJvdyB+ZGVidWdfbW9kZSBpbmogPSBmdW5jdGlvblxuICB8IChUb05vdGhpbmcgfCBUb0ludGVybmFsIF8pIGFzIHggLT4geFxuICB8IFRvTm9kZSB4IC0+IFRvTm9kZSAoY29uY3JldGl6ZV9wb3J0IH5kZWJ1Z19tb2RlIGluaiB4KVxuXG5sZXQgY29uY3JldGl6ZSB+ZGVidWdfbW9kZSByb290IGdyYXBoIG5hdiA9XG4gIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBsZXQgb3V0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBvdXQgKChwLCBkc3QpIGFzIHN0ZXApIC0+XG4gICAgICAgIG1hdGNoIG91dCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBvdXRcbiAgICAgICAgfCBTb21lIChyb290LCBhY2MpIC0+XG4gICAgICAgICAgaWYgaW1wZXJhdGl2ZV9lZGdlX2lzX3ZhbGlkIH5kZWJ1Z19tb2RlID9yb290IGluaiBncmFwaCBzdGVwIHRoZW4gKFxuICAgICAgICAgICAgbGV0IHN0ID1cbiAgICAgICAgICAgICAgKCBjb25jcmV0aXplX3BvcnQgfmRlYnVnX21vZGUgaW5qIHAsXG4gICAgICAgICAgICAgICAgY29uY3JldGl6ZV9hcnJvdyB+ZGVidWdfbW9kZSBpbmogZHN0IClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBTb21lIChOb25lLCBzdCA6OiBhY2MpXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgKFNvbWUgKFNvbWUgcm9vdCwgW10pKVxuICAgICAgbmF2XG4gIGluXG4gIE9wdGlvbl91dGlsLm1hcCAoZnVuIChfLCBsKSAtPiBMaXN0LnJldiBsKSBvdXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgaW50ZXJuYWwgPSBpbnQgb3B0aW9uXG50eXBlIGxpbmsgPSBGUkVFIHwgVkFMIG9mIGludFxudHlwZSBhZ2VudCA9IHsgYV90eXBlOiBpbnQ7IGFfcG9ydHM6IGxpbmsgYXJyYXk7IGFfaW50czogaW50ZXJuYWwgYXJyYXkgfVxudHlwZSB0ID0gYWdlbnQgbGlzdFxuXG5sZXQgY29weV9hZ2VudCBhZ2VudCA9XG4gIHtcbiAgICBhX3R5cGUgPSBhZ2VudC5hX3R5cGU7XG4gICAgYV9wb3J0cyA9IEFycmF5LmNvcHkgYWdlbnQuYV9wb3J0cztcbiAgICBhX2ludHMgPSBBcnJheS5jb3B5IGFnZW50LmFfaW50cztcbiAgfVxuXG50eXBlIGluY3JfdCA9IHtcbiAgZmF0aGVyOiBpbnQgTW9kcy5EeW5BcnJheS50O1xuICByYW5rOiAoaW50ICogKGJvb2wgKiBib29sKSkgTW9kcy5EeW5BcnJheS50O1xufVxuXG5sZXQgY3JlYXRlIG4gPVxuICB7XG4gICAgZmF0aGVyID0gTW9kcy5EeW5BcnJheS5pbml0IG4gKGZ1biBpIC0+IGkpO1xuICAgIHJhbmsgPSBNb2RzLkR5bkFycmF5Lm1ha2UgbiAoMSwgKHRydWUsIGZhbHNlKSk7XG4gIH1cblxubGV0IHJlYyBmaW5kX2F1eCBhIGkgPVxuICBsZXQgYWkgPVxuICAgIGlmIE1vZHMuRHluQXJyYXkubGVuZ3RoIGEgPD0gaSB0aGVuXG4gICAgICBpXG4gICAgZWxzZVxuICAgICAgTW9kcy5EeW5BcnJheS5nZXQgYSBpXG4gIGluXG4gIGlmIGFpID09IGkgdGhlblxuICAgIGlcbiAgZWxzZSAoXG4gICAgbGV0IHJvb3QgPSBmaW5kX2F1eCBhIGFpIGluXG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgYSBpIHJvb3QgaW5cbiAgICByb290XG4gIClcblxubGV0IGZpbmQgaCB4ID0gZmluZF9hdXggaC5mYXRoZXIgeFxubGV0IGNvbWJpbmVfcmFua3MgKGl4LCAoYngsIF8pKSAoaXksIChieSwgXykpID0gaXggKyBpeSwgKGJ4ICYmIGJ5LCB0cnVlKVxuXG5sZXQgdW5pb24gaCB4IHkgPVxuICBsZXQgcm9vdF94ID0gZmluZCBoIHggaW5cbiAgbGV0IHJvb3RfeSA9IGZpbmQgaCB5IGluXG4gIGlmIHJvb3RfeCA9PSByb290X3kgdGhlblxuICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCByYW5rX3ggPSBNb2RzLkR5bkFycmF5LmdldCBoLnJhbmsgcm9vdF94IGluXG4gICAgbGV0IHJhbmtfeSA9IE1vZHMuRHluQXJyYXkuZ2V0IGgucmFuayByb290X3kgaW5cbiAgICBpZiBmc3QgcmFua194ID4gZnN0IHJhbmtfeSB0aGVuIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3ggKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeSByb290X3hcbiAgICApIGVsc2UgaWYgZnN0IHJhbmtfeCA8IGZzdCByYW5rX3kgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBoLnJhbmsgcm9vdF95IChjb21iaW5lX3JhbmtzIHJhbmtfeCByYW5rX3kpIGluXG4gICAgICBNb2RzLkR5bkFycmF5LnNldCBoLmZhdGhlciByb290X3ggcm9vdF95XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCAoKSA9IE1vZHMuRHluQXJyYXkuc2V0IGgucmFuayByb290X3ggKGNvbWJpbmVfcmFua3MgcmFua194IHJhbmtfeSkgaW5cbiAgICAgIE1vZHMuRHluQXJyYXkuc2V0IGguZmF0aGVyIHJvb3RfeSByb290X3hcbiAgICApXG4gIClcblxubGV0IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggPVxuICBsZXQgdCA9IGNyZWF0ZSAxIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGFnIC0+XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5hX3R5cGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSAoYmVmb3JlLCBhZnRlcikgLT5cbiAgICAgICAgICAgIGxldCBhID0gYWcuYV9wb3J0cy4oYWZ0ZXIpIGluXG4gICAgICAgICAgICBsZXQgYiA9IGFnLmFfcG9ydHMuKGJlZm9yZSkgaW5cbiAgICAgICAgICAgIChtYXRjaCBiIHdpdGhcbiAgICAgICAgICAgIHwgRlJFRSAtPiAoKVxuICAgICAgICAgICAgfCBWQUwgbG5rX2IgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IEZSRUUgLT5cbiAgICAgICAgICAgICAgICAoKiBpbiB0aGlzIGNhc2UgdGhlIGVuZHBvaW50IG9mIHRoZSBjaGFpbiBvZiBpbmNyZW1lbnRzIGlzIHJhdzpcbiAgICAgICAgICAgICAgICAgICB0aGUgYWdlbnQgaXMgY3JlYXRlZCB3aXRoIGEgY291bnRlciB2YWx1ZSopXG4gICAgICAgICAgICAgICAgbGV0IHJvb3QgPSBmaW5kIHQgbG5rX2IgaW5cbiAgICAgICAgICAgICAgICBsZXQgcywgXyA9IE1vZHMuRHluQXJyYXkuZ2V0IHQucmFuayByb290IGluXG4gICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5zZXQgdC5yYW5rIHJvb3QgKHMgLSAxLCAodHJ1ZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgVkFMIGxua19hIC0+IHVuaW9uIHQgbG5rX2IgbG5rX2EpKSlcbiAgICAgICAgbWl4XG4gIGluXG4gIHRcblxubGV0IHByaW50X2xpbmsgfm5vQ291bnRlcnMgY291bnRlcl9hZ2VudHMgZiA9IGZ1bmN0aW9uXG4gIHwgRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIlxuICB8IFZBTCBpIC0+XG4gICAgKHRyeVxuICAgICAgIGxldCByb290ID0gZmluZCBjb3VudGVyX2FnZW50cyBpIGluXG4gICAgICAgbGV0IGNvdW50ZXIsIChfLCBpc19jb3VudGVyKSA9XG4gICAgICAgICBNb2RzLkR5bkFycmF5LmdldCBjb3VudGVyX2FnZW50cy5yYW5rIHJvb3RcbiAgICAgICBpblxuICAgICAgIGlmIGlzX2NvdW50ZXIgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIns9JWR9XCIgY291bnRlclxuICAgICAgIGVsc2VcbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWldXCIgaVxuICAgICB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiWyVpXVwiIGkpXG5cbmxldCBhdXhfcHBfc2kgc2lncyBhIHMgZiBpID1cbiAgbWF0Y2ggc2lncyB3aXRoXG4gIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9zaXRlX2ludGVybmFsX3N0YXRlIHNpZ3MgYSBzIGYgaVxuICB8IE5vbmUgLT5cbiAgICAobWF0Y2ggaSB3aXRoXG4gICAgfCBTb21lIGkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpeyVpfVwiIHMgaVxuICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgcylcblxubGV0IHByaW50X2ludGYgfm5vQ291bnRlcnMgd2l0aF9saW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGFnX3R5IGYgKHBvcnRzLCBpbnRzKVxuICAgID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFcIlxuICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgIChhdXhfcHBfc2kgc2lncyBhZ190eSBpKSBpbnRzLihpKVxuICAgICAgICAgIChpZiB3aXRoX2xpbmsgdGhlblxuICAgICAgICAgICAgIHByaW50X2xpbmsgfm5vQ291bnRlcnMgY291bnRlcl9hZ2VudHNcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGZ1biBfIF8gLT5cbiAgICAgICAgICAgKCkpXG4gICAgICAgICAgcG9ydHMuKGkpXG4gICAgICBpblxuICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBhdXhfcHBfYWcgc2lncyBmIGEgPVxuICBtYXRjaCBzaWdzIHdpdGhcbiAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MgZiBhXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgYVxuXG5sZXQgcHJpbnRfYWdlbnQgfm5vQ291bnRlcnMgY3JlYXRlZCBsaW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGYgYWcgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKSV0XCIgKGF1eF9wcF9hZyBzaWdzKSBhZy5hX3R5cGVcbiAgICAocHJpbnRfaW50ZiB+bm9Db3VudGVycyBsaW5rID9zaWdzIGNvdW50ZXJfYWdlbnRzIGFnLmFfdHlwZSlcbiAgICAoYWcuYV9wb3J0cywgYWcuYV9pbnRzKSAoZnVuIGYgLT5cbiAgICAgIGlmIGNyZWF0ZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIrXCIpXG5cbmxldCBwcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZCB+aW5pdGlhbF9jb21tYSA/c2lncyBmIG1peCA9XG4gIGxldCBjb3VudGVyX2FnZW50cyA9IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggaW5cbiAgbGV0IHJlYyBhdXhfcHJpbnQgc29tZSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoKVxuICAgIHwgaCA6OiB0IC0+XG4gICAgICBpZlxuICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgIHwgU29tZSBzaWdzIC0+XG4gICAgICAgICAgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBoLmFfdHlwZSAmJiBub3Qgbm9Db3VudGVyc1xuICAgICAgdGhlblxuICAgICAgICBhdXhfcHJpbnQgc29tZSB0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gaWYgc29tZSB0aGVuIFBwLmNvbW1hIGYgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9hZ2VudCB+bm9Db3VudGVycyBjcmVhdGVkIHRydWUgP3NpZ3MgY291bnRlcl9hZ2VudHMgZiBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9wcmludCB0cnVlIHRcbiAgICAgIClcbiAgaW5cbiAgYXV4X3ByaW50IGluaXRpYWxfY29tbWEgbWl4XG5cbmxldCBhZ2VudF90b19qc29uIGEgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcInR5cGVcIiwgYEludCBhLmFfdHlwZTtcbiAgICAgICggXCJzaXRlc1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgKGZ1biB4IGFjYyAtPlxuICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBGUkVFIC0+IGBOdWxsXG4gICAgICAgICAgICAgICB8IFZBTCBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICBhLmFfcG9ydHMgW10pICk7XG4gICAgICAoIFwiaW50ZXJuYWxzXCIsXG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgIHwgU29tZSBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICBhLmFfaW50cyBbXSkgKTtcbiAgICBdXG5cbmxldCBhZ2VudF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSkgXVxuICB8IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0KTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJzaXRlc1wiLCBgTGlzdCBzKSBdXG4gIHwgYEFzc29jIFsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpOyAoXCJ0eXBlXCIsIGBJbnQgdCk7IChcInNpdGVzXCIsIGBMaXN0IHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJ0eXBlXCIsIGBJbnQgdCkgXVxuICB8IGBBc3NvYyBbIChcInNpdGVzXCIsIGBMaXN0IHMpOyAoXCJpbnRlcm5hbHNcIiwgYExpc3QgaSk7IChcInR5cGVcIiwgYEludCB0KSBdXG4gIHwgYEFzc29jIFsgKFwic2l0ZXNcIiwgYExpc3Qgcyk7IChcInR5cGVcIiwgYEludCB0KTsgKFwiaW50ZXJuYWxzXCIsIGBMaXN0IGkpIF0gLT5cbiAgICB7XG4gICAgICBhX3R5cGUgPSB0O1xuICAgICAgYV9wb3J0cyA9XG4gICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBOdWxsIC0+IEZSRUVcbiAgICAgICAgICAgIHwgYEludCBwIC0+IFZBTCBwXG4gICAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBzaXRlIGxpbmtcIiwgeCkpKVxuICAgICAgICAgIHM7XG4gICAgICBhX2ludHMgPVxuICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBgTnVsbCAtPiBOb25lXG4gICAgICAgICAgICB8IGBJbnQgcCAtPiBTb21lIHBcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGludGVybmFsIHN0YXRlXCIsIHgpKSlcbiAgICAgICAgICBpO1xuICAgIH1cbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcmF3X2FnZW50XCIsIHgpKVxuXG5sZXQgdG9fanNvbiBtID0gYExpc3QgKExpc3QubWFwIGFnZW50X3RvX2pzb24gbSlcblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBMaXN0IGwgLT4gTGlzdC5tYXAgYWdlbnRfb2ZfanNvbiBsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHJhd19taXh0dXJlXCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwZXJ2YXNpdmVzX2Jvb2wgPSBib29sXG5cbnR5cGUgKCdtaXgsICdpZCkgZSA9XG4gIHwgQklOX0FMR19PUCBvZlxuICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgfCBVTl9BTEdfT1Agb2YgT3BlcmF0b3IudW5fYWxnX29wICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IFNUQVRFX0FMR19PUCBvZiBPcGVyYXRvci5zdGF0ZV9hbGdfb3BcbiAgfCBBTEdfVkFSIG9mICdpZFxuICB8IEtBUFBBX0lOU1RBTkNFIG9mICdtaXhcbiAgfCBUT0tFTl9JRCBvZiAnaWRcbiAgfCBDT05TVCBvZiBOYnIudFxuICB8IElGIG9mXG4gICAgICAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gICAgICAqICgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWRcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICB8IERJRkZfVE9LRU4gb2YgKCgnbWl4LCAnaWQpIGUgTG9jLmFubm90ZWQgKiAnaWQpXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBvZiAoKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZCAqICdtaXgpXG5cbmFuZCAoJ21peCwgJ2lkKSBib29sID1cbiAgfCBUUlVFXG4gIHwgRkFMU0VcbiAgfCBCSU5fQk9PTF9PUCBvZlxuICAgICAgT3BlcmF0b3IuYmluX2Jvb2xfb3BcbiAgICAgICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBib29sIExvYy5hbm5vdGVkXG4gIHwgVU5fQk9PTF9PUCBvZiBPcGVyYXRvci51bl9ib29sX29wICogKCdtaXgsICdpZCkgYm9vbCBMb2MuYW5ub3RlZFxuICB8IENPTVBBUkVfT1Agb2ZcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3BcbiAgICAgICogKCdtaXgsICdpZCkgZSBMb2MuYW5ub3RlZFxuICAgICAgKiAoJ21peCwgJ2lkKSBlIExvYy5hbm5vdGVkXG5cbmxldCByZWMgZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5iaW5fYWxnX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGI7XG4gICAgICBdXG4gIHwgVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci51bl9hbGdfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgYTtcbiAgICAgIF1cbiAgfCBTVEFURV9BTEdfT1Agb3AgLT4gT3BlcmF0b3Iuc3RhdGVfYWxnX29wX3RvX2pzb24gb3BcbiAgfCBBTEdfVkFSIGkgLT4gYExpc3QgWyBgU3RyaW5nIFwiVkFSXCI7IGZfaWQgaSBdXG4gIHwgS0FQUEFfSU5TVEFOQ0UgY2MgLT4gYExpc3QgWyBgU3RyaW5nIFwiTUlYXCI7IGZfbWl4IGNjIF1cbiAgfCBUT0tFTl9JRCBpIC0+IGBMaXN0IFsgYFN0cmluZyBcIlRPS0VOXCI7IGZfaWQgaSBdXG4gIHwgQ09OU1QgbiAtPiBOYnIudG9feW9qc29uIG5cbiAgfCBJRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiSUZcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGNvbmQ7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIHllcztcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgbm87XG4gICAgICBdXG4gIHwgRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIkRJRkZfVE9LRU5cIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGV4cHI7XG4gICAgICAgIGZfaWQgdG9rZW47XG4gICAgICBdXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4dHVyZSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElGRl9NSVhUVVJFXCI7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBleHByO1xuICAgICAgICBmX21peCBtaXh0dXJlO1xuICAgICAgXVxuXG5hbmQgYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBUUlVFIC0+IGBCb29sIHRydWVcbiAgfCBGQUxTRSAtPiBgQm9vbCBmYWxzZVxuICB8IFVOX0JPT0xfT1AgKG9wLCBhKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLnVuX2Jvb2xfb3BfdG9fanNvbiBvcDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGE7XG4gICAgICBdXG4gIHwgQklOX0JPT0xfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIE9wZXJhdG9yLmJpbl9ib29sX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgYjtcbiAgICAgIF1cbiAgfCBDT01QQVJFX09QIChvcCwgYSwgYikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBPcGVyYXRvci5jb21wYXJlX29wX3RvX2pzb24gb3A7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGE7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChlX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGI7XG4gICAgICBdXG5cbmxldCByZWMgZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESUZGX01JWFRVUkVcIjsgZXhwcjsgbWl4dHVyZSBdIC0+XG4gICAgRElGRl9LQVBQQV9JTlNUQU5DRVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBleHByLFxuICAgICAgICBmX21peCBtaXh0dXJlIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESUZGX1RPS0VOXCI7IGV4cHI7IHRvayBdIC0+XG4gICAgRElGRl9UT0tFTlxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBleHByLFxuICAgICAgICBmX2lkIHRvayApXG4gIHwgYExpc3QgWyBvcDsgYTsgYiBdIC0+XG4gICAgQklOX0FMR19PUFxuICAgICAgKCBPcGVyYXRvci5iaW5fYWxnX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGEsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIGJcbiAgICAgIClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJWQVJcIjsgaSBdIC0+IEFMR19WQVIgKGZfaWQgaSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJUT0tFTlwiOyBpIF0gLT4gVE9LRU5fSUQgKGZfaWQgaSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJNSVhcIjsgY2MgXSAtPiBLQVBQQV9JTlNUQU5DRSAoZl9taXggY2MpXG4gIHwgYExpc3QgWyBvcDsgYSBdIC0+XG4gICAgVU5fQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLnVuX2FsZ19vcF9vZl9qc29uIG9wLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKSBhXG4gICAgICApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiSUZcIjsgY29uZDsgeWVzOyBubyBdIC0+XG4gICAgSUZcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgIGNvbmQsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChlX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpIHllcyxcbiAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCkgbm9cbiAgICAgIClcbiAgfCB4IC0+XG4gICAgKHRyeSBTVEFURV9BTEdfT1AgKE9wZXJhdG9yLnN0YXRlX2FsZ19vcF9vZl9qc29uIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgKHRyeSBDT05TVCAoTmJyLm9mX3lvanNvbiB4KVxuICAgICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgQWxnX2V4cHJcIiwgeCkpKSlcblxuYW5kIGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZCA9IGZ1bmN0aW9uXG4gIHwgYEJvb2wgYiAtPlxuICAgIGlmIGIgdGhlblxuICAgICAgVFJVRVxuICAgIGVsc2VcbiAgICAgIEZBTFNFXG4gIHwgYExpc3QgWyBvcDsgYSBdIC0+XG4gICAgVU5fQk9PTF9PUFxuICAgICAgKCBPcGVyYXRvci51bl9ib29sX29wX29mX2pzb24gb3AsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICBhIClcbiAgfCBgTGlzdCBbIG9wOyBhOyBiIF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBCSU5fQk9PTF9PUFxuICAgICAgICAgKCBPcGVyYXRvci5iaW5fYm9vbF9vcF9vZl9qc29uIG9wLFxuICAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChib29sX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfaWQpXG4gICAgICAgICAgICAgYSxcbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgIGIgKVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgICh0cnlcbiAgICAgICAgICBDT01QQVJFX09QXG4gICAgICAgICAgICAoIE9wZXJhdG9yLmNvbXBhcmVfb3Bfb2ZfanNvbiBvcCxcbiAgICAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX2lkKVxuICAgICAgICAgICAgICAgIGEsXG4gICAgICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl9pZClcbiAgICAgICAgICAgICAgICBiIClcbiAgICAgICAgd2l0aCBZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIF8gLT5cbiAgICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbCBleHByXCIsIHgpKSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYm9vbF9leHByXCIsIHgpKVxuXG5sZXQgcmVjIHByaW50IHByX21peCBwcl90b2sgcHJfdmFyIGYgPSBmdW5jdGlvblxuICB8IENPTlNUIG4gLT4gTmJyLnByaW50IGYgblxuICB8IEFMR19WQVIgbGFiIC0+IHByX3ZhciBmIGxhYlxuICB8IEtBUFBBX0lOU1RBTkNFIGFzdCAtPiBwcl9taXggZiBhc3RcbiAgfCBUT0tFTl9JRCB0ayAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIHByX3RvayB0a1xuICB8IFNUQVRFX0FMR19PUCBvcCAtPiBPcGVyYXRvci5wcmludF9zdGF0ZV9hbGdfb3AgZiBvcFxuICB8IEJJTl9BTEdfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBPcGVyYXRvci5wcmludF9iaW5fYWxnX29wXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBhXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiIGYgb3BcbiAgfCBVTl9BTEdfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhKCVhKVwiIE9wZXJhdG9yLnByaW50X3VuX2FsZ19vcCBvcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYVxuICB8IElGICgoY29uZCwgXyksICh5ZXMsIF8pLCAobm8sIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSBbP10gJWEgWzpdICVhXCJcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgY29uZFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgeWVzXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBub1xuICB8IERJRkZfVE9LRU4gKChleHByLCBfKSwgdG9rKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkaWZmKCVhLCVhKVwiIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgZXhwciBwcl90b2sgdG9rXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoKGV4cHIsIF8pLCBtaXh0dXJlKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkaWZmKCVhLCVhKVwiXG4gICAgICAocHJpbnQgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBleHByIHByX21peCBtaXh0dXJlXG5cbmFuZCBwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyIGYgPSBmdW5jdGlvblxuICB8IFRSVUUgLT4gRm9ybWF0LmZwcmludGYgZiBcIlt0cnVlXVwiXG4gIHwgRkFMU0UgLT4gRm9ybWF0LmZwcmludGYgZiBcIltmYWxzZV1cIlxuICB8IFVOX0JPT0xfT1AgKG9wLCAoYSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICglYSlcIiBPcGVyYXRvci5wcmludF91bl9ib29sX29wIG9wXG4gICAgICAocHJpbnRfYm9vbCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGFcbiAgfCBCSU5fQk9PTF9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJWEgJWEpXCJcbiAgICAgIChwcmludF9ib29sIHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYSBPcGVyYXRvci5wcmludF9iaW5fYm9vbF9vcCBvcFxuICAgICAgKHByaW50X2Jvb2wgcHJfbWl4IHByX3RvayBwcl92YXIpXG4gICAgICBiXG4gIHwgQ09NUEFSRV9PUCAob3AsIChhLCBfKSwgKGIsIF8pKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEgJWEgJWEpXCJcbiAgICAgIChwcmludCBwcl9taXggcHJfdG9rIHByX3ZhcilcbiAgICAgIGEgT3BlcmF0b3IucHJpbnRfY29tcGFyZV9vcCBvcFxuICAgICAgKHByaW50IHByX21peCBwcl90b2sgcHJfdmFyKVxuICAgICAgYlxuXG5sZXQgY29uc3QgbiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChDT05TVCBuKVxubGV0IGludCBpID0gY29uc3QgKE5ici5JIGkpXG5sZXQgZmxvYXQgZiA9IGNvbnN0IChOYnIuRiBmKVxubGV0IGFkZCBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5TVU0sIGUxLCBlMikpXG5sZXQgbWludXMgZTEgZTIgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQklOX0FMR19PUCAoT3BlcmF0b3IuTUlOVVMsIGUxLCBlMikpXG5sZXQgbXVsdCBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBlMSwgZTIpKVxubGV0IGRpdiBlMSBlMiA9IExvYy5hbm5vdF93aXRoX2R1bW15IChCSU5fQUxHX09QIChPcGVyYXRvci5ESVYsIGUxLCBlMikpXG5sZXQgcG93IGUxIGUyID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKEJJTl9BTEdfT1AgKE9wZXJhdG9yLlBPVywgZTEsIGUyKSlcbmxldCBsb2cgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5MT0csIGUxKSlcblxubGV0IGxuIGUxID1cbiAgKCogSkY6IElmIEkgcmVtZW1uYmVyIHdlbGwgKilcbiAgZGl2IChsb2cgZTEpIChsb2cgKGludCAxMCkpXG5cbmxldCBzaW4gZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5TSU5VUywgZTEpKVxubGV0IGNvcyBlMSA9IExvYy5hbm5vdF93aXRoX2R1bW15IChVTl9BTEdfT1AgKE9wZXJhdG9yLkNPU0lOVVMsIGUxKSlcbmxldCB1bWludXMgZTEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoVU5fQUxHX09QIChPcGVyYXRvci5VTUlOVVMsIGUxKSlcbmxldCBzcXJ0IGUxID0gTG9jLmFubm90X3dpdGhfZHVtbXkgKFVOX0FMR19PUCAoT3BlcmF0b3IuU1FSVCwgZTEpKVxuXG5sZXQgcmVjIGFkZF9kZXAgKChpbl90LCBpbl9lLCB0b2tzX2QsIG91dCkgYXMgeCkgZCA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gYWRkX2RlcCAoYWRkX2RlcCB4IGQgYSkgZCBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgX1xuICAoKiB3aGVuIHdlIGRpZmZlcmVudGlhdGUgYWdhaW5zdCBhIHZhcmlhYmxlLCB0aGUgcmVzdWx0IG1heSBkZXBlbmQgb24gdGhpcyB2YXJpYWJsZSBvbmx5IGlmIHRoZSB2YXJpYWJsZSBvY2N1cnMgaW4gdGhlIGRpZmZlcm50aWF0ZWQgZXhwcmVzc2lvbiAqKVxuICAgIC0+XG4gICAgYWRkX2RlcCB4IGQgYVxuICB8IEFMR19WQVIgaiwgXyAtPlxuICAgIGxldCAoKSA9IG91dC4oaikgPC0gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIG91dC4oaikgaW5cbiAgICB4XG4gIHwgKEtBUFBBX0lOU1RBTkNFIF8gfCBDT05TVCBfKSwgXyAtPiB4XG4gIHwgVE9LRU5fSUQgaSwgXyAtPlxuICAgIGxldCAoKSA9IHRva3NfZC4oaSkgPC0gT3BlcmF0b3IuRGVwU2V0LmFkZCBkIHRva3NfZC4oaSkgaW5cbiAgICB4XG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYWRkX2RlcCAoYWRkX2RlcCAoYWRkX2RlcF9ib29sIHggZCBjb25kKSBkIHllcykgZCBub1xuICB8IFNUQVRFX0FMR19PUCBvcCwgXyAtPlxuICAgIChtYXRjaCBvcCB3aXRoXG4gICAgfCBPcGVyYXRvci5FTUFYX1ZBUiB8IE9wZXJhdG9yLlRNQVhfVkFSIC0+IHhcbiAgICB8IE9wZXJhdG9yLlRJTUVfVkFSIC0+IE9wZXJhdG9yLkRlcFNldC5hZGQgZCBpbl90LCBpbl9lLCB0b2tzX2QsIG91dFxuICAgIHwgT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLkVWRU5UX1ZBUiB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSIC0+XG4gICAgICBpbl90LCBPcGVyYXRvci5EZXBTZXQuYWRkIGQgaW5fZSwgdG9rc19kLCBvdXQpXG5cbmFuZCBhZGRfZGVwX2Jvb2wgeCBkID0gZnVuY3Rpb25cbiAgfCAoVFJVRSB8IEZBTFNFKSwgXyAtPiB4XG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gYWRkX2RlcF9ib29sIHggZCBhXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGFkZF9kZXBfYm9vbCAoYWRkX2RlcF9ib29sIHggZCBhKSBkIGJcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBhZGRfZGVwIChhZGRfZGVwIHggZCBhKSBkIGJcblxubGV0IHJlYyBoYXNfbWl4IDpcbiAgICB0eXBlIGEuID92YXJfZGVjbHM6KCdiIC0+ICgnYywgJ2IpIGUpIC0+IChhLCAnYikgZSAtPiBwZXJ2YXNpdmVzX2Jvb2wgPVxuIGZ1biA/dmFyX2RlY2xzIC0+IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBVTl9BTEdfT1AgKF8sIChhLCBfKSlcbiAgfCBESUZGX1RPS0VOICgoYSwgXyksIF8pXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSAoKGEsIF8pLCBfKSAtPlxuICAgICgqIHdoZW4gd2UgZGlmZmVyZW50aWF0ZSBhZ2FpbnN0IGEgdmFyaWFibGUsIHRoZSByZXN1bHQgbWF5IGRlcGVuZCBvbiB0aGlzIHZhcmlhYmxlIG9ubHkgaWYgdGhlIHZhcmlhYmxlIG9jY3VycyBpbiB0aGUgZGlmZmVybnRpYXRlZCBleHByZXNzaW9uICopXG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGFcbiAgfCBTVEFURV9BTEdfT1AgXyB8IENPTlNUIF8gLT4gZmFsc2VcbiAgfCBUT0tFTl9JRCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyAtPiB0cnVlXG4gIHwgSUYgKChjb25kLCBfKSwgKHllcywgXyksIChubywgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIHllcyB8fCBoYXNfbWl4ID92YXJfZGVjbHMgbm9cbiAgICB8fCBib29sX2hhc19taXggP3Zhcl9kZWNscyBjb25kXG4gIHwgQUxHX1ZBUiBpIC0+XG4gICAgKG1hdGNoIHZhcl9kZWNscyB3aXRoXG4gICAgfCBOb25lIC0+IGZhbHNlXG4gICAgfCBTb21lIGYgLT4gaGFzX21peCA/dmFyX2RlY2xzIChmIGkpKVxuXG5hbmQgYm9vbF9oYXNfbWl4IDpcbiAgICB0eXBlIGEuID92YXJfZGVjbHM6KCdiIC0+ICgnYywgJ2IpIGUpIC0+IChhLCAnYikgYm9vbCAtPiBwZXJ2YXNpdmVzX2Jvb2wgPVxuIGZ1biA/dmFyX2RlY2xzIC0+IGZ1bmN0aW9uXG4gIHwgVFJVRSB8IEZBTFNFIC0+IGZhbHNlXG4gIHwgQ09NUEFSRV9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaGFzX21peCA/dmFyX2RlY2xzIGEgfHwgaGFzX21peCA/dmFyX2RlY2xzIGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgYm9vbF9oYXNfbWl4ID92YXJfZGVjbHMgYSB8fCBib29sX2hhc19taXggP3Zhcl9kZWNscyBiXG4gIHwgVU5fQk9PTF9PUCAoXywgKGEsIF8pKSAtPiBib29sX2hhc19taXggP3Zhcl9kZWNscyBhXG5cbmxldCByZWMgaXNfY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IENPTlNUIF8sIF8gLT4gdHJ1ZVxuICB8IElGIChhLCBiLCBjKSwgXyAtPiBib29sX2lzX2NvbnN0YW50IGEgJiYgaXNfY29uc3RhbnQgYiAmJiBpc19jb25zdGFudCBjXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gaXNfY29uc3RhbnQgYSAmJiBpc19jb25zdGFudCBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSB8IERJRkZfVE9LRU4gKGEsIF8pKSwgXyAtPlxuICAgIGlzX2NvbnN0YW50IGFcbiAgfCAoQUxHX1ZBUiBfIHwgU1RBVEVfQUxHX09QIF8gfCBUT0tFTl9JRCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyksIF8gLT4gZmFsc2VcblxuYW5kIGJvb2xfaXNfY29uc3RhbnQgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHRydWVcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBpc19jb25zdGFudCBhICYmIGlzX2NvbnN0YW50IGJcbiAgfCBCSU5fQk9PTF9PUCAoXywgYSwgYiksIF8gLT4gYm9vbF9pc19jb25zdGFudCBhICYmIGJvb2xfaXNfY29uc3RhbnQgYlxuICB8IFVOX0JPT0xfT1AgKF8sIGEpLCBfIC0+IGJvb2xfaXNfY29uc3RhbnQgYVxuXG5sZXQgcmVjIGlzX3RpbWVfaG9tb2dlbmVvdXMgPSBmdW5jdGlvblxuICB8IENPTlNUIF8sIF8gLT4gdHJ1ZVxuICB8IElGIChhLCBiLCBjKSwgXyAtPlxuICAgIGJvb2xfaXNfdGltZV9ob21vZ2VuZW91cyBhICYmIGlzX3RpbWVfaG9tb2dlbmVvdXMgYiAmJiBpc190aW1lX2hvbW9nZW5lb3VzIGNcbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPiBpc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSB8IERJRkZfVE9LRU4gKGEsIF8pKSwgXyAtPlxuICAgIGlzX3RpbWVfaG9tb2dlbmVvdXMgYVxuICB8ICggU1RBVEVfQUxHX09QXG4gICAgICAgICggT3BlcmF0b3IuRVZFTlRfVkFSIHwgT3BlcmF0b3IuQ1BVVElNRSB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSXG4gICAgICAgIHwgT3BlcmF0b3IuVE1BWF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUiApLFxuICAgICAgXyApXG4gIHwgQUxHX1ZBUiBfLCBfXG4gIHwgVE9LRU5fSUQgXywgX1xuICB8IEtBUFBBX0lOU1RBTkNFIF8sIF8gLT5cbiAgICB0cnVlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRJTUVfVkFSLCBfIC0+IGZhbHNlXG5cbmFuZCBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgPSBmdW5jdGlvblxuICB8IChUUlVFIHwgRkFMU0UpLCBfIC0+IHRydWVcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBpc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgaXNfdGltZV9ob21vZ2VuZW91cyBiXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+XG4gICAgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGEgJiYgYm9vbF9pc190aW1lX2hvbW9nZW5lb3VzIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2lzX3RpbWVfaG9tb2dlbmVvdXMgYVxuXG5sZXQgcmVjIGF1eF9leHRyYWN0X2NjIGFjYyA9IGZ1bmN0aW9uXG4gIHwgQklOX0FMR19PUCAoXywgYSwgYiksIF8gLT4gYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIGFjYyBhKSBiXG4gIHwgKFVOX0FMR19PUCAoXywgYSkgfCBESUZGX1RPS0VOIChhLCBfKSB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgKGEsIF8pKSwgXyAtPlxuICAgIGF1eF9leHRyYWN0X2NjIGFjYyBhXG4gIHwgKEFMR19WQVIgXyB8IENPTlNUIF8gfCBUT0tFTl9JRCBfIHwgU1RBVEVfQUxHX09QIF8pLCBfIC0+IGFjY1xuICB8IEtBUFBBX0lOU1RBTkNFIGksIF8gLT4gaSA6OiBhY2NcbiAgfCBJRiAoY29uZCwgeWVzLCBubyksIF8gLT5cbiAgICBhdXhfZXh0cmFjdF9jYyAoYXV4X2V4dHJhY3RfY2MgKGV4dHJhY3RfY2NfYm9vbCBhY2MgY29uZCkgeWVzKSBub1xuXG5hbmQgZXh0cmFjdF9jY19ib29sIGFjYyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gYWNjXG4gIHwgQklOX0JPT0xfT1AgKF8sIGEsIGIpLCBfIC0+IGV4dHJhY3RfY2NfYm9vbCAoZXh0cmFjdF9jY19ib29sIGFjYyBhKSBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gZXh0cmFjdF9jY19ib29sIGFjYyBhXG4gIHwgQ09NUEFSRV9PUCAoXywgYSwgYiksIF8gLT4gYXV4X2V4dHJhY3RfY2MgKGF1eF9leHRyYWN0X2NjIGFjYyBhKSBiXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIHggPSBhdXhfZXh0cmFjdF9jYyBbXSB4XG5sZXQgZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIHggPSBleHRyYWN0X2NjX2Jvb2wgW10geFxuXG5sZXQgc2V0dXBfYWxnX3ZhcnNfcmV2X2RlcCB0b2tzIHZhcnMgPVxuICBsZXQgaW5fdCA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgaW5fZSA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgdG9rc19kID0gQXJyYXkubWFrZSAoTmFtZWREZWNscy5zaXplIHRva3MpIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBsZXQgb3V0ID0gQXJyYXkubWFrZSAoQXJyYXkubGVuZ3RoIHZhcnMpIE9wZXJhdG9yLkRlcFNldC5lbXB0eSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBpIHggKF8sIHkpIC0+IGFkZF9kZXAgeCAoT3BlcmF0b3IuQUxHIGkpIHkpXG4gICAgKGluX3QsIGluX2UsIHRva3NfZCwgb3V0KSB2YXJzXG5cbmxldCByZWMgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzID1cbiAgZnVuY3Rpb25cbiAgfCAoQklOX0FMR19PUCAob3AsIGEsIGIpLCBwb3MpIGFzIHggLT5cbiAgICAobWF0Y2hcbiAgICAgICAoIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhLFxuICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGJcbiAgICAgICApXG4gICAgIHdpdGhcbiAgICB8IChDT05TVCBjMSwgXyksIChDT05TVCBjMiwgXykgLT4gQ09OU1QgKE5ici5vZl9iaW5fYWxnX29wIG9wIGMxIGMyKSwgcG9zXG4gICAgfCAoICgoICggQklOX0FMR19PUCBfIHwgVU5fQUxHX09QIF8gfCBTVEFURV9BTEdfT1AgXyB8IEtBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICAgfCBESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQUxHX1ZBUiBfXG4gICAgICAgICAgIHwgQ09OU1QgXyB8IElGIF8gKSxcbiAgICAgICAgICAgXyApIGFzIGEnKSxcbiAgICAgICAgKCggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICB8IERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF9cbiAgICAgICAgICAgfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICAgICBfICkgYXMgYicpICkgLT5cbiAgICAgIGlmIGEgPT0gYScgJiYgYiA9PSBiJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgQklOX0FMR19PUCAob3AsIGEnLCBiJyksIHBvcylcbiAgfCAoVU5fQUxHX09QIChvcCwgYSksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIGMsIF8gLT4gQ09OU1QgKE5ici5vZl91bl9hbGdfb3Agb3AgYyksIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBVTl9BTEdfT1AgKG9wLCBhJyksIHBvcylcbiAgfCAoRElGRl9UT0tFTiAoYSwgdCksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIF8sIF8gLT5cbiAgICAgICgqIHRoZSBkZXJpdmF0aXZlIG9mIGEgY29uc3RhbnQgaXMgemVybyAqKVxuICAgICAgQ09OU1QgTmJyLnplcm8sIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgSUYgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBBTEdfVkFSIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBESUZGX1RPS0VOIChhJywgdCksIHBvcylcbiAgfCAoRElGRl9LQVBQQV9JTlNUQU5DRSAoYSwgbSksIHBvcykgYXMgeCAtPlxuICAgIChtYXRjaFxuICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBhXG4gICAgIHdpdGhcbiAgICB8IENPTlNUIF8sIF8gLT5cbiAgICAgICgqIHRoZSBkZXJpdmF0aXZlIG9mIGEgY29uc3RhbnQgaXMgemVybyAqKVxuICAgICAgQ09OU1QgTmJyLnplcm8sIHBvc1xuICAgIHwgKCAoIERJRkZfVE9LRU4gXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEJJTl9BTEdfT1AgXyB8IFVOX0FMR19PUCBfXG4gICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IEFMR19WQVIgXyB8IElGIF8gKSxcbiAgICAgICAgXyApIGFzIGEnIC0+XG4gICAgICBpZiBhID09IGEnIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBESUZGX0tBUFBBX0lOU1RBTkNFIChhJywgbSksIHBvcylcbiAgfCBTVEFURV9BTEdfT1AgT3BlcmF0b3IuRU1BWF9WQVIsIHBvcyAtPlxuICAgICggQ09OU1RcbiAgICAgICAgKG1hdGNoIG1heF9ldmVudHMgd2l0aFxuICAgICAgICB8IFNvbWUgbiAtPiBOYnIuSSBuXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgICAgICBcIltFbWF4XSBjb25zdGFudCBpcyBldmFsdWF0ZWQgdG8gaW5maW5pdHlcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIE5ici5GIGluZmluaXR5KSxcbiAgICAgIHBvcyApXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLlRNQVhfVkFSLCBwb3MgLT5cbiAgICAoIENPTlNUXG4gICAgICAgIChtYXRjaCBtYXhfdGltZSB3aXRoXG4gICAgICAgIHwgU29tZSB0IC0+IE5ici5GIHRcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgICAgICAgICAgICAgIFwiW1RtYXhdIGNvbnN0YW50IGlzIGV2YWx1YXRlZCB0byBpbmZpbml0eVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTmJyLkYgaW5maW5pdHkpLFxuICAgICAgcG9zIClcbiAgfCAoIFNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5USU1FX1ZBUiB8IE9wZXJhdG9yLkVWRU5UX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSICksXG4gICAgICBfICkgYXMgeCAtPlxuICAgIHhcbiAgfCAoQUxHX1ZBUiBpLCBwb3MpIGFzIHggLT5cbiAgICBpZiBMaXN0Lm1lbSBpIHVwZGF0ZWRfdmFycyB0aGVuXG4gICAgICB4XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCB2YXJzLihpKSB3aXRoXG4gICAgICB8IF8sICgoKENPTlNUIF8gfCBBTEdfVkFSIF8pIGFzIHkpLCBfKSAtPiB5LCBwb3NcbiAgICAgIHwgKCBfLFxuICAgICAgICAgICggKCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICAgICAgfCBUT0tFTl9JRCBfIHwgSUYgXyB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IERJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgeFxuICAgIClcbiAgfCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyksIF8pIGFzIHggLT4geFxuICB8IElGIChjb25kLCB5ZXMsIG5vKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgcHJvcGFnYXRlX2NvbnN0YW50X2Jvb2wgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnNcbiAgICAgICAgIH52YXJzIGNvbmRcbiAgICAgd2l0aFxuICAgIHwgVFJVRSwgXyAtPlxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIHllc1xuICAgIHwgRkFMU0UsIF8gLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFycyB+dmFycyBub1xuICAgIHwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgY29uZCcgLT5cbiAgICAgICggSUZcbiAgICAgICAgICAoIGNvbmQnLFxuICAgICAgICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzXG4gICAgICAgICAgICAgIH52YXJzIHllcyxcbiAgICAgICAgICAgIHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgICB+dmFycyBubyApLFxuICAgICAgICBwb3MgKSlcblxuYW5kIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzID1cbiAgZnVuY3Rpb25cbiAgfCAoKFRSVUUgfCBGQUxTRSksIF8pIGFzIHggLT4geFxuICB8IFVOX0JPT0xfT1AgKG9wLCBhKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICB+dmFycyBhLFxuICAgICAgICAgb3AgKVxuICAgICB3aXRoXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk5PVCAtPiBGQUxTRSwgcG9zXG4gICAgfCAoRkFMU0UsIF8pLCBPcGVyYXRvci5OT1QgLT4gVFJVRSwgcG9zXG4gICAgfCAoKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXykgYXMgYScpLCBfIC0+XG4gICAgICBVTl9CT09MX09QIChvcCwgYScpLCBwb3MpXG4gIHwgQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgKG1hdGNoXG4gICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICB+dmFycyBhLFxuICAgICAgICAgb3AgKVxuICAgICB3aXRoXG4gICAgfCAoVFJVRSwgXyksIE9wZXJhdG9yLk9SIC0+IFRSVUUsIHBvc1xuICAgIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuQU5EIC0+IEZBTFNFLCBwb3NcbiAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuQU5EIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuT1IgLT5cbiAgICAgIHByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzXG4gICAgICAgIGJcbiAgICB8ICgoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSBhcyBhJyksIF8gLT5cbiAgICAgIChtYXRjaFxuICAgICAgICAgKCBwcm9wYWdhdGVfY29uc3RhbnRfYm9vbCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgICAgICAgICAgIH52YXJzIGIsXG4gICAgICAgICAgIG9wIClcbiAgICAgICB3aXRoXG4gICAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuT1IgLT4gVFJVRSwgcG9zXG4gICAgICB8IChGQUxTRSwgXyksIE9wZXJhdG9yLkFORCAtPiBGQUxTRSwgcG9zXG4gICAgICB8IChUUlVFLCBfKSwgT3BlcmF0b3IuQU5EIHwgKEZBTFNFLCBfKSwgT3BlcmF0b3IuT1IgLT4gYSdcbiAgICAgIHwgKCgoQklOX0JPT0xfT1AgXyB8IENPTVBBUkVfT1AgXyB8IFVOX0JPT0xfT1AgXyksIF8pIGFzIGInKSwgXyAtPlxuICAgICAgICBCSU5fQk9PTF9PUCAob3AsIGEnLCBiJyksIHBvcykpXG4gIHwgQ09NUEFSRV9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgYScgPVxuICAgICAgcHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50cyB+dXBkYXRlZF92YXJzIH52YXJzIGFcbiAgICBpblxuICAgIGxldCBiJyA9XG4gICAgICBwcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzIH51cGRhdGVkX3ZhcnMgfnZhcnMgYlxuICAgIGluXG4gICAgKG1hdGNoIGEnLCBiJyB3aXRoXG4gICAgfCAoQ09OU1QgbjEsIF8pLCAoQ09OU1QgbjIsIF8pIC0+XG4gICAgICBpZiBOYnIub2ZfY29tcGFyZV9vcCBvcCBuMSBuMiB0aGVuXG4gICAgICAgIFRSVUUsIHBvc1xuICAgICAgZWxzZVxuICAgICAgICBGQUxTRSwgcG9zXG4gICAgfCAoICggKCBESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBESUZGX1RPS0VOIF8gfCBCSU5fQUxHX09QIF8gfCBVTl9BTEdfT1AgX1xuICAgICAgICAgIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfIHwgVE9LRU5fSUQgXyB8IENPTlNUIF9cbiAgICAgICAgICB8IElGIF8gKSxcbiAgICAgICAgICBfICksXG4gICAgICAgIF8gKSAtPlxuICAgICAgQ09NUEFSRV9PUCAob3AsIGEnLCBiJyksIHBvcylcblxubGV0IHJlYyBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgKChpbl90LCBfLCBfLCBkZXBzKSBhcyB2YXJzX2RlcHMpID0gZnVuY3Rpb25cbiAgfCBCSU5fQUxHX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IChVTl9BTEdfT1AgKF8sIGEpIHwgRElGRl9UT0tFTiAoYSwgXykgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChhLCBfKSksIF8gLT5cbiAgICBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGFcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfKSwgXyAtPiBmYWxzZVxuICB8IFNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiwgXyAtPiB0cnVlXG4gIHwgU1RBVEVfQUxHX09QIE9wZXJhdG9yLkVWRU5UX1ZBUiwgXyAtPiBub3Qgb25seV90aW1lXG4gIHwgKCBTVEFURV9BTEdfT1BcbiAgICAgICAgKCBPcGVyYXRvci5DUFVUSU1FIHwgT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIgfCBPcGVyYXRvci5FTUFYX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSICksXG4gICAgICBfICkgLT5cbiAgICBmYWxzZVxuICB8IEFMR19WQVIgaSwgXyAtPlxuICAgIGxldCByZWMgYXV4IGogPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0Lm1lbSAoT3BlcmF0b3IuQUxHIGopIGluX3RcbiAgICAgIHx8IE9wZXJhdG9yLkRlcFNldC5leGlzdHNcbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBPcGVyYXRvci5BTEcgayAtPiBhdXgga1xuICAgICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBfIHwgT3BlcmF0b3IuTU9ESUYgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgZGVwcy4oailcbiAgICBpblxuICAgIGF1eCBpXG4gIHwgSUYgKGNvbmQsIHllcywgbm8pLCBfIC0+XG4gICAgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGNvbmRcbiAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIHllc1xuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgbm9cblxuYW5kIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyA9IGZ1bmN0aW9uXG4gIHwgKFRSVUUgfCBGQUxTRSksIF8gLT4gZmFsc2VcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgIHx8IGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYlxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGJvb2xfaGFzX3Byb2dyZXNzX2RlcCB+b25seV90aW1lIHZhcnNfZGVwcyBhXG4gICAgfHwgYm9vbF9oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGJcbiAgfCBVTl9CT09MX09QIChfLCBhKSwgXyAtPiBib29sX2hhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuXG5sZXQgcmVjIGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgPSBmdW5jdGlvblxuICB8IFRSVUUgfCBGQUxTRSAtPiBmYWxzZVxuICB8IFVOX0JPT0xfT1AgKE9wZXJhdG9yLk5PVCwgKGEsIF8pKSAtPiBpc19lcXVhbGl0eV90ZXN0X3RpbWUgdmFyc19kZXBzIGFcbiAgfCBCSU5fQk9PTF9PUCAoXywgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgaXNfZXF1YWxpdHlfdGVzdF90aW1lIHZhcnNfZGVwcyBhIHx8IGlzX2VxdWFsaXR5X3Rlc3RfdGltZSB2YXJzX2RlcHMgYlxuICB8IENPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGxldCBvbmx5X3RpbWUgPSB0cnVlIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLkVRVUFMXG4gICAgICB3aGVuIGhhc19wcm9ncmVzc19kZXAgfm9ubHlfdGltZSB2YXJzX2RlcHMgYVxuICAgICAgICAgICB8fCBoYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWUgdmFyc19kZXBzIGIgLT5cbiAgICAgIHRydWVcbiAgICB8IE9wZXJhdG9yLkVRVUFMIHwgT3BlcmF0b3IuU01BTExFUiB8IE9wZXJhdG9yLkdSRUFURVIgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgICBmYWxzZSlcblxubGV0IHJlYyBtYXBfb25fbWl4dHVyZSBmID0gZnVuY3Rpb25cbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBwIC0+IGYgaSwgcFxuICB8IERJRkZfS0FQUEFfSU5TVEFOQ0UgXywgXyAtPlxuICAgIGZhaWx3aXRoXG4gICAgICBcIkFsZ19leHByLm1hcF9vbl9taXh0dXJlIGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIG9mIERJRkZfS0FQUEFfSU5TVEFOQ0VcIlxuICB8IChDT05TVCBfLCBfKSBhcyB4IC0+IHhcbiAgfCAoQUxHX1ZBUiBfLCBfKSBhcyB4IC0+IHhcbiAgfCAoVE9LRU5fSUQgXywgXykgYXMgeCAtPiB4XG4gIHwgRElGRl9UT0tFTiAoYSwgaSksIHAgLT4gRElGRl9UT0tFTiAobWFwX29uX21peHR1cmUgZiBhLCBpKSwgcFxuICB8IChTVEFURV9BTEdfT1AgXywgXykgYXMgeCAtPiB4XG4gIHwgQklOX0FMR19PUCAobywgeCwgeSksIHAgLT5cbiAgICBCSU5fQUxHX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcbiAgfCBVTl9BTEdfT1AgKG8sIHgpLCBwIC0+IFVOX0FMR19PUCAobywgbWFwX29uX21peHR1cmUgZiB4KSwgcFxuICB8IElGIChiLCB4LCB5KSwgcCAtPlxuICAgIElGIChtYXBfYm9vbF9vbl9taXh0dXJlIGYgYiwgbWFwX29uX21peHR1cmUgZiB4LCBtYXBfb25fbWl4dHVyZSBmIHkpLCBwXG5cbmFuZCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgPSBmdW5jdGlvblxuICB8IChUUlVFLCBfKSBhcyB4IC0+IHhcbiAgfCAoRkFMU0UsIF8pIGFzIHggLT4geFxuICB8IEJJTl9CT09MX09QIChvLCB4LCB5KSwgcCAtPlxuICAgIEJJTl9CT09MX09QIChvLCBtYXBfYm9vbF9vbl9taXh0dXJlIGYgeCwgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHkpLCBwXG4gIHwgVU5fQk9PTF9PUCAobywgeCksIHAgLT4gVU5fQk9PTF9PUCAobywgbWFwX2Jvb2xfb25fbWl4dHVyZSBmIHgpLCBwXG4gIHwgQ09NUEFSRV9PUCAobywgeCwgeSksIHAgLT5cbiAgICBDT01QQVJFX09QIChvLCBtYXBfb25fbWl4dHVyZSBmIHgsIG1hcF9vbl9taXh0dXJlIGYgeSksIHBcblxubGV0IHJlYyBmb2xkX29uX21peHR1cmUgZiB4ID0gZnVuY3Rpb25cbiAgfCBLQVBQQV9JTlNUQU5DRSBpLCBfIC0+IGYgeCBpXG4gIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfLCBfIC0+XG4gICAgZmFpbHdpdGhcbiAgICAgIFwiQWxnX2V4cHIuZm9sZF9vbl9taXh0dXJlIGRvZXNuJ3Qga25vdyB3aGF0IHRvIGRvIG9mIERJRkZfS0FQUEFfSU5TVEFOQ0VcIlxuICB8IENPTlNUIF8sIF8gLT4geFxuICB8IEFMR19WQVIgXywgXyAtPiB4XG4gIHwgVE9LRU5fSUQgXywgXyAtPiB4XG4gIHwgRElGRl9UT0tFTiAoYSwgXyksIF8gLT4gZm9sZF9vbl9taXh0dXJlIGYgeCBhXG4gIHwgU1RBVEVfQUxHX09QIF8sIF8gLT4geFxuICB8IEJJTl9BTEdfT1AgKF8sIGEsIGIpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IGEpIGJcbiAgfCBVTl9BTEdfT1AgKF8sIGEpLCBfIC0+IGZvbGRfb25fbWl4dHVyZSBmIHggYVxuICB8IElGIChiLCB1LCB2KSwgXyAtPlxuICAgIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgKGZvbGRfb25fbWl4dHVyZSBmIChmb2xkX29uX21peHR1cmUgZiB4IHUpIHYpIGJcblxuYW5kIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCA9IGZ1bmN0aW9uXG4gIHwgVFJVRSwgXyAtPiB4XG4gIHwgRkFMU0UsIF8gLT4geFxuICB8IEJJTl9CT09MX09QIChfLCBhLCBiKSwgXyAtPlxuICAgIGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgKGZvbGRfYm9vbF9vbl9taXh0dXJlIGYgeCBhKSBiXG4gIHwgVU5fQk9PTF9PUCAoXywgYSksIF8gLT4gZm9sZF9ib29sX29uX21peHR1cmUgZiB4IGFcbiAgfCBDT01QQVJFX09QIChfLCBhLCBiKSwgXyAtPiBmb2xkX29uX21peHR1cmUgZiAoZm9sZF9vbl9taXh0dXJlIGYgeCBhKSBiXG5cbmxldCByZWMgZXF1YWwgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgKEJJTl9BTEdfT1AgKG9wYSwgYTEsIGEyKSwgXyksIChCSU5fQUxHX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4gIHwgKCAoQklOX0FMR19PUCBfLCBfKSxcbiAgICAgICggKCBVTl9BTEdfT1AgXyB8IFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyApLFxuICAgICAgICBfICkgKVxuICB8ICggKCAoIFVOX0FMR19PUCBfIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBLQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfICksXG4gICAgICAgIF8gKSxcbiAgICAgIChCSU5fQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChVTl9BTEdfT1AgKG9wYSwgYTEpLCBfKSwgKFVOX0FMR19PUCAob3BiLCBiMSksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsIGExIGIxXG4gIHwgKCAoVU5fQUxHX09QIF8sIF8pLFxuICAgICAgKCAoIFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgIHwgSUYgXyApLFxuICAgICAgICBfICkgKVxuICB8ICggKCAoIFNUQVRFX0FMR19PUCBfIHwgQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfXG4gICAgICAgIHwgSUYgXyApLFxuICAgICAgICBfICksXG4gICAgICAoVU5fQUxHX09QIF8sIF8pICkgLT5cbiAgICBmYWxzZVxuICB8IChTVEFURV9BTEdfT1Agb3BhLCBfKSwgKFNUQVRFX0FMR19PUCBvcGIsIF8pIC0+IG9wYSA9IG9wYlxuICB8ICggKFNUQVRFX0FMR19PUCBfLCBfKSxcbiAgICAgICgoQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pIClcbiAgfCAoICgoQUxHX1ZBUiBfIHwgS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLFxuICAgICAgKFNUQVRFX0FMR19PUCBfLCBfKSApIC0+XG4gICAgZmFsc2VcbiAgfCAoQUxHX1ZBUiBpZDEsIF8pLCAoQUxHX1ZBUiBpZDIsIF8pIC0+IGlkMSA9IGlkMlxuICB8IChBTEdfVkFSIF8sIF8pLCAoKEtBUFBBX0lOU1RBTkNFIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoS0FQUEFfSU5TVEFOQ0UgXyB8IFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLCAoQUxHX1ZBUiBfLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEtBUFBBX0lOU1RBTkNFIG1peDEsIF8pLCAoS0FQUEFfSU5TVEFOQ0UgbWl4MiwgXykgLT4gbWl4MSA9IG1peDJcbiAgfCAoS0FQUEFfSU5TVEFOQ0UgXywgXyksICgoVE9LRU5fSUQgXyB8IENPTlNUIF8gfCBJRiBfKSwgXylcbiAgfCAoKFRPS0VOX0lEIF8gfCBDT05TVCBfIHwgSUYgXyksIF8pLCAoS0FQUEFfSU5TVEFOQ0UgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChUT0tFTl9JRCBpZDEsIF8pLCAoVE9LRU5fSUQgaWQyLCBfKSAtPiBpZDEgPSBpZDJcbiAgfCAoVE9LRU5fSUQgXywgXyksICgoQ09OU1QgXyB8IElGIF8pLCBfKVxuICB8ICgoQ09OU1QgXyB8IElGIF8pLCBfKSwgKFRPS0VOX0lEIF8sIF8pIC0+XG4gICAgZmFsc2VcbiAgfCAoQ09OU1QgYzEsIF8pLCAoQ09OU1QgYzIsIF8pIC0+IE5ici5pc19lcXVhbCBjMSBjMlxuICB8IChDT05TVCBfLCBfKSwgKElGIF8sIF8pIHwgKElGIF8sIF8pLCAoQ09OU1QgXywgXykgLT4gZmFsc2VcbiAgfCAoSUYgKGNvbmRhLCBhMSwgYTIpLCBfKSwgKElGIChjb25kYiwgYjEsIGIyKSwgXykgLT5cbiAgICBlcXVhbF9ib29sIGNvbmRhIGNvbmRiICYmIGVxdWFsIGExIGIxICYmIGVxdWFsIGEyIGIyXG4gIHwgKChESUZGX1RPS0VOIF8gfCBESUZGX0tBUFBBX0lOU1RBTkNFIF8pLCBfKSwgX1xuICB8IF8sICgoRElGRl9UT0tFTiBfIHwgRElGRl9LQVBQQV9JTlNUQU5DRSBfKSwgXykgLT5cbiAgICBhc3NlcnQgZmFsc2VcblxuYW5kIGVxdWFsX2Jvb2wgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgKFRSVUUsIF8pLCAoVFJVRSwgXykgLT4gdHJ1ZVxuICB8IChUUlVFLCBfKSwgKChGQUxTRSB8IEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKVxuICB8ICgoRkFMU0UgfCBCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXyksIChUUlVFLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKEZBTFNFLCBfKSwgKEZBTFNFLCBfKSAtPiB0cnVlXG4gIHwgKEZBTFNFLCBfKSwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfIHwgVU5fQk9PTF9PUCBfKSwgXylcbiAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8gfCBVTl9CT09MX09QIF8pLCBfKSwgKEZBTFNFLCBfKSAtPlxuICAgIGZhbHNlXG4gIHwgKFVOX0JPT0xfT1AgKG9wYSwgYSksIF8pLCAoVU5fQk9PTF9PUCAob3BiLCBiKSwgXykgLT5cbiAgICBvcGEgPSBvcGIgJiYgZXF1YWxfYm9vbCBhIGJcbiAgfCAoVU5fQk9PTF9PUCBfLCBfKSwgKChCSU5fQk9PTF9PUCBfIHwgQ09NUEFSRV9PUCBfKSwgXylcbiAgfCAoKEJJTl9CT09MX09QIF8gfCBDT01QQVJFX09QIF8pLCBfKSwgKFVOX0JPT0xfT1AgXywgXykgLT5cbiAgICBmYWxzZVxuICB8IChCSU5fQk9PTF9PUCAob3BhLCBhMSwgYTIpLCBfKSwgKEJJTl9CT09MX09QIChvcGIsIGIxLCBiMiksIF8pIC0+XG4gICAgb3BhID0gb3BiICYmIGVxdWFsX2Jvb2wgYTEgYjEgJiYgZXF1YWxfYm9vbCBhMiBiMlxuICB8IChCSU5fQk9PTF9PUCBfLCBfKSwgKENPTVBBUkVfT1AgXywgXykgfCAoQ09NUEFSRV9PUCBfLCBfKSwgKEJJTl9CT09MX09QIF8sIF8pXG4gICAgLT5cbiAgICBmYWxzZVxuICB8IChDT01QQVJFX09QIChvcGEsIGExLCBhMiksIF8pLCAoQ09NUEFSRV9PUCAob3BiLCBiMSwgYjIpLCBfKSAtPlxuICAgIG9wYSA9IG9wYiAmJiBlcXVhbCBhMSBiMSAmJiBlcXVhbCBhMiBiMlxuIiwiKCoqXG4gICogY29udGFjdF9tYXAubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCAmIEx5IEtpbSBRdXllbiwgcHJvamVjdCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogQ3JlYXRpb246IDIwMTcsIHRoZSAyM3JkIG9mIEp1bmVcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNSAyMDE3PlxuICAqXG4gICogQ29tcHV0ZSBzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50IGluIGNvbnRhY3QgbWFwXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGVcbiAgKiBlbiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuXG4gICogQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHQgPSAoTW9kcy5JbnRTZXQudCAqIE1vZHMuSW50MlNldC50KSBhcnJheSBhcnJheVxuXG5sZXQgdG9feW9qc29uIGEgPVxuICBsZXQgaW50bHNfdG9fanNvbiBhID1cbiAgICBgTGlzdCAoTW9kcy5JbnRTZXQuZm9sZCAoZnVuIGIgYWNjIC0+IGBJbnQgYiA6OiBhY2MpIGEgW10pXG4gIGluXG4gIGxldCBwYWlybHNfdG9fanNvbiBhID1cbiAgICBgTGlzdFxuICAgICAgKE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAoZnVuIChiLCBjKSBhY2MgLT4gYExpc3QgWyBgSW50IGI7IGBJbnQgYyBdIDo6IGFjYylcbiAgICAgICAgIGEgW10pXG4gIGluXG4gIGxldCBhcnJheV90b19qc29uIGEgPVxuICAgIGBMaXN0XG4gICAgICAoQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIGFjYyAoYSwgYikgLT4gYExpc3QgWyBpbnRsc190b19qc29uIGE7IHBhaXJsc190b19qc29uIGIgXSA6OiBhY2MpXG4gICAgICAgICBbXSBhKVxuICBpblxuICBgTGlzdCAoQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjIHQgLT4gYXJyYXlfdG9fanNvbiB0IDo6IGFjYykgW10gYSlcblxubGV0IG9mX3lvanNvbiAoYSA6IFlvanNvbi5CYXNpYy50KSA9XG4gIGxldCBpbnRsc19vZl9qc29uIGEgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICB8IGBJbnQgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhY2NcbiAgICAgICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcImJsYTFcIiwgeCkpKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgYVxuICBpblxuICBsZXQgcGFpcmxzX29mX2pzb24gYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgYExpc3QgWyBgSW50IGI7IGBJbnQgYyBdIC0+IE1vZHMuSW50MlNldC5hZGQgKGIsIGMpIGFjY1xuICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiYmxhMlwiLCB4KSkpXG4gICAgICBNb2RzLkludDJTZXQuZW1wdHkgYVxuICBpblxuICBsZXQgYXJyYXlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgTGlzdCBscyAtPlxuICAgICAgKG1hdGNoIGxzIHdpdGhcbiAgICAgIHwgWyBgTGlzdCBhOyBgTGlzdCBiIF0gLT4gaW50bHNfb2ZfanNvbiBhLCBwYWlybHNfb2ZfanNvbiBiXG4gICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGEzXCIsIHgpKVxuICBpblxuICBtYXRjaCBhIHdpdGhcbiAgfCBgTGlzdCBhcnJheTEgLT5cbiAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgYExpc3QgYXJyYXkyIC0+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IGFycmF5X29mX2pzb24gYXJyYXkyXG4gICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJibGE0XCIsIHgpKSlcbiAgICAgIGFycmF5MVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBjb250YWN0IG1hcFwiLCB4KSlcblxubGV0IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHNpZ3MgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gYWcgZiBpbnRmIC0+XG4gICAgICAgICBpZiAobm90IChTaWduYXR1cmUuaXNfY291bnRlcl9hZ2VudCBzaWdzIGFnKSkgfHwgbm9Db3VudGVycyB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiUlYWdlbnQ6QCAlYShAWyVhQF0pQF1cIlxuICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICBhZ1xuICAgICAgICAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIHMgZiAoaXMsIGxzKSAtPlxuICAgICAgICAgICAgICAgICAgaWYgU2lnbmF0dXJlLnNpdGVfaXNfY291bnRlciBzaWdzIGFnIHMgJiYgbm90IG5vQ291bnRlcnMgdGhlblxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnKVxuICAgICAgICAgICAgICAgICAgICAgIHNcbiAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2NvdW50ZXIgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhJXQldEBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgICAgICAgICAgICBzXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgKE1vZHMuSW50U2V0LmlzX2VtcHR5IGlzKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7QFslYUBdfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBwLnNldCBNb2RzLkludFNldC5lbGVtZW50cyBQcC5zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZyBzKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcylcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCAoTW9kcy5JbnQyU2V0LmlzX2VtcHR5IGxzKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJALFtAWyVhQF1dXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50MlNldC5lbGVtZW50cyBQcC5zcGFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAoYWQsIHNkKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLiVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWQpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzKSkpXG4gICAgICAgICAgICAgaW50ZikpXG4gICAgY1xuXG5sZXQgY3V0X2F0IGkgcycgbCA9XG4gIGxldCByZWMgYXV4X2N1dF9hdCBvID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IE5vbmVcbiAgICB8ICgoKGosIHMpLCBfKSBhcyBoKSA6OiB0IC0+XG4gICAgICBpZiBpID0gaiB0aGVuXG4gICAgICAgIGlmIHMgPj0gcycgdGhlblxuICAgICAgICAgIE5vbmVcbiAgICAgICAgZWxzZVxuICAgICAgICAgIFNvbWUgKGggOjogbylcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4X2N1dF9hdCAoaCA6OiBvKSB0XG4gIGluXG4gIGF1eF9jdXRfYXQgW10gbFxuXG5sZXQgZ2V0X2N5Y2xlcyBjb250YWN0X21hcCA9XG4gIGxldCByZWMgZGZzICgoa25vd24sIG91dCkgYXMgYWNjKSBwYXRoIGkgbGFzdF9zID1cbiAgICBpZiBNb2RzLkludFNldC5tZW0gaSBrbm93biB0aGVuIChcbiAgICAgIG1hdGNoIGN1dF9hdCBpIGxhc3RfcyBwYXRoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSB4IC0+IGtub3duLCB4IDo6IG91dFxuICAgICkgZWxzZSAoXG4gICAgICBsZXQga25vd24nID0gTW9kcy5JbnRTZXQuYWRkIGkga25vd24gaW5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBzIGFjYyAoXywgbCkgLT5cbiAgICAgICAgICBpZiBzID0gbGFzdF9zIHRoZW5cbiAgICAgICAgICAgIGFjY1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gKCh0eSwgcycpIGFzIHgpIGFjYyAtPiBkZnMgYWNjICgoKGksIHMpLCB4KSA6OiBwYXRoKSB0eSBzJylcbiAgICAgICAgICAgICAgbCBhY2MpXG4gICAgICAgIChrbm93bicsIG91dCkgY29udGFjdF9tYXAuKGkpXG4gICAgKVxuICBpblxuICBsZXQgcmVjIHNjYW4gKChrbm93biwgb3V0KSBhcyBhY2MpIGkgPVxuICAgIGlmIGkgPCAwIHRoZW5cbiAgICAgIG91dFxuICAgIGVsc2VcbiAgICAgIHNjYW5cbiAgICAgICAgKGlmIE1vZHMuSW50U2V0Lm1lbSBpIGtub3duIHRoZW5cbiAgICAgICAgICAgYWNjXG4gICAgICAgICBlbHNlXG4gICAgICAgICAgIGRmcyBhY2MgW10gaSAoLTEpKVxuICAgICAgICAocHJlZCBpKVxuICBpblxuICBzY2FuIChNb2RzLkludFNldC5lbXB0eSwgW10pIChBcnJheS5sZW5ndGggY29udGFjdF9tYXAgLSAxKVxuXG5sZXQgcHJpbnRfY3ljbGVzIHNpZ3MgZm9ybSBjb250YWN0X21hcCA9XG4gIGxldCBvID0gZ2V0X2N5Y2xlcyBjb250YWN0X21hcCBpblxuICBQcC5saXN0IFBwLnNwYWNlXG4gICAgKFBwLmxpc3QgUHAuZW1wdHkgKGZ1biBmICgoYWcsIHMpLCAoYWcnLCBzJykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWEtJWEuXCJcbiAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICBhZ1xuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZylcbiAgICAgICAgICAgc1xuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZycpXG4gICAgICAgICAgIHMnKSlcbiAgICBmb3JtIG9cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMyBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2hhcmluZ19sZXZlbCA9IE5vX3NoYXJpbmcgfCBDb21wYXRpYmxlX3BhdHRlcm5zIHwgTWF4X3NoYXJpbmdcblxubGV0IHNoYXJpbmdfbGV2ZWxfb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwibm9fc2hhcmluZ1wiIC0+IE5vX3NoYXJpbmdcbiAgfCBgU3RyaW5nIFwiY29tcGF0aWJsZV9wYXR0ZXJuc1wiIC0+IENvbXBhdGlibGVfcGF0dGVybnNcbiAgfCBgU3RyaW5nIFwibWF4X3NoYXJpbmdcIiAtPiBNYXhfc2hhcmluZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHNoYXJpbmdfbGV2ZWxcIiwgeCkpXG5cbmxldCB3cml0ZV9zaGFyaW5nX2xldmVsIG9iID0gZnVuY3Rpb25cbiAgfCBOb19zaGFyaW5nIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJub19zaGFyaW5nXCJcbiAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgb2IgXCJjb21wYXRpYmxlX3BhdHRlcm5zXCJcbiAgfCBNYXhfc2hhcmluZyAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIFwibWF4X3NoYXJpbmdcIlxuXG5sZXQgc3RyaW5nX29mX3NoYXJpbmdfbGV2ZWwgP2xlbjooXyA9IDEwMjQpID0gZnVuY3Rpb25cbiAgfCBOb19zaGFyaW5nIC0+IFwiXFxcIm5vX3NoYXJpbmdcXFwiXCJcbiAgfCBDb21wYXRpYmxlX3BhdHRlcm5zIC0+IFwiXFxcImNvbXBhdGlibGVfcGF0dGVybnNcXFwiXCJcbiAgfCBNYXhfc2hhcmluZyAtPiBcIlxcXCJtYXhfc2hhcmluZ1xcXCJcIlxuXG5sZXQgcmVhZF9zaGFyaW5nX2xldmVsIHAgbGIgPVxuICBzaGFyaW5nX2xldmVsX29mX3lvanNvbiAoWW9qc29uLkJhc2ljLmZyb21fbGV4YnVmIH5zdHJlYW06dHJ1ZSBwIGxiKVxuXG5sZXQgc2hhcmluZ19sZXZlbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2hhcmluZ19sZXZlbCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIGxpbmsgPSBVblNwZWMgfCBGcmVlIHwgTGluayBvZiBpbnQgKiBpbnQgICgqKiBub2RlX2lkLCBzaXRlX2lkICopXG5cbnR5cGUgY2MgPSB7XG4gIG5vZGVzX2J5X3R5cGU6IGludCBsaXN0IGFycmF5O1xuICBub2RlczogKGxpbmsgKiBpbnQpIGFycmF5IE1vZHMuSW50TWFwLnQ7XG4gICgqcGF0dGVybiBncmFwaCBpZCAtPiBbfC4uLiAobGlua19qLHN0YXRlX2opLi4ufF0gaS5lIGFnZW50X2lkIG9uIHNpdGVfaiBoYXNcbiAgICBhIGxpbmsgbGlua19qIGFuZCBpbnRlcm5hbCBzdGF0ZSBzdGF0ZV9qICgtMSBtZWFucyBhbnkpICopXG4gIHJlY29nbl9uYXY6IE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi50O1xufVxuKCoqIFRoZSBsaW5rIG9mIHNpdGUgayBvZiBub2RlIGkgaXMgW2ZzdCBub2RlcyhpKS4oayldLlxuXG4gICAgVGhlIGludGVybmFsIHN0YXRlIG9mIHNpdGUgayBvZiBub2RlIGkgaXMgW3NuZCBub2RlcyhpKS4oayldLiBBXG4gICAgbmVnYXRpdmUgbnVtYmVyIG1lYW5zIFVuU3BlYy4gKilcblxudHlwZSB0ID0gY2NcbnR5cGUgaWQgPSBpbnRcblxubGV0IGRlYnVnX3ByaW50X2lkIGZtdCBpZCA9IEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVkXCIgaWRcbmxldCBzaXplX29mX2NjIGNjID0gTW9kcy5JbnRNYXAuc2l6ZSBjYy5ub2Rlc1xubGV0IGNvbXBhcmVfY2Fub25pY2FscyBjYyBjYycgPSBNb2RzLmludF9jb21wYXJlIGNjIGNjJ1xubGV0IGlzX2VxdWFsX2Nhbm9uaWNhbHMgY2MgY2MnID0gY29tcGFyZV9jYW5vbmljYWxzIGNjIGNjJyA9IDBcbmxldCBoYXNoX3ByaW1lID0gMjlcblxubGV0IGNvYXJzZV9oYXNoIGNjID1cbiAgbGV0IHBsdXNfaW50ZXJuYWwgYWNjIHMgaSA9XG4gICAgaWYgaSA8IDAgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgVG9vbHMuY2FudG9yX3BhaXJpbmcgKHN1Y2MgcykgKHN1Y2MgaSkgKyBhY2NcbiAgaW5cbiAgbGV0IG5vZGVfc2hhcGUgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gbiBlIGFjYyAtPlxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgKGZ1biBzIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBVblNwZWMsIGkgLT4gcGx1c19pbnRlcm5hbCBhY2MgcyBpXG4gICAgICAgICAgICB8IEZyZWUsIGkgLT4gcGx1c19pbnRlcm5hbCAoMyArIChzICogMykgKyBhY2MpIHMgaVxuICAgICAgICAgICAgfCBMaW5rIChuJywgcycpLCBpIC0+XG4gICAgICAgICAgICAgIGxldCBhY2MnID0gcGx1c19pbnRlcm5hbCBhY2MgcyBpIGluXG4gICAgICAgICAgICAgIGxldCBleHRyYSA9IFRvb2xzLmNhbnRvcl9wYWlyaW5nICgxICsgbWluIHMgcycpICgxICsgbWF4IHMgcycpIGluXG4gICAgICAgICAgICAgIGlmIChuID0gbicgJiYgcyA8IHMnKSB8fCBuIDwgbicgdGhlblxuICAgICAgICAgICAgICAgIChleHRyYSAqIDcpICsgYWNjJ1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICBhY2MgZSlcbiAgICAgIGNjLm5vZGVzIDBcbiAgaW5cbiAgQXJyYXkuZm9sZF9yaWdodFxuICAgIChmdW4gbCBhY2MgLT4gTGlzdC5sZW5ndGggbCArIChoYXNoX3ByaW1lICogYWNjKSlcbiAgICBjYy5ub2Rlc19ieV90eXBlIG5vZGVfc2hhcGVcblxubGV0IGlkX3RvX3lvanNvbiBjYyA9IGBJbnQgY2NcblxubGV0IGlkX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBjYyAtPiBjY1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgcGF0dGVybiBpZFwiLCB4KSlcblxubW9kdWxlIFNldCA9IE1vZHMuSW50U2V0XG5tb2R1bGUgTWFwID0gTW9kcy5JbnRNYXBcblxubW9kdWxlIE9ic01hcCA9IHN0cnVjdFxuICBpbmNsdWRlIE1vZHMuRHluQXJyYXlcblxuICBsZXQgZHVtbXkgeCA9IG1ha2UgMCB4XG5lbmRcblxubGV0IGVtcHR5X2NjIHNpZ3MgPVxuICBsZXQgbmJ0ID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lncykgW10gaW5cbiAgeyBub2Rlc19ieV90eXBlID0gbmJ0OyByZWNvZ25fbmF2ID0gW107IG5vZGVzID0gTW9kcy5JbnRNYXAuZW1wdHkgfVxuXG5sZXQgcmF3X2ZpbmRfdHkgdHlzIGlkID1cbiAgbGV0IHJlYyBhdXggaSA9XG4gICAgYXNzZXJ0IChpID49IDApO1xuICAgIGlmIExpc3QubWVtIGlkIHR5cy4oaSkgdGhlblxuICAgICAgaVxuICAgIGVsc2VcbiAgICAgIGF1eCAocHJlZCBpKVxuICBpblxuICBhdXggKEFycmF5Lmxlbmd0aCB0eXMgLSAxKVxuXG5sZXQgZmluZF90eSBjYyBpZCA9IHJhd19maW5kX3R5IGNjLm5vZGVzX2J5X3R5cGUgaWRcblxubGV0IGFkZF9vcmlnaW4gZGVwcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBkZXBzXG4gIHwgU29tZSB4IC0+IE9wZXJhdG9yLkRlcFNldC5hZGQgeCBkZXBzXG5cbmxldCByZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIGNjID0gY2MucmVjb2duX25hdlxuXG4oKiogRXJyb3JzICopXG5sZXQgYWxyZWFkeV9zcGVjaWZpZWQgP3NpZ3MgeCBpID1cbiAgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJTaXRlICVhIG9mIGFnZW50ICVhIGFscmVhZHkgc3BlY2lmaWVkXCJcbiAgICAgICAgICAoQWdlbnQucHJpbnRfc2l0ZSA/c2lncyB4KSBpXG4gICAgICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOmZhbHNlKVxuICAgICAgICAgIHgpKVxuXG5sZXQgZGFuZ2xpbmdfbm9kZSB+c2lncyB0eXMgeCA9XG4gIEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAoTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQ2Fubm90IHByb2NlZWQgYmVjYXVzZSBsYXN0IGRlY2xhcmVkIGFnZW50ICVhLyolaSovJWFcIlxuICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAocmF3X2ZpbmRfdHkgdHlzIHgpIHggRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgICAgICAgIFwiIGlzIG5vdCBsaW5rZWQgdG8gaXRzIGNvbm5lY3RlZCBjb21wb25lbnQuXCIpKVxuXG5sZXQgaWRlbnRpdHlfaW5qZWN0aW9uIGNjID1cbiAgUmVuYW1pbmcuaWRlbnRpdHlcbiAgICAoQXJyYXkuZm9sZF9sZWZ0IChmdW4geCB5IC0+IExpc3QucmV2X2FwcGVuZCB5IHgpIFtdIGNjLm5vZGVzX2J5X3R5cGUpXG5cbigqKiBwaWNrIGEgcm9vdCBpbiB0aGUgQ0MuIEFueSByb290IHdvcmtzLlxuICAgIEluIHRoaXMgY2FzZSBwaWNrIHRoZSBmaXJzdCBub2RlIG9mIHNtYWxsZXN0IHR5cGUgKilcbmxldCByYXdfZmluZF9yb290IG5vZGVzX2J5X3R5cGUgPVxuICBsZXQgcmVjIGF1eCB0eSA9XG4gICAgaWYgdHkgPSBBcnJheS5sZW5ndGggbm9kZXNfYnlfdHlwZSB0aGVuXG4gICAgICBOb25lXG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBub2Rlc19ieV90eXBlLih0eSkgd2l0aFxuICAgICAgfCBbXSAtPiBhdXggKHN1Y2MgdHkpXG4gICAgICB8IGggOjogXyAtPiBTb21lIChoLCB0eSlcbiAgICApXG4gIGluXG4gIGF1eCAwXG5cbmxldCBmaW5kX3Jvb3QgY2MgPSByYXdfZmluZF9yb290IGNjLm5vZGVzX2J5X3R5cGVcblxubGV0IHdlaWdodCBjYyA9XG4gIGxldCBsaW5rcywgZG91YmxlID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgQXJyYXkuZm9sZF9yaWdodCAoZnVuIChpLCBzKSAobCwgZCkgLT5cbiAgICAgICAgICAgIGlmIGkgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgKCBzdWNjXG4gICAgICAgICAgICAgICAgICAoaWYgcyA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICBzdWNjIGxcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBsKSxcbiAgICAgICAgICAgICAgICBpZiBpIDw+IEZyZWUgdGhlblxuICAgICAgICAgICAgICAgICAgc3VjYyBkXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgZCApXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICggKGlmIHMgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgIHN1Y2MgbFxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgbCksXG4gICAgICAgICAgICAgICAgZCApKSlcbiAgICAgIGNjLm5vZGVzICgwLCAwKVxuICBpblxuICBsaW5rcyAtIChkb3VibGUgLyAyKVxuXG5sZXQgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgP3Bvc3NpYmlsaXRpZXMgfnN0cmljdCByb290MSBjYzEgcm9vdDIgY2MyID1cbiAgbGV0IHRpY2sgeCA9XG4gICAgbWF0Y2ggcG9zc2liaWxpdGllcyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHMgLT4gcyA6PSBNb2RzLkludDJTZXQucmVtb3ZlIHggIXNcbiAgaW5cbiAgbGV0IHJlYyBhdXggYXRfbGVhc3Rfb25lX2VkZ2UgcmVuYW1lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBpZiBhdF9sZWFzdF9vbmVfZWRnZSB0aGVuXG4gICAgICAgIFNvbWUgcmVuYW1lLCBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmUsIE5vbmVcbiAgICB8ICgobywgcCkgYXMgcGFpcikgOjogdG9kb3MgLT5cbiAgICAgIGxldCAoKSA9IHRpY2sgcGFpciBpblxuICAgICAgKG1hdGNoXG4gICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgICAoZnVuIGkgYyAobHgsIGl4KSAobHksIGl5KSAtPlxuICAgICAgICAgICAgIG1hdGNoIGMgd2l0aFxuICAgICAgICAgICAgIHwgTm9uZSwgXyAtPiBjXG4gICAgICAgICAgICAgfCBTb21lIChvbmVfZWRnZSwgdG9kbywgcmVuKSwgXyAtPlxuICAgICAgICAgICAgICAgaWYgKChub3Qgc3RyaWN0KSAmJiAoaXggPSAtMSB8fCBpeSA9IC0xKSkgfHwgaXggPSBpeSB0aGVuIChcbiAgICAgICAgICAgICAgICAgbWF0Y2ggbHgsIGx5IHdpdGhcbiAgICAgICAgICAgICAgICAgfCBMaW5rIF8sIEZyZWUgfCBGcmVlLCBMaW5rIF8gLT5cbiAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICAgIHwgVW5TcGVjLCBGcmVlIHwgRnJlZSwgVW5TcGVjIHwgTGluayBfLCBVblNwZWMgfCBVblNwZWMsIExpbmsgX1xuICAgICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgICAgaWYgc3RyaWN0IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBTb21lIChvbmVfZWRnZSB8fCAoaXggPD4gLTEgJiYgaXggPSBpeSksIHRvZG8sIHJlbiksIE5vbmVcbiAgICAgICAgICAgICAgICAgfCBVblNwZWMsIFVuU3BlYyAtPlxuICAgICAgICAgICAgICAgICAgIFNvbWUgKG9uZV9lZGdlIHx8IChpeCA8PiAtMSAmJiBpeCA9IGl5KSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IEZyZWUsIEZyZWUgLT4gU29tZSAodHJ1ZSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICB8IExpbmsgKG4xLCBzMSksIExpbmsgKG4yLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgICBpZiBzMSA9IHMyIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBuMSByZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICBpZiBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZW4gbjEgPSBuMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgU29tZSAodHJ1ZSwgdG9kbywgcmVuKSwgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBuMSBuMiByZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcicgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaW5kX3R5IGNjMSBuMSA9IGZpbmRfdHkgY2MyIG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgKHRydWUsIChuMSwgbjIpIDo6IHRvZG8sIHInKSwgTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIFNvbWUgKGNjMSwgbywgY2MyLCBwLCBpLCBmYWxzZSlcbiAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICBOb25lLCBTb21lIChjYzEsIG8sIGNjMiwgcCwgaSwgZmFsc2UpXG4gICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSwgU29tZSAoY2MxLCBvLCBjYzIsIHAsIGksIHRydWUpKVxuICAgICAgICAgICAoU29tZSAoYXRfbGVhc3Rfb25lX2VkZ2UsIHRvZG9zLCByZW5hbWUpLCBOb25lKVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gbyBjYzEubm9kZXMpXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBwIGNjMi5ub2RlcylcbiAgICAgICB3aXRoXG4gICAgICB8IE5vbmUsIGNvbmZsaWN0IC0+IE5vbmUsIGNvbmZsaWN0XG4gICAgICB8IFNvbWUgKG9uZV9lZGdlcycsIHRvZG9zJywgcmVuJyksIF8gLT4gYXV4IG9uZV9lZGdlcycgcmVuJyB0b2RvcycpXG4gIGluXG4gIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSByb290MSByb290MiAoUmVuYW1pbmcuZW1wdHkgKCkpIHdpdGhcbiAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICB8IFNvbWUgciAtPlxuICAgIGxldCBhX3NpbmdsZV9hZ2VudCA9XG4gICAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBiIChsLCBpKSAtPiBiICYmIGkgPSAtMSAmJiBsID0gVW5TcGVjKVxuICAgICAgICB0cnVlXG4gICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSByb290MSBjYzEubm9kZXMpXG4gICAgICB8fCBBcnJheS5mb2xkX2xlZnRcbiAgICAgICAgICAgKGZ1biBiIChsLCBpKSAtPiBiICYmIGkgPSAtMSAmJiBsID0gVW5TcGVjKVxuICAgICAgICAgICB0cnVlXG4gICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSByb290MiBjYzIubm9kZXMpXG4gICAgaW5cbiAgICBhdXggYV9zaW5nbGVfYWdlbnQgciBbIHJvb3QxLCByb290MiBdXG5cbigqKiBAcmV0dXJuIGluamVjdGlvbiBmcm9tIGEgdG8gYiAqKVxubGV0IGVxdWFsIH5kZWJ1Z19tb2RlIGEgYiA9XG4gIG1hdGNoXG4gICAgVG9vbHMuYXJyYXlfbWluX2VxdWFsX25vdF9udWxsXG4gICAgICAoQXJyYXkubWFwIChmdW4geCAtPiBMaXN0Lmxlbmd0aCB4LCB4KSBhLm5vZGVzX2J5X3R5cGUpXG4gICAgICAoQXJyYXkubWFwIChmdW4geCAtPiBMaXN0Lmxlbmd0aCB4LCB4KSBiLm5vZGVzX2J5X3R5cGUpXG4gIHdpdGhcbiAgfCBOb25lIC0+IE5vbmVcbiAgfCBTb21lIChbXSwgYWdzKSAtPlxuICAgIGlmIGFncyA9IFtdIHRoZW5cbiAgICAgIFNvbWUgKFJlbmFtaW5nLmVtcHR5ICgpKVxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgfCBTb21lIChoMSA6OiBfLCBhZ3MpIC0+XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYm9vbCBhZyAtPlxuICAgICAgICBtYXRjaCBib29sIHdpdGhcbiAgICAgICAgfCBTb21lIF8gLT4gYm9vbFxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgcmVuYW1lLCBfID0gYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnN0cmljdDp0cnVlIGgxIGEgYWcgYiBpblxuICAgICAgICAgIHJlbmFtZSlcbiAgICAgIE5vbmUgYWdzXG5cbmxldCBhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGEgPVxuICBtYXRjaFxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgeCAtPiBUb29scy5taW5fcG9zX2ludF9ub3RfemVybyBhY2MgKExpc3QubGVuZ3RoIHgsIHgpKVxuICAgICAgKDAsIFtdKSBhLm5vZGVzX2J5X3R5cGVcbiAgd2l0aFxuICB8IF8sIFtdIC0+IFsgUmVuYW1pbmcuZW1wdHkgKCkgXVxuICB8IF8sIChoIDo6IF8gYXMgbCkgLT5cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MgYWcgLT5cbiAgICAgICAgbWF0Y2ggYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnN0cmljdDp0cnVlIGggYSBhZyBhIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IGFjY1xuICAgICAgICB8IFNvbWUgciwgXyAtPiByIDo6IGFjYylcbiAgICAgIFtdIGxcblxubGV0IHBvdGVudGlhbF9wYWlyaW5nIHNpZ3MgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgIChmdW4geCBhY2MgbGEgbGIgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgeCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gYWNjIGIgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTW9kcy5JbnQyU2V0LmFkZCAoYSwgYikgYWNjKSBhY2MgbGEpXG4gICAgICAgICAgYWNjIGxiKVxuICAgIE1vZHMuSW50MlNldC5lbXB0eVxuXG5sZXQgbWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgYSBiID1cbiAgbGV0IHBvc3NpYmlsaXRpZXMgPVxuICAgIHJlZiAocG90ZW50aWFsX3BhaXJpbmcgc2lncyBhLm5vZGVzX2J5X3R5cGUgYi5ub2Rlc19ieV90eXBlKVxuICBpblxuICBsZXQgcmVjIGZvcl9vbmVfcm9vdCBhY2MgPVxuICAgIG1hdGNoIE1vZHMuSW50MlNldC5jaG9vc2UgIXBvc3NpYmlsaXRpZXMgd2l0aFxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgKHgsIHkpIC0+XG4gICAgICAobWF0Y2hcbiAgICAgICAgIGFyZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIH5wb3NzaWJpbGl0aWVzIH5zdHJpY3Q6ZmFsc2UgeCBhIHkgYlxuICAgICAgIHdpdGhcbiAgICAgIHwgTm9uZSwgXyAtPiBmb3Jfb25lX3Jvb3QgYWNjXG4gICAgICB8IFNvbWUgciwgXyAtPiBmb3Jfb25lX3Jvb3QgKHIgOjogYWNjKSlcbiAgaW5cbiAgZm9yX29uZV9yb290IFtdXG5cbigqdHVybnMgYSBjYyBpbnRvIGEgcGF0aCg6bGlzdCkgaW4gdGhlIGRvbWFpbiopXG5sZXQgcmF3X3RvX25hdmlnYXRpb24gKGZ1bGwgOiBib29sKSBub2Rlc19ieV90eXBlIG5vZGVzID1cbiAgbGV0IHJlYyBidWlsZF9mb3IgKGZpcnN0LCBvdXQpIGRvbiA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBMaXN0LnJldiBvdXRcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IGZpcnN0Jywgb3V0JywgdG9kbyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIGkgKChmaXJzdCwgYW5zLCByZSkgYXMgYWNjKSAobCwgcykgLT5cbiAgICAgICAgICAgIGxldCAoKGZpcnN0JywgYW5zJywgXykgYXMgYWNjJykgPVxuICAgICAgICAgICAgICBpZiAoZnVsbCB8fCBmaXJzdCkgJiYgcyA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5FeGlzdGluZyBoKSxcbiAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBzIClcbiAgICAgICAgICAgICAgICAgIDo6IGFucyxcbiAgICAgICAgICAgICAgICAgIHJlIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBVblNwZWMgLT4gYWNjJ1xuICAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgIGlmIGZ1bGwgfHwgZmlyc3QnIHRoZW5cbiAgICAgICAgICAgICAgICAoIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRnJlc2ggKGgsIHJhd19maW5kX3R5IG5vZGVzX2J5X3R5cGUgaClcbiAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgaSApLFxuICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm90aGluZyApXG4gICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgcmUgKVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgfCBMaW5rIChuLCBsKSAtPlxuICAgICAgICAgICAgICBpZiBMaXN0Lm1lbSBuIGRvbiB8fCAobiA9IGggJiYgaSA+IGwpIHRoZW5cbiAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgIGVsc2UgaWYgbiA9IGggfHwgTGlzdC5tZW0gbiByZSB0aGVuXG4gICAgICAgICAgICAgICAgaWYgZnVsbCB8fCBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgKCAoIChpZiBmaXJzdCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5GcmVzaCAoaCwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBoKVxuICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hdmlnYXRpb24uRXhpc3RpbmcgaCksXG4gICAgICAgICAgICAgICAgICAgICAgICBpICksXG4gICAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgbiwgbCkgKVxuICAgICAgICAgICAgICAgICAgICA6OiBhbnMnLFxuICAgICAgICAgICAgICAgICAgICByZSApXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgYWNjJ1xuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgKCBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICggKCAoaWYgZmlyc3QnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkZyZXNoIChoLCByYXdfZmluZF90eSBub2Rlc19ieV90eXBlIGgpXG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLkV4aXN0aW5nIGgpLFxuICAgICAgICAgICAgICAgICAgICAgIGkgKSxcbiAgICAgICAgICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGVcbiAgICAgICAgICAgICAgICAgICAgICAoTmF2aWdhdGlvbi5GcmVzaCAobiwgcmF3X2ZpbmRfdHkgbm9kZXNfYnlfdHlwZSBuKSwgbCkgKVxuICAgICAgICAgICAgICAgICAgOjogYW5zJyxcbiAgICAgICAgICAgICAgICAgIG4gOjogcmUgKSlcbiAgICAgICAgICAoZmlyc3QsIG91dCwgdClcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaCBub2RlcylcbiAgICAgIGluXG4gICAgICBidWlsZF9mb3IgKGZpcnN0Jywgb3V0JykgKGggOjogZG9uKSB0b2RvXG4gIGluXG4gIG1hdGNoIHJhd19maW5kX3Jvb3Qgbm9kZXNfYnlfdHlwZSB3aXRoXG4gIHwgTm9uZSAtPiBbXSAoKmVtcHR5IHBhdGggZm9yIHgwKilcbiAgfCBTb21lICh4LCBfKSAtPlxuICAgICgqKGFnX3NvcnQsYWdfaWQpKilcbiAgICBidWlsZF9mb3IgKHRydWUsIFtdKSAoKndpcCopIFtdICgqYWxyZWFkeV9kb25lKikgWyB4IF1cbigqdG9kbyopXG5cbmxldCByZWMgc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHIgPSBmdW5jdGlvblxuICB8IFtdLCBfIC0+IHJcbiAgfCBfIDo6IF8sIFtdIC0+IGFzc2VydCBmYWxzZVxuICB8ICh4IDo6IHEgYXMgbCksIHkgOjogcScgLT5cbiAgICBpZiB4ID0geSB0aGVuIChcbiAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSB4IHkgciB3aXRoXG4gICAgICB8IFNvbWUgcicgLT4gc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHInIChxLCBxJylcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGZzdHMsIGxzdCA9IExpc3RfdXRpbC5wb3BfbGFzdCBsIGluXG4gICAgICBtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgbHN0IHkgciB3aXRoXG4gICAgICB8IFNvbWUgcicgLT4gc3ViX21pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIHInIChmc3RzLCBxJylcbiAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICApXG5cbmxldCBtaW5pbWl6ZV9yZW5hbWluZyB+ZGVidWdfbW9kZSBkc3RfbmJ0IHJlZl9uYnQgPVxuICBsZXQgcmUgPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biB0eSByIGlkcyAtPiBzdWJfbWluaW1pemVfcmVuYW1pbmcgfmRlYnVnX21vZGUgciAoaWRzLCByZWZfbmJ0Lih0eSkpKVxuICAgIHJlIGRzdF9uYnRcblxubGV0IG1pbmltaXplIH5kZWJ1Z19tb2RlIGNhbmRfbmJ0IGNhbmRfbm9kZXMgcmVmX25idCA9XG4gIGxldCByZSA9IG1pbmltaXplX3JlbmFtaW5nIH5kZWJ1Z19tb2RlIGNhbmRfbmJ0IHJlZl9uYnQgaW5cbiAgbGV0IHJlX2ltZyA9IFJlbmFtaW5nLmltYWdlIHJlIGluXG4gIGxldCBub2Rlc19ieV90eXBlID1cbiAgICBBcnJheS5tYXAgKExpc3QuZmlsdGVyIChmdW4gYSAtPiBNb2RzLkludFNldC5tZW0gYSByZV9pbWcpKSByZWZfbmJ0XG4gIGluXG4gIGxldCBub2RlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBpZCBzaXRlcyBhY2MgLT5cbiAgICAgICAgbGV0IHNpdGVzJyA9XG4gICAgICAgICAgQXJyYXkubWFwXG4gICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgaSAtPiBMaW5rIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSByZSBuLCBzKSwgaVxuICAgICAgICAgICAgICB8ICgoVW5TcGVjIHwgRnJlZSksIF8pIGFzIHggLT4geClcbiAgICAgICAgICAgIHNpdGVzXG4gICAgICAgIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCAoUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgcmUgaWQpIHNpdGVzJyBhY2MpXG4gICAgICBjYW5kX25vZGVzIE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIHtcbiAgICBub2Rlc19ieV90eXBlO1xuICAgIG5vZGVzO1xuICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICB9XG5cbigqIHJldHVybnMgYSBsaXN0IG9mIGNjIHdoZXJlIGVhY2ggY2MgaXMgaW5jbHVkZWQgaW4gY2MxKilcbmxldCBpbmZzIH5kZWJ1Z19tb2RlIHNpZ3MgY2MxIGNjMiA9XG4gIGxldCBwb3NzaWJpbGl0aWVzID1cbiAgICByZWYgKHBvdGVudGlhbF9wYWlyaW5nIHNpZ3MgY2MxLm5vZGVzX2J5X3R5cGUgY2MyLm5vZGVzX2J5X3R5cGUpXG4gIGluXG4gIGxldCByZWMgYXV4IHJlbmFtZSBub2RlcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBub2Rlc1xuICAgIHwgKChvLCBwKSBhcyBwYWlyKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0ICgpID0gcG9zc2liaWxpdGllcyA6PSBNb2RzLkludDJTZXQucmVtb3ZlIHBhaXIgIXBvc3NpYmlsaXRpZXMgaW5cbiAgICAgIGxldCBsbmsxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gbyBjYzEubm9kZXMgaW5cbiAgICAgIGxldCAodG9kb3MnLCByZW4nKSwgb3V0bCA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdF9tYXBpXG4gICAgICAgICAgKGZ1biBrICgodG9kbywgcmVuKSBhcyBhY2MpIChseSwgaXkpIC0+XG4gICAgICAgICAgICBsZXQgbHgsIGl4ID0gbG5rMS4oaykgaW5cbiAgICAgICAgICAgIG1hdGNoIGx4LCBseSB3aXRoXG4gICAgICAgICAgICB8IExpbmsgXywgRnJlZVxuICAgICAgICAgICAgfCBGcmVlLCBMaW5rIF9cbiAgICAgICAgICAgIHwgTGluayBfLCBVblNwZWNcbiAgICAgICAgICAgIHwgVW5TcGVjLCBMaW5rIF9cbiAgICAgICAgICAgIHwgVW5TcGVjLCBGcmVlXG4gICAgICAgICAgICB8IEZyZWUsIFVuU3BlY1xuICAgICAgICAgICAgfCBVblNwZWMsIFVuU3BlYyAtPlxuICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICBpeVxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgIHwgRnJlZSwgRnJlZSAtPlxuICAgICAgICAgICAgICAoIGFjYyxcbiAgICAgICAgICAgICAgICAoIEZyZWUsXG4gICAgICAgICAgICAgICAgICBpZiBpeCA9IGl5IHRoZW5cbiAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgLTEgKSApXG4gICAgICAgICAgICB8IChMaW5rIChuMSwgczEpIGFzIHgpLCBMaW5rIChuMiwgczIpIC0+XG4gICAgICAgICAgICAgIGlmIHMxID0gczIgdGhlblxuICAgICAgICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBuMSByZW4gdGhlblxuICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICggKGlmIFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHJlbiBuMSA9IG4yIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICBVblNwZWMpLFxuICAgICAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAtMSApIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBuMSBuMiByZW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICAgICAgICggVW5TcGVjLFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIHInIC0+XG4gICAgICAgICAgICAgICAgICAgIGlmIGZpbmRfdHkgY2MxIG4xID0gZmluZF90eSBjYzIgbjIgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICggKChuMSwgbjIpIDo6IHRvZG8sIHInKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICggeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgKCBhY2MsXG4gICAgICAgICAgICAgICAgICAgICAgICAoIFVuU3BlYyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXggPSBpeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xICkgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICggYWNjLFxuICAgICAgICAgICAgICAgICAgKCBVblNwZWMsXG4gICAgICAgICAgICAgICAgICAgIGlmIGl4ID0gaXkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGl5XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAtMSApICkpXG4gICAgICAgICAgKHRvZG9zLCByZW5hbWUpXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIHAgY2MyLm5vZGVzKVxuICAgICAgaW5cbiAgICAgIGlmIEFycmF5LmZvbGRfbGVmdCAoZnVuIGIgKGwsIGkpIC0+IGIgJiYgbCA9IFVuU3BlYyAmJiBpIDwgMCkgdHJ1ZSBvdXRsXG4gICAgICB0aGVuXG4gICAgICAgIGF1eCByZW4nIG5vZGVzIHRvZG9zJ1xuICAgICAgZWxzZVxuICAgICAgICBhdXggcmVuJyAoTW9kcy5JbnRNYXAuYWRkIG8gb3V0bCBub2RlcykgdG9kb3MnXG4gIGluXG5cbiAgbGV0IHJlYyBmb3Jfb25lX3Jvb3QgYWNjID1cbiAgICBtYXRjaCBNb2RzLkludDJTZXQuY2hvb3NlICFwb3NzaWJpbGl0aWVzIHdpdGhcbiAgICB8IE5vbmUgLT4gYWNjXG4gICAgfCBTb21lIChyb290MSwgcm9vdDIpIC0+XG4gICAgICAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIHJvb3QxIHJvb3QyIChSZW5hbWluZy5lbXB0eSAoKSkgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lIHIgLT5cbiAgICAgICAgbGV0IG5vZGVzID0gYXV4IHIgTW9kcy5JbnRNYXAuZW1wdHkgWyByb290MSwgcm9vdDIgXSBpblxuICAgICAgICBsZXQgYWNjJyA9XG4gICAgICAgICAgaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgbm9kZXMgdGhlblxuICAgICAgICAgICAgYWNjXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbm9kZXNfYnlfdHlwZSA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcFxuICAgICAgICAgICAgICAgIChMaXN0LmZpbHRlciAoZnVuIGEgLT4gTW9kcy5JbnRNYXAubWVtIGEgbm9kZXMpKVxuICAgICAgICAgICAgICAgIGNjMS5ub2Rlc19ieV90eXBlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWluaW1pemUgfmRlYnVnX21vZGUgbm9kZXNfYnlfdHlwZSBub2RlcyBjYzEubm9kZXNfYnlfdHlwZSA6OiBhY2NcbiAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGZvcl9vbmVfcm9vdCBhY2MnKVxuICBpblxuICBmb3Jfb25lX3Jvb3QgW11cblxuKCogcmVuYW1pbmcgaXMgYSB0b3RhbCBtb3JwaGlzbSBmcm9tIGNjMScgdG8gY2MyOyBjYzEnIGlzIGluY2x1ZGVkIGluIGNjMSAqKVxubGV0IGludGVyc2VjdGlvbiByZW5hbWluZyBjYzEgY2MyID1cbiAgbGV0IG5vZGVzLCBpbWFnZSA9XG4gICAgUmVuYW1pbmcuZm9sZFxuICAgICAgKGZ1biBpIGogKChhY2NuLCBsKSBhcyBhY2MpIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgY2MxLm5vZGVzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgbm9kZXMxIC0+XG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGogY2MyLm5vZGVzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgfCBTb21lIG5vZGVzMiAtPlxuICAgICAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAgICAgICAoZnVuIGsgKGwyLCBpMikgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsMSwgaTEgPSBub2RlczEuKGspIGluXG4gICAgICAgICAgICAgICAgICAoIChpZiBsMSA9IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgIFVuU3BlY1xuICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICBsMiksXG4gICAgICAgICAgICAgICAgICAgIGlmIGkxID0gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpMiApKVxuICAgICAgICAgICAgICAgIG5vZGVzMlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBqIG91dCBhY2NuLCBqIDo6IGwpKVxuICAgICAgcmVuYW1pbmcgKE1vZHMuSW50TWFwLmVtcHR5LCBbXSlcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPVxuICAgIEFycmF5Lm1hcCAoTGlzdC5maWx0ZXIgKGZ1biBhIC0+IExpc3QubWVtIGEgaW1hZ2UpKSBjYzIubm9kZXNfYnlfdHlwZVxuICBpblxuICB7XG4gICAgbm9kZXNfYnlfdHlwZTtcbiAgICBub2RlcztcbiAgICByZWNvZ25fbmF2ID0gcmF3X3RvX25hdmlnYXRpb24gZmFsc2Ugbm9kZXNfYnlfdHlwZSBub2RlcztcbiAgfVxuXG50eXBlIGV4dHJlbWl0eSA9IE9wZW4gfCBDbG9zZWRcblxubGV0IGZldGNoX2V4aXRfc2l0ZSBfc2lncyBzaWQgPSBzaWQrMVxubGV0IHJlYyBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKG5pZCwgc2lkKSBjb3VudCA9XG4gIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIG5pZCBub2RlcyB3aXRoXG4gIHwgTm9uZSAtPiBmYWlsd2l0aCBcInBlbmRpbmcgYm9uZHMgZW5jb3VudGVyZWQgd2hlbiBjb21wdXRpbmcgdGhlIGxlbmd0aCBvZiBhIGNoYWluIChjb3VudGVycylcIlxuICB8IFNvbWUgYWcgLT5cbiAgICBsZXQgb3RoZXIgPSBmZXRjaF9leGl0X3NpdGUgc2lncyBzaWQgaW5cbiAgICBsZXQgKGVsLF8pID0gYWcuKG90aGVyKSBpblxuICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgIHwgVW5TcGVjIC0+IGNvdW50LCBPcGVuXG4gICAgICB8IEZyZWUgLT4gY291bnQsIENsb3NlZFxuICAgICAgfCBMaW5rIChkbiwgZGkpIC0+XG4gICAgICAgICAgICAgY291bnRlcl92YWx1ZSBzaWdzIG5vZGVzIChkbiwgZGkpIChjb3VudCArIDEpXG5cbmxldCBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKG5pZCwgc2lkKSA9XG4gIGNvdW50ZXJfdmFsdWUgc2lncyBub2RlcyAobmlkLCBzaWQpIDBcblxubGV0IGNvdW50ZXJfdmFsdWVfY2Mgc2lncyBjYyAobmlkLCBzaWQpID1cbiAgbGV0IG5vZGVzID0gY2Mubm9kZXMgaW5cbiAgbGV0IGNvdW50LCBleHRyZW1pdHkgPSBjb3VudGVyX3ZhbHVlIHNpZ3Mgbm9kZXMgKG5pZCwgc2lkKSBpblxuICBsZXQgKCkgPSBtYXRjaCBleHRyZW1pdHkgd2l0aCBPcGVuIC0+IGZhaWx3aXRoIFwicGVuZGluZyBib25kcyBlbmNvdW50ZXJlZCB3aGVuIGNvbXB1dGluZyB0aGUgbGVuZ3RoIG9mIGEgY2hhaW4gKGNvdW50ZXJzKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IENsb3NlZCAtPiAoKVxuICBpbiBjb3VudFxuXG5sZXQgZG90Y29tbWEgZG90bmV0ID1cbiAgaWYgZG90bmV0IHRoZW5cbiAgICBmdW4gZm10IC0+XG4gIEZvcm1hdC5mcHJpbnRmIGZtdCBcIixcIlxuICBlbHNlXG4gICAgUHAuc3BhY2VcblxubGV0IHByaW50X2NjIH5ub0NvdW50ZXJzID8oZG90bmV0ID0gZmFsc2UpID8oZnVsbF9zcGVjaWVzID0gZmFsc2UpID9zaWdzID9jY19pZFxuICAgIH53aXRoX2lkIGYgY2MgPVxuICBsZXQgcHJpbnRfaW50ZiAoKGFnX2ksIF8pIGFzIGFnKSBsaW5rX2lkcyBuZWlnaCA9XG4gICAgc25kXG4gICAgICAoVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgKGZ1biBwIChub3RfZW1wdHksICgoZnJlZSwgbGlua19pZHMpIGFzIG91dCkpIChlbCwgc3QpIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXQlYVwiXG4gICAgICAgICAgICAgICAgIChpZiBub3RfZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICBkb3Rjb21tYSBkb3RuZXRcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBhZyBwKVxuICAgICAgICAgICAgICAgICBzdFxuICAgICAgICAgICAgIGVsc2UgaWYgZWwgPD4gVW5TcGVjIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGRvdGNvbW1hIGRvdG5ldFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBQcC5lbXB0eSlcbiAgICAgICAgICAgICAgICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWcpXG4gICAgICAgICAgICAgICAgIHBcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbWF0Y2ggZWwgd2l0aFxuICAgICAgICAgICB8IFVuU3BlYyAtPlxuICAgICAgICAgICAgIGlmIHN0ID49IDAgdGhlbiAoXG4gICAgICAgICAgICAgICBsZXQgKCkgPSBpZiBmdWxsX3NwZWNpZXMgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIiBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICBub3RfZW1wdHksIG91dFxuICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJbLl1cIiBpblxuICAgICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICAgICB8IExpbmsgKGRzdF9hLCBkc3RfcCkgLT5cbiAgICAgICAgICAgICBsZXQgZHN0X3R5ID0gZmluZF90eSBjYyBkc3RfYSBpblxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtYXRjaCBzaWdzIHdpdGhcbiAgICAgICAgICAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgICAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICAgICAgICAgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBkc3RfdHkgJiYgbm90IG5vQ291bnRlcnNcbiAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgIGxldCAoY291bnRlcixraW5kKSA9IGNvdW50ZXJfdmFsdWUgc2lncyBjYy5ub2RlcyAoZHN0X2EsIGRzdF9wKSBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JXMlZH1cIlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2gga2luZCB3aXRoIENsb3NlZCAtPiBcIj1cIiB8IE9wZW4gLT4gXCI+PVwiKVxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgIGxldCBpLCBvdXQnID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnQyTWFwLmZpbmRfb3B0aW9uIChkc3RfYSwgZHN0X3ApIGxpbmtfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHggLT4geCwgb3V0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGZyZWUsIChzdWNjIGZyZWUsIE1vZHMuSW50Mk1hcC5hZGQgKGFnX2ksIHApIGZyZWUgbGlua19pZHMpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlslaV1cIiBpIGluXG4gICAgICAgICAgICAgICB0cnVlLCBvdXQnXG4gICAgICAgICAgICAgKSlcbiAgICAgICAgIChmYWxzZSwgbGlua19pZHMpIG5laWdoKVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNjX2lkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2NfaWQgLT4gRm9ybWF0LmZwcmludGYgZiBcIi8qY2MlaSovQCBcIiBjY19pZFxuICBpblxuICBsZXQgXywgXyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biB4IGVsIChub3RfZW1wdHksIGxpbmtfaWRzKSAtPlxuICAgICAgICBsZXQgYWdfeCA9IHgsIGZpbmRfdHkgY2MgeCBpblxuICAgICAgICBpZlxuICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICAgIChub3QgKFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgKHNuZCBhZ194KSkpIHx8IG5vQ291bnRlcnNcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldEBbPGg+JWEoXCJcbiAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgIGlmIGRvdG5ldCB0aGVuXG4gICAgICAgICAgICAgICAgICAgZnVuIGZtdCAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIuXCJcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIFBwLmNvbW1hXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQpXG4gICAgICAgICAgICAgIGFnX3hcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvdXQgPSBwcmludF9pbnRmIGFnX3ggbGlua19pZHMgZWwgaW5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiKUBdXCIgaW5cbiAgICAgICAgICB0cnVlLCBvdXRcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbm90X2VtcHR5LCBsaW5rX2lkcylcbiAgICAgIGNjLm5vZGVzXG4gICAgICAoZmFsc2UsICgxLCBNb2RzLkludDJNYXAuZW1wdHkpKVxuICBpblxuICAoKVxuXG5sZXQgcHJpbnRfY2NfYXNfaWQgc2lncyBmIGNjID1cbiAgbGV0IHByaW50X2ludGYgKChhZ19pLCBfKSBhcyBhZykgbGlua19pZHMgbmVpZ2ggPVxuICAgIHNuZFxuICAgICAgKFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgIChmdW4gcCAobm90X2VtcHR5LCAoKGZyZWUsIGxpbmtfaWRzKSBhcyBvdXQpKSAoZWwsIHN0KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIGlmIGVsIDw+IFVuU3BlYyB8fCBzdCA+PSAwIHRoZW5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfXCJcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgUHAuZW1wdHkpXG4gICAgICAgICAgICAgICAgIChBZ2VudC5wcmludF9zaXRlIH5zaWdzIGFnKVxuICAgICAgICAgICAgICAgICBwXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgaWYgc3QgPj0gMCB0aGVuXG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifiVhXCIgKEFnZW50LnByaW50X3Jhd19pbnRlcm5hbCB+c2lncyBhZyBwKSBzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBtYXRjaCBlbCB3aXRoXG4gICAgICAgICAgIHwgVW5TcGVjIC0+IG5vdF9lbXB0eSB8fCBzdCA+PSAwLCBvdXRcbiAgICAgICAgICAgfCBGcmVlIC0+IHRydWUsIG91dFxuICAgICAgICAgICB8IExpbmsgKGRzdF9hLCBkc3RfcCkgLT5cbiAgICAgICAgICAgICBsZXQgZHN0X3R5ID0gZmluZF90eSBjYyBkc3RfYSBpblxuICAgICAgICAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgZHN0X3R5IHRoZW4gKFxuICAgICAgICAgICAgICAgbGV0IGNvdW50ZXIsZXh0cmVtaXR5ICA9IGNvdW50ZXJfdmFsdWUgc2lncyBjYy5ub2RlcyAoZHN0X2EsIGRzdF9wKSAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9IG1hdGNoIGV4dHJlbWl0eSB3aXRoIE9wZW4gLT4gZmFpbHdpdGggKFwiYm9uZHMgc2hvdWxkIG5vdCBiZSBvcGVuZWRcIikgfCBDbG9zZWQgLT4gKCkgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ+KyVkXCIgY291bnRlciBpblxuICAgICAgICAgICAgICAgdHJ1ZSwgb3V0XG4gICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgIGxldCBpLCBvdXQnID1cbiAgICAgICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnQyTWFwLmZpbmRfb3B0aW9uIChkc3RfYSwgZHN0X3ApIGxpbmtfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBTb21lIHggLT4geCwgb3V0XG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgIGZyZWUsIChzdWNjIGZyZWUsIE1vZHMuSW50Mk1hcC5hZGQgKGFnX2ksIHApIGZyZWUgbGlua19pZHMpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIn4laVwiIGkgaW5cbiAgICAgICAgICAgICAgIHRydWUsIG91dCdcbiAgICAgICAgICAgICApKVxuICAgICAgICAgKGZhbHNlLCBsaW5rX2lkcykgbmVpZ2gpXG4gIGluXG4gIGxldCBfLCBfID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHggZWwgKG5vdF9lbXB0eSwgbGlua19pZHMpIC0+XG4gICAgICAgIGxldCBhZ194ID0geCwgZmluZF90eSBjYyB4IGluXG4gICAgICAgIGlmIG5vdCAoU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyAoc25kIGFnX3gpKSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0QFs8aD4lYV9fXCJcbiAgICAgICAgICAgICAgKGlmIG5vdF9lbXB0eSB0aGVuXG4gICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfX1wiXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFBwLmVtcHR5KVxuICAgICAgICAgICAgICAoQWdlbnQucHJpbnQgfnNpZ3MgfndpdGhfaWQ6ZmFsc2UpXG4gICAgICAgICAgICAgIGFnX3hcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvdXQgPSBwcmludF9pbnRmIGFnX3ggbGlua19pZHMgZWwgaW5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF1cIiBpblxuICAgICAgICAgIHRydWUsIG91dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBub3RfZW1wdHksIGxpbmtfaWRzKVxuICAgICAgY2Mubm9kZXNcbiAgICAgIChmYWxzZSwgKDEsIE1vZHMuSW50Mk1hcC5lbXB0eSkpXG4gIGluXG4gICgpXG5cbmxldCB0b195b2pzb24gY2MgPVxuICBtYXRjaCBNb2RzLkludE1hcC5tYXhfa2V5IGNjLm5vZGVzIHdpdGhcbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSBtIC0+XG4gICAgbGV0IHMgPSBzdWNjIG0gaW5cbiAgICBsZXQgc29ydHMgPSBBcnJheS5tYWtlIHMgTm9uZSBpblxuICAgIGxldCAoKSA9XG4gICAgICBBcnJheS5pdGVyaVxuICAgICAgICAoZnVuIHR5IC0+IExpc3QuaXRlciAoZnVuIGlkIC0+IHNvcnRzLihpZCkgPC0gU29tZSB0eSkpXG4gICAgICAgIGNjLm5vZGVzX2J5X3R5cGVcbiAgICBpblxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwic29ydHNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICBzb3J0cyBbXSkgKTtcbiAgICAgICAgKCBcIm5vZGVzXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgKGZ1biBhY2MgaSAtPlxuICAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBjYy5ub2RlcyB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBgTnVsbFxuICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAobCwgcykgYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGcmVlIC0+IGBCb29sIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGluayAobiwgcykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYEFzc29jIFsgXCJub2RlXCIsIGBJbnQgbjsgXCJzaXRlXCIsIGBJbnQgcyBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFVuU3BlYyAtPiBgQm9vbCBmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgcyA8IDAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYE51bGxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgSW50IHMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgYSBbXSkpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIFtdIHMpICk7XG4gICAgICBdXG5cbmxldCBvZl95b2pzb24gc2lnX2RlY2wgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInNvcnRzXCIsIGBMaXN0IHMpOyAoXCJub2Rlc1wiLCBgTGlzdCBuKSBdXG4gIHwgYEFzc29jIFsgKFwibm9kZXNcIiwgYExpc3Qgbik7IChcInNvcnRzXCIsIGBMaXN0IHMpIF0gLT5cbiAgICBsZXQgXywgbm9kZXMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoaSwgYWNjKSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgYE51bGwgLT4gc3VjYyBpLCBhY2NcbiAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICggc3VjYyBpLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAgIChUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBCb29sIGI7IGBOdWxsIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKCAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAtMSApXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBgQXNzb2MgWyAoXCJub2RlXCIsIGBJbnQgbik7IChcInNpdGVcIiwgYEludCBzKSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IGBBc3NvYyBbIChcInNpdGVcIiwgYEludCBzKTsgKFwibm9kZVwiLCBgSW50IG4pIF0gKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGBOdWxsO1xuICAgICAgICAgICAgICAgICAgICAgICAgIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTGluayAobiwgcyksIC0xXG4gICAgICAgICAgICAgICAgICAgICB8IGBMaXN0IFsgYEJvb2wgYjsgYEludCBzIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgKCAoaWYgYiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVW5TcGVjKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICBzIClcbiAgICAgICAgICAgICAgICAgICAgIHwgYExpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoIGBBc3NvYyBbIChcIm5vZGVcIiwgYEludCBuKTsgKFwic2l0ZVwiLCBgSW50IHMpIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYEFzc29jIFsgKFwic2l0ZVwiLCBgSW50IHMpOyAoXCJub2RlXCIsIGBJbnQgbikgXSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYEludCBzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgICBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIExpbmsgKG4sIHMpLCBzdFxuICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbm9kZVwiLCB4KSkpXG4gICAgICAgICAgICAgICAgICAgbClcbiAgICAgICAgICAgICAgICBhY2MgKVxuICAgICAgICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIG5vZGUgbGlua3NcIiwgeCkpKVxuICAgICAgICAoMCwgTW9kcy5JbnRNYXAuZW1wdHkpIG5cbiAgICBpblxuICAgIGxldCBub2Rlc19ieV90eXBlID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lnX2RlY2wpIFtdIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlcmlcbiAgICAgICAgKGZ1biBpIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgfCBgTnVsbCAtPiAoKVxuICAgICAgICAgIHwgYEludCB0eSAtPiBub2Rlc19ieV90eXBlLih0eSkgPC0gaSA6OiBub2Rlc19ieV90eXBlLih0eSlcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiV3Jvbmcgbm9kZSB0eXBlXCIsIHgpKSlcbiAgICAgICAgc1xuICAgIGluXG4gICAge1xuICAgICAgbm9kZXNfYnlfdHlwZTtcbiAgICAgIG5vZGVzO1xuICAgICAgcmVjb2duX25hdiA9IHJhd190b19uYXZpZ2F0aW9uIGZhbHNlIG5vZGVzX2J5X3R5cGUgbm9kZXM7XG4gICAgfVxuICB8IGBOdWxsIC0+IGVtcHR5X2NjIHNpZ19kZWNsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBwYXR0ZXJuXCIsIHgpKVxuXG5sZXQgbWVyZ2VfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSByZXNlcnZlZF9pZHMgZnJlZV9pZCBpbmoxX3RvXzIgY2MxIGNjMiA9XG4gIGxldCBpbWcgPSBSZW5hbWluZy5pbWFnZSBpbmoxX3RvXzIgaW5cbiAgbGV0IGF2YWlsYWJsZV9pZHMgPVxuICAgIEFycmF5Lm1hcFxuICAgICAgKExpc3QuZmlsdGVyIChmdW4gaWQgLT4gbm90IChNb2RzLkludFNldC5tZW0gaWQgaW1nKSkpXG4gICAgICByZXNlcnZlZF9pZHNcbiAgaW5cbiAgbGV0IHVzZWRfaWRzID1cbiAgICBBcnJheS5tYXBcbiAgICAgIChMaXN0X3V0aWwubWFwX29wdGlvbiAoZnVuIGlkIC0+XG4gICAgICAgICAgIGlmIFJlbmFtaW5nLm1lbSBpZCBpbmoxX3RvXzIgdGhlblxuICAgICAgICAgICAgIFNvbWUgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluajFfdG9fMiBpZClcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIE5vbmUpKVxuICAgICAgY2MxLm5vZGVzX2J5X3R5cGVcbiAgaW5cbiAgbGV0IGF2YWlsYWJsZV9pbl9jYzEgPVxuICAgIEFycmF5Lm1hcGlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuZmlsdGVyIChmdW4geCAtPiBub3QgKExpc3QubWVtIHggY2MxLm5vZGVzX2J5X3R5cGUuKGkpKSkgbClcbiAgICAgIHJlc2VydmVkX2lkc1xuICBpblxuICBsZXQgZnJlZV9pZF9mb3JfY2MxID0gcmVmIGZyZWVfaWQgaW5cblxuICBsZXQgZ2V0X2NjMiBqICgoKGluajEsIGZyZWVfaWQpLCBpbmoyLCAodG9kb3MxLCB0b2RvczIpKSBhcyBwYWNrKSA9XG4gICAgaWYgUmVuYW1pbmcubWVtIGogaW5qMiB0aGVuXG4gICAgICBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmoyIGosIHBhY2tcbiAgICBlbHNlIChcbiAgICAgIGxldCB0eSA9IGZpbmRfdHkgY2MyIGogaW5cbiAgICAgIGxldCBpbWcsIGZyZWVfaWQnID1cbiAgICAgICAgbWF0Y2ggYXZhaWxhYmxlX2lkcy4odHkpIHdpdGhcbiAgICAgICAgfCBbXSAtPiBmcmVlX2lkLCBzdWNjIGZyZWVfaWRcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaWRzLih0eSkgPC0gdCBpblxuICAgICAgICAgIGgsIGZyZWVfaWRcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSB1c2VkX2lkcy4odHkpIDwtIGltZyA6OiB1c2VkX2lkcy4odHkpIGluXG4gICAgICBsZXQgbyA9XG4gICAgICAgIG1hdGNoIGF2YWlsYWJsZV9pbl9jYzEuKHR5KSB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgeCA9ICFmcmVlX2lkX2Zvcl9jYzEgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpbmNyIGZyZWVfaWRfZm9yX2NjMSBpblxuICAgICAgICAgIHhcbiAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICBsZXQgKCkgPSBhdmFpbGFibGVfaW5fY2MxLih0eSkgPC0gdCBpblxuICAgICAgICAgIGhcbiAgICAgIGluXG4gICAgICAoIGltZyxcbiAgICAgICAgKCAoIChtYXRjaCBSZW5hbWluZy5hZGQgfmRlYnVnX21vZGUgbyBpbWcgaW5qMSB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlKSxcbiAgICAgICAgICAgIGZyZWVfaWQnICksXG4gICAgICAgICAgKG1hdGNoIFJlbmFtaW5nLmFkZCB+ZGVidWdfbW9kZSBqIGltZyBpbmoyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgKHRvZG9zMSwgKGosIGltZykgOjogdG9kb3MyKSApIClcbiAgICApXG4gIGluXG5cbiAgbGV0IGdldF9jYzEgaSAoKChpbmoxLCBmcmVlX2lkKSwgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSkgYXMgcGFjaykgPVxuICAgIGlmIFJlbmFtaW5nLm1lbSBpIGluajEgdGhlblxuICAgICAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgaW5qMSBpLCBwYWNrXG4gICAgZWxzZSAoXG4gICAgICBsZXQgdHkgPSBmaW5kX3R5IGNjMSBpIGluXG4gICAgICBsZXQgaW1nLCBmcmVlX2lkJyA9XG4gICAgICAgIG1hdGNoIGF2YWlsYWJsZV9pZHMuKHR5KSB3aXRoXG4gICAgICAgIHwgW10gLT4gZnJlZV9pZCwgc3VjYyBmcmVlX2lkXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgbGV0ICgpID0gYXZhaWxhYmxlX2lkcy4odHkpIDwtIHQgaW5cbiAgICAgICAgICBoLCBmcmVlX2lkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gdXNlZF9pZHMuKHR5KSA8LSBpbWcgOjogdXNlZF9pZHMuKHR5KSBpblxuICAgICAgKCBpbWcsXG4gICAgICAgICggKCAobWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGkgaW1nIGluajEgd2l0aFxuICAgICAgICAgICAgfCBTb21lIHggLT4geFxuICAgICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSksXG4gICAgICAgICAgICBmcmVlX2lkJyApLFxuICAgICAgICAgIGluajIsXG4gICAgICAgICAgKChpLCBpbWcpIDo6IHRvZG9zMSwgdG9kb3MyKSApIClcbiAgICApXG4gIGluXG4gIGxldCBwYWNrJywgbm9kZXMgPVxuICAgIGxldCByZWMgZ2x1ZSBwYWNrIGluajIgbm9kZXMgPSBmdW5jdGlvblxuICAgICAgfCBbXSwgW10gLT4gcGFjaywgbm9kZXNcbiAgICAgIHwgW10sIChpLCBqKSA6OiB0b2RvczIgLT5cbiAgICAgICAgbGV0IG5vZGVzaSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBbfHxdIGkgY2MyLm5vZGVzIGluXG4gICAgICAgIGxldCBub2Rlc28gPSBBcnJheS5jb3B5IG5vZGVzaSBpblxuICAgICAgICBsZXQgcGFjaycsIGluajInLCB0b2RvcycgPVxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgIChmdW4gayBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgICAgfCAoVW5TcGVjIHwgRnJlZSksIF8gLT4gYWNjXG4gICAgICAgICAgICAgIHwgTGluayAobiwgcyksIHN0IC0+XG4gICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMiBuIGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdCBpblxuICAgICAgICAgICAgICAgIGFjYycpXG4gICAgICAgICAgICAocGFjaywgaW5qMiwgKFtdLCB0b2RvczIpKVxuICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgIGluXG4gICAgICAgIGdsdWUgcGFjaycgaW5qMicgKE1vZHMuSW50TWFwLmFkZCBqIG5vZGVzbyBub2RlcykgdG9kb3MnXG4gICAgICB8IChpLCBqKSA6OiB0b2RvczEsIHRvZG9zMiAtPlxuICAgICAgICBsZXQgbm9kZXNpID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaSBjYzEubm9kZXMgaW5cbiAgICAgICAgbGV0IG5vZGVzbyA9IEFycmF5LmNvcHkgbm9kZXNpIGluXG4gICAgICAgIGxldCBwYWNrJywgaW5qMicsIHRvZG9zJyA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaiBjYzIubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgICAoZnVuIGsgYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCAoVW5TcGVjIHwgRnJlZSksIF8gLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3QgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBuJywgYWNjJyA9IGdldF9jYzEgbiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdCBpblxuICAgICAgICAgICAgICAgICAgYWNjJylcbiAgICAgICAgICAgICAgKHBhY2ssIGluajIsICh0b2RvczEsIHRvZG9zMikpXG4gICAgICAgICAgICAgIG5vZGVzaVxuICAgICAgICAgIHwgU29tZSBub2Rlc2ogLT5cbiAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgKGZ1biBrIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRnJlZSwgXyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IF8sIHN0aiA9IG5vZGVzai4oaykgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIHN0aiA8PiAtMSB0aGVuIG5vZGVzby4oaykgPC0gRnJlZSwgc3RqIGluXG4gICAgICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgICAgICB8IExpbmsgKG4sIHMpLCBzdGkgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBfLCBzdGogPSBub2Rlc2ouKGspIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc3RvID1cbiAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIHN0aVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBuJywgYWNjJyA9IGdldF9jYzEgbiBhY2MgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IG5vZGVzby4oaykgPC0gTGluayAobicsIHMpLCBzdG8gaW5cbiAgICAgICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgICAgICB8IFVuU3BlYywgc3RpIC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggbm9kZXNqLihrKSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFVuU3BlYywgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGlmIHN0aiA8PiAtMSB0aGVuIG5vZGVzby4oaykgPC0gVW5TcGVjLCBzdGogaW5cbiAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICB8IEZyZWUsIHN0aiAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIG5vZGVzby4oaykgPC1cbiAgICAgICAgICAgICAgICAgICAgICAgICggRnJlZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3RqIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aSApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgfCBMaW5rIChuLCBzKSwgc3RqIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCBzdG8gPVxuICAgICAgICAgICAgICAgICAgICAgIGlmIHN0aiA8PiAtMSB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGpcbiAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBzdGlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG4nLCBhY2MnID0gZ2V0X2NjMiBuIGFjYyBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBub2Rlc28uKGspIDwtIExpbmsgKG4nLCBzKSwgc3RvIGluXG4gICAgICAgICAgICAgICAgICAgIGFjYycpKVxuICAgICAgICAgICAgICAocGFjaywgaW5qMiwgKHRvZG9zMSwgdG9kb3MyKSlcbiAgICAgICAgICAgICAgbm9kZXNpXG4gICAgICAgIGluXG4gICAgICAgIGdsdWUgcGFjaycgaW5qMicgKE1vZHMuSW50TWFwLmFkZCBqIG5vZGVzbyBub2RlcykgdG9kb3MnXG4gICAgaW5cbiAgICBnbHVlIChpbmoxX3RvXzIsIGZyZWVfaWQpXG4gICAgICAoUmVuYW1pbmcuaWRlbnRpdHkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIGltZykpXG4gICAgICBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgKFJlbmFtaW5nLnRvX2xpc3QgaW5qMV90b18yLCBbXSlcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYXAgKExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlKSB1c2VkX2lkcyBpblxuICBsZXQgKCkgPVxuICAgIEFycmF5Lml0ZXJpXG4gICAgICAoZnVuIGkgeCAtPlxuICAgICAgICByZXNlcnZlZF9pZHMuKGkpIDwtXG4gICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgTW9kcy5pbnRfY29tcGFyZSBub2Rlc19ieV90eXBlLihpKSB4KVxuICAgICAgYXZhaWxhYmxlX2lkc1xuICBpblxuICAoIHBhY2snLFxuICAgIHtcbiAgICAgIG5vZGVzX2J5X3R5cGU7XG4gICAgICBub2RlcztcbiAgICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIG5vZGVzO1xuICAgIH0gKVxuXG5sZXQgYnVpbGRfbmF2aWdhdGlvbl9iZXR3ZWVuIH5kZWJ1Z19tb2RlIGlual9kX3RvX28gY2NfbyBjY19kID1cbiAgbGV0IHJlYyBoYW5kbGVfbGlua3MgZGlzY292ZXJlZCBuZXh0X3JvdW5kIHJlY29nbiBpbnRlcm4gPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIG5leHRfcm91bmQgPSBbXSB0aGVuXG4gICAgICAgIExpc3QucmV2X2FwcGVuZCByZWNvZ24gaW50ZXJuXG4gICAgICBlbHNlXG4gICAgICAgIGhhbmRsZV9saW5rcyBkaXNjb3ZlcmVkIFtdIHJlY29nbiBpbnRlcm4gbmV4dF9yb3VuZFxuICAgIHwgKCgoaSwgaiwgcyksIChuJywgcycpKSBhcyBoKSA6OiB0b2RvcyAtPlxuICAgICAgbGV0IG4gPSBSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmpfZF90b19vIG4nIGluXG4gICAgICAobWF0Y2ggTW9kcy5JbnRTZXQubWVtIGogZGlzY292ZXJlZCwgTW9kcy5JbnRTZXQubWVtIG4nIGRpc2NvdmVyZWQgd2l0aFxuICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgKGggOjogbmV4dF9yb3VuZCkgcmVjb2duIGludGVybiB0b2Rvc1xuICAgICAgfCB0cnVlLCB0cnVlIC0+XG4gICAgICAgIGxldCBpbnRlcm4nID1cbiAgICAgICAgICAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLFxuICAgICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgbiwgcycpIClcbiAgICAgICAgICA6OiBpbnRlcm5cbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlX2xpbmtzIGRpc2NvdmVyZWQgbmV4dF9yb3VuZCByZWNvZ24gaW50ZXJuJyB0b2Rvc1xuICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICBsZXQgcmVjb2duJyA9XG4gICAgICAgICAgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBpLCBzKSxcbiAgICAgICAgICAgIE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChuLCBmaW5kX3R5IGNjX2QgbicpLCBzJykgKVxuICAgICAgICAgIDo6IHJlY29nblxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfbGlua3NcbiAgICAgICAgICAoTW9kcy5JbnRTZXQuYWRkIG4nIGRpc2NvdmVyZWQpXG4gICAgICAgICAgbmV4dF9yb3VuZCByZWNvZ24nIGludGVybiB0b2Rvc1xuICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICBsZXQgcmVjb2duJyA9XG4gICAgICAgICAgKCAoTmF2aWdhdGlvbi5FeGlzdGluZyBuLCBzJyksXG4gICAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5GcmVzaCAoaSwgZmluZF90eSBjY19kIGopLCBzKSApXG4gICAgICAgICAgOjogcmVjb2duXG4gICAgICAgIGluXG4gICAgICAgIGhhbmRsZV9saW5rc1xuICAgICAgICAgIChNb2RzLkludFNldC5hZGQgaiBkaXNjb3ZlcmVkKVxuICAgICAgICAgIG5leHRfcm91bmQgcmVjb2duJyBpbnRlcm4gdG9kb3MpXG4gIGluXG4gIGxldCBkaXNjb3YsIGFsbF9saW5rcywgaW50ZXJuID1cbiAgICBSZW5hbWluZy5mb2xkXG4gICAgICAoZnVuIGogaSAoZGlzYywgbGlua3MsIGludGVyKSAtPlxuICAgICAgICBsZXQgbm9kZXNkID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0gaiBjY19kLm5vZGVzIGluXG4gICAgICAgIGxldCBkaXNjJywgbm9kZXNvID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGNjX28ubm9kZXMgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkaXNjLCBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggbm9kZXNkKSAoVW5TcGVjLCAtMSlcbiAgICAgICAgICB8IFNvbWUgbm9kZXNvIC0+IE1vZHMuSW50U2V0LmFkZCBqIGRpc2MsIG5vZGVzb1xuICAgICAgICBpblxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnQyaVxuICAgICAgICAgIChmdW4gcyAoKGRpcywgbGksIGludCkgYXMgYWNjKSAob2wsIG9zKSAoZGwsIGRzKSAtPlxuICAgICAgICAgICAgbGV0ICgoXywgXywgaW50JykgYXMgYWNjJykgPVxuICAgICAgICAgICAgICBpZiBvcyA9IC0xICYmIGRzIDw+IC0xIHRoZW5cbiAgICAgICAgICAgICAgICAoIGRpcyxcbiAgICAgICAgICAgICAgICAgIGxpLFxuICAgICAgICAgICAgICAgICAgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGksIHMpLCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgZHMpIDo6IGludFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIG9sIDw+IFVuU3BlYyB0aGVuXG4gICAgICAgICAgICAgIGFjYydcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaCBkbCB3aXRoXG4gICAgICAgICAgICAgIHwgVW5TcGVjIC0+IGFjYydcbiAgICAgICAgICAgICAgfCBGcmVlIC0+XG4gICAgICAgICAgICAgICAgKCBkaXMsXG4gICAgICAgICAgICAgICAgICBsaSxcbiAgICAgICAgICAgICAgICAgICgoTmF2aWdhdGlvbi5FeGlzdGluZyBpLCBzKSwgTmF2aWdhdGlvbi5Ub05vdGhpbmcpIDo6IGludCcgKVxuICAgICAgICAgICAgICB8IExpbmsgKG4sIHMnKSAtPlxuICAgICAgICAgICAgICAgIGlmIG4gPiAoKmxhKikgaiB8fCAobiA9IGogJiYgcyA+IHMnKSB0aGVuXG4gICAgICAgICAgICAgICAgICBhY2MnXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgZGlzLCAoKGksIGosIHMpLCAobiwgcycpKSA6OiBsaSwgaW50J1xuICAgICAgICAgICAgKSlcbiAgICAgICAgICAoZGlzYycsIGxpbmtzLCBpbnRlcikgbm9kZXNvIG5vZGVzZClcbiAgICAgIGlual9kX3RvX29cbiAgICAgIChNb2RzLkludFNldC5lbXB0eSwgW10sIFtdKVxuICBpblxuICBoYW5kbGVfbGlua3MgZGlzY292IFtdIFtdIGludGVybiBhbGxfbGlua3NcblxubW9kdWxlIEVudiA6IHNpZ1xuICB0eXBlIHRyYW5zaXRpb24gPSB7XG4gICAgbmV4dDogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG4gICAgZHN0OiBpZDsgKCogaWQgb2YgY2MgYW5kIGFsc28gYWRkcmVzcyBpbiB0aGUgRW52LmRvbWFpbiBtYXAqKVxuICAgIGluajogUmVuYW1pbmcudDsgKCogRnJvbSBkc3QgVG8gKFwidGhpc1wiIGNjICsgZXh0cmEgZWRnZSkgKilcbiAgfVxuXG4gIHR5cGUgcG9pbnQgPSB7XG4gICAgY29udGVudDogY2M7XG4gICAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xuICAgIGRlcHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIG11dGFibGUgc29uczogdHJhbnNpdGlvbiBsaXN0O1xuICB9XG5cbiAgdmFsIGNvbnRlbnQgOiBwb2ludCAtPiBjY1xuICB2YWwgcm9vdHMgOiBwb2ludCAtPiAoaW50IGxpc3QgKCppZHMqKSAqIGludCAoKnR5KikpIG9wdGlvblxuICB2YWwgZGVwcyA6IHBvaW50IC0+IE9wZXJhdG9yLkRlcFNldC50XG4gIHZhbCBzb25zIDogcG9pbnQgLT4gdHJhbnNpdGlvbiBsaXN0XG5cbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBtYXhfb2JzOiBpbnQ7XG4gICAgZG9tYWluOiBwb2ludCBhcnJheTtcbiAgICBlbGVtZW50YXJpZXM6IChOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uc3RlcCAqIGlkKSBsaXN0IGFycmF5IGFycmF5O1xuICAgIHNpbmdsZV9hZ2VudF9wb2ludHM6IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb24gYXJyYXk7XG4gIH1cblxuICB2YWwgZ2V0IDogdCAtPiBpZCAtPiBwb2ludFxuICB2YWwgZ2V0X3NpbmdsZV9hZ2VudCA6IGludCAtPiB0IC0+IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb25cbiAgdmFsIHRvX25hdmlnYXRpb24gOiB0IC0+IGlkIC0+IE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi50XG5cbiAgdmFsIGdldF9lbGVtZW50YXJ5IDpcbiAgICBkZWJ1Z19tb2RlOmJvb2wgLT5cbiAgICB0IC0+XG4gICAgQWdlbnQudCAtPlxuICAgIGludCAtPlxuICAgIE5hdmlnYXRpb24uYWJzdHJhY3QgTmF2aWdhdGlvbi5hcnJvdyAtPlxuICAgIChpZCAqIHBvaW50ICogUmVuYW1pbmcudCkgb3B0aW9uXG5cbiAgdmFsIHNpZ25hdHVyZXMgOiB0IC0+IFNpZ25hdHVyZS5zXG4gIHZhbCBuZXdfb2JzX21hcCA6IHQgLT4gKGlkIC0+ICdhKSAtPiAnYSBPYnNNYXAudFxuICB2YWwgcHJpbnQgOiBub0NvdW50ZXJzOmJvb2wgLT4gRm9ybWF0LmZvcm1hdHRlciAtPiB0IC0+IHVuaXRcbiAgdmFsIHRvX3lvanNvbiA6IHQgLT4gWW9qc29uLkJhc2ljLnRcbiAgdmFsIG9mX3lvanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHRyYW5zaXRpb24gPSB7XG4gICAgbmV4dDogTmF2aWdhdGlvbi5hYnN0cmFjdCBOYXZpZ2F0aW9uLnQ7XG4gICAgZHN0OiBpZDsgKCogaWQgb2YgY2MgYW5kIGFsc28gYWRkcmVzcyBpbiB0aGUgRW52LmRvbWFpbiBtYXAqKVxuICAgIGluajogUmVuYW1pbmcudDsgKCogRnJvbSBkc3QgVG8gKFwidGhpc1wiIGNjICsgZXh0cmEgZWRnZSkgKilcbiAgfVxuXG4gIHR5cGUgcG9pbnQgPSB7XG4gICAgY29udGVudDogY2M7XG4gICAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xuICAgIGRlcHM6IE9wZXJhdG9yLkRlcFNldC50O1xuICAgIG11dGFibGUgc29uczogdHJhbnNpdGlvbiBsaXN0O1xuICB9XG5cbiAgbGV0IGNvbnRlbnQgcCA9IHAuY29udGVudFxuICBsZXQgcm9vdHMgcCA9IHAucm9vdHNcbiAgbGV0IGRlcHMgcCA9IHAuZGVwc1xuICBsZXQgc29ucyBwID0gcC5zb25zXG5cbiAgdHlwZSB0ID0ge1xuICAgIHNpZ19kZWNsOiBTaWduYXR1cmUucztcbiAgICBpZF9ieV90eXBlOiBpbnQgbGlzdCBhcnJheTtcbiAgICBtYXhfb2JzOiBpbnQ7XG4gICAgZG9tYWluOiBwb2ludCBhcnJheTtcbiAgICBlbGVtZW50YXJpZXM6IChOYXZpZ2F0aW9uLmFic3RyYWN0IE5hdmlnYXRpb24uc3RlcCAqIGlkKSBsaXN0IGFycmF5IGFycmF5O1xuICAgIHNpbmdsZV9hZ2VudF9wb2ludHM6IChpZCAqIE9wZXJhdG9yLkRlcFNldC50KSBvcHRpb24gYXJyYXk7XG4gIH1cblxuICBsZXQgc2lnbmF0dXJlcyBlbnYgPSBlbnYuc2lnX2RlY2xcblxuICBsZXQgcHJpbnQgfm5vQ291bnRlcnMgZiBlbnYgPVxuICAgIGxldCBwcF9wb2ludCBwX2lkIGYgcCA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aG92IDI+QFs8aD4lYUBdQCAldC0+IEBbKCVhKUBdQF1cIlxuICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICBwcmludF9jYyB+bm9Db3VudGVycyB+c2lnczplbnYuc2lnX2RlY2wgfmNjX2lkOnBfaWQgfndpdGhfaWQ6dHJ1ZSB4KVxuICAgICAgICBwLmNvbnRlbnRcbiAgICAgICAgKGZ1biBmIC0+XG4gICAgICAgICAgaWYgcC5yb290cyA8PiBOb25lIHRoZW5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAW1slYV1AXUAgXCJcbiAgICAgICAgICAgICAgKFBwLnNldCBPcGVyYXRvci5EZXBTZXQuZWxlbWVudHMgUHAuc3BhY2UgT3BlcmF0b3IucHJpbnRfcmV2X2RlcClcbiAgICAgICAgICAgICAgcC5kZXBzKVxuICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgcyAtPlxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyVhKCVhKUAgJWlAXVwiXG4gICAgICAgICAgICAgICAoTmF2aWdhdGlvbi5wcmludCBlbnYuc2lnX2RlY2wgKGZpbmRfdHkgcC5jb250ZW50KSlcbiAgICAgICAgICAgICAgIHMubmV4dCBSZW5hbWluZy5wcmludCBzLmluaiBzLmRzdCkpXG4gICAgICAgIHAuc29uc1xuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFAXVwiIChQcC5hcnJheSBQcC5zcGFjZSBwcF9wb2ludCkgZW52LmRvbWFpblxuXG4gIGxldCBnZXRfc2luZ2xlX2FnZW50IHR5IGVudiA9IGVudi5zaW5nbGVfYWdlbnRfcG9pbnRzLih0eSlcbiAgbGV0IGdldCBlbnYgY2NfaWQgPSBlbnYuZG9tYWluLihjY19pZClcblxuICBsZXQgdG9fbmF2aWdhdGlvbiBlbnYgaWQgPVxuICAgIGxldCBjYyA9IChnZXQgZW52IGlkKS5jb250ZW50IGluXG4gICAgcmF3X3RvX25hdmlnYXRpb24gdHJ1ZSBjYy5ub2Rlc19ieV90eXBlIGNjLm5vZGVzXG5cbiAgbGV0IHRyYW5zaXRpb25fdG9feW9qc29uIHQgPVxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImRzdFwiLCBgSW50IHQuZHN0O1xuICAgICAgICBcImlualwiLCBSZW5hbWluZy50b195b2pzb24gdC5pbmo7XG4gICAgICAgIFwibmF2XCIsIE5hdmlnYXRpb24udG9feW9qc29uIHQubmV4dDtcbiAgICAgIF1cblxuICBsZXQgdHJhbnNpdGlvbl9vZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiZHN0XCIsIGBJbnQgZHN0KTsgKFwiaW5qXCIsIHIpOyAoXCJuYXZcIiwgbikgXVxuICAgIHwgYEFzc29jIFsgKFwiZHN0XCIsIGBJbnQgZHN0KTsgKFwibmF2XCIsIG4pOyAoXCJpbmpcIiwgcikgXVxuICAgIHwgYEFzc29jIFsgKFwiaW5qXCIsIHIpOyAoXCJuYXZcIiwgbik7IChcImRzdFwiLCBgSW50IGRzdCkgXVxuICAgIHwgYEFzc29jIFsgKFwibmF2XCIsIG4pOyAoXCJpbmpcIiwgcik7IChcImRzdFwiLCBgSW50IGRzdCkgXVxuICAgIHwgYEFzc29jIFsgKFwiaW5qXCIsIHIpOyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJuYXZcIiwgbikgXVxuICAgIHwgYEFzc29jIFsgKFwibmF2XCIsIG4pOyAoXCJkc3RcIiwgYEludCBkc3QpOyAoXCJpbmpcIiwgcikgXSAtPlxuICAgICAgeyBkc3Q7IGluaiA9IFJlbmFtaW5nLm9mX3lvanNvbiByOyBuZXh0ID0gTmF2aWdhdGlvbi5vZl95b2pzb24gbiB9XG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB0cmFuc2l0aW9uXCIsIHgpKVxuXG4gIGxldCBwb2ludF90b195b2pzb24gcCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiY29udGVudFwiLCB0b195b2pzb24gcC5jb250ZW50O1xuICAgICAgICAoIFwicm9vdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAgIChmdW4gKGlkcywgdHkpIC0+XG4gICAgICAgICAgICAgIGBMaXN0IFsgYExpc3QgKExpc3QubWFwIEpzb25VdGlsLm9mX2ludCBpZHMpOyBgSW50IHR5IF0pXG4gICAgICAgICAgICBwLnJvb3RzICk7XG4gICAgICAgIFwiZGVwc1wiLCBPcGVyYXRvci5kZXBzZXRfdG9feW9qc29uIHAuZGVwcztcbiAgICAgICAgXCJzb25zXCIsIGBMaXN0IChMaXN0Lm1hcCB0cmFuc2l0aW9uX3RvX3lvanNvbiBwLnNvbnMpO1xuICAgICAgXVxuXG4gIGxldCBwb2ludF9vZl95b2pzb24gc2lnX2RlY2wgPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGNvbnRlbnQgPSBvZl95b2pzb24gc2lnX2RlY2wgKExpc3QuYXNzb2MgXCJjb250ZW50XCIgbCk7XG4gICAgICAgICAgIHJvb3RzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInJvb3RzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTnVsbCAtPiBOb25lXG4gICAgICAgICAgICAgfCBgTGlzdCBbIGBMaXN0IGlkczsgYEludCB0eSBdIC0+XG4gICAgICAgICAgICAgICBTb21lIChMaXN0Lm1hcCBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgaWRzLCB0eSlcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgZGVwcyA9IE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb24gKExpc3QuYXNzb2MgXCJkZXBzXCIgbCk7XG4gICAgICAgICAgIHNvbnMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwic29uc1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPiBMaXN0Lm1hcCB0cmFuc2l0aW9uX29mX3lvanNvbiBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBkb21haW4gcG9pbnRcIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZG9tYWluIHBvaW50XCIsIHgpKVxuXG4gIGxldCB0b195b2pzb24gZW52ID1cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJzaWduYXR1cmVzXCIsIFNpZ25hdHVyZS50b19qc29uIGVudi5zaWdfZGVjbDtcbiAgICAgICAgKCBcInNpbmdsZV9hZ2VudHNcIixcbiAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgIChmdW4geCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgfCBTb21lIChpZCwgX2RlcHMpIC0+IGBJbnQgaWQpXG4gICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5zaW5nbGVfYWdlbnRfcG9pbnRzIFtdKSApO1xuICAgICAgICAoIFwiZWxlbWVudGFyaWVzXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgICAgKEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoc3QsIGQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYExpc3QgWyBOYXZpZ2F0aW9uLnN0ZXBfdG9feW9qc29uIHN0OyBgSW50IGQgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeClcbiAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgICB4IFtdKVxuICAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgICBlbnYuZWxlbWVudGFyaWVzIFtdKSApO1xuICAgICAgICAoIFwiZGFnXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+IHBvaW50X3RvX3lvanNvbiB4IDo6IGFjYylcbiAgICAgICAgICAgICAgIGVudi5kb21haW4gW10pICk7XG4gICAgICAgICggXCJpZF9ieV90eXBlXCIsXG4gICAgICAgICAgYExpc3RcbiAgICAgICAgICAgIChBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAoZnVuIHggYWNjIC0+IGBMaXN0IChMaXN0Lm1hcCAoZnVuIGkgLT4gYEludCBpKSB4KSA6OiBhY2MpXG4gICAgICAgICAgICAgICBlbnYuaWRfYnlfdHlwZSBbXSkgKTtcbiAgICAgICAgXCJtYXhfb2JzXCIsIGBJbnQgZW52Lm1heF9vYnM7XG4gICAgICBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgIGxldCBzaWdfZGVjbCA9IFNpZ25hdHVyZS5vZl9qc29uIChMaXN0LmFzc29jIFwic2lnbmF0dXJlc1wiIGwpIGluXG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIHNpZ19kZWNsO1xuICAgICAgICAgICBzaW5nbGVfYWdlbnRfcG9pbnRzID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInNpbmdsZV9hZ2VudHNcIiBsIHdpdGhcbiAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgfCBgSW50IGkgLT4gaSwgT3BlcmF0b3IuRGVwU2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBzaW5nbGVfYWdlbnRcIiwgeCkpKSlcbiAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgICBlbGVtZW50YXJpZXMgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiZWxlbWVudGFyaWVzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIHM7IGBJbnQgZCBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYXZpZ2F0aW9uLnN0ZXBfb2ZfeW9qc29uIHMsIGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgZG9tYWluID1cbiAgICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImRhZ1wiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAocG9pbnRfb2ZfeW9qc29uIHNpZ19kZWNsKSBsXG4gICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZCk7XG4gICAgICAgICAgIGlkX2J5X3R5cGUgPVxuICAgICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiaWRfYnlfdHlwZVwiIGwgd2l0aFxuICAgICAgICAgICAgIHwgYExpc3QgbCAtPlxuICAgICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgfCBgTGlzdCBsIC0+XG4gICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICB8IGBJbnQgaSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgICAgICAgICAgbFxuICAgICAgICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgICAgbWF4X29icyA9XG4gICAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJtYXhfb2JzXCIgbCB3aXRoXG4gICAgICAgICAgICAgfCBgSW50IGkgLT4gaVxuICAgICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgfVxuICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgdXBkYXRlIGRvbWFpblwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCB1cGRhdGUgZG9tYWluXCIsIHgpKVxuXG4gIGxldCBuZXdfb2JzX21hcCBlbnYgZiA9IE1vZHMuRHluQXJyYXkuaW5pdCBlbnYubWF4X29icyBmXG5cbiAgbGV0IGdldF9lbGVtZW50YXJ5IH5kZWJ1Z19tb2RlIGRvbWFpbiAoKF8sIHR5KSBhcyBub2RlKSBzIGFycm93ID1cbiAgICBsZXQgc2EgPSBkb21haW4uZWxlbWVudGFyaWVzLih0eSkgaW5cbiAgICBsZXQgcmVjIGZpbmRfZ29vZF9lZGdlID0gZnVuY3Rpb25cbiAgICAgICgqb25lIHNob3VsZCB1c2UgYSBoYXNoIGhlcmUqKVxuICAgICAgfCBbXSAtPiBOb25lXG4gICAgICB8IChzdCwgY2NfaWQpIDo6IHRhaWwgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE5hdmlnYXRpb24uY29tcGF0aWJsZV9mcmVzaF9wb2ludCB+ZGVidWdfbW9kZSBzdCBub2RlIHMgYXJyb3dcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGZpbmRfZ29vZF9lZGdlIHRhaWxcbiAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICBsZXQgZHN0ID0gZ2V0IGRvbWFpbiBjY19pZCBpblxuICAgICAgICAgIFNvbWUgKGNjX2lkLCBkc3QsIGluaicpKVxuICAgIGluXG4gICAgZmluZF9nb29kX2VkZ2Ugc2EuKHMpXG5lbmRcblxubGV0IHByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQgZiBpZCA9XG4gIG1hdGNoIGRvbWFpbiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgaWRcbiAgfCBTb21lIGVudiAtPlxuICAgIGxldCBjY19pZCA9XG4gICAgICBpZiB3aXRoX2lkIHRoZW5cbiAgICAgICAgU29tZSBpZFxuICAgICAgZWxzZVxuICAgICAgICBOb25lXG4gICAgaW5cbiAgICBwcmludF9jYyB+bm9Db3VudGVycyB+c2lnczooRW52LnNpZ25hdHVyZXMgZW52KSA/Y2NfaWQgfndpdGhfaWQgZlxuICAgICAgZW52LkVudi5kb21haW4uKGlkKS5FbnYuY29udGVudFxuXG5sZXQgZW1iZWRkaW5nc190b19mdWxseV9zcGVjaWZpZWQgfmRlYnVnX21vZGUgZG9tYWluIGFfaWQgYiA9XG4gIGxldCBhID0gZG9tYWluLkVudi5kb21haW4uKGFfaWQpLkVudi5jb250ZW50IGluXG4gIG1hdGNoIGZpbmRfcm9vdCBhIHdpdGhcbiAgfCBOb25lIC0+IFsgUmVuYW1pbmcuZW1wdHkgKCkgXVxuICB8IFNvbWUgKGgsIHR5KSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBhZyAtPlxuICAgICAgICBtYXRjaCBhcmVfY29tcGF0aWJsZSB+ZGVidWdfbW9kZSB+c3RyaWN0OmZhbHNlIGggYSBhZyBiIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+IGFjY1xuICAgICAgICB8IFNvbWUgciwgXyAtPiByIDo6IGFjYylcbiAgICAgIFtdIGIubm9kZXNfYnlfdHlwZS4odHkpXG5cbnR5cGUgcHJlcG9pbnQgPSB7XG4gIHBfaWQ6IGlkO1xuICBlbGVtZW50OiBjYztcbiAgZGVwZW5kaW5nOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgcm9vdHM6IChpbnQgbGlzdCAoKmlkcyopICogaW50ICgqdHkqKSkgb3B0aW9uO1xufVxuXG50eXBlIHdvcmsgPSB7XG4gIHNpZ3M6IFNpZ25hdHVyZS5zO1xuICBjY19lbnY6IHByZXBvaW50IGxpc3QgTW9kcy5JbnRNYXAudCBNb2RzLkludE1hcC50O1xuICByZXNlcnZlZF9pZDogaW50IGxpc3QgYXJyYXk7XG4gIHVzZWRfaWQ6IGludCBsaXN0IGFycmF5O1xuICBmcmVlX2lkOiBpbnQ7XG4gIGNjX25vZGVzOiAobGluayAqIGludCkgYXJyYXkgTW9kcy5JbnRNYXAudDtcbiAgZGFuZ2xpbmc6IGludDsgKCogbm9kZV9pZCAqKVxufVxuXG5tb2R1bGUgUHJlRW52ID0gc3RydWN0XG4gIHR5cGUgdCA9IHtcbiAgICBzaWdfZGVjbDogU2lnbmF0dXJlLnM7XG4gICAgaWRfYnlfdHlwZTogaW50IGxpc3QgYXJyYXk7XG4gICAgbmJfaWQ6IGludDtcbiAgICBkb21haW46IHByZXBvaW50IGxpc3QgTW9kcy5JbnRNYXAudCBNb2RzLkludE1hcC50O1xuICAgIG11dGFibGUgdXNlZF9ieV9hX2JlZ2luX25ldzogYm9vbDtcbiAgfVxuXG4gIHR5cGUgc3RhdCA9IHsgc3RhdF9ub2RlczogaW50OyBzdGF0X25hdl9zdGVwczogaW50IH1cblxuICBsZXQgZnJlc2ggc2lncyBpZF9ieV90eXBlIG5iX2lkIGRvbWFpbiA9XG4gICAgeyBzaWdfZGVjbCA9IHNpZ3M7IGlkX2J5X3R5cGU7IG5iX2lkOyBkb21haW47IHVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZSB9XG5cbiAgbGV0IGVtcHR5IHNpZ3MgPVxuICAgIGxldCBuYnQnID0gQXJyYXkubWFrZSAoU2lnbmF0dXJlLnNpemUgc2lncykgW10gaW5cbiAgICBmcmVzaCBzaWdzIG5idCcgMSBNb2RzLkludE1hcC5lbXB0eVxuXG4gIGxldCBjaGVja192aXRhbGl0eSBlbnYgPSBhc3NlcnQgKGVudi51c2VkX2J5X2FfYmVnaW5fbmV3ID0gZmFsc2UpXG5cbiAgbGV0IHRvX3dvcmsgZW52ID1cbiAgICBsZXQgKCkgPSBjaGVja192aXRhbGl0eSBlbnYgaW5cbiAgICBsZXQgKCkgPSBlbnYudXNlZF9ieV9hX2JlZ2luX25ldyA8LSB0cnVlIGluXG4gICAge1xuICAgICAgc2lncyA9IGVudi5zaWdfZGVjbDtcbiAgICAgIGNjX2VudiA9IGVudi5kb21haW47XG4gICAgICByZXNlcnZlZF9pZCA9IGVudi5pZF9ieV90eXBlO1xuICAgICAgdXNlZF9pZCA9IEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBlbnYuaWRfYnlfdHlwZSkgW107XG4gICAgICBmcmVlX2lkID0gZW52Lm5iX2lkO1xuICAgICAgY2Nfbm9kZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgIGRhbmdsaW5nID0gMDtcbiAgICB9XG5cbiAgbGV0IHNpZ3MgZW52ID0gZW52LnNpZ19kZWNsXG5cbiAgbGV0IGVtcHR5X3BvaW50IHNpZ3MgPVxuICAgIHtcbiAgICAgIEVudi5jb250ZW50ID0gZW1wdHlfY2Mgc2lncztcbiAgICAgIEVudi5yb290cyA9IE5vbmU7XG4gICAgICBFbnYuZGVwcyA9IE9wZXJhdG9yLkRlcFNldC5lbXB0eTtcbiAgICAgIEVudi5zb25zID0gW107XG4gICAgfVxuXG4gIGxldCBmaWxsX2VsZW0gc2lncyBib3R0b20gPVxuICAgIGxldCBlbGVtZW50YXJpZXMgPVxuICAgICAgQXJyYXkuaW5pdCAoU2lnbmF0dXJlLnNpemUgc2lncykgKGZ1biBpIC0+XG4gICAgICAgICAgQXJyYXkubWFrZSAoU2lnbmF0dXJlLmFyaXR5IHNpZ3MgaSkgW10pXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biBwIC0+XG4gICAgICAgICAgICAgIG1hdGNoIHAuZWxlbWVudC5yZWNvZ25fbmF2IHdpdGhcbiAgICAgICAgICAgICAgfCBbXSB8ICgoTmF2aWdhdGlvbi5FeGlzdGluZyBfLCBfKSwgXykgOjogXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgfCAoKE5hdmlnYXRpb24uRnJlc2ggXywgXyksIF8pIDo6IF8gOjogXyAtPiAoKVxuICAgICAgICAgICAgICB8IFsgKCgoTmF2aWdhdGlvbi5GcmVzaCAoXywgdHkxKSwgczEpLCBhcnIpIGFzIHN0ZXApIF0gLT5cbiAgICAgICAgICAgICAgICBsZXQgc2ExID0gZWxlbWVudGFyaWVzLih0eTEpIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gc2ExLihzMSkgPC0gKHN0ZXAsIHAucF9pZCkgOjogc2ExLihzMSkgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2ggYXJyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5hdmlnYXRpb24uVG9Ob2RlIChOYXZpZ2F0aW9uLkZyZXNoIChfLCB0eTIpLCBzMikgLT5cbiAgICAgICAgICAgICAgICAgIGlmIHR5MSA9IHR5MiAmJiBzMSA8PiBzMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgIHNhMS4oczIpIDwtIChzdGVwLCBwLnBfaWQpIDo6IHNhMS4oczIpXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNhMiA9IGVsZW1lbnRhcmllcy4odHkyKSBpblxuICAgICAgICAgICAgICAgICAgICBzYTIuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTIuKHMyKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRXhpc3RpbmcgXywgczIpIC0+XG4gICAgICAgICAgICAgICAgICBzYTEuKHMyKSA8LSAoc3RlcCwgcC5wX2lkKSA6OiBzYTEuKHMyKVxuICAgICAgICAgICAgICAgIHwgTmF2aWdhdGlvbi5Ub05vdGhpbmcgfCBOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgXyAtPiAoKSkpKVxuICAgICAgICBib3R0b21cbiAgICBpblxuICAgIGVsZW1lbnRhcmllc1xuXG4gIGxldCBwcmVzZW50X2luX2RzdCB+ZGVidWdfbW9kZSBkc3QgaW5qMmRzdCBuYXYgPVxuICAgIGxldCByZWMgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgPSBmdW5jdGlvblxuICAgICAgfCBbXSAtPiBTb21lIGluaidcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkZyZXNoIF8sIF8pLCBfKSA6OiBfIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCAoKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSwgTmF2aWdhdGlvbi5Ub05vdGhpbmcpIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBpZiBmc3Qgbi4oc2kpID0gRnJlZSB0aGVuXG4gICAgICAgICAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qJyB0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgIHwgKChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksIE5hdmlnYXRpb24uVG9JbnRlcm5hbCBpKSA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgc25kIG4uKHNpKSA9IGkgdGhlblxuICAgICAgICAgICAgYXV4X3ByZXNlbnRfaW5fZHN0IGluaicgdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIE5vbmUpXG4gICAgICB8ICggKE5hdmlnYXRpb24uRXhpc3RpbmcgYWcsIHNpKSxcbiAgICAgICAgICBOYXZpZ2F0aW9uLlRvTm9kZSAoTmF2aWdhdGlvbi5FeGlzdGluZyBhZycsIHNpJykgKVxuICAgICAgICA6OiB0IC0+XG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICBNb2RzLkludE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmonIGFnKVxuICAgICAgICAgICAgIGRzdC5ub2Rlc1xuICAgICAgICAgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIHwgU29tZSBuIC0+XG4gICAgICAgICAgaWYgZnN0IG4uKHNpKSA9IExpbmsgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcnLCBzaScpIHRoZW5cbiAgICAgICAgICAgIGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBOb25lKVxuICAgICAgfCAoIChOYXZpZ2F0aW9uLkV4aXN0aW5nIGFnLCBzaSksXG4gICAgICAgICAgTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggKGFnJywgdHknKSwgc2knKSApXG4gICAgICAgIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uXG4gICAgICAgICAgICAgKFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIGluaicgYWcpXG4gICAgICAgICAgICAgZHN0Lm5vZGVzXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICAobWF0Y2ggbi4oc2kpIHdpdGhcbiAgICAgICAgICB8IExpbmsgKGFnbCwgc2lsKSwgXyAtPlxuICAgICAgICAgICAgaWYgTGlzdC5tZW0gYWdsIGRzdC5ub2Rlc19ieV90eXBlLih0eScpICYmIHNpJyA9IHNpbCB0aGVuIChcbiAgICAgICAgICAgICAgbWF0Y2ggUmVuYW1pbmcuYWRkIH5kZWJ1Z19tb2RlIGFnJyBhZ2wgaW5qJyB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSBpbmonIC0+IGF1eF9wcmVzZW50X2luX2RzdCBpbmonIHRcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgfCAoRnJlZSB8IFVuU3BlYyksIF8gLT4gTm9uZSkpXG4gICAgaW5cbiAgICBhdXhfcHJlc2VudF9pbl9kc3QgaW5qMmRzdCBuYXZcblxuICBsZXQgcmVjIGluc2VydF9uYXZpZ2F0aW9uIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgZG9tYWluIGRzdF9pZCBkc3RcbiAgICAgIGluajJkc3QgcF9pZCA9XG4gICAgaWYgcF9pZCA9IGRzdF9pZCB0aGVuXG4gICAgICAwXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcG9pbnQgPSBkb21haW4uKHBfaWQpIGluXG4gICAgICBsZXQgcmVjIGluc2VydF9uYXZfc29ucyA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBsZXQgKGlual9lMnN1cCwgXyksIHN1cCA9XG4gICAgICAgICAgICBtZXJnZV9jb21wYXRpYmxlIH5kZWJ1Z19tb2RlIGlkX2J5X3R5cGUgbmJfaWQgaW5qMmRzdFxuICAgICAgICAgICAgICBwb2ludC5FbnYuY29udGVudCBkc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIChtYXRjaCBlcXVhbCB+ZGVidWdfbW9kZSBzdXAgZHN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgfCBTb21lIGlual9zdXAyZHN0IC0+XG4gICAgICAgICAgICBsZXQgaW5qX2RzdDJwID1cbiAgICAgICAgICAgICAgUmVuYW1pbmcuaW52ZXJzZVxuICAgICAgICAgICAgICAgIChSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIGlual9lMnN1cCBpbmpfc3VwMmRzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbmF2ID1cbiAgICAgICAgICAgICAgYnVpbGRfbmF2aWdhdGlvbl9iZXR3ZWVuIH5kZWJ1Z19tb2RlIGlual9kc3QycCBwb2ludC5FbnYuY29udGVudFxuICAgICAgICAgICAgICAgIGRzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBvaW50LkVudi5zb25zIDwtXG4gICAgICAgICAgICAgICAgeyBFbnYuZHN0ID0gZHN0X2lkOyBFbnYuaW5qID0gaW5qX2RzdDJwOyBFbnYubmV4dCA9IG5hdiB9XG4gICAgICAgICAgICAgICAgOjogcG9pbnQuRW52LnNvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBMaXN0Lmxlbmd0aCBuYXYpXG4gICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgKG1hdGNoIHByZXNlbnRfaW5fZHN0IH5kZWJ1Z19tb2RlIGRzdCBpbmoyZHN0IGguRW52Lm5leHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBpbnNlcnRfbmF2X3NvbnMgdFxuICAgICAgICAgIHwgU29tZSBpbmpfcCcyZHN0IC0+XG4gICAgICAgICAgICBpbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZSBpZF9ieV90eXBlIG5iX2lkIGRvbWFpbiBkc3RfaWQgZHN0XG4gICAgICAgICAgICAgIChSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIGguRW52LmluaiBpbmpfcCcyZHN0KVxuICAgICAgICAgICAgICBoLkVudi5kc3QpXG4gICAgICBpblxuICAgICAgaW5zZXJ0X25hdl9zb25zIHBvaW50LkVudi5zb25zXG4gICAgKVxuXG4gIGxldCBhZGRfY2MgfmRlYnVnX21vZGUgfnRvcGxldmVsID9vcmlnaW4gZW52IHBfaWQgZWxlbWVudCA9XG4gICAgbGV0IHcgPSB3ZWlnaHQgZWxlbWVudCBpblxuICAgIGxldCBoYXNoID0gY29hcnNlX2hhc2ggZWxlbWVudCBpblxuICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgIHwgW10gLT5cbiAgICAgICAgbGV0IHJvb3RzID1cbiAgICAgICAgICBpZiB0b3BsZXZlbCB0aGVuIChcbiAgICAgICAgICAgIG1hdGNoIGZpbmRfcm9vdCBlbGVtZW50IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgKHJpZCwgcnR5KSAtPlxuICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgKCBMaXN0LnNvcnQgTW9kcy5pbnRfY29tcGFyZVxuICAgICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biByIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHIgcmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAoYXV0b21vcnBoaXNtcyB+ZGVidWdfbW9kZSBlbGVtZW50KSksXG4gICAgICAgICAgICAgICAgICBydHkgKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgTm9uZVxuICAgICAgICBpblxuICAgICAgICAoIFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcF9pZDtcbiAgICAgICAgICAgICAgZWxlbWVudDtcbiAgICAgICAgICAgICAgcm9vdHM7XG4gICAgICAgICAgICAgIGRlcGVuZGluZyA9IGFkZF9vcmlnaW4gT3BlcmF0b3IuRGVwU2V0LmVtcHR5IG9yaWdpbjtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgXSxcbiAgICAgICAgICBpZGVudGl0eV9pbmplY3Rpb24gZWxlbWVudCxcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBfaWQgKVxuICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgKG1hdGNoIGVxdWFsIH5kZWJ1Z19tb2RlIGVsZW1lbnQgaC5lbGVtZW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGEsIGIsIGMsIGQgPSBhdXggdCBpblxuICAgICAgICAgIGggOjogYSwgYiwgYywgZFxuICAgICAgICB8IFNvbWUgciAtPlxuICAgICAgICAgIGxldCByb290cyA9XG4gICAgICAgICAgICBpZiBoLnJvb3RzIDw+IE5vbmUgfHwgbm90IHRvcGxldmVsIHRoZW5cbiAgICAgICAgICAgICAgaC5yb290c1xuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIGZpbmRfcm9vdCBlbGVtZW50IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIChyaWQsIHJ0eSkgLT5cbiAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAoIExpc3Quc29ydCBNb2RzLmludF9jb21wYXJlXG4gICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biByIC0+IFJlbmFtaW5nLmFwcGx5IH5kZWJ1Z19tb2RlIHIgcmlkKVxuICAgICAgICAgICAgICAgICAgICAgICAgIChhdXRvbW9ycGhpc21zIH5kZWJ1Z19tb2RlIGVsZW1lbnQpKSxcbiAgICAgICAgICAgICAgICAgICAgcnR5IClcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgICgge1xuICAgICAgICAgICAgICBwX2lkID0gaC5wX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50ID0gaC5lbGVtZW50O1xuICAgICAgICAgICAgICBkZXBlbmRpbmcgPSBhZGRfb3JpZ2luIGguZGVwZW5kaW5nIG9yaWdpbjtcbiAgICAgICAgICAgICAgcm9vdHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICA6OiB0LFxuICAgICAgICAgICAgcixcbiAgICAgICAgICAgIGguZWxlbWVudCxcbiAgICAgICAgICAgIGgucF9pZCApKVxuICAgIGluXG4gICAgbGV0IGVudl93ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IHcgZW52IGluXG4gICAgbGV0IGVudl93X2gsIHIsIG91dCwgb3V0X2lkID1cbiAgICAgIGF1eCAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhhc2ggZW52X3cpXG4gICAgaW5cbiAgICBNb2RzLkludE1hcC5hZGQgdyAoTW9kcy5JbnRNYXAuYWRkIGhhc2ggZW52X3dfaCBlbnZfdykgZW52LCByLCBvdXQsIG91dF9pZFxuXG4gIGxldCByZWMgc2F0dXJhdGVfb25lIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgdGhpcyBtYXhfbCBsZXZlbFxuICAgICAgKChfLCBkb21haW4pIGFzIGFjYykgPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIGxldmVsIDwgbWF4X2wgdGhlblxuICAgICAgICBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIChzdWNjIGxldmVsKSBhY2NcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgIChmdW4gXyAtPiBMaXN0LnJldl9hcHBlbmQpXG4gICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludE1hcC5lbXB0eSAoc3VjYyBsZXZlbCkgZG9tYWluKVxuICAgICAgICAgICAgIFtdKVxuICAgICAgZWxzZVxuICAgICAgICBhY2NcbiAgICB8IGggOjogdCAtPlxuICAgICAgbGV0IG5ld3MgPVxuICAgICAgICBtYXRjaCBzaGFyaW5nIHdpdGhcbiAgICAgICAgfCBOb19zaGFyaW5nIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICB8IE1heF9zaGFyaW5nIC0+IGluZnMgc2lncyB+ZGVidWdfbW9kZSB0aGlzLmVsZW1lbnQgaC5lbGVtZW50XG4gICAgICAgIHwgQ29tcGF0aWJsZV9wYXR0ZXJucyAtPlxuICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgKGZ1biByIC0+IGludGVyc2VjdGlvbiByIHRoaXMuZWxlbWVudCBoLmVsZW1lbnQpXG4gICAgICAgICAgICAobWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgdGhpcy5lbGVtZW50IGguZWxlbWVudClcbiAgICAgIGluXG4gICAgICBsZXQgYWNjJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAobWlkLCBhY2MpIGNjIC0+XG4gICAgICAgICAgICBsZXQgaWQnID0gc3VjYyBtaWQgaW5cbiAgICAgICAgICAgIGxldCB4LCBfLCBfLCBpZCA9IGFkZF9jYyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6ZmFsc2UgYWNjIGlkJyBjYyBpblxuICAgICAgICAgICAgKCAoaWYgaWQgPSBpZCcgdGhlblxuICAgICAgICAgICAgICAgICBpZFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBtaWQpLFxuICAgICAgICAgICAgICB4ICkpXG4gICAgICAgICAgYWNjIG5ld3NcbiAgICAgIGluXG4gICAgICBzYXR1cmF0ZV9vbmUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyB0aGlzIG1heF9sIGxldmVsIGFjYycgdFxuXG4gIGxldCByZWMgc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCBsZXZlbFxuICAgICAgKChfLCBkb21haW4pIGFzIGFjYykgPVxuICAgIGlmIGxldmVsIDwgMiB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGxldmVsIGRvbWFpbiB3aXRoXG4gICAgICB8IE5vbmUgLT4gc2F0dXJhdGVfbGV2ZWwgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBtYXhfbCAocHJlZCBsZXZlbCkgYWNjXG4gICAgICB8IFNvbWUgbGlzdCAtPlxuICAgICAgICBsZXQgcmVjIGF1eCBhY2MgPSBmdW5jdGlvblxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgIHNhdHVyYXRlX2xldmVsIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIHNpZ3MgbWF4X2wgKHByZWQgbGV2ZWwpIGFjY1xuICAgICAgICAgIHwgaCA6OiB0IC0+XG4gICAgICAgICAgICBhdXggKHNhdHVyYXRlX29uZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGggbWF4X2wgbGV2ZWwgYWNjIHQpIHRcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGFjYyAoTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8gLT4gTGlzdC5yZXZfYXBwZW5kKSBsaXN0IFtdKVxuICAgIClcblxuICBsZXQgc2F0dXJhdGUgfmRlYnVnX21vZGUgfnNoYXJpbmcgc2lncyBkb21haW4gPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLm1heF9rZXkgZG9tYWluIHdpdGhcbiAgICB8IE5vbmUgLT4gMCwgZG9tYWluXG4gICAgfCBTb21lIGwgLT5cbiAgICAgIGxldCBzaSA9XG4gICAgICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIGwgbSAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbSBwIC0+IG1heCBtIHAucF9pZCkgbSBsKSlcbiAgICAgICAgICBkb21haW4gMFxuICAgICAgaW5cbiAgICAgIChtYXRjaCBzaGFyaW5nIHdpdGhcbiAgICAgIHwgTm9fc2hhcmluZyAtPiBzaSwgZG9tYWluXG4gICAgICB8IENvbXBhdGlibGVfcGF0dGVybnMgfCBNYXhfc2hhcmluZyAtPlxuICAgICAgICBzYXR1cmF0ZV9sZXZlbCB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGwgbCAoc2ksIGRvbWFpbikpXG5cbiAgbGV0IG9mX2VudiBlbnYgPVxuICAgIGxldCBhZGRfY2MgYWNjIHAgPVxuICAgICAgbGV0IHcgPSB3ZWlnaHQgcC5lbGVtZW50IGluXG4gICAgICBsZXQgaGFzaCA9IGNvYXJzZV9oYXNoIHAuZWxlbWVudCBpblxuICAgICAgbGV0IGFjY193ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IHcgYWNjIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgd1xuICAgICAgICAoTW9kcy5JbnRNYXAuYWRkIGhhc2hcbiAgICAgICAgICAgKHAgOjogTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFtdIGhhc2ggYWNjX3cpXG4gICAgICAgICAgIGFjY193KVxuICAgICAgICBhY2NcbiAgICBpblxuICAgIGxldCBkb21haW4nID1cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBwX2lkIGFjYyBwIC0+XG4gICAgICAgICAgYWRkX2NjIGFjY1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBwX2lkO1xuICAgICAgICAgICAgICBlbGVtZW50ID0gcC5FbnYuY29udGVudDtcbiAgICAgICAgICAgICAgZGVwZW5kaW5nID0gcC5FbnYuZGVwcztcbiAgICAgICAgICAgICAgcm9vdHMgPSBwLkVudi5yb290cztcbiAgICAgICAgICAgIH0pXG4gICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IGVudi5FbnYuZG9tYWluXG4gICAgaW5cbiAgICB7XG4gICAgICBzaWdfZGVjbCA9IGVudi5FbnYuc2lnX2RlY2w7XG4gICAgICBuYl9pZCA9IHN1Y2MgKEFycmF5LmZvbGRfbGVmdCAoTGlzdC5mb2xkX2xlZnQgbWF4KSAwIGVudi5FbnYuaWRfYnlfdHlwZSk7XG4gICAgICBpZF9ieV90eXBlID0gZW52LkVudi5pZF9ieV90eXBlO1xuICAgICAgZG9tYWluID0gZG9tYWluJztcbiAgICAgIHVzZWRfYnlfYV9iZWdpbl9uZXcgPSBmYWxzZTtcbiAgICB9XG5cbiAgbGV0IGRlYnVnX3ByaW50IGYgZW52ID1cbiAgICBQcC5hcnJheSBQcC5jb21tYVxuICAgICAgKGZ1biB0eSBmIGwgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVkOiAldFwiIHR5IChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIltcIjtcbiAgICAgICAgICAgIFBwLmxpc3QgUHAuY29tbWEgKGZ1biBmIGEgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVkXCIgYSkgZiBsO1xuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIl1cIikpXG4gICAgICBmIGVudi5pZF9ieV90eXBlO1xuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ1c2VkX2J5X2FfYmVnaW5fbmV3ID0gJUJALlwiIGVudi51c2VkX2J5X2FfYmVnaW5fbmV3XG5lbmRcblxuKCoqIE9wZXJhdGlvbiB0byBjcmVhdGUgY2MgKilcbmxldCBjaGVja19kYW5nbGluZyB3ayA9XG4gIGlmIHdrLmRhbmdsaW5nIDw+IDAgdGhlblxuICAgIHJhaXNlIChkYW5nbGluZ19ub2RlIH5zaWdzOndrLnNpZ3Mgd2sudXNlZF9pZCB3ay5kYW5nbGluZylcblxubGV0IGJlZ2luX25ldyBlbnYgPSBQcmVFbnYudG9fd29yayBlbnZcblxubGV0IGZyZXNoX2NjX2lkIGRvbWFpbiA9XG4gIHN1Y2NcbiAgICAoTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT5cbiAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBwIC0+IG1heCBhY2MgcC5wX2lkKSBhY2MgeCkpXG4gICAgICAgZG9tYWluIDApXG5cbmxldCByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWwgP29yaWdpbiB3ayA9XG4gIGxldCAoKSA9IGNoZWNrX2RhbmdsaW5nIHdrIGluXG4gICgqIHJlYnVpbGQgZW52ICopXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICB3ay5yZXNlcnZlZF9pZC4oaSkgPC0gTGlzdC5yZXZfYXBwZW5kIHdrLnVzZWRfaWQuKGkpIHdrLnJlc2VydmVkX2lkLihpKSlcbiAgICAgIChBcnJheS5sZW5ndGggd2sudXNlZF9pZClcbiAgaW5cbiAgbGV0IG5vZGVzX2J5X3R5cGUgPSBBcnJheS5tYXAgTGlzdC5yZXYgd2sudXNlZF9pZCBpblxuICBsZXQgY2NfY2FuZGlkYXRlID1cbiAgICB7XG4gICAgICBub2Rlc19ieV90eXBlO1xuICAgICAgbm9kZXMgPSB3ay5jY19ub2RlcztcbiAgICAgIHJlY29nbl9uYXYgPSByYXdfdG9fbmF2aWdhdGlvbiBmYWxzZSBub2Rlc19ieV90eXBlIHdrLmNjX25vZGVzO1xuICAgIH1cbiAgaW5cbiAgbGV0IHByZWVudiwgciwgb3V0LCBvdXRfaWQgPVxuICAgIFByZUVudi5hZGRfY2MgfmRlYnVnX21vZGUgfnRvcGxldmVsID9vcmlnaW4gd2suY2NfZW52XG4gICAgICAoZnJlc2hfY2NfaWQgd2suY2NfZW52KSBjY19jYW5kaWRhdGVcbiAgaW5cbiAgUHJlRW52LmZyZXNoIHdrLnNpZ3Mgd2sucmVzZXJ2ZWRfaWQgd2suZnJlZV9pZCBwcmVlbnYsIHIsIG91dCwgb3V0X2lkXG5cbmxldCBmaW5pc2hfbmV3IH5kZWJ1Z19tb2RlID9vcmlnaW4gd2sgPVxuICByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6dHJ1ZSA/b3JpZ2luIHdrXG5cbmxldCBuZXdfbGluayB3ayAoKCh4LCBfKSBhcyBuMSksIGkpICgoKHksIF8pIGFzIG4yKSwgaikgPVxuICBsZXQgeF9uID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0geCB3ay5jY19ub2RlcyBpblxuICBsZXQgeV9uID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IFt8fF0geSB3ay5jY19ub2RlcyBpblxuICBtYXRjaCB4X24uKGkpLCB5X24uKGopIHdpdGhcbiAgfCAoVW5TcGVjLCBzdHgpLCAoVW5TcGVjLCBzdHkpIC0+XG4gICAgbGV0ICgpID0geF9uLihpKSA8LSBMaW5rICh5LCBqKSwgc3R4IGluXG4gICAgbGV0ICgpID0geV9uLihqKSA8LSBMaW5rICh4LCBpKSwgc3R5IGluXG4gICAgaWYgd2suZGFuZ2xpbmcgPSB4IHx8IHdrLmRhbmdsaW5nID0geSB0aGVuXG4gICAgICB7IHdrIHdpdGggZGFuZ2xpbmcgPSAwIH1cbiAgICBlbHNlXG4gICAgICB3a1xuICB8ICgoRnJlZSB8IExpbmsgXyksIF8pLCBfIC0+IHJhaXNlIChhbHJlYWR5X3NwZWNpZmllZCB+c2lnczp3ay5zaWdzIG4xIGkpXG4gIHwgXywgKChGcmVlIHwgTGluayBfKSwgXykgLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbjIgailcblxubGV0IG5ld19mcmVlIHdrICgoKHgsIF8pIGFzIG4pLCBpKSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIG1hdGNoIHhfbi4oaSkgd2l0aFxuICB8IFVuU3BlYywgc3QgLT5cbiAgICBsZXQgKCkgPSB4X24uKGkpIDwtIEZyZWUsIHN0IGluXG4gICAgd2tcbiAgfCAoRnJlZSB8IExpbmsgXyksIF8gLT4gcmFpc2UgKGFscmVhZHlfc3BlY2lmaWVkIH5zaWdzOndrLnNpZ3MgbiBpKVxuXG5sZXQgbmV3X2ludGVybmFsX3N0YXRlIHdrICgoKHgsIF8pIGFzIG4pLCBpKSB2YSA9XG4gIGxldCB4X24gPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSB4IHdrLmNjX25vZGVzIGluXG4gIGxldCBsLCBzID0geF9uLihpKSBpblxuICBpZiBzID49IDAgdGhlblxuICAgIHJhaXNlIChhbHJlYWR5X3NwZWNpZmllZCB+c2lnczp3ay5zaWdzIG4gaSlcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0geF9uLihpKSA8LSBsLCB2YSBpblxuICAgIHdrXG4gIClcblxubGV0IG5ld19ub2RlIHdrIHR5cGVfaWQgPVxuICBsZXQgKCkgPSBjaGVja19kYW5nbGluZyB3ayBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgd2suc2lncyB0eXBlX2lkIGluXG4gIG1hdGNoIHdrLnJlc2VydmVkX2lkLih0eXBlX2lkKSB3aXRoXG4gIHwgaCA6OiB0IC0+XG4gICAgbGV0ICgpID0gd2sudXNlZF9pZC4odHlwZV9pZCkgPC0gaCA6OiB3ay51c2VkX2lkLih0eXBlX2lkKSBpblxuICAgIGxldCAoKSA9IHdrLnJlc2VydmVkX2lkLih0eXBlX2lkKSA8LSB0IGluXG4gICAgbGV0IG5vZGUgPSBoLCB0eXBlX2lkIGluXG4gICAgKCBub2RlLFxuICAgICAge1xuICAgICAgICBzaWdzID0gd2suc2lncztcbiAgICAgICAgY2NfZW52ID0gd2suY2NfZW52O1xuICAgICAgICByZXNlcnZlZF9pZCA9IHdrLnJlc2VydmVkX2lkO1xuICAgICAgICB1c2VkX2lkID0gd2sudXNlZF9pZDtcbiAgICAgICAgZnJlZV9pZCA9IHdrLmZyZWVfaWQ7XG4gICAgICAgIGRhbmdsaW5nID1cbiAgICAgICAgICAoaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgd2suY2Nfbm9kZXMgdGhlblxuICAgICAgICAgICAgIDBcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGgpO1xuICAgICAgICBjY19ub2RlcyA9IE1vZHMuSW50TWFwLmFkZCBoIChBcnJheS5tYWtlIGFyaXR5IChVblNwZWMsIC0xKSkgd2suY2Nfbm9kZXM7XG4gICAgICB9IClcbiAgfCBbXSAtPlxuICAgIGxldCAoKSA9IHdrLnVzZWRfaWQuKHR5cGVfaWQpIDwtIHdrLmZyZWVfaWQgOjogd2sudXNlZF9pZC4odHlwZV9pZCkgaW5cbiAgICBsZXQgbm9kZSA9IHdrLmZyZWVfaWQsIHR5cGVfaWQgaW5cbiAgICAoIG5vZGUsXG4gICAgICB7XG4gICAgICAgIHNpZ3MgPSB3ay5zaWdzO1xuICAgICAgICBjY19lbnYgPSB3ay5jY19lbnY7XG4gICAgICAgIHJlc2VydmVkX2lkID0gd2sucmVzZXJ2ZWRfaWQ7XG4gICAgICAgIHVzZWRfaWQgPSB3ay51c2VkX2lkO1xuICAgICAgICBmcmVlX2lkID0gc3VjYyB3ay5mcmVlX2lkO1xuICAgICAgICBkYW5nbGluZyA9XG4gICAgICAgICAgKGlmIE1vZHMuSW50TWFwLmlzX2VtcHR5IHdrLmNjX25vZGVzIHRoZW5cbiAgICAgICAgICAgICAwXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICB3ay5mcmVlX2lkKTtcbiAgICAgICAgY2Nfbm9kZXMgPVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCB3ay5mcmVlX2lkIChBcnJheS5tYWtlIGFyaXR5IChVblNwZWMsIC0xKSkgd2suY2Nfbm9kZXM7XG4gICAgICB9IClcblxubGV0IG1pbmltYWxfZW52IH5kZWJ1Z19tb2RlIGVudiBjb250YWN0X21hcCA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIHR5IC0+XG4gICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gcyBhY2MgKGludHMsIGxpbmtzKSAtPlxuICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgIGxldCB3ID0gbmV3X2ZyZWUgdyAobiwgcykgaW5cbiAgICAgICAgICBsZXQgYWNjJywgXywgXywgXyA9IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3IGluXG4gICAgICAgICAgbGV0IGFjYycnID1cbiAgICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgICAgICAgKGZ1biBpIGFjYyAtPlxuICAgICAgICAgICAgICAgIGxldCB3ID0gYmVnaW5fbmV3IGFjYyBpblxuICAgICAgICAgICAgICAgIGxldCBuLCB3ID0gbmV3X25vZGUgdyB0eSBpblxuICAgICAgICAgICAgICAgIGxldCB3ID0gbmV3X2ludGVybmFsX3N0YXRlIHcgKG4sIHMpIGkgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0LCBfLCBfLCBfID1cbiAgICAgICAgICAgICAgICAgIHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBvdXQpXG4gICAgICAgICAgICAgIGludHMgYWNjJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgTW9kcy5JbnQyU2V0LmZvbGRcbiAgICAgICAgICAgIChmdW4gKHR5JywgcycpIGFjYyAtPlxuICAgICAgICAgICAgICBsZXQgdyA9IGJlZ2luX25ldyBhY2MgaW5cbiAgICAgICAgICAgICAgbGV0IG4sIHcgPSBuZXdfbm9kZSB3IHR5IGluXG4gICAgICAgICAgICAgIGxldCBuJywgdyA9IG5ld19ub2RlIHcgdHknIGluXG4gICAgICAgICAgICAgIGxldCB3ID0gbmV3X2xpbmsgdyAobiwgcykgKG4nLCBzJykgaW5cbiAgICAgICAgICAgICAgbGV0IG91dCwgXywgXywgXyA9IHJhd19maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIH50b3BsZXZlbDpmYWxzZSB3IGluXG4gICAgICAgICAgICAgIGlmIHR5ID0gdHknICYmIHMgPCBzJyB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgdyA9IGJlZ2luX25ldyBvdXQgaW5cbiAgICAgICAgICAgICAgICBsZXQgbiwgdyA9IG5ld19ub2RlIHcgdHkgaW5cbiAgICAgICAgICAgICAgICBsZXQgdyA9IG5ld19saW5rIHcgKG4sIHMpIChuLCBzJykgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0JywgXywgXywgXyA9XG4gICAgICAgICAgICAgICAgICByYXdfZmluaXNoX25ldyB+ZGVidWdfbW9kZSB+dG9wbGV2ZWw6ZmFsc2Ugd1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgb3V0J1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBvdXQpXG4gICAgICAgICAgICBsaW5rcyBhY2MnJykpXG4gICAgZW52IGNvbnRhY3RfbWFwXG5cbmxldCBmb2xkX2J5X3R5cGUgZiBjYyBhY2MgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgKGZ1biBhZ2VudF90eXBlIGFjYyBsaXN0X3BvcyAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgcG9zIC0+XG4gICAgICAgICAgbGV0IGludGYgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgW3x8XSBwb3MgY2Mubm9kZXMgaW5cbiAgICAgICAgICBmIH5wb3MgfmFnZW50X3R5cGUgaW50ZiBhY2MpXG4gICAgICAgIGFjYyBsaXN0X3BvcylcbiAgICBhY2MgY2Mubm9kZXNfYnlfdHlwZVxuXG5sZXQgZm9sZCBmIGNjIGFjYyA9IE1vZHMuSW50TWFwLmZvbGQgZiBjYy5ub2RlcyBhY2NcblxubGV0IGZpbmFsaXplIH5kZWJ1Z19tb2RlIH5zaGFyaW5nIGVudiBjb250YWN0X21hcCA9XG4gIGxldCBzaWdzID0gUHJlRW52LnNpZ3MgZW52IGluXG4gIGxldCBlbnYgPSBtaW5pbWFsX2VudiB+ZGVidWdfbW9kZSBlbnYgY29udGFjdF9tYXAgaW5cbiAgbGV0IHNpLCBjb21wbGV0ZV9kb21haW4gPVxuICAgIFByZUVudi5zYXR1cmF0ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBzaWdzIGVudi5QcmVFbnYuZG9tYWluXG4gIGluXG4gIGxldCBkb21haW4gPSBBcnJheS5tYWtlIChzdWNjIHNpKSAoUHJlRW52LmVtcHR5X3BvaW50IGVudi5QcmVFbnYuc2lnX2RlY2wpIGluXG4gIGxldCBzaW5nbGVzID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50TWFwLmVtcHR5IDEgY29tcGxldGVfZG9tYWluIGluXG4gIGxldCBlbGVtZW50YXJpZXMgPSBQcmVFbnYuZmlsbF9lbGVtIGVudi5QcmVFbnYuc2lnX2RlY2wgc2luZ2xlcyBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgIChmdW4gXyAtPlxuICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+XG4gICAgICAgICAgICBkb21haW4uKHgucF9pZCkgPC1cbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0geC5lbGVtZW50O1xuICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgRW52LmRlcHMgPSB4LmRlcGVuZGluZztcbiAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSB4LnJvb3RzO1xuICAgICAgICAgICAgICB9KSlcbiAgICAgIHNpbmdsZXNcbiAgaW5cbiAgbGV0IHN0YXRfbmF2X3N0ZXBzID1cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIGxldmVsIGRvbWFpbl9sZXZlbCBhY2NfbGV2ZWwgLT5cbiAgICAgICAgaWYgbGV2ZWwgPD0gMSB0aGVuXG4gICAgICAgICAgYWNjX2xldmVsXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAgICAgICAoZnVuIF8gbCBhY2MgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGFjYyB4IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBkb21haW4uKHgucF9pZCkgPC1cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYuY29udGVudCA9IHguZWxlbWVudDtcbiAgICAgICAgICAgICAgICAgICAgICAgIEVudi5zb25zID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSB4LnJvb3RzO1xuICAgICAgICAgICAgICAgICAgICAgICAgRW52LmRlcHMgPSB4LmRlcGVuZGluZztcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgICAgICAgICAoZnVuIF8gbGwgYWNjbCAtPlxuICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2hpbmdzIH5kZWJ1Z19tb2RlIHNpZ3MgZS5lbGVtZW50IHguZWxlbWVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5qcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGFjYyBpbmpfZV94IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByZUVudi5pbnNlcnRfbmF2aWdhdGlvbiB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi5QcmVFbnYuaWRfYnlfdHlwZSBlbnYuUHJlRW52Lm5iX2lkIGRvbWFpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgucF9pZCB4LmVsZW1lbnQgaW5qX2VfeCBlLnBfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgaW5qcylcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjY2wgbGwpXG4gICAgICAgICAgICAgICAgICAgIHNpbmdsZXMgYWNjKVxuICAgICAgICAgICAgICAgIGFjYyBsKVxuICAgICAgICAgICAgZG9tYWluX2xldmVsIGFjY19sZXZlbClcbiAgICAgIGNvbXBsZXRlX2RvbWFpbiAwXG4gIGluXG4gIGxldCBsZXZlbDAgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRNYXAuZW1wdHkgMCBjb21wbGV0ZV9kb21haW4gaW5cbiAgbGV0IHNpbmdsZV9hZ2VudF9wb2ludHMgPVxuICAgIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBlbnYuUHJlRW52LmlkX2J5X3R5cGUpIE5vbmVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgTGlzdC5pdGVyIChmdW4gcCAtPlxuICAgICAgICAgICAgbWF0Y2ggZmluZF9yb290IHAuZWxlbWVudCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAoXywgdHkpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgZG9tYWluLihwLnBfaWQpIDwtXG4gICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIEVudi5jb250ZW50ID0gcC5lbGVtZW50O1xuICAgICAgICAgICAgICAgICAgICBFbnYucm9vdHMgPSBwLnJvb3RzO1xuICAgICAgICAgICAgICAgICAgICBFbnYuZGVwcyA9IHAuZGVwZW5kaW5nO1xuICAgICAgICAgICAgICAgICAgICBFbnYuc29ucyA9IFtdO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBzaW5nbGVfYWdlbnRfcG9pbnRzLih0eSkgPC0gU29tZSAocC5wX2lkLCBwLmRlcGVuZGluZykpKVxuICAgICAgbGV2ZWwwXG4gIGluXG4gICgge1xuICAgICAgRW52LnNpZ19kZWNsID0gZW52LlByZUVudi5zaWdfZGVjbDtcbiAgICAgIEVudi5pZF9ieV90eXBlID0gZW52LlByZUVudi5pZF9ieV90eXBlO1xuICAgICAgRW52Lm1heF9vYnMgPSBmcmVzaF9jY19pZCBlbnYuUHJlRW52LmRvbWFpbjtcbiAgICAgIEVudi5kb21haW47XG4gICAgICBFbnYuZWxlbWVudGFyaWVzO1xuICAgICAgRW52LnNpbmdsZV9hZ2VudF9wb2ludHM7XG4gICAgfSxcbiAgICB7IHN0YXRfbm9kZXMgPSBzaTsgUHJlRW52LnN0YXRfbmF2X3N0ZXBzIH0gKVxuXG5sZXQgbWVyZ2Vfb25faW5mIH5kZWJ1Z19tb2RlIGVudiBtIGcxIGcyID1cbiAgbGV0IG1fbGlzdCA9IFJlbmFtaW5nLnRvX2xpc3QgbSBpblxuICBsZXQgcm9vdDEsIHJvb3QyID0gTGlzdC5oZCBtX2xpc3QgaW5cbiAgbGV0IHBhaXJpbmcgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyAoYSwgYikgLT4gTW9kcy5JbnQyU2V0LmFkZCAoYSwgYikgYWNjKVxuICAgICAgTW9kcy5JbnQyU2V0LmVtcHR5IG1fbGlzdFxuICBpblxuICBsZXQgcG9zc2liaWxpdGllcyA9IHJlZiBwYWlyaW5nIGluXG4gIG1hdGNoXG4gICAgYXJlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgfnBvc3NpYmlsaXRpZXMgfnN0cmljdDpmYWxzZSByb290MSBnMSByb290MiBnMlxuICB3aXRoXG4gIHwgU29tZSBtJywgXyAtPlxuICAgIGxldCBfLCBwdXNob3V0ID1cbiAgICAgIG1lcmdlX2NvbXBhdGlibGUgfmRlYnVnX21vZGUgZW52LlByZUVudi5pZF9ieV90eXBlIGVudi5QcmVFbnYubmJfaWQgbScgZzFcbiAgICAgICAgZzJcbiAgICBpblxuICAgIFNvbWUgcHVzaG91dCwgTm9uZVxuICB8IE5vbmUsIGNvbmZsaWN0IC0+IE5vbmUsIGNvbmZsaWN0XG5cbmxldCBsZW5ndGggY2MgPSBNb2RzLkludE1hcC5zaXplIGNjLm5vZGVzXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSBSZW5hbWluZy50IE1vZHMuSW50TWFwLnQgKiBNb2RzLkludFNldC50XG4oKiAobWFwLHNldClcbiAgIG1hcDogcG9pbnRfaSAtPiAobm9kZV9qKGkpIC0+IGlkX25vZGVfZ3JhcGhfaW5fY3VycmVudF9tYXRjaGluZylcbiAgIHNldDpjb2RvbWFpbiBvZiBjdXJyZW50IG1hdGNoaW5nICopXG5cbnR5cGUgbWF0Y2hpbmcgPSB0XG5cbmxldCBlbXB0eSA9IE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludFNldC5lbXB0eVxuXG5sZXQgYWRkX2NjIChpbmosIGNvKSBpZCByID1cbiAgbGV0IGMgPSBSZW5hbWluZy5pbWFnZSByIGluXG4gIG1hdGNoIE1vZHMuSW50U2V0LmRpc2pvaW50X3VuaW9uIGNvIGMgd2l0aFxuICB8IFNvbWUgY28nIC0+IFNvbWUgKE1vZHMuSW50TWFwLmFkZCBpZCByIGluaiwgY28nKVxuICB8IE5vbmUgLT4gTm9uZVxuXG5sZXQgZGVidWdfcHJpbnQgZiAobSwgX2NvKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyglYSlAXVwiXG4gICAgKFBwLnNldCBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5jb21tYSAoZnVuIGYgKGNjaWQsIG5tKSAtPlxuICAgICAgICAgUHAuc2V0IFJlbmFtaW5nLnRvX2xpc3QgUHAuY29tbWFcbiAgICAgICAgICAgKGZ1biBmIChub2RlLCBkc3QpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaTolaS0+JWlcIiBjY2lkIG5vZGUgZHN0KVxuICAgICAgICAgICBmIG5tKSlcbiAgICBtXG5cbmxldCByZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2NfaWQgcm9vdCA9XG4gIGxldCBwb2ludCA9IFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NfaWQgaW5cbiAgbWF0Y2ggUGF0dGVybi5FbnYucm9vdHMgcG9pbnQgd2l0aFxuICB8IE5vbmUgLT4gZmFpbHdpdGggXCJNYXRjaGluZy5yZWNvbnN0cnVjdCBjYyBlcnJvclwiXG4gICgqLSBybSAtIGFkZCA6IGludCAtPiBpbnQgLT4gUmVuYW1pbmcudCAtPiBSZW5hbWluZy50ICopXG4gIHwgU29tZSAocmlkcywgcnR5KSAtPlxuICAgIGxldCBpbmogPSBSZW5hbWluZy5lbXB0eSAoKSBpblxuICAgIGxldCBfLCBpbmplY3RpdmUgPVxuICAgICAgbWF0Y2ggUGF0dGVybi5yZWNvbnN0cnVjdGlvbl9uYXZpZ2F0aW9uIChQYXR0ZXJuLkVudi5jb250ZW50IHBvaW50KSB3aXRoXG4gICAgICB8IF8gOjogXyBhcyBuYXYgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChyb290LCBpbmplY3RpdmUpIG5hdiAtPlxuICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICBpbmplY3RpdmVcbiAgICAgICAgICAgICAgJiYgTmF2aWdhdGlvbi5pbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoXG4gICAgICAgICAgICAgICAgICAgbmF2ICkpXG4gICAgICAgICAgKFNvbWUgKHJvb3QsIHJ0eSksIHRydWUpXG4gICAgICAgICAgbmF2XG4gICAgICAoKi0gcm0gLSBmaW5kX3Jvb3Q6IGNjIC0+ICh0eXBlLCBub2RlKSBvcHRpb24gKilcbiAgICAgIHwgW10gLT5cbiAgICAgICAgKCBOb25lLFxuICAgICAgICAgIChtYXRjaCByaWRzIHdpdGhcbiAgICAgICAgICB8IFsgcmlkIF0gLT4gUmVuYW1pbmcuaW1wZXJhdGl2ZV9hZGQgfmRlYnVnX21vZGUgcmlkIHJvb3QgaW5qXG4gICAgICAgICAgfCBfIC0+IGZhbHNlKSApXG4gICAgaW5cbiAgICBpZiBpbmplY3RpdmUgdGhlblxuICAgICAgaW5qXG4gICAgZWxzZVxuICAgICAgZmFpbHdpdGhcbiAgICAgICAgKFwiTWF0Y2hpbmcucmVjb25zdHJ1Y3QgcmVuYW1pbmcgZXJyb3IgYXQgcm9vdCBcIiBeIHN0cmluZ19vZl9pbnQgcm9vdClcblxuKCogcmVjb25zdHJ1Y3Q6IFBhdHRlcm4uRW52LnQgLT4gRWRnZXMudCAtPiB0IC0+IGludCAtPiBQYXR0ZXJuLmlkIC0+XG4gICBpbnQgLT4gdCBvcHRpb24qKVxubGV0IHJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBpbmogaWQgY2NfaWQgcm9vdCA9XG4gIGxldCByZW5hbWUgPSByZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2NfaWQgcm9vdCBpblxuICBtYXRjaCBNb2RzLkludFNldC5kaXNqb2ludF91bmlvbiAoUmVuYW1pbmcuaW1hZ2UgcmVuYW1lKSAoc25kIGluaikgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgY28gLT4gU29tZSAoTW9kcy5JbnRNYXAuYWRkIGlkIHJlbmFtZSAoZnN0IGluaiksIGNvKVxuXG5sZXQgcmVjIGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIHJvb3QgaW5qID0gZnVuY3Rpb25cbiAgfCBbXSAtPiB0cnVlXG4gIHwgaCA6OiB0IC0+XG4gICAgTmF2aWdhdGlvbi5pbXBlcmF0aXZlX2VkZ2VfaXNfdmFsaWQgfmRlYnVnX21vZGUgP3Jvb3QgaW5qIGdyYXBoIGhcbiAgICAmJiBhdXhfaXNfcm9vdF9vZiB+ZGVidWdfbW9kZSBncmFwaCBOb25lIGluaiB0XG5cbmxldCBpc19yb290X29mIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCAoKF8sIHJ0eSkgYXMgcm9vdCkgY2NfaWQgPVxuICBsZXQgcG9pbnQgPSBQYXR0ZXJuLkVudi5nZXQgZG9tYWluIGNjX2lkIGluXG4gIG1hdGNoIFBhdHRlcm4ucmVjb25zdHJ1Y3Rpb25fbmF2aWdhdGlvbiAoUGF0dGVybi5FbnYuY29udGVudCBwb2ludCkgd2l0aFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIFBhdHRlcm4uRW52LnJvb3RzIHBvaW50IHdpdGhcbiAgICB8IFNvbWUgKF8sIHJ0eScpIC0+IHJ0eSA9IHJ0eSdcbiAgICB8IE5vbmUgLT4gZmFsc2UpXG4gIHwgbmF2IC0+IGF1eF9pc19yb290X29mIH5kZWJ1Z19tb2RlIGdyYXBoIChTb21lIHJvb3QpIChSZW5hbWluZy5lbXB0eSAoKSkgbmF2XG5cbmxldCByb290c19vZiB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggY2MgPVxuICBFZGdlcy5hbGxfYWdlbnRzX3doZXJlXG4gICAgKGZ1biB4IC0+IGlzX3Jvb3Rfb2YgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIHggY2MpXG4gICAgZ3JhcGhcblxuKCogZ2V0IDogKENvbnRlbnRBZ2VudC50ICogaW50KSAtPiB0IC0+IGludCAqKVxubGV0IGdldCB+ZGVidWdfbW9kZSAoKG5vZGUsIF8pLCBpZCkgKHQsIF8pID1cbiAgUmVuYW1pbmcuYXBwbHkgfmRlYnVnX21vZGUgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBSZW5hbWluZy5kdW1teSBpZCB0KSBub2RlXG5cbmxldCBlbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBjY3MgKHQsIF8pID1cbiAgbGV0IG91dCA9IEFycmF5Lm1ha2UgKE1vZHMuSW50TWFwLnNpemUgdCkgW10gaW5cbiAgbGV0ICgpID1cbiAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAoZnVuIGlkIG1hcCAtPlxuICAgICAgICBvdXQuKGlkKSA8LVxuICAgICAgICAgIFJlbmFtaW5nLmZvbGRcbiAgICAgICAgICAgIChmdW4gaSBvdXQgYWNjIC0+XG4gICAgICAgICAgICAgICggb3V0LFxuICAgICAgICAgICAgICAgIFBhdHRlcm4uZmluZF90eVxuICAgICAgICAgICAgICAgICAgKFBhdHRlcm4uRW52LmNvbnRlbnQgKFBhdHRlcm4uRW52LmdldCBkb21haW4gY2NzLihpZCkpKVxuICAgICAgICAgICAgICAgICAgaSApXG4gICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgIG1hcCBbXSlcbiAgICAgIHRcbiAgaW5cbiAgb3V0XG5cbm1vZHVsZSBDYWNoZSA9IHN0cnVjdFxuICB0eXBlIHQgPSBQYXR0ZXJuLmlkICogKGludCAqIGludCkgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKGEsIGEnKSAoYiwgYicpID1cbiAgICBsZXQgYyA9IFBhdHRlcm4uY29tcGFyZV9jYW5vbmljYWxzIGEgYiBpblxuICAgIGlmIGMgPSAwIHRoZW4gKFxuICAgICAgbWF0Y2ggYScsIGInIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiAwXG4gICAgICB8IE5vbmUsIFNvbWUgXyAtPiAxXG4gICAgICB8IFNvbWUgXywgTm9uZSAtPiAtMVxuICAgICAgfCBTb21lIHgsIFNvbWUgeSAtPiBNb2RzLmludF9wYWlyX2NvbXBhcmUgeCB5XG4gICAgKSBlbHNlXG4gICAgICBjXG5cbiAgbGV0IHByaW50IGYgKGEsIGEnKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVhJWFcIlxuICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnM6dHJ1ZSA/ZG9tYWluOk5vbmUgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFcbiAgICAgIChQcC5vcHRpb24gKFBwLnBhaXIgRm9ybWF0LnBwX3ByaW50X2ludCBGb3JtYXQucHBfcHJpbnRfaW50KSlcbiAgICAgIGEnXG5lbmRcblxubW9kdWxlIENhY2hlU2V0TWFwID0gU2V0TWFwLk1ha2UgKENhY2hlKVxuXG50eXBlIGNhY2hlID0gQ2FjaGVTZXRNYXAuU2V0LnRcblxubGV0IGVtcHR5X2NhY2hlID0gQ2FjaGVTZXRNYXAuU2V0LmVtcHR5XG5cbmxldCBzdXJ2aXZlX25hdiB+ZGVidWdfbW9kZSBpbmogZ3JhcGggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gaW5qIHN0ZXAgLT5cbiAgICAgIG1hdGNoIGluaiB3aXRoXG4gICAgICB8IE5vbmUgLT4gaW5qXG4gICAgICB8IFNvbWUgaW5qIC0+XG4gICAgICAgIE5hdmlnYXRpb24uaW5qZWN0aW9uX2Zvcl9vbmVfbW9yZV9lZGdlIH5kZWJ1Z19tb2RlIGluaiBncmFwaCBzdGVwKVxuICAgIChTb21lIGluailcblxuKCplZGdlczogbGlzdCBvZiBjb25jcmV0ZSBlZGdlcyxcbiAgICByZXR1cm5zIHRoZSByb290cyBvZiBvYnNlcnZhYmxlcyB0aGF0IGFyZSBhYm92ZSBpbiB0aGUgZG9tYWluKilcbmxldCBmcm9tX2VkZ2UgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoICgob3V0LCBjYWNoZSkgYXMgYWNjKSBub2RlIHNpdGUgYXJyb3cgPVxuICBsZXQgcmVjIGF1eF9mcm9tX2VkZ2VzIGNhY2hlICgob2JzLCByZXZfZGVwcykgYXMgYWNjKSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiBhY2MsIGNhY2hlXG4gICAgfCAocGlkLCBwb2ludCwgaW5qX3BvaW50MmdyYXBoKSA6OiByZW1haW5zIC0+XG4gICAgICBsZXQgYWNjJyA9XG4gICAgICAgIG1hdGNoIFBhdHRlcm4uRW52LnJvb3RzIHBvaW50IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgKGlkcywgdHkpIC0+XG4gICAgICAgICAgKCBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIGFjYyBpZCAtPlxuICAgICAgICAgICAgICAgIChwaWQsIChSZW5hbWluZy5hcHBseSB+ZGVidWdfbW9kZSBpbmpfcG9pbnQyZ3JhcGggaWQsIHR5KSlcbiAgICAgICAgICAgICAgICA6OiBhY2MpXG4gICAgICAgICAgICAgIG9icyBpZHMsXG4gICAgICAgICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gcmV2X2RlcHMgKFBhdHRlcm4uRW52LmRlcHMgcG9pbnQpIClcbiAgICAgIGluXG4gICAgICBsZXQgcmVtYWlucycsIGNhY2hlJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoKHJlLCBjYSkgYXMgcGFpcikgc29uIC0+XG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBzdXJ2aXZlX25hdiB+ZGVidWdfbW9kZSBpbmpfcG9pbnQyZ3JhcGggZ3JhcGggc29uLlBhdHRlcm4uRW52Lm5leHRcbiAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBwYWlyXG4gICAgICAgICAgICB8IFNvbWUgaW5qJyAtPlxuICAgICAgICAgICAgICBsZXQgcmVuYW1lID1cbiAgICAgICAgICAgICAgICBSZW5hbWluZy5jb21wb3NlIH5kZWJ1Z19tb2RlIGZhbHNlIHNvbi5QYXR0ZXJuLkVudi5pbmogaW5qJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgY2EnID1cbiAgICAgICAgICAgICAgICBDYWNoZVNldE1hcC5TZXQuYWRkXG4gICAgICAgICAgICAgICAgICAoc29uLlBhdHRlcm4uRW52LmRzdCwgUmVuYW1pbmcubWluX2VsdCByZW5hbWUpXG4gICAgICAgICAgICAgICAgICBjYVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBpZiBjYSA9PSBjYScgdGhlblxuICAgICAgICAgICAgICAgIHBhaXJcbiAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IHAnID0gUGF0dGVybi5FbnYuZ2V0IGRvbWFpbiBzb24uUGF0dGVybi5FbnYuZHN0IGluXG4gICAgICAgICAgICAgICAgbGV0IG5leHQgPSBzb24uUGF0dGVybi5FbnYuZHN0LCBwJywgcmVuYW1lIGluXG4gICAgICAgICAgICAgICAgbmV4dCA6OiByZSwgY2EnXG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgKHJlbWFpbnMsIGNhY2hlKSAoUGF0dGVybi5FbnYuc29ucyBwb2ludClcbiAgICAgIGluXG4gICAgICBhdXhfZnJvbV9lZGdlcyBjYWNoZScgYWNjJyByZW1haW5zJ1xuICBpblxuICBtYXRjaCBQYXR0ZXJuLkVudi5nZXRfZWxlbWVudGFyeSB+ZGVidWdfbW9kZSBkb21haW4gbm9kZSBzaXRlIGFycm93IHdpdGhcbiAgfCBOb25lIC0+IGFjY1xuICB8IFNvbWUgeCAtPlxuICAgIGF1eF9mcm9tX2VkZ2VzXG4gICAgICAoKigqdW5uZWNlc3NhcnkqKUNhY2hlU2V0TWFwLlNldC5hZGQgKGNjX2lkLFJlbmFtaW5nLm1pbl9lbHQgaW5qJykqKVxuICAgICAgY2FjaGUgb3V0IFsgeCBdXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2FnZW50IGRvbWFpbiBncmFwaCAoKChvYnMsIHJkZXBzKSwgY2FjaGUpIGFzIGFjYylcbiAgICAoKF8sIHR5KSBhcyBub2RlKSA9XG4gIGlmIEVkZ2VzLmlzX2FnZW50IG5vZGUgZ3JhcGggdGhlbiAoXG4gICAgbWF0Y2ggUGF0dGVybi5FbnYuZ2V0X3NpbmdsZV9hZ2VudCB0eSBkb21haW4gd2l0aFxuICAgIHwgU29tZSAoY2MsIGRlcHMpIC0+XG4gICAgICAoKGNjLCBub2RlKSA6OiBvYnMsIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZGVwcyBkZXBzKSwgY2FjaGVcbiAgICB8IE5vbmUgLT4gYWNjXG4gICkgZWxzZVxuICAgIGFjY1xuXG5sZXQgb2JzZXJ2YWJsZXNfZnJvbV9mcmVlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlID1cbiAgZnJvbV9lZGdlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIE5hdmlnYXRpb24uVG9Ob3RoaW5nXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2ludGVybmFsIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIGlkID1cbiAgZnJvbV9lZGdlIH5kZWJ1Z19tb2RlIGRvbWFpbiBncmFwaCBhY2Mgbm9kZSBzaXRlIChOYXZpZ2F0aW9uLlRvSW50ZXJuYWwgaWQpXG5cbmxldCBvYnNlcnZhYmxlc19mcm9tX2xpbmsgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGFjYyBuIHNpdGUgbicgc2l0ZScgPVxuICBmcm9tX2VkZ2UgZG9tYWluIH5kZWJ1Z19tb2RlIGdyYXBoIGFjYyBuIHNpdGVcbiAgICAoTmF2aWdhdGlvbi5Ub05vZGUgKE5hdmlnYXRpb24uRnJlc2ggbicsIHNpdGUnKSlcblxubW9kdWxlIEFnZW50ID0gc3RydWN0XG4gIHR5cGUgdCA9IEV4aXN0aW5nIG9mIEFnZW50LnQgKiBpbnQgfCBGcmVzaCBvZiBpbnQgKiBpbnQgKCogdHlwZSwgaWQgKilcblxuICBsZXQgcmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQnKSBhcyB4IC0+XG4gICAgICBpZiBpZCA8PiBpZCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG4nID0gQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGluaiBuIGluXG4gICAgICAgIGlmIG4gPT0gbicgdGhlblxuICAgICAgICAgIHhcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEV4aXN0aW5nIChuJywgaWQnKVxuICAgICAgKVxuICAgIHwgRnJlc2ggXyBhcyB4IC0+IHhcblxuICBsZXQgcHJpbnQgP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgaWQpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEvKiVpKi9cIiAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSkgbiBpZFxuICAgIHwgRnJlc2ggKHR5LCBpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhLyoldCAlaSovXCJcbiAgICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludFxuICAgICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgdHkgUHAubnUgaVxuXG4gIGxldCBwcmludF9zaXRlID9zaWdzIHBsYWNlIGYgc2l0ZSA9XG4gICAgbWF0Y2ggcGxhY2Ugd2l0aFxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LnByaW50X3NpdGUgP3NpZ3MgbiBmIHNpdGVcbiAgICB8IEZyZXNoICh0eSwgXykgLT5cbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgc2l0ZVxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyB0eSBmIHNpdGUpXG5cbiAgbGV0IHByaW50X2ludGVybmFsID9zaWdzIHBsYWNlIHNpdGUgZiBpZCA9XG4gICAgbWF0Y2ggcGxhY2Ugd2l0aFxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIG4gc2l0ZSBmIGlkXG4gICAgfCBGcmVzaCAodHksIF8pIC0+XG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVpfiVpXCIgc2l0ZSBpZFxuICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgU2lnbmF0dXJlLnByaW50X3NpdGVfaW50ZXJuYWxfc3RhdGUgc2lncyB0eSBzaXRlIGYgKFNvbWUgaWQpKVxuXG4gIGxldCBnZXRfdHlwZSA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgXykgLT4gQWdlbnQuc29ydCBuXG4gICAgfCBGcmVzaCAoaSwgXykgLT4gaVxuXG4gIGxldCBnZXRfaWQgPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIF8pIC0+IEFnZW50LmlkIG5cbiAgICB8IEZyZXNoIChfLCBpKSAtPiBpXG5cbiAgbGV0IGlzX2ZyZXNoID0gZnVuY3Rpb25cbiAgICB8IEV4aXN0aW5nIF8gLT4gZmFsc2VcbiAgICB8IEZyZXNoIF8gLT4gdHJ1ZVxuXG4gIGxldCBjb25jcmV0aXplIH5kZWJ1Z19tb2RlIChpbmpfbm9kZXMsIGlual9mcmVzaCkgPSBmdW5jdGlvblxuICAgIHwgRXhpc3RpbmcgKG4sIGlkKSAtPiBnZXQgfmRlYnVnX21vZGUgKG4sIGlkKSBpbmpfbm9kZXMsIEFnZW50LnNvcnQgblxuICAgIHwgRnJlc2ggKHR5LCBpZCkgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBpbmpfZnJlc2ggd2l0aFxuICAgICAgfCBTb21lIHggLT4geCwgdHlcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmQpXG5cbiAgbGV0IHRvX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBFeGlzdGluZyAobiwgdHkpIC0+XG4gICAgICAoYEFzc29jXG4gICAgICAgICBbXG4gICAgICAgICAgICggXCJFeGlzdGluZ1wiLFxuICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgIGBBc3NvYyBbIFwiYWdlbnRcIiwgQWdlbnQudG9fanNvbiBuIF07IGBBc3NvYyBbIFwidHlwZVwiLCBgSW50IHR5IF07XG4gICAgICAgICAgICAgICBdICk7XG4gICAgICAgICBdXG4gICAgICAgIDogWW9qc29uLkJhc2ljLnQpXG4gICAgfCBGcmVzaCAoaWQsIHR5KSAtPlxuICAgICAgYEFzc29jIFsgXCJGcmVzaFwiLCBgQXNzb2MgWyBcImlkXCIsIGBJbnQgaWQ7IFwidHlwZVwiLCBgSW50IHR5IF0gXVxuXG4gIGxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICAgIHwgYEFzc29jIFsgKFwiRXhpc3RpbmdcIiwgYExpc3QgbGlzdCkgXSAtPlxuICAgICAgKG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgfCBbIGBBc3NvYyBbIChcImFnZW50XCIsIGEpIF07IGBBc3NvYyBbIChcInR5cGVcIiwgYEludCB0eSkgXSBdIC0+XG4gICAgICAgIEV4aXN0aW5nIChBZ2VudC5vZl9qc29uIGEsIHR5KVxuICAgICAgfCB4IDo6IF8gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSlcbiAgICAgIHwgW10gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCBgTnVsbCkpKVxuICAgIHwgYEFzc29jIFsgKFwiRnJlc2hcIiwgYSkgXSAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBgQXNzb2MgWyAoXCJpZFwiLCBgSW50IGlkKTsgKFwidHlwZVwiLCBgSW50IHR5KSBdIC0+IEZyZXNoIChpZCwgdHkpXG4gICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhZ2VudFwiLCB4KSkpXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgYWdlbnRcIiwgeCkpXG5lbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWdlbnRfbmFtZSA9IGludFxudHlwZSBzaXRlX25hbWUgPSBpbnRcbnR5cGUgaW50ZXJuYWxfc3RhdGUgPSBpbnRcbnR5cGUgYmluZGluZ190eXBlID0gYWdlbnRfbmFtZSAqIHNpdGVfbmFtZVxudHlwZSBhYnN0cmFjdCA9IE1hdGNoaW5nLkFnZW50LnRcbnR5cGUgY29uY3JldGUgPSBBZ2VudC50XG50eXBlICdhIHNpdGUgPSAnYSAqIHNpdGVfbmFtZVxuXG50eXBlICdhIHRlc3QgPVxuICB8IElzX0hlcmUgb2YgJ2FcbiAgfCBIYXNfSW50ZXJuYWwgb2YgJ2Egc2l0ZSAqIGludGVybmFsX3N0YXRlXG4gIHwgSXNfRnJlZSBvZiAnYSBzaXRlXG4gIHwgSXNfQm91bmQgb2YgJ2Egc2l0ZVxuICB8IEhhc19CaW5kaW5nX3R5cGUgb2YgJ2Egc2l0ZSAqIGJpbmRpbmdfdHlwZVxuICB8IElzX0JvdW5kX3RvIG9mICdhIHNpdGUgKiAnYSBzaXRlXG5cbnR5cGUgJ2EgYWN0aW9uID1cbiAgfCBDcmVhdGUgb2YgJ2EgKiAoc2l0ZV9uYW1lICogaW50ZXJuYWxfc3RhdGUgb3B0aW9uKSBsaXN0ICgqIHBvdXJxdW9pIMOnYSAqKVxuICB8IE1vZF9pbnRlcm5hbCBvZiAnYSBzaXRlICogaW50ZXJuYWxfc3RhdGVcbiAgfCBCaW5kIG9mICdhIHNpdGUgKiAnYSBzaXRlXG4gIHwgQmluZF90byBvZiAnYSBzaXRlICogJ2Egc2l0ZVxuICB8IEZyZWUgb2YgJ2Egc2l0ZVxuICB8IFJlbW92ZSBvZiAnYVxuXG4oKiBUaGUgc2VtYW50aWNzIG9mIGNvbmNyZXRlIGFjdGlvbnMgc2VlbXMgdG8gYmUgdGhlIGZvbGxvd2luZyBvbmUuXG5cbiAgIC0gV2hlbiBhbiBhZ2VudCBpcyByZW1vdmVkLCBubyBvdGhlciBhY3Rpb24gaXMgc3RvcmVkIGFib3V0IGl0IChpbmNsdWRpbmcgYm9uZCByZWxlYXNpbmcpLlxuICAgLSBDcmVhdGVkIGFnZW50cyBhcmUgY3JlYXRlZCB3aXRob3V0IGRlZmF1bHQgYmluZGluZy9pbnRlcm5hbCBzdGF0ZXMuXG4gICAtIEJvbmRzIGFyZSBpbnNlcnRlZCB0aGFua3MgdG8gdHdvIHN5bW1ldHJpYyBhY3Rpb25zIChCaW5kX3RvIC4uLikgKilcblxubGV0IHdlaWdodCBhY3Rpb24gPVxuICBtYXRjaCBhY3Rpb24gd2l0aFxuICB8IENyZWF0ZSBfIC0+IDFcbiAgfCBNb2RfaW50ZXJuYWwgXyB8IEJpbmQgXyB8IEJpbmRfdG8gXyB8IEZyZWUgXyAtPiAyXG4gIHwgUmVtb3ZlIF8gLT4gMFxuXG5sZXQgd2VpZ2h0X3JldmVyc2UgYWN0aW9uID1cbiAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgfCBDcmVhdGUgXyAtPiAxXG4gIHwgTW9kX2ludGVybmFsIF8gfCBCaW5kIF8gfCBCaW5kX3RvIF8gfCBGcmVlIF8gLT4gMFxuICB8IFJlbW92ZSBfIC0+IDJcblxubGV0IHNvcnRfY29uY3JldGVfYWN0aW9uX2xpc3QgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodCAyXG5sZXQgc29ydF9jb25jcmV0ZV9hY3Rpb25fbGlzdF9yZXZlcnNlID0gVG9vbHMuc29ydF9ieV9wcmlvcml0eSB3ZWlnaHRfcmV2ZXJzZSAyXG5sZXQgc29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdCA9IFRvb2xzLnNvcnRfYnlfcHJpb3JpdHkgd2VpZ2h0IDJcbmxldCBzb3J0X2Fic3RyYWN0X2FjdGlvbl9saXN0X3JldmVyc2UgPSBUb29scy5zb3J0X2J5X3ByaW9yaXR5IHdlaWdodF9yZXZlcnNlIDJcblxudHlwZSAnYSBiaW5kaW5nX3N0YXRlID1cbiAgfCBBTllcbiAgfCBGUkVFXG4gIHwgQk9VTkRcbiAgfCBCT1VORF9UWVBFIG9mIGJpbmRpbmdfdHlwZVxuICB8IEJPVU5EX3RvIG9mICdhIHNpdGVcblxudHlwZSAnYSBldmVudCA9IHtcbiAgdGVzdHM6ICdhIHRlc3QgbGlzdCBsaXN0O1xuICBhY3Rpb25zOiAnYSBhY3Rpb24gbGlzdDtcbiAgc2lkZV9lZmZlY3RzX3NyYzogKCdhIHNpdGUgKiAnYSBiaW5kaW5nX3N0YXRlKSBsaXN0O1xuICBzaWRlX2VmZmVjdHNfZHN0OiAnYSBzaXRlIGxpc3Q7XG4gIGNvbm5lY3Rpdml0eV90ZXN0czogJ2EgdGVzdCBsaXN0O1xufVxuXG5sZXQgZW1wdHlfZXZlbnQgPVxuICB7XG4gICAgdGVzdHMgPSBbXTtcbiAgICBhY3Rpb25zID0gW107XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9IFtdO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPSBbXTtcbiAgICBjb25uZWN0aXZpdHlfdGVzdHMgPSBbXTtcbiAgfVxuXG5sZXQgY29uY3JldGl6ZV9iaW5kaW5nX3N0YXRlIH5kZWJ1Z19tb2RlIGluajJncmFwaCA9IGZ1bmN0aW9uXG4gIHwgQU5ZIC0+IEFOWVxuICB8IEZSRUUgLT4gRlJFRVxuICB8IEJPVU5EIC0+IEJPVU5EXG4gIHwgQk9VTkRfVFlQRSBidCAtPiBCT1VORF9UWVBFIGJ0XG4gIHwgQk9VTkRfdG8gKHBsLCBzKSAtPlxuICAgIEJPVU5EX3RvIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcblxubGV0IGNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICB8IElzX0hlcmUgcGwgLT4gSXNfSGVyZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwpXG4gIHwgSGFzX0ludGVybmFsICgocGwsIHMpLCBpKSAtPlxuICAgIEhhc19JbnRlcm5hbCAoKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSwgaSlcbiAgfCBJc19GcmVlIChwbCwgcykgLT5cbiAgICBJc19GcmVlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgfCBJc19Cb3VuZCAocGwsIHMpIC0+XG4gICAgSXNfQm91bmQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChwbCwgcyksIHQpIC0+XG4gICAgSGFzX0JpbmRpbmdfdHlwZSAoKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSwgdClcbiAgfCBJc19Cb3VuZF90byAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIElzX0JvdW5kX3RvXG4gICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCcsIHMnKSApXG5cbmxldCBjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggPSBmdW5jdGlvblxuICB8IENyZWF0ZSAocGwsIGkpIC0+XG4gICAgQ3JlYXRlIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgaSlcbiAgfCBNb2RfaW50ZXJuYWwgKChwbCwgcyksIGkpIC0+XG4gICAgTW9kX2ludGVybmFsICgoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpLCBpKVxuICB8IEJpbmQgKChwbCwgcyksIChwbCcsIHMnKSkgLT5cbiAgICBCaW5kXG4gICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCcsIHMnKSApXG4gIHwgQmluZF90byAoKHBsLCBzKSwgKHBsJywgcycpKSAtPlxuICAgIEJpbmRfdG9cbiAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsLCBzKSxcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIHBsJywgcycpIClcbiAgfCBGcmVlIChwbCwgcykgLT4gRnJlZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwsIHMpXG4gIHwgUmVtb3ZlIHBsIC0+IFJlbW92ZSAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggcGwpXG5cbmxldCB0cnlfY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qMmdyYXBoIGFjdGlvbnMgPVxuICB0cnkgU29tZSAoY29uY3JldGl6ZV9hY3Rpb24gfmRlYnVnX21vZGUgaW5qMmdyYXBoIGFjdGlvbnMpXG4gIHdpdGggTm90X2ZvdW5kIC0+IE5vbmVcbigqIFRoZSBhY3Rpb24gaXMgZGVhbGluZyB3aXRoIGEgZnJlc2ggYWdlbnQgKilcblxubGV0IGNvbmNyZXRpemVfZXZlbnQgfmRlYnVnX21vZGUgaW5qMmdyYXBoIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdC5tYXAgKExpc3QucmV2X21hcCAoY29uY3JldGl6ZV90ZXN0IH5kZWJ1Z19tb2RlIGluajJncmFwaCkpIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9XG4gICAgICAoKiBhY3Rpb25zIGFyZSByZW9yZGVyZWQgdGhlIGZvbGxvd2luZyB3YXk6XG4gICAgICAgICAxKSBSZW1vdmUgYWN0aW9uc1xuICAgICAgICAgMikgQ3JlYXRpb24gYWN0aW9uc1xuICAgICAgICAgMykgQW55dGhpbmcgZWxzZS4qKVxuICAgICAgc29ydF9hYnN0cmFjdF9hY3Rpb25fbGlzdFxuICAgICAgICAoTGlzdC5yZXZfbWFwIChjb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmoyZ3JhcGgpIGUuYWN0aW9ucyk7XG4gICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAoKHBsLCBzKSwgYikgLT5cbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcyksXG4gICAgICAgICAgICBjb25jcmV0aXplX2JpbmRpbmdfc3RhdGUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIGIgKSlcbiAgICAgICAgZS5zaWRlX2VmZmVjdHNfc3JjO1xuICAgIHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKHBsLCBzKSAtPiBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBwbCwgcylcbiAgICAgICAgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0LnJldl9tYXAgKGNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmoyZ3JhcGgpIGUuY29ubmVjdGl2aXR5X3Rlc3RzO1xuICB9XG5cbmxldCBtYXBfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFcbiAgfCBIYXNfSW50ZXJuYWwgKChhLCBfKSwgXylcbiAgfCBJc19GcmVlIChhLCBfKVxuICB8IElzX0JvdW5kIChhLCBfKVxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChhLCBfKSwgXylcbiAgfCBJc19Cb3VuZF90byAoKGEsIF8pLCBfKSAtPlxuICAgIGYgYVxuXG5sZXQgbWFwX2FjdGlvbiBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKGEsIF8pXG4gIHwgTW9kX2ludGVybmFsICgoYSwgXyksIF8pXG4gIHwgQmluZCAoKGEsIF8pLCBfKVxuICB8IEJpbmRfdG8gKChhLCBfKSwgXylcbiAgfCBGcmVlIChhLCBfKVxuICB8IFJlbW92ZSBhIC0+XG4gICAgZiBhXG5cbmxldCBtYXRjaF90ZXN0cyA9IGZ1bmN0aW9uXG4gICgqIGFic3RyYWN0LCBjb25jcmV0ZSopXG4gIHwgSXNfSGVyZSBhLCBJc19IZXJlIGIgLT4gTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICB8IEhhc19JbnRlcm5hbCAoKGEsIHMpLCBpKSwgSGFzX0ludGVybmFsICgoYiwgdCksIGopIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdCAmJiBpID0galxuICB8IEhhc19CaW5kaW5nX3R5cGUgKChhLCBzKSwgYyksIEhhc19CaW5kaW5nX3R5cGUgKChiLCB0KSwgZCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0ICYmIGMgPSBkXG4gIHwgSXNfRnJlZSAoYSwgcyksIElzX0ZyZWUgKGIsIHQpIHwgSXNfQm91bmQgKGEsIHMpLCBJc19Cb3VuZCAoYiwgdCkgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiICYmIHMgPSB0XG4gIHwgSXNfQm91bmRfdG8gKChhLCBzKSwgKGMsIHUpKSwgSXNfQm91bmRfdG8gKChiLCB0KSwgKGQsIHYpKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGJcbiAgICAmJiBzID0gdFxuICAgICYmIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGMgPSBBZ2VudC5zb3J0IGRcbiAgICAmJiB1ID0gdlxuICB8IElzX0hlcmUgXywgX1xuICB8IEhhc19JbnRlcm5hbCBfLCBfXG4gIHwgSXNfRnJlZSBfLCBfXG4gIHwgSXNfQm91bmQgXywgX1xuICB8IElzX0JvdW5kX3RvIF8sIF9cbiAgfCBIYXNfQmluZGluZ190eXBlIF8sIF8gLT5cbiAgICBmYWxzZVxuXG5sZXQgbWF0Y2hfYWN0aW9ucyA9IGZ1bmN0aW9uXG4gICgqIGFic3RyYWN0LCBjb25jcmV0ZSopXG4gIHwgQ3JlYXRlIChhLCBhbHMpLCBDcmVhdGUgKGIsIGJscykgLT5cbiAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gICAgJiYgTGlzdC5mb2xkX2xlZnQyXG4gICAgICAgICAoZnVuIG9rIChzLCBpKSAodCwgaikgLT4gb2sgJiYgcyA9IHQgJiYgaSA9IGopXG4gICAgICAgICB0cnVlIGFscyBibHNcbiAgfCBNb2RfaW50ZXJuYWwgKChhLCBzKSwgaSksIE1vZF9pbnRlcm5hbCAoKGIsIHQpLCBqKSAtPlxuICAgIE1hdGNoaW5nLkFnZW50LmdldF90eXBlIGEgPSBBZ2VudC5zb3J0IGIgJiYgcyA9IHQgJiYgaSA9IGpcbiAgfCBCaW5kICgoYSwgcyksIChjLCB1KSksIEJpbmQgKChiLCB0KSwgKGQsIHYpKVxuICB8IEJpbmRfdG8gKChhLCBzKSwgKGMsIHUpKSwgQmluZF90byAoKGIsIHQpLCAoZCwgdikpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYlxuICAgICYmIHMgPSB0XG4gICAgJiYgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYyA9IEFnZW50LnNvcnQgZFxuICAgICYmIHUgPSB2XG4gIHwgRnJlZSAoYSwgcyksIEZyZWUgKGIsIHQpIC0+XG4gICAgTWF0Y2hpbmcuQWdlbnQuZ2V0X3R5cGUgYSA9IEFnZW50LnNvcnQgYiAmJiBzID0gdFxuICB8IFJlbW92ZSBhLCBSZW1vdmUgYiAtPiBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBhID0gQWdlbnQuc29ydCBiXG4gIHwgQ3JlYXRlIF8sIF9cbiAgfCBNb2RfaW50ZXJuYWwgXywgX1xuICB8IEJpbmQgXywgX1xuICB8IEJpbmRfdG8gXywgX1xuICB8IEZyZWUgXywgX1xuICB8IFJlbW92ZSBfLCBfIC0+XG4gICAgZmFsc2VcblxubGV0IGdldF9pZHMgZiBhdXggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGEgLT5cbiAgICAgIGxldCBpZCA9IGYgYSBpblxuICAgICAgaWYgTGlzdC5tZW0gaWQgYWNjIHRoZW5cbiAgICAgICAgYWNjXG4gICAgICBlbHNlXG4gICAgICAgIGlkIDo6IGFjYylcbiAgICBhdXhcblxubGV0IHJlYyBtYXRjaF9xdWFya3MgYV9xdWFya3MgY19xdWFya3MgZm1hdGNoID1cbiAgbWF0Y2ggYV9xdWFya3Mgd2l0aFxuICB8IGFxIDo6IGFxcyAtPlxuICAgIGxldCBjcXMsIHJlc3QgPSBMaXN0LnBhcnRpdGlvbiAoZnVuIGNxIC0+IGZtYXRjaCAoYXEsIGNxKSkgY19xdWFya3MgaW5cbiAgICBpZiBjcXMgPSBbXSB0aGVuXG4gICAgICBmYWxzZVxuICAgIGVsc2VcbiAgICAgIG1hdGNoX3F1YXJrcyBhcXMgcmVzdCBmbWF0Y2hcbiAgfCBbXSAtPiBjX3F1YXJrcyA9IFtdXG5cbmxldCByZWMgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGN0ZXN0cyBjYWN0aW9ucyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcImFic3RyYWN0IGFuZCBjb25jcmV0IHF1YXJrcyBkb24ndCBtYXRjaFwiKSlcbiAgfCBjaWQgOjogdGwgLT5cbiAgICBsZXQgY3Rlc3RzJyA9XG4gICAgICBMaXN0LmZpbHRlciAoZnVuIHRlc3QgLT4gbWFwX3Rlc3QgKGZ1biBhIC0+IEFnZW50LmlkIGEgPSBjaWQpIHRlc3QpIGN0ZXN0c1xuICAgIGluXG4gICAgbGV0IGNhY3Rpb25zJyA9XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuIGFjdCAtPiBtYXBfYWN0aW9uIChmdW4gYSAtPiBBZ2VudC5pZCBhID0gY2lkKSBhY3QpXG4gICAgICAgIGNhY3Rpb25zXG4gICAgaW5cbiAgICBpZlxuICAgICAgbWF0Y2hfcXVhcmtzIHRlc3RzIGN0ZXN0cycgbWF0Y2hfdGVzdHNcbiAgICAgICYmIG1hdGNoX3F1YXJrcyBhY3Rpb25zIGNhY3Rpb25zJyBtYXRjaF9hY3Rpb25zXG4gICAgdGhlblxuICAgICAgY2lkXG4gICAgZWxzZVxuICAgICAgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGN0ZXN0cyBjYWN0aW9ucyB0bFxuXG5sZXQgbWF0Y2hpbmdfYWJzdHJhY3RfY29uY3JldGUgfmRlYnVnX21vZGUgYWUgY2UgPVxuICBsZXQgYWVfdGVzdHMgPSBMaXN0LmZsYXR0ZW4gYWUudGVzdHMgaW5cbiAgbGV0IGNlX3Rlc3RzID0gTGlzdC5mbGF0dGVuIGNlLnRlc3RzIGluXG4gIGxldCBhYnN0cmFjdF9pZHMgPVxuICAgIGdldF9pZHNcbiAgICAgIChtYXBfYWN0aW9uIE1hdGNoaW5nLkFnZW50LmdldF9pZClcbiAgICAgIChnZXRfaWRzIChtYXBfdGVzdCBNYXRjaGluZy5BZ2VudC5nZXRfaWQpIFtdIGFlX3Rlc3RzKVxuICAgICAgYWUuYWN0aW9uc1xuICBpblxuICBsZXQgY29uY3JldGVfaWRzID1cbiAgICBnZXRfaWRzIChtYXBfYWN0aW9uIEFnZW50LmlkKVxuICAgICAgKGdldF9pZHMgKG1hcF90ZXN0IEFnZW50LmlkKSBbXSBjZV90ZXN0cylcbiAgICAgIGNlLmFjdGlvbnNcbiAgaW5cbiAgbGV0IGF2YWlsYWJsZV9pZHMgdXNlZCA9XG4gICAgTGlzdC5maWx0ZXJcbiAgICAgIChmdW4gaSAtPiBub3QgKE1vZHMuSW50U2V0Lm1lbSBpIChSZW5hbWluZy5pbWFnZSB1c2VkKSkpXG4gICAgICBjb25jcmV0ZV9pZHNcbiAgaW5cbiAgbGV0IHBhcnRpdGlvbiBmbWFwIGkgPVxuICAgIExpc3QucGFydGl0aW9uIChmdW4gcSAtPiBmbWFwIChmdW4gYSAtPiBNYXRjaGluZy5BZ2VudC5nZXRfaWQgYSA9IGkpIHEpXG4gIGluXG4gIGxldCBtYXRjaGluZyA9IFJlbmFtaW5nLmVtcHR5ICgpIGluXG4gIGxldCBpbmplY3RpdmUgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBpIC0+XG4gICAgICAgIGFjY1xuICAgICAgICAmJlxuICAgICAgICBsZXQgdGVzdHMsIF8gPSBwYXJ0aXRpb24gbWFwX3Rlc3QgaSBhZV90ZXN0cyBpblxuICAgICAgICBsZXQgYWN0aW9ucywgXyA9IHBhcnRpdGlvbiBtYXBfYWN0aW9uIGkgYWUuYWN0aW9ucyBpblxuICAgICAgICBsZXQgaiA9XG4gICAgICAgICAgZmluZF9tYXRjaCB0ZXN0cyBhY3Rpb25zIGNlX3Rlc3RzIGNlLmFjdGlvbnMgKGF2YWlsYWJsZV9pZHMgbWF0Y2hpbmcpXG4gICAgICAgIGluXG4gICAgICAgIFJlbmFtaW5nLmltcGVyYXRpdmVfYWRkIH5kZWJ1Z19tb2RlIGkgaiBtYXRjaGluZylcbiAgICAgIHRydWUgYWJzdHJhY3RfaWRzXG4gIGluXG4gIGlmIGluamVjdGl2ZSB0aGVuXG4gICAgU29tZSBtYXRjaGluZ1xuICBlbHNlXG4gICAgTm9uZVxuXG5sZXQgc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYgKChpZCwgbmEpIGFzIGFnZW50KSA9XG4gIHRyeVxuICAgIGlmIGYgaWQgPT0gaWQgdGhlblxuICAgICAgYWdlbnRcbiAgICBlbHNlXG4gICAgICBmIGlkLCBuYVxuICB3aXRoIE5vdF9mb3VuZCAtPiBhZ2VudFxuXG5sZXQgc3Vic3RfbWFwX3NpdGUgZiAoKGFnLCBzKSBhcyBzaXRlKSA9XG4gIGxldCBhZycgPSBmIGFnIGluXG4gIGlmIGFnID09IGFnJyB0aGVuXG4gICAgc2l0ZVxuICBlbHNlXG4gICAgYWcnLCBzXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBJc19IZXJlIGFnZW50IGFzIHggLT5cbiAgICBsZXQgYWdlbnQnID0gZiBhZ2VudCBpblxuICAgIGlmIGFnZW50ID09IGFnZW50JyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfSGVyZSBhZ2VudCdcbiAgfCBIYXNfSW50ZXJuYWwgKHNpdGUsIGludGVybmFsX3N0YXRlKSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSGFzX0ludGVybmFsIChzaXRlJywgaW50ZXJuYWxfc3RhdGUpXG4gIHwgSXNfRnJlZSBzaXRlIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBJc19GcmVlIHNpdGUnXG4gIHwgSXNfQm91bmQgc2l0ZSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlIGluXG4gICAgaWYgc2l0ZSA9PSBzaXRlJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfQm91bmQgc2l0ZSdcbiAgfCBIYXNfQmluZGluZ190eXBlIChzaXRlLCBiaW5kaW5nX3R5cGUpIGFzIHggLT5cbiAgICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBIYXNfQmluZGluZ190eXBlIChzaXRlJywgYmluZGluZ190eXBlKVxuICB8IElzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIGFzIHggLT5cbiAgICBsZXQgc2l0ZTEnID0gc3Vic3RfbWFwX3NpdGUgZiBzaXRlMSBpblxuICAgIGxldCBzaXRlMicgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUyIGluXG4gICAgaWYgc2l0ZTEgPT0gc2l0ZTEnICYmIHNpdGUyID09IHNpdGUyJyB0aGVuXG4gICAgICB4XG4gICAgZWxzZVxuICAgICAgSXNfQm91bmRfdG8gKHNpdGUxJywgc2l0ZTInKVxuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgZiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV90ZXN0IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3RcbiAgICAoZnVuIGogLT5cbiAgICAgIGlmIGogPSBpZCB0aGVuXG4gICAgICAgIGlkJ1xuICAgICAgZWxzZVxuICAgICAgICBqKVxuICAgIHhcblxubGV0IHJlbmFtZV9hYnN0cmFjdF90ZXN0IH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZicgPSBmdW5jdGlvblxuICB8IENyZWF0ZSAoYWdlbnQsIGxpc3QpIGFzIHggLT5cbiAgICBsZXQgYWdlbnQnID0gZicgYWdlbnQgaW5cbiAgICBpZiBhZ2VudCA9PSBhZ2VudCcgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIENyZWF0ZSAoYWdlbnQnLCBsaXN0KVxuICB8IE1vZF9pbnRlcm5hbCAoc2l0ZSwgaSkgYXMgeCAtPlxuICAgIGxldCBzaXRlJyA9IHN1YnN0X21hcF9zaXRlIGYnIHNpdGUgaW5cbiAgICBpZiBzaXRlID09IHNpdGUnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBNb2RfaW50ZXJuYWwgKHNpdGUnLCBpKVxuICB8IEJpbmQgKHMxLCBzMikgYXMgeCAtPlxuICAgIGxldCBzMScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMSBpblxuICAgIGxldCBzMicgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMiBpblxuICAgIGlmIHMxID09IHMxJyAmJiBzMiA9PSBzMicgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJpbmQgKHMxJywgczInKVxuICB8IEJpbmRfdG8gKHMxLCBzMikgYXMgeCAtPlxuICAgIGxldCBzMScgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMSBpblxuICAgIGxldCBzMicgPSBzdWJzdF9tYXBfc2l0ZSBmJyBzMiBpblxuICAgIGlmIHMxID09IHMxJyAmJiBzMiA9PSBzMicgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJpbmRfdG8gKHMxJywgczInKVxuICB8IEZyZWUgc2l0ZSBhcyB4IC0+XG4gICAgbGV0IHNpdGUnID0gc3Vic3RfbWFwX3NpdGUgZicgc2l0ZSBpblxuICAgIGlmIHNpdGUgPT0gc2l0ZScgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEZyZWUgc2l0ZSdcbiAgfCBSZW1vdmUgYWdlbnQgYXMgeCAtPlxuICAgIGxldCBhZ2VudCcgPSBmIGFnZW50IGluXG4gICAgaWYgYWdlbnQgPT0gYWdlbnQnIHRoZW5cbiAgICAgIHhcbiAgICBlbHNlXG4gICAgICBSZW1vdmUgYWdlbnQnXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fYWN0aW9uIGYgeCA9IHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZiB4XG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gaWQgaWQnIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uXG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3RfYWN0aW9uIH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2FjdGlvbiAoTWF0Y2hpbmcuQWdlbnQucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluaikgeFxuXG5sZXQgc3Vic3RfbWFwX2JpbmRpbmdfc3RhdGUgZiA9IGZ1bmN0aW9uXG4gIHwgKEFOWSB8IEZSRUUgfCBCT1VORCB8IEJPVU5EX1RZUEUgXykgYXMgeCAtPiB4XG4gIHwgQk9VTkRfdG8gKGFnLCBzKSBhcyB4IC0+XG4gICAgbGV0IGFnJyA9IGYgYWcgaW5cbiAgICBpZiBhZyA9PSBhZycgdGhlblxuICAgICAgeFxuICAgIGVsc2VcbiAgICAgIEJPVU5EX3RvIChhZycsIHMpXG5cbmxldCBzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgZiAoKHNpdGUsIGJzdGF0ZSkgYXMgeCkgPVxuICBsZXQgc2l0ZScgPSBzdWJzdF9tYXBfc2l0ZSBmIHNpdGUgaW5cbiAgbGV0IGJzdGF0ZScgPSBzdWJzdF9tYXBfYmluZGluZ19zdGF0ZSBmIGJzdGF0ZSBpblxuICBpZiBzaXRlID09IHNpdGUnICYmIGJzdGF0ZSA9PSBic3RhdGUnIHRoZW5cbiAgICB4XG4gIGVsc2VcbiAgICBzaXRlJywgYnN0YXRlJ1xuXG5sZXQgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IGYgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpIHhcblxubGV0IHN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0IGlkIGlkJyB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3NpZGVfZWZmZWN0XG4gICAgKGZ1biBqIC0+XG4gICAgICBpZiBqID0gaWQgdGhlblxuICAgICAgICBpZCdcbiAgICAgIGVsc2VcbiAgICAgICAgailcbiAgICB4XG5cbmxldCByZW5hbWVfYWJzdHJhY3Rfc2lkZV9lZmZlY3QgfmRlYnVnX21vZGUgaWQgaW5qIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fc2lkZV9lZmZlY3QgKE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopIHhcblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9ldmVudCBmIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikpXG4gICAgICAgIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl9hY3Rpb24gZikgZS5hY3Rpb25zO1xuICAgIHNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3NpZGVfZWZmZWN0IGYpIGUuc2lkZV9lZmZlY3RzX3NyYztcbiAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX3NpdGUgZikgZS5zaWRlX2VmZmVjdHNfZHN0O1xuICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICBMaXN0X3V0aWwuc21hcnRfbWFwIChzdWJzdF9tYXBfYWdlbnRfaW5fdGVzdCBmKSBlLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgfVxuXG5sZXQgc3Vic3RfbWFwMl9hZ2VudF9pbl9ldmVudCBmIGYnIGUgPVxuICB7XG4gICAgdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikpXG4gICAgICAgIGUudGVzdHM7XG4gICAgYWN0aW9ucyA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcDJfYWdlbnRfaW5fYWN0aW9uIGYgZicpIGUuYWN0aW9ucztcbiAgICBzaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgIExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9hZ2VudF9pbl9zaWRlX2VmZmVjdCBmKSBlLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgc2lkZV9lZmZlY3RzX2RzdCA9IExpc3RfdXRpbC5zbWFydF9tYXAgKHN1YnN0X21hcF9zaXRlIGYpIGUuc2lkZV9lZmZlY3RzX2RzdDtcbiAgICBjb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcCAoc3Vic3RfbWFwX2FnZW50X2luX3Rlc3QgZikgZS5jb25uZWN0aXZpdHlfdGVzdHM7XG4gIH1cblxubGV0IHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCBmIHggPVxuICBzdWJzdF9tYXBfYWdlbnRfaW5fZXZlbnQgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmKSB4XG5cbmxldCBzdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IGYgZicgeCA9XG4gIHN1YnN0X21hcDJfYWdlbnRfaW5fZXZlbnRcbiAgICAoc3Vic3RfbWFwX2NvbmNyZXRlX2FnZW50IGYpXG4gICAgKHN1YnN0X21hcF9jb25jcmV0ZV9hZ2VudCBmJylcbiAgICB4XG5cbmxldCBzdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCBpZCBpZCcgeCA9XG4gIHN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudFxuICAgIChmdW4gaiAtPlxuICAgICAgaWYgaiA9IGlkIHRoZW5cbiAgICAgICAgaWQnXG4gICAgICBlbHNlXG4gICAgICAgIGopXG4gICAgeFxuXG5sZXQgcmVuYW1lX2Fic3RyYWN0X2V2ZW50IH5kZWJ1Z19tb2RlIGlkIGluaiB4ID1cbiAgc3Vic3RfbWFwX2FnZW50X2luX2V2ZW50IChNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qKSB4XG5cbmxldCBwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzIGYgKGFnZW50LCBpZCkgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKVxuICAgIGFnZW50XG4gICAgKEFnZW50LnByaW50X3NpdGUgP3NpZ3MgYWdlbnQpXG4gICAgaWRcblxubGV0IHByaW50X2NvbmNyZXRlX3Rlc3QgP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBhZ2VudCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJc19IZXJlKCVhKVwiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZ2VudFxuICB8IEhhc19JbnRlcm5hbCAoKGFnLCBpZCksIGludCkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSGFzX0ludGVybmFsKCVhLiVhKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnXG4gICAgICAoQWdlbnQucHJpbnRfaW50ZXJuYWwgP3NpZ3MgYWcgaWQpXG4gICAgICBpbnRcbiAgfCBJc19GcmVlIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfRnJlZSglYSlcIiAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncykgc2l0ZVxuICB8IElzX0JvdW5kIHNpdGUgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiSXNfQm91bmQoJWEpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgfCBIYXNfQmluZGluZ190eXBlIChzaXRlLCAodHksIHNpZCkpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkJ0eXBlKCVhLCV0KVwiIChwcmludF9jb25jcmV0ZV9hZ2VudF9zaXRlID9zaWdzKSBzaXRlXG4gICAgICAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWkuJWlcIiB0eSBzaWRcbiAgICAgICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEuJWFcIlxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgdHlcbiAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHR5KVxuICAgICAgICAgICAgc2lkKVxuICB8IElzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIklzX0JvdW5kKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG5cbmxldCBwcmludF9jb25jcmV0ZV9hY3Rpb24gP3NpZ3MgZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlICgoKF8sIHR5KSBhcyBhZ2VudCksIGxpc3QpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkNyZWF0ZSglYVtAWzxoPiVhQF1dKVwiXG4gICAgICAoQWdlbnQucHJpbnQgP3NpZ3MgfndpdGhfaWQ6dHJ1ZSlcbiAgICAgIGFnZW50XG4gICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgKHgsIHkpIC0+XG4gICAgICAgICAgIG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfc2l0ZV9pbnRlcm5hbF9zdGF0ZSBzaWdzIHR5IHggZiB5XG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIChtYXRjaCB5IHdpdGhcbiAgICAgICAgICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludCBmIHhcbiAgICAgICAgICAgICB8IFNvbWUgeSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWkuJWlcIiB4IHkpKSlcbiAgICAgIGxpc3RcbiAgfCBNb2RfaW50ZXJuYWwgKChhZywgaWQpLCBpbnQpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIk1vZCglYS4lYSlcIlxuICAgICAgKEFnZW50LnByaW50ID9zaWdzIH53aXRoX2lkOnRydWUpXG4gICAgICBhZ1xuICAgICAgKEFnZW50LnByaW50X2ludGVybmFsID9zaWdzIGFnIGlkKVxuICAgICAgaW50XG4gIHwgQmluZCAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJCaW5kKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG4gIHwgQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJCaW5kX3RvKCVhLCVhKVwiXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUxXG4gICAgICAocHJpbnRfY29uY3JldGVfYWdlbnRfc2l0ZSA/c2lncylcbiAgICAgIHNpdGUyXG4gIHwgRnJlZSBzaXRlIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkZyZWUoJWEpXCIgKHByaW50X2NvbmNyZXRlX2FnZW50X3NpdGUgP3NpZ3MpIHNpdGVcbiAgfCBSZW1vdmUgYWdlbnQgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiUmVtb3ZlKCVhKVwiIChBZ2VudC5wcmludCA/c2lncyB+d2l0aF9pZDp0cnVlKSBhZ2VudFxuXG5sZXQgcHJpbnRfY29uY3JldGVfYmluZGluZ19zdGF0ZSA/c2lncyBmID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiKlwiXG4gIHwgRlJFRSAtPiAoKVxuICB8IEJPVU5EIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiFfXCJcbiAgfCBCT1VORF9UWVBFIChzLCBhKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIhJWEuJWFcIlxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIGFcbiAgICAgIChtYXRjaCBzaWdzIHdpdGhcbiAgICAgIHwgU29tZSBzaWdzIC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzXG4gICAgICB8IE5vbmUgLT4gRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgIHNcbiAgfCBCT1VORF90byAoKGFnX2lkLCBhZyksIHMpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiElYV8laS4lYVwiXG4gICAgICAobWF0Y2ggc2lncyB3aXRoXG4gICAgICB8IFNvbWUgc2lncyAtPiBTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lnc1xuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBhZyBhZ19pZFxuICAgICAgKG1hdGNoIHNpZ3Mgd2l0aFxuICAgICAgfCBTb21lIHNpZ3MgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ1xuICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9pbnQpXG4gICAgICBzXG5cbmxldCBqc29uX2RpY3Rpb25uYXJ5ID1cbiAgXCJcXFwiYmluZGluZ190eXBlXFxcIjp7XFxcInR5cGVcXFwiOjAsXFxcInNpdGVcXFwiOjF9LFxcXCJxdWFya1xcXCI6e1xcXCJhZ2VudFxcXCI6MCxcXFwic2l0ZVxcXCI6MX0sXFxcInRlc3RcXFwiOltcXFwiSXNfaGVyZVxcXCIsXFxcIkhhc19JbnRlcm5hbFxcXCIsXFxcIklzX0ZyZWVcXFwiLFxcXCJJc19Cb3VuZFxcXCIsXFxcIkhhc19CaW5kaW5nX3R5cGVcXFwiLFxcXCJJc19Cb3VuZF90b1xcXCJdLFxcXCJhY3Rpb25zXFxcIjpbXFxcIkNyZWF0ZVxcXCIsXFxcIk1vZF9pbnRlcm5hbFxcXCIsXFxcIkJpbmRcXFwiLFxcXCJCaW5kX3RvXFxcIixcXFwiRnJlZVxcXCIsXFxcIlJlbW92ZVxcXCJdLFxcXCJiaW5kaW5nX3N0YXRlXFxcIjpbXFxcIkFOWVxcXCIsXFxcIkZSRUVcXFwiLFxcXCJCT1VORFxcXCIsXFxcIkJPVU5EX1RZUEVcXFwiLFxcXCJCT1VORF90b1xcXCJdLFxcXCJldmVudFxcXCI6e1xcXCJ0ZXN0c1xcXCI6MCxcXFwiYWN0aW9uc1xcXCI6MSxcXFwic2lkZV9lZmZlY3Rfc3JjXFxcIjoyLFxcXCJzaWRlX2VmZmVjdF9kc3RcXFwiOjMsXFxcImNvbm5lY3Rpdml0eV90ZXN0c1xcXCI6NH1cIlxuXG5sZXQgd3JpdGVfYmluZGluZ190eXBlIG9iIGEgPVxuICBKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIGFcblxubGV0IHJlYWRfYmluZGluZ190eXBlIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMucmVhZF9pbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGJcblxubGV0IGJpbmRpbmdfdHlwZV90b19qc29uICh0eSwgcykgPSBgTGlzdCBbIGBJbnQgdHk7IGBJbnQgcyBdXG5cbmxldCBiaW5kaW5nX3R5cGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgSW50IHR5OyBgSW50IHMgXSAtPiB0eSwgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgYmluZGluZ190eXBlXCIsIHgpKVxuXG5sZXQgd3JpdGVfcXVhcmsgZiBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIGYgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiBhXG5cbmxldCByZWFkX3F1YXJrIGYgcCBsYiA9IEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIGYgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGJcbmxldCBxdWFya190b19qc29uIGYgKGFnLCBzKSA9IGBMaXN0IFsgZiBhZzsgYEludCBzIF1cblxubGV0IHF1YXJrX29mX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBhZzsgYEludCBzIF0gLT4gZiBhZywgc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHF1YXJrXCIsIHgpKVxuXG5sZXQgd3JpdGVfdGVzdCBmIG9iIHQgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCB0IHdpdGhcbiAgICB8IElzX0hlcmUgYSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMCk7IChmdW4gbyAtPiBmIG8gYSkgXVxuICAgIHwgSGFzX0ludGVybmFsIChzLCBpKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGkpO1xuICAgICAgXVxuICAgIHwgSXNfRnJlZSBzIC0+XG4gICAgICBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMik7IChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gcykgXVxuICAgIHwgSXNfQm91bmQgcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF1cbiAgICB8IEhhc19CaW5kaW5nX3R5cGUgKHMsIGIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gb2IgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiA0KTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMpO1xuICAgICAgICAoZnVuIG9iIC0+IHdyaXRlX2JpbmRpbmdfdHlwZSBvYiBiKTtcbiAgICAgIF1cbiAgICB8IElzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gb2IgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYiA1KTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMxKTtcbiAgICAgICAgKGZ1biBvYiAtPiB3cml0ZV9xdWFyayBmIG9iIHMyKTtcbiAgICAgIF0pXG5cbmxldCByZWFkX3Rlc3QgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCB5ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIElzX0hlcmUgeVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgaSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIEhhc19JbnRlcm5hbCAocywgaSlcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfRnJlZSBzXG4gICAgICB8IDMgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIElzX0JvdW5kIHNcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IGJpID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gcmVhZF9iaW5kaW5nX3R5cGUgc3QgYiBpblxuICAgICAgICBIYXNfQmluZGluZ190eXBlIChzLCBiaSlcbiAgICAgIHwgNSAtPlxuICAgICAgICBsZXQgczEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBzMiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgSXNfQm91bmRfdG8gKHMxLCBzMilcbiAgICAgIHwgXyAtPiBZb2pzb24uanNvbl9lcnJvciBcIldyb25nIHRlc3RcIiAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCB0ZXN0X3RvX2pzb24gZiA9IGZ1bmN0aW9uXG4gIHwgSXNfSGVyZSBhIC0+IGBMaXN0IFsgYEludCAwOyBmIGEgXVxuICB8IEhhc19JbnRlcm5hbCAocywgaSkgLT4gYExpc3QgWyBgSW50IDE7IHF1YXJrX3RvX2pzb24gZiBzOyBgSW50IGkgXVxuICB8IElzX0ZyZWUgcyAtPiBgTGlzdCBbIGBJbnQgMjsgcXVhcmtfdG9fanNvbiBmIHMgXVxuICB8IElzX0JvdW5kIHMgLT4gYExpc3QgWyBgSW50IDM7IHF1YXJrX3RvX2pzb24gZiBzIF1cbiAgfCBIYXNfQmluZGluZ190eXBlIChzLCBiKSAtPlxuICAgIGBMaXN0IFsgYEludCA0OyBxdWFya190b19qc29uIGYgczsgYmluZGluZ190eXBlX3RvX2pzb24gYiBdXG4gIHwgSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICBgTGlzdCBbIGBJbnQgNTsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuXG5sZXQgdGVzdF9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwOyBhIF0gLT4gSXNfSGVyZSAoZiBhKVxuICB8IGBMaXN0IFsgYEludCAxOyBzOyBgSW50IGkgXSAtPiBIYXNfSW50ZXJuYWwgKHF1YXJrX29mX2pzb24gZiBzLCBpKVxuICB8IGBMaXN0IFsgYEludCAyOyBzIF0gLT4gSXNfRnJlZSAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDM7IHMgXSAtPiBJc19Cb3VuZCAocXVhcmtfb2ZfanNvbiBmIHMpXG4gIHwgYExpc3QgWyBgSW50IDQ7IHM7IGIgXSAtPlxuICAgIEhhc19CaW5kaW5nX3R5cGUgKHF1YXJrX29mX2pzb24gZiBzLCBiaW5kaW5nX3R5cGVfb2ZfanNvbiBiKVxuICB8IGBMaXN0IFsgYEludCA1OyBzMTsgczIgXSAtPlxuICAgIElzX0JvdW5kX3RvIChxdWFya19vZl9qc29uIGYgczEsIHF1YXJrX29mX2pzb24gZiBzMilcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIldyb25nIHRlc3RcIiwgeCkpXG5cbmxldCB3cml0ZV9hY3Rpb24gZiBvYiBhID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggYSB3aXRoXG4gICAgfCBDcmVhdGUgKGFnLCBpbmZvKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApO1xuICAgICAgICAoZnVuIG8gLT4gZiBvIGFnKTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfaW50XG4gICAgICAgICAgICAgICAoSnNvblV0aWwud3JpdGVfb3B0aW9uIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpKVxuICAgICAgICAgICAgbyBpbmZvKTtcbiAgICAgIF1cbiAgICB8IE1vZF9pbnRlcm5hbCAocywgaSkgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyBpKTtcbiAgICAgIF1cbiAgICB8IEJpbmQgKHMxLCBzMikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMSk7XG4gICAgICAgIChmdW4gbyAtPiB3cml0ZV9xdWFyayBmIG8gczIpO1xuICAgICAgXVxuICAgIHwgQmluZF90byAoczEsIHMyKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDMpO1xuICAgICAgICAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMxKTtcbiAgICAgICAgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzMik7XG4gICAgICBdXG4gICAgfCBGcmVlIHMgLT5cbiAgICAgIFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA0KTsgKGZ1biBvIC0+IHdyaXRlX3F1YXJrIGYgbyBzKSBdXG4gICAgfCBSZW1vdmUgYSAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNSk7IChmdW4gbyAtPiBmIG8gYSkgXSlcblxubGV0IHJlYWRfYWN0aW9uIGYgc3QgYiA9XG4gIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAoZnVuIHN0IGIgLT4gZnVuY3Rpb25cbiAgICAgIHwgMCAtPlxuICAgICAgICBsZXQgYWcgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBmIHN0IGIgaW5cbiAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfb3B0aW9uIFlvanNvbi5CYXNpYy5yZWFkX2ludCkpKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBDcmVhdGUgKGFnLCBpbmZvKVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCBzID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBsZXQgaSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX2ludCBzdCBiIGluXG4gICAgICAgIE1vZF9pbnRlcm5hbCAocywgaSlcbiAgICAgIHwgMiAtPlxuICAgICAgICBsZXQgczEgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIGxldCBzMiA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgQmluZCAoczEsIHMyKVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBzMSA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgbGV0IHMyID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKHJlYWRfcXVhcmsgZikgc3QgYiBpblxuICAgICAgICBCaW5kX3RvIChzMSwgczIpXG4gICAgICB8IDQgLT5cbiAgICAgICAgbGV0IHMgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAocmVhZF9xdWFyayBmKSBzdCBiIGluXG4gICAgICAgIEZyZWUgc1xuICAgICAgfCA1IC0+XG4gICAgICAgIGxldCBhID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIFJlbW92ZSBhXG4gICAgICB8IF8gLT4gWW9qc29uLmpzb25fZXJyb3IgXCJXcm9uZyBhY3Rpb25cIiAoKnN0IGIqKSlcbiAgICBzdCBiXG5cbmxldCBhY3Rpb25fdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBDcmVhdGUgKGFnLCBpbmZvKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMDtcbiAgICAgICAgZiBhZztcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuIChzLCBpKSAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgKGBJbnQgc1xuICAgICAgICAgICAgICAgICA6OlxuICAgICAgICAgICAgICAgICAobWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgICB8IFNvbWUgaSAtPiBbIGBJbnQgaSBdKSkpXG4gICAgICAgICAgICAgaW5mbyk7XG4gICAgICBdXG4gIHwgTW9kX2ludGVybmFsIChzLCBpKSAtPiBgTGlzdCBbIGBJbnQgMTsgcXVhcmtfdG9fanNvbiBmIHM7IGBJbnQgaSBdXG4gIHwgQmluZCAoczEsIHMyKSAtPiBgTGlzdCBbIGBJbnQgMjsgcXVhcmtfdG9fanNvbiBmIHMxOyBxdWFya190b19qc29uIGYgczIgXVxuICB8IEJpbmRfdG8gKHMxLCBzMikgLT4gYExpc3QgWyBgSW50IDM7IHF1YXJrX3RvX2pzb24gZiBzMTsgcXVhcmtfdG9fanNvbiBmIHMyIF1cbiAgfCBGcmVlIHMgLT4gYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzIF1cbiAgfCBSZW1vdmUgYSAtPiBgTGlzdCBbIGBJbnQgNTsgZiBhIF1cblxubGV0IGFjdGlvbl9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYEludCAwOyBhZzsgYExpc3QgaW5mbyBdIC0+XG4gICAgQ3JlYXRlXG4gICAgICAoIGYgYWcsXG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBMaXN0IFsgYEludCBzIF0gLT4gcywgTm9uZVxuICAgICAgICAgICAgfCBgTGlzdCBbIGBJbnQgczsgYEludCBpIF0gLT4gcywgU29tZSBpXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBhY3Rpb24gaW5mb1wiLCB4KSkpXG4gICAgICAgICAgaW5mbyApXG4gIHwgYExpc3QgWyBgSW50IDE7IHM7IGBJbnQgaSBdIC0+IE1vZF9pbnRlcm5hbCAocXVhcmtfb2ZfanNvbiBmIHMsIGkpXG4gIHwgYExpc3QgWyBgSW50IDI7IHMxOyBzMiBdIC0+IEJpbmQgKHF1YXJrX29mX2pzb24gZiBzMSwgcXVhcmtfb2ZfanNvbiBmIHMyKVxuICB8IGBMaXN0IFsgYEludCAzOyBzMTsgczIgXSAtPiBCaW5kX3RvIChxdWFya19vZl9qc29uIGYgczEsIHF1YXJrX29mX2pzb24gZiBzMilcbiAgfCBgTGlzdCBbIGBJbnQgNDsgcyBdIC0+IEZyZWUgKHF1YXJrX29mX2pzb24gZiBzKVxuICB8IGBMaXN0IFsgYEludCA1OyBhIF0gLT4gUmVtb3ZlIChmIGEpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJXcm9uZyBhY3Rpb25cIiwgeCkpXG5cbmxldCB3cml0ZV9iaW5kaW5nX3N0YXRlIGYgb2IgYmYgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIChtYXRjaCBiZiB3aXRoXG4gICAgfCBBTlkgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApIF1cbiAgICB8IEZSRUUgLT4gWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDEpIF1cbiAgICB8IEJPVU5EIC0+IFsgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAyKSBdXG4gICAgfCBCT1VORF9UWVBFIGIgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTsgKGZ1biBvIC0+IHdyaXRlX2JpbmRpbmdfdHlwZSBvIGIpO1xuICAgICAgXVxuICAgIHwgQk9VTkRfdG8gcyAtPlxuICAgICAgWyAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDQpOyAoZnVuIG8gLT4gd3JpdGVfcXVhcmsgZiBvIHMpIF0pXG5cbmxldCByZWFkX2JpbmRpbmdfc3RhdGUgZiBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+IEFOWVxuICAgICAgfCAxIC0+IEZSRUVcbiAgICAgIHwgMiAtPiBCT1VORFxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBiID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gcmVhZF9iaW5kaW5nX3R5cGUgc3QgYiBpblxuICAgICAgICBCT1VORF9UWVBFIGJcbiAgICAgIHwgNCAtPlxuICAgICAgICBsZXQgcyA9IEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIChyZWFkX3F1YXJrIGYpIHN0IGIgaW5cbiAgICAgICAgQk9VTkRfdG8gc1xuICAgICAgfCBfIC0+IFlvanNvbi5qc29uX2Vycm9yIFwiV3JvbmcgYmluZGluZyBzdGF0ZVwiICgqc3QgYiopKVxuICAgIHN0IGJcblxubGV0IGJpbmRpbmdfc3RhdGVfdG9fanNvbiBmID0gZnVuY3Rpb25cbiAgfCBBTlkgLT4gYExpc3QgWyBgSW50IDAgXVxuICB8IEZSRUUgLT4gYExpc3QgWyBgSW50IDEgXVxuICB8IEJPVU5EIC0+IGBMaXN0IFsgYEludCAyIF1cbiAgfCBCT1VORF9UWVBFIGIgLT4gYExpc3QgWyBgSW50IDM7IGJpbmRpbmdfdHlwZV90b19qc29uIGIgXVxuICB8IEJPVU5EX3RvIHMgLT4gYExpc3QgWyBgSW50IDQ7IHF1YXJrX3RvX2pzb24gZiBzIF1cblxubGV0IGJpbmRpbmdfc3RhdGVfb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBJbnQgMCBdIC0+IEFOWVxuICB8IGBMaXN0IFsgYEludCAxIF0gLT4gRlJFRVxuICB8IGBMaXN0IFsgYEludCAyIF0gLT4gQk9VTkRcbiAgfCBgTGlzdCBbIGBJbnQgMzsgYExpc3QgWyBgSW50IHR5OyBgSW50IHMgXSBdIC0+IEJPVU5EX1RZUEUgKHR5LCBzKVxuICB8IGBMaXN0IFsgYEludCA0OyBgTGlzdCBbIGFnOyBgSW50IHMgXSBdIC0+IEJPVU5EX3RvIChmIGFnLCBzKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGJpbmRpbmdfc3RhdGVcIiwgeCkpXG5cbmxldCB3cml0ZV9ldmVudCBmIG9iIGUgPVxuICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBvYlxuICAgIFtcbiAgICAgIChmdW4gbyAtPlxuICAgICAgICBKc29uVXRpbC53cml0ZV9saXN0IChKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV90ZXN0IGYpKSBvIGUudGVzdHMpO1xuICAgICAgKGZ1biBvIC0+IEpzb25VdGlsLndyaXRlX2xpc3QgKHdyaXRlX2FjdGlvbiBmKSBvIGUuYWN0aW9ucyk7XG4gICAgICAoZnVuIG8gLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgKHdyaXRlX3F1YXJrIGYpICh3cml0ZV9iaW5kaW5nX3N0YXRlIGYpKVxuICAgICAgICAgIG8gZS5zaWRlX2VmZmVjdHNfc3JjKTtcbiAgICAgIChmdW4gbyAtPiBKc29uVXRpbC53cml0ZV9saXN0ICh3cml0ZV9xdWFyayBmKSBvIGUuc2lkZV9lZmZlY3RzX2RzdCk7XG4gICAgICAoZnVuIG8gLT4gSnNvblV0aWwud3JpdGVfbGlzdCAod3JpdGVfdGVzdCBmKSBvIGUuY29ubmVjdGl2aXR5X3Rlc3RzKTtcbiAgICBdXG5cbmxldCByZWFkX2V2ZW50IGYgc3QgYiA9XG4gIEpzb25VdGlsLnJlYWRfdmFyaWFudFxuICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IChZb2pzb24uQmFzaWMucmVhZF9saXN0IChyZWFkX3Rlc3QgZikpKVxuICAgIChmdW4gc3QgYiB0ZXN0cyAtPlxuICAgICAgbGV0IGFjdGlvbnMgPVxuICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCAocmVhZF9hY3Rpb24gZikpIHN0IGJcbiAgICAgIGluXG4gICAgICBsZXQgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgKHJlYWRfcXVhcmsgZikgKHJlYWRfYmluZGluZ19zdGF0ZSBmKSkpXG4gICAgICAgICAgc3QgYlxuICAgICAgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfcXVhcmsgZikpIHN0IGJcbiAgICAgIGluXG4gICAgICBsZXQgY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgKHJlYWRfdGVzdCBmKSkgc3QgYlxuICAgICAgaW5cbiAgICAgIHsgdGVzdHM7IGFjdGlvbnM7IHNpZGVfZWZmZWN0c19zcmM7IHNpZGVfZWZmZWN0c19kc3Q7IGNvbm5lY3Rpdml0eV90ZXN0cyB9KVxuICAgIHN0IGJcblxubGV0IGV2ZW50X3RvX2pzb24gZiBlID1cbiAgYExpc3RcbiAgICBbXG4gICAgICBgTGlzdFxuICAgICAgICAoTGlzdC5tYXAgKGZ1biBjY3QgLT4gYExpc3QgKExpc3QubWFwICh0ZXN0X3RvX2pzb24gZikgY2N0KSkgZS50ZXN0cyk7XG4gICAgICBgTGlzdCAoTGlzdC5tYXAgKGFjdGlvbl90b19qc29uIGYpIGUuYWN0aW9ucyk7XG4gICAgICBgTGlzdFxuICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgKGZ1biAocywgYikgLT5cbiAgICAgICAgICAgICBgTGlzdCBbIHF1YXJrX3RvX2pzb24gZiBzOyBiaW5kaW5nX3N0YXRlX3RvX2pzb24gZiBiIF0pXG4gICAgICAgICAgIGUuc2lkZV9lZmZlY3RzX3NyYyk7XG4gICAgICBgTGlzdCAoTGlzdC5tYXAgKHF1YXJrX3RvX2pzb24gZikgZS5zaWRlX2VmZmVjdHNfZHN0KTtcbiAgICAgIGBMaXN0IChMaXN0Lm1hcCAodGVzdF90b19qc29uIGYpIGUuY29ubmVjdGl2aXR5X3Rlc3RzKTtcbiAgICBdXG5cbmxldCBldmVudF9vZl9qc29uIGYgPSBmdW5jdGlvblxuICB8IGBMaXN0IFsgYExpc3QgdDsgYExpc3QgYTsgYExpc3Qgc19lX3NyYzsgYExpc3Qgc19lX2RzdDsgYExpc3QgY190IF0gYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICB0ZXN0cyA9XG4gICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IGNjbCAtPiBMaXN0Lm1hcCAodGVzdF9vZl9qc29uIGYpIGNjbFxuICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICB0O1xuICAgICAgICAgYWN0aW9ucyA9IExpc3QubWFwIChhY3Rpb25fb2ZfanNvbiBmKSBhO1xuICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgczsgYiBdIC0+IHF1YXJrX29mX2pzb24gZiBzLCBiaW5kaW5nX3N0YXRlX29mX2pzb24gZiBiXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHNfZV9zcmM7XG4gICAgICAgICBzaWRlX2VmZmVjdHNfZHN0ID0gTGlzdC5tYXAgKHF1YXJrX29mX2pzb24gZikgc19lX2RzdDtcbiAgICAgICAgIGNvbm5lY3Rpdml0eV90ZXN0cyA9IExpc3QubWFwICh0ZXN0X29mX2pzb24gZikgY190O1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZXZlbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGV2ZW50XCIsIHgpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFRyYW5zZm9ybWF0aW9uID0gc3RydWN0XG4gIHR5cGUgJ2EgdCA9XG4gICAgfCBBZ2VudCBvZiAnYVxuICAgIHwgRnJlZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBMaW5rZWQgb2YgJ2EgSW5zdGFudGlhdGlvbi5zaXRlICogJ2EgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIG9mICdhIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgb2ZcbiAgICAgICAgJ2EgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZSAqIEluc3RhbnRpYXRpb24uaW50ZXJuYWxfc3RhdGVcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIG9mICdhIEluc3RhbnRpYXRpb24uc2l0ZVxuXG4gIGxldCB0b195b2pzb24gPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBgQXNzb2MgWyBcIkFnZW50XCIsIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhIF1cbiAgICB8IEZyZWVkIChhLCBzKSAtPlxuICAgICAgYEFzc29jIFsgXCJGcmVlZFwiLCBgTGlzdCBbIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBhOyBgSW50IHMgXSBdXG4gICAgfCBMaW5rZWQgKChhLCBzKSwgKGIsIHQpKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiTGlua2VkXCIsXG4gICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7XG4gICAgICAgICAgICAgICAgYEludCBzO1xuICAgICAgICAgICAgICAgIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbiBiO1xuICAgICAgICAgICAgICAgIGBJbnQgdDtcbiAgICAgICAgICAgICAgXSApO1xuICAgICAgICBdXG4gICAgfCBOZWdhdGl2ZVdoYXRFdmVyIChhLCBzKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFsgXCJOZWdhdGl2ZVdoYXRFdmVyXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPlxuICAgICAgYEFzc29jXG4gICAgICAgIFtcbiAgICAgICAgICAoIFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWRcIixcbiAgICAgICAgICAgIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgczsgYEludCBpIF0gKTtcbiAgICAgICAgXVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+XG4gICAgICBgQXNzb2NcbiAgICAgICAgWyBcIk5lZ2F0aXZlSW50ZXJuYWxpemVkXCIsIGBMaXN0IFsgTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIGE7IGBJbnQgcyBdIF1cblxuICBsZXQgb2ZfeW9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBBc3NvYyBbIChcIkFnZW50XCIsIGEpIF0gLT4gQWdlbnQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhKVxuICAgIHwgYEFzc29jIFsgKFwiRnJlZWRcIiwgYExpc3QgWyBhOyBgSW50IHMgXSkgXSAtPlxuICAgICAgRnJlZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgYEFzc29jIFsgKFwiTGlua2VkXCIsIGBMaXN0IFsgYTsgYEludCBzOyBiOyBgSW50IHQgXSkgXSAtPlxuICAgICAgTGlua2VkICgoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGEsIHMpLCAoTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uIGIsIHQpKVxuICAgIHwgYEFzc29jIFsgKFwiTmVnYXRpdmVXaGF0RXZlclwiLCBgTGlzdCBbIGE7IGBJbnQgcyBdKSBdIC0+XG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChNYXRjaGluZy5BZ2VudC5vZl95b2pzb24gYSwgcylcbiAgICB8IGBBc3NvYyBbIChcIlBvc2l0aXZlSW50ZXJuYWxpemVkXCIsIGBMaXN0IFsgYTsgYEludCBzOyBgSW50IGkgXSkgXSAtPlxuICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzLCBpKVxuICAgIHwgYEFzc29jIFsgKFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWRcIiwgYExpc3QgWyBhOyBgSW50IHMgXSkgXSAtPlxuICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbiBhLCBzKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIGFnZW50XCIsIHgpKVxuXG4gIGxldCByZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qID0gZnVuY3Rpb25cbiAgICB8IEZyZWVkIChwLCBzKSBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIEZyZWVkIChwJywgcylcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgTmVnYXRpdmVXaGF0RXZlciAocCcsIHMpXG4gICAgfCBMaW5rZWQgKChwMSwgczEpLCAocDIsIHMyKSkgYXMgeCAtPlxuICAgICAgbGV0IHAxJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcDEgaW5cbiAgICAgIGxldCBwMicgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAyIGluXG4gICAgICBpZiBwMSA9PSBwMScgJiYgcDIgPT0gcDInIHRoZW5cbiAgICAgICAgeFxuICAgICAgZWxzZVxuICAgICAgICBMaW5rZWQgKChwMScsIHMxKSwgKHAyJywgczIpKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMsIGkpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKHAnLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAsIHMpIGFzIHggLT5cbiAgICAgIGxldCBwJyA9IE1hdGNoaW5nLkFnZW50LnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmogcCBpblxuICAgICAgaWYgcCA9PSBwJyB0aGVuXG4gICAgICAgIHhcbiAgICAgIGVsc2VcbiAgICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHAnLCBzKVxuICAgIHwgQWdlbnQgcCBhcyB4IC0+XG4gICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlXG4gICAgICAgIEFnZW50IHAnXG5cbiAgbGV0IGNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IG4gLT4gQWdlbnQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4pXG4gICAgfCBGcmVlZCAobiwgcykgLT5cbiAgICAgIEZyZWVkIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzKVxuICAgIHwgTGlua2VkICgobiwgcyksIChuJywgcycpKSAtPlxuICAgICAgTGlua2VkXG4gICAgICAgICggKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpLFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuJywgcycpIClcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKG4sIHMpIC0+XG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuLCBzKVxuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG4sIHMsIGkpIC0+XG4gICAgICBQb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbiwgcywgaSlcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChuLCBzKSAtPlxuICAgICAgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4sIHMpXG5cbiAgbGV0IG1hcF9mb2xkX2FnZW50IGYgeCBhY2MgPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgQWdlbnQgYSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgQWdlbnQgYScsIGFjYydcbiAgICB8IEZyZWVkIChhLCBzKSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgRnJlZWQgKGEnLCBzKSwgYWNjJ1xuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpIC0+XG4gICAgICBsZXQgYTEnLCBhY2MnID0gZiBhMSBhY2MgaW5cbiAgICAgIGxldCBhMicsIGFjYycnID0gZiBhMiBhY2MnIGluXG4gICAgICBMaW5rZWQgKChhMScsIHMxKSwgKGEyJywgczIpKSwgYWNjJydcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBOZWdhdGl2ZVdoYXRFdmVyIChhJywgcyksIGFjYydcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPlxuICAgICAgbGV0IGEnLCBhY2MnID0gZiBhIGFjYyBpblxuICAgICAgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEnLCBzLCBpKSwgYWNjJ1xuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+XG4gICAgICBsZXQgYScsIGFjYycgPSBmIGEgYWNjIGluXG4gICAgICBOZWdhdGl2ZUludGVybmFsaXplZCAoYScsIHMpLCBhY2MnXG5cbiAgbGV0IG1hcF9hZ2VudCBmID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IGEgLT4gQWdlbnQgKGYgYSlcbiAgICB8IEZyZWVkIChhLCBzKSAtPiBGcmVlZCAoZiBhLCBzKVxuICAgIHwgTGlua2VkICgoYTEsIHMxKSwgKGEyLCBzMikpIC0+IExpbmtlZCAoKGYgYTEsIHMxKSwgKGYgYTIsIHMyKSlcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpIC0+IE5lZ2F0aXZlV2hhdEV2ZXIgKGYgYSwgcylcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSAtPiBQb3NpdGl2ZUludGVybmFsaXplZCAoZiBhLCBzLCBpKVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpIC0+IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChmIGEsIHMpXG5cbiAgbGV0IGZvbGRfYWdlbnQgZiBhY2MgPSBmdW5jdGlvblxuICAgIHwgQWdlbnQgYSAtPiBmIGFjYyBhXG4gICAgfCBGcmVlZCAoYSwgXykgLT4gZiBhY2MgYVxuICAgIHwgTGlua2VkICgoYTEsIF8pLCAoYTIsIF8pKSAtPiBmIChmIGFjYyBhMSkgYTJcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIF8pIC0+IGYgYWNjIGFcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBfLCBfKSAtPiBmIGFjYyBhXG4gICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCAoYSwgXykgLT4gZiBhY2MgYVxuXG4gIGxldCBlcXVhbCBmIGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBBZ2VudCBhLCBBZ2VudCBhJyAtPiBmIGEgYSdcbiAgICB8ICggQWdlbnQgXyxcbiAgICAgICAgKCBGcmVlZCBfIHwgTGlua2VkIF8gfCBOZWdhdGl2ZVdoYXRFdmVyIF8gfCBQb3NpdGl2ZUludGVybmFsaXplZCBfXG4gICAgICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyApIClcbiAgICB8IF8sIEFnZW50IF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBGcmVlZCAoYSwgcyksIEZyZWVkIChhJywgcycpIC0+IHMgPSBzJyAmJiBmIGEgYSdcbiAgICB8ICggRnJlZWQgXyxcbiAgICAgICAgKCBMaW5rZWQgXyB8IE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgfCBOZWdhdGl2ZUludGVybmFsaXplZCBfICkgKVxuICAgIHwgXywgRnJlZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IExpbmtlZCAoKGExLCBzMSksIChhMiwgczIpKSwgTGlua2VkICgoYTEnLCBzMScpLCAoYTInLCBzMicpKSAtPlxuICAgICAgKHMxID0gczEnICYmIHMyID0gczInICYmIGYgYTEgYTEnICYmIGYgYTIgYTInKVxuICAgICAgfHwgKHMxID0gczInICYmIHMyID0gczEnICYmIGYgYTEgYTInICYmIGYgYTIgYTEnKVxuICAgIHwgKCBMaW5rZWQgXyxcbiAgICAgICAgKE5lZ2F0aXZlV2hhdEV2ZXIgXyB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIF8gfCBOZWdhdGl2ZUludGVybmFsaXplZCBfKSApXG4gICAgfCBfLCBMaW5rZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKGEsIHMpLCBOZWdhdGl2ZVdoYXRFdmVyIChhJywgcycpIC0+IHMgPSBzJyAmJiBmIGEgYSdcbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgXywgKFBvc2l0aXZlSW50ZXJuYWxpemVkIF8gfCBOZWdhdGl2ZUludGVybmFsaXplZCBfKVxuICAgIHwgXywgTmVnYXRpdmVXaGF0RXZlciBfIC0+XG4gICAgICBmYWxzZVxuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHMpLCBOZWdhdGl2ZUludGVybmFsaXplZCAoYScsIHMnKSAtPlxuICAgICAgcyA9IHMnICYmIGYgYSBhJ1xuICAgIHwgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXywgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgIHwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXywgTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgZmFsc2VcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSwgUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEnLCBzJywgaScpIC0+XG4gICAgICBpID0gaScgJiYgcyA9IHMnICYmIGYgYSBhJ1xuXG4gIGxldCBwcmludCA/c2lncyBmID0gZnVuY3Rpb25cbiAgICB8IEFnZW50IHAgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncykgcFxuICAgIHwgRnJlZWQgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ICV0QF1cIlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnQgP3NpZ3MpXG4gICAgICAgIHBcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50X3NpdGUgP3NpZ3MgcClcbiAgICAgICAgcyBQcC5ib3R0b21cbiAgICB8IE5lZ2F0aXZlV2hhdEV2ZXIgKHAsIHMpIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYS4lYSA9ID8/P0BdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9zaXRlID9zaWdzIHApXG4gICAgICAgIHNcbiAgICB8IExpbmtlZCAoKHAxLCBzMSksIChwMiwgczIpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWEgPSAlYS4lYUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwMVxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwMSlcbiAgICAgICAgczFcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwMlxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwMilcbiAgICAgICAgczJcbiAgICB8IFBvc2l0aXZlSW50ZXJuYWxpemVkIChwLCBzLCBpKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWEgPUBdXCJcbiAgICAgICAgKE1hdGNoaW5nLkFnZW50LnByaW50ID9zaWdzKVxuICAgICAgICBwXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludF9pbnRlcm5hbCA/c2lncyBwIHMpXG4gICAgICAgIGlcbiAgICB8IE5lZ2F0aXZlSW50ZXJuYWxpemVkIChwLCBzKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWEuJWF+ID1AXVwiXG4gICAgICAgIChNYXRjaGluZy5BZ2VudC5wcmludCA/c2lncylcbiAgICAgICAgcFxuICAgICAgICAoTWF0Y2hpbmcuQWdlbnQucHJpbnRfc2l0ZSA/c2lncyBwKVxuICAgICAgICBzXG5cbiAgbGV0IGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgKCgoYSwgXyksIF8pIGFzIHApIChkb24sIG91dCkgPVxuICAgIGlmIExpc3QubWVtIHAgZG9uIHx8IExpc3QubWVtIGEgY3JlYXRlZF9hZ2VudHMgdGhlblxuICAgICAgZG9uLCBvdXRcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGxua19kc3QgcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gcCA6OiBkb24sIEZyZWVkIHAgOjogb3V0XG4gICAgICB8IFNvbWUgcCcgLT4gcCA6OiBwJyA6OiBkb24sIExpbmtlZCAocCwgcCcpIDo6IG91dFxuICAgIClcblxuICBsZXQgYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9uID0gZnVuY3Rpb25cbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWdfaWQsIF8pLCBfKSAtPiBTb21lIGFnX2lkXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIF9cbiAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICBOb25lXG5cbiAgbGV0IGFnZW50c19jcmVhdGVkX2J5X2FjdGlvbnMgYWN0aW9ucyA9XG4gICAgTGlzdF91dGlsLm1hcF9vcHRpb24gYWdlbnRzX2NyZWF0ZWRfYnlfYWN0aW9uIGFjdGlvbnNcblxuICBsZXQgbmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lncyBsbmtfZHN0IGFjdGlvbnMgPVxuICAgIGxldCBjcmVhdGVkX2FnZW50cyA9IGFnZW50c19jcmVhdGVkX2J5X2FjdGlvbnMgYWN0aW9ucyBpblxuICAgIHNuZFxuICAgICAgKExpc3QuZm9sZF9yaWdodFxuICAgICAgICAgKGZ1biB4ICgoZG9uLCBvdXQpIGFzIGFjYykgLT5cbiAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKF8sIF8pIC0+IGFjY1xuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoKChpZCwgXyksIF8pIGFzIHApLCBfKSAtPlxuICAgICAgICAgICAgIGlmIExpc3QubWVtIGlkIGNyZWF0ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgIGRvbiwgb3V0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgZG9uLCBOZWdhdGl2ZUludGVybmFsaXplZCBwIDo6IG91dFxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAocDEsIHAyKSB8IEluc3RhbnRpYXRpb24uQmluZF90byAocDEsIHAyKSAtPlxuICAgICAgICAgICAgIGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcDFcbiAgICAgICAgICAgICAgIChnZXRfbmVnYXRpdmVfcGFydCBjcmVhdGVkX2FnZW50cyBsbmtfZHN0IHAyIGFjYylcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcCAtPlxuICAgICAgICAgICAgIGdldF9uZWdhdGl2ZV9wYXJ0IGNyZWF0ZWRfYWdlbnRzIGxua19kc3QgcCBhY2NcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKF8sIHR5KSBhcyBhKSAtPlxuICAgICAgICAgICAgIFRvb2xzLnJlY3RpXG4gICAgICAgICAgICAgICAoZnVuIHN0IHMgLT4gZ2V0X25lZ2F0aXZlX3BhcnQgY3JlYXRlZF9hZ2VudHMgbG5rX2RzdCAoYSwgcykgc3QpXG4gICAgICAgICAgICAgICAoZG9uLCBBZ2VudCBhIDo6IG91dClcbiAgICAgICAgICAgICAgIChTaWduYXR1cmUuYXJpdHkgc2lncyB0eSkpXG4gICAgICAgICBhY3Rpb25zIChbXSwgW10pKVxuXG4gIGxldCBwb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbnNfb2ZfYWN0aW9ucyBzaWdzIHNpZGVfZWZmZWN0X2RzdHMgYWN0aW9ucyA9XG4gICAgbGV0IHJlbSwgcmV2ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKChyZW0sIG91dCkgYXMgYWNjKSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKCgoXywgdHkpIGFzIGEpLCBfKSAtPlxuICAgICAgICAgICAgKCBUb29scy5yZWN0aVxuICAgICAgICAgICAgICAgIChmdW4gc3QgcyAtPiAoYSwgcykgOjogc3QpXG4gICAgICAgICAgICAgICAgcmVtIChTaWduYXR1cmUuYXJpdHkgc2lncyB0eSksXG4gICAgICAgICAgICAgIEFnZW50IGEgOjogb3V0IClcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoYSwgcyksIGkpIC0+XG4gICAgICAgICAgICByZW0sIFBvc2l0aXZlSW50ZXJuYWxpemVkIChhLCBzLCBpKSA6OiBvdXRcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAocDEsIHAyKSB8IEluc3RhbnRpYXRpb24uQmluZF90byAocDEsIHAyKSAtPlxuICAgICAgICAgICAgKCBMaXN0LmZpbHRlciAoZnVuIHAgLT4gcCA8PiBwMSAmJiBwIDw+IHAyKSByZW0sXG4gICAgICAgICAgICAgIExpbmtlZCAocDEsIHAyKSA6OiBvdXQgKVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHAgLT5cbiAgICAgICAgICAgIExpc3QuZmlsdGVyIChmdW4gcCcgLT4gcCcgPD4gcCkgcmVtLCBGcmVlZCBwIDo6IG91dFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPiBhY2MpXG4gICAgICAgIChbXSwgW10pIGFjdGlvbnNcbiAgICBpblxuICAgIExpc3QucmV2X2FwcGVuZCByZXZcbiAgICAgIChMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgICAgIChmdW4gcCAtPiBGcmVlZCBwKVxuICAgICAgICAgcmVtXG4gICAgICAgICAoTGlzdC5tYXAgKGZ1biBwIC0+IEZyZWVkIHApIHNpZGVfZWZmZWN0X2RzdHMpKVxuZW5kXG5cbnR5cGUgYWxnX2V4cHIgPSAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmVcblxudHlwZSBlbGVtZW50YXJ5X3J1bGUgPSB7XG4gIHJhdGU6IGFsZ19leHByIExvYy5hbm5vdGVkO1xuICB1bmFyeV9yYXRlOiAoYWxnX2V4cHIgTG9jLmFubm90ZWQgKiBhbGdfZXhwciBvcHRpb24pIG9wdGlvbjtcbiAgY29ubmVjdGVkX2NvbXBvbmVudHM6IFBhdHRlcm4uaWQgYXJyYXk7ICgqaWQgLT4gY2MqKVxuICByZW1vdmVkOiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IFRyYW5zZm9ybWF0aW9uLnQgbGlzdDtcbiAgaW5zZXJ0ZWQ6IEluc3RhbnRpYXRpb24uYWJzdHJhY3QgVHJhbnNmb3JtYXRpb24udCBsaXN0O1xuICBkZWx0YV90b2tlbnM6IChhbGdfZXhwciBMb2MuYW5ub3RlZCAqIGludCkgbGlzdDtcbiAgc3ludGFjdGljX3J1bGU6IGludDsgICgqKiBbMF0gbWVhbnMgZ2VuZXJhdGVkIGZvciBwZXJ0dXJiYXRpb24uICopXG4gIGluc3RhbnRpYXRpb25zOiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24uZXZlbnQ7XG59XG5cbmxldCBleHRyYWN0X2NjX2lkcyByID0gci5jb25uZWN0ZWRfY29tcG9uZW50c1xubGV0IGV4dHJhY3RfYWJzdHJhY3RfZXZlbnQgciA9IHIuaW5zdGFudGlhdGlvbnNcblxubGV0IGFsZ19leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC5vZl9saXN0IChKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbikpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBhbGdfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb24pKVxuICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuXG5sZXQgcnVsZV90b195b2pzb24gfmZpbGVuYW1lcyByID1cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICAoIFwicmF0ZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIHIucmF0ZVxuICAgICAgKTtcbiAgICAgICggXCJ1bmFyeV9yYXRlXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpKSlcbiAgICAgICAgICByLnVuYXJ5X3JhdGUgKTtcbiAgICAgICggXCJjb25uZWN0ZWRfY29tcG9uZW50c1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9hcnJheSBQYXR0ZXJuLmlkX3RvX3lvanNvbiByLmNvbm5lY3RlZF9jb21wb25lbnRzICk7XG4gICAgICBcInJlbW92ZWRcIiwgSnNvblV0aWwub2ZfbGlzdCBUcmFuc2Zvcm1hdGlvbi50b195b2pzb24gci5yZW1vdmVkO1xuICAgICAgXCJpbnNlcnRlZFwiLCBKc29uVXRpbC5vZl9saXN0IFRyYW5zZm9ybWF0aW9uLnRvX3lvanNvbiByLmluc2VydGVkO1xuICAgICAgKCBcImRlbHRhX3Rva2Vuc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChhbGdfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykpXG4gICAgICAgICAgICAgSnNvblV0aWwub2ZfaW50KVxuICAgICAgICAgIHIuZGVsdGFfdG9rZW5zICk7XG4gICAgICBcInN5bnRhY3RpY19ydWxlXCIsIGBJbnQgci5zeW50YWN0aWNfcnVsZTtcbiAgICAgICggXCJpbnN0YW50aWF0aW9uc1wiLFxuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gTWF0Y2hpbmcuQWdlbnQudG9feW9qc29uIHIuaW5zdGFudGlhdGlvbnMgKTtcbiAgICBdXG5cbmxldCBydWxlX29mX3lvanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBtYXRjaCByIHdpdGhcbiAgfCAoYEFzc29jIGwgOiBZb2pzb24uQmFzaWMudCkgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICByYXRlID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJyYXRlXCIgbCk7XG4gICAgICAgICB1bmFyeV9yYXRlID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInVuYXJ5X3JhdGVcIiB4KTtcbiAgICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29ubmVjdGVkX2NvbXBvbmVudHNcIiB4KTtcbiAgICAgICAgIHJlbW92ZWQgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0IFRyYW5zZm9ybWF0aW9uLm9mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJyZW1vdmVkXCIgeCk7XG4gICAgICAgICBpbnNlcnRlZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgVHJhbnNmb3JtYXRpb24ub2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImluc2VydGVkXCIgeCk7XG4gICAgICAgICBkZWx0YV90b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6XCJ2YWxcIiB+bGFiMjpcInRva1wiXG4gICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlbHRhX3Rva2Vuc1wiIHgpO1xuICAgICAgICAgc3ludGFjdGljX3J1bGUgPSBKc29uVXRpbC50b19pbnQgKExpc3QuYXNzb2MgXCJzeW50YWN0aWNfcnVsZVwiIGwpO1xuICAgICAgICAgaW5zdGFudGlhdGlvbnMgPVxuICAgICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X29mX2pzb24gTWF0Y2hpbmcuQWdlbnQub2ZfeW9qc29uXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJpbnN0YW50aWF0aW9uc1wiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVsZW1lbnRhcnkgcnVsZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWxlbWVudGFyeSBydWxlXCIsIHgpKVxuXG5sZXQgZnVsbHlfc3BlY2lmaWVkX3BhdHRlcm5fdG9fcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25zIGNjID1cbiAgbGV0IF8sIHRyID1cbiAgICBQYXR0ZXJuLmZvbGRfYnlfdHlwZVxuICAgICAgKGZ1biB+cG9zIH5hZ2VudF90eXBlIGludGYgKGVtYiwgZykgLT5cbiAgICAgICAgbGV0IGEgPSBwb3MsIGFnZW50X3R5cGUgaW5cbiAgICAgICAgbGV0IGcnID0gVHJhbnNmb3JtYXRpb24uQWdlbnQgYSA6OiBnIGluXG4gICAgICAgIGxldCBlbWInID0gTW9kcy5JbnRNYXAuYWRkIHBvcyBhIGVtYiBpblxuICAgICAgICAoIGVtYicsXG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgICAgICAgKGZ1biBzaXRlIGFjYyAobCwgaSkgLT5cbiAgICAgICAgICAgICAgbGV0IGFjYycgPVxuICAgICAgICAgICAgICAgIGlmIGkgPD4gLTEgdGhlblxuICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKGEsIHNpdGUsIGkpIDo6IGFjY1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBQYXR0ZXJuLlVuU3BlYyB8IFBhdHRlcm4uRnJlZSAtPlxuICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uLkZyZWVkIChhLCBzaXRlKSA6OiBhY2MnXG4gICAgICAgICAgICAgIHwgUGF0dGVybi5MaW5rICh4JywgcycpIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHgnIGVtYicgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2MnXG4gICAgICAgICAgICAgICAgfCBTb21lIGFnJyAtPlxuICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtYXRpb24uTGlua2VkICgoYSwgc2l0ZSksIChhZycsIHMnKSkgOjogYWNjJykpXG4gICAgICAgICAgICBnJyBpbnRmICkpXG4gICAgICBjYyAoTW9kcy5JbnRNYXAuZW1wdHksIFtdKVxuICBpblxuICBMaXN0LnJldiB0clxuXG50eXBlICdhbGdfZXhwciBwcmludF9leHByID1cbiAgfCBTdHJfcGV4cHIgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG4gIHwgQWxnX3BleHByIG9mICdhbGdfZXhwciBMb2MuYW5ub3RlZFxuXG5sZXQgcHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgU3RyX3BleHByIHMgLT4gTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nIHNcbiAgfCBBbGdfcGV4cHIgYSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoIFwiQVwiLFxuICAgICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgIGEgKTtcbiAgICAgIF1cblxubGV0IHByaW50X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IGBBc3NvYyBbIChcIkFcIiwgeCkgXSAtPlxuICAgICh0cnlcbiAgICAgICBBbGdfcGV4cHJcbiAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgICB4KVxuICAgICB3aXRoIFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgXyAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBwcmludCBleHByXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgKHRyeVxuICAgICAgIFN0cl9wZXhwclxuICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgIHgpXG4gICAgIHdpdGggWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IHByaW50IGV4cHJcIiwgeCkpKVxuXG5sZXQgbWFwX2V4cHJfcHJpbnQgZiB4ID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gYXMgeCAtPiB4XG4gICAgICB8IEFsZ19wZXhwciBlIC0+IEFsZ19wZXhwciAoZiBlKSlcbiAgICB4XG5cbmxldCBmb2xkX2V4cHJfcHJpbnQgZiBhY2MgeCA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBhY2MgLT4gZnVuY3Rpb25cbiAgICAgIHwgU3RyX3BleHByIF8gLT4gYWNjXG4gICAgICB8IEFsZ19wZXhwciBlIC0+IGYgYWNjIGUpXG4gICAgYWNjIHhcblxudHlwZSBkaW5fa2luZCA9IEFCU09MVVRFIHwgUkVMQVRJVkUgfCBQUk9CQUJJTElUWVxuXG5sZXQgZGluX2tpbmRfdG9feW9qc29uID0gZnVuY3Rpb25cbiAgfCBBQlNPTFVURSAtPiBgU3RyaW5nIFwiQUJTT0xVVEVcIlxuICB8IFJFTEFUSVZFIC0+IGBTdHJpbmcgXCJSRUxBVElWRVwiXG4gIHwgUFJPQkFCSUxJVFkgLT4gYFN0cmluZyBcIlBST0JBQklMSVRZXCJcblxubGV0IGRpbl9raW5kX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkFCU09MVVRFXCIgLT4gQUJTT0xVVEVcbiAgfCBgU3RyaW5nIFwiUkVMQVRJVkVcIiAtPiBSRUxBVElWRVxuICB8IGBTdHJpbmcgXCJQUk9CQUJJTElUWVwiIC0+IFBST0JBQklMSVRZXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgZGluX2tpbmRcIiwgeCkpXG5cbmxldCB3cml0ZV9kaW5fa2luZCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAoZGluX2tpbmRfdG9feW9qc29uIGYpXG5cbmxldCBzdHJpbmdfb2ZfZGluX2tpbmQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluX2tpbmQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbmxldCByZWFkX2Rpbl9raW5kIHAgbGIgPVxuICBkaW5fa2luZF9vZl95b2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX2xleGJ1ZiB+c3RyZWFtOnRydWUgcCBsYilcblxubGV0IGRpbl9raW5kX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5fa2luZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIG1vZGlmaWNhdGlvbiA9XG4gIHwgSVRFUl9SVUxFIG9mIGFsZ19leHByIExvYy5hbm5vdGVkICogZWxlbWVudGFyeV9ydWxlXG4gIHwgVVBEQVRFIG9mIGludCAqIGFsZ19leHByIExvYy5hbm5vdGVkXG4gIHwgU05BUFNIT1Qgb2YgYm9vbCAqIGFsZ19leHByIHByaW50X2V4cHIgbGlzdFxuICB8IFNUT1Agb2YgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgQ0ZMT1cgb2ZcbiAgICAgIHN0cmluZyBvcHRpb25cbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3RcbiAgfCBESU4gb2YgZGluX2tpbmQgKiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBESU5PRkYgb2YgYWxnX2V4cHIgcHJpbnRfZXhwciBsaXN0XG4gIHwgQ0ZMT1dPRkYgb2Ygc3RyaW5nIG9wdGlvbiAqIFBhdHRlcm4uaWQgYXJyYXlcbiAgfCBQTE9URU5UUllcbiAgfCBQUklOVCBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3QgKiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgfCBTUEVDSUVTIG9mXG4gICAgICBhbGdfZXhwciBwcmludF9leHByIGxpc3RcbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3RcbiAgfCBTUEVDSUVTX09GRiBvZiBhbGdfZXhwciBwcmludF9leHByIGxpc3RcblxubGV0IHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyA9XG4gIHByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pKVxuICAgIEpzb25VdGlsLm9mX2ludFxuXG5sZXQgcHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgcHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBtb2RpZmljYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IElURVJfUlVMRSAobiwgcikgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIjtcbiAgICAgICAgKCBcInJlcGVhdHNcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIG4gKTtcbiAgICAgICAgXCJydWxlXCIsIHJ1bGVfdG9feW9qc29uIH5maWxlbmFtZXMgcjtcbiAgICAgIF1cbiAgfCBVUERBVEUgKHYsIGUpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIjtcbiAgICAgICAgXCJ2YXJcIiwgYEludCB2O1xuICAgICAgICAoIFwidmFsdWVcIixcbiAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAoYWxnX2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGUgKTtcbiAgICAgIF1cbiAgfCBTTkFQU0hPVCAocmF3LCBmKSAtPlxuICAgIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiO1xuICAgICAgICBcInJhd1wiLCBgQm9vbCByYXc7XG4gICAgICAgIFwiZmlsZVwiLCBKc29uVXRpbC5vZl9saXN0IChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGY7XG4gICAgICBdXG4gIHwgU1RPUCBmIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIjtcbiAgICAgICAgXCJmaWxlXCIsIEpzb25VdGlsLm9mX2xpc3QgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZjtcbiAgICAgIF1cbiAgfCBDRkxPVyAobmFtZSwgaWRzLCB0ZXN0cykgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiQ0ZMT1dcIjtcbiAgICAgICAgXCJuYW1lXCIsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcgbmFtZTtcbiAgICAgICAgXCJwYXR0ZXJuXCIsIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIGlkcztcbiAgICAgICAgKCBcInRlc3RzXCIsXG4gICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnRlc3RfdG9fanNvbiBNYXRjaGluZy5BZ2VudC50b195b2pzb24pKVxuICAgICAgICAgICAgdGVzdHMgKTtcbiAgICAgIF1cbiAgfCBDRkxPV09GRiAobmFtZSwgaWRzKSAtPlxuICAgIGBBc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiQ0ZMT1dPRkZcIjtcbiAgICAgICAgXCJuYW1lXCIsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcgbmFtZTtcbiAgICAgICAgXCJwYXR0ZXJuXCIsIEpzb25VdGlsLm9mX2FycmF5IFBhdHRlcm4uaWRfdG9feW9qc29uIGlkcztcbiAgICAgIF1cbiAgfCBESU4gKGtpbmQsIGYpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIjtcbiAgICAgICAgXCJraW5kXCIsIGRpbl9raW5kX3RvX3lvanNvbiBraW5kO1xuICAgICAgICBcImZpbGVcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGYpO1xuICAgICAgXVxuICB8IERJTk9GRiBmIC0+XG4gICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTk9GRlwiO1xuICAgICAgICBcImZpbGVcIiwgSnNvblV0aWwub2ZfbGlzdCAocHJpbnRfdF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBmO1xuICAgICAgXVxuICB8IFBMT1RFTlRSWSAtPiBgQXNzb2MgWyBcImFjdGlvblwiLCBgU3RyaW5nIFwiUExPVE5PV1wiIF1cbiAgfCBQUklOVCAoZiwgdCkgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCI7XG4gICAgICAgIFwidGV4dFwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgdCk7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG4gIHwgU1BFQ0lFUyAoZiwgaWRzLCB0ZXN0cykgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU1wiO1xuICAgICAgICBcImZpbGVcIiwgYExpc3QgKExpc3QubWFwIChwcmludF90X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMpIGYpO1xuICAgICAgICBcInBhdHRlcm5cIiwgSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24gaWRzO1xuICAgICAgICAoIFwidGVzdHNcIixcbiAgICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgICAoSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF90b19qc29uIE1hdGNoaW5nLkFnZW50LnRvX3lvanNvbikpXG4gICAgICAgICAgICB0ZXN0cyApO1xuICAgICAgXVxuICB8IFNQRUNJRVNfT0ZGIGYgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNQRUNJRVNfT0ZGXCI7XG4gICAgICAgIFwiZmlsZVwiLCBgTGlzdCAoTGlzdC5tYXAgKHByaW50X3RfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcykgZik7XG4gICAgICBdXG5cbmxldCBtb2RpZmljYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcImZpbGVcIiwgYExpc3QgZik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIik7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgZik7IChcInRleHRcIiwgYExpc3QgdCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiUFJJTlRcIikgXVxuICAgIC0+XG4gICAgUFJJTlRcbiAgICAgICggTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgZixcbiAgICAgICAgTGlzdC5tYXAgKHByaW50X3RfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcykgdCApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcInRleHRcIiwgYExpc3QgdCkgXVxuICB8IGBBc3NvYyBbIChcInRleHRcIiwgYExpc3QgdCk7IChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpOyAoXCJmaWxlXCIsIGBOdWxsKSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlBSSU5UXCIpOyAoXCJ0ZXh0XCIsIGBMaXN0IHQpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKTsgKFwidGV4dFwiLCBgTGlzdCB0KSBdXG4gIHwgYEFzc29jIFsgKFwidGV4dFwiLCBgTGlzdCB0KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQUklOVFwiKSBdIC0+XG4gICAgUFJJTlQgKFtdLCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSB0KVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJraW5kXCIsIGtpbmQpIF1cbiAgfCBgQXNzb2MgWyAoXCJraW5kXCIsIGtpbmQpOyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIik7IChcImtpbmRcIiwga2luZCk7IChcImZpbGVcIiwgYExpc3QgZikgXVxuICB8IGBBc3NvYyBbIChcImtpbmRcIiwga2luZCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGYpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIkRJTlwiKTsgKFwia2luZFwiLCBraW5kKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBmKTsgKFwia2luZFwiLCBraW5kKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5cIikgXSAtPlxuICAgIERJTiAoZGluX2tpbmRfb2ZfeW9qc29uIGtpbmQsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGYpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhclwiLCBgSW50IHYpOyAoXCJ2YWx1ZVwiLCBlKSBdXG4gIHwgYEFzc29jIFsgKFwidmFyXCIsIGBJbnQgdik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpOyAoXCJ2YWx1ZVwiLCBlKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJVUERBVEVcIik7IChcInZhbHVlXCIsIGUpOyAoXCJ2YXJcIiwgYEludCB2KSBdXG4gIHwgYEFzc29jIFsgKFwidmFyXCIsIGBJbnQgdik7IChcInZhbHVlXCIsIGUpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKSBdXG4gIHwgYEFzc29jIFsgKFwidmFsdWVcIiwgZSk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiVVBEQVRFXCIpOyAoXCJ2YXJcIiwgYEludCB2KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsdWVcIiwgZSk7IChcInZhclwiLCBgSW50IHYpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlVQREFURVwiKSBdIC0+XG4gICAgVVBEQVRFXG4gICAgICAodiwgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGFsZ19leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBlKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicmVwZWF0c1wiLCBuKTsgKFwicnVsZVwiLCByKSBdXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpOyAoXCJydWxlXCIsIHIpOyAoXCJyZXBlYXRzXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIik7IChcInJ1bGVcIiwgcikgXVxuICB8IGBBc3NvYyBbIChcInJ1bGVcIiwgcik7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiSVRFUlwiKTsgKFwicmVwZWF0c1wiLCBuKSBdXG4gIHwgYEFzc29jIFsgKFwicmVwZWF0c1wiLCBuKTsgKFwicnVsZVwiLCByKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJJVEVSXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJydWxlXCIsIHIpOyAoXCJyZXBlYXRzXCIsIG4pOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIklURVJcIikgXSAtPlxuICAgIElURVJfUlVMRVxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoYWxnX2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIG4sXG4gICAgICAgIHJ1bGVfb2ZfeW9qc29uIH5maWxlbmFtZXMgciApXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJQTE9UTk9XXCIpIF0gLT4gUExPVEVOVFJZXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIik7IChcImZpbGVcIiwgYExpc3QgbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpIF0gLT5cbiAgICBESU5PRkYgKExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIik7IChcImZpbGVcIiwgYE51bGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJESU5PRkZcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiRElOT0ZGXCIpIF0gLT5cbiAgICBESU5PRkYgW11cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF0gLT5cbiAgICBTTkFQU0hPVCAoZmFsc2UsIExpc3QubWFwIChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIGwpXG4gIHwgYEFzc29jXG4gICAgICBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBMaXN0IGwpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImZpbGVcIiwgYExpc3QgbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jXG4gICAgICBbIChcImZpbGVcIiwgYExpc3QgbCk7IChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2NcbiAgICAgIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBMaXN0IGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdXG4gICAgLT5cbiAgICBTTkFQU0hPVCAocmF3LCBMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBsKVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTnVsbCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwicmF3XCIsIGBCb29sIHJhdyk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU05BUFNIT1RcIikgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvY1xuICAgICAgWyAoXCJmaWxlXCIsIGBOdWxsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwicmF3XCIsIGBCb29sIHJhdykgXVxuICB8IGBBc3NvYyBbIChcInJhd1wiLCBgQm9vbCByYXcpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpOyAoXCJyYXdcIiwgYEJvb2wgcmF3KSBdIC0+XG4gICAgU05BUFNIT1QgKHJhdywgW10pXG4gIHwgYEFzc29jIFsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTTkFQU0hPVFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF1cbiAgfCBgQXNzb2MgWyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNOQVBTSE9UXCIpIF0gLT5cbiAgICBTTkFQU0hPVCAoZmFsc2UsIFtdKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKTsgKFwiZmlsZVwiLCBgTGlzdCBsKSBdXG4gIHwgYEFzc29jIFsgKFwiZmlsZVwiLCBgTGlzdCBsKTsgKFwiYWN0aW9uXCIsIGBTdHJpbmcgXCJTVE9QXCIpIF0gLT5cbiAgICBTVE9QIChMaXN0Lm1hcCAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKSBsKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKTsgKFwiZmlsZVwiLCBgTnVsbCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgYE51bGwpOyAoXCJhY3Rpb25cIiwgYFN0cmluZyBcIlNUT1BcIikgXVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1RPUFwiKSBdIC0+XG4gICAgU1RPUCBbXVxuICB8IGBBc3NvYyBfIGFzIGwgd2hlbiBZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhY3Rpb25cIiBsID0gYFN0cmluZyBcIkNGTE9XXCIgLT5cbiAgICBDRkxPV1xuICAgICAgKCBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibmFtZVwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJwYXR0ZXJuXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnRlc3Rfb2ZfanNvbiBNYXRjaGluZy5BZ2VudC5vZl95b2pzb24pKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0ZXN0c1wiIGwpIClcbiAgfCBgQXNzb2MgXyBhcyBsIHdoZW4gWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWN0aW9uXCIgbCA9IGBTdHJpbmcgXCJDRkxPV09GRlwiXG4gICAgLT5cbiAgICBDRkxPV09GRlxuICAgICAgKCBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwibmFtZVwiIGwpLFxuICAgICAgICBKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvblxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJwYXR0ZXJuXCIgbCkgKVxuICB8IGBBc3NvYyBbIChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIik7IChcImZpbGVcIiwgcCkgXVxuICB8IGBBc3NvYyBbIChcImZpbGVcIiwgcCk7IChcImFjdGlvblwiLCBgU3RyaW5nIFwiU1BFQ0lFU19PRkZcIikgXSAtPlxuICAgIFNQRUNJRVNfT0ZGIChKc29uVXRpbC50b19saXN0IChwcmludF90X2V4cHJfb2ZfeW9qc29uIH5maWxlbmFtZXMpIHApXG4gIHwgYEFzc29jIF8gYXMgbCB3aGVuIFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImFjdGlvblwiIGwgPSBgU3RyaW5nIFwiU1BFQ0lFU1wiXG4gICAgLT5cbiAgICBTUEVDSUVTXG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAocHJpbnRfdF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJmaWxlXCIgbCksXG4gICAgICAgIEpzb25VdGlsLnRvX2FycmF5IFBhdHRlcm4uaWRfb2ZfeW9qc29uXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInBhdHRlcm5cIiBsKSxcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgKEluc3RhbnRpYXRpb24udGVzdF9vZl9qc29uIE1hdGNoaW5nLkFnZW50Lm9mX3lvanNvbikpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInRlc3RzXCIgbCkgKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBtb2RpZmljYXRpb25cIiwgeCkpXG5cbnR5cGUgcGVydHVyYmF0aW9uID0ge1xuICBhbGFybTogTmJyLnQgb3B0aW9uO1xuICBwcmVjb25kaXRpb246IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZDtcbiAgZWZmZWN0OiBtb2RpZmljYXRpb24gbGlzdDtcbiAgcmVwZWF0OiAoUGF0dGVybi5pZCBhcnJheSBsaXN0LCBpbnQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQ7XG4gIG5lZWRzX2JhY2t0cmFjazogYm9vbDtcbn1cblxubGV0IGJvb2xfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyA9XG4gIEFsZ19leHByLmJvb2xfdG9feW9qc29uIH5maWxlbmFtZXNcbiAgICAoSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pKVxuICAgIEpzb25VdGlsLm9mX2ludFxuXG5sZXQgYm9vbF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19hcnJheSBQYXR0ZXJuLmlkX29mX3lvanNvbikpXG4gICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBwZXJ0dXJiYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMgcCA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwiYWxhcm1cIiwgSnNvblV0aWwub2Zfb3B0aW9uIChmdW4gbiAtPiBOYnIudG9feW9qc29uIG4pIHAuYWxhcm07XG4gICAgICAoIFwiY29uZGl0aW9uXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKGJvb2xfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICBwLnByZWNvbmRpdGlvbiApO1xuICAgICAgXCJlZmZlY3RcIiwgSnNvblV0aWwub2ZfbGlzdCAobW9kaWZpY2F0aW9uX3RvX3lvanNvbiB+ZmlsZW5hbWVzKSBwLmVmZmVjdDtcbiAgICAgICggXCJyZXBlYXRcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAoYm9vbF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzKVxuICAgICAgICAgIHAucmVwZWF0ICk7XG4gICAgICBcIm5lZWRzX2JhY2t0cmFja1wiLCBgQm9vbCBwLm5lZWRzX2JhY2t0cmFjaztcbiAgICBdXG5cbmxldCBwZXJ0dXJiYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNSAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBhbGFybSA9IEpzb25VdGlsLnRvX29wdGlvbiBOYnIub2ZfeW9qc29uIChMaXN0LmFzc29jIFwiYWxhcm1cIiBsKTtcbiAgICAgICAgIHByZWNvbmRpdGlvbiA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImNvbmRpdGlvblwiIGwpO1xuICAgICAgICAgZWZmZWN0ID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChtb2RpZmljYXRpb25fb2ZfeW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJlZmZlY3RcIiBsKTtcbiAgICAgICAgIHJlcGVhdCA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGJvb2xfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJlcGVhdFwiIGwpO1xuICAgICAgICAgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgQm9vbCBiIC0+IGJcbiAgICAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IGJvb2xcIiwgeCkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwibmVlZHNfYmFja3RyYWNrXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcGVydHVyYmF0aW9uXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcGVydHVyYmF0aW9uXCIsIHgpKVxuXG5sZXQgZXhpc3RzX21vZGlmaWNhdGlvbiBjaGVjayBsID1cbiAgQXJyYXkuZm9sZF9sZWZ0IChmdW4gYWNjIHAgLT4gYWNjIHx8IExpc3QuZXhpc3RzIGNoZWNrIHAuZWZmZWN0KSBmYWxzZSBsXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIGUgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyBhIC0+IExpc3QucmV2X2FwcGVuZCAoQXJyYXkudG9fbGlzdCBhKSBhY2MpKVxuICAgIGFjY1xuICAgIChBbGdfZXhwci5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzIGUpXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2Jvb2wgZSA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIGEgLT4gTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IGEpIGFjYykpXG4gICAgW11cbiAgICAoQWxnX2V4cHIuZXh0cmFjdF9jb25uZWN0ZWRfY29tcG9uZW50c19ib29sIGUpXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3J1bGUgYWNjIHIgPVxuICBsZXQgYSA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjICh4LCBfKSAtPiBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIHgpXG4gICAgICBhY2Mgci5kZWx0YV90b2tlbnNcbiAgaW5cbiAgbGV0IGIgPVxuICAgIG1hdGNoIHIudW5hcnlfcmF0ZSB3aXRoXG4gICAgfCBOb25lIC0+IGFcbiAgICB8IFNvbWUgKHgsIF8pIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhIHhcbiAgaW5cbiAgbGV0IGMgPSBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYiByLnJhdGUgaW5cbiAgTGlzdC5yZXZfYXBwZW5kIChBcnJheS50b19saXN0IHIuY29ubmVjdGVkX2NvbXBvbmVudHMpIGNcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnQgYWNjIHggPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICB8IFN0cl9wZXhwciBfIC0+IGFjY1xuICAgICAgfCBBbGdfcGV4cHIgZSAtPiBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX2V4cHIgYWNjIGUpXG4gICAgYWNjIHhcblxubGV0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9uIGFjYyA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcnVsZVxuICAgICAgKGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZSlcbiAgICAgIHJcbiAgfCBVUERBVEUgKF8sIGUpIC0+IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfZXhwciBhY2MgZVxuICB8IFNOQVBTSE9UIChfLCBwKSB8IFNUT1AgcCB8IFNQRUNJRVNfT0ZGIHAgfCBESU4gKF8sIHApIHwgRElOT0ZGIHAgLT5cbiAgICBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3ByaW50IGFjYyBwXG4gIHwgUFJJTlQgKGZuLCBwKSAtPlxuICAgIGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfcHJpbnRcbiAgICAgIChleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX3ByaW50IGFjYyBwKVxuICAgICAgZm5cbiAgfCBDRkxPVyAoXywgeCwgXykgfCBDRkxPV09GRiAoXywgeCkgfCBTUEVDSUVTIChfLCB4LCBfKSAtPlxuICAgIExpc3QucmV2X2FwcGVuZCAoQXJyYXkudG9fbGlzdCB4KSBhY2NcbiAgfCBQTE9URU5UUlkgLT4gYWNjXG5cbmxldCBleHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbnMgbCA9XG4gIExpc3QuZm9sZF9sZWZ0IGV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfbW9kaWZpY2F0aW9uIFtdIGxcblxubGV0IG1hcF9leHByX3J1bGUgZiB4ID1cbiAge1xuICAgIHJhdGUgPSBmIHgucmF0ZTtcbiAgICB1bmFyeV9yYXRlID0gT3B0aW9uX3V0aWwubWFwIChmdW4gKHgsIGQpIC0+IGYgeCwgZCkgeC51bmFyeV9yYXRlO1xuICAgIGNvbm5lY3RlZF9jb21wb25lbnRzID0geC5jb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICByZW1vdmVkID0geC5yZW1vdmVkO1xuICAgIGluc2VydGVkID0geC5pbnNlcnRlZDtcbiAgICBkZWx0YV90b2tlbnMgPSBMaXN0Lm1hcCAoZnVuICh4LCB0KSAtPiBmIHgsIHQpIHguZGVsdGFfdG9rZW5zO1xuICAgIHN5bnRhY3RpY19ydWxlID0geC5zeW50YWN0aWNfcnVsZTtcbiAgICBpbnN0YW50aWF0aW9ucyA9IHguaW5zdGFudGlhdGlvbnM7XG4gIH1cblxubGV0IGZvbGRfZXhwcl9ydWxlIGYgeCByID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyAoeSwgXykgLT4gZiBhY2MgeSlcbiAgICAoT3B0aW9uX3V0aWwuZm9sZCAoZnVuIGEgKGUsIF8pIC0+IGYgYSBlKSAoZiB4IHIucmF0ZSkgci51bmFyeV9yYXRlKVxuICAgIHIuZGVsdGFfdG9rZW5zXG5cbmxldCBtYXBfZXhwcl9tb2RpZmljYXRpb24gZiA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPiBJVEVSX1JVTEUgKGYgZSwgbWFwX2V4cHJfcnVsZSBmIHIpXG4gIHwgVVBEQVRFIChpLCBlKSAtPiBVUERBVEUgKGksIGYgZSlcbiAgfCBTTkFQU0hPVCAocmF3LCBwKSAtPiBTTkFQU0hPVCAocmF3LCBtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgU1RPUCBwIC0+IFNUT1AgKG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBQUklOVCAoZm4sIHApIC0+IFBSSU5UIChtYXBfZXhwcl9wcmludCBmIGZuLCBtYXBfZXhwcl9wcmludCBmIHApXG4gIHwgRElOIChiLCBwKSAtPiBESU4gKGIsIG1hcF9leHByX3ByaW50IGYgcClcbiAgfCBESU5PRkYgcCAtPiBESU5PRkYgKG1hcF9leHByX3ByaW50IGYgcClcbiAgfCAoQ0ZMT1cgXyB8IENGTE9XT0ZGIF8gfCBTUEVDSUVTX09GRiBfIHwgUExPVEVOVFJZKSBhcyB4IC0+IHhcbiAgfCBTUEVDSUVTIChwLCB4LCB0KSAtPiBTUEVDSUVTIChtYXBfZXhwcl9wcmludCBmIHAsIHgsIHQpXG5cbmxldCBmb2xkX2V4cHJfbW9kaWZpY2F0aW9uIGYgeCA9IGZ1bmN0aW9uXG4gIHwgSVRFUl9SVUxFIChlLCByKSAtPiBmb2xkX2V4cHJfcnVsZSBmIChmIHggZSkgclxuICB8IFVQREFURSAoXywgZSkgLT4gZiB4IGVcbiAgfCBTTkFQU0hPVCAoXywgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG4gIHwgU1RPUCBwIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IFBSSU5UIChmbiwgcCkgLT4gZm9sZF9leHByX3ByaW50IGYgKGZvbGRfZXhwcl9wcmludCBmIHggcCkgZm5cbiAgfCBESU4gKF8sIHApIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IERJTk9GRiBwIC0+IGZvbGRfZXhwcl9wcmludCBmIHggcFxuICB8IENGTE9XIF8gfCBDRkxPV09GRiBfIHwgU1BFQ0lFU19PRkYgXyB8IFBMT1RFTlRSWSAtPiB4XG4gIHwgU1BFQ0lFUyAocCwgXywgXykgLT4gZm9sZF9leHByX3ByaW50IGYgeCBwXG5cbmxldCBtYXBfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sIHggPVxuICB7XG4gICAgYWxhcm0gPSB4LmFsYXJtO1xuICAgIHByZWNvbmRpdGlvbiA9IGZfYm9vbCB4LnByZWNvbmRpdGlvbjtcbiAgICBlZmZlY3QgPSBMaXN0Lm1hcCAobWFwX2V4cHJfbW9kaWZpY2F0aW9uIGZfYWxnKSB4LmVmZmVjdDtcbiAgICByZXBlYXQgPSBmX2Jvb2wgeC5yZXBlYXQ7XG4gICAgbmVlZHNfYmFja3RyYWNrID0geC5uZWVkc19iYWNrdHJhY2s7XG4gIH1cblxubGV0IGZvbGRfZXhwcl9wZXJ0dXJiYXRpb24gZl9hbGcgZl9ib29sIGFjYyB4ID1cbiAgbGV0IGExID0gZl9ib29sIGFjYyB4LnByZWNvbmRpdGlvbiBpblxuICBsZXQgYTIgPSBMaXN0LmZvbGRfbGVmdCAoZm9sZF9leHByX21vZGlmaWNhdGlvbiBmX2FsZykgYTEgeC5lZmZlY3QgaW5cbiAgZl9ib29sIGEyIHgucmVwZWF0XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlICgnYSwgJ2Fubm90KSBsaW5rID1cbiAgfCBBTllfRlJFRVxuICB8IExOS19WQUxVRSBvZiBpbnQgKiAnYW5ub3RcbiAgfCBMTktfRlJFRVxuICB8IExOS19BTllcbiAgfCBMTktfU09NRVxuICB8IExOS19UWVBFIG9mICdhICogJ2EgICgqKiBwb3J0ICogYWdlbnRfdHlwZSAqKVxuXG50eXBlIHN3aXRjaGluZyA9IExpbmtlZCBvZiBpbnQgfCBGcmVlZCB8IE1haW50YWluZWQgfCBFcmFzZWRcblxudHlwZSBydWxlX2ludGVybmFsID1cbiAgfCBJX0FOWVxuICB8IElfQU5ZX0NIQU5HRUQgb2YgaW50XG4gIHwgSV9BTllfRVJBU0VEXG4gIHwgSV9WQUxfQ0hBTkdFRCBvZiBpbnQgKiBpbnRcbiAgfCBJX1ZBTF9FUkFTRUQgb2YgaW50XG5cbnR5cGUgcnVsZV9hZ2VudCA9IHtcbiAgcmFfdHlwZTogaW50O1xuICByYV9lcmFzZWQ6IGJvb2w7XG4gIHJhX3BvcnRzOiAoKGludCwgaW50ICogaW50KSBsaW5rIExvYy5hbm5vdGVkICogc3dpdGNoaW5nKSBhcnJheTtcbiAgcmFfaW50czogcnVsZV9pbnRlcm5hbCBhcnJheTtcbiAgcmFfc3ludGF4OlxuICAgICgoKGludCwgaW50ICogaW50KSBsaW5rIExvYy5hbm5vdGVkICogc3dpdGNoaW5nKSBhcnJheVxuICAgICogcnVsZV9pbnRlcm5hbCBhcnJheSlcbiAgICBvcHRpb247XG59XG5cbnR5cGUgcnVsZV9taXh0dXJlID0gcnVsZV9hZ2VudCBsaXN0XG5cbnR5cGUgcnVsZSA9IHtcbiAgcl9taXg6IHJ1bGVfbWl4dHVyZTtcbiAgcl9jcmVhdGVkOiBSYXdfbWl4dHVyZS50O1xuICByX2RlbHRhX3Rva2VuczogKChydWxlX21peHR1cmUsIGludCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIGludCkgbGlzdDtcbiAgcl9yYXRlOiAocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQ7XG4gIHJfdW5fcmF0ZTpcbiAgICAoKHJ1bGVfbWl4dHVyZSwgaW50KSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gICAgKiAocnVsZV9taXh0dXJlLCBpbnQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgcl9lZGl0X3N0eWxlOiBib29sO1xufVxuXG5sZXQgcHJpbnRfbGluayBwcl9wb3J0IHByX3R5cGUgcHJfYW5ub3QgZiA9IGZ1bmN0aW9uXG4gIHwgQU5ZX0ZSRUUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiI1wiXG4gIHwgTE5LX1RZUEUgKHAsIGEpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlYS4lYVwiIChwcl9wb3J0IGEpIHAgcHJfdHlwZSBhXG4gIHwgTE5LX0FOWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCJcbiAgfCBMTktfRlJFRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIuXCJcbiAgfCBMTktfU09NRSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJfXCJcbiAgfCBMTktfVkFMVUUgKGksIGEpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlaSVhXCIgaSBwcl9hbm5vdCBhXG5cbmxldCBsaW5rX3RvX2pzb24gcG9ydF90b19qc29uIHR5cGVfdG9fanNvbiBhbm5vdF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBBTllfRlJFRSAtPiBgU3RyaW5nIFwiQU5ZX0ZSRUVcIlxuICB8IExOS19GUkVFIC0+IGBTdHJpbmcgXCJGUkVFXCJcbiAgfCBMTktfVFlQRSAocCwgYSkgLT4gYExpc3QgWyBwb3J0X3RvX2pzb24gYSBwOyB0eXBlX3RvX2pzb24gYSBdXG4gIHwgTE5LX0FOWSAtPiBgTnVsbFxuICB8IExOS19TT01FIC0+IGBTdHJpbmcgXCJTT01FXCJcbiAgfCBMTktfVkFMVUUgKGksIGEpIC0+IGBMaXN0IChgSW50IGkgOjogYW5ub3RfdG9fanNvbiBhKVxuXG5sZXQgbGlua19vZl9qc29uIHBvcnRfb2ZfanNvbiB0eXBlX29mX2pzb24gYW5ub3RlZF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQU5ZX0ZSRUVcIiAtPiBBTllfRlJFRVxuICB8IGBTdHJpbmcgXCJGUkVFXCIgLT4gTE5LX0ZSRUVcbiAgfCBgTGlzdCBbIHA7IGEgXSAtPlxuICAgIGxldCB4ID0gdHlwZV9vZl9qc29uIGEgaW5cbiAgICBMTktfVFlQRSAocG9ydF9vZl9qc29uIHggcCwgeClcbiAgfCBgTnVsbCAtPiBMTktfQU5ZXG4gIHwgYFN0cmluZyBcIlNPTUVcIiAtPiBMTktfU09NRVxuICB8IGBMaXN0IChgSW50IGkgOjogKChbXSB8IF8gOjogXyA6OiBfKSBhcyBhKSkgLT5cbiAgICBMTktfVkFMVUUgKGksIGFubm90ZWRfb2ZfanNvbiBhKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiVW5jb3JyZWN0IGxpbmtcIiwgeCkpXG5cbmxldCBwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncyBmIChzLCBhKSA9XG4gIGlmIGx0eXBlcyB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi8qJWEuJWEqL1wiXG4gICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhKVxuICAgICAgc1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgYVxuXG5sZXQgcHJpbnRfcnVsZV9pbnRlcm5hbCBzaWdzIH5zaG93X2VyYXNlZCBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+ICgpXG4gIHwgSV9BTllfQ0hBTkdFRCBqIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInsjLyVhfVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBqXG4gIHwgSV9BTllfRVJBU0VEIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInsjJXR9XCIgKGZ1biBmIC0+XG4gICAgICAgIGlmIHNob3dfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLS1cIilcbiAgfCBJX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgIGlmIGkgPD4gaiB0aGVuXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhLyVhfVwiXG4gICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKVxuICAgICAgICBpXG4gICAgICAgIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKVxuICAgICAgICBqXG4gICAgZWxzZVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcInslYX1cIiAoU2lnbmF0dXJlLnByaW50X2ludGVybmFsX3N0YXRlIHNpZ3MgYWdfdHkgc2l0ZSkgaVxuICB8IElfVkFMX0VSQVNFRCBpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInslYSV0fVwiIChTaWduYXR1cmUucHJpbnRfaW50ZXJuYWxfc3RhdGUgc2lncyBhZ190eSBzaXRlKSBpXG4gICAgICAoZnVuIGYgLT4gaWYgc2hvd19lcmFzZWQgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCItLVwiKVxuXG5sZXQgcnVsZV9pbnRlcm5hbF90b19qc29uID0gZnVuY3Rpb25cbiAgfCBJX0FOWSAtPiBgTnVsbFxuICB8IElfQU5ZX0NIQU5HRUQgaiAtPiBgTGlzdCBbIGBTdHJpbmcgXCJBTllcIjsgYEludCBqIF1cbiAgfCBJX0FOWV9FUkFTRUQgLT4gYFN0cmluZyBcIkVSQVNFRFwiXG4gIHwgSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT4gYExpc3QgWyBgSW50IGk7IGBJbnQgaiBdXG4gIHwgSV9WQUxfRVJBU0VEIGkgLT4gYExpc3QgWyBgSW50IGk7IGBTdHJpbmcgXCJFUkFTRURcIiBdXG5cbmxldCBydWxlX2ludGVybmFsX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBOdWxsIC0+IElfQU5ZXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiQU5ZXCI7IGBJbnQgaiBdIC0+IElfQU5ZX0NIQU5HRUQgalxuICB8IGBTdHJpbmcgXCJFUkFTRURcIiAtPiBJX0FOWV9FUkFTRURcbiAgfCBgTGlzdCBbIGBJbnQgaTsgYEludCBqIF0gLT4gSV9WQUxfQ0hBTkdFRCAoaSwgailcbiAgfCBgTGlzdCBbIGBJbnQgaTsgYFN0cmluZyBcIkVSQVNFRFwiIF0gLT4gSV9WQUxfRVJBU0VEIGlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIlVuY29ycmVjdCBydWxlX2ludGVybmFsXCIsIHgpKVxuXG5sZXQgcHJpbnRfc3dpdGNoaW5nIH5zaG93X2VyYXNlZCBmID0gZnVuY3Rpb25cbiAgfCBMaW5rZWQgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLyVpXCIgaVxuICB8IEZyZWVkIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi8uXCJcbiAgfCBNYWludGFpbmVkIC0+ICgpXG4gIHwgRXJhc2VkIC0+IGlmIHNob3dfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLS1cIlxuXG5sZXQgc3dpdGNoaW5nX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IEZyZWVkIC0+IGBTdHJpbmcgXCJGcmVlZFwiXG4gIHwgTWFpbnRhaW5lZCAtPiBgU3RyaW5nIFwiTWFpbnRhaW5lZFwiXG4gIHwgRXJhc2VkIC0+IGBTdHJpbmcgXCJFcmFzZWRcIlxuICB8IExpbmtlZCBpIC0+IEpzb25VdGlsLm9mX2ludCBpXG5cbmxldCBzd2l0Y2hpbmdfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkZyZWVkXCIgLT4gRnJlZWRcbiAgfCBgU3RyaW5nIFwiTWFpbnRhaW5lZFwiIC0+IE1haW50YWluZWRcbiAgfCBgU3RyaW5nIFwiRXJhc2VkXCIgLT4gRXJhc2VkXG4gIHwgeCAtPiBMaW5rZWQgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOlwiSW52YWxpZCBTd2l0Y2hpbmdcIiB4KVxuXG5sZXQgcHJpbnRfcnVsZV9saW5rIHNpZ3MgfnNob3dfZXJhc2VkIH5sdHlwZXMgZiAoKGUsIF8pLCBzKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJbJWElYV1cIlxuICAgIChwcmludF9saW5rXG4gICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgIChwcmludF9saW5rX2Fubm90IH5sdHlwZXMgc2lncykpXG4gICAgZVxuICAgIChwcmludF9zd2l0Y2hpbmcgfnNob3dfZXJhc2VkKVxuICAgIHNcblxubGV0IHByaW50X2NvdW50ZXJfdGVzdCBmID0gZnVuY3Rpb25cbiAgfCBjLCB0cnVlIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9JWlcIiBjXG4gIHwgYywgZmFsc2UgLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiBjXG5cbmxldCBwcmludF9jb3VudGVyX2RlbHRhIGNvdW50ZXJzIGogZiBzd2l0Y2ggPVxuICBtYXRjaCBzd2l0Y2ggd2l0aFxuICB8IExpbmtlZCBpIC0+XG4gICAgbGV0IHJvb3QgPSBSYXdfbWl4dHVyZS5maW5kIGNvdW50ZXJzIGkgaW5cbiAgICBsZXQgcywgKF8sIGlzX2NvdW50ZXIpID0gTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcnMuUmF3X21peHR1cmUucmFuayByb290IGluXG4gICAgbGV0IGRlbHRhID1cbiAgICAgIGlmIGlzX2NvdW50ZXIgdGhlblxuICAgICAgICBzIC0gMVxuICAgICAgZWxzZVxuICAgICAgICBqIC0gaVxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIi8rPSVkXCIgZGVsdGFcbiAgfCBGcmVlZCAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQ2Fubm90IGVyYXNlIGFsbCBpbmNyZW1lbnQgYWdlbnRzXCIpKVxuICB8IE1haW50YWluZWQgLT4gKClcbiAgfCBFcmFzZWQgLT4gKClcblxubGV0IHByaW50X3J1bGVfaW50ZiB+bm9Db3VudGVycyBzaWdzIH5zaG93X2VyYXNlZCB+bHR5cGVzIGFnX3R5IGZcbiAgICAocG9ydHMsIGludHMsIGNvdW50ZXJzLCBjcmVhdGVkX2NvdW50ZXJzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlblxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIE1haW50YWluZWQgLT4gaW50cy4oaSkgPD4gSV9BTllcbiAgICAgICAgfCAoTE5LX0FOWSwgXyksIChFcmFzZWQgfCBGcmVlZCB8IExpbmtlZCBfKVxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBBTllfRlJFRSB8IExOS19GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICB0aGVuIChcbiAgICAgICAgbGV0IChlLCBfKSwgc3dpdGNoID0gcG9ydHMuKGkpIGluXG4gICAgICAgIGxldCBpc19jb3VudGVyID1cbiAgICAgICAgICBtYXRjaCBlIHdpdGhcbiAgICAgICAgICB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfQU5ZIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+IGZhbHNlXG4gICAgICAgICAgfCBMTktfVkFMVUUgKGosIF8pIC0+XG4gICAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgICBsZXQgcm9vdCA9IFJhd19taXh0dXJlLmZpbmQgY291bnRlcnMgaiBpblxuICAgICAgICAgICAgICAgbGV0IGMsIChlcSwgaXNfY291bnRlcicpID1cbiAgICAgICAgICAgICAgICAgTW9kcy5EeW5BcnJheS5nZXQgY291bnRlcnMuUmF3X21peHR1cmUucmFuayByb290XG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgaWYgaXNfY291bnRlcicgJiYgbm90IG5vQ291bnRlcnMgdGhlbiAoXG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVheyVhJWF9XCJcbiAgICAgICAgICAgICAgICAgICAoaWYgZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICBQcC5zcGFjZSlcbiAgICAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgICAgICAgICBpIHByaW50X2NvdW50ZXJfdGVzdFxuICAgICAgICAgICAgICAgICAgIChjIC0gMSwgZXEpXG4gICAgICAgICAgICAgICAgICAgKHByaW50X2NvdW50ZXJfZGVsdGEgY3JlYXRlZF9jb3VudGVycyBqKVxuICAgICAgICAgICAgICAgICAgIHN3aXRjaDtcbiAgICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgd2l0aCBJbnZhbGlkX2FyZ3VtZW50IF8gLT4gZmFsc2UpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgbm90IGlzX2NvdW50ZXIgdGhlblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYSVhXCJcbiAgICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgICAgUHAuZW1wdHlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGFnX3R5KVxuICAgICAgICAgICAgICBpXG4gICAgICAgICAgICAgIChwcmludF9ydWxlX2ludGVybmFsIHNpZ3MgfnNob3dfZXJhc2VkIGFnX3R5IGkpXG4gICAgICAgICAgICAgIGludHMuKGkpXG4gICAgICAgICAgICAgIChwcmludF9ydWxlX2xpbmsgc2lncyB+c2hvd19lcmFzZWQgfmx0eXBlcylcbiAgICAgICAgICAgICAgcG9ydHMuKGkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHVuaW9uX2ZpbmRfY291bnRlcnMgc2lncyBtaXggPVxuICBsZXQgdCA9IFJhd19taXh0dXJlLmNyZWF0ZSAxIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggc2lncyB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIHNpZ3MgLT5cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIGFnIC0+XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLnBvcnRzX2lmX2NvdW50ZXJfYWdlbnQgc2lncyBhZy5yYV90eXBlIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgKGJlZm9yZSwgYWZ0ZXIpIC0+XG4gICAgICAgICAgICBsZXQgKGEsIF8pLCBfID0gYWcucmFfcG9ydHMuKGFmdGVyKSBpblxuICAgICAgICAgICAgbGV0IChiLCBfKSwgXyA9IGFnLnJhX3BvcnRzLihiZWZvcmUpIGluXG4gICAgICAgICAgICAobWF0Y2ggYiB3aXRoXG4gICAgICAgICAgICB8IEFOWV9GUkVFIHwgTE5LX0ZSRUUgfCBMTktfQU5ZIHwgTE5LX1RZUEUgXyB8IExOS19TT01FIC0+ICgpXG4gICAgICAgICAgICB8IExOS19WQUxVRSAobG5rX2IsIF8pIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgfCBMTktfVkFMVUUgKGxua19hLCBfKSAtPiBSYXdfbWl4dHVyZS51bmlvbiB0IGxua19iIGxua19hXG4gICAgICAgICAgICAgIHwgQU5ZX0ZSRUUgfCBMTktfRlJFRSAtPlxuICAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCB0IGxua19iIGluXG4gICAgICAgICAgICAgICAgbGV0IHMsIF8gPSBNb2RzLkR5bkFycmF5LmdldCB0LlJhd19taXh0dXJlLnJhbmsgcm9vdCBpblxuICAgICAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQuUmF3X21peHR1cmUucmFuayByb290IChzLCAodHJ1ZSwgdHJ1ZSkpXG4gICAgICAgICAgICAgIHwgTE5LX0FOWSAtPlxuICAgICAgICAgICAgICAgIGxldCByb290ID0gUmF3X21peHR1cmUuZmluZCB0IGxua19iIGluXG4gICAgICAgICAgICAgICAgbGV0IHMsIF8gPSBNb2RzLkR5bkFycmF5LmdldCB0LlJhd19taXh0dXJlLnJhbmsgcm9vdCBpblxuICAgICAgICAgICAgICAgIE1vZHMuRHluQXJyYXkuc2V0IHQuUmF3X21peHR1cmUucmFuayByb290IChzLCAoZmFsc2UsIHRydWUpKVxuICAgICAgICAgICAgICB8IExOS19UWVBFIF8gfCBMTktfU09NRSAtPlxuICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlBvcnQgYSBvZiBfX2NvdW50ZXJfYWdlbnQgYWdlbnQgbm90IHdlbGwgc3BlY2lmaWVkXCIpKSkpKVxuICAgICAgICBtaXhcbiAgaW5cbiAgdFxuXG5sZXQgcHJpbnRfcnVsZV9hZ2VudCB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgY291bnRlcnMgY3JlYXRlZF9jb3VudGVycyBmIGFnID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhKEBbPGg+JWFAXSkldFwiIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncykgYWcucmFfdHlwZVxuICAgIChwcmludF9ydWxlX2ludGYgfm5vQ291bnRlcnMgc2lncyB+c2hvd19lcmFzZWQ6ZmFsc2Ugfmx0eXBlcyBhZy5yYV90eXBlKVxuICAgIChhZy5yYV9wb3J0cywgYWcucmFfaW50cywgY291bnRlcnMsIGNyZWF0ZWRfY291bnRlcnMpIChmdW4gZiAtPlxuICAgICAgaWYgYWcucmFfZXJhc2VkIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLVwiKVxuXG5sZXQgcHJpbnRfcnVsZV9taXh0dXJlIH5ub0NvdW50ZXJzIHNpZ3Mgfmx0eXBlcyBjcmVhdGVkIGYgbWl4ID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRzID0gdW5pb25fZmluZF9jb3VudGVycyAoU29tZSBzaWdzKSBtaXggaW5cbiAgbGV0IGNyZWF0ZWRfaW5jciA9IFJhd19taXh0dXJlLnVuaW9uX2ZpbmRfY291bnRlcnMgKFNvbWUgc2lncykgY3JlYXRlZCBpblxuICBsZXQgcmVjIGF1eF9wcmludCBzb21lID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+ICgpXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3MgaC5yYV90eXBlICYmIG5vdCBub0NvdW50ZXJzIHRoZW5cbiAgICAgICAgYXV4X3ByaW50IHNvbWUgdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCAoKSA9IGlmIHNvbWUgdGhlbiBQcC5jb21tYSBmIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgcHJpbnRfcnVsZV9hZ2VudCB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgY291bnRlcl9hZ2VudHMgY3JlYXRlZF9pbmNyXG4gICAgICAgICAgICBmIGhcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X3ByaW50IHRydWUgdFxuICAgICAgKVxuICBpblxuICBhdXhfcHJpbnQgZmFsc2UgbWl4XG5cbmxldCBwcmludF9pbnRlcm5hbF9saHMgc2lncyBhZ190eSBzaXRlIGYgPSBmdW5jdGlvblxuICB8IElfQU5ZIC0+ICgpXG4gIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcInsjfVwiXG4gIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGlcblxubGV0IHByaW50X2ludGVybmFsX3JocyBzaWdzIGFnX3R5IHNpdGUgZiA9IGZ1bmN0aW9uXG4gIHwgSV9BTlkgLT4gKClcbiAgfCBJX0FOWV9DSEFOR0VEIGogfCBJX1ZBTF9DSEFOR0VEIChfLCBqKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ7JWF9XCIgKFNpZ25hdHVyZS5wcmludF9pbnRlcm5hbF9zdGF0ZSBzaWdzIGFnX3R5IHNpdGUpIGpcbiAgfCBJX0FOWV9FUkFTRUQgfCBJX1ZBTF9FUkFTRUQgXyAtPiBhc3NlcnQgZmFsc2VcblxubGV0IHByaW50X2xpbmtfbGhzIH5sdHlwZXMgc2lncyBmICgoZSwgXyksIF8pID1cbiAgcHJpbnRfbGlua1xuICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAocHJpbnRfbGlua19hbm5vdCB+bHR5cGVzIHNpZ3MpXG4gICAgZiBlXG5cbmxldCBwcmludF9saW5rX3JocyB+bHR5cGVzIHNpZ3MgZiAoKGUsIF8pLCBzKSA9XG4gIG1hdGNoIHMgd2l0aFxuICB8IExpbmtlZCBpIC0+XG4gICAgcHJpbnRfbGlua1xuICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MpXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAoZnVuIF8gKCkgLT4gKCkpXG4gICAgICBmXG4gICAgICAoTE5LX1ZBTFVFIChpLCAoKSkpXG4gIHwgRnJlZWQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgTWFpbnRhaW5lZCAtPlxuICAgIHByaW50X2xpbmtcbiAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzKVxuICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgKHByaW50X2xpbmtfYW5ub3Qgfmx0eXBlcyBzaWdzKVxuICAgICAgZiBlXG4gIHwgRXJhc2VkIC0+IGFzc2VydCBmYWxzZVxuXG5sZXQgcHJpbnRfaW50Zl9saHMgfmx0eXBlcyBzaWdzIGFnX3R5IGYgKHBvcnRzLCBpbnRzKSA9XG4gIGxldCByZWMgYXV4IGVtcHR5IGkgPVxuICAgIGlmIGkgPCBBcnJheS5sZW5ndGggcG9ydHMgdGhlblxuICAgICAgaWZcbiAgICAgICAgbWF0Y2ggcG9ydHMuKGkpIHdpdGhcbiAgICAgICAgfCAoKExOS19TT01FIHwgTE5LX0ZSRUUgfCBBTllfRlJFRSB8IExOS19UWVBFIF8gfCBMTktfVkFMVUUgXyksIF8pLCBfIC0+XG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgXyAtPlxuICAgICAgICAgIChtYXRjaCBpbnRzLihpKSB3aXRoXG4gICAgICAgICAgfCBJX0FOWSB8IElfQU5ZX0VSQVNFRCB8IElfQU5ZX0NIQU5HRUQgXyAtPiBmYWxzZVxuICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCBfIHwgSV9WQUxfRVJBU0VEIF8gLT4gdHJ1ZSlcbiAgICAgIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhJWFbJWFdXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLnNwYWNlKVxuICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3MgYWdfdHkpXG4gICAgICAgICAgICBpXG4gICAgICAgICAgICAocHJpbnRfaW50ZXJuYWxfbGhzIHNpZ3MgYWdfdHkgaSlcbiAgICAgICAgICAgIGludHMuKGkpXG4gICAgICAgICAgICAocHJpbnRfbGlua19saHMgfmx0eXBlcyBzaWdzKVxuICAgICAgICAgICAgcG9ydHMuKGkpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSAoc3VjYyBpKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGF1eCBlbXB0eSAoc3VjYyBpKVxuICBpblxuICBhdXggdHJ1ZSAwXG5cbmxldCBwcmludF9pbnRmX3JocyB+bHR5cGVzIHNpZ3MgYWdfdHkgZiAocG9ydHMsIGludHMpID1cbiAgbGV0IHJlYyBhdXggZW1wdHkgaSA9XG4gICAgaWYgaSA8IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICBpZlxuICAgICAgICBtYXRjaCBwb3J0cy4oaSkgd2l0aFxuICAgICAgICB8ICgoTE5LX1NPTUUgfCBMTktfRlJFRSB8IEFOWV9GUkVFIHwgTE5LX1RZUEUgXyB8IExOS19WQUxVRSBfKSwgXyksIF8gLT5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIHwgKExOS19BTlksIF8pLCAoRXJhc2VkIHwgRnJlZWQgfCBMaW5rZWQgXykgLT4gdHJ1ZVxuICAgICAgICB8IChMTktfQU5ZLCBfKSwgTWFpbnRhaW5lZCAtPlxuICAgICAgICAgIChtYXRjaCBpbnRzLihpKSB3aXRoXG4gICAgICAgICAgfCBJX0FOWSAtPiBmYWxzZVxuICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT4gaSA8PiBqXG4gICAgICAgICAgfCBJX0FOWV9FUkFTRUQgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX1ZBTF9FUkFTRUQgXyAtPiB0cnVlKVxuICAgICAgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiV0JWElYVslYV1cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuc3BhY2UpXG4gICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgIGlcbiAgICAgICAgICAgIChwcmludF9pbnRlcm5hbF9yaHMgc2lncyBhZ190eSBpKVxuICAgICAgICAgICAgaW50cy4oaSlcbiAgICAgICAgICAgIChwcmludF9saW5rX3JocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBwb3J0cy4oaSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGZhbHNlIChzdWNjIGkpXG4gICAgICApIGVsc2VcbiAgICAgICAgYXV4IGVtcHR5IChzdWNjIGkpXG4gIGluXG4gIGF1eCB0cnVlIDBcblxubGV0IHByaW50X2FnZW50X2xocyB+bHR5cGVzIHNpZ3MgZiBhZyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYShAWzxoPiVhQF0pXCJcbiAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgYWcucmFfdHlwZVxuICAgIChwcmludF9pbnRmX2xocyB+bHR5cGVzIHNpZ3MgYWcucmFfdHlwZSlcbiAgICAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMpXG5cbmxldCBwcmludF9hZ2VudF9yaHMgfmx0eXBlcyBzaWdzIGYgYWcgPVxuICBpZiBub3QgYWcucmFfZXJhc2VkIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEoQFs8aD4lYUBdKVwiXG4gICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICBhZy5yYV90eXBlXG4gICAgICAocHJpbnRfaW50Zl9yaHMgfmx0eXBlcyBzaWdzIGFnLnJhX3R5cGUpXG4gICAgICAoYWcucmFfcG9ydHMsIGFnLnJhX2ludHMpXG5cbmxldCBwcmludF9yaHMgfm5vQ291bnRlcnMgfmx0eXBlcyBzaWdzIGNyZWF0ZWQgZiBtaXggPVxuICBsZXQgcmVjIGF1eCBlbXB0eSA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPlxuICAgICAgUmF3X21peHR1cmUucHJpbnQgfm5vQ291bnRlcnMgfmluaXRpYWxfY29tbWE6KG5vdCBlbXB0eSkgfmNyZWF0ZWQ6ZmFsc2VcbiAgICAgICAgfnNpZ3MgZiBjcmVhdGVkXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGgucmFfZXJhc2VkIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldC5cIlxuICAgICAgICAgICAgKGlmIGVtcHR5IHRoZW5cbiAgICAgICAgICAgICAgIFBwLmVtcHR5XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgUHAuY29tbWEpXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSB0XG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldCVhXCJcbiAgICAgICAgICAgIChpZiBlbXB0eSB0aGVuXG4gICAgICAgICAgICAgICBQcC5lbXB0eVxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIFBwLmNvbW1hKVxuICAgICAgICAgICAgKHByaW50X2FnZW50X3JocyB+bHR5cGVzIHNpZ3MpXG4gICAgICAgICAgICBoXG4gICAgICAgIGluXG4gICAgICAgIGF1eCBmYWxzZSB0XG4gICAgICApXG4gIGluXG4gIGF1eCB0cnVlIG1peFxuXG5sZXQgcHJpbnRfcmF0ZXMgfm5vQ291bnRlcnMgc2lncyBwcl90b2sgcHJfdmFyIGYgciA9XG4gIGxldCBsdHlwZXMgPSBmYWxzZSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiIEBAICVhJXRcIlxuICAgIChBbGdfZXhwci5wcmludFxuICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIFtdKVxuICAgICAgICAgICBtKVxuICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgKGZzdCByLnJfcmF0ZSlcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIucl91bl9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lICgocmEsIF8pLCBtYXhfZGlzdCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWElYX1cIlxuICAgICAgICAgIChBbGdfZXhwci5wcmludFxuICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiXG4gICAgICAgICAgICAgICAgIChwcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzIFtdKVxuICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgIHByX3RvayBwcl92YXIpXG4gICAgICAgICAgcmFcbiAgICAgICAgICAoUHAub3B0aW9uIChmdW4gZiAobWQsIF8pIC0+XG4gICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCJcbiAgICAgICAgICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXMgW10pXG4gICAgICAgICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgICAgICAgICBwcl90b2sgcHJfdmFyKVxuICAgICAgICAgICAgICAgICBtZCkpXG4gICAgICAgICAgbWF4X2Rpc3QpXG5cbmxldCBwcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsIHNpZ3MgcHJfdG9rIHByX3ZhciBmIHIgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4ldCV0JWEldEBdXCJcbiAgICAoZnVuIGYgLT5cbiAgICAgIGlmIGZ1bGwgfHwgci5yX2VkaXRfc3R5bGUgdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWElYVwiXG4gICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2Ugci5yX2NyZWF0ZWQpXG4gICAgICAgICAgci5yX21peFxuICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6KHIucl9taXggPD4gW10pIH5zaWdzKVxuICAgICAgICAgIHIucl9jcmVhdGVkXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSV0JWEgLT4gJWFcIlxuICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChwcmludF9hZ2VudF9saHMgfmx0eXBlczpmYWxzZSBzaWdzKSlcbiAgICAgICAgICByLnJfbWl4XG4gICAgICAgICAgKGZ1biBmIC0+IGlmIHIucl9taXggPD4gW10gJiYgci5yX2NyZWF0ZWQgPD4gW10gdGhlbiBQcC5jb21tYSBmKVxuICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBfIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIikpXG4gICAgICAgICAgci5yX2NyZWF0ZWRcbiAgICAgICAgICAocHJpbnRfcmhzIH5ub0NvdW50ZXJzIH5sdHlwZXM6ZmFsc2Ugc2lncyByLnJfY3JlYXRlZClcbiAgICAgICAgICByLnJfbWl4KVxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggci5yX2RlbHRhX3Rva2VucyB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IF8gOjogXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgfCBcIilcbiAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgKChuYiwgXyksIHRrKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiVhICVhXCJcbiAgICAgICAgICAgKEFsZ19leHByLnByaW50XG4gICAgICAgICAgICAgIChmdW4gZiBtIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIlxuICAgICAgICAgICAgICAgICAgKHByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2UgW10pXG4gICAgICAgICAgICAgICAgICBtKVxuICAgICAgICAgICAgICBwcl90b2sgcHJfdmFyKVxuICAgICAgICAgICBuYiBwcl90b2sgdGspKVxuICAgIHIucl9kZWx0YV90b2tlbnNcbiAgICAoZnVuIGYgLT4gaWYgZnVsbCB0aGVuIHByaW50X3JhdGVzIH5ub0NvdW50ZXJzIHNpZ3MgcHJfdG9rIHByX3ZhciBmIHIpXG5cbmxldCBydWxlX2FnZW50X3RvX2pzb24gZmlsZW5hbWVzIGEgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcInR5cGVcIiwgYEludCBhLnJhX3R5cGU7XG4gICAgICAoIFwiYmluZGluZ3NcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKGUsIHMpIGMgLT5cbiAgICAgICAgICAgICAgIGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgICAgKGxpbmtfdG9fanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGkgLT4gYEludCBpKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBpIC0+IGBJbnQgaSlcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKHMsIGEpIC0+IFsgYEludCBzOyBgSW50IGEgXSkpXG4gICAgICAgICAgICAgICAgICAgICBlO1xuICAgICAgICAgICAgICAgICAgIHN3aXRjaGluZ190b19qc29uIHM7XG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIDo6IGMpXG4gICAgICAgICAgICAgYS5yYV9wb3J0cyBbXSkgKTtcbiAgICAgICggXCJzdGF0ZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4geCBjIC0+IHJ1bGVfaW50ZXJuYWxfdG9fanNvbiB4IDo6IGMpXG4gICAgICAgICAgICAgYS5yYV9pbnRzIFtdKSApO1xuICAgICAgXCJlcmFzZWRcIiwgYEJvb2wgYS5yYV9lcmFzZWQ7XG4gICAgXVxuXG5sZXQgcnVsZV9hZ2VudF9vZl9qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBwb3J0cyA9XG4gICAgICAgICBtYXRjaCBMaXN0LmFzc29jIFwiYmluZGluZ3NcIiBsIHdpdGhcbiAgICAgICAgIHwgYExpc3QgcyAtPlxuICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBgTGlzdCBbIGU7IHMgXSAtPlxuICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAobGlua19vZl9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbIGBJbnQgczsgYEludCBhIF0gLT4gcywgYVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKSlcbiAgICAgICAgICAgICAgICAgICAgIGUsXG4gICAgICAgICAgICAgICAgICAgc3dpdGNoaW5nX29mX2pzb24gcyApXG4gICAgICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKVxuICAgICAgICAgICAgIHNcbiAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICBpblxuICAgICAgIGxldCBpbnRzID1cbiAgICAgICAgIG1hdGNoIExpc3QuYXNzb2MgXCJzdGF0ZXNcIiBsIHdpdGhcbiAgICAgICAgIHwgYExpc3QgcyAtPiBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCBydWxlX2ludGVybmFsX29mX2pzb24gc1xuICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgcmFfdHlwZSA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBcInR5cGVcIiBsKTtcbiAgICAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgICByYV9pbnRzID0gaW50cztcbiAgICAgICAgIHJhX2VyYXNlZCA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2wgKExpc3QuYXNzb2MgXCJlcmFzZWRcIiBsKTtcbiAgICAgICAgIHJhX3N5bnRheCA9IFNvbWUgKHBvcnRzLCBpbnRzKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBydWxlX2FnZW50XCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgcnVsZV9hZ2VudFwiLCB4KSlcblxubGV0IHJ1bGVfbWl4dHVyZV90b19qc29uIGZpbGVuYW1lcyA9XG4gIEpzb25VdGlsLm9mX2xpc3QgKHJ1bGVfYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpXG5cbmxldCBydWxlX21peHR1cmVfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBKc29uVXRpbC50b19saXN0IChydWxlX2FnZW50X29mX2pzb24gZmlsZW5hbWVzKVxuXG5sZXQgbGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzID1cbiAgQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lc1xuICAgIChydWxlX21peHR1cmVfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgSnNvblV0aWwub2ZfaW50XG5cbmxldCBsYWxnX2V4cHJfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgKHJ1bGVfbWl4dHVyZV9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSlcblxubGV0IHJ1bGVfdG9fanNvbiB+ZmlsZW5hbWVzIHIgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBcIm1peHR1cmVcIiwgcnVsZV9taXh0dXJlX3RvX2pzb24gZmlsZW5hbWVzIHIucl9taXg7XG4gICAgICBcImNyZWF0ZWRcIiwgUmF3X21peHR1cmUudG9fanNvbiByLnJfY3JlYXRlZDtcbiAgICAgICggXCJkZWx0YV90b2tlbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwidmFsXCIgfmxhYjI6XCJ0b2tcIlxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQpXG4gICAgICAgICAgci5yX2RlbHRhX3Rva2VucyApO1xuICAgICAgKCBcInJhdGVcIixcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGxhbGdfZXhwcl90b19qc29uIGZpbGVuYW1lcykgci5yX3JhdGVcbiAgICAgICk7XG4gICAgICAoIFwidW5hcnlfcmF0ZVwiLFxuICAgICAgICBKc29uVXRpbC5vZl9vcHRpb25cbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyAobGFsZ19leHByX3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIChsYWxnX2V4cHJfdG9fanNvbiBmaWxlbmFtZXMpKSkpXG4gICAgICAgICAgci5yX3VuX3JhdGUgKTtcbiAgICAgIFwiZWRpdF9zdHlsZVwiLCBgQm9vbCByLnJfZWRpdF9zdHlsZTtcbiAgICBdXG5cbmxldCBydWxlX29mX2pzb24gfmZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPCA3IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHJfbWl4ID0gcnVsZV9taXh0dXJlX29mX2pzb24gZmlsZW5hbWVzIChMaXN0LmFzc29jIFwibWl4dHVyZVwiIGwpO1xuICAgICAgICAgcl9jcmVhdGVkID0gUmF3X21peHR1cmUub2ZfanNvbiAoTGlzdC5hc3NvYyBcImNyZWF0ZWRcIiBsKTtcbiAgICAgICAgIHJfZGVsdGFfdG9rZW5zID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5sYWIxOlwidmFsXCIgfmxhYjI6XCJ0b2tcIlxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJkZWx0YV90b2tlbnNcIiBsKTtcbiAgICAgICAgIHJfcmF0ZSA9XG4gICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKGxhbGdfZXhwcl9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInJhdGVcIiBsKTtcbiAgICAgICAgIHJfdW5fcmF0ZSA9XG4gICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiAobGFsZ19leHByX29mX2pzb24gZmlsZW5hbWVzKSkpKVxuICAgICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidW5hcnlfcmF0ZVwiIGwpXG4gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBOb25lKTtcbiAgICAgICAgIHJfZWRpdF9zdHlsZSA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2Jvb2wgKExpc3QuYXNzb2MgXCJlZGl0X3N0eWxlXCIgbCk7XG4gICAgICAgfVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBydWxlXCIsIHgpKVxuXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBvcyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IF8gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQSBtb2RpZmljYXRpb24gaXMgZm9yYmlkZGVuIGhlcmUuXCIsIHBvcykpXG5cbmxldCByYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKFwiSW4gYSBwYXR0ZXJuLCBhIHNpdGUgY2Fubm90IGhhdmUgc2V2ZXJhbCBpbnRlcm5hbCBzdGF0ZXMuXCIsIHBvcykpXG5cbmxldCByYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzIH5zaWRlIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJUaGUgXCIgXiBzdGF0dXMgXiBcIiBzdGF0ZSBvZiBhZ2VudCAnXCIgXiBhZ2VudF9uYW1lIF4gXCInLCBzaXRlICdcIiBeIG5hXG4gICAgICAgICBeIFwiJyBvbiB0aGUgXCIgXiBzaWRlIF4gXCIgaGFuZCBzaWRlIGlzIHVuZGVyc3BlY2lmaWVkXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSAobmEsIHBvcykgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlNpdGUgJ1wiIF4gbmEgXiBcIicgb2NjdXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoaXMgYWdlbnQgJ1wiIF4gYWdlbnRfbmFtZVxuICAgICAgICAgXiBcIidcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgKG5hLCBwb3MpID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICggXCJTaXRlICdcIiBeIG5hIF4gXCInIG9jY3VycyBib3RoIGFzIHBvcnQgYW5kIGFzIGNvdW50ZXIgaW4gJ1wiXG4gICAgICAgICBeIGFnZW50X25hbWUgXiBcIidcIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgcmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3MgPVxuICByYWlzZVxuICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgKCBcIlRoZSBsaW5rICdcIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgXiBcIicgb2NjdXJzIG9ubHkgb25lIHRpbWUgaW4gdGhlIG1peHR1cmUuXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQgaSBhZ2VudF9uYW1lIChuYSwgcG9zKSA9XG4gIHJhaXNlXG4gICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAoIFwiVGhlIGxpbmsgJ1wiIF4gc3RyaW5nX29mX2ludCBpIF4gXCInIHNob3VsZCBiZSBtYWRlIGZyZWUgaW4gdGhlIHNpdGUgJ1wiXG4gICAgICAgICBeIG5hIF4gXCInIG9mIGFnZW50ICdcIiBeIGFnZW50X25hbWVcbiAgICAgICAgIF4gXCInLCBzaW5jZSBpdCB3aWxsIG1hZGUgYmUgZnJlZSBieSBzaWRlLWVmZmVjdC5cIixcbiAgICAgICAgIHBvcyApKVxuXG5sZXQgY29weV9ydWxlX2FnZW50IGEgPVxuICBsZXQgcCA9IEFycmF5LmNvcHkgYS5yYV9wb3J0cyBpblxuICBsZXQgaSA9IEFycmF5LmNvcHkgYS5yYV9pbnRzIGluXG4gIHtcbiAgICByYV90eXBlID0gYS5yYV90eXBlO1xuICAgIHJhX2VyYXNlZCA9IGEucmFfZXJhc2VkO1xuICAgIHJhX3BvcnRzID0gcDtcbiAgICByYV9pbnRzID0gaTtcbiAgICByYV9zeW50YXggPVxuICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4gXyAtPiBBcnJheS5jb3B5IHAsIEFycmF5LmNvcHkgaSkgYS5yYV9zeW50YXg7XG4gIH1cblxubGV0IGFnZW50X3RvX2VyYXNlZCBzaWdzIHIgPVxuICBsZXQgcmFfcG9ydHMgPSBBcnJheS5tYXAgKGZ1biAoYSwgXykgLT4gYSwgRXJhc2VkKSByLnJhX3BvcnRzIGluXG4gIGxldCByYV9pbnRzID1cbiAgICBBcnJheS5tYXBpXG4gICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IElfVkFMX0VSQVNFRCBpXG4gICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAobWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgci5yYV90eXBlIGogc2lncyB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gSV9BTllfRVJBU0VEXG4gICAgICAgICAgfCBOb25lIC0+IElfQU5ZKSlcbiAgICAgIHIucmFfaW50c1xuICBpblxuICB7XG4gICAgcmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICByYV9lcmFzZWQgPSB0cnVlO1xuICAgIHJhX3BvcnRzO1xuICAgIHJhX2ludHM7XG4gICAgcmFfc3ludGF4ID1cbiAgICAgIChtYXRjaCByLnJhX3N5bnRheCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIF8gLT4gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKSk7XG4gIH1cblxubGV0IHRvX2VyYXNlZCAoc2lncyA6IFNpZ25hdHVyZS5zKSAoeCA6IHJ1bGVfbWl4dHVyZSkgOiBydWxlX21peHR1cmUgPVxuICBMaXN0Lm1hcCAoYWdlbnRfdG9fZXJhc2VkIHNpZ3MpIHhcblxubGV0IHRvX21haW50YWluZWQgKHggOiBydWxlX21peHR1cmUpIDogcnVsZV9taXh0dXJlID1cbiAgTGlzdC5tYXBcbiAgICAoZnVuIHIgLT5cbiAgICAgIGxldCBwb3J0cyA9IEFycmF5Lm1hcCAoZnVuIChhLCBfKSAtPiBhLCBNYWludGFpbmVkKSByLnJhX3BvcnRzIGluXG4gICAgICBsZXQgaW50cyA9XG4gICAgICAgIEFycmF5Lm1hcFxuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBJX1ZBTF9DSEFOR0VEIChpLCBfKSB8IElfVkFMX0VSQVNFRCBpIC0+IElfVkFMX0NIQU5HRUQgKGksIGkpXG4gICAgICAgICAgICB8IElfQU5ZIHwgSV9BTllfQ0hBTkdFRCBfIHwgSV9BTllfRVJBU0VEIC0+IElfQU5ZKVxuICAgICAgICAgIHIucmFfaW50c1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgcmFfdHlwZSA9IHIucmFfdHlwZTtcbiAgICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICAgIHJhX2ludHMgPSBpbnRzO1xuICAgICAgICByYV9zeW50YXggPVxuICAgICAgICAgIChtYXRjaCByLnJhX3N5bnRheCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICB8IFNvbWUgXyAtPiBTb21lIChwb3J0cywgaW50cykpO1xuICAgICAgfSlcbiAgICB4XG5cbmxldCB0b19yYXdfbWl4dHVyZSBzaWdzIHggPVxuICBMaXN0Lm1hcFxuICAgIChmdW4gciAtPlxuICAgICAgbGV0IGludGVybmFscyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGogLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgSV9WQUxfQ0hBTkdFRCAoaSwgXykgfCBJX1ZBTF9FUkFTRUQgaSAtPiBTb21lIGlcbiAgICAgICAgICAgIHwgSV9BTlkgfCBJX0FOWV9DSEFOR0VEIF8gfCBJX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAgICAgU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgci5yYV90eXBlIGogc2lncylcbiAgICAgICAgICByLnJhX2ludHNcbiAgICAgIGluXG4gICAgICBsZXQgcG9ydHMgPVxuICAgICAgICBBcnJheS5tYXBpXG4gICAgICAgICAgKGZ1biBqIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICB8IChMTktfU09NRSwgcG9zIHwgTE5LX1RZUEUgXywgcG9zKSwgXyAtPlxuICAgICAgICAgICAgICBsZXQgYWdlbnRfbmFtZSA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpIHIucmFfdHlwZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgcG9ydF9uYW1lID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIHIucmFfdHlwZSkgalxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICByYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgICAgYWdlbnRfbmFtZSAocG9ydF9uYW1lLCBwb3MpXG4gICAgICAgICAgICB8IChMTktfVkFMVUUgKGksIF8pLCBfKSwgXyAtPiBSYXdfbWl4dHVyZS5WQUwgaVxuICAgICAgICAgICAgfCAoKExOS19BTlkgfCBBTllfRlJFRSB8IExOS19GUkVFKSwgXyksIF8gLT4gUmF3X21peHR1cmUuRlJFRSlcbiAgICAgICAgICByLnJhX3BvcnRzXG4gICAgICBpblxuICAgICAge1xuICAgICAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSByLnJhX3R5cGU7XG4gICAgICAgIFJhd19taXh0dXJlLmFfcG9ydHMgPSBwb3J0cztcbiAgICAgICAgUmF3X21peHR1cmUuYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgfSlcbiAgICB4XG5cbmxldCBtYXhfbGlua19pZCByID1cbiAgbGV0IG1heF9zIG0gPSBmdW5jdGlvblxuICAgIHwgTGlua2VkIGkgLT4gbWF4IGkgbVxuICAgIHwgRnJlZWQgfCBNYWludGFpbmVkIHwgRXJhc2VkIC0+IG1cbiAgaW5cbiAgbGV0IG1heF9saW5rX2lkX3NpdGVzIG1heF9pZCBhZyA9XG4gICAgQXJyYXkuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1heF9pZCAtPiBmdW5jdGlvblxuICAgICAgICB8IChMTktfVkFMVUUgKGosIF8pLCBfKSwgcyAtPiBtYXhfcyAobWF4IGogbWF4X2lkKSBzXG4gICAgICAgIHwgKChMTktfVFlQRSBfIHwgTE5LX1NPTUUgfCBMTktfRlJFRSB8IExOS19BTlkgfCBBTllfRlJFRSksIF8pLCBzIC0+XG4gICAgICAgICAgbWF4X3MgbWF4X2lkIHMpXG4gICAgICBtYXhfaWQgYWcucmFfcG9ydHNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgbWF4X2xpbmtfaWRfc2l0ZXMgMCByXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbGlua19vY2N1cmVuY2VfZmFpbHVyZSBrZXkgcG9zID1cbiAgcmFpc2VcbiAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICggXCJCdWc6IExpbmsgXCIgXiBzdHJpbmdfb2ZfaW50IGtleVxuICAgICAgICAgXiBcIiBpcyBwcm9ibGVtYXRpYyEgTEthcHBhIGlzIGVpdGhlciBicm9rZW5cIlxuICAgICAgICAgXiBcIiBvciB1bnVzZWQhIFBsZWFzZSByZXBvcnQuXCIsXG4gICAgICAgICBwb3MgKSlcblxubGV0IHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgcF9pZCA9XG4gIHNuZCBjb250YWN0X21hcC4odHlfaWQpLihwX2lkKVxuXG5sZXQgZmluZF9pbXBsaWNpdF9pbmZvcyBjb250YWN0X21hcCBhZ3MgPVxuICBsZXQgbmV3X3N3aXRjaCA9IGZ1bmN0aW9uXG4gICAgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBMS2FwcGEuTWFpbnRhaW5lZFxuICAgIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLkVyYXNlZCAtPiBMS2FwcGEuRnJlZWRcbiAgaW5cbiAgbGV0IHJlYyBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIGkgPVxuICAgIGxldCB0eV9pZCA9IGFnLkxLYXBwYS5yYV90eXBlIGluXG4gICAgaWYgaSA9IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuIChcbiAgICAgIGxldCBjdXJyZW50JyA9XG4gICAgICAgIHtcbiAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgICAgIExLYXBwYS5yYV9pbnRzID0gYWcuTEthcHBhLnJhX2ludHM7XG4gICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IGFnLkxLYXBwYS5yYV9zeW50YXg7XG4gICAgICAgIH1cbiAgICAgICAgOjogY3VycmVudFxuICAgICAgaW5cbiAgICAgIGF1eF9hZ3MgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50JyB0b2RvcyBhZ190YWlsXG4gICAgKSBlbHNlIChcbiAgICAgIG1hdGNoIHBvcnRzLihpKSB3aXRoXG4gICAgICB8IChMS2FwcGEuTE5LX1RZUEUgKHAsIGEpLCBfKSwgcyAtPlxuICAgICAgICBsZXQgb3JfdHkgPSBpLCB0eV9pZCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIHBvcnRzLihpKSA8LVxuICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsIChwLCBhKSkpLCBzXG4gICAgICAgIGluXG4gICAgICAgIGF1eF9vbmUgKHN1Y2MgZnJlZV9pZCkgcHJldmlvdXMgY3VycmVudFxuICAgICAgICAgICgoZnJlZV9pZCwgKHAsIGEpLCBvcl90eSwgbmV3X3N3aXRjaCBzKSA6OiB0b2RvcylcbiAgICAgICAgICBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8IChMS2FwcGEuTE5LX1NPTUUsIF8pLCBzIC0+XG4gICAgICAgIGxldCBvcl90eSA9IGksIHR5X2lkIGluXG4gICAgICAgIE1vZHMuSW50MlNldC5mb2xkXG4gICAgICAgICAgKGZ1biAoYSwgcCkgcHJldicgLT5cbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IHBvcnRzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBwb3J0cycuKGkpIDwtXG4gICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsIChwLCBhKSkpLCBzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHRvZG9zJyA9IChmcmVlX2lkLCAocCwgYSksIG9yX3R5LCBuZXdfc3dpdGNoIHMpIDo6IHRvZG9zIGluXG4gICAgICAgICAgICBhdXhfb25lIChzdWNjIGZyZWVfaWQpIHByZXYnIGN1cnJlbnQgdG9kb3MnIGFnX3RhaWwgYWcgcG9ydHMnXG4gICAgICAgICAgICAgIChzdWNjIGkpKVxuICAgICAgICAgIChwb3J0c19mcm9tX2NvbnRhY3RfbWFwIGNvbnRhY3RfbWFwIHR5X2lkIGkpXG4gICAgICAgICAgcHJldmlvdXNcbiAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgXywgXyksIF8gLT5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBwb3MpLCAoKExLYXBwYS5NYWludGFpbmVkIHwgTEthcHBhLkVyYXNlZCkgYXMgcykgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAoKiBEbyBub3QgbWFrZSB0ZXN0IGlmIGJlaW5nIGZyZWUgaXMgdGhlIG9ubHkgcG9zc2liaWxpdHkgKilcbiAgICAgICAgICBpZiBNb2RzLkludDJTZXQuaXNfZW1wdHkgKHBvcnRzX2Zyb21fY29udGFjdF9tYXAgY29udGFjdF9tYXAgdHlfaWQgaSlcbiAgICAgICAgICB0aGVuXG4gICAgICAgICAgICBwb3J0cy4oaSkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBzXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgTEthcHBhLkZyZWVkIC0+XG4gICAgICAgIGZhaWx3aXRoIFwiQSBmcmVlIHNpdGUgY2Fubm90IGJlIGZyZWVkXCJcbiAgICAgIHwgKExLYXBwYS5MTktfRlJFRSwgXyksIExLYXBwYS5MaW5rZWQgXyAtPlxuICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgTEthcHBhLk1haW50YWluZWQgLT5cbiAgICAgICAgYXV4X29uZSBmcmVlX2lkIHByZXZpb3VzIGN1cnJlbnQgdG9kb3MgYWdfdGFpbCBhZyBwb3J0cyAoc3VjYyBpKVxuICAgICAgfCAoICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBwb3MpLFxuICAgICAgICAgICgoTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5GcmVlZCkgYXMgcykgKSAtPlxuICAgICAgICBpZlxuICAgICAgICAgIE1vZHMuSW50MlNldC5pc19lbXB0eSAocG9ydHNfZnJvbV9jb250YWN0X21hcCBjb250YWN0X21hcCB0eV9pZCBpKVxuICAgICAgICAgICYmIHMgPSBMS2FwcGEuRnJlZWRcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgKCogRG8gbm90IG1ha2UgdGVzdCBpcyBiZWluZyBmcmVlIGlzIHRoZSBvbmx5IHBvc3NpYmlsaXR5ICopXG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKGkpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIHBvcnRzIChzdWNjIGkpXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGF1eF9vbmUgZnJlZV9pZCBwcmV2aW91cyBjdXJyZW50IHRvZG9zIGFnX3RhaWwgYWcgcG9ydHMgKHN1Y2MgaSlcbiAgICApXG4gIGFuZCBhdXhfYWdzIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyA9IGZ1bmN0aW9uXG4gICAgfCBbXSAtPiAoTGlzdC5yZXYgY3VycmVudCwgdG9kb3MpIDo6IHByZXZpb3VzXG4gICAgfCBhZyA6OiBhZ190YWlsIC0+XG4gICAgICBhdXhfb25lIGZyZWVfaWQgcHJldmlvdXMgY3VycmVudCB0b2RvcyBhZ190YWlsIGFnIGFnLkxLYXBwYS5yYV9wb3J0cyAwXG4gIGluXG4gIGF1eF9hZ3MgKHN1Y2MgKExLYXBwYS5tYXhfbGlua19pZCBhZ3MpKSBbXSBbXSBbXSBhZ3NcblxubGV0IGNvbXBsZXRlX3dpdGhfY2FuZGlkYXRlIG91dHMgcHJldnMgYWcgYWdfdGFpbCBpZCB0b2RvIHBfaWQgZHN0X2luZm8gcF9zd2l0Y2hcbiAgICA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgYWNjIHBvcnQgLT5cbiAgICAgIGlmIGkgPD4gcF9pZCB0aGVuXG4gICAgICAgIGFjY1xuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIHBvcnQgd2l0aFxuICAgICAgICB8ICgoTEthcHBhLkxOS19BTlkgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSwgcyAtPlxuICAgICAgICAgIGlmIHMgPSBMS2FwcGEuTWFpbnRhaW5lZCB0aGVuIChcbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IGFnLkxLYXBwYS5yYV9wb3J0cyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LVxuICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSwgcF9zd2l0Y2hcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIExpc3QucmV2X2FwcGVuZCBwcmV2c1xuICAgICAgICAgICAgICAgICh7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZy5MS2FwcGEucmFfdHlwZTtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cyc7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2ludHMgPSBhZy5MS2FwcGEucmFfaW50cztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gYWcuTEthcHBhLnJhX2VyYXNlZDtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDo6IGFnX3RhaWwpLFxuICAgICAgICAgICAgICB0b2RvIClcbiAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICkgZWxzZSBpZiBzID0gTEthcHBhLkVyYXNlZCAmJiBwX3N3aXRjaCA9IExLYXBwYS5GcmVlZCB0aGVuIChcbiAgICAgICAgICAgIGxldCBwb3J0cycgPSBBcnJheS5jb3B5IGFnLkxLYXBwYS5yYV9wb3J0cyBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LVxuICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSwgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggTGlzdC5yZXZfYXBwZW5kIHByZXZzXG4gICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfdHlwZSA9IGFnLkxLYXBwYS5yYV90eXBlO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzJztcbiAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9lcmFzZWQgPSBhZy5MS2FwcGEucmFfZXJhc2VkO1xuICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV9zeW50YXggPSBhZy5MS2FwcGEucmFfc3ludGF4O1xuICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgOjogYWdfdGFpbCksXG4gICAgICAgICAgICAgIHRvZG8gKVxuICAgICAgICAgICAgOjogYWNjXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCAoTEthcHBhLkxOS19WQUxVRSAoaywgeCksIF8pLCBzIC0+XG4gICAgICAgICAgaWYgeCA9IGRzdF9pbmZvIHRoZW4gKFxuICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAgICAgICAoZnVuIChqLCBfLCAocCcsIGEnKSwgc3cnKSAtPlxuICAgICAgICAgICAgICAgICAgaiA9IGsgJiYgaSA9IHAnICYmIGEnID0gYWcuTEthcHBhLnJhX3R5cGUgJiYgc3cnID0gcF9zd2l0Y2gpXG4gICAgICAgICAgICAgICAgdG9kb1xuICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIF8gXSwgdG9kbycgLT5cbiAgICAgICAgICAgICAgbGV0IHBvcnRzJyA9IEFycmF5LmNvcHkgYWcuTEthcHBhLnJhX3BvcnRzIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgcG9ydHMnLihpKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIHgpKSwgc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIExpc3QucmV2X2FwcGVuZCBwcmV2c1xuICAgICAgICAgICAgICAgICAgKHtcbiAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWcuTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfcG9ydHMgPSBwb3J0cyc7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfaW50cyA9IGFnLkxLYXBwYS5yYV9pbnRzO1xuICAgICAgICAgICAgICAgICAgICAgTEthcHBhLnJhX2VyYXNlZCA9IGFnLkxLYXBwYS5yYV9lcmFzZWQ7XG4gICAgICAgICAgICAgICAgICAgICBMS2FwcGEucmFfc3ludGF4ID0gYWcuTEthcHBhLnJhX3N5bnRheDtcbiAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA6OiBhZ190YWlsKSxcbiAgICAgICAgICAgICAgICB0b2RvJyApXG4gICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgfCBbXSwgXyAtPiBhY2NcbiAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8sIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgfCAoKExLYXBwYS5MTktfVFlQRSBfIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkxOS19TT01FKSwgXyksIF8gLT4gYWNjXG4gICAgICApKVxuICAgIG91dHMgYWcuTEthcHBhLnJhX3BvcnRzXG5cbmxldCBuZXdfYWdlbnRfd2l0aF9vbmVfbGluayBzaWdzIHR5X2lkIHBvcnQgbGluayBkc3RfaW5mbyBzd2l0Y2ggPVxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyB0eV9pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCAoKSA9XG4gICAgcG9ydHMuKHBvcnQpIDwtXG4gICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAobGluaywgZHN0X2luZm8pKSwgc3dpdGNoXG4gIGluXG4gIHtcbiAgICBMS2FwcGEucmFfdHlwZSA9IHR5X2lkO1xuICAgIExLYXBwYS5yYV9wb3J0cyA9IHBvcnRzO1xuICAgIExLYXBwYS5yYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgIExLYXBwYS5yYV9lcmFzZWQgPSBmYWxzZTtcbiAgICBMS2FwcGEucmFfc3ludGF4ID0gTm9uZTtcbiAgfVxuXG5sZXQgcmVjIGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkICgoKHBvcnQsIHR5X2lkKSwgZHN0X2luZm8sIHMpIGFzIGluZm8pIGFjY1xuICAgIG91dCB0b2RvID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgICggTGlzdC5yZXZfYXBwZW5kIGFjY1xuICAgICAgICBbIG5ld19hZ2VudF93aXRoX29uZV9saW5rIHNpZ3MgdHlfaWQgcG9ydCBpZCBkc3RfaW5mbyBzIF0sXG4gICAgICB0b2RvIClcbiAgICA6OiBvdXRcbiAgfCBhZyA6OiBhZ190YWlsIC0+XG4gICAgbGV0IG91dF90YWlsID1cbiAgICAgIGFkZF9vbmVfaW1wbGljaXRfaW5mbyBzaWdzIGlkIGluZm8gKGFnIDo6IGFjYykgb3V0IHRvZG8gYWdfdGFpbFxuICAgIGluXG4gICAgaWYgdHlfaWQgPSBhZy5MS2FwcGEucmFfdHlwZSB0aGVuXG4gICAgICBjb21wbGV0ZV93aXRoX2NhbmRpZGF0ZSBvdXRfdGFpbCBhY2MgYWcgYWdfdGFpbCBpZCB0b2RvIHBvcnQgZHN0X2luZm8gc1xuICAgIGVsc2VcbiAgICAgIG91dF90YWlsXG5cbmxldCBhZGRfaW1wbGljaXRfaW5mb3Mgc2lncyBsID1cbiAgbGV0IHJlYyBhdXggYWNjID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY1xuICAgIHwgKG0sIFtdKSA6OiB0IC0+IGF1eCAobSA6OiBhY2MpIHRcbiAgICB8IChtLCAoaWQsIGluZm8sIGRzdF9pbmZvLCBzKSA6OiB0b2RvJykgOjogdCAtPlxuICAgICAgYXV4IGFjYyAoYWRkX29uZV9pbXBsaWNpdF9pbmZvIHNpZ3MgaWQgKGluZm8sIGRzdF9pbmZvLCBzKSBbXSB0IHRvZG8nIG0pXG4gIGluXG4gIGF1eCBbXSBsXG5cbmxldCBpc19saW5rZWRfb25fcG9ydCBtZSBpIGlkID0gZnVuY3Rpb25cbiAgfCAoTEthcHBhLkxOS19WQUxVRSAoaiwgXyksIF8pLCBfIHdoZW4gaSA9IGogLT4gaWQgPD4gbWVcbiAgfCAoICggKCBMS2FwcGEuTE5LX1ZBTFVFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX1RZUEUgX1xuICAgICAgICB8IExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIGZhbHNlXG5cbmxldCBpc19saW5rZWRfb24gaSBhZyA9XG4gIFRvb2xzLmFycmF5X2ZpbHRlciAoaXNfbGlua2VkX29uX3BvcnQgKC0xKSBpKSBhZy5MS2FwcGEucmFfcG9ydHMgPD4gW11cblxubGV0IGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uICgocmVtb3ZlZCwgYWRkZWQpIGFzIHRyYW5zZikgbGlua3NfdHJhbnNmIHBsYWNlXG4gICAgc2l0ZSAoY2FuZCwgXykgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBMS2FwcGEuRnJlZWQgLT5cbiAgICAoIChjYW5kIDo6IHJlbW92ZWQsIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlKSA6OiBhZGRlZCksXG4gICAgICBsaW5rc190cmFuc2YgKVxuICB8IExLYXBwYS5NYWludGFpbmVkIC0+IHRyYW5zZiwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLkVyYXNlZCAtPiAoY2FuZCA6OiByZW1vdmVkLCBhZGRlZCksIGxpbmtzX3RyYW5zZlxuICB8IExLYXBwYS5MaW5rZWQgaSAtPlxuICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIGxpbmtzX3RyYW5zZiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgbGlua3NfdHJhbnNmJyA9IE1vZHMuSW50TWFwLmFkZCBpIChwbGFjZSwgc2l0ZSkgbGlua3NfdHJhbnNmIGluXG4gICAgICAoY2FuZCA6OiByZW1vdmVkLCBhZGRlZCksIGxpbmtzX3RyYW5zZidcbiAgICB8IFNvbWUgZHN0JyAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5yZW1vdmUgaSBsaW5rc190cmFuc2YgaW5cbiAgICAgICggKCBjYW5kIDo6IHJlbW92ZWQsXG4gICAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZSksIGRzdCcpIDo6IGFkZGVkICksXG4gICAgICAgIGxpbmtzX3RyYW5zZicgKSlcblxubGV0IGRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiAoKHJlbW92ZWQsIGFkZGVkKSBhcyB0cmFuc2YpIGxpbmtzX3RyYW5zZlxuICAgIHBsYWNlIHNpdGUgc3dpdGNoID1cbiAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgfCBMS2FwcGEuRnJlZWQgLT5cbiAgICAoIChyZW1vdmVkLCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChwbGFjZSwgc2l0ZSkgOjogYWRkZWQpLFxuICAgICAgbGlua3NfdHJhbnNmIClcbiAgfCBMS2FwcGEuRXJhc2VkIC0+IHRyYW5zZiwgbGlua3NfdHJhbnNmXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gdHJhbnNmLCBsaW5rc190cmFuc2ZcbiAgfCBMS2FwcGEuTGlua2VkIGkgLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBsaW5rc190cmFuc2Ygd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGxpbmtzX3RyYW5zZicgPSBNb2RzLkludE1hcC5hZGQgaSAocGxhY2UsIHNpdGUpIGxpbmtzX3RyYW5zZiBpblxuICAgICAgdHJhbnNmLCBsaW5rc190cmFuc2YnXG4gICAgfCBTb21lIGRzdCcgLT5cbiAgICAgIGxldCBsaW5rc190cmFuc2YnID0gTW9kcy5JbnRNYXAucmVtb3ZlIGkgbGlua3NfdHJhbnNmIGluXG4gICAgICAoICggcmVtb3ZlZCxcbiAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKHBsYWNlLCBzaXRlKSwgZHN0JykgOjogYWRkZWQgKSxcbiAgICAgICAgbGlua3NfdHJhbnNmJyApKVxuXG5sZXQgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zIHBsIHMgPSBmdW5jdGlvblxuICB8IExLYXBwYS5GcmVlZCAtPiBJbnN0YW50aWF0aW9uLkZyZWUgKHBsLCBzKSA6OiBhY3Rpb25zXG4gIHwgTEthcHBhLkxpbmtlZCBfIHwgTEthcHBhLk1haW50YWluZWQgfCBMS2FwcGEuRXJhc2VkIC0+IGFjdGlvbnNcblxubGV0IGFkZF9zaWRlX3NpdGUgc2lkZV9zaXRlcyBidCBwbCBzID0gZnVuY3Rpb25cbiAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuTGlua2VkIF8gfCBMS2FwcGEuRXJhc2VkIC0+XG4gICAgKChwbCwgcyksIGJ0KSA6OiBzaWRlX3NpdGVzXG4gIHwgTEthcHBhLk1haW50YWluZWQgLT4gc2lkZV9zaXRlc1xuXG5sZXQgYWRkX2ZyZWVkX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0cyBwbCBzID0gZnVuY3Rpb25cbiAgfCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSwgTEthcHBhLkZyZWVkIC0+IChwbCwgcykgOjogc2lkZV9lZmZlY3RzXG4gIHwgKCAoTEthcHBhLkxOS19WQUxVRSBfLCBfKSxcbiAgICAgIChMS2FwcGEuTWFpbnRhaW5lZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTGlua2VkIF8pIClcbiAgfCAoICggKCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVFlQRSBfXG4gICAgICAgIHwgTEthcHBhLkFOWV9GUkVFICksXG4gICAgICAgIF8gKSxcbiAgICAgIF8gKSAtPlxuICAgIHNpZGVfZWZmZWN0c1xuXG5sZXQgYWRkX2V4dHJhX3NpZGVfZWZmZWN0cyBzaWRlX2VmZmVjdHMgcGxhY2UgcmVmaW5lZCA9XG4gIGxldCByZWMgYXV4IHNpZGVfZWZmZWN0cyBzaXRlX2lkID1cbiAgICBpZiBzaXRlX2lkIDwgMCB0aGVuXG4gICAgICBzaWRlX2VmZmVjdHNcbiAgICBlbHNlXG4gICAgICBhdXhcbiAgICAgICAgKGFkZF9mcmVlZF9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdHMgcGxhY2Ugc2l0ZV9pZCByZWZpbmVkLihzaXRlX2lkKSlcbiAgICAgICAgKHByZWQgc2l0ZV9pZClcbiAgaW5cbiAgYXV4IHNpZGVfZWZmZWN0cyAocHJlZCAoQXJyYXkubGVuZ3RoIHJlZmluZWQpKVxuXG4oKiBEZWFscyB3aXRoIHRlc3RzLCBlcmFzdXJlIGludGVybmFsIHN0YXRlIGNoYW5nZSBhbmQgcmVsZWFzZSAoYnV0XG4gICBub3QgYmluZGluZykqKVxubGV0IG1ha2VfaW5zdGFudGlhdGlvbiBwbGFjZSBsaW5rcyBldmVudCByZWZfcG9ydHMgaXNfZXJhc2VkID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+XG4gICAge1xuICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPSBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICBhZGRfZXh0cmFfc2lkZV9lZmZlY3RzIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCBwbGFjZVxuICAgICAgICAgIHJlZl9wb3J0cztcbiAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID0gZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHM7XG4gICAgfVxuICB8IFNvbWUgKHBvcnRzLCBpbnRzKSAtPlxuICAgIChtYXRjaCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzIHdpdGhcbiAgICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICAgIHwgdGhpc19jY190ZXN0cyA6OiBvX2NjX3Rlc3RzIC0+XG4gICAgICBsZXQgcmVjIGF1eCBzaXRlX2lkIHRlc3RzIGFjdGlvbnMgc2lkZV9lZmZlY3RzX3NyYyBzaWRlX2VmZmVjdHNfZHN0IGxpbmtzXG4gICAgICAgICAgPVxuICAgICAgICBpZiBzaXRlX2lkID49IEFycmF5Lmxlbmd0aCBwb3J0cyB0aGVuXG4gICAgICAgICAge1xuICAgICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IHRlc3RzIDo6IG9fY2NfdGVzdHM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3Q7XG4gICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgIH1cbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IHRlc3RzJywgYWN0aW9ucycgPVxuICAgICAgICAgICAgbWF0Y2ggaW50cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTlkgfCBMS2FwcGEuSV9BTllfRVJBU0VEIC0+IHRlc3RzLCBhY3Rpb25zXG4gICAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIGogLT5cbiAgICAgICAgICAgICAgdGVzdHMsIEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBqKSA6OiBhY3Rpb25zXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBqKSAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiB0ZXN0cyxcbiAgICAgICAgICAgICAgICBpZiBpIDw+IGogdGhlblxuICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKChwbGFjZSwgc2l0ZV9pZCksIGopIDo6IGFjdGlvbnNcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhY3Rpb25zIClcbiAgICAgICAgICAgIHwgTEthcHBhLklfVkFMX0VSQVNFRCBpIC0+XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsICgocGxhY2UsIHNpdGVfaWQpLCBpKSA6OiB0ZXN0cywgYWN0aW9uc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHRlc3RzJycsIGFjdGlvbnMnJywgc2lkZV9zaXRlcycsIHNpZGVfZWZmZWN0cycsIGxpbmtzJyA9XG4gICAgICAgICAgICBtYXRjaCBwb3J0cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICAgICAgICAgIHwgTEthcHBhLk1haW50YWluZWQgLT5cbiAgICAgICAgICAgICAgICAgIGFkZF9mcmVlZF9zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdHNfZHN0IHBsYWNlIHNpdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgcmVmX3BvcnRzLihzaXRlX2lkKVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyB8IExLYXBwYS5GcmVlZCAtPlxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBhZGRfc2lkZV9zaXRlIHNpZGVfZWZmZWN0c19zcmMgSW5zdGFudGlhdGlvbi5BTlkgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0cycsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSXNfRnJlZSAocGxhY2UsIHNpdGVfaWQpIDo6IHRlc3RzJyxcbiAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfc3JjLFxuICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgbGlua3MgKVxuICAgICAgICAgICAgfCAoTEthcHBhLkxOS19TT01FLCBfKSwgcyAtPlxuICAgICAgICAgICAgICAoIEluc3RhbnRpYXRpb24uSXNfQm91bmQgKHBsYWNlLCBzaXRlX2lkKSA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgYWRkX2luc3RhbnRpYXRpb25fZnJlZSBhY3Rpb25zJyBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgYWRkX3NpZGVfc2l0ZSBzaWRlX2VmZmVjdHNfc3JjIEluc3RhbnRpYXRpb24uQk9VTkQgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgcyxcbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgIGxpbmtzIClcbiAgICAgICAgICAgIHwgKExLYXBwYS5MTktfVFlQRSAoYiwgYSksIF8pLCBzIC0+XG4gICAgICAgICAgICAgICggSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlICgocGxhY2UsIHNpdGVfaWQpLCAoYSwgYikpXG4gICAgICAgICAgICAgICAgOjogdGVzdHMnLFxuICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgIGFkZF9zaWRlX3NpdGUgc2lkZV9lZmZlY3RzX3NyY1xuICAgICAgICAgICAgICAgICAgKEluc3RhbnRpYXRpb24uQk9VTkRfVFlQRSAoYSwgYikpXG4gICAgICAgICAgICAgICAgICBwbGFjZSBzaXRlX2lkIHMsXG4gICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX2RzdCxcbiAgICAgICAgICAgICAgICBsaW5rcyApXG4gICAgICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChpLCBfKSwgXyksIHMgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGkgbGlua3Mgd2l0aFxuICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICggeCA6OiB0ZXN0cycsXG4gICAgICAgICAgICAgICAgICBhZGRfaW5zdGFudGlhdGlvbl9mcmVlIGFjdGlvbnMnIHBsYWNlIHNpdGVfaWQgcyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19zcmMsXG4gICAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdHNfZHN0LFxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAucmVtb3ZlIGkgbGlua3MgKVxuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAoIHRlc3RzJyxcbiAgICAgICAgICAgICAgICAgIGFkZF9pbnN0YW50aWF0aW9uX2ZyZWUgYWN0aW9ucycgcGxhY2Ugc2l0ZV9pZCBzLFxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RzX3NyYyxcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0c19kc3QsXG4gICAgICAgICAgICAgICAgICBsaW5rcyApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChzdWNjIHNpdGVfaWQpIHRlc3RzJycgYWN0aW9ucycnIHNpZGVfc2l0ZXMnIHNpZGVfZWZmZWN0cycgbGlua3MnXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggMFxuICAgICAgICAoSW5zdGFudGlhdGlvbi5Jc19IZXJlIHBsYWNlIDo6IHRoaXNfY2NfdGVzdHMpXG4gICAgICAgIChpZiBpc19lcmFzZWQgdGhlblxuICAgICAgICAgICBJbnN0YW50aWF0aW9uLlJlbW92ZSBwbGFjZSA6OiBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zKVxuICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmNcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0IGxpbmtzKVxuXG5sZXQgcmVjIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayByZWdpc3RlcmVkX2xpbmtzXG4gICAgKChyZW1vdmVkLCBhZGRlZCkgYXMgdHJhbnNmKSBsaW5rc190cmFuc2YgaW5zdGFudGlhdGlvbnMgcmVtYWlucyA9IGZ1bmN0aW9uXG4gIHwgW10gLT5cbiAgICAobWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByZWdpc3RlcmVkX2xpbmtzIHdpdGhcbiAgICB8IE5vbmUgLT4gd2ssIHRyYW5zZiwgbGlua3NfdHJhbnNmLCBpbnN0YW50aWF0aW9ucywgcmVtYWluc1xuICAgIHwgU29tZSAoa2V5LCBfKSAtPiBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGtleSBMb2MuZHVtbXkpXG4gIHwgYWcgOjogYWdfbCAtPlxuICAgIGxldCBub2RlLCB3ayA9IFBhdHRlcm4ubmV3X25vZGUgd2sgYWcuTEthcHBhLnJhX3R5cGUgaW5cbiAgICBsZXQgcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAobm9kZSwgaWQpIGluXG4gICAgbGV0IHRyYW5zZicgPVxuICAgICAgaWYgYWcuTEthcHBhLnJhX2VyYXNlZCB0aGVuXG4gICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgcGxhY2UgOjogcmVtb3ZlZCwgYWRkZWRcbiAgICAgIGVsc2VcbiAgICAgICAgdHJhbnNmXG4gICAgaW5cbiAgICBsZXQgcmVjIGhhbmRsZV9wb3J0cyB3ayByX2wgY19sIChyZW1vdmVkLCBhZGRlZCkgbF90IHJlIGFjYyBzaXRlX2lkID1cbiAgICAgIGlmIHNpdGVfaWQgPSBBcnJheS5sZW5ndGggYWcuTEthcHBhLnJhX3BvcnRzIHRoZW4gKFxuICAgICAgICBsZXQgaW5zdGFudGlhdGlvbnMnID1cbiAgICAgICAgICBtYWtlX2luc3RhbnRpYXRpb24gcGxhY2UgY19sIGluc3RhbnRpYXRpb25zIGFnLkxLYXBwYS5yYV9wb3J0c1xuICAgICAgICAgICAgYWcuTEthcHBhLnJhX2VyYXNlZCBhZy5MS2FwcGEucmFfc3ludGF4XG4gICAgICAgIGluXG4gICAgICAgIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayByX2wgKHJlbW92ZWQsIGFkZGVkKSBsX3QgaW5zdGFudGlhdGlvbnMnIHJlXG4gICAgICAgICAgYWNjXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgdHJhbnNmLCB3aycgPVxuICAgICAgICAgIG1hdGNoIGFnLkxLYXBwYS5yYV9pbnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBMS2FwcGEuSV9BTlkgLT4gKHJlbW92ZWQsIGFkZGVkKSwgd2tcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWV9FUkFTRUQgLT5cbiAgICAgICAgICAgICggKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgIGFkZGVkICksXG4gICAgICAgICAgICAgIHdrIClcbiAgICAgICAgICB8IExLYXBwYS5JX0FOWV9DSEFOR0VEIGogLT5cbiAgICAgICAgICAgICggKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIChwbGFjZSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICA6OiByZW1vdmVkLFxuICAgICAgICAgICAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAgICAgICAgIChwbGFjZSwgc2l0ZV9pZCwgailcbiAgICAgICAgICAgICAgICA6OiBhZGRlZCApLFxuICAgICAgICAgICAgICB3ayApXG4gICAgICAgICAgfCBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaSwgaikgLT5cbiAgICAgICAgICAgICggKGlmIGkgPSBqIHRoZW5cbiAgICAgICAgICAgICAgICAgcmVtb3ZlZCwgYWRkZWRcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgKCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgICAgICAgICAgICAocGxhY2UsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgOjogcmVtb3ZlZCxcbiAgICAgICAgICAgICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkXG4gICAgICAgICAgICAgICAgICAgICAocGxhY2UsIHNpdGVfaWQsIGopXG4gICAgICAgICAgICAgICAgICAgOjogYWRkZWQgKSksXG4gICAgICAgICAgICAgIFBhdHRlcm4ubmV3X2ludGVybmFsX3N0YXRlIHdrIChub2RlLCBzaXRlX2lkKSBpIClcbiAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9FUkFTRUQgaSAtPlxuICAgICAgICAgICAgKCAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgKHBsYWNlLCBzaXRlX2lkKVxuICAgICAgICAgICAgICAgIDo6IHJlbW92ZWQsXG4gICAgICAgICAgICAgICAgYWRkZWQgKSxcbiAgICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgd2sgKG5vZGUsIHNpdGVfaWQpIGkgKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBhZy5MS2FwcGEucmFfcG9ydHMuKHNpdGVfaWQpIHdpdGhcbiAgICAgICAgfCAoKExLYXBwYS5MTktfQU5ZIHwgTEthcHBhLkFOWV9GUkVFKSwgcG9zKSwgcyAtPlxuICAgICAgICAgIGxldCB0cmFuc2YnLCBsX3QnID1cbiAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciAocGxhY2UsIHNpdGVfaWQpLFxuICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaGFuZGxlX3BvcnRzIHdrJyByX2wgY19sIHRyYW5zZicgbF90JyByZSBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgfCAoTEthcHBhLkxOS19GUkVFLCBfKSwgcyAtPlxuICAgICAgICAgIGxldCB3aycnID0gUGF0dGVybi5uZXdfZnJlZSB3aycgKG5vZGUsIHNpdGVfaWQpIGluXG4gICAgICAgICAgbGV0IHRyYW5zZicsIGxfdCcgPVxuICAgICAgICAgICAgZGVmaW5lX2Z1bGxfdHJhbnNmb3JtYXRpb24gdHJhbnNmIGxfdCBwbGFjZSBzaXRlX2lkXG4gICAgICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkIChwbGFjZSwgc2l0ZV9pZCksIE5vbmUpXG4gICAgICAgICAgICAgIHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIHJfbCBjX2wgdHJhbnNmJyBsX3QnIHJlIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICB8ICgoTEthcHBhLkxOS19TT01FIHwgTEthcHBhLkxOS19UWVBFIF8pLCBfKSwgXyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICBcIlRyeSB0byBjcmVhdGUgdGhlIGNvbm5lY3RlZCBjb21wb25lbnRzIG9mIGFuIGFtYmlndW91cyBcXFxuICAgICAgICAgICAgICAgICAgIG1peHR1cmUuXCIpKVxuICAgICAgICB8IChMS2FwcGEuTE5LX1ZBTFVFIChpLCBfKSwgcG9zKSwgcyAtPlxuICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpIHJfbCB3aXRoXG4gICAgICAgICAgfCBTb21lICgobm9kZScsIHNpdGUnKSBhcyBkc3QpIC0+XG4gICAgICAgICAgICBsZXQgZHN0X3BsYWNlID0gTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKG5vZGUnLCBpZCksIHNpdGUnIGluXG4gICAgICAgICAgICBsZXQgd2snJyA9IFBhdHRlcm4ubmV3X2xpbmsgd2snIChub2RlLCBzaXRlX2lkKSBkc3QgaW5cbiAgICAgICAgICAgIGxldCBjX2wnID1cbiAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0X3BsYWNlKSlcbiAgICAgICAgICAgICAgICBjX2xcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChwbGFjZSwgc2l0ZV9pZCksIGRzdF9wbGFjZSksXG4gICAgICAgICAgICAgICAgICBTb21lIHBvcyApXG4gICAgICAgICAgICAgICAgc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIChNb2RzLkludE1hcC5yZW1vdmUgaSByX2wpIGNfbCcgdHJhbnNmJyBsX3QnIHJlXG4gICAgICAgICAgICAgIGFjYyAoc3VjYyBzaXRlX2lkKVxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICBUb29scy5hcnJheV9maWx0ZXJcbiAgICAgICAgICAgICAgICAgKGlzX2xpbmtlZF9vbl9wb3J0IHNpdGVfaWQgaSlcbiAgICAgICAgICAgICAgICAgYWcuTEthcHBhLnJhX3BvcnRzXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBbIHNpdGVfaWQnIF1cbiAgICAgICAgICAgICgqIGxpbmsgYmV0d2VlbiAyIHNpdGVzIG9mIDEgYWdlbnQgKilcbiAgICAgICAgICAgICAgd2hlbiBMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IG5vdCAoaXNfbGlua2VkX29uIGkgeCkpIGFjY1xuICAgICAgICAgICAgICAgICAgICYmIExpc3QuZm9yX2FsbCAoZnVuIHggLT4gbm90IChpc19saW5rZWRfb24gaSB4KSkgcmUgLT5cbiAgICAgICAgICAgICAgbGV0IHdrJycsICh0cmFuc2YnLCBsX3QnKSA9XG4gICAgICAgICAgICAgICAgaWYgc2l0ZV9pZCcgPiBzaXRlX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgICggUGF0dGVybi5uZXdfbGluayB3aycgKG5vZGUsIHNpdGVfaWQpIChub2RlLCBzaXRlX2lkJyksXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZV9mdWxsX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChwbGFjZSwgc2l0ZV9pZCksIChwbGFjZSwgc2l0ZV9pZCcpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcG9zIClcbiAgICAgICAgICAgICAgICAgICAgICBzIClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICB3aycsIGRlZmluZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB0cmFuc2YgbF90IHBsYWNlIHNpdGVfaWQgc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgY19sJyA9XG4gICAgICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGlcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvXG4gICAgICAgICAgICAgICAgICAgICAoKHBsYWNlLCBzaXRlX2lkKSwgKHBsYWNlLCBzaXRlX2lkJykpKVxuICAgICAgICAgICAgICAgICAgY19sXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycnIHJfbCBjX2wnIHRyYW5zZicgbF90JyByZSBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgIHwgXyA6OiBfIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3NcbiAgICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICAgKCogbGluayBiZXR3ZWVuIDIgYWdlbnRzICopXG4gICAgICAgICAgICAgIGxldCByX2wnID0gTW9kcy5JbnRNYXAuYWRkIGkgKG5vZGUsIHNpdGVfaWQpIHJfbCBpblxuICAgICAgICAgICAgICBsZXQgdHJhbnNmJywgbF90JyA9XG4gICAgICAgICAgICAgICAgZGVmaW5lX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9uIHRyYW5zZiBsX3QgcGxhY2Ugc2l0ZV9pZCBzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIChtYXRjaCBMaXN0LnBhcnRpdGlvbiAoaXNfbGlua2VkX29uIGkpIHJlIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSwgcmUnIC0+XG4gICAgICAgICAgICAgICAgaWYgTGlzdF91dGlsLmV4aXN0c191bmlxIChpc19saW5rZWRfb24gaSkgYWNjIHRoZW5cbiAgICAgICAgICAgICAgICAgIGhhbmRsZV9wb3J0cyB3aycgcl9sJyBjX2wgdHJhbnNmJyBsX3QnIHJlJyBhY2MgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGkgcG9zXG4gICAgICAgICAgICAgIHwgWyBuIF0sIHJlJ1xuICAgICAgICAgICAgICAgIHdoZW4gTGlzdC5mb3JfYWxsIChmdW4geCAtPiBub3QgKGlzX2xpbmtlZF9vbiBpIHgpKSBhY2MgLT5cbiAgICAgICAgICAgICAgICBoYW5kbGVfcG9ydHMgd2snIHJfbCcgY19sIHRyYW5zZicgbF90JyByZScgKG4gOjogYWNjKVxuICAgICAgICAgICAgICAgICAgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgICAgICAgICAgfCBfLCBfIC0+IGxpbmtfb2NjdXJlbmNlX2ZhaWx1cmUgaSBwb3MpKSlcbiAgICAgIClcbiAgICBpblxuICAgIGhhbmRsZV9wb3J0cyB3ayByZWdpc3RlcmVkX2xpbmtzIE1vZHMuSW50TWFwLmVtcHR5IHRyYW5zZicgbGlua3NfdHJhbnNmXG4gICAgICByZW1haW5zIGFnX2wgMFxuXG5sZXQgcmVjIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyAocmVtb3ZlZCwgYWRkZWQpIGxpbmtzX3RyYW5zZiBjcmVhdGVfYWN0aW9uc1xuICAgIGFjdGlvbnMgZnJlc2ggPSBmdW5jdGlvblxuICB8IFtdIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgbGlua3NfdHJhbnNmIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIExpc3QucmV2X2FwcGVuZCBhY3Rpb25zIGNyZWF0ZV9hY3Rpb25zLCAoTGlzdC5yZXYgcmVtb3ZlZCwgTGlzdC5yZXYgYWRkZWQpXG4gICAgfCBTb21lIChpLCBfKSAtPiBsaW5rX29jY3VyZW5jZV9mYWlsdXJlIGkgTG9jLmR1bW15KVxuICB8IGFnIDo6IGFnX2wgLT5cbiAgICBsZXQgcGxhY2UgPSBNYXRjaGluZy5BZ2VudC5GcmVzaCAoYWcuUmF3X21peHR1cmUuYV90eXBlLCBmcmVzaCkgaW5cbiAgICBsZXQgcmVjIGhhbmRsZV9wb3J0cyBhZGRlZCBsX3QgYWN0aW9ucyBpbnRmIHNpdGVfaWQgPVxuICAgICAgaWYgc2l0ZV9pZCA9IEFycmF5Lmxlbmd0aCBhZy5SYXdfbWl4dHVyZS5hX3BvcnRzIHRoZW4gKFxuICAgICAgICBsZXQgY3JlYXRlX2FjdGlvbnMnID1cbiAgICAgICAgICBJbnN0YW50aWF0aW9uLkNyZWF0ZSAocGxhY2UsIExpc3QucmV2IGludGYpIDo6IGNyZWF0ZV9hY3Rpb25zXG4gICAgICAgIGluXG4gICAgICAgIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyAocmVtb3ZlZCwgYWRkZWQpIGxfdCBjcmVhdGVfYWN0aW9ucycgYWN0aW9uc1xuICAgICAgICAgIChzdWNjIGZyZXNoKSBhZ19sXG4gICAgICApIGVsc2UgKFxuICAgICAgICBsZXQgYWRkZWQnLCBhY3Rpb25zJywgcG9pbnQgPVxuICAgICAgICAgIG1hdGNoIGFnLlJhd19taXh0dXJlLmFfaW50cy4oc2l0ZV9pZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhZGRlZCwgYWN0aW9ucywgKHNpdGVfaWQsIE5vbmUpXG4gICAgICAgICAgfCBTb21lIGkgLT5cbiAgICAgICAgICAgICggUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAocGxhY2UsIHNpdGVfaWQsIGkpXG4gICAgICAgICAgICAgIDo6IGFkZGVkLFxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoKHBsYWNlLCBzaXRlX2lkKSwgaSkgOjogYWN0aW9ucyxcbiAgICAgICAgICAgICAgKHNpdGVfaWQsIFNvbWUgaSkgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgYWRkZWQnJywgYWN0aW9ucycnLCBsX3QnID1cbiAgICAgICAgICBtYXRjaCBhZy5SYXdfbWl4dHVyZS5hX3BvcnRzLihzaXRlX2lkKSB3aXRoXG4gICAgICAgICAgfCBSYXdfbWl4dHVyZS5GUkVFIC0+XG4gICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKHBsYWNlLCBzaXRlX2lkKSA6OiBhZGRlZCcsXG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uRnJlZSAocGxhY2UsIHNpdGVfaWQpIDo6IGFjdGlvbnMnLFxuICAgICAgICAgICAgICBsX3QgKVxuICAgICAgICAgIHwgUmF3X21peHR1cmUuVkFMIGkgLT5cbiAgICAgICAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaSBsX3Qgd2l0aFxuICAgICAgICAgICAgfCBTb21lIGRzdCwgbF90JyAtPlxuICAgICAgICAgICAgICAoIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTGlua2VkICgocGxhY2UsIHNpdGVfaWQpLCBkc3QpXG4gICAgICAgICAgICAgICAgOjogYWRkZWQnLFxuICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uQmluZF90byAoKHBsYWNlLCBzaXRlX2lkKSwgZHN0KVxuICAgICAgICAgICAgICAgIDo6IEluc3RhbnRpYXRpb24uQmluZF90byAoZHN0LCAocGxhY2UsIHNpdGVfaWQpKVxuICAgICAgICAgICAgICAgIDo6IGFjdGlvbnMnLFxuICAgICAgICAgICAgICAgIGxfdCcgKVxuICAgICAgICAgICAgfCBOb25lLCBsX3QgLT5cbiAgICAgICAgICAgICAgbGV0IGxfdCcgPSBNb2RzLkludE1hcC5hZGQgaSAocGxhY2UsIHNpdGVfaWQpIGxfdCBpblxuICAgICAgICAgICAgICBhZGRlZCcsIGFjdGlvbnMnLCBsX3QnKVxuICAgICAgICBpblxuICAgICAgICBoYW5kbGVfcG9ydHMgYWRkZWQnJyBsX3QnIGFjdGlvbnMnJyAocG9pbnQgOjogaW50ZikgKHN1Y2Mgc2l0ZV9pZClcbiAgICAgIClcbiAgICBpblxuICAgIGhhbmRsZV9wb3J0c1xuICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgcGxhY2UgOjogYWRkZWQpXG4gICAgICBsaW5rc190cmFuc2YgYWN0aW9ucyBbXSAwXG5cbmxldCBpbmNyX29yaWdpbiA9IGZ1bmN0aW9uXG4gIHwgKE9wZXJhdG9yLkFMRyBfIHwgT3BlcmF0b3IuTU9ESUYgXykgYXMgeCAtPiB4XG4gIHwgT3BlcmF0b3IuUlVMRSBpIC0+IE9wZXJhdG9yLlJVTEUgKHN1Y2MgaSlcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX29mX21peHR1cmUgfmRlYnVnX21vZGUgY3JlYXRlZCBtaXggKGVudiwgb3JpZ2luKSA9XG4gIGxldCBzaWdzID0gUGF0dGVybi5QcmVFbnYuc2lncyBlbnYgaW5cbiAgbGV0IHJlYyBhdXggZW52IHRyYW5zZm9ybWF0aW9ucyBpbnN0YW50aWF0aW9ucyBsaW5rc190cmFuc2YgYWNjIGlkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+XG4gICAgICBsZXQgcmVtb3ZlZCwgYWRkZWQgPSB0cmFuc2Zvcm1hdGlvbnMgaW5cbiAgICAgIGxldCBhY3Rpb25zJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBhY3MgLT4gZnVuY3Rpb25cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKCgoYXgsIF8pIGFzIHgpLCAoKGF5LCBfKSBhcyB5KSlcbiAgICAgICAgICAgICAgd2hlbiBNYXRjaGluZy5BZ2VudC5pc19mcmVzaCBheCB8fCBNYXRjaGluZy5BZ2VudC5pc19mcmVzaCBheSAtPlxuICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHgsIHkpIDo6IGFjc1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoeCwgeSkgLT5cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5CaW5kICh4LCB5KSA6OiBhY3NcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfXG4gICAgICAgICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgX1xuICAgICAgICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBfIC0+XG4gICAgICAgICAgICAgIGFjcylcbiAgICAgICAgICBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnMgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgdHJhbnNmb3JtYXRpb25zJyA9IExpc3QucmV2IHJlbW92ZWQsIExpc3QucmV2IGFkZGVkIGluXG4gICAgICBsZXQgYWN0aW9ucycnLCB0cmFuc2Zvcm1hdGlvbnMnJyA9XG4gICAgICAgIGNvbXBsZXRlX3dpdGhfY3JlYXRpb24gc2lncyB0cmFuc2Zvcm1hdGlvbnMnIGxpbmtzX3RyYW5zZiBbXSBhY3Rpb25zJyAwXG4gICAgICAgICAgY3JlYXRlZFxuICAgICAgaW5cbiAgICAgICggKCBvcmlnaW4sXG4gICAgICAgICAgVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgYWNjLFxuICAgICAgICAgIHsgaW5zdGFudGlhdGlvbnMgd2l0aCBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhY3Rpb25zJycgfSxcbiAgICAgICAgICB0cmFuc2Zvcm1hdGlvbnMnJyApLFxuICAgICAgICAoZW52LCBPcHRpb25fdXRpbC5tYXAgaW5jcl9vcmlnaW4gb3JpZ2luKSApXG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGxldCB3ayA9IFBhdHRlcm4uYmVnaW5fbmV3IGVudiBpblxuICAgICAgbGV0IGluc3RhbnRpYXRpb25zJyA9XG4gICAgICAgIHtcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gW10gOjogaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi50ZXN0cztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBpbnN0YW50aWF0aW9ucy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgIGluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IHdrX291dCwgKHJlbW92ZWQsIGFkZGVkKSwgbF90LCBldmVudCwgcmVtYWlucyA9XG4gICAgICAgIGFkZF9hZ2VudHNfaW5fY2Mgc2lncyBpZCB3ayBNb2RzLkludE1hcC5lbXB0eSB0cmFuc2Zvcm1hdGlvbnNcbiAgICAgICAgICBsaW5rc190cmFuc2YgaW5zdGFudGlhdGlvbnMnIHQgWyBoIF1cbiAgICAgIGluXG4gICAgICBsZXQgZW52JywgaW5qLCBjYywgY2NfaWQgPVxuICAgICAgICBQYXR0ZXJuLmZpbmlzaF9uZXcgfmRlYnVnX21vZGUgP29yaWdpbiB3a19vdXRcbiAgICAgIGluXG4gICAgICBsZXQgYWRkZWQnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgIChQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnJlbmFtZSB+ZGVidWdfbW9kZSBpZCBpbmopXG4gICAgICAgICAgYWRkZWRcbiAgICAgIGluXG4gICAgICBsZXQgcmVtb3ZlZCcgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ucmVuYW1lIH5kZWJ1Z19tb2RlIGlkIGluailcbiAgICAgICAgICByZW1vdmVkXG4gICAgICBpblxuICAgICAgbGV0IGV2ZW50JyA9XG4gICAgICAgIEluc3RhbnRpYXRpb24ucmVuYW1lX2Fic3RyYWN0X2V2ZW50IH5kZWJ1Z19tb2RlIGlkIGluaiBldmVudFxuICAgICAgaW5cbiAgICAgIGxldCBsX3QnID1cbiAgICAgICAgTW9kcy5JbnRNYXAubWFwXG4gICAgICAgICAgKGZ1biAoKHAsIHMpIGFzIHgpIC0+XG4gICAgICAgICAgICBsZXQgcCcgPSBNYXRjaGluZy5BZ2VudC5yZW5hbWUgfmRlYnVnX21vZGUgaWQgaW5qIHAgaW5cbiAgICAgICAgICAgIGlmIHAgPT0gcCcgdGhlblxuICAgICAgICAgICAgICB4XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHAnLCBzKVxuICAgICAgICAgIGxfdFxuICAgICAgaW5cbiAgICAgIGF1eCBlbnYnIChyZW1vdmVkJywgYWRkZWQnKSBldmVudCcgbF90JyAoKGNjX2lkLCBjYykgOjogYWNjKSAoc3VjYyBpZClcbiAgICAgICAgcmVtYWluc1xuICBpblxuICBhdXggZW52IChbXSwgW10pIEluc3RhbnRpYXRpb24uZW1wdHlfZXZlbnQgTW9kcy5JbnRNYXAuZW1wdHkgW10gMCBtaXhcblxubGV0IHJ1bGVfbWl4dHVyZXNfb2ZfYW1iaWd1b3VzX3J1bGUgY29udGFjdF9tYXAgc2lncyBwcmVjb21wX21peHMgPVxuICBhZGRfaW1wbGljaXRfaW5mb3Mgc2lnc1xuICAgIChmaW5kX2ltcGxpY2l0X2luZm9zIGNvbnRhY3RfbWFwXG4gICAgICAgKExpc3QucmV2IChMaXN0LnJldl9tYXAgTEthcHBhLmNvcHlfcnVsZV9hZ2VudCBwcmVjb21wX21peHMpKSlcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfcnVsZSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gcHJlY29tcF9taXhzIGNyZWF0ZWQgPVxuICBsZXQgbm9Db3VudGVycyA9IGRlYnVnX21vZGUgaW5cbiAgbGV0IHNpZ3MgPSBQYXR0ZXJuLlByZUVudi5zaWdzIGVudiBpblxuICBsZXQgYWxsX21peHMgPVxuICAgIHJ1bGVfbWl4dHVyZXNfb2ZfYW1iaWd1b3VzX3J1bGUgY29udGFjdF9tYXAgc2lncyBwcmVjb21wX21peHNcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBjb21waWxlX21vZGVfb24gdGhlblxuICAgICAgRm9ybWF0LmVwcmludGYgXCJAWzx2Pl9fX19fKCVpKUAsJWFAXUAuXCIgKExpc3QubGVuZ3RoIGFsbF9taXhzKVxuICAgICAgICAoUHAubGlzdCBQcC5jdXQgKGZ1biBmIHggLT5cbiAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslYSVhQF1cIlxuICAgICAgICAgICAgICAgKExLYXBwYS5wcmludF9ydWxlX21peHR1cmUgfm5vQ291bnRlcnMgc2lncyB+bHR5cGVzOnRydWUgY3JlYXRlZClcbiAgICAgICAgICAgICAgIHhcbiAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDp0cnVlXG4gICAgICAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTooeCA8PiBbXSkgfnNpZ3MpXG4gICAgICAgICAgICAgICAoTGlzdC5yZXYgY3JlYXRlZCkpKVxuICAgICAgICBhbGxfbWl4c1xuICBpblxuICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAoY29ubmVjdGVkX2NvbXBvbmVudHNfb2ZfbWl4dHVyZSB+ZGVidWdfbW9kZSBjcmVhdGVkKVxuICAgIGFsbF9taXhzIChlbnYsIG9yaWdpbilcblxubGV0IGNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgY29udGFjdF9tYXAgZW52ID9vcmlnaW4gbWl4ID1cbiAgbGV0IHJ1bGVzLCAoY2NfZW52LCBfKSA9XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb25cbiAgICAgIGNvbnRhY3RfbWFwIGVudiA/b3JpZ2luIG1peCBbXVxuICBpblxuICAoIGNjX2VudixcbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IF8sIGwsIGV2ZW50LCAoW10sIFtdKSAtPiBsLCBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzXG4gICAgICAgIHwgXyAtPiBhc3NlcnQgZmFsc2UpXG4gICAgICBydWxlcyApXG5cbmxldCBhdXhfbGthcHBhX29mX3BhdHRlcm4gZnJlZV9pZCBwID1cbiAgUGF0dGVybi5mb2xkX2J5X3R5cGVcbiAgICAoZnVuIH5wb3MgfmFnZW50X3R5cGUgaW50ZiAoYWNjLCBsbmtfcGFjaykgLT5cbiAgICAgIGxldCByYV9wb3J0cyA9XG4gICAgICAgIEFycmF5Lm1ha2UgKEFycmF5Lmxlbmd0aCBpbnRmKVxuICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gICAgICBpblxuICAgICAgbGV0IHJhX2ludHMgPSBBcnJheS5tYWtlIChBcnJheS5sZW5ndGggaW50ZikgTEthcHBhLklfQU5ZIGluXG4gICAgICBsZXQgb3V0ID1cbiAgICAgICAge1xuICAgICAgICAgIExLYXBwYS5yYV90eXBlID0gYWdlbnRfdHlwZTtcbiAgICAgICAgICBMS2FwcGEucmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICAgICAgTEthcHBhLnJhX3N5bnRheCA9IE5vbmU7XG4gICAgICAgICAgTEthcHBhLnJhX3BvcnRzO1xuICAgICAgICAgIExLYXBwYS5yYV9pbnRzO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGFjYycgPSBNb2RzLkludE1hcC5hZGQgcG9zIG91dCBhY2MgaW5cbiAgICAgIGxldCBsbmtfcGFjaycgPVxuICAgICAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgKGZ1biBzaXRlICgoZnJlZV9pZCwga25vd25fc3JjKSBhcyBwYWNrKSAobGluaywgaW50KSAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgaWYgaW50IDw+IC0xIHRoZW4gcmFfaW50cy4oc2l0ZSkgPC0gTEthcHBhLklfVkFMX0NIQU5HRUQgKGludCwgaW50KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG1hdGNoIGxpbmsgd2l0aFxuICAgICAgICAgICAgfCBQYXR0ZXJuLlVuU3BlYyAtPiBwYWNrXG4gICAgICAgICAgICB8IFBhdHRlcm4uRnJlZSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHJhX3BvcnRzLihzaXRlKSA8LVxuICAgICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwYWNrXG4gICAgICAgICAgICB8IFBhdHRlcm4uTGluayAoZHN0X2EsIGRzdF9zKSAtPlxuICAgICAgICAgICAgICBsZXQgc3JjX2luZm8gPSBzaXRlLCBhZ2VudF90eXBlIGluXG4gICAgICAgICAgICAgIChtYXRjaCBNb2RzLkludDJNYXAuZmluZF9vcHRpb24gKGRzdF9hLCBkc3Rfcykga25vd25fc3JjIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIChpZCwgZHN0X2luZm8pIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHJhX3BvcnRzLihzaXRlKSA8LVxuICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFIChpZCwgZHN0X2luZm8pKSxcbiAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBvdXQgZHN0X2EgYWNjJykuTEthcHBhLnJhX3BvcnRzLihkc3RfcykgPC1cbiAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLkxOS19WQUxVRSAoaWQsIHNyY19pbmZvKSksXG4gICAgICAgICAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgcGFja1xuICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAoIHN1Y2MgZnJlZV9pZCxcbiAgICAgICAgICAgICAgICAgIE1vZHMuSW50Mk1hcC5hZGQgKHBvcywgc2l0ZSkgKGZyZWVfaWQsIHNyY19pbmZvKSBrbm93bl9zcmMgKSkpXG4gICAgICAgICAgbG5rX3BhY2sgaW50ZlxuICAgICAgaW5cbiAgICAgIGFjYycsIGxua19wYWNrJylcbiAgICBwXG4gICAgKE1vZHMuSW50TWFwLmVtcHR5LCAoZnJlZV9pZCwgTW9kcy5JbnQyTWFwLmVtcHR5KSlcblxubGV0IHJlZ2lzdGVyX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgZnJlZV9pZCB0cmFuc2ZzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuICgoZmlkLCBmcikgYXMgcGFjaykgLT4gZnVuY3Rpb25cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCBfXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8pIC0+XG4gICAgICAgIGFzc2VydCBmYWxzZVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkFnZW50IChNYXRjaGluZy5BZ2VudC5GcmVzaCAoYV90eXBlLCBpZCkpIC0+XG4gICAgICAgIGxldCBzaSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFfdHlwZSBpblxuICAgICAgICBsZXQgbiA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV90eXBlO1xuICAgICAgICAgICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IEFycmF5Lm1ha2Ugc2kgUmF3X21peHR1cmUuRlJFRTtcbiAgICAgICAgICAgIFJhd19taXh0dXJlLmFfaW50cyA9IEFycmF5Lm1ha2Ugc2kgTm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGZpZCwgTW9kcy5JbnRNYXAuYWRkIGlkIG4gZnJcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGlkLCBfKSwgY2NfaWQpLCBzLCBpKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICAgIHwgU29tZSBhIC0+XG4gICAgICAgICAgICAobWF0Y2ggYS5MS2FwcGEucmFfaW50cy4ocykgd2l0aFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9BTllfQ0hBTkdFRCBfIHwgTEthcHBhLklfQU5ZX0VSQVNFRFxuICAgICAgICAgICAgfCBMS2FwcGEuSV9WQUxfRVJBU0VEIF8gLT5cbiAgICAgICAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IExLYXBwYS5JX1ZBTF9DSEFOR0VEIChqLCBrKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGogPSBrKSBpblxuICAgICAgICAgICAgICBhLkxLYXBwYS5yYV9pbnRzLihzKSA8LSBMS2FwcGEuSV9WQUxfQ0hBTkdFRCAoaiwgaSlcbiAgICAgICAgICAgIHwgTEthcHBhLklfQU5ZIC0+IGEuTEthcHBhLnJhX2ludHMuKHMpIDwtIExLYXBwYS5JX0FOWV9DSEFOR0VEIGkpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2tcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQpLCBzLCBpKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkIGZyIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhLlJhd19taXh0dXJlLmFfaW50cy4ocykgPC0gU29tZSBpXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHBhY2tcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXykgLT4gZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkXG4gICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQsIF8pLCBjY19pZCksIHMpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWl4cy4oY2NfaWQpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4ocykgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoZWRpdCA9IExLYXBwYS5NYWludGFpbmVkKSBpblxuICAgICAgICAgICAgYS5MS2FwcGEucmFfcG9ydHMuKHMpIDwtIHRlc3QsIExLYXBwYS5GcmVlZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgcGFja1xuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQxLCBfKSwgY2NfaWQxKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nICgoaWQyLCBfKSwgY2NfaWQyKSwgczIpICkgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZDEgbWl4cy4oY2NfaWQxKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIGxldCB0ZXN0LCBlZGl0ID0gYS5MS2FwcGEucmFfcG9ydHMuKHMxKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4oczEpIDwtIHRlc3QsIExLYXBwYS5MaW5rZWQgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMiBtaXhzLihjY19pZDIpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPlxuICAgICAgICAgICAgbGV0IHRlc3QsIGVkaXQgPSBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGVkaXQgPSBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgICAgIGEuTEthcHBhLnJhX3BvcnRzLihzMikgPC0gdGVzdCwgTEthcHBhLkxpbmtlZCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmclxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZFxuICAgICAgICAgICggKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMxKSxcbiAgICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGVpZCwgXyksIGNjX2lkKSwgczIpIClcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5FeGlzdGluZyAoKGVpZCwgXyksIGNjX2lkKSwgczIpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZCksIHMxKSApIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9wb3J0cy4oczEpIDwtIFJhd19taXh0dXJlLlZBTCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gZWlkIG1peHMuKGNjX2lkKSB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICAgIGxldCB0ZXN0LCBlZGl0ID0gYS5MS2FwcGEucmFfcG9ydHMuKHMyKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChlZGl0ID0gTEthcHBhLk1haW50YWluZWQpIGluXG4gICAgICAgICAgICBhLkxLYXBwYS5yYV9wb3J0cy4oczIpIDwtIHRlc3QsIExLYXBwYS5MaW5rZWQgZmlkXG4gICAgICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBzdWNjIGZpZCwgZnJcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoIChNYXRjaGluZy5BZ2VudC5GcmVzaCAoXywgaWQxKSwgczEpLFxuICAgICAgICAgICAgKE1hdGNoaW5nLkFnZW50LkZyZXNoIChfLCBpZDIpLCBzMikgKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGlkMSBmciB3aXRoXG4gICAgICAgICAgfCBTb21lIGEgLT4gYS5SYXdfbWl4dHVyZS5hX3BvcnRzLihzMSkgPC0gUmF3X21peHR1cmUuVkFMIGZpZFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZDIgZnIgd2l0aFxuICAgICAgICAgIHwgU29tZSBhIC0+IGEuUmF3X21peHR1cmUuYV9wb3J0cy4oczIpIDwtIFJhd19taXh0dXJlLlZBTCBmaWRcbiAgICAgICAgICB8IE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIHN1Y2MgZmlkLCBmcilcbiAgICAoZnJlZV9pZCwgTW9kcy5JbnRNYXAuZW1wdHkpXG4gICAgdHJhbnNmc1xuICB8PiBzbmRcblxubGV0IGFkZF9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbnMgc2lncyBtaXhzIHRyYW5zZnMgPVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZFxuICAgICAgICAgIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKVxuICAgICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIF9cbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSwgXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKF8sIChNYXRjaGluZy5BZ2VudC5GcmVzaCBfLCBfKSlcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoTWF0Y2hpbmcuQWdlbnQuRnJlc2ggXywgXykgLT5cbiAgICAgICAgYXNzZXJ0IGZhbHNlXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciBfXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXylcbiAgICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWRcbiAgICAgICAgICAoKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8sIF8pLCAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgXywgXykpXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKE1hdGNoaW5nLkFnZW50LkV4aXN0aW5nIF8sIF8pIC0+XG4gICAgICAgICgpXG4gICAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnRcbiAgICAgICAgICAoTWF0Y2hpbmcuQWdlbnQuRXhpc3RpbmcgKChpZCwgXyksIGNjX2lkKSkgLT5cbiAgICAgICAgbGV0IGFnID1cbiAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBtaXhzLihjY19pZCkgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhXG4gICAgICAgIGluXG4gICAgICAgIG1peHMuKGNjX2lkKSA8LVxuICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBpZCAoTEthcHBhLmFnZW50X3RvX2VyYXNlZCBzaWdzIGFnKSBtaXhzLihjY19pZCkpXG4gICAgdHJhbnNmc1xuXG5sZXQgbGthcHBhX29mX2VsZW1lbnRhcnlfcnVsZSBzaWdzIGRvbWFpbiByID1cbiAgbGV0IG5iX2NjID0gQXJyYXkubGVuZ3RoIHIuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBpblxuICBsZXQgbWl4cyA9IEFycmF5Lm1ha2UgbmJfY2MgTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgbGV0IGZyZWVfaWQgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gY2NfaWQgZnJlZV9pZCBjYyAtPlxuICAgICAgICBsZXQgb3V0LCAoZnJlZV9pZCcsIF8pID1cbiAgICAgICAgICBhdXhfbGthcHBhX29mX3BhdHRlcm4gZnJlZV9pZFxuICAgICAgICAgICAgKFBhdHRlcm4uRW52LmNvbnRlbnQgKFBhdHRlcm4uRW52LmdldCBkb21haW4gY2MpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBtaXhzLihjY19pZCkgPC0gb3V0IGluXG4gICAgICAgIGZyZWVfaWQnKVxuICAgICAgMSByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgaW5cbiAgbGV0IG5ld3MgPVxuICAgIHJlZ2lzdGVyX3Bvc2l0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgZnJlZV9pZCByLlByaW1pdGl2ZXMuaW5zZXJ0ZWRcbiAgaW5cbiAgbGV0ICgpID0gYWRkX25lZ2F0aXZlX3RyYW5zZm9ybWF0aW9ucyBzaWdzIG1peHMgci5QcmltaXRpdmVzLnJlbW92ZWQgaW5cbiAgbGV0IHJfbWl4ID1cbiAgICBBcnJheS5mb2xkX2xlZnRcbiAgICAgIChmdW4gYSBiIC0+IE1vZHMuSW50TWFwLmZvbGQgKGZ1biBfIHggYWNjIC0+IHggOjogYWNjKSBiIGEpXG4gICAgICBbXSBtaXhzXG4gICAgfD4gTGlzdC5yZXZcbiAgaW5cbiAgbGV0IHJfY3JlYXRlZCA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZCAoZnVuIF8geCBhY2MgLT4geCA6OiBhY2MpIG5ld3MgW10gfD4gTGlzdC5yZXZcbiAgaW5cbiAgcl9taXgsIHJfY3JlYXRlZFxuKCp7XG4gIExLYXBwYS5yX21peDsgTEthcHBhLnJfY3JlYXRlZDsgTEthcHBhLnJfZWRpdF9zdHlsZSA9IHRydWU7XG4gIExLYXBwYS5yX3JhdGUgPSByLlByaW1pdGl2ZXMucmF0ZTtcbiAgTEthcHBhLnJfdW5fcmF0ZSA9IHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlO1xuICBMS2FwcGEucl9kZWx0YV90b2tlbnMgPSByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zO1xuICB9KilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvZl9zbmFwc2hvdCBnID1cbiAgbGV0IG91dCwgXyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBub2RlIChhY2MsIHBhY2spIGFnIC0+XG4gICAgICAgIGxldCByYV90eXBlID0gYWcuU25hcHNob3Qubm9kZV90eXBlIGluXG4gICAgICAgIGxldCBhciA9IEFycmF5Lmxlbmd0aCBhZy5TbmFwc2hvdC5ub2RlX3NpdGVzIGluXG4gICAgICAgIGxldCByYV9wb3J0cyA9XG4gICAgICAgICAgQXJyYXkubWFrZSBhciAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJhX2ludHMgPSBBcnJheS5tYWtlIGFyIExLYXBwYS5JX0FOWSBpblxuICAgICAgICBsZXQgcGFjaycgPVxuICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgIChmdW4gaWQgKChkYW5nbGluZywgZnJlZV9pZCkgYXMgcGFjaykgcCAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHAuU25hcHNob3Quc2l0ZV9zdGF0ZSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgfCBTb21lIGkgLT4gcmFfaW50cy4oaWQpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpLCBpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBwLlNuYXBzaG90LnNpdGVfbGluayB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBwYWNrXG4gICAgICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50Mk1hcC5wb3AgcyBkYW5nbGluZyB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHZhLCBkYW5nbGluZycgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHJhX3BvcnRzLihpZCkgPC1cbiAgICAgICAgICAgICAgICAgICAgICAoIExvYy5hbm5vdF93aXRoX2R1bW15IChMS2FwcGEuTE5LX1ZBTFVFICh2YSwgKC0xLCAtMSkpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBkYW5nbGluZycsIGZyZWVfaWRcbiAgICAgICAgICAgICAgICB8IE5vbmUsIGRhbmdsaW5nJyAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgcmFfcG9ydHMuKGlkKSA8LVxuICAgICAgICAgICAgICAgICAgICAgICggTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKExLYXBwYS5MTktfVkFMVUUgKGZyZWVfaWQsICgtMSwgLTEpKSksXG4gICAgICAgICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZCApXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgTW9kcy5JbnQyTWFwLmFkZCAobm9kZSwgaWQpIGZyZWVfaWQgZGFuZ2xpbmcnLCBzdWNjIGZyZWVfaWQpKVxuICAgICAgICAgICAgcGFjayBhZy5TbmFwc2hvdC5ub2RlX3NpdGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCByYSA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgTEthcHBhLnJhX3R5cGU7XG4gICAgICAgICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJhX3BvcnRzO1xuICAgICAgICAgICAgcmFfaW50cztcbiAgICAgICAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcmFfcG9ydHMsIEFycmF5LmNvcHkgcmFfaW50cyk7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICByYSA6OiBhY2MsIHBhY2snKVxuICAgICAgKFtdLCAoTW9kcy5JbnQyTWFwLmVtcHR5LCAxKSlcbiAgICAgIGdcbiAgaW5cbiAgb3V0XG5cbmxldCBwYXR0ZXJuc19vZl9taXh0dXJlIH5kZWJ1Z19tb2RlIGNvbnRhY3RfbWFwIHNpZ3MgcHJlX2VudiBlID1cbiAgbGV0IHNuYXAgPSBFZGdlcy5idWlsZF9zbmFwc2hvdCB+cmF3OmZhbHNlIHNpZ3MgZSBpblxuICBsZXQgcHJlX2VudicsIGFjYyA9XG4gICAgU25hcHNob3QuZm9sZFxuICAgICAgKGZ1biAoY2NfY2FjaGUsIGFjYykgaSBtIC0+XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgUGF0dGVybl9jb21waWxlci5jb25uZWN0ZWRfY29tcG9uZW50c19zdW1fb2ZfYW1iaWd1b3VzX21peHR1cmVcbiAgICAgICAgICAgIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb246ZmFsc2UgY29udGFjdF9tYXAgY2NfY2FjaGVcbiAgICAgICAgICAgIChvZl9zbmFwc2hvdCBtKVxuICAgICAgICB3aXRoXG4gICAgICAgIHwgY2NfY2FjaGUnLCBbIChbfCAoXywgeCkgfF0sIF8pIF0gLT5cbiAgICAgICAgICBjY19jYWNoZScsIFRvb2xzLnJlY3RpIChmdW4gYSBfIC0+IHggOjogYSkgYWNjIGlcbiAgICAgICAgfCBfIC0+IGFzc2VydCBmYWxzZSlcbiAgICAgIChwcmVfZW52LCBbXSkgc25hcFxuICBpblxuICBwcmVfZW52JywgYWNjXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGZpbGVuYW1lczogc3RyaW5nIGxpc3Q7XG4gIGRvbWFpbjogUGF0dGVybi5FbnYudDtcbiAgdG9rZW5zOiB1bml0IE5hbWVkRGVjbHMudDtcbiAgYWxnczogUHJpbWl0aXZlcy5hbGdfZXhwciBMb2MuYW5ub3RlZCBOYW1lZERlY2xzLnQ7XG4gIG9ic2VydmFibGVzOiBQcmltaXRpdmVzLmFsZ19leHByIExvYy5hbm5vdGVkIGFycmF5O1xuICBhc3RfcnVsZXM6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogTEthcHBhLnJ1bGUgTG9jLmFubm90ZWQpIGFycmF5O1xuICBydWxlczogUHJpbWl0aXZlcy5lbGVtZW50YXJ5X3J1bGUgYXJyYXk7XG4gIGludGVydmVudGlvbnM6IFByaW1pdGl2ZXMucGVydHVyYmF0aW9uIGFycmF5O1xuICBkZXBlbmRlbmNpZXNfaW5fdGltZTogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gIGRlcGVuZGVuY2llc19pbl9ldmVudDogT3BlcmF0b3IuRGVwU2V0LnQ7XG4gIGFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXM6IE9wZXJhdG9yLkRlcFNldC50IGFycmF5O1xuICB0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXM6IE9wZXJhdG9yLkRlcFNldC50IGFycmF5O1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbn1cblxubGV0IGluaXQgfmZpbGVuYW1lcyBkb21haW4gdG9rZW5zIGFsZ3MgKGRlcHNfaW5fdCwgZGVwc19pbl9lLCB0b2tfcmQsIGFsZ19yZClcbiAgICAoYXN0X3J1bGVzLCBydWxlcykgb2JzZXJ2YWJsZXMgaW50ZXJ2ZW50aW9ucyBjb250YWN0X21hcCA9XG4gIHtcbiAgICBmaWxlbmFtZXM7XG4gICAgZG9tYWluO1xuICAgIHRva2VucztcbiAgICBhc3RfcnVsZXM7XG4gICAgcnVsZXM7XG4gICAgYWxncztcbiAgICBvYnNlcnZhYmxlcztcbiAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID0gYWxnX3JkO1xuICAgIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9IHRva19yZDtcbiAgICBkZXBlbmRlbmNpZXNfaW5fdGltZSA9IGRlcHNfaW5fdDtcbiAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPSBkZXBzX2luX2U7XG4gICAgaW50ZXJ2ZW50aW9ucztcbiAgICBjb250YWN0X21hcDtcbiAgfVxuXG5sZXQgZGVjb25zdHJ1Y3QgZW52ID1cbiAgKCBlbnYuZmlsZW5hbWVzLFxuICAgIGVudi5kb21haW4sXG4gICAgZW52LnRva2VucyxcbiAgICBlbnYuYWxncyxcbiAgICAoIGVudi5kZXBlbmRlbmNpZXNfaW5fdGltZSxcbiAgICAgIGVudi5kZXBlbmRlbmNpZXNfaW5fZXZlbnQsXG4gICAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLFxuICAgICAgZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgKSxcbiAgICAoZW52LmFzdF9ydWxlcywgZW52LnJ1bGVzKSxcbiAgICBlbnYub2JzZXJ2YWJsZXMsXG4gICAgZW52LmludGVydmVudGlvbnMsXG4gICAgZW52LmNvbnRhY3RfbWFwIClcblxubGV0IGRvbWFpbiBlbnYgPSBlbnYuZG9tYWluXG5sZXQgZ2V0X29icyBlbnYgPSBlbnYub2JzZXJ2YWJsZXNcbmxldCBnZXRfcnVsZXMgZW52ID0gZW52LnJ1bGVzXG5sZXQgbmV3X2RvbWFpbiBkb21haW4gZW52ID0geyBlbnYgd2l0aCBkb21haW4gfVxubGV0IHNpZ25hdHVyZXMgZW52ID0gUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBlbnYuZG9tYWluXG5sZXQgdG9rZW5zX2ZpbmRlciBlbnYgPSBlbnYudG9rZW5zLk5hbWVkRGVjbHMuZmluZGVyXG5sZXQgYWxnc19maW5kZXIgZW52ID0gZW52LmFsZ3MuTmFtZWREZWNscy5maW5kZXJcbmxldCBjb250YWN0X21hcCBlbnYgPSBlbnYuY29udGFjdF9tYXBcbmxldCBudW1fb2ZfYWdlbnQgbm1lIGVudiA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgbm1lIChzaWduYXR1cmVzIGVudilcblxubGV0IGZvbGRfcnVsZXMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgKGZ1biBpIHggcnVsZSAtPiBmIGkgeCBydWxlKSB4IGVudi5ydWxlc1xuXG5sZXQgZm9sZF9wZXJ0dXJiYXRpb25zIGYgeCBlbnYgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRpIChmdW4gaSB4IHAgLT4gZiBpIHggcCkgeCBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgZ2V0X3J1bGUgZW52IGkgPSBlbnYucnVsZXMuKGkpXG5sZXQgZ2V0X2FzdF9ydWxlX3dpdGhfbGFiZWwgZW52IGkgPSBlbnYuYXN0X3J1bGVzLihpIC0gMSlcbmxldCBnZXRfYXN0X3J1bGUgZW52IGkgPSBmc3QgKHNuZCAoZ2V0X2FzdF9ydWxlX3dpdGhfbGFiZWwgZW52IGkpKVxuXG5sZXQgZm9sZF9hc3RfcnVsZXMgZiB4IGVudiA9XG4gIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAoZnVuIGkgeCAoXywgX3J1bGUpIC0+XG4gICAgICBsZXQgbGthcHBhX3J1bGUgPSBnZXRfYXN0X3J1bGUgZW52IGkgaW5cbiAgICAgIGYgaSB4IGxrYXBwYV9ydWxlKVxuICAgIHggZW52LmFzdF9ydWxlc1xuXG5sZXQgZ2V0X2FzdF9ydWxlX3JhdGVfcG9zIH51bmFyeSBlbnYgaSA9XG4gIGlmIHVuYXJ5IHRoZW4gKFxuICAgIG1hdGNoIChmc3QgKHNuZCBlbnYuYXN0X3J1bGVzLihpIC0gMSkpKS5MS2FwcGEucl91bl9yYXRlIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFpbHdpdGggXCJObyB1bmFyeSByYXRlIHRvIGdldCBwb3NpdGlvbiBvZlwiXG4gICAgfCBTb21lICgoXywgcG9zKSwgXykgLT4gcG9zXG4gICkgZWxzZVxuICAgIHNuZCAoZnN0IChzbmQgZW52LmFzdF9ydWxlcy4oaSAtIDEpKSkuTEthcHBhLnJfcmF0ZVxuXG5sZXQgbmJfcnVsZXMgZW52ID0gQXJyYXkubGVuZ3RoIGVudi5ydWxlc1xuXG5sZXQgbnVtc19vZl9ydWxlIG5hbWUgZW52ID1cbiAgZm9sZF9ydWxlc1xuICAgIChmdW4gaSBhY2MgciAtPlxuICAgICAgbWF0Y2ggZW52LmFzdF9ydWxlcy4ocHJlZCByLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUpIHdpdGhcbiAgICAgIHwgU29tZSAoeCwgXyksIF8gLT5cbiAgICAgICAgaWYgeCA9IG5hbWUgdGhlblxuICAgICAgICAgIGkgOjogYWNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBhY2NcbiAgICAgIHwgTm9uZSwgXyAtPiBhY2MpXG4gICAgW10gZW52XG5cbmxldCBuYl9zeW50YWN0aWNfcnVsZXMgZW52ID0gQXJyYXkubGVuZ3RoIGVudi5hc3RfcnVsZXNcbmxldCBudW1fb2ZfYWxnIHMgZW52ID0gTmFtZWREZWNscy5lbHRfaWQgfmtpbmQ6XCJ2YXJpYWJsZVwiIGVudi5hbGdzIHNcbmxldCBnZXRfYWxnIGVudiBpID0gZnN0IEBAIE5hbWVkRGVjbHMuZWx0X3ZhbCBlbnYuYWxncyBpXG5sZXQgZ2V0X2FsZ3MgZW52ID0gZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xubGV0IG5iX2FsZ3MgZW52ID0gTmFtZWREZWNscy5zaXplIGVudi5hbGdzXG5sZXQgbnVtX29mX3Rva2VuIHN0ciBlbnYgPSBOYW1lZERlY2xzLmVsdF9pZCB+a2luZDpcInRva2VuXCIgZW52LnRva2VucyBzdHJcbmxldCBuYl90b2tlbnMgZW52ID0gTmFtZWREZWNscy5zaXplIGVudi50b2tlbnNcbmxldCBnZXRfcGVydHVyYmF0aW9uIGVudiBpID0gZW52LmludGVydmVudGlvbnMuKGkpXG5sZXQgbmJfcGVydHVyYmF0aW9ucyBlbnYgPSBBcnJheS5sZW5ndGggZW52LmludGVydmVudGlvbnNcbmxldCBnZXRfYWxnX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBpID0gZW52LmFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXMuKGkpXG5sZXQgZ2V0X3Rva2VuX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBpID0gZW52LnRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcy4oaSlcblxubGV0IGFsbF9kZXBlbmRlbmNpZXMgZW52ID1cbiAgKCBlbnYuZGVwZW5kZW5jaWVzX2luX3RpbWUsXG4gICAgZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCxcbiAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzLFxuICAgIGVudi5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzIClcblxubGV0IHByaW50X2FnZW50ID9lbnYgZiBpID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FnZW50XyVpXCIgaVxuICB8IFNvbWUgZW52IC0+IFNpZ25hdHVyZS5wcmludF9hZ2VudCAoc2lnbmF0dXJlcyBlbnYpIGYgaVxuXG5sZXQgcHJpbnRfYWxnID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX19hbGdfJWlcIiBpZFxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IG5hbWUgPSBOYW1lZERlY2xzLmVsdF9uYW1lIGVudi5hbGdzIGlkIGluXG4gICAgbGV0IHNwZWNpYWwgPSBUb29scy5ub3RfYW5faWQgbmFtZSBpblxuICAgIGxldCAoKSA9IGlmIHNwZWNpYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCInXCIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgbmFtZSBpblxuICAgIGlmIHNwZWNpYWwgdGhlbiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCInXCJcblxubGV0IHByaW50X3Rva2VuID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX190b2tlbl8laVwiIGlkXG4gIHwgU29tZSBlbnYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzXCIgKE5hbWVkRGVjbHMuZWx0X25hbWUgZW52LnRva2VucyBpZClcblxubGV0IHByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiBpID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJfX2FzdF9ydWxlXyVpXCIgaVxuICB8IFNvbWUgZW52IC0+XG4gICAgbGV0IHNpZ3MgPSBzaWduYXR1cmVzIGVudiBpblxuICAgIGlmIGkgPSAwIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkludGVydmVudGlvbnNcIlxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggZW52LmFzdF9ydWxlcy4ocHJlZCBpKSB3aXRoXG4gICAgICB8IFNvbWUgKG5hLCBfKSwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgbmFcbiAgICAgIHwgTm9uZSwgKHIsIF8pIC0+XG4gICAgICAgIExLYXBwYS5wcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOmZhbHNlIHNpZ3MgKHByaW50X3Rva2VuIH5lbnYpXG4gICAgICAgICAgKHByaW50X2FsZyB+ZW52KSBmIHJcbiAgICApXG5cbmxldCBwcmludF9ydWxlIH5ub0NvdW50ZXJzID9lbnYgZiBpZCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiX19ydWxlXyVpXCIgaWRcbiAgfCBTb21lIGVudiAtPlxuICAgIHByaW50X2FzdF9ydWxlIH5ub0NvdW50ZXJzIH5lbnYgZiBlbnYucnVsZXMuKGlkKS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlXG5cbmxldCBtYXBfb2JzZXJ2YWJsZXMgZiBlbnYgPSBBcnJheS5tYXAgKGZ1biAoeCwgXykgLT4gZiB4KSBlbnYub2JzZXJ2YWJsZXNcblxubGV0IHByaW50X2thcHBhIH5ub0NvdW50ZXJzIHByX2FsZyA/cHJfcnVsZSBwcl9wZXJ0IGYgZW52ID1cbiAgbGV0IHNpZ3MgPSBzaWduYXR1cmVzIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsJWEldEAsJWEldCVhQCwldCV0JWFAXVwiXG4gICAgKENvbnRhY3RfbWFwLnByaW50X2thcHBhIH5ub0NvdW50ZXJzIHNpZ3MpXG4gICAgZW52LmNvbnRhY3RfbWFwXG4gICAgKE5hbWVkRGVjbHMucHJpbnQgfnNlcDpQcC5zcGFjZSAoZnVuIF8gbiBmICgpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSV0b2tlbjogJXNcIiBuKSlcbiAgICBlbnYudG9rZW5zXG4gICAgKGZ1biBmIC0+IGlmIGVudi50b2tlbnMuTmFtZWREZWNscy5kZWNscyA8PiBbfHxdIHRoZW4gUHAuc3BhY2UgZilcbiAgICAoTmFtZWREZWNscy5wcmludCB+c2VwOlBwLnNwYWNlIChmdW4gaSBuIGYgKGUsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJXZhcjovKiVpKi8gJyVzJyAlYUBdXCIgaSBuIChwcl9hbGcgZW52KSBlKSlcbiAgICBlbnYuYWxnc1xuICAgIChmdW4gZiAtPiBpZiBlbnYuYWxncy5OYW1lZERlY2xzLmRlY2xzIDw+IFt8fF0gdGhlbiBQcC5zcGFjZSBmKVxuICAgIChQcC5hcnJheSBQcC5zcGFjZSB+dHJhaWxpbmc6UHAuc3BhY2UgKGZ1biBfIGYgKGUsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lJXBsb3Q6ICVhQF1cIiAocHJfYWxnIGVudikgZSkpXG4gICAgZW52Lm9ic2VydmFibGVzXG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCBwcl9ydWxlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBQcC5hcnJheSBQcC5zcGFjZSB+dHJhaWxpbmc6UHAuc3BhY2VcbiAgICAgICAgICAoZnVuIF8gZiAobmEsIChlLCBfKSkgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhXCJcbiAgICAgICAgICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKG5hLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnIFwiIG5hKSlcbiAgICAgICAgICAgICAgbmFcbiAgICAgICAgICAgICAgKExLYXBwYS5wcmludF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOnRydWUgc2lncyAocHJpbnRfdG9rZW4gfmVudilcbiAgICAgICAgICAgICAgICAgKHByaW50X2FsZyB+ZW52KSlcbiAgICAgICAgICAgICAgZSlcbiAgICAgICAgICBmIGVudi5hc3RfcnVsZXNcbiAgICAgIHwgU29tZSBwcl9ydWxlIC0+XG4gICAgICAgIFBwLmFycmF5IFBwLnNwYWNlIH50cmFpbGluZzpQcC5zcGFjZVxuICAgICAgICAgIChmdW4gXyBmIHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbPDI+JWFAXVwiIChwcl9ydWxlIGVudikgcilcbiAgICAgICAgICBmIGVudi5ydWxlcylcbiAgICAoZnVuIGYgLT4gaWYgZW52LmludGVydmVudGlvbnMgPD4gW3x8XSB0aGVuIFBwLnNwYWNlIGYpXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIHAgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPi8qJWkqLyVhQF1cIiBpIChwcl9wZXJ0IGVudikgcCkpXG4gICAgZW52LmludGVydmVudGlvbnNcblxubGV0IHByaW50IH5ub0NvdW50ZXJzIHByX2FsZyBwcl9ydWxlIHByX3BlcnQgZiBlbnYgPVxuICBsZXQgKCkgPSBwcmludF9rYXBwYSB+bm9Db3VudGVycyBwcl9hbGcgcHJfcGVydCBmIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQCxAWzx2PkBbPHYgMj5SdWxlczpALCVhQF1AXVwiXG4gICAgKFBwLmFycmF5IFBwLnNwYWNlIChmdW4gaSBmIHIgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzwyPiVpOkAgJWFAXVwiIGkgKHByX3J1bGUgZW52KSByKSlcbiAgICBlbnYucnVsZXNcblxubGV0IGNoZWNrX2lmX2NvdW50ZXJfaXNfZmlsbGVkX2Vub3VnaCB4ID1cbiAgaWZcbiAgICBub3RcbiAgICBAQCBQcmltaXRpdmVzLmV4aXN0c19tb2RpZmljYXRpb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1RPUCBfIC0+IHRydWVcbiAgICAgICAgICAgfCBQcmltaXRpdmVzLklURVJfUlVMRSBfIHwgUHJpbWl0aXZlcy5VUERBVEUgX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU05BUFNIT1QgXyB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuRElOIF9cbiAgICAgICAgICAgfCBQcmltaXRpdmVzLkRJTk9GRiBfIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QTE9URU5UUllcbiAgICAgICAgICAgfCBQcmltaXRpdmVzLlBSSU5UIF8gfCBQcmltaXRpdmVzLlNQRUNJRVMgX1xuICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgeC5pbnRlcnZlbnRpb25zXG4gIHRoZW5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIlRoZXJlIGlzIG5vIHdheSBmb3IgdGhlIHNpbXVsYXRpb24gdG8gc3RvcC5cIikpXG5cbmxldCBvdmVyd3JpdGVfdmFycyBhbGdfb3ZlcndyaXRlIGVudiA9XG4gIGxldCBhbGdzJyA9XG4gICAgQXJyYXkubWFwXG4gICAgICAoZnVuICh4LCB5KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCB5KVxuICAgICAgZW52LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaSwgdikgLT4gYWxncycuKGkpIDwtIGZzdCBhbGdzJy4oaSksIExvYy5hbm5vdF93aXRoX2R1bW15IHYpXG4gICAgICBhbGdfb3ZlcndyaXRlXG4gIGluXG4gIHsgZW52IHdpdGggYWxncyA9IE5hbWVkRGVjbHMuY3JlYXRlIGFsZ3MnIH1cblxubGV0IGZvbGRfYWxnX2V4cHIgZl9hbGcgZl9ib29sIHggZW52ID1cbiAgbGV0IHgxID1cbiAgICBBcnJheS5mb2xkX2xlZnQgKGZ1biBhY2MgKF8sIHkpIC0+IGZfYWxnIGFjYyB5KSB4IGVudi5hbGdzLk5hbWVkRGVjbHMuZGVjbHNcbiAgaW5cbiAgbGV0IHgyID0gQXJyYXkuZm9sZF9sZWZ0IGZfYWxnIHgxIGVudi5vYnNlcnZhYmxlcyBpblxuICBsZXQgeDMgPSBBcnJheS5mb2xkX2xlZnQgKFByaW1pdGl2ZXMuZm9sZF9leHByX3J1bGUgZl9hbGcpIHgyIGVudi5ydWxlcyBpblxuICBBcnJheS5mb2xkX2xlZnRcbiAgICAoUHJpbWl0aXZlcy5mb2xkX2V4cHJfcGVydHVyYmF0aW9uIGZfYWxnIGZfYm9vbClcbiAgICB4MyBlbnYuaW50ZXJ2ZW50aW9uc1xuXG5sZXQgZm9sZF9taXh0dXJlX2luX2V4cHIgZiA9XG4gIGZvbGRfYWxnX2V4cHIgKEFsZ19leHByLmZvbGRfb25fbWl4dHVyZSBmKSAoQWxnX2V4cHIuZm9sZF9ib29sX29uX21peHR1cmUgZilcblxubGV0IHByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHMgfnVwZGF0ZWRfdmFyc1xuICAgIH5hbGdfb3ZlcndyaXRlIHggPVxuICBsZXQgYWxncycgPVxuICAgIEFycmF5Lm1hcCAoZnVuICh4LCB5KSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSB4LCB5KSB4LmFsZ3MuTmFtZWREZWNscy5kZWNsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biAoaSwgdikgLT4gYWxncycuKGkpIDwtIGZzdCBhbGdzJy4oaSksIExvYy5hbm5vdF93aXRoX2R1bW15IHYpXG4gICAgICBhbGdfb3ZlcndyaXRlXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSAobmEsIHYpIC0+XG4gICAgICAgIGFsZ3MnLihpKSA8LVxuICAgICAgICAgICggbmEsXG4gICAgICAgICAgICBBbGdfZXhwci5wcm9wYWdhdGVfY29uc3RhbnQgfndhcm5pbmcgP21heF90aW1lID9tYXhfZXZlbnRzXG4gICAgICAgICAgICAgIH51cGRhdGVkX3ZhcnMgfnZhcnM6YWxncycgdiApKVxuICAgICAgYWxncydcbiAgaW5cbiAge1xuICAgIGZpbGVuYW1lcyA9IHguZmlsZW5hbWVzO1xuICAgIGRvbWFpbiA9IHguZG9tYWluO1xuICAgIHRva2VucyA9IHgudG9rZW5zO1xuICAgIGFsZ3MgPSBOYW1lZERlY2xzLmNyZWF0ZSBhbGdzJztcbiAgICBvYnNlcnZhYmxlcyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJylcbiAgICAgICAgeC5vYnNlcnZhYmxlcztcbiAgICBhc3RfcnVsZXMgPSB4LmFzdF9ydWxlcztcbiAgICBydWxlcyA9XG4gICAgICBBcnJheS5tYXBcbiAgICAgICAgKFByaW1pdGl2ZXMubWFwX2V4cHJfcnVsZVxuICAgICAgICAgICAoQWxnX2V4cHIucHJvcGFnYXRlX2NvbnN0YW50IH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKSlcbiAgICAgICAgeC5ydWxlcztcbiAgICBpbnRlcnZlbnRpb25zID1cbiAgICAgIEFycmF5Lm1hcFxuICAgICAgICAoUHJpbWl0aXZlcy5tYXBfZXhwcl9wZXJ0dXJiYXRpb25cbiAgICAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWUgP21heF9ldmVudHNcbiAgICAgICAgICAgICAgfnVwZGF0ZWRfdmFycyB+dmFyczphbGdzJylcbiAgICAgICAgICAgKEFsZ19leHByLnByb3BhZ2F0ZV9jb25zdGFudF9ib29sIH53YXJuaW5nID9tYXhfdGltZSA/bWF4X2V2ZW50c1xuICAgICAgICAgICAgICB+dXBkYXRlZF92YXJzIH52YXJzOmFsZ3MnKSlcbiAgICAgICAgeC5pbnRlcnZlbnRpb25zO1xuICAgIGRlcGVuZGVuY2llc19pbl90aW1lID0geC5kZXBlbmRlbmNpZXNfaW5fdGltZTtcbiAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPSB4LmRlcGVuZGVuY2llc19pbl9ldmVudDtcbiAgICBhbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzID0geC5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzO1xuICAgIHRva2Vuc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9IHgudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzO1xuICAgIGNvbnRhY3RfbWFwID0geC5jb250YWN0X21hcDtcbiAgfVxuXG5sZXQga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfYXJyYXkgUGF0dGVybi5pZF90b195b2pzb24pXG5cbmxldCB0b195b2pzb24gZW52ID1cbiAgbGV0IGZpbGVzID1cbiAgICBBcnJheS5vZl9saXN0IChMZXhpbmcuZHVtbXlfcG9zLkxleGluZy5wb3NfZm5hbWUgOjogZW52LmZpbGVuYW1lcylcbiAgaW5cbiAgbGV0IGZpbGVuYW1lcyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIG1hcCB4IC0+IE1vZHMuU3RyaW5nTWFwLmFkZCB4IGkgbWFwKVxuICAgICAgTW9kcy5TdHJpbmdNYXAuZW1wdHkgZmlsZXNcbiAgaW5cbiAgYEFzc29jXG4gICAgW1xuICAgICAgXCJmaWxlbmFtZXNcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2Zfc3RyaW5nIGZpbGVzO1xuICAgICAgXCJ1cGRhdGVcIiwgUGF0dGVybi5FbnYudG9feW9qc29uIChkb21haW4gZW52KTtcbiAgICAgIFwidG9rZW5zXCIsIE5hbWVkRGVjbHMudG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSBlbnYudG9rZW5zO1xuICAgICAgKCBcImFsZ3NcIixcbiAgICAgICAgTmFtZWREZWNscy50b19qc29uXG4gICAgICAgICAgKGZ1biAoeCwgXykgLT5cbiAgICAgICAgICAgIEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uXG4gICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB4KVxuICAgICAgICAgIGVudi5hbGdzICk7XG4gICAgICAoIFwib2JzZXJ2YWJsZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKHgsIF8pIGwgLT5cbiAgICAgICAgICAgICAgIEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2VfdG9feW9qc29uXG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2ludCB4XG4gICAgICAgICAgICAgICA6OiBsKVxuICAgICAgICAgICAgIGVudi5vYnNlcnZhYmxlcyBbXSkgKTtcbiAgICAgICggXCJhc3RfcnVsZXNcIixcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoQXJyYXkuZm9sZF9yaWdodFxuICAgICAgICAgICAgIChmdW4gKG4sIChyLCBfKSkgbCAtPlxuICAgICAgICAgICAgICAgYExpc3RcbiAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgIChtYXRjaCBuIHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYE51bGxcbiAgICAgICAgICAgICAgICAgICB8IFNvbWUgKG4sIF8pIC0+IGBTdHJpbmcgbik7XG4gICAgICAgICAgICAgICAgICAgTEthcHBhLnJ1bGVfdG9fanNvbiB+ZmlsZW5hbWVzIHI7XG4gICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgIDo6IGwpXG4gICAgICAgICAgICAgZW52LmFzdF9ydWxlcyBbXSkgKTtcbiAgICAgICggXCJlbGVtZW50YXJ5X3J1bGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IChQcmltaXRpdmVzLnJ1bGVfdG9feW9qc29uIH5maWxlbmFtZXMpIGVudi5ydWxlcyApO1xuICAgICAgXCJjb250YWN0X21hcFwiLCBDb250YWN0X21hcC50b195b2pzb24gZW52LmNvbnRhY3RfbWFwO1xuICAgICAgKCBcImludGVydmVudGlvbnNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXlcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wZXJ0dXJiYXRpb25fdG9feW9qc29uIH5maWxlbmFtZXMpXG4gICAgICAgICAgZW52LmludGVydmVudGlvbnMgKTtcbiAgICAgIFwiZGVwZW5kZW5jaWVzX2luX3RpbWVcIiwgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvbiBlbnYuZGVwZW5kZW5jaWVzX2luX3RpbWU7XG4gICAgICAoIFwiZGVwZW5kZW5jaWVzX2luX2V2ZW50XCIsXG4gICAgICAgIE9wZXJhdG9yLmRlcHNldF90b195b2pzb24gZW52LmRlcGVuZGVuY2llc19pbl9ldmVudCApO1xuICAgICAgKCBcImFsZ3NfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfYXJyYXkgT3BlcmF0b3IuZGVwc2V0X3RvX3lvanNvblxuICAgICAgICAgIGVudi5hbGdzX3JldmVyc2VfZGVwZW5kZW5jaWVzICk7XG4gICAgICAoIFwidG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2FycmF5IE9wZXJhdG9yLmRlcHNldF90b195b2pzb25cbiAgICAgICAgICBlbnYudG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzICk7XG4gICAgXVxuXG5sZXQga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCAoSnNvblV0aWwudG9fYXJyYXkgUGF0dGVybi5pZF9vZl95b2pzb24pXG5cbmxldCBvZl95b2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMTMgLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGVuYW1lcyA9XG4gICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJmaWxlbmFtZXNcIiBsKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgZmlsZW5hbWVzID0gTGlzdC50bCAoQXJyYXkudG9fbGlzdCBmaWxlbmFtZXMpO1xuICAgICAgICAgZG9tYWluID0gUGF0dGVybi5FbnYub2ZfeW9qc29uIChMaXN0LmFzc29jIFwidXBkYXRlXCIgbCk7XG4gICAgICAgICB0b2tlbnMgPSBOYW1lZERlY2xzLm9mX2pzb24gKGZ1biBfIC0+ICgpKSAoTGlzdC5hc3NvYyBcInRva2Vuc1wiIGwpO1xuICAgICAgICAgYWxncyA9XG4gICAgICAgICAgIE5hbWVkRGVjbHMub2ZfanNvblxuICAgICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgP2Vycm9yX21zZzpOb25lKVxuICAgICAgICAgICAgICAgICAgICB4KSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImFsZ3NcIiBsKTtcbiAgICAgICAgIG9ic2VydmFibGVzID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJvYnNlcnZhYmxlc1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IG8gLT5cbiAgICAgICAgICAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdFxuICAgICAgICAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15XG4gICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMga2FwcGFfaW5zdGFuY2Vfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpXG4gICAgICAgICAgICAgICAgICAgICAgeCkpXG4gICAgICAgICAgICAgICBvXG4gICAgICAgICAgIHwgYE51bGwgLT4gW3x8XVxuICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIGFzdF9ydWxlcyA9XG4gICAgICAgICAgIChtYXRjaCBMaXN0LmFzc29jIFwiYXN0X3J1bGVzXCIgbCB3aXRoXG4gICAgICAgICAgIHwgYExpc3QgbyAtPlxuICAgICAgICAgICAgIFRvb2xzLmFycmF5X21hcF9vZl9saXN0XG4gICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCBgTGlzdCBbIGBOdWxsOyByIF0gLT5cbiAgICAgICAgICAgICAgICAgICBOb25lLCBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLnJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzIHIpXG4gICAgICAgICAgICAgICAgIHwgYExpc3QgWyBgU3RyaW5nIG47IHIgXSAtPlxuICAgICAgICAgICAgICAgICAgICggU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgbiksXG4gICAgICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoTEthcHBhLnJ1bGVfb2ZfanNvbiB+ZmlsZW5hbWVzIHIpIClcbiAgICAgICAgICAgICAgICAgfCBfIC0+IHJhaXNlIE5vdF9mb3VuZClcbiAgICAgICAgICAgICAgIG9cbiAgICAgICAgICAgfCBgTnVsbCAtPiBbfHxdXG4gICAgICAgICAgIHwgXyAtPiByYWlzZSBOb3RfZm91bmQpO1xuICAgICAgICAgcnVsZXMgPVxuICAgICAgICAgICAobWF0Y2ggTGlzdC5hc3NvYyBcImVsZW1lbnRhcnlfcnVsZXNcIiBsIHdpdGhcbiAgICAgICAgICAgfCBgTGlzdCBvIC0+XG4gICAgICAgICAgICAgVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgKFByaW1pdGl2ZXMucnVsZV9vZl95b2pzb24gfmZpbGVuYW1lcykgb1xuICAgICAgICAgICB8IF8gLT4gcmFpc2UgTm90X2ZvdW5kKTtcbiAgICAgICAgIGludGVydmVudGlvbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAgIChQcmltaXRpdmVzLnBlcnR1cmJhdGlvbl9vZl95b2pzb24gfmZpbGVuYW1lcylcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiaW50ZXJ2ZW50aW9uc1wiIHgpO1xuICAgICAgICAgZGVwZW5kZW5jaWVzX2luX3RpbWUgPVxuICAgICAgICAgICBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlcGVuZGVuY2llc19pbl90aW1lXCIgeCk7XG4gICAgICAgICBkZXBlbmRlbmNpZXNfaW5fZXZlbnQgPVxuICAgICAgICAgICBPcGVyYXRvci5kZXBzZXRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlcGVuZGVuY2llc19pbl9ldmVudFwiIHgpO1xuICAgICAgICAgYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2FycmF5IE9wZXJhdG9yLmRlcHNldF9vZl95b2pzb25cbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiYWxnc19yZXZlcnNlX2RlcGVuZGVuY2llc1wiIHgpO1xuICAgICAgICAgdG9rZW5zX3JldmVyc2VfZGVwZW5kZW5jaWVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fYXJyYXkgT3BlcmF0b3IuZGVwc2V0X29mX3lvanNvblxuICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ0b2tlbnNfcmV2ZXJzZV9kZXBlbmRlbmNpZXNcIiB4KTtcbiAgICAgICAgIGNvbnRhY3RfbWFwID0gQ29udGFjdF9tYXAub2ZfeW9qc29uIChMaXN0LmFzc29jIFwiY29udGFjdF9tYXBcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGVudmlyb25tZW50XCIsIHgpKVxuXG5sZXQgdW5hcnlfcGF0dGVybnMgZW52ID1cbiAgZm9sZF9ydWxlc1xuICAgIChmdW4gXyBhY2MgciAtPlxuICAgICAgbWF0Y2ggci5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgUGF0dGVybi5TZXQuYWRkXG4gICAgICAgICAgci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigwKVxuICAgICAgICAgIChQYXR0ZXJuLlNldC5hZGQgci5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigxKSBhY2MpKVxuICAgIFBhdHRlcm4uU2V0LmVtcHR5IGVudlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNjX21peCB+bm9Db3VudGVycyA/ZW52IGYgbWl4ID1cbiAgbGV0IGRvbWFpbiA9XG4gICAgbWF0Y2ggZW52IHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSBlIC0+IFNvbWUgKE1vZGVsLmRvbWFpbiBlKVxuICBpblxuICBtYXRjaCBtaXggd2l0aFxuICB8IFtdIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIwXCJcbiAgfCBfIC0+XG4gICAgUHAubGlzdFxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgK0AgXCIpXG4gICAgICAoZnVuIGYgY2NzIC0+XG4gICAgICAgIFBwLmFycmF5XG4gICAgICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIqXCIpXG4gICAgICAgICAgKGZ1biBfIGYgY2MgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCJcbiAgICAgICAgICAgICAgKFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDpmYWxzZSlcbiAgICAgICAgICAgICAgY2MpXG4gICAgICAgICAgZiBjY3MpXG4gICAgICBmIG1peFxuXG5sZXQgYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudiA9XG4gIEFsZ19leHByLnByaW50IChjY19taXggfm5vQ291bnRlcnMgP2VudikgKE1vZGVsLnByaW50X3Rva2VuID9lbnYpXG4gICAgKE1vZGVsLnByaW50X2FsZyA/ZW52KVxuXG5sZXQgYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYgPVxuICBBbGdfZXhwci5wcmludF9ib29sIChjY19taXggfm5vQ291bnRlcnMgP2VudilcbiAgICAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChNb2RlbC5wcmludF90b2tlbiA/ZW52KSBpKVxuICAgIChNb2RlbC5wcmludF9hbGcgP2VudilcblxubGV0IHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudiBmID1cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52IGYgYWxnXG4gIGluXG4gIGZ1bmN0aW9uXG4gIHwgW10gLT4gKClcbiAgfCBbIFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIF0gLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiBzdHJcbiAgfCAoWyBQcmltaXRpdmVzLkFsZ19wZXhwciBfIF0gfCBfIDo6IF8gOjogXykgYXMgZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJWEpXCIgKFBwLmxpc3QgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIuXCIpIGF1eCkgZVxuXG5sZXQgcHJpbnRfZXhwcl92YWwgYWxnX3ZhbCBmIGUgPVxuICBsZXQgYXV4IGYgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHN0clxuICAgIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgKGFsZywgXykgLT4gTmJyLnByaW50IGYgKGFsZ192YWwgYWxnKVxuICBpblxuICBQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfY3V0IGYgKCkpIGF1eCBmIGVcblxubGV0IGRlY29tcGlsZWRfcnVsZSB+bm9Db3VudGVycyB+ZnVsbCBlbnYgZiByID1cbiAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICBsZXQgcl9taXgsIHJfY3JlYXRlZCA9XG4gICAgUGF0dGVybl9jb21waWxlci5sa2FwcGFfb2ZfZWxlbWVudGFyeV9ydWxlIHNpZ3MgKE1vZGVsLmRvbWFpbiBlbnYpIHJcbiAgaW5cbiAgbGV0IHByX2FsZyBmIChhLCBfKSA9IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYgZiBhIGluXG4gIGxldCBwcl90b2sgZiAodmEsIHRvaykgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIHByX2FsZyB2YSAoTW9kZWwucHJpbnRfdG9rZW4gfmVudikgdG9rXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSVhJXQlYSV0XCJcbiAgICAoTEthcHBhLnByaW50X3J1bGVfbWl4dHVyZSB+bm9Db3VudGVycyBzaWdzIH5sdHlwZXM6ZmFsc2Ugcl9jcmVhdGVkKVxuICAgIHJfbWl4XG4gICAgKFJhd19taXh0dXJlLnByaW50IH5ub0NvdW50ZXJzIH5jcmVhdGVkOnRydWUgfmluaXRpYWxfY29tbWE6KHJfbWl4IDw+IFtdKVxuICAgICAgIH5zaWdzKVxuICAgIHJfY3JlYXRlZFxuICAgIChpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW5cbiAgICAgICBmdW4gZiAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwifEAgXCJcbiAgICAgZWxzZVxuICAgICAgIFBwLmVtcHR5KVxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3Rvaykgci5QcmltaXRpdmVzLmRlbHRhX3Rva2Vuc1xuICAgIChmdW4gZiAtPlxuICAgICAgaWYgZnVsbCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAIEBAICVhJXRcIiBwcl9hbGcgci5QcmltaXRpdmVzLnJhdGUgKGZ1biBmIC0+XG4gICAgICAgICAgICBtYXRjaCByLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSAocmF0ZSwgZGlzdCkgLT5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiB7JWElYX1cIiBwcl9hbGcgcmF0ZVxuICAgICAgICAgICAgICAgIChQcC5vcHRpb24gKGZ1biBmIG1kIC0+XG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiOiVhXCIgKGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpIG1kKSlcbiAgICAgICAgICAgICAgICBkaXN0KSlcblxubGV0IGVsZW1lbnRhcnlfcnVsZSB+bm9Db3VudGVycyA/ZW52IGYgciA9XG4gIGxldCBkb21haW4sIHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgZSAtPiBTb21lIChNb2RlbC5kb21haW4gZSksIFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZSlcbiAgaW5cbiAgbGV0IHByX2FsZyBmIChhLCBfKSA9IGFsZ19leHByIH5ub0NvdW50ZXJzID9lbnYgZiBhIGluXG4gIGxldCBwcl90b2sgZiAodmEsIHRvaykgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIHByX2FsZyB2YSAoTW9kZWwucHJpbnRfdG9rZW4gP2VudikgdG9rXG4gIGluXG4gIGxldCBwcl90cmFucyBmIHQgPSBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnByaW50ID9zaWdzIGYgdCBpblxuICBsZXQgYm94ZWRfY2MgaSBmIGNjID1cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl9ib3ggZiAyIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ludCBmIGkgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCI6IFwiIGluXG4gICAgbGV0ICgpID0gUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOnRydWUgZiBjYyBpblxuICAgIEZvcm1hdC5wcF9jbG9zZV9ib3ggZiAoKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiKGFzdDogJWkpQCBAW0BbJWFAXSV0QFslYUBdQF1AIC0tIEBbJWFAXUAgKysgQFslYUBdQCBAQCVhJXRcIlxuICAgIHIuUHJpbWl0aXZlcy5zeW50YWN0aWNfcnVsZVxuICAgIChQcC5hcnJheSBQcC5jb21tYSBib3hlZF9jYylcbiAgICByLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAoaWYgci5QcmltaXRpdmVzLmRlbHRhX3Rva2VucyA8PiBbXSB0aGVuXG4gICAgICAgZnVuIGYgLT5cbiAgICAgRm9ybWF0LmZwcmludGYgZiBcInxAIFwiXG4gICAgIGVsc2VcbiAgICAgICBQcC5lbXB0eSlcbiAgICAoUHAubGlzdCBQcC5jb21tYSBwcl90b2spIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnNcbiAgICAoUHAubGlzdCBQcC5jb21tYSBwcl90cmFucylcbiAgICByLlByaW1pdGl2ZXMucmVtb3ZlZFxuICAgIChQcC5saXN0IFBwLmNvbW1hIHByX3RyYW5zKVxuICAgIHIuUHJpbWl0aXZlcy5pbnNlcnRlZCBwcl9hbGcgci5QcmltaXRpdmVzLnJhdGVcbiAgICAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChyYXRlLCBkaXN0KSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiIHslYSVhfVwiIHByX2FsZyByYXRlXG4gICAgICAgICAgKFBwLm9wdGlvbiAoZnVuIGYgbWQgLT5cbiAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI6JWFcIiAoYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudikgbWQpKVxuICAgICAgICAgIGRpc3QpXG5cbmxldCBtb2RpZmljYXRpb24gfm5vQ291bnRlcnMgP2VudiBmIG0gPVxuICBsZXQgZG9tYWluID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGUgLT4gU29tZSAoTW9kZWwuZG9tYWluIGUpXG4gIGluXG4gIG1hdGNoIG0gd2l0aFxuICB8IFByaW1pdGl2ZXMuUFJJTlQgKG5tZSwgdmEpIC0+XG4gICAgaWYgbm1lIDw+IFtdIHRoZW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGICVhID4gJWFcIlxuICAgICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgICB2YVxuICAgICAgICAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgICBubWVcbiAgICBlbHNlXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFBSSU5URiAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIHZhXG4gIHwgUHJpbWl0aXZlcy5QTE9URU5UUlkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiJFBMT1RFTlRSWVwiXG4gIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgKChuLCBfKSwgcnVsZSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJEFQUExZICVhICVhXCJcbiAgICAgIChhbGdfZXhwciB+bm9Db3VudGVycyA/ZW52KVxuICAgICAgblxuICAgICAgKG1hdGNoIGVudiB3aXRoXG4gICAgICB8IE5vbmUgLT4gZWxlbWVudGFyeV9ydWxlIH5ub0NvdW50ZXJzID9lbnZcbiAgICAgIHwgU29tZSBlbnYgLT4gZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzIH5mdWxsOmZhbHNlIGVudilcbiAgICAgIHJ1bGVcbiAgfCBQcmltaXRpdmVzLlVQREFURSAoaWQsICh2YSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRVUERBVEUgJWEgJWFcIiAoTW9kZWwucHJpbnRfYWxnID9lbnYpIGlkXG4gICAgICAoYWxnX2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgIHZhXG4gIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCAocmF3LCBmbikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFNOQVBTSE9UICVhJXRcIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmbiAoZnVuIGYgLT5cbiAgICAgICAgaWYgcmF3IHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFt0cnVlXVwiKVxuICB8IFByaW1pdGl2ZXMuU1RPUCBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU1RPUCAlYVwiIChwcmludF9leHByIH5ub0NvdW50ZXJzID9lbnYpIGZuXG4gIHwgUHJpbWl0aXZlcy5ESU4gKGtpbmQsIGZuKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOICVhICV0W3RydWVdXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgICAgIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBraW5kIHdpdGhcbiAgICAgICAgfCBQcmltaXRpdmVzLkFCU09MVVRFIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiYWJzb2x1dGVcXFwiIFwiXG4gICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPiAoKVxuICAgICAgICB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJwcm9iYWJpbGl0eVxcXCIgXCIpXG4gIHwgUHJpbWl0aXZlcy5ESU5PRkYgZm4gLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJERJTiAlYSBbZmFsc2VdXCIgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudikgZm5cbiAgfCBQcmltaXRpdmVzLkNGTE9XIChfbmFtZSwgY2MsIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyBAWyVhQF0gW3RydWVdXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gIHwgUHJpbWl0aXZlcy5DRkxPV09GRiAoXywgY2MpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyAlYSBbZmFsc2VdXCJcbiAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgUGF0dGVybi5wcmludCB+bm9Db3VudGVycyA/ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgIGNjXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTIChmbiwgY2MsIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIEBbJWFAXSBbdHJ1ZV0gPiAlYVwiXG4gICAgICAoUHAuYXJyYXkgUHAuY29tbWEgKGZ1biBfIC0+XG4gICAgICAgICAgIFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnMgP2RvbWFpbiB+d2l0aF9pZDpmYWxzZSkpXG4gICAgICBjY1xuICAgICAgKHByaW50X2V4cHIgfm5vQ291bnRlcnMgP2VudilcbiAgICAgIGZuXG4gIHwgUHJpbWl0aXZlcy5TUEVDSUVTX09GRiBmbiAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU1BFQ0lFU19PRiBbZmFsc2VdID4gJWFcIiAocHJpbnRfZXhwciB+bm9Db3VudGVycyA/ZW52KSBmblxuXG5sZXQgcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzID9lbnYgZiBwZXJ0ID1cbiAgbGV0IGF1eF9hbGFybSBmID1cbiAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBuIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJhbGFybSAlYSBcIiBOYnIucHJpbnQgblxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJSVtb2Q6ICV0JWEgZG8gJWFyZXBlYXQgJWFcIiBhdXhfYWxhcm1cbiAgICAoYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgIChQcC5saXN0IH50cmFpbGluZzpQcC5jb2xvbiBQcC5jb2xvbiAobW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzID9lbnYpKVxuICAgIHBlcnQuUHJpbWl0aXZlcy5lZmZlY3RcbiAgICAoYm9vbF9leHByIH5ub0NvdW50ZXJzID9lbnYpXG4gICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucmVwZWF0KVxuXG5sZXQgZW52IH5ub0NvdW50ZXJzIGYgZW52ID1cbiAgTW9kZWwucHJpbnQgfm5vQ291bnRlcnNcbiAgICAoZnVuIGVudiAtPiBhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgIChmdW4gZW52IC0+IGVsZW1lbnRhcnlfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgIChmdW4gZW52IC0+IHBlcnR1cmJhdGlvbiB+bm9Db3VudGVycyB+ZW52KVxuICAgIGYgZW52XG5cbmxldCBlbnZfa2FwcGEgfm5vQ291bnRlcnMgZiBlbnYgPVxuICBNb2RlbC5wcmludF9rYXBwYSB+bm9Db3VudGVyc1xuICAgIChmdW4gZW52IC0+IGFsZ19leHByIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgKGZ1biBlbnYgLT4gcGVydHVyYmF0aW9uIH5ub0NvdW50ZXJzIH5lbnYpXG4gICAgZiBlbnZcblxubGV0IGRlY29tcGlsZWRfZW52IH5ub0NvdW50ZXJzIGYgZW52ID1cbiAgTW9kZWwucHJpbnRfa2FwcGEgfm5vQ291bnRlcnNcbiAgICAoZnVuIGVudiAtPiBhbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgIH5wcl9ydWxlOihkZWNvbXBpbGVkX3J1bGUgfm5vQ291bnRlcnMgfmZ1bGw6dHJ1ZSlcbiAgICAoZnVuIGVudiAtPiBwZXJ0dXJiYXRpb24gfm5vQ291bnRlcnMgfmVudilcbiAgICBmIGVudlxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBwZXJpb2QgPSBERSBvZiBpbnQgfCBEVCBvZiBmbG9hdFxuXG50eXBlIHQgPSB7XG4gIHByb2dyZXNzU2l6ZTogaW50O1xuICBwcm9ncmVzc0NoYXI6IGNoYXI7XG4gIGR1bXBJZkRlYWRsb2NrZWQ6IGJvb2w7XG4gIGluaXRpYWw6IGZsb2F0IG9wdGlvbjtcbiAgbWF4Q29uc2VjdXRpdmVDbGFzaDogaW50O1xuICBvdXRwdXRGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbiAgcGxvdFBlcmlvZDogcGVyaW9kIG9wdGlvbjtcbiAgc2VlZDogaW50IG9wdGlvbjtcbiAgdHJhY2VGaWxlTmFtZTogc3RyaW5nIG9wdGlvbjtcbiAgZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWU6IHN0cmluZyBvcHRpb247XG59XG5cbmxldCBlbXB0eSA9XG4gIHtcbiAgICBwcm9ncmVzc1NpemUgPSA3MDtcbiAgICBwcm9ncmVzc0NoYXIgPSAnIyc7XG4gICAgZHVtcElmRGVhZGxvY2tlZCA9IHRydWU7XG4gICAgaW5pdGlhbCA9IE5vbmU7XG4gICAgbWF4Q29uc2VjdXRpdmVDbGFzaCA9IDM7XG4gICAgc2VlZCA9IE5vbmU7XG4gICAgdHJhY2VGaWxlTmFtZSA9IE5vbmU7XG4gICAgcGxvdFBlcmlvZCA9IE5vbmU7XG4gICAgb3V0cHV0RmlsZU5hbWUgPSBOb25lO1xuICAgIGRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lID0gTm9uZTtcbiAgfVxuXG5sZXQgcGFyc2UgcmVzdWx0ID1cbiAgbGV0IGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IGYgPVxuICAgIG1hdGNoIHZhbHVlX2xpc3Qgd2l0aFxuICAgIHwgWyAodiwgcG9zKSBdIC0+IGYgdiBwb3NcbiAgICB8IF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIldyb25nIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHBhcmFtZXRlciBcIiBeIHBhcmFtLCBwb3NfcCkpXG4gIGluXG4gIGxldCBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0ID1cbiAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHZhbHVlIHBvc192IC0+XG4gICAgICAgIG1hdGNoIHZhbHVlIHdpdGhcbiAgICAgICAgfCBcInRydWVcIiB8IFwieWVzXCIgLT4gdHJ1ZVxuICAgICAgICB8IFwiZmFsc2VcIiB8IFwibm9cIiAtPiBmYWxzZVxuICAgICAgICB8IF8gYXMgZXJyb3IgLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gZXJyb3IgXiBcIiBzaG91bGQgYmUgZWl0aGVyIFxcXCJ5ZXNcXFwiIG9yIFxcXCJub1xcXCJcIiwgcG9zX3YpKSlcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIChjb25mLCBzdG9yeV9jb21wcmVzc2lvbiwgZm9ybWF0Q2Zsb3csIGNmbG93RmlsZSlcbiAgICAgICAgICgocGFyYW0sIHBvc19wKSwgdmFsdWVfbGlzdCkgLT5cbiAgICAgIG1hdGNoIHBhcmFtIHdpdGhcbiAgICAgIHwgXCJkaXNwbGF5Q29tcHJlc3Npb25cIiAtPlxuICAgICAgICBsZXQgcmVjIHBhcnNlIChhLCBiLCBjKSBsID1cbiAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICB8IChcInN0cm9uZ1wiLCBfKSA6OiB0bCAtPiBwYXJzZSAoYSwgYiwgdHJ1ZSkgdGxcbiAgICAgICAgICB8IChcIndlYWtcIiwgXykgOjogdGwgLT4gcGFyc2UgKGEsIHRydWUsIGMpIHRsXG4gICAgICAgICAgfCAoXCJub25lXCIsIF8pIDo6IHRsIC0+IHBhcnNlICh0cnVlLCBiLCBjKSB0bFxuICAgICAgICAgIHwgW10gLT4gY29uZiwgKGEsIGIsIGMpLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlXG4gICAgICAgICAgfCAoZXJyb3IsIHBvcykgOjogXyAtPlxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKFwiVW5rbm93biB2YWx1ZSBcIiBeIGVycm9yIF4gXCIgZm9yIGNvbXByZXNzaW9uIG1vZGVcIiwgcG9zKSlcbiAgICAgICAgaW5cbiAgICAgICAgcGFyc2Ugc3RvcnlfY29tcHJlc3Npb24gdmFsdWVfbGlzdFxuICAgICAgfCBcImNmbG93RmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHggXyAtPlxuICAgICAgICAgICAgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBTb21lIHgpXG4gICAgICB8IFwic2VlZFwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gcyBwIC0+XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBzZWVkID0gU29tZSAoaW50X29mX3N0cmluZyBzKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKVxuICAgICAgfCBcIlQwXCIgLT5cbiAgICAgICAgZ2V0X3ZhbHVlIHBvc19wIHBhcmFtIHZhbHVlX2xpc3QgKGZ1biBzIHAgLT5cbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIGluaXRpYWwgPSBTb21lIChmbG9hdF9vZl9zdHJpbmcgcykgfSxcbiAgICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gcyBeIFwiIHNob3VsZCBiZSBhIGZsb2F0XCIsIHApKSlcbiAgICAgIHwgXCJwbG90UGVyaW9kXCIgLT5cbiAgICAgICAgKG1hdGNoIHZhbHVlX2xpc3Qgd2l0aFxuICAgICAgICB8IFsgKHMsIHApIF0gLT5cbiAgICAgICAgICAodHJ5XG4gICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBwbG90UGVyaW9kID0gU29tZSAoRFQgKGZsb2F0X29mX3N0cmluZyBzKSkgfSxcbiAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgcCkpKVxuICAgICAgICB8IFsgKHMsIHNwKTsgKHUsIHVwKSBdIC0+XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIHUgPSBcImVcIiB8fCB1ID0gXCJldmVudFwiIHx8IHUgPSBcImV2ZW50c1wiIHx8IHUgPSBcIkV2ZW50XCJcbiAgICAgICAgICAgIHx8IHUgPSBcIkV2ZW50c1wiXG4gICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBwbG90UGVyaW9kID0gU29tZSAoREUgKGludF9vZl9zdHJpbmcgcykpIH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoXCJWYWx1ZSBcIiBeIHMgXiBcIiBzaG91bGQgYmUgYW4gaW50ZWdlclwiLCBzcCkpXG4gICAgICAgICAgKSBlbHNlIGlmXG4gICAgICAgICAgICAgIHUgPSBcInQudS5cIiB8fCB1ID0gXCJ0aW1lIHVuaXRzXCIgfHwgdSA9IFwiVGltZSB1bml0c1wiXG4gICAgICAgICAgICAgIHx8IHUgPSBcInRpbWUgdW5pdFwiIHx8IHUgPSBcIlRpbWUgdW5pdFwiXG4gICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAoIHsgY29uZiB3aXRoIHBsb3RQZXJpb2QgPSBTb21lIChEVCAoZmxvYXRfb2Zfc3RyaW5nIHMpKSB9LFxuICAgICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiBzIF4gXCIgc2hvdWxkIGJlIGEgZmxvYXRcIiwgc3ApKVxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiSW5jb3JyZWN0IHVuaXQgXCIgXiB1LCB1cCkpXG4gICAgICAgIHwgXyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiV3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcGFyYW1ldGVyIFwiIF4gcGFyYW0sIHBvc19wKSkpXG4gICAgICB8IFwib3V0cHV0RmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBvdXRwdXRGaWxlTmFtZSA9IFNvbWUgcyB9LFxuICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgIGNmbG93RmlsZSApKVxuICAgICAgfCBcInRyYWNlRmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCB0cmFjZUZpbGVOYW1lID0gU29tZSBzIH0sXG4gICAgICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICAgICAgY2Zsb3dGaWxlICkpXG4gICAgICB8IFwiZGVsdGFBY3Rpdml0aWVzRmlsZU5hbWVcIiAtPlxuICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHMgXyAtPlxuICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBkZWx0YUFjdGl2aXRpZXNGaWxlTmFtZSA9IFNvbWUgcyB9LFxuICAgICAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgIGNmbG93RmlsZSApKVxuICAgICAgfCBcInByb2dyZXNzQmFyU2l6ZVwiIC0+XG4gICAgICAgICgge1xuICAgICAgICAgICAgY29uZiB3aXRoXG4gICAgICAgICAgICBwcm9ncmVzc1NpemUgPVxuICAgICAgICAgICAgICBnZXRfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCAoZnVuIHYgcCAtPlxuICAgICAgICAgICAgICAgICAgdHJ5IGludF9vZl9zdHJpbmcgdlxuICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gdiBeIFwiIHNob3VsZCBiZSBhbiBpbnRlZ2VyXCIsIHApKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBzdG9yeV9jb21wcmVzc2lvbixcbiAgICAgICAgICBmb3JtYXRDZmxvdyxcbiAgICAgICAgICBjZmxvd0ZpbGUgKVxuICAgICAgfCBcInByb2dyZXNzQmFyU3ltYm9sXCIgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBjb25mIHdpdGhcbiAgICAgICAgICAgIHByb2dyZXNzQ2hhciA9XG4gICAgICAgICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICAgICAgICB0cnkgU3RyaW5nLnVuc2FmZV9nZXQgdiAwXG4gICAgICAgICAgICAgICAgICB3aXRoIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgIChcIlZhbHVlIFwiIF4gdiBeIFwiIHNob3VsZCBiZSBhIGNoYXJhY3RlclwiLCBwKSkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgIHwgXCJkdW1wSWZEZWFkbG9ja2VkXCIgLT5cbiAgICAgICAgKCB7IGNvbmYgd2l0aCBkdW1wSWZEZWFkbG9ja2VkID0gZ2V0X2Jvb2xfdmFsdWUgcG9zX3AgcGFyYW0gdmFsdWVfbGlzdCB9LFxuICAgICAgICAgIHN0b3J5X2NvbXByZXNzaW9uLFxuICAgICAgICAgIGZvcm1hdENmbG93LFxuICAgICAgICAgIGNmbG93RmlsZSApXG4gICAgICB8IFwibWF4Q29uc2VjdXRpdmVDbGFzaFwiIC0+XG4gICAgICAgIGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBwIC0+XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgKCB7IGNvbmYgd2l0aCBtYXhDb25zZWN1dGl2ZUNsYXNoID0gaW50X29mX3N0cmluZyB2IH0sXG4gICAgICAgICAgICAgICAgc3RvcnlfY29tcHJlc3Npb24sXG4gICAgICAgICAgICAgICAgZm9ybWF0Q2Zsb3csXG4gICAgICAgICAgICAgICAgY2Zsb3dGaWxlIClcbiAgICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiVmFsdWUgXCIgXiB2IF4gXCIgc2hvdWxkIGJlIGFuIGludGVnZXJcIiwgcCkpKVxuICAgICAgfCBcImRvdENmbG93c1wiIC0+XG4gICAgICAgIGxldCBmb3JtYXRDZmxvdyA9IGdldF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IChmdW4gdiBfIC0+IHYpIGluXG4gICAgICAgIGNvbmYsIHN0b3J5X2NvbXByZXNzaW9uLCBmb3JtYXRDZmxvdywgY2Zsb3dGaWxlXG4gICAgICAoKiBpZiBnZXRfYm9vbF92YWx1ZSBwb3NfcCBwYXJhbSB2YWx1ZV9saXN0IHRoZW5cbiAgICAgICAgIChzdG9yeV9jb21wcmVzc2lvbiwgRG90KSBlbHNlXG4gICAgICAgICAoc3RvcnlfY29tcHJlc3Npb24sIEh0bWwpKilcbiAgICAgIHwgXyBhcyBlcnJvciAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIlVua25vd24gcGFyYW1ldGVyIFwiIF4gZXJyb3IsIHBvc19wKSkpXG4gICAgKGVtcHR5LCAoZmFsc2UsIGZhbHNlLCBmYWxzZSksIFwiZG90XCIsIE5vbmUpXG4gICAgcmVzdWx0XG5cbmxldCBwcmludCBmIGNvbmYgPVxuICBsZXQgKCkgPSBGb3JtYXQucHBfb3Blbl92Ym94IGYgMCBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInNlZWRcXFwiIFxcXCIlaVxcXCJALFwiKVxuICAgICAgZiBjb25mLnNlZWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJkdW1wSWZEZWFkbG9ja2VkXFxcIiBcXFwiJWJcXFwiQCxcIlxuICAgICAgY29uZi5kdW1wSWZEZWFkbG9ja2VkXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwibWF4Q29uc2VjdXRpdmVDbGFzaFxcXCIgXFxcIiVpXFxcIkAsXCJcbiAgICAgIGNvbmYubWF4Q29uc2VjdXRpdmVDbGFzaFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcInByb2dyZXNzQmFyU2l6ZVxcXCIgXFxcIiVpXFxcIkAsXCIgY29uZi5wcm9ncmVzc1NpemVcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwcm9ncmVzc0JhclN5bWJvbFxcXCIgXFxcIiVjXFxcIkAsXCIgY29uZi5wcm9ncmVzc0NoYXJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2VcbiAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJUMFxcXCIgXFxcIiVnXFxcIkAsXCIpXG4gICAgICBmIGNvbmYuaW5pdGlhbFxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgREUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwbG90UGVyaW9kXFxcIiBcXFwiJWlcXFwiIFxcXCJldmVudHNcXFwiQCxcIiBpXG4gICAgICAgIHwgRFQgdCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJSVkZWY6IFxcXCJwbG90UGVyaW9kXFxcIiBcXFwiJWdcXFwiIFxcXCJ0LnUuXFxcIkAsXCIgdClcbiAgICAgIGYgY29uZi5wbG90UGVyaW9kXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwib3V0cHV0RmlsZU5hbWVcXFwiIFxcXCIlc1xcXCJALFwiKVxuICAgICAgZiBjb25mLm91dHB1dEZpbGVOYW1lXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlXG4gICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUlZGVmOiBcXFwidHJhY2VGaWxlTmFtZVxcXCIgXFxcIiVzXFxcIkAsXCIpXG4gICAgICBmIGNvbmYudHJhY2VGaWxlTmFtZVxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlJWRlZjogXFxcImRlbHRhQWN0aXZpdGllc0ZpbGVOYW1lXFxcIiBcXFwiJXNcXFwiQCxcIilcbiAgICAgIGYgY29uZi5kZWx0YUFjdGl2aXRpZXNGaWxlTmFtZVxuICBpblxuICBGb3JtYXQucHBfY2xvc2VfYm94IGYgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkaXZpZGVfZXhwcl9ieV9pbnQgZSBpID1cbiAgTG9jLmFubm90X3dpdGhfZHVtbXlcbiAgICAoQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgIChPcGVyYXRvci5ESVYsIGUsIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCAoTmJyLkkgaSkpKSlcblxudHlwZSAoJ2EsICdiKSBjb3JyZWN0ZWRfcmF0ZV9jb25zdCA9IHtcbiAgbnVtOiBOYnIudDtcbiAgZGVuOiBOYnIudDtcbiAgdmFyOiAoJ2EsICdiKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbjtcbn1cblxubGV0IHJlYyBzaW1wbGlmeSA/KHJvb3Rfb25seSA9IGZhbHNlKSBleHByID1cbiAgbWF0Y2ggZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MgLT5cbiAgICBsZXQgYSwgYiA9XG4gICAgICBpZiByb290X29ubHkgdGhlblxuICAgICAgICBhLCBiXG4gICAgICBlbHNlXG4gICAgICAgIHNpbXBsaWZ5IGEsIHNpbXBsaWZ5IGJcbiAgICBpblxuICAgIGxldCByb290X29ubHkgPSB0cnVlIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlNVTSAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLmFkZCBhIGIpLCBsb2NcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBfIHdoZW4gTmJyLmlzX3plcm8gYSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc196ZXJvIGIgLT4gYVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKSAtPlxuICAgICAgICBBbGdfZXhwci5DT05TVCAoTmJyLnN1YiBhIGIpLCBsb2NcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX3plcm8gYiAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgKE5ici5tdWx0IGEgYiksIGxvY1xuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYScsIF8pLCBfIHdoZW4gTmJyLmlzX2VxdWFsIGEnIE5ici56ZXJvIC0+IGFcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGInLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiJyBOYnIuemVybyAtPiBiXG4gICAgICB8IChBbGdfZXhwci5DT05TVCBhLCBfKSwgXyB3aGVuIE5ici5pc19lcXVhbCBhIE5ici5vbmUgLT4gYlxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKCAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCksXG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBjLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykpLCBfICkgKVxuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCBjKSwgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgYywgKEFsZ19leHByLkNPTlNUIGIsIF8pKSwgXyApLFxuICAgICAgICAgIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSApIC0+XG4gICAgICAgICgqIGEqKGIqYykgLT4gKGEqYikqYyBpZiBhICYgYiBhcmUgY29uc3RhbnQgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIChOYnIubXVsdCBhIGIpLCBsb2NfY3N0KSwgYyksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCAoQWxnX2V4cHIuQ09OU1QgYiwgXyksIGMpLCBfKSApXG4gICAgICB8ICggKEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCBjKSwgXyksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGEsIGxvY19jc3QpICkgLT5cbiAgICAgICAgKCogYSooYi9jKSAtPiAoYSpiKS9jIGlmIGEgJiBiIGFyZSBjb25zdGFudCAqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgIChPcGVyYXRvci5ESVYsIChBbGdfZXhwci5DT05TVCAoTmJyLm11bHQgYSBiKSwgbG9jX2NzdCksIGMpLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBiLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLCBfKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYSwgbG9jX2NzdCkgKVxuICAgICAgfCAoIChBbGdfZXhwci5DT05TVCBhLCBsb2NfY3N0KSxcbiAgICAgICAgICAoQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBiLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLCBfKSApXG4gICAgICAgIHdoZW4gKG5vdCAoTmJyLmlzX3plcm8gYykpICYmIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogYSooYi9jKSAtPiAoKGEvYykqYikgaWYgYSAmIGMgYXJlIGNvbnN0YW50ICBhbmQgY3xhICopXG4gICAgICAgIHNpbXBsaWZ5IH5yb290X29ubHlcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKCBPcGVyYXRvci5NVUxULFxuICAgICAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCAoTmJyLmludGVybmFsX2RpdiBhIGMpLCBsb2NfY3N0KSxcbiAgICAgICAgICAgICAgICBiICksXG4gICAgICAgICAgICBsb2MgKVxuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgICAoICggT3BlcmF0b3IuRElWIHwgT3BlcmF0b3IuTVVMVCB8IE9wZXJhdG9yLlNVTSB8IE9wZXJhdG9yLk1JTlVTXG4gICAgICAgICAgICAgICAgICB8IE9wZXJhdG9yLlBPVyB8IE9wZXJhdG9yLk1PRFVMTyB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWFxuICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgXyxcbiAgICAgICAgICAgICAgICAgIF8gKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICAgIF8gKSApIC0+XG4gICAgICAgIEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IF8sIChBbGdfZXhwci5DT05TVCBiLCBfKSB3aGVuIE5ici5pc19lcXVhbCBiIE5ici5vbmUgLT4gYVxuICAgICAgfCAoQWxnX2V4cHIuQ09OU1QgYSwgXyksIChBbGdfZXhwci5DT05TVCBiLCBfKVxuICAgICAgICB3aGVuIChub3QgKE5ici5pc196ZXJvIGIpKSAmJiBOYnIuaXNfemVybyAoTmJyLnJlbSBhIGIpIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGEgYiksIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuTVVMVCwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCBiKSxcbiAgICAgICAgICAgIGxvY19iaW4gKSxcbiAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgYywgXykgKVxuICAgICAgICB3aGVuIE5ici5pc196ZXJvIChOYnIucmVtIGEgYykgLT5cbiAgICAgICAgKCogKGEqYi9jKSAmIGN8YSAtPiAoKGMvYSkqYikqKVxuICAgICAgICBzaW1wbGlmeSB+cm9vdF9vbmx5XG4gICAgICAgICAgKCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICggT3BlcmF0b3IuTVVMVCxcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5pbnRlcm5hbF9kaXYgYyBhKSwgbG9jX2JpbiksXG4gICAgICAgICAgICAgICAgYiApLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoIEFsZ19leHByLkJJTl9BTEdfT1AgKE9wZXJhdG9yLk1VTFQsIGIsIChBbGdfZXhwci5DT05TVCBhLCBfKSksXG4gICAgICAgICAgICBsb2NfYmluICksXG4gICAgICAgICAgKEFsZ19leHByLkNPTlNUIGMsIF8pIClcbiAgICAgICAgd2hlbiBOYnIuaXNfemVybyAoTmJyLnJlbSBhIGMpIC0+XG4gICAgICAgICgqIChiKmEvYykgJiBjfGEgLT4gKChjL2EpKmIpKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoIE9wZXJhdG9yLk1VTFQsXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLkNPTlNUIChOYnIuaW50ZXJuYWxfZGl2IGMgYSksIGxvY19iaW4pLFxuICAgICAgICAgICAgICAgIGIgKSxcbiAgICAgICAgICAgIGxvYyApXG4gICAgICB8ICggYSxcbiAgICAgICAgICAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgICAgICAgKE9wZXJhdG9yLkRJViwgKEFsZ19leHByLkNPTlNUIGIsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYywgXykpLFxuICAgICAgICAgICAgbG9jZGl2ICkgKSAtPlxuICAgICAgICAoKiAoYS9iL2MpIC0+IGEvKGIqYykgKilcbiAgICAgICAgc2ltcGxpZnkgfnJvb3Rfb25seVxuICAgICAgICAgICggQWxnX2V4cHIuQklOX0FMR19PUFxuICAgICAgICAgICAgICAoT3BlcmF0b3IuRElWLCBhLCBBbGdfZXhwci4oQ09OU1QgKE5ici5tdWx0IGIgYyksIGxvY2RpdikpLFxuICAgICAgICAgICAgbG9jIClcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICAgICAgICAgKCAoIE9wZXJhdG9yLkRJViB8IE9wZXJhdG9yLk1VTFQgfCBPcGVyYXRvci5TVU0gfCBPcGVyYXRvci5NSU5VU1xuICAgICAgICAgICAgICAgICAgfCBPcGVyYXRvci5QT1cgfCBPcGVyYXRvci5NT0RVTE8gfCBPcGVyYXRvci5NSU4gfCBPcGVyYXRvci5NQVhcbiAgICAgICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgICAgIF8sXG4gICAgICAgICAgICAgICAgICBfIClcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLlBPVyAtPlxuICAgICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgICAgfCBfLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgd2hlbiBOYnIuaXNfZXF1YWwgYiBOYnIub25lIC0+IGFcbiAgICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXylcbiAgICAgICAgd2hlbiBOYnIuaXNfc21hbGxlciBhIChOYnIuSSAxMSlcbiAgICAgICAgICAgICAmJiBOYnIuaXNfZ3JlYXRlciBiIE5ici56ZXJvXG4gICAgICAgICAgICAgJiYgTmJyLmlzX3NtYWxsZXIgYiAoTmJyLkkgMTEpIC0+XG4gICAgICAgIEFsZ19leHByLkNPTlNUIChOYnIucG93IGEgYiksIGxvY1xuICAgICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApLFxuICAgICAgICAgICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpLCBsb2MpXG4gICAgfCBPcGVyYXRvci5NT0RVTE8gLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgXywgKEFsZ19leHByLkNPTlNUIGIsIF8pIHdoZW4gTmJyLmlzX2VxdWFsIGIgTmJyLm9uZSAtPiBhXG4gICAgICB8ICggKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgICB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWCAtPiBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYiksIGxvYylcbiAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jIC0+XG4gICAgbGV0IGEgPSBzaW1wbGlmeSBhIGluXG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgICAgKG1hdGNoIGEgd2l0aFxuICAgICAgfCBBbGdfZXhwci5DT05TVCBhLCBfIC0+IEFsZ19leHByLkNPTlNUIChOYnIubmVnIGEpLCBsb2NcbiAgICAgIHwgKCAoIEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgICB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICBfICkgLT5cbiAgICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgICB8IE9wZXJhdG9yLkNPU0lOVVMgfCBPcGVyYXRvci5FWFAgLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgIHwgQWxnX2V4cHIuQ09OU1QgYSwgXyB3aGVuIE5ici5pc196ZXJvIGEgLT4gQWxnX2V4cHIuQ09OU1QgTmJyLm9uZSwgbG9jXG4gICAgICB8ICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICAgIF8gKSAtPlxuICAgICAgICBBbGdfZXhwci5VTl9BTEdfT1AgKG9wLCBhKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuU0lOVVMgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAgIChtYXRjaCBhIHdpdGhcbiAgICAgIHwgQWxnX2V4cHIuQ09OU1QgYSwgXyB3aGVuIE5ici5pc19lcXVhbCBhIE5ici5vbmUgLT5cbiAgICAgICAgQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8sIGxvY1xuICAgICAgfCAoICggQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgXyB8IEFsZ19leHByLlRPS0VOX0lEIF8gfCBBbGdfZXhwci5JRiBfXG4gICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgICBfICkgLT5cbiAgICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSksIGxvYylcbiAgICB8IE9wZXJhdG9yLlNRUlQgfCBPcGVyYXRvci5MT0cgfCBPcGVyYXRvci5JTlQgLT5cbiAgICAgIEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpLCBsb2MpXG4gIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgbWl4KSwgbG9jIC0+XG4gICAgbGV0IGV4cHIgPSBzaW1wbGlmeSBleHByIGluXG4gICAgKG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPiBBbGdfZXhwci5DT05TVCBOYnIuemVybywgbG9jXG4gICAgfCAoICggQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfIHwgQWxnX2V4cHIuVU5fQUxHX09QIF9cbiAgICAgICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyApLFxuICAgICAgICBfICkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIG1peCksIGxvYylcbiAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIGxvYyAtPlxuICAgIGxldCBleHByID0gc2ltcGxpZnkgZXhwciBpblxuICAgIChtYXRjaCBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkNPTlNUIF8sIF8gLT4gQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8sIGxvY1xuICAgIHwgKCAoIEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfXG4gICAgICAgIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF8gfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF9cbiAgICAgICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gKSxcbiAgICAgICAgXyApIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX1RPS0VOIChleHByLCB0b2tlbiksIGxvYylcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXywgX1xuICB8IEFsZ19leHByLkFMR19WQVIgXywgX1xuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8sIF9cbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBfLCBfXG4gIHwgQWxnX2V4cHIuQ09OU1QgXywgXyAtPlxuICAgIGV4cHJcbiAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubyksIGxvYyAtPlxuICAgIGxldCBjb25kLCB5ZXMsIG5vID0gc2ltcGxpZnlfYm9vbCBjb25kLCBzaW1wbGlmeSB5ZXMsIHNpbXBsaWZ5IG5vIGluXG4gICAgKG1hdGNoIGNvbmQgd2l0aFxuICAgIHwgQWxnX2V4cHIuVFJVRSwgXyAtPiB5ZXNcbiAgICB8IEFsZ19leHByLkZBTFNFLCBfIC0+IG5vXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSwgX1xuICAgIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pLCBfXG4gICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKSwgXyAtPlxuICAgICAgQWxnX2V4cHIuSUYgKGNvbmQsIHllcywgbm8pLCBsb2MpXG5cbmFuZCBzaW1wbGlmeV9ib29sIGV4cHJfYm9vbCA9XG4gIG1hdGNoIGV4cHJfYm9vbCB3aXRoXG4gIHwgQWxnX2V4cHIuVFJVRSwgXyB8IEFsZ19leHByLkZBTFNFLCBfIC0+IGV4cHJfYm9vbFxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSwgbG9jIC0+XG4gICAgKG1hdGNoIHNpbXBsaWZ5X2Jvb2wgYSB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFLCBfIC0+IEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICB8IEFsZ19leHByLkZBTFNFLCBfIC0+IEFsZ19leHByLlRSVUUsIGxvY1xuICAgIHwgKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXyksIF9cbiAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXyksIF9cbiAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXyksIF8gKSBhcyBhJyAtPlxuICAgICAgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEnKSwgbG9jKVxuICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYSwgYiksIGxvYyAtPlxuICAgIGxldCBhLCBiID0gc2ltcGxpZnlfYm9vbCBhLCBzaW1wbGlmeV9ib29sIGIgaW5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuQU5EIC0+XG4gICAgICAobWF0Y2ggYSwgYiB3aXRoXG4gICAgICB8IChBbGdfZXhwci5UUlVFLCBfKSwgXyAtPiBiXG4gICAgICB8IChBbGdfZXhwci5GQUxTRSwgXyksIF8gLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuVFJVRSwgXykgLT4gYVxuICAgICAgfCBfLCAoQWxnX2V4cHIuRkFMU0UsIF8pIC0+IGJcbiAgICAgIHwgKCAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICksXG4gICAgICAgICAgKCAoIEFsZ19leHByLkJJTl9CT09MX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCBfLCBfKVxuICAgICAgICAgICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCBfKSApLFxuICAgICAgICAgICAgXyApICkgLT5cbiAgICAgICAgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCBhLCBiKSwgbG9jKVxuICAgIHwgT3BlcmF0b3IuT1IgLT5cbiAgICAgIChtYXRjaCBhLCBiIHdpdGhcbiAgICAgIHwgKEFsZ19leHByLlRSVUUsIF8pLCBfIC0+IGFcbiAgICAgIHwgKEFsZ19leHByLkZBTFNFLCBfKSwgXyAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5UUlVFLCBfKSAtPiBiXG4gICAgICB8IF8sIChBbGdfZXhwci5GQUxTRSwgXykgLT4gYVxuICAgICAgfCAoICggKCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuQ09NUEFSRV9PUCAoXywgXywgXylcbiAgICAgICAgICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAoXywgXykgKSxcbiAgICAgICAgICAgIF8gKSxcbiAgICAgICAgICAoICggQWxnX2V4cHIuQklOX0JPT0xfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKF8sIF8sIF8pXG4gICAgICAgICAgICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKF8sIF8pICksXG4gICAgICAgICAgICBfICkgKSAtPlxuICAgICAgICBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBsb2MpKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgbG9jIC0+XG4gICAgbGV0IGEsIGIgPSBzaW1wbGlmeSBhLCBzaW1wbGlmeSBiIGluXG4gICAgKG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgKEFsZ19leHByLkNPTlNUIGEsIF8pLCAoQWxnX2V4cHIuQ09OU1QgYiwgXykgLT5cbiAgICAgIChtYXRjaCBvcCB3aXRoXG4gICAgICB8IE9wZXJhdG9yLkdSRUFURVIgLT5cbiAgICAgICAgaWYgTmJyLmlzX2dyZWF0ZXIgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgIHwgT3BlcmF0b3IuU01BTExFUiAtPlxuICAgICAgICBpZiBOYnIuaXNfc21hbGxlciBhIGIgdGhlblxuICAgICAgICAgIEFsZ19leHByLlRSVUUsIGxvY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgQWxnX2V4cHIuRkFMU0UsIGxvY1xuICAgICAgfCBPcGVyYXRvci5FUVVBTCAtPlxuICAgICAgICBpZiBOYnIuaXNfZXF1YWwgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2NcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEFsZ19leHByLkZBTFNFLCBsb2NcbiAgICAgIHwgT3BlcmF0b3IuRElGRiAtPlxuICAgICAgICBpZiBOYnIuaXNfZXF1YWwgYSBiIHRoZW5cbiAgICAgICAgICBBbGdfZXhwci5GQUxTRSwgbG9jXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBBbGdfZXhwci5UUlVFLCBsb2MpXG4gICAgfCAoICggKCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuQklOX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgXyB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfXG4gICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLklGIF9cbiAgICAgICAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyApLFxuICAgICAgICAgIF8gKSxcbiAgICAgICAgKCAoIEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5BTEdfVkFSIF8gfCBBbGdfZXhwci5CSU5fQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLlVOX0FMR19PUCBfIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIF9cbiAgICAgICAgICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuSUYgX1xuICAgICAgICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiBfIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSBfICksXG4gICAgICAgICAgXyApICkgLT5cbiAgICAgIEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgbG9jKVxuXG5sZXQgc2ltcGxpZnkgZXhwciA9XG4gIGxldCByb290X29ubHkgPSBmYWxzZSBpblxuICBzaW1wbGlmeSB+cm9vdF9vbmx5IGV4cHJcblxubGV0IHJlYyBjbGVhbiBleHByID1cbiAgbGV0IGV4cHIgPSBmc3QgZXhwciBpblxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgYSwgYikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGNsZWFuIGEsIGNsZWFuIGIpKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlVOX0FMR19PUCAob3AsIGNsZWFuIGEpKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKGV4cHIsIGR0KSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5ESUZGX1RPS0VOIChjbGVhbiBleHByLCBkdCkpXG4gIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgZHQpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGNsZWFuIGV4cHIsIGR0KSlcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF9cbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBfIHwgQWxnX2V4cHIuQ09OU1QgXyAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IGV4cHJcbiAgfCBBbGdfZXhwci5JRiAoY29uZCwgeWVzLCBubykgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuSUYgKGNsZWFuX2Jvb2wgY29uZCwgY2xlYW4geWVzLCBjbGVhbiBubykpXG5cbmFuZCBjbGVhbl9ib29sIGV4cHJfYm9vbCA9XG4gIGxldCBleHByID0gZnN0IGV4cHJfYm9vbCBpblxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4gTG9jLmFubm90X3dpdGhfZHVtbXkgZXhwclxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5VTl9CT09MX09QIChvcCwgY2xlYW5fYm9vbCBhKSlcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgY2xlYW5fYm9vbCBhLCBjbGVhbl9ib29sIGIpKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSAtPlxuICAgIExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT01QQVJFX09QIChvcCwgY2xlYW4gYSwgY2xlYW4gYikpXG5cbmxldCByZWMgZ2V0X2NvcnJlY3RlZF9yYXRlIGUgPVxuICBtYXRjaCBlIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSwgZSksIF9cbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NVUxULCBlLCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlIC0+XG4gICAgICBTb21lIHsgY29ycmVjdGVkX3JhdGUgd2l0aCBudW0gPSBOYnIubXVsdCBjc3QgY29ycmVjdGVkX3JhdGUubnVtIH0pXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuRElWLCBlLCAoQWxnX2V4cHIuQ09OU1QgY3N0LCBfKSksIF8gLT5cbiAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlIC0+XG4gICAgICBTb21lIHsgY29ycmVjdGVkX3JhdGUgd2l0aCBkZW4gPSBOYnIubXVsdCBjc3QgY29ycmVjdGVkX3JhdGUuZGVuIH0pXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoT3BlcmF0b3IuU1VNLCBlMSwgZTIpLCBfIC0+XG4gICAgKG1hdGNoIGdldF9jb3JyZWN0ZWRfcmF0ZSBlMSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgY29ycmVjdGVkX3JhdGUxIC0+XG4gICAgICAobWF0Y2ggZ2V0X2NvcnJlY3RlZF9yYXRlIGUyIHdpdGhcbiAgICAgIHwgU29tZSBjb3JyZWN0ZWRfcmF0ZTJcbiAgICAgICAgd2hlbiBjb21wYXJlIGNvcnJlY3RlZF9yYXRlMS52YXIgY29ycmVjdGVkX3JhdGUyLnZhciA9IDBcbiAgICAgICAgICAgICAmJiBOYnIuaXNfZXF1YWwgY29ycmVjdGVkX3JhdGUxLmRlbiBjb3JyZWN0ZWRfcmF0ZTIuZGVuIC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb3JyZWN0ZWRfcmF0ZTEgd2l0aFxuICAgICAgICAgICAgbnVtID0gTmJyLmFkZCBjb3JyZWN0ZWRfcmF0ZTEubnVtIGNvcnJlY3RlZF9yYXRlMi5udW07XG4gICAgICAgICAgfVxuICAgICAgfCBTb21lIGNvcnJlY3RlZF9yYXRlMlxuICAgICAgICB3aGVuIGNvbXBhcmUgY29ycmVjdGVkX3JhdGUxLnZhciBjb3JyZWN0ZWRfcmF0ZTIudmFyID0gMCAtPlxuICAgICAgICBTb21lXG4gICAgICAgICAge1xuICAgICAgICAgICAgY29ycmVjdGVkX3JhdGUxIHdpdGhcbiAgICAgICAgICAgIG51bSA9XG4gICAgICAgICAgICAgIE5ici5hZGRcbiAgICAgICAgICAgICAgICAoTmJyLm11bHQgY29ycmVjdGVkX3JhdGUyLmRlbiBjb3JyZWN0ZWRfcmF0ZTEubnVtKVxuICAgICAgICAgICAgICAgIChOYnIubXVsdCBjb3JyZWN0ZWRfcmF0ZTEuZGVuIGNvcnJlY3RlZF9yYXRlMi5udW0pO1xuICAgICAgICAgICAgZGVuID0gTmJyLm11bHQgY29ycmVjdGVkX3JhdGUxLmRlbiBjb3JyZWN0ZWRfcmF0ZTIuZGVuO1xuICAgICAgICAgIH1cbiAgICAgIHwgTm9uZSB8IFNvbWUgXyAtPiBOb25lKSlcbiAgfCAoIEFsZ19leHByLkJJTl9BTEdfT1BcbiAgICAgICAgKCAoIE9wZXJhdG9yLk1VTFQgfCBPcGVyYXRvci5ESVYgfCBPcGVyYXRvci5NSU5VUyB8IE9wZXJhdG9yLlBPV1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9EVUxPIHwgT3BlcmF0b3IuTUFYIHwgT3BlcmF0b3IuTUlOICksXG4gICAgICAgICAgXyxcbiAgICAgICAgICBfICksXG4gICAgICBfIClcbiAgfCAoICggQWxnX2V4cHIuVU5fQUxHX09QIF8gfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgX1xuICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gX1xuICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5JRiBfICksXG4gICAgICBfICkgLT5cbiAgICBOb25lXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBfLCBfIC0+IFNvbWUgeyB2YXIgPSBTb21lIGU7IG51bSA9IE5ici5vbmU7IGRlbiA9IE5ici5vbmUgfVxuICB8IEFsZ19leHByLkNPTlNUIGNzdCwgXyAtPiBTb21lIHsgdmFyID0gTm9uZTsgbnVtID0gY3N0OyBkZW4gPSBOYnIub25lIH1cblxubGV0IGdldF9jb3JyZWN0ZWRfcmF0ZSBlID0gZ2V0X2NvcnJlY3RlZF9yYXRlIChjbGVhbiBlKVxuXG5sZXQgcHJpbnQgcHJfdmFyIGYgY29ycmVjdGVkX3JhdGVfY29uc3QgPVxuICBtYXRjaCBjb3JyZWN0ZWRfcmF0ZV9jb25zdCB3aXRoXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiTm9uZVwiXG4gIHwgU29tZSBhIC0+XG4gICAgKG1hdGNoIGEudmFyIHdpdGhcbiAgICB8IFNvbWUgXyAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiglYS8lYSkuJWFcIiBOYnIucHJpbnQgYS5udW0gTmJyLnByaW50IGEuZGVuIHByX3ZhciBhLnZhclxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiKCVhLyVhKVwiIE5ici5wcmludCBhLm51bSBOYnIucHJpbnQgYS5kZW4pXG5cbmxldCBuZWNlc3NhcmlseV9lcXVhbCBhX29wdCBiX29wdCA9XG4gIG1hdGNoIGFfb3B0LCBiX29wdCB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gZmFsc2VcbiAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgIE9wdGlvbl91dGlsLmVxdWFsIEFsZ19leHByLmVxdWFsIGEudmFyIGIudmFyXG4gICAgJiYgTmJyLmlzX2VxdWFsIChOYnIubXVsdCBhLm51bSBiLmRlbikgKE5ici5tdWx0IGEuZGVuIGIubnVtKVxuXG5sZXQgZGVwIGVtcHR5IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52ID90aW1lX3ZhciBleHByID1cbiAgbGV0IHJlYyBhdXggYWRkX21peHR1cmUgYWRkX3Rva2VuIHVuaW9uIGRlcF9lbnYgZXhwciBhY2N1ID1cbiAgICBtYXRjaCBmc3QgZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChfLCBlMSwgZTIpIHwgQWxnX2V4cHIuSUYgKF8sIGUxLCBlMikgLT5cbiAgICAgIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBlMVxuICAgICAgICAoYXV4IGFkZF9taXh0dXJlIGFkZF90b2tlbiB1bmlvbiBkZXBfZW52IGUyIGFjY3UpXG4gICAgfCBBbGdfZXhwci5VTl9BTEdfT1AgKF8sIGUpXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOIChlLCBfKVxuICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZSwgXykgLT5cbiAgICAgIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBlIGFjY3VcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUiAtPlxuICAgICAgKG1hdGNoIHRpbWVfdmFyIHdpdGhcbiAgICAgIHwgU29tZSBpZCAtPiBhZGRfbWl4dHVyZSBpZCBhY2N1XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAgICggXCJBIHZhcmlhYmxlIGZvciB0aW1lIHNoYWxsIGJlIHByb3ZpZGVkIHRvIGFuYWx5c2UgdGhlIFxcXG4gICAgICAgICAgICAgICAgZGVwZW5kZW5jZXMgaW4gYSB0aW1lLWRlcGVuZGVudCBleHByZXNzaW9uXCIsXG4gICAgICAgICAgICAgICBzbmQgZXhwciApKSlcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUFxuICAgICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUlxuICAgICAgICB8IE9wZXJhdG9yLlRNQVhfVkFSIHwgT3BlcmF0b3IuRU1BWF9WQVIgKSAtPlxuICAgICAgYWNjdVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBpZCAtPiB1bmlvbiAoZGVwX2VudiBpZCkgYWNjdVxuICAgIHwgQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgbWl4IC0+IGFkZF9taXh0dXJlIG1peCBhY2N1XG4gICAgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBhZGRfdG9rZW4gaWQgYWNjdVxuICAgIHwgQWxnX2V4cHIuQ09OU1QgXyAtPiBhY2N1XG4gIGluXG4gIGF1eCBhZGRfbWl4dHVyZSBhZGRfdG9rZW4gdW5pb24gZGVwX2VudiBleHByIGVtcHR5XG5cbmxldCByZWMgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHIgPVxuICBtYXRjaCBmc3QgZXhwciB3aXRoXG4gIHwgQWxnX2V4cHIuSUYgKGIsIGUxLCBlMikgLT5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgKEFsZ19leHByLklGXG4gICAgICAgICAoIGIsXG4gICAgICAgICAgIGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSxcbiAgICAgICAgICAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyICkpXG4gIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGUxLCBlMikgLT5cbiAgICAobWF0Y2ggb3Agd2l0aFxuICAgIHwgT3BlcmF0b3IuU1VNIC0+XG4gICAgICBBbGdfZXhwci5hZGRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSlcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMilcbiAgICB8IE9wZXJhdG9yLk1VTFQgLT5cbiAgICAgIEFsZ19leHByLmFkZFxuICAgICAgICAoQWxnX2V4cHIubXVsdCBlMSAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKSlcbiAgICAgICAgKEFsZ19leHByLm11bHQgZTIgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSkpXG4gICAgfCBPcGVyYXRvci5NSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubWludXNcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMSlcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMilcbiAgICB8IE9wZXJhdG9yLk1JTiB8IE9wZXJhdG9yLk1BWCAtPiBBbGdfZXhwci5pbnQgMFxuICAgIHwgT3BlcmF0b3IuTU9EVUxPIC0+IGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlMVxuICAgIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgICBBbGdfZXhwci5kaXZcbiAgICAgICAgKEFsZ19leHByLm1pbnVzXG4gICAgICAgICAgIChBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpIGUyKVxuICAgICAgICAgICAoQWxnX2V4cHIubXVsdCAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKSBlMSkpXG4gICAgICAgIChBbGdfZXhwci5wb3cgZTIgKEFsZ19leHByLmludCAyKSlcbiAgICB8IE9wZXJhdG9yLlBPVyAtPlxuICAgICAgKCogKHVedikqKHYnKmxuKHUpK3YqdScvdSkgKilcbiAgICAgIEFsZ19leHByLm11bHQgKEFsZ19leHByLnBvdyBlMSBlMilcbiAgICAgICAgKEFsZ19leHByLmFkZFxuICAgICAgICAgICAoQWxnX2V4cHIubXVsdFxuICAgICAgICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUyKVxuICAgICAgICAgICAgICAoQWxnX2V4cHIubG4gZTEpKVxuICAgICAgICAgICAoQWxnX2V4cHIuZGl2XG4gICAgICAgICAgICAgIChBbGdfZXhwci5tdWx0IGUyIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZTEpKVxuICAgICAgICAgICAgICBlMSkpKVxuICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIGUpIC0+XG4gICAgKG1hdGNoIG9wIHdpdGhcbiAgICB8IE9wZXJhdG9yLlVNSU5VUyAtPlxuICAgICAgQWxnX2V4cHIudW1pbnVzIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICB8IE9wZXJhdG9yLkNPU0lOVVMgLT5cbiAgICAgIEFsZ19leHByLm11bHRcbiAgICAgICAgKGRpZmZfZ2VuIGZfbWl4IGZfdG9rZW4gZl9zeW1iIGZfdGltZSBlKVxuICAgICAgICAoQWxnX2V4cHIudW1pbnVzIChBbGdfZXhwci5zaW4gZSkpXG4gICAgfCBPcGVyYXRvci5TSU5VUyAtPlxuICAgICAgQWxnX2V4cHIubXVsdCAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpIChBbGdfZXhwci5jb3MgZSlcbiAgICB8IE9wZXJhdG9yLkxPRyAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci5kaXYgKEFsZ19leHByLmludCAxKSBlKVxuICAgIHwgT3BlcmF0b3IuU1FSVCAtPlxuICAgICAgQWxnX2V4cHIubXVsdFxuICAgICAgICAoZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGUpXG4gICAgICAgIChBbGdfZXhwci5kaXYgKEFsZ19leHByLmludCAoLTEpKSAoQWxnX2V4cHIuc3FydCBlKSlcbiAgICB8IE9wZXJhdG9yLkVYUCAtPiBBbGdfZXhwci5tdWx0IChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSkgZVxuICAgIHwgT3BlcmF0b3IuVEFOIC0+XG4gICAgICBBbGdfZXhwci5tdWx0XG4gICAgICAgIChkaWZmX2dlbiBmX21peCBmX3Rva2VuIGZfc3ltYiBmX3RpbWUgZSlcbiAgICAgICAgKEFsZ19leHByLmFkZCAoQWxnX2V4cHIuaW50IDEpIChBbGdfZXhwci5wb3cgZSAoQWxnX2V4cHIuaW50IDIpKSlcbiAgICB8IE9wZXJhdG9yLklOVCAtPiBBbGdfZXhwci5pbnQgMClcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgT3BlcmF0b3IuVElNRV9WQVIgLT4gZl90aW1lICgpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QXG4gICAgICAoIE9wZXJhdG9yLkNQVVRJTUUgfCBPcGVyYXRvci5FVkVOVF9WQVIgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUlxuICAgICAgfCBPcGVyYXRvci5UTUFYX1ZBUiB8IE9wZXJhdG9yLkVNQVhfVkFSICkgLT5cbiAgICBBbGdfZXhwci5pbnQgMFxuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIG1peCAtPiBmX21peCBtaXhcbiAgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBmX3Rva2VuIGlkXG4gIHwgQWxnX2V4cHIuQ09OU1QgXyAtPiBBbGdfZXhwci5pbnQgMFxuICB8IEFsZ19leHByLkFMR19WQVIgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgX1xuICAgIC0+XG4gICAgZl9zeW1iIGV4cHJcblxubGV0IGRpZmZfdG9rZW4gZXhwciB0b2tlbiA9XG4gIGxldCBmX21peCBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgbGV0IGZfdG9rZW4gYSA9XG4gICAgaWYgYSA9IHRva2VuIHRoZW5cbiAgICAgIEFsZ19leHByLmludCAxXG4gICAgZWxzZVxuICAgICAgQWxnX2V4cHIuaW50IDBcbiAgaW5cbiAgbGV0IGZfc3ltYiBleHByID0gQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgdG9rZW4pLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGZfdGltZSBfID0gQWxnX2V4cHIuaW50IDAgaW5cbiAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHJcblxubGV0IGRpZmZfbWl4dHVyZSA/dGltZV92YXIgZXhwciBtaXh0dXJlID1cbiAgbGV0IGZfbWl4IGEgPVxuICAgIGlmIGEgPSBtaXh0dXJlIHRoZW5cbiAgICAgIEFsZ19leHByLmludCAxXG4gICAgZWxzZVxuICAgICAgQWxnX2V4cHIuaW50IDBcbiAgaW5cbiAgbGV0IGZfdG9rZW4gXyA9IEFsZ19leHByLmludCAwIGluXG4gIGxldCBmX3N5bWIgZXhwciA9IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgKGV4cHIsIG1peHR1cmUpLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGZfdGltZSAoKSA9XG4gICAgbWF0Y2ggdGltZV92YXIgd2l0aFxuICAgIHwgU29tZSBiIHdoZW4gbWl4dHVyZSA9IGIgLT4gQWxnX2V4cHIuaW50IDFcbiAgICB8IFNvbWUgXyAtPiBBbGdfZXhwci5pbnQgMFxuICAgIHwgTm9uZSAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkEgdGltZS1kZXBlbmRlbnQgZXhwcmVzc2lvbiBjYW5ub3QgYmUgZGlmZmVyZW50aWF0ZWQgd2l0aG91dCBcXFxuICAgICAgICAgICAgICBzcGVjaWZ5aW5nIGEgdmFyaWFibGUgZm9yIHRpbWUgcHJvZ3Jlc3NcIixcbiAgICAgICAgICAgICBMb2MuZHVtbXkgKSlcbiAgaW5cbiAgZGlmZl9nZW4gZl9taXggZl90b2tlbiBmX3N5bWIgZl90aW1lIGV4cHJcblxubGV0IGZvbGRfb3Zlcl9taXhfaW5fbGlzdCBmIG1peCBhY2N1ID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjY3UgYXJyYXlfaWQgLT5cbiAgICAgIEFycmF5LmZvbGRfbGVmdCAoZnVuIGFjY3UgcGlkIC0+IGYgcGlkIGFjY3UpIGFjY3UgYXJyYXlfaWQpXG4gICAgYWNjdSBtaXhcblxubGV0IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3UgPVxuICBsZXQgbCA9IEFsZ19leHByLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHMgZXhwciBpblxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjY3UgbWl4IC0+IGZvbGRfb3Zlcl9taXhfaW5fbGlzdCBmIG1peCBhY2N1KSBhY2N1IGxcblxubGV0IGZvbGRfb3Zlcl9taXh0dXJlc19pbl9hbGdfZXhwcnMgZiBtb2RlbCBhY2N1ID1cbiAgbGV0IGFsZ3NfZXhwciA9IE1vZGVsLmdldF9hbGdzIG1vZGVsIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9IE1vZGVsLmdldF9vYnMgbW9kZWwgaW5cbiAgKCphbGdzKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IChfLCBtaXgpIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBtaXggYWNjdSlcbiAgICAgIGFjY3UgYWxnc19leHByXG4gIGluXG4gICgqb2JzZXJ2YXRpb25zKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IG1peCAtPiBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgbWl4IGFjY3UpXG4gICAgICBhY2N1IG9ic2VydmFibGVzXG4gIGluXG4gICgqcnVsZXMqKVxuICBsZXQgcnVsZXMgPSBNb2RlbC5nZXRfcnVsZXMgbW9kZWwgaW5cbiAgKCpyYXRlKilcbiAgbGV0IGFjY3UgPVxuICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2N1IGVsZW1lbnRhcnlfcnVsZSAtPlxuICAgICAgICBsZXQgcmF0ZSA9IGVsZW1lbnRhcnlfcnVsZS5QcmltaXRpdmVzLnJhdGUgaW5cbiAgICAgICAgbGV0IGFjY3UgPSBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgcmF0ZSBhY2N1IGluXG4gICAgICAgICgqdW5hcnlfcmF0ZSopXG4gICAgICAgIGxldCB1bmFyeV9yYXRlID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSBpblxuICAgICAgICBsZXQgYWNjdSA9XG4gICAgICAgICAgbWF0Y2ggdW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFjY3VcbiAgICAgICAgICB8IFNvbWUgKGV4cHIsIF8pIC0+IGZvbGRfb3Zlcl9taXhfaW5fYWxnX2V4cHIgZiBleHByIGFjY3VcbiAgICAgICAgaW5cbiAgICAgICAgKCpkZWx0YSB0b2tlbnMqKVxuICAgICAgICBsZXQgZGVsdGFfdG9rZW5zID0gZWxlbWVudGFyeV9ydWxlLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIGluXG4gICAgICAgIGxldCBhY2N1ID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhY2N1IChleHByLCBfKSAtPiBmb2xkX292ZXJfbWl4X2luX2FsZ19leHByIGYgZXhwciBhY2N1KVxuICAgICAgICAgICAgYWNjdSBkZWx0YV90b2tlbnNcbiAgICAgICAgaW5cbiAgICAgICAgYWNjdSlcbiAgICAgIGFjY3UgcnVsZXNcbiAgaW5cbiAgYWNjdVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIFNpbXVsYXRpb25faW5mbyA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSB7XG4gICAgc3RvcnlfaWQ6IGludDtcbiAgICBzdG9yeV90aW1lOiBmbG9hdDtcbiAgICBzdG9yeV9ldmVudDogaW50O1xuICAgIHByb2ZpbGluZ19pbmZvOiAnYTtcbiAgfVxuICAoKiB0eXBlIG9mIGRhdGEgdG8gYmUgZ2l2ZW4gd2l0aCBvYnNlcnZhYmxlcyBmb3Igc3RvcnkgY29tcHJlc3Npb25cbiAgICAgKHN1Y2ggYXMgZGF0ZSB3aGVuIHRoZSBvYnMgaXMgdHJpZ2dlcmVkKilcblxuICBsZXQgdXBkYXRlX3Byb2ZpbGluZ19pbmZvIGEgaW5mbyA9XG4gICAge1xuICAgICAgc3RvcnlfaWQgPSBpbmZvLnN0b3J5X2lkO1xuICAgICAgc3RvcnlfdGltZSA9IGluZm8uc3RvcnlfdGltZTtcbiAgICAgIHN0b3J5X2V2ZW50ID0gaW5mby5zdG9yeV9ldmVudDtcbiAgICAgIHByb2ZpbGluZ19pbmZvID0gYTtcbiAgICB9XG5cbiAgbGV0IGV2ZW50IGEgPSBhLnN0b3J5X2V2ZW50XG4gIGxldCBzdG9yeV9pZCBhID0gYS5zdG9yeV9pZFxuICBsZXQgY29tcGFyZV9ieV9zdG9yeV9pZCB4IHkgPSBNb2RzLmludF9jb21wYXJlIHguc3RvcnlfaWQgeS5zdG9yeV9pZFxuXG4gIGxldCBkdW1teSBhID1cbiAgICB7IHN0b3J5X2lkID0gMDsgc3RvcnlfdGltZSA9IDAuOyBzdG9yeV9ldmVudCA9IDA7IHByb2ZpbGluZ19pbmZvID0gYSB9XG5cbiAgbGV0IGpzb25fZGljdGlvbm5hcnkgPVxuICAgIFwiXFxcInNpbXVsYXRpb25faW5mb1xcXCI6e1xcXCJpZFxcXCI6MCxcXFwidGltZVxcXCI6MSxcXFwiZXZlbnRcXFwiOjIsXFxcInByb2ZpbGluZ1xcXCI6M31cIlxuXG4gIGxldCB0b19qc29uIGYgeCA9XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYEludCB4LnN0b3J5X2lkO1xuICAgICAgICBgRmxvYXQgeC5zdG9yeV90aW1lO1xuICAgICAgICBgSW50IHguc3RvcnlfZXZlbnQ7XG4gICAgICAgIGYgeC5wcm9maWxpbmdfaW5mbztcbiAgICAgIF1cblxuICBsZXQgb2ZfanNvbiBmID0gZnVuY3Rpb25cbiAgICB8IGBMaXN0IFsgYEludCBzdG9yeV9pZDsgYEZsb2F0IHN0b3J5X3RpbWU7IGBJbnQgc3RvcnlfZXZlbnQ7IGluZm8gXSAtPlxuICAgICAgeyBzdG9yeV9pZDsgc3RvcnlfdGltZTsgc3RvcnlfZXZlbnQ7IHByb2ZpbGluZ19pbmZvID0gZiBpbmZvIH1cbiAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgc2ltdWxhdGlvbl9pbmZvXCIsIHgpKVxuXG4gIGxldCB3cml0ZV9qc29uIGYgb2IgeCA9XG4gICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4LnN0b3J5X2lkKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvIHguc3RvcnlfdGltZSk7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8geC5zdG9yeV9ldmVudCk7XG4gICAgICAgIChmdW4gbyAtPiBmIG8geC5wcm9maWxpbmdfaW5mbyk7XG4gICAgICBdXG5cbiAgbGV0IHJlYWRfanNvbiBmIHN0IGIgPVxuICAgIEpzb25VdGlsLnJlYWRfdmFyaWFudCBZb2pzb24uQmFzaWMucmVhZF9pbnRcbiAgICAgIChmdW4gc3QgYiBzdG9yeV9pZCAtPlxuICAgICAgICBsZXQgc3RvcnlfdGltZSA9XG4gICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0b3J5X2V2ZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IHByb2ZpbGluZ19pbmZvID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gZiBzdCBiIGluXG4gICAgICAgIHsgc3RvcnlfaWQ7IHN0b3J5X3RpbWU7IHN0b3J5X2V2ZW50OyBwcm9maWxpbmdfaW5mbyB9KVxuICAgICAgc3QgYlxuZW5kXG5cbnR5cGUgZXZlbnRfa2luZCA9XG4gIHwgUlVMRSBvZiBpbnRcbiAgfCBJTklUIG9mIGludCBsaXN0ICgqIHRoZSBhZ2VudHMgKilcbiAgfCBQRVJUIG9mIHN0cmluZyAoKiB0aGUgcnVsZSAqKVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZCA/ZW52IGYgeCA9XG4gIG1hdGNoIGVudiB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIChtYXRjaCB4IHdpdGhcbiAgICB8IFJVTEUgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUlVMRSglaSlcIiBpXG4gICAgfCBJTklUIGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJJTklUKCVhKVwiIChQcC5saXN0IFBwLmNvbW1hIEZvcm1hdC5wcF9wcmludF9pbnQpIGxcbiAgICB8IFBFUlQgcyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUEVSVCglcylcIiBzKVxuICB8IFNvbWUgZW52IC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgUEVSVCBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBzXG4gICAgfCBSVUxFIHJfaWQgLT4gTW9kZWwucHJpbnRfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52IGYgcl9pZFxuICAgIHwgSU5JVCBzIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSW50cm8gQFs8aD4lYUBdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgICBzKVxuXG5sZXQgcHJpbnRfZXZlbnRfa2luZF9kb3RfYW5ub3QgZW52IGYgPSBmdW5jdGlvblxuICB8IFJVTEUgcl9pZCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVhXFxcIiwgc2hhcGU9JXMsIHN0eWxlPSVzLCBmaWxsY29sb3IgPSAlc11cIlxuICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudilcbiAgICAgIHJfaWQgXCJpbnZob3VzZVwiIFwiZmlsbGVkXCIgXCJsaWdodGJsdWVcIlxuICB8IElOSVQgcyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiW2xhYmVsPVxcXCJJbnRybyBAWzxoPiVhQF1cXFwiLCBzaGFwZT0lcywgc3R5bGU9JXMsIGZpbGxjb2xvcj1ncmVlbl1cIlxuICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgcyBcImhvdXNlXCIgXCJmaWxsZWRcIlxuICB8IFBFUlQgcyAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVzXFxcIiwgc2hhcGU9JXMsIHN0eWxlPSVzLCBmaWxsY29sb3IgPSAlc11cIiBzXG4gICAgICBcImludmhvdXNlXCIgXCJmaWxsZWRcIiBcImdyZWVuXCJcblxudHlwZSBzdGVwID1cbiAgfCBTdWJzIG9mIGludCAqIGludFxuICB8IFJ1bGUgb2ZcbiAgICAgIGludCAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5ldmVudCAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBQZXJ0IG9mXG4gICAgICBzdHJpbmdcbiAgICAgICogSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLmV2ZW50XG4gICAgICAqIHVuaXQgU2ltdWxhdGlvbl9pbmZvLnRcbiAgfCBJbml0IG9mIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdFxuICB8IE9icyBvZlxuICAgICAgc3RyaW5nXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3QgbGlzdFxuICAgICAgKiB1bml0IFNpbXVsYXRpb25faW5mby50XG4gIHwgRHVtbXkgb2Ygc3RyaW5nXG5cbnR5cGUgdCA9IHN0ZXAgbGlzdFxuXG5sZXQgc3Vic19zdGVwIGEgYiA9IFN1YnMgKGEsIGIpXG5sZXQgZHVtbXlfc3RlcCB4ID0gRHVtbXkgeFxubGV0IHByaW50X3N1YnMgX2YgKF9hLCBfYikgPSAoKVxuXG5sZXQgcHJpbnRfc2l0ZSA/ZW52IGYgKChhZ19pZCwgYWcpLCBzKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYV8laS4lYVwiIChNb2RlbC5wcmludF9hZ2VudCA/ZW52KSBhZyBhZ19pZFxuICAgIChtYXRjaCBlbnYgd2l0aFxuICAgIHwgU29tZSBlbnYgLT4gU2lnbmF0dXJlLnByaW50X3NpdGUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSBhZ1xuICAgIHwgTm9uZSAtPiBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgIHNcblxubGV0IHByaW50X2luaXQgfmNvbXBhY3QgP2VudiBsb2cgYWN0aW9ucyA9XG4gIGxldCBzaWdzID1cbiAgICBtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGVudiAtPiBTb21lIChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgaW5cbiAgaWYgY29tcGFjdCB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgbG9nIFwiSU5JVFwiXG4gIGVsc2VcbiAgICBGb3JtYXQuZnByaW50ZiBsb2cgXCIqKipAWzwxPklOSVQ6JWFAXSoqKlwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoSW5zdGFudGlhdGlvbi5wcmludF9jb25jcmV0ZV9hY3Rpb24gP3NpZ3MpKVxuICAgICAgYWN0aW9uc1xuXG5sZXQgcHJpbnRfc2lkZV9lZmZlY3RzID9lbnYgPVxuICBQcC5saXN0XG4gICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIiBcIilcbiAgICAoZnVuIGYgKHNpdGUsIHN0YXRlKSAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlNpZGVfZWZmZWN0cyglYSwlYSlcIiAocHJpbnRfc2l0ZSA/ZW52KSBzaXRlXG4gICAgICAgIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2JpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgP3NpZ3M6KE9wdGlvbl91dGlsLm1hcCBNb2RlbC5zaWduYXR1cmVzIGVudikpXG4gICAgICAgIHN0YXRlKVxuXG5sZXQgcHJpbnRfZXZlbnQgfmNvbXBhY3QgP2VudiBsb2cgKGV2X2tpbmQsIGUpID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBwcmludF9ldmVudF9raW5kID9lbnYgbG9nIGV2X2tpbmRcbiAgZWxzZVxuICAgIEZvcm1hdC5mcHJpbnRmIGxvZ1xuICAgICAgXCJAWyoqKlJlZmluZWQgZXZlbnQ6KioqQCwqIEthcHBhX3J1bGUgJWEgU3RvcnkgZW5jb2Rpbmc6JWElYSVhQF1cIlxuICAgICAgKHByaW50X2V2ZW50X2tpbmQgP2VudikgZXZfa2luZFxuICAgICAgKFBwLmxpc3QgUHAuZW1wdHlcbiAgICAgICAgIChQcC5saXN0IFBwLmVtcHR5IChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgP3NpZ3MpKSlcbiAgICAgIChlLkluc3RhbnRpYXRpb24udGVzdHMgQCBbIGUuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgXSlcbiAgICAgIChQcC5saXN0IFBwLmVtcHR5IChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiA/c2lncykpXG4gICAgICBlLkluc3RhbnRpYXRpb24uYWN0aW9ucyAocHJpbnRfc2lkZV9lZmZlY3RzID9lbnYpXG4gICAgICBlLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuXG5sZXQgcHJpbnRfb2JzIH5jb21wYWN0ID9lbnYgZiAoZXZfa2luZCwgdGVzdHMsIF8pID1cbiAgbGV0IHNpZ3MgPVxuICAgIG1hdGNoIGVudiB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgZW52IC0+IFNvbWUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KVxuICBpblxuICBpZiBjb21wYWN0IHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiT0JTICVzXCIgZXZfa2luZFxuICBlbHNlXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIioqKkBbPDE+T0JTICVzOiVhQF0qKipcIiBldl9raW5kXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZVxuICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCA/c2lncykpKVxuICAgICAgdGVzdHNcblxubGV0IHByaW50X3N0ZXAgPyhjb21wYWN0ID0gZmFsc2UpID9lbnYgZiA9IGZ1bmN0aW9uXG4gIHwgU3VicyAoYSwgYikgLT4gcHJpbnRfc3VicyBmIChhLCBiKVxuICB8IFJ1bGUgKHgsIHksIF96KSAtPiBwcmludF9ldmVudCB+Y29tcGFjdCA/ZW52IGYgKFJVTEUgeCwgeSlcbiAgfCBQZXJ0ICh4LCB5LCBfeikgLT4gcHJpbnRfZXZlbnQgfmNvbXBhY3QgP2VudiBmIChQRVJUIHgsIHkpXG4gIHwgSW5pdCBhIC0+IHByaW50X2luaXQgfmNvbXBhY3QgP2VudiBmIGFcbiAgfCBPYnMgKGEsIGIsIGMpIC0+IHByaW50X29icyB+Y29tcGFjdCA/ZW52IGYgKGEsIGIsIGMpXG4gIHwgRHVtbXkgXyAtPiAoKVxuXG5sZXQgZ2V0X3R5cGVzX2Zyb21faW5pdCBhID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGFjYyBhY3Rpb24gLT5cbiAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoXywgYXR5cGUpLCBfKSAtPiBhdHlwZSA6OiBhY2NcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgIC0+XG4gICAgICAgIGFjYylcbiAgICBbXSBhXG5cbmxldCBwcmludF9sYWJlbF9vZl9zdGVwID9lbnYgZiB4ID1cbiAgbWF0Y2ggZW52IHdpdGhcbiAgfCBOb25lIC0+XG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgU3VicyBfIC0+ICgpXG4gICAgfCBSdWxlICh4LCBfLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWlcIiB4XG4gICAgfCBQZXJ0ICh4LCBfLCBfKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXNcIiB4XG4gICAgfCBJbml0IGEgLT5cbiAgICAgIGxldCBsID0gZ2V0X3R5cGVzX2Zyb21faW5pdCBhIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSU5JVCglYSlcIiAoUHAubGlzdCBQcC5jb21tYSBGb3JtYXQucHBfcHJpbnRfaW50KSBsXG4gICAgfCBPYnMgKHgsIF8sIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIlc1wiIHhcbiAgICB8IER1bW15IF8gLT4gKCkpXG4gIHwgU29tZSBlbnYgLT5cbiAgICAobWF0Y2ggeCB3aXRoXG4gICAgfCBTdWJzIF8gLT4gKClcbiAgICB8IFJ1bGUgKHgsIF8sIF8pIC0+IE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZmFsc2UgfmVudiBmIHhcbiAgICB8IFBlcnQgKHgsIF8sIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgfCBJbml0IGEgLT5cbiAgICAgIGxldCBsID0gZ2V0X3R5cGVzX2Zyb21faW5pdCBhIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiSW50cm8gQFs8aD4lYUBdXCJcbiAgICAgICAgKFBwLmxpc3QgUHAuY29tbWEgKE1vZGVsLnByaW50X2FnZW50IH5lbnYpKVxuICAgICAgICBsXG4gICAgfCBPYnMgKHgsIF8sIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4XG4gICAgfCBEdW1teSBfIC0+ICgpKVxuXG5sZXQganNvbl9kaWN0aW9ubmFyeSA9XG4gIFwiXFxcInN0ZXBcXFwiOltcXFwiU3Vic1xcXCIsXFxcIlJ1bGVcXFwiLFxcXCJQZXJ0XFxcIixcXFwiSW5pdFxcXCIsXFxcIk9ic1xcXCIsXFxcIkR1bW15XFxcIl1cIlxuXG5sZXQgd3JpdGVfc3RlcCBvYiBzID1cbiAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2Ugb2JcbiAgICAobWF0Y2ggcyB3aXRoXG4gICAgfCBTdWJzIChhLCBiKSAtPlxuICAgICAgW1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIDApO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGEpO1xuICAgICAgICAoZnVuIG8gLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBvIGIpO1xuICAgICAgXVxuICAgIHwgUnVsZSAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAxKTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+IEluc3RhbnRpYXRpb24ud3JpdGVfZXZlbnQgQWdlbnQud3JpdGVfanNvbiBvIHkpO1xuICAgICAgICAoZnVuIG8gLT4gU2ltdWxhdGlvbl9pbmZvLndyaXRlX2pzb24gWW9qc29uLkJhc2ljLndyaXRlX251bGwgbyB6KTtcbiAgICAgIF1cbiAgICB8IFBlcnQgKHgsIHksIHopIC0+XG4gICAgICBbXG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gMik7XG4gICAgICAgIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG8geCk7XG4gICAgICAgIChmdW4gbyAtPiBJbnN0YW50aWF0aW9uLndyaXRlX2V2ZW50IEFnZW50LndyaXRlX2pzb24gbyB5KTtcbiAgICAgICAgKGZ1biBvIC0+IFNpbXVsYXRpb25faW5mby53cml0ZV9qc29uIFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG8geik7XG4gICAgICBdXG4gICAgfCBJbml0IGEgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyAzKTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdCAoSW5zdGFudGlhdGlvbi53cml0ZV9hY3Rpb24gQWdlbnQud3JpdGVfanNvbikgbyBhKTtcbiAgICAgIF1cbiAgICB8IE9icyAoeCwgeSwgeikgLT5cbiAgICAgIFtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9pbnQgbyA0KTtcbiAgICAgICAgKGZ1biBvIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgbyB4KTtcbiAgICAgICAgKGZ1biBvIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3QgKEluc3RhbnRpYXRpb24ud3JpdGVfdGVzdCBBZ2VudC53cml0ZV9qc29uKSlcbiAgICAgICAgICAgIG8geSk7XG4gICAgICAgIChmdW4gbyAtPiBTaW11bGF0aW9uX2luZm8ud3JpdGVfanNvbiBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBvIHopO1xuICAgICAgXVxuICAgIHwgRHVtbXkgXyAtPiBbIChmdW4gbyAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG8gNSkgXSlcblxubGV0IHJlYWRfc3RlcCBzdCBiID1cbiAgSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgfCAwIC0+XG4gICAgICAgIGxldCBhID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IGIgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYiBpblxuICAgICAgICBTdWJzIChhLCBiKVxuICAgICAgfCAxIC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2V2ZW50IEFnZW50LnJlYWRfanNvbilcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBSdWxlICh4LCB5LCB6KVxuICAgICAgfCAyIC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2V2ZW50IEFnZW50LnJlYWRfanNvbilcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBQZXJ0ICh4LCB5LCB6KVxuICAgICAgfCAzIC0+XG4gICAgICAgIGxldCBsID1cbiAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RfcmV2XG4gICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5yZWFkX2FjdGlvbiBBZ2VudC5yZWFkX2pzb24pKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBJbml0IChMaXN0LnJldiBsKVxuICAgICAgfCA0IC0+XG4gICAgICAgIGxldCB4ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGIgaW5cbiAgICAgICAgbGV0IHkgPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdFxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnJlYWRfdGVzdCBBZ2VudC5yZWFkX2pzb24pKSlcbiAgICAgICAgICAgIHN0IGJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHogPVxuICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAoU2ltdWxhdGlvbl9pbmZvLnJlYWRfanNvbiBZb2pzb24uQmFzaWMucmVhZF9udWxsKVxuICAgICAgICAgICAgc3QgYlxuICAgICAgICBpblxuICAgICAgICBPYnMgKHgsIHksIHopXG4gICAgICB8IDUgLT4gRHVtbXkgXCJcIlxuICAgICAgfCBfIC0+IHJhaXNlIChZb2pzb24uanNvbl9lcnJvciBcIkludmFsaWQgc3RlcFwiKVxuICAgICAgKCpzdCBiKikpXG4gICAgc3QgYlxuXG5sZXQgc3RlcF90b195b2pzb24gPSBmdW5jdGlvblxuICB8IFN1YnMgKGEsIGIpIC0+IGBMaXN0IFsgYEludCAwOyBgSW50IGE7IGBJbnQgYiBdXG4gIHwgUnVsZSAoeCwgeSwgeikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDE7XG4gICAgICAgIGBJbnQgeDtcbiAgICAgICAgSW5zdGFudGlhdGlvbi5ldmVudF90b19qc29uIEFnZW50LnRvX2pzb24geTtcbiAgICAgICAgU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gKGZ1biAoKSAtPiBgTnVsbCkgejtcbiAgICAgIF1cbiAgfCBQZXJ0ICh4LCB5LCB6KSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBJbnQgMjtcbiAgICAgICAgYFN0cmluZyB4O1xuICAgICAgICBJbnN0YW50aWF0aW9uLmV2ZW50X3RvX2pzb24gQWdlbnQudG9fanNvbiB5O1xuICAgICAgICBTaW11bGF0aW9uX2luZm8udG9fanNvbiAoZnVuICgpIC0+IGBOdWxsKSB6O1xuICAgICAgXVxuICB8IEluaXQgYSAtPlxuICAgIGxldCByZXZfYWN0aW9ucyA9XG4gICAgICBMaXN0LnJldl9tYXAgKEluc3RhbnRpYXRpb24uYWN0aW9uX3RvX2pzb24gQWdlbnQudG9fanNvbikgYVxuICAgIGluXG4gICAgYExpc3QgWyBgSW50IDM7IGBMaXN0IChMaXN0LnJldiByZXZfYWN0aW9ucykgXVxuICB8IE9icyAoeCwgeSwgeikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgSW50IDQ7XG4gICAgICAgIGBTdHJpbmcgeDtcbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAoZnVuIHogLT5cbiAgICAgICAgICAgICAgIGBMaXN0IChMaXN0Lm1hcCAoSW5zdGFudGlhdGlvbi50ZXN0X3RvX2pzb24gQWdlbnQudG9fanNvbikgeikpXG4gICAgICAgICAgICAgeSk7XG4gICAgICAgIFNpbXVsYXRpb25faW5mby50b19qc29uIChmdW4gKCkgLT4gYE51bGwpIHo7XG4gICAgICBdXG4gIHwgRHVtbXkgXyAtPiBgTGlzdCBbIGBJbnQgNSBdXG5cbmxldCB3cml0ZV9qc29uID0gSnNvblV0aWwud3JpdGVfbGlzdCB3cml0ZV9zdGVwXG5sZXQgcmVhZF9qc29uIHN0IGIgPSBMaXN0LnJldiAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdF9yZXYgcmVhZF9zdGVwIHN0IGIpXG5cbmxldCBzdHJpbmdfb2Zfc3RlcCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zdGVwIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxuXG5sZXQgc3RlcF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc3RlcCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG5sZXQgc3RlcF9pc19vYnMgPSBmdW5jdGlvblxuICB8IE9icyBfIC0+IHRydWVcbiAgfCBSdWxlIF8gfCBQZXJ0IF8gfCBTdWJzIF8gfCBEdW1teSBfIHwgSW5pdCBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX2luaXQgPSBmdW5jdGlvblxuICB8IEluaXQgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgUGVydCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3N1YnMgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgUGVydCBfIHwgSW5pdCBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3J1bGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgXyAtPiB0cnVlXG4gIHwgUGVydCBfIHwgSW5pdCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzdGVwX2lzX3BlcnQgPSBmdW5jdGlvblxuICB8IFBlcnQgXyAtPiB0cnVlXG4gIHwgUnVsZSBfIHwgSW5pdCBfIHwgU3VicyBfIHwgRHVtbXkgXyB8IE9icyBfIC0+IGZhbHNlXG5cbmxldCBzaW11bGF0aW9uX2luZm9fb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgT2JzIChfLCBfLCBpbmZvKSB8IFJ1bGUgKF8sIF8sIGluZm8pIHwgUGVydCAoXywgXywgaW5mbykgLT4gU29tZSBpbmZvXG4gIHwgSW5pdCBfIC0+IFNvbWUgKFNpbXVsYXRpb25faW5mby5kdW1teSAoKSlcbiAgfCBTdWJzIF8gfCBEdW1teSBfIC0+IE5vbmVcblxubGV0IGNyZWF0aW9uX29mX2FjdGlvbnMgb3AgYWN0aW9ucyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBsIC0+IGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICh4LCBfKSAtPiBvcCB4IDo6IGxcbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfXG4gICAgICAgIC0+XG4gICAgICAgIGwpXG4gICAgW10gYWN0aW9uc1xuXG5sZXQgY3JlYXRpb25fb2Zfc3RlcCA9IGZ1bmN0aW9uXG4gIHwgUnVsZSAoXywgeyBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBhYzsgXyB9LCBfKVxuICB8IFBlcnQgKF8sIHsgSW5zdGFudGlhdGlvbi5hY3Rpb25zID0gYWM7IF8gfSwgXylcbiAgfCBJbml0IGFjIC0+XG4gICAgY3JlYXRpb25fb2ZfYWN0aW9ucyBmc3QgYWNcbiAgfCBPYnMgXyB8IER1bW15IF8gfCBTdWJzIF8gLT4gW11cblxubGV0IGhhc19jcmVhdGlvbl9vZl9zdGVwIHggPSBjcmVhdGlvbl9vZl9zdGVwIHggPD4gW11cblxubGV0IHRlc3RzX29mX3N0ZXAgPSBmdW5jdGlvblxuICB8IFN1YnMgXyAtPiBbXVxuICB8IFJ1bGUgKF8sIGUsIF8pIHwgUGVydCAoXywgZSwgXykgLT5cbiAgICBMaXN0LmZvbGRfcmlnaHQgTGlzdC5hcHBlbmQgZS5JbnN0YW50aWF0aW9uLnRlc3RzXG4gICAgICBlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzXG4gIHwgSW5pdCBfIC0+IFtdXG4gIHwgT2JzIChfLCB4LCBfKSAtPiBMaXN0LmNvbmNhdCB4XG4gIHwgRHVtbXkgXyAtPiBbXVxuXG5sZXQgYWN0aW9uc19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBTdWJzIF8gLT4gW10sIFtdXG4gIHwgUnVsZSAoXywgZSwgXykgfCBQZXJ0IChfLCBlLCBfKSAtPlxuICAgIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zLCBlLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyY1xuICB8IEluaXQgeSAtPiB5LCBbXVxuICB8IE9icyAoXywgXywgXykgLT4gW10sIFtdXG4gIHwgRHVtbXkgXyAtPiBbXSwgW11cblxubGV0IHNpZGVfZWZmZWN0c19vZl9zdGVwID0gZnVuY3Rpb25cbiAgfCBSdWxlIChfLCBlLCBfKSB8IFBlcnQgKF8sIGUsIF8pIC0+IGUuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gIHwgU3VicyBfIHwgT2JzIF8gfCBEdW1teSBfIHwgSW5pdCBfIC0+IFtdXG5cbmxldCBpbml0X3RyYWNlX2ZpbGUgfnV1aWQgZW52IGRlc2MgPVxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJ7XFxuXFxcInV1aWRcXFwiIDogXFxcIlwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyAoc3RyaW5nX29mX2ludCB1dWlkKSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJcXFwiLFxcblxcXCJkaWN0XFxcIjp7XCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIEFnZW50Lmpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiLFwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBJbnN0YW50aWF0aW9uLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwiLFwiIGluXG4gIGxldCAoKSA9IG91dHB1dF9zdHJpbmcgZGVzYyBTaW11bGF0aW9uX2luZm8uanNvbl9kaWN0aW9ubmFyeSBpblxuICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCIsXCIgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIGpzb25fZGljdGlvbm5hcnkgaW5cbiAgbGV0ICgpID0gb3V0cHV0X3N0cmluZyBkZXNjIFwifSxcXG5cXFwibW9kZWxcXFwiOlwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy50b19jaGFubmVsIGRlc2MgKE1vZGVsLnRvX3lvanNvbiBlbnYpIGluXG4gIG91dHB1dF9zdHJpbmcgZGVzYyBcIixcXG5cXFwidHJhY2VcXFwiOltcIlxuXG5sZXQgYXNzZXJ0X2ZpZWxkIGlkZW50IHggPVxuICBpZiBpZGVudCA8PiB4IHRoZW5cbiAgICBZb2pzb24uanNvbl9lcnJvclxuICAgICAgKFwidHJhY2UgbGFja3MgdGhlIGZpZWxkIFxcXCJcIiBeIHggXiBcIlxcXCIgKGF0IHRoZSByaWdodCBwbGFjZSlcIilcblxubGV0IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiA9XG4gIGxldCBpZGVudCA9XG4gICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZlxuICBpblxuICBsZXQgaWRlbnQnLCB1dWlkID1cbiAgICBpZiBpZGVudCA9IFwidXVpZFwiIHRoZW4gKFxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfY29sb24gbGV4X3N0IGxleF9idWYgaW5cbiAgICAgIGxldCB1dWlkID1cbiAgICAgICAgSnNvblV0aWwucmVhZF9iZXR3ZWVuX3NwYWNlcyBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgbGV4X3N0IGxleF9idWZcbiAgICAgIGluXG4gICAgICBsZXQgdXVpZCA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHV1aWQpIHdpdGggXyAtPiBOb25lIGluXG4gICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiwgdXVpZFxuICAgICkgZWxzZVxuICAgICAgaWRlbnQsIE5vbmVcbiAgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50JyBcImRpY3RcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5za2lwX2pzb24gbGV4X3N0IGxleF9idWYgaW5cbiAgdXVpZFxuXG5sZXQgZm9sZF90cmFjZSBmIGluaXQgbGV4X3N0IGxleF9idWYgPVxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9sY3VybCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgXyA9IHJlYWRfdHJhY2VfaGVhZGVycyBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgaWRlbnQgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pZGVudCBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBhc3NlcnRfZmllbGQgaWRlbnQgXCJtb2RlbFwiIGluXG4gIGxldCAoKSA9IFlvanNvbi5CYXNpYy5yZWFkX2NvbG9uIGxleF9zdCBsZXhfYnVmIGluXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLm9mX3lvanNvblxuICAgICAgKEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBsZXhfc3QgbGV4X2J1ZilcbiAgaW5cbiAgbGV0IGlkZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaWRlbnQgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50IFwidHJhY2VcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgb3V0ID1cbiAgICBKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzXG4gICAgICAoWW9qc29uLkJhc2ljLnJlYWRfc2VxdWVuY2VcbiAgICAgICAgIChmdW4gYWNjIHggeSAtPiBmIGVudiBhY2MgKHJlYWRfc3RlcCB4IHkpKVxuICAgICAgICAgKGluaXQgZW52KSlcbiAgICAgIGxleF9zdCBsZXhfYnVmXG4gIGluXG4gIGxldCAoKSA9XG4gICAgdHJ5IFlvanNvbi5CYXNpYy5yZWFkX29iamVjdF9lbmQgbGV4X2J1ZiB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+ICgpXG4gIGluXG4gIGVudiwgb3V0XG5cbmxldCBmb2xkX3RyYWNlX2ZpbGUgZiBpbml0IGZuYW1lID1cbiAgbGV0IGRlc2MgPSBvcGVuX2luIGZuYW1lIGluXG4gIGxldCBsZXhfYnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkZXNjIGluXG4gIGxldCBsZXhfc3QgPSBZb2pzb24uaW5pdF9sZXhlciB+Zm5hbWUgKCkgaW5cbiAgbGV0IG91dCA9IEpzb25VdGlsLnJlYWRfYmV0d2Vlbl9zcGFjZXMgKGZvbGRfdHJhY2UgZiBpbml0KSBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgKCkgPSBjbG9zZV9pbiBkZXNjIGluXG4gIG91dFxuXG5sZXQgZ2V0X2hlYWRlcnNfZnJvbV9maWxlIGZuYW1lID1cbiAgbGV0IGRlc2MgPSBvcGVuX2luIGZuYW1lIGluXG4gIGxldCBsZXhfYnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkZXNjIGluXG4gIGxldCBsZXhfc3QgPSBZb2pzb24uaW5pdF9sZXhlciB+Zm5hbWUgKCkgaW5cbiAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnJlYWRfbGN1cmwgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IHV1aWQgPSByZWFkX3RyYWNlX2hlYWRlcnMgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0IGlkZW50ID0gSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaWRlbnQgbGV4X3N0IGxleF9idWYgaW5cbiAgbGV0ICgpID0gYXNzZXJ0X2ZpZWxkIGlkZW50IFwibW9kZWxcIiBpblxuICBsZXQgKCkgPSBZb2pzb24uQmFzaWMucmVhZF9jb2xvbiBsZXhfc3QgbGV4X2J1ZiBpblxuICBsZXQgZW52ID1cbiAgICBNb2RlbC5vZl95b2pzb25cbiAgICAgIChKc29uVXRpbC5yZWFkX2JldHdlZW5fc3BhY2VzIFlvanNvbi5CYXNpYy5yZWFkX2pzb24gbGV4X3N0IGxleF9idWYpXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX2luIGRlc2MgaW5cbiAgdXVpZCwgZW52XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgRWZmaWNpZW5jeSA6IHNpZ1xuICB0eXBlIHQgPSB7XG4gICAgY29uc2VjdXRpdmU6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGNvbnNlY3V0aXZlX2Jsb2NrZWQ6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfYmluYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBub19tb3JlX3VuYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBjbGFzaGluZ19pbnN0YW5jZTogaW50O1xuICAgIG11dGFibGUgdGltZV9jb3JyZWN0aW9uOiBpbnQ7XG4gIH1cblxuICB2YWwgaW5pdCA6IGludCAtPiB0XG4gIHZhbCBuYiA6IHQgLT4gaW50XG4gIHZhbCBuYl9jb25zZWN1dGl2ZSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gaW50XG4gIHZhbCBuYl9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiBpbnRcbiAgdmFsIHByaW50X2RldGFpbCA6IGN1cnJlbnRfZXZlbnQ6aW50IC0+IEZvcm1hdC5mb3JtYXR0ZXIgLT4gdCAtPiB1bml0XG4gIHZhbCByZXNldF9jb25zZWN1dGl2ZSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gdFxuICB2YWwgcmVzZXRfY29uc2VjdXRpdmVfYmxvY2tlZCA6IHQgLT4gdFxuICB2YWwgaW5jcl9ub19tb3JlX2JpbmFyeSA6IHJ1bGVfaWQ6aW50IC0+IHQgLT4gdFxuICB2YWwgaW5jcl9ub19tb3JlX3VuYXJ5IDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX2NsYXNoaW5nX2luc3RhbmNlIDogcnVsZV9pZDppbnQgLT4gdCAtPiB0XG4gIHZhbCBpbmNyX3RpbWVfY29ycmVjdGlvbiA6IHQgLT4gdFxuICB2YWwgaW5jcl9jb25zZWN1dGl2ZV9ibG9ja2VkIDogdCAtPiB0XG4gIHZhbCB3cml0ZV90IDogQnVmZmVyLnQgLT4gdCAtPiB1bml0XG4gIHZhbCBzdHJpbmdfb2ZfdCA6ID9sZW46aW50IC0+IHQgLT4gc3RyaW5nXG4gIHZhbCByZWFkX3QgOiBZb2pzb24uU2FmZS5sZXhlcl9zdGF0ZSAtPiBMZXhpbmcubGV4YnVmIC0+IHRcbiAgdmFsIHRfb2Zfc3RyaW5nIDogc3RyaW5nIC0+IHRcbmVuZCA9IHN0cnVjdFxuICB0eXBlIHQgPSB7XG4gICAgY29uc2VjdXRpdmU6IGludCBhcnJheTtcbiAgICBtdXRhYmxlIGNvbnNlY3V0aXZlX2Jsb2NrZWQ6IGludDtcbiAgICBtdXRhYmxlIG5vX21vcmVfYmluYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBub19tb3JlX3VuYXJ5OiBpbnQ7XG4gICAgbXV0YWJsZSBjbGFzaGluZ19pbnN0YW5jZTogaW50O1xuICAgIG11dGFibGUgdGltZV9jb3JyZWN0aW9uOiBpbnQ7XG4gIH1cblxuICBsZXQgaW5pdCBzaXplID1cbiAgICB7XG4gICAgICBjb25zZWN1dGl2ZSA9IEFycmF5Lm1ha2Ugc2l6ZSAwO1xuICAgICAgY29uc2VjdXRpdmVfYmxvY2tlZCA9IDA7XG4gICAgICBub19tb3JlX2JpbmFyeSA9IDA7XG4gICAgICBub19tb3JlX3VuYXJ5ID0gMDtcbiAgICAgIGNsYXNoaW5nX2luc3RhbmNlID0gMDtcbiAgICAgIHRpbWVfY29ycmVjdGlvbiA9IDA7XG4gICAgfVxuXG4gIGxldCBuYiB0ID1cbiAgICB0Lm5vX21vcmVfYmluYXJ5ICsgdC5ub19tb3JlX3VuYXJ5ICsgdC5jbGFzaGluZ19pbnN0YW5jZSArIHQudGltZV9jb3JyZWN0aW9uXG5cbiAgbGV0IG5iX2NvbnNlY3V0aXZlIH5ydWxlX2lkIHQgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKVxuICBsZXQgbmJfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID0gdC5jb25zZWN1dGl2ZV9ibG9ja2VkXG5cbiAgbGV0IHJlc2V0X2NvbnNlY3V0aXZlIH5ydWxlX2lkIHQgPVxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIDAgaW5cbiAgICB0XG5cbiAgbGV0IHJlc2V0X2NvbnNlY3V0aXZlX2Jsb2NrZWQgdCA9XG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZV9ibG9ja2VkIDwtIDAgaW5cbiAgICB0XG5cbiAgbGV0IGluY3JfY29uc2VjdXRpdmVfYmxvY2tlZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgPC0gc3VjYyB0LmNvbnNlY3V0aXZlX2Jsb2NrZWQgaW5cbiAgICB0XG5cbiAgbGV0IGluY3Jfbm9fbW9yZV9iaW5hcnkgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5ub19tb3JlX2JpbmFyeSA8LSBzdWNjIHQubm9fbW9yZV9iaW5hcnkgaW5cbiAgICBsZXQgKCkgPSB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSA8LSBzdWNjIHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIGluXG4gICAgdFxuXG4gIGxldCBpbmNyX25vX21vcmVfdW5hcnkgfnJ1bGVfaWQgdCA9XG4gICAgbGV0ICgpID0gdC5ub19tb3JlX3VuYXJ5IDwtIHN1Y2MgdC5ub19tb3JlX3VuYXJ5IGluXG4gICAgbGV0ICgpID0gdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgPC0gc3VjYyB0LmNvbnNlY3V0aXZlLihydWxlX2lkKSBpblxuICAgIHRcblxuICBsZXQgaW5jcl9jbGFzaGluZ19pbnN0YW5jZSB+cnVsZV9pZCB0ID1cbiAgICBsZXQgKCkgPSB0LmNsYXNoaW5nX2luc3RhbmNlIDwtIHN1Y2MgdC5jbGFzaGluZ19pbnN0YW5jZSBpblxuICAgIGxldCAoKSA9IHQuY29uc2VjdXRpdmUuKHJ1bGVfaWQpIDwtIHN1Y2MgdC5jb25zZWN1dGl2ZS4ocnVsZV9pZCkgaW5cbiAgICB0XG5cbiAgbGV0IGluY3JfdGltZV9jb3JyZWN0aW9uIHQgPVxuICAgIGxldCAoKSA9IHQudGltZV9jb3JyZWN0aW9uIDwtIHN1Y2MgdC50aW1lX2NvcnJlY3Rpb24gaW5cbiAgICB0XG5cbiAgbGV0IHByaW50X2RldGFpbCB+Y3VycmVudF9ldmVudCBmIHQgPVxuICAgIGxldCBhbGwgPSBmbG9hdF9vZl9pbnQgKG5iIHQpIGluXG4gICAgbGV0IGV2ZW50cyA9IGZsb2F0X29mX2ludCBjdXJyZW50X2V2ZW50IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX29wZW5fdmJveCBmIDAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgYWxsID4gMC4gdGhlblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJAWyUuMmYlJSBvZiBldmVudCBsb29wcyB3ZXJlIHByb2R1Y3RpdmUuQCBOdWxsIGV2ZW50IGNhdXNlOkBdQCxcIlxuICAgICAgICAgICgxMDAuICouIGV2ZW50cyAvLiAoYWxsICsuIGV2ZW50cykpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgdC5ub19tb3JlX3VuYXJ5ID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcdFZhbGlkIGVtYmVkZGluZyBidXQgbm8gbG9uZ2VyIHVuYXJ5IHdoZW4gcmVxdWlyZWQ6ICUuMmYlJUAsXCJcbiAgICAgICAgICAoMTAwLiAqLiBmbG9hdF9vZl9pbnQgdC5ub19tb3JlX3VuYXJ5IC8uIGFsbClcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiB0Lm5vX21vcmVfYmluYXJ5ID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICBcIlxcdFZhbGlkIGVtYmVkZGluZyBidXQgbm90IGJpbmFyeSB3aGVuIHJlcXVpcmVkOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQubm9fbW9yZV9iaW5hcnkgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQuY2xhc2hpbmdfaW5zdGFuY2UgPiAwIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcdENsYXNoaW5nIGluc3RhbmNlOiAlLjJmJSVALFwiXG4gICAgICAgICAgKDEwMC4gKi4gZmxvYXRfb2ZfaW50IHQuY2xhc2hpbmdfaW5zdGFuY2UgLy4gYWxsKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIHQudGltZV9jb3JyZWN0aW9uID4gMCB0aGVuXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJcXHRQZXJ0dXJiYXRpb24gaW50ZXJydXB0aW5nIHRpbWUgYWR2YW5jZTogJS4yZiUlQCxcIlxuICAgICAgICAgICgxMDAuICouIGZsb2F0X29mX2ludCB0LnRpbWVfY29ycmVjdGlvbiAvLiBhbGwpXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1cIlxuXG4gIGxldCB0b195b2pzb24gdCA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiY29uc2VjdXRpdmVcIiwgSnNvblV0aWwub2ZfYXJyYXkgSnNvblV0aWwub2ZfaW50IHQuY29uc2VjdXRpdmU7XG4gICAgICAgIFwiY29uc2VjdXRpdmVfYmxvY2tlZFwiLCBgSW50IHQuY29uc2VjdXRpdmVfYmxvY2tlZDtcbiAgICAgICAgXCJub19tb3JlX2JpbmFyeVwiLCBgSW50IHQubm9fbW9yZV9iaW5hcnk7XG4gICAgICAgIFwibm9fbW9yZV91bmFyeVwiLCBgSW50IHQubm9fbW9yZV91bmFyeTtcbiAgICAgICAgXCJjbGFzaGluZ19pbnN0YW5jZVwiLCBgSW50IHQuY2xhc2hpbmdfaW5zdGFuY2U7XG4gICAgICAgIFwidGltZV9jb3JyZWN0aW9uXCIsIGBJbnQgdC50aW1lX2NvcnJlY3Rpb247XG4gICAgICBdXG5cbiAgbGV0IG9mX3lvanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDYgLT5cbiAgICAgIHtcbiAgICAgICAgY29uc2VjdXRpdmUgPVxuICAgICAgICAgIChKc29uVXRpbC50b19hcnJheSBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQpXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29uc2VjdXRpdmVcIiB4KTtcbiAgICAgICAgY29uc2VjdXRpdmVfYmxvY2tlZCA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwiY29uc2VjdXRpdmVfYmxvY2tlZFwiIHgpO1xuICAgICAgICBub19tb3JlX2JpbmFyeSA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJub19tb3JlX2JpbmFyeVwiIHgpO1xuICAgICAgICBub19tb3JlX3VuYXJ5ID1cbiAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19pbnQgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vX21vcmVfdW5hcnlcIiB4KTtcbiAgICAgICAgY2xhc2hpbmdfaW5zdGFuY2UgPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludFxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImNsYXNoaW5nX2luc3RhbmNlXCIgeCk7XG4gICAgICAgIHRpbWVfY29ycmVjdGlvbiA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9faW50XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwidGltZV9jb3JyZWN0aW9uXCIgeCk7XG4gICAgICB9XG4gICAgfCB4IC0+XG4gICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbnZhbGlkIHNpbXVsYXRpb24gZWZmaWNpZW5jeVwiLCB4KSlcblxuICBsZXQgd3JpdGVfdCBvYiBmID0gWW9qc29uLkJhc2ljLnRvX2J1ZmZlciBvYiAodG9feW9qc29uIGYpXG5cbiAgbGV0IHN0cmluZ19vZl90ID8obGVuID0gMTAyNCkgeCA9XG4gICAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgICB3cml0ZV90IG9iIHg7XG4gICAgQnVmZmVyLmNvbnRlbnRzIG9iXG5cbiAgbGV0IHJlYWRfdCBwIGxiID0gb2ZfeW9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9sZXhidWYgfnN0cmVhbTp0cnVlIHAgbGIpXG4gIGxldCB0X29mX3N0cmluZyBzID0gcmVhZF90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5lbmRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIHRpbWU6IGZsb2F0O1xuICBtdXRhYmxlIGV2ZW50czogaW50O1xuICBtdXRhYmxlIHN0b3JpZXM6IGludDtcbiAgbXV0YWJsZSBsYXN0X3BvaW50OiBpbnQ7XG4gIG11dGFibGUgc3RhdF9udWxsOiBFZmZpY2llbmN5LnQ7XG4gIGluaXRfdGltZTogZmxvYXQ7XG4gIGluaXRfZXZlbnQ6IGludDtcbiAgbXV0YWJsZSBwbG90X3BlcmlvZDogQ29uZmlndXJhdGlvbi5wZXJpb2Q7XG4gIG11dGFibGUgbWF4X3RpbWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBtYXhfZXZlbnQ6IGludCBvcHRpb247XG59XG5cbmxldCBjdXJyZW50X3N0b3J5IGMgPSBjLnN0b3JpZXNcbmxldCBjdXJyZW50X3RpbWUgYyA9IGMudGltZVxubGV0IGN1cnJlbnRfZXZlbnQgYyA9IGMuZXZlbnRzXG5sZXQgbmJfbnVsbF9ldmVudCBjID0gRWZmaWNpZW5jeS5uYiBjLnN0YXRfbnVsbFxuXG5sZXQgY29uc2VjdXRpdmVfbnVsbF9ldmVudCB+cnVsZV9pZCBjID1cbiAgRWZmaWNpZW5jeS5uYl9jb25zZWN1dGl2ZSB+cnVsZV9pZCBjLnN0YXRfbnVsbFxuXG5sZXQgY29uc2VjdXRpdmVfYmxvY2tlZCBjID0gRWZmaWNpZW5jeS5uYl9jb25zZWN1dGl2ZV9ibG9ja2VkIGMuc3RhdF9udWxsXG5sZXQgaW5jX3N0b3JpZXMgYyA9IGMuc3RvcmllcyA8LSBjLnN0b3JpZXMgKyAxXG5sZXQgaW5jX2V2ZW50cyBjID0gYy5ldmVudHMgPC0gYy5ldmVudHMgKyAxXG5cbmxldCBjaGVja190aW1lIGMgPVxuICBtYXRjaCBjLm1heF90aW1lIHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBjLnRpbWUgPD0gbWF4XG5cbmxldCBjaGVja19vdXRwdXRfdGltZSBjIG90ID1cbiAgbWF0Y2ggYy5tYXhfdGltZSB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBtYXggLT4gb3QgPD0gbWF4XG5cbmxldCBjaGVja19ldmVudHMgYyA9XG4gIG1hdGNoIGMubWF4X2V2ZW50IHdpdGhcbiAgfCBOb25lIC0+IHRydWVcbiAgfCBTb21lIG1heCAtPiBjLmV2ZW50cyA8IG1heFxuXG5sZXQgb25lX3RpbWVfYWR2YW5jZSBjIGR0ID1cbiAgbGV0ICgpID0gYy50aW1lIDwtIGMudGltZSArLiBkdCBpblxuICBjaGVja190aW1lIGNcblxubGV0IG9uZV9jb25zdHJ1Y3RpdmVfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kucmVzZXRfY29uc2VjdXRpdmUgfnJ1bGVfaWQgYy5zdGF0X251bGwgaW5cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5yZXNldF9jb25zZWN1dGl2ZV9ibG9ja2VkIGMuc3RhdF9udWxsIGluXG4gIGxldCAoKSA9IGluY19ldmVudHMgYyBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCB+cnVsZV9pZCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX25vX21vcmVfYmluYXJ5IH5ydWxlX2lkIGMuc3RhdF9udWxsIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX25vX21vcmVfdW5hcnlfZXZlbnQgfnJ1bGVfaWQgYyA9XG4gIGxldCAoKSA9IGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl9ub19tb3JlX3VuYXJ5IH5ydWxlX2lkIGMuc3RhdF9udWxsIGluXG4gIGNoZWNrX3RpbWUgYyAmJiBjaGVja19ldmVudHMgY1xuXG5sZXQgb25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50IH5ydWxlX2lkIGMgPVxuICBsZXQgKCkgPVxuICAgIGMuc3RhdF9udWxsIDwtIEVmZmljaWVuY3kuaW5jcl9jbGFzaGluZ19pbnN0YW5jZSB+cnVsZV9pZCBjLnN0YXRfbnVsbFxuICBpblxuICBjaGVja190aW1lIGMgJiYgY2hlY2tfZXZlbnRzIGNcblxubGV0IG9uZV90aW1lX2NvcnJlY3Rpb25fZXZlbnQgP3RpIGMgPVxuICBtYXRjaCBPcHRpb25fdXRpbC5iaW5kIE5ici50b19mbG9hdCB0aSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgdGkgLT5cbiAgICBsZXQgKCkgPSBjLnRpbWUgPC0gdGkgaW5cbiAgICBsZXQgKCkgPSBjLnN0YXRfbnVsbCA8LSBFZmZpY2llbmN5LmluY3JfdGltZV9jb3JyZWN0aW9uIGMuc3RhdF9udWxsIGluXG4gICAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBvbmVfYmxvY2tlZF9ldmVudCBjID1cbiAgbGV0ICgpID0gYy5zdGF0X251bGwgPC0gRWZmaWNpZW5jeS5pbmNyX2NvbnNlY3V0aXZlX2Jsb2NrZWQgYy5zdGF0X251bGwgaW5cbiAgY2hlY2tfdGltZSBjICYmIGNoZWNrX2V2ZW50cyBjXG5cbmxldCBnZXRfZWZmaWNpZW5jeSBjID0gYy5zdGF0X251bGxcblxubGV0IHByaW50X2VmZmljaWVuY3kgZiBjID1cbiAgRWZmaWNpZW5jeS5wcmludF9kZXRhaWwgfmN1cnJlbnRfZXZlbnQ6KGN1cnJlbnRfZXZlbnQgYykgZiBjLnN0YXRfbnVsbFxuXG5sZXQgaW5pdF90aW1lIGMgPSBjLmluaXRfdGltZVxubGV0IG1heF90aW1lIGMgPSBjLm1heF90aW1lXG5sZXQgbWF4X2V2ZW50cyBjID0gYy5tYXhfZXZlbnRcbmxldCBwbG90X3BlcmlvZCBjID0gYy5wbG90X3BlcmlvZFxuXG5sZXQgdGltZV9yYXRpbyB0ID1cbiAgbWF0Y2ggdC5tYXhfdGltZSB3aXRoXG4gIHwgTm9uZSAtPiBOb25lXG4gIHwgU29tZSB0bWF4IC0+XG4gICAgaWYgdG1heCA+IHQuaW5pdF90aW1lIHRoZW5cbiAgICAgIFNvbWUgKCh0LnRpbWUgLS4gdC5pbml0X3RpbWUpIC8uICh0bWF4IC0uIHQuaW5pdF90aW1lKSlcbiAgICBlbHNlXG4gICAgICBOb25lXG5cbmxldCBldmVudF9yYXRpbyB0ID1cbiAgbWF0Y2ggdC5tYXhfZXZlbnQgd2l0aFxuICB8IE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgZW1heCAtPlxuICAgIGlmIGVtYXggPSAwIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lXG4gICAgICAgIChmbG9hdF9vZl9pbnQgKHQuZXZlbnRzIC0gdC5pbml0X2V2ZW50KVxuICAgICAgICAvLiBmbG9hdF9vZl9pbnQgKGVtYXggLSB0LmluaXRfZXZlbnQpKVxuXG5sZXQgc2V0X21heF90aW1lIGMgdCA9IGMubWF4X3RpbWUgPC0gdFxubGV0IHNldF9tYXhfZXZlbnRzIGMgZSA9IGMubWF4X2V2ZW50IDwtIGVcblxubGV0IHRyYWNrZWRfZXZlbnRzIChjb3VudGVyIDogdCkgOiBpbnQgb3B0aW9uID1cbiAgaWYgY291bnRlci5zdG9yaWVzID49IDAgdGhlblxuICAgIFNvbWUgY291bnRlci5zdG9yaWVzXG4gIGVsc2VcbiAgICBOb25lXG5cbmxldCBzZXRfcGxvdF9wZXJpb2QgKHQgOiB0KSBwbG90X3BlcmlvZCA6IHVuaXQgPSB0LnBsb3RfcGVyaW9kIDwtIHBsb3RfcGVyaW9kXG5cbmxldCBjcmVhdGUgPyhpbml0X3QgPSAwLikgPyhpbml0X2UgPSAwKSA/bWF4X3RpbWUgP21heF9ldmVudCB+cGxvdF9wZXJpb2RcbiAgICB+bmJfcnVsZXMgKCkgPVxuICB7XG4gICAgdGltZSA9IGluaXRfdDtcbiAgICBldmVudHMgPSBpbml0X2U7XG4gICAgc3RvcmllcyA9IC0xO1xuICAgIHN0YXRfbnVsbCA9IEVmZmljaWVuY3kuaW5pdCBuYl9ydWxlcztcbiAgICBwbG90X3BlcmlvZDtcbiAgICBpbml0X3RpbWUgPSBpbml0X3Q7XG4gICAgaW5pdF9ldmVudCA9IGluaXRfZTtcbiAgICBtYXhfdGltZTtcbiAgICBtYXhfZXZlbnQ7XG4gICAgbGFzdF9wb2ludCA9IDA7XG4gIH1cblxubGV0IHJlaW5pdGlhbGl6ZSBjb3VudGVyID1cbiAgY291bnRlci50aW1lIDwtIGNvdW50ZXIuaW5pdF90aW1lO1xuICBjb3VudGVyLmV2ZW50cyA8LSBjb3VudGVyLmluaXRfZXZlbnQ7XG4gIGNvdW50ZXIuc3RvcmllcyA8LSAtMTtcbiAgY291bnRlci5sYXN0X3BvaW50IDwtIDA7XG4gIGNvdW50ZXIuc3RhdF9udWxsIDwtXG4gICAgRWZmaWNpZW5jeS5pbml0IChBcnJheS5sZW5ndGggY291bnRlci5zdGF0X251bGwuRWZmaWNpZW5jeS5jb25zZWN1dGl2ZSlcblxubGV0IG5leHRfc3RlcF9zaW11bGF0aW9uX2luZm8gYyA9XG4gIHtcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPSBjdXJyZW50X3N0b3J5IGM7XG4gICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUgPSBjdXJyZW50X3RpbWUgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQgPSBjdXJyZW50X2V2ZW50IGMgKyAxO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5wcm9maWxpbmdfaW5mbyA9ICgpO1xuICB9XG5cbmxldCBjdXJyZW50X3NpbXVsYXRpb25faW5mbyBjID1cbiAge1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCA9IGN1cnJlbnRfc3RvcnkgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSA9IGN1cnJlbnRfdGltZSBjO1xuICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudCA9IGN1cnJlbnRfZXZlbnQgYztcbiAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8ucHJvZmlsaW5nX2luZm8gPSAoKTtcbiAgfVxuXG5sZXQgbmV4dF9zdG9yeSBjID1cbiAgbGV0ICgpID0gaW5jX3N0b3JpZXMgYyBpblxuICBuZXh0X3N0ZXBfc2ltdWxhdGlvbl9pbmZvIGNcblxubGV0IHBvc2l0aXZlX3Bsb3RfcGVyaW9kIGNvdW50ZXIgPVxuICBtYXRjaCBwbG90X3BlcmlvZCBjb3VudGVyIHdpdGhcbiAgfCBDb25maWd1cmF0aW9uLkRFIGUgLT4gZSA+IDBcbiAgfCBDb25maWd1cmF0aW9uLkRUIHQgLT4gdCA+IDAuXG5cbmxldCBuZXh0X3BvaW50IGNvdW50ZXIgZHQgPVxuICBtYXRjaCBjb3VudGVyLnBsb3RfcGVyaW9kIHdpdGhcbiAgfCBDb25maWd1cmF0aW9uLkRUIGRUIC0+XG4gICAgaWYgZFQgPD0gMC4gdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIGludF9vZl9mbG9hdFxuICAgICAgICAoKG1pblxuICAgICAgICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSBpbmZpbml0eSAobWF4X3RpbWUgY291bnRlcikpXG4gICAgICAgICAgICAoZHQgKy4gY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAtLiBjb3VudGVyLmluaXRfdGltZSlcbiAgICAgICAgLy4gZFQpXG4gIHwgQ29uZmlndXJhdGlvbi5ERSBkRSAtPlxuICAgIGlmIGRFIDw9IDAgdGhlblxuICAgICAgMFxuICAgIGVsc2VcbiAgICAgIChjdXJyZW50X2V2ZW50IGNvdW50ZXIgLSBjb3VudGVyLmluaXRfZXZlbnQpIC8gZEVcblxubGV0IHRvX3Bsb3RfcG9pbnRzIGNvdW50ZXIgZHQgPVxuICBsZXQgbmV4dCA9IG5leHRfcG9pbnQgY291bnRlciBkdCBpblxuICBsZXQgbGFzdCA9IGNvdW50ZXIubGFzdF9wb2ludCBpblxuICBsZXQgKCkgPSBjb3VudGVyLmxhc3RfcG9pbnQgPC0gbmV4dCBpblxuICBsZXQgbiA9IG5leHQgLSBsYXN0IGluXG4gIG1hdGNoIGNvdW50ZXIucGxvdF9wZXJpb2Qgd2l0aFxuICB8IENvbmZpZ3VyYXRpb24uRFQgZFQgLT5cbiAgICAoIHNuZFxuICAgICAgICAoVG9vbHMucmVjdGlcbiAgICAgICAgICAgKGZ1biAodGltZSwgYWNjKSBfIC0+XG4gICAgICAgICAgICAgKCB0aW1lIC0uIGRULFxuICAgICAgICAgICAgICAgaWYgY2hlY2tfb3V0cHV0X3RpbWUgY291bnRlciB0aW1lIHRoZW5cbiAgICAgICAgICAgICAgICAgdGltZSA6OiBhY2NcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgYWNjICkpXG4gICAgICAgICAgIChjb3VudGVyLmluaXRfdGltZSArLiAoZmxvYXRfb2ZfaW50IG5leHQgKi4gZFQpLCBbXSlcbiAgICAgICAgICAgbiksXG4gICAgICBjb3VudGVyIClcbiAgfCBDb25maWd1cmF0aW9uLkRFIF8gLT5cbiAgICBpZiBuID0gMSB0aGVuXG4gICAgICBbIGNvdW50ZXIudGltZSBdLCBjb3VudGVyXG4gICAgZWxzZSBpZiBuID0gMCB0aGVuXG4gICAgICBbXSwgY291bnRlclxuICAgIGVsc2VcbiAgICAgIGludmFsaWRfYXJnXG4gICAgICAgIChcIkNvdW50ZXIudG9fcGxvdF9wb2ludHM6IGludmFsaWQgaW5jcmVtZW50IFwiIF4gc3RyaW5nX29mX2ludCBuKVxuXG5sZXQgZmlsbCB+b3V0cHV0cyBjb3VudGVyIH5kdCA9XG4gIGxldCBwb2ludHMsIGNvdW50ZXInID0gdG9fcGxvdF9wb2ludHMgY291bnRlciBkdCBpblxuICBMaXN0Lml0ZXIgKGZ1biB0aW1lIC0+IG91dHB1dHMgY291bnRlcicgdGltZSkgcG9pbnRzXG5cbmxldCBmYWtlX3RpbWUgdCB0aW1lID0geyB0IHdpdGggdGltZSB9XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgcHJpbnRfaW5pdGlhbF9pbnB1dHMgP3V1aWQgY29uZiBlbnYgaW5wdXRzX2Zvcm0gaW5pdCA9XG4gIGxldCBub0NvdW50ZXJzID0gZmFsc2UgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCB1dWlkIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgdXVpZCAtPiBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALlwiIHV1aWRcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIiVhQC4lYUAuXCIgQ29uZmlndXJhdGlvbi5wcmludCBjb25mXG4gICAgICAoS2FwcGFfcHJpbnRlci5lbnZfa2FwcGEgfm5vQ291bnRlcnMpXG4gICAgICBlbnZcbiAgaW5cbiAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICBGb3JtYXQuZnByaW50ZiBpbnB1dHNfZm9ybSBcIkAuQFs8dj4lYUBdQC5cIlxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAobiwgcikgLT5cbiAgICAgICAgIGxldCBfLCBpbnNfZnJlc2ggPVxuICAgICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmxrYXBwYV9vZl9lbGVtZW50YXJ5X3J1bGUgc2lncyAoTW9kZWwuZG9tYWluIGVudikgclxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIGlmIGluc19mcmVzaCA8PiBbXSB0aGVuIChcbiAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDpAIEBbJWFAXUAgQFslYUBdQF1cIlxuICAgICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgICAgICBuXG4gICAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVycyB+Y3JlYXRlZDpmYWxzZVxuICAgICAgICAgICAgICAgICAgICB+aW5pdGlhbF9jb21tYTpmYWxzZSB+c2lncylcbiAgICAgICAgICAgICAgICAgaW5zX2ZyZXNoXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBpZiByLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zIDw+IFtdIHRoZW4gRm9ybWF0LnBwX3ByaW50X3NwYWNlIGYgKClcbiAgICAgICAgICAgKVxuICAgICAgICAgaW5cbiAgICAgICAgIFBwLmxpc3QgUHAuc3BhY2VcbiAgICAgICAgICAgKGZ1biBmIChuYiwgdGspIC0+XG4gICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGhvdiAyPiUlaW5pdDpAIEBbJWFAXUAgJWFAXVwiXG4gICAgICAgICAgICAgICAoS2FwcGFfcHJpbnRlci5hbGdfZXhwciB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgICAgKGZzdCAoQWxnX2V4cHIubXVsdCAoTG9jLmFubm90X3dpdGhfZHVtbXkgbikgbmIpKVxuICAgICAgICAgICAgICAgKE1vZGVsLnByaW50X3Rva2VuIH5lbnYpIHRrKVxuICAgICAgICAgICBmIHIuUHJpbWl0aXZlcy5kZWx0YV90b2tlbnMpKVxuICAgIGluaXRcblxudHlwZSBzbmFwc2hvdCA9IHtcbiAgc25hcHNob3RfZXZlbnQ6IGludDtcbiAgc25hcHNob3RfdGltZTogZmxvYXQ7XG4gIHNuYXBzaG90X2FnZW50czogKGludCAqIFVzZXJfZ3JhcGguY29ubmVjdGVkX2NvbXBvbmVudCkgbGlzdDtcbiAgc25hcHNob3RfdG9rZW5zOiAoc3RyaW5nICogTmJyLnQpIGFycmF5O1xufVxuXG5sZXQgcHJpbnRfc25hcHNob3QgP3V1aWQgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4vLyBTbmFwc2hvdCBbRXZlbnQ6ICVkXUAsXCJcbiAgICAgICgqXCIsIFRpbWU6ICVmXCIqKSBzLnNuYXBzaG90X2V2ZW50XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSUlZGVmOiBcXFwiVDBcXFwiIFxcXCIlc1xcXCJALEAsJWFALCVhQF1ALlwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALFwiIHgpKVxuICAgIHV1aWRcbiAgICAoSnNvblV0aWwuc3RkX2pzb25fc3RyaW5nX29mX2Zsb2F0IHMuc25hcHNob3RfdGltZSlcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGksIG1peCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3YgMj4lJWluaXQ6ICVpIC8qJWkgYWdlbnRzKi8gJWFAXVwiIGlcbiAgICAgICAgICAgKEFycmF5LmZvbGRfbGVmdCAoZnVuIHMgZSAtPiBzICsgQXJyYXkubGVuZ3RoIGUpIDAgbWl4KVxuICAgICAgICAgICBVc2VyX2dyYXBoLnByaW50X2NjIG1peCkpXG4gICAgcy5zbmFwc2hvdF9hZ2VudHNcbiAgICAoUHAuYXJyYXkgUHAuc3BhY2UgKGZ1biBfIGYgKG5hLCBlbCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlJWluaXQ6ICVhICVzXCIgTmJyLnByaW50IGVsIG5hKSlcbiAgICBzLnNuYXBzaG90X3Rva2Vuc1xuXG5sZXQgcHJpbnRfZG90X3NuYXBzaG90ID91dWlkIGYgcyA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+Ly8gU25hcHNob3QgW0V2ZW50OiAlZF1ALFwiXG4gICAgICAoKlwiLCBUaW1lOiAlZlwiKikgcy5zbmFwc2hvdF9ldmVudFxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWFkaWdyYXBoIEd7QCwlYUAsJWF9QF1ALlwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIFxcXCJ1dWlkXFxcIiA6IFxcXCIlaVxcXCJALFwiIHgpKVxuICAgIHV1aWRcbiAgICAoUHAubGlzdGkgUHAuY3V0IChmdW4gaSBmIChuYiwgbWl4KSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj5zdWJncmFwaCBjbHVzdGVyJWR7QCxcIiBpO1xuICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICBcImNvdW50ZXIlZCBbbGFiZWwgPSBcXFwiJWQgaW5zdGFuY2UocylcXFwiLCBzaGFwZT1ub25lXTtALCVhfUBdXCIgaSBuYlxuICAgICAgICAgICAoVXNlcl9ncmFwaC5wcmludF9kb3RfY2MgaSlcbiAgICAgICAgICAgbWl4KSlcbiAgICBzLnNuYXBzaG90X2FnZW50c1xuICAgIChQcC5hcnJheSBQcC5jdXQgKGZ1biBpIGYgKG5hLCBlbCkgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ0b2tlbl8lZCBbbGFiZWwgPSBcXFwiJXMgKCVhKVxcXCIgLCBzaGFwZT1ub25lXVwiIGkgbmFcbiAgICAgICAgICAgTmJyLnByaW50IGVsKSlcbiAgICBzLnNuYXBzaG90X3Rva2Vuc1xuXG5sZXQgd3JpdGVfc25hcHNob3Qgb2IgcyA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNuYXBzaG90X2V2ZW50XCIgWW9qc29uLkJhc2ljLndyaXRlX2ludCBvYlxuICAgICAgcy5zbmFwc2hvdF9ldmVudFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwic25hcHNob3RfdGltZVwiIFlvanNvbi5CYXNpYy53cml0ZV9mbG9hdCBvYlxuICAgICAgcy5zbmFwc2hvdF90aW1lXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF9hZ2VudHNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2xpc3RcbiAgICAgICAgIChKc29uVXRpbC53cml0ZV9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLndyaXRlX2ludFxuICAgICAgICAgICAgVXNlcl9ncmFwaC53cml0ZV9jb25uZWN0ZWRfY29tcG9uZW50KSlcbiAgICAgIG9iIHMuc25hcHNob3RfYWdlbnRzXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJzbmFwc2hvdF90b2tlbnNcIlxuICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5XG4gICAgICAgICAoSnNvblV0aWwud3JpdGVfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgTmJyLndyaXRlX3QpKVxuICAgICAgb2Igcy5zbmFwc2hvdF90b2tlbnNcbiAgaW5cbiAgQnVmZmVyLmFkZF9jaGFyIG9iICd9J1xuXG5sZXQgcmVhZF9zbmFwc2hvdCBwIGxiID1cbiAgbGV0IHNuYXBzaG90X2V2ZW50LCBzbmFwc2hvdF90aW1lLCBzbmFwc2hvdF9hZ2VudHMsIHNuYXBzaG90X3Rva2VucyA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChlLCB0aSwgYSwgdCkga2V5IHAgbGIgLT5cbiAgICAgICAgaWYga2V5ID0gXCJzbmFwc2hvdF9ldmVudFwiIHRoZW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQgcCBsYiwgdGksIGEsIHRcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcInNuYXBzaG90X3RpbWVcIiB0aGVuXG4gICAgICAgICAgZSwgWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyIHAgbGIsIGEsIHRcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcInNuYXBzaG90X2FnZW50c1wiIHRoZW5cbiAgICAgICAgICAoIGUsXG4gICAgICAgICAgICB0aSxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2xpc3RcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX2ludFxuICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnJlYWRfY29ubmVjdGVkX2NvbXBvbmVudClcbiAgICAgICAgICAgICAgcCBsYixcbiAgICAgICAgICAgIHQgKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwic25hcHNob3RfdG9rZW5zXCIpIGluXG4gICAgICAgICAgKCBlLFxuICAgICAgICAgICAgdGksXG4gICAgICAgICAgICBhLFxuICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXlcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBOYnIucmVhZF90KVxuICAgICAgICAgICAgICBwIGxiIClcbiAgICAgICAgKSlcbiAgICAgICgtMSwgbmFuLCBbXSwgW3x8XSkgcCBsYlxuICBpblxuICB7IHNuYXBzaG90X2V2ZW50OyBzbmFwc2hvdF90aW1lOyBzbmFwc2hvdF9hZ2VudHM7IHNuYXBzaG90X3Rva2VucyB9XG5cbmxldCBzdHJpbmdfb2Zfc25hcHNob3QgPSBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGUgd3JpdGVfc25hcHNob3RcblxubGV0IHNuYXBzaG90X29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuXG50eXBlIGRpbl9kYXRhID0ge1xuICBkaW5fa2luZDogUHJpbWl0aXZlcy5kaW5fa2luZDtcbiAgZGluX3N0YXJ0OiBmbG9hdDtcbiAgZGluX2hpdHM6IGludCBhcnJheTtcbiAgZGluX2ZsdXhzOiBmbG9hdCBhcnJheSBhcnJheTtcbn1cblxudHlwZSBkaW4gPSB7IGRpbl9ydWxlczogc3RyaW5nIGFycmF5OyBkaW5fZGF0YTogZGluX2RhdGE7IGRpbl9lbmQ6IGZsb2F0IH1cblxubGV0IHdyaXRlX2RpbiBvYiBmID1cbiAgbGV0ICgpID0gQnVmZmVyLmFkZF9jaGFyIG9iICd7JyBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2tpbmRcIiBQcmltaXRpdmVzLndyaXRlX2Rpbl9raW5kIG9iXG4gICAgICBmLmRpbl9kYXRhLmRpbl9raW5kXG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fc3RhcnRcIiBZb2pzb24uQmFzaWMud3JpdGVfZmxvYXQgb2JcbiAgICAgIGYuZGluX2RhdGEuZGluX3N0YXJ0XG4gIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9XG4gICAgSnNvblV0aWwud3JpdGVfZmllbGQgXCJkaW5fZW5kXCIgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0IG9iIGYuZGluX2VuZFxuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX3J1bGVzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nKVxuICAgICAgb2IgZi5kaW5fcnVsZXNcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpbl9oaXRzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSBZb2pzb24uQmFzaWMud3JpdGVfaW50KVxuICAgICAgb2IgZi5kaW5fZGF0YS5kaW5faGl0c1xuICBpblxuICBsZXQgKCkgPSBKc29uVXRpbC53cml0ZV9jb21tYSBvYiBpblxuICBsZXQgKCkgPVxuICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiZGluX2ZsdXhzXCJcbiAgICAgIChKc29uVXRpbC53cml0ZV9hcnJheSAoSnNvblV0aWwud3JpdGVfYXJyYXkgWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0KSlcbiAgICAgIG9iIGYuZGluX2RhdGEuZGluX2ZsdXhzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfZGluIHAgbGIgPVxuICBsZXQgZGluX2tpbmQsIGRpbl9zdGFydCwgZGluX2hpdHMsIGRpbl9mbHV4cywgZGluX3J1bGVzLCBkaW5fZW5kID1cbiAgICBZb2pzb24uQmFzaWMucmVhZF9maWVsZHNcbiAgICAgIChmdW4gKGssIHMsIGgsIGYsIHIsIGUpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwiZGluX2tpbmRcIiB0aGVuXG4gICAgICAgICAgUHJpbWl0aXZlcy5yZWFkX2Rpbl9raW5kIHAgbGIsIHMsIGgsIGYsIHIsIGVcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9zdGFydFwiIHRoZW5cbiAgICAgICAgICBrLCBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIgcCBsYiwgaCwgZiwgciwgZVxuICAgICAgICBlbHNlIGlmIGtleSA9IFwiZGluX2hpdHNcIiB0aGVuXG4gICAgICAgICAgaywgcywgWW9qc29uLkJhc2ljLnJlYWRfYXJyYXkgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIsIGYsIHIsIGVcbiAgICAgICAgZWxzZSBpZiBrZXkgPSBcImRpbl9mbHV4c1wiIHRoZW5cbiAgICAgICAgICAoIGssXG4gICAgICAgICAgICBzLFxuICAgICAgICAgICAgaCxcbiAgICAgICAgICAgIFlvanNvbi5CYXNpYy5yZWFkX2FycmF5XG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9udW1iZXIpXG4gICAgICAgICAgICAgIHAgbGIsXG4gICAgICAgICAgICByLFxuICAgICAgICAgICAgZSApXG4gICAgICAgIGVsc2UgaWYga2V5ID0gXCJkaW5fZW5kXCIgdGhlblxuICAgICAgICAgIGssIHMsIGgsIGYsIHIsIFlvanNvbi5CYXNpYy5yZWFkX251bWJlciBwIGxiXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJkaW5fcnVsZXNcIikgaW5cbiAgICAgICAgICBrLCBzLCBoLCBmLCBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgZVxuICAgICAgICApKVxuICAgICAgKFByaW1pdGl2ZXMuQUJTT0xVVEUsIG5hbiwgW3x8XSwgW3x8XSwgW3x8XSwgbmFuKVxuICAgICAgcCBsYlxuICBpblxuICB7XG4gICAgZGluX3J1bGVzO1xuICAgIGRpbl9lbmQ7XG4gICAgZGluX2RhdGEgPSB7IGRpbl9raW5kOyBkaW5fc3RhcnQ7IGRpbl9oaXRzOyBkaW5fZmx1eHMgfTtcbiAgfVxuXG5sZXQgc3RyaW5nX29mX2RpbiA9IEpzb25VdGlsLnN0cmluZ19vZl93cml0ZSB3cml0ZV9kaW5cblxubGV0IGRpbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5cbmxldCBwcmludF9kb3RfZGluID91dWlkIGRlc2MgZmx1eCA9XG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIkBbPHY+JWFcIlxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgeCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLy8gXFxcInV1aWRcXFwiIDogXFxcIiVpXFxcIixALFwiIHgpKVxuICAgICAgdXVpZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgIFwiZGlncmFwaCBHeyBsYWJlbD1cXFwiRHluYW1pYyBpbmZsdWVuY2UgbmV0d29ya1xcXCIgOyBsYWJlbGxvYz1cXFwidFxcXCIgOyBcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGRlc2MgXCJub2RlIFtzaGFwZT1ib3gsc3R5bGU9ZmlsbGVkLGZpbGxjb2xvcj1saWdodHNreWJsdWVdQCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLmFycmF5XG4gICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAoZnVuIHMgLT5cbiAgICAgICAgUHAuYXJyYXkgUHAuZW1wdHkgKGZ1biBkIGYgdiAtPlxuICAgICAgICAgICAgaWYgdiA9IDAuIHRoZW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgY29sb3IsIGFycm93aGVhZCA9XG4gICAgICAgICAgICAgICAgaWYgdiA8IDAuIHRoZW5cbiAgICAgICAgICAgICAgICAgIFwicmVkM1wiLCBcInRlZVwiXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgXCJncmVlbjNcIiwgXCJub3JtYWxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgXCJAWzxoPlxcXCIlc1xcXCIgLT4gXFxcIiVzXFxcIiBcXFxuICAgICAgICAgICAgICAgICBbd2VpZ2h0PSVkLGxhYmVsPVxcXCIlLjNmXFxcIixjb2xvcj0lcyxhcnJvd2hlYWQ9JXNdO0BdQCxcIlxuICAgICAgICAgICAgICAgIGZsdXguZGluX3J1bGVzLihzKSBmbHV4LmRpbl9ydWxlcy4oZClcbiAgICAgICAgICAgICAgICAoYWJzIChpbnRfb2ZfZmxvYXQgdikpXG4gICAgICAgICAgICAgICAgdiBjb2xvciBhcnJvd2hlYWRcbiAgICAgICAgICAgICkpKVxuICAgICAgZGVzYyBmbHV4LmRpbl9kYXRhLmRpbl9mbHV4c1xuICBpblxuICBGb3JtYXQuZnByaW50ZiBkZXNjIFwifUBdQC5cIlxuXG5sZXQgcHJpbnRfaHRtbF9kaW4gZGVzYyBmbHV4ID1cbiAgUHBfaHRtbC5ncmFwaF9wYWdlXG4gICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkR5bmFtaWMgaW5mbHVlbmNlIG1hcFwiKVxuICAgIH5zdWJ0aXRsZTooZnVuIGYgLT5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICBcImJldHdlZW4gdCA9IDxzcGFuIGlkPVxcXCJiZWdpbl90aW1lXFxcIj48L3NwYW4+cyBhbmQgdCA9IDxzcGFuIFxcXG4gICAgICAgICBpZD1cXFwiZW5kX3RpbWVcXFwiPjwvc3Bhbj5zICg8c3BhbiBpZD1cXFwibmJfZXZlbnRzXFxcIj48L3NwYW4+IGV2ZW50cylcIilcbiAgICBbXG4gICAgICBcImh0dHA6Ly9kM2pzLm9yZy9kMy52NC5taW4uanNcIjtcbiAgICAgIFwiaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vanF1ZXJ5LTMuMy4xLm1pbi5qc1wiO1xuICAgIF1cbiAgICAoZnVuIGYgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PHN0eWxlPkAsLmNob3JkIHBhdGgge0AgZmlsbC1vcGFjaXR5OiAuNjc7QCBcIlxuICAgICAgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJzdHJva2U6ICMwMDA7QCBzdHJva2Utd2lkdGg6IC41cHg7QCB9QF1ALDwvc3R5bGU+XCIpXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGRpdiBpZD1cXFwiZmx1eF9jb250YWluZXJcXFwiPjwvZGl2PkAsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxmb3JtPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2IDI+PGRpdiBjbGFzcz1cXFwiZm9ybS1ncm91cFxcXCI+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsYWJlbCBmb3I9XFxcImNvcnJlY3Rpb25cXFwiPkNvcnJlY3Rpb248L2xhYmVsPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8c2VsZWN0IGlkPVxcXCJzZWxlY3RfY29ycmVjdGlvblxcXCIgY2xhc3M9XFxcImZvcm0tY29udHJvbFxcXCIgXFxcbiAgICAgICAgICAgaWQ9XFxcImNvcnJlY3Rpb25cXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPG9wdGlvbiB2YWx1ZT1cXFwibm9uZVxcXCI+Tm9uZTwvb3B0aW9uPkAsXCIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8b3B0aW9uIHZhbHVlPVxcXCJoaXRzXFxcIj5SdWxlIG9jY3VyZW5jZXM8L29wdGlvbj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiPG9wdGlvbiB2YWx1ZT1cXFwidGltZVxcXCI+VGltZTwvb3B0aW9uPkBdQCw8L3NlbGVjdD5ALDwvZGl2PkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCI8aW5wdXQgaWQ9XFxcInRvZ2dsZV9zZWxlY3RlZF9ydWxlc1xcXCIgdHlwZT1cXFwiYnV0dG9uXFxcIiB2YWx1ZT1cXFwiVG9nZ2xlIFxcXG4gICAgICAgICAgIHNlbGVjdGVkIHJ1bGVzXFxcIj5ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48bGFiZWwgY2xhc3M9XFxcImNoZWNrYm94LWlubGluZVxcXCI+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiPGlucHV0IGlkPVxcXCJjaGVja2JveF9zZWxmX2luZmx1ZW5jZVxcXCIgdHlwZT1cXFwiY2hlY2tib3hcXFwiPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiUnVsZXMgc2VsZiBpbmZsdWVuY2VAXUAsPC9sYWJlbD5AXUAsPC9mb3JtPkAsXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGZvcm0gaWQ9XFxcIm1lbnVcXFwiPjwvZm9ybT5ALFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwlc0AsPC9zY3JpcHQ+QF1ALFwiXG4gICAgICAgICAgUmVzb3VyY2Vfc3RyaW5ncy5jb21tb25fanNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxzY3JpcHQ+QCwlc0AsPC9zY3JpcHQ+QF1ALFwiXG4gICAgICAgICAgUmVzb3VyY2Vfc3RyaW5ncy5mbHV4X2pzXG4gICAgICBpblxuXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJAWzx2IDI+PHNjcmlwdD5ALFxcXCJ1c2Ugc3RyaWN0XFxcIkAsQFt2YXIgZmx1eCA9QCAlcztAXUAsXCJcbiAgICAgICAgICAoc3RyaW5nX29mX2RpbiBmbHV4KVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgaWRzID0ge0BbQCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJiZWdpblRpbWVJZFxcXCIgOiBcXFwiYmVnaW5fdGltZVxcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJlbmRUaW1lSWRcXFwiIDogXFxcImVuZF90aW1lXFxcIixAIFwiIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiXFxcInNlbGVjdENvcnJlY3Rpb25JZFxcXCIgOiBcXFwic2VsZWN0X2NvcnJlY3Rpb25cXFwiLEAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiXFxcIm5iRXZlbnRzSWRcXFwiIDogXFxcIm5iX2V2ZW50c1xcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIlxcXCJydWxlc0NoZWNrYm94ZXNJZFxcXCIgOiBcXFwibWVudVxcXCIsQCBcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIlxcXCJ0b2dnbGVSdWxlc0lkXFxcIiA6IFxcXCJ0b2dnbGVfc2VsZWN0ZWRfcnVsZXNcXFwiLEAgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgXCJcXFwiY2hlY2tib3hTZWxmSW5mbHVlbmNlSWRcXFwiIDogXFxcImNoZWNrYm94X3NlbGZfaW5mbHVlbmNlXFxcIn07QF1AIFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIndpbmRvdy5vbmxvYWQgPSBmdW5jdGlvbigpeyBAW0AsXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgZmx1eF9tYXAgPSBuZXcgZmx1eE1hcChpZHMpO0AgXCIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJmbHV4X21hcC5zZXRGbHV4KGZsdXgpOyB9OyBAXUAsXCIgaW5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAsPC9zY3JpcHQ+XCIpXG4gICAgZGVzY1xuXG50eXBlIHBsb3QgPSB7IHBsb3RfbGVnZW5kOiBzdHJpbmcgYXJyYXk7IHBsb3Rfc2VyaWVzOiBmbG9hdCBvcHRpb24gYXJyYXkgbGlzdCB9XG5cbmxldCBhZGRfcGxvdF9saW5lIG5ld19vYnNlcnZhYmxlcyBwbG90ID1cbiAgbGV0IG5ld192YWx1ZXMgPSBBcnJheS5tYXAgKGZ1biBuYnIgLT4gTmJyLnRvX2Zsb2F0IG5icikgbmV3X29ic2VydmFibGVzIGluXG4gIHtcbiAgICBwbG90X2xlZ2VuZCA9IHBsb3QucGxvdF9sZWdlbmQ7XG4gICAgcGxvdF9zZXJpZXMgPSBuZXdfdmFsdWVzIDo6IHBsb3QucGxvdF9zZXJpZXM7XG4gIH1cblxubGV0IGluaXRfcGxvdCBlbnYgPVxuICBsZXQgbm9Db3VudGVycyA9IGZhbHNlIGluXG4gIGxldCBwbG90X2xlZ2VuZCA9XG4gICAgTW9kZWwubWFwX29ic2VydmFibGVzXG4gICAgICAoZnVuIG8gLT5cbiAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCIgKEthcHBhX3ByaW50ZXIuYWxnX2V4cHIgfm5vQ291bnRlcnMgfmVudikgbylcbiAgICAgIGVudlxuICBpblxuICB7IHBsb3RfbGVnZW5kOyBwbG90X3NlcmllcyA9IFtdIH1cblxubGV0IHdyaXRlX3Bsb3Qgb2IgZiA9XG4gIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImxlZ2VuZFwiXG4gICAgICAoSnNvblV0aWwud3JpdGVfYXJyYXkgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZylcbiAgICAgIG9iIGYucGxvdF9sZWdlbmRcbiAgaW5cbiAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgbGV0ICgpID1cbiAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcInNlcmllc1wiXG4gICAgICAoSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgKEpzb25VdGlsLndyaXRlX2FycmF5IChKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2Zsb2F0KSkpXG4gICAgICBvYiBmLnBsb3Rfc2VyaWVzXG4gIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfcGxvdCBwIGxiID1cbiAgbGV0IHBsb3RfbGVnZW5kLCBwbG90X3NlcmllcyA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChsLCBzKSBrZXkgcCBsYiAtPlxuICAgICAgICBpZiBrZXkgPSBcInNlcmllc1wiIHRoZW5cbiAgICAgICAgICAoIGwsXG4gICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9saXN0XG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9hcnJheVxuICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9vcHRpb24gWW9qc29uLkJhc2ljLnJlYWRfbnVtYmVyKSlcbiAgICAgICAgICAgICAgcCBsYiApXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCAoKSA9IGFzc2VydCAoa2V5ID0gXCJsZWdlbmRcIikgaW5cbiAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9hcnJheSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYiwgc1xuICAgICAgICApKVxuICAgICAgKFt8fF0sIFtdKSBwIGxiXG4gIGluXG4gIHsgcGxvdF9sZWdlbmQ7IHBsb3Rfc2VyaWVzIH1cblxubGV0IHN0cmluZ19vZl9wbG90ID0gSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlIHdyaXRlX3Bsb3RcblxubGV0IHBsb3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcblxubGV0IHByaW50X3Bsb3Rfc2VwIGlzX3RzdiBmID1cbiAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgKGlmIGlzX3RzdiB0aGVuXG4gICAgICAgXCJcXHRcIlxuICAgICBlbHNlXG4gICAgICAgXCIsXCIpXG5cbmxldCBwcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2IGYgYSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhQF1ALlwiXG4gICAgKFBwLmFycmF5IChwcmludF9wbG90X3NlcCBpc190c3YpIChmdW4gXyBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiB4KSlcbiAgICBhXG5cbmxldCBwcmludF9wbG90X2xpbmUgfmlzX3RzdiBwcCBmIGwgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYUBdQC5cIlxuICAgIChQcC5hcnJheSAocHJpbnRfcGxvdF9zZXAgaXNfdHN2KSAoZnVuIF8gLT4gcHApKVxuICAgIGxcblxubGV0IGV4cG9ydF9wbG90IH5pc190c3YgcGxvdCA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhJWFcIlxuICAgIChwcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2KVxuICAgIHBsb3QucGxvdF9sZWdlbmRcbiAgICAoUHAubGlzdCBQcC5lbXB0eVxuICAgICAgIChwcmludF9wbG90X2xpbmUgfmlzX3RzdiAoUHAub3B0aW9uIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJWVcIikpKSlcbiAgICAoTGlzdC5yZXYgcGxvdC5wbG90X3NlcmllcylcblxubGV0IHByaW50X3dhcm5pbmcgP3BvcyBmIG1zZyA9XG4gIGxldCBwciBmICgpID0gRm9ybWF0LmZwcmludGYgZiBcIldhcm5pbmc6IEBbJXRAXVwiIG1zZyBpblxuICBtYXRjaCBwb3Mgd2l0aFxuICB8IFNvbWUgcG9zIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1ALlwiIChMb2MucHJpbnRfYW5ub3RlZCBwcikgKCgpLCBwb3MpXG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQFslYUBdQC5cIiBwciAoKVxuXG50eXBlIGZpbGVfbGluZSA9IHsgZmlsZV9saW5lX25hbWU6IHN0cmluZyBvcHRpb247IGZpbGVfbGluZV90ZXh0OiBzdHJpbmcgfVxuXG50eXBlIHQgPVxuICB8IERJTiBvZiBzdHJpbmcgKiBkaW5cbiAgfCBEZWx0YUFjdGl2aXRpZXMgb2YgaW50ICogKGludCAqIChmbG9hdCAqIGZsb2F0KSkgbGlzdFxuICB8IFBsb3Qgb2YgTmJyLnQgYXJyYXkgICgqKiBNdXN0IGhhdmUgbGVuZ3RoID49IDEgKGF0IGxlYXN0IFtUXSBvciBbRV0pICopXG4gIHwgUHJpbnQgb2YgZmlsZV9saW5lXG4gIHwgVHJhY2VTdGVwIG9mIFRyYWNlLnN0ZXBcbiAgfCBTbmFwc2hvdCBvZiBzdHJpbmcgKiBzbmFwc2hvdFxuICB8IExvZyBvZiBzdHJpbmdcbiAgfCBTcGVjaWVzIG9mIHN0cmluZyAqIGZsb2F0ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG4gIHwgV2FybmluZyBvZiBMb2MudCBvcHRpb24gKiAoRm9ybWF0LmZvcm1hdHRlciAtPiB1bml0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGNyZWF0ZV9mbHV4IGVudiBjb3VudGVyIGRpbl9raW5kID1cbiAgbGV0IHNpemUgPSBNb2RlbC5uYl9zeW50YWN0aWNfcnVsZXMgZW52ICsgMSBpblxuICB7XG4gICAgRGF0YS5kaW5fa2luZDtcbiAgICBEYXRhLmRpbl9zdGFydCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXI7XG4gICAgRGF0YS5kaW5faGl0cyA9IEFycmF5Lm1ha2Ugc2l6ZSAwO1xuICAgIERhdGEuZGluX2ZsdXhzID0gQXJyYXkubWFrZV9tYXRyaXggc2l6ZSBzaXplIDAuO1xuICB9XG5cbmxldCBpbmNyX2ZsdXhfZmx1eCBvZl9ydWxlIG9uX3J1bGUgdiBmbHV4ID1cbiAgZmx1eC5EYXRhLmRpbl9mbHV4cy4ob2ZfcnVsZSkuKG9uX3J1bGUpIDwtXG4gICAgZmx1eC5EYXRhLmRpbl9mbHV4cy4ob2ZfcnVsZSkuKG9uX3J1bGUpICsuIHZcblxubGV0IGluY3JfZmx1eF9oaXQgb2ZfcnVsZSBmbHV4ID1cbiAgZmx1eC5EYXRhLmRpbl9oaXRzLihvZl9ydWxlKSA8LSBzdWNjIGZsdXguRGF0YS5kaW5faGl0cy4ob2ZfcnVsZSlcblxubGV0IHN0b3BfZmx1eCBlbnYgY291bnRlciBkaW5fZGF0YSA9XG4gIGxldCBzaXplID0gTW9kZWwubmJfc3ludGFjdGljX3J1bGVzIGVudiArIDEgaW5cbiAgbGV0IGRpbl9ydWxlcyA9XG4gICAgQXJyYXkuaW5pdCBzaXplIChmdW4geCAtPlxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KSB4KVxuICBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGRpbl9kYXRhLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiAoKVxuICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSB8IFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkgLT5cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAtPlxuICAgICAgICAgIEFycmF5Lml0ZXJpIChmdW4gaiB4IC0+XG4gICAgICAgICAgICAgIGRpbl9kYXRhLkRhdGEuZGluX2ZsdXhzLihpKS4oaikgPC1cbiAgICAgICAgICAgICAgICAoaWYgZGluX2RhdGEuRGF0YS5kaW5faGl0cy4oaSkgPSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICB4XG4gICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICB4IC8uIGZsb2F0X29mX2ludCBkaW5fZGF0YS5EYXRhLmRpbl9oaXRzLihpKSkpKVxuICAgICAgICBkaW5fZGF0YS5EYXRhLmRpbl9mbHV4c1xuICBpblxuICB7IERhdGEuZGluX3J1bGVzOyBEYXRhLmRpbl9kYXRhOyBEYXRhLmRpbl9lbmQgPSBDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyIH1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgKCogcGF0IC0+IHNldCBvZiByb290cyAqKVxuICBvZl9wYXR0ZXJuczogSW50Q29sbGVjdGlvbi50IFBhdHRlcm4uT2JzTWFwLnQ7XG4gICgqIHBhdCAtPiBjYyAtPiBzZXQgb2Ygcm9vdHMgKilcbiAgb2ZfdW5hcnlfcGF0dGVybnM6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudCBQYXR0ZXJuLk9ic01hcC50O1xufVxuXG50eXBlIG1vZF9jY3NfY2FjaGUgPSAoaW50LCB1bml0KSBIYXNodGJsLnRcblxubGV0IGVtcHR5IGVudiA9XG4gIHtcbiAgICBvZl9wYXR0ZXJucyA9XG4gICAgICBQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+XG4gICAgICAgICAgSW50Q29sbGVjdGlvbi5jcmVhdGUgNjQpO1xuICAgIG9mX3VuYXJ5X3BhdHRlcm5zID1cbiAgICAgIFBhdHRlcm4uRW52Lm5ld19vYnNfbWFwIChNb2RlbC5kb21haW4gZW52KSAoZnVuIF8gLT4gTW9kcy5JbnRNYXAuZW1wdHkpO1xuICB9XG5cbmxldCBpbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlIHBhdHRlcm4gbWF0Y2hpbmdzID1cbiAgaWYgSW50Q29sbGVjdGlvbi5pc19lbXB0eSAoUGF0dGVybi5PYnNNYXAuZ2V0IHN0YXRlLm9mX3BhdHRlcm5zIHBhdHRlcm4pIHRoZW5cbiAgICBQYXR0ZXJuLk9ic01hcC5zZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybiBtYXRjaGluZ3NcblxubGV0IGFkZF9pbnRzZXRfaW5faW50bWFwIGlkIHNldCBtYXAgPVxuICBpZiBNb2RzLkludFNldC5pc19lbXB0eSBzZXQgdGhlblxuICAgIE1vZHMuSW50TWFwLnJlbW92ZSBpZCBtYXBcbiAgZWxzZVxuICAgIE1vZHMuSW50TWFwLmFkZCBpZCBzZXQgbWFwXG5cbigqIEJyZWFrIGFwYXJ0IGNvbm5lY3RlZCBjb21wb25lbnQ6XG4gICBVcGRhdGUgXCJyb290cyBvZiB1bmFyeSBwYXR0ZXJuc1wiXG4gICBFYXN5LCBJIHNob3VsZCBub3QgaGF2ZSB0byByZXdyaXRlIHRoaXMuXG4gICBTaG91bGQgY2FjaGVzIGJlIGhhbmRsZWQgYXQgdGhpcyBsZXZlbCA/IEkgZG8gbnQgdGhpbmsgc29cbiAgIGFuZCBJIHdpbGwgcHJvYmFibHkgY2xlYW4gdGhpcy5cbiopXG5sZXQgYnJlYWtfYXBhcnRfY2Mgc3RhdGUgZWRnZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIChvcmlnaW5fY2MsIG5ld19jYykgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBtb2RfY29ubiAtPlxuICAgICAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgbW9kX2Nvbm4gbmV3X2NjICgpIGluXG4gICAgICAgIEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubiBvcmlnaW5fY2MgKClcbiAgICBpblxuICAgIFBhdHRlcm4uT2JzTWFwLml0ZXJpXG4gICAgICAoZnVuIGNjX2lkIGNjX21hcCAtPlxuICAgICAgICBsZXQgb3NldCA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IG9yaWdpbl9jYyBjY19tYXBcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbm90IChNb2RzLkludFNldC5pc19lbXB0eSBvc2V0KSB0aGVuIChcbiAgICAgICAgICBsZXQgbnNldCwgb3NldCcgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQucGFydGl0aW9uXG4gICAgICAgICAgICAgIChmdW4geCAtPiBFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCB4IGVkZ2VzID0gU29tZSBuZXdfY2MpXG4gICAgICAgICAgICAgIG9zZXRcbiAgICAgICAgICBpblxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBjY19pZFxuICAgICAgICAgICAgKGFkZF9pbnRzZXRfaW5faW50bWFwIG5ld19jYyBuc2V0XG4gICAgICAgICAgICAgICAoYWRkX2ludHNldF9pbl9pbnRtYXAgb3JpZ2luX2NjIG9zZXQnIGNjX21hcCkpXG4gICAgICAgICkpXG4gICAgICBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJuc1xuXG4oKiBTYW1lOiBub3QgdmVyeSBzdWJ0bGUuIFlvdSBqdXN0IHByb3BhZ2F0ZS4gKilcbmxldCBtZXJnZV9jYyBzdGF0ZSA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgKGNjMSwgY2MyKSAtPlxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBtb2RfY29ubmVjdGl2aXR5X3N0b3JlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIG1vZF9jb25uZWN0aXZpdHkgLT5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2MyICgpIGluXG4gICAgICAgIEhhc2h0YmwucmVwbGFjZSBtb2RfY29ubmVjdGl2aXR5IGNjMSAoKVxuICAgIGluXG4gICAgUGF0dGVybi5PYnNNYXAuaXRlcmlcbiAgICAgIChmdW4gY2NfaWQgY2NfbWFwIC0+XG4gICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLnBvcCBjYzIgY2NfbWFwIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIC0+ICgpXG4gICAgICAgIHwgU29tZSBzZXQyLCBjY19tYXAnIC0+XG4gICAgICAgICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MxIGNjX21hcCBpblxuICAgICAgICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBjY19pZFxuICAgICAgICAgICAgKGFkZF9pbnRzZXRfaW5faW50bWFwIGNjMSAoTW9kcy5JbnRTZXQudW5pb24gc2V0MSBzZXQyKSBjY19tYXAnKSlcbiAgICAgIHN0YXRlLm9mX3VuYXJ5X3BhdHRlcm5zXG5cbigqIE1vc3Qgb2YgdGhlIGNvZGUgaXMgdG8gZGVhbCB3aXRoIHVuYXJ5X2luc3RhbmNlcy5cbiAgIERvZXMgbm90aGluZyBmYW5jeS5cbiAgIEFsc28gdGFrZXMgdGhlIGNhY2hlIGFzIGFuIGFyZ3VtZW50ICopXG5sZXQgdXBkYXRlX3Jvb3RzIHN0YXRlIGlzX2FkZCB1bmFyeV9jY3MgZWRnZXMgbW9kX2Nvbm5lY3Rpdml0eSBwYXR0ZXJuIHJvb3QgPVxuICBsZXQgdmEgPSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0dGVybiBpblxuICBsZXQgKCkgPVxuICAgIChpZiBpc19hZGQgdGhlblxuICAgICAgIEludENvbGxlY3Rpb24uYWRkXG4gICAgIGVsc2VcbiAgICAgICBJbnRDb2xsZWN0aW9uLnJlbW92ZSlcbiAgICAgIHJvb3QgdmFcbiAgaW5cbiAgaWYgUGF0dGVybi5TZXQubWVtIHBhdHRlcm4gdW5hcnlfY2NzIHRoZW4gKFxuICAgIGxldCBjY19tYXAgPSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfdW5hcnlfcGF0dGVybnMgcGF0dGVybiBpblxuICAgIGxldCBjY19pZCA9XG4gICAgICAoKiBUaGUgb25seSBjYXNlIHdoZXJlIGdldF9jb25uZWN0ZWRfY29tcG9uZW50IGlzIE5vbmUgaXMgd2hlblxuICAgICAgICAgW25vdCBpc19hZGRdIGFuZCBbcm9vdF0gaGFzIGp1c3QgYmVlbiBlcmFzZWQhIEJ1dCwganVzdFxuICAgICAgICAgYmVmb3JlIGJlaW5nIGVyYXNlZCwgd2Uga25vdyB0aGF0IGFuIGFnZW50IGlzIGluIGl0cyBvd25cbiAgICAgICAgIGNvbm5lY3RlZCBjb21wb25lbnQuLi4gKilcbiAgICAgIE9wdGlvbl91dGlsLnVuc29tZSByb290IChFZGdlcy5nZXRfY29ubmVjdGVkX2NvbXBvbmVudCByb290IGVkZ2VzKVxuICAgIGluXG4gICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1vZF9jb25uZWN0aXZpdHkgY2NfaWQgKCkgaW5cbiAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjX2lkIGNjX21hcCBpblxuICAgIGxldCBzZXQnID1cbiAgICAgIChpZiBpc19hZGQgdGhlblxuICAgICAgICAgTW9kcy5JbnRTZXQuYWRkXG4gICAgICAgZWxzZVxuICAgICAgICAgTW9kcy5JbnRTZXQucmVtb3ZlKVxuICAgICAgICByb290IHNldFxuICAgIGluXG4gICAgbGV0IGNjX21hcCcgPSBhZGRfaW50c2V0X2luX2ludG1hcCBjY19pZCBzZXQnIGNjX21hcCBpblxuICAgIFBhdHRlcm4uT2JzTWFwLnNldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXR0ZXJuIGNjX21hcCdcbiAgKVxuXG5sZXQgbnVtYmVyIHIgcGF0ID0gSW50Q29sbGVjdGlvbi5zaXplIChQYXR0ZXJuLk9ic01hcC5nZXQgci5vZl9wYXR0ZXJucyBwYXQpXG5cbmxldCBwcmludF9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiByb290c19vZl9wYXR0ZXJucyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQF1cIlxuICAgIChQYXR0ZXJuLk9ic01hcC5wcmludCBQcC5zcGFjZSAoZnVuIHBhdHRlcm4gZiByb290cyAtPlxuICAgICAgICAgaWYgSW50Q29sbGVjdGlvbi5zaXplIHJvb3RzID4gMCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyMgQFslYUBdID09PkAgQFslYUBdQF1cIlxuICAgICAgICAgICAgIChQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSlcbiAgICAgICAgICAgICBwYXR0ZXJuIEludENvbGxlY3Rpb24ucHJpbnQgcm9vdHMpKVxuICAgIHJvb3RzX29mX3BhdHRlcm5zXG5cbmxldCBwcmludF91bmFyeV9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiByb290c19vZl9wYXR0ZXJucyA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxob3Y+JWFAXVwiXG4gICAgKFBhdHRlcm4uT2JzTWFwLnByaW50IFBwLnNwYWNlIChmdW4gcGF0dGVybiBmIHJvb3RfbWFwcyAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbIyBAWyVhQF0gPT0+QCBAWyVhQF1AXVwiXG4gICAgICAgICAgIChQYXR0ZXJuLnByaW50IH5ub0NvdW50ZXJzID9kb21haW4gfndpdGhfaWQ6dHJ1ZSlcbiAgICAgICAgICAgcGF0dGVyblxuICAgICAgICAgICAoUHAuc2V0IE1vZHMuSW50TWFwLmJpbmRpbmdzIFBwLnNwYWNlIChmdW4gZiAoX2NjX2lkLCByb290cykgLT5cbiAgICAgICAgICAgICAgICBNb2RzLkludFNldC5wcmludCBmIHJvb3RzKSlcbiAgICAgICAgICAgcm9vdF9tYXBzKSlcbiAgICByb290c19vZl9wYXR0ZXJuc1xuXG5sZXQgZGVidWdfcHJpbnQgZiBzdGF0ZSA9XG4gIGxldCBub0NvdW50ZXJzID0gdHJ1ZSBpblxuICBsZXQgZG9tYWluID0gTm9uZSBpblxuICBsZXQgKCkgPSBwcmludF9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiBzdGF0ZS5vZl9wYXR0ZXJucyBpblxuICBwcmludF91bmFyeV9pbmplY3Rpb25zIH5ub0NvdW50ZXJzID9kb21haW4gZiBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJuc1xuXG4oKiBVc2VmdWwgc2hvcnRjdXRzICopXG5cbmxldCBvZl9wYXR0ZXJuIHBhdF9pZCBzdGF0ZSA9XG4gIHRyeSBQYXR0ZXJuLk9ic01hcC5nZXQgc3RhdGUub2ZfcGF0dGVybnMgcGF0X2lkXG4gIHdpdGggTm90X2ZvdW5kIC0+IEludENvbGxlY3Rpb24uY3JlYXRlIDFcblxubGV0IG9mX3VuYXJ5X3BhdHRlcm4gcGF0X2lkIHN0YXRlID1cbiAgdHJ5IFBhdHRlcm4uT2JzTWFwLmdldCBzdGF0ZS5vZl91bmFyeV9wYXR0ZXJucyBwYXRfaWRcbiAgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRNYXAuZW1wdHlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHtcbiAgKCogRm9yIGNvdW50ZXJmYWN0dWFsIHNpbXVsYXRpb24sIHRoZXJlIHdvdWxkIGJlIHR3byBvZiB0aGVzZS4gKilcbiAgcm9vdHM6IFJvb3RzLnQ7XG59XG5cbnR5cGUgbWVzc2FnZSA9IHVuaXRcblxubGV0IHJlY2VpdmVfbWVzc2FnZSBfIHN0ID0gc3RcbmxldCBlbXB0eSBlbnYgPSB7IHJvb3RzID0gUm9vdHMuZW1wdHkgZW52IH1cblxubGV0IGluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gc3RhdGUgcGF0dGVybiBtYXRjaGluZ3MgPVxuICBSb290cy5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlLnJvb3RzIHBhdHRlcm4gbWF0Y2hpbmdzXG5cbmxldCBicmVha19hcGFydF9jYyBzdGF0ZSBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBjY3MgPVxuICBSb290cy5icmVha19hcGFydF9jYyBzdGF0ZS5yb290cyBlZGdlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBjY3NcblxubGV0IG1lcmdlX2NjIHN0YXRlID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjcyA9XG4gIFJvb3RzLm1lcmdlX2NjIHN0YXRlLnJvb3RzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlIGNjc1xuXG5sZXQgdXBkYXRlX3Jvb3RzIHN0YXRlIGlzX2FkZCB1bmFyeV9jY3MgZWRnZXMgbW9kX2Nvbm5lY3Rpdml0eSBwYXR0ZXJuIHJvb3QgPVxuICBSb290cy51cGRhdGVfcm9vdHMgc3RhdGUucm9vdHMgaXNfYWRkIHVuYXJ5X2NjcyBlZGdlcyBtb2RfY29ubmVjdGl2aXR5IHBhdHRlcm5cbiAgICByb290XG5cbigqKiB7MiBDaGVja2luZyBpbnN0YW5jZXN9ICopXG5cbmxldCBpc192YWxpZCBzdGF0ZSBwYXQgcm9vdCA9XG4gIEludENvbGxlY3Rpb24ubWVtIHJvb3QgKFJvb3RzLm9mX3BhdHRlcm4gcGF0IHN0YXRlLnJvb3RzKVxuXG4oKiogezIgQ29tcHV0ZSB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyB9ICopXG5cbmxldCBudW1iZXJfb2ZfaW5zdGFuY2VzID9ydWxlX2lkOl8gc3QgcGF0cyA9XG4gIEFycmF5LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIHBhdHRlcm4gLT4gYWNjICogUm9vdHMubnVtYmVyIHN0LnJvb3RzIHBhdHRlcm4pXG4gICAgMSBwYXRzXG5cbmxldCBudW1iZXJfb2ZfdW5hcnlfaW5zdGFuY2VzX2luX2NjID9ydWxlX2lkOl8gc3QgKHBhdDEsIHBhdDIpID1cbiAgbGV0IG1hcDEgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDEgc3Qucm9vdHMgaW5cbiAgbGV0IG1hcDIgPSBSb290cy5vZl91bmFyeV9wYXR0ZXJuIHBhdDIgc3Qucm9vdHMgaW5cbiAgZnVuIGNjIC0+XG4gICAgbGV0IHNldDEgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgY2MgbWFwMSBpblxuICAgIGxldCBzZXQyID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDIgaW5cbiAgICBNb2RzLkludFNldC5zaXplIHNldDEgKiBNb2RzLkludFNldC5zaXplIHNldDJcblxuKCogezYgUGljayBpbnN0YW5jZXMgfSAqKVxuXG5sZXQgcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyA/cnVsZV9pZDpfIHN0IHJhbmRvbV9zdGF0ZSAocGF0MSwgcGF0MikgPVxuICBsZXQgbWFwMSA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MSBzdC5yb290cyBpblxuICBsZXQgbWFwMiA9IFJvb3RzLm9mX3VuYXJ5X3BhdHRlcm4gcGF0MiBzdC5yb290cyBpblxuICBmdW4gY2MgLT5cbiAgICBsZXQgcm9vdDEgPVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lICgtMSlcbiAgICAgICAgKE1vZHMuSW50U2V0LnJhbmRvbSByYW5kb21fc3RhdGVcbiAgICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBjYyBtYXAxKSlcbiAgICBpblxuICAgIGxldCByb290MiA9XG4gICAgICBPcHRpb25fdXRpbC51bnNvbWUgKC0xKVxuICAgICAgICAoTW9kcy5JbnRTZXQucmFuZG9tIHJhbmRvbV9zdGF0ZVxuICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGNjIG1hcDIpKVxuICAgIGluXG4gICAgcm9vdDEsIHJvb3QyXG5cbigqIFdlIHByb3ZpZGUgYSBjdXN0b20gbW9uYWRpYyBmb2xkIGZ1bmN0aW9uIHRvIGJlXG4gICBsYXp5IGluIGRyYXdpbmcgcmFuZG9tIG51bWJlcnMgKilcbmxldCBmb2xkX3BpY2tlZF9pbnN0YW5jZSA/cnVsZV9pZDpfIHN0IHJhbmRvbV9zdGF0ZSBwYXRzIH5pbml0IGYgPVxuICBsZXQgcmVjIGF1eCBpIGFjYyA9XG4gICAgaWYgaSA+PSBBcnJheS5sZW5ndGggcGF0cyB0aGVuXG4gICAgICBhY2NcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGFjYyB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGFjYyAtPlxuICAgICAgICBsZXQgcGF0ID0gcGF0cy4oaSkgaW5cbiAgICAgICAgbGV0IHJvb3Rfb3B0ID1cbiAgICAgICAgICBJbnRDb2xsZWN0aW9uLnJhbmRvbSByYW5kb21fc3RhdGUgKFJvb3RzLm9mX3BhdHRlcm4gcGF0IHN0LnJvb3RzKVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggcm9vdF9vcHQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgcm9vdCAtPlxuICAgICAgICAgIGxldCBhY2MgPSBmIGkgcGF0IHJvb3QgYWNjIGluXG4gICAgICAgICAgYXV4IChpICsgMSkgYWNjKVxuICAgIClcbiAgaW5cbiAgYXV4IDAgKFNvbWUgaW5pdClcblxuKCoqIHs2IEVudW1lcmF0ZSBpbnN0YW5jZXN9ICopXG5cbmxldCBwcm9jZXNzX2V4Y3AgPVxuICBsZXQgbm9fbm9fbm8gXyA9IGZhbHNlIGluXG4gIGZ1biBwYXRzIC0+IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IG5vX25vX25vLCAtMVxuICAgIHwgU29tZSAocGF0LCByb290KSAtPlxuICAgICAgbGV0IHNlbnRfdG9fZml4ZWRfcm9vdCBqID0gUGF0dGVybi5pc19lcXVhbF9jYW5vbmljYWxzIHBhdCBwYXRzLihqKSBpblxuICAgICAgc2VudF90b19maXhlZF9yb290LCByb290XG5cbigqIFRoaXMgaXMgdGhlIGxlZ2l0aW1hdGUgYW5kIGVmZmljaWVudCB2ZXJzaW9uLiAqKVxubGV0IGZvbGRfaW5zdGFuY2VzID9ydWxlX2lkOl8gP2V4Y3Agc3QgcGF0cyB+aW5pdCBmID1cbiAgbGV0IHNlbnRfdG9fZXhjcF9yb290LCBleGNwX3Jvb3QgPSBwcm9jZXNzX2V4Y3AgcGF0cyBleGNwIGluXG5cbiAgbGV0IG4gPSBBcnJheS5sZW5ndGggcGF0cyBpblxuICBsZXQgdGFiID0gQXJyYXkubWFrZSBuICgtMSkgaW5cbiAgbGV0IHJlYyBhdXggaSBhY2MgPVxuICAgIGlmIGkgPj0gbiB0aGVuXG4gICAgICBmIHRhYiBhY2NcbiAgICBlbHNlIGlmIHNlbnRfdG9fZXhjcF9yb290IGkgdGhlbiAoXG4gICAgICB0YWIuKGkpIDwtIGV4Y3Bfcm9vdDtcbiAgICAgIGF1eCAoaSArIDEpIGFjY1xuICAgICkgZWxzZSAoXG4gICAgICBsZXQgaXRoX3Jvb3RzID0gUm9vdHMub2ZfcGF0dGVybiBwYXRzLihpKSBzdC5yb290cyBpblxuICAgICAgSW50Q29sbGVjdGlvbi5mb2xkXG4gICAgICAgIChmdW4gciBhY2MgLT5cbiAgICAgICAgICB0YWIuKGkpIDwtIHI7XG4gICAgICAgICAgYXV4IChpICsgMSkgYWNjKVxuICAgICAgICBpdGhfcm9vdHMgYWNjXG4gICAgKVxuICBpblxuICBhdXggMCBpbml0XG5cbmxldCBtYXBfZm9sZDIgbWFwMSBtYXAyIH5pbml0IGYgPVxuICBNb2RzLkludE1hcC5tb25hZGljX2ZvbGQyX3NwYXJzZSAoKSAoKVxuICAgIChmdW4gKCkgKCkga2V5IHgxIHgyIGFjYyAtPiAoKSwgZiBrZXkgeDEgeDIgYWNjKVxuICAgIG1hcDEgbWFwMiBpbml0XG4gIHw+IHNuZFxuXG5sZXQgZm9sZF91bmFyeV9pbnN0YW5jZXMgP3J1bGVfaWQ6XyBzdCAocGF0MSwgcGF0MikgfmluaXQgZiA9XG4gIGxldCBtYXAxID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQxIHN0LnJvb3RzIGluXG4gIGxldCBtYXAyID0gUm9vdHMub2ZfdW5hcnlfcGF0dGVybiBwYXQyIHN0LnJvb3RzIGluXG4gIG1hcF9mb2xkMiBtYXAxIG1hcDIgfmluaXQgKGZ1biBfIHNldDEgc2V0MiBhY2MgLT5cbiAgICAgIE1vZHMuSW50U2V0LmZvbGRcbiAgICAgICAgKGZ1biByb290MSBhY2MgLT5cbiAgICAgICAgICBNb2RzLkludFNldC5mb2xkIChmdW4gcm9vdDIgYWNjIC0+IGYgKHJvb3QxLCByb290MikgYWNjKSBzZXQyIGFjYylcbiAgICAgICAgc2V0MSBhY2MpXG5cbigqKiB7NiBEZWJ1ZyBmdW5jdGlvbnN9ICopXG5cbmxldCBkZWJ1Z19wcmludCBmIHN0YXRlID0gUm9vdHMuZGVidWdfcHJpbnQgZiBzdGF0ZS5yb290c1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IHZhbHVlX3N0YXRlX2FsZ19vcCBjb3VudGVyID8odGltZSA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpID0gZnVuY3Rpb25cbiAgfCBPcGVyYXRvci5DUFVUSU1FIC0+IE5ici5GIChTeXMudGltZSAoKSlcbiAgfCBPcGVyYXRvci5USU1FX1ZBUiAtPiBOYnIuRiB0aW1lXG4gIHwgT3BlcmF0b3IuRVZFTlRfVkFSIC0+IE5ici5JIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcilcbiAgfCBPcGVyYXRvci5OVUxMX0VWRU5UX1ZBUiAtPiBOYnIuSSAoQ291bnRlci5uYl9udWxsX2V2ZW50IGNvdW50ZXIpXG4gIHwgT3BlcmF0b3IuRU1BWF9WQVIgLT5cbiAgICAobWF0Y2ggQ291bnRlci5tYXhfZXZlbnRzIGNvdW50ZXIgd2l0aFxuICAgIHwgU29tZSBuIC0+IE5ici5JIG5cbiAgICB8IE5vbmUgLT4gTmJyLkYgaW5maW5pdHkpXG4gIHwgT3BlcmF0b3IuVE1BWF9WQVIgLT5cbiAgICAobWF0Y2ggQ291bnRlci5tYXhfdGltZSBjb3VudGVyIHdpdGhcbiAgICB8IFNvbWUgdCAtPiBOYnIuRiB0XG4gICAgfCBOb25lIC0+IE5ici5GIGluZmluaXR5KVxuXG50eXBlIChfLCBfKSBzdGFjayA9XG4gIHwgUkVUVVJOIDogKCdhLCAnYSkgc3RhY2tcbiAgfCBUT19FWEVDX0FMRyA6XG4gICAgICBPcGVyYXRvci5iaW5fYWxnX29wICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChOYnIudCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoTmJyLnQsICdhKSBzdGFja1xuICB8IFRPX0VYRUNfQ09NUCA6XG4gICAgICBPcGVyYXRvci5jb21wYXJlX29wICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19JRiA6XG4gICAgICBQcmltaXRpdmVzLmFsZ19leHByICogUHJpbWl0aXZlcy5hbGdfZXhwciAqIChOYnIudCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoYm9vbCwgJ2EpIHN0YWNrXG4gIHwgVE9fRVhFQ19CT09MIDpcbiAgICAgIE9wZXJhdG9yLmJpbl9ib29sX29wXG4gICAgICAqIChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbFxuICAgICAgKiAoYm9vbCwgJ2EpIHN0YWNrXG4gICAgICAtPiAoYm9vbCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9BTEcgOlxuICAgICAgT3BlcmF0b3IuYmluX2FsZ19vcCAqIE5ici50ICogKE5ici50LCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9DT01QIDpcbiAgICAgIE9wZXJhdG9yLmNvbXBhcmVfb3AgKiBOYnIudCAqIChib29sLCAnYSkgc3RhY2tcbiAgICAgIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9VTiA6IE9wZXJhdG9yLnVuX2FsZ19vcCAqIChOYnIudCwgJ2EpIHN0YWNrIC0+IChOYnIudCwgJ2EpIHN0YWNrXG4gIHwgVE9fQ09NUFVURV9CT09MIDogT3BlcmF0b3IudW5fYm9vbF9vcCAqIChib29sLCAnYSkgc3RhY2sgLT4gKGJvb2wsICdhKSBzdGFja1xuXG5sZXQgcmVjIGV4ZWNfYWxnIDpcbiAgICB0eXBlIGEuXG4gICAgQ291bnRlci50IC0+XG4gICAgP3RpbWU6ZmxvYXQgLT5cbiAgICBnZXRfYWxnOihpbnQgLT4gUHJpbWl0aXZlcy5hbGdfZXhwcikgLT5cbiAgICBnZXRfbWl4OihQYXR0ZXJuLmlkIGFycmF5IGxpc3QgLT4gTmJyLnQpIC0+XG4gICAgZ2V0X3RvazooaW50IC0+IE5ici50KSAtPlxuICAgIChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuZSAtPlxuICAgIChOYnIudCwgYSkgc3RhY2sgLT5cbiAgICBhID1cbiBmdW4gY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgc2sgLT5cbiAgbWF0Y2ggYWxnIHdpdGhcbiAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKGEsIF8pLCAoYiwgXykpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhXG4gICAgICAoVE9fRVhFQ19BTEcgKG9wLCBiLCBzaykpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKGEsIF8pKSAtPlxuICAgIGV4ZWNfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYSAoVE9fQ09NUFVURV9VTiAob3AsIHNrKSlcbiAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1Agb3AgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2tcbiAgICAgICh2YWx1ZV9zdGF0ZV9hbGdfb3AgY291bnRlciA/dGltZSBvcClcbiAgICAgIHNrXG4gIHwgQWxnX2V4cHIuQUxHX1ZBUiBpIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X2FsZyBpKSBza1xuICB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIGNjcyAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X21peCBjY3MpIHNrXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgaSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayAoZ2V0X3RvayBpKSBza1xuICB8IEFsZ19leHByLkNPTlNUIG4gLT4gd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIG4gc2tcbiAgfCBBbGdfZXhwci5JRiAoKGNvbmQsIF8pLCAoeWVzLCBfKSwgKG5vLCBfKSkgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBjb25kXG4gICAgICAoVE9fRVhFQ19JRiAoeWVzLCBubywgc2spKVxuICB8IEFsZ19leHByLkRJRkZfVE9LRU4gXyB8IEFsZ19leHByLkRJRkZfS0FQUEFfSU5TVEFOQ0UgXyAtPlxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ2Fubm90IGV2YWx1dGF0ZSBkZXJpdmF0aXZlcyBpbiBleHByZXNzaW9uXCIsIExvYy5kdW1teSkpXG5cbmFuZCBleGVjX2Jvb2wgOlxuICAgIHR5cGUgYS5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgKFBhdHRlcm4uaWQgYXJyYXkgbGlzdCwgaW50KSBBbGdfZXhwci5ib29sIC0+XG4gICAgKGJvb2wsIGEpIHN0YWNrIC0+XG4gICAgYSA9XG4gZnVuIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciBzayAtPlxuICBtYXRjaCBleHByIHdpdGhcbiAgfCBBbGdfZXhwci5UUlVFIC0+IHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayB0cnVlIHNrXG4gIHwgQWxnX2V4cHIuRkFMU0UgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZmFsc2Ugc2tcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgKGEsIF8pKSAtPlxuICAgIGV4ZWNfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19DT01QVVRFX0JPT0wgKG9wLCBzaykpXG4gIHwgQWxnX2V4cHIuQklOX0JPT0xfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhXG4gICAgICAoVE9fRVhFQ19CT09MIChvcCwgYiwgc2spKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAoYSwgXyksIChiLCBfKSkgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFcbiAgICAgIChUT19FWEVDX0NPTVAgKG9wLCBiLCBzaykpXG5cbmFuZCB3aXRoX3ZhbHVlIDpcbiAgICB0eXBlIGEgYi5cbiAgICBDb3VudGVyLnQgLT5cbiAgICA/dGltZTpmbG9hdCAtPlxuICAgIGdldF9hbGc6KGludCAtPiBQcmltaXRpdmVzLmFsZ19leHByKSAtPlxuICAgIGdldF9taXg6KFBhdHRlcm4uaWQgYXJyYXkgbGlzdCAtPiBOYnIudCkgLT5cbiAgICBnZXRfdG9rOihpbnQgLT4gTmJyLnQpIC0+XG4gICAgYSAtPlxuICAgIChhLCBiKSBzdGFjayAtPlxuICAgIGIgPVxuIGZ1biBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIG4gLT4gZnVuY3Rpb25cbiAgfCBSRVRVUk4gLT4gblxuICB8IFRPX0VYRUNfQUxHIChvcCwgYWxnLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZ1xuICAgICAgKFRPX0NPTVBVVEVfQUxHIChvcCwgbiwgc2spKVxuICB8IFRPX0NPTVBVVEVfQUxHIChvcCwgbjEsIHNrKSAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKE5ici5vZl9iaW5fYWxnX29wIG9wIG4xIG4pXG4gICAgICBza1xuICB8IFRPX0NPTVBVVEVfVU4gKG9wLCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKE5ici5vZl91bl9hbGdfb3Agb3AgbilcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19DT01QIChvcCwgYWxnLCBzaykgLT5cbiAgICBleGVjX2FsZyBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGFsZ1xuICAgICAgKFRPX0NPTVBVVEVfQ09NUCAob3AsIG4sIHNrKSlcbiAgfCBUT19DT01QVVRFX0NPTVAgKG9wLCBuMSwgc2spIC0+XG4gICAgd2l0aF92YWx1ZSBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rXG4gICAgICAoTmJyLm9mX2NvbXBhcmVfb3Agb3AgbjEgbilcbiAgICAgIHNrXG4gIHwgVE9fRVhFQ19JRiAoeWVzLCBubywgc2spIC0+XG4gICAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3Rva1xuICAgICAgKGlmIG4gdGhlblxuICAgICAgICAgeWVzXG4gICAgICAgZWxzZVxuICAgICAgICAgbm8pXG4gICAgICBza1xuICB8IFRPX0VYRUNfQk9PTCAoT3BlcmF0b3IuT1IsIF8sIHNrKSB3aGVuIG4gLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgdHJ1ZSBza1xuICB8IFRPX0VYRUNfQk9PTCAoT3BlcmF0b3IuQU5ELCBfLCBzaykgd2hlbiBub3QgbiAtPlxuICAgIHdpdGhfdmFsdWUgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBmYWxzZSBza1xuICB8IFRPX0VYRUNfQk9PTCAoKE9wZXJhdG9yLk9SIHwgT3BlcmF0b3IuQU5EKSwgZXhwciwgc2spIC0+XG4gICAgZXhlY19ib29sIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgZXhwciBza1xuICB8IFRPX0NPTVBVVEVfQk9PTCAoT3BlcmF0b3IuTk9ULCBzaykgLT5cbiAgICB3aXRoX3ZhbHVlIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgKG5vdCBuKSBza1xuXG5sZXQgdmFsdWVfYm9vbCBjb3VudGVyID90aW1lIH5nZXRfYWxnIH5nZXRfbWl4IH5nZXRfdG9rIGV4cHIgPVxuICBleGVjX2Jvb2wgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBleHByIFJFVFVSTlxuXG5sZXQgdmFsdWVfYWxnIGNvdW50ZXIgP3RpbWUgfmdldF9hbGcgfmdldF9taXggfmdldF90b2sgYWxnID1cbiAgZXhlY19hbGcgY291bnRlciA/dGltZSB+Z2V0X2FsZyB+Z2V0X21peCB+Z2V0X3RvayBhbGcgUkVUVVJOXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHByZWNvbXB1dGVkID0ge1xuICB1bmFyeV9wYXR0ZXJuczogUGF0dGVybi5TZXQudDtcbiAgYWx3YXlzX291dGRhdGVkOiBPcGVyYXRvci5EZXBTZXQudDtcbn1cblxubW9kdWxlIE1ha2UgKEluc3RhbmNlcyA6IEluc3RhbmNlc19zaWcuUykgPSBzdHJ1Y3RcbiAgdHlwZSBldmVudF9wcmVkaWNhdGUgPVxuICAgIGludCBvcHRpb24gLT5cbiAgICBNYXRjaGluZy50IC0+XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCAtPlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdCAtPlxuICAgIGJvb2xcblxuICB0eXBlIGltcGVyYXRpdmVfZmllbGRzID0ge1xuICAgIHByZWNvbXB1dGVkOiBwcmVjb21wdXRlZDtcbiAgICBpbnN0YW5jZXM6IEluc3RhbmNlcy50O1xuICAgIHZhcmlhYmxlc19jYWNoZTogTmJyLnQgYXJyYXk7XG4gICAgdmFyaWFibGVzX292ZXJ3cml0ZTogUHJpbWl0aXZlcy5hbGdfZXhwciBvcHRpb24gYXJyYXk7XG4gICAgdG9rZW5zOiBOYnIudCBhcnJheTtcbiAgICBhY3Rpdml0aWVzOiBSYW5kb21fdHJlZS50cmVlO1xuICAgICAgICAoKiBwYWlyIG51bWJlcnMgYXJlIHJlZ3VsYXIgcnVsZSwgb2RkIHVuYXJ5IGluc3RhbmNlcyAqKVxuICAgIHJhbmRvbV9zdGF0ZTogUmFuZG9tLlN0YXRlLnQ7XG4gICAgc3RvcnlfbWFjaGluZXJ5OlxuICAgICAgKHN0cmluZyAoKm9icyBuYW1lKilcbiAgICAgICogUGF0dGVybi5pZCBhcnJheVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmFic3RyYWN0IEluc3RhbnRpYXRpb24udGVzdCBsaXN0IGxpc3QpXG4gICAgICBsaXN0XG4gICAgICBQYXR0ZXJuLk9ic01hcC50XG4gICAgICAoKmN1cnJlbnRseSB0cmFja2VkIGNjcyAqKVxuICAgICAgb3B0aW9uO1xuICAgIHNwZWNpZXM6XG4gICAgICAoc3RyaW5nICgqZmlsZW5hbWUqKVxuICAgICAgKiBQYXR0ZXJuLmlkIGFycmF5ICgqd2l0aCBvbmx5IG9uZSBwYXR0ZXJuKilcbiAgICAgICogSW5zdGFudGlhdGlvbi5hYnN0cmFjdCBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBsaXN0KVxuICAgICAgbGlzdFxuICAgICAgUGF0dGVybi5PYnNNYXAudDtcbiAgICBjaGFuZ2VkX2Nvbm5lY3Rpdml0eTogKGludCwgdW5pdCkgSGFzaHRibC50O1xuICAgICAgICAoKiBzZXQgb2YgY2NzIHRoYXQgaGF2ZSBjaGFuZ2VkICopXG4gIH1cblxuICB0eXBlIGluc3RhbmNlID1cbiAgICBib29sXG4gICAgKiBpbnRcbiAgICAqIChLYXBwYV90ZXJtcy5NYXRjaGluZy50ICogaW50IGxpc3QgKiBLYXBwYV9zaXRlX2dyYXBocy5FZGdlcy5wYXRoIG9wdGlvbilcbiAgICAgIG9wdGlvblxuXG4gIHR5cGUgdCA9IHtcbiAgICBtdXRhYmxlIG91dGRhdGVkOiBib29sO1xuICAgICgqIFdpdGhvdXQgcmVjdGFuZ3VsYXIgYXBwcm94aW1hdGlvbiAqKVxuICAgIG1hdGNoaW5nc19vZl9ydWxlOiAoTWF0Y2hpbmcudCAqIGludCBsaXN0KSBsaXN0IE1vZHMuSW50TWFwLnQ7XG4gICAgdW5hcnlfY2FuZGlkYXRlczpcbiAgICAgICgqIHJ1bGVfaWQgLT4gbGlzdCBvZiBtYXRjaGluZ3MgKilcbiAgICAgIChNYXRjaGluZy50ICogaW50IGxpc3QgKiBFZGdlcy5wYXRoIG9wdGlvbikgbGlzdCBNb2RzLkludE1hcC50O1xuICAgICgqIHJ1bGUgLT4gY2MgLT4gbnVtYmVyX2luc3RhbmNlcyAoYWN0aXZpdHkgcGVyIGNjKSAqKVxuICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYzogVmFsTWFwLnQgTW9kcy5JbnRNYXAudDtcbiAgICBlZGdlczogRWRnZXMudDtcbiAgICBpbXA6IGltcGVyYXRpdmVfZmllbGRzO1xuICAgIG91dGRhdGVkX2VsZW1lbnRzOiBPcGVyYXRvci5EZXBTZXQudDtcbiAgICBldmVudHNfdG9fYmxvY2s6IGV2ZW50X3ByZWRpY2F0ZSBvcHRpb247XG4gIH1cblxuICBsZXQgZ2V0X2VkZ2VzIHN0ID0gc3QuZWRnZXNcblxuICBsZXQgc3VtX2luc3RhbmNlc19udW1iZXJzID9ydWxlX2lkIGluc3RzIGwgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjIHggLT4gYWMgKyBJbnN0YW5jZXMubnVtYmVyX29mX2luc3RhbmNlcyA/cnVsZV9pZCBpbnN0cyB4KVxuICAgICAgMCBsXG5cbiAgdHlwZSByZXN1bHQgPSBDbGFzaCB8IENvcnJlY3RlZCB8IEJsb2NrZWQgfCBTdWNjZXNzIG9mIHRcblxuICBsZXQgcmF3X2dldF9hbGcgZW52IG92ZXJ3ciBpID1cbiAgICBtYXRjaCBvdmVyd3IuKGkpIHdpdGhcbiAgICB8IE5vbmUgLT4gTW9kZWwuZ2V0X2FsZyBlbnYgaVxuICAgIHwgU29tZSBleHByIC0+IGV4cHJcblxuICBsZXQgdmFsdWVfYm9vbCBjb3VudGVyIHN0YXRlIGV4cHIgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIEV4cHJfaW50ZXJwcmV0ZXIudmFsdWVfYm9vbCBjb3VudGVyXG4gICAgICB+Z2V0X2FsZzooZnVuIGkgLT4gQWxnX2V4cHIuQ09OU1Qgc3RhdGUuaW1wLnZhcmlhYmxlc19jYWNoZS4oaSkpXG4gICAgICB+Z2V0X21peDooZnVuIHBhdHRlcm5zIC0+XG4gICAgICAgIE5ici5JIChzdW1faW5zdGFuY2VzX251bWJlcnMgc3RhdGUuaW1wLmluc3RhbmNlcyBwYXR0ZXJucykpXG4gICAgICB+Z2V0X3RvazooZnVuIGkgLT4gc3RhdGUuaW1wLnRva2Vucy4oaSkpXG4gICAgICBleHByXG5cbiAgbGV0IHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGFsZyA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgRXhwcl9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlclxuICAgICAgfmdldF9hbGc6KGZ1biBpIC0+IEFsZ19leHByLkNPTlNUIHN0YXRlLmltcC52YXJpYWJsZXNfY2FjaGUuKGkpKVxuICAgICAgfmdldF9taXg6KGZ1biBwYXR0ZXJucyAtPlxuICAgICAgICBOYnIuSSAoc3VtX2luc3RhbmNlc19udW1iZXJzIHN0YXRlLmltcC5pbnN0YW5jZXMgcGF0dGVybnMpKVxuICAgICAgfmdldF90b2s6KGZ1biBpIC0+IHN0YXRlLmltcC50b2tlbnMuKGkpKVxuICAgICAgYWxnXG5cbiAgbGV0IHJlY29tcHV0ZSBlbnYgY291bnRlciBzdGF0ZSBpID1cbiAgICBzdGF0ZS5pbXAudmFyaWFibGVzX2NhY2hlLihpKSA8LVxuICAgICAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgKHJhd19nZXRfYWxnIGVudiBzdGF0ZS5pbXAudmFyaWFibGVzX292ZXJ3cml0ZSBpKVxuXG4gIGxldCBhY3Rpdml0eSBzdGF0ZSA9IFJhbmRvbV90cmVlLnRvdGFsIHN0YXRlLmltcC5hY3Rpdml0aWVzXG4gIGxldCBnZXRfYWN0aXZpdHkgcnVsZSBzdGF0ZSA9IFJhbmRvbV90cmVlLmZpbmQgcnVsZSBzdGF0ZS5pbXAuYWN0aXZpdGllc1xuICBsZXQgc2V0X2FjdGl2aXR5IHJ1bGUgdiBzdGF0ZSA9IFJhbmRvbV90cmVlLmFkZCBydWxlIHYgc3RhdGUuaW1wLmFjdGl2aXRpZXNcbiAgbGV0IHBpY2tfcnVsZSBydCBzdGF0ZSA9IGZzdCAoUmFuZG9tX3RyZWUucmFuZG9tIHJ0IHN0YXRlLmltcC5hY3Rpdml0aWVzKVxuXG4gIGxldCBpbml0aWFsX2FjdGl2aXR5IH5vdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlID1cbiAgICBNb2RlbC5mb2xkX3J1bGVzXG4gICAgICAoZnVuIGkgKCkgcnVsZSAtPlxuICAgICAgICBpZiBBcnJheS5sZW5ndGggcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzID0gMCB0aGVuIChcbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTmJyLnRvX2Zsb2F0IEBAIHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIChmc3QgcnVsZS5QcmltaXRpdmVzLnJhdGUpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICggU29tZSAoc25kIHJ1bGUuUHJpbWl0aXZlcy5yYXRlKSxcbiAgICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICAgbGV0IG5vQ291bnRlcnMgPSBmYWxzZSBpblxuXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiUHJvYmxlbWF0aWMgcnVsZSByYXRlIHJlcGxhY2VkIGJ5IDBcIjtcbiAgICAgICAgICAgICAgICAgICAgIEthcHBhX3ByaW50ZXIuZWxlbWVudGFyeV9ydWxlIH5lbnYgfm5vQ291bnRlcnMgZiBydWxlICkpXG4gICAgICAgICAgfCBTb21lIHJhdGUgLT4gc2V0X2FjdGl2aXR5ICgyICogaSkgcmF0ZSBzdGF0ZVxuICAgICAgICApKVxuICAgICAgKCkgZW52XG5cbiAgbGV0IGVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlIHJhbmRvbV9zdGF0ZSBlbnYgY291bnRlciA9XG4gICAgbGV0IGFjdGl2aXR5X3RyZWUgPSBSYW5kb21fdHJlZS5jcmVhdGUgKDIgKiBNb2RlbC5uYl9ydWxlcyBlbnYpIGluXG4gICAgbGV0IHVuYXJ5X3BhdHRlcm5zID0gTW9kZWwudW5hcnlfcGF0dGVybnMgZW52IGluXG4gICAgbGV0IGFsd2F5c19vdXRkYXRlZCA9XG4gICAgICBsZXQgZGVwc19pbl90LCBkZXBzX2luX2UsIF8sIF8gPSBNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudiBpblxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIGRlcHNfaW5fdCBkZXBzX2luX2VcbiAgICBpblxuICAgIGxldCB3aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzID0gbm90IChQYXR0ZXJuLlNldC5pc19lbXB0eSB1bmFyeV9wYXR0ZXJucykgaW5cbiAgICBsZXQgdmFyaWFibGVzX292ZXJ3cml0ZSA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX2FsZ3MgZW52KSBOb25lIGluXG4gICAgbGV0IHZhcmlhYmxlc19jYWNoZSA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX2FsZ3MgZW52KSBOYnIuemVybyBpblxuICAgIGxldCBjYW5kID1cbiAgICAgIHtcbiAgICAgICAgaW1wID1cbiAgICAgICAgICB7XG4gICAgICAgICAgICBhY3Rpdml0aWVzID0gYWN0aXZpdHlfdHJlZTtcbiAgICAgICAgICAgIHByZWNvbXB1dGVkID0geyB1bmFyeV9wYXR0ZXJuczsgYWx3YXlzX291dGRhdGVkIH07XG4gICAgICAgICAgICBpbnN0YW5jZXMgPSBJbnN0YW5jZXMuZW1wdHkgZW52O1xuICAgICAgICAgICAgdmFyaWFibGVzX292ZXJ3cml0ZTtcbiAgICAgICAgICAgIHZhcmlhYmxlc19jYWNoZTtcbiAgICAgICAgICAgIHRva2VucyA9IEFycmF5Lm1ha2UgKE1vZGVsLm5iX3Rva2VucyBlbnYpIE5ici56ZXJvO1xuICAgICAgICAgICAgcmFuZG9tX3N0YXRlO1xuICAgICAgICAgICAgc3RvcnlfbWFjaGluZXJ5ID1cbiAgICAgICAgICAgICAgKGlmIHdpdGhfdHJhY2UgdGhlblxuICAgICAgICAgICAgICAgICBTb21lIChQYXR0ZXJuLkVudi5uZXdfb2JzX21hcCAoTW9kZWwuZG9tYWluIGVudikgKGZ1biBfIC0+IFtdKSlcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgTm9uZSk7XG4gICAgICAgICAgICBzcGVjaWVzID0gUGF0dGVybi5FbnYubmV3X29ic19tYXAgKE1vZGVsLmRvbWFpbiBlbnYpIChmdW4gXyAtPiBbXSk7XG4gICAgICAgICAgICBjaGFuZ2VkX2Nvbm5lY3Rpdml0eSA9IEhhc2h0YmwuY3JlYXRlIDMyO1xuICAgICAgICAgIH07XG4gICAgICAgIG91dGRhdGVkID0gZmFsc2U7XG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgICAgIGVkZ2VzID0gRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM7XG4gICAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gYWx3YXlzX291dGRhdGVkO1xuICAgICAgICBldmVudHNfdG9fYmxvY2sgPSBOb25lO1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gVG9vbHMuaXRlcmkgKHJlY29tcHV0ZSBlbnYgY291bnRlciBjYW5kKSAoTW9kZWwubmJfYWxncyBlbnYpIGluXG4gICAgbGV0ICgpID0gaW5pdGlhbF9hY3Rpdml0eSB+b3V0cHV0cyBlbnYgY291bnRlciBjYW5kIGluXG4gICAgY2FuZFxuXG4gIGxldCBjb25jcmV0ZV9hY3Rpb25zX2Zvcl9pbmNvbXBsZXRlX2luaiB+ZGVidWdfbW9kZSBydWxlIG1hdGNoaW5nID1cbiAgICBsZXQgYWJzdHJhY3RfYWN0aW9ucyA9XG4gICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgaW5qID0gbWF0Y2hpbmcsIE1vZHMuSW50TWFwLmVtcHR5IGluXG4gICAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAgIChJbnN0YW50aWF0aW9uLnRyeV9jb25jcmV0aXplX2FjdGlvbiB+ZGVidWdfbW9kZSBpbmopXG4gICAgICBhYnN0cmFjdF9hY3Rpb25zXG5cbiAgbGV0IGNvbmNyZXRlX3Rlc3RzIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgPVxuICAgIGxldCBhYnN0cmFjdF90ZXN0cyA9XG4gICAgICBydWxlLlByaW1pdGl2ZXMuaW5zdGFudGlhdGlvbnMuSW5zdGFudGlhdGlvbi50ZXN0cyB8PiBMaXN0LmNvbmNhdFxuICAgIGluXG4gICAgbGV0IGluaiA9IG1hdGNoaW5nLCBNb2RzLkludE1hcC5lbXB0eSBpblxuICAgIExpc3QubWFwIChJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfdGVzdCB+ZGVidWdfbW9kZSBpbmopIGFic3RyYWN0X3Rlc3RzXG5cbiAgbGV0IGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgP3J1bGVfaWQgcnVsZSBtYXRjaGluZyA9XG4gICAgbWF0Y2ggc3RhdGUuZXZlbnRzX3RvX2Jsb2NrIHdpdGhcbiAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICB8IFNvbWUgdG9fYmxvY2sgLT5cbiAgICAgIGxldCBhY3Rpb25zID1cbiAgICAgICAgY29uY3JldGVfYWN0aW9uc19mb3JfaW5jb21wbGV0ZV9pbmogfmRlYnVnX21vZGUgcnVsZSBtYXRjaGluZ1xuICAgICAgaW5cbiAgICAgIGxldCB0ZXN0cyA9IGNvbmNyZXRlX3Rlc3RzIH5kZWJ1Z19tb2RlIHJ1bGUgbWF0Y2hpbmcgaW5cbiAgICAgIHRvX2Jsb2NrIHJ1bGVfaWQgbWF0Y2hpbmcgdGVzdHMgYWN0aW9uc1xuXG4gIGxldCBzZXRfZXZlbnRzX3RvX2Jsb2NrIHByZWRpY2F0ZSBzdGF0ZSA9XG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gcHJlZGljYXRlO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBNb2RzLkludE1hcC5lbXB0eTtcbiAgICB9XG5cbiAgbGV0IGluc3RhbmNlX3RvX21hdGNoaW5nIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbnN0YW5jZSBwYXR0ZXJucyA9XG4gICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgICAgKGZ1biBpIG1hdGNoaW5nIHJvb3QgLT5cbiAgICAgICAgbWF0Y2ggbWF0Y2hpbmcgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgbWF0Y2hpbmcgLT5cbiAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgbWF0Y2hpbmcgaSBwYXR0ZXJucy4oaSlcbiAgICAgICAgICAgIHJvb3QpXG4gICAgICAoU29tZSBNYXRjaGluZy5lbXB0eSkgaW5zdGFuY2VcblxuICBsZXQgYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgP2V4Y3AgP3VuYXJ5X3JhdGUgP3J1bGVfaWQgc3RhdGVfaW5zdHMgZG9tYWluXG4gICAgICBlZGdlcyBwYXR0ZXJuYSA9XG4gICAgbGV0IG91dCA9XG4gICAgICBJbnN0YW5jZXMuZm9sZF9pbnN0YW5jZXMgP2V4Y3AgP3J1bGVfaWQgc3RhdGVfaW5zdHMgcGF0dGVybmEgfmluaXQ6W11cbiAgICAgICAgKGZ1biBpbnN0YW5jZSBhY2MgLT5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgaW5zdGFuY2VfdG9fbWF0Y2hpbmcgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluc3RhbmNlIHBhdHRlcm5hXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICB8IFNvbWUgbWF0Y2hpbmcgLT5cbiAgICAgICAgICAgIGxldCByZXZfcm9vdHMgPSBBcnJheS5mb2xkX2xlZnQgKGZ1biB0IGggLT4gaCA6OiB0KSBbXSBpbnN0YW5jZSBpblxuICAgICAgICAgICAgKG1hdGNoaW5nLCByZXZfcm9vdHMpIDo6IGFjYylcbiAgICBpblxuICAgIG1hdGNoIHVuYXJ5X3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBvdXRcbiAgICB8IFNvbWUgKF8sIE5vbmUpIC0+XG4gICAgICBMaXN0LmZpbHRlclxuICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICB8IF8sIFsgcjE7IHIyIF0gLT4gbm90IChFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnQgcjEgcjIgZWRnZXMpXG4gICAgICAgICAgfCBfLCBfIC0+IGZhbHNlKVxuICAgICAgICBvdXRcbiAgICB8IFNvbWUgKF8sIChTb21lIF8gYXMgbWF4X2Rpc3RhbmNlKSkgLT5cbiAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgIChmdW4gKGluaiwgXykgLT5cbiAgICAgICAgICBsZXQgbm9kZXMgPSBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBwYXR0ZXJuYSBpbmogaW5cbiAgICAgICAgICBOb25lID0gRWRnZXMuYXJlX2Nvbm5lY3RlZCA/bWF4X2Rpc3RhbmNlIGVkZ2VzIG5vZGVzLigwKSBub2Rlcy4oMSkpXG4gICAgICAgIG91dFxuXG4gIGxldCBwb3BfZXhhY3RfbWF0Y2hpbmdzIG1hdGNoaW5nc19vZl9ydWxlIHJ1bGUgPVxuICAgIHNuZCAoTW9kcy5JbnRNYXAucG9wIHJ1bGUgbWF0Y2hpbmdzX29mX3J1bGUpXG5cbiAgbGV0IHBpY2tfYV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHJhbmRvbV9zdGF0ZSBkb21haW4gZWRnZXMgP3J1bGVfaWRcbiAgICAgIHJ1bGUgPVxuICAgIGxldCBmcm9tX3BhdHRlcm5zICgpID1cbiAgICAgIGxldCBwYXRzID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzIGluXG4gICAgICBJbnN0YW5jZXMuZm9sZF9waWNrZWRfaW5zdGFuY2UgP3J1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlcyByYW5kb21fc3RhdGVcbiAgICAgICAgcGF0cyB+aW5pdDooTWF0Y2hpbmcuZW1wdHksIFtdLCBOb25lKVxuICAgICAgICAoZnVuIGlkIHBhdHRlcm4gcm9vdCAoaW5qLCByZXZfcm9vdHMsIF8pIC0+XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBpbmogaWQgcGF0dGVybiByb290XG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIGluaicgLT4gU29tZSAoaW5qJywgcm9vdCA6OiByZXZfcm9vdHMsIE5vbmUpKVxuICAgIGluXG4gICAgbWF0Y2ggcnVsZV9pZCB3aXRoXG4gICAgfCBOb25lIC0+IGZyb21fcGF0dGVybnMgKClcbiAgICB8IFNvbWUgaWQgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBpZCBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZSB3aXRoXG4gICAgICB8IFNvbWUgW10gLT4gTm9uZVxuICAgICAgfCBTb21lIGwgLT5cbiAgICAgICAgbGV0IGEsIGIgPSBMaXN0X3V0aWwucmFuZG9tIHJhbmRvbV9zdGF0ZSBsIGluXG4gICAgICAgIFNvbWUgKGEsIGIsIE5vbmUpXG4gICAgICB8IE5vbmUgLT4gZnJvbV9wYXR0ZXJucyAoKSlcblxuICBsZXQgYWRqdXN0X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID91bmFyeV9yYXRlIHN0YXRlIGRvbWFpbiBlZGdlc1xuICAgICAgY2NzIHJ1bGUgPVxuICAgIGxldCBtYXRjaGVzID1cbiAgICAgIGFsbF9pbmplY3Rpb25zIH5kZWJ1Z19tb2RlID91bmFyeV9yYXRlIH5ydWxlX2lkIHN0YXRlLmltcC5pbnN0YW5jZXMgZG9tYWluXG4gICAgICAgIGVkZ2VzIGNjc1xuICAgIGluXG4gICAgbGV0IG1hdGNoZXMgPVxuICAgICAgaWYgc3RhdGUuZXZlbnRzX3RvX2Jsb2NrID0gTm9uZSB0aGVuXG4gICAgICAgIG1hdGNoZXNcbiAgICAgIGVsc2VcbiAgICAgICAgbWF0Y2hlc1xuICAgICAgICB8PiBMaXN0LmZpbHRlciAoZnVuIChtYXRjaGluZywgXykgLT5cbiAgICAgICAgICAgICAgIG5vdCAoaXNfYmxvY2tlZCB+ZGVidWdfbW9kZSBzdGF0ZSB+cnVsZV9pZCBydWxlIG1hdGNoaW5nKSlcbiAgICBpblxuICAgICggTGlzdC5sZW5ndGggbWF0Y2hlcyxcbiAgICAgIHtcbiAgICAgICAgc3RhdGUgd2l0aFxuICAgICAgICBtYXRjaGluZ3Nfb2ZfcnVsZSA9XG4gICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgbWF0Y2hlcyBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIH0gKVxuXG4gICgqIFdpdGggcmVjdGFuZ3VsYXIgYXBwcm94aW1hdGlvbiAqKVxuICBsZXQgY29tcHV0ZV91bmFyeV9udW1iZXIgaW5zdGFuY2VzXG4gICAgICAobmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCB1bmFyeV9jYW5kaWRhdGVzKSBtb2RpZmllZF9jY3MgcnVsZVxuICAgICAgcnVsZV9pZCA9XG4gICAgbGV0IHBhdDEgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApIGluXG4gICAgbGV0IHBhdDIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG5cbiAgICBsZXQgbnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyA9XG4gICAgICBJbnN0YW5jZXMubnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyB+cnVsZV9pZCBpbnN0YW5jZXMgKHBhdDEsIHBhdDIpXG4gICAgaW5cblxuICAgIGxldCBvbGRfcGFjayA9XG4gICAgICBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgVmFsTWFwLmVtcHR5IHJ1bGVfaWRcbiAgICAgICAgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjXG4gICAgaW5cbiAgICBsZXQgbmV3X3BhY2sgPVxuICAgICAgSGFzaHRibC5mb2xkXG4gICAgICAgIChmdW4gY2MgKCkgaV9pbnN0IC0+XG4gICAgICAgICAgbGV0IG5ld192ID0gbnVtYmVyX29mX3VuYXJ5X2luc3RhbmNlc19pbl9jYyBjYyBpblxuICAgICAgICAgIGlmIG5ld192ID0gMCB0aGVuXG4gICAgICAgICAgICBWYWxNYXAucmVtb3ZlIGNjIGlfaW5zdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFZhbE1hcC5hZGQgY2MgbmV3X3YgaV9pbnN0KVxuICAgICAgICBtb2RpZmllZF9jY3Mgb2xkX3BhY2tcbiAgICBpblxuICAgIGxldCB2YSA9IFZhbE1hcC50b3RhbCBuZXdfcGFjayBpblxuICAgIGxldCBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MnID1cbiAgICAgIGlmIHZhID0gMEwgdGhlblxuICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgcnVsZV9pZCBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2NcbiAgICAgIGVsc2VcbiAgICAgICAgTW9kcy5JbnRNYXAuYWRkIHJ1bGVfaWQgbmV3X3BhY2sgbmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjXG4gICAgaW5cbiAgICBsZXQgXywgdW5hcnlfY2FuZGlkYXRlcycgPVxuICAgICAgKCogSW52YWxpZGF0ZXMgdGhlIGNhY2hlICopXG4gICAgICBNb2RzLkludE1hcC5wb3AgcnVsZV9pZCB1bmFyeV9jYW5kaWRhdGVzXG4gICAgaW5cbiAgICB2YSwgKG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYycsIHVuYXJ5X2NhbmRpZGF0ZXMnKVxuXG4gIGxldCBwaWNrX2FfdW5hcnlfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSByYW5kb21fc3RhdGUgZG9tYWluIGVkZ2VzXG4gICAgICB+cnVsZV9pZCBydWxlID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBydWxlX2lkIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXMgd2l0aFxuICAgIHwgU29tZSBsIC0+XG4gICAgICBsZXQgaW5qLCByb290cywgcGF0aCA9IExpc3RfdXRpbC5yYW5kb20gcmFuZG9tX3N0YXRlIGwgaW5cbiAgICAgIFNvbWUgKGluaiwgcm9vdHMsIHBhdGgpXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgcGF0MSA9IHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cy4oMCkgaW5cbiAgICAgIGxldCBwYXQyID0gcnVsZS5QcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzLigxKSBpblxuICAgICAgbGV0IHBpY2tfdW5hcnlfaW5zdGFuY2VfaW5fY2MgPVxuICAgICAgICBJbnN0YW5jZXMucGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyB+cnVsZV9pZCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgICAgcmFuZG9tX3N0YXRlIChwYXQxLCBwYXQyKVxuICAgICAgaW5cbiAgICAgIGxldCBjY19pZCA9XG4gICAgICAgIFZhbE1hcC5yYW5kb20gcmFuZG9tX3N0YXRlXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBWYWxNYXAuZW1wdHkgcnVsZV9pZFxuICAgICAgICAgICAgIHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYylcbiAgICAgIGluXG4gICAgICBsZXQgcm9vdDEsIHJvb3QyID0gcGlja191bmFyeV9pbnN0YW5jZV9pbl9jYyBjY19pZCBpblxuXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gRm9ybWF0LnByaW50ZiBcIkBbT24gcm9vdHM6QCAlaUAgJWlAXUAuXCIgcm9vdDEgcm9vdDJcbiAgICAgIGluXG4gICAgICBsZXQgcGF0dGVybjEgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDApIGluXG4gICAgICBsZXQgcGF0dGVybjIgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMuKDEpIGluXG4gICAgICBsZXQgaW5qMSA9XG4gICAgICAgIE1hdGNoaW5nLnJlY29uc3RydWN0IH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBNYXRjaGluZy5lbXB0eSAwIHBhdHRlcm4xXG4gICAgICAgICAgcm9vdDFcbiAgICAgIGluXG4gICAgICAobWF0Y2ggaW5qMSB3aXRoXG4gICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgfCBTb21lIGluaiAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGluaiAxIHBhdHRlcm4yIHJvb3QyXG4gICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSBpbmpfb3V0IC0+IFNvbWUgKGlual9vdXQsIFsgcm9vdDI7IHJvb3QxIF0sIE5vbmUpKSlcblxuICBsZXQgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID9tYXhfZGlzdGFuY2Ugc3RhdGVcbiAgICAgIGRvbWFpbiBncmFwaCBwYXRzIHJ1bGUgPVxuICAgIGxldCBwYXR0ZXJuMSA9IHBhdHMuKDApIGluXG4gICAgbGV0IHBhdHRlcm4yID0gcGF0cy4oMSkgaW5cbiAgICBsZXQgY2FuZHMsIGxlbiA9XG4gICAgICBJbnN0YW5jZXMuZm9sZF91bmFyeV9pbnN0YW5jZXMgfnJ1bGVfaWQgc3RhdGUuaW1wLmluc3RhbmNlc1xuICAgICAgICAocGF0dGVybjEsIHBhdHRlcm4yKSB+aW5pdDooW10sIDApXG4gICAgICAgIChmdW4gKHJvb3QxLCByb290MikgKChsaXN0LCBsZW4pIGFzIG91dCkgLT5cbiAgICAgICAgICBsZXQgaW5qMSA9XG4gICAgICAgICAgICBNYXRjaGluZy5yZWNvbnN0cnVjdCB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggTWF0Y2hpbmcuZW1wdHkgMFxuICAgICAgICAgICAgICBwYXR0ZXJuMSByb290MVxuICAgICAgICAgIGluXG4gICAgICAgICAgbWF0Y2ggaW5qMSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgIHwgU29tZSBpbmogLT5cbiAgICAgICAgICAgIChtYXRjaFxuICAgICAgICAgICAgICAgTWF0Y2hpbmcucmVjb25zdHJ1Y3QgfmRlYnVnX21vZGUgZG9tYWluIGdyYXBoIGluaiAxIHBhdHRlcm4yXG4gICAgICAgICAgICAgICAgIHJvb3QyXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgICAgfCBTb21lIGluaicgLT5cbiAgICAgICAgICAgICAgKG1hdGNoIG1heF9kaXN0YW5jZSB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAoaW5qJywgWyByb290Mjsgcm9vdDEgXSwgTm9uZSkgOjogbGlzdCwgc3VjYyBsZW5cbiAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgbm9kZXMgPSBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpbiBwYXRzIGluaicgaW5cbiAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2UgZ3JhcGggbm9kZXMuKDApIG5vZGVzLigxKVxuICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IG91dFxuICAgICAgICAgICAgICAgIHwgU29tZSBfIGFzIHAgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgfnJ1bGVfaWQgcnVsZSBpbmonIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgb3V0XG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIChpbmonLCBbIHJvb3QyOyByb290MSBdLCBwKSA6OiBsaXN0LCBzdWNjIGxlbikpKSlcbiAgICBpblxuICAgIGxldCB1bmFyeV9jYW5kaWRhdGVzID1cbiAgICAgIGlmIGxlbiA9IDAgdGhlblxuICAgICAgICBNb2RzLkludE1hcC5yZW1vdmUgcnVsZV9pZCBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzXG4gICAgICBlbHNlXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBydWxlX2lkIGNhbmRzIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXNcbiAgICBpblxuICAgIGxlbiwgeyBzdGF0ZSB3aXRoIHVuYXJ5X2NhbmRpZGF0ZXMgfVxuXG4gIGxldCBwcmludCBlbnYgZiBzdGF0ZSA9XG4gICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzx2PiVhQCwlYUBdXCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoaSwgbWl4KSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVpbml0OiAlaSBAWzxoPiVhQF1cIiBpIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4KSlcbiAgICAgIChFZGdlcy5idWlsZF91c2VyX3NuYXBzaG90IH5kZWJ1Z19tb2RlOmZhbHNlIH5yYXc6ZmFsc2Ugc2lncyBzdGF0ZS5lZGdlcylcbiAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGkgZiBlbCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJSVpbml0OiAlYSAlYVwiIE5ici5wcmludCBlbFxuICAgICAgICAgICAgIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSBpKSlcbiAgICAgIHN0YXRlLmltcC50b2tlbnNcblxuICBsZXQgZGVidWdfcHJpbnQgZiBzdGF0ZSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+JWFALCVhQCwlYUBdXCIgRWRnZXMuZGVidWdfcHJpbnQgc3RhdGUuZWRnZXNcbiAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIGkgZiBlbCAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWEgdG9rZW5fJWlcIiBOYnIucHJpbnQgZWwgaSkpXG4gICAgICBzdGF0ZS5pbXAudG9rZW5zIEluc3RhbmNlcy5kZWJ1Z19wcmludCBzdGF0ZS5pbXAuaW5zdGFuY2VzXG5cbiAgdHlwZSBzdGF0cyA9IHsgbWl4dHVyZV9zdGF0czogRWRnZXMuc3RhdHMgfVxuXG4gIGxldCBzdGF0cyBzdGF0ZSA9IHsgbWl4dHVyZV9zdGF0cyA9IEVkZ2VzLnN0YXRzIHN0YXRlLmVkZ2VzIH1cblxuICBsZXQgcHJpbnRfc3RhdHMgZiBzdGF0ZSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVpIGFnZW50c1wiIChzdGF0cyBzdGF0ZSkubWl4dHVyZV9zdGF0cy5FZGdlcy5uYl9hZ2VudHNcblxuICBsZXQgbmV3X3BsYWNlIGZyZWVfaWQgKGlual9ub2RlcywgaW5qX2ZyZXNoKSA9IGZ1bmN0aW9uXG4gICAgfCBNYXRjaGluZy5BZ2VudC5FeGlzdGluZyBfIC0+IGZhaWx3aXRoIFwiUnVsZV9pbnRlcnByZXRlci5uZXdfcGxhY2VcIlxuICAgIHwgTWF0Y2hpbmcuQWdlbnQuRnJlc2ggKF8sIGlkKSAtPlxuICAgICAgaW5qX25vZGVzLCBNb2RzLkludE1hcC5hZGQgaWQgZnJlZV9pZCBpbmpfZnJlc2hcblxuICBsZXQgYXBwbHlfbmVnYXRpdmVfdHJhbnNmb3JtYXRpb24gP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgaW5zdGFuY2VzXG4gICAgICAoc2lkZV9lZmZlY3RzLCBlZGdlcykgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoaWQsIF8pIC0+XG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMucmVtb3ZlX2FnZW50IGlkIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAoKGlkLCBfKSwgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfZnJlZSBpZCBzIGVkZ2VzIGluXG4gICAgICBzaWRlX2VmZmVjdHMsIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKCgoaWQsIF8pLCBzKSwgKChpZCcsIF8pLCBzJykpIC0+XG4gICAgICBsZXQgZWRnZXMnLCBjY19tb2RpZiA9IEVkZ2VzLnJlbW92ZV9saW5rIGlkIHMgaWQnIHMnIGVkZ2VzIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBJbnN0YW5jZXMuYnJlYWtfYXBhcnRfY2MgaW5zdGFuY2VzIGVkZ2VzJyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgIGNjX21vZGlmXG4gICAgICBpblxuICAgICAgc2lkZV9lZmZlY3RzLCBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVXaGF0RXZlciAoKChpZCwgXyksIHMpIGFzIG4pIC0+XG4gICAgICAobWF0Y2ggTGlzdC5wYXJ0aXRpb24gKGZ1biB4IC0+IHggPSBuKSBzaWRlX2VmZmVjdHMgd2l0aFxuICAgICAgfCBfIDo6IF8sIHNpZGVfZWZmZWN0cycgLT4gc2lkZV9lZmZlY3RzJywgZWRnZXNcbiAgICAgIHwgW10sIF8gLT5cbiAgICAgICAgKG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gaWQgcyBlZGdlcyB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBzaWRlX2VmZmVjdHMsIEVkZ2VzLnJlbW92ZV9mcmVlIGlkIHMgZWRnZXNcbiAgICAgICAgfCBTb21lICgoKGlkJywgXykgYXMgbmMnKSwgcycpIC0+XG4gICAgICAgICAgbGV0IGVkZ2VzJywgY2NfbW9kaWYgPSBFZGdlcy5yZW1vdmVfbGluayBpZCBzIGlkJyBzJyBlZGdlcyBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBJbnN0YW5jZXMuYnJlYWtfYXBhcnRfY2MgaW5zdGFuY2VzIGVkZ2VzJyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICAgICBjY19tb2RpZlxuICAgICAgICAgIGluXG4gICAgICAgICAgKG5jJywgcycpIDo6IHNpZGVfZWZmZWN0cywgZWRnZXMnKSlcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiUG9zaXRpdmVJbnRlcm5hbGl6ZWQgaW4gbmVnYXRpdmUgdXBkYXRlXCIpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAoKGlkLCBfKSwgcykgLT5cbiAgICAgIGxldCBfLCBlZGdlcycgPSBFZGdlcy5yZW1vdmVfaW50ZXJuYWwgaWQgcyBlZGdlcyBpblxuICAgICAgc2lkZV9lZmZlY3RzLCBlZGdlcydcblxuICBsZXQgYXBwbHlfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgc2lncyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgaW5zdGFuY2VzIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cywgZWRnZXMpID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgbiAtPlxuICAgICAgbGV0IG5jLCBpbmoyZ3JhcGgnLCBlZGdlcycgPVxuICAgICAgICBsZXQgdHkgPSBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSBuIGluXG4gICAgICAgIGxldCBpZCwgZWRnZXMnID0gRWRnZXMuYWRkX2FnZW50IHNpZ3MgdHkgZWRnZXMgaW5cbiAgICAgICAgKGlkLCB0eSksIG5ld19wbGFjZSBpZCBpbmoyZ3JhcGggbiwgZWRnZXMnXG4gICAgICBpblxuICAgICAgKGluajJncmFwaCcsIHNpZGVfZWZmZWN0cywgZWRnZXMnKSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCBuY1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobiwgcykgLT5cbiAgICAgICgqKG4scyktYm90dG9tKilcbiAgICAgIGxldCAoKGlkLCBfKSBhcyBuYykgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuIGluXG4gICAgICAoKihBLDIzKSopXG4gICAgICBsZXQgZWRnZXMnID0gRWRnZXMuYWRkX2ZyZWUgaWQgcyBlZGdlcyBpblxuICAgICAgbGV0IHNpZGVfZWZmZWN0cycgPVxuICAgICAgICBMaXN0X3V0aWwuc21hcnRfZmlsdGVyIChmdW4geCAtPiB4IDw+IChuYywgcykpIHNpZGVfZWZmZWN0c1xuICAgICAgaW5cbiAgICAgIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cycsIGVkZ2VzJyksIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uRnJlZWQgKG5jLCBzKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChuLCBzKSwgKG4nLCBzJykpIC0+XG4gICAgICBsZXQgbmMgPSBNYXRjaGluZy5BZ2VudC5jb25jcmV0aXplIH5kZWJ1Z19tb2RlIGluajJncmFwaCBuIGluXG4gICAgICBsZXQgbmMnID0gTWF0Y2hpbmcuQWdlbnQuY29uY3JldGl6ZSB+ZGVidWdfbW9kZSBpbmoyZ3JhcGggbicgaW5cbiAgICAgIGxldCBlZGdlcycsIG1vZGlmX2NjID0gRWRnZXMuYWRkX2xpbmsgbmMgcyBuYycgcycgZWRnZXMgaW5cbiAgICAgIGxldCBzaWRlX2VmZmVjdHMnID1cbiAgICAgICAgTGlzdF91dGlsLnNtYXJ0X2ZpbHRlclxuICAgICAgICAgIChmdW4geCAtPiB4IDw+IChuYywgcykgJiYgeCA8PiAobmMnLCBzJykpXG4gICAgICAgICAgc2lkZV9lZmZlY3RzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSW5zdGFuY2VzLm1lcmdlX2NjIGluc3RhbmNlcyA/bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBtb2RpZl9jYyBpblxuICAgICAgKCAoaW5qMmdyYXBoLCBzaWRlX2VmZmVjdHMnLCBlZGdlcycpLFxuICAgICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSApXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLk5lZ2F0aXZlV2hhdEV2ZXIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVXaGF0RXZlciBpbiBwb3NpdGl2ZSB1cGRhdGVcIikpXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLlBvc2l0aXZlSW50ZXJuYWxpemVkIChuLCBzLCBpKSAtPlxuICAgICAgbGV0ICgoaWQsIF8pIGFzIG5jKSA9IE1hdGNoaW5nLkFnZW50LmNvbmNyZXRpemUgfmRlYnVnX21vZGUgaW5qMmdyYXBoIG4gaW5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfaW50ZXJuYWwgaWQgcyBpIGVkZ2VzIGluXG4gICAgICAoIChpbmoyZ3JhcGgsIHNpZGVfZWZmZWN0cywgZWRnZXMnKSxcbiAgICAgICAgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAobmMsIHMsIGkpIClcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWQgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuXG4gIGxldCBhcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiBzaWdzID9tb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICBpbnN0YW5jZXMgZWRnZXMgPSBmdW5jdGlvblxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5BZ2VudCAoaWQsIHR5KSAtPlxuICAgICAgbGV0IF8sIGVkZ2VzJyA9IEVkZ2VzLmFkZF9hZ2VudCB+aWQgc2lncyB0eSBlZGdlcyBpblxuICAgICAgZWRnZXMnXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkZyZWVkICgoaWQsIF8pLCBzKSAtPlxuICAgICAgKCoobixzKS1ib3R0b20qKVxuICAgICAgbGV0IGVkZ2VzJyA9IEVkZ2VzLmFkZF9mcmVlIGlkIHMgZWRnZXMgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5MaW5rZWQgKChuYywgcyksIChuYycsIHMnKSkgLT5cbiAgICAgIGxldCBlZGdlcycsIG1vZGlmX2NjID0gRWRnZXMuYWRkX2xpbmsgbmMgcyBuYycgcycgZWRnZXMgaW5cbiAgICAgIGxldCAoKSA9IEluc3RhbmNlcy5tZXJnZV9jYyBpbnN0YW5jZXMgP21vZF9jb25uZWN0aXZpdHlfc3RvcmUgbW9kaWZfY2MgaW5cbiAgICAgIGVkZ2VzJ1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIk5lZ2F0aXZlV2hhdEV2ZXIgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5Qb3NpdGl2ZUludGVybmFsaXplZCAoKGlkLCBfKSwgcywgaSkgLT5cbiAgICAgIGxldCBlZGdlcycgPSBFZGdlcy5hZGRfaW50ZXJuYWwgaWQgcyBpIGVkZ2VzIGluXG4gICAgICBlZGdlcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uTmVnYXRpdmVJbnRlcm5hbGl6ZWQgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiTmVnYXRpdmVJbnRlcm5hbGl6ZWQgaW4gcG9zaXRpdmUgdXBkYXRlXCIpKVxuXG4gIGxldCBvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uQWdlbnQgbmMgLT5cbiAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fYWdlbnQgZG9tYWluIGVkZ2VzIGFjYyBuY1xuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpIC0+XG4gICAgICAoKihuLHMpLWJvdHRvbSopXG4gICAgICBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzXG4gICAgfCBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLkxpbmtlZCAoKG5jLCBzKSwgKG5jJywgcycpKSAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9saW5rIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcyBhY2MgbmMgcyBuYycgcydcbiAgICB8IFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uUG9zaXRpdmVJbnRlcm5hbGl6ZWQgKG5jLCBzLCBpKSAtPlxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgaVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZUludGVybmFsaXplZCAoKChpZCwgXykgYXMgbmMpLCBzKSAtPlxuICAgICAgbGV0IGkgPSBFZGdlcy5nZXRfaW50ZXJuYWwgaWQgcyBlZGdlcyBpblxuICAgICAgTWF0Y2hpbmcub2JzZXJ2YWJsZXNfZnJvbV9pbnRlcm5hbCB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgaVxuICAgIHwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5OZWdhdGl2ZVdoYXRFdmVyICgoKGlkLCBfKSBhcyBuYyksIHMpIC0+XG4gICAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBpZCBzIGVkZ2VzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBNYXRjaGluZy5vYnNlcnZhYmxlc19mcm9tX2ZyZWUgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIGFjYyBuYyBzXG4gICAgICB8IFNvbWUgKG5jJywgcycpIC0+XG4gICAgICAgIE1hdGNoaW5nLm9ic2VydmFibGVzX2Zyb21fbGluayB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgYWNjIG5jIHMgbmMnIHMnKVxuXG4gIGxldCBvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbnMgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzIHRyYW5zID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcylcbiAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgdHJhbnNcbiAgICB8PiBmc3RcblxuICBsZXQgcGF0aF90ZXN0cyBwYXRoIHRlc3RzID1cbiAgICBsZXQga25vd25fYWdlbnRzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSAoaWQsIF8pIC0+IE1vZHMuSW50U2V0LmFkZCBpZCBhY2NcbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF9cbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF9cbiAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyAtPlxuICAgICAgICAgICAgIGFjYykpXG4gICAgICAgIE1vZHMuSW50U2V0LmVtcHR5IHRlc3RzXG4gICAgaW5cbiAgICBsZXQgcHJldGVzdHMgPVxuICAgICAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAgICAgKGZ1biAoeCwgeSkgLT5cbiAgICAgICAgICBpZlxuICAgICAgICAgICAgTGlzdC5mb3JfYWxsXG4gICAgICAgICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChhLCBiKSAtPlxuICAgICAgICAgICAgICAgICAgeCA8PiBhICYmIHggPD4gYiAmJiB5IDw+IGEgJiYgeSA8PiBiXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF9cbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgXyB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgXyAtPlxuICAgICAgICAgICAgICAgICAgdHJ1ZSkpXG4gICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgU29tZSAoSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoeCwgeSkpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgcGF0aFxuICAgIGluXG4gICAgbGV0IF8sIHBhdGhfdGVzdHMgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoYWcsIHRlKSAoKCgoaWQsIF8pIGFzIGEpLCBfKSwgKCgoaWQnLCBfKSBhcyBhJyksIF8pKSAtPlxuICAgICAgICAgIGxldCBhZycsIHRlJyA9XG4gICAgICAgICAgICBpZiBNb2RzLkludFNldC5tZW0gaWQgYWcgdGhlblxuICAgICAgICAgICAgICBhZywgdGVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTW9kcy5JbnRTZXQuYWRkIGlkIGFnLCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYSA6OiB0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgTW9kcy5JbnRTZXQubWVtIGlkJyBhZycgdGhlblxuICAgICAgICAgICAgYWcnLCB0ZSdcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBNb2RzLkludFNldC5hZGQgaWQnIGFnJywgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGEnIDo6IHRlJylcbiAgICAgICAgKGtub3duX2FnZW50cywgcHJldGVzdHMpIHBhdGhcbiAgICBpblxuICAgIHBhdGhfdGVzdHNcblxuICBsZXQgc3RlcF9vZl9ldmVudCBjb3VudGVyID0gZnVuY3Rpb25cbiAgICB8IFRyYWNlLklOSVQgXywgZSAtPiBUcmFjZS5Jbml0IGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgfCBUcmFjZS5SVUxFIHIsIHggLT5cbiAgICAgIFRyYWNlLlJ1bGUgKHIsIHgsIENvdW50ZXIubmV4dF9zdGVwX3NpbXVsYXRpb25faW5mbyBjb3VudGVyKVxuICAgIHwgVHJhY2UuUEVSVCBwLCB4IC0+XG4gICAgICBUcmFjZS5QZXJ0IChwLCB4LCBDb3VudGVyLmN1cnJlbnRfc2ltdWxhdGlvbl9pbmZvIGNvdW50ZXIpXG5cbiAgbGV0IHN0b3JlX2V2ZW50IH5kZWJ1Z19tb2RlIGNvdW50ZXIgaW5qMmdyYXBoIG5ld190cmFja2VkX29ic19pbnN0YW5jZXNcbiAgICAgIGV2ZW50X2tpbmQgP3BhdGggZXh0cmFfc2lkZV9lZmZlY3RzIHJ1bGUgb3V0cHV0cyA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIF8gLT5cbiAgICAgIGxldCBjZXZlbnQgPVxuICAgICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRpemVfZXZlbnQgfmRlYnVnX21vZGUgaW5qMmdyYXBoXG4gICAgICAgICAgcnVsZS5QcmltaXRpdmVzLmluc3RhbnRpYXRpb25zXG4gICAgICBpblxuICAgICAgbGV0IGZ1bGxfY29uY3JldGVfZXZlbnQgPVxuICAgICAgICB7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGNldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGNldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfc3JjID0gY2V2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgTGlzdC5yZXZfYXBwZW5kIGV4dHJhX3NpZGVfZWZmZWN0c1xuICAgICAgICAgICAgICBjZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgIEluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzID1cbiAgICAgICAgICAgIChtYXRjaCBwYXRoIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgfCBTb21lIE5vbmUgLT4gYXNzZXJ0IGZhbHNlXG4gICAgICAgICAgICB8IFNvbWUgKFNvbWUgcGF0aCkgLT4gcGF0aF90ZXN0cyBwYXRoIGNldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzKTtcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5UcmFjZVN0ZXBcbiAgICAgICAgICAgICAoc3RlcF9vZl9ldmVudCBjb3VudGVyIChldmVudF9raW5kLCBmdWxsX2NvbmNyZXRlX2V2ZW50KSkpXG4gICAgICBpblxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKGksIHgpIC0+XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuVHJhY2VTdGVwIChUcmFjZS5PYnMgKGksIHgsIENvdW50ZXIubmV4dF9zdG9yeSBjb3VudGVyKSkpKVxuICAgICAgICBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzXG5cbiAgbGV0IGdldF9zcGVjaWVzX29icyB+ZGVidWdfbW9kZSBzaWdzIGVkZ2VzIG9icyBhY2MgdHJhY2tlZCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChwYXR0ZXJuLCAocm9vdCwgXykpIC0+XG4gICAgICAgIHRyeVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjYyAoZm4sIHBhdHRlcm5zLCBfKSAtPlxuICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgIEFycmF5LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biBvayBwaWQgLT5cbiAgICAgICAgICAgICAgICAgICAgUGF0dGVybi5jb21wYXJlX2Nhbm9uaWNhbHMgcGlkIHBhdHRlcm4gPSAwIHx8IG9rKVxuICAgICAgICAgICAgICAgICAgZmFsc2UgcGF0dGVybnNcbiAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0IHNwZWMgPSBFZGdlcy5zcGVjaWVzIH5kZWJ1Z19tb2RlIHNpZ3Mgcm9vdCBlZGdlcyBpblxuICAgICAgICAgICAgICAgIChmbiwgcGF0dGVybnMsIHNwZWMpIDo6IGFjY1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MpXG4gICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIChQYXR0ZXJuLk9ic01hcC5nZXQgdHJhY2tlZCBwYXR0ZXJuKVxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBhY2MpXG4gICAgICBhY2Mgb2JzXG5cbiAgbGV0IHN0b3JlX29icyB+ZGVidWdfbW9kZSBkb21haW4gZWRnZXMgaW5zdGFuY2VzIG9icyBhY2MgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBhY2NcbiAgICB8IFNvbWUgdHJhY2tlZCAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgKHBhdHRlcm4sIChyb290LCBfKSkgLT5cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gYWNjIChldiwgcGF0dGVybnMsIHRlc3RzKSAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyAoaW5qLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdHMnID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgKExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5jb25jcmV0aXplX3Rlc3QgfmRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbmosIE1vZHMuSW50TWFwLmVtcHR5KSkpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoZXYsIHRlc3RzJykgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICAoYWxsX2luamVjdGlvbnMgfmRlYnVnX21vZGUgaW5zdGFuY2VzIH5leGNwOihwYXR0ZXJuLCByb290KVxuICAgICAgICAgICAgICAgICAgICAgZG9tYWluIGVkZ2VzIHBhdHRlcm5zKSlcbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgIChQYXR0ZXJuLk9ic01hcC5nZXQgdHJhY2tlZCBwYXR0ZXJuKVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGFjYylcbiAgICAgICAgYWNjIG9ic1xuXG4gIGxldCB1cGRhdGVfZWRnZXMgfmRlYnVnX21vZGUgb3V0cHV0cyBjb3VudGVyIGRvbWFpbiBpbmpfbm9kZXMgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgP3BhdGggcnVsZSBzaWdzID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAoKk5lZ2F0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGNvbmNyZXRlX3JlbW92ZWQgPVxuICAgICAgTGlzdC5tYXBcbiAgICAgICAgKFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24uY29uY3JldGl6ZSB+ZGVidWdfbW9kZVxuICAgICAgICAgICAoaW5qX25vZGVzLCBNb2RzLkludE1hcC5lbXB0eSkpXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKGRlbF9vYnMsIGRlbF9kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIHN0YXRlLmVkZ2VzKVxuICAgICAgICAoKFtdLCBPcGVyYXRvci5EZXBTZXQuZW1wdHkpLCBNYXRjaGluZy5lbXB0eV9jYWNoZSlcbiAgICAgICAgY29uY3JldGVfcmVtb3ZlZFxuICAgIGluXG4gICAgbGV0IHNpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAoW10sIHN0YXRlLmVkZ2VzKSBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyBmYWxzZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzX2FmdGVyX25lZ1xuICAgICAgICAgICAgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBwYXQgcm9vdClcbiAgICAgICAgZGVsX29ic1xuICAgIGluXG4gICAgKCpQb3NpdGl2ZSB1cGRhdGUqKVxuICAgIGxldCAoZmluYWxfaW5qMmdyYXBoLCByZW1haW5pbmdfc2lkZV9lZmZlY3RzLCBlZGdlcycpLCBjb25jcmV0ZV9pbnNlcnRlZCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICh4LCBwKSBoIC0+XG4gICAgICAgICAgbGV0IHgnLCBoJyA9XG4gICAgICAgICAgICBhcHBseV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZVxuICAgICAgICAgICAgICAoUGF0dGVybi5FbnYuc2lnbmF0dXJlcyBkb21haW4pXG4gICAgICAgICAgICAgIH5tb2RfY29ubmVjdGl2aXR5X3N0b3JlIHN0YXRlLmltcC5pbnN0YW5jZXMgeCBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICB4JywgaCcgOjogcClcbiAgICAgICAgKCgoaW5qX25vZGVzLCBNb2RzLkludE1hcC5lbXB0eSksIHNpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnKSwgW10pXG4gICAgICAgIHJ1bGUuUHJpbWl0aXZlcy5pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0IGVkZ2VzJycsIGNvbmNyZXRlX2luc2VydGVkJyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlLCBpKSAoKChpZCwgXykgYXMgbmMpLCBzKSAtPlxuICAgICAgICAgIEVkZ2VzLmFkZF9mcmVlIGlkIHMgZSwgUHJpbWl0aXZlcy5UcmFuc2Zvcm1hdGlvbi5GcmVlZCAobmMsIHMpIDo6IGkpXG4gICAgICAgIChlZGdlcycsIGNvbmNyZXRlX2luc2VydGVkKVxuICAgICAgICByZW1haW5pbmdfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgKG5ld19vYnMsIG5ld19kZXBzKSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAob2JzX2Zyb21fdHJhbnNmb3JtYXRpb24gfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJycpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9pbnNlcnRlZCdcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAocGF0LCAocm9vdCwgXykpIC0+XG4gICAgICAgICAgSW5zdGFuY2VzLnVwZGF0ZV9yb290cyBzdGF0ZS5pbXAuaW5zdGFuY2VzIHRydWVcbiAgICAgICAgICAgIHN0YXRlLmltcC5wcmVjb21wdXRlZC51bmFyeV9wYXR0ZXJucyBlZGdlcycnIG1vZF9jb25uZWN0aXZpdHlfc3RvcmVcbiAgICAgICAgICAgIHBhdCByb290KVxuICAgICAgICBuZXdfb2JzXG4gICAgaW5cbiAgICAoKlN0b3JlIGV2ZW50KilcbiAgICBsZXQgbmV3X3RyYWNrZWRfb2JzX2luc3RhbmNlcyA9XG4gICAgICBzdG9yZV9vYnMgfmRlYnVnX21vZGUgZG9tYWluIGVkZ2VzJycgc3RhdGUuaW1wLmluc3RhbmNlcyBuZXdfb2JzIFtdXG4gICAgICAgIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdG9yZV9ldmVudCB+ZGVidWdfbW9kZSBjb3VudGVyIGZpbmFsX2luajJncmFwaCBuZXdfdHJhY2tlZF9vYnNfaW5zdGFuY2VzXG4gICAgICAgIGV2ZW50X2tpbmQgP3BhdGggcmVtYWluaW5nX3NpZGVfZWZmZWN0cyBydWxlIG91dHB1dHNcbiAgICAgICAgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeVxuICAgIGluXG4gICAgKCpQcmludCBzcGVjaWVzKilcbiAgICBsZXQgc3BlY2llcyA9XG4gICAgICBnZXRfc3BlY2llc19vYnMgfmRlYnVnX21vZGUgc2lncyBlZGdlcycnIG5ld19vYnMgW10gc3RhdGUuaW1wLnNwZWNpZXNcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAoZmlsZSwgXywgbWl4dHVyZSkgLT5cbiAgICAgICAgICBvdXRwdXRzIChEYXRhLlNwZWNpZXMgKGZpbGUsIENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIsIG1peHR1cmUpKSlcbiAgICAgICAgc3BlY2llc1xuICAgIGluXG4gICAgbGV0IHJldl9kZXBzID1cbiAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50c1xuICAgICAgICAoT3BlcmF0b3IuRGVwU2V0LnVuaW9uIGRlbF9kZXBzIG5ld19kZXBzKVxuICAgIGluXG4gICAge1xuICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgIGltcCA9IHN0YXRlLmltcDtcbiAgICAgIG1hdGNoaW5nc19vZl9ydWxlID0gc3RhdGUubWF0Y2hpbmdzX29mX3J1bGU7XG4gICAgICB1bmFyeV9jYW5kaWRhdGVzID0gc3RhdGUudW5hcnlfY2FuZGlkYXRlcztcbiAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyA9IHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgIGVkZ2VzID0gZWRnZXMnJztcbiAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gcmV2X2RlcHM7XG4gICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgfVxuXG4gIGxldCB1cGRhdGVfZWRnZXNfZnJvbV9hY3Rpb25zIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIHNpZ3MgY291bnRlciBkb21haW4gc3RhdGVcbiAgICAgIChhY3Rpb25zLCBzaWRlX2VmZmVjdF9kc3QpID1cbiAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0IG1vZF9jb25uZWN0aXZpdHlfc3RvcmUgPSBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAoKk5lZ2F0aXZlIHVwZGF0ZSopXG4gICAgbGV0IGxua19kc3QgKChhLCBfKSwgcykgPSBFZGdlcy5saW5rX2Rlc3RpbmF0aW9uIGEgcyBzdGF0ZS5lZGdlcyBpblxuICAgIGxldCBjb25jcmV0ZV9yZW1vdmVkID1cbiAgICAgIFByaW1pdGl2ZXMuVHJhbnNmb3JtYXRpb24ubmVnYXRpdmVfdHJhbnNmb3JtYXRpb25zX29mX2FjdGlvbnMgc2lncyBsbmtfZHN0XG4gICAgICAgIGFjdGlvbnNcbiAgICBpblxuICAgIGxldCAoZGVsX29icywgZGVsX2RlcHMpLCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChvYnNfZnJvbV90cmFuc2Zvcm1hdGlvbiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUuZWRnZXMpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgX3NpZGVfZWZmZWN0cywgZWRnZXNfYWZ0ZXJfbmVnID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChhcHBseV9uZWdhdGl2ZV90cmFuc2Zvcm1hdGlvbiB+bW9kX2Nvbm5lY3Rpdml0eV9zdG9yZVxuICAgICAgICAgICBzdGF0ZS5pbXAuaW5zdGFuY2VzKVxuICAgICAgICAoW10sIHN0YXRlLmVkZ2VzKSBjb25jcmV0ZV9yZW1vdmVkXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTGlzdC5pdGVyXG4gICAgICAgIChmdW4gKHBhdCwgKHJvb3QsIF8pKSAtPlxuICAgICAgICAgIEluc3RhbmNlcy51cGRhdGVfcm9vdHMgc3RhdGUuaW1wLmluc3RhbmNlcyBmYWxzZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzX2FmdGVyX25lZ1xuICAgICAgICAgICAgbW9kX2Nvbm5lY3Rpdml0eV9zdG9yZSBwYXQgcm9vdClcbiAgICAgICAgZGVsX29ic1xuICAgIGluXG4gICAgKCpQb3NpdGl2ZSB1cGRhdGUqKVxuICAgIGxldCBjb25jcmV0ZV9pbnNlcnRlZCA9XG4gICAgICBQcmltaXRpdmVzLlRyYW5zZm9ybWF0aW9uLnBvc2l0aXZlX3RyYW5zZm9ybWF0aW9uc19vZl9hY3Rpb25zIHNpZ3NcbiAgICAgICAgc2lkZV9lZmZlY3RfZHN0IGFjdGlvbnNcbiAgICBpblxuICAgIGxldCBlZGdlcycgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4IGggLT5cbiAgICAgICAgICBhcHBseV9jb25jcmV0ZV9wb3NpdGl2ZV90cmFuc2Zvcm1hdGlvblxuICAgICAgICAgICAgKFBhdHRlcm4uRW52LnNpZ25hdHVyZXMgZG9tYWluKVxuICAgICAgICAgICAgfm1vZF9jb25uZWN0aXZpdHlfc3RvcmUgc3RhdGUuaW1wLmluc3RhbmNlcyB4IGgpXG4gICAgICAgIGVkZ2VzX2FmdGVyX25lZyBjb25jcmV0ZV9pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0IChuZXdfb2JzLCBuZXdfZGVwcyksIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKG9ic19mcm9tX3RyYW5zZm9ybWF0aW9uIH5kZWJ1Z19tb2RlIGRvbWFpbiBlZGdlcycpXG4gICAgICAgICgoW10sIE9wZXJhdG9yLkRlcFNldC5lbXB0eSksIE1hdGNoaW5nLmVtcHR5X2NhY2hlKVxuICAgICAgICBjb25jcmV0ZV9pbnNlcnRlZFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChwYXQsIChyb290LCBfKSkgLT5cbiAgICAgICAgICBJbnN0YW5jZXMudXBkYXRlX3Jvb3RzIHN0YXRlLmltcC5pbnN0YW5jZXMgdHJ1ZVxuICAgICAgICAgICAgc3RhdGUuaW1wLnByZWNvbXB1dGVkLnVuYXJ5X3BhdHRlcm5zIGVkZ2VzJyBtb2RfY29ubmVjdGl2aXR5X3N0b3JlXG4gICAgICAgICAgICBwYXQgcm9vdClcbiAgICAgICAgbmV3X29ic1xuICAgIGluXG4gICAgKCpQcmludCBzcGVjaWVzKilcbiAgICBsZXQgc3BlY2llcyA9XG4gICAgICBnZXRfc3BlY2llc19vYnMgfmRlYnVnX21vZGUgc2lncyBlZGdlcycgbmV3X29icyBbXSBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChmaWxlLCBfLCBtaXh0dXJlKSAtPlxuICAgICAgICAgIG91dHB1dHMgKERhdGEuU3BlY2llcyAoZmlsZSwgQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciwgbWl4dHVyZSkpKVxuICAgICAgICBzcGVjaWVzXG4gICAgaW5cbiAgICBsZXQgcmV2X2RlcHMgPVxuICAgICAgT3BlcmF0b3IuRGVwU2V0LnVuaW9uIHN0YXRlLm91dGRhdGVkX2VsZW1lbnRzXG4gICAgICAgIChPcGVyYXRvci5EZXBTZXQudW5pb24gZGVsX2RlcHMgbmV3X2RlcHMpXG4gICAgaW5cbiAgICB7XG4gICAgICBvdXRkYXRlZCA9IGZhbHNlO1xuICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgbWF0Y2hpbmdzX29mX3J1bGUgPSBzdGF0ZS5tYXRjaGluZ3Nfb2ZfcnVsZTtcbiAgICAgIG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYyA9IHN0YXRlLm5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYztcbiAgICAgIHVuYXJ5X2NhbmRpZGF0ZXMgPSBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzO1xuICAgICAgZWRnZXMgPSBlZGdlcyc7XG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9IHJldl9kZXBzO1xuICAgICAgZXZlbnRzX3RvX2Jsb2NrID0gc3RhdGUuZXZlbnRzX3RvX2Jsb2NrO1xuICAgIH1cblxuICBsZXQgbWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUgZCA9IE5ici50b19pbnQgKHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGQpXG5cbiAgKCogY2NfdmEgaXMgdGhlIG51bWJlciBvZiBlbWJlZGRpbmdzLiBJdCBvbmx5IGhhc1xuICAgICB0byBiZSBtdWx0aXBsaWVkIGJ5IHRoZSByYXRlIGNvbnN0YW50IG9mIHRoZSBydWxlICopXG4gIGxldCBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSBpZCBzeW50YXhfaWQgcmF0ZSBjY192YVxuICAgICAgPVxuICAgIGxldCAoKSA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbJXN1bGUgJWEgaGFzIG5vdyAlaSBpbnN0YW5jZXMuQF1ALlwiXG4gICAgICAgICAgKGlmIGlkIG1vZCAyID0gMSB0aGVuXG4gICAgICAgICAgICAgXCJVbmFyeSByXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiUlwiKVxuICAgICAgICAgIChNb2RlbC5wcmludF9ydWxlIH5ub0NvdW50ZXJzOnRydWUgfmVudilcbiAgICAgICAgICAoaWQgLyAyKSBjY192YVxuICAgIGluXG4gICAgbGV0IGFjdCA9XG4gICAgICBtYXRjaCBOYnIudG9fZmxvYXQgQEAgdmFsdWVfYWxnIGNvdW50ZXIgc3RhdGUgcmF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgaWYgY2NfdmEgPSAwIHRoZW5cbiAgICAgICAgICAwLlxuICAgICAgICBlbHNlXG4gICAgICAgICAgaW5maW5pdHlcbiAgICAgIHwgU29tZSByYXRlIC0+IHJhdGUgKi4gZmxvYXRfb2ZfaW50IGNjX3ZhXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgYWN0IDwgMC4gdGhlbiAoXG4gICAgICAgIGxldCB1bmFyeSA9IGlkIG1vZCAyID0gMSBpblxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgXCJBdCB0PSUuMmYgJXNjdGl2aXR5IG9mIHJ1bGUgJWEgaGFzIGJlY29tZSBuZWdhdGl2ZSAoJWYpXCJcbiAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgIChpZiB1bmFyeSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFwiVW5hcnkgXCJcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgXCJcIilcbiAgICAgICAgICAgICAgICAgKE1vZGVsLnByaW50X3J1bGUgfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZW52KVxuICAgICAgICAgICAgICAgICBpZCBhY3QsXG4gICAgICAgICAgICAgICBNb2RlbC5nZXRfYXN0X3J1bGVfcmF0ZV9wb3MgfnVuYXJ5IGVudiBzeW50YXhfaWQgKSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBvbGRfYWN0ID0gZ2V0X2FjdGl2aXR5IGlkIHN0YXRlIGluXG4gICAgbGV0ICgpID0gc2V0X2FjdGl2aXR5IGlkIGFjdCBzdGF0ZSBpblxuICAgIHN0b3JlIHN5bnRheF9pZCBvbGRfYWN0IGFjdFxuXG4gIGxldCB1cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSBrbm93bl9wZXJ0c1xuICAgICAgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCB1bmFyeV9ydWxlX3VwZGF0ZSBtb2RpZmllZF9jYyBpbnN0YW5jZXMgaSBwYWNrIHJ1bGUgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IHBhY2tcbiAgICAgIHwgU29tZSAodW5yYXRlLCBfKSAtPlxuICAgICAgICBsZXQgdmEsIHBhY2snID1cbiAgICAgICAgICBjb21wdXRlX3VuYXJ5X251bWJlciBpbnN0YW5jZXMgcGFjayBtb2RpZmllZF9jYyBydWxlIGlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICAgKCgyICogaSkgKyAxKVxuICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlIChmc3QgdW5yYXRlKSAoSW50NjQudG9faW50IHZhKVxuICAgICAgICBpblxuICAgICAgICBwYWNrJ1xuICAgIGluXG4gICAgbGV0IHJlYyBhdXggZGVwIGFjYyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQuZm9sZFxuICAgICAgICAoZnVuIGRlcCAoKGV4YWN0X21hdGNoaW5ncywgcGVydHMpIGFzIGFjYykgLT5cbiAgICAgICAgICBtYXRjaCBkZXAgd2l0aFxuICAgICAgICAgIHwgT3BlcmF0b3IuQUxHIGogLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHJlY29tcHV0ZSBlbnYgY291bnRlciBzdGF0ZSBqIGluXG4gICAgICAgICAgICBhdXggKE1vZGVsLmdldF9hbGdfcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGopIGFjY1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9ESUYgcCAtPiBleGFjdF9tYXRjaGluZ3MsIHAgOjogcGVydHNcbiAgICAgICAgICB8IE9wZXJhdG9yLlJVTEUgaSAtPlxuICAgICAgICAgICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgaSBpblxuICAgICAgICAgICAgbGV0IHBhdHRlcm5fdmEgPVxuICAgICAgICAgICAgICBJbnN0YW5jZXMubnVtYmVyX29mX2luc3RhbmNlcyB+cnVsZV9pZDppIHN0YXRlLmltcC5pbnN0YW5jZXNcbiAgICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBzdG9yZV9hY3Rpdml0eSB+ZGVidWdfbW9kZSBzdG9yZSBlbnYgY291bnRlciBzdGF0ZSAoMiAqIGkpXG4gICAgICAgICAgICAgICAgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlIChmc3QgcnVsZS5QcmltaXRpdmVzLnJhdGUpXG4gICAgICAgICAgICAgICAgcGF0dGVybl92YVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHBvcF9leGFjdF9tYXRjaGluZ3MgZXhhY3RfbWF0Y2hpbmdzIGksIHBlcnRzKVxuICAgICAgICBkZXAgYWNjXG4gICAgaW5cbiAgICBsZXQgbWF0Y2hpbmdzX29mX3J1bGUsIHBlcnRzID1cbiAgICAgIGF1eCBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cyAoc3RhdGUubWF0Y2hpbmdzX29mX3J1bGUsIGtub3duX3BlcnRzKVxuICAgIGluXG4gICAgbGV0IG5iX3JlY3Rhbmd1bGFyX2luc3RhbmNlc19ieV9jYywgdW5hcnlfY2FuZGlkYXRlcyA9XG4gICAgICBpZiBIYXNodGJsLmxlbmd0aCBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgPSAwIHRoZW5cbiAgICAgICAgc3RhdGUubmJfcmVjdGFuZ3VsYXJfaW5zdGFuY2VzX2J5X2NjLCBzdGF0ZS51bmFyeV9jYW5kaWRhdGVzXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IG91dCA9XG4gICAgICAgICAgTW9kZWwuZm9sZF9ydWxlc1xuICAgICAgICAgICAgKHVuYXJ5X3J1bGVfdXBkYXRlIHN0YXRlLmltcC5jaGFuZ2VkX2Nvbm5lY3Rpdml0eVxuICAgICAgICAgICAgICAgc3RhdGUuaW1wLmluc3RhbmNlcylcbiAgICAgICAgICAgIChzdGF0ZS5uYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2MsIHN0YXRlLnVuYXJ5X2NhbmRpZGF0ZXMpXG4gICAgICAgICAgICBlbnZcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXNldCBzdGF0ZS5pbXAuY2hhbmdlZF9jb25uZWN0aXZpdHkgaW5cbiAgICAgICAgb3V0XG4gICAgICApXG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgb3V0ZGF0ZWQgPSBmYWxzZTtcbiAgICAgICAgaW1wID0gc3RhdGUuaW1wO1xuICAgICAgICBlZGdlcyA9IHN0YXRlLmVkZ2VzO1xuICAgICAgICBldmVudHNfdG9fYmxvY2sgPSBzdGF0ZS5ldmVudHNfdG9fYmxvY2s7XG4gICAgICAgIG1hdGNoaW5nc19vZl9ydWxlO1xuICAgICAgICBuYl9yZWN0YW5ndWxhcl9pbnN0YW5jZXNfYnlfY2M7XG4gICAgICAgIHVuYXJ5X2NhbmRpZGF0ZXM7XG4gICAgICAgIG91dGRhdGVkX2VsZW1lbnRzID0gc3RhdGUuaW1wLnByZWNvbXB1dGVkLmFsd2F5c19vdXRkYXRlZDtcbiAgICAgIH0sXG4gICAgICBwZXJ0cyApXG5cbiAgbGV0IG92ZXJ3cml0ZV92YXIgaSBjb3VudGVyIHN0YXRlIGV4cHIgPVxuICAgIGxldCAoKSA9XG4gICAgICBzdGF0ZS5pbXAudmFyaWFibGVzX292ZXJ3cml0ZS4oaSkgPC1cbiAgICAgICAgU29tZSAoQWxnX2V4cHIuQ09OU1QgKHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGV4cHIpKVxuICAgIGluXG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPVxuICAgICAgICBPcGVyYXRvci5EZXBTZXQuYWRkIChPcGVyYXRvci5BTEcgaSkgc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHM7XG4gICAgfVxuXG4gIGxldCB1cGRhdGVfdG9rZW5zIGVudiBjb3VudGVyIHN0YXRlIGluamVjdGVkID1cbiAgICBsZXQgaW5qZWN0ZWQnID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuICgoZXhwciwgXyksIGkpIC0+IHZhbHVlX2FsZyBjb3VudGVyIHN0YXRlIGV4cHIsIGkpXG4gICAgICAgIGluamVjdGVkXG4gICAgaW5cbiAgICB7XG4gICAgICBzdGF0ZSB3aXRoXG4gICAgICBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biByZGVwcyAodmEsIGkpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBzdGF0ZS5pbXAudG9rZW5zLihpKSA8LSBOYnIuYWRkIHN0YXRlLmltcC50b2tlbnMuKGkpIHZhIGluXG4gICAgICAgICAgICBsZXQgZGVwcycgPSBNb2RlbC5nZXRfdG9rZW5fcmV2ZXJzZV9kZXBlbmRlbmNpZXMgZW52IGkgaW5cbiAgICAgICAgICAgIGlmIE9wZXJhdG9yLkRlcFNldC5pc19lbXB0eSBkZXBzJyB0aGVuXG4gICAgICAgICAgICAgIHJkZXBzXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIE9wZXJhdG9yLkRlcFNldC51bmlvbiByZGVwcyBkZXBzJylcbiAgICAgICAgICBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cyBpbmplY3RlZCc7XG4gICAgfVxuXG4gIGxldCB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZCA/cGF0aFxuICAgICAgcnVsZSA/cnVsZV9pZCBpbmogPVxuICAgIGlmIGlzX2Jsb2NrZWQgfmRlYnVnX21vZGUgc3RhdGUgP3J1bGVfaWQgcnVsZSBpbmogdGhlblxuICAgICAgQmxvY2tlZFxuICAgIGVsc2UgKFxuICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgdXBkYXRlX3Rva2VucyBlbnYgY291bnRlciBzdGF0ZSBydWxlLlByaW1pdGl2ZXMuZGVsdGFfdG9rZW5zXG4gICAgICBpblxuICAgICAgbGV0IHN0YXRlID1cbiAgICAgICAgdXBkYXRlX2VkZ2VzIH5kZWJ1Z19tb2RlIG91dHB1dHMgY291bnRlciAoTW9kZWwuZG9tYWluIGVudikgaW5qIHN0YXRlXG4gICAgICAgICAgZXZlbnRfa2luZCA/cGF0aCBydWxlIChNb2RlbC5zaWduYXR1cmVzIGVudilcbiAgICAgIGluXG4gICAgICBTdWNjZXNzIHN0YXRlXG4gICAgKVxuXG4gIGxldCBhcHBseV9naXZlbl91bmFyeV9pbnN0YW5jZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gQ2xhc2hcbiAgICB8IFNvbWUgKGluaiwgX3Jldl9yb290cywgcGF0aCkgLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0IHN0YXRlJyA9XG4gICAgICAgIHtcbiAgICAgICAgICBzdGF0ZSB3aXRoXG4gICAgICAgICAgb3V0ZGF0ZWRfZWxlbWVudHMgPVxuICAgICAgICAgICAgT3BlcmF0b3IuRGVwU2V0LmFkZCAoT3BlcmF0b3IuUlVMRSBydWxlX2lkKSBzdGF0ZS5vdXRkYXRlZF9lbGVtZW50cztcbiAgICAgICAgfVxuICAgICAgaW5cbiAgICAgIChtYXRjaCBwYXRoIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZScgZXZlbnRfa2luZFxuICAgICAgICAgIH5wYXRoIHJ1bGUgfnJ1bGVfaWQgaW5qXG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG1heF9kaXN0YW5jZSA9XG4gICAgICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgfCBTb21lIChfLCBkaXN0X29wdCkgLT5cbiAgICAgICAgICAgIChtYXRjaCBkaXN0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUnIGQpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICBsZXQgbm9kZXMgPVxuICAgICAgICAgIE1hdGNoaW5nLmVsZW1lbnRzX3dpdGhfdHlwZXMgZG9tYWluXG4gICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5qXG4gICAgICAgIGluXG4gICAgICAgIGlmIG1heF9kaXN0YW5jZSA9IE5vbmUgJiYgc3RhdGUuaW1wLnN0b3J5X21hY2hpbmVyeSA9IE5vbmUgdGhlblxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBFZGdlcy5pbl9zYW1lX2Nvbm5lY3RlZF9jb21wb25lbnRcbiAgICAgICAgICAgICAgKGZzdCAoTGlzdC5oZCBub2Rlcy4oMCkpKVxuICAgICAgICAgICAgICAoZnN0IChMaXN0LmhkIG5vZGVzLigxKSkpXG4gICAgICAgICAgICAgIHN0YXRlLmVkZ2VzXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlJ1xuICAgICAgICAgICAgICBldmVudF9raW5kIH5wYXRoOk5vbmUgcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBDb3JyZWN0ZWRcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIEVkZ2VzLmFyZV9jb25uZWN0ZWQgP21heF9kaXN0YW5jZSBzdGF0ZS5lZGdlcyBub2Rlcy4oMCkgbm9kZXMuKDEpXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBDb3JyZWN0ZWRcbiAgICAgICAgICB8IFNvbWUgXyBhcyBwYXRoIC0+XG4gICAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUnXG4gICAgICAgICAgICAgIGV2ZW50X2tpbmQgfnBhdGggcnVsZSB+cnVsZV9pZCBpbmpcbiAgICAgICAgKSlcblxuICBsZXQgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP3J1bGVfaWQgZW52IGNvdW50ZXIgc3RhdGVcbiAgICAgIGV2ZW50X2tpbmQgcnVsZSA9IGZ1bmN0aW9uXG4gICAgfCBOb25lIC0+IENsYXNoXG4gICAgfCBTb21lIChpbmosIHJldl9yb290cywgX3BhdGgpIC0+XG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKG5vdCBzdGF0ZS5vdXRkYXRlZCkgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0IHJvb3RzID0gVG9vbHMuYXJyYXlfcmV2X29mX2xpc3QgcmV2X3Jvb3RzIGluXG4gICAgICAgICAgRm9ybWF0LnByaW50ZiBcIkBbT24gcm9vdHM6QCBAWyVhQF1AXUAuXCJcbiAgICAgICAgICAgIChQcC5hcnJheSBQcC5zcGFjZSAoZnVuIF8gLT4gRm9ybWF0LnBwX3ByaW50X2ludCkpXG4gICAgICAgICAgICByb290c1xuICAgICAgICApXG4gICAgICBpblxuICAgICAgKG1hdGNoIHJ1bGUuUHJpbWl0aXZlcy51bmFyeV9yYXRlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgIHJ1bGUgP3J1bGVfaWQgaW5qXG4gICAgICB8IFNvbWUgKF8sIG1heF9kaXN0YW5jZSkgLT5cbiAgICAgICAgKG1hdGNoIG1heF9kaXN0YW5jZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIChtYXRjaCByZXZfcm9vdHMgd2l0aFxuICAgICAgICAgIHwgWyByb290MTsgcm9vdDAgXSAtPlxuICAgICAgICAgICAgaWYgRWRnZXMuaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHJvb3QwIHJvb3QxIHN0YXRlLmVkZ2VzIHRoZW5cbiAgICAgICAgICAgICAgQ29ycmVjdGVkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHRyYW5zZm9ybV9ieV9hX3J1bGUgfmRlYnVnX21vZGUgb3V0cHV0cyBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICAgICAgIGV2ZW50X2tpbmQgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgICAgICB8IF8gLT4gZmFpbHdpdGggXCJhcHBseV9naXZlbl9ydWxlIHVuYXJ5IHJ1bGUgd2l0aG91dCAyIHBhdHRlcm5zXCIpXG4gICAgICAgIHwgU29tZSBkaXN0IC0+XG4gICAgICAgICAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgICAgICAgICBsZXQgZGlzdCcgPSBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkaXN0KSBpblxuICAgICAgICAgIGxldCBub2RlcyA9XG4gICAgICAgICAgICBNYXRjaGluZy5lbGVtZW50c193aXRoX3R5cGVzIGRvbWFpblxuICAgICAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5qXG4gICAgICAgICAgaW5cbiAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICBFZGdlcy5hcmVfY29ubmVjdGVkID9tYXhfZGlzdGFuY2U6ZGlzdCcgc3RhdGUuZWRnZXMgbm9kZXMuKDApXG4gICAgICAgICAgICAgICBub2Rlcy4oMSlcbiAgICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgdHJhbnNmb3JtX2J5X2FfcnVsZSB+ZGVidWdfbW9kZSBvdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmRcbiAgICAgICAgICAgICAgcnVsZSA/cnVsZV9pZCBpbmpcbiAgICAgICAgICB8IFNvbWUgXyAtPiBDb3JyZWN0ZWQpKSlcblxuICBsZXQgYXBwbHlfZ2l2ZW5fcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyA/cnVsZV9pZCBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgZXZlbnRfa2luZCBydWxlID1cbiAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgIGxldCBpbnN0ID1cbiAgICAgIHBpY2tfYV9ydWxlX2luc3RhbmNlIH5kZWJ1Z19tb2RlIHN0YXRlIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgZG9tYWluXG4gICAgICAgIHN0YXRlLmVkZ2VzID9ydWxlX2lkIHJ1bGVcbiAgICBpblxuICAgIGFwcGx5X2dpdmVuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICBldmVudF9raW5kIHJ1bGUgaW5zdFxuXG4gIGxldCBmb3JjZV9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIHN0YXRlIGV2ZW50X2tpbmQgP3J1bGVfaWQgcnVsZVxuICAgICAgPVxuICAgIG1hdGNoXG4gICAgICBhcHBseV9naXZlbl9ydWxlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzID9ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlXG4gICAgICAgIGV2ZW50X2tpbmQgcnVsZVxuICAgIHdpdGhcbiAgICB8IFN1Y2Nlc3Mgb3V0IC0+IFNvbWUgb3V0XG4gICAgfCBDb3JyZWN0ZWQgfCBCbG9ja2VkIHwgQ2xhc2ggLT5cbiAgICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgICAgbGV0IHVuYXJ5X3JhdGUgPVxuICAgICAgICBtYXRjaCBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgIHwgU29tZSAobG9jLCBkaXN0X29wdCkgLT5cbiAgICAgICAgICAobWF0Y2ggZGlzdF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBTb21lIChsb2MsIE5vbmUpXG4gICAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobG9jLCBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkKSkpXG4gICAgICBpblxuICAgICAgKG1hdGNoXG4gICAgICAgICBhbGxfaW5qZWN0aW9ucyB+ZGVidWdfbW9kZSA/cnVsZV9pZCA/dW5hcnlfcmF0ZSBzdGF0ZS5pbXAuaW5zdGFuY2VzXG4gICAgICAgICAgIChNb2RlbC5kb21haW4gZW52KSBzdGF0ZS5lZGdlcyBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHNcbiAgICAgICB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJBdCB0PSVmLCAlYSBkb2VzIG5vdCBhcHBseSAoYW55bW9yZSlcIlxuICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgICAoVHJhY2UucHJpbnRfZXZlbnRfa2luZCB+ZW52KVxuICAgICAgICAgICAgICAgICAgICAgZXZlbnRfa2luZCApKVxuICAgICAgICBpblxuICAgICAgICBOb25lXG4gICAgICB8IGwgLT5cbiAgICAgICAgbGV0IGgsIF8gPSBMaXN0X3V0aWwucmFuZG9tIHN0YXRlLmltcC5yYW5kb21fc3RhdGUgbCBpblxuICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICB0cmFuc2Zvcm1fYnlfYV9ydWxlIH5kZWJ1Z19tb2RlIG91dHB1dHMgZW52IGNvdW50ZXIgc3RhdGUgZXZlbnRfa2luZFxuICAgICAgICAgICAgcnVsZSA/cnVsZV9pZCBoXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBvdXQgd2l0aFxuICAgICAgICB8IFN1Y2Nlc3Mgb3V0IC0+IFNvbWUgb3V0XG4gICAgICAgIHwgQmxvY2tlZCAtPiBOb25lXG4gICAgICAgIHwgQ2xhc2ggfCBDb3JyZWN0ZWQgLT4gYXNzZXJ0IGZhbHNlKSlcblxuICBsZXQgYWRqdXN0X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IHVuYXJ5X3JhdGUgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAobG9jLCBkaXN0X29wdCkgLT5cbiAgICAgICAgKG1hdGNoIGRpc3Rfb3B0IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFNvbWUgKGxvYywgTm9uZSlcbiAgICAgICAgfCBTb21lIGQgLT4gU29tZSAobG9jLCBTb21lIChtYXhfZGlzdF90b19pbnQgY291bnRlciBzdGF0ZSBkKSkpXG4gICAgaW5cbiAgICBsZXQgYWN0LCBzdGF0ZSA9XG4gICAgICBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgP3VuYXJ5X3JhdGUgc3RhdGUgZG9tYWluXG4gICAgICAgIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBydWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc3RvcmVfYWN0aXZpdHkgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgc3RhdGUgKDIgKiBydWxlX2lkKSBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGVcbiAgICAgICAgKGZzdCBydWxlLlByaW1pdGl2ZXMucmF0ZSkgYWN0XG4gICAgaW5cbiAgICBzdGF0ZVxuXG4gICgqIFJlZGVmaW5lcyBgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzYCAqKVxuICBsZXQgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIHN0YXRlIHJ1bGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgbGV0IG1heF9kaXN0YW5jZSA9XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4gKF8sIGRpc3Rfb3B0KSAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAobWF4X2Rpc3RfdG9faW50IGNvdW50ZXIgc3RhdGUpIGRpc3Rfb3B0KVxuICAgICAgICBydWxlLlByaW1pdGl2ZXMudW5hcnlfcmF0ZVxuICAgIGluXG4gICAgbGV0IGFjdCwgc3RhdGUgPVxuICAgICAgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkID9tYXhfZGlzdGFuY2Ugc3RhdGVcbiAgICAgICAgZG9tYWluIHN0YXRlLmVkZ2VzIHJ1bGUuUHJpbWl0aXZlcy5jb25uZWN0ZWRfY29tcG9uZW50cyBydWxlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcnVsZS5QcmltaXRpdmVzLnVuYXJ5X3JhdGUgd2l0aFxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZVxuICAgICAgfCBTb21lICh1bnJhdGUsIF8pIC0+XG4gICAgICAgIHN0b3JlX2FjdGl2aXR5IH5kZWJ1Z19tb2RlXG4gICAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgICBlbnYgY291bnRlciBzdGF0ZVxuICAgICAgICAgICgoMiAqIHJ1bGVfaWQpICsgMSlcbiAgICAgICAgICBydWxlLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgKGZzdCB1bnJhdGUpIGFjdFxuICAgIGluXG4gICAgc3RhdGVcblxuICBsZXQgaW5jb3Jwb3JhdGVfZXh0cmFfcGF0dGVybiB+ZGVidWdfbW9kZSBkb21haW4gc3RhdGUgcGF0dGVybiA9XG4gICAgbGV0ICgpID0gYXNzZXJ0IChub3Qgc3RhdGUub3V0ZGF0ZWQpIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEluc3RhbmNlcy5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIHN0YXRlLmltcC5pbnN0YW5jZXMgcGF0dGVyblxuICAgICAgICAoTWF0Y2hpbmcucm9vdHNfb2YgfmRlYnVnX21vZGUgZG9tYWluIHN0YXRlLmVkZ2VzIHBhdHRlcm4pXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IHNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXcgZW52IGNvdW50ZXIgc3RhdGUgPVxuICAgIHtcbiAgICAgIERhdGEuc25hcHNob3RfZXZlbnQgPSBDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcjtcbiAgICAgIERhdGEuc25hcHNob3RfdGltZSA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXI7XG4gICAgICBEYXRhLnNuYXBzaG90X2FnZW50cyA9XG4gICAgICAgIEVkZ2VzLmJ1aWxkX3VzZXJfc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyAoTW9kZWwuc2lnbmF0dXJlcyBlbnYpXG4gICAgICAgICAgc3RhdGUuZWRnZXM7XG4gICAgICBEYXRhLnNuYXBzaG90X3Rva2VucyA9XG4gICAgICAgIEFycmF5Lm1hcGlcbiAgICAgICAgICAoZnVuIGkgeCAtPiBGb3JtYXQuYXNwcmludGYgXCIlYVwiIChNb2RlbC5wcmludF90b2tlbiB+ZW52KSBpLCB4KVxuICAgICAgICAgIHN0YXRlLmltcC50b2tlbnM7XG4gICAgfVxuXG4gIGxldCBwaWNrX2FuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIGVudiBzdGF0ZSA9XG4gICAgbGV0IGNob2ljZSA9IHBpY2tfcnVsZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlIHN0YXRlIGluXG4gICAgbGV0IHJ1bGVfaWQgPSBjaG9pY2UgLyAyIGluXG4gICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgIGxldCBkb21haW4gPSBNb2RlbC5kb21haW4gZW52IGluXG4gICAgKCBjaG9pY2UgbW9kIDIgPSAxLFxuICAgICAgcnVsZV9pZCxcbiAgICAgIGlmIGNob2ljZSBtb2QgMiA9IDEgdGhlblxuICAgICAgICBwaWNrX2FfdW5hcnlfcnVsZV9pbnN0YW5jZSB+ZGVidWdfbW9kZSBzdGF0ZSBzdGF0ZS5pbXAucmFuZG9tX3N0YXRlXG4gICAgICAgICAgZG9tYWluIHN0YXRlLmVkZ2VzIH5ydWxlX2lkIHJ1bGVcbiAgICAgIGVsc2VcbiAgICAgICAgcGlja19hX3J1bGVfaW5zdGFuY2UgfmRlYnVnX21vZGUgc3RhdGUgc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZSBkb21haW5cbiAgICAgICAgICBzdGF0ZS5lZGdlcyB+cnVsZV9pZCBydWxlIClcblxuICBsZXQgaXNfY29ycmVjdF9pbnN0YW5jZSBlbnYgZ3JhcGggKGlzX3VuYXJ5LCBydWxlX2lkLCBpbnN0YW5jZSkgPVxuICAgIG1hdGNoIGluc3RhbmNlIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSAoX2luaiwgaW52X3Jvb3RzLCBwYXRoKSAtPlxuICAgICAgbGV0IHJ1bGUgPSBNb2RlbC5nZXRfcnVsZSBlbnYgcnVsZV9pZCBpblxuICAgICAgbGV0IHBhdHMgPSBydWxlLlByaW1pdGl2ZXMuY29ubmVjdGVkX2NvbXBvbmVudHMgaW5cbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdDJpXG4gICAgICAgIChmdW4gXyBiIGNjIHIgLT4gYiAmJiBJbnN0YW5jZXMuaXNfdmFsaWQgZ3JhcGguaW1wLmluc3RhbmNlcyBjYyByKVxuICAgICAgICB0cnVlIHBhdHNcbiAgICAgICAgKFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IGludl9yb290cylcbiAgICAgICYmICgobm90IGlzX3VuYXJ5KVxuICAgICAgICAgfHxcbiAgICAgICAgIG1hdGNoIHBhdGggd2l0aFxuICAgICAgICAgfCBTb21lIHAgLT4gRWRnZXMuaXNfdmFsaWRfcGF0aCBwIGdyYXBoLmVkZ2VzXG4gICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgKG1hdGNoIGludl9yb290cyB3aXRoXG4gICAgICAgICAgIHwgWyB4OyB5IF0gLT4gRWRnZXMuaW5fc2FtZV9jb25uZWN0ZWRfY29tcG9uZW50IHggeSBncmFwaC5lZGdlc1xuICAgICAgICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKSlcblxuICBsZXQgYXBwbHlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgP21heENvbnNlY3V0aXZlQmxvY2tlZFxuICAgICAgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXIgZ3JhcGggKGlzX3VuYXJ5LCBydWxlX2lkLCBpbnN0YW5jZSkgPVxuICAgIGxldCBjYXVzZSA9IFRyYWNlLlJVTEUgcnVsZV9pZCBpblxuICAgIGxldCBydWxlID0gTW9kZWwuZ2V0X3J1bGUgZW52IHJ1bGVfaWQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgIEZvcm1hdC5wcmludGYgXCJAWzx2PkBbQXBwbGllZEAgJXQlaTpAXUAgQFslYUBdQF1ALlwiXG4gICAgICAgICAgKGZ1biBmIC0+IGlmIGlzX3VuYXJ5IHRoZW4gRm9ybWF0LmZwcmludGYgZiBcInVuYXJ5QCBcIilcbiAgICAgICAgICBydWxlX2lkXG4gICAgICAgICAgKEthcHBhX3ByaW50ZXIuZGVjb21waWxlZF9ydWxlIH5ub0NvdW50ZXJzOnRydWUgfmZ1bGw6dHJ1ZSBlbnYpXG4gICAgICAgICAgcnVsZVxuICAgICAgKCpSdWxlX2ludGVycHJldGVyLnByaW50X2Rpc3QgZW52IGdyYXBoIHJ1bGVfaWQqKVxuICAgIGluXG4gICAgbGV0IGFwcGx5X2dpdmVuID1cbiAgICAgIGlmIGlzX3VuYXJ5IHRoZW5cbiAgICAgICAgYXBwbHlfZ2l2ZW5fdW5hcnlfaW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfnJ1bGVfaWRcbiAgICAgIGVsc2VcbiAgICAgICAgYXBwbHlfZ2l2ZW5faW5zdGFuY2UgfmRlYnVnX21vZGUgfm91dHB1dHMgfnJ1bGVfaWRcbiAgICBpblxuICAgIG1hdGNoIGFwcGx5X2dpdmVuIGVudiBjb3VudGVyIGdyYXBoIGNhdXNlIHJ1bGUgaW5zdGFuY2Ugd2l0aFxuICAgIHwgU3VjY2VzcyBncmFwaCcgLT5cbiAgICAgIGxldCBmaW5hbF9zdGVwID0gbm90IChDb3VudGVyLm9uZV9jb25zdHJ1Y3RpdmVfZXZlbnQgfnJ1bGVfaWQgY291bnRlcikgaW5cbiAgICAgIFNvbWUgcnVsZS5QcmltaXRpdmVzLnN5bnRhY3RpY19ydWxlLCBmaW5hbF9zdGVwLCBncmFwaCdcbiAgICB8IChDbGFzaCB8IENvcnJlY3RlZCB8IEJsb2NrZWQpIGFzIG91dCAtPlxuICAgICAgbGV0IGNvbnRpbnVlID1cbiAgICAgICAgaWYgb3V0ID0gQ2xhc2ggdGhlblxuICAgICAgICAgIENvdW50ZXIub25lX2NsYXNoaW5nX2luc3RhbmNlX2V2ZW50IH5ydWxlX2lkIGNvdW50ZXJcbiAgICAgICAgZWxzZSBpZiBvdXQgPSBCbG9ja2VkIHRoZW5cbiAgICAgICAgICBDb3VudGVyLm9uZV9ibG9ja2VkX2V2ZW50IGNvdW50ZXJcbiAgICAgICAgZWxzZSBpZiBpc191bmFyeSB0aGVuXG4gICAgICAgICAgQ291bnRlci5vbmVfbm9fbW9yZV91bmFyeV9ldmVudCB+cnVsZV9pZCBjb3VudGVyXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBDb3VudGVyLm9uZV9ub19tb3JlX2JpbmFyeV9ldmVudCB+cnVsZV9pZCBjb3VudGVyXG4gICAgICBpblxuICAgICAgaWZcbiAgICAgICAgQ291bnRlci5jb25zZWN1dGl2ZV9udWxsX2V2ZW50IH5ydWxlX2lkIGNvdW50ZXIgPCBtYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICAgICYmXG4gICAgICAgIG1hdGNoIG1heENvbnNlY3V0aXZlQmxvY2tlZCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgIHwgU29tZSBuIC0+IENvdW50ZXIuY29uc2VjdXRpdmVfYmxvY2tlZCBjb3VudGVyIDwgblxuICAgICAgdGhlblxuICAgICAgICBOb25lLCBub3QgY29udGludWUsIGdyYXBoXG4gICAgICBlbHNlXG4gICAgICAgICggTm9uZSxcbiAgICAgICAgICBub3QgY29udGludWUsXG4gICAgICAgICAgaWYgaXNfdW5hcnkgdGhlblxuICAgICAgICAgICAgYWRqdXN0X3VuYXJ5X3J1bGVfaW5zdGFuY2VzIH5kZWJ1Z19tb2RlIH5ydWxlX2lkIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgIHJ1bGVcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBhZGp1c3RfcnVsZV9pbnN0YW5jZXMgfmRlYnVnX21vZGUgfnJ1bGVfaWQgZW52IGNvdW50ZXIgZ3JhcGggcnVsZSApXG5cbiAgbGV0IGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHRwYXR0ZXJuID1cbiAgICBsZXQgKCkgPSBzdGF0ZS5vdXRkYXRlZCA8LSB0cnVlIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgKGZ1biBwYXR0ZXJuIC0+XG4gICAgICAgICAgbGV0IGFjYyA9IFBhdHRlcm4uT2JzTWFwLmdldCB0cGF0dGVybiBwYXR0ZXJuIGluXG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHRwYXR0ZXJuIHBhdHRlcm4gKChuYW1lLCBwYXR0ZXJucywgdGVzdHMpIDo6IGFjYykpXG4gICAgICAgIHBhdHRlcm5zXG4gICAgaW5cbiAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9XG5cbiAgbGV0IGFkZF90cmFja2VkIH5vdXRwdXRzIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIG1hdGNoIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnkgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgb3V0cHV0c1xuICAgICAgICAgIChEYXRhLldhcm5pbmdcbiAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICAgXCJPYnNlcnZhYmxlICVzIHNob3VsZCBiZSB0cmFja2VkIGJ1dCB0aGUgdHJhY2UgaXMgbm90IHN0b3JlZFwiXG4gICAgICAgICAgICAgICAgICAgbmFtZSApKVxuICAgICAgaW5cbiAgICAgIHN0YXRlXG4gICAgfCBTb21lIHRwYXR0ZXJuIC0+IGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHRwYXR0ZXJuXG5cbiAgbGV0IHJlbW92ZV90cmFja2VkIHBhdHRlcm5zIG5hbWUgc3RhdGUgPVxuICAgIGxldCAoKSA9IGFzc2VydCAobm90IHN0YXRlLm91dGRhdGVkKSBpblxuICAgIG1hdGNoIHN0YXRlLmltcC5zdG9yeV9tYWNoaW5lcnkgd2l0aFxuICAgIHwgTm9uZSAtPiBzdGF0ZVxuICAgIHwgU29tZSB0cGF0dGVybiAtPlxuICAgICAgKG1hdGNoIG5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCAoKSA9IHN0YXRlLm91dGRhdGVkIDwtIHRydWUgaW5cbiAgICAgICAgbGV0IHRlc3RlciAoXywgZWwsIF8pID1cbiAgICAgICAgICBub3RcbiAgICAgICAgICBAQCBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgICAgICAoZnVuIGkgYiB4IC0+IGIgJiYgUGF0dGVybi5pc19lcXVhbF9jYW5vbmljYWxzIHggZWwuKGkpKVxuICAgICAgICAgICAgICAgdHJ1ZSBwYXR0ZXJuc1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEFycmF5Lml0ZXJcbiAgICAgICAgICAgIChmdW4gcGF0dGVybiAtPlxuICAgICAgICAgICAgICBsZXQgYWNjID0gUGF0dGVybi5PYnNNYXAuZ2V0IHRwYXR0ZXJuIHBhdHRlcm4gaW5cbiAgICAgICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHRwYXR0ZXJuIHBhdHRlcm4gKExpc3QuZmlsdGVyIHRlc3RlciBhY2MpKVxuICAgICAgICAgICAgcGF0dGVybnNcbiAgICAgICAgaW5cbiAgICAgICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfVxuICAgICAgfCBTb21lIG5hbWUgLT5cbiAgICAgICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgICAgICBsZXQgdGVzdGVyIChuLCBfLCBfKSA9IG5vdCAoU3RyaW5nLmNvbXBhcmUgbmFtZSBuID0gMCkgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgICAgICAgKGZ1biBjY19pZCBwbGlzdCAtPlxuICAgICAgICAgICAgICBQYXR0ZXJuLk9ic01hcC5zZXQgdHBhdHRlcm4gY2NfaWQgKExpc3QuZmlsdGVyIHRlc3RlciBwbGlzdCkpXG4gICAgICAgICAgICB0cGF0dGVyblxuICAgICAgICBpblxuICAgICAgICB7IHN0YXRlIHdpdGggb3V0ZGF0ZWQgPSBmYWxzZSB9KVxuXG4gIGxldCBhZGRfdHJhY2tlZF9zcGVjaWVzIHBhdHRlcm5zIG5hbWUgdGVzdHMgc3RhdGUgPVxuICAgIGF1eF9hZGRfdHJhY2tlZCBwYXR0ZXJucyBuYW1lIHRlc3RzIHN0YXRlIHN0YXRlLmltcC5zcGVjaWVzXG5cbiAgbGV0IHJlbW92ZV90cmFja2VkX3NwZWNpZXMgbmFtZSBzdGF0ZSA9XG4gICAgbGV0ICgpID0gc3RhdGUub3V0ZGF0ZWQgPC0gdHJ1ZSBpblxuICAgIGxldCB0ZXN0ZXIgKG4sIF8sIF8pID0gbm90IChTdHJpbmcuY29tcGFyZSBuYW1lIG4gPSAwKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBQYXR0ZXJuLk9ic01hcC5pdGVyaVxuICAgICAgICAoZnVuIGNjX2lkIHBsaXN0IC0+XG4gICAgICAgICAgUGF0dGVybi5PYnNNYXAuc2V0IHN0YXRlLmltcC5zcGVjaWVzIGNjX2lkIChMaXN0LmZpbHRlciB0ZXN0ZXIgcGxpc3QpKVxuICAgICAgICBzdGF0ZS5pbXAuc3BlY2llc1xuICAgIGluXG4gICAgeyBzdGF0ZSB3aXRoIG91dGRhdGVkID0gZmFsc2UgfVxuXG4gIGxldCBnZXRfcmFuZG9tX3N0YXRlIHN0YXRlID0gc3RhdGUuaW1wLnJhbmRvbV9zdGF0ZVxuXG4gIGxldCBzZW5kX2luc3RhbmNlc19tZXNzYWdlIG1zZyBzdGF0ZSA9XG4gICAge1xuICAgICAgc3RhdGUgd2l0aFxuICAgICAgaW1wID1cbiAgICAgICAge1xuICAgICAgICAgIHN0YXRlLmltcCB3aXRoXG4gICAgICAgICAgaW5zdGFuY2VzID0gSW5zdGFuY2VzLnJlY2VpdmVfbWVzc2FnZSBtc2cgc3RhdGUuaW1wLmluc3RhbmNlcztcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgbGV0IGFkZF9vdXRkYXRlZF9kZXBlbmRlbmNpZXMgbmV3X2RlcHMgc3RhdGUgPVxuICAgIGxldCBvdXRkYXRlZF9lbGVtZW50cyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQudW5pb24gbmV3X2RlcHMgc3RhdGUub3V0ZGF0ZWRfZWxlbWVudHNcbiAgICBpblxuICAgIHsgc3RhdGUgd2l0aCBvdXRkYXRlZF9lbGVtZW50cyB9XG5cbiAgbGV0IGRlYnVnX3ByaW50X2luc3RhbmNlcyBmIHN0ID0gSW5zdGFuY2VzLmRlYnVnX3ByaW50IGYgc3QuaW1wLmluc3RhbmNlc1xuZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIGluaXRfc3RvcHBpbmdfdGltZXM6IChOYnIudCAqIGludCkgbGlzdDtcbiAgbXV0YWJsZSBzdG9wcGluZ190aW1lczogKE5ici50ICogaW50KSBsaXN0O1xuICBwZXJ0dXJiYXRpb25zX2FsaXZlOiBib29sIGFycmF5O1xuICB0aW1lX2RlcGVuZGVudF9wZXJ0czogaW50IGxpc3Q7XG4gIG11dGFibGUgZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zOiBpbnQgbGlzdDtcbiAgcGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQ6IGJvb2wgYXJyYXk7XG4gICgqIGludGVybmFsIGFycmF5IGZvciBwZXJ0dXJiYXRlIGZ1bmN0aW9uIChnbG9iYWwgdG8gYXZvaWQgdXNlbGVzcyBhbGxvYykgKilcbiAgbXV0YWJsZSBmbHV4OiAoc3RyaW5nICogRGF0YS5kaW5fZGF0YSkgbGlzdDtcbiAgd2l0aF9kZWx0YV9hY3Rpdml0aWVzOiBib29sO1xufVxuXG5sZXQgY29tcGFyZV9zdG9wcyAodDEsIHAxKSAodDIsIHAyKSA9XG4gIGxldCB0ID0gTmJyLmNvbXBhcmUgdDEgdDIgaW5cbiAgaWYgdCA9IDAgdGhlblxuICAgIGNvbXBhcmUgcDEgcDJcbiAgZWxzZVxuICAgIHRcblxubGV0IGVtcHR5IH53aXRoX2RlbHRhX2FjdGl2aXRpZXMgY291bnRlciBlbnYgPVxuICBsZXQgdDAgPSBDb3VudGVyLmluaXRfdGltZSBjb3VudGVyIGluXG4gIGxldCBzdG9wcGluZ190aW1lcyA9XG4gICAgbGV0IGFsZ3NfZGVwcyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgTW9kZWwuZm9sZF9wZXJ0dXJiYXRpb25zXG4gICAgICAoZnVuIGkgYWNjIHggLT5cbiAgICAgICAgbWF0Y2ggeC5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICBsZXQgayA9IDEuICsuIGZsb29yICh0MCAvLiBPcHRpb25fdXRpbC51bnNvbWUgMC4gKE5ici50b19mbG9hdCBuKSkgaW5cbiAgICAgICAgICAoTmJyLm11bHQgKE5ici5GIGspIG4sIGkpIDo6IGFjY1xuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIGFsZ3NfZGVwc1xuICAgICAgICAgICAgICAgIChmc3QgeC5QcmltaXRpdmVzLnByZWNvbmRpdGlvbilcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICggXCJFcXVhbGl0eSB0ZXN0IG9uIHRpbWUgcmVxdWlyZXMgYW4gYWxhcm1cIixcbiAgICAgICAgICAgICAgICAgICAgIHNuZCB4LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIGFsZ3NfZGVwcyAoZnN0IHguUHJpbWl0aXZlcy5yZXBlYXQpXG4gICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoIFwiRXF1YWxpdHkgdGVzdCBvbiB0aW1lIHJlcXVpcmVzIGFuIGFsYXJtXCIsXG4gICAgICAgICAgICAgICAgICAgICBzbmQgeC5QcmltaXRpdmVzLnJlcGVhdCApKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWNjKVxuICAgICAgW10gZW52XG4gIGluXG4gIGxldCBzdG9wcyA9IExpc3Quc29ydCBjb21wYXJlX3N0b3BzIHN0b3BwaW5nX3RpbWVzIGluXG4gIGxldCB0aW1lX2RlcGVuZGVudF9wZXJ0cyA9XG4gICAgbGV0IHJlYyBhdXggZGVwIGFjYyA9XG4gICAgICBPcGVyYXRvci5EZXBTZXQuZm9sZFxuICAgICAgICAoZnVuIGRlcCBwZXJ0cyAtPlxuICAgICAgICAgIG1hdGNoIGRlcCB3aXRoXG4gICAgICAgICAgfCBPcGVyYXRvci5BTEcgaiAtPlxuICAgICAgICAgICAgYXV4IChNb2RlbC5nZXRfYWxnX3JldmVyc2VfZGVwZW5kZW5jaWVzIGVudiBqKSBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuTU9ESUYgcCAtPlxuICAgICAgICAgICAgTGlzdF91dGlsLm1lcmdlX3VuaXEgTW9kcy5pbnRfY29tcGFyZSBbIHAgXSBwZXJ0c1xuICAgICAgICAgIHwgT3BlcmF0b3IuUlVMRSBfIC0+IHBlcnRzKVxuICAgICAgICBkZXAgYWNjXG4gICAgaW5cbiAgICBhdXhcbiAgICAgIChsZXQgeCwgXywgXywgXyA9IE1vZGVsLmFsbF9kZXBlbmRlbmNpZXMgZW52IGluXG4gICAgICAgeClcbiAgICAgIFtdXG4gIGluXG4gIHtcbiAgICBpbml0X3N0b3BwaW5nX3RpbWVzID0gc3RvcHM7XG4gICAgc3RvcHBpbmdfdGltZXMgPSBzdG9wcztcbiAgICBwZXJ0dXJiYXRpb25zX2FsaXZlID0gQXJyYXkubWFrZSAoTW9kZWwubmJfcGVydHVyYmF0aW9ucyBlbnYpIHRydWU7XG4gICAgZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zID0gW107XG4gICAgdGltZV9kZXBlbmRlbnRfcGVydHM7XG4gICAgcGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQgPSBBcnJheS5tYWtlIChNb2RlbC5uYl9wZXJ0dXJiYXRpb25zIGVudikgdHJ1ZTtcbiAgICBmbHV4ID0gW107XG4gICAgd2l0aF9kZWx0YV9hY3Rpdml0aWVzO1xuICB9XG5cbmxldCBvYnNlcnZhYmxlc192YWx1ZXMgZW52IGdyYXBoIGNvdW50ZXIgPVxuICBNb2RlbC5tYXBfb2JzZXJ2YWJsZXMgKFJ1bGVfaW50ZXJwcmV0ZXIudmFsdWVfYWxnIGNvdW50ZXIgZ3JhcGgpIGVudlxuXG5sZXQgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgbW9kaWZpY2F0aW9uID1cbiAgbGV0IHByaW50X2V4cHJfdmFsID1cbiAgICBLYXBwYV9wcmludGVyLnByaW50X2V4cHJfdmFsIChSdWxlX2ludGVycHJldGVyLnZhbHVlX2FsZyBjb3VudGVyIGdyYXBoKVxuICBpblxuICBtYXRjaCBtb2RpZmljYXRpb24gd2l0aFxuICB8IFByaW1pdGl2ZXMuSVRFUl9SVUxFICgodiwgXyksIHIpIC0+XG4gICAgbGV0IHRleHQgPVxuICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCJcbiAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmRlYnVnX21vZGUgfmVudilcbiAgICAgICAgbW9kaWZpY2F0aW9uXG4gICAgaW5cbiAgICBsZXQgZ3JhcGgnID1cbiAgICAgIE5ici5tYXliZV9pdGVyaVxuICAgICAgICAoZnVuIF8gZyAtPlxuICAgICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuZm9yY2VfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBnXG4gICAgICAgICAgICAoVHJhY2UuUEVSVCB0ZXh0KSByKVxuICAgICAgICBncmFwaFxuICAgICAgICAoUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBncmFwaCB2KVxuICAgIGluXG4gICAgbGV0IGdyYXBoJycsIGV4dHJhJyA9XG4gICAgICBSdWxlX2ludGVycHJldGVyLnVwZGF0ZV9vdXRkYXRlZF9hY3Rpdml0aWVzIH5kZWJ1Z19tb2RlXG4gICAgICAgIChmdW4gXyBfIF8gLT4gKCkpXG4gICAgICAgIGVudiBjb3VudGVyIGdyYXBoJyBleHRyYVxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoJycsIHN0YXRlLCBleHRyYSdcbiAgfCBQcmltaXRpdmVzLlVQREFURSAoaSwgKGV4cHIsIF8pKSAtPlxuICAgIGxldCBncmFwaCcgPSBSdWxlX2ludGVycHJldGVyLm92ZXJ3cml0ZV92YXIgaSBjb3VudGVyIGdyYXBoIGV4cHIgaW5cbiAgICBsZXQgZ3JhcGgnJywgZXh0cmEnID1cbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgKGZ1biBfIF8gXyAtPiAoKSlcbiAgICAgICAgZW52IGNvdW50ZXIgZ3JhcGgnIGV4dHJhXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgnJywgc3RhdGUsIGV4dHJhJ1xuICB8IFByaW1pdGl2ZXMuU1RPUCBwZXhwciAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZiBwZXhwciA8PiBbXSB0aGVuIChcbiAgICAgICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBwZXhwciBpblxuICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgKERhdGEuU25hcHNob3RcbiAgICAgICAgICAgICAoIGZpbGUsXG4gICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLnNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXc6ZmFsc2UgZW52IGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgZ3JhcGggKSlcbiAgICAgIClcbiAgICBpblxuICAgIHRydWUsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlBSSU5UIChwZV9maWxlLCBwZV9leHByKSAtPlxuICAgIGxldCBmaWxlX29wdCA9XG4gICAgICBtYXRjaCBwZV9maWxlIHdpdGhcbiAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgfCBfIC0+IFNvbWUgKEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBlX2ZpbGUpXG4gICAgaW5cbiAgICBsZXQgbGluZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIHBlX2V4cHIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgb3V0cHV0c1xuICAgICAgICAoRGF0YS5QcmludFxuICAgICAgICAgICB7IERhdGEuZmlsZV9saW5lX25hbWUgPSBmaWxlX29wdDsgRGF0YS5maWxlX2xpbmVfdGV4dCA9IGxpbmUgfSlcbiAgICBpblxuICAgIGZhbHNlLCBncmFwaCwgc3RhdGUsIGV4dHJhXG4gIHwgUHJpbWl0aXZlcy5QTE9URU5UUlkgLT5cbiAgICBsZXQgKCkgPSBvdXRwdXRzIChEYXRhLlBsb3QgKG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggY291bnRlcikpIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLlNOQVBTSE9UIChyYXcsIHBleHByKSAtPlxuICAgIGxldCBmaWxlID1cbiAgICAgIGlmIHBleHByID0gW10gdGhlblxuICAgICAgICBcInNuYXAua2FcIlxuICAgICAgZWxzZVxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBwZXhwclxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIG91dHB1dHNcbiAgICAgICAgKERhdGEuU25hcHNob3RcbiAgICAgICAgICAgKGZpbGUsIFJ1bGVfaW50ZXJwcmV0ZXIuc25hcHNob3QgfmRlYnVnX21vZGUgfnJhdyBlbnYgY291bnRlciBncmFwaCkpXG4gICAgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuQ0ZMT1cgKG5hbWUsIGNjLCB0ZXN0cykgLT5cbiAgICBsZXQgbmFtZSA9XG4gICAgICBtYXRjaCBuYW1lIHdpdGhcbiAgICAgIHwgU29tZSBzIC0+IHNcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgZG9tYWluID0gTW9kZWwuZG9tYWluIGVudiBpblxuICAgICAgICBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIlxuICAgICAgICAgIChQcC5hcnJheSBQcC5jb21tYSAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgIFBhdHRlcm4ucHJpbnQgfm5vQ291bnRlcnM6ZGVidWdfbW9kZSB+ZG9tYWluIH53aXRoX2lkOmZhbHNlKSlcbiAgICAgICAgICBjY1xuICAgIGluXG4gICAgKCBmYWxzZSxcbiAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIuYWRkX3RyYWNrZWQgfm91dHB1dHMgY2MgbmFtZSB0ZXN0cyBncmFwaCxcbiAgICAgIHN0YXRlLFxuICAgICAgZXh0cmEgKVxuICB8IFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKG5hbWUsIGNjKSAtPlxuICAgIGZhbHNlLCBSdWxlX2ludGVycHJldGVyLnJlbW92ZV90cmFja2VkIGNjIG5hbWUgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgZm4gLT5cbiAgICBsZXQgZmlsZSA9IEZvcm1hdC5hc3ByaW50ZiBcIkBbPGg+JWFAXVwiIHByaW50X2V4cHJfdmFsIGZuIGluXG4gICAgZmFsc2UsIFJ1bGVfaW50ZXJwcmV0ZXIucmVtb3ZlX3RyYWNrZWRfc3BlY2llcyBmaWxlIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLkRJTiAocmVsLCBzKSAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcyBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKG5hbWUsIHgpIC0+IGZpbGUgPSBuYW1lICYmIHguRGF0YS5kaW5fa2luZCA9IHJlbClcbiAgICAgICAgICBzdGF0ZS5mbHV4XG4gICAgICB0aGVuXG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgIFwiQXQgdD0lZiwgZT0laTogdHJhY2tpbmcgRElOIGludG8gXFxcIiVzXFxcIiB3YXMgYWxyZWFkeSBvblwiXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIuY3VycmVudF9ldmVudCBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgIGZpbGUgKSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBzdGF0ZS5mbHV4IDwtIChmaWxlLCBGbHV4bWFwLmNyZWF0ZV9mbHV4IGVudiBjb3VudGVyIHJlbCkgOjogc3RhdGUuZmx1eFxuICAgIGluXG4gICAgZmFsc2UsIGdyYXBoLCBzdGF0ZSwgZXh0cmFcbiAgfCBQcmltaXRpdmVzLkRJTk9GRiBzIC0+XG4gICAgbGV0IGZpbGUgPSBGb3JtYXQuYXNwcmludGYgXCJAWzxoPiVhQF1cIiBwcmludF9leHByX3ZhbCBzIGluXG4gICAgbGV0IHRoZXNlLCBvdGhlcnMgPVxuICAgICAgTGlzdC5wYXJ0aXRpb24gKGZ1biAobmFtZSwgXykgLT4gbmFtZSA9IGZpbGUpIHN0YXRlLmZsdXhcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKGZ1biAobmFtZSwgeCkgLT5cbiAgICAgICAgICBvdXRwdXRzIChEYXRhLkRJTiAobmFtZSwgRmx1eG1hcC5zdG9wX2ZsdXggZW52IGNvdW50ZXIgeCkpKVxuICAgICAgICB0aGVzZVxuICAgIGluXG4gICAgbGV0ICgpID0gc3RhdGUuZmx1eCA8LSBvdGhlcnMgaW5cbiAgICBmYWxzZSwgZ3JhcGgsIHN0YXRlLCBleHRyYVxuICB8IFByaW1pdGl2ZXMuU1BFQ0lFUyAocywgY2MsIHRlc3RzKSAtPlxuICAgIGxldCBmaWxlID0gRm9ybWF0LmFzcHJpbnRmIFwiQFs8aD4lYUBdXCIgcHJpbnRfZXhwcl92YWwgcyBpblxuICAgICggZmFsc2UsXG4gICAgICBSdWxlX2ludGVycHJldGVyLmFkZF90cmFja2VkX3NwZWNpZXMgY2MgZmlsZSB0ZXN0cyBncmFwaCxcbiAgICAgIHN0YXRlLFxuICAgICAgZXh0cmEgKVxuXG5sZXQgcmVjIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgbWl4X2NoYW5nZWQgPSBmdW5jdGlvblxuICB8IFtdIC0+IGZhbHNlLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkXG4gIHwgaSA6OiB0YWlsIC0+XG4gICAgbGV0IHBlcnQgPSBNb2RlbC5nZXRfcGVydHVyYmF0aW9uIGVudiBpIGluXG4gICAgbGV0IG1vZF9hbGFybSA9XG4gICAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgfCBOb25lIC0+IHRydWVcbiAgICAgIHwgU29tZSBfIC0+IGlzX2FsYXJtXG4gICAgaW5cbiAgICBpZlxuICAgICAgc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4oaSlcbiAgICAgICYmIHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKVxuICAgICAgJiYgUnVsZV9pbnRlcnByZXRlci52YWx1ZV9ib29sIGNvdW50ZXIgZ3JhcGhcbiAgICAgICAgICAgKGZzdCBwZXJ0LlByaW1pdGl2ZXMucHJlY29uZGl0aW9uKVxuICAgICAgJiYgbW9kX2FsYXJtXG4gICAgdGhlbiAoXG4gICAgICBsZXQgbWl4X2NoYW5nZWQgPSBtaXhfY2hhbmdlZCAmJiBwZXJ0LlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgsIHN0YXRlLCB0YWlsJyA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEpIGFzIGFjYykgZWZmZWN0IC0+XG4gICAgICAgICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGRvX21vZGlmaWNhdGlvbiB+ZGVidWdfbW9kZSB+b3V0cHV0cyBlbnYgY291bnRlciBncmFwaCBzdGF0ZSBleHRyYVxuICAgICAgICAgICAgICAgIGVmZmVjdClcbiAgICAgICAgICAoZmFsc2UsIGdyYXBoLCBzdGF0ZSwgdGFpbClcbiAgICAgICAgICBwZXJ0LlByaW1pdGl2ZXMuZWZmZWN0XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc3RhdGUucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIGZhbHNlIGluXG4gICAgICBsZXQgYWxpdmUgPVxuICAgICAgICBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgY291bnRlciBncmFwaCAoZnN0IHBlcnQuUHJpbWl0aXZlcy5yZXBlYXQpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgYWxpdmUgJiYgcGVydC5QcmltaXRpdmVzLmFsYXJtID0gTm9uZSB0aGVuXG4gICAgICAgICAgc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIDwtIGkgOjogc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc3RhdGUucGVydHVyYmF0aW9uc19hbGl2ZS4oaSkgPC0gYWxpdmUgaW5cbiAgICAgIGxldCBtaXhfY2hhbmdlZCcgPSBtaXhfY2hhbmdlZCB8fCBwZXJ0LlByaW1pdGl2ZXMubmVlZHNfYmFja3RyYWNrIGluXG4gICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBtaXhfY2hhbmdlZCdcbiAgICAgIGVsc2VcbiAgICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgICAgICBtaXhfY2hhbmdlZCcgdGFpbCdcbiAgICApIGVsc2VcbiAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgIG1peF9jaGFuZ2VkIHRhaWxcblxubGV0IGRvX21vZGlmaWNhdGlvbnMgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgbGlzdCA9XG4gIGxldCBzdG9wLCBncmFwaCwgc3RhdGUsIGV4dHJhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZXh0cmEpIGFzIGFjYykgZWZmZWN0IC0+XG4gICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgIGFjY1xuICAgICAgICBlbHNlXG4gICAgICAgICAgZG9fbW9kaWZpY2F0aW9uIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlIGV4dHJhXG4gICAgICAgICAgICBlZmZlY3QpXG4gICAgICAoZmFsc2UsIGdyYXBoLCBzdGF0ZSwgW10pIGxpc3RcbiAgaW5cbiAgaWYgc3RvcCB0aGVuXG4gICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBmYWxzZVxuICBlbHNlXG4gICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06ZmFsc2UgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICAgIGZhbHNlIGV4dHJhXG5cbmxldCBpbml0aWFsaXplIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGgwIHN0YXRlMFxuICAgIGluaXRfbCA9XG4gIGxldCBtZ3JhcGggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIG1zdGF0ZSAoYWxnLCBjb21waWxlZF9ydWxlKSAtPlxuICAgICAgICBiaW5kIG1zdGF0ZSAoZnVuIChzdG9wLCBzdGF0ZSwgc3RhdGUwKSAtPlxuICAgICAgICAgICAgbGV0IHZhbHVlID0gUnVsZV9pbnRlcnByZXRlci52YWx1ZV9hbGcgY291bnRlciBzdGF0ZSBhbGcgaW5cbiAgICAgICAgICAgIGxldCBhY3Rpb25zID1cbiAgICAgICAgICAgICAgY29tcGlsZWRfcnVsZS5QcmltaXRpdmVzLmluc3RhbnRpYXRpb25zLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBjcmVhdGlvbnNfc29ydCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBsIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICh4LCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICBNYXRjaGluZy5BZ2VudC5nZXRfdHlwZSB4IDo6IGxcbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uQmluZCBfXG4gICAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5GcmVlIF9cbiAgICAgICAgICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgXyAtPlxuICAgICAgICAgICAgICAgICAgICBsKVxuICAgICAgICAgICAgICAgIFtdIGFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgKCBzdG9wLFxuICAgICAgICAgICAgICAgIE5ici5pdGVyaVxuICAgICAgICAgICAgICAgICAgKGZ1biBfIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLmFwcGx5X2dpdmVuX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52XG4gICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyIHMgKFRyYWNlLklOSVQgY3JlYXRpb25zX3NvcnQpIGNvbXBpbGVkX3J1bGVcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFJ1bGVfaW50ZXJwcmV0ZXIuU3VjY2VzcyBzIC0+IHNcbiAgICAgICAgICAgICAgICAgICAgfCBSdWxlX2ludGVycHJldGVyLkNsYXNoIHwgUnVsZV9pbnRlcnByZXRlci5Db3JyZWN0ZWRcbiAgICAgICAgICAgICAgICAgICAgfCBSdWxlX2ludGVycHJldGVyLkJsb2NrZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSBcIkJ1Z2dlZCBpbml0aWFsIHJ1bGVcIikpKVxuICAgICAgICAgICAgICAgICAgc3RhdGUgdmFsdWUsXG4gICAgICAgICAgICAgICAgc3RhdGUwICkpKVxuICAgICAgKHJldHVybiAoZmFsc2UsIGdyYXBoMCwgc3RhdGUwKSlcbiAgICAgIGluaXRfbFxuICBpblxuICBiaW5kIG1ncmFwaCAoZnVuIChfLCBncmFwaCwgc3RhdGUwKSAtPlxuICAgICAgbGV0IG1pZF9ncmFwaCwgXyA9XG4gICAgICAgIFJ1bGVfaW50ZXJwcmV0ZXIudXBkYXRlX291dGRhdGVkX2FjdGl2aXRpZXMgfmRlYnVnX21vZGVcbiAgICAgICAgICAoZnVuIF8gXyBfIC0+ICgpKVxuICAgICAgICAgIGVudiBjb3VudGVyIGdyYXBoIFtdXG4gICAgICBpblxuICAgICAgbGV0IHN0b3AsIGdyYXBoLCBzdGF0ZSwgXyA9XG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAoZnVuIGkgKChzdG9wLCBncmFwaCwgc3RhdGUsIG1peF9jaGFuZ2VkKSBhcyBhY2MpIF8gLT5cbiAgICAgICAgICAgIGlmIHN0b3AgdGhlblxuICAgICAgICAgICAgICBhY2NcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgcGVydHVyYmF0ZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+aXNfYWxhcm06dHJ1ZSBlbnYgY291bnRlciBncmFwaFxuICAgICAgICAgICAgICAgIHN0YXRlIG1peF9jaGFuZ2VkIFsgaSBdKVxuICAgICAgICAgIChmYWxzZSwgbWlkX2dyYXBoLCBzdGF0ZTAsIGZhbHNlKVxuICAgICAgICAgIHN0YXRlMC5wZXJ0dXJiYXRpb25zX2FsaXZlXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAoZnVuIGkgXyAtPiBzdGF0ZTAucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgICAgc3RhdGUwLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgICBpblxuICAgICAgcmV0dXJuIChzdG9wLCBncmFwaCwgc3RhdGUpKVxuXG5sZXQgb25lX3J1bGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXIgZ3JhcGggc3RhdGVcbiAgICBpbnN0YW5jZSA9XG4gIGxldCBwcmV2X2FjdGl2aXR5ID0gUnVsZV9pbnRlcnByZXRlci5hY3Rpdml0eSBncmFwaCBpblxuICBsZXQgYWN0X3N0YWNrID0gcmVmIFtdIGluXG4gIGxldCBmaW5hbGl6ZV9yZWdpc3RyYXRpb24gbXlfc3ludGF4X3JkX2lkID1cbiAgICBtYXRjaCBzdGF0ZS5mbHV4LCBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgd2l0aFxuICAgIHwgW10sIGZhbHNlIC0+ICgpXG4gICAgfCBsLCBfIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgdGhlblxuICAgICAgICAgIG91dHB1dHMgKERhdGEuRGVsdGFBY3Rpdml0aWVzIChteV9zeW50YXhfcmRfaWQsICFhY3Rfc3RhY2spKVxuICAgICAgaW5cbiAgICAgIGxldCBuX2FjdGl2aXR5ID0gUnVsZV9pbnRlcnByZXRlci5hY3Rpdml0eSBncmFwaCBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoXywgZmwpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBGbHV4bWFwLmluY3JfZmx1eF9oaXQgbXlfc3ludGF4X3JkX2lkIGZsIGluXG4gICAgICAgICAgICBtYXRjaCBmbC5EYXRhLmRpbl9raW5kIHdpdGhcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgLT4gKClcbiAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPlxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoZnVuIChzeW50YXhfcmRfaWQsIChfLCBuZXdfYWN0KSkgLT5cbiAgICAgICAgICAgICAgICAgIEZsdXhtYXAuaW5jcl9mbHV4X2ZsdXggbXlfc3ludGF4X3JkX2lkIHN5bnRheF9yZF9pZFxuICAgICAgICAgICAgICAgICAgICAobGV0IGNhbmQgPSBuZXdfYWN0IC8uIG5fYWN0aXZpdHkgaW5cbiAgICAgICAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IGNhbmQgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBGUF9uYW4gfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBpbmZpbml0ZSAob3IgTmFOKSBhY3Rpdml0eSB2YXJpYXRpb24gXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYmVlbiBpZ25vcmVkIGF0IHQ9JWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3QgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgMC5cbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBjYW5kKVxuICAgICAgICAgICAgICAgICAgICBmbClcbiAgICAgICAgICAgICAgICAhYWN0X3N0YWNrKVxuICAgICAgICAgIGxcbiAgICAgIGluXG4gICAgICBhY3Rfc3RhY2sgOj0gW11cbiAgaW5cbiAgKCogbGV0ICgpID0gKilcbiAgKCogICBGb3JtYXQuZXByaW50ZiBcIiVhQC5cIiAoUnVsZV9pbnRlcnByZXRlci5wcmludF9pbmplY3Rpb25zIGVudikgZ3JhcGggaW4gKilcbiAgbGV0IGFwcGxpZWRfcmlkX3N5bnRheCwgZmluYWxfc3RlcCwgZ3JhcGgnID1cbiAgICBSdWxlX2ludGVycHJldGVyLmFwcGx5X2luc3RhbmNlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICBlbnYgY291bnRlciBncmFwaCBpbnN0YW5jZVxuICBpblxuICBtYXRjaCBhcHBsaWVkX3JpZF9zeW50YXggd2l0aFxuICB8IE5vbmUgLT4gZmluYWxfc3RlcCwgZ3JhcGgnLCBzdGF0ZVxuICB8IFNvbWUgc3ludGF4X3JpZCAtPlxuICAgIGxldCByZWdpc3Rlcl9uZXdfYWN0aXZpdHkgc3ludGF4X3JkX2lkIG9sZF9hY3QgbmV3X2FjdCA9XG4gICAgICBtYXRjaCBzdGF0ZS5mbHV4LCBzdGF0ZS53aXRoX2RlbHRhX2FjdGl2aXRpZXMgd2l0aFxuICAgICAgfCBbXSwgZmFsc2UgLT4gKClcbiAgICAgIHwgbCwgXyAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGFjdF9zdGFjayA6PSAoc3ludGF4X3JkX2lkLCAob2xkX2FjdCwgbmV3X2FjdCkpIDo6ICFhY3Rfc3RhY2tcbiAgICAgICAgaW5cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoXywgZmwpIC0+XG4gICAgICAgICAgICBGbHV4bWFwLmluY3JfZmx1eF9mbHV4IHN5bnRheF9yaWQgc3ludGF4X3JkX2lkXG4gICAgICAgICAgICAgIChsZXQgY2FuZCA9XG4gICAgICAgICAgICAgICAgIG1hdGNoIGZsLkRhdGEuZGluX2tpbmQgd2l0aFxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQUJTT0xVVEUgLT4gbmV3X2FjdCAtLiBvbGRfYWN0XG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5QUk9CQUJJTElUWSAtPiAtLihvbGRfYWN0IC8uIHByZXZfYWN0aXZpdHkpXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5SRUxBVElWRSAtPlxuICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBvbGRfYWN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25hbiB8IEZQX2luZmluaXRlIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgKG5ld19hY3QgLS4gb2xkX2FjdCkgLy4gb2xkX2FjdFxuICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgIG5ld19hY3QgLS4gb2xkX2FjdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIG1hdGNoIGNsYXNzaWZ5X2Zsb2F0IGNhbmQgd2l0aFxuICAgICAgICAgICAgICAgfCBGUF9uYW4gfCBGUF9pbmZpbml0ZSAtPlxuICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgIGxldCBjdCA9IENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIgaW5cbiAgICAgICAgICAgICAgICAgICBvdXRwdXRzXG4gICAgICAgICAgICAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICAoIE5vbmUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJBbiBpbmZpbml0ZSAob3IgTmFOKSBhY3Rpdml0eSB2YXJpYXRpb24gaGFzIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBpZ25vcmVkIGF0IHQ9JWZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3QgKSlcbiAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgMC5cbiAgICAgICAgICAgICAgIHwgRlBfemVybyB8IEZQX25vcm1hbCB8IEZQX3N1Ym5vcm1hbCAtPiBjYW5kKVxuICAgICAgICAgICAgICBmbClcbiAgICAgICAgICBsXG4gICAgaW5cbiAgICBsZXQgZm9yY2VfdGVzdGVkID0gc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIGluXG4gICAgbGV0ICgpID0gc3RhdGUuZm9yY2VfdGVzdF9wZXJ0dXJiYXRpb25zIDwtIFtdIGluXG4gICAgbGV0IGdyYXBoJycsIGV4dHJhX3BlcnQgPVxuICAgICAgUnVsZV9pbnRlcnByZXRlci51cGRhdGVfb3V0ZGF0ZWRfYWN0aXZpdGllcyB+ZGVidWdfbW9kZVxuICAgICAgICByZWdpc3Rlcl9uZXdfYWN0aXZpdHkgZW52IGNvdW50ZXIgZ3JhcGgnIGZvcmNlX3Rlc3RlZFxuICAgIGluXG4gICAgbGV0ICgpID0gZmluYWxpemVfcmVnaXN0cmF0aW9uIHN5bnRheF9yaWQgaW5cbiAgICBsZXQgc3RvcCwgZ3JhcGgnJycsIHN0YXRlJywgX21peF9jaGFuZ2VkID1cbiAgICAgIHBlcnR1cmJhdGUgfmRlYnVnX21vZGUgfm91dHB1dHMgfmlzX2FsYXJtOmZhbHNlIGVudiBjb3VudGVyIGdyYXBoJycgc3RhdGVcbiAgICAgICAgZmFsc2UgZXh0cmFfcGVydFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSBfIC0+IHN0YXRlLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0LihpKSA8LSB0cnVlKVxuICAgICAgICBzdGF0ZS5wZXJ0dXJiYXRpb25zX25vdF9kb25lX3lldFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQFs8dj5PYnRhaW5lZEAgJWFAXUAuXCJcbiAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5wcmludCBlbnYpXG4gICAgICAgICAgZ3JhcGgnJydcbiAgICBpblxuICAgIGZpbmFsX3N0ZXAgfHwgc3RvcCwgZ3JhcGgnJycsIHN0YXRlJ1xuXG5sZXQgcmVjIHBlcnR1cmJhdGVfdW50aWxfZmlyc3RfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIGVudiBjb3VudGVyIH5vdXRwdXRzXG4gICAgKHN0b3AsIGdyYXBoLCBzdGF0ZSwgZHQpID1cbiAgbWF0Y2ggc3RhdGUuc3RvcHBpbmdfdGltZXMgd2l0aFxuICB8IFtdIC0+IHN0b3AsIGdyYXBoLCBzdGF0ZSwgZHQsIGZhbHNlXG4gIHwgKHRpLCBwZSkgOjogdGFpbCAtPlxuICAgIGlmIE5ici5pc19zbWFsbGVyIHRpIChOYnIuRiAoQ291bnRlci5jdXJyZW50X3RpbWUgY291bnRlciArLiBkdCkpIHRoZW4gKFxuICAgICAgbGV0IHBlcnQgPSBNb2RlbC5nZXRfcGVydHVyYmF0aW9uIGVudiBwZSBpblxuICAgICAgaWYgbm90IHBlcnQuUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2sgdGhlbiAoXG4gICAgICAgIGxldCBzdG9wJywgZ3JhcGgnLCBzdGF0ZScsIGR0JyA9XG4gICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgIE5ici50b19mbG9hdCAoTmJyLnN1YiB0aSAoTmJyLkYgKENvdW50ZXIuY3VycmVudF90aW1lIGNvdW50ZXIpKSlcbiAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGZhbHNlLCBncmFwaCwgc3RhdGUsIGR0XG4gICAgICAgICAgfCBTb21lIGR0aSAtPlxuICAgICAgICAgICAgbGV0IGR0JyA9IGR0IC0uIGR0aSBpblxuICAgICAgICAgICAgKCpzZXQgdGltZSBmb3IgcGVydHVyYmF0ZSAqKVxuICAgICAgICAgICAgaWYgQ291bnRlci5vbmVfdGltZV9hZHZhbmNlIGNvdW50ZXIgZHRpIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBfID1cbiAgICAgICAgICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoXG4gICAgICAgICAgICAgICAgICBzdGF0ZSBmYWxzZSBbIHBlIF1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRhaWwnID1cbiAgICAgICAgICAgICAgICBtYXRjaCBwZXJ0LlByaW1pdGl2ZXMuYWxhcm0gd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0YWlsXG4gICAgICAgICAgICAgICAgfCBTb21lIG4gLT5cbiAgICAgICAgICAgICAgICAgIGlmIHN0YXRlLnBlcnR1cmJhdGlvbnNfYWxpdmUuKHBlKSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIExpc3RfdXRpbC5tZXJnZV91bmlxIGNvbXBhcmVfc3RvcHMgWyBOYnIuYWRkIHRpIG4sIHBlIF0gdGFpbFxuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICB0YWlsXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHN0YXRlJy5zdG9wcGluZ190aW1lcyA8LSB0YWlsJyBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKHBlKSA8LSB0cnVlIGluXG4gICAgICAgICAgICAgICgqIEFyZ3VtZW50IHRvIHJlc2V0IG9ubHkgcGUgYW5kIG5vdCBhbGwgcGVydHMgaXMgXCJpZlxuICAgICAgICAgICAgICAgICB5b3UncmUgbm90IGJhY2t0cmFja2luZywgbm90aGluZyBkZXBlbmRzIHVwb25cbiAgICAgICAgICAgICAgICAgeW91XCIuLi4gV2UnZCBiZXR0ZXIgZ2V0IHN1cmUgb2YgdGhhdCA6LSkgKilcbiAgICAgICAgICAgICAgc3RvcCcsIGdyYXBoJywgc3RhdGUnLCBkdCdcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICB0cnVlLCBncmFwaCwgc3RhdGUsIGR0J1xuICAgICAgICBpblxuXG4gICAgICAgIHBlcnR1cmJhdGVfdW50aWxfZmlyc3RfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIGVudiBjb3VudGVyIH5vdXRwdXRzXG4gICAgICAgICAgKHN0b3AnLCBncmFwaCcsIHN0YXRlJywgZHQnKVxuICAgICAgICAoKiBpZiBzb21lIHBlcnR1cmJhdGlvbiBuZWVkcyBiYWNrdHJhY2ssIHJldHVybiB0aGUgcGVydHVyYmF0aW9uICopXG4gICAgICApIGVsc2VcbiAgICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgdHJ1ZVxuICAgICkgZWxzZVxuICAgICAgc3RvcCwgZ3JhcGgsIHN0YXRlLCBkdCwgZmFsc2VcblxubGV0IHBlcnR1cmJhdGVfd2l0aF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBmdW5jdGlvblxuICB8IFtdIC0+IGFzc2VydCBmYWxzZVxuICB8ICh0aSwgcGUpIDo6IHRhaWwgLT5cbiAgICBsZXQgdGFpbCcgPVxuICAgICAgbWF0Y2ggKE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlKS5QcmltaXRpdmVzLmFsYXJtIHdpdGhcbiAgICAgIHwgTm9uZSAtPiB0YWlsXG4gICAgICB8IFNvbWUgbiAtPiBMaXN0X3V0aWwubWVyZ2VfdW5pcSBjb21wYXJlX3N0b3BzIFsgTmJyLmFkZCB0aSBuLCBwZSBdIHRhaWxcbiAgICBpblxuICAgIGxldCAoKSA9IHN0YXRlLnN0b3BwaW5nX3RpbWVzIDwtIHRhaWwnIGluXG4gICAgaWYgQ291bnRlci5vbmVfdGltZV9jb3JyZWN0aW9uX2V2ZW50IH50aSBjb3VudGVyIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICAgICAgbGV0IGNhbmQgPVxuICAgICAgICAgICAgb2JzZXJ2YWJsZXNfdmFsdWVzIGVudiBncmFwaCAoQ291bnRlci5mYWtlX3RpbWUgY291bnRlcicgdGltZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIEFycmF5Lmxlbmd0aCBjYW5kID4gMSB0aGVuIG91dHB1dHMgKERhdGEuUGxvdCBjYW5kKVxuICAgICAgICBpblxuICAgICAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHQ6MC5cbiAgICAgIGluXG4gICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIF8gPVxuICAgICAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTp0cnVlIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgICAgZmFsc2UgWyBwZSBdXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgICAoZnVuIGkgXyAtPiBzdGF0ZScucGVydHVyYmF0aW9uc19ub3RfZG9uZV95ZXQuKGkpIDwtIHRydWUpXG4gICAgICAgICAgc3RhdGUnLnBlcnR1cmJhdGlvbnNfbm90X2RvbmVfeWV0XG4gICAgICBpblxuICAgICAgc3RvcCwgZ3JhcGgnLCBzdGF0ZSdcbiAgICApIGVsc2VcbiAgICAgIHRydWUsIGdyYXBoLCBzdGF0ZVxuXG5sZXQgcmVndWxhcl9sb29wX2JvZHkgfmRlYnVnX21vZGUgfm91dHB1dHMgfm1heENvbnNlY3V0aXZlQ2xhc2ggZW52IGNvdW50ZXJcbiAgICBncmFwaCBzdGF0ZSBkdCA9XG4gIGxldCAoKSA9XG4gICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICBsZXQgY2FuZCA9XG4gICAgICAgIG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggKENvdW50ZXIuZmFrZV90aW1lIGNvdW50ZXInIHRpbWUpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgaW5cbiAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHRcbiAgaW5cbiAgbGV0IGNvbnRpbnVlID0gQ291bnRlci5vbmVfdGltZV9hZHZhbmNlIGNvdW50ZXIgZHQgaW5cbiAgbGV0IHBpY2tlZF9pbnN0YW5jZSA9XG4gICAgUnVsZV9pbnRlcnByZXRlci5waWNrX2FuX2luc3RhbmNlIH5kZWJ1Z19tb2RlIGVudiBncmFwaFxuICBpblxuICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScsIG1peF9jaGFuZ2VkID1cbiAgICBwZXJ0dXJiYXRlIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5pc19hbGFybTpmYWxzZSBlbnYgY291bnRlciBncmFwaCBzdGF0ZVxuICAgICAgZmFsc2Ugc3RhdGUudGltZV9kZXBlbmRlbnRfcGVydHNcbiAgaW5cbiAgaWYgKG5vdCBjb250aW51ZSkgfHwgc3RvcCB0aGVuXG4gICAgdHJ1ZSwgZ3JhcGgnLCBzdGF0ZSdcbiAgZWxzZSBpZlxuICAgIChub3QgbWl4X2NoYW5nZWQpXG4gICAgfHwgUnVsZV9pbnRlcnByZXRlci5pc19jb3JyZWN0X2luc3RhbmNlIGVudiBncmFwaCcgcGlja2VkX2luc3RhbmNlXG4gIHRoZW5cbiAgICBvbmVfcnVsZSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlciBncmFwaCcgc3RhdGUnXG4gICAgICBwaWNrZWRfaW5zdGFuY2VcbiAgZWxzZVxuICAgIENvdW50ZXIub25lX3RpbWVfY29ycmVjdGlvbl9ldmVudCBjb3VudGVyLCBncmFwaCcsIHN0YXRlJ1xuXG5sZXQgYV9sb29wIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIH5kdW1wSWZEZWFkbG9ja2VkIH5tYXhDb25zZWN1dGl2ZUNsYXNoIGVudlxuICAgIGNvdW50ZXIgZ3JhcGggc3RhdGUgPVxuICBsZXQgYWN0aXZpdHkgPSBSdWxlX2ludGVycHJldGVyLmFjdGl2aXR5IGdyYXBoIGluXG4gIGxldCByZCA9IFJhbmRvbS5TdGF0ZS5mbG9hdCAoUnVsZV9pbnRlcnByZXRlci5nZXRfcmFuZG9tX3N0YXRlIGdyYXBoKSAxLjAgaW5cbiAgbGV0IGR0ID0gYWJzX2Zsb2F0IChsb2cgcmQgLy4gYWN0aXZpdHkpIGluXG5cbiAgbGV0IG91dCA9XG4gICAgKCpBY3Rpdml0eSBpcyBudWxsIG9yIGR0IGlzIGluZmluaXRlKilcbiAgICBpZiAobm90IChhY3Rpdml0eSA+IDAuKSkgfHwgY2xhc3NpZnlfZmxvYXQgZHQgPSBGUF9pbmZpbml0ZSB0aGVuXG4gICAgICBpZlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKF8sIHBlKSAtPlxuICAgICAgICAgICAgKE1vZGVsLmdldF9wZXJ0dXJiYXRpb24gZW52IHBlKS5QcmltaXRpdmVzLm5lZWRzX2JhY2t0cmFjaylcbiAgICAgICAgICBzdGF0ZS5zdG9wcGluZ190aW1lc1xuICAgICAgdGhlblxuICAgICAgICBwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlXG4gICAgICAgICAgc3RhdGUuc3RvcHBpbmdfdGltZXNcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGR1bXBJZkRlYWRsb2NrZWQgdGhlblxuICAgICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgICAoRGF0YS5TbmFwc2hvdFxuICAgICAgICAgICAgICAgICAoIFwiZGVhZGxvY2sua2FcIixcbiAgICAgICAgICAgICAgICAgICBSdWxlX2ludGVycHJldGVyLnNuYXBzaG90IH5kZWJ1Z19tb2RlIH5yYXc6ZmFsc2UgZW52IGNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgIGdyYXBoICkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgb3V0cHV0c1xuICAgICAgICAgICAgKERhdGEuV2FybmluZ1xuICAgICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgICBmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgICAgICAgIFwiQSBkZWFkbG9jayB3YXMgcmVhY2hlZCBhZnRlciAlZCBldmVudHMgYW5kICVFcyAoQWN0aXZpdHkgXFxcbiAgICAgICAgICAgICAgICAgICAgICA9ICUuNWYpXCJcbiAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgY291bnRlcilcbiAgICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyKVxuICAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHkgKSlcbiAgICAgICAgaW5cbiAgICAgICAgdHJ1ZSwgZ3JhcGgsIHN0YXRlXG4gICAgICApXG4gICAgZWxzZSAoXG4gICAgICAoKmFjdGl2aXR5IGlzIHBvc2l0aXZlKilcbiAgICAgIG1hdGNoIHN0YXRlLnN0b3BwaW5nX3RpbWVzIHdpdGhcbiAgICAgIHwgKHRpLCBfKSA6OiBfXG4gICAgICAgIHdoZW4gTmJyLmlzX3NtYWxsZXIgdGkgKE5ici5GIChDb3VudGVyLmN1cnJlbnRfdGltZSBjb3VudGVyICsuIGR0KSkgLT5cbiAgICAgICAgbGV0IHN0b3AsIGdyYXBoJywgc3RhdGUnLCBkdCcsIG5lZWRzX2JhY2t0cmFjayA9XG4gICAgICAgICAgcGVydHVyYmF0ZV91bnRpbF9maXJzdF9iYWNrdHJhY2sgfmRlYnVnX21vZGUgZW52IGNvdW50ZXIgfm91dHB1dHNcbiAgICAgICAgICAgIChmYWxzZSwgZ3JhcGgsIHN0YXRlLCBkdClcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbmVlZHNfYmFja3RyYWNrIHRoZW5cbiAgICAgICAgICBwZXJ0dXJiYXRlX3dpdGhfYmFja3RyYWNrIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoJ1xuICAgICAgICAgICAgc3RhdGUnIHN0YXRlJy5zdG9wcGluZ190aW1lc1xuICAgICAgICBlbHNlIGlmIHN0b3AgdGhlblxuICAgICAgICAgIHN0b3AsIGdyYXBoJywgc3RhdGUnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnZcbiAgICAgICAgICAgIGNvdW50ZXIgZ3JhcGgnIHN0YXRlJyBkdCdcbiAgICAgIHwgXyAtPlxuICAgICAgICByZWd1bGFyX2xvb3BfYm9keSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+bWF4Q29uc2VjdXRpdmVDbGFzaCBlbnYgY291bnRlclxuICAgICAgICAgIGdyYXBoIHN0YXRlIGR0XG4gICAgKVxuICBpblxuICBvdXRcblxubGV0IGVuZF9vZl9zaW11bGF0aW9uIH5vdXRwdXRzIGVudiBjb3VudGVyIGdyYXBoIHN0YXRlID1cbiAgbGV0IF8gPSBzdGF0ZS5pbml0X3N0b3BwaW5nX3RpbWVzIGluXG4gIGxldCAoKSA9XG4gICAgbGV0IG91dHB1dHMgY291bnRlcicgdGltZSA9XG4gICAgICBsZXQgY2FuZCA9XG4gICAgICAgIG9ic2VydmFibGVzX3ZhbHVlcyBlbnYgZ3JhcGggKENvdW50ZXIuZmFrZV90aW1lIGNvdW50ZXInIHRpbWUpXG4gICAgICBpblxuICAgICAgaWYgQXJyYXkubGVuZ3RoIGNhbmQgPiAxIHRoZW4gb3V0cHV0cyAoRGF0YS5QbG90IGNhbmQpXG4gICAgaW5cbiAgICBDb3VudGVyLmZpbGwgfm91dHB1dHMgY291bnRlciB+ZHQ6MC5cbiAgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAobmFtZSwgZSkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIG91dHB1dHNcbiAgICAgICAgICAoRGF0YS5XYXJuaW5nXG4gICAgICAgICAgICAgKCBOb25lLFxuICAgICAgICAgICAgICAgZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgIFwiVHJhY2tpbmcgRElOIGludG8gXFxcIiVzXFxcIiB3YXMgbm90IHN0b3BwZWQgYmVmb3JlIGVuZCBvZiBcXFxuICAgICAgICAgICAgICAgICAgICBzaW11bGF0aW9uXCJcbiAgICAgICAgICAgICAgICAgICBuYW1lICkpXG4gICAgICBpblxuICAgICAgb3V0cHV0cyAoRGF0YS5ESU4gKG5hbWUsIEZsdXhtYXAuc3RvcF9mbHV4IGVudiBjb3VudGVyIGUpKSlcbiAgICBzdGF0ZS5mbHV4XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0YXRlID0ge1xuICBncmFwaDogRWRnZXMudDtcbiAgdGltZTogZmxvYXQ7XG4gIGV2ZW50OiBpbnQ7XG4gIGNvbm5lY3RlZF9jb21wb25lbnRzOiBBZ2VudC5TZXRNYXAuU2V0LnQgTW9kcy5JbnRNYXAudCBvcHRpb247XG59XG5cbnR5cGUgc3VtbWFyeSA9IHsgdW5hcnlfZGlzdGFuY2VzOiAoaW50ICogaW50KSBvcHRpb24gfVxuXG5sZXQgaW5pdF9zdGF0ZSB+d2l0aF9jb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gIHtcbiAgICBncmFwaCA9IEVkZ2VzLmVtcHR5IH53aXRoX2Nvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgIHRpbWUgPSAwLjtcbiAgICBldmVudCA9IDA7XG4gICAgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgKGlmIHdpdGhfY29ubmVjdGVkX2NvbXBvbmVudHMgdGhlblxuICAgICAgICAgU29tZSBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgIGVsc2VcbiAgICAgICAgIE5vbmUpO1xuICB9XG5cbmxldCBjY19vZl9hZ2VudCBhZyBlIHdvcmsgPVxuICBsZXQgcmVjIGZvbGRfYXJpdHlfbGlzdCBmIHggYXJpdHkgYWNjID1cbiAgICBpZiB4ID0gYXJpdHkgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgZm9sZF9hcml0eV9saXN0IGYgKHN1Y2MgeCkgYXJpdHkgKGYgYWNjIHgpXG4gIGluXG5cbiAgbGV0IGFkZF9hZ2VudCBhIGUgKHdvcmssIG1vcnBoaXNtLCB0b2RvcykgPVxuICAgIGxldCBhaWQgPSBBZ2VudC5pZCBhIGluXG4gICAgbGV0IGF0eXBlID0gQWdlbnQuc29ydCBhIGluXG4gICAgbGV0IGFyaXR5ID0gRWRnZXMuZ2V0X3NpdGVzIGFpZCBlIGluXG4gICAgbGV0IHdfYWdlbnQsIHdvcmsnID0gUGF0dGVybi5uZXdfbm9kZSB3b3JrIGF0eXBlIGluXG4gICAgbGV0IHRvZG9zJyA9IGZvbGRfYXJpdHlfbGlzdCAoZnVuIGFjYyB4IC0+IChhaWQsIHgpIDo6IGFjYykgMCBhcml0eSB0b2RvcyBpblxuICAgIGxldCB3b3JrJycgPVxuICAgICAgZm9sZF9hcml0eV9saXN0XG4gICAgICAgIChmdW4gdyB4IC0+XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgaW50ZXJuYWwgPSBFZGdlcy5nZXRfaW50ZXJuYWwgYWlkIHggZSBpblxuICAgICAgICAgICAgUGF0dGVybi5uZXdfaW50ZXJuYWxfc3RhdGUgdyAod19hZ2VudCwgeCkgaW50ZXJuYWxcbiAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiB3KVxuICAgICAgICAwIGFyaXR5IHdvcmsnXG4gICAgaW5cbiAgICB3X2FnZW50LCB3b3JrJycsIChhaWQsIHdfYWdlbnQpIDo6IG1vcnBoaXNtLCB0b2RvcydcbiAgaW5cblxuICBsZXQgYWRkX2xpbmtzICh3b3JrLCBtb3JwaGlzbSwgdG9kb3MpIChhaWQsIHgpIGUgPVxuICAgIGxldCBfLCB3X2FnZW50ID0gTGlzdC5maW5kIChmdW4gKGlkLCBfKSAtPiBpZCA9IGFpZCkgbW9ycGhpc20gaW5cbiAgICBsZXQgbm90X2FnZW50IChpZCwgcykgPSBub3QgKGlkID0gYWlkICYmIHggPSBzKSBpblxuICAgIG1hdGNoIEVkZ2VzLmxpbmtfZGVzdGluYXRpb24gYWlkIHggZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgd29yaycgPSBQYXR0ZXJuLm5ld19mcmVlIHdvcmsgKHdfYWdlbnQsIHgpIGluXG4gICAgICBsZXQgdG9kb3MnID0gTGlzdC5maWx0ZXIgbm90X2FnZW50IHRvZG9zIGluXG4gICAgICB3b3JrJywgbW9ycGhpc20sIHRvZG9zJ1xuICAgIHwgU29tZSAoYiwgeSkgLT5cbiAgICAgIGxldCBiaWQgPSBBZ2VudC5pZCBiIGluXG4gICAgICBsZXQgbm90X2FnZW50cyAoaWQsIHMpID1cbiAgICAgICAgbm90X2FnZW50IChpZCwgcykgJiYgbm90IChpZCA9IEFnZW50LmlkIGIgJiYgcyA9IHkpXG4gICAgICBpblxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IF8sIHdiX2FnZW50ID0gTGlzdC5maW5kIChmdW4gKGlkLCBfKSAtPiBpZCA9IGJpZCkgbW9ycGhpc20gaW5cbiAgICAgICAgIGxldCB3b3JrJyA9IFBhdHRlcm4ubmV3X2xpbmsgd29yayAod19hZ2VudCwgeCkgKHdiX2FnZW50LCB5KSBpblxuICAgICAgICAgbGV0IHRvZG9zJyA9IExpc3QuZmlsdGVyIG5vdF9hZ2VudHMgdG9kb3MgaW5cbiAgICAgICAgIHdvcmsnLCBtb3JwaGlzbSwgdG9kb3MnXG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIGxldCB3Yl9hZ2VudCwgd29yaycsIG1vcnBoaXNtJywgdG9kb3MnID1cbiAgICAgICAgICAgYWRkX2FnZW50IGIgZSAod29yaywgbW9ycGhpc20sIHRvZG9zKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCB3b3JrJycgPSBQYXR0ZXJuLm5ld19saW5rIHdvcmsnICh3X2FnZW50LCB4KSAod2JfYWdlbnQsIHkpIGluXG4gICAgICAgICBsZXQgdG9kb3MnJyA9IExpc3QuZmlsdGVyIG5vdF9hZ2VudHMgdG9kb3MnIGluXG4gICAgICAgICB3b3JrJycsIG1vcnBoaXNtJywgdG9kb3MnJylcbiAgaW5cblxuICBsZXQgcmVjIHdvcmtpbmdfdG9kbyAod29yaywgbW9ycGhpc20sIHRvZG8pID1cbiAgICBtYXRjaCB0b2RvIHdpdGhcbiAgICB8IFtdIC0+IG1vcnBoaXNtLCB3b3JrXG4gICAgfCBwb3J0IDo6IF8gLT5cbiAgICAgIGxldCB3b3JrJywgbW9ycGhpc20nLCB0b2RvJyA9IGFkZF9saW5rcyAod29yaywgbW9ycGhpc20sIHRvZG8pIHBvcnQgZSBpblxuICAgICAgd29ya2luZ190b2RvICh3b3JrJywgbW9ycGhpc20nLCB0b2RvJylcbiAgaW5cblxuICBsZXQgXywgdywgbSwgdCA9IGFkZF9hZ2VudCBhZyBlICh3b3JrLCBbXSwgW10pIGluXG4gIHdvcmtpbmdfdG9kbyAodywgbSwgdClcblxubGV0IGNjX29mX3N0YXRlIH5kZWJ1Z19tb2RlIHMgZW52ID1cbiAgbGV0IGNjX29mX3Jvb3QgYWdlbnQgZScgPVxuICAgIGxldCB3b3JrID0gUGF0dGVybi5iZWdpbl9uZXcgZScgaW5cbiAgICBsZXQgbW9ycGhpc20sIHdvcmsnID0gY2Nfb2ZfYWdlbnQgYWdlbnQgcy5ncmFwaCB3b3JrIGluXG4gICAgbGV0IGVuLCBfLCBjLCBpID0gUGF0dGVybi5maW5pc2hfbmV3IH5kZWJ1Z19tb2RlIHdvcmsnIGluXG4gICAgZW4sIExpc3QubWFwIChmdW4gKGNpZCwgKGFpZCwgXykpIC0+IGNpZCwgYWlkKSBtb3JwaGlzbSwgYywgaVxuICBpblxuICBtYXRjaCBzLmNvbm5lY3RlZF9jb21wb25lbnRzIHdpdGhcbiAgfCBTb21lIGNjX21hcHMgLT5cbiAgICBNb2RzLkludE1hcC5mb2xkXG4gICAgICAoZnVuIHJvb3QgY2NfbWFwIChlLCBhY2MpIC0+XG4gICAgICAgIEFnZW50LlNldE1hcC5TZXQuZm9sZFxuICAgICAgICAgIChmdW4gYWdlbnQgKGUnLCBhY2MnKSAtPlxuICAgICAgICAgICAgaWYgQWdlbnQuaWQgYWdlbnQgPSByb290IHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZW4sIHIsIGMsIGkgPSBjY19vZl9yb290IGFnZW50IGUnIGluXG4gICAgICAgICAgICAgIGVuLCAociwgYywgaSkgOjogYWNjJ1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGUnLCBhY2MnKVxuICAgICAgICAgIGNjX21hcCAoZSwgYWNjKSlcbiAgICAgIGNjX21hcHMgKGVudiwgW10pXG4gIHwgTm9uZSAtPiBlbnYsIFtdXG5cbmxldCBicmVha19hcGFydF9jYyBncmFwaCBjY3MgPSBmdW5jdGlvblxuICB8IE5vbmUgLT4gY2NzXG4gIHwgU29tZSAob3JpZ2luX2NjLCBuZXdfY2MpIC0+XG4gICAgbGV0IHNldCA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBBZ2VudC5TZXRNYXAuU2V0LmVtcHR5IG9yaWdpbl9jYyBjY3MgaW5cbiAgICBpZiBBZ2VudC5TZXRNYXAuU2V0LmlzX2VtcHR5IHNldCB0aGVuXG4gICAgICBjY3NcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2V0LCBvc2V0JyA9XG4gICAgICAgIEFnZW50LlNldE1hcC5TZXQucGFydGl0aW9uXG4gICAgICAgICAgKGZ1biAoeCwgXykgLT4gRWRnZXMuZ2V0X2Nvbm5lY3RlZF9jb21wb25lbnQgeCBncmFwaCA9IFNvbWUgbmV3X2NjKVxuICAgICAgICAgIHNldFxuICAgICAgaW5cbiAgICAgIE1vZHMuSW50TWFwLmFkZCBuZXdfY2MgbnNldCAoTW9kcy5JbnRNYXAuYWRkIG9yaWdpbl9jYyBvc2V0JyBjY3MpXG4gICAgKVxuXG5sZXQgbWVyZ2VfY2MgY2NzID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGNjc1xuICB8IFNvbWUgKGNjMSwgY2MyKSAtPlxuICAgIGxldCBzZXQxID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IEFnZW50LlNldE1hcC5TZXQuZW1wdHkgY2MxIGNjcyBpblxuICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgY2MyIGNjcyB3aXRoXG4gICAgfCBOb25lLCBfIC0+IGNjc1xuICAgIHwgU29tZSBzZXQyLCBjY3MnIC0+XG4gICAgICBNb2RzLkludE1hcC5hZGQgY2MxIChBZ2VudC5TZXRNYXAuU2V0LnVuaW9uIHNldDEgc2V0MikgY2NzJylcblxubGV0IGRvX25lZ2F0aXZlX3BhcnQgKChhLCBfKSwgcykgKGdyYXBoLCBjY3MpID1cbiAgbWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiBhIHMgZ3JhcGggd2l0aFxuICB8IE5vbmUgLT4gRWRnZXMucmVtb3ZlX2ZyZWUgYSBzIGdyYXBoLCBjY3NcbiAgfCBTb21lICgoYScsIF8pLCBzJykgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY19jaGFuZ2UgPSBFZGdlcy5yZW1vdmVfbGluayBhIHMgYScgcycgZ3JhcGggaW5cbiAgICAoIGdyYXBoJyxcbiAgICAgIChtYXRjaCBjY3Mgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MgLT4gU29tZSAoYnJlYWtfYXBhcnRfY2MgZ3JhcGgnIGNjcyBjY19jaGFuZ2UpKSApXG5cbmxldCBkb19hY3Rpb24gc2lncyAoKGdyYXBoLCBjY3MpIGFzIHBhY2spID0gZnVuY3Rpb25cbiAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChpZCwgdHkpIGFzIGFnKSwgX2dyYXBocykgLT5cbiAgICAoIHNuZCBAQCBFZGdlcy5hZGRfYWdlbnQgfmlkIHNpZ3MgdHkgZ3JhcGgsXG4gICAgICBPcHRpb25fdXRpbC5tYXAgKE1vZHMuSW50TWFwLmFkZCBpZCAoQWdlbnQuU2V0TWFwLlNldC5zaW5nbGV0b24gYWcpKSBjY3MgKVxuICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsICgoKGEsIF8pLCBzKSwgaSkgLT5cbiAgICBFZGdlcy5hZGRfaW50ZXJuYWwgYSBzIGkgZ3JhcGgsIGNjc1xuICB8IEluc3RhbnRpYXRpb24uQmluZCAoKChhMSwgczEpIGFzIHgxKSwgKChhMiwgczIpIGFzIHgyKSlcbiAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKCgoYTEsIHMxKSBhcyB4MSksICgoYTIsIHMyKSBhcyB4MikpIC0+XG4gICAgbGV0IGdyYXBoJywgY2NzJyA9IGRvX25lZ2F0aXZlX3BhcnQgeDIgKGRvX25lZ2F0aXZlX3BhcnQgeDEgcGFjaykgaW5cbiAgICBsZXQgZ3JhcGgnJywgY2NfY2hhbmdlID0gRWRnZXMuYWRkX2xpbmsgYTEgczEgYTIgczIgZ3JhcGgnIGluXG4gICAgKCBncmFwaCcnLFxuICAgICAgKG1hdGNoIGNjcycgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSBjY3MnIC0+IFNvbWUgKG1lcmdlX2NjIGNjcycgY2NfY2hhbmdlKSkgKVxuICB8IEluc3RhbnRpYXRpb24uRnJlZSAoKChhLCBfKSwgcykgYXMgeCkgLT5cbiAgICBsZXQgZ3JhcGgnLCBjY3MnID0gZG9fbmVnYXRpdmVfcGFydCB4IHBhY2sgaW5cbiAgICBFZGdlcy5hZGRfZnJlZSBhIHMgZ3JhcGgnLCBjY3MnXG4gIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgKChpZCwgdHkpIGFzIGEpIC0+XG4gICAgbGV0IGdyYXBoJywgY2NzJyA9XG4gICAgICBUb29scy5yZWN0aVxuICAgICAgICAoZnVuIHN0IHMgLT4gZG9fbmVnYXRpdmVfcGFydCAoYSwgcykgc3QpXG4gICAgICAgIHBhY2sgKFNpZ25hdHVyZS5hcml0eSBzaWdzIHR5KVxuICAgIGluXG4gICAgKG1hdGNoIGNjcycgd2l0aFxuICAgIHwgTm9uZSAtPiBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZ3JhcGgnLCBOb25lXG4gICAgfCBTb21lIGNjcycgLT5cbiAgICAgIChtYXRjaCBNb2RzLkludE1hcC5wb3AgaWQgY2NzJyB3aXRoXG4gICAgICB8IE5vbmUsIF8gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICB8IFNvbWUgeCwgY2NzJycgLT5cbiAgICAgICAgbGV0ICgpID0gYXNzZXJ0IChBZ2VudC5TZXRNYXAuU2V0LmlzX3NpbmdsZXRvbiB4KSBpblxuICAgICAgICBFZGdlcy5yZW1vdmVfYWdlbnQgaWQgZ3JhcGgnLCBTb21lIGNjcycnKSlcblxubGV0IGludm9sdmVkX2FnZW50cyBsID1cbiAgTGlzdF91dGlsLm1hcF9vcHRpb25cbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGEgLT4gU29tZSBhXG4gICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgX1xuICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIF9cbiAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIF8gLT5cbiAgICAgICAgTm9uZSlcbiAgICBsXG5cbmxldCBzdG9yZV9kaXN0YW5jZXMgciBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgW10gfCBbIF8gXSB8IF8gOjogXyA6OiBfIDo6IF8gLT4gTm9uZVxuICB8IFsgY2MxOyBjYzIgXSAtPlxuICAgIGxldCBjYzFfYWdzID0gaW52b2x2ZWRfYWdlbnRzIGNjMSBpblxuICAgIGxldCBjYzJfYWdzID0gaW52b2x2ZWRfYWdlbnRzIGNjMiBpblxuICAgIChtYXRjaCBFZGdlcy5hcmVfY29ubmVjdGVkIGdyYXBoIGNjMV9hZ3MgY2MyX2FncyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcGF0aCAtPiBTb21lIChyLCBMaXN0Lmxlbmd0aCBwYXRoKSlcblxubGV0IHRlc3RfcGFzc19vbiBncmFwaCA9IGZ1bmN0aW9uXG4gIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+IEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoXG4gIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgKChhZywgcyksIHN0KSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoICYmIEVkZ2VzLmlzX2ludGVybmFsIHN0IChBZ2VudC5pZCBhZykgcyBncmFwaFxuICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSAoYWcsIHMpIC0+XG4gICAgRWRnZXMuaXNfYWdlbnQgYWcgZ3JhcGggJiYgRWRnZXMuaXNfZnJlZSAoQWdlbnQuaWQgYWcpIHMgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIChhZywgcykgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBub3QgKEVkZ2VzLmlzX2ZyZWUgKEFnZW50LmlkIGFnKSBzIGdyYXBoKVxuICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKChhZywgcyksIChhZycsIHMnKSkgLT5cbiAgICBFZGdlcy5pc19hZ2VudCBhZyBncmFwaCAmJiBFZGdlcy5pc19hZ2VudCBhZycgZ3JhcGhcbiAgICAmJiBFZGdlcy5saW5rX2V4aXN0cyAoQWdlbnQuaWQgYWcpIHMgKEFnZW50LmlkIGFnJykgcycgZ3JhcGhcbiAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKChhZywgcyksIChhZ190eSwgcycpKSAtPlxuICAgIEVkZ2VzLmlzX2FnZW50IGFnIGdyYXBoXG4gICAgJiZcbiAgICAobWF0Y2ggRWRnZXMubGlua19kZXN0aW5hdGlvbiAoQWdlbnQuaWQgYWcpIHMgZ3JhcGggd2l0aFxuICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgIHwgU29tZSAoKF8sIGRzdF9hZ190eSksIGRzdF9zKSAtPiBkc3RfYWdfdHkgPSBhZ190eSAmJiBkc3RfcyA9IHMnKVxuXG5sZXQgdGVzdHNfcGFzc19vbiBncmFwaCB0ZXN0cyA9XG4gIExpc3QuZm9yX2FsbCAodGVzdF9wYXNzX29uIGdyYXBoKSAoTGlzdC5jb25jYXQgdGVzdHMpXG5cbmxldCBpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIGdyYXBoID0gZnVuY3Rpb25cbiAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5Jbml0IF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5EdW1teSBfIC0+IHRydWVcbiAgfCBUcmFjZS5SdWxlIChfciwgZXZlbnQsIF9pbmZvKSAtPlxuICAgIHRlc3RzX3Bhc3Nfb24gZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi50ZXN0c1xuICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+IHRlc3RzX3Bhc3Nfb24gZ3JhcGggdGVzdHNcblxubGV0IGlzX3N0ZXBfdHJpZ2dlcmFibGUgc3RhdGUgPSBpc19zdGVwX3RyaWdnZXJhYmxlX29uX2VkZ2VzIHN0YXRlLmdyYXBoXG5cbigqIFRoZXJlIGlzIGEgc3VidGVsdHkgd2hlbiBleGVjdXRpbmcgYSBzZXF1ZW5jZSBvZiBhY3Rpb25zLiBJbmRlZWQsXG4gICB3aGVuZXZlciBhIHJ1bGUgYm90aCBjcmVhdGVzIGFuZCByZW1vdmVzIGFnZW50cywgdGhlcmUgaXMgY3VycmVudGx5XG4gICBubyBndWFyYW50ZWUgdGhhdCB0aGUgY3JlYXRpb24gYWN0aW9ucyBhcmUgcGxhY2VkIGJlZm9yZSB0aGUgcmVtb3ZhbFxuICAgYWN0aW9ucyBpbiBbZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXS4gVGhpcyBjYW4gYmUgYW4gaXNzdWUgaW4gYVxuICAgY2FzZSB3aGVyZSBhbiBldmVudCBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIHR3byBhY3Rpb25zIGZvciBleGFtcGxlOlxuICAgW1wiY3JlYXRlIGFnZW50IHdpdGggaWQgOFwiLCBcInJlbW92ZSBhZ2VudCB3aXRoIGlkIDhcIl0uIEluIHRoaXMgY2FzZSxcbiAgIGFnZW50IGlkIDggaXMgbm90IGF2YWlsYWJsZSB3aGVuIHRoZSBjcmVhdGlvbiBhY3Rpb24gaXMgcGVyZm9ybWVkIGFuZFxuICAgc28gdGhlIFtFZGdlc10gbW9kdWxlIHRocm93cyBhbiBleGNlcHRpb24uXG5cbiAgIEFzIGEgdGVtcG9yYXJ5IGZpeCwgd2UgbWFrZSBzdXJlIHRoYXQgYWxsIGRlbGV0aW9uIGFjdGlvbnMgYXJlXG4gICBleGVjdXRlZCBmaXJzdC4gVGhpcyBpbXBsaWNpdGx5IGFzc3VtZXMgdGhhdCBhIHN0ZXAgZGVsZXRpbmcgYW4gYWdlbnRcbiAgIGNhbm5vdCBwZXJmb3JtIGFueSBvdGhlciBhY3Rpb24gaW52b2x2aW5nIHRoaXMgYWdlbnQuXG5cbiAgIFRPRE86IFNob3VsZG4ndCB3ZSByYXRoZXIgZW5zdXJlIHRoYXQgYWN0aW9ucyBhcmUgcHJvcGVybHkgc29ydGVkIGluXG4gICB0aGUgdHJhY2UgZmlsZSBpbiB0aGUgZmlyc3QgcGxhY2U/ICopXG5sZXQgZG9fYWN0aW9ucyBzaWdzIHN0IGFjdGlvbnMgPVxuICBsZXQgaXNfcmVtb3ZhbCA9XG4gICAgbGV0IG9wZW4gSW5zdGFudGlhdGlvbiBpblxuICAgIGZ1bmN0aW9uXG4gICAgfCBSZW1vdmUgXyAtPiB0cnVlXG4gICAgfCBDcmVhdGUgXyB8IE1vZF9pbnRlcm5hbCBfIHwgQmluZCBfIHwgQmluZF90byBfIHwgRnJlZSBfIC0+IGZhbHNlXG4gIGluXG4gIGxldCByZW1vdmFscywgb3RoZXJzID0gTGlzdC5wYXJ0aXRpb24gaXNfcmVtb3ZhbCBhY3Rpb25zIGluXG4gIGxldCBkb19pbl9vcmRlciBhY3Rpb25zIHN0ID0gTGlzdC5mb2xkX2xlZnQgKGRvX2FjdGlvbiBzaWdzKSBzdCBhY3Rpb25zIGluXG4gIHN0IHw+IGRvX2luX29yZGVyIHJlbW92YWxzIHw+IGRvX2luX29yZGVyIG90aGVyc1xuXG5sZXQgZG9fc3RlcCBzaWdzIHN0YXRlID0gZnVuY3Rpb25cbiAgfCBUcmFjZS5TdWJzIF8gLT4gc3RhdGUsIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9XG4gIHwgVHJhY2UuUnVsZSAoa2luZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgbGV0IHVuYXJ5X2Rpc3RhbmNlcyA9XG4gICAgICBpZiBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cyA9IE5vbmUgdGhlblxuICAgICAgICBOb25lXG4gICAgICBlbHNlXG4gICAgICAgIHN0b3JlX2Rpc3RhbmNlcyBraW5kIHN0YXRlLmdyYXBoIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgICBpblxuICAgIGxldCBwcmVncmFwaCwgY29ubmVjdGVkX2NvbXBvbmVudHMgPVxuICAgICAgZG9fYWN0aW9ucyBzaWdzXG4gICAgICAgIChzdGF0ZS5ncmFwaCwgc3RhdGUuY29ubmVjdGVkX2NvbXBvbmVudHMpXG4gICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IGdyYXBoID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gZ3JhcGggKChpZCwgXyksIHMpIC0+IEVkZ2VzLmFkZF9mcmVlIGlkIHMgZ3JhcGgpXG4gICAgICAgIHByZWdyYXBoIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuICAgIGluXG4gICAgKCB7XG4gICAgICAgIGdyYXBoO1xuICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50cztcbiAgICAgICAgdGltZSA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIGV2ZW50ID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQ7XG4gICAgICB9LFxuICAgICAgeyB1bmFyeV9kaXN0YW5jZXMgfSApXG4gIHwgVHJhY2UuUGVydCAoXywgZXZlbnQsIGluZm8pIC0+XG4gICAgbGV0IHByZWdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3NcbiAgICAgICAgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cylcbiAgICAgICAgZXZlbnQuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgaW5cbiAgICBsZXQgZ3JhcGggPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBncmFwaCAoKGlkLCBfKSwgcykgLT4gRWRnZXMuYWRkX2ZyZWUgaWQgcyBncmFwaClcbiAgICAgICAgcHJlZ3JhcGggZXZlbnQuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgaW5cbiAgICAoIHtcbiAgICAgICAgZ3JhcGg7XG4gICAgICAgIGNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgICB0aW1lID0gaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZTtcbiAgICAgICAgZXZlbnQgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9ldmVudDtcbiAgICAgIH0sXG4gICAgICB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfSApXG4gIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgbGV0IGdyYXBoLCBjb25uZWN0ZWRfY29tcG9uZW50cyA9XG4gICAgICBkb19hY3Rpb25zIHNpZ3MgKHN0YXRlLmdyYXBoLCBzdGF0ZS5jb25uZWN0ZWRfY29tcG9uZW50cykgYWN0aW9uc1xuICAgIGluXG4gICAgKCB7IGdyYXBoOyBjb25uZWN0ZWRfY29tcG9uZW50czsgdGltZSA9IHN0YXRlLnRpbWU7IGV2ZW50ID0gc3RhdGUuZXZlbnQgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5PYnMgKF8sIF8sIGluZm8pIC0+XG4gICAgKCB7XG4gICAgICAgIGdyYXBoID0gc3RhdGUuZ3JhcGg7XG4gICAgICAgIHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lO1xuICAgICAgICBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50O1xuICAgICAgICBjb25uZWN0ZWRfY29tcG9uZW50cyA9IHN0YXRlLmNvbm5lY3RlZF9jb21wb25lbnRzO1xuICAgICAgfSxcbiAgICAgIHsgdW5hcnlfZGlzdGFuY2VzID0gTm9uZSB9IClcbiAgfCBUcmFjZS5EdW1teSBfIC0+IHN0YXRlLCB7IHVuYXJ5X2Rpc3RhbmNlcyA9IE5vbmUgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBzeW50YXhfdmVyc2lvbiA9IFYzIHwgVjRcblxubGV0IG1lcmdlX3ZlcnNpb24gYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgVjQsIF8gfCBfLCBWNCAtPiBWNFxuICB8IFYzLCBWMyAtPiBWM1xuXG50eXBlIGludGVybmFsID0gc3RyaW5nIG9wdGlvbiBMb2MuYW5ub3RlZCBsaXN0XG5cbnR5cGUgcG9ydCA9IHtcbiAgcG9ydF9uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIHBvcnRfaW50OiBpbnRlcm5hbDtcbiAgcG9ydF9pbnRfbW9kOiBzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uO1xuICBwb3J0X2xpbms6IChzdHJpbmcgTG9jLmFubm90ZWQsIHVuaXQpIExLYXBwYS5saW5rIExvYy5hbm5vdGVkIGxpc3Q7XG4gIHBvcnRfbGlua19tb2Q6IGludCBMb2MuYW5ub3RlZCBvcHRpb24gb3B0aW9uO1xufVxuXG4oKiBUT0RPIGNoYW5nZSBuYW1lLCBDVkFSIGlzIG5vdCBhIHRlc3Q/ICopXG4oKiBUT0RPIGRpc2NyaW1pbmF0ZSBiZXR3ZWVuIGNvdW50ZXIgZGVmaW5pdGlvbiBhbmQgY291bnRlciB0ZXN0ID8gKilcbigqIFRPRE86IGNoYW5nZSB0aGlzIHRvIENUWVBFID0gQ1RFU1QgKENURVNUVFlQRSAqIGludCkgfCBDVkFSIHN0cmluZz8gKilcblxudHlwZSBjb3VudGVyX3Rlc3QgPSBDRVEgb2YgaW50IHwgQ0dURSBvZiBpbnQgfCBDTFRFIG9mIGludCB8IENWQVIgb2Ygc3RyaW5nXG5cbnR5cGUgY291bnRlciA9IHtcbiAgY291bnRlcl9uYW1lOiBzdHJpbmcgTG9jLmFubm90ZWQ7XG4gIGNvdW50ZXJfdGVzdDogY291bnRlcl90ZXN0IExvYy5hbm5vdGVkIG9wdGlvbjtcbiAgICAgICgqKiBJbiBhIHJ1bGU6IHdoYXQgdGVzdCBpcyBkb25lLCBpbiBhbiBhZ2VudCBkZWNsYXJhdGlvbjogdGhlIG1pbiB2YWx1ZSwgaW4gYW4gaW5pdCBkZWNsYXJhdGlvbjogdGhlIGluaXQgdmFsdWUsIE5vbmUgaWYgYWJzZW50ICopXG4gIGNvdW50ZXJfZGVsdGE6IGludCBMb2MuYW5ub3RlZDtcbiAgICAgICgqKiBJbiBhIHJ1bGU6IGNoYW5nZSBpbiBjb3VudGVyIHZhbHVlLCBpbiBhbiBhZ2VudCBkZWNsYXJhdGlvbjogbWF4IHZhbHVlIG9mIHRoZSBjb3VudGVyLCAwIGlmIGFic2VudCAqKVxufVxuXG50eXBlIHRyYW5zbGF0ZV9pbnQgPSBCQVNJU19NSU5VU19JTlBVVCBvZiBpbnRcblxubGV0IGFwcGx5X2ludCB0IGkgPVxuICBtYXRjaCB0IHdpdGhcbiAgICB8IEJBU0lTX01JTlVTX0lOUFVUIGQgLT4gZCAtIGlcblxubGV0IHJlb3JkZXJfYm91bmRzIHQgKGksaikgPVxuICBtYXRjaCB0IHdpdGhcbiAgICB8IEJBU0lTX01JTlVTX0lOUFVUIF8gLT4gaixpXG5cbnR5cGUgY29udmVyc2lvbl9pbmZvID1cbiAgICAgIHtcbiAgICAgICAgZnJvbV9zaWdfbmFtZTogc3RyaW5nIExvYy5hbm5vdGVkO1xuICAgICAgICBjb252ZXJ0X3ZhbHVlOiB0cmFuc2xhdGVfaW50O1xuICAgICAgICBjb252ZXJ0X2RlbHRhOiB0cmFuc2xhdGVfaW50O1xuICAgICAgfVxuKCoqIENvdW50ZXIgc3ludGF4IGZyb20gQVNULCBwcmVzZW50IGluIDMgY29udGV4dHMgd2l0aCBkaWZmZXJlbnQgbWVhbmluZ3M6IGFnZW50IGRlZmluaXRpb24sIHNwZWNpZXMgaW5pdCBkZWNsYXJhdGlvbiwgcnVsZSAqKVxuXG50eXBlIG9yaWdpbmUgPSBGcm9tX29yaWdpbmFsX2FzdCB8IEZyb21fY2x0ZV9lbGltaW5hdGlvbiBvZiBjb252ZXJzaW9uX2luZm9cblxudHlwZSBjb3VudGVyX3NpZyA9IHtcbiAgY291bnRlcl9zaWdfbmFtZTogc3RyaW5nIExvYy5hbm5vdGVkO1xuICBjb3VudGVyX3NpZ19taW46IGludCBvcHRpb24gTG9jLmFubm90ZWQgb3B0aW9uO1xuICBjb3VudGVyX3NpZ19tYXg6IGludCBvcHRpb24gTG9jLmFubm90ZWQgb3B0aW9uO1xuICBjb3VudGVyX3NpZ192aXNpYmxlOiBvcmlnaW5lO1xuICBjb3VudGVyX3NpZ19kZWZhdWx0OiBpbnQ7XG59XG5cbmxldCBjb3VudGVyX3NpZ19vZl9jb3VudGVyIChjIDogY291bnRlcikgOiBjb3VudGVyX3NpZyA9XG4gIGxldCAoY291bnRlcl9zaWdfbWluLCBjb3VudGVyX3NpZ19kZWZhdWx0KSA6IChpbnQgb3B0aW9uICogTG9jLnQpIG9wdGlvbiAqIGludFxuICAgICAgPVxuICAgIG1hdGNoIGMuY291bnRlcl90ZXN0IHdpdGhcbiAgICB8IFNvbWUgKENFUSBpLCBsb2MpIC0+IFNvbWUgKFNvbWUgaSwgbG9jKSwgaVxuICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF8gfCBDTFRFIF8gfCBDVkFSIF8pLCBfKSAtPiBOb25lLCAwXG4gIGluXG4gIGxldCBjb3VudGVyX3NpZ19tYXggPVxuICAgIG1hdGNoIGMuY291bnRlcl9kZWx0YSB3aXRoXG4gICAgfCBpLCBsb2MgLT4gU29tZSAoU29tZSBpLCBsb2MpXG4gIGluXG4gIHtcbiAgICBjb3VudGVyX3NpZ19uYW1lID0gYy5jb3VudGVyX25hbWU7XG4gICAgY291bnRlcl9zaWdfbWluO1xuICAgIGNvdW50ZXJfc2lnX21heDtcbiAgICBjb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgIGNvdW50ZXJfc2lnX3Zpc2libGUgPSBGcm9tX29yaWdpbmFsX2FzdDtcbiAgfVxuXG5sZXQgbWFrZV9pbnZlcnRlZF9jb3VudGVyX3NpZyAoY291bnRlciA6IGNvdW50ZXJfc2lnKVxuICAgIChjb3VudGVyX3NpZ19uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkKSA6IGNvdW50ZXJfc2lnID1cbiAgbGV0IGZfaW50ID1cbiAgICBtYXRjaCBjb3VudGVyLmNvdW50ZXJfc2lnX21heCwgY291bnRlci5jb3VudGVyX3NpZ19taW4gd2l0aFxuICAgIHwgU29tZSAoU29tZSBtYXgsIF8pLCBTb21lIChTb21lIG1pbiwgXykgLT5cbiAgICAgIEJBU0lTX01JTlVTX0lOUFVUIChtYXgrbWluKVxuICAgIHwgKE5vbmUgfCBTb21lIChOb25lLCBfKSksIF8gfCBfLCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSAtPlxuICAgICAgZmFpbHdpdGggXCJ1bmJvdW5kZWQgY291bnRlcnMgbm90IGltcGxlbWVudGVkIHlldFwiXG4gIGluXG4gIGxldCBmX29wID0gQkFTSVNfTUlOVVNfSU5QVVQgMCBpblxuICB7XG4gICAgY291bnRlciB3aXRoXG4gICAgY291bnRlcl9zaWdfbmFtZTtcbiAgICBjb3VudGVyX3NpZ192aXNpYmxlID1cbiAgICAgIEZyb21fY2x0ZV9lbGltaW5hdGlvblxuICAgICAge1xuICAgICAgICBmcm9tX3NpZ19uYW1lPWNvdW50ZXIuY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgY29udmVydF92YWx1ZT1mX2ludDtcbiAgICAgICAgY29udmVydF9kZWx0YT1mX29wO1xuICAgICAgfVxuICAgIDtcbiAgICBjb3VudGVyX3NpZ19kZWZhdWx0ID1cbiAgICAgIGFwcGx5X2ludCBmX2ludCBjb3VudGVyLmNvdW50ZXJfc2lnX2RlZmF1bHRcblxuICB9XG5cbnR5cGUgJ2NvdW50ZXIgc2l0ZSA9IFBvcnQgb2YgcG9ydCB8IENvdW50ZXIgb2YgJ2NvdW50ZXJcblxubGV0IG1hcF9jb3VudGVyc19pbl9zaXRlIGYgPSBmdW5jdGlvblxuICB8IFBvcnQgXyBhcyB4IC0+IHhcbiAgfCBDb3VudGVyIGNvIC0+IENvdW50ZXIgKGYgY28pXG5cbnR5cGUgYWdlbnRfbW9kID0gTm9Nb2QgfCBFcmFzZSB8IENyZWF0ZVxuXG50eXBlICdjb3VudGVyIHBhcmFtZXRyaWNfYWdlbnQgPVxuICB8IFByZXNlbnQgb2Ygc3RyaW5nIExvYy5hbm5vdGVkICogJ2NvdW50ZXIgc2l0ZSBsaXN0ICogYWdlbnRfbW9kXG4gIHwgQWJzZW50IG9mIExvYy50XG5cbnR5cGUgYWdlbnQgPSBjb3VudGVyIHBhcmFtZXRyaWNfYWdlbnRcbnR5cGUgYWdlbnRfc2lnID0gY291bnRlcl9zaWcgcGFyYW1ldHJpY19hZ2VudFxuXG4oKiBUT0RPOiBkb2N1bWVudCB3aHkgbGlzdCBsaXN0ICopXG50eXBlIG1peHR1cmUgPSBhZ2VudCBsaXN0IGxpc3RcblxudHlwZSBlZGl0X25vdGF0aW9uID0ge1xuICBtaXg6IG1peHR1cmU7XG4gIGRlbHRhX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xufVxuXG50eXBlIGFycm93X25vdGF0aW9uID0ge1xuICBsaHM6IG1peHR1cmU7XG4gIHJtX3Rva2VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogc3RyaW5nIExvYy5hbm5vdGVkKSBsaXN0O1xuICByaHM6IG1peHR1cmU7XG4gIGFkZF90b2tlbjpcbiAgICAoKG1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdDtcbn1cblxudHlwZSBydWxlX2NvbnRlbnQgPSBFZGl0IG9mIGVkaXRfbm90YXRpb24gfCBBcnJvdyBvZiBhcnJvd19ub3RhdGlvblxuXG50eXBlIHJ1bGUgPSB7XG4gIHJld3JpdGU6IHJ1bGVfY29udGVudDtcbiAgYmlkaXJlY3Rpb25hbDogYm9vbDtcbiAga19kZWY6IChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQ7XG4gIGtfdW46XG4gICAgKChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWRcbiAgICAqIChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uKVxuICAgIG9wdGlvbjtcbiAgKCprXzE6cmFkaXVzX29wdCopXG4gIGtfb3A6IChtaXh0dXJlLCBzdHJpbmcpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgb3B0aW9uO1xuICBrX29wX3VuOlxuICAgICgobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkXG4gICAgKiAobWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbilcbiAgICBvcHRpb247XG4gICAgICAoKnJhdGUgZm9yIGJhY2t3YXJkIHJ1bGUqKVxufVxuXG5sZXQgZmxpcF9sYWJlbCBzdHIgPSBzdHIgXiBcIl9vcFwiXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciA9XG4gIHwgQVBQTFkgb2YgKCgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIExvYy5hbm5vdGVkICogJ3J1bGUgTG9jLmFubm90ZWQpXG4gIHwgVVBEQVRFIG9mICgnaWQgTG9jLmFubm90ZWQgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZClcbiAgfCBTVE9QIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgU05BUFNIT1Qgb2YgYm9vbCAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgUFJJTlQgb2ZcbiAgICAgICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gICAgICAqICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5lIFByaW1pdGl2ZXMucHJpbnRfZXhwciBsaXN0XG4gIHwgUExPVEVOVFJZXG4gIHwgQ0ZMT1dMQUJFTCBvZiAoYm9vbCAqIHN0cmluZyBMb2MuYW5ub3RlZClcbiAgfCBDRkxPV01JWCBvZiAoYm9vbCAqICdwYXR0ZXJuIExvYy5hbm5vdGVkKVxuICB8IERJTiBvZlxuICAgICAgUHJpbWl0aXZlcy5kaW5fa2luZFxuICAgICAgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IERJTk9GRiBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBQcmltaXRpdmVzLnByaW50X2V4cHIgbGlzdFxuICB8IFNQRUNJRVNfT0Ygb2ZcbiAgICAgIGJvb2xcbiAgICAgICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgUHJpbWl0aXZlcy5wcmludF9leHByIGxpc3RcbiAgICAgICogJ3BhdHRlcm4gTG9jLmFubm90ZWRcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQsICdydWxlKSBwZXJ0dXJiYXRpb24gPVxuICAoTmJyLnQgb3B0aW9uXG4gICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQgb3B0aW9uXG4gICogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgbW9kaWZfZXhwciBsaXN0XG4gICogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQgb3B0aW9uKVxuICBMb2MuYW5ub3RlZFxuXG50eXBlIGNvbmZpZ3VyYXRpb24gPSBzdHJpbmcgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdFxuXG50eXBlICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgPVxuICBzdHJpbmcgTG9jLmFubm90ZWQgKiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuXG50eXBlICgnbWl4dHVyZSwgJ2lkKSBpbml0X3QgPVxuICB8IElOSVRfTUlYIG9mICdtaXh0dXJlIExvYy5hbm5vdGVkXG4gIHwgSU5JVF9UT0sgb2YgJ2lkIExvYy5hbm5vdGVkIGxpc3RcblxudHlwZSAoJ3BhdHRlcm4sICdtaXh0dXJlLCAnaWQpIGluaXRfc3RhdGVtZW50ID1cbiAgKCogIHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiAoKnZvbHVtZSopKilcbiAgKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgKiAoJ21peHR1cmUsICdpZCkgaW5pdF90XG5cbnR5cGUgKCdhZ2VudCwgJ2FnZW50X2lkLCAncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGluc3RydWN0aW9uID1cbiAgfCBTSUcgb2YgJ2FnZW50X2lkXG4gIHwgVE9LRU5TSUcgb2Ygc3RyaW5nIExvYy5hbm5vdGVkXG4gIHwgVk9MU0lHIG9mIHN0cmluZyAqIGZsb2F0ICogc3RyaW5nICgqIHR5cGUsIHZvbHVtZSwgcGFyYW1ldGVyKilcbiAgfCBJTklUIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCkgaW5pdF9zdGF0ZW1lbnRcbiAgKCp2b2x1bWUsIGluaXQsIHBvc2l0aW9uICopXG4gIHwgREVDTEFSRSBvZiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmXG4gIHwgT0JTIG9mICgncGF0dGVybiwgJ2lkKSB2YXJpYWJsZV9kZWYgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSopXG4gIHwgUExPVCBvZiAoJ3BhdHRlcm4sICdpZCkgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZFxuICB8IFBFUlQgb2YgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uXG4gIHwgQ09ORklHIG9mIGNvbmZpZ3VyYXRpb25cbiAgfCBSVUxFIG9mIChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogJ3J1bGUgTG9jLmFubm90ZWQpXG5cbnR5cGUgKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgY29tbWFuZCA9XG4gIHwgUlVOIG9mICgncGF0dGVybiwgJ2lkKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkXG4gIHwgTU9ESUZZIG9mICgncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIG1vZGlmX2V4cHIgbGlzdFxuICB8IFFVSVRcblxudHlwZSAoJ2FnZW50LCAnYWdlbnRfc2lnLCAncGF0dGVybiwgJ21peHR1cmUsICdpZCwgJ3J1bGUpIGNvbXBpbCA9IHtcbiAgZmlsZW5hbWVzOiBzdHJpbmcgbGlzdDtcbiAgdmFyaWFibGVzOiAoJ3BhdHRlcm4sICdpZCkgdmFyaWFibGVfZGVmIGxpc3Q7XG4gICAgICAoKiogcGF0dGVybiBkZWNsYXJhdGlvbiBmb3IgcmV1c2luZyBhcyB2YXJpYWJsZSBpbiBwZXJ0dXJiYXRpb25zXG4gICAgb3Iga2luZXRpYyByYXRlICopXG4gIHNpZ25hdHVyZXM6ICdhZ2VudF9zaWcgbGlzdDsgICgqKiBhZ2VudCBzaWduYXR1cmUgZGVjbGFyYXRpb24gKilcbiAgcnVsZXM6IChzdHJpbmcgTG9jLmFubm90ZWQgb3B0aW9uICogJ3J1bGUgTG9jLmFubm90ZWQpIGxpc3Q7XG4gICAgICAoKiogcnVsZXMgKHBvc3NpYmx5IG5hbWVkKTogW25hbWVfb3B0aW9uICogcnVsZV9kZWZpbml0aW9uXSAqKVxuICBvYnNlcnZhYmxlczogKCdwYXR0ZXJuLCAnaWQpIEFsZ19leHByLmUgTG9jLmFubm90ZWQgbGlzdDtcbiAgICAgICgqKiBsaXN0IG9mIHBhdHRlcm5zIHRvIHBsb3QgKilcbiAgaW5pdDogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkKSBpbml0X3N0YXRlbWVudCBsaXN0O1xuICAgICAgKCoqIGluaXRpYWwgZ3JhcGggZGVjbGFyYXRpb24gKilcbiAgcGVydHVyYmF0aW9uczogKCdwYXR0ZXJuLCAnbWl4dHVyZSwgJ2lkLCAncnVsZSkgcGVydHVyYmF0aW9uIGxpc3Q7XG4gIGNvbmZpZ3VyYXRpb25zOiBjb25maWd1cmF0aW9uIGxpc3Q7XG4gIHRva2Vuczogc3RyaW5nIExvYy5hbm5vdGVkIGxpc3Q7XG4gIHZvbHVtZXM6IChzdHJpbmcgKiBmbG9hdCAqIHN0cmluZykgbGlzdDtcbn1cblxudHlwZSBwYXJzaW5nX2NvbXBpbCA9IChhZ2VudCwgYWdlbnRfc2lnLCBtaXh0dXJlLCBtaXh0dXJlLCBzdHJpbmcsIHJ1bGUpIGNvbXBpbFxuXG50eXBlIHBhcnNpbmdfaW5zdHJ1Y3Rpb24gPVxuICAoYWdlbnQsIGFnZW50X3NpZywgbWl4dHVyZSwgbWl4dHVyZSwgc3RyaW5nLCBydWxlKSBpbnN0cnVjdGlvblxuXG5sZXQgbm9fbW9yZV9zaXRlX29uX3JpZ2h0IGVycm9yIGxlZnQgcmlnaHQgPVxuICBMaXN0LmZvcl9hbGxcbiAgICAoZnVuY3Rpb25cbiAgICAgIHwgQ291bnRlciBfIC0+IHRydWVcbiAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgIExpc3QuZXhpc3RzXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IENvdW50ZXIgXyAtPiBmYWxzZVxuICAgICAgICAgICAgfCBQb3J0IHAnIC0+IGZzdCBwLnBvcnRfbmFtZSA9IGZzdCBwJy5wb3J0X25hbWUpXG4gICAgICAgICAgbGVmdFxuICAgICAgICB8fFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGVycm9yIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJTaXRlICdcIiBeIGZzdCBwLnBvcnRfbmFtZVxuICAgICAgICAgICAgICAgICAgIF4gXCInIHdhcyBub3QgbWVudGlvbm5lZCBpbiB0aGUgbGVmdC1oYW5kIHNpZGUuXCIsXG4gICAgICAgICAgICAgICAgICAgc25kIHAucG9ydF9uYW1lICkpXG4gICAgICAgIGluXG4gICAgICAgIGZhbHNlKVxuICAgIHJpZ2h0XG5cbmxldCBlbXB0eV9jb21waWwgPVxuICB7XG4gICAgZmlsZW5hbWVzID0gW107XG4gICAgdmFyaWFibGVzID0gW107XG4gICAgc2lnbmF0dXJlcyA9IFtdO1xuICAgIHJ1bGVzID0gW107XG4gICAgaW5pdCA9IFtdO1xuICAgIG9ic2VydmFibGVzID0gW107XG4gICAgcGVydHVyYmF0aW9ucyA9IFtdO1xuICAgIGNvbmZpZ3VyYXRpb25zID0gW107XG4gICAgdG9rZW5zID0gW107XG4gICAgdm9sdW1lcyA9IFtdO1xuICB9XG5cbigqXG4gIGxldCByZXZlcnNlIHJlcyA9XG4gIGxldCBsX3BhdCA9IExpc3QucmV2ICFyZXMucGF0dGVybnNcbiAgYW5kIGxfc2lnID0gTGlzdC5yZXYgIXJlcy5zaWduYXR1cmVzXG4gIGFuZCBsX3J1bCA9IExpc3QucmV2ICFyZXMucnVsZXNcbiAgYW5kIGxfaW5pID0gTGlzdC5yZXYgIXJlcy5pbml0XG4gIGFuZCBsX29icyA9IExpc3QucmV2ICFyZXMub2JzZXJ2YWJsZXNcbiAgaW5cbiAgcmVzOj17cGF0dGVybnM9bF9wYXQgOyBzaWduYXR1cmVzPWxfc2lnIDtcbiAgICAgICAgcnVsZXM9bF9ydWwgOyBpbml0ID0gbF9pbmkgOyBvYnNlcnZhYmxlcyA9IGxfb2JzfVxuKilcblxubGV0IHByaW50X2FzdF9saW5rIG1vZF9sIGYgbCA9XG4gIGlmIGwgPD4gW10gfHwgbW9kX2wgPD4gTm9uZSB0aGVuXG4gICAgRm9ybWF0LmZwcmludGYgZiBcIlslYSVhXVwiXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHgsIF8pIC0+XG4gICAgICAgICAgIExLYXBwYS5wcmludF9saW5rXG4gICAgICAgICAgICAgKGZ1biBfIGYgKHgsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4KVxuICAgICAgICAgICAgIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHgpXG4gICAgICAgICAgICAgKGZ1biBfICgpIC0+ICgpKVxuICAgICAgICAgICAgIGYgeCkpXG4gICAgICBsXG4gICAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIChmdW4gZiB4IC0+XG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIvJWFcIlxuICAgICAgICAgICAgIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgfCBTb21lIChsLCBfKSAtPiBGb3JtYXQucHBfcHJpbnRfaW50IGYgbFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi5cIilcbiAgICAgICAgICAgICB4KSlcbiAgICAgIG1vZF9sXG5cbmxldCBwcmludF9hc3RfaW50ZXJuYWwgbW9kX2kgZiBsID1cbiAgaWYgbCA8PiBbXSB8fCBtb2RfaSA8PiBOb25lIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwieyVhJWF9XCJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAtPiBmdW5jdGlvblxuICAgICAgICAgfCBTb21lIHgsIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIHhcbiAgICAgICAgIHwgTm9uZSwgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIjXCIpKVxuICAgICAgbFxuICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKGksIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJXNcIiBpKSlcbiAgICAgIG1vZF9pXG5cbmxldCBwcmludF9hc3RfcG9ydCBmIHAgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJXMlYSVhXCIgKGZzdCBwLnBvcnRfbmFtZSlcbiAgICAocHJpbnRfYXN0X2ludGVybmFsIHAucG9ydF9pbnRfbW9kKVxuICAgIHAucG9ydF9pbnRcbiAgICAocHJpbnRfYXN0X2xpbmsgcC5wb3J0X2xpbmtfbW9kKVxuICAgIHAucG9ydF9saW5rXG5cbmxldCBwcmludF9jb3VudGVyX3Rlc3QgZiA9IGZ1bmN0aW9uXG4gIHwgQ0VRIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj0laVwiIHhcbiAgfCBDR1RFIHgsIF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIj49JWlcIiB4XG4gIHwgQ0xURSB4LCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI8PSVpXCIgeFxuICB8IENWQVIgeCwgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiPSVzXCIgeFxuXG5sZXQgcHJpbnRfY291bnRlcl9taW4gZiAoeCwgXykgPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIj0lZFwiIHhcbiAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCI9LW9vXCJcblxubGV0IHByaW50X2NvdW50ZXJfbWF4IGYgKHgsIF8pID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgU29tZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIvJWRcIiB4XG4gIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLytvb1wiXG5cbmxldCBwcmludF9jb3VudGVyX2RlZmF1bHQgbWluIGYgeCA9XG4gIG1hdGNoIG1pbiB3aXRoXG4gIHwgU29tZSAoU29tZSBpLCBfKSB3aGVuIGkgPSB4IC0+ICgpXG4gIHwgTm9uZSB8IFNvbWUgXyAtPiBGb3JtYXQuZnByaW50ZiBmIFwiKCVkKVwiIHhcblxubGV0IHByaW50X2NvdW50ZXJfZGVsdGEgdGVzdCBmIChkZWx0YSwgXykgPVxuICBpZiBkZWx0YSA8PiAwIHRoZW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJWErPSVkXCJcbiAgICAgIChQcC5vcHRpb24gfndpdGhfc3BhY2U6ZmFsc2UgKGZ1biBmIF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiL1wiKSlcbiAgICAgIHRlc3QgZGVsdGFcblxubGV0IHByaW50X2NvdW50ZXIgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzeyVhJWF9XCIgKGZzdCBjLmNvdW50ZXJfbmFtZSlcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIHByaW50X2NvdW50ZXJfdGVzdClcbiAgICBjLmNvdW50ZXJfdGVzdFxuICAgIChwcmludF9jb3VudGVyX2RlbHRhIGMuY291bnRlcl90ZXN0KVxuICAgIGMuY291bnRlcl9kZWx0YVxuXG5sZXQgcHJpbnRfY291bnRlcl9zaWcgZiBjID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzeyVhJWF9JWFcIiAoZnN0IGMuY291bnRlcl9zaWdfbmFtZSlcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlOmZhbHNlIHByaW50X2NvdW50ZXJfbWluKVxuICAgIGMuY291bnRlcl9zaWdfbWluXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSBwcmludF9jb3VudGVyX21heClcbiAgICBjLmNvdW50ZXJfc2lnX21heFxuICAgIChwcmludF9jb3VudGVyX2RlZmF1bHQgYy5jb3VudGVyX3NpZ19taW4pXG4gICAgYy5jb3VudGVyX3NpZ19kZWZhdWx0XG5cbmxldCBwcmludF9hc3Rfc2l0ZSB+cHJpbnRfY291bnRlciBmID0gZnVuY3Rpb25cbiAgfCBQb3J0IHAgLT4gcHJpbnRfYXN0X3BvcnQgZiBwXG4gIHwgQ291bnRlciBjIC0+IHByaW50X2NvdW50ZXIgZiBjXG5cbmxldCBzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgPVxuICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmdcblxubGV0IHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzID1cbiAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpXG5cbmxldCBzdHJpbmdfb3B0aW9uX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzID1cbiAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9zdHJpbmcpXG5cbmxldCBzdHJpbmdfb3B0aW9uX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMgPVxuICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpKVxuXG5sZXQgY291bnRlcl90ZXN0X3RvX2pzb24gPSBmdW5jdGlvblxuICB8IENFUSB4IC0+IGBBc3NvYyBbIFwidGVzdFwiLCBgU3RyaW5nIFwiZXFcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDR1RFIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDTFRFIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJsdGVcIjsgXCJ2YWxcIiwgYEludCB4IF1cbiAgfCBDVkFSIHggLT4gYEFzc29jIFsgXCJ0ZXN0XCIsIGBTdHJpbmcgXCJlcVwiOyBcInZhbFwiLCBgU3RyaW5nIHggXVxuXG5sZXQgY291bnRlcl90ZXN0X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpOyAoXCJ2YWxcIiwgYEludCB4KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBJbnQgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpIF0gLT5cbiAgICBDRVEgeFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJndGVcIikgXVxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImd0ZVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXSAtPlxuICAgIENHVEUgeFxuICB8IGBBc3NvYyBbIChcInZhbFwiLCBgSW50IHgpOyAoXCJ0ZXN0XCIsIGBTdHJpbmcgXCJsdGVcIikgXVxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImx0ZVwiKTsgKFwidmFsXCIsIGBJbnQgeCkgXSAtPlxuICAgIENMVEUgeFxuICB8IGBBc3NvYyBbIChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpOyAoXCJ2YWxcIiwgYFN0cmluZyB4KSBdXG4gIHwgYEFzc29jIFsgKFwidmFsXCIsIGBTdHJpbmcgeCk7IChcInRlc3RcIiwgYFN0cmluZyBcImVxXCIpIF0gLT5cbiAgICBDVkFSIHhcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBjb3VudGVyIHRlc3RcIiwgeCkpXG5cbmxldCBwb3J0X3RvX2pzb24gZmlsZW5hbWVzIHAgPVxuICBsZXQgbW9kX2wgPVxuICAgIEpzb25VdGlsLm9mX29wdGlvbiAoZnVuY3Rpb25cbiAgICAgIHwgTm9uZSAtPiBgU3RyaW5nIFwiRlJFRVwiXG4gICAgICB8IFNvbWUgeCAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9pbnQgeClcbiAgaW5cbiAgbGV0IG1vZF9pID1cbiAgICBKc29uVXRpbC5vZl9vcHRpb24gKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIEpzb25VdGlsLm9mX3N0cmluZylcbiAgaW5cbiAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICBbXG4gICAgICBcInBvcnRfbmFtZVwiLCBzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgcC5wb3J0X25hbWU7XG4gICAgICAoIFwicG9ydF9pbnRcIixcbiAgICAgICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIFwic3RhdGVcIixcbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgIChzdHJpbmdfb3B0aW9uX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIHAucG9ydF9pbnQgKTtcbiAgICAgICAgICAgIFwibW9kXCIsIG1vZF9pIHAucG9ydF9pbnRfbW9kO1xuICAgICAgICAgIF0gKTtcbiAgICAgICggXCJwb3J0X2xpbmtcIixcbiAgICAgICAgSnNvblV0aWwuc21hcnRfYXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIFwic3RhdGVcIixcbiAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChMS2FwcGEubGlua190b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIC0+IHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKCkgLT4gW10pKSlcbiAgICAgICAgICAgICAgICBwLnBvcnRfbGluayApO1xuICAgICAgICAgICAgXCJtb2RcIiwgbW9kX2wgcC5wb3J0X2xpbmtfbW9kO1xuICAgICAgICAgIF0gKTtcbiAgICBdXG5cbmxldCBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBsID1cbiAgbGV0IG1vZF9sID1cbiAgICBKc29uVXRpbC50b19vcHRpb24gKGZ1bmN0aW9uXG4gICAgICB8IGBTdHJpbmcgXCJGUkVFXCIgLT4gTm9uZVxuICAgICAgfCB4IC0+XG4gICAgICAgIFNvbWVcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX2ludCA/ZXJyb3JfbXNnOk5vbmUpIHgpKVxuICBpblxuICBsZXQgbW9kX2kgPVxuICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSlcbiAgaW5cbiAgbGV0IHBvcnRfaW50LCBwb3J0X2ludF9tb2QgPVxuICAgIG1hdGNoIGkgd2l0aFxuICAgIHwgYEFzc29jIFtdIHwgYE51bGwgLT4gW10sIE5vbmVcbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGkpIF0gLT5cbiAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykgaSwgTm9uZVxuICAgIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pIF0gLT4gW10sIG1vZF9pIG1cbiAgICB8IGBBc3NvYyBbIChcInN0YXRlXCIsIGkpOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwic3RhdGVcIiwgaSkgXVxuICAgICAgLT5cbiAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHN0cmluZ19vcHRpb25fYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykgaSwgbW9kX2kgbVxuICAgIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgaW50ZXJuYWwgc3RhdGVzXCIsIGkpKVxuICBpblxuICBsZXQgcG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kID1cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IGBBc3NvYyBbXSB8IGBOdWxsIC0+IFtdLCBOb25lXG4gICAgfCBgQXNzb2MgWyAoXCJzdGF0ZVwiLCBsKSBdIC0+XG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoTEthcHBhLmxpbmtfb2ZfanNvblxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKSkpXG4gICAgICAgICAgbCxcbiAgICAgICAgTm9uZSApXG4gICAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSkgXSAtPiBbXSwgbW9kX2wgbVxuICAgIHwgYEFzc29jIFsgKFwic3RhdGVcIiwgbCk7IChcIm1vZFwiLCBtKSBdIHwgYEFzc29jIFsgKFwibW9kXCIsIG0pOyAoXCJzdGF0ZVwiLCBsKSBdXG4gICAgICAtPlxuICAgICAgKCBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKExLYXBwYS5saW5rX29mX2pzb25cbiAgICAgICAgICAgICAgICAoZnVuIF8gLT4gc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChmdW4gXyAtPiAoKSkpKVxuICAgICAgICAgIGwsXG4gICAgICAgIG1vZF9sIG0gKVxuICAgIHwgXyAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgbGluayBzdGF0ZXNcIiwgaSkpXG4gIGluXG4gIFBvcnRcbiAgICB7XG4gICAgICBwb3J0X25hbWUgPSBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcyBuO1xuICAgICAgcG9ydF9pbnQ7XG4gICAgICBwb3J0X2ludF9tb2Q7XG4gICAgICBwb3J0X2xpbms7XG4gICAgICBwb3J0X2xpbmtfbW9kO1xuICAgIH1cblxubGV0IHNpdGVfc2lnX29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgIF1cbiAgfCBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKFwiY291bnRlcl9kZWZhdWx0XCIsIGRlZmF1bHQpO1xuICAgICAgICAoXCJjb3VudGVyX21pblwiLCBtaW4pO1xuICAgICAgICAoXCJjb3VudGVyX21heFwiLCBtYXgpO1xuICAgICAgICAoXCJjb3VudGVyX3NpZ19uYW1lXCIsIG4pO1xuICAgICAgXVxuICB8IGBBc3NvY1xuICAgICAgW1xuICAgICAgICAoXCJjb3VudGVyX2RlZmF1bHRcIiwgZGVmYXVsdCk7XG4gICAgICAgIChcImNvdW50ZXJfc2lnX25hbWVcIiwgbik7XG4gICAgICAgIChcImNvdW50ZXJfbWluXCIsIG1pbik7XG4gICAgICAgIChcImNvdW50ZXJfbWF4XCIsIG1heCk7XG4gICAgICBdXG4gIHwgYEFzc29jXG4gICAgICBbXG4gICAgICAgIChcImNvdW50ZXJfZGVmYXVsdFwiLCBkZWZhdWx0KTtcbiAgICAgICAgKFwiY291bnRlcl9zaWdfbmFtZVwiLCBuKTtcbiAgICAgICAgKFwiY291bnRlcl9tYXhcIiwgbWF4KTtcbiAgICAgICAgKFwiY291bnRlcl9taW5cIiwgbWluKTtcbiAgICAgIF0gLT5cbiAgICBDb3VudGVyXG4gICAgICB7XG4gICAgICAgIGNvdW50ZXJfc2lnX25hbWUgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX3N0cmluZyBuO1xuICAgICAgICBjb3VudGVyX3NpZ19taW4gPVxuICAgICAgICAgIFlvanNvbi5CYXNpYy5VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCkpXG4gICAgICAgICAgICBtaW47XG4gICAgICAgIGNvdW50ZXJfc2lnX21heCA9XG4gICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC50b19vcHRpb24gWW9qc29uLkJhc2ljLlV0aWwudG9faW50KSlcbiAgICAgICAgICAgIG1heDtcbiAgICAgICAgY291bnRlcl9zaWdfZGVmYXVsdCA9IFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBkZWZhdWx0O1xuICAgICAgICBjb3VudGVyX3NpZ192aXNpYmxlID0gRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICB9XG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9saW5rXCIsIGwpOyAoXCJwb3J0X25hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGkgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGBOdWxsXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKSBdIC0+IGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBgTnVsbCBgTnVsbFxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IHNpdGVfb2ZfanNvbiBmaWxlbmFtZXMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfbmFtZVwiLCBuKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfZGVsdGFcIiwgZCk7IChcImNvdW50ZXJfdGVzdFwiLCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfZGVsdGFcIiwgZCkgXVxuICB8IGBBc3NvYyBbIChcImNvdW50ZXJfdGVzdFwiLCB0KTsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl9uYW1lXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJjb3VudGVyX2RlbHRhXCIsIGQpOyAoXCJjb3VudGVyX25hbWVcIiwgbik7IChcImNvdW50ZXJfdGVzdFwiLCB0KSBdXG4gIHwgYEFzc29jIFsgKFwiY291bnRlcl9kZWx0YVwiLCBkKTsgKFwiY291bnRlcl90ZXN0XCIsIHQpOyAoXCJjb3VudGVyX25hbWVcIiwgbikgXSAtPlxuICAgIENvdW50ZXJcbiAgICAgIHtcbiAgICAgICAgY291bnRlcl9uYW1lID1cbiAgICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBZb2pzb24uQmFzaWMuVXRpbC50b19zdHJpbmcgbjtcbiAgICAgICAgY291bnRlcl90ZXN0ID1cbiAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBjb3VudGVyX3Rlc3Rfb2ZfanNvbilcbiAgICAgICAgICAgIHQ7XG4gICAgICAgIGNvdW50ZXJfZGVsdGEgPVxuICAgICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIFlvanNvbi5CYXNpYy5VdGlsLnRvX2ludCBkO1xuICAgICAgfVxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbGlua1wiLCBsKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2xpbmtcIiwgbCkgXVxuICB8IGBBc3NvYyBbIChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pOyAoXCJwb3J0X2ludFwiLCBpKSBdXG4gIHwgYEFzc29jIFsgKFwicG9ydF9pbnRcIiwgaSk7IChcInBvcnRfbGlua1wiLCBsKTsgKFwicG9ydF9uYW1lXCIsIG4pIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfaW50XCIsIGkpOyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPlxuICAgIGJ1aWxkX3BvcnRfb2ZfanNvbiBmaWxlbmFtZXMgbiBpIGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbik7IChcInBvcnRfaW50XCIsIGkpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2ludFwiLCBpKTsgKFwicG9ydF9uYW1lXCIsIG4pIF0gLT5cbiAgICBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gaSBgTnVsbFxuICB8IGBBc3NvYyBbIChcInBvcnRfbmFtZVwiLCBuKTsgKFwicG9ydF9saW5rXCIsIGwpIF1cbiAgfCBgQXNzb2MgWyAoXCJwb3J0X2xpbmtcIiwgbCk7IChcInBvcnRfbmFtZVwiLCBuKSBdIC0+XG4gICAgYnVpbGRfcG9ydF9vZl9qc29uIGZpbGVuYW1lcyBuIGBOdWxsIGxcbiAgfCBgQXNzb2MgWyAoXCJwb3J0X25hbWVcIiwgbikgXSAtPiBidWlsZF9wb3J0X29mX2pzb24gZmlsZW5hbWVzIG4gYE51bGwgYE51bGxcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhbiBBU1QgYWdlbnRcIiwgeCkpXG5cbmxldCBjb3VudGVyX3RvX2pzb24gfmZpbGVuYW1lcyBjID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNvdW50ZXJfbmFtZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgYy5jb3VudGVyX25hbWUgKTtcbiAgICAgICggXCJjb3VudGVyX3Rlc3RcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGNvdW50ZXJfdGVzdF90b19qc29uKVxuICAgICAgICAgIGMuY291bnRlcl90ZXN0ICk7XG4gICAgICAoIFwiY291bnRlcl9kZWx0YVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9pbnQgYy5jb3VudGVyX2RlbHRhICk7XG4gICAgXVxuXG5sZXQgY291bnRlcl9zaWdfdG9fanNvbiB+ZmlsZW5hbWVzIGMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwiY291bnRlcl9zaWdfbmFtZVwiLFxuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lcyBKc29uVXRpbC5vZl9zdHJpbmcgYy5jb3VudGVyX3NpZ19uYW1lICk7XG4gICAgICAoIFwiY291bnRlcl9taW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpKVxuICAgICAgICAgIGMuY291bnRlcl9zaWdfbWluICk7XG4gICAgICAoIFwiY291bnRlcl9tYXhcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQpKVxuICAgICAgICAgIGMuY291bnRlcl9zaWdfbWF4ICk7XG4gICAgICBcImNvdW50ZXJfZGVmYXVsdFwiLCBKc29uVXRpbC5vZl9pbnQgYy5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgIF1cblxubGV0IHNpdGVfdG9fanNvbiB+Y291bnRlcl90b19qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgUG9ydCBwIC0+IHBvcnRfdG9fanNvbiBmaWxlbmFtZXMgcFxuICB8IENvdW50ZXIgYyAtPiBjb3VudGVyX3RvX2pzb24gfmZpbGVuYW1lcyBjXG5cbmxldCBwcmludF9hZ2VudF9tb2QgZiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIitcIlxuICB8IEVyYXNlIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIi1cIlxuICB8IE5vTW9kIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlwiXG5cbmxldCBwcmludF9hc3RfYWdlbnQgfnByaW50X2NvdW50ZXIgZiA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiLlwiXG4gIHwgUHJlc2VudCAoKGFnZW50X25hbWUsIF8pLCBsLCBtKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlcyglYSklYVwiIGFnZW50X25hbWVcbiAgICAgIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIFwiKSAocHJpbnRfYXN0X3NpdGUgfnByaW50X2NvdW50ZXIpKVxuICAgICAgbCBwcmludF9hZ2VudF9tb2QgbVxuXG5sZXQgYWdlbnRfbW9kX3RvX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgQ3JlYXRlIC0+IGBTdHJpbmcgXCJjcmVhdGVkXCJcbiAgfCBFcmFzZSAtPiBgU3RyaW5nIFwiZXJhc2VcIlxuICB8IE5vTW9kIC0+IGBTdHJpbmcgXCJub19tb2RcIlxuXG5sZXQgYWdlbnRfbW9kX29mX3lvanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcImNyZWF0ZWRcIiAtPiBDcmVhdGVcbiAgfCBgU3RyaW5nIFwiZXJhc2VcIiAtPiBFcmFzZVxuICB8IGBTdHJpbmcgXCJub19tb2RcIiAtPiBOb01vZFxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgYWdlbnQgbW9kaWZpY2F0aW9uXCIsIHgpKVxuXG5sZXQgYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uIGZpbGVuYW1lcyA9IGZ1bmN0aW9uXG4gIHwgQWJzZW50IF8gLT4gYE51bGxcbiAgfCBQcmVzZW50IChuYSwgbCwgbSkgLT5cbiAgICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgICAgW1xuICAgICAgICBcIm5hbWVcIiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgSnNvblV0aWwub2Zfc3RyaW5nIG5hO1xuICAgICAgICBcInNpZ1wiLFxuICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgIChzaXRlX3RvX2pzb24gfmNvdW50ZXJfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICBsO1xuICAgICAgICBcIm1vZFwiLCBhZ2VudF9tb2RfdG9feW9qc29uIG07XG4gICAgICBdXG5cbmxldCBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb24gZmlsZW5hbWVzID0gZnVuY3Rpb25cbiAgfCBgTnVsbCAtPiBBYnNlbnQgTG9jLmR1bW15XG4gIHwgYEFzc29jIFsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpOyAoXCJtb2RcIiwgbSkgXVxuICB8IGBBc3NvYyBbIChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKTsgKFwibW9kXCIsIG0pIF1cbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSk7IChcInNpZ1wiLCBzKSBdXG4gIHwgYEFzc29jIFsgKFwic2lnXCIsIHMpOyAoXCJtb2RcIiwgbSk7IChcIm5hbWVcIiwgbikgXVxuICB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpIF1cbiAgfCBgQXNzb2MgWyAoXCJtb2RcIiwgbSk7IChcInNpZ1wiLCBzKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgSnNvblV0aWwudG9fbGlzdCAoc2l0ZV9vZl9qc29uIGZpbGVuYW1lcykgcyxcbiAgICAgICAgYWdlbnRfbW9kX29mX3lvanNvbiBtIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pOyAoXCJtb2RcIiwgbSkgXSB8IGBBc3NvYyBbIChcIm1vZFwiLCBtKTsgKFwibmFtZVwiLCBuKSBdIC0+XG4gICAgUHJlc2VudFxuICAgICAgKCBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkgbixcbiAgICAgICAgW10sXG4gICAgICAgIGFnZW50X21vZF9vZl95b2pzb24gbSApXG4gIHwgYEFzc29jIFsgKFwibmFtZVwiLCBuKTsgKFwic2lnXCIsIHMpIF0gfCBgQXNzb2MgWyAoXCJzaWdcIiwgcyk7IChcIm5hbWVcIiwgbikgXSAtPlxuICAgIFByZXNlbnRcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUpIG4sXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3QgKHNpdGVfb2ZfanNvbiBmaWxlbmFtZXMpIHMsXG4gICAgICAgIE5vTW9kIClcbiAgfCBgQXNzb2MgWyAoXCJuYW1lXCIsIG4pIF0gLT5cbiAgICBQcmVzZW50XG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIChKc29uVXRpbC50b19zdHJpbmcgP2Vycm9yX21zZzpOb25lKSBuLFxuICAgICAgICBbXSxcbiAgICAgICAgTm9Nb2QgKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGFuIEFTVCBhZ2VudFwiLCB4KSlcblxubGV0IGFnZW50X3NpZ19vZl9qc29uID0gYWdlbnRfb2ZfanNvbiB+c2l0ZV9vZl9qc29uOnNpdGVfc2lnX29mX2pzb25cblxuKCogVE8gRE8gVHJhbnNmZXIgYmFjayBpbnZlcnRlZCBjb3VudGVycyAqKVxubGV0IGFnZW50X3NpZ190b19qc29uID1cbiAgYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uOmNvdW50ZXJfc2lnX3RvX2pzb25cblxubGV0IGFnZW50X29mX2pzb24gPSBhZ2VudF9vZl9qc29uIH5zaXRlX29mX2pzb25cbmxldCBhZ2VudF90b19qc29uID0gYWdlbnRfdG9fanNvbiB+Y291bnRlcl90b19qc29uXG5cbmxldCBwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyID1cbiAgUHAubGlzdFxuICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcXEAgXCIpXG4gICAgKFBwLmxpc3QgUHAuY29tbWEgKHByaW50X2FzdF9hZ2VudCB+cHJpbnRfY291bnRlcikpXG5cbmxldCB0b19lcmFzZWRfbWl4dHVyZSA9XG4gIExpc3QubWFwXG4gICAgKExpc3QubWFwIChmdW5jdGlvblxuICAgICAgfCBBYnNlbnQgcG9zIC0+IEFic2VudCBwb3NcbiAgICAgIHwgUHJlc2VudCAobiwgcywgXykgLT4gUHJlc2VudCAobiwgcywgRXJhc2UpKSlcblxubGV0IHRvX2NyZWF0ZWRfbWl4dHVyZSA9XG4gIExpc3QubWFwXG4gICAgKExpc3QubWFwIChmdW5jdGlvblxuICAgICAgfCBBYnNlbnQgcG9zIC0+IEFic2VudCBwb3NcbiAgICAgIHwgUHJlc2VudCAobiwgcywgXykgLT4gUHJlc2VudCAobiwgcywgQ3JlYXRlKSkpXG5cbmxldCB0b19kdW1teV91c2VyX2xpbmsgPSBmdW5jdGlvblxuICB8IFtdIHwgWyAoTEthcHBhLkxOS19BTlksIF8pIF0gLT4gVXNlcl9ncmFwaC5XSEFURVZFUlxuICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSAtPiBVc2VyX2dyYXBoLkxJTktTIFtdXG4gIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoeCwgXyksIF8pIF0gLT4gVXNlcl9ncmFwaC5MSU5LUyBbICgtMSwgLTEpLCB4IF1cbiAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT4gVXNlcl9ncmFwaC5MSU5LUyBbXVxuICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXSAtPiBVc2VyX2dyYXBoLlNPTUVcbiAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKCh0eSwgXyksIChzaSwgXykpLCBfKSBdIC0+IFVzZXJfZ3JhcGguVFlQRSAodHksIHNpKVxuICB8IF8gOjogXyA6OiBfIC0+IGFzc2VydCBmYWxzZSAoKiBUT0RPICopXG5cbmxldCB0b19kdW1teV91c2VyX2ludGVybmFsID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBTb21lIFtdXG4gIHwgWyAoTm9uZSwgXykgXSAtPiBOb25lXG4gIHwgWyAoU29tZSBzdCwgXykgXSAtPiBTb21lIFsgc3QgXVxuICB8IF8gOjogXyA6OiBfIGFzIGwgLT4gU29tZSAoTGlzdF91dGlsLm1hcF9vcHRpb24gZnN0IGwpXG5cbmxldCB0b19kdW1teV91c2VyX3NpdGUgPSBmdW5jdGlvblxuICB8IFBvcnQgeyBwb3J0X25hbWU7IHBvcnRfaW50OyBwb3J0X2ludF9tb2QgPSBfOyBwb3J0X2xpbms7IHBvcnRfbGlua19tb2QgPSBfIH1cbiAgICAtPlxuICAgIHtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV9uYW1lID0gZnN0IHBvcnRfbmFtZTtcbiAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAge1xuICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gdG9fZHVtbXlfdXNlcl9saW5rIHBvcnRfbGluaztcbiAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9zdGF0ZXMgPSB0b19kdW1teV91c2VyX2ludGVybmFsIHBvcnRfaW50O1xuICAgICAgICAgIH07XG4gICAgfVxuICB8IENvdW50ZXIgeyBjb3VudGVyX25hbWU7IGNvdW50ZXJfdGVzdCA9IF87IGNvdW50ZXJfZGVsdGEgPSBfIH0gLT5cbiAgICB7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9IGZzdCBjb3VudGVyX25hbWU7XG4gICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9IFVzZXJfZ3JhcGguQ291bnRlciAoLTEpO1xuICAgICAgKCogVE9ETyAqKVxuICAgIH1cblxubGV0IHRvX2R1bW15X3VzZXJfYWdlbnQgPSBmdW5jdGlvblxuICB8IEFic2VudCBfIC0+IE5vbmVcbiAgfCBQcmVzZW50ICgobmEsIF8pLCBzLCBfbW9kcykgLT5cbiAgICBTb21lXG4gICAgICB7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV90eXBlID0gbmE7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV9pZCA9IE5vbmU7XG4gICAgICAgIFVzZXJfZ3JhcGgubm9kZV9zaXRlcyA9IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IHRvX2R1bW15X3VzZXJfc2l0ZSBzO1xuICAgICAgfVxuXG5sZXQgc2V0dXBfbGluayBtICgobGluZSwgcm93KSwgc2l0ZSkgdmEgPVxuICBtYXRjaCBtLihsaW5lKS4ocm93KSB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyBVc2VyX2dyYXBoLm5vZGVfc2l0ZXM7IF8gfSAtPlxuICAgIGxldCBzID0gbm9kZV9zaXRlcy4oc2l0ZSkgaW5cbiAgICAobWF0Y2ggcy5Vc2VyX2dyYXBoLnNpdGVfdHlwZSB3aXRoXG4gICAgfCBVc2VyX2dyYXBoLkNvdW50ZXIgXyAtPiAoKVxuICAgIHwgVXNlcl9ncmFwaC5Qb3J0IHAgLT5cbiAgICAgIG5vZGVfc2l0ZXMuKHNpdGUpIDwtXG4gICAgICAgIHtcbiAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfbmFtZSA9IHMuVXNlcl9ncmFwaC5zaXRlX25hbWU7XG4gICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPSBVc2VyX2dyYXBoLkxJTktTIFsgdmEgXTtcbiAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfc3RhdGVzID0gcC5Vc2VyX2dyYXBoLnBvcnRfc3RhdGVzO1xuICAgICAgICAgICAgICB9O1xuICAgICAgICB9KVxuXG5sZXQgbWl4dHVyZV90b191c2VyX2dyYXBoIG0gPVxuICBsZXQgb3V0ID1cbiAgICBUb29scy5hcnJheV9tYXBfb2ZfbGlzdCAoVG9vbHMuYXJyYXlfbWFwX29mX2xpc3QgdG9fZHVtbXlfdXNlcl9hZ2VudCkgbVxuICBpblxuICBsZXQgYWNjID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGxpbmUgLT5cbiAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIHJvdyBhY2MgLT4gZnVuY3Rpb25cbiAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgfCBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzOyBfIH0gLT5cbiAgICAgICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgICAgICAgKGZ1biBzaXRlIGFjYyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7IFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgW107IF8gfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwge1xuICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5Qb3J0XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGgucG9ydF9saW5rcyA9IFVzZXJfZ3JhcGguTElOS1MgKF8gOjogXyA6OiBfKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgICAgICAgICB8IHtcbiAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5zaXRlX3R5cGUgPVxuICAgICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLnBvcnRfbGlua3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggVXNlcl9ncmFwaC5XSEFURVZFUiB8IFVzZXJfZ3JhcGguU09NRVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5UWVBFIChfLCBfKSApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBfO1xuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgIHwgeyBVc2VyX2dyYXBoLnNpdGVfdHlwZSA9IFVzZXJfZ3JhcGguQ291bnRlciBfOyBfIH0gLT4gYWNjXG4gICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgIFVzZXJfZ3JhcGguc2l0ZV90eXBlID1cbiAgICAgICAgICAgICAgICAgICAgICBVc2VyX2dyYXBoLlBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcl9ncmFwaC5wb3J0X2xpbmtzID0gVXNlcl9ncmFwaC5MSU5LUyBbIChfLCBpZCkgXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIF87XG4gICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAucG9wIGlkIGFjYyB3aXRoXG4gICAgICAgICAgICAgICAgICB8IE5vbmUsIGFjYycgLT4gTW9kcy5JbnRNYXAuYWRkIGlkICgobGluZSwgcm93KSwgc2l0ZSkgYWNjJ1xuICAgICAgICAgICAgICAgICAgfCBTb21lIHZhLCBhY2MnIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCB2YScgPSAobGluZSwgcm93KSwgc2l0ZSBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBzZXR1cF9saW5rIG91dCB2YSB2YScgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gc2V0dXBfbGluayBvdXQgdmEnIHZhIGluXG4gICAgICAgICAgICAgICAgICAgIGFjYycpKVxuICAgICAgICAgICAgICBhY2Mgbm9kZV9zaXRlcykpXG4gICAgICBNb2RzLkludE1hcC5lbXB0eSBvdXRcbiAgaW5cbiAgbGV0ICgpID0gYXNzZXJ0IChNb2RzLkludE1hcC5pc19lbXB0eSBhY2MpIGluXG4gIG91dFxuXG5sZXQgaW5pdF90b19qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IElOSVRfTUlYIG0gLT5cbiAgICBgTGlzdCBbIGBTdHJpbmcgXCJtaXh0dXJlXCI7IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfbWl4IG0gXVxuICB8IElOSVRfVE9LIHQgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwidG9rZW5cIjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl92YXIpIHQ7XG4gICAgICBdXG5cbmxldCBpbml0X29mX2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwibWl4dHVyZVwiOyBtIF0gLT5cbiAgICBJTklUX01JWCAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJ0b2tlblwiOyB0IF0gLT5cbiAgICBJTklUX1RPS1xuICAgICAgKEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIklOSVRfVE9LXCIpXG4gICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl92YXIpXG4gICAgICAgICB0KVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW52YWxpZCBBc3QgaW5pdCBzdGF0ZW1lbnRcIiwgeCkpXG5cbmxldCBwcmludF90b2sgcHJfbWl4IHByX3RvayBwcl92YXIgZiAoKG5iLCBfKSwgKG4sIF8pKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlYSAlYVwiIChBbGdfZXhwci5wcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgbmIgcHJfdG9rIG5cblxubGV0IHByaW50X29uZV9zaXplIHRrIGYgbWl4ID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXQlYVwiXG4gICAgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpXG4gICAgbWl4XG4gICAgKGZ1biBmIC0+XG4gICAgICBtYXRjaCB0ayB3aXRoXG4gICAgICB8IFtdIC0+ICgpXG4gICAgICB8IF8gOjogXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgfCBcIilcbiAgICAoUHAubGlzdFxuICAgICAgIChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIgKyBcIilcbiAgICAgICAocHJpbnRfdG9rXG4gICAgICAgICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgICAgICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KSkpXG4gICAgdGtcblxubGV0IHByaW50X2Fycm93IGYgYmlkaXIgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgYmlkaXIgdGhlblxuICAgICAgIFwiPC0+XCJcbiAgICAgZWxzZVxuICAgICAgIFwiLT5cIilcblxubGV0IHByaW50X3Jhd19yYXRlIHByX21peCBwcl90b2sgcHJfdmFyIG9wIGYgKGRlZiwgXykgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiJWEldFwiIChBbGdfZXhwci5wcmludCBwcl9taXggcHJfdG9rIHByX3ZhcikgZGVmIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggb3Agd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKGQsIF8pIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIsICVhXCIgKEFsZ19leHByLnByaW50IHByX21peCBwcl90b2sgcHJfdmFyKSBkKVxuXG5sZXQgcHJpbnRfYXN0X2FsZ19leHByID1cbiAgQWxnX2V4cHIucHJpbnRcbiAgICAoZnVuIGYgbSAtPiBGb3JtYXQuZnByaW50ZiBmIFwifCVhfFwiIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKSBtKVxuICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmdcbiAgICAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJyVzJ1wiIHgpXG5cbmxldCBwcmludF9yYXRlc19vbmVfZGlyIHVuIGYgZGVmID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVhJXRcIlxuICAgIChwcmludF9yYXdfcmF0ZVxuICAgICAgIChmdW4gZiBtIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJ8JWF8XCIgKHByaW50X2FzdF9taXggfnByaW50X2NvdW50ZXIpIG0pXG4gICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZ1xuICAgICAgIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCInJXMnXCIgeClcbiAgICAgICBOb25lKVxuICAgIGRlZlxuICAgIChmdW4gZiAtPlxuICAgICAgbWF0Y2ggdW4gd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKChkLCBfKSwgbWF4X2Rpc3QpIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgeyVhJXR9XCIgcHJpbnRfYXN0X2FsZ19leHByIGQgKGZ1biBmIC0+XG4gICAgICAgICAgICBQcC5vcHRpb25cbiAgICAgICAgICAgICAgKGZ1biBmIChtZCwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIjolYVwiIHByaW50X2FzdF9hbGdfZXhwciBtZClcbiAgICAgICAgICAgICAgZiBtYXhfZGlzdCkpXG5cbmxldCBwcmludF9ydWxlX2NvbnRlbnQgfmJpZGlyZWN0aW9uYWwgZiA9IGZ1bmN0aW9uXG4gIHwgRWRpdCByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhIEBdXCIgKHByaW50X29uZV9zaXplIHIuZGVsdGFfdG9rZW4pIHIubWl4XG4gIHwgQXJyb3cgciAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhICVhQCAlYUBdXCJcbiAgICAgIChwcmludF9vbmVfc2l6ZSByLnJtX3Rva2VuKVxuICAgICAgci5saHMgcHJpbnRfYXJyb3cgYmlkaXJlY3Rpb25hbFxuICAgICAgKHByaW50X29uZV9zaXplIHIuYWRkX3Rva2VuKVxuICAgICAgci5yaHNcblxubGV0IHByaW50X2FzdF9ydWxlIGYgciA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxoPiVhIEBAICVhJXRAXVwiXG4gICAgKHByaW50X3J1bGVfY29udGVudCB+YmlkaXJlY3Rpb25hbDpyLmJpZGlyZWN0aW9uYWwpIHIucmV3cml0ZVxuICAgIChwcmludF9yYXRlc19vbmVfZGlyIHIua191bikgci5rX2RlZiAoZnVuIGYgLT5cbiAgICAgIG1hdGNoIHIua19vcCwgci5rX29wX3VuIHdpdGhcbiAgICAgIHwgTm9uZSwgTm9uZSAtPiAoKVxuICAgICAgfCBOb25lLCBfIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgLCAlYVwiXG4gICAgICAgICAgKHByaW50X3JhdGVzX29uZV9kaXIgci5rX29wX3VuKVxuICAgICAgICAgIChBbGdfZXhwci5jb25zdCBOYnIuemVybylcbiAgICAgIHwgU29tZSBhLCBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgLCAlYVwiIChwcmludF9yYXRlc19vbmVfZGlyIHIua19vcF91bikgYSlcblxubGV0IHByaW50X2NvbmZpZ3VyYXRpb24gZiAoKG4sIF8pLCBsKSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlZGVmOiBcXFwiJXNcXFwiIEBbJWFAXUBdXCIgblxuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoeCwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIlxcXCIlc1xcXCJcIiB4KSlcbiAgICBsXG5cbmxldCBwcmludF9pbml0IGYgPSBmdW5jdGlvblxuICB8IChuLCBfKSwgSU5JVF9NSVggKG0sIF8pIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVpbml0OiBAWyVhQF1AIEBbJWFAXUBdXCIgcHJpbnRfYXN0X2FsZ19leHByIG5cbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgbVxuICB8IChuLCBfKSwgSU5JVF9UT0sgdCAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlaW5pdDogJWEgJWFAXVwiIHByaW50X2FzdF9hbGdfZXhwciBuXG4gICAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKHgsIF8pIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiB4KSlcbiAgICAgIHRcblxubGV0IHByaW50X2FzdF9ib29sX2V4cHIgPVxuICBBbGdfZXhwci5wcmludF9ib29sXG4gICAgKGZ1biBmIG0gLT4gRm9ybWF0LmZwcmludGYgZiBcInwlYXxcIiAocHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlcikgbSlcbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nXG4gICAgKGZ1biBmIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIiclcydcIiB4KVxuXG5sZXQgcHJpbnRfcHJpbnRfZXhwciBmID1cbiAgbGV0IGF1eCBmID0gZnVuY3Rpb25cbiAgICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIChzdHIsIF8pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwiJXNcXFwiXCIgc3RyXG4gICAgfCBQcmltaXRpdmVzLkFsZ19wZXhwciAoYWxnLCBfKSAtPiBwcmludF9hc3RfYWxnX2V4cHIgZiBhbGdcbiAgaW5cbiAgZnVuY3Rpb25cbiAgfCBbXSAtPiAoKVxuICB8IFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0ciwgXykgXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiIFxcXCIlc1xcXCJcIiBzdHJcbiAgfCAoWyBQcmltaXRpdmVzLkFsZ19wZXhwciBfIF0gfCBfIDo6IF8gOjogXykgYXMgZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAIChAWyVhQF0pXCJcbiAgICAgIChQcC5saXN0IChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiLlwiKSBhdXgpXG4gICAgICBlXG5cbmxldCBwcmludF9tb2RpZiBmID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoKG4sIF8pLCAociwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRBUFBMWSBAWyVhQF0gQFslYUBdO1wiIHByaW50X2FzdF9hbGdfZXhwciBuXG4gICAgICAocHJpbnRfcnVsZV9jb250ZW50IH5iaWRpcmVjdGlvbmFsOmZhbHNlKVxuICAgICAgci5yZXdyaXRlXG4gIHwgVVBEQVRFICgocywgXyksIChuLCBfKSkgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiJFVQREFURSAnJXNAJyBAWyVhQF07XCIgcyBwcmludF9hc3RfYWxnX2V4cHIgblxuICB8IFNUT1AgcCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJFNUT1AlYTtcIiBwcmludF9wcmludF9leHByIHBcbiAgfCBTTkFQU0hPVCAocmF3LCBwKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkU05BUFNIT1QlYSV0O1wiIHByaW50X3ByaW50X2V4cHIgcCAoZnVuIGYgLT5cbiAgICAgICAgaWYgcmF3IHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiIFt0cnVlXVwiKVxuICB8IFBSSU5UIChbXSwgeCkgLT4gRm9ybWF0LmZwcmludGYgZiBcIiRQUklOVEYlYVwiIHByaW50X3ByaW50X2V4cHIgeFxuICB8IFBSSU5UIChmaWxlLCB4KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIkUFJJTlRGJWEgPiVhXCIgcHJpbnRfcHJpbnRfZXhwciB4IHByaW50X3ByaW50X2V4cHIgZmlsZVxuICB8IFBMT1RFTlRSWSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCIkUExPVE5PVztcIlxuICB8IENGTE9XTEFCRUwgKG9uLCAocywgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyAnJXMnICVzO1wiIHNcbiAgICAgIChpZiBvbiB0aGVuXG4gICAgICAgICBcIlt0cnVlXVwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJbZmFsc2VdXCIpXG4gIHwgQ0ZMT1dNSVggKG9uLCAocCwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRUUkFDSyBAWyVhQF0gJXM7XCJcbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgcFxuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgfCBESU4gKGssIHApIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRESU4lYSAldFt0cnVlXVwiIHByaW50X3ByaW50X2V4cHIgcCAoZnVuIGYgLT5cbiAgICAgICAgbWF0Y2ggayB3aXRoXG4gICAgICAgIHwgUHJpbWl0aXZlcy5BQlNPTFVURSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiXFxcImFic29sdXRlXFxcIiBcIlxuICAgICAgICB8IFByaW1pdGl2ZXMuUkVMQVRJVkUgLT4gKClcbiAgICAgICAgfCBQcmltaXRpdmVzLlBST0JBQklMSVRZIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJcXFwicHJvYmFiaWxpdHlcXFwiIFwiKVxuICB8IERJTk9GRiBwIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIkRElOJWEgW2ZhbHNlXVwiIHByaW50X3ByaW50X2V4cHIgcFxuICB8IFNQRUNJRVNfT0YgKG9uLCBwLCAobSwgXykpIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiRTUEVDSUVTX09GIEBbJWFAXSAlcyA+JWE7XCJcbiAgICAgIChwcmludF9hc3RfbWl4IH5wcmludF9jb3VudGVyKVxuICAgICAgbVxuICAgICAgKGlmIG9uIHRoZW5cbiAgICAgICAgIFwiW3RydWVdXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIltmYWxzZV1cIilcbiAgICAgIHByaW50X3ByaW50X2V4cHIgcFxuXG5sZXQgcHJpbnRfcGVydHVyYmF0aW9uIGYgKChhbGFybSwgY29uZCwgbW9kaWYsIHJlcCksIF8pID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSVtb2Q6JWElYSBkb0AgQFslYUBdJWFAXVwiXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgaSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiYWxhcm0gJWFcIiBOYnIucHJpbnQgaSkpXG4gICAgYWxhcm1cbiAgICAoUHAub3B0aW9uIChmdW4gZiAociwgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXVwiIHByaW50X2FzdF9ib29sX2V4cHIgcikpXG4gICAgY29uZFxuICAgIChQcC5saXN0IFBwLnNwYWNlIHByaW50X21vZGlmKVxuICAgIG1vZGlmXG4gICAgKFBwLm9wdGlvbiAoZnVuIGYgKHIsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwicmVwZWF0IEBbJWFAXVwiIHByaW50X2FzdF9ib29sX2V4cHIgcikpXG4gICAgcmVwXG5cbmxldCBwcmludF9wYXJzaW5nX2NvbXBpbF9rYXBwYSBmIGMgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUAsQCwlYUAsJWFALEAsJWFALEAsJWFALCVhQCxALCVhQCxALCVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfY29uZmlndXJhdGlvbilcbiAgICBjLmNvbmZpZ3VyYXRpb25zXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIGEgLT5cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWyUlYWdlbnQ6QCBAWyVhQF1AXVwiXG4gICAgICAgICAgIChwcmludF9hc3RfYWdlbnQgfnByaW50X2NvdW50ZXI6cHJpbnRfY291bnRlcl9zaWcpXG4gICAgICAgICAgIGEpKVxuICAgIGMuc2lnbmF0dXJlc1xuICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAocywgXykgLT4gRm9ybWF0LmZwcmludGYgZiBcIiUldG9rZW46ICVzXCIgcykpXG4gICAgYy50b2tlbnNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKChzLCBfKSwgKGEsIF8pKSAtPlxuICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbJSV2YXI6ICclcydAIEBbJWFAXUBdXCIgcyBwcmludF9hc3RfYWxnX2V4cHIgYSkpXG4gICAgYy52YXJpYWJsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSAoZnVuIGYgKGEsIF8pIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFslJXBsb3Q6QCBAWyVhQF1AXVwiIHByaW50X2FzdF9hbGdfZXhwciBhKSlcbiAgICBjLm9ic2VydmFibGVzXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKGZ1biBmIChzLCAociwgXykpIC0+XG4gICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFtAWyVhJWFAXUBdXCJcbiAgICAgICAgICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZTpmYWxzZSAoZnVuIGYgKHMsIF8pIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIiclcydAIFwiIHMpKVxuICAgICAgICAgICBzIHByaW50X2FzdF9ydWxlIHIpKVxuICAgIGMucnVsZXNcbiAgICAoUHAubGlzdCBQcC5zcGFjZSBwcmludF9wZXJ0dXJiYXRpb24pXG4gICAgYy5wZXJ0dXJiYXRpb25zXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgcHJpbnRfaW5pdClcbiAgICBjLmluaXRcblxubGV0IGFycm93X25vdGF0aW9uX3RvX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgciA9XG4gIEpzb25VdGlsLnNtYXJ0X2Fzc29jXG4gICAgW1xuICAgICAgXCJsaHNcIiwgZl9taXggci5saHM7XG4gICAgICAoIFwicm1fdG9rZW5cIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChKc29uVXRpbC5vZl9wYWlyXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIHIucm1fdG9rZW4gKTtcbiAgICAgIFwicmhzXCIsIGZfbWl4IHIucmhzO1xuICAgICAgKCBcImFkZF90b2tlblwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgci5hZGRfdG9rZW4gKTtcbiAgICBdXG5cbmxldCBhcnJvd19ub3RhdGlvbl9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA8PSA0IC0+XG4gICAge1xuICAgICAgbGhzID0gZl9taXggKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImxoc1wiIHgpO1xuICAgICAgcm1fdG9rZW4gPVxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwicm1fdG9rZW5cIiB4KTtcbiAgICAgIHJocyA9IGZfbWl4IChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJyaHNcIiB4KTtcbiAgICAgIGFkZF90b2tlbiA9XG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90ZWRfb2ZfanNvbiBmaWxlbmFtZXMpKVxuICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJhZGRfdG9rZW5cIiB4KTtcbiAgICB9XG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgYXJyb3dfbm90YXRpb25cIiwgeCkpXG5cbmxldCBlZGl0X25vdGF0aW9uX3RvX3lvanNvbiBmaWxlbmFtZXMgciA9XG4gIGxldCBtaXhfdG9fanNvbiA9XG4gICAgSnNvblV0aWwub2ZfbGlzdCAoSnNvblV0aWwub2ZfbGlzdCAoYWdlbnRfdG9fanNvbiBmaWxlbmFtZXMpKVxuICBpblxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwibWl4XCIsIG1peF90b19qc29uIHIubWl4O1xuICAgICAgKCBcImRlbHRhX3Rva2VuXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIEpzb25VdGlsLm9mX3N0cmluZykpXG4gICAgICAgICAgICAgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgci5kZWx0YV90b2tlbiApO1xuICAgIF1cblxubGV0IGVkaXRfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyByID1cbiAgbGV0IG1peF9vZl9qc29uID1cbiAgICBKc29uVXRpbC50b19saXN0IChKc29uVXRpbC50b19saXN0IChhZ2VudF9vZl9qc29uIGZpbGVuYW1lcykpXG4gIGluXG4gIG1hdGNoIHIgd2l0aFxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDwgMyAtPlxuICAgIHtcbiAgICAgIG1peCA9IG1peF9vZl9qc29uIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJtaXhcIiB4KTtcbiAgICAgIGRlbHRhX3Rva2VuID1cbiAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgbWl4X29mX2pzb25cbiAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImRlbHRhX3Rva2VuXCIgeCk7XG4gICAgfVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBlZGl0X25vdGF0aW9uXCIsIHgpKVxuXG5sZXQgcnVsZV9jb250ZW50X3RvX3lvanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IEVkaXQgciAtPiBgTGlzdCBbIGBTdHJpbmcgXCJlZGl0XCI7IGVkaXRfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyByIF1cbiAgfCBBcnJvdyByIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwiYXJyb3dcIjsgYXJyb3dfbm90YXRpb25fdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByIF1cblxubGV0IHJ1bGVfY29udGVudF9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJlZGl0XCI7IHIgXSAtPiBFZGl0IChlZGl0X25vdGF0aW9uX29mX3lvanNvbiBmaWxlbmFtZXMgcilcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJhcnJvd1wiOyByIF0gLT5cbiAgICBBcnJvdyAoYXJyb3dfbm90YXRpb25fb2ZfeW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlIGNvbnRlbnRcIiwgeCkpXG5cbmxldCBydWxlX3RvX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyIHIgPVxuICBKc29uVXRpbC5zbWFydF9hc3NvY1xuICAgIFtcbiAgICAgIFwicmV3cml0ZVwiLCBydWxlX2NvbnRlbnRfdG9feW9qc29uIGZpbGVuYW1lcyBmX21peCBmX3ZhciByLnJld3JpdGU7XG4gICAgICBcImJpZGlyZWN0aW9uYWxcIiwgYEJvb2wgci5iaWRpcmVjdGlvbmFsO1xuICAgICAgKCBcImtfZGVmXCIsXG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgci5rX2RlZiApO1xuICAgICAgKCBcImtfdW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSkpKVxuICAgICAgICAgIHIua191biApO1xuICAgICAgKCBcImtfb3BcIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKVxuICAgICAgICAgIHIua19vcCApO1xuICAgICAgKCBcImtfb3BfdW5cIixcbiAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvblxuICAgICAgICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSkpKVxuICAgICAgICAgIHIua19vcF91biApO1xuICAgIF1cblxubGV0IHJ1bGVfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsIDw9IDYgLT5cbiAgICAodHJ5XG4gICAgICAge1xuICAgICAgICAgcmV3cml0ZSA9XG4gICAgICAgICAgIHJ1bGVfY29udGVudF9vZl95b2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcInJld3JpdGVcIiB4KTtcbiAgICAgICAgIGJpZGlyZWN0aW9uYWwgPVxuICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImJpZGlyZWN0aW9uYWxcIiB4KTtcbiAgICAgICAgIGtfZGVmID1cbiAgICAgICAgICAgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwubWVtYmVyIFwia19kZWZcIiB4KTtcbiAgICAgICAgIGtfdW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfdW5cIiB4KTtcbiAgICAgICAgIGtfb3AgPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfb3BcIiB4KTtcbiAgICAgICAgIGtfb3BfdW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb25cbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSlcbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgKEFsZ19leHByLmVfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpKSkpXG4gICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcImtfb3BfdW5cIiB4KTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVCBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkluY29ycmVjdCBBU1QgcnVsZVwiLCB4KSlcblxubGV0IG1vZGlmX3RvX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBBUFBMWSAoYWxnLCByKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJBUFBMWVwiO1xuICAgICAgICBMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZztcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIpIHI7XG4gICAgICBdXG4gIHwgVVBEQVRFIChpZCwgYWxnKSAtPlxuICAgIGBMaXN0XG4gICAgICBbXG4gICAgICAgIGBTdHJpbmcgXCJVUERBVEVcIjtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl92YXIgaWQ7XG4gICAgICAgIExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgYWxnO1xuICAgICAgXVxuICB8IFNUT1AgbCAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZyBcIlNUT1BcIlxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBTTkFQU0hPVCAocmF3LCBsKSAtPlxuICAgIGBMaXN0XG4gICAgICAoYFN0cmluZ1xuICAgICAgICAgKGlmIHJhdyB0aGVuXG4gICAgICAgICAgICBcIlJBV19TTkFQU0hPVFwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgXCJTTkFQU0hPVFwiKVxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgbClcbiAgfCBQUklOVCAoZmlsZSwgZXhwcikgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiUFJJTlRcIjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZmlsZTtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgZXhwcjtcbiAgICAgIF1cbiAgfCBQTE9URU5UUlkgLT4gYFN0cmluZyBcIlBMT1RFTlRSWVwiXG4gIHwgQ0ZMT1dMQUJFTCAoYiwgaWQpIC0+XG4gICAgYExpc3QgWyBgU3RyaW5nIFwiQ0ZMT1dMQUJFTFwiOyBgQm9vbCBiOyBzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMgaWQgXVxuICB8IENGTE9XTUlYIChiLCBtKSAtPlxuICAgIGBMaXN0IFsgYFN0cmluZyBcIkNGTE9XXCI7IGBCb29sIGI7IExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzIGZfbWl4IG0gXVxuICB8IERJTiAoYiwgZmlsZSkgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwiRElOXCI7XG4gICAgICAgIFByaW1pdGl2ZXMuZGluX2tpbmRfdG9feW9qc29uIGI7XG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX3RvX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGU7XG4gICAgICBdXG4gIHwgRElOT0ZGIGZpbGUgLT5cbiAgICBgTGlzdFxuICAgICAgKGBTdHJpbmcgXCJESU5PRkZcIlxuICAgICAgOjogTGlzdC5tYXAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl90b195b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcikgZmlsZVxuICAgICAgKVxuICB8IFNQRUNJRVNfT0YgKGIsIGwsIG0pIC0+XG4gICAgYExpc3RcbiAgICAgIFtcbiAgICAgICAgYFN0cmluZyBcIlNQRUNJRVNfT0ZcIjtcbiAgICAgICAgYEJvb2wgYjtcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChQcmltaXRpdmVzLnByaW50X2V4cHJfdG9feW9qc29uIH5maWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgbDtcbiAgICAgICAgTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgZl9taXggbTtcbiAgICAgIF1cblxubGV0IG1vZGlmX29mX2pzb24gZmlsZW5hbWVzIGZfbWl4IGZfdmFyID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJBUFBMWVwiOyBhbGc7IG1peCBdIC0+XG4gICAgQVBQTFlcbiAgICAgICggTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBhbGcsXG4gICAgICAgIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgKHJ1bGVfb2ZfanNvbiBmaWxlbmFtZXMgZl9taXggZl92YXIpXG4gICAgICAgICAgbWl4IClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJVUERBVEVcIjsgaWQ7IGFsZyBdIC0+XG4gICAgVVBEQVRFXG4gICAgICAoIExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfdmFyIGlkLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGFsZyApXG4gIHwgYExpc3QgKGBTdHJpbmcgXCJTVE9QXCIgOjogbCkgLT5cbiAgICBTVE9QIChMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiU05BUFNIT1RcIiA6OiBsKSAtPlxuICAgIFNOQVBTSE9UXG4gICAgICAoIGZhbHNlLFxuICAgICAgICBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsIClcbiAgfCBgTGlzdCAoYFN0cmluZyBcIlJBV19TTkFQU0hPVFwiIDo6IGwpIC0+XG4gICAgU05BUFNIT1RcbiAgICAgICh0cnVlLCBMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBsKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlBSSU5UXCI7IGZpbGU7IGV4cHIgXSAtPlxuICAgIFBSSU5UXG4gICAgICAoIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGV4cHIgKVxuICB8IGBTdHJpbmcgXCJQTE9URU5UUllcIiAtPiBQTE9URU5UUllcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV0xBQkVMXCI7IGBCb29sIGI7IGlkIF0gLT5cbiAgICBDRkxPV0xBQkVMIChiLCBzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcyBpZClcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJDRkxPV1wiOyBgQm9vbCBiOyBtIF0gLT5cbiAgICBDRkxPV01JWCAoYiwgTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgZl9taXggbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJESU5cIjsgYjsgZmlsZSBdIC0+XG4gICAgRElOXG4gICAgICAoIFByaW1pdGl2ZXMuZGluX2tpbmRfb2ZfeW9qc29uIGIsXG4gICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKVxuICAgICAgICAgIGZpbGUgKVxuICB8IGBMaXN0IChgU3RyaW5nIFwiRElOT0ZGXCIgOjogZmlsZSkgLT5cbiAgICBESU5PRkZcbiAgICAgIChMaXN0Lm1hcCAoUHJpbWl0aXZlcy5wcmludF9leHByX29mX3lvanNvbiB+ZmlsZW5hbWVzIGZfbWl4IGZfdmFyKSBmaWxlKVxuICB8IGBMaXN0IFsgYFN0cmluZyBcIlNQRUNJRVNfT0ZcIjsgYEJvb2wgYjsgZmlsZTsgbSBdIC0+XG4gICAgU1BFQ0lFU19PRlxuICAgICAgKCBiLFxuICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgKFByaW1pdGl2ZXMucHJpbnRfZXhwcl9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBmX3ZhcilcbiAgICAgICAgICBmaWxlLFxuICAgICAgICBMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lcyBmX21peCBtIClcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgbW9kaWZpY2F0aW9uXCIsIHgpKVxuXG5sZXQgbWVyZ2VfaW50ZXJuYWxfbW9kIGFjYyA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBhY2NcbiAgfCBTb21lICh4LCBwb3MpIC0+XG4gICAgbGV0IHhfb3AgPSBTb21lIHggaW5cbiAgICBpZiBMaXN0LmV4aXN0cyAoZnVuICh4JywgXykgLT4geF9vcCA9IHgnKSBhY2MgdGhlblxuICAgICAgYWNjXG4gICAgZWxzZVxuICAgICAgKHhfb3AsIHBvcykgOjogYWNjXG5cbmxldCBtZXJnZV9pbnRlcm5hbHMgPVxuICBMaXN0LmZvbGRfbGVmdCAoZnVuIGFjYyAoKHgsIF8pIGFzIHkpIC0+XG4gICAgICBpZlxuICAgICAgICB4ID0gTm9uZVxuICAgICAgICB8fCBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgIChmdW4gKHgnLCBfKSAtPlxuICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuZXF1YWwgKGZ1biB4IHgnIC0+IFN0cmluZy5jb21wYXJlIHggeCcgPSAwKSB4IHgnKVxuICAgICAgICAgICAgIGFjY1xuICAgICAgdGhlblxuICAgICAgICBhY2NcbiAgICAgIGVsc2VcbiAgICAgICAgeSA6OiBhY2MpXG5cbmxldCByZWMgbWVyZ2Vfc2l0ZXNfY291bnRlciBjID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbIENvdW50ZXIgYyBdXG4gIHwgQ291bnRlciBjJyA6OiBfIGFzIGwgd2hlbiBmc3QgYy5jb3VudGVyX3NpZ19uYW1lID0gZnN0IGMnLmNvdW50ZXJfc2lnX25hbWVcbiAgICAtPlxuICAgIGxcbiAgfCAoKFBvcnQgXyB8IENvdW50ZXIgXykgYXMgaCkgOjogdCAtPiBoIDo6IG1lcmdlX3NpdGVzX2NvdW50ZXIgYyB0XG5cbmxldCByZWMgbWVyZ2Vfc2l0ZXNfcG9ydCBwID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBbIFBvcnQgeyBwIHdpdGggcG9ydF9saW5rID0gW10gfSBdXG4gIHwgUG9ydCBoIDo6IHQgd2hlbiBmc3QgcC5wb3J0X25hbWUgPSBmc3QgaC5wb3J0X25hbWUgLT5cbiAgICBQb3J0XG4gICAgICB7XG4gICAgICAgIGggd2l0aFxuICAgICAgICBwb3J0X2ludCA9XG4gICAgICAgICAgbWVyZ2VfaW50ZXJuYWxfbW9kXG4gICAgICAgICAgICAobWVyZ2VfaW50ZXJuYWxzIGgucG9ydF9pbnQgcC5wb3J0X2ludClcbiAgICAgICAgICAgIHAucG9ydF9pbnRfbW9kO1xuICAgICAgfVxuICAgIDo6IHRcbiAgfCAoKFBvcnQgXyB8IENvdW50ZXIgXykgYXMgaCkgOjogdCAtPiBoIDo6IG1lcmdlX3NpdGVzX3BvcnQgcCB0XG5cbmxldCBtZXJnZV9zaXRlcyA9XG4gIExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgfCBQb3J0IHAgLT4gbWVyZ2Vfc2l0ZXNfcG9ydCBwIGFjY1xuICAgIHwgQ291bnRlciBjIC0+IG1lcmdlX3NpdGVzX2NvdW50ZXIgKGNvdW50ZXJfc2lnX29mX2NvdW50ZXIgYykgYWNjKVxuXG5sZXQgbWVyZ2VfYWdlbnRzID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAoYWNjIDogYWdlbnRfc2lnIGxpc3QpIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBBYnNlbnQgXyAtPiBhY2NcbiAgICAgICB8IFByZXNlbnQgKCgobmEsIF8pIGFzIHgpLCAocyA6IGNvdW50ZXIgc2l0ZSBsaXN0KSwgXykgLT5cbiAgICAgICAgIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgIFByZXNlbnRcbiAgICAgICAgICAgICAgICAgKCB4LFxuICAgICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgfCBQb3J0IHAgLT4gUG9ydCB7IHAgd2l0aCBwb3J0X2xpbmsgPSBbXSB9XG4gICAgICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBfIGFzIHggLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYXBfY291bnRlcnNfaW5fc2l0ZSBjb3VudGVyX3NpZ19vZl9jb3VudGVyIHgpXG4gICAgICAgICAgICAgICAgICAgICBzLFxuICAgICAgICAgICAgICAgICAgIE5vTW9kICk7XG4gICAgICAgICAgICAgXVxuICAgICAgICAgICB8IFByZXNlbnQgKChuYScsIF8pLCBzJywgXykgOjogdCB3aGVuIFN0cmluZy5jb21wYXJlIG5hIG5hJyA9IDAgLT5cbiAgICAgICAgICAgICBQcmVzZW50ICh4LCBtZXJnZV9zaXRlcyBzJyBzLCBOb01vZCkgOjogdFxuICAgICAgICAgICB8ICgoUHJlc2VudCBfIHwgQWJzZW50IF8pIGFzIGgpIDo6IHQgLT4gaCA6OiBhdXggdFxuICAgICAgICAgaW5cbiAgICAgICAgIGF1eCBhY2MpKVxuXG5sZXQgbWVyZ2VfdG9rZW5zID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKF8sICgobmEsIF8pIGFzIHRvaykpIC0+XG4gICAgICBsZXQgcmVjIGF1eCA9IGZ1bmN0aW9uXG4gICAgICAgIHwgW10gLT4gWyB0b2sgXVxuICAgICAgICB8IChuYScsIF8pIDo6IF8gYXMgbCB3aGVuIFN0cmluZy5jb21wYXJlIG5hIG5hJyA9IDAgLT4gbFxuICAgICAgICB8IGggOjogdCBhcyBsIC0+XG4gICAgICAgICAgbGV0IG8gPSBhdXggdCBpblxuICAgICAgICAgIGlmIHQgPT0gbyB0aGVuXG4gICAgICAgICAgICBsXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgaCA6OiBvXG4gICAgICBpblxuICAgICAgYXV4IGFjYylcblxubGV0IHNpZ19mcm9tX2luaXRzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biAoYWdzLCB0b2tzKSAtPiBmdW5jdGlvblxuICAgIHwgXywgSU5JVF9NSVggKG0sIF8pIC0+IG1lcmdlX2FnZW50cyBhZ3MgbSwgdG9rc1xuICAgIHwgbmEsIElOSVRfVE9LIGwgLT4gYWdzLCBtZXJnZV90b2tlbnMgdG9rcyAoTGlzdC5tYXAgKGZ1biB4IC0+IG5hLCB4KSBsKSlcblxubGV0IHNpZ19mcm9tX3J1bGUgKGFncywgdG9rcykgciA9XG4gIG1hdGNoIHIucmV3cml0ZSB3aXRoXG4gIHwgRWRpdCBlIC0+IG1lcmdlX2FnZW50cyBhZ3MgZS5taXgsIG1lcmdlX3Rva2VucyB0b2tzIGUuZGVsdGFfdG9rZW5cbiAgfCBBcnJvdyBhIC0+XG4gICAgbGV0IGFncycsIHRva3MnID1cbiAgICAgIGlmIHIuYmlkaXJlY3Rpb25hbCB0aGVuXG4gICAgICAgIG1lcmdlX2FnZW50cyBhZ3MgYS5yaHMsIG1lcmdlX3Rva2VucyB0b2tzIGEuYWRkX3Rva2VuXG4gICAgICBlbHNlXG4gICAgICAgIGFncywgdG9rc1xuICAgIGluXG4gICAgbWVyZ2VfYWdlbnRzIGFncycgYS5saHMsIG1lcmdlX3Rva2VucyB0b2tzJyBhLnJtX3Rva2VuXG5cbmxldCBzaWdfZnJvbV9ydWxlcyA9IExpc3QuZm9sZF9sZWZ0IChmdW4gcCAoXywgKHIsIF8pKSAtPiBzaWdfZnJvbV9ydWxlIHAgcilcblxubGV0IHNpZ19mcm9tX3BlcnRzID1cbiAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MgKChfLCBfLCBwLCBfKSwgXykgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gcCAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgQVBQTFkgKF8sIChyLCBfKSkgLT4gc2lnX2Zyb21fcnVsZSBwIHJcbiAgICAgICAgICB8IFVQREFURSBfIHwgU1RPUCBfIHwgU05BUFNIT1QgXyB8IFBSSU5UIF8gfCBQTE9URU5UUlkgfCBDRkxPV0xBQkVMIF9cbiAgICAgICAgICB8IENGTE9XTUlYIF8gfCBESU4gXyB8IERJTk9GRiBfIHwgU1BFQ0lFU19PRiBfIC0+XG4gICAgICAgICAgICBwKVxuICAgICAgICBhY2MgcClcblxubGV0IGluZmVyX2FnZW50X3NpZ25hdHVyZXMgciA9XG4gIGxldCBhY2MgPSBzaWdfZnJvbV9pbml0cyAoci5zaWduYXR1cmVzLCByLnRva2Vucykgci5pbml0IGluXG4gIGxldCBhY2MnID0gc2lnX2Zyb21fcnVsZXMgYWNjIHIucnVsZXMgaW5cbiAgbGV0IGFncywgdG9rcyA9IHNpZ19mcm9tX3BlcnRzIGFjYycgci5wZXJ0dXJiYXRpb25zIGluXG4gIHsgciB3aXRoIHNpZ25hdHVyZXMgPSBhZ3M7IHRva2VucyA9IHRva3MgfVxuXG5sZXQgc3BsaXRfbWl4dHVyZSBtID1cbiAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgKGZ1biBsIChsaHMsIHJocykgLT5cbiAgICAgIGxldCBsbCwgcnIgPVxuICAgICAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgICAgICAoZnVuIGFnICgobGhzLCByaHMpIGFzIHBhY2spIC0+XG4gICAgICAgICAgICBtYXRjaCBhZyB3aXRoXG4gICAgICAgICAgICB8IEFic2VudCBfIC0+IHBhY2tcbiAgICAgICAgICAgIHwgUHJlc2VudCAoKChfLCBwb3MpIGFzIG5hKSwgaW50ZiwgbW9kaWYpIC0+XG4gICAgICAgICAgICAgIChtYXRjaCBtb2RpZiB3aXRoXG4gICAgICAgICAgICAgIHwgQ3JlYXRlIC0+IEFic2VudCBwb3MgOjogbGhzLCBQcmVzZW50IChuYSwgaW50ZiwgTm9Nb2QpIDo6IHJoc1xuICAgICAgICAgICAgICB8IEVyYXNlIC0+IFByZXNlbnQgKG5hLCBpbnRmLCBOb01vZCkgOjogbGhzLCBBYnNlbnQgcG9zIDo6IHJoc1xuICAgICAgICAgICAgICB8IE5vTW9kIC0+XG4gICAgICAgICAgICAgICAgbGV0IGludGZsLCBpbnRmciA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAoZnVuIChsLCByKSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgIHwgUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAoIFBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X25hbWUgPSBwLnBvcnRfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50ID0gcC5wb3J0X2ludDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50X21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmsgPSBwLnBvcnRfbGluaztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGlua19tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUG9ydFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSA9IHAucG9ydF9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydF9pbnQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcC5wb3J0X2ludF9tb2Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gcC5wb3J0X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKHgsIHBvcykgLT4gWyBTb21lIHgsIHBvcyBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfaW50X21vZCA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0X2xpbmsgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggcC5wb3J0X2xpbmtfbW9kIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHAucG9ydF9saW5rXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0ZSRUUgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgKGksIHBvcykpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcyBdKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRfbGlua19tb2QgPSBOb25lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogciApXG4gICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICggQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgYyB3aXRoIGNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgOjogbCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlciB7IGMgd2l0aCBjb3VudGVyX3Rlc3QgPSBOb25lIH0gOjogciApKVxuICAgICAgICAgICAgICAgICAgICAoW10sIFtdKSBpbnRmXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoIFByZXNlbnQgKG5hLCBpbnRmbCwgTm9Nb2QpIDo6IGxocyxcbiAgICAgICAgICAgICAgICAgIFByZXNlbnQgKG5hLCBpbnRmciwgTm9Nb2QpIDo6IHJocyApKSlcbiAgICAgICAgICBsIChbXSwgW10pXG4gICAgICBpblxuICAgICAgbGwgOjogbGhzLCByciA6OiByaHMpXG4gICAgbSAoW10sIFtdKVxuXG5sZXQgY29tcGlsX3RvX2pzb24gYyA9XG4gIGxldCBmaWxlcyA9XG4gICAgQXJyYXkub2ZfbGlzdCAoTGV4aW5nLmR1bW15X3Bvcy5MZXhpbmcucG9zX2ZuYW1lIDo6IGMuZmlsZW5hbWVzKVxuICBpblxuICBsZXQgZmlsZW5hbWVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAoZnVuIGkgbWFwIHggLT4gTW9kcy5TdHJpbmdNYXAuYWRkIHggaSBtYXApXG4gICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBmaWxlc1xuICBpblxuICBsZXQgbWl4X3RvX2pzb24gPVxuICAgIEpzb25VdGlsLm9mX2xpc3QgKEpzb25VdGlsLm9mX2xpc3QgKGFnZW50X3RvX2pzb24gZmlsZW5hbWVzKSlcbiAgaW5cbiAgbGV0IHZhcl90b19qc29uID0gSnNvblV0aWwub2Zfc3RyaW5nIGluXG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwiZmlsZW5hbWVzXCIsIEpzb25VdGlsLm9mX2FycmF5IEpzb25VdGlsLm9mX3N0cmluZyBmaWxlcztcbiAgICAgIFwic2lnbmF0dXJlc1wiLCBKc29uVXRpbC5vZl9saXN0IChhZ2VudF9zaWdfdG9fanNvbiBmaWxlbmFtZXMpIGMuc2lnbmF0dXJlcztcbiAgICAgIFwidG9rZW5zXCIsIEpzb25VdGlsLm9mX2xpc3QgKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykgYy50b2tlbnM7XG4gICAgICAoIFwidmFyaWFibGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKEFsZ19leHByLmVfdG9feW9qc29uIH5maWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKSlcbiAgICAgICAgICBjLnZhcmlhYmxlcyApO1xuICAgICAgKCBcInJ1bGVzXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpclxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gKHN0cmluZ19hbm5vdF90b19qc29uIGZpbGVuYW1lcykpXG4gICAgICAgICAgICAgKExvYy55b2pzb25fb2ZfYW5ub3RlZCB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgKHJ1bGVfdG9fanNvbiBmaWxlbmFtZXMgbWl4X3RvX2pzb24gdmFyX3RvX2pzb24pKSlcbiAgICAgICAgICBjLnJ1bGVzICk7XG4gICAgICAoIFwib2JzZXJ2YWJsZXNcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChMb2MueW9qc29uX29mX2Fubm90ZWQgfmZpbGVuYW1lc1xuICAgICAgICAgICAgIChBbGdfZXhwci5lX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICBjLm9ic2VydmFibGVzICk7XG4gICAgICAoIFwiaW5pdFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV90b195b2pzb24gfmZpbGVuYW1lcyBtaXhfdG9fanNvbiB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgKGluaXRfdG9fanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKSlcbiAgICAgICAgICBjLmluaXQgKTtcbiAgICAgICggXCJwZXJ0dXJiYXRpb25zXCIsXG4gICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXMgKGZ1biAoYWxhcm0sIHByZSwgbW9kaWYsIHBvc3QpIC0+XG4gICAgICAgICAgICAgICBgTGlzdFxuICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIE5ici50b195b2pzb24gYWxhcm07XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwcmU7XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgKG1vZGlmX3RvX2pzb24gZmlsZW5hbWVzIG1peF90b19qc29uIHZhcl90b19qc29uKVxuICAgICAgICAgICAgICAgICAgICAgbW9kaWY7XG4gICAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAoTG9jLnlvanNvbl9vZl9hbm5vdGVkIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIChBbGdfZXhwci5ib29sX3RvX3lvanNvbiB+ZmlsZW5hbWVzIG1peF90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdG9fanNvbikpXG4gICAgICAgICAgICAgICAgICAgICBwb3N0O1xuICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgICBjLnBlcnR1cmJhdGlvbnMgKTtcbiAgICAgICggXCJjb25maWd1cmF0aW9uc1wiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0XG4gICAgICAgICAgKEpzb25VdGlsLm9mX3BhaXJcbiAgICAgICAgICAgICAoc3RyaW5nX2Fubm90X3RvX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IChzdHJpbmdfYW5ub3RfdG9fanNvbiBmaWxlbmFtZXMpKSlcbiAgICAgICAgICBjLmNvbmZpZ3VyYXRpb25zICk7XG4gICAgXVxuXG5sZXQgY29tcGlsX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gOSAtPlxuICAgIGxldCB2YXJfb2ZfanNvbiA9IEpzb25VdGlsLnRvX3N0cmluZyA/ZXJyb3JfbXNnOk5vbmUgaW5cbiAgICAodHJ5XG4gICAgICAgbGV0IGZpbGVuYW1lcyA9XG4gICAgICAgICBKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgKExpc3QuYXNzb2MgXCJmaWxlbmFtZXNcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IG1peF9vZl9qc29uID1cbiAgICAgICAgIEpzb25VdGlsLnRvX2xpc3QgKEpzb25VdGlsLnRvX2xpc3QgKGFnZW50X29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICBpblxuICAgICAgIHtcbiAgICAgICAgIGZpbGVuYW1lcyA9IExpc3QudGwgKEFycmF5LnRvX2xpc3QgZmlsZW5hbWVzKTtcbiAgICAgICAgIHNpZ25hdHVyZXMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHNpZ25hdHVyZVwiKVxuICAgICAgICAgICAgIChhZ2VudF9zaWdfb2ZfanNvbiBmaWxlbmFtZXMpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJzaWduYXR1cmVzXCIgbCk7XG4gICAgICAgICB0b2tlbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHRva2VuIHNpZ1wiKVxuICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcInRva2Vuc1wiIGwpO1xuICAgICAgICAgdmFyaWFibGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCB2YXJpYWJsZXNcIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcylcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwidmFyaWFibGVzXCIgbCk7XG4gICAgICAgICBydWxlcyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgcnVsZXNcIilcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fcGFpclxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKSlcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAocnVsZV9vZl9qc29uIGZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwicnVsZXNcIiBsKTtcbiAgICAgICAgIG9ic2VydmFibGVzID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBvYnNlcnZhYmxlc1wiKVxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb24gfmZpbGVuYW1lc1xuICAgICAgICAgICAgICAgIChBbGdfZXhwci5lX29mX3lvanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcIm9ic2VydmFibGVzXCIgbCk7XG4gICAgICAgICBpbml0ID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIkFTVCBpbml0XCIpXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX3BhaXJcbiAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXNcbiAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuZV9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbikpXG4gICAgICAgICAgICAgICAgKGluaXRfb2ZfanNvbiB+ZmlsZW5hbWVzIG1peF9vZl9qc29uIHZhcl9vZl9qc29uKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBcImluaXRcIiBsKTtcbiAgICAgICAgIHBlcnR1cmJhdGlvbnMgPVxuICAgICAgICAgICBKc29uVXRpbC50b19saXN0XG4gICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiQVNUIHBlcnR1cmJhdGlvbnNcIilcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uIH5maWxlbmFtZXMgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICB8IGBMaXN0IFsgYWxhcm07IHByZTsgbW9kaWY7IHBvc3QgXSAtPlxuICAgICAgICAgICAgICAgICAoIEpzb25VdGlsLnRvX29wdGlvbiBOYnIub2ZfeW9qc29uIGFsYXJtLFxuICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgICAgICAgICAgcHJlLFxuICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgIChtb2RpZl9vZl9qc29uIGZpbGVuYW1lcyBtaXhfb2ZfanNvbiB2YXJfb2ZfanNvbilcbiAgICAgICAgICAgICAgICAgICAgIG1vZGlmLFxuICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvbiB+ZmlsZW5hbWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAoQWxnX2V4cHIuYm9vbF9vZl95b2pzb24gfmZpbGVuYW1lcyBtaXhfb2ZfanNvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyX29mX2pzb24pKVxuICAgICAgICAgICAgICAgICAgICAgcG9zdCApXG4gICAgICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgcGVydHVyYmF0aW9uXCIsIHgpKSkpXG4gICAgICAgICAgICAgKExpc3QuYXNzb2MgXCJwZXJ0dXJiYXRpb25zXCIgbCk7XG4gICAgICAgICBjb25maWd1cmF0aW9ucyA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX2xpc3RcbiAgICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJBU1QgY29uZmlndXJhdGlvblwiKVxuICAgICAgICAgICAgIChKc29uVXRpbC50b19wYWlyXG4gICAgICAgICAgICAgICAgKHN0cmluZ19hbm5vdGVkX29mX2pzb24gZmlsZW5hbWVzKVxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19saXN0IChzdHJpbmdfYW5ub3RlZF9vZl9qc29uIGZpbGVuYW1lcykpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIFwiY29uZmlndXJhdGlvbnNcIiBsKTtcbiAgICAgICAgIHZvbHVtZXMgPSBbXTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiSW5jb3JyZWN0IEFTVFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJJbmNvcnJlY3QgQVNUXCIsIHgpKVxuXG5sZXQgd3JpdGVfcGFyc2luZ19jb21waWwgYiBhc3QgPSBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiIChjb21waWxfdG9fanNvbiBhc3QpXG5sZXQgcmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiID0gY29tcGlsX29mX2pzb24gKFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYilcbmxldCBwcmludF9hc3RfbWl4ID0gcHJpbnRfYXN0X21peCB+cHJpbnRfY291bnRlclxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSAnYSB3aXRoX2FnZW50X2NvdW50ZXJzID0ge1xuICBhZ2VudDogJ2E7XG4gIGNvdW50ZXJzOiAoQXN0LmNvdW50ZXIgKiBMS2FwcGEuc3dpdGNoaW5nKSBvcHRpb24gYXJyYXk7XG59XG5cbnR5cGUgcnVsZV9taXh0dXJlX3dpdGhfYWdlbnRfY291bnRlcnMgPVxuICBMS2FwcGEucnVsZV9hZ2VudCB3aXRoX2FnZW50X2NvdW50ZXJzIGxpc3RcblxudHlwZSByYXdfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzID1cbiAgUmF3X21peHR1cmUuYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycyBsaXN0XG5cbnR5cGUgY3Zhcl92YWx1ZSA9IHsgbmFtZTogc3RyaW5nOyB2YWx1ZTogaW50IH1cblxuKCoqIFtjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwIGxzMSBsczJdXG4gKiBFYWNoIGVsZW1lbnQgb2YgW2xzMV0gZGVzY3JpYmVzIGEgc2V0dXAgb2YgY291bnRlciB2YXJpYWJsZXMsIHdpdGggdGhlIGZpcnN0IGVsZW1lbnQgb2YgdGhlIHR1cGxlIGJlaW5nIHRoZSBsaXN0IG9mIGVudGl0aWVzIHRvIGJlIHVzZWQgaW4gdGhlIG1vZGVsLCB3aGVyZSB2YXJpYWJsZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBjb3VudGVycywgYW5kIHRoZSBzZWNvbmQgb25lIHRoZSBtYXBwaW5nIG9mIHZhcmlhYmxlcyB0byB0aGVpciB2YWx1ZXMsIHRoYXQgYWxsb3dzIHRvIGtub3cgd2hpY2ggaW5zdGFuY2Ugb2YgbW9kZWwgZW50aXRpZXMgd291bGQgYmUgY2hvc2VuIGluIHRoaXMgZ2l2ZW4gc2V0dXAuXG4gKiBbbHMyXSBhZGRzIGEgbmV3IGVudGl0eSB3aXRoIGRpZmZlcmVudCBraW5kcyBhY2NvcmRpbmcgdG8gdGhlIHZhcmlhYmxlIHZhbHVlcyBnaXZlbiBpbiB0aGUgbGlzdCBhcyBzZWNvbmQgbWVtYmVyIG9mIHRoZSB0dXBsZSwgd2hpY2ggaXMgdGhlbiBjb21iaW5lZCBpbiB0aGlzIGZ1bmN0aW9uIHdpdGggdGhlIG90aGVyIHNldHVwcywgY29tYmluaW5nIHRoZSBkaWZmZXJlbnQgdmFyaWFibGUgdmFsdWVzIHdoaWNoIHRob3NlIGFscmVhZHkgZGVmaW5lZC5cbiAqIE5vIGNoZWNrIGlzIGRvbmUgb24gdGhlIHVuaWNpdHkgb2YgdGhlIGRlc2NyaWJlZCB2YXJpYWJsZXMgYW5kIHRoZWlyIHZhbHVlcyAqKVxubGV0IGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXAgKGxzMSA6ICgnYSBsaXN0ICogJ2IgbGlzdCkgbGlzdClcbiAgICAobHMyIDogKCdhICogJ2IgbGlzdCkgbGlzdCkgOiAoJ2EgbGlzdCAqICdiIGxpc3QpIGxpc3QgPVxuICBpZiBsczEgPSBbXSB0aGVuXG4gICAgcmFpc2UgRXhpdCAoKkxpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIChiLCBkcykgLT4gKFsgYiBdLCBkcykgOjogYWNjKSBbXSBsczIqKVxuICBlbHNlXG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjIChhLCBjcykgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhY2MnIChiLCBkcykgLT4gKGIgOjogYSwgZHMgQCBjcykgOjogYWNjJykgYWNjIGxzMilcbiAgICAgIFtdIGxzMVxuXG5sZXQgdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIChrLCBhKSA9XG4gIGxldCB1cGRhdGVfaWQgcyBrID1cbiAgICBsZXQgY291bnRlcnNfbWF0Y2hpbmdfcywgXyA9XG4gICAgICBMaXN0LnBhcnRpdGlvblxuICAgICAgICAoZnVuIHZhcl92YWx1ZSAtPiBTdHJpbmcuY29tcGFyZSBzIHZhcl92YWx1ZS5uYW1lID0gMClcbiAgICAgICAgY291bnRlcl92YXJfdmFsdWVzXG4gICAgaW5cbiAgICBtYXRjaCBjb3VudGVyc19tYXRjaGluZ19zIHdpdGhcbiAgICB8IFsgdmFyX3ZhbHVlIF0gLT4gQWxnX2V4cHIuQ09OU1QgKE5ici5JIHZhcl92YWx1ZS52YWx1ZSlcbiAgICB8IFtdIC0+IGtcbiAgICB8IF8gOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiQ291bnRlciB2YXJpYWJsZSBcIiBeIHMgXiBcIiBhcHBlYXJzIHR3aWNlIGluIHJ1bGVcIiwgTG9jLmR1bW15KSlcbiAgaW5cbiAgbGV0IHJlYyB1cGRhdGVfYm9vbF9leHByIGsgPVxuICAgIG1hdGNoIGsgd2l0aFxuICAgIHwgQWxnX2V4cHIuVFJVRSB8IEFsZ19leHByLkZBTFNFIC0+IGtcbiAgICB8IEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgKGsxLCBhMSksIChrMiwgYTIpKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0JPT0xfT1BcbiAgICAgICAgKG9wLCAodXBkYXRlX2Jvb2xfZXhwciBrMSwgYTEpLCAodXBkYXRlX2Jvb2xfZXhwciBrMiwgYTIpKVxuICAgIHwgQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIChrLCBhKSkgLT5cbiAgICAgIEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCAodXBkYXRlX2Jvb2xfZXhwciBrLCBhKSlcbiAgICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCAoazEsIGExKSwgKGsyLCBhMikpIC0+XG4gICAgICBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSksICh1cGRhdGVfZXhwciBrMiwgYTIpKVxuICBhbmQgdXBkYXRlX2V4cHIgayA9XG4gICAgbWF0Y2ggayB3aXRoXG4gICAgfCBBbGdfZXhwci5CSU5fQUxHX09QIChvcCwgKGsxLCBhMSksIChrMiwgYTIpKSAtPlxuICAgICAgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsICh1cGRhdGVfZXhwciBrMSwgYTEpLCAodXBkYXRlX2V4cHIgazIsIGEyKSlcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAob3AsIChrMSwgYTEpKSAtPlxuICAgICAgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgKHVwZGF0ZV9leHByIGsxLCBhMSkpXG4gICAgfCBBbGdfZXhwci5JRiAoKGsxLCBhMSksIChrMiwgYTIpLCAoazMsIGEzKSkgLT5cbiAgICAgIEFsZ19leHByLklGXG4gICAgICAgICgodXBkYXRlX2Jvb2xfZXhwciBrMSwgYTEpLCAodXBkYXRlX2V4cHIgazIsIGEyKSwgKHVwZGF0ZV9leHByIGszLCBhMykpXG4gICAgfCBBbGdfZXhwci5ESUZGX1RPS0VOICgoazEsIGExKSwgazIpIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX1RPS0VOICgodXBkYXRlX2V4cHIgazEsIGExKSwgazIpXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgoaywgYSksIG0pIC0+XG4gICAgICBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgodXBkYXRlX2V4cHIgaywgYSksIG0pXG4gICAgfCBBbGdfZXhwci5BTEdfVkFSIGlkIHwgQWxnX2V4cHIuVE9LRU5fSUQgaWQgLT4gdXBkYXRlX2lkIGlkIGtcbiAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQ09OU1QgXyB8IEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgIGtcbiAgaW5cbiAgdXBkYXRlX2V4cHIgaywgYVxuXG5sZXQgY29sbGVjdF9pZHMgZXhwcl9saXN0IDogTW9kcy5TdHJpbmdTZXQudCA9XG4gIGxldCByZWMgYXV4X2V4cHIgZXhwciBhY2MgPVxuICAgIG1hdGNoIGV4cHIgd2l0aFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAoXywgKGsxLCBfKSwgKGsyLCBfKSkgLT4gYXV4X2V4cHIgazIgKGF1eF9leHByIGsxIGFjYylcbiAgICB8IEFsZ19leHByLlVOX0FMR19PUCAoXywgKGsxLCBfKSlcbiAgICB8IEFsZ19leHByLkRJRkZfVE9LRU4gKChrMSwgXyksIF8pXG4gICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFICgoazEsIF8pLCBfKSAtPlxuICAgICAgYXV4X2V4cHIgazEgYWNjXG4gICAgfCBBbGdfZXhwci5JRiAoKGsxLCBfKSwgKGsyLCBfKSwgKGszLCBfKSkgLT5cbiAgICAgIGF1eF9leHByIGszIChhdXhfZXhwciBrMiAoYXV4X2Jvb2wgazEgYWNjKSlcbiAgICB8IEFsZ19leHByLkFMR19WQVIgaWQgfCBBbGdfZXhwci5UT0tFTl9JRCBpZCAtPiBhdXhfaWQgaWQgYWNjXG4gICAgfCBBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkNPTlNUIF8gfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBfIC0+XG4gICAgICBhY2NcbiAgYW5kIGF1eF9pZCBpZCBhY2MgPSBNb2RzLlN0cmluZ1NldC5hZGQgaWQgYWNjXG4gIGFuZCBhdXhfYm9vbCBleHByIGFjYyA9XG4gICAgbWF0Y2ggZXhwciB3aXRoXG4gICAgfCBBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UgLT4gYWNjXG4gICAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAoXywgKGsxLCBfKSwgKGsyLCBfKSkgLT5cbiAgICAgIGF1eF9ib29sIGsyIChhdXhfYm9vbCBrMSBhY2MpXG4gICAgfCBBbGdfZXhwci5VTl9CT09MX09QIChfLCAoaywgXykpIC0+IGF1eF9ib29sIGsgYWNjXG4gICAgfCBBbGdfZXhwci5DT01QQVJFX09QIChfLCAoazEsIF8pLCAoazIsIF8pKSAtPiBhdXhfZXhwciBrMiAoYXV4X2V4cHIgazEgYWNjKVxuICBpblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIGV4cHJfb3B0IC0+XG4gICAgICBtYXRjaCBleHByX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICB8IFNvbWUgKGV4cHIsIF8pIC0+IGF1eF9leHByIGV4cHIgYWNjKVxuICAgIE1vZHMuU3RyaW5nU2V0LmVtcHR5IGV4cHJfbGlzdFxuXG5sZXQgbmFtZV9tYXRjaCAocywgXykgKHMnLCBfKSA9IFN0cmluZy5jb21wYXJlIHMgcycgPSAwXG5cbmxldCBwcmVwYXJlX2FnZW50IHJzaXRlcyBsc2l0ZXMgPVxuICBsZXQgcmVjIHByZXBhcmVfc2l0ZSBzaXRlcyBjID1cbiAgICBtYXRjaCBzaXRlcyB3aXRoXG4gICAgfCBbXSAtPiBbIEFzdC5Db3VudGVyIGMgXVxuICAgIHwgaGQgOjogdGwgLT5cbiAgICAgIChtYXRjaCBoZCB3aXRoXG4gICAgICB8IEFzdC5Db3VudGVyIGMnIHdoZW4gbmFtZV9tYXRjaCBjLkFzdC5jb3VudGVyX25hbWUgYycuQXN0LmNvdW50ZXJfbmFtZSAtPlxuICAgICAgICBBc3QuQ291bnRlciB7IGMnIHdpdGggQXN0LmNvdW50ZXJfZGVsdGEgPSBjLkFzdC5jb3VudGVyX2RlbHRhIH0gOjogdGxcbiAgICAgIHwgQXN0LkNvdW50ZXIgXyB8IEFzdC5Qb3J0IF8gLT4gaGQgOjogcHJlcGFyZV9zaXRlIHRsIGMpXG4gIGluXG4gIGxldCBjb3VudGVycyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYWNjJyByc2l0ZSAtPlxuICAgICAgICBtYXRjaCByc2l0ZSB3aXRoXG4gICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MnXG4gICAgICAgIHwgQXN0LkNvdW50ZXIgYyAtPiBjIDo6IGFjYycpXG4gICAgICBbXSByc2l0ZXNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnQgcHJlcGFyZV9zaXRlIGxzaXRlcyBjb3VudGVyc1xuXG4oKiAtIGFkZCBpbiB0aGUgbGhzIDogKGkpIGNvdW50ZXJzIG9ubHkgbWVudGlvbmVkIGluIHRoZSByaHMgYW5kIChpaSkgdGhlIGRlbHRhc1xuICAgLSBzeW50YWN0aWMgY2hlY2tzIG9mIG5vIHRlc3QgaW4gcmhzOyBubyBtb2RpZiBpbiBsaHMgKilcbmxldCBwcmVwYXJlX2NvdW50ZXJzIHJ1bGVzID1cbiAgbGV0IGNoZWNrX3N5bnRheCBzaXRlcyBmIGVycm9yID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW5jdGlvblxuICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gKClcbiAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICAgICAgaWYgZiBjIHRoZW5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5Bc3QuY291bnRlcl9uYW1lIF4gZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjLkFzdC5jb3VudGVyX25hbWUgKSkpXG4gICAgICBzaXRlc1xuICBpblxuXG4gIGxldCByZWMgcHJlcGFyZV9saHNfcnVsZSByaHMgbGhzID1cbiAgICBtYXRjaCByaHMsIGxocyB3aXRoXG4gICAgfCBBc3QuUHJlc2VudCAocm5hLCByc2l0ZXMsIF8pIDo6IHIsIEFzdC5QcmVzZW50IChsbmEsIGxzaXRlcywgYikgOjogbCAtPlxuICAgICAgY2hlY2tfc3ludGF4IGxzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChMb2MudiBjLmNvdW50ZXJfZGVsdGEgPSAwKSlcbiAgICAgICAgXCIgaGFzIGEgbW9kaWYgaW4gdGhlIGxoc1wiO1xuICAgICAgY2hlY2tfc3ludGF4IHJzaXRlc1xuICAgICAgICAoZnVuIGMgLT4gbm90IChjLmNvdW50ZXJfdGVzdCA9IE5vbmUpKVxuICAgICAgICBcIiBoYXMgYSB0ZXN0IGluIHRoZSByaHNcIjtcbiAgICAgIGlmIFN0cmluZy5jb21wYXJlIChMb2MudiBybmEpIChMb2MudiBsbmEpID0gMCB0aGVuIChcbiAgICAgICAgbGV0IGxzaXRlcycgPSBwcmVwYXJlX2FnZW50IHJzaXRlcyBsc2l0ZXMgaW5cbiAgICAgICAgQXN0LlByZXNlbnQgKGxuYSwgbHNpdGVzJywgYikgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICAgICkgZWxzZVxuICAgICAgICBsaHNcbiAgICAgICgqVE9ETyB3ZSBzdG9wIG91ciBqb2IgaGVyZS4gTEthcHBhX2NvbXBpbGVyIHdpbGwgZGV0ZWN0XG4gICAgICAgIGxhdGVyIHRoYXQgdGhlcmUgaXMgYSBwcm9ibGVtICopXG4gICAgfCBfIDo6IHIsIChBc3QuQWJzZW50IF8gYXMgbGFnZW50KSA6OiBsIC0+XG4gICAgICAoKmNyZWF0ZWQgYWdlbnQqKVxuICAgICAgKCogVE9ETyBNYXliZSBzb21lIHN5bnRheCBjaGVjayBvbiByaHMgYXJlIG5lY2Vzc2FyeSBoZXJlICopXG4gICAgICBsYWdlbnQgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICB8IEFzdC5BYnNlbnQgXyA6OiByLCAoQXN0LlByZXNlbnQgKF8sIGxzaXRlcywgXykgYXMgbGFnZW50KSA6OiBsIC0+XG4gICAgICAoKmRlbGV0ZWQgIGFnZW50KilcbiAgICAgIGNoZWNrX3N5bnRheCBsc2l0ZXNcbiAgICAgICAgKGZ1biBjIC0+IG5vdCAoTG9jLnYgYy5Bc3QuY291bnRlcl9kZWx0YSA9IDApKVxuICAgICAgICBcIiBoYXMgYSBtb2RpZiBpbiB0aGUgbGhzXCI7XG4gICAgICBsYWdlbnQgOjogcHJlcGFyZV9saHNfcnVsZSByIGxcbiAgICB8IFtdLCB4IC0+XG4gICAgICB4XG4gICAgICAoKiBUT0RPIHggbXVzdCBiZSBbXSBidXQgaXQgaXMgZm9yIG5vdyBMS2FwcGFfY29tcGlsZXJcbiAgICAgICAgIGR1dHkgdG8gY29tcGxhaW4gKilcbiAgICB8IF94LCBbXSAtPiAoKlRPRE8gbGV0ICgpID0gYXNzZXJ0IChfeCA9IFtdKSBpbiopIFtdXG4gIGluXG5cbiAgbGV0IGF1eCAocnVsZSA6IEFzdC5ydWxlKSA6IEFzdC5ydWxlID1cbiAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgIHwgQXN0LkVkaXQgXyAtPiBydWxlXG4gICAgfCBBc3QuQXJyb3cgY29udGVudCAtPlxuICAgICAge1xuICAgICAgICBydWxlIHdpdGhcbiAgICAgICAgcmV3cml0ZSA9XG4gICAgICAgICAgQXN0LkFycm93XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgICBBc3QubGhzID1cbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBwcmVwYXJlX2xoc19ydWxlIChMaXN0LmZsYXR0ZW4gY29udGVudC5yaHMpXG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmZsYXR0ZW4gY29udGVudC5saHMpO1xuICAgICAgICAgICAgICAgIF07XG4gICAgICAgICAgICB9O1xuICAgICAgfVxuICBpblxuICBMaXN0Lm1hcCAoZnVuIChzLCAociwgYSkpIC0+IHMsIChhdXggciwgYSkpIHJ1bGVzXG5cbmxldCBjb3VudGVyc19zaWduYXR1cmUgcyBhZ2VudHMgPVxuICBtYXRjaFxuICAgIExpc3QuZmluZFxuICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGZhbHNlXG4gICAgICAgIHwgQXN0LlByZXNlbnQgKHMnLCBfLCBfKSAtPiBuYW1lX21hdGNoIHMgcycpXG4gICAgICBhZ2VudHNcbiAgd2l0aFxuICB8IEFzdC5BYnNlbnQgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBBc3QuUHJlc2VudCAoXywgc2l0ZXMnLCBfKSAtPlxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBzIC0+XG4gICAgICAgIG1hdGNoIHMgd2l0aFxuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT4gYyA6OiBhY2NcbiAgICAgICAgfCBBc3QuUG9ydCBfIC0+IGFjYylcbiAgICAgIFtdIHNpdGVzJ1xuXG4oKiogW3NwbGl0X2N2YXJfY291bnRlcl9pbl9ydWxlc19wZXJfdmFsdWUgdmFyX25hbWUgYW5ub3QgY291bnRlcl9kZWx0YSBjb3VudGVyX2RlZl0gdHJhbnNsYXRlcyBhIGNvdW50ZXIgQ1ZBUiB3aG9zZSB2YWx1ZSBhY3RzIHVwb24gdGhlIHJhdGUgZXhwcmVzc2lvbiBpbnRvIGEgcnVsZSBwZXIgcG9zc2libGUgdmFsdWUsIHRoYXQgYXJlIHNlbGVjdGVkIGJ5IGEgQ0VRwqBleHByZXNzaW9uLlxuICogKilcbmxldCBzcGxpdF9jdmFyX2NvdW50ZXJfaW5fcnVsZXNfcGVyX3ZhbHVlICh2YXJfbmFtZSA6IHN0cmluZykgKGFubm90IDogTG9jLnQpXG4gICAgKGNvdW50ZXJfZGVsdGEgOiBpbnQgTG9jLmFubm90ZWQpIChjb3VudGVyX2RlZiA6IEFzdC5jb3VudGVyX3NpZykgOlxuICAgIChBc3QuY291bnRlciBBc3Quc2l0ZSAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9XG4gIGxldCAobWluX3ZhbHVlLCBtYXhfdmFsdWUpIDogaW50ICogaW50ID1cbiAgICBtYXRjaCBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19taW4sIGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgfCBTb21lIChTb21lIG1pbl9sb2MsIF8pLCBTb21lIChTb21lIG1heF9sb2MsIF8pIC0+IG1pbl9sb2MsIG1heF9sb2NcbiAgICB8IChOb25lIHwgU29tZSAoTm9uZSwgXykpLCBfIHwgXywgKE5vbmUgfCBTb21lIChOb25lLCBfKSkgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICggXCJJbnZhbGlkIGNvdW50ZXIgc2lnbmF0dXJlIC0gaGF2ZSB0byBzcGVjaWZ5IG1pbi9tYXggYm91bmRcIixcbiAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfZGVmLmNvdW50ZXJfc2lnX25hbWUgKSlcbiAgaW5cbiAgKCogTWFrZSBDRVEgY291bnRlcnMgd2l0aCBhbGwgcG9zc2libGUgdmFsdWVzIG9mIHZhcmlhYmxlICopXG4gIGxldCByZWMgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSA6IGludCkgOlxuICAgICAgKEFzdC5jb3VudGVyIEFzdC5zaXRlICogY3Zhcl92YWx1ZSBsaXN0KSBsaXN0ID1cbiAgICBpZiB2YWx1ZSA+IG1heF92YWx1ZSB0aGVuXG4gICAgICBbXVxuICAgIGVsc2UgaWZcbiAgICAgIHZhbHVlICsgTG9jLnYgY291bnRlcl9kZWx0YSA8PSBtYXhfdmFsdWVcbiAgICAgICYmIHZhbHVlICsgTG9jLnYgY291bnRlcl9kZWx0YSA+PSAwXG4gICAgdGhlblxuICAgICAgKCBBc3QuQ291bnRlclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjb3VudGVyX2RlZi5jb3VudGVyX3NpZ19uYW1lO1xuICAgICAgICAgICAgY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNFUSB2YWx1ZSwgYW5ub3QpO1xuICAgICAgICAgICAgY291bnRlcl9kZWx0YTtcbiAgICAgICAgICB9LFxuICAgICAgICBbIHsgbmFtZSA9IHZhcl9uYW1lOyB2YWx1ZSB9IF0gKVxuICAgICAgOjogbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSArIDEpXG4gICAgZWxzZVxuICAgICAgbWFrZV9jZXFfY291bnRlcnNfZnJvbV92YXJfdmFsdWVzICh2YWx1ZSArIDEpXG4gIGluXG4gIG1ha2VfY2VxX2NvdW50ZXJzX2Zyb21fdmFyX3ZhbHVlcyBtaW5fdmFsdWVcblxubGV0IGhhc19jb3VudGVycyBjb21waWwgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW5jdGlvblxuICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgIHwgQXN0LlByZXNlbnQgKF8sIHNpdGVzLCBfKSAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQ291bnRlciBfIC0+IHRydWVcbiAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBmYWxzZSlcbiAgICAgICAgICBzaXRlcylcbiAgICBjb21waWwuQXN0LnNpZ25hdHVyZXNcblxuKCoqIFtzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzXSB+d2FybmluZyBydWxlcyBzaWduYXR1cmVzXSByZXBsYWNlcyBjb3VudGVycyB3aXRoIENWQVIgY29udHJhaW50cyB3aXRoIGNvdW50ZXJzIHdpdGggQ0VRIGNvbnRyYWludHMgaW4gW3J1bGVzXSwgaW4gbGlzdHMgd2l0aCB0aGUgdmFyaWFibGUgdmFsdWVzIGFzc29jaWF0ZWQsIHNvIHRoYXQgaW4gc2ltdWxhdGlvbiwgY29ycmVjdCBjb3VudGVyIGNvbmRpdGlvbnMgYXJlIGJlaW5nIHNlbGVjdGVkLiBUaGUgbWFpbiBvcGVyYXRpb24gaGFwcGVucyBpbiBbc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZV0gKilcbmxldCBzcGxpdF9jb3VudGVyX3ZhcmlhYmxlc19pbnRvX3NlcGFyYXRlX3J1bGVzIH53YXJuaW5nIHJ1bGVzIHNpZ25hdHVyZXMgPVxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfc2l0ZSBpZHMgY291bnRlcl9kZWZzID0gZnVuY3Rpb25cbiAgICB8IEFzdC5Qb3J0IHAgLT4gWyBBc3QuUG9ydCBwLCBbXSBdXG4gICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICBsZXQgZGVsdGEgPSBMb2MudiBjLkFzdC5jb3VudGVyX2RlbHRhIGluXG4gICAgICAobWF0Y2ggYy5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgfCBTb21lIChBc3QuQ0VRIHZhbHVlLCBfKSAtPlxuICAgICAgICBpZiBkZWx0YSA+IDAgfHwgYWJzIGRlbHRhIDw9IHZhbHVlIHRoZW5cbiAgICAgICAgICBbIEFzdC5Db3VudGVyIGMsIFtdIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgXCIgXiBMb2MudiBjLmNvdW50ZXJfbmFtZSBeIFwiIGJlY29tZXMgbmVnYXRpdmVcIixcbiAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjLmNvdW50ZXJfbmFtZSApKVxuICAgICAgfCBTb21lIChBc3QuQ0xURSBfdmFsdWUsIF9hbm5vdCkgLT5cbiAgICAgICAgZmFpbHdpdGggXCJub3QgaW1wbGVtZW50ZWRcIiAoKiBUT0RPwqBOT1cgKilcbiAgICAgIHwgU29tZSAoQXN0LkNHVEUgdmFsdWUsIGFubm90KSAtPlxuICAgICAgICBpZiB2YWx1ZSArIGRlbHRhIDwgMCB0aGVuXG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIExvYy52IGMuY291bnRlcl9uYW1lIF4gXCIgYmVjb21lcyBuZWdhdGl2ZVwiLFxuICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGMuY291bnRlcl9uYW1lICkpO1xuICAgICAgICBpZiB2YWx1ZSA9IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yID0gXCJDb3VudGVyIFwiIF4gTG9jLnYgYy5jb3VudGVyX25hbWUgXiBcIjo+MCBhbHdheXMgaG9sZHNcIiBpblxuICAgICAgICAgIHdhcm5pbmcgfnBvczphbm5vdCAoZnVuIGYgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIGVycm9yKVxuICAgICAgICApO1xuICAgICAgICBbIEFzdC5Db3VudGVyIGMsIFtdIF1cbiAgICAgIHwgU29tZSAoQXN0LkNWQVIgdmFyX25hbWUsIGFubm90KSB3aGVuIE1vZHMuU3RyaW5nU2V0Lm1lbSB2YXJfbmFtZSBpZHMgLT5cbiAgICAgICAgKCogSWYgdGhlIHZhcmlhYmxlIGlzIHByZXNlbnQgaW4gYW4gcmF0ZSBkZWZpbml0aW9uIGV4cHJlc3Npb24gKilcbiAgICAgICAgbGV0IGNvdW50ZXJfZGVmIDogQXN0LmNvdW50ZXJfc2lnID1cbiAgICAgICAgICBMaXN0LmZpbmRcbiAgICAgICAgICAgIChmdW4gY291bnRlciAtPlxuICAgICAgICAgICAgICBuYW1lX21hdGNoIGMuQXN0LmNvdW50ZXJfbmFtZSBjb3VudGVyLkFzdC5jb3VudGVyX3NpZ19uYW1lKVxuICAgICAgICAgICAgY291bnRlcl9kZWZzXG4gICAgICAgIGluXG5cbiAgICAgICAgc3BsaXRfY3Zhcl9jb3VudGVyX2luX3J1bGVzX3Blcl92YWx1ZSB2YXJfbmFtZSBhbm5vdCBjLmNvdW50ZXJfZGVsdGFcbiAgICAgICAgICBjb3VudGVyX2RlZlxuICAgICAgfCBOb25lIHwgU29tZSAoQXN0LkNWQVIgXywgXykgLT5cbiAgICAgICAgaWYgZGVsdGEgPCAwIHRoZW4gKFxuICAgICAgICAgIGxldCBjb3VudGVyX2RlbHRhIDogQXN0LmNvdW50ZXIgPVxuICAgICAgICAgICAgeyBjIHdpdGggY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNHVEUgKGFicyBkZWx0YSksIExvYy5kdW1teSkgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgWyBBc3QuQ291bnRlciBjb3VudGVyX2RlbHRhLCBbXSBdXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIFtcbiAgICAgICAgICAgICggQXN0LkNvdW50ZXIgeyBjIHdpdGggY291bnRlcl90ZXN0ID0gU29tZSAoQXN0LkNHVEUgMCwgTG9jLmR1bW15KSB9LFxuICAgICAgICAgICAgICBbXSApO1xuICAgICAgICAgIF0pXG4gIGluXG5cbiAgbGV0IHJlYyBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlcyAoaWRzIDogTW9kcy5TdHJpbmdTZXQudClcbiAgICAgIChjb3VudGVyX2RlZnMgOiBBc3QuY291bnRlcl9zaWcgbGlzdCkgOlxuICAgICAgQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCAtPlxuICAgICAgKEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gWyBbXSwgW10gXVxuICAgIHwgcyA6OiB0IC0+XG4gICAgICBjb21iaW5hdGlvbnNfb2ZfdmFyX3NldHVwXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlcyBpZHMgY291bnRlcl9kZWZzIHQpXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9zaXRlIGlkcyBjb3VudGVyX2RlZnMgcylcbiAgaW5cbiAgbGV0IHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX2FnZW50IChpZHMgOiBNb2RzLlN0cmluZ1NldC50KSA6XG4gICAgICBBc3QuYWdlbnQgLT4gKEFzdC5hZ2VudCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9IGZ1bmN0aW9uXG4gICAgfCBBc3QuQWJzZW50IGwgLT4gWyBBc3QuQWJzZW50IGwsIFtdIF1cbiAgICB8IEFzdC5QcmVzZW50IChhZ2VudF9uYW1lLCBzaXRlcywgbW9kaWYpIC0+XG4gICAgICBsZXQgY291bnRlcl9kZWZzID0gY291bnRlcnNfc2lnbmF0dXJlIGFnZW50X25hbWUgc2lnbmF0dXJlcyBpblxuICAgICAgbGV0IHNpdGVzX2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlcyA9XG4gICAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3NpdGVzIGlkcyBjb3VudGVyX2RlZnMgc2l0ZXNcbiAgICAgIGluXG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIChzaXRlcycsIHZhcl92YWx1ZXMpIC0+XG4gICAgICAgICAgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVzJywgbW9kaWYpLCB2YXJfdmFsdWVzKVxuICAgICAgICBzaXRlc19mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZXNcbiAgaW5cbiAgbGV0IHJlYyBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9taXh0dXJlIChpZHMgOiBNb2RzLlN0cmluZ1NldC50KSA6XG4gICAgICBBc3QuYWdlbnQgbGlzdCAtPiAoQXN0LmFnZW50IGxpc3QgKiBjdmFyX3ZhbHVlIGxpc3QpIGxpc3QgPSBmdW5jdGlvblxuICAgIHwgW10gLT4gWyBbXSwgW10gXVxuICAgIHwgYXN0X2FnZW50IDo6IHQgLT5cbiAgICAgIGNvbWJpbmF0aW9uc19vZl92YXJfc2V0dXBcbiAgICAgICAgKHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX21peHR1cmUgaWRzIHQpXG4gICAgICAgIChzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9hZ2VudCBpZHMgYXN0X2FnZW50KVxuICBpblxuXG4gIGxldCB1cGRhdGVfb3B0X3JhdGUgY291bnRlcl92YXJfdmFsdWVzID0gZnVuY3Rpb25cbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSByIC0+IFNvbWUgKHVwZGF0ZV9yYXRlIGNvdW50ZXJfdmFyX3ZhbHVlcyByKVxuICBpblxuICBsZXQgdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgPSBmdW5jdGlvblxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIChyMSwgcjIpIC0+XG4gICAgICBTb21lXG4gICAgICAgICggdXBkYXRlX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHIxLFxuICAgICAgICAgIHVwZGF0ZV9vcHRfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcjIgKVxuICBpblxuXG4gICgqIFRPRE8gW3NwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGVdIHJ1bGUgZXZhbHVlcyB0byBhIGxpc3Qgb2YgcnVsZXMgd2l0aCB0aGVpciBuYW1lcyAqKVxuICBsZXQgc3BsaXRfZm9yX2VhY2hfY291bnRlcl92YXJfdmFsdWVfcnVsZVxuICAgICAgKHJ1bGVfbmFtZSA6IHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24pXG4gICAgICAoKHJ1bGUsIGFubm90KSA6IEFzdC5ydWxlIExvYy5hbm5vdGVkKSA6XG4gICAgICAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSBsaXN0ID1cbiAgICBsZXQgbWl4X2xocyA9XG4gICAgICBtYXRjaCBydWxlLnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBjb250ZW50IC0+IGNvbnRlbnQubWl4XG4gICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IGNvbnRlbnQubGhzXG4gICAgaW5cblxuICAgICgqIEZldGNoIGlkcyBmcm9tIHJ1bGUgcmF0ZXMgKilcbiAgICBsZXQgZXhwcnNfZnJvbV9yYXRlcyA6XG4gICAgICAgIChBc3QubWl4dHVyZSwgc3RyaW5nKSBLYXBwYV90ZXJtcy5BbGdfZXhwci5lIExvYy5hbm5vdGVkIG9wdGlvbiBsaXN0ID1cbiAgICAgIFsgU29tZSBydWxlLmtfZGVmOyBydWxlLmtfb3AgXVxuICAgICAgQCAobWF0Y2ggcnVsZS5rX3VuIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgIHwgU29tZSByX2t1bl9yYXRlcyAtPiBbIFNvbWUgKGZzdCByX2t1bl9yYXRlcyk7IHNuZCByX2t1bl9yYXRlcyBdKVxuICAgICAgQFxuICAgICAgbWF0Y2ggcnVsZS5rX29wX3VuIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIHJfa19vcF91bl9yYXRlcyAtPlxuICAgICAgICBbIFNvbWUgKGZzdCByX2tfb3BfdW5fcmF0ZXMpOyBzbmQgcl9rX29wX3VuX3JhdGVzIF1cbiAgICBpblxuICAgIGxldCBpZHMgPSBjb2xsZWN0X2lkcyBleHByc19mcm9tX3JhdGVzIGluXG5cbiAgICBsZXQgbWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZSA6XG4gICAgICAgIChBc3QuYWdlbnQgbGlzdCAqIGN2YXJfdmFsdWUgbGlzdCkgbGlzdCA9XG4gICAgICBzcGxpdF9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZV9taXh0dXJlIGlkcyAoTGlzdC5mbGF0dGVuIG1peF9saHMpXG4gICAgaW5cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAobGhzLCBjb3VudGVyX3Zhcl92YWx1ZXMpIC0+XG4gICAgICAgICgqIEFwcGx5IGNvdW50ZXIgdmFyIHZhbHVlcyB0byByYXRlcyAqKVxuICAgICAgICBsZXQga19kZWYgPSB1cGRhdGVfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX2RlZiBpblxuICAgICAgICBsZXQga191biA9IHVwZGF0ZV9wYWlyX3JhdGUgY291bnRlcl92YXJfdmFsdWVzIHJ1bGUua191biBpblxuICAgICAgICBsZXQga19vcCA9IHVwZGF0ZV9vcHRfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX29wIGluXG4gICAgICAgIGxldCBrX29wX3VuID0gdXBkYXRlX3BhaXJfcmF0ZSBjb3VudGVyX3Zhcl92YWx1ZXMgcnVsZS5rX29wX3VuIGluXG4gICAgICAgIGxldCBsaHMgPSBbIGxocyBdIGluXG4gICAgICAgIGxldCBuZXdfcnVsZV9uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiA9XG4gICAgICAgICAgaWYgY291bnRlcl92YXJfdmFsdWVzID0gW10gdGhlblxuICAgICAgICAgICAgcnVsZV9uYW1lXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBCdWlsZCBjb3VudGVyc19pZHNfYXNfc3RyaW5nLCB0aGF0IHdpbGwgYmUgdXNlZCB0byBidWlsZCBuZXcgcnVsZSBuYW1lcyAqKVxuICAgICAgICAgICAgbGV0IGNvdW50ZXJzX2lkc19hc19zdHJpbmcgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICgqIFRPRE8gc2hvdWxkIHdlIGFkZCBhIHNlcGFyYXRvci4gbWF5YmUgYWxzbyBhZGQgbmFtZSBvZiB2YXJpYWJsZT8gKilcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHZhcl92YWx1ZSAtPiBzdHJpbmdfb2ZfaW50IHZhcl92YWx1ZS52YWx1ZSBeIGFjYylcbiAgICAgICAgICAgICAgICBcIlwiIGNvdW50ZXJfdmFyX3ZhbHVlc1xuICAgICAgICAgICAgaW5cblxuICAgICAgICAgICAgbWF0Y2ggcnVsZV9uYW1lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lICgqIE5vIHJ1bGUgbmFtZSwgbmV3IHJ1bGVzIHdpbGwgaGF2ZSBubyBuYW1lIHRvbyAqKVxuICAgICAgICAgICAgfCBTb21lIChydWxlX25hbWVfc3RyaW5nLCBsb2NhbGl0eSkgLT5cbiAgICAgICAgICAgICAgKCogTWFrZSBhIG5ldyBuYW1lIGZvciBuZXcgcnVsZSBpbmNsdWRpbmcgY291bnRlcl92YXJfdmFsdWVzIGluZm8gKilcbiAgICAgICAgICAgICAgU29tZSAocnVsZV9uYW1lX3N0cmluZyBeIFwiX19cIiBeIGNvdW50ZXJzX2lkc19hc19zdHJpbmcsIGxvY2FsaXR5KVxuICAgICAgICAgIClcbiAgICAgICAgaW5cblxuICAgICAgICAoIG5ld19ydWxlX25hbWUsXG4gICAgICAgICAgKCB7XG4gICAgICAgICAgICAgIEFzdC5yZXdyaXRlID1cbiAgICAgICAgICAgICAgICAobWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgICAgICAgICAgICB8IEFzdC5FZGl0IGNvbnRlbnQgLT4gQXN0LkVkaXQgeyBjb250ZW50IHdpdGggQXN0Lm1peCA9IGxocyB9XG4gICAgICAgICAgICAgICAgfCBBc3QuQXJyb3cgY29udGVudCAtPiBBc3QuQXJyb3cgeyBjb250ZW50IHdpdGggQXN0LmxocyB9KTtcbiAgICAgICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IHJ1bGUuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgICAgICAga19kZWY7XG4gICAgICAgICAgICAgIGtfdW47XG4gICAgICAgICAgICAgIGtfb3A7XG4gICAgICAgICAgICAgIGtfb3BfdW47XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYW5ub3QgKSApKVxuICAgICAgbWl4dHVyZV9mb3JfZWFjaF9jb3VudGVyX3Zhcl92YWx1ZVxuICBpblxuXG4gIGxldCBydWxlcyA9IHByZXBhcmVfY291bnRlcnMgcnVsZXMgaW5cblxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gYWNjIChydWxlX25hbWUsIHJ1bGVfYW5ub3RlZCkgLT5cbiAgICAgIHNwbGl0X2Zvcl9lYWNoX2NvdW50ZXJfdmFyX3ZhbHVlX3J1bGUgcnVsZV9uYW1lIHJ1bGVfYW5ub3RlZCBAIGFjYylcbiAgICBbXSBydWxlc1xuICAoKiBUT0RPOiBpcyByZXYgcmVsZXZhbnQgaGVyZT8gKilcbiAgfD4gTGlzdC5yZXZcblxubGV0IHNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmcgfmRlYnVnX21vZGVcbiAgICAoY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKSA9XG4gIGxldCBydWxlcyA9XG4gICAgc3BsaXRfY291bnRlcl92YXJpYWJsZXNfaW50b19zZXBhcmF0ZV9ydWxlcyB+d2FybmluZyBjb21waWwucnVsZXNcbiAgICAgIGNvbXBpbC5zaWduYXR1cmVzXG4gIGluXG4gICgqIERlYnVnIHByaW50aW5nICopXG4gIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgRm9ybWF0LnByaW50ZiBcIkAuYXN0IHJ1bGVzQC5cIjtcbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKHMsIChyLCBfKSkgLT5cbiAgICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgICBtYXRjaCBzIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgIHwgU29tZSAobCwgXykgLT4gbFxuICAgICAgICBpblxuICAgICAgICBGb3JtYXQucHJpbnRmIFwiQC4lcyA9ICVhXCIgbGFiZWwgQXN0LnByaW50X2FzdF9ydWxlIHIpXG4gICAgICBydWxlc1xuICApO1xuICB7IGNvbXBpbCB3aXRoIEFzdC5ydWxlcyB9XG5cbmxldCBtYWtlX2NvdW50ZXJfYWdlbnQgc2lncyAoaXNfZmlyc3QsIChkc3QsIHJhX2VyYXNlZCkpIChpc19sYXN0LCBlcXVhbCkgaSBqXG4gICAgbG9jIChjcmVhdGVkIDogYm9vbCkgOiBMS2FwcGEucnVsZV9hZ2VudCA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IsIHBvcnRfYSA9IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICBsZXQgcmFfdHlwZSA9IGNvdW50ZXJfYWdlbnRfaW5mby5pZCBpblxuXG4gIGxldCByYV9wb3J0cyA9XG4gICAgQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHlcbiAgICAgICgoTEthcHBhLkxOS19GUkVFLCBsb2MpLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGJlZm9yZV9zd2l0Y2ggPVxuICAgIGlmIGlzX2ZpcnN0IHRoZW5cbiAgICAgIGlmIGNyZWF0ZWQgdGhlblxuICAgICAgICBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGVsc2UgaWYgcmFfZXJhc2VkIHRoZW5cbiAgICAgICAgTEthcHBhLkVyYXNlZFxuICAgICAgZWxzZVxuICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgIGVsc2VcbiAgICAgIExLYXBwYS5NYWludGFpbmVkXG4gIGluXG4gIGxldCBiZWZvcmUgPVxuICAgIGlmIGlzX2ZpcnN0IHRoZW5cbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGksIGRzdCksIGxvY1xuICAgIGVsc2VcbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGksIChyYV90eXBlLCBwb3J0X2EpKSwgbG9jXG4gIGluXG4gIGxldCAoKSA9IHJhX3BvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSwgYmVmb3JlX3N3aXRjaCBpblxuICBsZXQgYWZ0ZXIgPVxuICAgIGlmIGlzX2xhc3QgJiYgZXF1YWwgdGhlblxuICAgICAgTEthcHBhLkxOS19GUkVFLCBsb2NcbiAgICBlbHNlIGlmIGlzX2xhc3QgdGhlblxuICAgICAgTEthcHBhLkxOS19BTlksIGxvY1xuICAgIGVsc2VcbiAgICAgIExLYXBwYS5MTktfVkFMVUUgKGosIChyYV90eXBlLCBwb3J0X2IpKSwgbG9jXG4gIGluXG4gIGxldCAoKSA9XG4gICAgcmFfcG9ydHMuKHBvcnRfYSkgPC1cbiAgICAgICggYWZ0ZXIsXG4gICAgICAgIGlmIHJhX2VyYXNlZCB0aGVuXG4gICAgICAgICAgTEthcHBhLkVyYXNlZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgTEthcHBhLk1haW50YWluZWQgKVxuICBpblxuICBsZXQgcmFfaW50cyA9IEFycmF5Lm1ha2UgY291bnRlcl9hZ2VudF9pbmZvLmFyaXR5IExLYXBwYS5JX0FOWSBpblxuICB7XG4gICAgTEthcHBhLnJhX3R5cGU7XG4gICAgcmFfZXJhc2VkO1xuICAgIHJhX3BvcnRzO1xuICAgIHJhX2ludHM7XG4gICAgcmFfc3ludGF4ID0gU29tZSAoQXJyYXkuY29weSByYV9wb3J0cywgQXJyYXkuY29weSByYV9pbnRzKTtcbiAgfVxuXG5sZXQgcmF3X2NvdW50ZXJfYWdlbnQgKGlzX2ZpcnN0LCBmaXJzdF9saW5rKSAoaXNfbGFzdCwgbGFzdF9saW5rKSBpIGogc2lncyBlcXVhbFxuICAgIDogUmF3X21peHR1cmUuYWdlbnQgPVxuICBsZXQgY291bnRlcl9hZ2VudF9pbmZvID0gU2lnbmF0dXJlLmdldF9jb3VudGVyX2FnZW50X2luZm8gc2lncyBpblxuICBsZXQgcG9ydF9iLCBwb3J0X2EgPSBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgbGV0IHBvcnRzID0gQXJyYXkubWFrZSBjb3VudGVyX2FnZW50X2luZm8uYXJpdHkgUmF3X21peHR1cmUuRlJFRSBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGNvdW50ZXJfYWdlbnRfaW5mby5hcml0eSAoZnVuIGkgLT5cbiAgICAgICAgU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgY291bnRlcl9hZ2VudF9pbmZvLmlkIGkgc2lncylcbiAgaW5cbiAgbGV0IGJlZm9yZSA9XG4gICAgaWYgaXNfZmlyc3QgdGhlblxuICAgICAgUmF3X21peHR1cmUuVkFMIGZpcnN0X2xpbmtcbiAgICBlbHNlXG4gICAgICBSYXdfbWl4dHVyZS5WQUwgaVxuICBpblxuICBsZXQgKCkgPSBwb3J0cy4ocG9ydF9iKSA8LSBiZWZvcmUgaW5cbiAgbGV0IGFmdGVyID1cbiAgICBpZiBpc19sYXN0ICYmIGVxdWFsIHRoZW5cbiAgICAgIFJhd19taXh0dXJlLkZSRUVcbiAgICBlbHNlIGlmIGlzX2xhc3QgdGhlblxuICAgICAgUmF3X21peHR1cmUuVkFMIGxhc3RfbGlua1xuICAgIGVsc2VcbiAgICAgIFJhd19taXh0dXJlLlZBTCBqXG4gIGluXG4gIGxldCAoKSA9IHBvcnRzLihwb3J0X2EpIDwtIGFmdGVyIGluXG4gIHtcbiAgICBSYXdfbWl4dHVyZS5hX3R5cGUgPSBjb3VudGVyX2FnZW50X2luZm8uaWQ7XG4gICAgUmF3X21peHR1cmUuYV9wb3J0cyA9IHBvcnRzO1xuICAgIFJhd19taXh0dXJlLmFfaW50cyA9IGludGVybmFscztcbiAgfVxuXG5sZXQgcmVjIGFkZF9pbmNyIChpIDogaW50KSAoZmlyc3RfbGluayA6IGludCkgKGxhc3RfbGluayA6IGludCkgKGRlbHRhIDogaW50KVxuICAgIChlcXVhbCA6IGJvb2wpIChzaWdzIDogU2lnbmF0dXJlLnMpIDogUmF3X21peHR1cmUuYWdlbnQgbGlzdCA9XG4gIGlmIGkgPSBkZWx0YSB0aGVuXG4gICAgW11cbiAgZWxzZSAoXG4gICAgbGV0IGlzX2ZpcnN0ID0gaSA9IDAgaW5cbiAgICBsZXQgaXNfbGFzdCA9IGkgPSBkZWx0YSAtIDEgaW5cbiAgICBsZXQgcmF3X2luY3IgPVxuICAgICAgcmF3X2NvdW50ZXJfYWdlbnQgKGlzX2ZpcnN0LCBmaXJzdF9saW5rKSAoaXNfbGFzdCwgbGFzdF9saW5rKVxuICAgICAgICAoZmlyc3RfbGluayArIGkpXG4gICAgICAgIChmaXJzdF9saW5rICsgaSArIDEpXG4gICAgICAgIHNpZ3MgZXF1YWxcbiAgICBpblxuICAgIHJhd19pbmNyIDo6IGFkZF9pbmNyIChpICsgMSkgZmlyc3RfbGluayBsYXN0X2xpbmsgZGVsdGEgZXF1YWwgc2lnc1xuICApXG5cbmxldCByZWMgbGlua19pbmNyIChzaWdzIDogU2lnbmF0dXJlLnMpIChpIDogaW50KSAobmIgOiBpbnQpXG4gICAgKGFnX2luZm8gOiAoaW50ICogaW50KSAqIGJvb2wpIChlcXVhbCA6IGJvb2wpIChsaW5rIDogaW50KSAobG9jIDogTG9jLnQpXG4gICAgKGRlbHRhIDogaW50KSA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICBpZiBpID0gbmIgdGhlblxuICAgIFtdXG4gIGVsc2UgKFxuICAgIGxldCBpc19maXJzdCA9IGkgPSAwIGluXG4gICAgbGV0IGlzX2xhc3QgPSBpID0gbmIgLSAxIGluXG4gICAgbGV0IHJhX2FnZW50ID1cbiAgICAgIG1ha2VfY291bnRlcl9hZ2VudCBzaWdzIChpc19maXJzdCwgYWdfaW5mbykgKGlzX2xhc3QsIGVxdWFsKSAobGluayArIGkpXG4gICAgICAgIChsaW5rICsgaSArIDEpXG4gICAgICAgIGxvYyAoZGVsdGEgPiAwKVxuICAgIGluXG4gICAgcmFfYWdlbnQgOjogbGlua19pbmNyIHNpZ3MgKGkgKyAxKSBuYiBhZ19pbmZvIGVxdWFsIGxpbmsgbG9jIGRlbHRhXG4gIClcblxubGV0IHJlYyBlcmFzZV9pbmNyIChzaWdzIDogU2lnbmF0dXJlLnMpIChpIDogaW50KSAoaW5jcnMgOiBMS2FwcGEucnVsZV9taXh0dXJlKVxuICAgIChkZWx0YSA6IGludCkgKGxpbmsgOiBpbnQpIDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIG1hdGNoIGluY3JzIHdpdGhcbiAgfCBpbmNyIDo6IGluY3JfcyAtPlxuICAgIGlmIGkgPSBhYnMgZGVsdGEgdGhlbiAoXG4gICAgICBsZXQgYmVmb3JlLCBfID0gaW5jci5MS2FwcGEucmFfcG9ydHMuKHBvcnRfYikgaW5cbiAgICAgIGluY3IuTEthcHBhLnJhX3BvcnRzLihwb3J0X2IpIDwtIGJlZm9yZSwgTEthcHBhLkxpbmtlZCBsaW5rO1xuICAgICAgaW5jciA6OiBpbmNyX3NcbiAgICApIGVsc2UgKFxuICAgICAgQXJyYXkuaXRlcmlcbiAgICAgICAgKGZ1biBpIChhLCBfKSAtPiBpbmNyLkxLYXBwYS5yYV9wb3J0cy4oaSkgPC0gYSwgTEthcHBhLkVyYXNlZClcbiAgICAgICAgaW5jci5MS2FwcGEucmFfcG9ydHM7XG4gICAgICBsZXQgcnVsZV9hZ2VudCA9IHsgaW5jciB3aXRoIExLYXBwYS5yYV9lcmFzZWQgPSB0cnVlIH0gaW5cbiAgICAgIHJ1bGVfYWdlbnQgOjogZXJhc2VfaW5jciBzaWdzIChpICsgMSkgaW5jcl9zIGRlbHRhIGxpbmtcbiAgICApXG4gIHwgW10gLT4gW11cblxuKCoqIFJldHVybnMgbWl4dHVyZXMgZm9yIGFnZW50IHdpdGggc2l0ZSBjaGFuZ2VkIGZyb20gY291bnRlciB0byBwb3J0LCBhcyB3ZWxsIGFzIG5ldyBbbGlua19uYl0gYWZ0ZXIgcHJldmlvdXMgYWRkaXRpb25zXG4gKiBVc2VkIGJ5IFtjb21waWxlX2NvdW50ZXJfaW5fcnVsZV9hZ2VudF0qKVxubGV0IGNvdW50ZXJfYmVjb21lc19wb3J0IChzaWdzIDogU2lnbmF0dXJlLnMpIChyYSA6IExLYXBwYS5ydWxlX2FnZW50KVxuICAgIChwb3J0X2lkIDogaW50KSAoY291bnRlciA6IEFzdC5jb3VudGVyKSAoc3RhcnRfbGlua19uYiA6IGludCkgOlxuICAgIChMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCkgKiBpbnQgPVxuICAoKiBSZXR1cm5zIHBvc2l0aXZlIHBhcnQgb2YgdmFsdWUgKilcbiAgbGV0IHBvc2l0aXZlX3BhcnQgKGkgOiBpbnQpIDogaW50ID1cbiAgICBpZiBpIDwgMCB0aGVuXG4gICAgICAwXG4gICAgZWxzZVxuICAgICAgaVxuICBpblxuXG4gIGxldCBsb2MgOiBMb2MudCA9IExvYy5nZXRfYW5ub3QgY291bnRlci5Bc3QuY291bnRlcl9uYW1lIGluXG4gIGxldCAoZGVsdGEsIGxvY19kZWx0YSkgOiBpbnQgKiBMb2MudCA9IGNvdW50ZXIuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgbGV0IGNvdW50ZXJfdGVzdCA6IEFzdC5jb3VudGVyX3Rlc3QgTG9jLmFubm90ZWQgPVxuICAgIE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZVxuICAgICAgfmV4Y2VwOlxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIlxuICAgICAgICAgICAgIF4gTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgXiBcIiBzaG91bGQgaGF2ZSBhIHRlc3QgYnkgbm93XCIsXG4gICAgICAgICAgICAgbG9jICkpXG4gICAgICBjb3VudGVyLkFzdC5jb3VudGVyX3Rlc3RcbiAgaW5cbiAgbGV0ICh0ZXN0LCBlcXVhbCkgOiBpbnQgKiBib29sID1cbiAgICBtYXRjaCBMb2MudiBjb3VudGVyX3Rlc3Qgd2l0aFxuICAgIHwgQXN0LkNWQVIgXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgKCBcIkNvdW50ZXIgXCJcbiAgICAgICAgICAgICBeIExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZVxuICAgICAgICAgICAgIF4gXCIgZGVmaW5lcyBhIHZhcmlhYmxlLCB3aGljaCBzaG91bGQgaGF2ZSBiZWVuIHJlcGxhY2VkIGJ5IENFUSBcXFxuICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMgYWZ0ZXIgcnVsZSBzcGxpdHRpbmdcIixcbiAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfdGVzdCApKVxuICAgIHwgQXN0LkNFUSBqIC0+IGosIHRydWVcbiAgICB8IEFzdC5DR1RFIGogLT4gaiwgZmFsc2VcbiAgICB8IEFzdC5DTFRFIF9qIC0+IGZhaWx3aXRoIFwibm90IGltcGxlbWVudGVkXCIgKCogVE9ET8Kgbm93ICopXG4gIGluXG4gIGxldCBzdGFydF9saW5rX2Zvcl9jcmVhdGVkIDogaW50ID0gc3RhcnRfbGlua19uYiArIHRlc3QgKyAxIGluXG4gIGxldCBsaW5rX2Zvcl9lcmFzZWQgOiBpbnQgPSBzdGFydF9saW5rX25iICsgYWJzIGRlbHRhIGluXG4gIGxldCBhZ19pbmZvIDogKGludCAqIGludCkgKiBib29sID1cbiAgICAocG9ydF9pZCwgcmEuTEthcHBhLnJhX3R5cGUpLCByYS5MS2FwcGEucmFfZXJhc2VkXG4gIGluXG5cbiAgbGV0IHRlc3RfaW5jciA6IExLYXBwYS5ydWxlX21peHR1cmUgPVxuICAgIGxpbmtfaW5jciBzaWdzIDAgKHRlc3QgKyAxKSBhZ19pbmZvIGVxdWFsIHN0YXJ0X2xpbmtfbmIgbG9jIGRlbHRhXG4gIGluXG4gIGxldCBhZGp1c3RfZGVsdGEgOiBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgICBpZiBkZWx0YSA8IDAgdGhlblxuICAgICAgZXJhc2VfaW5jciBzaWdzIDAgdGVzdF9pbmNyIGRlbHRhIGxpbmtfZm9yX2VyYXNlZFxuICAgIGVsc2VcbiAgICAgIHRlc3RfaW5jclxuICBpblxuICBsZXQgY3JlYXRlZCA6IFJhd19taXh0dXJlLnQgPVxuICAgIGlmIGRlbHRhID4gMCB0aGVuXG4gICAgICBhZGRfaW5jciAwIHN0YXJ0X2xpbmtfZm9yX2NyZWF0ZWQgc3RhcnRfbGlua19uYiBkZWx0YSBmYWxzZSBzaWdzXG4gICAgZWxzZVxuICAgICAgW11cbiAgaW5cblxuICBpZiB0ZXN0ICsgZGVsdGEgPCAwIHRoZW5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChcIkNvdW50ZXIgdGVzdCBzaG91bGQgYmUgZ3JlYXRlciB0aGVuIGFicyhkZWx0YSlcIiwgbG9jX2RlbHRhKSk7XG5cbiAgbGV0IHN3aXRjaCA6IExLYXBwYS5zd2l0Y2hpbmcgPVxuICAgIGlmIGRlbHRhID0gMCB0aGVuXG4gICAgICBpZiByYS5MS2FwcGEucmFfZXJhc2VkIHRoZW5cbiAgICAgICAgTEthcHBhLkVyYXNlZFxuICAgICAgZWxzZVxuICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgIGVsc2UgaWYgZGVsdGEgPiAwIHRoZW5cbiAgICAgIExLYXBwYS5MaW5rZWQgc3RhcnRfbGlua19mb3JfY3JlYXRlZFxuICAgIGVsc2VcbiAgICAgIExLYXBwYS5MaW5rZWQgbGlua19mb3JfZXJhc2VkXG4gIGluXG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgOiBpbnQgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIHJhLkxLYXBwYS5yYV9wb3J0cy4ocG9ydF9pZCkgPC1cbiAgICAoIChMS2FwcGEuTE5LX1ZBTFVFIChzdGFydF9saW5rX25iLCAocG9ydF9iLCBjb3VudGVyX2FnZW50X2luZm8uaWQpKSwgbG9jKSxcbiAgICAgIHN3aXRjaCApO1xuICBsZXQgbmV3X2xpbmtfbmIgOiBpbnQgPSBzdGFydF9saW5rX25iICsgMSArIHRlc3QgKyBwb3NpdGl2ZV9wYXJ0IGRlbHRhIGluXG5cbiAgKGFkanVzdF9kZWx0YSwgY3JlYXRlZCksIG5ld19saW5rX25iXG5cbigqKiBDb21waWxlcyB0aGUgY291bnRlciBwcmVjb25kaXRpb24gaW4gYSBsZWZ0IGhhbmQgc2lkZSBtaXh0dXJlIG9mIGEgcnVsZSBpbnRvIGEgbWl4dHVyZSB3aGljaCB0ZXN0cyBkdW1teSBwb3NpdGlvbnNcbiAqIHJ1bGVfYWdlbnRfIC0gYWdlbnQgd2l0aCBjb3VudGVycyBpbiBhIHJ1bGVcbiAgIGxua19uYiAtIHRoZSBtYXggbGluayBudW1iZXIgdXNlZCBpbiB0aGUgcnVsZTtcbiAgIHNpZ3MuY291bnRlcl9hZ2VudF9pbmZvIC0gaW5mbyBvbiB0aGUgY291bnRlciBhZ2VudFxuICAgcmV0dXJuczogYWdlbnQgd2l0aCBleHBsaWNpdCBjb3VudGVyczsgY3JlYXRlZCBpbmNyIGFnZW50cztcbiAgICAgICAgICAgIHRoZSBuZXh0IGxpbmsgbnVtYmVyIHRvIHVzZSAqKVxubGV0IGNvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50IChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKHJ1bGVfYWdlbnRfIDogTEthcHBhLnJ1bGVfYWdlbnQgd2l0aF9hZ2VudF9jb3VudGVycykgKGxua19uYiA6IGludCkgOlxuICAgIExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ICogaW50ID1cbiAgbGV0IChpbmNycywgbG5rX25iJykgOiAoTEthcHBhLnJ1bGVfbWl4dHVyZSAqIFJhd19taXh0dXJlLnQpIGxpc3QgKiBpbnQgPVxuICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgIChmdW4gaWQgKGFjY19pbmNycywgbG5rX25iKSAtPiBmdW5jdGlvblxuICAgICAgICB8IE5vbmUgLT4gYWNjX2luY3JzLCBsbmtfbmJcbiAgICAgICAgfCBTb21lIChjb3VudGVyLCBfKSAtPlxuICAgICAgICAgIGxldCBuZXdfaW5jcnMsIG5ld19sbmtfbmIgPVxuICAgICAgICAgICAgY291bnRlcl9iZWNvbWVzX3BvcnQgc2lncyBydWxlX2FnZW50Xy5hZ2VudCBpZCBjb3VudGVyIGxua19uYlxuICAgICAgICAgIGluXG4gICAgICAgICAgbmV3X2luY3JzIDo6IGFjY19pbmNycywgbmV3X2xua19uYlxuICAgICAgICAoKiBKRjogbGluayBpZHMgd2VyZSBjb2xsaWRpbmcgYWZ0ZXIgY291bnRlciBkZWNyZW1lbnRhdGlvbnMgLT4gSSBkbyBub3QgdGhpbmsgdGhhdCB3ZSBzaG91bGQgYWRkIGRlbHRhIHdoZW4gbmVnYXRpdmUgKikpXG4gICAgICAoW10sIGxua19uYikgcnVsZV9hZ2VudF8uY291bnRlcnNcbiAgaW5cbiAgbGV0IChhbHMsIGJscykgOiBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biAoYWxzLCBibHMpIChhLCBiKSAtPiBhIEAgYWxzLCBiIEAgYmxzKSAoW10sIFtdKSBpbmNyc1xuICBpblxuICBhbHMsIGJscywgbG5rX25iJ1xuXG4oKiogQ29tcGlsZXMgdGhlIGNvdW50ZXIgdmFsdWUgY2hhbmdlIGluIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgYSBydWxlIGludG8gZHVtbXkgY2hhaW4gY2hhbmdlcyAqKVxubGV0IGNvbXBpbGVfY291bnRlcl9pbl9yYXdfYWdlbnQgKHNpZ3MgOiBTaWduYXR1cmUucylcbiAgICAocmF3X2FnZW50XyA6IFJhd19taXh0dXJlLmFnZW50IHdpdGhfYWdlbnRfY291bnRlcnMpIChsbmtfbmIgOiBpbnQpIDpcbiAgICBSYXdfbWl4dHVyZS5hZ2VudCBsaXN0ICogaW50ID1cbiAgbGV0IHJhd19hZ2VudCA6IFJhd19taXh0dXJlLmFnZW50ID0gcmF3X2FnZW50Xy5hZ2VudCBpblxuICBsZXQgcG9ydHMgOiBSYXdfbWl4dHVyZS5saW5rIGFycmF5ID0gcmF3X2FnZW50LlJhd19taXh0dXJlLmFfcG9ydHMgaW5cbiAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aVxuICAgIChmdW4gcG9ydF9pZCAoYWNjLCBsbmtfbmIpIC0+IGZ1bmN0aW9uXG4gICAgICB8IE5vbmUgLT4gYWNjLCBsbmtfbmJcbiAgICAgIHwgU29tZSAoYywgXykgLT5cbiAgICAgICAgKG1hdGNoIGMuQXN0LmNvdW50ZXJfdGVzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiXG4gICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfYWdlbnQgc2lncylcbiAgICAgICAgICAgICAgcmF3X2FnZW50LlJhd19taXh0dXJlLmFfdHlwZVxuICAgICAgICAgIGluXG4gICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJjb3VudGVyXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICAgIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgIHwgU29tZSAodGVzdCwgXykgLT5cbiAgICAgICAgICAobWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBBc3QuQ0dURSBfIHwgQXN0LkNMVEUgXyB8IEFzdC5DVkFSIF8gLT5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lID1cbiAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X2FnZW50IHNpZ3MpXG4gICAgICAgICAgICAgICAgcmF3X2FnZW50LlJhd19taXh0dXJlLmFfdHlwZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiY291bnRlclwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBBc3QuQ0VRIGogLT5cbiAgICAgICAgICAgIGxldCBwID0gUmF3X21peHR1cmUuVkFMIGxua19uYiBpblxuICAgICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBvcnRfaWQpIDwtIHAgaW5cbiAgICAgICAgICAgIGxldCBpbmNycyA9IGFkZF9pbmNyIDAgbG5rX25iIChsbmtfbmIgKyBqKSAoaiArIDEpIHRydWUgc2lncyBpblxuICAgICAgICAgICAgYWNjIEAgaW5jcnMsIGxua19uYiArIGogKyAxKSkpXG4gICAgKFtdLCBsbmtfbmIpIHJhd19hZ2VudF8uY291bnRlcnNcblxubGV0IHJhd19hZ2VudF9oYXNfY291bnRlcnMgKGFnXyA6ICdhIHdpdGhfYWdlbnRfY291bnRlcnMpIDogYm9vbCA9XG4gIEFycmF5LmZvbGRfbGVmdCAoZnVuIG9rIHggLT4geCA8PiBOb25lIHx8IG9rKSBmYWxzZSBhZ18uY291bnRlcnNcblxubGV0IHJ1bGVfYWdlbnRfaGFzX2NvdW50ZXJzIChydWxlX2FnZW50IDogTEthcHBhLnJ1bGVfYWdlbnQpXG4gICAgKHNpZ3MgOiBTaWduYXR1cmUucykgOiBib29sID1cbiAgU2lnbmF0dXJlLmhhc19jb3VudGVyIChTaWduYXR1cmUuZ2V0IHNpZ3MgcnVsZV9hZ2VudC5yYV90eXBlKVxuXG4oKiogW2NvbXBpbGVfY291bnRlcl9pbl9ydWxlIHNpZ3MgbWl4IGNyZWF0ZWRdIHRha2VzIHRoZSBpbnRpYWwgbWl4dHVyZSBmcm9tIGEgcnVsZSBbbWl4XSxcbiAqIGFuZCB0aGUgbWl4dHVyZSBvYnRhaW5lZCBmcm9tIHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgcnVsZSBbY3JlYXRlZF0sXG4gKiBib3RoIHdpdGggY291bnRlciBpbmZvcm1hdGlvbiwgYW5kIHJldHVybnMgdHdvIG1peHR1cmVzIGZvciBhIG5ldyBydWxlIHdpdGhvdXQgY291bnRlcnMsIGhhdmluZyBjb21waWxlZCB0aGUgY291bnRlciBsb2dpYyBpbnNpZGUgdGhlIHJ1bGUuXG4gKlxuICogLSBhZGRzIGluY3JlbWVudCBhZ2VudHMgdG8gdGhlIHJ1bGVfYWdlbnQgbWl4dHVyZVxuICAgLSBhZGRzIGluY3JlbWVudCBhZ2VudHMgdG8gdGhlIHJhdyBtaXh0dXJlXG4gICAtIGxpbmtzIHRoZSBhZ2VudHMgaW4gdGhlIG1peHR1cmUobGhzLHJocyxtaXgpIG9yIGluIHRoZSByYXcgbWl4dHVyZShjcmVhdGVkKVxuICAgICB0byB0aGUgaW5jcmVtZW50cyAqKVxubGV0IGNvbXBpbGVfY291bnRlcl9pbl9ydWxlIChzaWdzIDogU2lnbmF0dXJlLnMpXG4gICAgKG1peCA6IHJ1bGVfbWl4dHVyZV93aXRoX2FnZW50X2NvdW50ZXJzKVxuICAgIChjcmVhdGVkIDogcmF3X21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycykgOlxuICAgIExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ID1cbiAgbGV0IGhhc19jb3VudGVycyA6IGJvb2wgPVxuICAgIExpc3QuZXhpc3RzXG4gICAgICAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfaGFzX2NvdW50ZXJzIHJ1bGVfYWdlbnRfLmFnZW50IHNpZ3MpXG4gICAgICBtaXhcbiAgICB8fCBMaXN0LmV4aXN0cyAoZnVuIHJhd19hZ2VudF8gLT4gcmF3X2FnZW50X2hhc19jb3VudGVycyByYXdfYWdlbnRfKSBjcmVhdGVkXG4gIGluXG4gIGlmIGhhc19jb3VudGVycyB0aGVuIChcbiAgICBsZXQgbG5rX25iIDogaW50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG0gOiBpbnQpIHJ1bGVfYWdlbnRfIC0+XG4gICAgICAgICAgbWF4IG0gKExLYXBwYS5tYXhfbGlua19pZCBbIHJ1bGVfYWdlbnRfLmFnZW50IF0pKVxuICAgICAgICAwIG1peFxuICAgIGluXG5cbiAgICBsZXQgKGluY3JzLCBpbmNyc19jcmVhdGVkLCBsbmtfbmInKSA6XG4gICAgICAgIExLYXBwYS5ydWxlX21peHR1cmUgKiBSYXdfbWl4dHVyZS50ICogaW50ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKG1peF9pbmNyLCBjcmVhdGVkX2luY3IsIGxua19uYikgcnVsZV9hZ2VudF8gLT5cbiAgICAgICAgICBsZXQgbWl4X2luY3JfbmV3LCBjcmVhdGVkX2luY3JfbmV3LCBsbmtfbmInID1cbiAgICAgICAgICAgIGNvbXBpbGVfY291bnRlcl9pbl9ydWxlX2FnZW50IHNpZ3MgcnVsZV9hZ2VudF8gbG5rX25iXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtaXhfaW5jcl9uZXcgQCBtaXhfaW5jciwgY3JlYXRlZF9pbmNyX25ldyBAIGNyZWF0ZWRfaW5jciwgbG5rX25iJyArIDEpXG4gICAgICAgIChbXSwgW10sIGxua19uYiArIDEpXG4gICAgICAgIG1peFxuICAgIGluXG4gICAgbGV0IGluY3JzX2NyZWF0ZWQnIDogUmF3X21peHR1cmUudCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChjcmVhdGVkX2luY3IsIGxua19uYikgcmF3X2FnZW50XyAtPlxuICAgICAgICAgIGxldCBjcmVhdGVkX2luY3JfbmV3LCBsbmtfbmInJyA9XG4gICAgICAgICAgICBjb21waWxlX2NvdW50ZXJfaW5fcmF3X2FnZW50IHNpZ3MgcmF3X2FnZW50XyBsbmtfbmJcbiAgICAgICAgICBpblxuICAgICAgICAgIGNyZWF0ZWRfaW5jcl9uZXcgQCBjcmVhdGVkX2luY3IsIGxua19uYicnKVxuICAgICAgICAoW10sIGxua19uYicgKyAxKVxuICAgICAgICBjcmVhdGVkXG4gICAgICB8PiBmc3RcbiAgICAgICgqIFdlIGRyb3AgdGhlIGxua19uYiBhcyB3ZSBkb24ndCBuZWVkIGluIHRoZSBmb2xsb3dpbmcgKilcbiAgICBpblxuXG4gICAgKCogUmV0dXJuIGluaXRpYWwgbWl4dHVyZXMgd2l0aCBuZXcgYWdlbnRzIGluIHJ1bGUgZnJvbSBjb3VudGVyIGNvbXBpbGF0aW9uICopXG4gICAgbGV0IHJ1bGVfYWdlbnRfbWl4IDogTEthcHBhLnJ1bGVfbWl4dHVyZSA9XG4gICAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmQgKGZ1biBydWxlX2FnZW50XyAtPiBydWxlX2FnZW50Xy5hZ2VudCkgbWl4IGluY3JzXG4gICAgaW5cbiAgICBsZXQgcmF3X21peCA6IFJhd19taXh0dXJlLnQgPVxuICAgICAgTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAgIChmdW4gcmF3X2FnZW50XyAtPiByYXdfYWdlbnRfLmFnZW50KVxuICAgICAgICBjcmVhdGVkXG4gICAgICAgIChpbmNyc19jcmVhdGVkIEAgaW5jcnNfY3JlYXRlZCcpXG4gICAgaW5cbiAgICBydWxlX2FnZW50X21peCwgcmF3X21peFxuICApIGVsc2VcbiAgICAoIExpc3QucmV2X21hcCAoZnVuIHJ1bGVfYWdlbnRfIC0+IHJ1bGVfYWdlbnRfLmFnZW50KSAoTGlzdC5yZXYgbWl4KSxcbiAgICAgIExpc3QucmV2X21hcCAoZnVuIHJhd19hZ2VudF8gLT4gcmF3X2FnZW50Xy5hZ2VudCkgKExpc3QucmV2IGNyZWF0ZWQpIClcblxubGV0IHJ1bGVfYWdlbnRfd2l0aF9tYXhfY291bnRlciBzaWdzIGMgKChhZ2VudF9uYW1lLCBsb2NfYWcpIGFzIGFnZW50X3R5cGUpIDpcbiAgICBMS2FwcGEucnVsZV9taXh0dXJlID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ2VudF90eXBlIHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWQpXG4gIGluXG4gIGxldCBpbnRlcm5hbHMgPSBBcnJheS5tYWtlIGFyaXR5IExLYXBwYS5JX0FOWSBpblxuICBsZXQgY19uYSA9IGMuQXN0LmNvdW50ZXJfc2lnX25hbWUgaW5cbiAgbGV0IGNfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgY19uYSBzaWduIGluXG4gIGxldCBtYXhfdmFsLCBsb2MgPVxuICAgIG1hdGNoIGMuQXN0LmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgfCBTb21lIChTb21lIG1heCwgbG9jKSAtPiBtYXgsIGxvY1xuICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoIFwiQ291bnRlciBcIiBeIGZzdCBjX25hIF4gXCIgaW4gXCIgXiBhZ2VudF9uYW1lXG4gICAgICAgICAgICAgXiBcIiBzaG91bGQgaGF2ZSBhbiB1cHBlciBib3VuZFwiLFxuICAgICAgICAgICAgIGxvY19hZyApKVxuICBpblxuICBsZXQgbWF4X3ZhbCcgPSBtYXhfdmFsICsgMSBpblxuICBsZXQgaW5jcnMgPVxuICAgIGxpbmtfaW5jciBzaWdzIDAgKG1heF92YWwnICsgMSkgKChjX2lkLCBhZ19pZCksIGZhbHNlKSBmYWxzZSAxIGxvYyAoLTEpXG4gIGluXG4gIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gIGxldCBwb3J0X2IgPSBmc3QgY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGxldCBwID0gTEthcHBhLkxOS19WQUxVRSAoMSwgKHBvcnRfYiwgY291bnRlcl9hZ2VudF9pbmZvLmlkKSksIGxvYyBpblxuICBwb3J0cy4oY19pZCkgPC0gcCwgTEthcHBhLk1haW50YWluZWQ7XG4gIGxldCByYSA6IExLYXBwYS5ydWxlX2FnZW50ID1cbiAgICB7XG4gICAgICBMS2FwcGEucmFfdHlwZSA9IGFnX2lkO1xuICAgICAgcmFfcG9ydHMgPSBwb3J0cztcbiAgICAgIHJhX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgICByYV9lcmFzZWQgPSBmYWxzZTtcbiAgICAgIHJhX3N5bnRheCA9IFNvbWUgKEFycmF5LmNvcHkgcG9ydHMsIEFycmF5LmNvcHkgaW50ZXJuYWxzKTtcbiAgICB9XG4gIGluXG4gIHJhIDo6IGluY3JzXG5cbmxldCBjb3VudGVyX3BlcnR1cmJhdGlvbiBzaWdzIGMgYWdlbnRfdHlwZSA9XG4gIGxldCBhbm5vdCA9IExvYy5nZXRfYW5ub3QgYy5Bc3QuY291bnRlcl9zaWdfbmFtZSBpblxuICBsZXQgZmlsZW5hbWUgPSBbIFByaW1pdGl2ZXMuU3RyX3BleHByIChcImNvdW50ZXJfcGVydHVyYmF0aW9uLmthXCIsIGFubm90KSBdIGluXG4gIGxldCBzdG9wX21lc3NhZ2UgPVxuICAgIFwiQ291bnRlciBcIlxuICAgIF4gTG9jLnYgYy5Bc3QuY291bnRlcl9zaWdfbmFtZVxuICAgIF4gXCIgb2YgYWdlbnQgXCIgXiBMb2MudiBhZ2VudF90eXBlIF4gXCIgcmVhY2hlZCBtYXhpbXVtXCJcbiAgaW5cbiAgbGV0IG1vZHMgPVxuICAgIFtcbiAgICAgIEFzdC5QUklOVCAoW10sIFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKFwiXCIsIGFubm90KSBdKTtcbiAgICAgIEFzdC5QUklOVCAoW10sIFsgUHJpbWl0aXZlcy5TdHJfcGV4cHIgKHN0b3BfbWVzc2FnZSwgYW5ub3QpIF0pO1xuICAgICAgQXN0LlNUT1AgZmlsZW5hbWU7XG4gICAgXVxuICBpblxuICBsZXQgdmFsX29mX2NvdW50ZXIgPVxuICAgIEFsZ19leHByLktBUFBBX0lOU1RBTkNFIChydWxlX2FnZW50X3dpdGhfbWF4X2NvdW50ZXIgc2lncyBjIGFnZW50X3R5cGUpXG4gIGluXG4gIGxldCBwcmUgPVxuICAgIEFsZ19leHByLkNPTVBBUkVfT1BcbiAgICAgICggT3BlcmF0b3IuRVFVQUwsXG4gICAgICAgICh2YWxfb2ZfY291bnRlciwgYW5ub3QpLFxuICAgICAgICAoQWxnX2V4cHIuQ09OU1QgKE5ici5JIDEpLCBhbm5vdCkgKVxuICBpblxuICAoIE5vbmUsXG4gICAgU29tZSAocHJlLCBMb2MuZ2V0X2Fubm90IGFnZW50X3R5cGUpLFxuICAgIG1vZHMsXG4gICAgU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIClcblxubGV0IGNvdW50ZXJzX3BlcnR1cmJhdGlvbnMgc2lncyBhc3Rfc2lncyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gYWNjIC0+IGZ1bmN0aW9uXG4gICAgICAgfCBBc3QuQWJzZW50IF8gLT4gYWNjXG4gICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIF8pIC0+XG4gICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAoZnVuIGFjYycgc2l0ZSAtPlxuICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MnXG4gICAgICAgICAgICAgfCBBc3QuQ291bnRlciBjIC0+XG4gICAgICAgICAgICAgICAoY291bnRlcl9wZXJ0dXJiYXRpb24gc2lncyBjIGFnZW50X3R5cGUsIExvYy5nZXRfYW5ub3QgYWdlbnRfdHlwZSlcbiAgICAgICAgICAgICAgIDo6IGFjYycpXG4gICAgICAgICAgIGFjYyBzaXRlcykpXG4gICAgW10gYXN0X3NpZ3NcblxubGV0IG1ha2VfY291bnRlciBpIG5hbWUgPVxuICB7XG4gICAgQXN0LmNvdW50ZXJfbmFtZSA9IExvYy5hbm5vdF93aXRoX2R1bW15IG5hbWU7XG4gICAgY291bnRlcl90ZXN0ID0gU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFzdC5DRVEgaSkpO1xuICAgIGNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwO1xuICB9XG5cbmxldCBhZGRfY291bnRlcl90b19jb250YWN0X21hcCBzaWdzIGFkZF9saW5rX2NvbnRhY3RfbWFwID1cbiAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgbGV0IHBvcnRfYiwgcG9ydF9hID0gY291bnRlcl9hZ2VudF9pbmZvLnBvcnRzIGluXG4gIGFkZF9saW5rX2NvbnRhY3RfbWFwIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2EgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuXG5sZXQgcmFpc2VfaWZfbW9kaWZpY2F0aW9uIChkZWx0YSwgbG9jKSA9XG4gIGlmIGRlbHRhICE9IDAgdGhlbiBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIGxvYyAoU29tZSBkZWx0YSlcblxubGV0IGFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMgc2lnbiBhc3RfY291bnRlcnMgcmEgYXJpdHkgYWdlbnRfbmFtZSBhdXggPVxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwb3J0X2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBvcnRfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmFpc2VfaWZfbW9kaWZpY2F0aW9uIGMuQXN0LmNvdW50ZXJfZGVsdGEgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdXggd2l0aFxuICAgICAgICAgIHwgU29tZSBmIC0+IGYgcG9ydF9pZFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC0gU29tZSAoYywgTEthcHBhLkVyYXNlZCk7XG4gICAgICAgIHBzZXQnKVxuICAgICAgTW9kcy5JbnRTZXQuZW1wdHkgYXN0X2NvdW50ZXJzXG4gIGluXG4gIHsgYWdlbnQgPSByYTsgY291bnRlcnMgPSByYV9jb3VudGVycyB9XG5cbmxldCBhbm5vdGF0ZV9lZGl0X2NvdW50ZXJzIHNpZ3MgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ2VudF90eXBlKSBjb3VudGVycyByYVxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ2VudF90eXBlIHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHJhX2NvdW50ZXJzID0gQXJyYXkubWFrZSBhcml0eSBOb25lIGluXG4gIGxldCByZWdpc3Rlcl9jb3VudGVyX21vZGlmIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2JcbiAgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwb3J0X2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lXG4gICAgICAgICAgfCBTb21lIF8gLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBvcnRfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBwb3J0X2lkIGluXG4gICAgICAgIGxldCAoKSA9IHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LSBTb21lIChjLCBMS2FwcGEuTWFpbnRhaW5lZCkgaW5cbiAgICAgICAgcHNldCcpXG4gICAgICBNb2RzLkludFNldC5lbXB0eSBjb3VudGVyc1xuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfY291bnRlcnNfd2l0aF9kaWZmIHNpZ3MgKChhZ2VudF9uYW1lLCBsb2MpIGFzIGFnZW50X3R5cGUpIGxjIHJjIHJhXG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjIGNfaWQgPVxuICAgIGxldCBjb3VudGVyX2FnZW50X2luZm8gPSBTaWduYXR1cmUuZ2V0X2NvdW50ZXJfYWdlbnRfaW5mbyBzaWdzIGluXG4gICAgbGV0IHBvcnRfYiA9IGZzdCBjb3VudGVyX2FnZW50X2luZm8ucG9ydHMgaW5cbiAgICBsZXQgKCkgPSBhZGRfbGlua19jb250YWN0X21hcCBhZ19pZCBjX2lkIGNvdW50ZXJfYWdlbnRfaW5mby5pZCBwb3J0X2IgaW5cbiAgICBjLCBMS2FwcGEuTWFpbnRhaW5lZFxuICBpblxuICBsZXQgcmFfY291bnRlcnMgPSBBcnJheS5tYWtlIGFyaXR5IE5vbmUgaW5cbiAgbGV0IHJjX3IsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChyYywgY3NldCkgYyAtPlxuICAgICAgICBsZXQgKChuYSwgXykgYXMgY291bnRlcl9uYW1lKSA9IGMuQXN0LmNvdW50ZXJfbmFtZSBpblxuICAgICAgICBsZXQgY19pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBjb3VudGVyX25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgY3NldCcgPSBNb2RzLkludFNldC5hZGQgY19pZCBjc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgY3NldCA9PSBjc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGNvdW50ZXJfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYycsIHJjJyA9XG4gICAgICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgICAgIChmdW4gcCAtPiBTdHJpbmcuY29tcGFyZSAoTG9jLnYgcC5Bc3QuY291bnRlcl9uYW1lKSBuYSA9IDApXG4gICAgICAgICAgICByY1xuICAgICAgICBpblxuICAgICAgICBsZXQgYycnID1cbiAgICAgICAgICBtYXRjaCBjJyB3aXRoXG4gICAgICAgICAgfCBfIDo6IFtdIHwgW10gLT4gcmVnaXN0ZXJfY291bnRlcl9tb2RpZiBjIGNfaWRcbiAgICAgICAgICB8IF8gOjogXyAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBjb3VudGVyX25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcmFfY291bnRlcnMuKGNfaWQpIDwtIFNvbWUgYycnIGluXG4gICAgICAgIHJjJywgY3NldCcpXG4gICAgICAocmMsIE1vZHMuSW50U2V0LmVtcHR5KSBsY1xuICBpblxuICBsZXQgXyA9XG4gICAgKCogdGVzdCBpZiBjb3VudGVyIG9mIHJocyBpcyBpbiB0aGUgc2lnbmF0dXJlICopXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYyAtPiBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgYy5Bc3QuY291bnRlcl9uYW1lIHNpZ24pXG4gICAgICByY19yXG4gIGluXG4gIGlmIChub3QgKHJjID0gW10pKSAmJiBub3QgKHJjX3IgPSBbXSkgdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgKFwiQ291bnRlcnMgaW4gXCIgXiBhZ2VudF9uYW1lIF4gXCIgc2hvdWxkIGhhdmUgdGVzdHMgYnkgbm93XCIsIGxvYykpO1xuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuXG5sZXQgYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzICgoYWdlbnRfbmFtZSwgXykgYXMgYWdlbnRfdHlwZSkgY291bnRlcl9saXN0XG4gICAgYWRkX2xpbmtfY29udGFjdF9tYXAgcmEgPVxuICBsZXQgYWdlbnRfaWQgOiBpbnQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnZW50X3R5cGUgc2lncyBpblxuICBsZXQgYWdlbnRfc2lnbmF0dXJlIDogU2lnbmF0dXJlLnQgPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdlbnRfaWQgaW5cbiAgbGV0IGFyaXR5IDogaW50ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdlbnRfaWQgaW5cbiAgbGV0IHJhX2NvdW50ZXJzIDogKEFzdC5jb3VudGVyICogTEthcHBhLnN3aXRjaGluZykgb3B0aW9uIGFycmF5ID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IE5vbmVcbiAgaW5cblxuICAoKiByZWdpc3RlciBhbGwgY291bnRlcnMgKHNwZWNpZmllZCBvciBub3QpIHdpdGggZGVmYXVsdCB2YWx1ZSAqKVxuICBBcnJheS5pdGVyaVxuICAgIChmdW4gcG9ydF9pZCBfIC0+XG4gICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIHdpdGhcbiAgICAgIHwgU29tZSBjb3VudGVyX2luZm8gLT5cbiAgICAgICAgbGV0IGNvdW50ZXJfbmFtZSA9IFNpZ25hdHVyZS5zaXRlX29mX251bSBwb3J0X2lkIGFnZW50X3NpZ25hdHVyZSBpblxuICAgICAgICAodHJ5XG4gICAgICAgICAgICgqIGZpbmQgY291bnRlciBtYXRjaGluZyBwb3J0ICopXG4gICAgICAgICAgIGxldCBjIDogQXN0LmNvdW50ZXIgPVxuICAgICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgICAgKGZ1biBjJyAtPlxuICAgICAgICAgICAgICAgICBTdHJpbmcuY29tcGFyZSAoTG9jLnYgYycuQXN0LmNvdW50ZXJfbmFtZSkgY291bnRlcl9uYW1lID0gMClcbiAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICByYV9jb3VudGVycy4ocG9ydF9pZCkgPC1cbiAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAoIHtcbiAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3Rlc3QgPSBjLkFzdC5jb3VudGVyX3Rlc3Q7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAwLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkIClcbiAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgIHJhX2NvdW50ZXJzLihwb3J0X2lkKSA8LVxuICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICgge1xuICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX25hbWUgPSBjb3VudGVyX25hbWUgfD4gTG9jLmFubm90X3dpdGhfZHVtbXk7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgIChBc3QuQ0VRIGNvdW50ZXJfaW5mby5jb3VudGVyX2RlZmF1bHRfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICB8PiBMb2MuYW5ub3Rfd2l0aF9kdW1teSk7XG4gICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAwLCBMb2MuZHVtbXk7XG4gICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgIExLYXBwYS5NYWludGFpbmVkICkpXG4gICAgICB8IE5vbmUgLT4gKCkpXG4gICAgcmFfY291bnRlcnM7XG5cbiAgbGV0IHJlZ2lzdGVyX2NvdW50ZXJfbW9kaWYgY19pZCA9XG4gICAgbGV0IGNvdW50ZXJfYWdlbnRfaW5mbyA9IFNpZ25hdHVyZS5nZXRfY291bnRlcl9hZ2VudF9pbmZvIHNpZ3MgaW5cbiAgICBsZXQgcG9ydF9iID0gZnN0IGNvdW50ZXJfYWdlbnRfaW5mby5wb3J0cyBpblxuICAgIGFkZF9saW5rX2NvbnRhY3RfbWFwIGFnZW50X2lkIGNfaWQgY291bnRlcl9hZ2VudF9pbmZvLmlkIHBvcnRfYlxuICBpblxuICBsZXQgXyA6IE1vZHMuSW50U2V0LnQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIHBzZXQgYyAtPlxuICAgICAgICBsZXQgcG9ydF9uYW1lID0gYy5Bc3QuY291bnRlcl9uYW1lIGluXG4gICAgICAgIGxldCBwb3J0X2lkID1cbiAgICAgICAgICBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIGFnZW50X3NpZ25hdHVyZVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBvcnRfaWQgYWdlbnRfc2lnbmF0dXJlIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBjLkFzdC5jb3VudGVyX25hbWVcbiAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAoKTtcbiAgICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcG9ydF9pZCBwc2V0IGluXG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIGMuQXN0LmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICByZWdpc3Rlcl9jb3VudGVyX21vZGlmIHBvcnRfaWQ7XG4gICAgICAgICAgcmFfY291bnRlcnMuKHBvcnRfaWQpIDwtIFNvbWUgKGMsIExLYXBwYS5NYWludGFpbmVkKTtcbiAgICAgICAgICBwc2V0JylcbiAgICAgIE1vZHMuSW50U2V0LmVtcHR5IGNvdW50ZXJfbGlzdFxuICBpblxuICB7IGFnZW50ID0gcmE7IGNvdW50ZXJzID0gcmFfY291bnRlcnMgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG1hcF9vcHQgZiBvcHQgPSBtYXRjaCBvcHQgd2l0aCB8IE5vbmUgLT4gTm9uZSB8IFNvbWUgYSAtPiBTb21lIChmIGEpXG5cbigqIFRPRE8gb3JpZ2luYWxseV9mcm9tIHRlcm0vbEthcHBhLm1sLCBzZWUgaWYgaXQgbWFrZXMgc2Vuc2UgaGVyZSAqKVxubGV0IHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCAocG9zIDogTG9jLnQpID0gZnVuY3Rpb25cbiAgfCBBc3QuTm9Nb2QgLT4gKClcbiAgfCBBc3QuRXJhc2UgfCBBc3QuQ3JlYXRlIC0+XG4gICAgcmFpc2VcbiAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChcIkEgbW9kaWZpY2F0aW9uIGlzIGZvcmJpZGRlbiBoZXJlLlwiLCBwb3MpKVxuXG5sZXQgYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBzd2l0Y2ggPVxuICBsZXQgdHlfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGRzdF90eSBzaWdzIGluXG4gIGxldCBwX2lkID0gU2lnbmF0dXJlLmlkX29mX3NpdGUgZHN0X3R5IGRzdF9wIHNpZ3MgaW5cbiAgKExLYXBwYS5MTktfVFlQRSAocF9pZCwgdHlfaWQpLCBwb3MpLCBzd2l0Y2hcblxubGV0IGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCBzdHkgc3AgZHR5IGRwID1cbiAgbWF0Y2ggY29udGFjdF9tYXAgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNvbnRhY3RfbWFwIC0+XG4gICAgbGV0IHNpLCBzbCA9IGNvbnRhY3RfbWFwLihzdHkpLihzcCkgaW5cbiAgICBsZXQgZGksIGRsID0gY29udGFjdF9tYXAuKGR0eSkuKGRwKSBpblxuICAgIGxldCAoKSA9IGNvbnRhY3RfbWFwLihzdHkpLihzcCkgPC0gc2ksIE1vZHMuSW50MlNldC5hZGQgKGR0eSwgZHApIHNsIGluXG4gICAgY29udGFjdF9tYXAuKGR0eSkuKGRwKSA8LSBkaSwgTW9kcy5JbnQyU2V0LmFkZCAoc3R5LCBzcCkgZGxcblxubGV0IHJ1bGVfaW5kdWNlc19saW5rX3Blcm11dGF0aW9uIH53YXJuaW5nIH5wb3MgP2RzdF90eSBzaWdzIHNvcnQgc2l0ZSA9XG4gIGxldCB3YXJuaW5nX2Zvcl9jb3VudGVycyA9XG4gICAgaWYgU2lnbmF0dXJlLmlzX2NvdW50ZXJfYWdlbnQgc2lncyBzb3J0IHRoZW5cbiAgICAgIHRydWVcbiAgICBlbHNlIChcbiAgICAgIG1hdGNoIGRzdF90eSB3aXRoXG4gICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgIHwgU29tZSBzIC0+IFNpZ25hdHVyZS5pc19jb3VudGVyX2FnZW50IHNpZ3Mgc1xuICAgIClcbiAgaW5cblxuICBpZiBub3Qgd2FybmluZ19mb3JfY291bnRlcnMgdGhlblxuICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwicnVsZSBpbmR1Y2VzIGEgbGluayBwZXJtdXRhdGlvbiBvbiBzaXRlICclYScgb2YgYWdlbnQgJyVhJ1wiXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9zaXRlIHNpZ3Mgc29ydClcbiAgICAgICAgICBzaXRlXG4gICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgIHNvcnQpXG5cbmxldCBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGFnX3R5IHBfaWQgcG9zID1cbiAgTEthcHBhLnJhaXNlX2xpbmtfc2hvdWxkX2JlX3JlbW92ZWQgaVxuICAgIChsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdHJfZm9ybWF0dGVyIFwiJWFcIlxuICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgYWdfdHlcbiAgICAgaW5cbiAgICAgRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpXG4gICAgKCAobGV0ICgpID1cbiAgICAgICAgIEZvcm1hdC5mcHJpbnRmIEZvcm1hdC5zdHJfZm9ybWF0dGVyIFwiJWFcIlxuICAgICAgICAgICAoU2lnbmF0dXJlLnByaW50X3NpdGUgc2lncyBhZ190eSlcbiAgICAgICAgICAgcF9pZFxuICAgICAgIGluXG4gICAgICAgRm9ybWF0LmZsdXNoX3N0cl9mb3JtYXR0ZXIgKCkpLFxuICAgICAgcG9zIClcblxubGV0IGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcCBzaWdzID9jb250YWN0X21hcCBwb3MgaSBhZ190eSBwX2lkIHN3aXRjaFxuICAgIChsaW5rc19vbmUsIGxpbmtzX3R3bykgPVxuICBpZiBNb2RzLkludE1hcC5tZW0gaSBsaW5rc190d28gdGhlblxuICAgIHJhaXNlXG4gICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgKCBcIlRoaXMgaXMgdGhlIHRoaXJkIG9jY3VyZW5jZSBvZiBsaW5rICdcIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICBeIFwiJyBpbiB0aGUgc2FtZSBtaXh0dXJlLlwiLFxuICAgICAgICAgICBwb3MgKSlcbiAgZWxzZSAoXG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucG9wIGkgbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUsIG9uZScgLT5cbiAgICAgIGxldCBuZXdfbGluayA9XG4gICAgICAgIG1hdGNoIHN3aXRjaCB3aXRoXG4gICAgICAgIHwgTEthcHBhLkxpbmtlZCBqIC0+IFNvbWUgalxuICAgICAgICB8IExLYXBwYS5GcmVlZCB8IExLYXBwYS5FcmFzZWQgfCBMS2FwcGEuTWFpbnRhaW5lZCAtPiBOb25lXG4gICAgICBpblxuICAgICAgKCAoKExLYXBwYS5MTktfVkFMVUUgKGksICgtMSwgLTEpKSwgcG9zKSwgc3dpdGNoKSxcbiAgICAgICAgKE1vZHMuSW50TWFwLmFkZCBpIChhZ190eSwgcF9pZCwgbmV3X2xpbmssIHBvcywgc3dpdGNoKSBvbmUnLCBsaW5rc190d28pXG4gICAgICApXG4gICAgfCBTb21lIChkc3RfdHksIGRzdF9wLCBkc3RfaWQsIHBvcycsIHN3aXRjaCcpLCBvbmUnIC0+XG4gICAgICBpZiBTaWduYXR1cmUuYWxsb3dlZF9saW5rIGFnX3R5IHBfaWQgZHN0X3R5IGRzdF9wIHNpZ3MgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcCBhZ190eSBwX2lkIGRzdF90eSBkc3RfcCBpblxuICAgICAgICBsZXQgbWFpbnRhaW5lZCA9XG4gICAgICAgICAgbWF0Y2ggc3dpdGNoIHdpdGhcbiAgICAgICAgICB8IExLYXBwYS5MaW5rZWQgaiAtPlxuICAgICAgICAgICAgbGV0IGxpbmtfc3dhcCA9IFNvbWUgaiA8PiBkc3RfaWQgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGxpbmtfc3dhcCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCB3YXJuX29uX3N3YXAgd2l0aFxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgIHwgU29tZSB3YXJuaW5nIC0+XG4gICAgICAgICAgICAgICAgICBydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiB+d2FybmluZyB+cG9zIH5kc3RfdHkgc2lncyBhZ190eVxuICAgICAgICAgICAgICAgICAgICBwX2lkXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBub3QgbGlua19zd2FwXG4gICAgICAgICAgfCBMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLk1haW50YWluZWQgLT4gZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF9jaGVja19jb21wYXRpYmlsdHkgPVxuICAgICAgICAgIG1hdGNoIHN3aXRjaCwgc3dpdGNoJyB3aXRoXG4gICAgICAgICAgfCBMS2FwcGEuTWFpbnRhaW5lZCwgTEthcHBhLk1haW50YWluZWQgLT4gKClcbiAgICAgICAgICB8IExLYXBwYS5NYWludGFpbmVkLCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXylcbiAgICAgICAgICAgIC0+XG4gICAgICAgICAgICBzaXRlX3Nob3VsZF9tYWRlX2JlX2ZyZWUgaSBzaWdzIGFnX3R5IHBfaWQgcG9zXG4gICAgICAgICAgfCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyksIExLYXBwYS5NYWludGFpbmVkXG4gICAgICAgICAgICAtPlxuICAgICAgICAgICAgc2l0ZV9zaG91bGRfbWFkZV9iZV9mcmVlIGkgc2lncyBkc3RfdHkgZHN0X3AgcG9zJ1xuICAgICAgICAgIHwgKCAoTEthcHBhLkZyZWVkIHwgTEthcHBhLkVyYXNlZCB8IExLYXBwYS5MaW5rZWQgXyksXG4gICAgICAgICAgICAgIChMS2FwcGEuRnJlZWQgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkxpbmtlZCBfKSApIC0+XG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICAoICggKExLYXBwYS5MTktfVkFMVUUgKGksIChkc3RfcCwgZHN0X3R5KSksIHBvcyksXG4gICAgICAgICAgICBpZiBtYWludGFpbmVkIHRoZW5cbiAgICAgICAgICAgICAgTEthcHBhLk1haW50YWluZWRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgc3dpdGNoICksXG4gICAgICAgICAgKG9uZScsIE1vZHMuSW50TWFwLmFkZCBpIChhZ190eSwgcF9pZCwgbWFpbnRhaW5lZCkgbGlua3NfdHdvKSApXG4gICAgICApIGVsc2VcbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICggRm9ybWF0LmFzcHJpbnRmXG4gICAgICAgICAgICAgICAgIFwiRm9yYmlkZGVuIGxpbmsgdG8gYSAlYS4lYSBmcm9tIHNpZ25hdHVyZSBkZWNsYXJhdGlvblwiXG4gICAgICAgICAgICAgICAgIChTaWduYXR1cmUucHJpbnRfc2l0ZSBzaWdzIGRzdF90eSlcbiAgICAgICAgICAgICAgICAgZHN0X3BcbiAgICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5wcmludF9hZ2VudCBzaWdzKVxuICAgICAgICAgICAgICAgICBkc3RfdHksXG4gICAgICAgICAgICAgICBwb3MgKSlcbiAgKVxuXG5sZXQgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZSBzaWdzXG4gICAgbGlua3NfYW5ub3QgKChhZ2VudF9uYW1lLCBfKSBhcyBhZ190eSkgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3QgPVxuICBsZXQgYWdfaWQgPSBTaWduYXR1cmUubnVtX29mX2FnZW50IGFnX3R5IHNpZ3MgaW5cbiAgbGV0IHNpZ24gPSBTaWduYXR1cmUuZ2V0IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IGFyaXR5ID0gU2lnbmF0dXJlLmFyaXR5IHNpZ3MgYWdfaWQgaW5cbiAgbGV0IHBvcnRzID1cbiAgICBBcnJheS5tYWtlIGFyaXR5IChMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLkVyYXNlZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9XG4gICAgQXJyYXkuaW5pdCBhcml0eSAoZnVuIGkgLT5cbiAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgYWdfaWQgaSBzaWdzIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IExLYXBwYS5JX0FOWVxuICAgICAgICB8IFNvbWUgXyAtPiBMS2FwcGEuSV9BTllfRVJBU0VEKVxuICBpblxuICBsZXQgbGFubm90LCBfID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAobGFubm90LCBwc2V0KSBwIC0+XG4gICAgICAgIGxldCAoKF8sIHBfcG9zKSBhcyBwb3J0X25hbWUpID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgIGxldCBwX2lkID0gU2lnbmF0dXJlLm51bV9vZl9zaXRlIH5hZ2VudF9uYW1lIHBvcnRfbmFtZSBzaWduIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmNvdW50ZXJfb2Zfc2l0ZV9pZCBwX2lkIHNpZ24gd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IExLYXBwYS5yYWlzZV9jb3VudGVyX21pc3VzZWQgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBzZXQnID0gTW9kcy5JbnRTZXQuYWRkIHBfaWQgcHNldCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBzZXQgPT0gcHNldCcgdGhlblxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2xpbmtfbW9kLCBwLkFzdC5wb3J0X2xpbmsgd2l0aFxuICAgICAgICAgIHwgTm9uZSwgXyAtPiAoKVxuICAgICAgICAgIHwgU29tZSBOb25lLCBbIChMS2FwcGEuTE5LX1ZBTFVFIChfLCAoKSksIF8pIF1cbiAgICAgICAgICAoKiBbaS8uXSBpcyBhbGxvd2VkIGluIGRlZ3JhZGVkIGFnZW50LlxuICAgICAgICAgICAgIEl0IHdpbGwgYmUgY2hlY2tlZCBsYXRlciB0aGF0IHRoZSBvdGhlciBzaXRlIHdpdGggbGluayBpZCBpIGlzIGFsc28gZnJlZWQgaW4gdGhlIHJ1bGUgKilcbiAgICAgICAgICAoKiBQbGVhc2Ugbm90ZSB0aGF0IGEgcnVsZSB3cml0dGVuIGFzIEEoeFsxXSktLEIoeFsxLy5dKS0gaXMgYWxsb3dlZCAqKVxuICAgICAgICAgICAgLT5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgfCAoIFNvbWUgKE5vbmUgfCBTb21lIF8pLFxuICAgICAgICAgICAgICAoIFtdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoXywgKCkpLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19GUkVFLCBfKSBdXG4gICAgICAgICAgICAgIHwgWyAoTEthcHBhLkxOS19BTlksIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIF8pIF1cbiAgICAgICAgICAgICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKF8sIF8pLCBfKSBdXG4gICAgICAgICAgICAgIHwgXyA6OiBfIDo6IF8gKSApIC0+XG4gICAgICAgICAgICBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIHAuQXN0LnBvcnRfaW50IHdpdGhcbiAgICAgICAgICB8IFtdIHwgWyAoTm9uZSwgXykgXSAtPiAoKVxuICAgICAgICAgIHwgWyAoU29tZSB2YSwgcG9zKSBdIC0+XG4gICAgICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgICAgIExLYXBwYS5JX1ZBTF9FUkFTRURcbiAgICAgICAgICAgICAgICAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduKVxuICAgICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuQU5ZX0ZSRUUsIHBvcyksIExLYXBwYS5FcmFzZWQgaW5cbiAgICAgICAgICBsYW5ub3QsIHBzZXQnXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSAtPlxuICAgICAgICAgIGxldCBwb3J0X25hbWUsIHBvcyA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiXG4gICAgICAgICAgICAgICAgICBwb3J0X25hbWUpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRXJhc2VkIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvc19saW5rKSBdIC0+XG4gICAgICAgICAgbGV0IHBvcnRfbmFtZSwgcG9zID0gcC5Bc3QucG9ydF9uYW1lIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgICAgIHBvcnRfbmFtZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwb3J0cy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgYnVpbGRfbF90eXBlIHNpZ3MgcG9zX2xpbmsgZHN0X3R5IGRzdF9wIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCAoWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10pIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5BTllfRlJFRSwgXykgXSB8IFtdIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuQU5ZX0ZSRUUsIExLYXBwYS5FcmFzZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxhbm5vdCwgcHNldCdcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkVyYXNlZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGFubm90LCBwc2V0J1xuICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0IHZhLCBsYW5ub3QnID1cbiAgICAgICAgICAgIGxldCB3YXJuX29uX3N3YXAgPVxuICAgICAgICAgICAgICBpZiByX2VkaXRfc3R5bGUgdGhlblxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFNvbWUgd2FybmluZ1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGJ1aWxkX2xpbmsgP3dhcm5fb25fc3dhcCBzaWdzIHBvcyBpIGFnX2lkIHBfaWQgTEthcHBhLkVyYXNlZCBsYW5ub3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgICAgIGxhbm5vdCcsIHBzZXQnXG4gICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSkpXG4gICAgICAobGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KVxuICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICBpblxuICBsZXQgcmEgPVxuICAgIHtcbiAgICAgIExLYXBwYS5yYV90eXBlID0gYWdfaWQ7XG4gICAgICByYV9wb3J0cyA9IHBvcnRzO1xuICAgICAgcmFfaW50cyA9IGludGVybmFscztcbiAgICAgIHJhX2VyYXNlZCA9IHRydWU7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2Ryb3BwZWRfY291bnRlcnMgc2lnbiBjb3VudGVyX2xpc3QgcmEgYXJpdHlcbiAgICAgIGFnZW50X25hbWUgTm9uZSxcbiAgICBsYW5ub3QgKVxuXG5sZXQgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfnJfZWRpdF9zdHlsZSBzaWdzXG4gICAgP2NvbnRhY3RfbWFwIHJhbm5vdCAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBzaW1wbGVfcG9ydF9saXN0ID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9IEFycmF5Lm1ha2UgYXJpdHkgUmF3X21peHR1cmUuRlJFRSBpblxuICBsZXQgaW50ZXJuYWxzID1cbiAgICBBcnJheS5pbml0IGFyaXR5IChmdW4gaSAtPiBTaWduYXR1cmUuZGVmYXVsdF9pbnRlcm5hbF9zdGF0ZSBhZ19pZCBpIHNpZ3MpXG4gIGluXG4gIGxldCBfLCByYW5ub3QgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChwc2V0LCByYW5ub3QpIHAgLT5cbiAgICAgICAgbGV0ICgoXywgcF9wb3MpIGFzIHBvcnRfbmFtZSkgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICAgICAgfCBTb21lIF8gLT4gTEthcHBhLnJhaXNlX2NvdW50ZXJfbWlzdXNlZCBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2QgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBwLkFzdC5wb3J0X2ludCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgIHwgWyAoTm9uZSwgXykgXSAtPlxuICAgICAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJpbnRlcm5hbFwiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICAgIGFnZW50X25hbWUgcG9ydF9uYW1lXG4gICAgICAgICAgfCBbIChTb21lIHZhLCBwb3MpIF0gLT5cbiAgICAgICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICAgICAgU29tZSAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkICh2YSwgcG9zKSBzaWduKVxuICAgICAgICAgIHwgXyA6OiAoXywgcG9zKSA6OiBfIC0+IExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICAgICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfU09NRSwgXykgXVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSBfLCBfKSBdXG4gICAgICAgIHwgXyA6OiBfIDo6IF8gLT5cbiAgICAgICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcImxlZnRcIlxuICAgICAgICAgICAgYWdlbnRfbmFtZSBwb3J0X25hbWVcbiAgICAgICAgfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WNCAtPlxuICAgICAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwibGVmdFwiXG4gICAgICAgICAgICBhZ2VudF9uYW1lIHBvcnRfbmFtZVxuICAgICAgICB8IFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIFJhd19taXh0dXJlLlZBTCBpIGluXG4gICAgICAgICAgbGV0IF8sIHJhbm5vdCcgPVxuICAgICAgICAgICAgbGV0IHdhcm5fb25fc3dhcCA9XG4gICAgICAgICAgICAgIGlmIHJfZWRpdF9zdHlsZSB0aGVuXG4gICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgU29tZSB3YXJuaW5nXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwIHNpZ3MgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICAgICAgTEthcHBhLkZyZWVkIHJhbm5vdFxuICAgICAgICAgIGluXG4gICAgICAgICAgcHNldCcsIHJhbm5vdCdcbiAgICAgICAgfCBbICgoTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19GUkVFKSwgXykgXSB8IFtdIC0+IHBzZXQnLCByYW5ub3QpXG4gICAgICAoTW9kcy5JbnRTZXQuZW1wdHksIHJhbm5vdClcbiAgICAgIHNpbXBsZV9wb3J0X2xpc3RcbiAgaW5cbiAgKCByYW5ub3QsXG4gICAge1xuICAgICAgUmF3X21peHR1cmUuYV90eXBlID0gYWdfaWQ7XG4gICAgICBSYXdfbWl4dHVyZS5hX3BvcnRzID0gcG9ydHM7XG4gICAgICBSYXdfbWl4dHVyZS5hX2ludHMgPSBpbnRlcm5hbHM7XG4gICAgfSApXG5cbmxldCB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nIHNpZ3MgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgP3dhcm5faW5mb1xuICAgICgobGhzX2xpbmtzLCByaHNfbGlua3MpIGFzIGxpbmtzX2Fubm90KSA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiBMS2FwcGEuTWFpbnRhaW5lZCwgbGlua3NfYW5ub3RcbiAgfCBTb21lIHggLT5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggd2Fybl9pbmZvIHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIChzaXRlX25hbWUsIHBvcykgLT5cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCJcbiAgICAgICAgICAgICAgc2l0ZV9uYW1lKVxuICAgIGluXG4gICAgKG1hdGNoIHggd2l0aFxuICAgIHwgTm9uZSAtPiBMS2FwcGEuRnJlZWQsIGxpbmtzX2Fubm90XG4gICAgfCBTb21lIChqLCBwb3NfaikgLT5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayA/d2Fybl9vbl9zd2FwOk5vbmUgc2lncyA/Y29udGFjdF9tYXAgcG9zX2ogaiBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIExLYXBwYS5MaW5rZWQgaiwgKGxoc19saW5rcywgcmhzX2xpbmtzJykpXG5cbmxldCBhbm5vdGF0ZV9lZGl0X2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzID9jb250YWN0X21hcFxuICAgICgoYWdlbnRfbmFtZSwgXykgYXMgYWdfdHkpIGxpbmtzX2Fubm90IHNpbXBsZV9wb3J0X2xpc3QgY291bnRlcl9saXN0ID1cbiAgbGV0IGFnX2lkID0gU2lnbmF0dXJlLm51bV9vZl9hZ2VudCBhZ190eSBzaWdzIGluXG4gIGxldCBzaWduID0gU2lnbmF0dXJlLmdldCBzaWdzIGFnX2lkIGluXG4gIGxldCBhcml0eSA9IFNpZ25hdHVyZS5hcml0eSBzaWdzIGFnX2lkIGluXG4gIGxldCBwb3J0cyA9XG4gICAgQXJyYXkubWFrZSBhcml0eSAoTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlksIExLYXBwYS5NYWludGFpbmVkKVxuICBpblxuICBsZXQgaW50ZXJuYWxzID0gQXJyYXkubWFrZSBhcml0eSBMS2FwcGEuSV9BTlkgaW5cbiAgbGV0IHNjYW5fcG9ydCAobGlua3NfYW5ub3QsIHBzZXQpIHAgPVxuICAgIGxldCBwb3J0X25hbWUsIF8gPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwLkFzdC5wb3J0X25hbWUgc2lnbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBTaWduYXR1cmUuY291bnRlcl9vZl9zaXRlX2lkIHBfaWQgc2lnbiB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiBMS2FwcGEucmFpc2VfY291bnRlcl9taXN1c2VkIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICBpblxuICAgIGxldCBwc2V0JyA9IE1vZHMuSW50U2V0LmFkZCBwX2lkIHBzZXQgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX29jY3VyZW5jZV9vZl9zaXRlIGFnZW50X25hbWUgcC5Bc3QucG9ydF9uYW1lXG4gICAgaW5cbiAgICBsZXQgbGlua3NfYW5ub3QnID1cbiAgICAgIG1hdGNoIHAuQXN0LnBvcnRfbGluayB3aXRoXG4gICAgICB8IFsgKChMS2FwcGEuTE5LX1NPTUUsIHBvcykgYXMgeCkgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0geCwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgfndhcm5faW5mbzoocG9ydF9uYW1lLCBwb3MpIHNpZ3NcbiAgICAgICAgICAgID9jb250YWN0X21hcCBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuQU5ZX0ZSRUUsIHBvcyksIG1vZGlmIGluXG4gICAgICAgIGxpbmtzX2Fubm90J1xuICAgICAgfCAoW10gfCBbIChMS2FwcGEuQU5ZX0ZSRUUsIF8pIF0pIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFtdIHdoZW4gcC5Bc3QucG9ydF9saW5rX21vZCA9IE5vbmUgLT4gbGlua3NfYW5ub3RcbiAgICAgIHwgWyAoTEthcHBhLkFOWV9GUkVFLCBfKSBdIHwgW10gLT5cbiAgICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgICBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgfCBbIChMS2FwcGEuTE5LX0ZSRUUsIF8pIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCBsaW5rc19hbm5vdCcgPVxuICAgICAgICAgIHRyYW5zbGF0ZV9tb2RpZmljYXRpb24gfndhcm5pbmcgP3dhcm5faW5mbzpOb25lIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ19pZCBwX2lkIGxpbmtzX2Fubm90IHAuQXN0LnBvcnRfbGlua19tb2RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgbW9kaWYgaW5cbiAgICAgICAgbGlua3NfYW5ub3QnXG4gICAgICB8IFsgKExLYXBwYS5MTktfVFlQRSAoZHN0X3AsIGRzdF90eSksIHBvcykgXSAtPlxuICAgICAgICBsZXQgbW9kaWYsIGxpbmtzX2Fubm90JyA9XG4gICAgICAgICAgdHJhbnNsYXRlX21vZGlmaWNhdGlvbiB+d2FybmluZyB+d2Fybl9pbmZvOihwb3J0X25hbWUsIHBvcykgc2lnc1xuICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnX2lkIHBfaWQgbGlua3NfYW5ub3QgcC5Bc3QucG9ydF9saW5rX21vZFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gYnVpbGRfbF90eXBlIHNpZ3MgcG9zIGRzdF90eSBkc3RfcCBtb2RpZiBpblxuICAgICAgICBsaW5rc19hbm5vdCdcbiAgICAgIHwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gLT5cbiAgICAgICAgbGV0IG1vZGlmLCAobGhzX2xpbmtzLCByaHNfbGlua3MpID1cbiAgICAgICAgICB0cmFuc2xhdGVfbW9kaWZpY2F0aW9uIH53YXJuaW5nID93YXJuX2luZm86Tm9uZSBzaWdzID9jb250YWN0X21hcFxuICAgICAgICAgICAgYWdfaWQgcF9pZCBsaW5rc19hbm5vdCBwLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgICAgIGluXG4gICAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgICAgYnVpbGRfbGluayBzaWdzXG4gICAgICAgICAgICA/Y29udGFjdF9tYXA6XG4gICAgICAgICAgICAgIChpZiBpc19ydWxlIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBjb250YWN0X21hcClcbiAgICAgICAgICAgID93YXJuX29uX3N3YXA6Tm9uZSBwb3MgaSBhZ19pZCBwX2lkIG1vZGlmIGxoc19saW5rc1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gdmEgaW5cbiAgICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgICB8IF8gOjogKF8sIHBvcykgOjogXyAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiU2V2ZXJhbCBsaW5rIHN0YXRlIGZvciBhIHNpbmdsZSBzaXRlXCIsIHBvcykpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggcC5Bc3QucG9ydF9pbnQsIHAuQXN0LnBvcnRfaW50X21vZCB3aXRoXG4gICAgICB8IChbIChOb25lLCBfKSBdIHwgW10pLCBOb25lIC0+ICgpXG4gICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgU29tZSB2YScgLT5cbiAgICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICAgIExLYXBwYS5JX1ZBTF9DSEFOR0VEXG4gICAgICAgICAgICAoIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbixcbiAgICAgICAgICAgICAgU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhJyBzaWduIClcbiAgICAgIHwgW10sIFNvbWUgKChfLCBwb3MpIGFzIHZhKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIHRoZW5cbiAgICAgICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcImludGVybmFsIHN0YXRlIG9mIHNpdGUgJyVzJyBvZiBhZ2VudCAnJXMnIGlzIG1vZGlmaWVkIFxcXG4gICAgICAgICAgICAgICAgICAgYWx0aG91Z2ggaXQgaXMgbGVmdCB1bnBlY2lmaWVkIGluIHRoZSBsZWZ0IGhhbmQgc2lkZVwiXG4gICAgICAgICAgICAgICAgICBwb3J0X25hbWUgYWdlbnRfbmFtZSlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAoXCJNb2RpZmllZCBpbnRlcm5hbCBzdGF0ZSBtdXN0IGFwcGVhciBvbiB0aGUgbGVmdFwiLCBwb3MpKVxuICAgICAgICBpblxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgICAgTEthcHBhLklfQU5ZX0NIQU5HRUQgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCB2YSBzaWduKVxuICAgICAgfCBbIChOb25lLCBfKSBdLCBTb21lIHZhIC0+XG4gICAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRCAoU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZSBwX2lkIHZhIHNpZ24pXG4gICAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgTm9uZSAtPlxuICAgICAgICBsZXQgaV9pZCA9IFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbiBpblxuICAgICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtIExLYXBwYS5JX1ZBTF9DSEFOR0VEIChpX2lkLCBpX2lkKVxuICAgICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfaW50ZXJuYWxfc3RhdGVzIHBvc1xuICAgIGluXG4gICAgbGlua3NfYW5ub3QnLCBwc2V0J1xuICBpblxuICBsZXQgYW5ub3RlZCcsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0IHNjYW5fcG9ydCAobGlua3NfYW5ub3QsIE1vZHMuSW50U2V0LmVtcHR5KSBzaW1wbGVfcG9ydF9saXN0XG4gIGluXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2VkaXRfY291bnRlcnMgc2lncyBhZ190eSBjb3VudGVyX2xpc3QgcmFcbiAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApLFxuICAgIGFubm90ZWQnIClcblxubGV0IGFubm90YXRlX2FnZW50X3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAoKGFnZW50X25hbWUsIF8pIGFzIGFnX3R5KSBsaW5rc19hbm5vdCBscCBycCBsYyByYyA9XG4gIGxldCBhZ19pZCA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgYWdfdHkgc2lncyBpblxuICBsZXQgc2lnbiA9IFNpZ25hdHVyZS5nZXQgc2lncyBhZ19pZCBpblxuICBsZXQgYXJpdHkgPSBTaWduYXR1cmUuYXJpdHkgc2lncyBhZ19pZCBpblxuICBsZXQgcG9ydHMgPVxuICAgIEFycmF5Lm1ha2UgYXJpdHkgKExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfQU5ZLCBMS2FwcGEuTWFpbnRhaW5lZClcbiAgaW5cbiAgbGV0IGludGVybmFscyA9IEFycmF5Lm1ha2UgYXJpdHkgTEthcHBhLklfQU5ZIGluXG4gIGxldCByZWdpc3Rlcl9wb3J0X21vZGlmIHBfaWQgbG5rMSBwJyAoKGxoc19saW5rcywgcmhzX2xpbmtzKSBhcyBsaW5rc19hbm5vdCkgPVxuICAgIGxldCAoKSA9XG4gICAgICBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uXG4gICAgICAgIChMb2MuZ2V0X2Fubm90IHAnLkFzdC5wb3J0X25hbWUpXG4gICAgICAgIHAnLkFzdC5wb3J0X2xpbmtfbW9kXG4gICAgaW5cbiAgICBtYXRjaCBsbmsxLCBwJy5Bc3QucG9ydF9saW5rIHdpdGhcbiAgICB8IFsgKExLYXBwYS5MTktfQU5ZLCBwb3MpIF0sIFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5BTllfRlJFRSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvcykgXSwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zKSwgTEthcHBhLk1haW50YWluZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFtcbiAgICAgICAgICAoIExLYXBwYS5MTktfVFlQRSAoKChkc3RfcCcnLCBfKSBhcyBkc3RfcCksICgoZHN0X3R5JycsIF8pIGFzIGRzdF90eSkpLFxuICAgICAgICAgICAgcG9zICk7XG4gICAgICAgIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVFlQRSAoKGRzdF9wJywgXyksIChkc3RfdHknLCBfKSksIF8pIF0gKVxuICAgICAgd2hlbiBkc3RfcCcnID0gZHN0X3AnICYmIGRzdF90eScnID0gZHN0X3R5JyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvcyBkc3RfdHkgZHN0X3AgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBfLFxuICAgICAgICAoIFsgKExLYXBwYS5MTktfQU5ZLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBfKSBdXG4gICAgICAgIHwgWyAoTEthcHBhLkxOS19UWVBFIF8sIF8pIF0gKSApIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImxpbmtpbmdcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3MpLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zKSBdLCBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSAtPlxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIChMS2FwcGEuTE5LX0FOWSwgcG9zKSwgTEthcHBhLkZyZWVkIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1NPTUUsIHBvc19saW5rKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5GcmVlZCBpblxuICAgICAgbGlua3NfYW5ub3RcbiAgICB8ICggWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdICkgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRnJlZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IG5hLCBwb3MgPSBwJy5Bc3QucG9ydF9uYW1lIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgIFwiYnJlYWtpbmcgYSBzZW1pLWxpbmsgb24gc2l0ZSAnJXMnIHdpbGwgaW5kdWNlIGEgc2lkZSBlZmZlY3RcIiBuYSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfU09NRSwgcG9zX2xpbmspLCBMS2FwcGEuRnJlZWQgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbIChMS2FwcGEuTE5LX1RZUEUgKGRzdF9wLCBkc3RfdHkpLCBwb3NfbGluaykgXSwgW11cbiAgICAgIHdoZW4gc3ludGF4X3ZlcnNpb24gPSBBc3QuVjMgLT5cbiAgICAgIGxldCBuYSwgcG9zID0gcCcuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICBcImJyZWFraW5nIGEgc2VtaS1saW5rIG9uIHNpdGUgJyVzJyB3aWxsIGluZHVjZSBhIHNpZGUgZWZmZWN0XCIgbmEpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCBMS2FwcGEuRnJlZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCAoWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gfCBbXSksXG4gICAgICAgIChbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSB8IFtdKSApXG4gICAgICB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCAoIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdLFxuICAgICAgICBbICgoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFKSwgXykgXSApIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgaW5cbiAgICAgIGxpbmtzX2Fubm90XG4gICAgfCBbXSwgW10gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LSBMb2MuYW5ub3Rfd2l0aF9kdW1teSBMS2FwcGEuTE5LX0FOWSwgTEthcHBhLk1haW50YWluZWRcbiAgICAgIGluXG4gICAgICBsaW5rc19hbm5vdFxuICAgIHwgKCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSxcbiAgICAgICAgWyAoKExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRSksIF8pIF0gKSAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5GcmVlZFxuICAgICAgICAgIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgfCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSwgW10gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0IHZhLCBsaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyBwb3MgaSBhZ19pZCBwX2lkIExLYXBwYS5GcmVlZFxuICAgICAgICAgIGxoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSB2YSBpblxuICAgICAgbGhzX2xpbmtzJywgcmhzX2xpbmtzXG4gICAgfCBbIChMS2FwcGEuTE5LX0FOWSwgcG9zX2xpbmspIF0sIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zKSBdIC0+XG4gICAgICBsZXQgKCkgPSBwb3J0cy4ocF9pZCkgPC0gKExLYXBwYS5MTktfQU5ZLCBwb3NfbGluayksIExLYXBwYS5MaW5rZWQgaSBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgWyAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluaykgXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MnKSBdIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHBvcnRzLihwX2lkKSA8LSAoTEthcHBhLkxOS19TT01FLCBwb3NfbGluayksIExLYXBwYS5MaW5rZWQgaSBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MnIGkgYWdfaWQgcF9pZFxuICAgICAgICAgIExLYXBwYS5GcmVlZCByaHNfbGlua3NcbiAgICAgIGluXG4gICAgICBsaHNfbGlua3MsIHJoc19saW5rcydcbiAgICB8ICggWyAoTEthcHBhLkxOS19UWVBFIChkc3RfcCwgZHN0X3R5KSwgcG9zX2xpbmspIF0sXG4gICAgICAgIFsgKExLYXBwYS5MTktfVkFMVUUgKGksICgpKSwgcG9zJykgXSApIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJicmVha2luZyBhIHNlbWktbGluayBvbiBzaXRlICclcycgd2lsbCBpbmR1Y2UgYSBzaWRlIGVmZmVjdFwiIG5hKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBvcnRzLihwX2lkKSA8LVxuICAgICAgICAgIGJ1aWxkX2xfdHlwZSBzaWdzIHBvc19saW5rIGRzdF90eSBkc3RfcCAoTEthcHBhLkxpbmtlZCBpKVxuICAgICAgaW5cbiAgICAgIGxldCBfLCByaHNfbGlua3MnID1cbiAgICAgICAgYnVpbGRfbGluayBzaWdzIH53YXJuX29uX3N3YXA6d2FybmluZyA/Y29udGFjdF9tYXAgcG9zJyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCAoIFsgKChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUpLCBfKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvcykgXSApIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBwb3J0cy4ocF9pZCkgPC0gTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19GUkVFLCBMS2FwcGEuTGlua2VkIGlcbiAgICAgIGluXG4gICAgICBsZXQgXywgcmhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgP2NvbnRhY3RfbWFwIHBvcyBpIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGhzX2xpbmtzLCByaHNfbGlua3MnXG4gICAgfCBbXSwgWyAoTEthcHBhLkxOS19WQUxVRSAoaSwgKCkpLCBwb3MpIF0gd2hlbiBzeW50YXhfdmVyc2lvbiA9IEFzdC5WMyAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgcG9ydHMuKHBfaWQpIDwtIExvYy5hbm5vdF93aXRoX2R1bW15IExLYXBwYS5MTktfRlJFRSwgTEthcHBhLkxpbmtlZCBpXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3MgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgTEthcHBhLkZyZWVkIHJoc19saW5rc1xuICAgICAgaW5cbiAgICAgIGxoc19saW5rcywgcmhzX2xpbmtzJ1xuICAgIHwgKCBbIChMS2FwcGEuTE5LX1ZBTFVFIChpLCAoKSksIHBvc19pKSBdLFxuICAgICAgICBbIChMS2FwcGEuTE5LX1ZBTFVFIChqLCAoKSksIHBvc19qKSBdICkgLT5cbiAgICAgIGxldCB2YSwgbGhzX2xpbmtzJyA9XG4gICAgICAgIGJ1aWxkX2xpbmsgc2lncyB+d2Fybl9vbl9zd2FwOndhcm5pbmcgcG9zX2kgaSBhZ19pZCBwX2lkXG4gICAgICAgICAgKExLYXBwYS5MaW5rZWQgaikgbGhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0IF8sIHJoc19saW5rcycgPVxuICAgICAgICBidWlsZF9saW5rIHNpZ3Mgfndhcm5fb25fc3dhcDp3YXJuaW5nID9jb250YWN0X21hcCBwb3NfaiBqIGFnX2lkIHBfaWRcbiAgICAgICAgICBMS2FwcGEuRnJlZWQgcmhzX2xpbmtzXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcG9ydHMuKHBfaWQpIDwtIHZhIGluXG4gICAgICBsaHNfbGlua3MnLCByaHNfbGlua3MnXG4gICAgfCAoIFtcbiAgICAgICAgICAoICggTEthcHBhLkxOS19WQUxVRSAoXywgKCkpXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfRlJFRSB8IExLYXBwYS5BTllfRlJFRVxuICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKF8sIF8pXG4gICAgICAgICAgICB8IExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfQU5ZICksXG4gICAgICAgICAgICBfICk7XG4gICAgICAgIF0sXG4gICAgICAgIFtdICkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwibGlua2luZ1wiIH5zaWRlOlwicmlnaHRcIlxuICAgICAgICBhZ2VudF9uYW1lIHAnLkFzdC5wb3J0X25hbWVcbiAgICB8IFtdLCBbICgoTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkxOS19WQUxVRSAoXywgXykpLCBfKSBdXG4gICAgICAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlNldmVyYWwgbGluayBzdGF0ZSBmb3IgYSBzaW5nbGUgc2l0ZVwiLCBwb3MpKVxuICAgIHwgXywgXyA6OiAoXywgcG9zKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJTZXZlcmFsIGxpbmsgc3RhdGUgZm9yIGEgc2luZ2xlIHNpdGVcIiwgcG9zKSlcbiAgaW5cbiAgbGV0IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgaW50MSBwJyA9XG4gICAgbGV0ICgpID1cbiAgICAgIExLYXBwYS5yYWlzZV9pZl9tb2RpZmljYXRpb25cbiAgICAgICAgKExvYy5nZXRfYW5ub3QgcCcuQXN0LnBvcnRfbmFtZSlcbiAgICAgICAgcCcuQXN0LnBvcnRfaW50X21vZFxuICAgIGluXG4gICAgbWF0Y2ggaW50MSwgcCcuQXN0LnBvcnRfaW50IHdpdGhcbiAgICB8IFtdLCBbXSB8IFsgKE5vbmUsIF8pIF0sIFsgKE5vbmUsIF8pIF0gLT4gKClcbiAgICB8IFsgKFNvbWUgdmEsIHBvcykgXSwgWyAoU29tZSB2YScsIHBvcycpIF0gLT5cbiAgICAgIGludGVybmFscy4ocF9pZCkgPC1cbiAgICAgICAgTEthcHBhLklfVkFMX0NIQU5HRURcbiAgICAgICAgICAoIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHBvcykgc2lnbixcbiAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEnLCBwb3MnKSBzaWduIClcbiAgICB8IFtdLCBbIChTb21lIHZhLCB2YXBvcykgXSB3aGVuIHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIC0+XG4gICAgICBsZXQgbmEsIHBvcyA9IHAnLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHdhcm5pbmcgfnBvcyAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICAgXCJpbnRlcm5hbCBzdGF0ZSBvZiBzaXRlICclcycgb2YgYWdlbnQgJyVzJyBpcyBtb2RpZmllZCBhbHRob3VnaCBcXFxuICAgICAgICAgICAgICAgaXQgaXMgbGVmdCB1bnBlY2lmaWVkIGluIHRoZSBsZWZ0IGhhbmQgc2lkZVwiXG4gICAgICAgICAgICAgIG5hIGFnZW50X25hbWUpXG4gICAgICBpblxuICAgICAgaW50ZXJuYWxzLihwX2lkKSA8LVxuICAgICAgICBMS2FwcGEuSV9BTllfQ0hBTkdFRFxuICAgICAgICAgIChTaWduYXR1cmUubnVtX29mX2ludGVybmFsX3N0YXRlIHBfaWQgKHZhLCB2YXBvcykgc2lnbilcbiAgICB8IFsgKE5vbmUsIF8pIF0sIFsgKFNvbWUgdmEsIHZhcG9zKSBdIC0+XG4gICAgICBpbnRlcm5hbHMuKHBfaWQpIDwtXG4gICAgICAgIExLYXBwYS5JX0FOWV9DSEFOR0VEXG4gICAgICAgICAgKFNpZ25hdHVyZS5udW1fb2ZfaW50ZXJuYWxfc3RhdGUgcF9pZCAodmEsIHZhcG9zKSBzaWduKVxuICAgIHwgW10sIFsgXyBdIC0+XG4gICAgICBMS2FwcGEucmFpc2Vfbm90X2Vub3VnaF9zcGVjaWZpZWQgfnN0YXR1czpcImludGVybmFsXCIgfnNpZGU6XCJsZWZ0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBbIF8gXSwgKFsgKE5vbmUsIF8pIF0gfCBbXSkgLT5cbiAgICAgIExLYXBwYS5yYWlzZV9ub3RfZW5vdWdoX3NwZWNpZmllZCB+c3RhdHVzOlwiaW50ZXJuYWxcIiB+c2lkZTpcInJpZ2h0XCJcbiAgICAgICAgYWdlbnRfbmFtZSBwJy5Bc3QucG9ydF9uYW1lXG4gICAgfCBfIDo6IChfLCBwb3MpIDo6IF8sIF8gfCBfLCBfIDo6IChfLCBwb3MpIDo6IF8gLT5cbiAgICAgIExLYXBwYS5yYWlzZV9zZXZlcmFsX2ludGVybmFsX3N0YXRlcyBwb3NcbiAgaW5cbiAgbGV0IGZpbmRfaW5fciAobmEsIHBvcykgcnAgPVxuICAgIGxldCBwJywgciA9XG4gICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuIHAgLT4gU3RyaW5nLmNvbXBhcmUgKExvYy52IHAuQXN0LnBvcnRfbmFtZSkgbmEgPSAwKSBycFxuICAgIGluXG4gICAgbWF0Y2ggcCcgd2l0aFxuICAgIHwgWyBwJyBdIC0+IHAnLCByXG4gICAgfCBbXSAtPlxuICAgICAgTEthcHBhLnJhaXNlX25vdF9lbm91Z2hfc3BlY2lmaWVkIH5zdGF0dXM6XCJsaW5raW5nXCIgfnNpZGU6XCJyaWdodFwiXG4gICAgICAgIGFnZW50X25hbWUgKG5hLCBwb3MpXG4gICAgfCBfIDo6IF8gLT4gTEthcHBhLnJhaXNlX3NldmVyYWxfb2NjdXJlbmNlX29mX3NpdGUgYWdlbnRfbmFtZSAobmEsIHBvcylcbiAgaW5cbiAgbGV0IHJwX3IsIGFubm90ZWQsIF8gPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChycCwgYW5ub3RlZCwgcHNldCkgcCAtPlxuICAgICAgICBsZXQgKChfLCBwX3BvcykgYXMgcG9ydF9uYW1lKSA9IHAuQXN0LnBvcnRfbmFtZSBpblxuICAgICAgICBsZXQgcF9pZCA9IFNpZ25hdHVyZS5udW1fb2Zfc2l0ZSB+YWdlbnRfbmFtZSBwb3J0X25hbWUgc2lnbiBpblxuICAgICAgICBsZXQgcHNldCcgPSBNb2RzLkludFNldC5hZGQgcF9pZCBwc2V0IGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWYgcHNldCA9PSBwc2V0JyB0aGVuXG4gICAgICAgICAgICBMS2FwcGEucmFpc2Vfc2V2ZXJhbF9vY2N1cmVuY2Vfb2Zfc2l0ZSBhZ2VudF9uYW1lIHAuQXN0LnBvcnRfbmFtZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMS2FwcGEucmFpc2VfaWZfbW9kaWZpY2F0aW9uIHBfcG9zIHAuQXN0LnBvcnRfbGlua19tb2QgaW5cbiAgICAgICAgbGV0ICgpID0gTEthcHBhLnJhaXNlX2lmX21vZGlmaWNhdGlvbiBwX3BvcyBwLkFzdC5wb3J0X2ludF9tb2QgaW5cblxuICAgICAgICBsZXQgcCcsIHJwJyA9IGZpbmRfaW5fciBwb3J0X25hbWUgcnAgaW5cbiAgICAgICAgbGV0IGFubm90ZWQnID0gcmVnaXN0ZXJfcG9ydF9tb2RpZiBwX2lkIHAuQXN0LnBvcnRfbGluayBwJyBhbm5vdGVkIGluXG4gICAgICAgIGxldCAoKSA9IHJlZ2lzdGVyX2ludGVybmFsX21vZGlmIHBfaWQgcC5Bc3QucG9ydF9pbnQgcCcgaW5cbiAgICAgICAgcnAnLCBhbm5vdGVkJywgcHNldCcpXG4gICAgICAocnAsIGxpbmtzX2Fubm90LCBNb2RzLkludFNldC5lbXB0eSlcbiAgICAgIGxwXG4gIGluXG4gIGxldCBhbm5vdGVkJyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYW5ub3RlZCBwIC0+XG4gICAgICAgIGxldCBwb3J0X25hbWUgPSBwLkFzdC5wb3J0X25hbWUgaW5cbiAgICAgICAgbGV0IHBfaWQgPSBTaWduYXR1cmUubnVtX29mX3NpdGUgfmFnZW50X25hbWUgcG9ydF9uYW1lIHNpZ24gaW5cbiAgICAgICAgbGV0ICgpID0gcmVnaXN0ZXJfaW50ZXJuYWxfbW9kaWYgcF9pZCBbXSBwIGluXG4gICAgICAgIHJlZ2lzdGVyX3BvcnRfbW9kaWYgcF9pZFxuICAgICAgICAgIFsgTG9jLmFubm90X3dpdGhfZHVtbXkgTEthcHBhLkxOS19BTlkgXVxuICAgICAgICAgIHAgYW5ub3RlZClcbiAgICAgIGFubm90ZWQgcnBfclxuICBpblxuXG4gIGxldCByYSA9XG4gICAge1xuICAgICAgTEthcHBhLnJhX3R5cGUgPSBhZ19pZDtcbiAgICAgIHJhX3BvcnRzID0gcG9ydHM7XG4gICAgICByYV9pbnRzID0gaW50ZXJuYWxzO1xuICAgICAgcmFfZXJhc2VkID0gZmFsc2U7XG4gICAgICByYV9zeW50YXggPSBTb21lIChBcnJheS5jb3B5IHBvcnRzLCBBcnJheS5jb3B5IGludGVybmFscyk7XG4gICAgfVxuICBpblxuICAoIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NvdW50ZXJzX3dpdGhfZGlmZiBzaWdzIGFnX3R5IGxjIHJjIHJhXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKSxcbiAgICBhbm5vdGVkJyApXG5cbmxldCByZWZlcl9saW5rc19hbm5vdCA/d2FybmluZyBzaWdzIGxpbmtzX2Fubm90IG1peCA9XG4gIExpc3QuaXRlclxuICAgIChmdW4gKHJhXyA6IExLYXBwYS5ydWxlX2FnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMpIC0+XG4gICAgICBsZXQgcmEgPSByYV8uYWdlbnQgaW5cbiAgICAgIEFycmF5Lml0ZXJpXG4gICAgICAgIChmdW4gaSAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgKExLYXBwYS5MTktfVkFMVUUgKGosICgtMSwgLTEpKSwgcG9zKSwgbW9kcyAtPlxuICAgICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGogbGlua3NfYW5ub3Qgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICB8IFNvbWUgKGRzdF90eSwgZHN0X3AsIG1haW50YWluZWQpIC0+XG4gICAgICAgICAgICAgIGxldCBtb2RzJyA9XG4gICAgICAgICAgICAgICAgaWYgbWFpbnRhaW5lZCB0aGVuXG4gICAgICAgICAgICAgICAgICBMS2FwcGEuTWFpbnRhaW5lZFxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1vZHNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBtYXRjaCBtb2RzJyB3aXRoXG4gICAgICAgICAgICAgICAgfCBMS2FwcGEuRXJhc2VkIHwgTEthcHBhLkZyZWVkIHwgTEthcHBhLk1haW50YWluZWQgLT4gKClcbiAgICAgICAgICAgICAgICB8IExLYXBwYS5MaW5rZWQgXyAtPlxuICAgICAgICAgICAgICAgICAgKG1hdGNoIHdhcm5pbmcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgd2FybmluZyAtPlxuICAgICAgICAgICAgICAgICAgICBydWxlX2luZHVjZXNfbGlua19wZXJtdXRhdGlvbiB+d2FybmluZyB+cG9zIH5kc3RfdHkgc2lnc1xuICAgICAgICAgICAgICAgICAgICAgIHJhLkxLYXBwYS5yYV90eXBlIGkpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIHJhLkxLYXBwYS5yYV9wb3J0cy4oaSkgPC1cbiAgICAgICAgICAgICAgICAoTEthcHBhLkxOS19WQUxVRSAoaiwgKGRzdF9wLCBkc3RfdHkpKSwgcG9zKSwgbW9kcycpXG4gICAgICAgICAgfCAoICggKCBMS2FwcGEuTE5LX1ZBTFVFIF8gfCBMS2FwcGEuTE5LX0FOWSB8IExLYXBwYS5MTktfU09NRVxuICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIF8gfCBMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgKSxcbiAgICAgICAgICAgICAgICBfICksXG4gICAgICAgICAgICAgIF8gKSAtPlxuICAgICAgICAgICAgKCkpXG4gICAgICAgIHJhLkxLYXBwYS5yYV9wb3J0cylcbiAgICBtaXhcblxubGV0IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIGxzID1cbiAgbGV0IGEsIGIgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChwcywgY3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgIHwgQXN0LlBvcnQgcCAtPiBwIDo6IHBzLCBjc1xuICAgICAgICB8IEFzdC5Db3VudGVyIGMgLT4gcHMsIGMgOjogY3MpXG4gICAgICAoW10sIFtdKSBsc1xuICBpblxuICBMaXN0LnJldiBhLCBiXG5cbmxldCBmaW5hbF9ydWxlX3Nhbml0eSA/d2FybmluZyBzaWdzXG4gICAgKChsaHNfbGlua3Nfb25lLCBsaHNfbGlua3NfdHdvKSwgKHJoc19saW5rc19vbmUsIF8pKSBtaXggPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIE1vZHMuSW50TWFwLnJvb3QgbGhzX2xpbmtzX29uZSB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIChpLCAoXywgXywgXywgcG9zLCBfKSkgLT4gTEthcHBhLnJhaXNlX2xpbmtfb25seV9vbmVfb2NjdXJlbmNlIGkgcG9zXG4gIGluXG4gIGxldCAoKSA9IHJlZmVyX2xpbmtzX2Fubm90ID93YXJuaW5nIHNpZ3MgbGhzX2xpbmtzX3R3byBtaXggaW5cbiAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByaHNfbGlua3Nfb25lIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoaSwgKF8sIF8sIF8sIHBvcywgXykpIC0+IExLYXBwYS5yYWlzZV9saW5rX29ubHlfb25lX29jY3VyZW5jZSBpIHBvc1xuXG4oKlxuSXMgcmVzcG9uc2libGUgZm9yIHRoZSBjaGVjayB0aGF0OlxuLSBhZ2VudCBleGlzdHNcbi0gc2l0ZXMgZXhpc3Rcbi0gdW5pcXVlIHNpdGUgb2NjdXJlbmNlIC8gYWdlbnRcbi0gaW50ZXJuYWxfc3RhdGVzIGV4aXN0XG4tIHVuaXF1ZSBpbnRlcm5hbF9zdGF0ZSAvIHNpdGVcbi0gbGlua3MgYXBwZWFyIGV4YWN0bHkgdHdpY2VcbiopXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92MyB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzID1cbiAgbGV0IHN5bnRheF92ZXJzaW9uID0gQXN0LlYzIGluXG4gIGxldCByZWMgYXV4IGxpbmtzX2Fubm90IGFjYyBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBBc3QuQWJzZW50IHBvcyA6OiBfLCBfIHwgKEFzdC5QcmVzZW50IF8gOjogXyB8IFtdKSwgQXN0LkFic2VudCBwb3MgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgfCAoIEFzdC5QcmVzZW50ICgoKGxhZ2VudF9uYW1lLCBscG9zKSBhcyBhZ190eSksIGxhZ19zLCBsbW9kKSA6OiBsdCxcbiAgICAgICAgQXN0LlByZXNlbnQgKChyYWdlbnRfbmFtZSwgcnBvcyksIHJhZ19zLCBybW9kKSA6OiBydCApXG4gICAgICB3aGVuIFN0cmluZy5jb21wYXJlIGxhZ2VudF9uYW1lIHJhZ2VudF9uYW1lID0gMFxuICAgICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IHRydWUgbGFnX3MgcmFnX3MgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBscG9zIGxtb2Q7XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcnBvcyBybW9kO1xuICAgICAgbGV0IGxhZ19wLCBsYWdfYyA9IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIGxhZ19zIGluXG4gICAgICBsZXQgcmFnX3AsIHJhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgcmFnX3MgaW5cbiAgICAgIGxldCByYSwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgYW5ub3RhdGVfYWdlbnRfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzID9jb250YWN0X21hcFxuICAgICAgICAgIGFnX3R5IGxpbmtzX2Fubm90IGxhZ19wIHJhZ19wIGxhZ19jIHJhZ19jXG4gICAgICBpblxuICAgICAgYXV4IGxpbmtzX2Fubm90JyAocmEgOjogYWNjKSBsdCBydFxuICAgIHwgKChBc3QuUHJlc2VudCBfIDo6IF8gfCBbXSkgYXMgZXJhc2VkKSwgYWRkZWQgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGFkZGVkIDw+IFtdIHRoZW5cbiAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiAoKVxuICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgobGFnLCBwb3MpLCBsYWdfcCwgXykgLT5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQWJzZW50IF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgocmFnLCBfKSwgcmFnX3AsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuY29tcGFyZSBsYWcgcmFnID0gMFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgQXN0Lm5vX21vcmVfc2l0ZV9vbl9yaWdodCBmYWxzZSBsYWdfcCByYWdfcClcbiAgICAgICAgICAgICAgICAgICAgYWRkZWRcbiAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICB3YXJuaW5nIH5wb3MgKGZ1biBmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSdWxlIGluZHVjZWQgZGVsZXRpb24gQU5EIGNyZWF0aW9uIG9mIHRoZSBhZ2VudCAlc1wiIGxhZykpXG4gICAgICAgICAgICBlcmFzZWRcbiAgICAgIGluXG4gICAgICBsZXQgbWl4LCBsbGlua3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGFjYywgbGFubm90KSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfbmFtZSksIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBtb2RpZjtcbiAgICAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJhLCBsYW5ub3QnID1cbiAgICAgICAgICAgICAgICBhbm5vdGF0ZV9kcm9wcGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzIGxhbm5vdCBhZ2VudF9uYW1lIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICByYSA6OiBhY2MsIGxhbm5vdCcpXG4gICAgICAgICAgKGFjYywgZnN0IGxpbmtzX2Fubm90KVxuICAgICAgICAgIGVyYXNlZFxuICAgICAgaW5cbiAgICAgIGxldCBjbWl4LCBybGlua3MgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGFjYywgcmFubm90KSAtPiBmdW5jdGlvblxuICAgICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBLYVNpbSA+IDMgc3ludGF4XCIsIHBvcykpXG4gICAgICAgICAgICB8IEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfbmFtZSksIHNpdGVzLCBtb2RpZikgLT5cbiAgICAgICAgICAgICAgcmFpc2VfaWZfbW9kaWZpY2F0aW9uX2FnZW50IHBvcyBtb2RpZjtcbiAgICAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHJhbm5vdCcsIHgnID1cbiAgICAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTpmYWxzZSBzaWdzID9jb250YWN0X21hcCByYW5ub3QgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgeCcnID1cbiAgICAgICAgICAgICAgICBDb3VudGVyc19jb21waWxlci5hbm5vdGF0ZV9jcmVhdGVkX2NvdW50ZXJzIHNpZ3MgYWdlbnRfbmFtZVxuICAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgP2NvbnRhY3RfbWFwKVxuICAgICAgICAgICAgICAgICAgeCdcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgeCcnIDo6IGFjYywgcmFubm90JylcbiAgICAgICAgICAoW10sIHNuZCBsaW5rc19hbm5vdClcbiAgICAgICAgICBhZGRlZFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IGZpbmFsX3J1bGVfc2FuaXR5IH53YXJuaW5nIHNpZ3MgKGxsaW5rcywgcmxpbmtzKSBtaXggaW5cbiAgICAgIExpc3QucmV2IG1peCwgTGlzdC5yZXYgY21peFxuICBpblxuICBhdXhcbiAgICAoIChNb2RzLkludE1hcC5lbXB0eSwgTW9kcy5JbnRNYXAuZW1wdHkpLFxuICAgICAgKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSkgKVxuICAgIFtdIChMaXN0LmZsYXR0ZW4gbGhzKSAoTGlzdC5mbGF0dGVuIHJocylcblxubGV0IGFubm90YXRlX2xoc193aXRoX2RpZmZfdjQgfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgbGhzIHJocyA9XG4gIGxldCBzeW50YXhfdmVyc2lvbiA9IEFzdC5WNCBpblxuICBsZXQgcmVjIGF1eCBsaW5rc19hbm5vdCBtaXggY21peCBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBbXSwgW10gLT4gbGlua3NfYW5ub3QsIG1peCwgY21peFxuICAgIHwgQXN0LkFic2VudCBfIDo6IGx0LCBBc3QuQWJzZW50IF8gOjogcnQgLT4gYXV4IGxpbmtzX2Fubm90IG1peCBjbWl4IGx0IHJ0XG4gICAgfCAoIEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfdHlwZSksIHNpdGVzLCBsbW9kKSA6OiBsdCxcbiAgICAgICAgQXN0LkFic2VudCBfIDo6IHJ0ICkgLT5cbiAgICAgIHJhaXNlX2lmX21vZGlmaWNhdGlvbl9hZ2VudCBwb3MgbG1vZDtcbiAgICAgIGxldCBzaW1wbGVfcG9ydF9saXN0LCBjb3VudGVyX2xpc3QgPVxuICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgaW5cbiAgICAgIGxldCByYSwgbGFubm90JyA9XG4gICAgICAgIGFubm90YXRlX2Ryb3BwZWRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5yX2VkaXRfc3R5bGU6ZmFsc2Ugc2lnc1xuICAgICAgICAgIChmc3QgbGlua3NfYW5ub3QpIGFnZW50X3R5cGUgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgIGluXG4gICAgICBhdXggKGxhbm5vdCcsIHNuZCBsaW5rc19hbm5vdCkgKHJhIDo6IG1peCkgY21peCBsdCBydFxuICAgIHwgKCBBc3QuQWJzZW50IF8gOjogbHQsXG4gICAgICAgIEFzdC5QcmVzZW50ICgoKF8sIHBvcykgYXMgYWdlbnRfdHlwZSksIHNpdGVzLCBybW9kKSA6OiBydCApIC0+XG4gICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcG9zIHJtb2Q7XG4gICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgIGluXG4gICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlOmZhbHNlIHNpZ3NcbiAgICAgICAgICA/Y29udGFjdF9tYXAgKHNuZCBsaW5rc19hbm5vdCkgYWdlbnRfdHlwZSBzaW1wbGVfcG9ydF9saXN0XG4gICAgICBpblxuICAgICAgbGV0IHgnJyA9XG4gICAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmFubm90YXRlX2NyZWF0ZWRfY291bnRlcnMgc2lncyBhZ2VudF90eXBlIGNvdW50ZXJfbGlzdFxuICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgeCdcbiAgICAgIGluXG4gICAgICBhdXggKGZzdCBsaW5rc19hbm5vdCwgcmFubm90JykgbWl4ICh4JycgOjogY21peCkgbHQgcnRcbiAgICB8ICggQXN0LlByZXNlbnQgKCgobGFnZW50X25hbWUsIGxwb3MpIGFzIGFnX3R5KSwgbGFnX3MsIGxtb2QpIDo6IGx0LFxuICAgICAgICBBc3QuUHJlc2VudCAoKHJhZ2VudF9uYW1lLCBycG9zKSwgcmFnX3MsIHJtb2QpIDo6IHJ0ICkgLT5cbiAgICAgIGlmXG4gICAgICAgIFN0cmluZy5jb21wYXJlIGxhZ2VudF9uYW1lIHJhZ2VudF9uYW1lID0gMFxuICAgICAgICAmJiBBc3Qubm9fbW9yZV9zaXRlX29uX3JpZ2h0IHRydWUgbGFnX3MgcmFnX3NcbiAgICAgIHRoZW4gKFxuICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgbHBvcyBsbW9kO1xuICAgICAgICByYWlzZV9pZl9tb2RpZmljYXRpb25fYWdlbnQgcnBvcyBybW9kO1xuICAgICAgICBsZXQgbGFnX3AsIGxhZ19jID0gc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgbGFnX3MgaW5cbiAgICAgICAgbGV0IHJhZ19wLCByYWdfYyA9IHNlcGFyYXRlX3NpbXBsZV9wb3J0c19mcm9tX2NvdW50ZXJzIHJhZ19zIGluXG4gICAgICAgIGxldCByYSwgbGlua3NfYW5ub3QnID1cbiAgICAgICAgICBhbm5vdGF0ZV9hZ2VudF93aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgICAgICAgICBhZ190eSBsaW5rc19hbm5vdCBsYWdfcCByYWdfcCBsYWdfYyByYWdfY1xuICAgICAgICBpblxuICAgICAgICBhdXggbGlua3NfYW5ub3QnIChyYSA6OiBtaXgpIGNtaXggbHQgcnRcbiAgICAgICkgZWxzZVxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKFwiTGVmdCBoYW5kIHNpZGUvcmlnaHQgaGFuZCBzaWRlIGFnZW50IG1pc21hdGNoXCIsIHJwb3MpKVxuICAgIHwgKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXywgW11cbiAgICB8IFtdLCAoQXN0LlByZXNlbnQgKChfLCBwb3MpLCBfLCBfKSB8IEFzdC5BYnNlbnQgcG9zKSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJMZWZ0IGhhbmQgc2lkZS9yaWdodCBoYW5kIHNpZGUgYWdlbnQgbWlzbWF0Y2hcIiwgcG9zKSlcbiAgaW5cbiAgbGV0IHJlYyBhdXhfbGluZSBsaW5rc19hbm5vdCBtaXggY21peCBsaHMgcmhzID1cbiAgICBtYXRjaCBsaHMsIHJocyB3aXRoXG4gICAgfCBbXSwgW10gLT5cbiAgICAgIGxldCAoKSA9IGZpbmFsX3J1bGVfc2FuaXR5IH53YXJuaW5nIHNpZ3MgbGlua3NfYW5ub3QgbWl4IGluXG4gICAgICBMaXN0LnJldiBtaXgsIExpc3QucmV2IGNtaXhcbiAgICB8IGhsIDo6IHRsLCBociA6OiB0ciAtPlxuICAgICAgbGV0IGxpbmtzX2Fubm90JywgbWl4JywgY21peCcgPSBhdXggbGlua3NfYW5ub3QgbWl4IGNtaXggaGwgaHIgaW5cbiAgICAgIGF1eF9saW5lIGxpbmtzX2Fubm90JyBtaXgnIGNtaXgnIHRsIHRyXG4gICAgfCAoKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXykgOjogXywgW11cbiAgICB8IFtdLCAoKEFzdC5QcmVzZW50ICgoXywgcG9zKSwgXywgXykgfCBBc3QuQWJzZW50IHBvcykgOjogXykgOjogXyAtPlxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiTGVmdCBoYW5kIHNpZGUvcmlnaHQgaGFuZCBzaWRlIGFnZW50IG1pc21hdGNoXCIsIHBvcykpXG4gICAgfCBbXSA6OiBfLCBbXSB8IFtdLCBbXSA6OiBfIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgXCJJbnZhcmlhbnQgdmlvbGF0aW9uIGluIGFubm90YXRlX2xoc193aXRoLi4uXCIpKVxuICBpblxuICBhdXhfbGluZVxuICAgICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSApXG4gICAgW10gW10gbGhzIHJoc1xuXG5sZXQgYW5ub3RhdGVfbGhzX3dpdGhfZGlmZiB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgbGhzIHJocyA9XG4gIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgfCBBc3QuVjMgLT4gYW5ub3RhdGVfbGhzX3dpdGhfZGlmZl92MyB+d2FybmluZyBzaWdzID9jb250YWN0X21hcCBsaHMgcmhzXG4gIHwgQXN0LlY0IC0+IGFubm90YXRlX2xoc193aXRoX2RpZmZfdjQgfndhcm5pbmcgc2lncyA/Y29udGFjdF9tYXAgbGhzIHJoc1xuXG5sZXQgYW5ub3RhdGVfZWRpdF9taXh0dXJlIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+aXNfcnVsZSBzaWdzID9jb250YWN0X21hcFxuICAgIChtIDogQXN0Lm1peHR1cmUpIDpcbiAgICBDb3VudGVyc19jb21waWxlci5ydWxlX21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVyc1xuICAgICogQ291bnRlcnNfY29tcGlsZXIucmF3X21peHR1cmVfd2l0aF9hZ2VudF9jb3VudGVycyA9XG4gICgqIG1peCBpcyB0aGUgbWl4dHVyZSBmcm9tIGluaXRpYWwgc3RhdGUgb2YgdGhlIHJ1bGUsIGNtaXggaXMgdGhlIG1peHR1cmUgYWZ0ZXIgdGhlIHJ1bGUgd2FzIGFwcGxpZWQgKilcbiAgbGV0IGxpbmtzX2Fubm90LCBtaXgsIGNtaXggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAobGFubm90LCBhY2MsIG5ld3MpIC0+IGZ1bmN0aW9uXG4gICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBsYW5ub3QsIGFjYywgbmV3c1xuICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIG1vZGlmKSAtPlxuICAgICAgICAgICBsZXQgc2ltcGxlX3BvcnRfbGlzdCwgY291bnRlcl9saXN0ID1cbiAgICAgICAgICAgICBzZXBhcmF0ZV9zaW1wbGVfcG9ydHNfZnJvbV9jb3VudGVycyBzaXRlc1xuICAgICAgICAgICBpblxuICAgICAgICAgICAobWF0Y2ggbW9kaWYgd2l0aFxuICAgICAgICAgICB8IEFzdC5Ob01vZCAtPlxuICAgICAgICAgICAgIGxldCBhLCBsYW5ub3QnID1cbiAgICAgICAgICAgICAgIGFubm90YXRlX2VkaXRfYWdlbnQgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlIHNpZ3NcbiAgICAgICAgICAgICAgICAgP2NvbnRhY3RfbWFwIGFnZW50X3R5cGUgbGFubm90IHNpbXBsZV9wb3J0X2xpc3QgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsYW5ub3QnLCBhIDo6IGFjYywgbmV3c1xuICAgICAgICAgICB8IEFzdC5DcmVhdGUgLT5cbiAgICAgICAgICAgICBsZXQgcmFubm90JywgeCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfY3JlYXRlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTp0cnVlIHNpZ3MgP2NvbnRhY3RfbWFwIChzbmQgbGFubm90KSBhZ2VudF90eXBlXG4gICAgICAgICAgICAgICAgIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCB4JycgPVxuICAgICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgY291bnRlcl9saXN0XG4gICAgICAgICAgICAgICAgIChhZGRfbGlua19jb250YWN0X21hcCA/Y29udGFjdF9tYXApXG4gICAgICAgICAgICAgICAgIHgnXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAoZnN0IGxhbm5vdCwgcmFubm90JyksIGFjYywgeCcnIDo6IG5ld3NcbiAgICAgICAgICAgfCBBc3QuRXJhc2UgLT5cbiAgICAgICAgICAgICBsZXQgcmEsIGxhbm5vdCcgPVxuICAgICAgICAgICAgICAgYW5ub3RhdGVfZHJvcHBlZF9hZ2VudCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICAgICAgfnJfZWRpdF9zdHlsZTp0cnVlIHNpZ3MgKGZzdCBsYW5ub3QpIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgICAgc2ltcGxlX3BvcnRfbGlzdCBjb3VudGVyX2xpc3RcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIChsYW5ub3QnLCBzbmQgbGFubm90KSwgcmEgOjogYWNjLCBuZXdzKSkpXG4gICAgICAoICggKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSksXG4gICAgICAgICAgKE1vZHMuSW50TWFwLmVtcHR5LCBNb2RzLkludE1hcC5lbXB0eSkgKSxcbiAgICAgICAgW10sXG4gICAgICAgIFtdIClcbiAgICAgIG1cbiAgaW5cbiAgZmluYWxfcnVsZV9zYW5pdHkgP3dhcm5pbmc6Tm9uZSBzaWdzIGxpbmtzX2Fubm90IG1peDtcbiAgTGlzdC5yZXYgbWl4LCBMaXN0LnJldiBjbWl4XG5cbmxldCBhbm5vdGF0ZV9jcmVhdGVkX21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwXG4gICAgKG0gOiBBc3QubWl4dHVyZSkgOlxuICAgIFJhd19taXh0dXJlLmFnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdCA9XG4gIGxldCAocmhzX2xpbmtzX29uZSwgXyksIGNtaXggPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biAocmFubm90LCBuZXdzKSAtPiBmdW5jdGlvblxuICAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGNhbm5vdCBvY2N1cnMgaW4gY3JlYXRlZCBtaXh0dXJlc1wiLCBwb3MpKVxuICAgICAgICAgfCBBc3QuUHJlc2VudCAoYWdlbnRfdHlwZSwgc2l0ZXMsIF9tb2RpZikgLT5cbiAgICAgICAgICAgbGV0IHNpbXBsZV9wb3J0X2xpc3QsIGNvdW50ZXJfbGlzdCA9XG4gICAgICAgICAgICAgc2VwYXJhdGVfc2ltcGxlX3BvcnRzX2Zyb21fY291bnRlcnMgc2l0ZXNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHJhbm5vdCcsIHgnID1cbiAgICAgICAgICAgICBhbm5vdGF0ZV9jcmVhdGVkX2FnZW50IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiB+cl9lZGl0X3N0eWxlOnRydWVcbiAgICAgICAgICAgICAgIHNpZ3MgP2NvbnRhY3RfbWFwIHJhbm5vdCBhZ2VudF90eXBlIHNpbXBsZV9wb3J0X2xpc3RcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHgnJyA9XG4gICAgICAgICAgICAgQ291bnRlcnNfY29tcGlsZXIuYW5ub3RhdGVfY3JlYXRlZF9jb3VudGVycyBzaWdzIGFnZW50X3R5cGVcbiAgICAgICAgICAgICAgIGNvdW50ZXJfbGlzdFxuICAgICAgICAgICAgICAgKGFkZF9saW5rX2NvbnRhY3RfbWFwID9jb250YWN0X21hcClcbiAgICAgICAgICAgICAgIHgnXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIHJhbm5vdCcsIHgnJyA6OiBuZXdzKSlcbiAgICAgICgoTW9kcy5JbnRNYXAuZW1wdHksIE1vZHMuSW50TWFwLmVtcHR5KSwgW10pXG4gICAgICBtXG4gIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAucm9vdCByaHNfbGlua3Nfb25lIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgKGksIChfLCBfLCBfLCBwb3MsIF8pKSAtPiBMS2FwcGEucmFpc2VfbGlua19vbmx5X29uZV9vY2N1cmVuY2UgaSBwb3NcbiAgaW5cbiAgTGlzdC5yZXYgY21peFxuXG5sZXQgZ2l2ZV9ydWxlX2xhYmVsIGJpZGlyZWN0aW9uYWwgKGlkLCBzZXQpIHByaW50ZXIgciA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoc3VjYyBpZCwgc2V0KSwgRm9ybWF0LmFzcHJpbnRmIFwiciVpOiAlYVwiIGlkIHByaW50ZXIgclxuICB8IFNvbWUgKGxhYiwgcG9zKSAtPlxuICAgIGxldCBzZXQnID0gTW9kcy5TdHJpbmdTZXQuYWRkIGxhYiBzZXQgaW5cbiAgICBpZiBzZXQgPT0gc2V0JyB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJBIHJ1bGUgbmFtZWQgJ1wiIF4gbGFiIF4gXCInIGFscmVhZHkgZXhpc3RzLlwiLCBwb3MpKVxuICAgIGVsc2UgaWYgYmlkaXJlY3Rpb25hbCB0aGVuIChcbiAgICAgIGxldCBzZXQnJyA9IE1vZHMuU3RyaW5nU2V0LmFkZCAoQXN0LmZsaXBfbGFiZWwgbGFiKSBzZXQnIGluXG4gICAgICBpZiBzZXQnID09IHNldCcnIHRoZW5cbiAgICAgICAgcmFpc2VcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIkEgcnVsZSBuYW1lZCAnXCIgXiBBc3QuZmxpcF9sYWJlbCBsYWIgXiBcIicgYWxyZWFkeSBleGlzdHMuXCIsIHBvcykpXG4gICAgICBlbHNlXG4gICAgICAgIChpZCwgc2V0JycpLCBsYWJcbiAgICApIGVsc2VcbiAgICAgIChpZCwgc2V0JyksIGxhYlxuXG5sZXQgbWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgP2NvbnRhY3RfbWFwIChwb3MgOiBMb2MudClcbiAgICAobWl4IDogQXN0Lm1peHR1cmUpID1cbiAgbWF0Y2hcbiAgICBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5pc19ydWxlOmZhbHNlIHNpZ3NcbiAgICAgID9jb250YWN0X21hcCBtaXhcbiAgd2l0aFxuICB8IHIsIFtdIC0+IGZzdCAoQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyByIFtdKVxuICB8IF8sIF8gLT5cbiAgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoXCJBIG1peHR1cmUgY2Fubm90IGNyZWF0ZSBhZ2VudHNcIiwgcG9zKSlcblxubGV0IHJhd19taXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXBcbiAgICAobWl4IDogQXN0Lm1peHR1cmUpID1cbiAgbGV0IGIgPVxuICAgIGFubm90YXRlX2NyZWF0ZWRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyA/Y29udGFjdF9tYXAgbWl4XG4gIGluXG4gIHNuZCAoQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBbXSBiKVxuXG5sZXQgY29udmVydF9hbGdfdmFyID9tYXhfYWxsb3dlZF92YXIgYWxncyBsYWIgcG9zID1cbiAgbGV0IGkgPVxuICAgIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiBhbGdzIHdpdGhcbiAgICB8IFNvbWUgeCAtPiB4XG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCAobGFiIF4gXCIgaXMgbm90IGEgZGVjbGFyZWQgdmFyaWFibGVcIiwgcG9zKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBtYXhfYWxsb3dlZF92YXIgd2l0aFxuICAgIHwgU29tZSBqIHdoZW4gaiA8IGkgLT5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIlJlZmVyZW5jZSB0byBub3QgeWV0IGRlZmluZWQgJ1wiIF4gbGFiIF4gXCInIGlzIGZvcmJpZGRlbi5cIiwgcG9zKSlcbiAgICB8IE5vbmUgfCBTb21lIF8gLT4gKClcbiAgaW5cbiAgaVxuXG5sZXQgY29udmVydF90b2tlbl9uYW1lIHRrX25hbWUgdG9rIHBvcyA9XG4gIG1hdGNoIE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIHRrX25hbWUgdG9rIHdpdGhcbiAgfCBTb21lIHggLT4geFxuICB8IE5vbmUgLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKHRrX25hbWUgXiBcIiBpcyBub3QgYSBkZWNsYXJlZCB0b2tlblwiLCBwb3MpKVxuXG5sZXQgcmVjIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyA/bWF4X2FsbG93ZWRfdmFyXG4gICAgKGFsZywgcG9zKSA9XG4gICggKG1hdGNoIGFsZyB3aXRoXG4gICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBhc3QgLT5cbiAgICAgIEFsZ19leHByLktBUFBBX0lOU1RBTkNFXG4gICAgICAgIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBwb3MgYXN0KVxuICAgIHwgQWxnX2V4cHIuQUxHX1ZBUiBsYWIgLT5cbiAgICAgIEFsZ19leHByLkFMR19WQVIgKGNvbnZlcnRfYWxnX3ZhciA/bWF4X2FsbG93ZWRfdmFyIGFsZ3MgbGFiIHBvcylcbiAgICB8IEFsZ19leHByLlRPS0VOX0lEIHRrX25hbWUgLT5cbiAgICAgIEFsZ19leHByLlRPS0VOX0lEIChjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zKVxuICAgIHwgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRSAoZXhwciwgYXN0KSAtPlxuICAgICAgQWxnX2V4cHIuRElGRl9LQVBQQV9JTlNUQU5DRVxuICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBleHByLFxuICAgICAgICAgIG1peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHBvcyBhc3QgKVxuICAgIHwgQWxnX2V4cHIuRElGRl9UT0tFTiAoZXhwciwgdGtfbmFtZSkgLT5cbiAgICAgIEFsZ19leHByLkRJRkZfVE9LRU5cbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgZXhwcixcbiAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGtfbmFtZSB0b2sgcG9zIClcbiAgICB8IChBbGdfZXhwci5TVEFURV9BTEdfT1AgXyB8IEFsZ19leHByLkNPTlNUIF8pIGFzIHggLT4geFxuICAgIHwgQWxnX2V4cHIuQklOX0FMR19PUCAob3AsIGEsIGIpIC0+XG4gICAgICBBbGdfZXhwci5CSU5fQUxHX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGEsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGIgKVxuICAgIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICAgIEFsZ19leHByLlVOX0FMR19PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciBhIClcbiAgICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgICAgQWxnX2V4cHIuSUZcbiAgICAgICAgKCBib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIGNvbmQsXG4gICAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyIHllcyxcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgbm8gKSksXG4gICAgcG9zIClcblxuYW5kIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgP21heF9hbGxvd2VkX3ZhciA9XG4gIGZ1bmN0aW9uXG4gIHwgKChBbGdfZXhwci5UUlVFIHwgQWxnX2V4cHIuRkFMU0UpLCBfKSBhcyB4IC0+IHhcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIHgsIHkpLCBwb3MgLT5cbiAgICAoIEFsZ19leHByLkJJTl9CT09MX09QXG4gICAgICAgICggb3AsXG4gICAgICAgICAgYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4LFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeSApLFxuICAgICAgcG9zIClcbiAgfCBBbGdfZXhwci5VTl9CT09MX09QIChvcCwgeCksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuVU5fQk9PTF9PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXIgeCApLFxuICAgICAgcG9zIClcbiAgfCBBbGdfZXhwci5DT01QQVJFX09QIChvcCwgeCwgeSksIHBvcyAtPlxuICAgICggQWxnX2V4cHIuQ09NUEFSRV9PUFxuICAgICAgICAoIG9wLFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB4LFxuICAgICAgICAgIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxnc1xuICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhciB5ICksXG4gICAgICBwb3MgKVxuXG5sZXQgcHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgPSBmdW5jdGlvblxuICB8IFByaW1pdGl2ZXMuU3RyX3BleHByIF8gYXMgeCAtPiB4XG4gIHwgUHJpbWl0aXZlcy5BbGdfcGV4cHIgeCAtPlxuICAgIFByaW1pdGl2ZXMuQWxnX3BleHByXG4gICAgICAoYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIHgpXG5cbigqIEludGVybWVkaWF0ZSByZXByZXNlbnRhdGlvbiBmb3IgYSBydWxlLCB1c2VkIGJldHdlZW4gaW50ZXJuYWwgdHJhbnNsYXRpb25zICopXG50eXBlIHJ1bGVfaW50ZXJfcmVwID0ge1xuICBsYWJlbF9vcHQ6IChzdHJpbmcgKiBMb2MudCkgb3B0aW9uO1xuICBiaWRpcmVjdGlvbmFsOiBib29sOyAoKiBUT0RPIGNoZWNrICopXG4gIG1peHR1cmU6IExLYXBwYS5ydWxlX2FnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdDtcbiAgY3JlYXRlZF9taXg6IFJhd19taXh0dXJlLmFnZW50IENvdW50ZXJzX2NvbXBpbGVyLndpdGhfYWdlbnRfY291bnRlcnMgbGlzdDtcbiAgcm1fdG9rZW46XG4gICAgKCgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KSAqIChzdHJpbmcgKiBMb2MudCkpIGxpc3Q7XG4gIGFkZF90b2tlbjpcbiAgICAoKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSkgbGlzdDtcbiAga19kZWY6IChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQ7XG4gIGtfdW46XG4gICAgKCgoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSAqIExvYy50KVxuICAgICogKChBc3QubWl4dHVyZSwgc3RyaW5nKSBBbGdfZXhwci5lICogTG9jLnQpIG9wdGlvbilcbiAgICBvcHRpb247XG4gIHBvczogTG9jLnQ7XG59XG4oKiogSW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uIGZvciBydWxlIHR5cGUgKilcblxuKCoqIFthc3NlbWJsZV9ydWxlXSB0cmFuc2xhdGVzIGEgcnVsZV9pbnRlcl9yZXAgaW50byBhIExLYXBwYS5ydWxlICopXG5sZXQgYXNzZW1ibGVfcnVsZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gKHJ1bGUgOiBydWxlX2ludGVyX3JlcClcbiAgICAoc2lncyA6IFNpZ25hdHVyZS5zKSAodG9rIDogaW50IE1vZHMuU3RyaW5nTWFwLnQpXG4gICAgKGFsZ3MgOiBpbnQgTW9kcy5TdHJpbmdNYXAudCkgOiBMS2FwcGEucnVsZSA9XG4gIGxldCAocl9taXgsIHJfY3JlYXRlZCkgOiBMS2FwcGEucnVsZV9taXh0dXJlICogUmF3X21peHR1cmUudCA9XG4gICAgQ291bnRlcnNfY29tcGlsZXIuY29tcGlsZV9jb3VudGVyX2luX3J1bGUgc2lncyBydWxlLm1peHR1cmUgcnVsZS5jcmVhdGVkX21peFxuICBpblxuICBsZXQgcl9kZWx0YV90b2tlbnMgPVxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoYWwsICh0aywgcG9zKSkgLT5cbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuVU5fQUxHX09QIChPcGVyYXRvci5VTUlOVVMsIGFsKSkpLFxuICAgICAgICAgIGNvbnZlcnRfdG9rZW5fbmFtZSB0ayB0b2sgcG9zICkpXG4gICAgICBydWxlLnJtX3Rva2VuXG4gICAgfD4gTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAgICAoZnVuIChhbCwgKHRrLCBwb3MpKSAtPlxuICAgICAgICAgICAoIGFsZ19leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBhbCxcbiAgICAgICAgICAgICBjb252ZXJ0X3Rva2VuX25hbWUgdGsgdG9rIHBvcyApKVxuICAgICAgICAgcnVsZS5hZGRfdG9rZW5cbiAgICB8PiBMaXN0LnJldlxuICBpblxuICBsZXQgcl9yYXRlID1cbiAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgcnVsZS5rX2RlZlxuICBpblxuICBsZXQgcl91bl9yYXRlID1cbiAgICBsZXQgcl9kaXN0IGQgPVxuICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgID9tYXhfYWxsb3dlZF92YXI6Tm9uZSBkXG4gICAgaW5cbiAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgIChmdW4gKHVuX3JhdGUnLCBkaXN0KSAtPlxuICAgICAgICBsZXQgdW5fcmF0ZScnID1cbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgID9tYXhfYWxsb3dlZF92YXI6Tm9uZSB1bl9yYXRlJ1xuICAgICAgICBpblxuICAgICAgICBtYXRjaCBkaXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGQgLT4gdW5fcmF0ZScnLCBTb21lIChyX2Rpc3QgZClcbiAgICAgICAgfCBOb25lIC0+IHVuX3JhdGUnJywgTm9uZSlcbiAgICAgIHJ1bGUua191blxuICBpblxuICB7XG4gICAgTEthcHBhLnJfbWl4O1xuICAgIHJfY3JlYXRlZDtcbiAgICByX2VkaXRfc3R5bGUgPSBydWxlLmJpZGlyZWN0aW9uYWw7XG4gICAgcl9kZWx0YV90b2tlbnM7XG4gICAgcl9yYXRlO1xuICAgIHJfdW5fcmF0ZTtcbiAgfVxuXG5sZXQgbW9kaWZfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgY29udGFjdF9tYXAgbW9kaWZcbiAgICBhY2MgPVxuICBtYXRjaCBtb2RpZiB3aXRoXG4gIHwgQXN0LkFQUExZIChuYiwgKGFzdF9ydWxlLCBwb3MpKSAtPlxuICAgIGxldCBydWxlIDogcnVsZV9pbnRlcl9yZXAgPVxuICAgICAgbWF0Y2ggYXN0X3J1bGUuQXN0LnJld3JpdGUgd2l0aFxuICAgICAgfCBBc3QuRWRpdCBydWxlX2NvbnRlbnQgLT5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9lZGl0X21peHR1cmUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNCB+aXNfcnVsZTp0cnVlXG4gICAgICAgICAgICBzaWdzIH5jb250YWN0X21hcCBydWxlX2NvbnRlbnQubWl4XG4gICAgICAgIGluXG4gICAgICAgIHtcbiAgICAgICAgICBsYWJlbF9vcHQgPSBOb25lO1xuICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSB0cnVlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBydWxlX2NvbnRlbnQuZGVsdGFfdG9rZW47XG4gICAgICAgICAga19kZWYgPSBhc3RfcnVsZS5rX2RlZjtcbiAgICAgICAgICBrX3VuID0gYXN0X3J1bGUua191bjtcbiAgICAgICAgICBwb3M7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LkFycm93IHJ1bGVfY29udGVudCAtPlxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBydWxlX2NvbnRlbnQubGhzIHJ1bGVfY29udGVudC5yaHNcbiAgICAgICAgaW5cbiAgICAgICAge1xuICAgICAgICAgIGxhYmVsX29wdCA9IE5vbmU7XG4gICAgICAgICAgYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBydWxlX2NvbnRlbnQucm1fdG9rZW47XG4gICAgICAgICAgYWRkX3Rva2VuID0gcnVsZV9jb250ZW50LmFkZF90b2tlbjtcbiAgICAgICAgICBrX2RlZiA9IGFzdF9ydWxlLmtfZGVmO1xuICAgICAgICAgIGtfdW4gPSBhc3RfcnVsZS5rX3VuO1xuICAgICAgICAgIHBvcztcbiAgICAgICAgfVxuICAgIGluXG4gICAgKCBBc3QuQVBQTFlcbiAgICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgbmIsXG4gICAgICAgICAgKGFzc2VtYmxlX3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHJ1bGUgc2lncyB0b2sgYWxncywgcG9zKSApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuVVBEQVRFICgobGFiLCBwb3MpLCBob3cpIC0+XG4gICAgbGV0IGkgPVxuICAgICAgT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgIH5leGNlcDpcbiAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgIChcIlZhcmlhYmxlIFwiIF4gbGFiIF4gXCIgaXMgbm90IGRlZmluZWRcIiwgcG9zKSlcbiAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmZpbmRfb3B0aW9uIGxhYiBhbGdzKVxuICAgIGluXG4gICAgKCBBc3QuVVBEQVRFXG4gICAgICAgICgoaSwgcG9zKSwgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzIGhvdyksXG4gICAgICBpIDo6IGFjYyApXG4gIHwgQXN0LlNUT1AgcCAtPlxuICAgICggQXN0LlNUT1BcbiAgICAgICAgKExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCksXG4gICAgICBhY2MgKVxuICB8IEFzdC5TTkFQU0hPVCAocmF3LCBwKSAtPlxuICAgICggQXN0LlNOQVBTSE9UXG4gICAgICAgICggcmF3LFxuICAgICAgICAgIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcFxuICAgICAgICApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuRElOIChyZWwsIHApIC0+XG4gICAgKCBBc3QuRElOXG4gICAgICAgICggcmVsLFxuICAgICAgICAgIExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcFxuICAgICAgICApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuRElOT0ZGIHAgLT5cbiAgICAoIEFzdC5ESU5PRkZcbiAgICAgICAgKExpc3QubWFwIChwcmludF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncykgcCksXG4gICAgICBhY2MgKVxuICB8IChBc3QuUExPVEVOVFJZIHwgQXN0LkNGTE9XTEFCRUwgKF8sIF8pKSBhcyB4IC0+IHgsIGFjY1xuICB8IEFzdC5QUklOVCAocCwgcCcpIC0+XG4gICAgKCBBc3QuUFJJTlRcbiAgICAgICAgKCBMaXN0Lm1hcCAocHJpbnRfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MpIHAsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwJ1xuICAgICAgICApLFxuICAgICAgYWNjIClcbiAgfCBBc3QuQ0ZMT1dNSVggKGIsIChtLCBwb3MpKSAtPlxuICAgICggQXN0LkNGTE9XTUlYIChiLCAobWl4dHVyZV9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgcG9zIG0sIHBvcykpLFxuICAgICAgYWNjIClcbiAgfCBBc3QuU1BFQ0lFU19PRiAoYiwgcCwgKG0sIHBvcykpIC0+XG4gICAgKCBBc3QuU1BFQ0lFU19PRlxuICAgICAgICAoIGIsXG4gICAgICAgICAgTGlzdC5tYXAgKHByaW50X2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzKSBwLFxuICAgICAgICAgIChtaXh0dXJlX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBwb3MgbSwgcG9zKSApLFxuICAgICAgYWNjIClcblxubGV0IHBlcnR1cmJhdGlvbl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgY29udGFjdF9tYXBcbiAgICAoKGFsYXJtLCBwcmUsIG1vZHMsIHBvc3QpLCBwb3MpIHVwX3ZhcnMgOlxuICAgIChfLCBfLCBfLCBfKSBBc3QucGVydHVyYmF0aW9uICogaW50IGxpc3QgPVxuICBsZXQgbW9kcycsIHVwX3ZhcnMnID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChtb2RpZl9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgYWxncyBjb250YWN0X21hcClcbiAgICAgIG1vZHMgdXBfdmFyc1xuICBpblxuICBsZXQgbWF4X2FsbG93ZWRfdmFyID0gTm9uZSBpblxuICAoICggKCBhbGFybSxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGJvb2xfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3NcbiAgICAgICAgICAgICA/bWF4X2FsbG93ZWRfdmFyKVxuICAgICAgICAgIHByZSxcbiAgICAgICAgbW9kcycsXG4gICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgIChib29sX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIHRvayBhbGdzXG4gICAgICAgICAgICAgP21heF9hbGxvd2VkX3ZhcilcbiAgICAgICAgICBwb3N0ICksXG4gICAgICBwb3MgKSxcbiAgICB1cF92YXJzJyApXG5cbmxldCBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyB0b2sgY29udGFjdF9tYXAgPSBmdW5jdGlvblxuICB8IEFzdC5JTklUX01JWCAod2hvLCBwb3MpIC0+XG4gICAgQXN0LklOSVRfTUlYXG4gICAgICAocmF3X21peHR1cmVfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcCB3aG8sIHBvcylcbiAgfCBBc3QuSU5JVF9UT0sgbGFiIC0+XG4gICAgQXN0LklOSVRfVE9LXG4gICAgICAoTGlzdC5tYXBcbiAgICAgICAgIChmdW4gKGxhYiwgcG9zKSAtPlxuICAgICAgICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBsYWIgdG9rIHdpdGhcbiAgICAgICAgICAgfCBTb21lIHggLT4geCwgcG9zXG4gICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgKGxhYiBeIFwiIGlzIG5vdCBhIGRlY2xhcmVkIHRva2VuXCIsIHBvcykpKVxuICAgICAgICAgbGFiKVxuXG5sZXQgYWRkX3VuX3ZhcmlhYmxlIGtfdW4gYWNjIHJhdGVfdmFyID1cbiAgbWF0Y2gga191biB3aXRoXG4gIHwgTm9uZSAtPiBhY2MsIE5vbmVcbiAgfCBTb21lIChrLCBkaXN0KSAtPlxuICAgIGxldCBhY2NfdW4sIGsnID1cbiAgICAgIGlmIEFsZ19leHByLmhhc19taXggKExvYy52IGspIHRoZW5cbiAgICAgICAgKCAoTG9jLmFubm90X3dpdGhfZHVtbXkgcmF0ZV92YXIsIGspIDo6IGFjYyxcbiAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3ZhcikgKVxuICAgICAgZWxzZVxuICAgICAgICBhY2MsIGtcbiAgICBpblxuICAgIGFjY191biwgU29tZSAoaycsIGRpc3QpXG5cbnR5cGUgYWNjX2Z1bmN0aW9uX3J1bGVzID0ge1xuICBydWxlX25hbWVzOiBpbnQgKiBNb2RzLlN0cmluZ1NldC50O1xuICBleHRyYV92YXJzOlxuICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiAoQXN0Lm1peHR1cmUsIHN0cmluZykgQWxnX2V4cHIuZSBMb2MuYW5ub3RlZCkgbGlzdDtcbiAgY2xlYW5lZF9ydWxlczogcnVsZV9pbnRlcl9yZXAgbGlzdDtcbn1cblxuKCoqIFtuYW1lX2FuZF9wdXJpZnldIGNvbXBpbGVzIHRoZSBydWxlcyBmcm9tIEFzdC5ydWxlcyBpbnRvIHJ1bGVfaW50ZXJfcmVwLCBjYWxsZWQgaW4gYSBmb2xkICopXG5sZXQgbmFtZV9hbmRfcHVyaWZ5X3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgKGFjYyA6IGFjY19mdW5jdGlvbl9ydWxlcylcbiAgICAoKGxhYmVsX29wdCwgKGFzdF9ydWxlLCByX3BvcykpIDpcbiAgICAgIHN0cmluZyBMb2MuYW5ub3RlZCBvcHRpb24gKiBBc3QucnVsZSBMb2MuYW5ub3RlZCkgOiBhY2NfZnVuY3Rpb25fcnVsZXMgPVxuICBsZXQgcnVsZV9uYW1lcycsIHJ1bGVfbGFiZWwgPVxuICAgIGdpdmVfcnVsZV9sYWJlbCBhc3RfcnVsZS5iaWRpcmVjdGlvbmFsIGFjYy5ydWxlX25hbWVzIEFzdC5wcmludF9hc3RfcnVsZVxuICAgICAgYXN0X3J1bGUgbGFiZWxfb3B0XG4gIGluXG4gIGxldCBhY2MnLCBrX2RlZiA9XG4gICAgaWYgQWxnX2V4cHIuaGFzX21peCAoTG9jLnYgYXN0X3J1bGUua19kZWYpIHRoZW4gKFxuICAgICAgbGV0IHJhdGVfdmFyID0gcnVsZV9sYWJlbCBeIFwiX3JhdGVcIiBpblxuICAgICAgKCAoTG9jLmFubm90X3dpdGhfZHVtbXkgcmF0ZV92YXIsIGFzdF9ydWxlLmtfZGVmKSA6OiBhY2MuZXh0cmFfdmFycyxcbiAgICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkFMR19WQVIgcmF0ZV92YXIpIClcbiAgICApIGVsc2VcbiAgICAgIGFjYy5leHRyYV92YXJzLCBhc3RfcnVsZS5Bc3Qua19kZWZcbiAgaW5cbiAgbGV0IGFjYycnLCBrX3VuID1cbiAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua191biBhY2MnIChydWxlX2xhYmVsIF4gXCJfdW5fcmF0ZVwiKVxuICBpblxuICBtYXRjaCBhc3RfcnVsZS5yZXdyaXRlIHdpdGhcbiAgfCBBc3QuRWRpdCBlIC0+XG4gICAgaWZcbiAgICAgIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwgfHwgYXN0X3J1bGUua19vcCA8PiBOb25lXG4gICAgICB8fCBhc3RfcnVsZS5rX29wX3VuIDw+IE5vbmVcbiAgICB0aGVuXG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAoXCJSdWxlcyBpbiBlZGl0IG5vdGF0aW9uIGNhbm5vdCBiZSBiaWRpcmVjdGlvbmFsXCIsIHJfcG9zKSk7XG4gICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgIGFubm90YXRlX2VkaXRfbWl4dHVyZSB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gfmlzX3J1bGU6dHJ1ZSBzaWdzXG4gICAgICAgIH5jb250YWN0X21hcCBlLkFzdC5taXhcbiAgICBpblxuICAgIHtcbiAgICAgIHJ1bGVfbmFtZXMgPSBydWxlX25hbWVzJztcbiAgICAgIGV4dHJhX3ZhcnMgPSBhY2MnJztcbiAgICAgIGNsZWFuZWRfcnVsZXMgPVxuICAgICAgICB7XG4gICAgICAgICAgbGFiZWxfb3B0O1xuICAgICAgICAgIGJpZGlyZWN0aW9uYWwgPSB0cnVlO1xuICAgICAgICAgIG1peHR1cmU7XG4gICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgcm1fdG9rZW4gPSBbXTtcbiAgICAgICAgICBhZGRfdG9rZW4gPSBlLkFzdC5kZWx0YV90b2tlbjtcbiAgICAgICAgICBrX2RlZjtcbiAgICAgICAgICBrX3VuO1xuICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICB9XG4gICAgICAgIDo6IGFjYy5jbGVhbmVkX3J1bGVzO1xuICAgIH1cbiAgfCBBc3QuQXJyb3cgYSAtPlxuICAgIGxldCBtaXh0dXJlLCBjcmVhdGVkX21peCA9XG4gICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICBhLkFzdC5saHMgYS5Bc3QucmhzXG4gICAgaW5cbiAgICBsZXQgcnVsZXMnID1cbiAgICAgIHtcbiAgICAgICAgbGFiZWxfb3B0O1xuICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgIG1peHR1cmU7XG4gICAgICAgIGNyZWF0ZWRfbWl4O1xuICAgICAgICBybV90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICBhZGRfdG9rZW4gPSBhLkFzdC5hZGRfdG9rZW47XG4gICAgICAgIGtfZGVmO1xuICAgICAgICBrX3VuO1xuICAgICAgICBwb3MgPSByX3BvcztcbiAgICAgIH1cbiAgICAgIDo6IGFjYy5jbGVhbmVkX3J1bGVzXG4gICAgaW5cbiAgICBsZXQgYWNjJycnLCBydWxlcycnID1cbiAgICAgIG1hdGNoIGFzdF9ydWxlLmJpZGlyZWN0aW9uYWwsIGFzdF9ydWxlLmtfb3Agd2l0aFxuICAgICAgfCB0cnVlLCBTb21lIGsgd2hlbiBBbGdfZXhwci5oYXNfbWl4IChMb2MudiBrKSAtPlxuICAgICAgICBsZXQgcmF0ZV92YXIgPSBBc3QuZmxpcF9sYWJlbCBydWxlX2xhYmVsIF4gXCJfcmF0ZVwiIGluXG4gICAgICAgIGxldCByYXRlX3Zhcl91biA9IEFzdC5mbGlwX2xhYmVsIHJ1bGVfbGFiZWwgXiBcIl91bl9yYXRlXCIgaW5cbiAgICAgICAgbGV0IGFjY191biwga19vcF91biA9XG4gICAgICAgICAgYWRkX3VuX3ZhcmlhYmxlIGFzdF9ydWxlLmtfb3BfdW4gYWNjJycgcmF0ZV92YXJfdW5cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1peHR1cmUsIGNyZWF0ZWRfbWl4ID1cbiAgICAgICAgICBhbm5vdGF0ZV9saHNfd2l0aF9kaWZmIH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBzaWdzIH5jb250YWN0X21hcFxuICAgICAgICAgICAgYS5Bc3QucmhzIGEuQXN0Lmxoc1xuICAgICAgICBpblxuICAgICAgICAoIChMb2MuYW5ub3Rfd2l0aF9kdW1teSByYXRlX3ZhciwgaykgOjogYWNjX3VuLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsX29wdCA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIChsLCBwKSAtPiBBc3QuZmxpcF9sYWJlbCBsLCBwKSBsYWJlbF9vcHQ7XG4gICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgICBybV90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICAgICAga19kZWYgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQUxHX1ZBUiByYXRlX3Zhcik7XG4gICAgICAgICAgICBrX3VuID0ga19vcF91bjtcbiAgICAgICAgICAgIHBvcyA9IHJfcG9zO1xuICAgICAgICAgIH1cbiAgICAgICAgICA6OiBydWxlcycgKVxuICAgICAgfCB0cnVlLCBTb21lIHJhdGUgLT5cbiAgICAgICAgbGV0IHJhdGVfdmFyX3VuID0gQXN0LmZsaXBfbGFiZWwgcnVsZV9sYWJlbCBeIFwiX3VuX3JhdGVcIiBpblxuICAgICAgICBsZXQgYWNjX3VuLCBrX29wX3VuID1cbiAgICAgICAgICBhZGRfdW5fdmFyaWFibGUgYXN0X3J1bGUua19vcF91biBhY2MnJyByYXRlX3Zhcl91blxuICAgICAgICBpblxuICAgICAgICBsZXQgbWl4dHVyZSwgY3JlYXRlZF9taXggPVxuICAgICAgICAgIGFubm90YXRlX2xoc193aXRoX2RpZmYgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgfmNvbnRhY3RfbWFwXG4gICAgICAgICAgICBhLkFzdC5yaHMgYS5Bc3QubGhzXG4gICAgICAgIGluXG4gICAgICAgICggYWNjX3VuLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxhYmVsX29wdCA9XG4gICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoZnVuIChsLCBwKSAtPiBBc3QuZmxpcF9sYWJlbCBsLCBwKSBsYWJlbF9vcHQ7XG4gICAgICAgICAgICBiaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICBtaXh0dXJlO1xuICAgICAgICAgICAgY3JlYXRlZF9taXg7XG4gICAgICAgICAgICBybV90b2tlbiA9IGEuQXN0LmFkZF90b2tlbjtcbiAgICAgICAgICAgIGFkZF90b2tlbiA9IGEuQXN0LnJtX3Rva2VuO1xuICAgICAgICAgICAga19kZWYgPSByYXRlO1xuICAgICAgICAgICAga191biA9IGtfb3BfdW47XG4gICAgICAgICAgICBwb3MgPSByX3BvcztcbiAgICAgICAgICB9XG4gICAgICAgICAgOjogcnVsZXMnIClcbiAgICAgIHwgZmFsc2UsIE5vbmUgLT4gYWNjJycsIHJ1bGVzJ1xuICAgICAgfCBmYWxzZSwgU29tZSBfIHwgdHJ1ZSwgTm9uZSAtPlxuICAgICAgICByYWlzZVxuICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgKCBcIkluY29tcGF0aWJsZSBhcnJvdyBhbmQga2luZWN0aWMgcmF0ZSBmb3IgaW52ZXJzZSBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICByX3BvcyApKVxuICAgIGluXG4gICAgeyBydWxlX25hbWVzID0gcnVsZV9uYW1lcyc7IGV4dHJhX3ZhcnMgPSBhY2MnJyc7IGNsZWFuZWRfcnVsZXMgPSBydWxlcycnIH1cblxudHlwZSBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzID1cbiAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHN0cmluZyBMb2MuYW5ub3RlZCkgbGlzdCBTaWduYXR1cmUuc2l0ZV9zaWdcbigqKiBUZW1wb3JhcnkgdHlwZSB0byBzdG9yZSBzaXRlIHNpZ25hdHVyZSB3aXRoIGxpc3QgbGlua3MgaW5zdGVhZCBvZiBhcnJheSBhcnJheSBsaW5rcyAqKVxuXG4oKiogW3ByZXBhcmVfYWdlbnRfc2lnIH5zaXRlcyBldmFsdWF0ZXMgdG8gKHNpdGVfc2lncywgY291bnRlcl9saXN0KSB3aGljaCBkZXNjcmliZSBkYXRhIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgU2lnbmF0dXJlLnQgZm9yIGEgc2luZ2xlIGFnZW50KilcbmxldCBwcmVwYXJlX2FnZW50X3NpZyB+KHNpdGVzIDogQXN0LmNvdW50ZXJfc2lnIEFzdC5zaXRlIGxpc3QpIDpcbiAgICBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCAqIHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0ID1cbiAgbGV0ICggKHNpdGVfc2lnc19wcmVfbmFtZWRkZWNscyA6XG4gICAgICAgICAgKHN0cmluZyBMb2MuYW5ub3RlZCAqIHNpdGVfc2lnX3dpdGhfbGlua3NfYXNfbGlzdHMpIGxpc3QpLFxuICAgICAgICAoY291bnRlcl9uYW1lcyA6IHN0cmluZyBMb2MuYW5ub3RlZCBsaXN0KSApID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gc2l0ZSAoYWNjX3NpdGVfc2lncywgYWNjX2NvdW50ZXJfbmFtZXMpIC0+XG4gICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAoKiBUT0RPIHNlZSBpZiBjYW4gcmVtb3ZlIEFzdCBoZXJlICopXG4gICAgICAgIHwgQXN0LlBvcnQgcCAtPlxuICAgICAgICAgICggKCBwLnBvcnRfbmFtZSxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgICBOYW1lZERlY2xzLmNyZWF0ZVxuICAgICAgICAgICAgICAgICAgICAoVG9vbHMuYXJyYXlfbWFwX29mX2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHgsIHBvcyAtPiAoeCwgcG9zKSwgKClcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUsIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBpbnRlcm5hbCBzdGF0ZSBpbnNpZGUgc2lnbmF0dXJlIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluaXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gICAgICAgICAgICAgICAgICAgICAgIHAucG9ydF9pbnQpO1xuICAgICAgICAgICAgICAgIGxpbmtzID1cbiAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjX2xpbmtzJyAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgIHwgKCAoTEthcHBhLkxOS19GUkVFIHwgTEthcHBhLkFOWV9GUkVFIHwgTEthcHBhLkxOS19BTlkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfICkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY19saW5rcydcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IChMS2FwcGEuTE5LX1NPTUUgfCBMS2FwcGEuTE5LX1ZBTFVFIF8pLCBwb3MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXCJGb3JiaWRkZW4gbGluayBzdGF0dXMgaW5zaWRlIHNpZ25hdHVyZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbml0aW9uXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgfCBMS2FwcGEuTE5LX1RZUEUgKGEsIGIpLCBfIC0+IChhLCBiKSA6OiBhY2NfbGlua3MnKVxuICAgICAgICAgICAgICAgICAgICAgICBbXSBwLnBvcnRfbGluayk7XG4gICAgICAgICAgICAgICAgY291bnRlcl9pbmZvID0gTm9uZTtcbiAgICAgICAgICAgICAgfSApXG4gICAgICAgICAgICA6OiBhY2Nfc2l0ZV9zaWdzLFxuICAgICAgICAgICAgYWNjX2NvdW50ZXJfbmFtZXMgKVxuICAgICAgICB8IENvdW50ZXIgYyAtPlxuICAgICAgICAgICgqIFdlIGFyZSByZWFkaW5nIGhlcmUgYSBzaWduYXR1cmUsIG9ubHkgQ0VRIHRlc3RzIGFyZSBhY2NlcHRlZCAqKVxuICAgICAgICAgICggKCBjLkFzdC5jb3VudGVyX3NpZ19uYW1lLFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaW50ZXJuYWxfc3RhdGUgPSBOYW1lZERlY2xzLmNyZWF0ZSBbfHxdO1xuICAgICAgICAgICAgICAgICgqIEFnZW50IHdpdGggY291bnRlciBjYW4gbGluayB0byBwb3J0IFtiXSBvbiBjb3VudGVyIGFnZW50IFtfX2NvdW50ZXJfYWdlbnRdICopXG4gICAgICAgICAgICAgICAgbGlua3MgPVxuICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgKCBMb2MuYW5ub3Rfd2l0aF9kdW1teSBcImJcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIExvYy5hbm5vdF93aXRoX2R1bW15IFwiX19jb3VudGVyX2FnZW50XCIgKTtcbiAgICAgICAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgICAgICBjb3VudGVyX2luZm8gPVxuICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgY291bnRlcl9pbmZvX21pbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYy5Bc3QuY291bnRlcl9zaWdfbWluIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoU29tZSBpLCBfKSAtPiBTb21lIGlcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKE5vbmUsIF8pIC0+IE5vbmUpO1xuICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXJfaW5mb19tYXggPVxuICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGMuQXN0LmNvdW50ZXJfc2lnX21heCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSwgXykgLT4gU29tZSBpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lIChOb25lLCBfKSAtPiBOb25lKTtcbiAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyX2RlZmF1bHRfdmFsdWUgPSBjLkFzdC5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9IClcbiAgICAgICAgICAgIDo6IGFjY19zaXRlX3NpZ3MsXG4gICAgICAgICAgICBjLmNvdW50ZXJfc2lnX25hbWUgOjogYWNjX2NvdW50ZXJfbmFtZXMgKSlcbiAgICAgIHNpdGVzIChbXSwgW10pXG4gIGluXG4gIE5hbWVkRGVjbHMuY3JlYXRlX2Zyb21fbGlzdCBzaXRlX3NpZ3NfcHJlX25hbWVkZGVjbHMsIGNvdW50ZXJfbmFtZXNcblxuKCoqIFttYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzIGNvdW50ZXJzX3Blcl9hZ2VudF0gZXZhbHVhdGVzIHRvXG4gIChjb3VudGVyX2FnZW50X25hbWUsIHNpdGVfc2lnc19jb3VudGVyX2FnZW50KSB3aGljaCBkZXNjcmliZSB0aGUgY291bnRlclxuICAgICAgYWdlbnQgYW5kIGl0cyBzaXRlIHNpZ25hdHVyZXMgd2l0aCBwb3NzaWJsZSBsaW5rcyB0byBvdGhlciBhZ2VudHMuXG4gICAgICBbY291bnRlcl9pbmZvXSBhc3NvY2lhdGVzIGVhY2ggYWdlbnQgdG8gYSBsaXN0IG9mIGNvdW50ZXIgcG9ydHMsIG9uZSBmb3IgZWFjaCBkZWZpbmVkIGNvdW50ZXIgKilcbmxldCBtYWtlX2NvdW50ZXJfYWdlbnRfc2l0ZV9zaWdzXG4gICAgKGNvdW50ZXJzX3Blcl9hZ2VudCA6ICgoc3RyaW5nICogTG9jLnQpICogKHN0cmluZyAqIExvYy50KSBsaXN0KSBsaXN0KSA6XG4gICAgKHN0cmluZyAqIExvYy50KVxuICAgICogKChzdHJpbmcgKiBMb2MudCkgKiAoc3RyaW5nICogTG9jLnQpKSBsaXN0IFNpZ25hdHVyZS5zaXRlX3NpZyBOYW1lZERlY2xzLnRcbiAgICA9XG4gIGxldCBjb3VudGVyX2FnZW50X25hbWUgPSBcIl9fY291bnRlcl9hZ2VudFwiLCBMb2MuZHVtbXkgaW5cbiAgbGV0IGFfcG9ydF9uYW1lID0gXCJhXCIsIExvYy5kdW1teSBpblxuICAoKiBhZnRlciBwb3J0ICopXG4gIGxldCBiX3BvcnRfbmFtZSA9IFwiYlwiLCBMb2MuZHVtbXkgaW5cblxuICAoKiBiZWZvcmUgcG9ydCAqKVxuXG4gICgqIFBvcnQgW2FdIGNhbiBsaW5rIHRvIHBvcnQgYiBvZiBhZ2VudCBvZiB0eXBlIGNvdW50ZXIgYWdlbnQgKilcbiAgbGV0IGFfcG9ydF9zaWcgPVxuICAgIHtcbiAgICAgIFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZSA9IE5hbWVkRGVjbHMuY3JlYXRlIFt8fF07XG4gICAgICBsaW5rcyA9IFNvbWUgWyBiX3BvcnRfbmFtZSwgY291bnRlcl9hZ2VudF9uYW1lIF07XG4gICAgICBjb3VudGVyX2luZm8gPSBOb25lO1xuICAgIH1cbiAgaW5cbiAgKCogUG9ydCBbYl0gY2FuIGxpbmsgdG8gcG9ydCBhIG9mIGFnZW50IG9mIHR5cGUgY291bnRlciBhZ2VudFxuICAgKiBPUiBmb3IgZWFjaCBhZ2VudCBbYWdlbnRfbmFtZV0gd2l0aCBjb3VudGVycywgdG8gdGhlaXIgcG9ydHNcbiAgICogW2FnZW50X2NvdW50ZXJfcG9ydF9uYW1lXSAqKVxuICBsZXQgYl9saW5rcyA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIChhZ2VudF9uYW1lLCBjb3VudGVyc19mcm9tX2FnZW50KSBhY2MgLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGFnZW50X2NvdW50ZXJfcG9ydF9uYW1lIC0+IGFnZW50X2NvdW50ZXJfcG9ydF9uYW1lLCBhZ2VudF9uYW1lKVxuICAgICAgICAgIGNvdW50ZXJzX2Zyb21fYWdlbnRcbiAgICAgICAgQCBhY2MpXG4gICAgICBjb3VudGVyc19wZXJfYWdlbnRcbiAgICAgIFsgYV9wb3J0X25hbWUsIGNvdW50ZXJfYWdlbnRfbmFtZSBdXG4gIGluXG4gIGxldCBiX3BvcnRfc2lnID1cbiAgICB7XG4gICAgICBTaWduYXR1cmUuaW50ZXJuYWxfc3RhdGUgPSBOYW1lZERlY2xzLmNyZWF0ZSBbfHxdO1xuICAgICAgbGlua3MgPSBTb21lIGJfbGlua3M7XG4gICAgICBjb3VudGVyX2luZm8gPSBOb25lO1xuICAgIH1cbiAgaW5cbiAgbGV0IHNpdGVfc2lnc19jb3VudGVyX2FnZW50ID1cbiAgICBOYW1lZERlY2xzLmNyZWF0ZSBbfCBhX3BvcnRfbmFtZSwgYV9wb3J0X3NpZzsgYl9wb3J0X25hbWUsIGJfcG9ydF9zaWcgfF1cbiAgaW5cbiAgY291bnRlcl9hZ2VudF9uYW1lLCBzaXRlX3NpZ3NfY291bnRlcl9hZ2VudFxuXG5sZXQgYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgfihidWlsZF9jb250YWN0X21hcCA6IGJvb2wpXG4gICAgKGFnZW50X3NpZ3NfcHJlIDogc2l0ZV9zaWdfd2l0aF9saW5rc19hc19saXN0cyBOYW1lZERlY2xzLnQgTmFtZWREZWNscy50KSA6XG4gICAgU2lnbmF0dXJlLnQgTmFtZWREZWNscy50ID1cbiAgbGV0IHNpemVfc2lncyA9IE5hbWVkRGVjbHMuc2l6ZSBhZ2VudF9zaWdzX3ByZSBpblxuICBOYW1lZERlY2xzLm1hcGlcbiAgICAoZnVuIGFnX2lkIGFnX25hbWUgLT5cbiAgICAgIE5hbWVkRGVjbHMubWFwIChmdW4gc2l0ZV9uYW1lX2FnMSBzaXRlX3NpZyAtPlxuICAgICAgICAgIGlmIG5vdCBidWlsZF9jb250YWN0X21hcCB0aGVuXG4gICAgICAgICAgICB7IHNpdGVfc2lnIHdpdGggU2lnbmF0dXJlLmxpbmtzID0gTm9uZSB9XG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAoKiBVcGRhdGUgbGlua3MgKilcbiAgICAgICAgICAgICgqIFRPRE8gaW1wcm92ZSBjb21tZW50IGFib3ZlICopXG4gICAgICAgICAgICBsZXQgc2l0ZV9saW5rcyA9XG4gICAgICAgICAgICAgIEFycmF5LmluaXQgKHNpemVfc2lncyAtIGFnX2lkKSAoZnVuIGkgLT5cbiAgICAgICAgICAgICAgICAgIEFycmF5Lm1ha2VcbiAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuc2l6ZVxuICAgICAgICAgICAgICAgICAgICAgICAoTmFtZWREZWNscy5lbHRfdmFsIGFnZW50X3NpZ3NfcHJlIChpICsgYWdfaWQpKSlcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKCgoc2l0ZV9uYW1lX2FnMiwgcG9zKSBhcyBzaXRlX25hbWUpLCAoKGFnMl9uYW1lLCBfKSBhcyBhZykpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFnMl9pZCA9IE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwiYWdcIiBhZ2VudF9zaWdzX3ByZSBhZyBpblxuICAgICAgICAgICAgICAgIGxldCBzaXRlX2lkID1cbiAgICAgICAgICAgICAgICAgIE5hbWVkRGVjbHMuZWx0X2lkIH5raW5kOlwic2l0ZSBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgKE5hbWVkRGVjbHMuZWx0X3ZhbCBhZ2VudF9zaWdzX3ByZSBhZzJfaWQpXG4gICAgICAgICAgICAgICAgICAgIHNpdGVfbmFtZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgaWYgYWcyX2lkID49IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgICAgIHNpdGVfbGlua3MuKGFnMl9pZCAtIGFnX2lkKS4oc2l0ZV9pZCkgPC0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBsZXQgc2hvdWxkX3JhaXNlX2Zvcl9taXNzaW5nX2xpbmsgPVxuICAgICAgICAgICAgICAgICAgbm90XG4gICAgICAgICAgICAgICAgICAgIChMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgICAoZnVuICgoeCwgXyksICh5LCBfKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICB4ID0gc2l0ZV9uYW1lX2FnMSAmJiB5ID0gYWdfbmFtZSlcbiAgICAgICAgICAgICAgICAgICAgICAgKChOYW1lZERlY2xzLmVsdF92YWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChOYW1lZERlY2xzLmVsdF92YWwgYWdlbnRfc2lnc19wcmUgYWcyX2lkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLmxpbmtzIHw+IE9wdGlvbl91dGlsLnVuc29tZV9vcl9yYWlzZSkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZiBzaG91bGRfcmFpc2VfZm9yX21pc3NpbmdfbGluayB0aGVuXG4gICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZiBcIk5vIGxpbmsgdG8gJXMuJXMgZnJvbSAlcy4lcy5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZV9uYW1lX2FnMSBhZ19uYW1lIHNpdGVfbmFtZV9hZzIgYWcyX25hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpKVxuICAgICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlIHNpdGVfc2lnLmxpbmtzKTtcbiAgICAgICAgICAgIHsgc2l0ZV9zaWcgd2l0aCBTaWduYXR1cmUubGlua3MgPSBTb21lIHNpdGVfbGlua3MgfVxuICAgICAgICAgICkpKVxuICAgIGFnZW50X3NpZ3NfcHJlXG5cbmxldCBjcmVhdGVfc2lncyAobCA6IEFzdC5hZ2VudF9zaWcgbGlzdCkgOiBTaWduYXR1cmUucyA9XG4gICgqIENvbnRhY3QgbWFwIHNob3VsZCBiZSBidWlsdCBvbmx5IGlmIGEgc3BlY2lmaWMgbGluayBpcyBkZXNjcmliZWQgaW4gdGhlIGRlZmluaXRpb24gb2Ygc2lnbmF0dXJlICopXG4gIGxldCBidWlsZF9jb250YWN0X21hcCA6IGJvb2wgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYzAgLT4gZnVuY3Rpb25cbiAgICAgICAgfCBBc3QuQWJzZW50IHBvcyAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgKFwiQWJzZW50IGFnZW50IGFyZSBmb3JiaWRkZW4gaW4gc2lnbmF0dXJlXCIsIHBvcykpXG4gICAgICAgIHwgQXN0LlByZXNlbnQgKF8sIHNpdGVzLCBfKSAtPlxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjYzEgc2l0ZSAtPlxuICAgICAgICAgICAgICBtYXRjaCBzaXRlIHdpdGhcbiAgICAgICAgICAgICAgfCBBc3QuQ291bnRlciBfIC0+IGFjYzFcbiAgICAgICAgICAgICAgfCBBc3QuUG9ydCBwIC0+XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjMiAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgICAgICB8IChMS2FwcGEuTE5LX0ZSRUUgfCBMS2FwcGEuQU5ZX0ZSRUUgfCBMS2FwcGEuTE5LX0FOWSksIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBhY2MyXG4gICAgICAgICAgICAgICAgICAgIHwgKExLYXBwYS5MTktfU09NRSB8IExLYXBwYS5MTktfVkFMVUUgXyksIHBvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkZvcmJpZGRlbiBsaW5rIHN0YXR1cyBpbnNpZGUgYSBkZWZpbml0aW9uIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaWduYXR1cmVcIixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zICkpXG4gICAgICAgICAgICAgICAgICAgIHwgTEthcHBhLkxOS19UWVBFIChfLCBfKSwgXyAtPiB0cnVlKVxuICAgICAgICAgICAgICAgICAgYWNjMSBwLkFzdC5wb3J0X2xpbmspXG4gICAgICAgICAgICBhY2MwIHNpdGVzKVxuICAgICAgZmFsc2UgbFxuICBpblxuXG4gIGxldCAoIChzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgOlxuICAgICAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzaXRlX3NpZ193aXRoX2xpbmtzX2FzX2xpc3RzIE5hbWVkRGVjbHMudCkgbGlzdCksXG4gICAgICAgIChjb3VudGVyc19wZXJfYWdlbnQgOlxuICAgICAgICAgIChzdHJpbmcgTG9jLmFubm90ZWQgKiBzdHJpbmcgTG9jLmFubm90ZWQgbGlzdCkgbGlzdCkgKSA9XG4gICAgTGlzdC5mb2xkX3JpZ2h0XG4gICAgICAoZnVuIGFnZW50IChhY2Nfc2lncywgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudCkgLT5cbiAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhY2Nfc2lncywgYWNjX2NvdW50ZXJzX3Blcl9hZ2VudFxuICAgICAgICB8IEFzdC5QcmVzZW50IChhZ2VudF9uYW1lLCBzaXRlcywgXykgLT5cbiAgICAgICAgICBsZXQgc2l0ZV9zaWdzX25kLCBjb3VudGVyc19hZ2VudCA9IHByZXBhcmVfYWdlbnRfc2lnIH5zaXRlcyBpblxuICAgICAgICAgIGxldCBjb3VudGVycycgPVxuICAgICAgICAgICAgaWYgY291bnRlcnNfYWdlbnQgPSBbXSB0aGVuXG4gICAgICAgICAgICAgIGFjY19jb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKGFnZW50X25hbWUsIGNvdW50ZXJzX2FnZW50KSA6OiBhY2NfY291bnRlcnNfcGVyX2FnZW50XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoYWdlbnRfbmFtZSwgc2l0ZV9zaWdzX25kKSA6OiBhY2Nfc2lncywgY291bnRlcnMnKVxuICAgICAgbCAoW10sIFtdKVxuICBpblxuXG4gIGxldCBhZ2VudF9zaWdzIDogU2lnbmF0dXJlLnQgTmFtZWREZWNscy50ID1cbiAgICAoaWYgY291bnRlcnNfcGVyX2FnZW50ID0gW10gdGhlblxuICAgICAgIHNpZ3Nfd2l0aF9saW5rc19hc19saXN0c1xuICAgICBlbHNlXG4gICAgICAgbWFrZV9jb3VudGVyX2FnZW50X3NpdGVfc2lncyBjb3VudGVyc19wZXJfYWdlbnRcbiAgICAgICA6OiBzaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMpXG4gICAgfD4gTmFtZWREZWNscy5jcmVhdGVfZnJvbV9saXN0XG4gICAgfD4gYWdlbnRfc2lnc19vZl9hZ2VudF9zaWdzX3dpdGhfbGlua3NfYXNfbGlzdHMgfmJ1aWxkX2NvbnRhY3RfbWFwXG4gIGluXG5cbiAgKCogVE9ETyBzZWUgYWdlbnRfc2lncyBuYW1pbmdzICopXG4gIFNpZ25hdHVyZS5jcmVhdGUgfmNvdW50ZXJzX3Blcl9hZ2VudCBhZ2VudF9zaWdzXG5cbmxldCBpbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb24gc2lncyBjb250YWN0X21hcCB0b2sgYWxncyBpbml0cyA9XG4gIExpc3QubWFwXG4gICAgKGZ1biAoZXhwciwgaW5pKSAtPlxuICAgICAgKCBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGFsZ3MgZXhwcixcbiAgICAgICAgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHNpZ3MgdG9rIGNvbnRhY3RfbWFwIGluaSApKVxuICAgIGluaXRzXG5cbnR5cGUgYXN0X2NvbXBpbGVkX2RhdGEgPSB7XG4gIGFnZW50c19zaWc6IFNpZ25hdHVyZS5zO1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgdG9rZW5fbmFtZXM6IHVuaXQgTmFtZWREZWNscy50O1xuICBhbGdfdmFyc19maW5kZXI6IGludCBNb2RzLlN0cmluZ01hcC50O1xuICB1cGRhdGVkX2FsZ192YXJzOiBpbnQgbGlzdDtcbiAgcmVzdWx0OlxuICAgICggQXN0LmFnZW50LFxuICAgICAgQXN0LmFnZW50X3NpZyxcbiAgICAgIExLYXBwYS5ydWxlX21peHR1cmUsXG4gICAgICBSYXdfbWl4dHVyZS50LFxuICAgICAgaW50LFxuICAgICAgTEthcHBhLnJ1bGUgKVxuICAgIEFzdC5jb21waWw7XG4gICAgICAoKiogQ29tcGlsZWQgZGF0YSB3aGVyZSBpZGVudGlmaWVycyBhcmUgaSBBc3QuY29tcGlsIHdoZXJlIGlkZW50aWZpZXJzXG4gICAgICogYXJlIGludGVnZXJzIGFuZCBub3Qgc3RyaW5nLCBzeW50YWN0aWMgc3VnYXIgb24gcnVsZXMgYXJlIGV4cGFuc2VkXG4gICAgICogKHN5bnRhY3RpYyBzdWdhciBvbiBtaXh0dXJlIGFyZSBub3QpICopXG59XG5cbmxldCBpbnZlcnRlZF9jb3VudGVyX25hbWUgKG5hbWUgOiBzdHJpbmcpIDogc3RyaW5nID1cbiAgbmFtZSBeIFNpZ25hdHVyZS5pbnZlcnRlZF9jb3VudGVyX3N1ZmZpeFxuXG4oKiogRXZhbHVhdGVzIHRvIGEgYXN0X2NvbXBpbCB3aGVyZSBjbHRlIHRlc3RzIGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGNndGUgdGVzdHMuXG4gKiBGb3IgdGhpcywgZm9yIGVhY2ggY291bnRlciB3aGVyZSBhIENMVEUgdGVzdCBpcyBwcmVzZW50LCB3aG9zZSB2YWx1ZXMgYXJlIGluIFtcXFthLCBiXFxdXSwgaW5pdGlhbGl6ZWQgYXQgW2ldIGFuZCBhZGQgYSBuZXcgY291bnRlciBiZWxvbmdpbmcgaW4gW2EsIGJdIGluaXRpYWxpemVkIGF0IFthK2ItaV0uXG4gKiBFYWNoIHRlc3QgWz4gdmFsdWVdIGlzIHRoZW4gdHJhbnNsYXRlZCBpbnRvIGEgdGVzdCB0byB0aGUgXCJpbnZlcnRlZFwiIGNvdW50ZXIgYXMgWzwgYStiLXZhbHVlXS5cbiAqIEVhY2ggZGVsdGEgWysgZGVsdGFdIGlzIHRyYW5zbGF0ZWQgaW50byBhIFstIGRlbHRhXSAqKVxuXG5cblxuXG5sZXQgdHJhbnNsYXRlX2NsdGVfaW50b19jZ3RlIChhc3RfY29tcGlsIDogQXN0LnBhcnNpbmdfY29tcGlsKSA9XG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhY2MyIGFnZW50X2xpc3QgLT5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYzMgYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFjYzNcbiAgICAgICAgICAgIHwgQXN0LlByZXNlbnQgKGFnZW50X25hbWUsIHNpdGVfbGlzdCwgXykgLT5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGFjYzQgc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjNFxuICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT4gZiBhY2M0IChMb2MudiBhZ2VudF9uYW1lKSBjb3VudGVyKVxuICAgICAgICAgICAgICBhY2MzIHNpdGVfbGlzdClcbiAgICAgICAgYWNjMiBhZ2VudF9saXN0KVxuICAgICAgYWNjIG1peHR1cmVcbiAgaW5cbiAgbGV0IHJlYyBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBleHByID1cbiAgICBtYXRjaCBMb2MudiBleHByIHdpdGhcbiAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKF8sIGUxLCBlMikgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiAoY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZTEpIGUyXG4gICAgfCBVTl9BTEdfT1AgKF8sIGUpIHwgRElGRl9UT0tFTiAoZSwgXykgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICAgIHwgU1RBVEVfQUxHX09QIF8gfCBBTEdfVkFSIF8gfCBUT0tFTl9JRCBfIHwgQ09OU1QgXyAtPiBhY2NcbiAgICB8IEtBUFBBX0lOU1RBTkNFIG1peHR1cmUgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgbWl4dHVyZVxuICAgIHwgSUYgKGViLCBlMSwgZTIpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTIpIGViXG4gICAgfCBESUZGX0tBUFBBX0lOU1RBTkNFIChlLCBtaXh0dXJlKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fbWl4dHVyZSBmIGFjYyBtaXh0dXJlKSBlXG4gIGFuZCBjb3VudGVyX2ZvbGRfaW5fYmV4cHIgZiBhY2MgYmV4cHIgPVxuICAgIG1hdGNoIExvYy52IGJleHByIHdpdGhcbiAgICB8IFRSVUUgfCBGQUxTRSAtPiBhY2NcbiAgICB8IEJJTl9CT09MX09QIChfLCBiZTEsIGJlMikgLT5cbiAgICAgICAgY291bnRlcl9mb2xkX2luX2JleHByIGYgKGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIGFjYyBiZTEpIGJlMlxuICAgIHwgVU5fQk9PTF9PUCAoXywgYmUpIC0+XG4gICAgICAgIGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIGFjYyBiZVxuICAgIHwgQ09NUEFSRV9PUCAoXywgZTEsIGUyKSAtPlxuICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlMSkgZTJcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9iZXhwcl9vcHQgZiBhY2MgYmV4cHIgPVxuICAgIG1hdGNoIGJleHByIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSBlIC0+IGNvdW50ZXJfZm9sZF9pbl9iZXhwciBmIGFjYyBlXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fcnVsZSBmIGFjYyBydWxlID1cbiAgICBsZXQgcnVsZSA6IEFzdC5ydWxlID0gcnVsZSB8PiBMb2MudiBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5yZXdyaXRlIHdpdGhcbiAgICAgIHwgQXN0LkVkaXQgXyAtPiBhY2MgKCogbm8gY291bnRlciB0ZXN0IGFsbG93ZWQgaW4gZWRpdCBydWxlICopICgqIHRvIGRvICopXG4gICAgICB8IEFzdC5BcnJvdyBjb250ZW50IC0+IGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIGNvbnRlbnQubGhzXG4gICAgaW5cbiAgICBsZXQgYWNjID1cbiAgICAgIG1hdGNoIHJ1bGUua191biB3aXRoIE5vbmUgLT4gYWNjXG4gICAgICAgIHwgU29tZSAoZSwgU29tZSBlJykgLT5cbiAgICAgICAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIChjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlJyApIGVcbiAgICAgICAgfCBTb21lIChlLCBOb25lKSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgaW5cbiAgICBsZXQgYWNjID0gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgcnVsZS5rX2RlZiBpblxuICAgIGxldCBhY2MgPVxuICAgICAgbWF0Y2ggcnVsZS5rX29wX3VuIHdpdGggTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIChlLCBTb21lIGUnKSAtPlxuICAgICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGUnICkgZVxuICAgICAgICB8IFNvbWUgKGUsIE5vbmUpIC0+IGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICBpblxuICAgIGxldCBhY2M9XG4gICAgICBtYXRjaCBydWxlLmtfb3Agd2l0aCBOb25lIC0+IGFjY1xuICAgICAgICB8IFNvbWUgZSAtPiBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gICAgaW5cbiAgICBhY2NcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl92YXJpYWJsZSBmIGFjYyB2YXJpYWJsZV9kZWYgPVxuICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIChzbmQgdmFyaWFibGVfZGVmKVxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX29ic2VydmFibGUgZiBhY2Mgb2JzX2RlZiA9XG4gICAgY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2Mgb2JzX2RlZlxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX2luaXQgZiBhY2MgaW5pdCA9XG4gICAgbGV0IGUsXyA9IGluaXQgaW5cbiAgICBjb3VudGVyX2ZvbGRfaW5fZXhwciBmIGFjYyBlXG4gIGluXG4gIGxldCBjb3VudGVyX2ZvbGRfaW5fcHJpbnQgZiBhY2MgcCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBfIC0+IGFjY1xuICAgIHwgQWxnX3BleHByIGUgLT4gY291bnRlcl9mb2xkX2luX2V4cHIgZiBhY2MgZVxuICBpblxuICBsZXQgY291bnRlcl9mb2xkX2luX21vZCBmIGFjYyBtb2RfZGVmID1cbiAgICBtYXRjaCBtb2RfZGVmIHdpdGhcbiAgICB8IEFzdC5BUFBMWSAoZSxyKSAtPlxuICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgKGNvdW50ZXJfZm9sZF9pbl9ydWxlIGYgYWNjIHIpIGVcbiAgICB8IFVQREFURSAoXyxlKSAtPlxuICAgICAgIGNvdW50ZXJfZm9sZF9pbl9leHByIGYgYWNjIGVcbiAgICB8IFNUT1AgbCB8IFNOQVBTSE9UIChfLGwpIHwgRElOIChfLCBsKSB8IERJTk9GRiBsIC0+XG4gICAgICAgTGlzdC5mb2xkX2xlZnQgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKSBhY2MgbFxuICAgIHwgUFJJTlQgKGwsIGwnKSAtPlxuICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKVxuICAgICAgICAgICgoTGlzdC5mb2xkX2xlZnQgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKSBhY2MgbCcpKVxuICAgICAgICAgICBsXG4gICAgfCBQTE9URU5UUllcbiAgICB8IENGTE9XTEFCRUwgXyAtPiBhY2NcbiAgICB8IENGTE9XTUlYIChfLCBwKSAtPlxuICAgICAgY291bnRlcl9mb2xkX2luX21peHR1cmUgZiBhY2MgKExvYy52IHApXG4gICAgfCBTUEVDSUVTX09GIChfLCBsLCBtKSAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9wcmludCBmKVxuICAgICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9taXh0dXJlIGYgYWNjIChMb2MudiBtKSlcbiAgICAgICAgICAgIGxcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZF9pbl9wZXJ0dXJiYXRpb24gZiBhY2MgcGVydHVyYmF0aW9uID1cbiAgICBsZXQgKF8sYjFfb3B0LG1vZF9saXN0LGIyX29wdCkgPSBMb2MudiBwZXJ0dXJiYXRpb24gIGluXG4gICAgY291bnRlcl9mb2xkX2luX2JleHByX29wdCBmXG4gICAgICAoY291bnRlcl9mb2xkX2luX2JleHByX29wdCBmXG4gICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChjb3VudGVyX2ZvbGRfaW5fbW9kIGYpXG4gICAgICAgICAgICAgIGFjYyBtb2RfbGlzdClcbiAgICAgICAgICBiMl9vcHQpXG4gICAgICBiMV9vcHRcbiAgaW5cbiAgbGV0IGNvdW50ZXJfZm9sZCBmIGluaXQgID1cbiAgICBsZXQgbDEgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhY2MgciAtPiBjb3VudGVyX2ZvbGRfaW5fcnVsZSBmIGFjYyAoc25kIHIpKVxuICAgICAgICBpbml0IGFzdF9jb21waWwucnVsZXNcbiAgICBpblxuICAgIGxldCBsMiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChjb3VudGVyX2ZvbGRfaW5fdmFyaWFibGUgZilcbiAgICAgICAgICBsMSBhc3RfY29tcGlsLnZhcmlhYmxlc1xuICAgIGluXG4gICAgbGV0IGwzID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9vYnNlcnZhYmxlIGYpXG4gICAgICAgICAgbDIgYXN0X2NvbXBpbC5vYnNlcnZhYmxlc1xuICAgIGluXG4gICAgbGV0IGw0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGNvdW50ZXJfZm9sZF9pbl9pbml0IGYpXG4gICAgICAgICAgbDMgYXN0X2NvbXBpbC5pbml0XG4gICAgaW5cbiAgICBsZXQgbDUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoY291bnRlcl9mb2xkX2luX3BlcnR1cmJhdGlvbiBmKVxuICAgICAgICAgIGw0IGFzdF9jb21waWwucGVydHVyYmF0aW9uc1xuICAgIGluXG4gICAgbDVcbiAgaW5cbiAgKCogRmluZCBjb3VudGVycyB0aGF0IGhhdmUgQ0xURSB0ZXN0cywgYW5kIGJ1aWxkIGxpc3Q6IGFnZW50X25hbWUsIGNvdW50ZXJfbmFtZSwgc3VtX2JvdW5kc19yZWYgbGlzdC5cbiAgICogc3VtX2JvdW5kc19yZWYgaXMgdGhlbiBmaWxsZWQgd2hlbiByZWFkaW5nIHRoZSBzaWduYXR1cmUgYW5kIHVzZWQgdG8gc3BlY2lmeSBmb3IgaW52ZXJ0ZWQgY291bnRlciBpbml0IHZhbHVlIG9yIHRlc3QgdmFsdWUgYXMgW3N1bV9ib3VuZHNfcmVmIC0gdmFsdWVdICopXG4gIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHMgOlxuICAgIE1vZHMuU3RyaW5nU2V0LnQgTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgY291bnRlcl9mb2xkIChmdW4gbWFwIGFnZW50X25hbWUgY291bnRlciAtPlxuICAgICAgICBsZXQgY291bnRlcl9uYW1lID0gTG9jLnYgY291bnRlci5jb3VudGVyX25hbWUgaW5cbiAgICAgICAgKCogRm9yYmlkIHByZWZpeCB0byBhdm9pZCBub25zZW5zZSBpbiBjb3VudGVyIGRlZmluaXRpb24gKilcbiAgICAgICAgaWYgU2lnbmF0dXJlLmlzX2ludmVydGVkX2NvdW50ZXIgY291bnRlcl9uYW1lIHRoZW5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJjYW5ub3QgZW5kIGNvdW50ZXIgbmFtZSBieSBcXFwiXCJcbiAgICAgICAgICAgICAgICAgXiBTaWduYXR1cmUuaW52ZXJ0ZWRfY291bnRlcl9zdWZmaXggXiBcIlxcXCJcIixcbiAgICAgICAgICAgICAgICAgTG9jLmdldF9hbm5vdCBjb3VudGVyLmNvdW50ZXJfbmFtZSApKTtcbiAgICAgICAgKCogUmV0dXJuIGNvdW50ZXIgbmFtZSBhbG9uZyB3aXRoIG1hdGNoaW5nIGFnZW50X25hbWUgKilcbiAgICAgICAgbWF0Y2ggT3B0aW9uX3V0aWwubWFwIExvYy52IGNvdW50ZXIuY291bnRlcl90ZXN0IHdpdGhcbiAgICAgICAgfCBTb21lIChBc3QuQ0xURSBfKSAtPlxuICAgICAgICAgIGxldCBzaXRlcyA9IE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBNb2RzLlN0cmluZ1NldC5lbXB0eSBhZ2VudF9uYW1lIG1hcCBpblxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBNb2RzLlN0cmluZ1NldC5tZW0gY291bnRlcl9uYW1lIHNpdGVzXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgbWFwXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIGFnZW50X25hbWVcbiAgICAgICAgICAgICAgICAoTW9kcy5TdHJpbmdTZXQuYWRkIGNvdW50ZXJfbmFtZSBzaXRlcylcbiAgICAgICAgICAgICAgICBtYXBcbiAgICAgICAgfCBTb21lIChBc3QuQ0VRIF8pIHwgU29tZSAoQXN0LkNHVEUgXykgfCBTb21lIChBc3QuQ1ZBUiBfKSB8IE5vbmUgLT4gbWFwKSBNb2RzLlN0cmluZ01hcC5lbXB0eVxuICBpblxuICBsZXQgYWRkICh4LHkpIGRhdGEgbWFwID1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZFxuICAgICAgICB4XG4gICAgICAgIChNb2RzLlN0cmluZ01hcC5hZGQgeSBkYXRhXG4gICAgICAgICAgICAgIChNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgTW9kcy5TdHJpbmdNYXAuZW1wdHkgeCBtYXApKVxuICAgICAgICBtYXBcbiAgaW5cbiAgKCogQ3JlYXRlIG9wcG9zaXRlIGNvdW50ZXJzIHRoYXQgaGF2ZSB0aGUgc2FtZSB0ZXN0cyAqKVxuICBsZXQgKHNpZ25hdHVyZXMgOiBBc3QuYWdlbnRfc2lnIGxpc3QpLFxuICAgICAgKGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcCA6IEFzdC5jb252ZXJzaW9uX2luZm8gTW9kcy5TdHJpbmdNYXAudCBNb2RzLlN0cmluZ01hcC50KT1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoYWNjLG1hcCkgYWdlbnQgLT5cbiAgICAgICAgbWF0Y2ggYWdlbnQgd2l0aFxuICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudDo6YWNjLCBtYXBcbiAgICAgICAgfCBQcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0LCBhZ2VudF9tb2QpIC0+XG4gICAgICAgICAgbGV0IGFnZW50X25hbWUgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgIE1vZHMuU3RyaW5nU2V0LnQgID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICBNb2RzLlN0cmluZ1NldC5lbXB0eSAgYWdlbnRfbmFtZSBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAobmV3X2NvdW50ZXJfc2l0ZXMgOiBBc3QuY291bnRlcl9zaWcgQXN0LnNpdGUgbGlzdCksXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgICAgPVxuICAgICAgICAgICAgTW9kcy5TdHJpbmdTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGNvdW50ZXJfbmFtZSAoYWNjLG1hcCkgLT5cbiAgICAgICAgICAgICAgICAoKiBGaW5kIGNvdW50ZXIgdG8gaW52ZXJ0ICopXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfb3JpZyA6IEFzdC5jb3VudGVyX3NpZyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LmZpbmRfbWFwXG4gICAgICAgICAgICAgICAgICAgIChmdW4gc2l0ZSAtPlxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuQXN0LmNvdW50ZXJfc2lnX25hbWUgPSBjb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgU29tZSBjb3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUpXG4gICAgICAgICAgICAgICAgICAgIHNpdGVfbGlzdFxuICAgICAgICAgICAgICAgICAgfD4gT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgICAgICAgICAgaW5cblxuICAgICAgICAgICAgICAgICgqIE1ha2UgaW52ZXJ0ZWQgY291bnRlciBkZWNsYXJhdGlvbiAqKVxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyX3NpZ19uYW1lIDogc3RyaW5nIExvYy5hbm5vdGVkID1cbiAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3RcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBuYW1lIC0+IGludmVydGVkX2NvdW50ZXJfbmFtZSBuYW1lKVxuICAgICAgICAgICAgICAgICAgICBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF9jb3VudGVyX3NpZ19kZWZhdWx0LCBpbmZfYm91bmQsIHN1cF9ib3VuZCA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbWluLCBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbWF4XG4gICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgbWluLCBfKSwgU29tZSAoU29tZSBtYXgsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgIG1heCArIG1pbiAtIGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19kZWZhdWx0LCBtaW4sIG1heFxuICAgICAgICAgICAgICAgICAgfCAoTm9uZSB8IFNvbWUgKE5vbmUsIF8pKSwgXyB8IF8sIChOb25lIHwgU29tZSAoTm9uZSwgXykpIC0+XG4gICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ2Fubm90IHRha2UgdGhlIG9wcG9zaXRlIG9mIGFuIHVuYm91bmRlZCBjb3VudGVycyAgXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19uYW1lICkpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF92YWx1ZSA9IEFzdC5CQVNJU19NSU5VU19JTlBVVCAoaW5mX2JvdW5kICsgc3VwX2JvdW5kKSBpblxuICAgICAgICAgICAgICAgIGxldCBjb252ZXJ0X2RlbHRhID0gQXN0LkJBU0lTX01JTlVTX0lOUFVUIDAgaW5cbiAgICAgICAgICAgICAgICBsZXQgdXBkYXRlIHggPVxuICAgICAgICAgICAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSAoTm9uZSxsb2MpIC0+IFNvbWUgKE5vbmUsbG9jKVxuICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSxsb2MpIC0+IFNvbWUgKFNvbWUgKEFzdC5hcHBseV9pbnQgY29udmVydF92YWx1ZSBpKSwgbG9jKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHJlZl9taW4scmVmX21heCA9XG4gICAgICAgICAgICAgICAgICAgIEFzdC5yZW9yZGVyX2JvdW5kcyBjb252ZXJ0X3ZhbHVlIChjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbWluLGNvdW50ZXJfb3JpZy5jb3VudGVyX3NpZ19tYXgpIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX21pbiA9IHVwZGF0ZSByZWZfbWluIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX21heCA9IHVwZGF0ZSByZWZfbWF4IGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX2RlZmF1bHQgPVxuICAgICAgICAgICAgICAgICAgICBBc3QuYXBwbHlfaW50IGNvbnZlcnRfdmFsdWUgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX2RlZmF1bHQgaW5cbiAgICAgICAgICAgICAgICBsZXQgY29udmVydF9pbmZvID1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmZyb21fc2lnX25hbWUgPSBjb3VudGVyX29yaWcuY291bnRlcl9zaWdfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgY29udmVydF92YWx1ZSA7XG4gICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfZGVsdGEgO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGNvdW50ZXJfc2lnX3Zpc2libGUgPVxuICAgICAgICAgICAgICAgICAgICAgIEFzdC5Gcm9tX2NsdGVfZWxpbWluYXRpb24gY29udmVydF9pbmZvXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAoKiBXcml0ZSBpbiBzdW1fYm91bmRzX3JlZiB0aGUgc3VtIG9mIHRoZSBjb3VudGVyIGJvdW5kcyBhYm92ZSAqKVxuICAgICAgICAgICAgICAgIGxldCBjb3VudGVyID1cbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX25hbWU7XG4gICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW47XG4gICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19tYXg7XG4gICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0O1xuICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIChBc3QuQ291bnRlciBjb3VudGVyKTo6YWNjLFxuICAgICAgICAgICAgICAgIGFkZFxuICAgICAgICAgICAgICAgICAgKGFnZW50X25hbWUsTG9jLnYgY291bnRlcl9vcmlnLmNvdW50ZXJfc2lnX25hbWUpXG4gICAgICAgICAgICAgICAgICBjb252ZXJ0X2luZm8gbWFwKVxuICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudFxuICAgICAgICAgICAgICAoW10sbWFwKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKEFzdC5QcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0IEAgbmV3X2NvdW50ZXJfc2l0ZXMsIGFnZW50X21vZCkpOjphY2MsXG4gICAgICAgICAgIG1hcClcbiAgICAgIChbXSwgTW9kcy5TdHJpbmdNYXAuZW1wdHkpIChMaXN0LnJldiBhc3RfY29tcGlsLnNpZ25hdHVyZXMpXG4gIGluXG5cbiAgKCogSW4gcnVsZXMsIHdlIG5lZWQgdG8gcmVwbGFjZSB0aGUgY291bnRlciB0ZXN0cyBhbmQgdGhlIGNvdW50ZXIgbW9kaWZpY2F0aW9ucyAqKVxuXG4gIGxldCByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IChtaXggOiBBc3QubWl4dHVyZSkgOiBBc3QubWl4dHVyZSA9XG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gYWdlbnRfbGlzdCAtPlxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gYWdlbnQgLT5cbiAgICAgICAgICAgIG1hdGNoIGFnZW50IHdpdGhcbiAgICAgICAgICAgIHwgQXN0LkFic2VudCBfIC0+IGFnZW50XG4gICAgICAgICAgICB8IFByZXNlbnQgKGFnZW50X25hbWVfLCBzaXRlX2xpc3QsIGFnZW50X21vZCkgLT5cbiAgICAgICAgICAgICAgbGV0IGFnZW50X25hbWUgOiBzdHJpbmcgPSBMb2MudiBhZ2VudF9uYW1lXyBpblxuICAgICAgICAgICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOlxuICAgICAgICAgICAgICAgIEFzdC5jb252ZXJzaW9uX2luZm8gTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBhZ2VudF9uYW1lIGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiBBZGQgZGVsdGEgdG8gY291bnRlciBhcyBvcHBvc2l0ZSBkZWx0YXMgdG8gY291bnRlcl9kZWx0YSAqKVxuICAgICAgICAgICAgICBsZXQgKGFkZGVkX3NpdGVzLCBzaXRlX2xpc3Rfd2l0aF9vcHBvc2l0ZV9kZWx0YXMpIDpcbiAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgKiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdF9tYXBcbiAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHNpdGUgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggc2l0ZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgQXN0LlBvcnQgXyAtPiBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgfCBDb3VudGVyIGNvdW50ZXIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9jLnYgY291bnRlci5Bc3QuY291bnRlcl9uYW1lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudFxuICAgICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGFjYywgc2l0ZVxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSBjb252ZXJ0X2luZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEFzIHdlIGtub3cgdGhhdCB0aGlzIGNvdW50ZXIgdXNlcyBhIENMVEUgdGVzdCwgV2UgaW50cm9kdWNlIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAoKiBbY2x0ZV92YWx1ZV9vcl9ub25lXSBkaXNjcmltaW5hdGVzIHRoZSBjYXNlIHdoZXJlIHRoaXMgc2l0ZSBpbiB0aGlzIGV4cHJlc3Npb24gaGFzIGEgQ0xURSB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2x0ZV92YWx1ZV9vcl9ub25lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBMb2MudiB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DRVEgXyB8IENHVEUgXyB8IENWQVIgXyAtPiBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBc3QuQ0xURSB2YWx1ZSAtPiBTb21lIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaCBjbHRlX3ZhbHVlX29yX25vbmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZXJlIGlzIGEgdGVzdCwgaXQgZG9lc24ndCBuZWVkIGludmVyc2lvbjogd2UgYWRkIGludmVydGVkIGNvdW50ZXIgd2l0aG91dCB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA9PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCogSWYgdGhlIGNvdW50ZXIgdmFsdWUgaXMgY2hhbmdpbmcsIHdlIG5lZWQgdG8gYWRkIGl0IHRvIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGludmVydGVkX2NvdW50ZXJfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVydGVkX2NvdW50ZXJfbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBc3QuYXBwbHlfaW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X2luZm8uQXN0LmNvbnZlcnRfZGVsdGEpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfZGVsdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmVydGVkX2NvdW50ZXJfc2l0ZSA6OiBhY2MsIHNpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRoZSB0ZXN0IGlzIENMVEUsIHdlIGludmVydCBpdCAqKVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgqIFNpdGUgd2l0aCBpbnZlcnRlZCBjb3VudGVyIHdpdGggQ0dURSB0ZXN0IGluc3RlYWQgb2YgQ0xURSB0ZXN0ICopXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdfc2l0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LkNvdW50ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXN0LmNvdW50ZXJfbmFtZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9jLm1hcF9hbm5vdCBpbnZlcnRlZF9jb3VudGVyX25hbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl9uYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkNHVEUgKEFzdC5hcHBseV9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0X2luZm8uQXN0LmNvbnZlcnRfdmFsdWUgdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8PiBMb2MuY29weV9hbm5vdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoT3B0aW9uX3V0aWwudW5zb21lX29yX3JhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuY291bnRlcl90ZXN0KSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5jb3VudGVyX2RlbHRhID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MubWFwX2Fubm90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LmFwcGx5X2ludFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRfaW5mby5Bc3QuY29udmVydF9kZWx0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLmNvdW50ZXJfZGVsdGE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIExvYy52IGNvdW50ZXIuY291bnRlcl9kZWx0YSA9PSAwIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MsIG5ld19zaXRlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIElmIHRoZSBjb3VudGVyIHZhbHVlIGlzIGNoYW5naW5nLCB3ZSBuZWVkIHRvIGFkZCBpdCB0byB0aGUgb3JpZ2luYWwgY291bnRlciB0b28gKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luYWxfY291bnRlcl9zaXRlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyIHsgY291bnRlciB3aXRoIGNvdW50ZXJfdGVzdCA9IE5vbmUgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfY291bnRlcl9zaXRlIDo6IGFjYywgbmV3X3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSkpKVxuICAgICAgICAgICAgICAgICAgW10gc2l0ZV9saXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBuZXdfc2l0ZV9saXN0IDogQXN0LmNvdW50ZXIgQXN0LnNpdGUgbGlzdCA9XG4gICAgICAgICAgICAgICAgc2l0ZV9saXN0X3dpdGhfb3Bwb3NpdGVfZGVsdGFzIEAgYWRkZWRfc2l0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgQXN0LlByZXNlbnQgKGFnZW50X25hbWVfLCBuZXdfc2l0ZV9saXN0LCBhZ2VudF9tb2QpKVxuICAgICAgICAgIGFnZW50X2xpc3QpXG4gICAgICBtaXhcbiAgaW5cbiAgbGV0IGFkZF9pbnZlcnRlZF9jb3VudGVyX3RvX2luaXRfbWl4dHVyZSAobWl4IDogQXN0Lm1peHR1cmUpIDogQXN0Lm1peHR1cmUgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGFnZW50X2xpc3QgLT5cbiAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAoZnVuIGFnZW50IC0+XG4gICAgICAgICAgICBtYXRjaCBhZ2VudCB3aXRoXG4gICAgICAgICAgICB8IEFzdC5BYnNlbnQgXyAtPiBhZ2VudFxuICAgICAgICAgICAgfCBQcmVzZW50IChhZ2VudF9uYW1lXywgc2l0ZV9saXN0LCBhZ2VudF9tb2QpIC0+XG4gICAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lIDogc3RyaW5nID0gTG9jLnYgYWdlbnRfbmFtZV8gaW5cbiAgICAgICAgICAgICAgICBsZXQgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzX2Zyb21fYWdlbnQgOlxuICAgICAgICAgICAgICAgIEFzdC5jb252ZXJzaW9uX2luZm8gTW9kcy5TdHJpbmdNYXAudCA9XG4gICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0XG4gICAgICAgICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5lbXB0eSBhZ2VudF9uYW1lIGNvdW50ZXJfY29udmVyc2lvbl9pbmZvX21hcFxuICAgICAgICAgICAgICBpblxuKCpcbiAgICAgIGxldCBjb3VudGVyc193aXRoX2NsdGVfdGVzdHNfZnJvbV9hZ2VudCA6XG4gICAgICAgICAgICAgICAgICAoc3RyaW5nICogc3RyaW5nICogaW50IHJlZikgbGlzdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgICAgICAgICAgIChmdW4gKGFnZW50X25hbWVfY291bnRlciwgXywgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgYWdlbnRfbmFtZSA9IGFnZW50X25hbWVfY291bnRlcilcbiAgICAgICAgICAgICAgICAgIChmc3QgY291bnRlcnNfd2l0aF9jbHRlX3Rlc3RzKVxuICAgICAgICAgICAgICBpbiopXG4gICAgICAgICAgICAgICgqIEFkZCBkZWx0YSB0byBjb3VudGVyIGFzIG9wcG9zaXRlIGRlbHRhcyB0byBjb3VudGVyX2RlbHRhICopXG4gICAgICAgICAgICAgIGxldCBhZGRlZF9zaXRlcyA6IEFzdC5jb3VudGVyIEFzdC5zaXRlIGxpc3QgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIGFjYyBzaXRlIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIHNpdGUgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IEFzdC5Qb3J0IF8gLT4gYWNjXG4gICAgICAgICAgICAgICAgICAgIHwgQ291bnRlciBjb3VudGVyIC0+XG4gICAgICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChMb2MudiBjb3VudGVyLkFzdC5jb3VudGVyX25hbWUpIGNvdW50ZXJzX3dpdGhfY2x0ZV90ZXN0c19mcm9tX2FnZW50XG4gICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgaW5mbyAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICgqIEFzIHdlIGtub3cgdGhhdCB0aGlzIGNvdW50ZXIgdXNlcyBhIENMVEUgdGVzdCwgV2UgaW50cm9kdWNlIHRoZSBpbnZlcnRlZCBjb3VudGVyICopXG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggY291bnRlci5jb3VudGVyX3Rlc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBzaG91bGQgaGF2ZSBDRVEgdGVzdCB2YWx1ZSBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2MuZ2V0X2Fubm90IGNvdW50ZXIuY291bnRlcl9uYW1lICkpXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgdGVzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggTG9jLnYgdGVzdCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXN0LkNHVEUgXyB8IENMVEUgXyB8IENWQVIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBcIkNvdW50ZXIgc2hvdWxkIGhhdmUgQ0VRIHRlc3QgdmFsdWUgaW4gaW5pdCBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgdGVzdCApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFzdC5DRVEgdmFsdWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBMb2MudiBjb3VudGVyLmNvdW50ZXJfZGVsdGEgPD4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFwiQ291bnRlciBkZWx0YSBzaG91bGQgYmUgMCBpbiBpbml0IFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlbWVudFwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5nZXRfYW5ub3QgdGVzdCApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9uYW1lID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYy5tYXBfYW5ub3QgaW52ZXJ0ZWRfY291bnRlcl9uYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIuQXN0LmNvdW50ZXJfbmFtZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl90ZXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKExvYy5jb3B5X2Fubm90IHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5DRVEgKEFzdC5hcHBseV9pbnQgaW5mby5Bc3QuY29udmVydF92YWx1ZSB2YWx1ZSkpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc3QuY291bnRlcl9kZWx0YSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudGVyLkFzdC5jb3VudGVyX2RlbHRhXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiAwIHdpdGggYW5ub3QgYXMgdGVzdGVkIGFib3ZlICopO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6OiBhY2MpKSkpXG4gICAgICAgICAgICAgICAgICBbXSBzaXRlX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG5ld19zaXRlX2xpc3QgOiBBc3QuY291bnRlciBBc3Quc2l0ZSBsaXN0ID1cbiAgICAgICAgICAgICAgICBzaXRlX2xpc3QgQCBhZGRlZF9zaXRlc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBBc3QuUHJlc2VudCAoYWdlbnRfbmFtZV8sIG5ld19zaXRlX2xpc3QsIGFnZW50X21vZCkpXG4gICAgICAgICAgYWdlbnRfbGlzdClcbiAgICAgIG1peFxuICBpblxuXG4gIGxldCBtYXBfZXhwciBleHByID1cbiAgICAgIEFsZ19leHByLm1hcF9vbl9taXh0dXJlXG4gICAgICAgIChmdW4geCAtPiBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSAocmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCB4KSlcbiAgICAgICAgZXhwclxuICBpblxuICBsZXQgbWFwX2JleHByIGV4cHIgPVxuICAgICAgQWxnX2V4cHIubWFwX2Jvb2xfb25fbWl4dHVyZVxuICAgICAgICAoZnVuIHggLT4gQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgKHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgeCkpXG4gICAgICAgIGV4cHJcbiAgaW5cbiAgbGV0IG1hcF9ydWxlIHJ1bGUgPVxuICAgIGxldCByZXdyaXRlID1cbiAgICAgIG1hdGNoIHJ1bGUuQXN0LnJld3JpdGUgd2l0aFxuICAgICAgfCBFZGl0IGNvbnRlbnQgLT5cbiAgICAgICAgQXN0LkVkaXRcbiAgICAgICAgICB7IGNvbnRlbnQgd2l0aCBtaXggPSByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IGNvbnRlbnQubWl4IH1cbiAgICAgIHwgQXJyb3cgY29udGVudCAtPlxuICAgICAgICBBcnJvd1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvbnRlbnQgd2l0aFxuICAgICAgICAgICAgbGhzID0gcmVwbGFjZV9jb3VudGVyX2J5X2ludmVydCBjb250ZW50LmxocztcbiAgICAgICAgICAgIHJocyA9IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgY29udGVudC5yaHM7XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IGtfZGVmID0gbWFwX2V4cHIgcnVsZS5rX2RlZiBpblxuICAgIGxldCBrX29wID0gbWFwX29wdCBtYXBfZXhwciBydWxlLmtfb3AgaW5cbiAgICBsZXQga191biA9IG1hcF9vcHQgKGZ1biAoYSxiKSAtPiBtYXBfZXhwciBhLCBtYXBfb3B0IG1hcF9leHByIGIpIHJ1bGUua191biBpblxuICAgIGxldCBrX29wX3VuID0gbWFwX29wdCAoZnVuIChhLGIpIC0+IG1hcF9leHByIGEsIG1hcF9vcHQgbWFwX2V4cHIgYikgcnVsZS5rX29wX3VuIGluXG4gICAgeyBydWxlIHdpdGggcmV3cml0ZSA7IGtfZGVmIDsga19vcCA7IGtfdW4gOyBrX29wX3VufVxuICBpblxuICBsZXQgcnVsZXMgOiAoc3RyaW5nIExvYy5hbm5vdGVkIG9wdGlvbiAqIEFzdC5ydWxlIExvYy5hbm5vdGVkKSBsaXN0ID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gcnVsZV9kZWYgLT5cbiAgICAgICAgIGZzdCBydWxlX2RlZixcbiAgICAgICAgICBMb2MubWFwX2Fubm90IG1hcF9ydWxlIChzbmQgcnVsZV9kZWYpKVxuICAgICAgKExpc3QucmV2IGFzdF9jb21waWwucnVsZXMpXG4gIGluXG5cbiAgbGV0IGluaXQgOiAoQXN0Lm1peHR1cmUsIEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC5pbml0X3N0YXRlbWVudCBsaXN0ID1cbiAgICBMaXN0Lm1hcFxuICAgICAgKGZ1biAocXVhbnRpdHlfYWxnX2V4cHIsIGluaXRfa2luZCkgLT5cbiAgICAgICAgKCBxdWFudGl0eV9hbGdfZXhwcixcbiAgICAgICAgICBtYXRjaCBpbml0X2tpbmQgd2l0aFxuICAgICAgICAgIHwgQXN0LklOSVRfVE9LIF8gLT4gaW5pdF9raW5kXG4gICAgICAgICAgfCBJTklUX01JWCBtaXhfIC0+XG4gICAgICAgICAgICBJTklUX01JWCAoTG9jLm1hcF9hbm5vdCBhZGRfaW52ZXJ0ZWRfY291bnRlcl90b19pbml0X21peHR1cmUgbWl4XykgKSlcbiAgICAgIGFzdF9jb21waWwuaW5pdFxuICBpblxuICBsZXQgdmFyaWFibGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biAoYSwgYikgLT4gKGEsIG1hcF9leHByIGIpKVxuICAgICAgICAoTGlzdC5yZXYgYXN0X2NvbXBpbC52YXJpYWJsZXMpXG4gIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9IExpc3QucmV2X21hcCBtYXBfZXhwciAoTGlzdC5yZXYgYXN0X2NvbXBpbC5vYnNlcnZhYmxlcykgaW5cbiAgbGV0IG1hcF9wcmludCBhID1cbiAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgfCBQcmltaXRpdmVzLlN0cl9wZXhwciBfIC0+IGFcbiAgICAgIHwgQWxnX3BleHByIGUgLT4gQWxnX3BleHByIChtYXBfZXhwciBlKVxuICBpblxuICBsZXQgbWFwX21vZGlmIG1vZGlmID1cbiAgICAgIG1hdGNoIG1vZGlmIHdpdGhcbiAgICAgIHwgQXN0LkFQUExZIChhLHIpIC0+IEFzdC5BUFBMWSAobWFwX2V4cHIgYSxMb2MubWFwX2Fubm90IG1hcF9ydWxlIHIgKVxuICAgICAgfCBVUERBVEUgKGEsZSkgLT4gVVBEQVRFIChhLG1hcF9leHByIGUpXG4gICAgICB8IFNUT1AgbCAtPiBTVE9QIChMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICAgIHwgU05BUFNIT1QgKGIsbCkgLT4gU05BUFNIT1QgKGIsTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCkpXG4gICAgICB8IFBSSU5UIChsLGwnKSAtPlxuICAgICAgICAgIFBSSU5UKExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwpLExpc3QucmV2X21hcCBtYXBfcHJpbnQgKExpc3QucmV2IGwnKSlcbiAgICAgIHwgUExPVEVOVFJZXG4gICAgICB8IENGTE9XTEFCRUwgXyAtPiBtb2RpZlxuICAgICAgfCBDRkxPV01JWCAoYixtaXh0dXJlKSAtPiBDRkxPV01JWChiLFxuICAgICAgICBMb2MubWFwX2Fubm90IHJlcGxhY2VfY291bnRlcl9ieV9pbnZlcnQgbWl4dHVyZSlcbiAgICAgIHwgRElOIChhLCBsKSAtPiBESU4oYSwgTGlzdC5yZXZfbWFwIG1hcF9wcmludCAoTGlzdC5yZXYgbCkpXG4gICAgICB8IERJTk9GRiBsIC0+IERJTk9GRihMaXN0LnJldl9tYXAgbWFwX3ByaW50IChMaXN0LnJldiBsKSlcbiAgICAgIHwgU1BFQ0lFU19PRiAoYixsLG0pIC0+XG4gICAgICAgIFNQRUNJRVNfT0YoYixMaXN0LnJldl9tYXAgbWFwX3ByaW50IGwsTG9jLm1hcF9hbm5vdCByZXBsYWNlX2NvdW50ZXJfYnlfaW52ZXJ0IG0pXG4gIGluXG4gIGxldCBwZXJ0dXJiYXRpb25zID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gKChhLGIsYyxkKSwgZXh0KS0+IChhLG1hcF9vcHQgbWFwX2JleHByIGIsTGlzdC5yZXZfbWFwIG1hcF9tb2RpZiAoTGlzdC5yZXYgYyksbWFwX29wdCBtYXBfYmV4cHIgZCApLGV4dClcbiAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLnBlcnR1cmJhdGlvbnMpXG4gIGluXG4gIHthc3RfY29tcGlsIHdpdGggc2lnbmF0dXJlczsgcnVsZXM7IGluaXQ7IHZhcmlhYmxlczsgb2JzZXJ2YWJsZXM7IHBlcnR1cmJhdGlvbnN9XG5cbmxldCBjb21waWxfb2ZfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIH5zeW50YXhfdmVyc2lvbiB+dmFyX292ZXJ3cml0ZSBhc3RfY29tcGlsXG4gICAgPVxuICAoKiBUT0RPIHRlc3QgdGhpcyAqKVxuICAoKiBUcmFuc2xhdGUgQ0xURSB0ZXN0cyBpbiBhc3RfY29tcGlsIGludG8gQ0dURSB0ZXN0cyAqKVxuICBsZXQgYXN0X2NvbXBpbCA9IHRyYW5zbGF0ZV9jbHRlX2ludG9fY2d0ZSBhc3RfY29tcGlsIGluXG5cbiAgbGV0IGhhc19jb3VudGVycyA9IENvdW50ZXJzX2NvbXBpbGVyLmhhc19jb3VudGVycyBhc3RfY29tcGlsIGluXG4gIGxldCBhZ2VudF9zaWdfaXNfaW1wbGljaXQgPVxuICAgIGFzdF9jb21waWwuQXN0LnNpZ25hdHVyZXMgPSBbXSAmJiBhc3RfY29tcGlsLkFzdC50b2tlbnMgPSBbXVxuICBpblxuICAoKiBJbmZlciBhZ2VudCBzaWduYXR1cmVzIGlmIHRoZSBzaWduYXR1cmUgaXMgaW1wbGljaXQgKilcbiAgbGV0IGFzdF9jb21waWwgPVxuICAgIGlmIGFnZW50X3NpZ19pc19pbXBsaWNpdCAmJiBoYXNfY291bnRlcnMgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKFwiaW1wbGljaXQgc2lnbmF0dXJlIGlzIGluY29tcGF0aWJsZSB3aXRoIGNvdW50ZXJzXCIsIExvYy5kdW1teSkpXG4gICAgZWxzZSBpZiBhZ2VudF9zaWdfaXNfaW1wbGljaXQgdGhlblxuICAgICAgQXN0LmluZmVyX2FnZW50X3NpZ25hdHVyZXMgYXN0X2NvbXBpbFxuICAgIGVsc2VcbiAgICAgIGFzdF9jb21waWxcbiAgaW5cbiAgKCogUmVtb3ZlIGNvdW50ZXIgZXF1YWxpdHkgdGVzdCB3aXRoIGEgdmFyaWFibGUgYnkgc3BsaXR0aW5nIGluIG9uZSBydWxlIHBlciB2YXJpYWJsZSB2YWx1ZSAqKVxuICBsZXQgYXN0X2NvbXBpbCA9XG4gICAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICAgIENvdW50ZXJzX2NvbXBpbGVyLnNwbGl0X2NvdW50ZXJfdmFyaWFibGVzX2ludG9fc2VwYXJhdGVfcnVsZXMgfndhcm5pbmdcbiAgICAgICAgfmRlYnVnX21vZGUgYXN0X2NvbXBpbFxuICAgIGVsc2VcbiAgICAgIGFzdF9jb21waWxcbiAgaW5cblxuICBsZXQgYWdlbnRzX3NpZyA6IFNpZ25hdHVyZS5zID0gY3JlYXRlX3NpZ3MgYXN0X2NvbXBpbC5Bc3Quc2lnbmF0dXJlcyBpblxuICAoKiBTZXQgYW4gZW1wdHkgY29udGFjdCBtYXAgKilcbiAgbGV0IGNvbnRhY3RfbWFwIDogKE1vZHMuSW50U2V0LnQgKiBNb2RzLkludDJTZXQudCkgYXJyYXkgYXJyYXkgPVxuICAgIEFycmF5LmluaXQgKFNpZ25hdHVyZS5zaXplIGFnZW50c19zaWcpIChmdW4gaSAtPlxuICAgICAgICBBcnJheS5pbml0IChTaWduYXR1cmUuYXJpdHkgYWdlbnRzX3NpZyBpKSAoZnVuIHMgLT5cbiAgICAgICAgICAgICggVG9vbHMucmVjdGlcbiAgICAgICAgICAgICAgICAoZnVuIGEgayAtPiBNb2RzLkludFNldC5hZGQgayBhKVxuICAgICAgICAgICAgICAgIE1vZHMuSW50U2V0LmVtcHR5XG4gICAgICAgICAgICAgICAgKFNpZ25hdHVyZS5pbnRlcm5hbF9zdGF0ZXNfbnVtYmVyIGkgcyBhZ2VudHNfc2lnKSxcbiAgICAgICAgICAgICAgTW9kcy5JbnQyU2V0LmVtcHR5ICkpKVxuICBpblxuICBsZXQgcnVsZV9uYW1lcywgZXh0cmFfdmFycywgY2xlYW5lZF9ydWxlcyA9XG4gICAgbGV0IGFjYyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAobmFtZV9hbmRfcHVyaWZ5X3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgfmNvbnRhY3RfbWFwKVxuICAgICAgICB7XG4gICAgICAgICAgcnVsZV9uYW1lcyA9IDAsIE1vZHMuU3RyaW5nU2V0LmVtcHR5O1xuICAgICAgICAgIGV4dHJhX3ZhcnMgPSBbXTtcbiAgICAgICAgICBjbGVhbmVkX3J1bGVzID0gW107XG4gICAgICAgIH1cbiAgICAgICAgYXN0X2NvbXBpbC5Bc3QucnVsZXNcbiAgICBpblxuICAgIHNuZCBhY2MucnVsZV9uYW1lcywgYWNjLmV4dHJhX3ZhcnMsIGFjYy5jbGVhbmVkX3J1bGVzXG4gIGluXG4gIGxldCBvdmVyd3JpdGVfdmFycyAodmFyX292ZXJ3cml0ZSA6IChzdHJpbmcgKiBOYnIudCkgbGlzdClcbiAgICAgICh2YXJzIDogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC52YXJpYWJsZV9kZWYgbGlzdCkgOlxuICAgICAgKHN0cmluZyAqIE5ici50KSBsaXN0ICogKEFzdC5taXh0dXJlLCBzdHJpbmcpIEFzdC52YXJpYWJsZV9kZWYgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKG92ZXJ3cml0ZV92YXJzX3JlbWFpbmluZywgYWNjX3ZhcnMpICgoKHgsIF8pLCBfKSBhcyB2YXIpIC0+XG4gICAgICAgIGxldCBtYXRjaHMsIG90aGVyX292ZXJ3cml0ZV92YXJzID1cbiAgICAgICAgICBMaXN0LnBhcnRpdGlvbiAoZnVuICh4JywgXykgLT4geCA9IHgnKSBvdmVyd3JpdGVfdmFyc19yZW1haW5pbmdcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcHJlc2VudCA9XG4gICAgICAgICAgbWF0Y2ggbWF0Y2hzIHdpdGhcbiAgICAgICAgICB8IFtdIC0+IHZhciA6OiBhY2NfdmFyc1xuICAgICAgICAgIHwgWyAoeCwgdikgXSAtPiAoTG9jLmFubm90X3dpdGhfZHVtbXkgeCwgQWxnX2V4cHIuY29uc3QgdikgOjogYWNjX3ZhcnNcbiAgICAgICAgICB8ICh4LCBfKSA6OiBfIDo6IF8gLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICAgICggXCJ2YXJpYWJsZSAnXCIgXiB4IF4gXCInIGlzIG92ZXJ3cml0dGVuIG1vcmUgdGhhbiBvbmNlXCIsXG4gICAgICAgICAgICAgICAgICAgTG9jLmR1bW15ICkpXG4gICAgICAgIGluXG5cbiAgICAgICAgb3RoZXJfb3ZlcndyaXRlX3ZhcnMsIGFjY192YXJzX3dpdGhfeF9yZXdyaXR0ZW5faWZfcHJlc2VudClcbiAgICAgICh2YXJfb3ZlcndyaXRlLCBbXSkgdmFyc1xuICAgIHw+IGZ1biAodmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgcmV2X2FsZ192YXJzKSAtPlxuICAgIHZhcl9vdmVyd3JpdGVfbm90X2FwcGxpZWQsIExpc3QucmV2IHJldl9hbGdfdmFyc1xuICBpblxuICBsZXQgdmFyX292ZXJ3cml0ZV9ub3RfYXBwbGllZCwgYWxnX3ZhcnNfd2l0aF9yZXdyaXR0ZW5fdmFycyA9XG4gICAgb3ZlcndyaXRlX3ZhcnMgdmFyX292ZXJ3cml0ZSAoYXN0X2NvbXBpbC5Bc3QudmFyaWFibGVzIEAgZXh0cmFfdmFycylcbiAgaW5cbiAgbGV0IGFsZ192YXJzX2FycmF5ID1cbiAgICBMaXN0X3V0aWwucmV2X21hcF9hcHBlbmRcbiAgICAgIChmdW4gKHgsIHYpIC0+IExvYy5hbm5vdF93aXRoX2R1bW15IHgsIEFsZ19leHByLmNvbnN0IHYpXG4gICAgICB2YXJfb3ZlcndyaXRlX25vdF9hcHBsaWVkIGFsZ192YXJzX3dpdGhfcmV3cml0dGVuX3ZhcnNcbiAgICB8PiBBcnJheS5vZl9saXN0XG4gIGluXG4gIGxldCBhbGdfdmFyc19maW5kZXIgPVxuICAgIGFsZ192YXJzX2FycmF5IHw+IE5hbWVkRGVjbHMuY3JlYXRlIH5mb3JiaWRkZW46cnVsZV9uYW1lcyB8PiBmdW4gbmQgLT5cbiAgICBuZC5OYW1lZERlY2xzLmZpbmRlclxuICBpblxuICBsZXQgdG9rZW5fbmFtZXMgPVxuICAgIGFzdF9jb21waWwuQXN0LnRva2Vuc1xuICAgIHw+IFRvb2xzLmFycmF5X21hcF9vZl9saXN0IChmdW4geCAtPiB4LCAoKSlcbiAgICB8PiBOYW1lZERlY2xzLmNyZWF0ZVxuICBpblxuICBsZXQgdG9rZW5zX2ZpbmRlciA9IHRva2VuX25hbWVzLk5hbWVkRGVjbHMuZmluZGVyIGluXG5cbiAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICBDb3VudGVyc19jb21waWxlci5hZGRfY291bnRlcl90b19jb250YWN0X21hcCBhZ2VudHNfc2lnXG4gICAgICAoYWRkX2xpbmtfY29udGFjdF9tYXAgfmNvbnRhY3RfbWFwKTtcblxuICBsZXQgcGVydHViYXRpb25zX3dpdGhvdXRfY291bnRlcnMsIHVwZGF0ZWRfYWxnX3ZhcnMgPVxuICAgIExpc3RfdXRpbC5mb2xkX3JpZ2h0X21hcFxuICAgICAgKHBlcnR1cmJhdGlvbl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlclxuICAgICAgICAgYWxnX3ZhcnNfZmluZGVyIGNvbnRhY3RfbWFwKVxuICAgICAgYXN0X2NvbXBpbC5Bc3QucGVydHVyYmF0aW9ucyBbXVxuICBpblxuICBsZXQgcGVydHVyYmF0aW9ucyA9XG4gICAgaWYgaGFzX2NvdW50ZXJzIHRoZW5cbiAgICAgIENvdW50ZXJzX2NvbXBpbGVyLmNvdW50ZXJzX3BlcnR1cmJhdGlvbnMgYWdlbnRzX3NpZ1xuICAgICAgICBbIGFzdF9jb21waWwuQXN0LnNpZ25hdHVyZXMgXVxuICAgICAgQCBwZXJ0dWJhdGlvbnNfd2l0aG91dF9jb3VudGVyc1xuICAgIGVsc2VcbiAgICAgIHBlcnR1YmF0aW9uc193aXRob3V0X2NvdW50ZXJzXG4gIGluXG5cbiAgbGV0IHJ1bGVzID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChmdW4gKHJ1bGUgOiBydWxlX2ludGVyX3JlcCkgLT5cbiAgICAgICAgKCBydWxlLmxhYmVsX29wdCxcbiAgICAgICAgICAoIGFzc2VtYmxlX3J1bGUgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIHJ1bGUgYWdlbnRzX3NpZyB0b2tlbnNfZmluZGVyXG4gICAgICAgICAgICAgIGFsZ192YXJzX2ZpbmRlcixcbiAgICAgICAgICAgIHJ1bGUucG9zICkgKSlcbiAgICAgIGNsZWFuZWRfcnVsZXNcbiAgaW5cblxuICBsZXQgdmFyaWFibGVzID1cbiAgICBUb29scy5hcnJheV9mb2xkX3JpZ2h0aVxuICAgICAgKGZ1biBpIChsYWIsIGV4cHIpIGFjYyAtPlxuICAgICAgICAoIGxhYixcbiAgICAgICAgICBhbGdfZXhwcl9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIH5tYXhfYWxsb3dlZF92YXI6KHByZWQgaSlcbiAgICAgICAgICAgIGFnZW50c19zaWcgdG9rZW5zX2ZpbmRlciBhbGdfdmFyc19maW5kZXIgZXhwciApXG4gICAgICAgIDo6IGFjYylcbiAgICAgIGFsZ192YXJzX2FycmF5IFtdXG4gIGluXG4gIGxldCBvYnNlcnZhYmxlcyA9XG4gICAgTGlzdC5yZXZfbWFwXG4gICAgICAoZnVuIGV4cHIgLT5cbiAgICAgICAgYWxnX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvbiBhZ2VudHNfc2lnIHRva2Vuc19maW5kZXJcbiAgICAgICAgICBhbGdfdmFyc19maW5kZXIgZXhwcilcbiAgICAgIChMaXN0LnJldiBhc3RfY29tcGlsLm9ic2VydmFibGVzKVxuICBpblxuICBsZXQgaW5pdCA9XG4gICAgaW5pdF9vZl9hc3Qgfndhcm5pbmcgfnN5bnRheF92ZXJzaW9uIGFnZW50c19zaWcgY29udGFjdF9tYXAgdG9rZW5zX2ZpbmRlclxuICAgICAgYWxnX3ZhcnNfZmluZGVyIGFzdF9jb21waWwuaW5pdFxuICBpblxuXG4gIHtcbiAgICBhZ2VudHNfc2lnO1xuICAgIGNvbnRhY3RfbWFwO1xuICAgIHRva2VuX25hbWVzO1xuICAgIGFsZ192YXJzX2ZpbmRlcjtcbiAgICB1cGRhdGVkX2FsZ192YXJzO1xuICAgIHJlc3VsdCA9XG4gICAgICB7XG4gICAgICAgIGZpbGVuYW1lcyA9IGFzdF9jb21waWwuZmlsZW5hbWVzO1xuICAgICAgICB2YXJpYWJsZXM7XG4gICAgICAgIHJ1bGVzO1xuICAgICAgICBvYnNlcnZhYmxlcztcbiAgICAgICAgaW5pdDtcbiAgICAgICAgcGVydHVyYmF0aW9ucztcbiAgICAgICAgdm9sdW1lcyA9IGFzdF9jb21waWwudm9sdW1lcztcbiAgICAgICAgdG9rZW5zID0gYXN0X2NvbXBpbC50b2tlbnM7XG4gICAgICAgIHNpZ25hdHVyZXMgPSBhc3RfY29tcGlsLnNpZ25hdHVyZXM7XG4gICAgICAgIGNvbmZpZ3VyYXRpb25zID0gYXN0X2NvbXBpbC5jb25maWd1cmF0aW9ucztcbiAgICAgIH07XG4gIH1cbiIsInR5cGUgdG9rZW4gPVxuICB8IEVPRlxuICB8IENPTU1BXG4gIHwgRE9UXG4gIHwgT1BfUEFSXG4gIHwgQ0xfUEFSXG4gIHwgT1BfQ1VSXG4gIHwgQ0xfQ1VSXG4gIHwgT1BfQlJBXG4gIHwgQ0xfQlJBXG4gIHwgQVRcbiAgfCBTRU1JQ09MT05cbiAgfCBQTFVTXG4gIHwgTUlOVVNcbiAgfCBNVUxUXG4gIHwgRElWXG4gIHwgTU9EXG4gIHwgTUFYXG4gIHwgTUlOXG4gIHwgU0lOVVNcbiAgfCBDT1NJTlVTXG4gIHwgVEFOXG4gIHwgUE9XXG4gIHwgQUJTXG4gIHwgU1FSVFxuICB8IEVYUE9ORU5UXG4gIHwgTE9HXG4gIHwgT1JcbiAgfCBBTkRcbiAgfCBOT1RcbiAgfCBUSEVOXG4gIHwgRUxTRVxuICB8IERJRkZcbiAgfCBFUVVBTFxuICB8IFNNQUxMRVJcbiAgfCBHUkVBVEVSXG4gIHwgVFJVRVxuICB8IEZBTFNFXG4gIHwgSU5GSU5JVFlcbiAgfCBTSEFSUFxuICB8IFVOREVSU0NPUkVcbiAgfCBQSVBFXG4gIHwgUkFSXG4gIHwgTFJBUlxuICB8IExBUlxuICB8IEVNQVhcbiAgfCBUTUFYXG4gIHwgQ1BVVElNRVxuICB8IFRJTUVcbiAgfCBFVkVOVFxuICB8IE5VTExfRVZFTlRcbiAgfCBDT0xPTlxuICB8IE5FV0xJTkVcbiAgfCBCQUNLU0xBU0hcbiAgfCBTSUdOQVRVUkVcbiAgfCBUT0tFTlxuICB8IElOSVRcbiAgfCBPQlNcbiAgfCBQTE9UXG4gIHwgUEVSVFxuICB8IENPTkZJR1xuICB8IEFQUExZXG4gIHwgREVMRVRFXG4gIHwgSU5UUk9cbiAgfCBTTkFQU0hPVFxuICB8IFNUT1BcbiAgfCBGTFVYXG4gIHwgVFJBQ0tcbiAgfCBBU1NJR05cbiAgfCBQUklOVEZcbiAgfCBQTE9URU5UUllcbiAgfCBTUEVDSUVTX09GXG4gIHwgRE9cbiAgfCBSRVBFQVRcbiAgfCBBTEFSTVxuICB8IFJVTlxuICB8IExFVFxuICB8IElOVCBvZiAoaW50KVxuICB8IEZMT0FUIG9mIChmbG9hdClcbiAgfCBJRCBvZiAoc3RyaW5nKVxuICB8IExBQkVMIG9mIChzdHJpbmcpXG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG4gIHwgU1BBQ0Ugb2YgKHN0cmluZylcbiAgfCBDT01NRU5UIG9mIChzdHJpbmcpXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgbGV0IGFkZF9wb3MgZSB4ID1cbiAgICAoeCxcbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGUpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiAgbGV0IGVuZF9wb3MgPSBQYXJzaW5nLnJoc19lbmRfcG9zXG4gIGxldCBzdGFydF9wb3MgPSBQYXJzaW5nLnJoc19zdGFydF9wb3NcblxuICBsZXQgaW50ZXJuYWxfbWVtb3J5ID0gcmVmIFtdXG4gIGxldCBhZGQgeCA9IGludGVybmFsX21lbW9yeSA6PSB4IDo6ICFpbnRlcm5hbF9tZW1vcnlcbiAgbGV0IG91dHB1dCAoKSA9XG4gICAgbGV0IG8gPSBMaXN0LnJldiAhaW50ZXJuYWxfbWVtb3J5IGluIGxldCAoKSA9IGludGVybmFsX21lbW9yeSA6PSBbXSBpbiBvXG4jIDEwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG5sZXQgeXl0cmFuc2xfY29uc3QgPSBbfFxuICAgIDAgKCogRU9GICopO1xuICAyNTcgKCogQ09NTUEgKik7XG4gIDI1OCAoKiBET1QgKik7XG4gIDI1OSAoKiBPUF9QQVIgKik7XG4gIDI2MCAoKiBDTF9QQVIgKik7XG4gIDI2MSAoKiBPUF9DVVIgKik7XG4gIDI2MiAoKiBDTF9DVVIgKik7XG4gIDI2MyAoKiBPUF9CUkEgKik7XG4gIDI2NCAoKiBDTF9CUkEgKik7XG4gIDI2NSAoKiBBVCAqKTtcbiAgMjY2ICgqIFNFTUlDT0xPTiAqKTtcbiAgMjY3ICgqIFBMVVMgKik7XG4gIDI2OCAoKiBNSU5VUyAqKTtcbiAgMjY5ICgqIE1VTFQgKik7XG4gIDI3MCAoKiBESVYgKik7XG4gIDI3MSAoKiBNT0QgKik7XG4gIDI3MiAoKiBNQVggKik7XG4gIDI3MyAoKiBNSU4gKik7XG4gIDI3NCAoKiBTSU5VUyAqKTtcbiAgMjc1ICgqIENPU0lOVVMgKik7XG4gIDI3NiAoKiBUQU4gKik7XG4gIDI3NyAoKiBQT1cgKik7XG4gIDI3OCAoKiBBQlMgKik7XG4gIDI3OSAoKiBTUVJUICopO1xuICAyODAgKCogRVhQT05FTlQgKik7XG4gIDI4MSAoKiBMT0cgKik7XG4gIDI4MiAoKiBPUiAqKTtcbiAgMjgzICgqIEFORCAqKTtcbiAgMjg0ICgqIE5PVCAqKTtcbiAgMjg1ICgqIFRIRU4gKik7XG4gIDI4NiAoKiBFTFNFICopO1xuICAyODcgKCogRElGRiAqKTtcbiAgMjg4ICgqIEVRVUFMICopO1xuICAyODkgKCogU01BTExFUiAqKTtcbiAgMjkwICgqIEdSRUFURVIgKik7XG4gIDI5MSAoKiBUUlVFICopO1xuICAyOTIgKCogRkFMU0UgKik7XG4gIDI5MyAoKiBJTkZJTklUWSAqKTtcbiAgMjk0ICgqIFNIQVJQICopO1xuICAyOTUgKCogVU5ERVJTQ09SRSAqKTtcbiAgMjk2ICgqIFBJUEUgKik7XG4gIDI5NyAoKiBSQVIgKik7XG4gIDI5OCAoKiBMUkFSICopO1xuICAyOTkgKCogTEFSICopO1xuICAzMDAgKCogRU1BWCAqKTtcbiAgMzAxICgqIFRNQVggKik7XG4gIDMwMiAoKiBDUFVUSU1FICopO1xuICAzMDMgKCogVElNRSAqKTtcbiAgMzA0ICgqIEVWRU5UICopO1xuICAzMDUgKCogTlVMTF9FVkVOVCAqKTtcbiAgMzA2ICgqIENPTE9OICopO1xuICAzMDcgKCogTkVXTElORSAqKTtcbiAgMzA4ICgqIEJBQ0tTTEFTSCAqKTtcbiAgMzA5ICgqIFNJR05BVFVSRSAqKTtcbiAgMzEwICgqIFRPS0VOICopO1xuICAzMTEgKCogSU5JVCAqKTtcbiAgMzEyICgqIE9CUyAqKTtcbiAgMzEzICgqIFBMT1QgKik7XG4gIDMxNCAoKiBQRVJUICopO1xuICAzMTUgKCogQ09ORklHICopO1xuICAzMTYgKCogQVBQTFkgKik7XG4gIDMxNyAoKiBERUxFVEUgKik7XG4gIDMxOCAoKiBJTlRSTyAqKTtcbiAgMzE5ICgqIFNOQVBTSE9UICopO1xuICAzMjAgKCogU1RPUCAqKTtcbiAgMzIxICgqIEZMVVggKik7XG4gIDMyMiAoKiBUUkFDSyAqKTtcbiAgMzIzICgqIEFTU0lHTiAqKTtcbiAgMzI0ICgqIFBSSU5URiAqKTtcbiAgMzI1ICgqIFBMT1RFTlRSWSAqKTtcbiAgMzI2ICgqIFNQRUNJRVNfT0YgKik7XG4gIDMyNyAoKiBETyAqKTtcbiAgMzI4ICgqIFJFUEVBVCAqKTtcbiAgMzI5ICgqIEFMQVJNICopO1xuICAzMzAgKCogUlVOICopO1xuICAzMzEgKCogTEVUICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAzMzIgKCogSU5UICopO1xuICAzMzMgKCogRkxPQVQgKik7XG4gIDMzNCAoKiBJRCAqKTtcbiAgMzM1ICgqIExBQkVMICopO1xuICAzMzYgKCogU1RSSU5HICopO1xuICAzMzcgKCogU1BBQ0UgKik7XG4gIDMzOCAoKiBDT01NRU5UICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA3XFwwMDBcXFxuXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDEyXFwwMDBcXDAxMlxcMDAwXFwwMTJcXDAwMFxcMDEzXFwwMDBcXDAxM1xcMDAwXFwwMTRcXDAwMFxcMDE0XFwwMDBcXFxuXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE3XFwwMDBcXFxuXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjFcXDAwMFxcMDIxXFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXFxuXFwwMjhcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAyOVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXFxuXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzNlxcMDAwXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXFxuXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzVcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXFxuXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0NlxcMDAwXFwwNDZcXDAwMFxcMDQ3XFwwMDBcXFxuXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXFxuXFwwNTJcXDAwMFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDYzXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDhcXDAwMFxcMDEwXFwwMDBcXDAwNlxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDdcXDAwMFxcMDExXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMTFcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwN1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwNlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDdcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwNFxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwN1xcMDAwXFwwMDVcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwN1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDZcXDAwMFxcMDA1XFwwMDBcXDAwNlxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDI0NFxcMDAwXFwwMDBcXDAwMFxcMjQzXFwwMDBcXDI0NVxcMDAwXFwwMDBcXDAwMFxcMjExXFwwMDBcXDI0NlxcMDAwXFxcblxcMDAwXFwwMDBcXDI0N1xcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMjM2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMlxcMDAwXFwxMzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjRcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMDAwXFwyNDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTdcXDAwMFxcMTk4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE4XFwwMDBcXDExOVxcMDAwXFxcblxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDA4MlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDA4OVxcMDAwXFxcblxcMDA3XFwwMDBcXDAwNlxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA3OVxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFxcblxcMTA1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTUzXFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMjM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI0MVxcMDAwXFwwMDBcXDAwMFxcMTk2XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEzMFxcMDAwXFwxMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTM4XFwwMDBcXDIyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyNVxcMDAwXFwwMDBcXDAwMFxcMTY1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMyXFwwMDBcXDE1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzMVxcMDAwXFxcblxcMjI5XFwwMDBcXDIyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMwXFwwMDBcXDA3MVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTg2XFwwMDBcXDAwMFxcMDAwXFwxODRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDAwMFxcMTcwXFwwMDBcXDExNVxcMDAwXFwxMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDk2XFwwMDBcXDA5N1xcMDAwXFwwOThcXDAwMFxcMDk5XFwwMDBcXDEwMFxcMDAwXFwwOTVcXDAwMFxcMTAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMTIwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMjI3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2MVxcMDAwXFxcblxcMTYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMTM5XFwwMDBcXDEzN1xcMDAwXFxcblxcMTQxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MlxcMDAwXFwxODVcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MFxcMDAwXFwwMDBcXDAwMFxcMjQwXFwwMDBcXDAwMFxcMDAwXFwxOTVcXDAwMFxcMDAwXFwwMDBcXDIwMlxcMDAwXFxcblxcMDkwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFxcblxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjVcXDAwMFxcMTI0XFwwMDBcXDEyM1xcMDAwXFxcblxcMTIyXFwwMDBcXDEyN1xcMDAwXFwxMjlcXDAwMFxcMDAwXFwwMDBcXDA3NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU3XFwwMDBcXDE1NVxcMDAwXFwxNTZcXDAwMFxcMTU0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNFxcMDAwXFxcblxcMDU4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4MFxcMDAwXFxcblxcMDAwXFwwMDBcXDE3OVxcMDAwXFwxNzZcXDAwMFxcMTc3XFwwMDBcXDAwMFxcMDAwXFwxOTlcXDAwMFxcMTk0XFwwMDBcXDA5M1xcMDAwXFxcblxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMTA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE2NFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMjIxXFwwMDBcXDIxN1xcMDAwXFwyMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzNcXDAwMFxcMDAwXFwwMDBcXDE3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjIwXFwwMDBcXDIxOFxcMDAwXFwxNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFxcblxcMTcxXFwwMDBcXDE3MlxcMDAwXFwxODFcXDAwMFxcMTkzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMFxcMDAwXFwwMDBcXDE2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFxcblxcMjA1XFwwMDBcXDIxNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDMwXFwwMDBcXDAwOFxcMDAwXFwwMTJcXDAwMFxcMDEwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAwXFxcblxcMTQ3XFwwMDBcXDE0OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMTE0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDE1XFwwMDBcXDAwMFxcMDAwXFwwMjlcXDAwMFxcMDAwXFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAzM1xcMDAwXFxcblxcMDM1XFwwMDBcXDAzOFxcMDAwXFwwMzdcXDAwMFxcMDI1XFwwMDBcXDAyN1xcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAwXFxcblxcMDE2XFwwMDBcXDAxOFxcMDAwXFwwMTlcXDAwMFxcMDUxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDA0NVxcMDAwXFwwMzRcXDAwMFxcMDAwXFwwMDBcXDA0NFxcMDAwXFxcblxcMDAwXFwwMDBcXDA0MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDNcXDAwMFwiXG5cbmxldCB5eWRnb3RvID0gXCJcXDAwNVxcMDAwXFxcblxcMDEwXFwwMDBcXDAxM1xcMDAwXFwwMTZcXDAwMFxcMDE4XFwwMDBcXDEzMVxcMDAwXFwwOTNcXDAwMFxcMjQyXFwwMDFcXDI0M1xcMDAxXFxcblxcMDE1XFwwMDJcXDIzMFxcMDAxXFwyMzFcXDAwMVxcMDA4XFwwMDJcXDIwNVxcMDAxXFwyMzJcXDAwMVxcMjMzXFwwMDFcXDIzNFxcMDAxXFxcblxcMjM1XFwwMDFcXDAyMFxcMDAyXFwxNjJcXDAwMVxcMDk5XFwwMDFcXDEwMFxcMDAxXFwxNjNcXDAwMVxcMTc5XFwwMDFcXDAzOFxcMDAwXFxcblxcMTgxXFwwMDBcXDAzOVxcMDAwXFwwOTRcXDAwMFxcMDk1XFwwMDBcXDA5NlxcMDAwXFwyMzZcXDAwMFxcMDk3XFwwMDBcXDA5OFxcMDAwXFxcblxcMDk5XFwwMDBcXDE4NlxcMDAwXFwxODdcXDAwMFxcMjIzXFwwMDBcXDEwMlxcMDAwXFwxMDNcXDAwMFxcMTA0XFwwMDBcXDA0MFxcMDAwXFxcblxcMTc3XFwwMDBcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMTQ5XFwwMDFcXDAzNlxcMDAxXFwxMjZcXDAwMFxcMDQzXFwwMDBcXDE5MlxcMDAwXFxcblxcMDE3XFwwMDFcXDE4OFxcMDAwXFwwOTZcXDAwMVxcMjE5XFwwMDBcXDIyMFxcMDAwXFwxMzJcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFxcblxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwOTJcXDAwMVxcMDkzXFwwMDFcXDExM1xcMDAwXFwxMzhcXDAwMVxcMTM5XFwwMDFcXDExNFxcMDAwXFxcblxcMDQ0XFwwMDBcXDA0NVxcMDAwXCJcblxubGV0IHl5c2luZGV4ID0gXCJcXDExNFxcMDAyXFxcblxcMDY1XFwyNTVcXDEyOVxcMjU1XFwxMzJcXDI1NVxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMThcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTExXFwwMDdcXDAwMFxcMDAwXFwwNDdcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMzZcXDI1NVxcMDE0XFwyNTVcXDE4M1xcMDAwXFxcblxcMDM5XFwwMDBcXDE5NlxcMjU1XFwwMDBcXDAwMFxcMDE4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwNzJcXDI1NVxcMTgzXFwwMDBcXDE0OFxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MFxcMjU1XFxcblxcMTQ5XFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE3OFxcMjU1XFwwMzlcXDAwMVxcMTYwXFwwMDJcXDIwNFxcMDAwXFwxODNcXDAwMFxcMjIzXFwyNTVcXDIzOFxcMjU1XFxcblxcMDAwXFwwMDBcXDA2MVxcMDExXFwyNDFcXDI1NVxcMTk5XFwyNTVcXDExNVxcMDA5XFwwNjNcXDI1NVxcMTgzXFwwMDlcXDA1NVxcMDAwXFxcblxcMjA5XFwwMTJcXDAwMFxcMDAwXFwwMzFcXDAwMFxcMDYzXFwyNTVcXDIxN1xcMjU1XFwyMTFcXDAwMlxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDIxNlxcMjU1XFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDE0XFxcblxcMjUxXFwwMDlcXDA2M1xcMDEwXFwwNDZcXDAxMlxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwNDZcXDAxMlxcMTc0XFwyNTVcXDEzNVxcMDAxXFxcblxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDI1NVxcMDIzXFwwMTNcXDAwMFxcMDAwXFwxMTFcXDAwN1xcMDAwXFwwMDBcXDA5NVxcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFxcblxcMTg3XFwwMTRcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFwyNDlcXDAwMVxcMTA0XFwyNTVcXDE0NlxcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDEzM1xcMDAwXFxcblxcMDA0XFwwMDBcXDE2MFxcMDAyXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODRcXDI1NVxcMTgzXFwwMDBcXDEyNlxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMjU1XFwwNDdcXDI1NVxcMTExXFwwMTFcXDAwMFxcMDAwXFxcblxcMjE2XFwyNTVcXDA3MFxcMDEzXFwyMDNcXDAwMVxcMDAwXFwwMDBcXDA0N1xcMjU1XFwwMDBcXDAwMFxcMDQ3XFwyNTVcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDEwMlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDA0M1xcMjU1XFxcblxcMTgzXFwwMDBcXDA3MFxcMDAxXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwNzBcXDAwMVxcMDAwXFwwMDBcXDIxN1xcMDAwXFxcblxcMjE2XFwwMDBcXDIwM1xcMjU1XFwxMTFcXDAwN1xcMjM1XFwwMDBcXDA3NlxcMjU1XFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwyMDVcXDAwMFxcMTgzXFwwMDBcXDE4N1xcMDE0XFwxODdcXDAxNFxcMTg3XFwwMTRcXDE4N1xcMDE0XFxcblxcMTg3XFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMDkzXFwwMTRcXDA5M1xcMDE0XFxcblxcMTcyXFwwMDBcXDAwMFxcMDAwXFwyMjhcXDI1NVxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxMzFcXDAxMFxcMTk5XFwwMTBcXDAwMFxcMDAwXFwyMTBcXDAwMFxcMTA2XFwwMDlcXDE4M1xcMDAwXFxcblxcMTc0XFwwMDBcXDIxMlxcMjU1XFwxNzlcXDAwMFxcMDkzXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMTdcXDAwMVxcMDI1XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOFxcMDExXFxcblxcMDM1XFwwMDFcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwNzBcXDAwMVxcMTgzXFwwMDBcXDA5M1xcMDE0XFxcblxcMDkzXFwwMTRcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMTRcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODdcXDAxNFxcMTg3XFwwMTRcXDA5M1xcMDE0XFwwOTZcXDAwM1xcMDAwXFwwMDBcXDE4N1xcMDE0XFxcblxcMDAwXFwwMDBcXDE3OFxcMjU1XFwxNzhcXDI1NVxcMDM5XFwwMDFcXDAzOVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDA5M1xcMDE0XFxcblxcMDQ3XFwyNTVcXDE2NFxcMDAyXFwwOTNcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDA0N1xcMDAxXFwwNzRcXDAwMVxcMDA3XFwwMDFcXDAwN1xcMDAxXFwxMDZcXDAwOVxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwNjFcXDI1NVxcMTA0XFwwMDFcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDkzXFwwMTRcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMzdcXDAwM1xcMTE3XFwwMDFcXDE4M1xcMDAwXFwwNDZcXDAxMlxcMDcwXFwwMDFcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzM1xcMDAxXFwwMDFcXDAwMFxcMDczXFwwMDFcXDAwMFxcMDAwXFxcblxcMTU1XFwwMDFcXDE4M1xcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDExMVxcMDA3XFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDFcXDAwN1xcMDAxXFwxNzRcXDAwMFxcMjE4XFwyNTVcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODFcXDAwMVxcMTM2XFwwMDFcXDIwNVxcMDAxXFwwOTNcXDAxNFxcMDcwXFwwMTNcXDAzNVxcMDAxXFxcblxcMTgzXFwwMDBcXDA0NlxcMDEyXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDA3MFxcMDAwXFwyMjhcXDAwMVxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxNzBcXDAwMVxcMTgzXFwwMDBcXDI0N1xcMDAxXFxcblxcMDEzXFwwMDRcXDExMVxcMDA3XFwwOTNcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMjEyXFwyNTVcXDE2OVxcMDAxXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMjQ4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4N1xcMDE0XFwxMTlcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDAwNVxcMDAyXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODdcXDAxNFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMVxcMDQ0XFwwMDFcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMjEyXFwyNTVcXDA5M1xcMDE0XFwwOTNcXDAxNFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDAwMVxcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwwMTJcXDAwMlxcMTgzXFwwMDBcXDAwN1xcMDAyXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODNcXDAwMFxcMDE2XFwwMDJcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMzRcXDAwMlxcMDE0XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMDE3XFwwMDJcXDAyM1xcMDAyXFwxNDNcXDI1NVxcMDI0XFwwMDJcXDAyNlxcMDAyXFwwNjhcXDAwMFxcMTgzXFwwMDBcXDE1MFxcMDAyXFxcblxcMTU5XFwwMDJcXDE1MVxcMDAyXFwyMzJcXDAwMFxcMTM5XFwwMDBcXDE5OFxcMDAyXFwxODNcXDAwMFxcMTYxXFwwMDJcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDAyXFwxNjZcXDAwMlxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDE4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDE1NFxcMDAwXFwwMDBcXDAwMFxcMTcwXFwyNTVcXDAwMFxcMDAwXFwwOTdcXDAwMlxcMTY5XFwwMDJcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE2MVxcMjU1XFwxMDlcXDAwMlxcMTEwXFwwMDJcXDExMVxcMDAyXFwxNjhcXDI1NVxcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEzXFwwMDFcXDExN1xcMDAyXFwxMTZcXDAwM1xcMDAwXFwwMDBcXDE4M1xcMDAwXFxcblxcMTgzXFwwMDBcXDE4M1xcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDE3MFxcMjU1XFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NFxcMDAwXFwxODNcXDAwMFxcMTgzXFwwMDBcXDEyMFxcMDAyXFxcblxcMTkxXFwwMDJcXDE4M1xcMDAwXFwxODNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFxcblxcMjEzXFwwMDFcXDAwMFxcMDAwXFwxODNcXDAwMFxcMjAzXFwwMDJcXDE4M1xcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDEyMlxcMDA4XFwwMThcXDAwNlxcMTc0XFwwMDlcXDAxMVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAyXFwwNjhcXDAwMlxcXG5cXDA2OFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwNlxcXG5cXDE2MVxcMDExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyM1xcMDAwXFwxMzJcXDAwMlxcMDExXFwwMTFcXDEwN1xcMjU1XFwwMTFcXDAxMVxcXG5cXDE0MFxcMDEyXFwxNDFcXDAwMlxcMTA3XFwyNTVcXDE0OVxcMDAxXFwwNzJcXDAwM1xcMTg4XFwwMDZcXDIwOFxcMDAyXFwwNTJcXDAwMVxcXG5cXDEyN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFwwMTFcXDAxMVxcXG5cXDAxMVxcMDExXFwyNDNcXDAwMVxcMDM5XFwwMDVcXDA5M1xcMDEyXFwyNDNcXDI1NVxcMTUxXFwwMDFcXDIxN1xcMDA0XFwwNDFcXDAwMFxcXG5cXDExMFxcMjU1XFwxMTdcXDAxM1xcMDAwXFwwMDBcXDE3NFxcMDA5XFwxNzlcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQwXFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcXG5cXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMDE1XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTBcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMVxcXG5cXDAwMFxcMDAwXFwyMjhcXDAwMlxcMjM1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjQ2XFwwMDZcXDI1NVxcMDA2XFwwNjJcXDAwN1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjRcXDAxM1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExMFxcMjU1XFwxMTBcXDI1NVxcXG5cXDE2MVxcMDExXFwwMDBcXDAwMFxcMjAzXFwwMDRcXDAwMFxcMDAwXFwyMzNcXDAxM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDBcXDA0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAyMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDhcXDAwMlxcXG5cXDIzNFxcMDE0XFwyMzRcXDAxNFxcMjM0XFwwMTRcXDIzNFxcMDE0XFwyMzRcXDAxNFxcMTQwXFwwMTRcXDE0MFxcMDE0XFwxNDBcXDAxNFxcXG5cXDE0MFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDE0XFwxNDBcXDAxNFxcMDAwXFwwMDBcXDE0MFxcMDE0XFwxMzJcXDAwMlxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTIyXFwwMDhcXDE0OVxcMDAxXFwwMDBcXDAwMFxcMTIyXFwwMDhcXDAwMFxcMDAwXFwwMjNcXDAwOVxcXG5cXDAwMFxcMDAwXFwwOTZcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMTFcXDAxMVxcMDExXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI0XFwwMDFcXDE3NFxcMDA5XFwwMDBcXDAwMFxcMTQxXFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5OVxcMjU1XFwxMzJcXDAwMlxcMTQwXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDAxMVxcXG5cXDAzOFxcMDAwXFwwMjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAyXFwwMDBcXDAwMFxcMTQwXFwwMTRcXDE0MFxcMDE0XFwwMzlcXDAwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDBcXDAxNFxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNFxcMDE0XFwyMzRcXDAxNFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAxNFxcXG5cXDAwMFxcMDAwXFwyMDRcXDAwM1xcMDAwXFwwMDBcXDIzNFxcMDE0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAxNFxcMTEwXFwyNTVcXDEwOFxcMDA3XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDBcXDAxNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzRcXDAwOVxcXG5cXDAwMFxcMDAwXFwyMjFcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDBcXDAxNFxcMjM2XFwwMDdcXDEyOVxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1MFxcMDAwXFwwOTNcXDAxMlxcMDAwXFwwMDBcXDAwMlxcMDAyXFwwNDFcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDJcXDAwMFxcMDAwXFwwODdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNTJcXDAwM1xcMTU1XFwwMDNcXDA1OVxcMDA0XFwxMzlcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDk5XFwyNTVcXDEzMlxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNzBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAxNFxcXG5cXDE3NFxcMDA5XFwwMDBcXDAwMFxcMTcyXFwwMDJcXDAwMFxcMDAwXFwyMDBcXDAwOFxcMDAwXFwwMDBcXDEzMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNTNcXDAwMVxcMjIxXFwwMDJcXDAwMFxcMDAwXFwyNDJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDBcXDAxNFxcXG5cXDIzM1xcMDEzXFwyNDVcXDAwMlxcMjUyXFwwMDJcXDAwMFxcMDAwXFwwOTNcXDAxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTVcXDAwM1xcMDA1XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzJcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU0XFwwMDVcXDExM1xcMDA2XFwxNDBcXDAxNFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwOFxcMjMwXFwwMDhcXDAxOFxcMjU1XFwwOTlcXDI1NVxcXG5cXDAwMFxcMDAwXFwwNjVcXDAwNlxcMDAwXFwwMDBcXDAwNFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAxNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDVcXDIzNFxcMDE0XFwwMDBcXDAwMFxcXG5cXDE1M1xcMDAxXFwwMDVcXDAwM1xcMDAwXFwwMDBcXDI0MlxcMDAyXFwxMjJcXDAwOFxcMDAwXFwwMDBcXDIzNFxcMDE0XFwwMDBcXDAwMFxcXG5cXDIyN1xcMDA3XFwxOTVcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzOFxcMDAxXFwxMzFcXDAwMVxcXG5cXDIyMVxcMDAyXFwxNjBcXDAwNlxcMDAwXFwwMDBcXDA5OVxcMjU1XFwxNDBcXDAxNFxcMTQwXFwwMTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwyNTVcXDA5OVxcMjU1XFwwMDBcXDAwMFxcXG5cXDE1N1xcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NlxcMDA3XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMjJcXDAwMVxcMDAwXFwwMDBcXDA5M1xcMDA2XFwwOTNcXDAwNlxcXG5cXDIyMVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDA4XFwwMDBcXDAwMFxcMjIxXFwwMDBcXDEzMVxcMDAxXFwwMDVcXDAwM1xcXG5cXDAwMFxcMDAwXFwwOTlcXDI1NVxcMTcwXFwwMDhcXDIzOFxcMDA1XFwwMjFcXDAwOFxcMDAwXFwwMDBcXDIzOVxcMDAyXFwyMzlcXDAwMlxcXG5cXDExOFxcMDAwXFwyMzlcXDAwMlxcMjM5XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEwXFwwMDJcXDAxMFxcMDAzXFwxNzhcXDAwMVxcXG5cXDAxMVxcMDAzXFwwMjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwNVxcMDAxXFwwNTlcXDAwM1xcMDEzXFwwMDNcXDAxMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyMlxcMDAxXFwwMDBcXDAwMFxcMDA1XFwwMDNcXDAwMFxcMDAwXFwwNzlcXDAwOFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg1XFwwMDFcXDA5OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0MVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDI1NVxcMjQyXFwwMDBcXDAwMFxcMDAwXFwxOThcXDI1NVxcXG5cXDA2NVxcMDA2XFwxOTlcXDAwMlxcMTc4XFwwMDFcXDAwMFxcMDAwXFwxMjhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcXG5cXDE5OVxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5OVxcMDAyXFwxOTlcXDAwMlxcMTk0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMzFcXDAwMVxcMjM1XFwwMDFcXDIzNVxcMDAxXFwwMjhcXDAwMlxcMDAwXFwwMDBcXDEzMlxcMDAyXFwxMjRcXDAwM1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0MVxcMDAyXFwxOThcXDI1NVxcXG5cXDE1N1xcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwM1xcXG5cXDIzNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwM1xcXG5cXDAxNVxcMDAzXFwyMzVcXDAwMVxcMDI2XFwwMDFcXDEzMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5OVxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMVxcMDAzXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM1XFwwMDFcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzVcXDAwMVxcMDI4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzNVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDNcXDAwMFxcMDAwXFwyMzVcXDAwMVxcMDAwXFwwMDBcIlxuXG5sZXQgeXlnaW5kZXggPSBcIlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAxMlxcMDAzXFwwMDBcXDAwMFxcMDI3XFwyNTRcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE4NlxcMjU0XFwwMDBcXDAwMFxcMDY2XFwyNTRcXDIwOFxcMjU1XFwwMjRcXDI1NFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYyXFwyNTRcXDEzOFxcMjU0XFwwNzdcXDI1NFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDQzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDEwN1xcMDAxXFwwNDVcXDI1NVxcMDQ4XFwwMDJcXFxuXFwwNTNcXDAwMlxcMjUzXFwyNTVcXDI1NFxcMjU1XFwxMjNcXDI1NVxcMTMzXFwwMDNcXDAwMFxcMDAwXFwwMzBcXDAwM1xcMjUyXFwwMDNcXFxuXFwwNTNcXDI1NVxcMTQ5XFwyNTVcXDA4M1xcMDAzXFwxNDZcXDAwMlxcMTQ3XFwwMDJcXDAwMFxcMDAwXFwxNzlcXDAwM1xcMTg1XFwwMDNcXFxuXFwxMzZcXDAwMlxcMDAwXFwwMDBcXDE4NlxcMDAyXFwxMzRcXDI1NVxcMDM1XFwwMDNcXDIxNFxcMjU1XFwyNTJcXDI1NVxcMDQxXFwyNTVcXFxuXFwwMDBcXDAwMFxcMTI1XFwyNTVcXDIzOFxcMDAyXFwyMjBcXDI1NFxcMDAwXFwwMDBcXDExNVxcMjU1XFwxOTJcXDAwMlxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM2XFwwMDRcIlxuXG5sZXQgeXl0YWJsZXNpemUgPSA0MTUzXG5sZXQgeXl0YWJsZSA9IFwiXFwwMTFcXDAwMFxcXG5cXDAxNFxcMDAwXFwwMTdcXDAwMFxcMDE5XFwwMDBcXDAzMlxcMDAxXFwxNDVcXDAwMVxcMDIwXFwwMDBcXDAyMVxcMDAwXFwwMjJcXDAwMFxcXG5cXDEzM1xcMDAwXFwwNTlcXDAwMFxcMjMzXFwwMDBcXDIyNFxcMDAwXFwxMzdcXDAwMFxcMjE3XFwwMDFcXDIwOFxcMDAwXFwxMDBcXDAwMFxcXG5cXDEwMVxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDIwMVxcMDAwXFwxNjlcXDAwMFxcMDU2XFwwMDBcXDEwNVxcMDAwXFwxMDZcXDAwMFxcXG5cXDI1MlxcMDAxXFwwMDFcXDAwMFxcMTA3XFwwMDBcXDEwOFxcMDAwXFwxMDlcXDAwMFxcMTEwXFwwMDBcXDExMVxcMDAwXFwxMTJcXDAwMFxcXG5cXDExNVxcMDAwXFwxMTZcXDAwMFxcMTE3XFwwMDBcXDExOFxcMDAwXFwxMTlcXDAwMFxcMDAxXFwwMDBcXDEyMlxcMDAwXFwwNDFcXDAwMlxcXG5cXDAwMVxcMDAwXFwwNjVcXDAwMVxcMTg3XFwwMDBcXDE5MlxcMDAxXFwyMDBcXDAwMFxcMTI4XFwwMDBcXDEyOVxcMDAwXFwxMzBcXDAwMFxcXG5cXDAyNFxcMDAwXFwxNjhcXDAwMFxcMTM0XFwwMDBcXDEzNVxcMDAwXFwxMzZcXDAwMFxcMTIxXFwwMDBcXDEzOFxcMDAwXFwxMzlcXDAwMFxcXG5cXDE0MFxcMDAwXFwxNDFcXDAwMVxcMTQyXFwwMDBcXDE0NFxcMDAwXFwwOTdcXDAwMVxcMTQ0XFwwMDFcXDE4OVxcMDAwXFwwOTFcXDAwMVxcXG5cXDAwNlxcMDAwXFwxNDdcXDAwMFxcMTQ4XFwwMDBcXDE0OVxcMDAwXFwxNTBcXDAwMFxcMTUxXFwwMDBcXDE1MlxcMDAwXFwxNTNcXDAwMFxcXG5cXDE1NFxcMDAwXFwxNTVcXDAwMFxcMTU2XFwwMDBcXDE1N1xcMDAwXFwxNThcXDAwMFxcMjIxXFwwMDBcXDIyMlxcMDAwXFwwNThcXDAwMVxcXG5cXDE1OVxcMDAwXFwxNDFcXDAwMFxcMjA2XFwwMDFcXDA3OVxcMDAyXFwxNzRcXDAwMFxcMDE0XFwwMDBcXDAwMVxcMDAwXFwxMjBcXDAwMFxcXG5cXDA4MVxcMDAyXFwxNDVcXDAwMFxcMDQ1XFwwMDFcXDAxNFxcMDAwXFwwNDdcXDAwMVxcMDQ1XFwwMDJcXDE2MFxcMDAwXFwwNTZcXDAwMFxcXG5cXDA1MVxcMDAxXFwyNTNcXDAwMVxcMDAxXFwwMDBcXDA1N1xcMDAyXFwxNzFcXDAwMFxcMDMzXFwwMDFcXDAwMVxcMDAwXFwwNTZcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMjRcXDAwMFxcMDAxXFwwMDBcXDE3NlxcMDAwXFwxMjRcXDAwMVxcMTAwXFwwMDBcXDE5N1xcMDAwXFwwMDFcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNTBcXDAwMFxcMjQ3XFwwMDFcXDAwN1xcMDAwXFwwNTBcXDAwMFxcMjA1XFwwMDBcXDIwNlxcMDAwXFwyMDdcXDAwMFxcXG5cXDA5OVxcMDAyXFwyMDlcXDAwMFxcMDQ0XFwwMDFcXDIxMFxcMDAwXFwwMzZcXDAwMFxcMDcwXFwwMDJcXDE0NFxcMDAwXFwyMThcXDAwMFxcXG5cXDAxMlxcMDAwXFwwMDFcXDAwMFxcMjE4XFwwMDBcXDAxNVxcMDAwXFwyMDBcXDAwMVxcMDg2XFwwMDJcXDA5MVxcMDAxXFwwMjJcXDAwMlxcXG5cXDEwMFxcMDAwXFwyMzJcXDAwMFxcMDk4XFwwMDFcXDE0MlxcMDAwXFwxOTBcXDAwMFxcMTkxXFwwMDBcXDE5MVxcMDAwXFwyMzVcXDAwMFxcXG5cXDIzN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDE0M1xcMDAwXFwxNDZcXDAwMFxcMjM4XFwwMDBcXDIzOVxcMDAwXFwyNDBcXDAwMFxcXG5cXDI0MVxcMDAwXFwyNDJcXDAwMFxcMjQzXFwwMDBcXDI0NFxcMDAwXFwyNDVcXDAwMFxcMjQ2XFwwMDBcXDI0N1xcMDAwXFwyNTNcXDAwMFxcXG5cXDI1NFxcMDAwXFwyNTVcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcXG5cXDExM1xcMDAxXFwyMjJcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwNzFcXDAwMlxcMDA4XFwwMDFcXDAwOVxcMDAxXFwwMjRcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAwN1xcMDAwXFwwMTJcXDAwMVxcMjUwXFwwMDBcXDAwN1xcMDAwXFwwMjFcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDUwXFwwMDFcXDAwMVxcMDAwXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDA1MFxcMDAwXFwwMzFcXDAwMlxcXG5cXDE2MVxcMDAwXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDEyNFxcMDAwXFwwMjVcXDAwMVxcMDAxXFwwMDBcXDAwN1xcMDAwXFwwMjZcXDAwMVxcXG5cXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDU0XFwwMDFcXDE3MFxcMDAwXFwxMjVcXDAwMFxcMjI4XFwwMDFcXDEzN1xcMDAxXFwyMjhcXDAwMVxcXG5cXDE3NlxcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDA5N1xcMDAxXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDA0MFxcMDAxXFwwNDFcXDAwMVxcXG5cXDIwMFxcMDAwXFwwMjRcXDAwMFxcMDI2XFwwMDJcXDIwMVxcMDAwXFwwMjdcXDAwMlxcMDQzXFwwMDFcXDE3NVxcMDAxXFwwNDZcXDAwMVxcXG5cXDE3NlxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA3N1xcMDAxXFwwMDhcXDAwMFxcMDA5XFwwMDBcXDA3OFxcMDAxXFwwMDFcXDAwMFxcXG5cXDA1NVxcMDAxXFwxNTZcXDAwMVxcMDA3XFwwMDBcXDAwMVxcMDAwXFwwNzJcXDAwMlxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNzZcXDAwMlxcXG5cXDE3OFxcMDAwXFwyMTNcXDAwMVxcMTc5XFwwMDBcXDE1NVxcMDAxXFwwMDFcXDAwMFxcMjI5XFwwMDFcXDA2MVxcMDAxXFwyMjlcXDAwMVxcXG5cXDA2MlxcMDAxXFwxNzJcXDAwMFxcMDY0XFwwMDFcXDAzNlxcMDAwXFwyMjVcXDAwMFxcMDA3XFwwMDBcXDE3MlxcMDAxXFwwMjVcXDAwMFxcXG5cXDE2MFxcMDAxXFwxNjhcXDAwMVxcMTAwXFwwMDBcXDEwMFxcMDAwXFwwNzVcXDAwMVxcMDI0XFwwMDBcXDAxNFxcMDAxXFwxNzNcXDAwMFxcXG5cXDAwOFxcMDAwXFwwMDlcXDAwMFxcMjAyXFwwMDBcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDA4M1xcMDAxXFwwMjNcXDAwMFxcMDkwXFwwMDFcXDAwMVxcMDAwXFwxODJcXDAwMFxcMDc5XFwwMDFcXDA5NFxcMDAxXFwyMDFcXDAwMFxcXG5cXDE2OVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwOFxcMDAwXFwwMDlcXDAwMFxcMDAxXFwwMDBcXDE2OVxcMDAwXFwxODZcXDAwMVxcXG5cXDEwM1xcMDAxXFwwOThcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDdcXDAwMVxcMDM2XFwwMDBcXDIwMVxcMDAxXFwwMDFcXDAwMFxcXG5cXDExMFxcMDAxXFwwMDFcXDAwMFxcMTExXFwwMDFcXDExMlxcMDAxXFwwMDFcXDAwMFxcMTE0XFwwMDFcXDE4N1xcMDAwXFwwMDFcXDAwMFxcXG5cXDIwMFxcMDAwXFwxMTdcXDAwMVxcMDAxXFwwMDBcXDExOFxcMDAxXFwxODdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNjlcXDAwMFxcXG5cXDE2OVxcMDAwXFwxMDBcXDAwMFxcMTIyXFwwMDFcXDE2OFxcMDAwXFwxMjBcXDAwMVxcMTIxXFwwMDFcXDE4MFxcMDAwXFwyMjJcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMzBcXDAwMlxcMTYwXFwwMDFcXDE5MVxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI1XFwwMDFcXDA0NlxcMDAwXFwxMjZcXDAwMVxcMTI3XFwwMDFcXDE2MVxcMDAxXFwwMjZcXDAwMFxcXG5cXDAyN1xcMDAwXFwwMTVcXDAwMVxcMDU1XFwwMDJcXDE2OFxcMDAwXFwxNjhcXDAwMFxcMTY4XFwwMDBcXDEzMlxcMDAxXFwxMzNcXDAwMVxcXG5cXDE3NFxcMDAwXFwwOTBcXDAwMVxcMDAxXFwwMDBcXDIwMVxcMDAwXFwxNjlcXDAwMFxcMTQyXFwwMDFcXDE3NFxcMDAwXFwwMThcXDAwMlxcXG5cXDE0M1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE0N1xcMDAxXFwxNjlcXDAwMFxcMjI4XFwwMDFcXDE1MFxcMDAxXFwxNTFcXDAwMVxcXG5cXDE1MlxcMDAxXFwyMjhcXDAwMVxcMjE4XFwwMDBcXDE1NFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE5OFxcMDAwXFwxNTdcXDAwMVxcXG5cXDAwMVxcMDAwXFwyMjlcXDAwMFxcMTg3XFwwMDBcXDE4OFxcMDAxXFwyMDBcXDAwMFxcMDAxXFwwMDBcXDE3NFxcMDAwXFwxNzRcXDAwMFxcXG5cXDE3NFxcMDAwXFwxNjhcXDAwMFxcMDAxXFwwMDBcXDIxNFxcMDAxXFwwMDFcXDAwMFxcMjE1XFwwMDFcXDE0NFxcMDAwXFwxOTVcXDAwMFxcXG5cXDE2NlxcMDAxXFwxNjhcXDAwMFxcMTQ0XFwwMDBcXDAwMVxcMDAwXFwxNjlcXDAwMVxcMTcwXFwwMDFcXDE3MVxcMDAxXFwxNDRcXDAwMFxcXG5cXDE0NFxcMDAwXFwyMzRcXDAwMFxcMDM4XFwwMDJcXDE0MlxcMDAwXFwwMzlcXDAwMlxcMjI5XFwwMDFcXDE3N1xcMDAxXFwxNDJcXDAwMFxcXG5cXDE3OFxcMDAxXFwyMjlcXDAwMVxcMTkxXFwwMDBcXDE2MVxcMDAxXFwxNDJcXDAwMFxcMTQyXFwwMDBcXDIxOFxcMDAwXFwxODVcXDAwMVxcXG5cXDE5MVxcMDAwXFwwNjNcXDAwMlxcMTg3XFwwMDFcXDA2NFxcMDAyXFwxNzRcXDAwMFxcMTg5XFwwMDFcXDAwMVxcMDAwXFwxOTBcXDAwMVxcXG5cXDA1NlxcMDAyXFwwMDFcXDAwMFxcMTk0XFwwMDFcXDE5NVxcMDAxXFwwOTBcXDAwMVxcMTk4XFwwMDFcXDI1MlxcMDAwXFwxMDBcXDAwMFxcXG5cXDIwMlxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjAzXFwwMDFcXDIwNFxcMDAxXFwwMTNcXDAwMVxcXG5cXDAwMVxcMDAwXFwyMjZcXDAwMFxcMjA5XFwwMDFcXDIxMFxcMDAxXFwyMTFcXDAwMVxcMjMwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjE2XFwwMDFcXDE3NlxcMDAwXFwxNzhcXDAwMVxcXG5cXDAxOFxcMDAxXFwwMDFcXDAwMFxcMjE5XFwwMDFcXDAwMVxcMDAwXFwwMjRcXDAwMVxcMjIxXFwwMDFcXDE0NFxcMDAwXFwyMjBcXDAwMVxcXG5cXDAwMVxcMDAwXFwyNTFcXDAwMFxcMDE5XFwwMDJcXDI0NFxcMDAxXFwwMDFcXDAwMFxcMjQ1XFwwMDFcXDI0NlxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjUwXFwwMDFcXDE0MlxcMDAwXFwyNTFcXDAwMVxcMjA0XFwwMDFcXDE5MVxcMDAwXFwxODVcXDAwMFxcXG5cXDI1NFxcMDAxXFwxOTRcXDAwMFxcMjU1XFwwMDFcXDA1M1xcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMlxcMDAyXFwwMDNcXDAwMlxcXG5cXDAwNFxcMDAyXFwwMDVcXDAwMlxcMDUyXFwwMDFcXDAxNlxcMDAxXFwwMDZcXDAwMlxcMDY1XFwwMDJcXDAwOVxcMDAyXFwwMTBcXDAwMlxcXG5cXDAxMVxcMDAyXFwwMDdcXDAwMFxcMjExXFwwMDBcXDIxM1xcMDAwXFwyMTVcXDAwMFxcMDM2XFwwMDJcXDA1N1xcMDAxXFwwMTJcXDAwMlxcXG5cXDAxM1xcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjNcXDAwMVxcMDM3XFwwMDJcXDA4MVxcMDAwXFwwMjlcXDAwMVxcXG5cXDAzMFxcMDAxXFwwNzZcXDAwMVxcMDIxXFwwMDJcXDA2NlxcMDAyXFwwMDFcXDAwMFxcMDk1XFwwMDFcXDAyM1xcMDAyXFwwMzhcXDAwMVxcXG5cXDEwMVxcMDAxXFwwMzlcXDAwMVxcMDAxXFwwMDBcXDA5MFxcMDAyXFwwMDFcXDAwMFxcMDMyXFwwMDJcXDAwMVxcMDAwXFwwMDhcXDAwMFxcXG5cXDAwOVxcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA5MVxcMDAyXFwwNDJcXDAwMlxcMDUzXFwwMDBcXDA0NFxcMDAyXFwxNzhcXDAwMVxcXG5cXDA0NlxcMDAyXFwwNDdcXDAwMlxcMDAxXFwwMDBcXDAyNFxcMDAwXFwwODdcXDAwMlxcMTA0XFwwMDFcXDA1MFxcMDAyXFwwNTFcXDAwMlxcXG5cXDAwMVxcMDAwXFwxMDVcXDAwMVxcMDUyXFwwMDJcXDA1M1xcMDAyXFwwNTRcXDAwMlxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwMDFcXDAwMFxcXG5cXDIwNFxcMDAxXFwwNThcXDAwMlxcMDU5XFwwMDJcXDA2MFxcMDAyXFwxMDlcXDAwMVxcMDYxXFwwMDJcXDA2MlxcMDAyXFwwMDFcXDAwMFxcXG5cXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAxXFwwMDBcXDIzNlxcMDAxXFwwNTRcXDAwMFxcMjM3XFwwMDFcXDA2OVxcMDAyXFwxNzhcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE2MlxcMDAwXFwxNjNcXDAwMFxcMDAxXFwwMDBcXDA3N1xcMDAyXFwwNzhcXDAwMlxcXG5cXDEzNFxcMDAxXFwwMjVcXDAwMFxcMDI2XFwwMDBcXDAyN1xcMDAwXFwwMzVcXDAwMVxcMDAxXFwwMDBcXDA4MlxcMDAyXFwwODNcXDAwMlxcXG5cXDA4NFxcMDAyXFwwODVcXDAwMlxcMjA0XFwwMDFcXDAwMVxcMDAwXFwyMjJcXDAwMVxcMDg4XFwwMDJcXDAyOFxcMDAwXFwwMjlcXDAwMFxcXG5cXDAzMFxcMDAwXFwwMzFcXDAwMFxcMDMyXFwwMDBcXDAzM1xcMDAwXFwwMzRcXDAwMFxcMDg5XFwwMDJcXDEzNlxcMDAxXFwyMjNcXDAwMVxcXG5cXDIyNFxcMDAxXFwyMzhcXDAwMVxcMjM5XFwwMDFcXDEzNVxcMDAxXFwwOTJcXDAwMlxcMDkzXFwwMDJcXDAwMVxcMDAwXFwwNTNcXDAwMFxcXG5cXDA5NlxcMDAyXFwwOTdcXDAwMlxcMDIzXFwwMDBcXDAwMVxcMDAwXFwwMzVcXDAwMFxcMDk4XFwwMDJcXDAwMVxcMDAwXFwwMzZcXDAwMFxcXG5cXDAzN1xcMDAwXFwxMDBcXDAwMlxcMDIzXFwwMDBcXDEwMlxcMDAyXFwyMjVcXDAwMVxcMjI2XFwwMDFcXDIyN1xcMDAxXFwwNDJcXDAwMVxcXG5cXDIyMVxcMDAwXFwyMjJcXDAwMFxcMjI4XFwwMDFcXDE0NlxcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwNzNcXDAwMVxcXG5cXDE2NFxcMDAwXFwxNjVcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDA1NFxcMDAwXFwyNDBcXDAwMVxcXG5cXDE1M1xcMDAxXFwyNDFcXDAwMVxcMTU4XFwwMDFcXDEyOVxcMDAxXFwwNThcXDAwMVxcMDg1XFwwMDFcXDA4N1xcMDAxXFwwNDdcXDAwMFxcXG5cXDA0N1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA0N1xcMDAwXFwwMDFcXDAwMFxcMTU5XFwwMDFcXDEwMlxcMDAxXFwwNDdcXDAwMFxcXG5cXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcXG5cXDA1NlxcMDAwXFwwNTdcXDAwMFxcMjI5XFwwMDFcXDEwM1xcMDAwXFwwMDFcXDAwMFxcMDU4XFwwMDBcXDE2NFxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTE1XFwwMDFcXDExNlxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDE2NVxcMDAxXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxMTlcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTY3XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIwN1xcMDAxXFwyMDhcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxODBcXDAwMVxcXG5cXDAwMVxcMDAwXFwxODFcXDAwMVxcMTI4XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTMxXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMjRcXDAwMFxcMDQ3XFwwMDBcXDAwMVxcMDAwXFwxMzZcXDAwMFxcXG5cXDAwMVxcMDAwXFwxNDhcXDAwMVxcMTgyXFwwMDFcXDAwMVxcMDAwXFwyMjdcXDAwMFxcMjI4XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMjNcXDAwMVxcXG5cXDIyNFxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwN1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTNcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxOTZcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTk5XFwwMDFcXDI0OFxcMDAwXFwwMDFcXDAwMFxcMjEyXFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDE0OFxcMDAxXFwwMzVcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMThcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMzBcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAyXFwwMDFcXDAwMFxcMDE2XFwwMDJcXDAwMVxcMDAwXFwwNzhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAzNlxcMDAwXFwwMTdcXDAwMlxcMDAxXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDA3XFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNDhcXDAwMFxcMDY2XFwwMDFcXDA2N1xcMDAxXFwwMTRcXDAwMlxcXG5cXDAyNFxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwOFxcMDAwXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDAyNVxcMDAyXFwwMjhcXDAwMlxcXG5cXDAwMVxcMDAwXFwwMjlcXDAwMlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyNDhcXDAwMVxcMjQ5XFwwMDFcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDA0OFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcXG5cXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTA5XFwwMDBcXDAzM1xcMDAyXFwwMzVcXDAwMlxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcXG5cXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDIwMFxcMDAwXFwxMzBcXDAwMVxcMDM0XFwwMDJcXDIwMVxcMDAwXFwwNDhcXDAwMlxcXG5cXDA0M1xcMDAyXFwwNDlcXDAwMlxcMTY0XFwwMDBcXDE2NVxcMDAwXFwwNjdcXDAwMlxcMTAzXFwwMDBcXDEwM1xcMDAwXFwwNjhcXDAwMlxcXG5cXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcXG5cXDA3M1xcMDAyXFwwNzRcXDAwMlxcMDc1XFwwMDJcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcXG5cXDE2OFxcMDAwXFwxNjlcXDAwMFxcMDgwXFwwMDJcXDA5NFxcMDAyXFwwOTVcXDAwMlxcMTAzXFwwMDBcXDA0MFxcMDAyXFwyMzdcXDAwMVxcXG5cXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMzZcXDAwMFxcXG5cXDEwMVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEzNlxcMDAwXFwwMjRcXDAwMFxcMjAyXFwwMDBcXDEzNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDEzNlxcMDAwXFwxMzZcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDEwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDA1N1xcMDAwXFwxMDNcXDAwMFxcMTAzXFwwMDBcXDEwM1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcXG5cXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTEwXFwwMDBcXDIzOFxcMDAxXFwyMzlcXDAwMVxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcXG5cXDEwN1xcMDAwXFwxMDdcXDAwMFxcMjAzXFwwMDBcXDIwNFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDEzNlxcMDAwXFwxMzZcXDAwMFxcMDI1XFwwMDBcXDAyNlxcMDAwXFwwMjdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMTNcXDAwMFxcXG5cXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcXG5cXDA2MVxcMDAwXFwxNDVcXDAwMFxcMjAzXFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDAwMVxcMDAwXFwwMjZcXDAwMFxcXG5cXDAwMVxcMDAwXFwyNDBcXDAwMVxcMDAxXFwwMDBcXDI0MVxcMDAxXFwwMTdcXDAwMFxcMTA3XFwwMDBcXDAwMVxcMDAwXFwxMzZcXDAwMFxcXG5cXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAzNlxcMDAwXFwwODhcXDAwMVxcMjQ5XFwwMDBcXDA3NFxcMDAxXFwxMjNcXDAwMFxcMDM3XFwwMDFcXDA0MlxcMDAxXFwxODNcXDAwMVxcXG5cXDIwNFxcMDAwXFwxODRcXDAwMVxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxOTlcXDAwMFxcMTk3XFwwMDFcXDEwN1xcMDAwXFwxNjRcXDAwMFxcXG5cXDE2NVxcMDAwXFwxMDdcXDAwMFxcMTA3XFwwMDBcXDEwN1xcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcXG5cXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTExXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcXG5cXDEwOFxcMDAwXFwxMDhcXDAwMFxcMDAxXFwwMDBcXDE2NlxcMDAwXFwxNjdcXDAwMFxcMTY4XFwwMDBcXDE2OVxcMDAwXFwxNzRcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTA4XFwwMDFcXDE0MFxcMDAxXFwxNzNcXDAwMVxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMjdcXDAwMFxcXG5cXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwyMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMjAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA4XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM3XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMDhcXDAwMFxcMTA4XFwwMDBcXDEwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwxMjNcXDAwMVxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzhcXDAwMVxcMjM5XFwwMDFcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwyNDBcXDAwMVxcXG5cXDAwMFxcMDAwXFwyNDFcXDAwMVxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxMDlcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwxMDlcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcXG5cXDEzNFxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEwOVxcMDAwXFwxMDlcXDAwMFxcMTA5XFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcXG5cXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwwODlcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwxMTBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExMFxcMDAwXFwxMTBcXDAwMFxcMTEwXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcXG5cXDA1NVxcMDAwXFwwNTZcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTFcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExMVxcMDAwXFwxMTFcXDAwMFxcMTExXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTJcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExMlxcMDAwXFwxMTJcXDAwMFxcMTEyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcXG5cXDExM1xcMDAwXFwxMTNcXDAwMFxcMTEzXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDExM1xcMDAwXFwxMTNcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTEzXFwwMDBcXDExM1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMVxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcXG5cXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNjVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDE0OVxcMDAwXFwwMDBcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMDBcXDAwMFxcMTI2XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEyNlxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcXG5cXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMVxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI2XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwxMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTI4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcXG5cXDEyOFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEyOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwxNTlcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMDUwXFwwMDBcXDA1MVxcMDAwXFwwNTJcXDAwMFxcXG5cXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMTZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDhcXDAwMFxcMTY2XFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDIwNlxcMDAwXFwyMDhcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDIwOFxcMDAwXFwyMDhcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDE0OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwOFxcMDAwXFwyMDhcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0OVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDlcXDAwMFxcMTQ5XFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwyMDZcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMTUwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcXG5cXDE1MFxcMDAwXFwxNTBcXDAwMFxcMTUwXFwwMDBcXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMDAwXFwxNTBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNTlcXDAwMFxcMTU5XFwwMDBcXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1OVxcMDAwXFwxNTlcXDAwMFxcXG5cXDE1OVxcMDAwXFwxNTlcXDAwMFxcMTU5XFwwMDBcXDE1OVxcMDAwXFwxNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcXG5cXDIxNlxcMDAwXFwyMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTlcXDAwMFxcXG5cXDE1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTZcXDAwMFxcMjE2XFwwMDBcXDIxNlxcMDAwXFwyMTZcXDAwMFxcXG5cXDIxNlxcMDAwXFwyMTZcXDAwMFxcMjE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjE2XFwwMDBcXDIxNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODVcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcMTY2XFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcXG5cXDE2NlxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDg1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcXG5cXDE2NlxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDE2NlxcMDAwXFwxNjZcXDAwMFxcMDg1XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcXG5cXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODVcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMFxcXG5cXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcXG5cXDA1MFxcMDAwXFwwNTFcXDAwMFxcMDUyXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDA1NlxcMDAwXFwwNTdcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5M1xcMDAwXFwwNjFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDE4NFxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxNFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwxNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzVcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAzMVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDY3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG5cXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcXG5cXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcXG5cXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwxMDZcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDIxNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcXG5cXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMjE3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDA2N1xcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcXG5cXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcXG5cXDA4N1xcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTZcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcXG5cXDIzMVxcMDAwXFwwMDBcXDAwMFxcMDY4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzlcXDAwMFxcMDgwXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA4N1xcMDAwXFwwODhcXDAwMFxcXG5cXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDM0XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcXG5cXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDg5XFwwMDBcXDA5MFxcMDAwXFwwOTFcXDAwMFxcMDkyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OVxcMDAwXFwwODBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODNcXDAwMFxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwODlcXDAwMFxcMDkwXFwwMDBcXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcXG5cXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDIxMlxcMDAwXFwyMTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjEyXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwyMTJcXDAwMFxcXG5cXDIxMlxcMDAwXFwyMTJcXDAwMFxcMjEyXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwNjdcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcXG5cXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzlcXDAwMFxcXG5cXDA4MFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAwXFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwwODdcXDAwMFxcMDg4XFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDA4OVxcMDAwXFwwOTBcXDAwMFxcMDkxXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMTc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwNzFcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcXG5cXDA4NVxcMDAwXFwwODZcXDAwMFxcMDg3XFwwMDBcXDA4OFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwOTBcXDAwMFxcXG5cXDA5MVxcMDAwXFwwOTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXCJcblxubGV0IHl5Y2hlY2sgPSBcIlxcMDAxXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwyMDdcXDAwMFxcMDk5XFwwMDFcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDA5XFwwMDBcXFxuXFwwNTFcXDAwMFxcMDE0XFwwMDBcXDE0MlxcMDAwXFwxMzRcXDAwMFxcMDU1XFwwMDBcXDE5M1xcMDAxXFwxMjJcXDAwMFxcMDE5XFwwMDBcXFxuXFwwMTlcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAxXFwwMjRcXDAwMFxcMDI1XFwwMDBcXFxuXFwyMTVcXDAwMVxcMDAwXFwwMDBcXDAyOFxcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXDAzMVxcMDAwXFwwMzJcXDAwMFxcMDMzXFwwMDBcXFxuXFwwMzRcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzdcXDAwMFxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDEzXFwwMDJcXFxuXFwwMDBcXDAwMFxcMjUzXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMVxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXFxuXFwwMDJcXDAwMVxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA0MFxcMDAxXFwwNTZcXDAwMFxcMDU3XFwwMDBcXFxuXFwwNThcXDAwMFxcMDk0XFwwMDFcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDA3MVxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDA0XFwwMDFcXFxuXFwwODJcXDAwMFxcMDEwXFwwMDFcXDE3N1xcMDAxXFwwNjBcXDAwMlxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwMDBcXDAwMFxcMDUyXFwwMDFcXFxuXFwwNjJcXDAwMlxcMDEwXFwwMDFcXDIyNFxcMDAwXFwwMTRcXDAwMVxcMjI2XFwwMDBcXDAxN1xcMDAyXFwwOTZcXDAwMFxcMDc4XFwwMDFcXFxuXFwyMzBcXDAwMFxcMjE2XFwwMDFcXDAwMFxcMDAxXFwwMzRcXDAwMlxcMTAyXFwwMDBcXDIwOVxcMDAwXFwwMDRcXDAwMVxcMjM1XFwwMDBcXFxuXFwwMjlcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAxXFwxMDZcXDAwMFxcMDY0XFwwMDFcXDExM1xcMDAwXFwxMTNcXDAwMFxcMDAyXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDIwOVxcMDAxXFwwNTFcXDAwMVxcMDA0XFwwMDFcXDExOVxcMDAwXFwxMjBcXDAwMFxcMTIxXFwwMDBcXFxuXFwwOTdcXDAwMlxcMTIzXFwwMDBcXDA4MFxcMDAxXFwxMjVcXDAwMFxcMDc4XFwwMDFcXDA0OVxcMDAyXFwwMDBcXDAwMFxcMTMxXFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMVxcMTY5XFwwMDFcXDA2OFxcMDAyXFwwOTRcXDAwMVxcMjU0XFwwMDFcXFxuXFwxNDBcXDAwMFxcMTQwXFwwMDBcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMTQ1XFwwMDBcXFxuXFwxNDdcXDAwMFxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDE0OFxcMDAwXFwxNDlcXDAwMFxcMTUwXFwwMDBcXFxuXFwxNTFcXDAwMFxcMTUyXFwwMDBcXDE1M1xcMDAwXFwxNTRcXDAwMFxcMTU1XFwwMDBcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMTYxXFwwMDBcXFxuXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDE2NFxcMDAwXFwxNjVcXDAwMFxcMTY2XFwwMDBcXDE2N1xcMDAwXFwxNjhcXDAwMFxcMTY5XFwwMDBcXFxuXFwwNDZcXDAwMVxcMDAwXFwwMDFcXDE3MlxcMDAwXFwxNzNcXDAwMFxcMDEyXFwwMDFcXDE3NVxcMDAwXFwxNzZcXDAwMFxcMDAyXFwwMDFcXFxuXFwwNzhcXDAwMVxcMTc5XFwwMDBcXDE4MFxcMDAwXFwwNTFcXDAwMVxcMTgyXFwwMDBcXDA3OFxcMDAxXFwwNTFcXDAwMVxcMDAwXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDIyOVxcMDAwXFwwNzhcXDAwMVxcMTkwXFwwMDBcXDE5MVxcMDAwXFwwNzhcXDAwMVxcMDA2XFwwMDJcXFxuXFwwMTVcXDAwMVxcMTk1XFwwMDBcXDE5NlxcMDAwXFwwMDBcXDAwMVxcMTk4XFwwMDBcXDAwMFxcMDAxXFwwNTFcXDAwMVxcMjAxXFwwMDBcXFxuXFwyMDJcXDAwMFxcMjAzXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDA5XFwwMDFcXDAzOFxcMDAxXFwwOTJcXDAwMVxcMDM4XFwwMDFcXFxuXFwyMDdcXDAwMFxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMDBcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwyMTZcXDAwMFxcMjE3XFwwMDBcXFxuXFwwMDBcXDAwMVxcMDAyXFwwMDFcXDA3NlxcMDAxXFwwMDNcXDAwMVxcMDc4XFwwMDFcXDIyM1xcMDAwXFwwMDVcXDAwMVxcMjI1XFwwMDBcXFxuXFwwMDdcXDAwMVxcMjI3XFwwMDBcXDIyOFxcMDAwXFwwMDBcXDAwMVxcMDgxXFwwMDFcXDA4MlxcMDAxXFwwMDNcXDAwMVxcMDM4XFwwMDFcXFxuXFwyMzRcXDAwMFxcMTExXFwwMDFcXDA1MVxcMDAxXFwwMzhcXDAwMVxcMDc2XFwwMDFcXDIzOVxcMDAwXFwyNDBcXDAwMFxcMDU0XFwwMDJcXFxuXFwwMDBcXDAwMVxcMTg5XFwwMDFcXDAwMlxcMDAxXFwxMTBcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwyNDhcXDAwMFxcMDc4XFwwMDFcXFxuXFwyNTBcXDAwMFxcMDI3XFwwMDFcXDI1MlxcMDAwXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA1MVxcMDAxXFwxNDBcXDAwMVxcMDQwXFwwMDFcXFxuXFwwMDBcXDAwMVxcMTMzXFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA3XFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDI2XFwwMDFcXFxuXFwwODFcXDAwMVxcMDgyXFwwMDFcXDA1MFxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXFxuXFwwMThcXDAwMVxcMDAwXFwwMDBcXDAyM1xcMDAxXFwwNzhcXDAwMVxcMDc4XFwwMDFcXDA1MFxcMDAxXFwwMjRcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwODFcXDAwMVxcMDgyXFwwMDFcXDAwNFxcMDAxXFwwMTBcXDAwMVxcMTU0XFwwMDFcXFxuXFwwMzRcXDAwMVxcMDc4XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMDQwXFwwMDFcXDA3OFxcMDAxXFwxNzBcXDAwMVxcMDAyXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDA0XFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDA0XFwwMDFcXDA0N1xcMDAxXFwwMDRcXDAwMVxcMDEwXFwwMDFcXFxuXFwwMDRcXDAwMVxcMDUxXFwwMDFcXDAxMFxcMDAxXFwwNTNcXDAwMVxcMDEwXFwwMDFcXDAwNFxcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMDYxXFwwMDFcXDA2MVxcMDAxXFwwMTBcXDAwMVxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNzhcXDAwMVxcMDAwXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAxXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDM0XFwwMDFcXFxuXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDA3NlxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNzhcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwODhcXDAwMVxcMDg5XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDk0XFwwMDFcXDAwNFxcMDAxXFwwNzJcXDAwMVxcMDcyXFwwMDFcXDA5NVxcMDAxXFwwMTBcXDAwMVxcMDMyXFwwMDFcXFxuXFwwOThcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAxXFwxMDFcXDAwMVxcMDgwXFwwMDFcXDAzOFxcMDAxXFwxMDRcXDAwMVxcMTA1XFwwMDFcXFxuXFwxMDZcXDAwMVxcMDM4XFwwMDFcXDExMFxcMDAxXFwxMDlcXDAwMVxcMDEyXFwwMDFcXDA3MlxcMDAxXFwwODBcXDAwMVxcMTEzXFwwMDFcXFxuXFwwNzJcXDAwMVxcMDM0XFwwMDFcXDA3MlxcMDAxXFwxNThcXDAwMVxcMDcyXFwwMDFcXDA4MFxcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAxXFwwMDVcXDAwMVxcMDAyXFwwMDFcXDAwN1xcMDAxXFwwMDBcXDAwMVxcMDczXFwwMDFcXFxuXFwxMzBcXDAwMVxcMDgwXFwwMDFcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMTM0XFwwMDFcXDEzNVxcMDAxXFwxMzZcXDAwMVxcMDA5XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDQzXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwxNDRcXDAwMVxcMDA0XFwwMDFcXFxuXFwxNDZcXDAwMVxcMDc4XFwwMDFcXDAwNFxcMDAxXFwwNzhcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwxNTRcXDAwMVxcMTUzXFwwMDFcXFxuXFwwMTBcXDAwMVxcMDAwXFwwMDFcXDE1NlxcMDAxXFwwMDJcXDAwMVxcMDcyXFwwMDFcXDE1OVxcMDAxXFwwNzJcXDAwMVxcMTYxXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDAwXFwwMDBcXDE2NFxcMDAxXFwxNjVcXDAwMVxcMTY5XFwwMDFcXDE2N1xcMDAxXFwwMjFcXDAwMVxcMTcxXFwwMDFcXFxuXFwxNzFcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDc2XFwwMDFcXDE3NVxcMDAxXFwxNzZcXDAwMVxcMDQzXFwwMDFcXFxuXFwwNzhcXDAwMVxcMTM1XFwwMDBcXDE4MFxcMDAxXFwxODFcXDAwMVxcMTgyXFwwMDFcXDEzOVxcMDAwXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDE5MVxcMDAxXFwxODlcXDAwMVxcMTkzXFwwMDFcXFxuXFwwMjlcXDAwMVxcMDc2XFwwMDFcXDE5NlxcMDAxXFwwNzhcXDAwMVxcMDcxXFwwMDFcXDE5OVxcMDAxXFwwNzJcXDAwMVxcMTk4XFwwMDFcXFxuXFwwNzhcXDAwMVxcMTU5XFwwMDBcXDI1MVxcMDAxXFwyMDVcXDAwMVxcMDc1XFwwMDFcXDIwN1xcMDAxXFwyMDhcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDIxMlxcMDAxXFwwNzJcXDAwMVxcMjE0XFwwMDFcXDIxNVxcMDAxXFwwNzJcXDAwMVxcMTA5XFwwMDBcXFxuXFwyMThcXDAwMVxcMTExXFwwMDBcXDIyMFxcMDAxXFwwMDRcXDAwMVxcMDAwXFwwMDFcXDIyM1xcMDAxXFwyMjRcXDAwMVxcMjI1XFwwMDFcXFxuXFwyMjZcXDAwMVxcMjI3XFwwMDFcXDAxMFxcMDAxXFwxODVcXDAwMFxcMjMwXFwwMDFcXDA3NlxcMDAxXFwyMzJcXDAwMVxcMjMzXFwwMDFcXFxuXFwyMzRcXDAwMVxcMDUxXFwwMDFcXDEyOFxcMDAwXFwxMjlcXDAwMFxcMTMwXFwwMDBcXDAwNlxcMDAxXFwwMDRcXDAwMVxcMjQxXFwwMDFcXFxuXFwyNDJcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDJcXDAwMVxcMDQwXFwwMDFcXDAxNFxcMDAxXFwwMzdcXDAwMVxcMjA1XFwwMDBcXFxuXFwyMDZcXDAwMFxcMDc4XFwwMDFcXDI1MlxcMDAxXFwwNDRcXDAwMlxcMDMyXFwwMDFcXDA4MFxcMDAxXFwwMDBcXDAwMlxcMjEzXFwwMDBcXFxuXFwwNzhcXDAwMVxcMjE1XFwwMDBcXDAzOFxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDFcXDAwN1xcMDAyXFwwMDJcXDAwMVxcMDgxXFwwMDFcXFxuXFwwODJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMTRcXDAwMVxcMDE0XFwwMDJcXDAwNFxcMDAxXFwwMTZcXDAwMlxcMDE3XFwwMDJcXFxuXFwwMThcXDAwMlxcMDE5XFwwMDJcXDAwNFxcMDAxXFwwMDJcXDAwMVxcMDY5XFwwMDJcXDAwNVxcMDAxXFwwMjRcXDAwMlxcMDI1XFwwMDJcXFxuXFwwMTBcXDAwMVxcMDAxXFwwMDFcXDAyOFxcMDAyXFwwMjlcXDAwMlxcMDMwXFwwMDJcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXFxuXFwwMzRcXDAwMlxcMDM1XFwwMDJcXDAzNlxcMDAyXFwwMzdcXDAwMlxcMDAyXFwwMDFcXDAzOVxcMDAyXFwwNDBcXDAwMlxcMDE0XFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMVxcMDA0XFwwMDFcXDAwMlxcMDAxXFwwNDhcXDAwMlxcMDQ5XFwwMDJcXFxuXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwMlxcMDAxXFwwNTZcXDAwMlxcMDU3XFwwMDJcXFxuXFwwMTBcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjEwXFwwMDBcXDA3NlxcMDAxXFwwNjRcXDAwMlxcMDY1XFwwMDJcXFxuXFwwNjZcXDAwMlxcMDY3XFwwMDJcXDA2OFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDA3MVxcMDAyXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA3OVxcMDAyXFwwNzJcXDAwMVxcMDExXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwMTBcXDAwMVxcMDg2XFwwMDJcXDA4N1xcMDAyXFwwNzJcXDAwMVxcMDc4XFwwMDFcXFxuXFwwOTBcXDAwMlxcMDkxXFwwMDJcXDAwNlxcMDAxXFwwNDBcXDAwMVxcMDc1XFwwMDFcXDA5NVxcMDAyXFwwODBcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDk5XFwwMDJcXDAxNFxcMDAxXFwxMDFcXDAwMlxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzOFxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwNzhcXDAwMVxcMDc2XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDc4XFwwMDFcXDAzNFxcMDAxXFwwODFcXDAwMVxcMDA0XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDc4XFwwMDFcXDAwMFxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDAwMVxcMDAxXFwwMjhcXDAwMVxcMDYwXFwwMDFcXFxuXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXFxuXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDA3NFxcMDAxXFwwNzhcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDRcXDAwMVxcMDA3XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDU1XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAzMFxcMDAxXFwwMTBcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXFxuXFwwMTVcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAwNFxcMDAxXFwwMjFcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMDdcXDAwMVxcMDUwXFwwMDFcXDA4MFxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDA4M1xcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXFxuXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwNTBcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAyXFwwMDFcXDA3OFxcMDAxXFwwNzZcXDAwMVxcMDAwXFwwMDBcXFxuXFwwNzhcXDAwMVxcMTAzXFwwMDFcXDAwNlxcMDAxXFwwNTBcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDExXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDBcXDAwMFxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXFxuXFwwNzFcXDAwMVxcMDcyXFwwMDFcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDc1XFwwMDFcXDAwMFxcMDAxXFwwMDRcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDc4XFwwMDFcXFxuXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDAwNFxcMDAxXFwwMDNcXDAwMVxcMDEwXFwwMDFcXDAwNlxcMDAxXFwwMTJcXDAwMVxcMDc4XFwwMDFcXFxuXFwxNTBcXDAwMVxcMTUxXFwwMDFcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDAzXFwwMDFcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDAxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDAzXFwwMDFcXDAwNVxcMDAxXFwwMzhcXDAwMVxcMDI4XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDA0XFwwMDFcXDA0MFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAxNFxcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAyOFxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXDI1NFxcMDAwXFwyNTVcXDAwMFxcMDE0XFwwMDFcXFxuXFwwMzJcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMzJcXDAwMVxcMDMyXFwwMDFcXFxuXFwwNzhcXDAwMVxcMDMyXFwwMDFcXDA3MlxcMDAxXFwwNzhcXDAwMVxcMjEwXFwwMDFcXDIxMVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwwMjFcXDAwMVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNzhcXDAwMVxcMDUyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDYwXFwwMDFcXFxuXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXFxuXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA3NFxcMDAxXFwwNzVcXDAwMVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwN1xcMDAxXFwwMDNcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDhcXDAwMVxcMDA0XFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDc2XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDA3XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXFxuXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDA3OFxcMDAxXFwwNzZcXDAwMVxcMDA2XFwwMDFcXDA1MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAwXFwwMDFcXFxuXFwwMDZcXDAwMVxcMDc4XFwwMDFcXDAwMVxcMDAxXFwwMDRcXDAwMVxcMDAyXFwwMDFcXDA1MFxcMDAxXFwwMDBcXDAwMFxcMDA2XFwwMDFcXFxuXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMDgwXFwwMDFcXDA0M1xcMDAxXFwwNzVcXDAwMVxcMDE0XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAzMlxcMDAxXFwwNzJcXDAwMVxcMDAzXFwwMDFcXDAzNFxcMDAxXFwwMDJcXDAwMVxcMDM4XFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMDRcXDAwMVxcMDA2XFwwMDFcXDA3MlxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMzJcXDAwMVxcMDA2XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFwwNzhcXDAwMVxcMDA4XFwwMDFcXDA1MFxcMDAxXFwwMDhcXDAwMVxcMDcyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDIyXFwwMDFcXDE1OFxcMDAwXFwwMDZcXDAwMVxcMDQxXFwwMDBcXDIxMVxcMDAwXFwwMDJcXDAwMVxcMTUwXFwwMDFcXFxuXFwxMThcXDAwMFxcMTUxXFwwMDFcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMTE2XFwwMDBcXDE2NlxcMDAxXFwwNzVcXDAwMVxcMDExXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXFxuXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwOFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMzRcXDAwMVxcMTQyXFwwMDFcXFxuXFwwMTRcXDAwMVxcMDAyXFwwMDFcXDA0MFxcMDAxXFwwOTRcXDAwMVxcMTQxXFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDQ0XFwwMDBcXFxuXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAzNFxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcMDMyXFwwMDFcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwwNzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDQwXFwwMDFcXFxuXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwyNTVcXDI1NVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXFxuXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDc2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDFcXFxuXFwwMTBcXDAwMVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwyNTVcXDI1NVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNjBcXDAwMVxcMDYxXFwwMDFcXDA2MlxcMDAxXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXFxuXFwwNjhcXDAwMVxcMDY5XFwwMDFcXDA3MFxcMDAxXFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXFxuXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXDAxMVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXFxuXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDM0XFwwMDFcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAwMFxcMDAwXFwwMjJcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwwODBcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMDI5XFwwMDFcXDAzMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXFxuXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDcyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXFxuXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMDAyXFwwMDFcXFxuXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDEwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXFxuXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXFxuXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDEyXFwwMDFcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXFxuXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAwOVxcMDAxXFwwMTBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXFxuXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXFxuXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwMDRcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXFxuXFwwMDlcXDAwMVxcMDEwXFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXFxuXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwwNzhcXDAwMVxcMDA0XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDA5XFwwMDFcXDAxMFxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXFxuXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMDcyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEwXFwwMDFcXFxuXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDAwNFxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMTBcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI2XFwwMDFcXFxuXFwwMjdcXDAwMVxcMjU1XFwyNTVcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMDA0XFwwMDFcXFxuXFwwMjZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjlcXDAwMVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXFxuXFwwNTlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXFxuXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXFxuXFwwNzVcXDAwMVxcMDA0XFwwMDFcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA3MVxcMDAxXFwyNTVcXDI1NVxcMDEwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDBcXDAwMFxcMDYwXFwwMDFcXFxuXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXFxuXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDAyOVxcMDAxXFwwNzJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXFxuXFwwNTlcXDAwMVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMDExXFwwMDFcXFxuXFwwMTJcXDAwMVxcMDAwXFwwMDBcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXDA2M1xcMDAxXFwwNjRcXDAwMVxcMDY1XFwwMDFcXFxuXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMDJcXDAwMVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAwXFwwMDBcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDAyXFwwMDFcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDc1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMDUzXFwwMDFcXFxuXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXFxuXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDcyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMDQxXFwwMDFcXFxuXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDJcXDAwMVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA1NVxcMDAxXFwwNTZcXDAwMVxcMDU3XFwwMDFcXFxuXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXFxuXFwwNTZcXDAwMVxcMDU3XFwwMDFcXDA1OFxcMDAxXFwwNTlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTNcXDAwMVxcMDU0XFwwMDFcXFxuXFwwNTVcXDAwMVxcMDU2XFwwMDFcXDA1N1xcMDAxXFwwNThcXDAwMVxcMDU5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTVcXDAwMVxcMDU2XFwwMDFcXFxuXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDU1XFwwMDFcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXFxuXFwwNTlcXDAwMVxcMDExXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAxNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwNzVcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXFxuXFwwMzRcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDUxXFwwMDFcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgxXFwwMDFcXFxuXFwwODJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDA2MFxcMDAxXFwwNjFcXDAwMVxcMDYyXFwwMDFcXFxuXFwwNjNcXDAwMVxcMDY0XFwwMDFcXDA2NVxcMDAxXFwwNjZcXDAwMVxcMDY3XFwwMDFcXDA2OFxcMDAxXFwwNjlcXDAwMVxcMDcwXFwwMDFcXFxuXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMDc4XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDA2NFxcMDAxXFwwNjVcXDAwMVxcMDY2XFwwMDFcXFxuXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwNzhcXDAwMVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXFxuXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXFxuXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwMDNcXDAwMVxcMDczXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcxXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXFxuXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyOFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXFxuXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXFxuXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDI4XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMDEyXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMDIzXFwwMDFcXFxuXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXFxuXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXFxuXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXFxuXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjhcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNzhcXDAwMVxcMDc5XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXFxuXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzFcXDAwMVxcMDAzXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMTJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXFxuXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwMjhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM1XFwwMDFcXFxuXFwwMzZcXDAwMVxcMDM3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDNcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTZcXDAwMVxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXFxuXFwyNTVcXDI1NVxcMDIyXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI4XFwwMDFcXFxuXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3OFxcMDAxXFwwNzlcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMDM2XFwwMDFcXFxuXFwwMzdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDFcXFxuXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA0N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDAwM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNlxcMDAxXFwwMTdcXDAwMVxcMDE4XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXFxuXFwwMjJcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXFxuXFwwNzdcXDAwMVxcMDc4XFwwMDFcXDA3OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM3XFwwMDFcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMDQ1XFwwMDFcXFxuXFwwNDZcXDAwMVxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDE2XFwwMDFcXDAxN1xcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDIyXFwwMDFcXFxuXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXFxuXFwwNzhcXDAwMVxcMDc5XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMDQwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXFxuXFwwNDdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDc4XFwwMDFcXFxuXFwwNzlcXDAwMVwiXG5cbmxldCB5eW5hbWVzX2NvbnN0ID0gXCJcXFxuICBFT0ZcXDAwMFxcXG4gIENPTU1BXFwwMDBcXFxuICBET1RcXDAwMFxcXG4gIE9QX1BBUlxcMDAwXFxcbiAgQ0xfUEFSXFwwMDBcXFxuICBPUF9DVVJcXDAwMFxcXG4gIENMX0NVUlxcMDAwXFxcbiAgT1BfQlJBXFwwMDBcXFxuICBDTF9CUkFcXDAwMFxcXG4gIEFUXFwwMDBcXFxuICBTRU1JQ09MT05cXDAwMFxcXG4gIFBMVVNcXDAwMFxcXG4gIE1JTlVTXFwwMDBcXFxuICBNVUxUXFwwMDBcXFxuICBESVZcXDAwMFxcXG4gIE1PRFxcMDAwXFxcbiAgTUFYXFwwMDBcXFxuICBNSU5cXDAwMFxcXG4gIFNJTlVTXFwwMDBcXFxuICBDT1NJTlVTXFwwMDBcXFxuICBUQU5cXDAwMFxcXG4gIFBPV1xcMDAwXFxcbiAgQUJTXFwwMDBcXFxuICBTUVJUXFwwMDBcXFxuICBFWFBPTkVOVFxcMDAwXFxcbiAgTE9HXFwwMDBcXFxuICBPUlxcMDAwXFxcbiAgQU5EXFwwMDBcXFxuICBOT1RcXDAwMFxcXG4gIFRIRU5cXDAwMFxcXG4gIEVMU0VcXDAwMFxcXG4gIERJRkZcXDAwMFxcXG4gIEVRVUFMXFwwMDBcXFxuICBTTUFMTEVSXFwwMDBcXFxuICBHUkVBVEVSXFwwMDBcXFxuICBUUlVFXFwwMDBcXFxuICBGQUxTRVxcMDAwXFxcbiAgSU5GSU5JVFlcXDAwMFxcXG4gIFNIQVJQXFwwMDBcXFxuICBVTkRFUlNDT1JFXFwwMDBcXFxuICBQSVBFXFwwMDBcXFxuICBSQVJcXDAwMFxcXG4gIExSQVJcXDAwMFxcXG4gIExBUlxcMDAwXFxcbiAgRU1BWFxcMDAwXFxcbiAgVE1BWFxcMDAwXFxcbiAgQ1BVVElNRVxcMDAwXFxcbiAgVElNRVxcMDAwXFxcbiAgRVZFTlRcXDAwMFxcXG4gIE5VTExfRVZFTlRcXDAwMFxcXG4gIENPTE9OXFwwMDBcXFxuICBORVdMSU5FXFwwMDBcXFxuICBCQUNLU0xBU0hcXDAwMFxcXG4gIFNJR05BVFVSRVxcMDAwXFxcbiAgVE9LRU5cXDAwMFxcXG4gIElOSVRcXDAwMFxcXG4gIE9CU1xcMDAwXFxcbiAgUExPVFxcMDAwXFxcbiAgUEVSVFxcMDAwXFxcbiAgQ09ORklHXFwwMDBcXFxuICBBUFBMWVxcMDAwXFxcbiAgREVMRVRFXFwwMDBcXFxuICBJTlRST1xcMDAwXFxcbiAgU05BUFNIT1RcXDAwMFxcXG4gIFNUT1BcXDAwMFxcXG4gIEZMVVhcXDAwMFxcXG4gIFRSQUNLXFwwMDBcXFxuICBBU1NJR05cXDAwMFxcXG4gIFBSSU5URlxcMDAwXFxcbiAgUExPVEVOVFJZXFwwMDBcXFxuICBTUEVDSUVTX09GXFwwMDBcXFxuICBET1xcMDAwXFxcbiAgUkVQRUFUXFwwMDBcXFxuICBBTEFSTVxcMDAwXFxcbiAgUlVOXFwwMDBcXFxuICBMRVRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBJTlRcXDAwMFxcXG4gIEZMT0FUXFwwMDBcXFxuICBJRFxcMDAwXFxcbiAgTEFCRUxcXDAwMFxcXG4gIFNUUklOR1xcMDAwXFxcbiAgU1BBQ0VcXDAwMFxcXG4gIENPTU1FTlRcXDAwMFxcXG4gIFwiXG5cbmxldCB5eWFjdCA9IFt8XG4gIChmdW4gXyAtPiBmYWlsd2l0aCBcInBhcnNlclwiKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDUyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBbXSApXG4jIDE2NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXCJcXG5cIjo6XzIgKVxuIyAxNjY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAoIF8xOjpfMiApXG4jIDE2NzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgKCBfMTo6XzIgKVxuIyAxNjgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBOYnIuRiBpbmZpbml0eSApXG4jIDE2ODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBmbG9hdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIE5ici5GIF8xIClcbiMgMTY5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICduYnIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBOYnIuSSBfMSApXG4jIDE3MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX0ZSRUUgKVxuIyAxNzA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBhZGRfcG9zIDEgKExLYXBwYS5MTktfVkFMVUUgKF8xLCgpKSkgKVxuIyAxNzEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX1NPTUUgKVxuIyAxNzE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKExLYXBwYS5MTktfVFlQRSAoKF8xLHJoc19wb3MgMSksKF81LHJoc19wb3MgNSkpKSApXG4jIDE3MjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSBMS2FwcGEuTE5LX0FOWSApXG4jIDE3MzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIHN0YXRlXCIpKSApXG4jIDE3NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoIFtfMV0gKVxuIyAxNzUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgNzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMyApXG4jIDE3NjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgNzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8xIDo6IF81IClcbiMgMTc3MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIE5vbmUgKVxuIyAxNzc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgODMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgTm9uZSApXG4jIDE3ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IGludCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChTb21lIChfMywgcmhzX3BvcyAzKSkgKVxuIyAxNzkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgKVxuIyAxODAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgOTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAoIGFkZF9wb3MgMSAoU29tZSBfMSkgKVxuIyAxODA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIE5vbmUgKVxuIyAxODE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbXzFdIClcbiMgMTgyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9zdGF0ZXMpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZXMpIGluXG4gICAgT2JqLnJlcHIoXG4jIDk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMyApXG4jIDE4MzEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVybmFsX3N0YXRlcykgaW5cbiAgICBPYmoucmVwcihcbiMgOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzUgKVxuIyAxODQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlcykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBOb25lIClcbiMgMTg0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChfMywgcmhzX3BvcyAzKSApXG4jIDE4NTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBtb2RpZmljYXRpb25cIikpIClcbiMgMTg2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcm5hbF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdsaW5rX3N0YXRlcykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDExMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzIsIF8zKSApXG4jIDE4NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9saW5rKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChcImludmFsaWQgbGlua2luZyBzdGF0ZSBvciBtaXNzaW5nICddJ1wiLHJoc19wb3MgMikpIClcbiMgMTg4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2xpbmspKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZXMpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9tb2RpZikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSwgXzIpIClcbiMgMTg4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2ludGVybmFsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBpbnRlcm5hbCBzdGF0ZSBvciBtaXNzaW5nICd9J1wiLHJoc19wb3MgMykpIClcbiMgMTg5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2ludGVybmFsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF81LCByaHNfcG9zIDUpIClcbiMgMTkwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX21vZGlmKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEyNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKC0gXzcsIHJoc19wb3MgNykgKVxuIyAxOTE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKC0gXzUsIHJoc19wb3MgNSkgKVxuIyAxOTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfbW9kaWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DRVEgXzMscmhzX3BvcyAzKSApXG4jIDE5MzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTMxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKEFzdC5DR1RFIF81LHJoc19wb3MgNSkgKVxuIyAxOTQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChBc3QuQ0xURSBfNSxyaHNfcG9zIDUpIClcbiMgMTk1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LkNWQVIgXzMscmhzX3BvcyAzKSApXG4jIDE5NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl9tb2RpZikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxMzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoTm9uZSwgXzEpIClcbiMgMTk2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX2NvdW50ZXIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTM4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoU29tZSBfMSwgTG9jLmFubm90X3dpdGhfZHVtbXkgMCkgKVxuIyAxOTc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl9tb2RpZikgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChTb21lIF8xLF81KSApXG4jIDE5ODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogaW50KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDYgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdjb3VudGVyX21vZGlmKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzEwID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggU29tZSAoU29tZSAoXzMpLHJoc19wb3MgMyksbWF0Y2ggXzcgd2l0aCAoYSxsb2MpIC0+IFNvbWUgKFNvbWUgKGEpLGxvYykgKVxuIyAyMDAxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGVfY291bnRlcl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBpbnQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggU29tZSAoU29tZSAoXzMpLHJoc19wb3MgMyksTm9uZSApXG4jIDIwMTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9jb3VudGVyX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF83ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzggaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjAyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA4IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdzaXRlX2ludGVybmFsKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzkgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgICAgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzggaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjA0NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSBfNCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIwNTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2ludDsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIwNzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2l0ZV9jb3VudGVyX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIGxldCAoY291bnRlcl9zaWdfbWluLGNvdW50ZXJfc2lnX21heCkgPSBfNSBpblxuICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWU9KF8xLHJoc19wb3MgMSk7XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluO1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heDtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0PVxuICAgICAgICAgICAgICAgIChtYXRjaCBjb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXyktPiAwXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSxfKSAtPiBpICk7XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZT1Bc3QuRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICAgICAgICB9IClcbiMgMjA5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIxMDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA3IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdzaXRlX2xpbmspIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF80IGluXG4gICAgICBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzggaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IClcbiMgMjExOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzaXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDggOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NpdGVfaW50ZXJuYWwpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfOCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9saW5rKSBpblxuICAgIGxldCBfOSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gXzUgaW5cbiAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9IF84IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSApXG4jIDIxMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGVfbGluaykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIwNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gXzQgaW5cbiAgICAgIEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gKVxuIyAyMTQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9pbnRlcm5hbCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9IF81IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gKVxuIyAyMTYzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NpdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc2l0ZV9jb3VudGVyKSBpblxuICAgIE9iai5yZXByKFxuIyAyMTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoY291bnRlcl90ZXN0LGNvdW50ZXJfZGVsdGEpID0gXzUgaW5cbiAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LmNvdW50ZXJfdGVzdDsgQXN0LmNvdW50ZXJfZGVsdGEgfSApXG4jIDIxNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMjE5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgIEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q9Tm9uZTsgfSApXG4jIDIxODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2l0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBbXSApXG4jIDIxOTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgKVxuIyAyMTk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NpdGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2UpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICggXzEgOjogXzIgKVxuIyAyMjA2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3NpdGUpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzQgKVxuIyAyMjE1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjM0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAoIFtdIClcbiMgMjIyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2Vfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDEgKFwiTWFsZm9ybWVkIHNpdGUgZXhwcmVzc2lvblwiKSkpIClcbiMgMjIyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2Vfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc2l0ZV9zaWcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcmZhY2Vfc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMSA6OiBfMiApXG4jIDIyMzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3NpdGVfc2lnKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzEgOjogXzQgKVxuIyAyMjQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggQXN0Lk5vTW9kLHN0YXJ0X3BvcyAxLF8xIClcbiMgMjI1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5DcmVhdGUsZW5kX3BvcyAyLF8zIClcbiMgMjI2MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBBc3QuRXJhc2UsZW5kX3BvcyAyLF8zIClcbiMgMjI2OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9tb2RpZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICggKEFzdC5BYnNlbnQgKHJoc19wb3MgMSksZW5kX3BvcyAxLF8yKSApXG4jIDIyNzUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJmYWNlKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IG1vZGlmLHBlbmQsYW4gPSBfNyBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoXzEscmhzX3BvcyAxKSwgXzUsIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIyODcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMTAgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2UpIGluXG4gICAgbGV0IF8xMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfbW9kaWYpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI1NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IG1vZGlmLHBlbmQsYW4gPSBfMTEgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKF81LHJoc19wb3MgNSksIF85LCBtb2RpZikscGVuZCxhbikgKVxuIyAyMzAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMjMxMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCAoQXN0LkFic2VudCAocmhzX3BvcyAxKSxlbmRfcG9zIDEsXzIpIClcbiMgMjMxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaW50ZXJmYWNlX3NpZykgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IG1vZGlmLHBlbmQsYW4gPSBfNyBpblxuICAgICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfNSwgbW9kaWYpLHBlbmQsYW4pIClcbiMgMjMzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMTAgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgOSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDcgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA2IDogc3RyaW5nKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzggPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF85ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcmZhY2Vfc2lnKSBpblxuICAgIGxldCBfMTEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X21vZGlmKSBpblxuICAgIE9iai5yZXByKFxuIyAyNjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggbGV0IG1vZGlmLHBlbmQsYW4gPSBfMTEgaW5cbiAgICAgICAgKEFzdC5QcmVzZW50ICgoXzUscmhzX3BvcyA1KSwgXzksIG1vZGlmKSxwZW5kLGFuKSApXG4jIDIzNDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiTWFsZm9ybWVkIGFnZW50ICdcIl5fMV5cIidcIikpKSApXG4jIDIzNTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWdlbnQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4oIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgbWF0Y2ggXzQgd2l0aFxuICB8ICh5Ojp6LHBlbmQscCkgLT4gKCh4Ojp5KTo6eixwZW5kLHApXG4gIHwgKFtdLF8sXykgLT5cbiAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgKGFkZF9wb3MgNCAoXCJhc3NlcnRpb24gZmFpbHVyZSBpbiBwYXR0ZXJuIHBhcnNpbmdcIikpKSApXG4jIDIzNjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FnZW50KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuKCBsZXQgKHgsXyxfKSA9IF8xIGluIGxldCAoeSxwZW5kLHApID0gXzQgaW4gKFt4XTo6eSxwZW5kLHApIClcbiMgMjM3NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI4MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggbGV0ICh4LHBlbmQscCkgPSBfMSBpbiAoW1t4XV0scGVuZCxwKSApXG4jIDIzODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGF0dGVybikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5DT05TVCBfMSkgKVxuIyAyMzkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyODggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkgKVxuIyAyMzk3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRNQVhfVkFSKSkgKVxuIyAyNDAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyOTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkNQVVRJTUUpKSApXG4jIDI0MDkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyA1IChBbGdfZXhwci5UT0tFTl9JRCAoXzMpKSApXG4jIDI0MTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgMjk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHAsXyxfKSA9IF8zIGluIGFkZF9wb3MgNCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgcCkgKVxuIyAyNDI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSIChfMSkpIClcbiMgMjQzMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSApXG4jIDI0NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSApXG4jIDI0NDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMwMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICggYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVWRU5UX1ZBUikpIClcbiMgMjQ1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKSApXG4jIDI0NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzMgaW4geCApXG4jIDI0NjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb25zdGFudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBfMSApXG4jIDI0NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgKCBfMSApXG4jIDI0ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCxfMyxfNSkpIClcbiMgMjQ5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLF8zLF81KSkgKVxuIyAyNTAwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCxfMykpIClcbiMgMjUwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUyxfMykpIClcbiMgMjUxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLF8zKSkgKVxuIyAyNTI0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTixfMykpIClcbiMgMjUzMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzIyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsXzMpKSApXG4jIDI1NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCxfMykpIClcbiMgMjU0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzI2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csXzMpKSApXG4jIDI1NTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMyOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVU1JTlVTLF8zKSkgKVxuIyAyNTY0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAzMzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLGVuZF9wb3MgMSxfMikgKVxuIyAyNTcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh4LHkseikgPSBfNSBpblxuICAgICAgKGFkZF9wb3MgNCAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csXzEseCkpLHkseikgKVxuIyAyNTgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyNTkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3Byb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzQxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NT0RVTE8seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjYwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19wcm9kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzQ5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjYxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19zdW0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fcHJvZCkgaW5cbiAgICBPYmoucmVwcihcbiMgMzUxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQseCx5KSxcbiAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNjIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ19leHByX3VwX3RvX3N1bSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19wcm9kKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2MzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHJfdXBfdG9fc3VtKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI2NDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9faWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19zdW0pIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5TVU0seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjY1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdhbGdfZXhwcl91cF90b19pZikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByX3VwX3RvX3N1bSkgaW5cbiAgICBPYmoucmVwcihcbiMgMzczIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI2NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHJfdXBfdG9faWYpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI2NzYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNyA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF84ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyAzODIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoaSxfLF8pID0gXzEgaW5cbiAgICAgIGxldCAodCxfLF8pID0gXzQgaW5cbiAgKChBbGdfZXhwci5JRihpLHQsXzcpLFxuICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSAoZW5kX3BvcyA3KSksZW5kX3BvcyA3LF84KSApXG4jIDI2OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM4OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgKCB0cnVlIClcbiMgMjY5NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGZhbHNlIClcbiMgMjcwMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzk0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzMgaW4geCApXG4jIDI3MTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkX3BvcyAxIEFsZ19leHByLlRSVUUgKVxuIyAyNzE3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgKCBhZGRfcG9zIDEgQWxnX2V4cHIuRkFMU0UgKVxuIyAyNzIzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkX3BvcyAzIChBbGdfZXhwci5VTl9CT09MX09QKE9wZXJhdG9yLk5PVCxfMykpIClcbiMgMjczMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9ib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9ib29sX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIChfMSxlbmRfcG9zIDEsIF8yKSApXG4jIDI3MzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHkscGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSBfMSBpblxuICAgICAgKChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjc1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHJfY29tcCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByX3VwX3RvX2lmKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuU01BTExFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNzY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyNzc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9jb21wKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQyMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSApXG4jIDI3OTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX2NvbXApKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHJfY29tcCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDMwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDI3OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByX25vX29yKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYm9vbF9leHByX2NvbXApIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByX25vX29yKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeSxwZW5kLGFuKSA9IF80IGluXG4gICAgICBsZXQgKHgsXyxfKSA9IF8xIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLkFORCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgKVxuIyAyODExIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcl9ub19vcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xfZXhwcl9ub19vcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDQwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAyODE4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xfZXhwcl9ub19vcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0ICh5LHBlbmQsYW4pID0gXzQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gXzEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIClcbiMgMjgzMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0NTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHgsXyxfKSA9IF8yIGluIHggKVxuIyAyODM5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiUHJvYmxlbWF0aWMgYm9vbGVhbiBleHByZXNzaW9uXCIpKSApXG4jIDI4NDcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKGZhbHNlKVxuIyAyODUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0NTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICh0cnVlKVxuIyAyODU5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBbKF8xLChfMyxyaHNfcG9zIDMpKV0sZW5kX3BvcyAzLF80IClcbiMgMjg2OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNiA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobCxwZW5kLGFuKSA9IF83IGluIChfMSwoXzMscmhzX3BvcyAzKSkgOjogbCxwZW5kLGFuIClcbiMgMjg4MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggbGV0IChwLHBlbmQsYW4pID0gXzEgaW4gKHAsW10scGVuZCxhbikgKVxuIyAyODg4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyA0NzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocCxfLF8pID0gXzEgaW5cbiAgICAgIGxldCAodCxwZW5kLGFuKSA9IF80IGluIChwLCB0LCBwZW5kLCBhbikgKVxuIyAyODk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfc2lkZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHQscGVuZCxhbikgPSBfMyBpbiAoW10sIHQsIHBlbmQsIGFuKSApXG4jIDI5MDYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDQgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSApXG4jIDI5MTYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9zaWRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgMyBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIClcbiMgMjkyNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX3NpZGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdydWxlX3NpZGUpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX3NpZGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSBfNCBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSxfMixwZW5kLGFuKSApXG4jIDI5MzcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncnVsZV9zaWRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYXJyb3cpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA0ODkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAobGhzLHJtX3Rva2VuLF8sXykgPSBfMSBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0LmxoczsgQXN0LnJtX3Rva2VuOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuPVtdfSxfMixlbmRfcG9zIDIsXzMpIClcbiMgMjk0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX3NpZGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChyaHMsYWRkX3Rva2VuLHBlbmQsYW4pID0gXzMgaW5cbiAgICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbj1bXTsgQXN0LnJoczsgQXN0LmFkZF90b2tlbn0sXzEscGVuZCxhbikgKVxuIyAyOTU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfc2lkZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNDk1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKG1peCxkZWx0YV90b2tlbixwZW5kLGFuKSA9IF8xIGluXG4gICAgICAoQXN0LkVkaXQge0FzdC5taXg7IEFzdC5kZWx0YV90b2tlbn0sZmFsc2UscGVuZCxhbikgKVxuIyAyOTY1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gKHgsTm9uZSkgKVxuIyAyOTcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MDIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoeCxfLF8pID0gXzEgaW4gbGV0ICh5LF8sXykgPSBfNCBpbiAoeCwgU29tZSB5KSApXG4jIDI5ODEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ193aXRoX3JhZGl1cykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGIscGVuZCxhbikgPSBfNiBpbiAoYixTb21lIF8zLHBlbmQsYW4pIClcbiMgMjk5MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHgsXyxfKSA9IF8xIGluICh4LFNvbWUgXzQsZW5kX3BvcyA1LF82KSApXG4jIDMwMDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoYSxwZW5kLGFuKSA9IF8xIGluIChhLE5vbmUscGVuZCxhbikgKVxuIyAzMDA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3JhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncmF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggbGV0IChrMixrMSxwZW5kLGFuKSA9IF8zIGluIChrMixrMSxOb25lLE5vbmUscGVuZCxhbikgKVxuIyAzMDE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdyYXRlKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzYgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChrMixrMSxfLF8pID0gXzMgaW5cbiAgICAgIGxldCAoa2JhY2ssa2JhY2sxLHBlbmQsYW4pID0gXzYgaW5cbiAgICAgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSxwZW5kLGFuKSApXG4jIDMwMjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYmlyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyA1MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4scG9zX2VuZCxfYW5ub3QpID0gXzIgaW5cbiAgICAgIGxldCAocmV3cml0ZSxiaWRpcmVjdGlvbmFsLF8sXykgPSBfMSBpblxuICAgICAgKHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0sTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBvc19lbmQpIClcbiMgMzA0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAyIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSApXG4jIDMwNDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1MzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0ICh2LHBlbmQsYW4pID0gXzMgaW4gKChfMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgKVxuIyAzMDU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYscGVuZCxhbikgPSBfMyBpbiAoKF8xLHJoc19wb3MgMSksdixwZW5kLGFuKSApXG4jIDMwNjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIklsbGVnYWwgZGVmaW5pdGlvbiBvZiB2YXJpYWJsZSAnXCJeXzFeXCInXCIpKSkgKVxuIyAzMDc1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NDAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXl8xXlwiJ1wiKSkpIClcbiMgMzA4NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTQzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMSAoXCJsYWJlbCBleHBlY3RlZFwiKSkpIClcbiMgMzA5MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQ3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAoIFsgXzEscmhzX3BvcyAxIF0gKVxuIyAzMDk4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaWRfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCAoXzEscmhzX3BvcyAxKSA6OiBfNSApXG4jIDMxMDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGF0dGVybikgaW5cbiAgICBPYmoucmVwcihcbiMgNTUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF8xIGluXG4gICAgICBsZXQgKHAscGVuZCxfKSA9IF8yIGluXG4gICAgICAodixBc3QuSU5JVF9NSVggKHAsTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDIpIHBlbmQpKSApXG4jIDMxMTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1NTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gXzQgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpIClcbiMgMzEzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1NjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzEgaW4gKHYsQXN0LklOSVRfVE9LIF8yKSApXG4jIDMxMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAodixfLF8pID0gXzQgaW4gKHYsQXN0LklOSVRfVE9LIFtfMSxyaHNfcG9zIDFdKSlcbiMgMzE0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSBcIk1hbGZvcm1lZCBpbml0aWFsIGNvbmRpdGlvblwiKSkgKVxuIyAzMTU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChbXzEsIHJoc19wb3MgMV0pXG4jIDMxNjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU3NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChfMSxyaHNfcG9zIDEpOjpfMylcbiMgMzE3MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgMSBfMSldLGVuZF9wb3MgMSxfMikgKVxuIyAzMTc5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcl91cF90b19pZikgaW5cbiAgICBPYmoucmVwcihcbiMgNTgyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF8xIGluIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgYV0scGVuZCxwKSApXG4jIDMxODYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHJfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTgzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggXzEgKVxuIyAzMTkzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncHJpbnRfZXhwcl9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTg1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxhbikgPSBfMyBpbiAodixlbmRfcG9zIDQsYW4gQCBfNSkgKVxuIyAzMjAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTkwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGwscGVuZCxwKSA9IF81IGluIChQcmltaXRpdmVzLlN0cl9wZXhwciAoXzEsIHJoc19wb3MgMSk6OmwscGVuZCxwKSApXG4jIDMyMTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcl9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHJfdXBfdG9faWYpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNTkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGwscGVuZCxwKSA9IF80IGluXG4gICAgICBsZXQgKHYsXyxfKSA9IF8xIGluXG4gICAgICAoUHJpbWl0aXZlcy5BbGdfcGV4cHIgdjo6bCxwZW5kLHApIClcbiMgMzIyMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwcmludF9leHByX2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICggKFtdLHN0YXJ0X3BvcyAxLF8xKSApXG4jIDMyMzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA1OTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBfMiApXG4jIDMyMzggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncHJpbnRfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjA0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGEscGVuZCxwKSA9IF81IGluIChBc3QuVVBEQVRFICgoXzMscmhzX3BvcyAzKSxhKSxwZW5kLHApIClcbiMgMzI0OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChhLHBlbmQscCkgPSBfNSBpbiAoQXN0LlVQREFURSAoKF8zLHJoc19wb3MgMyksYSkscGVuZCxwKSApXG4jIDMyNTggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2MDggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIChBc3QuQ0ZMT1dMQUJFTCAoXzUsKF8zLHJoc19wb3MgMykpLGVuZF9wb3MgNSxfNikgKVxuIyAzMjY5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwYXQsZXBhdCxfKSA9IF8zIGluXG4gICAgICAoQXN0LkNGTE9XTUlYIChfNCwocGF0LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBlcGF0KSksZW5kX3BvcyA0LCBfNSkgKVxuIyAzMjgwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMyBpblxuICAgICAgKChpZiBfNCB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCkgZWxzZSBBc3QuRElOT0ZGIHApLFxuICAgICAgIGVuZF9wb3MgNCxfNSkgKVxuIyAzMjkyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbGVhbikgaW5cbiAgICBsZXQgXzcgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwLF8sXykgPSBfMyBpblxuICAgICAgaWYgXzYgJiYgXzQgPSBcImFic29sdXRlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxwKSxlbmRfcG9zIDYsXzcpXG4gICAgICBlbHNlIGlmIF82ICYmIF80ID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkscCksZW5kX3BvcyA2LF83KVxuICAgICAgZWxzZSBpZiBfNiAmJiBfNCA9IFwicmVsYXRpdmVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApLGVuZF9wb3MgNixfNylcbiAgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgNCkpIClcbiMgMzMxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlX2NvbnRlbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYyNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChyZXdyaXRlLF8scGVuZCxhbikgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgKHsgQXN0LnJld3JpdGU7IEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kKSksXG4gICAgICBwZW5kLGFuXG4gICAgKVxuIyAzMzI5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDYzNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChtLHBlbmQscCkgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgICBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fY3JlYXRlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzMzQ4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nIFxcXG4nJEFERCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgKVxuIyAzMzU3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDY1MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChtLHBlbmQscCkgPSBfNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSBfMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0IHtBc3QubWl4PUFzdC50b19lcmFzZWRfbWl4dHVyZSBtO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbj1bXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxcbiAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzMzc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY2NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICckREVMIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKSApXG4jIDMzODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjY4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocyxwZW5kLHApID0gXzIgaW4gKEFzdC5TTkFQU0hPVCAoZmFsc2UscykscGVuZCxwKSApXG4jIDMzOTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncHJpbnRfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA2NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAocyxfLF8pID0gXzIgaW4gKEFzdC5TTkFQU0hPVCAoXzMscyksZW5kX3BvcyAzLF80KSApXG4jIDM0MDEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjcwIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICggbGV0IChzLHBlbmQscCkgPSBfMiBpbiAoQXN0LlNUT1AgcyxwZW5kLHApIClcbiMgMzQwOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwcmludF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKGYscGVuZCxwKSA9IF80IGluIGxldCAoYyxfLF8pID0gXzIgaW4gKEFzdC5QUklOVCAoZixjKSxwZW5kLHApIClcbiMgMzQxNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2NzMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYyxwZW5kLHApID0gXzIgaW4gKEFzdC5QUklOVCAoW10sYykscGVuZCxwKSApXG4jIDM0MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjc0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCAoQXN0LlBMT1RFTlRSWSxlbmRfcG9zIDEsXzIpIClcbiMgMzQzMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Jvb2xlYW4pIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjc2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKFxuICAgICAgbGV0IChmaWxlLHBlbmQscCkgPSBfNyBpblxuICAgICAgbGV0IChwYXQscGVuZHAsXykgPSBfMyBpblxuICAgICAgKEFzdC5TUEVDSUVTX09GIChfNCxmaWxlLChwYXQsIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kcCkpLFxuICAgICAgIHBlbmQscCkgKVxuIyAzNDQ1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNjg0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgbGV0ICh2LHBlbmQscCkgPSBfNSBpblxuICAgbGV0IHRrID0gKF8xLHJoc19wb3MgMSkgaW5cbiAgICAoQXN0LkFQUExZKEFsZ19leHByLmNvbnN0IE5ici5vbmUsXG4gICAgICAgICh7QXN0LnJld3JpdGUgPVxuICAgICAgICAgICAgICBBc3QuRWRpdFxuICAgICAgICAgICAgICAgICAge0FzdC5taXg9W107XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuID1cbiAgICAgICAgICAgICAgICAgICAgICBbKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsdiwoQWxnX2V4cHIuVE9LRU5fSUQgXzEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgIDQpIHBlbmQpKSxwZW5kLHApXG4gICApXG4jIDM0NjggXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNjk5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG5leHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgKVxuIyAzNDc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgNzAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgMiBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIFxcXG4gICBleHBlY3RpbmcgJ0lEIDwtIGFsZ19leHByZXNzaW9uJ1wiKSkgKVxuIyAzNDg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdlZmZlY3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcwOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAoXzEpXG4jIDM0OTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0X29yX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZGluKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgIChfMSlcbiMgMzUwMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3Rfb3JfaWRpbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzEzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIF8zIClcbiMgMzUxMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0X29yX2lkaW4pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gKFtlXSxlbmRfcG9zIDIsXzMpIClcbiMgMzUxOCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0X29yX2lkaW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDcxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICggbGV0IChlLHAsYSkgPSBfMSBpbiAoW2VdLHAsYSkgKVxuIyAzNTI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdlZmZlY3Rfb3JfaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzUzNCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDcyMCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzNTQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpZGluKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAoIGxldCAoZSxwLGEpID0gXzEgaW4gKFtlXSxwLGEpIClcbiMgMzU0OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaWRpbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MjMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzU1OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3MjYgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggXzMgKVxuIyAzNTY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BhcnRpYWxfZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IChlLF8sXykgPSAgXzMgaW4gZSxlbmRfcG9zIDYsXzcgKVxuIyAzNTc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnZWZmZWN0KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzI4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMSBpbiAoW2VdLGVuZF9wb3MgMixfMykgKVxuIyAzNTg1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnZWZmZWN0KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MzAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoZSxfLF8pID0gXzEgaW4gbGV0IChsLHBlbmQsYSkgPSBfNCBpbiAoZTo6bCxwZW5kLGEpIClcbiMgMzU5NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA3MzQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlLF8sXykgPSBfMiBpbiBlIClcbiMgMzYwMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDczNiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDEgXCJQcm9ibGVtYXRpYyBlZmZlY3QgbGlzdFwiKSkgKVxuIyAzNjA4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgKCBOb25lIClcbiMgMzYxNSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25icikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgXzQgKVxuIyAzNjI1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJhbGFybSB0YWtlcyBhIG51bWJlciBhcyBhcmd1bWVudFwiKSkgKVxuIyAzNjMyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc0NyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYixwZW5kLHApID0gXzMgaW4gKFNvbWUgYixwZW5kLHApIClcbiMgMzY0MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDc1MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggKE5vbmUsIFBhcnNpbmcuc3ltYm9sX3N0YXJ0X3BvcyAoKSxbXSkgKVxuIyAzNjQ2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NTEgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAzNjUzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc1NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChwcmUsXyxfKSA9IF8yIGluXG4gICAgICBsZXQgKGUsXyxfKSA9IF81IGluXG4gICAgICBsZXQgKHBvc3QsXyxfKSA9IF82IGluXG4gICAgICAoXzEsU29tZSBwcmUsZSxwb3N0KSApXG4jIDM2NjcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc2MSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChlLF8sXykgPSBfNCBpbiBsZXQgKHBvc3QsXyxfKSA9IF81IGluIChfMSxOb25lLGUscG9zdCkgKVxuIyAzNjc3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NjQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAocHJlLF8sXykgPSBfMiBpblxuICAgICAgbGV0IChlLF8sXykgPSBfNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSBfNiBpblxuICAgICAgKF8xLFNvbWUgcHJlLGUscG9zdCkgKVxuIyAzNjkxIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkKSBpblxuICAgIE9iai5yZXByKFxuIyA3NjkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBsZXQgKGUsXyxfKSA9IF80IGluXG4gICAgICAgICAgbGV0IChwb3N0LF8sXykgPSBfNSBpblxuICAgICAgICAgIChfMSxOb25lLGUscG9zdCkgKVxuIyAzNzAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc3NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkIChBc3QuUlVMRShTb21lIChfMSwgcmhzX3BvcyAxKSxfMykpIClcbiMgMzcxMiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNzc4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCBsZXQgKHYsXyxfKSA9IF81IGluIGFkZCAoQXN0LkRFQ0xBUkUgKChfMSxyaHNfcG9zIDEpLHYpKSApXG4jIDM3MjIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdydWxlKSBpblxuICAgIE9iai5yZXByKFxuIyA3NzkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICggYWRkIChBc3QuUlVMRSAoTm9uZSxfMSkpIClcbiMgMzcyOSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhZ2VudF9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGxldCAoYSxfLF8pID0gXzMgaW4gYWRkIChBc3QuU0lHIGEpIClcbiMgMzczNyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fubm90ZWQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc4MiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlXCIpKSApXG4jIDM3NDUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGQgKEFzdC5UT0tFTlNJRyAoXzMscmhzX3BvcyAzKSkgKVxuIyAzNzU0IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA3ODUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0LlBMT1QgdikgKVxuIyAzNzYyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNzg3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDNcbiAgICAgICAgICAgICAgICAgIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIFxcXG5hbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkgKVxuIyAzNzcyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA3OTIgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIGxldCAoaSx2LF8sXykgPSBfMyBpbiBhZGQgKEFzdC5ERUNMQVJFIChpLHYpKSApXG4jIDM3ODAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAnc2VudGVuY2UpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5MyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChpLHYsXyxfKSA9IF8zIGluIGFkZCAoQXN0Lk9CUyAoaSx2KSkgKVxuIyAzNzg4IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2luaXRfZGVjbGFyYXRpb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5NSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggbGV0IChhbGcsaW5pdCkgPSBfMyBpbiBhZGQgKEFzdC5JTklUIChhbGcsaW5pdCkpIClcbiMgMzc5NiBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNzk2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBhZGQgKEFzdC5QRVJUIChfMiwgcmhzX3BvcyAyKSkgKVxuIyAzODAzIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NlbnRlbmNlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhbHVlX2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDc5OCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbHlcIlxuICAgICggYWRkIChBc3QuQ09ORklHICgoXzMscmhzX3BvcyAzKSxfNSkpIClcbiMgMzgxMyBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdzZW50ZW5jZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NlbnRlbmNlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbW9kZWxfYm9keSkgaW5cbiAgICBPYmoucmVwcihcbiMgODAyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoIF8yIClcbiMgMzgyMSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RlbF9ib2R5KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MDMgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgKCBvdXRwdXQgKCkgKVxuIyAzODI3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZGVsX2JvZHkpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbW9kZWxfYm9keSkgaW5cbiAgICBPYmoucmVwcihcbiMgODA3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICggXzIgKVxuIyAzODM1IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgODA5IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJJbmNvcnJlY3QgYmVnaW5uaW5nIG9mIHNlbnRlbmNlICEhIVwiKSkgKVxuIyAzODQyIFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4MTQgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIEFzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKSApXG4jIDM4NTAgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Fubm90ZWQpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbm5vdGVkKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA4MTUgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBsZXQgKHBhdXNlLF8sXykgPSBfNCBpbiBBc3QuUlVOIHBhdXNlIClcbiMgMzg1OSBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYW5ub3RlZCkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdCkgaW5cbiAgICBPYmoucmVwcihcbiMgODE2IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggbGV0IChlZmYsXyxfKSA9IF8yIGluIEFzdC5NT0RJRlkgW2VmZl0gKVxuIyAzODY3IFwiY29yZS9ncmFtbWFyL2twYXJzZXI0Lm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbm5vdGVkKSBpblxuICAgIE9iai5yZXByKFxuIyA4MTcgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAgICAgICAgICAgICAoIEFzdC5RVUlUIClcbiMgMzg3NCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA4MTkgXCJjb3JlL2dyYW1tYXIva3BhcnNlcjQubWx5XCJcbiAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpIClcbiMgMzg4MCBcImNvcmUvZ3JhbW1hci9rcGFyc2VyNC5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbigqIEVudHJ5IG1vZGVsICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IGludGVyYWN0aXZlX2NvbW1hbmQgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2Jvb2xfZXhwciAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG58XVxubGV0IHl5dGFibGVzID1cbiAgeyBQYXJzaW5nLmFjdGlvbnM9eXlhY3Q7XG4gICAgUGFyc2luZy50cmFuc2xfY29uc3Q9eXl0cmFuc2xfY29uc3Q7XG4gICAgUGFyc2luZy50cmFuc2xfYmxvY2s9eXl0cmFuc2xfYmxvY2s7XG4gICAgUGFyc2luZy5saHM9eXlsaHM7XG4gICAgUGFyc2luZy5sZW49eXlsZW47XG4gICAgUGFyc2luZy5kZWZyZWQ9eXlkZWZyZWQ7XG4gICAgUGFyc2luZy5kZ290bz15eWRnb3RvO1xuICAgIFBhcnNpbmcuc2luZGV4PXl5c2luZGV4O1xuICAgIFBhcnNpbmcucmluZGV4PXl5cmluZGV4O1xuICAgIFBhcnNpbmcuZ2luZGV4PXl5Z2luZGV4O1xuICAgIFBhcnNpbmcudGFibGVzaXplPXl5dGFibGVzaXplO1xuICAgIFBhcnNpbmcudGFibGU9eXl0YWJsZTtcbiAgICBQYXJzaW5nLmNoZWNrPXl5Y2hlY2s7XG4gICAgUGFyc2luZy5lcnJvcl9mdW5jdGlvbj1wYXJzZV9lcnJvcjtcbiAgICBQYXJzaW5nLm5hbWVzX2NvbnN0PXl5bmFtZXNfY29uc3Q7XG4gICAgUGFyc2luZy5uYW1lc19ibG9jaz15eW5hbWVzX2Jsb2NrIH1cbmxldCBtb2RlbCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMSBsZXhmdW4gbGV4YnVmIDogQXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdClcbmxldCBpbnRlcmFjdGl2ZV9jb21tYW5kIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAyIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZClcbmxldCBzdGFuZGFsb25lX2VmZmVjdF9saXN0IChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyAzIGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QubW9kaWZfZXhwciBsaXN0KVxubGV0IHN0YW5kYWxvbmVfYm9vbF9leHByIChsZXhmdW4gOiBMZXhpbmcubGV4YnVmIC0+IHRva2VuKSAobGV4YnVmIDogTGV4aW5nLmxleGJ1ZikgPVxuICAgKFBhcnNpbmcueXlwYXJzZSB5eXRhYmxlcyA0IGxleGZ1biBsZXhidWYgOiAoQXN0Lm1peHR1cmUsc3RyaW5nKSBBbGdfZXhwci5ib29sIExvYy5hbm5vdGVkKVxuIiwiLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovXG4vKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqL1xuLyogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbi8qIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqL1xuLyogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqL1xuLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cblxuJXtcbiAgbGV0IGFkZF9wb3MgZSB4ID1cbiAgICAoeCxcbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnJoc19lbmRfcG9zIGUpKVxuICBsZXQgcmhzX3BvcyBpID1cbiAgICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiAgbGV0IGVuZF9wb3MgPSBQYXJzaW5nLnJoc19lbmRfcG9zXG4gIGxldCBzdGFydF9wb3MgPSBQYXJzaW5nLnJoc19zdGFydF9wb3NcblxuICBsZXQgaW50ZXJuYWxfbWVtb3J5ID0gcmVmIFtdXG4gIGxldCBhZGQgeCA9IGludGVybmFsX21lbW9yeSA6PSB4IDo6ICFpbnRlcm5hbF9tZW1vcnlcbiAgbGV0IG91dHB1dCAoKSA9XG4gICAgbGV0IG8gPSBMaXN0LnJldiAhaW50ZXJuYWxfbWVtb3J5IGluIGxldCAoKSA9IGludGVybmFsX21lbW9yeSA6PSBbXSBpbiBvXG4lfVxuXG4ldG9rZW4gRU9GIENPTU1BIERPVCBPUF9QQVIgQ0xfUEFSIE9QX0NVUiBDTF9DVVIgT1BfQlJBIENMX0JSQSBBVCBTRU1JQ09MT05cbiV0b2tlbiBQTFVTIE1JTlVTIE1VTFQgRElWIE1PRCBNQVggTUlOIFNJTlVTIENPU0lOVVMgVEFOIFBPVyBBQlMgU1FSVCBFWFBPTkVOVFxuJXRva2VuIExPRyBPUiBBTkQgTk9UIFRIRU4gRUxTRSBESUZGIEVRVUFMIFNNQUxMRVIgR1JFQVRFUiBUUlVFIEZBTFNFIElORklOSVRZXG4ldG9rZW4gU0hBUlAgVU5ERVJTQ09SRSBQSVBFIFJBUiBMUkFSIExBUiBFTUFYIFRNQVggQ1BVVElNRSBUSU1FIEVWRU5UIE5VTExfRVZFTlRcbiV0b2tlbiBDT0xPTiBORVdMSU5FIEJBQ0tTTEFTSCBTSUdOQVRVUkUgVE9LRU4gSU5JVCBPQlMgUExPVCBQRVJUIENPTkZJRyBBUFBMWVxuJXRva2VuIERFTEVURSBJTlRSTyBTTkFQU0hPVCBTVE9QIEZMVVggVFJBQ0sgQVNTSUdOIFBSSU5URiBQTE9URU5UUlkgU1BFQ0lFU19PRlxuJXRva2VuIERPIFJFUEVBVCBBTEFSTSBSVU4gTEVUXG4ldG9rZW4gPGludD4gSU5UXG4ldG9rZW4gPGZsb2F0PiBGTE9BVFxuJXRva2VuIDxzdHJpbmc+IElEIExBQkVMIFNUUklOR1xuJXRva2VuIDxzdHJpbmc+IFNQQUNFIENPTU1FTlRcblxuJXN0YXJ0IG1vZGVsXG4ldHlwZSA8QXN0LnBhcnNpbmdfaW5zdHJ1Y3Rpb24gbGlzdD4gbW9kZWxcblxuJXN0YXJ0IGludGVyYWN0aXZlX2NvbW1hbmRcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZD4gaW50ZXJhY3RpdmVfY29tbWFuZFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuJXR5cGVcbiAgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3Q+IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcblxuJXN0YXJ0IHN0YW5kYWxvbmVfYm9vbF9leHByXG4ldHlwZSA8KEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZD4gc3RhbmRhbG9uZV9ib29sX2V4cHJcblxuJSVcblxuYW5ub3RlZDpcbiAgfCB7IFtdIH1cbiAgfCBORVdMSU5FIGFubm90ZWQgeyBcIlxcblwiOjokMiB9XG4gIHwgU1BBQ0UgYW5ub3RlZCB7ICQxOjokMiB9XG4gIHwgQ09NTUVOVCBhbm5vdGVkIHsgJDE6OiQyIH1cbiAgO1xuXG5uYnI6XG4gIHwgSU5GSU5JVFkgeyBOYnIuRiBpbmZpbml0eSB9XG4gIHwgRkxPQVQgeyBOYnIuRiAkMSB9XG4gIHwgSU5UIHsgTmJyLkkgJDEgfVxuICA7XG5cbmxpbmtfc3RhdGU6XG4gIHwgRE9UIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfRlJFRSB9XG4gIHwgSU5UIHsgYWRkX3BvcyAxIChMS2FwcGEuTE5LX1ZBTFVFICgkMSwoKSkpIH1cbiAgfCBVTkRFUlNDT1JFIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfU09NRSB9XG4gIHwgSUQgYW5ub3RlZCBET1QgYW5ub3RlZCBJRFxuICAgIHsgYWRkX3BvcyA1IChMS2FwcGEuTE5LX1RZUEUgKCgkMSxyaHNfcG9zIDEpLCgkNSxyaHNfcG9zIDUpKSkgfVxuICB8IFNIQVJQIHsgYWRkX3BvcyAxIExLYXBwYS5MTktfQU5ZIH1cbiAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcImluY29tcGxldGUgbGluayBzdGF0ZVwiKSkgfVxuICA7XG5cbmxpbmtfc3RhdGVzOlxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCB7IFskMV0gfVxuICB8IGxpbmtfc3RhdGUgYW5ub3RlZCBsaW5rX3N0YXRlcyB7ICQxIDo6ICQzIH1cbiAgfCBsaW5rX3N0YXRlIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBsaW5rX3N0YXRlcyB7ICQxIDo6ICQ1IH1cbiAgO1xuXG5saW5rX21vZGlmOlxuICB8IHsgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgRE9UIGFubm90ZWQgeyBTb21lIE5vbmUgfVxuICB8IERJViBhbm5vdGVkIElOVCBhbm5vdGVkIHsgU29tZSAoU29tZSAoJDMsIHJoc19wb3MgMykpIH1cbiAgfCBESVYgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgfVxuICA7XG5cbmludGVybmFsX3N0YXRlOlxuICB8IElEIHsgYWRkX3BvcyAxIChTb21lICQxKSB9XG4gIHwgU0hBUlAgeyBhZGRfcG9zIDEgTm9uZSB9XG4gIDtcblxuaW50ZXJuYWxfc3RhdGVzOlxuICB8IGludGVybmFsX3N0YXRlIGFubm90ZWQgeyBbJDFdIH1cbiAgfCBpbnRlcm5hbF9zdGF0ZSBhbm5vdGVkIGludGVybmFsX3N0YXRlcyB7ICQxIDo6ICQzIH1cbiAgfCBpbnRlcm5hbF9zdGF0ZSBhbm5vdGVkIENPTU1BIGFubm90ZWQgaW50ZXJuYWxfc3RhdGVzIHsgJDEgOjogJDUgfVxuICA7XG5cbmludGVybmFsX21vZGlmOlxuICB8IHsgTm9uZSB9XG4gIHwgRElWIGFubm90ZWQgSUQgYW5ub3RlZCB7IFNvbWUgKCQzLCByaHNfcG9zIDMpIH1cbiAgfCBESVYgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiaW5jb21wbGV0ZSBsaW5rIG1vZGlmaWNhdGlvblwiKSkgfVxuICA7XG5cbnNpdGVfbGluazpcbiAgfCBhbm5vdGVkIGxpbmtfc3RhdGVzIGxpbmtfbW9kaWYgQ0xfQlJBIHsgKCQyLCAkMykgfVxuICB8IGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKFwiaW52YWxpZCBsaW5raW5nIHN0YXRlIG9yIG1pc3NpbmcgJ10nXCIscmhzX3BvcyAyKSkgfVxuICA7XG5cbnNpdGVfaW50ZXJuYWw6XG4gIHwgaW50ZXJuYWxfc3RhdGVzIGludGVybmFsX21vZGlmIENMX0NVUiB7ICgkMSwgJDIpIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoXCJpbnZhbGlkIGludGVybmFsIHN0YXRlIG9yIG1pc3NpbmcgJ30nXCIscmhzX3BvcyAzKSkgfVxuICA7XG5cbmNvdW50ZXJfbW9kaWY6XG4gIHwgUExVUyBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKCQ1LCByaHNfcG9zIDUpIH1cbiAgfCBQTFVTIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBNSU5VUyBhbm5vdGVkIElOVCB7ICgtICQ3LCByaHNfcG9zIDcpIH1cbiAgfCBNSU5VUyBhbm5vdGVkIEVRVUFMIGFubm90ZWQgSU5UIHsgKC0gJDUsIHJoc19wb3MgNSkgfVxuICA7XG5cbmNvdW50ZXJfdGVzdDpcbiAgfCBFUVVBTCBhbm5vdGVkIElOVCB7IChBc3QuQ0VRICQzLHJoc19wb3MgMykgfVxuICB8IEdSRUFURVIgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIElOVCB7IChBc3QuQ0dURSAkNSxyaHNfcG9zIDUpIH1cbiAgfCBTTUFMTEVSIGFubm90ZWQgRVFVQUwgYW5ub3RlZCBJTlQgeyAoQXN0LkNMVEUgJDUscmhzX3BvcyA1KSB9XG4gIHwgRVFVQUwgYW5ub3RlZCBJRCB7IChBc3QuQ1ZBUiAkMyxyaHNfcG9zIDMpIH1cbiAgO1xuXG5zaXRlX2NvdW50ZXI6XG4gIHwgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkIHsgKE5vbmUsICQxKSB9XG4gIHwgY291bnRlcl90ZXN0IGFubm90ZWQgQ0xfQ1VSIGFubm90ZWQgeyAoU29tZSAkMSwgTG9jLmFubm90X3dpdGhfZHVtbXkgMCkgfVxuICB8IGNvdW50ZXJfdGVzdCBhbm5vdGVkIERJViBhbm5vdGVkIGNvdW50ZXJfbW9kaWYgYW5ub3RlZCBDTF9DVVIgYW5ub3RlZFxuICAgIHsgKFNvbWUgJDEsJDUpIH1cbiAgO1xuXG5zaXRlX2NvdW50ZXJfc2lnOlxuICAgIHwgRVFVQUwgYW5ub3RlZCBJTlQgIGFubm90ZWQgRElWIGFubm90ZWQgY291bnRlcl9tb2RpZiBhbm5vdGVkIENMX0NVUiBhbm5vdGVkXG4gICAgICB7IFNvbWUgKFNvbWUgKCQzKSxyaHNfcG9zIDMpLG1hdGNoICQ3IHdpdGggKGEsbG9jKSAtPiBTb21lIChTb21lIChhKSxsb2MpIH1cbiAgICB8IEVRVUFMIGFubm90ZWQgSU5UICBhbm5vdGVkIENMX0NVUiBhbm5vdGVkXG4gICAgICAgIHsgU29tZSAoU29tZSAoJDMpLHJoc19wb3MgMyksTm9uZSB9XG4gICAgO1xuXG4gIHNpdGVfc2lnOlxuICAgIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICAgIGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgICB7IGxldCAocG9ydF9pbnQsIHBvcnRfaW50X21vZCkgPSAkNSBpblxuICAgICAgICBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkOCBpblxuICAgICAgICBBc3QuUG9ydFxuICAgICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50O1xuICAgICAgICAgICAgQXN0LnBvcnRfbGluazsgQXN0LnBvcnRfaW50X21vZDsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2xpbmssIHBvcnRfbGlua19tb2QpID0gJDQgaW5cbiAgICAgICAgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICAgIEFzdC5wb3J0X2xpbms7IEFzdC5wb3J0X2ludF9tb2Q9Tm9uZTsgQXN0LnBvcnRfbGlua19tb2Q7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWRcbiAgICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICAgIEFzdC5Qb3J0XG4gICAgICAgICAgeyBBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpO0FzdC5wb3J0X2xpbms9W107XG4gICAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2NvdW50ZXJfc2lnXG4gICAgICB7IGxldCAoY291bnRlcl9zaWdfbWluLGNvdW50ZXJfc2lnX21heCkgPSAkNSBpblxuICAgICAgICBBc3QuQ291bnRlclxuICAgICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWU9KCQxLHJoc19wb3MgMSk7XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluO1xuICAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heDtcbiAgICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0PVxuICAgICAgICAgICAgICAgIChtYXRjaCBjb3VudGVyX3NpZ19taW4gd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoTm9uZSwgXyktPiAwXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgKFNvbWUgaSxfKSAtPiBpICk7XG4gICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZT1Bc3QuRnJvbV9vcmlnaW5hbF9hc3Q7XG4gICAgICAgICAgICB9IH1cbiAgICB8IElEIGFubm90ZWRcbiAgICAgIHsgQXN0LlBvcnRcbiAgICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTsgQXN0LnBvcnRfaW50PVtdO1xuICAgICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgICA7XG5cbnNpdGU6XG4gIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9pbnRlcm5hbCBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfbGluaywgcG9ydF9saW5rX21vZCkgPSAkNCBpblxuICAgICAgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ4IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9DVVIgYW5ub3RlZCBzaXRlX2ludGVybmFsIGFubm90ZWQgT1BfQlJBIHNpdGVfbGluayBhbm5vdGVkXG4gICAgeyBsZXQgKHBvcnRfaW50LCBwb3J0X2ludF9tb2QpID0gJDUgaW5cbiAgICAgIGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ4IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludDtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kOyBBc3QucG9ydF9saW5rX21vZDsgfSB9XG4gIHwgSUQgYW5ub3RlZCBPUF9CUkEgc2l0ZV9saW5rIGFubm90ZWRcbiAgICB7IGxldCAocG9ydF9saW5rLCBwb3J0X2xpbmtfbW9kKSA9ICQ0IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1bXTtcbiAgICAgICAgICBBc3QucG9ydF9saW5rOyBBc3QucG9ydF9pbnRfbW9kPU5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kOyB9IH1cbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIHNpdGVfaW50ZXJuYWwgYW5ub3RlZFxuICAgIHsgbGV0IChwb3J0X2ludCwgcG9ydF9pbnRfbW9kKSA9ICQ1IGluXG4gICAgICBBc3QuUG9ydFxuICAgICAgICB7IEFzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7QXN0LnBvcnRfbGluaz1bXTtcbiAgICAgICAgICBBc3QucG9ydF9pbnQ7IEFzdC5wb3J0X2ludF9tb2Q7IEFzdC5wb3J0X2xpbmtfbW9kPU5vbmU7IH0gfVxuICB8IElEIGFubm90ZWQgT1BfQ1VSIGFubm90ZWQgc2l0ZV9jb3VudGVyXG4gICAgeyBsZXQgKGNvdW50ZXJfdGVzdCxjb3VudGVyX2RlbHRhKSA9ICQ1IGluXG4gICAgICBBc3QuQ291bnRlclxuICAgICAgICB7IEFzdC5jb3VudGVyX25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5jb3VudGVyX3Rlc3Q7IEFzdC5jb3VudGVyX2RlbHRhIH0gfVxuICB8IElEIGFubm90ZWRcbiAgICB7IEFzdC5Qb3J0XG4gICAgICAgIHsgQXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTtBc3QucG9ydF9saW5rPVtdOyBBc3QucG9ydF9pbnQ9W107XG4gICAgICAgICAgQXN0LnBvcnRfaW50X21vZD1Ob25lOyBBc3QucG9ydF9saW5rX21vZD1Ob25lOyB9IH1cbiAgO1xuXG5pbnRlcmZhY2U6XG4gIHwgeyBbXSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMSAoXCJNYWxmb3JtZWQgc2l0ZSBleHByZXNzaW9uXCIpKSkgfVxuICB8IHNpdGUgaW50ZXJmYWNlIHsgJDEgOjogJDIgfVxuICB8IHNpdGUgQ09NTUEgYW5ub3RlZCBpbnRlcmZhY2UgeyAkMSA6OiAkNCB9XG4gIDtcblxuaW50ZXJmYWNlX3NpZzpcbiAgICB8IHsgW10gfVxuICAgIHwgZXJyb3JcbiAgICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIDEgKFwiTWFsZm9ybWVkIHNpdGUgZXhwcmVzc2lvblwiKSkpIH1cbiAgICB8IHNpdGVfc2lnIGludGVyZmFjZV9zaWcgeyAkMSA6OiAkMiB9XG4gICAgfCBzaXRlX3NpZyBDT01NQSBhbm5vdGVkIGludGVyZmFjZV9zaWcgeyAkMSA6OiAkNCB9XG4gICAgO1xuXG5hZ2VudF9tb2RpZjpcbiAgfCBhbm5vdGVkIHsgQXN0Lk5vTW9kLHN0YXJ0X3BvcyAxLCQxIH1cbiAgfCBhbm5vdGVkIFBMVVMgYW5ub3RlZCB7IEFzdC5DcmVhdGUsZW5kX3BvcyAyLCQzIH1cbiAgfCBhbm5vdGVkIE1JTlVTIGFubm90ZWQgeyBBc3QuRXJhc2UsZW5kX3BvcyAyLCQzIH1cbiAgO1xuXG5hZ2VudDpcbiAgfCBET1QgYW5ub3RlZCB7IChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSwkMikgfVxuICB8IElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkNyBpblxuICAgICAgKEFzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDUsIG1vZGlmKSxwZW5kLGFuKSB9XG4gIHwgSUQgYW5ub3RlZCBDT0xPTiBhbm5vdGVkIElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkMTEgaW5cbiAgICAgIChBc3QuUHJlc2VudCAoKCQ1LHJoc19wb3MgNSksICQ5LCBtb2RpZikscGVuZCxhbikgfVxuICB8IElEIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgO1xuXG5hZ2VudF9zaWc6XG4gICAgfCBET1QgYW5ub3RlZCB7IChBc3QuQWJzZW50IChyaHNfcG9zIDEpLGVuZF9wb3MgMSwkMikgfVxuICAgIHwgSUQgYW5ub3RlZCBPUF9QQVIgYW5ub3RlZCBpbnRlcmZhY2Vfc2lnIENMX1BBUiBhZ2VudF9tb2RpZlxuICAgICAgeyBsZXQgbW9kaWYscGVuZCxhbiA9ICQ3IGluXG4gICAgICAgIChBc3QuUHJlc2VudCAoKCQxLHJoc19wb3MgMSksICQ1LCBtb2RpZikscGVuZCxhbikgfVxuICAgIHwgSUQgYW5ub3RlZCBDT0xPTiBhbm5vdGVkIElEIGFubm90ZWQgT1BfUEFSIGFubm90ZWQgaW50ZXJmYWNlX3NpZyBDTF9QQVIgYWdlbnRfbW9kaWZcbiAgICAgIHsgbGV0IG1vZGlmLHBlbmQsYW4gPSAkMTEgaW5cbiAgICAgICAgKEFzdC5QcmVzZW50ICgoJDUscmhzX3BvcyA1KSwgJDksIG1vZGlmKSxwZW5kLGFuKSB9XG4gICAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDFeXCInXCIpKSkgfVxuICAgIDtcbnBhdHRlcm46XG4gIHwgYWdlbnQgQ09NTUEgYW5ub3RlZCBwYXR0ZXJuXG57IGxldCAoeCxfLF8pID0gJDEgaW5cbiAgbWF0Y2ggJDQgd2l0aFxuICB8ICh5Ojp6LHBlbmQscCkgLT4gKCh4Ojp5KTo6eixwZW5kLHApXG4gIHwgKFtdLF8sXykgLT5cbiAgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgICAgICAgKGFkZF9wb3MgNCAoXCJhc3NlcnRpb24gZmFpbHVyZSBpbiBwYXR0ZXJuIHBhcnNpbmdcIikpKSB9XG4gIHwgYWdlbnQgQkFDS1NMQVNIIGFubm90ZWQgcGF0dGVyblxueyBsZXQgKHgsXyxfKSA9ICQxIGluIGxldCAoeSxwZW5kLHApID0gJDQgaW4gKFt4XTo6eSxwZW5kLHApIH1cbiAgfCBhZ2VudCB7IGxldCAoeCxwZW5kLHApID0gJDEgaW4gKFtbeF1dLHBlbmQscCkgfVxuICA7XG5cbmNvbnN0YW50OlxuICB8IG5iciB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQ09OU1QgJDEpIH1cbiAgfCBFTUFYIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkgfVxuICB8IFRNQVggeyBhZGRfcG9zIDEgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKSB9XG4gIHwgQ1BVVElNRSB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5DUFVUSU1FKSkgfVxuICA7XG5cbnZhcmlhYmxlOlxuICB8IFBJUEUgYW5ub3RlZCBJRCBhbm5vdGVkIFBJUEUgeyBhZGRfcG9zIDUgKEFsZ19leHByLlRPS0VOX0lEICgkMykpIH1cbiAgfCBQSVBFIGFubm90ZWQgcGF0dGVybiBQSVBFXG4gICAgeyBsZXQgKHAsXyxfKSA9ICQzIGluIGFkZF9wb3MgNCAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgcCkgfVxuICB8IElEIHsgYWRkX3BvcyAxIChBbGdfZXhwci5BTEdfVkFSICgkMSkpIH1cbiAgfCBMQUJFTCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuQUxHX1ZBUiAoJDEpKSB9XG4gIHwgVElNRSB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5USU1FX1ZBUikpIH1cbiAgfCBFVkVOVCB7IGFkZF9wb3MgMSAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSB9XG4gIHwgTlVMTF9FVkVOVFxuICAgIHsgYWRkX3BvcyAxIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkgfVxuICA7XG5cbnNtYWxsX2FsZ19leHByOlxuICB8IE9QX1BBUiBhbm5vdGVkIGFsZ19leHByIENMX1BBUiB7IGxldCAoeCxfLF8pID0gJDMgaW4geCB9XG4gIHwgY29uc3RhbnQgeyAkMSB9XG4gIHwgdmFyaWFibGUgeyAkMSB9XG4gIHwgTUFYIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyA1IChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1BWCwkMywkNSkpIH1cbiAgfCBNSU4gYW5ub3RlZCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDUgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOLCQzLCQ1KSkgfVxuICB8IEVYUE9ORU5UIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCwkMykpIH1cbiAgfCBTSU5VUyBhbm5vdGVkIHNtYWxsX2FsZ19leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUywkMykpIH1cbiAgfCBDT1NJTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkNPU0lOVVMsJDMpKSB9XG4gIHwgVEFOIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTiwkMykpIH1cbiAgfCBBQlMgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULCQzKSkgfVxuICB8IFNRUlQgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuU1FSVCwkMykpIH1cbiAgfCBMT0cgYW5ub3RlZCBzbWFsbF9hbGdfZXhwclxuICAgIHsgYWRkX3BvcyAzIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLCQzKSkgfVxuICB8IE1JTlVTIGFubm90ZWQgc21hbGxfYWxnX2V4cHJcbiAgICB7IGFkZF9wb3MgMyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUywkMykpIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19tb2Q6XG4gIHwgc21hbGxfYWxnX2V4cHIgYW5ub3RlZCB7ICgkMSxlbmRfcG9zIDEsJDIpIH1cbiAgfCBzbWFsbF9hbGdfZXhwciBhbm5vdGVkIFBPVyBhbm5vdGVkIGFsZ19leHByX3VwX3RvX21vZFxuICAgIHsgbGV0ICh4LHkseikgPSAkNSBpblxuICAgICAgKGFkZF9wb3MgNCAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csJDEseCkpLHkseikgfVxuICA7XG5cbmFsZ19leHByX3VwX3RvX3Byb2Q6XG4gIHwgYWxnX2V4cHJfdXBfdG9fbW9kIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX3Byb2QgTU9EIGFubm90ZWQgYWxnX2V4cHJfdXBfdG9fbW9kXG4gICAgeyBsZXQgKHkscGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh4LF8sXykgPSAkMSBpblxuICAgICAgKChBbGdfZXhwci5CSU5fQUxHX09QIChPcGVyYXRvci5NT0RVTE8seCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cbiAgO1xuXG5hbGdfZXhwcl91cF90b19zdW06XG4gIHwgYWxnX2V4cHJfdXBfdG9fcHJvZCB7ICQxIH1cbiAgfCBhbGdfZXhwcl91cF90b19zdW0gTVVMVCBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3Byb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTVVMVCx4LHkpLFxuICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIERJViBhbm5vdGVkIGFsZ19leHByX3VwX3RvX3Byb2RcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuRElWLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYWxnX2V4cHJfdXBfdG9faWY6XG4gIHwgYWxnX2V4cHJfdXBfdG9fc3VtIHsgJDEgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIFBMVVMgYW5ub3RlZCBhbGdfZXhwcl91cF90b19zdW1cbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgTUlOVVMgYW5ub3RlZCBhbGdfZXhwcl91cF90b19zdW1cbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMseCx5KSxcbiAgICAgICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBlbmQpLFxuICAgICAgIHBlbmQsYW4pIH1cblxuYWxnX2V4cHI6XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgeyAkMSB9XG4gIHwgYm9vbF9leHByIFRIRU4gYW5ub3RlZCBhbGdfZXhwciBFTFNFIGFubm90ZWQgc21hbGxfYWxnX2V4cHIgYW5ub3RlZFxuICAgIHsgbGV0IChpLF8sXykgPSAkMSBpblxuICAgICAgbGV0ICh0LF8sXykgPSAkNCBpblxuICAoKEFsZ19leHByLklGKGksdCwkNyksXG4gICAgTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIChlbmRfcG9zIDcpKSxlbmRfcG9zIDcsJDgpIH1cbiAgO1xuXG5ib29sZWFuOlxuICB8IFRSVUUgeyB0cnVlIH1cbiAgfCBGQUxTRSB7IGZhbHNlIH1cbiAgO1xuXG5zbWFsbF9ib29sX2V4cHI6XG4gIHwgT1BfUEFSIGFubm90ZWQgYm9vbF9leHByIENMX1BBUiB7IGxldCAoeCxfLF8pID0gJDMgaW4geCB9XG4gIHwgVFJVRSB7IGFkZF9wb3MgMSBBbGdfZXhwci5UUlVFIH1cbiAgfCBGQUxTRSB7IGFkZF9wb3MgMSBBbGdfZXhwci5GQUxTRSB9XG4gIHwgTk9UIGFubm90ZWQgc21hbGxfYm9vbF9leHByXG4gICAgeyBhZGRfcG9zIDMgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULCQzKSkgfVxuICA7XG5cbmJvb2xfZXhwcl9jb21wOlxuICB8IHNtYWxsX2Jvb2xfZXhwciBhbm5vdGVkIHsgKCQxLGVuZF9wb3MgMSwgJDIpIH1cbiAgfCBhbGdfZXhwcl91cF90b19pZiBHUkVBVEVSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuR1JFQVRFUix4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIFNNQUxMRVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIHwgYWxnX2V4cHJfdXBfdG9faWYgRVFVQUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5FUVVBTCx4LHkpLFxuICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMSkgcGVuZCksXG4gICAgICAgcGVuZCxhbikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIERJRkYgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYm9vbF9leHByX25vX29yOlxuICB8IGJvb2xfZXhwcl9jb21wIHsgJDEgfVxuICB8IGJvb2xfZXhwcl9jb21wIEFORCBhbm5vdGVkIGJvb2xfZXhwcl9ub19vclxuICAgIHsgbGV0ICh5LHBlbmQsYW4pID0gJDQgaW5cbiAgICAgIGxldCAoeCxfLF8pID0gJDEgaW5cbiAgICAgICgoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuQU5ELHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuYm9vbF9leHByOlxuICB8IGJvb2xfZXhwcl9ub19vciB7ICQxIH1cbiAgfCBib29sX2V4cHJfbm9fb3IgT1IgYW5ub3RlZCBib29sX2V4cHJcbiAgICB7IGxldCAoeSxwZW5kLGFuKSA9ICQ0IGluXG4gICAgICBsZXQgKHgsXyxfKSA9ICQxIGluXG4gICAgICAoKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLHgseSksXG4gICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAxKSBwZW5kKSxcbiAgICAgICBwZW5kLGFuKSB9XG4gIDtcblxuc3RhbmRhbG9uZV9ib29sX2V4cHI6XG4gIHwgYW5ub3RlZCBib29sX2V4cHIgRU9GIHsgbGV0ICh4LF8sXykgPSAkMiBpbiB4IH1cbiAgfCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDIgXCJQcm9ibGVtYXRpYyBib29sZWFuIGV4cHJlc3Npb25cIikpIH1cbiAgO1xuXG5hcnJvdzpcbiAgfCBSQVIge2ZhbHNlfVxuICB8IExSQVIge3RydWV9XG4gIDtcblxuc3VtX3Rva2VuOlxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgSUQgYW5ub3RlZCB7IFsoJDEsKCQzLHJoc19wb3MgMykpXSxlbmRfcG9zIDMsJDQgfVxuICB8IHNtYWxsX2FsZ19leHByIGFubm90ZWQgSUQgYW5ub3RlZCBDT01NQSBhbm5vdGVkIHN1bV90b2tlblxuICAgIHsgbGV0IChsLHBlbmQsYW4pID0gJDcgaW4gKCQxLCgkMyxyaHNfcG9zIDMpKSA6OiBsLHBlbmQsYW4gfVxuICA7XG5cbnJ1bGVfc2lkZTpcbiAgfCBwYXR0ZXJuIHsgbGV0IChwLHBlbmQsYW4pID0gJDEgaW4gKHAsW10scGVuZCxhbikgfVxuICB8IHBhdHRlcm4gUElQRSBhbm5vdGVkIHN1bV90b2tlblxuICAgIHsgbGV0IChwLF8sXykgPSAkMSBpblxuICAgICAgbGV0ICh0LHBlbmQsYW4pID0gJDQgaW4gKHAsIHQsIHBlbmQsIGFuKSB9XG4gIHwgUElQRSBhbm5vdGVkIHN1bV90b2tlbiB7IGxldCAodCxwZW5kLGFuKSA9ICQzIGluIChbXSwgdCwgcGVuZCwgYW4pIH1cbiAgfCBwYXR0ZXJuIFBJUEUgYW5ub3RlZCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdChhZGRfcG9zIDQgXCJNYWxmb3JtZWQgdG9rZW4gZXhwcmVzc2lvbiwgSSB3YXMgZXhwZWN0aW5nIGFfMCB0XzAsIC4uLiBcXFxuLCBhX24gdF9uIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSB9XG4gIHwgUElQRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0KGFkZF9wb3MgMyBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCwgLi4uIFxcXG4sIGFfbiB0X24gd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpIH1cbiAgO1xuXG5ydWxlX2NvbnRlbnQ6XG4gIHwgcnVsZV9zaWRlIGFycm93IGFubm90ZWQgcnVsZV9zaWRlXG4gICAgeyBsZXQgKGxocyxybV90b2tlbixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocmhzLGFkZF90b2tlbixwZW5kLGFuKSA9ICQ0IGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM7IEFzdC5hZGRfdG9rZW59LCQyLHBlbmQsYW4pIH1cbiAgfCBydWxlX3NpZGUgYXJyb3cgYW5ub3RlZFxuICAgIHsgbGV0IChsaHMscm1fdG9rZW4sXyxfKSA9ICQxIGluXG4gICAgICAoQXN0LkFycm93IHtBc3QubGhzOyBBc3Qucm1fdG9rZW47IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW49W119LCQyLGVuZF9wb3MgMiwkMykgfVxuICB8IGFycm93IGFubm90ZWQgcnVsZV9zaWRlXG4gICAgeyBsZXQgKHJocyxhZGRfdG9rZW4scGVuZCxhbikgPSAkMyBpblxuICAgICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuPVtdOyBBc3QucmhzOyBBc3QuYWRkX3Rva2VufSwkMSxwZW5kLGFuKSB9XG4gIHwgcnVsZV9zaWRlXG4gICAgeyBsZXQgKG1peCxkZWx0YV90b2tlbixwZW5kLGFuKSA9ICQxIGluXG4gICAgICAoQXN0LkVkaXQge0FzdC5taXg7IEFzdC5kZWx0YV90b2tlbn0sZmFsc2UscGVuZCxhbikgfVxuICA7XG5cbmFsZ193aXRoX3JhZGl1czpcbiAgfCBhbGdfZXhwciB7IGxldCAoeCxfLF8pID0gJDEgaW4gKHgsTm9uZSkgfVxuICB8IGFsZ19leHByIENPTE9OIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoeCxfLF8pID0gJDEgaW4gbGV0ICh5LF8sXykgPSAkNCBpbiAoeCwgU29tZSB5KSB9XG4gIDtcblxucmF0ZTpcbiAgfCBPUF9DVVIgYW5ub3RlZCBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIGFubm90ZWQgYWxnX2V4cHJcbiAgICB7IGxldCAoYixwZW5kLGFuKSA9ICQ2IGluIChiLFNvbWUgJDMscGVuZCxhbikgfVxuICB8IGFsZ19leHByIE9QX0NVUiBhbm5vdGVkIGFsZ193aXRoX3JhZGl1cyBDTF9DVVIgYW5ub3RlZFxuICAgIHsgbGV0ICh4LF8sXykgPSAkMSBpbiAoeCxTb21lICQ0LGVuZF9wb3MgNSwkNikgfVxuICB8IGFsZ19leHByIHsgbGV0IChhLHBlbmQsYW4pID0gJDEgaW4gKGEsTm9uZSxwZW5kLGFuKSB9XG4gIDtcblxuYmlyYXRlOlxuICB8IEFUIGFubm90ZWQgcmF0ZSB7IGxldCAoazIsazEscGVuZCxhbikgPSAkMyBpbiAoazIsazEsTm9uZSxOb25lLHBlbmQsYW4pIH1cbiAgfCBBVCBhbm5vdGVkIHJhdGUgQ09NTUEgYW5ub3RlZCByYXRlXG4gICAgeyBsZXQgKGsyLGsxLF8sXykgPSAkMyBpblxuICAgICAgbGV0IChrYmFjayxrYmFjazEscGVuZCxhbikgPSAkNiBpblxuICAgICAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxLHBlbmQsYW4pIH1cbiAgO1xuXG5ydWxlOlxuICB8IHJ1bGVfY29udGVudCBiaXJhdGVcbiAgICB7IGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4scG9zX2VuZCxfYW5ub3QpID0gJDIgaW5cbiAgICAgIGxldCAocmV3cml0ZSxiaWRpcmVjdGlvbmFsLF8sXykgPSAkMSBpblxuICAgICAgKHtcbiAgICAgICAgQXN0LnJld3JpdGU7QXN0LmJpZGlyZWN0aW9uYWw7XG4gICAgICAgIEFzdC5rX2RlZjsgQXN0LmtfdW47IEFzdC5rX29wOyBBc3Qua19vcF91bjtcbiAgICAgIH0sTG9jLm9mX3BvcyAoc3RhcnRfcG9zIDEpIHBvc19lbmQpIH1cbiAgfCBydWxlX2NvbnRlbnQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAyIFwicnVsZSByYXRlIGV4cGVjdGVkXCIpKSB9XG4gIDtcblxudmFyaWFibGVfZGVjbGFyYXRpb246XG4gIHwgTEFCRUwgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixwZW5kLGFuKSA9ICQzIGluICgoJDEscmhzX3BvcyAxKSx2LHBlbmQsYW4pIH1cbiAgfCBJRCBhbm5vdGVkIGFsZ19leHByIHsgbGV0ICh2LHBlbmQsYW4pID0gJDMgaW4gKCgkMSxyaHNfcG9zIDEpLHYscGVuZCxhbikgfVxuICB8IExBQkVMIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpIH1cbiAgfCBJRCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDMgKFwiSWxsZWdhbCBkZWZpbml0aW9uIG9mIHZhcmlhYmxlICdcIl4kMV5cIidcIikpKSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIChcImxhYmVsIGV4cGVjdGVkXCIpKSkgfVxuICA7XG5cbmlkX2xpc3Q6XG4gIHwgSUQgYW5ub3RlZCB7IFsgJDEscmhzX3BvcyAxIF0gfVxuICB8IElEIGFubm90ZWQgQ09NTUEgYW5ub3RlZCBpZF9saXN0IHsgKCQxLHJoc19wb3MgMSkgOjogJDUgfVxuICA7XG5cbmluaXRfZGVjbGFyYXRpb246XG4gIHwgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0ICh2LF8sXykgPSAkMSBpblxuICAgICAgbGV0IChwLHBlbmQsXykgPSAkMiBpblxuICAgICAgKHYsQXN0LklOSVRfTUlYIChwLExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAyKSBwZW5kKSkgfVxuICB8IGFsZ19leHByIE9QX1BBUiBhbm5vdGVkIHBhdHRlcm4gQ0xfUEFSIGFubm90ZWRcbiAgICB7IGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIGxldCAocCxwZW5kLF8pID0gJDQgaW5cbiAgICAgICh2LEFzdC5JTklUX01JWCAocCxMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpIH1cbiAgfCBhbGdfZXhwciBpZF9saXN0XG4gICAgeyBsZXQgKHYsXyxfKSA9ICQxIGluICh2LEFzdC5JTklUX1RPSyAkMikgfVxuLypcbiAgfCBJRCBhbm5vdGVkIE9QX0NVUiBhbm5vdGVkIGluaXRfZGVjbGFyYXRpb24gQ0xfQ1VSIGFubm90ZWRcbiAgICB7IGxldCAoXyxhbGcsaW5pdCkgPSAkNSBpbiAoU29tZSAoJDEscmhzX3BvcyAxKSxhbGcsaW5pdCkgfVxuKi9cbiAgfCBJRCBMQVIgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0ICh2LF8sXykgPSAkNCBpbiAodixBc3QuSU5JVF9UT0sgWyQxLHJoc19wb3MgMV0pfVxuICB8IGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDEgXCJNYWxmb3JtZWQgaW5pdGlhbCBjb25kaXRpb25cIikpIH1cbiAgO1xuXG52YWx1ZV9saXN0OlxuICB8IFNUUklORyBhbm5vdGVkIHtbJDEsIHJoc19wb3MgMV19XG4gIHwgU1RSSU5HIGFubm90ZWQgdmFsdWVfbGlzdCB7KCQxLHJoc19wb3MgMSk6OiQzfVxuICA7XG5cbm5vbmVtcHR5X3ByaW50X2V4cHI6XG4gIHwgU1RSSU5HIGFubm90ZWRcbiAgICB7IChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgMSAkMSldLGVuZF9wb3MgMSwkMikgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmXG4gICAgeyBsZXQgKGEscGVuZCxwKSA9ICQxIGluIChbUHJpbWl0aXZlcy5BbGdfcGV4cHIgYV0scGVuZCxwKSB9XG4gIHwgcHJpbnRfZXhwcl9saXN0IHsgJDEgfVxuICB8IE9QX1BBUiBhbm5vdGVkIHByaW50X2V4cHJfbGlzdCBDTF9QQVIgYW5ub3RlZFxuICAgIHsgbGV0ICh2LF8sYW4pID0gJDMgaW4gKHYsZW5kX3BvcyA0LGFuIEAgJDUpIH1cbiAgO1xuXG5wcmludF9leHByX2xpc3Q6XG4gIHwgU1RSSU5HIGFubm90ZWQgRE9UIGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwclxuICAgIHsgbGV0IChsLHBlbmQscCkgPSAkNSBpbiAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKCQxLCByaHNfcG9zIDEpOjpsLHBlbmQscCkgfVxuICB8IGFsZ19leHByX3VwX3RvX2lmIERPVCBhbm5vdGVkIG5vbmVtcHR5X3ByaW50X2V4cHJcbiAgICB7IGxldCAobCxwZW5kLHApID0gJDQgaW5cbiAgICAgIGxldCAodixfLF8pID0gJDEgaW5cbiAgICAgIChQcmltaXRpdmVzLkFsZ19wZXhwciB2OjpsLHBlbmQscCkgfVxuICA7XG5cbnByaW50X2V4cHI6XG4gIHwgYW5ub3RlZCB7IChbXSxzdGFydF9wb3MgMSwkMSkgfVxuICB8IGFubm90ZWQgbm9uZW1wdHlfcHJpbnRfZXhwciB7ICQyIH1cbiAgO1xuXG5lZmZlY3Q6XG4gIHwgQVNTSUdOIGFubm90ZWQgSUQgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkNSBpbiAoQXN0LlVQREFURSAoKCQzLHJoc19wb3MgMyksYSkscGVuZCxwKSB9XG4gIHwgQVNTSUdOIGFubm90ZWQgTEFCRUwgYW5ub3RlZCBhbGdfZXhwclxuICAgIHsgbGV0IChhLHBlbmQscCkgPSAkNSBpbiAoQXN0LlVQREFURSAoKCQzLHJoc19wb3MgMyksYSkscGVuZCxwKSB9XG4gIHwgVFJBQ0sgYW5ub3RlZCBMQUJFTCBhbm5vdGVkIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgKEFzdC5DRkxPV0xBQkVMICgkNSwoJDMscmhzX3BvcyAzKSksZW5kX3BvcyA1LCQ2KSB9XG4gIHwgVFJBQ0sgYW5ub3RlZCBwYXR0ZXJuIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwYXQsZXBhdCxfKSA9ICQzIGluXG4gICAgICAoQXN0LkNGTE9XTUlYICgkNCwocGF0LExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBlcGF0KSksZW5kX3BvcyA0LCAkNSkgfVxuICB8IEZMVVggYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpblxuICAgICAgKChpZiAkNCB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUscCkgZWxzZSBBc3QuRElOT0ZGIHApLFxuICAgICAgIGVuZF9wb3MgNCwkNSkgfVxuICB8IEZMVVggYW5ub3RlZCBub25lbXB0eV9wcmludF9leHByIFNUUklORyBhbm5vdGVkIGJvb2xlYW4gYW5ub3RlZFxuICAgIHsgbGV0IChwLF8sXykgPSAkMyBpblxuICAgICAgaWYgJDYgJiYgJDQgPSBcImFic29sdXRlXCIgdGhlblxuICAgICAgICAoQXN0LkRJTiAoUHJpbWl0aXZlcy5BQlNPTFVURSxwKSxlbmRfcG9zIDYsJDcpXG4gICAgICBlbHNlIGlmICQ2ICYmICQ0ID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cbiAgICAgICAgKEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFkscCksZW5kX3BvcyA2LCQ3KVxuICAgICAgZWxzZSBpZiAkNiAmJiAkNCA9IFwicmVsYXRpdmVcIiB0aGVuXG4gICAgICAgIChBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLHApLGVuZF9wb3MgNiwkNylcbiAgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgIChcIkluY29ycmVjdCBESU4gZXhwcmVzc2lvblwiLHJoc19wb3MgNCkpIH1cbiAgfCBBUFBMWSBhbm5vdGVkIGFsZ19leHByIHJ1bGVfY29udGVudFxuICAgIHsgbGV0IChyZXdyaXRlLF8scGVuZCxhbikgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAgKHsgQXN0LnJld3JpdGU7IEFzdC5iaWRpcmVjdGlvbmFsID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvO0FzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyAzKSBwZW5kKSksXG4gICAgICBwZW5kLGFuXG4gICAgfVxuICB8IElOVFJPIGFubm90ZWQgYWxnX2V4cHIgcGF0dGVyblxuICAgIHsgbGV0IChtLHBlbmQscCkgPSAkNCBpblxuICAgICAgbGV0ICh2LF8sXykgPSAkMyBpblxuICAgICAgKEFzdC5BUFBMWSh2LFxuICAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgICBBc3QuRWRpdCB7QXN0Lm1peD1Bc3QudG9fY3JlYXRlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgICBBc3QuZGVsdGFfdG9rZW49W107fTtcblx0XHQgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0sXG4gICAgICAgICAgICAgICAgICBMb2Mub2ZfcG9zIChzdGFydF9wb3MgNCkgcGVuZCkpLFxuICAgICAgIHBlbmQscCkgfVxuICB8IElOVFJPIGFubm90ZWQgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBpbnRlcnZlbnRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyBcXFxuJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpIH1cbiAgfCBERUxFVEUgYW5ub3RlZCBhbGdfZXhwciBwYXR0ZXJuXG4gICAgeyBsZXQgKG0scGVuZCxwKSA9ICQ0IGluXG4gICAgICBsZXQgKHYsXyxfKSA9ICQzIGluXG4gICAgICAoQXN0LkFQUExZKHYsXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXQge0FzdC5taXg9QXN0LnRvX2VyYXNlZF9taXh0dXJlIG07XG4gICAgICAgICAgICAgICAgICAgQXN0LmRlbHRhX3Rva2VuPVtdO307XG5cdFx0IEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LFxuICAgICAgICAgICAgICAgIExvYy5vZl9wb3MgKHN0YXJ0X3BvcyA0KSBwZW5kKSksXG4gICAgICAgcGVuZCxwKSB9XG4gIHwgREVMRVRFIGFubm90ZWQgZXJyb3JcbiAgICAgICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAzIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbmV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSkgfVxuICB8IFNOQVBTSE9UIHByaW50X2V4cHIgeyBsZXQgKHMscGVuZCxwKSA9ICQyIGluIChBc3QuU05BUFNIT1QgKGZhbHNlLHMpLHBlbmQscCkgfVxuICB8IFNOQVBTSE9UIHByaW50X2V4cHIgYm9vbGVhbiBhbm5vdGVkIHsgbGV0IChzLF8sXykgPSAkMiBpbiAoQXN0LlNOQVBTSE9UICgkMyxzKSxlbmRfcG9zIDMsJDQpIH1cbiAgfCBTVE9QIHByaW50X2V4cHIgeyBsZXQgKHMscGVuZCxwKSA9ICQyIGluIChBc3QuU1RPUCBzLHBlbmQscCkgfVxuICB8IFBSSU5URiBwcmludF9leHByIEdSRUFURVIgcHJpbnRfZXhwclxuICAgIHsgbGV0IChmLHBlbmQscCkgPSAkNCBpbiBsZXQgKGMsXyxfKSA9ICQyIGluIChBc3QuUFJJTlQgKGYsYykscGVuZCxwKSB9XG4gIHwgUFJJTlRGIHByaW50X2V4cHIgeyBsZXQgKGMscGVuZCxwKSA9ICQyIGluIChBc3QuUFJJTlQgKFtdLGMpLHBlbmQscCkgfVxuICB8IFBMT1RFTlRSWSBhbm5vdGVkIHsgKEFzdC5QTE9URU5UUlksZW5kX3BvcyAxLCQyKSB9XG4gIHwgU1BFQ0lFU19PRiBhbm5vdGVkIHBhdHRlcm4gYm9vbGVhbiBhbm5vdGVkIEdSRUFURVIgcHJpbnRfZXhwclxuICAgIHtcbiAgICAgIGxldCAoZmlsZSxwZW5kLHApID0gJDcgaW5cbiAgICAgIGxldCAocGF0LHBlbmRwLF8pID0gJDMgaW5cbiAgICAgIChBc3QuU1BFQ0lFU19PRiAoJDQsZmlsZSwocGF0LCBMb2Mub2ZfcG9zIChzdGFydF9wb3MgMykgcGVuZHApKSxcbiAgICAgICBwZW5kLHApIH1cbiAgO1xuXG5pZGluOlxufCBJRCBhbm5vdGVkIExBUiBhbm5vdGVkIGFsZ19leHByIHtcbiAgIGxldCAodixwZW5kLHApID0gJDUgaW5cbiAgIGxldCB0ayA9ICgkMSxyaHNfcG9zIDEpIGluXG4gICAgKEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAoe0FzdC5yZXdyaXRlID1cbiAgICAgICAgICAgICAgQXN0LkVkaXRcbiAgICAgICAgICAgICAgICAgIHtBc3QubWl4PVtdO1xuICAgICAgICAgICAgICAgICAgIEFzdC5kZWx0YV90b2tlbiA9XG4gICAgICAgICAgICAgICAgICAgICAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLHYsKEFsZ19leHByLlRPS0VOX0lEICQxLHJoc19wb3MgMSkpLHJoc19wb3MgMSksdGtdO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSwgTG9jLm9mX3BvcyAoc3RhcnRfcG9zICA0KSBwZW5kKSkscGVuZCxwKVxuICAgfVxufCBJRCBhbm5vdGVkIExBUiBlcnJvclxuICAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgIChhZGRfcG9zIDMgXCJNYWxmb3JtZWQgaW50ZXJ2ZW50aW9uIGluc3RydWN0aW9uLCBJIHdhcyBcXFxuZXhwZWN0aW5nICdJRCA8LSBhbGdfZXhwcmVzc2lvbidcIikpIH1cbnwgSUQgZXJyb3JcbiAgICAgICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAyIFwiTWFsZm9ybWVkIGludGVydmVudGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgXFxcbiAgIGV4cGVjdGluZyAnSUQgPC0gYWxnX2V4cHJlc3Npb24nXCIpKSB9O1xuO1xuXG5lZmZlY3Rfb3JfaWRpbjpcbiAgfCBlZmZlY3QgeyQxfVxuICB8IGlkaW4geyQxfVxuXG5wYXJ0aWFsX2VmZmVjdF9saXN0OlxuICB8IE9QX1BBUiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3QgQ0xfUEFSIGFubm90ZWQgeyAkMyB9XG4gIHwgZWZmZWN0X29yX2lkaW4gU0VNSUNPTE9OIGFubm90ZWQgeyBsZXQgKGUsXyxfKSA9ICQxIGluIChbZV0sZW5kX3BvcyAyLCQzKSB9XG4gIHwgZWZmZWN0X29yX2lkaW4geyBsZXQgKGUscCxhKSA9ICQxIGluIChbZV0scCxhKSB9XG4gIHwgZWZmZWN0X29yX2lkaW4gU0VNSUNPTE9OIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdFxuICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuXG5wYXJ0aWFsX2VmZmVjdF9saXN0X2F0X2xlYXN0X29uZV9pZGluOlxuICAgICAgfCBpZGluIFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICAgICAgfCBpZGluIHsgbGV0IChlLHAsYSkgPSAkMSBpbiAoW2VdLHAsYSkgfVxuICAgICAgfCBpZGluIFNFTUlDT0xPTiBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RcbiAgICAgICAgICB7IGxldCAoZSxfLF8pID0gJDEgaW4gbGV0IChsLHBlbmQsYSkgPSAkNCBpbiAoZTo6bCxwZW5kLGEpIH1cblxuZWZmZWN0X2xpc3Q6XG4gIHwgT1BfUEFSIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdCBDTF9QQVIgYW5ub3RlZCB7ICQzIH1cbiAgfCBPUF9QQVIgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IENMX1BBUiBhbm5vdGVkIFNFTUlDT0xPTiBhbm5vdGVkIHtsZXQgKGUsXyxfKSA9ICAkMyBpbiBlLGVuZF9wb3MgNiwkNyB9XG4gIHwgZWZmZWN0IFNFTUlDT0xPTiBhbm5vdGVkIHsgbGV0IChlLF8sXykgPSAkMSBpbiAoW2VdLGVuZF9wb3MgMiwkMykgfVxuICB8IGVmZmVjdCBTRU1JQ09MT04gYW5ub3RlZCBlZmZlY3RfbGlzdFxuICAgIHsgbGV0IChlLF8sXykgPSAkMSBpbiBsZXQgKGwscGVuZCxhKSA9ICQ0IGluIChlOjpsLHBlbmQsYSkgfVxuICA7XG5cbnN0YW5kYWxvbmVfZWZmZWN0X2xpc3Q6XG4gIHwgYW5ub3RlZCBwYXJ0aWFsX2VmZmVjdF9saXN0IEVPRiB7IGxldCAoZSxfLF8pID0gJDIgaW4gZSB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiUHJvYmxlbWF0aWMgZWZmZWN0IGxpc3RcIikpIH1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fYWxhcm06XG4gIHwgYW5ub3RlZCB7IE5vbmUgfVxuICB8IGFubm90ZWQgQUxBUk0gYW5ub3RlZCBuYnIgYW5ub3RlZCB7IFNvbWUgJDQgfVxuICB8IGFubm90ZWQgQUxBUk0gZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAzIFwiYWxhcm0gdGFrZXMgYSBudW1iZXIgYXMgYXJndW1lbnRcIikpIH1cbiAgO1xuXG5wZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQ6XG4gIHwgUkVQRUFUIGFubm90ZWQgYm9vbF9leHByIHsgbGV0IChiLHBlbmQscCkgPSAkMyBpbiAoU29tZSBiLHBlbmQscCkgfVxuXG5wZXJ0dXJiYXRpb25fcG9zdDpcbiAgfCB7IChOb25lLCBQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCksW10pIH1cbiAgfCBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWQgeyQxfVxuICA7XG5cbnBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbjpcbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGFubm90ZWQgZWZmZWN0X2xpc3QgcGVydHVyYmF0aW9uX3Bvc3RcbiAgICB7IGxldCAocHJlLF8sXykgPSAkMiBpblxuICAgICAgbGV0IChlLF8sXykgPSAkNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSAkNiBpblxuICAgICAgKCQxLFNvbWUgcHJlLGUscG9zdCkgfVxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBhbm5vdGVkIGVmZmVjdF9saXN0IHBlcnR1cmJhdGlvbl9wb3N0XG4gICAgeyBsZXQgKGUsXyxfKSA9ICQ0IGluIGxldCAocG9zdCxfLF8pID0gJDUgaW4gKCQxLE5vbmUsZSxwb3N0KSB9XG5cbiAgfCBwZXJ0dXJiYXRpb25fYWxhcm0gYm9vbF9leHByIERPIGFubm90ZWQgcGFydGlhbF9lZmZlY3RfbGlzdF9hdF9sZWFzdF9vbmVfaWRpbiBwZXJ0dXJiYXRpb25fcG9zdF9jbG9zZWRcbiAgICB7IGxldCAocHJlLF8sXykgPSAkMiBpblxuICAgICAgbGV0IChlLF8sXykgPSAkNSBpblxuICAgICAgbGV0IChwb3N0LF8sXykgPSAkNiBpblxuICAgICAgKCQxLFNvbWUgcHJlLGUscG9zdCkgfVxuICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBhbm5vdGVkIHBhcnRpYWxfZWZmZWN0X2xpc3RfYXRfbGVhc3Rfb25lX2lkaW4gcGVydHVyYmF0aW9uX3Bvc3RfY2xvc2VkXG4gICAgICAgIHsgbGV0IChlLF8sXykgPSAkNCBpblxuICAgICAgICAgIGxldCAocG9zdCxfLF8pID0gJDUgaW5cbiAgICAgICAgICAoJDEsTm9uZSxlLHBvc3QpIH1cbiAgO1xuXG5zZW50ZW5jZTpcbiAgfCBMQUJFTCBhbm5vdGVkIHJ1bGVcbiAgICB7IGFkZCAoQXN0LlJVTEUoU29tZSAoJDEsIHJoc19wb3MgMSksJDMpKSB9XG4gIHwgTEFCRUwgYW5ub3RlZCBFUVVBTCBhbm5vdGVkIGFsZ19leHByXG4gICAgeyBsZXQgKHYsXyxfKSA9ICQ1IGluIGFkZCAoQXN0LkRFQ0xBUkUgKCgkMSxyaHNfcG9zIDEpLHYpKSB9XG4gIHwgcnVsZSB7IGFkZCAoQXN0LlJVTEUgKE5vbmUsJDEpKSB9XG4gIHwgU0lHTkFUVVJFIGFubm90ZWQgYWdlbnRfc2lnIHsgbGV0IChhLF8sXykgPSAkMyBpbiBhZGQgKEFzdC5TSUcgYSkgfVxuICB8IFNJR05BVFVSRSBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgMyBcIk1hbGZvcm1lZCBhZ2VudCBzaWduYXR1cmVcIikpIH1cbiAgfCBUT0tFTiBhbm5vdGVkIElEIGFubm90ZWQgeyBhZGQgKEFzdC5UT0tFTlNJRyAoJDMscmhzX3BvcyAzKSkgfVxuICB8IFBMT1QgYW5ub3RlZCBhbGdfZXhwciB7IGxldCAodixfLF8pID0gJDMgaW4gYWRkIChBc3QuUExPVCB2KSB9XG4gIHwgUExPVCBhbm5vdGVkIGVycm9yXG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgIChhZGRfcG9zIDNcbiAgICAgICAgICAgICAgICAgIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIFxcXG5hbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSkgfVxuICB8IExFVCBhbm5vdGVkIHZhcmlhYmxlX2RlY2xhcmF0aW9uXG4gICAgeyBsZXQgKGksdixfLF8pID0gJDMgaW4gYWRkIChBc3QuREVDTEFSRSAoaSx2KSkgfVxuICB8IE9CUyBhbm5vdGVkIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHsgbGV0IChpLHYsXyxfKSA9ICQzIGluIGFkZCAoQXN0Lk9CUyAoaSx2KSkgfVxuICB8IElOSVQgYW5ub3RlZCBpbml0X2RlY2xhcmF0aW9uXG4gICAgeyBsZXQgKGFsZyxpbml0KSA9ICQzIGluIGFkZCAoQXN0LklOSVQgKGFsZyxpbml0KSkgfVxuICB8IFBFUlQgcGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uIHsgYWRkIChBc3QuUEVSVCAoJDIsIHJoc19wb3MgMikpIH1cbiAgfCBDT05GSUcgYW5ub3RlZCBTVFJJTkcgYW5ub3RlZCB2YWx1ZV9saXN0XG4gICAgeyBhZGQgKEFzdC5DT05GSUcgKCgkMyxyaHNfcG9zIDMpLCQ1KSkgfVxuICA7XG5cbm1vZGVsX2JvZHk6XG4gIHwgc2VudGVuY2UgbW9kZWxfYm9keSB7ICQyIH1cbiAgfCBFT0YgeyBvdXRwdXQgKCkgfVxuICA7XG5cbm1vZGVsOlxuICB8IGFubm90ZWQgbW9kZWxfYm9keSB7ICQyIH1cbiAgfCBlcnJvclxuICAgIHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAoYWRkX3BvcyAxIFwiSW5jb3JyZWN0IGJlZ2lubmluZyBvZiBzZW50ZW5jZSAhISFcIikpIH1cbiAgO1xuXG5pbnRlcmFjdGl2ZV9jb21tYW5kOlxuICB8IGFubm90ZWQgUlVOIGFubm90ZWQgU0VNSUNPTE9OIHsgQXN0LlJVTiAoTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuRkFMU0UpIH1cbiAgfCBhbm5vdGVkIFJVTiBhbm5vdGVkIGJvb2xfZXhwciBTRU1JQ09MT04geyBsZXQgKHBhdXNlLF8sXykgPSAkNCBpbiBBc3QuUlVOIHBhdXNlIH1cbiAgfCBhbm5vdGVkIGVmZmVjdCBTRU1JQ09MT04geyBsZXQgKGVmZixfLF8pID0gJDIgaW4gQXN0Lk1PRElGWSBbZWZmXSB9XG4gIHwgYW5ub3RlZCBFT0YgeyBBc3QuUVVJVCB9XG4gIHwgZXJyb3JcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyAxIFwiVW5yZWNvZ25pemVkIGNvbW1hbmRcIikpIH1cbiAgO1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGFwcGVuZF90b19hc3RfY29tcGlsIHJldl9pbnN0ciBjb21waWwgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gciAtPiBmdW5jdGlvblxuICAgICAgfCBBc3QuUlVMRSBydSAtPiB7IHIgd2l0aCBBc3QucnVsZXMgPSBydSA6OiByLkFzdC5ydWxlcyB9XG4gICAgICB8IEFzdC5TSUcgYWcgLT4geyByIHdpdGggQXN0LnNpZ25hdHVyZXMgPSBhZyA6OiByLkFzdC5zaWduYXR1cmVzIH1cbiAgICAgIHwgQXN0LlRPS0VOU0lHIHN0cl9wb3MgLT4geyByIHdpdGggQXN0LnRva2VucyA9IHN0cl9wb3MgOjogci5Bc3QudG9rZW5zIH1cbiAgICAgIHwgQXN0LlZPTFNJRyAodm9sX3R5cGUsIHZvbCwgdm9sX3BhcmFtKSAtPlxuICAgICAgICB7IHIgd2l0aCBBc3Qudm9sdW1lcyA9ICh2b2xfdHlwZSwgdm9sLCB2b2xfcGFyYW0pIDo6IHIuQXN0LnZvbHVtZXMgfVxuICAgICAgfCBBc3QuSU5JVCAoYWxnLCBpbml0X3QpIC0+XG4gICAgICAgIHsgciB3aXRoIEFzdC5pbml0ID0gKGFsZywgaW5pdF90KSA6OiByLkFzdC5pbml0IH1cbiAgICAgIHwgQXN0LkRFQ0xBUkUgdmFyIC0+IHsgciB3aXRoIEFzdC52YXJpYWJsZXMgPSB2YXIgOjogci5Bc3QudmFyaWFibGVzIH1cbiAgICAgIHwgQXN0Lk9CUyAoKChsYmwsIHBvcyksIF8pIGFzIHZhcikgLT5cbiAgICAgICAgKCpmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgc2hvcnRjdXQgZm9yICV2YXIgKyAlcGxvdCopXG4gICAgICAgIHtcbiAgICAgICAgICByIHdpdGhcbiAgICAgICAgICBBc3QudmFyaWFibGVzID0gdmFyIDo6IHIuQXN0LnZhcmlhYmxlcztcbiAgICAgICAgICBBc3Qub2JzZXJ2YWJsZXMgPSAoQWxnX2V4cHIuQUxHX1ZBUiBsYmwsIHBvcykgOjogci5Bc3Qub2JzZXJ2YWJsZXM7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LlBMT1QgZXhwciAtPiB7IHIgd2l0aCBBc3Qub2JzZXJ2YWJsZXMgPSBleHByIDo6IHIuQXN0Lm9ic2VydmFibGVzIH1cbiAgICAgIHwgQXN0LlBFUlQgKChhbGFybSwgcHJlLCBlZmZlY3QsIG9wdCksIHBvcykgLT5cbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC5wZXJ0dXJiYXRpb25zID1cbiAgICAgICAgICAgICgoYWxhcm0sIHByZSwgZWZmZWN0LCBvcHQpLCBwb3MpIDo6IHIuQXN0LnBlcnR1cmJhdGlvbnM7XG4gICAgICAgIH1cbiAgICAgIHwgQXN0LkNPTkZJRyAocGFyYW1fbmFtZSwgdmFsdWVfbGlzdCkgLT5cbiAgICAgICAge1xuICAgICAgICAgIHIgd2l0aFxuICAgICAgICAgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLCB2YWx1ZV9saXN0KSA6OiByLkFzdC5jb25maWd1cmF0aW9ucztcbiAgICAgICAgfSlcbiAgICBjb21waWwgKExpc3QucmV2IHJldl9pbnN0cilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbntcbm9wZW4gS3BhcnNlcjRcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cbn1cblxubGV0IGVvbCA9ICdcXHInPyAnXFxuJ1xubGV0IGJsYW5rID0gWycgJyAnXFx0J11cbmxldCBpbnRlZ2VyID0gWycwJy0nOSddK1xubGV0IHJlYWwgPVxuICAoWycwJy0nOSddKyBbJ2UnICdFJ10gWycrJyAnLSddPyBbJzAnLSc5J10rKSB8XG4gICgoKFsnMCctJzknXSsgJy4nIFsnMCctJzknXSopIHwgKCcuJyBbJzAnLSc5J10rKSlcbiAgICAoWydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKyk/KVxubGV0IGlkID0gWydfJyAnfiddIFsnYSctJ3onICdBJy0nWicgJzAnLSc5JyAnXycgJ34nICctJyAnKyddKyB8XG4gICAgICAgICBbJ2EnLSd6JyAnQSctJ1onXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICd+JyAnLScgJysnXSpcblxucnVsZSB0b2tlbiA9IHBhcnNlXG4gIHwgJy8nICcvJyAoW14nXFxyJydcXG4nXSogYXMgcykgKGVvbCB8IGVvZikge0xleGluZy5uZXdfbGluZSBsZXhidWY7IENPTU1FTlQgc31cbiAgfCAnLycgJyonIHtDT01NRU5UIChpbmxpbmVfY29tbWVudCBbXSBsZXhidWYpfVxuICB8IGVvbCB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IE5FV0xJTkUgfVxuICB8IGJsYW5rICsgYXMgeCB7IFNQQUNFIHggfVxuICB8ICcjJyB7IFNIQVJQIH1cbiAgfCBcIiYmXCIgeyBBTkQgfVxuICB8IFwifHxcIiB7IE9SIH1cbiAgfCBcIjwtPlwiIHsgTFJBUiB9XG4gIHwgXCI8LVwiIHtMQVJ9XG4gIHwgXCItPlwiIHsgUkFSIH1cbiAgfCBcIjw+XCIgeyBESUZGIH1cbiAgfCAnOicgeyBDT0xPTiB9XG4gIHwgJzsnIHsgU0VNSUNPTE9OIH1cbiAgfCAnQCcgeyBBVCB9XG4gIHwgJywnIHsgQ09NTUEgfVxuICB8ICdcXFxcJyB7QkFDS1NMQVNIfVxuICB8ICcoJyB7IE9QX1BBUiB9XG4gIHwgJyknIHsgQ0xfUEFSIH1cbiAgfCAnWycgeyBPUF9CUkEgfVxuICB8ICddJyB7IENMX0JSQSB9XG4gIHwgJ3snIHsgT1BfQ1VSIH1cbiAgfCAnfScgeyBDTF9DVVIgfVxuICB8ICd8JyB7IFBJUEUgfVxuICB8ICcuJyB7IERPVCB9XG4gIHwgJ18nIHsgVU5ERVJTQ09SRSB9XG4gIHwgJysnIHsgUExVUyB9XG4gIHwgJyonIHsgTVVMVCB9XG4gIHwgJy0nIHsgTUlOVVMgfVxuICB8ICdeJyB7IFBPVyB9XG4gIHwgJy8nIHsgRElWIH1cbiAgfCAnPCcgeyBTTUFMTEVSIH1cbiAgfCAnPicgeyBHUkVBVEVSIH1cbiAgfCAnPScgeyBFUVVBTCB9XG4gIHwgaW50ZWdlciBhcyBuIHsgSU5UIChpbnRfb2Zfc3RyaW5nIG4pIH1cbiAgfCByZWFsIGFzIGYgeyBGTE9BVCAoZmxvYXRfb2Zfc3RyaW5nIGYpIH1cbiAgfCAnXFwnJyAoW14nXFxuJyAnXFwnJ10rIGFzIHgpICdcXCcneyBMQUJFTCh4KSB9XG4gIHwgJ1xcXCInIChbXidcXG4nICdcXFwiJ10qIGFzIHgpICdcXFwiJ3sgU1RSSU5HKHgpIH1cbiAgfCAnXFwnJyAoW14nXFxuJyAnXFwnJ10rIGFzIHMpIChlb2YgfCAnXFxuJylcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIGxhYmVsOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSl9XG4gIHwgJ1xcXCInIChbXidcXG4nICdcXFwiJ10rIGFzIHMpIChlb2YgfCAnXFxuJylcbiAgICB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW50ZXJtaW5hdGVkIHN0cmluZzogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8IGlkIGFzIHN0ciB7IGtleXdvcmRfb3JfaWQgc3RyIH1cbiAgfCAnJScgKGlkIGFzIGxhYikgJzonIHtcbiAgICBtYXRjaCBsYWIgd2l0aFxuICAgIHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuICAgIHwgXCJpbml0XCIgLT4gSU5JVFxuICAgIHwgXCJ2YXJcIiAtPiBMRVRcbiAgICB8IFwicGxvdFwiIC0+IFBMT1RcbiAgICB8IFwibW9kXCIgLT4gUEVSVFxuICAgIHwgXCJvYnNcIiAtPiBPQlNcbiAgICB8IFwiZGVmXCIgLT4gQ09ORklHXG4gICAgfCBcInRva2VuXCIgLT4gVE9LRU5cbiAgICB8IF8gYXMgcyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gZGlyZWN0aXZlOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcbiAgICB9XG4gIHwgJ1snIGJsYW5rKiAnPycgYmxhbmsqICddJyB7IFRIRU4gfVxuICB8ICdbJyBibGFuayogJzonIGJsYW5rKiAnXScgeyBFTFNFIH1cbiAgfCAnWycgYmxhbmsqIChpZCBhcyBsYWIpIGJsYW5rKiAnXScge1xuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcIkVcIiAtPiBFVkVOVFxuICAgIHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcbiAgICB8IFwiVFwiIC0+IFRJTUVcbiAgICB8IFwiVHNpbVwiIC0+IENQVVRJTUVcbiAgICB8IFwibG9nXCIgLT4gTE9HXG4gICAgfCBcInNpblwiIC0+IFNJTlVTXG4gICAgfCBcImNvc1wiIC0+IENPU0lOVVNcbiAgICB8IFwidGFuXCIgLT4gVEFOXG4gICAgfCBcImV4cFwiIC0+IEVYUE9ORU5UXG4gICAgfCBcImludFwiIC0+IEFCU1xuICAgIHwgXCJtb2RcIiAtPiBNT0RcbiAgICB8IFwic3FydFwiIC0+IFNRUlRcbiAgICB8IFwidHJ1ZVwiIC0+IFRSVUVcbiAgICB8IFwiZmFsc2VcIiAtPiBGQUxTRVxuICAgIHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuICAgIHwgXCJtYXhcIiAtPiBNQVhcbiAgICB8IFwibWluXCIgLT4gTUlOXG4gICAgfCBcIkVtYXhcIiAtPiBFTUFYXG4gICAgfCBcIlRtYXhcIiAtPiBUTUFYXG4gICAgfCBcIm5vdFwiIC0+IE5PVFxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBwcmltaXRpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCAnJCcgKGlkIGFzIHMpIHtcbiAgICBtYXRjaCBzIHdpdGhcbiAgICB8IFwiQVBQTFlcIiAtPiBBUFBMWVxuICAgIHwgXCJERUxcIiAtPiBERUxFVEVcbiAgICB8IFwiQUREXCIgLT4gSU5UUk9cbiAgICB8IFwiU05BUFNIT1RcIiAtPiBTTkFQU0hPVFxuICAgIHwgXCJTVE9QXCIgLT4gU1RPUFxuICAgIHwgXCJESU5cIiAtPiBGTFVYXG4gICAgfCBcIlRSQUNLXCIgLT4gVFJBQ0tcbiAgICB8IFwiVVBEQVRFXCIgLT4gQVNTSUdOXG4gICAgfCBcIlBSSU5UXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBSSU5URlwiIC0+IFBSSU5URlxuICAgIHwgXCJQTE9URU5UUllcIiAtPiBQTE9URU5UUllcbiAgICB8IFwiUlVOXCIgLT4gUlVOXG4gICAgfCBcIlNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG4gICAgfCBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBpbnRlcnZlbnRpb246IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIH1cbiAgfCBlb2YgeyBsZXhidWYuTGV4aW5nLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyBFT0YgfVxuICB8IF8gYXMgYyB7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBjaGFyYWN0ZXI6IFwiXlN0cmluZy5tYWtlIDEgYyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpIH1cblxuYW5kIGlubGluZV9jb21tZW50IGFjYyA9IHBhcnNlXG4gIHwgKFteJ1xcbicgJyonICdcXFwiJyAnLyddICopIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICgnLycgJy8nIFteJ1xccicnXFxuJ10qIGFzIHgpIGVvbFxuICAgIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCBlb2wgYXMgeCB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCcqJyBbXicvJyAnXFxuJyAnXFxcIiddKSBhcyB4IHsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIH1cbiAgfCAoJy8nIFteJyonICdcXG4nICdcXFwiJ10pIGFzIHggeyBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgfVxuICB8ICcqJyAnLycgeyBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgfVxuICB8IGVvZiB7IFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXYgYWNjKSB9XG4gIHwgJyonICdcXG4nIHsgTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiKlxcblwiOjphY2MpIGxleGJ1ZiB9XG4gIHwgKCgnKicgfCAnLycpPyAnXFxcIicgW14nXFxuJyAnXFxcIiddKyAnXFxcIicpIGFzIHhcbiAgICB7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiB9XG4gIHwgKCgnKicgfCAnLycpPyAnXFxcIicgW14nXFxuJyAnXFxcIiddKyAoZW9mIHwgJ1xcbicpKSBhcyB4XG4gICAgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBzdHJpbmcgaW4gY29tbWVudDogXCJeeCxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpfVxuICB8ICcvJyAnKidcbiAgICB7IGlubGluZV9jb21tZW50IChcIiovXCI6OihpbmxpbmVfY29tbWVudCBbXCIvKlwiXSBsZXhidWYpOjogYWNjKSBsZXhidWYgfVxuICB8ICcvJyAnXFxuJyB7IExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IChcIi9cXG5cIjo6YWNjKSBsZXhidWYgfVxuXG5hbmQgcmVjb3ZlcnkgPSBwYXJzZVxuICB8IFteJ1xccicnXFxuJ10qIChlb2wgfCBlb2YpIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmfVxuXG57XG4gIGxldCByZWMgYXV4X21vZGVsIGVyciBsZXggPVxuICB0cnkgbGV0IG91dCA9IEtwYXJzZXI0Lm1vZGVsIHRva2VuIGxleCBpbiAob3V0LCBMaXN0LnJldiBlcnIpXG4gIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgZSAtPlxuICAgIGxldCAoKSA9IHJlY292ZXJ5IGxleCBpblxuICAgIGF1eF9tb2RlbCAoZTo6ZXJyKSBsZXhcblxuICBsZXQgbW9kZWwgbGV4ID0gYXV4X21vZGVsIFtdIGxleFxuXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmljID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmljIGluXG4gICAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX2NoYW5uZWwgZCBpblxuICAgIGxldCAoKSA9IGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCA8LVxuICAgICAge2xleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcCB3aXRoIExleGluZy5wb3NfZm5hbWUgPSBmaWN9IGluXG4gICAgbGV0IGNvbXBpbCA9IHsgY29tcGlsIHdpdGggQXN0LmZpbGVuYW1lcyA9IGZpYyA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiUGFyc2luZyAlcy4uLkAuXCIgZmljIGluXG4gICAgbGV0IChvdXQsZXJyKSA9IG1vZGVsIGxleGJ1ZiBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgbGV0ICgpID0gbWF0Y2ggZXJyIHdpdGhcbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgKG1zZyxwb3MpOjpfIC0+XG4gICAgICAgIGxldCAoKSA9IFBwLmVycm9yIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgKG1zZyxwb3MpIGluXG4gICAgICAgIGV4aXQgMyBpblxuICAgIGxldCAoKSA9IGNsb3NlX2luIGQgaW5cbiAgICBDc3QuYXBwZW5kX3RvX2FzdF9jb21waWwgb3V0IGNvbXBpbFxufVxuIiwiIyA5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiBcbm9wZW4gS3BhcnNlcjRcblxuIGxldCBrZXl3b3JkX29yX2lkID1cbiBsZXQga2V5d29yZHMgPSBIYXNodGJsLmNyZWF0ZSAxNSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiZG9cIiBETyBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwicmVwZWF0XCIgUkVQRUFUIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJJTkZcIiBJTkZJTklUWSBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiaW5mXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImFsYXJtXCIgQUxBUk0gaW5cbiBmdW4geCAtPlxuIHRyeSBIYXNodGJsLmZpbmQga2V5d29yZHMgeCB3aXRoIE5vdF9mb3VuZCAtPiBJRCB4XG5cblxuIyAxNyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbmxldCBfX29jYW1sX2xleF90YWJsZXMgPSB7XG4gIExleGluZy5sZXhfYmFzZSA9XG4gICBcIlxcMDAwXFwwMDBcXDIwOVxcMjU1XFwyMTBcXDI1NVxcMDYyXFwwMDBcXDEyNFxcMDAwXFwyMDlcXDAwMFxcMDMzXFwwMDFcXDIzN1xcMDAwXFxcbiAgICBcXDE3NlxcMDAwXFwxMTJcXDAwMVxcMjIzXFwyNTVcXDIyNFxcMjU1XFwyMjdcXDI1NVxcMjI5XFwyNTVcXDIzMFxcMjU1XFwxNzNcXDAwMVxcXG4gICAgXFwxMzRcXDAwMVxcMjM0XFwyNTVcXDIzNVxcMjU1XFwyMzZcXDI1NVxcMDMxXFwwMDJcXDIzOFxcMjU1XFwyMzlcXDI1NVxcMjQwXFwyNTVcXFxuICAgIFxcMjQxXFwyNTVcXDI0MlxcMjU1XFwyNDNcXDI1NVxcMjQ0XFwyNTVcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMDI5XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDI1MVxcMjU1XFwyNDBcXDAwMFxcMjUzXFwyNTVcXDAwMVxcMDAwXFwyMDZcXDAwMFxcMjU0XFwyNTVcXDAxMVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDJcXDAwMFxcMjUwXFwyNTVcXDI0OVxcMjU1XFwyNDVcXDI1NVxcMDkyXFwwMDBcXDI0OFxcMjU1XFwyNDZcXDI1NVxcMTQ1XFwwMDJcXFxuICAgIFxcMjI1XFwwMDJcXDE3MVxcMDAxXFwwMzJcXDAwMlxcMDgzXFwwMDNcXDIxNFxcMjU1XFwyMTNcXDI1NVxcMTk3XFwwMDNcXDIxMlxcMjU1XFxcbiAgICBcXDA2M1xcMDAyXFwwNzNcXDAwM1xcMjU1XFwwMDFcXDE0NFxcMDAxXFwwMjVcXDAwMlxcMDIxXFwwMDRcXDEwMFxcMDA0XFwxMTVcXDAwMlxcXG4gICAgXFwxMzBcXDAwMlxcMDQ4XFwwMDNcXDE3N1xcMDAwXFwyMThcXDI1NVxcMjIwXFwyNTVcXDIxOVxcMjU1XFwwODNcXDAwM1xcMjE3XFwyNTVcXFxuICAgIFxcMTM3XFwwMDRcXDIxN1xcMDA0XFwwNDFcXDAwNVxcMjE1XFwyNTVcXDEyMVxcMDA1XFwyMDFcXDAwNVxcMDI1XFwwMDZcXDE5N1xcMDAzXFxcbiAgICBcXDA4NFxcMDAzXFwyNDlcXDI1NVxcMTM0XFwwMDRcXDI1M1xcMjU1XFwxMzhcXDAwNlxcMTM5XFwwMDZcXDE0MFxcMDA2XFwyNDRcXDI1NVxcXG4gICAgXFwyNDVcXDI1NVxcMjUxXFwyNTVcXDAxM1xcMDAwXFwyNTRcXDI1NVxcMDA0XFwwMDBcXDAxN1xcMDAwXFwyNDhcXDI1NVxcMjUwXFwyNTVcXFxuICAgIFxcMjUyXFwyNTVcXDE5OFxcMDAzXFwyNDZcXDI1NVxcMjQ3XFwyNTVcXDIwN1xcMDAwXFwyNTVcXDI1NVxcMDA1XFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrID1cbiAgIFwiXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDZcXDAwMFxcMDQ2XFwwMDBcXDAzOVxcMDAwXFwwNDZcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDAzM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyNFxcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDBcXDAzMFxcMDAwXFwwMjJcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwM1xcMDAwXFwyNTVcXDI1NVxcMDQ2XFwwMDBcXDAyOVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMDM0XFwwMDBcXDI1NVxcMjU1XFwwMzlcXDAwMFxcMDM0XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAzNFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwwNDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODVcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDA5NlxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDA4NVxcMDAwXFwwODVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwOTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfdHJhbnMgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDMzXFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM5XFwwMDBcXDAzNVxcMDAwXFwwOTFcXDAwMFxcMTAxXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFxcbiAgICBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDkyXFwwMDBcXDA5MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMzJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMzFcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMVxcMDAwXFwwMTNcXDAwMFxcMDE0XFwwMDBcXDAyNFxcMDAwXFwwMjhcXDAwMFxcMDE2XFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAyN1xcMDAwXFwwMjZcXDAwMFxcMDI5XFwwMDBcXDAxMFxcMDAwXFwwMTFcXDAwMFxcMDQ2XFwwMDBcXFxuICAgIFxcMDI1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMTlcXDAwMFxcMDEyXFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDA0MVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAxOFxcMDAwXFwwMzBcXDAwMFxcMDE3XFwwMDBcXDAwNlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDQyXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY3XFwwMDBcXDA3N1xcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA2OFxcMDAwXFwxMDFcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwxMDJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMzdcXDAwMFxcMDMzXFwwMDBcXDA3M1xcMDAwXFwwNDRcXDAwMFxcMDA1XFwwMDBcXDAzOFxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAzOVxcMDAwXFwwNDNcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwNjlcXDAwMFxcXG4gICAgXFwwMzNcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MlxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXFxuICAgIFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDYzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDUzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNTZcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwNTZcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwNDhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNDhcXDAwMFxcMDY1XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1MVxcMDAwXFwwNzFcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUxXFwwMDBcXDAwMFxcMDAwXFwwNjlcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDU4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTZcXDAwMFxcMDgzXFwwMDBcXFxuICAgIFxcMDk4XFwwMDBcXDA0OFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMDk5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDAwMFxcMDAwXFwwODRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNTRcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDk0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDgwXFwwMDBcXDA1OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDk1XFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDk4XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwODdcXDAwMFxcMjU1XFwyNTVcXDA4M1xcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcIjtcbiAgTGV4aW5nLmxleF9jaGVjayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzNVxcMDAwXFwwNDBcXDAwMFxcMDAwXFwwMDBcXDA5MlxcMDAwXFwxMDJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzOFxcMDAwXFwyNTVcXDI1NVxcMDkwXFwwMDBcXFxuICAgIFxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDkzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDkzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjhcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMzBcXDAwMFxcMDQ0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAzXFwwMDBcXDI1NVxcMjU1XFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXFxuICAgIFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG4gICAgXFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwOFxcMDAwXFwwNjZcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA4XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDEwMFxcMDAwXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDEwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAzNlxcMDAwXFwwMzNcXDAwMFxcMDA0XFwwMDBcXDAyOVxcMDAwXFwwMDVcXDAwMFxcMDM2XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDM4XFwwMDBcXDAyOVxcMDAwXFwwOTBcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwOTNcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcXG4gICAgXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXFxuICAgIFxcMDA2XFwwMDBcXDAwNlxcMDAwXFwwMDZcXDAwMFxcMDA2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDAwNlxcMDAwXFxcbiAgICBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDAwOVxcMDAwXFwwMDlcXDAwMFxcXG4gICAgXFwwMDlcXDAwMFxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA4XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwMDlcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFxcbiAgICBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMTVcXDAwMFxcMjU1XFwyNTVcXDAxNVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDBcXDI1NVxcMjU1XFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFxcbiAgICBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcXG4gICAgXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTVcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDA1MFxcMDAwXFwwNThcXDAwMFxcMDE1XFwwMDBcXDA1OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1OFxcMDAwXFxcbiAgICBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcXG4gICAgXFwwNThcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA1NlxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwwNjBcXDAwMFxcXG4gICAgXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDA2MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIwXFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDAyMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDU2XFwwMDBcXDAyMFxcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDUxXFwwMDBcXDA3MFxcMDAwXFwwODBcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMDY1XFwwMDBcXDA2NVxcMDAwXFxcbiAgICBcXDA2NVxcMDAwXFwwNjVcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA3MFxcMDAwXFwwODBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwwNzlcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMDUxXFwwMDBcXDA3OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNzlcXDAwMFxcXG4gICAgXFwwOTdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc5XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDcwXFwwMDBcXDA4MFxcMDAwXFwyNTVcXDI1NVxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMjU1XFwyNTVcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXFxuICAgIFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFxcbiAgICBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcMDYxXFwwMDBcXDA2MVxcMDAwXFwwNjFcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjFcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwODJcXDAwMFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAwXFwwODJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMjU1XFwyNTVcXDA3OVxcMDAwXFwwOTdcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDA2MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3MlxcMDAwXFwyNTVcXDI1NVxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXFxuICAgIFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFxcbiAgICBcXDA3MlxcMDAwXFwwNzJcXDAwMFxcMDcyXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFxcbiAgICBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcXG4gICAgXFwwNzNcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDc0XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcXG4gICAgXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXFxuICAgIFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwNzRcXDAwMFxcMDc0XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA3NlxcMDAwXFwyNTVcXDI1NVxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXFxuICAgIFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFxcbiAgICBcXDA3NlxcMDAwXFwwNzZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzZcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNzdcXDAwMFxcMjU1XFwyNTVcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFxcbiAgICBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcXG4gICAgXFwwNzdcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwNzdcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDc4XFwwMDBcXDI1NVxcMjU1XFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXFxuICAgIFxcMDc4XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDA3OFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4NFxcMDAwXFwwODVcXDAwMFxcMDg2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDg1XFwwMDBcXDA4NlxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDg0XFwwMDBcXDA4NVxcMDAwXFwwODZcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMlxcMDAwXFwwMTZcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuICAgIFxcMTY0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDIyXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTAyXFwwMDFcXDAxOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTNcXDAwMFxcMDI3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzMlxcMDAwXFwwMzNcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF9iYWNrdHJrX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXCI7XG4gIExleGluZy5sZXhfZGVmYXVsdF9jb2RlID1cbiAgIFwiXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxM1xcMDAwXFxcbiAgICBcXDAzMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAwMVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcXG4gICAgXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXFxuICAgIFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFxcbiAgICBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDIwXFwwMDBcXDAwN1xcMDAwXFwwMDhcXDAwMFxcMDM4XFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDM4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDA4XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwwOTBcXDAwMFxcMDkzXFwwMDBcXDAzNlxcMDAwXFxcbiAgICBcXDA4NFxcMDAwXFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNzBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzBcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDA3XFwwMDBcXDAwOFxcMDAwXFwwMzhcXDAwMFxcMDQ4XFwwMDBcXDA2NlxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMDQ4XFwwMDBcXDI1NVxcMjU1XFwwOTNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMDU0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA3MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcXG4gICAgXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXFxuICAgIFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFwwNTRcXDAwMFxcMDU0XFwwMDBcXDA1NFxcMDAwXFxcbiAgICBcXDA1NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcXDI1NVxcMDAyXFwyNTVcXDI1NVxcMDA2XFwyNTVcXDI1NVxcMDA1XFwyNTVcXDI1NVxcMDA0XFwyNTVcXDI1NVxcMDAzXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwM1xcMjU1XFwwMDBcXDAwMlxcMDAxXFwwMDRcXDI1NVxcMDAwXFwwMDVcXDI1NVxcMDAwXFwwMDZcXDI1NVxcMDAxXFwyNTVcXFxuICAgIFxcMjU1XFwwMDBcXDAwMVxcMjU1XCI7XG59XG5cbmxldCByZWMgdG9rZW4gbGV4YnVmID1cbiAgbGV4YnVmLkxleGluZy5sZXhfbWVtIDwtIEFycmF5Lm1ha2UgNyAoLTEpOyBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIDBcbmFuZCBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlID1cbiAgbWF0Y2ggTGV4aW5nLm5ld19lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbmxldFxuIyAzNSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgNzU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgMzUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgQ09NTUVOVCBzKVxuIyA3NjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxIC0+XG4jIDM2IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgIChDT01NRU5UIChpbmxpbmVfY29tbWVudCBbXSBsZXhidWYpKVxuIyA3NjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyIC0+XG4jIDM3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBORVdMSU5FIClcbiMgNzczIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMyAtPlxubGV0XG4jIDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIHhcbiMgNzc5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgKCBTUEFDRSB4IClcbiMgNzgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNCAtPlxuIyAzOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggU0hBUlAgKVxuIyA3ODggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA1IC0+XG4jIDQwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggQU5EIClcbiMgNzkzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNiAtPlxuIyA0MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoIE9SIClcbiMgNzk4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNyAtPlxuIyA0MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgKCBMUkFSIClcbiMgODAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgOCAtPlxuIyA0MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAoTEFSKVxuIyA4MDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA5IC0+XG4jIDQ0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICggUkFSIClcbiMgODEzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTAgLT5cbiMgNDUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgKCBESUZGIClcbiMgODE4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTEgLT5cbiMgNDYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENPTE9OIClcbiMgODIzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTIgLT5cbiMgNDcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNFTUlDT0xPTiApXG4jIDgyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEzIC0+XG4jIDQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBBVCApXG4jIDgzMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE0IC0+XG4jIDQ5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDT01NQSApXG4jIDgzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE1IC0+XG4jIDUwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgIChCQUNLU0xBU0gpXG4jIDg0MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE2IC0+XG4jIDUxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBPUF9QQVIgKVxuIyA4NDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAxNyAtPlxuIyA1MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggQ0xfUEFSIClcbiMgODUzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMTggLT5cbiMgNTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIE9QX0JSQSApXG4jIDg1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDE5IC0+XG4jIDU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBDTF9CUkEgKVxuIyA4NjMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyMCAtPlxuIyA1NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggT1BfQ1VSIClcbiMgODY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjEgLT5cbiMgNTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIENMX0NVUiApXG4jIDg3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIyIC0+XG4jIDU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQSVBFIClcbiMgODc4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjMgLT5cbiMgNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIERPVCApXG4jIDg4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI0IC0+XG4jIDU5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBVTkRFUlNDT1JFIClcbiMgODg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMjUgLT5cbiMgNjAgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFBMVVMgKVxuIyA4OTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyNiAtPlxuIyA2MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggTVVMVCApXG4jIDg5OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI3IC0+XG4jIDYyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBNSU5VUyApXG4jIDkwMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDI4IC0+XG4jIDYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBQT1cgKVxuIyA5MDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAyOSAtPlxuIyA2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggRElWIClcbiMgOTEzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgMzAgLT5cbiMgNjUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAoIFNNQUxMRVIgKVxuIyA5MTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzMSAtPlxuIyA2NiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICggR1JFQVRFUiApXG4jIDkyMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMyIC0+XG4jIDY3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBFUVVBTCApXG4jIDkyOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDMzIC0+XG5sZXRcbiMgNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgblxuIyA5MzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNjggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAoIElOVCAoaW50X29mX3N0cmluZyBuKSApXG4jIDkzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM0IC0+XG5sZXRcbiMgNjkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgZlxuIyA5NDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgNjkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAoIEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikgKVxuIyA5NDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzNSAtPlxubGV0XG4jIDcwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgOTU0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA3MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBMQUJFTCh4KSApXG4jIDk1OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM2IC0+XG5sZXRcbiMgNzEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA5NjQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDcxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIFNUUklORyh4KSApXG4jIDk2OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM3IC0+XG5sZXRcbiMgNzIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgc1xuIyA5NzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyA3MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVudGVybWluYXRlZCBsYWJlbDogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpKVxuIyA5ODEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzOCAtPlxubGV0XG4jIDc3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNcbiMgOTg3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMCkgaW5cbiMgNzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nOiBcIl5zLFxuICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG4gICAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSkpXG4jIDk5NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDM5IC0+XG5sZXRcbiMgODIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgIHN0clxuIyAxMDAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDgyIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgKCBrZXl3b3JkX29yX2lkIHN0ciApXG4jIDEwMDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MCAtPlxubGV0XG4jIDgzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIGxhYlxuIyAxMDEwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDEpIChsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyArIC0xKSBpblxuIyA4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoXG4gICAgbWF0Y2ggbGFiIHdpdGhcbiAgICB8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcbiAgICB8IFwiaW5pdFwiIC0+IElOSVRcbiAgICB8IFwidmFyXCIgLT4gTEVUXG4gICAgfCBcInBsb3RcIiAtPiBQTE9UXG4gICAgfCBcIm1vZFwiIC0+IFBFUlRcbiAgICB8IFwib2JzXCIgLT4gT0JTXG4gICAgfCBcImRlZlwiIC0+IENPTkZJR1xuICAgIHwgXCJ0b2tlblwiIC0+IFRPS0VOXG4gICAgfCBfIGFzIHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGRpcmVjdGl2ZTogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMDI4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDEgLT5cbiMgOTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBUSEVOIClcbiMgMTAzMyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQyIC0+XG4jIDk5IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggRUxTRSApXG4jIDEwMzggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA0MyAtPlxubGV0XG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgbGFiXG4jIDEwNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMSkgaW5cbiMgMTAwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIGxhYiB3aXRoXG4gICAgfCBcIkVcIiAtPiBFVkVOVFxuICAgIHwgXCJFLVwiIC0+IE5VTExfRVZFTlRcbiAgICB8IFwiVFwiIC0+IFRJTUVcbiAgICB8IFwiVHNpbVwiIC0+IENQVVRJTUVcbiAgICB8IFwibG9nXCIgLT4gTE9HXG4gICAgfCBcInNpblwiIC0+IFNJTlVTXG4gICAgfCBcImNvc1wiIC0+IENPU0lOVVNcbiAgICB8IFwidGFuXCIgLT4gVEFOXG4gICAgfCBcImV4cFwiIC0+IEVYUE9ORU5UXG4gICAgfCBcImludFwiIC0+IEFCU1xuICAgIHwgXCJtb2RcIiAtPiBNT0RcbiAgICB8IFwic3FydFwiIC0+IFNRUlRcbiAgICB8IFwidHJ1ZVwiIC0+IFRSVUVcbiAgICB8IFwiZmFsc2VcIiAtPiBGQUxTRVxuICAgIHwgXCJwaVwiIC0+IEZMT0FUICgzLjE0MTU5MjY1KVxuICAgIHwgXCJtYXhcIiAtPiBNQVhcbiAgICB8IFwibWluXCIgLT4gTUlOXG4gICAgfCBcIkVtYXhcIiAtPiBFTUFYXG4gICAgfCBcIlRtYXhcIiAtPiBUTUFYXG4gICAgfCBcIm5vdFwiIC0+IE5PVFxuICAgIHwgXyBhcyBzIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgKFwiVW5rbm93biBwcmltaXRpdmU6IFwiXnMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuICAgIClcbiMgMTA3NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDQ0IC0+XG5sZXRcbiMgMTI3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgIHNcbiMgMTA4MCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIChsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKyAxKSBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxMjcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgKFxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgXCJBUFBMWVwiIC0+IEFQUExZXG4gICAgfCBcIkRFTFwiIC0+IERFTEVURVxuICAgIHwgXCJBRERcIiAtPiBJTlRST1xuICAgIHwgXCJTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG4gICAgfCBcIlNUT1BcIiAtPiBTVE9QXG4gICAgfCBcIkRJTlwiIC0+IEZMVVhcbiAgICB8IFwiVFJBQ0tcIiAtPiBUUkFDS1xuICAgIHwgXCJVUERBVEVcIiAtPiBBU1NJR05cbiAgICB8IFwiUFJJTlRcIiAtPiBQUklOVEZcbiAgICB8IFwiUFJJTlRGXCIgLT4gUFJJTlRGXG4gICAgfCBcIlBMT1RFTlRSWVwiIC0+IFBMT1RFTlRSWVxuICAgIHwgXCJSVU5cIiAtPiBSVU5cbiAgICB8IFwiU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0ZcbiAgICB8IHMgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbmtub3duIGludGVydmVudGlvbjogXCJecyxcbiAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuICAgICAgICAgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG4gICAgKVxuIyAxMTAzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDUgLT5cbiMgMTQ3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBsZXhidWYuTGV4aW5nLmxleF9lb2ZfcmVhY2hlZCA8LSB0cnVlOyBFT0YgKVxuIyAxMTA4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNDYgLT5cbmxldFxuIyAxNDggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgY1xuIyAxMTE0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZV9jaGFyIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgaW5cbiMgMTQ4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgKCByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgIChcIlVua25vd24gY2hhcmFjdGVyOiBcIl5TdHJpbmcubWFrZSAxIGMsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSApXG4jIDExMjEgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCBfX29jYW1sX2xleF9zdGF0ZSAtPiBsZXhidWYuTGV4aW5nLnJlZmlsbF9idWZmIGxleGJ1ZjtcbiAgICAgIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGlubGluZV9jb21tZW50IGFjYyBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSAyICgtMSk7IF9fb2NhbWxfbGV4X2lubGluZV9jb21tZW50X3JlYyBhY2MgbGV4YnVmIDc5XG5hbmQgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxubGV0XG4jIDE1NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTEzNCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTEzOCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEgLT5cbmxldFxuIyAxNTUgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNDQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfbWVtLigwKSBpblxuIyAxNTYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE0OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDIgLT5cbmxldFxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICB4XG4jIDExNTQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAoIExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDExNTggXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCAzIC0+XG5sZXRcbiMgMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTE2NCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMikgaW5cbiMgMTU4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBpbmxpbmVfY29tbWVudCAoeDo6YWNjKSBsZXhidWYgKVxuIyAxMTY4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNCAtPlxubGV0XG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExNzQgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgKGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyArIDIpIGluXG4jIDE1OSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggaW5saW5lX2NvbW1lbnQgKHg6OmFjYykgbGV4YnVmIClcbiMgMTE3OCBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDUgLT5cbiMgMTYwIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICggU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldiBhY2MpIClcbiMgMTE4MyBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDYgLT5cbiMgMTYxIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgKCBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2IGFjYykgKVxuIyAxMTg4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgNyAtPlxuIyAxNjIgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICAgICAgICAgICggTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgKFwiKlxcblwiOjphY2MpIGxleGJ1ZiApXG4jIDExOTMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA4IC0+XG5sZXRcbiMgMTYzIFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4XG4jIDExOTkgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTY0IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAoIGlubGluZV9jb21tZW50ICh4OjphY2MpIGxleGJ1ZiApXG4jIDEyMDMgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbFwiXG5cbiAgfCA5IC0+XG5sZXRcbiMgMTY1IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhcbiMgMTIwOSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2xleGVyNC5tbGxcIlxuICAgICggcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAoXCJVbnRlcm1pbmF0ZWQgc3RyaW5nIGluIGNvbW1lbnQ6IFwiXngsXG4gICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1ZilcbiAgICAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgMTIxNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDEwIC0+XG4jIDE3MSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgKCBpbmxpbmVfY29tbWVudCAoXCIqL1wiOjooaW5saW5lX2NvbW1lbnQgW1wiLypcIl0gbGV4YnVmKTo6IGFjYykgbGV4YnVmIClcbiMgMTIyMSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IDExIC0+XG4jIDE3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgKCBMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyBpbmxpbmVfY29tbWVudCAoXCIvXFxuXCI6OmFjYykgbGV4YnVmIClcbiMgMTIyNiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGFjYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIHJlY292ZXJ5IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIDEwMFxuYW5kIF9fb2NhbWxfbGV4X3JlY292ZXJ5X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3NSBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmKVxuIyAxMjM4IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9yZWNvdmVyeV9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbjs7XG5cbiMgMTc3IFwiY29yZS9ncmFtbWFyL2tsZXhlcjQubWxsXCJcbiBcbiAgbGV0IHJlYyBhdXhfbW9kZWwgZXJyIGxleCA9XG4gIHRyeSBsZXQgb3V0ID0gS3BhcnNlcjQubW9kZWwgdG9rZW4gbGV4IGluIChvdXQsIExpc3QucmV2IGVycilcbiAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciBlIC0+XG4gICAgbGV0ICgpID0gcmVjb3ZlcnkgbGV4IGluXG4gICAgYXV4X21vZGVsIChlOjplcnIpIGxleFxuXG4gIGxldCBtb2RlbCBsZXggPSBhdXhfbW9kZWwgW10gbGV4XG5cbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWMgPVxuICAgIGxldCBkID0gb3Blbl9pbiBmaWMgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIDwtXG4gICAgICB7bGV4YnVmLkxleGluZy5sZXhfY3Vycl9wIHdpdGggTGV4aW5nLnBvc19mbmFtZSA9IGZpY30gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmljIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWMgaW5cbiAgICBsZXQgKG91dCxlcnIpID0gbW9kZWwgbGV4YnVmIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nZ2VyIFwiZG9uZUAuXCIgaW5cbiAgICBsZXQgKCkgPSBtYXRjaCBlcnIgd2l0aFxuICAgICAgfCBbXSAtPiAoKVxuICAgICAgfCAobXNnLHBvcyk6Ol8gLT5cbiAgICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgICAgZXhpdCAzIGluXG4gICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgIENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBvdXQgY29tcGlsXG5cbiMgMTI3MiBcImNvcmUvZ3JhbW1hci9rbGV4ZXI0Lm1sXCJcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgaXRlbSA9IHsgcmFuazogaW50OyBjb250ZW50OiBzdHJpbmcgfVxuXG50eXBlIGNhdGFsb2cgPSB7XG4gIGVsZW1lbnRzOiAoc3RyaW5nLCBpdGVtKSBIYXNodGJsLnQ7XG4gIGluZGV4OiBzdHJpbmcgb3B0aW9uIE1vZHMuRHluQXJyYXkudDtcbiAgYXN0OiBBc3QucGFyc2luZ19jb21waWwgb3B0aW9uIHJlZjtcbn1cblxudHlwZSBjYXRhbG9nX2l0ZW0gPSB7IHBvc2l0aW9uOiBpbnQ7IGlkOiBzdHJpbmcgfVxuXG5sZXQgd3JpdGVfY2F0YWxvZ19pdGVtIG9iIHsgcG9zaXRpb247IGlkIH0gPVxuICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwiaWRcIiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIG9iIGlkIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2ZpZWxkIFwicG9zaXRpb25cIiBZb2pzb24uQmFzaWMud3JpdGVfaW50IG9iIHBvc2l0aW9uIGluXG4gIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSdcblxubGV0IHJlYWRfY2F0YWxvZ19pdGVtIHAgbGIgPVxuICBsZXQgcG9zaXRpb24sIGlkLCBjb3VudCA9XG4gICAgWW9qc29uLkJhc2ljLnJlYWRfZmllbGRzXG4gICAgICAoZnVuIChwb3MsIGksIGMpIGtleSBwIGxiIC0+XG4gICAgICAgIGlmIGtleSA9IFwicG9zaXRpb25cIiB0aGVuXG4gICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50IHAgbGIsIGksIHN1Y2MgY1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgKCkgPSBhc3NlcnQgKGtleSA9IFwiaWRcIikgaW5cbiAgICAgICAgICBwb3MsIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBwIGxiLCBzdWNjIGNcbiAgICAgICAgKSlcbiAgICAgICgtMSwgXCJcIiwgMCkgcCBsYlxuICBpblxuICBsZXQgKCkgPSBhc3NlcnQgKGNvdW50ID0gMikgaW5cbiAgeyBwb3NpdGlvbjsgaWQgfVxuXG5sZXQgY3JlYXRlICgpID1cbiAge1xuICAgIGVsZW1lbnRzID0gSGFzaHRibC5jcmVhdGUgMTtcbiAgICBpbmRleCA9IE1vZHMuRHluQXJyYXkuY3JlYXRlIDEgTm9uZTtcbiAgICBhc3QgPSByZWYgTm9uZTtcbiAgfVxuXG5sZXQgcHV0IH5wb3NpdGlvbjpyYW5rIH5pZCB+Y29udGVudCBjYXRhbG9nID1cbiAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGNhdGFsb2cuZWxlbWVudHMgaWQgeyByYW5rOyBjb250ZW50IH0gaW5cbiAgbWF0Y2ggTW9kcy5EeW5BcnJheS5nZXQgY2F0YWxvZy5pbmRleCByYW5rIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIChTb21lIGlkKSBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcbiAgfCBTb21lIGFpZSAtPlxuICAgIFJlc3VsdC5FcnJvclxuICAgICAgKFwiU2xvdCBcIiBeIHN0cmluZ19vZl9pbnQgcmFuayBeIFwiIGlzIG5vdCBhdmFpbGFibGUuIFRoZXJlIGlzIGFscmVhZHkgXCJcbiAgICAgXiBhaWUpXG5cbmxldCBmaWxlX2NyZWF0ZSB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2cgPVxuICBpZiBIYXNodGJsLm1lbSBjYXRhbG9nLmVsZW1lbnRzIGlkIHRoZW5cbiAgICBSZXN1bHQuRXJyb3JcbiAgICAgIChcIkEgZmlsZSBjYWxsZWQgXFxcIlwiIF4gaWQgXiBcIlxcXCIgaXMgYWxyZWFkeSBwcmVzZW50IGluIHRoZSBjYXRhbG9nXCIpXG4gIGVsc2VcbiAgICBwdXQgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG5cbmxldCBmaWxlX21vdmUgfnBvc2l0aW9uIH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiTWlzc2luZyBmaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGluIHRoZSBjYXRhbG9nXCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiRmlsZSBjYXRhbG9nIGhhcyBzZXJpb3VzIHByb2JsZW1zXCJcbiAgfCBbIHsgcmFuazsgY29udGVudCB9IF0gLT5cbiAgICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IHJhbmsgTm9uZSBpblxuICAgIHB1dCB+cG9zaXRpb24gfmlkIH5jb250ZW50IGNhdGFsb2dcblxubGV0IGZpbGVfcGF0Y2ggfmlkIGNvbnRlbnQgY2F0YWxvZyA9XG4gIG1hdGNoIEhhc2h0YmwuZmluZF9hbGwgY2F0YWxvZy5lbGVtZW50cyBpZCB3aXRoXG4gIHwgW10gLT4gUmVzdWx0LkVycm9yIChcIlVua25vd24gZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIlwiKVxuICB8IF8gOjogXyA6OiBfIC0+IFJlc3VsdC5FcnJvciBcIlNlcmlvdXMgcHJvYmxlbXMgaW4gZmlsZSBjYXRhbG9nXCJcbiAgfCBbIHsgcmFuazsgXyB9IF0gLT5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgY2F0YWxvZy5lbGVtZW50cyBpZCB7IHJhbms7IGNvbnRlbnQgfSBpblxuICAgIGxldCAoKSA9IGNhdGFsb2cuYXN0IDo9IE5vbmUgaW5cbiAgICBSZXN1bHQuT2sgKClcblxubGV0IGZpbGVfZGVsZXRlIH5pZCBjYXRhbG9nID1cbiAgbWF0Y2ggSGFzaHRibC5maW5kX2FsbCBjYXRhbG9nLmVsZW1lbnRzIGlkIHdpdGhcbiAgfCBbXSAtPiBSZXN1bHQuRXJyb3IgKFwiTm8gZmlsZSBcXFwiXCIgXiBpZCBeIFwiXFxcIlwiKVxuICB8IF8gOjogXyA6OiBfIC0+IGZhaWx3aXRoIFwiQmlnIHRyb3VibGVzIGluIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IF8gfSBdIC0+XG4gICAgbGV0ICgpID0gTW9kcy5EeW5BcnJheS5zZXQgY2F0YWxvZy5pbmRleCByYW5rIE5vbmUgaW5cbiAgICBsZXQgKCkgPSBIYXNodGJsLnJlbW92ZSBjYXRhbG9nLmVsZW1lbnRzIGlkIGluXG4gICAgbGV0ICgpID0gY2F0YWxvZy5hc3QgOj0gTm9uZSBpblxuICAgIFJlc3VsdC5PayAoKVxuXG5sZXQgZmlsZV9nZXQgfmlkIGNhdGFsb2cgPVxuICBtYXRjaCBIYXNodGJsLmZpbmRfYWxsIGNhdGFsb2cuZWxlbWVudHMgaWQgd2l0aFxuICB8IFtdIC0+IFJlc3VsdC5FcnJvciAoXCJGaWxlIFxcXCJcIiBeIGlkIF4gXCJcXFwiIGRvZXMgbm90IGV4aXN0XCIpXG4gIHwgXyA6OiBfIDo6IF8gLT4gUmVzdWx0LkVycm9yIFwiQ29ycnVwdGVkIGZpbGUgY2F0YWxvZ1wiXG4gIHwgWyB7IHJhbms7IGNvbnRlbnQgfSBdIC0+IFJlc3VsdC5PayAoY29udGVudCwgcmFuaylcblxubGV0IGNhdGFsb2cgY2F0YWxvZyA9XG4gIE1vZHMuRHluQXJyYXkuZm9sZF9yaWdodGlcbiAgICAoZnVuIHBvc2l0aW9uIHggYWNjIC0+XG4gICAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgIHwgU29tZSBpZCAtPiB7IHBvc2l0aW9uOyBpZCB9IDo6IGFjYylcbiAgICBjYXRhbG9nLmluZGV4IFtdXG5cbmxldCBwYXJzZSB5aWVsZCBjYXRhbG9nID1cbiAgbWF0Y2ggIShjYXRhbG9nLmFzdCkgd2l0aFxuICB8IFNvbWUgY29tcGlsZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBjb21waWxlKVxuICB8IE5vbmUgLT5cbiAgICBNb2RzLkR5bkFycmF5LmZvbGRfcmlnaHRpXG4gICAgICAoZnVuIF8geCBhY2MgLT5cbiAgICAgICAgbWF0Y2ggeCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhY2NcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZmlsZSA9IEhhc2h0YmwuZmluZCBjYXRhbG9nLmVsZW1lbnRzIHggaW5cbiAgICAgICAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fc3RyaW5nIGZpbGUuY29udGVudCBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3AgPC1cbiAgICAgICAgICAgICAgeyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3Agd2l0aCBMZXhpbmcucG9zX2ZuYW1lID0geCB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhY2MgPj49IGZ1biAoY29tcGlsZSwgZXJyKSAtPlxuICAgICAgICAgIGxldCBjb21waWxlID1cbiAgICAgICAgICAgIHsgY29tcGlsZSB3aXRoIEFzdC5maWxlbmFtZXMgPSB4IDo6IGNvbXBpbGUuQXN0LmZpbGVuYW1lcyB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBMd3QuY2F0Y2hcbiAgICAgICAgICAgIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgTHd0LndyYXAxIEtsZXhlcjQubW9kZWwgbGV4YnVmID4+PSBmdW4gKGluc3RzLCBlcnInKSAtPlxuICAgICAgICAgICAgICB5aWVsZCAoKSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKENzdC5hcHBlbmRfdG9fYXN0X2NvbXBpbCBpbnN0cyBjb21waWxlLCBlcnInIEAgZXJyKSlcbiAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICB8IEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSlcbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsIChtZXNzYWdlLCByYW5nZSlcbiAgICAgICAgICAgICAgfCBFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChjb21waWxlLCAobWVzc2FnZSwgcmFuZ2UpIDo6IGVycilcbiAgICAgICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgKCBjb21waWxlLFxuICAgICAgICAgICAgICAgICAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoXCJSdW50aW1lIGVycm9yIFwiIF4gZXJyb3IpIDo6IGVyciApXG4gICAgICAgICAgICAgIHwgZXhuIC0+XG4gICAgICAgICAgICAgICAgbGV0IG1lc3NhZ2UgPSBQcmludGV4Yy50b19zdHJpbmcgZXhuIGluXG4gICAgICAgICAgICAgICAgTHd0LnJldHVybiAoY29tcGlsZSwgTG9jLmFubm90X3dpdGhfZHVtbXkgbWVzc2FnZSA6OiBlcnIpKSlcbiAgICAgIGNhdGFsb2cuaW5kZXhcbiAgICAgIChMd3QucmV0dXJuIChBc3QuZW1wdHlfY29tcGlsLCBbXSkpXG4gICAgPj49ICggZnVuY3Rpb25cbiAgICB8IGNvbXBpbGUsIFtdIC0+XG4gICAgICBsZXQgKCkgPSBjYXRhbG9nLmFzdCA6PSBTb21lIGNvbXBpbGUgaW5cbiAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGNvbXBpbGUpXG4gICAgfCBfLCBlcnIgLT5cbiAgICAgIGxldCBlcnIgPVxuICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgIChmdW4gKCh0ZXh0LCBwKSBhcyB4KSAtPlxuICAgICAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICAgICAgaWYgTG9jLmlzX2Fubm90ZWRfd2l0aF9kdW1teSB4IHRoZW5cbiAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICBTb21lIHBcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7IFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjsgcmFuZ2U7IHRleHQgfSlcbiAgICAgICAgICBlcnJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBlcnIpIClcblxubGV0IG92ZXJ3cml0ZSBmaWxlbmFtZSBhc3QgY2F0YWxvZyA9XG4gIGxldCBjb250ZW50ID0gRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBBc3QucHJpbnRfcGFyc2luZ19jb21waWxfa2FwcGEgYXN0IGluXG4gIGxldCBpdCA9IHsgcmFuayA9IDA7IGNvbnRlbnQgfSBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlc2V0IGNhdGFsb2cuZWxlbWVudHMgaW5cbiAgbGV0ICgpID0gSGFzaHRibC5hZGQgY2F0YWxvZy5lbGVtZW50cyBmaWxlbmFtZSBpdCBpblxuICBsZXQgKCkgPVxuICAgIE1vZHMuRHluQXJyYXkuaXRlcmlcbiAgICAgIChmdW4gaSBfIC0+IE1vZHMuRHluQXJyYXkuc2V0IGNhdGFsb2cuaW5kZXggaSBOb25lKVxuICAgICAgY2F0YWxvZy5pbmRleFxuICBpblxuICBsZXQgKCkgPSBNb2RzLkR5bkFycmF5LnNldCBjYXRhbG9nLmluZGV4IDAgKFNvbWUgZmlsZW5hbWUpIGluXG4gIGNhdGFsb2cuYXN0IDo9IFNvbWUgYXN0XG4iLCJ0eXBlIHRva2VuID1cbiAgfCBFT0ZcbiAgfCBORVdMSU5FXG4gIHwgU0VNSUNPTE9OXG4gIHwgQ09NTUFcbiAgfCBET1RcbiAgfCBPUF9QQVJcbiAgfCBDTF9QQVJcbiAgfCBPUF9DVVJcbiAgfCBDTF9DVVJcbiAgfCBBVFxuICB8IFRZUEVcbiAgfCBMQVJcbiAgfCBDUFVUSU1FXG4gIHwgRU1BWFxuICB8IFRNQVhcbiAgfCBQTE9URU5UUllcbiAgfCBERUxFVEVcbiAgfCBJTlRST1xuICB8IFRSQUNLXG4gIHwgRE9cbiAgfCBTRVRcbiAgfCBSRVBFQVRcbiAgfCBTUEVDSUVTX09GXG4gIHwgVU5USUxcbiAgfCBMT0dcbiAgfCBQTFVTXG4gIHwgTVVMVFxuICB8IE1JTlVTXG4gIHwgTUFYXG4gIHwgTUlOXG4gIHwgRElWXG4gIHwgU0lOVVNcbiAgfCBDT1NJTlVTXG4gIHwgVEFOXG4gIHwgUE9XXG4gIHwgQUJTXG4gIHwgTU9EVUxPXG4gIHwgU1FSVFxuICB8IEVYUE9ORU5UXG4gIHwgSU5GSU5JVFlcbiAgfCBUSU1FXG4gIHwgRVZFTlRcbiAgfCBOVUxMX0VWRU5UXG4gIHwgUElQRVxuICB8IEVRVUFMXG4gIHwgQU5EXG4gIHwgT1JcbiAgfCBOT1RcbiAgfCBHUkVBVEVSXG4gIHwgU01BTExFUlxuICB8IFRSVUVcbiAgfCBGQUxTRVxuICB8IERJRkZcbiAgfCBLQVBQQV9SQVJcbiAgfCBLQVBQQV9MUkFSXG4gIHwgS0FQUEFfTE5LXG4gIHwgU0lHTkFUVVJFXG4gIHwgSU5JVFxuICB8IExFVFxuICB8IFBMT1RcbiAgfCBQRVJUXG4gIHwgT0JTXG4gIHwgVE9LRU5cbiAgfCBDT05GSUdcbiAgfCBLQVBQQV9XTERcbiAgfCBLQVBQQV9TRU1JXG4gIHwgRkxVWFxuICB8IEFTU0lHTlxuICB8IFBSSU5URlxuICB8IFNUT1BcbiAgfCBTTkFQU0hPVFxuICB8IFJVTlxuICB8IFRIRU5cbiAgfCBFTFNFXG4gIHwgQUxBUk1cbiAgfCBBUFBMWVxuICB8IElOVCBvZiAoaW50KVxuICB8IElEIG9mIChzdHJpbmcpXG4gIHwgS0FQUEFfTVJLIG9mIChzdHJpbmcpXG4gIHwgTEFCRUwgb2YgKHN0cmluZylcbiAgfCBGTE9BVCBvZiAoZmxvYXQpXG4gIHwgU1RSSU5HIG9mIChzdHJpbmcpXG5cbm9wZW4gUGFyc2luZzs7XG5sZXQgXyA9IHBhcnNlX2Vycm9yOztcbiMgMTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgbGV0IGFkZF9wb3MgeCA9XG4gICAgKHgsTG9jLm9mX3BvcyAoUGFyc2luZy5zeW1ib2xfc3RhcnRfcG9zICgpKSAoUGFyc2luZy5zeW1ib2xfZW5kX3BvcyAoKSkpXG4gIGxldCByaHNfcG9zIGkgPVxuICBMb2Mub2ZfcG9zIChQYXJzaW5nLnJoc19zdGFydF9wb3MgaSkgKFBhcnNpbmcucmhzX2VuZF9wb3MgaSlcbiMgOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxubGV0IHl5dHJhbnNsX2NvbnN0ID0gW3xcbiAgICAwICgqIEVPRiAqKTtcbiAgMjU3ICgqIE5FV0xJTkUgKik7XG4gIDI1OCAoKiBTRU1JQ09MT04gKik7XG4gIDI1OSAoKiBDT01NQSAqKTtcbiAgMjYwICgqIERPVCAqKTtcbiAgMjYxICgqIE9QX1BBUiAqKTtcbiAgMjYyICgqIENMX1BBUiAqKTtcbiAgMjYzICgqIE9QX0NVUiAqKTtcbiAgMjY0ICgqIENMX0NVUiAqKTtcbiAgMjY1ICgqIEFUICopO1xuICAyNjYgKCogVFlQRSAqKTtcbiAgMjY3ICgqIExBUiAqKTtcbiAgMjY4ICgqIENQVVRJTUUgKik7XG4gIDI2OSAoKiBFTUFYICopO1xuICAyNzAgKCogVE1BWCAqKTtcbiAgMjcxICgqIFBMT1RFTlRSWSAqKTtcbiAgMjcyICgqIERFTEVURSAqKTtcbiAgMjczICgqIElOVFJPICopO1xuICAyNzQgKCogVFJBQ0sgKik7XG4gIDI3NSAoKiBETyAqKTtcbiAgMjc2ICgqIFNFVCAqKTtcbiAgMjc3ICgqIFJFUEVBVCAqKTtcbiAgMjc4ICgqIFNQRUNJRVNfT0YgKik7XG4gIDI3OSAoKiBVTlRJTCAqKTtcbiAgMjgwICgqIExPRyAqKTtcbiAgMjgxICgqIFBMVVMgKik7XG4gIDI4MiAoKiBNVUxUICopO1xuICAyODMgKCogTUlOVVMgKik7XG4gIDI4NCAoKiBNQVggKik7XG4gIDI4NSAoKiBNSU4gKik7XG4gIDI4NiAoKiBESVYgKik7XG4gIDI4NyAoKiBTSU5VUyAqKTtcbiAgMjg4ICgqIENPU0lOVVMgKik7XG4gIDI4OSAoKiBUQU4gKik7XG4gIDI5MCAoKiBQT1cgKik7XG4gIDI5MSAoKiBBQlMgKik7XG4gIDI5MiAoKiBNT0RVTE8gKik7XG4gIDI5MyAoKiBTUVJUICopO1xuICAyOTQgKCogRVhQT05FTlQgKik7XG4gIDI5NSAoKiBJTkZJTklUWSAqKTtcbiAgMjk2ICgqIFRJTUUgKik7XG4gIDI5NyAoKiBFVkVOVCAqKTtcbiAgMjk4ICgqIE5VTExfRVZFTlQgKik7XG4gIDI5OSAoKiBQSVBFICopO1xuICAzMDAgKCogRVFVQUwgKik7XG4gIDMwMSAoKiBBTkQgKik7XG4gIDMwMiAoKiBPUiAqKTtcbiAgMzAzICgqIE5PVCAqKTtcbiAgMzA0ICgqIEdSRUFURVIgKik7XG4gIDMwNSAoKiBTTUFMTEVSICopO1xuICAzMDYgKCogVFJVRSAqKTtcbiAgMzA3ICgqIEZBTFNFICopO1xuICAzMDggKCogRElGRiAqKTtcbiAgMzA5ICgqIEtBUFBBX1JBUiAqKTtcbiAgMzEwICgqIEtBUFBBX0xSQVIgKik7XG4gIDMxMSAoKiBLQVBQQV9MTksgKik7XG4gIDMxMiAoKiBTSUdOQVRVUkUgKik7XG4gIDMxMyAoKiBJTklUICopO1xuICAzMTQgKCogTEVUICopO1xuICAzMTUgKCogUExPVCAqKTtcbiAgMzE2ICgqIFBFUlQgKik7XG4gIDMxNyAoKiBPQlMgKik7XG4gIDMxOCAoKiBUT0tFTiAqKTtcbiAgMzE5ICgqIENPTkZJRyAqKTtcbiAgMzIwICgqIEtBUFBBX1dMRCAqKTtcbiAgMzIxICgqIEtBUFBBX1NFTUkgKik7XG4gIDMyMiAoKiBGTFVYICopO1xuICAzMjMgKCogQVNTSUdOICopO1xuICAzMjQgKCogUFJJTlRGICopO1xuICAzMjUgKCogU1RPUCAqKTtcbiAgMzI2ICgqIFNOQVBTSE9UICopO1xuICAzMjcgKCogUlVOICopO1xuICAzMjggKCogVEhFTiAqKTtcbiAgMzI5ICgqIEVMU0UgKik7XG4gIDMzMCAoKiBBTEFSTSAqKTtcbiAgMzMxICgqIEFQUExZICopO1xuICAgIDB8XVxuXG5sZXQgeXl0cmFuc2xfYmxvY2sgPSBbfFxuICAzMzIgKCogSU5UICopO1xuICAzMzMgKCogSUQgKik7XG4gIDMzNCAoKiBLQVBQQV9NUksgKik7XG4gIDMzNSAoKiBMQUJFTCAqKTtcbiAgMzM2ICgqIEZMT0FUICopO1xuICAzMzcgKCogU1RSSU5HICopO1xuICAgIDB8XVxuXG5sZXQgeXlsaHMgPSBcIlxcMjU1XFwyNTVcXFxuXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMDhcXDAwMFxcMDA4XFwwMDBcXFxuXFwwMDhcXDAwMFxcMDA4XFwwMDBcXDAwOFxcMDAwXFwwMTBcXDAwMFxcMDEwXFwwMDBcXDAxMFxcMDAwXFwwMTBcXDAwMFxcMDEzXFwwMDBcXFxuXFwwMTNcXDAwMFxcMDE1XFwwMDBcXDAxNVxcMDAwXFwwMTdcXDAwMFxcMDE3XFwwMDBcXDAxN1xcMDAwXFwwMTJcXDAwMFxcMDEyXFwwMDBcXFxuXFwwMTJcXDAwMFxcMDEyXFwwMDBcXDAwM1xcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIzXFwwMDBcXFxuXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyMVxcMDAwXFwwMjFcXDAwMFxcMDExXFwwMDBcXFxuXFwwMTFcXDAwMFxcMDExXFwwMDBcXDAxMVxcMDAwXFwwMjhcXDAwMFxcMDI4XFwwMDBcXDAyOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXFxuXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMThcXDAwMFxcMDE4XFwwMDBcXDAxOFxcMDAwXFwwMDRcXDAwMFxcMDI5XFwwMDBcXFxuXFwwMjlcXDAwMFxcMDI5XFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDMwXFwwMDBcXDAzMFxcMDAwXFwwMzBcXDAwMFxcMDI1XFwwMDBcXFxuXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAyNVxcMDAwXFwwMjVcXDAwMFxcMDI1XFwwMDBcXDAwNlxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuXFwwMTZcXDAwMFxcMDE2XFwwMDBcXDAxNlxcMDAwXFwwMzNcXDAwMFxcMDMzXFwwMDBcXDAzM1xcMDAwXFwwMzNcXDAwMFxcMDM0XFwwMDBcXFxuXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMzRcXDAwMFxcMDM0XFwwMDBcXDAzNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyNFxcMDAwXFwwMjRcXDAwMFxcMDI0XFwwMDBcXFxuXFwwMjRcXDAwMFxcMDI0XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAyN1xcMDAwXFwwMjdcXDAwMFxcMDI3XFwwMDBcXFxuXFwwMjdcXDAwMFxcMDI3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNVxcMDAwXFwwMzVcXDAwMFxcMDM1XFwwMDBcXDAzNlxcMDAwXFwwMzZcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAxNFxcMDAwXFwwMTRcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMzlcXDAwMFxcMDA5XFwwMDBcXFxuXFwwMDlcXDAwMFxcMDM3XFwwMDBcXDAzN1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDM4XFwwMDBcXFxuXFwwMzhcXDAwMFxcMDQzXFwwMDBcXDA0M1xcMDAwXFwwNDNcXDAwMFxcMDQzXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXFxuXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDA0MlxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXFxuXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQxXFwwMDBcXDA0MVxcMDAwXFwwNDFcXDAwMFxcMDQ0XFwwMDBcXFxuXFwwNDRcXDAwMFxcMDQ0XFwwMDBcXDA0NVxcMDAwXFwwNDVcXDAwMFxcMDQ1XFwwMDBcXDA0NVxcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ2XFwwMDBcXDA0NlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXFxuXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWxlbiA9IFwiXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwNVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAxXFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDFcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMVxcMDAwXFwwMDNcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwNVxcMDAwXFwwMDJcXDAwMFxcMDA0XFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcXG5cXDAwM1xcMDAwXFwwMDFcXDAwMFxcMDA0XFwwMDBcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMVxcMDAwXFwwMDRcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDVcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMVxcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwM1xcMDAwXFwwMDJcXDAwMFxcMDAzXFwwMDBcXDAwNFxcMDAwXFwwMDVcXDAwMFxcXG5cXDAwNlxcMDAwXFwwMDRcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcXG5cXDAwNVxcMDAwXFwwMDZcXDAwMFxcMDA0XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA2XFwwMDBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwM1xcMDAwXFwwMDNcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcXG5cXDAwMlxcMDAwXFwwMDFcXDAwMFxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDJcXDAwMFxcMDAyXFwwMDBcXDAwMlxcMDAwXCJcblxubGV0IHl5ZGVmcmVkID0gXCJcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDhcXDAwMFxcMDAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE1MFxcMDAwXFwxNTFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMFxcMDAzXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjAzXFwwMDBcXDIwMlxcMDAwXFxcblxcMDAwXFwwMDBcXDA1NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjA1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwM1xcMDAwXFwxMDFcXDAwMFxcMTAyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA5N1xcMDAwXFwxMDhcXDAwMFxcMTA5XFwwMDBcXDExMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OVxcMDAwXFxcblxcMDcwXFwwMDBcXDA5OVxcMDAwXFwxMDZcXDAwMFxcMTA3XFwwMDBcXDA5OFxcMDAwXFwyMDdcXDAwMFxcMDAwXFwwMDBcXDEwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyNFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDExMlxcMDAwXFwxMTNcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFxcblxcMDgyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTFcXDAwMFxcMDAwXFwwMDBcXDAwOVxcMDAwXFxcblxcMDEzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDBcXDAxN1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE4XFwwMDBcXDAwMFxcMDAwXFwwMTVcXDAwMFxcMDEwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDk0XFwwMDBcXDA5NVxcMDAwXFwwOTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFxcblxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MVxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDA1MVxcMDAwXFxcblxcMTk5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMVxcMDAwXFwwMDBcXDAwMFxcMDM1XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDEyMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMTdcXDAwMFxcMTE4XFwwMDBcXDExOVxcMDAwXFxcblxcMTIwXFwwMDBcXDEyMVxcMDAwXFwxMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDAwXFxcblxcMDAwXFwwMDBcXDA2N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDI3XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDE0NVxcMDAwXFwxNTVcXDAwMFxcMDAwXFwwMDBcXDAzNlxcMDAwXFxcblxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwNDZcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwMFxcMDAwXFxcblxcMDQ1XFwwMDBcXDAwMFxcMDAwXFwwMzhcXDAwMFxcMTExXFwwMDBcXDA2OFxcMDAwXFwxMTRcXDAwMFxcMTE1XFwwMDBcXDAwMFxcMDAwXFxcblxcMTA0XFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI1XFwwMDBcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDg5XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDU4XFwwMDBcXDA1NVxcMDAwXFwwNTlcXDAwMFxcMDQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDg1XFwwMDBcXDE4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAyMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwMFxcMDAwXFwwMDBcXDAzNFxcMDAwXFxcblxcMDg4XFwwMDBcXDAwMFxcMDAwXFwxMzlcXDAwMFxcMDAwXFwwMDBcXDE0MFxcMDAwXFwwMDBcXDAwMFxcMTM0XFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTRcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwMDBcXDAwMFxcMTMyXFwwMDBcXDA4N1xcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjJcXDAwMFxcMTY1XFwwMDBcXDAwMFxcMDAwXFwxODVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE5NVxcMDAwXFwxNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDAzMVxcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDEzNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMTY2XFwwMDBcXDAwMFxcMDAwXFwxNjBcXDAwMFxcMDAwXFwwMDBcXDE2M1xcMDAwXFwxNjRcXDAwMFxcMDAwXFwwMDBcXDE3OVxcMDAwXFxcblxcMDAwXFwwMDBcXDE5MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NlxcMDAwXFwxOTFcXDAwMFxcMTkzXFwwMDBcXDE5MlxcMDAwXFxcblxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNzZcXDAwMFxcMTk3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTcwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDBcXDE2N1xcMDAwXFwxNDhcXDAwMFxcMTgwXFwwMDBcXDAwMFxcMDAwXFwxODFcXDAwMFxcMTg4XFwwMDBcXDE4OVxcMDAwXFxcblxcMTc3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTcxXFwwMDBcXDAwMFxcMDAwXFwxNzJcXDAwMFxcMTY4XFwwMDBcXDAwMFxcMDAwXFxcblxcMTgyXFwwMDBcXDE3OFxcMDAwXFwxOTRcXDAwMFxcMTczXFwwMDBcXDE2OVxcMDAwXCJcblxubGV0IHl5ZGdvdG8gPSBcIlxcMDA1XFwwMDBcXFxuXFwwMjJcXDAwMFxcMDQ3XFwwMDBcXDA1MFxcMDAwXFwwNzhcXDAwMFxcMDIzXFwwMDBcXDAyNFxcMDAwXFwwNzlcXDAwMFxcMDI1XFwwMDBcXFxuXFwwOTZcXDAwMFxcMTAwXFwwMDBcXDEwM1xcMDAwXFwxMDhcXDAwMFxcMjAzXFwwMDBcXDE2NVxcMDAwXFwxMDlcXDAwMFxcMDgwXFwwMDBcXFxuXFwwNDZcXDAwMVxcMDkyXFwwMDBcXDA0OFxcMDAwXFwwNDlcXDAwMFxcMjIyXFwwMDBcXDAyNlxcMDAwXFwxNDFcXDAwMFxcMDgyXFwwMDBcXFxuXFwwMjdcXDAwMFxcMTQyXFwwMDBcXDA4M1xcMDAwXFwwODRcXDAwMFxcMDI4XFwwMDBcXDA5M1xcMDAwXFwxMjRcXDAwMFxcMTIxXFwwMDBcXFxuXFwwODVcXDAwMFxcMDg2XFwwMDBcXDIxMFxcMDAwXFwwMTdcXDAwMVxcMDI5XFwwMDBcXDAyM1xcMDAxXFwwMzBcXDAwMFxcMDA0XFwwMDFcXFxuXFwwMDVcXDAwMVxcMDI0XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDc1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVwiXG5cbmxldCB5eXNpbmRleCA9IFwiXFwwMDNcXDAwMlxcXG5cXDA4NVxcMDAyXFwxNjBcXDAwMlxcMTQ0XFwyNTVcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODVcXDAwMlxcXG5cXDE4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyMFxcMDA0XFwwMzJcXDI1NVxcMTQ3XFwwMDRcXDIzM1xcMjU0XFwyMDFcXDAwNFxcXG5cXDAwNFxcMjU1XFwyMzNcXDI1NFxcMjE1XFwyNTRcXDIxN1xcMjU0XFwyMTJcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMTZcXDAwMFxcXG5cXDAxNlxcMDAwXFwwMDZcXDI1NVxcMTM4XFwyNTVcXDE3MlxcMDAwXFwwODlcXDI1NVxcMjMyXFwyNTRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE0NFxcMjU1XFwwMDBcXDAwMFxcMjU1XFwwMDRcXDA1M1xcMDA1XFwwNjRcXDI1NVxcMjE1XFwwMDVcXDIxNVxcMDA1XFwxMDZcXDI1NVxcXG5cXDIxNVxcMDA1XFwyMTVcXDAwNVxcMjE1XFwwMDVcXDE2MVxcMDA1XFwxNDBcXDAwN1xcMDY4XFwyNTVcXDAwMFxcMDAwXFwwNTlcXDI1NVxcXG5cXDEzN1xcMjU1XFwwMDBcXDAwMFxcMTI3XFwwMDBcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwxNDBcXDAwN1xcMTQwXFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwyNTVcXDE0MVxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcXG5cXDAyMlxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxOTBcXDI1NVxcXG5cXDAwMFxcMDAwXFwwMzJcXDAwN1xcMDE1XFwwMDFcXDI1MFxcMjU0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MFxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMTlcXDI1NVxcMDc2XFwyNTVcXDAwMFxcMDAwXFwyMzRcXDAwNlxcMTA3XFwwMDVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAxXFwyMzRcXDAwNlxcMTI5XFwyNTVcXDAwMFxcMDAwXFwwMThcXDAwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjBcXDI1NVxcXG5cXDIzNFxcMDA2XFwwMTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjBcXDAwNFxcMTcyXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwNlxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwxODJcXDAwMVxcMjQ0XFwyNTVcXDI1MVxcMjU1XFwwMDBcXDAwMFxcXG5cXDAwNFxcMDAxXFwwMDBcXDAwMFxcMDA0XFwwMDFcXDE4MFxcMDAwXFwxODBcXDAwMFxcMjM0XFwwMDZcXDA5NlxcMDAwXFwyNDVcXDI1NVxcXG5cXDE2MlxcMDAzXFwwOTBcXDI1NVxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNDlcXDI1NVxcMTAxXFwwMDFcXDIzNFxcMDA2XFwwMDBcXDAwMFxcMTQ0XFwyNTVcXDAwMFxcMDAwXFwxNzRcXDI1NVxcXG5cXDA0MlxcMjU1XFwwMDBcXDAwMFxcMTgwXFwwMDFcXDE0MFxcMDA3XFwxNDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMjU1XFwwOTlcXDAwMFxcMjM0XFwwMDZcXDAwMFxcMDAwXFwyMzRcXDAwNlxcXG5cXDIzNFxcMDA2XFwyMzRcXDAwNlxcMjM0XFwwMDZcXDAwMFxcMDAwXFwyMzRcXDAwNlxcMjM0XFwwMDZcXDIzNFxcMDA2XFwwODZcXDAwN1xcXG5cXDA4NlxcMDA3XFwwODZcXDAwN1xcMDg2XFwwMDdcXDA4NlxcMDA3XFwwODZcXDAwN1xcMDAwXFwwMDBcXDEyNVxcMjU1XFwxMTFcXDAwMFxcXG5cXDA4MFxcMDAwXFwxNjFcXDAwMFxcMDAwXFwwMDBcXDEyMVxcMDAwXFwyMzRcXDAwNlxcMjQ1XFwyNTVcXDIwNlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA4M1xcMDAxXFwwMDBcXDAwMFxcMjA2XFwwMDBcXDA4M1xcMDAxXFwwMDBcXDAwMFxcMTcwXFwyNTVcXDAwMFxcMDAwXFwxNDRcXDI1NVxcXG5cXDA5MVxcMjU1XFwxNjBcXDI1NVxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NVxcMDAwXFwyMzRcXDAwNlxcXG5cXDE3NVxcMDAwXFwyMThcXDAwMFxcMDA2XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcXG5cXDIwNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTVcXDAwNVxcXG5cXDE4MFxcMDAwXFwyMTVcXDAwNVxcMTgwXFwwMDBcXDAwMFxcMDAwXFwwODNcXDAwMVxcMDgzXFwwMDFcXDIxNVxcMDA1XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwODNcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNTFcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDA4M1xcMDAxXFwwODNcXDAwMVxcMDgzXFwwMDFcXDIwN1xcMDAwXFwwMDBcXDI1NVxcXG5cXDA4OVxcMDAxXFwxODBcXDAwMVxcMDY1XFwwMDBcXDE4MFxcMDAxXFwwNjVcXDAwMFxcMDE2XFwwMDFcXDAxNlxcMDAxXFwwMDBcXDAwMFxcXG5cXDAyNlxcMDAxXFwwMzJcXDAwN1xcMDA4XFwyNTVcXDA0M1xcMDAxXFwwNTJcXDAwMVxcMDgzXFwwMDFcXDA4MFxcMDAxXFwxNDRcXDI1NVxcXG5cXDExN1xcMDAwXFwxNDRcXDI1NVxcMTQ0XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwyNTVcXDAwMFxcMDAwXFwwOTVcXDAwMFxcXG5cXDA1MFxcMDAxXFwyMzRcXDAwNlxcMTI2XFwwMDZcXDA3MlxcMDA2XFwwMDBcXDAwMFxcMDI3XFwyNTVcXDA4MVxcMDAxXFwwOTdcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMVxcMTE5XFwwMDFcXDE0MFxcMDA3XFwwMzJcXDAwN1xcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc2XFwyNTVcXDA4NVxcMDAxXFwwMDdcXDI1NVxcMTA1XFwwMDFcXDE0MlxcMjU1XFwwMDBcXDAwMFxcXG5cXDEyMVxcMDAwXFwwMDBcXDAwMFxcMTExXFwwMDFcXDIzNFxcMDA2XFwyMzRcXDAwNlxcMDAwXFwwMDBcXDExN1xcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzRcXDAwNlxcMDAwXFwwMDBcXDEzMFxcMDAxXFwwMDBcXDAwMFxcMTMxXFwwMDFcXDAwMFxcMDAwXFwwOTZcXDAwMVxcXG5cXDEyMFxcMDAxXFwyMzdcXDAwMFxcMDAwXFwwMDBcXDE1MVxcMDAwXFwwMDBcXDAwMFxcMTYzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA5MVxcMDAxXFwwOTJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDI1NVxcMDAwXFwwMDBcXDEyNVxcMDAxXFwwMTJcXDI1NVxcXG5cXDAzMVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0M1xcMDAxXFwxNDBcXDI1NVxcMDAwXFwwMDBcXDIzNFxcMDA2XFwyNTBcXDI1NFxcXG5cXDI1MFxcMjU0XFwwMDBcXDAwMFxcMDgzXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwyNTVcXDEzM1xcMDAxXFwwMjFcXDI1NVxcXG5cXDAwMFxcMDAwXFwxNDNcXDAwMVxcMDAwXFwwMDBcXDE4MlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzMlxcMDAxXFwwMDBcXDAwMFxcXG5cXDA1N1xcMjU1XFwwMDBcXDAwMFxcMDIyXFwyNTVcXDAyNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE3N1xcMDAxXFwwMzhcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTBcXDI1NFxcMTM1XFwwMDFcXDAwMFxcMDAwXFwxMThcXDI1NVxcXG5cXDAyNFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNDNcXDAwMVxcMTM4XFwwMDFcXDAwMFxcMDAwXFwxNDFcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDNcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eXJpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDE2NlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMVxcXG5cXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE4MFxcMDA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNjZcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjBcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNDhcXDAwMlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDE2OVxcMDAxXFwwOTZcXDAwMlxcMDk2XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDEzMlxcMDAzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTQ4XFwwMDJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzJcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMDJcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjMzXFwwMDBcXDAwMFxcMDAwXFwwMDlcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwxNDRcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0NFxcMDAyXFwwMDBcXDAwMFxcXG5cXDA1N1xcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTY2XFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjhcXDAwM1xcMDAwXFwwMDBcXDIxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDgyXFwwMDNcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE1MlxcMDAwXFwwMDBcXDAwMFxcXG5cXDA1OFxcMDAwXFwwNjJcXDAwMFxcMTYxXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIxOVxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODVcXDAwMlxcMDM4XFwwMDNcXDE3OFxcMDAxXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwxNzlcXDAwM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMTlcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTE3XFwwMDJcXDE5OFxcMDAyXFwyMTNcXDAwMlxcMjQxXFwwMDJcXDAwNlxcMDAzXFwwNzRcXDAwM1xcXG5cXDAwMFxcMDAwXFwxNTFcXDAwMVxcMTY0XFwwMDBcXDIzMlxcMDAxXFwyNDVcXDAwMFxcMDAxXFwwMDBcXDA4M1xcMDAwXFwwMDBcXDAwMFxcXG5cXDA5NlxcMDAzXFwwMDBcXDAwMFxcMTI2XFwyNTVcXDAwMFxcMDAwXFwyMjNcXDAwMVxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA2NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTYxXFwwMDNcXDAwMFxcMDAwXFwxNDJcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2OFxcMDAwXFwwMDBcXDAwMFxcMTI2XFwyNTVcXDAwMFxcMDAwXFwyNDFcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjZcXDI1NVxcMjI4XFwyNTVcXDIzN1xcMjU1XFwwMDBcXDAwMFxcXG5cXDIxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDA3M1xcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDIxOVxcMDAxXFwwMDBcXDAwMFxcMTIyXFwwMDNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMjU1XFwxNDVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcXG5cXDA3MVxcMDAwXFwwMDBcXDAwMFxcMTczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDE0NFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIzN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDIzN1xcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwyMzdcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzdcXDI1NVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiXG5cbmxldCB5eWdpbmRleCA9IFwiXFwwMDBcXDAwMFxcXG5cXDI0MlxcMDAyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjI4XFwwMDJcXDEyM1xcMDA0XFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjM2XFwwMDJcXDAwMFxcMDAwXFwwNTZcXDAwMlxcMjAwXFwyNTVcXDAwMFxcMDAwXFwxNTlcXDAwMlxcXG5cXDIyMVxcMDAxXFwwMTNcXDAwMFxcMDA4XFwwMDBcXDAwMFxcMDAwXFwxMzNcXDI1NVxcMjQ3XFwyNTVcXDIzMVxcMjU1XFwyMTdcXDI1NVxcXG5cXDEzMlxcMDAyXFwyMThcXDI1NVxcMTg4XFwwMDRcXDIxNlxcMDAyXFwyMzNcXDI1NVxcMTY4XFwyNTVcXDE3MVxcMDAyXFwwMDBcXDAwMFxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE0XFwwMDJcXDAyOFxcMDAxXFwwMDBcXDAwMFxcMDQ2XFwyNTVcXDAwMFxcMDAwXFwyNTBcXDAwMVxcXG5cXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE1XFwwMDJcXDE5OFxcMjU1XFwwNTRcXDI1NVxcMDY1XFwyNTVcXDAwMFxcMDAwXCJcblxubGV0IHl5dGFibGVzaXplID0gMjI2OFxubGV0IHl5dGFibGUgPSBcIlxcMDg4XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTg0XFwwMDBcXDExOFxcMDAwXFwxNDNcXDAwMFxcMTQ0XFwwMDBcXDE0N1xcMDAwXFwwMzRcXDAwMVxcMDM0XFwwMDFcXFxuXFwxNDFcXDAwMFxcMjIzXFwwMDBcXDA1MVxcMDAwXFwwOThcXDAwMVxcMTM2XFwwMDBcXDEzOFxcMDAwXFwyMjhcXDAwMFxcMDA3XFwwMDBcXFxuXFwwODFcXDAwMFxcMDM1XFwwMDFcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMDk4XFwwMDFcXDE3MlxcMDAwXFwxMTVcXDAwMFxcMTE2XFwwMDBcXFxuXFwxMDZcXDAwMFxcMTE5XFwwMDFcXDAzNFxcMDAxXFwxMzNcXDAwMFxcMjA2XFwwMDBcXDAzMFxcMDAxXFwxMDFcXDAwMVxcMDk0XFwwMDBcXFxuXFwwMzZcXDAwMVxcMDE2XFwwMDBcXDEwMlxcMDAxXFwxMTFcXDAwMFxcMDM1XFwwMDFcXDA5OFxcMDAxXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTEyXFwwMDBcXDE5MlxcMDAwXFwyNDBcXDAwMFxcMTczXFwwMDBcXDE5N1xcMDAwXFwwMjNcXDAwMFxcMjM3XFwwMDBcXFxuXFwxMTdcXDAwMFxcMjMyXFwwMDBcXDA5NVxcMDAxXFwwNTZcXDAwMVxcMTI2XFwwMDBcXDEwMVxcMDAwXFwwNjZcXDAwMFxcMTAyXFwwMDBcXFxuXFwxNDZcXDAwMFxcMTM4XFwwMDBcXDA2NVxcMDAwXFwxNDlcXDAwMFxcMDI0XFwwMDBcXDEzM1xcMDAwXFwwMjJcXDAwMFxcMDI4XFwwMDBcXFxuXFwxNTNcXDAwMFxcMTc1XFwwMDBcXDA5OVxcMDAxXFwxNDFcXDAwMFxcMDA5XFwwMDBcXDAyOVxcMDAwXFwwMzBcXDAwMFxcMTc1XFwwMDBcXFxuXFwyMThcXDAwMFxcMDMzXFwwMDBcXDIxOVxcMDAwXFwwOTlcXDAwMVxcMTEwXFwwMDFcXDEwN1xcMDAwXFwxNDhcXDAwMFxcMjI1XFwwMDBcXFxuXFwxOTBcXDAwMFxcMjQxXFwwMDBcXDEzMFxcMDAwXFwxMTdcXDAwMVxcMDM3XFwwMDFcXDAzN1xcMDAxXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwwMTBcXDAwMFxcMTAwXFwwMDFcXDAxMVxcMDAwXFwxMjVcXDAwMFxcMDk5XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMTAzXFwwMDFcXFxuXFwwMDdcXDAwMFxcMTIwXFwwMDFcXDExM1xcMDAxXFwwOTZcXDAwMVxcMjEyXFwwMDBcXDAyNlxcMDAxXFwxNTNcXDAwMFxcMDI4XFwwMDFcXFxuXFwwMzdcXDAwMVxcMDkxXFwwMDFcXDEwNFxcMDAxXFwxMDVcXDAwMVxcMDk1XFwwMDBcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDg5XFwwMDFcXFxuXFwyMDVcXDAwMFxcMTc1XFwwMDBcXDIxMVxcMDAwXFwyMTNcXDAwMFxcMjM4XFwwMDBcXDIzOVxcMDAwXFwxOThcXDAwMFxcMTY4XFwwMDBcXFxuXFwxNzVcXDAwMFxcMjAxXFwwMDBcXDA5MFxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDExMVxcMDAxXFwxNTFcXDAwMFxcMTcxXFwwMDBcXFxuXFwxODRcXDAwMFxcMTA3XFwwMDFcXDIzNlxcMDAwXFwxODRcXDAwMFxcMTE4XFwwMDFcXDAwN1xcMDAxXFwxODVcXDAwMFxcMTczXFwwMDBcXFxuXFwxNzRcXDAwMFxcMTE5XFwwMDBcXDE1MFxcMDAwXFwyMjBcXDAwMFxcMjIxXFwwMDBcXDEwOFxcMDAxXFwxMzJcXDAwMFxcMTE0XFwwMDFcXFxuXFwxMjVcXDAwMVxcMTY2XFwwMDBcXDEyMFxcMDAwXFwxOThcXDAwMFxcMDMzXFwwMDBcXDE4N1xcMDAwXFwxOThcXDAwMFxcMDgwXFwwMDBcXFxuXFwxOTFcXDAwMFxcMTIxXFwwMDFcXDE4OFxcMDAwXFwxODRcXDAwMFxcMTY0XFwwMDBcXDIzNVxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDE3NVxcMDAwXFwxMjVcXDAwMFxcMTIyXFwwMDFcXDAzOFxcMDAwXFwxMjdcXDAwMVxcMDY2XFwwMDBcXFxuXFwxNjhcXDAwMFxcMDMzXFwwMDFcXDIyN1xcMDAwXFwwNzJcXDAwMVxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxOThcXDAwMFxcMTMwXFwwMDFcXFxuXFwxNzFcXDAwMFxcMTI4XFwwMDFcXDE1M1xcMDAwXFwyMzZcXDAwMFxcMTg0XFwwMDBcXDEzM1xcMDAxXFwxMzlcXDAwMFxcMDE1XFwwMDFcXFxuXFwxNDBcXDAwMFxcMjQ3XFwwMDBcXDI0OFxcMDAwXFwwMjFcXDAwMVxcMDA4XFwwMDFcXDE4NFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwMjlcXDAwMVxcMTI2XFwwMDFcXDA3M1xcMDAxXFwxODJcXDAwMFxcMDczXFwwMDFcXDAxNFxcMDAxXFwwMjVcXDAwMVxcMDY0XFwwMDFcXFxuXFwwMjdcXDAwMVxcMTg2XFwwMDBcXDAxM1xcMDAxXFwwNzRcXDAwMVxcMDc0XFwwMDBcXDA3NFxcMDAxXFwxMDZcXDAwMFxcMDA5XFwwMDFcXFxuXFwwNzdcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwxNzNcXDAwMFxcMTc0XFwwMDBcXFxuXFwwMDlcXDAwMFxcMTY4XFwwMDBcXDA0NVxcMDAwXFwwNThcXDAwMVxcMDQ2XFwwMDBcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMDY1XFwwMDFcXFxuXFwwNjZcXDAwMVxcMTcxXFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDE4OVxcMDAwXFwxODNcXDAwMFxcMTA2XFwwMDBcXFxuXFwwOTJcXDAwMFxcMTgzXFwwMDBcXDA3MFxcMDAxXFwxMDZcXDAwMFxcMDEwXFwwMDBcXDEwNlxcMDAwXFwwMTFcXDAwMFxcMTg3XFwwMDBcXFxuXFwyMDJcXDAwMFxcMTc1XFwwMDBcXDE4N1xcMDAwXFwyMTRcXDAwMFxcMTI3XFwwMDBcXDEwNlxcMDAwXFwwNDlcXDAwMVxcMDYzXFwwMDFcXFxuXFwyMTVcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDEwNlxcMDAwXFwwMTJcXDAwMFxcMTEzXFwwMDBcXFxuXFwyMTZcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTQxXFwwMDBcXDEyOVxcMDAwXFwxNDFcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDQzXFwwMDFcXFxuXFwwMDhcXDAwMFxcMDQ3XFwwMDFcXDA0OFxcMDAxXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMDZcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAxNlxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDIzXFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxMjlcXDAwMFxcMDY2XFwwMDBcXFxuXFwwODBcXDAwMVxcMDgxXFwwMDFcXDEzOFxcMDAwXFwwNjVcXDAwMFxcMTM4XFwwMDBcXDAyNFxcMDAwXFwxMzNcXDAwMFxcMDIyXFwwMDBcXFxuXFwwMjhcXDAwMFxcMjE3XFwwMDBcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMTQxXFwwMDBcXDEyM1xcMDAwXFwwMjlcXDAwMFxcMDMwXFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDAzM1xcMDAwXFwxNzRcXDAwMFxcMTI5XFwwMDBcXDEyOVxcMDAwXFwxNzRcXDAwMFxcMTI5XFwwMDBcXFxuXFwxMjlcXDAwMFxcMTI5XFwwMDBcXDExNVxcMDAxXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMDlcXDAwMVxcMTMwXFwwMDBcXDE3NVxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMDA4XFwwMDBcXDE4MFxcMDAwXFwyMjRcXDAwMFxcMTgxXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwwNTBcXDAwMVxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDAwXFwwMDFcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMjMxXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwxMzBcXDAwMFxcMDQ0XFwwMDFcXDE2OFxcMDAwXFwwNDVcXDAwMVxcMTY4XFwwMDBcXDI0MlxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDE3MVxcMDAwXFwxNDJcXDAwMFxcMTcxXFwwMDBcXDE0MlxcMDAwXFwxMjZcXDAwMFxcMDgwXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMDAxXFwwMDFcXDA4MFxcMDAwXFwxMzBcXDAwMFxcMTMwXFwwMDBcXFxuXFwwODBcXDAwMFxcMTMwXFwwMDBcXDEzMFxcMDAwXFwxMzBcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMDgwXFwwMDBcXDEyNVxcMDAwXFwwODBcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDE0M1xcMDAwXFwwMThcXDAwMVxcMTQzXFwwMDBcXDAxOVxcMDAxXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMDAyXFwwMDFcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDAwM1xcMDAxXFwxMjVcXDAwMFxcMDA5XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDI0MFxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDE2OFxcMDAwXFwwMTBcXDAwMFxcMDIwXFwwMDFcXDAxMVxcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxMjJcXDAwMFxcMTIzXFwwMDBcXDE3MVxcMDAwXFwwMjJcXDAwMVxcMTQ5XFwwMDBcXDIyMFxcMDAwXFwyMjFcXDAwMFxcMTI4XFwwMDBcXFxuXFwwOTJcXDAwMFxcMDkyXFwwMDBcXDA5MlxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDExN1xcMDAwXFwwOTJcXDAwMFxcMTI1XFwwMDBcXFxuXFwxMjVcXDAwMFxcMDkyXFwwMDBcXDEyNVxcMDAwXFwxMjVcXDAwMFxcMTI1XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA5MlxcMDAwXFwxMjdcXDAwMFxcMDkyXFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwMDFcXDAwMFxcMDAyXFwwMDBcXDAwM1xcMDAwXFwwMDRcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDA4OFxcMDAxXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxNzVcXDAwMFxcMTI3XFwwMDBcXFxuXFwxODVcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwNzNcXDAwMVxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwwNTZcXDAwMFxcMDc0XFwwMDFcXDA1MlxcMDAxXFwwNTRcXDAwMVxcMTY4XFwwMDBcXFxuXFwwNDBcXDAwMVxcMTgwXFwwMDBcXDAzMlxcMDAxXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDEwNlxcMDAxXFwwNDFcXDAwMVxcMTcxXFwwMDBcXFxuXFwwNTdcXDAwMFxcMDUxXFwwMDFcXDE2OFxcMDAwXFwwODBcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxNjlcXDAwMFxcMTcwXFwwMDBcXFxuXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDE3MVxcMDAwXFwxMjdcXDAwMFxcMTI3XFwwMDBcXDEyN1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNzNcXDAwMVxcMTIzXFwwMDBcXFxuXFwyMTdcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDA3XFwwMDBcXDA0MlxcMDAxXFwwNTlcXDAwMVxcMDc0XFwwMDFcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxODZcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYwXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwwNjBcXDAwMVxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYxXFwwMDFcXFxuXFwxMjNcXDAwMFxcMDA5XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDc3XFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTIzXFwwMDBcXFxuXFwxMjNcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDYyXFwwMDFcXDAxMFxcMDAwXFwxNjhcXDAwMFxcMDExXFwwMDBcXFxuXFwwNjlcXDAwMVxcMDcxXFwwMDFcXDE2OVxcMDAwXFwxNzBcXDAwMFxcMTY4XFwwMDBcXDA3OVxcMDAxXFwxNzFcXDAwMFxcMDg0XFwwMDFcXFxuXFwxNjlcXDAwMFxcMTcwXFwwMDBcXDA4NVxcMDAxXFwwODZcXDAwMVxcMTcxXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMDEyXFwwMDBcXFxuXFwwODdcXDAwMVxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMzFcXDAwMFxcMTIzXFwwMDBcXDEyM1xcMDAwXFwxMjNcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMDMyXFwwMDBcXFxuXFwxMjZcXDAwMFxcMDMxXFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDA5MlxcMDAxXFwwOTNcXDAwMVxcMDk0XFwwMDFcXFxuXFwwOTdcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTA2XFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMTJcXDAwMVxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTIzXFwwMDFcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwwMzlcXDAwMFxcMTI2XFwwMDBcXDAwOVxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDA3NVxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXDE3N1xcMDAwXFwwMTBcXDAwMFxcMTE2XFwwMDFcXFxuXFwwMTFcXDAwMFxcMTc5XFwwMDBcXDEyNFxcMDAxXFwxMjlcXDAwMVxcMDc2XFwwMDBcXDE4MFxcMDAwXFwxMzFcXDAwMVxcMTgxXFwwMDBcXFxuXFwxMzJcXDAwMVxcMDYwXFwwMDBcXDA4MFxcMDAwXFwwODBcXDAwMFxcMTQ5XFwwMDBcXDE1NlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxNTlcXDAwMFxcMDYwXFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTU4XFwwMDBcXDEyNlxcMDAwXFwxMjZcXDAwMFxcMTI2XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwwNzhcXDAwMFxcMTI4XFwwMDBcXDE0OVxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxNjFcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxMTRcXDAwMFxcMDg3XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDExMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDEyXFwwMDFcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDA3M1xcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTk5XFwwMDBcXDEyOFxcMDAwXFwwODJcXDAwMVxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwyMzNcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDEyOFxcMDAwXFwxNjdcXDAwMFxcMDkzXFwwMDBcXFxuXFwyMDdcXDAwMFxcMDU1XFwwMDFcXDA3OFxcMDAxXFwwMDBcXDAwMFxcMDU3XFwwMDFcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMTI4XFwwMDBcXFxuXFwxMjhcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTZcXDAwMFxcMDgwXFwwMDBcXDA1NlxcMDAwXFwwODRcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXFxuXFwwODBcXDAwMFxcMTA2XFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDA2XFwwMDBcXDAwOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDA5XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDg2XFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAxMFxcMDAwXFwwMDBcXDAwMFxcMDExXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA3N1xcMDAwXFwwNjBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTZcXDAwMFxcMTQ3XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDA1N1xcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDEzXFwwMDBcXDAxNFxcMDAwXFwwMTVcXDAwMFxcMDE2XFwwMDBcXFxuXFwwMTdcXDAwMFxcMDE4XFwwMDBcXDAxOVxcMDAwXFwwMjBcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDEzMVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDMxXFwwMDBcXFxuXFwwODBcXDAwMFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwwMjFcXDAwMFxcMDMzXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXFxuXFwxMzFcXDAwMFxcMDAwXFwwMDBcXDEzMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMzRcXDAwMFxcMDM1XFwwMDBcXFxuXFwwMzZcXDAwMFxcMDM3XFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAzOFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDM5XFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDc3XFwwMDBcXDAwMFxcMDAwXFwwMzlcXDAwMFxcMTMxXFwwMDBcXFxuXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwNzVcXDAwMFxcMTMxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFwwMDBcXDAwMFxcMDM5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzVcXDAwMFxcMDc1XFwwMDBcXDA3NlxcMDAwXFwxMzFcXDAwMFxcMTMxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzFcXDAwMFxcMDM5XFwwMDBcXDA0MFxcMDAwXFwwNDFcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDRcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDAwXFwwMDBcXDA0NVxcMDAwXFwwMDBcXDAwMFxcMDQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc4XFwwMDBcXDA3NVxcMDAwXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzhcXDAwMFxcMTQ2XFwwMDBcXFxuXFwxNDZcXDAwMFxcMTQ2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNDZcXDAwMFxcMDc2XFwwMDBcXDA3NlxcMDAwXFwwNzhcXDAwMFxcMDc4XFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzNcXDAwMFxcMTQ2XFwwMDBcXDA3NVxcMDAwXFwxNDZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDA3OFxcMDAwXFwwNzhcXDAwMFxcMDkzXFwwMDBcXFxuXFwwOTNcXDAwMFxcMDkzXFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5M1xcMDAwXFwwNDBcXDAwMFxcMDQwXFwwMDBcXFxuXFwwOTNcXDAwMFxcMTQ2XFwwMDBcXDE0NlxcMDAwXFwwNDBcXDAwMFxcMTQ2XFwwMDBcXDE0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3M1xcMDAwXFwwNzNcXDAwMFxcMDkzXFwwMDBcXDAwMFxcMDAwXFwwOTNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzhcXDAwMFxcMDAwXFwwMDBcXDA0MFxcMDAwXFwwMDBcXDAwMFxcMDQwXFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMTc4XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE3OVxcMDAwXFwwODRcXDAwMFxcMDg0XFwwMDBcXDA4NFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxODFcXDAwMFxcMDg0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDg0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDA4MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODRcXDAwMFxcMDAwXFwwMDBcXDA4NFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXFxuXFwwODZcXDAwMFxcMDg2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODZcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwxMDZcXDAwMFxcMTA2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTA2XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMDZcXDAwMFxcMDg2XFwwMDBcXDEwNlxcMDAwXFwwODZcXDAwMFxcMDc0XFwwMDBcXFxuXFwwODRcXDAwMFxcMDg0XFwwMDBcXDE0N1xcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXFxuXFwwMDBcXDAwMFxcMTA2XFwwMDBcXDEwNlxcMDAwXFwwMDBcXDAwMFxcMDM3XFwwMDBcXDEwNlxcMDAwXFwwOTFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTlcXDAwMFxcMDM3XFwwMDBcXDEwNVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg2XFwwMDBcXDA4NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMzdcXDAwMFxcMDAwXFwwMDBcXDAzN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEyOVxcMDAwXFwxMzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwODBcXDAwMFxcMDgwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMTQ3XFwwMDBcXDIyNlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwxNDdcXDAwMFxcMTQ3XFwwMDBcXDAwMFxcMDAwXFwxNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA4MFxcMDAwXFwwMDBcXDAwMFxcMDgwXFwwMDBcXFxuXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDE3NlxcMDAwXFwxNzdcXDAwMFxcMTc4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTc5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxODBcXDAwMFxcMDAwXFwwMDBcXDE4MVxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTgzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTkzXFwwMDBcXFxuXFwxOTZcXDAwMFxcMTM3XFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMTM3XFwwMDBcXDEzN1xcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIwOVxcMDAwXFwxNTRcXDAwMFxcMTU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTU4XFwwMDBcXFxuXFwxNTlcXDAwMFxcMTYwXFwwMDBcXDE2MVxcMDAwXFwxNjJcXDAwMFxcMTYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDIyOVxcMDAwXFwyMzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyMzRcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwOTBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDI0M1xcMDAwXFwyNDRcXDAwMFxcMjQ1XFwwMDBcXDI0NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMjQ5XFwwMDBcXDAwMFxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDA2XFwwMDFcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAxNlxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTBcXDAwMFxcMjUxXFwwMDBcXDI1MlxcMDAwXFwyNTNcXDAwMFxcMjU0XFwwMDBcXFxuXFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE2XFwwMDFcXDAxNlxcMDAxXFwyMDlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA5MVxcMDAwXFwxMzdcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDEzN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NlxcMDAwXFwwMDBcXDAwMFxcMDgzXFwwMDFcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMDRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDk4XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMjhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMTMwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMDU3XFwwMDBcXFxuXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDE5NFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXFxuXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXFxuXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMTQ1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMTk1XFwwMDBcXFxuXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXFxuXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXFxuXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAwXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXFxuXFwwNzdcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXFxuXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMjAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFxcMTM1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDU2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUyXFwwMDBcXDAwMFxcMDAwXFwyMDhcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXFxuXFwwNzNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwMjZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAwMFxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTRcXDAwMFxcMDU1XFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDI2XFwwMDBcXFxuXFwwMjZcXDAwMFxcMDU2XFwwMDBcXDAyNlxcMDAwXFwwMjZcXDAwMFxcMDU3XFwwMDBcXDA1OFxcMDAwXFwwNTlcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjBcXDAwMFxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwMDBcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcMDY1XFwwMDBcXFxuXFwwNjZcXDAwMFxcMDY3XFwwMDBcXDA2OFxcMDAwXFwwNjlcXDAwMFxcMDcwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNzFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDczXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDkwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTNcXDAwMFxcMDU0XFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3NFxcMDAwXFwwNzVcXDAwMFxcMDU2XFwwMDBcXFxuXFwwNzZcXDAwMFxcMDc3XFwwMDBcXDA1N1xcMDAwXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwNjBcXDAwMFxcMDYxXFwwMDBcXFxuXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwwNjZcXDAwMFxcMDY3XFwwMDBcXFxuXFwwNjhcXDAwMFxcMDY5XFwwMDBcXDA3MFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzFcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDEzNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDUzXFwwMDBcXDA1NFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzRcXDAwMFxcMDc1XFwwMDBcXDA1NlxcMDAwXFwwNzZcXDAwMFxcMDc3XFwwMDBcXFxuXFwwNTdcXDAwMFxcMDU4XFwwMDBcXDA1OVxcMDAwXFwwMDBcXDAwMFxcMDYwXFwwMDBcXDA2MVxcMDAwXFwwNjJcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDA2NFxcMDAwXFwwNjVcXDAwMFxcMDY2XFwwMDBcXDA2N1xcMDAwXFwwNjhcXDAwMFxcMDY5XFwwMDBcXFxuXFwwNzBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwxMzRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUzXFwwMDBcXFxuXFwwNTRcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDc0XFwwMDBcXDA3NVxcMDAwXFwwNTZcXDAwMFxcMDc2XFwwMDBcXDA3N1xcMDAwXFwwMDBcXDAwMFxcMDU4XFwwMDBcXFxuXFwwNTlcXDAwMFxcMDAwXFwwMDBcXDA2MFxcMDAwXFwwNjFcXDAwMFxcMDYyXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuXFwwNjRcXDAwMFxcMDY1XFwwMDBcXDA2NlxcMDAwXFwwNjdcXDAwMFxcMDY4XFwwMDBcXDA2OVxcMDAwXFwwNzBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc0XFwwMDBcXFxuXFwwNzVcXDAwMFxcMDAwXFwwMDBcXDA3NlxcMDAwXFwwNzdcXDAwMFwiXG5cbmxldCB5eWNoZWNrID0gXCJcXDAwOVxcMDAwXFxcblxcMDAwXFwwMDBcXDA5MFxcMDAwXFwwMjZcXDAwMFxcMDQyXFwwMDBcXDA0M1xcMDAwXFwwNDVcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDBcXDEzM1xcMDAwXFwwMDNcXDAwMFxcMDAwXFwwMDFcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMTM4XFwwMDBcXDAwMFxcMDAwXFxcblxcMDA0XFwwMDBcXDAxMFxcMDAxXFwwNThcXDAwMFxcMDU5XFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDI0XFwwMDBcXDAyNVxcMDAwXFxcblxcMDIxXFwwMDFcXDAwNFxcMDAxXFwwMDBcXDAwMVxcMDM3XFwwMDBcXDExN1xcMDAwXFwyNDBcXDAwMFxcMDAwXFwwMDFcXDAwMFxcMDAxXFxcblxcMDI1XFwwMDFcXDAwMFxcMDAwXFwwMDRcXDAwMVxcMDc3XFwwMDFcXDAxMFxcMDAxXFwwMDBcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDMzXFwwMDBcXDA4MVxcMDAxXFwwOTlcXDAwMFxcMDA1XFwwMDFcXDA0NVxcMDAxXFwxMDJcXDAwMFxcMDAwXFwwMDBcXDAwNlxcMDAxXFxcblxcMDQzXFwwMDFcXDAwMVxcMDAxXFwwMjdcXDAwMVxcMDI1XFwwMDFcXDA3N1xcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDA3OVxcMDAxXFxcblxcMDQ0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcblxcMDUyXFwwMDBcXDA3MlxcMDAxXFwwNTVcXDAwMVxcMDAwXFwwMDBcXDAwNVxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3MlxcMDAxXFxcblxcMTI5XFwwMDBcXDAwMFxcMDAwXFwxMzFcXDAwMFxcMDU1XFwwMDFcXDAyN1xcMDAxXFwwNzRcXDAwMVxcMDExXFwwMDFcXDEzNlxcMDAwXFxcblxcMDA1XFwwMDFcXDA0M1xcMDAxXFwwMDBcXDAwMFxcMDI3XFwwMDFcXDA3OFxcMDAxXFwwNzhcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDI1XFwwMDFcXDA3OFxcMDAxXFwwMjdcXDAwMVxcMDAzXFwwMDFcXDA1NVxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDA2NVxcMDAxXFxcblxcMDAwXFwwMDBcXDA3NlxcMDAxXFwwNzhcXDAwMVxcMDc2XFwwMDFcXDEyNFxcMDAwXFwyMjVcXDAwMFxcMDkwXFwwMDBcXDIyN1xcMDAwXFxcblxcMDc4XFwwMDFcXDA2MFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDA1OFxcMDAxXFxcblxcMTE0XFwwMDBcXDA3MlxcMDAxXFwxMjRcXDAwMFxcMTI1XFwwMDBcXDE1NlxcMDAwXFwxNTdcXDAwMFxcMTA2XFwwMDBcXDA0NFxcMDAxXFxcblxcMDcyXFwwMDFcXDEwOVxcMDAwXFwwNThcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNzZcXDAwMVxcMDAwXFwwMDBcXDA1MlxcMDAxXFxcblxcMDAzXFwwMDFcXDA3NlxcMDAxXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFwxOTBcXDAwMFxcMDEwXFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDAwMFxcMDAxXFwwMDJcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNzdcXDAwMVxcMDc5XFwwMDFcXDA5MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAwNVxcMDAxXFwwMDlcXDAwMVxcMDAzXFwwMDFcXDAwNVxcMDAxXFwwMDBcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDc3XFwwMDFcXDEwMFxcMDAxXFwwMDVcXDAwMVxcMDMwXFwwMDFcXDA3N1xcMDAxXFwxNTBcXDAwMFxcMDE1XFwwMDFcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwNzJcXDAwMVxcMDAwXFwwMDBcXDEwMFxcMDAxXFwwMjJcXDAwMVxcMTEzXFwwMDFcXDAzOVxcMDAxXFxcblxcMDQ0XFwwMDFcXDAwMlxcMDAxXFwwODFcXDAwMVxcMDMwXFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDMwXFwwMDFcXDEyMlxcMDAxXFxcblxcMDUyXFwwMDFcXDExM1xcMDAxXFwxNjZcXDAwMFxcMDA2XFwwMDFcXDA1NVxcMDAxXFwxMjhcXDAwMVxcMDc3XFwwMDFcXDIwN1xcMDAwXFxcblxcMDc5XFwwMDFcXDE3M1xcMDAwXFwxNzRcXDAwMFxcMjExXFwwMDBcXDAxOVxcMDAxXFwwNjRcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMjMxXFwwMDBcXDA3NlxcMDAxXFwwNTVcXDAwMVxcMDA2XFwwMDFcXDA1NVxcMDAxXFwyMDdcXDAwMFxcMjI0XFwwMDBcXDAzMlxcMDAxXFxcblxcMjI2XFwwMDBcXDA3N1xcMDAxXFwyMDRcXDAwMFxcMDY0XFwwMDFcXDA3NlxcMDAxXFwwNjRcXDAwMVxcMDA1XFwwMDFcXDIwMFxcMDAwXFxcblxcMDgwXFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFxcblxcMDA1XFwwMDFcXDA0NFxcMDAxXFwwNzVcXDAwMVxcMDIyXFwwMDFcXDA3N1xcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA1MlxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwwMTFcXDAwMVxcMDAzXFwwMDFcXDAzMFxcMDAxXFxcblxcMDAwXFwwMDBcXDAwNlxcMDAxXFwwMzdcXDAwMVxcMDM0XFwwMDFcXDAyNVxcMDAxXFwwMzZcXDAwMVxcMDI3XFwwMDFcXDAwM1xcMDAxXFxcblxcMDgxXFwwMDFcXDA3MlxcMDAxXFwwMDZcXDAwMVxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwNDRcXDAwMVxcMDE0XFwwMDFcXDAzMVxcMDAxXFxcblxcMDA1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNTJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFxcblxcMDA2XFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFxcblxcMDA4XFwwMDFcXDAwMVxcMDAxXFwwMTBcXDAwMVxcMDAzXFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwOFxcMDAxXFxcblxcMDAxXFwwMDFcXDAxMFxcMDAxXFwwMTFcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDc3XFwwMDFcXDAyM1xcMDAxXFxcblxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDMwXFwwMDFcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwMDFcXDAwMVxcMDM1XFwwMDFcXDAzNlxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMVxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwMVxcMDAxXFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwM1xcMDAxXFwwMDFcXDAwMVxcMDAxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAxXFwwMDFcXDA3N1xcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMVxcMDAxXFwwMDBcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwMDFcXDAwMVxcMDAzXFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDA2XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwOTJcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFxcblxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDc5XFwwMDFcXDAxMFxcMDAxXFwwNzJcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDAwMVxcMDAxXFwwMzRcXDAwMVxcMDA0XFwwMDFcXDAzNlxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFxcblxcMDEwXFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAyNlxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMDMwXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDAwNlxcMDAxXFwwMzVcXDAwMVxcMDM2XFwwMDFcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFxcblxcMDQ2XFwwMDFcXDA0OVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFxcblxcMDU0XFwwMDFcXDAyMVxcMDAxXFwwNDRcXDAwMVxcMDIzXFwwMDFcXDA0NFxcMDAxXFwwNDNcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTJcXDAwMVxcMDA2XFwwMDFcXDA1MlxcMDAxXFwwMDhcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDA5XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDAwNFxcMDAxXFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAyMVxcMDAxXFwwMTBcXDAwMVxcMDIzXFwwMDFcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDZcXDAwMVxcMDA1XFwwMDFcXDAwOFxcMDAxXFwwMDdcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDIxXFwwMDFcXDAyNVxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFwwMjZcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDAzMFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwwNzdcXDAwMVxcMDM1XFwwMDFcXDAwNVxcMDAxXFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDA1MlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNDRcXDAwMVxcMDI1XFwwMDFcXDAwM1xcMDAxXFwwMjdcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwNTJcXDAwMVxcMDc3XFwwMDFcXDA3N1xcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwwNDNcXDAwMVxcMDA2XFwwMDFcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAwOVxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDAwM1xcMDAxXFxcblxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFwwMjFcXDAwMVxcMDEwXFwwMDFcXDAyM1xcMDAxXFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDAxXFwwMDBcXDAwMlxcMDAwXFwwMDNcXDAwMFxcMDA0XFwwMDBcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMzBcXDAwMVxcMDIzXFwwMDFcXDAyNFxcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFxcblxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMzBcXDAwMVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMDcyXFwwMDFcXDAzNVxcMDAxXFxcblxcMDEwXFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFxcblxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDU1XFwwMDFcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDAwXFwwMDBcXDA2NFxcMDAxXFwwMThcXDAwMVxcMDE5XFwwMDFcXDA0NFxcMDAxXFxcblxcMDA2XFwwMDFcXDAzNFxcMDAxXFwwMjVcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMzBcXDAwMVxcMDAzXFwwMDFcXDA1MlxcMDAxXFxcblxcMDAwXFwwMDBcXDAwOFxcMDAxXFwwNDRcXDAwMVxcMDAwXFwwMDBcXDA3MlxcMDAxXFwwNzNcXDAwMVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwNTJcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwODFcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDAzXFwwMDFcXDAwNFxcMDAxXFwwMDVcXDAwMVxcMDA2XFwwMDFcXDAwN1xcMDAxXFwwMDhcXDAwMVxcMDU1XFwwMDFcXDAxMFxcMDAxXFxcblxcMDc3XFwwMDFcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMDA2XFwwMDFcXDA2NFxcMDAxXFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMjFcXDAwMVxcMDc3XFwwMDFcXDAyM1xcMDAxXFwwMjRcXDAwMVxcMDI1XFwwMDFcXDAwMFxcMDAwXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMDAzXFwwMDFcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDA0OFxcMDAxXFxcblxcMDM1XFwwMDFcXDAwNVxcMDAxXFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDA0NFxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAwXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDA1MlxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDAwNlxcMDAxXFwwMjVcXDAwMVxcMDQ0XFwwMDFcXDAyN1xcMDAxXFxcblxcMDQ0XFwwMDFcXDAyNVxcMDAxXFwwNDhcXDAwMVxcMDQ5XFwwMDFcXDA0NFxcMDAxXFwwMjNcXDAwMVxcMDUyXFwwMDFcXDAwNlxcMDAxXFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwMDhcXDAwMVxcMDQ0XFwwMDFcXDA1MlxcMDAxXFwwNzJcXDAwMVxcMDczXFwwMDFcXDA0M1xcMDAxXFxcblxcMDI1XFwwMDFcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDAwXFwwMDBcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDgxXFwwMDFcXDAwMVxcMDAxXFxcblxcMDAyXFwwMDFcXDAwM1xcMDAxXFwwMDRcXDAwMVxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDAwMFxcMDAwXFxcblxcMDEwXFwwMDFcXDA3M1xcMDAxXFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwwMDNcXDAwMVxcMDc2XFwwMDFcXDA3NlxcMDAxXFxcblxcMDQ0XFwwMDFcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMDIxXFwwMDFcXDAzMFxcMDAxXFwwMjNcXDAwMVxcMDI0XFwwMDFcXDAyNVxcMDAxXFxcblxcMDQ0XFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDAwNFxcMDAxXFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMDAwXFwwMDBcXDAzNVxcMDAxXFwwMDVcXDAwMVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwwNDRcXDAwMVxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwwMDBcXDAwMFxcMDQ4XFwwMDFcXDA0OVxcMDAxXFxcblxcMDUwXFwwMDFcXDA1MVxcMDAxXFwwNTJcXDAwMVxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMjZcXDAwMVxcMDI1XFwwMDFcXDA3NlxcMDAxXFxcblxcMDI3XFwwMDFcXDAzMFxcMDAxXFwwNzZcXDAwMVxcMDc2XFwwMDFcXDAwMFxcMDAwXFwwMzRcXDAwMVxcMDc3XFwwMDFcXDAzNlxcMDAxXFxcblxcMDc2XFwwMDFcXDA0OVxcMDAxXFwwNTNcXDAwMVxcMDU0XFwwMDFcXDA3N1xcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFxcblxcMDA2XFwwMDFcXDA0OFxcMDAxXFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAwNlxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMDNcXDAwMVxcMDA0XFwwMDFcXDAwNVxcMDAxXFwwMDZcXDAwMVxcMDA3XFwwMDFcXDAwOFxcMDAxXFxcblxcMDAwXFwwMDBcXDAxMFxcMDAxXFwwNzdcXDAwMVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMDA2XFwwMDFcXDAwMFxcMDAwXFxcblxcMDIxXFwwMDBcXDAwOFxcMDAwXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDAyMVxcMDAxXFwwMThcXDAwMFxcMDIzXFwwMDFcXDAyNFxcMDAxXFxcblxcMDI1XFwwMDFcXDIwMlxcMDAwXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwwMDBcXDAwMFxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDEwN1xcMDAwXFwwMzVcXDAwMVxcMDQ3XFwwMDFcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMDQ0XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMTQ3XFwwMDBcXDA0OFxcMDAxXFxcblxcMDQ5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDUyXFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMDcxXFwwMDBcXDAwMFxcMDAwXFxcblxcMTE4XFwwMDBcXDAyMFxcMDAxXFwwNDFcXDAwMVxcMjU1XFwyNTVcXDAyMlxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFxcblxcMDczXFwwMDFcXDAwNlxcMDAxXFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDgxXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDAwNlxcMDAxXFwwMjNcXDAwMVxcMDAwXFwwMDBcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMDIxXFwwMDFcXDAwMFxcMDAwXFwwMjNcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwwMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDAwMFxcMDAwXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMjU1XFwyNTVcXDAyN1xcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyMVxcMDAxXFwwMDFcXDAwMVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDc3XFwwMDFcXDAwMFxcMDAwXFwwMDZcXDAwMVxcMjU1XFwyNTVcXDA4MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0M1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNzdcXDAwMVxcMjU1XFwyNTVcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDA4MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1NlxcMDAxXFwwNTdcXDAwMVxcMDU4XFwwMDFcXDA1OVxcMDAxXFxcblxcMDYwXFwwMDFcXDA2MVxcMDAxXFwwNjJcXDAwMVxcMDYzXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDAzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDAwNlxcMDAxXFwwMDdcXDAwMVxcMDA4XFwwMDFcXDI1NVxcMjU1XFwwMTBcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMDAwXFwwMDBcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDc5XFwwMDFcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDE5XFwwMDFcXDAyMFxcMDAxXFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE1XFwwMDFcXDAxNlxcMDAxXFxcblxcMDE3XFwwMDFcXDAxOFxcMDAxXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjJcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwyNTVcXDI1NVxcMDA2XFwwMDFcXDA0NFxcMDAxXFxcblxcMDQ1XFwwMDFcXDA0NlxcMDAxXFwyNTVcXDI1NVxcMDQ4XFwwMDFcXDA0OVxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDA1MlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwwMDZcXDAwMVxcMDcyXFwwMDFcXDA3M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc3XFwwMDFcXDA2NlxcMDAxXFwwNjdcXDAwMVxcMDY4XFwwMDFcXDA2OVxcMDAxXFwwNzBcXDAwMVxcMDcxXFwwMDFcXDAxOVxcMDAxXFxcblxcMDIwXFwwMDFcXDI1NVxcMjU1XFwwNzVcXDAwMVxcMjU1XFwyNTVcXDA3N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA5XFwwMDFcXDA0NVxcMDAxXFwwNDZcXDAwMVxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMDAxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA2XFwwMDFcXDAyMVxcMDAxXFwwNzJcXDAwMVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDE5XFwwMDFcXDAyMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3MlxcMDAxXFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMDAxXFwwMDFcXDAwMlxcMDAxXFxcblxcMDA5XFwwMDFcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMDA2XFwwMDFcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDVcXDAwMVxcMDQ2XFwwMDFcXDAyMVxcMDAxXFwyNTVcXDI1NVxcMDIzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDcyXFwwMDFcXDI1NVxcMjU1XFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzBcXDAwMVxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMDM0XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM2XFwwMDFcXDAwNlxcMDAxXFwwMDFcXDAwMVxcMjU1XFwyNTVcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNlxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDFcXDAwMVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDAxOVxcMDAxXFwwMjBcXDAwMVxcMjU1XFwyNTVcXDAwMFxcMDAxXFxcblxcMDAxXFwwMDFcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDZcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA5XFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDAyMVxcMDAxXFwwMzZcXDAwMVxcMDIzXFwwMDFcXDA0NlxcMDAxXFxcblxcMDUzXFwwMDFcXDA1NFxcMDAxXFwwMDFcXDAwMVxcMDAyXFwwMDFcXDI1NVxcMjU1XFwwNDRcXDAwMVxcMjU1XFwyNTVcXDAwNlxcMDAxXFxcblxcMjU1XFwyNTVcXDA0OFxcMDAxXFwwNDlcXDAwMVxcMjU1XFwyNTVcXDAwMVxcMDAxXFwwNTJcXDAwMVxcMDEyXFwwMDBcXDI1NVxcMjU1XFxcblxcMDE0XFwwMDBcXDAwNlxcMDAxXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDIxXFwwMDFcXDI1NVxcMjU1XFxcblxcMDIzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1M1xcMDAxXFwwNTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDIxXFwwMDFcXDI1NVxcMjU1XFwwMjNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzVcXDAwMFxcMDM2XFwwMDBcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDAwMVxcMDAxXFwwMDJcXDAwMVxcMjU1XFwyNTVcXDA0M1xcMDAxXFwwMDRcXDAwMVxcMDA2XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwOVxcMDAxXFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMDUyXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAxXFwwMDFcXDAwMlxcMDAxXFwwMjFcXDAwMVxcMjU1XFwyNTVcXDAyM1xcMDAxXFxcblxcMDA2XFwwMDFcXDI1NVxcMjU1XFwwMjVcXDAwMVxcMDI2XFwwMDFcXDAyN1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzMFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDM0XFwwMDFcXDI1NVxcMjU1XFwwMzZcXDAwMVxcMjU1XFwyNTVcXDAyMVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyM1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA5MFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDEwMVxcMDAwXFxcblxcMTAyXFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMjU1XFwyNTVcXDA0MVxcMDAwXFwwNDJcXDAwMFxcMDQzXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTEzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDExN1xcMDAwXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMjBcXDAwMFxcMDU2XFwwMDBcXDA1N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2MFxcMDAwXFxcblxcMDYxXFwwMDBcXDA2MlxcMDAwXFwwNjNcXDAwMFxcMDY0XFwwMDBcXDA2NVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMTM0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwxMzlcXDAwMFxcMTQwXFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTQ4XFwwMDBcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwxNjhcXDAwMFxcMTY5XFwwMDBcXDE3MFxcMDAwXFwxNzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDE3NVxcMDAwXFwyNTVcXDI1NVxcMDI0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDE4OVxcMDAwXFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyMDhcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMTc2XFwwMDBcXDE3N1xcMDAwXFwxNzhcXDAwMFxcMTc5XFwwMDBcXDE4MFxcMDAwXFxcblxcMTgxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOFxcMDAxXFwwMTlcXDAwMVxcMDIwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMVxcMjI0XFwwMDBcXDI1NVxcMjU1XFwyMjZcXDAwMFxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMjRcXDAwMVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDAwXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDAwXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFxcblxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFxcblxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFxcblxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFxcblxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAwMVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFxcblxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFxcblxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFxcblxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFxcblxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFxcblxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFxcblxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAxOVxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDA4MVxcMDAxXFxcblxcMjU1XFwyNTVcXDAyNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMDA3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDhcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MFxcMDAxXFxcblxcMDUxXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDE5XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMDI3XFwwMDFcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDdcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTBcXDAwMVxcMDUxXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMTJcXDAwMVxcMDEzXFwwMDFcXDAxNFxcMDAxXFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDAyNFxcMDAxXFwwNzlcXDAwMVxcMDgwXFwwMDFcXDAyN1xcMDAxXFwwMjhcXDAwMVxcMDI5XFwwMDFcXDI1NVxcMjU1XFxcblxcMDMxXFwwMDFcXDAzMlxcMDAxXFwwMzNcXDAwMVxcMjU1XFwyNTVcXDAzNVxcMDAxXFwyNTVcXDI1NVxcMDM3XFwwMDFcXDAzOFxcMDAxXFxcblxcMDM5XFwwMDFcXDA0MFxcMDAxXFwwNDFcXDAwMVxcMDQyXFwwMDFcXDA0M1xcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDQ3XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDFcXDA1MVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwNVxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDEyXFwwMDFcXDAxM1xcMDAxXFwwMTRcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzZcXDAwMVxcMDc3XFwwMDFcXDAyNFxcMDAxXFxcblxcMDc5XFwwMDFcXDA4MFxcMDAxXFwwMjdcXDAwMVxcMDI4XFwwMDFcXDAyOVxcMDAxXFwyNTVcXDI1NVxcMDMxXFwwMDFcXDAzMlxcMDAxXFxcblxcMDMzXFwwMDFcXDI1NVxcMjU1XFwwMzVcXDAwMVxcMjU1XFwyNTVcXDAzN1xcMDAxXFwwMzhcXDAwMVxcMDM5XFwwMDFcXDA0MFxcMDAxXFxcblxcMDQxXFwwMDFcXDA0MlxcMDAxXFwwNDNcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA1MFxcMDAxXFwwNTFcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDVcXDAwMVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDAxMlxcMDAxXFwwMTNcXDAwMVxcMDE0XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc2XFwwMDFcXDA3N1xcMDAxXFwwMjRcXDAwMVxcMDc5XFwwMDFcXDA4MFxcMDAxXFxcblxcMDI3XFwwMDFcXDAyOFxcMDAxXFwwMjlcXDAwMVxcMjU1XFwyNTVcXDAzMVxcMDAxXFwwMzJcXDAwMVxcMDMzXFwwMDFcXDI1NVxcMjU1XFxcblxcMDM1XFwwMDFcXDI1NVxcMjU1XFwwMzdcXDAwMVxcMDM4XFwwMDFcXDAzOVxcMDAxXFwwNDBcXDAwMVxcMDQxXFwwMDFcXDA0MlxcMDAxXFxcblxcMDQzXFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMDA1XFwwMDFcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxMlxcMDAxXFxcblxcMDEzXFwwMDFcXDAxNFxcMDAxXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDA3NlxcMDAxXFwwNzdcXDAwMVxcMDI0XFwwMDFcXDA3OVxcMDAxXFwwODBcXDAwMVxcMjU1XFwyNTVcXDAyOFxcMDAxXFxcblxcMDI5XFwwMDFcXDI1NVxcMjU1XFwwMzFcXDAwMVxcMDMyXFwwMDFcXDAzM1xcMDAxXFwyNTVcXDI1NVxcMDM1XFwwMDFcXDI1NVxcMjU1XFxcblxcMDM3XFwwMDFcXDAzOFxcMDAxXFwwMzlcXDAwMVxcMDQwXFwwMDFcXDA0MVxcMDAxXFwwNDJcXDAwMVxcMDQzXFwwMDFcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcblxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NlxcMDAxXFxcblxcMDc3XFwwMDFcXDI1NVxcMjU1XFwwNzlcXDAwMVxcMDgwXFwwMDFcIlxuXG5sZXQgeXluYW1lc19jb25zdCA9IFwiXFxcbiAgRU9GXFwwMDBcXFxuICBORVdMSU5FXFwwMDBcXFxuICBTRU1JQ09MT05cXDAwMFxcXG4gIENPTU1BXFwwMDBcXFxuICBET1RcXDAwMFxcXG4gIE9QX1BBUlxcMDAwXFxcbiAgQ0xfUEFSXFwwMDBcXFxuICBPUF9DVVJcXDAwMFxcXG4gIENMX0NVUlxcMDAwXFxcbiAgQVRcXDAwMFxcXG4gIFRZUEVcXDAwMFxcXG4gIExBUlxcMDAwXFxcbiAgQ1BVVElNRVxcMDAwXFxcbiAgRU1BWFxcMDAwXFxcbiAgVE1BWFxcMDAwXFxcbiAgUExPVEVOVFJZXFwwMDBcXFxuICBERUxFVEVcXDAwMFxcXG4gIElOVFJPXFwwMDBcXFxuICBUUkFDS1xcMDAwXFxcbiAgRE9cXDAwMFxcXG4gIFNFVFxcMDAwXFxcbiAgUkVQRUFUXFwwMDBcXFxuICBTUEVDSUVTX09GXFwwMDBcXFxuICBVTlRJTFxcMDAwXFxcbiAgTE9HXFwwMDBcXFxuICBQTFVTXFwwMDBcXFxuICBNVUxUXFwwMDBcXFxuICBNSU5VU1xcMDAwXFxcbiAgTUFYXFwwMDBcXFxuICBNSU5cXDAwMFxcXG4gIERJVlxcMDAwXFxcbiAgU0lOVVNcXDAwMFxcXG4gIENPU0lOVVNcXDAwMFxcXG4gIFRBTlxcMDAwXFxcbiAgUE9XXFwwMDBcXFxuICBBQlNcXDAwMFxcXG4gIE1PRFVMT1xcMDAwXFxcbiAgU1FSVFxcMDAwXFxcbiAgRVhQT05FTlRcXDAwMFxcXG4gIElORklOSVRZXFwwMDBcXFxuICBUSU1FXFwwMDBcXFxuICBFVkVOVFxcMDAwXFxcbiAgTlVMTF9FVkVOVFxcMDAwXFxcbiAgUElQRVxcMDAwXFxcbiAgRVFVQUxcXDAwMFxcXG4gIEFORFxcMDAwXFxcbiAgT1JcXDAwMFxcXG4gIE5PVFxcMDAwXFxcbiAgR1JFQVRFUlxcMDAwXFxcbiAgU01BTExFUlxcMDAwXFxcbiAgVFJVRVxcMDAwXFxcbiAgRkFMU0VcXDAwMFxcXG4gIERJRkZcXDAwMFxcXG4gIEtBUFBBX1JBUlxcMDAwXFxcbiAgS0FQUEFfTFJBUlxcMDAwXFxcbiAgS0FQUEFfTE5LXFwwMDBcXFxuICBTSUdOQVRVUkVcXDAwMFxcXG4gIElOSVRcXDAwMFxcXG4gIExFVFxcMDAwXFxcbiAgUExPVFxcMDAwXFxcbiAgUEVSVFxcMDAwXFxcbiAgT0JTXFwwMDBcXFxuICBUT0tFTlxcMDAwXFxcbiAgQ09ORklHXFwwMDBcXFxuICBLQVBQQV9XTERcXDAwMFxcXG4gIEtBUFBBX1NFTUlcXDAwMFxcXG4gIEZMVVhcXDAwMFxcXG4gIEFTU0lHTlxcMDAwXFxcbiAgUFJJTlRGXFwwMDBcXFxuICBTVE9QXFwwMDBcXFxuICBTTkFQU0hPVFxcMDAwXFxcbiAgUlVOXFwwMDBcXFxuICBUSEVOXFwwMDBcXFxuICBFTFNFXFwwMDBcXFxuICBBTEFSTVxcMDAwXFxcbiAgQVBQTFlcXDAwMFxcXG4gIFwiXG5cbmxldCB5eW5hbWVzX2Jsb2NrID0gXCJcXFxuICBJTlRcXDAwMFxcXG4gIElEXFwwMDBcXFxuICBLQVBQQV9NUktcXDAwMFxcXG4gIExBQkVMXFwwMDBcXFxuICBGTE9BVFxcMDAwXFxcbiAgU1RSSU5HXFwwMDBcXFxuICBcIlxuXG5sZXQgeXlhY3QgPSBbfFxuICAoZnVuIF8gLT4gZmFpbHdpdGggXCJwYXJzZXJcIilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSBpblxuICAgIE9iai5yZXByKFxuIyA1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTA3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICduZXdsaW5lKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgIChmdW4gYyAtPiBjKVxuIyAxMDgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25ld2xpbmUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoXzEpXG4jIDEwODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdydWxlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAobGV0IG91dCA9IChTb21lIChfMSwgcmhzX3BvcyAxKSxfMikgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSBfMyBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gb3V0OjpyLkFzdC5ydWxlc30pXG4jIDEwOTggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiBBc3QucGFyc2luZ19jb21waWwgLT4gQXN0LnBhcnNpbmdfY29tcGlsKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbmV3bGluZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKGZ1biBjIC0+IGxldCByID0gXzIgYyBpbiB7ciB3aXRoIEFzdC5ydWxlcyA9IChOb25lLF8xKTo6ci5Bc3QucnVsZXN9KVxuIyAxMTA2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICduZXdsaW5lKSBpblxuICAgIE9iai5yZXByKFxuIyA2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAobGV0IG91dCA9ICgoXzEscmhzX3BvcyAxKSxfMykgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSBfNCBjIGluIHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IG91dDo6ci5Bc3QudmFyaWFibGVzfSlcbiMgMTExNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnN0cnVjdGlvbikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25ld2xpbmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBmdW4gYyAtPiBsZXQgciA9IF8yIGMgaW5cblx0XHQgICAgICBtYXRjaCBfMSB3aXRoXG5cdFx0ICAgICAgfCBBc3QuUlVMRSBydSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnJ1bGVzID0gcnU6OnIuQXN0LnJ1bGVzfVxuXHRcdCAgICAgIHwgQXN0LlNJRyBhZyAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnNpZ25hdHVyZXM9YWc6OnIuQXN0LnNpZ25hdHVyZXN9XG5cdFx0ICAgICAgfCBBc3QuVE9LRU5TSUcgKHN0cl9wb3MpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudG9rZW5zPXN0cl9wb3M6OnIuQXN0LnRva2Vuc31cblx0XHQgICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qudm9sdW1lcz0odm9sX3R5cGUsdm9sLHZvbF9wYXJhbSk6OnIuQXN0LnZvbHVtZXN9XG5cdFx0ICAgICAgfCBBc3QuSU5JVCAoYWxnLGluaXRfdCkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5pbml0PShhbGcsaW5pdF90KTo6ci5Bc3QuaW5pdH1cblx0XHQgICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzfVxuXHRcdCAgICAgIHwgQXN0Lk9CUyAoKGxibCxwb3MpLF8gYXMgdmFyKSAtPlxuXHRcdFx0ICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuXHRcdFx0ICAge3Igd2l0aFxuXHRcdFx0ICAgICBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXM7XG5cdFx0XHQgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCxwb3MpXG5cdFx0XHRcdFx0XHQgOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QTE9UIGV4cHIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHI6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBFUlQgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuXHRcdFx0ICAgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKTo6ci5Bc3QucGVydHVyYmF0aW9uc31cblx0XHQgICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsdmFsdWVfbGlzdCkgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpOjpyLkFzdC5jb25maWd1cmF0aW9uc31cblx0XHQgIClcbiMgMTE1MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJTeW50YXggZXJyb3JcIikpKVxuIyAxMTU5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogQXN0LnBhcnNpbmdfY29tcGlsIC0+IEFzdC5wYXJzaW5nX2NvbXBpbCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FnZW50X2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNJRyBfMilcbiMgMTE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAxMDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChBc3QuVE9LRU5TSUcgKF8yLHJoc19wb3MgMikpXG4jIDExNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDEwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdFx0KGFkZF9wb3MgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlLCBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG9mIHRoZSBmb3JtICclYWdlbnQ6IEEoeCx5fnV+dix6KSdcIikpKVxuIyAxMTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW5pdF9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5JTklUIF8yKVxuIyAxMTg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAxMTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKSlcbiMgMTE5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSBpblxuICAgIE9iai5yZXByKFxuIyAxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LkRFQ0xBUkUgXzIpXG4jIDEyMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEFzdC5PQlMgXzIpXG4jIDEyMDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgIChBc3QuUExPVCBfMilcbiMgMTIxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTE3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBsb3QgaW5zdHJ1Y3Rpb24sIGFuIGFsZ2VicmFpYyBleHByZXNzaW9uIGlzIGV4cGVjdGVkXCIpKSlcbiMgMTIyMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnN0cnVjdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlBFUlQgKGFkZF9wb3MgXzIpKVxuIyAxMjI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luc3RydWN0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChBc3QuQ09ORklHICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEyMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5zdHJ1Y3Rpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxBc3QuSU5JVF9NSVggKF8yLHJoc19wb3MgMikpIClcbiMgMTI0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbml0X2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMTI4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsQXN0LklOSVRfTUlYIChfMywgcmhzX3BvcyAzKSkgKVxuIyAxMjUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxMjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoKF8zLEFzdC5JTklUX1RPSyBbXzEscmhzX3BvcyAxXSkpXG4jIDEyNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW5pdF9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKChfMSxBc3QuSU5JVF9UT0sgW18yLHJoc19wb3MgMl0pKVxuIyAxMjY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2luaXRfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMTM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKFtfMSwgcmhzX3BvcyAxXSlcbiMgMTI3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YWx1ZV9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICd2YWx1ZV9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxMzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICgoXzEscmhzX3BvcyAxKTo6XzIpXG4jIDEyODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFsdWVfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChOb25lKVxuIyAxMjkwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgIChTb21lIF8yKVxuIyAxMjk3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMTQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gIChOb25lKVxuIyAxMzAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIF8yKVxuIyAxMzEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCBTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsXzIpKSkpXG4jIDEzMTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX3Bvc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdwZXJ0dXJiYXRpb25fYWxhcm0pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BlcnR1cmJhdGlvbl9wb3N0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIChfMSxTb21lIF8yLF80LF81KSApXG4jIDEzMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAncGVydHVyYmF0aW9uX2FsYXJtKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwZXJ0dXJiYXRpb25fcG9zdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoXzEsTm9uZSxfMyxfNCkgKVxuIyAxMzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICggKE5vbmUsU29tZSBfMixfNCxTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsXzYpKSkpKVxuIyAxMzQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3BlcnR1cmJhdGlvbl9hbGFybSkgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Jvb2xfZXhwcikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKCAoXzEsU29tZSBfMixfNCxOb25lKSlcbiMgMTM1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwZXJ0dXJiYXRpb25fZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdlZmZlY3RfbGlzdCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxMzYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxMzY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdF9saXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnZWZmZWN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoW18xXSlcbiMgMTM3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2VmZmVjdCkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2VmZmVjdF9saXN0KSBpblxuICAgIE9iai5yZXByKFxuIyAxNjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xOjpfMylcbiMgMTM4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3RfbGlzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKEFzdC5VUERBVEUgKChfMixyaHNfcG9zIDIpLF8zKSlcbiMgMTM5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChBc3QuVVBEQVRFICgoXzIscmhzX3BvcyAyKSxfMykpXG4jIDEzOTkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAxNzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgKEFzdC5DRkxPV0xBQkVMIChfMywoXzIscmhzX3BvcyAyKSkpXG4jIDE0MDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE3OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAoQXN0LkNGTE9XTUlYIChfMywoW18yXSxyaHNfcG9zIDIpKSlcbiMgMTQxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbGVhbikgaW5cbiAgICBPYmoucmVwcihcbiMgMTgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKGlmIF8zIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSxfMikgZWxzZSBBc3QuRElOT0ZGIF8yKVxuIyAxNDIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ25vbmVtcHR5X3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2Jvb2xlYW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDE4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChpZiBfNCAmJiBfMyA9IFwiYWJzb2x1dGVcIiB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuQUJTT0xVVEUsXzIpXG5cdCAgIGVsc2UgaWYgXzQgJiYgXzMgPSBcInByb2JhYmlsaXR5XCIgdGhlblxuXHQgICAgIEFzdC5ESU4gKFByaW1pdGl2ZXMuUFJPQkFCSUxJVFksXzIpXG5cdCAgIGVsc2UgaWYgXzQgJiYgXzMgPSBcInJlbGF0aXZlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLlJFTEFUSVZFLF8yKVxuXHQgICAgIGVsc2UgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgICAgICAoXCJJbmNvcnJlY3QgRElOIGV4cHJlc3Npb25cIixyaHNfcG9zIDMpKSlcbiMgMTQzNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3J1bGVfY29udGVudCkgaW5cbiAgICBPYmoucmVwcihcbiMgMTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIEFzdC5BUFBMWShcblx0XHQgICBfMixcblx0XHQgICAoeyBBc3QucmV3cml0ZSA9IGZzdCBfMztcblx0XHQgICAgICBBc3QuYmlkaXJlY3Rpb25hbCA9IGZhbHNlO1xuXHRcdCAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybztBc3Qua191bj1Ob25lO1xuXHRcdCAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG5cdFx0IClcbiMgMTQ1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAxOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKCBBc3QuQVBQTFkoXzIsXG4gICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0ICBBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IFtdO1xuICAgICAgICAgICAgICAgICAgQXN0LnJocz1fMzsgQXN0LmFkZF90b2tlbiA9IFtdO307XG5cdFx0ICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX2RlZj1BbGdfZXhwci5jb25zdCBOYnIuemVybzsgQXN0LmtfdW49Tm9uZTtcbiAgICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9LHJoc19wb3MgMykpXG4gICAgICAgIClcbiMgMTQ2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRBREQgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpKVxuIyAxNDczIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIwOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICggQXN0LkFQUExZKF8yLFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5BcnJvdyB7QXN0Lmxocz1fMzsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgIEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgIClcbiMgMTQ4OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDIxOSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJNYWxmb3JtZWQgcGVydHVyYmF0aW9uIGluc3RydWN0aW9uLCBJIHdhcyBleHBlY3RpbmcgJyRERUwgYWxnX2V4cHJlc3Npb24ga2FwcGFfZXhwcmVzc2lvbidcIikpKVxuIyAxNDk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIyMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgIChcbiAgICAgICBsZXQgdGsgPSAoXzEscmhzX3BvcyAxKSBpblxuICAgICAgICBBc3QuQVBQTFkoQWxnX2V4cHIuY29uc3QgTmJyLm9uZSxcbiAgICAgICAgICAgYWRkX3Bvc1xuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5FZGl0XG5cdFx0IHtBc3QubWl4PVtdO1xuXHRcdCAgQXN0LmRlbHRhX3Rva2VuID1cblx0XHQgIFsoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyxfMywoQWxnX2V4cHIuVE9LRU5fSUQgXzEscmhzX3BvcyAxKSkscmhzX3BvcyAxKSx0a107XG4gICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSkpXG4gICAgICAgKVxuIyAxNTE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ByaW50X2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDIzNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlNOQVBTSE9UIChmYWxzZSxfMikpXG4jIDE1MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAncHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjM3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKEFzdC5TVE9QIF8yKVxuIyAxNTMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ3ByaW50X2V4cHIpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyMzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlBSSU5UIChfMixfNCkgKVxuIyAxNTM4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2VmZmVjdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjM5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKCBBc3QuUExPVEVOVFJZIClcbiMgMTU0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdlZmZlY3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbm9uX2VtcHR5X21peHR1cmUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sZWFuKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggQXN0LlNQRUNJRVNfT0YgKF80LF8yLChfMywgcmhzX3BvcyAzKSkpXG4jIDE1NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnZWZmZWN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgIChbUHJpbWl0aXZlcy5TdHJfcGV4cHIgKGFkZF9wb3MgXzEpXSlcbiMgMTU2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoW1ByaW1pdGl2ZXMuQWxnX3BleHByIF8xXSlcbiMgMTU2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNDYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHJpbWl0aXZlcy5TdHJfcGV4cHIgKF8xLCByaHNfcG9zIDEpOjpfMylcbiMgMTU3NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbm9uZW1wdHlfcHJpbnRfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjQ3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaW1pdGl2ZXMuQWxnX3BleHByIF8xOjpfMylcbiMgMTU4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25lbXB0eV9wcmludF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKFtdKVxuIyAxNTg5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25lbXB0eV9wcmludF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKF8xKVxuIyAxNTk2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ByaW50X2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAodHJ1ZSlcbiMgMTYwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChmYWxzZSlcbiMgMTYwOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sZWFuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdub25fZW1wdHlfbWl4dHVyZSkgaW5cbiAgICBPYmoucmVwcihcbiMgMjYwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCAoKF8xLHJoc19wb3MgMSksKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8yLHJoc19wb3MgMikpKVxuIyAxNjE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlX2RlY2xhcmF0aW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoKChfMSxyaHNfcG9zIDEpLF8yKSlcbiMgMTYyNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZV9kZWNsYXJhdGlvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgKCgoXzEscmhzX3BvcyAxKSxfMikpXG4jIDE2MzIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMjY0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgIChyYWlzZVxuXHQgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXl8xXlwiJ1wiKSkpXG5cdCAgICApXG4jIDE2NDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGVfZGVjbGFyYXRpb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNjQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMjcyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIEFsZ19leHByLlRSVUUpXG4jIDE2NTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAyNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIEFsZ19leHByLkZBTFNFKVxuIyAxNjYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2Jvb2xfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2Jvb2xfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjc2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBfMSApXG4jIDE2NjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0JPT0xfT1AoT3BlcmF0b3IuTk9ULF8yKSkpXG4jIDE2NzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYm9vbF9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyNzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQsXzEsXzMpKSlcbiMgMTY4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdib29sX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDI3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0JPT0xfT1AoT3BlcmF0b3IuT1IsXzEsXzMpKSlcbiMgMTY5MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkdSRUFURVIsXzEsXzMpKSlcbiMgMTY5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLlNNQUxMRVIsXzEsXzMpKSlcbiMgMTcwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdib29sX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyODUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChhZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkVRVUFMLF8xLF8zKSkpXG4jIDE3MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMjg3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5ESUZGLF8xLF8zKSkpXG4jIDE3MjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYm9vbF9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAyOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSlcbiMgMTczMCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxzdHJpbmcpIEFsZ19leHByLmJvb2wgTG9jLmFubm90ZWQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAxNzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDI5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKF8yKVxuIyAxNzQzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3Rva2VuX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDI5NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zICBcIk1hbGZvcm1lZCB0b2tlbiBleHByZXNzaW9uLCBJIHdhcyBleHBlY3RpbmcgYV8wIHRfMCArIC4uLiArIGFfbiB0X24sIHdoZXJlIHRfaSBhcmUgdG9rZW5zIGFuZCBhX2kgYW55IGFsZ2VicmFpYyBmb3JtdWxhXCIpKSlcbiMgMTc1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd0b2tlbl9leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTc1NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzdW1fdG9rZW4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzMDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgIChbKF8xLChfMixyaHNfcG9zIDIpKV0pXG4jIDE3NjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc3VtX3Rva2VuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3N1bV90b2tlbikgaW5cbiAgICBPYmoucmVwcihcbiMgMzAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGwgPSBfNCBpbiAoXzEsKF8yLHJoc19wb3MgMikpOjpsKVxuIyAxNzc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoWyhfMSwoXzMscmhzX3BvcyAzKSldKVxuIyAxNzgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzdW1fdG9rZW4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDMwNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobGV0IGwgPSBfNSBpbiAoXzEsKF8zLHJoc19wb3MgMykpOjpsKVxuIyAxNzkxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3N1bV90b2tlbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ3BhdHRlcm4pIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICd0b2tlbl9leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYXJyb3cpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXzFdOyBBc3Qucm1fdG9rZW4gPSBfMjsgQXN0LnJocz1bXzRdOyBBc3QuYWRkX3Rva2VuID0gXzV9LFxuICAgICBfMylcbiMgMTgwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2Fycm93KSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKEFzdC5BcnJvdyB7QXN0Lmxocz1bXzFdOyBBc3Qucm1fdG9rZW4gPSBfMjsgQXN0LnJocz1bXTsgQXN0LmFkZF90b2tlbiA9IF80fSxcbiAgICAgXzMpXG4jIDE4MTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAndG9rZW5fZXhwcikgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2Fycm93KSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncGF0dGVybikgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IF8xOyBBc3QucmhzPVtfM107IEFzdC5hZGRfdG9rZW4gPSBfNH0sXG4gICAgIF8yKVxuIyAxODI1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3J1bGVfY29udGVudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhcnJvdykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3Rva2VuX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDMxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgIChBc3QuQXJyb3cge0FzdC5saHM9W107IEFzdC5ybV90b2tlbiA9IF8xOyBBc3QucmhzPVtdOyBBc3QuYWRkX3Rva2VuID0gXzN9LFxuICAgICBfMilcbiMgMTgzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2NvbnRlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdwYXR0ZXJuKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAndG9rZW5fZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzIxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgKCBBc3QuRWRpdCB7QXN0Lm1peCA9IFtfMV07IEFzdC5kZWx0YV90b2tlbiA9IF8yfSxmYWxzZSApXG4jIDE4NDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc3VtX3Rva2VuKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIEFzdC5FZGl0IHtBc3QubWl4ID0gW107IEFzdC5kZWx0YV90b2tlbiA9IF8yfSxmYWxzZSApXG4jIDE4NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncnVsZV9jb250ZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAncnVsZV9jb250ZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYmlyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzMjcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIGxldCAoa19kZWYsa191bixrX29wLGtfb3BfdW4pID0gXzIgaW5cbiAgICAgIGxldCByZXdyaXRlLGJpZGlyZWN0aW9uYWwgPSBfMSBpblxuICAgICAgYWRkX3BvcyB7XG4gICAgICAgIEFzdC5yZXdyaXRlO0FzdC5iaWRpcmVjdGlvbmFsO1xuICAgICAgICBBc3Qua19kZWY7IEFzdC5rX3VuOyBBc3Qua19vcDsgQXN0Lmtfb3BfdW47XG4gICAgICB9IClcbiMgMTg2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdydWxlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDMzNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChmYWxzZSlcbiMgMTg2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhcnJvdykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzM2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICh0cnVlKVxuIyAxODc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2Fycm93KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICggTmJyLkYgaW5maW5pdHkgKVxuIyAxODgxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogZmxvYXQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKCBOYnIuRiBfMSApXG4jIDE4ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbmJyKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICggTmJyLkkgXzEgKVxuIyAxODk1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ25icikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ25icikgaW5cbiAgICBPYmoucmVwcihcbiMgMzQ1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkNPTlNUIF8xKSlcbiMgMTkwMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb25zdGFudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzQ2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLkVNQVhfVkFSKSkpXG4jIDE5MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY29uc3RhbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDM0NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5UTUFYX1ZBUikpKVxuIyAxOTE0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpKVxuIyAxOTIwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvbnN0YW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM1MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5UT0tFTl9JRCAoXzIpKSlcbiMgMTkyNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ25vbl9lbXB0eV9taXh0dXJlKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIGFkZF9wb3MgKEFsZ19leHByLktBUFBBX0lOU1RBTkNFIF8yKSApXG4jIDE5MzQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IHN0cmluZykgaW5cbiAgICBPYmoucmVwcihcbiMgMzU0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQUxHX1ZBUiAoXzEpKSlcbiMgMTk0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyAzNTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSIChfMSkpKVxuIyAxOTQ4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3ZhcmlhYmxlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVElNRV9WQVIpKSlcbiMgMTk1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKSlcbiMgMTk2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICd2YXJpYWJsZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgMzU4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLk5VTExfRVZFTlRfVkFSKSkpXG4jIDE5NjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAndmFyaWFibGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzYyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMTk3MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2NvbnN0YW50KSBpblxuICAgIE9iai5yZXByKFxuIyAzNjMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChfMSlcbiMgMTk4MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3ZhcmlhYmxlKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgIChfMSlcbiMgMTk4NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnc21hbGxfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUFYLF8yLF8zKSkpXG4jIDE5OTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTixfMixfMykpKVxuIyAyMDAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNjkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLkVYUCxfMikpKVxuIyAyMDEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNJTlVTLF8yKSkpXG4jIDIwMTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLF8yKSkpXG4jIDIwMjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlRBTixfMikpKVxuIyAyMDMxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3NtYWxsX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzNzMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5JTlQsXzIpKSlcbiMgMjAzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsXzIpKSlcbiMgMjA0NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdzbWFsbF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuTE9HLF8yKSkpXG4jIDIwNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnc21hbGxfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM3OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICggYWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlVNSU5VUyxfMikpIClcbiMgMjA1OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdzbWFsbF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAoIF8xIClcbiMgMjA2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1VTFQsXzEsXzMpKSlcbiMgMjA3NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlNVTSxfMSxfMykpKVxuIyAyMDgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzgzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYsXzEsXzMpKSlcbiMgMjA5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NSU5VUyxfMSxfMykpKVxuIyAyMDk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21pZF9hbGdfZXhwcikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ21pZF9hbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgMzg1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5QT1csXzEsXzMpKSlcbiMgMjEwNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtaWRfYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdtaWRfYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM4NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTU9EVUxPLF8xLF8zKSkpXG4jIDIxMTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbWlkX2FsZ19leHByKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbWlkX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzODkgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAoXzEpXG4jIDIxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdib29sX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdhbGdfZXhwcikgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3NtYWxsX2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgKEFsZ19leHByLklGKF8xLF8zLF81KSkpXG4jIDIxMzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX2V4cHIpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdyYXRlKSBpblxuICAgIE9iai5yZXByKFxuIyAzOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgKGxldCAoazIsazEpID0gXzIgaW4gKGsyLGsxLE5vbmUsTm9uZSkpXG4jIDIxMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncmF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3JhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDM5NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgKGsyLGsxKSA9IF8yIGluXG5cdFx0XHQgIGxldCAoa2JhY2ssa2JhY2sxKSA9IF80IGluXG5cdFx0XHQgIChrMixrMSxTb21lIGtiYWNrLGtiYWNrMSkpXG4jIDIxNDcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYmlyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyAzOTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpKVxuIyAyMTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2JpcmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEsU29tZSBfMykpXG4jIDIxNjEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2FsZ19leHByKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggKF8xLFNvbWUgXzMpIClcbiMgMjE2OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKChfMSxOb25lKSlcbiMgMjE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYWxnX3dpdGhfcmFkaXVzKSBpblxuICAgIE9iai5yZXByKFxuIyA0MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICgoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxTb21lIF8yKSlcbiMgMjE4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQwNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKChfMSxTb21lIChMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09OU1QgTmJyLnplcm8pLE5vbmUpKSlcbiMgMjE5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdyYXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgIChyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJtaXNzaW5nIHJ1bGUgcmF0ZVwiKSkpXG4jIDIxOTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncmF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2FsZ19leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA0MTIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICgoXzEsTm9uZSkpXG4jIDIyMDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWxnX3dpdGhfcmFkaXVzKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWxnX2V4cHIpIGluXG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhbGdfZXhwcikgaW5cbiAgICBPYmoucmVwcihcbiMgNDEzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoXzEsIFNvbWUgXzMpKVxuIyAyMjExIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FsZ193aXRoX3JhZGl1cykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxNyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMilcbiMgMjIxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BhdHRlcm4pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMSA6OiBfMylcbiMgMjIyNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwYXR0ZXJuKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnYWdlbnRfZXhwcmVzc2lvbikgaW5cbiAgICBPYmoucmVwcihcbiMgNDE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMjMzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BhdHRlcm4pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIFtbQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKV1dIClcbiMgMjI0MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25fZW1wdHlfbWl4dHVyZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwYXR0ZXJuKSBpblxuICAgIE9iai5yZXByKFxuIyA0MjYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAoIFtBc3QuUHJlc2VudCAoKF8xLHJoc19wb3MgMSksIF8zLCBBc3QuTm9Nb2QpIDo6IF82XSlcbiMgMjI1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdub25fZW1wdHlfbWl4dHVyZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNDMwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAoIEFzdC5Ob01vZCApXG4jIDIyNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbW9kX2FnZW50KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA0MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgKCBBc3QuQ3JlYXRlIClcbiMgMjI2MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdtb2RfYWdlbnQpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQzMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuRXJhc2UgKVxuIyAyMjY4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ21vZF9hZ2VudCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlByZXNlbnQgKChfMSxyaHNfcG9zIDEpLCBfMywgQXN0Lk5vTW9kKSlcbiMgMjI3NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIE9iai5yZXByKFxuIyA0MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeXzFeXCInXCIpKSkpXG4jIDIyODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYWdlbnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdtb2RfYWdlbnQpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSBpblxuICAgIE9iai5yZXByKFxuIyA0NDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgKEFzdC5QcmVzZW50ICgoXzIscmhzX3BvcyAyKSwgXzQsIF8xKSlcbiMgMjI5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdhZ2VudF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAnbW9kX2FnZW50KSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ0MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXl8yXlwiJ1wiKSkpKVxuIyAyMzAyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FnZW50X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ0OCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoW10pXG4jIDIzMDggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncG9ydF9leHByZXNzaW9uX3NpZykgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykgaW5cbiAgICBPYmoucmVwcihcbiMgNDQ5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8zKVxuIyAyMzE2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uX3NpZykpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoW18xXSlcbiMgMjMyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdpbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDQ1NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAyMzI5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiAncG9ydF9leHByZXNzaW9uKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChfMTo6XzMpXG4jIDIzMzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJmYWNlX2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdwb3J0X2V4cHJlc3Npb24pIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyMzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVyZmFjZV9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DRVEgXzIscmhzX3BvcyAyKSlcbiMgMjM1MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8zID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDYxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgKCBTb21lIChBc3QuQ0dURSBfMyxyaHNfcG9zIDMpKVxuIyAyMzU4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2NvdW50ZXJfdGVzdCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0NjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAoIFNvbWUgKEFzdC5DTFRFIF8zLHJoc19wb3MgMykpXG4jIDIzNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnY291bnRlcl90ZXN0KSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICggU29tZSAoQXN0LkNWQVIgXzIscmhzX3BvcyAyKSlcbiMgMjM3MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdjb3VudGVyX3Rlc3QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ2NyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAoIEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSBfMzsgfSApXG4jIDIzODMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDcxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fMztcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9IF80OyB9IClcbiMgMjM5NSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1bXTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzU7IH0gKVxuIyAyNDA3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA1IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiAnaW50ZXJuYWxfc3RhdGUpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMiA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogJ2xpbmtfc3RhdGUpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDc5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICggQXN0LlBvcnRcblx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fNTtcblx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzY7IH0gKVxuIyAyNDIwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ4MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKF80LHJoc19wb3MgNCl9IClcbiMgMjQzMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb24pKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA0ODggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBOb25lO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtXzUscmhzX3BvcyA1KX0gKVxuIyAyNDQyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIGxldCBfNSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDQ5MyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgKCBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IF8yO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9IChfNSxyaHNfcG9zIDUpfSApXG4jIDI0NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNDk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAoIEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gXzI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKC0gXzYscmhzX3BvcyA2KX0gKVxuIyAyNDY2IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbikpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzEgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAxIDogc3RyaW5nKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnY291bnRlcl90ZXN0KSBpblxuICAgIE9iai5yZXByKFxuIyA1MDMgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICggQXN0LkNvdW50ZXJcblx0ICAgeyBBc3QuY291bnRlcl9uYW1lID0gKF8xLHJoc19wb3MgMSk7XG5cdCAgIEFzdC5jb3VudGVyX3Rlc3QgPSBfMjtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSBMb2MuYW5ub3Rfd2l0aF9kdW1teSAwfSApXG4jIDI0NzcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAncG9ydF9leHByZXNzaW9uKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzM7IH0gKVxuIyAyNDg4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMyA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfMyA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBsZXQgXzQgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogJ2xpbmtfc3RhdGVfbW9kKSBpblxuICAgIE9iai5yZXByKFxuIyA1MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICggQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPShfMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9XzI7IEFzdC5wb3J0X2xpbms9XzM7XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IE5vbmU7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzQ7IH0gKVxuIyAyNTAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdsaW5rX3N0YXRlX21vZCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oXzEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PV8yOyBBc3QucG9ydF9saW5rPVtdO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBTb21lKF80LHJoc19wb3MgNCk7IEFzdC5wb3J0X2xpbmtfbW9kID0gXzU7IH0gKVxuIyAyNTEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNSA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiA0IDogJ2ludGVybmFsX3N0YXRlKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDIgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMSA6ICdsaW5rX3N0YXRlKSBpblxuICAgIGxldCBfNiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZV9tb2QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDUyMyBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KF8xLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD1fMjsgQXN0LnBvcnRfbGluaz1fNTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZShfNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9IF82OyB9IClcbiMgMjUyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDMgOiBzdHJpbmcpIGluXG4gICAgbGV0IF80ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTI3IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgKCBBc3QuQ291bnRlclxuICAgIFx0ICAgeyBBc3QuY291bnRlcl9zaWdfbmFtZSA9IChfMSxyaHNfcG9zIDEpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgXzQsIHJoc19wb3MgNCk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gXzQ7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjUzOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDQgOiBzdHJpbmcpIGluXG4gICAgbGV0IF81ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTM0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgIChBc3QuQ291bnRlclxuICB7IEFzdC5jb3VudGVyX3NpZ19uYW1lID0gKF8xLHJoc19wb3MgMSk7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IE5vbmU7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC1fNSksIHJoc19wb3MgNSk7XG4gICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSAtXzU7XG4gICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNTUxIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6IHN0cmluZykgaW5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAzIDogJ2NvdW50ZXJfdGVzdCkgaW5cbiAgICBsZXQgXzUgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1NDEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoIGxldCBtaW4gPVxuICAgICAgICAgICAgbWF0Y2ggXzIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICAgaW4gQXN0LkNvdW50ZXJcbiAgICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSBfNSwgcmhzX3BvcyA1KTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjU3MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDUgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgNCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgbGV0IF82ID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6IGludCkgaW5cbiAgICBPYmoucmVwcihcbiMgNTUzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAoIGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCBfMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC1fNiksIHJoc19wb3MgNik7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW4gO1xuICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fSlcbiMgMjU5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdwb3J0X2V4cHJlc3Npb25fc2lnKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdjb3VudGVyX3Rlc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU2NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgKCBsZXQgbWluID1cbiAgICAgICAgICAgbWF0Y2ggXzIgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgfCBTb21lIChBc3QuQ0VRIGksXykgLT4gaVxuICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIklzc3VlIGNvdW50ZXJzIGluIHNpZ25hdHVyZVwiKSlcbiAgICAgICBpblxuICAgICAgIEFzdC5Db3VudGVyXG4gIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoXzEscmhzX3BvcyAxKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IE5vbmU7XG4gICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW47XG4gICAgQXN0LmNvdW50ZXJfc2lnX3Zpc2libGUgPSBBc3QuRnJvbV9vcmlnaW5hbF9hc3R9KVxuIyAyNjA5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ3BvcnRfZXhwcmVzc2lvbl9zaWcpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU4MSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgKFtdKVxuIyAyNjE1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiBzdHJpbmcpIGluXG4gICAgbGV0IF8yID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdpbnRlcm5hbF9zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNTgyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChTb21lIF8xLHJoc19wb3MgMSk6Ol8yKVxuIyAyNjIzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2ludGVybmFsX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA1ODQgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBhZnRlciBpbnRlcm5hbCBzdGF0ZVwiKSkpXG4jIDI2MzAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnaW50ZXJuYWxfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU4OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgKE5vbmUpXG4jIDI2MzYgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnbGlua19zdGF0ZV9tb2QpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDU5MCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgKFNvbWUgTm9uZSlcbiMgMjY0MiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzMgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwIDogaW50KSBpblxuICAgIE9iai5yZXByKFxuIyA1OTEgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgIChTb21lIChTb21lIChfMyxyaHNfcG9zIDMpKSlcbiMgMjY0OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTkzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgIChhZGRfcG9zIFwiSW5jb3JyZWN0IGxpbmsgbW9kaWZpY2F0aW9uXCIpKSlcbiMgMjY1NiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6ICdsaW5rX3N0YXRlX21vZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNTk4IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICgoTEthcHBhLkxOS19GUkVFLHJoc19wb3MgMikpXG4jIDI2NjIgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBpbnQpIGluXG4gICAgT2JqLnJlcHIoXG4jIDU5OSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfVkFMVUUgKF8yLCgpKSxyaHNfcG9zIDIpKVxuIyAyNjY5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjAwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoKExLYXBwYS5MTktfU09NRSxyaHNfcG9zIDIpKVxuIyAyNjc1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBsZXQgXzIgPSAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAyIDogc3RyaW5nKSBpblxuICAgIGxldCBfNCA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiBzdHJpbmcpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYwMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoYWRkX3BvcyAoTEthcHBhLkxOS19UWVBFXG5cdFx0XHRcdCAgICAgICgoXzIscmhzX3BvcyAyKSwoXzQscmhzX3BvcyA0KSkpKVxuIyAyNjg0IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2FfbGlua19zdGF0ZSkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjAzIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgKGFkZF9wb3MgTEthcHBhLkxOS19BTlkpXG4jIDI2OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MDUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAocmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyBcIkludmFsaWQgbGluayBzdGF0ZVwiKSkpXG4jIDI2OTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAnYV9saW5rX3N0YXRlKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYV9saW5rX3N0YXRlKSBpblxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDAgOiAnbGlua19zdGF0ZSkgaW5cbiAgICBPYmoucmVwcihcbiMgNjEwIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAoXzE6Ol8yKVxuIyAyNzA1IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgbGV0IF8xID0gKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCA6ICdhX2xpbmtfc3RhdGUpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxMSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgIChbXzFdKVxuIyAyNzEyIFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1sXCJcbiAgICAgICAgICAgICAgIDogJ2xpbmtfc3RhdGUpKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+XG4gICAgT2JqLnJlcHIoXG4jIDYxNCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgKEFzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKSlcbiMgMjcxOCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMiA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnYm9vbF9leHByKSBpblxuICAgIE9iai5yZXByKFxuIyA2MTUgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQXN0LlJVTiBfMilcbiMgMjcyNSBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIGxldCBfMSA9IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDEgOiAnZWZmZWN0X2xpc3QpIGluXG4gICAgT2JqLnJlcHIoXG4jIDYxNiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAoQXN0Lk1PRElGWSBfMSlcbiMgMjczMiBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPlxuICAgIE9iai5yZXByKFxuIyA2MTcgXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWx5XCJcbiAgICAgICAoQXN0LlFVSVQpXG4jIDI3MzggXCJjb3JlL2dyYW1tYXIva2FwcGFQYXJzZXIubWxcIlxuICAgICAgICAgICAgICAgOiAoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZCkpXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT5cbiAgICBPYmoucmVwcihcbiMgNjE5IFwiY29yZS9ncmFtbWFyL2thcHBhUGFyc2VyLm1seVwiXG4gKHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAoYWRkX3BvcyBcIlVucmVjb2duaXplZCBjb21tYW5kXCIpKSlcbiMgMjc0NCBcImNvcmUvZ3JhbW1hci9rYXBwYVBhcnNlci5tbFwiXG4gICAgICAgICAgICAgICA6IChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5jb21tYW5kKSlcbigqIEVudHJ5IHN0YXJ0X3J1bGUgKilcbjsgKGZ1biBfX2NhbWxfcGFyc2VyX2VudiAtPiByYWlzZSAoUGFyc2luZy5ZWWV4aXQgKFBhcnNpbmcucGVla192YWwgX19jYW1sX3BhcnNlcl9lbnYgMCkpKVxuKCogRW50cnkgaW50ZXJhY3RpdmVfY29tbWFuZCAqKVxuOyAoZnVuIF9fY2FtbF9wYXJzZXJfZW52IC0+IHJhaXNlIChQYXJzaW5nLllZZXhpdCAoUGFyc2luZy5wZWVrX3ZhbCBfX2NhbWxfcGFyc2VyX2VudiAwKSkpXG4oKiBFbnRyeSBzdGFuZGFsb25lX2VmZmVjdF9saXN0ICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbigqIEVudHJ5IHN0YW5kYWxvbmVfYm9vbF9leHByICopXG47IChmdW4gX19jYW1sX3BhcnNlcl9lbnYgLT4gcmFpc2UgKFBhcnNpbmcuWVlleGl0IChQYXJzaW5nLnBlZWtfdmFsIF9fY2FtbF9wYXJzZXJfZW52IDApKSlcbnxdXG5sZXQgeXl0YWJsZXMgPVxuICB7IFBhcnNpbmcuYWN0aW9ucz15eWFjdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9jb25zdD15eXRyYW5zbF9jb25zdDtcbiAgICBQYXJzaW5nLnRyYW5zbF9ibG9jaz15eXRyYW5zbF9ibG9jaztcbiAgICBQYXJzaW5nLmxocz15eWxocztcbiAgICBQYXJzaW5nLmxlbj15eWxlbjtcbiAgICBQYXJzaW5nLmRlZnJlZD15eWRlZnJlZDtcbiAgICBQYXJzaW5nLmRnb3RvPXl5ZGdvdG87XG4gICAgUGFyc2luZy5zaW5kZXg9eXlzaW5kZXg7XG4gICAgUGFyc2luZy5yaW5kZXg9eXlyaW5kZXg7XG4gICAgUGFyc2luZy5naW5kZXg9eXlnaW5kZXg7XG4gICAgUGFyc2luZy50YWJsZXNpemU9eXl0YWJsZXNpemU7XG4gICAgUGFyc2luZy50YWJsZT15eXRhYmxlO1xuICAgIFBhcnNpbmcuY2hlY2s9eXljaGVjaztcbiAgICBQYXJzaW5nLmVycm9yX2Z1bmN0aW9uPXBhcnNlX2Vycm9yO1xuICAgIFBhcnNpbmcubmFtZXNfY29uc3Q9eXluYW1lc19jb25zdDtcbiAgICBQYXJzaW5nLm5hbWVzX2Jsb2NrPXl5bmFtZXNfYmxvY2sgfVxubGV0IHN0YXJ0X3J1bGUgKGxleGZ1biA6IExleGluZy5sZXhidWYgLT4gdG9rZW4pIChsZXhidWYgOiBMZXhpbmcubGV4YnVmKSA9XG4gICAoUGFyc2luZy55eXBhcnNlIHl5dGFibGVzIDEgbGV4ZnVuIGxleGJ1ZiA6IEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWwpXG5sZXQgaW50ZXJhY3RpdmVfY29tbWFuZCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMiBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0LmNvbW1hbmQpXG5sZXQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdCAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgMyBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLEFzdC5taXh0dXJlLHN0cmluZyxBc3QucnVsZSkgQXN0Lm1vZGlmX2V4cHIgbGlzdClcbmxldCBzdGFuZGFsb25lX2Jvb2xfZXhwciAobGV4ZnVuIDogTGV4aW5nLmxleGJ1ZiAtPiB0b2tlbikgKGxleGJ1ZiA6IExleGluZy5sZXhidWYpID1cbiAgIChQYXJzaW5nLnl5cGFyc2UgeXl0YWJsZXMgNCBsZXhmdW4gbGV4YnVmIDogKEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZClcbjs7XG4iLCIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi9cbi8qIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICovXG4vKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuLyogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICovXG4vKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICovXG4vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xuXG4le1xuICBsZXQgYWRkX3BvcyB4ID1cbiAgICAoeCxMb2Mub2ZfcG9zIChQYXJzaW5nLnN5bWJvbF9zdGFydF9wb3MgKCkpIChQYXJzaW5nLnN5bWJvbF9lbmRfcG9zICgpKSlcbiAgbGV0IHJoc19wb3MgaSA9XG4gIExvYy5vZl9wb3MgKFBhcnNpbmcucmhzX3N0YXJ0X3BvcyBpKSAoUGFyc2luZy5yaHNfZW5kX3BvcyBpKVxuJX1cblxuJXRva2VuIEVPRiBORVdMSU5FIFNFTUlDT0xPTiBDT01NQSBET1QgT1BfUEFSIENMX1BBUiBPUF9DVVIgQ0xfQ1VSIEFUIFRZUEUgTEFSXG4ldG9rZW4gQ1BVVElNRSBFTUFYIFRNQVggUExPVEVOVFJZIERFTEVURSBJTlRSTyBUUkFDSyBETyBTRVQgUkVQRUFUIFNQRUNJRVNfT0ZcbiV0b2tlbiBVTlRJTCBMT0cgUExVUyBNVUxUIE1JTlVTIE1BWCBNSU4gRElWIFNJTlVTIENPU0lOVVMgVEFOIFBPVyBBQlMgTU9EVUxPXG4ldG9rZW4gU1FSVCBFWFBPTkVOVCBJTkZJTklUWSBUSU1FIEVWRU5UIE5VTExfRVZFTlQgUElQRSBFUVVBTCBBTkQgT1IgTk9UXG4ldG9rZW4gR1JFQVRFUiBTTUFMTEVSIFRSVUUgRkFMU0UgRElGRiBLQVBQQV9SQVIgS0FQUEFfTFJBUiBLQVBQQV9MTktcbiV0b2tlbiBTSUdOQVRVUkUgSU5JVCBMRVQgUExPVCBQRVJUIE9CUyBUT0tFTiBDT05GSUcgS0FQUEFfV0xEIEtBUFBBX1NFTUlcbiV0b2tlbiBGTFVYIEFTU0lHTiBQUklOVEYgU1RPUCBTTkFQU0hPVCBSVU4gVEhFTiBFTFNFIEFMQVJNIEFQUExZXG4ldG9rZW4gPGludD4gSU5UXG4ldG9rZW4gPHN0cmluZz4gSURcbiV0b2tlbiA8c3RyaW5nPiBLQVBQQV9NUksgTEFCRUxcbiV0b2tlbiA8ZmxvYXQ+IEZMT0FUXG4ldG9rZW4gPHN0cmluZz4gU1RSSU5HXG5cbiVsZWZ0IE1JTlVTIFBMVVNcbiVsZWZ0IE1VTFQgRElWXG4lbGVmdCBNT0RVTE9cbiVyaWdodCBQT1dcbiVub25hc3NvYyBMT0cgU1FSVCBFWFBPTkVOVCBTSU5VUyBDT1NJTlVTIEFCUyBUQU5cblxuJWxlZnQgT1JcbiVsZWZ0IEFORFxuXG4lbm9uYXNzb2MgVEhFTlxuXG4lc3RhcnQgc3RhcnRfcnVsZVxuJXR5cGUgPEFzdC5wYXJzaW5nX2NvbXBpbCAtPiBBc3QucGFyc2luZ19jb21waWw+IHN0YXJ0X3J1bGVcblxuJXN0YXJ0IGludGVyYWN0aXZlX2NvbW1hbmRcbiV0eXBlIDwoQXN0Lm1peHR1cmUsQXN0Lm1peHR1cmUsc3RyaW5nLEFzdC5ydWxlKSBBc3QuY29tbWFuZD4gaW50ZXJhY3RpdmVfY29tbWFuZFxuXG4lc3RhcnQgc3RhbmRhbG9uZV9lZmZlY3RfbGlzdFxuJXR5cGUgPChBc3QubWl4dHVyZSxBc3QubWl4dHVyZSxzdHJpbmcsQXN0LnJ1bGUpIEFzdC5tb2RpZl9leHByIGxpc3Q+IHN0YW5kYWxvbmVfZWZmZWN0X2xpc3RcblxuJXN0YXJ0IHN0YW5kYWxvbmVfYm9vbF9leHByXG4ldHlwZSA8KEFzdC5taXh0dXJlLHN0cmluZykgQWxnX2V4cHIuYm9vbCBMb2MuYW5ub3RlZD4gc3RhbmRhbG9uZV9ib29sX2V4cHJcblxuJSUgLypHcmFtbWFyIHJ1bGVzKi9cblxubmV3bGluZTpcbiAgICB8IE5FV0xJTkUgc3RhcnRfcnVsZSB7JDJ9XG4gICAgfCBFT0Yge2Z1biBjIC0+IGN9O1xuXG5zdGFydF9ydWxlOlxuICAgIHwgbmV3bGluZSB7JDF9XG4gICAgfCBMQUJFTCBydWxlX2V4cHJlc3Npb24gbmV3bGluZVxuICAgICAgICB7bGV0IG91dCA9IChTb21lICgkMSwgcmhzX3BvcyAxKSwkMikgaW5cblx0ZnVuIGMgLT4gbGV0IHIgPSAkMyBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gb3V0OjpyLkFzdC5ydWxlc319XG4gICAgfCBydWxlX2V4cHJlc3Npb24gbmV3bGluZVxuICAgICAgICB7ZnVuIGMgLT4gbGV0IHIgPSAkMiBjIGluIHtyIHdpdGggQXN0LnJ1bGVzID0gKE5vbmUsJDEpOjpyLkFzdC5ydWxlc319XG4gICAgfCBMQUJFTCBFUVVBTCBhbGdfZXhwciBuZXdsaW5lXG4gICAgICAgIHtsZXQgb3V0ID0gKCgkMSxyaHNfcG9zIDEpLCQzKSBpblxuXHRmdW4gYyAtPiBsZXQgciA9ICQ0IGMgaW4ge3Igd2l0aCBBc3QudmFyaWFibGVzID0gb3V0OjpyLkFzdC52YXJpYWJsZXN9fVxuICAgIHwgaW5zdHJ1Y3Rpb24gbmV3bGluZVxuXHRcdCAgeyBmdW4gYyAtPiBsZXQgciA9ICQyIGMgaW5cblx0XHQgICAgICBtYXRjaCAkMSB3aXRoXG5cdFx0ICAgICAgfCBBc3QuUlVMRSBydSAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnJ1bGVzID0gcnU6OnIuQXN0LnJ1bGVzfVxuXHRcdCAgICAgIHwgQXN0LlNJRyBhZyAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnNpZ25hdHVyZXM9YWc6OnIuQXN0LnNpZ25hdHVyZXN9XG5cdFx0ICAgICAgfCBBc3QuVE9LRU5TSUcgKHN0cl9wb3MpIC0+XG5cdFx0XHQge3Igd2l0aCBBc3QudG9rZW5zPXN0cl9wb3M6OnIuQXN0LnRva2Vuc31cblx0XHQgICAgICB8IEFzdC5WT0xTSUcgKHZvbF90eXBlLHZvbCx2b2xfcGFyYW0pIC0+XG5cdFx0XHQge3Igd2l0aCBBc3Qudm9sdW1lcz0odm9sX3R5cGUsdm9sLHZvbF9wYXJhbSk6OnIuQXN0LnZvbHVtZXN9XG5cdFx0ICAgICAgfCBBc3QuSU5JVCAoYWxnLGluaXRfdCkgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5pbml0PShhbGcsaW5pdF90KTo6ci5Bc3QuaW5pdH1cblx0XHQgICAgICB8IEFzdC5ERUNMQVJFIHZhciAtPlxuXHRcdFx0IHtyIHdpdGggQXN0LnZhcmlhYmxlcyA9IHZhcjo6ci5Bc3QudmFyaWFibGVzfVxuXHRcdCAgICAgIHwgQXN0Lk9CUyAoKGxibCxwb3MpLF8gYXMgdmFyKSAtPlxuXHRcdFx0ICgqZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHNob3J0Y3V0IGZvciAldmFyICsgJXBsb3QqKVxuXHRcdFx0ICAge3Igd2l0aFxuXHRcdFx0ICAgICBBc3QudmFyaWFibGVzID0gdmFyOjpyLkFzdC52YXJpYWJsZXM7XG5cdFx0XHQgICAgIEFzdC5vYnNlcnZhYmxlcyA9IChBbGdfZXhwci5BTEdfVkFSIGxibCxwb3MpXG5cdFx0XHRcdFx0XHQgOjpyLkFzdC5vYnNlcnZhYmxlc31cblx0XHQgICAgICB8IEFzdC5QTE9UIGV4cHIgLT5cblx0XHRcdCB7ciB3aXRoIEFzdC5vYnNlcnZhYmxlcyA9IGV4cHI6OnIuQXN0Lm9ic2VydmFibGVzfVxuXHRcdCAgICAgIHwgQXN0LlBFUlQgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKSAtPlxuXHRcdFx0IHtyIHdpdGhcblx0XHRcdCAgQXN0LnBlcnR1cmJhdGlvbnMgPVxuXHRcdFx0ICAgKChhbGFybSxwcmUsZWZmZWN0LG9wdCkscG9zKTo6ci5Bc3QucGVydHVyYmF0aW9uc31cblx0XHQgICAgICB8IEFzdC5DT05GSUcgKHBhcmFtX25hbWUsdmFsdWVfbGlzdCkgLT5cblx0XHRcdCB7ciB3aXRoXG5cdFx0XHQgIEFzdC5jb25maWd1cmF0aW9ucyA9IChwYXJhbV9uYW1lLHZhbHVlX2xpc3QpOjpyLkFzdC5jb25maWd1cmF0aW9uc31cblx0XHQgIH1cbiAgICB8IGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJTeW50YXggZXJyb3JcIikpfVxuICAgIDtcblxuaW5zdHJ1Y3Rpb246XG4gICAgfCBTSUdOQVRVUkUgYWdlbnRfZXhwcmVzc2lvbl9zaWcge0FzdC5TSUcgJDJ9XG4gICAgfCBUT0tFTiBJRCB7QXN0LlRPS0VOU0lHICgkMixyaHNfcG9zIDIpfVxuICAgIHwgU0lHTkFUVVJFIGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdFx0KGFkZF9wb3MgXCJNYWxmb3JtZWQgYWdlbnQgc2lnbmF0dXJlLCBJIHdhcyBleHBlY3Rpbmcgc29tZXRoaW5nIG9mIHRoZSBmb3JtICclYWdlbnQ6IEEoeCx5fnV+dix6KSdcIikpfVxuXG4gICAgfCBJTklUIGluaXRfZGVjbGFyYXRpb24ge0FzdC5JTklUICQyfVxuICAgIHwgSU5JVCBlcnJvclxuXHR7IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIGluaXRpYWwgY29uZGl0aW9uXCIpKX1cblxuICAgIHwgTEVUIHZhcmlhYmxlX2RlY2xhcmF0aW9uIHtBc3QuREVDTEFSRSAkMn1cbiAgICB8IE9CUyB2YXJpYWJsZV9kZWNsYXJhdGlvbiB7QXN0Lk9CUyAkMn1cbiAgICB8IFBMT1QgYWxnX2V4cHIge0FzdC5QTE9UICQyfVxuICAgIHwgUExPVCBlcnJvciB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwbG90IGluc3RydWN0aW9uLCBhbiBhbGdlYnJhaWMgZXhwcmVzc2lvbiBpcyBleHBlY3RlZFwiKSl9XG4gICAgfCBQRVJUIHBlcnR1cmJhdGlvbl9kZWNsYXJhdGlvbiB7QXN0LlBFUlQgKGFkZF9wb3MgJDIpfVxuICAgIHwgQ09ORklHIFNUUklORyB2YWx1ZV9saXN0XG5cdCAgICAge0FzdC5DT05GSUcgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICA7XG5cbmluaXRfZGVjbGFyYXRpb246XG4gICAgfCBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgIHsgKCQxLEFzdC5JTklUX01JWCAoJDIscmhzX3BvcyAyKSkgfVxuICAgIHwgYWxnX2V4cHIgT1BfUEFSIG5vbl9lbXB0eV9taXh0dXJlIENMX1BBUlxuICAgIHsgKCQxLEFzdC5JTklUX01JWCAoJDMsIHJoc19wb3MgMykpIH1cbiAgICB8IElEIExBUiBhbGdfZXhwciB7KCQzLEFzdC5JTklUX1RPSyBbJDEscmhzX3BvcyAxXSl9XG4gICAgfCBhbGdfZXhwciBJRCB7KCQxLEFzdC5JTklUX1RPSyBbJDIscmhzX3BvcyAyXSl9XG4gICAgO1xuXG52YWx1ZV9saXN0OlxuICAgIHwgU1RSSU5HIHtbJDEsIHJoc19wb3MgMV19XG4gICAgfCBTVFJJTkcgdmFsdWVfbGlzdCB7KCQxLHJoc19wb3MgMSk6OiQyfVxuICAgIDtcblxucGVydHVyYmF0aW9uX2FsYXJtOlxuICB7Tm9uZX1cbiAgfCBBTEFSTSBuYnIge1NvbWUgJDJ9XG5cbnBlcnR1cmJhdGlvbl9wb3N0OlxuICB7Tm9uZX1cbiAgfCBSRVBFQVQgYm9vbF9leHByIHtTb21lICQyfVxuICB8IFVOVElMIGJvb2xfZXhwclxuICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuXHQgeyBTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsJDIpKSl9XG5cblxucGVydHVyYmF0aW9uX2RlY2xhcmF0aW9uOlxuICAgIHwgcGVydHVyYmF0aW9uX2FsYXJtIGJvb2xfZXhwciBETyBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgKCQxLFNvbWUgJDIsJDQsJDUpIH1cbiAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBETyBlZmZlY3RfbGlzdCBwZXJ0dXJiYXRpb25fcG9zdFxuICAgIHsgKCQxLE5vbmUsJDMsJDQpIH1cbiAgICB8IFJFUEVBVCBib29sX2V4cHIgRE8gZWZmZWN0X2xpc3QgVU5USUwgYm9vbF9leHByXG4gICAgICAgLyogYmFja3dhcmQgY29tcGF0aWJpbGl0eSAqL1xuXHQgIHsgKE5vbmUsU29tZSAkMiwkNCxTb21lIChhZGRfcG9zIChBbGdfZXhwci5VTl9CT09MX09QIChPcGVyYXRvci5OT1QsJDYpKSkpfVxuICAgICB8IHBlcnR1cmJhdGlvbl9hbGFybSBib29sX2V4cHIgU0VUIGVmZmVjdF9saXN0XG5cdFx0eyAoJDEsU29tZSAkMiwkNCxOb25lKX0gLypGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSovXG4gICAgO1xuXG5zdGFuZGFsb25lX2VmZmVjdF9saXN0OiBlZmZlY3RfbGlzdCBFT0YgeyQxfVxuXG5lZmZlY3RfbGlzdDpcbiAgICB8IE9QX1BBUiBlZmZlY3RfbGlzdCBDTF9QQVIgeyQyfVxuICAgIHwgZWZmZWN0IHtbJDFdfVxuICAgIHwgZWZmZWN0IFNFTUlDT0xPTiBlZmZlY3RfbGlzdCB7JDE6OiQzfVxuICAgIDtcblxuZWZmZWN0OlxuICAgIHwgQVNTSUdOIElEIGFsZ19leHByIC8qdXBkYXRpbmcgdGhlIHJhdGUgb2YgYSBydWxlKi9cblx0XHRcdFx0XHRcdCAgICAgIHtBc3QuVVBEQVRFICgoJDIscmhzX3BvcyAyKSwkMyl9XG4gICAgfCBBU1NJR04gTEFCRUwgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgcmF0ZSBvZiBhIHJ1bGUqL1xuXHRcdFx0XHRcdFx0ICAgICAge0FzdC5VUERBVEUgKCgkMixyaHNfcG9zIDIpLCQzKX1cbiAgICB8IFRSQUNLIExBQkVMIGJvb2xlYW5cblx0ICAgIHtBc3QuQ0ZMT1dMQUJFTCAoJDMsKCQyLHJoc19wb3MgMikpfVxuICAgIHwgVFJBQ0sgcGF0dGVybiBib29sZWFuXG5cdCAgICB7QXN0LkNGTE9XTUlYICgkMywoWyQyXSxyaHNfcG9zIDIpKX1cbiAgICB8IEZMVVggbm9uZW1wdHlfcHJpbnRfZXhwciBib29sZWFuXG5cdCAgIHtpZiAkMyB0aGVuIEFzdC5ESU4gKFByaW1pdGl2ZXMuUkVMQVRJVkUsJDIpIGVsc2UgQXN0LkRJTk9GRiAkMn1cbiAgICB8IEZMVVggbm9uZW1wdHlfcHJpbnRfZXhwciBTVFJJTkcgYm9vbGVhblxuXHQgICB7aWYgJDQgJiYgJDMgPSBcImFic29sdXRlXCIgdGhlbiBBc3QuRElOIChQcmltaXRpdmVzLkFCU09MVVRFLCQyKVxuXHQgICBlbHNlIGlmICQ0ICYmICQzID0gXCJwcm9iYWJpbGl0eVwiIHRoZW5cblx0ICAgICBBc3QuRElOIChQcmltaXRpdmVzLlBST0JBQklMSVRZLCQyKVxuXHQgICBlbHNlIGlmICQ0ICYmICQzID0gXCJyZWxhdGl2ZVwiIHRoZW4gQXN0LkRJTiAoUHJpbWl0aXZlcy5SRUxBVElWRSwkMilcblx0ICAgICBlbHNlIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHQgICAgICAgKFwiSW5jb3JyZWN0IERJTiBleHByZXNzaW9uXCIscmhzX3BvcyAzKSl9XG4gICAgfCBBUFBMWSBzbWFsbF9hbGdfZXhwciBydWxlX2NvbnRlbnRcblx0XHQgeyBBc3QuQVBQTFkoXG5cdFx0ICAgJDIsXG5cdFx0ICAgKHsgQXN0LnJld3JpdGUgPSBmc3QgJDM7XG5cdFx0ICAgICAgQXN0LmJpZGlyZWN0aW9uYWwgPSBmYWxzZTtcblx0XHQgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87QXN0LmtfdW49Tm9uZTtcblx0XHQgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuXHRcdCB9XG4gICAgfCBJTlRSTyBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgICAgICB7IEFzdC5BUFBMWSgkMixcbiAgICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgIEFzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgICBBc3QucmhzPSQzOyBBc3QuYWRkX3Rva2VuID0gW107fTtcblx0XHQgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICAgQXN0Lmtfb3A9Tm9uZTsgQXN0Lmtfb3BfdW49Tm9uZX0scmhzX3BvcyAzKSlcbiAgICAgICAgfVxuICAgIHwgSU5UUk8gZXJyb3JcbiAgICAgICB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiTWFsZm9ybWVkIHBlcnR1cmJhdGlvbiBpbnN0cnVjdGlvbiwgSSB3YXMgZXhwZWN0aW5nICckQUREIGFsZ19leHByZXNzaW9uIGthcHBhX2V4cHJlc3Npb24nXCIpKX1cbiAgICB8IERFTEVURSBhbGdfZXhwciBub25fZW1wdHlfbWl4dHVyZVxuICAgICAgIHsgQXN0LkFQUExZKCQyLFxuICAgICAgICAgICAgICAgKHtBc3QucmV3cml0ZSA9XG5cdFx0IEFzdC5BcnJvdyB7QXN0Lmxocz0kMzsgQXN0LnJtX3Rva2VuID0gW107XG4gICAgICAgICAgICAgICAgIEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSBbXTt9O1xuXHRcdCBBc3QuYmlkaXJlY3Rpb25hbD1mYWxzZTtcbiAgICAgICAgICAgICAgICAgQXN0LmtfZGVmPUFsZ19leHByLmNvbnN0IE5ici56ZXJvOyBBc3Qua191bj1Ob25lO1xuICAgICAgICAgICAgICAgICBBc3Qua19vcD1Ob25lOyBBc3Qua19vcF91bj1Ob25lfSxyaHNfcG9zIDMpKVxuICAgICAgIH1cblxuICAgIHwgREVMRVRFIGVycm9yXG4gICAgICAge3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAoYWRkX3BvcyBcIk1hbGZvcm1lZCBwZXJ0dXJiYXRpb24gaW5zdHJ1Y3Rpb24sIEkgd2FzIGV4cGVjdGluZyAnJERFTCBhbGdfZXhwcmVzc2lvbiBrYXBwYV9leHByZXNzaW9uJ1wiKSl9XG4gICAgfCBJRCBMQVIgYWxnX2V4cHIgLyp1cGRhdGluZyB0aGUgdmFsdWUgb2YgYSB0b2tlbiovXG4gICAgICAge1xuICAgICAgIGxldCB0ayA9ICgkMSxyaHNfcG9zIDEpIGluXG4gICAgICAgIEFzdC5BUFBMWShBbGdfZXhwci5jb25zdCBOYnIub25lLFxuICAgICAgICAgICBhZGRfcG9zXG4gICAgICAgICAgICAgICAoe0FzdC5yZXdyaXRlID1cblx0XHQgQXN0LkVkaXRcblx0XHQge0FzdC5taXg9W107XG5cdFx0ICBBc3QuZGVsdGFfdG9rZW4gPVxuXHRcdCAgWyhBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTlVTLCQzLChBbGdfZXhwci5UT0tFTl9JRCAkMSxyaHNfcG9zIDEpKSxyaHNfcG9zIDEpLHRrXTtcbiAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgIEFzdC5iaWRpcmVjdGlvbmFsPWZhbHNlO1xuICAgICAgICAgICAgICAgICBBc3Qua19kZWY9QWxnX2V4cHIuY29uc3QgTmJyLnplcm87IEFzdC5rX3VuPU5vbmU7XG4gICAgICAgICAgICAgICAgIEFzdC5rX29wPU5vbmU7IEFzdC5rX29wX3VuPU5vbmV9KSlcbiAgICAgICB9XG4gICAgfCBTTkFQU0hPVCBwcmludF9leHByIHtBc3QuU05BUFNIT1QgKGZhbHNlLCQyKX1cbiAgICB8IFNUT1AgcHJpbnRfZXhwciB7QXN0LlNUT1AgJDJ9XG4gICAgfCBQUklOVEYgcHJpbnRfZXhwciBTTUFMTEVSIHByaW50X2V4cHIgR1JFQVRFUiB7IEFzdC5QUklOVCAoJDIsJDQpIH1cbiAgICB8IFBMT1RFTlRSWSB7IEFzdC5QTE9URU5UUlkgfVxuICAgIHwgU1BFQ0lFU19PRiBub25lbXB0eV9wcmludF9leHByIG5vbl9lbXB0eV9taXh0dXJlIGJvb2xlYW4geyBBc3QuU1BFQ0lFU19PRiAoJDQsJDIsKCQzLCByaHNfcG9zIDMpKX1cbiAgICA7XG5cbm5vbmVtcHR5X3ByaW50X2V4cHI6XG4gICAgfCBTVFJJTkcge1tQcmltaXRpdmVzLlN0cl9wZXhwciAoYWRkX3BvcyAkMSldfVxuICAgIHwgbWlkX2FsZ19leHByIHtbUHJpbWl0aXZlcy5BbGdfcGV4cHIgJDFdfVxuICAgIHwgU1RSSU5HIERPVCBub25lbXB0eV9wcmludF9leHByIHtQcmltaXRpdmVzLlN0cl9wZXhwciAoJDEsIHJoc19wb3MgMSk6OiQzfVxuICAgIHwgbWlkX2FsZ19leHByIERPVCBub25lbXB0eV9wcmludF9leHByIHtQcmltaXRpdmVzLkFsZ19wZXhwciAkMTo6JDN9XG4gICAgO1xucHJpbnRfZXhwcjpcbiAgICAvKmVtcHR5Ki8ge1tdfVxuICAgIHwgbm9uZW1wdHlfcHJpbnRfZXhwciB7JDF9XG5cbmJvb2xlYW46XG4gICAgfCBUUlVFIHt0cnVlfVxuICAgIHwgRkFMU0Uge2ZhbHNlfVxuICAgIDtcblxudmFyaWFibGVfZGVjbGFyYXRpb246XG4gICAgfCBMQUJFTCBub25fZW1wdHlfbWl4dHVyZVxuXHQgICB7ICgoJDEscmhzX3BvcyAxKSwoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgJDIscmhzX3BvcyAyKSl9XG4gICAgfCBMQUJFTCBhbGdfZXhwciB7KCgkMSxyaHNfcG9zIDEpLCQyKX1cbiAgICB8IElEIGFsZ19leHByIHsoKCQxLHJoc19wb3MgMSksJDIpfVxuICAgIHwgTEFCRUwgZXJyb3Jcblx0ICAgIHtyYWlzZVxuXHQgICAgICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAoYWRkX3BvcyAoXCJJbGxlZ2FsIGRlZmluaXRpb24gb2YgdmFyaWFibGUgJ1wiXiQxXlwiJ1wiKSkpXG5cdCAgICB9XG4gICAgO1xuXG5zbWFsbF9ib29sX2V4cHI6XG4gICAgfCBPUF9QQVIgYm9vbF9leHByIENMX1BBUiB7JDJ9XG4gICAgfCBUUlVFIHthZGRfcG9zIEFsZ19leHByLlRSVUV9XG4gICAgfCBGQUxTRSB7YWRkX3BvcyBBbGdfZXhwci5GQUxTRX1cblxuYm9vbF9leHByOlxuICAgIHwgc21hbGxfYm9vbF9leHByIHsgJDEgfVxuICAgIHwgTk9UIHNtYWxsX2Jvb2xfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQk9PTF9PUChPcGVyYXRvci5OT1QsJDIpKX1cbiAgICB8IGJvb2xfZXhwciBBTkQgYm9vbF9leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQk9PTF9PUChPcGVyYXRvci5BTkQsJDEsJDMpKX1cbiAgICB8IGJvb2xfZXhwciBPUiBib29sX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9CT09MX09QKE9wZXJhdG9yLk9SLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBHUkVBVEVSIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5HUkVBVEVSLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBTTUFMTEVSIGFsZ19leHByXG4gICAgICB7YWRkX3BvcyAoQWxnX2V4cHIuQ09NUEFSRV9PUChPcGVyYXRvci5TTUFMTEVSLCQxLCQzKSl9XG4gICAgfCBhbGdfZXhwciBFUVVBTCBhbGdfZXhwclxuICAgICAge2FkZF9wb3MgKEFsZ19leHByLkNPTVBBUkVfT1AoT3BlcmF0b3IuRVFVQUwsJDEsJDMpKX1cbiAgICB8IGFsZ19leHByIERJRkYgYWxnX2V4cHJcbiAgICAgIHthZGRfcG9zIChBbGdfZXhwci5DT01QQVJFX09QKE9wZXJhdG9yLkRJRkYsJDEsJDMpKX1cbiAgICA7XG5cbnN0YW5kYWxvbmVfYm9vbF9leHByOiBib29sX2V4cHIgRU9GIHskMX1cblxudG9rZW5fZXhwcjpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IFBJUEUgc3VtX3Rva2VuIHskMn1cbiAgICB8IFBJUEUgZXJyb3Jcblx0e3JhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgKGFkZF9wb3MgIFwiTWFsZm9ybWVkIHRva2VuIGV4cHJlc3Npb24sIEkgd2FzIGV4cGVjdGluZyBhXzAgdF8wICsgLi4uICsgYV9uIHRfbiwgd2hlcmUgdF9pIGFyZSB0b2tlbnMgYW5kIGFfaSBhbnkgYWxnZWJyYWljIGZvcm11bGFcIikpfVxuICAgIDtcblxuc3VtX3Rva2VuOlxuICAgIHwgT1BfUEFSIHN1bV90b2tlbiBDTF9QQVIgeyQyfVxuICAgIHwgYWxnX2V4cHIgSUQge1soJDEsKCQyLHJoc19wb3MgMikpXX1cbiAgICB8IGFsZ19leHByIElEIFBMVVMgc3VtX3Rva2VuIHtsZXQgbCA9ICQ0IGluICgkMSwoJDIscmhzX3BvcyAyKSk6Omx9XG4gICAgfCBhbGdfZXhwciBUWVBFIElEIHtbKCQxLCgkMyxyaHNfcG9zIDMpKV19XG4gICAgfCBhbGdfZXhwciBUWVBFIElEIFBMVVMgc3VtX3Rva2VuIHtsZXQgbCA9ICQ1IGluICgkMSwoJDMscmhzX3BvcyAzKSk6Omx9XG5cbnJ1bGVfY29udGVudDpcbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHIgYXJyb3cgcGF0dGVybiB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bJDFdOyBBc3Qucm1fdG9rZW4gPSAkMjsgQXN0LnJocz1bJDRdOyBBc3QuYWRkX3Rva2VuID0gJDV9LFxuICAgICAkM31cbiAgfCBwYXR0ZXJuIHRva2VuX2V4cHIgYXJyb3cgdG9rZW5fZXhwclxuICAgIHtBc3QuQXJyb3cge0FzdC5saHM9WyQxXTsgQXN0LnJtX3Rva2VuID0gJDI7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSAkNH0sXG4gICAgICQzfVxuICB8IHRva2VuX2V4cHIgYXJyb3cgcGF0dGVybiB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gJDE7IEFzdC5yaHM9WyQzXTsgQXN0LmFkZF90b2tlbiA9ICQ0fSxcbiAgICAgJDJ9XG4gIHwgdG9rZW5fZXhwciBhcnJvdyB0b2tlbl9leHByXG4gICAge0FzdC5BcnJvdyB7QXN0Lmxocz1bXTsgQXN0LnJtX3Rva2VuID0gJDE7IEFzdC5yaHM9W107IEFzdC5hZGRfdG9rZW4gPSAkM30sXG4gICAgICQyfVxuICB8IHBhdHRlcm4gdG9rZW5fZXhwclxuICAgIHsgQXN0LkVkaXQge0FzdC5taXggPSBbJDFdOyBBc3QuZGVsdGFfdG9rZW4gPSAkMn0sZmFsc2UgfTtcbiAgfCBQSVBFIHN1bV90b2tlblxuICAgIHsgQXN0LkVkaXQge0FzdC5taXggPSBbXTsgQXN0LmRlbHRhX3Rva2VuID0gJDJ9LGZhbHNlIH07XG5cbnJ1bGVfZXhwcmVzc2lvbjpcbiAgfCBydWxlX2NvbnRlbnQgYmlyYXRlXG4gICAgeyBsZXQgKGtfZGVmLGtfdW4sa19vcCxrX29wX3VuKSA9ICQyIGluXG4gICAgICBsZXQgcmV3cml0ZSxiaWRpcmVjdGlvbmFsID0gJDEgaW5cbiAgICAgIGFkZF9wb3Mge1xuICAgICAgICBBc3QucmV3cml0ZTtBc3QuYmlkaXJlY3Rpb25hbDtcbiAgICAgICAgQXN0LmtfZGVmOyBBc3Qua191bjsgQXN0Lmtfb3A7IEFzdC5rX29wX3VuO1xuICAgICAgfSB9O1xuXG5hcnJvdzpcbiAgICB8IEtBUFBBX1JBUiB7ZmFsc2V9XG4gICAgfCBLQVBQQV9MUkFSIHt0cnVlfVxuICAgIDtcblxubmJyOlxuICAgIHwgSU5GSU5JVFkgeyBOYnIuRiBpbmZpbml0eSB9XG4gICAgfCBGTE9BVCB7IE5ici5GICQxIH1cbiAgICB8IElOVCB7IE5ici5JICQxIH1cblxuY29uc3RhbnQ6XG4gICAgfCBuYnIge2FkZF9wb3MgKEFsZ19leHByLkNPTlNUICQxKX1cbiAgICB8IEVNQVgge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuRU1BWF9WQVIpKX1cbiAgICB8IFRNQVgge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuVE1BWF9WQVIpKX1cbiAgICB8IENQVVRJTUUge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuQ1BVVElNRSkpfVxuICAgIDtcblxudmFyaWFibGU6XG4gICAgfCBQSVBFIElEIFBJUEUge2FkZF9wb3MgKEFsZ19leHByLlRPS0VOX0lEICgkMikpfVxuICAgIHwgUElQRSBub25fZW1wdHlfbWl4dHVyZSBQSVBFIHsgYWRkX3BvcyAoQWxnX2V4cHIuS0FQUEFfSU5TVEFOQ0UgJDIpIH1cbiAgICB8IElEIHthZGRfcG9zIChBbGdfZXhwci5BTEdfVkFSICgkMSkpfVxuICAgIHwgTEFCRUwge2FkZF9wb3MgKEFsZ19leHByLkFMR19WQVIgKCQxKSl9XG4gICAgfCBUSU1FIHthZGRfcG9zIChBbGdfZXhwci5TVEFURV9BTEdfT1AgKE9wZXJhdG9yLlRJTUVfVkFSKSl9XG4gICAgfCBFVkVOVCB7YWRkX3BvcyAoQWxnX2V4cHIuU1RBVEVfQUxHX09QIChPcGVyYXRvci5FVkVOVF9WQVIpKX1cbiAgICB8IE5VTExfRVZFTlQge2FkZF9wb3MgKEFsZ19leHByLlNUQVRFX0FMR19PUCAoT3BlcmF0b3IuTlVMTF9FVkVOVF9WQVIpKX1cbiAgICA7XG5cbnNtYWxsX2FsZ19leHByOlxuICAgIHwgT1BfUEFSIGFsZ19leHByIENMX1BBUiB7JDJ9XG4gICAgfCBjb25zdGFudCB7JDF9XG4gICAgfCB2YXJpYWJsZSB7JDF9XG4gICAgfCBNQVggc21hbGxfYWxnX2V4cHIgc21hbGxfYWxnX2V4cHJcblx0ICB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NQVgsJDIsJDMpKX1cbiAgICB8IE1JTiBzbWFsbF9hbGdfZXhwciBzbWFsbF9hbGdfZXhwclxuXHQgIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLk1JTiwkMiwkMykpfVxuICAgIHwgRVhQT05FTlQgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuRVhQLCQyKSl9XG4gICAgfCBTSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5TSU5VUywkMikpfVxuICAgIHwgQ09TSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5DT1NJTlVTLCQyKSl9XG4gICAgfCBUQU4gbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuVEFOLCQyKSl9XG4gICAgfCBBQlMgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5VTl9BTEdfT1AoT3BlcmF0b3IuSU5ULCQyKSl9XG4gICAgfCBTUVJUIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuVU5fQUxHX09QKE9wZXJhdG9yLlNRUlQsJDIpKX1cbiAgICB8IExPRyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5MT0csJDIpKX1cbiAgICA7XG5cbm1pZF9hbGdfZXhwcjpcbiAgICB8IE1JTlVTIG1pZF9hbGdfZXhwciB7IGFkZF9wb3MgKEFsZ19leHByLlVOX0FMR19PUChPcGVyYXRvci5VTUlOVVMsJDIpKSB9XG4gICAgfCBzbWFsbF9hbGdfZXhwciB7ICQxIH1cbiAgICB8IG1pZF9hbGdfZXhwciBNVUxUIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5NVUxULCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgUExVUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuU1VNLCQxLCQzKSl9XG4gICAgfCBtaWRfYWxnX2V4cHIgRElWIG1pZF9hbGdfZXhwciB7YWRkX3BvcyAoQWxnX2V4cHIuQklOX0FMR19PUChPcGVyYXRvci5ESVYsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBNSU5VUyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTUlOVVMsJDEsJDMpKX1cbiAgICB8IG1pZF9hbGdfZXhwciBQT1cgbWlkX2FsZ19leHByIHthZGRfcG9zIChBbGdfZXhwci5CSU5fQUxHX09QKE9wZXJhdG9yLlBPVywkMSwkMykpfVxuICAgIHwgbWlkX2FsZ19leHByIE1PRFVMTyBtaWRfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLkJJTl9BTEdfT1AoT3BlcmF0b3IuTU9EVUxPLCQxLCQzKSl9XG5cbmFsZ19leHByOlxuICAgIHwgbWlkX2FsZ19leHByIHskMX1cbiAgICB8IGJvb2xfZXhwciBUSEVOIGFsZ19leHByIEVMU0Ugc21hbGxfYWxnX2V4cHIge2FkZF9wb3MgKEFsZ19leHByLklGKCQxLCQzLCQ1KSl9XG5cbmJpcmF0ZTpcbiAgICB8IEFUIHJhdGUge2xldCAoazIsazEpID0gJDIgaW4gKGsyLGsxLE5vbmUsTm9uZSl9XG4gICAgfCBBVCByYXRlIENPTU1BIHJhdGUge2xldCAoazIsazEpID0gJDIgaW5cblx0XHRcdCAgbGV0IChrYmFjayxrYmFjazEpID0gJDQgaW5cblx0XHRcdCAgKGsyLGsxLFNvbWUga2JhY2ssa2JhY2sxKX1cbiAgICB8IGVycm9yIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJydWxlIHJhdGUgZXhwZWN0ZWRcIikpfVxuICAgIDtcblxucmF0ZTpcbiAgICB8IGFsZ19leHByIE9QX0NVUiBhbGdfd2l0aF9yYWRpdXMgQ0xfQ1VSIHsoJDEsU29tZSAkMyl9XG4gICAgfCBhbGdfZXhwciBPUF9QQVIgYWxnX3dpdGhfcmFkaXVzIENMX1BBUiB7ICgkMSxTb21lICQzKSB9XG4gICAgfCBhbGdfZXhwciB7KCQxLE5vbmUpfVxuICAgIHwgT1BfQ1VSIGFsZ193aXRoX3JhZGl1cyBDTF9DVVJcbiAgICAgIHsoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxTb21lICQyKX1cbiAgICB8IGFsZ19leHByIE9QX0NVUiBDTF9DVVJcbiAgICAgIHsoJDEsU29tZSAoTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLkNPTlNUIE5ici56ZXJvKSxOb25lKSl9XG4gICAgfCB7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChhZGRfcG9zIFwibWlzc2luZyBydWxlIHJhdGVcIikpfVxuICAgIDtcblxuYWxnX3dpdGhfcmFkaXVzOlxuICAgIHwgYWxnX2V4cHIgeygkMSxOb25lKX1cbiAgICB8IGFsZ19leHByIFRZUEUgYWxnX2V4cHIgeygkMSwgU29tZSAkMyl9XG4gICAgO1xuXG5wYXR0ZXJuOlxuICAgIHwgT1BfUEFSIHBhdHRlcm4gQ0xfUEFSIHskMn1cbiAgICB8IGFnZW50X2V4cHJlc3Npb24gQ09NTUEgcGF0dGVybiB7JDEgOjogJDN9XG4gICAgfCBhZ2VudF9leHByZXNzaW9uIHtbJDFdfVxuO1xuXG5ub25fZW1wdHlfbWl4dHVyZTpcbiAgICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVJcbiAgICB7IFtbQXN0LlByZXNlbnQgKCgkMSxyaHNfcG9zIDEpLCAkMywgQXN0Lk5vTW9kKV1dIH1cbiAgICB8IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVIgQ09NTUEgcGF0dGVyblxuICAgIHsgW0FzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDMsIEFzdC5Ob01vZCkgOjogJDZdfVxuICAgIDtcblxubW9kX2FnZW50OlxuXHR8IHsgQXN0Lk5vTW9kIH1cblx0fCBQTFVTIHsgQXN0LkNyZWF0ZSB9XG5cdHwgTUlOVVMgeyBBc3QuRXJhc2UgfTtcblxuYWdlbnRfZXhwcmVzc2lvbl9zaWc6XG4gIHwgSUQgT1BfUEFSIGludGVyZmFjZV9leHByZXNzaW9uX3NpZyBDTF9QQVIge0FzdC5QcmVzZW50ICgoJDEscmhzX3BvcyAxKSwgJDMsIEFzdC5Ob01vZCl9XG4gIHwgSUQgZXJyb3IgeyByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyAoXCJNYWxmb3JtZWQgYWdlbnQgJ1wiXiQxXlwiJ1wiKSkpfVxuXG5hZ2VudF9leHByZXNzaW9uOlxuICAgIHwgbW9kX2FnZW50IElEIE9QX1BBUiBpbnRlcmZhY2VfZXhwcmVzc2lvbiBDTF9QQVJcblx0IHtBc3QuUHJlc2VudCAoKCQyLHJoc19wb3MgMiksICQ0LCAkMSl9XG4gICAgfCBtb2RfYWdlbnQgSUQgZXJyb3Jcblx0IHsgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0ICAgIChhZGRfcG9zIChcIk1hbGZvcm1lZCBhZ2VudCAnXCJeJDJeXCInXCIpKSl9XG4gICAgO1xuXG5pbnRlcmZhY2VfZXhwcmVzc2lvbl9zaWc6XG4gICAgLyplbXB0eSovIHtbXX1cbiAgICB8IHBvcnRfZXhwcmVzc2lvbl9zaWcgQ09NTUEgaW50ZXJmYWNlX2V4cHJlc3Npb25fc2lnIHskMTo6JDN9XG4gICAgfCBwb3J0X2V4cHJlc3Npb25fc2lnIHtbJDFdfVxuICAgIDtcblxuaW50ZXJmYWNlX2V4cHJlc3Npb246XG4gIC8qZW1wdHkqLyB7W119XG4gICAgfCBwb3J0X2V4cHJlc3Npb24gQ09NTUEgaW50ZXJmYWNlX2V4cHJlc3Npb24geyQxOjokM31cbiAgICB8IHBvcnRfZXhwcmVzc2lvbiB7WyQxXX1cbiAgICA7XG5cbmNvdW50ZXJfdGVzdDpcbiAgIHwgVFlQRSBJTlQgeyBTb21lIChBc3QuQ0VRICQyLHJoc19wb3MgMil9XG4gICB8IFRZUEUgR1JFQVRFUiBJTlQgeyBTb21lIChBc3QuQ0dURSAkMyxyaHNfcG9zIDMpfVxuICAgfCBUWVBFIFNNQUxMRVIgSU5UIHsgU29tZSAoQXN0LkNMVEUgJDMscmhzX3BvcyAzKX1cbiAgIHwgVFlQRSBJRCB7IFNvbWUgKEFzdC5DVkFSICQyLHJoc19wb3MgMil9XG5cbnBvcnRfZXhwcmVzc2lvbjpcbiAgICB8IElEIGludGVybmFsX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkMzsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9JDM7XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNDsgfSB9XG4gICAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBESVYgS0FQUEFfTVJLIGxpbmtfc3RhdGVfbW9kXG5cdCB7IEFzdC5Qb3J0XG5cdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG5cdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ1OyB9IH1cbiAgICB8IElEIGludGVybmFsX3N0YXRlIERJViBLQVBQQV9NUksgbGlua19zdGF0ZSBsaW5rX3N0YXRlX21vZFxuXHQgeyBBc3QuUG9ydFxuXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPSQ1O1xuXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNjsgfSB9XG4gICAgfCBJRCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9IE5vbmU7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gKCQ0LHJoc19wb3MgNCl9IH1cbiAgICB8IElEIFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gTm9uZTtcblx0ICAgQXN0LmNvdW50ZXJfZGVsdGEgPSAoLSQ1LHJoc19wb3MgNSl9IH1cbiAgICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgkNSxyaHNfcG9zIDUpfSB9XG4gICB8IElEIGNvdW50ZXJfdGVzdCBQTFVTIEVRVUFMIE1JTlVTIElOVFxuICAgICAgICAgeyBBc3QuQ291bnRlclxuXHQgICB7IEFzdC5jb3VudGVyX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcblx0ICAgQXN0LmNvdW50ZXJfdGVzdCA9ICQyO1xuXHQgICBBc3QuY291bnRlcl9kZWx0YSA9ICgtICQ2LHJoc19wb3MgNil9IH1cbiAgIHwgSUQgY291bnRlcl90ZXN0XG4gICAgICAgICB7IEFzdC5Db3VudGVyXG5cdCAgIHsgQXN0LmNvdW50ZXJfbmFtZSA9ICgkMSxyaHNfcG9zIDEpO1xuXHQgICBBc3QuY291bnRlcl90ZXN0ID0gJDI7XG5cdCAgIEFzdC5jb3VudGVyX2RlbHRhID0gTG9jLmFubm90X3dpdGhfZHVtbXkgMH0gfVxuICAgIDtcblxucG9ydF9leHByZXNzaW9uX3NpZzpcbiAgIHwgSUQgaW50ZXJuYWxfc3RhdGUgbGlua19zdGF0ZV9tb2RcbiAgICBcdCB7IEFzdC5Qb3J0XG4gICAgXHQgICB7QXN0LnBvcnRfbmFtZT0oJDEscmhzX3BvcyAxKTsgQXN0LnBvcnRfaW50PSQyOyBBc3QucG9ydF9saW5rPVtdO1xuICAgIFx0ICAgIEFzdC5wb3J0X2ludF9tb2QgPSBOb25lOyBBc3QucG9ydF9saW5rX21vZCA9ICQzOyB9IH1cbiAgfCBJRCBpbnRlcm5hbF9zdGF0ZSBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kMztcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gTm9uZTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNDsgfSB9XG4gIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlX21vZFxuICAgIFx0IHsgQXN0LlBvcnRcbiAgICBcdCAgIHtBc3QucG9ydF9uYW1lPSgkMSxyaHNfcG9zIDEpOyBBc3QucG9ydF9pbnQ9JDI7IEFzdC5wb3J0X2xpbms9W107XG4gICAgXHQgICAgQXN0LnBvcnRfaW50X21vZCA9IFNvbWUoJDQscmhzX3BvcyA0KTsgQXN0LnBvcnRfbGlua19tb2QgPSAkNTsgfSB9XG4gIHwgSUQgaW50ZXJuYWxfc3RhdGUgRElWIEtBUFBBX01SSyBsaW5rX3N0YXRlIGxpbmtfc3RhdGVfbW9kXG4gICAgXHQgeyBBc3QuUG9ydFxuICAgIFx0ICAge0FzdC5wb3J0X25hbWU9KCQxLHJoc19wb3MgMSk7IEFzdC5wb3J0X2ludD0kMjsgQXN0LnBvcnRfbGluaz0kNTtcbiAgICBcdCAgICBBc3QucG9ydF9pbnRfbW9kID0gU29tZSgkNCxyaHNfcG9zIDQpOyBBc3QucG9ydF9saW5rX21vZCA9ICQ2OyB9IH1cbiAgfCBJRCBQTFVTIEVRVUFMIElOVFxuICAgICAgICAgICAgIHsgQXN0LkNvdW50ZXJcbiAgICBcdCAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IE5vbmU7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19tYXggPSBTb21lIChTb21lICQ0LCByaHNfcG9zIDQpO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9ICQ0O1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgUExVUyBFUVVBTCBNSU5VUyBJTlRcbiAgICAgICAge0FzdC5Db3VudGVyXG4gIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWluID0gTm9uZTtcbiAgICBBc3QuY291bnRlcl9zaWdfbWF4ID0gU29tZSAoU29tZSAoLSQ1KSwgcmhzX3BvcyA1KTtcbiAgICBBc3QuY291bnRlcl9zaWdfZGVmYXVsdCA9IC0kNTtcbiAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgSU5UXG4gICAgICAgeyBsZXQgbWluID1cbiAgICAgICAgICAgIG1hdGNoICQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIHwgU29tZSAoKENHVEUgX3xDTFRFIF98Q1ZBUiBfKSwgXykgLT4gcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgIGluIEFzdC5Db3VudGVyXG4gICAgICAgICB7IEFzdC5jb3VudGVyX3NpZ19uYW1lID0gKCQxLHJoc19wb3MgMSk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19taW4gPSBTb21lIChTb21lIG1pbiwgcmhzX3BvcyAyKTtcbiAgICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgJDUsIHJoc19wb3MgNSk7XG4gICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gbWluO1xuICAgICAgICAgICBBc3QuY291bnRlcl9zaWdfdmlzaWJsZSA9IEFzdC5Gcm9tX29yaWdpbmFsX2FzdH19XG4gIHwgSUQgY291bnRlcl90ZXN0IFBMVVMgRVFVQUwgTUlOVVMgSU5UXG4gICAgICB7IGxldCBtaW4gPVxuICAgICAgICAgICBtYXRjaCAkMiB3aXRoXG4gICAgICAgICAgICAgICAgICAgICB8IFNvbWUgKEFzdC5DRVEgaSxfKSAtPiBpXG4gICAgICAgICAgICAgICAgICAgICB8IE5vbmUgfCBTb21lICgoQ0dURSBffENMVEUgX3xDVkFSIF8pLCBfKSAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChhZGRfcG9zIFwiSXNzdWUgY291bnRlcnMgaW4gc2lnbmF0dXJlXCIpKVxuICAgICAgIGluXG4gICAgICAgIEFzdC5Db3VudGVyXG4gICAgICAgIHsgQXN0LmNvdW50ZXJfc2lnX25hbWUgPSAoJDEscmhzX3BvcyAxKTtcbiAgICAgICAgICBBc3QuY291bnRlcl9zaWdfbWluID0gU29tZSAoU29tZSBtaW4sIHJoc19wb3MgMik7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX21heCA9IFNvbWUgKFNvbWUgKC0kNiksIHJoc19wb3MgNik7XG4gICAgICAgICAgQXN0LmNvdW50ZXJfc2lnX2RlZmF1bHQgPSBtaW4gO1xuICAgICAgICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cbiAgfCBJRCBjb3VudGVyX3Rlc3RcbiAgICAgIHsgbGV0IG1pbiA9XG4gICAgICAgICAgIG1hdGNoICQyIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgIHwgU29tZSAoQXN0LkNFUSBpLF8pIC0+IGlcbiAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSB8IFNvbWUgKChDR1RFIF98Q0xURSBffENWQVIgXyksIF8pIC0+IHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuICAgICAgICAgICAgICAgICAgICAgKGFkZF9wb3MgXCJJc3N1ZSBjb3VudGVycyBpbiBzaWduYXR1cmVcIikpXG4gICAgICAgaW5cbiAgICAgICBBc3QuQ291bnRlclxuICB7IEFzdC5jb3VudGVyX3NpZ19uYW1lID0gKCQxLHJoc19wb3MgMSk7XG4gICAgQXN0LmNvdW50ZXJfc2lnX21pbiA9IFNvbWUgKFNvbWUgbWluLCByaHNfcG9zIDIpO1xuICAgIEFzdC5jb3VudGVyX3NpZ19tYXggPSBOb25lO1xuICAgIEFzdC5jb3VudGVyX3NpZ19kZWZhdWx0ID0gbWluO1xuICAgIEFzdC5jb3VudGVyX3NpZ192aXNpYmxlID0gQXN0LkZyb21fb3JpZ2luYWxfYXN0fX1cblxuXG5pbnRlcm5hbF9zdGF0ZTpcbiAgLyplbXB0eSovIHtbXX1cbiAgICB8IEtBUFBBX01SSyBpbnRlcm5hbF9zdGF0ZSB7KFNvbWUgJDEscmhzX3BvcyAxKTo6JDJ9XG4gICAgfCBlcnJvclxuICAgICAgIHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3JcbiAgICAgICAoYWRkX3BvcyBcIklzc3VlIGFmdGVyIGludGVybmFsIHN0YXRlXCIpKX1cbiAgICA7XG5cbmxpbmtfc3RhdGVfbW9kOlxuXHR8IHtOb25lfVxuXHR8IERJViBLQVBQQV9MTksgRE9UIHtTb21lIE5vbmV9XG5cdHwgRElWIEtBUFBBX0xOSyBJTlQge1NvbWUgKFNvbWUgKCQzLHJoc19wb3MgMykpfVxuXHR8IERJViBlcnJvclxuXHR7cmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdCAgKGFkZF9wb3MgXCJJbmNvcnJlY3QgbGluayBtb2RpZmljYXRpb25cIikpfTtcblxuXG5hX2xpbmtfc3RhdGU6XG4gICAgfCBLQVBQQV9MTksgRE9UIHsoTEthcHBhLkxOS19GUkVFLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgSU5UIHsoTEthcHBhLkxOS19WQUxVRSAoJDIsKCkpLHJoc19wb3MgMil9XG4gICAgfCBLQVBQQV9MTksgS0FQUEFfU0VNSSB7KExLYXBwYS5MTktfU09NRSxyaHNfcG9zIDIpfVxuICAgIHwgS0FQUEFfTE5LIElEIERPVCBJRCB7YWRkX3BvcyAoTEthcHBhLkxOS19UWVBFXG5cdFx0XHRcdCAgICAgICgoJDIscmhzX3BvcyAyKSwoJDQscmhzX3BvcyA0KSkpfVxuICAgIHwgS0FQUEFfV0xEIHthZGRfcG9zIExLYXBwYS5MTktfQU5ZfVxuICAgIHwgS0FQUEFfTE5LIGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgIChhZGRfcG9zIFwiSW52YWxpZCBsaW5rIHN0YXRlXCIpKX1cbjtcblxubGlua19zdGF0ZTpcblx0fCBhX2xpbmtfc3RhdGUgbGlua19zdGF0ZSB7JDE6OiQyfVxuXHR8IGFfbGlua19zdGF0ZSB7WyQxXX07XG5cbmludGVyYWN0aXZlX2NvbW1hbmQ6XG5cdHwgUlVOIE5FV0xJTkUge0FzdC5SVU4gKExvYy5hbm5vdF93aXRoX2R1bW15IEFsZ19leHByLkZBTFNFKX1cblx0fCBSVU4gYm9vbF9leHByIE5FV0xJTkUge0FzdC5SVU4gJDJ9XG5cdHwgZWZmZWN0X2xpc3QgTkVXTElORSB7QXN0Lk1PRElGWSAkMX1cblx0fCBFT0Yge0FzdC5RVUlUfVxuXHR8IGVycm9yXG5cdHtyYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKGFkZF9wb3MgXCJVbnJlY29nbml6ZWQgY29tbWFuZFwiKSl9XG4lJVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxue1xuICBvcGVuIExleGluZ1xuICBvcGVuIEthcHBhUGFyc2VyXG5cbiAgbGV0IHJlYWNoX2VvZiBsZXhidWYgPVxuICAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZVxuXG4gbGV0IHJlc2V0X2VvZiBsZXhidWYgPVxuICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSBmYWxzZVxuXG4gbGV0IHBvc2l0aW9uIGxleGJ1ZiA9XG4gICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgIChwb3MucG9zX2ZuYW1lLCBwb3MucG9zX2xudW0sIHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJzZXRcIiBTRVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwidW50aWxcIiBVTlRJTCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5sZXQgc3BhY2VfY2hhcnMgPSBbJyAnOydcXG4nOydcXHQnXVxufVxuXG5sZXQgZW9sID0gJ1xccic/ICdcXG4nXG5sZXQgYmxhbmsgPSBbJyAnICdcXHQnXVxubGV0IGludGVnZXIgPSAoWycwJy0nOSddKylcbmxldCByZWFsID1cbiAgICAgKCgoKFsnMCctJzknXSsgKCcuJyBbJzAnLSc5J10qKT8pIHwgKCcuJyBbJzAnLSc5J10rKSlcblx0WydlJyAnRSddIFsnKycgJy0nXT8gWycwJy0nOSddKylcbiAgfCAoKFsnMCctJzknXSsgJy4nIFsnMCctJzknXSogKSB8IChbJzAnLSc5J10qICcuJyBbJzAnLSc5J10rKSkpXG5sZXQgaWQgPSAoJ18nKiBbJ2EnLSd6JyAnQSctJ1onXSBbJ2EnLSd6JyAnQSctJ1onICcwJy0nOScgJ18nICctJyAnKyddKiApXG5sZXQgaW50ZXJuYWxfc3RhdGUgPSAnficgKFsnMCctJzknICdhJy0neicgJ0EnLSdaJyAnXycgJy0nICcrJ10rKVxubGV0IHBlcnQgPSAnJCcgaWRcblxucnVsZSB0b2tlbiA9IHBhcnNlXG5cdCB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgdG9rZW4gbGV4YnVmfVxuXHQgfCBcIiYmXCIge0FORH1cblx0IHwgXCJ8fFwiIHtPUn1cblx0IHwgXCI8LT5cIiB7S0FQUEFfTFJBUn1cblx0IHwgXCItPlwiIHtLQVBQQV9SQVJ9XG5cdCB8IFwiPC1cIiB7TEFSfVxuXHQgfCBcIjw+XCIge0RJRkZ9XG5cdCB8IHBlcnQgYXMgcyB7bWF0Y2ggcyB3aXRoXG5cdFx0ICAgICAgfCBcIiRERUxcIiAtPiBERUxFVEVcblx0XHQgICAgICB8IFwiJEFERFwiIC0+IElOVFJPXG5cdFx0ICAgICAgfCBcIiRBUFBMWVwiIC0+IEFQUExZXG5cdFx0ICAgICAgfCBcIiRTTkFQU0hPVFwiIC0+IFNOQVBTSE9UXG5cdFx0ICAgICAgfCBcIiRTVE9QXCIgLT4gU1RPUFxuXHRcdCAgICAgIHwgXCIkRkxVWFwiIC0+IEZMVVhcblx0XHQgICAgICB8IFwiJFRSQUNLXCIgLT4gVFJBQ0tcblx0XHQgICAgICB8IFwiJFVQREFURVwiIC0+IEFTU0lHTlxuXHRcdCAgICAgIHwgXCIkUFJJTlRcIiAtPiBQUklOVEZcblx0XHQgICAgICB8IFwiJFBSSU5URlwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUExPVEVOVFJZXCIgLT4gUExPVEVOVFJZXG5cdFx0ICAgICAgfCBcIiRSVU5cIiAtPiBSVU5cblx0XHQgICAgICB8IFwiJFNQRUNJRVNfT0ZcIiAtPiBTUEVDSUVTX09GXG5cdFx0ICAgICAgfCBzIC0+XG5cdFx0XHQgcmFpc2Vcblx0XHRcdCAgIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgICAgKFwiUGVydHVyYmF0aW9uIGVmZmVjdCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdFx0XHQoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgICAgIH1cblx0IHwgJ1snIGJsYW5rKiAoaWQgYXMgbGFiKSBibGFuayogJ10nIHtcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJFXCIgLT4gRVZFTlRcblx0XHR8IFwiRS1cIiAtPiBOVUxMX0VWRU5UXG5cdFx0fCBcIlRcIiAtPiBUSU1FXG5cdFx0fCBcIlRzaW1cIiAtPiBDUFVUSU1FXG5cdFx0fCBcImxvZ1wiIC0+IExPR1xuXHRcdHwgXCJzaW5cIiAtPiBTSU5VU1xuXHRcdHwgXCJjb3NcIiAtPiBDT1NJTlVTXG5cdFx0fCBcInRhblwiIC0+IFRBTlxuXHRcdHwgXCJleHBcIiAtPiBFWFBPTkVOVFxuXHRcdHwgXCJpbnRcIiAtPiBBQlNcblx0XHR8IFwibW9kXCIgLT4gTU9EVUxPXG5cdFx0fCBcInNxcnRcIiAtPiBTUVJUXG5cdFx0fCBcInRydWVcIiAtPiBUUlVFXG5cdFx0fCBcImZhbHNlXCIgLT4gRkFMU0Vcblx0XHR8IFwicGlcIiAtPiBGTE9BVCAoMy4xNDE1OTI2NSlcblx0XHR8IFwibWF4XCIgLT4gTUFYXG5cdFx0fCBcIm1pblwiIC0+IE1JTlxuXHRcdHwgXCJFbWF4XCIgLT4gRU1BWFxuXHRcdHwgXCJUbWF4XCIgLT4gVE1BWFxuXHRcdHwgXCI/XCIgLT4gVEhFTlxuXHRcdHwgXCI6XCIgLT4gRUxTRVxuXHRcdHwgXCJub3RcIiAtPiBOT1Rcblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdFx0ICAgIChcIlN5bWJvbCBcXFwiXCJec15cIlxcXCIgaXMgbm90IGRlZmluZWRcIixcblx0XHRcdCAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgfVxuXHQgfCAnOicge1RZUEV9XG5cdCB8ICc7JyB7U0VNSUNPTE9OfVxuXHQgfCAnXFxcIicge2xldCBzdHIgPSByZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1ZiBpblxuXHRcdCBTVFJJTkcgc3RyfVxuXHQgfCBlb2wge0xleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FfVxuXHQgfCAnIycge2NvbW1lbnQgbGV4YnVmfVxuXHQgfCAnLycgJyonIHtpbmxpbmVfY29tbWVudCBsZXhidWY7IHRva2VuIGxleGJ1Zn1cblx0IHwgaW50ZWdlciBhcyBuIHt0cnkgSU5UIChpbnRfb2Zfc3RyaW5nIG4pXG5cdCB3aXRoIEZhaWx1cmUgXyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0IChuXlwiIGlzIGEgaW5jb3JyZWN0IGludGVnZXJcIixcblx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKX1cblxuXHQgfCByZWFsIGFzIGYge0ZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZil9XG5cdCB8ICdcXCcnIChbXidcXG4nJ1xcJyddKyBhcyB4KSAnXFwnJ3tMQUJFTCh4KX1cblx0IHwgaWQgYXMgc3RyIHtrZXl3b3JkX29yX2lkIHN0cn1cblx0IHwgJ0AnIHtBVH1cblx0IHwgJywnIHtDT01NQX1cblx0IHwgJygnIHtPUF9QQVJ9XG5cdCB8ICcpJyB7Q0xfUEFSfVxuXHQgfCAneycge09QX0NVUn1cblx0IHwgJ30nIHtDTF9DVVJ9XG5cdCB8ICd8JyB7UElQRX1cblx0IHwgJy4nIHtET1R9XG5cdCB8ICcrJyB7UExVU31cblx0IHwgJyonIHtNVUxUfVxuXHQgfCAnLScge01JTlVTfVxuXHQgfCAnXicge1BPV31cblx0IHwgJy8nIHtESVZ9XG5cdCB8ICc8JyB7U01BTExFUn1cblx0IHwgJz4nIHtHUkVBVEVSfVxuXHQgfCAnPScge0VRVUFMfVxuXHQgfCAnJScgKGlkIGFzIGxhYikgJzonIHtcblx0XHRtYXRjaCBsYWIgd2l0aFxuXHRcdHwgXCJhZ2VudFwiIC0+IFNJR05BVFVSRVxuXHRcdHwgXCJpbml0XCIgLT4gSU5JVFxuXHRcdHwgXCJ2YXJcIiAtPiBMRVRcblx0XHR8IFwicGxvdFwiIC0+IFBMT1Rcblx0XHR8IFwibW9kXCIgLT4gUEVSVFxuXHRcdHwgXCJvYnNcIiAtPiBPQlNcblx0XHR8IFwiZGVmXCIgLT4gQ09ORklHXG5cdFx0fCBcInRva2VuXCIgLT4gVE9LRU5cblx0XHR8IF8gYXMgcyAtPlxuXHRcdCAgIHJhaXNlIChFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvclxuXHRcdCAgIChcIkluc3RydWN0aW9uIFxcXCJcIl5zXlwiXFxcIiBub3QgcmVjb2duaXplZFwiLFxuXHRcdFx0XHRcdExvYy5vZl9wb3Ncblx0XHRcdFx0XHQoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdFx0XHQgKExleGluZy5sZXhlbWVfZW5kX3AgbGV4YnVmKSkpXG5cdCAgICAgICB9XG5cdCB8ICchJyB7S0FQUEFfTE5LfVxuXHQgfCBpbnRlcm5hbF9zdGF0ZSBhcyBzIHtsZXQgaSA9IFN0cmluZy5pbmRleCBzICd+JyBpblxuXHRcdFx0XHRsZXQgciA9IFN0cmluZy5zdWIgcyAoaSsxKSAoU3RyaW5nLmxlbmd0aCBzLWktMSkgaW5cblx0XHRcdFx0S0FQUEFfTVJLIHJcblx0XHRcdCAgICAgICB9XG5cdCB8ICc/JyB7S0FQUEFfV0xEfVxuXHQgfCAnXycge0tBUFBBX1NFTUl9XG5cdCB8IGJsYW5rICB7dG9rZW4gbGV4YnVmfVxuXHQgfCBlb2Yge3JlYWNoX2VvZiBsZXhidWY7IEVPRn1cblx0IHwgXyBhcyBjIHtcblx0XHQgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgIChcImludmFsaWQgdXNlIG9mIGNoYXJhY3RlciBcIl4gU3RyaW5nLm1ha2UgMSBjLFxuXHRcdFx0ICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgIH1cblxuYW5kIHJlYWRfbGFiZWwgYWNjIGNoYXJfbGlzdCA9XG4gIHBhcnNlXG4gIHwgZW9mIHtTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpfVxuICB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1Zn1cbiAgfCBfIGFzIGMge2lmIExpc3QubWVtIGMgY2hhcl9saXN0XG5cdCAgICB0aGVuIFN0cmluZy5jb25jYXQgXCJcIiAoTGlzdC5yZXZfbWFwIChmdW4geCAtPiBTdHJpbmcubWFrZSAxIHgpIGFjYylcblx0ICAgIGVsc2UgcmVhZF9sYWJlbCAoYzo6YWNjKSBjaGFyX2xpc3QgbGV4YnVmfVxuXG5hbmQgY29tbWVudCA9IHBhcnNlXG5cdCAgICB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZiA7IE5FV0xJTkV9XG5cdCAgICB8ICdcXFxcJyBibGFuayogZW9sIHtMZXhpbmcubmV3X2xpbmUgbGV4YnVmOyB0b2tlbiBsZXhidWZ9XG5cdCAgICB8IGVvZiB7RU9GfVxuXHQgICAgfCBfIHtjb21tZW50IGxleGJ1Zn1cblxuYW5kIGlubGluZV9jb21tZW50ID0gcGFyc2Vcblx0XHQgICB8IGVvbCB7TGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmfVxuXHRcdCAgIHwgJyonICcvJyB7ICgpIH1cblx0XHQgICB8ICdcXFwiJ1xuXHRcdCAgICAgICB7aWdub3JlIChyZWFkX2xhYmVsIFtdIFsnXFxcIiddIGxleGJ1Zik7XG5cdFx0XHRpbmxpbmVfY29tbWVudCBsZXhidWZ9XG5cdFx0ICAgfCAnLycgJyonIHtpbmxpbmVfY29tbWVudCBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1Zn1cblx0XHQgICB8IF8ge2lubGluZV9jb21tZW50IGxleGJ1Zn1cbntcbiAgbGV0IGNvbXBpbGUgbG9nZ2VyIGNvbXBpbCBmaWxlID1cbiAgICBsZXQgZCA9IG9wZW5faW4gZmlsZSBpblxuICAgIGxldCBsZXhidWYgPSBMZXhpbmcuZnJvbV9jaGFubmVsIGQgaW5cbiAgICBsZXQgKCkgPSBsZXhidWYubGV4X2N1cnJfcCA8LSB7bGV4YnVmLmxleF9jdXJyX3Agd2l0aCBwb3NfZm5hbWUgPSBmaWxlfSBpblxuICAgIGxldCBjb21waWwgPSB7IGNvbXBpbCB3aXRoIEFzdC5maWxlbmFtZXMgPSBmaWxlIDo6IGNvbXBpbC5Bc3QuZmlsZW5hbWVzIH0gaW5cbiAgICB0cnlcbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcIlBhcnNpbmcgJXMuLi5ALlwiIGZpbGUgaW5cbiAgICAgIGxldCBvdXQgPSBLYXBwYVBhcnNlci5zdGFydF9ydWxlIHRva2VuIGxleGJ1ZiBjb21waWwgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGxvZ2dlciBcImRvbmVALlwiIGluXG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluIG91dFxuICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1zZyxwb3MpIC0+XG4gICAgICBsZXQgKCkgPSBjbG9zZV9pbiBkIGluXG4gICAgICBsZXQgKCkgPSBQcC5lcnJvciBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIChtc2cscG9zKSBpblxuICAgICAgZXhpdCAzXG59XG4iLCIjIDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuIFxuICBvcGVuIExleGluZ1xuICBvcGVuIEthcHBhUGFyc2VyXG5cbiAgbGV0IHJlYWNoX2VvZiBsZXhidWYgPVxuICAgIGxleGJ1Zi5sZXhfZW9mX3JlYWNoZWQgPC0gdHJ1ZVxuXG4gbGV0IHJlc2V0X2VvZiBsZXhidWYgPVxuICAgbGV4YnVmLmxleF9lb2ZfcmVhY2hlZCA8LSBmYWxzZVxuXG4gbGV0IHBvc2l0aW9uIGxleGJ1ZiA9XG4gICBsZXQgcG9zID0gbGV4YnVmLmxleF9jdXJyX3AgaW5cbiAgIChwb3MucG9zX2ZuYW1lLCBwb3MucG9zX2xudW0sIHBvcy5wb3NfY251bSAtIHBvcy5wb3NfYm9sKVxuXG4gbGV0IGtleXdvcmRfb3JfaWQgPVxuIGxldCBrZXl3b3JkcyA9IEhhc2h0YmwuY3JlYXRlIDE1IGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJkb1wiIERPIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJzZXRcIiBTRVQgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcInJlcGVhdFwiIFJFUEVBVCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwidW50aWxcIiBVTlRJTCBpblxuIGxldCAoKSA9IEhhc2h0YmwuYWRkIGtleXdvcmRzIFwiSU5GXCIgSU5GSU5JVFkgaW5cbiBsZXQgKCkgPSBIYXNodGJsLmFkZCBrZXl3b3JkcyBcImluZlwiIElORklOSVRZIGluXG4gbGV0ICgpID0gSGFzaHRibC5hZGQga2V5d29yZHMgXCJhbGFybVwiIEFMQVJNIGluXG4gZnVuIHggLT5cbiB0cnkgSGFzaHRibC5maW5kIGtleXdvcmRzIHggd2l0aCBOb3RfZm91bmQgLT4gSUQgeFxuXG5sZXQgc3BhY2VfY2hhcnMgPSBbJyAnOydcXG4nOydcXHQnXVxuXG4jIDMxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxubGV0IF9fb2NhbWxfbGV4X3RhYmxlcyA9IHtcbiAgTGV4aW5nLmxleF9iYXNlID1cbiAgIFwiXFwwMDBcXDAwMFxcMjEzXFwyNTVcXDIxNFxcMjU1XFwyMTVcXDI1NVxcMjE3XFwyNTVcXDA4NFxcMDAwXFwyMTlcXDI1NVxcMTYwXFwwMDBcXFxuICAgIFxcMjIxXFwyNTVcXDIyMlxcMjU1XFwyMjVcXDI1NVxcMjI3XFwyNTVcXDIyOFxcMjU1XFwyMzFcXDI1NVxcMjMyXFwyNTVcXDIzM1xcMjU1XFxcbiAgICBcXDIzNFxcMjU1XFwyMzVcXDI1NVxcMjM2XFwyNTVcXDI0MFxcMDAwXFwwNDJcXDAwMVxcMTM2XFwwMDBcXDE1OVxcMDAwXFwxMTlcXDAwMVxcXG4gICAgXFwwNTFcXDAwMFxcMjQyXFwyNTVcXDI0M1xcMjU1XFwwMDFcXDAwMFxcMjQ0XFwyNTVcXDI0NVxcMjU1XFwyNDZcXDI1NVxcMTU3XFwwMDFcXFxuICAgIFxcMjE1XFwwMDFcXDAzNFxcMDAwXFwwODNcXDAwMFxcMDA2XFwwMDBcXDA5M1xcMDAwXFwxNjhcXDAwMVxcMjU1XFwyNTVcXDAwMlxcMDAwXFxcbiAgICBcXDE3MFxcMDAxXFwyNTRcXDI1NVxcMjUzXFwyNTVcXDI0OVxcMjU1XFwwODBcXDAwMFxcMjUyXFwyNTVcXDI1MVxcMjU1XFwwMzlcXDAwMlxcXG4gICAgXFwwOTdcXDAwMlxcMjExXFwwMDJcXDAxM1xcMDAzXFwxMjdcXDAwM1xcMjQ3XFwyNTVcXDIxMlxcMDAyXFwyNDFcXDI1NVxcMTQyXFwwMDFcXFxuICAgIFxcMDg5XFwwMDNcXDE1NVxcMDAxXFwxNzRcXDAwMlxcMTE3XFwwMDNcXDEzOFxcMDAwXFwyMzhcXDI1NVxcMTg1XFwwMDNcXDAwOVxcMDA0XFxcbiAgICBcXDA2N1xcMDA0XFwyMjBcXDI1NVxcMTQ3XFwwMDRcXDI0N1xcMDAxXFwyNTNcXDI1NVxcMjIzXFwwMDJcXDI1NVxcMjU1XFwyNTRcXDI1NVxcXG4gICAgXFwwMDRcXDAwMFxcMjI1XFwwMDJcXDE3OFxcMDAyXFwyNTJcXDI1NVxcMjUzXFwyNTVcXDIzOVxcMDAyXFwyNTVcXDI1NVxcMDA1XFwwMDBcXFxuICAgIFxcMjU0XFwyNTVcXDAwNlxcMDAwXFwxNDNcXDAwM1xcMDA0XFwwMDVcXDI1MVxcMjU1XFwxMDFcXDAwMFxcMjUzXFwyNTVcXDA5N1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMDdcXDAwMFxcMjU0XFwyNTVcXDI1MlxcMjU1XCI7XG4gIExleGluZy5sZXhfYmFja3RyayA9XG4gICBcIlxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDJcXDAwMFxcMjU1XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMThcXDAwMFxcMDM5XFwwMDBcXDA0MlxcMDAwXFwwMjZcXDAwMFxcMDE1XFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0MlxcMDAwXFxcbiAgICBcXDA0MlxcMDAwXFwwMjlcXDAwMFxcMDMyXFwwMDBcXDAyNVxcMDAwXFwwNDJcXDAwMFxcMDQyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA1XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxNlxcMDAwXFwwMTZcXDAwMFxcMjU1XFwyNTVcXDAxNlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAwMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDNcXDAwMFxcMjU1XFwyNTVcXDAwM1xcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwwMDRcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDA0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHQgPVxuICAgXCJcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDYwXFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDY4XFwwMDBcXDAwMFxcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDc1XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDAwMFxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODRcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwMDBcXDAwMFxcMDAwXFwwMDBcIjtcbiAgTGV4aW5nLmxleF90cmFucyA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDNcXDAwMFxcMDI2XFwwMDBcXDAyNlxcMDAwXFwwMzhcXDAwMFxcMDI3XFwwMDBcXDA3MVxcMDAwXFwwNzhcXDAwMFxcXG4gICAgXFwwODBcXDAwMFxcMDg4XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwM1xcMDAwXFwwMDZcXDAwMFxcMDI4XFwwMDBcXDAyNVxcMDAwXFwwMzJcXDAwMFxcMDA3XFwwMDBcXDAzNlxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwwMTZcXDAwMFxcMDE1XFwwMDBcXDAxMVxcMDAwXFwwMTJcXDAwMFxcMDE3XFwwMDBcXDAzM1xcMDAwXFwwMjJcXDAwMFxcMDI0XFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDMwXFwwMDBcXDAyOVxcMDAwXFwwMzRcXDAwMFxcMDA4XFwwMDBcXDAwOVxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMThcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMzFcXDAwMFxcMDM3XFwwMDBcXDA1NFxcMDAwXFwwMTBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDQ2XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE0XFwwMDBcXDAzNVxcMDAwXFwwMTNcXDAwMFxcMDA1XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA0NFxcMDAwXFwwNjZcXDAwMFxcMDQyXFwwMDBcXDA0MVxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNDVcXDAwMFxcMDkxXFwwMDBcXFxuICAgIFxcMDkwXFwwMDBcXDA0M1xcMDAwXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDAwMFxcMDAwXFwwNjFcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNTlcXDAwMFxcXG4gICAgXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwMDJcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDU2XFwwMDBcXDA1MVxcMDAwXFwwMjNcXDAwMFxcXG4gICAgXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDA0MFxcMDAwXFwwMzhcXDAwMFxcMDQwXFwwMDBcXDAzOFxcMDAwXFwwMzlcXDAwMFxcMDAwXFwwMDBcXDAzOVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwNThcXDAwMFxcMDAwXFwwMDBcXDA1OFxcMDAwXFwwNTVcXDAwMFxcMDUxXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDQwXFwwMDBcXDAwMFxcMDAwXFwwNDBcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFxcbiAgICBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDU1XFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1MFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNjlcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNDdcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA3OFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA3OVxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwMDBcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNTNcXDAwMFxcMDUzXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXFxuICAgIFxcMDczXFwwMDBcXDA3MVxcMDAwXFwwNzNcXDAwMFxcMDcxXFwwMDBcXDA3MlxcMDAwXFwwMDBcXDAwMFxcMDcyXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1M1xcMDAwXFwwNTNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNzBcXDAwMFxcXG4gICAgXFwwODJcXDAwMFxcMDgwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDgxXFwwMDBcXDAwMFxcMDAwXFwwNDlcXDAwMFxcMDczXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA3M1xcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA3N1xcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDUyXFwwMDBcXDA1MlxcMDAwXFwwNDlcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTBcXDAwMFxcMDAwXFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXFxuICAgIFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA4MlxcMDAwXFwwODBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODFcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXFxuICAgIFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA4MlxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDc2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTVcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDUwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDAwXFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDY0XFwwMDBcXDAwMFxcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA2NlxcMDAwXFwwMDBcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwODhcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA4OVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwODZcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDg3XFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDA4NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XCI7XG4gIExleGluZy5sZXhfY2hlY2sgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjdcXDAwMFxcMDM5XFwwMDBcXDAwMFxcMDAwXFwwNzJcXDAwMFxcMDc5XFwwMDBcXFxuICAgIFxcMDgxXFwwMDBcXDA4OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMjRcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAzM1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMzRcXDAwMFxcMDA1XFwwMDBcXDAzNVxcMDAwXFwwMzZcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDQ0XFwwMDBcXDA4NVxcMDAwXFxcbiAgICBcXDA4N1xcMDAwXFwwMzRcXDAwMFxcMDIxXFwwMDBcXDI1NVxcMjU1XFwwNjBcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMjFcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDYwXFwwMDBcXDI1NVxcMjU1XFwwMDVcXDAwMFxcMjU1XFwyNTVcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXFxuICAgIFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFxcbiAgICBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcXG4gICAgXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDA1XFwwMDBcXDAwNVxcMDAwXFwwMDVcXDAwMFxcMDIyXFwwMDBcXFxuICAgIFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFwwMjJcXDAwMFxcMDIyXFwwMDBcXDAyMlxcMDAwXFxcbiAgICBcXDAyMlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDA3XFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFxcbiAgICBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcXG4gICAgXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDA3XFwwMDBcXFxuICAgIFxcMDA3XFwwMDBcXDAwN1xcMDAwXFwwMDdcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAxOVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcXG4gICAgXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXFxuICAgIFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAxOVxcMDAwXFxcbiAgICBcXDAxOVxcMDAwXFwwMTlcXDAwMFxcMDE5XFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMjFcXDAwMFxcMDIwXFwwMDBcXDA2MFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXFxuICAgIFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFxcbiAgICBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcXG4gICAgXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyMFxcMDAwXFwwMjBcXDAwMFxcMDIwXFwwMDBcXDAyM1xcMDAwXFwwMzFcXDAwMFxcMDIzXFwwMDBcXFxuICAgIFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFwwMjNcXDAwMFxcMDIzXFwwMDBcXDAyM1xcMDAwXFxcbiAgICBcXDAyM1xcMDAwXFwwMzdcXDAwMFxcMDM3XFwwMDBcXDA0MFxcMDAwXFwwNDBcXDAwMFxcMDM3XFwwMDBcXDI1NVxcMjU1XFwwNDBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDU1XFwwMDBcXDI1NVxcMjU1XFwwNTVcXDAwMFxcMDIzXFwwMDBcXDAzMVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXFxuICAgIFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFwwNTVcXDAwMFxcMDU1XFwwMDBcXDA1NVxcMDAwXFxcbiAgICBcXDAzN1xcMDAwXFwyNTVcXDI1NVxcMDQwXFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcXG4gICAgXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDA1N1xcMDAwXFwwNTdcXDAwMFxcMDU3XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDAyM1xcMDAwXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwMzJcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFxcbiAgICBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcXG4gICAgXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwMzJcXDAwMFxcMDMyXFwwMDBcXFxuICAgIFxcMDMyXFwwMDBcXDAzMlxcMDAwXFwwNDdcXDAwMFxcMDY3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDQ3XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcXG4gICAgXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXFxuICAgIFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ3XFwwMDBcXDA0N1xcMDAwXFxcbiAgICBcXDA0N1xcMDAwXFwwNDdcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNzRcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNzRcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMjU1XFwyNTVcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXFxuICAgIFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFxcbiAgICBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcXG4gICAgXFwwNDhcXDAwMFxcMDQ4XFwwMDBcXDA0OFxcMDAwXFwwNDhcXDAwMFxcMDQ5XFwwMDBcXDA1M1xcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXFxuICAgIFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFwwNThcXDAwMFxcMDU4XFwwMDBcXDA1OFxcMDAwXFxcbiAgICBcXDA2OVxcMDAwXFwwNjlcXDAwMFxcMDczXFwwMDBcXDA3M1xcMDAwXFwwNjlcXDAwMFxcMjU1XFwyNTVcXDA3M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDUzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY3XFwwMDBcXFxuICAgIFxcMDc3XFwwMDBcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3N1xcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA2OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNzNcXDAwMFxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNzRcXDAwMFxcMDc3XFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA0OVxcMDAwXFwwNTNcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDI1NVxcMjU1XFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDA1NlxcMDAwXFxcbiAgICBcXDA1NlxcMDAwXFwwNTZcXDAwMFxcMDU2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwODJcXDAwMFxcMDgyXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgyXFwwMDBcXDI1NVxcMjU1XFwwNTZcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFxcbiAgICBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwNTlcXDAwMFxcMDU5XFwwMDBcXDA1OVxcMDAwXFwwODJcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA3NFxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNTlcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDU2XFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDU5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMDYyXFwwMDBcXDI1NVxcMjU1XFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFxcbiAgICBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcXG4gICAgXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXFxuICAgIFxcMDYyXFwwMDBcXDA2MlxcMDAwXFwwNjJcXDAwMFxcMDYyXFwwMDBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDA2M1xcMDAwXFwyNTVcXDI1NVxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcXG4gICAgXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXFxuICAgIFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFxcbiAgICBcXDA2M1xcMDAwXFwwNjNcXDAwMFxcMDYzXFwwMDBcXDA2M1xcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA2NFxcMDAwXFwyNTVcXDI1NVxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXFxuICAgIFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFxcbiAgICBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcXG4gICAgXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjRcXDAwMFxcMDY0XFwwMDBcXDA2NFxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMDY2XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNjZcXDAwMFxcMjU1XFwyNTVcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFxcbiAgICBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcXG4gICAgXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXFxuICAgIFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDY2XFwwMDBcXDA2NlxcMDAwXFwwNjZcXDAwMFxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDgzXFwwMDBcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA4M1xcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwODNcXDAwMFwiO1xuICBMZXhpbmcubGV4X2Jhc2VfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDA4MFxcMDAwXFwxMzhcXDAwMFxcMjUyXFwwMDBcXDAwN1xcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2JhY2t0cmtfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2RlZmF1bHRfY29kZSA9XG4gICBcIlxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X3RyYW5zX2NvZGUgPVxuICAgXCJcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAxXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDFcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMVxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXFxuICAgIFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFxcbiAgICBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcXG4gICAgXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDA0XFwwMDBcXDAwNFxcMDAwXFwwMDRcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcXG4gICAgXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXFxuICAgIFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFxcbiAgICBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFxcMDAwXFwwMDBcXDAwMFwiO1xuICBMZXhpbmcubGV4X2NoZWNrX2NvZGUgPVxuICAgXCJcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMDMxXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwMzFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDAwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcXG4gICAgXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXFxuICAgIFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDAzMVxcMDAwXFxcbiAgICBcXDAzMVxcMDAwXFwwMzFcXDAwMFxcMDMxXFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwwNDlcXDAwMFxcXG4gICAgXFwyNTVcXDI1NVxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXFxuICAgIFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFxcbiAgICBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNDlcXDAwMFxcXG4gICAgXFwwNDlcXDAwMFxcMDQ5XFwwMDBcXDA0OVxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFxcbiAgICBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcXG4gICAgXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXFxuICAgIFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTBcXDAwMFxcMDUwXFwwMDBcXDA1MFxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXFxuICAgIFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFxcbiAgICBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcXG4gICAgXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMDUxXFwwMDBcXDA1MVxcMDAwXFwwNTFcXDAwMFxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcXG4gICAgXFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXFxuICAgIFxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFxcbiAgICBcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVxcMjU1XFwyNTVcXDI1NVwiO1xuICBMZXhpbmcubGV4X2NvZGUgPVxuICAgXCJcXDI1NVxcMDAyXFwyNTVcXDI1NVxcMDAzXFwyNTVcXDI1NVxcMDAwXFwwMDJcXDAwMVxcMDAzXFwyNTVcIjtcbn1cblxubGV0IHJlYyB0b2tlbiBsZXhidWYgPVxuICBsZXhidWYuTGV4aW5nLmxleF9tZW0gPC0gQXJyYXkubWFrZSA0ICgtMSk7IF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgMFxuYW5kIF9fb2NhbWxfbGV4X3Rva2VuX3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcubmV3X2VuZ2luZSBfX29jYW1sX2xleF90YWJsZXMgX19vY2FtbF9sZXhfc3RhdGUgbGV4YnVmIHdpdGhcbiAgICAgIHwgMCAtPlxuIyA1MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgdG9rZW4gbGV4YnVmKVxuIyA2NDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDUxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChBTkQpXG4jIDY0NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIgLT5cbiMgNTIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKE9SKVxuIyA2NTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzIC0+XG4jIDUzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAoS0FQUEFfTFJBUilcbiMgNjU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyA1NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAoS0FQUEFfUkFSKVxuIyA2NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA1IC0+XG4jIDU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChMQVIpXG4jIDY2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDYgLT5cbiMgNTYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKERJRkYpXG4jIDY3MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDcgLT5cbmxldFxuIyA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICBzXG4jIDY3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWUgbGV4YnVmIGxleGJ1Zi5MZXhpbmcubGV4X3N0YXJ0X3BvcyBsZXhidWYuTGV4aW5nLmxleF9jdXJyX3BvcyBpblxuIyA1NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChtYXRjaCBzIHdpdGhcblx0XHQgICAgICB8IFwiJERFTFwiIC0+IERFTEVURVxuXHRcdCAgICAgIHwgXCIkQUREXCIgLT4gSU5UUk9cblx0XHQgICAgICB8IFwiJEFQUExZXCIgLT4gQVBQTFlcblx0XHQgICAgICB8IFwiJFNOQVBTSE9UXCIgLT4gU05BUFNIT1Rcblx0XHQgICAgICB8IFwiJFNUT1BcIiAtPiBTVE9QXG5cdFx0ICAgICAgfCBcIiRGTFVYXCIgLT4gRkxVWFxuXHRcdCAgICAgIHwgXCIkVFJBQ0tcIiAtPiBUUkFDS1xuXHRcdCAgICAgIHwgXCIkVVBEQVRFXCIgLT4gQVNTSUdOXG5cdFx0ICAgICAgfCBcIiRQUklOVFwiIC0+IFBSSU5URlxuXHRcdCAgICAgIHwgXCIkUFJJTlRGXCIgLT4gUFJJTlRGXG5cdFx0ICAgICAgfCBcIiRQTE9URU5UUllcIiAtPiBQTE9URU5UUllcblx0XHQgICAgICB8IFwiJFJVTlwiIC0+IFJVTlxuXHRcdCAgICAgIHwgXCIkU1BFQ0lFU19PRlwiIC0+IFNQRUNJRVNfT0Zcblx0XHQgICAgICB8IHMgLT5cblx0XHRcdCByYWlzZVxuXHRcdFx0ICAgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgICAoXCJQZXJ0dXJiYXRpb24gZWZmZWN0IFxcXCJcIl5zXlwiXFxcIiBpcyBub3QgZGVmaW5lZFwiLFxuXHRcdFx0ICAgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHRcdCAgICAgKVxuIyA3MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA4IC0+XG5sZXRcbiMgNzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIGxhYlxuIyA3MDYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9tZW0uKDApIGxleGJ1Zi5MZXhpbmcubGV4X21lbS4oMSkgaW5cbiMgNzggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoXG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiRVwiIC0+IEVWRU5UXG5cdFx0fCBcIkUtXCIgLT4gTlVMTF9FVkVOVFxuXHRcdHwgXCJUXCIgLT4gVElNRVxuXHRcdHwgXCJUc2ltXCIgLT4gQ1BVVElNRVxuXHRcdHwgXCJsb2dcIiAtPiBMT0dcblx0XHR8IFwic2luXCIgLT4gU0lOVVNcblx0XHR8IFwiY29zXCIgLT4gQ09TSU5VU1xuXHRcdHwgXCJ0YW5cIiAtPiBUQU5cblx0XHR8IFwiZXhwXCIgLT4gRVhQT05FTlRcblx0XHR8IFwiaW50XCIgLT4gQUJTXG5cdFx0fCBcIm1vZFwiIC0+IE1PRFVMT1xuXHRcdHwgXCJzcXJ0XCIgLT4gU1FSVFxuXHRcdHwgXCJ0cnVlXCIgLT4gVFJVRVxuXHRcdHwgXCJmYWxzZVwiIC0+IEZBTFNFXG5cdFx0fCBcInBpXCIgLT4gRkxPQVQgKDMuMTQxNTkyNjUpXG5cdFx0fCBcIm1heFwiIC0+IE1BWFxuXHRcdHwgXCJtaW5cIiAtPiBNSU5cblx0XHR8IFwiRW1heFwiIC0+IEVNQVhcblx0XHR8IFwiVG1heFwiIC0+IFRNQVhcblx0XHR8IFwiP1wiIC0+IFRIRU5cblx0XHR8IFwiOlwiIC0+IEVMU0Vcblx0XHR8IFwibm90XCIgLT4gTk9UXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHRcdCAgICAoXCJTeW1ib2wgXFxcIlwiXnNeXCJcXFwiIGlzIG5vdCBkZWZpbmVkXCIsXG5cdFx0XHQgICAgIExvYy5vZl9wb3MgKExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHQgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0ICAgICAgIClcbiMgNzM5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgOSAtPlxuIyAxMDggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoVFlQRSlcbiMgNzQ0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTAgLT5cbiMgMTA5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFNFTUlDT0xPTilcbiMgNzQ5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTEgLT5cbiMgMTEwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgIChsZXQgc3RyID0gcmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYgaW5cblx0XHQgU1RSSU5HIHN0cilcbiMgNzU1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTIgLT5cbiMgMTEyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FKVxuIyA3NjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxMyAtPlxuIyAxMTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoY29tbWVudCBsZXhidWYpXG4jIDc2NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE0IC0+XG4jIDExNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAoaW5saW5lX2NvbW1lbnQgbGV4YnVmOyB0b2tlbiBsZXhidWYpXG4jIDc3MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE1IC0+XG5sZXRcbiMgMTE1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIG5cbiMgNzc2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDExNSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICh0cnkgSU5UIChpbnRfb2Zfc3RyaW5nIG4pXG5cdCB3aXRoIEZhaWx1cmUgXyAtPiByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0IChuXlwiIGlzIGEgaW5jb3JyZWN0IGludGVnZXJcIixcblx0ICAgICBMb2Mub2ZfcG9zIChMZXhpbmcubGV4ZW1lX3N0YXJ0X3AgbGV4YnVmKVxuXHRcdCAgICAgIChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKSlcbiMgNzg0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTYgLT5cbmxldFxuIyAxMjEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgZlxuIyA3OTAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTIxIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgKEZMT0FUIChmbG9hdF9vZl9zdHJpbmcgZikpXG4jIDc5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE3IC0+XG5sZXRcbiMgMTIyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgeFxuIyA4MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDEyMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTEFCRUwoeCkpXG4jIDgwNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDE4IC0+XG5sZXRcbiMgMTIzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICBzdHJcbiMgODEwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuPSBMZXhpbmcuc3ViX2xleGVtZSBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zIGluXG4jIDEyMyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgIChrZXl3b3JkX29yX2lkIHN0cilcbiMgODE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMTkgLT5cbiMgMTI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKEFUKVxuIyA4MTkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyMCAtPlxuIyAxMjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoQ09NTUEpXG4jIDgyNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIxIC0+XG4jIDEyNiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChPUF9QQVIpXG4jIDgyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIyIC0+XG4jIDEyNyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDTF9QQVIpXG4jIDgzNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDIzIC0+XG4jIDEyOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChPUF9DVVIpXG4jIDgzOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI0IC0+XG4jIDEyOSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChDTF9DVVIpXG4jIDg0NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI1IC0+XG4jIDEzMCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChQSVBFKVxuIyA4NDkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNiAtPlxuIyAxMzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRE9UKVxuIyA4NTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAyNyAtPlxuIyAxMzIgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoUExVUylcbiMgODU5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMjggLT5cbiMgMTMzIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKE1VTFQpXG4jIDg2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDI5IC0+XG4jIDEzNCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChNSU5VUylcbiMgODY5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzAgLT5cbiMgMTM1IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFBPVylcbiMgODc0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzEgLT5cbiMgMTM2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKERJVilcbiMgODc5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMzIgLT5cbiMgMTM3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgKFNNQUxMRVIpXG4jIDg4NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDMzIC0+XG4jIDEzOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChHUkVBVEVSKVxuIyA4ODkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNCAtPlxuIyAxMzkgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoRVFVQUwpXG4jIDg5NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM1IC0+XG5sZXRcbiMgMTQwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgIGxhYlxuIyA5MDAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiAobGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zICsgMSkgKGxleGJ1Zi5MZXhpbmcubGV4X2N1cnJfcG9zICsgLTEpIGluXG4jIDE0MCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoXG5cdFx0bWF0Y2ggbGFiIHdpdGhcblx0XHR8IFwiYWdlbnRcIiAtPiBTSUdOQVRVUkVcblx0XHR8IFwiaW5pdFwiIC0+IElOSVRcblx0XHR8IFwidmFyXCIgLT4gTEVUXG5cdFx0fCBcInBsb3RcIiAtPiBQTE9UXG5cdFx0fCBcIm1vZFwiIC0+IFBFUlRcblx0XHR8IFwib2JzXCIgLT4gT0JTXG5cdFx0fCBcImRlZlwiIC0+IENPTkZJR1xuXHRcdHwgXCJ0b2tlblwiIC0+IFRPS0VOXG5cdFx0fCBfIGFzIHMgLT5cblx0XHQgICByYWlzZSAoRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3Jcblx0XHQgICAoXCJJbnN0cnVjdGlvbiBcXFwiXCJec15cIlxcXCIgbm90IHJlY29nbml6ZWRcIixcblx0XHRcdFx0XHRMb2Mub2ZfcG9zXG5cdFx0XHRcdFx0KExleGluZy5sZXhlbWVfc3RhcnRfcCBsZXhidWYpXG5cdFx0XHRcdFx0IChMZXhpbmcubGV4ZW1lX2VuZF9wIGxleGJ1ZikpKVxuXHQgICAgICAgKVxuIyA5MjAgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNiAtPlxuIyAxNTcgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAoS0FQUEFfTE5LKVxuIyA5MjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAzNyAtPlxubGV0XG4jIDE1OCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgICAgc1xuIyA5MzEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG49IExleGluZy5zdWJfbGV4ZW1lIGxleGJ1ZiBsZXhidWYuTGV4aW5nLmxleF9zdGFydF9wb3MgbGV4YnVmLkxleGluZy5sZXhfY3Vycl9wb3MgaW5cbiMgMTU4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZXQgaSA9IFN0cmluZy5pbmRleCBzICd+JyBpblxuXHRcdFx0XHRsZXQgciA9IFN0cmluZy5zdWIgcyAoaSsxKSAoU3RyaW5nLmxlbmd0aCBzLWktMSkgaW5cblx0XHRcdFx0S0FQUEFfTVJLIHJcblx0XHRcdCAgICAgICApXG4jIDkzOCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM4IC0+XG4jIDE2MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9XTEQpXG4jIDk0MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDM5IC0+XG4jIDE2MyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChLQVBQQV9TRU1JKVxuIyA5NDggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MCAtPlxuIyAxNjQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAodG9rZW4gbGV4YnVmKVxuIyA5NTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MSAtPlxuIyAxNjUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAocmVhY2hfZW9mIGxleGJ1ZjsgRU9GKVxuIyA5NTggXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCA0MiAtPlxubGV0XG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICBjXG4jIDk2NCBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE2NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChcblx0XHQgICAgcmFpc2UgKEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yXG5cdFx0XHQgICAgIChcImludmFsaWQgdXNlIG9mIGNoYXJhY3RlciBcIl4gU3RyaW5nLm1ha2UgMSBjLFxuXHRcdFx0ICAgICAgTG9jLm9mX3BvcyAoTGV4aW5nLmxleGVtZV9zdGFydF9wIGxleGJ1Zilcblx0XHRcdCAgICAgICAoTGV4aW5nLmxleGVtZV9lbmRfcCBsZXhidWYpKSlcblx0XHQgIClcbiMgOTczIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF90b2tlbl9yZWMgbGV4YnVmIF9fb2NhbWxfbGV4X3N0YXRlXG5cbmFuZCByZWFkX2xhYmVsIGFjYyBjaGFyX2xpc3QgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X3JlYWRfbGFiZWxfcmVjIGFjYyBjaGFyX2xpc3QgbGV4YnVmIDY3XG5hbmQgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGUgPVxuICBtYXRjaCBMZXhpbmcuZW5naW5lIF9fb2NhbWxfbGV4X3RhYmxlcyBfX29jYW1sX2xleF9zdGF0ZSBsZXhidWYgd2l0aFxuICAgICAgfCAwIC0+XG4jIDE3NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgIChTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpKVxuIyA5ODUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG5cbiAgfCAxIC0+XG4jIDE3NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgICAgICAgICAgIChMZXhpbmcubmV3X2xpbmUgbGV4YnVmIDsgcmVhZF9sYWJlbCBhY2MgY2hhcl9saXN0IGxleGJ1ZilcbiMgOTkwIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxubGV0XG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICBjXG4jIDk5NiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcbj0gTGV4aW5nLnN1Yl9sZXhlbWVfY2hhciBsZXhidWYgbGV4YnVmLkxleGluZy5sZXhfc3RhcnRfcG9zIGluXG4jIDE3NyBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gICAgICAgICAgIChpZiBMaXN0Lm1lbSBjIGNoYXJfbGlzdFxuXHQgICAgdGhlbiBTdHJpbmcuY29uY2F0IFwiXCIgKExpc3QucmV2X21hcCAoZnVuIHggLT4gU3RyaW5nLm1ha2UgMSB4KSBhY2MpXG5cdCAgICBlbHNlIHJlYWRfbGFiZWwgKGM6OmFjYykgY2hhcl9saXN0IGxleGJ1ZilcbiMgMTAwMiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfcmVhZF9sYWJlbF9yZWMgYWNjIGNoYXJfbGlzdCBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGNvbW1lbnQgbGV4YnVmID1cbiAgIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiA3NFxuYW5kIF9fb2NhbWxfbGV4X2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTgyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWYgOyBORVdMSU5FKVxuIyAxMDE0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMSAtPlxuIyAxODMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgICAgICAgICAoTGV4aW5nLm5ld19saW5lIGxleGJ1ZjsgdG9rZW4gbGV4YnVmKVxuIyAxMDE5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxODQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAoRU9GKVxuIyAxMDI0IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAxODUgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGNvbW1lbnQgbGV4YnVmKVxuIyAxMDI5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgX19vY2FtbF9sZXhfc3RhdGUgLT4gbGV4YnVmLkxleGluZy5yZWZpbGxfYnVmZiBsZXhidWY7XG4gICAgICBfX29jYW1sX2xleF9jb21tZW50X3JlYyBsZXhidWYgX19vY2FtbF9sZXhfc3RhdGVcblxuYW5kIGlubGluZV9jb21tZW50IGxleGJ1ZiA9XG4gICBfX29jYW1sX2xleF9pbmxpbmVfY29tbWVudF9yZWMgbGV4YnVmIDgzXG5hbmQgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZSA9XG4gIG1hdGNoIExleGluZy5lbmdpbmUgX19vY2FtbF9sZXhfdGFibGVzIF9fb2NhbWxfbGV4X3N0YXRlIGxleGJ1ZiB3aXRoXG4gICAgICB8IDAgLT5cbiMgMTg4IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgKExleGluZy5uZXdfbGluZSBsZXhidWY7IGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA0MSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IDEgLT5cbiMgMTg5IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxsXCJcbiAgICAgICAgICAgICAgICggKCkgKVxuIyAxMDQ2IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMiAtPlxuIyAxOTEgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGlnbm9yZSAocmVhZF9sYWJlbCBbXSBbJ1xcXCInXSBsZXhidWYpO1xuXHRcdFx0aW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDUyIFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgMyAtPlxuIyAxOTMgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZjsgaW5saW5lX2NvbW1lbnQgbGV4YnVmKVxuIyAxMDU3IFwiY29yZS9ncmFtbWFyL2thcHBhTGV4ZXIubWxcIlxuXG4gIHwgNCAtPlxuIyAxOTQgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbGxcIlxuICAgICAgICAgKGlubGluZV9jb21tZW50IGxleGJ1ZilcbiMgMTA2MiBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sXCJcblxuICB8IF9fb2NhbWxfbGV4X3N0YXRlIC0+IGxleGJ1Zi5MZXhpbmcucmVmaWxsX2J1ZmYgbGV4YnVmO1xuICAgICAgX19vY2FtbF9sZXhfaW5saW5lX2NvbW1lbnRfcmVjIGxleGJ1ZiBfX29jYW1sX2xleF9zdGF0ZVxuXG47O1xuXG4jIDE5NSBcImNvcmUvZ3JhbW1hci9rYXBwYUxleGVyLm1sbFwiXG4gXG4gIGxldCBjb21waWxlIGxvZ2dlciBjb21waWwgZmlsZSA9XG4gICAgbGV0IGQgPSBvcGVuX2luIGZpbGUgaW5cbiAgICBsZXQgbGV4YnVmID0gTGV4aW5nLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gbGV4YnVmLmxleF9jdXJyX3AgPC0ge2xleGJ1Zi5sZXhfY3Vycl9wIHdpdGggcG9zX2ZuYW1lID0gZmlsZX0gaW5cbiAgICBsZXQgY29tcGlsID0geyBjb21waWwgd2l0aCBBc3QuZmlsZW5hbWVzID0gZmlsZSA6OiBjb21waWwuQXN0LmZpbGVuYW1lcyB9IGluXG4gICAgdHJ5XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJQYXJzaW5nICVzLi4uQC5cIiBmaWxlIGluXG4gICAgICBsZXQgb3V0ID0gS2FwcGFQYXJzZXIuc3RhcnRfcnVsZSB0b2tlbiBsZXhidWYgY29tcGlsIGluXG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBsb2dnZXIgXCJkb25lQC5cIiBpblxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpbiBvdXRcbiAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtc2cscG9zKSAtPlxuICAgICAgbGV0ICgpID0gY2xvc2VfaW4gZCBpblxuICAgICAgbGV0ICgpID0gUHAuZXJyb3IgRm9ybWF0LnBwX3ByaW50X3N0cmluZyAobXNnLHBvcykgaW5cbiAgICAgIGV4aXQgM1xuXG4jIDEwODYgXCJjb3JlL2dyYW1tYXIva2FwcGFMZXhlci5tbFwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2F0YWxvZyA9IEtmaWxlcy5jcmVhdGUgKClcblxudHlwZSBfIGhhbmRsZSA9XG4gIHwgTm90aGluZyA6IHVuaXQgaGFuZGxlXG4gIHwgQ2F0YWxvZyA6IEtmaWxlcy5jYXRhbG9nX2l0ZW0gbGlzdCBoYW5kbGVcbiAgfCBJbmZvIDogKHN0cmluZyAqIGludCkgaGFuZGxlXG4gIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZVxuXG50eXBlIGJveCA9XG4gIHwgQiA6ICdhIGhhbmRsZSAqIGludCAqICgnYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IC0+IGJveFxuXG5sZXQgcmVwbHkgcG9zdCB3cml0ZV92IGlkIHYgPVxuICBsZXQgbWVzc2FnZSA9XG4gICAgSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlXG4gICAgICAoZnVuIGIgKCkgLT5cbiAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgaWQpO1xuICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgIFJlc3VsdF91dGlsLndyaXRlX3Qgd3JpdGVfdlxuICAgICAgICAgICAgICAgIChKc29uVXRpbC53cml0ZV9saXN0IFJlc3VsdF91dGlsLndyaXRlX21lc3NhZ2UpXG4gICAgICAgICAgICAgICAgYiB2KTtcbiAgICAgICAgICBdKVxuICAgICAgKClcbiAgaW5cbiAgcG9zdCBtZXNzYWdlXG5cbmxldCB3cml0ZV9jYXRhbG9nX2l0ZW1zID0gSnNvblV0aWwud3JpdGVfbGlzdCBLZmlsZXMud3JpdGVfY2F0YWxvZ19pdGVtXG5cbmxldCBsaWZ0X2Fuc3dlciA9IGZ1bmN0aW9uXG4gIHwgUmVzdWx0Lk9rIHggLT4gUmVzdWx0X3V0aWwub2sgeFxuICB8IFJlc3VsdC5FcnJvciB0ZXh0IC0+XG4gICAgUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgIFsgeyBSZXN1bHRfdXRpbC5yYW5nZSA9IE5vbmU7IHNldmVyaXR5ID0gTG9ncy5FcnJvcjsgdGV4dCB9IF1cblxubGV0IG9uX21lc3NhZ2UgeWllbGQgcG9zdCA9XG4gIGxldCBjdXJyZW50X2lkID0gcmVmIE5vbmUgaW5cbiAgZnVuIHRleHQgLT5cbiAgICB0cnlcbiAgICAgIEx3dC5iaW5kXG4gICAgICAgIChKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgICAgICAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCAoZnVuIHN0IGIgbXNnX2lkIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gY3VycmVudF9pZCA6PSBTb21lIG1zZ19pZCBpblxuICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyAoZnVuIHN0IGIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlQ2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBvdXQgPSBLZmlsZXMuY2F0YWxvZyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKENhdGFsb2csIG1zZ19pZCwgUmVzdWx0X3V0aWwub2sgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlQ3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBvc2l0aW9uID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9pbnQgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBLZmlsZXMuZmlsZV9jcmVhdGUgfnBvc2l0aW9uIH5pZCB+Y29udGVudCBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlR2V0XCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfZ2V0IH5pZCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKEluZm8sIG1zZ19pZCwgbGlmdF9hbnN3ZXIgb3V0KSlcbiAgICAgICAgICAgICAgICAgICAgIHwgXCJGaWxlTW92ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBwb3NpdGlvbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfaW50IHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfbW92ZSB+cG9zaXRpb24gfmlkIGNhdGFsb2cgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoTm90aGluZywgbXNnX2lkLCBsaWZ0X2Fuc3dlciBvdXQpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIkZpbGVVcGRhdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgc3QgYlxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3V0ID0gS2ZpbGVzLmZpbGVfcGF0Y2ggfmlkIGNvbnRlbnQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiRmlsZURlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBpZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgSnNvblV0aWwucmVhZF9uZXh0X2l0ZW0gWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHN0IGJcbiAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IG91dCA9IEtmaWxlcy5maWxlX2RlbGV0ZSB+aWQgY2F0YWxvZyBpblxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChCIChOb3RoaW5nLCBtc2dfaWQsIGxpZnRfYW5zd2VyIG91dCkpXG4gICAgICAgICAgICAgICAgICAgICB8IFwiUHJvamVjdFBhcnNlXCIgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgTHd0LmJpbmQgKEtmaWxlcy5wYXJzZSB5aWVsZCBjYXRhbG9nKSAoZnVuIG91dCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQiAoQXN0LCBtc2dfaWQsIG91dCkpKVxuICAgICAgICAgICAgICAgICAgICAgfCBcIlByb2plY3RPdmVyd3JpdGVcIiAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZyBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBzdCBiXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IEtmaWxlcy5vdmVyd3JpdGUgaWQgY29udGVudCBjYXRhbG9nIGluXG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEIgKE5vdGhpbmcsIG1zZ19pZCwgUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAoQlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICggTm90aGluZyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLmVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5zZXZlcml0eSA9IExvZ3MuRXJyb3I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZSA9IE5vbmU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJJbnZhbGlkIGRpcmVjdGl2ZTogXCIgXiB4O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gKSkpKVxuICAgICAgICAgICAgICAgICAgc3QgYikpXG4gICAgICAgICAgIHRleHQpXG4gICAgICAgIChmdW4gYW5zd2VyIC0+XG4gICAgICAgICAgbGV0ICgpID0gY3VycmVudF9pZCA6PSBOb25lIGluXG4gICAgICAgICAgbWF0Y2ggYW5zd2VyIHdpdGhcbiAgICAgICAgICB8IEIgKENhdGFsb2csIG1zZ19pZCwgeCkgLT4gcmVwbHkgcG9zdCB3cml0ZV9jYXRhbG9nX2l0ZW1zIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChOb3RoaW5nLCBtc2dfaWQsIHgpIC0+XG4gICAgICAgICAgICByZXBseSBwb3N0IFlvanNvbi5CYXNpYy53cml0ZV9udWxsIG1zZ19pZCB4XG4gICAgICAgICAgfCBCIChBc3QsIG1zZ19pZCwgeCkgLT4gcmVwbHkgcG9zdCBBc3Qud3JpdGVfcGFyc2luZ19jb21waWwgbXNnX2lkIHhcbiAgICAgICAgICB8IEIgKEluZm8sIG1zZ19pZCwgeCkgLT5cbiAgICAgICAgICAgIHJlcGx5IHBvc3RcbiAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nXG4gICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9pbnQpXG4gICAgICAgICAgICAgIG1zZ19pZCB4KVxuICAgIHdpdGggZSAtPlxuICAgICAgKG1hdGNoICFjdXJyZW50X2lkIHdpdGhcbiAgICAgIHwgU29tZSBtc2dfaWQgLT5cbiAgICAgICAgcmVwbHkgcG9zdCBZb2pzb24uQmFzaWMud3JpdGVfbnVsbCBtc2dfaWRcbiAgICAgICAgICAoUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5FcnJvcjtcbiAgICAgICAgICAgICAgICAgcmFuZ2UgPSBOb25lO1xuICAgICAgICAgICAgICAgICB0ZXh0ID0gXCJFeGNlcHRpb24gcmFpc2VkOiBcIiBeIFByaW50ZXhjLnRvX3N0cmluZyBlO1xuICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICBdKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgICAgfCBZb2pzb24uSnNvbl9lcnJvciB4IC0+XG4gICAgICAgICAgcG9zdFxuICAgICAgICAgICAgKFlvanNvbi50b19zdHJpbmdcbiAgICAgICAgICAgICAgIChgU3RyaW5nXG4gICAgICAgICAgICAgICAgICh4IF4gXCJcXG5NZXNzYWdlIGZvcm1hdCBtdXN0IGJlIFsgaWQsIFtcXFwiUmVxdWVzdFxcXCIsIC4uLiBdIF1cIikpKVxuICAgICAgICB8IGUgLT5cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBTdHJpbmdcbiAgICAgICAgICAgICAgICAgKFwidW5leHBlY3RlZCBleGNlcHRpb246IFwiIF4gUHJpbnRleGMudG9fc3RyaW5nIGVcbiAgICAgICAgICAgICAgICBeIFwiXFxuTWVzc2FnZSBmb3JtYXQgbXVzdCBiZSBbIGlkLCBbXFxcIlJlcXVlc3RcXFwiLCAuLi4gXSBdXCIpKSkpKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBBc3RcblxubGV0IHJlYyBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiAoYWxnLCBwb3MpID1cbiAgbWF0Y2ggYWxnIHdpdGhcbiAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBhc3QgLT5cbiAgICAobWF0Y2ggZG9tYWluIHdpdGhcbiAgICB8IFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikgLT5cbiAgICAgIGxldCBkb21haW4nLCBjY3MgPVxuICAgICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZVxuICAgICAgICAgIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluID9vcmlnaW4gYXN0XG4gICAgICBpblxuICAgICAgbGV0IG91dF9jY3MgPSBMaXN0Lm1hcCAoZnVuICh4LCBfKSAtPiBBcnJheS5tYXAgZnN0IHgpIGNjcyBpblxuICAgICAgU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluJyksIChBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBvdXRfY2NzLCBwb3MpXG4gICAgfCBOb25lIC0+XG4gICAgICByYWlzZVxuICAgICAgICAoRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvclxuICAgICAgICAgICAoXCJUaGVvcml0aWNhbGx5IHB1cmUgYWxnX2V4cHIgaGFzIGEgbWl4dHVyZVwiLCBwb3MpKSlcbiAgfCBBbGdfZXhwci5BTEdfVkFSIGkgLT4gZG9tYWluLCAoQWxnX2V4cHIuQUxHX1ZBUiBpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVE9LRU5fSUQgaSAtPiBkb21haW4sIChBbGdfZXhwci5UT0tFTl9JRCBpLCBwb3MpXG4gIHwgQWxnX2V4cHIuU1RBVEVfQUxHX09QIG9wIC0+IGRvbWFpbiwgKEFsZ19leHByLlNUQVRFX0FMR19PUCBvcCwgcG9zKVxuICB8IEFsZ19leHByLkNPTlNUIG4gLT4gZG9tYWluLCAoQWxnX2V4cHIuQ09OU1QgbiwgcG9zKVxuICB8IEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhLCBiKSAtPlxuICAgIGxldCBkb21haW4nLCBhJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBsZXQgZG9tYWluJycsIGInID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkJJTl9BTEdfT1AgKG9wLCBhJywgYicpLCBwb3MpXG4gIHwgQWxnX2V4cHIuVU5fQUxHX09QIChvcCwgYSkgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbiBhIGluXG4gICAgZG9tYWluJywgKEFsZ19leHByLlVOX0FMR19PUCAob3AsIGEnKSwgcG9zKVxuICB8IEFsZ19leHByLklGIChjb25kLCB5ZXMsIG5vKSAtPlxuICAgIGxldCBkb21haW4nLCBjb25kJyA9XG4gICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gY29uZFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicnLCB5ZXMnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIHllcyBpblxuICAgIGxldCBkb21haW4nJycsIG5vJyA9IGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluJycgbm8gaW5cbiAgICBkb21haW4nJycsIChBbGdfZXhwci5JRiAoY29uZCcsIHllcycsIG5vJyksIHBvcylcbiAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gfCBBbGdfZXhwci5ESUZGX1RPS0VOIF8gLT5cbiAgICByYWlzZVxuICAgICAgKEV4Y2VwdGlvbkRlZm4uSW50ZXJuYWxfRXJyb3JcbiAgICAgICAgIChcIkNhbm5vdCBkZWFsIHdpdGggZGVyaXZhdGl2ZSBpbiBleHByZXNzaW9uc1wiLCBwb3MpKVxuXG5hbmQgY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluID0gZnVuY3Rpb25cbiAgfCBBbGdfZXhwci5UUlVFLCBwb3MgLT4gZG9tYWluLCAoQWxnX2V4cHIuVFJVRSwgcG9zKVxuICB8IEFsZ19leHByLkZBTFNFLCBwb3MgLT4gZG9tYWluLCAoQWxnX2V4cHIuRkFMU0UsIHBvcylcbiAgfCBBbGdfZXhwci5CSU5fQk9PTF9PUCAob3AsIGEsIGIpLCBwb3MgLT5cbiAgICBsZXQgZG9tYWluJywgYScgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4nIGIgaW5cbiAgICBkb21haW4nJywgKEFsZ19leHByLkJJTl9CT09MX09QIChvcCwgYScsIGInKSwgcG9zKVxuICB8IEFsZ19leHByLlVOX0JPT0xfT1AgKG9wLCBhKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9ib29sIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gZG9tYWluIGEgaW5cbiAgICBkb21haW4nLCAoQWxnX2V4cHIuVU5fQk9PTF9PUCAob3AsIGEnKSwgcG9zKVxuICB8IEFsZ19leHByLkNPTVBBUkVfT1AgKG9wLCBhLCBiKSwgcG9zIC0+XG4gICAgbGV0IGRvbWFpbicsIGEnID0gY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkb21haW4gYSBpblxuICAgIGxldCBkb21haW4nJywgYicgPSBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGRvbWFpbicgYiBpblxuICAgIGRvbWFpbicnLCAoQWxnX2V4cHIuQ09NUEFSRV9PUCAob3AsIGEnLCBiJyksIHBvcylcblxubGV0IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiAoYWxnLCBwb3MpID1cbiAgc25kIEBAIGNvbXBpbGVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gTm9uZSAoYWxnLCBwb3MpXG5cbmxldCBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uID9vcmlnaW4gY29udGFjdF9tYXAgZG9tYWluXG4gICAgKGFsZywgcG9zKSA9XG4gIG1hdGNoXG4gICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgKFNvbWUgKG9yaWdpbiwgY29udGFjdF9tYXAsIGRvbWFpbikpXG4gICAgICAoYWxnLCBwb3MpXG4gIHdpdGhcbiAgfCBTb21lIChfLCBfLCBkb21haW4pLCBhbGcgLT4gZG9tYWluLCBhbGdcbiAgfCBOb25lLCBfIC0+IGZhaWx3aXRoIFwiZG9tYWluIGhhcyBiZWVuIGxvc3QgaW4gRXhwci5jb21waWxlX2FsZ1wiXG5cbmxldCBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiA/b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgIChhbGcsIHBvcykgPVxuICBtYXRjaFxuICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAoU29tZSAob3JpZ2luLCBjb250YWN0X21hcCwgZG9tYWluKSlcbiAgICAgIChhbGcsIHBvcylcbiAgd2l0aFxuICB8IFNvbWUgKF8sIF8sIGRvbWFpbiksIGFsZyAtPiBkb21haW4sIGFsZ1xuICB8IE5vbmUsIF8gLT4gZmFpbHdpdGggXCJkb21haW4gaGFzIGJlZW4gbG9zdCBpbiBFeHByLmNvbXBpbGVfYWxnXCJcblxubGV0IHRva2VuaWZ5IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIGwgPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIChhbGdfZXhwciwgaWQpIChkb21haW4sIG91dCkgLT5cbiAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgICAgaW5cbiAgICAgIGRvbWFpbicsIChhbGcsIGlkKSA6OiBvdXQpXG4gICAgbCAoZG9tYWluLCBbXSlcblxuKCogdHJhbnNmb3JtIGFuIExLYXBwYSBydWxlIGludG8gYSBQcmltaXRpdmVzIHJ1bGUgKilcbmxldCBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgP2RlcHNfbWFjaGluZXJ5IH5jb21waWxlX21vZGVfb25cbiAgICBjb250YWN0X21hcCBkb21haW4gfnN5bnRheF9yZWYgKHJ1bGUsIF8pID1cbiAgbGV0IGRvbWFpbicsIGRlbHRhX3Rva3MgPVxuICAgIHRva2VuaWZ5IH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluXG4gICAgICBydWxlLkxLYXBwYS5yX2RlbHRhX3Rva2Vuc1xuICBpblxuICAoKiBsZXQgb25lX3NpZGUgc3ludGF4X3JlZiBsYWJlbCAoZG9tYWluLGRlcHNfbWFjaGluZXJ5LHVuYXJ5X2NjcyxhY2MpXG4gICAgICAgcmF0ZSB1bmFyeV9yYXRlIGxocyByaHMgcm0gYWRkID0qKVxuICBsZXQgb3JpZ2luLCBkZXBzID1cbiAgICBtYXRjaCBkZXBzX21hY2hpbmVyeSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgKG8sIGQpIC0+IFNvbWUgbywgU29tZSBkXG4gIGluXG4gIGxldCB1bmFyeV9pbmZvcyA9XG4gICAgbGV0IGNycCA9XG4gICAgICBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gcnVsZS5MS2FwcGEucl9yYXRlXG4gICAgaW5cbiAgICBtYXRjaCBydWxlLkxLYXBwYS5yX3VuX3JhdGUgd2l0aFxuICAgIHwgTm9uZSAtPiBmdW4gXyAtPiBjcnAsIE5vbmVcbiAgICB8IFNvbWUgKCgoXywgcG9zKSBhcyByYXRlKSwgZGlzdCkgLT5cbiAgICAgIGxldCBkaXN0JyA9XG4gICAgICAgIG1hdGNoIGRpc3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgZCAtPlxuICAgICAgICAgIGxldCBkJywgXyA9IGNvbXBpbGVfcHVyZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBkIGluXG4gICAgICAgICAgU29tZSBkJ1xuICAgICAgaW5cbiAgICAgIGxldCB1bnJhdGUgPSBjb21waWxlX3B1cmVfYWxnIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gcmF0ZSBpblxuICAgICAgZnVuIGNjcyAtPlxuICAgICAgICAobWF0Y2ggQXJyYXkubGVuZ3RoIGNjcyB3aXRoXG4gICAgICAgIHwgMCB8IDEgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgd2FybmluZyB+cG9zIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF90ZXh0IGZcbiAgICAgICAgICAgICAgICAgIFwiVXNlbGVzcyBtb2xlY3VsYXIgYW1iaWd1aXR5LCB0aGUgcnVsZXMgaXMgYWx3YXlzIGNvbnNpZGVyZWQgXFxcbiAgICAgICAgICAgICAgICAgICBhcyB1bmFyeS5cIilcbiAgICAgICAgICBpblxuICAgICAgICAgIHVucmF0ZSwgTm9uZVxuICAgICAgICB8IDIgLT4gY3JwLCBTb21lICh1bnJhdGUsIGRpc3QnKVxuICAgICAgICB8IG4gLT5cbiAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICggXCJVbmFyeSBydWxlIGRvZXMgbm90IGRlYWwgd2l0aCBcIiBeIHN0cmluZ19vZl9pbnQgblxuICAgICAgICAgICAgICAgICBeIFwiIGNvbm5lY3RlZCBjb21wb25lbnRzLlwiLFxuICAgICAgICAgICAgICAgICBwb3MgKSkpXG4gIGluXG4gIGxldCBidWlsZCBkZXBzIChvcmlnaW4sIGNjcywgc3ludGF4LCAobmVnLCBwb3MpKSA9XG4gICAgbGV0IGNjcycgPSBBcnJheS5tYXAgZnN0IGNjcyBpblxuICAgIGxldCByYXRlLCB1bnJhdGUgPSB1bmFyeV9pbmZvcyBjY3MnIGluXG4gICAgKCBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICBtYXRjaCBvcmlnaW4gd2l0aFxuICAgICAgICAgICAgfCBTb21lIG8gLT4gb1xuICAgICAgICAgICAgfCBOb25lIC0+IGZhaWx3aXRoIFwidWdseSBFdmFsLnJ1bGVfb2ZfYXN0XCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB4JyA9XG4gICAgICAgICAgICBtYXRjaCB1bnJhdGUgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IHhcbiAgICAgICAgICAgIHwgU29tZSAodXIsIF8pIC0+IEFsZ19leHByLmFkZF9kZXAgeCBvcmlnaW4gdXJcbiAgICAgICAgICBpblxuICAgICAgICAgIEFsZ19leHByLmFkZF9kZXAgeCcgb3JpZ2luIHJhdGUpXG4gICAgICAgIGRlcHMsXG4gICAgICB7XG4gICAgICAgIFByaW1pdGl2ZXMudW5hcnlfcmF0ZSA9IHVucmF0ZTtcbiAgICAgICAgUHJpbWl0aXZlcy5yYXRlO1xuICAgICAgICBQcmltaXRpdmVzLmNvbm5lY3RlZF9jb21wb25lbnRzID0gY2NzJztcbiAgICAgICAgUHJpbWl0aXZlcy5yZW1vdmVkID0gbmVnO1xuICAgICAgICBQcmltaXRpdmVzLmluc2VydGVkID0gcG9zO1xuICAgICAgICBQcmltaXRpdmVzLmRlbHRhX3Rva2VucyA9IGRlbHRhX3Rva3M7XG4gICAgICAgIFByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUgPSBzeW50YXhfcmVmO1xuICAgICAgICBQcmltaXRpdmVzLmluc3RhbnRpYXRpb25zID0gc3ludGF4O1xuICAgICAgfSApXG4gIGluXG4gIGxldCBydWxlX21peHR1cmVzLCAoZG9tYWluJywgb3JpZ2luJykgPVxuICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19ydWxlIH5kZWJ1Z19tb2RlXG4gICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgP29yaWdpbiBydWxlLkxLYXBwYS5yX21peFxuICAgICAgcnVsZS5MS2FwcGEucl9jcmVhdGVkXG4gIGluXG4gIGxldCBkZXBzX2FsZ3MnLCBydWxlc19sID1cbiAgICBMaXN0LmZvbGRfcmlnaHRcbiAgICAgIChmdW4gciAoZGVwc19hbGdzLCBvdXQpIC0+XG4gICAgICAgIGxldCBkZXBzX2FsZ3MnLCByJycgPSBidWlsZCBkZXBzX2FsZ3MgciBpblxuICAgICAgICBkZXBzX2FsZ3MnLCByJycgOjogb3V0KVxuICAgICAgcnVsZV9taXh0dXJlcyAoZGVwcywgW10pXG4gIGluXG4gICggZG9tYWluJyxcbiAgICAobWF0Y2ggb3JpZ2luJyB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgbyAtPlxuICAgICAgU29tZVxuICAgICAgICAoIG8sXG4gICAgICAgICAgbWF0Y2ggZGVwc19hbGdzJyB3aXRoXG4gICAgICAgICAgfCBTb21lIGQgLT4gZFxuICAgICAgICAgIHwgTm9uZSAtPiBmYWlsd2l0aCBcInVnbHkgRXZhbC5ydWxlX29mX2FzdFwiICkpLFxuICAgIHJ1bGVzX2wgKVxuXG5sZXQgb2JzX29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZGVwcyByZXMgPVxuICBsZXQgZG9tYWluLCBvdXQgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIChkb21haW4sIGNvbnQpIGFsZ19leHByIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBhbGdfcG9zID1cbiAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBhbGdfcG9zIDo6IGNvbnQpXG4gICAgICAoZG9tYWluLCBbXSkgcmVzLm9ic2VydmFibGVzXG4gIGluXG4gIGlmIExpc3QuZXhpc3RzIChBbGdfZXhwci5oYXNfcHJvZ3Jlc3NfZGVwIH5vbmx5X3RpbWU6ZmFsc2UgYWxnX2RlcHMpIG91dCB0aGVuXG4gICAgZG9tYWluLCBMaXN0LnJldiBvdXRcbiAgZWxzZVxuICAgICggZG9tYWluLFxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUilcbiAgICAgIDo6IExpc3QucmV2IG91dCApXG5cbmxldCBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gZXggPVxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIGVsIChkb21haW4sIG91dCkgLT5cbiAgICAgIG1hdGNoIGVsIHdpdGhcbiAgICAgIHwgUHJpbWl0aXZlcy5TdHJfcGV4cHIgcyAtPiBkb21haW4sIFByaW1pdGl2ZXMuU3RyX3BleHByIHMgOjogb3V0XG4gICAgICB8IFByaW1pdGl2ZXMuQWxnX3BleHByIGFzdF9hbGcgLT5cbiAgICAgICAgbGV0IGRvbWFpbicsIGFsZyA9XG4gICAgICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYXN0X2FsZ1xuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBQcmltaXRpdmVzLkFsZ19wZXhwciBhbGcgOjogb3V0KVxuICAgIGV4IChkb21haW4sIFtdKVxuXG5sZXQgY2Zsb3dzX29mX2xhYmVsIH5kZWJ1Z19tb2RlIG9yaWdpbiB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBvblxuICAgIGFsZ3MgcnVsZXMgKGxhYmVsLCBwb3MpIHJldl9lZmZlY3RzID1cbiAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICBpZiBvbiB0aGVuXG4gICAgICBQcmltaXRpdmVzLkNGTE9XIChTb21lIGxhYmVsLCB4LCB0ZXN0cykgOjogbFxuICAgIGVsc2VcbiAgICAgIFByaW1pdGl2ZXMuQ0ZMT1dPRkYgKFNvbWUgbGFiZWwsIHgpIDo6IGxcbiAgaW5cbiAgbGV0IG1peCA9XG4gICAgdHJ5XG4gICAgICBsZXQgXywgKHJ1bGUsIF8pID1cbiAgICAgICAgTGlzdC5maW5kXG4gICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUsIF8gLT4gZmFsc2VcbiAgICAgICAgICAgIHwgU29tZSAobCwgXyksIF8gLT4gbCA9IGxhYmVsKVxuICAgICAgICAgIHJ1bGVzXG4gICAgICBpblxuICAgICAgTEthcHBhLnRvX21haW50YWluZWQgcnVsZS5MS2FwcGEucl9taXhcbiAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgKHRyeVxuICAgICAgICAgbGV0IF8sICh2YXIsIF8pID0gTGlzdC5maW5kIChmdW4gKChsLCBfKSwgXykgLT4gbCA9IGxhYmVsKSBhbGdzIGluXG4gICAgICAgICBtYXRjaCB2YXIgd2l0aFxuICAgICAgICAgfCBBbGdfZXhwci5LQVBQQV9JTlNUQU5DRSBtaXggLT4gbWl4XG4gICAgICAgICB8IEFsZ19leHByLkJJTl9BTEdfT1AgXyB8IEFsZ19leHByLlVOX0FMR19PUCBfXG4gICAgICAgICB8IEFsZ19leHByLlNUQVRFX0FMR19PUCBfIHwgQWxnX2V4cHIuQUxHX1ZBUiBfIHwgQWxnX2V4cHIuVE9LRU5fSUQgX1xuICAgICAgICAgfCBBbGdfZXhwci5DT05TVCBfIHwgQWxnX2V4cHIuSUYgXyB8IEFsZ19leHByLkRJRkZfVE9LRU4gX1xuICAgICAgICAgfCBBbGdfZXhwci5ESUZGX0tBUFBBX0lOU1RBTkNFIF8gLT5cbiAgICAgICAgICAgcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlXG4gICAgICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgICAgICggXCJMYWJlbCAnXCIgXiBsYWJlbFxuICAgICAgICAgICAgICAgIF4gXCInIGRvZXMgbm90IHJlZmVyIHRvIGEgbm9uIGFtYmlndW91cyBLYXBwYSBleHByZXNzaW9uXCIsXG4gICAgICAgICAgICAgICAgcG9zICkpKVxuICBpblxuICBsZXQgZG9tYWluJywgY2NzID1cbiAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gfm9yaWdpbiBtaXhcbiAgaW5cbiAgKCBkb21haW4nLFxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4geCAoeSwgdCkgLT4gYWRkcyB0IHggKEFycmF5Lm1hcCBmc3QgeSkpIHJldl9lZmZlY3RzIGNjc1xuICApXG5cbmxldCBlZmZlY3RzX29mX21vZGlmIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIChkb21haW4sIHJldl9lZmZlY3RzKSA9IGZ1bmN0aW9uXG4gIHwgQVBQTFkgKGFsZ19leHByLCAoKF8sIHBvcykgYXMgcGFjaykpIC0+XG4gICAgbGV0IGRvbWFpbicsIGFsZ19wb3MgPVxuICAgICAgY29tcGlsZV9hbGcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gYWxnX2V4cHJcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgXywgZWxlbV9ydWxlcyA9XG4gICAgICBydWxlc19vZl9hc3QgfmRlYnVnX21vZGUgfndhcm5pbmcgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4nXG4gICAgICAgIH5zeW50YXhfcmVmOjAgcGFja1xuICAgIGluXG4gICAgbGV0IGVsZW1fcnVsZSA9XG4gICAgICBtYXRjaCBlbGVtX3J1bGVzIHdpdGhcbiAgICAgIHwgWyByIF0gLT4gclxuICAgICAgfCBfIC0+XG4gICAgICAgIHJhaXNlXG4gICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAoXCJBbWJpZ3VvdXMgcnVsZSBpbiBtb2RpZml0aW9uIGlzIGltcG9zc2libGVcIiwgcG9zKSlcbiAgICBpblxuICAgIGRvbWFpbicnLCBQcmltaXRpdmVzLklURVJfUlVMRSAoYWxnX3BvcywgZWxlbV9ydWxlKSA6OiByZXZfZWZmZWN0c1xuICB8IFVQREFURSAoKGksIF8pLCBhbGdfZXhwcikgLT5cbiAgICBsZXQgZG9tYWluJywgYWxnX3BvcyA9XG4gICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBhbGdfZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5VUERBVEUgKGksIGFsZ19wb3MpIDo6IHJldl9lZmZlY3RzXG4gIHwgU05BUFNIT1QgKHJhdywgcGV4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgICgqd2hlbiBzcGVjaWFsaXppbmcgc25hcHNob3RzIHRvIHBhcnRpY3VsYXIgbWl4dHVyZXMsIGFkZCB2YXJpYWJsZXMgYmVsb3cqKVxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuU05BUFNIT1QgKHJhdywgcGV4cHInKSA6OiByZXZfZWZmZWN0c1xuICB8IFNUT1AgcGV4cHIgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5TVE9QIHBleHByJyA6OiByZXZfZWZmZWN0c1xuICB8IENGTE9XTEFCRUwgKG9uLCBsYWIpIC0+XG4gICAgY2Zsb3dzX29mX2xhYmVsIH5kZWJ1Z19tb2RlIG9yaWdpbiB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBvblxuICAgICAgYXN0X2FsZ3MgYXN0X3J1bGVzIGxhYiByZXZfZWZmZWN0c1xuICB8IENGTE9XTUlYIChvbiwgKGFzdCwgXykpIC0+XG4gICAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICAgIGlmIG9uIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5DRkxPVyAoTm9uZSwgeCwgdGVzdHMpIDo6IGxcbiAgICAgIGVsc2VcbiAgICAgICAgUHJpbWl0aXZlcy5DRkxPV09GRiAoTm9uZSwgeCkgOjogbFxuICAgIGluXG4gICAgbGV0IGRvbWFpbicsIGNjcyA9XG4gICAgICBQYXR0ZXJuX2NvbXBpbGVyLmNvbm5lY3RlZF9jb21wb25lbnRzX3N1bV9vZl9hbWJpZ3VvdXNfbWl4dHVyZSB+ZGVidWdfbW9kZVxuICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiB+b3JpZ2luIGFzdFxuICAgIGluXG4gICAgKCBkb21haW4nLFxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSlcbiAgICAgICAgcmV2X2VmZmVjdHMgY2NzIClcbiAgfCBESU4gKHJlbCwgcGV4cHIpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGRvbWFpbicsIFByaW1pdGl2ZXMuRElOIChyZWwsIHBleHByJykgOjogcmV2X2VmZmVjdHNcbiAgfCBESU5PRkYgcGV4cHIgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgZG9tYWluJywgUHJpbWl0aXZlcy5ESU5PRkYgcGV4cHInIDo6IHJldl9lZmZlY3RzXG4gIHwgQXN0LlBSSU5UIChwZXhwciwgcHJpbnQpIC0+XG4gICAgbGV0IGRvbWFpbicsIHBleHByJyA9XG4gICAgICBjb21waWxlX3ByaW50X2V4cHIgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBkb21haW4gcGV4cHJcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgcHJpbnQnID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgcHJpbnRcbiAgICBpblxuICAgIGRvbWFpbicnLCBQcmltaXRpdmVzLlBSSU5UIChwZXhwcicsIHByaW50JykgOjogcmV2X2VmZmVjdHNcbiAgfCBQTE9URU5UUlkgLT4gZG9tYWluLCBQcmltaXRpdmVzLlBMT1RFTlRSWSA6OiByZXZfZWZmZWN0c1xuICB8IFNQRUNJRVNfT0YgKG9uLCBwZXhwciwgKGFzdCwgcG9zKSkgLT5cbiAgICBsZXQgZG9tYWluJywgcGV4cHInID1cbiAgICAgIGNvbXBpbGVfcHJpbnRfZXhwciB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBwZXhwclxuICAgIGluXG4gICAgbGV0IGFkZHMgdGVzdHMgbCB4ID1cbiAgICAgIGlmIG9uIHRoZW5cbiAgICAgICAgUHJpbWl0aXZlcy5TUEVDSUVTIChwZXhwcicsIHgsIHRlc3RzKSA6OiBsXG4gICAgICBlbHNlXG4gICAgICAgIFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgcGV4cHInIDo6IGxcbiAgICBpblxuICAgIGxldCBkb21haW4nJywgY2NzID1cbiAgICAgIFBhdHRlcm5fY29tcGlsZXIuY29ubmVjdGVkX2NvbXBvbmVudHNfc3VtX29mX2FtYmlndW91c19taXh0dXJlIH5kZWJ1Z19tb2RlXG4gICAgICAgIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluJyB+b3JpZ2luIGFzdFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChhcnIsIF8pIC0+XG4gICAgICAgICAgaWYgQXJyYXkubGVuZ3RoIGFyciA+IDEgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIlNQRUNJRVNfT0YgY2FuIG9ubHkgYmUgYXBwbGllZCB0byBvbmUgY29ubmVjdGVkIGNvbXBvbmVudFwiLFxuICAgICAgICAgICAgICAgICAgIHBvcyApKSlcbiAgICAgICAgY2NzXG4gICAgaW5cbiAgICAoIGRvbWFpbicnLFxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biB4ICh5LCB0KSAtPiBhZGRzIHQgeCAoQXJyYXkubWFwIGZzdCB5KSlcbiAgICAgICAgcmV2X2VmZmVjdHMgY2NzIClcblxubGV0IGVmZmVjdHNfb2ZfbW9kaWZzIH5kZWJ1Z19tb2RlIH53YXJuaW5nIGFzdF9hbGdzIGFzdF9ydWxlcyBvcmlnaW5cbiAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiBsID1cbiAgbGV0IGRvbWFpbicsIHJldl9lZmZlY3RzID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGVmZmVjdHNfb2ZfbW9kaWYgfmRlYnVnX21vZGUgfndhcm5pbmcgYXN0X2FsZ3MgYXN0X3J1bGVzIG9yaWdpblxuICAgICAgICAgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcClcbiAgICAgIChkb21haW4sIFtdKSBsXG4gIGluXG4gIGRvbWFpbicsIExpc3QucmV2IHJldl9lZmZlY3RzXG5cbmxldCBjb21waWxlX21vZGlmaWNhdGlvbnNfbm9fdHJhY2sgPVxuICBlZmZlY3RzX29mX21vZGlmcyBbXSBbXSAoT3BlcmF0b3IuTU9ESUYgKC0xKSlcblxuKCogaW50ZXJ2ZW50aW9ucyB3aXRob3V0IHByZSBhbmQgcG9zdCwgYnV0IHdpdGggYWxhcm0gYXJlIG5vdCBhcHBsaWVkXG4gICBhdCBpbml0aWFsaXNhdGlvbiAqKVxubGV0IHBlcnRfbm90X2luaXQgb3ZlcndyaXRlX3QwIHggeSB6ID1cbiAgbWF0Y2ggeCwgeSwgeiB3aXRoXG4gIHwgXywgU29tZSBwLCBfIC0+IHBcbiAgfCBTb21lIF8sIE5vbmUsIE5vbmUgLT5cbiAgICBsZXQgdF92YXIgPVxuICAgICAgTG9jLmFubm90X3dpdGhfZHVtbXkgKEFsZ19leHByLlNUQVRFX0FMR19PUCBPcGVyYXRvci5USU1FX1ZBUilcbiAgICBpblxuICAgIGxldCB0MCA9IE9wdGlvbl91dGlsLmZvbGQgKGZ1biBfIHggLT4gTmJyLkYgeCkgTmJyLnplcm8gb3ZlcndyaXRlX3QwIGluXG4gICAgbGV0IGluaXRfdCA9IExvYy5hbm5vdF93aXRoX2R1bW15IChBbGdfZXhwci5DT05TVCB0MCkgaW5cbiAgICBMb2MuYW5ub3Rfd2l0aF9kdW1teSAoQWxnX2V4cHIuQ09NUEFSRV9PUCAoT3BlcmF0b3IuR1JFQVRFUiwgdF92YXIsIGluaXRfdCkpXG4gIHwgTm9uZSwgTm9uZSwgTm9uZSB8IFNvbWUgXywgTm9uZSwgU29tZSBfIHwgTm9uZSwgTm9uZSwgU29tZSBfIC0+XG4gICAgTG9jLmFubm90X3dpdGhfZHVtbXkgQWxnX2V4cHIuVFJVRVxuXG5sZXQgcGVydF9vZl9yZXN1bHQgfmRlYnVnX21vZGUgfndhcm5pbmcgP292ZXJ3cml0ZV90MCBhc3RfYWxncyBhc3RfcnVsZXNcbiAgICBhbGdfZGVwcyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbiByZXMgPVxuICBsZXQgZG9tYWluLCBvdXRfYWxnX2RlcHMsIF8sIGxwZXJ0LCB0cmFja2luZ19lbmFibGVkID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAoZG9tYWluLCBhbGdfZGVwcywgcF9pZCwgbHBlcnQsIHRyYWNraW5nX2VuYWJsZWQpXG4gICAgICAgICAgICgoYWxhcm0sIHByZV9leHByLCBtb2RpZl9leHByX2xpc3QsIG9wdF9wb3N0KSwgcG9zKSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGFsYXJtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgbiAtPlxuICAgICAgICAgICAgaWYgTmJyLmNvbXBhcmUgbiBOYnIuemVybyA8PSAwIHRoZW5cbiAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAoRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbFxuICAgICAgICAgICAgICAgICAgIChcImFsYXJtIGhhcyB0byBiZSBzdHJpY3RseSBncmVhdGVyIHRoYW4gMC4wXCIsIHBvcykpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICgpXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBvcmlnaW4gPSBPcGVyYXRvci5NT0RJRiBwX2lkIGluXG4gICAgICAgIGxldCBwcmVfZXhwcicgPSBwZXJ0X25vdF9pbml0IG92ZXJ3cml0ZV90MCBhbGFybSBwcmVfZXhwciBvcHRfcG9zdCBpblxuICAgICAgICBsZXQgZG9tYWluJywgcHJlID1cbiAgICAgICAgICBjb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiB+b3JpZ2luIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgICAgICAgcHJlX2V4cHInXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhbGdfZGVwcycgPVxuICAgICAgICAgIG1hdGNoIGFsYXJtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgXyAtPiBhbGdfZGVwc1xuICAgICAgICAgIHwgTm9uZSAtPiBBbGdfZXhwci5hZGRfZGVwX2Jvb2wgYWxnX2RlcHMgb3JpZ2luIHByZVxuICAgICAgICBpblxuICAgICAgICBsZXQgZG9tYWluLCBlZmZlY3RzID1cbiAgICAgICAgICBlZmZlY3RzX29mX21vZGlmcyB+ZGVidWdfbW9kZSB+d2FybmluZyBhc3RfYWxncyBhc3RfcnVsZXMgb3JpZ2luXG4gICAgICAgICAgICB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpbicgbW9kaWZfZXhwcl9saXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBkb21haW4sIG9wdCA9XG4gICAgICAgICAgbWF0Y2ggb3B0X3Bvc3Qgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBkb21haW4sIE5vbmVcbiAgICAgICAgICB8IFNvbWUgcG9zdF9leHByIC0+XG4gICAgICAgICAgICBsZXQgZG9tYWluJywgKHBvc3QsIHBvc3RfcG9zKSA9XG4gICAgICAgICAgICAgIGNvbXBpbGVfYm9vbCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIGRvbWFpblxuICAgICAgICAgICAgICAgIHBvc3RfZXhwclxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGRvbWFpbicsIFNvbWUgKHBvc3QsIHBvc3RfcG9zKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFzX3RyYWNraW5nID1cbiAgICAgICAgICB0cmFja2luZ19lbmFibGVkXG4gICAgICAgICAgfHwgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfIC0+IHRydWVcbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLkNGTE9XT0ZGIF8gfCBQcmltaXRpdmVzLlBSSU5UIF9cbiAgICAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlVQREFURSBfIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfXG4gICAgICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5ESU4gXyB8IFByaW1pdGl2ZXMuRElOT0ZGIF8gfCBQcmltaXRpdmVzLlBMT1RFTlRSWVxuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1RPUCBfIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgX1xuICAgICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgICAgZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgbmVlZHNfYmFja3RyYWNrID1cbiAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5VUERBVEUgXyB8IFByaW1pdGl2ZXMuU1RPUCBfIHwgUHJpbWl0aXZlcy5JVEVSX1JVTEUgX1xuICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICAgICB8IFByaW1pdGl2ZXMuQ0ZMT1cgXyB8IFByaW1pdGl2ZXMuU1BFQ0lFUyBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5DRkxPV09GRiBfIHwgUHJpbWl0aXZlcy5QUklOVCBfXG4gICAgICAgICAgICAgIHwgUHJpbWl0aXZlcy5TTkFQU0hPVCBfIHwgUHJpbWl0aXZlcy5ESU4gXyB8IFByaW1pdGl2ZXMuRElOT0ZGIF9cbiAgICAgICAgICAgICAgfCBQcmltaXRpdmVzLlBMT1RFTlRSWSB8IFByaW1pdGl2ZXMuU1BFQ0lFU19PRkYgXyAtPlxuICAgICAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICAgICAgZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgcmVwZWF0ID1cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBMb2MuYW5ub3Rfd2l0aF9kdW1teSBBbGdfZXhwci5GQUxTRVxuICAgICAgICAgIHwgU29tZSBwIC0+IHBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHBlcnQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMuYWxhcm07XG4gICAgICAgICAgICBQcmltaXRpdmVzLnByZWNvbmRpdGlvbiA9IHByZTtcbiAgICAgICAgICAgIFByaW1pdGl2ZXMuZWZmZWN0ID0gZWZmZWN0cztcbiAgICAgICAgICAgIFByaW1pdGl2ZXMucmVwZWF0O1xuICAgICAgICAgICAgUHJpbWl0aXZlcy5uZWVkc19iYWNrdHJhY2s7XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBkb21haW4sIGFsZ19kZXBzJywgc3VjYyBwX2lkLCBwZXJ0IDo6IGxwZXJ0LCBoYXNfdHJhY2tpbmcpXG4gICAgICAoZG9tYWluLCBhbGdfZGVwcywgMCwgW10sIGZhbHNlKVxuICAgICAgcmVzLnBlcnR1cmJhdGlvbnNcbiAgaW5cbiAgZG9tYWluLCBvdXRfYWxnX2RlcHMsIExpc3QucmV2IGxwZXJ0LCB0cmFja2luZ19lbmFibGVkXG5cbmxldCBjb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlIH53YXJuaW5nID9yZXNjYWxlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZW52XG4gICAgaW5pdHMgPVxuICBsZXQgaW5pdF9sLCBfID1cbiAgICBMaXN0X3V0aWwuZm9sZF9yaWdodF9tYXBcbiAgICAgIChmdW4gKGFsZywgaW5pdF90KSBwcmVlbnYgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBBbGdfZXhwci5oYXNfbWl4IH52YXJfZGVjbHM6KE1vZGVsLmdldF9hbGcgZW52KSAoZnN0IGFsZykgdGhlblxuICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgKCBcIkluaXRpYWwgcXVhbnRpdGllcyBjYW5ub3QgZGVwZW5kIG9uIGEgbnVtYmVyIG9mIG9jY3VyZW5jZVwiLFxuICAgICAgICAgICAgICAgICAgIHNuZCBhbGcgKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGFsZyA9XG4gICAgICAgICAgbWF0Y2ggcmVzY2FsZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGFsZ1xuICAgICAgICAgIHwgU29tZSByIC0+IEFsZ19leHByLm11bHQgYWxnIChBbGdfZXhwci5mbG9hdCByKVxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBpbml0X3Qgd2l0aFxuICAgICAgICB8IElOSVRfTUlYIChyYXdfbWl4LCBtaXhfcG9zKSAtPlxuICAgICAgICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBlbnYgaW5cbiAgICAgICAgICBsZXQgcHJlZW52JywgYWxnJyA9XG4gICAgICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudiBhbGdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmYWtlX3J1bGUgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBMS2FwcGEucl9taXggPSBbXTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfY3JlYXRlZCA9IHJhd19taXg7XG4gICAgICAgICAgICAgIExLYXBwYS5yX2RlbHRhX3Rva2VucyA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9yYXRlID0gQWxnX2V4cHIuY29uc3QgTmJyLnplcm87XG4gICAgICAgICAgICAgIExLYXBwYS5yX3VuX3JhdGUgPSBOb25lO1xuICAgICAgICAgICAgICBMS2FwcGEucl9lZGl0X3N0eWxlID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBwcmVlbnYnJywgc3RhdGUnID1cbiAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgIHJ1bGVzX29mX2FzdCB+ZGVidWdfbW9kZSB+d2FybmluZyB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgICAgcHJlZW52JyB+c3ludGF4X3JlZjowIChmYWtlX3J1bGUsIG1peF9wb3MpXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGRvbWFpbicnLCBfLCBbIGNvbXBpbGVkX3J1bGUgXSAtPlxuICAgICAgICAgICAgICAoZnN0IGFsZycsIGNvbXBpbGVkX3J1bGUpLCBkb21haW4nJ1xuICAgICAgICAgICAgfCBfLCBfLCBfIC0+XG4gICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgICAgICAgICAoIEZvcm1hdC5hc3ByaW50ZiBcImluaXRpYWwgbWl4dHVyZSAlYSBpcyBwYXJ0aWFsbHkgZGVmaW5lZFwiXG4gICAgICAgICAgICAgICAgICAgICAgIChSYXdfbWl4dHVyZS5wcmludCB+bm9Db3VudGVyczpkZWJ1Z19tb2RlIH5jcmVhdGVkOnRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfmluaXRpYWxfY29tbWE6ZmFsc2UgfnNpZ3MpXG4gICAgICAgICAgICAgICAgICAgICAgIHJhd19taXgsXG4gICAgICAgICAgICAgICAgICAgICBtaXhfcG9zICkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwcmVlbnYnJywgc3RhdGUnXG4gICAgICAgIHwgSU5JVF9UT0sgdGtfbCAtPlxuICAgICAgICAgIGxldCByX2RlbHRhX3Rva2VucyA9XG4gICAgICAgICAgICBMaXN0Lm1hcCAoZnVuICh0a19pZCwgX3Bvc190aykgLT4gYWxnLCB0a19pZCkgdGtfbFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZha2VfcnVsZSA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIExLYXBwYS5yX21peCA9IFtdO1xuICAgICAgICAgICAgICBMS2FwcGEucl9jcmVhdGVkID0gW107XG4gICAgICAgICAgICAgIExLYXBwYS5yX2RlbHRhX3Rva2VucztcbiAgICAgICAgICAgICAgTEthcHBhLnJfcmF0ZSA9IEFsZ19leHByLmNvbnN0IE5ici56ZXJvO1xuICAgICAgICAgICAgICBMS2FwcGEucl91bl9yYXRlID0gTm9uZTtcbiAgICAgICAgICAgICAgTEthcHBhLnJfZWRpdF9zdHlsZSA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXBcbiAgICAgICAgICAgICAgIHByZWVudiB+c3ludGF4X3JlZjowXG4gICAgICAgICAgICAgICAoTG9jLmFubm90X3dpdGhfZHVtbXkgZmFrZV9ydWxlKVxuICAgICAgICAgICB3aXRoXG4gICAgICAgICAgfCBkb21haW4nJywgXywgWyBjb21waWxlZF9ydWxlIF0gLT5cbiAgICAgICAgICAgIChBbGdfZXhwci5DT05TVCBOYnIub25lLCBjb21waWxlZF9ydWxlKSwgZG9tYWluJydcbiAgICAgICAgICB8IF8sIF8sIF8gLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgIGluaXRzXG4gICAgICAoUGF0dGVybi5QcmVFbnYuZW1wdHkgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSlcbiAgaW5cbiAgaW5pdF9sXG5cbmxldCBjb21waWxlX2FsZ192YXJzIH5kZWJ1Z19tb2RlIH5jb21waWxlX21vZGVfb24gY29udGFjdF9tYXAgZG9tYWluIHZhcnMgPVxuICBUb29scy5hcnJheV9mb2xkX2xlZnRfbWFwaVxuICAgIChmdW4gaSBkb21haW4gKGxibF9wb3MsIGFzdCkgLT5cbiAgICAgIGxldCBkb21haW4nLCBhbGcgPVxuICAgICAgICBjb21waWxlX2FsZyB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIH5vcmlnaW46KE9wZXJhdG9yLkFMRyBpKVxuICAgICAgICAgIGNvbnRhY3RfbWFwIGRvbWFpbiBhc3RcbiAgICAgIGluXG4gICAgICBkb21haW4nLCAobGJsX3BvcywgYWxnKSlcbiAgICBkb21haW4gKEFycmF5Lm9mX2xpc3QgdmFycylcblxubGV0IGNvbXBpbGVfcnVsZXMgfmRlYnVnX21vZGUgfndhcm5pbmcgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgIGRvbWFpbiBydWxlcyA9XG4gIG1hdGNoXG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGRvbWFpbiwgc3ludGF4X3JlZiwgZGVwc19tYWNoaW5lcnksIGFjYykgKF8sIHJ1bGUpIC0+XG4gICAgICAgIGxldCBkb21haW4nLCBvcmlnaW4nLCBjciA9XG4gICAgICAgICAgcnVsZXNfb2ZfYXN0IH5kZWJ1Z19tb2RlIH53YXJuaW5nID9kZXBzX21hY2hpbmVyeSB+Y29tcGlsZV9tb2RlX29uXG4gICAgICAgICAgICBjb250YWN0X21hcCBkb21haW4gfnN5bnRheF9yZWYgcnVsZVxuICAgICAgICBpblxuICAgICAgICBkb21haW4nLCBzdWNjIHN5bnRheF9yZWYsIG9yaWdpbicsIExpc3QuYXBwZW5kIGNyIGFjYylcbiAgICAgIChkb21haW4sIDEsIFNvbWUgKE9wZXJhdG9yLlJVTEUgMCwgYWxnX2RlcHMpLCBbXSlcbiAgICAgIHJ1bGVzXG4gIHdpdGhcbiAgfCBmZG9tYWluLCBfLCBTb21lIChfLCBmYWxnX2RlcHMpLCBmcnVsZXMgLT5cbiAgICBmZG9tYWluLCBmYWxnX2RlcHMsIExpc3QucmV2IGZydWxlc1xuICB8IF8sIF8sIE5vbmUsIF8gLT4gZmFpbHdpdGggXCJUaGUgb3JpZ2luIG9mIEV2YWwuY29tcGlsZV9ydWxlcyBoYXMgYmVlbiBsb3N0XCJcblxuKCpsZXQgdHJhbnNsYXRlX2NvbnRhY3RfbWFwIHNpZ3Mga2FzYV9jb250YWN0X21hcCA9XG4gICAgbGV0IHdkbCA9IExvYy5hbm5vdF93aXRoX2R1bW15IGluXG4gICAgbGV0IHNvbCA9IEFycmF5LmluaXRcbiAgICAgICAgKFNpZ25hdHVyZS5zaXplIHNpZ3MpXG4gICAgICAgIChmdW4gaSAtPiBBcnJheS5tYWtlIChTaWduYXR1cmUuYXJpdHkgc2lncyBpKSAoW10sW10pKSBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgIChmdW4gYWdlbnRfbmFtZSBzaXRlcyAtPlxuICAgICAgICAgICBsZXQgaWRfYSA9IFNpZ25hdHVyZS5udW1fb2ZfYWdlbnQgKHdkbCBhZ2VudF9uYW1lKSBzaWdzIGluXG4gICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAoZnVuIHNpdGVfbmFtZSAoc3RhdGVzLGxpbmtzKSAtPlxuICAgICAgICAgICAgICAgIGxldCBpZF9zID1cbiAgICAgICAgICAgICAgICAgIFNpZ25hdHVyZS5udW1fb2Zfc2l0ZVxuICAgICAgICAgICAgICAgICAgICB+YWdlbnRfbmFtZSAod2RsIHNpdGVfbmFtZSkgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSBpblxuICAgICAgICAgICAgICAgIHNvbC4oaWRfYSkuKGlkX3MpIDwtXG4gICAgICAgICAgICAgICAgICAoTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gc3RhdGUgLT4gU2lnbmF0dXJlLm51bV9vZl9pbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgICAgICAgIGlkX3MgKHdkbCBzdGF0ZSkgKFNpZ25hdHVyZS5nZXQgc2lncyBpZF9hKSlcbiAgICAgICAgICAgICAgICAgICAgIHN0YXRlcyxcbiAgICAgICAgICAgICAgICAgICBMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgKGZ1biAoYWdlbnRfbmFtZSxiKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkX2EgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX2FnZW50ICh3ZGwgYWdlbnRfbmFtZSkgc2lncyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGlkX2IgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBTaWduYXR1cmUubnVtX29mX3NpdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB+YWdlbnRfbmFtZSAod2RsIGIpIChTaWduYXR1cmUuZ2V0IHNpZ3MgaWRfYSkgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIChpZF9hLGlkX2IpKVxuICAgICAgICAgICAgICAgICAgICAgbGlua3MpKSBzaXRlcykga2FzYV9jb250YWN0X21hcCBpblxuICAgIHNvbFxuXG4gIGxldCBpbml0X2thc2EgY2FsbGVkX2Zyb20gc2lncyByZXN1bHQgPVxuICAgIGxldCBwcmVfa2FzYV9zdGF0ZSA9IEV4cG9ydF90b19LYVNpbS5pbml0IH5jb21waWw6cmVzdWx0IH5jYWxsZWRfZnJvbSAoKSBpblxuICAgIGxldCBrYXNhX3N0YXRlLGNvbnRhY3RfbWFwID0gRXhwb3J0X3RvX0thU2ltLmdldF9jb250YWN0X21hcCBwcmVfa2FzYV9zdGF0ZSBpblxuICAgIGxldCAoKSA9IEV4cG9ydF90b19LYVNpbS5kdW1wX2Vycm9yc19saWdodCBrYXNhX3N0YXRlIGluXG4gICAgdHJhbnNsYXRlX2NvbnRhY3RfbWFwIHNpZ3MgY29udGFjdF9tYXAsXG4gICAgRXhwb3J0X3RvX0thU2ltLmZsdXNoX2Vycm9ycyBrYXNhX3N0YXRlXG4qKVxubGV0IGNvbXBpbGUgfm91dHB1dHMgfnBhdXNlIH5yZXR1cm4gfnNoYXJpbmcgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vblxuICAgID9vdmVyd3JpdGVfaW5pdCA/b3ZlcndyaXRlX3QwID9yZXNjYWxlX2luaXQgc2lnc19uZCB0a19uZCBjb250YWN0X21hcCByZXN1bHRcbiAgICA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgb3V0cHV0cyAoRGF0YS5Mb2cgXCIrIEJ1aWxkaW5nIGluaXRpYWwgc2ltdWxhdGlvbiBjb25kaXRpb25zLi4uXCIpO1xuICBsZXQgcHJlZW52ID0gUGF0dGVybi5QcmVFbnYuZW1wdHkgc2lnc19uZCBpblxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtdmFyaWFibGUgZGVjbGFyYXRpb25zXCIpO1xuICBsZXQgcHJlZW52JywgYWxnX2EgPVxuICAgIGNvbXBpbGVfYWxnX3ZhcnMgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnZcbiAgICAgIHJlc3VsdC5Bc3QudmFyaWFibGVzXG4gIGluXG4gIGxldCBhbGdfbmQgPSBOYW1lZERlY2xzLmNyZWF0ZSBhbGdfYSBpblxuICBsZXQgYWxnX2RlcHMgPSBBbGdfZXhwci5zZXR1cF9hbGdfdmFyc19yZXZfZGVwIHRrX25kIGFsZ19hIGluXG5cbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1ydWxlc1wiKTtcbiAgbGV0IHByZWVudicsIGFsZ19kZXBzJywgY29tcGlsZWRfcnVsZXMgPVxuICAgIGNvbXBpbGVfcnVsZXMgfmRlYnVnX21vZGUgfndhcm5pbmcgYWxnX2RlcHMgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcFxuICAgICAgcHJlZW52JyByZXN1bHQuQXN0LnJ1bGVzXG4gIGluXG4gIGxldCBydWxlX25kID0gQXJyYXkub2ZfbGlzdCBjb21waWxlZF9ydWxlcyBpblxuXG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtaW50ZXJ2ZW50aW9uc1wiKTtcbiAgbGV0IHByZWVudiwgYWxnX2RlcHMnJywgcGVydCwgaGFzX3RyYWNraW5nID1cbiAgICBwZXJ0X29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+d2FybmluZyA/b3ZlcndyaXRlX3QwIHJlc3VsdC52YXJpYWJsZXNcbiAgICAgIHJlc3VsdC5ydWxlcyBhbGdfZGVwcycgfmNvbXBpbGVfbW9kZV9vbiBjb250YWN0X21hcCBwcmVlbnYnIHJlc3VsdFxuICBpblxuXG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBvdXRwdXRzIChEYXRhLkxvZyBcIlxcdCAtb2JzZXJ2YWJsZXNcIik7XG4gIGxldCBwcmVlbnYsIG9icyA9XG4gICAgb2JzX29mX3Jlc3VsdCB+ZGVidWdfbW9kZSB+Y29tcGlsZV9tb2RlX29uIGNvbnRhY3RfbWFwIHByZWVudiBhbGdfZGVwc1xuICAgICAgcmVzdWx0XG4gIGluXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC11cGRhdGVfZG9tYWluIGNvbnN0cnVjdGlvblwiKTtcbiAgcGF1c2UgQEAgZnVuICgpIC0+XG4gIGxldCBkb21haW4sIGRvbV9zdGF0cyA9XG4gICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBwcmVlbnYgY29udGFjdF9tYXBcbiAgaW5cbiAgb3V0cHV0c1xuICAgIChEYXRhLkxvZ1xuICAgICAgIChcIlxcdCBcIlxuICAgICAgIF4gc3RyaW5nX29mX2ludCBkb21fc3RhdHMuUGF0dGVybi5QcmVFbnYuc3RhdF9ub2Rlc1xuICAgICAgIF4gXCIgKHN1YilvYnNlcnZhYmxlcyBcIlxuICAgICAgIF4gc3RyaW5nX29mX2ludCBkb21fc3RhdHMuUGF0dGVybi5QcmVFbnYuc3RhdF9uYXZfc3RlcHNcbiAgICAgICBeIFwiIG5hdmlnYXRpb24gc3RlcHNcIikpO1xuXG4gIGxldCBlbnYgPVxuICAgIE1vZGVsLmluaXQgfmZpbGVuYW1lczpyZXN1bHQuZmlsZW5hbWVzIGRvbWFpbiB0a19uZCBhbGdfbmQgYWxnX2RlcHMnJ1xuICAgICAgKEFycmF5Lm9mX2xpc3QgcmVzdWx0LnJ1bGVzLCBydWxlX25kKVxuICAgICAgKEFycmF5Lm9mX2xpc3Qgb2JzKSAoQXJyYXkub2ZfbGlzdCBwZXJ0KSBjb250YWN0X21hcFxuICBpblxuXG4gIG91dHB1dHMgKERhdGEuTG9nIFwiXFx0IC1pbml0aWFsIGNvbmRpdGlvbnNcIik7XG4gIHBhdXNlIEBAIGZ1biAoKSAtPlxuICBsZXQgaW5pdF9sID1cbiAgICBjb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlIH53YXJuaW5nID9yZXNjYWxlOnJlc2NhbGVfaW5pdCB+Y29tcGlsZV9tb2RlX29uXG4gICAgICBjb250YWN0X21hcCBlbnZcbiAgICAgIChPcHRpb25fdXRpbC51bnNvbWUgcmVzdWx0LkFzdC5pbml0IG92ZXJ3cml0ZV9pbml0KVxuICBpblxuICByZXR1cm4gKGVudiwgaGFzX3RyYWNraW5nLCBpbml0X2wpXG5cbmxldCBidWlsZF9pbml0aWFsX3N0YXRlIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgY291bnRlciBlbnZcbiAgICB+d2l0aF90cmFjZSB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzIHJhbmRvbV9zdGF0ZSBpbml0X2wgPVxuICBsZXQgZ3JhcGgwID1cbiAgICBSdWxlX2ludGVycHJldGVyLmVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlIHJhbmRvbV9zdGF0ZSBlbnYgY291bnRlclxuICBpblxuICBsZXQgc3RhdGUwID0gU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllcyBjb3VudGVyIGVudiBpblxuICBTdGF0ZV9pbnRlcnByZXRlci5pbml0aWFsaXplIH5iaW5kIH5yZXR1cm4gfmRlYnVnX21vZGUgfm91dHB1dHMgZW52IGNvdW50ZXJcbiAgICBncmFwaDAgc3RhdGUwIGluaXRfbFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IGRvX2ludGVyYWN0aXZlX2RpcmVjdGl2ZXMgfmRlYnVnX21vZGUgfm91dHB1dHMgfnNoYXJpbmcgfnN5bnRheF92ZXJzaW9uXG4gICAgY29udGFjdF9tYXAgZW52IGNvdW50ZXIgZ3JhcGggc3RhdGUgZSA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgbGV0IGNjX3ByZWVudiA9IFBhdHRlcm4uUHJlRW52Lm9mX2VudiAoTW9kZWwuZG9tYWluIGVudikgaW5cbiAgbGV0IGNvbnRhY3RfbWFwJyA9IEFycmF5Lm1hcCBBcnJheS5jb3B5IGNvbnRhY3RfbWFwIGluXG4gIGxldCBlJywgXyA9XG4gICAgTGlzdF91dGlsLmZvbGRfcmlnaHRfbWFwXG4gICAgICAoTEthcHBhX2NvbXBpbGVyLm1vZGlmX2V4cHJfb2ZfYXN0IH53YXJuaW5nIH5zeW50YXhfdmVyc2lvblxuICAgICAgICAgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSAoTW9kZWwudG9rZW5zX2ZpbmRlciBlbnYpXG4gICAgICAgICAoTW9kZWwuYWxnc19maW5kZXIgZW52KSBjb250YWN0X21hcCcpXG4gICAgICBlIFtdXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWZcbiAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGlcbiAgICAgICAgKGZ1biBuIC0+XG4gICAgICAgICAgVG9vbHMuYXJyYXlfZm9sZF9sZWZ0aSAoZnVuIHMgYiB4IC0+IGIgfHwgeCAhPSBjb250YWN0X21hcC4obikuKHMpKSlcbiAgICAgICAgZmFsc2UgY29udGFjdF9tYXAnXG4gICAgdGhlblxuICAgICAgcmFpc2VcbiAgICAgICAgKEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2xcbiAgICAgICAgICAgKExvYy5hbm5vdF93aXRoX2R1bW15IFwiQ3JlYXRpbmcgbmV3IGxpbmsgdHlwZSBpcyBmb3JiaWRkZW5cIikpXG4gIGluXG4gIGxldCBjY19wcmVlbnYnLCBlJycgPVxuICAgIEV2YWwuY29tcGlsZV9tb2RpZmljYXRpb25zX25vX3RyYWNrIH5kZWJ1Z19tb2RlIH53YXJuaW5nXG4gICAgICB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIGNvbnRhY3RfbWFwIGNjX3ByZWVudiBlJ1xuICBpblxuICBsZXQgZW52JywgZ3JhcGgnID1cbiAgICBpZiBjY19wcmVlbnYgPT0gY2NfcHJlZW52JyB0aGVuXG4gICAgICBlbnYsIGdyYXBoXG4gICAgZWxzZSAoXG4gICAgICBsZXQgZmVudiwgXyA9XG4gICAgICAgIFBhdHRlcm4uZmluYWxpemUgfmRlYnVnX21vZGUgfnNoYXJpbmcgY2NfcHJlZW52JyBjb250YWN0X21hcFxuICAgICAgaW5cbiAgICAgICggTW9kZWwubmV3X2RvbWFpbiBmZW52IGVudixcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoUnVsZV9pbnRlcnByZXRlci5pbmNvcnBvcmF0ZV9leHRyYV9wYXR0ZXJuIH5kZWJ1Z19tb2RlIGZlbnYpXG4gICAgICAgICAgZ3JhcGhcbiAgICAgICAgICAoUHJpbWl0aXZlcy5leHRyYWN0X2Nvbm5lY3RlZF9jb21wb25lbnRzX21vZGlmaWNhdGlvbnMgZScnKSApXG4gICAgKVxuICBpblxuICBsZXQgb3N0b3AsIG9ncmFwaCwgb3N0YXRlLCBfID1cbiAgICBTdGF0ZV9pbnRlcnByZXRlci5kb19tb2RpZmljYXRpb25zIH5kZWJ1Z19tb2RlIH5vdXRwdXRzIGVudicgY291bnRlciBncmFwaCdcbiAgICAgIHN0YXRlIGUnJ1xuICBpblxuICBlJycsIChlbnYnLCAob3N0b3AsIG9ncmFwaCwgb3N0YXRlKSlcblxubGV0IGdldF9wYXVzZV9jcml0ZXJpYSB+ZGVidWdfbW9kZSB+b3V0cHV0cyB+c2hhcmluZyB+c3ludGF4X3ZlcnNpb24gY29udGFjdF9tYXBcbiAgICBlbnYgZ3JhcGggYiA9XG4gIGxldCB3YXJuaW5nIH5wb3MgbXNnID0gb3V0cHV0cyAoRGF0YS5XYXJuaW5nIChTb21lIHBvcywgbXNnKSkgaW5cbiAgbGV0IGNjX3ByZWVudiA9IFBhdHRlcm4uUHJlRW52Lm9mX2VudiAoTW9kZWwuZG9tYWluIGVudikgaW5cbiAgbGV0IGInID1cbiAgICBMS2FwcGFfY29tcGlsZXIuYm9vbF9leHByX29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgKE1vZGVsLnRva2Vuc19maW5kZXIgZW52KSAoTW9kZWwuYWxnc19maW5kZXIgZW52KSBiXG4gIGluXG4gIGxldCBjY19wcmVlbnYnLCAoKGInJywgcG9zX2InJykgYXMgYnBvcycnKSA9XG4gICAgRXZhbC5jb21waWxlX2Jvb2wgfmRlYnVnX21vZGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZSBjb250YWN0X21hcCBjY19wcmVlbnZcbiAgICAgIGInXG4gIGluXG4gIGxldCBlbnYnLCBncmFwaCcgPVxuICAgIGlmIGNjX3ByZWVudiA9PSBjY19wcmVlbnYnIHRoZW5cbiAgICAgIGVudiwgZ3JhcGhcbiAgICBlbHNlIChcbiAgICAgIGxldCBmZW52LCBfID1cbiAgICAgICAgUGF0dGVybi5maW5hbGl6ZSB+ZGVidWdfbW9kZSB+c2hhcmluZyBjY19wcmVlbnYnIGNvbnRhY3RfbWFwXG4gICAgICBpblxuICAgICAgKCBNb2RlbC5uZXdfZG9tYWluIGZlbnYgZW52LFxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChSdWxlX2ludGVycHJldGVyLmluY29ycG9yYXRlX2V4dHJhX3BhdHRlcm4gfmRlYnVnX21vZGUgZmVudilcbiAgICAgICAgICBncmFwaFxuICAgICAgICAgIChQcmltaXRpdmVzLmV4dHJhY3RfY29ubmVjdGVkX2NvbXBvbmVudHNfYm9vbCBicG9zJycpIClcbiAgICApXG4gIGluXG4gIGxldCAoKSA9XG4gICAgaWYgQWxnX2V4cHIuaXNfZXF1YWxpdHlfdGVzdF90aW1lIChNb2RlbC5hbGxfZGVwZW5kZW5jaWVzIGVudikgYicnIHRoZW5cbiAgICAgIHJhaXNlXG4gICAgICAgIChFeGNlcHRpb25EZWZuLk1hbGZvcm1lZF9EZWNsXG4gICAgICAgICAgIChcIltUXSBjYW4gb25seSBiZSB1c2VkIGluIGluZXF1YWxpdGllc1wiLCBwb3NfYicnKSlcbiAgaW5cbiAgZW52JywgZ3JhcGgnLCBiJydcblxubGV0IGZpbmRfYWxsX2VtYmVkZGluZ3MgfmRlYnVnX21vZGUgZW52IHRyID1cbiAgbGV0IGRvbWFpbiA9IE1vZGVsLmRvbWFpbiBlbnYgaW5cbiAgbGV0IGR1bW15X2luc3RhbmNlcyA9IEluc3RhbmNlcy5lbXB0eSBlbnYgaW5cbiAgbGV0IGdyYXBoID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuYXBwbHlfY29uY3JldGVfcG9zaXRpdmVfdHJhbnNmb3JtYXRpb25cbiAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGVudikgP21vZF9jb25uZWN0aXZpdHlfc3RvcmU6Tm9uZSBkdW1teV9pbnN0YW5jZXMpXG4gICAgICAoRWRnZXMuZW1wdHkgfndpdGhfY29ubmVjdGVkX2NvbXBvbmVudHM6ZmFsc2UpXG4gICAgICB0clxuICBpblxuICBsZXQgb3V0LCBfID1cbiAgICBSdWxlX2ludGVycHJldGVyLm9ic19mcm9tX3RyYW5zZm9ybWF0aW9ucyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggdHJcbiAgaW5cbiAgTGlzdC5tYXBcbiAgICAoZnVuIChwLCAocm9vdCwgXykpIC0+XG4gICAgICBwLCBNYXRjaGluZy5yZWNvbnN0cnVjdF9yZW5hbWluZyB+ZGVidWdfbW9kZSBkb21haW4gZ3JhcGggcCByb290KVxuICAgIG91dFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKioqKioqKioqKioqKVxuKCogSlNvbiBsYWJlbHMqKVxuKCoqKioqKioqKioqKioqKVxuXG5sZXQgYWdlbnQgPSBcImFnZW50IG5hbWVcIlxubGV0IGNvbnRhY3RtYXAgPSBcImNvbnRhY3QgbWFwXCJcbmxldCBhY2N1cmFjeV9zdHJpbmcgPSBcImFjY3VyYWN5XCJcbmxldCBkZWFkX3J1bGVzID0gXCJkZWFkIHJ1bGVzXCJcbmxldCBkZWFkX2FnZW50cyA9IFwiZGVhZCBhZ2VudHNcIlxubGV0IG1hcCA9IFwibWFwXCJcbmxldCBpbnRlcmZhY2UgPSBcImludGVyZmFjZVwiXG5sZXQgc2l0ZSA9IFwic2l0ZSBuYW1lXCJcbmxldCBzdGF0ZXNsaXN0ID0gXCJzdGF0ZXMgbGlzdFwiXG5sZXQgc2l0ZW5hbWUgPSBcInNpdGVfbmFtZVwiXG5sZXQgc2l0ZXR5cGUgPSBcInNpdGVfdHlwZVwiXG5sZXQgc2l0ZWxpbmtzID0gXCJwb3J0X2xpbmtzXCJcbmxldCBzaXRlc3RhdGVzID0gXCJwb3J0X3N0YXRlc1wiXG5sZXQgc2l0ZW5vZGVuYW1lID0gXCJub2RlX3R5cGVcIlxubGV0IHNpdGVub2RlaWQgPSBcIm5vZGVfaWRcIlxubGV0IHNpdGVub2Rlc2l0ZXMgPSBcIm5vZGVfc2l0ZXNcIlxubGV0IGh5cCA9IFwic2l0ZSBncmFwaFwiXG5sZXQgcmVmaW5lbWVudCA9IFwic2l0ZSBncmFwaCBsaXN0XCJcbmxldCBkb21haW5fbmFtZSA9IFwiZG9tYWluIG5hbWVcIlxubGV0IHJlZmluZW1lbnRzX2xpc3QgPSBcInJlZmluZW1lbnRzIGxpc3RcIlxubGV0IHJlZmluZW1lbnRfbGVtbWFzID0gXCJyZWZpbmVtZW50IGxlbW1hc1wiXG5sZXQgcnVsZV9pZCA9IFwiaWRcIlxubGV0IGFnZW50X2lkID0gXCJpZFwiXG5sZXQgbGFiZWwgPSBcImxhYmVsXCJcbmxldCBhc3QgPSBcImFzdFwiXG5sZXQgcG9zaXRpb24gPSBcImxvY2F0aW9uXCJcbmxldCBwb3NpdGlvbl9saXN0ID0gXCJsb2NhdGlvbiBsaXN0XCJcbmxldCB2YXJpYWJsZSA9IFwidmFyaWFibGVcIlxubGV0IHJ1bGUgPSBcInJ1bGVcIlxubGV0IGRpcmVjdCA9IFwiZGlyZWN0XCJcbmxldCBzaWRlX2VmZmVjdCA9IFwic2lkZSBlZmZlY3RcIlxubGV0IHNvdXJjZSA9IFwic291cmNlXCJcbmxldCB0YXJnZXRfbWFwID0gXCJ0YXJnZXQgbWFwXCJcbmxldCB0YXJnZXQgPSBcInRhcmdldFwiXG5sZXQgbG9jYXRpb25fcGFpcl9saXN0ID0gXCJsb2NhdGlvbiBwYWlyIGxpc3RcIlxubGV0IHJocyA9IFwiUkhTXCJcbmxldCBsaHMgPSBcIkxIU1wiXG5sZXQgaW5mbHVlbmNlbWFwID0gXCJpbmZsdWVuY2UgbWFwXCJcbmxldCBub2Rlc29maW5mbHVlbmNlbWFwID0gXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCJcbmxldCB3YWtldXAgPSBcIndha2UtdXAgbWFwXCJcbmxldCBpbmhpYml0aW9uID0gXCJpbmhpYml0aW9uIG1hcFwiXG5sZXQgbm9kZXMgPSBcIm5vZGVzXCJcbmxldCB0b3RhbF9zdHJpbmcgPSBcInRvdGFsXCJcbmxldCBmd2Rfc3RyaW5nID0gXCJmd2RcIlxubGV0IGJ3ZF9zdHJpbmcgPSBcImJ3ZFwiXG5sZXQgb3JpZ2luID0gXCJvcmlnaW5cIlxubGV0IGRpcmVjdGlvbiA9IFwiZGlyZWN0aW9uXCJcbmxldCBydWxlX2hpZGRlbiA9IFwiaGlkZGVuXCJcbmxldCBzY2MgPSBcInNjY1wiXG5sZXQgYWNjdXJhY3lfY20gPSBcImFjY3VyYWN5X2NtXCJcbmxldCBhY2N1cmFjeV9zY2MgPSBcImFjY3VyYWN5X3NjY1wiXG5sZXQgY29udGFjdG1hcHNjYyA9IFwiY29udGFjdCBtYXAgc2NjXCJcbmxldCBjb3VudGVyID0gXCJjb3VudGVyXCJcbmxldCBpbmYgPSBcIm1pblwiXG5sZXQgc3VwID0gXCJtYXhcIlxubGV0IGtleSA9IFwia2V5XCJcbmxldCBsb2NhbGl0eSA9IFwibG9jYWxpdHlcIlxuXG4oKioqKioqKioqKioqKioqKioqKilcbigqIEFjY3VyYWN5IGxldmVscyAqKVxuKCoqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgYWNjdXJhY3lfbGV2ZWwgPSBMb3cgfCBNZWRpdW0gfCBIaWdoIHwgRnVsbFxuXG5sZXQgYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IE1lZGl1bTsgSGlnaDsgRnVsbCBdXG5sZXQgY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IEhpZ2ggXVxubGV0IGluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxzID0gWyBMb3c7IE1lZGl1bTsgSGlnaCBdXG5sZXQgcmVkdWN0aW9uX2FjY3VyYWN5X2xldmVscyA9IFsgTG93OyBIaWdoIF1cblxubGV0IGFjY3VyYWN5X3RvX3N0cmluZyA9IGZ1bmN0aW9uXG4gIHwgTG93IC0+IFwibG93XCJcbiAgfCBNZWRpdW0gLT4gXCJtZWRpdW1cIlxuICB8IEhpZ2ggLT4gXCJoaWdoXCJcbiAgfCBGdWxsIC0+IFwiZnVsbFwiXG5cbmxldCBhY2N1cmFjeV90b19qc29uIHggPSBKc29uVXRpbC5vZl9zdHJpbmcgKGFjY3VyYWN5X3RvX3N0cmluZyB4KVxuXG5sZXQgYWNjdXJhY3lfb2Zfc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBcImxvd1wiIC0+IFNvbWUgTG93XG4gIHwgXCJtZWRpdW1cIiAtPiBTb21lIE1lZGl1bVxuICB8IFwiaGlnaFwiIC0+IFNvbWUgSGlnaFxuICB8IFwiZnVsbFwiIC0+IFNvbWUgRnVsbFxuICB8IF8gLT4gTm9uZVxuXG5sZXQgYWNjdXJhY3lfb2ZfanNvbiBqc29uID1cbiAgbWF0Y2ggYWNjdXJhY3lfb2Zfc3RyaW5nIChKc29uVXRpbC50b19zdHJpbmcganNvbikgd2l0aFxuICB8IFNvbWUgeCAtPiB4XG4gIHwgTm9uZSAtPlxuICAgIHJhaXNlXG4gICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiYWNjdXJhY3kgbGV2ZWxcIiwganNvbikpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBBY2N1cmFjeVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gYWNjdXJhY3lfbGV2ZWxcblxuICBsZXQgY29tcGFyZSBhIGIgPVxuICAgIG1hdGNoIGEsIGIgd2l0aFxuICAgIHwgTG93LCBMb3cgLT4gMFxuICAgIHwgTG93LCBfIC0+IC0xXG4gICAgfCBfLCBMb3cgLT4gMVxuICAgIHwgTWVkaXVtLCBNZWRpdW0gLT4gMFxuICAgIHwgTWVkaXVtLCBfIC0+IC0xXG4gICAgfCBfLCBNZWRpdW0gLT4gMVxuICAgIHwgSGlnaCwgSGlnaCAtPiAwXG4gICAgfCBIaWdoLCBfIC0+IC0xXG4gICAgfCBfLCBIaWdoIC0+IDFcbiAgICB8IEZ1bGwsIEZ1bGwgLT4gMFxuXG4gIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICB8IEZ1bGwgLT4gRm9ybWF0LmZwcmludGYgZiBcIkZ1bGxcIlxuICAgIHwgSGlnaCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiSGlnaFwiXG4gICAgfCBNZWRpdW0gLT4gRm9ybWF0LmZwcmludGYgZiBcIk1lZGl1bVwiXG4gICAgfCBMb3cgLT4gRm9ybWF0LmZwcmludGYgZiBcIkxvd1wiXG5lbmQpXG5cbm1vZHVsZSBBY2N1cmFjeU1hcCA9IEFjY3VyYWN5U2V0TWFwLk1hcFxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKioqKioqKioqKioqKioqKVxuKCogQ29udGFjdCBtYXAgKilcbigqKioqKioqKioqKioqKiopXG5cbnR5cGUgY29udGFjdF9tYXAgPSBVc2VyX2dyYXBoLmNvbm5lY3RlZF9jb21wb25lbnRcblxubGV0IHNpdGVfdHlwZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBVc2VyX2dyYXBoLkNvdW50ZXIgaSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJjb3VudGVyXCI7IGBJbnQgaSBdXG4gIHwgVXNlcl9ncmFwaC5Qb3J0IHAgLT5cbiAgICBgTGlzdFxuICAgICAgW1xuICAgICAgICBgU3RyaW5nIFwicG9ydFwiO1xuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICAoIHNpdGVsaW5rcyxcbiAgICAgICAgICAgICAgbWF0Y2ggcC5Vc2VyX2dyYXBoLnBvcnRfbGlua3Mgd2l0aFxuICAgICAgICAgICAgICB8IFVzZXJfZ3JhcGguTElOS1MgbCAtPlxuICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAgICAgICAgIChmdW4gKCh4bCwgeHIpLCB5KSAtPlxuICAgICAgICAgICAgICAgICAgICBgTGlzdCBbIGBMaXN0IFsgYEludCB4bDsgYEludCB4ciBdOyBgSW50IHkgXSlcbiAgICAgICAgICAgICAgICAgIGxcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLldIQVRFVkVSIC0+IGBOdWxsXG4gICAgICAgICAgICAgIHwgVXNlcl9ncmFwaC5TT01FIC0+IGBCb29sIHRydWVcbiAgICAgICAgICAgICAgfCBVc2VyX2dyYXBoLlRZUEUgKHNpLCB0eSkgLT5cbiAgICAgICAgICAgICAgICBgQXNzb2MgWyBcInNpdGVfbmFtZVwiLCBgU3RyaW5nIHNpOyBcInBvcnRfbmFtZVwiLCBgU3RyaW5nIHR5IF0gKTtcbiAgICAgICAgICAgICggc2l0ZXN0YXRlcyxcbiAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX2xpc3QgSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgICAgICAgICAgICAgIHAuVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyApO1xuICAgICAgICAgIF07XG4gICAgICBdXG5cbmxldCBzaXRlX3RvX2pzb24gc2l0ZSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHNpdGVuYW1lLCBKc29uVXRpbC5vZl9zdHJpbmcgc2l0ZS5Vc2VyX2dyYXBoLnNpdGVfbmFtZTtcbiAgICAgIHNpdGV0eXBlLCBzaXRlX3R5cGVfdG9fanNvbiBzaXRlLlVzZXJfZ3JhcGguc2l0ZV90eXBlO1xuICAgIF1cblxubGV0IHNpdGVfdHlwZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJjb3VudGVyXCI7IGBJbnQgaSBdIC0+IFVzZXJfZ3JhcGguQ291bnRlciBpXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwicG9ydFwiOyBgQXNzb2MgbCBdIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IHBvcnRfbGlua3MgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVsaW5rcyBsIGluXG4gICAgICAgICBVc2VyX2dyYXBoLmxpbmtzX29mX3lvanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgcG9ydF9zdGF0ZXMgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVzdGF0ZXMgbCBpblxuICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzdGF0ZSBsaXN0XCJcbiAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwic3RhdGVcIikpXG4gICAgICAgICAgIGpzb25cbiAgICAgICBpblxuICAgICAgIFVzZXJfZ3JhcGguUG9ydCB7IFVzZXJfZ3JhcGgucG9ydF9saW5rczsgVXNlcl9ncmFwaC5wb3J0X3N0YXRlcyB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlIHR5cGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZSB0eXBlXCIsIHgpKVxuXG5sZXQgc2l0ZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBzaXRlX25hbWUgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIHNpdGVuYW1lIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgc2l0ZV90eXBlID1cbiAgICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBzaXRldHlwZSBsIGluXG4gICAgICAgICBzaXRlX3R5cGVfb2ZfanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICB7IFVzZXJfZ3JhcGguc2l0ZV9uYW1lOyBVc2VyX2dyYXBoLnNpdGVfdHlwZSB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlXCIsIHgpKVxuXG5sZXQgc2l0ZV9ub2RlX3NpdGVzX3RvX2pzb24gbGlzdCA9IEpzb25VdGlsLm9mX2FycmF5IHNpdGVfdG9fanNvbiBsaXN0XG5cbmxldCBzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2FycmF5IH5lcnJvcl9tc2c6XCJzaXRlIG5vZGUgc2l0ZXNcIiBzaXRlX29mX2pzb25cblxubGV0IHNpdGVfbm9kZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBOb25lIC0+IGBOdWxsXG4gIHwgU29tZSBub2RlIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIHNpdGVub2RlbmFtZSwgSnNvblV0aWwub2Zfc3RyaW5nIG5vZGUuVXNlcl9ncmFwaC5ub2RlX3R5cGU7XG4gICAgICAgIHNpdGVub2Rlc2l0ZXMsIHNpdGVfbm9kZV9zaXRlc190b19qc29uIG5vZGUuVXNlcl9ncmFwaC5ub2RlX3NpdGVzO1xuICAgICAgXVxuXG5sZXQgc2l0ZV9ub2RlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IG5vZGVfaWQgPVxuICAgICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jX29wdCBzaXRlbm9kZWlkIGwgaW5cbiAgICAgICAgIE9wdGlvbl91dGlsLm1hcCAoSnNvblV0aWwudG9faW50ID9lcnJvcl9tc2c6Tm9uZSkganNvblxuICAgICAgIGluXG4gICAgICAgbGV0IG5vZGVfdHlwZSA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5vZGVuYW1lIGwgaW5cbiAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyBqc29uXG4gICAgICAgaW5cbiAgICAgICBsZXQgbm9kZV9zaXRlcyA9XG4gICAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2Mgc2l0ZW5vZGVzaXRlcyBsIGluXG4gICAgICAgICBzaXRlX25vZGVfc2l0ZXNfb2ZfanNvbiBqc29uXG4gICAgICAgaW5cbiAgICAgICBTb21lIHsgVXNlcl9ncmFwaC5ub2RlX3R5cGU7IFVzZXJfZ3JhcGgubm9kZV9pZDsgVXNlcl9ncmFwaC5ub2RlX3NpdGVzIH1cbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNpdGUgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVcIiwgeCkpXG5cbmxldCBjb250YWN0X21hcF90b19qc29uIGNvbnRhY3RfbWFwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBjb250YWN0bWFwLFxuICAgICAgICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFjY3VyYWN5X3N0cmluZyB+bGFiMjptYXAgYWNjdXJhY3lfdG9fanNvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9hcnJheSAoSnNvblV0aWwub2ZfYXJyYXkgc2l0ZV9ub2RlX3RvX2pzb24pKVxuICAgICAgICAgIGNvbnRhY3RfbWFwICk7XG4gICAgXVxuXG5sZXQgY29udGFjdF9tYXBfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgY29udGFjdG1hcCBsIGluXG4gICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTphY2N1cmFjeV9zdHJpbmcgfmxhYjI6bWFwXG4gICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJjb250YWN0IG1hcFwiKVxuICAgICAgICAgYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgKEpzb25VdGlsLnRvX2FycmF5XG4gICAgICAgICAgICB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJzaXRlIG5vZGVzIGxpc3RcIilcbiAgICAgICAgICAgIChKc29uVXRpbC50b19hcnJheVxuICAgICAgICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwic2l0ZSBub2RlcyBsaXN0XCIpXG4gICAgICAgICAgICAgICBzaXRlX25vZGVfb2ZfanNvbikpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiY29udGFjdCBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiY29udGFjdCBtYXBcIiwgeCkpXG5cbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCpzdHJvbmdseSBjb25uZWN0ZWQgY29tcG9uZW50KilcblxudHlwZSBzY2MgPSAoKHN0cmluZyAqIHN0cmluZykgKiAoc3RyaW5nICogc3RyaW5nKSkgbGlzdCBsaXN0XG5cbmxldCBzdHJpbmdfcGFpcl90b19qc29uIChhLCBiKSA9XG4gIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6c2l0ZW5hbWUgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgSnNvblV0aWwub2Zfc3RyaW5nIChhLCBiKVxuXG5sZXQgc3RyaW5nX3BhaXJfb2ZfanNvbiAoanNvbiA6IFlvanNvbi5CYXNpYy50KSA6IHN0cmluZyAqIHN0cmluZyA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6c2l0ZW5hbWUgfmVycm9yX21zZzpcInNpdGVcIlxuICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzaXRlX25hbWVcIilcbiAgICBqc29uXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX3RvX2pzb24gKGEsIGIpID1cbiAgSnNvblV0aWwub2ZfcGFpciBzdHJpbmdfcGFpcl90b19qc29uIHN0cmluZ19wYWlyX3RvX2pzb24gKGEsIGIpXG5cbmxldCBzdHJpbmdfcGFpcl9wYWlyX29mX2pzb24ganNvbiA6IChzdHJpbmcgKiBzdHJpbmcpICogKHN0cmluZyAqIHN0cmluZykgPVxuICBKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJib25kXCIgc3RyaW5nX3BhaXJfb2ZfanNvbiBzdHJpbmdfcGFpcl9vZl9qc29uXG4gICAganNvblxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24gbCA9XG4gIEpzb25VdGlsLm9mX2xpc3Qgc3RyaW5nX3BhaXJfcGFpcl90b19qc29uIGxcblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9vZl9qc29uIGpzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJsaXN0X29mX2JvbmRzXCIgc3RyaW5nX3BhaXJfcGFpcl9vZl9qc29uIGpzb25cblxubGV0IHN0cmluZ19wYWlyX3BhaXJfbGlzdF9saXN0X3RvX2pzb24gbCA9XG4gIEpzb25VdGlsLm9mX2xpc3Qgc3RyaW5nX3BhaXJfcGFpcl9saXN0X3RvX2pzb24gbFxuXG5sZXQgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGlzdF9vZl9saXN0c19vZl9ib25kc1wiXG4gICAgc3RyaW5nX3BhaXJfcGFpcl9saXN0X29mX2pzb24ganNvblxuXG5sZXQgc2NjX3RvX2pzb24gKGNtX2FjYywgc2NjX2FjYywgc2NjKSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggY29udGFjdG1hcHNjYyxcbiAgICAgICAgSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOmFjY3VyYWN5X2NtIH5sYWIyOmFjY3VyYWN5X3NjYyB+bGFiMzptYXBcbiAgICAgICAgICBhY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X3RvX2pzb24gc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3RfdG9fanNvblxuICAgICAgICAgIChjbV9hY2MsIHNjY19hY2MsIHNjYykgKTtcbiAgICBdXG5cbmxldCBzY2Nfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCAtPlxuICAgICh0cnlcbiAgICAgICBsZXQganNvbiA9IExpc3QuYXNzb2MgY29udGFjdG1hcHNjYyBsIGluXG4gICAgICAgSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOmFjY3VyYWN5X2NtIH5sYWIyOmFjY3VyYWN5X3NjYyB+bGFiMzptYXBcbiAgICAgICAgIH5lcnJvcl9tc2c6XCJzY2MgZGVjb21wb3NpdGlvblwiIGFjY3VyYWN5X29mX2pzb24gYWNjdXJhY3lfb2ZfanNvblxuICAgICAgICAgc3RyaW5nX3BhaXJfcGFpcl9saXN0X2xpc3Rfb2ZfanNvbiBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcInNjYyBkZWNvbXBvc2l0aW9uXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJzY2MgZGVjb21wb3NpdGlvblwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCoqKioqKioqKioqKioqKVxuKCogZGVhZCBydWxlcyAqKVxuKCoqKioqKioqKioqKioqKVxuXG50eXBlIHJ1bGVfZGlyZWN0aW9uID1cbiAgfCBEaXJlY3RfcnVsZVxuICB8IFJldmVyc2VfcnVsZVxuICB8IEJvdGhfZGlyZWN0aW9uc1xuICB8IER1bW15X3J1bGVfZGlyZWN0aW9uXG4gIHwgVmFyaWFibGVcblxudHlwZSBydWxlID0ge1xuICBydWxlX2lkOiBpbnQ7XG4gIHJ1bGVfbGFiZWw6IHN0cmluZztcbiAgcnVsZV9hc3Q6IHN0cmluZztcbiAgcnVsZV9wb3NpdGlvbjogTG9jLnQ7XG4gIHJ1bGVfZGlyZWN0aW9uOiBydWxlX2RpcmVjdGlvbjtcbiAgcnVsZV9oaWRkZW46IGJvb2w7XG59XG5cbmxldCBkaXJlY3Rpb25fdG9fanNvbiBkID1cbiAgbWF0Y2ggZCB3aXRoXG4gIHwgRGlyZWN0X3J1bGUgLT4gYFN0cmluZyBcImRpcmVjdFwiXG4gIHwgUmV2ZXJzZV9ydWxlIC0+IGBTdHJpbmcgXCJyZXZlcnNlXCJcbiAgfCBCb3RoX2RpcmVjdGlvbnMgLT4gYFN0cmluZyBcImJvdGhcIlxuICB8IER1bW15X3J1bGVfZGlyZWN0aW9uIC0+IGBTdHJpbmcgXCJkdW1teVwiXG4gIHwgVmFyaWFibGUgLT4gYFN0cmluZyBcInZhcmlhYmxlXCJcblxubGV0IGpzb25fdG9fZGlyZWN0aW9uIHMgPVxuICBtYXRjaCBzIHdpdGhcbiAgfCBgU3RyaW5nIFwiZGlyZWN0XCIgLT4gRGlyZWN0X3J1bGVcbiAgfCBgU3RyaW5nIFwicmV2ZXJzZVwiIC0+IFJldmVyc2VfcnVsZVxuICB8IGBTdHJpbmcgXCJib3RoXCIgLT4gQm90aF9kaXJlY3Rpb25zXG4gIHwgYFN0cmluZyBcImR1bW15XCIgLT4gRHVtbXlfcnVsZV9kaXJlY3Rpb25cbiAgfCBgU3RyaW5nIFwidmFyaWFibGVcIiAtPiBWYXJpYWJsZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwicnVsZSBkaXJlY3Rpb25cIiwgeCkpXG5cbmxldCBydWxlX3RvX2pzb24gcnVsZSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHJ1bGVfaWQsIEpzb25VdGlsLm9mX2ludCBydWxlLnJ1bGVfaWQ7XG4gICAgICBsYWJlbCwgSnNvblV0aWwub2Zfc3RyaW5nIHJ1bGUucnVsZV9sYWJlbDtcbiAgICAgIGFzdCwgSnNvblV0aWwub2Zfc3RyaW5nIHJ1bGUucnVsZV9hc3Q7XG4gICAgICBwb3NpdGlvbiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCBydWxlLnJ1bGVfcG9zaXRpb24pO1xuICAgICAgZGlyZWN0aW9uLCBkaXJlY3Rpb25fdG9fanNvbiBydWxlLnJ1bGVfZGlyZWN0aW9uO1xuICAgICAgcnVsZV9oaWRkZW4sIEpzb25VdGlsLm9mX2Jvb2wgcnVsZS5ydWxlX2hpZGRlbjtcbiAgICBdXG5cbmxldCBqc29uX3RvX3J1bGUgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gNiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBydWxlX2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIHJ1bGVfaWQgbCk7XG4gICAgICAgICBydWxlX2xhYmVsID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGxhYmVsIGwpO1xuICAgICAgICAgcnVsZV9hc3QgPSBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgYXN0IGwpO1xuICAgICAgICAgcnVsZV9wb3NpdGlvbiA9XG4gICAgICAgICAgIHNuZFxuICAgICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgICAoSnNvblV0aWwudG9fdW5pdCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJsb2NhbGl0eVwiKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbiBsKSk7XG4gICAgICAgICBydWxlX2RpcmVjdGlvbiA9IGpzb25fdG9fZGlyZWN0aW9uIChMaXN0LmFzc29jIGRpcmVjdGlvbiBsKTtcbiAgICAgICAgIHJ1bGVfaGlkZGVuID0gSnNvblV0aWwudG9fYm9vbCAoTGlzdC5hc3NvYyBydWxlX2hpZGRlbiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcIiBydWxlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcInJ1bGVcIiwgeCkpXG5cbnR5cGUgdmFyID0ge1xuICB2YXJfaWQ6IGludDtcbiAgdmFyX2xhYmVsOiBzdHJpbmc7XG4gIHZhcl9hc3Q6IHN0cmluZztcbiAgdmFyX3Bvc2l0aW9uOiBMb2MudDtcbn1cblxubGV0IHZhcl90b19qc29uIHZhciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIHJ1bGVfaWQsIEpzb25VdGlsLm9mX2ludCB2YXIudmFyX2lkO1xuICAgICAgbGFiZWwsIEpzb25VdGlsLm9mX3N0cmluZyB2YXIudmFyX2xhYmVsO1xuICAgICAgYXN0LCBKc29uVXRpbC5vZl9zdHJpbmcgdmFyLnZhcl9hc3Q7XG4gICAgICBwb3NpdGlvbiwgTG9jLnlvanNvbl9vZl9hbm5vdGVkIEpzb25VdGlsLm9mX3VuaXQgKCgpLCB2YXIudmFyX3Bvc2l0aW9uKTtcbiAgICBdXG5cbmxldCBqc29uX3RvX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSA0IC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIHZhcl9pZCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyBydWxlX2lkIGwpO1xuICAgICAgICAgdmFyX2xhYmVsID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGxhYmVsIGwpO1xuICAgICAgICAgdmFyX2FzdCA9IEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBhc3QgbCk7XG4gICAgICAgICB2YXJfcG9zaXRpb24gPVxuICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgICAgKExpc3QuYXNzb2MgcG9zaXRpb24gbCkpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiIHZhclwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJ2YXJcIiwgeCkpXG5cbnR5cGUgKCdydWxlLCAndmFyKSBpbmZsdWVuY2Vfbm9kZSA9IFJ1bGUgb2YgJ3J1bGUgfCBWYXIgb2YgJ3ZhclxudHlwZSBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPSAoKGludCwgaW50KSBpbmZsdWVuY2Vfbm9kZSAqIExvYy50KSBsaXN0XG5cbmxldCBpbmZsdWVuY2Vfbm9kZV90b19qc29uIHJ1bGVfdG9fanNvbiB2YXJfdG9fanNvbiBhID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgVmFyIGkgLT4gYEFzc29jIFsgdmFyaWFibGUsIHZhcl90b19qc29uIGkgXVxuICB8IFJ1bGUgaSAtPiBgQXNzb2MgWyBydWxlLCBydWxlX3RvX2pzb24gaSBdXG5cbmxldCBpbmZsdWVuY2Vfbm9kZV9vZl9qc29uIGpzb25fdG9fcnVsZSBqc29uX3RvX3ZhciA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gdmFyaWFibGUgLT4gVmFyIChqc29uX3RvX3ZhciBqc29uKVxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIHdoZW4gcyA9IHJ1bGUgLT4gUnVsZSAoanNvbl90b19ydWxlIGpzb24pXG4gIHwgeCAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIk5vdCBhIGNvcnJlY3QgaW5mbHVlbmNlIG5vZGVcIiBpblxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChlcnJvcl9tc2csIHgpKVxuXG5sZXQgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gSnNvblV0aWwub2ZfaW50IEpzb25VdGlsLm9mX2ludFxuXG5sZXQgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcInJ1bGUgaWRcIikpXG4gICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnOihKc29uVXRpbC5idWlsZF9tc2cgXCJ2YXIgaWRcIikpXG5cbmxldCBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfdG9fanNvbiA9XG4gIEpzb25VdGlsLm9mX2xpc3RcbiAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTprZXkgfmxhYjI6bG9jYWxpdHkgc2hvcnRfaW5mbHVlbmNlX25vZGVfdG9fanNvblxuICAgICAgIChmdW4gbG9jIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwgbG9jKSkpXG5cbmxldCBwb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX2xpc3RcbiAgICAoSnNvblV0aWwudG9fcGFpciB+bGFiMTprZXkgfmxhYjI6bG9jYWxpdHkgc2hvcnRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgIChmdW4geCAtPlxuICAgICAgICAgc25kXG4gICAgICAgICAgIChMb2MuYW5ub3RlZF9vZl95b2pzb25cbiAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX3VuaXQgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYWxpdHlcIikpXG4gICAgICAgICAgICAgIHgpKSlcblxubGV0IHJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiA9XG4gIGluZmx1ZW5jZV9ub2RlX3RvX2pzb24gcnVsZV90b19qc29uIHZhcl90b19qc29uXG5cbmxldCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24gPVxuICBpbmZsdWVuY2Vfbm9kZV9vZl9qc29uIGpzb25fdG9fcnVsZSBqc29uX3RvX3ZhclxuXG5sZXQgc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgcnVsZSAtPiBSdWxlIHJ1bGUucnVsZV9pZFxuICB8IFZhciB2YXIgLT4gVmFyIHZhci52YXJfaWRcblxubGV0IHBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgPSBmdW5jdGlvblxuICB8IFJ1bGUgciAtPiByLnJ1bGVfcG9zaXRpb25cbiAgfCBWYXIgdiAtPiB2LnZhcl9wb3NpdGlvblxuXG5tb2R1bGUgSW5mbHVlbmNlTm9kZVNldE1hcCA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgdHlwZSB0ID0gKGludCwgaW50KSBpbmZsdWVuY2Vfbm9kZVxuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuXG4gIGxldCBwcmludCBmID0gZnVuY3Rpb25cbiAgICB8IFJ1bGUgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiUnVsZSAlaVwiIHJcbiAgICB8IFZhciByIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJWYXIgJWlcIiByXG5lbmQpXG5cbm1vZHVsZSBJbmZsdWVuY2VOb2RlTWFwID0gSW5mbHVlbmNlTm9kZVNldE1hcC5NYXBcblxuKCogUmVsYXRpb25zICopXG5cbnR5cGUgJ2EgcGFpciA9ICdhICogJ2FcbnR5cGUgbG9jYXRpb24gPSBEaXJlY3Qgb2YgaW50IHwgU2lkZV9lZmZlY3Qgb2YgaW50XG5cbmxldCBkdW1wX2xvY2F0aW9uIGZtdCA9IGZ1bmN0aW9uXG4gIHwgRGlyZWN0IGludCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlaVwiIGludFxuICB8IFNpZGVfZWZmZWN0IGludCAtPiBGb3JtYXQuZnByaW50ZiBmbXQgXCIlaSpcIiBpbnRcblxubGV0IGR1bXBfbG9jYXRpb25fcGFpciBmbXQgKGEsIGIpID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiKCVhLCVhKVwiIGR1bXBfbG9jYXRpb24gYSBkdW1wX2xvY2F0aW9uIGJcblxubGV0IGR1bXBfbG9jYXRpb25fcGFpcl9saXN0IGZtdCBsID1cbiAgRm9ybWF0LmZwcmludGYgZm10IFwiWyVhXVwiXG4gICAgKFBwLmxpc3QgKGZ1biBmbXQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmbXQgXCI7XCIpIGR1bXBfbG9jYXRpb25fcGFpcilcbiAgICBsXG5cbmxldCBzdHJpbmdfb2ZfbGFiZWxfbGlzdCBsID0gRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiBkdW1wX2xvY2F0aW9uX3BhaXJfbGlzdCBsXG5cbnR5cGUgaGFsZl9pbmZsdWVuY2VfbWFwID1cbiAgbG9jYXRpb24gcGFpciBsaXN0IEluZmx1ZW5jZU5vZGVNYXAudCBJbmZsdWVuY2VOb2RlTWFwLnRcblxudHlwZSBpbmZsdWVuY2VfbWFwID0ge1xuICBub2RlczogKHJ1bGUsIHZhcikgaW5mbHVlbmNlX25vZGUgbGlzdDtcbiAgcG9zaXRpdmU6IGhhbGZfaW5mbHVlbmNlX21hcDtcbiAgbmVnYXRpdmU6IGhhbGZfaW5mbHVlbmNlX21hcDtcbn1cblxuKCogTG9jYXRpb24gbGFiZWxzICopXG5sZXQgbG9jYXRpb25fdG9fanNvbiBhID1cbiAgbWF0Y2ggYSB3aXRoXG4gIHwgRGlyZWN0IGkgLT4gYEFzc29jIFsgZGlyZWN0LCBKc29uVXRpbC5vZl9pbnQgaSBdXG4gIHwgU2lkZV9lZmZlY3QgaSAtPiBgQXNzb2MgWyBzaWRlX2VmZmVjdCwgSnNvblV0aWwub2ZfaW50IGkgXVxuXG5sZXQgbG9jYXRpb25fb2ZfanNvbiA/KGVycm9yX21zZyA9IFwiTm90IGEgY29ycmVjdCBsb2NhdGlvblwiKSA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gZGlyZWN0IC0+IERpcmVjdCAoSnNvblV0aWwudG9faW50IGpzb24pXG4gIHwgYEFzc29jIFsgKHMsIGpzb24pIF0gd2hlbiBzID0gc2lkZV9lZmZlY3QgLT5cbiAgICBTaWRlX2VmZmVjdCAoSnNvblV0aWwudG9faW50IGpzb24pXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoZXJyb3JfbXNnLCB4KSlcblxubGV0IGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uID1cbiAgSW5mbHVlbmNlTm9kZU1hcC50b19qc29uIH5sYWJfa2V5OnNvdXJjZSB+bGFiX3ZhbHVlOnRhcmdldF9tYXBcbiAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgKEluZmx1ZW5jZU5vZGVNYXAudG9fanNvbiB+bGFiX2tleTp0YXJnZXQgfmxhYl92YWx1ZTpsb2NhdGlvbl9wYWlyX2xpc3RcbiAgICAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpyaHMgfmxhYjI6bGhzIGxvY2F0aW9uX3RvX2pzb25cbiAgICAgICAgICAgICBsb2NhdGlvbl90b19qc29uKSkpXG5cbmxldCBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiA9XG4gIEluZmx1ZW5jZU5vZGVNYXAub2ZfanNvblxuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImFjdGl2YXRpb24gb3IgaW5oaWJpdGlvbiBtYXBcIilcbiAgICB+bGFiX2tleTpzb3VyY2UgfmxhYl92YWx1ZTp0YXJnZXRfbWFwIHNob3J0X2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAoSW5mbHVlbmNlTm9kZU1hcC5vZl9qc29uIH5sYWJfa2V5OnRhcmdldCB+bGFiX3ZhbHVlOmxvY2F0aW9uX3BhaXJfbGlzdFxuICAgICAgIH5lcnJvcl9tc2c6XCJtYXAgb2YgbGlzdHMgb2YgcGFpcnMgb2YgbG9jYXRpb25zXCJcbiAgICAgICBzaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgKEpzb25VdGlsLnRvX2xpc3QgfmVycm9yX21zZzpcImxpc3Qgb2YgcGFpciBvZiBsb2NhdGlvbnNcIlxuICAgICAgICAgIChKc29uVXRpbC50b19wYWlyIH5lcnJvcl9tc2c6XCJcIiB+bGFiMTpyaHMgfmxhYjI6bGhzXG4gICAgICAgICAgICAgKGxvY2F0aW9uX29mX2pzb24gfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYXRpb25cIikpXG4gICAgICAgICAgICAgKGxvY2F0aW9uX29mX2pzb24gfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibG9jYXRpb25cIikpKSkpXG5cbigqIEluZmx1ZW5jZSBtYXAgKilcblxubGV0IG5vZGVzX2xpc3RfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG5sZXQgbm9kZXNfbGlzdF9vZl9qc29uID0gSnNvblV0aWwudG9fbGlzdCByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cblxubGV0IGluZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBpbmZsdWVuY2VtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKGZ1biBpbmZsdWVuY2VfbWFwIC0+XG4gICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gaW5mbHVlbmNlX21hcC5ub2RlcztcbiAgICAgICAgICAgICAgICB3YWtldXAsIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAucG9zaXRpdmU7XG4gICAgICAgICAgICAgICAgaW5oaWJpdGlvbiwgaGFsZl9pbmZsdWVuY2VfbWFwX3RvX2pzb24gaW5mbHVlbmNlX21hcC5uZWdhdGl2ZTtcbiAgICAgICAgICAgICAgXSlcbiAgICAgICAgICBpbmZsdWVuY2VfbWFwICk7XG4gICAgXVxuXG5sZXQgbm9kZXNfb2ZfaW5mbHVlbmNlX21hcF90b19qc29uIG5vZGVzX2xpc3QgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIG5vZGVzb2ZpbmZsdWVuY2VtYXAsXG4gICAgICAgIEpzb25VdGlsLm9mX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcCBhY2N1cmFjeV90b19qc29uXG4gICAgICAgICAgKGZ1biBub2Rlc19saXN0IC0+IGBBc3NvYyBbIG5vZGVzLCBub2Rlc19saXN0X3RvX2pzb24gbm9kZXNfbGlzdCBdKVxuICAgICAgICAgIG5vZGVzX2xpc3QgKTtcbiAgICBdXG5cbmxldCBub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggLT5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzb24gPSBMaXN0LmFzc29jIG5vZGVzb2ZpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcDFcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMSAtPlxuICAgICAgICAgICAgICh0cnkgbm9kZXNfbGlzdF9vZl9qc29uIChMaXN0LmFzc29jIG5vZGVzIGwpXG4gICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGVzIG9mIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAganNvblxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJub2RlcyBvZiBpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgfCB4IC0+XG4gICAgcmFpc2VcbiAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwibm9kZXMgb2YgaW5mbHVlbmNlIG1hcFwiLCB4KSlcblxubGV0IGxvY2FsX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwID1cbiAgbGV0IGFjY3VyYWN5LCB0b3RhbCwgYndkLCBmd2QsIG9yaWdpbl9vcHQsIGluZmx1ZW5jZV9tYXAgPSBpbmZsdWVuY2VfbWFwIGluXG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggaW5mbHVlbmNlbWFwLFxuICAgICAgICBgQXNzb2NcbiAgICAgICAgICBbXG4gICAgICAgICAgICBhY2N1cmFjeV9zdHJpbmcsIGFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3k7XG4gICAgICAgICAgICB0b3RhbF9zdHJpbmcsIEpzb25VdGlsLm9mX2ludCB0b3RhbDtcbiAgICAgICAgICAgIGZ3ZF9zdHJpbmcsIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgZndkO1xuICAgICAgICAgICAgYndkX3N0cmluZywgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBid2Q7XG4gICAgICAgICAgICBvcmlnaW4sIEpzb25VdGlsLm9mX29wdGlvbiByZWZpbmVkX2luZmx1ZW5jZV9ub2RlX3RvX2pzb24gb3JpZ2luX29wdDtcbiAgICAgICAgICAgICggbWFwLFxuICAgICAgICAgICAgICAoZnVuIGluZmx1ZW5jZV9tYXAgLT5cbiAgICAgICAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMsIG5vZGVzX2xpc3RfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5vZGVzO1xuICAgICAgICAgICAgICAgICAgICB3YWtldXAsIGhhbGZfaW5mbHVlbmNlX21hcF90b19qc29uIGluZmx1ZW5jZV9tYXAucG9zaXRpdmU7XG4gICAgICAgICAgICAgICAgICAgICggaW5oaWJpdGlvbixcbiAgICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfdG9fanNvbiBpbmZsdWVuY2VfbWFwLm5lZ2F0aXZlICk7XG4gICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgIGluZmx1ZW5jZV9tYXAgKTtcbiAgICAgICAgICBdICk7XG4gICAgXVxuXG5sZXQgaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWNjdXJhY3lfc3RyaW5nIH5sYWIyOm1hcFxuICAgICAgICAgfmVycm9yX21zZzooSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcDFcIilcbiAgICAgICAgIGFjY3VyYWN5X29mX2pzb25cbiAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBub2RlcyA9IG5vZGVzX2xpc3Rfb2ZfanNvbiAoTGlzdC5hc3NvYyBub2RlcyBsKTtcbiAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2Mgd2FrZXVwIGwpO1xuICAgICAgICAgICAgICAgICAgbmVnYXRpdmUgPVxuICAgICAgICAgICAgICAgICAgICBoYWxmX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoTGlzdC5hc3NvYyBpbmhpYml0aW9uIGwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKSlcbiAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuXG5sZXQgbG9jYWxfaW5mbHVlbmNlX21hcF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyBpbmZsdWVuY2VtYXAgbCBpblxuICAgICAgIG1hdGNoIGpzb24gd2l0aFxuICAgICAgIHwgYEFzc29jIGwnIC0+XG4gICAgICAgICBsZXQgYWNjdXJhY3kgPSBhY2N1cmFjeV9vZl9qc29uIChMaXN0LmFzc29jIGFjY3VyYWN5X3N0cmluZyBsJykgaW5cbiAgICAgICAgIGxldCB0b3RhbCA9IEpzb25VdGlsLnRvX2ludCAoTGlzdC5hc3NvYyB0b3RhbF9zdHJpbmcgbCcpIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnID0gSnNvblV0aWwuYnVpbGRfbXNnIFwiZndkIHJhZGl1c1wiIGluXG4gICAgICAgICBsZXQgZndkID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uXG4gICAgICAgICAgICAgKEpzb25VdGlsLnRvX2ludCB+ZXJyb3JfbXNnKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIGZ3ZF9zdHJpbmcgbCcpXG4gICAgICAgICBpblxuICAgICAgICAgbGV0IGVycm9yX21zZyA9IEpzb25VdGlsLmJ1aWxkX21zZyBcImJ3ZCByYWRpdXNcIiBpblxuICAgICAgICAgbGV0IGJ3ZCA9XG4gICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvblxuICAgICAgICAgICAgIChKc29uVXRpbC50b19pbnQgfmVycm9yX21zZylcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBid2Rfc3RyaW5nIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBvcmlnaW4gPVxuICAgICAgICAgICBKc29uVXRpbC50b19vcHRpb24gcmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAgKExpc3QuYXNzb2Mgb3JpZ2luIGwnKVxuICAgICAgICAgaW5cbiAgICAgICAgIGxldCBpbmZsdWVuY2VfbWFwID1cbiAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAgICAgICAgICAgICh0cnlcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgbm9kZXMgPSBub2Rlc19saXN0X29mX2pzb24gKExpc3QuYXNzb2Mgbm9kZXMgbCk7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aXZlID0gaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2Mgd2FrZXVwIGwpO1xuICAgICAgICAgICAgICAgICAgICBuZWdhdGl2ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgaGFsZl9pbmZsdWVuY2VfbWFwX29mX2pzb24gKExpc3QuYXNzb2MgaW5oaWJpdGlvbiBsKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsIGluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICAgICAgICAgICAgIChMaXN0LmFzc29jIG1hcCBsJylcbiAgICAgICAgIGluXG4gICAgICAgICBhY2N1cmFjeSwgdG90YWwsIGZ3ZCwgYndkLCBvcmlnaW4sIGluZmx1ZW5jZV9tYXBcbiAgICAgICB8IF8gLT5cbiAgICAgICAgIHJhaXNlXG4gICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJpbmZsdWVuY2UgbWFwXCIsIHgpKVxuICAgICB3aXRoIF8gLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImluZmx1ZW5jZSBtYXBcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiaW5mbHVlbmNlIG1hcFwiLCB4KSlcblxuKCoqKioqKioqKioqKioqKilcbigqIGRlYWQgcnVsZXMgICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGRlYWRfcnVsZXMgPSBydWxlIGxpc3RcblxubGV0IGRlYWRfcnVsZXNfdG9fanNvbiBqc29uID1cbiAgYEFzc29jIFsgZGVhZF9ydWxlcywgSnNvblV0aWwub2ZfbGlzdCBydWxlX3RvX2pzb24ganNvbiBdXG5cbmxldCBkZWFkX3J1bGVzX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIGFzIHggd2hlbiBzID0gZGVhZF9ydWxlcyAtPlxuICAgICh0cnkgSnNvblV0aWwudG9fbGlzdCBqc29uX3RvX3J1bGUganNvblxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9ydWxlcywgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBkZWFkX3J1bGVzLCB4KSlcblxuKCoqKioqKioqKioqKioqKilcbigqIGRlYWQgYWdlbnRzICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGFnZW50X2tpbmQgPSB7XG4gIGFnZW50X2lkOiBpbnQ7XG4gIGFnZW50X2FzdDogc3RyaW5nO1xuICBhZ2VudF9wb3NpdGlvbjogTG9jLnQgbGlzdDtcbn1cblxubGV0IGpzb25fdG9fYWdlbnRfa2luZCA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGFnZW50X2lkID0gSnNvblV0aWwudG9faW50IChMaXN0LmFzc29jIGFnZW50X2lkIGwpO1xuICAgICAgICAgYWdlbnRfYXN0ID0gSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIGFzdCBsKTtcbiAgICAgICAgIGFnZW50X3Bvc2l0aW9uID1cbiAgICAgICAgICAgSnNvblV0aWwudG9fbGlzdFxuICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5IGxpc3RcIilcbiAgICAgICAgICAgICAoZnVuIGpzb24gLT5cbiAgICAgICAgICAgICAgIHNuZFxuICAgICAgICAgICAgICAgICAoTG9jLmFubm90ZWRfb2ZfeW9qc29uXG4gICAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxvY2FsaXR5XCIpKVxuICAgICAgICAgICAgICAgICAgICBqc29uKSlcbiAgICAgICAgICAgICAoTGlzdC5hc3NvYyBwb3NpdGlvbl9saXN0IGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiYWdlbnQga2luZFwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJhZ2VudCBraW5kXCIsIHgpKVxuXG5sZXQgYWdlbnRfa2luZF90b19qc29uIGFnZW50X2tpbmQgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICBhZ2VudF9pZCwgSnNvblV0aWwub2ZfaW50IGFnZW50X2tpbmQuYWdlbnRfaWQ7XG4gICAgICBhc3QsIEpzb25VdGlsLm9mX3N0cmluZyBhZ2VudF9raW5kLmFnZW50X2FzdDtcbiAgICAgICggcG9zaXRpb25fbGlzdCxcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdFxuICAgICAgICAgIChmdW4gYSAtPiBMb2MueW9qc29uX29mX2Fubm90ZWQgSnNvblV0aWwub2ZfdW5pdCAoKCksIGEpKVxuICAgICAgICAgIGFnZW50X2tpbmQuYWdlbnRfcG9zaXRpb24gKTtcbiAgICBdXG5cbnR5cGUgZGVhZF9hZ2VudHMgPSBhZ2VudF9raW5kIGxpc3RcblxubGV0IGpzb25fb2ZfZGVhZF9hZ2VudHMganNvbiA9XG4gIGBBc3NvYyBbIGRlYWRfYWdlbnRzLCBKc29uVXRpbC5vZl9saXN0IGFnZW50X2tpbmRfdG9fanNvbiBqc29uIF1cblxubGV0IGpzb25fdG9fZGVhZF9hZ2VudHMgPSBmdW5jdGlvblxuICB8IGBBc3NvYyBbIChzLCBqc29uKSBdIGFzIHggd2hlbiBzID0gZGVhZF9hZ2VudHMgLT5cbiAgICAodHJ5IEpzb25VdGlsLnRvX2xpc3QganNvbl90b19hZ2VudF9raW5kIGpzb25cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIGRlYWRfYWdlbnRzLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgZGVhZF9hZ2VudHMsIHgpKVxuXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIG5vbiB3ZWFrbHkgcmV2ZXJzaWJsZSB0cmFuc2l0aW9ucyAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IChydWxlICogKHN0cmluZyAqIHN0cmluZykgbGlzdCkgbGlzdFxuXG5sZXQgc2VwYXJhdGluZ190cmFuc2l0aW9uc190b19qc29uID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOlwicnVsZVwiIH5sYWIyOlwicG90ZW50aWFsLWNvbnRleHRzXCIgcnVsZV90b19qc29uXG4gICAgICAgKEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgICAoSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInMxXCIgfmxhYjI6XCJzMlwiIEpzb25VdGlsLm9mX3N0cmluZ1xuICAgICAgICAgICAgIEpzb25VdGlsLm9mX3N0cmluZykpKVxuXG5sZXQgc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uID1cbiAgSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwic2VwYXJhdGluZyB0cmFuc2l0aW9ucyBsaXN0XCJcbiAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwic2VwYXJhdGluZyB0cmFuc2l0aW9uXCIgfmxhYjE6XCJydWxlXCJcbiAgICAgICB+bGFiMjpcInBvdGVudGlhbC1jb250ZXh0c1wiIGpzb25fdG9fcnVsZVxuICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzZXBhcmF0aW5nIHRyYW5zaXRpb25zXCJcbiAgICAgICAgICAoSnNvblV0aWwudG9fcGFpciB+ZXJyb3JfbXNnOlwidHJhbnNpdGlvblwiIH5sYWIxOlwiczFcIiB+bGFiMjpcInMyXCJcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSlcbiAgICAgICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nID9lcnJvcl9tc2c6Tm9uZSkpKSlcblxuKCoqKioqKioqKioqKioqKilcbigqIENvbnN0cmFpbnRzICopXG4oKioqKioqKioqKioqKioqKVxuXG50eXBlIGJpbmRpbmdfc3RhdGUgPVxuICB8IEZyZWVcbiAgfCBXaWxkY2FyZFxuICB8IEJvdW5kX3RvX3Vua25vd25cbiAgfCBCb3VuZF90byBvZiBpbnRcbiAgfCBCaW5kaW5nX3R5cGUgb2Ygc3RyaW5nICogc3RyaW5nXG5cbnR5cGUgYWdlbnQgPVxuICBzdHJpbmdcbiAgKiAoc3RyaW5nXG4gICAgKiBzdHJpbmcgb3B0aW9uXG4gICAgKiBiaW5kaW5nX3N0YXRlIG9wdGlvblxuICAgICogKGludCBvcHRpb24gKiBpbnQgb3B0aW9uKSBvcHRpb24pXG4gICAgbGlzdFxuXG50eXBlICdzaXRlX2dyYXBoIGxlbW1hID0geyBoeXA6ICdzaXRlX2dyYXBoOyByZWZpbmVtZW50OiAnc2l0ZV9ncmFwaCBsaXN0IH1cbnR5cGUgJ3NpdGVfZ3JhcGggcG9seV9jb25zdHJhaW50c19saXN0ID0gKHN0cmluZyAqICdzaXRlX2dyYXBoIGxlbW1hIGxpc3QpIGxpc3RcblxubGV0IGxlbW1hX3RvX2pzb24gc2l0ZV9ncmFwaF90b19qc29uIGpzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmh5cCB+bGFiMjpyZWZpbmVtZW50IHNpdGVfZ3JhcGhfdG9fanNvblxuICAgIChKc29uVXRpbC5vZl9saXN0IHNpdGVfZ3JhcGhfdG9fanNvbilcbiAgICAoanNvbi5oeXAsIGpzb24ucmVmaW5lbWVudClcblxubGV0IGxlbW1hX29mX2pzb24gc2l0ZV9ncmFwaF9vZl9qc29uIGpzb24gPVxuICBsZXQgYSwgYiA9XG4gICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTpoeXAgfmxhYjI6cmVmaW5lbWVudCB+ZXJyb3JfbXNnOlwibGVtbWFcIlxuICAgICAgc2l0ZV9ncmFwaF9vZl9qc29uXG4gICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwicmVmaW5lbWVudHMgbGlzdFwiIHNpdGVfZ3JhcGhfb2ZfanNvbilcbiAgICAgIGpzb25cbiAgaW5cbiAgeyBoeXAgPSBhOyByZWZpbmVtZW50ID0gYiB9XG5cbmxldCBnZXRfaHlwIGggPSBoLmh5cFxubGV0IGdldF9yZWZpbmVtZW50IHIgPSByLnJlZmluZW1lbnRcbmxldCBmcmVlID0gXCJcIlxubGV0IHdpbGRjYXJkID0gXCI/XCJcbmxldCBib3VuZCA9IFwiIV9cIlxubGV0IGJvbmRfaWQgPSBcImJvbmQgaWRcIlxubGV0IGJvdW5kX3RvID0gXCJib3VuZCB0b1wiXG5sZXQgYmluZGluZ190eXBlID0gXCJiaW5kaW5nIHR5cGVcIlxubGV0IHByb3AgPSBcInByb3BlcnR5IHN0YXRlXCJcbmxldCBiaW5kID0gXCJiaW5kaW5nIHN0YXRlXCJcbmxldCBiaW5kaW5nX3R5cGVfYmFja2VuZF9zeW1ib2wgPSBcIi5cIlxubGV0IGZyZWVfYmFja2VuZF9zeW1ib2wgPSBcIi5cIlxubGV0IG1pc3NpbmdfYmluZGluZ19zaXRlX2JhY2tlbmRfc3ltYm9sID0gXCJcIlxubGV0IHdpbGRjYXJkX2JhY2tlbmRfc3ltYm9sID0gXCIjXCJcbmxldCBib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm9sID0gXCJfXCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9pbnRyb2R1Y3Rpb25fYmFja2VuZF9zeW1ib2wgPSBcIn5cIlxubGV0IGludGVybmFsX3N0YXRlX2RlbGltaXRlcl9iYWNrZW5kX3N5bWJvbCA9IFwiLFwiXG5sZXQgYmluZGluZ19zdGF0ZV9kZWxpbWl0ZXJfYmFja2VuZF9zeW1ib2wgPSBcIixcIlxubGV0IGJpbmRpbmdfc3RhdGVfb3BlbmluZ19iYWNrZW5kX3N5bWJvbCA9IFwiW1wiXG5sZXQgYmluZGluZ19zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJdXCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ7XCJcbmxldCBpbnRlcm5hbF9zdGF0ZV9jbG9zaW5nX2JhY2tlbmRfc3ltYm9sID0gXCJ9XCJcbmxldCBjb3VudGVyX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2wgPSBcIntcIlxubGV0IGNvdW50ZXJfc3RhdGVfY2xvc2luZ19iYWNrZW5kX3N5bWJvbCA9IFwifVwiXG5sZXQgY291bnRlcl9zdGF0ZV9yYW5nZV9iYWNrZW5kX3N5bWJvbCA9IFwiIC4uIFwiXG5sZXQgb3Blbl9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID0gXCJbXCJcbmxldCBjbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sID0gXCJdXCJcbmxldCBvcGVuX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPSBcIl1cIlxubGV0IGNsb3NlX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPSBcIltcIlxubGV0IHBsdXNfaW5maW5pdHlfc3ltYm9sID0gXCIrb29cIlxubGV0IG1pbnVzX2luZmluaXR5X3N5bWJvbCA9IFwiLW9vXCJcblxubGV0IHN0cmluZ19vZl9iaW5kaW5nX3R5cGUgPyhiaW5kaW5nX3R5cGVfc3ltYm9sID0gXCIuXCIpIH5hZ2VudF9uYW1lIH5zaXRlX25hbWVcbiAgICAoKSA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiJXMlcyVzXCIgc2l0ZV9uYW1lIGJpbmRpbmdfdHlwZV9zeW1ib2wgYWdlbnRfbmFtZVxuXG5sZXQgYmluZGluZ19zdGF0ZV9saWdodF9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAocywgYE51bGwpIF0gd2hlbiBzID0gZnJlZSAtPiBGcmVlXG4gIHwgYEFzc29jIFsgKHMsIGBOdWxsKSBdIHdoZW4gcyA9IHdpbGRjYXJkIC0+IFdpbGRjYXJkXG4gIHwgYEFzc29jIFsgKHMsIGBOdWxsKSBdIHdoZW4gcyA9IGJvdW5kX3RvIC0+IEJvdW5kX3RvX3Vua25vd25cbiAgfCBgQXNzb2MgWyAocywgaikgXSB3aGVuIHMgPSBib25kX2lkIC0+XG4gICAgbGV0IGkgPSBKc29uVXRpbC50b19pbnQgfmVycm9yX21zZzpcIndyb25nIGJpbmRpbmcgaWRcIiBqIGluXG4gICAgbGV0IGJvbmRfaW5kZXggPSBpIGluXG4gICAgQm91bmRfdG8gYm9uZF9pbmRleFxuICB8IGBBc3NvYyBbIChzLCBqKSBdIHdoZW4gcyA9IGJpbmRpbmdfdHlwZSAtPlxuICAgIGxldCBhZ2VudF9uYW1lLCBzaXRlX25hbWUgPVxuICAgICAgSnNvblV0aWwudG9fcGFpciB+bGFiMTpcImFnZW50XCIgfmxhYjI6XCJzaXRlXCIgfmVycm9yX21zZzpcImJpbmRpbmcgdHlwZVwiXG4gICAgICAgIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcImFnZW50IG5hbWVcIilcbiAgICAgICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwic2l0ZSBuYW1lXCIpXG4gICAgICAgIGpcbiAgICBpblxuICAgIEJpbmRpbmdfdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwid3JvbmcgYmluZGluZyBzdGF0ZVwiLCB4KSlcblxubGV0IGJpbmRpbmdfc3RhdGVfbGlnaHRfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRnJlZSAtPiBgQXNzb2MgWyBmcmVlLCBgTnVsbCBdXG4gIHwgV2lsZGNhcmQgLT4gYEFzc29jIFsgd2lsZGNhcmQsIGBOdWxsIF1cbiAgfCBCb3VuZF90b191bmtub3duIC0+IGBBc3NvYyBbIGJvdW5kX3RvLCBgTnVsbCBdXG4gIHwgQm91bmRfdG8gYm9uZF9pbmRleCAtPiBgQXNzb2MgWyBib25kX2lkLCBKc29uVXRpbC5vZl9pbnQgYm9uZF9pbmRleCBdXG4gIHwgQmluZGluZ190eXBlIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpIC0+XG4gICAgbGV0IGogPVxuICAgICAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcImFnZW50XCIgfmxhYjI6XCJzaXRlXCIgSnNvblV0aWwub2Zfc3RyaW5nXG4gICAgICAgIEpzb25VdGlsLm9mX3N0cmluZyAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKVxuICAgIGluXG4gICAgYEFzc29jIFsgYmluZGluZ190eXBlLCBqIF1cblxubGV0IGNvdW50ZXJfc3RhdGVfbGlnaHRfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6aW5mIH5sYWIyOnN1cCB+ZXJyb3JfbXNnOlwid3JvbmcgY291bnRlciBzdGF0ZVwiXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6Y291bnRlcikpXG4gICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9faW50IH5lcnJvcl9tc2c6Y291bnRlcikpXG5cbmxldCBjb3VudGVyX3N0YXRlX2xpZ2h0X3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmluZiB+bGFiMjpzdXBcbiAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludClcbiAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludClcblxubGV0IGludGVyZmFjZV9saWdodF90b19qc29uIGludGYgPVxuICBKc29uVXRpbC5vZl9tYXAgfmxhYl9rZXk6c2l0ZSB+bGFiX3ZhbHVlOnN0YXRlc2xpc3RcbiAgICB+Zm9sZDooZnVuIGYgYSB4IC0+XG4gICAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGxpc3QgKGssIGEsIGIsIGMpIC0+IGYgayAoYSwgYiwgYykgbGlzdCkgeCBhKVxuICAgICgqanNvbiAtPiBlbHQqKVxuICAgICAgKGZ1biBzaXRlIC0+IEpzb25VdGlsLm9mX3N0cmluZyBzaXRlKVxuICAgICgqanNvbiAtPiAndmFsdWUqKVxuICAgIChKc29uVXRpbC5vZl90cmlwbGUgfmxhYjE6cHJvcCB+bGFiMjpiaW5kIH5sYWIzOmNvdW50ZXJcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX3N0cmluZylcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIGJpbmRpbmdfc3RhdGVfbGlnaHRfdG9fanNvbilcbiAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIGNvdW50ZXJfc3RhdGVfbGlnaHRfdG9fanNvbikpXG4gICAgaW50ZlxuXG5sZXQgaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24ganNvbiA9XG4gIEpzb25VdGlsLnRvX21hcCB+bGFiX2tleTpzaXRlIH5sYWJfdmFsdWU6c3RhdGVzbGlzdCB+ZXJyb3JfbXNnOmludGVyZmFjZVxuICAgIH5lbXB0eTpbXVxuICAgIH5hZGQ6KGZ1biBrIChhLCBiLCBjKSBsaXN0IC0+IChrLCBhLCBiLCBjKSA6OiBsaXN0KVxuICAgICgqanNvbiAtPiBlbHQqKVxuICAgICAgKGZ1biBqc29uIC0+IEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOnNpdGUganNvbilcbiAgICAoKmpzb24gLT4gJ3ZhbHVlKilcbiAgICAoSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOnByb3AgfmxhYjI6YmluZCB+bGFiMzpjb3VudGVyXG4gICAgICAgfmVycm9yX21zZzpcIndyb25nIGJpbmRpbmcgc3RhdGVcIlxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOnByb3ApKVxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gYmluZGluZ19zdGF0ZV9saWdodF9vZl9qc29uKVxuICAgICAgIChKc29uVXRpbC50b19vcHRpb24gY291bnRlcl9zdGF0ZV9saWdodF9vZl9qc29uKSlcbiAgICBqc29uXG5cbmxldCBhZ2VudF9nZW5fb2ZfanNvbiBpbnRlcmZhY2Vfb2ZfanNvbiA9XG4gIEpzb25VdGlsLnRvX3BhaXIgfmxhYjE6YWdlbnQgfmxhYjI6aW50ZXJmYWNlIH5lcnJvcl9tc2c6XCJhZ2VudFwiXG4gICAgKEpzb25VdGlsLnRvX3N0cmluZyB+ZXJyb3JfbXNnOlwiYWdlbnQgbmFtZVwiKVxuICAgIGludGVyZmFjZV9vZl9qc29uXG5cbmxldCBwb2x5X2NvbnN0cmFpbnRzX2xpc3Rfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0XG4gICAgKEpzb25VdGlsLnRvX3BhaXIgfmVycm9yX21zZzpcImNvbnN0cmFpbnRzIGxpc3RcIiB+bGFiMTpkb21haW5fbmFtZVxuICAgICAgIH5sYWIyOnJlZmluZW1lbnRzX2xpc3RcbiAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJhYnN0cmFjdCBkb21haW5cIilcbiAgICAgICAoSnNvblV0aWwudG9fbGlzdCAobGVtbWFfb2ZfanNvbiBzaXRlX2dyYXBoX29mX2pzb24pKSlcblxubGV0IGxlbW1hc19saXN0X29mX2pzb25fZ2VuIGludGVyZmFjZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IC0+XG4gICAgKHRyeVxuICAgICAgIGxldCBqc29uID0gTGlzdC5hc3NvYyByZWZpbmVtZW50X2xlbW1hcyBsIGluXG4gICAgICAgcG9seV9jb25zdHJhaW50c19saXN0X29mX2pzb25cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6XCJzaXRlIGdyYXBoXCJcbiAgICAgICAgICAgIChhZ2VudF9nZW5fb2ZfanNvbiBpbnRlcmZhY2Vfb2ZfanNvbikpXG4gICAgICAgICBqc29uXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvclxuICAgICAgICAgICAgKEpzb25VdGlsLmJ1aWxkX21zZyBcInJlZmluZW1lbnQgbGVtbWFzIGxpc3RcIiwgeCkpKVxuICB8IHggLT5cbiAgICByYWlzZVxuICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgIChKc29uVXRpbC5idWlsZF9tc2cgXCJyZWZpbmVtZW50IGxlbW1hcyBsaXN0XCIsIHgpKVxuXG5sZXQgbGVtbWFzX2xpc3Rfb2ZfanNvbiBqc29uID1cbiAgbGVtbWFzX2xpc3Rfb2ZfanNvbl9nZW4gaW50ZXJmYWNlX2xpZ2h0X29mX2pzb24ganNvblxuXG5sZXQgYWdlbnRfZ2VuX3RvX2pzb24gaW50ZXJmYWNlX3RvX2pzb24gPVxuICBKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmFnZW50IH5sYWIyOmludGVyZmFjZSBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICBpbnRlcmZhY2VfdG9fanNvblxuXG5sZXQgcG9seV9jb25zdHJhaW50c19saXN0X3RvX2pzb24gc2l0ZV9ncmFwaF90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgSnNvblV0aWwub2ZfbGlzdFxuICAgIChKc29uVXRpbC5vZl9wYWlyIH5sYWIxOmRvbWFpbl9uYW1lIH5sYWIyOnJlZmluZW1lbnRzX2xpc3RcbiAgICAgICBKc29uVXRpbC5vZl9zdHJpbmdcbiAgICAgICAoSnNvblV0aWwub2ZfbGlzdCAobGVtbWFfdG9fanNvbiBzaXRlX2dyYXBoX3RvX2pzb24pKSlcbiAgICBjb25zdHJhaW50c1xuXG5sZXQgbGVtbWFzX2xpc3RfdG9fanNvbl9nZW4gaW50ZXJmYWNlX3RvX2pzb24gY29uc3RyYWludHMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIHJlZmluZW1lbnRfbGVtbWFzLFxuICAgICAgICBwb2x5X2NvbnN0cmFpbnRzX2xpc3RfdG9fanNvblxuICAgICAgICAgIChKc29uVXRpbC5vZl9saXN0IChhZ2VudF9nZW5fdG9fanNvbiBpbnRlcmZhY2VfdG9fanNvbikpXG4gICAgICAgICAgY29uc3RyYWludHMgKTtcbiAgICBdXG5cbmxldCBsZW1tYXNfbGlzdF90b19qc29uIGNvbnN0cmFpbnRzID1cbiAgbGVtbWFzX2xpc3RfdG9fanNvbl9nZW4gaW50ZXJmYWNlX2xpZ2h0X3RvX2pzb24gY29uc3RyYWludHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCByYXdfdmVyc2lvbl9zdHJpbmcgPSBcIiRGb3JtYXQ6JUQkXCJcblxubGV0IGV4dHJhY3RfdGFnX3JlID1cbiAgUmUuY29tcGlsZVxuICAgIChSZS5zZXEgWyBSZS5zdHIgXCJ0YWc6IFwiOyBSZS5ncm91cCAoUmUucmVwIChSZS5jb21wbCBbIFJlLmNoYXIgJywnIF0pKSBdKVxuXG5sZXQgdmVyc2lvbl9zdHJpbmcgPVxuICBtYXRjaCBSZS5leGVjX29wdCBleHRyYWN0X3RhZ19yZSByYXdfdmVyc2lvbl9zdHJpbmcgd2l0aFxuICB8IFNvbWUgZ3IgLT4gUmUuR3JvdXAuZ2V0IGdyIDFcbiAgfCBOb25lIC0+IEdpdF92ZXJzaW9uLnRcblxubGV0IHZlcnNpb25fbXNnID0gXCJLYXBwYSBTaW11bGF0b3I6IFwiIF4gdmVyc2lvbl9zdHJpbmdcbmxldCB2ZXJzaW9uX2thc2FfZnVsbF9uYW1lID0gXCJLYXBwYSBTdGF0aWMgQW5hbHl6ZXIgKFwiIF4gdmVyc2lvbl9zdHJpbmcgXiBcIilcIlxubGV0IHZlcnNpb25fa2FkZV9mdWxsX25hbWUgPSBcIkthREUgKFwiIF4gdmVyc2lvbl9zdHJpbmcgXiBcIilcIlxubGV0IHRrX2lzX2luaXRpYWxpemVkID0gcmVmIGZhbHNlXG4iLCIoKiBTaW1pbGFyIHRvIE9DYW1sJ3Mgc3RhbmRhcmQgQXJnIG1vZHVsZSBidXQgd2l0aCBzb21lIGltcHJvdmVtZW50czpcbiAgIC0gb3B0aW9ucyBhcmUgY2xhc3NpZmllZCB3aXRoIHJlc3BlY3QgdG8gY2F0ZWdvcmllc1xuICAgLSBuZW9waHl0ZSAvIGV4cGVydCBtb2Rlc1xuICAgLSBoaWRkZW4gb3B0aW9uc1xuXG4gICBOb3RlIHRoYXQgdGhlIHNwZWMgdHlwZSBpcyByZWFsbHkgZGlmZmVyZW50LlxuXG4gICBDb3B5cmlnaHQgKEMpIEFudG9pbmUgTWluZScgMjAwNlxuKilcblxubGV0IGV4cGVydF9tb2RlID0gcmVmIGZhbHNlICgqIHNob3dzIGV4cGVydCBvcHRpb25zICopXG5sZXQgZGV2X21vZGUgPSByZWYgZmFsc2UgKCogYWNjZXB0IF9BTExfIG9wdGlvbnMgKilcblxuKCogVHlwZXMgKilcbigqICoqKioqICopXG5cbnR5cGUga2V5ID0gc3RyaW5nICgqIGNvbW1hbmQtbGluZSBhcmd1bWVudCAqKVxudHlwZSBtc2cgPSBzdHJpbmcgKCogaGVscCBtZXNzYWdlICopXG5cbigqIHR5cGUgb2Ygb3B0aW9uICopXG50eXBlIGxldmVsID1cbiAgfCBOb3JtYWwgKCogYWx3YXlzIHNob3duICYgYWNjZXB0ZWQgKilcbiAgfCBFeHBlcnQgKCogc2hvd24gaW4gZXhwZXJ0IG9yIGRldmVsb3BwZXIgbW9kZSwgYWx3YXlzIGFjY2VwdGVkICopXG4gIHwgRGV2ZWxvcHBlciAoKiBvbmx5IHNob3duICYgYWNjZXB0ZWQgaW4gZGV2ZWxvcHBlciBtb2RlICopXG4gIHwgSGlkZGVuICgqIG5ldmVyIHNob3duICopXG5cbm1vZHVsZSBTdHJpbmdJbnQgPSBzdHJ1Y3RcbiAgdHlwZSB0ID0gc3RyaW5nICogaW50ICogbGV2ZWwgb3B0aW9uXG5cbiAgbGV0IGNvbXBhcmUgKGEsIGIsIF8pIChjLCBkLCBfKSA9XG4gICAgbGV0IGNtcCA9IGNvbXBhcmUgYiBkIGluXG4gICAgaWYgY21wID0gMCB0aGVuXG4gICAgICBjb21wYXJlIGEgY1xuICAgIGVsc2VcbiAgICAgIGNtcFxuXG4gIGxldCBwcmludCBmbXQgKGEsIGIsIF8pID0gRm9ybWF0LmZwcmludGYgZm10IFwiJXM6JWlcIiBhIGJcbmVuZFxuXG5tb2R1bGUgU3RyaW5nSW50U2V0TWFwID0gU2V0TWFwLk1ha2UgKFN0cmluZ0ludClcbm1vZHVsZSBTdHJpbmdJbnRNYXAgPSBTdHJpbmdJbnRTZXRNYXAuTWFwXG5tb2R1bGUgU3RyaW5nSW50U2V0ID0gU3RyaW5nSW50U2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ1NldE1hcCA9IE1vZHMuU3RyaW5nU2V0TWFwXG5tb2R1bGUgU3RyaW5nU2V0ID0gU3RyaW5nU2V0TWFwLlNldFxubW9kdWxlIFN0cmluZ01hcCA9IFN0cmluZ1NldE1hcC5NYXBcblxubGV0IG1pbl9sZXZlbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBOb3JtYWwsIF8gfCBfLCBOb3JtYWwgLT4gTm9ybWFsXG4gIHwgRXhwZXJ0LCBfIHwgXywgRXhwZXJ0IC0+IEV4cGVydFxuICB8IERldmVsb3BwZXIsIF8gfCBfLCBEZXZlbG9wcGVyIC0+IERldmVsb3BwZXJcbiAgfCBIaWRkZW4sIEhpZGRlbiAtPiBIaWRkZW5cblxubGV0IG1heF9sZXZlbCBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBIaWRkZW4sIF8gfCBfLCBIaWRkZW4gLT4gSGlkZGVuXG4gIHwgRGV2ZWxvcHBlciwgXyB8IF8sIERldmVsb3BwZXIgLT4gRGV2ZWxvcHBlclxuICB8IEV4cGVydCwgXyB8IF8sIEV4cGVydCAtPiBFeHBlcnRcbiAgfCBOb3JtYWwsIE5vcm1hbCAtPiBOb3JtYWxcblxubGV0IG1heF9sZXZlbF9vcHQgYSBiID1cbiAgbWF0Y2ggYiB3aXRoXG4gIHwgTm9uZSAtPiBhXG4gIHwgU29tZSBiIC0+IG1heF9sZXZlbCBhIGJcblxudHlwZSBwb3NpdGlvbiA9IGludFxudHlwZSBjYXRlZ29yeSA9IHN0cmluZyAqIHBvc2l0aW9uICogbGV2ZWwgb3B0aW9uXG5cbnR5cGUgc3BlYyA9XG4gIHwgVm9pZCAoKiBUbyBza2lwIGEgbGluZSAqKVxuICB8IEJvb2wgb2YgYm9vbCByZWYgKCogU2V0cyBhIGJvb2xlYW4gdmFsdWUgKilcbiAgfCBJbnQgb2YgaW50IHJlZiAoKiBTZXRzIGFuIGludGVnZXIgdmFsdWUgKilcbiAgfCBJbnRfb3B0IG9mIGludCBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgaW50ZWdlciB2YWx1ZSAqKVxuICB8IFN0cmluZyBvZiBzdHJpbmcgcmVmICgqIFNldHMgYSBzdHJpbmcgdmFsdWUgKilcbiAgfCBTdHJpbmdfb3B0IG9mIHN0cmluZyBvcHRpb24gcmVmICgqIFNldHMgYW4gb3B0aW9uYWwgc3RyaW5nIHZhbHVlICopXG4gIHwgU3RyaW5nX2xpc3Qgb2Ygc3RyaW5nIGxpc3QgcmVmICgqIFNldHMgYSBsaXN0IG9mIHN0cmluZ3MgKilcbiAgfCBTdHJpbmdOYnJfbGlzdCBvZlxuICAgICAgKHN0cmluZyAqIHN0cmluZykgbGlzdCByZWYgKCogU2V0cyBhIGxpc3Qgb2YgcGFpcnMgb2Ygc3RyaW5ncyAqKVxuICB8IEZsb2F0IG9mIGZsb2F0IHJlZiAoKiBTZXRzIGEgZmxvYXQgdmFsdWUgKilcbiAgfCBGbG9hdF9vcHQgb2YgZmxvYXQgb3B0aW9uIHJlZiAoKiBTZXRzIGFuIG9wdGlvbmFsICBmbG9hdCB2YWx1ZSAqKVxuICAoKiBvbmUgb3Igc2V2ZXJhbCBvcHRpb25zIGFtb25nIGEgbGlzdCAqKVxuICB8IENob2ljZSBvZiAoa2V5ICogbXNnKSBsaXN0ICoga2V5IGxpc3QgKiBrZXkgcmVmXG4gIHwgQ2hvaWNlX2xpc3Qgb2YgKGtleSAqIG1zZykgbGlzdCAqIGtleSBsaXN0IHJlZlxuICAoKiBtZXRhLW9wdGlvbnMgdG8gc2V0IHNldmVyYWwgb3B0aW9ucyBhdCBvbmNlOlxuICAgICAtIDFzdCBvcHRpb24gbGlzdCBpcyBhcHBlbmRlZCBhcy1pcyB3aGVuIHRoZSBvcHRpb24gaXMgdXNlZFxuICAgICAtIHdoZW4gMi1zdCBsaXN0IGlzIG5vdCBlbXB0eSwgdGhlIG1ldGEgb3B0aW9uIHRha2VzIGFuIGFyZ3VtZW50IHRoYXRcbiAgICAgaXMgcGFzc2VkIHRvIGVhY2ggb3B0aW9uIGluIHRoZSBsaXN0XG4gICAgIC0gdGhlIGtleXMgaW4gYm90aCBsaXN0cyBtdXN0IGFwcGVhciBhcyByZWd1bGFyIG9wdGlvbnMgYXMgd2VsbCFcbiAgKilcbiAgfCBNdWx0aSBvZiBrZXkgbGlzdCAqIGtleSBsaXN0XG4gICAgKCogbWV0YS1vcHRpb25zLCB0YWtlIGEgbGlzdCBvZiAoayxleHQpOmtleSpzdHJpbmcgYW5kIGdpdmUgdG8gdGhlIG9wdGlvbiBrIHRoZSBwYXJhbWV0ZXIgc15leHQgKilcbiAgfCBNdWx0aUV4dCBvZiAoa2V5ICogc3RyaW5nKSBsaXN0XG5cbnR5cGUgdCA9IChrZXkgKiBzcGVjICogbXNnICogKGNhdGVnb3J5ICogcG9zaXRpb24pIGxpc3QgKiBsZXZlbCkgbGlzdFxuXG4oKiBVdGlsaXRpZXMgKilcbigqICoqKioqKioqKiAqKVxuXG5sZXQgc2hvd19sZXZlbCAobHZsIDogbGV2ZWwpIDogYm9vbCA9XG4gIG1hdGNoIGx2bCB3aXRoXG4gIHwgTm9ybWFsIC0+IHRydWVcbiAgfCBFeHBlcnQgLT4gIWV4cGVydF9tb2RlXG4gIHwgRGV2ZWxvcHBlciAtPiAhZGV2X21vZGUgJiYgIWV4cGVydF9tb2RlXG4gIHwgSGlkZGVuIC0+IGZhbHNlXG5cbmxldCBzaG93X2xldmVsX29wdCAobHZsX29wdCA6IGxldmVsIG9wdGlvbikgOiBib29sID1cbiAgbWF0Y2ggbHZsX29wdCB3aXRoXG4gIHwgTm9uZSAtPiB0cnVlXG4gIHwgU29tZSBsdmwgLT4gc2hvd19sZXZlbCBsdmxcblxubGV0IGFjY2VwdF9sZXZlbF9kaXNwbGF5IChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgfCBFeHBlcnQgLT4gdHJ1ZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlXG4gIHwgSGlkZGVuIC0+IGZhbHNlXG5cbmxldCBhY2NlcHRfbGV2ZWxfdXNlIChsdmwgOiBsZXZlbCkgOiBib29sID1cbiAgbWF0Y2ggbHZsIHdpdGhcbiAgfCBOb3JtYWwgfCBFeHBlcnQgfCBIaWRkZW4gLT4gdHJ1ZVxuICB8IERldmVsb3BwZXIgLT4gIWRldl9tb2RlXG5cbmxldCBpc2tleSAoayA6IGtleSkgPSBTdHJpbmcubGVuZ3RoIGsgPiAyICYmIGsuWzBdID0gJy0nICYmIGsuWzFdID0gJy0nXG5cbigqIC0tWFhYID0+IC0tbm8tWFhYICopXG5sZXQgbm9rZXkgKGsgOiBrZXkpID1cbiAgaWYgU3RyaW5nLmxlbmd0aCBrID4gMiAmJiBrLlswXSA9ICctJyAmJiBrLlsxXSA9ICctJyB0aGVuXG4gICAgXCItLW5vLVwiIF4gU3RyaW5nLnN1YiBrIDIgKFN0cmluZy5sZW5ndGggayAtIDIpXG4gIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBrID4gMSAmJiBrLlswXSA9ICctJyB0aGVuXG4gICAgXCItbm8tXCIgXiBTdHJpbmcuc3ViIGsgMSAoU3RyaW5nLmxlbmd0aCBrIC0gMSlcbiAgZWxzZVxuICAgIGZhaWx3aXRoIChrIF4gXCIgb3B0aW9uIChubykgZG9lcyBub3QgYmVnaW4gd2l0aCAtLSBub3IgLVwiKVxuXG4oKiAtLVhYWCA9PiAtLShuby0pWFhYICopXG5sZXQgYWx0a2V5IChrIDoga2V5KSA9XG4gIGlmIFN0cmluZy5sZW5ndGggayA+IDIgJiYgay5bMF0gPSAnLScgJiYgay5bMV0gPSAnLScgdGhlblxuICAgIFwiLS0obm8tKVwiIF4gU3RyaW5nLnN1YiBrIDIgKFN0cmluZy5sZW5ndGggayAtIDIpXG4gIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBrID4gMSAmJiBrLlswXSA9ICctJyB0aGVuXG4gICAgXCItKG5vLSlcIiBeIFN0cmluZy5zdWIgayAxIChTdHJpbmcubGVuZ3RoIGsgLSAxKVxuICBlbHNlXG4gICAgZmFpbHdpdGggKGsgXiBcIiBvcHRpb24gKGFsdCkgZG9lcyBub3QgYmVnaW4gd2l0aCAtLSBub3QgLSBcIilcblxuKCogY3V0cyBhIHN0cmluZyBpbnRvIHNwYWNlLXNlcGFyYXRlZCBzdWItc3RyaW5ncyAqKVxubGV0IGN1dF9saXN0IChzIDogc3RyaW5nKSA6IHN0cmluZyBsaXN0ID1cbiAgbGV0IHJlYyBkb2l0IGFjY3VtIHBvcyA9XG4gICAgdHJ5XG4gICAgICBsZXQgaSA9IFN0cmluZy5pbmRleF9mcm9tIHMgcG9zICcgJyBpblxuICAgICAgaWYgaSA9IHBvcyB0aGVuXG4gICAgICAgIGRvaXQgYWNjdW0gKGkgKyAxKVxuICAgICAgZWxzZVxuICAgICAgICBkb2l0IChTdHJpbmcuc3ViIHMgcG9zIChpIC0gcG9zKSA6OiBhY2N1bSkgKGkgKyAxKVxuICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICBpZiBwb3MgPCBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICBTdHJpbmcuc3ViIHMgcG9zIChTdHJpbmcubGVuZ3RoIHMgLSBwb3MpIDo6IGFjY3VtXG4gICAgICBlbHNlXG4gICAgICAgIGFjY3VtXG4gIGluXG4gIExpc3QucmV2IChkb2l0IFtdIDApXG5cbigqIG9yZGVyIGJ5IGNhdGVnb3J5ICopXG5sZXQgcCAoXywgXywgXywgbCwgXykgKF8sIF8sIF8sIGwnLCBfKSA9XG4gIG1hdGNoIGwsIGwnIHdpdGhcbiAgfCBbIChfLCBpKSBdLCBbIChfLCBpJykgXSAtPiBjb21wYXJlIGkgaSdcbiAgfCAoW10gfCBfIDo6IF8gOjogXyksIF8gfCBfLCAoW10gfCBfIDo6IF8gOjogXykgLT4gYXNzZXJ0IGZhbHNlXG5cbmxldCBvcmRlciAoYSA6IHQpID1cbiAgbGV0IG9yZGVyZWQgPSByZWYgU3RyaW5nSW50TWFwLmVtcHR5IGluXG4gIExpc3QuaXRlclxuICAgIChmdW4gKGEsIGIsIGMsIGNhdCwgbHZsKSAtPlxuICAgICAgaWYgYWNjZXB0X2xldmVsX3VzZSBsdmwgdGhlblxuICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAoZnVuIChjYXQsIGkpIC0+XG4gICAgICAgICAgICBsZXQgYXNzbywgb2xkX2x2bCA9XG4gICAgICAgICAgICAgIFN0cmluZ0ludE1hcC5maW5kX2RlZmF1bHQgKFtdLCBIaWRkZW4pIGNhdCAhb3JkZXJlZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIG9yZGVyZWQgOj1cbiAgICAgICAgICAgICAgU3RyaW5nSW50TWFwLmFkZCBjYXRcbiAgICAgICAgICAgICAgICAoKGEsIGIsIGMsIFsgY2F0LCBpIF0sIGx2bCkgOjogYXNzbywgbWluX2xldmVsIGx2bCBvbGRfbHZsKVxuICAgICAgICAgICAgICAgICFvcmRlcmVkKVxuICAgICAgICAgIGNhdClcbiAgICBhO1xuICBvcmRlcmVkIDo9IFN0cmluZ0ludE1hcC5tYXAgKGZ1biAoYSwgYikgLT4gTGlzdC5zb3J0IHAgYSwgYikgIW9yZGVyZWQ7XG4gICFvcmRlcmVkXG5cbigqIHNhbml0eSBjaGVja2luZyAqKVxubGV0IGNoZWNrIChhIDogdCkgPVxuICAoKiBjaGVjayBkdXBsaWNhdGVzICYgY29tcHV0ZSBvcHRpb24gbGlzdCAqKVxuICBsZXQgb3B0cyA9IHJlZiBTdHJpbmdTZXQuZW1wdHkgaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAoa2V5LCBiLCBfLCBfLCBfKSAtPlxuICAgICAgaWYgYiA9IFZvaWQgdGhlblxuICAgICAgICAoKVxuICAgICAgZWxzZSBpZiBTdHJpbmdTZXQubWVtIGtleSAhb3B0cyB8fCBTdHJpbmdTZXQubWVtIChub2tleSBrZXkpICFvcHRzIHRoZW5cbiAgICAgICAgZmFpbHdpdGggKFwiRHVwbGljYXRlIG9wdGlvbiBcIiBeIGtleSk7XG4gICAgICBvcHRzIDo9IFN0cmluZ1NldC5hZGQga2V5ICFvcHRzO1xuICAgICAgb3B0cyA6PSBTdHJpbmdTZXQuYWRkIChub2tleSBrZXkpICFvcHRzKVxuICAgIGE7XG4gICgqIGNoZWNrIHN1Yi1vcHRpb25zIGluIE11bGktb3B0aW9ucyAqKVxuICBMaXN0Lml0ZXJcbiAgICAoZnVuIChrZXksIHQsIF8sIF8sIF8pIC0+XG4gICAgICBtYXRjaCB0IHdpdGhcbiAgICAgIHwgTXVsdGkgKGEsIGIpIC0+XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biBzIC0+XG4gICAgICAgICAgICAgIGlmIGlza2V5IHMgJiYgbm90IChTdHJpbmdTZXQubWVtIHMgIW9wdHMpIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCAoXCJVbmtub3duIG9wdGlvbiBcIiBeIHMgXiBcIiBpbiBtdWx0aS1vcHRpb24gXCIgXiBrZXkpKVxuICAgICAgICBpblxuICAgICAgICBmIGE7XG4gICAgICAgIGYgYlxuICAgICAgfCBWb2lkIHwgSW50IF8gfCBGbG9hdCBfIHwgQ2hvaWNlIF8gfCBCb29sIF8gfCBJbnRfb3B0IF8gfCBTdHJpbmcgX1xuICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfIHwgU3RyaW5nX29wdCBfIHwgU3RyaW5nX2xpc3QgXyB8IEZsb2F0X29wdCBfXG4gICAgICB8IENob2ljZV9saXN0IChfLCBfKVxuICAgICAgfCBNdWx0aUV4dCBfIC0+XG4gICAgICAgICgpKVxuICAgIGFcblxuKCogQ29tbWFuZC1saW5lIGludGVyZmFjZSAqKVxuKCogKioqKioqKioqKioqKioqKioqKioqKiAqKVxuXG4oKiBwcmludHMgYSBzdHJpbmcgd2l0aCBicmVha3MgaW5zdGVhZCBvZiBzcGFjZSAqKVxubGV0IHByaW50X21zZyBmIChzIDogc3RyaW5nKSA9XG4gIFBwLmxpc3QgUHAuc3BhY2UgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChjdXRfbGlzdCBzKVxuXG4oKiBkb2N1bWVudCB0aGUgb3B0aW9ucyBvbiB0aGUgc3RhbmRhcmQgb3V0cHV0ISAqKVxubGV0IHByaW50X29wdGlvbiB2ZXJib3NlIGYgKGtleSwgc3BlYywgbXNnLCBfY2F0LCBfbHZsKSA9XG4gIGxldCBrZXkyID0gYWx0a2V5IGtleSBpblxuICAobWF0Y2ggc3BlYyB3aXRoXG4gIHwgQm9vbCByIC0+XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgICAgKGRlZmF1bHQ6ICVzKUAuXCIga2V5MlxuICAgICAgKGlmICFyIHRoZW5cbiAgICAgICAgIFwiZW5hYmxlZFwiXG4gICAgICAgZWxzZVxuICAgICAgICAgXCJkaXNhYmxlZFwiKVxuICB8IFZvaWQgLT4gKClcbiAgfCBJbnQgciAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8aW50PiAgIChkZWZhdWx0OiAlaSlALlwiIGtleSAhclxuICB8IEludF9vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSBpIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxpbnQ+ICAgKGRlZmF1bHQ6ICVpKUAuXCIga2V5MiBpKVxuICB8IFN0cmluZyByIC0+XG4gICAgKG1hdGNoICFyIHdpdGhcbiAgICB8IFwiXCIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5XG4gICAgfCBzIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lPiAgIChkZWZhdWx0OiAlcylALlwiIGtleSBzKVxuICB8IFN0cmluZ19vcHQgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBOb25lIHwgU29tZSBcIlwiIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZT4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBTb21lIHMgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPG5hbWU+ICAgKGRlZmF1bHQgJXMpQC5cIiBrZXkyIHMpXG4gIHwgU3RyaW5nX2xpc3QgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IC4uLiAgIChkZWZhdWx0OiBkaXNhYmxlZClALlwiIGtleTJcbiAgICB8IGwgLT5cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxuYW1lcz4gLi4uICAgKGRlZmF1bHQgJWEpQC5cIiBrZXkyXG4gICAgICAgIChQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcpXG4gICAgICAgIGwpXG4gIHwgU3RyaW5nTmJyX2xpc3QgciAtPlxuICAgIChtYXRjaCAhciB3aXRoXG4gICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IDwuLi4gICAoZGVmYXVsdDogZGlzYWJsZWQpQC5cIiBrZXkyXG4gICAgfCBsIC0+XG4gICAgICBsZXQgcmVjIGF1eCBsaXN0ID1cbiAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgIHwgKGgxLCBoMikgOjogdGFpbCAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8bmFtZXM+IDx2YWx1ZT4gKGRlZmF1bHQgJXMgJXMpXCIga2V5MiBoMSBoMlxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IHRhaWxcbiAgICAgICAgfCBbXSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIlxuICAgICAgaW5cbiAgICAgIGF1eCBsKVxuICB8IEZsb2F0IHIgLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPGZsb2F0PiAgIChkZWZhdWx0ICVmKUAuXCIga2V5ICFyXG4gIHwgRmxvYXRfb3B0IHIgLT5cbiAgICAobWF0Y2ggIXIgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyA8ZmxvYXQ+ICAgKGRlZmF1bHQ6IGRpc2FibGVkKUAuXCIga2V5MlxuICAgIHwgU29tZSB2IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDxmbG9hdD4gICAoZGVmYXVsdDogJWYpQC5cIiBrZXkyIHYpXG4gIHwgQ2hvaWNlIChsLCBfLCByKSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIEBbJWFAXSBAICAoZGVmYXVsdDogJXMpQC5cIiBrZXlcbiAgICAgIChQcC5saXN0XG4gICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIiB8QCBcIilcbiAgICAgICAgIChmdW4gZiAoa2V5LCBfbXNnKSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYga2V5KSlcbiAgICAgIGwgIXJcbiAgfCBDaG9pY2VfbGlzdCAobCwgcikgLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiICAlcyBAWyVhQF1ALlwiIGtleTJcbiAgICAgIChQcC5saXN0IFBwLnNwYWNlIChmdW4gZiAoa2V5LCBfbXNnKSAtPlxuICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiWyVzJXNdXCIga2V5XG4gICAgICAgICAgICAgKGlmIExpc3QubWVtIGtleSAhciB0aGVuXG4gICAgICAgICAgICAgICAgXCIgKGRlZmF1bHQpXCJcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFwiXCIpKSlcbiAgICAgIGxcbiAgfCBNdWx0aSAoXywgW10pIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzQC5cIiBrZXlcbiAgfCBNdWx0aSBfIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCIgICVzIDx2YWx1ZT5ALlwiIGtleVxuICB8IE11bHRpRXh0IF8gLT4gRm9ybWF0LmZwcmludGYgZiBcIiAgJXMgPHZhbHVlPkAuXCIga2V5KTtcblxuICAoKiBzaG93cyBkZXNjcmlwdGlvbiBpZiBpbiB2ZXJib3NlIG1vZGUgKilcbiAgaWYgdmVyYm9zZSAmJiBtc2cgPD4gXCJcIiB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCIgICAgICBAWyVhQF1ALlwiIHByaW50X21zZyBtc2dcblxubGV0IHByaW50X2hlbHAgKGhlYWRlciA6IGJvb2wpICh2ZXJib3NlIDogYm9vbCkgZiAoYSA6IHQpID1cbiAgbGV0IG5iID0gcmVmIDAgaW5cblxuICAoKiBnZW5lcmFsIG9wdGlvbnMgKilcbiAgaWYgaGVhZGVyIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAuR2VuZXJhbCBvcHRpb25zQC5cIjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS1oZWxwICAgICAgICAgICAgVmVyYm9zZSBoZWxwQC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgIC1oICAgICAgICAgICAgICAgU2hvcnQgaGVscEAuXCI7XG4gIGluY3IgbmI7XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIgIC0tdmVyc2lvbiAgICAgICAgIFNob3cgdmVyc2lvbiBudW1iZXJALlwiO1xuICBpbmNyIG5iO1xuICBGb3JtYXQuZnByaW50ZiBmIFwiICAtLWd1aSAgICAgICAgICAgICBHVUkgdG8gc2VsZWN0QC5cIjtcbiAgaW5jciBuYjtcbiAgRm9ybWF0LmZwcmludGYgZiBcIiAgLS0obm8tKWV4cGVydCAgICAgRXhwZXJ0IG1vZGUgKG1vcmUgb3B0aW9ucylALlwiO1xuICBpbmNyIG5iO1xuICBpZiB2ZXJib3NlICYmIGhlYWRlciB0aGVuIEZvcm1hdC5mcHJpbnRmIGYgXCJALlwiO1xuXG4gICgqIGR1bXAgKilcbiAgU3RyaW5nSW50TWFwLml0ZXJcbiAgICAoZnVuIChjYXQsIF8sIGx2bF9vcHQpIChsLCBsdmwpIC0+XG4gICAgICBpZiBzaG93X2xldmVsX29wdCBsdmxfb3B0ICYmIHNob3dfbGV2ZWwgbHZsIHRoZW4gKFxuICAgICAgICBpZiBoZWFkZXIgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiJXNALlwiIGNhdDtcbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biAoKF8sIF8sIF8sIF8sIGx2bCkgYXMgeCkgLT5cbiAgICAgICAgICAgIGlmIHNob3dfbGV2ZWwgbHZsIHRoZW4gKFxuICAgICAgICAgICAgICBpbmNyIG5iO1xuICAgICAgICAgICAgICBwcmludF9vcHRpb24gdmVyYm9zZSBmIHhcbiAgICAgICAgICAgICkpXG4gICAgICAgICAgbDtcbiAgICAgICAgaWYgaGVhZGVyICYmIHZlcmJvc2UgdGhlbiBGb3JtYXQuZnByaW50ZiBmIFwiQC5cIlxuICAgICAgKSlcbiAgICAob3JkZXIgYSk7XG5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiglaSBvcHRpb25zKUAuXCIgIW5iXG5cbigqIHBhcnNlIHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBnaXZlbiBhcyBhIGxpc3Qgb2Ygc3RyaW5ncyxcbiAgIHJldHVybnMgdGhlIGxpc3Qgb2Ygbm9uLW9wdGlvbnMgKGZpbGVuYW1lcykgaW4gcmV2ZXJzZSBvcmRlcilcbiopXG5sZXQgcGFyc2VfbGlzdCB+d2l0aF90ayA/dGl0bGUgKGEgOiB0KSAobCA6IHN0cmluZyBsaXN0KSA6IHN0cmluZyBsaXN0ID1cbiAgbGV0IGxvbmdfaGVscCA9IHJlZiBmYWxzZVxuICBhbmQgc2hvcnRfaGVscCA9IHJlZiBmYWxzZVxuICBhbmQgc2hvd192ZXJzaW9uID0gcmVmIGZhbHNlIGluXG5cbiAgbGV0IHJlYyBkb2l0IGFjY3VtID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGFjY3VtXG4gICAgfCBvcHQgOjogcmVtIC0+XG4gICAgICAoKiAtIG1lYW5zIG5vIG1vcmUgb3B0aW9uczogdGhlIHJlc3QgYXJlIGZpbGVuYW1lcyAqKVxuICAgICAgaWYgb3B0ID0gXCItXCIgdGhlblxuICAgICAgICBMaXN0LnJldl9hcHBlbmQgcmVtIGFjY3VtXG4gICAgICAoKiBoZWxwIG9wdGlvbnMgKilcbiAgICAgIGVsc2UgaWYgb3B0ID0gXCItaGVscFwiIHx8IG9wdCA9IFwiLS1oZWxwXCIgdGhlbiAoXG4gICAgICAgIGxvbmdfaGVscCA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLWhcIiB0aGVuIChcbiAgICAgICAgKCogc2hvcnRlciBsaXN0ICopXG4gICAgICAgIHNob3J0X2hlbHAgOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogdmVyc2lvbiBudW1iZXIgKilcbiAgICAgICkgZWxzZSBpZiBvcHQgPSBcIi0tdmVyc2lvblwiIHRoZW4gKFxuICAgICAgICBzaG93X3ZlcnNpb24gOj0gdHJ1ZTtcbiAgICAgICAgZG9pdCBhY2N1bSByZW0gKCogZXhwZXJ0ICopXG4gICAgICApIGVsc2UgaWYgb3B0ID0gXCItLWV4cGVydFwiIHRoZW4gKFxuICAgICAgICBleHBlcnRfbW9kZSA6PSB0cnVlO1xuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgKSBlbHNlIGlmIG9wdCA9IFwiLS1uby1leHBlcnRcIiB0aGVuIChcbiAgICAgICAgZXhwZXJ0X21vZGUgOj0gZmFsc2U7XG4gICAgICAgIGRvaXQgYWNjdW0gcmVtICgqIHJlZ3VsYXIgb3B0aW9uLCBzdGFydGluZyB3aXRoIFwiLVwiICopXG4gICAgICApIGVsc2UgaWYgU3RyaW5nLmxlbmd0aCBvcHQgPiAxICYmIG9wdC5bMF0gPSAnLScgdGhlbiAoXG4gICAgICAgIGxldCAoKGtleSwgc3BlYywgXywgXywgXykgYXMgYWEpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIExpc3QuZmluZFxuICAgICAgICAgICAgICAoZnVuIChrZXksIF9zcGVjLCBfbXNnLCBfY2F0LCBsdmwpIC0+XG4gICAgICAgICAgICAgICAgYWNjZXB0X2xldmVsX3VzZSBsdmwgJiYgKG9wdCA9IGtleSB8fCBvcHQgPSBub2tleSBrZXkpKVxuICAgICAgICAgICAgICBhXG4gICAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAgIEZvcm1hdC5wcmludGZcbiAgICAgICAgICAgICAgXCJIZXJlIGlzIHRoZSBsaXN0IG9mIHJlY29nbml6ZWQgb3B0aW9uc0AuJWFALlVucmVjb2duaXplZCBcXFxuICAgICAgICAgICAgICAgb3B0aW9uOiAlc0AuQC5cIlxuICAgICAgICAgICAgICAocHJpbnRfaGVscCB0cnVlIGZhbHNlKSBhIG9wdDtcbiAgICAgICAgICAgIGZhaWx3aXRoIFwiYmFkIG9wdGlvblwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZW0gPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbWF0Y2ggc3BlYywgcmVtIHdpdGhcbiAgICAgICAgICAgIHwgQm9vbCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBvcHQgPSBrZXk7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAwO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gaW50X29mX3N0cmluZyB2O1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgSW50X29wdCByLCBcIlwiIDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBJbnRfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSAoaW50X29mX3N0cmluZyB2KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEludF9vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZyByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmcgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gXCJcIjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgU3RyaW5nX29wdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IFNvbWUgdjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19vcHQgciwgcmVtIC0+XG4gICAgICAgICAgICAgIHIgOj0gTm9uZTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ19saXN0IF8sIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+IHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCByLCB2IDo6IHJlbSB3aGVuIG9wdCA9IGtleSAtPlxuICAgICAgICAgICAgICByIDo9IHYgOjogIXI7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdfbGlzdCByLCByZW0gLT5cbiAgICAgICAgICAgICAgciA6PSBbXTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IF8sIFwiXCIgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+IHJlbVxuICAgICAgICAgICAgfCBTdHJpbmdOYnJfbGlzdCBfLCBbIF8gXSB3aGVuIG9wdCA9IGtleSAtPiBmYWlsd2l0aCBcImludmFsaWQgcGFpclwiXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IHIsIHYnIDo6IHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gKHYsIHYnKSA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IFN0cmluZ05icl9saXN0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSAwLjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IEZsb2F0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gZmxvYXRfb2Zfc3RyaW5nIHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBGbG9hdF9vcHQgciwgXCJcIiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgciA6PSBOb25lO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIHIgOj0gU29tZSAoZmxvYXRfb2Zfc3RyaW5nIHYpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgRmxvYXRfb3B0IHIsIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IE5vbmU7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2UgKGwsIGwnLCByKSwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAobm90IChMaXN0LmV4aXN0cyAoZnVuIChrLCBfKSAtPiB2ID0gaykgbCkpXG4gICAgICAgICAgICAgICAgJiYgbm90IChMaXN0LmV4aXN0cyAoZnVuIGsgLT4gdiA9IGspIGwnKVxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIGNob2ljZVwiO1xuICAgICAgICAgICAgICByIDo9IHY7XG4gICAgICAgICAgICAgIHJlbVxuICAgICAgICAgICAgfCBDaG9pY2VfbGlzdCAobCwgciksIHYgOjogcmVtIHdoZW4gb3B0ID0ga2V5IC0+XG4gICAgICAgICAgICAgIGlmIG5vdCAoTGlzdC5leGlzdHMgKGZ1biAoaywgXykgLT4gdiA9IGspIGwpIHRoZW5cbiAgICAgICAgICAgICAgICBmYWlsd2l0aCBcImludmFsaWQgY2hvaWNlXCI7XG4gICAgICAgICAgICAgIHIgOj0gdiA6OiAhcjtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IENob2ljZV9saXN0IChfbCwgciksIHJlbSAtPlxuICAgICAgICAgICAgICByIDo9IFtdO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGkgKHgsIFtdKSwgcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZSAoZG9pdCBbXSB4KTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpICh4LCB5KSwgdiA6OiByZW0gLT5cbiAgICAgICAgICAgICAgaWdub3JlIChkb2l0IFtdIHgpO1xuICAgICAgICAgICAgICBpZ25vcmUgKExpc3QuZm9sZF9sZWZ0IChmdW4gXyBsIC0+IGRvaXQgW10gWyBsOyB2IF0pIGFjY3VtIHkpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGlFeHQgbCwgdiA6OiByZW0gd2hlbiBvcHQgPSBrZXkgLT5cbiAgICAgICAgICAgICAgaWdub3JlXG4gICAgICAgICAgICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gXyAobCwgcykgLT4gZG9pdCBbXSBbIGw7IHYgXiBzIF0pIGFjY3VtIGwpO1xuICAgICAgICAgICAgICByZW1cbiAgICAgICAgICAgIHwgTXVsdGlFeHQgbCwgcmVtIC0+XG4gICAgICAgICAgICAgIGlnbm9yZVxuICAgICAgICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgIChmdW4gXyAobCwgcykgLT4gZG9pdCBbXSBbIG5va2V5IGw7IHMgXSlcbiAgICAgICAgICAgICAgICAgICBhY2N1bSBsKTtcbiAgICAgICAgICAgICAgcmVtXG4gICAgICAgICAgICB8IE11bHRpIF8sIFtdIHwgKFZvaWQgfCBJbnQgXyB8IEZsb2F0IF8gfCBDaG9pY2UgXyksIF8gLT5cbiAgICAgICAgICAgICAgZmFpbHdpdGggXCJpbnZhbGlkIG9wdGlvbiBvciBhcmd1bWVudFwiXG4gICAgICAgICAgd2l0aCBfIC0+XG4gICAgICAgICAgICBGb3JtYXQucHJpbnRmIFwiV3Jvbmcgb3B0aW9uIG9yIGFyZ3VtZW50IGZvciAlc0AuJWFcIiBvcHRcbiAgICAgICAgICAgICAgKHByaW50X29wdGlvbiBmYWxzZSkgYWE7XG4gICAgICAgICAgICBmYWlsd2l0aCBcImJhZCBvcHRpb25cIlxuICAgICAgICBpblxuICAgICAgICBkb2l0IGFjY3VtIHJlbVxuICAgICAgICAoKiBkb2VzIG5vdCBzdGFydCB3aXRoIC0gPT4gdGhpcyBpcyBmaWxlbmFtZSAqKVxuICAgICAgKSBlbHNlXG4gICAgICAgIGRvaXQgKG9wdCA6OiBhY2N1bSkgcmVtXG4gIGluXG5cbiAgbGV0IGZpbGVuYW1lcyA9IGRvaXQgW10gbCBpblxuICBpZiAhc2hvd192ZXJzaW9uIHRoZW4gKFxuICAgIEZvcm1hdC5wcmludGYgXCIlcyBALih3aXRoJXMgVGsgaW50ZXJmYWNlKUAuXCJcbiAgICAgIChtYXRjaCB0aXRsZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lXG4gICAgICB8IFNvbWUgeCAtPiB4KVxuICAgICAgKGlmIHdpdGhfdGsgdGhlblxuICAgICAgICAgXCJcIlxuICAgICAgIGVsc2VcbiAgICAgICAgIFwib3V0XCIpO1xuICAgIGV4aXQgMFxuICApIGVsc2UgaWYgIWxvbmdfaGVscCB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJWFcIiAocHJpbnRfaGVscCB0cnVlIHRydWUpIGE7XG4gICAgZXhpdCAwXG4gICkgZWxzZSBpZiAhc2hvcnRfaGVscCB0aGVuIChcbiAgICBGb3JtYXQucHJpbnRmIFwiJWFcIiAocHJpbnRfaGVscCB0cnVlIGZhbHNlKSBhO1xuICAgIGV4aXQgMFxuICApO1xuICAoKiBMaXN0LmNvbmNhdCopIGZpbGVuYW1lcyAoKihMaXN0Lm1hcCBXb3JkZXhwLndvcmRleHAgZmlsZW5hbWVzKSopXG4iLCIoKiBMYWJsVEsgR1VJIGZvciBvcHRpb24gc2VsZWN0aW9uIFN1cGVyYXJnLlxuXG4gICBDb3B5cmlnaHQgKEMpIEFudG9pbmUgTWluZScgMjAwNlxuICAgTGlnaHQgVmVyc2lvbiAoSmVyb21lIEZlcmV0KVxuICAgVGhpcyBMSUdIVCB2ZXJzaW9uIGRvZXMgbm90IHJlcXVpcmUgbGFibHRrXG4qKVxuXG5leGNlcHRpb24gRXhpdCBvZiBzdHJpbmcgbGlzdFxuXG4oKiBNQUlOICopXG4oKiAqKioqICopXG5cbmxldCBwYXJzZSA/dGl0bGUgKGEgOiBTdXBlcmFyZy50KSAoZGVmIDogc3RyaW5nIGxpc3QgcmVmKSA9XG4gIFN1cGVyYXJnLmNoZWNrIGE7XG4gICgqIGRyb3AgdGhlIGZpcnN0IGNvbW1hbmQtbGluZSBhcmd1bWVudDogaXQgaXMgdGhlIGV4ZWN1dGFibGUgbmFtZSAqKVxuICBsZXQgYXJncyA9IExpc3QudGwgKEFycmF5LnRvX2xpc3QgU3lzLmFyZ3YpIGluXG4gICgqIGlmIG5vIGFyZ3VtZW50IG9yIFwiLS1ndWlcIiBnaXZlbiwgbGF1bmNoIHRoZSBndWksIG90aGVyd2lzZSwgcGFyc2UgYXJncyAqKVxuICBsZXQgcmVtID1cbiAgICBpZlxuICAgICAgYXJncyA9IFtdIHx8IGFyZ3MgPSBbIFwiLS1leHBlcnRcIiBdIHx8IGFyZ3MgPSBbIFwiLS1uby1leHBlcnRcIiBdXG4gICAgICB8fCBMaXN0LmV4aXN0cyAoKCA9ICkgXCItLWd1aVwiKSBhcmdzXG4gICAgdGhlblxuICAgICAgU3VwZXJhcmcucGFyc2VfbGlzdCB+d2l0aF90azpmYWxzZSA/dGl0bGUgYVxuICAgICAgICAoaWYgTGlzdC5leGlzdHMgKCggPSApIFwiLS1leHBlcnRcIikgYXJncyB0aGVuXG4gICAgICAgICAgIFsgXCItLWhlbHBcIjsgXCItLWV4cGVydFwiIF1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgWyBcIi0taGVscFwiIF0pXG4gICAgZWxzZVxuICAgICAgU3VwZXJhcmcucGFyc2VfbGlzdCB+d2l0aF90azpmYWxzZSA/dGl0bGUgYSBhcmdzXG4gIGluXG4gIGlmIHJlbSA8PiBbXSB0aGVuIGRlZiA6PSByZW1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBkYXRhX3NldCA9IFwiRGF0YSBzZXRcIiwgMCwgTm9uZVxubGV0IG91dHB1dCA9IFwiT3V0cHV0XCIsIDEsIE5vbmVcbmxldCBzZW1hbnRpY3MgPSBcIlNlbWFudGljc1wiLCAyLCBOb25lXG5sZXQgaW50ZWdyYXRpb25fc2V0dGluZ3MgPSBcIkludGVncmF0aW9uIHNldHRpbmdzXCIsIDMsIE5vbmVcbmxldCBtb2RlbF9yZWR1Y3Rpb24gPSBcIk1vZGVsIHJlZHVjdGlvblwiLCA0LCBOb25lXG5sZXQgc3RhdGljX2FuYWx5c2lzID0gXCJTdGF0aWMgYW5hbHlzaXNcIiwgNSwgU29tZSBTdXBlcmFyZy5FeHBlcnRcbmxldCBkZWJ1Z19tb2RlID0gXCJEZWJ1ZyBtb2RlXCIsIDYsIFNvbWUgU3VwZXJhcmcuRXhwZXJ0XG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBiYWNrdHJhY2U6IGJvb2w7IG11dGFibGUgZGVidWc6IGJvb2wgfVxuXG50eXBlIHRfZ3VpID0ge1xuICBiYWNrdHJhY2VfZ3VpOiBib29sIHJlZjtcbiAgZGVidWdfZ3VpOiBib29sIHJlZjtcbiAgdmVyc2lvbl9ndWk6IGJvb2wgcmVmO1xuICBnbHV0dG9ueV9ndWk6IGJvb2wgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPSB7IGJhY2t0cmFjZSA9IGZhbHNlOyBkZWJ1ZyA9IGZhbHNlIH1cblxubGV0IGRlZmF1bHRfZ3VpID1cbiAge1xuICAgIGJhY2t0cmFjZV9ndWkgPSByZWYgZmFsc2U7XG4gICAgZGVidWdfZ3VpID0gcmVmIGZhbHNlO1xuICAgIHZlcnNpb25fZ3VpID0gcmVmIGZhbHNlO1xuICAgIGdsdXR0b255X2d1aSA9IHJlZiBmYWxzZTtcbiAgfVxuXG5sZXQgZG9fdmVyc2lvbiAoKSA9XG4gIEZvcm1hdC5wcmludF9zdHJpbmcgVmVyc2lvbi52ZXJzaW9uX21zZztcbiAgRm9ybWF0LnByaW50X25ld2xpbmUgKCk7XG4gIGV4aXQgMFxuXG5sZXQgZG9fZ2x1dHRvbnkgKCkgPVxuICBHYy5zZXQgeyAoR2MuZ2V0ICgpKSB3aXRoIEdjLnNwYWNlX292ZXJoZWFkID0gNTAwICgqZGVmYXVsdCA4MCopIH1cblxubGV0IGdldF9mcm9tX2d1aSB0X2d1aSA9XG4gIGxldCAoKSA9IGlmICEodF9ndWkudmVyc2lvbl9ndWkpIHRoZW4gZG9fdmVyc2lvbiAoKSBpblxuICBsZXQgKCkgPSBpZiAhKHRfZ3VpLmdsdXR0b255X2d1aSkgdGhlbiBkb19nbHV0dG9ueSAoKSBpblxuICB7IGJhY2t0cmFjZSA9ICEodF9ndWkuYmFja3RyYWNlX2d1aSk7IGRlYnVnID0gISh0X2d1aS5kZWJ1Z19ndWkpIH1cblxubGV0IGNvcHlfZnJvbV9ndWkgdF9ndWkgdCA9XG4gIGxldCB0X3RtcCA9IGdldF9mcm9tX2d1aSB0X2d1aSBpblxuICB0LmJhY2t0cmFjZSA8LSB0X3RtcC5iYWNrdHJhY2U7XG4gIHQuZGVidWcgPC0gdF90bXAuZGVidWdcblxubGV0IG9wdGlvbnNfZ2VuIHQgdF9ndWkgOlxuICAgIChzdHJpbmdcbiAgICAqIEFyZy5zcGVjXG4gICAgKiBTdXBlcmFyZy5zcGVjXG4gICAgKiBzdHJpbmdcbiAgICAqIChTdXBlcmFyZy5jYXRlZ29yeSAqIFN1cGVyYXJnLnBvc2l0aW9uKSBsaXN0XG4gICAgKiBTdXBlcmFyZy5sZXZlbClcbiAgICBsaXN0ID1cbiAgW1xuICAgICggXCItLXZlcnNpb25cIixcbiAgICAgIEFyZy5Vbml0IGRvX3ZlcnNpb24sXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLnZlcnNpb25fZ3VpLFxuICAgICAgXCJkaXNwbGF5IHZlcnNpb24gbnVtYmVyXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItLWRlYnVnXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuZGVidWcgPC0gdHJ1ZSksXG4gICAgICBTdXBlcmFyZy5Cb29sIHRfZ3VpLmRlYnVnX2d1aSxcbiAgICAgIFwiRW5hYmxlIGRlYnVnIG1vZGVcIixcbiAgICAgIFsgZGVidWdfbW9kZSwgMSBdLFxuICAgICAgU3VwZXJhcmcuRXhwZXJ0ICk7XG4gICAgKCBcIi0tYmFja3RyYWNlXCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQuYmFja3RyYWNlIDwtIHRydWUpLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0X2d1aS5iYWNrdHJhY2VfZ3VpLFxuICAgICAgXCJCYWNrdHJhY2luZyBleGNlcHRpb25zXCIsXG4gICAgICBbIGRlYnVnX21vZGUsIDIgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItLWdsdXR0b255XCIsXG4gICAgICBBcmcuVW5pdCBkb19nbHV0dG9ueSxcbiAgICAgIFN1cGVyYXJnLkJvb2wgdF9ndWkuZ2x1dHRvbnlfZ3VpLFxuICAgICAgXCJMb3dlciBnYyBhY3Rpdml0eSBmb3IgYSBmYXN0ZXIgYnV0IG1lbW9yeSBpbnRlbnNpdmUgc2ltdWxhdGlvblwiLFxuICAgICAgWyBkZWJ1Z19tb2RlLCAzIF0sXG4gICAgICBTdXBlcmFyZy5FeHBlcnQgKTtcbiAgXVxuXG5sZXQgb3B0aW9ucyB0ID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgYiwgXywgYywgXywgXykgLT4gYSwgYiwgYylcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIHQgZGVmYXVsdF9ndWkpKVxuXG5sZXQgb3B0aW9uc19ndWkgdF9ndWkgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBfLCBiLCBjLCBkLCBlKSAtPiBhLCBiLCBjLCBkLCBlKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gZGVmYXVsdCB0X2d1aSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHQgPSB7XG4gIG11dGFibGUgaW5wdXRLYXBwYUZpbGVOYW1lczogc3RyaW5nIGxpc3Q7XG4gIG11dGFibGUgbWluVmFsdWU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBtYXhWYWx1ZTogZmxvYXQgb3B0aW9uO1xuICBtdXRhYmxlIHBsb3RQZXJpb2Q6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBvdXRwdXREYXRhRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBvdXRwdXREaXJlY3Rvcnk6IHN0cmluZztcbiAgbXV0YWJsZSBiYXRjaG1vZGU6IGJvb2w7XG4gIG11dGFibGUgaW50ZXJhY3RpdmU6IGJvb2w7XG4gIG11dGFibGUgc3ludGF4VmVyc2lvbjogQXN0LnN5bnRheF92ZXJzaW9uO1xufVxuXG50eXBlIHRfZ3VpID0ge1xuICBpbnB1dEthcHBhRmlsZU5hbWVzX2d1aTogc3RyaW5nIGxpc3QgcmVmO1xuICBtaW5WYWx1ZV9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIG1heFZhbHVlX2d1aTogZmxvYXQgb3B0aW9uIHJlZjtcbiAgcGxvdFBlcmlvZF9ndWk6IGZsb2F0IG9wdGlvbiByZWY7XG4gIG91dHB1dERhdGFGaWxlX2d1aTogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG91dHB1dERpcmVjdG9yeV9ndWk6IHN0cmluZyByZWY7XG4gIHN5bnRheFZlcnNpb25fZ3VpOiBzdHJpbmcgcmVmO1xuICBiYXRjaG1vZGVfZ3VpOiBzdHJpbmcgcmVmO1xufVxuXG5sZXQgZGVmYXVsdCA6IHQgPVxuICB7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lcyA9IFtdO1xuICAgIG1pblZhbHVlID0gTm9uZTtcbiAgICBtYXhWYWx1ZSA9IE5vbmU7XG4gICAgcGxvdFBlcmlvZCA9IE5vbmU7XG4gICAgb3V0cHV0RGF0YUZpbGUgPSBOb25lO1xuICAgIG91dHB1dERpcmVjdG9yeSA9IFwiLlwiO1xuICAgIHN5bnRheFZlcnNpb24gPSBBc3QuVjQ7XG4gICAgYmF0Y2htb2RlID0gZmFsc2U7XG4gICAgaW50ZXJhY3RpdmUgPSBmYWxzZTtcbiAgfVxuXG5sZXQgZGVmYXVsdF9ndWkgPVxuICB7XG4gICAgaW5wdXRLYXBwYUZpbGVOYW1lc19ndWkgPSByZWYgW107XG4gICAgbWluVmFsdWVfZ3VpID0gcmVmIChTb21lIDAuKTtcbiAgICBtYXhWYWx1ZV9ndWkgPSByZWYgKFNvbWUgMS4pO1xuICAgIHBsb3RQZXJpb2RfZ3VpID0gcmVmIChTb21lIDAuMDEpO1xuICAgIG91dHB1dERhdGFGaWxlX2d1aSA9IHJlZiAoU29tZSBcImRhdGEuY3N2XCIpO1xuICAgIG91dHB1dERpcmVjdG9yeV9ndWkgPSByZWYgXCIuXCI7XG4gICAgc3ludGF4VmVyc2lvbl9ndWkgPSByZWYgXCI0XCI7XG4gICAgYmF0Y2htb2RlX2d1aSA9IHJlZiBcImludGVyYWN0aXZlXCI7XG4gIH1cblxubGV0IHJlYyBhdXggbCBhY2N1ID1cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgKHYsIHZhcl92YWwpIDo6IHRhaWwgLT5cbiAgICBhdXggdGFpbFxuICAgICAgKCggdixcbiAgICAgICAgIHRyeSBOYnIub2Zfc3RyaW5nIHZhcl92YWxcbiAgICAgICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgICAgIHJhaXNlIChBcmcuQmFkIChcIlxcXCJcIiBeIHZhcl92YWwgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcIikpIClcbiAgICAgIDo6IGFjY3UpXG4gIHwgW10gLT4gYWNjdVxuXG5sZXQgZ2V0X2Zyb21fZ3VpIHRfZ3VpID1cbiAge1xuICAgIG1pblZhbHVlID0gISh0X2d1aS5taW5WYWx1ZV9ndWkpO1xuICAgIG1heFZhbHVlID0gISh0X2d1aS5tYXhWYWx1ZV9ndWkpO1xuICAgIHBsb3RQZXJpb2QgPSAhKHRfZ3VpLnBsb3RQZXJpb2RfZ3VpKTtcbiAgICBpbnB1dEthcHBhRmlsZU5hbWVzID0gISh0X2d1aS5pbnB1dEthcHBhRmlsZU5hbWVzX2d1aSk7XG4gICAgb3V0cHV0RGF0YUZpbGUgPSAhKHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSk7XG4gICAgb3V0cHV0RGlyZWN0b3J5ID0gISh0X2d1aS5vdXRwdXREaXJlY3RvcnlfZ3VpKTtcbiAgICBzeW50YXhWZXJzaW9uID1cbiAgICAgIChtYXRjaCAhKHRfZ3VpLnN5bnRheFZlcnNpb25fZ3VpKSB3aXRoXG4gICAgICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IEFzdC5WM1xuICAgICAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiBBc3QuVjRcbiAgICAgIHwgX3MgLT4gQXN0LlY0KTtcbiAgICBiYXRjaG1vZGUgPSBUb29scy5sb3dlcmNhc2UgISh0X2d1aS5iYXRjaG1vZGVfZ3VpKSA9IFwiYmF0Y2hcIjtcbiAgICBpbnRlcmFjdGl2ZSA9IFRvb2xzLmxvd2VyY2FzZSAhKHRfZ3VpLmJhdGNobW9kZV9ndWkpID0gXCJpbnRlcmFjdGl2ZVwiO1xuICB9XG5cbmxldCBjb3B5X2Zyb21fZ3VpIHRfZ3VpIHQgPVxuICBsZXQgdF90bXAgPSBnZXRfZnJvbV9ndWkgdF9ndWkgaW5cbiAgdC5taW5WYWx1ZSA8LSB0X3RtcC5taW5WYWx1ZTtcbiAgdC5tYXhWYWx1ZSA8LSB0X3RtcC5tYXhWYWx1ZTtcbiAgdC5wbG90UGVyaW9kIDwtIHRfdG1wLnBsb3RQZXJpb2Q7XG4gIHQuaW5wdXRLYXBwYUZpbGVOYW1lcyA8LSB0X3RtcC5pbnB1dEthcHBhRmlsZU5hbWVzO1xuICB0Lm91dHB1dERhdGFGaWxlIDwtIHRfdG1wLm91dHB1dERhdGFGaWxlO1xuICB0Lm91dHB1dERpcmVjdG9yeSA8LSB0X3RtcC5vdXRwdXREaXJlY3Rvcnk7XG4gIHQuc3ludGF4VmVyc2lvbiA8LSB0X3RtcC5zeW50YXhWZXJzaW9uO1xuICB0LmJhdGNobW9kZSA8LSB0X3RtcC5iYXRjaG1vZGU7XG4gIHQuaW50ZXJhY3RpdmUgPC0gdF90bXAuaW50ZXJhY3RpdmVcblxubGV0IG9wdGlvbnNfZ2VuICh0IDogdCkgKHRfZ3VpIDogdF9ndWkpIDpcbiAgICAoc3RyaW5nXG4gICAgKiBBcmcuc3BlY1xuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogc3RyaW5nXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLWlcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1biBmaWMgLT4gdC5pbnB1dEthcHBhRmlsZU5hbWVzIDwtIGZpYyA6OiB0LmlucHV0S2FwcGFGaWxlTmFtZXMpLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX2xpc3QgdF9ndWkuaW5wdXRLYXBwYUZpbGVOYW1lc19ndWksXG4gICAgICBcIm5hbWUgb2YgYSBrYXBwYSBmaWxlIHRvIHVzZSBhcyBpbnB1dCAoY2FuIGJlIHVzZWQgbXVsdGlwbGUgdGltZXMgZm9yIFxcXG4gICAgICAgbXVsdGlwbGUgaW5wdXQgZmlsZXMpXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItaW5pdGlhbFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gdGltZSAtPiB0Lm1pblZhbHVlIDwtIFNvbWUgdGltZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWluVmFsdWVfZ3VpLFxuICAgICAgXCJNaW4gdGltZSBvZiBzaW11bGF0aW9uIChhcmJpdHJhcnkgdGltZSB1bml0KVwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMDsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDAgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItbFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gdGltZSAtPiB0Lm1heFZhbHVlIDwtIFNvbWUgdGltZSksXG4gICAgICBTdXBlcmFyZy5GbG9hdF9vcHQgdF9ndWkubWF4VmFsdWVfZ3VpLFxuICAgICAgXCJMaW1pdCBvZiB0aGUgc2ltdWxhdGlvblwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMTsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItdFwiLFxuICAgICAgQXJnLkZsb2F0XG4gICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAoQXJnLkJhZFxuICAgICAgICAgICAgICAgKFwiT3B0aW9uICctdCcgaGFzIGJlZW4gcmVwbGFjZSBieSAnWy11IHRpbWVdIC1sIFwiXG4gICAgICAgICAgICAgIF4gc3RyaW5nX29mX2Zsb2F0IGYgXiBcIidcIikpKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5tYXhWYWx1ZV9ndWksXG4gICAgICBcIkRlcHJlY2F0ZWQgb3B0aW9uXCIsXG4gICAgICBbXSxcbiAgICAgIFN1cGVyYXJnLkhpZGRlbiApO1xuICAgICggXCItcFwiLFxuICAgICAgQXJnLkZsb2F0IChmdW4gcG9pbnROdW1iZXJWYWx1ZSAtPiB0LnBsb3RQZXJpb2QgPC0gU29tZSBwb2ludE51bWJlclZhbHVlKSxcbiAgICAgIFN1cGVyYXJnLkZsb2F0X29wdCB0X2d1aS5wbG90UGVyaW9kX2d1aSxcbiAgICAgIFwicGxvdCBwZXJpb2Q6IHRpbWUgaW50ZXJ2YWwgYmV0d2VlbiBwb2ludHMgaW4gcGxvdCAoZGVmYXVsdDogMS4wKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5kYXRhX3NldCwgMjsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDIgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItb1wiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIG91dHB1dERhdGFGaWxlIC0+IHQub3V0cHV0RGF0YUZpbGUgPC0gU29tZSBvdXRwdXREYXRhRmlsZSksXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHRfZ3VpLm91dHB1dERhdGFGaWxlX2d1aSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMztcbiAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAzO1xuICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMztcbiAgICAgIF0sXG4gICAgICBTdXBlcmFyZy5IaWRkZW4gKTtcbiAgICAoIFwiLWRcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBvdXRwdXREaXJlY3RvcnkgLT4gdC5vdXRwdXREaXJlY3RvcnkgPC0gb3V0cHV0RGlyZWN0b3J5KSxcbiAgICAgIFN1cGVyYXJnLlN0cmluZyB0X2d1aS5vdXRwdXREaXJlY3RvcnlfZ3VpLFxuICAgICAgXCJTcGVjaWZpZXMgZGlyZWN0b3J5IG5hbWUgd2hlcmUgb3V0cHV0IGZpbGUocykgc2hvdWxkIGJlIHN0b3JlZFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxMDA7XG4gICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMTAwO1xuICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEwMDtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMTAwO1xuICAgICAgXSxcbiAgICAgIFN1cGVyYXJnLk5vcm1hbCApO1xuICAgICggXCItbW9kZVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICBpZiBtID0gXCJiYXRjaFwiIHRoZW5cbiAgICAgICAgICAgIHQuYmF0Y2htb2RlIDwtIHRydWVcbiAgICAgICAgICBlbHNlIGlmIG0gPSBcImludGVyYWN0aXZlXCIgdGhlblxuICAgICAgICAgICAgdC5pbnRlcmFjdGl2ZSA8LSB0cnVlKSxcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFsgXCJiYXRjaFwiLCBcImJhdGNoIG1vZGVcIjsgXCJpbnRlcmFjdGl2ZVwiLCBcImludGVyYWN0aXZlIG1vZGVcIiBdLFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIHRfZ3VpLmJhdGNobW9kZV9ndWkgKSxcbiAgICAgIFwiZWl0aGVyIFxcXCJiYXRjaFxcXCIgdG8gbmV2ZXIgYXNrIGFueXRoaW5nIHRvIHRoZSB1c2VyIG9yIFxcXCJpbnRlcmFjdGl2ZVxcXCIgXFxcbiAgICAgICB0byBhc2sgc29tZXRoaW5nIGJlZm9yZSBkb2luZyBhbnl0aGluZ1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDc7IENvbW1vbl9hcmdzLmRlYnVnX21vZGUsIDcgXSxcbiAgICAgIFN1cGVyYXJnLkV4cGVydCApO1xuICAgICggXCItc3ludGF4XCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IHQuc3ludGF4VmVyc2lvbiA8LSBBc3QuVjNcbiAgICAgICAgfCBcIjRcIiB8IFwidjRcIiB8IFwiVjRcIiAtPiB0LnN5bnRheFZlcnNpb24gPC0gQXN0LlY0XG4gICAgICAgIHwgcyAtPiByYWlzZSAoQXJnLkJhZCAoXCJcXFwiXCIgXiBzIF4gXCJcXFwiIGlzIG5vdCBhIHZhbGlkIHN5bnRheCB2ZXJzaW9uXCIpKSksXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwidjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwiVjNcIiwgXCJvbGRcIjtcbiAgICAgICAgICAgIFwiNFwiLCBcIm5ld1wiO1xuICAgICAgICAgICAgXCJ2NFwiLCBcIm5ld1wiO1xuICAgICAgICAgICAgXCJWNFwiLCBcIm5ld1wiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW10sXG4gICAgICAgICAgdF9ndWkuc3ludGF4VmVyc2lvbl9ndWkgKSxcbiAgICAgIFwiVXNlIGV4cGxpY2l0IG5vdGF0aW9uIGZvciBmcmVlIHNpdGVcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA4IF0sXG4gICAgICBTdXBlcmFyZy5Ob3JtYWwgKTtcbiAgXVxuXG5sZXQgb3B0aW9ucyB0ID1cbiAgTGlzdC5yZXZfbWFwXG4gICAgKGZ1biAoYSwgYiwgXywgYywgXywgXykgLT4gYSwgYiwgYylcbiAgICAoTGlzdC5yZXYgKG9wdGlvbnNfZ2VuIHQgZGVmYXVsdF9ndWkpKVxuXG5sZXQgb3B0aW9uc19ndWkgdF9ndWkgPVxuICBMaXN0LnJldl9tYXBcbiAgICAoZnVuIChhLCBfLCBiLCBjLCBkLCBlKSAtPiBhLCBiLCBjLCBkLCBlKVxuICAgIChMaXN0LnJldiAob3B0aW9uc19nZW4gZGVmYXVsdCB0X2d1aSkpXG4gIEAgW1xuICAgICAgKCBcIi0tb3V0cHV0LXBsb3RcIixcbiAgICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMTtcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMTtcbiAgICAgICAgXSxcbiAgICAgICAgU3VwZXJhcmcuTm9ybWFsICk7XG4gICAgICAoIFwiLS1kYXRhLWZpbGVcIixcbiAgICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0X2d1aS5vdXRwdXREYXRhRmlsZV9ndWksXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciBkYXRhIG91dHB1dFwiLFxuICAgICAgICBbXG4gICAgICAgICAgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnNlbWFudGljcywgMjtcbiAgICAgICAgICBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMztcbiAgICAgICAgXSxcbiAgICAgICAgU3VwZXJhcmcuSGlkZGVuICk7XG4gICAgXVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxudHlwZSBiYXIgPSB7IG11dGFibGUgdGlja3M6IGludDsgYmFyX3NpemU6IGludDsgYmFyX2NoYXI6IGNoYXIgfVxuXG50eXBlIHRleHQgPSB7XG4gIG11dGFibGUgbGFzdF9sZW5ndGg6IGludDtcbiAgbXV0YWJsZSBsYXN0X2V2ZW50X25iOiBpbnQ7XG4gIG11dGFibGUgbGFzdF90aW1lOiBmbG9hdDtcbn1cblxudHlwZSB0ID0gQmFyIG9mIGJhciB8IFRleHQgb2YgdGV4dFxuXG5sZXQgaW5jX3RpY2sgYyA9IGMudGlja3MgPC0gYy50aWNrcyArIDFcblxubGV0IGNyZWF0ZSBiYXJfc2l6ZSBiYXJfY2hhciA9XG4gIGlmIFVuaXguaXNhdHR5IFVuaXguc3Rkb3V0IHRoZW5cbiAgICBUZXh0IHsgbGFzdF9sZW5ndGggPSAwOyBsYXN0X3RpbWUgPSAtNS47IGxhc3RfZXZlbnRfbmIgPSAwIH1cbiAgZWxzZSAoXG4gICAgbGV0ICgpID1cbiAgICAgIGZvciBfID0gYmFyX3NpemUgZG93bnRvIDEgZG9cbiAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBGb3JtYXQuc3RkX2Zvcm1hdHRlciBcIl9cIlxuICAgICAgZG9uZVxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X25ld2xpbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgKCkgaW5cbiAgICBCYXIgeyB0aWNrcyA9IDA7IGJhcl9zaXplOyBiYXJfY2hhciB9XG4gIClcblxubGV0IHBwX25vdF9udWxsIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiICglLjJmJSUpXCIgKHggKi4gMTAwLilcbiAgfCBOb25lIC0+ICgpXG5cbmxldCBwcF90ZXh0IGRlbHRhX3QgdGltZSB0X3IgZXZlbnQgZV9yIGYgcyA9XG4gIGxldCBzdHJpbmcgPVxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiUuMmYgdGltZSB1bml0cyVhIGluICVpIGV2ZW50cyVhJXRcIiB0aW1lIHBwX25vdF9udWxsIHRfclxuICAgICAgZXZlbnQgcHBfbm90X251bGwgZV9yIChmdW4gZiAtPlxuICAgICAgICBtYXRjaCBkZWx0YV90IHdpdGhcbiAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIHwgU29tZSBkdCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIgKGp1c3QgZGlkICUuMWYgZXZlbnRzL3MpXCJcbiAgICAgICAgICAgIChmbG9hdF9vZl9pbnQgKGV2ZW50IC0gcy5sYXN0X2V2ZW50X25iKSAvLiBkdCkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzJXMlc0A/XCJcbiAgICAgIChTdHJpbmcubWFrZSBzLmxhc3RfbGVuZ3RoICdcXGInKVxuICAgICAgc3RyaW5nXG4gICAgICAoU3RyaW5nLm1ha2UgKG1heCAwIChzLmxhc3RfbGVuZ3RoIC0gU3RyaW5nLmxlbmd0aCBzdHJpbmcpKSAnICcpXG4gIGluXG4gIHMubGFzdF9sZW5ndGggPC0gU3RyaW5nLmxlbmd0aCBzdHJpbmdcblxubGV0IHJlYyBhdXhfdGljayBzb21ldGhpbmcgcyBuID1cbiAgaWYgbiA8PSAwIHRoZW5cbiAgICBpZiBzb21ldGhpbmcgdGhlblxuICAgICAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpXG4gICAgZWxzZVxuICAgICAgKClcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2NoYXIgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgcy5iYXJfY2hhciBpblxuICAgIGxldCAoKSA9IGluY190aWNrIHMgaW5cbiAgICBhdXhfdGljayB0cnVlIHMgKHByZWQgbilcbiAgKVxuXG5sZXQgdGljayB+ZWZmaWNpZW5jeSB0aW1lIHRfciBldmVudCBlX3IgPSBmdW5jdGlvblxuICB8IEJhciBzIC0+XG4gICAgbGV0IG5fdCA9IE9wdGlvbl91dGlsLnVuc29tZSAwLiB0X3IgKi4gZmxvYXRfb2ZfaW50IHMuYmFyX3NpemUgaW5cbiAgICBsZXQgbl9lID0gT3B0aW9uX3V0aWwudW5zb21lIDAuIGVfciAqLiBmbG9hdF9vZl9pbnQgcy5iYXJfc2l6ZSBpblxuICAgIGF1eF90aWNrIGZhbHNlIHMgKGludF9vZl9mbG9hdCAobWF4IG5fdCBuX2UpIC0gcy50aWNrcylcbiAgfCBUZXh0IHMgLT5cbiAgICBsZXQgcnVuID0gU3lzLnRpbWUgKCkgaW5cbiAgICBsZXQgZHQgPSBydW4gLS4gcy5sYXN0X3RpbWUgaW5cbiAgICBpZiBkdCA+IDAuNSB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHBwX3RleHRcbiAgICAgICAgICAoaWYgZWZmaWNpZW5jeSB0aGVuXG4gICAgICAgICAgICAgU29tZSBkdFxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICB0aW1lIHRfciBldmVudCBlX3IgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgc1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IHMubGFzdF9ldmVudF9uYiA8LSBldmVudCBpblxuICAgICAgcy5sYXN0X3RpbWUgPC0gU3lzLnRpbWUgKClcbiAgICApXG5cbmxldCBjb21wbGV0ZV9wcm9ncmVzc19iYXIgdGltZSBldmVudCB0ID1cbiAgKG1hdGNoIHQgd2l0aFxuICB8IEJhciB0IC0+IGF1eF90aWNrIGZhbHNlIHQgKHQuYmFyX3NpemUgLSB0LnRpY2tzKVxuICB8IFRleHQgcyAtPiBwcF90ZXh0IE5vbmUgdGltZSBOb25lIGV2ZW50IE5vbmUgRm9ybWF0LnN0ZF9mb3JtYXR0ZXIgcyk7XG4gIEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIEZvcm1hdC5zdGRfZm9ybWF0dGVyICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgb3V0cHV0RGlyTmFtZSA9IHJlZiBcIlwiXG5sZXQgbWFyc2hhbGl6ZWRPdXRGaWxlID0gcmVmIFwiXCJcbmxldCBjZmxvd0ZpbGVOYW1lID0gcmVmIFwiY2Zsb3cuZG90XCJcbmxldCBicmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nTmFtZSA9IHJlZiBcImNvbXByZXNzaW9uX3N0YXR1cy50eHRcIlxubGV0IHRhc2tzX3Byb2ZpbGluZ05hbWUgPSByZWYgXCJwcm9maWxpbmcuaHRtbFwiXG5sZXQgZmx1eEZpbGVOYW1lID0gcmVmIFwiXCJcblxubGV0IG1rX2Rpcl9yIGQgPVxuICBsZXQgcmVjIGF1eCBkID1cbiAgICBpZiBub3QgKFN5cy5maWxlX2V4aXN0cyBkKSB0aGVuIChcbiAgICAgIGxldCAoKSA9IGF1eCAoRmlsZW5hbWUuZGlybmFtZSBkKSBpblxuICAgICAgVW5peC5ta2RpciBkIDBvNzc1XG4gICAgKVxuICBpblxuICBVbml4LmhhbmRsZV91bml4X2Vycm9yIGF1eCBkXG5cbmxldCBvdmVyd3JpdGVfcGVybWlzc2lvbiA9IHJlZiBmYWxzZVxuXG5sZXQgcGF0aCBmID1cbiAgaWYgRmlsZW5hbWUuaXNfaW1wbGljaXQgZiB0aGVuXG4gICAgRmlsZW5hbWUuY29uY2F0ICFvdXRwdXREaXJOYW1lIGZcbiAgZWxzZVxuICAgIGZcblxubGV0IG9wZW5fb3V0IGYgPVxuICBsZXQgeCA9IHBhdGggZiBpblxuICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSB4KSBpblxuICBvcGVuX291dCB4XG5cbmxldCByZWMgYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UgdiBleHQgPVxuICB0cnlcbiAgICBvcGVuX291dF9nZW5cbiAgICAgIFsgT3Blbl93cm9ubHk7IE9wZW5fY3JlYXQ7IE9wZW5fZXhjbDsgT3Blbl90ZXh0IF1cbiAgICAgIDBvNjY2XG4gICAgICAoYmFzZSBeIFwiflwiIF4gc3RyaW5nX29mX2ludCB2IF4gZXh0KVxuICB3aXRoIFN5c19lcnJvciBfIC0+IGF1eF9vcGVuX291dF9mcmVzaCBiYXNlIChzdWNjIHYpIGV4dFxuXG5sZXQgb3Blbl9vdXRfZnJlc2ggbmFtZSBjb25jYXRfbGlzdCBmYWN1bHRhdGl2ZSBleHQgPVxuICBsZXQgbmFtZSA9IHBhdGggbmFtZSBpblxuICBsZXQgKCkgPSBta19kaXJfciAoRmlsZW5hbWUuZGlybmFtZSBuYW1lKSBpblxuICBsZXQgdG1wX25hbWUgPSBUb29scy5jaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBleHQgaW5cbiAgbGV0IGJhc2UgPSBTdHJpbmcuY29uY2F0IFwiX1wiICh0bXBfbmFtZSA6OiBjb25jYXRfbGlzdCkgaW5cbiAgbGV0IG92ZXJfZmxhZyA9XG4gICAgaWYgIW92ZXJ3cml0ZV9wZXJtaXNzaW9uIHRoZW5cbiAgICAgIE9wZW5fdHJ1bmNcbiAgICBlbHNlXG4gICAgICBPcGVuX2V4Y2xcbiAgaW5cbiAgbGV0IGZsYWdzID0gWyBPcGVuX3dyb25seTsgT3Blbl9jcmVhdDsgb3Zlcl9mbGFnOyBPcGVuX3RleHQgXSBpblxuICB0cnkgb3Blbl9vdXRfZ2VuIGZsYWdzIDBvNjY2IChiYXNlIF4gZXh0KVxuICB3aXRoIFN5c19lcnJvciBfIC0+XG4gICAgbGV0IGJhc2UnID1cbiAgICAgIGlmIGZhY3VsdGF0aXZlIDw+IFwiXCIgdGhlblxuICAgICAgICBiYXNlIF4gXCJfXCIgXiBmYWN1bHRhdGl2ZVxuICAgICAgZWxzZVxuICAgICAgICBiYXNlXG4gICAgaW5cbiAgICAodHJ5IG9wZW5fb3V0X2dlbiBmbGFncyAwbzY2NiAoYmFzZScgXiBleHQpXG4gICAgIHdpdGggU3lzX2Vycm9yIF8gLT4gYXV4X29wZW5fb3V0X2ZyZXNoIGJhc2UnIDAgZXh0KVxuXG5sZXQgc2V0IG5hbWUgZXh0X29wdCA9XG4gIGlmICFuYW1lIDw+IFwiXCIgdGhlbiAoXG4gICAgbGV0IGZuYW1lID1cbiAgICAgIG1hdGNoIGV4dF9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICFuYW1lXG4gICAgICB8IFNvbWUgZXh0IC0+XG4gICAgICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCAhbmFtZSBleHQgdGhlblxuICAgICAgICAgICFuYW1lXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAhbmFtZSBeIFwiLlwiIF4gZXh0XG4gICAgaW5cbiAgICBuYW1lIDo9IGZuYW1lXG4gIClcblxubGV0IHNldE91dHB1dE5hbWUgKCkgPVxuICBzZXQgZmx1eEZpbGVOYW1lIChTb21lIFwiZG90XCIpO1xuICBzZXQgbWFyc2hhbGl6ZWRPdXRGaWxlIE5vbmVcblxubGV0IGNoZWNrX25vdF9leGlzdHMgPSBmdW5jdGlvblxuICB8IFwiXCIgLT4gKClcbiAgfCBmaWxlIC0+XG4gICAgbGV0IGZpbGUgPSBwYXRoIGZpbGUgaW5cbiAgICBpZiBTeXMuZmlsZV9leGlzdHMgZmlsZSB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEZvcm1hdC5lcHJpbnRmIFwiRmlsZSAnJXMnIGFscmVhZHkgZXhpc3RzIGRvIHlvdSB3YW50IHRvIGVyYXNlICh5L04pP0AuXCJcbiAgICAgICAgICBmaWxlXG4gICAgICBpblxuICAgICAgbGV0IGFuc3dlciA9IFRvb2xzLnJlYWRfaW5wdXQgKCkgaW5cbiAgICAgIGlmXG4gICAgICAgIGFuc3dlciA8PiBcInlcIiAmJiBhbnN3ZXIgPD4gXCJZXCIgJiYgYW5zd2VyIDw+IFwieWVzXCIgJiYgYW5zd2VyIDw+IFwiWUVTXCJcbiAgICAgICAgJiYgYW5zd2VyIDw+IFwiWWVzXCJcbiAgICAgIHRoZW5cbiAgICAgICAgZXhpdCAxXG4gICAgICBlbHNlXG4gICAgICAgIG92ZXJ3cml0ZV9wZXJtaXNzaW9uIDo9IHRydWVcbiAgICApXG5cbmxldCBzZXRDaGVja0ZpbGVFeGlzdHMgfmJhdGNobW9kZSBvdXRwdXRGaWxlID1cbiAgbGV0ICgpID0gc2V0T3V0cHV0TmFtZSAoKSBpblxuICBpZiBiYXRjaG1vZGUgdGhlblxuICAgIG92ZXJ3cml0ZV9wZXJtaXNzaW9uIDo9IHRydWVcbiAgZWxzZSAoXG4gICAgbGV0ICgpID0gY2hlY2tfbm90X2V4aXN0cyAhZmx1eEZpbGVOYW1lIGluXG4gICAgbGV0ICgpID0gY2hlY2tfbm90X2V4aXN0cyAhbWFyc2hhbGl6ZWRPdXRGaWxlIGluXG4gICAgY2hlY2tfbm90X2V4aXN0cyBvdXRwdXRGaWxlXG4gIClcblxubGV0IHdpdGhfY2hhbm5lbCBzdHIgZiA9XG4gIGlmIHN0ciA8PiBcIlwiIHRoZW4gKFxuICAgIGxldCBkZXNjID0gb3Blbl9vdXQgc3RyIGluXG4gICAgbGV0ICgpID0gZiBkZXNjIGluXG4gICAgY2xvc2Vfb3V0IGRlc2NcbiAgKVxuXG5sZXQgd3JhcF9mb3JtYXR0ZXIgZiBkZXNjID1cbiAgbGV0IGZyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkZXNjIGluXG4gIGxldCAoKSA9IGYgZnIgaW5cbiAgRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZyICgpXG5cbmxldCBzZXRfZGlyIHMgPVxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IHMpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBzO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IG1rX2Rpcl9yIHNcbiAgaW5cbiAgb3V0cHV0RGlyTmFtZSA6PSBzXG5cbmxldCBnZXRfZGlyICgpID0gIW91dHB1dERpck5hbWVcbmxldCBzZXRfbWFyc2hhbGl6ZWQgZiA9IG1hcnNoYWxpemVkT3V0RmlsZSA6PSBmXG5cbmxldCB3aXRoX21hcnNoYWxpemVkIGYgPVxuICBtYXRjaCAhbWFyc2hhbGl6ZWRPdXRGaWxlIHdpdGhcbiAgfCBcIlwiIC0+ICgpXG4gIHwgZmlsZSAtPlxuICAgIGxldCB4ID0gcGF0aCBmaWxlIGluXG4gICAgbGV0ICgpID0gbWtfZGlyX3IgKEZpbGVuYW1lLmRpcm5hbWUgeCkgaW5cbiAgICBsZXQgZCA9IG9wZW5fb3V0X2JpbiB4IGluXG4gICAgbGV0ICgpID0gZiBkIGluXG4gICAgY2xvc2Vfb3V0IGRcblxubGV0IHNldF9jZmxvdyBzID0gY2Zsb3dGaWxlTmFtZSA6PSBzXG5cbmxldCB3aXRoX2NmbG93X2ZpbGUgbCBlIGYgPVxuICBsZXQgZGVzYyA9IG9wZW5fb3V0X2ZyZXNoICFjZmxvd0ZpbGVOYW1lIGwgXCJcIiBlIGluXG4gIGxldCAoKSA9IHdyYXBfZm9ybWF0dGVyIGYgZGVzYyBpblxuICBjbG9zZV9vdXQgZGVzY1xuXG5sZXQgb3Blbl90YXNrc19wcm9maWxpbmcgKCkgPSBvcGVuX291dCAhdGFza3NfcHJvZmlsaW5nTmFtZVxuXG5sZXQgb3Blbl9icmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nICgpID1cbiAgb3Blbl9vdXQgIWJyYW5jaF9hbmRfY3V0X2VuZ2luZV9wcm9maWxpbmdOYW1lXG5cbmxldCBzZXRfZmx1eCBubWUgZXZlbnQgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIG5tZSB3aXRoXG4gICAgfCBcIlwiIC0+IGZsdXhGaWxlTmFtZSA6PSBcImZsdXhcIiBeIFwiX1wiIF4gc3RyaW5nX29mX2ludCBldmVudFxuICAgIHwgXyAtPiBmbHV4RmlsZU5hbWUgOj0gbm1lXG4gIGluXG4gIHNldCBmbHV4RmlsZU5hbWUgKFNvbWUgXCJkb3RcIilcblxubGV0IHdpdGhfZmx1eCBzdHIgZiA9XG4gIHdpdGhfY2hhbm5lbFxuICAgIChtYXRjaCBzdHIgd2l0aFxuICAgIHwgXCJcIiAtPiAhZmx1eEZpbGVOYW1lXG4gICAgfCBfIC0+IHN0cilcbiAgICBmXG5cbmxldCB3aXRoX3NuYXBzaG90IHN0ciBleHQgZXZlbnQgZiA9XG4gIGxldCBkZXNjID0gb3Blbl9vdXRfZnJlc2ggc3RyIFtdIChzdHJpbmdfb2ZfaW50IGV2ZW50KSBleHQgaW5cbiAgbGV0ICgpID0gZiBkZXNjIGluXG4gIGNsb3NlX291dCBkZXNjXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHN0b3JlID0ge1xuICBmaWxlOiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGRlc2NyOiBzdHJpbmc7XG4gIGxlZ2VuZDogc3RyaW5nIGFycmF5O1xuICBtdXRhYmxlIHBvaW50czogTmJyLnQgYXJyYXkgbGlzdDtcbn1cblxubGV0IG5ld19maWxlIG5hbWUgPVxuICBsZXQgY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IG5hbWUgaW5cbiAgbGV0IGYgPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGNoYW4gaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PD94bWwgdmVyc2lvbj1cXFwiMS4wXFxcIj8+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PCFET0NUWVBFQCBzdmdAIFBVQkxJQ0AgXFxcIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOXFxcIkAgXCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIlxcXCJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGRcXFwiPkBdQCxALFwiXG4gIGluXG4gIGYsIGNoYW5cblxubGV0IGNsb3NlX2ZpbGUgZm9ybSBjaGFuID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZm9ybSBcIkBdQC5cIiBpblxuICBjbG9zZV9vdXQgY2hhblxuXG5sZXQgc3R5bGUgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8c3R5bGUgdHlwZT1cXFwidGV4dC9jc3NcXFwiID5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8IVtDREFUQVtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPiNsZWdlbmQgdGV4dCB7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwidGV4dC1hbmNob3I6ZW5kO0AgYmFzZWxpbmUtc2hpZnQ6LS40ZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhpc190IHRleHQge0AsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcInRleHQtYW5jaG9yOm1pZGRsZTtAIGJhc2VsaW5lLXNoaWZ0Oi0xZW07QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwifUBdQCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jYXhpc192YSB0ZXh0IHtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ0ZXh0LWFuY2hvcjplbmQ7QCBiYXNlbGluZS1zaGlmdDotLjRlbTtALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ9QF1ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+I2F4ZXMge0AsY29sb3I6YmxhY2s7QCxzdHJva2U6Y3VycmVudENvbG9yO1wiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALHN0cm9rZS1zaXplOjFweDtALH1AXUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIkBbPGh2IDI+I2F4ZXMgdGV4dCB7QCxzdHJva2U6bm9uZTtALGZpbGw6Y3VycmVudENvbG9yO0AsfUBdQCxcIlxuICBpblxuICAoKiBsZXQgKCkgPVxuICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aHYgMj4jZGF0YSB1c2U6aG92ZXIge0AsZmlsbDpncmVlbjtALH1AXUAsXCIgaW4qKVxuICBGb3JtYXQuZnByaW50ZiBmIFwiXV0+QCw8L3N0eWxlPkAsQCxcIlxuXG5sZXQgY29sb3JzID0gW3wgXCJwZXJ1XCI7IFwiYmx1ZVwiOyBcInB1cnBsZVwiOyBcImdyZWVuXCIgfF1cbmxldCBzdHlsZXMgPSBbfCBcInBvaW50XCI7IFwicGx1c1wiOyBcImNyb3NzXCIgfF1cblxubGV0IGRlZnMgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8ZGVmcz5ALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjxwYXRoIGlkPVxcXCJwbHVzXFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIlwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgZD1cXFwiTS0zLjUsMCBoNyBNMCwtMy41IHY3XFxcIi8+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiPHBhdGggaWQ9XFxcImNyb3NzXFxcIiBjbGFzcz1cXFwicG9pbnRcXFwiIHN0cm9rZT1cXFwiY3VycmVudENvbG9yXFxcIlwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiBkPVxcXCJNLTMuNSwtMy41IEwzLjUsMy41IE0zLjUsLTMuNSBMLTMuNSwzLjVcXFwiLz5ALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8Y2lyY2xlIGlkPVxcXCJwb2ludFxcXCIgY2xhc3M9XFxcInBvaW50XFxcIiByPVxcXCIyLjVcXFwiXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBzdHJva2U9XFxcIm5vbmVcXFwiIGZpbGw9XFxcImN1cnJlbnRDb2xvclxcXCIvPkAsXCIgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjwvZGVmcz5ALEAsXCJcblxubGV0IGxlZ2VuZCB3IGYgYSA9XG4gIGxldCBwcF9saW5lIGknIGYgcyA9XG4gICAgaWYgaScgPiAwIHRoZW4gKFxuICAgICAgbGV0IGkgPSBwcmVkIGknIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD48dGV4dCB4PVxcXCIlaVxcXCIgeT1cXFwiJWlcXFwiPiVzPC90ZXh0PkBdQCxcIiAodyAtIDE1KVxuICAgICAgICAgICgxMCArIChpICogMTUpKVxuICAgICAgICAgIHNcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiPHVzZSB4bGluazpocmVmPVxcXCIjJXNcXFwiIHN0eWxlPVxcXCJjb2xvcjolc1xcXCIgeD1cXFwiJWlcXFwiIHk9XFxcIiVpXFxcIi8+XCJcbiAgICAgICAgc3R5bGVzLihpJyBtb2QgQXJyYXkubGVuZ3RoIHN0eWxlcylcbiAgICAgICAgY29sb3JzLihpJyBtb2QgQXJyYXkubGVuZ3RoIGNvbG9ycylcbiAgICAgICAgKHcgLSA3KVxuICAgICAgICAoMTAgKyAoaSAqIDE1KSlcbiAgICApXG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzxodiAyPjxnIGlkPVxcXCJsZWdlbmRcXFwiPkAsJWFAXUAsPC9nPkAsQCxcIlxuICAgIChQcC5hcnJheSBQcC5jdXQgcHBfbGluZSkgYVxuXG5sZXQgZ2V0X2xpbWl0cyBsID1cbiAgbGV0IGR1bW15X3ZhbHVlcyA9IDAuLCAtMS4sIDEuIGluXG4gIGxldCByZWMgYXV4IHRfbWF4IHZhX21pbiB2YV9tYXggPSBmdW5jdGlvblxuICAgIHwgW10gLT5cbiAgICAgIGlmIHZhX21pbiA9IHZhX21heCB0aGVuXG4gICAgICAgIHRfbWF4LCB2YV9taW4gLS4gMS4sIHZhX21heCArLiAxLlxuICAgICAgZWxzZVxuICAgICAgICB0X21heCwgbWluIHZhX21pbiAwLiwgdmFfbWF4XG4gICAgfCB2YSA6OiBxIC0+XG4gICAgICBhdXhcbiAgICAgICAgKG1heCAoT3B0aW9uX3V0aWwudW5zb21lIDAuIChOYnIudG9fZmxvYXQgdmEuKDApKSkgdF9tYXgpXG4gICAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgIChmdW4gaSBhIHggLT5cbiAgICAgICAgICAgICBtYXRjaCBOYnIudG9fZmxvYXQgeCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHggd2hlbiBpIDw+IDAgLT4gbWluIGEgeFxuICAgICAgICAgICAgIHwgXyAtPiBhKVxuICAgICAgICAgICB2YV9taW4gdmEpXG4gICAgICAgIChUb29scy5hcnJheV9mb2xkX2xlZnRpXG4gICAgICAgICAgIChmdW4gaSBhIHggLT5cbiAgICAgICAgICAgICBtYXRjaCBOYnIudG9fZmxvYXQgeCB3aXRoXG4gICAgICAgICAgICAgfCBTb21lIHggd2hlbiBpIDw+IDAgLT4gbWF4IGEgeFxuICAgICAgICAgICAgIHwgXyAtPiBhKVxuICAgICAgICAgICB2YV9tYXggdmEpXG4gICAgICAgIHFcbiAgaW5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gZHVtbXlfdmFsdWVzXG4gIHwgdmEgOjogXyB3aGVuIEFycmF5Lmxlbmd0aCB2YSA8IDIgLT4gZHVtbXlfdmFsdWVzXG4gIHwgbCAtPiBhdXggMC4gaW5maW5pdHkgMC4gbFxuXG5sZXQgZHJhd19pbl9kYXRhICgodF9tYXgsIHZhX21pbiwgdmFfbWF4KSwgKHplcm9fdywgemVyb19oLCBkcmF3X3csIGRyYXdfaCkpID1cbiAgbGV0IGRlbHRhX3ZhID0gdmFfbWF4IC0uIHZhX21pbiBpblxuICBsZXQgemVyb193JyA9IGZsb2F0X29mX2ludCB6ZXJvX3cgaW5cbiAgbGV0IHplcm9faCcgPSBmbG9hdF9vZl9pbnQgemVyb19oIGluXG4gIGxldCBkcmF3X3cnID0gZmxvYXRfb2ZfaW50IGRyYXdfdyBpblxuICBsZXQgZHJhd19oJyA9IGZsb2F0X29mX2ludCBkcmF3X2ggaW5cbiAgZnVuIGYgeCB5IC0+XG4gICAgbWF0Y2ggTmJyLnRvX2Zsb2F0IHkgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSB5JyAtPlxuICAgICAgZlxuICAgICAgICAoemVyb193J1xuICAgICAgICArLiAoKE9wdGlvbl91dGlsLnVuc29tZSAwLiBAQCBOYnIudG9fZmxvYXQgeCkgKi4gZHJhd193JyAvLiB0X21heCkpXG4gICAgICAgICh6ZXJvX2gnIC0uICgoeScgLS4gdmFfbWluKSAqLiBkcmF3X2gnIC8uIGRlbHRhX3ZhKSlcblxubGV0IGdyYWR1YXRpb25fc3RlcCBkcmF3X2wgbWluX2dyYWRfbCB2YV9taW4gdmFfbWF4ID1cbiAgbGV0IG5icl9kZWx0YSA9IHZhX21heCAtLiB2YV9taW4gaW5cbiAgbGV0IGRlbHRhX3ZhID1cbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBuYnJfZGVsdGEgd2l0aFxuICAgIHwgRlBfemVybyAtPiAxLlxuICAgIHwgRlBfbm9ybWFsIHwgRlBfc3Vibm9ybWFsIHwgRlBfaW5maW5pdGUgfCBGUF9uYW4gLT4gbmJyX2RlbHRhXG4gIGluXG4gIGxldCBuYl9ncmFkID0gY2VpbCAoZmxvYXQgZHJhd19sIC8uIGZsb2F0IG1pbl9ncmFkX2wpIGluXG4gIGxldCBleGFjdF9zdGVwID0gZGVsdGFfdmEgLy4gbmJfZ3JhZCBpblxuICBsZXQgZGVsdGFfZ3JhZCA9IDEwLiAqKiBsb2cxMCBleGFjdF9zdGVwIGluXG4gIGxldCB2YV9taW4nID0gZGVsdGFfZ3JhZCAqLiBmbG9vciAodmFfbWluIC8uIGV4YWN0X3N0ZXApIGluXG4gIGxldCB2YV9tYXgnID1cbiAgICBtYXRjaCBjbGFzc2lmeV9mbG9hdCBuYnJfZGVsdGEgd2l0aFxuICAgIHwgRlBfemVybyAtPiB2YV9taW4nICsuIDEuXG4gICAgfCBGUF9ub3JtYWwgfCBGUF9zdWJub3JtYWwgfCBGUF9pbmZpbml0ZSB8IEZQX25hbiAtPlxuICAgICAgZGVsdGFfZ3JhZCAqLiBjZWlsICh2YV9tYXggLy4gZXhhY3Rfc3RlcClcbiAgaW5cbiAgdmFfbWluJywgaW50X29mX2Zsb2F0IG5iX2dyYWQsIGRlbHRhX2dyYWQsIHZhX21heCdcblxubGV0IGF4aXMgKHcsIGgpIChiX29wLCBiX3csIGJfaCkgZiBsID1cbiAgbGV0IHRfbWF4LCB2YV9taW4sIHZhX21heCA9IGdldF9saW1pdHMgbCBpblxuICBsZXQgZGF0YV93ID0gdyAtIChiX29wICsgYl93KSBpblxuICBsZXQgZGF0YV9oID0gaCAtIChiX29wICsgYl9oKSBpblxuICBsZXQgXywgbmJfdywgZ3JhZF93LCB0X21heCcgPSBncmFkdWF0aW9uX3N0ZXAgZGF0YV93IGJfdyAwLiB0X21heCBpblxuICBsZXQgdmFfbWluJywgbmJfaCwgZ3JhZF9oLCB2YV9tYXgnID1cbiAgICBncmFkdWF0aW9uX3N0ZXAgZGF0YV9oIGJfdyB2YV9taW4gdmFfbWF4XG4gIGluXG4gIGxldCBkcmF3X2Z1biA9XG4gICAgZHJhd19pbl9kYXRhICgodF9tYXgnLCB2YV9taW4nLCB2YV9tYXgnKSwgKGJfdywgaCAtIGJfaCwgZGF0YV93LCBkYXRhX2gpKVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGcgaWQ9XFxcImF4ZXNcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPGh2IDI+PGcgaWQ9XFxcImF4aXNfdmFcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT5PYnNlcnZhYmxlIHZhbHVlczwvdGl0bGU+QCxcIiBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHBhdGggZD1cXFwiTSAlaSwlaSBMICVpLCVpXFxcIi8+QF1ALFwiIGJfdyBiX29wIGJfd1xuICAgICAgKGRhdGFfaCArIGJfb3ApXG4gIGluXG4gIGxldCAoKSA9XG4gICAgVG9vbHMuaXRlcmlcbiAgICAgIChmdW4gaSAtPlxuICAgICAgICBsZXQgdiA9IGdyYWRfaCAqLiBmbG9hdCBpIGluXG4gICAgICAgIGRyYXdfZnVuXG4gICAgICAgICAgKGZ1biB4IHkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGV4dCB4PVxcXCIlZlxcXCIgeT1cXFwiJWZcXFwiPiUuM2c8L3RleHQ+QCxcIiAoeCAtLiA4LilcbiAgICAgICAgICAgICAgICB5IHZcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPGxpbmUgeDE9XFxcIiVmXFxcIiB5MT1cXFwiJWZcXFwiIHgyPVxcXCIlZlxcXCIgeTI9XFxcIiVmXFxcIi8+QCxcIlxuICAgICAgICAgICAgICAoeCAtLiA1LikgeSAoeCArLiA1LikgeSlcbiAgICAgICAgICBOYnIuemVybyAoTmJyLkYgdikpXG4gICAgICAoc3VjYyBuYl9oKVxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQF08L2c+QCxAWzxodiAyPjxnIGlkPVxcXCJheGlzX3RcXFwiPkAsXCIgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT5UaW1lIChhcmJpdHJhcnkgdW5pdCk8L3RpdGxlPkAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxwYXRoIGQ9XFxcIk0gJWksJWkgTCAlaSwlaVxcXCIvPkBdQCxcIiBiX3cgKGggLSBiX2gpXG4gICAgICAodyAtIGJfb3ApIChoIC0gYl9oKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFRvb2xzLml0ZXJpXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgbGV0IHYgPSBncmFkX3cgKi4gZmxvYXQgaSBpblxuICAgICAgICBkcmF3X2Z1blxuICAgICAgICAgIChmdW4geCB5IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiPHRleHQgeD1cXFwiJWZcXFwiIHk9XFxcIiVmXFxcIj4lLjNnPC90ZXh0PkAsXCIgeFxuICAgICAgICAgICAgICAgICh5ICsuIDguKSB2XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxsaW5lIHgxPVxcXCIlZlxcXCIgeTE9XFxcIiVmXFxcIiB4Mj1cXFwiJWZcXFwiIHkyPVxcXCIlZlxcXCIvPkAsXCJcbiAgICAgICAgICAgICAgeCAoeSAtLiA1LikgeCAoeSArLiA1LikpXG4gICAgICAgICAgKE5ici5GIHYpIChOYnIuRiB2YV9taW4nKSlcbiAgICAgIChzdWNjIG5iX3cpXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAXTwvZz5ALDwvZz5ALEAsXCIgaW5cbiAgZHJhd19mdW5cblxubGV0IGRhdGEgZHJhd19mdW4gbCBmIHAgPVxuICBsZXQgb25lX3BvaW50IHMgdCBpIGYgdmEgPVxuICAgIGRyYXdfZnVuXG4gICAgICAoZnVuIHggeSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzw+PHVzZSB4bGluazpocmVmPVxcXCIjJXNcXFwiIHg9XFxcIiVmXFxcIiB5PVxcXCIlZlxcXCI+QCxcIlxuICAgICAgICAgICAgc3R5bGVzLihpIG1vZCBBcnJheS5sZW5ndGggc3R5bGVzKVxuICAgICAgICAgICAgeCB5XG4gICAgICAgIGluXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXMgdD0lYSB2PSVhPC90aXRsZT5ALDwvdXNlPkBdQCxcIiBzXG4gICAgICAgICAgTmJyLnByZXR0eV9wcmludCB0IE5ici5wcmludCB2YSlcbiAgICAgIHQgdmFcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIjxnIGlkPVxcXCJkYXRhXFxcIj5ALCVhPC9nPkAsQCxcIlxuICAgIChQcC5hcnJheSBQcC5lbXB0eSAoZnVuIGkgZiBzIC0+XG4gICAgICAgICBpZiBpID4gMCB0aGVuXG4gICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgICAgICBcIkBbPGh2IDI+PGcgaWQ9XFxcImRhdGFfJWlcXFwiIHN0eWxlPVxcXCJjb2xvcjolc1xcXCI+QCwlYUBdPC9nPkAsXCJcbiAgICAgICAgICAgICAocHJlZCBpKVxuICAgICAgICAgICAgIGNvbG9ycy4oaSBtb2QgQXJyYXkubGVuZ3RoIGNvbG9ycylcbiAgICAgICAgICAgICAoUHAubGlzdCBQcC5lbXB0eSAoZnVuIGYgZSAtPiBvbmVfcG9pbnQgcyBlLigwKSBpIGYgZS4oaSkpKVxuICAgICAgICAgICAgIHApKVxuICAgIGxcblxubGV0IGRyYXcgKCh3LCBoKSBhcyBzaXplKSBib3JkZXIgZiBzID1cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8PjxzdmdAIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCJAIFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ4bWxuczp4bGluaz1cXFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1xcXCJAIFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ3aWR0aD1cXFwiJWlcXFwiQCBoZWlnaHQ9XFxcIiVpXFxcIj5AXUAsXCIgdyBoIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIjx0aXRsZT4lczwvdGl0bGU+QCw8ZGVzY3I+JXM8L2Rlc2NyPkAsQCxcIiBzLnRpdGxlIHMuZGVzY3JcbiAgaW5cbiAgbGV0ICgpID0gc3R5bGUgZiBpblxuICBsZXQgKCkgPSBkZWZzIGYgaW5cbiAgbGV0IGRyYXdfZnVuID0gYXhpcyBzaXplIGJvcmRlciBmIHMucG9pbnRzIGluXG4gIGxldCAoKSA9IGxlZ2VuZCB3IGYgcy5sZWdlbmQgaW5cbiAgbGV0ICgpID0gZGF0YSBkcmF3X2Z1biBzLmxlZ2VuZCBmIHMucG9pbnRzIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCI8L3N2Zz5cIlxuXG5sZXQgdG9fc3RyaW5nID8od2lkdGggPSA4MDApIHMgPVxuICBsZXQgYiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICBsZXQgZiA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGIgaW5cbiAgbGV0IHNpemUgPSB3aWR0aCwgaW50X29mX2Zsb2F0IChmbG9hdCB3aWR0aCAvLiBzcXJ0IDIuKSBpblxuICBsZXQgYm9yZGVyID0gMTAsIDcwLCAyNSBpblxuICBsZXQgKCkgPSBkcmF3IHNpemUgYm9yZGVyIGYgcyBpblxuICBsZXQgKCkgPSBGb3JtYXQucHBfcHJpbnRfbmV3bGluZSBmICgpIGluXG4gIEJ1ZmZlci5jb250ZW50cyBiXG5cbmxldCB0b19maWxlIHMgPVxuICBsZXQgZm9ybSwgY2hhbiA9IG5ld19maWxlIHMuZmlsZSBpblxuICBsZXQgc2l6ZSA9IDgwMCwgNjAwIGluXG4gIGxldCBib3JkZXIgPSAxMCwgNzAsIDI1IGluXG4gIGxldCAoKSA9IGRyYXcgc2l6ZSBib3JkZXIgZm9ybSBzIGluXG4gIGNsb3NlX2ZpbGUgZm9ybSBjaGFuXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKkV4cGVydCBtb2RlIHZhbHVlcyopXG5sZXQgZGVmYXVsdEV4dEFycmF5U2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdEdyYXBoU2l6ZSA9IHJlZiA1XG5sZXQgZGVmYXVsdExpZnRTZXRTaXplID0gcmVmIDVcbmxldCBkZWZhdWx0SGVhcFNpemUgPSByZWYgNVxubGV0IGRlYnVnX21vZGVPbiA9IHJlZiBmYWxzZVxuXG4oKiBleHBlcnQgb3B0aW9uIGZvciBzdG9yaWVzICopXG5cbigqIE51bWJlciBvZiBwb3RlbnRpYWwgc3RhdGVzIHRoYXQgYXJlIHB1dCBpbiB0aGUgY2FjaGUgcGVyIGJpbmRpbmcgc2l0ZSwgc28gYXMgdG8gaGFuZGxlciB3aXRoIHNpZGUgZWZmZWN0cyBpbiBzdG9yaWVzLiBOb25lIC0+IFVubGltaXRlZCBjYWNoZSAqKVxuXG4oKiogTWVtb3J5ICoqKVxubGV0IGNhY2hlX3NpemUgPSByZWYgKE5vbmUgOiBpbnQgb3B0aW9uKVxuXG4oKiBDdXQgY29uY3VycmVudCBldmVudHMgKGZvciBhbGwgb2JzZXJ2YWJsZXMpIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBibGFja2JvYXJkICopXG5cbigqKiBQcmVjb21wdXRhdGlvbiAqKilcbmxldCBkb19nbG9iYWxfY3V0ID0gdHJ1ZVxuXG4oKiBDdXQgcHNldWRvLWludmVyc2UgZXZlbnRzICopXG5sZXQgY3V0X3BzZXVkb19pbnZlcnNlX2V2ZW50ID0gdHJ1ZVxuXG4oKiBDdXQgY29uY3VycmVudCBldmVudHMgKGZvciB0aGUgY3VycmVudCBvYnNlcnZhbGUpIGJlZm9yZSBnZW5lcmF0aW5nIHRoZSBibGFja2JvYXJkICopXG5sZXQgZG9fbG9jYWxfY3V0ID0gdHJ1ZVxuXG4oKiBDdXQgc2VwYXJhYmxlIGNvbXBvbmVudHMgKilcbmxldCBkb19kZXRlY3Rfc2VwYXJhYmxlX2NvbXBvbmVudHMgPSB0cnVlXG5cbigqIFdoZW5ldmVyIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgYW4gZXZlbnQgaGFzIHRvIGJlIHNlbGVjdGVkIG9yLCBub3QsIGNoZWNrIHdoZXRoZXIgdGhpcyBpcyBub3QgdGhlIGxhc3Qgb25lIHRoYXQgY2FuIHBhcmZvcm0gYSByZXF1ZXN0ZWQgYWN0aW9uICopXG5cbigqKiBQcm9wYWdhdGlvbiBoZXVyaXN0aWNzICoqKVxubGV0IGxvb2tfdXBfZm9yX2JldHRlcl9jdXQgPSB0cnVlXG5cbigqIFdoZW5ldmVyIGFuIGV2ZW50IGlzIHJlbW92ZWQsIGNoZWNrZWQgd2hldGhlciB0aGVyZSBpcyBub3Qgb25seSBvbmUgbGVmdCB0byBwZXJmb3JtIGEgcmVxdWlyZWQgYWN0aW9uICopXG5sZXQgbG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0ID0gdHJ1ZVxubGV0IGxvZ19udW1iZXJfb2ZfY2F1c2FsX2Zsb3dzID0gdHJ1ZVxuXG4oKlVzZXIgZGVmaW5hYmxlIHZhbHVlcyopXG5sZXQgdGltZV9pbmRlcGVuZGVudCA9IHJlZiBmYWxzZVxubGV0IGJsYWNrbGlzdF9ldmVudHMgPSByZWYgZmFsc2VcblxuKCpYTFMgb3V0cHV0IGZvciB0aGUgZ3JpZHMgZHVyaW5nIGNvbXByZXNzaW9uKilcbmxldCBkdW1wX2dyaWRfYmVmb3JlX3dlYWtfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IGR1bXBfZ3JpZF9iZWZvcmVfc3Ryb25nX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uID0gZmFsc2VcbmxldCBkdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ19zdHJvbmdfY29tcHJlc3Npb24gPSBmYWxzZVxubGV0IHhsc3dlYWtGaWxlTmFtZSA9IFwiZ3JpZF93ZWFrX2NvbXByZXNzaW9uXCJcbmxldCB4bHNzdHJvbmdGaWxlTmFtZSA9IFwiZ3JpZF9zdHJvbmdfY29tcHJlc3Npb25cIlxubGV0IGdldF9jYWNoZV9zaXplICgpID0gIWNhY2hlX3NpemVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBwcmludF9kZXNjIDogKHN0cmluZywgb3V0X2NoYW5uZWwgKiBGb3JtYXQuZm9ybWF0dGVyKSBIYXNodGJsLnQgPVxuICBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCBzcGVjaWVzX2Rlc2MgOiAoc3RyaW5nLCBvdXRfY2hhbm5lbCAqIEZvcm1hdC5mb3JtYXR0ZXIpIEhhc2h0YmwudCA9XG4gIEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHV1aWQgPSBSYW5kb20uU3RhdGUuYml0cyAoUmFuZG9tLlN0YXRlLm1ha2Vfc2VsZl9pbml0ICgpKVxuXG5sZXQgZ2V0X2Rlc2MgZmlsZSB0YmwgPVxuICB0cnkgc25kIChIYXNodGJsLmZpbmQgdGJsIGZpbGUpXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgbGV0IGRfY2hhbiA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IGZpbGUgaW5cbiAgICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gICAgSGFzaHRibC5hZGQgdGJsIGZpbGUgKGRfY2hhbiwgZCk7XG4gICAgZFxuXG5sZXQgY2xvc2VfZGVzYyAoKSA9XG4gIEhhc2h0YmwuaXRlciAoZnVuIF9maWxlIChkX2NoYW4sIF9kKSAtPiBjbG9zZV9vdXQgZF9jaGFuKSBwcmludF9kZXNjO1xuICBIYXNodGJsLml0ZXIgKGZ1biBfZmlsZSAoZF9jaGFuLCBfZCkgLT4gY2xvc2Vfb3V0IGRfY2hhbikgc3BlY2llc19kZXNjXG5cbmxldCBvdXRwdXRfZmx1eCBkaW5fbmFtZSBmbHV4ID1cbiAgS2FwcGFfZmlsZXMud2l0aF9mbHV4IGRpbl9uYW1lXG4gICAgKGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5odG1sXCIgdGhlblxuICAgICAgIEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2h0bWxfZGluIGYgZmx1eClcbiAgICAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZGluX25hbWUgXCIuanNvblwiIHRoZW5cbiAgICAgICBmdW4gZCAtPlxuICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIERhdGEud3JpdGVfZGluIGQgZmx1eFxuICAgICBlbHNlXG4gICAgICAgS2FwcGFfZmlsZXMud3JhcF9mb3JtYXR0ZXIgKGZ1biBmIC0+IERhdGEucHJpbnRfZG90X2RpbiB+dXVpZCBmIGZsdXgpKVxuXG5sZXQgYWN0c0Rlc2NyID0gcmVmIE5vbmVcbmxldCBlbXB0eUFjdHMgPSByZWYgdHJ1ZVxuXG5sZXQgaW5pdF9hY3Rpdml0aWVzIGVudiA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgcyAtPlxuICAgIGxldCBub0NvdW50ZXJzID0gIVBhcmFtZXRlci5kZWJ1Z19tb2RlT24gaW5cbiAgICBsZXQgZGVzYyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0IHMgaW5cbiAgICBsZXQgZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZGVzYyBpblxuICAgIGxldCBuYl9yID0gTW9kZWwubmJfc3ludGFjdGljX3J1bGVzIGVudiBpblxuICAgIGxldCAoKSA9IGFjdHNEZXNjciA6PSBTb21lIChkZXNjLCBmb3JtLCBuYl9yKSBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJAWzx2PntALHJ1bGVzOkBbW1wiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFRvb2xzLml0ZXJpXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCJcXFwiJWFcXFwiLEAsXCJcbiAgICAgICAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVycyB+ZW52KVxuICAgICAgICAgICAgeClcbiAgICAgICAgbmJfclxuICAgIGluXG4gICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIlxcXCIlYVxcXCJdQF0sQCxkYXRhOltALFwiXG4gICAgICAoTW9kZWwucHJpbnRfYXN0X3J1bGUgfm5vQ291bnRlcnMgfmVudilcbiAgICAgIG5iX3JcblxubGV0IGNsb3NlX2FjdGl2aXRpZXMgKCkgPVxuICBtYXRjaCAhYWN0c0Rlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoYywgZiwgXykgLT5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCxdfUBdQC5cIiBpblxuICAgIGNsb3NlX291dCBjXG5cbmxldCBvdXRwdXRfYWN0aXZpdGllcyByIGZsdXggPVxuICBtYXRjaCAhYWN0c0Rlc2NyIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSAoXywgZiwgbGFzdCkgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgIWVtcHR5QWN0cyB0aGVuXG4gICAgICAgIGVtcHR5QWN0cyA6PSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLEAsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJAW1slaVwiIHIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9yIGkgPSAwIHRvIGxhc3QgZG9cbiAgICAgICAgbGV0IGssIGsnID0gdHJ5IExpc3QuYXNzb2MgaSBmbHV4IHdpdGggTm90X2ZvdW5kIC0+IDAuLCAwLiBpblxuICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiLCVmXCIgKGsnIC0uIGspXG4gICAgICBkb25lXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiXUBdXCJcblxudHlwZSBmZCA9IHsgZGVzYzogb3V0X2NoYW5uZWw7IGZvcm06IEZvcm1hdC5mb3JtYXR0ZXI7IGlzX3RzdjogYm9vbCB9XG5cbnR5cGUgZm9ybWF0ID1cbiAgfCBTdGFuZEJ5IG9mIChzdHJpbmcgKiBzdHJpbmcgKiBzdHJpbmcgYXJyYXkpXG4gIHwgUmF3IG9mIGZkXG4gIHwgU3ZnIG9mIFBwX3N2Zy5zdG9yZVxuXG5sZXQgcGxvdERlc2NyID0gcmVmIE5vbmVcblxubGV0IGNsb3NlX3Bsb3QgKCkgPVxuICBtYXRjaCAhcGxvdERlc2NyIHdpdGhcbiAgfCBOb25lIHwgU29tZSAoU3RhbmRCeSBfKSAtPiAoKVxuICB8IFNvbWUgKFJhdyBwbG90KSAtPiBjbG9zZV9vdXQgcGxvdC5kZXNjXG4gIHwgU29tZSAoU3ZnIHMpIC0+IFBwX3N2Zy50b19maWxlIHNcblxubGV0IHRyYWNlRGVzY3IgPSByZWYgTm9uZVxubGV0IHRyYWNlTm90RW1wdHkgPSByZWYgZmFsc2VcblxubGV0IGNsb3NlX3RyYWNlICgpID1cbiAgbWF0Y2ggIXRyYWNlRGVzY3Igd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGRlc2MgLT5cbiAgICBsZXQgKCkgPSBvdXRwdXRfc3RyaW5nIGRlc2MgXCJdXFxufVxcblwiIGluXG4gICAgbGV0ICgpID0gY2xvc2Vfb3V0IGRlc2MgaW5cbiAgICB0cmFjZURlc2NyIDo9IE5vbmVcblxubGV0IGluaXRpYWxpemUgYWN0aXZpdGllc19maWxlIHRyYWNlX2ZpbGUgcGxvdFBhY2sgZW52ID1cbiAgbGV0ICgpID1cbiAgICBtYXRjaCB0cmFjZV9maWxlIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgcyAtPlxuICAgICAgbGV0IGRlc2MgPSBLYXBwYV9maWxlcy5vcGVuX291dCBzIGluXG4gICAgICBsZXQgKCkgPSBUcmFjZS5pbml0X3RyYWNlX2ZpbGUgfnV1aWQgZW52IGRlc2MgaW5cbiAgICAgIHRyYWNlRGVzY3IgOj0gU29tZSBkZXNjXG4gIGluXG4gIGxldCAoKSA9IGluaXRfYWN0aXZpdGllcyBlbnYgYWN0aXZpdGllc19maWxlIGluXG4gIG1hdGNoIHBsb3RQYWNrIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBwYWNrIC0+IHBsb3REZXNjciA6PSBTb21lIChTdGFuZEJ5IHBhY2spXG5cbmxldCBsYXVuY2hfcGxvdCAoZmlsZW5hbWUsIHRpdGxlLCBoZWFkKSA9XG4gIGxldCBmb3JtYXQgPVxuICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlbmFtZSBcIi5zdmdcIiB0aGVuXG4gICAgICBTdmdcbiAgICAgICAge1xuICAgICAgICAgIFBwX3N2Zy5maWxlID0gZmlsZW5hbWU7XG4gICAgICAgICAgUHBfc3ZnLnRpdGxlO1xuICAgICAgICAgIFBwX3N2Zy5kZXNjciA9IFwiXFxcInV1aWRcXFwiIDogXFxcIlwiIF4gc3RyaW5nX29mX2ludCB1dWlkIF4gXCJcXFwiXCI7XG4gICAgICAgICAgUHBfc3ZnLmxlZ2VuZCA9IGhlYWQ7XG4gICAgICAgICAgUHBfc3ZnLnBvaW50cyA9IFtdO1xuICAgICAgICB9XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgZmlsZW5hbWUgaW5cbiAgICAgIGxldCBkID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBkX2NoYW4gaW5cbiAgICAgIGxldCBpc190c3YgPSBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZW5hbWUgXCIudHN2XCIgaW5cbiAgICAgIGxldCAoKSA9IGlmIG5vdCBpc190c3YgdGhlbiBGb3JtYXQuZnByaW50ZiBkIFwiIyAlc0AuXCIgdGl0bGUgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIG5vdCBpc190c3YgdGhlbiBGb3JtYXQuZnByaW50ZiBkIFwiIyBcXFwidXVpZFxcXCIgOiBcXFwiJWlcXFwiQC5cIiB1dWlkXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRGF0YS5wcmludF9wbG90X2xlZ2VuZCB+aXNfdHN2IGQgaGVhZCBpblxuICAgICAgUmF3IHsgZGVzYyA9IGRfY2hhbjsgZm9ybSA9IGQ7IGlzX3RzdiB9XG4gICAgKVxuICBpblxuICBwbG90RGVzY3IgOj0gU29tZSBmb3JtYXRcblxubGV0IHJlYyBwbG90X25vdyBsID1cbiAgbWF0Y2ggIXBsb3REZXNjciB3aXRoXG4gIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgfCBTb21lIChTdGFuZEJ5IHApIC0+XG4gICAgbGV0ICgpID0gbGF1bmNoX3Bsb3QgcCBpblxuICAgIHBsb3Rfbm93IGxcbiAgfCBTb21lIChSYXcgZmQpIC0+XG4gICAgRGF0YS5wcmludF9wbG90X2xpbmUgfmlzX3RzdjpmZC5pc190c3YgTmJyLnByaW50X29wdGlvbiBmZC5mb3JtIGxcbiAgfCBTb21lIChTdmcgcykgLT4gcy5QcF9zdmcucG9pbnRzIDwtIGwgOjogcy5QcF9zdmcucG9pbnRzXG5cbmxldCBzbmFwc2hvdCBmaWxlIHMgPVxuICBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggZmlsZSBcIi5kb3RcIiB0aGVuXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmRvdFwiIHMuRGF0YS5zbmFwc2hvdF9ldmVudFxuICAgICAgKEthcHBhX2ZpbGVzLndyYXBfZm9ybWF0dGVyIChmdW4gZiAtPiBEYXRhLnByaW50X2RvdF9zbmFwc2hvdCB+dXVpZCBmIHMpKVxuICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBmaWxlIFwiLmpzb25cIiB0aGVuXG4gICAgS2FwcGFfZmlsZXMud2l0aF9zbmFwc2hvdCBmaWxlIFwiLmpzb25cIiBzLkRhdGEuc25hcHNob3RfZXZlbnQgKGZ1biBkIC0+XG4gICAgICAgIEpzb25VdGlsLndyaXRlX3RvX2NoYW5uZWwgRGF0YS53cml0ZV9zbmFwc2hvdCBkIHMpXG4gIGVsc2VcbiAgICBLYXBwYV9maWxlcy53aXRoX3NuYXBzaG90IGZpbGUgXCIua2FcIiBzLkRhdGEuc25hcHNob3RfZXZlbnRcbiAgICAgIChLYXBwYV9maWxlcy53cmFwX2Zvcm1hdHRlciAoZnVuIGYgLT4gRGF0YS5wcmludF9zbmFwc2hvdCB+dXVpZCBmIHMpKVxuXG5sZXQgcHJpbnRfc3BlY2llcyB0aW1lIGYgbWl4dHVyZSA9XG4gIEZvcm1hdC5mcHJpbnRmIGYgXCIlZzogQFs8aD4lYUBdQC5cIiB0aW1lIFVzZXJfZ3JhcGgucHJpbnRfY2MgbWl4dHVyZVxuXG5sZXQgd2FybmluZ19idWZmZXIgOiAoTG9jLnQgb3B0aW9uICogKEZvcm1hdC5mb3JtYXR0ZXIgLT4gdW5pdCkpIGxpc3QgcmVmID1cbiAgcmVmIFtdXG5cbmxldCBnbyA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5TbmFwc2hvdCAoZiwgcykgLT4gc25hcHNob3QgZiBzXG4gIHwgRGF0YS5ESU4gKG4sIGYpIC0+IG91dHB1dF9mbHV4IG4gZlxuICB8IERhdGEuRGVsdGFBY3Rpdml0aWVzIChyLCBmbHV4KSAtPiBvdXRwdXRfYWN0aXZpdGllcyByIGZsdXhcbiAgfCBEYXRhLlBsb3QgeCAtPiBwbG90X25vdyB4XG4gIHwgRGF0YS5QcmludCBwIC0+XG4gICAgbGV0IGRlc2MgPVxuICAgICAgbWF0Y2ggcC5EYXRhLmZpbGVfbGluZV9uYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIHN0ZG91dFxuICAgICAgfCBTb21lIGZpbGUgLT4gZ2V0X2Rlc2MgZmlsZSBwcmludF9kZXNjXG4gICAgaW5cbiAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiJXNALlwiIHAuRGF0YS5maWxlX2xpbmVfdGV4dFxuICB8IERhdGEuTG9nIHMgLT4gRm9ybWF0LnByaW50ZiBcIiVzQC5cIiBzXG4gIHwgRGF0YS5XYXJuaW5nIChwb3MsIG1zZykgLT4gd2FybmluZ19idWZmZXIgOj0gKHBvcywgbXNnKSA6OiAhd2FybmluZ19idWZmZXJcbiAgfCBEYXRhLlRyYWNlU3RlcCBzdGVwIC0+XG4gICAgKG1hdGNoICF0cmFjZURlc2NyIHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgIXRyYWNlTm90RW1wdHkgdGhlblxuICAgICAgICAgIG91dHB1dF9jaGFyIGQgJywnXG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0cmFjZU5vdEVtcHR5IDo9IHRydWVcbiAgICAgIGluXG4gICAgICBKc29uVXRpbC53cml0ZV90b19jaGFubmVsIFRyYWNlLndyaXRlX3N0ZXAgZCBzdGVwKVxuICB8IERhdGEuU3BlY2llcyAoZmlsZSwgdGltZSwgbWl4dHVyZSkgLT5cbiAgICBsZXQgZGVzYyA9IGdldF9kZXNjIGZpbGUgc3BlY2llc19kZXNjIGluXG4gICAgcHJpbnRfc3BlY2llcyB0aW1lIGRlc2MgbWl4dHVyZVxuXG5sZXQgaW5wdXRzRGVzYyA9IHJlZiBOb25lXG5cbmxldCBmbHVzaF93YXJuaW5nICgpID1cbiAgbGV0IGwgPSBMaXN0LnJldiAhd2FybmluZ19idWZmZXIgaW5cbiAgbGV0ICgpID0gd2FybmluZ19idWZmZXIgOj0gW10gaW5cbiAgTGlzdC5pdGVyXG4gICAgKGZ1biAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIEZvcm1hdC5lcnJfZm9ybWF0dGVyIG1zZylcbiAgICBsXG5cbmxldCBjbG9zZV9pbnB1dCA/ZXZlbnQgKCkgPVxuICBtYXRjaCAhaW5wdXRzRGVzYyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgaW5wdXRzIC0+XG4gICAgbGV0ICgpID1cbiAgICAgIG1hdGNoIGV2ZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgfCBTb21lIGV2ZW50IC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAgICAgKEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzKVxuICAgICAgICAgIFwiQC4lJW1vZDogW0VdID0gJWkgZG8gJFNUT1A7QC5cIiBldmVudFxuICAgIGluXG4gICAgY2xvc2Vfb3V0IGlucHV0c1xuXG5sZXQgY2xvc2UgP2V2ZW50ICgpID1cbiAgbGV0ICgpID0gY2xvc2VfcGxvdCAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV90cmFjZSAoKSBpblxuICBsZXQgKCkgPSBjbG9zZV9hY3Rpdml0aWVzICgpIGluXG4gIGxldCAoKSA9IGZsdXNoX3dhcm5pbmcgKCkgaW5cbiAgbGV0ICgpID0gY2xvc2VfaW5wdXQgP2V2ZW50ICgpIGluXG4gIGNsb3NlX2Rlc2MgKClcblxubGV0IGluaXRpYWxfaW5wdXRzIGNvbmYgZW52IGluaXQgfmZpbGVuYW1lID1cbiAgbGV0IGlucHV0cyA9IEthcHBhX2ZpbGVzLm9wZW5fb3V0X2ZyZXNoIGZpbGVuYW1lIFtdIFwiXCIgXCIua2FcIiBpblxuICBsZXQgaW5wdXRzX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX291dF9jaGFubmVsIGlucHV0cyBpblxuICBsZXQgKCkgPSBEYXRhLnByaW50X2luaXRpYWxfaW5wdXRzIH51dWlkIGNvbmYgZW52IGlucHV0c19mb3JtIGluaXQgaW5cbiAgaW5wdXRzRGVzYyA6PSBTb21lIGlucHV0c1xuXG5sZXQgaW5wdXRfbW9kaWZpY2F0aW9ucyBlbnYgZXZlbnQgbW9kcyA9XG4gIG1hdGNoICFpbnB1dHNEZXNjIHdpdGhcbiAgfCBOb25lIC0+ICgpXG4gIHwgU29tZSBpbnB1dHMgLT5cbiAgICBGb3JtYXQuZnByaW50ZlxuICAgICAgKEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgaW5wdXRzKVxuICAgICAgXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiIGV2ZW50XG4gICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgIChLYXBwYV9wcmludGVyLm1vZGlmaWNhdGlvbiB+bm9Db3VudGVyczohUGFyYW1ldGVyLmRlYnVnX21vZGVPbiB+ZW52KSlcbiAgICAgIG1vZHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgZGlyZWN0aXZlX3VuaXQgPSBUaW1lIHwgRXZlbnRcblxudHlwZSB0ID0ge1xuICBtdXRhYmxlIGFsZ192YXJfb3ZlcndyaXRlOiAoc3RyaW5nICogTmJyLnQpIGxpc3Q7XG4gIG11dGFibGUgbWFyc2hhbGl6ZWRJbkZpbGU6IHN0cmluZztcbiAgbXV0YWJsZSBpbml0aWFsTWl4OiBzdHJpbmcgb3B0aW9uO1xuICBtdXRhYmxlIHJlc2NhbGU6IGZsb2F0IG9wdGlvbjtcbiAgbXV0YWJsZSBzZWVkVmFsdWU6IGludCBvcHRpb247XG4gIG11dGFibGUgdW5pdDogZGlyZWN0aXZlX3VuaXQ7XG4gIG11dGFibGUgbWFyc2hhbGl6ZU91dEZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgZG9tYWluT3V0cHV0RmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSB0cmFjZUZpbGU6IHN0cmluZyBvcHRpb247XG4gIG11dGFibGUgbG9nRmlsZTogc3RyaW5nIG9wdGlvbjtcbiAgbXV0YWJsZSBjb21waWxlX21vZGU6IGJvb2w7XG4gIG11dGFibGUgc2hhcmluZzogUGF0dGVybi5zaGFyaW5nX2xldmVsO1xuICBtdXRhYmxlIHNob3dFZmZpY2llbmN5OiBib29sO1xuICBtdXRhYmxlIHRpbWVJbmRlcGVuZGVudDogYm9vbDtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGFsZ192YXJfb3ZlcndyaXRlID0gW107XG4gICAgcmVzY2FsZSA9IE5vbmU7XG4gICAgbWFyc2hhbGl6ZWRJbkZpbGUgPSBcIlwiO1xuICAgIGluaXRpYWxNaXggPSBOb25lO1xuICAgIHNlZWRWYWx1ZSA9IE5vbmU7XG4gICAgdW5pdCA9IFRpbWU7XG4gICAgbWFyc2hhbGl6ZU91dEZpbGUgPSBOb25lO1xuICAgIGRvbWFpbk91dHB1dEZpbGUgPSBOb25lO1xuICAgIHRyYWNlRmlsZSA9IE5vbmU7XG4gICAgbG9nRmlsZSA9IFNvbWUgXCJpbnB1dHNcIjtcbiAgICBjb21waWxlX21vZGUgPSBmYWxzZTtcbiAgICBzaGFyaW5nID0gUGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zO1xuICAgIHNob3dFZmZpY2llbmN5ID0gZmFsc2U7XG4gICAgdGltZUluZGVwZW5kZW50ID0gZmFsc2U7XG4gIH1cblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6IChzdHJpbmcgKiBBcmcuc3BlYyAqIHN0cmluZykgbGlzdCA9XG4gIFtcbiAgICAoIFwiLW1peHR1cmVcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBmaWMgLT4gdC5pbml0aWFsTWl4IDwtIFNvbWUgZmljKSxcbiAgICAgIFwiVGFrZSB0aGUgaW5pdGlhbCBzdGF0ZSBmcm9tIHRoaXMgZmlsZSAoaWdub3JlICVpbml0IGZyb20gb3RoZXIgZmlsZXMpXCIgKTtcbiAgICAoIFwiLXZhclwiLFxuICAgICAgQXJnLlR1cGxlXG4gICAgICAgIChsZXQgdG1wX3Zhcl9uYW1lID0gcmVmIFwiXCIgaW5cbiAgICAgICAgIFtcbiAgICAgICAgICAgQXJnLlN0cmluZyAoZnVuIG5hbWUgLT4gdG1wX3Zhcl9uYW1lIDo9IG5hbWUpO1xuICAgICAgICAgICBBcmcuU3RyaW5nXG4gICAgICAgICAgICAgKGZ1biB2YXJfdmFsIC0+XG4gICAgICAgICAgICAgICB0LmFsZ192YXJfb3ZlcndyaXRlIDwtXG4gICAgICAgICAgICAgICAgICggIXRtcF92YXJfbmFtZSxcbiAgICAgICAgICAgICAgICAgICB0cnkgTmJyLm9mX3N0cmluZyB2YXJfdmFsXG4gICAgICAgICAgICAgICAgICAgd2l0aCBGYWlsdXJlIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgICAgIChBcmcuQmFkIChcIlxcXCJcIiBeIHZhcl92YWwgXiBcIlxcXCIgaXMgbm90IGEgdmFsaWQgdmFsdWVcIikpIClcbiAgICAgICAgICAgICAgICAgOjogdC5hbGdfdmFyX292ZXJ3cml0ZSk7XG4gICAgICAgICBdKSxcbiAgICAgIFwiU2V0IGEgdmFyaWFibGUgdG8gYSBnaXZlbiB2YWx1ZVwiICk7XG4gICAgKCBcIi1sb2FkLXNpbVwiLFxuICAgICAgQXJnLlN0cmluZyAoZnVuIGZpbGUgLT4gdC5tYXJzaGFsaXplZEluRmlsZSA8LSBmaWxlKSxcbiAgICAgIFwibG9hZCBzaW11bGF0aW9uIHBhY2thZ2UgaW5zdGVhZCBvZiBrYXBwYSBmaWxlc1wiICk7XG4gICAgKCBcIi1yZXNjYWxlXCIsXG4gICAgICBBcmcuRmxvYXQgKGZ1biBpIC0+IHQucmVzY2FsZSA8LSBTb21lIGkpLFxuICAgICAgXCJBcHBseSByZXNjYWxpbmcgZmFjdG9yIHRvIGluaXRpYWwgY29uZGl0aW9uXCIgKTtcbiAgICAoIFwiLXVcIixcbiAgICAgIEFyZy5TdHJpbmdcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgIHwgXCJ0aW1lXCIgfCBcIlRpbWVcIiB8IFwidFwiIC0+IHQudW5pdCA8LSBUaW1lXG4gICAgICAgIHwgXCJldmVudFwiIHwgXCJldmVudHNcIiB8IFwiZVwiIHwgXCJFdmVudFwiIHwgXCJFdmVudHNcIiAtPiB0LnVuaXQgPC0gRXZlbnRcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlVucmVjb2duaXplZCB1bml0OiBcIiBeIHMpKSksXG4gICAgICBcInVuaXQgKHRpbWUvZXZlbnQpIGluIHdoaWNoIGxpbWl0IGFuZCBwbG90IHBlcmlvZCBhcmUgc3BlY2lmaWVkXCIgKTtcbiAgICAoIFwiLWVcIixcbiAgICAgIEFyZy5JbnRcbiAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAoXCJPcHRpb24gJy1lJyBoYXMgYmVlbiByZXBsYWNlIGJ5ICctdSBldmVudCAtbCBcIlxuICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgZSBeIFwiJ1wiKSkpLFxuICAgICAgXCJEZXByZWNhdGVkIG9wdGlvblwiICk7XG4gICAgKCBcIi1tYWtlLXNpbVwiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIG1hcnNoYWxpemVPdXRGaWxlIC0+IHQubWFyc2hhbGl6ZU91dEZpbGUgPC0gU29tZSBtYXJzaGFsaXplT3V0RmlsZSksXG4gICAgICBcInNhdmUga2FwcGEgZmlsZXMgYXMgYSBzaW11bGF0aW9uIHBhY2thZ2VcIiApO1xuICAgICggXCItZHVtcC1jY1wiLFxuICAgICAgQXJnLlN0cmluZ1xuICAgICAgICAoZnVuIGRvbWFpbk91dHB1dEZpbGUgLT4gdC5kb21haW5PdXRwdXRGaWxlIDwtIFNvbWUgZG9tYWluT3V0cHV0RmlsZSksXG4gICAgICBcImZpbGUgbmFtZSBmb3IgZHVtcGluZyB0aGUgZG9tYWluIG9mIG9ic2VydmFibGVzXCIgKTtcbiAgICAoIFwiLXRyYWNlXCIsXG4gICAgICBBcmcuU3RyaW5nIChmdW4gdHJhY2VGaWxlIC0+IHQudHJhY2VGaWxlIDwtIFNvbWUgdHJhY2VGaWxlKSxcbiAgICAgIFwiZmlsZSBuYW1lIGZvciBkdW1waW5nIHRoZSBzaW11bGF0aW9uIHRyYWNlXCIgKTtcbiAgICAoIFwiLS10aW1lLWluZGVwZW5kZW50XCIsXG4gICAgICBBcmcuVW5pdCAoZnVuICgpIC0+IHQudGltZUluZGVwZW5kZW50IDwtIHRydWUpLFxuICAgICAgXCJEaXNhYmxlIHRoZSB1c2Ugb2YgdGltZSBpcyBzdG9yeSBoZXVyaXRpY3MgKGZvciB0ZXN0IHN1aXRlKVwiICk7XG4gICAgKCBcIi1zZWVkXCIsXG4gICAgICBBcmcuSW50IChmdW4gaSAtPiB0LnNlZWRWYWx1ZSA8LSBTb21lIGkpLFxuICAgICAgXCJTZWVkIGZvciB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JcIiApO1xuICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5zaG93RWZmaWNpZW5jeSA8LSB0cnVlKSxcbiAgICAgIFwiS2FTaW0gdGVsbHMgaG93IGZhc3QgaXQgcnVuc1wiICk7XG4gICAgKCBcIi1zaGFyaW5nXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICB8IFwibm9cIiB8IFwibm9uZVwiIHwgXCJOb25lXCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTm9fc2hhcmluZ1xuICAgICAgICB8IFwiQ29tcGF0aWJsZVwiIC0+IHQuc2hhcmluZyA8LSBQYXR0ZXJuLk1heF9zaGFyaW5nXG4gICAgICAgIHwgXCJtYXhcIiB8IFwiTWF4XCIgLT4gdC5zaGFyaW5nIDwtIFBhdHRlcm4uTWF4X3NoYXJpbmdcbiAgICAgICAgfCBzIC0+IHJhaXNlIChBcmcuQmFkIChcIlVucmVjb2duaXplZCBzaGFyaW5nIGxldmVsOiBcIiBeIHMpKSksXG4gICAgICBcIkxldmVsIG9mIHNoYXJpbmcgY29tcHV0ZWQgYmV0d2VlbiBwYXR0ZXJucyBkdXJpbmcgaW5pdGlhbGl6YXRpb24gXFxcbiAgICAgICAoTm9uZS9Db21wYXRpYmxlL01heClcIiApO1xuICAgICggXCItLWNvbXBpbGVcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5jb21waWxlX21vZGUgPC0gdHJ1ZSksXG4gICAgICBcIkRpc3BsYXkgcnVsZSBjb21waWxhdGlvbiBhcyBhY3Rpb24gbGlzdFwiICk7XG4gICAgKCBcIi1sb2dcIixcbiAgICAgIEFyZy5TdHJpbmcgKGZ1biBsb2dGaWxlIC0+IHQubG9nRmlsZSA8LSBTb21lIGxvZ0ZpbGUpLFxuICAgICAgXCJmaWxlIG5hbWUgb2YgdGhlIGZpbGUgdG8gcmVnZW5lcmF0ZSB0aGUgZXhhY3Qgc2FtZSBzaW11bGF0aW9uXCIgKTtcbiAgICAoIFwiLS1uby1sb2dcIixcbiAgICAgIEFyZy5Vbml0IChmdW4gKCkgLT4gdC5sb2dGaWxlIDwtIE5vbmUpLFxuICAgICAgXCJEbyBub3QgZ2VuZXJhdGUgYSBmaWxlIHRvIHJlZG8gdGhlIGV4YWN0IHNhbWUgc2ltdWxhdGlvblwiICk7XG4gIF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgcHJlcHJvY2Vzc2VkX2FzdCA9IHtcbiAgY29uZjogQ29uZmlndXJhdGlvbi50O1xuICBzdG9yeV9jb21wcmVzc2lvbjogYm9vbCAqIGJvb2wgKiBib29sO1xuICBmb3JtYXRDZmxvdzogc3RyaW5nO1xuICBjZmxvd0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIGFzdF9jb21waWxlZF9kYXRhOiBMS2FwcGFfY29tcGlsZXIuYXN0X2NvbXBpbGVkX2RhdGE7XG4gIG92ZXJ3cml0ZV9pbml0OlxuICAgIChMS2FwcGEucnVsZV9taXh0dXJlLCBSYXdfbWl4dHVyZS50LCBpbnQpIEFzdC5pbml0X3N0YXRlbWVudCBsaXN0IG9wdGlvbjtcbiAgb3ZlcndyaXRlX3QwOiBmbG9hdCBvcHRpb247XG59XG5cbnR5cGUgY29tcGlsYXRpb25fcmVzdWx0ID0ge1xuICBjb25mOiBDb25maWd1cmF0aW9uLnQ7XG4gIGVudjogTW9kZWwudDtcbiAgY29udGFjdF9tYXA6IENvbnRhY3RfbWFwLnQ7XG4gIHVwZGF0ZWRfYWxnX3ZhcnM6IGludCBsaXN0O1xuICBzdG9yeV9jb21wcmVzc2lvbjogKGJvb2wgKiBib29sICogYm9vbCkgb3B0aW9uO1xuICBmb3JtYXRDZmxvdzogc3RyaW5nO1xuICBjZmxvd0ZpbGU6IHN0cmluZyBvcHRpb247XG4gIGluaXRfbDogKFByaW1pdGl2ZXMuYWxnX2V4cHIgKiBQcmltaXRpdmVzLmVsZW1lbnRhcnlfcnVsZSkgbGlzdDtcbiAgY291bnRlcl9vcHQ6IENvdW50ZXIudCBvcHRpb247XG59XG5cbmxldCBwcmVwcm9jZXNzX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSA/a2FzaW1fYXJncyBjbGlfYXJnc1xuICAgIChhc3QgOiAoXywgXywgXywgXywgXywgXykgQXN0LmNvbXBpbCkgOiBwcmVwcm9jZXNzZWRfYXN0ID1cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgc2ltdWxhdGlvbiBwYXJhbWV0ZXJzQC5cIiBpblxuICBsZXQgY29uZiwgc3RvcnlfY29tcHJlc3Npb24sIGZvcm1hdENmbG93LCBjZmxvd0ZpbGUgPVxuICAgIENvbmZpZ3VyYXRpb24ucGFyc2UgYXN0LkFzdC5jb25maWd1cmF0aW9uc1xuICBpblxuICBsZXQgKCkgPSBGb3JtYXQucHJpbnRmIFwiKyBTYW5pdHkgY2hlY2tzQC5cIiBpblxuICBsZXQgc3ludGF4X3ZlcnNpb24gPSBjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvbiBpblxuICBsZXQgdmFyX292ZXJ3cml0ZSwgaW5pdGlhbE1peCA9XG4gICAgbWF0Y2gga2FzaW1fYXJncyB3aXRoXG4gICAgfCBOb25lIC0+IFtdLCBOb25lXG4gICAgfCBTb21lIGthc2ltX2FyZ3MgLT5cbiAgICAgIGthc2ltX2FyZ3MuS2FzaW1fYXJncy5hbGdfdmFyX292ZXJ3cml0ZSwga2FzaW1fYXJncy5LYXNpbV9hcmdzLmluaXRpYWxNaXhcbiAgaW5cbiAgbGV0IGFzdF9jb21waWxlZF9kYXRhIDogTEthcHBhX2NvbXBpbGVyLmFzdF9jb21waWxlZF9kYXRhID1cbiAgICBMS2FwcGFfY29tcGlsZXIuY29tcGlsX29mX2FzdCB+d2FybmluZyB+ZGVidWdfbW9kZSB+c3ludGF4X3ZlcnNpb25cbiAgICAgIH52YXJfb3ZlcndyaXRlIGFzdFxuICBpblxuICBsZXQgb3ZlcndyaXRlX2luaXQsIG92ZXJ3cml0ZV90MCA9XG4gICAgbWF0Y2ggaW5pdGlhbE1peCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmUsIE5vbmVcbiAgICB8IFNvbWUgZmlsZSAtPlxuICAgICAgbGV0IGNvbXBpbCA9XG4gICAgICAgIG1hdGNoIHN5bnRheF92ZXJzaW9uIHdpdGhcbiAgICAgICAgfCBBc3QuVjQgLT4gS2xleGVyNC5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyIEFzdC5lbXB0eV9jb21waWwgZmlsZVxuICAgICAgICB8IEFzdC5WMyAtPlxuICAgICAgICAgIEthcHBhTGV4ZXIuY29tcGlsZSBGb3JtYXQuc3RkX2Zvcm1hdHRlciBBc3QuZW1wdHlfY29tcGlsIGZpbGVcbiAgICAgIGluXG4gICAgICBsZXQgY29uZiwgXywgXywgXyA9IENvbmZpZ3VyYXRpb24ucGFyc2UgY29tcGlsLkFzdC5jb25maWd1cmF0aW9ucyBpblxuICAgICAgKCBTb21lXG4gICAgICAgICAgKExLYXBwYV9jb21waWxlci5pbml0X29mX2FzdCB+d2FybmluZyB+c3ludGF4X3ZlcnNpb25cbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnIGFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwXG4gICAgICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEudG9rZW5fbmFtZXMuTmFtZWREZWNscy5maW5kZXJcbiAgICAgICAgICAgICBhc3RfY29tcGlsZWRfZGF0YS5hbGdfdmFyc19maW5kZXIgY29tcGlsLkFzdC5pbml0KSxcbiAgICAgICAgY29uZi5Db25maWd1cmF0aW9uLmluaXRpYWwgKVxuICBpblxuICB7XG4gICAgY29uZjtcbiAgICBzdG9yeV9jb21wcmVzc2lvbjtcbiAgICBmb3JtYXRDZmxvdztcbiAgICBjZmxvd0ZpbGU7XG4gICAgYXN0X2NvbXBpbGVkX2RhdGE7XG4gICAgb3ZlcndyaXRlX2luaXQ7XG4gICAgb3ZlcndyaXRlX3QwO1xuICB9XG5cbmxldCBnZXRfYXN0X2Zyb21fbGlzdF9vZl9maWxlcyBzeW50YXhfdmVyc2lvbiBmaWxlX2xpc3QgPVxuICBsZXQgY29tcGlsaW5nX2Z1bmN0aW9uID1cbiAgICBtYXRjaCBzeW50YXhfdmVyc2lvbiB3aXRoXG4gICAgfCBBc3QuVjQgLT4gS2xleGVyNC5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gICAgfCBBc3QuVjMgLT4gS2FwcGFMZXhlci5jb21waWxlIEZvcm1hdC5zdGRfZm9ybWF0dGVyXG4gIGluXG4gIExpc3QuZm9sZF9sZWZ0IGNvbXBpbGluZ19mdW5jdGlvbiBBc3QuZW1wdHlfY29tcGlsIGZpbGVfbGlzdFxuXG5sZXQgZ2V0X2FzdF9mcm9tX2NsaV9hcmdzIGNsaV9hcmdzID1cbiAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb25cbiAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MuaW5wdXRLYXBwYUZpbGVOYW1lc1xuXG5sZXQgZ2V0X3ByZXByb2Nlc3NlZF9hc3RfZnJvbV9jbGlfYXJncyB+d2FybmluZyB+ZGVidWdfbW9kZVxuICAgID8oa2FzaW1fYXJncyA9IEthc2ltX2FyZ3MuZGVmYXVsdCkgY2xpX2FyZ3MgPVxuICBsZXQgYXN0IDpcbiAgICAgICggQXN0LmFnZW50LFxuICAgICAgICBBc3QuYWdlbnRfc2lnLFxuICAgICAgICBBc3QubWl4dHVyZSxcbiAgICAgICAgQXN0Lm1peHR1cmUsXG4gICAgICAgIHN0cmluZyxcbiAgICAgICAgQXN0LnJ1bGUgKVxuICAgICAgQXN0LmNvbXBpbCA9XG4gICAgZ2V0X2FzdF9mcm9tX2xpc3Rfb2ZfZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLnN5bnRheFZlcnNpb25cbiAgICAgIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5pbnB1dEthcHBhRmlsZU5hbWVzXG4gIGluXG4gIHByZXByb2Nlc3NfYXN0IH53YXJuaW5nIH5kZWJ1Z19tb2RlIGNsaV9hcmdzIH5rYXNpbV9hcmdzIGFzdFxuXG50eXBlIGNvbXBpbGF0aW9uX3BhY2sgPSB7XG4gIGNvbXBpbGF0aW9uX3Jlc3VsdDogY29tcGlsYXRpb25fcmVzdWx0O1xuICBhbGdfb3ZlcndyaXRlOiAoaW50ICogUHJpbWl0aXZlcy5hbGdfZXhwcikgbGlzdDtcbiAgb3ZlcndyaXRlX3QwOiBmbG9hdCBvcHRpb247XG59XG5cbmxldCBnZXRfcGFja19mcm9tX3ByZXByb2Nlc3NlZF9hc3Qga2FzaW1fYXJncyB+KGNvbXBpbGVfbW9kZV9vbiA6IGJvb2wpXG4gICAgKHByZXByb2Nlc3NlZF9hc3QgOiBwcmVwcm9jZXNzZWRfYXN0KSA6IGNvbXBpbGF0aW9uX3BhY2sgPVxuICBsZXQgbiwgdywgcyA9IHByZXByb2Nlc3NlZF9hc3Quc3RvcnlfY29tcHJlc3Npb24gaW5cbiAgbGV0ICgpID0gRm9ybWF0LnByaW50ZiBcIisgQ29tcGlsaW5nLi4uQC5cIiBpblxuICBsZXQgZW52LCBoYXNfdHJhY2tpbmcsIGluaXRfbCA9XG4gICAgRXZhbC5jb21waWxlIH5vdXRwdXRzOk91dHB1dHMuZ29cbiAgICAgIH5wYXVzZTooZnVuIGYgLT4gZiAoKSlcbiAgICAgIH5yZXR1cm46KGZ1biB4IC0+IHgpXG4gICAgICB+ZGVidWdfbW9kZTohUGFyYW1ldGVyLmRlYnVnX21vZGVPbiB+c2hhcmluZzprYXNpbV9hcmdzLkthc2ltX2FyZ3Muc2hhcmluZ1xuICAgICAgP3Jlc2NhbGVfaW5pdDprYXNpbV9hcmdzLkthc2ltX2FyZ3MucmVzY2FsZVxuICAgICAgP292ZXJ3cml0ZV9pbml0OnByZXByb2Nlc3NlZF9hc3Qub3ZlcndyaXRlX2luaXRcbiAgICAgID9vdmVyd3JpdGVfdDA6cHJlcHJvY2Vzc2VkX2FzdC5vdmVyd3JpdGVfdDAgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS5hZ2VudHNfc2lnXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnRva2VuX25hbWVzXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwXG4gICAgICBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLnJlc3VsdFxuICBpblxuICBsZXQgc3RvcnlfY29tcHJlc3Npb24gPVxuICAgIGlmIGhhc190cmFja2luZyAmJiAobiB8fCB3IHx8IHMpIHRoZW5cbiAgICAgIFNvbWUgcHJlcHJvY2Vzc2VkX2FzdC5zdG9yeV9jb21wcmVzc2lvblxuICAgIGVsc2VcbiAgICAgIE5vbmVcbiAgaW5cbiAge1xuICAgIGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gICAgICB7XG4gICAgICAgIGNvbmYgPSBwcmVwcm9jZXNzZWRfYXN0LmNvbmY7XG4gICAgICAgIGVudjtcbiAgICAgICAgY29udGFjdF9tYXAgPSBwcmVwcm9jZXNzZWRfYXN0LmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwO1xuICAgICAgICB1cGRhdGVkX2FsZ192YXJzID0gcHJlcHJvY2Vzc2VkX2FzdC5hc3RfY29tcGlsZWRfZGF0YS51cGRhdGVkX2FsZ192YXJzO1xuICAgICAgICBzdG9yeV9jb21wcmVzc2lvbjtcbiAgICAgICAgZm9ybWF0Q2Zsb3cgPSBwcmVwcm9jZXNzZWRfYXN0LmZvcm1hdENmbG93O1xuICAgICAgICBjZmxvd0ZpbGUgPSBwcmVwcm9jZXNzZWRfYXN0LmNmbG93RmlsZTtcbiAgICAgICAgaW5pdF9sO1xuICAgICAgICBjb3VudGVyX29wdCA9IE5vbmU7XG4gICAgICB9O1xuICAgIGFsZ19vdmVyd3JpdGUgPSBbXTtcbiAgICBvdmVyd3JpdGVfdDAgPSBwcmVwcm9jZXNzZWRfYXN0Lm92ZXJ3cml0ZV90MDtcbiAgfVxuXG5sZXQgZ2V0X3BhY2tfZnJvbV9tYXJzaGFsaXplZGZpbGUgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJncyBtYXJzaGFsaXplZF9maWxlXG4gICAgOiBjb21waWxhdGlvbl9wYWNrID1cbiAgYXNzZXJ0IChtYXJzaGFsaXplZF9maWxlIDw+IFwiXCIpO1xuICB0cnlcbiAgICBsZXQgZCA9IG9wZW5faW5fYmluIG1hcnNoYWxpemVkX2ZpbGUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmlucHV0S2FwcGFGaWxlTmFtZXMgPD4gW10gdGhlblxuICAgICAgICB3YXJuaW5nIH5wb3M6TG9jLmR1bW15IChmdW4gZiAtPlxuICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmXG4gICAgICAgICAgICAgIFwiU2ltdWxhdGlvbiBwYWNrYWdlIGxvYWRlZCwgYWxsIGthcHBhIGZpbGVzIGFyZSBpZ25vcmVkXCIpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LnByaW50ZiBcIisgTG9hZGluZyBzaW11bGF0aW9uIHBhY2thZ2UgJXMuLi5ALlwiIG1hcnNoYWxpemVkX2ZpbGVcbiAgICBpblxuICAgIGxldCBjb21waWxhdGlvbl9yZXN1bHQgOiBjb21waWxhdGlvbl9yZXN1bHQgPSBNYXJzaGFsLmZyb21fY2hhbm5lbCBkIGluXG4gICAgbGV0ICgpID0gU3RkbGliLmNsb3NlX2luIGQgaW5cbiAgICBsZXQgYWxnX292ZXJ3cml0ZSA9XG4gICAgICBMaXN0Lm1hcFxuICAgICAgICAoZnVuIChzLCB2KSAtPlxuICAgICAgICAgICggTW9kZWwubnVtX29mX2FsZyAoTG9jLmFubm90X3dpdGhfZHVtbXkgcykgY29tcGlsYXRpb25fcmVzdWx0LmVudixcbiAgICAgICAgICAgIEFsZ19leHByLkNPTlNUIHYgKSlcbiAgICAgICAga2FzaW1fYXJncy5LYXNpbV9hcmdzLmFsZ192YXJfb3ZlcndyaXRlXG4gICAgaW5cbiAgICBtYXRjaCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MuaW5pdGlhbE1peCB3aXRoXG4gICAgfCBOb25lIC0+IHsgY29tcGlsYXRpb25fcmVzdWx0OyBhbGdfb3ZlcndyaXRlOyBvdmVyd3JpdGVfdDAgPSBOb25lIH1cbiAgICB8IFNvbWUgZmlsZSAtPlxuICAgICAgbGV0IGNvbXBpbCA9XG4gICAgICAgIGdldF9hc3RfZnJvbV9saXN0X29mX2ZpbGVzIGNsaV9hcmdzLlJ1bl9jbGlfYXJncy5zeW50YXhWZXJzaW9uIFsgZmlsZSBdXG4gICAgICBpblxuICAgICAgbGV0IG92ZXJ3cml0ZV90MCA6IGZsb2F0IG9wdGlvbiA9XG4gICAgICAgIChDb25maWd1cmF0aW9uLnBhcnNlIGNvbXBpbC5Bc3QuY29uZmlndXJhdGlvbnMgfD4gZnVuIChhLCBfLCBfLCBfKSAtPiBhKVxuICAgICAgICB8PiBmdW4gY29uZiAtPiBjb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbFxuICAgICAgaW5cblxuICAgICAgbGV0IHJhd19pbml0cyA9XG4gICAgICAgIExLYXBwYV9jb21waWxlci5pbml0X29mX2FzdCB+d2FybmluZ1xuICAgICAgICAgIH5zeW50YXhfdmVyc2lvbjpjbGlfYXJncy5SdW5fY2xpX2FyZ3Muc3ludGF4VmVyc2lvblxuICAgICAgICAgIChNb2RlbC5zaWduYXR1cmVzIGNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYpXG4gICAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0LmNvbnRhY3RfbWFwXG4gICAgICAgICAgKE1vZGVsLnRva2Vuc19maW5kZXIgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICAoTW9kZWwuYWxnc19maW5kZXIgY29tcGlsYXRpb25fcmVzdWx0LmVudilcbiAgICAgICAgICBjb21waWwuQXN0LmluaXRcbiAgICAgIGluXG4gICAgICBsZXQgaW5pdF9sID1cbiAgICAgICAgRXZhbC5jb21waWxlX2luaXRzIH5kZWJ1Z19tb2RlOiFQYXJhbWV0ZXIuZGVidWdfbW9kZU9uIH53YXJuaW5nXG4gICAgICAgICAgP3Jlc2NhbGU6a2FzaW1fYXJncy5LYXNpbV9hcmdzLnJlc2NhbGUgfmNvbXBpbGVfbW9kZV9vbjpmYWxzZVxuICAgICAgICAgIGNvbXBpbGF0aW9uX3Jlc3VsdC5jb250YWN0X21hcCBjb21waWxhdGlvbl9yZXN1bHQuZW52IHJhd19pbml0c1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgY29tcGlsYXRpb25fcmVzdWx0ID0geyBjb21waWxhdGlvbl9yZXN1bHQgd2l0aCBpbml0X2wgfTtcbiAgICAgICAgYWxnX292ZXJ3cml0ZTtcbiAgICAgICAgb3ZlcndyaXRlX3QwO1xuICAgICAgfVxuICB3aXRoXG4gIHwgRXhjZXB0aW9uRGVmbi5NYWxmb3JtZWRfRGVjbCBfIGFzIGUgLT4gcmFpc2UgZVxuICB8IF9leG4gLT5cbiAgICBGb3JtYXQucHJpbnRmXG4gICAgICBcIlNpbXVsYXRpb24gcGFja2FnZSBzZWVtcyB0byBoYXZlIGJlZW4gY3JlYXRlZCB3aXRoIGEgZGlmZmVyZW50IHZlcnNpb24gXFxcbiAgICAgICBvZiBLYVNpbSwgYWJvcnRpbmcuLi5cIjtcbiAgICBleGl0IDFcblxubGV0IGdldF9jb21waWxhdGlvbl9mcm9tX3BhY2sgfndhcm5pbmcga2FzaW1fYXJncyBjbGlfYXJnc1xuICAgIChwYWNrIDogY29tcGlsYXRpb25fcGFjaykgOiBjb21waWxhdGlvbl9yZXN1bHQgPVxuICBsZXQgaW5pdF90X2Zyb21fZmlsZXMgPVxuICAgIE9wdGlvbl91dGlsLnVuc29tZVxuICAgICAgKE9wdGlvbl91dGlsLnVuc29tZSAwLiBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24uaW5pdGlhbClcbiAgICAgIHBhY2sub3ZlcndyaXRlX3QwXG4gIGluXG4gIGxldCBpbml0X3QsIG1heF90aW1lLCBpbml0X2UsIG1heF9ldmVudCwgcGxvdF9wZXJpb2QgPVxuICAgIG1hdGNoIGthc2ltX2FyZ3MuS2FzaW1fYXJncy51bml0IHdpdGhcbiAgICB8IEthc2ltX2FyZ3MuVGltZSAtPlxuICAgICAgKCBPcHRpb25fdXRpbC51bnNvbWUgaW5pdF90X2Zyb21fZmlsZXMgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLm1pblZhbHVlLFxuICAgICAgICBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWF4VmFsdWUsXG4gICAgICAgIE5vbmUsXG4gICAgICAgIE5vbmUsXG4gICAgICAgIChtYXRjaCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MucGxvdFBlcmlvZCB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IENvbmZpZ3VyYXRpb24uRFQgYVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBPcHRpb25fdXRpbC51bnNvbWUgKENvbmZpZ3VyYXRpb24uRFQgMS4pXG4gICAgICAgICAgICBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24ucGxvdFBlcmlvZCkgKVxuICAgIHwgS2FzaW1fYXJncy5FdmVudCAtPlxuICAgICAgKCBpbml0X3RfZnJvbV9maWxlcyxcbiAgICAgICAgTm9uZSxcbiAgICAgICAgU29tZVxuICAgICAgICAgIChpbnRfb2ZfZmxvYXQgKE9wdGlvbl91dGlsLnVuc29tZSAwLiBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWluVmFsdWUpKSxcbiAgICAgICAgT3B0aW9uX3V0aWwubWFwIGludF9vZl9mbG9hdCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MubWF4VmFsdWUsXG4gICAgICAgIChtYXRjaCBjbGlfYXJncy5SdW5fY2xpX2FyZ3MucGxvdFBlcmlvZCB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IENvbmZpZ3VyYXRpb24uREUgKGludF9vZl9mbG9hdCAoY2VpbCBhKSlcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwudW5zb21lIChDb25maWd1cmF0aW9uLkRFIDEpXG4gICAgICAgICAgICBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5jb25mLkNvbmZpZ3VyYXRpb24ucGxvdFBlcmlvZCkgKVxuICBpblxuICBsZXQgY291bnRlciA9XG4gICAgQ291bnRlci5jcmVhdGUgfmluaXRfdCA/aW5pdF9lID9tYXhfdGltZSA/bWF4X2V2ZW50IH5wbG90X3BlcmlvZFxuICAgICAgfm5iX3J1bGVzOihNb2RlbC5uYl9ydWxlcyBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5lbnYpXG4gICAgICAoKVxuICBpblxuICBsZXQgZW52ID1cbiAgICBpZlxuICAgICAgY2xpX2FyZ3MuUnVuX2NsaV9hcmdzLmJhdGNobW9kZVxuICAgICAgJiYga2FzaW1fYXJncy5LYXNpbV9hcmdzLm1hcnNoYWxpemVPdXRGaWxlID0gTm9uZVxuICAgIHRoZW5cbiAgICAgIE1vZGVsLnByb3BhZ2F0ZV9jb25zdGFudCB+d2FybmluZyA/bWF4X3RpbWU6KENvdW50ZXIubWF4X3RpbWUgY291bnRlcilcbiAgICAgICAgP21heF9ldmVudHM6KENvdW50ZXIubWF4X2V2ZW50cyBjb3VudGVyKVxuICAgICAgICB+dXBkYXRlZF92YXJzOnBhY2suY29tcGlsYXRpb25fcmVzdWx0LnVwZGF0ZWRfYWxnX3ZhcnNcbiAgICAgICAgfmFsZ19vdmVyd3JpdGU6cGFjay5hbGdfb3ZlcndyaXRlIHBhY2suY29tcGlsYXRpb25fcmVzdWx0LmVudlxuICAgIGVsc2VcbiAgICAgIE1vZGVsLm92ZXJ3cml0ZV92YXJzIHBhY2suYWxnX292ZXJ3cml0ZSBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdC5lbnZcbiAgaW5cbiAgeyBwYWNrLmNvbXBpbGF0aW9uX3Jlc3VsdCB3aXRoIGVudjsgY291bnRlcl9vcHQgPSBTb21lIGNvdW50ZXIgfVxuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCB+d2FybmluZyA/KGNvbXBpbGVfbW9kZV9vbiA9IGZhbHNlKVxuICAgID8oa2FzaW1fYXJncyA9IEthc2ltX2FyZ3MuZGVmYXVsdCkgY2xpX2FyZ3MgcHJlcHJvY2Vzc2VkX2FzdCA6XG4gICAgY29tcGlsYXRpb25fcmVzdWx0ID1cbiAgbGV0IHBhY2sgPVxuICAgIGdldF9wYWNrX2Zyb21fcHJlcHJvY2Vzc2VkX2FzdCBrYXNpbV9hcmdzIH5jb21waWxlX21vZGVfb24gcHJlcHJvY2Vzc2VkX2FzdFxuICBpblxuICBnZXRfY29tcGlsYXRpb25fZnJvbV9wYWNrIH53YXJuaW5nIGthc2ltX2FyZ3MgY2xpX2FyZ3MgcGFja1xuXG5sZXQgZ2V0X2NvbXBpbGF0aW9uIH53YXJuaW5nIH5kZWJ1Z19tb2RlID8oY29tcGlsZV9tb2RlX29uID0gZmFsc2UpXG4gICAgPyhrYXNpbV9hcmdzID0gS2FzaW1fYXJncy5kZWZhdWx0KSBjbGlfYXJncyA6IGNvbXBpbGF0aW9uX3Jlc3VsdCA9XG4gIGxldCAocGFjayA6IGNvbXBpbGF0aW9uX3BhY2spID1cbiAgICBtYXRjaCBrYXNpbV9hcmdzLkthc2ltX2FyZ3MubWFyc2hhbGl6ZWRJbkZpbGUgd2l0aFxuICAgIHwgXCJcIiAtPlxuICAgICAgbGV0IHByZXByb2Nlc3NlZF9hc3QgPVxuICAgICAgICBnZXRfcHJlcHJvY2Vzc2VkX2FzdF9mcm9tX2NsaV9hcmdzIH53YXJuaW5nIH5kZWJ1Z19tb2RlIGNsaV9hcmdzXG4gICAgICBpblxuICAgICAgZ2V0X3BhY2tfZnJvbV9wcmVwcm9jZXNzZWRfYXN0IGthc2ltX2FyZ3MgfmNvbXBpbGVfbW9kZV9vblxuICAgICAgICBwcmVwcm9jZXNzZWRfYXN0XG4gICAgfCBtYXJzaGFsaXplZF9maWxlIC0+XG4gICAgICBnZXRfcGFja19mcm9tX21hcnNoYWxpemVkZmlsZSB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzXG4gICAgICAgIG1hcnNoYWxpemVkX2ZpbGVcbiAgaW5cbiAgZ2V0X2NvbXBpbGF0aW9uX2Zyb21fcGFjayB+d2FybmluZyBrYXNpbV9hcmdzIGNsaV9hcmdzIHBhY2tcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgdCA9IHsgbXV0YWJsZSBkZWxpbWl0ZXI6IGNoYXIgfVxuXG5sZXQgZGVmYXVsdCA6IHQgPSB7IGRlbGltaXRlciA9IFRvb2xzLmRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlciB9XG5cbmxldCBvcHRpb25zICh0IDogdCkgOiAoc3RyaW5nICogQXJnLnNwZWMgKiBzdHJpbmcpIGxpc3QgPVxuICBbXG4gICAgKCBcIi0tZGVsaW1pdGVyXCIsXG4gICAgICBBcmcuU3RyaW5nXG4gICAgICAgIChmdW4gZCAtPlxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGQgPSBTY2FuZi51bmVzY2FwZWQgZCBpblxuICAgICAgICAgICAgbGV0IGQgPVxuICAgICAgICAgICAgICBpZiAxID0gU3RyaW5nLmxlbmd0aCBkIHRoZW5cbiAgICAgICAgICAgICAgICBTdHJpbmcuZ2V0IGQgMFxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgcmFpc2VcbiAgICAgICAgICAgICAgICAgIChBcmcuQmFkXG4gICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJkZWxpbWV0ZXIgaGFzIG11bHRpcGxlIGNoYXJhY3RlcnMgJyVzJ1wiIGQpKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHQuZGVsaW1pdGVyIDwtIGQgaW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgd2l0aCBTY2FuZi5TY2FuX2ZhaWx1cmUgXyAtPlxuICAgICAgICAgICAgcmFpc2UgKEFyZy5CYWQgKEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHBhcnNlIGRlbGltZXRlciAnJXMnXCIgZCkpKSxcbiAgICAgIFwiRGVsaW1pdGVyIGZvciBtZXNzYWdlIHBhc3NpbmdcIiApO1xuICBdXG4iLCIoKipcbiAgKiBsb2dnZXJzLm1sXG4gICpcbiAgKiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI2LzAxLzIwMTZcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMjUvMDUvMjAxNlxuICAqICpcbiAgKlxuICAqXG4gICogQ29weXJpZ2h0IDIwMTYgIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBlbmNvZGluZyA9XG4gIHwgTWF0cml4XG4gIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoXG4gIHwgSFRNTFxuICB8IEhUTUxfVGFidWxhclxuICB8IERPVFxuICB8IFRYVFxuICB8IFRYVF9UYWJ1bGFyXG4gIHwgWExTXG4gIHwgT2N0YXZlXG4gIHwgTWF0bGFiXG4gIHwgTWFwbGVcbiAgfCBNYXRoZW1hdGljYVxuICB8IFNCTUxcbiAgfCBET1RORVRcbiAgfCBKc29uXG4gIHwgR0VQSElcblxubW9kdWxlIHR5cGUgRm9ybWF0TWFwID0gc2lnXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBhZGQgOiBlbmNvZGluZyAtPiAnYSAtPiAnYSB0IC0+ICdhIHRcbiAgdmFsIGZpbmQgOiBlbmNvZGluZyAtPiAnYSB0IC0+ICdhXG4gIHZhbCBlbXB0eSA6ICdhIHRcbmVuZFxuXG5tb2R1bGUgRm9ybWF0TWFwID0gTWFwLk1ha2UgKHN0cnVjdFxuICB0eXBlIHQgPSBlbmNvZGluZ1xuXG4gIGxldCBjb21wYXJlID0gY29tcGFyZVxuZW5kKVxuXG50eXBlIHRva2VuID0gU3RyaW5nIG9mIHN0cmluZyB8IEJyZWFrYWJsZV9zcGFjZSB8IEJyZWFrYWJsZV9oaW50XG5cbnR5cGUgbG9nZ2VyID1cbiAgfCBERVZOVUxcbiAgfCBGb3JtYXR0ZXIgb2YgRm9ybWF0LmZvcm1hdHRlclxuICB8IENpcmN1bGFyX2J1ZmZlciBvZiBzdHJpbmcgQ2lyY3VsYXJfYnVmZmVycy50IHJlZlxuICB8IEluZmluaXRlX2J1ZmZlciBvZiBzdHJpbmcgSW5maW5pdGVfYnVmZmVycy50IHJlZlxuXG5sZXQgYnJlYWthYmxlIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBIVE1MX1RhYnVsYXIgfCBIVE1MIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgVFhUIC0+IHRydWVcbiAgfCBNYXRyaXggfCBKc29uIHwgTWF0aGVtYXRpY2EgfCBNYXRsYWIgfCBPY3RhdmUgfCBNYXBsZSB8IFNCTUwgfCBET1RORVQgfCBET1RcbiAgfCBHRVBISSB8IFRYVF9UYWJ1bGFyIHwgWExTIC0+XG4gICAgZmFsc2VcblxudHlwZSB0ID0ge1xuICBlbmNvZGluZzogZW5jb2Rpbmc7XG4gIGxvZ2dlcjogbG9nZ2VyO1xuICBjaGFubmVsX29wdDogb3V0X2NoYW5uZWwgb3B0aW9uO1xuICBtdXRhYmxlIGN1cnJlbnRfbGluZTogdG9rZW4gbGlzdDtcbn1cblxubGV0IGdldF9lbmNvZGluZ19mb3JtYXQgdCA9IHQuZW5jb2RpbmdcblxubGV0IGR1bW15X2h0bWxfbG9nZ2VyID1cbiAge1xuICAgICgqICBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5IDsqKVxuICAgIGVuY29kaW5nID0gSFRNTDtcbiAgICBsb2dnZXIgPSBERVZOVUw7XG4gICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgICAgbm9kZXMgPSByZWYgW107XG4gICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgfVxuXG5sZXQgZHVtbXlfdHh0X2xvZ2dlciA9XG4gIHtcbiAgICAoKiAgaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eSA7KilcbiAgICBlbmNvZGluZyA9IFRYVDtcbiAgICBjaGFubmVsX29wdCA9IE5vbmU7XG4gICAgbG9nZ2VyID0gREVWTlVMO1xuICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICgqIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgICAgbm9kZXMgPSByZWYgW107XG4gICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgIGVkZ2VzX21hcCA9IHJlZiBNb2RzLlN0cmluZzJNYXAuZW1wdHk7KilcbiAgfVxuXG4oKiBXYXJuaW5nLCB3ZSBoYXZlIHRvIGtlZXAgdGhlIGNoYXJhY3RlciBAIHdoZW4gaXQgaXMgZm9sbG93ZWQgYnkgYSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkgYSBsZXR0ZXIgb3IgYSBkaWdpdCBzaG91bGQgYmUgcHJlc2VydmVkICopXG5cbmxldCBkdW1wX2NsZWFuX3N0cmluZyBmbXQgPVxuICBTdHJpbmcuaXRlciAoZnVuIGEgLT5cbiAgICAgIGlmIGEgPSAnXFxuJyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVjXCIgYSlcblxubGV0IGNsZWFuX3N0cmluZyBzID1cbiAgbGV0IGJ1ZmZlciA9IEJ1ZmZlci5jcmVhdGUgMCBpblxuICBsZXQgZm10X2J1ZmZlciA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGJ1ZmZlciBpblxuICBsZXQgKCkgPSBkdW1wX2NsZWFuX3N0cmluZyBmbXRfYnVmZmVyIHMgaW5cbiAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlclxuXG5sZXQgY2xlYW4gZm10ID1cbiAgbGV0IHMgPSBCdWZmZXIuY3JlYXRlIDAgaW5cbiAgbGV0IGZtdF9idWZmZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBzIGluXG4gIEZvcm1hdC5rZnByaW50ZlxuICAgIChmdW4gXyAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgICAgIGR1bXBfY2xlYW5fc3RyaW5nIGZtdCAoQnVmZmVyLmNvbnRlbnRzIHMpKVxuICAgIGZtdF9idWZmZXJcblxubGV0IGZwcmludGYgPyhmcHJpbnRuZXdsaW5lID0gZmFsc2UpIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIsIGZwcmludG5ld2xpbmUgfHwgYnJlYWthYmxlIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgREVWTlVMLCBfIC0+IEZvcm1hdC5pZnByaW50ZiBGb3JtYXQuc3RkX2Zvcm1hdHRlclxuICB8IEZvcm1hdHRlciBmbXQsIHRydWUgLT4gRm9ybWF0LmZwcmludGYgZm10XG4gIHwgRm9ybWF0dGVyIGZtdCwgZmFsc2UgLT4gY2xlYW4gZm10XG4gIHwgQ2lyY3VsYXJfYnVmZmVyIF8sIGJvb2wgfCBJbmZpbml0ZV9idWZmZXIgXywgYm9vbCAtPlxuICAgIGxldCBiID0gQnVmZmVyLmNyZWF0ZSAwIGluXG4gICAgbGV0IGZtdF9idWZmZXIgPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBiIGluXG4gICAgRm9ybWF0LmtmcHJpbnRmXG4gICAgICAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdF9idWZmZXIgKCkgaW5cbiAgICAgICAgbGV0IHN0ciA9IEJ1ZmZlci5jb250ZW50cyBiIGluXG4gICAgICAgIGxvZ2dlci5jdXJyZW50X2xpbmUgPC1cbiAgICAgICAgICBTdHJpbmdcbiAgICAgICAgICAgIChpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgIHN0clxuICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgIGNsZWFuX3N0cmluZyBzdHIpXG4gICAgICAgICAgOjogbG9nZ2VyLmN1cnJlbnRfbGluZSlcbiAgICAgIGZtdF9idWZmZXJcblxubGV0IHByaW50X2JyZWFrYWJsZV9zcGFjZSBsb2dnZXIgPVxuICBpZiBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHRoZW4gKFxuICAgIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICAgIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gZnByaW50ZiBsb2dnZXIgXCJAIFwiXG4gICAgfCBDaXJjdWxhcl9idWZmZXIgXyB8IEluZmluaXRlX2J1ZmZlciBfIC0+XG4gICAgICBsb2dnZXIuY3VycmVudF9saW5lIDwtIEJyZWFrYWJsZV9zcGFjZSA6OiBsb2dnZXIuY3VycmVudF9saW5lXG4gICkgZWxzZVxuICAgIGZwcmludGYgbG9nZ2VyIFwiIFwiXG5cbmxldCBwcmludF9icmVha2FibGVfaGludCBsb2dnZXIgPVxuICBpZiBicmVha2FibGUgbG9nZ2VyLmVuY29kaW5nIHRoZW4gKFxuICAgIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICAgIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gZnByaW50ZiBsb2dnZXIgXCJALFwiXG4gICAgfCBDaXJjdWxhcl9idWZmZXIgXyB8IEluZmluaXRlX2J1ZmZlciBfIC0+XG4gICAgICBsb2dnZXIuY3VycmVudF9saW5lIDwtIEJyZWFrYWJsZV9oaW50IDo6IGxvZ2dlci5jdXJyZW50X2xpbmVcbiAgKSBlbHNlXG4gICAgZnByaW50ZiBsb2dnZXIgXCJcIlxuXG5sZXQgZW5kX29mX2xpbmVfc3ltYm9sIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTCB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCAtPiBcIjxCcj5cIlxuICB8IE1hdHJpeCB8IE1hdGxhYiB8IE1hdGhlbWF0aWNhIHwgT2N0YXZlIHwgTWFwbGUgfCBTQk1MIHwgRE9UTkVUIHwgSnNvblxuICB8IEdFUEhJIHwgSFRNTF9UYWJ1bGFyIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICBcIlwiXG5cbmxldCBkdW1wX3Rva2VuIGYgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFN0cmluZyBzIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBzXG4gIHwgQnJlYWthYmxlX3NwYWNlIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJAIFwiXG4gIHwgQnJlYWthYmxlX2hpbnQgLT4gRm9ybWF0LmZwcmludGYgZiBcIkAsXCJcblxubGV0IHByaW50X25ld2xpbmUgbG9nZ2VyID1cbiAgbGV0ICgpID1cbiAgICBmcHJpbnRmIH5mcHJpbnRuZXdsaW5lOnRydWUgbG9nZ2VyIFwiJXMldFwiIChlbmRfb2ZfbGluZV9zeW1ib2wgbG9nZ2VyKVxuICAgICAgKGZ1biBmIC0+IEZvcm1hdC5wcF9wcmludF9uZXdsaW5lIGYgKCkpXG4gIGluXG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+ICgpXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGJmIC0+XG4gICAgbGV0IGJmJyA9XG4gICAgICBDaXJjdWxhcl9idWZmZXJzLmFkZFxuICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJWFcIlxuICAgICAgICAgICAoUHAubGlzdCAoZnVuIF8gLT4gKCkpIGR1bXBfdG9rZW4pXG4gICAgICAgICAgIChMaXN0LnJldiBsb2dnZXIuY3VycmVudF9saW5lKSlcbiAgICAgICAgIWJmXG4gICAgaW5cbiAgICBsZXQgKCkgPSBiZiA6PSBiZicgaW5cbiAgICBsZXQgKCkgPSBsb2dnZXIuY3VycmVudF9saW5lIDwtIFtdIGluXG4gICAgKClcbiAgfCBJbmZpbml0ZV9idWZmZXIgYmYgLT5cbiAgICBsZXQgYmYnID1cbiAgICAgIEluZmluaXRlX2J1ZmZlcnMuYWRkXG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgIChQcC5saXN0IChmdW4gXyAtPiAoKSkgZHVtcF90b2tlbilcbiAgICAgICAgICAgKExpc3QucmV2IGxvZ2dlci5jdXJyZW50X2xpbmUpKVxuICAgICAgICAhYmZcbiAgICBpblxuICAgIGxldCAoKSA9IGJmIDo9IGJmJyBpblxuICAgIGxldCAoKSA9IGxvZ2dlci5jdXJyZW50X2xpbmUgPC0gW10gaW5cbiAgICAoKVxuXG5sZXQgcHJpbnRfY2VsbCBsb2dnZXIgcyA9XG4gIGxldCBvcGVuX2NlbGxfc3ltYm9sLCBjbG9zZV9jZWxsX3N5bWJvbCA9XG4gICAgbWF0Y2ggbG9nZ2VyLmVuY29kaW5nIHdpdGhcbiAgICB8IEhUTUxfVGFidWxhciAtPiBcIjxURD5cIiwgXCI8L1REPlwiXG4gICAgfCBUWFRfVGFidWxhciAtPiBcIlwiLCBcIlxcdFwiXG4gICAgfCBNYXRyaXggfCBHRVBISSB8IEpzb24gfCBNYXRoZW1hdGljYSB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTFxuICAgIHwgRE9UTkVUIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgSFRNTCB8IERPVCB8IFRYVCB8IFhMUyAtPlxuICAgICAgXCJcIiwgXCJcIlxuICBpblxuICBmcHJpbnRmIGxvZ2dlciBcIiVzJXMlc1wiIG9wZW5fY2VsbF9zeW1ib2wgcyBjbG9zZV9jZWxsX3N5bWJvbFxuXG5sZXQgZmx1c2hfbG9nZ2VyIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCAtPiAoKVxuICB8IEZvcm1hdHRlciBmbXQgLT4gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIGZtdCAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT4gKClcblxubGV0IGNsb3NlX2xvZ2dlciBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gICAgfCBIVE1MIC0+IGZwcmludGYgbG9nZ2VyIFwiPC9kaXY+XFxuPC9ib2R5PlxcblwiXG4gICAgfCBIVE1MX1RhYnVsYXIgLT4gZnByaW50ZiBsb2dnZXIgXCI8L1RBQkxFPlxcbjwvZGl2PlxcbjwvYm9keT5cIlxuICAgIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwifVxcblwiXG4gICAgfCBHRVBISSB8IEpzb24gfCBNYXRsYWIgfCBNYXRoZW1hdGljYSB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVFxuICAgIHwgSFRNTF9HcmFwaCB8IEpzX0dyYXBoIHwgRE9UIHwgVFhUIHwgVFhUX1RhYnVsYXIgfCBYTFMgLT5cbiAgICAgICgpXG4gIGluXG4gIGxldCAoKSA9IGZsdXNoX2xvZ2dlciBsb2dnZXIgaW5cbiAgKClcblxubGV0IHByaW50X3ByZWFtYmxlIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5lbmNvZGluZyB3aXRoXG4gIHwgSFRNTCAtPiBmcHJpbnRmIGxvZ2dlciBcIjxib2R5PlxcbjxkaXY+XFxuXCJcbiAgfCBIVE1MX1RhYnVsYXIgLT4gZnByaW50ZiBsb2dnZXIgXCI8Ym9keT5cXG48ZGl2PlxcbjxUQUJMRT5cXG5cIlxuICB8IE1hdHJpeCAtPlxuICAgIGxldCAoKSA9IGZwcmludGYgbG9nZ2VyIFwie1wiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBmcHJpbnRmIGxvZ2dlciBcIlxcXCJiaW9CZWdpblRpbWVcXFwiIDogMC4wMDAwMDBlKzAwLFwiIGluXG4gICAgbGV0ICgpID0gcHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBmcHJpbnRmIGxvZ2dlciBcIlxcXCJiaW9FbmRUaW1lXFxcIiA6IDAuMDAwMDAwZSswMCxcIiBpblxuICAgIGxldCAoKSA9IHByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgKClcbiAgfCBHRVBISSB8IEpzb24gfCBNYXRsYWIgfCBNYXRoZW1hdGljYSB8IE9jdGF2ZSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVFxuICB8IEhUTUxfR3JhcGggfCBKc19HcmFwaCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgWExTIC0+XG4gICAgKClcblxubGV0IG9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCA/KG1vZGUgPSBUWFQpIGNoYW5uZWwgPVxuICBsZXQgZm9ybWF0dGVyID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFubmVsIGluXG4gIGxldCBsb2dnZXIgPVxuICAgIHtcbiAgICAgICgqIGlkX21hcCA9IHJlZiBTdHJpbmdNYXAuZW1wdHk7XG4gICAgICAgICBmcmVzaF9pZCA9IHJlZiAxOyopXG4gICAgICBsb2dnZXIgPSBGb3JtYXR0ZXIgZm9ybWF0dGVyO1xuICAgICAgY2hhbm5lbF9vcHQgPSBTb21lIGNoYW5uZWw7XG4gICAgICBlbmNvZGluZyA9IG1vZGU7XG4gICAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAgICgqIG5vZGVzID0gcmVmIFtdO1xuICAgICAgICAgZWRnZXMgPSByZWYgW107XG4gICAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfcHJlYW1ibGUgbG9nZ2VyIGluXG4gIGxvZ2dlclxuXG5sZXQgb3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgPyhtb2RlID0gVFhUKSBmb3JtYXR0ZXIgPVxuICBsZXQgbG9nZ2VyID1cbiAgICB7XG4gICAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgICAgZnJlc2hfaWQgPSByZWYgMTsqKVxuICAgICAgbG9nZ2VyID0gRm9ybWF0dGVyIGZvcm1hdHRlcjtcbiAgICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX2NpcmN1bGFyX2J1ZmZlciA/KG1vZGUgPSBUWFQpID8oc2l6ZSA9IDEwKSAoKSA9XG4gIHtcbiAgICAoKiBpZF9tYXAgPSByZWYgU3RyaW5nTWFwLmVtcHR5O1xuICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICBsb2dnZXIgPSBDaXJjdWxhcl9idWZmZXIgKHJlZiAoQ2lyY3VsYXJfYnVmZmVycy5jcmVhdGUgc2l6ZSBcIlwiKSk7XG4gICAgY2hhbm5lbF9vcHQgPSBOb25lO1xuICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICBjdXJyZW50X2xpbmUgPSBbXTtcbiAgICAoKiBub2RlcyA9IHJlZiBbXTtcbiAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTsqKVxuICB9XG5cbmxldCBvcGVuX2luZmluaXRlX2J1ZmZlciA/KG1vZGUgPSBUWFQpICgpID1cbiAgbGV0IGxvZ2dlciA9XG4gICAge1xuICAgICAgKCogaWRfbWFwID0gcmVmIFN0cmluZ01hcC5lbXB0eTtcbiAgICAgICAgIGZyZXNoX2lkID0gcmVmIDE7KilcbiAgICAgIGxvZ2dlciA9IEluZmluaXRlX2J1ZmZlciAocmVmIChJbmZpbml0ZV9idWZmZXJzLmNyZWF0ZSAwIFwiXCIpKTtcbiAgICAgIGNoYW5uZWxfb3B0ID0gTm9uZTtcbiAgICAgIGVuY29kaW5nID0gbW9kZTtcbiAgICAgIGN1cnJlbnRfbGluZSA9IFtdO1xuICAgICAgKCogbm9kZXMgPSByZWYgW107XG4gICAgICAgICBlZGdlcyA9IHJlZiBbXTtcbiAgICAgICAgICAgICBlZGdlc19tYXAgPSByZWYgTW9kcy5TdHJpbmcyTWFwLmVtcHR5OyopXG4gICAgfVxuICBpblxuICBsZXQgKCkgPSBwcmludF9wcmVhbWJsZSBsb2dnZXIgaW5cbiAgbG9nZ2VyXG5cbmxldCBvcGVuX3JvdyBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjx0cj5cIlxuICB8IE1hdHJpeCAtPiBmcHJpbnRmIGxvZ2dlciBcIltcIlxuICB8IEpzb24gfCBNYXRsYWIgfCBPY3RhdmUgfCBNYXRoZW1hdGljYSB8IE1hcGxlIHwgU0JNTCB8IERPVE5FVCB8IEhUTUxfR3JhcGhcbiAgfCBKc19HcmFwaCB8IFhMUyB8IEhUTUwgfCBET1QgfCBUWFQgfCBUWFRfVGFidWxhciB8IEdFUEhJIC0+XG4gICAgKClcblxubGV0IGNsb3NlX3JvdyBsb2dnZXIgPVxuICBtYXRjaCBsb2dnZXIuZW5jb2Rpbmcgd2l0aFxuICB8IEhUTUxfVGFidWxhciAtPiBmcHJpbnRmIGxvZ2dlciBcIjx0cj5ALlwiXG4gIHwgTWF0cml4IC0+IGZwcmludGYgbG9nZ2VyIFwiXVxcblwiXG4gIHwgSnNvbiB8IE1hdGxhYiB8IE9jdGF2ZSB8IE1hcGxlIHwgTWF0aGVtYXRpY2EgfCBTQk1MIHwgRE9UTkVUIHwgSFRNTF9HcmFwaFxuICB8IEpzX0dyYXBoIHwgWExTIHwgSFRNTCB8IERPVCB8IFRYVCB8IFRYVF9UYWJ1bGFyIHwgR0VQSEkgLT5cbiAgICBmcHJpbnRmIGxvZ2dlciBcIkAuXCJcblxubGV0IGZvcm1hdHRlcl9vZl9sb2dnZXIgbG9nZ2VyID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgRm9ybWF0dGVyIGZtdCAtPiBTb21lIGZtdFxuICB8IERFVk5VTCB8IENpcmN1bGFyX2J1ZmZlciBfIHwgSW5maW5pdGVfYnVmZmVyIF8gLT4gTm9uZVxuXG5sZXQgcmVkaXJlY3QgbG9nZ2VyIGZtdCA9IHsgbG9nZ2VyIHdpdGggbG9nZ2VyID0gRm9ybWF0dGVyIGZtdCB9XG5sZXQgcHJpbnRfYXNfbG9nZ2VyIGxvZ2dlciBmID0gZnByaW50ZiBsb2dnZXIgXCIldFwiIGZcblxubGV0IGZsdXNoX2J1ZmZlciBsb2dnZXIgZm10ID1cbiAgbWF0Y2ggbG9nZ2VyLmxvZ2dlciB3aXRoXG4gIHwgREVWTlVMIHwgRm9ybWF0dGVyIF8gLT4gKClcbiAgfCBDaXJjdWxhcl9idWZmZXIgYSAtPiBDaXJjdWxhcl9idWZmZXJzLml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gSW5maW5pdGVfYnVmZmVycy5pdGVyIChGb3JtYXQuZnByaW50ZiBmbXQgXCIlc1wiKSAhYlxuXG5sZXQgZmx1c2hfYW5kX2NsZWFuIGxvZ2dlciBmbXQgPVxuICBsZXQgKCkgPSBmbHVzaF9idWZmZXIgbG9nZ2VyIGZtdCBpblxuICBtYXRjaCBsb2dnZXIubG9nZ2VyIHdpdGhcbiAgfCBERVZOVUwgfCBGb3JtYXR0ZXIgXyAtPiAoKVxuICB8IENpcmN1bGFyX2J1ZmZlciBhIC0+IGEgOj0gQ2lyY3VsYXJfYnVmZmVycy5jbGVhbiAhYVxuICB8IEluZmluaXRlX2J1ZmZlciBiIC0+IGIgOj0gSW5maW5pdGVfYnVmZmVycy5jbGVhbiAhYlxuXG5sZXQgZnByaW50ZiBsb2dnZXIgPSBmcHJpbnRmIH5mcHJpbnRuZXdsaW5lOmZhbHNlIGxvZ2dlclxubGV0IGNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciA9IGxvZ2dlci5jaGFubmVsX29wdFxuXG5sZXQgcHJpbnRfYmluZGluZ190eXBlIHQgPyhiaW5kaW5nX3R5cGVfc3ltYm9sID0gXCIuXCIpIH5hZ2VudF9uYW1lIH5zaXRlX25hbWUgKClcbiAgICA9XG4gIGZwcmludGYgdCBcIiVzXCJcbiAgICAoUHVibGljX2RhdGEuc3RyaW5nX29mX2JpbmRpbmdfdHlwZSB+YmluZGluZ190eXBlX3N5bWJvbCB+YWdlbnRfbmFtZVxuICAgICAgIH5zaXRlX25hbWUgKCkpXG5cbmxldCBkdW1wX2pzb24gbG9nZ2VyIGpzb24gPVxuICBsZXQgY2hhbm5lbF9vcHQgPSBjaGFubmVsX29mX2xvZ2dlciBsb2dnZXIgaW5cbiAgbGV0ICgpID1cbiAgICBtYXRjaCBjaGFubmVsX29wdCB3aXRoXG4gICAgfCBOb25lIC0+ICgpXG4gICAgfCBTb21lIGNoYW5uZWwgLT5cbiAgICAgIGxldCAoKSA9IFlvanNvbi5CYXNpYy50b19jaGFubmVsIGNoYW5uZWwganNvbiBpblxuICAgICAgKClcbiAgaW5cbiAgKClcblxubGV0IGxpbmVfdG9fanNvbiBsaW5lID0gYEFzc29jIFsgXCJsaW5lXCIsIEpzb25VdGlsLm9mX3N0cmluZyBsaW5lIF1cblxubGV0IGxpbmVfb2ZfanNvbiBqc29uID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIFsgKFwibGluZVwiLCBgU3RyaW5nIHMpIF0gLT4gc1xuICB8IF8gLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImxpbmVcIiwganNvbikpXG5cbmxldCBnZW5faXRlciBpdGVyIGxpc3QgPVxuICBsZXQgb3V0cHV0ID0gcmVmIFtdIGluXG4gIGxldCAoKSA9IGl0ZXIgKGZ1biBsaW5lIC0+IG91dHB1dCA6PSBsaW5lIDo6ICFvdXRwdXQpIGxpc3QgaW5cbiAgSnNvblV0aWwub2ZfbGlzdCBsaW5lX3RvX2pzb24gKExpc3QucmV2ICFvdXRwdXQpXG5cbmxldCBvZl9qc29uID0gSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwibGluZSBsaXN0XCIgbGluZV9vZl9qc29uXG5cbmxldCB0b19qc29uIGxvZ2dlciA9XG4gIG1hdGNoIGxvZ2dlci5sb2dnZXIgd2l0aFxuICB8IERFVk5VTCB8IEZvcm1hdHRlciBfIC0+IGBMaXN0IFtdXG4gIHwgQ2lyY3VsYXJfYnVmZmVyIGEgLT4gZ2VuX2l0ZXIgQ2lyY3VsYXJfYnVmZmVycy5pdGVyICFhXG4gIHwgSW5maW5pdGVfYnVmZmVyIGIgLT4gZ2VuX2l0ZXIgSW5maW5pdGVfYnVmZmVycy5pdGVyICFiXG4iLCJsZXQgc3RyaW5nX29mX3VuX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5VTUlOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW51cy8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiLVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5MT0cgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxsb2cvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImxvZ1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TUVJUIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cm9vdC8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwic3FydFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5FWFAgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxleHAvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImV4cFwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TSU5VUyAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHNpbi8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwic2luXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4XG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLkNPU0lOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxjb3MvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcImNvc1wiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5UQU4gLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjx0YW4vPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcInRhblwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5JTlQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxmbG9vci8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWFwbGVcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgLT5cbiAgICAgIFwiZmxvb3JcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJIHwgTG9nZ2Vycy5NYXRyaXhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG5cbmxldCBzdHJpbmdfb2ZfY29tcGFyZV9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuRVFVQUwgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxlcS8+XCJcbiAgICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgLT4gXCI9PVwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+IFwiPVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5ESUZGIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bmVxLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCIhPVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeFxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5TTUFMTEVSIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bHQvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIC0+XG4gICAgICBcIjxcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuR1JFQVRFUiAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPGd0Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCI+XCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX2Jpbl9vcCBsb2dnZXIgb3AgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IGxvZ2dlciBpblxuICBtYXRjaCBvcCB3aXRoXG4gIHwgT3BlcmF0b3IuTU9EVUxPIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cmVtLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtb2RcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUFYIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bWF4Lz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtYXhcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUlOIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8bWluLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5NYXBsZVxuICAgIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSAtPlxuICAgICAgXCJtaW5cIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuRElWIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8ZGl2aWRlLz5cIlxuICAgIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiAtPlxuICAgICAgXCIvXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkdFUEhJXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIHwgTG9nZ2Vycy5IVE1MXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuICB8IE9wZXJhdG9yLlNVTSAtPlxuICAgIChtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5TQk1MIC0+IFwiPHBsdXMvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIitcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuTUlOVVMgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxtaW51cy8+XCJcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwiLVwiXG4gICAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcbiAgfCBPcGVyYXRvci5NVUxUIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8dGltZXMvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIipcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUxcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuUE9XIC0+XG4gICAgKG1hdGNoIGZvcm1hdCB3aXRoXG4gICAgfCBMb2dnZXJzLlNCTUwgLT4gXCI8cG93ZXIvPlwiXG4gICAgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIioqXCJcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5ET1QgfCBMb2dnZXJzLkhUTUxfR3JhcGhcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhciB8IExvZ2dlcnMuWExTIC0+XG4gICAgICBcIlwiKVxuXG5sZXQgc3RyaW5nX29mX2Jpbl9ib29sX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5BTkQgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxhbmQvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIiZcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4gIHwgT3BlcmF0b3IuT1IgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxvci8+XCJcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5NYXRsYWIgLT5cbiAgICAgIFwifFwiXG4gICAgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTFxuICAgIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgXCJcIilcblxubGV0IHN0cmluZ19vZl91bl9ib29sX29wIGxvZ2dlciBvcCA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgbG9nZ2VyIGluXG4gIG1hdGNoIG9wIHdpdGhcbiAgfCBPcGVyYXRvci5OT1QgLT5cbiAgICAobWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuU0JNTCAtPiBcIjxub3QvPlwiXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuTWF0bGFiIC0+XG4gICAgICBcIiFcIlxuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaFxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5HRVBISVxuICAgIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAgIFwiXCIpXG4iLCIoKipcbiAgKiBncmFwaF9sb2dnZXJzX3NpZy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgZGlyZWN0aW9uID0gRGlyZWN0IHwgUmV2ZXJzZSB8IFVuZGlyZWN0ZWQgfCBCb3RoXG50eXBlIHNoYXBlID0gSW52aXNpYmxlIHwgSG91c2UgfCBSZWN0IHwgRWxsaXBzZSB8IENpcmNsZSB8IEludmhvdXNlXG50eXBlIGhlYWRraW5kID0gTm9ybWFsIHwgVmVlIHwgVGVlIHwgTm9faGVhZFxudHlwZSBsaW5lc3R5bGUgPSBQbGFpbiB8IERvdHRlZCB8IERhc2hlZFxuXG50eXBlIGNvbG9yID1cbiAgfCBSZWRcbiAgfCBHcmVlblxuICB8IFdoaXRlXG4gIHwgQmx1ZVxuICB8IEJsYWNrXG4gIHwgTGlnaHRTa3lCbHVlXG4gIHwgUGFsZUdyZWVuXG4gIHwgQnJvd25cbiAgfCBZZWxsb3dcbiAgfCBHcmV5XG5cbnR5cGUgb3B0aW9ucyA9XG4gIHwgQ29sb3Igb2YgY29sb3JcbiAgfCBGaWxsQ29sb3Igb2YgY29sb3JcbiAgfCBMYWJlbCBvZiBzdHJpbmdcbiAgfCBXaWR0aCBvZiBpbnQgKCpwaXhlbCopXG4gIHwgSGVpZ2h0IG9mIGludCAoKnBpeGVsKilcbiAgfCBEaXJlY3Rpb24gb2YgZGlyZWN0aW9uXG4gIHwgU2hhcGUgb2Ygc2hhcGVcbiAgfCBBcnJvd0hlYWQgb2YgaGVhZGtpbmRcbiAgfCBBcnJvd1RhaWwgb2YgaGVhZGtpbmRcbiAgfCBMaW5lU3R5bGUgb2YgbGluZXN0eWxlXG4gIHwgT25DbGljayBvZiBZb2pzb24uQmFzaWMudFxuICB8IENvbnRleHR1YWxfaGVscCBvZiBzdHJpbmdcbiAgfCBQb3NpdGlvbiBvZiBMb2MudCBsaXN0XG5cbnR5cGUgZ3JhcGggPVxuICAoc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0ICogKHN0cmluZyAqIHN0cmluZyAqIG9wdGlvbnMgbGlzdCkgbGlzdFxuXG50eXBlIHQgPSB7XG4gIGxvZ2dlcjogTG9nZ2Vycy50O1xuICBpZF9tYXA6IGludCBNb2RzLlN0cmluZ01hcC50IHJlZjtcbiAgZnJlc2hfaWQ6IGludCByZWY7XG4gIG5vZGVzOiAoc3RyaW5nICogb3B0aW9ucyBsaXN0KSBsaXN0IHJlZjtcbiAgZWRnZXM6IChzdHJpbmcgKiBzdHJpbmcgKiBvcHRpb25zIGxpc3QpIGxpc3QgcmVmO1xuICBlZGdlc19tYXA6IG9wdGlvbnMgbGlzdCBsaXN0IE1vZHMuU3RyaW5nMk1hcC50IHJlZjtcbn1cblxubGV0IGxpZnQgdCA9IHQubG9nZ2VyXG5cbmxldCBleHRlbmRfbG9nZ2VyIGxvZ2dlciA9XG4gIHtcbiAgICBsb2dnZXI7XG4gICAgaWRfbWFwID0gcmVmIE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGZyZXNoX2lkID0gcmVmIDE7XG4gICAgbm9kZXMgPSByZWYgW107XG4gICAgZWRnZXMgPSByZWYgW107XG4gICAgZWRnZXNfbWFwID0gcmVmIE1vZHMuU3RyaW5nMk1hcC5lbXB0eTtcbiAgfVxuXG5sZXQgcmVmcmVzaF9pZCB0ID1cbiAgbGV0ICgpID0gdC5pZF9tYXAgOj0gTW9kcy5TdHJpbmdNYXAuZW1wdHkgaW5cbiAgbGV0ICgpID0gdC5ub2RlcyA6PSBbXSBpblxuICBsZXQgKCkgPSB0LmVkZ2VzIDo9IFtdIGluXG4gIGxldCAoKSA9IHQuZnJlc2hfaWQgOj0gMSBpblxuICAoKVxuXG5sZXQgYWRkX25vZGUgdCBzIGQgPSB0Lm5vZGVzIDo9IChzLCBkKSA6OiAhKHQubm9kZXMpXG5cbmxldCBhZGRfZWRnZSB0IHMxIHMyIGQgPVxuICBsZXQgKCkgPSB0LmVkZ2VzIDo9IChzMSwgczIsIGQpIDo6ICEodC5lZGdlcykgaW5cbiAgbGV0IG1hcCA9ICEodC5lZGdlc19tYXApIGluXG4gIGxldCBvbGRfbGlzdCA9XG4gICAgbWF0Y2ggTW9kcy5TdHJpbmcyTWFwLmZpbmRfb3B0aW9uIChzMSwgczIpIG1hcCB3aXRoXG4gICAgfCBTb21lIGwgLT4gbFxuICAgIHwgTm9uZSAtPiBbXVxuICBpblxuICBsZXQgKCkgPSB0LmVkZ2VzX21hcCA6PSBNb2RzLlN0cmluZzJNYXAuYWRkIChzMSwgczIpIChkIDo6IG9sZF9saXN0KSBtYXAgaW5cbiAgKClcblxubGV0IGdyYXBoX29mX2xvZ2dlciBsb2dnZXIgPSBMaXN0LnJldiAhKGxvZ2dlci5ub2RlcyksIExpc3QucmV2ICEobG9nZ2VyLmVkZ2VzKVxubGV0IGdldF9lZGdlX21hcCB0ID0gISh0LmVkZ2VzX21hcClcbmxldCBnZXRfbm9kZXMgdCA9ICEodC5ub2RlcylcbmxldCBmcmVzaF9pZCBsb2dnZXIgPSBUb29scy5nZXRfcmVmIGxvZ2dlci5mcmVzaF9pZFxuXG5sZXQgaW50X29mX3N0cmluZ19pZCBsb2dnZXIgc3RyaW5nID1cbiAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gc3RyaW5nICEobG9nZ2VyLmlkX21hcCkgd2l0aFxuICB8IFNvbWUgYSAtPiBhXG4gIHwgTm9uZSAtPlxuICAgIGxldCBpID0gZnJlc2hfaWQgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gbG9nZ2VyLmlkX21hcCA6PSBNb2RzLlN0cmluZ01hcC5hZGQgc3RyaW5nIGkgIShsb2dnZXIuaWRfbWFwKSBpblxuICAgIGlcbiIsIigqKlxuICAqIGdyYXBoX2xvZ2dlcnMubWxcbiAgKlxuICAqIGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQW50aXF1ZSwgSU5SSUEgUGFyaXNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjMvMDUvMjAxNlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyNS8wNS8yMDE2XG4gICogKlxuICAqXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxNiAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZG90X2NvbG9yX2VuY29kaW5nIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gXCJ5ZWxsb3dcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gXCJncmV5XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgLT4gXCJyZWRcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IFwiZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IFwid2hpdGVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gXCJibHVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbGFjayAtPiBcImJsYWNrXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gXCIjODdjZWViXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gXCIjOThmYjk4XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBcImJyb3duXCJcblxubGV0IHN2Z19jb2xvcl9lbmNvZGluZyB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93IC0+IFwiI2ZmM1wiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JleSAtPiBcIiNhYWFcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBcIiNmMDBcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuIC0+IFwiIzBmMFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2hpdGUgLT4gXCIjZmZmXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlIC0+IFwiIzAwZlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gXCIjMDAwXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gXCIjOGNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QYWxlR3JlZW4gLT4gXCIjOWY5XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBcIiNmYzlcIlxuXG50eXBlIG5vZGVfYXR0cmlidXRlID0ge1xuICBub2RlX2NvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIG5vZGVfZmlsbGNvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIG5vZGVfbGFiZWw6IHN0cmluZyBvcHRpb247XG4gIG5vZGVfd2lkdGg6IGludCBvcHRpb247XG4gIG5vZGVfaGVpZ2h0OiBpbnQgb3B0aW9uO1xuICBub2RlX3NoYXBlOiBHcmFwaF9sb2dnZXJzX3NpZy5zaGFwZSBvcHRpb247XG4gIG5vZGVfcG9zaXRpb25zOiBMb2MudCBsaXN0O1xuICBub2RlX2NvbnRleHR1YWxfaGVscDogc3RyaW5nIG9wdGlvbjtcbiAgbm9kZV9vbl9jbGljazogWW9qc29uLkJhc2ljLnQgb3B0aW9uO1xufVxuXG50eXBlIGVkZ2VfYXR0cmlidXRlID0ge1xuICBlZGdlX2NvbG9yOiBHcmFwaF9sb2dnZXJzX3NpZy5jb2xvciBvcHRpb247XG4gIGVkZ2VfbGFiZWw6IHN0cmluZyBsaXN0IG9wdGlvbjtcbiAgZWRnZV9zdHlsZTogR3JhcGhfbG9nZ2Vyc19zaWcubGluZXN0eWxlO1xuICBlZGdlX2RpcmVjdGlvbjogR3JhcGhfbG9nZ2Vyc19zaWcuZGlyZWN0aW9uO1xuICBlZGdlX2Fycm93aGVhZDogR3JhcGhfbG9nZ2Vyc19zaWcuaGVhZGtpbmQ7XG4gIGVkZ2VfYXJyb3d0YWlsOiBHcmFwaF9sb2dnZXJzX3NpZy5oZWFka2luZDtcbiAgZWRnZV9wb3NpdGlvbnM6IExvYy50IGxpc3Q7XG4gIGVkZ2VfY29udGV4dHVhbF9oZWxwOiBzdHJpbmcgb3B0aW9uO1xuICBlZGdlX29uX2NsaWNrOiBZb2pzb24uQmFzaWMudCBvcHRpb247XG59XG5cbmxldCBkdW1teV9ub2RlID1cbiAge1xuICAgIG5vZGVfY29sb3IgPSBOb25lO1xuICAgIG5vZGVfZmlsbGNvbG9yID0gTm9uZTtcbiAgICBub2RlX2xhYmVsID0gTm9uZTtcbiAgICBub2RlX3dpZHRoID0gTm9uZTtcbiAgICBub2RlX2hlaWdodCA9IE5vbmU7XG4gICAgbm9kZV9zaGFwZSA9IE5vbmU7XG4gICAgbm9kZV9wb3NpdGlvbnMgPSBbXTtcbiAgICBub2RlX29uX2NsaWNrID0gTm9uZTtcbiAgICBub2RlX2NvbnRleHR1YWxfaGVscCA9IE5vbmU7XG4gIH1cblxubGV0IGR1bW15X2VkZ2UgPVxuICB7XG4gICAgZWRnZV9jb2xvciA9IE5vbmU7XG4gICAgZWRnZV9sYWJlbCA9IE5vbmU7XG4gICAgZWRnZV9zdHlsZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluO1xuICAgIGVkZ2VfZGlyZWN0aW9uID0gR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0O1xuICAgIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgIGVkZ2VfcG9zaXRpb25zID0gW107XG4gICAgZWRnZV9vbl9jbGljayA9IE5vbmU7XG4gICAgZWRnZV9jb250ZXh0dWFsX2hlbHAgPSBOb25lO1xuICB9XG5cbmxldCBpc19ub19ub2RlX2F0dHJpYnV0ZXMgbm9kZV9hdHRyaWJ1dGUgPSBub2RlX2F0dHJpYnV0ZSA9IGR1bW15X25vZGVcblxubGV0IGlzX25vX2VkZ2VfYXR0cmlidXRlcyBlZGdlX2F0dHJpYnV0ZSA9XG4gIGR1bW15X2VkZ2VcbiAgPSB7XG4gICAgICBlZGdlX2F0dHJpYnV0ZSB3aXRoXG4gICAgICBlZGdlX2RpcmVjdGlvbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdDtcbiAgICAgIGVkZ2VfYXJyb3doZWFkID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsO1xuICAgICAgZWRnZV9hcnJvd3RhaWwgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWw7XG4gICAgfVxuXG5sZXQgYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiIFwiXG4gIGVsc2VcbiAgICAoKVxuXG5sZXQgYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgPVxuICBpZiBib29sIHRoZW5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiwgXCJcbiAgZWxzZVxuICAgICgpXG5cbmxldCBodG1sX2RlcHMgPVxuICBbXG4gICAgXCJodHRwOi8vZDNqcy5vcmcvZDMudjMubWluLmpzXCI7XG4gICAgXCJodHRwOi8vY3BldHRpdHQuZ2l0aHViLmlvL3Byb2plY3QvZGFncmUtZDMvbGF0ZXN0L2RhZ3JlLWQzLm1pbi5qc1wiO1xuICBdXG5cbmxldCBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCA9XG4gIGxldCBiMSA9XG4gICAgbWF0Y2ggZmlsdGVyX2luIHdpdGhcbiAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgIHwgU29tZSBsIC0+IExpc3QubWVtIGZvcm1hdCBsXG4gIGluXG4gIGIxICYmIG5vdCAoTGlzdC5tZW0gZm9ybWF0IGZpbHRlcl9vdXQpXG5cbmxldCBwcmludF9wcmVhbWJsZV9zaGFyZWRfaHRtbF9qcyBmIHRpdGxlID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxkaXYgY2xhc3M9XFxcImNvbnRhaW5lclxcXCI+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPGgxPkBbJXNAXTwvaDE+QCxcIiB0aXRsZSBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN2ZyB3aWR0aD05NjAgaGVpZ2h0PTYwMD48Zy8+PC9zdmc+QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHNjcmlwdD5ALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDcmVhdGUgYSBuZXcgZGlyZWN0ZWQgZ3JhcGhALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBnID0gbmV3IGRhZ3JlRDMuZ3JhcGhsaWIuR3JhcGgoKS5zZXRHcmFwaCh7fSk7QCxcIlxuICBpblxuXG4gICgpXG5cbmxldCBwcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgPyhmaWx0ZXJfaW4gPSBOb25lKSA/KGZpbHRlcl9vdXQgPSBbXSlcbiAgICA/KGhlYWRlciA9IFtdKSB0aXRsZSA9XG4gIGxldCBmb3JtYXQgPSBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICBpZiBzaGFsbF9JX2RvX2l0IGZvcm1hdCBmaWx0ZXJfaW4gZmlsdGVyX291dCB0aGVuIChcbiAgICBtYXRjaCBmb3JtYXQgd2l0aFxuICAgIHwgTG9nZ2Vycy5ET1QgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4geCAtPlxuICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIjJXNcIiB4IGluXG4gICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgKCkpXG4gICAgICAgICAgaGVhZGVyXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJkaWdyYXBoIEd7XCIgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAoKVxuICAgIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgICAgKCogSU4gUFJPR0VTUyAqKVxuICAgICAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgIChtYXRjaCBmX29wdCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBmIC0+IHByaW50X3ByZWFtYmxlX3NoYXJlZF9odG1sX2pzIGYgdGl0bGUpXG4gICAgfCBMb2dnZXJzLkhUTUxfR3JhcGggLT5cbiAgICAgIGxldCBmX29wdCA9IExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAobWF0Y2ggZl9vcHQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZiAtPlxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIjwhLS1ALFwiIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoZnVuIHggLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgICAgICAgKCkpXG4gICAgICAgICAgICBoZWFkZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCItLT5ALFwiIGluXG4gICAgICAgIGxldCBkZXBlbmRlbmN5IGYgdCA9XG4gICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIjxzY3JpcHQgc3JjPVxcXCIlc1xcXCIgY2hhcnNldD1cXFwidXRmLThcXFwiPjwvc2NyaXB0PlwiIHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+PCFkb2N0eXBlIGh0bWw+QCxALDxodG1sPkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48aGVhZD5ALDxtZXRhIGNoYXJzZXQ9XFxcInV0Zi04XFxcIj5ALFwiIGluXG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCI8dGl0bGU+JXM8L3RpdGxlPkAsXCIgdGl0bGUgaW5cbiAgICAgICAgbGV0ICgpID0gUHAubGlzdCB+dHJhaWxpbmc6UHAuc3BhY2UgUHAuc3BhY2UgZGVwZW5kZW5jeSBmIGh0bWxfZGVwcyBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIldEBdQCw8L2hlYWQ+QCxcIiAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCxcIiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkdCB7ZmxvYXQ6IGxlZnQ7IGNsZWFyOiBsZWZ0OyB3aWR0aDogMjBlbTt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJkZCB7Zm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbjogMCAwIDAgMjFlbTt9QCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIubm9kZSByZWN0IHtzdHJva2U6ICMzMzM7IGZpbGw6ICNmZmY7fUAsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgICAgICAgICAgICBcIi5lZGdlUGF0aCBwYXRoIHtzdHJva2U6ICMzMzM7IGZpbGw6ICMzMzM7IHN0cm9rZS13aWR0aDogXFxcbiAgICAgICAgICAgICAgICAgICAxLjVweDt9XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBdQCw8L3N0eWxlPlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8diAyPjxib2R5PkAsXCIgaW5cbiAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlYW1ibGVfc2hhcmVkX2h0bWxfanMgZiB0aXRsZSBpblxuICAgICAgICAoKSlcbiAgICB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0aGVtYXRpY2FcbiAgICB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5PY3RhdmVcbiAgICB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRcbiAgICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgKClcbiAgKVxuXG5sZXQgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgdGl0bGUgc3R5bGUgPVxuICBtYXRjaCBzdHlsZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGJvb2xcbiAgKCp8IFRlZSAtPlxuICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCIlczogXFxcInRlZVxcXCJcIiB0aXRsZVxuICAgICAgICBpblxuICAgICAgICB0cnVlKilcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT5cbiAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgYm9vbCBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzOiBcXFwidmVlXFxcIlwiIHRpdGxlXG4gICAgaW5cbiAgICB0cnVlXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPlxuICAgICgqIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9odG1sIGxvZ2dlciBib29sIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiJXM6IFxcXCJub25lXFxcIlwiIHRpdGxlXG4gICAgICAgaW5cbiAgICAgICB0cnVlKilcbiAgICBib29sXG5cbmxldCBtZXJnZSBzIHMnID1cbiAgaWYgcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgdGhlblxuICAgIHMnXG4gIGVsc2VcbiAgICBzXG5cbmxldCBtYXRyaXhfc3RyaW5nX29mX29wdGlvbnMgbCA9XG4gIGxldCBpID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gaSBsIC0+XG4gICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHggLT5cbiAgICAgICAgICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ccm93biAtPiBpICogN1xuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gaVxuICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW4gLT4gaSAqIDNcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBpICogLTFcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJsdWUgLT4gaSAqIDVcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IGlcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAtPiBpICogMTFcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAtPiBpICogMTNcbiAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gaSAqIDE3XG4gICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3cgLT4gaSAqIDE5KVxuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gX1xuICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgXyAtPlxuICAgICAgICAgICAgIGkpKVxuICAgICAgMSBsXG4gIGluXG4gIHN0cmluZ19vZl9pbnQgaVxuXG5sZXQgcHJpbnRfZm9vdF9zaGFyZWRfaHRtbF9qcyBsb2dnZXIgPVxuICBsZXQgKCkgPVxuICAgIE1vZHMuU3RyaW5nMk1hcC5pdGVyXG4gICAgICAoZnVuIChpZDEsIGlkMikgbGlzdCAtPlxuICAgICAgICBsZXQgbGlzdCA9IExpc3QucmV2IGxpc3QgaW5cbiAgICAgICAgbGV0IGlkMV9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZDEgaW5cbiAgICAgICAgbGV0IGlkMl9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZDIgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9lZGdlIGluXG4gICAgICAgIGxldCBhdHRyaWJ1dGVzID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbl9saXN0IC0+XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgcyAtPlxuICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfbGFiZWwgPSBTb21lIFsgcyBdIH1cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+XG4gICAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9sYWJlbCA9IFNvbWUgKHMgOjogXCIsXCIgOjogcycpIH0pXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb2xvciB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2NvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIHMnIHdoZW4gcyA9IHMnIC0+IGF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfY29sb3IgPSBTb21lIEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duO1xuICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfc3R5bGUgPSBzIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIHMgLT5cbiAgICAgICAgICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9kaXJlY3Rpb24gPSBzIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIHMgLT5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgIGVkZ2VfYXJyb3d0YWlsID0gbWVyZ2UgcyBhdHRyaWJ1dGVzLmVkZ2VfYXJyb3d0YWlsO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX2Fycm93aGVhZCA9IG1lcmdlIHMgYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLmVkZ2VfcG9zaXRpb25zO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICBlZGdlX2NvbnRleHR1YWxfaGVscCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbnRleHR1YWxfaGVscCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgcycgLT4gU29tZSAocycgXiBzKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2Vfb25fY2xpY2sgPSBTb21lIGpzb24gfVxuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBfIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggX1xuICAgICAgICAgICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfXG4gICAgICAgICAgICAgICAgICAgIC0+XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMpXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlcyBvcHRpb25fbGlzdClcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMgbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgXCJnLnNldEVkZ2UoJWksJWkseyBcIiBpZDFfaW50IGlkMl9pbnRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGF0dHJpYnV0ZXMgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9kaXJlY3Rpb24gd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVW5kaXJlY3RlZCAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgZWRnZV9hcnJvd2hlYWQgPSBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkO1xuICAgICAgICAgICAgICBlZGdlX2Fycm93dGFpbCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3QgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfYXJyb3d0YWlsID0gR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93aGVhZCA9IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQm90aCAtPiBhdHRyaWJ1dGVzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID0gZmFsc2UgaW5cbiAgICAgICAgbGV0IGJvb2wsIHNfb3B0ID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfbGFiZWwgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sLCBOb25lXG4gICAgICAgICAgfCBTb21lIHN0cmluZ19saXN0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImxhYmVsOiBcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcyA9XG4gICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCJcbiAgICAgICAgICAgICAgICAoZnVuIGZtdCAtPiBMaXN0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIGZtdCBcIiVzXCIpKVxuICAgICAgICAgICAgICAgIChMaXN0LnJldiBzdHJpbmdfbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc19vcHQsIHMnID1cbiAgICAgICAgICAgICAgaWYgU3RyaW5nLmxlbmd0aCBzID4gMTAwIHRoZW5cbiAgICAgICAgICAgICAgICBTb21lIHMsIFN0cmluZy5zdWIgcyAwIDEwMCBeIFwiLi4uXCJcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIE5vbmUsIHNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzXFxcIlwiIHMnXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZSwgc19vcHRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCBjb2xvciA9IHN2Z19jb2xvcl9lbmNvZGluZyBzIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJzdHlsZTogXFxcInN0cm9rZTogJXM7IGZpbGw6IHdoaXRlXFxcIiwgYXJyb3doZWFkU3R5bGU6IFxcXCJmaWxsOiBcXFxuICAgICAgICAgICAgICAgICAlczsgc3Ryb2tlOiAlc1xcXCJcIlxuICAgICAgICAgICAgICAgIGNvbG9yIGNvbG9yIGNvbG9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgXCJhcnJvd2hlYWRcIlxuICAgICAgICAgICAgYXR0cmlidXRlcy5lZGdlX2Fycm93aGVhZFxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgc3RyaW5nX29mX2Fycm93X2luX2h0bWwgbG9nZ2VyIGJvb2wgXCJhcnJvd3RhaWxcIlxuICAgICAgICAgICAgYXR0cmlidXRlcy5lZGdlX2Fycm93dGFpbFxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiB9KTtALFwiIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggc19vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIjwhLS0lcy0tPlxcblwiIHNcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcuZ2V0X2VkZ2VfbWFwIGxvZ2dlcilcbiAgaW5cbiAgbGV0IGZfb3B0ID0gTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgbWF0Y2ggZl9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGYgLT5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcInZhciBzdmcgPSBkMy5zZWxlY3QoXFxcInN2Z1xcXCIpLGlubmVyID0gc3ZnLnNlbGVjdChcXFwiZ1xcXCIpO0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBTZXQgdXAgem9vbSBzdXBwb3J0QCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwidmFyIHpvb20gPSBkMy5iZWhhdmlvci56b29tKCkub24oXFxcInpvb21cXFwiLCBmdW5jdGlvbigpIHtALFwiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcImlubmVyLmF0dHIoXFxcInRyYW5zZm9ybVxcXCIsIFxcXCJ0cmFuc2xhdGUoXFxcIiArIGQzLmV2ZW50LnRyYW5zbGF0ZSArIFxcXCIpXFxcIiBcXFxuICAgICAgICAgK0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiXFxcInNjYWxlKFxcXCIgKyBkMy5ldmVudC5zY2FsZSArIFxcXCIpXFxcIik7QCx9KTtALHN2Zy5jYWxsKHpvb20pO1wiXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICBcIi8vIENyZWF0ZSB0aGUgcmVuZGVyZXJALCB2YXIgcmVuZGVyID0gbmV3IGRhZ3JlRDMucmVuZGVyKCk7QCxcIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCIvLyBSdW4gdGhlIHJlbmRlcmVyLiBUaGlzIGlzIHdoYXQgZHJhd3MgdGhlIGZpbmFsIGdyYXBoLkAsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJyZW5kZXIoaW5uZXIsIGcpO0AsXCIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIi8vIENlbnRlciB0aGUgZ3JhcGhALHZhciBpbml0aWFsU2NhbGUgPSAwLjc1O0AsXCJcbiAgICBpblxuICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJ6b29tQCxcIiBpblxuICAgIGxldCAoKSA9XG4gICAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICAgIFwiLnRyYW5zbGF0ZShbKHN2Zy5hdHRyKFxcXCJ3aWR0aFxcXCIpIC0gZy5ncmFwaCgpLndpZHRoICogaW5pdGlhbFNjYWxlKSAvIFxcXG4gICAgICAgICAyLCAyMF0pQCxcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5zY2FsZShpbml0aWFsU2NhbGUpQCwuZXZlbnQoc3ZnKTtALFwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgICAgXCJzdmcuYXR0cignaGVpZ2h0JywgZy5ncmFwaCgpLmhlaWdodCAqIGluaXRpYWxTY2FsZSArIDQwKTtcIlxuICAgIGluXG4gICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkAsPC9zY3JpcHQ+XCIgaW5cbiAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQCw8L2Rpdj5cIiBpblxuICAgICgpXG5cbmxldCBwcmludF9ncmFwaF9mb290IGxvZ2dlciA9XG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwifVwiIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgfCBMb2dnZXJzLk1hdHJpeCAtPlxuICAgIGxldCBub2RlcyA9IEdyYXBoX2xvZ2dlcnNfc2lnLmdldF9ub2RlcyBsb2dnZXIgaW5cbiAgICBsZXQgZWRnZXMgPSBHcmFwaF9sb2dnZXJzX3NpZy5nZXRfZWRnZV9tYXAgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwicnVsZXNcXFwiIDpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgbGV0IF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzZXAgKHMsIF8pIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcXFwiJXNcXFwiXCIgc2VwIHNcbiAgICAgICAgICBpblxuICAgICAgICAgIFwiLCBcIilcbiAgICAgICAgXCJcIiBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJoaXRzXFxcIiA6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMub3Blbl9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc2VwIF8gLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiVzMVwiIHNlcCBpblxuICAgICAgICAgIFwiLCBcIilcbiAgICAgICAgXCJcIiBub2Rlc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5jbG9zZV9yb3cgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiLFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcXCJmbHV4c1xcXCIgOlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLm9wZW5fcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGIgKHMxLCBfKSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBpZiBiIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIixcIiBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5vcGVuX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biBzZXAgKHMyLCBfKSAtPlxuICAgICAgICAgICAgICAgIGxldCBjb2xvcl92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBNb2RzLlN0cmluZzJNYXAuZmluZF9vcHRpb24gKHMxLCBzMikgZWRnZXMgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiMFwiXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgb3B0aW9ucyAtPiBtYXRyaXhfc3RyaW5nX29mX29wdGlvbnMgb3B0aW9uc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiJXMlc1wiIHNlcCBjb2xvcl92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgXCIsIFwiKVxuICAgICAgICAgICAgICBcIlwiIG5vZGVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX3JvdyAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICAgdHJ1ZSlcbiAgICAgICAgZmFsc2Ugbm9kZXNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuY2xvc2Vfcm93IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPiBwcmludF9mb290X3NoYXJlZF9odG1sX2pzIGxvZ2dlclxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgIGxldCBmX29wdCA9IExvZ2dlcnMuZm9ybWF0dGVyX29mX2xvZ2dlciAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgKG1hdGNoIGZfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgZiAtPlxuICAgICAgbGV0ICgpID0gcHJpbnRfZm9vdF9zaGFyZWRfaHRtbF9qcyBsb2dnZXIgaW5cbiAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJALDwvYm9keT5AXUAsPC9odG1sPkBdQC5cIiBpblxuICAgICAgKCkpXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5TQk1MXG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlhMUyAtPlxuICAgICgpXG5cbmxldCBwcmludF9jb21tZW50IGxvZ2dlciA/KGZpbHRlcl9pbiA9IE5vbmUpID8oZmlsdGVyX291dCA9IFtdKSBzdHJpbmcgPVxuICBsZXQgZm9ybWF0ID0gTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgaWYgc2hhbGxfSV9kb19pdCBmb3JtYXQgZmlsdGVyX2luIGZpbHRlcl9vdXQgdGhlbiAoXG4gICAgbWF0Y2ggZm9ybWF0IHdpdGhcbiAgICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiMlc1wiIHN0cmluZ1xuICAgIHwgTG9nZ2Vycy5IVE1MX0dyYXBoIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiIHN0cmluZ1xuICAgIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hcGxlXG4gICAgfCBMb2dnZXJzLk1hdGxhYiB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlXG4gICAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICAgIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgICAoKVxuICApXG5cbmxldCBvcGVuX2Fzc28gbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcdDxwPjxkbD5cXG5cIlxuICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hcGxlXG4gIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5NYXRyaXhcbiAgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRcbiAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgfCBMb2dnZXJzLkdFUEhJIC0+XG4gICAgKClcblxubGV0IGNsb3NlX2Fzc28gbG9nZ2VyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggLT5cbiAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIlxcdFxcdDwvZGw+PC9wPlxcblwiXG4gIHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLk1hdGhlbWF0aWNhIHwgTG9nZ2Vycy5NYXBsZVxuICB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLk1hdHJpeFxuICB8IExvZ2dlcnMuSFRNTCB8IExvZ2dlcnMuRE9UIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVFxuICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfYXNzbyBsb2dnZXIgc3RyaW5nMSBzdHJpbmcyID1cbiAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICB8IExvZ2dlcnMuRE9UIC0+XG4gICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIvKiVzICVzKi9cIiBzdHJpbmcxIHN0cmluZzJcbiAgfCBMb2dnZXJzLkhUTUxfR3JhcGggfCBMb2dnZXJzLkpzX0dyYXBoIC0+XG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICBcIlxcdFxcdFxcdDxkdD4lczwvZHQ+PGRkPiVzPC9kZD5cIiBzdHJpbmcxIHN0cmluZzJcbiAgfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5TQk1MXG4gIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLk1hdGhlbWF0aWNhXG4gIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXIgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuVFhUX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuR0VQSEkgLT5cbiAgICAoKVxuXG5sZXQgc2hhcGVfaW5fZG90IHNoYXBlID1cbiAgbWF0Y2ggc2hhcGUgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSAtPiBcInN0eWxlPWludmlzXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZSAtPiBcInNoYXBlPWludmhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZSAtPiBcInNoYXBlPWhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0IC0+IFwic2hhcGU9Ym94XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlIC0+IFwic2hhcGU9ZWxsaXBzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlIC0+IFwic2hhcGU9Y2lyY2xlXCJcblxubGV0IHNoYXBlX2luX2h0bWwgc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IFNvbWUgXCJzdHlsZTogXFxcInZpc2liaWxpdHk6aGlkZGVuXFxcIlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2UgLT4gU29tZSBcInNoYXBlOiBcXFwiaW52aG91c2VcXFwiXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ib3VzZSAtPiBTb21lIFwic2hhcGU6IFxcXCJob3VzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3QgLT4gU29tZSBcInNoYXBlOiBcXFwicmVjdFxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2UgLT4gU29tZSBcInNoYXBlOiBcXFwiZWxsaXBzZVxcXCJcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZSAtPiBTb21lIFwic2hhcGU6IFxcXCJlbGxpcHNlXFxcIlwiXG5cbmxldCBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgXyA9IFwiLVwiXG5sZXQgc3RyaW5nX3R3b19vZl9saW5lc3R5bGVfaW5fZG90IF8gPSBcIi0tXCJcblxubGV0IHN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCBzdHlsZSA9XG4gIG1hdGNoIHN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gXCI+XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCJ8PlwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+IFwifFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBcIlwiXG5cbmxldCBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3Qgc3R5bGUgPVxuICBtYXRjaCBzdHlsZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IFwiPFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVmVlIC0+IFwiPHxcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBcInxcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWQgLT4gXCJcIlxuXG5sZXQgcHJpbnRfbm9kZSBsb2dnZXIgPyhkaXJlY3RpdmVzID0gW10pIGlkID1cbiAgbGV0IGF0dHJpYnV0ZXMgPSBkdW1teV9ub2RlIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBMb2dnZXJzLmdldF9lbmNvZGluZ19mb3JtYXQgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSB3aXRoXG4gICAgfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLlRYVFxuICAgIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfbGFiZWwgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgcyAtPiB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX2NvbG9yID0gU29tZSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX2ZpbGxjb2xvciA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpIC0+IHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfd2lkdGggPSBTb21lIGkgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSGVpZ2h0IGkgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIG5vZGVfaGVpZ2h0ID0gU29tZSBpIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9zaGFwZSA9IFNvbWUgcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBwIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBub2RlX3Bvc2l0aW9ucyA9IHAgQCBhdHRyaWJ1dGVzLm5vZGVfcG9zaXRpb25zIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbiAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggbm9kZV9vbl9jbGljayA9IFNvbWUganNvbiB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgcyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgbm9kZV9jb250ZXh0dWFsX2hlbHAgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+IFNvbWUgKHMnIF4gcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3Rpb24gX1xuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dUYWlsIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgXyAtPlxuICAgICAgICAgICAgYXR0cmlidXRlcylcbiAgICAgICAgYXR0cmlidXRlcyBkaXJlY3RpdmVzXG4gICAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5NYXRoZW1hdGljYVxuICAgIHwgTG9nZ2Vycy5NYXBsZSB8IExvZ2dlcnMuTWF0bGFiIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUxcbiAgICB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5IVE1MIC0+XG4gICAgICBhdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiXFxcIiVzXFxcIlwiIGlkIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGlzX25vX25vZGVfYXR0cmlidXRlcyBhdHRyaWJ1dGVzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIiBbXCIgaW5cbiAgICAgICAgbGV0IGJvb2wgPSBmYWxzZSBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzdHJpbmcgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImxhYmVsPVxcXCIlc1xcXCJcIiBzdHJpbmdcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfc2hhcGUgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBib29sXG4gICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCIlc1wiIChzaGFwZV9pbl9kb3Qgc2hhcGUpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX3dpZHRoIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIndpZHRoPVxcXCIlaXB4XFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfaGVpZ2h0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJoZWlnaHQ9XFxcIiVpcHhcXFwiXCIgaVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9jb2xvciB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiY29sb3I9XFxcIiVzXFxcIlwiIChkb3RfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBib29sID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfZmlsbGNvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJmaWxsY29sb3I9XFxcIiVzXFxcIiBzdHlsZT1maWxsZWRcIiAoZG90X2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSBpZiBib29sIHRoZW4gKCkgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJdO1wiIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICAoKVxuICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgIGxldCBpZF9pbnQgPSBHcmFwaF9sb2dnZXJzX3NpZy5pbnRfb2Zfc3RyaW5nX2lkIGxvZ2dlciBpZCBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcImcuc2V0Tm9kZSglaSwgeyBcIiBpZF9pbnRcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBpc19ub19ub2RlX2F0dHJpYnV0ZXMgYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHN0cmluZyA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gaWRcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nIC0+IHN0cmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgc3RyaW5nID0gU3RyaW5nLmVzY2FwZWQgc3RyaW5nIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJsYWJlbDogXFxcIiVzXFxcIlwiIHN0cmluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9zaGFwZSB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgICAgfCBTb21lIHNoYXBlIC0+XG4gICAgICAgICAgICAobWF0Y2ggc2hhcGVfaW5faHRtbCBzaGFwZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBzaGFwZSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIiBzaGFwZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfd2lkdGggd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJ3aWR0aDogXFxcIiVpXFxcIlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMubm9kZV9oZWlnaHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBpIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJoZWlnaHQ6IFxcXCIlaVxcXCJcIiBpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfY29sb3Igd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5faHRtbCBsb2dnZXIgdHJ1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiY29sb3I6IFxcXCIlc1xcXCJcIiAoc3ZnX2NvbG9yX2VuY29kaW5nIHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBtYXRjaCBhdHRyaWJ1dGVzLm5vZGVfZmlsbGNvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICB8IFNvbWUgcyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2h0bWwgbG9nZ2VyIHRydWUgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcInN0eWxlOiBcXFwiZmlsbDogJXNcXFwiIFwiIChzdmdfY29sb3JfZW5jb2RpbmcgcylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICBpblxuICAgICAgICAoKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgfSk7QCxcIiBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5UWFQgLT5cbiAgICAobWF0Y2ggYXR0cmlidXRlcy5ub2RlX2xhYmVsIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiTm9kZTogJXNcIiBpZCBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpXG4gICAgfCBTb21lIGxhYmVsIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgXCJOb2RlOiVzLCBMYWJlbDolc1wiIGlkIGxhYmVsXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICgpKVxuICB8IExvZ2dlcnMuR0VQSEkgfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkpzb24gLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5hZGRfbm9kZSBsb2dnZXIgaWQgZGlyZWN0aXZlc1xuICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICB8IExvZ2dlcnMuT2N0YXZlIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5IVE1MX1RhYnVsYXJcbiAgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFMgLT5cbiAgICAoKVxuXG5sZXQgcHJpbnRfZWRnZSBsb2dnZXIgPyhkaXJlY3RpdmVzID0gW10pID8ocHJlZml4ID0gXCJcIikgaWQxIGlkMiA9XG4gIGxldCBhdHRyaWJ1dGVzID0gZHVtbXlfZWRnZSBpblxuICBsZXQgYXR0cmlidXRlcyA9XG4gICAgbWF0Y2ggTG9nZ2Vycy5nZXRfZW5jb2RpbmdfZm9ybWF0IChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgd2l0aFxuICAgIHwgTG9nZ2Vycy5NYXRyaXggfCBMb2dnZXJzLkRPVCB8IExvZ2dlcnMuSFRNTF9HcmFwaCB8IExvZ2dlcnMuSnNfR3JhcGhcbiAgICB8IExvZ2dlcnMuSnNvbiB8IExvZ2dlcnMuVFhUIHwgTG9nZ2Vycy5IVE1MIHwgTG9nZ2Vycy5HRVBISSAtPlxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBhdHRyaWJ1dGVzIG9wdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIG9wdGlvbiB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2xhYmVsID0gU29tZSBbIHMgXSB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBzIC0+IHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfY29sb3IgPSBTb21lIHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHMgLT4geyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9zdHlsZSA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIHMgLT5cbiAgICAgICAgICAgIHsgYXR0cmlidXRlcyB3aXRoIGVkZ2VfZGlyZWN0aW9uID0gcyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgcyAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9hcnJvd3RhaWwgPSBzIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBzIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX2Fycm93aGVhZCA9IHMgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb24gcCAtPlxuICAgICAgICAgICAgeyBhdHRyaWJ1dGVzIHdpdGggZWRnZV9wb3NpdGlvbnMgPSBwIEAgYXR0cmlidXRlcy5lZGdlX3Bvc2l0aW9ucyB9XG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db250ZXh0dWFsX2hlbHAgcyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBhdHRyaWJ1dGVzIHdpdGhcbiAgICAgICAgICAgICAgZWRnZV9jb250ZXh0dWFsX2hlbHAgPVxuICAgICAgICAgICAgICAgIChtYXRjaCBhdHRyaWJ1dGVzLmVkZ2VfY29udGV4dHVhbF9oZWxwIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBzXG4gICAgICAgICAgICAgICAgfCBTb21lIHMnIC0+IFNvbWUgKHMnIF4gcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuT25DbGljayBqc29uIC0+XG4gICAgICAgICAgICB7IGF0dHJpYnV0ZXMgd2l0aCBlZGdlX29uX2NsaWNrID0gU29tZSBqc29uIH1cbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIF8gfCBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBfXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgXyB8IEdyYXBoX2xvZ2dlcnNfc2lnLkZpbGxDb2xvciBfIC0+XG4gICAgICAgICAgICBhdHRyaWJ1dGVzKVxuICAgICAgICBhdHRyaWJ1dGVzIGRpcmVjdGl2ZXNcbiAgICB8IExvZ2dlcnMuRE9UTkVUIHwgTG9nZ2Vycy5NYXRoZW1hdGljYSB8IExvZ2dlcnMuTWFwbGUgfCBMb2dnZXJzLk1hdGxhYlxuICAgIHwgTG9nZ2Vycy5PY3RhdmUgfCBMb2dnZXJzLlNCTUwgfCBMb2dnZXJzLlRYVF9UYWJ1bGFyIHwgTG9nZ2Vycy5YTFNcbiAgICB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIC0+XG4gICAgICBhdHRyaWJ1dGVzXG4gIGluXG4gIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgfCBMb2dnZXJzLkRPVCAtPlxuICAgIGxldCBkaXJlY3Rpb24gPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2RpcmVjdGlvbiB3aXRoXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPlxuICAgICAgICBzdHJpbmdfb25lX29mX2xpbmVzdHlsZV9pbl9kb3QgYXR0cmlidXRlcy5lZGdlX3N0eWxlXG4gICAgICAgIF4gc3RyaW5nX29mX2Fycm93X2hlYWRfaW5fZG90IEdyYXBoX2xvZ2dlcnNfc2lnLk5vcm1hbFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+XG4gICAgICAgIHN0cmluZ190d29fb2ZfbGluZXN0eWxlX2luX2RvdCBhdHRyaWJ1dGVzLmVkZ2Vfc3R5bGVcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQm90aCAtPlxuICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICAgIF4gc3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgICAgICBeIHN0cmluZ19vZl9hcnJvd19oZWFkX2luX2RvdCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbiAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUmV2ZXJzZSAtPlxuICAgICAgICBzdHJpbmdfb2ZfYXJyb3dfdGFpbF9pbl9kb3QgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gICAgICAgIF4gc3RyaW5nX29uZV9vZl9saW5lc3R5bGVfaW5fZG90IGF0dHJpYnV0ZXMuZWRnZV9zdHlsZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgIFwiXFxcIiVzXFxcIiAlcyBcXFwiJXNcXFwiXCIgaWQxIGRpcmVjdGlvbiBpZDJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBpc19ub19lZGdlX2F0dHJpYnV0ZXMgYXR0cmlidXRlcyB0aGVuXG4gICAgICAgICgpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIgW1wiIGluXG4gICAgICAgIGxldCBib29sID0gZmFsc2UgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9sYWJlbCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGJvb2xcbiAgICAgICAgICB8IFNvbWUgc3RyaW5nX2xpc3QgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwibGFiZWw9XFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgKExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwiJXNcIilcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgc3RyaW5nX2xpc3QpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJcXFwiXCIgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9zdHlsZSB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiAtPiBib29sXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWQgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIFwic3R5bGU9XFxcImRvdHRlZFxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRhc2hlZCAtPlxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCJzdHlsZT1cXFwiZGFzaGVkXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2NvbG9yIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYm9vbFxuICAgICAgICAgIHwgU29tZSBzIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJjb2xvcj1cXFwiJXNcXFwiXCIgKGRvdF9jb2xvcl9lbmNvZGluZyBzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGJvb2wgPVxuICAgICAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd2hlYWQgd2l0aFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGJvb2xcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJ0ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IGJldHdlZW5fYXR0cmlidXRlc19pbl9kb3QgbG9nZ2VyIGJvb2wgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcilcbiAgICAgICAgICAgICAgICBcImFycm93aGVhZD1cXFwidmVlXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3doZWFkPVxcXCJub25lXFxcIlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2Fycm93dGFpbCB3aXRoXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgLT4gYm9vbFxuICAgICAgICAgIHwgR3JhcGhfbG9nZ2Vyc19zaWcuVGVlIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcInRlZVxcXCJcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIHRydWVcbiAgICAgICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPlxuICAgICAgICAgICAgbGV0ICgpID0gYmV0d2Vlbl9hdHRyaWJ1dGVzX2luX2RvdCBsb2dnZXIgYm9vbCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICAgICAgICAgIFwiYXJyb3d0YWlsPVxcXCJ2ZWVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBiZXR3ZWVuX2F0dHJpYnV0ZXNfaW5fZG90IGxvZ2dlciBib29sIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpXG4gICAgICAgICAgICAgICAgXCJhcnJvd3RhaWw9XFxcIm5vbmVcXFwiXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IGlmIGJvb2wgdGhlbiAoKSBpblxuICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBcIl07XCIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5UWFQgfCBMb2dnZXJzLkhUTUwgLT5cbiAgICBsZXQgbGFiZWwgPVxuICAgICAgbWF0Y2ggYXR0cmlidXRlcy5lZGdlX2xhYmVsIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbIFwiXCIgXVxuICAgICAgfCBTb21lIHggLT4geFxuICAgIGluXG4gICAgbGV0IGFycm93ID1cbiAgICAgIG1hdGNoIGF0dHJpYnV0ZXMuZWRnZV9hcnJvd2hlYWQgd2l0aFxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob19oZWFkIC0+IFwiLS1cIlxuICAgICAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWwgfCBHcmFwaF9sb2dnZXJzX3NpZy5WZWUgLT4gXCItPlwiXG4gICAgICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlRlZSAtPiBcIi18XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKVxuICAgICAgICBcIiVzJXMgJXMgJXNcIiBwcmVmaXggaWQxIGFycm93IGlkMlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChHcmFwaF9sb2dnZXJzX3NpZy5saWZ0IGxvZ2dlcikgXCIlc1wiKVxuICAgICAgICAoTGlzdC5yZXYgbGFiZWwpXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEdyYXBoX2xvZ2dlcnNfc2lnLmxpZnQgbG9nZ2VyKSBpblxuICAgICgpXG4gIHwgTG9nZ2Vycy5HRVBISSB8IExvZ2dlcnMuTWF0cml4IHwgTG9nZ2Vycy5Kc29uIHwgTG9nZ2Vycy5IVE1MX0dyYXBoXG4gIHwgTG9nZ2Vycy5Kc19HcmFwaCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmFkZF9lZGdlIGxvZ2dlciBpZDEgaWQyIGRpcmVjdGl2ZXNcbiAgfCBMb2dnZXJzLkRPVE5FVCB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWJcbiAgfCBMb2dnZXJzLk9jdGF2ZSB8IExvZ2dlcnMuU0JNTCB8IExvZ2dlcnMuSFRNTF9UYWJ1bGFyIHwgTG9nZ2Vycy5UWFRfVGFidWxhclxuICB8IExvZ2dlcnMuWExTIC0+XG4gICAgKClcblxubGV0IHByaW50X29uZV90b19uX3JlbGF0aW9uIGxvZ2dlciA/KGRpcmVjdGl2ZXMgPSBbXSlcbiAgICA/KHN0eWxlX29uZSA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluKSA/KHN0eWxlX24gPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbilcbiAgICBpZCBpZGxpc3QgPVxuICBsZXQgZmljdGl0aW91cyA9IFwiRmljdGl0aW91c19cIiBeIGlkIGluXG4gIGxldCBkaXJlY3RpdmVzX2ZpY3QgPVxuICAgIG1hdGNoIExvZ2dlcnMuZ2V0X2VuY29kaW5nX2Zvcm1hdCAoR3JhcGhfbG9nZ2Vyc19zaWcubGlmdCBsb2dnZXIpIHdpdGhcbiAgICB8IExvZ2dlcnMuSFRNTF9HcmFwaCAtPlxuICAgICAgTGlzdC5yZXZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIFwiXCJcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGVcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCAwIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCAwXG4gICAgICAgOjogR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIEdyYXBoX2xvZ2dlcnNfc2lnLkJsYWNrXG4gICAgICAgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgICB8IExvZ2dlcnMuSnNfR3JhcGggfCBMb2dnZXJzLkpzb24gfCBMb2dnZXJzLk1hdHJpeCB8IExvZ2dlcnMuR0VQSElcbiAgICB8IExvZ2dlcnMuTWF0aGVtYXRpY2EgfCBMb2dnZXJzLk1hcGxlIHwgTG9nZ2Vycy5NYXRsYWIgfCBMb2dnZXJzLk9jdGF2ZVxuICAgIHwgTG9nZ2Vycy5TQk1MIHwgTG9nZ2Vycy5ET1RORVQgfCBMb2dnZXJzLkhUTUwgfCBMb2dnZXJzLlRYVCB8IExvZ2dlcnMuRE9UXG4gICAgfCBMb2dnZXJzLkhUTUxfVGFidWxhciB8IExvZ2dlcnMuVFhUX1RhYnVsYXIgfCBMb2dnZXJzLlhMUyAtPlxuICAgICAgTGlzdC5yZXZcbiAgICAgICAgKEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIFwiXCJcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZpc2libGVcbiAgICAgICA6OiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCAwIDo6IEdyYXBoX2xvZ2dlcnNfc2lnLkhlaWdodCAwXG4gICAgICAgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfb25lID1cbiAgICBpZiBzdHlsZV9vbmUgPSBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiB0aGVuXG4gICAgICBkaXJlY3RpdmVzXG4gICAgZWxzZVxuICAgICAgTGlzdC5yZXYgKEdyYXBoX2xvZ2dlcnNfc2lnLkxpbmVTdHlsZSBzdHlsZV9vbmUgOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfbiA9XG4gICAgaWYgc3R5bGVfbiA9IEdyYXBoX2xvZ2dlcnNfc2lnLlBsYWluIHRoZW5cbiAgICAgIGRpcmVjdGl2ZXNcbiAgICBlbHNlXG4gICAgICBMaXN0LnJldiAoR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIHN0eWxlX24gOjogTGlzdC5yZXYgZGlyZWN0aXZlcylcbiAgaW5cbiAgbGV0IF8gPSBwcmludF9ub2RlIGxvZ2dlciBmaWN0aXRpb3VzIH5kaXJlY3RpdmVzOmRpcmVjdGl2ZXNfZmljdCBpblxuICBsZXQgXyA9IHByaW50X2VkZ2UgbG9nZ2VyIH5kaXJlY3RpdmVzOmRpcmVjdGl2ZXNfb25lIGZpY3RpdGlvdXMgaWQgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBpZCcgLT4gcHJpbnRfZWRnZSBsb2dnZXIgfmRpcmVjdGl2ZXM6ZGlyZWN0aXZlc19uIGZpY3RpdGlvdXMgaWQnKVxuICAgICAgaWRsaXN0XG4gIGluXG4gICgpXG5cbmxldCBfID1cbiAgbGV0IGYgdCB0JyA9IHQuZWRnZV9vbl9jbGljaywgdCcubm9kZV9vbl9jbGljayBpblxuICBmXG4iLCIoKipcbiAgKiBncmFwaF9qcy5tbFxuICAqXG4gICogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpc1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMy8wNS8yMDE2XG4gICogTGFzdCBtb2RpZmljYXRpb246IDI1LzA1LzIwMTZcbiAgKiAqXG4gICpcbiAgKlxuICAqIENvcHlyaWdodCAyMDE2ICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkaXJlY3Rpb25fdG9fanNvbiBkaXJlY3Rpb24gPVxuICBtYXRjaCBkaXJlY3Rpb24gd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRpcmVjdCAtPiBgU3RyaW5nIFwiRGlyZWN0XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZXZlcnNlIC0+IGBTdHJpbmcgXCJSZXZlcnNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5VbmRpcmVjdGVkIC0+IGBTdHJpbmcgXCJVbmRpcmVjdGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Cb3RoIC0+IGBTdHJpbmcgXCJCb3RoXCJcblxubGV0IHNoYXBlX3RvX2pzb24gc2hhcGUgPVxuICBtYXRjaCBzaGFwZSB3aXRoXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aXNpYmxlIC0+IGBTdHJpbmcgXCJJbnZpc2libGVcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlIC0+IGBTdHJpbmcgXCJIb3VzZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2UgLT4gYFN0cmluZyBcIkludmhvdXNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0IC0+IGBTdHJpbmcgXCJyZWN0XCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5FbGxpcHNlIC0+IGBTdHJpbmcgXCJlbGxpcHNlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5DaXJjbGUgLT4gYFN0cmluZyBcImNpcmNsZVwiXG5cbmxldCBoZWFka2luZF90b19qc29uIGhlYWRraW5kID1cbiAgbWF0Y2ggaGVhZGtpbmQgd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZSAtPiBgU3RyaW5nIFwidmVlXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5UZWUgLT4gYFN0cmluZyBcIlRlZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9faGVhZCAtPiBgU3RyaW5nIFwidW5kaXJlY3RlZFwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsIC0+IGBTdHJpbmcgXCJub3JtYWxcIlxuXG5sZXQgbGluZXN0eWxlX3RvX2pzb24gbGluZXN0eWxlID1cbiAgbWF0Y2ggbGluZXN0eWxlIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpbiAtPiBgU3RyaW5nIFwiUGxhaW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkRvdHRlZCAtPiBgU3RyaW5nIFwiRG90dGVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5EYXNoZWQgLT4gYFN0cmluZyBcIkRhc2hlZFwiXG5cbmxldCBjb2xvcl90b19qc29uIGNvbG9yID1cbiAgbWF0Y2ggY29sb3Igd2l0aFxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlJlZCAtPiBgU3RyaW5nIFwicmVkXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAtPiBgU3RyaW5nIFwiZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlIC0+IGBTdHJpbmcgXCJ3aGl0ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmx1ZSAtPiBgU3RyaW5nIFwiYmx1ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2sgLT4gYFN0cmluZyBcImJsYWNrXCJcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWUgLT4gYFN0cmluZyBcImxpZ2h0c2t5Ymx1ZVwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuUGFsZUdyZWVuIC0+IGBTdHJpbmcgXCJwYWxlZ3JlZW5cIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duIC0+IGBTdHJpbmcgXCJicm93blwiXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuWWVsbG93IC0+IGBTdHJpbmcgXCJ5ZWxsb3dcIlxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXkgLT4gYFN0cmluZyBcImdyZXlcIlxuXG5sZXQgZGlyZWN0aXZlX3RvX2pzb24gb3B0aW9uID1cbiAgbWF0Y2ggb3B0aW9uIHdpdGhcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBjb2xvciAtPiBcImNvbG9yXCIsIGNvbG9yX3RvX2pzb24gY29sb3JcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgY29sb3IgLT4gXCJmaWxsY29sb3JcIiwgY29sb3JfdG9fanNvbiBjb2xvclxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkxhYmVsIHN0cmluZyAtPiBcImxhYmVsXCIsIGBTdHJpbmcgc3RyaW5nXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuV2lkdGggaW50IC0+IFwid2lkdGhcIiwgYEludCBpbnRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaW50IC0+IFwiaGVpZ2h0XCIsIGBJbnQgaW50XG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIGRpcmVjdGlvbiAtPlxuICAgIFwiZGlyZWN0aW9uXCIsIGRpcmVjdGlvbl90b19qc29uIGRpcmVjdGlvblxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIHNoYXBlIC0+IFwic2hhcGVcIiwgc2hhcGVfdG9fanNvbiBzaGFwZVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCBoZWFka2luZCAtPlxuICAgIFwiYXJyb3doZWFkXCIsIGhlYWRraW5kX3RvX2pzb24gaGVhZGtpbmRcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd1RhaWwgaGVhZGtpbmQgLT5cbiAgICBcImFycm93dGFpbFwiLCBoZWFka2luZF90b19qc29uIGhlYWRraW5kXG4gIHwgR3JhcGhfbG9nZ2Vyc19zaWcuTGluZVN0eWxlIGxpbmVzdHlsZSAtPlxuICAgIFwibGluZXN0eWxlXCIsIGxpbmVzdHlsZV90b19qc29uIGxpbmVzdHlsZVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIHAgLT5cbiAgICAoIFwicG9zaXRpb25cIixcbiAgICAgIEpzb25VdGlsLm9mX2xpc3RcbiAgICAgICAgKGZ1biBqc29uIC0+IExvYy55b2pzb25fb2ZfYW5ub3RlZCBKc29uVXRpbC5vZl91bml0ICgoKSwganNvbikpXG4gICAgICAgIHAgKVxuICB8IEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBzIC0+XG4gICAgXCJjb250ZXh0dWFsIGhlbHBcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHNcbiAgfCBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb24gLT4gXCJvbl9jbGlja1wiLCBqc29uXG5cbmxldCBkaXJlY3RpdmVzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9hc3NvYyBkaXJlY3RpdmVfdG9fanNvblxuXG5sZXQgbm9kZV90b19qc29uIChpZCwgZGlyZWN0aXZlcykgPVxuICBgQXNzb2MgWyBcImlkXCIsIGBTdHJpbmcgaWQ7IFwiZGlyZWN0aXZlc1wiLCBkaXJlY3RpdmVzX3RvX2pzb24gZGlyZWN0aXZlcyBdXG5cbmxldCBlZGdlX3RvX2pzb24gKGlkMSwgaWQyLCBkaXJlY3RpdmVzKSA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgIFwic291cmNlXCIsIGBTdHJpbmcgaWQxO1xuICAgICAgXCJ0YXJnZXRcIiwgYFN0cmluZyBpZDI7XG4gICAgICBcImRpcmVjdGl2ZXNcIiwgZGlyZWN0aXZlc190b19qc29uIGRpcmVjdGl2ZXM7XG4gICAgXVxuXG5sZXQgbm9kZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3Qgbm9kZV90b19qc29uXG5sZXQgZWRnZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3QgZWRnZV90b19qc29uXG5cbmxldCB0b19qc29uIGdyYXBoIDogWW9qc29uLkJhc2ljLnQgPVxuICBgQXNzb2NcbiAgICBbIFwibm9kZXNcIiwgbm9kZXNfdG9fanNvbiAoZnN0IGdyYXBoKTsgXCJlZGdlc1wiLCBlZGdlc190b19qc29uIChzbmQgZ3JhcGgpIF1cblxubGV0IGxpbmVzdHlsZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiUGxhaW5cIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5QbGFpblxuICB8IGBTdHJpbmcgXCJEb3R0ZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5Eb3R0ZWRcbiAgfCBgU3RyaW5nIFwiRGFzaGVkXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRGFzaGVkXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGhlYWRraW5kXCIsIHgpKVxuXG5sZXQgaGVhZGtpbmRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcInZlZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlZlZVxuICB8IGBTdHJpbmcgXCJUZWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5UZWVcbiAgfCBgU3RyaW5nIFwidW5kaXJlY3RlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLk5vX2hlYWRcbiAgfCBgU3RyaW5nIFwibm9ybWFsXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGhlYWRraW5kXCIsIHgpKVxuXG5sZXQgc2hhcGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcIkludmlzaWJsZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZVxuICB8IGBTdHJpbmcgXCJIb3VzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlXG4gIHwgYFN0cmluZyBcIkludmhvdXNlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2VcbiAgfCBgU3RyaW5nIFwicmVjdFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJlY3RcbiAgfCBgU3RyaW5nIFwiZWxsaXBzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcbiAgfCBgU3RyaW5nIFwiY2lyY2xlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQ2lyY2xlXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHNoYXBlXCIsIHgpKVxuXG5sZXQgZGlyZWN0aW9uX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgXCJEaXJlY3RcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5EaXJlY3RcbiAgfCBgU3RyaW5nIFwiUmV2ZXJzZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlJldmVyc2VcbiAgfCBgU3RyaW5nIFwiVW5kaXJlY3RlZFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlVuZGlyZWN0ZWRcbiAgfCBgU3RyaW5nIFwiQm90aFwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJvdGhcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZGlyZWN0aW9uXCIsIHgpKVxuXG5sZXQgY29sb3Jfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYFN0cmluZyBcImdyZXlcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5HcmV5XG4gIHwgYFN0cmluZyBcInllbGxvd1wiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlllbGxvd1xuICB8IGBTdHJpbmcgXCJyZWRcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbiAgfCBgU3RyaW5nIFwiZ3JlZW5cIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlblxuICB8IGBTdHJpbmcgXCJ3aGl0ZVwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLldoaXRlXG4gIHwgYFN0cmluZyBcImJsdWVcIiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlXG4gIHwgYFN0cmluZyBcImJsYWNrXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQmxhY2tcbiAgfCBgU3RyaW5nIFwibGlnaHRza3libHVlXCIgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTGlnaHRTa3lCbHVlXG4gIHwgYFN0cmluZyBcInBhbGVncmVlblwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlblxuICB8IGBTdHJpbmcgXCJicm93blwiIC0+IEdyYXBoX2xvZ2dlcnNfc2lnLkJyb3duXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGNvbG9yXCIsIHgpKVxuXG5sZXQgZGlyZWN0aXZlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IFwiY29sb3JcIiwgY29sb3IgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgKGNvbG9yX29mX2pzb24gY29sb3IpXG4gIHwgXCJmaWxsY29sb3JcIiwgY29sb3IgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIChjb2xvcl9vZl9qc29uIGNvbG9yKVxuICB8IFwibGFiZWxcIiwgYFN0cmluZyBzdHJpbmcgLT4gR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgc3RyaW5nXG4gIHwgXCJ3aWR0aFwiLCBgSW50IGludCAtPiBHcmFwaF9sb2dnZXJzX3NpZy5XaWR0aCBpbnRcbiAgfCBcImhlaWdodFwiLCBgSW50IGludCAtPiBHcmFwaF9sb2dnZXJzX3NpZy5IZWlnaHQgaW50XG4gIHwgXCJkaXJlY3Rpb25cIiwgZGlyZWN0aW9uIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuRGlyZWN0aW9uIChkaXJlY3Rpb25fb2ZfanNvbiBkaXJlY3Rpb24pXG4gIHwgXCJzaGFwZVwiLCBzaGFwZSAtPiBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSAoc2hhcGVfb2ZfanNvbiBzaGFwZSlcbiAgfCBcImFycm93aGVhZFwiLCBoZWFka2luZCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCAoaGVhZGtpbmRfb2ZfanNvbiBoZWFka2luZClcbiAgfCBcImFycm93dGFpbFwiLCBoZWFka2luZCAtPlxuICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93VGFpbCAoaGVhZGtpbmRfb2ZfanNvbiBoZWFka2luZClcbiAgfCBcImxpbmVzdHlsZVwiLCBsaW5lc3R5bGUgLT5cbiAgICBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgKGxpbmVzdHlsZV9vZl9qc29uIGxpbmVzdHlsZSlcbiAgfCBcInBvc2l0aW9uXCIsIHBvc19saXN0IC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuUG9zaXRpb25cbiAgICAgIChKc29uVXRpbC50b19saXN0XG4gICAgICAgICAoZnVuIGpzb24gLT5cbiAgICAgICAgICAgc25kXG4gICAgICAgICAgICAgKExvYy5hbm5vdGVkX29mX3lvanNvblxuICAgICAgICAgICAgICAgIChKc29uVXRpbC50b191bml0XG4gICAgICAgICAgICAgICAgICAgP2Vycm9yX21zZzooU29tZSAoSnNvblV0aWwuYnVpbGRfbXNnIFwicG9zaXRpb25cIikpKVxuICAgICAgICAgICAgICAgIGpzb24pKVxuICAgICAgICAgcG9zX2xpc3QpXG4gIHwgXCJjb250ZXh0dWFsIGhlbHBcIiwgY29udGV4dHVhbF9oZWxwIC0+XG4gICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIChKc29uVXRpbC50b19zdHJpbmcgY29udGV4dHVhbF9oZWxwKVxuICB8IFwib25fY2xpY2tcIiwganNvbiAtPiBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb25cbiAgfCBfLCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZGlyZWN0aXZlXCIsIHgpKVxuXG5sZXQgZGlyZWN0aXZlc19vZl9qc29uIGRpcmVjdGl2ZXMgPVxuICBKc29uVXRpbC50b19hc3NvY1xuICAgIH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImxpc3Qgb2YgZGlyZWN0aXZlc1wiKVxuICAgIGRpcmVjdGl2ZV9vZl9qc29uIGRpcmVjdGl2ZXNcblxubGV0IGlkX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBTdHJpbmcgc3RyaW5nIC0+IHN0cmluZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBpZFwiLCB4KSlcblxubGV0IG5vZGVfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAyIC0+XG4gICAgKHRyeVxuICAgICAgICggaWRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImlkXCIgbCksXG4gICAgICAgICBkaXJlY3RpdmVzX29mX2pzb24gKExpc3QuYXNzb2MgXCJkaXJlY3RpdmVzXCIgbCkgKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgbm9kZVwiLCB4KSkpXG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IG5vZGVcIiwgeCkpXG5cbmxldCBlZGdlX29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICh0cnlcbiAgICAgICAoIGlkX29mX2pzb24gKExpc3QuYXNzb2MgXCJzb3VyY2VcIiBsKSxcbiAgICAgICAgIGlkX29mX2pzb24gKExpc3QuYXNzb2MgXCJ0YXJnZXRcIiBsKSxcbiAgICAgICAgIGRpcmVjdGl2ZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImRpcmVjdGl2ZXNcIiBsKSApXG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlZGdlXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZWRnZVwiLCB4KSlcblxubGV0IG5vZGVzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcIm5vZGUgbGlzdFwiKSBub2RlX29mX2pzb25cblxubGV0IGVkZ2VzX29mX2pzb24gPVxuICBKc29uVXRpbC50b19saXN0IH5lcnJvcl9tc2c6KEpzb25VdGlsLmJ1aWxkX21zZyBcImVkZ2UgbGlzdFwiKSBlZGdlX29mX2pzb25cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICAoIG5vZGVzX29mX2pzb24gKExpc3QuYXNzb2MgXCJub2Rlc1wiIGwpLFxuICAgICAgICAgZWRnZXNfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImVkZ2VzXCIgbCkgKVxuICAgICB3aXRoIE5vdF9mb3VuZCAtPlxuICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZW52aXJvbm1lbnRcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBlbnZpcm9ubWVudFwiLCB4KSlcbiIsInR5cGUgYnJlYWtfaGludCA9IFNwYWNlIHwgTm9fc3BhY2VcblxudHlwZSBzeW1ib2xfdGFibGUgPSB7XG4gIGFnZW50X29wZW46IHN0cmluZztcbiAgYWdlbnRfY2xvc2U6IHN0cmluZztcbiAgYWdlbnRfc2VwX2NvbW1hOiBzdHJpbmcgKiBicmVha19oaW50O1xuICBhZ2VudF9zZXBfZG90OiBzdHJpbmcgKiBicmVha19oaW50O1xuICBhZ2VudF9zZXBfcGx1czogc3RyaW5nICogYnJlYWtfaGludDtcbiAgZ2hvc3RfYWdlbnQ6IHN0cmluZztcbiAgc2hvd19naG9zdDogYm9vbDtcbiAgaW50ZXJuYWxfc3RhdGVfc3ltYm9sOiBzdHJpbmc7XG4gIG9wZW5faW50ZXJuYWxfc3RhdGU6IHN0cmluZztcbiAgY2xvc2VfaW50ZXJuYWxfc3RhdGU6IHN0cmluZztcbiAgb3Blbl9pbnRlcm5hbF9zdGF0ZV9tb2Q6IHN0cmluZztcbiAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGludGVybmFsX3N0YXRlX21vZF9zeW1ib2w6IHN0cmluZztcbiAgaW50ZXJuYWxfc3RhdGVfYW55OiBzdHJpbmc7XG4gIG9wZW5fYmluZGluZ19zdGF0ZTogc3RyaW5nO1xuICBjbG9zZV9iaW5kaW5nX3N0YXRlOiBzdHJpbmc7XG4gIG1pc3NpbmdfYmluZGluZ19zdGF0ZTogc3RyaW5nO1xuICBvcGVuX2JpbmRpbmdfc3RhdGVfbW9kOiBzdHJpbmc7XG4gIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbDogc3RyaW5nO1xuICBjbG9zZV9iaW5kaW5nX3N0YXRlX21vZDogc3RyaW5nO1xuICBmcmVlOiBzdHJpbmc7XG4gIGJvdW5kOiBzdHJpbmc7XG4gIGxpbmtfdG9fYW55OiBzdHJpbmc7XG4gIGxpbmtfdG9fc29tZTogc3RyaW5nO1xuICBhdDogc3RyaW5nO1xuICBzaXRlX3NlcDogc3RyaW5nICogYnJlYWtfaGludDtcbiAgYnR5cGVfc2VwOiBzdHJpbmc7XG4gIHVuaV9hcnJvdzogc3RyaW5nO1xuICByZXZfYXJyb3c6IHN0cmluZztcbiAgYmlfYXJyb3c6IHN0cmluZztcbiAgdW5pX2Fycm93X25vcG9seTogc3RyaW5nO1xuICByZXZfYXJyb3dfbm9wb2x5OiBzdHJpbmc7XG4gIGJpX2Fycm93X25vcG9seTogc3RyaW5nO1xuICBicmVha2FibGU6IGJvb2w7XG4gIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZTogc3RyaW5nO1xuICBvcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmU6IHN0cmluZztcbiAgb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHk6IHN0cmluZztcbiAgY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZTogc3RyaW5nO1xuICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlOiBzdHJpbmc7XG4gIGNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eTogc3RyaW5nO1xuICBpbnRfaW50ZXJ2YWxfc2VwYXJhdG9yOiBzdHJpbmc7XG4gIHBsdXNfaW5maW5pdHk6IHN0cmluZztcbiAgbWludXNfaW5maW5pdHk6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyX3N0YXRlOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmNlcTogc3RyaW5nO1xuICBvcGVuX2NvdW50ZXJjZ3RlOiBzdHJpbmc7XG4gIG9wZW5fY291bnRlcmN2YXI6IHN0cmluZztcbiAgb3Blbl9jb3VudGVyZGVsdGE6IHN0cmluZztcbiAgb3Blbl9jb3VudGVydmFsOiBzdHJpbmc7XG4gIGNsb3NlX2NvdW50ZXJfc3RhdGU6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcmNlcTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY2d0ZTogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyY3Zhcjogc3RyaW5nO1xuICBjbG9zZV9jb3VudGVyZGVsdGE6IHN0cmluZztcbiAgY2xvc2VfY291bnRlcnZhbDogc3RyaW5nO1xuICBjb3VudGVyY2VxX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVyY2d0ZV9zeW1ib2w6IHN0cmluZztcbiAgY291bnRlcmN2YXJfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJkZWx0YXBsdXNfc3ltYm9sOiBzdHJpbmc7XG4gIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbDogc3RyaW5nO1xuICBjb3VudGVydmFsX3N5bWJvbDogc3RyaW5nO1xufVxuXG5sZXQgc3ltYm9sX3RhYmxlX1YzID1cbiAge1xuICAgIGJvdW5kID0gXCIhXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBtaXNzaW5nX2JpbmRpbmdfc3RhdGUgPSBcIj9cIjtcbiAgICBsaW5rX3RvX2FueSA9IFwiP1wiO1xuICAgIGxpbmtfdG9fc29tZSA9IFwiIV9cIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9zeW1ib2wgPSBcIn5cIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlID0gXCJcIjtcbiAgICBjbG9zZV9pbnRlcm5hbF9zdGF0ZSA9IFwiXCI7XG4gICAgb3Blbl9pbnRlcm5hbF9zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfbW9kX3N5bWJvbCA9IFwiL1wiO1xuICAgIGludGVybmFsX3N0YXRlX2FueSA9IFwiXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfYmluZGluZ19zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbCA9IFwiXCI7XG4gICAgZnJlZSA9IFwiXCI7XG4gICAgYXQgPSBcIi5cIjtcbiAgICBhZ2VudF9vcGVuID0gXCIoXCI7XG4gICAgYWdlbnRfY2xvc2UgPSBcIilcIjtcbiAgICBhZ2VudF9zZXBfY29tbWEgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIixcIiwgU3BhY2U7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLFwiLCBTcGFjZTtcbiAgICBidHlwZV9zZXAgPSBcIi5cIjtcbiAgICBzaXRlX3NlcCA9IFwiLFwiLCBOb19zcGFjZTtcbiAgICBnaG9zdF9hZ2VudCA9IFwiLlwiO1xuICAgIHNob3dfZ2hvc3QgPSBmYWxzZTtcbiAgICB1bmlfYXJyb3cgPSBcIi0+XCI7XG4gICAgcmV2X2Fycm93ID0gXCI8LVwiO1xuICAgIGJpX2Fycm93ID0gXCI8LT5cIjtcbiAgICB1bmlfYXJyb3dfbm9wb2x5ID0gXCItIS0+XCI7XG4gICAgcmV2X2Fycm93X25vcG9seSA9IFwiPC0hLVwiO1xuICAgIGJpX2Fycm93X25vcG9seSA9IFwiPC0hLT5cIjtcbiAgICBicmVha2FibGUgPSB0cnVlO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiW1wiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZSA9IFwiXVwiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luZmluaXR5ID0gXCJdXCI7XG4gICAgcGx1c19pbmZpbml0eSA9IFwiK29vXCI7XG4gICAgbWludXNfaW5maW5pdHkgPSBcIi1vb1wiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmUgPSBcIl1cIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJbXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5ID0gXCJbXCI7XG4gICAgaW50X2ludGVydmFsX3NlcGFyYXRvciA9IFwiIC4uIFwiO1xuICAgIG9wZW5fY291bnRlcl9zdGF0ZSA9IFwie1wiO1xuICAgIG9wZW5fY291bnRlcmNlcSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY2d0ZSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcnZhbCA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcl9zdGF0ZSA9IFwifVwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZXEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmRlbHRhID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjb3VudGVyY2VxX3N5bWJvbCA9IFwiPVwiO1xuICAgIGNvdW50ZXJjZ3RlX3N5bWJvbCA9IFwiPj1cIjtcbiAgICBjb3VudGVyY3Zhcl9zeW1ib2wgPSBcIjpcIjtcbiAgICBjb3VudGVydmFsX3N5bWJvbCA9IFwiOj1cIjtcbiAgICBjb3VudGVyZGVsdGFwbHVzX3N5bWJvbCA9IFwiK1wiO1xuICAgIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9IFwiLVwiO1xuICB9XG5cbmxldCBsaWdodGVuIHN5bWJvbF90YWJsZSA9XG4gIHsgc3ltYm9sX3RhYmxlIHdpdGggc2l0ZV9zZXAgPSBcIiBcIiwgc25kIHN5bWJvbF90YWJsZS5zaXRlX3NlcCB9XG5cbmxldCB0b19kb3RuZXQgc3ltYm9sX3RhYmxlID1cbiAge1xuICAgIHN5bWJvbF90YWJsZSB3aXRoXG4gICAgYWdlbnRfc2VwX3BsdXMgPSBcIiArXCIsIHNuZCBzeW1ib2xfdGFibGUuYWdlbnRfc2VwX3BsdXM7XG4gICAgYWdlbnRfc2VwX2RvdCA9IFwiLlwiLCBOb19zcGFjZTtcbiAgfVxuXG5sZXQgc3ltYm9sX3RhYmxlX1Y0ID1cbiAge1xuICAgIGJvdW5kID0gXCJcIjtcbiAgICBvcGVuX2JpbmRpbmdfc3RhdGUgPSBcIltcIjtcbiAgICBjbG9zZV9iaW5kaW5nX3N0YXRlID0gXCJdXCI7XG4gICAgbWlzc2luZ19iaW5kaW5nX3N0YXRlID0gXCJcIjtcbiAgICBsaW5rX3RvX2FueSA9IFwiI1wiO1xuICAgIGxpbmtfdG9fc29tZSA9IFwiX1wiO1xuICAgIGludGVybmFsX3N0YXRlX3N5bWJvbCA9IFwiXCI7XG4gICAgb3Blbl9pbnRlcm5hbF9zdGF0ZSA9IFwie1wiO1xuICAgIGNsb3NlX2ludGVybmFsX3N0YXRlID0gXCJ9XCI7XG4gICAgaW50ZXJuYWxfc3RhdGVfYW55ID0gXCJ7I31cIjtcbiAgICBvcGVuX2ludGVybmFsX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfaW50ZXJuYWxfc3RhdGVfbW9kID0gXCJcIjtcbiAgICBpbnRlcm5hbF9zdGF0ZV9tb2Rfc3ltYm9sID0gXCIvXCI7XG4gICAgb3Blbl9iaW5kaW5nX3N0YXRlX21vZCA9IFwiXCI7XG4gICAgY2xvc2VfYmluZGluZ19zdGF0ZV9tb2QgPSBcIlwiO1xuICAgIGJpbmRpbmdfc3RhdGVfbW9kX3N5bWJvbCA9IFwiXCI7XG4gICAgZnJlZSA9IFwiLlwiO1xuICAgIGF0ID0gXCIuXCI7XG4gICAgYWdlbnRfb3BlbiA9IFwiKFwiO1xuICAgIGFnZW50X2Nsb3NlID0gXCIpXCI7XG4gICAgYWdlbnRfc2VwX2NvbW1hID0gXCIsXCIsIFNwYWNlO1xuICAgIGFnZW50X3NlcF9wbHVzID0gXCIsXCIsIFNwYWNlO1xuICAgIGFnZW50X3NlcF9kb3QgPSBcIixcIiwgU3BhY2U7XG4gICAgYnR5cGVfc2VwID0gXCIuXCI7XG4gICAgc2l0ZV9zZXAgPSBcIixcIiwgTm9fc3BhY2U7XG4gICAgZ2hvc3RfYWdlbnQgPSBcIi5cIjtcbiAgICBzaG93X2dob3N0ID0gdHJ1ZTtcbiAgICB1bmlfYXJyb3cgPSBcIi0+XCI7XG4gICAgcmV2X2Fycm93ID0gXCI8LVwiO1xuICAgIGJpX2Fycm93ID0gXCI8LT5cIjtcbiAgICB1bmlfYXJyb3dfbm9wb2x5ID0gXCItIS0+XCI7XG4gICAgcmV2X2Fycm93X25vcG9seSA9IFwiPC0hLVwiO1xuICAgIGJpX2Fycm93X25vcG9seSA9IFwiPC0hLT5cIjtcbiAgICBicmVha2FibGUgPSB0cnVlO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZSA9IFwiW1wiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2V4Y2x1c2l2ZSA9IFwiXVwiO1xuICAgIG9wZW5faW50X2ludGVydmFsX2luZmluaXR5ID0gXCJdXCI7XG4gICAgcGx1c19pbmZpbml0eSA9IFwiK29vXCI7XG4gICAgbWludXNfaW5maW5pdHkgPSBcIi1vb1wiO1xuICAgIG9wZW5fY291bnRlcl9zdGF0ZSA9IFwie1wiO1xuICAgIGNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmUgPSBcIl1cIjtcbiAgICBjbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlID0gXCJbXCI7XG4gICAgY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5ID0gXCJbXCI7XG4gICAgaW50X2ludGVydmFsX3NlcGFyYXRvciA9IFwiIC4uIFwiO1xuICAgIG9wZW5fY291bnRlcmNlcSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY2d0ZSA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgb3Blbl9jb3VudGVyZGVsdGEgPSBcIlwiO1xuICAgIG9wZW5fY291bnRlcnZhbCA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcl9zdGF0ZSA9IFwifVwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZXEgPSBcIlwiO1xuICAgIGNsb3NlX2NvdW50ZXJjZ3RlID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVyY3ZhciA9IFwiXCI7XG4gICAgY2xvc2VfY291bnRlcmRlbHRhID0gXCJcIjtcbiAgICBjbG9zZV9jb3VudGVydmFsID0gXCJcIjtcbiAgICBjb3VudGVyY2VxX3N5bWJvbCA9IFwiPVwiO1xuICAgIGNvdW50ZXJjZ3RlX3N5bWJvbCA9IFwiPj1cIjtcbiAgICBjb3VudGVyY3Zhcl9zeW1ib2wgPSBcIjpcIjtcbiAgICBjb3VudGVydmFsX3N5bWJvbCA9IFwiOj1cIjtcbiAgICBjb3VudGVyZGVsdGFwbHVzX3N5bWJvbCA9IFwiK1wiO1xuICAgIGNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbCA9IFwiLVwiO1xuICB9XG5cbmxldCBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZSA9IHsgc3ltYm9sX3RhYmxlIHdpdGggYnJlYWthYmxlID0gZmFsc2UgfVxubGV0IHN5bWJvbF90YWJsZV9WM19saWdodCA9IGxpZ2h0ZW4gc3ltYm9sX3RhYmxlX1YzXG5sZXQgc3ltYm9sX3RhYmxlX2RvdG5ldCA9IHRvX2RvdG5ldCBzeW1ib2xfdGFibGVfVjNcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfVjMgPSBub3RfYnJlYWthYmxlIHN5bWJvbF90YWJsZV9WM1xubGV0IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9WNCA9IG5vdF9icmVha2FibGUgc3ltYm9sX3RhYmxlX1Y0XG5sZXQgdW5icmVha2FibGVfc3ltYm9sX3RhYmxlX1YzX2xpZ2h0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfVjNfbGlnaHRcbmxldCB1bmJyZWFrYWJsZV9zeW1ib2xfdGFibGVfZG90bmV0ID0gbm90X2JyZWFrYWJsZSBzeW1ib2xfdGFibGVfZG90bmV0XG5cbmxldCB3aXRoX2RvdF9hbmRfcGx1cyBzeW1ib2xfdGFibGUgPVxuICB7XG4gICAgc3ltYm9sX3RhYmxlIHdpdGhcbiAgICBhZ2VudF9zZXBfcGx1cyA9IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQuYWdlbnRfc2VwX3BsdXM7XG4gICAgYWdlbnRfc2VwX2RvdCA9IHVuYnJlYWthYmxlX3N5bWJvbF90YWJsZV9kb3RuZXQuYWdlbnRfc2VwX2RvdDtcbiAgfVxuIiwiKCoqXG4gICAgKiByZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUubWxcbiAgICAqXG4gICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICAqXG4gICAgKiBDcmVhdGlvbjogMTIvMTAvMjAxMFxuICAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMjggMjAxOD5cbiAgICAqICpcbiAgICAqIFNpZ25hdHVyZSBmb3IgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIG1lbW9yeVxuICAgICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgcnVsZV9rZXkgPSBpbnRcblxudHlwZSBlbmdpbmVfc3RhdGUgPSB7XG4gIGNvbW1hbmRfbGluZTogc3RyaW5nIG9wdGlvbjtcbiAgd2FrZV91cF9tYXA6IChydWxlX2tleSAtPiBydWxlX2tleSBsaXN0KSBvcHRpb247XG59XG5cbmxldCBlbXB0eV9lbmdpbmVfc3RhdGUgPSB7IGNvbW1hbmRfbGluZSA9IE5vbmU7IHdha2VfdXBfbWFwID0gTm9uZSB9XG5sZXQgd2FrZV91cF9tYXAgZXJyb3IgZW5naW5lX3N0YXRlID0gZXJyb3IsIGVuZ2luZV9zdGF0ZS53YWtlX3VwX21hcFxuIiwiKCoqXG4gICAgKiBleGNlcHRpb24ubWxcbiAgICAqIG9wZW5rYXBwYVxuICAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAgKlxuICAgICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8Tm92IDA0IDIwMTg+XG4gICAgKiAqXG4gICAgKiBUaGlzIGxpYnJhcnkgZGVjbGFyZXMgZXhjZXB0aW9uc1xuICAgICpcbiAgICAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIHVuY2F1Z2h0X2V4Y2VwdGlvbiA9IHtcbiAgZmlsZV9uYW1lOiBzdHJpbmcgb3B0aW9uO1xuICBtZXNzYWdlOiBzdHJpbmcgb3B0aW9uO1xuICBhbGFybTogZXhuO1xufVxuXG50eXBlIGNhdWdodF9leGNlcHRpb24gPSB7XG4gIHVuY2F1Z2h0X2V4Y2VwdGlvbjogdW5jYXVnaHRfZXhjZXB0aW9uO1xuICBjYWxsaW5nX3N0YWNrOiBzdHJpbmcgbGlzdDtcbn1cblxuZXhjZXB0aW9uIFVuY2F1Z2h0X2V4Y2VwdGlvbiBvZiB1bmNhdWdodF9leGNlcHRpb25cbmV4Y2VwdGlvbiBDYXVnaHRfZXhjZXB0aW9uIG9mIGNhdWdodF9leGNlcHRpb25cblxubGV0IHJlYyBleG5fdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgRXhpdCAtPiBgQXNzb2MgWyBcIkV4aXRcIiwgYE51bGwgXVxuICB8IE5vdF9mb3VuZCAtPiBgQXNzb2MgWyBcIk5vdF9mb3VuZFwiLCBgTnVsbCBdXG4gIHwgQXJnLkJhZCB4IC0+IGBBc3NvYyBbIFwiQXJnLkJhZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3lzLkJyZWFrIC0+IGBBc3NvYyBbIFwiU3lzLkJyZWFrXCIsIGBOdWxsIF1cbiAgfCBTdGFjay5FbXB0eSAtPiBgQXNzb2MgWyBcIlN0YWNrLkVtcHR5XCIsIGBOdWxsIF1cbiAgfCBRdWV1ZS5FbXB0eSAtPiBgQXNzb2MgWyBcIlF1ZXVlLkVtcHR5XCIsIGBOdWxsIF1cbiAgfCBTdHJlYW0uRXJyb3IgeCAtPiBgQXNzb2MgWyBcIlN0cmVhbS5FcnJvclwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gYEFzc29jIFsgXCJTdHJlYW0uRmFpbHVyZVwiLCBgTnVsbCBdXG4gIHwgQXJnLkhlbHAgeCAtPiBgQXNzb2MgWyBcIkFyZy5IZWxwXCIsIEpzb25VdGlsLm9mX3N0cmluZyB4IF1cbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IGBBc3NvYyBbIFwiUGFyc2luZy5QYXJzZV9lcnJvclwiLCBgTnVsbCBdXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gYEFzc29jIFsgXCJTY2FuX2ZhaWx1cmVcIiwgSnNvblV0aWwub2Zfc3RyaW5nIHggXVxuICB8IExhenkuVW5kZWZpbmVkIC0+IGBBc3NvYyBbIFwiTGF6eS5VbmRlZmluZWRcIiwgYE51bGwgXVxuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciAoYSwgYiwgYykgLT5cbiAgICBgQXNzb2NcbiAgICAgIFtcbiAgICAgICAgKCBcIlVuaXhMYWJlbHMuVW5peF9lcnJvclwiLFxuICAgICAgICAgIGBBc3NvY1xuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcImZzdFwiLCBKc29uVXRpbC5vZl91bml4X2xhYmVsIGE7XG4gICAgICAgICAgICAgIFwic25kXCIsIEpzb25VdGlsLm9mX3N0cmluZyBiO1xuICAgICAgICAgICAgICBcInRyZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYztcbiAgICAgICAgICAgIF0gKTtcbiAgICAgIF1cbiAgfCBVbml4LlVuaXhfZXJyb3IgKGEsIGIsIGMpIC0+XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgICggXCJVbml4LlVuaXguZXJyb3JcIixcbiAgICAgICAgICBgQXNzb2NcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgXCJmc3RcIiwgSnNvblV0aWwub2ZfdW5peF9lcnJvciBhO1xuICAgICAgICAgICAgICBcInNuZFwiLCBKc29uVXRpbC5vZl9zdHJpbmcgYjtcbiAgICAgICAgICAgICAgXCJ0cmRcIiwgSnNvblV0aWwub2Zfc3RyaW5nIGM7XG4gICAgICAgICAgICBdICk7XG4gICAgICBdXG4gIHwgRmFpbHVyZSB4IC0+IGBBc3NvYyBbIFwiRmFpbHVyZVwiLCBKc29uVXRpbC5vZl9zdHJpbmcgeCBdXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gYEFzc29jIFsgXCJTdGFja19vdmVyZmxvd1wiLCBgTnVsbCBdXG4gIHwgQ2F1Z2h0X2V4Y2VwdGlvbiB4IC0+IGBBc3NvYyBbIFwiQ2F1Z2h0XCIsIGNhdWdodF9leGNlcHRpb25fdG9fanNvbiB4IF1cbiAgfCBVbmNhdWdodF9leGNlcHRpb24geCAtPiBgQXNzb2MgWyBcIlVuY2F1Z2h0XCIsIHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHggXVxuICB8IF8gLT4gYEFzc29jIFsgXCJVbmtub3duXCIsIGBOdWxsIF1cblxuYW5kIHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uIHVuY2F1Z2h0ID1cbiAgSnNvblV0aWwub2ZfdHJpcGxlIH5sYWIxOlwiZmlsZV9uYW1lXCIgfmxhYjI6XCJtZXNzYWdlXCIgfmxhYjM6XCJleG5cIlxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgIChKc29uVXRpbC5vZl9vcHRpb24gSnNvblV0aWwub2Zfc3RyaW5nKVxuICAgIGV4bl90b19qc29uXG4gICAgKHVuY2F1Z2h0LmZpbGVfbmFtZSwgdW5jYXVnaHQubWVzc2FnZSwgdW5jYXVnaHQuYWxhcm0pXG5cbmFuZCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb24gY2F1Z2h0ID1cbiAgSnNvblV0aWwub2ZfcGFpciB+bGFiMTpcInVuY2F1Z2h0X2V4Y2VwdGlvblwiIH5sYWIyOlwiY2FsbGluZ19zdGFja1wiXG4gICAgdW5jYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAoSnNvblV0aWwub2ZfbGlzdCBKc29uVXRpbC5vZl9zdHJpbmcpXG4gICAgKGNhdWdodC51bmNhdWdodF9leGNlcHRpb24sIGNhdWdodC5jYWxsaW5nX3N0YWNrKVxuXG5sZXQgcmVjIGV4bl9vZl9qc29uIChqc29uIDogWW9qc29uLkJhc2ljLnQpID1cbiAgbWF0Y2gganNvbiB3aXRoXG4gIHwgYEFzc29jIFsgKFwiRXhpdFwiLCBgTnVsbCkgXSAtPiBFeGl0XG4gIHwgYEFzc29jIFsgKFwiTm90X2ZvdW5kXCIsIGBOdWxsKSBdIC0+IE5vdF9mb3VuZFxuICB8IGBBc3NvYyBbIChcIkFyZy5CYWRcIiwgeCkgXSAtPiBBcmcuQmFkIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJTeXMuQnJlYWtcIiwgYE51bGwpIF0gLT4gU3lzLkJyZWFrXG4gIHwgYEFzc29jIFsgKFwiU3RhY2suRW1wdHlcIiwgYE51bGwpIF0gLT4gU3RhY2suRW1wdHlcbiAgfCBgQXNzb2MgWyAoXCJRdWV1ZS5FbXB0eVwiLCBgTnVsbCkgXSAtPiBRdWV1ZS5FbXB0eVxuICB8IGBBc3NvYyBbIChcIlN0cmVhbS5FcnJvclwiLCB4KSBdIC0+IFN0cmVhbS5FcnJvciAoSnNvblV0aWwudG9fc3RyaW5nIHgpXG4gIHwgYEFzc29jIFsgKFwiU3RyZWFtLkZhaWx1cmVcIiwgYE51bGwpIF0gLT4gU3RyZWFtLkZhaWx1cmVcbiAgfCBgQXNzb2MgWyAoXCJBcmcuSGVscFwiLCB4KSBdIC0+IEFyZy5IZWxwIChKc29uVXRpbC50b19zdHJpbmcgeClcbiAgfCBgQXNzb2MgWyAoXCJQYXJzaW5nLlBhcnNlX2Vycm9yXCIsIGBOdWxsKSBdIC0+IFBhcnNpbmcuUGFyc2VfZXJyb3JcbiAgfCBgQXNzb2MgWyAoXCJTY2FuX2ZhaWx1cmVcIiwgeCkgXSAtPiBTY2FuZi5TY2FuX2ZhaWx1cmUgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIkxhenkuVW5kZWZpbmVkXCIsIGBOdWxsKSBdIC0+IExhenkuVW5kZWZpbmVkXG4gIHwgYEFzc29jIFsgKFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIsIGBBc3NvYyBsKSBdIHdoZW4gTGlzdC5sZW5ndGggbCA9IDMgLT5cbiAgICAodHJ5XG4gICAgICAgVW5peExhYmVscy5Vbml4X2Vycm9yXG4gICAgICAgICAoIEpzb25VdGlsLnRvX3VuaXhfbGFiZWwgKExpc3QuYXNzb2MgXCJmc3RcIiBsKSxcbiAgICAgICAgICAgSnNvblV0aWwudG9fc3RyaW5nIChMaXN0LmFzc29jIFwic25kXCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInRyZFwiIGwpIClcbiAgICAgd2l0aCBfIC0+XG4gICAgICAgcmFpc2VcbiAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yXG4gICAgICAgICAgICAoSnNvblV0aWwuYnVpbGRfbXNnIFwidW5peCBsYWJlbHMgZXJyb3JcIiwganNvbikpKVxuICB8IGBBc3NvYyBbIChcIlVuaXguVW5peF9lcnJvclwiLCBgQXNzb2MgbCkgXSB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIFVuaXguVW5peF9lcnJvclxuICAgICAgICAgKCBKc29uVXRpbC50b191bml4X2xhYmVsIChMaXN0LmFzc29jIFwiZnN0XCIgbCksXG4gICAgICAgICAgIEpzb25VdGlsLnRvX3N0cmluZyAoTGlzdC5hc3NvYyBcInNuZFwiIGwpLFxuICAgICAgICAgICBKc29uVXRpbC50b19zdHJpbmcgKExpc3QuYXNzb2MgXCJ0cmRcIiBsKSApXG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwidW5peCBlcnJvclwiLCBqc29uKSkpXG4gIHwgYEFzc29jIFsgKFwiRmFpbHVyZVwiLCB4KSBdIC0+IEZhaWx1cmUgKEpzb25VdGlsLnRvX3N0cmluZyB4KVxuICB8IGBBc3NvYyBbIChcIlN0YWNrX292ZXJmbG93XCIsIGBOdWxsKSBdIC0+IFN0YWNrX292ZXJmbG93XG4gIHwgYEFzc29jIFsgKFwiQ2F1Z2h0XCIsIHgpIF0gLT4gQ2F1Z2h0X2V4Y2VwdGlvbiAoY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIHgpXG4gIHwgYEFzc29jIFsgKFwiVW5jYXVnaHRcIiwgeCkgXSAtPlxuICAgIFVuY2F1Z2h0X2V4Y2VwdGlvbiAodW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24geClcbiAgfCBgQXNzb2MgWyAoXCJVbmtub3duXCIsIGBOdWxsKSBdIC0+IEZhaWx1cmUgXCJVbmtub3duXCJcbiAgfCBfIC0+XG4gICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKEpzb25VdGlsLmJ1aWxkX21zZyBcImV4Y2VwdGlvblwiLCBqc29uKSlcblxuYW5kIHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uIGpzb24gPVxuICBsZXQgYSwgYiwgYyA9XG4gICAgSnNvblV0aWwudG9fdHJpcGxlIH5sYWIxOlwiZmlsZV9uYW1lXCIgfmxhYjI6XCJtZXNzYWdlXCIgfmxhYjM6XCJleG5cIlxuICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJmaWxlX25hbWVcIikpXG4gICAgICAoSnNvblV0aWwudG9fb3B0aW9uIChKc29uVXRpbC50b19zdHJpbmcgfmVycm9yX21zZzpcIm1lc3NhZ2VcIikpXG4gICAgICBleG5fb2ZfanNvbiBqc29uXG4gIGluXG4gIHsgZmlsZV9uYW1lID0gYTsgbWVzc2FnZSA9IGI7IGFsYXJtID0gYyB9XG5cbmFuZCBjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24ganNvbiA9XG4gIGxldCBhLCBiID1cbiAgICBKc29uVXRpbC50b19wYWlyIH5sYWIxOlwidW5jYXVnaHRfZXhjZXB0aW9uXCIgfmxhYjI6XCJjYWxsaW5nX3N0YWNrXCJcbiAgICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbl9vZl9qc29uXG4gICAgICAoSnNvblV0aWwudG9fbGlzdCB+ZXJyb3JfbXNnOlwiY2FsbGluZyBzdGFja1wiXG4gICAgICAgICAoSnNvblV0aWwudG9fc3RyaW5nIH5lcnJvcl9tc2c6XCJzdGFjayBlbHRcIikpXG4gICAgICBqc29uXG4gIGluXG4gIHsgdW5jYXVnaHRfZXhjZXB0aW9uID0gYTsgY2FsbGluZ19zdGFjayA9IGIgfVxuXG5sZXQgYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uID9maWxlX25hbWUgP21lc3NhZ2UgZXhuID1cbiAgeyBmaWxlX25hbWU7IG1lc3NhZ2U7IGFsYXJtID0gZXhuIH1cblxubGV0IGJ1aWxkX2NhdWdodF9leGNlcHRpb24gZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIHN0YWNrID1cbiAge1xuICAgIHVuY2F1Z2h0X2V4Y2VwdGlvbiA9IGJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4bjtcbiAgICBjYWxsaW5nX3N0YWNrID0gc3RhY2s7XG4gIH1cblxubGV0IHJhaXNlX2V4Y2VwdGlvbiBmaWxlX25hbWUgX2tleSBtZXNzYWdlIGV4biA9XG4gIHJhaXNlIChVbmNhdWdodF9leGNlcHRpb24geyBmaWxlX25hbWU7IG1lc3NhZ2U7IGFsYXJtID0gZXhuIH0pXG5cbmxldCByZWMgcHBfZXhjZXB0aW9uIGYgPSBmdW5jdGlvblxuICB8IEV4aXQgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiRXhpdFwiXG4gIHwgTm90X2ZvdW5kIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIk5vdF9mb3VuZFwiXG4gIHwgQXJnLkJhZCB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJBcmcuQmFkKCVzKVwiIHhcbiAgfCBTeXMuQnJlYWsgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3lzLkJyZWFrXCJcbiAgfCBTdGFjay5FbXB0eSAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdGFjay5FbXB0eVwiXG4gIHwgUXVldWUuRW1wdHkgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiUXVldWUuRW1wdHlcIlxuICB8IFN0cmVhbS5FcnJvciB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJTdHJlYW0uRXJyb3IgJXNcIiB4XG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiU3RyZWFtLkZhaWx1cmVcIlxuICB8IEFyZy5IZWxwIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkFyZy5IZWxwKCVzKVwiIHhcbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIlBhcnNpbmcuUGFyc2VfZXJyb3JcIlxuICB8IFNjYW5mLlNjYW5fZmFpbHVyZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJTY2FuZi5TY2FuLmZhaWx1cmUoJXMpXCIgeFxuICB8IExhenkuVW5kZWZpbmVkIC0+IEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZiBcIkxhenkuVW5kZWZpbmVkXCJcbiAgfCBVbml4TGFiZWxzLlVuaXhfZXJyb3IgKGVyLCB4LCB5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbml4TGFiZWxzLlVuaXhfZXJyb3IoJXMsJXMsJXMpXCJcbiAgICAgIChVbml4TGFiZWxzLmVycm9yX21lc3NhZ2UgZXIpXG4gICAgICB4IHlcbiAgfCBVbml4LlVuaXhfZXJyb3IgKGVyLCB4LCB5KSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJVbml4LlVuaXhfZXJyb3IoJXMsJXMsJXMpXCIgKFVuaXguZXJyb3JfbWVzc2FnZSBlcikgeCB5XG4gIHwgRmFpbHVyZSB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJGYWlsdXJlKCVzKVwiIHhcbiAgfCBTdGFja19vdmVyZmxvdyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCJTdGFja19vdmVyZmxvd1wiXG4gIHwgVW5jYXVnaHRfZXhjZXB0aW9uIHggLT5cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiVW5jYXVnaHRfZXhjZXB0aW9uKCVhKVwiIHBwX3VuY2F1Z2h0IHhcbiAgfCBDYXVnaHRfZXhjZXB0aW9uIHggLT4gRm9ybWF0LmZwcmludGYgZiBcIkNhdWdodF9leGNlcHRpb24oJWEpXCIgcHBfY2F1Z2h0IHhcbiAgfCBleGMgLT4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIChQcmludGV4Yy50b19zdHJpbmcgZXhjKVxuXG5hbmQgcHBfdW5jYXVnaHQgZiB4ID1cbiAgbGV0IHdpdGhfc3BhY2UgPSBmYWxzZSBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8aD4lYSVhZXhjZXB0aW9uOkAgJWFAXVwiXG4gICAgKFBwLm9wdGlvbiB+d2l0aF9zcGFjZSAoZnVuIGYgeCAtPiBGb3JtYXQuZnByaW50ZiBmIFwiZmlsZV9uYW1lOiAlczsgXCIgeCkpXG4gICAgeC5maWxlX25hbWVcbiAgICAoUHAub3B0aW9uIH53aXRoX3NwYWNlIChmdW4gZiB4IC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJtZXNzYWdlOiAlczsgXCIgeCkpXG4gICAgeC5tZXNzYWdlIHBwX2V4Y2VwdGlvbiB4LmFsYXJtXG5cbmFuZCBwcF9jYXVnaHQgZiB4ID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbPGg+Y2FsbGluZ19zdGFjazogJWE7ICVhQF1cIlxuICAgIChQcC5saXN0IFBwLnNwYWNlIEZvcm1hdC5wcF9wcmludF9zdHJpbmcpXG4gICAgeC5jYWxsaW5nX3N0YWNrIHBwX3VuY2F1Z2h0IHgudW5jYXVnaHRfZXhjZXB0aW9uXG5cbmxldCByZWMgc3RyaW5nbGlzdF9vZl9leGNlcHRpb24geCBzdGFjayA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEV4aXQgLT4gXCJFeGl0XCIgOjogc3RhY2tcbiAgfCBOb3RfZm91bmQgLT4gXCJOb3RfZm91bmRcIiA6OiBzdGFja1xuICB8IEFyZy5CYWQgeCAtPiBcIkFyZy5CYWQoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IFN5cy5CcmVhayAtPiBcIlN5cy5CcmVha1wiIDo6IHN0YWNrXG4gIHwgU3RhY2suRW1wdHkgLT4gXCJTdGFjay5FbXB0eVwiIDo6IHN0YWNrXG4gIHwgUXVldWUuRW1wdHkgLT4gXCJRdWV1ZS5FbXB0eVwiIDo6IHN0YWNrXG4gIHwgU3RyZWFtLkVycm9yIHggLT4gXCJTdHJlYW0uRXJyb3JcIiA6OiB4IDo6IHN0YWNrXG4gIHwgU3RyZWFtLkZhaWx1cmUgLT4gXCJTdHJlYW0uRmFpbHVyZVwiIDo6IHN0YWNrXG4gIHwgQXJnLkhlbHAgeCAtPiBcIkFyZy5IZWxwKFwiIDo6IHggOjogXCIpXCIgOjogc3RhY2tcbiAgfCBQYXJzaW5nLlBhcnNlX2Vycm9yIC0+IFwiUGFyc2luZy5QYXJzZV9lcnJvclwiIDo6IHN0YWNrXG4gIHwgU2NhbmYuU2Nhbl9mYWlsdXJlIHggLT4gXCJTY2FuZi5TY2FuLmZhaWx1cmUoXCIgOjogeCA6OiBcIilcIiA6OiBzdGFja1xuICB8IExhenkuVW5kZWZpbmVkIC0+IFwiTGF6eS5VbmRlZmluZWRcIiA6OiBzdGFja1xuICB8IFVuaXhMYWJlbHMuVW5peF9lcnJvciBfIC0+IFwiVW5peExhYmVscy5Vbml4X2Vycm9yXCIgOjogc3RhY2tcbiAgfCBVbml4LlVuaXhfZXJyb3IgXyAtPiBcIlVuaXguVW5peC5lcnJvclwiIDo6IHN0YWNrXG4gIHwgRmFpbHVyZSB4IC0+IFwiRmFpbHVyZShcIiA6OiB4IDo6IFwiKVwiIDo6IHN0YWNrXG4gIHwgU3RhY2tfb3ZlcmZsb3cgLT4gXCJTdGFja19vdmVyZmxvd1wiIDo6IHN0YWNrXG4gIHwgQ2F1Z2h0X2V4Y2VwdGlvbiB4IC0+XG4gICAgXCJDYXVnaHRfZXhjZXB0aW9uKFwiIDo6IHN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IHggKFwiKVwiIDo6IHN0YWNrKVxuICB8IFVuY2F1Z2h0X2V4Y2VwdGlvbiB4IC0+XG4gICAgXCJVbmNhdWdodF9leGNlcHRpb24oXCIgOjogc3RyaW5nbGlzdF9vZl91bmNhdWdodCB4IChcIilcIiA6OiBzdGFjaylcbiAgfCBfIC0+IFwiVW5rbm93blwiIDo6IHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0IHggc3RhY2sgPVxuICAobWF0Y2ggeC5maWxlX25hbWUgd2l0aFxuICB8IE5vbmUgLT4gXCJcIlxuICB8IFNvbWUgZmlsZV9uYW1lIC0+IFwiZmlsZV9uYW1lOiBcIiBeIGZpbGVfbmFtZSBeIFwiOyBcIilcbiAgOjogKG1hdGNoIHgubWVzc2FnZSB3aXRoXG4gICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgIHwgU29tZSBtZXNzYWdlIC0+IFwibWVzc2FnZTogXCIgXiBtZXNzYWdlIF4gXCI7IFwiKVxuICA6OiBcImV4Y2VwdGlvbjpcIlxuICA6OiBzdHJpbmdsaXN0X29mX2V4Y2VwdGlvbiB4LmFsYXJtIHN0YWNrXG5cbmFuZCBzdHJpbmdsaXN0X29mX2NhdWdodCB4IHN0YWNrID1cbiAgXCJjYWxsaW5nX3N0YWNrOiBcIlxuICA6OiAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBzb2wgc3RyaW5nIC0+IHN0cmluZyA6OiBcIiwgXCIgOjogc29sKVxuICAgICAgICAoXCI7IFwiIDo6IHN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgeC51bmNhdWdodF9leGNlcHRpb24gKFwiOyBcIiA6OiBzdGFjaykpKVxuICAgICAgIHguY2FsbGluZ19zdGFja1xuXG5hbmQgc3RyaW5nbGlzdF9vZl91bmNhdWdodF9saWdodCB4IHN0YWNrID1cbiAgKG1hdGNoIHguZmlsZV9uYW1lIHdpdGhcbiAgfCBOb25lIC0+IFwiXCJcbiAgfCBTb21lIGZpbGVfbmFtZSAtPiBcImZpbGVfbmFtZTogXCIgXiBmaWxlX25hbWUgXiBcIjsgXCIpXG4gIDo6IChtYXRjaCB4Lm1lc3NhZ2Ugd2l0aFxuICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICB8IFNvbWUgbWVzc2FnZSAtPiBcIm1lc3NhZ2U6IFwiIF4gbWVzc2FnZSBeIFwiOyBcIilcbiAgOjogXCJleGNlcHRpb246XCJcbiAgOjogc3RyaW5nbGlzdF9vZl9leGNlcHRpb24geC5hbGFybSBzdGFja1xuXG5hbmQgc3RyaW5nbGlzdF9vZl9jYXVnaHRfbGlnaHQgeCBzdGFjayA9XG4gIFwiY2FsbGluZ19zdGFjazogXCJcbiAgOjogKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gc29sIHN0cmluZyAtPiBzdHJpbmcgOjogXCIsIFwiIDo6IHNvbClcbiAgICAgICAgKFwiOyBcIlxuICAgICAgICA6OiBzdHJpbmdsaXN0X29mX3VuY2F1Z2h0X2xpZ2h0IHgudW5jYXVnaHRfZXhjZXB0aW9uIChcIjsgXCIgOjogc3RhY2spKSlcbiAgICAgICB4LmNhbGxpbmdfc3RhY2tcblxudHlwZSBtZXRob2RfaGFuZGxlciA9IHtcbiAgbWhfY2F1Z2h0X2Vycm9yX2xpc3Q6IGNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk6IGNhdWdodF9leGNlcHRpb24gbGlzdDtcbiAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdDogdW5jYXVnaHRfZXhjZXB0aW9uIGxpc3Q7XG4gIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk6IHVuY2F1Z2h0X2V4Y2VwdGlvbiBsaXN0O1xufVxuXG5sZXQgdG9fanNvbiBtZXRob2RfaGFuZGxlciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJjYXVnaHRcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCBjYXVnaHRfZXhjZXB0aW9uX3RvX2pzb25cbiAgICAgICAgICBtZXRob2RfaGFuZGxlci5taF9jYXVnaHRfZXJyb3JfbGlzdCApO1xuICAgICAgKCBcImNhdWdodFwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IGNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpICk7XG4gICAgICAoIFwidW5jYXVnaHRcIixcbiAgICAgICAgSnNvblV0aWwub2ZfbGlzdCB1bmNhdWdodF9leGNlcHRpb25fdG9fanNvblxuICAgICAgICAgIG1ldGhvZF9oYW5kbGVyLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgKTtcbiAgICAgICggXCJ1bmNhdWdodF90b191aVwiLFxuICAgICAgICBKc29uVXRpbC5vZl9saXN0IHVuY2F1Z2h0X2V4Y2VwdGlvbl90b19qc29uXG4gICAgICAgICAgbWV0aG9kX2hhbmRsZXIubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aSApO1xuICAgIF1cblxubGV0IG9mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICBsZXQgY2F1Z2h0ID1cbiAgICAgICAgIChKc29uVXRpbC50b19saXN0IGNhdWdodF9leGNlcHRpb25fb2ZfanNvbikgKExpc3QuYXNzb2MgXCJjYXVnaHRcIiBsKVxuICAgICAgIGluXG4gICAgICAgbGV0IGNhdWdodF90b191aSA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCBjYXVnaHRfZXhjZXB0aW9uX29mX2pzb24pXG4gICAgICAgICAgIChMaXN0LmFzc29jIFwiY2F1Z2h0X3RvX3VpXCIgbClcbiAgICAgICBpblxuICAgICAgIGxldCB1bmNhdWdodCA9XG4gICAgICAgICAoSnNvblV0aWwudG9fbGlzdCB1bmNhdWdodF9leGNlcHRpb25fb2ZfanNvbikgKExpc3QuYXNzb2MgXCJ1bmNhdWdodFwiIGwpXG4gICAgICAgaW5cbiAgICAgICBsZXQgdW5jYXVnaHRfdG9fdWkgPVxuICAgICAgICAgKEpzb25VdGlsLnRvX2xpc3QgdW5jYXVnaHRfZXhjZXB0aW9uX29mX2pzb24pXG4gICAgICAgICAgIChMaXN0LmFzc29jIFwidW5jYXVnaHRfdG9fdWlcIiBsKVxuICAgICAgIGluXG4gICAgICAge1xuICAgICAgICAgbWhfY2F1Z2h0X2Vycm9yX2xpc3QgPSBjYXVnaHQ7XG4gICAgICAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdF90b191aSA9IGNhdWdodF90b191aTtcbiAgICAgICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgPSB1bmNhdWdodDtcbiAgICAgICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSB1bmNhdWdodF90b191aTtcbiAgICAgICB9XG4gICAgIHdpdGggXyAtPlxuICAgICAgIHJhaXNlXG4gICAgICAgICAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoSnNvblV0aWwuYnVpbGRfbXNnIFwiZXJyb3IgaGFuZGxlclwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChKc29uVXRpbC5idWlsZF9tc2cgXCJlcnJvciBoYW5kbGVyXCIsIHgpKVxuXG5sZXQgZW1wdHlfZXJyb3JfaGFuZGxlciA9XG4gIHtcbiAgICBtaF9jYXVnaHRfZXJyb3JfbGlzdCA9IFtdO1xuICAgIG1oX2NhdWdodF9lcnJvcl9saXN0X3RvX3VpID0gW107XG4gICAgbWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IFtdO1xuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWkgPSBbXTtcbiAgfVxuXG5sZXQgYWRkX3VuY2F1Z2h0X2Vycm9yX3RvX3VpIHVuY2F1Z2h0IGVycm9yID1cbiAge1xuICAgIGVycm9yIHdpdGhcbiAgICBtaF91bmNhdWdodF9lcnJvcl9saXN0X3RvX3VpID1cbiAgICAgIHVuY2F1Z2h0IDo6IGVycm9yLm1oX3VuY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWk7XG4gIH1cblxubGV0IGFkZF91bmNhdWdodF9lcnJvcl90b19vdGhlcnMgdW5jYXVnaHQgZXJyb3IgPVxuICB7XG4gICAgZXJyb3Igd2l0aFxuICAgIG1oX3VuY2F1Z2h0X2Vycm9yX2xpc3QgPSB1bmNhdWdodCA6OiBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0O1xuICB9XG5cbmxldCBhZGRfdW5jYXVnaHRfZXJyb3IgP3RvX3VpIHVuY2F1Z2h0IGVycm9yID1cbiAgbGV0IGVycm9yID1cbiAgICBtYXRjaCB0b191aSB3aXRoXG4gICAgfCBTb21lIGZhbHNlIHwgTm9uZSAtPiBlcnJvclxuICAgIHwgU29tZSB0cnVlIC0+IGFkZF91bmNhdWdodF9lcnJvcl90b191aSB1bmNhdWdodCBlcnJvclxuICBpblxuICBhZGRfdW5jYXVnaHRfZXJyb3JfdG9fb3RoZXJzIHVuY2F1Z2h0IGVycm9yXG5cbmxldCBnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGVycm9yID0gZXJyb3IubWhfY2F1Z2h0X2Vycm9yX2xpc3RcbmxldCBnZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIGVycm9yID0gZXJyb3IubWhfY2F1Z2h0X2Vycm9yX2xpc3RfdG9fdWlcbmxldCBnZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3QgZXJyb3IgPSBlcnJvci5taF91bmNhdWdodF9lcnJvcl9saXN0XG5sZXQgZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIGVycm9yID0gZXJyb3IubWhfdW5jYXVnaHRfZXJyb3JfbGlzdF90b191aVxuXG5sZXQgaXNfZW1wdHlfZXJyb3JfaGFuZGxlciB4ID1cbiAgeC5taF9jYXVnaHRfZXJyb3JfbGlzdCA9IFtdICYmIHgubWhfdW5jYXVnaHRfZXJyb3JfbGlzdCA9IFtdXG4iLCIoKipcbiAgKiBjb25maWcubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uL0FudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqXG4gICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPE5vdiAyOCAyMDE4PlxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnNcbiAgKiByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNVxuICAqIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxuKCoqIGlmIHVuc2FmZSA9IHRydWUsIHRoZW4gd2hlbmV2ZXIgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCwgYSBkZWZhdWx0IHZhbHVlIGlzIG91dHB1dCwgYW5kIG5vIGV4Y2VwdGlvbiBpcyByYWlzZWQqKVxuXG5sZXQgZGF0ZSA9IFwiPDIwMTUuMDEuMjNcIlxubGV0IHZlcnNpb24gPSBcIjQuMDFcIlxubGV0IG91dHB1dF9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9jbV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9pbV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IG91dHB1dF9sb2NhbF90cmFjZV9kaXJlY3RvcnkgPSByZWYgXCJvdXRwdXRcIlxubGV0IHVuc2FmZSA9IHJlZiB0cnVlXG5sZXQgdHJhY2UgPSByZWYgZmFsc2VcbmxldCBzeW50YXhfdmVyc2lvbiA9IHJlZiBcIlY0XCJcbmxldCBkdW1wX2Vycm9yX2FzX3Nvb25fYXNfdGhleV9vY2N1ciA9IHJlZiBmYWxzZVxubGV0IGxvZyA9IHJlZiBzdGRvdXRcbmxldCBmb3JtYXR0ZXIgPSByZWYgRm9ybWF0LnN0ZF9mb3JtYXR0ZXJcbmxldCBmaWxlID0gcmVmIChOb25lIDogc3RyaW5nIG9wdGlvbilcbmxldCBsaW5rX21vZGUgPSByZWYgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQm91bmRfaW5kaWNlc1xuXG4oKiogaW5mbHVlbmNlIG1hcCAqKVxubGV0IGRvX2luZmx1ZW5jZV9tYXAgPSByZWYgdHJ1ZVxuXG5sZXQgcnVsZV9zaGFwZSA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWN0XG5cbmxldCBydWxlX2NvbG9yID1cbiAgcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkxpZ2h0U2t5Qmx1ZSAoKlwiIzg3Y2VlYlwiICgqIGxpZ2h0IHNreSBibHVlICopKilcblxubGV0IHZhcmlhYmxlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcblxubGV0IHZhcmlhYmxlX2NvbG9yID1cbiAgcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlBhbGVHcmVlbiAoKiBcIiM5OGZiOThcIiAoKlBhbGUgZ3JlZW4qKSopXG5cbmxldCBjZW50ZXJfY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkXG5sZXQgd2FrZV91cF9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbiAoKlwiIzAwZmYwMFwiICgqR3JlZW4gKikqKVxubGV0IGluaGliaXRpb25fY29sb3IgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVkICgqXCIjZmYwMDAwXCIgKCpyZWQqKSopXG5sZXQgd2FrZV91cF9hcnJvdyA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5Ob3JtYWxcbmxldCBpbmhpYml0aW9uX2Fycm93ID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLlRlZVxubGV0IGluZmx1ZW5jZV9tYXBfZmlsZSA9IHJlZiBcImluZmx1ZW5jZVwiXG5sZXQgaW5mbHVlbmNlX21hcF9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IHByb21wdF9mdWxsX3Zhcl9kZWYgPSByZWYgZmFsc2VcbmxldCBwcm9tcHRfZnVsbF9ydWxlX2RlZiA9IHJlZiBmYWxzZVxuXG5sZXQgbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdCA9XG4gIHJlZiBbICdcXFwiJywgWyAnXFxcXCc7ICdcXFwiJyBdOyAnXFxcXCcsIFsgJ1xcXFwnOyAnXFxcXCcgXSBdXG5cbigqKiBjb250YWN0IG1hcCopXG5sZXQgZG9fY29udGFjdF9tYXAgPSByZWYgdHJ1ZVxuXG5sZXQgZG9fc2NjID0gcmVmIGZhbHNlXG5sZXQgcHVyZV9jb250YWN0ID0gcmVmIGZhbHNlXG5sZXQgY29udGFjdF9tYXBfZmlsZSA9IHJlZiBcImNvbnRhY3RcIlxubGV0IGNvbnRhY3RfbWFwX2Zvcm1hdCA9IHJlZiBcIkRPVFwiXG5sZXQgYmluZGluZ19zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkNpcmNsZVxubGV0IGJpbmRpbmdfc2l0ZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5ZZWxsb3dcbmxldCBpbnRlcm5hbF9zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkVsbGlwc2VcbmxldCBpbnRlcm5hbF9zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZWVuXG5sZXQgY291bnRlcl9zaXRlX3NoYXBlID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkhvdXNlXG5sZXQgY291bnRlcl9zaXRlX2NvbG9yID0gcmVmIEdyYXBoX2xvZ2dlcnNfc2lnLkdyZXlcbmxldCBhZ2VudF9zaGFwZV9hcnJheSA9IHJlZiAoW3x8XSA6IEdyYXBoX2xvZ2dlcnNfc2lnLnNoYXBlIG9wdGlvbiBhcnJheSlcbmxldCBhZ2VudF9jb2xvcl9hcnJheSA9IHJlZiAoW3x8XSA6IEdyYXBoX2xvZ2dlcnNfc2lnLmNvbG9yIG9wdGlvbiBhcnJheSlcbmxldCBhZ2VudF9zaGFwZV9kZWYgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuUmVjdFxubGV0IGFnZW50X2NvbG9yX2RlZiA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5CbHVlXG5sZXQgbGlua19jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5CbGFja1xubGV0IGluZmx1ZW5jZV9jb2xvciA9IHJlZiBHcmFwaF9sb2dnZXJzX3NpZy5SZWRcbmxldCBpbmZsdWVuY2VfYXJyb3cgPSByZWYgR3JhcGhfbG9nZ2Vyc19zaWcuTm9ybWFsXG5cbigqKmZsb3cgb2YgaW5mb3JtYXRpb246IGludGVybmFsOyBleHRlcm5hbCBmbG93KilcbmxldCBkb19PREVfZmxvd19vZl9pbmZvcm1hdGlvbiA9IHJlZiBmYWxzZVxuXG5sZXQgZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uID0gcmVmIGZhbHNlXG5cbigqY292ZXJpbmcgY2xhc3NlczogdGhpcyBwYXJhbWV0ZXIgZG9lcyBub3QgbWF0dGVyIGlmIGl0IGlzIHRydWUvZmFsc2UqKVxubGV0IGRvX3NpdGVfZGVwZW5kZW5jaWVzID0gcmVmIGZhbHNlXG5cbigqc2V0IHRvIHRydWUgaWYgb25lIHdhbnRzIHRvIHByaW50IGNvdmVyaW5nIGNsYXNzZXMqKVxubGV0IGR1bXBfc2l0ZV9kZXBlbmRlbmNpZXMgPSByZWYgZmFsc2VcblxuKCpSRU1BUks6IG9uZSBuZWVkcyB0byBzZXQgZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzIHRvIHRydWUgZmlyc3QgdG8gYmVcbiAgYWJsZSB0byBhY3RpdmUgZGlmZmVyZW50IG91dHB1dCAqKVxubGV0IGRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcyA9IHJlZiB0cnVlXG5sZXQgdmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgPSByZWYgXCJMb3dcIlxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IHJlZiB0cnVlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfY292ZXJpbmdfY2xhc3NlcyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYyA9IHJlZiBmYWxzZVxubGV0IGR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPSByZWYgZmFsc2VcbmxldCBkdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmID0gcmVmIGZhbHNlXG5sZXQgZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPSByZWYgZmFsc2VcbmxldCBoaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9IHJlZiB0cnVlXG5sZXQgaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9IHJlZiB0cnVlXG5sZXQgc21hc2hfcmVsYXRpb25zID0gcmVmIHRydWVcbmxldCB1c2VfbmF0dXJhbF9sYW5ndWFnZSA9IHJlZiBcImthcHBhXCJcbmxldCBjb21wdXRlX2xvY2FsX3RyYWNlcyA9IHJlZiBmYWxzZVxubGV0IHNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPSByZWYgdHJ1ZVxubGV0IHVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IHJlZiBmYWxzZVxubGV0IGFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9IHJlZiBmYWxzZVxubGV0IGFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9IHJlZiBmYWxzZVxubGV0IGRvX25vdF9jb21wcmVzc190cml2aWFsX2xvc2FuZ2VzID0gcmVmIGZhbHNlXG5sZXQgbG9jYWxfdHJhY2VfcHJlZml4ID0gcmVmIFwiQWdlbnRfdHJhY2VfXCJcbmxldCBsb2NhbF90cmFjZV9mb3JtYXQgPSByZWYgXCJET1RcIlxubGV0IGNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxuXG4oKiogYWNjdXJhY3kgKilcblxubGV0IHdpdGhfdmlld3NfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IHdpdGhfZHluYW1pY19jb250YWN0X21hcCA9IHJlZiBcImR5bmFtaWNcIlxubGV0IHdpdGhfY291bnRlcnNfYW5hbHlzaXMgPSByZWYgdHJ1ZVxubGV0IGNvdW50ZXJfYW5hbHlzaXNfZG9tYWluID0gcmVmIFwibWlcIlxubGV0IHZpZXdfYWNjdXJhY3lfbGV2ZWwgPSByZWYgXCJIaWdoXCJcbmxldCBpbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiRGlyZWN0XCJcbmxldCBjb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbCA9IHJlZiBcIkxvd1wiXG5sZXQgc2NjX2FjY3VyYWN5X2xldmVsID0gcmVmIFwiSGlnaFwiXG5cbigqIFN5bW1ldHJpZXMgKilcbmxldCBkb19zeW1tZXRyaWVzID0gcmVmIGZhbHNlXG5sZXQgcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiYmlvY2hlbWlzdFwiXG5cbigqIEJhY2tkb29ycyAtIHN0YXRzIGZvciBiZW5jaG1hcmtpbmcgKilcbmxldCBwcmludF9lZmZpY2llbmN5ID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3NjYyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHMgPSByZWYgZmFsc2VcbmxldCBiYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9ydWxlcyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID0gcmVmIGZhbHNlXG5sZXQgYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX3RpbWluZyA9IHJlZiBmYWxzZVxubGV0IGJhY2tkb29yX2ZpbGUgPSByZWYgXCJiZW5jaG1hcmsudGV4XCJcbmxldCBiYWNrZG9vcl9kaXJlY3RvcnkgPSByZWYgXCJcIlxuIiwiKCoqXG4gICogcGFyYW1ldGVycy5tbFxuICAqIG9wZW5rYXBwYVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24vQW50aXF1ZSwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMjAxMCwgdGhlIDE5dGggb2YgRGVjZW1iZXJcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEphbiAwOCAyMDIwPlxuICAqICpcbiAgKiBDb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgd2hpY2ggYXJlIHBhc3NlZCB0aHJvdWdoIGZ1bmN0aW9ucyBjb21wdXRhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTAsMjAxMSwyMDEyLDIwMTMsMjAxNCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcblxubGV0IGFkZF9leHRlbnNpb25faWZfbm90X2FscmVhZHlfbWVudGlvbmVkIGEgZXh0ID1cbiAgbGV0IHNpemVfYSA9IFN0cmluZy5sZW5ndGggYSBpblxuICBsZXQgc2l6ZV9leHQgPSBTdHJpbmcubGVuZ3RoIGV4dCBpblxuICB0cnlcbiAgICBpZiBzaXplX2EgPCBzaXplX2V4dCB8fCBTdHJpbmcuc3ViIGEgKHNpemVfYSAtIHNpemVfZXh0KSBzaXplX2V4dCA9IGV4dCB0aGVuXG4gICAgICBhXG4gICAgZWxzZVxuICAgICAgYSBeIGV4dFxuICB3aXRoIF8gLT4gYSBeIGV4dFxuXG5sZXQgb3Blbl9vdXQgYSBleHQgPVxuICAoKiBpdCB3b3VsZCBiZSBlYXNpZXIgd2l0aCBPQ2FtbCAzLjA0ICopXG4gIGxldCBhID0gYWRkX2V4dGVuc2lvbl9pZl9ub3RfYWxyZWFkeV9tZW50aW9uZWQgYSBleHQgaW5cbiAgbGV0IGQgPSBGaWxlbmFtZS5kaXJuYW1lIGEgaW5cbiAgbGV0ICgpID1cbiAgICB0cnlcbiAgICAgIGlmIG5vdCAoU3lzLmlzX2RpcmVjdG9yeSBkKSB0aGVuIChcbiAgICAgICAgRm9ybWF0LmVwcmludGYgXCInJXMnIGlzIG5vdCBhIGRpcmVjdG9yeUAuXCIgZDtcbiAgICAgICAgZXhpdCAxXG4gICAgICApXG4gICAgd2l0aCBTeXNfZXJyb3IgXyAtPiBLYXBwYV9maWxlcy5ta19kaXJfciBkXG4gIGluXG4gIG9wZW5fb3V0IGFcblxubGV0IG9wZW5fYXBwZW5kIGEgZXh0ID1cbiAgbGV0IGEgPSBhZGRfZXh0ZW5zaW9uX2lmX25vdF9hbHJlYWR5X21lbnRpb25lZCBhIGV4dCBpblxuICBsZXQgZCA9IEZpbGVuYW1lLmRpcm5hbWUgYSBpblxuICBsZXQgKCkgPVxuICAgIHRyeVxuICAgICAgaWYgbm90IChTeXMuaXNfZGlyZWN0b3J5IGQpIHRoZW4gKFxuICAgICAgICBGb3JtYXQuZXByaW50ZiBcIiclcycgaXMgbm90IGEgZGlyZWN0b3J5QC5cIiBkO1xuICAgICAgICBleGl0IDFcbiAgICAgIClcbiAgICB3aXRoIFN5c19lcnJvciBfIC0+IEthcHBhX2ZpbGVzLm1rX2Rpcl9yIGRcbiAgaW5cbiAgdHJ5IG9wZW5fb3V0X2dlbiBbIE9wZW5fYXBwZW5kIF0gNTExIGEgd2l0aCBfIC0+IG9wZW5fb3V0IGEgZXh0XG5cbmxldCBjb21wb3NlIGYgZyB4ID0gZiAoZyB4KVxuXG5sZXQgZXh0X2Zvcm1hdCB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRE9UIC0+IFwiLmRvdFwiXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSFRNTCAtPiBcIi5odG1sXCJcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU0gLT4gXCIuZGltLmpzb25cIlxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJIC0+IFwiLmdleGZcIlxuXG5sZXQgZmV0Y2hfbGV2ZWxfZ2VuIHMgciA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhciB3aXRoXG4gIHwgXCJtdXRlXCIgfCBcIm5vbmVcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lXG4gIHwgXCJsb3dcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3dcbiAgfCBcIm1lZGl1bVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1lZGl1bVxuICB8IFwiaGlnaFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhpZ2hcbiAgfCBcImNvbXBsZXRlXCIgfCBcImZ1bGxcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsXG4gIHwgeCAtPlxuICAgIGxldCAoKSA9IFByaW50Zi5lcHJpbnRmIFwiJXM6ICVzIGlzIG5vdCBhIHZhbGlkIGxldmVsICEhIVwiIHMgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGZldGNoX2dyYXBoX2Zvcm1hdCBmID1cbiAgbWF0Y2ggVG9vbHMubG93ZXJjYXNlICFmIHdpdGhcbiAgfCBcImRvdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRPVFxuICB8IFwiaHRtbFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUxcbiAgfCBcImRpbVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkRJTVxuICB8IFwiZ2VwaGlcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5HRVBISVxuICB8IHggLT5cbiAgICBsZXQgKCkgPSBQcmludGYuZXByaW50ZiBcIiVzIGlzIG5vdCBhIHZhbGlkIGdyYXBoIGZvcm1hdCAhISFcIiB4IGluXG4gICAgcmFpc2UgRXhpdFxuXG5sZXQgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgciA9IGZldGNoX2xldmVsX2dlbiBcImFuIGFjY3VyYWN5XCIgclxubGV0IGZldGNoX3ZlcmJvc2l0eV9sZXZlbCByID0gZmV0Y2hfbGV2ZWxfZ2VuIFwiYSB2ZXJib3NpdHlcIiByXG5cbmxldCBmZXRjaF9yYXRlX2NvbnZlbnRpb24gZiA9XG4gIG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhZiB3aXRoXG4gIHwgXCJrYXNpbVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vX2NvcnJlY3Rpb25cbiAgfCBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5EaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1xuICB8IFwiYmlvY2hlbWlzdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkJpb2NoZW1pc3RcbiAgfCB4IC0+XG4gICAgbGV0ICgpID0gUHJpbnRmLmVwcmludGYgXCIlcyBpcyBub3QgYSB2YWxpZCByYXRlIGNvbnZlbnRpb24gISEhXCIgeCBpblxuICAgIHJhaXNlIEV4aXRcblxubGV0IGdldF9zeW50YXhfdmVyc2lvbiAoKSA9XG4gIG1hdGNoICFDb25maWcuc3ludGF4X3ZlcnNpb24gd2l0aFxuICB8IFwiNFwiIHwgXCJ2NFwiIHwgXCJWNFwiIC0+IEFzdC5WNFxuICB8IFwiM1wiIHwgXCJ2M1wiIHwgXCJWM1wiIC0+IEFzdC5WM1xuICB8IF8gLT4gZmFpbHdpdGggXCJTeW50YXggdmVyc2lvbiBzaG91bGQgYmUgZWl0aGVyIFYzIG9yIFY0XCJcblxubGV0IGdldF9zeW1ib2xzICgpID1cbiAgbWF0Y2ggZ2V0X3N5bnRheF92ZXJzaW9uICgpIHdpdGhcbiAgfCBBc3QuVjMgLT4gU3ltYm9sX3RhYmxlLnN5bWJvbF90YWJsZV9WM1xuICB8IEFzdC5WNCAtPiBTeW1ib2xfdGFibGUuc3ltYm9sX3RhYmxlX1Y0XG5cbmxldCBnZXRfaW5mbHVlbmNlX21hcCAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9mb3JtYXQgPVxuICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5pbmZsdWVuY2VfbWFwX2Zvcm1hdDtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9maWxlID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLmluZmx1ZW5jZV9tYXBfZmlsZSB3aXRoXG4gICAgICB8IFwiXCIgLT4gTm9uZVxuICAgICAgfCB4IC0+IFNvbWUgeCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW1fZGlyZWN0b3J5ID1cbiAgICAgIChtYXRjaCAhQ29uZmlnLm91dHB1dF9pbV9kaXJlY3Rvcnkgd2l0aFxuICAgICAgfCBcIlwiIC0+IFNvbWUgXCJcIlxuICAgICAgfCB4IC0+IFNvbWUgKHggXiBcIi9cIikpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfc2hhcGUgPSAhQ29uZmlnLnJ1bGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9jb2xvciA9ICFDb25maWcucnVsZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9zaGFwZSA9ICFDb25maWcudmFyaWFibGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmFyaWFibGVfY29sb3IgPSAhQ29uZmlnLnZhcmlhYmxlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLndha2VfdXBfY29sb3IgPSAhQ29uZmlnLndha2VfdXBfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5oaWJpdGlvbl9jb2xvciA9ICFDb25maWcuaW5oaWJpdGlvbl9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2Fycm93ID0gIUNvbmZpZy53YWtlX3VwX2Fycm93O1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmluaGliaXRpb25fYXJyb3cgPSAhQ29uZmlnLmluaGliaXRpb25fYXJyb3c7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfdmFyX2RlZiA9ICFDb25maWcucHJvbXB0X2Z1bGxfdmFyX2RlZjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF9ydWxlX2RlZiA9ICFDb25maWcucHJvbXB0X2Z1bGxfcnVsZV9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFrZV9sYWJlbHNfY29tcGF0aWJsZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAoYSwgbCkgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5hZGQgYSBsIG1hcClcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuQ2hhck1hcC5lbXB0eVxuICAgICAgICAhQ29uZmlnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGVfd2l0aF9kb3Q7XG4gIH1cblxubGV0IGdldF9jb250YWN0X21hcCAoKSA9XG4gIHtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9mb3JtYXQgPVxuICAgICAgZmV0Y2hfZ3JhcGhfZm9ybWF0IENvbmZpZy5jb250YWN0X21hcF9mb3JtYXQ7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZmlsZSA9XG4gICAgICAobWF0Y2ggIUNvbmZpZy5jb250YWN0X21hcF9maWxlIHdpdGhcbiAgICAgIHwgXCJcIiAtPiBOb25lXG4gICAgICB8IHggLT4gU29tZSB4KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2NtX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gU29tZSBcIlwiXG4gICAgICB8IHggLT4gU29tZSAoeCBeIFwiL1wiKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHVyZV9jb250YWN0ID0gIUNvbmZpZy5wdXJlX2NvbnRhY3Q7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX3NoYXBlID0gIUNvbmZpZy5iaW5kaW5nX3NpdGVfc2hhcGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX2NvbG9yID0gIUNvbmZpZy5iaW5kaW5nX3NpdGVfY29sb3I7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9zaGFwZSA9ICFDb25maWcuaW50ZXJuYWxfc2l0ZV9zaGFwZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbnRlcm5hbF9zaXRlX2NvbG9yID0gIUNvbmZpZy5pbnRlcm5hbF9zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9zaGFwZSA9ICFDb25maWcuY291bnRlcl9zaXRlX3NoYXBlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9jb2xvciA9ICFDb25maWcuY291bnRlcl9zaXRlX2NvbG9yO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X3NoYXBlX2FycmF5ID0gIUNvbmZpZy5hZ2VudF9zaGFwZV9hcnJheTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5hZ2VudF9jb2xvcl9hcnJheSA9ICFDb25maWcuYWdlbnRfY29sb3JfYXJyYXk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfZGVmID0gIUNvbmZpZy5hZ2VudF9zaGFwZV9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfZGVmID0gIUNvbmZpZy5hZ2VudF9jb2xvcl9kZWY7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubGlua19jb2xvciA9ICFDb25maWcubGlua19jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfY29sb3IgPSAhQ29uZmlnLmluZmx1ZW5jZV9jb2xvcjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfYXJyb3cgPSAhQ29uZmlnLmluZmx1ZW5jZV9hcnJvdztcbiAgfVxuXG5sZXQgcmVhY2hhYmlsaXR5X21hcF8wID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID0gZmFsc2U7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaGlkZV9vbmVfZF9yZWxhdGlvbnNfZnJvbV9jYXJ0ZXNpYW5fZGVjb21wb3NpdGlvbiA9XG4gICAgICBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXMgPSBmYWxzZTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pZ25vcmVfdHJpdmlhbF9sb3NhbmdlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlcyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9ucyA9IGZhbHNlO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgICAgIHRydWU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgPSBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlcyA9XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1Q7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4ID0gXCJBZ2VudF90cmFjZV9cIjtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnkgPVxuICAgICAgKG1hdGNoICFDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSB3aXRoXG4gICAgICB8IFwiXCIgLT4gXCJcIlxuICAgICAgfCB4IC0+IHggXiBcIi9cIik7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMSA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzAgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3Jlc3VsdCA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMiA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzEgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2l0ZXJhdGlvbiA9IHRydWU7XG4gIH1cblxubGV0IHJlYWNoYWJpbGl0eV9tYXBfMyA9XG4gIHtcbiAgICByZWFjaGFiaWxpdHlfbWFwXzIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPSB0cnVlO1xuICB9XG5cbmxldCByZWFjaGFiaWxpdHlfbWFwXzQgPVxuICB7XG4gICAgcmVhY2hhYmlsaXR5X21hcF8zIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bCA9IHRydWU7XG4gIH1cblxubGV0IGFkZF9kZWJ1Z2dpbmdfcGFyYW1ldGVyc190b19yZWFjaGFiaWxpdHlfbWFwIHJlYWNoYWJpbGl0eSA9XG4gIGxldCB0cmFjZSA9ICFDb25maWcudHJhY2UgaW5cbiAgbGV0IHJlYWNoYWJpbGl0eSA9XG4gICAge1xuICAgICAgcmVhY2hhYmlsaXR5IHdpdGhcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzID1cbiAgICAgICAgIUNvbmZpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICAgICAgICAhQ29uZmlnLmhpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb247XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zbWFzaF9yZWxhdGlvbnMgPSAhQ29uZmlnLnNtYXNoX3JlbGF0aW9ucztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlID1cbiAgICAgICAgKG1hdGNoICFDb25maWcudXNlX25hdHVyYWxfbGFuZ3VhZ2Ugd2l0aFxuICAgICAgICB8IFwicmF3XCIgfCBcIlJBV1wiIHwgXCJSYXdcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5SYXdcbiAgICAgICAgfCBcImthcHBhXCIgfCBcIktBUFBBXCIgfCBcIkthcHBhXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FwcGFcbiAgICAgICAgfCBcIkVuZ2xpc2hcIiB8IFwiRU5HTElTSFwiIHwgXCJlbmdsaXNoXCIgLT5cbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5OYXR1cmFsX2xhbmd1YWdlXG4gICAgICAgIHwgXyAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYSk7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgICFDb25maWcuY29tcHV0ZV9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPVxuICAgICAgICAhQ29uZmlnLmNvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9ucztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmlnbm9yZV90cml2aWFsX2xvc2FuZ2VzID1cbiAgICAgICAgIUNvbmZpZy5kb19ub3RfY29tcHJlc3NfdHJpdmlhbF9sb3NhbmdlcztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyA9XG4gICAgICAgICFDb25maWcuYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID1cbiAgICAgICAgIUNvbmZpZy5hZGRfc2luZ3VsYXJfbWljcm9zdGF0ZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzO1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzID1cbiAgICAgICAgIUNvbmZpZy51c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlcyA9XG4gICAgICAgIGZldGNoX2dyYXBoX2Zvcm1hdCBDb25maWcubG9jYWxfdHJhY2VfZm9ybWF0O1xuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudHJhY2VfcHJlZml4ID0gIUNvbmZpZy5sb2NhbF90cmFjZV9wcmVmaXg7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnkgPVxuICAgICAgICAobWF0Y2ggIUNvbmZpZy5vdXRwdXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5IHdpdGhcbiAgICAgICAgfCBcIlwiIC0+IFwiXCJcbiAgICAgICAgfCB4IC0+IHggXiBcIi9cIik7XG4gICAgfVxuICBpblxuICBpZiB0cmFjZSB0aGVuXG4gICAge1xuICAgICAgcmVhY2hhYmlsaXR5IHdpdGhcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2NvdmVyaW5nX2NsYXNzZXM7XG4gICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3N0YXRpYztcbiAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWMgPVxuICAgICAgICAhQ29uZmlnLmR1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWM7XG4gICAgfVxuICBlbHNlXG4gICAgcmVhY2hhYmlsaXR5XG5cbmxldCBnZXRfcmVhY2hhYmlsaXR5X21hcCAoKSA9XG4gIGFkZF9kZWJ1Z2dpbmdfcGFyYW1ldGVyc190b19yZWFjaGFiaWxpdHlfbWFwXG4gICAgKG1hdGNoXG4gICAgICAgZmV0Y2hfdmVyYm9zaXR5X2xldmVsIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpc1xuICAgICB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIC0+IHJlYWNoYWJpbGl0eV9tYXBfMFxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTG93IC0+IHJlYWNoYWJpbGl0eV9tYXBfMVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtIC0+IHJlYWNoYWJpbGl0eV9tYXBfMlxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaCAtPiByZWFjaGFiaWxpdHlfbWFwXzNcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkZ1bGwgLT4gcmVhY2hhYmlsaXR5X21hcF80KVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9wYXJhbWV0ZXJzICgpID1cbiAge1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdzID0gIUNvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNpdGVfYWNyb3NzX2JvbmRzID1cbiAgICAgICFDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbGxlbF9ib25kcyA9XG4gICAgICAhQ29uZmlnLndpdGhfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcnMgPSAhQ29uZmlnLndpdGhfY291bnRlcnNfYW5hbHlzaXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHluYW1pY19jb250YWN0X21hcCA9XG4gICAgICAobWF0Y2ggVG9vbHMubG93ZXJjYXNlICFDb25maWcud2l0aF9keW5hbWljX2NvbnRhY3RfbWFwIHdpdGhcbiAgICAgIHwgXCJkeW5hbWljXCIgLT4gdHJ1ZVxuICAgICAgfCBcInN0YXRpY1wiIC0+IGZhbHNlXG4gICAgICB8IF8gLT4gdHJ1ZSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY291bnRlcl9kb21haW4gPVxuICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLmNvdW50ZXJfYW5hbHlzaXNfZG9tYWluIHdpdGhcbiAgICAgIHwgXCJtaVwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk1pXG4gICAgICB8IFwib2N0YWdvblwiIHwgXCJvY3RcIiB8IFwib2N0b1wiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk9jdGFnb25zXG4gICAgICB8IFwiYWJzdHJhY3QtbXVsdGlzZXRcIiB8IFwiYW1cIiB8IFwiYWJzdHJhY3RfbXVsdGlzZXRcIiAtPlxuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5BYnN0cmFjdF9tdWx0aXNldFxuICAgICAgfCBcIm5vbi1yZWxhdGlvbmFsXCIgfCBcIm5yXCIgfCBcIm5vbi1yZWxcIiB8IFwibm9uX3JlbFwiIHwgXCJub25fcmVsYXRpb25hbFwiIC0+XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbl9yZWxhdGlvbmFsXG4gICAgICB8IF8gLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWkpO1xuICB9XG5cbmxldCBvcGVuX3Rhc2tzX3Byb2ZpbGluZyA9XG4gIGxldCBjYWNoZSA9IHJlZiBOb25lIGluXG4gIGZ1biAoKSAtPlxuICAgIG1hdGNoICFjYWNoZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgY2hhbm5lbCA9IEthcHBhX2ZpbGVzLm9wZW5fdGFza3NfcHJvZmlsaW5nICgpIGluXG4gICAgICBsZXQgKCkgPSBjYWNoZSA6PSBTb21lIGNoYW5uZWwgaW5cbiAgICAgIGNoYW5uZWxcbiAgICB8IFNvbWUgY2hhbm5lbCAtPiBjaGFubmVsXG5cbmxldCBmZXRjaF9iYWNrZG9vcnMgKCkgPVxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3NjYyA9ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3NjYztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcztcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPVxuICAgICAgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWdcbiAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX3RpbWluZyA9ICFDb25maWcuYmFja2Rvb3JfdGltaW5nO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX2ZpbGUgPSAhQ29uZmlnLmJhY2tkb29yX2ZpbGU7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZGlyZWN0b3J5ID0gIUNvbmZpZy5iYWNrZG9vcl9kaXJlY3Rvcnk7XG4gIH1cblxubGV0IGdldF9wYXJhbWV0ZXJzID8oaHRtbF9tb2RlID0gdHJ1ZSkgfmNhbGxlZF9mcm9tICgpID1cbiAgbGV0IGNoYW5uZWwsIGNoYW5uZWxfZXJyLCBjaGFubmVsX2JhY2tkb29yLCBodG1sX21vZGUsIGNvbW1hbmQgPVxuICAgIG1hdGNoIGNhbGxlZF9mcm9tIHdpdGhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciAtPlxuICAgICAgTm9uZSwgTm9uZSwgTm9uZSwgZmFsc2UgfHwgaHRtbF9tb2RlLCBbfCBcIkthU2FcIjsgXCIoSW50ZXJyYWN0aXZlIG1vZGUpXCIgfF1cbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkludGVybmFsaXNlZCAtPlxuICAgICAgKCBTb21lIHN0ZG91dCxcbiAgICAgICAgU29tZSBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgU29tZSBzdGRvdXQsXG4gICAgICAgIGZhbHNlIHx8IGh0bWxfbW9kZSxcbiAgICAgICAgU3lzLmFyZ3YgKVxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTaW0gLT5cbiAgICAgIFNvbWUgKG9wZW5fdGFza3NfcHJvZmlsaW5nICgpKSwgTm9uZSwgTm9uZSwgZmFsc2UgfHwgaHRtbF9tb2RlLCBTeXMuYXJndlxuICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAtPlxuICAgICAgKCAobWF0Y2hcbiAgICAgICAgICAgIUNvbmZpZy5vdXRwdXRfZGlyZWN0b3J5LCBcInByb2ZpbGluZ1wiLCBcIi5odG1sXCJcbiAgICAgICAgICAgKCp0ZW1wb3JhcnksIHRvIGRvOiBwcm92aWRlIGEgcGFyYW1ldGVyaXNhYmxlIGZpbGVuYW1lKilcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBfLCBcIlwiLCBfIC0+IFNvbWUgc3Rkb3V0XG4gICAgICAgIHwgXCJcIiwgYSwgZXh0IC0+IFNvbWUgKG9wZW5fb3V0IGEgZXh0KVxuICAgICAgICB8IGEsIGIsIGV4dCAtPiBTb21lIChvcGVuX291dCAoYSBeIFwiL1wiIF4gYikgZXh0KSksXG4gICAgICAgIFNvbWUgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgIChtYXRjaFxuICAgICAgICAgICAoICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfc2NjXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZ1xuICAgICAgICAgICAgICAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNcbiAgICAgICAgICAgICB8fCAhQ29uZmlnLmJhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c1xuICAgICAgICAgICAgIHx8ICFDb25maWcuYmFja2Rvb3JfdGltaW5nXG4gICAgICAgICAgICAgfHwgIUNvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyxcbiAgICAgICAgICAgICAhQ29uZmlnLmJhY2tkb29yX2RpcmVjdG9yeSxcbiAgICAgICAgICAgICAhQ29uZmlnLmJhY2tkb29yX2ZpbGUsXG4gICAgICAgICAgICAgXCIudGV4XCIgKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IGZhbHNlLCBfLCBfLCBfIC0+IE5vbmVcbiAgICAgICAgfCBfLCBfLCBcIlwiLCBfIC0+IFNvbWUgc3Rkb3V0XG4gICAgICAgIHwgXywgXCJcIiwgYSwgZXh0IC0+IFNvbWUgKG9wZW5fYXBwZW5kIGEgZXh0KVxuICAgICAgICB8IF8sIGEsIGIsIGV4dCAtPiBTb21lIChvcGVuX2FwcGVuZCAoYSBeIFwiL1wiIF4gYikgZXh0KSksXG4gICAgICAgIGZhbHNlIHx8IGh0bWxfbW9kZSxcbiAgICAgICAgU3lzLmFyZ3YgKVxuICBpblxuICB7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ludGF4X3ZlcnNpb24gPSBnZXRfc3ludGF4X3ZlcnNpb24gKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2NvbnRhY3RfbWFwID0gIUNvbmZpZy5kb19jb250YWN0X21hcDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc2NjID0gIUNvbmZpZy5kb19zY2M7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX2luZmx1ZW5jZV9tYXAgPSAhQ29uZmlnLmRvX2luZmx1ZW5jZV9tYXA7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAhQ29uZmlnLmRvX09ERV9mbG93X29mX2luZm9ybWF0aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICAgICAgICAgICFDb25maWcuZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zaXRlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIUNvbmZpZy5kb19zaXRlX2RlcGVuZGVuY2llcztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fc3ltbWV0cmllc19hbmFseXNpcyA9ICFDb25maWcuZG9fc3ltbWV0cmllcztcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmF0ZV9jb252ZW50aW9uID1cbiAgICAgICAgICBmZXRjaF9yYXRlX2NvbnZlbnRpb24gQ29uZmlnLnJhdGVfY29udmVudGlvbjtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9XG4gICAgICAgICAgIUNvbmZpZy5kdW1wX3NpdGVfZGVwZW5kZW5jaWVzO1xuICAgICAgICAoKmRpZmZlcmVudCByZWFjaGFiaWxpdHkgb3V0cHV0KilcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzID1cbiAgICAgICAgICAhQ29uZmlnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpcztcbiAgICAgICAgKCpHRVQgU1lNQk9MUyopXG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmZpbGUgPSAhQ29uZmlnLmZpbGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnN5bWJvbHMgPSBnZXRfc3ltYm9scyAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9vdXRwdXQgPSBnZXRfaW5mbHVlbmNlX21hcCAoKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfb3V0cHV0ID0gZ2V0X2NvbnRhY3RfbWFwICgpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICAgICAgZ2V0X3JlYWNoYWJpbGl0eV9tYXAgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzID1cbiAgICAgICAgICBnZXRfcmVhY2hhYmlsaXR5X3BhcmFtZXRlcnMgKCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVuc2FmZSA9ICFDb25maWcudW5zYWZlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZSA9ICFDb25maWcudHJhY2U7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID1cbiAgICAgICAgICAhQ29uZmlnLmR1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXggPSBcIlwiO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrID0gW107XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfbW9kZSA9ICFDb25maWcubGlua19tb2RlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5rYXNhX3N0YXRlID1cbiAgICAgICAgICBSZW1hbmVudF9zdGF0ZV9zaWduYXR1cmUuZW1wdHlfZW5naW5lX3N0YXRlO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sYXVuY2hpbmdfZGF0ZSA9XG4gICAgICAgICAgVW5peC5sb2NhbHRpbWUgKFVuaXguZ2V0dGltZW9mZGF5ICgpKTtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGltZV9zaGlmdCA9XG4gICAgICAgICAgKGxldCB4ID0gVW5peC5nZXR0aW1lb2ZkYXkgKCkgaW5cbiAgICAgICAgICAgKFVuaXgubG9jYWx0aW1lIHgpLlVuaXgudG1faG91ciAtIChVbml4LmdtdGltZSB4KS5Vbml4LnRtX2hvdXIpO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ob3N0bmFtZSA9XG4gICAgICAgICAgKHRyeSBVbml4LmdldGhvc3RuYW1lICgpIHdpdGggXyAtPiBcImphdmFzY3JpcHRcIik7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbW1hbmRfbGluZSA9IGNvbW1hbmQ7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNob3J0X3ZlcnNpb24gPSBWZXJzaW9uLnZlcnNpb25fc3RyaW5nO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uID0gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50a19pbnRlcmZhY2UgPSAhVmVyc2lvbi50a19pc19pbml0aWFsaXplZDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgKG1hdGNoIFRvb2xzLmxvd2VyY2FzZSAhQ29uZmlnLmluZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgd2l0aFxuICAgICAgICAgIHwgXCJpbmRpcmVjdFwiIC0+IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvd1xuICAgICAgICAgIHwgXCJkaXJlY3RcIiAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW1cbiAgICAgICAgICB8IFwicmVhbGlzYWJsZVwiIHwgXCJyZWFsaXphYmxlXCIgLT4gUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaFxuICAgICAgICAgIHwgXyAtPiBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCk7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVsID1cbiAgICAgICAgICBmZXRjaF9hY2N1cmFjeV9sZXZlbCBDb25maWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNjY19hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLnNjY19hY2N1cmFjeV9sZXZlbDtcbiAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmlld19hY2N1cmFjeV9sZXZlbCA9XG4gICAgICAgICAgZmV0Y2hfYWNjdXJhY3lfbGV2ZWwgQ29uZmlnLnZpZXdfYWNjdXJhY3lfbGV2ZWw7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNhbGxlZF9mcm9tO1xuICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5odG1sX21vZGU7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmVtcHR5X2hhc2h0Ymxfc2l6ZSA9IDE7XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29ycyA9IGZldGNoX2JhY2tkb29ycyAoKTtcbiAgICAgIH07XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0ID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX3Byb2dyZXNzX2JhciA9IChmdW4gXyAtPiAoKSk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyID0gKGZ1biBfIC0+ICgpKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSAoZnVuIF8gLT4gKCkpO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciA9XG4gICAgICAobWF0Y2ggY2hhbm5lbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgXyAtPiBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyICFDb25maWcuZm9ybWF0dGVyKTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfZXJyID1cbiAgICAgIChtYXRjaCBjaGFubmVsX2VyciB3aXRoXG4gICAgICB8IE5vbmUgLT4gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyXG4gICAgICB8IFNvbWUgZm10IC0+IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgZm10KTtcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfYmFja2Rvb3IgPVxuICAgICAgKG1hdGNoIGNoYW5uZWxfYmFja2Rvb3Igd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGNoYW5uZWwgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgY2hhbm5lbCk7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHJlc3Npb25fc3RhdHVzID0gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyO1xuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByaW50X2VmZmljaWVuY3kgPSAhQ29uZmlnLnByaW50X2VmZmljaWVuY3k7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvZmlsZXIgPVxuICAgICAgKG1hdGNoIGNoYW5uZWwgd2l0aFxuICAgICAgfCBOb25lIC0+IExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlclxuICAgICAgfCBTb21lIGEgLT4gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgfm1vZGU6TG9nZ2Vycy5IVE1MX1RhYnVsYXIgYSk7XG4gIH1cblxubGV0IGR1bW15X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tID1cbiAgbGV0IGNhY2hlID0gcmVmIE5vbmUgaW5cbiAgZnVuICgpIC0+XG4gICAgbWF0Y2ggIWNhY2hlIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBwID0gZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpIGluXG4gICAgICBsZXQgKCkgPSBjYWNoZSA6PSBTb21lIHAgaW5cbiAgICAgIHBcbiAgICB8IFNvbWUgcCAtPiBwXG5cbmxldCBnZXRfYm91bmRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5ib3VuZFxubGV0IGdldF9vcGVuX2JpbmRpbmdfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fYmluZGluZ19zdGF0ZVxubGV0IGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9iaW5kaW5nX3N0YXRlXG5cbmxldCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5taXNzaW5nX2JpbmRpbmdfc3RhdGVcblxubGV0IGdldF9saW5rX3RvX2FueV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubGlua190b19hbnlcbmxldCBnZXRfbGlua190b19zb21lXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5saW5rX3RvX3NvbWVcblxubGV0IGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmludGVybmFsX3N0YXRlX3N5bWJvbFxuXG5sZXQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50ZXJuYWxfc3RhdGVcbmxldCBnZXRfY2xvc2VfaW50ZXJuYWxfc3RhdGVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludGVybmFsX3N0YXRlXG5sZXQgZ2V0X2ZyZWVfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmZyZWVcbmxldCBnZXRfYXRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5hdFxubGV0IGdldF9hZ2VudF9vcGVuX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfb3BlblxubGV0IGdldF9hZ2VudF9jbG9zZV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X2Nsb3NlXG5cbmxldCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbF8xIHN5bWJvbCA9XG4gIGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9jb21tYVxuXG5sZXQgZ2V0X2FnZW50X3NlcF9wbHVzX3N5bWJvbF8xIHN5bWJvbCA9IGZzdCBzeW1ib2wuU3ltYm9sX3RhYmxlLmFnZW50X3NlcF9wbHVzXG5sZXQgZ2V0X2FnZW50X3NlcF9kb3Rfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuYWdlbnRfc2VwX2RvdFxubGV0IGdldF9idHlwZV9zZXBfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5idHlwZV9zZXBcbmxldCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzEgc3ltYm9sID0gZnN0IHN5bWJvbC5TeW1ib2xfdGFibGUuc2l0ZV9zZXBcbmxldCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5naG9zdF9hZ2VudFxubGV0IGdldF9kb193ZV9zaG93X2dob3N0XzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5zaG93X2dob3N0XG5sZXQgZ2V0X3VuaV9hcnJvd19zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnVuaV9hcnJvd1xubGV0IGdldF9yZXZfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5yZXZfYXJyb3dcbmxldCBnZXRfYmlfYXJyb3dfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5iaV9hcnJvd1xubGV0IGdldF9iaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuYmlfYXJyb3dfbm9wb2x5XG5sZXQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUudW5pX2Fycm93X25vcG9seVxubGV0IGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLnJldl9hcnJvd19ub3BvbHlcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzEgc3ltYm9sID1cbiAgc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5faW50X2ludGVydmFsX2luZmluaXR5XG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9pbmNsdXNpdmVcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eVxuXG5sZXQgZ2V0X3BsdXNfaW5maW5pdHlfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5wbHVzX2luZmluaXR5XG5sZXQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUubWludXNfaW5maW5pdHlcblxubGV0IGdldF9pbnRfaW50ZXJ2YWxfc2VwYXJhdG9yX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuaW50X2ludGVydmFsX3NlcGFyYXRvclxuXG5sZXQgZ2V0X29wZW5fY291bnRlcl9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyX3N0YXRlXG5sZXQgZ2V0X29wZW5fY291bnRlcmNlcV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY2VxXG5sZXQgZ2V0X29wZW5fY291bnRlcmN2YXJfMSBzeW1ib2wgPSBzeW1ib2wuU3ltYm9sX3RhYmxlLm9wZW5fY291bnRlcmN2YXJcbmxldCBnZXRfb3Blbl9jb3VudGVyY2d0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyY2d0ZVxubGV0IGdldF9vcGVuX2NvdW50ZXJkZWx0YV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUub3Blbl9jb3VudGVyZGVsdGFcbmxldCBnZXRfb3Blbl9jb3VudGVydmFsXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5vcGVuX2NvdW50ZXJ2YWxcbmxldCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcl9zdGF0ZVxubGV0IGdldF9jbG9zZV9jb3VudGVyY2VxXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY2VxXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyY3ZhclxubGV0IGdldF9jbG9zZV9jb3VudGVyY2d0ZV8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcmNndGVcbmxldCBnZXRfY2xvc2VfY291bnRlcmRlbHRhXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jbG9zZV9jb3VudGVyZGVsdGFcbmxldCBnZXRfY2xvc2VfY291bnRlcnZhbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY2xvc2VfY291bnRlcnZhbFxubGV0IGdldF9jb3VudGVyY2VxX3N5bWJvbF8xIHN5bWJvbCA9IHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmNlcV9zeW1ib2xcbmxldCBnZXRfY291bnRlcmN2YXJfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY3Zhcl9zeW1ib2xcbmxldCBnZXRfY291bnRlcmNndGVfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVyY2d0ZV9zeW1ib2xcblxubGV0IGdldF9jb3VudGVyZGVsdGFwbHVzX3N5bWJvbF8xIHN5bWJvbCA9XG4gIHN5bWJvbC5TeW1ib2xfdGFibGUuY291bnRlcmRlbHRhcGx1c19zeW1ib2xcblxubGV0IGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2xfMSBzeW1ib2wgPVxuICBzeW1ib2wuU3ltYm9sX3RhYmxlLmNvdW50ZXJkZWx0YW1pbnVzX3N5bWJvbFxuXG5sZXQgZ2V0X2NvdW50ZXJ2YWxfc3ltYm9sXzEgc3ltYm9sID0gc3ltYm9sLlN5bWJvbF90YWJsZS5jb3VudGVydmFsX3N5bWJvbFxuXG4oKkluZmx1ZW5jZSopXG5sZXQgZ2V0X2ltX2Zvcm1hdF8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9mb3JtYXRcbmxldCBnZXRfaW1fZmlsZV8xIGluZmx1ZW5jZSA9IGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbV9maWxlXG5cbmxldCBnZXRfaW1fZGlyZWN0b3J5XzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmltX2RpcmVjdG9yeVxuXG5sZXQgZ2V0X3J1bGVfc2hhcGVfMSBpbmZsdWVuY2UgPSBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucnVsZV9zaGFwZVxubGV0IGdldF9ydWxlX2NvbG9yXzEgaW5mbHVlbmNlID0gaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJ1bGVfY29sb3JcblxubGV0IGdldF92YXJpYWJsZV9zaGFwZV8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52YXJpYWJsZV9zaGFwZVxuXG5sZXQgZ2V0X3ZhcmlhYmxlX2NvbG9yXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZhcmlhYmxlX2NvbG9yXG5cbmxldCBnZXRfd2FrZV91cF9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2NvbG9yXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9jb2xvcl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2NvbG9yXG5cbmxldCBnZXRfd2FrZV91cF9hcnJvd18xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy53YWtlX3VwX2Fycm93XG5cbmxldCBnZXRfaW5oaWJpdGlvbl9hcnJvd18xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmhpYml0aW9uX2Fycm93XG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZl8xIGluZmx1ZW5jZSA9XG4gIGluZmx1ZW5jZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9tcHRfZnVsbF92YXJfZGVmXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfcnVsZV9kZWZfMSBpbmZsdWVuY2UgPVxuICBpbmZsdWVuY2UuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJvbXB0X2Z1bGxfcnVsZV9kZWZcblxubGV0IGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzEgaW5mbHVlbmNlID1cbiAgaW5mbHVlbmNlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1ha2VfbGFiZWxzX2NvbXBhdGlibGVcblxubGV0IGdldF9wdXJlX2NvbnRhY3RfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnB1cmVfY29udGFjdFxubGV0IGdldF9jbV9mb3JtYXRfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNtX2Zvcm1hdFxubGV0IGdldF9jbV9maWxlXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jbV9maWxlXG5sZXQgZ2V0X2NtX2RpcmVjdG9yeV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY21fZGlyZWN0b3J5XG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX3NoYXBlXG5sZXQgZ2V0X2JpbmRpbmdfc2l0ZV9jb2xvcl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmluZGluZ19zaXRlX2NvbG9yXG5cbmxldCBnZXRfaW50ZXJuYWxfc2l0ZV9zaGFwZV8xIGNtID1cbiAgY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaW50ZXJuYWxfc2l0ZV9zaGFwZVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMSBjbSA9XG4gIGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmludGVybmFsX3NpdGVfY29sb3JcblxubGV0IGdldF9jb3VudGVyX3NpdGVfc2hhcGVfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9zaGFwZVxubGV0IGdldF9jb3VudGVyX3NpdGVfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvdW50ZXJfc2l0ZV9jb2xvclxubGV0IGdldF9hZ2VudF9zaGFwZV9hcnJheV8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfYXJyYXlcbmxldCBnZXRfYWdlbnRfY29sb3JfYXJyYXlfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFnZW50X2NvbG9yX2FycmF5XG5sZXQgZ2V0X2FnZW50X3NoYXBlX2RlZl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfc2hhcGVfZGVmXG5sZXQgZ2V0X2FnZW50X2NvbG9yX2RlZl8xIGNtID0gY20uUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYWdlbnRfY29sb3JfZGVmXG5sZXQgZ2V0X2xpbmtfY29sb3JfMSBjbSA9IGNtLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfY29sb3JcbmxldCBnZXRfaW5mbHVlbmNlX2NvbG9yXzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfY29sb3JcbmxldCBnZXRfaW5mbHVlbmNlX2Fycm93XzEgY20gPSBjbS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfYXJyb3dcblxuKCphZGQgcmVhY2hhYmlsaXR5KilcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHRcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25fMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb25cblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWNcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZHluYW1pY1xuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmZfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19kaWZmXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc193bFxuXG5sZXQgZ2V0X3NtYXNoX3JlbGF0aW9uc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNtYXNoX3JlbGF0aW9uc1xuXG5sZXQgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb25fMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXG5cbmxldCBnZXRfaGlkZV9yZXZlcnNlX3J1bGVfd2l0aG91dF9sYWJlbF9mcm9tX2RlYWRfcnVsZXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlc1xuXG5sZXQgZ2V0X3Bvc3RfcHJvY2Vzc2luZ18xIHIgPVxuICBtYXRjaCByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9uYXR1cmFsX2xhbmd1YWdlIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5SYXcgLT4gZmFsc2VcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYXBwYSB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5hdHVyYWxfbGFuZ3VhZ2UgLT5cbiAgICB0cnVlXG5cbmxldCBnZXRfYmFja2VuZF9tb2RlXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudXNlX25hdHVyYWxfbGFuZ3VhZ2VcblxubGV0IGdldF9sb2NhbF90cmFjZV9mb3JtYXRfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5mb3JtYXRfZm9yX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2NvbXB1dGVfbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29tcHV0ZV9sb2NhbF90cmFjZXNcblxubGV0IGdldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNcblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMSByIGIgPVxuICB7IHIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgPSBiIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18xIHIgYiA9XG4gIHsgciB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9IGIgfVxuXG5sZXQgZ2V0X2lnbm9yZV90cml2aWFsX2xvc2FuZ2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaWdub3JlX3RyaXZpYWxfbG9zYW5nZXNcblxubGV0IGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzXzEgciA9XG4gIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2hvd19ydWxlX25hbWVzX2luX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnVzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlc1xuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc1xuXG5sZXQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xIHIgPVxuICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmFkZF9zaW5ndWxhcl9taWNyb3N0YXRlc1xuXG5sZXQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlX3ByZWZpeFxubGV0IGdldF9sb2NhbF90cmFjZV9kaXJlY3RvcnlfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZV9kaXJlY3RvcnlcbmxldCBnZXRfdmlld19hbmFseXNpc18xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnZpZXdzXG5cbmxldCBnZXRfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXNfMSByID1cbiAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zaXRlX2Fjcm9zc19ib25kc1xuXG5sZXQgZ2V0X3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzXzEgciA9IHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYWxsZWxfYm9uZHNcbmxldCBnZXRfZHluYW1pY19jb250YWN0X21hcF8xIHIgPSByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR5bmFtaWNfY29udGFjdF9tYXBcbmxldCBnZXRfY291bnRlcnNfYW5hbHlzaXNfMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyc1xubGV0IGdldF9jb3VudGVyc19kb21haW5fMSByID0gci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb3VudGVyX2RvbWFpblxuXG5sZXQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3N5bW1ldHJpZXNfYW5hbHlzaXNcblxubGV0IGdldF9yYXRlX2NvbnZlbnRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yYXRlX2NvbnZlbnRpb25cblxubGV0IGdldF9lbXB0eV9oYXNodGJsX3NpemVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5lbXB0eV9oYXNodGJsX3NpemVcblxubGV0IGdldF9zeW1ib2xzXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ltYm9sc1xubGV0IGdldF9maWxlXzEgbWFyc2hhbGlzYWJsZSA9IG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZmlsZVxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX291dHB1dFxuXG5sZXQgZ2V0X2NvbnRhY3RfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY29udGFjdF9tYXBfb3V0cHV0XG5cbigqYWRkIHJlYWNoYWJpbGl0eSopXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dFxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNcblxubGV0IGdldF91bnNhZmVfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy51bnNhZmVcbmxldCBnZXRfdHJhY2VfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZVxuXG5sZXQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZHVtcF9lcnJvcl9hc19zb29uX2FzX3RoZXlfb2NjdXJcblxubGV0IGdldF9wcmVmaXhfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXhcblxubGV0IGdldF9jYWxsX3N0YWNrXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbF9zdGFja1xuXG5sZXQgZ2V0X2xpbmtfbW9kZV8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxpbmtfbW9kZVxuXG5sZXQgZ2V0X2thc2Ffc3RhdGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5rYXNhX3N0YXRlXG5cbmxldCBnZXRfZG9fY29udGFjdF9tYXBfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19jb250YWN0X21hcFxuXG5sZXQgZ2V0X3N5bnRheF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc3ludGF4X3ZlcnNpb25cblxubGV0IGdldF9kb19zY2NfMSBtYXJzaGFsaXNhYmxlID0gbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zY2NcblxubGV0IGdldF9kb19pbmZsdWVuY2VfbWFwXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9faW5mbHVlbmNlX21hcFxuXG5sZXQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb25cblxubGV0IGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25fMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb25cblxubGV0IGdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3NpdGVfZGVwZW5kZW5jaWVzXG5cbmxldCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmR1bXBfc2l0ZV9kZXBlbmRlbmNpZXNcblxuKCpyZWFjaGFiaWxpdHkgZGlmZmVyZW50IG91dHB1dCopXG5sZXQgZ2V0X2RvX3JlYWNoYWJpbGl0eV9hbmFseXNpc18xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmRvX3JlYWNoYWJpbGl0eV9hbmFseXNpc1xuXG4oKiopXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5pbmZsdWVuY2VfbWFwX2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb250YWN0X21hcF9hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbF8xIG1hcnNoYWxpc2FibGUgPVxuICBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNjY19hY2N1cmFjeV9sZXZlbFxuXG5sZXQgZ2V0X3ZpZXdfYWNjdXJhY3lfbGV2ZWxfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52aWV3X2FjY3VyYWN5X2xldmVsXG5cbmxldCBnZXRfbGF1bmNoaW5nX2RhdGVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbGV0IHQgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxhdW5jaGluZ19kYXRlIGluXG4gIGxldCBnbXQgPSBtYXJzaGFsaXNhYmxlLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRpbWVfc2hpZnQgaW5cbiAgUHJpbnRmLnNwcmludGYgXCJBbmFseXNpcyBsYXVuY2hlZCBhdCAlMDRpLyUwMmkvJTAyaSAlMDJpOiUwMmk6JTAyaSAoR01UJStpKVwiXG4gICAgKHQuVW5peC50bV95ZWFyICsgMTkwMCkgKHQuVW5peC50bV9tb24gKyAxKSB0LlVuaXgudG1fbWRheSB0LlVuaXgudG1faG91clxuICAgIHQuVW5peC50bV9taW4gdC5Vbml4LnRtX3NlYyBnbXRcblxubGV0IGdldF9zaG9ydF92ZXJzaW9uXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudmVyc2lvblxuXG5sZXQgZ2V0X2Z1bGxfdmVyc2lvbl8xIG1hcnNoYWxpc2FibGUgPVxuICBQcmludGYuc3ByaW50ZiBcIiVzICh3aXRoJXMgVGsgaW50ZXJmYWNlKVwiXG4gICAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy52ZXJzaW9uXG4gICAgKGlmIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcudGtfaW50ZXJmYWNlIHRoZW5cbiAgICAgICBcIlwiXG4gICAgIGVsc2VcbiAgICAgICBcIm91dFwiKVxuXG5sZXQgZ2V0X2xhdW5jaGVkX3doZXJlXzEgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuaG9zdG5hbWVcblxubGV0IGdldF9jb21tYW5kX2xpbmVfMSBtYXJzaGFsaXNhYmxlID1cbiAgbWFyc2hhbGlzYWJsZS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jb21tYW5kX2xpbmVcblxubGV0IGdldF9tYXJzaGFsaXNhYmxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcblxubGV0IGdldF9sb2dnZXIgcGFyYW1ldGVyID0gcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlclxubGV0IGdldF9sb2dnZXJfZXJyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfZXJyXG5cbmxldCBnZXRfbG9nZ2VyX2JhY2tkb29yIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXJfYmFja2Rvb3JcblxuKCpsZXQgZ2V0X2Zvcm1hdHRlciBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0dGVyXG4gIGxldCBzZXRfZm9ybWF0dGVyIHBhcmFtZXRlciBsb2dnZXIgPSB7cGFyYW1ldGVyIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuZm9ybWF0dGVyID0gbG9nZ2VyfSopXG5cbmxldCB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2NvbW1hbmRfbGluZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb21tYW5kX2xpbmVfMVxubGV0IGdldF9zaG9ydF92ZXJzaW9uID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3Nob3J0X3ZlcnNpb25fMVxubGV0IGdldF9sYXVuY2hlZF93aGVyZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9sYXVuY2hlZF93aGVyZV8xXG5sZXQgZ2V0X2Z1bGxfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9mdWxsX3ZlcnNpb25fMVxubGV0IGdldF9sYXVuY2hpbmdfZGF0ZSA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9sYXVuY2hpbmdfZGF0ZV8xXG5cbmxldCBnZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUgcGFyYW1ldGVycyA9XG4gIFByaW50Zi5zcHJpbnRmIFwiJXMgb24gJXNcIlxuICAgIChnZXRfbGF1bmNoaW5nX2RhdGUgcGFyYW1ldGVycylcbiAgICAoZ2V0X2xhdW5jaGVkX3doZXJlIHBhcmFtZXRlcnMpXG5cbmxldCBnZXRfZG9fY29udGFjdF9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fY29udGFjdF9tYXBfMVxubGV0IGdldF9zeW50YXhfdmVyc2lvbiA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zeW50YXhfdmVyc2lvbl8xXG5sZXQgZ2V0X2RvX3NjYyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zY2NfMVxubGV0IGdldF9kb19pbmZsdWVuY2VfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX2luZmx1ZW5jZV9tYXBfMVxuXG5sZXQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2RvX09ERV9mbG93X29mX2luZm9ybWF0aW9uXzFcblxubGV0IGdldF9kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZG9fc3RvY2hhc3RpY19mbG93X29mX2luZm9ybWF0aW9uXzFcblxubGV0IGdldF9kb19zaXRlX2RlcGVuZGVuY2llcyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19zaXRlX2RlcGVuZGVuY2llc18xXG5cbmxldCBnZXRfZHVtcF9zaXRlX2RlcGVuZGVuY2llcyA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kdW1wX3NpdGVfZGVwZW5kZW5jaWVzXzFcbigqcmVhY2hhYmlsaXR5IGFuYWx5c2lzIGluIGRpZmZlcmVudCBvdXRwdXQqKVxuXG4oKiopXG5sZXQgZ2V0X3N5bWJvbHMgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfc3ltYm9sc18xXG5sZXQgZ2V0X2ZpbGUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZmlsZV8xXG5sZXQgZ2V0X2NvbXB1dGVfc3ltbWV0cmllcyA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jb21wdXRlX3N5bW1ldHJpZXNfMVxubGV0IGdldF9yYXRlX2NvbnZlbnRpb24gPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcmF0ZV9jb252ZW50aW9uXzFcbmxldCBnZXRfaW5mbHVlbmNlX21hcCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9pbmZsdWVuY2VfbWFwXzFcbmxldCBnZXRfY29udGFjdF9tYXAgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29udGFjdF9tYXBfMVxuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IGdldF9yZWFjaGFiaWxpdHlfbWFwID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JlYWNoYWJpbGl0eV9tYXBfMVxuXG5sZXQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzXzFcblxubGV0IGdldF91bnNhZmUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdW5zYWZlXzFcbmxldCBnZXRfdHJhY2UgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfdHJhY2VfMVxuXG5sZXQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyID1cbiAgdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2R1bXBfZXJyb3JfYXNfc29vbl9hc190aGV5X29jY3VyXzFcblxubGV0IGdldF9wcmVmaXggPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfcHJlZml4XzFcbmxldCBnZXRfY2FsbF9zdGFjayA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9jYWxsX3N0YWNrXzFcbmxldCBnZXRfbGlua19tb2RlID0gdXBncmFkZV9mcm9tX21hcnNoYWxfZmllbGQgZ2V0X2xpbmtfbW9kZV8xXG5cbmxldCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X3NjY19hY2N1cmFjeV9sZXZlbCA9IHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9zY2NfYWNjdXJhY3lfbGV2ZWxfMVxuXG5sZXQgZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgPVxuICB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbF8xXG5cbmxldCBnZXRfdmlld19hY2N1cmFjeV9sZXZlbCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF92aWV3X2FjY3VyYWN5X2xldmVsXzFcblxubGV0IGdldF9lbXB0eV9oYXNodGJsX3NpemUgPSB1cGdyYWRlX2Zyb21fbWFyc2hhbF9maWVsZCBnZXRfZW1wdHlfaGFzaHRibF9zaXplXzFcbmxldCB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBmID0gY29tcG9zZSBmIGdldF9pbmZsdWVuY2VfbWFwXG5sZXQgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X2NvbnRhY3RfbWFwXG5sZXQgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZiA9IGNvbXBvc2UgZiBnZXRfc3ltYm9sc1xuXG4oKmFkZCByZWFjaGFiaWxpdHkqKVxubGV0IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGYgPSBjb21wb3NlIGYgZ2V0X3JlYWNoYWJpbGl0eV9tYXBcblxubGV0IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBmID1cbiAgY29tcG9zZSBmIGdldF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc1xuXG4oKnN5bWJvbHMqKVxubGV0IGdldF9ib3VuZF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYm91bmRfc3ltYm9sXzFcbmxldCBnZXRfb3Blbl9iaW5kaW5nX3N0YXRlID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fYmluZGluZ19zdGF0ZV8xXG5cbmxldCBnZXRfY2xvc2VfYmluZGluZ19zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9taXNzaW5nX2JpbmRpbmdfc3RhdGUgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfbWlzc2luZ19iaW5kaW5nX3N0YXRlXzFcblxubGV0IGdldF9pbnRlcm5hbF9zdGF0ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfaW50ZXJuYWxfc3RhdGVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludGVybmFsX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5faW50ZXJuYWxfc3RhdGVfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2ludGVybmFsX3N0YXRlXzFcblxubGV0IGdldF9saW5rX3RvX2FueSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9saW5rX3RvX2FueV8xXG5sZXQgZ2V0X2xpbmtfdG9fc29tZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9saW5rX3RvX3NvbWVfMVxubGV0IGdldF9mcmVlX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9mcmVlXzFcbmxldCBnZXRfYXRfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2F0X3N5bWJvbF8xXG5sZXQgZ2V0X2FnZW50X29wZW5fc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X29wZW5fc3ltYm9sXzFcbmxldCBnZXRfYWdlbnRfY2xvc2Vfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2FnZW50X2Nsb3NlX3N5bWJvbF8xXG5cbmxldCBnZXRfYWdlbnRfc2VwX2NvbW1hX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfY29tbWFfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfcGx1c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYWdlbnRfc2VwX3BsdXNfc3ltYm9sXzFcblxubGV0IGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9hZ2VudF9zZXBfZG90X3N5bWJvbF8xXG5cbmxldCBnZXRfYnR5cGVfc2VwX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9idHlwZV9zZXBfc3ltYm9sXzFcblxubGV0IGdldF9zaXRlX3NlcF9jb21tYV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfc2l0ZV9zZXBfY29tbWFfc3ltYm9sXzFcblxubGV0IGdldF9naG9zdF9hZ2VudF9zeW1ib2wgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfZ2hvc3RfYWdlbnRfc3ltYm9sXzFcbmxldCBnZXRfZG9fd2Vfc2hvd19naG9zdCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9kb193ZV9zaG93X2dob3N0XzFcbmxldCBnZXRfdW5pX2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF91bmlfYXJyb3dfc3ltYm9sXzFcbmxldCBnZXRfcmV2X2Fycm93X3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9yZXZfYXJyb3dfc3ltYm9sXzFcbmxldCBnZXRfYmlfYXJyb3dfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2JpX2Fycm93X3N5bWJvbF8xXG5cbmxldCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfYmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3Jldl9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9yZXZfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X3VuaV9hcnJvd19ub19wb2x5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF91bmlfYXJyb3dfbm9fcG9seV9zeW1ib2xfMVxuXG5sZXQgZ2V0X29wZW5faW50X2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9vcGVuX2ludF9pbnRlcnZhbF9leGNsdXNpdmVfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9pbnRfaW50ZXJ2YWxfaW5maW5pdHlfc3ltYm9sXzFcblxubGV0IGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9pbnRfaW50ZXJ2YWxfaW5jbHVzaXZlX3N5bWJvbF8xXG5cbmxldCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2Nsb3NlX2ludF9pbnRlcnZhbF9pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfaW50X2ludGVydmFsX2luZmluaXR5X3N5bWJvbF8xXG5cbmxldCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfcGx1c19pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X21pbnVzX2luZmluaXR5X3N5bWJvbCA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9taW51c19pbmZpbml0eV9zeW1ib2xfMVxuXG5sZXQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2ludF9pbnRlcnZhbF9zZXBhcmF0b3Jfc3ltYm9sXzFcblxubGV0IGdldF9vcGVuX2NvdW50ZXJfc3RhdGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyX3N0YXRlXzFcbmxldCBnZXRfb3Blbl9jb3VudGVyY2VxID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmNlcV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmNndGUgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY2d0ZV8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmN2YXIgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfb3Blbl9jb3VudGVyY3Zhcl8xXG5sZXQgZ2V0X29wZW5fY291bnRlcmRlbHRhID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcmRlbHRhXzFcbmxldCBnZXRfb3Blbl9jb3VudGVydmFsID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X29wZW5fY291bnRlcnZhbF8xXG5cbmxldCBnZXRfY2xvc2VfY291bnRlcl9zdGF0ZSA9XG4gIHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyX3N0YXRlXzFcblxubGV0IGdldF9jbG9zZV9jb3VudGVyY2VxID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjZXFfMVxubGV0IGdldF9jbG9zZV9jb3VudGVyY2d0ZSA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jbG9zZV9jb3VudGVyY2d0ZV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJjdmFyXzFcbmxldCBnZXRfY2xvc2VfY291bnRlcmRlbHRhID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2Nsb3NlX2NvdW50ZXJkZWx0YV8xXG5sZXQgZ2V0X2Nsb3NlX2NvdW50ZXJ2YWwgPSB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY2xvc2VfY291bnRlcnZhbF8xXG5sZXQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjZXFfc3ltYm9sXzFcbmxldCBnZXRfY291bnRlcmNndGVfc3ltYm9sID0gdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJjZ3RlX3N5bWJvbF8xXG5sZXQgZ2V0X2NvdW50ZXJjdmFyX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVyY3Zhcl9zeW1ib2xfMVxuXG5sZXQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sID1cbiAgdXBncmFkZV9mcm9tX3N5bWJvbHNfZmllbGQgZ2V0X2NvdW50ZXJkZWx0YXBsdXNfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVyZGVsdGFtaW51c19zeW1ib2wgPVxuICB1cGdyYWRlX2Zyb21fc3ltYm9sc19maWVsZCBnZXRfY291bnRlcmRlbHRhbWludXNfc3ltYm9sXzFcblxubGV0IGdldF9jb3VudGVydmFsX3N5bWJvbCA9IHVwZ3JhZGVfZnJvbV9zeW1ib2xzX2ZpZWxkIGdldF9jb3VudGVydmFsX3N5bWJvbF8xXG5sZXQgZ2V0X2ltX2Zvcm1hdCA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbV9mb3JtYXRfMVxubGV0IGdldF9pbV9maWxlID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X2ltX2ZpbGVfMVxubGV0IGdldF9pbV9kaXJlY3RvcnkgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW1fZGlyZWN0b3J5XzFcbmxldCBnZXRfcnVsZV9zaGFwZSA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9ydWxlX3NoYXBlXzFcbmxldCBnZXRfcnVsZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9ydWxlX2NvbG9yXzFcbmxldCBnZXRfdmFyaWFibGVfc2hhcGUgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfdmFyaWFibGVfc2hhcGVfMVxubGV0IGdldF92YXJpYWJsZV9jb2xvciA9IHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF92YXJpYWJsZV9jb2xvcl8xXG5sZXQgZ2V0X3dha2VfdXBfY29sb3IgPSB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfd2FrZV91cF9jb2xvcl8xXG5cbmxldCBnZXRfaW5oaWJpdGlvbl9jb2xvciA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9pbmhpYml0aW9uX2NvbG9yXzFcblxubGV0IGdldF93YWtlX3VwX2Fycm93ID0gdXBncmFkZV9mcm9tX2luZmx1ZW5jZV9tYXBfZmllbGQgZ2V0X3dha2VfdXBfYXJyb3dfMVxuXG5sZXQgZ2V0X2luaGliaXRpb25fYXJyb3cgPVxuICB1cGdyYWRlX2Zyb21faW5mbHVlbmNlX21hcF9maWVsZCBnZXRfaW5oaWJpdGlvbl9hcnJvd18xXG5cbmxldCBnZXRfcHJvbXB0X2Z1bGxfdmFyX2RlZiA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9wcm9tcHRfZnVsbF92YXJfZGVmXzFcblxubGV0IGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZiA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9wcm9tcHRfZnVsbF9ydWxlX2RlZl8xXG5cbmxldCBnZXRfbWFrZV9sYWJlbHNfY29tcGF0aWJsZV93aXRoX2RvdCA9XG4gIHVwZ3JhZGVfZnJvbV9pbmZsdWVuY2VfbWFwX2ZpZWxkIGdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlXzFcblxubGV0IGdldF9wdXJlX2NvbnRhY3QgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X3B1cmVfY29udGFjdF8xXG5sZXQgZ2V0X2NtX2Zvcm1hdCA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZm9ybWF0XzFcbmxldCBnZXRfY21fZmlsZSA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZmlsZV8xXG5sZXQgZ2V0X2NtX2RpcmVjdG9yeSA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY21fZGlyZWN0b3J5XzFcblxubGV0IGdldF9iaW5kaW5nX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2JpbmRpbmdfc2l0ZV9zaGFwZV8xXG5cbmxldCBnZXRfYmluZGluZ19zaXRlX2NvbG9yID1cbiAgdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9iaW5kaW5nX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGUgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2ludGVybmFsX3NpdGVfc2hhcGVfMVxuXG5sZXQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2ludGVybmFsX3NpdGVfY29sb3JfMVxuXG5sZXQgZ2V0X2NvdW50ZXJfc2l0ZV9zaGFwZSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfY291bnRlcl9zaXRlX3NoYXBlXzFcblxubGV0IGdldF9jb3VudGVyX3NpdGVfY29sb3IgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2NvdW50ZXJfc2l0ZV9jb2xvcl8xXG5cbmxldCBnZXRfYWdlbnRfc2hhcGVfYXJyYXkgPVxuICB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2FnZW50X3NoYXBlX2FycmF5XzFcblxubGV0IGdldF9hZ2VudF9jb2xvcl9hcnJheSA9XG4gIHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfY29sb3JfYXJyYXlfMVxuXG5sZXQgZ2V0X2FnZW50X3NoYXBlX2RlZiA9IHVwZ3JhZGVfZnJvbV9jb250YWN0X21hcF9maWVsZCBnZXRfYWdlbnRfc2hhcGVfZGVmXzFcbmxldCBnZXRfYWdlbnRfY29sb3JfZGVmID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9hZ2VudF9jb2xvcl9kZWZfMVxubGV0IGdldF9saW5rX2NvbG9yID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9saW5rX2NvbG9yXzFcbmxldCBnZXRfaW5mbHVlbmNlX2NvbG9yID0gdXBncmFkZV9mcm9tX2NvbnRhY3RfbWFwX2ZpZWxkIGdldF9pbmZsdWVuY2VfY29sb3JfMVxubGV0IGdldF9pbmZsdWVuY2VfYXJyb3cgPSB1cGdyYWRlX2Zyb21fY29udGFjdF9tYXBfZmllbGQgZ2V0X2luZmx1ZW5jZV9hcnJvd18xXG5cbigqYWRkIHJlYWNoYWJsaXR5KilcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19yZXN1bHQgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcmVzdWx0XzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19pdGVyYXRpb24gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfaXRlcmF0aW9uXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19zdGF0aWMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfc3RhdGljXzFcblxubGV0IGdldF9kdW1wX3JlYWNoYWJpbGl0eV9hbmFseXNpc19keW5hbWljID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2R5bmFtaWNfMVxuXG5sZXQgZ2V0X2R1bXBfcmVhY2hhYmlsaXR5X2FuYWx5c2lzX2RpZmYgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfZGlmZl8xXG5cbmxldCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2wgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfZHVtcF9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfd2xfMVxuXG5sZXQgZ2V0X3Bvc3RfcHJvY2Vzc2luZyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9wb3N0X3Byb2Nlc3NpbmdfMVxuXG5sZXQgZ2V0X2JhY2tlbmRfbW9kZSA9IHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9iYWNrZW5kX21vZGVfMVxuXG5sZXQgZ2V0X2hpZGVfb25lX2RfcmVsYXRpb25zX2Zyb21fY2FydGVzaWFuX2RlY29tcG9zaXRpb24gPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZFxuICAgIGdldF9oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uXzFcblxubGV0IGdldF9oaWRlX3JldmVyc2VfcnVsZV93aXRob3V0X2xhYmVsX2Zyb21fZGVhZF9ydWxlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkXG4gICAgZ2V0X2hpZGVfcmV2ZXJzZV9ydWxlX3dpdGhvdXRfbGFiZWxfZnJvbV9kZWFkX3J1bGVzXzFcblxubGV0IGdldF9zbWFzaF9yZWxhdGlvbnMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfc21hc2hfcmVsYXRpb25zXzFcblxubGV0IGdldF9sb2NhbF90cmFjZV9mb3JtYXQgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X21hcF9maWVsZCBnZXRfbG9jYWxfdHJhY2VfZm9ybWF0XzFcblxubGV0IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9jb21wdXRlX2xvY2FsX3RyYWNlc18xXG5cbmxldCBnZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2NvbXB1dGVfc2VwYXJhdGluZ190cmFuc2l0aW9uc18xXG5cbmxldCBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzIgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0ID1cbiAgICAgIHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnNfMVxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0IGI7XG4gIH1cblxubGV0IHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18yIHIgYiA9XG4gIHtcbiAgICByIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZWFjaGFiaWxpdHlfbWFwX291dHB1dCA9XG4gICAgICBzZXRfdXNlX21hY3JvdHJhbnNpdGlvbl9pbl9sb2NhbF90cmFjZXNfMVxuICAgICAgICByLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlYWNoYWJpbGl0eV9tYXBfb3V0cHV0IGI7XG4gIH1cblxubGV0IHNldF9jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMgciBiID1cbiAge1xuICAgIHIgd2l0aFxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVycyA9XG4gICAgICBzZXRfY29tcHV0ZV9zZXBhcmF0aW5nX3RyYW5zaXRpb25zXzJcbiAgICAgICAgci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgYjtcbiAgfVxuXG5sZXQgc2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyByIGIgPVxuICB7XG4gICAgciB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzID1cbiAgICAgIHNldF91c2VfbWFjcm90cmFuc2l0aW9uX2luX2xvY2FsX3RyYWNlc18yXG4gICAgICAgIHIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubWFyc2hhbGlzYWJsZV9wYXJhbWV0ZXJzIGI7XG4gIH1cblxubGV0IGdldF9zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X3Nob3dfcnVsZV9uYW1lc19pbl9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X3VzZV9tYWNyb3RyYW5zaXRpb25zX2luX2xvY2FsX3RyYWNlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF91c2VfbWFjcm90cmFuc2l0aW9uc19pbl9sb2NhbF90cmFjZXNfMVxuXG5sZXQgZ2V0X2lnbm9yZV9sb2NhbF9sb3NhbmdlcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfbWFwX2ZpZWxkIGdldF9pZ25vcmVfdHJpdmlhbF9sb3Nhbmdlc18xXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21hY3Jvc3RhdGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2FkZF9zaW5ndWxhcl9tYWNyb3N0YXRlc18xXG5cbmxldCBnZXRfYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2FkZF9zaW5ndWxhcl9taWNyb3N0YXRlc18xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfcHJlZml4ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX3ByZWZpeF8xXG5cbmxldCBnZXRfbG9jYWxfdHJhY2VfZGlyZWN0b3J5ID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9tYXBfZmllbGQgZ2V0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeV8xXG5cbmxldCBnZXRfdmlld19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfdmlld19hbmFseXNpc18xXG5cbmxldCBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXMgPVxuICB1cGdyYWRlX2Zyb21fcmVhY2hhYmlsaXR5X2FuYWx5c2lzX3BhcmFtZXRlcnNfZmllbGRcbiAgICBnZXRfcGFyYWxsZWxfYm9uZHNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkXG4gICAgZ2V0X3NpdGVfYWNyb3NzX2JvbmRzX2FuYWx5c2lzXzFcblxubGV0IGdldF9keW5hbWljX2NvbnRhY3RfbWFwID1cbiAgdXBncmFkZV9mcm9tX3JlYWNoYWJpbGl0eV9hbmFseXNpc19wYXJhbWV0ZXJzX2ZpZWxkIGdldF9keW5hbWljX2NvbnRhY3RfbWFwXzFcblxubGV0IGdldF9jb3VudGVyc19hbmFseXNpcyA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfY291bnRlcnNfYW5hbHlzaXNfMVxuXG5sZXQgZ2V0X2NvdW50ZXJzX2RvbWFpbiA9XG4gIHVwZ3JhZGVfZnJvbV9yZWFjaGFiaWxpdHlfYW5hbHlzaXNfcGFyYW1ldGVyc19maWVsZCBnZXRfY291bnRlcnNfZG9tYWluXzFcblxubGV0IGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXMgcCA9XG4gIHVwZ3JhZGVfZnJvbV9tYXJzaGFsX2ZpZWxkIGdldF9kb19yZWFjaGFiaWxpdHlfYW5hbHlzaXNfMSBwXG4gIHx8IGdldF9jb21wdXRlX2xvY2FsX3RyYWNlcyBwXG5cbmxldCBzZXRfcHJlZml4XzEgbWFyc2hhbGlzYWJsZSBwcmVmaXggPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmVmaXggfVxuXG5sZXQgc2V0X2NhbGxfc3RhY2tfMSBtYXJzaGFsaXNhYmxlIGNhbGxfc3RhY2sgPVxuICB7IG1hcnNoYWxpc2FibGUgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsX3N0YWNrIH1cblxubGV0IHNldF90cmFjZV8xIG1hcnNoYWxpc2FibGUgYm9vbCA9XG4gIHsgbWFyc2hhbGlzYWJsZSB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnRyYWNlID0gYm9vbCB9XG5cbmxldCB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgZiBwYXJhbWV0ZXJzIHByZWZpeCA9XG4gIHtcbiAgICBwYXJhbWV0ZXJzIHdpdGhcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnMgPVxuICAgICAgZiAoZ2V0X21hcnNoYWxpc2FibGUgcGFyYW1ldGVycykgcHJlZml4O1xuICB9XG5cbmxldCBzZXRfcHJlZml4ID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF9wcmVmaXhfMVxubGV0IHNldF9jYWxsX3N0YWNrID0gdXBncmFkZV90b19tYXJzaGFsaXNhYmxlIHNldF9jYWxsX3N0YWNrXzFcbmxldCBzZXRfdHJhY2UgPSB1cGdyYWRlX3RvX21hcnNoYWxpc2FibGUgc2V0X3RyYWNlXzFcblxubGV0IHVwZGF0ZV9wcmVmaXggcGFyYW1ldGVycyBzdWZmaXggPVxuICBzZXRfcHJlZml4IHBhcmFtZXRlcnMgKGdldF9wcmVmaXggcGFyYW1ldGVycyBeIHN1ZmZpeClcblxubGV0IHVwZGF0ZV9jYWxsX3N0YWNrIHBhcmFtZXRlcnMgYm9vbCBuYW1lID1cbiAgbGV0IHJlcF9ib29sID0gZ2V0X3RyYWNlIHBhcmFtZXRlcnMgfHwgYm9vbCBpblxuICBtYXRjaCBuYW1lLCBnZXRfdHJhY2UgcGFyYW1ldGVycyA9IGJvb2wgd2l0aFxuICB8IE5vbmUsIHRydWUgLT4gcGFyYW1ldGVyc1xuICB8IE5vbmUsIGZhbHNlIC0+IHNldF90cmFjZSBwYXJhbWV0ZXJzIHJlcF9ib29sXG4gIHwgU29tZSB4LCB0cnVlIC0+IHNldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMgKHggOjogZ2V0X2NhbGxfc3RhY2sgcGFyYW1ldGVycylcbiAgfCBTb21lIHgsIGZhbHNlIC0+XG4gICAgc2V0X2NhbGxfc3RhY2tcbiAgICAgIChzZXRfdHJhY2UgcGFyYW1ldGVycyByZXBfYm9vbClcbiAgICAgICh4IDo6IGdldF9jYWxsX3N0YWNrIHBhcmFtZXRlcnMpXG5cbmxldCBvcGVuX2luZmx1ZW5jZV9tYXBfZmlsZSBwYXJhbWV0ZXJzID1cbiAgbGV0IGNoYW5uZWwgPVxuICAgIG1hdGNoXG4gICAgICAoIGdldF9pbV9maWxlIHBhcmFtZXRlcnMsXG4gICAgICAgIGdldF9pbV9kaXJlY3RvcnkgcGFyYW1ldGVycyxcbiAgICAgICAgZXh0X2Zvcm1hdCAoZ2V0X2ltX2Zvcm1hdCBwYXJhbWV0ZXJzKSApXG4gICAgd2l0aFxuICAgIHwgTm9uZSwgXywgXyAtPiBzdGRvdXRcbiAgICB8IFNvbWUgYSwgTm9uZSwgZXh0IC0+IG9wZW5fb3V0IGEgZXh0XG4gICAgfCBTb21lIGEsIFNvbWUgZCwgZXh0IC0+IG9wZW5fb3V0IChkIF4gYSkgZXh0XG4gIGluXG4gIGxldCBmb3JtYXQgPVxuICAgIG1hdGNoIGdldF9pbV9mb3JtYXQgcGFyYW1ldGVycyB3aXRoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ET1QgLT4gTG9nZ2Vycy5ET1RcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkhUTUwgLT4gTG9nZ2Vycy5IVE1MX0dyYXBoXG4gICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5ESU0gLT4gTG9nZ2Vycy5NYXRyaXhcbiAgICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkdFUEhJIC0+IExvZ2dlcnMuR0VQSElcbiAgaW5cbiAgbGV0IGxvZ2dlciA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOmZvcm1hdCBjaGFubmVsIGluXG4gIHsgcGFyYW1ldGVycyB3aXRoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmxvZ2dlciB9XG5cbmxldCBvcGVuX2NvbnRhY3RfbWFwX2ZpbGUgcGFyYW1ldGVycyA9XG4gIGxldCBjaGFubmVsID1cbiAgICBtYXRjaFxuICAgICAgKCBnZXRfY21fZmlsZSBwYXJhbWV0ZXJzLFxuICAgICAgICBnZXRfY21fZGlyZWN0b3J5IHBhcmFtZXRlcnMsXG4gICAgICAgIGV4dF9mb3JtYXQgKGdldF9jbV9mb3JtYXQgcGFyYW1ldGVycykgKVxuICAgIHdpdGhcbiAgICB8IE5vbmUsIF8sIF8gLT4gc3Rkb3V0XG4gICAgfCBTb21lIGEsIE5vbmUsIGV4dCAtPiBvcGVuX291dCBhIGV4dFxuICAgIHwgU29tZSBhLCBTb21lIGQsIGV4dCAtPiBvcGVuX291dCAoZCBeIGEpIGV4dFxuICBpblxuICB7XG4gICAgcGFyYW1ldGVycyB3aXRoXG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcubG9nZ2VyID0gTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2NoYW5uZWwgY2hhbm5lbDtcbiAgfVxuXG5sZXQgcGVyc2lzdGVudF9tb2RlID0gZmFsc2VcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2luZmx1ZW5jZV9tYXBcbiAgICBwYXJhbWV0ZXIgPVxuICAobWF0Y2ggZ2V0X2luZmx1ZW5jZV9tYXBfYWNjdXJhY3lfbGV2ZWwgcGFyYW1ldGVyIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5GdWxsIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuTWVkaXVtXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSGlnaCB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkxvdyAtPlxuICAgIHRydWVcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Ob25lIC0+IGZhbHNlKVxuICAmJiBnZXRfZG9faW5mbHVlbmNlX21hcCBwYXJhbWV0ZXJcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX3BlcnNpc3RlbnRfbW9kZVxuICAgIF8gPVxuICBwZXJzaXN0ZW50X21vZGVcblxubGV0IGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX2NvbnRhY3RfbWFwXG4gICAgcGFyYW1ldGVyID1cbiAgZ2V0X2RvX2NvbnRhY3RfbWFwIHBhcmFtZXRlclxuICAmJlxuICBtYXRjaCBnZXRfY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgcGFyYW1ldGVyIHdpdGhcbiAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5NZWRpdW0gfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5Mb3cgLT4gdHJ1ZVxuICB8IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLk5vbmUgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5IaWdoXG4gIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuRnVsbCAtPlxuICAgIGZhbHNlXG5cbmxldCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zIHBhcmFtZXRlciA9XG4gIGxleGljYWxfYW5hbHlzaXNfb2ZfdGVzdGVkX29ubHlfcGF0dGVybnNfaXNfcmVxdWlyZWRfYnlfdGhlX3BlcnNpc3RlbnRfbW9kZVxuICAgIHBhcmFtZXRlclxuICB8fCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9jb250YWN0X21hcFxuICAgICAgIHBhcmFtZXRlclxuICB8fCBsZXhpY2FsX2FuYWx5c2lzX29mX3Rlc3RlZF9vbmx5X3BhdHRlcm5zX2lzX3JlcXVpcmVkX2J5X3RoZV9pbmZsdWVuY2VfbWFwXG4gICAgICAgcGFyYW1ldGVyXG5cbmxldCBnZXRfY2FsbGVkX2Zyb20gcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLm1hcnNoYWxpc2FibGVfcGFyYW1ldGVyc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5jYWxsZWRfZnJvbVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfbmJyX29mX3NjY1xuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2NfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjY1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX25icl9vZl9jb25zdHJhaW50c1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfbnJfY29uc3RyYWludHNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2ZfcnVsZXNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMSBiYWNrZG9vcnNcbiAgICA9XG4gIGJhY2tkb29yc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZ1xuICAgICAuYmFja2Rvb3JfbmJyX29mX3J1bGVzX3dpdGhfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29yc1xuICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG5cbmxldCBnZXRfYmFja2Rvb3JfdGltaW5nXzEgYmFja2Rvb3JzID1cbiAgYmFja2Rvb3JzLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmJhY2tkb29yX3RpbWluZ1xuXG5sZXQgZ2V0X2JhY2tkb29yX2ZpbGVfMSBiYWNrZG9vcnMgPVxuICBiYWNrZG9vcnMuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JfZmlsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIGJhY2tkb29ycyA9XG4gIGJhY2tkb29ycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5iYWNrZG9vcl9kaXJlY3RvcnlcblxubGV0IGdldF9iYWNrZG9vcnMgbWFyc2hhbGlzYWJsZSA9XG4gIG1hcnNoYWxpc2FibGUuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX3NjY18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9jb25zdHJhaW50c18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2NvbnN0cmFpbnRzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzXzEgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3J1bGVzXzIgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMSBnZXRfYmFja2Rvb3JzXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfd2l0aF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNfMiA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18xXG4gICAgZ2V0X2JhY2tkb29yc1xuXG5sZXQgZ2V0X2JhY2tkb29yX3RpbWluZ18yID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfdGltaW5nXzEgZ2V0X2JhY2tkb29yc1xubGV0IGdldF9iYWNrZG9vcl9maWxlXzIgPSBjb21wb3NlIGdldF9iYWNrZG9vcl9maWxlXzEgZ2V0X2JhY2tkb29yc1xubGV0IGdldF9iYWNrZG9vcl9kaXJlY3RvcnlfMiA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8xIGdldF9iYWNrZG9vcnNcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50cyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ucl9jb25zdHJhaW50c18yIGdldF9tYXJzaGFsaXNhYmxlXG5cbmxldCBnZXRfYmFja2Rvb3JfbmJyX29mX3NjYyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9zY2NfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX2F2ZXJhZ2Vfc2l6ZV9vZl9zY2MgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9hdmVyYWdlX3NpemVfb2Zfc2NjXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfaW5mbHVlbmNlcyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9pbmZsdWVuY2VzXzIgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXMgPVxuICBjb21wb3NlIGdldF9iYWNrZG9vcl9uYnJfb2ZfcnVsZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9kZWFkX3J1bGVzID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX2RlYWRfcnVsZXNfMiBnZXRfbWFyc2hhbGlzYWJsZVxuXG5sZXQgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gIGNvbXBvc2UgZ2V0X2JhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yXG4gICAgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl9uYnJfb2Zfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgY29tcG9zZSBnZXRfYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9uc18yXG4gICAgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IGdldF9iYWNrZG9vcl90aW1pbmcgPSBjb21wb3NlIGdldF9iYWNrZG9vcl90aW1pbmdfMiBnZXRfbWFyc2hhbGlzYWJsZVxubGV0IGdldF9iYWNrZG9vcl9maWxlID0gY29tcG9zZSBnZXRfYmFja2Rvb3JfZmlsZV8yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeSA9IGNvbXBvc2UgZ2V0X2JhY2tkb29yX2RpcmVjdG9yeV8yIGdldF9tYXJzaGFsaXNhYmxlXG5sZXQgZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcm9maWxlclxuXG5sZXQgZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLmNvbXByZXNzaW9uX3N0YXR1c1xuXG5sZXQgZ2V0X2thc2Ffc3RhdGUgPSBjb21wb3NlIGdldF9rYXNhX3N0YXRlXzEgZ2V0X21hcnNoYWxpc2FibGVcblxubGV0IHNldF9wcmludF9lZmZpY2llbmN5IHBhcmFtZXRlciBib29sID1cbiAgeyBwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wcmludF9lZmZpY2llbmN5ID0gYm9vbCB9XG5cbmxldCBnZXRfcHJpbnRfZWZmaWNpZW5jeSBwYXJhbWV0ZXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucHJpbnRfZWZmaWNpZW5jeVxuXG5sZXQgc2V0X2xvZ2dlciBwYXJhbWV0ZXIgbG9nZ2VyID1cbiAgeyBwYXJhbWV0ZXIgd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5sb2dnZXIgfVxuXG5sZXQgc2F2ZV9lcnJvcl9saXN0IHBhcmFtZXRlciBlcnJvciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgZXJyb3JcblxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBiYXIgPVxuICBwYXJhbWV0ZXIuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgYmFyXG5cbmxldCByZXNldF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X3Byb2dyZXNzX2JhclxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciA9XG4gIHBhcmFtZXRlci5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGVcblxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgcGFyYW1ldGVyLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVcbiIsIm9wZW4gU3VwZXJhcmdcblxudHlwZSBjb3VudCA9IEVtYmVkZGluZ3MgfCBPY2N1cnJlbmNlc1xuXG50eXBlIHQgPSB7XG4gIGJhY2tlbmQ6IHN0cmluZyByZWY7XG4gIHJ1bGVfcmF0ZV9jb252ZW50aW9uOiBzdHJpbmcgcmVmO1xuICByZWFjdGlvbl9yYXRlX2NvbnZlbnRpb246IHN0cmluZyByZWY7XG4gIGNvdW50OiBzdHJpbmcgcmVmO1xuICBpbnRlcm5hbF9tZWFuaW5nOiBzdHJpbmcgcmVmO1xuICBzaG93X3JlYWN0aW9uczogYm9vbCByZWY7XG4gIGNvbXB1dGVfamFjb2JpYW46IGJvb2wgcmVmO1xuICBvY3RhdmVfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgbWF0bGFiX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hcGxlX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIG1hdGhlbWF0aWNhX291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIHNibWxfb3V0cHV0OiBzdHJpbmcgb3B0aW9uIHJlZjtcbiAgZG90bmV0X291dHB1dDogc3RyaW5nIG9wdGlvbiByZWY7XG4gIGRhdGFfZmlsZTogc3RyaW5nIG9wdGlvbiByZWY7XG4gIHdpdGhfc3ltbWV0cmllczogc3RyaW5nIHJlZjtcbiAgc2hvd19zeW1tZXRyaWVzOiBib29sIHJlZjtcbiAgdmlld3M6IGJvb2wgcmVmO1xuICBkYm9uZHM6IGJvb2wgcmVmO1xuICBzaXRlX2Fjcm9zczogYm9vbCByZWY7XG4gIG5vbm5lZ2F0aXZlOiBib29sIHJlZjtcbiAgc2hvd190aW1lX2FkdmFuY2U6IGJvb2wgcmVmO1xuICBpbml0aWFsX3N0ZXA6IGZsb2F0IHJlZjtcbiAgbWF4X3N0ZXA6IGZsb2F0IHJlZjtcbiAgcmVsYXRpdmVfdG9sZXJhbmNlOiBmbG9hdCByZWY7XG4gIGFic29sdXRlX3RvbGVyYW5jZTogZmxvYXQgcmVmO1xuICBzbWFzaF9yZWFjdGlvbnM6IGJvb2wgcmVmO1xuICBwcm9wYWdhdGVfY29uc3RhbnRzOiBib29sIHJlZjtcbiAgcHJpbnRfZWZmaWNpZW5jeTogYm9vbCByZWY7XG4gIG1heF9zaXplX2Zvcl9zcGVjaWVzOiBpbnQgb3B0aW9uIHJlZjtcbiAgY3N2X3NlcDogc3RyaW5nIHJlZjtcbn1cblxubGV0IGRlZmF1bHQgOiB0ID1cbiAge1xuICAgIGJhY2tlbmQgPSByZWYgXCJvY3RhdmVcIjtcbiAgICBydWxlX3JhdGVfY29udmVudGlvbiA9IHJlZiBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgcmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uID0gcmVmIFwiRGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICBjb3VudCA9IHJlZiBcIkVtYmVkZGluZ3NcIjtcbiAgICBpbnRlcm5hbF9tZWFuaW5nID0gcmVmIFwiRW1iZWRkaW5nc1wiO1xuICAgIHNob3dfcmVhY3Rpb25zID0gcmVmIHRydWU7XG4gICAgY29tcHV0ZV9qYWNvYmlhbiA9IHJlZiB0cnVlO1xuICAgIGRvdG5ldF9vdXRwdXQgPSByZWYgKFNvbWUgXCJuZXR3b3JrLm5ldFwiKTtcbiAgICBvY3RhdmVfb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm1cIik7XG4gICAgbWF0bGFiX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5tXCIpO1xuICAgIG1hcGxlX291dHB1dCA9IHJlZiAoU29tZSBcIm9kZS5td3NcIik7XG4gICAgbWF0aGVtYXRpY2Ffb3V0cHV0ID0gcmVmIChTb21lIFwib2RlLm5iXCIpO1xuICAgIHNibWxfb3V0cHV0ID0gcmVmIChTb21lIFwibmV0d29yay54bWxcIik7XG4gICAgZGF0YV9maWxlID0gcmVmIChTb21lIFwiZGF0YS5jc3ZcIik7XG4gICAgd2l0aF9zeW1tZXRyaWVzID0gcmVmIFwiTm9uZVwiO1xuICAgIHNob3dfc3ltbWV0cmllcyA9IHJlZiBmYWxzZTtcbiAgICB2aWV3cyA9IHJlZiB0cnVlO1xuICAgIGRib25kcyA9IHJlZiB0cnVlO1xuICAgIHNpdGVfYWNyb3NzID0gcmVmIHRydWU7XG4gICAgbm9ubmVnYXRpdmUgPSByZWYgZmFsc2U7XG4gICAgc2hvd190aW1lX2FkdmFuY2UgPSByZWYgZmFsc2U7XG4gICAgaW5pdGlhbF9zdGVwID0gcmVmIDAuMDAwMDE7XG4gICAgbWF4X3N0ZXAgPSByZWYgMC4wMjtcbiAgICBhYnNvbHV0ZV90b2xlcmFuY2UgPSByZWYgMC4wMDE7XG4gICAgcmVsYXRpdmVfdG9sZXJhbmNlID0gcmVmIDAuMDAxO1xuICAgIHNtYXNoX3JlYWN0aW9ucyA9IHJlZiBmYWxzZTtcbiAgICBwcm9wYWdhdGVfY29uc3RhbnRzID0gcmVmIGZhbHNlO1xuICAgIHByaW50X2VmZmljaWVuY3kgPSByZWYgZmFsc2U7XG4gICAgbWF4X3NpemVfZm9yX3NwZWNpZXMgPSByZWYgTm9uZTtcbiAgICBjc3Zfc2VwID0gcmVmIFwiIFwiO1xuICB9XG5cbmxldCBjb21iaW5lIGwxIGwyID1cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGxpc3QgYTEgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCAoYTIgOiBpbnQpIC0+IChhMSwgYTIpIDo6IGxpc3QpIGxpc3QgbDIpXG4gICAgW10gbDFcblxubGV0IG9wdGlvbnMgKHQgOiB0KSA6XG4gICAgKFN1cGVyYXJnLmtleVxuICAgICogU3VwZXJhcmcuc3BlY1xuICAgICogU3VwZXJhcmcubXNnXG4gICAgKiAoU3VwZXJhcmcuY2F0ZWdvcnkgKiBTdXBlcmFyZy5wb3NpdGlvbikgbGlzdFxuICAgICogU3VwZXJhcmcubGV2ZWwpXG4gICAgbGlzdCA9XG4gIFtcbiAgICAoIFwiLS12b2lkXCIsXG4gICAgICBTdXBlcmFyZy5Wb2lkLFxuICAgICAgXCJcIixcbiAgICAgIGNvbWJpbmVcbiAgICAgICAgW1xuICAgICAgICAgIENvbW1vbl9hcmdzLmRhdGFfc2V0O1xuICAgICAgICAgIENvbW1vbl9hcmdzLm91dHB1dDtcbiAgICAgICAgICBDb21tb25fYXJncy5zZW1hbnRpY3M7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3M7XG4gICAgICAgICAgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uO1xuICAgICAgICAgIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcztcbiAgICAgICAgICBDb21tb25fYXJncy5kZWJ1Z19tb2RlO1xuICAgICAgICBdXG4gICAgICAgIFsgNTA7IDUxOyA1MiBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5NdWx0aUV4dFxuICAgICAgICBbXG4gICAgICAgICAgXCItLWRvdG5ldC1vdXRwdXRcIiwgXCIubmV0XCI7XG4gICAgICAgICAgXCItLW1hcGxlLW91dHB1dFwiLCBcIi5td3NcIjtcbiAgICAgICAgICBcIi0tbWF0aGVtYXRpY2Etb3V0cHV0XCIsIFwiLm5iXCI7XG4gICAgICAgICAgXCItLW1hdGxhYi1vdXRwdXRcIiwgXCIubVwiO1xuICAgICAgICAgIFwiLS1vY3RhdmUtb3V0cHV0XCIsIFwiLm1cIjtcbiAgICAgICAgICBcIi0tc2JtbC1vdXRwdXRcIiwgXCIueG1sXCI7XG4gICAgICAgIF0sXG4gICAgICBcIlByZWZpeCBmb3IgZmlsZSBuYW1lIG91dHB1dFwiLFxuICAgICAgW1xuICAgICAgICBDb21tb25fYXJncy5kYXRhX3NldCwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5vdXRwdXQsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLmludGVncmF0aW9uX3NldHRpbmdzLCAxMDE7XG4gICAgICAgIENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMTAxO1xuICAgICAgICBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDEwMTtcbiAgICAgICAgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMTAxO1xuICAgICAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW9kZS1iYWNrZW5kXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcImRvdG5ldFwiLCBcImRvdG5ldCAoQk5HTCkgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJtYXBsZVwiLCBcIm1hcGxlIGJhY2tlbmQgKGluIHByb2dyZXNzKVwiO1xuICAgICAgICAgICAgXCJtYXRoZW1hdGljYVwiLCBcIm1hdGhlbWF0aWNhIGJhY2tlbmQgKGluIHByb2dyZXNzKVwiO1xuICAgICAgICAgICAgXCJtYXRsYWJcIiwgXCJtYXRsYWIgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJvY3RhdmVcIiwgXCJvY3RhdmUgYmFja2VuZFwiO1xuICAgICAgICAgICAgXCJzYm1sXCIsIFwic2JtbCBiYWNrZW5kXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcIkRvdG5ldFwiO1xuICAgICAgICAgICAgXCJET1RORVRcIjtcbiAgICAgICAgICAgIFwiT2N0YXZlXCI7XG4gICAgICAgICAgICBcIk9DVEFWRVwiO1xuICAgICAgICAgICAgXCJNYXRsYWJcIjtcbiAgICAgICAgICAgIFwiTUFUTEFCXCI7XG4gICAgICAgICAgICBcIk1hdGhlbWF0aWNhXCI7XG4gICAgICAgICAgICBcIk1BVEhFTUFUSUNBXCI7XG4gICAgICAgICAgICBcIk1hcGxlXCI7XG4gICAgICAgICAgICBcIk1BUExFXCI7XG4gICAgICAgICAgICBcIlNibWxcIjtcbiAgICAgICAgICAgIFwiU0JNTFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5iYWNrZW5kICksXG4gICAgICBcIlNlbGVjdCB0aGUgYmFja2VuZCBmb3JtYXRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1kb3RuZXQtb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQuZG90bmV0X291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBkb3RuZXQgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDIgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW1hcGxlLW91dHB1dFwiLFxuICAgICAgU3VwZXJhcmcuU3RyaW5nX29wdCB0Lm1hcGxlX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXBsZSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMyBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tbWF0aGVtYXRpY2Etb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWF0aGVtYXRpY2Ffb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG1hdGhlbWF0aWNhIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA0IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1tYXRsYWItb3V0cHV0XCIsXG4gICAgICBTdXBlcmFyZy5TdHJpbmdfb3B0IHQubWF0bGFiX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBtYXRsYWIgYmFja2VuZFwiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDUgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLW9jdGF2ZS1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5vY3RhdmVfb3V0cHV0LFxuICAgICAgXCJPREVzIGZpbGUgZm9yIG9jdGF2ZSBiYWNrZW5kXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgNiBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tc2JtbC1vdXRwdXRcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZ19vcHQgdC5zYm1sX291dHB1dCxcbiAgICAgIFwiT0RFcyBmaWxlIGZvciBzYm1sIGJhY2tlbmRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCA3IF0sXG4gICAgICBIaWRkZW4gKTtcbiAgICAoIFwiLS1wcm9wYWdhdGUtY29uc3RhbnRzXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJvcGFnYXRlX2NvbnN0YW50cyxcbiAgICAgIFwicHJvcGFnYXRlIGNvbnN0YW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDggXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLWNvbnN0YW50LXByb3BhZ2F0aW9uXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQucHJvcGFnYXRlX2NvbnN0YW50cyxcbiAgICAgIFwicHJvcGFnYXRlIGNvbnN0YW50c1wiLFxuICAgICAgWyBDb21tb25fYXJncy5vdXRwdXQsIDkgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNzdi1zZXBhcmF0b3JcIixcbiAgICAgIFN1cGVyYXJnLlN0cmluZyB0LmNzdl9zZXAsXG4gICAgICBcInNlcGFyYXRvciBzeW1ib2wgaW4gQ1NWIGZpbGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJhdGUtY29udmVudGlvblwiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJLYVNpbVwiLCBcImRvIG5vdCBkaXZpZGUgYnkgYW55dGhpbmdcIjtcbiAgICAgICAgICAgICggXCJEaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJ1bGVzIHRoYXQgaW5kdWNlIFxcXG4gICAgICAgICAgICAgICBhbiBhdXRvIGFsc28gaW4gdGhlIHJoc1wiICk7XG4gICAgICAgICAgXSxcbiAgICAgICAgICBbXG4gICAgICAgICAgICBcImthc2ltXCI7XG4gICAgICAgICAgICBcIktBU0lNXCI7XG4gICAgICAgICAgICBcIkthc2ltXCI7XG4gICAgICAgICAgICBcIkRJVklERV9CWV9OQlJfT0ZfQVVUT1NfSU5fTEhTXCI7XG4gICAgICAgICAgICBcImRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCI7XG4gICAgICAgICAgICBcImJpb2JoZW1pc3RcIjtcbiAgICAgICAgICAgIFwiQklPQ0hFTUlTVFwiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgdC5ydWxlX3JhdGVfY29udmVudGlvbiApLFxuICAgICAgXCJjb252ZW50aW9uIGZvciBkaXZpZGluZyBjb25zdGFudCByYXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDEgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXJ1bGUtcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiBydWxlc1wiICk7XG4gICAgICAgICAgICAoIFwiQmlvY2hlbWlzdFwiLFxuICAgICAgICAgICAgICBcImRpdmlkZSBieSB0aGUgbnVtYmVyIG9mIGF1dG9zIGluIHRoZSBsaHMgb2YgcnVsZXMgdGhhdCBpbmR1Y2UgXFxcbiAgICAgICAgICAgICAgIGFuIGF1dG8gYWxzbyBpbiB0aGUgcmhzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwia2FzaW1cIjtcbiAgICAgICAgICAgIFwiS0FTSU1cIjtcbiAgICAgICAgICAgIFwiS2FzaW1cIjtcbiAgICAgICAgICAgIFwiRElWSURFX0JZX05CUl9PRl9BVVRPU19JTl9MSFNcIjtcbiAgICAgICAgICAgIFwiZGl2aWRlX2J5X25icl9vZl9hdXRvc19pbl9saHNcIjtcbiAgICAgICAgICAgIFwiYmlvYmhlbWlzdFwiO1xuICAgICAgICAgICAgXCJCSU9DSEVNSVNUXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LnJ1bGVfcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzIChmb3IgcnVsZXMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tcmVhY3Rpb24tcmF0ZS1jb252ZW50aW9uXCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICBcIkthU2ltXCIsIFwiZG8gbm90IGRpdmlkZSBieSBhbnl0aGluZ1wiO1xuICAgICAgICAgICAgKCBcIkRpdmlkZV9ieV9uYnJfb2ZfYXV0b3NfaW5fbGhzXCIsXG4gICAgICAgICAgICAgIFwiZGl2aWRlIGJ5IHRoZSBudW1iZXIgb2YgYXV0b3MgaW4gdGhlIGxocyBvZiByZWFjdGlvbnNcIiApO1xuICAgICAgICAgICAgKCBcIkJpb2NoZW1pc3RcIixcbiAgICAgICAgICAgICAgXCJkaXZpZGUgYnkgdGhlIG51bWJlciBvZiBhdXRvcyBpbiB0aGUgbGhzIG9mIHJlYWN0aW9ucyB0aGF0IFxcXG4gICAgICAgICAgICAgICBpbmR1Y2UgYW4gYXV0byBhbHNvIGluIHRoZSByaHNcIiApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJrYXNpbVwiO1xuICAgICAgICAgICAgXCJLQVNJTVwiO1xuICAgICAgICAgICAgXCJLYXNpbVwiO1xuICAgICAgICAgICAgXCJESVZJREVfQllfTkJSX09GX0FVVE9TX0lOX0xIU1wiO1xuICAgICAgICAgICAgXCJkaXZpZGVfYnlfbmJyX29mX2F1dG9zX2luX2xoc1wiO1xuICAgICAgICAgICAgXCJiaW9iaGVtaXN0XCI7XG4gICAgICAgICAgICBcIkJJT0NIRU1JU1RcIjtcbiAgICAgICAgICBdLFxuICAgICAgICAgIHQucmVhY3Rpb25fcmF0ZV9jb252ZW50aW9uICksXG4gICAgICBcImNvbnZlbnRpb24gZm9yIGRpdmlkaW5nIGNvbnN0YW50IHJhdGVzIChmb3IgcmVhY3Rpb25zKVwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNvdW50XCIsXG4gICAgICBTdXBlcmFyZy5DaG9pY2VcbiAgICAgICAgKCBbXG4gICAgICAgICAgICAoIFwiRW1iZWRkaW5nc1wiLFxuICAgICAgICAgICAgICBcImNvdW50IHRoZSBudW1iZXIgb2YgZW1iZWRkaW5ncyBvZiBwYXR0ZXJucyBpbnRvIHNwZWNpZXNcIiApO1xuICAgICAgICAgICAgXCJPY2N1cnJlbmNlc1wiLCBcImNvdW50IHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2Ygc3BlY2llc1wiO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgWyBcImVtYmVkZGluZ3NcIjsgXCJFTUJFRERJTkdTXCI7IFwib2NjdXJyZW5jZXNcIjsgXCJPQ0NVUlJFTkNFU1wiIF0sXG4gICAgICAgICAgdC5jb3VudCApLFxuICAgICAgXCJ0dW5lIHdoZXRoZXIgd2UgY291bnQgaW4gZW1iZWRkaW5ncyBvciBpbiBvY2N1cnJlbmNlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDMgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWludGVybmFsLW1lYW5pbmdcIixcbiAgICAgIFN1cGVyYXJnLkNob2ljZVxuICAgICAgICAoIFtcbiAgICAgICAgICAgICggXCJFbWJlZGRpbmdzXCIsXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGZvciBLYXBwYSBzcGVjaWVzIGRlbm90ZSBudW1iZXJzIG9mIGVtYmVkZGluZ3NcIiApO1xuICAgICAgICAgICAgKCBcIk9jY3VycmVuY2VzXCIsXG4gICAgICAgICAgICAgIFwiVmFyaWFibGVzIGZvciBLYXBwYSBzcGVjaWVzIGRlbm90ZSBudW1iZXJzIG9mIG9jY3VycmVuY2VzXCIgKTtcbiAgICAgICAgICBdLFxuICAgICAgICAgIFsgXCJlbWJlZGRpbmdzXCI7IFwiRU1CRURESU5HU1wiOyBcIm9jY3VycmVuY2VzXCI7IFwiT0NDVVJSRU5DRVNcIiBdLFxuICAgICAgICAgIHQuaW50ZXJuYWxfbWVhbmluZyApLFxuICAgICAgXCJ0dW5lIHRoZSBtZWFuaW5nIG9mIHZhcmlhYmxlIGZvciBLYXBwYSBzcGVjaWVzICh3aGV0aGVyIGl0IGlzIHRoZSBcXFxuICAgICAgIG51bWJlciBvZiBlbWJlZGRpbmdzIG9yIHRoZSBudW1iZXIgb2Ygb2NjdXJyZW5jZXMpXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnNlbWFudGljcywgNCBdLFxuICAgICAgSGlkZGVuICk7XG4gICAgKCBcIi0tdHJ1bmNhdGVcIixcbiAgICAgIFN1cGVyYXJnLkludF9vcHQgdC5tYXhfc2l6ZV9mb3Jfc3BlY2llcyxcbiAgICAgIFwidHJ1bmNhdGUgdGhlIG5ldHdvcmsgYnkgZGlzY2FyZGluZyBzcGVjaWVzIHdpdGggc2l6ZSBncmVhdGVyIHRoYW4gdGhlIFxcXG4gICAgICAgYXJndW1lbnRcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Muc2VtYW50aWNzLCA0IF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS1tYXgtc2l6ZS1mb3Itc3BlY2llc1wiLFxuICAgICAgU3VwZXJhcmcuSW50X29wdCB0Lm1heF9zaXplX2Zvcl9zcGVjaWVzLFxuICAgICAgXCJ0cnVuY2F0ZSB0aGUgbmV0d29yayBieSBkaXNjYXJkaW5nIHNwZWNpZXMgd2l0aCBzaXplIGdyZWF0ZXIgdGhhbiB0aGUgXFxcbiAgICAgICBhcmd1bWVudFwiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDUgXSxcbiAgICAgIEhpZGRlbiApO1xuICAgICggXCItLXNob3ctcmVhY3Rpb25zXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd19yZWFjdGlvbnMsXG4gICAgICBcIkFubm90YXRlIE9ERXMgYnkgdGhlIGNvcnJlc3BvbmRpbmcgY2hlbWljYWwgcmVhY3Rpb25zXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLm91dHB1dCwgMTAgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXNtYXNoLXJlYWN0aW9uc1wiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNtYXNoX3JlYWN0aW9ucyxcbiAgICAgIFwiR2F0aGVyIGlkZW50aWNhbCByZWFjdGlvbnMgaW4gdGhlIE9ERXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3Mub3V0cHV0LCAxMTsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDEgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWNvbXB1dGUtamFjb2JpYW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5jb21wdXRlX2phY29iaWFuLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgY29tcHV0YXRpb24gb2YgdGhlIEphY29iaWFuIG9mIHRoZSBPREVzIFxcblxcXG4gICAgICAgXFx0IChub3QgYXZhaWxhYmxlIHlldClcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDIgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXdpdGgtc3ltbWV0cmllc1wiLFxuICAgICAgU3VwZXJhcmcuQ2hvaWNlXG4gICAgICAgICggW1xuICAgICAgICAgICAgXCJOb25lXCIsIFwibm8gc3ltbWV0cmllcyByZWR1Y3Rpb25cIjtcbiAgICAgICAgICAgICggXCJCYWNrd2FyZFwiLFxuICAgICAgICAgICAgICBcInVzZSB0aGUgc3ltbWV0cmllcyBzYXRpc2ZpZWQgYnkgdGhlIHJ1bGVzIGFuZCB0aGUgYWxnZWJyYWljIFxcXG4gICAgICAgICAgICAgICBleHByZXNzaW9uc1wiICk7XG4gICAgICAgICAgICAoIFwiRm9yd2FyZFwiLFxuICAgICAgICAgICAgICBcInVzZSB0aGUgc3ltbWV0cmllcyBzYXRpc2ZpZWQgYnkgdGhlIHJ1bGVzIGFuZCB0aGUgaW5pdGlhbCBzdGF0ZVwiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIF0sXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJub25lXCI7XG4gICAgICAgICAgICBcIk5PTkVcIjtcbiAgICAgICAgICAgIFwiQkFDS1dBUkRcIjtcbiAgICAgICAgICAgIFwiYmFja3dhcmRcIjtcbiAgICAgICAgICAgIFwiZm9yd2FyZFwiO1xuICAgICAgICAgICAgXCJGT1JXQVJEXCI7XG4gICAgICAgICAgICBcInRydWVcIjtcbiAgICAgICAgICAgIFwiVFJVRVwiO1xuICAgICAgICAgICAgXCJUcnVlXCI7XG4gICAgICAgICAgICBcImZhbHNlXCI7XG4gICAgICAgICAgICBcIkZBTFNFXCI7XG4gICAgICAgICAgICBcIkZhbHNlXCI7XG4gICAgICAgICAgXSxcbiAgICAgICAgICB0LndpdGhfc3ltbWV0cmllcyApLFxuICAgICAgXCJUdW5lIHdoaWNoIGtpbmQgb2YgYmlzaW11bGF0aW9uIGlzIHVzZWQgdG8gcmVkdWNlIHRoZSBzZXQgb2Ygc3BlY2llc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zZW1hbnRpY3MsIDU7IENvbW1vbl9hcmdzLm1vZGVsX3JlZHVjdGlvbiwgMSBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc2hvdy1zeW1tZXRyaWVzXCIsXG4gICAgICBTdXBlcmFyZy5Cb29sIHQuc2hvd19zeW1tZXRyaWVzLFxuICAgICAgXCJEaXNwbGF5IHRoZSBlcXVpdmFsZW5jZSByZWxhdGlvbnMgb3ZlciB0aGUgc2l0ZXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MubW9kZWxfcmVkdWN0aW9uLCAyIF0sXG4gICAgICBOb3JtYWwgKTtcbiAgICAoIFwiLS12aWV3cy1kb21haW5cIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC52aWV3cyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdmlld3MgYW5hbHlzaXMgd2hlbiBkZXRlY3Rpbmcgc3ltbWV0cmljIHNpdGVzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMSBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LmRib25kcyxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgZG91YmxlIGJvbmRzIGFuYWx5c2lzIHdoZW4gZGV0ZWN0aW5nIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5zdGF0aWNfYW5hbHlzaXMsIDIgXSxcbiAgICAgIEV4cGVydCApO1xuICAgICggXCItLXNpdGUtYWNyb3NzLWJvbmRzLWRvbWFpblwiLFxuICAgICAgU3VwZXJhcmcuQm9vbCB0LnNpdGVfYWNyb3NzLFxuICAgICAgXCJFbmFibGUvZGlzYWJsZSB0aGUgYW5hbHlzaXMgb2YgdGhlIHJlbGF0aW9uIGFtb25kIHRoZSBzdGF0ZXMgb2Ygc2l0ZXMgXFxcbiAgICAgICBpbiBjb25uZWN0ZWQgYWdlbnRzXCIsXG4gICAgICBbIENvbW1vbl9hcmdzLnN0YXRpY19hbmFseXNpcywgMyBdLFxuICAgICAgRXhwZXJ0ICk7XG4gICAgKCBcIi0tbm9ubmVnYXRpdmVcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5ub25uZWdhdGl2ZSxcbiAgICAgIFwiRW5hYmxlL2Rpc2FibGUgdGhlIGNvcnJlY3Rpb24gb2YgbmVnYXRpdmUgY29uY2VudHJhdGlvbnMgaW4gc3RpZmYgT0RFIFxcXG4gICAgICAgc3lzdGVtc1wiLFxuICAgICAgWyBDb21tb25fYXJncy5pbnRlZ3JhdGlvbl9zZXR0aW5ncywgMyBdLFxuICAgICAgTm9ybWFsICk7XG4gICAgKCBcIi0tc2hvdy10aW1lLWFkdmFuY2VcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5zaG93X3RpbWVfYWR2YW5jZSxcbiAgICAgIFwiRGlzcGxheSB0aW1lIGFkdmFuY2UgZHVyaW5nIG51bWVyaWNhbCBpbnRlZ3JhdGlvblwiLFxuICAgICAgWyBDb21tb25fYXJncy5kZWJ1Z19tb2RlLCAxIF0sXG4gICAgICBFeHBlcnQgKTtcbiAgICAoIFwiLS1pbml0aWFsLXN0ZXBcIixcbiAgICAgIFN1cGVyYXJnLkZsb2F0IHQuaW5pdGlhbF9zdGVwLFxuICAgICAgXCJJbml0aWFsIGludGVncmF0aW9uIHN0ZXBcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDQgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLW1heC1zdGVwXCIsXG4gICAgICBTdXBlcmFyZy5GbG9hdCB0Lm1heF9zdGVwLFxuICAgICAgXCJNYXhpbXVtIGludGVncmF0aW9uIHN0ZXBcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDUgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXJlbGF0aXZlLXRvbGVyYW5jZVwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5yZWxhdGl2ZV90b2xlcmFuY2UsXG4gICAgICBcInRvbGVyYW5jZSB0byByZWxhdGl2ZSByb3VuZGluZyBlcnJvcnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDYgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLWFic29sdXRlLXRvbGVyYW5jZVwiLFxuICAgICAgU3VwZXJhcmcuRmxvYXQgdC5hYnNvbHV0ZV90b2xlcmFuY2UsXG4gICAgICBcInRvbGVyYW5jZSB0byBhYnNvbHV0ZSByb3VuZGluZyBlcnJvcnNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuaW50ZWdyYXRpb25fc2V0dGluZ3MsIDcgXSxcbiAgICAgIE5vcm1hbCApO1xuICAgICggXCItLXByaW50LWVmZmljaWVuY3lcIixcbiAgICAgIFN1cGVyYXJnLkJvb2wgdC5wcmludF9lZmZpY2llbmN5LFxuICAgICAgXCJwcm9tcHQgQ1BVIHRpbWUgYW5kIHZhcmlvdXMgZGF0YXNcIixcbiAgICAgIFsgQ29tbW9uX2FyZ3MuZGVidWdfbW9kZSwgMiBdLFxuICAgICAgRXhwZXJ0ICk7XG4gIF1cblxubGV0IGdldF9vcHRpb24gb3B0aW9ucyA9XG4gIGxldCB0aXRsZSA9IFZlcnNpb24udmVyc2lvbl9rYWRlX2Z1bGxfbmFtZSBpblxuICBsZXQgaW5wdXQgPSByZWYgW10gaW5cbiAgbGV0ICgpID0gU3VwZXJhcmdUay5wYXJzZSB+dGl0bGUgb3B0aW9ucyBpbnB1dCBpblxuICAhaW5wdXRcblxubGV0IGJ1aWxkX2thc2FfcGFyYW1ldGVycyB+Y2FsbGVkX2Zyb20gdCB0X2NvbW1vbiA9XG4gIENvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzIDo9ICEodC52aWV3cyk7XG4gIENvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzIDo9ICEodC5kYm9uZHMpO1xuICBDb25maWcud2l0aF9zaXRlX2Fjcm9zc19ib25kc19hbmFseXNpcyA6PSAhKHQuc2l0ZV9hY3Jvc3MpO1xuICBDb25maWcudHJhY2UgOj0gdF9jb21tb24uQ29tbW9uX2FyZ3MuZGVidWc7XG4gIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpXG4iLCIoKipcbiAqIGhlYWRlcnMubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbi9BbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqXG4gKiBDcmVhdGlvbjogMDgvMDMvMjAxMFxuICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxOb3YgMTQgMjAxNj5cbiAqICpcbiAqIFNvbWUgcGFyYW1ldGVyc1xuICogcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAqXG4gKiBDb3B5cmlnaHQgMjAxMCwyMDExLDIwMTIsMjAxMywyMDE0LDIwMTVcbiAqIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbigqKiBpZiB1bnNhZmUgPSB0cnVlLCB0aGVuIHdoZW5ldmVyIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGEgZGVmYXVsdCB2YWx1ZSBpcyBvdXRwdXQsIGFuZCBubyBleGNlcHRpb24gaXMgcmFpc2VkKilcbmxldCBkb3RfY29tbWVudCA9IFwiI1wiXG5cbmxldCBoZWFkIHBhcmFtZXRlcnMgPVxuICBbXG4gICAgXCJUaGlzIGZpbGUgaGFzIGJlZW4gY29tcHV0ZWQgYnkgS2FTYTogYSBTdGF0aWMgQW5hbHl6ZXIgZm9yIEthcHBhIChcIlxuICAgIF4gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfc2hvcnRfdmVyc2lvbiBwYXJhbWV0ZXJzXG4gICAgXiBcIilcIjtcbiAgICBcIkRvd25sb2FkIHNvdXJjZXMvYmluYXJpZXMgYXQgaHR0cHM6Ly9naXRodWIuY29tL0thcHBhLURldi9LYVNpbVwiO1xuICAgIFwiXCI7XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbGF1bmNoZWRfd2hlbl9hbmRfd2hlcmUgcGFyYW1ldGVycztcbiAgICBcIkNvbW1hbmQgbGluZSBpczogXCJcbiAgICBeIFN0cmluZy5jb25jYXQgXCIgXCJcbiAgICAgICAgKG1hdGNoXG4gICAgICAgICAgIEFycmF5LnRvX2xpc3QgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbW1hbmRfbGluZSBwYXJhbWV0ZXJzKVxuICAgICAgICAgd2l0aFxuICAgICAgICB8IF90IDo6IHEgLT4gXCJLYVNhXCIgOjogcVxuICAgICAgICB8IFtdIC0+IFtdKTtcbiAgICBcIlwiO1xuICBdXG5cbmxldCBkb3RfdG9fcGRmID1cbiAgXCJQbGVhc2UgdXNlIGdyYXBodml6IChodHRwOi8vd3d3LmdyYXBodml6Lm9yZykgb3IgT21uaUdyYWZmbGUgdG8gZXhwb3J0IGl0IFxcXG4gICB0byBhIFBERlwiXG5cbmxldCBoZWFkX2luZmx1ZW5jZV9tYXBfaW5fZG90ID1cbiAgW1xuICAgIFwiVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgaW5mbHVlbmNlIG1hcCBpbiBkb3QuXCI7XG4gICAgZG90X3RvX3BkZjtcbiAgICBcIlwiO1xuICBdXG5cbmxldCBoZWFkX2NvbnRhY3RfbWFwX2luX2RvdCA9XG4gIFtcbiAgICBcIlRoaXMgZmlsZSBjb250YWlucyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnRhY3QgbWFwIGluIGRvdC5cIjtcbiAgICBkb3RfdG9fcGRmO1xuICAgIFwiXCI7XG4gIF1cbiIsIigqZmlsZSBuYW1lcyopXG5cbmxldCBpbnB1dCA6IHN0cmluZyBsaXN0IHJlZiA9IHJlZiBbXSAoKm5hbWUgb2YgdGhlIGthcHBhIGZpbGVzKilcbmxldCBvdXRwdXQgPSByZWYgXCJkYXRhLm91dFwiXG4iLCIoKipcbiAgKiBnZXRfb3B0aW9uLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMTgvMTIvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SmFuIDA4IDIwMjA+XG4gICogKlxuICAqIHByaW1pdGl2ZSB0byBwYXJzZSBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqXG4gICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5vcGVuIFN1cGVyYXJnXG5cbmxldCBhY3Rpb25zID0gXCJBY3Rpb25zXCIsIDAsIE5vbmVcbmxldCBzeW50YXggPSBcIlN5bnRheFwiLCAxLCBOb25lXG5sZXQgb3V0cHV0ID0gXCJPdXRwdXRcIiwgMiwgTm9uZVxubGV0IHJlYWNoYWJpbGl0eSA9IFwiUmVhY2hhYmlsaXR5IGFuYWx5c2lzXCIsIDMsIE5vbmVcbmxldCB0cmFjZXMgPSBcIlRyYWNlIGFuYWx5c2lzXCIsIDQsIE5vbmVcbmxldCBjb250YWN0X21hcCA9IFwiQ29udGFjdCBtYXBcIiwgNSwgTm9uZVxubGV0IGluZmx1ZW5jZV9tYXAgPSBcIkluZmx1ZW5jZSBtYXBcIiwgNiwgTm9uZVxubGV0IGZsb3cgPSBcIkZsb3cgb2YgaW5mb3JtYXRpb25cIiwgNywgTm9uZVxubGV0IGRlYnVnID0gXCJEZWJ1Z2dpbmcgaW5mb3JtYXRpb25cIiwgOCwgTm9uZVxuXG5sZXQgb3B0aW9ucyA9XG4gIExpc3QucmV2XG4gICAgW1xuICAgICAgKCBcIi0tZG8tYWxsXCIsXG4gICAgICAgIE11bHRpXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLWNvbnRhY3QtbWFwXCI7XG4gICAgICAgICAgICAgIFwiLS1jb21wdXRlLWluZmx1ZW5jZS1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtcG90ZW50aWFsLWN5Y2xlc1wiO1xuICAgICAgICAgICAgICBcIi0tY29tcHV0ZS1zdG9jaGFzdGljLWZsb3ctb2YtaW5mb3JtYXRpb25cIjtcbiAgICAgICAgICAgICAgXCItLWNvbXB1dGUtcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJsYXVuY2ggZXZlcnl0aGluZ1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1yZXNldC1hbGxcIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtY29udGFjdC1tYXBcIjtcbiAgICAgICAgICAgICAgXCItLW5vLWNvbXB1dGUtaW5mbHVlbmNlLW1hcFwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1PREUtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1wb3RlbnRpYWwtY3ljbGVzXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiO1xuICAgICAgICAgICAgICBcIi0tbm8tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSApLFxuICAgICAgICBcImxhdW5jaCBub3RoaW5nXCIsXG4gICAgICAgIFsgYWN0aW9ucywgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgIFwiLS12b2lkXCIsIFZvaWQsIFwiXCIsIFsgYWN0aW9ucywgMiBdLCBOb3JtYWw7XG4gICAgICAoIFwiLXN5bnRheFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJWM1wiLCBcInByZXZpb3VzIHZlcnNpb25cIjsgXCJWNFwiLCBcImN1cnJlbnQgdmVyc2lvblwiIF0sXG4gICAgICAgICAgICBbIFwiVjNcIjsgXCJWNFwiOyBcIjNcIjsgXCI0XCI7IFwidjNcIjsgXCJ2NFwiIF0sXG4gICAgICAgICAgICBDb25maWcuc3ludGF4X3ZlcnNpb24gKSxcbiAgICAgICAgXCJWZXJzaW9uIG9mIHRoZSBsZXhlci9wYXJzZXJcIixcbiAgICAgICAgWyBzeW50YXgsIDE7IGFjdGlvbnMsIDMwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1jb250YWN0LW1hcFwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19jb250YWN0X21hcCxcbiAgICAgICAgXCJjb21wdXRlIHRoZSBjb250YWN0IG1hcFwiLFxuICAgICAgICBbIGFjdGlvbnMsIDI7IGNvbnRhY3RfbWFwLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1pbmZsdWVuY2UtbWFwXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmRvX2luZmx1ZW5jZV9tYXAsXG4gICAgICAgIFwiY29tcHV0ZSB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIGFjdGlvbnMsIDM7IGluZmx1ZW5jZV9tYXAsIDAgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1pbmZsdWVuY2UtbWFwLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkluZGlyZWN0XCIsIFwiSWdub3JlIGdsdWluZyBjb21wYXRpYmlsaXR5XCI7XG4gICAgICAgICAgICAgIFwiRGlyZWN0XCIsIFwiSWdub3JlIHJlYWNoYWJsZSBzdGF0ZXNcIjtcbiAgICAgICAgICAgICAgXCJSZWFsaXNhYmxlXCIsIFwiVGFrZSBpbnRvIGFjY291bnQgcmVhY2hhYmxlIHN0YXRlc1wiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFsgXCJMb3dcIjsgXCJNZWRpdW1cIjsgXCJIaWdoXCI7IFwiRnVsbFwiIF0sXG4gICAgICAgICAgICBDb25maWcuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBpbmZsdWVuY2UgbWFwXCIsXG4gICAgICAgIFsgaW5mbHVlbmNlX21hcCwgMSBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtT0RFLWZsb3ctb2YtaW5mb3JtYXRpb25cIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fT0RFX2Zsb3dfb2ZfaW5mb3JtYXRpb24sXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBmbG93IG9mIGluZm9ybWF0aW9uIGluIHRoZSBPREUgXFxcbiAgICAgICAgIHNlbWFudGljc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDQ7IGZsb3csIDYgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXBvdGVudGlhbC1jeWNsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fc2NjLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIGJvbmRzIHRoYXQgbWF5IGJlIGludm9sdmVkIGluIHBvbHltZXJpc2F0aW9uXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNTsgY29udGFjdF9tYXAsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb21wdXRlLXN0b2NoYXN0aWMtZmxvdy1vZi1pbmZvcm1hdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zdG9jaGFzdGljX2Zsb3dfb2ZfaW5mb3JtYXRpb24sXG4gICAgICAgIFwiQ29tcHV0ZSBhbiBhcHByb3hpbWF0aW9uIG9mIHRoZSBmbG93IG9mIGluZm9ybWF0aW9uIGluIHRoZSBzdG9jaGFzdGljIFxcXG4gICAgICAgICBzZW1hbnRpY3NcIixcbiAgICAgICAgWyBhY3Rpb25zLCA2OyBmbG93LCA2IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tY29tcHV0ZS1yZWFjaGFiaWxpdHktYW5hbHlzaXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fcmVhY2hhYmlsaXR5X2FuYWx5c2lzLFxuICAgICAgICBcIkNvbXB1dGUgYW4gYXBwcm94aW1hdGlvbiBvZiB0aGUgc3RhdGVzIG9mIGFnZW50IHNpdGVzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgNzsgcmVhY2hhYmlsaXR5LCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZW5hYmxlLWV2ZXJ5LWRvbWFpblwiLFxuICAgICAgICBNdWx0aVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIi0tY29udGFjdC1tYXAtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiZHluYW1pY1wiO1xuICAgICAgICAgICAgICBcIi0tdmlld3MtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1kb3VibGUtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJlbmFibGUgZXZlcnkgYWJzdHJhY3QgZG9tYWluXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZGlzYWJsZS1ldmVyeS1kb21haW5cIixcbiAgICAgICAgTXVsdGlcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiO1xuICAgICAgICAgICAgICBcInN0YXRpY1wiO1xuICAgICAgICAgICAgICBcIi0tbm8tdmlld3MtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1kb3VibGUtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICAgIFwiLS1uby1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10gKSxcbiAgICAgICAgXCJkaXNhYmxlIGV2ZXJ5IGFic3RyYWN0IGRvbWFpblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbnRhY3QtbWFwLWRvbWFpblwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgKCBcInN0YXRpY1wiLFxuICAgICAgICAgICAgICAgIFwiVmVyeSBjb2Fyc2Ugc3RhdGljIGFic3RyYWN0aW9uOiBldmVyeSBib25kIHRoYXQgb2NjdXJzIGluIFxcXG4gICAgICAgICAgICAgICAgIGluaXRpYWwgc3RhdGVzIGFuZCByaHMgb2YgcnVsZXMgaXMgY29uc2lkZXJlZFwiICk7XG4gICAgICAgICAgICAgICggXCJkeW5hbWljXCIsXG4gICAgICAgICAgICAgICAgXCJNb3JlIGFjY3VyYXRlIGFic3RyYWN0aW9uOiBvbmx5IHRoZSBib25kcyB0aGF0IG9jY3VyIGluIHRoZSBcXFxuICAgICAgICAgICAgICAgICBpbml0aWFsIHN0YXRlIG9yIGEgcnVsZSB0aGF0IGhhcyBhbHJlYWR5IGJlZW4gYXBwbGllZCBcXFxuICAgICAgICAgICAgICAgICBzdWNjZXNzZnVsbHksIGFyZSBjb25zaWRlcmVkXCIgKTtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy53aXRoX2R5bmFtaWNfY29udGFjdF9tYXAgKSxcbiAgICAgICAgXCJjb250YWN0IG1hcCBkb21haW4gaXMgdXNlZCB0byBvdmVyLWFwcHJveGltYXRlIHNpZGUtZWZmZWN0c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXZpZXdzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3ZpZXdzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBsb2NhbCB2aWV3cyBhbmFseXNpc1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgNCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvdW50ZXJzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX2NvdW50ZXJzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBjb3VudGVyIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA1IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY291bnRlcnMtYWNjdXJhY3lcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwibm9uLXJlbGF0aW9uYWxcIiwgXCJMb3dlciBhbmQgdXBwZXIgYm91bmRzIGZvciBlYWNoIHZhcmlhYmxlXCI7XG4gICAgICAgICAgICAgICggXCJvY3RhZ29uc1wiLFxuICAgICAgICAgICAgICAgIFwiTG93ZXIgYW5kIHVwcGVyIGJvdW5kcyBmb3IgZWFjaCB2YXJpYWJsZSwgIGFuIGVhY2ggc3VtIGFuZCBcXFxuICAgICAgICAgICAgICAgICBlYWNoIGRpZmZlcmVuY2UgYW1vbmcgdHdvIHZhcmlhYmxlc1wiICk7XG4gICAgICAgICAgICAgICggXCJtaVwiLFxuICAgICAgICAgICAgICAgIFwiQXBwcm94aW1hdGUgcmVkdWNlZCBwcm9kdWN0IGJldHdlZW4gaW50ZXJ2YWxzIGFuZCBhZmZpbmUgXFxcbiAgICAgICAgICAgICAgICAgcmVsYXRpb25zaGlwc1wiICk7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBcIm9jdFwiO1xuICAgICAgICAgICAgICBcIm9jdG9cIjtcbiAgICAgICAgICAgICAgXCJvY3RhZ29uXCI7XG4gICAgICAgICAgICAgIFwiTUlcIjtcbiAgICAgICAgICAgICAgXCJNaVwiO1xuICAgICAgICAgICAgICBcIk9jdFwiO1xuICAgICAgICAgICAgICBcIk9jdG9cIjtcbiAgICAgICAgICAgICAgXCJPY3RhZ29uXCI7XG4gICAgICAgICAgICAgIFwiT2N0YWdvbnNcIjtcbiAgICAgICAgICAgICAgXCJub24tcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIm5yXCI7XG4gICAgICAgICAgICAgIFwibm9uLXJlbFwiO1xuICAgICAgICAgICAgICBcIm5vbl9yZWxcIjtcbiAgICAgICAgICAgICAgXCJub25fcmVsYXRpb25hbFwiO1xuICAgICAgICAgICAgICBcIk5vbi1yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICAgIFwiTnJcIjtcbiAgICAgICAgICAgICAgXCJOb24tcmVsXCI7XG4gICAgICAgICAgICAgIFwiTm9uX3JlbFwiO1xuICAgICAgICAgICAgICBcIk5vbl9yZWxhdGlvbmFsXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgQ29uZmlnLmNvdW50ZXJfYW5hbHlzaXNfZG9tYWluICksXG4gICAgICAgIFwiQWJzdHJhY3QgZG9tYWluIGZvciBjb3VudGVyIGFuYWx5c2lzXCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tZG91YmxlLWJvbmRzLWRvbWFpblwiLFxuICAgICAgICBCb29sIENvbmZpZy53aXRoX3BhcmFsbGVsX2JvbmRzX2FuYWx5c2lzLFxuICAgICAgICBcImVuYWJsZSBkb3VibGUgYm9uZHMgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDcgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1zaXRlcy1hY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmcgdGhlIHN0YXRlcyBvZiBzaXRlcyBpbiBcXFxuICAgICAgICAgY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXNpdGVzLWFjY3Jvc3MtYm9uZHMtZG9tYWluXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLndpdGhfc2l0ZV9hY3Jvc3NfYm9uZHNfYW5hbHlzaXMsXG4gICAgICAgIFwiZW5hYmxlIHRoZSBhbmFseXNpcyBvZiB0aGUgcmVsYXRpb24gYW1vbmcgdGhlIHN0YXRlcyBvZiBzaXRlcyBpbiBcXFxuICAgICAgICAgY29ubmVjdGVkIGFnZW50c1wiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgOCBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWNvbXB1dGUtc3ltbWV0cmllc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5kb19zeW1tZXRyaWVzLFxuICAgICAgICBcIkxvb2sgdXAgZm9yIHBhaXJzIG9mIHN5bW1ldHJpYyBzaXRlc1wiLFxuICAgICAgICBbIGFjdGlvbnMsIDggXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS12ZXJib3NpdHktbGV2ZWwtZm9yLXZpZXctYW5hbHlzaXNcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTXV0ZVwiLCBcIk5vIGluZm9ybWF0aW9uIGRpc3BsYXllZFwiO1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcIlNob3cgYW5hbHlzaXMgcmVzdWx0IG9ubHlcIjtcbiAgICAgICAgICAgICAgXCJNZWRpdW1cIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIGFwcGxpZWRcIjtcbiAgICAgICAgICAgICAgXCJIaWdoXCIsIFwiQWxzbyBzaG93IHdoZW4gbmV3IHZpZXdzIGFyZSBkaXNjb3ZlcmVkXCI7XG4gICAgICAgICAgICAgIFwiRnVsbFwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgcHV0IGluIHRoZSB3b3JraW5nIGxpc3RcIjtcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy52ZXJib3NpdHlfbGV2ZWxfZm9yX3JlYWNoYWJpbGl0eV9hbmFseXNpcyApLFxuICAgICAgICBcIlR1bmUgdGhlIHZlcmJvc2l0eSBsZXZlbCBmb3IgdGhlIHZpZXcgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDkgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS12ZXJib3NpdHktbGV2ZWwtZm9yLXJlYWNoYWJpbGl0eS1hbmFseXNpc1wiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFtcbiAgICAgICAgICAgICAgXCJNdXRlXCIsIFwiTm8gaW5mb3JtYXRpb24gZGlzcGxheWVkXCI7XG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiU2hvdyBhbmFseXNpcyByZXN1bHQgb25seVwiO1xuICAgICAgICAgICAgICBcIk1lZGl1bVwiLCBcIkFsc28gc2hvdyB3aGljaCBydWxlcyBhcmUgYXBwbGllZFwiO1xuICAgICAgICAgICAgICBcIkhpZ2hcIiwgXCJBbHNvIHNob3cgd2hlbiBwYXR0ZXJucyBhcmUgZGlzY292ZXJlZFwiO1xuICAgICAgICAgICAgICBcIkZ1bGxcIiwgXCJBbHNvIHNob3cgd2hpY2ggcnVsZXMgYXJlIHB1dCBpbiB0aGUgd29ya2luZyBsaXN0XCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudmVyYm9zaXR5X2xldmVsX2Zvcl9yZWFjaGFiaWxpdHlfYW5hbHlzaXMgKSxcbiAgICAgICAgXCJUdW5lIHRoZSB2ZXJib3NpdHkgbGV2ZWwgZm9yIHRoZSByZWFjaGFiaWxpdHkgYW5hbHlzaXNcIixcbiAgICAgICAgWyByZWFjaGFiaWxpdHksIDEwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taGlkZS1vbmUtZC1yZWxhdGlvbnMtZnJvbS1jYXJ0ZXNpYW4tZGVjb21wb3NpdGlvblwiLFxuICAgICAgICBCb29sIENvbmZpZy5oaWRlX29uZV9kX3JlbGF0aW9uc19mcm9tX2NhcnRlc2lhbl9kZWNvbXBvc2l0aW9uLFxuICAgICAgICBcIkZpbHRlciBvdXQgMS1kIHJlbGF0aW9ucyBmcm9tIHRoZSBDYXJ0ZXNpYW4gZGVjb21wb3NpdGlvblwiLFxuICAgICAgICBbIHJlYWNoYWJpbGl0eSwgMTEgXSxcbiAgICAgICAgRGV2ZWxvcHBlciApO1xuICAgICAgKCBcIi0tc21hc2gtcmVsYXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnNtYXNoX3JlbGF0aW9ucyxcbiAgICAgICAgXCJSZWNvbWJpbmUgcmVsYXRpb25zIHRvIGdldCBhIG1vcmUgcHJlY2lzZSAmIGNvbXBhY3Qgb3V0cHV0XCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMiBdLFxuICAgICAgICBEZXZlbG9wcGVyICk7XG4gICAgICAoIFwiLS1vdXRwdXQtbW9kZS1mb3ItcmVhY2hhYmlsaXR5LWFuYWx5c2lzXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcInJhd1wiLCBcIm5vIHBvc3QtcHJvY2Vzc2luZ1wiO1xuICAgICAgICAgICAgICBcImthcHBhXCIsIFwia2FwcGEgbW9kZVwiO1xuICAgICAgICAgICAgICBcImVuZ2xpc2hcIiwgXCJuYXR1cmFsIGxhbmd1YWdlXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcudXNlX25hdHVyYWxfbGFuZ3VhZ2UgKSxcbiAgICAgICAgXCJwb3N0LXByb2Nlc3MgcmVsYXRpb24gYW5kIG91dHB1dCB0aGUgcmVzdWx0IGluIHRoZSBjaG9zZW4gZm9ybWF0XCIsXG4gICAgICAgIFsgcmVhY2hhYmlsaXR5LCAxMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWNvbXB1dGUtbG9jYWwtdHJhY2VzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmNvbXB1dGVfbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIkNvbXB1dGUgdGhlIGxvY2FsIHRyYWNlcyBvZiBpbnRlcmVzdGluZyBwYXJ0cyBvZiBhZ2VudCBpbnRlcmZhY2VzXCIsXG4gICAgICAgIFsgYWN0aW9ucywgOTsgdHJhY2VzLCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tc2hvdy1ydWxlLW5hbWVzLWluLWxvY2FsLXRyYWNlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5zaG93X3J1bGVfbmFtZXNfaW5fbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIkFubm90YXRlIGVhY2ggdHJhbnNpdGlvbiB3aXRoIHRoZSBuYW1lIG9mIHRoZSBydWxlcyBpbiB0cmFjZSBcXFxuICAgICAgICAgYWJzdHJhY3Rpb25cIixcbiAgICAgICAgWyB0cmFjZXMsIDEgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS11c2UtbWFjcm90cmFuc2l0aW9ucy1pbi1sb2NhbC10cmFjZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcudXNlX21hY3JvdHJhbnNpdGlvbnNfaW5fbG9jYWxfdHJhY2VzLFxuICAgICAgICBcIlVzZSBtYWNyb3RyYW5zaXRpb25zIHRvIGdldCBhIGNvbXBhY3QgdHJhY2UgdXAgdG8gY2hhbmdlIG9mIHRoZSBcXFxuICAgICAgICAgaW50ZXJsZWF2aW5nIG9yZGVyIG9mIGNvbW11dGluZyBtaWNyb3RyYW5zaXRpb25zXCIsXG4gICAgICAgIFsgdHJhY2VzLCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0taWdub3JlLXRyaXZpYWwtbG9zYW5nZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuZG9fbm90X2NvbXByZXNzX3RyaXZpYWxfbG9zYW5nZXMsXG4gICAgICAgIFwiRG8gbm90IHVzZSBtYWNyb3RyYW5zaXRpb25zIGZvciBzaW1wbGlmeWluZyB0cml2aWFsIGxvc2FuZ2VzXCIsXG4gICAgICAgIFsgdHJhY2VzLCAzIF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tYWRkLXNpbmd1bGFyLW1hY3Jvc3RhdGVzXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmFkZF9zaW5ndWxhcl9tYWNyb3N0YXRlcyxcbiAgICAgICAgXCJDb21wbGV0ZSB0aGUgc2ltcGxpY2lhbCBjb21wbGV4ZXMgd2l0aCBzaW5ndWxhciBpbnRlcnNlY3Rpb24gb2YgXFxcbiAgICAgICAgIGhpZ2hlci1kaW1lbnNpb24gZmFjZXNcIixcbiAgICAgICAgWyB0cmFjZXMsIDQgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1hZGQtc2luZ3VsYXItbWljcm9zdGF0ZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYWRkX3Npbmd1bGFyX21pY3Jvc3RhdGVzLFxuICAgICAgICBcIkNvbXBsZXRlIHRoZSBzaW1wbGljaWFsIGNvbXBsZXhlcyB3aXRoIHNpbmd1bGFyIGludGVyc2VjdGlvbiBvZiBcXFxuICAgICAgICAgaGlnaGVyLWRpbWVuc2lvbiBmYWNlc1wiLFxuICAgICAgICBbIHRyYWNlcywgNSBdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWNvbXB1dGUtc2VwYXJhdGluZy10cmFuc2l0aW9uc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5jb21wdXRlX3NlcGFyYXRpbmdfdHJhbnNpdGlvbnMsXG4gICAgICAgIFwiQ29tcHV0ZSB0aGUgdHJhbnNpdGlvbnMgdGhhdCBzZXBhcmF0ZXMgc3Ryb25nbHkgY29ubmVjdGVkIHNldCBvZiBcXFxuICAgICAgICAgY29uZmlndXJhdGlvbnNcIixcbiAgICAgICAgWyBhY3Rpb25zLCAxMDsgdHJhY2VzLCA2IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWRpcmVjdG9yeVwiLFxuICAgICAgICBNdWx0aUV4dFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtY29udGFjdC1tYXAtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXAtZGlyZWN0b3J5XCIsIFwiXCI7XG4gICAgICAgICAgICBcIi0tb3V0cHV0LWxvY2FsLXRyYWNlcy1kaXJlY3RvcnlcIiwgXCJcIjtcbiAgICAgICAgICAgIFwiLS1vdXRwdXQtbG9nLWRpcmVjdG9yeVwiLCBcIlwiO1xuICAgICAgICAgIF0sXG4gICAgICAgIFwiRGVmYXVsdCByZXBvc2l0b3J5IGZvciBvdXRwdXRzXCIsXG4gICAgICAgIFsgb3V0cHV0LCAwIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCogQ09OVEFDVCBNQVAgKilcbiAgICAgICggXCItLW91dHB1dC1jb250YWN0LW1hcC1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfY21fZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgY29udGFjdCBtYXAgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgMDsgY29udGFjdF9tYXAsIDMgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1vdXRwdXQtY29udGFjdC1tYXBcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5jb250YWN0X21hcF9maWxlLFxuICAgICAgICBcImZpbGUgbmFtZSBmb3IgdGhlIGNvbnRhY3QgbWFwIG91dHB1dFwiLFxuICAgICAgICBbIG91dHB1dCwgMTsgY29udGFjdF9tYXAsIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoIFwiLS1jb250YWN0LW1hcC1mb3JtYXRcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiRE9UXCIsIFwiZG90IGZvcm1hdFwiO1xuICAgICAgICAgICAgICBcIkdFUEhJXCIsIFwiR2VwaGkgZm9ybWF0XCI7XG4gICAgICAgICAgICAgICgqXCJIVE1MXCIsXCJIVE1MIGZvcm1hdFwiKilcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBbXSxcbiAgICAgICAgICAgIENvbmZpZy5jb250YWN0X21hcF9mb3JtYXQgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBvdXRwdXQgZm9ybWF0IGZvciB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDI7IGNvbnRhY3RfbWFwLCA1IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tY29udGFjdC1tYXAtYWNjdXJhY3ktbGV2ZWxcIixcbiAgICAgICAgQ2hvaWNlXG4gICAgICAgICAgKCBbXG4gICAgICAgICAgICAgIFwiTG93XCIsIFwiQ29sbGVjdCBpbmZvIGZyb20gcmhzIG9mIHJ1bGVzIGFuZCBpbml0aWFsIHN0YXRlXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcIk9ubHkgY29uc2lkZXIgcmVhY2hhYmxlIHJ1bGVzXCI7XG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICBDb25maWcuY29udGFjdF9tYXBfYWNjdXJhY3lfbGV2ZWwgKSxcbiAgICAgICAgXCJUdW5lIHRoZSBhY2N1cmFjeSBsZXZlbCBvZiB0aGUgY29udGFjdCBtYXBcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgNiBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXBvbHltZXItZGV0ZWN0aW9uLWFjY3VyYWN5LWxldmVsXCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggW1xuICAgICAgICAgICAgICBcIkxvd1wiLCBcImJhc2VkIG9ubHkgb24gdGhlIGNvbnRhY3QgbWFwXCI7XG4gICAgICAgICAgICAgIFwiSGlnaFwiLCBcInVzZSByZWFjaGFiaWxpdHkgYW5hbHlzaXMgYXMgd2VsbFwiO1xuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLnNjY19hY2N1cmFjeV9sZXZlbCApLFxuICAgICAgICBcIlR1bmUgdGhlIGFjY3VyYWN5IGxldmVsIG9mIHRoZSBkZXRlY3Rpb24gb2YgcG9seW1lcnNcIixcbiAgICAgICAgWyBjb250YWN0X21hcCwgNyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLXB1cmUtY29udGFjdFwiLFxuICAgICAgICBCb29sIENvbmZpZy5wdXJlX2NvbnRhY3QsXG4gICAgICAgIFwic2hvdyBpbiB0aGUgY29udGFjdCBtYXAgIG9ubHkgdGhlIHNpdGVzIHdpdGggYSBiaW5kaW5nIHN0YXRlXCIsXG4gICAgICAgIFsgY29udGFjdF9tYXAsIDggXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoKiBJTkZMVUVOQ0UgTUFQICopXG4gICAgICAoIFwiLS1vdXRwdXQtaW5mbHVlbmNlLW1hcC1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfaW1fZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgaW5mbHVlbmNlIG1hcCBmaWxlIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCAzOyBpbmZsdWVuY2VfbWFwLCAyIF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tb3V0cHV0LWluZmx1ZW5jZS1tYXBcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5pbmZsdWVuY2VfbWFwX2ZpbGUsXG4gICAgICAgIFwiZmlsZSBuYW1lIGZvciB0aGUgaW5mbHVlbmNlIG1hcFwiLFxuICAgICAgICBbIG91dHB1dCwgMzsgaW5mbHVlbmNlX21hcCwgMyBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICggXCItLWluZmx1ZW5jZS1tYXAtZm9ybWF0XCIsXG4gICAgICAgIENob2ljZVxuICAgICAgICAgICggWyBcIkRPVFwiLCBcImRvdCBmb3JtYXRcIjsgXCJESU1cIiwgXCJESU0gZm9ybWF0XCI7IFwiSFRNTFwiLCBcIkhUTUwgZm9ybWF0XCIgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmluZmx1ZW5jZV9tYXBfZm9ybWF0ICksXG4gICAgICAgIFwiVHVuZSB0aGUgb3V0cHV0IGZvcm1hdCBmb3IgdGhlIGluZmx1ZW5jZSBtYXBcIixcbiAgICAgICAgWyBvdXRwdXQsIDQ7IGluZmx1ZW5jZV9tYXAsIDQgXSxcbiAgICAgICAgTm9ybWFsICk7XG4gICAgICAoKiBMT0NBTCBUUkFDRVMgKilcbiAgICAgICggXCItLW91dHB1dC1sb2NhbC10cmFjZXMtZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcub3V0cHV0X2xvY2FsX3RyYWNlX2RpcmVjdG9yeSxcbiAgICAgICAgXCJwdXQgdGhlIGZpbGVzIGFib3V0IGxvY2FsIHRyYWNlcyBpbiB0aGlzIGRpcmVjdG9yeVwiLFxuICAgICAgICBbIG91dHB1dCwgNTsgdHJhY2VzLCA3IF0sXG4gICAgICAgIE5vcm1hbCApO1xuICAgICAgKCBcIi0tbG9jYWwtdHJhY2VzLWZvcm1hdFwiLFxuICAgICAgICBDaG9pY2VcbiAgICAgICAgICAoIFsgXCJET1RcIiwgXCJkb3QgZm9ybWF0XCI7IFwiSFRNTFwiLCBcIkhUTUwgZm9ybWF0XCIgXSxcbiAgICAgICAgICAgIFtdLFxuICAgICAgICAgICAgQ29uZmlnLmxvY2FsX3RyYWNlX2Zvcm1hdCApLFxuICAgICAgICBcIlR1bmUgdGhlIG91dHB1dCBmb3JtYXQgZm9yIHRoZSBsb2NhbCB0cmFuc2l0aW9uIHN5c3RlbXNcIixcbiAgICAgICAgWyBvdXRwdXQsIDY7IHRyYWNlcywgOCBdLFxuICAgICAgICBOb3JtYWwgKTtcbiAgICAgICgqIExPRyAqKVxuICAgICAgKCBcIi0tb3V0cHV0LWxvZy1kaXJlY3RvcnlcIixcbiAgICAgICAgU3RyaW5nIENvbmZpZy5vdXRwdXRfZGlyZWN0b3J5LFxuICAgICAgICBcInB1dCB0aGUgbG9nIGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5XCIsXG4gICAgICAgIFsgb3V0cHV0LCA3OyBkZWJ1ZywgMCBdLFxuICAgICAgICBFeHBlcnQgKTtcbiAgICAgICggXCItLWRlYnVnXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDEgXSxcbiAgICAgICAgRXhwZXJ0ICk7XG4gICAgICAoIFwiLS1kZWJ1Zy1tb2RlXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLnRyYWNlLFxuICAgICAgICBcImR1bXAgZGVidWdnaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFsgZGVidWcsIDIgXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1kZWJ1Z2dpbmctbW9kZVwiLFxuICAgICAgICBCb29sIENvbmZpZy50cmFjZSxcbiAgICAgICAgXCJkdW1wIGRlYnVnZ2luZyBpbmZvcm1hdGlvblwiLFxuICAgICAgICBbIGRlYnVnLCAzIF0sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tdW5zYWZlLW1vZGVcIixcbiAgICAgICAgQm9vbCBDb25maWcudW5zYWZlLFxuICAgICAgICBcImV4Y2VwdGlvbnMgYXJlIGdhdGhlcmVkIGF0IHRoZSBlbmQgb2YgdGhlIGNvbXB1dGF0aW9uLCBpbnN0ZWFkIG9mIFxcXG4gICAgICAgICBoYWx0aW5nIGl0IFwiLFxuICAgICAgICBbIGRlYnVnLCA0IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tcHJpbnQtZWZmaWNpZW5jeVwiLFxuICAgICAgICBCb29sIENvbmZpZy5wcmludF9lZmZpY2llbmN5LFxuICAgICAgICBcInByb21wdCBDUFUgdGltZSBhbmQgdmFyaW91cyBkYXRhc1wiLFxuICAgICAgICBbIGRlYnVnLCA1IF0sXG4gICAgICAgIEV4cGVydCApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItcnVsZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX3J1bGVzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBydWxlc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1jb25zdHJhaW50c1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfY29uc3RyYWludHMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHJlZmluZW1lbnQgY29uc3RyYWludHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItbnItY29uc3RyYWludHNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX25yX2NvbnN0cmFpbnRzLFxuICAgICAgICBcImR1bXAgdGhlIG51bWJlciBvZiBub24gcmVsYXRpb25hbCByZWZpbmVtZW50IGNvbnN0cmFpbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLWluZmx1ZW5jZXNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX2luZmx1ZW5jZXMsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIGluZmx1ZW5jZSByZWxhdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItZGVhZC1ydWxlc1wiLFxuICAgICAgICBCb29sIENvbmZpZy5iYWNrZG9vcl9uYnJfb2ZfZGVhZF9ydWxlcyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgZGVhZCBydWxlc1wiLFxuICAgICAgICBbXSxcbiAgICAgICAgSGlkZGVuICk7XG4gICAgICAoIFwiLS1iYWNrZG9vci1kdW1wLW5ici1ub24td2Vha2x5LXJldmVyc2libGUtdHJhbnNpdGlvbnNcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfbmJyX29mX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2Ygbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtbmJyLW9mLXJ1bGVzLXdpdGgtbm9uLXdlYWtseS1yZXZlcnNpYmxlLXRyYW5zaXRpb25zXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9ydWxlc193aXRoX25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyxcbiAgICAgICAgXCJkdW1wIHRoZSBudW1iZXIgb2YgcnVsZXMgd2l0aCBub24gd2Vha2x5IHJldmVyc2libGUgdHJhbnNpdGlvbnNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC1uYnItc2NjXCIsXG4gICAgICAgIEJvb2wgQ29uZmlnLmJhY2tkb29yX25icl9vZl9zY2MsXG4gICAgICAgIFwiZHVtcCB0aGUgbnVtYmVyIG9mIHN0cm9uZ2x5IGNvbm5lY3RlZCBjb21wb25lbnRzXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICAgICggXCItLWJhY2tkb29yLWR1bXAtYXZlcmFnZS1zY2NcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfYXZlcmFnZV9zaXplX29mX3NjYyxcbiAgICAgICAgXCJkdW1wIHRoZSBhdmVyYWdlIHNpemUgb2Ygc3Ryb25nbHkgY29ubmVjdGVkIGNvbXBvbmVudHNcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZHVtcC10aW1pbmdcIixcbiAgICAgICAgQm9vbCBDb25maWcuYmFja2Rvb3JfdGltaW5nLFxuICAgICAgICBcImR1bXAgQ1BVIHRpbWVcIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZmlsZVwiLFxuICAgICAgICBTdHJpbmcgQ29uZmlnLmJhY2tkb29yX2ZpbGUsXG4gICAgICAgIFwic2VsZWN0IHRoZSBmaWxlIHRvIGR1bXAgYmFja2Rvb3IgaW5mb3JtYXRpb25cIixcbiAgICAgICAgW10sXG4gICAgICAgIEhpZGRlbiApO1xuICAgICAgKCBcIi0tYmFja2Rvb3ItZGlyZWN0b3J5XCIsXG4gICAgICAgIFN0cmluZyBDb25maWcuYmFja2Rvb3JfZGlyZWN0b3J5LFxuICAgICAgICBcInNlbGVjdCB0aGUgZGlyZWN0b3J5IGZvciB0aGUgZmlsZSB0byBkdW1wIGJhY2tkb29yIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIFtdLFxuICAgICAgICBIaWRkZW4gKTtcbiAgICBdXG5cbmxldCBnZXRfb3B0aW9uIGVycm9yID1cbiAgbGV0IHRpdGxlID0gVmVyc2lvbi52ZXJzaW9uX2thc2FfZnVsbF9uYW1lIGluXG4gIGxldCAoKSA9IFN1cGVyYXJnVGsucGFyc2UgfnRpdGxlIG9wdGlvbnMgRmlsZU5hbWVzLmlucHV0IGluXG4gIGxldCBwYXJhbWV0ZXJzID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wYXJhbWV0ZXJzIH5jYWxsZWRfZnJvbTpSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhXG4gICAgICAoKVxuICBpblxuICBlcnJvciwgcGFyYW1ldGVycywgIUZpbGVOYW1lcy5pbnB1dFxuIiwiKCoqXG4gKiBleGNlcHRpb24ubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDA4LzAzLzIwMTBcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXVnIDE1IDIwMTY+XG4gKiAqXG4gKiBUaGlzIGxpYnJhcnkgZGVjbGFyZXMgZXhjZXB0aW9uc1xuICpcbiAqIENvcHlyaWdodCAyMDEwIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlIG1ldGhvZF9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm1ldGhvZF9oYW5kbGVyXG5cbmxldCBlbXB0eV9lcnJvcl9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXJcbmxldCBpc19lbXB0eV9lcnJvcl9oYW5kbGVyID0gRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmlzX2VtcHR5X2Vycm9yX2hhbmRsZXJcblxubGV0IHNhZmVfd2FybiBwYXJhbWV0ZXJzIF9lcnJvcl9oYW5kbGVyIGZpbGVfbmFtZSBtZXNzYWdlIGV4biBfZGVmYXVsdCA9XG4gIGxldCB1bmNhdWdodCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvbiA/ZmlsZV9uYW1lID9tZXNzYWdlIGV4blxuICBpblxuICBsZXQgc3RyaW5nbGlzdCA9XG4gICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgdW5jYXVnaHRcbiAgICAgIFsgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4IHBhcmFtZXRlcnMgXVxuICBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgc3RyaW5nbGlzdFxuICBpblxuICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIGluXG4gIHJhaXNlIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuVW5jYXVnaHRfZXhjZXB0aW9uIHVuY2F1Z2h0KVxuXG5sZXQgdW5zYWZlX3dhcm4gX3BhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgZmlsZV9uYW1lIG1lc3NhZ2UgZXhuIGRlZmF1bHQgPVxuICBsZXQgdW5jYXVnaHQgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb24gP2ZpbGVfbmFtZSA/bWVzc2FnZSBleG5cbiAgaW5cbiAgKCBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yIHVuY2F1Z2h0ID90b191aSBlcnJvcl9oYW5kbGVyLFxuICAgIGRlZmF1bHQgKCkgKVxuXG5sZXQgd2Fybl9hdXggcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlIG1lc3NhZ2UgZXhuIGRlZmF1bHQgPVxuICBsZXQgZXJyb3IsIGRmdCA9XG4gICAgaWYgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdW5zYWZlIHBhcmFtZXRlcnMgdGhlblxuICAgICAgdW5zYWZlX3dhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlIG1lc3NhZ2UgZXhuIGRlZmF1bHRcbiAgICBlbHNlXG4gICAgICBzYWZlX3dhcm4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyIGZpbGUgbWVzc2FnZSBleG4gZGVmYXVsdFxuICBpblxuICBsZXQgKCkgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfZXJyb3JfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIGVycm9yLCBkZnRcblxubGV0IHdhcm5fd2l0aF9leG4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSAoZmlsZSwgbGluZSwgXywgXylcbiAgICA/KG1lc3NhZ2UgPSBcIlwiKSA/KHBvcyA9IE5vbmUpIGV4biBkZWZhdWx0ID1cbiAgbGV0IGxpYWlzb24gPVxuICAgIGlmIG1lc3NhZ2UgPSBcIlwiICYmIHBvcyA9IE5vbmUgdGhlblxuICAgICAgXCJcIlxuICAgIGVsc2VcbiAgICAgIFwiOiBcIlxuICBpblxuICBsZXQgcG9zID1cbiAgICBtYXRjaCBwb3Mgd2l0aFxuICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgfCBTb21lIHMgLT4gXCIsIFwiIF4gTG9jLnRvX3N0cmluZyBzXG4gIGluXG4gIHdhcm5fYXV4IHBhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgKFNvbWUgZmlsZSlcbiAgICAoU29tZSAoXCJsaW5lIFwiIF4gc3RyaW5nX29mX2ludCBsaW5lIF4gcG9zIF4gbGlhaXNvbiBeIG1lc3NhZ2UpKVxuICAgIGV4biBkZWZhdWx0XG5cbmxldCB3YXJuIHBhcmFtZXRlcnMgZXJyb3JfaGFuZGxlciA/dG9fdWkgZmlsZV9saW5lID8obWVzc2FnZSA9IFwiXCIpID9wb3MgZXhuXG4gICAgZGVmYXVsdCA9XG4gIHdhcm5fd2l0aF9leG4gcGFyYW1ldGVycyBlcnJvcl9oYW5kbGVyID90b191aSBmaWxlX2xpbmUgfm1lc3NhZ2UgfnBvcyBleG5cbiAgICAoZnVuICgpIC0+IGRlZmF1bHQpXG5cbmxldCBwcmludF9mb3JfS2FTaW0gcGFyYW1ldGVycyBoYW5kbGVycyA9XG4gIGxldCBwYXJhbWV0ZXJzID0gUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4IHBhcmFtZXRlcnMgXCJlcnJvcjogXCIgaW5cbiAgbGV0IF8gPVxuICAgIExpc3QuaXRlclxuICAgICAgKGZ1biBjYXVnaHQgLT5cbiAgICAgICAgbGV0IHN0cmluZ2xpc3QgPVxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgOjogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfY2F1Z2h0IGNhdWdodCBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlc1wiKVxuICAgICAgICAgICAgc3RyaW5nbGlzdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgaW5cbiAgICAgICAgKCkpXG4gICAgICAoTGlzdC5yZXZcbiAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycykpXG4gIGluXG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gdW5jYXVnaHQgLT5cbiAgICAgICAgbGV0IHN0cmluZ2xpc3QgPVxuICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzXG4gICAgICAgICAgOjogRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnN0cmluZ2xpc3Rfb2ZfdW5jYXVnaHQgdW5jYXVnaHQgW11cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIExpc3QuaXRlclxuICAgICAgICAgICAgKExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiJXNcIilcbiAgICAgICAgICAgIHN0cmluZ2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgIGluXG4gICAgICAgICgpKVxuICAgICAgKExpc3QucmV2XG4gICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycykpXG4gIGluXG4gICgpXG5cbmxldCBwcmludCBwYXJhbWV0ZXJzIGhhbmRsZXJzID1cbiAgaWZcbiAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycyA9IFtdXG4gICAgJiYgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmdldF91bmNhdWdodF9leGNlcHRpb25fbGlzdCBoYW5kbGVycyA9IFtdXG4gIHRoZW4gKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzZXhlY3V0aW9uIGZpbmlzaGVkIHdpdGhvdXQgYW55IGV4Y2VwdGlvblwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXggcGFyYW1ldGVycylcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgKClcbiAgKSBlbHNlIChcbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgXCIlc1NvbWUgZXhjZXB0aW9ucyBoYXZlIGJlZW4gcmFpc2VkXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICBwcmludF9mb3JfS2FTaW0gcGFyYW1ldGVycyBoYW5kbGVyc1xuICApXG5cbmxldCBwcmludF9lcnJvcnNfbGlnaHRfZm9yX2thc2ltIHBhcmFtZXRlcnMgaGFuZGxlcnMgPVxuICBpZlxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgICAmJiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IGhhbmRsZXJzID0gW11cbiAgdGhlblxuICAgICgpXG4gIGVsc2UgKFxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICBcIiVzU29tZSBleGNlcHRpb25zIGhhdmUgYmVlbiByYWlzZWQgZHVyaW5nIHRoZSBzdGF0aWMgYW5hbHlzaXMsIHBsZWFzZSBcXFxuICAgICAgICAgYW5hbHlzZSB5b3VyIGZpbGUgd2l0aCBLYVNhXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgaW5cbiAgICAoKVxuICApXG5cbmxldCB3cmFwIHBhcmFtZXRlcnMgZXJyb3Igc3RyaW5nIHN0cmluZ19vcHQgZXhuID1cbiAgZnN0ICh3YXJuX2F1eCBwYXJhbWV0ZXJzIGVycm9yIChTb21lIHN0cmluZykgc3RyaW5nX29wdCBleG4gKGZ1biAoKSAtPiAoKSkpXG5cbmxldCBfbGlmdF9lcnJvcl9sb2dzX2Zvcl9LYVNhIGYgPVxuICBmIChmdW4gcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgc3RyaW5nX29wdCBleG4gLT5cbiAgICAgIGZzdFxuICAgICAgICAod2Fybl9hdXggcGFyYW1ldGVycyBlcnJvciAoU29tZSBzdHJpbmcpIHN0cmluZ19vcHQgZXhuIChmdW4gKCkgLT4gKCkpKSlcblxubGV0IGNoZWNrX3BvaW50XG4gICAgKHdhcm4gOlxuICAgICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgICAgbWV0aG9kX2hhbmRsZXIgLT5cbiAgICAgID90b191aTpib29sIC0+XG4gICAgICAnYSAtPlxuICAgICAgP21lc3NhZ2U6c3RyaW5nIC0+XG4gICAgICA/cG9zOkxvYy50IC0+XG4gICAgICBleG4gLT5cbiAgICAgIHVuaXQgLT5cbiAgICAgIG1ldGhvZF9oYW5kbGVyICogdW5pdCkgcGFyYW1ldGVyIGVycm9yIGVycm9yJyBzID90b191aSA/bWVzc2FnZSA/cG9zIGV4biA9XG4gIGlmIGVycm9yID09IGVycm9yJyB0aGVuXG4gICAgZXJyb3JcbiAgZWxzZSAoXG4gICAgbGV0IGVycm9yLCAoKSA9IHdhcm4gcGFyYW1ldGVyIGVycm9yJyA/dG9fdWkgcyA/bWVzc2FnZSA/cG9zIGV4biAoKSBpblxuICAgIGVycm9yXG4gIClcbiIsIigqKiBUaW1lLXN0YW1wOiA8SnVsIDAyIDIwMTY+ICopXG5cbmxldCBmb3JfS2FTaW0gZiA9IGYgKGZ1biBfIF8gXyBfIF8gLT4gKCkpICgpICgpXG5sZXQgbGlmdF9nZW5lcmljX2JpbmFyeV9mb3JfS2FTaW0gZiBhIGIgPSBzbmQgKGZvcl9LYVNpbSBmIGEgYilcblxubGV0IGxpZnRfZ2VuZXJpY19iaW5hcnlfYmluYXJ5X2Zvcl9LYVNpbSBmIGEgYiA9XG4gIGxldCBfLCBiLCBjID0gZm9yX0thU2ltIGYgYSBiIGluXG4gIGIsIGNcblxubGV0IGxpZnRfZ2VuZXJpY190ZXJuYXJ5X2Zvcl9LYVNpbSBmIGEgYiBjID0gc25kIChmb3JfS2FTaW0gZiBhIGIgYylcblxubGV0IGxpZnRfZ2VuX3VuYXJ5IGR1bXAgZiBhID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2Vycm9yX2hhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPSBmIHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfZ2VuX2JpbmFyeSBkdW1wIGYgYSBiID1cbiAgbGV0IHBhcmFtZXRlcnMgPVxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZHVtbXlfcGFyYW1ldGVyc1xuICAgICAgfmNhbGxlZF9mcm9tOlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkthU2EgKClcbiAgaW5cbiAgbGV0IGVycm9yID0gRXhjZXB0aW9uLmVtcHR5X2Vycm9yX2hhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBvdXRwdXQgPSBmIHBhcmFtZXRlcnMgZXJyb3IgYSBiIGluXG4gIGxldCBfID0gZHVtcCBwYXJhbWV0ZXJzIGVycm9yIGluXG4gIG91dHB1dFxuXG5sZXQgbGlmdF9nZW5fdGVybmFyeSBkdW1wIGYgYSBiIGMgPVxuICBsZXQgcGFyYW1ldGVycyA9XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVycy5kdW1teV9wYXJhbWV0ZXJzXG4gICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTYSAoKVxuICBpblxuICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlciBpblxuICBsZXQgZXJyb3IsIG91dHB1dCA9IGYgcGFyYW1ldGVycyBlcnJvciBhIGIgYyBpblxuICBsZXQgXyA9IGR1bXAgcGFyYW1ldGVycyBlcnJvciBpblxuICBvdXRwdXRcblxubGV0IGxpZnRfd2l0aF9vbl90aGVfZmx5X2xvZ2dpbmdfdW5hcnkgZiBhID0gbGlmdF9nZW5fdW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYVxuXG5sZXQgbGlmdF93aXRoX29uX3RoZV9mbHlfbG9nZ2luZ19iaW5hcnkgZiBhIGIgPVxuICBsaWZ0X2dlbl9iaW5hcnkgRXhjZXB0aW9uLnByaW50IGYgYSBiXG5cbmxldCBsaWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX3Rlcm5hcnkgZiBhIGIgYyA9XG4gIGxpZnRfZ2VuX2JpbmFyeSBFeGNlcHRpb24ucHJpbnQgZiBhIGIgY1xuXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfdW5hcnkgZiBhID0gbGlmdF9nZW5fdW5hcnkgKGZ1biBfIF8gLT4gKCkpIGYgYVxubGV0IGxpZnRfd2l0aG91dF9sb2dnaW5nX2JpbmFyeSBmIGEgYiA9IGxpZnRfZ2VuX2JpbmFyeSAoZnVuIF8gXyBfIC0+ICgpKSBmIGEgYlxuXG5sZXQgbGlmdF93aXRob3V0X2xvZ2dpbmdfdGVybmFyeSBmIGEgYiBjID1cbiAgbGlmdF9nZW5fdGVybmFyeSAoZnVuIF8gXyBfIF8gLT4gKCkpIGYgYSBiIGNcbiIsIigqKlxuICAqIHN0b3J5UHJvZmlsaW5nLm1sXG4gICpcbiAgKiBHZW5lcmF0ZSBwcm9maWxpbmcgaW5mb3JtYXRpb24gZm9yIHN0b3JpZXMgaW4gS2FTaW1cbiAgKlxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAwOS8wNC8yMDEyXG4gICogTGFzdCBtb2RpZmljYXRpb246IDE1LzA2LzIwMTJcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgc3RlcF9raW5kID1cbiAgfCBEdW1teVxuICB8IEJlZ2lubmluZ1xuICB8IENvbGxlY3RfdHJhY2VzXG4gIHwgQ2F1c2FsX2NvbXByZXNzaW9uXG4gIHwgV2Vha19jb21wcmVzc2lvblxuICB8IFN0cm9uZ19jb21wcmVzc2lvblxuICB8IEl0ZXJhdGlvbiBvZiBpbnRcbiAgfCBTdG9yeSBvZiBpbnRcbiAgfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvblxuICB8IFNpcGhvbl9kZXRlY3Rpb25cbiAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZVxuICB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuICB8IFBzZXVkb19pbnZlcnNlX2RlbGV0aW9uXG4gIHwgUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGVcbiAgfCBDb21wcmVzc2lvblxuICB8IEJ1aWxkX2dyaWRcbiAgfCBCdWlsZF9jb25maWd1cmF0aW9uXG4gIHwgVHJhbnNpdGl2ZV9jbG9zdXJlXG4gIHwgR3JhcGhfcmVkdWN0aW9uXG4gIHwgR3JhcGhfY29udmVyc2lvblxuICB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb25cbiAgfCBTdG9yZV90cmFjZVxuICB8IFJlbW92aW5nX2JsYWNrbGlzdGVkX2V2ZW50c1xuICB8IEJsYWNrbGlzdGluZ19ldmVudHNcbiAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb25cbiAgfCBEb21haW5zX2luaXRpYWxpemF0aW9uXG4gIHwgRG9tYWluX2luaXRpYWxpemF0aW9uIG9mIHN0cmluZ1xuICB8IEFwcGx5X3J1bGUgb2YgaW50XG4gIHwgSW5pdGlhbF9zdGF0ZSBvZiBpbnRcbiAgfCBTY2FuX3J1bGVfc3RhdGljIG9mIGludFxuICB8IFNjYW5fcnVsZV9keW5hbWljIG9mIGludFxuICB8IFJlZ3VsYXJfaW5mbHVlbmNlc1xuICB8IFNpZGVfZWZmZWN0c19pbmZsdWVuY2VzXG4gIHwgTWVyZ2VfaW5mbHVlbmNlc1xuICB8IEthU2ltX2NvbXBpbGF0aW9uXG4gIHwgS2FTYV9wcmVjb21waWxhdGlvblxuICB8IEthU2FfbGV4aW5nXG4gIHwgS2FTYV9saW5raW5nXG4gIHwgSW5mbHVlbmNlX21hcCBvZiBzdHJpbmdcbiAgfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIG9mIHN0cmluZ1xuICB8IExLYXBwYV9zaWduYXR1cmVcblxubGV0IHN0cmluZ19vZl9zdGVwX2tpbmQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IER1bW15IHwgQmVnaW5uaW5nIC0+IFwiXCJcbiAgfCBCdWlsZF9jb25maWd1cmF0aW9uIC0+IFwiQnVpbGQgY29uZmlndXJhdGlvblwiXG4gIHwgQ29sbGVjdF90cmFjZXMgLT4gXCJDb2xsZWN0IHRyYWNlc1wiXG4gIHwgQ2F1c2FsX2NvbXByZXNzaW9uIC0+IFwiQ2F1c2FsIGNvbXByZXNzaW9uXCJcbiAgfCBXZWFrX2NvbXByZXNzaW9uIC0+IFwiV2VhayBjb21wcmVzc2lvblwiXG4gIHwgU3Ryb25nX2NvbXByZXNzaW9uIC0+IFwiU3Ryb25nIGNvbXByZXNzaW9uXCJcbiAgfCBJdGVyYXRpb24gaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiSXRlcmF0aW9uICVpXCIgaW50XG4gIHwgU3RvcnkgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU3RvcnkgJWlcIiBpbnRcbiAgfCBQYXJ0aWFsX29yZGVyX3JlZHVjdGlvbiAtPiBcIlBhcnRpYWwgb3JkZXIgcmVkdWN0aW9uXCJcbiAgfCBTaXBob25fZGV0ZWN0aW9uIC0+IFwiRGV0ZWN0aW9uIG9mIHNpcGhvbnNcIlxuICB8IERlY29tcG9zZV9pbml0aWFsX3N0YXRlIC0+IFwiU3BsaXR0aW5nIGluaXRpYWwgc3RhdGVzXCJcbiAgfCBBZ2VudF9pZHNfZGlzYW1iaWd1YXRpb24gLT4gXCJSZW5hbWluZyBhZ2VudHMgdG8gYXZvaWQgY29uZmxpY3RzXCJcbiAgfCBQc2V1ZG9faW52ZXJzZV9kZWxldGlvbiAtPiBcIkRlbGV0aW9uIG9mIHBzZXVkbyBpbnZlcnNlIGV2ZW50c1wiXG4gIHwgUmVtb3ZlX2V2ZW50c19hZnRlcl9sYXN0X29ic2VydmFibGUgLT5cbiAgICBcIlJlbW92aW5nIGV2ZW50cyBhZnRlciB0aGUgbGFzdCBvYnNlcnZhYmxlc1wiXG4gIHwgQ29tcHJlc3Npb24gLT4gXCJDb21wcmVzc2lvblwiXG4gIHwgVHJhbnNpdGl2ZV9jbG9zdXJlIC0+IFwiVHJhbnNpdGl2ZSBjbG9zdXJlXCJcbiAgfCBCdWlsZF9ncmlkIC0+IFwiR3JpZCBjb21wdXRhdGlvblwiXG4gIHwgR3JhcGhfcmVkdWN0aW9uIC0+IFwiVHJhbnNpdGl2ZSByZWR1Y3Rpb25cIlxuICB8IEdyYXBoX2NvbnZlcnNpb24gLT4gXCJHcmFwaCBjb252ZXJzaW9uXCJcbiAgfCBDYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIC0+IFwiQ29tcHV0aW5nIHRoZSBjYW5ub25pYyBmb3JtXCJcbiAgfCBTdG9yZV90cmFjZSAtPiBcIlN0b3JlIHRyYWNlXCJcbiAgfCBSZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMgLT4gXCJSZW1vdmluZyBibGFjay1saXN0ZWQgZXZlbnRzXCJcbiAgfCBCbGFja2xpc3RpbmdfZXZlbnRzIC0+IFwiQmxha2xpc3RpbmcgZXZlbnRzXCJcbiAgfCBHbG9iYWxfaW5pdGlhbGl6YXRpb24gLT4gXCJHbG9iYWwgaW5pdGlhbGl6YXRpb25cIlxuICB8IERvbWFpbnNfaW5pdGlhbGl6YXRpb24gLT4gXCJEb21haW5zIGluaXRpYWxpemF0aW9uXCJcbiAgfCBEb21haW5faW5pdGlhbGl6YXRpb24gc3RyaW5nIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJEb21haW4gaW5pdGlhbGl6YXRpb24gKCVzKVwiIHN0cmluZ1xuICB8IEFwcGx5X3J1bGUgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiQXBwbHkgcnVsZSAlaVwiIGludFxuICB8IEluaXRpYWxfc3RhdGUgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiSW5pdGlhbCBzdGF0ZSAlaVwiIGludFxuICB8IFNjYW5fcnVsZV9zdGF0aWMgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU2NhbiBydWxlICVpIChzdGF0aWMpXCIgaW50XG4gIHwgU2Nhbl9ydWxlX2R5bmFtaWMgaW50IC0+IFByaW50Zi5zcHJpbnRmIFwiU2NhbiBydWxlICVpIChkeW5hbWljKVwiIGludFxuICB8IFJlZ3VsYXJfaW5mbHVlbmNlcyAtPiBQcmludGYuc3ByaW50ZiBcIlJlZ3VsYXIgaW5mbHVlbmNlcyBjb21wdXRhdGlvblwiXG4gIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXMgLT5cbiAgICBQcmludGYuc3ByaW50ZiBcIlNpZGUtZWZmZWN0cyBpbmZsdWVuY2VzIGNvbXB1dGF0aW9uXCJcbiAgfCBNZXJnZV9pbmZsdWVuY2VzIC0+IFByaW50Zi5zcHJpbnRmIFwiTWVyZ2luZyBpbmZsdWVuY2VzXCJcbiAgfCBLYVNpbV9jb21waWxhdGlvbiAtPiBQcmludGYuc3ByaW50ZiBcIkthU2ltIGZyb250ZW5kXCJcbiAgfCBLYVNhX3ByZWNvbXBpbGF0aW9uIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBwcmVjb21waWxhdGlvblwiXG4gIHwgS2FTYV9sZXhpbmcgLT4gUHJpbnRmLnNwcmludGYgXCJLYVNhIExleGluZ1wiXG4gIHwgS2FTYV9saW5raW5nIC0+IFByaW50Zi5zcHJpbnRmIFwiS2FTYSBMaW5raW5nXCJcbiAgfCBJbmZsdWVuY2VfbWFwIHN0cmluZyAtPiBQcmludGYuc3ByaW50ZiBcIkluZmx1ZW5jZSBtYXAgKCVzKVwiIHN0cmluZ1xuICB8IEludGVybmFsX2luZmx1ZW5jZV9tYXAgc3RyaW5nIC0+XG4gICAgUHJpbnRmLnNwcmludGYgXCJJbmZsdWVuY2UgbWFwIChpbnRlcm5hbCAlcylcIiBzdHJpbmdcbiAgfCBMS2FwcGFfc2lnbmF0dXJlIC0+IFByaW50Zi5zcHJpbnRmIFwiTEthcHBhIHNpZ25hdHVyZVwiXG5cbmxldCBwcmludF9zdGVwX2tpbmQgcGFyYW1ldGVycyB4ID1cbiAgTG9nZ2Vycy5wcmludF9jZWxsXG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcnMpXG4gICAgKHN0cmluZ19vZl9zdGVwX2tpbmQgeClcblxubW9kdWxlIHR5cGUgU3RvcnlTdGF0cyA9IHNpZ1xuICB0eXBlIGxvZ19pbmZvXG5cbiAgdmFsIGluY19yZW1vdmVkX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfc2VsZWN0ZWRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGxvZ19pbmZvX3RvX2pzb24gOiBsb2dfaW5mbyAtPiBZb2pzb24uQmFzaWMudFxuICB2YWwgbG9nX2luZm9fb2ZfanNvbiA6IFlvanNvbi5CYXNpYy50IC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfY3V0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfa19jdXRfZXZlbnRzIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCByZXNldF9jdXRfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19uX2thc2ltX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9pbml0X2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9zaWRlX2V2ZW50cyA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBpbmNfbl9vYnNfZXZlbnRzIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGluY19icmFuY2ggOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgaW5jX2N1dCA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCByZXNldF9sb2cgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgZHVtcF9jb21wbGV0ZV9sb2cgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IGxvZ19pbmZvIC0+IHVuaXRcbiAgdmFsIGR1bXBfc2hvcnRfbG9nIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiBsb2dfaW5mbyAtPiB1bml0XG4gIHZhbCBhZGRfcHJvcGFnYXRpb25fY2FzZV91cCA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX2xvb2tfdXBfY2FzZSA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgYWRkX2xvb2tfZG93bl9jYXNlIDogaW50IC0+IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBjb3B5IDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIGlzX2R1bW15IDogc3RlcF9raW5kIC0+IGJvb2xcblxuICB2YWwgYWRkX2V2ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGNsb3NlX2V2ZW50IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc3RlcF9raW5kIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGFkZF9ldmVudF9vcHQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzdGVwX2tpbmQgb3B0aW9uIC0+XG4gICAgKHVuaXQgLT4gaW50KSBvcHRpb24gLT5cbiAgICBsb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGxvZ19pbmZvXG5cbiAgdmFsIGNsb3NlX2V2ZW50X29wdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHN0ZXBfa2luZCBvcHRpb24gLT5cbiAgICAodW5pdCAtPiBpbnQpIG9wdGlvbiAtPlxuICAgIGxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogbG9nX2luZm9cblxuICB2YWwgc2V0X3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0ZXBfdGltZSA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfZ2xvYmFsX2N1dCA6IGludCAtPiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3BzZXVkb19pbnYgOiBpbnQgLT4gbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9zdGFydF9jb21wcmVzc2lvbiA6IGxvZ19pbmZvIC0+IGxvZ19pbmZvXG4gIHZhbCBzZXRfZ3JpZF9nZW5lcmF0aW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jYW5vbmljYWxpc2F0aW9uIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jb25jdXJyZW50X2V2ZW50X2RldGVjdGlvbl90aW1lIDogbG9nX2luZm8gLT4gbG9nX2luZm9cbiAgdmFsIHNldF9jb25jdXJyZW50X2V2ZW50X2RlbGV0aW9uX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgc2V0X3N0b3J5X3Jlc2VhcmNoX3RpbWUgOiBsb2dfaW5mbyAtPiBsb2dfaW5mb1xuICB2YWwgZWxsYXBzZWRfZ2xvYmFsX3RpbWUgOiBsb2dfaW5mbyAtPiBmbG9hdFxuICB2YWwgZWxsYXBzZWRfdGltZSA6IGxvZ19pbmZvIC0+IGZsb2F0XG4gIHZhbCBpbml0X2xvZ19pbmZvIDogdW5pdCAtPiBsb2dfaW5mb1xuICB2YWwgdGljayA6IGxvZ19pbmZvIC0+IGJvb2wgKiBsb2dfaW5mb1xuICB2YWwgY2xvc2VfbG9nZ2VyIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiB1bml0XG4gIHZhbCBmbHVzaF9sb2dnZXIgOiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgU3RvcnlTdGF0cyA6IFN0b3J5U3RhdHMgPSBzdHJ1Y3RcbiAgdHlwZSBzdGFja19oZWFkID0ge1xuICAgIGN1cnJlbnRfYnJhbmNoOiBpbnQ7XG4gICAgc2VsZWN0ZWRfZXZlbnRzOiBpbnQ7XG4gICAgcmVtYWluaW5nX2V2ZW50czogaW50O1xuICAgIHJlbW92ZWRfZXZlbnRzOiBpbnQ7XG4gICAgc3RhY2tfc2l6ZTogaW50O1xuICB9XG5cbiAgdHlwZSBzdGVwID0ge1xuICAgIHRhZzogc3RlcF9raW5kO1xuICAgIHNpemVfYmVmb3JlOiBpbnQgb3B0aW9uO1xuICAgIHNpemVfYWZ0ZXI6IGludCBvcHRpb247XG4gICAgdGltZV9zdGFydDogZmxvYXQ7XG4gICAgZHVyYXRpb246IGZsb2F0IG9wdGlvbjtcbiAgICBkZXB0aDogaW50O1xuICB9XG5cbiAgbGV0IGtfZmlyc3QgX3BhcmFtZXRlciBrIGwgPVxuICAgIGxldCByZWMgYXV4IGsgbCBvdXRwdXQgPVxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICBbXSwgTGlzdC5yZXYgb3V0cHV0XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICAoIChsZXQgcmVjIGF1eCBrIG91dHB1dCA9XG4gICAgICAgICAgICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICAgICAgICAgIG91dHB1dFxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBhdXggKGsgLSAxKSAoXCJcIiA6OiBvdXRwdXQpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBhdXggayBbXSksXG4gICAgICAgICAgICBMaXN0LnJldiBvdXRwdXQgKVxuICAgICAgICB8IHQgOjogcSAtPiBhdXggKGsgLSAxKSBxICh0IDo6IG91dHB1dClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBrIGwgW11cblxuICBsZXQgcHJpbnRfdGFzayBwYXJhbWV0ZXIgKGEsIGIpID1cbiAgICBsZXQgXyA9IHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXIgYS50YWcgaW5cbiAgICBsZXQgdGFiLCBiID0ga19maXJzdCBwYXJhbWV0ZXIgNCBiIGluXG4gICAgbGV0IF8gPSBMaXN0Lml0ZXIgKHByaW50X3N0ZXBfa2luZCBwYXJhbWV0ZXIpIGIgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0Lml0ZXJcbiAgICAgICAgKExvZ2dlcnMucHJpbnRfY2VsbCAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKSlcbiAgICAgICAgdGFiXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgKG1hdGNoIGEuc2l6ZV9iZWZvcmUgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgaSAtPiBzdHJpbmdfb2ZfaW50IGkpXG4gICAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgKG1hdGNoIGEuc2l6ZV9hZnRlciB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBpIC0+IHN0cmluZ19vZl9pbnQgaSlcbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAobWF0Y2ggYS5kdXJhdGlvbiB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSB0aW1lIC0+IHN0cmluZ19vZl9mbG9hdCB0aW1lKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgY2xvc2VfbG9nZ2VyIHBhcmFtZXRlciA9XG4gICAgTG9nZ2Vycy5jbG9zZV9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcblxuICBsZXQgZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciA9XG4gICAgTG9nZ2Vycy5mbHVzaF9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcblxuICB0eXBlIGxvZ19pbmZvID0ge1xuICAgIGdsb2JhbF90aW1lOiBmbG9hdDtcbiAgICBzdG9yeV90aW1lOiBmbG9hdDtcbiAgICBzdGVwX3RpbWU6IGZsb2F0O1xuICAgIGN1cnJlbnRfdGFzazogc3RlcCBsaXN0O1xuICAgIG5leHRfZGVwdGg6IGludDtcbiAgICBicmFuY2g6IGludDtcbiAgICBjdXQ6IGludDtcbiAgICBzdGFjazogc3RhY2tfaGVhZCBsaXN0O1xuICAgIGN1cnJlbnRfc3RhY2s6IHN0YWNrX2hlYWQ7XG4gICAgcHJvcGFnYXRpb246IGludCBhcnJheTtcbiAgICBsYXN0X3RpY2s6IGZsb2F0O1xuICB9XG5cbiAgbGV0IGlzX2R1bW15IHN0ZXBfa2luZCA9XG4gICAgbWF0Y2ggc3RlcF9raW5kIHdpdGhcbiAgICB8IER1bW15IC0+IHRydWVcbiAgICB8IEJlZ2lubmluZyB8IENvbGxlY3RfdHJhY2VzIHwgQ2F1c2FsX2NvbXByZXNzaW9uIHwgV2Vha19jb21wcmVzc2lvblxuICAgIHwgU3Ryb25nX2NvbXByZXNzaW9uIHwgUGFydGlhbF9vcmRlcl9yZWR1Y3Rpb24gfCBTaXBob25fZGV0ZWN0aW9uXG4gICAgfCBEZWNvbXBvc2VfaW5pdGlhbF9zdGF0ZSB8IEFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuICAgIHwgUHNldWRvX2ludmVyc2VfZGVsZXRpb24gfCBSZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzZXJ2YWJsZVxuICAgIHwgQ29tcHJlc3Npb24gfCBCdWlsZF9ncmlkIHwgQnVpbGRfY29uZmlndXJhdGlvbiB8IFRyYW5zaXRpdmVfY2xvc3VyZVxuICAgIHwgR3JhcGhfcmVkdWN0aW9uIHwgR3JhcGhfY29udmVyc2lvbiB8IENhbm5vbmljX2Zvcm1fY29tcHV0YXRpb25cbiAgICB8IFN0b3JlX3RyYWNlIHwgUmVtb3ZpbmdfYmxhY2tsaXN0ZWRfZXZlbnRzIHwgQmxhY2tsaXN0aW5nX2V2ZW50c1xuICAgIHwgR2xvYmFsX2luaXRpYWxpemF0aW9uIHwgRG9tYWluc19pbml0aWFsaXphdGlvbiB8IFJlZ3VsYXJfaW5mbHVlbmNlc1xuICAgIHwgU2lkZV9lZmZlY3RzX2luZmx1ZW5jZXMgfCBNZXJnZV9pbmZsdWVuY2VzIHwgS2FTaW1fY29tcGlsYXRpb25cbiAgICB8IEthU2FfcHJlY29tcGlsYXRpb24gfCBLYVNhX2xleGluZyB8IEthU2FfbGlua2luZyB8IExLYXBwYV9zaWduYXR1cmVcbiAgICB8IEl0ZXJhdGlvbiBfIHwgU3RvcnkgXyB8IERvbWFpbl9pbml0aWFsaXphdGlvbiBfIHwgQXBwbHlfcnVsZSBfXG4gICAgfCBJbml0aWFsX3N0YXRlIF8gfCBTY2FuX3J1bGVfc3RhdGljIF8gfCBTY2FuX3J1bGVfZHluYW1pYyBfXG4gICAgfCBJbmZsdWVuY2VfbWFwIF8gfCBJbnRlcm5hbF9pbmZsdWVuY2VfbWFwIF8gLT5cbiAgICAgIGZhbHNlXG5cbiAgbGV0IGFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3Igc3RlcF9raW5kIGYgbG9nX2luZm8gPVxuICAgIGlmIGlzX2R1bW15IHN0ZXBfa2luZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBhZGRfZXZlbnQgc2hvdWxkIG5vdCBiZSBcXFxuICAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgZHVtbXkgZXZlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiRHVtbXkgZXZlbnQgaW4gYWRkX2V2ZW50XCIpICgpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBuZXh0X2RlcHRoID0gbG9nX2luZm8ubmV4dF9kZXB0aCBpblxuICAgICAgbGV0IHRhc2sgPVxuICAgICAgICB7XG4gICAgICAgICAgdGFnID0gc3RlcF9raW5kO1xuICAgICAgICAgIHNpemVfYmVmb3JlID1cbiAgICAgICAgICAgIChtYXRjaCBmIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiBTb21lIChmICgpKSk7XG4gICAgICAgICAgc2l6ZV9hZnRlciA9IE5vbmU7XG4gICAgICAgICAgdGltZV9zdGFydCA9IFN5cy50aW1lICgpO1xuICAgICAgICAgIGR1cmF0aW9uID0gTm9uZTtcbiAgICAgICAgICBkZXB0aCA9IG5leHRfZGVwdGg7XG4gICAgICAgIH1cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IExvZ2dlcnMub3Blbl9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcikgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTG9nZ2Vycy5wcmludF9jZWxsIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpIFwiU3RhcnRcIlxuICAgICAgaW5cbiAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICB0YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgbG9nX2luZm8uY3VycmVudF90YXNrKVxuICAgICAgaW5cbiAgICAgIGxldCBfID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICBsZXQgXyA9IExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpIGluXG4gICAgICBsZXQgXyA9IGZsdXNoX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlclxuICAgICAgICAgIChzdHJpbmdfb2Zfc3RlcF9raW5kIHN0ZXBfa2luZClcbiAgICAgIGluXG4gICAgICBsZXQgY3VycmVudF90YXNrID0gdGFzayA6OiBsb2dfaW5mby5jdXJyZW50X3Rhc2sgaW5cbiAgICAgIGVycm9yLCB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggKyAxOyBjdXJyZW50X3Rhc2sgfVxuICAgIClcblxuICBsZXQgY2xvc2VfZXZlbnQgcGFyYW1ldGVyIGVycm9yIHN0ZXBfa2luZCBmIGxvZ19pbmZvID1cbiAgICBpZiBpc19kdW1teSBzdGVwX2tpbmQgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgIFwiSW5jb25zaXN0ZW50IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwgY2xvc2VfZXZlbnQgc2hvdWxkIG5vdCBiZSBcXFxuICAgICAgICAgICAgIGNhbGxlZCB3aXRoIGEgZHVtbXkgZXZlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiRHVtbXkgZXZlbnQgaW4gY2xvc2VfZXZlbnRcIikgKClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2UgKFxuICAgICAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgaW50ZXJydXB0ZWQgPVxuICAgICAgICBsZXQgbmV4dF9kZXB0aCA9IGxvZ19pbmZvLm5leHRfZGVwdGggaW5cbiAgICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgICAgaWYgbmV4dF9kZXB0aCA9IDEgdGhlblxuICAgICAgICAgICAgRXhjZXB0aW9uLndhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgXCJJbmNvbnNpc3RlbnQgcHJvZmlsaW5nIGluZm9ybWF0aW9uLCBkZXB0aCBzaG91bGQgbm90IGJlIGVxdWFsIFxcXG4gICAgICAgICAgICAgICAgIHRvIDEgd2hlbiBjbG9zaW5nIGFuIGV2ZW50XCJcbiAgICAgICAgICAgICAgKEZhaWx1cmUgXCJEZXB0aD0xIGluIGNsb3NlX2V2ZW50XCIpICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsICgpXG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGxvZ19pbmZvLmN1cnJlbnRfdGFzayB3aXRoXG4gICAgICAgIHwgW10gLT5cbiAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgIFwiSW5jb25zaXN0ZW50IHByb2ZpbGluZyBpbmZvcm1hdGlvbiwgbm8gY3VycmVudCB0YXNrIHdoZW4gXFxcbiAgICAgICAgICAgICAgIGNsb3NpbmcgYW4gZXZlbnRcIlxuICAgICAgICAgICAgKEZhaWx1cmUgXCJObyBjdXJyZW50IHRhc2tzIGluIGNsb3NlX2V2ZW50XCIpIGxvZ19pbmZvXG4gICAgICAgIHwgY3VycmVudF90YXNrIDo6IHRhaWwgd2hlbiBjdXJyZW50X3Rhc2sudGFnID0gc3RlcF9raW5kIC0+XG4gICAgICAgICAgbGV0IHNpemVfYWZ0ZXIgPVxuICAgICAgICAgICAgbWF0Y2ggZiB3aXRoXG4gICAgICAgICAgICB8IFNvbWUgZiAtPiBTb21lIChmICgpKVxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgLS4gY3VycmVudF90YXNrLnRpbWVfc3RhcnQgaW5cbiAgICAgICAgICBsZXQgdGFzayA9IHsgY3VycmVudF90YXNrIHdpdGggc2l6ZV9hZnRlcjsgZHVyYXRpb24gPSBTb21lIHRpbWUgfSBpblxuICAgICAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICAgICAgdGFzaywgTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LnRhZykgKExpc3QucmV2IHRhaWwpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5vcGVuX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfY2VsbFxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAoaWYgaW50ZXJydXB0ZWQgdGhlblxuICAgICAgICAgICAgICAgICBcIkludGVycnVwdGVkXCJcbiAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgXCJFbmRcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IHByaW50X3Rhc2sgcGFyYW1ldGVyIHRlcm1pbmF0ZWRfdGFzayBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmNsb3NlX3JvdyAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJvZmlsZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gZmx1c2hfbG9nZ2VyIHBhcmFtZXRlciBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggLSAxOyBjdXJyZW50X3Rhc2sgPSB0YWlsIH0gKVxuICAgICAgICB8IGN1cnJlbnRfdGFzayA6OiB0YWlsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMub3Blbl9yb3cgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3Byb2ZpbGVyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXJtaW5hdGVkX3Rhc2sgPVxuICAgICAgICAgICAgY3VycmVudF90YXNrLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IHgudGFnKSAoTGlzdC5yZXYgdGFpbClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X2NlbGxcbiAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiSW50ZXJydXB0ZWRcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfdGFzayBwYXJhbWV0ZXIgdGVybWluYXRlZF90YXNrIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuY2xvc2Vfcm93IChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcm9maWxlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBmbHVzaF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gICAgICAgICAgYXV4XG4gICAgICAgICAgICB7IGxvZ19pbmZvIHdpdGggbmV4dF9kZXB0aCA9IG5leHRfZGVwdGggLSAxOyBjdXJyZW50X3Rhc2sgPSB0YWlsIH1cbiAgICAgICAgICAgIGVycm9yIHRydWVcbiAgICAgIGluXG4gICAgICBhdXggbG9nX2luZm8gZXJyb3IgZmFsc2VcbiAgICApXG5cbiAgbGV0IGdlbl9vcHQgZ2VuIHBhcmFtZXRlciBlcnJvciBzdGVwX2tpbmQgZiBsb2dfaW5mbyA9XG4gICAgbWF0Y2ggc3RlcF9raW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgfCBTb21lIGUgLT4gZ2VuIHBhcmFtZXRlciBlcnJvciBlIGYgbG9nX2luZm9cblxuICBsZXQgYWRkX2V2ZW50X29wdCA9IGdlbl9vcHQgYWRkX2V2ZW50XG4gIGxldCBjbG9zZV9ldmVudF9vcHQgPSBnZW5fb3B0IGNsb3NlX2V2ZW50XG5cbiAgbGV0IHByb3BhZ2F0aW9uX2xhYmVscyA9XG4gICAgW3xcbiAgICAgIFwiTm9uZVwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMSBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDIgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAzIFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNCBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDUgXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA2IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgNyBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDggXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSA5IFwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTBcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDExXCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxMlwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTNcIjtcbiAgICAgIFwiVXA6ICAgICAgICBjYXNlIDE0XCI7XG4gICAgICBcIlVwOiAgICAgICAgY2FzZSAxNVwiO1xuICAgICAgXCJVcDogICAgICAgIGNhc2UgMTZcIjtcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEgXCI7XG4gICAgICAoKjE3KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDIgXCI7XG4gICAgICAoKjE4KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDMgXCI7XG4gICAgICAoKjE5KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDQgXCI7XG4gICAgICAoKjIwKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDUgXCI7XG4gICAgICAoKjIxKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDYgXCI7XG4gICAgICAoKjIyKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDcgXCI7XG4gICAgICAoKjIzKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDggXCI7XG4gICAgICAoKjI0KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDkgXCI7XG4gICAgICAoKjI1KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEwXCI7XG4gICAgICAoKjI2KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDExXCI7XG4gICAgICAoKjI3KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEyXCI7XG4gICAgICAoKjI4KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDEzXCI7XG4gICAgICAoKjI5KilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE0XCI7XG4gICAgICAoKjMwKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE1XCI7XG4gICAgICAoKjMxKilcbiAgICAgIFwiRG93bjogICAgICBjYXNlIDE2XCI7XG4gICAgICAoKjMyKilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAxXCI7XG4gICAgICAoKjMzKilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAyXCI7XG4gICAgICAoKjM0KilcbiAgICAgIFwiTG9va191cDogICBjYXNlICAzXCI7XG4gICAgICAoKjM1KilcbiAgICAgIFwiTG9va191cDogICBjYXNlICA0XCI7XG4gICAgICAoKjM2KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAxXCI7XG4gICAgICAoKjM3KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAyXCI7XG4gICAgICAoKjM4KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICAzXCI7XG4gICAgICAoKjM5KilcbiAgICAgIFwiTG9va19kb3duOiBjYXNlICA0XCI7XG4gICAgICAoKjQwKilcbiAgICB8XVxuXG4gIGxldCBwcm9wYWdhdGlvbl9jYXNlcyA9IEFycmF5Lmxlbmd0aCBwcm9wYWdhdGlvbl9sYWJlbHNcblxuICBsZXQgY29weSBsb2dfaW5mbyA9XG4gICAgeyBsb2dfaW5mbyB3aXRoIHByb3BhZ2F0aW9uID0gQXJyYXkuY29weSBsb2dfaW5mby5wcm9wYWdhdGlvbiB9XG5cbiAgbGV0IGluaXRfbG9nX2luZm8gKCkgPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICB7XG4gICAgICBuZXh0X2RlcHRoID0gMTtcbiAgICAgIGdsb2JhbF90aW1lID0gdGltZTtcbiAgICAgIHN0b3J5X3RpbWUgPSB0aW1lO1xuICAgICAgc3RlcF90aW1lID0gdGltZTtcbiAgICAgIGN1cnJlbnRfdGFzayA9IFtdO1xuICAgICAgcHJvcGFnYXRpb24gPSBBcnJheS5tYWtlIHByb3BhZ2F0aW9uX2Nhc2VzIDA7XG4gICAgICBicmFuY2ggPSAwO1xuICAgICAgY3V0ID0gMDtcbiAgICAgIGN1cnJlbnRfc3RhY2sgPVxuICAgICAgICB7XG4gICAgICAgICAgY3VycmVudF9icmFuY2ggPSAwO1xuICAgICAgICAgIHNlbGVjdGVkX2V2ZW50cyA9IDA7XG4gICAgICAgICAgcmVtYWluaW5nX2V2ZW50cyA9IDA7XG4gICAgICAgICAgcmVtb3ZlZF9ldmVudHMgPSAwO1xuICAgICAgICAgIHN0YWNrX3NpemUgPSAwO1xuICAgICAgICB9O1xuICAgICAgc3RhY2sgPSBbXTtcbiAgICAgIGxhc3RfdGljayA9IDAuO1xuICAgIH1cblxuICBsZXQgbG9nX2luZm9fdG9fanNvbiBsb2dfaW5mbyA9XG4gICAgYEFzc29jXG4gICAgICBbXG4gICAgICAgIFwiZ2xvYmFsX3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLmdsb2JhbF90aW1lO1xuICAgICAgICBcInN0b3J5X3RpbWVcIiwgYEZsb2F0IGxvZ19pbmZvLnN0b3J5X3RpbWU7XG4gICAgICAgIFwic3RlcF90aW1lXCIsIGBGbG9hdCBsb2dfaW5mby5zdGVwX3RpbWU7XG4gICAgICAgIFwibmV4dF9kZXB0aFwiLCBgSW50IGxvZ19pbmZvLm5leHRfZGVwdGg7XG4gICAgICAgIFwiYnJhbmNoXCIsIGBJbnQgbG9nX2luZm8uYnJhbmNoO1xuICAgICAgICBcImN1dFwiLCBgSW50IGxvZ19pbmZvLmN1dDtcbiAgICAgIF1cblxuICBsZXQgZmxvYXRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gICAgfCBgRmxvYXQgZiAtPiBmXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZmxvYXRcIiwgeCkpXG5cbiAgbGV0IGludF9vZl9qc29uID0gZnVuY3Rpb25cbiAgICB8IGBJbnQgZiAtPiBmXG4gICAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgZmxvYXRcIiwgeCkpXG5cbiAgbGV0IGxvZ19pbmZvX29mX2pzb24geCA9XG4gICAgbGV0IGluaXQgPSBpbml0X2xvZ19pbmZvICgpIGluXG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBgQXNzb2MgbCB3aGVuIExpc3QubGVuZ3RoIGwgPSA2IC0+XG4gICAgICAodHJ5XG4gICAgICAgICB7XG4gICAgICAgICAgIGluaXQgd2l0aFxuICAgICAgICAgICBnbG9iYWxfdGltZSA9IGZsb2F0X29mX2pzb24gKExpc3QuYXNzb2MgXCJnbG9iYWxfdGltZVwiIGwpO1xuICAgICAgICAgICBzdG9yeV90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0b3J5X3RpbWVcIiBsKTtcbiAgICAgICAgICAgc3RlcF90aW1lID0gZmxvYXRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0ZXBfdGltZVwiIGwpO1xuICAgICAgICAgICBuZXh0X2RlcHRoID0gaW50X29mX2pzb24gKExpc3QuYXNzb2MgXCJuZXh0X2RlcHRoXCIgbCk7XG4gICAgICAgICAgIGJyYW5jaCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiYnJhbmNoXCIgbCk7XG4gICAgICAgICAgIGN1dCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiY3V0XCIgbCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgbG9nX2luZm9cIiwgeCkpKVxuICAgIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IGxvZ19pbmZvXCIsIHgpKVxuXG4gIGxldCBkdW1wX3Nob3J0X2xvZyBwYXJhbWV0ZXIgbG9nX2luZm8gPVxuICAgIGxldCBfID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiUmVtYWluaW5nIGV2ZW50czogJWkgOyBTdGFjayBzaXplOiAlaSA7IFwiXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2sucmVtYWluaW5nX2V2ZW50c1xuICAgICAgICBsb2dfaW5mby5jdXJyZW50X3N0YWNrLnN0YWNrX3NpemVcbiAgICBpblxuICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2NvbXByZXNzaW9uX3N0YXR1c19sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgXCJUb3RhbCBicmFuY2g6ICVpIDsgVG90YWwgY3V0OiAlaSA7IEN1cnJlbnQgZGVwdGg6ICVpIEAuXCIgbG9nX2luZm8uYnJhbmNoXG4gICAgICBsb2dfaW5mby5jdXQgbG9nX2luZm8uY3VycmVudF9zdGFjay5jdXJyZW50X2JyYW5jaFxuXG4gIGxldCByZXNldF9sb2cgbG9nID1cbiAgICBsZXQgdCA9IGxvZy5wcm9wYWdhdGlvbiBpblxuICAgIGxldCBfID0gQXJyYXkuZmlsbCB0IDAgKEFycmF5Lmxlbmd0aCB0KSAwIGluXG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHsgbG9nIHdpdGggc3RlcF90aW1lID0gdGltZTsgc3RvcnlfdGltZSA9IHRpbWUgfVxuXG4gIGxldCBwcm9wYWdhdGVfdXAgaSA9IGlcbiAgbGV0IHByb3BhZ2F0ZV9kb3duIGkgPSBpICsgMTZcbiAgbGV0IGxvb2tfdXAgaSA9IGkgKyAzMlxuICBsZXQgbG9va19kb3duIGkgPSBpICsgMzZcblxuICBsZXQgZWxsYXBzZWRfdGltZSBsb2cgPVxuICAgIGxldCB0aW1lID0gU3lzLnRpbWUgKCkgaW5cbiAgICB0aW1lIC0uIGxvZy5zdG9yeV90aW1lXG5cbiAgbGV0IGVsbGFwc2VkX2dsb2JhbF90aW1lIGxvZyA9XG4gICAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICAgIHRpbWUgLS4gbG9nLmdsb2JhbF90aW1lXG5cbiAgbGV0IHNldF90aW1lIGxvZyA9XG4gICAgeyBsb2cgd2l0aCBzdG9yeV90aW1lID0gU3lzLnRpbWUgKCk7IHN0ZXBfdGltZSA9IFN5cy50aW1lICgpIH1cblxuICBsZXQgc2V0X3N0ZXBfdGltZSBsb2cgPSB7IGxvZyB3aXRoIHN0ZXBfdGltZSA9IFN5cy50aW1lICgpIH1cbiAgbGV0IHNldF9zdGFydF9jb21wcmVzc2lvbiA9IHNldF90aW1lXG5cbiAgbGV0IHNldF9zdG9yeV9yZXNlYXJjaF90aW1lIGxvZyA9XG4gICAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICAgIGxldCBzdCA9IGxvZy5zdGVwX3RpbWUgaW5cbiAgICB7IGxvZyB3aXRoIHN0b3J5X3RpbWUgPSB0IC0uIHN0OyBzdGVwX3RpbWUgPSB0IH1cblxuICBsZXQgc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgbG9nID0gbG9nXG4gIGxldCBzZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZyA9IGxvZ1xuICBsZXQgc2V0X2dyaWRfZ2VuZXJhdGlvbiBsb2cgPSBsb2dcbiAgbGV0IHNldF9jYW5vbmljYWxpc2F0aW9uIGxvZyA9IGxvZ1xuXG4gIGxldCBhZGRfY2FzZSBpIGxvZyA9XG4gICAgbGV0IHQgPSBsb2cucHJvcGFnYXRpb24gaW5cbiAgICBsZXQgXyA9IHQuKGkpIDwtIHQuKGkpICsgMSBpblxuICAgIGxvZ1xuXG4gIGxldCBhZGRfbG9va19kb3duX2Nhc2UgaSA9IGFkZF9jYXNlIChsb29rX2Rvd24gaSlcbiAgbGV0IGFkZF9sb29rX3VwX2Nhc2UgaSA9IGFkZF9jYXNlIChsb29rX3VwIGkpXG4gIGxldCBhZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIGkgPSBhZGRfY2FzZSAocHJvcGFnYXRlX2Rvd24gaSlcbiAgbGV0IGFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIGkgPSBhZGRfY2FzZSAocHJvcGFnYXRlX3VwIGkpXG5cbiAgbGV0IGluY19jdXQgbG9nID1cbiAgICBtYXRjaCBsb2cuc3RhY2sgd2l0aFxuICAgIHwgW10gLT4gbG9nXG4gICAgfCB0IDo6IHEgLT4geyBsb2cgd2l0aCBjdXJyZW50X3N0YWNrID0gdDsgc3RhY2sgPSBxOyBjdXQgPSBsb2cuY3V0ICsgMSB9XG5cbiAgbGV0IGluY19icmFuY2ggbG9nID1cbiAgICB7XG4gICAgICBsb2cgd2l0aFxuICAgICAgc3RhY2sgPSBsb2cuY3VycmVudF9zdGFjayA6OiBsb2cuc3RhY2s7XG4gICAgICBicmFuY2ggPSBsb2cuYnJhbmNoICsgMTtcbiAgICAgIGN1cnJlbnRfc3RhY2sgPVxuICAgICAgICB7XG4gICAgICAgICAgbG9nLmN1cnJlbnRfc3RhY2sgd2l0aFxuICAgICAgICAgIGN1cnJlbnRfYnJhbmNoID0gbG9nLmN1cnJlbnRfc3RhY2suY3VycmVudF9icmFuY2ggKyAxO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgaW5jX25fa2FzaW1fZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25fb2JzX2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19uX3NpZGVfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX25faW5pdF9ldmVudHMgbG9nID0gbG9nXG4gIGxldCBpbmNfY3V0X2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19rX2N1dF9ldmVudHMgX2sgbG9nID0gbG9nXG4gIGxldCByZXNldF9jdXRfZXZlbnRzIGxvZyA9IGxvZ1xuICBsZXQgaW5jX3NlbGVjdGVkX2V2ZW50cyBsb2cgPSBsb2dcbiAgbGV0IGluY19yZW1vdmVkX2V2ZW50cyBsb2cgPSBsb2dcblxuICBsZXQgZHVtcF9jb21wbGV0ZV9sb2cgcGFyYW1ldGVyIGxvZ19pbmZvID1cbiAgICBsZXQgbG9nZ2VyID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlciBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiLypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiU3RvcnkgcHJvZmlsaW5nXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJFbGxhcHNlZF90aW1lOiAgICAgICAgICAgICAgICAgICVmXCJcbiAgICAgICAgKGVsbGFwc2VkX3RpbWUgbG9nX2luZm8pXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dnZXIgXCJTdG9yeSByZXNlYXJjaCB0aW1lOiAgICAgICAgICAgICVmXCJcbiAgICAgICAgbG9nX2luZm8uc3RvcnlfdGltZVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ2dlciBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiRXhwbG9yYXRpb24gZGVwdGg6ICAgICAgICAgICAgICAlaVwiXG4gICAgICAgIGxvZ19pbmZvLmN1cnJlbnRfc3RhY2suY3VycmVudF9icmFuY2hcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkV4cGxvcmF0aW9uIGN1dHM6ICAgICAgICAgICAgICAgJWlcIiBsb2dfaW5mby5jdXRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiKioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIlByb3BhZ2F0aW9uIEhpdHM6XCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID49IHByb3BhZ2F0aW9uX2Nhc2VzIHRoZW5cbiAgICAgICAgKClcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiICAgICAgICAlcyAlaVwiIHByb3BhZ2F0aW9uX2xhYmVscy4oaylcbiAgICAgICAgICAgICAgbG9nX2luZm8ucHJvcGFnYXRpb24uKGspXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICAgICAgICAgKClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChrICsgMSlcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBfID0gYXV4IDEgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nZ2VyIFwiKi9cIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dnZXIgaW5cbiAgICAoKVxuXG4gIGxldCB0aWNrIGxvZ19pbmZvID1cbiAgICBsZXQgdGltZSA9IFN5cy50aW1lICgpIGluXG4gICAgaWYgdGltZSAtLiBsb2dfaW5mby5sYXN0X3RpY2sgPiA2MDAuIHRoZW5cbiAgICAgIHRydWUsIHsgbG9nX2luZm8gd2l0aCBsYXN0X3RpY2sgPSB0aW1lIH1cbiAgICBlbHNlXG4gICAgICBmYWxzZSwgbG9nX2luZm9cblxuICBsZXQgc2V0X2dsb2JhbF9jdXQgX24gbG9nX2luZm8gPSBsb2dfaW5mb1xuICBsZXQgc2V0X3BzZXVkb19pbnYgX24gbG9nX2luZm8gPSBsb2dfaW5mb1xuZW5kXG4iLCIoKipcbiAgIFRpbWUtc3RhbXA6IDxGZWIgMjIgMjAxOD5cbiopXG5cbm1vZHVsZSB0eXBlIFNldF93aXRoX2xvZ3MgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcbiAgdmFsIHNpbmdsZXRvbiA6IGVsdCAtPiB0XG4gIHZhbCBpc19zaW5nbGV0b24gOiB0IC0+IGJvb2xcblxuICB2YWwgYWRkIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgYWRkX3doZW5fbm90X2luIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgcmVtb3ZlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgbWludXMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgZGlzam9pbnRfdW5pb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgaW50ZXIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICB0IC0+XG4gICAgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHRcblxuICB2YWwgZGlmZiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBjYXJkaW5hbCA6IHQgLT4gaW50XG4gIHZhbCBtZW0gOiBlbHQgLT4gdCAtPiBib29sXG4gIHZhbCBleGlzdHMgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICB2YWwgZmlsdGVyIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IHRcbiAgdmFsIGZvcl9hbGwgOiAoZWx0IC0+IGJvb2wpIC0+IHQgLT4gYm9vbFxuICB2YWwgcGFydGl0aW9uIDogKGVsdCAtPiBib29sKSAtPiB0IC0+IHQgKiB0XG4gIHZhbCBjb21wYXJlIDogdCAtPiB0IC0+IGludFxuICB2YWwgZXF1YWwgOiB0IC0+IHQgLT4gYm9vbFxuICB2YWwgc3Vic2V0IDogdCAtPiB0IC0+IGJvb2xcbiAgdmFsIGl0ZXIgOiAoZWx0IC0+IHVuaXQpIC0+IHQgLT4gdW5pdFxuICB2YWwgZm9sZCA6IChlbHQgLT4gJ2EgLT4gJ2EpIC0+IHQgLT4gJ2EgLT4gJ2FcbiAgdmFsIGZvbGRfaW52IDogKGVsdCAtPiAnYSAtPiAnYSkgLT4gdCAtPiAnYSAtPiAnYVxuICB2YWwgZWxlbWVudHMgOiB0IC0+IGVsdCBsaXN0XG4gIHZhbCBjaG9vc2UgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1pbl9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbiAgdmFsIG1heF9lbHQgOiB0IC0+IGVsdCBvcHRpb25cbmVuZFxuXG5tb2R1bGUgdHlwZSBNYXBfd2l0aF9sb2dzID0gc2lnXG4gIHR5cGUgZWx0XG4gIHR5cGUgc2V0XG4gIHR5cGUgKydhIHRcblxuICB2YWwgZW1wdHkgOiAnYSB0XG4gIHZhbCBpc19lbXB0eSA6ICdhIHQgLT4gYm9vbFxuICB2YWwgbWluX2VsdCA6ICdhIHQgLT4gKGVsdCAqICdhKSBvcHRpb25cbiAgdmFsIG1lbSA6IGVsdCAtPiAnYSB0IC0+IGJvb2xcblxuICB2YWwgZmluZF9vcHRpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2Egb3B0aW9uXG5cbiAgdmFsIGZpbmRfZGVmYXVsdCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhXG5cbiAgdmFsIGZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgIGVsdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYVxuXG4gIHZhbCBmaW5kX29wdGlvbl93aXRob3V0X2xvZ3MgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2Egb3B0aW9uXG5cbiAgdmFsIGFkZCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBhZGRfb3Jfb3ZlcndyaXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCByZW1vdmUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCByZW1vdmVfb3Jfbm90IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHRcblxuICB2YWwgdXBkYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIG1hcDIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MgdFxuXG4gIHZhbCBtYXAyeiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYSB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2EgdFxuXG4gIHZhbCBmb2xkMnogOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnY1xuXG4gIHZhbCBmb2xkMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGZvbGQyX3NwYXJzZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2MpIC0+XG4gICAgJ2EgdCAtPlxuICAgICdiIHQgLT5cbiAgICAnYyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdjXG5cbiAgdmFsIGl0ZXIyX3NwYXJzZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG4gIHZhbCBkaWZmIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0ICogJ2EgdFxuXG4gIHZhbCBkaWZmX3ByZWQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2EgdCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIHQgKiAnYSB0XG5cbiAgdmFsIG1lcmdlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIHVuaW9uIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgdCAtPlxuICAgICdhIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSB0XG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoZWx0IC0+XG4gICAgJ2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgIHNldCAtPlxuICAgICdhIHQgLT5cbiAgICAnYiAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiXG5cbiAgdmFsIGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9ucyA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHQgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgKGVsdCAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYikgLT5cbiAgICBzZXQgLT5cbiAgICAnYSB0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYlxuXG4gIHZhbCBpdGVyIDogKGVsdCAtPiAnYSAtPiB1bml0KSAtPiAnYSB0IC0+IHVuaXRcblxuICB2YWwgaXRlcjIgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0IC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIpIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHQgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICdhIHQgLT5cbiAgICAnYiB0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbiAgdmFsIGZvbGQgOiAoZWx0IC0+ICdhIC0+ICdiIC0+ICdiKSAtPiAnYSB0IC0+ICdiIC0+ICdiXG4gIHZhbCBtYXBpIDogKGVsdCAtPiAnYSAtPiAnYikgLT4gJ2EgdCAtPiAnYiB0XG4gIHZhbCBtYXAgOiAoJ2EgLT4gJ2IpIC0+ICdhIHQgLT4gJ2IgdFxuICB2YWwgZm9yX2FsbCA6IChlbHQgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiBib29sXG4gIHZhbCBmaWx0ZXJfb25lIDogKGVsdCAtPiAnYSAtPiBib29sKSAtPiAnYSB0IC0+IChlbHQgKiAnYSkgb3B0aW9uXG4gIHZhbCBjb21wYXJlIDogKCdhIC0+ICdhIC0+IGludCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGludFxuICB2YWwgZXF1YWwgOiAoJ2EgLT4gJ2EgLT4gYm9vbCkgLT4gJ2EgdCAtPiAnYSB0IC0+IGJvb2xcbiAgdmFsIGJpbmRpbmdzIDogJ2EgdCAtPiAoZWx0ICogJ2EpIGxpc3RcblxuICB2YWwgb2ZfanNvbiA6XG4gICAgP2xhYl9rZXk6c3RyaW5nIC0+XG4gICAgP2xhYl92YWx1ZTpzdHJpbmcgLT5cbiAgICA/ZXJyb3JfbXNnOnN0cmluZyAtPlxuICAgIChZb2pzb24uQmFzaWMudCAtPiBlbHQpIC0+XG4gICAgKFlvanNvbi5CYXNpYy50IC0+ICd2YWx1ZSkgLT5cbiAgICBZb2pzb24uQmFzaWMudCAtPlxuICAgICd2YWx1ZSB0XG5cbiAgdmFsIHRvX2pzb24gOlxuICAgID9sYWJfa2V5OnN0cmluZyAtPlxuICAgID9sYWJfdmFsdWU6c3RyaW5nIC0+XG4gICAgKGVsdCAtPiBZb2pzb24uQmFzaWMudCkgLT5cbiAgICAoJ3ZhbHVlIC0+IFlvanNvbi5CYXNpYy50KSAtPlxuICAgICd2YWx1ZSB0IC0+XG4gICAgWW9qc29uLkJhc2ljLnRcbmVuZFxuXG5tb2R1bGUgdHlwZSBTX3dpdGhfbG9ncyA9IHNpZ1xuICB0eXBlIGVsdFxuXG4gIG1vZHVsZSBTZXQgOiBTZXRfd2l0aF9sb2dzIHdpdGggdHlwZSBlbHQgPSBlbHRcbiAgbW9kdWxlIE1hcCA6IE1hcF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IGVsdCBhbmQgdHlwZSBzZXQgPSBTZXQudFxuZW5kXG5cbmxldCBsaWZ0IGYgPSBmIEV4Y2VwdGlvbi53cmFwXG5cbm1vZHVsZSBNYWtlIChTX2JvdGggOiBTZXRNYXAuUykgOlxuICBTX3dpdGhfbG9nc1xuICAgIHdpdGggdHlwZSBlbHQgPSBTX2JvdGguZWx0XG4gICAgIGFuZCB0eXBlICdhIE1hcC50ID0gJ2EgU19ib3RoLk1hcC50XG4gICAgIGFuZCB0eXBlIFNldC50ID0gU19ib3RoLlNldC50ID0gc3RydWN0XG4gIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuXG4gIG1vZHVsZSBTZXQgOlxuICAgIFNldF93aXRoX2xvZ3Mgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHQgYW5kIHR5cGUgdCA9IFNfYm90aC5TZXQudCA9IHN0cnVjdFxuICAgIHR5cGUgZWx0ID0gU19ib3RoLmVsdFxuICAgIHR5cGUgdCA9IFNfYm90aC5TZXQudFxuXG4gICAgbGV0IGVtcHR5ID0gU19ib3RoLlNldC5lbXB0eVxuICAgIGxldCBpc19lbXB0eSA9IFNfYm90aC5TZXQuaXNfZW1wdHlcbiAgICBsZXQgc2luZ2xldG9uID0gU19ib3RoLlNldC5zaW5nbGV0b25cbiAgICBsZXQgaXNfc2luZ2xldG9uID0gU19ib3RoLlNldC5pc19zaW5nbGV0b25cbiAgICBsZXQgYWRkID0gbGlmdCBTX2JvdGguU2V0LmFkZF93aXRoX2xvZ3NcblxuICAgIGxldCBhZGRfd2hlbl9ub3RfaW4gcCBlIHggcyA9XG4gICAgICBsZXQgZSwgXywgcyA9IChsaWZ0IFNfYm90aC5TZXQuYWRkX3doaWxlX3Rlc3RpbmdfZnJlc2huZXNzKSBwIGUgeCBzIGluXG4gICAgICBlLCBzXG5cbiAgICBsZXQgcmVtb3ZlID0gbGlmdCBTX2JvdGguU2V0LnJlbW92ZV93aXRoX2xvZ3NcbiAgICBsZXQgdW5pb24gPSBsaWZ0IFNfYm90aC5TZXQudW5pb25fd2l0aF9sb2dzXG4gICAgbGV0IGRpc2pvaW50X3VuaW9uID0gbGlmdCBTX2JvdGguU2V0LmRpc2pvaW50X3VuaW9uX3dpdGhfbG9nc1xuICAgIGxldCBpbnRlciA9IGxpZnQgU19ib3RoLlNldC5pbnRlcl93aXRoX2xvZ3NcbiAgICBsZXQgZGlmZiA9IGxpZnQgU19ib3RoLlNldC5kaWZmX3dpdGhfbG9nc1xuICAgIGxldCBtaW51cyA9IGxpZnQgU19ib3RoLlNldC5taW51c193aXRoX2xvZ3NcbiAgICBsZXQgY2FyZGluYWwgPSBTX2JvdGguU2V0LnNpemVcbiAgICBsZXQgbWVtID0gU19ib3RoLlNldC5tZW1cbiAgICBsZXQgZXhpc3RzID0gU19ib3RoLlNldC5leGlzdHNcbiAgICBsZXQgZmlsdGVyID0gU19ib3RoLlNldC5maWx0ZXJcbiAgICBsZXQgZm9yX2FsbCA9IFNfYm90aC5TZXQuZm9yX2FsbFxuICAgIGxldCBwYXJ0aXRpb24gPSBTX2JvdGguU2V0LnBhcnRpdGlvblxuICAgIGxldCBjb21wYXJlID0gU19ib3RoLlNldC5jb21wYXJlXG4gICAgbGV0IGVxdWFsID0gU19ib3RoLlNldC5lcXVhbFxuICAgIGxldCBzdWJzZXQgPSBTX2JvdGguU2V0LnN1YnNldFxuICAgIGxldCBpdGVyID0gU19ib3RoLlNldC5pdGVyXG4gICAgbGV0IGZvbGQgPSBTX2JvdGguU2V0LmZvbGRcbiAgICBsZXQgZm9sZF9pbnYgPSBTX2JvdGguU2V0LmZvbGRfaW52XG4gICAgbGV0IGVsZW1lbnRzID0gU19ib3RoLlNldC5lbGVtZW50c1xuICAgIGxldCBjaG9vc2UgPSBTX2JvdGguU2V0LmNob29zZVxuICAgIGxldCBtaW5fZWx0ID0gU19ib3RoLlNldC5taW5fZWx0XG4gICAgbGV0IG1heF9lbHQgPSBTX2JvdGguU2V0Lm1heF9lbHRcbiAgZW5kXG5cbiAgbW9kdWxlIE1hcCA6XG4gICAgTWFwX3dpdGhfbG9nc1xuICAgICAgd2l0aCB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICAgICBhbmQgdHlwZSAnYSB0ID0gJ2EgU19ib3RoLk1hcC50XG4gICAgICAgYW5kIHR5cGUgc2V0ID0gU19ib3RoLlNldC50XG4gICAgICAgYW5kIHR5cGUgc2V0ID0gU2V0LnQgPSBzdHJ1Y3RcbiAgICB0eXBlIGVsdCA9IFNfYm90aC5lbHRcbiAgICB0eXBlIHNldCA9IFNfYm90aC5TZXQudFxuICAgIHR5cGUgKydkYXRhIHQgPSAnZGF0YSBTX2JvdGguTWFwLnRcblxuICAgIGxldCBlbXB0eSA9IFNfYm90aC5NYXAuZW1wdHlcbiAgICBsZXQgaXNfZW1wdHkgPSBTX2JvdGguTWFwLmlzX2VtcHR5XG4gICAgbGV0IG1pbl9lbHQgPSBTX2JvdGguTWFwLm1pbl9lbHRcbiAgICBsZXQgbWVtID0gU19ib3RoLk1hcC5tZW1cbiAgICBsZXQgZmluZF9vcHRpb24gYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5maW5kX29wdGlvbl93aXRoX2xvZ3MgYSBiIGMgZFxuICAgIGxldCBmaW5kX2RlZmF1bHQgYSBiIGMgZCA9IGxpZnQgU19ib3RoLk1hcC5maW5kX2RlZmF1bHRfd2l0aF9sb2dzIGEgYiBjIGRcbiAgICBsZXQgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIF9hIGIgYyBkID0gYiwgU19ib3RoLk1hcC5maW5kX29wdGlvbiBjIGRcbiAgICBsZXQgZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBfYSBiIGMgZCBlID0gYiwgU19ib3RoLk1hcC5maW5kX2RlZmF1bHQgYyBkIGVcbiAgICBsZXQgYWRkIGEgYiBjIGQgPSBsaWZ0IFNfYm90aC5NYXAuYWRkX3dpdGhfbG9ncyBhIGIgYyBkXG5cbiAgICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBjIGQgZSA9XG4gICAgICBsZXQgZXJyb3IsIGJvb2wsIG1hcCA9XG4gICAgICAgIGxpZnQgU19ib3RoLk1hcC5hZGRfd2hpbGVfdGVzdGluZ19mcmVzaG5lc3MgcGFyYW1ldGVyIGVycm9yIGMgZCBlXG4gICAgICBpblxuICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJhdHRlbXB0IHRvIG92ZXJ3cml0ZSBhbiBhc3NvY2lhdGlvbiB0aGF0IGRvZXMgbm90IGV4aXN0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkF0dGVtcHQgdG8gb3ZlcndyaXRlIGFuIGFzc29jaWF0aW9uIHRoYXQgZG9lcyBub3QgZXhpc3RcIilcbiAgICAgICAgICBtYXBcbiAgICAgIGVsc2VcbiAgICAgICAgZXJyb3IsIG1hcFxuXG4gICAgbGV0IGFkZF9vcl9vdmVyd3JpdGUgYSBiIGMgZCBlID1cbiAgICAgIGxldCBlcnJvciwgXywgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLmFkZF93aGlsZV90ZXN0aW5nX2ZyZXNobmVzcyBhIGIgYyBkIGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbWFwXG5cbiAgICBsZXQgcmVtb3ZlIGEgYiBjIGQgPSBsaWZ0IFNfYm90aC5NYXAucmVtb3ZlX3dpdGhfbG9ncyBhIGIgYyBkXG5cbiAgICBsZXQgcmVtb3ZlX29yX25vdCBhIGIgYyBkID1cbiAgICAgIGxldCBlcnJvciwgXywgbWFwID1cbiAgICAgICAgbGlmdCBTX2JvdGguTWFwLnJlbW92ZV93aGlsZV90ZXN0aW5nX2V4aXN0ZW5jZSBhIGIgYyBkXG4gICAgICBpblxuICAgICAgZXJyb3IsIG1hcFxuXG4gICAgbGV0IHVwZGF0ZSBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC51cGRhdGVfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IG1hcDIgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWFwMl93aXRoX2xvZ3MgYSBiIGNcbiAgICBsZXQgbWFwMnogYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAubWFwMnpfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGZvbGQyeiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5mb2xkMnpfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGZvbGQyIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmZvbGQyX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGl0ZXIyIHBhcmFtZXRlciBlcnJvciBmIGcgaCBtYXBmIG1hcGcgPVxuICAgICAgZnN0XG4gICAgICAgIChTX2JvdGguTWFwLmZvbGQyX3dpdGhfbG9ncyBFeGNlcHRpb24ud3JhcCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgKGZ1biBhIGIgYyBkICgpIC0+IGYgYSBiIGMgZCwgKCkpXG4gICAgICAgICAgIChmdW4gYSBiIGMgZCAoKSAtPiBnIGEgYiBjIGQsICgpKVxuICAgICAgICAgICAoZnVuIGEgYiBjIGQgZSAoKSAtPiBoIGEgYiBjIGQgZSwgKCkpXG4gICAgICAgICAgIG1hcGYgbWFwZyAoKSlcblxuICAgIGxldCBmb2xkMl9zcGFyc2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuZm9sZDJfc3BhcnNlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBpdGVyMl9zcGFyc2UgYSBiIGMgPSBsaWZ0IFNfYm90aC5NYXAuaXRlcjJfc3BhcnNlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCBkaWZmIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLmRpZmZfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IGRpZmZfcHJlZCBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC5kaWZmX3ByZWRfd2l0aF9sb2dzIGEgYiBjXG4gICAgbGV0IG1lcmdlIGEgYiBjID0gbGlmdCBTX2JvdGguTWFwLm1lcmdlX3dpdGhfbG9ncyBhIGIgY1xuICAgIGxldCB1bmlvbiBhIGIgYyA9IGxpZnQgU19ib3RoLk1hcC51bmlvbl93aXRoX2xvZ3MgYSBiIGNcblxuICAgIGxldCBmb2xkX3Jlc3RyaWN0aW9uIGEgYiBjID1cbiAgICAgIGxpZnQgU19ib3RoLk1hcC5mb2xkX3Jlc3RyaWN0aW9uX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGZvbGRfcmVzdHJpY3Rpb25fd2l0aF9taXNzaW5nX2Fzc29jaWF0aW9ucyBhIGIgYyA9XG4gICAgICBsaWZ0IFNfYm90aC5NYXAuZm9sZF9yZXN0cmljdGlvbl93aXRoX21pc3NpbmdfYXNzb2NpYXRpb25zX3dpdGhfbG9ncyBhIGIgY1xuXG4gICAgbGV0IGl0ZXIgPSBTX2JvdGguTWFwLml0ZXJcbiAgICBsZXQgZm9sZCA9IFNfYm90aC5NYXAuZm9sZFxuICAgIGxldCBtYXBpID0gU19ib3RoLk1hcC5tYXBpXG4gICAgbGV0IG1hcCA9IFNfYm90aC5NYXAubWFwXG4gICAgbGV0IGZvcl9hbGwgPSBTX2JvdGguTWFwLmZvcl9hbGxcbiAgICBsZXQgZmlsdGVyX29uZSA9IFNfYm90aC5NYXAuZmlsdGVyX29uZVxuICAgIGxldCBjb21wYXJlID0gU19ib3RoLk1hcC5jb21wYXJlXG4gICAgbGV0IGVxdWFsID0gU19ib3RoLk1hcC5lcXVhbFxuICAgIGxldCBiaW5kaW5ncyA9IFNfYm90aC5NYXAuYmluZGluZ3NcbiAgICBsZXQgdG9fanNvbiA9IFNfYm90aC5NYXAudG9fanNvblxuICAgIGxldCBvZl9qc29uID0gU19ib3RoLk1hcC5vZl9qc29uXG4gIGVuZFxuZW5kXG5cbm1vZHVsZSB0eXBlIFByb2plY3Rpb24gPSBzaWdcbiAgdHlwZSBlbHRfYVxuICB0eXBlIGVsdF9iXG4gIHR5cGUgJ2EgbWFwX2FcbiAgdHlwZSAnYSBtYXBfYlxuICB0eXBlIHNldF9hXG4gIHR5cGUgc2V0X2JcblxuICB2YWwgcHJval9tYXAgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoJ2IgLT4gJ2EgLT4gJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfbWFwIDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYiAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYiBtYXBfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfbWFwX2kgOlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZWx0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgZWx0X2EgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiKSAtPlxuICAgICdhIG1hcF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2IgbWFwX2JcblxuICB2YWwgcHJval9zZXQgOlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgc2V0X2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBzZXRfYlxuXG4gIHZhbCBtb25hZGljX3Byb2pfc2V0IDpcbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogZWx0X2IpIC0+XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHNldF9hIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogc2V0X2JcblxuICB2YWwgcGFydGl0aW9uX3NldCA6XG4gICAgKGVsdF9hIC0+IGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9hIG1hcF9iXG5cbiAgdmFsIG1vbmFkaWNfcGFydGl0aW9uX3NldCA6XG4gICAgKFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBlbHRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGVsdF9iKSAtPlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBzZXRfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIHNldF9hIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2ogKEEgOiBTX3dpdGhfbG9ncykgKEIgOiBTX3dpdGhfbG9ncykgOlxuICBQcm9qZWN0aW9uXG4gICAgd2l0aCB0eXBlIGVsdF9hID0gQS5lbHRcbiAgICAgYW5kIHR5cGUgZWx0X2IgPSBCLmVsdFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYSA9ICdhIEEuTWFwLnRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2IgPSAnYSBCLk1hcC50XG4gICAgIGFuZCB0eXBlIHNldF9hID0gQS5TZXQudFxuICAgICBhbmQgdHlwZSBzZXRfYiA9IEIuU2V0LnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIFNBID0gQS5TZXRcbiAgbW9kdWxlIFNCID0gQi5TZXRcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBzZXRfYSA9IFNBLnRcbiAgdHlwZSBzZXRfYiA9IFNCLnRcbiAgdHlwZSAnYSBtYXBfYSA9ICdhIE1BLnRcbiAgdHlwZSAnYSBtYXBfYiA9ICdhIE1CLnRcblxuICBsZXQgcHJval9tYXAgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgTUEuZm9sZFxuICAgICAgKGZ1biBrZXlfYSBkYXRhX2EgKGVycm9yLCBtYXBfYikgLT5cbiAgICAgICAgbGV0IGtleV9iID0gZiBrZXlfYSBpblxuICAgICAgICBtYXRjaCBNQi5maW5kX29wdGlvbl93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGtleV9iIG1hcF9iIHdpdGhcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iXG4gICAgICAgICAgICAobWVyZ2UgaWRlbnRpdHlfZWx0IGRhdGFfYSlcbiAgICAgICAgICAgIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgKG1lcmdlIG9sZCBkYXRhX2EpIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9tYXBfaSBmIHBhcmFtZXRlciBlcnJvciBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gbWVyZ2UgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBrZXlfYSBkYXRhX2EgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBkYXRhJyBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgZGF0YScgPSBtZXJnZSBwYXJhbWV0ZXIgZXJyb3Igb2xkIGtleV9hIGRhdGFfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iKVxuICAgICAgbWFwIChlcnJvciwgTUIuZW1wdHkpXG5cbiAgbGV0IG1vbmFkaWNfcHJval9tYXAgZiBwYXJhbWV0ZXIgZXJyb3IgaWRlbnRpdHlfZWx0IG1lcmdlIG1hcCA9XG4gICAgbW9uYWRpY19wcm9qX21hcF9pIGYgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdFxuICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3Igb2xkIF8gZGF0YV9hIC0+IG1lcmdlIHBhcmFtZXRlciBlcnJvciBvbGQgZGF0YV9hKVxuICAgICAgbWFwXG5cbiAgbGV0IHBhcnRpdGlvbl9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0ID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiAoU0Euc2luZ2xldG9uIGtleV9hKSBtYXBfYlxuICAgICAgICB8IGVycm9yLCBTb21lIG9sZCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbmV3c2V0ID0gU0EuYWRkIHBhcmFtZXRlciBlcnJvciBrZXlfYSBvbGQgaW5cbiAgICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBuZXdzZXQgbWFwX2IpXG4gICAgICBzZXQgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgbW9uYWRpY19wYXJ0aXRpb25fc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldCA9XG4gICAgU0EuZm9sZFxuICAgICAgKGZ1biBrZXlfYSAoZXJyb3IsIG1hcF9iKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIGtleV9iID0gZiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2EgaW5cbiAgICAgICAgbWF0Y2ggTUIuZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIHBhcmFtZXRlciBlcnJvciBrZXlfYiBtYXBfYiB3aXRoXG4gICAgICAgIHwgZXJyb3IsIE5vbmUgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGRhdGEnID0gZXJyb3IsIFNBLnNpbmdsZXRvbiBrZXlfYSBpblxuICAgICAgICAgIE1CLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleV9iIGRhdGEnIG1hcF9iXG4gICAgICAgIHwgZXJyb3IsIFNvbWUgb2xkIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBkYXRhJyA9IFNBLmFkZF93aGVuX25vdF9pbiBwYXJhbWV0ZXIgZXJyb3Iga2V5X2Egb2xkIGluXG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5X2IgZGF0YScgbWFwX2IpXG4gICAgICBzZXQgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgcHJval9zZXQgZiBwYXJhbWV0ZXIgZXJyb3Igc2V0X2EgPVxuICAgIFNBLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgKGVycm9yLCBzZXRfYikgLT5cbiAgICAgICAgU0IuYWRkX3doZW5fbm90X2luIHBhcmFtZXRlciBlcnJvciAoZiBrZXlfYSkgc2V0X2IpXG4gICAgICBzZXRfYSAoZXJyb3IsIFNCLmVtcHR5KVxuXG4gIGxldCBtb25hZGljX3Byb2pfc2V0IGYgcGFyYW1ldGVyIGVycm9yIHNldF9hID1cbiAgICBTQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIChlcnJvciwgc2V0X2IpIC0+XG4gICAgICAgIGxldCBlcnJvciwga2V5X2IgPSBmIHBhcmFtZXRlciBlcnJvciBrZXlfYSBpblxuICAgICAgICBTQi5hZGRfd2hlbl9ub3RfaW4gcGFyYW1ldGVyIGVycm9yIGtleV9iIHNldF9iKVxuICAgICAgc2V0X2EgKGVycm9yLCBTQi5lbXB0eSlcbmVuZFxuXG5tb2R1bGUgdHlwZSBQcm9qZWN0aW9uMiA9IHNpZ1xuICB0eXBlIGVsdF9hXG4gIHR5cGUgZWx0X2JcbiAgdHlwZSBlbHRfY1xuICB0eXBlICdhIG1hcF9hXG4gIHR5cGUgJ2EgbWFwX2JcbiAgdHlwZSAnYSBtYXBfY1xuXG4gIHZhbCBwcm9qMiA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdiIC0+XG4gICAgJ2EgLT5cbiAgICAnYikgLT5cbiAgICAnYSBtYXBfYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdiIG1hcF9jIG1hcF9iXG5cbiAgdmFsIHByb2oyX21vbmFkaWMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnbXZiZHVfaGFuZGxlciAtPlxuICAgIChlbHRfYSAtPiBlbHRfYikgLT5cbiAgICAoZWx0X2EgLT4gZWx0X2MpIC0+XG4gICAgJ2IgLT5cbiAgICAoUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdtdmJkdV9oYW5kbGVyIC0+XG4gICAgJ2IgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdtdmJkdV9oYW5kbGVyICogJ2IpIC0+XG4gICAgJ2EgbWFwX2EgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnbXZiZHVfaGFuZGxlciAqICdiIG1hcF9jIG1hcF9iXG5lbmRcblxubW9kdWxlIFByb2oyIChBIDogU193aXRoX2xvZ3MpIChCIDogU193aXRoX2xvZ3MpIChDIDogU193aXRoX2xvZ3MpIDpcbiAgUHJvamVjdGlvbjJcbiAgICB3aXRoIHR5cGUgZWx0X2EgPSBBLmVsdFxuICAgICBhbmQgdHlwZSBlbHRfYiA9IEIuZWx0XG4gICAgIGFuZCB0eXBlIGVsdF9jID0gQy5lbHRcbiAgICAgYW5kIHR5cGUgJ2EgbWFwX2EgPSAnYSBBLk1hcC50XG4gICAgIGFuZCB0eXBlICdhIG1hcF9iID0gJ2EgQi5NYXAudFxuICAgICBhbmQgdHlwZSAnYSBtYXBfYyA9ICdhIEMuTWFwLnQgPSBzdHJ1Y3RcbiAgbW9kdWxlIE1BID0gQS5NYXBcbiAgbW9kdWxlIE1CID0gQi5NYXBcbiAgbW9kdWxlIE1DID0gQy5NYXBcblxuICB0eXBlIGVsdF9hID0gTUEuZWx0XG4gIHR5cGUgZWx0X2IgPSBNQi5lbHRcbiAgdHlwZSBlbHRfYyA9IE1DLmVsdFxuICB0eXBlICdhIG1hcF9hID0gJ2EgTUEudFxuICB0eXBlICdhIG1hcF9iID0gJ2EgTUIudFxuICB0eXBlICdhIG1hcF9jID0gJ2EgTUMudFxuXG4gIGxldCBwcm9qMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGlkZW50aXR5X2VsdCBtZXJnZSBtYXAgPVxuICAgIE1BLmZvbGRcbiAgICAgIChmdW4ga2V5X2EgZGF0YV9hIChlcnJvciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgZXJyb3IsIHN1Ym1hcCA9XG4gICAgICAgICAgTUIuZmluZF9kZWZhdWx0X3dpdGhvdXRfbG9ncyBwYXJhbWV0ZXIgZXJyb3IgTUMuZW1wdHkga2V5X2IgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBmaW5kX2RlZmF1bHQgPVxuICAgICAgICAgIE1DLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGVycm9yIGlkZW50aXR5X2VsdCBrZXlfYyBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBzdWJtYXAgPVxuICAgICAgICAgIE1DLmFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5X2NcbiAgICAgICAgICAgIChtZXJnZSBwYXJhbWV0ZXIgZXJyb3IgZmluZF9kZWZhdWx0IGRhdGFfYSlcbiAgICAgICAgICAgIHN1Ym1hcFxuICAgICAgICBpblxuICAgICAgICBNQi5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXlfYiBzdWJtYXAgbWFwX2IpXG4gICAgICBtYXAgKGVycm9yLCBNQi5lbXB0eSlcblxuICBsZXQgcHJvajJfbW9uYWRpYyBwYXJhbWV0ZXIgaGFuZGxlciBtdmJkdV9oYW5kbGVyIGYgZyBpZGVudGl0eV9lbHQgbWVyZ2UgbWFwID1cbiAgICBNQS5mb2xkXG4gICAgICAoZnVuIGtleV9hIGRhdGFfYSAoaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgbWFwX2IpIC0+XG4gICAgICAgIGxldCBrZXlfYiA9IGYga2V5X2EgaW5cbiAgICAgICAgbGV0IGtleV9jID0gZyBrZXlfYSBpblxuICAgICAgICBsZXQgaGFuZGxlciwgc3VibWFwID1cbiAgICAgICAgICBNQi5maW5kX2RlZmF1bHRfd2l0aG91dF9sb2dzIHBhcmFtZXRlciBoYW5kbGVyIE1DLmVtcHR5IGtleV9iIG1hcF9iXG4gICAgICAgIGluXG4gICAgICAgIGxldCBoYW5kbGVyLCBmaW5kX2RlZmF1bHQgPVxuICAgICAgICAgIE1DLmZpbmRfZGVmYXVsdF93aXRob3V0X2xvZ3MgcGFyYW1ldGVyIGhhbmRsZXIgaWRlbnRpdHlfZWx0IGtleV9jXG4gICAgICAgICAgICBzdWJtYXBcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIG12YmR1X2hhbmRsZXIsIGRhdGEnID1cbiAgICAgICAgICBtZXJnZSBwYXJhbWV0ZXIgaGFuZGxlciBtdmJkdV9oYW5kbGVyIGZpbmRfZGVmYXVsdCBkYXRhX2FcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIHN1Ym1hcCA9IE1DLmFkZCBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYyBkYXRhJyBzdWJtYXAgaW5cbiAgICAgICAgbGV0IGhhbmRsZXIsIGFkZCA9XG4gICAgICAgICAgTUIuYWRkX29yX292ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBrZXlfYiBzdWJtYXAgbWFwX2JcbiAgICAgICAgaW5cbiAgICAgICAgaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgYWRkKVxuICAgICAgbWFwXG4gICAgICAoaGFuZGxlciwgbXZiZHVfaGFuZGxlciwgTUIuZW1wdHkpXG5lbmRcbiIsIigqKlxuICAqIGZpZm8ubWxcbiAgKiBvcGVua2FwcGFcbiAgKiBKw6lyw7RtZSBGZXJldCAmIEx5IEtpbSBRdXllbiwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKlxuICAqIENyZWF0aW9uOiAyMDE1LCB0aGUgMjd0aCBvZiBKdWx5XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBdWcgMDYgMjAxNj5cbiAgKlxuICAqIFdvcmsgbGlzdCAtIEZJRk9cbiAgKlxuICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5vcGVuIFNldE1hcFxuXG5sZXQgbG9jYWxfdHJhY2UgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBXb3JrX2xpc3QgPSBzaWdcbiAgdHlwZSBlbHRcbiAgdHlwZSB0XG5cbiAgdmFsIGVtcHR5IDogdFxuICB2YWwgaXNfZW1wdHkgOiB0IC0+IGJvb2xcblxuICB2YWwgcHVzaCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGVsdCAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0XG5cbiAgdmFsIHBvcCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoZWx0IG9wdGlvbiAqIHQpXG5cbiAgdmFsIGZvbGRfbGVmdCA6ICgnYSAtPiBlbHQgLT4gJ2EpIC0+ICdhIC0+IHQgLT4gJ2FcbiAgdmFsIHByaW50X3dsIDogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPiB0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgV2xNYWtlIChPcmQgOiBPcmRlcmVkVHlwZSB3aXRoIHR5cGUgdCA9IGludCkgPSBzdHJ1Y3RcbiAgbW9kdWxlIFdTZXRNYXAgPSBNYXBfd3JhcHBlci5NYWtlIChTZXRNYXAuTWFrZSAoT3JkKSlcbiAgbW9kdWxlIFdTZXQgPSBXU2V0TWFwLlNldFxuXG4gIHR5cGUgZWx0ID0gT3JkLnRcbiAgdHlwZSB0ID0gZWx0IGxpc3QgKiBlbHQgbGlzdCAqIFdTZXQudFxuXG4gIGxldCBlbXB0eSA9IFtdLCBbXSwgV1NldC5lbXB0eVxuXG4gIGxldCBpc19lbXB0eSB4ID1cbiAgICBsZXQgXywgXywgcG9vbCA9IHggaW5cbiAgICBXU2V0LmlzX2VtcHR5IHBvb2xcblxuICBsZXQgcHVzaCBwYXJhbWV0ZXIgZXJyb3IgZSB4ID1cbiAgICBsZXQgaW5fbGlzdCwgb3V0X2xpc3QsIHBvb2wgPSB4IGluXG4gICAgaWYgV1NldC5tZW0gZSBwb29sIHRoZW5cbiAgICAgIGVycm9yLCB4XG4gICAgZWxzZSAoXG4gICAgICBsZXQgZXJyb3InLCBhZGRfZWx0ID0gV1NldC5hZGQgcGFyYW1ldGVyIGVycm9yIGUgcG9vbCBpblxuICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgRXhjZXB0aW9uLmNoZWNrX3BvaW50IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgX19QT1NfXyBFeGl0XG4gICAgICBpblxuICAgICAgZXJyb3IsIChlIDo6IGluX2xpc3QsIG91dF9saXN0LCBhZGRfZWx0KVxuICAgIClcblxuICBsZXQgZm9sZF9sZWZ0IGYgYWNjIHggPVxuICAgIGxldCBpbl9saXN0LCBvdXRfbGlzdCwgXyA9IHggaW5cbiAgICBMaXN0LmZvbGRfbGVmdCBmIChMaXN0LmZvbGRfbGVmdCBmIGFjYyBvdXRfbGlzdCkgKExpc3QucmV2IGluX2xpc3QpXG5cbiAgbGV0IHByaW50X3dsIHBhcmFtZXRlcnMgd2wgPVxuICAgICgqbGV0IF8gPSBmb2xkX2xlZnRcbiAgICAgIChmdW4gICgpIGEgLT4gUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXJzKSBcIiVpIFwiIGEpXG4gICAgICAoKSB3bFxuICAgICAgaW5cbiAgICAgICgqcHJpbnRfbmV3bGluZSgpKilcbiAgICAgIGxldCBfID0gcHJpbnRfbmV3bGluZSAoKSBpbiopXG4gICAgbGV0IF8sIF8sIHNldCA9IHdsIGluXG4gICAgV1NldC5pdGVyXG4gICAgICAoZnVuIGkgLT5cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCIlaSBcIiBpKVxuICAgICAgc2V0O1xuICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiXFxuXCJcblxuICBsZXQgcmVjIHBvcCBwYXJhbWV0ZXIgZXJyb3IgeCA9XG4gICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBwb29sID0geCBpblxuICAgIGlmIGlzX2VtcHR5IHggdGhlblxuICAgICAgZXJyb3IsIChOb25lLCB4KVxuICAgIGVsc2UgKFxuICAgICAgbWF0Y2ggb3V0X2xpc3Qgd2l0aFxuICAgICAgfCBbXSAtPiBwb3AgcGFyYW1ldGVyIGVycm9yIChbXSwgTGlzdC5yZXYgaW5fbGlzdCwgcG9vbClcbiAgICAgIHwgaCA6OiB0bCAtPlxuICAgICAgICBsZXQgZXJyb3IsIHJlbW92ZV9lbHQgPSBXU2V0LnJlbW92ZSBwYXJhbWV0ZXIgZXJyb3IgaCBwb29sIGluXG4gICAgICAgIGVycm9yLCAoU29tZSBoLCAoaW5fbGlzdCwgdGwsIHJlbW92ZV9lbHQpKVxuICAgIClcblxuICAoKmZvciBkZWJ1ZyopXG4gICgqIGxldCByZWMgcG9wIHBhcmFtZXRlciBlcnJvciB4ID1cbiAgICAgbGV0IGluX2xpc3QsIG91dF9saXN0LCBwb29sID0geCBpblxuICAgICBpZiBpc19lbXB0eSB4XG4gICAgIHRoZW5cbiAgICAgZXJyb3IsIChOb25lLCB4KVxuICAgICBlbHNlXG4gICAgIGJlZ2luXG4gICAgIG1hdGNoIG91dF9saXN0IHdpdGhcbiAgICAgfCBbXSAtPiBwb3AgcGFyYW1ldGVyIGVycm9yIChbXSwgKExpc3QucmV2IGluX2xpc3QpLCBwb29sKVxuICAgICB8IGggOjogdGwgLT5cbiAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXIpXG4gICAgIFwiQkVGT1JFIFJFTU9WRSAlaSBcIiBoIGluXG4gICAgIGxldCBfID0gIFdTZXQuaXRlciAoZnVuIGkgLT5cbiAgICAgUHJpbnRmLmZwcmludGYgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZyBwYXJhbWV0ZXIpIFwiJWkgXCIgaSkgcG9vbCBpblxuICAgICBsZXQgZXJyb3IscmVtb3ZlX2VsdCA9IFdTZXQucmVtb3ZlIHBhcmFtZXRlciBlcnJvciBoIHBvb2wgaW5cbiAgICAgbGV0IF8gPSAgV1NldC5pdGVyIChmdW4gaSAtPlxuICAgICBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHBhcmFtZXRlcikgXCIlaSBcIiBpKSByZW1vdmVfZWx0XG4gICAgIGluXG4gICAgIGVycm9yLCAoKFNvbWUgaCksIChpbl9saXN0LCB0bCwgcmVtb3ZlX2VsdCkpXG4gICAgIGVuZCopXG5cbiAgKCpmb3IgZGVidWcqKVxuICAoKmxldCBwdXNoIHAgZSBmIHggPVxuICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJCRUZPUkUgUFVVU0ggJWlcXG4gXCIgZiBpblxuICAgIGxldCBfID0gcHJpbnRfd2wgcCB4IGluXG4gICAgbGV0IGVycm9yLHdsID0gcHVzaCBwIGUgZiB4IGluXG4gICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nIHApIFwiT1VUUFVUXFxuXCIgaW5cbiAgICBsZXQgXyA9IHByaW50X3dsIHAgd2wgaW5cbiAgICBsZXQgXyA9IFByaW50Zi5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2cgcCkgXCJcXG5cIiBpblxuICAgIGVycm9yLHdsICopXG5lbmRcblxubW9kdWxlIEludFdMID0gTW9kcy5JbnRNYXBcbiIsIigqKlxuICAgKiBpbnRfc3RvcmFnZS5tbFxuICAgKlxuICAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTAtMDctMjcgZmVyZXQ+XG4gICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8QXByIDEzIDIwMTg+XG4gICAqXG4gICAqIG9wZW5rYXBwYVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICpcbiAgICpcbiAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHByaW1pdGl2ZXMgdG8gZGVhbCB3aXRoIHN0b3JhZ2UgZnVuY3Rpb25zXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDEwLDIwMTEsMjAxMiwyMDEzLDIwMTQsMjAxNSBJbnN0aXR1dCBOYXRpb25hbFxuICAgKiBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0IGVuIEF1dG9tYXRpcXVlLlxuICAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG50eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2JcblxudHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgJ2IgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogJ2NcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICAnYyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnZFxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAnYSAtPlxuICAnYiAtPlxuICAnYyAtPlxuICAnZCAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnZVxuXG50eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UsICdmLCAnZykgc2V4dGVybmFyeSA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gICdjIC0+XG4gICdkIC0+XG4gICdlIC0+XG4gICdmIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdnXG5cbnR5cGUgJ2EgdW5hcnlfbm9fb3V0cHV0ID1cbiAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgJ2EgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG5cbnR5cGUgKCdhLCAnYikgYmluYXJ5X25vX291dHB1dCA9XG4gIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICdhIC0+XG4gICdiIC0+XG4gIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuXG5tb2R1bGUgdHlwZSBTdG9yYWdlID0gc2lnXG4gIHR5cGUgJ2EgdFxuICB0eXBlIGtleVxuICB0eXBlIGRpbWVuc2lvblxuXG4gIHZhbCBjcmVhdGUgOiAoZGltZW5zaW9uLCAnYSB0KSB1bmFyeVxuICB2YWwgY3JlYXRlX2JpZ2dlc3Rfa2V5IDogKGtleSwgJ2EgdCkgdW5hcnlcbiAgdmFsIGV4cGFuZF9hbmRfY29weSA6ICgnYSB0LCBkaW1lbnNpb24sICdhIHQpIGJpbmFyeVxuICB2YWwgaW5pdCA6IChkaW1lbnNpb24sIChrZXksICdhKSB1bmFyeSwgJ2EgdCkgYmluYXJ5XG4gIHZhbCBzZXQgOiAoa2V5LCAnYSwgJ2EgdCwgJ2EgdCkgdGVybmFyeVxuICB2YWwgZnJlZSA6IChrZXksICdhIHQsICdhIHQpIGJpbmFyeVxuICB2YWwgZ2V0IDogKGtleSwgJ2EgdCwgJ2Egb3B0aW9uKSBiaW5hcnlcbiAgdmFsIHVuc2FmZV9nZXQgOiAoa2V5LCAnYSB0LCAnYSBvcHRpb24pIGJpbmFyeVxuICB2YWwgZGltZW5zaW9uIDogKCdhIHQsIGRpbWVuc2lvbikgdW5hcnlcbiAgdmFsIHByaW50IDogKCdhIHVuYXJ5X25vX291dHB1dCwgJ2EgdCkgYmluYXJ5X25vX291dHB1dFxuICB2YWwga2V5X2xpc3QgOiAoJ2EgdCwga2V5IGxpc3QpIHVuYXJ5XG4gIHZhbCBpdGVyIDogKChrZXksICdhKSBiaW5hcnlfbm9fb3V0cHV0LCAnYSB0KSBiaW5hcnlfbm9fb3V0cHV0XG4gIHZhbCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIDogKChrZXksICdhLCAnYiwgJ2IpIHRlcm5hcnksICdhIHQsICdiLCAnYikgdGVybmFyeVxuICB2YWwgZm9sZCA6ICgoa2V5LCAnYSwgJ2IsICdiKSB0ZXJuYXJ5LCAnYSB0LCAnYiwgJ2IpIHRlcm5hcnlcblxuICB2YWwgZm9sZDIgOlxuICAgICggKGtleSwgJ2EsICdjLCAnYykgdGVybmFyeSxcbiAgICAgIChrZXksICdiLCAnYywgJ2MpIHRlcm5hcnksXG4gICAgICAoa2V5LCAnYSwgJ2IsICdjLCAnYykgcXVhdGVybmFyeSxcbiAgICAgICdhIHQsXG4gICAgICAnYiB0LFxuICAgICAgJ2MsXG4gICAgICAnYyApXG4gICAgc2V4dGVybmFyeVxuXG4gIHZhbCBmb2xkMl9jb21tb24gOlxuICAgICgoa2V5LCAnYSwgJ2IsICdjLCAnYykgcXVhdGVybmFyeSwgJ2EgdCwgJ2IgdCwgJ2MsICdjKSBxdWF0ZXJuYXJ5XG5cbiAgdmFsIGZvcl9hbGwgOiAoKGtleSwgJ2EsIGJvb2wpIGJpbmFyeSwgJ2EgdCwgYm9vbCkgYmluYXJ5XG4gIHZhbCBmcmVlX2FsbCA6ICgnYSB0LCAnYSB0KSB1bmFyeVxuZW5kXG5cbmxldCBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIG1oIHBvcyBleG4gdmFsdWUgPVxuICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIG1oIHBvcyBleG4gdmFsdWVcblxubW9kdWxlIEludF9zdG9yYWdlX2ltcGVyYXRpZiA6XG4gIFN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IGludCBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPSBzdHJ1Y3RcbiAgdHlwZSBrZXkgPSBpbnRcbiAgdHlwZSBkaW1lbnNpb24gPSBpbnRcbiAgdHlwZSAnYSB0ID0geyBhcnJheTogJ2Egb3B0aW9uIGFycmF5OyBzaXplOiBpbnQgfVxuXG4gIGxldCBkaW1lbnNpb24gXyBlcnJvciBhID0gZXJyb3IsIGEuc2l6ZVxuXG4gIGxldCBrZXlfbGlzdCBfcGFyZW1ldGVycyBlcnJvciB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHNvbCA9XG4gICAgICBpZiBrIDwgMCB0aGVuXG4gICAgICAgIGVycm9yLCBzb2xcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrIC0gMSkgc29sXG4gICAgICAgIHwgU29tZSBfIC0+IGF1eCAoayAtIDEpIChrIDo6IHNvbClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBzaXplIFtdXG5cbiAgbGV0IHJlYyBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplID1cbiAgICBpZiBzaXplIDwgMCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciAwIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBhcnJheVxuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIHsgYXJyYXkgPSBBcnJheS5tYWtlIChzaXplICsgMSkgTm9uZTsgc2l6ZSB9XG5cbiAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIHggPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciB4XG5cbiAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IHNpemUgPVxuICAgIGxldCBlcnJvciwgZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICBpZiBkaW1lbnNpb24gPCBzaXplIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheScgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplIGluXG4gICAgICBsZXQgXyA9IEFycmF5LmJsaXQgYXJyYXkuYXJyYXkgMCBhcnJheScuYXJyYXkgMCBkaW1lbnNpb24gaW5cbiAgICAgIGVycm9yLCBhcnJheSdcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCB7IGFycmF5ID0gQXJyYXkuc3ViIGFycmF5LmFycmF5IDAgc2l6ZTsgc2l6ZSB9XG5cbiAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgaWYga2V5ID4gYXJyYXkuc2l6ZSB8fCBrZXkgPCAwIHRoZW4gKFxuICAgICAgbGV0ICgpID0gUHJpbnRmLmZwcmludGYgc3Rkb3V0IFwiJWkgJWlcIiBrZXkgYXJyYXkuc2l6ZSBpblxuICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IF8gPSBhcnJheS5hcnJheS4oa2V5KSA8LSBTb21lIHZhbHVlIGluXG4gICAgICBlcnJvciwgYXJyYXlcbiAgICApXG5cbiAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBzaXplIGYgPVxuICAgIGlmIHNpemUgPCAwIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIDAgaW5cbiAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgKSBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgYXJyYXkgPSBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBzaXplIGluXG4gICAgICBsZXQgcmVjIGF1eCBrIGVycm9yIGFycmF5ID1cbiAgICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICAgIGVycm9yLCBhcnJheVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIHZhbHVlID0gZiBwYXJhbWV0ZXJzIGVycm9yIGsgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFycmF5ID0gc2V0IHBhcmFtZXRlcnMgZXJyb3IgayB2YWx1ZSBhcnJheSBpblxuICAgICAgICAgIGF1eCAoayArIDEpIGVycm9yIGFycmF5XG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggMCBlcnJvciBhcnJheVxuICAgIClcblxuICBsZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgXCIxMzA6JWlcXG5cIiBrZXlcbiAgICAgIGluXG4gICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG4gICAgKSBlbHNlIChcbiAgICAgIG1hdGNoIGFycmF5LmFycmF5LihrZXkpIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCIxMzM6JWlcXG5cIiBrZXlcbiAgICAgICAgaW5cbiAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZVxuICAgICAgfCBhIC0+IGVycm9yLCBhXG4gICAgKVxuXG4gIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIF8gPSBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lIGluXG4gICAgICBlcnJvciwgYXJyYXlcbiAgICApIGVsc2UgKFxuICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGtleSkgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IE5vbmUgaW5cbiAgICAgICAgZXJyb3IsIGFycmF5XG4gICAgICB8IF8gLT5cbiAgICAgICAgbGV0ICgpID0gYXJyYXkuYXJyYXkuKGtleSkgPC0gTm9uZSBpblxuICAgICAgICBlcnJvciwgYXJyYXlcbiAgICApXG5cbiAgbGV0IHVuc2FmZV9nZXQgX3BhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICBpZiBrZXkgPiBhcnJheS5zaXplIHx8IGtleSA8IDAgdGhlblxuICAgICAgZXJyb3IsIE5vbmVcbiAgICBlbHNlXG4gICAgICBlcnJvciwgYXJyYXkuYXJyYXkuKGtleSlcblxuICBsZXQgcHJpbnQgcGFyYW1ldGVycyBlcnJvciBwcmludF9lbHQgYXJyYXkgPVxuICAgIGxldCByZWMgYXV4IGkgZXJyb3IgPVxuICAgICAgaWYgaSA+IGFycmF5LnNpemUgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgbWF0Y2ggYXJyYXkuYXJyYXkuKGkpIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gZXJyb3JcbiAgICAgICAgICB8IFNvbWUgZWx0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgXCIlcyVkOlwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeCBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXJzID1cbiAgICAgICAgICAgICAgUmVtYW5lbnRfcGFyYW1ldGVycy51cGRhdGVfcHJlZml4IHBhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAoc3RyaW5nX29mX2ludCBpIF4gXCI6XCIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yID0gcHJpbnRfZWx0IHBhcmFtZXRlcnMgZXJyb3IgZWx0IGluXG4gICAgICAgICAgICBlcnJvclxuICAgICAgICBpblxuICAgICAgICBhdXggKGkgKyAxKSBlcnJvclxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgaXRlciBwYXJhbWV0ZXIgZXJyb3IgZiB0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIGVycm9yID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgZXJyb3JcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgZXJyb3JcbiAgICAgICAgfCBTb21lIHggLT4gYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeClcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCAwIGVycm9yXG5cbiAgbGV0IGZvbGQgcGFyYW1ldGVyIGVycm9yIGYgdCBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IHQuc2l6ZSBpblxuICAgIGxldCBhcnJheSA9IHQuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheS4oaykgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYXV4IChrICsgMSkgcmVtYW5lbnRcbiAgICAgICAgfCBTb21lIHggLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeCBzb2wpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvcl9hbGwgcGFyYW1ldGVyIGVycm9yIGYgdCA9XG4gICAgbGV0IHNpemUgPSB0LnNpemUgaW5cbiAgICBsZXQgYXJyYXkgPSB0LmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBlcnJvciA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIGVycm9yLCB0cnVlXG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggYXJyYXkuKGspIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIGVycm9yXG4gICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBib29sID0gZiBwYXJhbWV0ZXIgZXJyb3IgayB4IGluXG4gICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICBhdXggKGsgKyAxKSBlcnJvclxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGVycm9yLCBmYWxzZVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgZXJyb3JcblxuICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBwYXJhbWV0ZXIgZXJyb3IgZiB0IGluaXQgPVxuICAgIGxldCBzaXplID0gdC5zaXplIGluXG4gICAgbGV0IGFycmF5ID0gdC5hcnJheSBpblxuICAgIGxldCByZWMgYXV4IGsgcmVtYW5lbnQgPVxuICAgICAgaWYgayA+IHNpemUgdGhlblxuICAgICAgICByZW1hbmVudFxuICAgICAgZWxzZSAoXG4gICAgICAgIG1hdGNoIGFycmF5LihrKSB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgc29sID0gcmVtYW5lbnQgaW5cbiAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICB0cnkgU29tZSAoZiBwYXJhbWV0ZXIgZXJyb3IgayB4IHNvbCkgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiByZW1hbmVudFxuICAgICAgICAgIHwgU29tZSBhIC0+IGF1eCAoayArIDEpIGEpXG4gICAgICApXG4gICAgaW5cbiAgICBhdXggMCAoZXJyb3IsIGluaXQpXG5cbiAgbGV0IGZvbGQyX2NvbW1vbiBwYXJhbWV0ZXIgZXJyb3IgZiB0MSB0MiBpbml0ID1cbiAgICBsZXQgc2l6ZSA9IG1pbiB0MS5zaXplIHQyLnNpemUgaW5cbiAgICBsZXQgYXJyYXkxID0gdDEuYXJyYXkgaW5cbiAgICBsZXQgYXJyYXkyID0gdDIuYXJyYXkgaW5cbiAgICBsZXQgcmVjIGF1eCBrIHJlbWFuZW50ID1cbiAgICAgIGlmIGsgPiBzaXplIHRoZW5cbiAgICAgICAgcmVtYW5lbnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBtYXRjaCBhcnJheTEuKGspLCBhcnJheTIuKGspIHdpdGhcbiAgICAgICAgfCBOb25lLCBfIHwgXywgTm9uZSAtPiBhdXggKGsgKyAxKSByZW1hbmVudFxuICAgICAgICB8IFNvbWUgeDEsIFNvbWUgeDIgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHNvbCA9IHJlbWFuZW50IGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKGYgcGFyYW1ldGVyIGVycm9yIGsgeDEgeDIgc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgKGVycm9yLCBpbml0KVxuXG4gIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggdDEgdDIgaW5pdCA9XG4gICAgbGV0IHNpemUgPSBtaW4gdDEuc2l6ZSB0Mi5zaXplIGluXG4gICAgbGV0IGFycmF5MSA9IHQxLmFycmF5IGluXG4gICAgbGV0IGFycmF5MiA9IHQyLmFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayByZW1hbmVudCA9XG4gICAgICBpZiBrID4gc2l6ZSB0aGVuXG4gICAgICAgIHJlbWFuZW50XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBzb2wgPSByZW1hbmVudCBpblxuICAgICAgICBtYXRjaCBhcnJheTEuKGspLCBhcnJheTIuKGspIHdpdGhcbiAgICAgICAgfCBTb21lIHgxLCBOb25lIC0+IGF1eCAoayArIDEpIChmIHBhcmFtZXRlciBlcnJvciBrIHgxIHNvbClcbiAgICAgICAgfCBOb25lLCBTb21lIHgyIC0+IGF1eCAoayArIDEpIChnIHBhcmFtZXRlciBlcnJvciBrIHgyIHNvbClcbiAgICAgICAgfCBTb21lIHgxLCBTb21lIHgyIC0+IGF1eCAoayArIDEpIChoIHBhcmFtZXRlciBlcnJvciBrIHgxIHgyIHNvbClcbiAgICAgICAgfCBOb25lLCBOb25lIC0+IGF1eCAoayArIDEpIChlcnJvciwgc29sKVxuICAgICAgKVxuICAgIGluXG4gICAgYXV4IDAgKGVycm9yLCBpbml0KVxuXG4gIGxldCBmcmVlX2FsbCBwYXJhbWV0ZXIgZXJyb3IgdCA9XG4gICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGEgXyB0IC0+IGZyZWUgcGFyYW1ldGVyIGVycm9yIGEgdClcbiAgICAgIHQgdFxuZW5kXG5cbm1vZHVsZSBOZWFybHlfaW5maW5pdGVfYXJyYXlzID1cbmZ1bmN0b3JcbiAgKEJhc2ljIDogU3RvcmFnZSB3aXRoIHR5cGUgZGltZW5zaW9uID0gaW50IGFuZCB0eXBlIGtleSA9IGludClcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gQmFzaWMua2V5XG4gICAgICB0eXBlICdhIHQgPSAnYSBCYXNpYy50XG5cbiAgICAgIGxldCBjcmVhdGUgPSBCYXNpYy5jcmVhdGVcbiAgICAgIGxldCBjcmVhdGVfYmlnZ2VzdF9rZXkgPSBCYXNpYy5jcmVhdGVfYmlnZ2VzdF9rZXlcbiAgICAgIGxldCBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIGxldCBrZXlfbGlzdCA9IEJhc2ljLmtleV9saXN0XG5cbiAgICAgIGxldCBleHBhbmQgcGFyYW1ldGVycyBlcnJvciBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkX2RpbWVuc2lvbiA9IGRpbWVuc2lvbiBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGluXG4gICAgICAgIGlmIG9sZF9kaW1lbnNpb24gPSBTeXMubWF4X2FycmF5X2xlbmd0aCB0aGVuXG4gICAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEJhc2ljLmV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5XG4gICAgICAgICAgICAobWF4IDEgKG1pbiBTeXMubWF4X2FycmF5X2xlbmd0aCAoMiAqIG9sZF9kaW1lbnNpb24pKSlcblxuICAgICAgbGV0IGdldCA9IEJhc2ljLmdldFxuICAgICAgbGV0IHVuc2FmZV9nZXQgPSBCYXNpYy51bnNhZmVfZ2V0XG4gICAgICBsZXQgZXhwYW5kX2FuZF9jb3B5ID0gQmFzaWMuZXhwYW5kX2FuZF9jb3B5XG4gICAgICBsZXQgaW5pdCA9IEJhc2ljLmluaXRcbiAgICAgIGxldCBmcmVlID0gQmFzaWMuZnJlZVxuXG4gICAgICBsZXQgcmVjIHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgZGltZW5zaW9uID0gZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYXJyYXkgaW5cbiAgICAgICAgaWYga2V5ID49IGRpbWVuc2lvbiB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGFycmF5JyA9IGV4cGFuZCBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGluXG4gICAgICAgICAgaWYgYXJyYXkgPT0gYXJyYXknIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGFycmF5XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIGFycmF5J1xuICAgICAgICApIGVsc2VcbiAgICAgICAgICBCYXNpYy5zZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgdmFsdWUgYXJyYXlcblxuICAgICAgbGV0IHByaW50ID0gQmFzaWMucHJpbnRcblxuICAgICAgKCogbGV0IHByaW50X3Zhcl9mID0gQmFzaWMucHJpbnRfdmFyX2ZcbiAgICAgICAgIGxldCBwcmludF9zaXRlX2YgPSBCYXNpYy5wcmludF9zaXRlX2YqKVxuICAgICAgbGV0IGl0ZXIgPSBCYXNpYy5pdGVyXG4gICAgICBsZXQgZm9sZCA9IEJhc2ljLmZvbGRcbiAgICAgIGxldCBmb2xkMiA9IEJhc2ljLmZvbGQyXG4gICAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiA9IEJhc2ljLmZvbGRfd2l0aF9pbnRlcnJ1cHRpb25cbiAgICAgIGxldCBmb2xkMl9jb21tb24gPSBCYXNpYy5mb2xkMl9jb21tb25cbiAgICAgIGxldCBmb3JfYWxsID0gQmFzaWMuZm9yX2FsbFxuICAgICAgbGV0IGZyZWVfYWxsID0gQmFzaWMuZnJlZV9hbGxcbiAgICBlbmQgOlxuICAgICAgU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIGRpbWVuc2lvbiA9IGludClcblxubW9kdWxlIEV4dGVuZCA9XG5mdW5jdG9yXG4gIChFeHRlbnNpb24gOiBTdG9yYWdlKVxuICAoVW5kZXJseWluZyA6IFN0b3JhZ2UpXG4gIC0+XG4gIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gRXh0ZW5zaW9uLmRpbWVuc2lvbiAqIFVuZGVybHlpbmcuZGltZW5zaW9uXG4gICAgICB0eXBlIGtleSA9IEV4dGVuc2lvbi5rZXkgKiBVbmRlcmx5aW5nLmtleVxuICAgICAgdHlwZSAnYSB0ID0geyBtYXRyaXg6ICdhIFVuZGVybHlpbmcudCBFeHRlbnNpb24udDsgZGltZW5zaW9uOiBkaW1lbnNpb24gfVxuXG4gICAgICBsZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgZGltZW5zaW9uID1cbiAgICAgICAgbGV0IGVycm9yLCBtYXRyaXggPSBFeHRlbnNpb24uY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBkaW1lbnNpb24pIGluXG4gICAgICAgIGVycm9yLCB7IG1hdHJpeDsgZGltZW5zaW9uIH1cblxuICAgICAgbGV0IGNyZWF0ZV9iaWdnZXN0X2tleSBwYXJhbWV0ZXJzIGVycm9yIGtleSA9XG4gICAgICAgIGxldCBlcnJvciwgbWF0cml4ID1cbiAgICAgICAgICBFeHRlbnNpb24uY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBrZXkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbWF0cml4JyA9XG4gICAgICAgICAgVW5kZXJseWluZy5jcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciAoc25kIGtleSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBkaW1lbnNpb24gPSBFeHRlbnNpb24uZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgbWF0cml4IGluXG4gICAgICAgIGxldCBlcnJvciwgZGltZW5zaW9uJyA9IFVuZGVybHlpbmcuZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgbWF0cml4JyBpblxuICAgICAgICBlcnJvciwgeyBtYXRyaXg7IGRpbWVuc2lvbiA9IGRpbWVuc2lvbiwgZGltZW5zaW9uJyB9XG5cbiAgICAgIGxldCBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIHQgPVxuICAgICAgICBsZXQgZXJyb3IsIGV4dF9saXN0ID0gRXh0ZW5zaW9uLmtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgdC5tYXRyaXggaW5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgbGlzdCkga2V5IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIHQyID0gRXh0ZW5zaW9uLmdldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB0Lm1hdHJpeCBpblxuICAgICAgICAgICAgbWF0Y2ggdDIgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGxpc3RcbiAgICAgICAgICAgIHwgU29tZSB0MiAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGwyID0gVW5kZXJseWluZy5rZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIHQyIGluXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCBrZXkyIC0+IChrZXksIGtleTIpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICBsaXN0IChMaXN0LnJldiBsMikgKSlcbiAgICAgICAgICAoZXJyb3IsIFtdKSAoTGlzdC5yZXYgZXh0X2xpc3QpXG5cbiAgICAgIGxldCBleHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheSBfZGltZW5zaW9uID1cbiAgICAgICAgaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgYXJyYXlcblxuICAgICAgbGV0IGluaXQgcGFyYW1ldGVycyBlcnJvciBkaW0gZiA9XG4gICAgICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgICAgIEV4dGVuc2lvbi5pbml0IHBhcmFtZXRlcnMgZXJyb3IgKGZzdCBkaW0pIChmdW4gcCBlIGkgLT5cbiAgICAgICAgICAgICAgVW5kZXJseWluZy5pbml0IHAgZSAoc25kIGRpbSkgKGZ1biBwJyBlJyBqIC0+IGYgcCcgZScgKGksIGopKSlcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIHsgbWF0cml4ID0gYXJyYXk7IGRpbWVuc2lvbiA9IGRpbSB9XG5cbiAgICAgIGxldCBzZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgdmFsdWUgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIG9sZF91bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgb2xkX3VuZGVybHlpbmcgPVxuICAgICAgICAgIG1hdGNoIG9sZF91bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgICB8IFNvbWUgb2xkX3VuZGVybHlpbmcgLT4gZXJyb3IsIG9sZF91bmRlcmx5aW5nXG4gICAgICAgICAgfCBOb25lIC0+IFVuZGVybHlpbmcuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgKHNuZCBhcnJheS5kaW1lbnNpb24pXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbmV3X3VuZGVybHlpbmcgPVxuICAgICAgICAgIFVuZGVybHlpbmcuc2V0IHBhcmFtZXRlcnMgZXJyb3IgaiB2YWx1ZSBvbGRfdW5kZXJseWluZ1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG5ld19tYXRyaXggPVxuICAgICAgICAgIEV4dGVuc2lvbi5zZXQgcGFyYW1ldGVycyBlcnJvciBpIG5ld191bmRlcmx5aW5nIGFycmF5Lm1hdHJpeFxuICAgICAgICBpblxuICAgICAgICAoKiBsZXQgb3JkZXJlZCA9IG9yZGVyZWQgJiYgRXh0ZW5zaW9uLm9yZGVyZWQgbmV3X21hdHJpeCBpbiopXG4gICAgICAgIGVycm9yLCB7IGFycmF5IHdpdGggbWF0cml4ID0gbmV3X21hdHJpeCB9XG5cbiAgICAgIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciAoaSwgaikgYXJyYXkgPVxuICAgICAgICBsZXQgZXJyb3IsIHVuZGVybHlpbmcgPSBFeHRlbnNpb24uZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBhcnJheS5tYXRyaXggaW5cbiAgICAgICAgbWF0Y2ggdW5kZXJseWluZyB3aXRoXG4gICAgICAgIHwgU29tZSB1bmRlcmx5aW5nIC0+IFVuZGVybHlpbmcuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaiB1bmRlcmx5aW5nXG4gICAgICAgIHwgTm9uZSAtPiBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCBOb25lXG5cbiAgICAgIGxldCB1bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3IgKGksIGopIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCB1bmRlcmx5aW5nID1cbiAgICAgICAgICBFeHRlbnNpb24udW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGkgYXJyYXkubWF0cml4XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIHVuZGVybHlpbmcgd2l0aFxuICAgICAgICB8IFNvbWUgdW5kZXJseWluZyAtPiBVbmRlcmx5aW5nLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBqIHVuZGVybHlpbmdcbiAgICAgICAgfCBfIC0+IGVycm9yLCBOb25lXG5cbiAgICAgIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3IgKGksIGopIGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBvbGRfdW5kZXJseWluZyA9XG4gICAgICAgICAgRXh0ZW5zaW9uLnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIGFycmF5Lm1hdHJpeFxuICAgICAgICBpblxuXG4gICAgICAgIG1hdGNoIG9sZF91bmRlcmx5aW5nIHdpdGhcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBfID0gaW52YWxpZF9hcmcgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fIEV4aXQgTm9uZSBpblxuICAgICAgICAgIGVycm9yLCBhcnJheVxuICAgICAgICB8IFNvbWUgb2xkX3VuZGVybHlpbmcgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIG5ld191bmRlcmx5aW5nID1cbiAgICAgICAgICAgIFVuZGVybHlpbmcuZnJlZSBwYXJhbWV0ZXJzIGVycm9yIGogb2xkX3VuZGVybHlpbmdcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbmV3X21hdHJpeCA9XG4gICAgICAgICAgICBFeHRlbnNpb24uc2V0IHBhcmFtZXRlcnMgZXJyb3IgaSBuZXdfdW5kZXJseWluZyBhcnJheS5tYXRyaXhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB7IGFycmF5IHdpdGggbWF0cml4ID0gbmV3X21hdHJpeCB9XG5cbiAgICAgIGxldCBkaW1lbnNpb24gXyBlcnJvciBhID0gZXJyb3IsIGEuZGltZW5zaW9uXG5cbiAgICAgIGxldCBwcmludCBwYXJhbWV0ZXJzIGVycm9yIHByaW50X29mIGEgPVxuICAgICAgICBFeHRlbnNpb24ucHJpbnQgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcCBlcnJvciAtPiBVbmRlcmx5aW5nLnByaW50IHAgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgKCogbGV0IHByaW50X3Zhcl9mIGVycm9yIHByaW50X29mIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBFeHRlbnNpb24ucHJpbnQgZXJyb3JcbiAgICAgICAgICAgKGZ1biBlcnJvciAtPiBVbmRlcmx5aW5nLnByaW50IGVycm9yIHByaW50X29mKVxuICAgICAgICAgICBwYXJhbWV0ZXJzXG4gICAgICAgICAgIGEubWF0cml4XG5cbiAgICAgICAgIGxldCBwcmludF9zaXRlX2YgZXJyb3IgcHJpbnRfb2YgcGFyYW1ldGVycyBhID1cbiAgICAgICAgIEV4dGVuc2lvbi5wcmludCBlcnJvclxuICAgICAgICAgICAoZnVuIGVycm9yIC0+IFVuZGVybHlpbmcucHJpbnQgZXJyb3IgcHJpbnRfb2YpXG4gICAgICAgICAgIHBhcmFtZXRlcnNcbiAgICAgICAgICAgYS5tYXRyaXgqKVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXIgZXJyb3IgZiBhID1cbiAgICAgICAgRXh0ZW5zaW9uLml0ZXIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgayBhIC0+XG4gICAgICAgICAgICBVbmRlcmx5aW5nLml0ZXIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIC0+IGYgcGFyYW1ldGVyIGVycm9yIChrLCBrJykgYScpXG4gICAgICAgICAgICAgIGEpXG4gICAgICAgICAgYS5tYXRyaXhcblxuICAgICAgbGV0IGZvcl9hbGwgcGFyYW1ldGVyIGVycm9yIGYgYSA9XG4gICAgICAgIEV4dGVuc2lvbi5mb3JfYWxsIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYSAtPlxuICAgICAgICAgICAgVW5kZXJseWluZy5mb3JfYWxsIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrJyBhJyAtPiBmIHBhcmFtZXRlciBlcnJvciAoaywgaycpIGEnKVxuICAgICAgICAgICAgICBhKVxuICAgICAgICAgIGEubWF0cml4XG5cbiAgICAgIGxldCBmb2xkX2dlbiBmb2xkMSBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgPVxuICAgICAgICBmb2xkMSBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYiAtPlxuICAgICAgICAgICAgZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsnIGEnIGIgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgKGssIGsnKSBhJyBiKVxuICAgICAgICAgICAgICBhIGIpXG4gICAgICAgICAgYS5tYXRyaXggYlxuXG4gICAgICBsZXQgZm9sZCBwYXJhbWV0ZXIgZXJyb3IgZiBhIGIgPVxuICAgICAgICBmb2xkX2dlbiBFeHRlbnNpb24uZm9sZCBVbmRlcmx5aW5nLmZvbGQgcGFyYW1ldGVyIGVycm9yIGYgYSBiXG5cbiAgICAgIGxldCBmb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiA9XG4gICAgICAgIGZvbGRfZ2VuIEV4dGVuc2lvbi5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAgICAgVW5kZXJseWluZy5mb2xkX3dpdGhfaW50ZXJydXB0aW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYlxuXG4gICAgICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiBjID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGIgaW5cbiAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGNcbiAgICAgICAgICAgIHwgU29tZSBiIC0+IGYgcGFyYW1ldGVyIGVycm9yIGsgYSBiIGMpXG4gICAgICAgICAgYSBjXG5cbiAgICAgIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggYSBiIGMgPVxuICAgICAgICBsZXQgZXJyb3IsIGMgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGNcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gaCBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICAgIGEgY1xuICAgICAgICBpblxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYiBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBnIHBhcmFtZXRlciBlcnJvciBrIGIgY1xuICAgICAgICAgICAgfCBTb21lIF8gLT4gZXJyb3IsIGMpXG4gICAgICAgICAgYiBjXG5cbiAgICAgIGxldCBmcmVlX2FsbCBwYXJhbWV0ZXIgZXJyb3IgdCA9XG4gICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgICAgIHQgdFxuICAgIGVuZCA6XG4gICAgICBTdG9yYWdlXG4gICAgICAgIHdpdGggdHlwZSBrZXkgPSBFeHRlbnNpb24ua2V5ICogVW5kZXJseWluZy5rZXlcbiAgICAgICAgIGFuZCB0eXBlIGRpbWVuc2lvbiA9IEV4dGVuc2lvbi5kaW1lbnNpb24gKiBVbmRlcmx5aW5nLmRpbWVuc2lvbilcblxubW9kdWxlIFF1aWNrX2tleV9saXN0ID1cbmZ1bmN0b3JcbiAgKEJhc2ljIDogU3RvcmFnZSlcbiAgLT5cbiAgKFxuICAgIHN0cnVjdFxuICAgICAgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb25cbiAgICAgIHR5cGUga2V5ID0gQmFzaWMua2V5XG4gICAgICB0eXBlICdhIHQgPSB7IGJhc2ljOiAnYSBCYXNpYy50OyBrZXlzOiBrZXkgbGlzdCB9XG5cbiAgICAgIGxldCBjcmVhdGUgcGFyYW1ldGVycyBlcnJvciBpID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIGkgaW5cbiAgICAgICAgZXJyb3IsIHsgYmFzaWM7IGtleXMgPSBbXSB9XG5cbiAgICAgIGxldCBjcmVhdGVfYmlnZ2VzdF9rZXkgcGFyYW1ldGVycyBlcnJvciBrZXkgPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID0gQmFzaWMuY3JlYXRlX2JpZ2dlc3Rfa2V5IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzID0gW10gfVxuXG4gICAgICBsZXQga2V5X2xpc3QgX3BhcmFtZXRlcnMgZXJyb3IgdCA9IGVycm9yLCB0LmtleXNcblxuICAgICAgbGV0IGV4cGFuZF9hbmRfY29weSBwYXJhbWV0ZXJzIGVycm9yIGFycmF5IGogPVxuICAgICAgICBsZXQgZXJyb3IsIGJhc2ljID1cbiAgICAgICAgICBCYXNpYy5leHBhbmRfYW5kX2NvcHkgcGFyYW1ldGVycyBlcnJvciBhcnJheS5iYXNpYyBqXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzID0gYXJyYXkua2V5cyB9XG5cbiAgICAgIGxldCBpbml0IHBhcmFtZXRlcnMgZXJyb3IgbiBmID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmluaXQgcGFyYW1ldGVycyBlcnJvciBuIGYgaW5cbiAgICAgICAgbGV0IGVycm9yLCBrZXlzID1cbiAgICAgICAgICBCYXNpYy5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgICAgICAgIChmdW4gXyBlIGsgXyBsaXN0IC0+IGUsIGsgOjogbGlzdClcbiAgICAgICAgICAgIGJhc2ljIFtdXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IGJhc2ljOyBrZXlzIH1cblxuICAgICAgbGV0IHNldCBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhcnJheSA9XG4gICAgICAgIGxldCBlcnJvciwgb2xkID0gQmFzaWMudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIGtleSBhcnJheS5iYXNpYyBpblxuICAgICAgICBsZXQgbmV3X2FycmF5ID1cbiAgICAgICAgICBtYXRjaCBvbGQgd2l0aFxuICAgICAgICAgIHwgU29tZSBfIC0+IGFycmF5XG4gICAgICAgICAgfCBOb25lIC0+IHsgYXJyYXkgd2l0aCBrZXlzID0ga2V5IDo6IGFycmF5LmtleXMgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIG5ld19iYXNpYyA9XG4gICAgICAgICAgQmFzaWMuc2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IHZhbHVlIG5ld19hcnJheS5iYXNpY1xuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyBuZXdfYXJyYXkgd2l0aCBiYXNpYyA9IG5ld19iYXNpYyB9XG5cbiAgICAgIGxldCBmcmVlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5ID1cbiAgICAgICAgbGV0IGVycm9yLCBiYXNpYyA9IEJhc2ljLmZyZWUgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWMgaW5cbiAgICAgICAgZXJyb3IsIHsgYXJyYXkgd2l0aCBiYXNpYyB9XG5cbiAgICAgIGxldCBnZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBCYXNpYy5nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkuYmFzaWNcblxuICAgICAgbGV0IHVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBrZXkgYXJyYXkgPVxuICAgICAgICBCYXNpYy51bnNhZmVfZ2V0IHBhcmFtZXRlcnMgZXJyb3Iga2V5IGFycmF5LmJhc2ljXG5cbiAgICAgIGxldCBkaW1lbnNpb24gcGFyYW1ldGVycyBlcnJvciBhID1cbiAgICAgICAgQmFzaWMuZGltZW5zaW9uIHBhcmFtZXRlcnMgZXJyb3IgYS5iYXNpY1xuXG4gICAgICBsZXQgcHJpbnQgZXJyb3IgZiBwYXJhbWV0ZXJzIGEgPSBCYXNpYy5wcmludCBlcnJvciBmIHBhcmFtZXRlcnMgYS5iYXNpY1xuXG4gICAgICAoKiBsZXQgcHJpbnRfdmFyX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEgPVxuICAgICAgICAgQmFzaWMucHJpbnRfdmFyX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEuYmFzaWNcblxuICAgICAgICAgbGV0IHByaW50X3NpdGVfZiBlcnJvciBmIHBhcmFtZXRlcnMgYSA9XG4gICAgICAgICBCYXNpYy5wcmludF9zaXRlX2YgZXJyb3IgZiBwYXJhbWV0ZXJzIGEuYmFzaWMqKVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXJzIGVycm9yIGYgYSA9XG4gICAgICAgIGxldCBlcnJvciwgbGlzdCA9IGtleV9saXN0IHBhcmFtZXRlcnMgZXJyb3IgYSBpblxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gZXJyb3IgayAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggaW0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgXyA9IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgpIGluXG4gICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICB8IFNvbWUgaW0gLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGsgaW0pXG4gICAgICAgICAgZXJyb3IgKExpc3QucmV2IGxpc3QpXG5cbiAgICAgIGxldCBmb2xkIHBhcmFtZXRlcnMgZXJyb3IgZiBhIGIgPVxuICAgICAgICBsZXQgZXJyb3IsIGxpc3QgPSBrZXlfbGlzdCBwYXJhbWV0ZXJzIGVycm9yIGEgaW5cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgYikgayAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBpbSA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggaW0gd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJcbiAgICAgICAgICAgIHwgU29tZSBpbSAtPiBmIHBhcmFtZXRlcnMgZXJyb3IgayBpbSBiKVxuICAgICAgICAgIChlcnJvciwgYikgKExpc3QucmV2IGxpc3QpXG5cbiAgICAgIGxldCBmb3JfYWxsIHBhcmFtZXRlcnMgZXJyb3IgZiBhID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIGxldCByZWMgYXV4IGwgZXJyb3IgPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZXJyb3IsIHRydWVcbiAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgKG1hdGNoIGdldCBwYXJhbWV0ZXJzIGVycm9yIGggYSB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgKCkgPSBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoKSBpblxuICAgICAgICAgICAgICBhdXggdCBlcnJvclxuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBkYXRhIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgYm9vbCA9IGYgcGFyYW1ldGVycyBlcnJvciBoIGRhdGEgaW5cbiAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IHQgZXJyb3JcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBmYWxzZSlcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGxpc3QgZXJyb3JcblxuICAgICAgbGV0IGZyZWVfYWxsIHBhcmFtZXRlciBlcnJvciB0ID1cbiAgICAgICAgbGV0IGVycm9yLCB0ID1cbiAgICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgZXJyb3IgYSBfIHQgLT4gZnJlZSBwYXJhbWV0ZXIgZXJyb3IgYSB0KVxuICAgICAgICAgICAgdCB0XG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCB7IHQgd2l0aCBrZXlzID0gW10gfVxuXG4gICAgICBsZXQgZm9sZF93aXRoX2ludGVycnVwdGlvbiBwYXJhbWV0ZXJzIGVycm9yIGYgYSBiID1cbiAgICAgICAgbGV0IGVycm9yLCBsaXN0ID0ga2V5X2xpc3QgcGFyYW1ldGVycyBlcnJvciBhIGluXG4gICAgICAgIGxldCByZWMgYXV4IGxpc3Qgb3V0cHV0ID1cbiAgICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgICB8IFtdIC0+IG91dHB1dFxuICAgICAgICAgIHwgaGVhZCA6OiB0YWlsIC0+XG4gICAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgaW0gPSBnZXQgcGFyYW1ldGVycyBlcnJvciBoZWFkIGEgaW5cbiAgICAgICAgICAgICAgICBsZXQgYiA9IHNuZCBvdXRwdXQgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBpbSB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFNvbWUgKGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGIpXG4gICAgICAgICAgICAgICAgfCBTb21lIGltIC0+IFNvbWUgKGYgcGFyYW1ldGVycyBlcnJvciBoZWFkIGltIGIpXG4gICAgICAgICAgICAgIHdpdGggU3lzLkJyZWFrIC0+IE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gb3V0cHV0XG4gICAgICAgICAgICB8IFNvbWUgb3V0cHV0IC0+IGF1eCB0YWlsIG91dHB1dClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IGxpc3QgKGVycm9yLCBiKVxuXG4gICAgICBsZXQgZm9sZDJfY29tbW9uIHBhcmFtZXRlciBlcnJvciBmIGEgYiBjID1cbiAgICAgICAgZm9sZCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBnZXQgPSB1bnNhZmVfZ2V0IHBhcmFtZXRlciBlcnJvciBrIGIgaW5cbiAgICAgICAgICAgIG1hdGNoIGdldCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGNcbiAgICAgICAgICAgIHwgU29tZSBiIC0+IGYgcGFyYW1ldGVyIGVycm9yIGsgYSBiIGMpXG4gICAgICAgICAgYSBjXG5cbiAgICAgIGxldCBmb2xkMiBwYXJhbWV0ZXIgZXJyb3IgZiBnIGggYSBiIGMgPVxuICAgICAgICBsZXQgZXJyb3IsIGMgPVxuICAgICAgICAgIGZvbGQgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBlcnJvciBrIGEgYyAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYiBpblxuICAgICAgICAgICAgICBtYXRjaCBnZXQgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gZiBwYXJhbWV0ZXIgZXJyb3IgayBhIGNcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gaCBwYXJhbWV0ZXIgZXJyb3IgayBhIGIgYylcbiAgICAgICAgICAgIGEgY1xuICAgICAgICBpblxuICAgICAgICBmb2xkIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGVycm9yIGsgYiBjIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGdldCA9IHVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGsgYSBpblxuICAgICAgICAgICAgbWF0Y2ggZ2V0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBnIHBhcmFtZXRlciBlcnJvciBrIGIgY1xuICAgICAgICAgICAgfCBTb21lIF8gLT4gZXJyb3IsIGMpXG4gICAgICAgICAgYiBjXG4gICAgZW5kIDpcbiAgICAgIFN0b3JhZ2Ugd2l0aCB0eXBlIGtleSA9IEJhc2ljLmtleSBhbmQgdHlwZSBkaW1lbnNpb24gPSBCYXNpYy5kaW1lbnNpb24pXG5cbm1vZHVsZSBOZWFybHlfaW5mX0ltcGVyYXRpZiA9IE5lYXJseV9pbmZpbml0ZV9hcnJheXMgKEludF9zdG9yYWdlX2ltcGVyYXRpZilcbm1vZHVsZSBRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZiA9IFF1aWNrX2tleV9saXN0IChOZWFybHlfaW5mX0ltcGVyYXRpZilcblxubW9kdWxlIEludF9JbnRfc3RvcmFnZV9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kIChJbnRfc3RvcmFnZV9pbXBlcmF0aWYpIChJbnRfc3RvcmFnZV9pbXBlcmF0aWYpXG5cbm1vZHVsZSBOZWFybHlfSW5mX0ludF9JbnRfc3RvcmFnZV9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kIChRdWlja19OZWFybHlfaW5mX0ltcGVyYXRpZikgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKVxuXG5tb2R1bGUgTmVhcmx5X0luZl9JbnRfSW50X0ludF9zdG9yYWdlX0ltcGVyYXRpZl9JbXBlcmF0aWZfSW1wZXJhdGlmID1cbiAgRXh0ZW5kXG4gICAgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKVxuICAgIChFeHRlbmQgKFF1aWNrX05lYXJseV9pbmZfSW1wZXJhdGlmKSAoUXVpY2tfTmVhcmx5X2luZl9JbXBlcmF0aWYpKVxuIiwiKCoqXG4gICAgKiB1bmlvbl9maW5kLm1sXG4gICAgKiBvcGVua2FwcGFcbiAgICAqIErDqXLDtG1lIEZlcmV0ICYgTHkgS2ltIFF1eWVuLCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAyMDE1LCB0aGUgMTF0aCBvZiBNYXJjaFxuICAgICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDxBcHIgMTggMjAxOD5cbiAgICAqICpcbiAgICAqIFRoaXMgbGlicmFyeSBwcm92aWRlcyBwcmltaXRpdmVzIHRvIGRlYWwgd2l0aCB1bmlvbiBmaW5kIGFsZ29yaXRobSB3aXRoXG4gICAgKiBwYXRoIGNvbXByZXNzaW9uXG4gICAgKlxuICAgICogQ29weXJpZ2h0IDIwMTAsMjAxMSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgVW5pb25fZmluZCA9IHNpZ1xuICB0eXBlIGtleVxuICB0eXBlIGRpbWVuc2lvblxuICB0eXBlIHRcblxuICB2YWwgY3JlYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgZGltZW5zaW9uIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCB1bmlvbl9saXN0IDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdCAtPlxuICAgIGtleSBsaXN0IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogdFxuXG4gIHZhbCBpdGVyaSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAga2V5IC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgZ2V0X3JlcHJlc2VudGVudCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgIHQgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiB0ICoga2V5XG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoU3RvcmFnZSA6IEludF9zdG9yYWdlLlN0b3JhZ2UpXG4gIC0+XG4gICgqICAgIGZ1bmN0b3IgKE1hcDogTWFwX3dyYXBwZXIuTWFwX3dpdGhfbG9ncykgLT4qKVxuICAgIChcbiAgICBzdHJ1Y3RcbiAgICAgIHR5cGUga2V5ID0gU3RvcmFnZS5rZXlcbiAgICAgIHR5cGUgdCA9IGtleSBTdG9yYWdlLnRcbiAgICAgIHR5cGUgZGltZW5zaW9uID0gU3RvcmFnZS5kaW1lbnNpb25cblxuICAgICAgbGV0IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG4gPVxuICAgICAgICBTdG9yYWdlLmluaXQgcGFyYW1ldGVycyBlcnJvciBuIChmdW4gXyBlIHggLT4gZSwgeClcblxuICAgICAgKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbiAgICAgICgqIGZpbmRTZXQoZSk6IHdoaWNoIHJldHVybiBhIHBvaW50ZXIgdG8gdGhlIHJlcHJlc2VudGF0aXZlIG9mIHRoZSBzZXRcbiAgICAgICAgIGNvbnRhaW5pbmcgZS4gU2luY2UgdGhlIHNldCBhcmUgZGlzam9pbnQsIGUgY29udGFpbnRlZCBpbiBvbmUgc2V0XG4gICAgICAgICBvbmx5LiBUaGVyZWZvcmUsIHRoZSByZXR1cm5lZCByZXByZXNlbnRhdGl2ZSBjYW4gYmUgdW5pcXVlbHkgZGV0ZXJtaW5lZC5cbiAgICAgICopXG5cbiAgICAgIGxldCBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciBlIHQgPVxuICAgICAgICBsZXQgcG9pbnRUb1Jvb3QgcGFyYW1ldGVyIGVycm9yIHJvb3QgbCB0ID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIHQpIGkgLT4gU3RvcmFnZS5zZXQgcGFyYW1ldGVyIGVycm9yIGkgcm9vdCB0KVxuICAgICAgICAgICAgKGVycm9yLCB0KSBsXG4gICAgICAgIGluXG4gICAgICAgIGxldCByZWMgaGVscGVyIHBhcmFtZXRlciBlcnJvciBlIGwgdCA9XG4gICAgICAgICAgbGV0IGVycm9yLCBwYXJlbnQgPSBTdG9yYWdlLnVuc2FmZV9nZXQgcGFyYW1ldGVyIGVycm9yIGUgdCBpblxuICAgICAgICAgIG1hdGNoIHBhcmVudCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yLCAodCwgZSlcbiAgICAgICAgICB8IFNvbWUgcCB3aGVuIHAgPD4gZSAtPiBoZWxwZXIgcGFyYW1ldGVyIGVycm9yIHAgKGUgOjogbCkgdFxuICAgICAgICAgIHwgU29tZSBwIC0+XG4gICAgICAgICAgICAoKiBiYXNlIGNhc2U6IHdlIGhpdCB0aGUgcm9vdCBub2RlIG1ha2UgYWxsIGNvbGxlY3RlZCBub2RlcyBvbiB0aGVcbiAgICAgICAgICAgICAgIHBhdGggcG9pbnQgdG8gdGhlIHJvb3QuIEFuZCByZXR1cm4gdGhlIHJvb3QgYWZ0ZXJ3YXJkcyAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCB0ID0gcG9pbnRUb1Jvb3QgcGFyYW1ldGVyIGVycm9yIHAgbCB0IGluXG4gICAgICAgICAgICBlcnJvciwgKHQsIHApXG4gICAgICAgIGluXG4gICAgICAgIGhlbHBlciBwYXJhbWV0ZXIgZXJyb3IgZSBbXSB0XG5cbiAgICAgIGxldCBnZXRfcmVwcmVzZW50ZW50IHBhcmFtZXRlcnMgZXJyb3IgZSB0ID1cbiAgICAgICAgbGV0IGVycm9yLCAodW5pb24sIGVsdCkgPSBmaW5kU2V0IHBhcmFtZXRlcnMgZXJyb3IgZSB0IGluXG4gICAgICAgIGVycm9yLCB1bmlvbiwgZWx0XG4gICAgICAoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuICAgICAgKCpVTklPTiopXG5cbiAgICAgIGxldCB1bmlvbiBwYXJhbWV0ZXIgZXJyb3IgeCB5IHQgPVxuICAgICAgICBsZXQgZXJyb3IsICh0LCByb290X3gpID0gZmluZFNldCBwYXJhbWV0ZXIgZXJyb3IgeCB0IGluXG4gICAgICAgIGxldCBlcnJvciwgKHQsIHJvb3RfeSkgPSBmaW5kU2V0IHBhcmFtZXRlciBlcnJvciB5IHQgaW5cbiAgICAgICAgU3RvcmFnZS5zZXQgcGFyYW1ldGVyIGVycm9yIHJvb3RfeCByb290X3kgdFxuXG4gICAgICAoKmxldCBlcV9jbGFzc2VzX21hcCBwYXJhbWV0ZXIgZXJyb3IgYSA9XG4gICAgICAgICgqICBsZXQgY2xhc3NlcyA9IENja2FwcGFfc2lnLlNpdGVfbWFwX2FuZF9zZXQuTWFwLmVtcHR5IGluKilcbiAgICAgICAgPT09PT09PVxuICAgICAgICBsZXQgdW5pb24geCB5IGEgPVxuICAgICAgICBsZXQgcm9vdF94ID0gZmluZFNldCB4IGEgaW5cbiAgICAgICAgbGV0IHJvb3RfeSA9IGZpbmRTZXQgeSBhIGluXG4gICAgICAgIGxldCBfID0gYS4ocm9vdF94KSA8LSByb290X3kgaW5cbiAgICAgICAgKCpsZXQgXyA9IHByaW50X3N0cmluZyBcImR1bXA6IFwiOyBkdW1wIGE7IHByaW50X3N0cmluZyBcIlxcblwiIGluKilcbiAgICAgICAgYVxuXG4gICAgICAgIGxldCBlcV9jbGFzc2VzX21hcCBwYXJhbWV0ZXIgZXJyb3IgYSA9XG4gICAgICAgIGxldCBjbGFzc2VzID0gQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5lbXB0eSBpblxuICAgICAgICA+Pj4+Pj4+IHJlbW92ZSBkb3VibGljYXRlIG1vZHVsZSwgdG9kbzogaGlkZGVuIHR5cGUgc2l0ZV9uYW1lXG4gICAgICAgIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIGEgaW5cbiAgICAgICAgbGV0IHJlYyBhdXggayAoY2xhc3Nlcyx1bmlvbl9saXN0KSA9XG4gICAgICAgICAgaWYgIGsgPCAwXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgY2xhc3NlcywgdW5pb25fbGlzdFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICgqZmluZCB0aGUgcGFyZW50IG9mIHRoZSB1bmlvbiopXG4gICAgICAgICAgICBsZXQgcmVwID0gZmluZFNldCBrIGEgaW5cbiAgICAgICAgICAgICgqY2hlY2sgaWYgaW5zaWRlIGNsYXNzZXMgaGFzIGFscmVhZHkgaGFzIHRoaXMgcGFyZW50KilcbiAgICAgICAgPDw8PDw8PCBIRUFEXG4gICAgICAgICAgICBsZXQgZXJyb3InLGdldF9yZXAgPVxuICAgICAgICAoKiAgICAgICAgQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuZmluZF9kZWZhdWx0IHBhcmFtZXRlciBlcnJvciBbXSByZXAgY2xhc3NlcyBpbiopXG4gICAgICAgICAgICBsZXQgZXJyb3IgPSBFeGNlcHRpb24uY2hlY2sgd2FybiBwYXJhbWV0ZXIgZXJyb3IgZXJyb3InIChTb21lIFwibGluZSA3M1wiKSBFeGl0IGluXG4gICAgICAgICAgICAoKnN0b3JlIHRoZSByZXN1bHQgaW5zaWRlIGNsYXNzZXMqKVxuICAgICAgICAoKiAgICAgIGxldCBlcnJvcixjbGFzc2VzID1cbiAgICAgICAgQ2NrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuYWRkX29yX292ZXJ3cml0ZVxuICAgICAgICA9PT09PT09XG4gICAgICAgICAgICBsZXQgZXJyb3InLCBnZXRfcmVwID1cbiAgICAgICAgICAgICAgQ2thcHBhX3NpZy5TaXRlX21hcF9hbmRfc2V0Lk1hcC5maW5kX2RlZmF1bHRcbiAgICAgICAgICAgICAgICBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgcmVwXG4gICAgICAgICAgICAgICAgY2xhc3Nlc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciA9IEV4Y2VwdGlvbi5jaGVjayB3YXJuIHBhcmFtZXRlciBlcnJvciBlcnJvcicgKFNvbWUgXCJsaW5lIDczXCIpIEV4aXQgaW5cbiAgICAgICAgICAgICgqc3RvcmUgdGhlIHJlc3VsdCBpbnNpZGUgY2xhc3NlcyopXG4gICAgICAgICAgICBsZXQgZXJyb3IsY2xhc3NlcyA9XG4gICAgICAgIENrYXBwYV9zaWcuU2l0ZV9tYXBfYW5kX3NldC5NYXAuYWRkX29yX292ZXJ3cml0ZVxuICAgICAgICA+Pj4+Pj4+IHJlbW92ZSBkb3VibGljYXRlIG1vZHVsZSwgdG9kbzogaGlkZGVuIHR5cGUgc2l0ZV9uYW1lXG4gICAgICAgIHBhcmFtZXRlclxuICAgICAgICBlcnJvclxuICAgICAgICAgICAgICAgIHJlcFxuICAgICAgICAoayA6OiBnZXRfcmVwKVxuICAgICAgICBjbGFzc2VzXG4gICAgICAgICAgICBpbiopXG4gICAgICAgICAgICBhdXggKGsgLSAxKSAoY2xhc3NlcywgdW5pb25fbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNsYXNzZXMsIGEgPSBhdXggKHNpemUgLSAxKSAoY2xhc3NlcywgYSkgaW5cbiAgICAgICAgY2xhc3NlcywgYSopXG5cbiAgICAgICgqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4gICAgICAoKiBjb21wdXRlIHVuaW9uLWZpbmQgaW4gYSBsaXN0KilcblxuICAgICAgbGV0IHVuaW9uX2xpc3QgcGFyYW1ldGVyIGVycm9yIGEgKGxpc3QgOiBrZXkgbGlzdCkgPVxuICAgICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgICAgfCBbXSAtPiBlcnJvciwgYVxuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCByZWMgYXV4IHBhcmFtZXRlciB0b192aXNpdCBlcnJvciBhID1cbiAgICAgICAgICAgIG1hdGNoIHRvX3Zpc2l0IHdpdGhcbiAgICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGFcbiAgICAgICAgICAgIHwgdCcgOjogcScgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCB1bmlvbl9hcnJheSA9IHVuaW9uIHBhcmFtZXRlciBlcnJvciB0IHQnIGEgaW5cbiAgICAgICAgICAgICAgYXV4IHBhcmFtZXRlciBxJyBlcnJvciB1bmlvbl9hcnJheVxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IHBhcmFtZXRlciBxIGVycm9yIGFcblxuICAgICAgbGV0IGl0ZXJpID0gU3RvcmFnZS5pdGVyXG4gICAgZW5kIDpcbiAgICAgIFVuaW9uX2ZpbmRcbiAgICAgICAgd2l0aCB0eXBlIGtleSA9IFN0b3JhZ2Uua2V5XG4gICAgICAgICBhbmQgdHlwZSB0ID0gU3RvcmFnZS5rZXkgU3RvcmFnZS50XG4gICAgICAgICBhbmQgdHlwZSBkaW1lbnNpb24gPSBTdG9yYWdlLmRpbWVuc2lvbilcbiIsImxldCBmc3Rfb3B0aW9uIHggPVxuICBtYXRjaCB4IHdpdGhcbiAgfCBTb21lICh4LCBfKSAtPiBTb21lIHhcbiAgfCBfIC0+IE5vbmVcblxubGV0IHNuZF9vcHRpb24geCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IFNvbWUgKF8sIHgpIC0+IFNvbWUgeFxuICB8IF8gLT4gTm9uZVxuXG4oKiBPQ2FtbCBtYW51YWw6IEluIHBhcnRpY3VsYXIsIGlmIHlvdSB3YW50IGEgcmVndWxhciBleHByZXNzaW9uIHRoYXRcbiAgIG1hdGNoZXMgYSBzaW5nbGUgYmFja3NsYXNoIGNoYXJhY3RlciwgeW91IG5lZWQgdG8gcXVvdGUgaXQgaW4gdGhlXG4gICBhcmd1bWVudCB0byByZWdleHAgKGFjY29yZGluZyB0byB0aGUgbGFzdCBpdGVtIG9mIHRoZSBsaXN0IGFib3ZlKSBieVxuICAgYWRkaW5nIGEgc2Vjb25kIGJhY2tzbGFzaC4gVGhlbiB5b3UgbmVlZCB0byBxdW90ZSBib3RoIGJhY2tzbGFzaGVzXG4gICAoYWNjb3JkaW5nIHRvIHRoZSBzeW50YXggb2Ygc3RyaW5nIGNvbnN0YW50cyBpbiBPQ2FtbCkgYnkgZG91YmxpbmdcbiAgIHRoZW0gYWdhaW4sIHNvIHlvdSBuZWVkIHRvIHdyaXRlIGZvdXIgYmFja3NsYXNoIGNoYXJhY3RlcnM6IFN0ci5yZWdleHBcbiAgIFwiXFxcXFxcXFxcIi4gKilcblxuKCoqIGRvdCBvdXRwdXQqKVxubGV0IGVzY2FwZV9sYWJlbF9pbl9kb3QgcyA9XG4gIFN0ci5nbG9iYWxfc3Vic3RpdHV0ZSAoU3RyLnJlZ2V4cCBcIltcXFxcXFxcIlxcXFxcXFxcXVwiKVxuICAgIChmdW4geCAtPlxuICAgICAgbWF0Y2ggU3RyLm1hdGNoZWRfc3RyaW5nIHggd2l0aFxuICAgICAgfCBcIlxcXCJcIiAtPiBcIlxcXFxcXFwiXCJcbiAgICAgIHwgXCJcXFxcXCIgLT4gXCJcXFxcXFxcXFwiXG4gICAgICB8IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgIHNcblxubGV0IG1ha2VfaWRfY29tcGF0aWJsZV93aXRoX2RvdF9mb3JtYXQgcGFyYW1ldGVycyBlcnJvciBzdHJpbmcgPVxuICBsZXQgdGFiID1cbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9tYWtlX2xhYmVsc19jb21wYXRpYmxlX3dpdGhfZG90IHBhcmFtZXRlcnNcbiAgaW5cbiAgbGV0IHJlYyBhdXggcG9zIGwgPVxuICAgIGlmIHBvcyA8IDAgdGhlblxuICAgICAgbFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNoYXIgPSBTdHJpbmcuZ2V0IHN0cmluZyBwb3MgaW5cbiAgICAgIG1hdGNoIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLkNoYXJNYXAuZmluZF9vcHRpb24gY2hhciB0YWIgd2l0aFxuICAgICAgfCBTb21lIGxpc3RlX2NoYXIgLT5cbiAgICAgICAgYXV4IChwb3MgLSAxKVxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBjaGFyIC0+IGNoYXIgOjogbGlzdClcbiAgICAgICAgICAgICBsIChMaXN0LnJldiBsaXN0ZV9jaGFyKSlcbiAgICAgIHwgTm9uZSAtPiBhdXggKHBvcyAtIDEpIChjaGFyIDo6IGwpXG4gICAgKVxuICBpblxuICBsZXQgbCA9IGF1eCAoU3RyaW5nLmxlbmd0aCBzdHJpbmcgLSAxKSBbXSBpblxuICBlcnJvciwgU3RyaW5nLmNvbmNhdCBcIlwiIChMaXN0LnJldl9tYXAgKFN0cmluZy5tYWtlIDEpIChMaXN0LnJldiBsKSlcblxubGV0IHNvcnRlZF9wYXJ0c19vZl9saXN0IG4gbGlzdCA9XG4gIGxldCBsaXN0ID0gTGlzdC5zb3J0IChmdW4gYSBiIC0+IGNvbXBhcmUgYiBhKSBsaXN0IGluXG4gIGxldCByZWMgYXV4IGsgbGlzdCBzdWZmaXggb3V0cHV0ID1cbiAgICBpZiBrID0gMCB0aGVuXG4gICAgICBzdWZmaXggOjogb3V0cHV0XG4gICAgZWxzZSAoXG4gICAgICBtYXRjaCBsaXN0IHdpdGhcbiAgICAgIHwgaCA6OiB0IC0+IGF1eCBrIHQgc3VmZml4IChhdXggKGsgLSAxKSB0IChoIDo6IHN1ZmZpeCkgb3V0cHV0KVxuICAgICAgfCBbXSAtPiBvdXRwdXRcbiAgICApXG4gIGluXG4gIGF1eCBuIGxpc3QgW10gW11cblxubGV0IHNvcnRfbGlzdCBrZXkgcGFyYW1ldGVyIGVycm9yIGxpc3QgPVxuICBsZXQgZXJyb3IsIHJlZmluZWRfbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCByZWZpbmVkX2xpc3QpIGEgLT5cbiAgICAgICAgbGV0IGVycm9yLCBrZXkgPSBrZXkgcGFyYW1ldGVyIGVycm9yIGEgaW5cbiAgICAgICAgZXJyb3IsIChrZXksIGEpIDo6IHJlZmluZWRfbGlzdClcbiAgICAgIChlcnJvciwgW10pIGxpc3RcbiAgaW5cbiAgbGV0IHJlZmluZWRfc29ydGVkX2xpc3QgPVxuICAgIExpc3Quc29ydCAoZnVuIChhLCBfKSAoYiwgXykgLT4gY29tcGFyZSBiIGEpIHJlZmluZWRfbGlzdFxuICBpblxuICBlcnJvciwgTGlzdC5yZXZfbWFwIHNuZCByZWZpbmVkX3NvcnRlZF9saXN0XG4iLCIoKipcbiAgKiBtaXNjX3NhLm1sXG4gICogb3BlbmthcHBhXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICpcbiAgKiBDcmVhdGlvbjogMTYvMTIvMjAxMFxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDAyIDIwMTY+XG4gICogKlxuICAqIFZhcmlvdXMgZnVuY3Rpb25zXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBjb25zdF91bml0IF8gPSAoKVxuXG5sZXQgYXJyYXlfb2ZfbGlzdCBjcmVhdGUgc2V0IHBhcmFtZXRlcnMgZXJyb3IgbGlzdCA9XG4gIGxldCBuID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICBsZXQgYSA9IGNyZWF0ZSBwYXJhbWV0ZXJzIGVycm9yIG4gaW5cbiAgbGV0IHJlYyBhdXggbCBrIGEgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgW10gLT4gYVxuICAgIHwgdCA6OiBxIC0+IGF1eCBxIChrICsgMSkgKHNldCBwYXJhbWV0ZXJzIChmc3QgYSkgayB0IChzbmQgYSkpXG4gIGluXG4gIGF1eCBsaXN0IDAgYVxuXG5sZXQgdW5zb21lIChlcnJvciwgeCkgZiA9XG4gIG1hdGNoIHggd2l0aFxuICB8IE5vbmUgLT4gZiBlcnJvclxuICB8IFNvbWUgeCAtPiBlcnJvciwgeFxuXG5sZXQgcmV2X2ludGVyX2xpc3QgY29tcGFyZSBsMSBsMiA9XG4gIGxldCByZWMgYXV4IGwxIGwyIHJlcCA9XG4gICAgbWF0Y2ggbDEsIGwyIHdpdGhcbiAgICB8IFtdLCBfIHwgXywgW10gLT4gTGlzdC5yZXYgcmVwXG4gICAgfCBhIDo6IGIsIGMgOjogZCAtPlxuICAgICAgaWYgY29tcGFyZSBhIGMgPSAwIHRoZW5cbiAgICAgICAgYXV4IGIgZCAoYSA6OiByZXApXG4gICAgICBlbHNlIGlmIGNvbXBhcmUgYSBjIDwgMCB0aGVuXG4gICAgICAgIGF1eCBiIGwyIHJlcFxuICAgICAgZWxzZVxuICAgICAgICBhdXggbDEgZCByZXBcbiAgaW5cbiAgYXV4IGwxIGwyIFtdXG5cbmxldCB0cmFjZSBwYXJhbWV0ZXJzIHN0cmluZyA9XG4gIGlmXG4gICAgcGFyYW1ldGVycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAgIC5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy50cmFjZVxuICB0aGVuXG4gICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICBcIiVzJXNcIlxuICAgICAgcGFyYW1ldGVycy5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5tYXJzaGFsaXNhYmxlX3BhcmFtZXRlcnNcbiAgICAgICAgLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnByZWZpeCAoc3RyaW5nICgpKVxuXG5sZXQgaW50ZXJfbGlzdCBjb21wYXJlIGwxIGwyID0gTGlzdC5yZXYgKHJldl9pbnRlcl9saXN0IGNvbXBhcmUgbDEgbDIpXG5cbmxldCBsaXN0XzBfbiBrID1cbiAgbGV0IHJlYyBhdXggayBzb2wgPVxuICAgIGlmIGsgPCAwIHRoZW5cbiAgICAgIHNvbFxuICAgIGVsc2VcbiAgICAgIGF1eCAoayAtIDEpIChrIDo6IHNvbClcbiAgaW5cbiAgYXV4IGsgW11cblxubGV0IGxpc3RfbWludXMgbDEgbDIgPVxuICBsZXQgcmVjIGF1eCBsMSBsMiByZXAgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCB0MSA6OiBxMSwgdDIgOjogcTIgd2hlbiB0MSA9IHQyIC0+IGF1eCBxMSBxMiByZXBcbiAgICB8IHQxIDo6IHExLCBfIC0+IGF1eCBxMSBsMiAodDEgOjogcmVwKVxuICAgIHwgW10sIF8gLT4gcmVwXG4gIGluXG4gIExpc3QucmV2IChhdXggbDEgbDIgW10pXG5cbmxldCBwcmludF9jb21tYSBwYXJhbWV0ZXIgYm9vbCBjb21tYSA9XG4gIGlmIGJvb2wgdGhlblxuICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCIlc1wiIGNvbW1hXG5cbmxldCBmZXRjaF9hcnJheSBpIGFycmF5IGRlZiA9XG4gIHRyeVxuICAgIG1hdGNoIGFycmF5LihpKSB3aXRoXG4gICAgfCBOb25lIC0+IGRlZlxuICAgIHwgU29tZSBpIC0+IGlcbiAgd2l0aCBfIC0+IGRlZlxuIiwiKCoqXG4gICAgKiBoYXNoLm1sXG4gICAgKiBvcGVua2FwcGFcbiAgICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAgICpcbiAgICAqIENyZWF0aW9uOiAxOC8xMC8yMDEwXG4gICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPEp1bCAwNCAyMDE3PlxuICAgICogKlxuICAgICogVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIHNpZ25hdHVyZSBmb3IgaGFzaCB0YWJsZXMgYW5kIHNldmVyYWwgaW1wbGVtZW50YXRpb25zXG4gICAgKiAqXG4gICAgKiBDb3B5cmlnaHQgMjAxMCBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBIYXNoID0gc2lnXG4gIHR5cGUga2V5XG4gIHR5cGUgJ2EgaGFzaFxuXG4gIHZhbCBjcmVhdGUgOiBpbnQgLT4gJ2EgaGFzaFxuXG4gIHZhbCBhZGQgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSAtPlxuICAgIGludCAtPlxuICAgICdhIGhhc2ggLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAnYSBoYXNoXG5cbiAgdmFsIG92ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgYWRkX29yX292ZXJ3cml0ZSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIGtleSAtPlxuICAgICdhIC0+XG4gICAgaW50IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICdhIGhhc2hcblxuICB2YWwgZmluZF9vcHRpb24gOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBrZXkgLT5cbiAgICAnYSBoYXNoIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogKGludCAqICdhKSBvcHRpb25cblxuICB2YWwgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgJ2EgaGFzaCAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChpbnQgKiAnYSkgb3B0aW9uXG5cbiAgdmFsIGZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5IDoga2V5IC0+ICdhIGhhc2ggLT4gKGludCAqICdhKSBvcHRpb25cbiAgdmFsIGl0ZXIgOiAoa2V5IC0+ICdhIC0+IGludCAtPiB1bml0KSAtPiAnYSBoYXNoIC0+IHVuaXRcbiAgdmFsIGZvbGQgOiAoa2V5IC0+ICdiIC0+IGludCAtPiAnYSAtPiAnYSkgLT4gJ2IgaGFzaCAtPiAnYSAtPiAnYVxuZW5kXG5cbm1vZHVsZSBIYXNoID1cbmZ1bmN0b3JcbiAgKE1hcCA6IE1hcF93cmFwcGVyLlNfd2l0aF9sb2dzKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGtleSA9IE1hcC5lbHRcbiAgICAgIHR5cGUgJ2EgaGFzaCA9IChpbnQgKiAnYSkgTWFwLk1hcC50XG5cbiAgICAgIGxldCBjcmVhdGUgXyA9IE1hcC5NYXAuZW1wdHlcblxuICAgICAgbGV0IGFkZCBwYXJhbWV0ZXIgZXJyb3Iga2V5IGFzc28gaW50ID1cbiAgICAgICAgTWFwLk1hcC5hZGQgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgZXJyb3Iga2V5IChpbnQsIGFzc28pXG5cbiAgICAgIGxldCBhZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlciBlcnJvciBrZXkgYXNzbyBpbnQgPVxuICAgICAgICBNYXAuTWFwLmFkZF9vcl9vdmVyd3JpdGUgcGFyYW1ldGVyIGVycm9yIGtleSAoaW50LCBhc3NvKVxuXG4gICAgICBsZXQgZmluZF9vcHRpb24gcGFyYW1ldGVyIGVycm9yIGEgYiA9XG4gICAgICAgIGxldCBlcnJvcicsIG91dHB1dCA9IE1hcC5NYXAuZmluZF9vcHRpb24gcGFyYW1ldGVyIGVycm9yIGEgYiBpblxuICAgICAgICBpZiBlcnJvciA9PSBlcnJvcicgdGhlblxuICAgICAgICAgIGVycm9yJywgb3V0cHV0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXIgZXJyb3InIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiYXR0ZW1wdCB0byByZWFkIGFuIHVuZXhpc3RpbmcgYXNzb2NpYXRpb25cIiBOb3RfZm91bmRcbiAgICAgICAgICAgIG91dHB1dFxuXG4gICAgICBsZXQgZmluZF9vcHRpb25fd2l0aG91dF9sb2dzID0gTWFwLk1hcC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcblxuICAgICAgbGV0IGZpbmRfb3B0aW9uX2xvZ19vbl90aGVfZmx5IGEgYiA9XG4gICAgICAgIExpZnRfZXJyb3JfbG9ncy5saWZ0X3dpdGhfb25fdGhlX2ZseV9sb2dnaW5nX2JpbmFyeSBmaW5kX29wdGlvbiBhIGJcblxuICAgICAgbGV0IGl0ZXIgZiA9IE1hcC5NYXAuaXRlciAoZnVuIChhIDoga2V5KSAoYiwgYykgLT4gZiBhIGMgYilcbiAgICAgIGxldCBmb2xkIGYgPSBNYXAuTWFwLmZvbGQgKGZ1biBhIChiLCBjKSBkIC0+IGYgYSBjIGIgZClcbiAgICBlbmQgOlxuICAgICAgSGFzaCB3aXRoIHR5cGUga2V5ID0gTWFwLmVsdClcblxubW9kdWxlIEhhc2hfb2ZfT3JkID1cbmZ1bmN0b3IgKE8gOiBTZXRNYXAuT3JkZXJlZFR5cGUpIC0+IEhhc2ggKE1hcF93cmFwcGVyLk1ha2UgKFNldE1hcC5NYWtlIChPKSkpXG4iLCJsZXQgbG9jYWxfdHJhY2UgPSBmYWxzZVxuXG50eXBlIG5vZGUgPSBpbnRcblxubGV0IG5vZGVfb2ZfaW50IHggPSB4XG5sZXQgaW50X29mX25vZGUgKHggOiBub2RlKSA6IGludCA9IHhcblxubW9kdWxlIE5vZGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IG5vZGVcblxuICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgbGV0IHByaW50ID0gRm9ybWF0LnBwX3ByaW50X2ludFxuZW5kKVxuXG5tb2R1bGUgTm9kZU1hcCA9IE5vZGVTZXRNYXAuTWFwXG5cbm1vZHVsZSBGaXhlZF9zaXplX2FycmF5IDpcbiAgSW50X3N0b3JhZ2UuU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gbm9kZSBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPVxuICBJbnRfc3RvcmFnZS5RdWlja19rZXlfbGlzdCAoSW50X3N0b3JhZ2UuSW50X3N0b3JhZ2VfaW1wZXJhdGlmKVxuXG5tb2R1bGUgTm9kZWFycmF5IDpcbiAgSW50X3N0b3JhZ2UuU3RvcmFnZSB3aXRoIHR5cGUga2V5ID0gbm9kZSBhbmQgdHlwZSBkaW1lbnNpb24gPSBpbnQgPVxuICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZlxuXG50eXBlICgnbm9kZV9sYWJlbHMsICdlZGdlX2xhYmVscykgZ3JhcGggPSB7XG4gIG5vZGVfbGFiZWxzOiAnbm9kZV9sYWJlbHMgRml4ZWRfc2l6ZV9hcnJheS50O1xuICBlZGdlczogKG5vZGUgKiAnZWRnZV9sYWJlbHMpIGxpc3QgRml4ZWRfc2l6ZV9hcnJheS50O1xufVxuXG5sZXQgY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3Igbm9kZV9vZl9ub2RlX2xhYmVsIG5vZGVfbGlzdCBlZGdlX2xpc3QgPVxuICBsZXQgbWF4X25vZGUgPVxuICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbSBpIC0+IG1heCBtIChpbnRfb2Zfbm9kZSBpKSkgMCBub2RlX2xpc3RcbiAgaW5cbiAgbGV0IGVycm9yLCBub2RlcyA9IEZpeGVkX3NpemVfYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgbWF4X25vZGUgaW5cbiAgbGV0IGVycm9yLCBub2RlcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBub2RlcykgaSAtPlxuICAgICAgICBGaXhlZF9zaXplX2FycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGkgOiBub2RlKVxuICAgICAgICAgIChub2RlX29mX25vZGVfbGFiZWwgaSkgbm9kZXMpXG4gICAgICAoZXJyb3IsIG5vZGVzKSAoTGlzdC5yZXYgbm9kZV9saXN0KVxuICBpblxuICBsZXQgZXJyb3IsIGVkZ2VzID0gRml4ZWRfc2l6ZV9hcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciBtYXhfbm9kZSBpblxuICBsZXQgYWRkX2VkZ2UgcGFyYW1ldGVycyBlcnJvciAobjEsIGxhYmVsLCBuMikgZWRnZXMgPVxuICAgIGxldCBlcnJvciwgb2xkID1cbiAgICAgIG1hdGNoIEZpeGVkX3NpemVfYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIG4xIGVkZ2VzIHdpdGhcbiAgICAgIHwgZXJyb3IsIE5vbmUgLT4gZXJyb3IsIFtdXG4gICAgICB8IGVycm9yLCBTb21lIGEgLT4gZXJyb3IsIGFcbiAgICBpblxuICAgIEZpeGVkX3NpemVfYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgbjEgKChuMiwgbGFiZWwpIDo6IG9sZCkgZWRnZXNcbiAgaW5cbiAgbGV0IGVycm9yLCBlZGdlcyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBlZGdlcykgZWRnZSAtPiBhZGRfZWRnZSBwYXJhbWV0ZXJzIGVycm9yIGVkZ2UgZWRnZXMpXG4gICAgICAoZXJyb3IsIGVkZ2VzKSBlZGdlX2xpc3RcbiAgaW5cbiAgZXJyb3IsIHsgbm9kZV9sYWJlbHMgPSBub2RlczsgZWRnZXMgfVxuXG5sZXQgZ2V0IHBhcmFtZXRlcnMgZXJyb3IgaSB0ID1cbiAgbWF0Y2ggTm9kZWFycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgd2l0aFxuICB8IGVycm9yLCBTb21lIGkgLT4gZXJyb3IsIGlcbiAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgLTFcblxubGV0IGdldF9iIHBhcmFtZXRlcnMgZXJyb3IgaSB0ID1cbiAgbWF0Y2ggTm9kZWFycmF5LnVuc2FmZV9nZXQgcGFyYW1ldGVycyBlcnJvciBpIHQgd2l0aFxuICB8IGVycm9yLCBTb21lIGkgLT4gZXJyb3IsIGlcbiAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgZmFsc2VcblxubGV0IGNvbXB1dGVfc2NjID9sb3cgP3ByZSA/b25fc3RhY2sgcGFyYW1ldGVycyBlcnJvciBuX3RvX3N0cmluZyBncmFwaCA9XG4gIGxldCBlcnJvciA9XG4gICAgaWYgbG9jYWxfdHJhY2UgfHwgUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfdHJhY2UgcGFyYW1ldGVycyB0aGVuIChcbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICBcIkNPTVBVVEUgQlJJREdFOiBcXG4gR3JhcGg6IFxcbiBOb2RlczogXFxuXCJcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5Lml0ZXIgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBpIGogLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVpICVzO1xcblwiIGkgKG5fdG9fc3RyaW5nIGopXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBGaXhlZF9zaXplX2FycmF5Lml0ZXIgcGFyYW1ldGVycyBlcnJvclxuICAgICAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBpIGwgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICBcIiVpOlwiIGlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gZXJyb3IgKGosIF8pIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICAgICAgICAgICAgXCIlaSxcIiBqXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgICAgICAgZXJyb3IgbFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgICAgZ3JhcGguZWRnZXNcbiAgICAgIGluXG4gICAgICBlcnJvclxuICAgICkgZWxzZVxuICAgICAgZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb3csIHByZSwgb25fc3RhY2sgPVxuICAgIG1hdGNoIGxvdywgcHJlLCBvbl9zdGFjayB3aXRoXG4gICAgfCBTb21lIGxvdywgU29tZSBwcmUsIFNvbWUgb25fc3RhY2sgLT4gZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFja1xuICAgIHwgTm9uZSwgXywgXyB8IF8sIE5vbmUsIF8gfCBfLCBfLCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIF9tYXhfbm9kZSA9XG4gICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZm9sZCBwYXJhbWV0ZXJzIGVycm9yXG4gICAgICAgICAgKGZ1biBfcGFyYW1ldGVyIGVycm9yIGkgXyBqIC0+IGVycm9yLCBtYXggKGludF9vZl9ub2RlIGkpIGopXG4gICAgICAgICAgZ3JhcGgubm9kZV9sYWJlbHMgMFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgbWF0Y2ggbG93IHdpdGhcbiAgICAgICAgfCBTb21lIGxvdyAtPiBlcnJvciwgbG93XG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgcHJlID1cbiAgICAgICAgbWF0Y2ggcHJlIHdpdGhcbiAgICAgICAgfCBTb21lIHByZSAtPiBlcnJvciwgcHJlXG4gICAgICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgb25fc3RhY2sgPVxuICAgICAgICBtYXRjaCBvbl9zdGFjayB3aXRoXG4gICAgICAgIHwgU29tZSBvbl9zdGFjayAtPiBlcnJvciwgb25fc3RhY2tcbiAgICAgICAgfCBOb25lIC0+IE5vZGVhcnJheS5jcmVhdGUgcGFyYW1ldGVycyBlcnJvciAxXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFja1xuICBpblxuICBsZXQgcmVjIGF1eCBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciB2ID1cbiAgICBsZXQgZXJyb3IsIHByZSA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IGNvdW50ZXIgcHJlIGluXG4gICAgbGV0IGVycm9yLCBsb3cgPSBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBjb3VudGVyIGxvdyBpblxuICAgIGxldCBzdGFjayA9IHYgOjogc3RhY2sgaW5cbiAgICBsZXQgZXJyb3IsIG9uX3N0YWNrID0gTm9kZWFycmF5LnNldCBwYXJhbWV0ZXJzIGVycm9yIHYgdHJ1ZSBvbl9zdGFjayBpblxuICAgIGxldCBjb3VudGVyID0gc3VjYyBjb3VudGVyIGluXG4gICAgbGV0IGVycm9yLCBlZGdlc192ID1cbiAgICAgIG1hdGNoIEZpeGVkX3NpemVfYXJyYXkudW5zYWZlX2dldCBwYXJhbWV0ZXJzIGVycm9yIHYgZ3JhcGguZWRnZXMgd2l0aFxuICAgICAgfCBlcnJvciwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgIHwgZXJyb3IsIFNvbWUgYSAtPiBlcnJvciwgYVxuICAgIGluXG4gICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKSAodywgXykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIHByZV93ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdyBwcmUgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykgPVxuICAgICAgICAgICAgaWYgcHJlX3cgPSAtMSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spID1cbiAgICAgICAgICAgICAgICBhdXggcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgd1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvd192ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBsb3cgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb3dfdyA9IGdldCBwYXJhbWV0ZXJzIGVycm9yIHcgbG93IGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdiAobWluIGxvd192IGxvd193KSBsb3dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgYiA9IGdldF9iIHBhcmFtZXRlcnMgZXJyb3IgdyBvbl9zdGFjayBpblxuICAgICAgICAgICAgICBpZiBiIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgcHJlX3cgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB3IHByZSBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG93ID1cbiAgICAgICAgICAgICAgICAgIE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciB2IChtaW4gbG93X3YgcHJlX3cpIGxvd1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaylcbiAgICAgICAgICAgIClcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgICAoZXJyb3IsIChwcmUsIGxvdywgY291bnRlciwgb25fc3RhY2ssIHNjY19saXN0LCBzdGFjaykpXG4gICAgICAgIGVkZ2VzX3ZcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG93X3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IGxvdyBpblxuICAgIGxldCBlcnJvciwgcHJlX3YgPSBnZXQgcGFyYW1ldGVycyBlcnJvciB2IHByZSBpblxuICAgIGlmIGxvd192ID0gcHJlX3YgdGhlbiAoXG4gICAgICBsZXQgcmVjIGF1eDIgcGFyYW1ldGVycyBlcnJvciBwcmUgbG93IG9uX3N0YWNrIHNjY19saXN0IHN0YWNrIGNvdW50ZXIgY2MgdlxuICAgICAgICAgID1cbiAgICAgICAgbWF0Y2ggc3RhY2sgd2l0aFxuICAgICAgICB8IHcnIDo6IHN0YWNrIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBvbl9zdGFjayA9XG4gICAgICAgICAgICBOb2RlYXJyYXkuc2V0IHBhcmFtZXRlcnMgZXJyb3IgdycgZmFsc2Ugb25fc3RhY2tcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBjYyA9IHcnIDo6IGNjIGluXG4gICAgICAgICAgaWYgdiA9IHcnIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBjYyA6OiBzY2NfbGlzdCwgc3RhY2spXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBjYyB2XG4gICAgICAgIHwgW10gLT4gYXNzZXJ0IGZhbHNlXG4gICAgICBpblxuICAgICAgYXV4MiBwYXJhbWV0ZXJzIGVycm9yIHByZSBsb3cgb25fc3RhY2sgc2NjX2xpc3Qgc3RhY2sgY291bnRlciBbXSB2XG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKVxuICBpblxuICBsZXQgZXJyb3IsIChwcmUsIGxvdywgX2NvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgX3N0YWNrKSA9XG4gICAgRml4ZWRfc2l6ZV9hcnJheS5mb2xkIHBhcmFtZXRlcnMgZXJyb3JcbiAgICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciB2IF8gKHByZSwgbG93LCBjb3VudGVyLCBvbl9zdGFjaywgc2NjX2xpc3QsIHN0YWNrKSAtPlxuICAgICAgICBsZXQgZXJyb3IsIHByZV92ID0gZ2V0IHBhcmFtZXRlcnMgZXJyb3IgdiBwcmUgaW5cbiAgICAgICAgaWYgcHJlX3YgPSAtMSB0aGVuXG4gICAgICAgICAgYXV4IHBhcmFtZXRlcnMgZXJyb3IgcHJlIGxvdyBvbl9zdGFjayBzY2NfbGlzdCBzdGFjayBjb3VudGVyIHZcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGVycm9yLCAocHJlLCBsb3csIGNvdW50ZXIsIG9uX3N0YWNrLCBzY2NfbGlzdCwgc3RhY2spKVxuICAgICAgZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgIChwcmUsIGxvdywgMSwgb25fc3RhY2ssIFtdLCBbXSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBpZiBsb2NhbF90cmFjZSB8fCBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJTQ0NcIlxuICAgICAgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgKGZ1biBsaXN0IC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAoTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgIFwiJWk7XCIpXG4gICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpIFwiXFxuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBzY2NfbGlzdFxuICAgICAgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpXG4gICAgKVxuICBpblxuICBsZXQgZXJyb3IsIHByZSA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIHByZSBpblxuICBsZXQgZXJyb3IsIGxvdyA9IE5vZGVhcnJheS5mcmVlX2FsbCBwYXJhbWV0ZXJzIGVycm9yIGxvdyBpblxuICBsZXQgZXJyb3IsIG9uX3N0YWNrID0gTm9kZWFycmF5LmZyZWVfYWxsIHBhcmFtZXRlcnMgZXJyb3Igb25fc3RhY2sgaW5cbiAgZXJyb3IsIHByZSwgbG93LCBvbl9zdGFjaywgc2NjX2xpc3RcblxubGV0IGRldGVjdF9icmlkZ2VzIHBhcmFtZXRlcnMgZXJyb3IgYWRkIGdyYXBoIHN0cmluZ19vZl9uIHN0cmluZ19vZl9lIHNjY1xuICAgIGJyaWRnZXMgPVxuICBGaXhlZF9zaXplX2FycmF5LmZvbGQgcGFyYW1ldGVycyBlcnJvclxuICAgIChmdW4gcGFyYW1ldGVycyBlcnJvciBuaSBsIGJyaWRnZXMgLT5cbiAgICAgIGxldCBlcnJvciwgc2NjaSA9XG4gICAgICAgIG1hdGNoIE5vZGVhcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaSBzY2Mgd2l0aFxuICAgICAgICB8IGVycm9yLCBTb21lIHNjY2kgLT4gZXJyb3IsIHNjY2lcbiAgICAgICAgfCBlcnJvciwgTm9uZSAtPiBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gRXhpdCAoLTEpXG4gICAgICBpblxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGJyaWRnZXMpIChuaiwgbGFiZWwpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBzY2NqID1cbiAgICAgICAgICAgIG1hdGNoIE5vZGVhcnJheS5nZXQgcGFyYW1ldGVycyBlcnJvciBuaiBzY2Mgd2l0aFxuICAgICAgICAgICAgfCBlcnJvciwgU29tZSBzY2NqIC0+IGVycm9yLCBzY2NqXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+IEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0ICgtMilcbiAgICAgICAgICBpblxuICAgICAgICAgIGlmIHNjY2kgPSBzY2NqIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBicmlkZ2VzXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICBGaXhlZF9zaXplX2FycmF5LmdldCBwYXJhbWV0ZXJzIGVycm9yIG5pIGdyYXBoLm5vZGVfbGFiZWxzXG4gICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJyaWRnZXNcbiAgICAgICAgICAgIHwgZXJyb3IsIFNvbWUgbnN0cmluZ2kgLT5cbiAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgIEZpeGVkX3NpemVfYXJyYXkuZ2V0IHBhcmFtZXRlcnMgZXJyb3IgbmogZ3JhcGgubm9kZV9sYWJlbHNcbiAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBlcnJvciwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIEV4Y2VwdGlvbi53YXJuIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBFeGl0IGJyaWRnZXNcbiAgICAgICAgICAgICAgfCBlcnJvciwgU29tZSBuc3RyaW5naiAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBpZiBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZSBwYXJhbWV0ZXJzIHx8IGxvY2FsX3RyYWNlXG4gICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiJXMgJXMgJXNcIiAoc3RyaW5nX29mX24gbnN0cmluZ2kpIChzdHJpbmdfb2ZfZSBsYWJlbClcbiAgICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfbiBuc3RyaW5nailcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGFkZCAobnN0cmluZ2ksIGxhYmVsLCBuc3RyaW5naikgYnJpZGdlcylcbiAgICAgICAgICApKVxuICAgICAgICAoZXJyb3IsIGJyaWRnZXMpIGwpXG4gICAgZ3JhcGguZWRnZXMgYnJpZGdlc1xuXG5sZXQgYWRkX2JyaWRnZXMgP2xvdyA/cHJlID9vbl9zdGFjayA/c2NjIGFkZCBwYXJhbWV0ZXJzIGVycm9yIHN0cmluZ19vZl9uXG4gICAgc3RyaW5nX29mX2UgZ3JhcGggYnJpZGdlcyA9XG4gIGxldCBlcnJvciwgc2NjID1cbiAgICBtYXRjaCBzY2Mgd2l0aFxuICAgIHwgU29tZSBzY2MgLT4gZXJyb3IsIHNjY1xuICAgIHwgTm9uZSAtPiBOb2RlYXJyYXkuY3JlYXRlIHBhcmFtZXRlcnMgZXJyb3IgMVxuICBpblxuICBsZXQgZXJyb3IsIHByZSwgbG93LCBvbl9zdGFjaywgc2NjX2xpc3QgPVxuICAgIGNvbXB1dGVfc2NjID9sb3cgP3ByZSA/b25fc3RhY2sgcGFyYW1ldGVycyBlcnJvciBzdHJpbmdfb2ZfbiBncmFwaFxuICBpblxuICBsZXQgZXJyb3IsIF8sIHNjYyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gKGVycm9yLCBuLCBzY2MpIGNjIC0+XG4gICAgICAgIGxldCBlcnJvciwgbiwgc2NjID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIG4sIHNjYykgbm9kZSAtPlxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIHNjYyA9IE5vZGVhcnJheS5zZXQgcGFyYW1ldGVycyBlcnJvciBub2RlIG4gc2NjIGluXG4gICAgICAgICAgICAgIGVycm9yLCBuLCBzY2MpXG4gICAgICAgICAgICAoZXJyb3IsIG4sIHNjYykgY2NcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIG4gKyAxLCBzY2MpXG4gICAgICAoZXJyb3IsIDEsIHNjYykgc2NjX2xpc3RcbiAgaW5cbiAgbGV0IGVycm9yLCBicmlkZ2VzID1cbiAgICBkZXRlY3RfYnJpZGdlcyBwYXJhbWV0ZXJzIGVycm9yIGFkZCBncmFwaCBzdHJpbmdfb2ZfbiBzdHJpbmdfb2ZfZSBzY2NcbiAgICAgIGJyaWRnZXNcbiAgaW5cbiAgbGV0IGVycm9yLCBzY2MgPSBOb2RlYXJyYXkuZnJlZV9hbGwgcGFyYW1ldGVycyBlcnJvciBzY2MgaW5cbiAgZXJyb3IsIGxvdywgcHJlLCBvbl9zdGFjaywgc2NjLCBicmlkZ2VzXG4iLCIoKipcbiAqIGRpY3Rpb25hcnkubWxcbiAqIG9wZW5rYXBwYVxuICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKlxuICogQ3JlYXRpb246IDIwMTAsIHRoZSAxOHRoIG9mIE9jdG9iZXJcbiAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8SnVsIDA1IDIwMTc+XG4gKiAqXG4gKiBUaGlzIGxpYnJhcnkgcHJvdmlkZXMgcHJpbWl0aXZlcyB0byBkZWFsIGluZGV4ZWQgc2V0IG9mIHZhbHVlc1xuICogRHVyaW5nIHRoZSBjb25zdHJ1Y3Rpb24gbWVtYmVyc2hpcCwgdHJhbmR1Y3Rpb24sIGFuZCBuZXcga2V5IGNhblxuICogYmUgaGFuZGxlZCBpbiBPKGxvZyBuKVxuICogQWZ0ZXIgdGhlIGNvbnN0cnVjdGlvbiBrZXkgY2FuIGJlIHRyYW5zbGF0ZWQgaW4gTygxKVxuICogKlxuICogQ29weXJpZ2h0IDIwMTAgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgRGljdGlvbmFyeSA9IHNpZ1xuICB0eXBlIGtleVxuICB0eXBlIHZhbHVlXG4gIHR5cGUgKCdhLCAnYikgZGljdGlvbmFyeVxuXG4gIHZhbCBpbml0IDogdW5pdCAtPiAoJ2EsICdiKSBkaWN0aW9uYXJ5XG5cbiAgdmFsIG1lbWJlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIHZhbHVlIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIGJvb2xcblxuICB2YWwgYWxsb2NhdGUgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAoJ2EgLT4gJ2EgLT4ga2V5KSAtPlxuICAgIHZhbHVlIC0+XG4gICAgJ2EgLT5cbiAgICAoa2V5IC0+ICdiKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvblxuXG4gIHZhbCBhbGxvY2F0ZV91bmlxdWVseSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSkgb3B0aW9uXG5cbiAgKCogIHZhbCBhbGxvY2F0ZV9mX2lkOiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT4gKCdhIC0+ICdhIC0+IGludCkgLT4gdmFsdWUgLT4gKGludCAtPiAnYSkgLT4gJ2EgZGljdGlvbmFyeSAtPiBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiAoaW50ICogJ2EgKiAnYSBkaWN0aW9uYXJ5KSBvcHRpb24qKVxuICB2YWwgYWxsb2NhdGVfYm9vbCA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSAtPiAnYSAtPiBrZXkpIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlclxuICAgICogKGJvb2wgKiAoa2V5ICogJ2EgKiAnYiAqICgnYSwgJ2IpIGRpY3Rpb25hcnkpIG9wdGlvbilcblxuICB2YWwgdW5zYWZlX2FsbG9jYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgIChrZXkgLT4gJ2IpIC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIChrZXkgKiAnYSAqICdiICogKCdhLCAnYikgZGljdGlvbmFyeSlcblxuICB2YWwgdHJhbnNsYXRlIDpcbiAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgKCdhLCAnYikgZGljdGlvbmFyeSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqICh2YWx1ZSAqICdhICogJ2IpIG9wdGlvblxuXG4gIHZhbCBzdGFiaWxpemUgOiAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+ICgnYSwgJ2IpIGRpY3Rpb25hcnlcblxuICB2YWwgaXRlciA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAga2V5IC0+XG4gICAgdmFsdWUgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyKSAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXJcblxuICB2YWwgbGFzdF9lbnRyeSA6XG4gICAgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICgnYSwgJ2IpIGRpY3Rpb25hcnkgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBrZXlcblxuICB2YWwgZm9sZCA6XG4gICAgKHZhbHVlIC0+ICdhICogJ2IgLT4ga2V5IC0+ICdjIC0+ICdjKSAtPiAoJ2EsICdiKSBkaWN0aW9uYXJ5IC0+ICdjIC0+ICdjXG5lbmRcblxuZXhjZXB0aW9uXG4gIEFzc29jaWF0aW9uX2lzX2V4aXN0aW5nX3dpdGhfdGhlX3NhbWVfdmFsdWVfaW5fYV9kaWZmZXJlbnRfbG9jYXRpb25fbWVtb3J5XG5cbmV4Y2VwdGlvbiBBc3NvY2lhdGlvbl9pc19ub3RfZGVmaW5lZFxuXG5tb2R1bGUgRGljdGlvbmFyeSA9XG5mdW5jdG9yXG4gIChIYXNoIDogSGFzaC5IYXNoKVxuICAtPlxuICAoXG4gICAgc3RydWN0XG4gICAgICB0eXBlIGtleSA9IGludFxuICAgICAgdHlwZSB2YWx1ZSA9IEhhc2gua2V5XG5cbiAgICAgIHR5cGUgKCdhLCAnYikgaW5fY29uc3RydWN0aW9uID0ge1xuICAgICAgICBoYXNoX3RhYmxlOiAoJ2EgKiAnYikgSGFzaC5oYXNoO1xuICAgICAgICBmcmVzaDogaW50O1xuICAgICAgfVxuXG4gICAgICB0eXBlICgnYSwgJ2IpIHN0YWJpbGl6ZWQgPSAodmFsdWUgKiAnYSAqICdiKSBvcHRpb24gYXJyYXlcblxuICAgICAgdHlwZSAoJ2EsICdiKSBkaWN0aW9uYXJ5ID0ge1xuICAgICAgICBpc19zdGFiaWxpemVkOiBib29sO1xuICAgICAgICBzdGFiaWxpemVkOiAoJ2EsICdiKSBzdGFiaWxpemVkO1xuICAgICAgICBpbl9jb25zdHJ1Y3Rpb246ICgnYSwgJ2IpIGluX2NvbnN0cnVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgbGV0IGludmFsaWQgeCBwYXJhbWV0ZXJzIG1oIF9fUE9TX18gbWVzc2FnZSBleG4gPVxuICAgICAgICBFeGNlcHRpb24ud2FybiBwYXJhbWV0ZXJzIG1oIF9fUE9TX18gfm1lc3NhZ2UgZXhuIHhcblxuICAgICAgbGV0IGludmFsaWRfYXJnID0gaW52YWxpZCBOb25lXG4gICAgICBsZXQgaW52YWxpZF9hcmdfYm9vbCA9IGludmFsaWQgKGZhbHNlLCBOb25lKVxuICAgICAgbGV0IHByZWluaXQgKCkgPSB7IGhhc2hfdGFibGUgPSBIYXNoLmNyZWF0ZSAxOyBmcmVzaCA9IDAgfVxuXG4gICAgICBsZXQgcHJlbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uID1cbiAgICAgICAgbGV0IGVycm9yLCBvdXRwdXQgPVxuICAgICAgICAgIEhhc2guZmluZF9vcHRpb25fd2l0aG91dF9sb2dzXG4gICAgICAgICAgICAoKiBpbmRlZWQsIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byB0ZXN0IHdoZXRoZXIgb3Igbm90IHRoZXJlIGlzIGFuIGFzc29jaWF0aW9uICopXG4gICAgICAgICAgICBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGluX2NvbnN0cnVjdGlvbi5oYXNoX3RhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBvdXRwdXQgIT0gTm9uZVxuXG4gICAgICBsZXQgcHJldHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IHN0YWJpbGl6ZWQgPVxuICAgICAgICBpZiBrZXkgPj0gMCAmJiBrZXkgPCBBcnJheS5sZW5ndGggc3RhYmlsaXplZCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBzdGFiaWxpemVkLihrZXkpIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBlcnJvciwgU29tZSBhXG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICBpbnZhbGlkX2FyZyBwYXJhbWV0ZXJzIGVycm9yIF9fUE9TX18gXCJtaXNzaW5nIGVudHJ5XCJcbiAgICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcbiAgICAgICAgKSBlbHNlIGlmIGtleSA8IDAgdGhlblxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm5lZ2F0aXZlIGtleSBhcmUgbm90IGFsbG93ZWRcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcbiAgICAgICAgZWxzZVxuICAgICAgICAgIGludmFsaWRfYXJnIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfXyBcIm1pc3NpbmcgZW50cnlcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfbm90X2RlZmluZWRcblxuICAgICAgbGV0IHByZXN0YWJpbGl6ZSBpbl9jb25zdHJ1Y3Rpb24gPVxuICAgICAgICBsZXQgYXJyYXkgPSBBcnJheS5tYWtlIGluX2NvbnN0cnVjdGlvbi5mcmVzaCBOb25lIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgSGFzaC5pdGVyXG4gICAgICAgICAgICAoZnVuIGEgKGFzc28sIGFzc28nKSBpIC0+IGFycmF5LihpKSA8LSBTb21lIChhLCBhc3NvLCBhc3NvJykpXG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICBpblxuICAgICAgICBhcnJheVxuXG4gICAgICBsZXQgaW5pdCAoKSA9XG4gICAgICAgIHtcbiAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24gPSBwcmVpbml0ICgpO1xuICAgICAgICAgIHN0YWJpbGl6ZWQgPSBBcnJheS5tYWtlIDAgTm9uZTtcbiAgICAgICAgICBpc19zdGFiaWxpemVkID0gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICBsZXQgbWVtYmVyIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgZGljdGlvbmFyeSA9XG4gICAgICAgIHByZW1lbWJlciBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uXG5cbiAgICAgIGxldCBzdGFiaWxpemUgZGljdGlvbmFyeSA9XG4gICAgICAgIGlmIGRpY3Rpb25hcnkuaXNfc3RhYmlsaXplZCB0aGVuXG4gICAgICAgICAgZGljdGlvbmFyeVxuICAgICAgICBlbHNlXG4gICAgICAgICAge1xuICAgICAgICAgICAgaW5fY29uc3RydWN0aW9uID0gZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb247XG4gICAgICAgICAgICBpc19zdGFiaWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHN0YWJpbGl6ZWQgPSBwcmVzdGFiaWxpemUgZGljdGlvbmFyeS5pbl9jb25zdHJ1Y3Rpb247XG4gICAgICAgICAgfVxuXG4gICAgICBsZXQgdHJhbnNsYXRlIHBhcmFtZXRlcnMgZXJyb3Iga2V5IGRpY3Rpb25hcnkgPVxuICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHN0YWJpbGl6ZSBkaWN0aW9uYXJ5IGluXG4gICAgICAgIHByZXRyYW5zbGF0ZSBwYXJhbWV0ZXJzIGVycm9yIGtleSBkaWN0aW9uYXJ5LnN0YWJpbGl6ZWRcblxuICAgICAgbGV0IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCB1bmlxdWVseSBwYXJhbWV0ZXJzIGVycm9yIGNvbXBhcmVcbiAgICAgICAgICAodmFsdWUgOiB2YWx1ZSkgYXNzbyBidWlsZCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgSGFzaC5maW5kX29wdGlvbl93aXRob3V0X2xvZ3NcbiAgICAgICAgICAgICgqIGluZGVlZCwgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIHRoYXQgZWl0aGVyIHRoZXJlIGlzIG5vIGFzc29jaWF0aW9uLCBvciB0aGF0IHRoaXMgaXMgdGhlIHNhbWUgYXNzb2NpYXRpb24gKilcbiAgICAgICAgICAgIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgaW5fY29uc3RydWN0aW9uLmhhc2hfdGFibGVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IGVycm9yLCBOb25lIC0+XG4gICAgICAgICAgbGV0IGZyZXNoID0gaW5fY29uc3RydWN0aW9uLmZyZXNoIGluXG4gICAgICAgICAgbGV0IGFzc29faWQgPSBidWlsZCBmcmVzaCBpblxuICAgICAgICAgIGxldCBlcnJvciwgaGFzaF90YWJsZSA9XG4gICAgICAgICAgICBIYXNoLmFkZCBwYXJhbWV0ZXJzIGVycm9yIHZhbHVlIChhc3NvLCBhc3NvX2lkKSBmcmVzaFxuICAgICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGhhc2ggPSB7IGhhc2hfdGFibGU7IGZyZXNoID0gZnJlc2ggKyAxIH0gaW5cbiAgICAgICAgICBsZXQgZGljdGlvbmFyeSA9XG4gICAgICAgICAgICBpZiBkaWN0aW9uYXJ5LmlzX3N0YWJpbGl6ZWQgdGhlblxuICAgICAgICAgICAgICB7IGRpY3Rpb25hcnkgd2l0aCBpc19zdGFiaWxpemVkID0gZmFsc2UgfVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBkaWN0aW9uYXJ5XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHsgZGljdGlvbmFyeSB3aXRoIGluX2NvbnN0cnVjdGlvbiA9IGhhc2ggfSBpblxuICAgICAgICAgIGVycm9yLCAodHJ1ZSwgU29tZSAoZnJlc2gsIGFzc28sIGFzc29faWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIChpLCAoYXNzbycsIGFzc28nX2lkKSkgd2hlbiBhc3NvJyA9PSBhc3NvIC0+XG4gICAgICAgICAgZXJyb3IsIChmYWxzZSwgU29tZSAoaSwgYXNzbycsIGFzc28nX2lkLCBkaWN0aW9uYXJ5KSlcbiAgICAgICAgfCBlcnJvciwgU29tZSAoaSwgKGFzc28nLCBhc3NvJ19pZCkpIHdoZW4gY29tcGFyZSBhc3NvIGFzc28nID0gMCAtPlxuICAgICAgICAgIGlmIHVuaXF1ZWx5IHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnX2Jvb2wgcGFyYW1ldGVycyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgIFwid3JvbmcgYXNzb2NpYXRpb24gKHRoZSBpbWFnZSBpcyBub3QgdW5pcXVlbHkgZGVzY3JpYmVkIGluIFxcXG4gICAgICAgICAgICAgICBtZW1vcnkpXCJcbiAgICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgKGZhbHNlLCBTb21lIChpLCBhc3NvJywgYXNzbydfaWQsIGRpY3Rpb25hcnkpKVxuICAgICAgICB8IGVycm9yLCBTb21lIF8gLT5cbiAgICAgICAgICBpbnZhbGlkX2FyZ19ib29sIHBhcmFtZXRlcnMgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgXCJ3cm9uZyBhc3NvY2lhdGlvbiAoc2V2ZXJhbCBpbWFnZXMgZm9yIHRoZSBzYW1lIGtleSlcIlxuICAgICAgICAgICAgQXNzb2NpYXRpb25faXNfZXhpc3Rpbmdfd2l0aF90aGVfc2FtZV92YWx1ZV9pbl9hX2RpZmZlcmVudF9sb2NhdGlvbl9tZW1vcnlcblxuICAgICAgbGV0IGFsbG9jYXRlIGFhIGUgeCB2IGEgZCBmID1cbiAgICAgICAgbGV0IGEsIChfLCBjKSA9IGFsbG9jYXRlX3VuaXF1ZWx5X29yX25vdCBmYWxzZSBhYSBlIHggdiBhIGQgZiBpblxuICAgICAgICBhLCBjXG5cbiAgICAgIGxldCBhbGxvY2F0ZV91bmlxdWVseSBhYSBlIHggdiBhIGQgZiA9XG4gICAgICAgIGxldCBhLCAoXywgYykgPSBhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QgdHJ1ZSBhYSBlIHggdiBhIGQgZiBpblxuICAgICAgICBhLCBjXG5cbiAgICAgIGxldCBhbGxvY2F0ZV9ib29sIGFhIGUgPSBhbGxvY2F0ZV91bmlxdWVseV9vcl9ub3QgZmFsc2UgYWEgZVxuXG4gICAgICBsZXQgdW5zYWZlX2FsbG9jYXRlIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgYXNzbyBidWlsZCBkaWN0aW9uYXJ5ID1cbiAgICAgICAgbGV0IGluX2NvbnN0cnVjdGlvbiA9IGRpY3Rpb25hcnkuaW5fY29uc3RydWN0aW9uIGluXG4gICAgICAgIGxldCBmcmVzaCA9IGluX2NvbnN0cnVjdGlvbi5mcmVzaCBpblxuICAgICAgICBsZXQgYXNzb19pZCA9IGJ1aWxkIGZyZXNoIGluXG4gICAgICAgIGxldCBlcnJvciwgaGFzaF90YWJsZSA9XG4gICAgICAgICAgSGFzaC5hZGRfb3Jfb3ZlcndyaXRlIHBhcmFtZXRlcnMgZXJyb3IgdmFsdWUgKGFzc28sIGFzc29faWQpIGZyZXNoXG4gICAgICAgICAgICBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuICAgICAgICBpblxuICAgICAgICBsZXQgaGFzaCA9IHsgaGFzaF90YWJsZTsgZnJlc2ggPSBmcmVzaCArIDEgfSBpblxuICAgICAgICBsZXQgZGljdGlvbmFyeSA9IHsgZGljdGlvbmFyeSB3aXRoIGluX2NvbnN0cnVjdGlvbiA9IGhhc2ggfSBpblxuICAgICAgICBlcnJvciwgKGZyZXNoLCBhc3NvLCBhc3NvX2lkLCBkaWN0aW9uYXJ5KVxuXG4gICAgICBsZXQgaXRlciBwYXJhbWV0ZXJzIGVycm9yIGYgZGljID1cbiAgICAgICAgbGV0IGRpYycgPSBzdGFiaWxpemUgZGljIGluXG4gICAgICAgIGxldCBnIGtleSBlcnJvciA9IGZ1bmN0aW9uXG4gICAgICAgICAgfCBOb25lIC0+IGVycm9yXG4gICAgICAgICAgfCBTb21lICh2YWx1ZSwgYSwgYikgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhIGJcbiAgICAgICAgaW5cbiAgICAgICAgKCogaWYgZGljLmlzX3N0YWJpbGl6ZWRcbiAgICAgICAgICAgdGhlbiopXG4gICAgICAgIFRvb2xzLmFycmF5X2ZvbGRfbGVmdGkgZyBlcnJvciBkaWMnLnN0YWJpbGl6ZWRcbiAgICAgICgqZWxzZSBIYXNoLmZvbGRcbiAgICAgICAgKGZ1biB2YWx1ZSAoYSxiKSBrZXkgZXJyb3IgLT4gZiBwYXJhbWV0ZXJzIGVycm9yIGtleSB2YWx1ZSBhIGIpXG4gICAgICAgIGRpYy5pbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZSBlcnJvciopXG5cbiAgICAgIGxldCBmb2xkIGYgZGljdGlvbmFyeSA9XG4gICAgICAgIGxldCBpbl9jb25zdHJ1Y3Rpb24gPSBkaWN0aW9uYXJ5LmluX2NvbnN0cnVjdGlvbiBpblxuICAgICAgICBIYXNoLmZvbGQgZiBpbl9jb25zdHJ1Y3Rpb24uaGFzaF90YWJsZVxuXG4gICAgICBsZXQgbGFzdF9lbnRyeSBfcGFyYW1ldGVycyBlcnJvciBkaWMgPVxuICAgICAgICBlcnJvciwgZGljLmluX2NvbnN0cnVjdGlvbi5mcmVzaCAtIDFcbiAgICBlbmQgOlxuICAgICAgRGljdGlvbmFyeSB3aXRoIHR5cGUga2V5ID0gaW50IGFuZCB0eXBlIHZhbHVlID0gSGFzaC5rZXkpXG5cbm1vZHVsZSBEaWN0aW9uYXJ5X29mX09yZCA9XG5mdW5jdG9yIChPIDogU2V0TWFwLk9yZGVyZWRUeXBlKSAtPiBEaWN0aW9uYXJ5IChIYXNoLkhhc2hfb2ZfT3JkIChPKSlcbiIsIigqKlxuICAgKiB0aWNrX3N0b3JpZXMubWxcbiAgICpcbiAgICogUHJvZ3Jlc3MgYmFyIChjb21pbmcgZnJvbSBNb2RzLm1sKVxuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDUvMjAxNlxuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTcvMDUvMjAxNlxuICAgKiAqXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IHRpY2tfc3RvcmllcyBmIGNvbmYgc2F2ZV9wcm9ncmVzc19iYXIgKGluaXQsIGxhc3QsIGNvdW50ZXIsIG5fc3RvcmllcykgPVxuICBsZXQgKCkgPVxuICAgIGlmIG5vdCBpbml0IHRoZW4gKFxuICAgICAgbGV0IGMgPSByZWYgY29uZi5Db25maWd1cmF0aW9uLnByb2dyZXNzU2l6ZSBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGYgaW5cbiAgICAgIHdoaWxlICFjID4gMCBkb1xuICAgICAgICBMb2dnZXJzLmZwcmludGYgZiBcIl9cIjtcbiAgICAgICAgYyA6PSAhYyAtIDFcbiAgICAgIGRvbmU7XG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgZlxuICAgIClcbiAgaW5cbiAgbGV0IG4gPVxuICAgIGlmIG5fc3RvcmllcyA8PSAwICYmIGNvdW50ZXIgPSAwIHRoZW5cbiAgICAgIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemVcbiAgICBlbHNlIGlmIGNvdW50ZXIgPiBuX3N0b3JpZXMgdGhlblxuICAgICAgMFxuICAgIGVsc2UgKFxuICAgICAgbGV0IG5jID0gY291bnRlciAqIGNvbmYuQ29uZmlndXJhdGlvbi5wcm9ncmVzc1NpemUgLyBuX3N0b3JpZXMgaW5cbiAgICAgIGxldCBubCA9IGxhc3QgKiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NTaXplIC8gbl9zdG9yaWVzIGluXG4gICAgICBuYyAtIG5sXG4gICAgKVxuICBpblxuICBsZXQgcmVjIGF1eCBuID1cbiAgICBpZiBuIDw9IDAgdGhlblxuICAgICAgKClcbiAgICBlbHNlIChcbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBmIFwiJWNcIiBjb25mLkNvbmZpZ3VyYXRpb24ucHJvZ3Jlc3NDaGFyIGluXG4gICAgICBhdXggKG4gLSAxKVxuICAgIClcbiAgaW5cbiAgbGV0ICgpID0gYXV4IG4gaW5cbiAgbGV0ICgpID0gTG9nZ2Vycy5mbHVzaF9sb2dnZXIgZiBpblxuICBsZXQgKCkgPSBpZiBjb3VudGVyID0gbl9zdG9yaWVzIHRoZW4gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGYgaW5cbiAgbGV0IGJhciA9IHRydWUsIGNvdW50ZXIsIGNvdW50ZXIgKyAxLCBuX3N0b3JpZXMgaW5cbiAgbGV0ICgpID0gc2F2ZV9wcm9ncmVzc19iYXIgYmFyIGluXG4gIGJhclxuIiwiKCoqXG4gICAqIGdyYXBoX2Nsb3N1cmUubWxcbiAgICpcbiAgICogQWxnb3JpdGhtcyB0byBjb21wdXRlIHRyYW5zaXRpdmUgY2xvc3VyZSBvZiBvYmVydmFibGVzIGluIHRyYWNlc1xuICAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICAqXG4gICAqIEthU2ltXG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBDcmVhdGlvbjogMTcvMDgvMjAxM1xuICAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMTAvMDkvMjAxM1xuICAgKiAqXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIEEgPSBBcnJheVxubW9kdWxlIFMgPSBNb2RzLkludFNldFxubW9kdWxlIE0gPSBNb2RzLkludE1hcFxuXG5sZXQgaWdub3JlX2Zsb3dfZnJvbV9vdXRnb2luZ19zaXBob24gPSB0cnVlXG5sZXQgY2hlY2tfbW9kZSA9IGZhbHNlXG5cbnR5cGUgYWxnb190eXBlID0gVG9wX2Rvd24gfCBCb3R0b21fdXAgfCBDaGVja1xudHlwZSBvcmRlciA9IEluY3JlYXNpbmdfd2l0aF9sYXN0X2V2ZW50IHwgRGVjcmVhc2luZ193aXRob3V0X2xhc3RfZXZlbnRcblxudHlwZSBjb25maWcgPSB7XG4gIGRvX3RpY2s6IGJvb2w7XG4gIGtlZXBfYWxsX25vZGVzOiBib29sO1xuICBjdXRfdHJhbnNpdGl2ZV9wYXRoOiBib29sO1xuICBzdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHM6IGJvb2w7XG4gIG1heF9pbmRleDogaW50O1xuICBhbGdvOiBhbGdvX3R5cGU7XG59XG5cbmxldCBjb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyID1cbiAge1xuICAgIGRvX3RpY2sgPSB0cnVlO1xuICAgIGtlZXBfYWxsX25vZGVzID0gZmFsc2U7XG4gICAgY3V0X3RyYW5zaXRpdmVfcGF0aCA9IHRydWU7XG4gICAgc3RhdF90cmFuc19jbG9zdXJlX2Zvcl9iaWdfZ3JhcGhzID0gdHJ1ZTtcbiAgICBtYXhfaW5kZXggPSAzMDA7XG4gICAgYWxnbyA9IEJvdHRvbV91cCAoKmlmIGNoZWNrX21vZGUgdGhlbiBDaGVjayBlbHNlIFRvcF9kb3duKik7XG4gIH1cblxubGV0IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXIgPVxuICB7IGNvbmZpZ19iaWdfZ3JhcGhfd2l0aF9wcm9ncmVzc19iYXIgd2l0aCBkb190aWNrID0gZmFsc2UgfVxuXG5sZXQgY29uZmlnX3NtYWxsX2dyYXBoID1cbiAge1xuICAgIGRvX3RpY2sgPSBmYWxzZTtcbiAgICBrZWVwX2FsbF9ub2RlcyA9IHRydWU7XG4gICAgY3V0X3RyYW5zaXRpdmVfcGF0aCA9IGZhbHNlO1xuICAgIHN0YXRfdHJhbnNfY2xvc3VyZV9mb3JfYmlnX2dyYXBocyA9IHRydWU7XG4gICAgYWxnbyA9IEJvdHRvbV91cDtcbiAgICBtYXhfaW5kZXggPSAzMDA7XG4gIH1cblxubGV0IHN3YXAgZiBhIGIgPSBmIGIgYVxubGV0IGlnbm9yZV9mc3QgZiBfID0gZlxuXG5sZXQgcmVjIGNvbXBhcmVfc3VjYyBwIGwgPVxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSB8IFsgXyBdIC0+IHRydWVcbiAgfCBhIDo6IHEgLT5cbiAgICAobWF0Y2ggcSB3aXRoXG4gICAgfCBiIDo6IF8gd2hlbiBwIGEgYiAtPiBjb21wYXJlX3N1Y2MgcCBxXG4gICAgfCBfIC0+IGZhbHNlKVxuXG5sZXQgc3RyaWN0bHlfaW5jcmVhc2luZyA9IGNvbXBhcmVfc3VjYyAoZnVuIChhIDogaW50KSBiIC0+IGEgPCBiKVxubGV0IHN0cmljdGx5X2RlY3JlYXNpbmcgPSBjb21wYXJlX3N1Y2MgKGZ1biAoYSA6IGludCkgYiAtPiBhID4gYilcbmxldCBjb25jYXQgYSA9IExpc3QucmV2X2FwcGVuZCAoTGlzdC5yZXYgYSlcblxubGV0IHByaW50X2xpc3QgZiBsID1cbiAgRm9ybWF0LmZwcmludGYgZiBcIkBbJWFAXUAuXCIgKFBwLmxpc3QgUHAuY29tbWEgRm9ybWF0LnBwX3ByaW50X3N0cmluZykgbFxuXG5sZXQgY2hlY2sgZm9ybSBwIGYgc3RyaW5nIGEgYiA9XG4gIG1hdGNoIHAgYSwgcCBiIHdpdGhcbiAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gYSBpblxuICAgIGxldCAoKSA9IHByaW50X2xpc3QgZm9ybSBiIGluXG4gICAgZmFpbHdpdGggKHN0cmluZyBeIFwiX2FyZzFfMlwiKVxuICB8IHRydWUsIGZhbHNlIC0+XG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGIgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMlwiKVxuICB8IGZhbHNlLCB0cnVlIC0+XG4gICAgbGV0ICgpID0gcHJpbnRfbGlzdCBmb3JtIGEgaW5cbiAgICBmYWlsd2l0aCAoc3RyaW5nIF4gXCJfYXJnMVwiKVxuICB8IHRydWUsIHRydWUgLT5cbiAgICBsZXQgcmVwID0gZiBhIGIgaW5cbiAgICBsZXQgKCkgPSBwcmludF9saXN0IGZvcm0gcmVwIGluXG4gICAgaWYgcCByZXAgdGhlblxuICAgICAgcmVwXG4gICAgZWxzZSAoXG4gICAgICBwcmludF9saXN0IGZvcm0gYTtcbiAgICAgIHByaW50X2xpc3QgZm9ybSBiO1xuICAgICAgcHJpbnRfbGlzdCBmb3JtIHJlcDtcbiAgICAgIGZhaWx3aXRoIChzdHJpbmcgXiBcIl9vdXRwdXRcIilcbiAgICApXG5cbmxldCBpc19zdHJpY3Rfc3VibGlzdCBwIGEgYiA9XG4gIGxldCByZWMgYXV4IGEgYiA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBfLCBbXSAtPiBmYWxzZVxuICAgIHwgW10sIF8gOjogXyAtPiB0cnVlXG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IGF1eCB0IHQnXG4gICAgfCBoIDo6IF8sIGgnIDo6IF8gd2hlbiBwIGggaCcgLT4gZmFsc2VcbiAgICB8IF8sIF8gOjogdCcgLT4gYXV4IGEgdCdcbiAgaW5cbiAgYXV4IGEgYlxuXG5sZXQgaW5zZXJ0X2VsdCBwIGUgPSBMaXN0X3V0aWwubWVyZ2VfdW5pcSBwIFsgZSBdXG5cbmxldCBkaWZmX2xpc3QgcCBhIGIgPVxuICBsZXQgcmVjIGF1eCBhIGIgYWNjdSA9XG4gICAgbWF0Y2ggYSwgYiB3aXRoXG4gICAgfCBiLCBbXSAtPiBMaXN0LnJldiAoTGlzdC5yZXZfYXBwZW5kIGIgYWNjdSlcbiAgICB8IFtdLCBfIDo6IF8gLT4gTGlzdC5yZXYgYWNjdVxuICAgIHwgaCA6OiB0LCBoJyA6OiB0JyB3aGVuIGggPSBoJyAtPiBhdXggdCB0JyBhY2N1XG4gICAgfCBoIDo6IHQsIGgnIDo6IF8gd2hlbiBwIGggaCcgLT4gYXV4IHQgYiAoaCA6OiBhY2N1KVxuICAgIHwgXywgXyA6OiB0JyAtPiBhdXggYSB0JyBhY2N1XG4gIGluXG4gIGF1eCBhIGIgW11cblxubGV0IGNvbXBhcmVfYm9vbCBhIGIgPSBjb21wYXJlIGEgYiA8IDBcbmxldCBkaWZmX2xpc3RfZGVjcmVhc2luZyA9IGRpZmZfbGlzdCAoc3dhcCBjb21wYXJlX2Jvb2wpXG5sZXQgbWVyZ2VfbGlzdF9kZWNyZWFzaW5nID0gTGlzdF91dGlsLm1lcmdlX3VuaXEgKGZ1biB4IHkgLT4gU3RkbGliLmNvbXBhcmUgeSB4KVxuXG5sZXQgY2xvc3VyZV9ib3R0b21fdXBfd2l0aF9mb2xkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50IGNvbmZpZ1xuICAgIHByZWMgaXNfb2JzIGYgYSA9XG4gIGxldCBlcnJfbG9nZ2VyID0gUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyIHBhcmFtZXRlciBpblxuICBsZXQgaXNfb2JzID1cbiAgICBpZiBjb25maWcua2VlcF9hbGxfbm9kZXMgdGhlblxuICAgICAgZnVuIF8gLT5cbiAgICB0cnVlXG4gICAgZWxzZVxuICAgICAgaXNfb2JzXG4gIGluXG4gIGxldCBtYXhfaW5kZXggPSBNLmZvbGQgKGZ1biBpIF8gLT4gbWF4IGkpIHByZWMgMCBpblxuICBsZXQgKCkgPVxuICAgIGlmIGNvbmZpZy5zdGF0X3RyYW5zX2Nsb3N1cmVfZm9yX2JpZ19ncmFwaHMgJiYgY29uZmlnLm1heF9pbmRleCA+IDMwMCB0aGVuIChcbiAgICAgIGxldCBuX2VkZ2VzID0gTS5mb2xkIChpZ25vcmVfZnN0IChTLmZvbGQgKGlnbm9yZV9mc3Qgc3VjYykpKSBwcmVjIDAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgZXJyX2xvZ2dlciBcIlxcdFxcdFRyYW5zaXRpdmUgY2xvc3VyZSAoJWkgbm9kZXMsICVpIGVkZ2VzKVwiXG4gICAgICAgICAgbWF4X2luZGV4IG5fZWRnZXNcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZXJyX2xvZ2dlciBpblxuICAgICAgKClcbiAgICApXG4gIGluXG4gIGxldCBkb190aWNrLCB0aWNrLCBjbG9zZV90aWNrID1cbiAgICBpZiBtYXhfaW5kZXggPiAzMDAgJiYgY29uZmlnLmRvX3RpY2sgdGhlbiAoXG4gICAgICBsZXQgdGljayA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgICAgIChmYWxzZSwgMCwgMCwgbWF4X2luZGV4KVxuICAgICAgaW5cbiAgICAgIGxldCBmID1cbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBlcnJfbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgbGV0IGNsb3NlICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGVycl9sb2dnZXIgaW5cbiAgICAgIGYsIHRpY2ssIGNsb3NlXG4gICAgKSBlbHNlXG4gICAgICAoZnVuIHggLT4geCksIChmYWxzZSwgMCwgMCwgMCksIGZ1biAoKSAtPiAoKVxuICBpblxuICBsZXQgc19wcmVkX3N0YXIgPSBBLm1ha2UgKG1heF9pbmRleCArIDEpIFtdIGluXG4gIGxldCBjbGVhbiwgX21heF9zdWNjID1cbiAgICBsZXQgbWF4X3N1Y2MgPSBBLmluaXQgKG1heF9pbmRleCArIDEpIChmdW4gaSAtPiBpKSBpblxuICAgIGxldCBfID1cbiAgICAgIE0uaXRlclxuICAgICAgICAoZnVuIHN1Y2MgLT5cbiAgICAgICAgICBTLml0ZXIgKGZ1biBwcmVkIC0+XG4gICAgICAgICAgICAgIEEuc2V0IG1heF9zdWNjIHByZWQgKG1heCBzdWNjIChBLmdldCBtYXhfc3VjYyBwcmVkKSkpKVxuICAgICAgICBwcmVjXG4gICAgaW5cbiAgICBsZXQgaXNfbGFzdF9zdWNjX29mID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICAgIGxldCBhZGQgbm9kZSBtYXhfc3VjYyA9XG4gICAgICBsZXQgb2xkX2wgPSBBLmdldCBpc19sYXN0X3N1Y2Nfb2YgbWF4X3N1Y2MgaW5cbiAgICAgIGxldCBsJyA9IG5vZGUgOjogb2xkX2wgaW5cbiAgICAgIEEuc2V0IGlzX2xhc3Rfc3VjY19vZiBtYXhfc3VjYyBsJ1xuICAgIGluXG4gICAgbGV0IF8gPSBBLml0ZXJpIGFkZCBtYXhfc3VjYyBpblxuICAgIGxldCBfID0gQS5zZXQgaXNfbGFzdF9zdWNjX29mIDAgW10gaW5cbiAgICBsZXQgZ2Nfd2hlbl92aXNpdCBub2RlID1cbiAgICAgIExpc3QuaXRlciAoZnVuIGsgLT4gQS5zZXQgc19wcmVkX3N0YXIgayBbXSkgKEEuZ2V0IGlzX2xhc3Rfc3VjY19vZiBub2RlKVxuICAgIGluXG4gICAgZ2Nfd2hlbl92aXNpdCwgZnVuIGkgLT4gQS5nZXQgbWF4X3N1Y2MgaVxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICAgIHwgU29tZSBlIC0+XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3IgZSBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBvdXRwdXQgPVxuICAgIE0uZm9sZF93aXRoX2ludGVycnVwdGlvblxuICAgICAgKGZ1biBzdWNjIHNfcHJlZCAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyLCBhKSAtPlxuICAgICAgICBsZXQgcmVjIGF1eCAobCA6IGludCBsaXN0KSAoYWNjdSA6IGludCBsaXN0KSA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBhY2N1XG4gICAgICAgICAgfCBwcmVkIDo6IHQgLT5cbiAgICAgICAgICAgIGxldCBuZXdfbCA9IEEuZ2V0IHNfcHJlZF9zdGFyIHByZWQgaW5cbiAgICAgICAgICAgIGxldCBkaWZmID1cbiAgICAgICAgICAgICAgaWYgY29uZmlnLmN1dF90cmFuc2l0aXZlX3BhdGggdGhlblxuICAgICAgICAgICAgICAgIGRpZmZfbGlzdF9kZWNyZWFzaW5nIHQgbmV3X2xcbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIHRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhdXggZGlmZiAobWVyZ2VfbGlzdF9kZWNyZWFzaW5nIChwcmVkIDo6IG5ld19sKSBhY2N1KVxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJlZF9zdGFyID1cbiAgICAgICAgICBsZXQgbF9wcmVkID0gUy5mb2xkIChmdW4gaSBqIC0+IGkgOjogaikgc19wcmVkIFtdIGluXG4gICAgICAgICAgbGV0IHMgPSBBLmdldCBzX3ByZWRfc3RhciBzdWNjIGluXG4gICAgICAgICAgYXV4IGxfcHJlZCBzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBfID0gQS5zZXQgc19wcmVkX3N0YXIgc3VjYyBwcmVkX3N0YXIgaW5cbiAgICAgICAgbGV0IF8gPSBjbGVhbiBzdWNjIGluXG4gICAgICAgIGxldCB0aWNrID0gZG9fdGljayB0aWNrIGluXG4gICAgICAgIGlmIGlzX29icyBzdWNjIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGEgPVxuICAgICAgICAgICAgZiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdWNjIHByZWRfc3RhciBhXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgICAgICAgICAgKGZ1biBhIC0+IFN0b3Auc3VjY2VzcyAodGljaywgZXJyb3IsIGxvZ19pbmZvLCBjb3VudGVyICsgMSwgYSkpXG4gICAgICAgICAgICAoZnVuIGIgLT4gU3RvcC5zdG9wIChlcnJvciwgbG9nX2luZm8sIGIpKVxuICAgICAgICAgICAgYVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBTdG9wLnN1Y2Nlc3MgKHRpY2ssIGVycm9yLCBsb2dfaW5mbywgY291bnRlciwgYSkpXG4gICAgICBwcmVjXG4gICAgICAodGljaywgZXJyb3IsIGxvZ19pbmZvLCAxLCBhKVxuICBpblxuICBsZXQgXyA9IGNsb3NlX3RpY2sgKCkgaW5cbiAgU3RvcC5zdWNjZXNzX29yX3N0b3BcbiAgICAoZnVuIChfLCBlcnJvciwgbG9nX2luZm8sIF8sIGEpIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIHwgU29tZSBlIC0+XG4gICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3IgZSBOb25lIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgU3RvcC5zdWNjZXNzIChlcnJvciwgbG9nX2luZm8sIGEpKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYikgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBtYXRjaCBldmVudCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgfCBTb21lIGUgLT5cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvciBlIE5vbmUgbG9nX2luZm9cbiAgICAgIGluXG4gICAgICBTdG9wLnN0b3AgKGVycm9yLCBsb2dfaW5mbywgYikpXG4gICAgb3V0cHV0XG5cbmxldCBjbG9zdXJlX2JvdHRvbV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBldmVudF9vcHQgY29uZmlnIHByZWNcbiAgICBpc19vYnMgPVxuICBsZXQgbWF4X2luZGV4ID0gTS5mb2xkIChmdW4gaSBfIC0+IG1heCBpKSBwcmVjIDAgaW5cbiAgbGV0IHNfcHJlZF9zdGFyID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgZiBfcCBfaCBjIGUgaSBzIGEgPVxuICAgIGxldCBfID0gQS5zZXQgYSBpIHMgaW5cbiAgICBlLCBjLCBTdG9wLnN1Y2Nlc3MgYVxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBjbG9zdXJlX2JvdHRvbV91cF93aXRoX2ZvbGQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0XG4gICAgICBjb25maWcgcHJlYyBpc19vYnMgZiBzX3ByZWRfc3RhclxuICBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgZ3JhcGgpIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIChncmFwaCwgRGVjcmVhc2luZ193aXRob3V0X2xhc3RfZXZlbnQpKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgXykgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKHNfcHJlZF9zdGFyLCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCkpXG4gICAgb3V0cHV0XG5cbmxldCBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBfZXZlbnRfb3B0IGNvbmZpZyBwcmVjXG4gICAgaXNfb2JzIGRlbHRhID1cbiAgbGV0IGVycl9sb2dnZXIgPSBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXIgcGFyYW1ldGVyIGluXG4gIGxldCBpc19vYnMgPVxuICAgIGlmIGNvbmZpZy5rZWVwX2FsbF9ub2RlcyB0aGVuXG4gICAgICBmdW4gXyAtPlxuICAgIHRydWVcbiAgICBlbHNlXG4gICAgICBpc19vYnNcbiAgaW5cbiAgbGV0IG1heF9pbmRleCA9IE0uZm9sZCAoZnVuIGkgXyAtPiBtYXggaSkgcHJlYyAwIGluXG4gIGxldCBwcmVjID0gTS5mb2xkIChmdW4gaSBzX3ByZWQgbCAtPiAoaSwgc19wcmVkKSA6OiBsKSBwcmVjIFtdIGluXG4gIGxldCBjcmVhdGVfdGFpbnRzIGkgPVxuICAgIGxldCByZWMgYXV4IGRlbHRhIG91dHB1dCA9XG4gICAgICBpZiBkZWx0YSA9IDAgdGhlblxuICAgICAgICBvdXRwdXRcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4IChkZWx0YSAtIDEpIChTLmVtcHR5IDo6IG91dHB1dClcbiAgICBpblxuICAgIGF1eCBkZWx0YSBbIFMuc2luZ2xldG9uIGkgXVxuICBpblxuICBsZXQgc2hpZnRfdGFpbnRzIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgdCA6OiB0JyA6OiBxIC0+IFMudW5pb24gdCB0JyA6OiBxXG4gICAgfCBfIC0+IGxcbiAgaW5cbiAgbGV0IHJlYyBtZXJnZV90YWludHMgbDEgbDIgPVxuICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgfCBfLCBbXSAtPiBsMVxuICAgIHwgW10sIF8gLT4gbDJcbiAgICB8IHQgOjogcSwgdCcgOjogcScgLT4gUy51bmlvbiB0IHQnIDo6IG1lcmdlX3RhaW50cyBxIHEnXG4gIGluXG4gIGxldCBzX3ByZWRfc3RhciA9IEEubWFrZSAobWF4X2luZGV4ICsgMSkgW10gaW5cbiAgbGV0IHRhaW50IGkgdGFpbnRzID1cbiAgICBtYXRjaCB0YWludHMgd2l0aFxuICAgIHwgW10gLT4gKClcbiAgICB8IHQgOjogX3EgLT5cbiAgICAgIFMuaXRlclxuICAgICAgICAoZnVuIHRhaW50IC0+IEEuc2V0IHNfcHJlZF9zdGFyIHRhaW50IChpIDo6IEEuZ2V0IHNfcHJlZF9zdGFyIHRhaW50KSlcbiAgICAgICAgdFxuICBpblxuICBsZXQgZG9fdGljaywgdGljaywgY2xvc2VfdGljayA9XG4gICAgaWYgbWF4X2luZGV4ID4gMzAwICYmIGNvbmZpZy5kb190aWNrIHRoZW4gKFxuICAgICAgbGV0IHRpY2sgPVxuICAgICAgICBUaWNrX3N0b3JpZXMudGlja19zdG9yaWVzIGVycl9sb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICAoZmFsc2UsIDAsIDAsIG1heF9pbmRleClcbiAgICAgIGluXG4gICAgICBsZXQgZiA9XG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgZXJyX2xvZ2dlciBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgIGxldCBjbG9zZSAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBlcnJfbG9nZ2VyIGluXG4gICAgICBmLCB0aWNrLCBjbG9zZVxuICAgICkgZWxzZVxuICAgICAgKGZ1biB4IC0+IHgpLCAoZmFsc2UsIDAsIDAsIDApLCBmdW4gKCkgLT4gKClcbiAgaW5cbiAgbGV0IHRhaW50aW5nID0gQS5tYWtlIChtYXhfaW5kZXggKyAxKSBbXSBpblxuICBsZXQgXyA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gdGljayAoaSwgc19wcmVkKSAtPlxuICAgICAgICBsZXQgbmV3X3RhaW50ID1cbiAgICAgICAgICBpZiBpc19vYnMgaSB0aGVuXG4gICAgICAgICAgICBjcmVhdGVfdGFpbnRzIGlcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgdGFpbnRzID0gbWVyZ2VfdGFpbnRzIG5ld190YWludCAoQS5nZXQgdGFpbnRpbmcgaSkgaW5cbiAgICAgICAgbGV0ICgpID0gdGFpbnQgaSB0YWludHMgaW5cbiAgICAgICAgbGV0IHNoaWZ0ZWRfdGFpbnRzID0gc2hpZnRfdGFpbnRzIHRhaW50cyBpblxuICAgICAgICBsZXQgdGFpbnQgeCA9XG4gICAgICAgICAgQS5zZXQgdGFpbnRpbmcgeCAobWVyZ2VfdGFpbnRzIHNoaWZ0ZWRfdGFpbnRzIChBLmdldCB0YWludGluZyB4KSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gUy5pdGVyIHRhaW50IHNfcHJlZCBpblxuICAgICAgICBsZXQgKCkgPSBBLnNldCB0YWludGluZyBpIFtdIGluXG4gICAgICAgIGRvX3RpY2sgdGljaylcbiAgICAgIHRpY2sgcHJlY1xuICBpblxuICBsZXQgKCkgPSBjbG9zZV90aWNrICgpIGluXG4gIGVycm9yLCBsb2dfaW5mbywgKHNfcHJlZF9zdGFyLCBJbmNyZWFzaW5nX3dpdGhfbGFzdF9ldmVudClcblxubGV0IGdldF9saXN0X2luX2luY3JlYXNpbmdfb3JkZXJfd2l0aF9sYXN0X2V2ZW50IGkgKG0sIG1vZGUpID1cbiAgbWF0Y2ggbW9kZSB3aXRoXG4gIHwgSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgLT4gbS4oaSlcbiAgfCBEZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCAtPlxuICAgIChtYXRjaCBtLihpKSB3aXRoXG4gICAgfCBbXSAtPiBbXVxuICAgIHwgbCAtPiBMaXN0LnJldiAoaSA6OiBsKSlcblxubGV0IGNsb3N1cmVfY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29ic1xuICAgID1cbiAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYSwgYScpID1cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzIDBcbiAgaW5cbiAgbGV0IHQnID0gU3lzLnRpbWUgKCkgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGIsIGInKSA9XG4gICAgY2xvc3VyZV9ib3R0b21fdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0XG4gICAgICB7IGNvbmZpZyB3aXRoIGRvX3RpY2sgPSBmYWxzZSB9XG4gICAgICBwcmVjIGlzX29ic1xuICBpblxuICBsZXQgdCcnID0gU3lzLnRpbWUgKCkgaW5cbiAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJORVc6ICVmIE9MRDogJWYgXFxuXCIgKHQnIC0uIHQpICh0JycgLS4gdCcpIGluXG4gIGxldCBfID1cbiAgICBBLml0ZXJpXG4gICAgICAoZnVuIGkgX3MgLT5cbiAgICAgICAgbGV0IHMgPSBnZXRfbGlzdF9pbl9pbmNyZWFzaW5nX29yZGVyX3dpdGhfbGFzdF9ldmVudCBpIChhLCBhJykgaW5cbiAgICAgICAgbGV0IHMnID0gZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnQgaSAoYiwgYicpIGluXG4gICAgICAgIGlmIHMgPSBzJyB0aGVuXG4gICAgICAgICAgKClcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IF8gPSBQcmludGYuZnByaW50ZiBzdGRlcnIgXCJESUZGRVIgJWlcXG5cIiBpIGluXG4gICAgICAgICAgbGV0IF8gPSBMaXN0Lml0ZXIgKFByaW50Zi5mcHJpbnRmIHN0ZGVyciBcIiVpLCBcIikgcyBpblxuICAgICAgICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW5cbiAgICAgICAgICBsZXQgXyA9IExpc3QuaXRlciAoUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiJWksIFwiKSBzJyBpblxuICAgICAgICAgIGxldCBfID0gUHJpbnRmLmZwcmludGYgc3RkZXJyIFwiXFxuXCIgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApKVxuICAgICAgYVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIChhLCBhJylcblxubGV0IGNsb3N1cmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29icyA9XG4gIG1hdGNoIGNvbmZpZy5hbGdvIHdpdGhcbiAgfCBDaGVjayAtPlxuICAgIGNsb3N1cmVfY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfb3B0IGNvbmZpZyBwcmVjIGlzX29ic1xuICB8IEJvdHRvbV91cCAtPlxuICAgIGNsb3N1cmVfYm90dG9tX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzXG4gIHwgVG9wX2Rvd24gLT5cbiAgICBjbG9zdXJlX3RvcF9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X29wdCBjb25maWcgcHJlY1xuICAgICAgaXNfb2JzIDBcblxubGV0IHJlZHVjdGlvbl90b3BfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVjID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyIGVycm9yXG4gICAgICBTdG9yeVByb2ZpbGluZy5HcmFwaF9yZWR1Y3Rpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAocHJlY19zdGFyLCBfKSA9XG4gICAgY2xvc3VyZV90b3BfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuVHJhbnNpdGl2ZV9jbG9zdXJlIGNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcbiAgICAgIHByZWNcbiAgICAgIChmdW4gXyAtPiB0cnVlKVxuICAgICAgMlxuICBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBNLmZvbGRcbiAgICAgIChmdW4gZWlkIG5laWdoIG91dCAtPlxuICAgICAgICBsZXQgdG9fcmVtb3ZlID0gQS5nZXQgcHJlY19zdGFyIGVpZCBpblxuICAgICAgICBsZXQgcyA9IFMuZm9sZCAoZnVuIGkgbCAtPiBpIDo6IGwpIG5laWdoIFtdIGluXG4gICAgICAgIGxldCBzID0gTGlzdC5yZXYgcyBpblxuICAgICAgICBsZXQgcmVjIGF1eCBsMSBsMiBvdXRwdXQgPVxuICAgICAgICAgIG1hdGNoIGwxLCBsMiB3aXRoXG4gICAgICAgICAgfCBfLCBbXSAtPlxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBzZXQgaSAtPiBTLmFkZCBpIHNldCkgb3V0cHV0IGwxXG4gICAgICAgICAgICAoKiBUaGlzIGlzIHF1aXRlIGFubm95aW5nLCB3aHkgcHJlYyBpcyBub3QgZGVzY3JpYmVkIHdpdGggb3JkZXJlZCBsaXN0ICopXG4gICAgICAgICAgfCBbXSwgXyAtPiBvdXRwdXRcbiAgICAgICAgICB8IGggOjogcSwgaCcgOjogcScgLT5cbiAgICAgICAgICAgIGxldCBjbXAgPSBjb21wYXJlIGggaCcgaW5cbiAgICAgICAgICAgIGlmIGNtcCA8IDAgdGhlblxuICAgICAgICAgICAgICBhdXggcSBsMiAoUy5hZGQgaCBvdXRwdXQpXG4gICAgICAgICAgICBlbHNlIGlmIGNtcCA9IDAgdGhlblxuICAgICAgICAgICAgICBhdXggcSBxJyBvdXRwdXRcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IChoIDo6IHEpIHEnIG91dHB1dFxuICAgICAgICBpblxuICAgICAgICBsZXQgcyA9IGF1eCBzIHRvX3JlbW92ZSBTLmVtcHR5IGluXG4gICAgICAgIE0uYWRkIGVpZCBzIG91dClcbiAgICAgIHByZWMgcHJlY1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuR3JhcGhfcmVkdWN0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubGV0IHJlZHVjdGlvbiA9IHJlZHVjdGlvbl90b3BfZG93blxuIiwidHlwZSBxdWFya19saXN0cyA9IHtcbiAgc2l0ZV90ZXN0ZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG4gIHNpdGVfbW9kaWZpZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG4gIGludGVybmFsX3N0YXRlX3Rlc3RlZDogKGludCAqIGludCkgbGlzdDtcbiAgaW50ZXJuYWxfc3RhdGVfbW9kaWZpZWQ6IChpbnQgKiBpbnQpIGxpc3Q7XG59XG5cbnR5cGUgZXZlbnRfa2luZCA9IE9CUyBvZiBzdHJpbmcgfCBFVkVOVCBvZiBUcmFjZS5ldmVudF9raW5kXG5cbmxldCBhdG9tX3Rlc3RlZCA9IDFcbmxldCBhdG9tX21vZGlmaWVkID0gMlxubGV0IGF0b21fdGVzdGVkbW9kaWZpZWQgPSAzXG5cbnR5cGUgYXRvbSA9IHtcbiAgY2F1c2FsX2ltcGFjdDogaW50OyAoKigxKSB0ZXN0ZWQgKDIpIG1vZGlmaWVkLCAoMykgdGVzdGVkICsgbW9kaWZpZWQqKVxuICBlaWQ6IGludDsgKCpldmVudCBpZGVudGlmaWVyKilcbiAga2luZDogZXZlbnRfa2luZDsgKCpvYnNlcnZhdGlvbjogc3RyaW5nIGxpc3QqKVxufVxuXG50eXBlIGF0dHJpYnV0ZSA9IGF0b20gbGlzdCAoKnZlcnRpY2FsIHNlcXVlbmNlIG9mIGF0b21zKilcblxudHlwZSBncmlkID0ge1xuICBmbG93OiAoaW50ICogaW50ICogaW50LCBhdHRyaWJ1dGUpIEhhc2h0YmwudDtcbiAgKCoobl9pLHNfaSxxX2kpIC0+IGF0dF9pIHdpdGggbl9pOiBub2RlX2lkLCBzX2k6IHNpdGVfaWQsIHFfaTpcbiAgICBsaW5rICgxKSBvciBpbnRlcm5hbCBzdGF0ZSAoMCkgKilcbiAgcGlkX3RvX2luaXQ6IChpbnQgKiBpbnQgKiBpbnQsIGludCkgSGFzaHRibC50O1xuICBvYnM6IGludCBsaXN0O1xuICBpbml0X3RibDogKGludCwgTW9kcy5JbnRTZXQudCkgSGFzaHRibC50OyAoKmRlY3JlYXNpbmcqKVxuICBpbml0X3RvX2VpZG1heDogKGludCwgaW50KSBIYXNodGJsLnQ7XG59XG5cbnR5cGUgY29uZmlnID0ge1xuICBldmVudHNfa2luZDogZXZlbnRfa2luZCBNb2RzLkludE1hcC50O1xuICBwcmVjXzE6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudDtcbiAgY29uZmxpY3Q6IE1vZHMuSW50U2V0LnQgTW9kcy5JbnRNYXAudDtcbn1cblxudHlwZSBlbnJpY2hlZF9ncmlkID0ge1xuICBjb25maWc6IGNvbmZpZztcbiAgZGVwdGg6IGludDtcbiAgcHJlY19zdGFyOiBpbnQgbGlzdCBhcnJheSAqIEdyYXBoX2Nsb3N1cmUub3JkZXI7ICgqZGVjcmVhc2luZyopXG4gIGRlcHRoX29mX2V2ZW50OiBpbnQgTW9kcy5JbnRNYXAudDtcbiAgc2l6ZTogaW50O1xufVxuXG50eXBlIGZvcm1hdENmbG93ID0gRG90IHwgSHRtbCB8IEpzb25cblxubGV0IGVtcHR5X2NvbmZpZyA9XG4gIHtcbiAgICBldmVudHNfa2luZCA9IE1vZHMuSW50TWFwLmVtcHR5O1xuICAgIGNvbmZsaWN0ID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgcHJlY18xID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gIH1cblxubGV0IHByaW50X2V2ZW50X2tpbmQgP2VudiBmID0gZnVuY3Rpb25cbiAgfCBFVkVOVCBlIC0+IFRyYWNlLnByaW50X2V2ZW50X2tpbmQgP2VudiBmIGVcbiAgfCBPQlMgaSAtPlxuICAgIChtYXRjaCBlbnYgd2l0aFxuICAgIHwgTm9uZSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiT0JTKCVzKVwiIGlcbiAgICB8IFNvbWUgXyAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgaSlcblxubGV0IGRlYnVnX3ByaW50X2NhdXNhbCBmIGkgPVxuICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAoaWYgaSA9IGF0b21fdGVzdGVkIHRoZW5cbiAgICAgICBcInRlc3RlZFwiXG4gICAgIGVsc2UgaWYgaSA9IGF0b21fbW9kaWZpZWQgdGhlblxuICAgICAgIFwibW9kaWZpZWRcIlxuICAgICBlbHNlIGlmIGkgPSBhdG9tX3Rlc3RlZCBsb3IgYXRvbV9tb2RpZmllZCB0aGVuXG4gICAgICAgXCJ0ZXN0ZWQmbW9kaWZpZWRcIlxuICAgICBlbHNlXG4gICAgICAgXCJDQVVTQUwgSU1QQUNUIFVOREVGSU5FRFwiKVxuXG5sZXQgZGVidWdfcHJpbnRfYXRvbSBmIGEgPVxuICBGb3JtYXQuZnByaW50ZiBmIFwieyMlaTogJWEgJWF9XCIgYS5laWQgZGVidWdfcHJpbnRfY2F1c2FsIGEuY2F1c2FsX2ltcGFjdFxuICAgIChwcmludF9ldmVudF9raW5kID9lbnY6Tm9uZSlcbiAgICBhLmtpbmRcblxubGV0IGRlYnVnX3ByaW50X2dyaWQgZiBnID1cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHY+RmxvdzpALFwiIGluXG4gIGxldCAoKSA9XG4gICAgSGFzaHRibC5pdGVyXG4gICAgICAoZnVuIChub2RlX2lkLCBzaXRlX2lkLCBxKSBsIC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJAWzwyPiVpLiVpJXM6QCwlYUBdQCxcIiBub2RlX2lkIHNpdGVfaWRcbiAgICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAgIFwiflwiXG4gICAgICAgICAgIGVsc2UgaWYgcSA9IDEgdGhlblxuICAgICAgICAgICAgIFwiXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiVU5ERUZJTkVEXCIpXG4gICAgICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgZGVidWdfcHJpbnRfYXRvbSlcbiAgICAgICAgICBsKVxuICAgICAgZy5mbG93XG4gIGluXG4gIEZvcm1hdC5mcHJpbnRmIGYgXCJAXUAuXCJcblxubGV0IGVtcHR5X2dyaWQgKCkgPVxuICB7XG4gICAgZmxvdyA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBwaWRfdG9faW5pdCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBvYnMgPSBbXTtcbiAgICBpbml0X3RibCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgICBpbml0X3RvX2VpZG1heCA9IEhhc2h0YmwuY3JlYXRlICFQYXJhbWV0ZXIuZGVmYXVsdEV4dEFycmF5U2l6ZTtcbiAgfVxuXG5sZXQgYnVpbGRfc3VicyBsID1cbiAgc25kXG4gICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biAobiwgbWFwKSBhIC0+IHN1Y2MgbiwgTW9kcy5JbnRNYXAuYWRkIGEgbiBtYXApXG4gICAgICAgKDEsIE1vZHMuSW50TWFwLmVtcHR5KSBsKVxuXG5sZXQgc3VibWFwIHN1YnMgbCBtIGRlZmF1bHQgPVxuICBMaXN0LmZvbGRfbGVmdFxuICAgIChmdW4gbScgYSAtPlxuICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBzdWJzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgIHwgU29tZSBuZXdfYSAtPlxuICAgICAgICBNb2RzLkludE1hcC5hZGQgbmV3X2FcbiAgICAgICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gYSBtIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAobWF0Y2ggZGVmYXVsdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgICAgICAgICB8IFNvbWUgYSAtPiBhKSlcbiAgICAgICAgICBtJylcbiAgICBNb2RzLkludE1hcC5lbXB0eSBsXG5cbmxldCBhZGRfaW5pdF9waWQgZWlkIHBpZCBncmlkID1cbiAgbGV0IGVpZF9pbml0ID0gSGFzaHRibC5maW5kIGdyaWQucGlkX3RvX2luaXQgcGlkIGluXG4gIGxldCBvbGQgPVxuICAgIHRyeSBIYXNodGJsLmZpbmQgZ3JpZC5pbml0X3RibCBlaWQgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRTZXQuZW1wdHlcbiAgaW5cbiAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIGdyaWQuaW5pdF90YmwgZWlkIChNb2RzLkludFNldC5hZGQgZWlkX2luaXQgb2xkKSBpblxuICBsZXQgKCkgPSBIYXNodGJsLnJlcGxhY2UgZ3JpZC5pbml0X3RvX2VpZG1heCBlaWRfaW5pdCBlaWQgaW5cbiAgZ3JpZFxuXG5sZXQgX3N1YnNldCBzdWJzIGwgcyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKGZ1biBzJyBhIC0+XG4gICAgICBpZiBNb2RzLkludFNldC5tZW0gYSBzIHRoZW5cbiAgICAgICAgTW9kcy5JbnRTZXQuYWRkXG4gICAgICAgICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGEgc3VicyB3aXRoXG4gICAgICAgICAgfCBTb21lIGkgLT4gaVxuICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmQpXG4gICAgICAgICAgcydcbiAgICAgIGVsc2VcbiAgICAgICAgcycpXG4gICAgTW9kcy5JbnRTZXQuZW1wdHkgbFxuXG5sZXQgc3ViY29uZmlnX3dpdGhfc3VicyBzdWJzIGNvbmZpZyBsID1cbiAge1xuICAgIGV2ZW50c19raW5kID0gc3VibWFwIHN1YnMgbCBjb25maWcuZXZlbnRzX2tpbmQgTm9uZTtcbiAgICBwcmVjXzEgPSBzdWJtYXAgc3VicyBsIGNvbmZpZy5wcmVjXzEgKFNvbWUgTW9kcy5JbnRTZXQuZW1wdHkpO1xuICAgIGNvbmZsaWN0ID0gc3VibWFwIHN1YnMgbCBjb25maWcuY29uZmxpY3QgKFNvbWUgTW9kcy5JbnRTZXQuZW1wdHkpO1xuICB9XG5cbmxldCBzdWJlbnJpY2hlZF9ncmlkX3dpdGhfc3VicyBzdWJzIGdyaWQgbCA9XG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IHN1Ym1hcCBzdWJzIGwgZ3JpZC5kZXB0aF9vZl9ldmVudCAoU29tZSAwKSBpblxuICBsZXQgZGVwdGggPSBNb2RzLkludE1hcC5mb2xkIChmdW4gXyAtPiBtYXgpIGRlcHRoX29mX2V2ZW50IDAgaW5cbiAge1xuICAgIHByZWNfc3RhciA9IGdyaWQucHJlY19zdGFyO1xuICAgIGNvbmZpZyA9IHN1YmNvbmZpZ193aXRoX3N1YnMgc3VicyBncmlkLmNvbmZpZyBsO1xuICAgIGRlcHRoX29mX2V2ZW50O1xuICAgIGRlcHRoO1xuICAgIHNpemUgPSBMaXN0Lmxlbmd0aCBsO1xuICB9XG5cbmxldCBfc3ViY29uZmlnIGNvbmZpZyBsID0gc3ViY29uZmlnX3dpdGhfc3VicyAoYnVpbGRfc3VicyBsKSBjb25maWcgbFxubGV0IF9zdWJlbnJpY2hlZF9ncmlkIGdyaWQgbCA9IHN1YmVucmljaGVkX2dyaWRfd2l0aF9zdWJzIChidWlsZF9zdWJzIGwpIGdyaWQgbFxubGV0IGFkZF9vYnNfZWlkIGVpZCBncmlkID0geyBncmlkIHdpdGggb2JzID0gZWlkIDo6IGdyaWQub2JzIH1cblxubGV0IGdyaWRfZmluZCAobm9kZV9pZCwgc2l0ZV9pZCwgcXVhcmspIGdyaWQgPVxuICBIYXNodGJsLmZpbmQgZ3JpZC5mbG93IChub2RlX2lkLCBzaXRlX2lkLCBxdWFyaylcblxubGV0IF9pc19lbXB0eV9ncmlkIGdyaWQgPSBIYXNodGJsLmxlbmd0aCBncmlkLmZsb3cgPSAwXG5cbmxldCBncmlkX2FkZCBxdWFyayBlaWQgKGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZSkgZ3JpZCA9XG4gIGxldCAoKSA9XG4gICAgaWYgbm90IChIYXNodGJsLm1lbSBncmlkLmZsb3cgcXVhcmspIHRoZW5cbiAgICAgIEhhc2h0YmwuYWRkIGdyaWQucGlkX3RvX2luaXQgcXVhcmsgZWlkXG4gIGluXG4gIEhhc2h0YmwucmVwbGFjZSBncmlkLmZsb3cgcXVhcmsgYXR0cmlidXRlO1xuICBncmlkXG5cbmxldCBfbGFzdF9ldmVudCBhdHRyaWJ1dGUgPVxuICBtYXRjaCBhdHRyaWJ1dGUgd2l0aFxuICB8IFtdIC0+IE5vbmVcbiAgfCBhIDo6IF8gLT4gU29tZSBhLmVpZFxuXG4oKmFkZHMgYXRvbSBhIHRvIGF0dHJpYnV0ZSBhdHQuXG4gIENvbGxhcHNlcyBsYXN0IGF0b20gaWYgaWYgYmVhcnMgdGhlIHNhbWUgaWQgYXMgYSAtLWluIHRoZSBjYXNlIG9mIGEgbm9uIGF0b21pYyBhY3Rpb24qKVxubGV0IHB1c2ggKGEgOiBhdG9tKSAoYXR0IDogYXRvbSBsaXN0KSA9XG4gIG1hdGNoIGF0dCB3aXRoXG4gIHwgW10gLT4gWyBhIF1cbiAgfCBhJyA6OiBhdHQnIC0+XG4gICAgaWYgYScuZWlkID0gYS5laWQgdGhlbiAoXG4gICAgICBsZXQgKCkgPSBhc3NlcnQgKGEnLmtpbmQgPSBhLmtpbmQpIGluXG4gICAgICB7IGEnIHdpdGggY2F1c2FsX2ltcGFjdCA9IGEuY2F1c2FsX2ltcGFjdCBsb3IgYScuY2F1c2FsX2ltcGFjdCB9IDo6IGF0dCdcbiAgICApIGVsc2VcbiAgICAgIGEgOjogYXR0XG5cbigqKnNpZGVfZWZmZWN0IEludDJTZXQudDogcGFpcnMgKGFnZW50cyxwb3J0cykgdGhhdCBoYXZlIGJlZW4gZnJlZWQgYXMgYSBzaWRlIGVmZmVjdCAtLXZpYSBhIERFTCBvciBhIEZSRUUgYWN0aW9uKilcbigqTkIgbm8gaW50ZXJuYWwgc3RhdGUgbW9kaWYgYXMgc2lkZSBlZmZlY3QqKVxuXG4oKmxldCBpbXBhY3QgaXNfbGluayBjID1cbiAgaWYgaXNfbGluayB0aGVuXG4gICAgaWYgUHJpbWl0aXZlcy5DYXVzYWxpdHkuaXNfbGlua19tb2RpZiBjIHRoZW5cbiAgICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2xpbmtfdGVzdGVkIGMgdGhlbiBhdG9tX3Rlc3RlZG1vZGlmaWVkIGVsc2UgYXRvbV9tb2RpZmllZFxuICAgIGVsc2UgYXRvbV90ZXN0ZWRcbiAgZWxzZSAoKmludGVybmFsIHN0YXRlKilcbiAgICBpZiBQcmltaXRpdmVzLkNhdXNhbGl0eS5pc19pbnRlcm5hbF9tb2RpZiBjIHRoZW5cbiAgICAgIGlmIFByaW1pdGl2ZXMuQ2F1c2FsaXR5LmlzX2ludGVybmFsX3Rlc3RlZCBjIHRoZW4gYXRvbV90ZXN0ZWRtb2RpZmllZCBlbHNlIGF0b21fbW9kaWZpZWRcbiAgICBlbHNlIGF0b21fdGVzdGVkXG4qKVxubGV0IGFkZCAoKG5vZGVfaWQsIF8pLCBzaXRlX2lkKSBpc19saW5rIHZhIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmQgPVxuICBsZXQgcSA9XG4gICAgaWYgaXNfbGluayB0aGVuXG4gICAgICBhdG9tX3Rlc3RlZFxuICAgIGVsc2VcbiAgICAgIDBcbiAgaW5cbiAgbGV0IGF0dCA9IHRyeSBncmlkX2ZpbmQgKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGdyaWQgd2l0aCBOb3RfZm91bmQgLT4gW10gaW5cbiAgbGV0IGF0dCA9XG4gICAgcHVzaFxuICAgICAgeyBjYXVzYWxfaW1wYWN0ID0gdmE7IGVpZCA9IGV2ZW50X251bWJlcjsga2luZCAoKjsgb2JzZXJ2YXRpb24gPSBvYnMqKSB9XG4gICAgICBhdHRcbiAgaW5cbiAgbGV0IGdyaWQgPSBncmlkX2FkZCAobm9kZV9pZCwgc2l0ZV9pZCwgcSkgZXZlbnRfbnVtYmVyIGF0dCBncmlkIGluXG4gIGFkZF9pbml0X3BpZCBldmVudF9udW1iZXIgKG5vZGVfaWQsIHNpdGVfaWQsIHEpIGdyaWRcblxubGV0IGFkZF9hY3Rpb25zIGVudiBncmlkIGV2ZW50X251bWJlciBraW5kIGFjdGlvbnMgPVxuICBsZXQgcmVjIGF1eCBncmlkID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IGdyaWRcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlIGZhbHNlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzaXRlMSwgc2l0ZTIpIDo6IHEgLT5cbiAgICAgIGxldCBncmlkJyA9IGFkZCBzaXRlMiB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCBpblxuICAgICAgYXV4IChhZGQgc2l0ZTEgdHJ1ZSBhdG9tX21vZGlmaWVkIGdyaWQnIGV2ZW50X251bWJlciBraW5kKSBxXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHNpdGUxLCBfKSA6OiBxIC0+XG4gICAgICBhdXggKGFkZCBzaXRlMSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHNpdGUgOjogcSAtPlxuICAgICAgYXV4IChhZGQgc2l0ZSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCkgcVxuICAgIHwgKCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKChfLCBuYSkgYXMgYWcpLCBfKVxuICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoKF8sIG5hKSBhcyBhZykgKVxuICAgICAgOjogcSAtPlxuICAgICAgbGV0IHNpZ3MgPSBNb2RlbC5zaWduYXR1cmVzIGVudiBpblxuICAgICAgbGV0IGFnX2ludGYgPSBTaWduYXR1cmUuZ2V0IHNpZ3MgbmEgaW5cbiAgICAgIGxldCBncmlkID0gYWRkIChhZywgLTEpIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciBraW5kIGluXG4gICAgICBsZXQgZ3JpZCA9XG4gICAgICAgIFNpZ25hdHVyZS5mb2xkXG4gICAgICAgICAgKGZ1biBzaXRlIF8gZ3JpZCAtPlxuICAgICAgICAgICAgbGV0IGdyaWQnID1cbiAgICAgICAgICAgICAgbWF0Y2ggU2lnbmF0dXJlLmRlZmF1bHRfaW50ZXJuYWxfc3RhdGUgbmEgc2l0ZSBzaWdzIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IGdyaWRcbiAgICAgICAgICAgICAgfCBTb21lIF8gLT5cbiAgICAgICAgICAgICAgICBhZGQgKGFnLCBzaXRlKSBmYWxzZSBhdG9tX21vZGlmaWVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhZGQgKGFnLCBzaXRlKSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpXG4gICAgICAgICAgZ3JpZCBhZ19pbnRmXG4gICAgICBpblxuICAgICAgYXV4IGdyaWQgcVxuICBpblxuICBhdXggZ3JpZCBhY3Rpb25zXG5cbmxldCBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIga2luZCB0ZXN0cyA9XG4gIExpc3QuZm9sZF9sZWZ0XG4gICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gZ3JpZCAtPiBmdW5jdGlvblxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19IZXJlIGFnIC0+XG4gICAgICAgICBhZGQgKGFnLCAtMSkgdHJ1ZSBhdG9tX3Rlc3RlZCBncmlkIGV2ZW50X251bWJlciBraW5kXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgIGFkZCBzaXRlIGZhbHNlIGF0b21fdGVzdGVkIGdyaWQgZXZlbnRfbnVtYmVyIGtpbmRcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBzaXRlXG4gICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIHNpdGVcbiAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgXykgLT5cbiAgICAgICAgIGFkZCBzaXRlIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZFxuICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgbGV0IGdyaWQnID0gYWRkIHNpdGUyIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCBldmVudF9udW1iZXIga2luZCBpblxuICAgICAgICAgYWRkIHNpdGUxIHRydWUgYXRvbV90ZXN0ZWQgZ3JpZCcgZXZlbnRfbnVtYmVyIGtpbmQpKVxuICAgIGdyaWQgdGVzdHNcblxubGV0IHJlY29yZCAoa2luZCwgZXZlbnQsIF8pIGV2ZW50X251bWJlciBlbnYgZ3JpZCA9XG4gIGxldCBncmlkID1cbiAgICBhZGRfdGVzdHMgZ3JpZCBldmVudF9udW1iZXIgKEVWRU5UIGtpbmQpIGV2ZW50Lkluc3RhbnRpYXRpb24udGVzdHNcbiAgaW5cbiAgbGV0IGdyaWQgPVxuICAgIGFkZF90ZXN0cyBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZClcbiAgICAgIFsgZXZlbnQuSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgXVxuICBpblxuICBsZXQgZ3JpZCA9XG4gICAgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCBraW5kKSBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGdyaWQgc2l0ZSAtPlxuICAgICAgYWRkXG4gICAgICAgIChmc3Qgc2l0ZSwgLTEpXG4gICAgICAgIHRydWUgYXRvbV90ZXN0ZWRcbiAgICAgICAgKGFkZCBzaXRlIHRydWUgYXRvbV9tb2RpZmllZCBncmlkIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkpXG4gICAgICAgIGV2ZW50X251bWJlciAoRVZFTlQga2luZCkpXG4gICAgZ3JpZCBldmVudC5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19kc3RcblxubGV0IHJlY29yZF9vYnMgKGtpbmQsIHRlc3RzLCBfKSBzaWRlX2VmZmVjdHMgZXZlbnRfbnVtYmVyIGdyaWQgPVxuICBsZXQgZ3JpZCA9IGFkZF9vYnNfZWlkIGV2ZW50X251bWJlciBncmlkIGluXG4gIGxldCBncmlkID0gYWRkX3Rlc3RzIGdyaWQgZXZlbnRfbnVtYmVyIChPQlMga2luZCkgdGVzdHMgaW5cbiAgTGlzdC5mb2xkX2xlZnRcbiAgICAoZnVuIGdyaWQgc2l0ZSAtPiBhZGQgc2l0ZSB0cnVlIGF0b21fbW9kaWZpZWQgZ3JpZCBldmVudF9udW1iZXIgKE9CUyBraW5kKSlcbiAgICBncmlkIHNpZGVfZWZmZWN0c1xuXG5sZXQgcmVjb3JkX2luaXQgKGxibCwgYWN0aW9ucykgZXZlbnRfbnVtYmVyIGVudiBncmlkID1cbiAgYWRkX2FjdGlvbnMgZW52IGdyaWQgZXZlbnRfbnVtYmVyIChFVkVOVCAoVHJhY2UuSU5JVCBsYmwpKSBhY3Rpb25zXG5cbmxldCBhZGRfcHJlZCBlaWQgYXRvbSBjb25maWcgPVxuICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICBsZXQgcHJlZF9zZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZWlkIGNvbmZpZy5wcmVjXzEgaW5cbiAgbGV0IHByZWNfMSA9XG4gICAgTW9kcy5JbnRNYXAuYWRkIGVpZCAoTW9kcy5JbnRTZXQuYWRkIGF0b20uZWlkIHByZWRfc2V0KSBjb25maWcucHJlY18xXG4gIGluXG4gIHsgY29uZmlnIHdpdGggcHJlY18xOyBldmVudHNfa2luZCB9XG5cbmxldCBhZGRfY29uZmxpY3QgZWlkIGF0b20gY29uZmlnID1cbiAgbGV0IGV2ZW50c19raW5kID0gTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIGF0b20ua2luZCBjb25maWcuZXZlbnRzX2tpbmQgaW5cbiAgbGV0IGNmbGN0X3NldCA9XG4gICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGVpZCBjb25maWcuY29uZmxpY3RcbiAgaW5cbiAgbGV0IGNmbGN0ID1cbiAgICBNb2RzLkludE1hcC5hZGQgZWlkIChNb2RzLkludFNldC5hZGQgYXRvbS5laWQgY2ZsY3Rfc2V0KSBjb25maWcuY29uZmxpY3RcbiAgaW5cbiAgeyBjb25maWcgd2l0aCBjb25mbGljdCA9IGNmbGN0OyBldmVudHNfa2luZCB9XG5cbmxldCByZWMgcGFyc2VfYXR0cmlidXRlIGxhc3RfbW9kaWYgbGFzdF90ZXN0ZWQgYXR0cmlidXRlIGNvbmZpZyA9XG4gIG1hdGNoIGF0dHJpYnV0ZSB3aXRoXG4gIHwgW10gLT4gY29uZmlnXG4gIHwgYXRvbSA6OiBhdHQgLT5cbiAgICBsZXQgZXZlbnRzX2tpbmQgPSBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgYXRvbS5raW5kIGNvbmZpZy5ldmVudHNfa2luZCBpblxuICAgIGxldCBwcmVjXzEgPVxuICAgICAgbGV0IHByZWRzID1cbiAgICAgICAgTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGF0b20uZWlkIGNvbmZpZy5wcmVjXzFcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgYXRvbS5laWQgcHJlZHMgY29uZmlnLnByZWNfMVxuICAgIGluXG4gICAgbGV0IGNvbmZpZyA9IHsgY29uZmlnIHdpdGggZXZlbnRzX2tpbmQ7IHByZWNfMSB9IGluXG4gICAgKCphdG9tIGhhcyBhIG1vZGlmaWNhdGlvbiopXG4gICAgaWZcbiAgICAgIGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fbW9kaWZpZWRcbiAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkbW9kaWZpZWRcbiAgICB0aGVuIChcbiAgICAgIGxldCBjb25maWcgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gY29uZmlnIHByZWRfaWQgLT4gYWRkX3ByZWQgcHJlZF9pZCBhdG9tIGNvbmZpZylcbiAgICAgICAgICBjb25maWcgbGFzdF90ZXN0ZWRcbiAgICAgIGluXG4gICAgICBsZXQgdGVzdGVkID1cbiAgICAgICAgaWZcbiAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX3Rlc3RlZFxuICAgICAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkIGxvciBhdG9tX21vZGlmaWVkXG4gICAgICAgIHRoZW5cbiAgICAgICAgICBbIGF0b20uZWlkIF1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIFtdXG4gICAgICBpblxuICAgICAgcGFyc2VfYXR0cmlidXRlIChTb21lIGF0b20uZWlkKSB0ZXN0ZWQgYXR0IGNvbmZpZ1xuICAgICkgZWxzZSAoXG4gICAgICAoKiBhdG9tIGlzIGEgcHVyZSB0ZXN0KilcbiAgICAgIGxldCBjb25maWcgPVxuICAgICAgICBtYXRjaCBsYXN0X21vZGlmIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGNvbmZpZ1xuICAgICAgICB8IFNvbWUgZWlkIC0+XG4gICAgICAgICAgYWRkX2NvbmZsaWN0IGVpZCBhdG9tXG4gICAgICAgICAgICBjb25maWcgKCphZGRpbmcgY29uZmxpY3Qgd2l0aCBsYXN0IG1vZGlmaWNhdGlvbiopXG4gICAgICBpblxuICAgICAgcGFyc2VfYXR0cmlidXRlIGxhc3RfbW9kaWYgKGF0b20uZWlkIDo6IGxhc3RfdGVzdGVkKSBhdHQgY29uZmlnXG4gICAgKVxuXG5sZXQgY3V0ID8od2l0aF9yZWR1Y3Rpb24gPSB0cnVlKSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhdHRyaWJ1dGVfaWRzXG4gICAgZ3JpZCA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCByZWMgYnVpbGRfY29uZmlnIGF0dHJpYnV0ZV9pZHMgY2ZnID1cbiAgICBtYXRjaCBhdHRyaWJ1dGVfaWRzIHdpdGhcbiAgICB8IFtdIC0+IGNmZ1xuICAgIHwgKG5vZGVfaSwgc2l0ZV9pLCB0eXBlX2kpIDo6IHRsIC0+XG4gICAgICBsZXQgYXR0cmlidXRlID1cbiAgICAgICAgdHJ5IGdyaWRfZmluZCAobm9kZV9pLCBzaXRlX2ksIHR5cGVfaSkgZ3JpZFxuICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBpbnZhbGlkX2FyZyBcIkNhdXNhbC5jdXRcIlxuICAgICAgaW5cbiAgICAgIGxldCBjZmcgPVxuICAgICAgICBtYXRjaCBhdHRyaWJ1dGUgd2l0aFxuICAgICAgICB8IFtdIC0+IGNmZ1xuICAgICAgICB8IGF0b20gOjogYXR0IC0+XG4gICAgICAgICAgbGV0IGV2ZW50c19raW5kID1cbiAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCBhdG9tLmVpZCBhdG9tLmtpbmQgY2ZnLmV2ZW50c19raW5kXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlY18xID1cbiAgICAgICAgICAgIGxldCBwcmVkcyA9XG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCBNb2RzLkludFNldC5lbXB0eSBhdG9tLmVpZCBjZmcucHJlY18xXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTW9kcy5JbnRNYXAuYWRkIGF0b20uZWlkIHByZWRzIGNmZy5wcmVjXzFcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXN0ZWQgPVxuICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRcbiAgICAgICAgICAgICAgfHwgYXRvbS5jYXVzYWxfaW1wYWN0ID0gYXRvbV90ZXN0ZWRtb2RpZmllZFxuICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICBbIGF0b20uZWlkIF1cbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgW11cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBtb2RpZiA9XG4gICAgICAgICAgICBpZlxuICAgICAgICAgICAgICBhdG9tLmNhdXNhbF9pbXBhY3QgPSBhdG9tX21vZGlmaWVkXG4gICAgICAgICAgICAgIHx8IGF0b20uY2F1c2FsX2ltcGFjdCA9IGF0b21fdGVzdGVkbW9kaWZpZWRcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgU29tZSBhdG9tLmVpZFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgaW5cbiAgICAgICAgICBwYXJzZV9hdHRyaWJ1dGUgbW9kaWYgdGVzdGVkIGF0dCB7IGNmZyB3aXRoIHByZWNfMTsgZXZlbnRzX2tpbmQgfVxuICAgICAgaW5cbiAgICAgIGJ1aWxkX2NvbmZpZyB0bCBjZmdcbiAgaW5cbiAgbGV0IGNmZyA9IGJ1aWxkX2NvbmZpZyBhdHRyaWJ1dGVfaWRzIGVtcHR5X2NvbmZpZyBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlciBlcnJvclxuICAgICAgU3RvcnlQcm9maWxpbmcuQnVpbGRfY29uZmlndXJhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHJlZHVjdGlvbiA9XG4gICAgaWYgd2l0aF9yZWR1Y3Rpb24gdGhlblxuICAgICAgR3JhcGhfY2xvc3VyZS5yZWR1Y3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2ZnLnByZWNfMVxuICAgIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgY2ZnLnByZWNfMVxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIHsgY2ZnIHdpdGggcHJlY18xID0gcmVkdWN0aW9uIH1cblxubGV0IHBwX2F0b20gZiBhdG9tID1cbiAgbGV0IGltcF9zdHIgPVxuICAgIG1hdGNoIGF0b20uY2F1c2FsX2ltcGFjdCB3aXRoXG4gICAgfCAxIC0+IFwib1wiXG4gICAgfCAyIC0+IFwieFwiXG4gICAgfCAzIC0+IFwiJVwiXG4gICAgfCBfIC0+IGludmFsaWRfYXJnIFwiQ2F1c2FsLnN0cmluZ19vZl9hdG9tXCJcbiAgaW5cbiAgRm9ybWF0LmZwcmludGYgZiBcIiVzXyVkXCIgaW1wX3N0ciBhdG9tLmVpZFxuXG5sZXQgX2R1bXAgZ3JpZCBmaWMgPVxuICBsZXQgZF9jaGFuID0gS2FwcGFfZmlsZXMub3Blbl9vdXQgKEZpbGVuYW1lLmNob3BfZXh0ZW5zaW9uIGZpYyBeIFwiLnR4dFwiKSBpblxuICBsZXQgZCA9IEZvcm1hdC5mb3JtYXR0ZXJfb2Zfb3V0X2NoYW5uZWwgZF9jaGFuIGluXG4gIGxldCAoKSA9IEZvcm1hdC5wcF9vcGVuX3Zib3ggZCAwIGluXG4gIEhhc2h0YmwuZm9sZFxuICAgIChmdW4gKG5faWQsIHNfaWQsIHEpIGF0dCBfIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBkIFwiIyVpLiVpJWM6JWFALFwiIG5faWQgc19pZFxuICAgICAgICAoaWYgcSA9IDAgdGhlblxuICAgICAgICAgICAnfidcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgJyEnKVxuICAgICAgICAoUHAubGlzdCBQcC5lbXB0eSBwcF9hdG9tKSBhdHQpXG4gICAgZ3JpZC5mbG93ICgpO1xuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBkIFwiQF1ALlwiIGluXG4gIGNsb3NlX291dCBkX2NoYW5cblxubGV0IGlkc19vZl9ncmlkIGdyaWQgPSBIYXNodGJsLmZvbGQgKGZ1biBrZXkgXyBsIC0+IGtleSA6OiBsKSBncmlkLmZsb3cgW11cbmxldCBjb25maWdfb2ZfZ3JpZCA9IGN1dFxuXG4oKmxldCBwcmVjX3N0YXJfb2ZfY29uZmlnX29sZCAgY29uZmlnID1cbiAgbGV0IHJlYyBwcmVjX2Nsb3N1cmUgY29uZmlnIHRvZG8gYWxyZWFkeV9kb25lIGNsb3N1cmUgPVxuICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHRvZG8gdGhlbiBjbG9zdXJlXG4gICAgZWxzZVxuICAgICAgbGV0IGVpZCA9IE1vZHMuSW50U2V0LmNob29zZSB0b2RvIGluXG4gICAgICBsZXQgdG9kbycgPSBNb2RzLkludFNldC5yZW1vdmUgZWlkIHRvZG8gaW5cbiAgICAgIGlmIE1vZHMuSW50U2V0Lm1lbSBlaWQgYWxyZWFkeV9kb25lXG4gICAgICB0aGVuXG4gICAgICAgIHByZWNfY2xvc3VyZSBjb25maWcgdG9kbycgYWxyZWFkeV9kb25lIGNsb3N1cmVcbiAgICAgIGVsc2VcbiAgICAgICAgbGV0IHByZWMgPSB0cnkgSW50TWFwLmZpbmQgZWlkIGNvbmZpZy5wcmVjXzEgd2l0aCBOb3RfZm91bmQgLT4gTW9kcy5JbnRTZXQuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgIHByZWNfY2xvc3VyZSBjb25maWcgKEludFNldC51bmlvbiB0b2RvJyBwcmVjKSAoSW50U2V0LmFkZCBlaWQgYWxyZWFkeV9kb25lKSAoSW50U2V0LnVuaW9uIHByZWMgY2xvc3VyZSlcbiAgaW5cbiAgSW50TWFwLmZvbGRcbiAgICAoZnVuIGVpZCBraW5kIHByZWNfc3RhciAtPlxuICAgICAgbGV0IHNldCA9IHByZWNfY2xvc3VyZSBjb25maWcgKEludFNldC5zaW5nbGV0b24gZWlkKSBNb2RzLkludFNldC5lbXB0eSBNb2RzLkludFNldC5lbXB0eVxuICAgICAgaW5cbiAgICAgIEludE1hcC5hZGQgZWlkIHNldCBwcmVjX3N0YXJcbiAgICApIGNvbmZpZy5ldmVudHMgSW50TWFwLmVtcHR5ICopXG5cbmxldCBwcmVjX3N0YXJfb2ZfY29uZmlnID0gR3JhcGhfY2xvc3VyZS5jbG9zdXJlXG5cbmxldCBkZXB0aF9hbmRfc2l6ZV9vZl9ldmVudCBjb25maWcgPVxuICBNb2RzLkludE1hcC5mb2xkXG4gICAgKGZ1biBlaWQgcHJlY19laWRzIChlbWFwLCBfKSAtPlxuICAgICAgbGV0IGQgPVxuICAgICAgICBNb2RzLkludFNldC5mb2xkXG4gICAgICAgICAgKGZ1biBlaWQnIGQgLT5cbiAgICAgICAgICAgIGxldCBkJyA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCAwIGVpZCcgZW1hcCBpblxuICAgICAgICAgICAgbWF4IChkJyArIDEpIGQpXG4gICAgICAgICAgcHJlY19laWRzIDBcbiAgICAgIGluXG4gICAgICBNb2RzLkludE1hcC5hZGQgZWlkIGQgZW1hcCwgZClcbiAgICBjb25maWcucHJlY18xIChNb2RzLkludE1hcC5lbXB0eSwgMClcblxubGV0IGVucmljaF9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNvbmZpZ19jbG9zdXJlIGdyaWQgPVxuICBsZXQga2VlcF9sID1cbiAgICBMaXN0LmZvbGRfbGVmdCAoZnVuIGEgYiAtPiBNb2RzLkludFNldC5hZGQgYiBhKSBNb2RzLkludFNldC5lbXB0eSBncmlkLm9ic1xuICBpblxuICBsZXQgdG9fa2VlcCBpID0gTW9kcy5JbnRTZXQubWVtIGkga2VlcF9sIGluXG4gIGxldCBpZHMgPSBpZHNfb2ZfZ3JpZCBncmlkIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNvbmZpZyA9XG4gICAgY29uZmlnX29mX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWRzIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlY19zdGFyID1cbiAgICBwcmVjX3N0YXJfb2ZfY29uZmlnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAoU29tZSBTdG9yeVByb2ZpbGluZy5UcmFuc2l0aXZlX2Nsb3N1cmUpIGNvbmZpZ19jbG9zdXJlIGNvbmZpZy5wcmVjXzFcbiAgICAgIHRvX2tlZXBcbiAgaW5cbiAgbGV0IGRlcHRoX29mX2V2ZW50LCBkZXB0aCA9IGRlcHRoX2FuZF9zaXplX29mX2V2ZW50IGNvbmZpZyBpblxuICAoIGVycm9yLFxuICAgIGxvZ19pbmZvLFxuICAgIHtcbiAgICAgIGNvbmZpZztcbiAgICAgIHByZWNfc3RhcjtcbiAgICAgIGRlcHRoO1xuICAgICAgZGVwdGhfb2ZfZXZlbnQ7XG4gICAgICBzaXplID0gTW9kcy5JbnRNYXAuc2l6ZSBjb25maWcucHJlY18xO1xuICAgIH0gKVxuXG5sZXQgZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWdfY2xvc3VyZVxuICAgIGdyaWQgZiBhID1cbiAgbGV0IGtlZXBfbCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBhIGIgLT4gTW9kcy5JbnRTZXQuYWRkIGIgYSkgTW9kcy5JbnRTZXQuZW1wdHkgZ3JpZC5vYnNcbiAgaW5cbiAgbGV0IHRvX2tlZXAgaSA9IE1vZHMuSW50U2V0Lm1lbSBpIGtlZXBfbCBpblxuICBsZXQgaWRzID0gaWRzX29mX2dyaWQgZ3JpZCBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2NvbmZpZ3VyYXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25maWcgPVxuICAgIGNvbmZpZ19vZl9ncmlkIH53aXRoX3JlZHVjdGlvbjpmYWxzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpZHNcbiAgICAgIGdyaWRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudCBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgIFN0b3J5UHJvZmlsaW5nLkJ1aWxkX2NvbmZpZ3VyYXRpb24gTm9uZSBsb2dfaW5mb1xuICBpblxuICBHcmFwaF9jbG9zdXJlLmNsb3N1cmVfYm90dG9tX3VwX3dpdGhfZm9sZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIChTb21lIFN0b3J5UHJvZmlsaW5nLkNvbGxlY3RfdHJhY2VzKSBjb25maWdfY2xvc3VyZSBjb25maWcucHJlY18xIHRvX2tlZXAgZlxuICAgIGFcblxubGV0IHByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudiBmID0gZnVuY3Rpb25cbiAgfCBPQlMgbmFtZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJbbGFiZWw9XFxcIiVzXFxcIiwgc3R5bGU9ZmlsbGVkLCBmaWxsY29sb3I9cmVkXVwiIG5hbWVcbiAgfCBFVkVOVCBlIC0+IFRyYWNlLnByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudiBmIGVcblxubGV0IGRvdF9vZl9ncmlkIHByb2ZpbGluZyBlbnYgZW5yaWNoZWRfZ3JpZCBmb3JtID1cbiAgbGV0IHQgPSBTeXMudGltZSAoKSBpblxuICBsZXQgY29uZmlnID0gZW5yaWNoZWRfZ3JpZC5jb25maWcgaW5cbiAgbGV0IHByZWNfc3RhciA9IGVucmljaGVkX2dyaWQucHJlY19zdGFyIGluXG4gIGxldCBkZXB0aF9vZl9ldmVudCA9IGVucmljaGVkX2dyaWQuZGVwdGhfb2ZfZXZlbnQgaW5cbiAgbGV0IHNvcnRlZF9ldmVudHMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gZWlkIGQgZG1hcCAtPlxuICAgICAgICBsZXQgc2V0ID0gTW9kcy5JbnRNYXAuZmluZF9kZWZhdWx0IE1vZHMuSW50U2V0LmVtcHR5IGQgZG1hcCBpblxuICAgICAgICBNb2RzLkludE1hcC5hZGQgZCAoTW9kcy5JbnRTZXQuYWRkIGVpZCBzZXQpIGRtYXApXG4gICAgICBkZXB0aF9vZl9ldmVudCBNb2RzLkludE1hcC5lbXB0eVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj4ldEAsZGlncmFwaCBHe0AsIHJhbmtzZXA9LjUgO0AsXCIgcHJvZmlsaW5nO1xuICBNb2RzLkludE1hcC5pdGVyXG4gICAgKGZ1biBkIGVpZHNfYXRfZCAtPlxuICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIkBbPGh2PnsgcmFuayA9IHNhbWUgOyBcXFwiJWRcXFwiIFtzaGFwZT1wbGFpbnRleHRdIDtALFwiIGQ7XG4gICAgICBNb2RzLkludFNldC5pdGVyXG4gICAgICAgIChmdW4gZWlkIC0+XG4gICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gZWlkIGNvbmZpZy5ldmVudHNfa2luZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIE5vdF9mb3VuZFxuICAgICAgICAgIHwgU29tZSBhdG9tX2tpbmQgLT5cbiAgICAgICAgICAgIGlmIGVpZCA8PiAwIHRoZW5cbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIm5vZGVfJWQgJWEgO0AsXCIgZWlkXG4gICAgICAgICAgICAgICAgKHByaW50X2V2ZW50X2tpbmRfZG90X2Fubm90IGVudilcbiAgICAgICAgICAgICAgICBhdG9tX2tpbmRcbiAgICAgICAgICAoKiBMaXN0Lml0ZXIgKGZ1biBvYnMgLT4gZnByaW50ZiBkZXNjIFwib2JzXyVkIFtsYWJlbCA9XFxcIiVzXFxcIiwgc3R5bGU9ZmlsbGVkLCBmaWxsY29sb3I9cmVkXSA7XFxuIG5vZGVfJWQgLT4gb2JzXyVkIFthcnJvd2hlYWQ9dmVlXTtcXG5cIiBlaWQgb2JzIGVpZCBlaWQpIGF0b20ub2JzZXJ2YXRpb24gOyopKVxuICAgICAgICBlaWRzX2F0X2Q7XG4gICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwifUBdQCxcIilcbiAgICBzb3J0ZWRfZXZlbnRzO1xuICBsZXQgY3B0ID0gcmVmIDAgaW5cbiAgd2hpbGUgIWNwdCArIDEgPCBNb2RzLkludE1hcC5zaXplIHNvcnRlZF9ldmVudHMgZG9cbiAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiXFxcIiVkXFxcIiAtPiBcXFwiJWRcXFwiIFtzdHlsZT1cXFwiaW52aXNcXFwiXTtALFwiICFjcHQgKCFjcHQgKyAxKTtcbiAgICBjcHQgOj0gIWNwdCArIDFcbiAgZG9uZTtcbiAgTW9kcy5JbnRNYXAuaXRlclxuICAgIChmdW4gZWlkIHByZWRfc2V0IC0+XG4gICAgICBpZiBlaWQgPD4gMCB0aGVuXG4gICAgICAgIE1vZHMuSW50U2V0Lml0ZXJcbiAgICAgICAgICAoZnVuIGVpZCcgLT5cbiAgICAgICAgICAgIGlmIGVpZCcgPSAwIHRoZW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybSBcIm5vZGVfJWQgLT4gbm9kZV8lZEAsXCIgZWlkJyBlaWQpXG4gICAgICAgICAgcHJlZF9zZXQpXG4gICAgY29uZmlnLnByZWNfMTtcbiAgTW9kcy5JbnRNYXAuaXRlclxuICAgIChmdW4gZWlkIGNmbGN0X3NldCAtPlxuICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgIGxldCBwcmVjID0gdHJ5IChmc3QgcHJlY19zdGFyKS4oZWlkKSB3aXRoIF8gLT4gW10gaW5cbiAgICAgICAgbGV0IF8gPVxuICAgICAgICAgIE1vZHMuSW50U2V0LmZvbGRfaW52XG4gICAgICAgICAgICAoZnVuIGVpZCcgcHJlYyAtPlxuICAgICAgICAgICAgICBsZXQgYm9vbCwgcHJlYyA9XG4gICAgICAgICAgICAgICAgbGV0IHJlYyBhdXggcHJlYyA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBwcmVjIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgfCBoIDo6IHQgLT5cbiAgICAgICAgICAgICAgICAgICAgaWYgaCA9IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgaCA+IGVpZCcgdGhlblxuICAgICAgICAgICAgICAgICAgICAgIGF1eCB0XG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICB0cnVlLCBwcmVjXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBhdXggcHJlY1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZm9ybVxuICAgICAgICAgICAgICAgICAgICBcIm5vZGVfJWQgLT4gbm9kZV8lZCBbc3R5bGU9ZG90dGVkLCBhcnJvd2hlYWQgPSB0ZWVdQCBcIiBlaWRcbiAgICAgICAgICAgICAgICAgICAgZWlkJ1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBwcmVjKVxuICAgICAgICAgICAgY2ZsY3Rfc2V0IHByZWNcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgICkpXG4gICAgY29uZmlnLmNvbmZsaWN0O1xuICBGb3JtYXQuZnByaW50ZiBmb3JtIFwifUAsXCI7XG4gIEZvcm1hdC5mcHJpbnRmIGZvcm0gXCIvKkAsIERvdCBnZW5lcmF0aW9uIHRpbWU6ICVmQCwqL0BdQC5cIiAoU3lzLnRpbWUgKCkgLS4gdClcblxubGV0IGpzX29mX2dyaWQgZW52IGVucmljaGVkX2dyaWQgZiA9XG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIvLyBDcmVhdGUgYSBuZXcgZGlyZWN0ZWQgZ3JhcGhALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciBnID0gbmV3IGRhZ3JlRDMuZ3JhcGhsaWIuR3JhcGgoKS5zZXRHcmFwaCh7fSk7QCxcIlxuICBpblxuXG4gIGxldCAoKSA9XG4gICAgUHAuc2V0IH50cmFpbGluZzpQcC5zcGFjZSBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgKGZ1biBmIChlaWQsIGF0b21fa2luZCkgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiZy5zZXROb2RlKCVpLCB7IGxhYmVsOiBcXFwiJWFcXFwiLCBzdHlsZTogXFxcImZpbGw6ICVzXFxcIiB9KTtcIiBlaWRcbiAgICAgICAgICAocHJpbnRfZXZlbnRfa2luZCB+ZW52KSBhdG9tX2tpbmRcbiAgICAgICAgICAobWF0Y2ggYXRvbV9raW5kIHdpdGhcbiAgICAgICAgICB8IE9CUyBfIC0+IFwiI2Y3N1wiXG4gICAgICAgICAgfCBFVkVOVCAoVHJhY2UuSU5JVCBfIHwgVHJhY2UuUEVSVCBfKSAtPiBcIiM3ZjdcIlxuICAgICAgICAgIHwgRVZFTlQgKFRyYWNlLlJVTEUgXykgLT4gXCIjNzdmXCIpKVxuICAgICAgZiBlbnJpY2hlZF9ncmlkLmNvbmZpZy5ldmVudHNfa2luZFxuICBpblxuICBsZXQgKCkgPVxuICAgIFBwLnNldCBNb2RzLkludE1hcC5iaW5kaW5ncyBQcC5lbXB0eVxuICAgICAgKGZ1biBmIChlaWQsIHNldCkgLT5cbiAgICAgICAgUHAuc2V0IE1vZHMuSW50U2V0LmVsZW1lbnRzIH50cmFpbGluZzpQcC5zcGFjZSBQcC5zcGFjZVxuICAgICAgICAgIChmdW4gZiBlaWQnIC0+IEZvcm1hdC5mcHJpbnRmIGYgXCJnLnNldEVkZ2UoJWksJWkse30pO1wiIGVpZCcgZWlkKVxuICAgICAgICAgIGYgc2V0KVxuICAgICAgZiBlbnJpY2hlZF9ncmlkLmNvbmZpZy5wcmVjXzFcbiAgaW5cblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGYgXCJ2YXIgc3ZnID0gZDMuc2VsZWN0KFxcXCJzdmdcXFwiKSxpbm5lciA9IHN2Zy5zZWxlY3QoXFxcImdcXFwiKTtALFwiXG4gIGluXG5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi8vIFNldCB1cCB6b29tIHN1cHBvcnRALFwiIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcInZhciB6b29tID0gZDMuYmVoYXZpb3Iuem9vbSgpLm9uKFxcXCJ6b29tXFxcIiwgZnVuY3Rpb24oKSB7QCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiaW5uZXIuYXR0cihcXFwidHJhbnNmb3JtXFxcIiwgXFxcInRyYW5zbGF0ZShcXFwiICsgZDMuZXZlbnQudHJhbnNsYXRlICsgXFxcIilcXFwiICtALFwiXG4gIGluXG4gIGxldCAoKSA9XG4gICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgXCJcXFwic2NhbGUoXFxcIiArIGQzLmV2ZW50LnNjYWxlICsgXFxcIilcXFwiKTtALH0pO0Asc3ZnLmNhbGwoem9vbSk7XCJcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIi8vIENyZWF0ZSB0aGUgcmVuZGVyZXJALCB2YXIgcmVuZGVyID0gbmV3IGRhZ3JlRDMucmVuZGVyKCk7QCxcIlxuICBpblxuICBsZXQgKCkgPVxuICAgIEZvcm1hdC5mcHJpbnRmIGZcbiAgICAgIFwiLy8gUnVuIHRoZSByZW5kZXJlci4gVGhpcyBpcyB3aGF0IGRyYXdzIHRoZSBmaW5hbCBncmFwaC5ALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCJyZW5kZXIoaW5uZXIsIGcpO0AsXCIgaW5cblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiLy8gQ2VudGVyIHRoZSBncmFwaEAsdmFyIGluaXRpYWxTY2FsZSA9IDAuNzU7QCxcIiBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiem9vbUAsXCIgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmXG4gICAgICBcIi50cmFuc2xhdGUoWyhzdmcuYXR0cihcXFwid2lkdGhcXFwiKSAtIGcuZ3JhcGgoKS53aWR0aCAqIGluaXRpYWxTY2FsZSkgLyAyLCBcXFxuICAgICAgIDIwXSlALFwiXG4gIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIuc2NhbGUoaW5pdGlhbFNjYWxlKUAsLmV2ZW50KHN2Zyk7QCxcIiBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwic3ZnLmF0dHIoJ2hlaWdodCcsIGcuZ3JhcGgoKS5oZWlnaHQgKiBpbml0aWFsU2NhbGUgKyA0MCk7XCJcblxubGV0IGh0bWxfb2ZfZ3JpZCBwcm9maWxpbmcgY29tcHJlc3Npb25fdHlwZSBjcHQgZW52IGVucmljaGVkX2dyaWQgPVxuICBsZXQgdGl0bGUgZiA9XG4gICAgRm9ybWF0LmZwcmludGYgZiBcIiVzIGNvbXByZXNzZWQgc3RvcnkgbnVtYmVyICVpXCIgY29tcHJlc3Npb25fdHlwZSBjcHRcbiAgaW5cbiAgUHBfaHRtbC5ncmFwaF9wYWdlIHRpdGxlXG4gICAgW1xuICAgICAgXCJodHRwOi8vZDNqcy5vcmcvZDMudjMubWluLmpzXCI7XG4gICAgICBcImh0dHA6Ly9jcGV0dGl0dC5naXRodWIuaW8vcHJvamVjdC9kYWdyZS1kMy9sYXRlc3QvZGFncmUtZDMubWluLmpzXCI7XG4gICAgXVxuICAgIChmdW4gZiAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c3R5bGU+QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImR0IHtmbG9hdDogbGVmdDsgY2xlYXI6IGxlZnQ7IHdpZHRoOiAyMGVtO31ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcImRkIHtmb250LXdlaWdodDogYm9sZDsgbWFyZ2luOiAwIDAgMCAyMWVtO31ALFwiXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIi5ub2RlIHJlY3Qge3N0cm9rZTogIzMzMzsgZmlsbDogI2ZmZjt9QCxcIiBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZlxuICAgICAgICAgIFwiLmVkZ2VQYXRoIHBhdGgge3N0cm9rZTogIzMzMzsgZmlsbDogIzMzMzsgc3Ryb2tlLXdpZHRoOiAxLjVweDt9XCJcbiAgICAgIGluXG4gICAgICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALDwvc3R5bGU+XCIpXG4gICAgKGZ1biBmIC0+XG4gICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiPHN2ZyB3aWR0aD1cXFwiOTYwXFxcIj48Zz48L2c+PC9zdmc+QCxcIiBpblxuICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIjxwPkBbJXRAXTwvcD5ALFwiIHByb2ZpbGluZyBpblxuICAgICAgRm9ybWF0LmZwcmludGYgZiBcIkBbPHYgMj48c2NyaXB0PkAsJXRAXUAsPC9zY3JpcHQ+XCJcbiAgICAgICAgKGpzX29mX2dyaWQgZW52IGVucmljaGVkX2dyaWQpKVxuXG5sZXQgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1biAoc2l0ZSwgaW50ZXJuYWwpIC0+XG4gICAgICBtYXRjaCBpbnRlcm5hbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPlxuICAgICAgICBMaXN0Lm1lbSAoYXRvbV9tb2RpZmllZCwgKGFpZCwgc2l0ZSwgMCkpIHF1YXJrc1xuICAgICAgICAmJiBMaXN0Lm1lbSAoYXRvbV9tb2RpZmllZCwgKGFpZCwgc2l0ZSwgMSkpIHF1YXJrc1xuICAgICAgfCBOb25lIC0+IExpc3QubWVtIChhdG9tX21vZGlmaWVkLCAoYWlkLCBzaXRlLCAxKSkgcXVhcmtzKVxuICAgIHNpdGVzXG5cbmxldCBjaGVja19tb2RpZmllZF9xdWFya3MgKChhaWQsIF8pLCBzaXRlKSBtb2RpZiBxdWFya3MgPVxuICBMaXN0LmV4aXN0c1xuICAgIChmdW4gKGMsIChuLCBzLCBtKSkgLT5cbiAgICAgIChjID0gYXRvbV9tb2RpZmllZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZClcbiAgICAgICYmIG4gPSBhaWQgJiYgcyA9IHNpdGUgJiYgbSA9IG1vZGlmKVxuICAgIHF1YXJrc1xuXG5sZXQgY2hlY2tfdGVzdGVkX3F1YXJrcyAoKGFpZCwgXyksIHNpdGUpIG1vZGlmIHF1YXJrcyA9XG4gIExpc3QuZXhpc3RzXG4gICAgKGZ1biAoYywgKG4sIHMsIG0pKSAtPlxuICAgICAgKGMgPSBhdG9tX3Rlc3RlZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZClcbiAgICAgICYmIG4gPSBhaWQgJiYgcyA9IHNpdGUgJiYgbSA9IG1vZGlmKVxuICAgIHF1YXJrc1xuXG5sZXQgY2hlY2tfZXZlbnRfcXVhcmtzIGFjdGlvbnMgdGVzdHMgcXVhcmtzID1cbiAgTGlzdC5mb3JfYWxsXG4gICAgKGZ1bmN0aW9uXG4gICAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlICgoYWlkLCBfKSwgc2l0ZXMpIC0+XG4gICAgICAgIGNoZWNrX2NyZWF0ZV9xdWFya3MgYWlkIHNpdGVzIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgYXNpdGUgLT4gY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlIDEgcXVhcmtzXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoYXNpdGUxLCBhc2l0ZTIpXG4gICAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoYXNpdGUxLCBhc2l0ZTIpIC0+XG4gICAgICAgIGNoZWNrX21vZGlmaWVkX3F1YXJrcyBhc2l0ZTEgMSBxdWFya3NcbiAgICAgICAgJiYgY2hlY2tfbW9kaWZpZWRfcXVhcmtzIGFzaXRlMiAxIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCAoYXNpdGUsIF8pIC0+XG4gICAgICAgIGNoZWNrX21vZGlmaWVkX3F1YXJrcyBhc2l0ZSAwIHF1YXJrc1xuICAgICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSAoYWlkLCBfKSAtPlxuICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgIChmdW4gKGMsIChuLCBfLCBfKSkgLT5cbiAgICAgICAgICAgIChjID0gYXRvbV9tb2RpZmllZCB8fCBjID0gYXRvbV90ZXN0ZWRtb2RpZmllZCkgJiYgbiA9IGFpZClcbiAgICAgICAgICBxdWFya3MpXG4gICAgYWN0aW9uc1xuICAmJiBMaXN0LmZvcl9hbGxcbiAgICAgICAoTGlzdC5mb3JfYWxsIChmdW5jdGlvblxuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgKGFpZCwgXykgLT5cbiAgICAgICAgICAgTGlzdC5leGlzdHNcbiAgICAgICAgICAgICAoZnVuIChjLCAobiwgXywgXykpIC0+XG4gICAgICAgICAgICAgICAoYyA9IGF0b21fdGVzdGVkIHx8IGMgPSBhdG9tX3Rlc3RlZG1vZGlmaWVkKSAmJiBuID0gYWlkKVxuICAgICAgICAgICAgIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoYXNpdGUsIF8pIC0+XG4gICAgICAgICAgIGNoZWNrX3Rlc3RlZF9xdWFya3MgYXNpdGUgMCBxdWFya3NcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIGFzaXRlXG4gICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgYXNpdGVcbiAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChhc2l0ZSwgXykgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZSAxIHF1YXJrc1xuICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChhc2l0ZTEsIGFzaXRlMikgLT5cbiAgICAgICAgICAgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZTEgMSBxdWFya3NcbiAgICAgICAgICAgJiYgY2hlY2tfdGVzdGVkX3F1YXJrcyBhc2l0ZTIgMSBxdWFya3MpKVxuICAgICAgIHRlc3RzXG5cbmxldCBsb2dfZXZlbnQgaWQgcXVhcmtzIGV2ZW50X2tpbmQgc3RlcHMgPVxuICBtYXRjaCBldmVudF9raW5kIHdpdGhcbiAgfCBFVkVOVCAoVHJhY2UuSU5JVCBfKSAtPlxuICAgIGxldCBzdHAgPVxuICAgICAgTGlzdC5maW5kXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgICAgICAgICBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoKGFpZCwgXyksIHNpdGVzKSAtPlxuICAgICAgICAgICAgICAgICAgY2hlY2tfY3JlYXRlX3F1YXJrcyBhaWQgc2l0ZXMgcXVhcmtzXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfXG4gICAgICAgICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIF8gLT5cbiAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICB8IEluc3RhbnRpYXRpb24uUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgICAgICAgIChFeGNlcHRpb25EZWZuLkludGVybmFsX0Vycm9yXG4gICAgICAgICAgICAgICAgICAgICAgIChMb2MuYW5ub3Rfd2l0aF9kdW1teVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImluaXQgZXZlbnQgaGFzIGFjdGlvbnMgbm90IGFsbG93ZWRcIikpKVxuICAgICAgICAgICAgICBhY3Rpb25zXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgX1xuICAgICAgICAgIHwgVHJhY2UuRHVtbXkgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG4gIHwgRVZFTlQgKFRyYWNlLlJVTEUgcmlkKSAtPlxuICAgIGxldCBzdHAgPVxuICAgICAgTGlzdC5maW5kXG4gICAgICAgIChmdW5jdGlvblxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAocmlkJywgZSwgXykgLT5cbiAgICAgICAgICAgIHJpZCA9IHJpZCdcbiAgICAgICAgICAgICYmIGNoZWNrX2V2ZW50X3F1YXJrcyBlLkluc3RhbnRpYXRpb24uYWN0aW9uc1xuICAgICAgICAgICAgICAgICAoZS5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA6OiBlLkluc3RhbnRpYXRpb24udGVzdHMpXG4gICAgICAgICAgICAgICAgIHF1YXJrc1xuICAgICAgICAgIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5EdW1teSBfXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IF8gLT5cbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICBzdGVwc1xuICAgIGluXG4gICAgYExpc3QgWyBgSW50IGlkOyBUcmFjZS5zdGVwX3RvX3lvanNvbiBzdHAgXVxuICB8IE9CUyBfIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5PYnMgXyAtPiB0cnVlXG4gICAgICAgICAgfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuUnVsZSBfXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgICAgIGZhbHNlKVxuICAgICAgICBzdGVwc1xuICAgIGluXG4gICAgYExpc3QgWyBgSW50IGlkOyBUcmFjZS5zdGVwX3RvX3lvanNvbiBzdHAgXVxuICB8IEVWRU5UIChUcmFjZS5QRVJUIHBlcnQpIC0+XG4gICAgbGV0IHN0cCA9XG4gICAgICBMaXN0LmZpbmRcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IChwZXJ0JywgZSwgXykgLT5cbiAgICAgICAgICAgIHBlcnQgPSBwZXJ0J1xuICAgICAgICAgICAgJiYgY2hlY2tfZXZlbnRfcXVhcmtzIGUuSW5zdGFudGlhdGlvbi5hY3Rpb25zXG4gICAgICAgICAgICAgICAgIChlLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzIDo6IGUuSW5zdGFudGlhdGlvbi50ZXN0cylcbiAgICAgICAgICAgICAgICAgcXVhcmtzXG4gICAgICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5PYnMgXyB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF9cbiAgICAgICAgICB8IFRyYWNlLkluaXQgXyAtPlxuICAgICAgICAgICAgZmFsc2UpXG4gICAgICAgIHN0ZXBzXG4gICAgaW5cbiAgICBgTGlzdCBbIGBJbnQgaWQ7IFRyYWNlLnN0ZXBfdG9feW9qc29uIHN0cCBdXG5cbmxldCBqc29uX29mX2dyaWQgZW5yaWNoZWRfZ3JpZCBncmlkX3N0b3J5IHN0ZXBzID1cbiAgbGV0IGNvbmZpZyA9IGVucmljaGVkX2dyaWQuY29uZmlnIGluXG4gIGxldCBwcmVjX3N0YXIgPSBlbnJpY2hlZF9ncmlkLnByZWNfc3RhciBpblxuICBsZXQgZGVwdGhfb2ZfZXZlbnQgPSBlbnJpY2hlZF9ncmlkLmRlcHRoX29mX2V2ZW50IGluXG4gIGxldCB0YmwgPSBIYXNodGJsLmNyZWF0ZSAhUGFyYW1ldGVyLmRlZmF1bHRFeHRBcnJheVNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBIYXNodGJsLml0ZXJcbiAgICAgIChmdW4gcXVhcmsgYXR0X2xzIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gYXRvbSAtPiBIYXNodGJsLmFkZCB0YmwgYXRvbS5laWQgKGF0b20uY2F1c2FsX2ltcGFjdCwgcXVhcmspKVxuICAgICAgICAgIGF0dF9scylcbiAgICAgIGdyaWRfc3RvcnkuZmxvd1xuICBpblxuICBsZXQgc29ydGVkX2V2ZW50cyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgZCBkbWFwIC0+XG4gICAgICAgIGxldCBzZXQgPSBNb2RzLkludE1hcC5maW5kX2RlZmF1bHQgTW9kcy5JbnRTZXQuZW1wdHkgZCBkbWFwIGluXG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCBkIChNb2RzLkludFNldC5hZGQgZWlkIHNldCkgZG1hcClcbiAgICAgIGRlcHRoX29mX2V2ZW50IE1vZHMuSW50TWFwLmVtcHR5XG4gIGluXG4gIGxldCBub2RlX3RvX2pzb24gZWlkID1cbiAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiBlaWQgY29uZmlnLmV2ZW50c19raW5kIHdpdGhcbiAgICB8IE5vbmUgLT4gcmFpc2UgTm90X2ZvdW5kXG4gICAgfCBTb21lIGF0b21fa2luZCAtPlxuICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgIGxldCBxdWFya3MgPSBIYXNodGJsLmZpbmRfYWxsIHRibCBlaWQgaW5cbiAgICAgICAgbG9nX2V2ZW50IGVpZCBxdWFya3MgYXRvbV9raW5kIHN0ZXBzXG4gICAgICApIGVsc2VcbiAgICAgICAgYE51bGxcbiAgaW5cbiAgbGV0IG5vZGVzX3RvX2xpc3QgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gXyBlaWRzX2F0X2QgbHMgLT5cbiAgICAgICAgbGV0IGxzJycgPSBNb2RzLkludFNldC5mb2xkIChmdW4gZWlkIGxzJyAtPiBlaWQgOjogbHMnKSBlaWRzX2F0X2QgW10gaW5cbiAgICAgICAgbHMnJyBAIGxzKVxuICAgICAgc29ydGVkX2V2ZW50cyBbXVxuICBpblxuICBsZXQgbm9kZXNfdG9fanNvbiA9IEpzb25VdGlsLm9mX2xpc3Qgbm9kZV90b19qc29uIG5vZGVzX3RvX2xpc3QgaW5cbiAgbGV0IGVkZ2VfdG9fanNvbiAoZWlkLCBlaWQnKSA9IGBBc3NvYyBbIFwiZnJvbVwiLCBgSW50IGVpZCc7IFwidG9cIiwgYEludCBlaWQgXSBpblxuICBsZXQgcHJlY19lZGdlcyA9XG4gICAgTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgKGZ1biBlaWQgcHJlZF9zZXQgbHMgLT5cbiAgICAgICAgaWYgZWlkIDw+IDAgdGhlbiAoXG4gICAgICAgICAgbGV0IGxzJycgPVxuICAgICAgICAgICAgTW9kcy5JbnRTZXQuZm9sZFxuICAgICAgICAgICAgICAoZnVuIGVpZCcgbHMnIC0+XG4gICAgICAgICAgICAgICAgaWYgZWlkJyA9IDAgdGhlblxuICAgICAgICAgICAgICAgICAgbHMnXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgKGVpZCwgZWlkJykgOjogbHMnKVxuICAgICAgICAgICAgICBwcmVkX3NldCBbXVxuICAgICAgICAgIGluXG4gICAgICAgICAgbHMnJyBAIGxzXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGxzKVxuICAgICAgY29uZmlnLnByZWNfMSBbXVxuICBpblxuICBsZXQgcHJlY19lZGdlc190b19qc29uID0gSnNvblV0aWwub2ZfbGlzdCBlZGdlX3RvX2pzb24gcHJlY19lZGdlcyBpblxuICBsZXQgY29uZmxfZWRnZXMgPVxuICAgIE1vZHMuSW50TWFwLmZvbGRcbiAgICAgIChmdW4gZWlkIGNmbGN0X3NldCBscyAtPlxuICAgICAgICBpZiBlaWQgPD4gMCB0aGVuIChcbiAgICAgICAgICBsZXQgcHJlYyA9IHRyeSAoZnN0IHByZWNfc3RhcikuKGVpZCkgd2l0aCBfIC0+IFtdIGluXG4gICAgICAgICAgbGV0IF8sIGxzJyA9XG4gICAgICAgICAgICBNb2RzLkludFNldC5mb2xkX2ludlxuICAgICAgICAgICAgICAoZnVuIGVpZCcgKHByZWMsIGxzJykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYm9vbCwgcHJlYyA9XG4gICAgICAgICAgICAgICAgICBsZXQgcmVjIGF1eCBwcmVjID1cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcHJlYyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgW10gLT4gdHJ1ZSwgcHJlY1xuICAgICAgICAgICAgICAgICAgICB8IGggOjogdCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGlmIGggPSBlaWQnIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCB0XG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiBoID4gZWlkJyB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBhdXggdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIHByZWNcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBhdXggcHJlY1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxzJycgPVxuICAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIChlaWQsIGVpZCcpIDo6IGxzJ1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBscydcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIHByZWMsIGxzJycpXG4gICAgICAgICAgICAgIGNmbGN0X3NldCAocHJlYywgbHMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBscydcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgbHMpXG4gICAgICBjb25maWcuY29uZmxpY3QgW11cbiAgaW5cbiAgbGV0IGNvbmZsX2VkZ2VzX3RvX2pzb24gPSBKc29uVXRpbC5vZl9saXN0IGVkZ2VfdG9fanNvbiBjb25mbF9lZGdlcyBpblxuICAoYEFzc29jXG4gICAgIFtcbiAgICAgICBcIm5vZGVzXCIsIG5vZGVzX3RvX2pzb247XG4gICAgICAgXCJjYXVzZVwiLCBwcmVjX2VkZ2VzX3RvX2pzb247XG4gICAgICAgXCJpbmhpYml0XCIsIGNvbmZsX2VkZ2VzX3RvX2pzb247XG4gICAgIF1cbiAgICA6IFlvanNvbi5CYXNpYy50KVxuXG4oKnN0b3J5X2xpc3Q6WyhrZXlfaSxsaXN0X2kpXSBldCBsaXN0X2k6WyhncmlkLF8sc2ltX2luZm8gb3B0aW9uKS4uLl1cbiAgZXQgc2ltX2luZm86e3dpdGggc3RvcnlfaWQ6aW50IHN0b3J5X3RpbWU6IGZsb2F0IDsgc3RvcnlfZXZlbnQ6IGludH0qKVxubGV0IHByZXR0eV9wcmludCB+ZG90Rm9ybWF0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBjb25maWdfY2xvc3VyZVxuICAgIGNvbXByZXNzaW9uX3R5cGUgbGFiZWwgZ3JpZF9saXN0ID1cbiAgbWF0Y2hcbiAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXIgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mb1xuICB8IFNvbWUgZXJyX2ZtdCAtPlxuICAgIGxldCBuID0gTGlzdC5sZW5ndGggZ3JpZF9saXN0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGNvbXByZXNzaW9uX3R5cGUgPSBcIlwiIHRoZW5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgZXJyX2ZtdCBcIisgUHJldHR5IHByaW50aW5nICVkIGZsb3clc0AuXCIgblxuICAgICAgICAgIChpZiBuID4gMSB0aGVuXG4gICAgICAgICAgICAgXCJzXCJcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiXCIpXG4gICAgICBlbHNlXG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIGVycl9mbXQgXCIrIFByZXR0eSBwcmludGluZyAlZCAlc2NvbXByZXNzZWQgZmxvdyVzQC5cIiBuXG4gICAgICAgICAgbGFiZWxcbiAgICAgICAgICAoaWYgbiA+IDEgdGhlblxuICAgICAgICAgICAgIFwic1wiXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBcIlwiKVxuICAgIGluXG4gICAgbGV0IGNvbXByZXNzaW9uX3R5cGUgPVxuICAgICAgaWYgY29tcHJlc3Npb25fdHlwZSA9IFwiXCIgdGhlblxuICAgICAgICBcIm5vbmVcIlxuICAgICAgZWxzZVxuICAgICAgICBjb21wcmVzc2lvbl90eXBlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdG9yeV9saXN0ID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgbGlzdCkgKHosIHgsIHkpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgeCA9XG4gICAgICAgICAgICBlbnJpY2hfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWdfY2xvc3VyZSB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sICh6LCB4LCB5KSA6OiBsaXN0KVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBbXSkgZ3JpZF9saXN0XG4gICAgaW5cbiAgICBsZXQgc3RvcnlfbGlzdCA9IExpc3QucmV2IHN0b3J5X2xpc3QgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGNwdCAoc3RlcHMsIGVucmljaGVkX2NvbmZpZywgc3RvcmllcykgLT5cbiAgICAgICAgICBsZXQgYXZfdCwgaWRzLCBuID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGF2X3QsIGlkcywgbikgaW5mbyAtPlxuICAgICAgICAgICAgICAgICggYXZfdCArLiBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lLFxuICAgICAgICAgICAgICAgICAgaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgOjogaWRzLFxuICAgICAgICAgICAgICAgICAgbiArIDEgKSlcbiAgICAgICAgICAgICAgKDAuLCBbXSwgMCkgKExpc3QucmV2IHN0b3JpZXMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgKCpkdW1wIGdyaWQgZmljIHN0YXRlIGVudiA7ICopXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBkb3RGb3JtYXQgPSBKc29uIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBfLCBncmlkX3N0b3J5LCBfID0gTGlzdC5udGggZ3JpZF9saXN0IGNwdCBpblxuICAgICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgICAgWyBjb21wcmVzc2lvbl90eXBlOyBzdHJpbmdfb2ZfaW50IGNwdCBdXG4gICAgICAgICAgICAgICAgICBcIi5qc29uXCJcbiAgICAgICAgICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmIFwiJXNALlwiXG4gICAgICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgICAgICAoanNvbl9vZl9ncmlkIGVucmljaGVkX2NvbmZpZyBncmlkX3N0b3J5IHN0ZXBzKSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXRjaCBkb3RGb3JtYXQgd2l0aFxuICAgICAgICAgICAgfCBEb3QgfCBKc29uIC0+XG4gICAgICAgICAgICAgIGxldCBwcm9maWxpbmcgZGVzYyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIi8qIEBbQ29tcHJlc3Npb24gb2YgJWQgY2F1c2FsIGZsb3dzXCIgbjtcbiAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBkZXNjIFwiQCBvYnRhaW5lZCBpbiBhdmVyYWdlIGF0ICVFIHQudUBdICovQCxcIlxuICAgICAgICAgICAgICAgICAgKGF2X3QgLy4gZmxvYXRfb2ZfaW50IG4pO1xuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgICAgICAgICAgICAgIFwiQFsvKiBDb21wcmVzc2VkIGNhdXNhbCBmbG93cyB3ZXJlOkAgWyVhXSAqL0BdXCJcbiAgICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgICAoZnVuIGYgLT4gRm9ybWF0LmZwcmludGYgZiBcIjtALFwiKVxuICAgICAgICAgICAgICAgICAgICAgRm9ybWF0LnBwX3ByaW50X2ludClcbiAgICAgICAgICAgICAgICAgIGlkc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBLYXBwYV9maWxlcy53aXRoX2NmbG93X2ZpbGVcbiAgICAgICAgICAgICAgICBbIGNvbXByZXNzaW9uX3R5cGU7IHN0cmluZ19vZl9pbnQgY3B0IF1cbiAgICAgICAgICAgICAgICBcIi5kb3RcIlxuICAgICAgICAgICAgICAgIChkb3Rfb2ZfZ3JpZCBwcm9maWxpbmcgZW52IGVucmljaGVkX2NvbmZpZylcbiAgICAgICAgICAgIHwgSHRtbCAtPlxuICAgICAgICAgICAgICBsZXQgcHJvZmlsaW5nIGRlc2MgPVxuICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGRlc2NcbiAgICAgICAgICAgICAgICAgIFwiQFs8diAyPjxkbD5ALDxkdD5Db21wcmVzc2lvbiBvZjwvZHQ+PGRkPiVkIGNhdXNhbCBmbG93czwvZGQ+XCJcbiAgICAgICAgICAgICAgICAgIG47XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzY1xuICAgICAgICAgICAgICAgICAgXCJALDxkdD5vYnRhaW5lZCBpbiBhdmVyYWdlIGF0PC9kdD48ZGQ+JUUgdC51PC9kZD5ALFwiXG4gICAgICAgICAgICAgICAgICAoYXZfdCAvLiBmbG9hdF9vZl9pbnQgbik7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIjxkdD5Db21wcmVzc2VkIGNhdXNhbCBmbG93cyB3ZXJlOjwvZHQ+XCI7XG4gICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZGVzYyBcIkAgPGRkPltAWyVhQF1dPC9kZD5AXUAsPC9kbD5cIlxuICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQuZnByaW50ZiBmIFwiO0AsXCIpXG4gICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50KVxuICAgICAgICAgICAgICAgICAgaWRzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZVxuICAgICAgICAgICAgICAgIFsgY29tcHJlc3Npb25fdHlwZTsgc3RyaW5nX29mX2ludCBjcHQgXVxuICAgICAgICAgICAgICAgIFwiLmh0bWxcIlxuICAgICAgICAgICAgICAgIChodG1sX29mX2dyaWQgcHJvZmlsaW5nIGNvbXByZXNzaW9uX3R5cGUgY3B0IGVudiBlbnJpY2hlZF9jb25maWcpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBjcHQgKyAxKVxuICAgICAgICAwIHN0b3J5X2xpc3RcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBtYXRjaCBkb3RGb3JtYXQgd2l0aFxuICAgICAgfCBKc29uIC0+XG4gICAgICAgIEthcHBhX2ZpbGVzLndpdGhfY2Zsb3dfZmlsZSBbIGNvbXByZXNzaW9uX3R5cGU7IFwiZW52XCIgXSBcIi5qc29uXCJcbiAgICAgICAgICAoZnVuIGYgLT5cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AuXCJcbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKE1vZGVsLnRvX3lvanNvbiBlbnYpKSlcbiAgICAgIHwgRG90IHwgSHRtbCAtPiAoKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgS2FwcGFfZmlsZXMud2l0aF9jZmxvd19maWxlIFsgY29tcHJlc3Npb25fdHlwZTsgXCJTdW1tYXJ5XCIgXSBcIi5kYXRcIlxuICAgICAgICAoZnVuIGZvcm0gLT5cbiAgICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQFs8dj4jaWRcXHRFXFx0VFxcdFxcdGRlcHRoXFx0c2l6ZVxcdEAsXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgUHAubGlzdGkgUHAuZW1wdHlcbiAgICAgICAgICAgICAgKGZ1biBjcHQgZiAoXywgZW5yaWNoZWRfY29uZmlnLCBzdG9yeSkgLT5cbiAgICAgICAgICAgICAgICBsZXQgZGVwdGggPSBlbnJpY2hlZF9jb25maWcuZGVwdGggaW5cbiAgICAgICAgICAgICAgICBsZXQgc2l6ZSA9IGVucmljaGVkX2NvbmZpZy5zaXplIGluXG4gICAgICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGluZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpbWUgPSBpbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBldmVudCA9IGluZm8uVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlaVxcdCVpXFx0JUVcXHQlaVxcdCVpXFx0QCxcIiBjcHQgZXZlbnQgdGltZVxuICAgICAgICAgICAgICAgICAgICAgIGRlcHRoIHNpemUpXG4gICAgICAgICAgICAgICAgICBzdG9yeSlcbiAgICAgICAgICAgICAgZm9ybSBzdG9yeV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmb3JtIFwiQF1AP1wiKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvXG5cbmxldCBwcmludF9zdGF0IGYgX3BhcmFtZXRlciBfaGFuZGxlciBlbnJpY2hlZF9ncmlkID1cbiAgbGV0IGNvdW50X29icyA9XG4gICAgbWF0Y2ggc25kIGVucmljaGVkX2dyaWQucHJlY19zdGFyIHdpdGhcbiAgICB8IEdyYXBoX2Nsb3N1cmUuSW5jcmVhc2luZ193aXRoX2xhc3RfZXZlbnQgLT4gZnVuIHggLT4geFxuICAgIHwgR3JhcGhfY2xvc3VyZS5EZWNyZWFzaW5nX3dpdGhvdXRfbGFzdF9ldmVudCAtPiBzdWNjXG4gIGluXG4gIGxldCBzaXplID0gQXJyYXkubGVuZ3RoIChmc3QgZW5yaWNoZWRfZ3JpZC5wcmVjX3N0YXIpIGluXG4gIGxldCByZWMgYXV4IGsgbl9zdGVwIGxvbmdlc3Rfc3Rvcnkgbl9ub25lbXB0eSBsZW5ndGhfc3VtIGxlbmd0aF9zcXVhcmVfc3VtID1cbiAgICBpZiBrID49IHNpemUgdGhlblxuICAgICAgbl9zdGVwLCBsb25nZXN0X3N0b3J5LCBuX25vbmVtcHR5LCBsZW5ndGhfc3VtLCBsZW5ndGhfc3F1YXJlX3N1bVxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNjID0gTGlzdC5sZW5ndGggKEFycmF5LmdldCAoZnN0IGVucmljaGVkX2dyaWQucHJlY19zdGFyKSBrKSBpblxuICAgICAgbGV0IGNjJyA9XG4gICAgICAgIGlmIGNjID4gMCB0aGVuXG4gICAgICAgICAgY291bnRfb2JzIGNjXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBjY1xuICAgICAgaW5cbiAgICAgIGF1eCAoayArIDEpIChuX3N0ZXAgKyAxKSAobWF4IGxvbmdlc3Rfc3RvcnkgY2MnKVxuICAgICAgICAoaWYgY2MgPiAwIHRoZW5cbiAgICAgICAgICAgbl9ub25lbXB0eSArIDFcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgbl9ub25lbXB0eSlcbiAgICAgICAgKGxlbmd0aF9zdW0gKyBjYycpXG4gICAgICAgIChsZW5ndGhfc3F1YXJlX3N1bSArIChjYycgKiBjYycpKVxuICAgIClcbiAgaW5cbiAgbGV0IG5fc3RlcCwgbG9uZ2VzdF9zdG9yeSwgbl9ub25lbXB0eSwgbGVuZ3RoX3N1bSwgbGVuZ3RoX3NxdWFyZV9zdW0gPVxuICAgIGF1eCAwIDAgMCAwIDAgMFxuICBpblxuICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj5TdGF0czpALFwiIGluXG4gIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIGYgXCIgbnVtYmVyIG9mIHN0ZXAgICA6ICVpQCxcIiBuX3N0ZXAgaW5cbiAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgZiBcIiBsb25nZXN0IHN0b3J5ICAgIDogJWlALFwiIGxvbmdlc3Rfc3RvcnkgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGF2ZXJhZ2UgbGVuZ3RoICAgOiAlLjRnQCxcIlxuICAgICAgKGZsb2F0IGxlbmd0aF9zdW0gLy4gZmxvYXQgbl9ub25lbXB0eSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBGb3JtYXQuZnByaW50ZiBmIFwiIGdlb21ldHJpYyBtZWFuICAgOiAlLjRnQCxcIlxuICAgICAgKHNxcnQgKGZsb2F0IGxlbmd0aF9zcXVhcmVfc3VtIC8uIGZsb2F0IG5fbm9uZW1wdHkpKVxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQF1ALlwiXG4iLCJ0eXBlIHByZWRpY2F0ZV92YWx1ZSA9XG4gIHwgSW50ZXJuYWxfc3RhdGVfaXMgb2YgaW50XG4gIHwgVW5kZWZpbmVkICAoKiogdGhlIHdpcmUgZG9lcyBub3QgZXhpc3QgeWV0ICopXG4gIHwgUHJlc2VudCAgKCoqIGZvciBhZ2VudCBwcmVzZW5jZSAqKVxuICB8IEZyZWUgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuICB8IEJvdW5kX3RvIG9mIGludCAqIEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZSAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgICAoKiogZm9yIGJpbmRpbmcgc2l0ZXMgKilcblxubW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG5cbnR5cGUgcHJlZGljYXRlX2luZm8gPVxuICB8IEhlcmUgb2YgaW50XG4gIHwgQm91bmRfc2l0ZSBvZiBpbnQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICB8IEludGVybmFsX3N0YXRlIG9mIGludCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG5cbmxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gcGkgPVxuICBtYXRjaCBwaSB3aXRoXG4gIHwgSGVyZSBhZyAtPiBcIkhlcmUgXCIgXiBzdHJpbmdfb2ZfaW50IGFnXG4gIHwgQm91bmRfc2l0ZSAoYWcsIHMpIC0+XG4gICAgXCJCb3VuZF9zdGF0ZSBcIiBeIHN0cmluZ19vZl9pbnQgYWcgXiBcIiBcIiBeIHN0cmluZ19vZl9pbnQgc1xuICB8IEludGVybmFsX3N0YXRlIChhZywgcykgLT5cbiAgICBcIkludGVybmFsX3N0YXRlIFwiIF4gc3RyaW5nX29mX2ludCBhZyBeIFwiIFwiIF4gc3RyaW5nX29mX2ludCBzXG5cbm1vZHVsZSBQcmVkaWNhdGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IHByZWRpY2F0ZV9pbmZvXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCBmIHggPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyB4KVxuZW5kKVxuXG5tb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlU2V0TWFwLk1hcFxuXG5tb2R1bGUgUVByZWRpY2F0ZU1hcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmVkaWNhdGVNYXAudCBBLnRcblxuICBsZXQgZW1wdHkgbiA9IEEubWFrZSBuIFByZWRpY2F0ZU1hcC5lbXB0eVxuICBsZXQgaXRlciBmIHQgPSBBLml0ZXIgKFByZWRpY2F0ZU1hcC5pdGVyIGYpIHRcblxuICBsZXQgaGFzaCBwcmVkaWNhdGUgPVxuICAgIG1hdGNoIHByZWRpY2F0ZSB3aXRoXG4gICAgfCBIZXJlIGFnIHwgQm91bmRfc2l0ZSAoYWcsIF8pIHwgSW50ZXJuYWxfc3RhdGUgKGFnLCBfKSAtPiBhZ1xuXG4gIGxldCBsaWZ0IGYgcHJlZGljYXRlX2lkIHRhYiA9IGYgcHJlZGljYXRlX2lkIChBLmdldCB0YWIgKGhhc2ggcHJlZGljYXRlX2lkKSlcbiAgbGV0IGZpbmRfZGVmYXVsdCBkZWYgcCB0ID0gbGlmdCAoUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCBkZWYpIHAgdFxuICBsZXQgZmluZF9vcHRpb24gcCB0ID0gbGlmdCBQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcCB0XG4gIGxldCBtZW0gcCB0ID0gbGlmdCBQcmVkaWNhdGVNYXAubWVtIHAgdFxuXG4gIGxldCBhZGQgcHJlZGljYXRlX2lkIHggdGFiID1cbiAgICBsZXQgaGFzaCA9IGhhc2ggcHJlZGljYXRlX2lkIGluXG4gICAgbGV0IG9sZCA9IEEuZ2V0IHRhYiBoYXNoIGluXG4gICAgbGV0IF8gPSBBLnNldCB0YWIgaGFzaCAoUHJlZGljYXRlTWFwLmFkZCBwcmVkaWNhdGVfaWQgeCBvbGQpIGluXG4gICAgdGFiXG5cbiAgbGV0IHJlY3ljbGUgdGFiIGkgPSBBLnNldCB0YWIgaSBQcmVkaWNhdGVNYXAuZW1wdHlcbmVuZFxuXG5tb2R1bGUgTVByZWRpY2F0ZU1hcCA9IHN0cnVjdFxuICB0eXBlICdhIHQgPSAnYSBQcmVkaWNhdGVNYXAudFxuXG4gIGxldCBwcmVkaWNhdGVfbWF4IF9wYXJhbWV0ZXIgX2hhbmRsZXIgaW5mbyBlcnJvciBfbGlzdCA9IGVycm9yLCBpbmZvLCAwXG4gIGxldCBlbXB0eSBfbiA9IFByZWRpY2F0ZU1hcC5lbXB0eVxuICBsZXQgaXRlciA9IFByZWRpY2F0ZU1hcC5pdGVyXG4gIGxldCBmaW5kX2RlZmF1bHQgPSBQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0XG4gIGxldCBmaW5kX29wdGlvbiA9IFByZWRpY2F0ZU1hcC5maW5kX29wdGlvblxuICBsZXQgbWVtID0gUHJlZGljYXRlTWFwLm1lbVxuICBsZXQgYWRkID0gUHJlZGljYXRlTWFwLmFkZFxuZW5kXG5cbm1vZHVsZSBDUHJlZGljYXRlTWFwID0gTVByZWRpY2F0ZU1hcFxuIiwiKCoqXG4gICogcHJpb3JpdHkubWxcbiAgKlxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDEzLTA3LTMwIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xOSAxNDoyMToxOSBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxudHlwZSBzZWxlY3Rpb25fc3RyYXRlZ3kgPVxuICB8IEFsbF9yZW1haW5pbmdfZXZlbnRzXG4gIHwgV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzXG4gIHwgV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcblxudHlwZSB0cnlfdG9fcmVtb3ZlX2ZpcnN0ID0gTGF0ZV9ldmVudHMgfCBFYXJseV9ldmVudHNcblxudHlwZSBsZXZlbCA9XG4gIHwgSGlnaGVzdFxuICB8IEhpZ2hcbiAgfCBBYm92ZV9hdmVyYWdlXG4gIHwgQXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlXG4gIHwgTG93XG4gIHwgTG93ZXN0XG5cbmxldCB3ZWlnaHQgeCA9XG4gIG1hdGNoIHggd2l0aFxuICB8IEhpZ2hlc3QgLT4gMFxuICB8IEhpZ2ggLT4gMVxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gMlxuICB8IEF2ZXJhZ2UgLT4gM1xuICB8IEJlbGxvd19hdmVyYWdlIC0+IDRcbiAgfCBMb3cgLT4gNVxuICB8IExvd2VzdCAtPiA2XG5cbmxldCBfY29tcGFyZV9sZXZlbCBsdmwxIGx2bDIgPSBjb21wYXJlICh3ZWlnaHQgbHZsMSkgKHdlaWdodCBsdmwyKVxuXG5sZXQgbWluX2xldmVsIGEgYiA9XG4gIGlmIGNvbXBhcmUgYSBiIDw9IDAgdGhlblxuICAgIGFcbiAgZWxzZVxuICAgIGJcblxubGV0IF9tYXhfbGV2ZWwgYSBiID1cbiAgaWYgY29tcGFyZSBhIGIgPD0gMCB0aGVuXG4gICAgYlxuICBlbHNlXG4gICAgYVxuXG5sZXQgaGlnaGVzdCA9IEhpZ2hlc3RcbmxldCBoaWdoID0gSGlnaFxubGV0IGFib3ZlX2F2ZXJhZ2UgPSBBYm92ZV9hdmVyYWdlXG5sZXQgYXZlcmFnZSA9IEF2ZXJhZ2VcbmxldCBiZWxsb3dfYXZlcmFnZSA9IEJlbGxvd19hdmVyYWdlXG5sZXQgbG93ID0gTG93XG5sZXQgbG93ZXN0ID0gTG93ZXN0XG5cbmxldCBzdHJpbmdfb2ZfbGV2ZWwgbGV2ZWwgPVxuICBtYXRjaCBsZXZlbCB3aXRoXG4gIHwgSGlnaGVzdCAtPiBcImhpZ2hlc3RcIlxuICB8IEhpZ2ggLT4gXCJoaWdoXCJcbiAgfCBBYm92ZV9hdmVyYWdlIC0+IFwiYWJvdmUgYXZlcmFnZVwiXG4gIHwgQXZlcmFnZSAtPiBcImF2ZXJhZ2VcIlxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFwiYmVsbG93IGF2ZXJhZ2VcIlxuICB8IExvdyAtPiBcImxvd1wiXG4gIHwgTG93ZXN0IC0+IFwibG93ZXN0XCJcblxubGV0IGxvd2VyIGxldmVsID1cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IEhpZ2hlc3QgLT4gU29tZSBIaWdoXG4gIHwgSGlnaCAtPiBTb21lIEFib3ZlX2F2ZXJhZ2VcbiAgfCBBYm92ZV9hdmVyYWdlIC0+IFNvbWUgQXZlcmFnZVxuICB8IEF2ZXJhZ2UgLT4gU29tZSBCZWxsb3dfYXZlcmFnZVxuICB8IEJlbGxvd19hdmVyYWdlIC0+IFNvbWUgTG93XG4gIHwgTG93IC0+IFNvbWUgTG93ZXN0XG4gIHwgTG93ZXN0IC0+IE5vbmVcblxubGV0IGhpZ2hlciBsZXZlbCA9XG4gIG1hdGNoIGxldmVsIHdpdGhcbiAgfCBIaWdoZXN0IC0+IE5vbmVcbiAgfCBIaWdoIC0+IFNvbWUgSGlnaGVzdFxuICB8IEFib3ZlX2F2ZXJhZ2UgLT4gU29tZSBIaWdoXG4gIHwgQXZlcmFnZSAtPiBTb21lIEFib3ZlX2F2ZXJhZ2VcbiAgfCBCZWxsb3dfYXZlcmFnZSAtPiBTb21lIEF2ZXJhZ2VcbiAgfCBMb3cgLT4gU29tZSBCZWxsb3dfYXZlcmFnZVxuICB8IExvd2VzdCAtPiBTb21lIExvd1xuXG5tb2R1bGUgTGV2ZWxTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gIHR5cGUgdCA9IGxldmVsXG5cbiAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gIGxldCBwcmludCBmIHggPSBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgKHN0cmluZ19vZl9sZXZlbCB4KVxuZW5kKVxuXG5tb2R1bGUgTGV2ZWxNYXAgPSBMZXZlbFNldE1hcC5NYXBcblxudHlwZSBwcmlvcml0aWVzID0ge1xuICBjcmVhdGlvbjogbGV2ZWw7XG4gIHVuYmluZGluZzogbGV2ZWw7XG4gIHJlbW92YWw6IGxldmVsO1xuICBvdGhlcl9ldmVudHM6IGxldmVsO1xuICBzdWJzdGl0dXRpb246IGxldmVsO1xuICBzaWRlX2VmZmVjdHM6IGxldmVsO1xuICBjYW5kaWRhdGVfc2V0X29mX2V2ZW50czogc2VsZWN0aW9uX3N0cmF0ZWd5O1xuICB0cnlfdG9fcmVtb3ZlX2ZpcnN0OiB0cnlfdG9fcmVtb3ZlX2ZpcnN0O1xufVxuKCoqIGVhY2ggZXZlbnQgaXMgYXNzb2NpYXRlZCB3aXRoIGEgbGV2ZWwgY29ycmVzcG9uZGluZyBvZiBpdHMgYWN0aW9ucyAoaWYgbXVsdGlwbGUgYWN0aW9uLCB0aGVuLCB0aGUgbGVhc3QgY29ycmVzcG9uZGluZyBsZXZlbCBpcyBzZWxlY3RlZFxuIEV2ZW50cyB3aXRoIHRoZSBsZWFzdCBsZXZlbCBvZiBwcmlvcml0eSBhcmUgcmVtb3ZlZCBmaXJzdFxuIEFtb25nIHRoZW0sIHRoZSBjaG9pY2UgaXMgZHJpdmVuIGJ5IHRoZSBmaWVsZHMgJ2NhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzJyBhbmQgJ3RyeV90b19yZW1vdmVfZmlyc3QnICopXG5cbmxldCBjYXVzYWwgPVxuICB7XG4gICAgY3JlYXRpb24gPSBIaWdoZXN0O1xuICAgIHVuYmluZGluZyA9IEhpZ2hlc3Q7XG4gICAgcmVtb3ZhbCA9IEhpZ2hlc3Q7XG4gICAgb3RoZXJfZXZlbnRzID0gSGlnaGVzdDtcbiAgICBzdWJzdGl0dXRpb24gPSBIaWdoZXN0O1xuICAgIHNpZGVfZWZmZWN0cyA9IEhpZ2hlc3Q7XG4gICAgY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgPSBXaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHM7XG4gICAgdHJ5X3RvX3JlbW92ZV9maXJzdCA9IExhdGVfZXZlbnRzO1xuICB9XG5cbmxldCB3ZWFrID1cbiAge1xuICAgIGNyZWF0aW9uID0gSGlnaGVzdDtcbiAgICB1bmJpbmRpbmcgPSBIaWdoZXN0O1xuICAgIHJlbW92YWwgPSBIaWdoZXN0O1xuICAgIG90aGVyX2V2ZW50cyA9IEhpZ2hlc3Q7XG4gICAgc3Vic3RpdHV0aW9uID0gSGlnaDtcbiAgICBzaWRlX2VmZmVjdHMgPSBIaWdoO1xuICAgIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzID0gV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzO1xuICAgIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cztcbiAgfVxuXG5sZXQgc3Ryb25nID1cbiAge1xuICAgIGNyZWF0aW9uID0gSGlnaGVzdDtcbiAgICB1bmJpbmRpbmcgPSBIaWdoO1xuICAgIHJlbW92YWwgPSBBYm92ZV9hdmVyYWdlO1xuICAgIG90aGVyX2V2ZW50cyA9IEF2ZXJhZ2U7XG4gICAgc3Vic3RpdHV0aW9uID0gQmVsbG93X2F2ZXJhZ2U7XG4gICAgc2lkZV9lZmZlY3RzID0gTG93O1xuICAgIGNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzID0gV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzO1xuICAgIHRyeV90b19yZW1vdmVfZmlyc3QgPSBMYXRlX2V2ZW50cztcbiAgfVxuXG5sZXQgbl9zdG9yeSA9IHJlZiAxXG5sZXQgbl9icmFuY2ggPSByZWYgMVxuIiwidHlwZSBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBXZWFrIHwgU3Ryb25nIHwgQ2F1c2FsXG50eXBlIG5ld19zdG9yeSA9IHsgaWQ6IGludDsgZ3JhcGg6IEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoIH1cbnR5cGUgc3RvcnkgPSBOZXcgb2YgbmV3X3N0b3J5IHwgU2FtZV9hcyBvZiBpbnRcblxudHlwZSAnYSBvbmVfY29tcHJlc3Npb24gPSB7XG4gIGxvZ19pbmZvOiAnYSBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0O1xuICBzdG9yeV9tb2RlOiBjdXJyZW50X2NvbXByZXNzaW9uX21vZGU7XG4gIHN0b3J5OiBzdG9yeTtcbn1cblxubGV0IHN0cmluZ19vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgLT4gc1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdHJpbmdcIiwgeCkpXG5cbmxldCBpbnRfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEludCBzIC0+IHNcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgaW50XCIsIHgpKVxuXG5sZXQgbmV3X3N0b3J5X3RvX2pzb24gbmV3X3N0b3J5ID1cbiAgYEFzc29jXG4gICAgWyBcImlkXCIsIGBJbnQgbmV3X3N0b3J5LmlkOyBcImdyYXBoXCIsIEdyYXBoX2pzb24udG9fanNvbiBuZXdfc3RvcnkuZ3JhcGggXVxuXG5sZXQgbmV3X3N0b3J5X29mX2pzb24gPSBmdW5jdGlvblxuICB8IGBBc3NvYyBsIGFzIHggd2hlbiBMaXN0Lmxlbmd0aCBsID0gMiAtPlxuICAgICh0cnlcbiAgICAgICB7XG4gICAgICAgICBpZCA9IGludF9vZl9qc29uIChMaXN0LmFzc29jIFwiaWRcIiBsKTtcbiAgICAgICAgIGdyYXBoID0gR3JhcGhfanNvbi5vZl9qc29uIChMaXN0LmFzc29jIFwiZ3JhcGhcIiBsKTtcbiAgICAgICB9XG4gICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBuZXcgc3RvcnlcIiwgeCkpKVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBuZXcgc3RvcnlcIiwgeCkpXG5cbmxldCBzdG9yeV90b19qc29uIHN0b3J5ID1cbiAgbWF0Y2ggc3Rvcnkgd2l0aFxuICB8IE5ldyBuZXdfc3RvcnkgLT4gYEFzc29jIFsgXCJuZXdcIiwgbmV3X3N0b3J5X3RvX2pzb24gbmV3X3N0b3J5IF1cbiAgfCBTYW1lX2FzIGludCAtPiBgQXNzb2MgWyBcInNhbWVfYXNcIiwgYEludCBpbnQgXVxuXG5sZXQgc3Rvcnlfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIFsgKFwibmV3XCIsIG5ld19zdG9yeSkgXSAtPiBOZXcgKG5ld19zdG9yeV9vZl9qc29uIG5ld19zdG9yeSlcbiAgfCBgQXNzb2MgWyAoXCJzYW1lX2FzXCIsIGBJbnQgaW50KSBdIC0+IFNhbWVfYXMgaW50XG4gIHwgeCAtPiByYWlzZSAoWW9qc29uLkJhc2ljLlV0aWwuVHlwZV9lcnJvciAoXCJOb3QgYSBjb3JyZWN0IHN0b3J5XCIsIHgpKVxuXG5sZXQgc3RvcnlfbW9kZV90b19qc29uID0gZnVuY3Rpb25cbiAgfCBDYXVzYWwgLT4gYFN0cmluZyBcIkNhdXNhbFwiXG4gIHwgV2VhayAtPiBgU3RyaW5nIFwiV2Vha1wiXG4gIHwgU3Ryb25nIC0+IGBTdHJpbmcgXCJTdHJvbmdcIlxuXG5sZXQgc3RvcnlfbW9kZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIFwiQ2F1c2FsXCIgLT4gQ2F1c2FsXG4gIHwgYFN0cmluZyBcIldlYWtcIiAtPiBXZWFrXG4gIHwgYFN0cmluZyBcIlN0cm9uZ1wiIC0+IFN0cm9uZ1xuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBtb2RlXCIsIHgpKVxuXG5sZXQgdG9fanNvbiBsb2dfaW5mb190b19qc29uIG9uZV9jb21wcmVzc2lvbiA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJsb2dfaW5mb1wiLFxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAoVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnRvX2pzb24gbG9nX2luZm9fdG9fanNvbilcbiAgICAgICAgICAgICAoTGlzdC5yZXYgb25lX2NvbXByZXNzaW9uLmxvZ19pbmZvKSkgKTtcbiAgICAgIFwic3RvcnlfbW9kZVwiLCBzdG9yeV9tb2RlX3RvX2pzb24gb25lX2NvbXByZXNzaW9uLnN0b3J5X21vZGU7XG4gICAgICBcInN0b3J5XCIsIHN0b3J5X3RvX2pzb24gb25lX2NvbXByZXNzaW9uLnN0b3J5O1xuICAgIF1cblxubGV0IG9mX2pzb24gbG9nX2luZm9fb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYEFzc29jIGwgYXMgeCB3aGVuIExpc3QubGVuZ3RoIGwgPSAzIC0+XG4gICAgKHRyeVxuICAgICAgIHtcbiAgICAgICAgIGxvZ19pbmZvID1cbiAgICAgICAgICAgKG1hdGNoIExpc3QuYXNzb2MgXCJsb2dfaW5mb1wiIGwgd2l0aFxuICAgICAgICAgICB8IGBMaXN0IGwgLT5cbiAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8ub2ZfanNvbiBsb2dfaW5mb19vZl9qc29uKVxuICAgICAgICAgICAgICAgKExpc3QucmV2IGwpXG4gICAgICAgICAgIHwgX3kgLT5cbiAgICAgICAgICAgICByYWlzZVxuICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3JcbiAgICAgICAgICAgICAgICAgIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnkgY29tcHV0YXRpb25cIiwgeCkpKTtcbiAgICAgICAgIHN0b3J5ID0gc3Rvcnlfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInN0b3J5XCIgbCk7XG4gICAgICAgICBzdG9yeV9tb2RlID0gc3RvcnlfbW9kZV9vZl9qc29uIChMaXN0LmFzc29jIFwic3RvcnlfbW9kZVwiIGwpO1xuICAgICAgIH1cbiAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICByYWlzZVxuICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBzdG9yeSBjb21wdXRhdGlvblwiLCB4KSkpXG4gIHwgeCAtPlxuICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3Qgc3RvcnkgY29tcHV0YXRpb25cIiwgeCkpXG5cbnR5cGUgcGhhc2UgPSBTdGFydCB8IElucHJvZ3Jlc3MgfCBTdWNjZXNzIHwgRmFpbGx1cmVcblxubGV0IHN0YXJ0ID0gXCJzdGFydGluZyBjb21wdXRhdGlvblwiXG5sZXQgaW5wcm9ncmVzcyA9IFwiY29tcHV0YXRpb24gaW4gcHJvZ3Jlc3NcIlxubGV0IHN1Y2Nlc3MgPSBcImNvbXB1dGF0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHlcIlxubGV0IGZhaWxsdXJlID0gXCJjb21wdXRhdGlvbiAocGFydGlhbGx5KSBmYWlsZWRcIlxuXG5sZXQgcGhhc2VfdG9fanNvbiA9IGZ1bmN0aW9uXG4gIHwgU3RhcnQgLT4gYFN0cmluZyBzdGFydFxuICB8IElucHJvZ3Jlc3MgLT4gYFN0cmluZyBpbnByb2dyZXNzXG4gIHwgU3VjY2VzcyAtPiBgU3RyaW5nIHN1Y2Nlc3NcbiAgfCBGYWlsbHVyZSAtPiBgU3RyaW5nIGZhaWxsdXJlXG5cbmxldCBwaGFzZV9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gc3RhcnQgLT4gU3RhcnRcbiAgfCBgU3RyaW5nIHMgd2hlbiBzID0gaW5wcm9ncmVzcyAtPiBJbnByb2dyZXNzXG4gIHwgYFN0cmluZyBzIHdoZW4gcyA9IHN1Y2Nlc3MgLT4gU3VjY2Vzc1xuICB8IGBTdHJpbmcgcyB3aGVuIHMgPSBmYWlsbHVyZSAtPiBGYWlsbHVyZVxuICB8IHggLT4gcmFpc2UgKFlvanNvbi5CYXNpYy5VdGlsLlR5cGVfZXJyb3IgKFwiTm90IGEgY29ycmVjdCBwaGFzZVwiLCB4KSlcblxudHlwZSBwcm9ncmVzc19iYXIgPSB7IGJvb2w6IHN0cmluZzsgY3VycmVudDogaW50OyB0b3RhbDogaW50IH1cblxubGV0IHByb2dyZXNzX2Jhcl90b19qc29uIHByb2dyZXNzX2JhciA9XG4gIGBBc3NvY1xuICAgIFtcbiAgICAgICggXCJwcm9ncmVzc19iYXJcIixcbiAgICAgICAgYEFzc29jXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJib29sXCIsIGBTdHJpbmcgcHJvZ3Jlc3NfYmFyLmJvb2w7XG4gICAgICAgICAgICBcImN1cnJlbnRcIiwgYEludCBwcm9ncmVzc19iYXIuY3VycmVudDtcbiAgICAgICAgICAgIFwidG90YWxcIiwgYEludCBwcm9ncmVzc19iYXIudG90YWw7XG4gICAgICAgICAgXSApO1xuICAgIF1cblxubGV0IHByb2dyZXNzX2Jhcl9vZl9qc29uID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgbCBhcyB4IHdoZW4gTGlzdC5sZW5ndGggbCA9IDEgLT5cbiAgICAobWF0Y2ggTGlzdC5hc3NvYyBcInByb2dyZXNzX2JhclwiIGwgd2l0aFxuICAgIHwgYEFzc29jIGwgd2hlbiBMaXN0Lmxlbmd0aCBsID0gMyAtPlxuICAgICAgKHRyeVxuICAgICAgICAge1xuICAgICAgICAgICBib29sID0gc3RyaW5nX29mX2pzb24gKExpc3QuYXNzb2MgXCJib29sXCIgbCk7XG4gICAgICAgICAgIGN1cnJlbnQgPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcImN1cnJlbnRcIiBsKTtcbiAgICAgICAgICAgdG90YWwgPSBpbnRfb2ZfanNvbiAoTGlzdC5hc3NvYyBcInRvdGFsXCIgbCk7XG4gICAgICAgICB9XG4gICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKSlcbiAgICB8IHggLT5cbiAgICAgIHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKSlcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIGNvcnJlY3QgcHJvZ3Jlc3MgYmFyXCIsIHgpKVxuXG50eXBlICdhIG1lc3NhZ2UgPVxuICB8IFBoYXNlIG9mIHBoYXNlICogc3RyaW5nXG4gIHwgUHJvZ3Jlc3Mgb2YgcHJvZ3Jlc3NfYmFyXG4gIHwgU3Rvcnkgb2YgJ2Egb25lX2NvbXByZXNzaW9uXG5cbmxldCBtZXNzYWdlX3RvX2pzb24gPSBmdW5jdGlvblxuICB8IFBoYXNlIChwLCBtKSAtPiBgTGlzdCBbIGBTdHJpbmcgXCJQSEFTRVwiOyBwaGFzZV90b19qc29uIHA7IGBTdHJpbmcgbSBdXG4gIHwgUHJvZ3Jlc3MgcCAtPiBgTGlzdCBbIGBTdHJpbmcgXCJQUk9HUkVTU1wiOyBwcm9ncmVzc19iYXJfdG9fanNvbiBwIF1cbiAgfCBTdG9yeSBzIC0+IGBMaXN0IFsgYFN0cmluZyBcIlNUT1JZXCI7IHRvX2pzb24gKGZ1biBfIC0+IGBOdWxsKSBzIF1cblxubGV0IG1lc3NhZ2Vfb2ZfanNvbiA9IGZ1bmN0aW9uXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiUEhBU0VcIjsgcDsgYFN0cmluZyBtIF0gLT4gUGhhc2UgKHBoYXNlX29mX2pzb24gcCwgbSlcbiAgfCBgTGlzdCBbIGBTdHJpbmcgXCJQUk9HUkVTU1wiOyBwIF0gLT4gUHJvZ3Jlc3MgKHByb2dyZXNzX2Jhcl9vZl9qc29uIHApXG4gIHwgYExpc3QgWyBgU3RyaW5nIFwiU1RPUllcIjsgcyBdIC0+IFN0b3J5IChvZl9qc29uIChmdW4gXyAtPiAoKSkgcylcbiAgfCB4IC0+IHJhaXNlIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIkludmFsaWQgc3RvcnkgbWVzc2FnZVwiLCB4KSlcbiIsIigqKlxuICAqIGNmbG93X2hhbmRsZXIubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxMy0wOC0wMiBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMTkgMTQ6MzA6NDAgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGlkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIHR5cGUgQ2Zsb3dfaGFuZGxlciA9IHNpZ1xuICB0eXBlIHNvcnRfYWxnb19mb3Jfc3Rvcmllc1xuICB0eXBlIGNvbXByZXNzaW9uX21vZGVcblxuICB2YWwgZ2V0X2NhdXNhbF90cmFjZSA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuICB2YWwgZ2V0X2NhdXNhbF90cmFjZV9vbmx5IDogY29tcHJlc3Npb25fbW9kZSAtPiBib29sXG4gIHZhbCBnZXRfd2Vha19jb21wcmVzc2lvbiA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuICB2YWwgZ2V0X3N0cm9uZ19jb21wcmVzc2lvbiA6IGNvbXByZXNzaW9uX21vZGUgLT4gYm9vbFxuXG4gIHR5cGUgcGFyYW1ldGVyID0ge1xuICAgIGNhY2hlX3NpemU6IGludCBvcHRpb247XG4gICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlOiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb247XG4gICAgY29tcHJlc3Npb25fbW9kZTogY29tcHJlc3Npb25fbW9kZTtcbiAgICBwcmlvcml0aWVzX3dlYWs6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19zdHJvbmc6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19jYXVzYWw6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgY29tcHV0ZV9hbGxfc3RvcmllczogYm9vbDtcbiAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXM6IHNvcnRfYWxnb19mb3Jfc3RvcmllcztcbiAgICBsb2dnZXJfZXJyOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX3Byb2ZpbGluZzogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9vdXQ6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfc2VydmVyOiBMb2dnZXJzLnQ7XG4gICAganNvbl9idWZmZXI6XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSBGaWZvLnQgcmVmIG9wdGlvbjtcbiAgICBsb2dfc3RlcDogYm9vbDtcbiAgICBkZWJ1Z19tb2RlOiBib29sO1xuICAgIGxvZ2dlcl9zdGVwOiBMb2dnZXJzLnQ7XG4gICAga2FzYTogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycztcbiAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzOiBib29sO1xuICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyOiBpbnQgb3B0aW9uO1xuICAgIHRpbWVfaW5kZXBlbmRlbnQ6IGJvb2w7XG4gICAgYmxhY2tsaXN0X2V2ZW50czogYm9vbDtcbiAgICBzZXJ2ZXI6IGJvb2w7XG4gICAgaXNfc2VydmVyX2NoYW5uZWxfb246IGJvb2w7XG4gICAgZHVtcDogc3RyaW5nIC0+IHVuaXQ7XG4gIH1cbiAgKCoqIGEgc3RydWN0IHdoaWNoIGNvbnRhaW5zIHBhcmFtZXRlcml6YWJsZSBvcHRpb25zICopXG5cbiAgdmFsIGdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgOlxuICAgIHBhcmFtZXRlciAtPiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb25cblxuICB0eXBlIGhhbmRsZXIgPSB7XG4gICAgKCpoYW5kbGVyIHRvIGludGVycHJldCBhYnN0cmFjdCB2YWx1ZXMqKVxuICAgIGVudjogTW9kZWwudDtcbiAgICBydWxlX25hbWVfY2FjaGU6IHN0cmluZyBhcnJheTtcbiAgICBhZ2VudF9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgc3RlcHNfYnlfY29sdW1uOlxuICAgICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICAgIFByZWRpY2F0ZV9tYXBzLlFQcmVkaWNhdGVNYXAudDtcbiAgfVxuXG4gIHR5cGUgJ2EgemVyb2FyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2FcblxuICB0eXBlICgnYSwgJ2IpIHVuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdiXG5cbiAgdHlwZSAoJ2EsICdiLCAnYykgYmluYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2NcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgJ2MgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2RcblxuICB0eXBlICgnYSwgJ2IsICdjLCAnZCwgJ2UpIHF1YXRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgJ2QgLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvICogJ2VcblxuICB2YWwgZG9fbm90X2JvdW5kX2l0dGVyYXRpb25zIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2l0dGVyYXRpb25fYm91bmQgOiBwYXJhbWV0ZXIgLT4gaW50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIDogcGFyYW1ldGVyIC0+IGludCBvcHRpb25cbiAgdmFsIHNldF9maXJzdF9zdG9yeV9wZXJfb2JzIDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG5cbiAgdmFsIGJ1aWxkX3BhcmFtZXRlciA6XG4gICAgY2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuY2FsbGVkX2Zyb20gLT5cbiAgICA/c2VuZF9tZXNzYWdlOihzdHJpbmcgLT4gdW5pdCkgLT5cbiAgICBub25lOmJvb2wgLT5cbiAgICB3ZWFrOmJvb2wgLT5cbiAgICBzdHJvbmc6Ym9vbCAtPlxuICAgIHVuaXQgLT5cbiAgICBwYXJhbWV0ZXJcblxuICB2YWwgc3RyaW5nX29mX2V4biA6IGV4biAtPiBzdHJpbmcgb3B0aW9uXG4gIHZhbCBpc19zZXJ2ZXJfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfY29tcHJlc3Npb25fd2VhayA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9jb21wcmVzc2lvbl9zdHJvbmcgOiBwYXJhbWV0ZXIgLT4gcGFyYW1ldGVyXG4gIHZhbCBzZXRfY29tcHJlc3Npb25fbm9uZSA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9wcmlvcml0aWVzIDogcGFyYW1ldGVyIC0+IFByaW9yaXR5LnByaW9yaXRpZXMgb3B0aW9uXG4gIHZhbCBnZXRfYWxsX3N0b3JpZXNfcGVyX29icyA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfbG9nX3N0ZXAgOiBwYXJhbWV0ZXIgLT4gYm9vbCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9sb2dfc3RlcCA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfZGVidWdnaW5nX21vZGUgOiBwYXJhbWV0ZXIgLT4gYm9vbCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9kZWJ1Z2dpbmdfbW9kZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBnZXRfcHJvZmlsaW5nX2xvZ2dlciA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIGdldF9zZXJ2ZXJfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBwYXJhbWV0ZXJcbiAgdmFsIGlzX3NlcnZlcl9jaGFubmVsX29uIDogcGFyYW1ldGVyIC0+IGJvb2xcbiAgdmFsIGdldF9sb2dnZXIgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50XG4gIHZhbCBzZXRfbG9nZ2VyIDogcGFyYW1ldGVyIC0+IExvZ2dlcnMudCAtPiBwYXJhbWV0ZXJcbiAgdmFsIGdldF9vdXRfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnRcbiAgdmFsIHNldF9vdXRfY2hhbm5lbCA6IHBhcmFtZXRlciAtPiBMb2dnZXJzLnQgLT4gcGFyYW1ldGVyXG4gIHZhbCBnZXRfZGVidWdnaW5nX2NoYW5uZWwgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50XG4gIHZhbCBzZXRfZGVidWdnaW5nX2NoYW5uZWwgOiBwYXJhbWV0ZXIgLT4gTG9nZ2Vycy50IC0+IHBhcmFtZXRlclxuICB2YWwgZ2V0X2thc2FfcGFyYW1ldGVycyA6IHBhcmFtZXRlciAtPiBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5wYXJhbWV0ZXJzXG5cbiAgdmFsIHNldF9rYXNhX3BhcmFtZXRlcnMgOlxuICAgIFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnBhcmFtZXRlcnMgLT4gcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBkb193ZV91c2VfYnVja2V0X3NvcnQgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgdXNlX2J1Y2tldF9zb3J0IDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgdXNlX2Z1c2lvbl9zb3J0IDogcGFyYW1ldGVyIC0+IHBhcmFtZXRlclxuICB2YWwgYWx3YXlzX2Rpc2FtYmlndWF0ZSA6IHBhcmFtZXRlciAtPiBib29sXG4gIHZhbCBzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSA6IHBhcmFtZXRlciAtPiBib29sIC0+IHBhcmFtZXRlclxuICB2YWwgaW5pdF9oYW5kbGVyIDogTW9kZWwudCAtPiBoYW5kbGVyXG4gIHZhbCBzdHJpbmdfb2ZfcnVsZV9pZCA6IGhhbmRsZXIgLT4gaW50IC0+IHN0cmluZ1xuICB2YWwgc3RyaW5nX29mX2FnZW50X2lkIDogaGFuZGxlciAtPiBpbnQgLT4gc3RyaW5nXG5cbiAgdmFsIGdldF9wcmVkaWNhdGVfbWFwIDpcbiAgICBoYW5kbGVyIC0+XG4gICAgKGludCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3RcbiAgICBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLnRcblxuICB2YWwgZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgZ2V0X2JsYWNrbGlzdF9ldmVudHMgOiBwYXJhbWV0ZXIgLT4gYm9vbFxuICB2YWwgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+IHN0cmluZyAtPiB1bml0XG4gIHZhbCByZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+IHVuaXRcbiAgdmFsIHNhdmVfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+IGJvb2wgKiBpbnQgKiBpbnQgKiBpbnQgLT4gdW5pdFxuICB2YWwgcmVzZXRfcHJvZ3Jlc3NfYmFyIDogcGFyYW1ldGVyIC0+IHVuaXRcbiAgdmFsIHNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgOiBwYXJhbWV0ZXIgLT4gKHN0cmluZyAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcbiAgdmFsIHNldF9yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIDogcGFyYW1ldGVyIC0+ICh1bml0IC0+IHVuaXQpIC0+IHBhcmFtZXRlclxuXG4gIHZhbCBzZXRfc2F2ZV9wcm9ncmVzc19iYXIgOlxuICAgIHBhcmFtZXRlciAtPiAoYm9vbCAqIGludCAqIGludCAqIGludCAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcblxuICB2YWwgc2V0X3Jlc2V0X3Byb2dyZXNzX2JhciA6IHBhcmFtZXRlciAtPiAodW5pdCAtPiB1bml0KSAtPiBwYXJhbWV0ZXJcblxuICB2YWwgc2F2ZV9lcnJvcl9sb2cgOlxuICAgIHBhcmFtZXRlciAtPiBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIgLT4gdW5pdFxuXG4gIHZhbCBzZXRfc2F2ZV9lcnJvcl9sb2cgOlxuICAgIHBhcmFtZXRlciAtPlxuICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIubWV0aG9kX2hhbmRsZXIgLT4gdW5pdCkgLT5cbiAgICBwYXJhbWV0ZXJcblxuICB2YWwgcHVzaF9qc29uIDpcbiAgICBwYXJhbWV0ZXIgLT4gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBTdG9yeV9qc29uLm1lc3NhZ2UgLT4gdW5pdFxuXG4gIHZhbCBwb3BfanNvbiA6XG4gICAgcGFyYW1ldGVyIC0+IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gU3RvcnlfanNvbi5tZXNzYWdlIG9wdGlvblxuZW5kXG5cbm1vZHVsZSBDZmxvd19oYW5kbGVyIDogQ2Zsb3dfaGFuZGxlciA9IHN0cnVjdFxuICB0eXBlIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEJ1Y2tldCB8IEZ1c2lvblxuXG4gIHR5cGUgY29tcHJlc3Npb25fbW9kZSA9IHtcbiAgICBjYXVzYWxfdHJhY2U6IGJvb2w7XG4gICAgd2Vha19jb21wcmVzc2lvbjogYm9vbDtcbiAgICBzdHJvbmdfY29tcHJlc3Npb246IGJvb2w7XG4gIH1cblxuICBsZXQgZ2V0X2NhdXNhbF90cmFjZSB4ID0geC5jYXVzYWxfdHJhY2VcbiAgbGV0IGdldF9jYXVzYWxfdHJhY2Vfb25seSB4ID0gbm90ICh4LndlYWtfY29tcHJlc3Npb24gfHwgeC5zdHJvbmdfY29tcHJlc3Npb24pXG4gIGxldCBnZXRfd2Vha19jb21wcmVzc2lvbiB4ID0geC53ZWFrX2NvbXByZXNzaW9uXG4gIGxldCBnZXRfc3Ryb25nX2NvbXByZXNzaW9uIHggPSB4LnN0cm9uZ19jb21wcmVzc2lvblxuXG4gIHR5cGUgcGFyYW1ldGVyID0ge1xuICAgIGNhY2hlX3NpemU6IGludCBvcHRpb247XG4gICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlOiBTdG9yeV9qc29uLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBvcHRpb247XG4gICAgY29tcHJlc3Npb25fbW9kZTogY29tcHJlc3Npb25fbW9kZTtcbiAgICBwcmlvcml0aWVzX3dlYWs6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19zdHJvbmc6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgcHJpb3JpdGllc19jYXVzYWw6IFByaW9yaXR5LnByaW9yaXRpZXM7XG4gICAgY29tcHV0ZV9hbGxfc3RvcmllczogYm9vbDtcbiAgICBzb3J0X2FsZ29fZm9yX3N0b3JpZXM6IHNvcnRfYWxnb19mb3Jfc3RvcmllcztcbiAgICBsb2dnZXJfZXJyOiBMb2dnZXJzLnQ7XG4gICAgbG9nZ2VyX3Byb2ZpbGluZzogTG9nZ2Vycy50O1xuICAgIGxvZ2dlcl9vdXQ6IExvZ2dlcnMudDtcbiAgICBsb2dnZXJfc2VydmVyOiBMb2dnZXJzLnQ7XG4gICAganNvbl9idWZmZXI6XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFN0b3J5X2pzb24ubWVzc2FnZSBGaWZvLnQgcmVmIG9wdGlvbjtcbiAgICBsb2dfc3RlcDogYm9vbDtcbiAgICBkZWJ1Z19tb2RlOiBib29sO1xuICAgIGxvZ2dlcl9zdGVwOiBMb2dnZXJzLnQ7XG4gICAga2FzYTogUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucGFyYW1ldGVycztcbiAgICBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzOiBib29sO1xuICAgIGJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyOiBpbnQgb3B0aW9uO1xuICAgIHRpbWVfaW5kZXBlbmRlbnQ6IGJvb2w7XG4gICAgYmxhY2tsaXN0X2V2ZW50czogYm9vbDtcbiAgICBzZXJ2ZXI6IGJvb2w7XG4gICAgaXNfc2VydmVyX2NoYW5uZWxfb246IGJvb2w7XG4gICAgZHVtcDogc3RyaW5nIC0+IHVuaXQ7XG4gIH1cblxuICBsZXQgZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgIHBhcmFtZXRlci5jdXJyZW50X2NvbXByZXNzaW9uX21vZGVcblxuICBsZXQgYnVpbGRfcGFyYW1ldGVyIH5jYWxsZWRfZnJvbVxuICAgICAgPyhzZW5kX21lc3NhZ2UgPVxuICAgICAgICBmdW4geCAtPlxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIgXCIlc1wiIHg7XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIExvZ2dlcnMuZHVtbXlfdHh0X2xvZ2dlcikgfm5vbmUgfndlYWsgfnN0cm9uZyAoKVxuICAgICAgPVxuICAgIGxldCAoIHNlcnZlcixcbiAgICAgICAgICBvdXRfc2VydmVyLFxuICAgICAgICAgIG91dF9jaGFubmVsLFxuICAgICAgICAgIG91dF9jaGFubmVsX2VycixcbiAgICAgICAgICBvdXRfY2hhbm5lbF9wcm9maWxpbmcsXG4gICAgICAgICAgbG9nX3N0ZXBfY2hhbm5lbCApID1cbiAgICAgIG1hdGNoIGNhbGxlZF9mcm9tIHdpdGhcbiAgICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIC0+XG4gICAgICAgICggdHJ1ZSxcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fY2hhbm5lbCB+bW9kZTpMb2dnZXJzLkpzb24gc3Rkb3V0LFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9pbmZpbml0ZV9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9pbmZpbml0ZV9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9jaXJjdWxhcl9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MICgpLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9jaXJjdWxhcl9idWZmZXIgfm1vZGU6TG9nZ2Vycy5IVE1MX1RhYnVsYXIgKCkgKVxuICAgICAgfCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5LYVNhIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuS2FTaW1cbiAgICAgIHwgUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuSW50ZXJuYWxpc2VkIC0+XG4gICAgICAgIGxldCBjaGFubmVsID0gS2FwcGFfZmlsZXMub3Blbl9icmFuY2hfYW5kX2N1dF9lbmdpbmVfcHJvZmlsaW5nICgpIGluXG4gICAgICAgICggZmFsc2UsXG4gICAgICAgICAgTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyLFxuICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXIgRm9ybWF0LmVycl9mb3JtYXR0ZXIsXG4gICAgICAgICAgTG9nZ2Vycy5vcGVuX2xvZ2dlcl9mcm9tX2Zvcm1hdHRlciBGb3JtYXQuZXJyX2Zvcm1hdHRlcixcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyXG4gICAgICAgICAgICAoRm9ybWF0LmZvcm1hdHRlcl9vZl9vdXRfY2hhbm5lbCBjaGFubmVsKSxcbiAgICAgICAgICBMb2dnZXJzLm9wZW5fbG9nZ2VyX2Zyb21fZm9ybWF0dGVyIEZvcm1hdC5zdGRfZm9ybWF0dGVyIClcbiAgICBpblxuICAgIHtcbiAgICAgIHNlcnZlcjtcbiAgICAgIGlzX3NlcnZlcl9jaGFubmVsX29uID0gc2VydmVyO1xuICAgICAgY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gTm9uZTtcbiAgICAgIHByaW9yaXRpZXNfd2VhayA9IFByaW9yaXR5LndlYWs7XG4gICAgICBwcmlvcml0aWVzX3N0cm9uZyA9IFByaW9yaXR5LnN0cm9uZztcbiAgICAgIHByaW9yaXRpZXNfY2F1c2FsID0gUHJpb3JpdHkuY2F1c2FsO1xuICAgICAgY29tcHV0ZV9hbGxfc3RvcmllcyA9IGZhbHNlO1xuICAgICAgc29ydF9hbGdvX2Zvcl9zdG9yaWVzID0gQnVja2V0O1xuICAgICAgbG9nZ2VyX3NlcnZlciA9IG91dF9zZXJ2ZXI7XG4gICAgICBsb2dnZXJfb3V0ID0gb3V0X2NoYW5uZWw7XG4gICAgICBsb2dnZXJfZXJyID0gb3V0X2NoYW5uZWxfZXJyO1xuICAgICAgbG9nZ2VyX3Byb2ZpbGluZyA9IG91dF9jaGFubmVsX3Byb2ZpbGluZztcbiAgICAgIGpzb25fYnVmZmVyID0gTm9uZTtcbiAgICAgIGNvbXByZXNzaW9uX21vZGUgPVxuICAgICAgICB7XG4gICAgICAgICAgY2F1c2FsX3RyYWNlID0gbm9uZTtcbiAgICAgICAgICB3ZWFrX2NvbXByZXNzaW9uID0gd2VhaztcbiAgICAgICAgICBzdHJvbmdfY29tcHJlc3Npb24gPSBzdHJvbmc7XG4gICAgICAgIH07XG4gICAgICBjYWNoZV9zaXplID0gUGFyYW1ldGVyLmdldF9jYWNoZV9zaXplICgpO1xuICAgICAgZGVidWdfbW9kZSA9IGZhbHNlO1xuICAgICAgbG9nX3N0ZXAgPSB0cnVlO1xuICAgICAgbG9nZ2VyX3N0ZXAgPSBsb2dfc3RlcF9jaGFubmVsO1xuICAgICAga2FzYSA9IFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3BhcmFtZXRlcnMgfmNhbGxlZF9mcm9tICgpO1xuICAgICAgYWx3YXlzX2Rpc2FtYmlndWF0ZV9pbml0aWFsX3N0YXRlcyA9IHRydWU7XG4gICAgICBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IE5vbmU7XG4gICAgICB0aW1lX2luZGVwZW5kZW50ID0gIVBhcmFtZXRlci50aW1lX2luZGVwZW5kZW50O1xuICAgICAgYmxhY2tsaXN0X2V2ZW50cyA9ICFQYXJhbWV0ZXIuYmxhY2tsaXN0X2V2ZW50cztcbiAgICAgIGR1bXAgPSBzZW5kX21lc3NhZ2U7XG4gICAgfVxuXG4gIGxldCBzZXRfY29tcHJlc3Npb25fd2VhayBwID1cbiAgICB7IHAgd2l0aCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgPSBTb21lIFN0b3J5X2pzb24uV2VhayB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl9zdHJvbmcgcCA9XG4gICAgeyBwIHdpdGggY3VycmVudF9jb21wcmVzc2lvbl9tb2RlID0gU29tZSBTdG9yeV9qc29uLlN0cm9uZyB9XG5cbiAgbGV0IHNldF9jb21wcmVzc2lvbl9ub25lIHAgPVxuICAgIHsgcCB3aXRoIGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSA9IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgfVxuXG4gIHR5cGUgaGFuZGxlciA9IHtcbiAgICBlbnY6IE1vZGVsLnQ7XG4gICAgcnVsZV9uYW1lX2NhY2hlOiBzdHJpbmcgYXJyYXk7XG4gICAgYWdlbnRfbmFtZV9jYWNoZTogc3RyaW5nIGFycmF5O1xuICAgIHN0ZXBzX2J5X2NvbHVtbjpcbiAgICAgIChpbnQgKiBQcmVkaWNhdGVfbWFwcy5wcmVkaWNhdGVfdmFsdWUgKiBib29sKSBsaXN0XG4gICAgICBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLnQ7XG4gIH1cblxuICB0eXBlICdhIHplcm9hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdhXG5cbiAgdHlwZSAoJ2EsICdiKSB1bmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gKiAnYlxuXG4gIHR5cGUgKCdhLCAnYiwgJ2MpIGJpbmFyeSA9XG4gICAgcGFyYW1ldGVyIC0+XG4gICAgaGFuZGxlciAtPlxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gLT5cbiAgICBFeGNlcHRpb24ubWV0aG9kX2hhbmRsZXIgLT5cbiAgICAnYSAtPlxuICAgICdiIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdjXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkgPVxuICAgIHBhcmFtZXRlciAtPlxuICAgIGhhbmRsZXIgLT5cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyIC0+XG4gICAgJ2EgLT5cbiAgICAnYiAtPlxuICAgICdjIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdkXG5cbiAgdHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlKSBxdWF0ZXJuYXJ5ID1cbiAgICBwYXJhbWV0ZXIgLT5cbiAgICBoYW5kbGVyIC0+XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICdhIC0+XG4gICAgJ2IgLT5cbiAgICAnYyAtPlxuICAgICdkIC0+XG4gICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqICdlXG5cbiAgbGV0IGluaXRfaGFuZGxlciBlbnYgPVxuICAgIGxldCBuX3J1bGVzID0gTW9kZWwubmJfcnVsZXMgZW52IGluXG4gICAgbGV0IHJ1bGVfbmFtZV9jYWNoZSA9IEFycmF5Lm1ha2Ugbl9ydWxlcyBcIlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZGVsLmZvbGRfcnVsZXNcbiAgICAgICAgKGZ1biB4ICgpIHIgLT5cbiAgICAgICAgICBydWxlX25hbWVfY2FjaGUuKHgpIDwtXG4gICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYVwiXG4gICAgICAgICAgICAgIChNb2RlbC5wcmludF9hc3RfcnVsZSB+bm9Db3VudGVyczpmYWxzZSB+ZW52KVxuICAgICAgICAgICAgICByLlByaW1pdGl2ZXMuc3ludGFjdGljX3J1bGUpXG4gICAgICAgICgpIGVudlxuICAgIGluXG4gICAgbGV0IG5fYWdlbnRzID0gU2lnbmF0dXJlLnNpemUgKE1vZGVsLnNpZ25hdHVyZXMgZW52KSBpblxuICAgIGxldCBhZ2VudF9uYW1lX2NhY2hlID1cbiAgICAgIEFycmF5LmluaXQgbl9hZ2VudHMgKGZ1biB4IC0+XG4gICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFcIiAoTW9kZWwucHJpbnRfYWdlbnQgfmVudikgeClcbiAgICBpblxuICAgIGxldCBzdGVwc19ieV9jb2x1bW4gPSBQcmVkaWNhdGVfbWFwcy5RUHJlZGljYXRlTWFwLmVtcHR5IDAgaW5cbiAgICB7IGVudjsgcnVsZV9uYW1lX2NhY2hlOyBhZ2VudF9uYW1lX2NhY2hlOyBzdGVwc19ieV9jb2x1bW4gfVxuXG4gIGxldCBzdHJpbmdfb2ZfZXhuIF94ID0gU29tZSBcIlwiXG5cbiAgbGV0IGdldF9wcmlvcml0aWVzIHBhcmFtZXRlciA9XG4gICAgbWF0Y2ggcGFyYW1ldGVyLmN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgU3RvcnlfanNvbi5XZWFrIC0+IFNvbWUgcGFyYW1ldGVyLnByaW9yaXRpZXNfd2Vha1xuICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPiBTb21lIHBhcmFtZXRlci5wcmlvcml0aWVzX3N0cm9uZ1xuICAgIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPiBTb21lIHBhcmFtZXRlci5wcmlvcml0aWVzX2NhdXNhbFxuXG4gIGxldCBzZXRfZmlyc3Rfc3RvcnlfcGVyX29icyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggY29tcHV0ZV9hbGxfc3RvcmllcyA9IGZhbHNlIH1cblxuICBsZXQgc2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIGNvbXB1dGVfYWxsX3N0b3JpZXMgPSB0cnVlIH1cblxuICBsZXQgZ2V0X2FsbF9zdG9yaWVzX3Blcl9vYnMgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmNvbXB1dGVfYWxsX3N0b3JpZXNcbiAgbGV0IGdldF9kZWJ1Z2dpbmdfbW9kZSBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuZGVidWdfbW9kZVxuICBsZXQgc2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciBib29sID0geyBwYXJhbWV0ZXIgd2l0aCBkZWJ1Z19tb2RlID0gYm9vbCB9XG4gIGxldCBnZXRfbG9nX3N0ZXAgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ19zdGVwXG4gIGxldCBzZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGJvb2wgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ19zdGVwID0gYm9vbCB9XG4gIGxldCBnZXRfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfc3RlcFxuICBsZXQgc2V0X2xvZ2dlciBwYXJhbWV0ZXIgZm10ID0geyBwYXJhbWV0ZXIgd2l0aCBsb2dnZXJfc3RlcCA9IGZtdCB9XG4gIGxldCBnZXRfb3V0X2NoYW5uZWwgcGFyYW1ldGVyID0gcGFyYW1ldGVyLmxvZ2dlcl9vdXRcbiAgbGV0IHNldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIgZm10ID0geyBwYXJhbWV0ZXIgd2l0aCBsb2dnZXJfb3V0ID0gZm10IH1cbiAgbGV0IGdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIubG9nZ2VyX2VyclxuICBsZXQgc2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlciBmbXQgPSB7IHBhcmFtZXRlciB3aXRoIGxvZ2dlcl9lcnIgPSBmbXQgfVxuICBsZXQgZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIua2FzYVxuXG4gIGxldCBzZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlciBwYXJhbWV0ZXInID1cbiAgICB7IHBhcmFtZXRlcicgd2l0aCBrYXNhID0gcGFyYW1ldGVyIH1cblxuICBsZXQgZG9fd2VfdXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlciA9IHBhcmFtZXRlci5zb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXRcblxuICBsZXQgdXNlX2J1Y2tldF9zb3J0IHBhcmFtZXRlciA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBzb3J0X2FsZ29fZm9yX3N0b3JpZXMgPSBCdWNrZXQgfVxuXG4gIGxldCB1c2VfZnVzaW9uX3NvcnQgcGFyYW1ldGVyID1cbiAgICB7IHBhcmFtZXRlciB3aXRoIHNvcnRfYWxnb19mb3Jfc3RvcmllcyA9IEZ1c2lvbiB9XG5cbiAgbGV0IGFsd2F5c19kaXNhbWJpZ3VhdGUgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIuYWx3YXlzX2Rpc2FtYmlndWF0ZV9pbml0aWFsX3N0YXRlc1xuXG4gIGxldCBzZXRfYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXIgYm9vbCA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBhbHdheXNfZGlzYW1iaWd1YXRlX2luaXRpYWxfc3RhdGVzID0gYm9vbCB9XG5cbiAgbGV0IGRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyBwYXJhbWV0ZXIgPVxuICAgIHsgcGFyYW1ldGVyIHdpdGggYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgPSBOb25lIH1cblxuICBsZXQgc2V0X2l0dGVyYXRpb25fYm91bmQgcGFyYW1ldGVyIGludCA9XG4gICAgeyBwYXJhbWV0ZXIgd2l0aCBib3VuZF9vbl9pdHRlcmF0aW9uX251bWJlciA9IFNvbWUgaW50IH1cblxuICBsZXQgZ2V0X2JvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmJvdW5kX29uX2l0dGVyYXRpb25fbnVtYmVyXG5cbiAgbGV0IGdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfcHJvZmlsaW5nXG4gIGxldCBzdHJpbmdfb2ZfcnVsZV9pZCBoYW5kbGVyIGkgPSBoYW5kbGVyLnJ1bGVfbmFtZV9jYWNoZS4oaSlcbiAgbGV0IHN0cmluZ19vZl9hZ2VudF9pZCBoYW5kbGVyIGkgPSBoYW5kbGVyLmFnZW50X25hbWVfY2FjaGUuKGkpXG4gIGxldCBnZXRfcHJlZGljYXRlX21hcCBoYW5kbGVyID0gaGFuZGxlci5zdGVwc19ieV9jb2x1bW5cbiAgbGV0IGdldF9pc190aW1lX2luZGVwZW5kZW50IHBhcmFtZXRlciA9IHBhcmFtZXRlci50aW1lX2luZGVwZW5kZW50XG4gIGxldCBnZXRfYmxhY2tsaXN0X2V2ZW50cyBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXIuYmxhY2tsaXN0X2V2ZW50c1xuICBsZXQgaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyID0gcGFyYW1ldGVyLnNlcnZlclxuICBsZXQgZ2V0X3NlcnZlcl9jaGFubmVsIHBhcmFtZXRlciA9IHBhcmFtZXRlci5sb2dnZXJfc2VydmVyXG5cbiAgbGV0IHNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXIgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBsb2dnZXJfc2VydmVyID0gTG9nZ2Vycy5kdW1teV90eHRfbG9nZ2VyO1xuICAgICAgaXNfc2VydmVyX2NoYW5uZWxfb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgbGV0IGlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlciA9IHBhcmFtZXRlci5pc19zZXJ2ZXJfY2hhbm5lbF9vblxuXG4gIGxldCBzYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIHggPVxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfY3VycmVudF9waGFzZV90aXRsZSB4XG5cbiAgbGV0IGR1bXBfanNvbiBwYXJhbWV0ZXIgbWVzc2FnZSA9XG4gICAgaWYgaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgIHBhcmFtZXRlci5kdW1wXG4gICAgICAgIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChTdG9yeV9qc29uLm1lc3NhZ2VfdG9fanNvbiBtZXNzYWdlKSlcblxuICBsZXQgc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIHggPVxuICAgIGxldCBiLCBpLCBfaiwgbl9zdG9yaWVzID0geCBpblxuICAgIGxldCAoKSA9XG4gICAgICBkdW1wX2pzb24gcGFyYW1ldGVyXG4gICAgICAgIChTdG9yeV9qc29uLlByb2dyZXNzXG4gICAgICAgICAgIHtcbiAgICAgICAgICAgICBTdG9yeV9qc29uLmJvb2wgPVxuICAgICAgICAgICAgICAgKGlmIGIgdGhlblxuICAgICAgICAgICAgICAgICAgXCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBcImZhbHNlXCIpO1xuICAgICAgICAgICAgIFN0b3J5X2pzb24uY3VycmVudCA9IGk7XG4gICAgICAgICAgICAgU3RvcnlfanNvbi50b3RhbCA9IG5fc3RvcmllcztcbiAgICAgICAgICAgfSlcbiAgICBpblxuICAgIHBhcmFtZXRlci5rYXNhLlJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLnNhdmVfcHJvZ3Jlc3NfYmFyIHhcblxuICBsZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcucmVzZXRfcHJvZ3Jlc3NfYmFyICgpXG5cbiAgbGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyID1cbiAgICBwYXJhbWV0ZXIua2FzYS5SZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlICgpXG5cbiAgbGV0IHNldF9zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtZXRlci5rYXNhIHdpdGhcbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBmO1xuICAgICAgICB9O1xuICAgIH1cblxuICBsZXQgc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIGYgPVxuICAgIHtcbiAgICAgIHBhcmFtZXRlciB3aXRoXG4gICAgICBrYXNhID1cbiAgICAgICAge1xuICAgICAgICAgIHBhcmFtZXRlci5rYXNhIHdpdGhcbiAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlID0gZjtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgbGV0IHNldF9zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgZiA9XG4gICAge1xuICAgICAgcGFyYW1ldGVyIHdpdGhcbiAgICAgIGthc2EgPVxuICAgICAgICB7IHBhcmFtZXRlci5rYXNhIHdpdGggUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9wcm9ncmVzc19iYXIgPSBmIH07XG4gICAgfVxuXG4gIGxldCBzZXRfcmVzZXRfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9XG4gICAgICAgIHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5yZXNldF9wcm9ncmVzc19iYXIgPSBmIH07XG4gICAgfVxuXG4gIGxldCBzYXZlX2Vycm9yX2xvZyBwYXJhbWV0ZXIgeCA9XG4gICAgcGFyYW1ldGVyLmthc2EuUmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuc2F2ZV9lcnJvcl9saXN0IHhcblxuICBsZXQgc2V0X3NhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciBmID1cbiAgICB7XG4gICAgICBwYXJhbWV0ZXIgd2l0aFxuICAgICAga2FzYSA9IHsgcGFyYW1ldGVyLmthc2Egd2l0aCBSZW1hbmVudF9wYXJhbWV0ZXJzX3NpZy5zYXZlX2Vycm9yX2xpc3QgPSBmIH07XG4gICAgfVxuXG4gIGxldCBwdXNoX2pzb24gcGFyYW1ldGVyIGpzb24gPVxuICAgIG1hdGNoIHBhcmFtZXRlci5qc29uX2J1ZmZlciB3aXRoXG4gICAgfCBOb25lIC0+IGR1bXBfanNvbiBwYXJhbWV0ZXIganNvblxuICAgIHwgU29tZSByZWYgLT4gcmVmIDo9IEZpZm8ucHVzaCBqc29uICFyZWZcblxuICBsZXQgcG9wX2pzb24gcGFyYW1ldGVyID1cbiAgICBtYXRjaCBwYXJhbWV0ZXIuanNvbl9idWZmZXIgd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIHJlZiAtPlxuICAgICAgbGV0IGZpZm8sIGVsdF9vcHQgPSBGaWZvLnBvcCAhcmVmIGluXG4gICAgICBsZXQgKCkgPSByZWYgOj0gZmlmbyBpblxuICAgICAgZWx0X29wdFxuZW5kXG4iLCIoKipcbiAgKiBrYXBwYV9pbnN0YW50aWF0aW9uLm1sXG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogQ3JlYXRpb246IDI5LzA4LzIwMTFcbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogMDIvMDgvMjAxNVxuICAqICpcbiAgKiBTb21lIHBhcmFtZXRlcnMgcmVmZXJlbmNlcyBjYW4gYmUgdHVuZWQgdGhhbmtzIHRvIGNvbW1hbmQtbGluZSBvcHRpb25zXG4gICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICpcbiAgKiBDb3B5cmlnaHQgMjAxMSwyMDEyLDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5cbmxldCBjb21wb3NlX3dpdGhfaGFuZGxlciBmIGcgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeCA9XG4gIGxldCBlcnJvciwgeSA9IGcgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgeCBpblxuICBmIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHlcblxubW9kdWxlIFAgPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzXG5cbm1vZHVsZSB0eXBlIENmbG93X3NpZ25hdHVyZSA9IHNpZ1xuICBtb2R1bGUgSCA6IENmbG93X2hhbmRsZXIuQ2Zsb3dfaGFuZGxlclxuXG4gIHR5cGUgYWdlbnRfaWQgPSBpbnRcblxuICBtb2R1bGUgQWdlbnRJZFNldCA6IFNldE1hcC5TZXQgd2l0aCB0eXBlIGVsdCA9IGFnZW50X2lkXG5cbiAgdHlwZSBpbnRlcm5hbF9zdGF0ZSA9IGludFxuICB0eXBlIHNpZGVfZWZmZWN0ID0gSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgbGlzdFxuXG4gIHZhbCBlbXB0eV9zaWRlX2VmZmVjdCA6IHNpZGVfZWZmZWN0XG5cbiAgdmFsIGFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlIDpcbiAgICBJbnN0YW50aWF0aW9uLmJpbmRpbmdfdHlwZSAtPiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcblxuICB2YWwgc2l0ZV9uYW1lX29mX2JpbmRpbmdfdHlwZSA6XG4gICAgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3R5cGUgLT4gSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICB2YWwgYWdlbnRfaWRfb2ZfYWdlbnQgOiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIC0+IGludFxuICB2YWwgYWdlbnRfbmFtZV9vZl9hZ2VudCA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgLT4gSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG5cbiAgdmFsIGFnZW50X29mX3NpdGUgOlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IEluc3RhbnRpYXRpb24uY29uY3JldGVcblxuICB2YWwgYWdlbnRfaWRfb2Zfc2l0ZSA6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IGludFxuXG4gIHZhbCBhZ2VudF9uYW1lX29mX3NpdGUgOlxuICAgIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlIC0+IEluc3RhbnRpYXRpb24uYWdlbnRfbmFtZVxuXG4gIHZhbCBzaXRlX25hbWVfb2Zfc2l0ZSA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgLT4gSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcblxuICB2YWwgYnVpbGRfZ3JpZCA6XG4gICAgKFRyYWNlLnN0ZXAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZSBsaXN0KSBsaXN0IC0+XG4gICAgYm9vbCAtPlxuICAgIEguaGFuZGxlciAtPlxuICAgIENhdXNhbC5ncmlkXG5cbiAgdmFsIHByaW50X3NpZGVfZWZmZWN0IDogTG9nZ2Vycy50IC0+IHNpZGVfZWZmZWN0IC0+IHVuaXRcblxuICB2YWwgc2lkZV9lZmZlY3Rfb2ZfbGlzdCA6XG4gICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnNpdGUgbGlzdCAtPiBzaWRlX2VmZmVjdFxuXG4gIHZhbCBnZXRfaWRfb2ZfcmVmaW5lZF9zdGVwIDogVHJhY2Uuc3RlcCAtPiBpbnQgb3B0aW9uXG4gIHZhbCBnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAgOiBUcmFjZS5zdGVwIC0+IGZsb2F0IG9wdGlvblxuXG4gIHZhbCBsZXZlbF9vZl9ldmVudCA6XG4gICAgUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb24gLT5cbiAgICAoVHJhY2Uuc3RlcCwgYWdlbnRfaWQgLT4gYm9vbCwgUHJpb3JpdHkubGV2ZWwpIEguYmluYXJ5XG5cbiAgdmFsIGRpc2FtYmlndWF0ZSA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgY2xlYW5fZXZlbnRzIDogVHJhY2UudCAtPiBUcmFjZS50XG4gIHZhbCBmaWxsX3NpcGhvbiA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgc3BsaXRfaW5pdCA6IFRyYWNlLnQgLT4gVHJhY2UudFxuICB2YWwgYWdlbnRfaWRfaW5fb2JzIDogKFRyYWNlLnN0ZXAsIEFnZW50SWRTZXQudCkgSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBDZmxvd19saW5rZXIgOiBDZmxvd19zaWduYXR1cmUgPSBzdHJ1Y3RcbiAgbW9kdWxlIEggPSBDZmxvd19oYW5kbGVyLkNmbG93X2hhbmRsZXJcbiAgbW9kdWxlIFBJID0gSW5zdGFudGlhdGlvblxuXG4gIHR5cGUgYWdlbnRfaWQgPSBpbnRcbiAgdHlwZSBzaWRlX2VmZmVjdCA9IFBJLmNvbmNyZXRlIFBJLnNpdGUgbGlzdFxuXG4gIG1vZHVsZSBBZ2VudElkTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIEFnZW50SWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgU2l0ZU1hcCA9IE1vZHMuSW50TWFwXG4gIG1vZHVsZSBTaXRlU2V0ID0gTW9kcy5JbnRTZXRcblxuICB0eXBlIGludGVybmFsX3N0YXRlID0gaW50XG5cbiAgbGV0IGVtcHR5X3NpZGVfZWZmZWN0ID0gW11cbiAgbGV0IHNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUgPSBzbmRcbiAgbGV0IGFnZW50X25hbWVfb2ZfYmluZGluZ190eXBlID0gZnN0XG4gIGxldCBhZ2VudF9pZF9vZl9hZ2VudCA9IGZzdFxuICBsZXQgYWdlbnRfbmFtZV9vZl9hZ2VudCA9IHNuZFxuICBsZXQgYWdlbnRfb2Zfc2l0ZSA9IGZzdFxuICBsZXQgYWdlbnRfaWRfb2Zfc2l0ZSB4ID0gYWdlbnRfaWRfb2ZfYWdlbnQgQEAgYWdlbnRfb2Zfc2l0ZSB4XG4gIGxldCBhZ2VudF9uYW1lX29mX3NpdGUgeCA9IGFnZW50X25hbWVfb2ZfYWdlbnQgQEAgYWdlbnRfb2Zfc2l0ZSB4XG4gIGxldCBzaXRlX25hbWVfb2Zfc2l0ZSA9IHNuZFxuXG4gIGxldCBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCBmIHggPVxuICAgIG1hdGNoIFRyYWNlLnNpbXVsYXRpb25faW5mb19vZl9zdGVwIHggd2l0aFxuICAgIHwgTm9uZSAtPiBOb25lXG4gICAgfCBTb21lIGEgLT4gU29tZSAoZiBhKVxuXG4gIGxldCBnZXRfdGltZV9vZl9yZWZpbmVkX3N0ZXAgeCA9XG4gICAgZ2V0X2dlbl9vZl9yZWZpbmVkX3N0ZXAgKGZ1biB4IC0+IHguVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X3RpbWUpIHhcblxuICBsZXQgZ2V0X2lkX29mX3JlZmluZWRfc3RlcCB4ID1cbiAgICBnZXRfZ2VuX29mX3JlZmluZWRfc3RlcCAoZnVuIHggLT4geC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnQpIHhcblxuICBsZXQgYnVpbGRfZ3JpZCBsaXN0IGJvb2wgaGFuZGxlciA9XG4gICAgbGV0IGVudiA9IGhhbmRsZXIuSC5lbnYgaW5cbiAgICBsZXQgZW1wdHlfc2V0ID0gW10gaW5cbiAgICBsZXQgZ3JpZCA9IENhdXNhbC5lbXB0eV9ncmlkICgpIGluXG4gICAgbGV0IGdyaWQsIF8sIF8sIF8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZ3JpZCwgc2lkZV9lZmZlY3QsIGNvdW50ZXIsIHN1YnMpIChrLCBzaWRlKSAtPlxuICAgICAgICAgIGxldCBtYXliZV9zaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgZnVuIHNlIC0+XG4gICAgICAgICAgICBzZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBmdW4gXyAtPlxuICAgICAgICAgICAgTGlzdC5yZXZfYXBwZW5kIHNpZGVfZWZmZWN0IHNpZGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0cmFuc2xhdGUgeSA9IE1vZHMuSW50TWFwLmZpbmRfZGVmYXVsdCB5IHkgc3VicyBpblxuICAgICAgICAgIG1hdGNoIGsgd2l0aFxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoaWQsIGV2ZW50LCBpbmZvKSAtPlxuICAgICAgICAgICAgbGV0IGV2ZW50JyA9IFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudCB0cmFuc2xhdGUgZXZlbnQgaW5cbiAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdHNfZHN0ID1cbiAgICAgICAgICAgICAgbWF5YmVfc2lkZV9lZmZlY3QgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggQ2F1c2FsLnJlY29yZFxuICAgICAgICAgICAgICAgICggVHJhY2UuUlVMRSBpZCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi50ZXN0cyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLnRlc3RzO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmFjdGlvbnMgPSBldmVudCcuSW5zdGFudGlhdGlvbi5hY3Rpb25zO1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmMgPVxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Jy5JbnN0YW50aWF0aW9uLnNpZGVfZWZmZWN0c19zcmM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdDtcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5jb25uZWN0aXZpdHlfdGVzdHMgPVxuICAgICAgICAgICAgICAgICAgICAgIGV2ZW50Jy5JbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cztcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBpbmZvIClcbiAgICAgICAgICAgICAgICBjb3VudGVyIGVudiBncmlkLFxuICAgICAgICAgICAgICBlbXB0eV9zZXQsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5QZXJ0IChpZCwgZXZlbnQsIGluZm8pIC0+XG4gICAgICAgICAgICBsZXQgZXZlbnQnID0gUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50IHRyYW5zbGF0ZSBldmVudCBpblxuICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0c19kc3QgPVxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBldmVudCcuSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkXG4gICAgICAgICAgICAgICAgKCBUcmFjZS5QRVJUIGlkLFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLnRlc3RzID0gZXZlbnQnLkluc3RhbnRpYXRpb24udGVzdHM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uYWN0aW9ucyA9IGV2ZW50Jy5JbnN0YW50aWF0aW9uLmFjdGlvbnM7XG4gICAgICAgICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX3NyYztcbiAgICAgICAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5zaWRlX2VmZmVjdHNfZHN0O1xuICAgICAgICAgICAgICAgICAgICBJbnN0YW50aWF0aW9uLmNvbm5lY3Rpdml0eV90ZXN0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnQnLkluc3RhbnRpYXRpb24uY29ubmVjdGl2aXR5X3Rlc3RzO1xuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGluZm8gKVxuICAgICAgICAgICAgICAgIGNvdW50ZXIgZW52IGdyaWQsXG4gICAgICAgICAgICAgIGVtcHR5X3NldCxcbiAgICAgICAgICAgICAgY291bnRlciArIDEsXG4gICAgICAgICAgICAgIE1vZHMuSW50TWFwLmVtcHR5IClcbiAgICAgICAgICB8IFRyYWNlLk9icyAoaWQsIHRlc3RzLCBpbmZvKSAtPlxuICAgICAgICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAoTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCB0cmFuc2xhdGUpKVxuICAgICAgICAgICAgICAgIHRlc3RzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBDYXVzYWwucmVjb3JkX29icyAoaWQsIHRlc3RzJywgaW5mbykgc2lkZV9lZmZlY3QgY291bnRlciBncmlkLFxuICAgICAgICAgICAgICBtYXliZV9zaWRlX2VmZmVjdCBlbXB0eV9zZXQsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5TdWJzIChhLCBiKSAtPlxuICAgICAgICAgICAgZ3JpZCwgc2lkZV9lZmZlY3QsIGNvdW50ZXIsIE1vZHMuSW50TWFwLmFkZCBhIGIgc3Vic1xuICAgICAgICAgIHwgVHJhY2UuSW5pdCBhY3Rpb25zIC0+XG4gICAgICAgICAgICBsZXQgYWN0aW9ucycgPVxuICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgKFBJLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gdHJhbnNsYXRlKVxuICAgICAgICAgICAgICAgIGFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIENhdXNhbC5yZWNvcmRfaW5pdFxuICAgICAgICAgICAgICAgIChUcmFjZS5jcmVhdGlvbl9vZl9hY3Rpb25zIHNuZCBhY3Rpb25zJywgYWN0aW9ucycpXG4gICAgICAgICAgICAgICAgY291bnRlciBlbnYgZ3JpZCxcbiAgICAgICAgICAgICAgc2lkZV9lZmZlY3QsXG4gICAgICAgICAgICAgIGNvdW50ZXIgKyAxLFxuICAgICAgICAgICAgICBNb2RzLkludE1hcC5lbXB0eSApXG4gICAgICAgICAgfCBUcmFjZS5EdW1teSBfIC0+IGdyaWQsIG1heWJlX3NpZGVfZWZmZWN0IGVtcHR5X3NldCwgY291bnRlciwgc3VicylcbiAgICAgICAgKGdyaWQsIGVtcHR5X3NldCwgMSwgTW9kcy5JbnRNYXAuZW1wdHkpXG4gICAgICAgIGxpc3RcbiAgICBpblxuICAgIGdyaWRcblxuICBsZXQgY2xlYW5fZXZlbnRzID1cbiAgICBMaXN0LmZpbHRlciAoZnVuY3Rpb25cbiAgICAgIHwgVHJhY2UuUnVsZSBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5Jbml0IF8gLT4gdHJ1ZVxuICAgICAgfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuU3VicyBfIC0+IGZhbHNlKVxuXG4gIGxldCBwcmludF9zaWRlX2VmZmVjdCBsb2cgPVxuICAgIExpc3QuaXRlciAoZnVuICgoYSwgXyksIGIpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIoJWksJWkpLFwiIGEgYilcblxuICBsZXQgc2lkZV9lZmZlY3Rfb2ZfbGlzdCBsID0gbFxuXG4gIGxldCBsZXZlbF9vZl9ldmVudCBwcmlvcml0eV9vcHQgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGUgc2V0ID1cbiAgICBtYXRjaCBwcmlvcml0eV9vcHQsIEguZ2V0X3ByaW9yaXRpZXMgcGFyYW1ldGVyIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBQcmlvcml0eS5oaWdoZXN0XG4gICAgfCBTb21lIHByaW9yaXRpZXMsIF8gfCBOb25lLCBTb21lIHByaW9yaXRpZXMgLT5cbiAgICAgIChtYXRjaCBlIHdpdGhcbiAgICAgIHwgVHJhY2UuT2JzIF8gLT4gZXJyb3IsIGxvZ19pbmZvLCBwcmlvcml0aWVzLlByaW9yaXR5Lm90aGVyX2V2ZW50c1xuICAgICAgfCBUcmFjZS5SdWxlIF8gfCBUcmFjZS5QZXJ0IF8gLT5cbiAgICAgICAgbGV0IGFjdGlvbnMgPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZSBpblxuICAgICAgICBsZXQgcHJpb3JpdHkgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIHByaW9yaXR5IC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIChhZywgXykgLT5cbiAgICAgICAgICAgICAgICBsZXQgYWdfaWQgPSBhZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgICAgICAgICAgIGlmIHNldCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgICAgICBwcmlvcml0eVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFByaW9yaXR5Lm1pbl9sZXZlbCBwcmlvcml0eSBwcmlvcml0aWVzLlByaW9yaXR5LmNyZWF0aW9uXG4gICAgICAgICAgICAgIHwgUEkuUmVtb3ZlIF8gLT5cbiAgICAgICAgICAgICAgICBQcmlvcml0eS5taW5fbGV2ZWwgcHJpb3JpdHkgcHJpb3JpdGllcy5Qcmlvcml0eS5yZW1vdmFsXG4gICAgICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsIF8gLT4gcHJpb3JpdHlcbiAgICAgICAgICAgICAgfCBQSS5GcmVlIF8gLT5cbiAgICAgICAgICAgICAgICBQcmlvcml0eS5taW5fbGV2ZWwgcHJpb3JpdHkgcHJpb3JpdGllcy5Qcmlvcml0eS51bmJpbmRpbmdcbiAgICAgICAgICAgICAgfCBQSS5CaW5kIChfLCBfKSB8IFBJLkJpbmRfdG8gKF8sIF8pIC0+IHByaW9yaXR5KVxuICAgICAgICAgICAgcHJpb3JpdGllcy5Qcmlvcml0eS5vdGhlcl9ldmVudHMgKGZzdCBhY3Rpb25zKVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHByaW9yaXR5XG4gICAgICB8IFRyYWNlLkR1bW15IF8gfCBUcmFjZS5TdWJzIF8gfCBUcmFjZS5Jbml0IF8gLT5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBwcmlvcml0aWVzLlByaW9yaXR5LnN1YnN0aXR1dGlvbilcblxuICBsZXQgc3Vic19hZ2VudF9pbl9ldmVudCBtYXBwaW5nIG1hcHBpbmcnID0gZnVuY3Rpb25cbiAgICAoKiBtYXBwaW5nIC0+IGJlZm9yZSB0aGUgZXZlbnQsIGluY2x1ZGluZyBhZ2VudHMgdG8gYmUgcmVtb3ZlZCAqKVxuICAgICgqIG1hcHBpbmcnIC0+IGFmdGVyIHRoZSBldmVudCwgaW5jbHVkaW5nIGFnZW50cyB0byBiZSBjcmVhdGVkICopXG4gICAgKCogVGhpcyBpcyB1c2VmdWwgd2hlbiBvbmUgYWdlbnQgaXMgcmVtb3ZlZCwgYW5kIG9uZSBpcyBjcmVhdGVkIHdpdGggdGhlIHNhbWUgaWQgaW4gYSBzaW5nbGUgZXZlbnQgKilcbiAgICB8IFRyYWNlLlJ1bGUgKGEsIGV2ZW50LCBpbmZvKSAtPlxuICAgICAgVHJhY2UuUnVsZVxuICAgICAgICAoIGEsXG4gICAgICAgICAgUEkuc3Vic3RfbWFwMl9hZ2VudF9pbl9jb25jcmV0ZV9ldmVudFxuICAgICAgICAgICAgKGZ1biB4IC0+IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nKVxuICAgICAgICAgICAgKGZ1biB4IC0+IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nJylcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIGluZm8gKVxuICAgIHwgVHJhY2UuUGVydCAoYSwgZXZlbnQsIGluZm8pIC0+XG4gICAgICBUcmFjZS5QZXJ0XG4gICAgICAgICggYSxcbiAgICAgICAgICBQSS5zdWJzdF9tYXAyX2FnZW50X2luX2NvbmNyZXRlX2V2ZW50XG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcpXG4gICAgICAgICAgICAoZnVuIHggLT4gQWdlbnRJZE1hcC5maW5kX2RlZmF1bHQgeCB4IG1hcHBpbmcnKVxuICAgICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgaW5mbyApXG4gICAgfCBUcmFjZS5PYnMgKGEsIGIsIGMpIC0+XG4gICAgICBUcmFjZS5PYnNcbiAgICAgICAgKCBhLFxuICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAoUEkuc3Vic3RfbWFwX2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgKGZ1biB4IC0+XG4gICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nKSkpXG4gICAgICAgICAgICBiLFxuICAgICAgICAgIGMgKVxuICAgIHwgVHJhY2UuSW5pdCBiIC0+XG4gICAgICBUcmFjZS5Jbml0XG4gICAgICAgIChMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgIChQSS5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfYWN0aW9uIChmdW4geCAtPlxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBtYXBwaW5nJykpXG4gICAgICAgICAgIGIpXG4gICAgfCAoVHJhY2UuRHVtbXkgXyB8IFRyYWNlLlN1YnMgXykgYXMgZXZlbnQgLT4gZXZlbnRcblxuICBsZXQgZGlzYW1iaWd1YXRlIGV2ZW50X2xpc3QgPVxuICAgIGxldCBfLCBfLCBfLCBldmVudF9saXN0X3JldiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChtYXhfaWQsIHVzZWQsIG1hcHBpbmcsIGV2ZW50X2xpc3QpIGV2ZW50IC0+XG4gICAgICAgICAgbGV0IG1heF9pZCwgdXNlZCwgbWFwcGluZycgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAobWF4X2lkLCB1c2VkLCBtYXBwaW5nKSB4IC0+XG4gICAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0geCB1c2VkIHRoZW5cbiAgICAgICAgICAgICAgICAgICggbWF4X2lkICsgMSxcbiAgICAgICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGQgKG1heF9pZCArIDEpIHVzZWQsXG4gICAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHggKG1heF9pZCArIDEpIG1hcHBpbmcgKVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIG1heCB4IG1heF9pZCwgQWdlbnRJZFNldC5hZGQgeCB1c2VkLCBtYXBwaW5nKVxuICAgICAgICAgICAgICAobWF4X2lkLCB1c2VkLCBtYXBwaW5nKVxuICAgICAgICAgICAgICAoVHJhY2UuY3JlYXRpb25fb2Zfc3RlcCBldmVudClcbiAgICAgICAgICBpblxuICAgICAgICAgICgqIG1hcHBpbmcgY2FuIGJlIHNhZmVseSBhcHBsaWVkIHRvIGFsbCBhZ2VudHMgZXhjZXB0IHRoZSBuZXdseSBjcmVhdGVkIG9uZXMgKilcbiAgICAgICAgICAoKiBtYXBwaW5nJyBjYW4gYmUgc2FmZWx5IGFwcGxpZWQgdG8gYWxsIGFnZW50cyBleGNlcHQgdGhlIG9uZXMgdGhhdCBoYXZlIGJlZW4ganVzdCByZW1vdmVzICopXG4gICAgICAgICAgbGV0IGxpc3QgPSBzdWJzX2FnZW50X2luX2V2ZW50IG1hcHBpbmcgbWFwcGluZycgZXZlbnQgOjogZXZlbnRfbGlzdCBpblxuICAgICAgICAgIG1heF9pZCwgdXNlZCwgbWFwcGluZycsIGxpc3QpXG4gICAgICAgICgwLCBBZ2VudElkU2V0LmVtcHR5LCBBZ2VudElkTWFwLmVtcHR5LCBbXSlcbiAgICAgICAgZXZlbnRfbGlzdFxuICAgIGluXG4gICAgTGlzdC5yZXYgZXZlbnRfbGlzdF9yZXZcblxuICB0eXBlIGFnZW50X2luZm8gPSB7XG4gICAgaW5pdGlhbF9zdGVwOiBUcmFjZS5zdGVwO1xuICAgIGludGVybmFsX3N0YXRlczogaW50ZXJuYWxfc3RhdGUgU2l0ZU1hcC50O1xuICAgIGJvdW5kX3NpdGVzOiBTaXRlU2V0LnQ7XG4gICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZTogU2l0ZVNldC50O1xuICB9XG5cbiAgbGV0IGNvbnZlcnRfaW5pdCByZW1hbmVudCBzdGVwX2xpc3QgYWN0aW9uX2xpc3QgPVxuICAgIGxldCBleHRyYWN0X2FnZW50IGlkIHNvdXAgPVxuICAgICAgTGlzdC5wYXJ0aXRpb25cbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBQSS5DcmVhdGUgKChpZCcsIF8pLCBfKVxuICAgICAgICAgIHwgUEkuTW9kX2ludGVybmFsICgoKGlkJywgXyksIF8pLCBfKVxuICAgICAgICAgIHwgUEkuRnJlZSAoKGlkJywgXyksIF8pXG4gICAgICAgICAgfCBQSS5CaW5kX3RvICgoKGlkJywgXyksIF8pLCBfKSAtPlxuICAgICAgICAgICAgaWQgPSBpZCdcbiAgICAgICAgICB8IFBJLkJpbmQgXyB8IFBJLlJlbW92ZSBfIC0+IGZhaWx3aXRoIFwiUHJvYmxlbWF0aWMgaW5pdGlhbCBldmVudFwiKVxuICAgICAgICBzb3VwXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCByZWN1ciBhY2Mgc291cCA9IGZ1bmN0aW9uXG4gICAgICB8IFtdIC0+XG4gICAgICAgICggKGlmIHNvdXAgPD4gW10gdGhlblxuICAgICAgICAgICAgIFRyYWNlLkluaXQgc291cCA6OiBhY2NcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGFjYyksXG4gICAgICAgICAgcmVjdXIgKVxuICAgICAgfCBQSS5GcmVlIF8gOjogdCAtPiBhdXggcmVjdXIgYWNjIHNvdXAgdFxuICAgICAgfCAoUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gfCBQSS5CaW5kX3RvIF8gfCBQSS5Nb2RfaW50ZXJuYWwgXykgOjogdCAtPlxuICAgICAgICBhdXggcmVjdXIgYWNjIHNvdXAgdFxuICAgICAgfCBQSS5DcmVhdGUgKChpZCwgXyksIHNpdGVfbGlzdCkgOjogdCAtPlxuICAgICAgICBsZXQgdGhpcywgc291cCcgPSBleHRyYWN0X2FnZW50IGlkIHNvdXAgaW5cbiAgICAgICAgbGV0IHN0YW5kYWxvbmUgPVxuICAgICAgICAgIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgICAgIHwgUEkuQ3JlYXRlIF8gfCBQSS5GcmVlIF8gfCBQSS5Nb2RfaW50ZXJuYWwgXyAtPiB0cnVlXG4gICAgICAgICAgICAgIHwgUEkuQmluZF90byBfIHwgUEkuQmluZCBfIHwgUEkuUmVtb3ZlIF8gLT4gZmFsc2UpXG4gICAgICAgICAgICB0aGlzXG4gICAgICAgIGluXG4gICAgICAgIGxldCB0aGlzID0gVHJhY2UuSW5pdCB0aGlzIGluXG4gICAgICAgIGlmIHN0YW5kYWxvbmUgdGhlbiAoXG4gICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIG1hcCAtPiBmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgcywgU29tZSB1IC0+IFNpdGVNYXAuYWRkIHMgdSBtYXBcbiAgICAgICAgICAgICAgICB8IF8sIE5vbmUgLT4gbWFwKVxuICAgICAgICAgICAgICBTaXRlTWFwLmVtcHR5IHNpdGVfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFnZW50X2luZm8gPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpbml0aWFsX3N0ZXAgPSB0aGlzO1xuICAgICAgICAgICAgICBpbnRlcm5hbF9zdGF0ZXMgPSBtYXA7XG4gICAgICAgICAgICAgIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5lbXB0eTtcbiAgICAgICAgICAgICAgc2l0ZXNfd2l0aF93cm9uZ19pbnRlcm5hbF9zdGF0ZSA9IFNpdGVTZXQuZW1wdHk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggKEFnZW50SWRNYXAuYWRkIGlkIGFnZW50X2luZm8gcmVjdXIpICh0aGlzIDo6IGFjYykgc291cCcgdFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBhdXggcmVjdXIgKHRoaXMgOjogYWNjKSBzb3VwJyB0XG4gICAgaW5cbiAgICBhdXggcmVtYW5lbnQgc3RlcF9saXN0IGFjdGlvbl9saXN0IGFjdGlvbl9saXN0XG5cbiAgbGV0IGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdlbnRfaW5mbyA9XG4gICAgbGV0IHJlc3RyaWN0aW9uID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFNpdGVTZXQuZW1wdHkgYWdpZCByZXN0cmljdGlvbl9tYXBcbiAgICBpblxuICAgIFNpdGVTZXQuaXNfZW1wdHkgKFNpdGVTZXQuaW50ZXIgYWdlbnRfaW5mby5ib3VuZF9zaXRlcyByZXN0cmljdGlvbilcbiAgICAmJiBTaXRlU2V0LmlzX2VtcHR5XG4gICAgICAgICAoU2l0ZVNldC5pbnRlciBhZ2VudF9pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgcmVzdHJpY3Rpb24pXG5cbiAgbGV0IG1vZF9zaXRlIHJlc3RyaWN0aW9uX21hcCBzaXRlIHN0YXRlIChyZW1hbmVudCwgc2V0KSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgKG1hdGNoIFNpdGVNYXAuZmluZF9vcHRpb24gc19uYW1lIGFnX2luZm8uaW50ZXJuYWxfc3RhdGVzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiByZW1hbmVudCwgc2V0XG4gICAgICB8IFNvbWUgc3RhdGVfcmVmIC0+XG4gICAgICAgIGlmIHN0YXRlX3JlZiA9IHN0YXRlICgqIEJhY2sgdG8gdGhlIG9yaWdpbmFsIGludGVybmFsIHN0YXRlKikgdGhlblxuICAgICAgICAgIGlmIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBhZ19pbmZvIHdpdGhcbiAgICAgICAgICAgICAgICBzaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlID1cbiAgICAgICAgICAgICAgICAgIFNpdGVTZXQucmVtb3ZlIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LmFkZCBhZ2lkIHNldFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2UgaWZcbiAgICAgICAgICAoKiBObyBsb25nZXIgdGhlIGRlZmF1bHQgc3RhdGUgKilcbiAgICAgICAgICBTaXRlU2V0Lm1lbSBzX25hbWUgYWdfaW5mby5zaXRlc193aXRoX3dyb25nX2ludGVybmFsX3N0YXRlXG4gICAgICAgIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBhZ19pbmZvID1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgYWdfaW5mbyB3aXRoXG4gICAgICAgICAgICAgIHNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGUgPVxuICAgICAgICAgICAgICAgIFNpdGVTZXQuYWRkIHNfbmFtZSBhZ19pbmZvLnNpdGVzX3dpdGhfd3JvbmdfaW50ZXJuYWxfc3RhdGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgICBpZiBhc19pbml0IHJlc3RyaWN0aW9uX21hcCBhZ2lkIGFnX2luZm8gdGhlblxuICAgICAgICAgICAgcmVtYW5lbnQsIHNldFxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHJlbWFuZW50LCBBZ2VudElkU2V0LnJlbW92ZSBhZ2lkIHNldFxuICAgICAgICApKVxuXG4gIGxldCB1bmJpbmRfc2lkZSByZXN0cmljdGlvbl9tYXAgKGFnaWQsIHNfbmFtZSkgKHJlbWFuZW50LCBzZXQpID1cbiAgICBtYXRjaCBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIGFnaWQgcmVtYW5lbnQgd2l0aFxuICAgIHwgTm9uZSAtPiByZW1hbmVudCwgc2V0XG4gICAgfCBTb21lIGFnX2luZm8gLT5cbiAgICAgIGlmIFNpdGVTZXQubWVtIHNfbmFtZSBhZ19pbmZvLmJvdW5kX3NpdGVzIHRoZW4gKFxuICAgICAgICBsZXQgYWdfaW5mbyA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgYWdfaW5mbyB3aXRoXG4gICAgICAgICAgICBib3VuZF9zaXRlcyA9IFNpdGVTZXQucmVtb3ZlIHNfbmFtZSBhZ19pbmZvLmJvdW5kX3NpdGVzO1xuICAgICAgICAgIH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5hZGQgYWdpZCBhZ19pbmZvIHJlbWFuZW50IGluXG4gICAgICAgIGlmIGFzX2luaXQgcmVzdHJpY3Rpb25fbWFwIGFnaWQgYWdfaW5mbyB0aGVuXG4gICAgICAgICAgcmVtYW5lbnQsIEFnZW50SWRTZXQuYWRkIGFnaWQgc2V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICApIGVsc2VcbiAgICAgICAgcmVtYW5lbnQsIHNldFxuXG4gIGxldCB1bmJpbmQgcmVzdHJpY3Rpb25fbWFwIHNpdGUgcmVtID1cbiAgICBsZXQgYWdpZCA9IGFnZW50X2lkX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBzX25hbWUgPSBzaXRlX25hbWVfb2Zfc2l0ZSBzaXRlIGluXG4gICAgdW5iaW5kX3NpZGUgcmVzdHJpY3Rpb25fbWFwIChhZ2lkLCBzX25hbWUpIHJlbVxuXG4gIGxldCBiaW5kIHJlc3RyaWN0aW9uX21hcCBzaXRlIChyZW1hbmVudCwgc2V0KSA9XG4gICAgbGV0IGFnaWQgPSBhZ2VudF9pZF9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgc19uYW1lID0gc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIG1hdGNoIEFnZW50SWRNYXAuZmluZF9vcHRpb24gYWdpZCByZW1hbmVudCB3aXRoXG4gICAgfCBOb25lIC0+IHJlbWFuZW50LCBzZXRcbiAgICB8IFNvbWUgYWdfaW5mbyAtPlxuICAgICAgaWYgU2l0ZVNldC5tZW0gc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgdGhlblxuICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGFnX2luZm8gPVxuICAgICAgICAgIHsgYWdfaW5mbyB3aXRoIGJvdW5kX3NpdGVzID0gU2l0ZVNldC5hZGQgc19uYW1lIGFnX2luZm8uYm91bmRfc2l0ZXMgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVtYW5lbnQgPSBBZ2VudElkTWFwLmFkZCBhZ2lkIGFnX2luZm8gcmVtYW5lbnQgaW5cbiAgICAgICAgaWYgYXNfaW5pdCByZXN0cmljdGlvbl9tYXAgYWdpZCBhZ19pbmZvIHRoZW5cbiAgICAgICAgICByZW1hbmVudCwgc2V0XG4gICAgICAgIGVsc2VcbiAgICAgICAgICByZW1hbmVudCwgQWdlbnRJZFNldC5yZW1vdmUgYWdpZCBzZXRcbiAgICAgIClcblxuICBsZXQgc3BsaXRfaW5pdCByZWZpbmVkX3N0ZXBfbGlzdCA9XG4gICAgbGV0IHJlbWFuZW50ID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGZzdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIChzdGVwX2xpc3QsIHJlbWFuZW50KSByZWZpbmVkX3N0ZXAgLT5cbiAgICAgICAgICAgbWF0Y2ggcmVmaW5lZF9zdGVwIHdpdGhcbiAgICAgICAgICAgfCBUcmFjZS5Jbml0IGluaXQgLT4gY29udmVydF9pbml0IHJlbWFuZW50IHN0ZXBfbGlzdCBpbml0XG4gICAgICAgICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuT2JzIF8gfCBUcmFjZS5EdW1teSBfIHwgVHJhY2UuUnVsZSBfXG4gICAgICAgICAgIHwgVHJhY2UuUGVydCBfIC0+XG4gICAgICAgICAgICAgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCwgcmVtYW5lbnQpXG4gICAgICAgICAoW10sIHJlbWFuZW50KVxuICAgICAgICAgKExpc3QucmV2IHJlZmluZWRfc3RlcF9saXN0KSlcblxuICBsZXQgYWRkX2luX3Njb3BlIHNpdGUgc2NvcGUgPVxuICAgIGxldCBhZ2lkID0gYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNfbmFtZSA9IHNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgaW5cbiAgICBsZXQgb2xkX3NldCA9IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFNpdGVTZXQuZW1wdHkgYWdpZCBzY29wZSBpblxuICAgIGxldCBuZXdfc2V0ID0gU2l0ZVNldC5hZGQgc19uYW1lIG9sZF9zZXQgaW5cbiAgICBpZiBvbGRfc2V0ID09IG5ld19zZXQgdGhlblxuICAgICAgc2NvcGVcbiAgICBlbHNlXG4gICAgICBBZ2VudElkTWFwLmFkZCBhZ2lkIG5ld19zZXQgc2NvcGVcblxuICBsZXQgZGVhbF93aXRoX3Rlc3RzIHRlc3RzIHNjb3BlID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKExpc3QuZm9sZF9sZWZ0IChmdW4gc2NvcGUgeCAtPlxuICAgICAgICAgICBtYXRjaCB4IHdpdGhcbiAgICAgICAgICAgfCBQSS5Jc19IZXJlIF8gLT4gc2NvcGVcbiAgICAgICAgICAgfCBQSS5Jc19Cb3VuZCBzaXRlXG4gICAgICAgICAgIHwgUEkuSXNfRnJlZSBzaXRlXG4gICAgICAgICAgIHwgUEkuSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZSwgXylcbiAgICAgICAgICAgfCBQSS5IYXNfSW50ZXJuYWwgKHNpdGUsIF8pIC0+XG4gICAgICAgICAgICAgYWRkX2luX3Njb3BlIHNpdGUgc2NvcGVcbiAgICAgICAgICAgfCBQSS5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgIGFkZF9pbl9zY29wZSBzaXRlMSAoYWRkX2luX3Njb3BlIHNpdGUyIHNjb3BlKSkpXG4gICAgICBzY29wZSB0ZXN0c1xuXG4gIGxldCBmaWxsX3NpcGhvbiByZWZpbmVkX3N0ZXBfbGlzdCA9XG4gICAgbGV0IHJldl90cmFjZSA9IExpc3QucmV2IHJlZmluZWRfc3RlcF9saXN0IGluXG4gICAgbGV0IHNjb3BlID0gQWdlbnRJZE1hcC5lbXB0eSBpblxuICAgIGxldCByZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0LCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKHN0ZXBfbGlzdCwgc2NvcGUpIHJlZmluZWRfc3RlcCAtPlxuICAgICAgICAgIG1hdGNoIHJlZmluZWRfc3RlcCB3aXRoXG4gICAgICAgICAgfCBUcmFjZS5Jbml0IF8gLT4gKHJlZmluZWRfc3RlcCwgc2NvcGUpIDo6IHN0ZXBfbGlzdCwgc2NvcGVcbiAgICAgICAgICB8IFRyYWNlLlJ1bGUgKF8sIGV2ZW50LCBfKSB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBfKSAtPlxuICAgICAgICAgICAgbGV0IHNjb3BlJyA9IGRlYWxfd2l0aF90ZXN0cyBldmVudC5JbnN0YW50aWF0aW9uLnRlc3RzIHNjb3BlIGluXG4gICAgICAgICAgICAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZSdcbiAgICAgICAgICB8IFRyYWNlLk9icyAoXywgdGVzdHMsIF8pIC0+XG4gICAgICAgICAgICBsZXQgc2NvcGUnID0gZGVhbF93aXRoX3Rlc3RzIHRlc3RzIHNjb3BlIGluXG4gICAgICAgICAgICAocmVmaW5lZF9zdGVwLCBzY29wZSkgOjogc3RlcF9saXN0LCBzY29wZSdcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXyB8IFRyYWNlLkR1bW15IF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoW10sIHNjb3BlKSByZXZfdHJhY2VcbiAgICBpblxuICAgIGxldCByZW1hbmVudCA9IEFnZW50SWRNYXAuZW1wdHkgaW5cbiAgICBsZXQgYSwgXyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChzdGVwX2xpc3QsIHJlbWFuZW50KSByZWZpbmVkX3N0ZXAgLT5cbiAgICAgICAgICBtYXRjaCByZWZpbmVkX3N0ZXAgd2l0aFxuICAgICAgICAgIHwgVHJhY2UuSW5pdCBpbml0LCBfIC0+IGNvbnZlcnRfaW5pdCByZW1hbmVudCBzdGVwX2xpc3QgaW5pdFxuICAgICAgICAgIHwgVHJhY2UuUnVsZSAoXywgZXZlbnQsIF8pLCBzY29wZSB8IFRyYWNlLlBlcnQgKF8sIGV2ZW50LCBfKSwgc2NvcGUgLT5cbiAgICAgICAgICAgIGxldCByZW1hbmVudCwgc2V0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIHJlY3VyIC0+IGZ1bmN0aW9uXG4gICAgICAgICAgICAgICAgICB8IFBJLkNyZWF0ZSBfIC0+IHJlY3VyXG4gICAgICAgICAgICAgICAgICB8IFBJLk1vZF9pbnRlcm5hbCAoc2l0ZSwgc3RhdGUpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1vZF9zaXRlIHNjb3BlIHNpdGUgc3RhdGUgcmVjdXJcbiAgICAgICAgICAgICAgICAgIHwgUEkuQmluZCAoc2l0ZTEsIHNpdGUyKSB8IFBJLkJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgICAgICAgICAgYmluZCBzY29wZSBzaXRlMSAoYmluZCBzY29wZSBzaXRlMiByZWN1cilcbiAgICAgICAgICAgICAgICAgIHwgUEkuRnJlZSBzaXRlIC0+IHVuYmluZCBzY29wZSBzaXRlIHJlY3VyXG4gICAgICAgICAgICAgICAgICB8IFBJLlJlbW92ZSBfIC0+IHJlY3VyKVxuICAgICAgICAgICAgICAgIChyZW1hbmVudCwgQWdlbnRJZFNldC5lbXB0eSlcbiAgICAgICAgICAgICAgICBldmVudC5JbnN0YW50aWF0aW9uLmFjdGlvbnNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcmVtYW5lbnQsIHNldCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9yaWdodCAodW5iaW5kIHNjb3BlKVxuICAgICAgICAgICAgICAgIGV2ZW50Lkluc3RhbnRpYXRpb24uc2lkZV9lZmZlY3RzX2RzdCAocmVtYW5lbnQsIHNldClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIEFnZW50SWRTZXQuZm9sZFxuICAgICAgICAgICAgICAgIChmdW4gaWQgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgbWF0Y2ggQWdlbnRJZE1hcC5maW5kX29wdGlvbiBpZCByZW1hbmVudCB3aXRoXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPiB4LmluaXRpYWxfc3RlcCA6OiBsaXN0XG4gICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdClcbiAgICAgICAgICAgICAgICBzZXRcbiAgICAgICAgICAgICAgICAoZnN0IHJlZmluZWRfc3RlcCA6OiBzdGVwX2xpc3QpLFxuICAgICAgICAgICAgICByZW1hbmVudCApXG4gICAgICAgICAgfCBUcmFjZS5PYnMgXywgXyAtPiBmc3QgcmVmaW5lZF9zdGVwIDo6IHN0ZXBfbGlzdCwgcmVtYW5lbnRcbiAgICAgICAgICB8IFRyYWNlLlN1YnMgXywgXyB8IFRyYWNlLkR1bW15IF8sIF8gLT4gYXNzZXJ0IGZhbHNlKVxuICAgICAgICAoW10sIHJlbWFuZW50KSByZWZpbmVkX3N0ZXBfd2l0aF9zY29wZV9saXN0XG4gICAgaW5cbiAgICBMaXN0LnJldiBhXG5cbiAgbGV0IGFnZW50X2lkX2luX29icyBfcGFyYW1ldGVyIF9oYW5kbGVyIGluZm8gZXJyb3IgPSBmdW5jdGlvblxuICAgIHwgVHJhY2UuU3VicyBfIHwgVHJhY2UuUnVsZSBfIHwgVHJhY2UuUGVydCBfIHwgVHJhY2UuSW5pdCBfIHwgVHJhY2UuRHVtbXkgX1xuICAgICAgLT5cbiAgICAgIGVycm9yLCBpbmZvLCBBZ2VudElkU2V0LmVtcHR5XG4gICAgfCBUcmFjZS5PYnMgKF8sIHRlc3RzLCBfKSAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgaW5mbyxcbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoTGlzdC5mb2xkX2xlZnQgKGZ1biBsIHggLT5cbiAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgfCBQSS5Jc19IZXJlIHggLT4gQWdlbnRJZFNldC5hZGQgKGFnZW50X2lkX29mX2FnZW50IHgpIGxcbiAgICAgICAgICAgICAgIHwgUEkuSXNfQm91bmQgXyB8IFBJLklzX0ZyZWUgXyB8IFBJLkhhc19CaW5kaW5nX3R5cGUgX1xuICAgICAgICAgICAgICAgfCBQSS5Jc19Cb3VuZF90byBfIHwgUEkuSGFzX0ludGVybmFsIF8gLT5cbiAgICAgICAgICAgICAgICAgbCkpXG4gICAgICAgICAgQWdlbnRJZFNldC5lbXB0eSB0ZXN0cyApXG5lbmRcbiIsIigqKlxuICAqIHBvX2N1dC5tbFxuICAqXG4gICogQ3V0IGNvbmN1cnJlbnQgZXZlbnRzOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMTYvMDQvMjAxMlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAwMi8wOC8yMDEzXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlIGV0XG4gICogZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIFBvX2N1dCA9IHNpZ1xuICBtb2R1bGUgSyA6IEthcHBhX2luc3RhbnRpYXRpb24uQ2Zsb3dfc2lnbmF0dXJlXG5cbiAgdmFsIGN1dCA6IChUcmFjZS50LCBUcmFjZS50ICogaW50KSBLLkgudW5hcnlcblxuICB0eXBlIG9uX3RoZV9mbHlfc3RhdGVcblxuICB2YWwgaW5pdF9jdXQgOiBvbl90aGVfZmx5X3N0YXRlXG4gIHZhbCBjdXRfc3RlcCA6IG9uX3RoZV9mbHlfc3RhdGUgLT4gVHJhY2Uuc3RlcCAtPiBvbl90aGVfZmx5X3N0YXRlXG4gIHZhbCBmaW5hbGl6ZV9jdXQgOiBvbl90aGVfZmx5X3N0YXRlIC0+IFRyYWNlLnN0ZXAgbGlzdCAqIGludFxuXG4gIHZhbCBjdXRfcmV2X3RyYWNlIDpcbiAgICBUcmFjZS5zdGVwIGxpc3QgKCpyZXZlcnNlIG9yZGVyKikgLT5cbiAgICBUcmFjZS5zdGVwIGxpc3QgKCogY29ycmVjdCBvcmRlciAqKSAqIGludFxuZW5kXG5cbm1vZHVsZSBQb19jdXQgOiBQb19jdXQgPSBzdHJ1Y3RcbiAgbW9kdWxlIEsgPSBLYXBwYV9pbnN0YW50aWF0aW9uLkNmbG93X2xpbmtlclxuXG4gIHR5cGUgcHJlZGljYXRlX2luZm8gPVxuICAgIHwgSGVyZSBvZiBLLmFnZW50X2lkXG4gICAgfCBCb3VuZF9zaXRlIG9mIEsuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgSW50ZXJuYWxfc3RhdGUgb2YgSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG5cbiAgbW9kdWxlIFBTTSA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVkaWNhdGVfaW5mb1xuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgUFMgPSBQU00uU2V0XG5cbiAgbGV0IGNyZWF0ZWRfcHJlZGljYXRlc19vZl9hY3Rpb24gYWN0aW9uID1cbiAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBpbnRlcmZhY2UpIC0+XG4gICAgICBsZXQgYWdfaWQgPSBLLmFnZW50X2lkX29mX2FnZW50IGFnIGluXG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3QgKHNfaWQsIG9wdCkgLT5cbiAgICAgICAgICBsZXQgbGlzdCA9IEJvdW5kX3NpdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0IGluXG4gICAgICAgICAgbWF0Y2ggb3B0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgIHwgU29tZSBfIC0+IEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkgOjogbGlzdClcbiAgICAgICAgWyBIZXJlIGFnX2lkIF0gaW50ZXJmYWNlXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgXyB8IEluc3RhbnRpYXRpb24uQmluZF90byBfIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgX1xuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIF8gfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICBbXVxuXG4gIGxldCBwcmVkaWNhdGVzX29mX2FjdGlvbiBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbGlzdCAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBsaXN0ID0gQm91bmRfc2l0ZSAoYWdfaWQsIHNfaWQpIDo6IGxpc3QgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIF8gLT4gSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSA6OiBsaXN0KVxuICAgICAgICBbIEhlcmUgYWdfaWQgXSBpbnRlcmZhY2VcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgWyBJbnRlcm5hbF9zdGF0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIEsuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kX3RvIChzMSwgczIpIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSk7XG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMiwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMik7XG4gICAgICBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkZyZWUgcyAtPlxuICAgICAgWyBCb3VuZF9zaXRlIChLLmFnZW50X2lkX29mX3NpdGUgcywgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLlJlbW92ZSBfIC0+IFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfdGVzdCB0ZXN0ID1cbiAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZ2VudCAtPiBbIEhlcmUgKEsuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQpIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSGFzX0ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgWyBJbnRlcm5hbF9zdGF0ZSAoSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIEsuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc1xuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzLCBfKSAtPlxuICAgICAgWyBCb3VuZF9zaXRlIChLLmFnZW50X2lkX29mX3NpdGUgcywgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzKSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBbXG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMSwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMSk7XG4gICAgICAgIEJvdW5kX3NpdGUgKEsuYWdlbnRfaWRfb2Zfc2l0ZSBzMiwgSy5zaXRlX25hbWVfb2Zfc2l0ZSBzMik7XG4gICAgICBdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIHNpZGVzID1cbiAgICBMaXN0Lm1hcCAoZnVuICgoYWdfaWQsIF8pLCBzX2lkKSAtPiBCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpIHNpZGVzXG5cbiAgdHlwZSBvbl90aGVfZmx5X3N0YXRlID0gUFMudCAqIFRyYWNlLnN0ZXAgbGlzdCAqIGludFxuXG4gIGxldCBpbml0X2N1dCA9IFBTLmVtcHR5LCBbXSwgMFxuICBsZXQgZmluYWxpemVfY3V0IChfYSwgYiwgYykgPSBiLCBjXG5cbiAgbGV0IGN1dF9zdGVwIChzZWVuLCBrZXB0LCBuX2N1dCkgZXZlbnQgPVxuICAgIGxldCByZWMga2VlcCBsID1cbiAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgfCBbXSAtPiBmYWxzZVxuICAgICAgfCB0MCA6OiBxMCAtPlxuICAgICAgICBsZXQgcmVjIGF1eDEgbCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBrZWVwIHEwXG4gICAgICAgICAgfCB0MSA6OiBxMSAtPlxuICAgICAgICAgICAgaWYgUFMubWVtIHQxIHNlZW4gdGhlblxuICAgICAgICAgICAgICB0cnVlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eDEgcTFcbiAgICAgICAgaW5cbiAgICAgICAgYXV4MSAocHJlZGljYXRlc19vZl9hY3Rpb24gdDApXG4gICAgaW5cbiAgICBsZXQgcmVjIGtlZXAyIGwgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGZhbHNlXG4gICAgICB8IHQgOjogcSAtPlxuICAgICAgICBpZiBQUy5tZW0gdCBzZWVuIHRoZW5cbiAgICAgICAgICB0cnVlXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBrZWVwMiBxXG4gICAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZXZlbnQgaW5cbiAgICBsZXQgc2VlbiA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHNlZW4gYWN0aW9uIC0+XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gc2VlbiBlbHQgLT4gUFMucmVtb3ZlIGVsdCBzZWVuKVxuICAgICAgICAgICAgc2VlblxuICAgICAgICAgICAgKGNyZWF0ZWRfcHJlZGljYXRlc19vZl9hY3Rpb24gYWN0aW9uKSlcbiAgICAgICAgc2VlbiBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGFjdGlvbnMsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgZXZlbnQgaW5cbiAgICBpZlxuICAgICAgVHJhY2Uuc3RlcF9pc19vYnMgZXZlbnQgfHwga2VlcCBhY3Rpb25zXG4gICAgICB8fCBrZWVwMiAocHJlZGljYXRlc19vZl9zaWRlX2VmZmVjdHMgKFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIGV2ZW50KSlcbiAgICB0aGVuIChcbiAgICAgIGxldCBrZXB0ID0gZXZlbnQgOjoga2VwdCBpblxuICAgICAgbGV0IHRlc3RzID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBldmVudCBpblxuICAgICAgbGV0IHRlc3RzJyA9XG4gICAgICAgIHByZWRpY2F0ZXNfb2Zfc2lkZV9lZmZlY3RzIChUcmFjZS5zaWRlX2VmZmVjdHNfb2Zfc3RlcCBldmVudClcbiAgICAgIGluXG4gICAgICBsZXQgc2VlbiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBzZWVuIHRlc3QgLT5cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gc2VlbiBwcmVkaWNhdGVfaW5mbyAtPiBQUy5hZGQgcHJlZGljYXRlX2luZm8gc2VlbilcbiAgICAgICAgICAgICAgc2VlbiAocHJlZGljYXRlc19vZl90ZXN0IHRlc3QpKVxuICAgICAgICAgIHNlZW4gdGVzdHNcbiAgICAgIGluXG4gICAgICBsZXQgc2VlbiA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biBzZWVuIHByZWRpY2F0ZV9pbmZvIC0+IFBTLmFkZCBwcmVkaWNhdGVfaW5mbyBzZWVuKVxuICAgICAgICAgIHNlZW4gdGVzdHMnXG4gICAgICBpblxuICAgICAgc2Vlbiwga2VwdCwgbl9jdXRcbiAgICApIGVsc2VcbiAgICAgIHNlZW4sIGtlcHQsIG5fY3V0ICsgMVxuXG4gIGxldCBjdXRfcmV2X3RyYWNlIHJldl9ldmVudF9saXN0ID1cbiAgICBsZXQgXywgZXZlbnRfbGlzdCwgbiA9IExpc3QuZm9sZF9sZWZ0IGN1dF9zdGVwIGluaXRfY3V0IHJldl9ldmVudF9saXN0IGluXG4gICAgZXZlbnRfbGlzdCwgblxuXG4gIGxldCBjdXQgX3BhcmFtZXRlciBfaGFuZGxlciBpbmZvIGVycm9yIGV2ZW50X2xpc3QgPVxuICAgIGxldCB0cmFjZSA9IGN1dF9yZXZfdHJhY2UgKExpc3QucmV2IGV2ZW50X2xpc3QpIGluXG4gICAgZXJyb3IsIGluZm8sIHRyYWNlXG5lbmRcbiIsIigqKlxuICAgKiBwc2V1ZG9faW52ZXJzZS5tbFxuICAgKlxuICAgKiBDdXQgcHNldWRvIGludmVyc2UgZXZlbnRzOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAgKlxuICAgKiBLYVNpbVxuICAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERlZGVyb3QsIENOUlNcbiAgICpcbiAgICogQ3JlYXRpb246IDE3LzA0LzIwMTJcbiAgICogTGFzdCBtb2RpZmljYXRpb246IDIxLzExLzIwMTNcbiAgICogKlxuICAgKiBTb21lIHBhcmFtZXRlciByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgICogb3RoZXIgdmFyaWFibGVzIGhhcyB0byBiZSBzZXQgYmVmb3JlIGNvbXBpbGF0aW9uXG4gICAqXG4gICAqIENvcHlyaWdodCAyMDExLDIwMTIsIDIwMTMgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZVxuICAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSB0eXBlIEN1dF9wc2V1ZG9faW52ZXJzZSA9IHNpZ1xuICBtb2R1bGUgUG8gOiBQb19jdXQuUG9fY3V0XG4gIG1vZHVsZSBBIDogR2VuQXJyYXkuR2VuQXJyYXlcblxuICB2YWwgY3V0IDogKFRyYWNlLnQsIFRyYWNlLnQgKiBpbnQpIFBvLksuSC51bmFyeVxuZW5kXG5cbm1vZHVsZSBQc2V1ZG9faW52IDogQ3V0X3BzZXVkb19pbnZlcnNlID0gc3RydWN0XG4gIG1vZHVsZSBQbyA9IFBvX2N1dC5Qb19jdXRcbiAgbW9kdWxlIEEgPSBNb2RzLkR5bkFycmF5XG4gIG1vZHVsZSBDUHJlZGljYXRlTWFwID0gUHJlZGljYXRlX21hcHMuUVByZWRpY2F0ZU1hcFxuICBtb2R1bGUgUHJlZGljYXRlTWFwID0gUHJlZGljYXRlX21hcHMuUHJlZGljYXRlTWFwXG5cbiAgdHlwZSBwcmVkaWNhdGVfaW5mbyA9IFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV9pbmZvXG4gIHR5cGUgc3RlcF9pZCA9IGludFxuXG4gIGxldCBzdHJpbmdfb2ZfcHJlZGljYXRlX2luZm8gPSBQcmVkaWNhdGVfbWFwcy5zdHJpbmdfb2ZfcHJlZGljYXRlX2luZm9cblxuICBsZXQgc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBwaSA9XG4gICAgbWF0Y2ggcGkgd2l0aFxuICAgIHwgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVfaXMgcyAtPiBzdHJpbmdfb2ZfaW50IHNcbiAgICB8IFByZWRpY2F0ZV9tYXBzLlVuZGVmaW5lZCAtPiBcIiNVbmRlZlwiXG4gICAgfCBQcmVkaWNhdGVfbWFwcy5QcmVzZW50IC0+IFwiI0hlcmVcIlxuICAgIHwgUHJlZGljYXRlX21hcHMuRnJlZSAtPiBcIiNGcmVlXCJcbiAgICB8IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZywgYWdlbnRfbmFtZSwgcykgLT5cbiAgICAgIFwiQm91bmRfdG8gXCIgXiBzdHJpbmdfb2ZfaW50IGFnIF4gXCIgXCIgXiBzdHJpbmdfb2ZfaW50IGFnZW50X25hbWUgXiBcIiBcIlxuICAgICAgXiBzdHJpbmdfb2ZfaW50IHNcblxuICB0eXBlIHBzZXVkb19pbnZfYmxhY2tib2FyZCA9IHtcbiAgICBzdGVwc19ieV9jb2x1bW46XG4gICAgICAoc3RlcF9pZCAqIFByZWRpY2F0ZV9tYXBzLnByZWRpY2F0ZV92YWx1ZSAqIGJvb2wpIGxpc3QgQ1ByZWRpY2F0ZU1hcC50O1xuICAgIG5zdGVwczogc3RlcF9pZDtcbiAgICBwcmVkaWNhdGVzX29mX2V2ZW50OiBwcmVkaWNhdGVfaW5mbyBsaXN0IEEudDtcbiAgICBpc19yZW1vdmVfYWN0aW9uOiBib29sIEEudDtcbiAgICBtb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50OiBpbnQgQS50O1xuICAgIGhhc19tb2Rfd2l0aG91dF90ZXN0OiBib29sIEEudDtcbiAgICBldmVudDogVHJhY2Uuc3RlcCBvcHRpb24gQS50O1xuICAgIGFnZW50X2xpc3Q6IGludCBsaXN0O1xuICB9XG5cbiAgbGV0IGluaXRfYmxhY2tib2FyZCBuX3N0ZXBzIGhhbmRsZXIgPVxuICAgIHtcbiAgICAgIHN0ZXBzX2J5X2NvbHVtbiA9IFBvLksuSC5nZXRfcHJlZGljYXRlX21hcCBoYW5kbGVyO1xuICAgICAgbnN0ZXBzID0gLTE7XG4gICAgICBwcmVkaWNhdGVzX29mX2V2ZW50ID0gQS5tYWtlIG5fc3RlcHMgW107XG4gICAgICBpc19yZW1vdmVfYWN0aW9uID0gQS5tYWtlIG5fc3RlcHMgZmFsc2U7XG4gICAgICBoYXNfbW9kX3dpdGhvdXRfdGVzdCA9IEEubWFrZSBuX3N0ZXBzIGZhbHNlO1xuICAgICAgbW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCA9IEEuY3JlYXRlIG5fc3RlcHMgMDtcbiAgICAgIGV2ZW50ID0gQS5tYWtlIG5fc3RlcHMgTm9uZTtcbiAgICAgIGFnZW50X2xpc3QgPSBbXTtcbiAgICB9XG5cbiAgbGV0IF9wcmludF9ibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICBcIkJsYWNrYm9hcmQgZm9yIHJlbW92aW5nIHBzZXVkbyBpbnZlcnNlIGVsZW1lbnRcIlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJuX2V2ZW50czogJWlcIiBibGFja2JvYXJkLm5zdGVwc1xuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgXCJTdGVwc19ieV9jb2x1bW46XCJcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBDUHJlZGljYXRlTWFwLml0ZXJcbiAgICAgICAgKGZ1biBwcmVkIGxpc3QgLT5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIlczogXCJcbiAgICAgICAgICAgICAgKHN0cmluZ19vZl9wcmVkaWNhdGVfaW5mbyBwcmVkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVpZCwgdmFsdWUsIGJvb2wpIC0+XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiglaSwlcyVzKSxcIiBlaWRcbiAgICAgICAgICAgICAgICAgIChzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHZhbHVlKVxuICAgICAgICAgICAgICAgICAgKGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgXCIoTW9kKVwiXG4gICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgXCJcIikpXG4gICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKVxuICAgICAgICBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCJFdmVudHM6XCJcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpIGluXG4gICAgbGV0IHJlYyBhdXggayA9XG4gICAgICBpZiBrID0gYmxhY2tib2FyZC5uc3RlcHMgdGhlblxuICAgICAgICBlcnJvclxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBldmVudCA9XG4gICAgICAgICAgdHJ5IEEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQga1xuICAgICAgICAgIHdpdGggXyAtPlxuICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJFUlJFVVIgJWkgMTIzXCIga1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgcmFpc2UgRXhpdFxuICAgICAgICBpblxuICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgbWF0Y2ggZXZlbnQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvclxuICAgICAgICAgIHwgU29tZSBldmVudCAtPlxuICAgICAgICAgICAgKHRyeVxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiRXZlbnQgJWklYVwiIGtcbiAgICAgICAgICAgICAgICAgICAoVHJhY2UucHJpbnRfc3RlcCB+Y29tcGFjdDpmYWxzZSB+ZW52OmhhbmRsZXIuUG8uSy5ILmVudilcbiAgICAgICAgICAgICAgICAgICBldmVudFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgIFwiUHJlZGljYXRlczogXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgbGlzdCA9IEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlc19vZl9ldmVudCBrIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgICAgICAoZnVuIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgXCIlcyxcIlxuICAgICAgICAgICAgICAgICAgICAgICAoc3RyaW5nX29mX3ByZWRpY2F0ZV9pbmZvIHBpZCkpXG4gICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGJvb2wgPSBBLmdldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gayBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgXCJjb250YWluIGEgZGVsZXRpb25cIlxuICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAoUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgaW50ID0gQS5nZXQgYmxhY2tib2FyZC5tb2RpZmllZF9wcmVkaWNhdGVzX29mX2V2ZW50IGsgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgIChQby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICBcIiVpIG1vZGlmaWVkIHByZWRpY2F0ZXNcIiBpbnRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgd2l0aCBfIC0+IGVycm9yKVxuICAgICAgICBpblxuICAgICAgICBhdXggKGsgKyAxKVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yID0gYXV4IDAgaW5cbiAgICBlcnJvclxuXG4gIGxldCBwcmVkaWNhdGVzX29mX2FjdGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIF9lcnJvciBibGFja2JvYXJkIGFjdGlvbiA9XG4gICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICB8IEluc3RhbnRpYXRpb24uQ3JlYXRlIChhZywgaW50ZXJmYWNlKSAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkhlcmUgYWdfaWQgaW5cbiAgICAgIGxldCBsaXN0MSwgbGlzdDIgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGxpc3QxLCBsaXN0MikgKHNfaWQsIG9wdCkgLT5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc19pZCkgaW5cbiAgICAgICAgICAgIGxldCBsaXN0MSA9IChwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkZyZWUpIDo6IGxpc3QxIGluXG4gICAgICAgICAgICBsZXQgbGlzdDIgPSBwcmVkaWNhdGVfaWQgOjogbGlzdDIgaW5cbiAgICAgICAgICAgIG1hdGNoIG9wdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbGlzdDEsIGxpc3QyXG4gICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGUgKGFnX2lkLCBzX2lkKSBpblxuICAgICAgICAgICAgICAoIChwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBsaXN0MiApKVxuICAgICAgICAgIChbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuUHJlc2VudCBdLCBbIHByZWRpY2F0ZV9pZCBdKVxuICAgICAgICAgIGludGVyZmFjZVxuICAgICAgaW5cbiAgICAgICggeyBibGFja2JvYXJkIHdpdGggYWdlbnRfbGlzdCA9IGFnX2lkIDo6IGJsYWNrYm9hcmQuYWdlbnRfbGlzdCB9LFxuICAgICAgICBsaXN0MSxcbiAgICAgICAgbGlzdDIsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB0cnVlIClcbiAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBpbnQpIC0+XG4gICAgICBsZXQgcHJlZGljYXRlX2lkID1cbiAgICAgICAgUHJlZGljYXRlX21hcHMuSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAoUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSlcbiAgICAgIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFsgcHJlZGljYXRlX2lkLCBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXSxcbiAgICAgICAgW10sXG4gICAgICAgIGZhbHNlLFxuICAgICAgICBmYWxzZSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IFBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMSA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBQcmVkaWNhdGVfbWFwcy5Cb3VuZF90byAoYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICBdLFxuICAgICAgICBbXSxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIGZhbHNlIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IFBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMSA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkMiA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpIGluXG4gICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQxLCBQcmVkaWNhdGVfbWFwcy5Cb3VuZF90byAoYWdfaWQyLCBhZ2VudF9uYW1lMiwgc2l0ZV9pZDIpO1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDIsIFByZWRpY2F0ZV9tYXBzLkJvdW5kX3RvIChhZ19pZDEsIGFnZW50X25hbWUxLCBzaXRlX2lkMSk7XG4gICAgICAgIF0sXG4gICAgICAgIFtdLFxuICAgICAgICBmYWxzZSxcbiAgICAgICAgZmFsc2UgKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgYmxhY2tib2FyZCwgWyBwcmVkaWNhdGVfaWQsIFByZWRpY2F0ZV9tYXBzLkZyZWUgXSwgW10sIGZhbHNlLCBmYWxzZVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5IZXJlIGFnX2lkIGluXG4gICAgICBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlZGljYXRlX21hcHMuVW5kZWZpbmVkIF0sIFtdLCB0cnVlLCBmYWxzZVxuXG4gIGxldCBub19yZW1vdmUgX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgYmxhY2tib2FyZCBlaWQgPVxuICAgIG5vdCAoQS5nZXQgYmxhY2tib2FyZC5pc19yZW1vdmVfYWN0aW9uIGVpZClcblxuICBsZXQgc2FtZV9sZW5ndGggX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgYmxhY2tib2FyZCBlaWQxIGVpZDIgPVxuICAgIEEuZ2V0IGJsYWNrYm9hcmQuaGFzX21vZF93aXRob3V0X3Rlc3QgZWlkMVxuICAgIHx8IEEuZ2V0IGJsYWNrYm9hcmQuaGFzX21vZF93aXRob3V0X3Rlc3QgZWlkMlxuICAgIHx8IEEuZ2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBlaWQxXG4gICAgICAgPSBBLmdldCBibGFja2JvYXJkLm1vZGlmaWVkX3ByZWRpY2F0ZXNfb2ZfZXZlbnQgZWlkMlxuXG4gIGxldCBjbGVhbiB0IGNvbHVtbiBibGFja2JvYXJkID1cbiAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgIHwgW10gLT4gY29sdW1uLCBibGFja2JvYXJkXG4gICAgfCBoZWFkIDo6IHRhaWwgLT5cbiAgICAgIGxldCByZWMgYXV4IGxpc3QgYm9vbCA9XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IChlaWQsIF8sIGZhbHNlKSA6OiBxIC0+XG4gICAgICAgICAgaWYgZWlkID0gLTEgdGhlblxuICAgICAgICAgICAgbGlzdCwgYm9vbFxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5ldmVudCBlaWQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGF1eCBxIHRydWVcbiAgICAgICAgICAgIHwgXyAtPiBsaXN0LCBib29sXG4gICAgICAgICAgKVxuICAgICAgICB8IF8gLT4gbGlzdCwgYm9vbFxuICAgICAgaW5cbiAgICAgIGxldCBsaXN0LCBib29sID0gYXV4IHRhaWwgZmFsc2UgaW5cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBjb2x1bW4gPSBoZWFkIDo6IGxpc3QgaW5cbiAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgdCBjb2x1bW4gYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgfVxuICAgICAgICBpblxuICAgICAgICBjb2x1bW4sIGJsYWNrYm9hcmRcbiAgICAgICkgZWxzZVxuICAgICAgICBjb2x1bW4sIGJsYWNrYm9hcmRcblxuICBsZXQgY2hlY2sgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVpZCA9IGJsYWNrYm9hcmQubnN0ZXBzIGluXG4gICAgbGV0IHByZWRpY2F0ZV9saXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZCBpblxuICAgIGxldCByZWMgc2NhbiBwcmVkaWNhdGVfbGlzdCA9XG4gICAgICBtYXRjaCBwcmVkaWNhdGVfbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBOb25lLCBibGFja2JvYXJkLCBbXVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgbGV0IGNvbHVtbiA9XG4gICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gdCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgICAgICBpblxuICAgICAgICBsZXQgY29sdW1uLCBibGFja2JvYXJkID0gY2xlYW4gdCBjb2x1bW4gYmxhY2tib2FyZCBpblxuICAgICAgICAobWF0Y2ggY29sdW1uIHdpdGhcbiAgICAgICAgfCAoXywgXywgZmFsc2UpIDo6IF8gLT4gc2NhbiBxICgqIG5vIG1vZGlmIG9uIGEgKilcbiAgICAgICAgfCAoXywgeCwgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF8gd2hlbiB4ID0geSAtPlxuICAgICAgICAgIHNjYW4gcSAoKiBtdXRlIG1vZGlmIG9uIGEgKilcbiAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKGIsIF8sIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIC0+XG4gICAgICAgICAgaWYgYSA9IGVpZCAmJiB4ID0geSB0aGVuXG4gICAgICAgICAgICBlcnJvciwgU29tZSAoYSwgYiksIGJsYWNrYm9hcmQsIHEgKCogYSBjYW5jZWxzIGIgbW9kaWYgKilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBlcnJvciwgTm9uZSwgYmxhY2tib2FyZCwgcVxuICAgICAgICB8IF8gLT4gZXJyb3IsIE5vbmUsIGJsYWNrYm9hcmQsIHEpXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGNhbmRpZGF0ZXMsIGJsYWNrYm9hcmQsIHEgPSBzY2FuIHByZWRpY2F0ZV9saXN0IGluXG4gICAgbWF0Y2ggY2FuZGlkYXRlcyB3aXRoXG4gICAgfCBOb25lIC0+IGVycm9yLCBOb25lXG4gICAgfCBTb21lIChlaWRhLCBlaWRiKSAtPlxuICAgICAgaWZcbiAgICAgICAgbm9fcmVtb3ZlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgZWlkYlxuICAgICAgICAmJiBzYW1lX2xlbmd0aCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGVpZGEgZWlkYlxuICAgICAgICAmJiBMaXN0LmZvcl9hbGxcbiAgICAgICAgICAgICAoZnVuIHBpZCAtPlxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiA9XG4gICAgICAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuZmluZF9kZWZhdWx0IFtdIHBpZCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtblxuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCBjb2x1bW4sIF9ibGFja2JvYXJkID0gY2xlYW4gcGlkIGNvbHVtbiBibGFja2JvYXJkIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICAgICAgICAgfCAoXywgXywgZmFsc2UpIDo6IF8gLT4gdHJ1ZSAoKiBubyBtb2RpZiBvbiBhICopXG4gICAgICAgICAgICAgICB8IChhLCB4LCB0cnVlKSA6OiAoYiwgXywgdHJ1ZSkgOjogKF8sIHksIF8pIDo6IF9cbiAgICAgICAgICAgICAgICAgd2hlbiBiID0gZWlkYiAmJiBhID0gZWlkYSAtPlxuICAgICAgICAgICAgICAgICB4ID0geSAoKiBpZiB5ZXMsIGEgY2FuY2VscyBiIG1vZGlmKilcbiAgICAgICAgICAgICAgIHwgKGEsIHgsIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIHdoZW4gYSA9IGVpZGEgLT5cbiAgICAgICAgICAgICAgICAgeCA9IHkgKCogaXMgYSBtb2RpZiBpcyBtdXRlID8gKilcbiAgICAgICAgICAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICAgICAgICAgICBxXG4gICAgICAgICYmIExpc3QuZm9yX2FsbFxuICAgICAgICAgICAgIChmdW4gcGlkIC0+XG4gICAgICAgICAgICAgICBsZXQgY29sdW1uID1cbiAgICAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5maW5kX2RlZmF1bHQgW10gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0IGNvbHVtbiwgX2JsYWNrYm9hcmQgPSBjbGVhbiBwaWQgY29sdW1uIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICAgICAgIGxldCByZWMgY2hlY2tfYXV4IGNvbHVtbiA9XG4gICAgICAgICAgICAgICAgIG1hdGNoIGNvbHVtbiB3aXRoXG4gICAgICAgICAgICAgICAgIHwgKGIsIHgsIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfIHdoZW4gYiA9IGVpZGIgLT5cbiAgICAgICAgICAgICAgICAgICB4ID0geSAoKiBpcyBiIG1vZGlmIGlzIG11dGUgPyAqKVxuICAgICAgICAgICAgICAgICB8IChiLCBfLCBib29sKSA6OiBfIHdoZW4gYiA9IGVpZGIgLT5cbiAgICAgICAgICAgICAgICAgICBub3QgYm9vbCAoKiBpZiB5ZXMsIGIgZG9lcyBub3QgZG8gbW9kaWYgKilcbiAgICAgICAgICAgICAgICAgfCAoXywgXywgXykgOjogdGFpbCAtPiBjaGVja19hdXggdGFpbFxuICAgICAgICAgICAgICAgICB8IFtdIC0+IHRydWVcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBtYXRjaCBjb2x1bW4gd2l0aFxuICAgICAgICAgICAgICAgfCAoYSwgeCwgdHJ1ZSkgOjogKGIsIF8sIHRydWUpIDo6IChfLCB5LCBfKSA6OiBfXG4gICAgICAgICAgICAgICAgIHdoZW4gYiA9IGVpZGIgJiYgYSA9IGVpZGEgLT5cbiAgICAgICAgICAgICAgICAgeCA9IHkgKCogYSBjYW5jZWxzIGIgbW9kaWYqKVxuICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgIGNoZWNrX2F1eCBjb2x1bW4gKCogb3RoZXJ3aXNlIGNoZWNrIHRoYXQgYiBoYXMgbm8gZWZmZWN0ICAqKSlcbiAgICAgICAgICAgICAoQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZGIpXG4gICAgICB0aGVuXG4gICAgICAgIGVycm9yLCBTb21lIChlaWRhLCBlaWRiKVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgTm9uZVxuXG4gIGxldCBwb3AgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgbGV0IHByZWRpY2F0ZV9saXN0ID0gQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IGVpZCBpblxuICAgIGxldCByZWMgYXV4IGwgZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gZXJyb3IsIGJsYWNrYm9hcmRcbiAgICAgIHwgcGlkIDo6IHRhaWwgLT5cbiAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgIG1hdGNoIENQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcGlkIGJsYWNrYm9hcmQuc3RlcHNfYnlfY29sdW1uIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiB4XG4gICAgICAgICAgfCBOb25lIC0+IHJhaXNlIEV4aXRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgIHwgKGEsIF8sIF8pIDo6IHEgd2hlbiBhID0gZWlkIC0+IHFcbiAgICAgICAgICB8IF8gLT4gbGlzdFxuICAgICAgICBpblxuICAgICAgICBhdXggdGFpbCBlcnJvclxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgQ1ByZWRpY2F0ZU1hcC5hZGQgcGlkIGxpc3QgYmxhY2tib2FyZC5zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgfVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBibGFja2JvYXJkID0gYXV4IHByZWRpY2F0ZV9saXN0IGVycm9yIGJsYWNrYm9hcmQgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkIE5vbmUgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBwcmVkaWNhdGVzX29mX3Rlc3QgX3BhcmFtZXRlciBfaGFuZGxlciBfZXJyb3IgX2JsYWNrYm9hcmQgdGVzdCA9XG4gICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5IZXJlIGFnX2lkIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgX2ludCkgLT5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBQcmVkaWNhdGVfbWFwcy5JbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgIChQby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKVxuICAgICAgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfRnJlZSBzIC0+XG4gICAgICBsZXQgYWdfaWQgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHNpdGVfaWQgPSBQby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkIF1cbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBQby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQxID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQxLCBzaXRlX2lkMSkgaW5cbiAgICAgIGxldCBwcmVkaWNhdGVfaWQyID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQyLCBzaXRlX2lkMikgaW5cbiAgICAgIFsgcHJlZGljYXRlX2lkMTsgcHJlZGljYXRlX2lkMiBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IFBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IFBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IHByZWRpY2F0ZV9pZCA9IFByZWRpY2F0ZV9tYXBzLkJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSBpblxuICAgICAgWyBwcmVkaWNhdGVfaWQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzLCBfKSAtPlxuICAgICAgbGV0IGFnX2lkID0gUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgcHJlZGljYXRlX2lkID0gUHJlZGljYXRlX21hcHMuQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIGluXG4gICAgICBbIHByZWRpY2F0ZV9pZCBdXG5cbiAgbGV0IGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkID1cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5ldmVudCBpblxuICAgIGxldCB0ZXN0X2xpc3QgPSBUcmFjZS50ZXN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYWN0aW9uX2xpc3QsIF8gPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBzaWRlX2VmZmVjdCA9IFRyYWNlLnNpZGVfZWZmZWN0c19vZl9zdGVwIHN0ZXAgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZV9tYXBzLlByZWRpY2F0ZU1hcC5hZGQgaWQgdmFsdWUgbWFwKVxuICAgICAgICBtYXAgbGlzdFxuICAgIGluXG4gICAgbGV0IGJ1aWxkX21hcF90ZXN0IGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0IChmdW4gbWFwIGlkIC0+IFByZWRpY2F0ZU1hcC5hZGQgaWQgdHJ1ZSBtYXApIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID0gUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdCAoZmFsc2UsIE5vbmUpIHBpZCBtYXAgaW5cbiAgICAgIGxldCB0ZXN0ID0gdGVzdCB8fCB0ZXN0JyBpblxuICAgICAgbGV0IGFjdGlvbiA9XG4gICAgICAgIG1hdGNoIGFjdGlvbicgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gYWN0aW9uXG4gICAgICAgIHwgXyAtPiBhY3Rpb24nXG4gICAgICBpblxuICAgICAgbGV0IG1hcCA9IFByZWRpY2F0ZU1hcC5hZGQgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcCBpblxuICAgICAgbWFwXG4gICAgaW5cbiAgICBsZXQgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzID0gc2lkZV9lZmZlY3QgaW5cbiAgICBsZXQgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgdGVzdCAtPlxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgYnVpbGRfbWFwX3Rlc3QgdGVzdF9saXN0IG1hcClcbiAgICAgICAgUHJlZGljYXRlTWFwLmVtcHR5IHRlc3RfbGlzdFxuICAgIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBhY3Rpb25fbWFwLFxuICAgICAgICAgIHRlc3RfbWFwLFxuICAgICAgICAgIGlzX3JlbW92ZV9hY3Rpb24sXG4gICAgICAgICAgX2lzX2NyZWF0ZV9hY3Rpb24gKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAsIGJvb2wsIGJvb2xfY3JlYXRpb24pXG4gICAgICAgICAgICAgYWN0aW9uIC0+XG4gICAgICAgICAgbGV0IGJsYWNrYm9hcmQsIGFjdGlvbl9saXN0LCB0ZXN0X2xpc3QsIGJvb2wnLCBib29sX2NyZWF0aW9uJyA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGFjdGlvblxuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcF90ZXN0IHRlc3RfbGlzdCB0ZXN0X21hcCxcbiAgICAgICAgICAgIGJvb2wgfHwgYm9vbCcsXG4gICAgICAgICAgICBib29sX2NyZWF0aW9uIHx8IGJvb2xfY3JlYXRpb24nICkpXG4gICAgICAgIChlcnJvciwgYmxhY2tib2FyZCwgUHJlZGljYXRlTWFwLmVtcHR5LCB0ZXN0X21hcCwgZmFsc2UsIGZhbHNlKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZU1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY3Rpb24gYWNjIC0+XG4gICAgICAgICAgZSwgUHJlZGljYXRlTWFwLmFkZCBrZXkgKHRlc3QsIFNvbWUgYWN0aW9uKSBhY2MpXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPiBlLCBQcmVkaWNhdGVNYXAuYWRkIGtleSAodGVzdCwgTm9uZSkgYWNjKVxuICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgIGUsIFByZWRpY2F0ZU1hcC5hZGQga2V5IChmYWxzZSwgU29tZSBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVNYXAuZW1wdHlcbiAgICBpblxuICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgIExpc3QuZm9sZF9yaWdodFxuICAgICAgICAoZnVuICgoYSwgXyksIGIpIG1hcCAtPlxuICAgICAgICAgIGxldCBwaWQgPSBQcmVkaWNhdGVfbWFwcy5Cb3VuZF9zaXRlIChhLCBiKSBpblxuICAgICAgICAgIGFkZF9zdGF0ZSBwaWQgKGZhbHNlLCBTb21lIFByZWRpY2F0ZV9tYXBzLkZyZWUpIG1hcClcbiAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIG1lcmdlZF9tYXBcbiAgICBpblxuICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5uc3RlcHMgKyAxIGluXG4gICAgbGV0IF8gPSBBLnNldCBibGFja2JvYXJkLmV2ZW50IG5zaWQgKFNvbWUgc3RlcCkgaW5cbiAgICBsZXQgbl9tb2RpZmljYXRpb25zLCBwcmVfc3RlcHNfYnlfY29sdW1uLCBsaXN0LCBtb2Rfd2l0aG91dF90ZXN0ID1cbiAgICAgIFByZWRpY2F0ZU1hcC5mb2xkXG4gICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgKG5fbW9kaWZpY2F0aW9ucywgbWFwLCBsaXN0LCBtb2Rfd2l0aG91dF90ZXN0KSAtPlxuICAgICAgICAgIGxldCBvbGRfbGlzdCA9XG4gICAgICAgICAgICBDUHJlZGljYXRlTWFwLmZpbmRfZGVmYXVsdFxuICAgICAgICAgICAgICBbIC0xLCBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWQsIGZhbHNlIF1cbiAgICAgICAgICAgICAgaWQgbWFwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgb2xkX3ZhbHVlID1cbiAgICAgICAgICAgIG1hdGNoIG9sZF9saXN0IHdpdGhcbiAgICAgICAgICAgIHwgKF8sIHYsIF8pIDo6IF8gLT4gdlxuICAgICAgICAgICAgfCBbXSAtPiBQcmVkaWNhdGVfbWFwcy5VbmRlZmluZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuZXdfdmFsdWUgPVxuICAgICAgICAgICAgbWF0Y2ggYWN0aW9uIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBvbGRfdmFsdWVcbiAgICAgICAgICAgIHwgU29tZSBpIC0+IGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBuX21vZGlmaWNhdGlvbnMsIGJvb2xfYWN0aW9uLCBtb2Rfd2l0aG91dF90ZXN0ID1cbiAgICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gbl9tb2RpZmljYXRpb25zLCBmYWxzZSwgbW9kX3dpdGhvdXRfdGVzdFxuICAgICAgICAgICAgfCBTb21lIF8gLT4gbl9tb2RpZmljYXRpb25zICsgMSwgdHJ1ZSwgbW9kX3dpdGhvdXRfdGVzdCB8fCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIG5fbW9kaWZpY2F0aW9ucyxcbiAgICAgICAgICAgIENQcmVkaWNhdGVNYXAuYWRkIGlkXG4gICAgICAgICAgICAgICgobnNpZCwgbmV3X3ZhbHVlLCBib29sX2FjdGlvbikgOjogb2xkX2xpc3QpXG4gICAgICAgICAgICAgIG1hcCxcbiAgICAgICAgICAgIChpZCwgbmV3X3ZhbHVlKSA6OiBsaXN0LFxuICAgICAgICAgICAgbW9kX3dpdGhvdXRfdGVzdCApKVxuICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICgwLCBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbiwgW10sIGZhbHNlKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgaWYgaXNfcmVtb3ZlX2FjdGlvbiB0aGVuIChcbiAgICAgICAgbGV0IF8gPSBBLnNldCBibGFja2JvYXJkLmlzX3JlbW92ZV9hY3Rpb24gbnNpZCB0cnVlIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVzX29mX2V2ZW50IG5zaWRcbiAgICAgICAgKExpc3QucmV2X21hcCBmc3QgKExpc3QucmV2IGxpc3QpKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQubW9kaWZpZWRfcHJlZGljYXRlc19vZl9ldmVudCBuc2lkIG5fbW9kaWZpY2F0aW9uc1xuICAgIGluXG4gICAgbGV0ICgpID0gQS5zZXQgYmxhY2tib2FyZC5oYXNfbW9kX3dpdGhvdXRfdGVzdCBuc2lkIG1vZF93aXRob3V0X3Rlc3QgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICB7XG4gICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICBldmVudCA9IHByZV9ldmVudDtcbiAgICAgICAgc3RlcHNfYnlfY29sdW1uID0gcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgbnN0ZXBzID0gbnNpZDtcbiAgICAgIH1cbiAgICBpblxuICAgIGVycm9yLCBpbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGN1dCBwYXJhbWV0ZXIgaGFuZGxlciBpbmZvIGVycm9yIGxpc3QgPVxuICAgIGxldCBuX3N0ZXBzID0gTGlzdC5sZW5ndGggbGlzdCBpblxuICAgIGxldCBibGFja2JvYXJkID0gaW5pdF9ibGFja2JvYXJkIG5fc3RlcHMgaGFuZGxlciBpblxuICAgIGxldCBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXQgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIG5fY3V0KSBzdGVwIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBpbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgIGFkZF9zdGVwIHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIHRvX3BvcCA9IGNoZWNrIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGJsYWNrYm9hcmQgaW5cbiAgICAgICAgICBtYXRjaCB0b19wb3Agd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgaW5mbywgYmxhY2tib2FyZCwgbl9jdXRcbiAgICAgICAgICB8IFNvbWUgKGUxLCBlMikgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9IHBvcCBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBibGFja2JvYXJkIGUxIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPSBwb3AgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBlMiBpblxuICAgICAgICAgICAgZXJyb3IsIGluZm8sIGJsYWNrYm9hcmQsIG5fY3V0ICsgMilcbiAgICAgICAgKGVycm9yLCBpbmZvLCBibGFja2JvYXJkLCAwKVxuICAgICAgICBsaXN0XG4gICAgaW5cbiAgICBsZXQgbGlzdCA9XG4gICAgICBsZXQgcmVjIGF1eCBrIGxpc3QgPVxuICAgICAgICBpZiBrID0gLTEgdGhlblxuICAgICAgICAgIGxpc3RcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggQS5nZXQgYmxhY2tib2FyZC5ldmVudCBrIHdpdGhcbiAgICAgICAgICB8IFNvbWUgYSAtPiBhdXggKGsgLSAxKSAoYSA6OiBsaXN0KVxuICAgICAgICAgIHwgTm9uZSAtPiBhdXggKGsgLSAxKSBsaXN0XG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggYmxhY2tib2FyZC5uc3RlcHMgW11cbiAgICBpblxuICAgIGxldCB0YWIgPSBibGFja2JvYXJkLnN0ZXBzX2J5X2NvbHVtbiBpblxuICAgIGxldCBfID0gTGlzdC5pdGVyIChDUHJlZGljYXRlTWFwLnJlY3ljbGUgdGFiKSBibGFja2JvYXJkLmFnZW50X2xpc3QgaW5cbiAgICBlcnJvciwgaW5mbywgKGxpc3QsIG5fY3V0KVxuXG4gICgqICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGluZm8gZXJyb3IgbGlzdCA9IGVycm9yLCBpbmZvLCAobGlzdCwwKSopXG5lbmRcbiIsIigqKlxuICAqIGNmbG93X2hhbmRsZXIubWxcbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcyBEZWRlcm90LCBDTlJTXG4gICpcbiAgKiBDcmVhdGlvbjogMjkvMDgvMjAxMVxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiAyOS8wMS8yMDE2XG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVyIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBQcmVCbGFja2JvYXJkID0gc2lnXG4gIG1vZHVsZSBBIDogR2VuQXJyYXkuR2VuQXJyYXlcbiAgbW9kdWxlIENJIDogUHNldWRvX2ludmVyc2UuQ3V0X3BzZXVkb19pbnZlcnNlXG5cbiAgdHlwZSBzdGVwX2lkXG5cbiAgdmFsIHplcm9fc3RlcF9pZCA6IHN0ZXBfaWRcbiAgdmFsIGR1bW15X3N0ZXBfaWQgOiBzdGVwX2lkXG4gIHZhbCBpbnRfb2Zfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gaW50XG4gIHZhbCBzdGVwX2lkX29mX2ludCA6IGludCAtPiBzdGVwX2lkXG4gIHZhbCBkZWNfc3RlcF9pZCA6IHN0ZXBfaWQgLT4gc3RlcF9pZFxuICB2YWwgaW5jX3N0ZXBfaWQgOiBzdGVwX2lkIC0+IHN0ZXBfaWRcblxuICB0eXBlIHN0ZXBfc2hvcnRfaWRcblxuICB2YWwgemVyb19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZFxuICB2YWwgZHVtbXlfc3RlcF9zaG9ydF9pZCA6IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGludF9vZl9zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBpbnRcbiAgdmFsIHN0ZXBfc2hvcnRfaWRfb2ZfaW50IDogaW50IC0+IHN0ZXBfc2hvcnRfaWRcbiAgdmFsIGluY19zdGVwX3Nob3J0X2lkIDogc3RlcF9zaG9ydF9pZCAtPiBzdGVwX3Nob3J0X2lkXG4gIHZhbCBkZWNfc3RlcF9zaG9ydF9pZCA6IHN0ZXBfc2hvcnRfaWQgLT4gc3RlcF9zaG9ydF9pZFxuXG4gICgqKiBibGFja2JvYXJkIHByZWRpY2F0ZXMqKVxuXG4gIHR5cGUgcHJlZGljYXRlX2lkID0gaW50XG4gIHR5cGUgcHJlZGljYXRlX2luZm9cbiAgdHlwZSBwcmVkaWNhdGVfdmFsdWVcblxuICBtb2R1bGUgQyA6IENhY2hlLkNhY2hlIHdpdGggdHlwZSBPLnQgPSBwcmVkaWNhdGVfdmFsdWVcblxuICB0eXBlIHByZV9ibGFja2JvYXJkICgqYmxhY2tib2FyZCBkdXJpbmcgaXRzIGNvbnN0cnVjdGlvbiopXG5cbiAgdmFsIHdlYWtlbmluZyA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgbGlzdFxuXG4gIHZhbCBjb25qIDpcbiAgICAocHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUsIHByZWRpY2F0ZV92YWx1ZSkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkaXNqdW5jdGlvbiA6XG4gICAgKHByZWRpY2F0ZV92YWx1ZSwgcHJlZGljYXRlX3ZhbHVlLCBwcmVkaWNhdGVfdmFsdWUpIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgZGVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZVxuICB2YWwgdW5kZWZpbmVkIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCB1bmtub3duIDogcHJlZGljYXRlX3ZhbHVlXG4gIHZhbCBpc191bmtub3duIDogcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIGlzX3VuZGVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBib29sXG4gIHZhbCBtb3JlX3JlZmluZWQgOiBwcmVkaWNhdGVfdmFsdWUgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIGNvbXBhdGlibGUgOiBwcmVkaWNhdGVfdmFsdWUgLT4gcHJlZGljYXRlX3ZhbHVlIC0+IGJvb2xcbiAgdmFsIHN0cmljdGx5X21vcmVfcmVmaW5lZCA6IHByZWRpY2F0ZV92YWx1ZSAtPiBwcmVkaWNhdGVfdmFsdWUgLT4gYm9vbFxuICB2YWwgZ2V0X3ByZV9jb2x1bW5fbWFwX2ludiA6IHByZV9ibGFja2JvYXJkIC0+IHByZWRpY2F0ZV9pbmZvIEEudFxuXG4gICgqKiBnZW5lcmF0aW9uKilcblxuICB2YWwgaW5pdCA6IHByZV9ibGFja2JvYXJkIENJLlBvLksuSC56ZXJvYXJ5XG5cbiAgdmFsIGFkZF9zdGVwIDpcbiAgICAoIFRyYWNlLnN0ZXAsXG4gICAgICBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHN0ZXBfaWQsXG4gICAgICBwcmVfYmxhY2tib2FyZCAqIHN0ZXBfaWQgKVxuICAgIENJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGFkZF9zdGVwX3VwX3RvX2lzbyA6XG4gICAgKCBUcmFjZS5zdGVwLFxuICAgICAgcHJlX2JsYWNrYm9hcmQsXG4gICAgICBzdGVwX2lkLFxuICAgICAgcHJlX2JsYWNrYm9hcmQgKiBzdGVwX2lkIClcbiAgICBDSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCBmaW5hbGl6ZSA6XG4gICAgUHJpb3JpdHkucHJpb3JpdGllcyBvcHRpb24gLT5cbiAgICAocHJlX2JsYWNrYm9hcmQsIHByZV9ibGFja2JvYXJkKSBDSS5Qby5LLkgudW5hcnlcblxuICAoKipwcmV0dHkgcHJpbnRpbmcqKVxuXG4gIHZhbCBzdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIDogcHJlZGljYXRlX3ZhbHVlIC0+IHN0cmluZ1xuICB2YWwgcHJpbnRfcHJlZGljYXRlX3ZhbHVlIDogTG9nZ2Vycy50IC0+IHByZWRpY2F0ZV92YWx1ZSAtPiB1bml0XG4gIHZhbCBwcmludF9wcmVibGFja2JvYXJkIDogKHByZV9ibGFja2JvYXJkLCB1bml0KSBDSS5Qby5LLkgudW5hcnlcblxuICAoKippbnRlcmZhY2UqKVxuXG4gIHZhbCBuX2V2ZW50cyA6IChwcmVfYmxhY2tib2FyZCwgaW50KSBDSS5Qby5LLkgudW5hcnlcbiAgdmFsIG5fcHJlZGljYXRlcyA6IChwcmVfYmxhY2tib2FyZCwgaW50KSBDSS5Qby5LLkgudW5hcnlcblxuICB2YWwgbl9ldmVudHNfcGVyX3ByZWRpY2F0ZSA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBpbnQsIHByZWRpY2F0ZV9pZCkgQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBldmVudF9saXN0X29mX3ByZWRpY2F0ZSA6XG4gICAgKCBwcmVfYmxhY2tib2FyZCxcbiAgICAgIHByZWRpY2F0ZV9pZCxcbiAgICAgIChzdGVwX2lkICogaW50ICogcHJlZGljYXRlX3ZhbHVlICogcHJlZGljYXRlX3ZhbHVlKSBsaXN0IClcbiAgICBDSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIG1hbmRhdG9yeV9ldmVudHMgOlxuICAgICggcHJlX2JsYWNrYm9hcmQsXG4gICAgICAoc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3QgKVxuICAgIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBnZXRfcHJlX2V2ZW50IDogKHByZV9ibGFja2JvYXJkLCBUcmFjZS5zdGVwIEEudCkgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9zaWRlX2VmZmVjdCA6XG4gICAgKHByZV9ibGFja2JvYXJkLCBDSS5Qby5LLnNpZGVfZWZmZWN0IEEudCkgQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIGdldF9maWN0aXRpb3VzX29ic2VydmFibGUgOlxuICAgIChwcmVfYmxhY2tib2FyZCwgc3RlcF9pZCBvcHRpb24pIENJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBnZXRfbGV2ZWxfb2ZfZXZlbnQgOlxuICAgIChwcmVfYmxhY2tib2FyZCwgc3RlcF9pZCwgUHJpb3JpdHkubGV2ZWwpIENJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgbGV2ZWxzIDogcHJlX2JsYWNrYm9hcmQgLT4gUHJpb3JpdHkubGV2ZWwgQS50XG4gIHZhbCBwcmludF9wcmVkaWNhdGVfaW5mbyA6IExvZ2dlcnMudCAtPiBwcmVkaWNhdGVfaW5mbyAtPiB1bml0XG5lbmRcblxubW9kdWxlIFByZWJsYWNrYm9hcmQgOiBQcmVCbGFja2JvYXJkID0gc3RydWN0XG4gICgqKiBVc2VmdWwgbW9kdWxlcyAqKVxuXG4gIG1vZHVsZSBBID0gTW9kcy5EeW5BcnJheVxuICBtb2R1bGUgQ0kgPSBQc2V1ZG9faW52ZXJzZS5Qc2V1ZG9faW52XG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgbGV0IGVycm9yLCB4ID1cbiAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB4XG5cbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4KilcblxuICB0eXBlIHN0ZXBfaWQgPSBpbnRcbiAgKCoqIGdsb2JhbCBpZCBvZiBhbiBldmVudCAqKVxuXG4gIGxldCB6ZXJvX3N0ZXBfaWQgPSAwXG4gIGxldCBkdW1teV9zdGVwX2lkID0gLTFcbiAgbGV0IGludF9vZl9zdGVwX2lkIGkgPSBpXG4gIGxldCBzdGVwX2lkX29mX2ludCBpID0gaVxuICBsZXQgZGVjX3N0ZXBfaWQgaSA9IGkgLSAxXG4gIGxldCBpbmNfc3RlcF9pZCBpID0gaSArIDFcblxuICB0eXBlIHN0ZXBfc2hvcnRfaWQgPSBpbnRcbiAgKCoqIHBvc2l0aW9uIG9mIGFuIGV2ZW50IG9uIGEgd2lyZSAqKVxuXG4gIGxldCB6ZXJvX3N0ZXBfc2hvcnRfaWQgPSAwXG4gIGxldCBkdW1teV9zdGVwX3Nob3J0X2lkID0gLTFcbiAgbGV0IGludF9vZl9zdGVwX3Nob3J0X2lkIGkgPSBpXG4gIGxldCBzdGVwX3Nob3J0X2lkX29mX2ludCBpID0gaVxuICBsZXQgaW5jX3N0ZXBfc2hvcnRfaWQgaSA9IGkgKyAxXG4gIGxldCBkZWNfc3RlcF9zaG9ydF9pZCBpID0gaSAtIDFcblxuICAoKiogYmxhY2tib2FyZCBwcmVkaWNhdGVzKilcblxuICAoKioga2luZCBvZiBldmVudHMqKVxuICB0eXBlIHJ1bGVfdHlwZSA9XG4gICAgfCBTdWJzXG4gICAgfCBEdW1teVxuICAgIHwgSW5pdFxuICAgIHwgT2JzZXJ2YWJsZVxuICAgIHwgUnVsZVxuICAgIHwgU2lkZV9lZmZlY3Rfb2Ygb2ZcbiAgICAgICAgKHN0ZXBfaWQgKiAoQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lKSBsaXN0KVxuXG4gIHR5cGUgcHJlZGljYXRlX2lkID0gaW50XG4gICgqKiB3aXJlIGlkZW50aWZpZXJzICopXG5cbiAgdHlwZSBtdXRleCA9XG4gICAgfCBMb2NrX3NpZGVfZWZmZWN0IG9mXG4gICAgICAgIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkICogQ0kuUG8uSy5hZ2VudF9pZCAqIEluc3RhbnRpYXRpb24uc2l0ZV9uYW1lXG4gICAgfCBMb2NrX2FnZW50IG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBMb2NrX3JlY3Rhbmd1bGFyIG9mIHN0ZXBfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG4gICAgfCBMb2NrX2xpbmtzIG9mIHN0ZXBfaWQgKiAoQ0kuUG8uSy5hZ2VudF9pZCAqIENJLlBvLksuYWdlbnRfaWQpXG5cbiAgKCoqIHdpcmUgbGFiZWxzICopXG4gIHR5cGUgcHJlZGljYXRlX2luZm8gPVxuICAgIHwgRmljdGl0aW91cyAoKnRvIGhhbmRsZSB3aXRoIGFtYmlndW91cyBzaXRlIGVmZmVjdHMgKilcbiAgICB8IEhlcmUgb2YgQ0kuUG8uSy5hZ2VudF9pZFxuICAgIHwgQm91bmRfc2l0ZSBvZiBDSS5Qby5LLmFnZW50X2lkICogSW5zdGFudGlhdGlvbi5zaXRlX25hbWVcbiAgICB8IEludGVybmFsX3N0YXRlIG9mIENJLlBvLksuYWdlbnRfaWQgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgIHwgUG9pbnRlciBvZiBzdGVwX2lkICogQ0kuUG8uSy5hZ2VudF9pZFxuICAgIHwgTXV0ZXggb2YgbXV0ZXhcbiAgICB8IExpbmsgb2Ygc3RlcF9pZCAqIENJLlBvLksuYWdlbnRfaWQgKiBDSS5Qby5LLmFnZW50X2lkXG5cbiAgbGV0IF8gPSBMaW5rICgwLCAwLCAwKVxuICAoKiBkbyBub3QgcmVtb3ZlLCBpdCB3aWxsIGJlIG5lY2Vzc2FyeSBmb3IgZGVhbGluZyBlZmZlY3RpdmVseSB3aXRoIHVuYXJ5L2JpbmFyeSBydWxlICopXG5cbiAgdHlwZSBwcmVkaWNhdGVfdmFsdWUgPVxuICAgIHwgQ291bnRlciBvZiBpbnRcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgb2YgSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lXG4gICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBvZiBDSS5Qby5LLmludGVybmFsX3N0YXRlXG4gICAgfCBEZWZpbmVkICAoKiogdGhlIHdpcmUgZG9lcyBleGlzdCwgYnV0IHdlIGRvIG5vdCBrbm93IHdoYXQgdGhlIHZhbHVlIGlzICopXG4gICAgfCBVbmRlZmluZWQgICgqKiB0aGUgd2lyZSBkb2VzIG5vdCBleGlzdCB5ZXQgKilcbiAgICB8IFByZXNlbnQgICgqKiBmb3IgYWdlbnQgcHJlc2VuY2UgKilcbiAgICB8IEZyZWUgICgqKiBmb3IgYmluZGluZyBzaXRlcyAqKVxuICAgIHwgQm91bmQgICgqKiBmb3IgYmluZGluZyBzaXRlcyAocGFydGlhbCBpbmZvcm1hdGlvbikgKilcbiAgICB8IEJvdW5kX3RvIG9mXG4gICAgICAgIHByZWRpY2F0ZV9pZFxuICAgICAgICAqIENJLlBvLksuYWdlbnRfaWRcbiAgICAgICAgKiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWVcbiAgICAgICAgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgICAgICAoKiogZm9yIGJpbmRpbmYgc2l0ZXMgKGNvbXBsZXRlIGluZm9ybWF0aW9uKSAqKVxuICAgIHwgQm91bmRfdG9fdHlwZSBvZiBJbnN0YW50aWF0aW9uLmFnZW50X25hbWUgKiBJbnN0YW50aWF0aW9uLnNpdGVfbmFtZVxuICAgICAgICAoKiogZm9yIGJpbmRpbmcgc2l0ZXMgKHBhcnRpYWwgaW5mb3JtYXRpb24gKilcbiAgICB8IFVua25vd25cbiAgICAgICAgKCoqICBmb3IgYWdlbnQgcHJlc2VuY2UsIGludGVybmFsIHN0YXRlcywgYmluZGluZyBzdGF0ZXMgKHBhcnRpYWwgaW5mb3JtYXRpb24gKilcblxuICBtb2R1bGUgQyA6IENhY2hlLkNhY2hlIHdpdGggdHlwZSBPLnQgPSBwcmVkaWNhdGVfdmFsdWUgPSBDYWNoZS5DYWNoZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX3ZhbHVlXG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIGxldCB3ZWFrZW5pbmcgcCA9XG4gICAgbWF0Y2ggcCB3aXRoXG4gICAgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudCB8IEZyZWVcbiAgICB8IEJvdW5kIC0+XG4gICAgICBbIHA7IERlZmluZWQgXVxuICAgIHwgQm91bmRfdG8gKF8sIF8sIGFnLCBzaXRlKSAtPlxuICAgICAgWyBwOyBCb3VuZF90b190eXBlIChhZywgc2l0ZSk7IEJvdW5kOyBEZWZpbmVkIF1cbiAgICB8IEJvdW5kX3RvX3R5cGUgXyAtPiBbIHA7IEJvdW5kOyBEZWZpbmVkIF1cbiAgICB8IERlZmluZWQgfCBVbmRlZmluZWQgLT4gWyBwIF1cbiAgICB8IFVua25vd24gLT4gW11cblxuICBsZXQgZGVmaW5lZCA9IERlZmluZWRcbiAgbGV0IHVuZGVmaW5lZCA9IFVuZGVmaW5lZFxuICBsZXQgdW5rbm93biA9IFVua25vd25cbiAgbGV0IGlzX3Vua25vd24geCA9IHggPSBVbmtub3duXG4gIGxldCBpc191bmRlZmluZWQgeCA9IHggPSBVbmRlZmluZWRcblxuICAoKiogbWFwcyBhbmQgc2V0cyAqKVxuXG4gIG1vZHVsZSBQcmVkaWNhdGVTZXRNYXAgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0gcHJlZGljYXRlX2luZm9cblxuICAgIGxldCBjb21wYXJlID0gY29tcGFyZVxuICAgIGxldCBwcmludCBfIF8gPSAoKVxuICBlbmQpXG5cbiAgbW9kdWxlIFByZWRpY2F0ZVNldCA9IFByZWRpY2F0ZVNldE1hcC5TZXRcbiAgbW9kdWxlIFByZWRpY2F0ZU1hcCA9IFByZWRpY2F0ZVNldE1hcC5NYXBcblxuICBtb2R1bGUgQ2FzZVZhbHVlU2V0TWFwID0gU2V0TWFwLk1ha2UgKHN0cnVjdFxuICAgIHR5cGUgdCA9IHByZWRpY2F0ZV92YWx1ZVxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgQ2FzZVZhbHVlU2V0ID0gQ2FzZVZhbHVlU2V0TWFwLlNldFxuICBtb2R1bGUgUHJlZGljYXRlaWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgUHJlZGljYXRlaWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgU2lkTWFwID0gTW9kcy5JbnRNYXBcbiAgbW9kdWxlIEFnZW50SWRNYXAgPSBNb2RzLkludE1hcFxuICBtb2R1bGUgQWdlbnRJZDJNYXAgPSBNb2RzLkludDJNYXBcbiAgbW9kdWxlIEFnZW50SWRTZXQgPSBNb2RzLkludFNldFxuICBtb2R1bGUgQWdlbnRJZDJTZXQgPSBNb2RzLkludDJTZXRcbiAgbW9kdWxlIFNpdGVJZFNldCA9IE1vZHMuSW50MlNldFxuICBtb2R1bGUgU2l0ZUlkTWFwID0gTW9kcy5JbnQyTWFwXG5cbiAgdHlwZSBwcmVfYmxhY2tib2FyZCA9IHtcbiAgICBwcmVfZmljdGl0aW91c19saXN0OiBwcmVkaWNhdGVfaWQgbGlzdDtcbiAgICAgICAgKCoqIGxpc3Qgb2Ygd2lyZSBmb3IgbXV0dWFsIGV4Y2x1c2lvbnMsIHRoZSBzdGF0ZSBtdXN0IGJlIHVuZGVmaW5lZCBhdCB0aGUgZW5kIG9mIHRoZSB0cmFjZSAqKVxuICAgIHByZV9zdGVwc19ieV9jb2x1bW46XG4gICAgICAoc3RlcF9zaG9ydF9pZFxuICAgICAgKiAoc3RlcF9pZCAqIHN0ZXBfc2hvcnRfaWQgKiBwcmVkaWNhdGVfdmFsdWUgKiBwcmVkaWNhdGVfdmFsdWUpIGxpc3QpXG4gICAgICBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSB0byB0aGUgbGFzdCBrbm93biB2YWx1ZSBhbmQgdGhlIGxpc3Qgb2Ygc3RlcCAoc3RlcCBpZCx0ZXN0LGFjdGlvbikqKVxuICAgIHByZV9raW5kX29mX2V2ZW50OiBydWxlX3R5cGUgQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIGV2ZW50IGlkIHRvIHRoZSBraW5kIG9mIGV2ZW50ICopXG4gICAgcHJlX2V2ZW50OiBUcmFjZS5zdGVwIEEudDsgICgqKiBtYXBzIGVhY2ggZXZlbnQgdG8gdGhlIHN0ZXAgKilcbiAgICBwcmVfbnN0ZXBzOiBzdGVwX2lkOyAgKCoqaWQgb2YgdGhlIGxhc3QgZXZlbnQgKilcbiAgICBwcmVfbmNvbHVtbjogcHJlZGljYXRlX2lkOyAgKCoqaWQgb2YgdGhlIGxhc3Qgd2lyZSAqKVxuICAgIHByZV9jb2x1bW5fbWFwOiBwcmVkaWNhdGVfaWQgUHJlZGljYXRlTWFwLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBsYWJlbCB0byBpdHMgd2lyZSBpZCAqKVxuICAgIHByZV9jb2x1bW5fbWFwX2ludjogcHJlZGljYXRlX2luZm8gQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIHdpcmUgaWQgdG8gaXRzIHdpcmUgbGFiZWwgKilcbiAgICBwcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZDogUHJlZGljYXRlaWRTZXQudCBBLnQ7XG4gICAgICAgICgqKiBtYXBzIGVhY2ggd2lyZSBpZCBmb3IgdGhlIHByZXNlbmNlIG9mIGFuIGFnZW50IHRvIHRoZSBzZXQgb2Ygd2lyZXMgZm9yIGl0cyBhdHRpYnV0ZSAodXNlZnVsLCB3aGVuIGFuIGFnZW50IGdldCByZW1vdmVkLCBhbGwgaXRzIGF0dHJpYnV0ZXMgZ2V0IHVuZGVmaW5lZCAqKVxuICAgIGhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWQ6IEMudCBBLnQ7XG4gICAgICAgICgqIG1hcHMgZWFjaCB3aXJlIHRvIHRoZSBzZXQgb2YgaXRzIHByZXZpb3VzIHN0YXRlcywgdGhpcyBzdW1tYXJpemUgdGhlIHBvdGVudGlhbCBzdGF0ZSBvZiBhIHNpdGUgdGhhdCBpcyBmcmVlZCwgc28gYXMgdG8gb3ZlcmFwcHJveGltYXRlIHRoZSBzZXQgb2YgcG90ZW50aWFsIHNpZGUgZWZmZWN0cyopXG4gICAgaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZTogQ0kuUG8uSy5hZ2VudF9pZCBsaXN0IEEudDtcbiAgICBwcmVfb2JzZXJ2YWJsZV9saXN0OlxuICAgICAgKHN0ZXBfaWQgbGlzdCAqIHVuaXQgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgb3B0aW9uKSBsaXN0O1xuICAgIHByZV9zaWRlX2VmZmVjdF9vZl9ldmVudDogQ0kuUG8uSy5zaWRlX2VmZmVjdCBBLnQ7XG4gICAgcHJlX2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZTogc3RlcF9pZCBvcHRpb247XG4gICAgICAgICgqaWQgb2YgdGhlIHN0ZXAgdGhhdCBjbG9zZXMgYWxsIHRoZSBzaWRlLWVmZmVjdCBtdXRleCAqKVxuICAgIHByZV9sZXZlbF9vZl9ldmVudDogUHJpb3JpdHkubGV2ZWwgQS50O1xuICB9XG5cbiAgbGV0IGxldmVscyBiID0gYi5wcmVfbGV2ZWxfb2ZfZXZlbnRcbiAgbGV0IGdldF9wcmVfY29sdW1uX21hcF9pbnYgeCA9IHgucHJlX2NvbHVtbl9tYXBfaW52XG5cbiAgbGV0IGdldF9wcmVfZXZlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4ID1cbiAgICBlcnJvciwgbG9nX2luZm8sIHgucHJlX2V2ZW50XG5cbiAgKCoqIHByZXR0eSBwcmludGluZyAqKVxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfaW5mbyBsb2cgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBIZXJlIGkgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkFnZW50X0hlcmUgJWlcIiBpXG4gICAgfCBCb3VuZF9zaXRlIChpLCBzKSAtPiBMb2dnZXJzLmZwcmludGYgbG9nIFwiQmluZGluZ19zdGF0ZSAoJWksJWkpXCIgaSBzXG4gICAgfCBJbnRlcm5hbF9zdGF0ZSAoaSwgcykgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkludGVybmFsX3N0YXRlICglaSwlaSlcIiBpIHNcbiAgICB8IFBvaW50ZXIgKGVpZCwgaWQpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQb2ludGVyKGVpZDolaSxhZ19pZDolaSlcIiBlaWQgaWRcbiAgICB8IExpbmsgKGVpZCwgaWQxLCBpZDIpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTGluayhlaWQ6JWksJWktJWkpXCIgZWlkIGlkMSBpZDJcbiAgICB8IE11dGV4IChMb2NrX2FnZW50IChpbnQsIGludDIpKSAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk11dGV4IChTdGVwLWlkOiVpLEFnZW50X2lkOiVpKVwiIGludCBpbnQyXG4gICAgfCBNdXRleCAoTG9ja19yZWN0YW5ndWxhciAoaW50LCBpbnQyKSkgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJNdXRleF9pbnYgKFN0ZXAtaWQ6JWksQWdlbnRfaWQ6JWkpXCIgaW50IGludDJcbiAgICB8IE11dGV4IChMb2NrX2xpbmtzIChpbnQsIChpbnQyLCBpbnQzKSkpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXhfbGlua3MgKFN0ZXAtaWQ6JWksJWktJWkpXCIgaW50IGludDIgaW50M1xuICAgIHwgTXV0ZXggKExvY2tfc2lkZV9lZmZlY3QgKGludCwgaW50MiwgaW50MywgaW50NCkpIC0+XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiTXV0ZXhfc2lkZV9lZmZlY3QgKFN0ZXAtaWQ6JWksJWkvJWkuJWkpXCIgaW50IGludDJcbiAgICAgICAgaW50MyBpbnQ0XG4gICAgfCBGaWN0aXRpb3VzIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJGaWN0aXRpb3VzXCJcblxuICBsZXQgcHJpbnRfa25vd24gbG9nIHQgeCA9XG4gICAgbWF0Y2ggdCB3aXRoXG4gICAgfCBVbmtub3duIC0+ICgpXG4gICAgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudCB8IEZyZWVcbiAgICB8IEJvdW5kIHwgQm91bmRfdG8gXyB8IEJvdW5kX3RvX3R5cGUgXyB8IERlZmluZWQgfCBVbmRlZmluZWQgLT5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIlc1wiIHhcblxuICBsZXQgc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IENvdW50ZXIgaW50IC0+IFwiQ291bnRlciBcIiBeIHN0cmluZ19vZl9pbnQgaW50XG4gICAgfCBEZWZpbmVkIC0+IFwiRGVmaW5lZFwiXG4gICAgfCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnRlcm5hbF9zdGF0ZSAtPiBzdHJpbmdfb2ZfaW50IGludGVybmFsX3N0YXRlXG4gICAgfCBVbmRlZmluZWQgLT4gXCJVbmRlZmluZWRcIlxuICAgIHwgUHJlc2VudCAtPiBcIlByZXNlbnRcIlxuICAgIHwgRnJlZSAtPiBcIkZyZWVcIlxuICAgIHwgQm91bmQgLT4gXCJCb3VuZFwiXG4gICAgfCBCb3VuZF90byAoaWQsIGFnZW50X2lkLCBhZ2VudF9uYW1lLCBzaXRlKSAtPlxuICAgICAgXCJCb3VuZChcIiBeIHN0cmluZ19vZl9pbnQgaWQgXiBcIixcIiBeIHN0cmluZ19vZl9pbnQgYWdlbnRfaWQgXiBcIihcIlxuICAgICAgXiBzdHJpbmdfb2ZfaW50IGFnZW50X25hbWUgXiBcIilAXCIgXiBzdHJpbmdfb2ZfaW50IHNpdGUgXiBcIilcIlxuICAgIHwgQm91bmRfdG9fdHlwZSAoYWdlbnQsIHNpdGUpIC0+XG4gICAgICBcIkJvdW5kKFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudCBeIFwiQFwiIF4gc3RyaW5nX29mX2ludCBzaXRlIF4gXCIpXCJcbiAgICB8IFBvaW50ZXJfdG9fYWdlbnQgYWdlbnRfaWQgLT4gXCJQb2ludGVyKFwiIF4gc3RyaW5nX29mX2ludCBhZ2VudF9pZCBeIFwiKVwiXG4gICAgfCBVbmtub3duIC0+IFwiXCJcblxuICBsZXQgcHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyB4ID1cbiAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiAoc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSB4KVxuXG4gIGxldCBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaSA9XG4gICAgbGV0IHByZWRpY2F0ZV9pbmZvID0gQS5nZXQgYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgaSBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQcmVkaWNhdGU6ICVpIFwiIGkgaW5cbiAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaW5mbyBsb2cgcHJlZGljYXRlX2luZm8gaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgKClcblxuICBsZXQgcHJpbnRfcHJlYmxhY2tib2FyZCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGxvZyA9IENJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIioqUFJFQkxBQ0tCT0FSRCoqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogIGFnZW50IHR5cGVzICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIG5hbWUgLT5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQWdlbnQgbmFtZTogJWkgXCIgbmFtZSBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBMaXN0Lml0ZXIgKGZ1biB4IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgaWQ6ICVpIFwiIHggaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAoKSkpXG4gICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqIHN0ZXBzIGJ5IGNvbHVtbiAqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID1cbiAgICAgIEEuaXRlcmlcbiAgICAgICAgKGZ1biBpZCAobmV2ZW50cywgbGlzdCkgLT5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfaWQgbG9nIGJsYWNrYm9hcmQgaWQgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwibmV2ZW50czogJWkgXCIgbmV2ZW50cyBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTGlzdC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gKGVpZCwgc2VpZCwgdGVzdCwgYWN0aW9uKSAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVudCBpZDogJWkgXCIgZWlkIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJTaG9ydCBpZDogJWkgXCIgc2VpZCBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9rbm93biBsb2cgdGVzdCBcIlRFU1Q6ICAgXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIHRlc3QgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfa25vd24gbG9nIGFjdGlvbiBcIkFDVElPTjogXCIgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGFjdGlvbiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgICAgKExpc3QucmV2IGxpc3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiLS0tXCIgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogU2lkZSBlZmZlY3RzICpcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQS5pdGVyaVxuICAgICAgICAoZnVuIGkgbGlzdCAtPlxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJldmVudCAlaTosIFwiIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDSS5Qby5LLnByaW50X3NpZGVfZWZmZWN0IGxvZyBsaXN0IGluXG4gICAgICAgICAgKCkpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKlByZWRpY2F0ZV9pZCByZWxhdGVkIHRvIHRoZSBwcmVkaWNhdGUgKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlZGljYXRlX2lkIGxvZyBibGFja2JvYXJkIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgUHJlZGljYXRlaWRTZXQuaXRlclxuICAgICAgICAgICAgICAoZnVuIHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJWlcIiBzIGluXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgICAgICAgc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIi0tLVwiIGluXG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAgICgpKVxuICAgICAgICBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKlBhc3QgdmFsdWVzIG9mIGEgcHJlZGljYXRlKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBBLml0ZXJpXG4gICAgICAgIChmdW4gaSBzIC0+XG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfcHJlZGljYXRlX2lkIGxvZyBibGFja2JvYXJkIGkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBDLml0ZXIgKGZ1biBzIC0+IHByaW50X3ByZWRpY2F0ZV92YWx1ZSBsb2cgcykgcyBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCItLS1cIiBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKk9ic2VydmFibGVzKlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExpc3QuaXRlclxuICAgICAgICAoZnVuIChsLCBfKSAtPlxuICAgICAgICAgIGxldCBfID0gTGlzdC5pdGVyIChMb2dnZXJzLmZwcmludGYgbG9nIFwiJWksXCIpIGwgaW5cbiAgICAgICAgICBsZXQgXyA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAoKSlcbiAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgKCoqIGluZm9ybWF0aW9uIGxhdHRpY2UgKilcblxuICBsZXQgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeSA9XG4gICAgbWF0Y2ggeSB3aXRoXG4gICAgfCBVbmRlZmluZWQgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgUHJlc2VudFxuICAgIHwgRnJlZSB8IEJvdW5kX3RvIF8gLT5cbiAgICAgIGZhbHNlXG4gICAgfCBCb3VuZF90b190eXBlIChhZywgcykgLT5cbiAgICAgIChtYXRjaCB4IHdpdGhcbiAgICAgIHwgQm91bmRfdG8gKF8sIF8sIGFnJywgcycpIHdoZW4gYWcgPSBhZycgJiYgcyA9IHMnIC0+IHRydWVcbiAgICAgIHwgXyAtPiBmYWxzZSlcbiAgICB8IEJvdW5kIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IEJvdW5kX3RvIF8gfCBCb3VuZF90b190eXBlIF8gLT4gdHJ1ZVxuICAgICAgfCBfIC0+IGZhbHNlKVxuICAgIHwgRGVmaW5lZCAtPlxuICAgICAgKG1hdGNoIHggd2l0aFxuICAgICAgfCBVbmtub3duIHwgRGVmaW5lZCB8IFVuZGVmaW5lZCAtPiBmYWxzZVxuICAgICAgfCBfIC0+IHRydWUpXG4gICAgfCBVbmtub3duIC0+XG4gICAgICAobWF0Y2ggeCB3aXRoXG4gICAgICB8IFVua25vd24gLT4gZmFsc2VcbiAgICAgIHwgXyAtPiB0cnVlKVxuXG4gIGxldCBtb3JlX3JlZmluZWQgeCB5ID0geCA9IHkgfHwgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIHggeVxuXG4gIGxldCBjb25qIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciB4IHkgPVxuICAgIGlmIG1vcmVfcmVmaW5lZCB4IHkgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCB4XG4gICAgZWxzZSBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgeSB4IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgeVxuICAgIGVsc2VcbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJjb25qLCAgQXJndW1lbnRzIGhhdmUgbm8gZ3JlYXRlc3QgbG93ZXIgYm91bmRcIlxuICAgICAgICAoRmFpbHVyZSBcIkFyZ3VtZW50cyBoYXZlIG5vIGdyZWF0ZXN0IGxvd2VyIGJvdW5kXCIpIFVuZGVmaW5lZFxuXG4gIGxldCBjb21wYXRpYmxlIHggeSA9IHggPSB5IHx8IG1vcmVfcmVmaW5lZCB4IHkgfHwgbW9yZV9yZWZpbmVkIHkgeFxuXG4gIGxldCBkaXNqdW5jdGlvbiBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSA9XG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgaWYgeCA9IHkgdGhlblxuICAgICAgICB4XG4gICAgICBlbHNlIChcbiAgICAgICAgbWF0Y2ggeCwgeSB3aXRoXG4gICAgICAgIHwgVW5rbm93biwgXyB8IF8sIFVua25vd24gfCBVbmRlZmluZWQsIF8gfCBfLCBVbmRlZmluZWQgLT4gVW5rbm93blxuICAgICAgICB8IERlZmluZWQsIF8gfCBfLCBEZWZpbmVkIC0+IERlZmluZWRcbiAgICAgICAgfCBDb3VudGVyIF8sIF9cbiAgICAgICAgfCBfLCBDb3VudGVyIF9cbiAgICAgICAgfCBGcmVlLCBfXG4gICAgICAgIHwgXywgRnJlZVxuICAgICAgICB8IFByZXNlbnQsIF9cbiAgICAgICAgfCBfLCBQcmVzZW50XG4gICAgICAgIHwgSW50ZXJuYWxfc3RhdGVfaXMgXywgX1xuICAgICAgICB8IF8sIEludGVybmFsX3N0YXRlX2lzIF8gLT5cbiAgICAgICAgICBEZWZpbmVkXG4gICAgICAgIHwgQm91bmQsIF8gfCBfLCBCb3VuZCAtPiBCb3VuZFxuICAgICAgICB8IEJvdW5kX3RvX3R5cGUgKGEsIGIpLCBCb3VuZF90byAoXywgXywgYywgZClcbiAgICAgICAgfCBCb3VuZF90byAoXywgXywgYSwgYiksIEJvdW5kX3RvIChfLCBfLCBjLCBkKVxuICAgICAgICB8IEJvdW5kX3RvIChfLCBfLCBhLCBiKSwgQm91bmRfdG9fdHlwZSAoYywgZClcbiAgICAgICAgICB3aGVuIGEgPSBjICYmIGIgPSBkIC0+XG4gICAgICAgICAgQm91bmRfdG9fdHlwZSAoYSwgYilcbiAgICAgICAgfCBfIC0+IEJvdW5kXG4gICAgICApIClcblxuICAoKiogcHJlZGljYXRlIGlkIGFsbG9jYXRpb24gKilcblxuICAoKiogaWYgYSB3aXJlIGNvbmNlcm5zIGFuIGFnZW50LCB3aGljaCBvbmUgaXQgaXMgKilcbiAgbGV0IGFnZW50X2lkX29mX3ByZWRpY2F0ZSB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IEhlcmUgeCAtPiBTb21lIHhcbiAgICB8IEJvdW5kX3NpdGUgKHgsIF8pIC0+IFNvbWUgeFxuICAgIHwgSW50ZXJuYWxfc3RhdGUgKHgsIF8pIC0+IFNvbWUgeFxuICAgIHwgUG9pbnRlciBfIHwgTXV0ZXggXyB8IExpbmsgXyB8IEZpY3RpdGlvdXMgLT4gTm9uZVxuXG4gIGxldCByZWMgYmluZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIF9wcmVkaWNhdGVcbiAgICAgIHByZWRpY2F0ZV9pZCBhZ19pZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgc2lkID1cbiAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgaW5cbiAgICBsZXQgb2xkX3NldCA9XG4gICAgICB0cnkgQS5nZXQgYmxhY2tib2FyZC5wcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCBzaWRcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+IFByZWRpY2F0ZWlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgbmV3X3NldCA9IFByZWRpY2F0ZWlkU2V0LmFkZCBwcmVkaWNhdGVfaWQgb2xkX3NldCBpblxuICAgIHRyeVxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHNpZCBuZXdfc2V0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJiaW5kLCBPdXQgb2YgYm91bmQgYWNjZXNzXCJcbiAgICAgICAgKEZhaWx1cmUgXCJiaW5kXCIpIGJsYWNrYm9hcmRcblxuICBhbmQgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGUgPVxuICAgIGxldCBhZ19pZCA9IGFnZW50X2lkX29mX3ByZWRpY2F0ZSBwcmVkaWNhdGUgaW5cbiAgICBsZXQgbWFwID0gYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcCBpblxuICAgIGxldCBtYXBfaW52ID0gYmxhY2tib2FyZC5wcmVfY29sdW1uX21hcF9pbnYgaW5cbiAgICBtYXRjaCBQcmVkaWNhdGVNYXAuZmluZF9vcHRpb24gcHJlZGljYXRlIG1hcCB3aXRoXG4gICAgfCBTb21lIHNpZCAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHNpZFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IHNpZCcgPSBibGFja2JvYXJkLnByZV9uY29sdW1uICsgMSBpblxuICAgICAgbGV0IG1hcCcgPSBQcmVkaWNhdGVNYXAuYWRkIHByZWRpY2F0ZSBzaWQnIG1hcCBpblxuICAgICAgbGV0IF8gPSBBLnNldCBtYXBfaW52IHNpZCcgcHJlZGljYXRlIGluXG4gICAgICBsZXQgbWFwX2ludicgPSBtYXBfaW52IGluXG4gICAgICBsZXQgXyA9XG4gICAgICAgIEEuc2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZCBzaWQnXG4gICAgICAgICAgKEMuY3JlYXRlIHBhcmFtZXRlci5DSS5Qby5LLkguY2FjaGVfc2l6ZSlcbiAgICAgIGluXG4gICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgIHtcbiAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICBwcmVfbmNvbHVtbiA9IHNpZCc7XG4gICAgICAgICAgcHJlX2NvbHVtbl9tYXAgPSBtYXAnO1xuICAgICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IG1hcF9pbnYnO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIG1hdGNoIGFnX2lkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICB8IFNvbWUgYWdfaWQgLT5cbiAgICAgICAgICBiaW5kIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlIHNpZCcgYWdfaWRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHNpZCdcblxuICBsZXQgY3JlYXRlX2FnZW50IF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnZW50X2lkID1cbiAgICBsZXQgb2xkX2xpc3QgPVxuICAgICAgdHJ5IEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSBhZ2VudF9uYW1lXG4gICAgICB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuICAgIGluXG4gICAgbGV0IG5ld19saXN0ID0gYWdlbnRfaWQgOjogb2xkX2xpc3QgaW5cbiAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSBhZ2VudF9uYW1lIG5ld19saXN0IGluXG4gICAgZXJyb3IsIGJsYWNrYm9hcmRcblxuICBsZXQgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnZW50X2lkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCAoSGVyZSBhZ2VudF9pZClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNldCA9XG4gICAgICB0cnlcbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICBwcmVkaWNhdGVfaWQgKVxuICAgICAgd2l0aCBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcImZyZWVfYWdlbnQsIFRyeSB0byBmcmVlIGFuIHVuZXhpc3RpbmcgYWdlbnRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiZnJlZV9hZ2VudFwiKSBQcmVkaWNhdGVpZFNldC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1hcCA9XG4gICAgICBQcmVkaWNhdGVpZFNldC5mb2xkXG4gICAgICAgIChmdW4gcHJlZGljYXRlX2lkIG1hcCAtPlxuICAgICAgICAgIGxldCBwcmVkaWNhdGUgPSBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBwcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBQcmVkaWNhdGVNYXAucmVtb3ZlIHByZWRpY2F0ZSBtYXApXG4gICAgICAgIHNldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIHByZV9jb2x1bW5fbWFwID0gbWFwIH1cblxuICBsZXQgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgYWdlbnRfaWQgPVxuICAgIGlmIFByZWRpY2F0ZU1hcC5tZW0gKEhlcmUgYWdlbnRfaWQpIGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXAgdGhlblxuICAgICAgZnJlZV9hZ2VudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGFnZW50X2lkXG4gICAgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgaW5pdCBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBjcmVhdGVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGlmIGluaXQgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnX2lkKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlzdDEgPSAocHJlZGljYXRlX2lkLCBGcmVlKSA6OiBsaXN0MSBpblxuICAgICAgICAgIGxldCBsaXN0MiA9IChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QxLCBsaXN0MlxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgKEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAocHJlZGljYXRlX2lkLCBVbmRlZmluZWQpIDo6IGxpc3QyICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSApXG4gICAgICAgIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgaW50IF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDEsIGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdLCBbXVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGZyZWVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZ19pZFxuICAgICAgaW5cbiAgICAgIGxldCBzZXQgPVxuICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZWRpY2F0ZV9pZF9saXN0X3JlbGF0ZWRfdG9fcHJlZGljYXRlX2lkIHByZWRpY2F0ZV9pZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCwgbGlzdCA9XG4gICAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHByZWRpY2F0ZWlkIChlcnJvciwgYmxhY2tib2FyZCwgbGlzdCkgLT5cbiAgICAgICAgICAgIGVycm9yLCBibGFja2JvYXJkLCAocHJlZGljYXRlaWQsIFVuZGVmaW5lZCkgOjogbGlzdClcbiAgICAgICAgICBzZXRcbiAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QsIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uX3N1YnMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpbml0XG4gICAgICBhY3Rpb24gPVxuICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSAoYWcsIGludGVyZmFjZSkgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX2FnZW50IGFnIGluXG4gICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICBjcmVhdGVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ2VudF9uYW1lIGFnX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGlmIGluaXQgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZnJlZV9hZ2VudF9pZl9pdF9leGlzdHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgYWdfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIChIZXJlIGFnX2lkKVxuICAgICAgaW5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdDEsIGxpc3QyKSAoc19pZCwgb3B0KSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlzdDEgPSAocHJlZGljYXRlX2lkLCBGcmVlKSA6OiBsaXN0MSBpblxuICAgICAgICAgIGxldCBsaXN0MiA9IChwcmVkaWNhdGVfaWQsIFVuZGVmaW5lZCkgOjogbGlzdDIgaW5cbiAgICAgICAgICBtYXRjaCBvcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QxLCBsaXN0MlxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgKEludGVybmFsX3N0YXRlIChhZ19pZCwgc19pZCkpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIEludGVybmFsX3N0YXRlX2lzIHgpIDo6IGxpc3QxLFxuICAgICAgICAgICAgICAocHJlZGljYXRlX2lkLCBVbmRlZmluZWQpIDo6IGxpc3QyICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdLFxuICAgICAgICAgIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSApXG4gICAgICAgIGludGVyZmFjZVxuICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgKHNpdGUsIGludCkgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAoSW50ZXJuYWxfc3RhdGVcbiAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgSW50ZXJuYWxfc3RhdGVfaXMgaW50IF0sIFtdXG4gICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHMxLCBzMikgLT5cbiAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ19pZDIgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgIF0sXG4gICAgICAgIFtdIClcbiAgICB8IEluc3RhbnRpYXRpb24uQmluZCAoczEsIHMyKSAtPlxuICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzMiBpblxuICAgICAgbGV0IGFnZW50X25hbWUxID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBhZ2VudF9uYW1lMiA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgc2l0ZV9pZDEgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgc2l0ZV9pZDIgPSBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQxID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDEsIHNpdGVfaWQxKSlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQyID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZDIsIHNpdGVfaWQyKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgW1xuICAgICAgICAgIHByZWRpY2F0ZV9pZDEsIEJvdW5kX3RvIChwcmVkaWNhdGVfaWQyLCBhZ19pZDIsIGFnZW50X25hbWUyLCBzaXRlX2lkMik7XG4gICAgICAgICAgcHJlZGljYXRlX2lkMiwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDEsIGFnX2lkMSwgYWdlbnRfbmFtZTEsIHNpdGVfaWQxKTtcbiAgICAgICAgXSxcbiAgICAgICAgW10gKVxuICAgIHwgSW5zdGFudGlhdGlvbi5GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdLCBbXVxuICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWcgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWcgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgKCogICAgICAgICAgICAgICBsZXQgZXJyb3IsYmxhY2tib2FyZCA9IGZyZWVfYWdlbnQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgYmxhY2tib2FyZCBhZ19pZCBpbiAqKVxuICAgICAgbGV0IHNldCA9XG4gICAgICAgIEEuZ2V0IGJsYWNrYm9hcmQucHJlZGljYXRlX2lkX2xpc3RfcmVsYXRlZF90b19wcmVkaWNhdGVfaWQgcHJlZGljYXRlX2lkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdCA9XG4gICAgICAgIFByZWRpY2F0ZWlkU2V0LmZvbGRcbiAgICAgICAgICAoZnVuIHByZWRpY2F0ZWlkIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QpIC0+XG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIChwcmVkaWNhdGVpZCwgVW5kZWZpbmVkKSA6OiBsaXN0KVxuICAgICAgICAgIHNldFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBVbmRlZmluZWQgXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3QsIFtdXG5cbiAgbGV0IHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGJvb2wgPVxuICAgIGlmIGJvb2wgdGhlblxuICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb25fc3Vic1xuICAgIGVsc2VcbiAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uX25vX3N1YnNcblxuICBsZXQgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdGVzdCA9XG4gICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgKEhlcmUgYWdfaWQpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgUHJlc2VudCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgaW50KSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChJbnRlcm5hbF9zdGF0ZVxuICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZSwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBJbnRlcm5hbF9zdGF0ZV9pcyBpbnQgXVxuICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHMgLT5cbiAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgc2l0ZV9pZCA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgcyBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIHByZWRpY2F0ZV9pZCwgRnJlZSBdXG4gICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzMSwgczIpIC0+XG4gICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMxIGluXG4gICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMyIGluXG4gICAgICBsZXQgYWdlbnRfbmFtZTEgPSBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzMSBpblxuICAgICAgbGV0IGFnZW50X25hbWUyID0gQ0kuUG8uSy5hZ2VudF9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczEgaW5cbiAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgczIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDEgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMSwgc2l0ZV9pZDEpKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZDIgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkMiwgc2l0ZV9pZDIpKVxuICAgICAgaW5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICBbXG4gICAgICAgICAgcHJlZGljYXRlX2lkMSwgQm91bmRfdG8gKHByZWRpY2F0ZV9pZDIsIGFnX2lkMiwgYWdlbnRfbmFtZTIsIHNpdGVfaWQyKTtcbiAgICAgICAgICBwcmVkaWNhdGVfaWQyLCBCb3VuZF90byAocHJlZGljYXRlX2lkMSwgYWdfaWQxLCBhZ2VudF9uYW1lMSwgc2l0ZV9pZDEpO1xuICAgICAgICBdIClcbiAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgcyAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFsgcHJlZGljYXRlX2lkLCBCb3VuZCBdXG4gICAgfCBJbnN0YW50aWF0aW9uLkhhc19CaW5kaW5nX3R5cGUgKHMsIChhZ2VudF9uYW1lLCBzaXRlX25hbWUpKSAtPlxuICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHMgaW5cbiAgICAgIGxldCBzaXRlX2lkID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgKEJvdW5kX3NpdGUgKGFnX2lkLCBzaXRlX2lkKSlcbiAgICAgIGluXG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgWyBwcmVkaWNhdGVfaWQsIEJvdW5kX3RvX3R5cGUgKGFnZW50X25hbWUsIHNpdGVfbmFtZSkgXSApXG5cbiAgbGV0IHR5cGVfb2Zfc3RlcCB4ID1cbiAgICBpZiBUcmFjZS5zdGVwX2lzX29icyB4IHRoZW5cbiAgICAgIE9ic2VydmFibGVcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfaW5pdCB4IHRoZW5cbiAgICAgIEluaXRcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfcnVsZSB4IHRoZW5cbiAgICAgIFJ1bGVcbiAgICBlbHNlIGlmIFRyYWNlLnN0ZXBfaXNfc3VicyB4IHRoZW5cbiAgICAgIFN1YnNcbiAgICBlbHNlXG4gICAgICBEdW1teVxuXG4gICgqKiBpbml0aWFsaXNhdGlvbiopXG4gIGxldCBpbml0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHtcbiAgICAgICAgcHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50ID0gQS5tYWtlIDEgQ0kuUG8uSy5lbXB0eV9zaWRlX2VmZmVjdDtcbiAgICAgICAgcHJlX2V2ZW50ID0gQS5tYWtlIDEgKFRyYWNlLmR1bW15X3N0ZXAgXCJcIik7XG4gICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBbXTtcbiAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbiA9IEEubWFrZSAxICgxLCBbXSk7XG4gICAgICAgIHByZV9uc3RlcHMgPSAtMTtcbiAgICAgICAgcHJlX25jb2x1bW4gPSAtMTtcbiAgICAgICAgcHJlX2NvbHVtbl9tYXAgPSBQcmVkaWNhdGVNYXAuZW1wdHk7XG4gICAgICAgIHByZV9jb2x1bW5fbWFwX2ludiA9IEEubWFrZSAxIEZpY3RpdGlvdXM7XG4gICAgICAgIHByZV9raW5kX29mX2V2ZW50ID0gQS5tYWtlIDEgKFNpZGVfZWZmZWN0X29mICgtMSwgW10pKTtcbiAgICAgICAgaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZCA9IEEubWFrZSAxIChDLmNyZWF0ZSBOb25lKTtcbiAgICAgICAgaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSA9IEEubWFrZSAxIFtdO1xuICAgICAgICBwcmVkaWNhdGVfaWRfbGlzdF9yZWxhdGVkX3RvX3ByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgQS5tYWtlIDEgUHJlZGljYXRlaWRTZXQuZW1wdHk7XG4gICAgICAgIHByZV9vYnNlcnZhYmxlX2xpc3QgPSBbXTtcbiAgICAgICAgcHJlX2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSA9IE5vbmU7XG4gICAgICAgIHByZV9sZXZlbF9vZl9ldmVudCA9IEEubWFrZSAxIFByaW9yaXR5LmhpZ2hlc3Q7XG4gICAgICB9IClcblxuICBsZXQgZ2V0X2xldmVsX29mX2V2ZW50IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5IGVycm9yLCBsb2dfaW5mbywgQS5nZXQgYmxhY2tib2FyZC5wcmVfbGV2ZWxfb2ZfZXZlbnQgZWlkXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gKEZhaWx1cmUgXCJVTmtub3duIGV2ZW50XCIpXG4gICAgICAgIFByaW9yaXR5LmhpZ2hlc3RcblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZCA9XG4gICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mbyBpblxuICAgIGxldCB0ZXN0ID0gVW5kZWZpbmVkIGluXG4gICAgbGV0IGFjdGlvbiA9IENvdW50ZXIgMCBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgKDIsIFsgbnNpZCwgMSwgdGVzdCwgYWN0aW9uIF0pXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBuc2lkIH1cblxuICBsZXQgaW5pdF9maWN0aXRpb3VzX2FjdGlvbl9hdF9uc2lkIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkIG5zaWRcbiAgICAgID1cbiAgICBsZXQgdGVzdCA9IFVuZGVmaW5lZCBpblxuICAgIGxldCBhY3Rpb24gPSBDb3VudGVyIDAgaW5cbiAgICBsZXQgXyA9XG4gICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gcHJlZGljYXRlX2lkXG4gICAgICAgICgyLCBbIG5zaWQsIDEsIHRlc3QsIGFjdGlvbiBdKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQgaW5pdF9zdGVwID1cbiAgICBtYXRjaCBpbml0X3N0ZXAgd2l0aFxuICAgIHwgTm9uZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFNvbWUgYmxhY2tib2FyZC5wcmVfbnN0ZXBzXG4gICAgfCBTb21lIG5zaWQgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uX2F0X25zaWQgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICBuc2lkXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXBcblxuICBsZXQgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkID1cbiAgICBsZXQgbnNpZCA9IGJsYWNrYm9hcmQucHJlX25zdGVwcyBpblxuICAgIGxldCBtYXAgPSBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW4gaW5cbiAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgcHJlZGljYXRlX2lkIGluXG4gICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgIGxldCBfID1cbiAgICAgIEEuc2V0IG1hcCBwcmVkaWNhdGVfaWQgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgaW5cbiAgICBlcnJvciwgYmxhY2tib2FyZFxuXG4gIGxldCBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX3RhcmdldF9pZCBzIHNpdGUgPVxuICAgIG1hdGNoIHMgd2l0aFxuICAgIHwgRGVmaW5lZCB8IENvdW50ZXIgXyB8IEludGVybmFsX3N0YXRlX2lzIF8gfCBVbmRlZmluZWQgfCBQb2ludGVyX3RvX2FnZW50IF9cbiAgICB8IFByZXNlbnQgfCBCb3VuZCB8IEJvdW5kX3RvX3R5cGUgXyB8IFVua25vd24gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJJbGxlZ2FsIHN0YXRlIGZvciBhIHNpZGUtZWZmZWN0c1wiXG4gICAgICAgIChGYWlsdXJlIFwiQmxhY2tib2FyZF9nZW5lcmF0aW9uLnNpZGVfZWZmZWN0XCIpIFtdXG4gICAgfCBGcmVlIC0+IGVycm9yLCBsb2dfaW5mbywgWyBwcmVkaWNhdGVfdGFyZ2V0X2lkLCBOb25lLCAoRnJlZSwgVW5rbm93bikgXVxuICAgIHwgQm91bmRfdG8gKHBpZCwgYWcsIGFnZW50X25hbWUsIHNuYW1lKSAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFtcbiAgICAgICAgICBwcmVkaWNhdGVfdGFyZ2V0X2lkLCBOb25lLCAocywgVW5rbm93bik7XG4gICAgICAgICAgKCBwaWQsXG4gICAgICAgICAgICBTb21lICgoYWcsIGFnZW50X25hbWUpLCBzbmFtZSksXG4gICAgICAgICAgICAoIEJvdW5kX3RvXG4gICAgICAgICAgICAgICAgKCBwcmVkaWNhdGVfdGFyZ2V0X2lkLFxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5hZ2VudF9pZF9vZl9zaXRlIHNpdGUsXG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X25hbWVfb2Zfc2l0ZSBzaXRlLFxuICAgICAgICAgICAgICAgICAgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlICksXG4gICAgICAgICAgICAgIEZyZWUgKSApO1xuICAgICAgICBdIClcblxuICBsZXQgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBmdW5jdGlvblxuICAgIHwgSW5zdGFudGlhdGlvbi5BTlkgLT4gZXJyb3IsIGxvZ19pbmZvLCBVbmtub3duXG4gICAgfCBJbnN0YW50aWF0aW9uLkZSRUUgLT4gZXJyb3IsIGxvZ19pbmZvLCBGcmVlXG4gICAgfCBJbnN0YW50aWF0aW9uLkJPVU5EIC0+IGVycm9yLCBsb2dfaW5mbywgQm91bmRcbiAgICB8IEluc3RhbnRpYXRpb24uQk9VTkRfVFlQRSBidCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIEJvdW5kX3RvX3R5cGVcbiAgICAgICAgICAoIENJLlBvLksuYWdlbnRfbmFtZV9vZl9iaW5kaW5nX3R5cGUgYnQsXG4gICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9iaW5kaW5nX3R5cGUgYnQgKSApXG4gICAgfCBJbnN0YW50aWF0aW9uLkJPVU5EX3RvIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJJbGxlZ2FsIGJpbmRpbmcgc3RhdGUgaW4gcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGVcIlxuICAgICAgICAoRmFpbHVyZSBcInByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YXRlXCIpIFVua25vd25cblxuICBsZXQgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHNpdGVcbiAgICAgIGJpbmRpbmdfc3RhdGUgPVxuICAgIGxldCBhZ2VudF9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgbGV0IHNpdGVfbmFtZSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV90YXJnZXRfaWQgPVxuICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAoQm91bmRfc2l0ZSAoYWdlbnRfaWQsIHNpdGVfbmFtZSkpXG4gICAgaW5cbiAgICBsZXQgZm9ybWVyX3N0YXRlcyA9XG4gICAgICBBLmdldCBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgcHJlZGljYXRlX3RhcmdldF9pZFxuICAgIGluXG4gICAgbWF0Y2ggcGFyYW1ldGVyLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT5cbiAgICAgIGxldCBzID0gQy5sYXN0IGZvcm1lcl9zdGF0ZXMgaW5cbiAgICAgIChtYXRjaCBzIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdXG4gICAgICB8IFNvbWUgcyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBidCA9XG4gICAgICAgICAgcHJlZGljYXRlX3ZhbHVlX29mX2JpbmRpbmdfc3RhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgaW5cbiAgICAgICAgaWYgbW9yZV9yZWZpbmVkIHMgYnQgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbCA9XG4gICAgICAgICAgICBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkIHNcbiAgICAgICAgICAgICAgc2l0ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbIGwgXVxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdKVxuICAgIHwgU29tZSAoU3RvcnlfanNvbi5TdHJvbmcgfCBTdG9yeV9qc29uLldlYWspIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBidCA9XG4gICAgICAgIHByZWRpY2F0ZV92YWx1ZV9vZl9iaW5kaW5nX3N0YXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgYmluZGluZ19zdGF0ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICBDLmZvbGRcbiAgICAgICAgICAoZnVuIHMgKGVycm9yLCBsb2dfaW5mbywgbGlzdCkgLT5cbiAgICAgICAgICAgIGlmIG1vcmVfcmVmaW5lZCBzIGJ0IHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsID1cbiAgICAgICAgICAgICAgICBzaWRlX2VmZmVjdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfdGFyZ2V0X2lkXG4gICAgICAgICAgICAgICAgICBzIHNpdGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBsIDo6IGxpc3RcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGxpc3QpXG4gICAgICAgICAgZm9ybWVyX3N0YXRlcyAoZXJyb3IsIGxvZ19pbmZvLCBbXSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGxpc3RcblxuICB0eXBlIGRhdGFfc3RydWN0dXJlX3N0cm9uZyA9IHtcbiAgICBuZXdfYWdlbnRzOiBBZ2VudElkU2V0LnQ7XG4gICAgb2xkX2FnZW50czogSW5zdGFudGlhdGlvbi5hZ2VudF9uYW1lIEFnZW50SWRNYXAudDtcbiAgICBvbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb246IENJLlBvLksuYWdlbnRfaWQgbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgc3VyZV9hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICBzdXJlX2xpbmtzOiBBZ2VudElkMlNldC50O1xuICAgIG90aGVyX2xpbmtzOiBBZ2VudElkMlNldC50O1xuICAgIHNpdGVzX2luX290aGVyX2xpbmtzOiBTaXRlSWRTZXQudDtcbiAgICBzaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3M6IFNpdGVJZFNldC50O1xuICAgIG90aGVyX2xpbmtzX3Rlc3Rfc2l0ZXM6IENJLlBvLksuYWdlbnRfaWQgU2l0ZUlkTWFwLnQ7XG4gICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzOiBDSS5Qby5LLmFnZW50X2lkIFNpdGVJZE1hcC50O1xuICAgIHN1cmVfdGVzdHM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi50ZXN0IGxpc3Q7XG4gICAgc3VyZV9hY3Rpb25zOiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3Q7XG4gICAgY3JlYXRlX2FjdGlvbnM6IEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5hY3Rpb24gbGlzdDtcbiAgICBzdXJlX3NpZGVfZWZmZWN0czpcbiAgICAgIChJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uc2l0ZVxuICAgICAgKiBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYmluZGluZ19zdGF0ZSlcbiAgICAgIGxpc3Q7XG4gICAgb3RoZXJfYWdlbnRzX3Rlc3RzOlxuICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBBZ2VudElkTWFwLnQ7XG4gICAgb3RoZXJfYWdlbnRzX2FjdGlvbnM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgQWdlbnRJZE1hcC50O1xuICAgIG90aGVyX2xpbmtzX3Rlc3RzOlxuICAgICAgSW5zdGFudGlhdGlvbi5jb25jcmV0ZSBJbnN0YW50aWF0aW9uLnRlc3QgbGlzdCBBZ2VudElkMk1hcC50O1xuICAgIG90aGVyX2xpbmtzX2FjdGlvbnM6XG4gICAgICBJbnN0YW50aWF0aW9uLmNvbmNyZXRlIEluc3RhbnRpYXRpb24uYWN0aW9uIGxpc3QgQWdlbnRJZDJNYXAudDtcbiAgICBvdGhlcl9saW5rc19wcmlvcml0eTogQWdlbnRJZDJTZXQudDtcbiAgICBvdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzOlxuICAgICAgKEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5zaXRlXG4gICAgICAqIEluc3RhbnRpYXRpb24uY29uY3JldGUgSW5zdGFudGlhdGlvbi5iaW5kaW5nX3N0YXRlKVxuICAgICAgbGlzdFxuICAgICAgQWdlbnRJZE1hcC50O1xuICAgIHN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzOiBBZ2VudElkU2V0LnQ7XG4gICAgcnVsZV9hZ2VudF9pZF9tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBydWxlX2FnZW50X2lkX3N1YnM6IHByZWRpY2F0ZV9pZCBBZ2VudElkTWFwLnQ7XG4gICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWRNYXAudDtcbiAgICBsaW5rc19tdXRleDogcHJlZGljYXRlX2lkIEFnZW50SWQyTWFwLnQ7XG4gICAgcmVtb3ZlZF9hZ2VudHM6IEFnZW50SWRTZXQudDtcbiAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzOiBTaXRlSWRTZXQudDtcbiAgfVxuXG4gIGxldCBpbml0X2RhdGFfc3RydWN0dXJlX3N0cm9uZyA9XG4gICAge1xuICAgICAgbmV3X2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBvbGRfYWdlbnRzID0gQWdlbnRJZE1hcC5lbXB0eTtcbiAgICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbiA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBzdXJlX2FnZW50cyA9IEFnZW50SWRTZXQuZW1wdHk7XG4gICAgICBzdXJlX2xpbmtzID0gQWdlbnRJZDJTZXQuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlcyA9IFNpdGVJZE1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX2FjdGlvbl9zaXRlcyA9IFNpdGVJZE1hcC5lbXB0eTtcbiAgICAgIHNpdGVzX2luX290aGVyX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgICAgc2l0ZXNfaW5fb3RoZXJfYWN0aW9uX2xpbmtzID0gU2l0ZUlkU2V0LmVtcHR5O1xuICAgICAgc3VyZV90ZXN0cyA9IFtdO1xuICAgICAgc3VyZV9hY3Rpb25zID0gW107XG4gICAgICBjcmVhdGVfYWN0aW9ucyA9IFtdO1xuICAgICAgc3VyZV9zaWRlX2VmZmVjdHMgPSBbXTtcbiAgICAgIG90aGVyX2FnZW50c190ZXN0cyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBvdGhlcl9hZ2VudHNfYWN0aW9ucyA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBvdGhlcl9saW5rc19wcmlvcml0eSA9IEFnZW50SWQyU2V0LmVtcHR5O1xuICAgICAgb3RoZXJfbGlua3NfdGVzdHMgPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2xpbmtzX2FjdGlvbnMgPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3MgPSBBZ2VudElkU2V0LmVtcHR5O1xuICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCA9IEFnZW50SWRNYXAuZW1wdHk7XG4gICAgICBydWxlX2FnZW50X2lkX3N1YnMgPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5lbXB0eTtcbiAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXggPSBBZ2VudElkTWFwLmVtcHR5O1xuICAgICAgcmVtb3ZlZF9hZ2VudHMgPSBBZ2VudElkU2V0LmVtcHR5O1xuICAgICAgcmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcyA9IFNpdGVJZFNldC5lbXB0eTtcbiAgICB9XG5cbiAgbGV0IHByaW50X2RhdGFfc3RydWN0dXJlIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgX2RhdGEgPVxuICAgICgqIGxldCBzdGRlcnIgPSBwYXJhbWV0ZXIuQ0kuUG8uSy5ILm91dF9jaGFubmVsX2VyciBpblxuICAgICAgIGxldCBzaWdzID0gTW9kZWwuc2lnbmF0dXJlcyBoYW5kbGVyLkNJLlBvLksuSC5lbnYgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk5ldyBhZ2VudHM6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZFNldC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWkgQC5cIikgZGF0YS5uZXdfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk9sZCBhZ2VudHM6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgaWQ6JWk6IHR5cGU6JWkgQC5cIikgZGF0YS5vbGRfYWdlbnRzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk9sZCBhZ2VudHMgaW1wbGllZCBpbiBsaW5rczogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBBZ2VudElkU2V0Lml0ZXIgKEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaSBALlwiKSBkYXRhLnN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlRlc3RlZF9saW5rc19tYXA6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgU2l0ZUlkTWFwLml0ZXIgKGZ1biAoYSxiKSAtPiBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWkuJWkgLT4gJWkgQC5cIiBhIGIgKSBkYXRhLm90aGVyX2xpbmtzX3Rlc3Rfc2l0ZXMgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIk1vZGlmaWVkX2xpbmtzX21hcDogQC5cIiBpblxuICAgICAgIGxldCBfID1cbiAgICAgICBTaXRlSWRNYXAuaXRlciAoZnVuIChhLGIpIC0+IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiAlaS4laSAtPiAlaSBALlwiIGEgYiApIGRhdGEub3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzXG4gICAgICAgaW5cbiAgICAgICBsZXQgXyA9IEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIlBvdGVudGlhbCBzdWJzdGl0dXRpb246IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyXG4gICAgICAgICAoZnVuIGlkIGwgLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIiBpZDolaUAuXCIgaWRcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTGlzdC5pdGVyIChGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgICAlaUAuXCIpIGwpXG4gICAgICAgICBkYXRhLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIGFnZW50czpALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIEFnZW50SWRTZXQuaXRlciAoRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiICVpQC5cIikgZGF0YS5zdXJlX2FnZW50c1xuICAgICAgIGluXG4gICAgICAgbGV0ICgpID1cbiAgICAgICBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIHRlc3RzOkBbPHYgMT4lYUBdQC5cIlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgfnNpZ3MpKVxuICAgICAgIGRhdGEuc3VyZV90ZXN0cyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiVGVzdHMgdG8gYmUgc3Vic3RpdHV0ZWQ6QFs8diAxPkAsJWElYUBdQC5cIlxuICAgICAgIChQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIEFnZW50SWRNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKGlkLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmXCIlaUAsJWFcIiBpZFxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX3Rlc3QgfnNpZ3MpKVxuICAgICAgIGxcbiAgICAgICApKVxuICAgICAgIGRhdGEub3RoZXJfYWdlbnRzX3Rlc3RzXG4gICAgICAgKFBwLnNldCBBZ2VudElkMk1hcC5iaW5kaW5ncyBQcC5zcGFjZVxuICAgICAgIChmdW4gZiAoKGlkMSxpZDIpLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmIFwiKCVpLCVpKUAsJWFcIiBpZDEgaWQyXG4gICAgICAgKFBwLmxpc3QgUHAuc3BhY2UgKEluc3RhbnRpYXRpb24ucHJpbnRfY29uY3JldGVfdGVzdCB+c2lncykpXG4gICAgICAgbCkpXG4gICAgICAgZGF0YS5vdGhlcl9saW5rc190ZXN0cyBpblxuICAgICAgIGxldCAoKSA9XG4gICAgICAgRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiU3VyZSBhY3Rpb25zOkBbPHYgMT4lYUBdQC5cIlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgZGF0YS5zdXJlX2FjdGlvbnMgaW5cbiAgICAgICBsZXQgKCkgPVxuICAgICAgIEZvcm1hdC5mcHJpbnRmIHN0ZGVyciBcIkFjdGlvbnMgdG8gYmUgc3Vic3RpdHV0ZWQ6QFs8diAxPkAsJWElYUBdQC5cIlxuICAgICAgIChQcC5zZXQgfnRyYWlsaW5nOlBwLnNwYWNlIEFnZW50SWRNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKGlkLGwpIC0+XG4gICAgICAgRm9ybWF0LmZwcmludGZcbiAgICAgICBmXCIlaUAsJWFcIiBpZFxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgbFxuICAgICAgICkpXG4gICAgICAgZGF0YS5vdGhlcl9hZ2VudHNfYWN0aW9uc1xuICAgICAgIChQcC5zZXQgQWdlbnRJZDJNYXAuYmluZGluZ3MgUHAuc3BhY2VcbiAgICAgICAoZnVuIGYgKChpZDEsaWQyKSxsKSAtPlxuICAgICAgIEZvcm1hdC5mcHJpbnRmXG4gICAgICAgZiBcIiglaSwlaSlALCVhXCIgaWQxIGlkMlxuICAgICAgIChQcC5saXN0IFBwLnNwYWNlIChJbnN0YW50aWF0aW9uLnByaW50X2NvbmNyZXRlX2FjdGlvbiB+c2lncykpXG4gICAgICAgbCkpXG4gICAgICAgZGF0YS5vdGhlcl9saW5rc19hY3Rpb25zIGluXG4gICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCJTdXJlIHNpZGVfZWZmZWN0cyBALlwiIGluXG4gICAgICAgbGV0IF8gPVxuICAgICAgIExpc3QuaXRlclxuICAgICAgICAgKENJLlBvLksucHJpbnRfc2lkZSBzdGRlcnIgaGFuZGxlciBcIiBcIilcbiAgICAgICAgIGRhdGEuc3VyZV9zaWRlX2VmZmVjdHNcbiAgICAgICBpblxuICAgICAgIGxldCBfID0gRm9ybWF0LmZwcmludGYgc3RkZXJyIFwiU2lkZSBlZmZlY3QgdG8gYmUgc3Vic3RpdHV0ZWQ6IEAuXCIgaW5cbiAgICAgICBsZXQgXyA9XG4gICAgICAgQWdlbnRJZE1hcC5pdGVyXG4gICAgICAgICAoZnVuIGlkIGwgLT5cbiAgICAgICAgICAgbGV0IF8gPSBGb3JtYXQuZnByaW50ZiBzdGRlcnIgXCIgJWlALlwiIGlkIGluXG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBMaXN0Lml0ZXJcbiAgICAgICAgICAgICAgIChDSS5Qby5LLnByaW50X3NpZGUgc3RkZXJyIGhhbmRsZXIgXCIgIFwiKVxuICAgICAgICAgICAgICAgbFxuICAgICAgICAgICBpbiAoKSlcbiAgICAgICAgIGRhdGEub3RoZXJfYWdlbnRzX3NpZGVfZWZmZWN0c1xuICAgICAgIGluKilcbiAgICBlcnJvclxuXG4gIGxldCBhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIHNpdGUgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHNpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2xpbmtzO1xuICAgIH1cblxuICBsZXQgYWRkX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIHNpdGUgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9IGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSBpblxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rcyA9XG4gICAgICAgIFNpdGVJZFNldC5hZGQgc2l0ZSBkYXRhX3N0cnVjdHVyZS5zaXRlc19pbl9vdGhlcl9hY3Rpb25fbGlua3M7XG4gICAgfVxuXG4gIGxldCBtZW1fc2l0ZV9pbl9vdGhlcl9hY3Rpb25fbGlua3Mgc2l0ZSBkYXRhX3N0cnVjdHVyZSA9XG4gICAgU2l0ZUlkU2V0Lm1lbSBzaXRlIGRhdGFfc3RydWN0dXJlLnNpdGVzX2luX290aGVyX2FjdGlvbl9saW5rc1xuXG4gIGxldCBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHsgZGF0YV9zdHJ1Y3R1cmUgd2l0aCBzdXJlX3Rlc3RzID0gdGVzdCA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX3Rlc3RzIH1cblxuICBsZXQgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnX2lkIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c190ZXN0c1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX3Rlc3RzID1cbiAgICAgICAgQWdlbnRJZE1hcC5hZGQgYWdfaWQgKHRlc3QgOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfdGVzdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic190ZXN0X2xpbmsgdGVzdCBsaW5rIGRhdGFfc3RydWN0dXJlID1cbiAgICBsZXQgYSwgYiA9IGZzdCBsaW5rLCBzbmQgbGluayBpblxuICAgIGxldCBsaW5rID1cbiAgICAgIGlmIGEgPCBiIHRoZW5cbiAgICAgICAgbGlua1xuICAgICAgZWxzZVxuICAgICAgICBiLCBhXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUsIG9sZCA9XG4gICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IGRhdGFfc3RydWN0dXJlLCB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmFkZCBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10gKVxuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfbGlua3NfdGVzdHMgPVxuICAgICAgICBBZ2VudElkMk1hcC5hZGQgbGluayAodGVzdCA6OiBvbGQpIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzO1xuICAgIH1cblxuICBsZXQgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZSA9XG4gICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfYWN0aW9ucyA9IGFjdGlvbiA6OiBkYXRhX3N0cnVjdHVyZS5zdXJlX2FjdGlvbnMgfVxuXG4gIGxldCBhZGRfY3JlYXRlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIGNyZWF0ZV9hY3Rpb25zID0gYWN0aW9uIDo6IGRhdGFfc3RydWN0dXJlLmNyZWF0ZV9hY3Rpb25zO1xuICAgIH1cblxuICBsZXQgYWRkX3N1YnNfYWN0aW9uIGFjdGlvbiBhZ19pZCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IG9sZCA9XG4gICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBhZ19pZCBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfYWN0aW9uc1xuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfYWdlbnRzX2FjdGlvbnMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAoYWN0aW9uIDo6IG9sZCkgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX2FjdGlvbnM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gbGluayBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IGEsIGIgPSBmc3QgbGluaywgc25kIGxpbmsgaW5cbiAgICBsZXQgbGluayA9XG4gICAgICBpZiBhIDwgYiB0aGVuXG4gICAgICAgIGxpbmtcbiAgICAgIGVsc2VcbiAgICAgICAgYiwgYVxuICAgIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlLCBvbGQgPVxuICAgICAgbWF0Y2ggQWdlbnRJZDJNYXAuZmluZF9vcHRpb24gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zIHdpdGhcbiAgICAgIHwgU29tZSB4IC0+IGRhdGFfc3RydWN0dXJlLCB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgKCB7XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICBvdGhlcl9saW5rcyA9IEFnZW50SWQyU2V0LmFkZCBsaW5rIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgW10gKVxuICAgIGluXG4gICAge1xuICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgb3RoZXJfbGlua3NfYWN0aW9ucyA9XG4gICAgICAgIEFnZW50SWQyTWFwLmFkZCBsaW5rIChhY3Rpb24gOjogb2xkKSBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zO1xuICAgIH1cblxuICBsZXQgYWRkX3N1cmVfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIHN1cmVfc2lkZV9lZmZlY3RzID0gc2lkZV9lZmZlY3QgOjogZGF0YV9zdHJ1Y3R1cmUuc3VyZV9zaWRlX2VmZmVjdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3Vic19zaWRlX2VmZmVjdCBzaWRlX2VmZmVjdCBhZ19pZCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgbGV0IHNpdGUgPSBmc3Qgc2lkZV9lZmZlY3QgaW5cbiAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgIGxldCBhZ2VudF9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICBsZXQgb2xkID1cbiAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIGFnZW50X2lkXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIHtcbiAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgIG90aGVyX2FnZW50c19zaWRlX2VmZmVjdHMgPVxuICAgICAgICBBZ2VudElkTWFwLmFkZCBhZ19pZCAoc2lkZV9lZmZlY3QgOjogb2xkKVxuICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2FnZW50c19zaWRlX2VmZmVjdHM7XG4gICAgfVxuXG4gIGxldCBhZGRfc3RlcF9zdHJvbmcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RlcCBibGFja2JvYXJkIHN0ZXBfaWQgPVxuICAgIGxldCBpbml0ID0gVHJhY2Uuc3RlcF9pc19pbml0IHN0ZXAgaW5cbiAgICBsZXQgcHJlX2V2ZW50ID0gYmxhY2tib2FyZC5wcmVfZXZlbnQgaW5cbiAgICBsZXQgdGVzdF9saXN0ID0gVHJhY2UudGVzdHNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGFjdGlvbl9saXN0LCBzaWRlX2VmZmVjdCA9IFRyYWNlLmFjdGlvbnNfb2Zfc3RlcCBzdGVwIGluXG4gICAgbGV0IGRhdGFfc3RydWN0dXJlID0gaW5pdF9kYXRhX3N0cnVjdHVyZV9zdHJvbmcgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSBhY3Rpb24gLT5cbiAgICAgICAgICBtYXRjaCBhY3Rpb24gd2l0aFxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5DcmVhdGUgKGFnLCBfKSAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIG5ld19hZ2VudHMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRTZXQuYWRkXG4gICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm5ld19hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZzFfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZzJfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlMV9pZCA9IGFnMV9pZCwgQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IHNpdGUyX2lkID0gYWcyX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzID1cbiAgICAgICAgICAgICAgICBTaXRlSWRNYXAuYWRkIHNpdGUxX2lkIGFnMl9pZFxuICAgICAgICAgICAgICAgICAgKFNpdGVJZE1hcC5hZGQgc2l0ZTJfaWQgYWcxX2lkXG4gICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWdlbnQgLT5cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICByZW1vdmVkX2FnZW50cyA9XG4gICAgICAgICAgICAgICAgQWdlbnRJZFNldC5hZGRcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50KVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9hZ2VudHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLk1vZF9pbnRlcm5hbCBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgYWN0aW9uX2xpc3RcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBhZyAtPlxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgIG9sZF9hZ2VudHMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkXG4gICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZylcbiAgICAgICAgICAgICAgICAgIChDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWcpXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnMV9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnMl9pZCA9IENJLlBvLksuYWdlbnRfaWRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IHNpdGUxX2lkID0gYWcxX2lkLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgc2l0ZTJfaWQgPSBhZzJfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICAgICAgICAgIGlmIEFnZW50SWRTZXQubWVtIGFnMV9pZCBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX2FnZW50cyB0aGVuXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgd2l0aFxuICAgICAgICAgICAgICAgICAgcmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rcyA9XG4gICAgICAgICAgICAgICAgICAgIFNpdGVJZFNldC5hZGQgc2l0ZTFfaWRcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgaWYgQWdlbnRJZFNldC5tZW0gYWcyX2lkIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICByZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzID1cbiAgICAgICAgICAgICAgICAgICAgU2l0ZUlkU2V0LmFkZCBzaXRlMl9pZFxuICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgICAgICAgb3RoZXJfbGlua3NfdGVzdF9zaXRlcyA9XG4gICAgICAgICAgICAgICAgU2l0ZUlkTWFwLmFkZCBzaXRlMV9pZCBhZzJfaWRcbiAgICAgICAgICAgICAgICAgIChTaXRlSWRNYXAuYWRkIHNpdGUyX2lkIGFnMV9pZFxuICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0ZyZWUgXyB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCBfIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZCBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgdGVzdGVkX3NpdGVzID1cbiAgICAgIFNpdGVJZE1hcC5mb2xkXG4gICAgICAgIChmdW4gYSBfIC0+IFNpdGVJZFNldC5hZGQgYSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlcyBTaXRlSWRTZXQuZW1wdHlcbiAgICBpblxuICAgIGxldCBtb2Rfc2l0ZXMgPVxuICAgICAgU2l0ZUlkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBhIF8gLT4gU2l0ZUlkU2V0LmFkZCBhKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25fc2l0ZXMgU2l0ZUlkU2V0LmVtcHR5XG4gICAgaW5cbiAgICBsZXQgcHJpb3JpdHlfc2l0ZXMgPSBTaXRlSWRTZXQuaW50ZXIgdGVzdGVkX3NpdGVzIG1vZF9zaXRlcyBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICB7XG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHdpdGhcbiAgICAgICAgb2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uID1cbiAgICAgICAgICBBZ2VudElkTWFwLm1hcFxuICAgICAgICAgICAgKEEuZ2V0IGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9hZ2VudF9pZHNfb2ZfdHlwZSlcbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHM7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgeyBkYXRhX3N0cnVjdHVyZSB3aXRoIHN1cmVfYWdlbnRzID0gZGF0YV9zdHJ1Y3R1cmUubmV3X2FnZW50cyB9XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIHN1cmVfYWdlbnRzID1cbiAgICAgICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgICAgIChmdW4gaWQgbCBzdXJlX2FnZW50cyAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbIF8gXSAtPiBBZ2VudElkU2V0LmFkZCBpZCBzdXJlX2FnZW50c1xuICAgICAgICAgICAgICB8IF8gLT4gc3VyZV9hZ2VudHMpXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzO1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHN1cmVfYWdlbnQgPVxuICAgICAgaWYgaW5pdCB0aGVuXG4gICAgICAgIGZ1biBfIC0+XG4gICAgICB0cnVlXG4gICAgICBlbHNlXG4gICAgICAgIGZ1biB4IC0+XG4gICAgICBBZ2VudElkU2V0Lm1lbSB4IGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIG9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvbiA9XG4gICAgICAgICAgQWdlbnRJZFNldC5mb2xkIEFnZW50SWRNYXAucmVtb3ZlIGRhdGFfc3RydWN0dXJlLnN1cmVfYWdlbnRzXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb247XG4gICAgICB9XG4gICAgaW5cblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIHRlc3QgLT5cbiAgICAgICAgICBtYXRjaCB0ZXN0IHdpdGhcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfSGVyZSBfIHwgSW5zdGFudGlhdGlvbi5IYXNfSW50ZXJuYWwgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIF8gfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kIF9cbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19Cb3VuZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX2lkMSA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX2lkMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHN1cmVfYWdlbnQgYWdfaWQxXG4gICAgICAgICAgICAgICYmIChub3QgKFNpdGVJZFNldC5tZW0gKGFnX2lkMSwgc2l0ZV9pZDEpIHByaW9yaXR5X3NpdGVzKSlcbiAgICAgICAgICAgICAgJiYgc3VyZV9hZ2VudCBhZ19pZDJcbiAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDIsIHNpdGVfaWQyKSBwcmlvcml0eV9zaXRlcylcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgbWl4X3NpdGUxID0gYWdfaWQxLCBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICAgIGxldCBtaXhfc2l0ZTIgPSBhZ19pZDIsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgICAgbGV0IGRhdGFfc3RydWN0dXJlID1cbiAgICAgICAgICAgICAgICBhZGRfc2l0ZV9pbl9vdGhlcl90ZXN0X2xpbmtzIG1peF9zaXRlMVxuICAgICAgICAgICAgICAgICAgKGFkZF9zaXRlX2luX290aGVyX3Rlc3RfbGlua3MgbWl4X3NpdGUyIGRhdGFfc3RydWN0dXJlKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICBTaXRlSWRTZXQubWVtIG1peF9zaXRlMSBwcmlvcml0eV9zaXRlc1xuICAgICAgICAgICAgICAgICAgfHwgU2l0ZUlkU2V0Lm1lbSBtaXhfc2l0ZTIgcHJpb3JpdHlfc2l0ZXNcbiAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgIGxldCBhZ19pZDEsIGFnX2lkMiA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGFnX2lkMSA8IGFnX2lkMiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgYWdfaWQxLCBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGFnX2lkMiwgYWdfaWQxXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIG90aGVyX2xpbmtzX3ByaW9yaXR5ID1cbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkMlNldC5hZGQgKGFnX2lkMSwgYWdfaWQyKVxuICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfcHJpb3JpdHk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IHRlc3RfbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSBfIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgX1xuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Nb2RfaW50ZXJuYWwgXyB8IEluc3RhbnRpYXRpb24uRnJlZSBfIC0+XG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5CaW5kIChzaXRlMSwgc2l0ZTIpXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmRfdG8gKHNpdGUxLCBzaXRlMikgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudDEgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZTEgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZDEgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50MSBpblxuICAgICAgICAgICAgbGV0IGFnZW50MiA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkMSAmJiBzdXJlX2FnZW50IGFnX2lkMiB0aGVuXG4gICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rc1xuICAgICAgICAgICAgICAgIChhZ19pZDEsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTEpXG4gICAgICAgICAgICAgICAgKGFkZF9zaXRlX2luX290aGVyX2FjdGlvbl9saW5rc1xuICAgICAgICAgICAgICAgICAgIChhZ19pZDIsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIpXG4gICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICBkYXRhX3N0cnVjdHVyZSAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSB0ZXN0IC0+XG4gICAgICAgICAgbWF0Y2ggdGVzdCB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0hlcmUgYWdlbnQgLT5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHRlc3QgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkhhc19JbnRlcm5hbCAoc2l0ZSwgXykgLT5cbiAgICAgICAgICAgIGxldCBhZ2VudCA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQgPSBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IGFnZW50IGluXG4gICAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3QgdGVzdCBhZ19pZCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5Jc19GcmVlIHNpdGVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uSXNfQm91bmQgc2l0ZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgIHN1cmVfYWdlbnQgYWdfaWRcbiAgICAgICAgICAgICAgJiYgbm90XG4gICAgICAgICAgICAgICAgICAgKFNpdGVJZFNldC5tZW1cbiAgICAgICAgICAgICAgICAgICAgICAoYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5zaXRlc19pbl9vdGhlcl9saW5rcylcbiAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfdGVzdCB0ZXN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5maW5kX29wdGlvbiBzaXRlX2lkMVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfYWN0aW9uX3NpdGVzXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBTb21lIGFnX2lkMiAtPlxuICAgICAgICAgICAgICAgIGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZCwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICB8IE5vbmUgLT4gYWRkX3N1YnNfdGVzdCB0ZXN0IGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLklzX0JvdW5kX3RvIChzaXRlMSwgc2l0ZTIpIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQxID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUxIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQxID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBhZ2VudF9uYW1lMSA9IENJLlBvLksuYWdlbnRfbmFtZV9vZl9hZ2VudCBhZ2VudDEgaW5cbiAgICAgICAgICAgIGxldCBzaXRlX25hbWUxID0gQ0kuUG8uSy5zaXRlX25hbWVfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnZW50MiA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMiBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMiA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBsZXQgYWdlbnRfbmFtZTIgPSBDSS5Qby5LLmFnZW50X25hbWVfb2ZfYWdlbnQgYWdlbnQyIGluXG4gICAgICAgICAgICBsZXQgc2l0ZV9uYW1lMiA9IENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZTIgaW5cbiAgICAgICAgICAgIGxldCB3ZWFrMSA9XG4gICAgICAgICAgICAgIEluc3RhbnRpYXRpb24uSGFzX0JpbmRpbmdfdHlwZSAoc2l0ZTEsIChhZ2VudF9uYW1lMiwgc2l0ZV9uYW1lMikpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHdlYWsyID1cbiAgICAgICAgICAgICAgSW5zdGFudGlhdGlvbi5IYXNfQmluZGluZ190eXBlIChzaXRlMiwgKGFnZW50X25hbWUxLCBzaXRlX25hbWUxKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICggc3VyZV9hZ2VudCBhZ19pZDFcbiAgICAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDEsIHNpdGVfbmFtZTEpIHByaW9yaXR5X3NpdGVzKSxcbiAgICAgICAgICAgICAgICAgc3VyZV9hZ2VudCBhZ19pZDJcbiAgICAgICAgICAgICAgICAgJiYgbm90IChTaXRlSWRTZXQubWVtIChhZ19pZDIsIHNpdGVfbmFtZTIpIHByaW9yaXR5X3NpdGVzKSApXG4gICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgfCB0cnVlLCB0cnVlIC0+IGFkZF9zdXJlX3Rlc3QgdGVzdCBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICAgICBhZGRfc3VyZV90ZXN0IHdlYWsxXG4gICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3Qgd2VhazIgYWdfaWQyXG4gICAgICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZDEsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICAgICAgfCBmYWxzZSwgdHJ1ZSAtPlxuICAgICAgICAgICAgICBhZGRfc3Vic190ZXN0IHdlYWsxIGFnX2lkMVxuICAgICAgICAgICAgICAgIChhZGRfc3VyZV90ZXN0IHdlYWsyXG4gICAgICAgICAgICAgICAgICAgKGFkZF9zdWJzX3Rlc3RfbGluayB0ZXN0IChhZ19pZDEsIGFnX2lkMikgZGF0YV9zdHJ1Y3R1cmUpKVxuICAgICAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAgICAgYWRkX3N1YnNfdGVzdCB3ZWFrMSBhZ19pZDFcbiAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdCB3ZWFrMiBhZ19pZDJcbiAgICAgICAgICAgICAgICAgICAoYWRkX3N1YnNfdGVzdF9saW5rIHRlc3QgKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSkpKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IHRlc3RfbGlzdClcbiAgICBpblxuICAgIGxldCBkYXRhX3N0cnVjdHVyZSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGRhdGFfc3RydWN0dXJlIGFjdGlvbiAtPlxuICAgICAgICAgIG1hdGNoIGFjdGlvbiB3aXRoXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkNyZWF0ZSBfIC0+IGFkZF9jcmVhdGVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgIHwgSW5zdGFudGlhdGlvbi5SZW1vdmUgYWdlbnQgLT5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uTW9kX2ludGVybmFsIChzaXRlLCBfKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50ID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUgaW5cbiAgICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQgdGhlblxuICAgICAgICAgICAgICBhZGRfc3VyZV9hY3Rpb24gYWN0aW9uIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGFkZF9zdWJzX2FjdGlvbiBhY3Rpb24gYWdfaWQgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uRnJlZSBzaXRlIC0+XG4gICAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudCBpblxuICAgICAgICAgICAgbGV0IHNpdGVfaWQxID0gYWdfaWQsIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgICAgaWYgbWVtX3NpdGVfaW5fb3RoZXJfYWN0aW9uX2xpbmtzIHNpdGVfaWQxIGRhdGFfc3RydWN0dXJlIHRoZW5cbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgaWYgc3VyZV9hZ2VudCBhZ19pZCB0aGVuXG4gICAgICAgICAgICAgIGFkZF9zdXJlX2FjdGlvbiBhY3Rpb24gZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgIFNpdGVJZE1hcC5maW5kX29wdGlvbiBzaXRlX2lkMVxuICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdF9zaXRlc1xuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSBhZ19pZDIgLT5cbiAgICAgICAgICAgICAgICBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gKGFnX2lkLCBhZ19pZDIpIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBhZGRfc3Vic19hY3Rpb24gYWN0aW9uIGFnX2lkIGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgICApXG4gICAgICAgICAgfCBJbnN0YW50aWF0aW9uLkJpbmQgKHNpdGUxLCBzaXRlMilcbiAgICAgICAgICB8IEluc3RhbnRpYXRpb24uQmluZF90byAoc2l0ZTEsIHNpdGUyKSAtPlxuICAgICAgICAgICAgbGV0IGFnZW50MSA9IENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlMSBpblxuICAgICAgICAgICAgbGV0IGFnX2lkMSA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQxIGluXG4gICAgICAgICAgICBsZXQgYWdlbnQyID0gQ0kuUG8uSy5hZ2VudF9vZl9zaXRlIHNpdGUyIGluXG4gICAgICAgICAgICBsZXQgYWdfaWQyID0gQ0kuUG8uSy5hZ2VudF9pZF9vZl9hZ2VudCBhZ2VudDIgaW5cbiAgICAgICAgICAgIGlmIHN1cmVfYWdlbnQgYWdfaWQxICYmIHN1cmVfYWdlbnQgYWdfaWQyIHRoZW5cbiAgICAgICAgICAgICAgYWRkX3N1cmVfYWN0aW9uIGFjdGlvbiBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhZGRfc3Vic19hY3Rpb25fbGluayBhY3Rpb24gKGFnX2lkMSwgYWdfaWQyKSBkYXRhX3N0cnVjdHVyZSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUgKExpc3QucmV2IGFjdGlvbl9saXN0KVxuICAgIGluXG5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBkYXRhX3N0cnVjdHVyZSBzaWRlX2VmZmVjdCAtPlxuICAgICAgICAgIGxldCBzaXRlLCBfID0gc2lkZV9lZmZlY3QgaW5cbiAgICAgICAgICBsZXQgYWdlbnQgPSBDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSBpblxuICAgICAgICAgIGxldCBhZ19pZCA9IENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgYWdlbnQgaW5cbiAgICAgICAgICBpZiBzdXJlX2FnZW50IGFnX2lkIHRoZW5cbiAgICAgICAgICAgIGFkZF9zdXJlX3NpZGVfZWZmZWN0IHNpZGVfZWZmZWN0IGRhdGFfc3RydWN0dXJlXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX3N1YnNfc2lkZV9lZmZlY3Qgc2lkZV9lZmZlY3QgYWdfaWQgZGF0YV9zdHJ1Y3R1cmUpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIHN1YnNfYWdlbnRzX2ludm9sdmVkX2luX2xpbmtzID1cbiAgICAgICAgICAobGV0IGYgeCBzZXQgPVxuICAgICAgICAgICAgIEFnZW50SWQyTWFwLmZvbGRcbiAgICAgICAgICAgICAgIChmdW4gKGExLCBhMikgXyBzZXQgLT4gQWdlbnRJZFNldC5hZGQgYTEgKEFnZW50SWRTZXQuYWRkIGEyIHNldCkpXG4gICAgICAgICAgICAgICB4IHNldFxuICAgICAgICAgICBpblxuICAgICAgICAgICBmIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzX3Rlc3RzXG4gICAgICAgICAgICAgKGYgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfYWN0aW9ucyBBZ2VudElkU2V0LmVtcHR5KSk7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgaW5pdF9zdGVwID0gTm9uZSBpblxuICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICBydWxlX2FnZW50X2lkX3N1YnMsXG4gICAgICAgICAgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIF8sXG4gICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgQWdlbnRJZE1hcC5mb2xkXG4gICAgICAgIChmdW4geCBsXG4gICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICBydWxlX2FnZW50X2lkX3N1YnMsXG4gICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgLT5cbiAgICAgICAgICAoKiB0aGUgZm9sbG93aW5nIG11dGV4IGlzIHVzZWQgdG8gZW5jb2RlIHRoZSBmYWN0IHRoYXQgdGhlIGFnZW50IHggaW4gdGhlIGxocyBvZiB0aGUgcnVsZSBtdXN0IGJlIGFzc29jaWF0ZWQgd2l0aCBleGFjdGVseSBvbmUgYWdlbnQgaW4gdGhlIG1peHR1cmUgKilcbiAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBNdXRleCAoTG9ja19hZ2VudCAoc3RlcF9pZCwgeCkpIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCA9XG4gICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHJ1bGVfYWdlbnRfaWRfbXV0ZXggPVxuICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgcnVsZV9hZ2VudF9pZF9tdXRleFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbGlzdCBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGlmIEFnZW50SWRTZXQubWVtIHggZGF0YV9zdHJ1Y3R1cmUuc3Vic19hZ2VudHNfaW52b2x2ZWRfaW5fbGlua3NcbiAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPSBQb2ludGVyIChzdGVwX2lkLCB4KSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV9pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBydWxlX2FnZW50X2lkX3N1YnMgPVxuICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuYWRkIHggcHJlZGljYXRlX2lkIHJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHJ1bGVfYWdlbnRfaWRfc3VicywgaW5pdF9zdGVwXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBydWxlX2FnZW50X2lkX3N1YnMsIGluaXRfc3RlcFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSA9XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgaWQgLT5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHx8IGRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIklEIG9mIGFnZW50IGluIHRoZSBydWxlOiAlaSwgSUQgb2YgdGhlIGFnZW50IGluIHRoZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmU6ICVpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHggaWRcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IHNldCcgPSBBZ2VudElkU2V0LmFkZCBpZCBzZXQgaW5cbiAgICAgICAgICAgICAgICBpZiBzZXQgPT0gc2V0JyB0aGVuXG4gICAgICAgICAgICAgICAgICBpZiBBZ2VudElkTWFwLm1lbSBpZCBtaXh0dXJlX2FnZW50X2lkX211dGV4IHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAoKiBUaGUgbXV0ZXggaXMgYWxyZWFkeSBkZWNsYXJlZCwgbm90aGluZyB0byBkbyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiTXV0ZXggYWxyZWFkeSBleGlzdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc2V0LFxuICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAoKiBUaGUgbXV0ZXggaGFzIHRvIGJlIGFsbG9jYXRlZCAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF90cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVidWdfbW9kZVxuICAgICAgICAgICAgICAgICAgICAgIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X2xvZ2dlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiQ3JlYXRlIE11dGV4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgTXV0ZXggKExvY2tfcmVjdGFuZ3VsYXIgKHN0ZXBfaWQsIGlkKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbWl4dHVyZV9hZ2VudF9pZF9tdXRleCA9XG4gICAgICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgaWQgcHJlZGljYXRlX2lkIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXhcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICAgICAgICAgICAgc2V0JyxcbiAgICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgKCogVGhlIGFnZW50IGluIHRoZSBtaXh0dXJlIGlzIHNlZW4gZm9yIHRoZSBmaXJzdCB0aW1lLCBubyBuZWVkIGZvciBhIG11dGV4IGZvciB0aGUgbW9tZW50ICopXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgIFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3RyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIHx8IGRlYnVnX21vZGVcbiAgICAgICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgYWdlbnQgaXMgc2VlbiBmb3IgdGhlIGZpcnN0IHRpbWUsIG5vIG5lZWQgZm9yIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRleCB5ZXRcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgICAgICBzZXQnLFxuICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBtaXh0dXJlX2FnZW50X2lkX211dGV4LFxuICAgICAgICAgICAgICAgIHNldCxcbiAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICBsXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgcnVsZV9hZ2VudF9pZF9tdXRleCxcbiAgICAgICAgICAgIHJ1bGVfYWdlbnRfaWRfc3VicyxcbiAgICAgICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXgsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICBzZXQsXG4gICAgICAgICAgICBpbml0X3N0ZXAgKSlcbiAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBBZ2VudElkTWFwLmVtcHR5LFxuICAgICAgICAgIEFnZW50SWRNYXAuZW1wdHksXG4gICAgICAgICAgQWdlbnRJZE1hcC5lbXB0eSxcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgW10sXG4gICAgICAgICAgQWdlbnRJZFNldC5lbXB0eSxcbiAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgIGluXG4gICAgbGV0IGxpbmtzX211dGV4ID0gQWdlbnRJZDJNYXAuZW1wdHkgaW5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgQWdlbnRJZDJTZXQuZm9sZFxuICAgICAgICAoZnVuIHhcbiAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgbGlua3NfbXV0ZXgsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAtPlxuICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9IE11dGV4IChMb2NrX2xpbmtzIChzdGVwX2lkLCB4KSkgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgYWxsb2NhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbGlua3NfbXV0ZXggPSBBZ2VudElkMk1hcC5hZGQgeCBwcmVkaWNhdGVfaWQgbGlua3NfbXV0ZXggaW5cbiAgICAgICAgICBsZXQgZmljdGl0aW91c19sb2NhbF9saXN0ID0gcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCBpblxuICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGxpbmtzX211dGV4LFxuICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBsaW5rc19tdXRleCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIGxpbmtzX211dGV4O1xuICAgICAgICBydWxlX2FnZW50X2lkX211dGV4O1xuICAgICAgICBydWxlX2FnZW50X2lkX3N1YnM7XG4gICAgICAgIG1peHR1cmVfYWdlbnRfaWRfbXV0ZXg7XG4gICAgICB9XG4gICAgaW5cbiAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICB7IGJsYWNrYm9hcmQgd2l0aCBwcmVfZmljdGl0aW91c19saXN0ID0gZmljdGl0aW91c19saXN0IH1cbiAgICBpblxuICAgIGxldCBfID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCBfID0gcHJpbnRfZGF0YV9zdHJ1Y3R1cmUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZGF0YV9zdHJ1Y3R1cmUgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZmluZF9kZWZhdWx0IChVbmtub3duLCBVbmtub3duKSBwaWQgbWFwXG4gICAgICBpblxuICAgICAgbGV0IHRlc3QgPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgdGVzdCB0ZXN0JyB0aGVuXG4gICAgICAgICAgdGVzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGVzdCdcbiAgICAgIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgaWYgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGFjdGlvbiBhY3Rpb24nIHRoZW5cbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgaW5cbiAgICAgIG1hcFxuICAgIGluXG4gICAgbGV0IGZhZGQgcGlkIHAgbWFwID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgVW5kZWZpbmVkIHwgRGVmaW5lZCB8IFByZXNlbnQgfCBCb3VuZFxuICAgICAgfCBCb3VuZF90b190eXBlIF8gfCBVbmtub3duIC0+XG4gICAgICAgICgpXG4gICAgICB8IEZyZWUgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBCb3VuZF90byBfIC0+XG4gICAgICAgIGxldCBvbGQgPSBBLmdldCBtYXAgcGlkIGluXG4gICAgICAgIEEuc2V0IG1hcCBwaWQgKEMuYWRkIHAgb2xkKVxuICAgIGluXG5cbiAgICAoKiBkZWFsIHdpdGggY3JlYXRlZCBhZ2VudHMgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzdGVwX2lkID1cbiAgICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBzdGVwX2lkXG4gICAgICB8IFNvbWUgbnNpZCAtPlxuICAgICAgICBsZXQgbnNpZCA9IG5zaWQgaW5cbiAgICAgICAgbGV0IG5zaWRfdm9pZCA9IG5zaWQgKyAxIGluXG4gICAgICAgIGxldCBuc2lkX25leHQgPSBuc2lkICsgMSBpblxuICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPSBbXSBpblxuICAgICAgICBsZXQgYWN0aW9uX2xpc3QgPSBkYXRhX3N0cnVjdHVyZS5jcmVhdGVfYWN0aW9ucyBpblxuICAgICAgICBsZXQgdGVzdF9saXN0ID0gW10gaW5cbiAgICAgICAgbGV0IGZpY3RpdGlvdXNfbGlzdCA9IFtdIGluXG5cbiAgICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIF9maWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgX2luaXRfc3RlcCApID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgKHNpdGUsIGJpbmRpbmdfc3RhdGUpIC0+XG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHBvdGVudGlhbF90YXJnZXQgPVxuICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgc2l0ZSBiaW5kaW5nX3N0YXRlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgICAgICB8IFsgbCBdIC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IHQgLT4gdCA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMgbFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgICAgICB8IF8gLT5cbiAgICAgICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IChDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIF9zdGVwX2lkID1cbiAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHMgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgIHNpZGVfZWZmZWN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gdHJ1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgYnVpbGRfbWFwIGFjdGlvbl9saXN0IGFjdGlvbl9tYXAsXG4gICAgICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT5cbiAgICAgICAgICAgICAgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgICAgICBtZXJnZWRfbWFwIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICBpblxuICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICAgICAgaW5cbiAgICAgICAgaWYgc2lkZV9lZmZlY3QgPSBbXSAmJiBQcmVkaWNhdGVpZE1hcC5pc19lbXB0eSBtZXJnZWRfbWFwIHRoZW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG5zaWRfdm9pZFxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgICAgIChDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgcHJlX3N0ZXBzX2J5X2NvbHVtbiA9XG4gICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5mb2xkXG4gICAgICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlLCBsaXN0ID0gQS5nZXQgbWFwIGlkIGluXG4gICAgICAgICAgICAgICAgbGV0IHZhbHVlJyA9IHZhbHVlICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIGZhZGQgaWQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQuaGlzdG9yeV9vZl9wcmVkaWNhdGVfdmFsdWVzX3RvX3ByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgQS5zZXQgbWFwIGlkICh2YWx1ZScsIChuc2lkLCB2YWx1ZSwgdGVzdCwgYWN0aW9uKSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbWFwKVxuICAgICAgICAgICAgICBtZXJnZWRfbWFwIGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtblxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9ic2VydmFibGVfbGlzdCA9XG4gICAgICAgICAgICBpZiBUcmFjZS5zdGVwX2lzX29icyBzdGVwIHRoZW5cbiAgICAgICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICA6OiBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICAgICAgICBwcmVfZXZlbnQ7XG4gICAgICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgICAgIHByZV9zdGVwc19ieV9jb2x1bW47XG4gICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBuc2lkO1xuICAgICAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBuc2lkX25leHRcbiAgICAgICAgKVxuICAgIGluXG5cbiAgICAoKioqIGRlYWwgd2l0aCBzdWJzdGl0dXRhYmxlIGFnZW50cyAqKiopXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCA9XG4gICAgICBBZ2VudElkTWFwLmZvbGRcbiAgICAgICAgKGZ1biBydWxlX2FnX2lkIGwgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdCkgLT5cbiAgICAgICAgICBsZXQgdGVzdF9saXN0LCBhY3Rpb25fbGlzdCwgc2lkZV9lZmZlY3QgPVxuICAgICAgICAgICAgKCBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX3Rlc3RzLFxuICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbXSBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfYWdlbnRzX2FjdGlvbnMsXG4gICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFtdIHJ1bGVfYWdfaWRcbiAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9hZ2VudHNfc2lkZV9lZmZlY3RzIClcbiAgICAgICAgICBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluaXRfc3RlcCwgbmxpc3QpIG1peHR1cmVfYWdfaWQgLT5cbiAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBUcmFjZS5zdWJzX3N0ZXAgcnVsZV9hZ19pZCBtaXh0dXJlX2FnX2lkIGluXG4gICAgICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX3Rlc3QgcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ19pZClcbiAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgYWN0aW9uX2xpc3QgPVxuICAgICAgICAgICAgICAgIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X2FnZW50X2luX2NvbmNyZXRlX2FjdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICBMaXN0X3V0aWwuc21hcnRfbWFwXG4gICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5zdWJzdF9hZ2VudF9pbl9jb25jcmV0ZV9zaWRlX2VmZmVjdCBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkKVxuICAgICAgICAgICAgICAgICAgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCA9IFtdIGluXG4gICAgICAgICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBzaXRlIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggcG90ZW50aWFsX3RhcmdldCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoTG9ja19zaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaXh0dXJlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcHJlZGljYXRlX2lkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0IGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwID1cbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfZmljdGl0aW91c19hY3Rpb24gbG9nX2luZm8gZXJyb3IgcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdF9zdGVwXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX25fc2lkZV9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX2lkIDo6IGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5pdF9zdGVwIClcbiAgICAgICAgICAgICAgICAgIHNpZGVfZWZmZWN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBpZF9ydWxlX2FnZW50X211dGV4ID1cbiAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvbiBydWxlX2FnX2lkXG4gICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfbXV0ZXhcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHggLT4gZXJyb3IsIGxvZ19pbmZvLCB4XG4gICAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgICAgICAgIChGYWlsdXJlIFwiVW5rbm93biBhZ2VudCBpZFwiKSAwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgICAgICAgICAgICB0ZXN0X2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgcGlkX3J1bGVfYWdlbnRfbXV0ZXggKENvdW50ZXIgMCkgdGVzdF9tYXBcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gLT5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl9hY3Rpb24gdHJ1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBpbml0IGFjdGlvblxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgYnVpbGRfbWFwIGFjdGlvbl9saXN0IGFjdGlvbl9tYXAsXG4gICAgICAgICAgICAgICAgICAgICAgYnVpbGRfbWFwIHRlc3RfbGlzdCB0ZXN0X21hcCApKVxuICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGFjdGlvbl9tYXAgPVxuICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWRfcnVsZV9hZ2VudF9tdXRleCAoQ291bnRlciAxKSBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCB0ZXN0X21hcCwgYWN0aW9uX21hcCA9XG4gICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9vcHRpb24gcnVsZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5ydWxlX2FnZW50X2lkX3N1YnNcbiAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIG1faWQgLT5cbiAgICAgICAgICAgICAgICAgICggUHJlZGljYXRlaWRNYXAuYWRkIG1faWQgKENvdW50ZXIgMCkgdGVzdF9tYXAsXG4gICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZCBtX2lkIChQb2ludGVyX3RvX2FnZW50IG1peHR1cmVfYWdfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX21hcCApXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IHRlc3RfbWFwLCBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIFRoZSBmb2xsb3dpbmcgYmxvY2sgc2hvdWxkIGJlIGxvZ2dlZCBhbmQgY29ycmVjdGVkICopXG4gICAgICAgICAgICAgICgqIGxldCB0ZXN0X21hcCxhY3Rpb25fbWFwID1cbiAgICAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5maW5kX29wdGlvblxuICAgICAgICAgICAgICAgICAgICAgbWl4dHVyZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUubWl4dHVyZV9hZ2VudF9pZF9tdXRleCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgU29tZSBtX2lkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmFkZFxuICAgICAgICAgICAgICAgICAgICAgICAgIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAoQ291bnRlciAwKVxuICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwLFxuICAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGRcbiAgICAgICAgICAgICAgICAgICAgICAgICBtX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgKENvdW50ZXIgMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwXG4gICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0ZXN0X21hcCxhY3Rpb25fbWFwXG4gICAgICAgICAgICAgICAgIGluKilcbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5tb25hZGljX2ZvbGQyIHBhcmFtZXRlciBlcnJvclxuICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBVbmtub3duKSBhY2MpXG4gICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgYWN0aW9uIGFjYyAtPlxuICAgICAgICAgICAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIGFjdGlvbl9tYXAgUHJlZGljYXRlaWRNYXAuZW1wdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAsIG5saXN0ID1cbiAgICAgICAgICAgICAgICAoKiBlbnVtZXJhdGlvbiBvZiBwb3RlbnRpYWwgYmluZGluZyBzdGF0ZSwgYWNjb3JkaW5nIHRvIGEgc3Vic3RpdHV0aW9uICopXG4gICAgICAgICAgICAgICAgKCogSWYgdGhlIGV2ZW50IGlzIHNlbGVjdGVkLCBjaGVjayB0aGF0IHRoZSB3aXJlIGVuZCBpbiB0aGUgc3RhdGUgMCopXG4gICAgICAgICAgICAgICAgKCogVW5kZWYtPkNvdW50ZXIgMCA6IG9wZW5pbmcgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiBDb3VudGVyIDAgLT4gQ291bnRlciAxIDogcG90ZW50aWFsIGJpbmRpbmcgdHlwZSAqKVxuICAgICAgICAgICAgICAgICgqID0+IENvdW50ZXIgMSAtPiBDb3VudGVyIDAgOiB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gaXMgYXBwbGllZCAqKVxuICAgICAgICAgICAgICAgICgqIENvdW50ZXIgMCAtPiBVbmRlZiA6IGNsb3NpbmcgZXZlbnQsIGNoZWNrIHRoYXQgaWYgdGhlIGV2ZW50IGhhcyBiZWVuIHNlbGVjdGVkIChvcGVuIGFuZCBjbG9zZWQpLCB0aGVuIGV4YWN0ZWx5IG9uZSBiaW5kaW5nIHN0YXRlIGhhcyBiZWVuIHNlbGVjdGVkLFxuICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gKilcbiAgICAgICAgICAgICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQgJiB0aGUgYWNjb3JkaW5nIHN1YnN0aXR1dGlvbiB0YWtlbiwgdGhlbiBtdXR1YWwgZXhjbHVzaW9uIGFtb25nIHRoZSBwb3RlbnRpYWwgYmluZGluZyBzdGF0ZSopXG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hcCwgbmxpc3QpIHBpZCAtPlxuICAgICAgICAgICAgICAgICAgICAoIFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgQ291bnRlciAwKSBtYXAsXG4gICAgICAgICAgICAgICAgICAgICAgcGlkIDo6IG5saXN0ICkpXG4gICAgICAgICAgICAgICAgICAobWVyZ2VkX21hcCwgbmxpc3QpIGZpY3RpdGlvdXNfbG9jYWxfbGlzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbWFwIChwaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICBhZGRfc3RhdGUgcGlkICh0ZXN0LCBhY3Rpb24pIG1hcClcbiAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCAoXywgYSwgXykgLT5cbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIFtdIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0c1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAubWFwaVxuICAgICAgICAgICAgICAgICAgKGZ1biBwaWQgKHRlc3QsIGFjdGlvbikgLT5cbiAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBVbmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAmJlxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIEEuZ2V0IGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52IHBpZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCBCb3VuZF9zaXRlIChhZ19pZCwgc2l0ZV9pZCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFnX2lkID0gbWl4dHVyZV9hZ19pZFxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2l0ZUlkU2V0Lm1lbSAocnVsZV9hZ19pZCwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUucmVtb3ZlZF9zaXRlc19pbl9vdGhlcl9saW5rc1xuICAgICAgICAgICAgICAgICAgICAgIHwgSGVyZSBfIHwgUG9pbnRlciBfIHwgTXV0ZXggXyB8IExpbmsgXyB8IEludGVybmFsX3N0YXRlIF9cbiAgICAgICAgICAgICAgICAgICAgICB8IEZpY3RpdGlvdXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBVbmtub3duXG4gICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICB0ZXN0LCBhY3Rpb24pXG4gICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIG5saXN0XG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIEEuc2V0IGJsYWNrYm9hcmQucHJlX3NpZGVfZWZmZWN0X29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9raW5kX29mX2V2ZW50IG5zaWQgKHR5cGVfb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgICAgICAgICAgICBwcmVfZmljdGl0aW91c19saXN0ID0gZmljdGl0aW91c19saXN0O1xuICAgICAgICAgICAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdFxuICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5pdF9zdGVwLCBubGlzdClcbiAgICAgICAgICAgIGwpXG4gICAgICAgIGRhdGFfc3RydWN0dXJlLm9sZF9hZ2VudHNfcG90ZW50aWFsX3N1YnN0aXR1dGlvblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAsIFtdKVxuICAgIGluXG5cbiAgICAoKiBkZWFsIHdpdGggc3Vic3RpdHV0YWJsZSBhZ2VudCBpbiBsaW5rcyopXG4gICAgbGV0IGYgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZCBzZXQgPVxuICAgICAgQWdlbnRJZDJTZXQuZm9sZFxuICAgICAgICAoZnVuIGxpbmsgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgLT5cbiAgICAgICAgICBsZXQgbGlua19tdXRleCA9XG4gICAgICAgICAgICBtYXRjaCBBZ2VudElkMk1hcC5maW5kX29wdGlvbiBsaW5rIGRhdGFfc3RydWN0dXJlLmxpbmtzX211dGV4IHdpdGhcbiAgICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgICAgIHwgTm9uZSAtPiByYWlzZSBOb3RfZm91bmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBydWxlX2FnX2lkMSwgcnVsZV9hZ19pZDIgPSBsaW5rIGluXG4gICAgICAgICAgbGV0IGxfYWdfMSA9XG4gICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfZGVmYXVsdCBbIHJ1bGVfYWdfaWQxIF0gcnVsZV9hZ19pZDFcbiAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmUub2xkX2FnZW50c19wb3RlbnRpYWxfc3Vic3RpdHV0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbF9hZ18yID1cbiAgICAgICAgICAgIEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IFsgcnVsZV9hZ19pZDIgXSBydWxlX2FnX2lkMlxuICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vbGRfYWdlbnRzX3BvdGVudGlhbF9zdWJzdGl0dXRpb25cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgQWdlbnRJZDJNYXAuZmluZF9kZWZhdWx0IFtdIGxpbmsgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfdGVzdHNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICBBZ2VudElkMk1hcC5maW5kX2RlZmF1bHQgW10gbGluayBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19hY3Rpb25zXG4gICAgICAgICAgaW5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBtaXh0dXJlX2FnXzEgLT5cbiAgICAgICAgICAgICAgbGV0IHN1YnMgPSBBZ2VudElkTWFwLmVtcHR5IGluXG4gICAgICAgICAgICAgIGxldCBzdWJzID1cbiAgICAgICAgICAgICAgICAoKiBpZiBydWxlX2FnX2lkMSA9IG1peHR1cmVfYWdfMVxuICAgICAgICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgICAgICBzdWJzXG4gICAgICAgICAgICAgICAgICAgZWxzZSopXG4gICAgICAgICAgICAgICAgQWdlbnRJZE1hcC5hZGQgcnVsZV9hZ19pZDEgbWl4dHVyZV9hZ18xIHN1YnNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIG1peHR1cmVfYWdfMiAtPlxuICAgICAgICAgICAgICAgICAgaWYgcnVsZV9hZ19pZDEgPSBydWxlX2FnX2lkMiA9IChtaXh0dXJlX2FnXzEgPSBtaXh0dXJlX2FnXzIpXG4gICAgICAgICAgICAgICAgICB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IHN0ZXAgPVxuICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLmR1bW15X3N0ZXBcbiAgICAgICAgICAgICAgICAgICAgICAgIChcIkxJTksgXCIgXiBzdHJpbmdfb2ZfaW50IG1peHR1cmVfYWdfMSBeIFwiL1wiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBydWxlX2FnX2lkMSBeIFwiLFwiXG4gICAgICAgICAgICAgICAgICAgICAgIF4gc3RyaW5nX29mX2ludCBtaXh0dXJlX2FnXzIgXiBcIi9cIlxuICAgICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgcnVsZV9hZ19pZDIgXiBcIilcIilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IHN1YnMgPVxuICAgICAgICAgICAgICAgICAgICAgICgqIGlmIHJ1bGVfYWdfaWQyID0gbWl4dHVyZV9hZ18yXG4gICAgICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnNcbiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlKilcbiAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmFkZCBydWxlX2FnX2lkMiBtaXh0dXJlX2FnXzIgc3Vic1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgdGVzdF9saXN0LCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgc3VicyA9IEFnZW50SWRNYXAuZW1wdHkgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0LCBhY3Rpb25fbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGYgeCA9IEFnZW50SWRNYXAuZmluZF9kZWZhdWx0IHggeCBzdWJzIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAoIExpc3RfdXRpbC5zbWFydF9tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoSW5zdGFudGlhdGlvbi5zdWJzdF9tYXBfYWdlbnRfaW5fY29uY3JldGVfdGVzdCBmKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLnNtYXJ0X21hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChJbnN0YW50aWF0aW9uLnN1YnN0X21hcF9hZ2VudF9pbl9jb25jcmV0ZV9hY3Rpb24gZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25fbGlzdCApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbWFwKSB0ZXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBidWlsZF9tYXAgdGVzdF9saXN0IG1hcClcbiAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFByZWRpY2F0ZWlkTWFwLmVtcHR5KVxuICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9saXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbGlzdCApID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvciBibGFja2JvYXJkIGluaXQgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rpb25fbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChwaWQsIHgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoIHggd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZyZWUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLmdldCBibGFja2JvYXJkLnByZV9jb2x1bW5fbWFwX2ludiBwaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm91bmRfc2l0ZSAoYWdfaWQsIHNpdGVfaWQpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ19pZCA9IG1peHR1cmVfYWdfMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBTaXRlSWRTZXQubWVtIChydWxlX2FnX2lkMSwgc2l0ZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhX3N0cnVjdHVyZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnJlbW92ZWRfc2l0ZXNfaW5fb3RoZXJfbGlua3NcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYWdfaWQgPSBtaXh0dXJlX2FnXzJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgU2l0ZUlkU2V0Lm1lbSAocnVsZV9hZ19pZDIsIHNpdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJ1Y3R1cmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5yZW1vdmVkX3NpdGVzX2luX290aGVyX2xpbmtzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgVW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCwgeFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBwaWQsIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiBwaWQsIHgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5yZXYgYWN0aW9uX2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9tYXAgdGVzdF9saXN0IHRlc3RfbWFwICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuZW1wdHksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFwIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbl9saXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbWVyZ2VkX21hcCA9XG4gICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAubW9uYWRpY19mb2xkMiBwYXJhbWV0ZXIgZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgYWN0aW9uKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZnVuIF8gZSBrZXkgdGVzdCBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAodGVzdCwgVW5rbm93bikgYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZSwgUHJlZGljYXRlaWRNYXAuYWRkIGtleSAoVW5rbm93biwgYWN0aW9uKSBhY2MpXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X21hcCBhY3Rpb25fbWFwIFByZWRpY2F0ZWlkTWFwLmVtcHR5XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBtZXJnZWRfbWFwID1cbiAgICAgICAgICAgICAgICAgICAgICBQcmVkaWNhdGVpZE1hcC5hZGQgbGlua19tdXRleCAoQ291bnRlciAwLCBDb3VudGVyIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIFBvaW50ZXIgLT4gKilcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWQxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ18xLCBVbmtub3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgICAgICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgICAgICAgICBBZ2VudElkTWFwLmZpbmRfb3B0aW9uIHJ1bGVfYWdfaWQyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfc3RydWN0dXJlLnJ1bGVfYWdlbnRfaWRfc3Vic1xuICAgICAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgbV9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgUHJlZGljYXRlaWRNYXAuYWRkIG1faWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFBvaW50ZXJfdG9fYWdlbnQgbWl4dHVyZV9hZ18yLCBVbmtub3duKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBtZXJnZWRfbWFwXG4gICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IG1lcmdlZF9tYXBcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgaWYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBfID0gQS5zZXQgcHJlX2V2ZW50IG5zaWQgc3RlcCBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFByZWRpY2F0ZWlkTWFwLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBpZCAodGVzdCwgYWN0aW9uKSBtYXAgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgdmFsdWUnID0gdmFsdWUgKyAxIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5oaXN0b3J5X29mX3ByZWRpY2F0ZV92YWx1ZXNfdG9fcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBtYXAgaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlJywgKG5zaWQsIHZhbHVlLCB0ZXN0LCBhY3Rpb24pIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1lcmdlZF9tYXAgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9raW5kX29mX2V2ZW50IG5zaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVfb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfc3RlcHNfYnlfY29sdW1uO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgbF9hZ18yKVxuICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgIGxfYWdfMSlcbiAgICAgICAgc2V0XG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgaW5cbiAgICBsZXQgZGF0YV9zdHJ1Y3R1cmUgPVxuICAgICAge1xuICAgICAgICBkYXRhX3N0cnVjdHVyZSB3aXRoXG4gICAgICAgIG90aGVyX2xpbmtzID1cbiAgICAgICAgICBBZ2VudElkMlNldC5kaWZmIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgICAgICAgICBkYXRhX3N0cnVjdHVyZS5vdGhlcl9saW5rc19wcmlvcml0eTtcbiAgICAgIH1cbiAgICBpblxuXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBmIGVycm9yIGxvZ19pbmZvIGJsYWNrYm9hcmQgZGF0YV9zdHJ1Y3R1cmUub3RoZXJfbGlua3NfcHJpb3JpdHlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgZiBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkIGRhdGFfc3RydWN0dXJlLm90aGVyX2xpbmtzXG4gICAgaW5cblxuICAgICgqIGRlYWwgd2l0aCByaWdpZCBlbGVtZW50cyAqKVxuICAgIGxldCBzaWRlX2VmZmVjdCA9IGRhdGFfc3RydWN0dXJlLnN1cmVfc2lkZV9lZmZlY3RzIGluXG4gICAgbGV0IGFjdGlvbl9saXN0ID1cbiAgICAgIG1hdGNoIGluaXRfc3RlcCB3aXRoXG4gICAgICB8IE5vbmUgLT4gZGF0YV9zdHJ1Y3R1cmUuY3JlYXRlX2FjdGlvbnMgQCBkYXRhX3N0cnVjdHVyZS5zdXJlX2FjdGlvbnNcbiAgICAgIHwgU29tZSBfIC0+IGRhdGFfc3RydWN0dXJlLnN1cmVfYWN0aW9uc1xuICAgIGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IGRhdGFfc3RydWN0dXJlLnN1cmVfdGVzdHMgaW5cbiAgICBsZXQgZmljdGl0aW91c19saXN0ID0gYmxhY2tib2FyZC5wcmVfZmljdGl0aW91c19saXN0IGluXG5cbiAgICBsZXQgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgIF9pbml0X3N0ZXAgKSA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuICggZXJyb3IsXG4gICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgICBpbml0X3N0ZXAgKSAoc2l0ZSwgYmluZGluZ19zdGF0ZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwb3RlbnRpYWxfdGFyZ2V0ID1cbiAgICAgICAgICAgIHBvdGVudGlhbF90YXJnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBzaXRlXG4gICAgICAgICAgICAgIGJpbmRpbmdfc3RhdGVcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIHBvdGVudGlhbF90YXJnZXQgd2l0aFxuICAgICAgICAgIHwgWyBsIF0gLT5cbiAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAoZnVuIGxpc3QgdCAtPiB0IDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzIGxcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIGxpc3QsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICBsZXQgcnVsZV9hZ19pZCA9XG4gICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfb2ZfYWdlbnQgKENJLlBvLksuYWdlbnRfb2Zfc2l0ZSBzaXRlKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBwcmVkaWNhdGVfaW5mbyA9XG4gICAgICAgICAgICAgIE11dGV4XG4gICAgICAgICAgICAgICAgKExvY2tfc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgICAoIHN0ZXBfaWQsXG4gICAgICAgICAgICAgICAgICAgICBydWxlX2FnX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIENJLlBvLksuc2l0ZV9uYW1lX29mX3NpdGUgc2l0ZSApKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByZWRpY2F0ZV9pZCA9XG4gICAgICAgICAgICAgIGFsbG9jYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIF9zdGVwX2lkID1cbiAgICAgICAgICAgICAgaW5pdF9maWN0aXRpb3VzX2FjdGlvbiBsb2dfaW5mbyBlcnJvciBwcmVkaWNhdGVfaWQgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGluaXRfc3RlcFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgbGlzdCAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICB7IGJsYWNrYm9hcmQgd2l0aCBwcmVfbnN0ZXBzID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSB9XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfbl9zaWRlX2V2ZW50cyBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggYSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgIFtdIGxpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgc2lkZV9lZmZlY3QgPSBDSS5Qby5LLnNpZGVfZWZmZWN0X29mX2xpc3Qgc2lkZV9lZmZlY3QgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkLnByZV9uc3RlcHMgc2lkZV9lZmZlY3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBibGFja2JvYXJkKSAocHJlZGljYXRlX2lkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9maWN0aXRpb3VzX2FjdGlvbiBlcnJvciB0ZXN0IGFjdGlvbiBwcmVkaWNhdGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgICAgICAgKChwcmVkaWNhdGVfaWQsIE5vbmUsIChDb3VudGVyIDAsIENvdW50ZXIgMSkpIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgcG90ZW50aWFsX3RhcmdldFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICBwcmVkaWNhdGVfaWQgOjogZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICB1bmFtYmlndW91c19zaWRlX2VmZmVjdHMsXG4gICAgICAgICAgICAgIGluaXRfc3RlcCApKVxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgIGZpY3RpdGlvdXNfbG9jYWxfbGlzdCxcbiAgICAgICAgICBbXSxcbiAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICBzaWRlX2VmZmVjdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBtYXApIHRlc3QgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X2xpc3QgPVxuICAgICAgICAgICAgcHJlZGljYXRlc19vZl90ZXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdGVzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBidWlsZF9tYXAgdGVzdF9saXN0IG1hcClcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHkpXG4gICAgICAgIHRlc3RfbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX21hcCwgdGVzdF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCkgYWN0aW9uIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgYWN0aW9uX2xpc3QsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX2FjdGlvbiB0cnVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT4gYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICAoKiBJZiB0aGUgZXZlbnQgaXMgc2VsZWN0ZWQsIGNoZWNrIHRoYXQgdGhlIHdpcmUgZW5kIGluIHRoZSBzdGF0ZSAwKilcbiAgICAgICgqIFVuZGVmLT5Db3VudGVyIDAgOiBvcGVuaW5nIGV2ZW50ICopXG4gICAgICAoKiBDb3VudGVyIDAgLT4gQ291bnRlciAxIDogcG90ZW50aWFsIGJpbmRpbmcgdHlwZSAqKVxuICAgICAgKCogQ291bnRlciAxIC0+IENvdW50ZXIgMCA6IHRoZSBjb3JyZXNwb25kaW5nIHN1YnN0aXR1dGlvbiBpcyBhcHBsaWVkICopXG4gICAgICAoKiA9PiBDb3VudGVyIDAgLT4gVW5kZWYgOiBjbG9zaW5nIGV2ZW50LCBjaGVjayB0aGF0IGlmIHRoZSBldmVudCBoYXMgYmVlbiBzZWxlY3RlZCAob3BlbiBhbmQgY2xvc2VkKSwgdGhlbiBleGFjdGVseSBvbmUgYmluZGluZyBzdGF0ZSBoYXMgYmVlbiBzZWxlY3RlZCxcbiAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29ycmVzcG9uZGluZyBzdWJzdGl0dXRpb24gKilcbiAgICAgICgqIElmIHRoZSBldmVudCBpcyBzZWxlY3RlZCAmIHRoZSBhY2NvcmRpbmcgc3Vic3RpdHV0aW9uIHRha2VuLCB0aGVuIG11dHVhbCBleGNsdXNpb24gYW1vbmcgdGhlIHBvdGVudGlhbCBiaW5kaW5nIHN0YXRlKilcbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIHBpZCAtPiBhZGRfc3RhdGUgcGlkIChDb3VudGVyIDAsIFVuZGVmaW5lZCkgbWFwKVxuICAgICAgICBtZXJnZWRfbWFwIG5saXN0XG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IHByZV9ldmVudCBuc2lkIHN0ZXAgaW5cbiAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIEEuc2V0IG1hcCBpZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXApXG4gICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgc3RlcCB0aGVuXG4gICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RlcF9pZCArIDEpXG4gICAgKVxuXG4gIGxldCBhZGRfc3RlcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwIGJsYWNrYm9hcmQgc3RlcF9pZCA9XG4gICAgbGV0IGluaXQgPSBUcmFjZS5zdGVwX2lzX2luaXQgc3RlcCBpblxuICAgIGxldCBpbml0X3N0ZXAgPSBOb25lIGluXG4gICAgbGV0IHByZV9ldmVudCA9IGJsYWNrYm9hcmQucHJlX2V2ZW50IGluXG4gICAgbGV0IHRlc3RfbGlzdCA9IFRyYWNlLnRlc3RzX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBhY3Rpb25fbGlzdCwgc2lkZV9lZmZlY3QgPSBUcmFjZS5hY3Rpb25zX29mX3N0ZXAgc3RlcCBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xvY2FsX2xpc3QgPSBbXSBpblxuICAgIGxldCBmaWN0aXRpb3VzX2xpc3QgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBsZXQgYnVpbGRfbWFwIGxpc3QgbWFwID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gbWFwIChpZCwgdmFsdWUpIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBpZCB2YWx1ZSBtYXApXG4gICAgICAgIG1hcCBsaXN0XG4gICAgaW5cbiAgICBsZXQgYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgPVxuICAgICAgbGV0IHRlc3QnLCBhY3Rpb24nID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZmluZF9kZWZhdWx0IChVbmtub3duLCBVbmtub3duKSBwaWQgbWFwXG4gICAgICBpblxuICAgICAgbGV0IHRlc3QgPVxuICAgICAgICBpZiBzdHJpY3RseV9tb3JlX3JlZmluZWQgdGVzdCB0ZXN0JyB0aGVuXG4gICAgICAgICAgdGVzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgdGVzdCdcbiAgICAgIGluXG4gICAgICBsZXQgYWN0aW9uID1cbiAgICAgICAgaWYgc3RyaWN0bHlfbW9yZV9yZWZpbmVkIGFjdGlvbiBhY3Rpb24nIHRoZW5cbiAgICAgICAgICBhY3Rpb25cbiAgICAgICAgZWxzZVxuICAgICAgICAgIGFjdGlvbidcbiAgICAgIGluXG4gICAgICBsZXQgbWFwID0gUHJlZGljYXRlaWRNYXAuYWRkIHBpZCAodGVzdCwgYWN0aW9uKSBtYXAgaW5cbiAgICAgIG1hcFxuICAgIGluXG4gICAgbGV0IGZhZGQgcGlkIHAgbWFwID1cbiAgICAgIG1hdGNoIHAgd2l0aFxuICAgICAgfCBDb3VudGVyIF8gfCBJbnRlcm5hbF9zdGF0ZV9pcyBfIHwgVW5kZWZpbmVkIHwgRGVmaW5lZCB8IFByZXNlbnQgfCBCb3VuZFxuICAgICAgfCBCb3VuZF90b190eXBlIF8gfCBVbmtub3duIC0+XG4gICAgICAgICgpXG4gICAgICB8IEZyZWUgfCBQb2ludGVyX3RvX2FnZW50IF8gfCBCb3VuZF90byBfIC0+XG4gICAgICAgIGxldCBvbGQgPSBBLmdldCBtYXAgcGlkIGluXG4gICAgICAgIEEuc2V0IG1hcCBwaWQgKEMuYWRkIHAgb2xkKVxuICAgIGluXG4gICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICBfaW5pdF9zdGVwICkgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoIGVycm9yLFxuICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19saXN0LFxuICAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzLFxuICAgICAgICAgICAgICAgaW5pdF9zdGVwICkgKHNpdGUsIGJpbmRpbmdfc3RhdGUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgcG90ZW50aWFsX3RhcmdldCA9XG4gICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc2l0ZVxuICAgICAgICAgICAgICBiaW5kaW5nX3N0YXRlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBtYXRjaCBwb3RlbnRpYWxfdGFyZ2V0IHdpdGhcbiAgICAgICAgICB8IFsgbCBdIC0+XG4gICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biBsaXN0IHQgLT4gdCA6OiBsaXN0KVxuICAgICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyBsXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIGZpY3RpdGlvdXNfbGlzdCxcbiAgICAgICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgICAgICBsaXN0LFxuICAgICAgICAgICAgICBpbml0X3N0ZXAgKVxuICAgICAgICAgIHwgXyAtPlxuICAgICAgICAgICAgbGV0IHJ1bGVfYWdfaWQgPVxuICAgICAgICAgICAgICBDSS5Qby5LLmFnZW50X2lkX29mX2FnZW50IChDSS5Qby5LLmFnZW50X29mX3NpdGUgc2l0ZSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgcHJlZGljYXRlX2luZm8gPVxuICAgICAgICAgICAgICBNdXRleFxuICAgICAgICAgICAgICAgIChMb2NrX3NpZGVfZWZmZWN0XG4gICAgICAgICAgICAgICAgICAgKCBzdGVwX2lkLFxuICAgICAgICAgICAgICAgICAgICAgcnVsZV9hZ19pZCxcbiAgICAgICAgICAgICAgICAgICAgIHJ1bGVfYWdfaWQsXG4gICAgICAgICAgICAgICAgICAgICBDSS5Qby5LLnNpdGVfbmFtZV9vZl9zaXRlIHNpdGUgKSlcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcmVkaWNhdGVfaWQgPVxuICAgICAgICAgICAgICBhbGxvY2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgcHJlZGljYXRlX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbml0X3N0ZXAgPVxuICAgICAgICAgICAgICBpbml0X2ZpY3RpdGlvdXNfYWN0aW9uIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV9pZCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5pdF9zdGVwXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKSBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICBsZXQgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIHsgYmxhY2tib2FyZCB3aXRoIHByZV9uc3RlcHMgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIH1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IHNpZGVfZWZmZWN0ID1cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKF8sIGEsIF8pIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBhIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICB8IFNvbWUgYSAtPiBhIDo6IGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBzaWRlX2VmZmVjdCA9IENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdCBpblxuICAgICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudFxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQucHJlX25zdGVwcyBzaWRlX2VmZmVjdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGJsYWNrYm9hcmQpIChwcmVkaWNhdGVfaWQsIF8sICh0ZXN0LCBhY3Rpb24pKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgYWRkX2ZpY3RpdGlvdXNfYWN0aW9uIGVycm9yIHRlc3QgYWN0aW9uIHByZWRpY2F0ZV9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICAgICAgICAoKHByZWRpY2F0ZV9pZCwgTm9uZSwgKENvdW50ZXIgMCwgQ291bnRlciAxKSkgOjogbGlzdClcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZClcbiAgICAgICAgICAgICAgICBwb3RlbnRpYWxfdGFyZ2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgICAgIHByZWRpY2F0ZV9pZCA6OiBmaWN0aXRpb3VzX2xvY2FsX2xpc3QsXG4gICAgICAgICAgICAgIHVuYW1iaWd1b3VzX3NpZGVfZWZmZWN0cyxcbiAgICAgICAgICAgICAgaW5pdF9zdGVwICkpXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgYmxhY2tib2FyZCxcbiAgICAgICAgICBmaWN0aXRpb3VzX2xpc3QsXG4gICAgICAgICAgZmljdGl0aW91c19sb2NhbF9saXN0LFxuICAgICAgICAgIFtdLFxuICAgICAgICAgIGluaXRfc3RlcCApXG4gICAgICAgIHNpZGVfZWZmZWN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIG1hcCkgdGVzdCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHRlc3RfbGlzdCA9XG4gICAgICAgICAgICBwcmVkaWNhdGVzX29mX3Rlc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0ZXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGJ1aWxkX21hcCB0ZXN0X2xpc3QgbWFwKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBQcmVkaWNhdGVpZE1hcC5lbXB0eSlcbiAgICAgICAgdGVzdF9saXN0XG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbWFwLCB0ZXN0X21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGFjdGlvbl9tYXAsIHRlc3RfbWFwKSBhY3Rpb24gLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBhY3Rpb25fbGlzdCwgdGVzdF9saXN0ID1cbiAgICAgICAgICAgIHByZWRpY2F0ZXNfb2ZfYWN0aW9uIGZhbHNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQgaW5pdCBhY3Rpb25cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICBidWlsZF9tYXAgYWN0aW9uX2xpc3QgYWN0aW9uX21hcCxcbiAgICAgICAgICAgIGJ1aWxkX21hcCB0ZXN0X2xpc3QgdGVzdF9tYXAgKSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgUHJlZGljYXRlaWRNYXAuZW1wdHksIHRlc3RfbWFwKVxuICAgICAgICBhY3Rpb25fbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBtZXJnZWRfbWFwID1cbiAgICAgIFByZWRpY2F0ZWlkTWFwLm1vbmFkaWNfZm9sZDIgcGFyYW1ldGVyIGVycm9yXG4gICAgICAgIChmdW4gXyBlIGtleSB0ZXN0IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5ICh0ZXN0LCBhY3Rpb24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IHRlc3QgYWNjIC0+IGUsIFByZWRpY2F0ZWlkTWFwLmFkZCBrZXkgKHRlc3QsIFVua25vd24pIGFjYylcbiAgICAgICAgKGZ1biBfIGUga2V5IGFjdGlvbiBhY2MgLT5cbiAgICAgICAgICBlLCBQcmVkaWNhdGVpZE1hcC5hZGQga2V5IChVbmtub3duLCBhY3Rpb24pIGFjYylcbiAgICAgICAgdGVzdF9tYXAgYWN0aW9uX21hcCBQcmVkaWNhdGVpZE1hcC5lbXB0eVxuICAgIGluXG4gICAgbGV0IG1lcmdlZF9tYXAgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBtYXAgcGlkIC0+IFByZWRpY2F0ZWlkTWFwLmFkZCBwaWQgKENvdW50ZXIgMSwgVW5kZWZpbmVkKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgZmljdGl0aW91c19sb2NhbF9saXN0XG4gICAgaW5cbiAgICBsZXQgbWVyZ2VkX21hcCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIG1hcCAocGlkLCBfLCAodGVzdCwgYWN0aW9uKSkgLT4gYWRkX3N0YXRlIHBpZCAodGVzdCwgYWN0aW9uKSBtYXApXG4gICAgICAgIG1lcmdlZF9tYXAgdW5hbWJpZ3VvdXNfc2lkZV9lZmZlY3RzXG4gICAgaW5cbiAgICBsZXQgc2lkZV9lZmZlY3QgPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biBsaXN0IChfLCBhLCBfKSAtPlxuICAgICAgICAgIG1hdGNoIGEgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgICAgICAgfCBTb21lIGEgLT4gYSA6OiBsaXN0KVxuICAgICAgICBbXSB1bmFtYmlndW91c19zaWRlX2VmZmVjdHNcbiAgICBpblxuICAgIGlmIHNpZGVfZWZmZWN0ID0gW10gJiYgUHJlZGljYXRlaWRNYXAuaXNfZW1wdHkgbWVyZ2VkX21hcCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdGVwX2lkICsgMSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBuc2lkID0gYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMSBpblxuICAgICAgbGV0IF8gPVxuICAgICAgICBBLnNldCBibGFja2JvYXJkLnByZV9zaWRlX2VmZmVjdF9vZl9ldmVudCBuc2lkXG4gICAgICAgICAgKENJLlBvLksuc2lkZV9lZmZlY3Rfb2ZfbGlzdCBzaWRlX2VmZmVjdClcbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IHByZV9ldmVudCBuc2lkIHN0ZXAgaW5cbiAgICAgIGxldCBwcmVfc3RlcHNfYnlfY29sdW1uID1cbiAgICAgICAgUHJlZGljYXRlaWRNYXAuZm9sZFxuICAgICAgICAgIChmdW4gaWQgKHRlc3QsIGFjdGlvbikgbWFwIC0+XG4gICAgICAgICAgICBsZXQgdmFsdWUsIGxpc3QgPSBBLmdldCBtYXAgaWQgaW5cbiAgICAgICAgICAgIGxldCB2YWx1ZScgPSB2YWx1ZSArIDEgaW5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgZmFkZCBpZCBhY3Rpb25cbiAgICAgICAgICAgICAgICBibGFja2JvYXJkLmhpc3Rvcnlfb2ZfcHJlZGljYXRlX3ZhbHVlc190b19wcmVkaWNhdGVfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIEEuc2V0IG1hcCBpZCAodmFsdWUnLCAobnNpZCwgdmFsdWUsIHRlc3QsIGFjdGlvbikgOjogbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBtYXApXG4gICAgICAgICAgbWVyZ2VkX21hcCBibGFja2JvYXJkLnByZV9zdGVwc19ieV9jb2x1bW5cbiAgICAgIGluXG4gICAgICBsZXQgXyA9IEEuc2V0IGJsYWNrYm9hcmQucHJlX2tpbmRfb2ZfZXZlbnQgbnNpZCAodHlwZV9vZl9zdGVwIHN0ZXApIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgc3RlcCB0aGVuXG4gICAgICAgICAgKFsgbnNpZCBdLCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCBzdGVwKVxuICAgICAgICAgIDo6IGJsYWNrYm9hcmQucHJlX29ic2VydmFibGVfbGlzdFxuICAgICAgICBlbHNlXG4gICAgICAgICAgYmxhY2tib2FyZC5wcmVfb2JzZXJ2YWJsZV9saXN0XG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX2V2ZW50O1xuICAgICAgICAgIHByZV9maWN0aXRpb3VzX2xpc3QgPSBmaWN0aXRpb3VzX2xpc3Q7XG4gICAgICAgICAgcHJlX3N0ZXBzX2J5X2NvbHVtbjtcbiAgICAgICAgICBwcmVfbnN0ZXBzID0gbnNpZDtcbiAgICAgICAgICBwcmVfb2JzZXJ2YWJsZV9saXN0ID0gb2JzZXJ2YWJsZV9saXN0O1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RlcF9pZCArIDEpXG4gICAgKVxuXG4gIGxldCBmaW5hbGl6ZSBoZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGwgPSBibGFja2JvYXJkLnByZV9maWN0aXRpb3VzX2xpc3QgaW5cbiAgICBtYXRjaCBsIHdpdGhcbiAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIHwgXyAtPlxuICAgICAgbGV0IG5zaWQgPSBibGFja2JvYXJkLnByZV9uc3RlcHMgKyAxIGluXG4gICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19uX3NpZGVfZXZlbnRzIGxvZ19pbmZvIGluXG4gICAgICBsZXQgb2JzZXJ2YWJsZV9saXN0ID1cbiAgICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgICAgKGZ1biAoeCwgaW5mbykgLT4gbnNpZCA6OiB4LCBpbmZvKVxuICAgICAgICAgIChMaXN0LnJldiBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3QpXG4gICAgICBpblxuICAgICAgbGV0IGJsYWNrYm9hcmQgPVxuICAgICAgICB7XG4gICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgcHJlX25zdGVwcyA9IG5zaWQ7XG4gICAgICAgICAgcHJlX29ic2VydmFibGVfbGlzdCA9IG9ic2VydmFibGVfbGlzdDtcbiAgICAgICAgICBwcmVfZmljdGl0aW91c19vYnNlcnZhYmxlID0gU29tZSBuc2lkO1xuICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBibGFja2JvYXJkID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIChlcnJvciwgYmxhY2tib2FyZCkgcHJlZGljYXRlX2lkIC0+XG4gICAgICAgICAgICBhZGRfZmljdGl0aW91c19hY3Rpb24gZXJyb3IgVW5kZWZpbmVkIFVua25vd24gcHJlZGljYXRlX2lkXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgICAgICAgKGVycm9yLCBibGFja2JvYXJkKSBsXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc2V0ID1cbiAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIHNldCAoc3RlcHMsIF8pIC0+XG4gICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIHNldCkgZWlkIC0+XG4gICAgICAgICAgICAgICAgbGV0IHN0ZXAgPSBBLmdldCBibGFja2JvYXJkLnByZV9ldmVudCBlaWQgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBhZ2VudHNfaW5fb2JzID1cbiAgICAgICAgICAgICAgICAgIENJLlBvLksuYWdlbnRfaWRfaW5fb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0ZXBcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgQ0kuUG8uSy5BZ2VudElkU2V0LnVuaW9uIHNldCBhZ2VudHNfaW5fb2JzKVxuICAgICAgICAgICAgICBzZXQgc3RlcHMpXG4gICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgQ0kuUG8uSy5BZ2VudElkU2V0LmVtcHR5KVxuICAgICAgICAgIG9ic2VydmFibGVfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBzZXQgeCA9IENJLlBvLksuQWdlbnRJZFNldC5tZW0geCBzZXQgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgQS5pdGVyaVxuICAgICAgICAgIChmdW4gaSBzdGVwIC0+XG4gICAgICAgICAgICBsZXQgXywgXywgbGV2ZWwgPVxuICAgICAgICAgICAgICBDSS5Qby5LLmxldmVsX29mX2V2ZW50IGhldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIHN0ZXAgc2V0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgQS5zZXQgYmxhY2tib2FyZC5wcmVfbGV2ZWxfb2ZfZXZlbnQgaSBsZXZlbClcbiAgICAgICAgICBibGFja2JvYXJkLnByZV9ldmVudFxuICAgICAgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBwcmludF9wcmVibGFja2JvYXJkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgYWRkX3N0ZXBfdXBfdG9faXNvID0gYWRkX3N0ZXBfc3Ryb25nXG5cbiAgKCoqIGludGVyZmFjZSAqKVxuXG4gIGxldCBuX3ByZWRpY2F0ZXMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQucHJlX25jb2x1bW4gKyAxXG5cbiAgbGV0IGV2ZW50X2xpc3Rfb2ZfcHJlZGljYXRlIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBwcmVkaWNhdGVfaWQgPVxuICAgIHRyeSBlcnJvciwgbG9nX2luZm8sIHNuZCAoQS5nZXQgYmxhY2tib2FyZC5wcmVfc3RlcHNfYnlfY29sdW1uIHByZWRpY2F0ZV9pZClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIHByZWRpY2F0ZSBpZFwiXG4gICAgICAgIChGYWlsdXJlIFwiZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGVcIikgW11cblxuICBsZXQgbl9ldmVudHNfcGVyX3ByZWRpY2F0ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcHJlZGljYXRlX2lkID1cbiAgICB0cnkgZXJyb3IsIGxvZ19pbmZvLCBmc3QgKEEuZ2V0IGJsYWNrYm9hcmQucHJlX3N0ZXBzX2J5X2NvbHVtbiBwcmVkaWNhdGVfaWQpXG4gICAgd2l0aCBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiVW5rbm93biBwcmVkaWNhdGUgaWRcIlxuICAgICAgICAoRmFpbHVyZSBcIm5fZXZlbnRzX3Blcl9wcmVkaWNhdGVcIikgMFxuXG4gIGxldCBuX2V2ZW50cyBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfbnN0ZXBzICsgMVxuXG4gIGxldCBtYW5kYXRvcnlfZXZlbnRzIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLnByZV9vYnNlcnZhYmxlX2xpc3RcblxuICBsZXQgZ2V0X2ZpY3RpdGlvdXNfb2JzZXJ2YWJsZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfZmljdGl0aW91c19vYnNlcnZhYmxlXG5cbiAgbGV0IGdldF9zaWRlX2VmZmVjdCBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZC5wcmVfc2lkZV9lZmZlY3Rfb2ZfZXZlbnRcbmVuZFxuIiwiKCoqXG4gICogYmxhY2tib2FyZC5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDExLTA5LTA1IGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0wMyAyMDo0ODozNCBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKw6lyw7RtZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXRcbiAgKiBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgdHlwZSBCbGFja2JvYXJkID0gc2lnXG4gIG1vZHVsZSBQQiA6IEJsYWNrYm9hcmRfZ2VuZXJhdGlvbi5QcmVCbGFja2JvYXJkXG5cbiAgdHlwZSBldmVudF9jYXNlX2FkZHJlc3NcbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4ICopXG5cbiAgdHlwZSBjYXNlX2luZm9cbiAgdHlwZSBjYXNlX3ZhbHVlXG4gIHR5cGUgY2FzZV9hZGRyZXNzXG4gIHR5cGUgcG9pbnRlclxuXG4gICgqKiBibGFja2JvYXJkKilcblxuICB0eXBlIGJsYWNrYm9hcmQgKCpibGFja2JvYXJkLCBvbmNlIGZpbmFsaXplZCopXG4gIHR5cGUgYXNzaWduX3Jlc3VsdFxuXG4gIHZhbCBpc19mYWlsZWQgOiBhc3NpZ25fcmVzdWx0IC0+IGJvb2xcbiAgdmFsIGlzX3N1Y2NlZWRlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgaXNfaWdub3JlZCA6IGFzc2lnbl9yZXN1bHQgLT4gYm9vbFxuICB2YWwgc3VjY2VzcyA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIGlnbm9yZSA6IGFzc2lnbl9yZXN1bHRcbiAgdmFsIGZhaWwgOiBhc3NpZ25fcmVzdWx0XG4gIHZhbCBwcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IFBCLnByZWRpY2F0ZV9pZFxuICB2YWwgYnVpbGRfcG9pbnRlciA6IFBCLnN0ZXBfc2hvcnRfaWQgLT4gcG9pbnRlclxuICB2YWwgaXNfYmVmb3JlX2JsYWNrYm9hcmQgOiBwb2ludGVyIC0+IGJvb2xcbiAgdmFsIGdldF9ldmVudCA6IGJsYWNrYm9hcmQgLT4gUEIuc3RlcF9pZCAtPiBUcmFjZS5zdGVwXG4gIHZhbCBnZXRfbl9laWQgOiBibGFja2JvYXJkIC0+IGludFxuICB2YWwgZ2V0X25wcmVkaWNhdGVfaWQgOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWRfYnlfbGV2ZWwgOlxuICAgIGJsYWNrYm9hcmQgLT4gUEIucHJlZGljYXRlX2lkIC0+IFByaW9yaXR5LmxldmVsIC0+IGludFxuXG4gIHZhbCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQgOiBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBpbnRcbiAgdmFsIGdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIDogYmxhY2tib2FyZCAtPiBpbnRcblxuICB2YWwgZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCA6XG4gICAgYmxhY2tib2FyZCAtPiBQQi5wcmVkaWNhdGVfaWQgLT4gUEIuc3RlcF9zaG9ydF9pZCBvcHRpb25cblxuICB2YWwgZ2V0X2xhc3RfbGlua2VkX2V2ZW50IDpcbiAgICBibGFja2JvYXJkIC0+IFBCLnByZWRpY2F0ZV9pZCAtPiBQQi5zdGVwX3Nob3J0X2lkIG9wdGlvblxuXG4gIHZhbCBnZXRfc3RhY2tfZGVwdGggOiBibGFja2JvYXJkIC0+IGludFxuXG4gIHZhbCBpc19zZWxlY3RlZF9ldmVudCA6XG4gICAgKFBCLnN0ZXBfaWQsIGJsYWNrYm9hcmQsIGJvb2wgb3B0aW9uKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG5cbiAgdmFsIHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIDpcbiAgICAoY2FzZV92YWx1ZSwgUEIucHJlZGljYXRlX3ZhbHVlKSBQQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgZm9sbG93X3BvaW50ZXJfdXAgOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGV2ZW50X2Nhc2VfYWRkcmVzcykgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBmb2xsb3dfcG9pbnRlcl9kb3duIDpcbiAgICAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCBldmVudF9jYXNlX2FkZHJlc3MpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgaXNfYm91bmRhcnkgOiAoYmxhY2tib2FyZCwgZXZlbnRfY2FzZV9hZGRyZXNzLCBib29sKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGJ1aWxkX2V2ZW50X2Nhc2VfYWRkcmVzcyA6XG4gICAgUEIucHJlZGljYXRlX2lkIC0+IHBvaW50ZXIgLT4gZXZlbnRfY2FzZV9hZGRyZXNzXG5cbiAgdmFsIGV4aXN0X2Nhc2UgOlxuICAgIChibGFja2JvYXJkLCBldmVudF9jYXNlX2FkZHJlc3MsIGJvb2wgb3B0aW9uKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIGdldF9zdGF0aWMgOlxuICAgICggYmxhY2tib2FyZCxcbiAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyxcbiAgICAgIFBCLnN0ZXBfc2hvcnRfaWQgKiBQQi5zdGVwX2lkICogUEIucHJlZGljYXRlX3ZhbHVlICogUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgKVxuICAgIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgc2V0IDpcbiAgICAoY2FzZV9hZGRyZXNzLCBjYXNlX3ZhbHVlLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudGVybmFyeVxuXG4gIHZhbCBnZXQgOiAoY2FzZV9hZGRyZXNzLCBibGFja2JvYXJkLCBjYXNlX3ZhbHVlKSBQQi5DSS5Qby5LLkguYmluYXJ5XG4gIHZhbCBkZWMgOiAoY2FzZV9hZGRyZXNzLCBibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIG92ZXJ3cml0ZSA6XG4gICAgKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSwgYmxhY2tib2FyZCwgYmxhY2tib2FyZCkgUEIuQ0kuUG8uSy5ILnRlcm5hcnlcblxuICB2YWwgcmVmaW5lIDpcbiAgICAoIGNhc2VfYWRkcmVzcyxcbiAgICAgIGNhc2VfdmFsdWUsXG4gICAgICBibGFja2JvYXJkLFxuICAgICAgYmxhY2tib2FyZCAqIGFzc2lnbl9yZXN1bHQgKVxuICAgIFBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGJyYW5jaCA6IChibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgdmFsIHJlc2V0X2xhc3RfYnJhbmNoaW5nIDogKGJsYWNrYm9hcmQsIGJsYWNrYm9hcmQpIFBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgcmVzZXRfaW5pdCA6IChibGFja2JvYXJkLCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcblxuICB2YWwgaW1wb3J0IDpcbiAgICA/aGV1cmlzdGljOlByaW9yaXR5LnByaW9yaXRpZXMgLT5cbiAgICAoVHJhY2Uuc3RlcCBsaXN0LCBibGFja2JvYXJkKSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgKCoqIGluaXRpYWxpc2F0aW9uKilcblxuICB0eXBlIHJlc3VsdCA9IChUcmFjZS5zdGVwICogUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdCkgbGlzdFxuICAoKiogb3V0cHV0IHJlc3VsdCopXG5cbiAgdmFsIGlzX21heGltYWxfc29sdXRpb24gOiAoYmxhY2tib2FyZCwgYm9vbCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKiBpdGVyYXRpb24qKVxuXG4gIHZhbCB0cmFuc2xhdGVfYmxhY2tib2FyZCA6IChibGFja2JvYXJkLCByZXN1bHQpIFBCLkNJLlBvLksuSC51bmFyeVxuICAoKiogZXhwb3J0aW5nIHJlc3VsdCopXG5cbiAgdmFsIHByaW50X2JsYWNrYm9hcmQgOiAoYmxhY2tib2FyZCwgdW5pdCkgUEIuQ0kuUG8uSy5ILnVuYXJ5XG4gICgqKnByZXR0eSBwcmludGluZyopXG5cbiAgdmFsIGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyA6XG4gICAgKHN0cmluZywgaW50LCBpbnQsIGJsYWNrYm9hcmQsIHVuaXQpIFBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5cbiAgdmFsIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyA6XG4gICAgKGJsYWNrYm9hcmQsIGV2ZW50X2Nhc2VfYWRkcmVzcywgdW5pdCkgUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBwcmludF9zdGFjayA6IChibGFja2JvYXJkLCB1bml0KSBQQi5DSS5Qby5LLkgudW5hcnlcbiAgdmFsIGV4aXN0IDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgYm9vbGVhbiA6IGJvb2wgb3B0aW9uIC0+IGNhc2VfdmFsdWVcbiAgdmFsIHBvaW50ZXJfdG9fcHJldmlvdXMgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBwb2ludGVyX3RvX25leHQgOiBldmVudF9jYXNlX2FkZHJlc3MgLT4gY2FzZV9hZGRyZXNzXG4gIHZhbCBwb2ludGVyIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfdmFsdWVcbiAgdmFsIHZhbHVlX2FmdGVyIDogZXZlbnRfY2FzZV9hZGRyZXNzIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBjYXNlX2xpc3Rfb2ZfZWlkIDpcbiAgICAoYmxhY2tib2FyZCwgUEIuc3RlcF9pZCwgZXZlbnRfY2FzZV9hZGRyZXNzIGxpc3QpIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgc3RhdGUgOiBQQi5wcmVkaWNhdGVfdmFsdWUgLT4gY2FzZV92YWx1ZVxuICB2YWwgaXNfZXhpc3RfZXZlbnQgOiBQQi5zdGVwX2lkIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgbl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCA6IFByaW9yaXR5LmxldmVsIC0+IGNhc2VfYWRkcmVzc1xuICB2YWwgbl91bnJlc29sdmVkX2V2ZW50cyA6IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCA6XG4gICAgZXZlbnRfY2FzZV9hZGRyZXNzIC0+IFByaW9yaXR5LmxldmVsIC0+IGNhc2VfYWRkcmVzc1xuXG4gIHZhbCBuX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiA6IGV2ZW50X2Nhc2VfYWRkcmVzcyAtPiBjYXNlX2FkZHJlc3NcblxuICB2YWwgZm9yY2VkX2V2ZW50cyA6XG4gICAgYmxhY2tib2FyZCAtPiAoUEIuc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3RcblxuICB2YWwgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgOiBibGFja2JvYXJkIC0+IFBCLnN0ZXBfaWQgLT4gUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdFxuXG4gIHZhbCBjdXQgOlxuICAgICggYmxhY2tib2FyZCxcbiAgICAgIFBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIGJsYWNrYm9hcmQgKiBQQi5zdGVwX2lkIGxpc3QgKVxuICAgIFBCLkNJLlBvLksuSC5iaW5hcnlcblxuICB2YWwgdGljayA6XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgIGJvb2wgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvXG4gICgqIHRvIGRvOiBtb3ZlIHRvIHRoZSBtb2R1bGUgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cyopXG5cbiAgdmFsIGxldmVsX29mX2V2ZW50IDpcbiAgICAoYmxhY2tib2FyZCwgUEIuc3RlcF9pZCwgUHJpb3JpdHkubGV2ZWwpIFBCLkNJLlBvLksuSC5iaW5hcnlcbmVuZFxuXG5tb2R1bGUgQmxhY2tib2FyZCA6IEJsYWNrYm9hcmQgPSBzdHJ1Y3RcbiAgbW9kdWxlIFBCID0gQmxhY2tib2FyZF9nZW5lcmF0aW9uLlByZWJsYWNrYm9hcmRcbiAgKCoqIGJsYWNrYm9hcmQgbWF0cml4KilcblxuICB0eXBlIGFzc2lnbl9yZXN1bHQgPSBGYWlsIHwgU3VjY2VzcyB8IElnbm9yZVxuICB0eXBlIHBvaW50ZXIgPSBQQi5zdGVwX3Nob3J0X2lkXG5cbiAgbGV0IHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIHBvcyA/KG1lc3NhZ2UgPSBcIlwiKSBleG4gZGVmYXVsdCA9XG4gICAgbGV0IGVycm9yLCBhID1cbiAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBhXG5cbiAgbGV0IHN1Y2Nlc3MgPSBTdWNjZXNzXG4gIGxldCBpZ25vcmUgPSBJZ25vcmVcbiAgbGV0IGZhaWwgPSBGYWlsXG5cbiAgbGV0IGlzX2lnbm9yZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBJZ25vcmUgLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBpc19mYWlsZWQgeCA9XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgfCBGYWlsIC0+IHRydWVcbiAgICB8IFN1Y2Nlc3MgfCBJZ25vcmUgLT4gZmFsc2VcblxuICBsZXQgaXNfc3VjY2VlZGVkIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgU3VjY2VzcyAtPiB0cnVlXG4gICAgfCBGYWlsIHwgSWdub3JlIC0+IGZhbHNlXG5cbiAgbGV0IG51bGxfcG9pbnRlciA9IFBCLmR1bW15X3N0ZXBfc2hvcnRfaWRcbiAgbGV0IGlzX251bGxfcG9pbnRlciB4ID0geCA9IG51bGxfcG9pbnRlclxuICBsZXQgcG9pbnRlcl9iZWZvcmVfYmxhY2tib2FyZCA9IFBCLnplcm9fc3RlcF9zaG9ydF9pZFxuICBsZXQgaXNfbnVsbF9wb2ludGVyX3N0ZXBfaWQgeCA9IHggPSBQQi5kdW1teV9zdGVwX2lkXG4gIGxldCBpc19iZWZvcmVfYmxhY2tib2FyZCB4ID0geCA9IHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmRcbiAgbGV0IGJ1aWxkX3BvaW50ZXIgaSA9IGlcblxuICB0eXBlIGV2ZW50X2Nhc2VfYWRkcmVzcyA9IHtcbiAgICBjb2x1bW5fcHJlZGljYXRlX2lkOiBQQi5wcmVkaWNhdGVfaWQ7XG4gICAgcm93X3Nob3J0X2V2ZW50X2lkOiBwb2ludGVyO1xuICB9XG5cbiAgbGV0IHByZWRpY2F0ZV9pZF9vZl9jYXNlX2FkZHJlc3MgeCA9IHguY29sdW1uX3ByZWRpY2F0ZV9pZFxuXG4gIGxldCBpc19ib3VuZGFyeSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIF9ibGFja2JvYXJkIGV2ZW50X2FkZHJlc3MgPVxuICAgIGVycm9yLCBsb2dfaW5mbywgaXNfYmVmb3JlX2JsYWNrYm9hcmQgZXZlbnRfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWRcblxuICBsZXQgYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIHBpZCBzZWlkID1cbiAgICB7IGNvbHVtbl9wcmVkaWNhdGVfaWQgPSBwaWQ7IHJvd19zaG9ydF9ldmVudF9pZCA9IHNlaWQgfVxuXG4gIHR5cGUgY2FzZV9hZGRyZXNzID1cbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIG9mIGludCAqIFByaW9yaXR5LmxldmVsXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBvZiBpbnRcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBvZiBldmVudF9jYXNlX2FkZHJlc3NcbiAgICB8IFZhbHVlX2FmdGVyIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgVmFsdWVfYmVmb3JlIG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgUG9pbnRlcl90b19wcmV2aW91cyBvZiBldmVudF9jYXNlX2FkZHJlc3NcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgb2YgUHJpb3JpdHkubGV2ZWxcbiAgICB8IEV4aXN0IG9mIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgS2VlcF9ldmVudCBvZiBQQi5zdGVwX2lkXG5cbiAgbGV0IGlzX2V4aXN0X2V2ZW50IGkgPSBLZWVwX2V2ZW50IGlcblxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaSA9XG4gICAgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaS5jb2x1bW5fcHJlZGljYXRlX2lkXG5cbiAgbGV0IG5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIGkgaiA9XG4gICAgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGkuY29sdW1uX3ByZWRpY2F0ZV9pZCwgailcblxuICBsZXQgcG9pbnRlcl90b19uZXh0IGUgPSBQb2ludGVyX3RvX25leHQgZVxuICBsZXQgdmFsdWVfYWZ0ZXIgZSA9IFZhbHVlX2FmdGVyIGVcbiAgbGV0IHZhbHVlX2JlZm9yZSBlID0gVmFsdWVfYmVmb3JlIGVcbiAgbGV0IHBvaW50ZXJfdG9fcHJldmlvdXMgZSA9IFBvaW50ZXJfdG9fcHJldmlvdXMgZVxuICBsZXQgbl91bnJlc29sdmVkX2V2ZW50cyA9IE5fdW5yZXNvbHZlZF9ldmVudHNcbiAgbGV0IG5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaSA9IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaVxuICBsZXQgZXhpc3QgZSA9IEV4aXN0IGVcblxuICB0eXBlIGNhc2VfdmFsdWUgPVxuICAgIHwgU3RhdGUgb2YgUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBDb3VudGVyIG9mIGludFxuICAgIHwgUG9pbnRlciBvZiBwb2ludGVyXG4gICAgfCBCb29sZWFuIG9mIGJvb2wgb3B0aW9uXG5cbiAgbGV0IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIHggPVxuICAgIG1hdGNoIHggd2l0aFxuICAgIHwgU3RhdGUgeCAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgXCJTdGF0ZSEgXCJcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgeFxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IENvdW50ZXIgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiQ291bnRlciAlaVwiIGlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgICgpXG4gICAgfCBQb2ludGVyIGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBcIlBvaW50ZXIgJWlcIlxuICAgICAgICAgIChQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBpKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICBpblxuICAgICAgKClcbiAgICB8IEJvb2xlYW4gYiAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIFwiQm9vbGVhbiAlc1wiXG4gICAgICAgICAgKG1hdGNoIGIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBcIj9cIlxuICAgICAgICAgIHwgU29tZSB0cnVlIC0+IFwidHJ1ZVwiXG4gICAgICAgICAgfCBfIC0+IFwiZmFsc2VcIilcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgaW5cbiAgICAgICgpXG5cbiAgbGV0IHN0cmluZ19vZl9wb2ludGVyIHNlaWQgPVxuICAgIFwiZXZlbnQgc2VpZCBcIiBeIHN0cmluZ19vZl9pbnQgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQpXG5cbiAgbGV0IHByaW50X3BvaW50ZXIgbG9nIHNlaWQgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiJXNcIiAoc3RyaW5nX29mX3BvaW50ZXIgc2VpZClcbiAgbGV0IHN0YXRlIHByZWRpY2F0ZV92YWx1ZSA9IFN0YXRlIHByZWRpY2F0ZV92YWx1ZVxuICBsZXQgcG9pbnRlciBwID0gUG9pbnRlciBwLnJvd19zaG9ydF9ldmVudF9pZFxuICBsZXQgYm9vbGVhbiBiID0gQm9vbGVhbiBiXG5cbiAgbGV0IGNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfYWRkcmVzcyA9XG4gICAgVmFsdWVfYWZ0ZXIgZXZlbnRfYWRkcmVzc1xuXG4gIGxldCBwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV92YWx1ZVxuICAgICAgPVxuICAgIG1hdGNoIGNhc2VfdmFsdWUgd2l0aFxuICAgIHwgU3RhdGUgeCAtPiBlcnJvciwgbG9nX2luZm8sIHhcbiAgICB8IENvdW50ZXIgXyB8IFBvaW50ZXIgXyB8IEJvb2xlYW4gXyAtPlxuICAgICAgbGV0IF8gPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwid3Jvbmcga2luZCBvZiBjYXNlX3ZhbHVlIGluIHByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJwcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZVwiKSBQQi51bmtub3duXG5cbiAgdHlwZSBhc3NpZ25tZW50ID0gY2FzZV9hZGRyZXNzICogY2FzZV92YWx1ZVxuXG4gIGxldCBib29sX3N0cmljdGx5X21vcmVfcmVmaW5lZCB4IHkgPVxuICAgIG1hdGNoIHgsIHkgd2l0aFxuICAgIHwgU29tZSBfLCBOb25lIC0+IHRydWVcbiAgICB8IF8sIF8gLT4gZmFsc2VcblxuICBsZXQgZyBwIHAyIHBvcyBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgeCB5ID1cbiAgICBtYXRjaCB4LCB5IHdpdGhcbiAgICB8IFN0YXRlIHgsIFN0YXRlIHkgLT4gZXJyb3IsIGxvZ19pbmZvLCBwIHggeVxuICAgIHwgQm9vbGVhbiB4LCBCb29sZWFuIHkgLT4gZXJyb3IsIGxvZ19pbmZvLCBwMiB4IHlcbiAgICB8IFN0YXRlIF8sIF8gfCBCb29sZWFuIF8sIF8gfCBDb3VudGVyIF8sIF8gfCBQb2ludGVyIF8sIF8gLT5cbiAgICAgIGxldCBmaWxlLCBsaW5lLCBfLCBfID0gcG9zIGluXG4gICAgICBsZXQgc3RyaW5nID0gZmlsZSBeIFwiLCBsaW5lOiBcIiBeIHN0cmluZ19vZl9pbnQgbGluZSBpblxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgcG9zXG4gICAgICAgIH5tZXNzYWdlOlwiQ291bnRlcnMgYW5kL29yIFBvaW50ZXJzIHNob3VsZCBub3QgYmUgY29tcGFyZWRcIlxuICAgICAgICAoRmFpbHVyZSAoc3RyaW5nIF4gXCIgQ29tcGFyaXNvbiBiZXR3ZWVuIHBvaW50ZXJzIGFuZCBjb3VudGVyc1wiKSlcbiAgICAgICAgZmFsc2VcblxuICBsZXQgc3RyaWN0bHlfbW9yZV9yZWZpbmVkID1cbiAgICBnIFBCLnN0cmljdGx5X21vcmVfcmVmaW5lZCBib29sX3N0cmljdGx5X21vcmVfcmVmaW5lZCBfX1BPU19fXG5cbiAgdHlwZSBjYXNlX2luZm9fc3RhdGljID0ge1xuICAgIHJvd19zaG9ydF9pZDogUEIuc3RlcF9zaG9ydF9pZDtcbiAgICBldmVudF9pZDogUEIuc3RlcF9pZDtcbiAgICB0ZXN0OiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gICAgYWN0aW9uOiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gIH1cblxuICB0eXBlIGNhc2VfaW5mb19keW5hbWljID0ge1xuICAgIHBvaW50ZXJfcHJldmlvdXM6IHBvaW50ZXI7XG4gICAgcG9pbnRlcl9uZXh0OiBwb2ludGVyO1xuICAgIHN0YXRlX2FmdGVyOiBQQi5wcmVkaWNhdGVfdmFsdWU7XG4gICAgc2VsZWN0ZWQ6IGJvb2wgb3B0aW9uO1xuICB9XG5cbiAgdHlwZSBjYXNlX2luZm8gPSB7IHN0YXRpYzogY2FzZV9pbmZvX3N0YXRpYzsgZHluYW1pYzogY2FzZV9pbmZvX2R5bmFtaWMgfVxuXG4gIGxldCBkdW1teV9jYXNlX2luZm9fc3RhdGljID1cbiAgICB7XG4gICAgICByb3dfc2hvcnRfaWQgPSBQQi5kdW1teV9zdGVwX3Nob3J0X2lkO1xuICAgICAgZXZlbnRfaWQgPSBQQi5kdW1teV9zdGVwX2lkO1xuICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICBhY3Rpb24gPSBQQi51bmtub3duO1xuICAgIH1cblxuICBsZXQgZHVtbXlfY2FzZV9pbmZvX2R5bmFtaWMgPVxuICAgIHtcbiAgICAgIHBvaW50ZXJfcHJldmlvdXMgPSBudWxsX3BvaW50ZXI7XG4gICAgICBwb2ludGVyX25leHQgPSBudWxsX3BvaW50ZXI7XG4gICAgICBzdGF0ZV9hZnRlciA9IFBCLnVua25vd247XG4gICAgICBzZWxlY3RlZCA9IE5vbmU7XG4gICAgfVxuXG4gIGxldCBjb3JyZWN0X3BvaW50ZXIgc2VpZCBzaXplID1cbiAgICBsZXQgaW50X3NlaWQgPSBQQi5pbnRfb2Zfc3RlcF9zaG9ydF9pZCBzZWlkIGluXG4gICAgaWYgaW50X3NlaWQgPCAwIHRoZW5cbiAgICAgIHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmRcbiAgICBlbHNlIGlmIGludF9zZWlkID49IHNpemUgdGhlblxuICAgICAgUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgc2l6ZVxuICAgIGVsc2VcbiAgICAgIHNlaWRcblxuICBsZXQgaW5pdF9pbmZvX2R5bmFtaWMgc2VpZCBzaXplID1cbiAgICB7XG4gICAgICBwb2ludGVyX3ByZXZpb3VzID0gY29ycmVjdF9wb2ludGVyIChQQi5kZWNfc3RlcF9zaG9ydF9pZCBzZWlkKSBzaXplO1xuICAgICAgcG9pbnRlcl9uZXh0ID0gY29ycmVjdF9wb2ludGVyIChQQi5pbmNfc3RlcF9zaG9ydF9pZCBzZWlkKSBzaXplO1xuICAgICAgc3RhdGVfYWZ0ZXIgPSBQQi51bmtub3duO1xuICAgICAgc2VsZWN0ZWQgPSBOb25lO1xuICAgIH1cblxuICBsZXQgaW5pdF9pbmZvX3N0YXRpYyBfcF9pZCBzZWlkIChlaWQsIF8sIHRlc3QsIGFjdGlvbikgPVxuICAgIHsgcm93X3Nob3J0X2lkID0gc2VpZDsgZXZlbnRfaWQgPSBlaWQ7IHRlc3Q7IGFjdGlvbiB9XG5cbiAgbGV0IGdldF9laWRfb2ZfdHJpcGxlICh4LCBfLCBfLCBfKSA9IHhcblxuICBsZXQgZHVtbXlfY2FzZV9pbmZvID1cbiAgICB7IHN0YXRpYyA9IGR1bW15X2Nhc2VfaW5mb19zdGF0aWM7IGR5bmFtaWMgPSBkdW1teV9jYXNlX2luZm9fZHluYW1pYyB9XG5cbiAgbGV0IGluaXRfaW5mbyBwX2lkIHNlaWQgc2l6ZSB0cmlwbGUgPVxuICAgIHtcbiAgICAgIHN0YXRpYyA9IGluaXRfaW5mb19zdGF0aWMgcF9pZCBzZWlkIHRyaXBsZTtcbiAgICAgIGR5bmFtaWMgPSBpbml0X2luZm9fZHluYW1pYyBzZWlkIHNpemU7XG4gICAgfVxuXG4gIHR5cGUgc3RhY2sgPSBhc3NpZ25tZW50IGxpc3RcbiAgKCoqIGJsYWNrYm9hcmQgKilcblxuICB0eXBlIGJsYWNrYm9hcmQgPSB7XG4gICAgZXZlbnQ6IFRyYWNlLnN0ZXAgUEIuQS50O1xuICAgIHByZV9jb2x1bW5fbWFwX2ludjogUEIucHJlZGljYXRlX2luZm8gUEIuQS50O1xuICAgICAgICAoKiogbWFwcyBlYWNoIHdpcmUgaWQgdG8gaXRzIHdpcmUgbGFiZWwgKilcbiAgICBmb3JjZWRfZXZlbnRzOiAoUEIuc3RlcF9pZCBsaXN0ICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pIGxpc3Q7XG4gICAgbl9wcmVkaWNhdGVfaWQ6IGludDtcbiAgICBuX2VpZDogaW50O1xuICAgIG5fc2VpZDogaW50IFBCLkEudDtcbiAgICBjdXJyZW50X3N0YWNrOiBzdGFjaztcbiAgICBzdGFjazogc3RhY2sgbGlzdDtcbiAgICBibGFja2JvYXJkOiBjYXNlX2luZm8gUEIuQS50IFBCLkEudDtcbiAgICBzZWxlY3RlZF9ldmVudHM6IGJvb2wgb3B0aW9uIFBCLkEudDtcbiAgICB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkOiBpbnQgUEIuQS50O1xuICAgIHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWw6IGludCBQQi5BLnQgUHJpb3JpdHkuTGV2ZWxNYXAudDtcbiAgICB1c2VkX3ByZWRpY2F0ZV9pZDogYm9vbCBQQi5BLnQ7XG4gICAgbl91bnJlc29sdmVkX2V2ZW50czogaW50O1xuICAgIG5fdW5yZXNvbHZlZF9ldmVudHNfYnlfbGV2ZWw6IGludCBQcmlvcml0eS5MZXZlbE1hcC50O1xuICAgIGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZDogUEIuc3RlcF9zaG9ydF9pZCBQQi5BLnQ7XG4gICAgZXZlbnRfY2FzZV9saXN0OiBldmVudF9jYXNlX2FkZHJlc3MgbGlzdCBQQi5BLnQ7XG4gICAgc2lkZV9lZmZlY3Rfb2ZfZXZlbnQ6IFBCLkNJLlBvLksuc2lkZV9lZmZlY3QgUEIuQS50O1xuICAgIGZpY3RpdGlvdXNfb2JzZXJ2YWJsZTogUEIuc3RlcF9pZCBvcHRpb247XG4gICAgbGV2ZWxfb2ZfZXZlbnQ6IFByaW9yaXR5LmxldmVsIFBCLkEudDtcbiAgfVxuXG4gIGxldCB0aWNrIHByb2ZpbGluZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy50aWNrIHByb2ZpbGluZ19pbmZvXG5cbiAgbGV0IGxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZCA9XG4gICAgdHJ5XG4gICAgICAoIGVycm9yLFxuICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgUEIuQS5nZXQgYmxhY2tib2FyZC5sZXZlbF9vZl9ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSApXG4gICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJVbmtub3duIGV2ZW50IGlkXCJcbiAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIGV2ZW50IGlkXCIpIFByaW9yaXR5LmhpZ2hlc3RcblxuICBsZXQgZ2V0X2V2ZW50IGJsYWNrYm9hcmQgayA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgKFBCLmludF9vZl9zdGVwX2lkIGspXG4gIGxldCBnZXRfbl9laWQgYmxhY2tib2FyZCA9IGJsYWNrYm9hcmQubl9laWRcbiAgbGV0IGdldF9zdGFja19kZXB0aCBibGFja2JvYXJkID0gTGlzdC5sZW5ndGggYmxhY2tib2FyZC5zdGFja1xuICBsZXQgZm9yY2VkX2V2ZW50cyBibGFja2JvYXJkID0gYmxhY2tib2FyZC5mb3JjZWRfZXZlbnRzXG5cbiAgbGV0IHNpZGVfZWZmZWN0X29mX2V2ZW50IGJsYWNrYm9hcmQgaSA9XG4gICAgUEIuQS5nZXQgYmxhY2tib2FyZC5zaWRlX2VmZmVjdF9vZl9ldmVudCAoUEIuaW50X29mX3N0ZXBfaWQgaSlcblxuICBsZXQgY2FzZV9saXN0X29mX2VpZCBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlaWQgPVxuICAgIHRyeVxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnRfY2FzZV9saXN0IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJEZXJlZmVyZW5jaW5nIE51bGwgcG9pbnRlclwiXG4gICAgICAgIChGYWlsdXJlIFwiRGVyZWZlcmVuY2luZyBudWxsIHBvaW50ZXJcIikgW11cblxuICBsZXQgZ2V0X2Nhc2UgcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkID1cbiAgICB0cnlcbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBQQi5BLmdldFxuICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzLmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGNhc2VfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWQpIClcbiAgICB3aXRoIF8gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgfm1lc3NhZ2U6XCJEZXJlZmVyZW5jaW5nIE51bGwgcG9pbnRlclwiXG4gICAgICAgIChGYWlsdXJlIFwiRGVyZWZlcmVuY2luZyBudWxsIHBvaW50ZXJcIikgZHVtbXlfY2FzZV9pbmZvXG5cbiAgbGV0IGdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGFkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IHN0YXRpYyA9IGNhc2Uuc3RhdGljIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgKHN0YXRpYy5yb3dfc2hvcnRfaWQsIHN0YXRpYy5ldmVudF9pZCwgc3RhdGljLnRlc3QsIHN0YXRpYy5hY3Rpb24pIClcblxuICBsZXQgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBlaWQsIF8sIF8pID1cbiAgICAgIGdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIFwiRXZlbnQ6ICVpLCBQcmVkaWNhdGU6ICVpQC5cIiAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAocHJlZGljYXRlX2lkX29mX2Nhc2VfYWRkcmVzcyBjYXNlKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB4ID1cbiAgICBtYXRjaCB4IHdpdGhcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIChpLCBqKSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBcIm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fcHJlZCAlaSAlc0AuXCIgaVxuICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgailcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgIFwibl91bnJlc29sdmVkX2V2ZW50c19pbl9wcmVkICVpIEAuXCIgaVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBlIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJQb2ludGVyXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFZhbHVlX2FmdGVyIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlZhbHVlX2FmdGVyICBcIlxuICAgICAgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVcbiAgICB8IFZhbHVlX2JlZm9yZSBlIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGYgKFBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgXCJWYWx1ZV9iZWZvcmUgXCJcbiAgICAgIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGUgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIlBvaW50ZXJfYmVmb3JlIFwiXG4gICAgICBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCBpIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJVbnJlc29sdmVkX2V2ZW50c19hdF9sZXZlbCAlc1wiXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHMgLT5cbiAgICAgIGxldCBfID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpIFwiVW5yZXNvbHZlZF9ldmVudHNcIlxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IEV4aXN0IGUgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiAoUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKSBcIkV4aXN0IFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBlXG4gICAgfCBLZWVwX2V2ZW50IGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgXCJLZWVwICVpXCIgKFBCLmludF9vZl9zdGVwX2lkIGkpXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBnZXRfbnByZWRpY2F0ZV9pZCBibGFja2JvYXJkID0gYmxhY2tib2FyZC5uX3ByZWRpY2F0ZV9pZFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWRfYnlfbGV2ZWwgYmxhY2tib2FyZCBwaWQgbGV2ZWwgPVxuICAgIG1hdGNoXG4gICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbFxuICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICB3aXRoXG4gICAgfCBTb21lIHggLT4gUEIuQS5nZXQgeCBwaWRcbiAgICB8IE5vbmUgLT4gMFxuXG4gIGxldCBnZXRfbl91bnJlc29sdmVkX2V2ZW50c19vZl9waWQgYmxhY2tib2FyZCBwaWQgPVxuICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCBwaWRcblxuICBsZXQgZ2V0X25fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZCA9IGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50c1xuICBsZXQgZ2V0X3BvaW50ZXJfbmV4dCBjYXNlID0gY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dFxuXG4gIGxldCBmb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHsgYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IGNhc2UuZHluYW1pYy5wb2ludGVyX25leHQgfSApXG5cbiAgbGV0IGZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBhZGRyZXNzIGJsYWNrYm9hcmRcbiAgICBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHsgYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIH0gKVxuXG4gIGxldCBnZXRfZmlyc3RfbGlua2VkX2V2ZW50IGJsYWNrYm9hcmQgcGlkID1cbiAgICBpZiBwaWQgPCAwIHx8IHBpZCA+PSBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkIHRoZW5cbiAgICAgIE5vbmVcbiAgICBlbHNlXG4gICAgICBTb21lIFBCLnplcm9fc3RlcF9zaG9ydF9pZFxuXG4gIGxldCBnZXRfbGFzdF9saW5rZWRfZXZlbnQgYmxhY2tib2FyZCBwaWQgPVxuICAgIGlmIHBpZCA8IDAgfHwgcGlkID49IGJsYWNrYm9hcmQubl9wcmVkaWNhdGVfaWQgdGhlblxuICAgICAgTm9uZVxuICAgIGVsc2VcbiAgICAgIFNvbWUgKFBCLkEuZ2V0IGJsYWNrYm9hcmQubGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkIHBpZClcblxuICAoKipwcmV0dHkgcHJpbnRpbmcqKVxuICBsZXQgcHJpbnRfa25vd25fY2FzZSBsb2cgcHJlZiBpbmYgc3VmIGNhc2UgPVxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzdGVzdDpcIiBwcmVmIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2Uuc3RhdGljLnRlc3QgaW5cbiAgICBsZXQgXyA9XG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiL2VpZDolaS9hY3Rpb246XCJcbiAgICAgICAgKFBCLmludF9vZl9zdGVwX2lkIGNhc2Uuc3RhdGljLmV2ZW50X2lkKVxuICAgIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2Uuc3RhdGljLmFjdGlvbiBpblxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgaW5mIGluXG4gICAgbGV0IF8gPSBQQi5wcmludF9wcmVkaWNhdGVfdmFsdWUgbG9nIGNhc2UuZHluYW1pYy5zdGF0ZV9hZnRlciBpblxuICAgIGxldCBfID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCIgc3VmIGluXG4gICAgKClcblxuICBsZXQgcHJpbnRfY2FzZSBsb2cgY2FzZSA9XG4gICAgbGV0IHN0YXR1cyA9IGNhc2UuZHluYW1pYy5zZWxlY3RlZCBpblxuICAgIG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgfCBTb21lIGZhbHNlIC0+ICgpXG4gICAgfCBTb21lIHRydWUgLT4gcHJpbnRfa25vd25fY2FzZSBsb2cgXCJcIiBcIiBcIiBcIiBcIiBjYXNlXG4gICAgfCBOb25lIC0+IHByaW50X2tub3duX2Nhc2UgbG9nIFwiPyhcIiBcIikgXCIgXCIgXCIgY2FzZVxuXG4gIGxldCBwcmludF9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzcyA9XG4gICAgbGV0IGxvZyA9IFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG4gICAgbWF0Y2ggYWRkcmVzcyB3aXRoXG4gICAgfCBLZWVwX2V2ZW50IGkgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJcyB0aGUgZXZlbnQgJWkgc2VsZWN0ZWQgPyBcIiAoUEIuaW50X29mX3N0ZXBfaWQgaSlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBFeGlzdCBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiSXMgdGhlIGNhc2UgXCIgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJzZWxlY3RlZCA/IFwiIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbl9hdF9sZXZlbCAoaSwgaikgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2dcbiAgICAgICAgICBcIk51bWJlciBvZiB1bnJlc29sdmVkIGV2ZW50cyBmb3IgdGhlIHByZWRpY2F0ZSAlaSBhdCBsZXZlbCAlc1wiIGlcbiAgICAgICAgICAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGopXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk51bWJlciBvZiB1bnJlc29sdmVkIGV2ZW50cyBmb3IgdGhlIHByZWRpY2F0ZSAlaVwiIGlcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICgpXG4gICAgfCBQb2ludGVyX3RvX25leHQgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlByb2NoYWluIMOpdsOpbmVtZW50IGFnaXNzYW50IHN1ciBcIiBpblxuICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaVxuICAgIHwgVmFsdWVfYWZ0ZXIgaSAtPlxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlZhbGV1ciBhcHLDqHMgXCIgaW5cbiAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICB8IFZhbHVlX2JlZm9yZSBpIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiVmFsZXVyIGF2YW50IFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGkgLT5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJFdmVuZW1lbnQgcHLDqWPDqXNlbnQgYWdpc3NhbnQgc3VyIFwiIGluXG4gICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiTm9tYnJlIGQnw6l2w6luZW1lbnRzIG5vbiByw6lzb2x1XCIgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfYXRfbGV2ZWwgaSAtPlxuICAgICAgbGV0ICgpID1cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk5vbWJyZSBkJ8OpdsOpbmVtZW50cyBub24gcsOpc29sdSBhdCBsZXZlbCAlc1wiXG4gICAgICAgICAgKFByaW9yaXR5LnN0cmluZ19vZl9sZXZlbCBpKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgc3RyaW5nX29mX3ZhbHVlIHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBTdGF0ZSBwYiAtPiBQQi5zdHJpbmdfb2ZfcHJlZGljYXRlX3ZhbHVlIHBiXG4gICAgfCBDb3VudGVyIGkgLT4gXCJDb3VudGVyIFwiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgfCBQb2ludGVyIGkgLT4gc3RyaW5nX29mX3BvaW50ZXIgaVxuICAgIHwgQm9vbGVhbiBib29sIC0+XG4gICAgICAobWF0Y2ggYm9vbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gXCI/XCJcbiAgICAgIHwgU29tZSB0cnVlIC0+IFwiWWVzXCJcbiAgICAgIHwgU29tZSBmYWxzZSAtPiBcIk5vXCIpXG5cbiAgbGV0IHByaW50X3ZhbHVlIGxvZyB2YWx1ZSA9XG4gICAgbWF0Y2ggdmFsdWUgd2l0aFxuICAgIHwgU3RhdGUgcGIgLT4gUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlIGxvZyBwYlxuICAgIHwgQ291bnRlciBpIC0+IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDb3VudGVyICVpXCIgaVxuICAgIHwgUG9pbnRlciBpIC0+IHByaW50X3BvaW50ZXIgbG9nIGlcbiAgICB8IEJvb2xlYW4gYm9vbCAtPlxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVzXCJcbiAgICAgICAgKG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCI/XCJcbiAgICAgICAgfCBTb21lIHRydWUgLT4gXCJZZXNcIlxuICAgICAgICB8IFNvbWUgZmFsc2UgLT4gXCJOb1wiKVxuXG4gIGxldCBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIChhZGRyZXNzLCB2YWx1ZSkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgIHByaW50X2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgaW5cbiAgICBsZXQgXyA9IHByaW50X3ZhbHVlIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgdmFsdWUgaW5cbiAgICBlcnJvciwgbG9nX2luZm9cblxuICBsZXQgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKipCTEFDS0JPQVJEKipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVpIHdpcmVzLCAlaSBldmVudHNcIiBibGFja2JvYXJkLm5fcHJlZGljYXRlX2lkXG4gICAgICAgIGJsYWNrYm9hcmQubl9laWRcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndpcmVzOipcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgZXJyID0gcmVmIGVycm9yIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFBCLkEuaXRlcmlcbiAgICAgICAgKGZ1biBpIGFycmF5IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiVpXCIgaSBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgUEIuQS5nZXQgYmxhY2tib2FyZC51c2VkX3ByZWRpY2F0ZV9pZCBpIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKndpcmVzICVpOiBcIiBpIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgbGV0IHJlYyBhdXggaiBlcnJvciA9XG4gICAgICAgICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiogJWk6XCIgaiBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgICAgICAgICAgICBsZXQgY2FzZSA9IFBCLkEuZ2V0IGFycmF5IGogaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlIGxvZyBjYXNlIGluXG4gICAgICAgICAgICAgICAgbGV0IGonID0gZ2V0X3BvaW50ZXJfbmV4dCBjYXNlIGluXG4gICAgICAgICAgICAgICAgbGV0IGonID0gUEIuaW50X29mX3N0ZXBfc2hvcnRfaWQgaicgaW5cbiAgICAgICAgICAgICAgICBpZiBqID0gaicgdGhlblxuICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICBhdXggaicgZXJyb3JcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgICAgICBhdXggKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHBvaW50ZXJfYmVmb3JlX2JsYWNrYm9hcmQpICFlcnJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF8gPSBlcnIgOj0gZXJyb3IgaW5cbiAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC5ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IgPSAhZXJyIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIipzdGFja3MqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIC0+XG4gICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoTGlzdC5yZXYgYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrKVxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCBfID1cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgc3RhY2sgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbykgLT5cbiAgICAgICAgICAgICAgICBwcmludF9hc3NpZ25tZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQpXG4gICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8pIHN0YWNrXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvKSBibGFja2JvYXJkLnN0YWNrXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiKnNlbGVjdGVkX2V2ZW50cypcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIGkgYm9vbCAtPlxuICAgICAgICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgIHwgU29tZSBiIC0+XG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiICBFdmVudDolaSAoJXMpXCIgaVxuICAgICAgICAgICAgICAgIChpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICBcIktFUFRcIlxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgXCJSRU1PVkVEXCIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZylcbiAgICAgICAgYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHNcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqdW5zb2x2ZWRfZXZlbnRzKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgJWlcIiBibGFja2JvYXJkLm5fdW5yZXNvbHZlZF9ldmVudHMgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip3ZWlnaHQgb2YgcHJlZGljYXRlX2lkKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGxldCAoKSA9XG4gICAgICBQQi5BLml0ZXJpXG4gICAgICAgIChmdW4gYSBiIC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIiAlaTolaVwiIGEgYiBpblxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cpXG4gICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZFxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIip3ZWlnaHQgb2YgcHJlZGljYXRlX2lkX2J5X2xldmVsKlwiIGluXG4gICAgbGV0ICgpID1cbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLml0ZXJcbiAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCIgTGV2ZWw6JXNcIiAoUHJpb3JpdHkuc3RyaW5nX29mX2xldmVsIGwpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nIGluXG4gICAgICAgICAgUEIuQS5pdGVyaSAoZnVuIGEgYiAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiICVpOiVpXCIgYSBiIGluXG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cpKVxuICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCIqKlwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICAoKiogcHJvcGFnYXRpb24gcmVxdWVzdCAqKVxuXG4gIGxldCBhZGRfZXZlbnQgZWlkIChwaWQsIHNlaWQpIGFycmF5IGxldmVsIHVuc29sdmVkID1cbiAgICBsZXQgZXZlbnRfY2FzZV9hZGRyZXNzID0gYnVpbGRfZXZlbnRfY2FzZV9hZGRyZXNzIHBpZCBzZWlkIGluXG4gICAgbGV0IG9sZCA9IFBCLkEuZ2V0IGFycmF5IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpIGluXG4gICAgbGV0IHVuc29sdmVkID1cbiAgICAgIFByaW9yaXR5LkxldmVsTWFwLmFkZCBsZXZlbFxuICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbGV2ZWwgdW5zb2x2ZWQgKyAxKVxuICAgICAgICB1bnNvbHZlZFxuICAgIGluXG4gICAgUEIuQS5zZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX2lkIGVpZCkgKGV2ZW50X2Nhc2VfYWRkcmVzcyA6OiBvbGQpLCB1bnNvbHZlZFxuXG4gIGxldCBlbXB0eV9zdGFjayA9IFtdXG5cbiAgbGV0IGltcG9ydCA/aGV1cmlzdGljOl8gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmQgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5fcHJlZGljYXRlcyA9XG4gICAgICBQQi5uX3ByZWRpY2F0ZXMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5fZXZlbnRzID1cbiAgICAgIFBCLm5fZXZlbnRzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZV9ibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgc3RhY2sgPSBbXSBpblxuICAgIGxldCBjdXJyZW50X3N0YWNrID0gZW1wdHlfc3RhY2sgaW5cbiAgICBsZXQgZXZlbnRfY2FzZV9saXN0ID0gUEIuQS5tYWtlIG5fZXZlbnRzIFtdIGluXG4gICAgbGV0IG5fc2VpZCA9IFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgMCBpblxuICAgIGxldCB1bnNvbHZlZF9ieV9sZXZlbCA9IFByaW9yaXR5LkxldmVsTWFwLmVtcHR5IGluXG4gICAgbGV0IGJsYWNrYm9hcmQgPSBQQi5BLm1ha2Ugbl9wcmVkaWNhdGVzIChQQi5BLm1ha2UgMSBkdW1teV9jYXNlX2luZm8pIGluXG4gICAgbGV0IHdlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWwgPVxuICAgICAgbGV0IHJlYyBhdXggbGV2ZWxfb3B0IG1hcCA9XG4gICAgICAgIG1hdGNoIGxldmVsX29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiBtYXBcbiAgICAgICAgfCBTb21lIGxldmVsIC0+XG4gICAgICAgICAgYXV4IChQcmlvcml0eS5oaWdoZXIgbGV2ZWwpXG4gICAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsIChQQi5BLm1ha2UgMCAwKSBtYXApXG4gICAgICBpblxuICAgICAgYXV4IChTb21lIFByaW9yaXR5Lmxvd2VzdCkgUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHlcbiAgICBpblxuICAgIGxldCBpbmNfZGVwdGggbGV2ZWwgcF9pZCA9XG4gICAgICBtYXRjaFxuICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5maW5kX29wdGlvbiBsZXZlbCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkX2J5X2xldmVsXG4gICAgICB3aXRoXG4gICAgICB8IFNvbWUgYSAtPlxuICAgICAgICBsZXQgb2xkID0gdHJ5IFBCLkEuZ2V0IGEgcF9pZCB3aXRoIE5vdF9mb3VuZCAtPiAwIGluXG4gICAgICAgIFBCLkEuc2V0IGEgcF9pZCAob2xkICsgMSlcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG5cbiAgICBsZXQgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZCA9IFBCLkEubWFrZSAwIDAgaW5cbiAgICBsZXQgbGFzdF9saW5rZWRfZXZlbnRfb2ZfcHJlZGljYXRlX2lkID1cbiAgICAgIFBCLkEubWFrZSBuX3ByZWRpY2F0ZXMgUEIuemVyb19zdGVwX3Nob3J0X2lkXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGxldCByZWMgYXV4MSBwX2lkIGxvZ19pbmZvIGVycm9yID1cbiAgICAgICAgaWYgcF9pZCA8IDAgdGhlblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzaXplID1cbiAgICAgICAgICAgIFBCLm5fZXZlbnRzX3Blcl9wcmVkaWNhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgcF9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IHNpemUgPSBzaXplICsgMSBpblxuICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgIFBCLkEuc2V0IGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZCBwX2lkXG4gICAgICAgICAgICAgIChQQi5zdGVwX3Nob3J0X2lkX29mX2ludCAoc2l6ZSAtIDEpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCB3ZWlndGhfb2ZfcHJlZGljYXRlX2lkIHBfaWQgKHNpemUgLSAyKSBpblxuICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgbl9zZWlkIHBfaWQgc2l6ZSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgUEIuZXZlbnRfbGlzdF9vZl9wcmVkaWNhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgcHJlX2JsYWNrYm9hcmQgcF9pZFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGFycmF5ID0gUEIuQS5tYWtlIHNpemUgZHVtbXlfY2FzZV9pbmZvIGluXG4gICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBibGFja2JvYXJkIHBfaWQgYXJyYXkgaW5cbiAgICAgICAgICBsZXQgcmVjIGF1eDIgc2VpZCBsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgICAgfCBbXSAtPlxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgZHluYW1pYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX3ByZXZpb3VzID0gUEIuemVyb19zdGVwX3Nob3J0X2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHBvaW50ZXJfbmV4dCA9IFBCLmluY19zdGVwX3Nob3J0X2lkIFBCLnplcm9fc3RlcF9zaG9ydF9pZDtcbiAgICAgICAgICAgICAgICAgICAgICBzdGF0ZV9hZnRlciA9IFBCLnVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZCA9IFNvbWUgdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgIHN0YXRpYyA9XG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICByb3dfc2hvcnRfaWQgPSBQQi56ZXJvX3N0ZXBfc2hvcnRfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgZXZlbnRfaWQgPSBQQi5kdW1teV9zdGVwX2lkO1xuICAgICAgICAgICAgICAgICAgICAgIHRlc3QgPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbiA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgXyA9IFBCLkEuc2V0IGFycmF5IDAgaW5mbyBpblxuICAgICAgICAgICAgICBsZXQgcHJlZF9zaXplID1cbiAgICAgICAgICAgICAgICBQQi5kZWNfc3RlcF9zaG9ydF9pZCAoUEIuc3RlcF9zaG9ydF9pZF9vZl9pbnQgc2l6ZSlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIGR5bmFtaWMgPVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgcG9pbnRlcl9wcmV2aW91cyA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyX25leHQgPSBwcmVkX3NpemU7XG4gICAgICAgICAgICAgICAgICAgICAgc3RhdGVfYWZ0ZXIgPSBQQi51bmtub3duO1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkID0gU29tZSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgc3RhdGljID1cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIHJvd19zaG9ydF9pZCA9IHByZWRfc2l6ZTtcbiAgICAgICAgICAgICAgICAgICAgICBldmVudF9pZCA9IFBCLmR1bW15X3N0ZXBfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgdGVzdCA9IFBCLnVua25vd247XG4gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gUEIudW5rbm93bjtcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBfID0gUEIuQS5zZXQgYXJyYXkgKHNpemUgLSAxKSBpbmZvIGluXG4gICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICB8IHRyaXBsZSA6OiBxIC0+XG4gICAgICAgICAgICAgIGxldCBpbmZvID0gaW5pdF9pbmZvIHBfaWQgc2VpZCAoc2l6ZSAtIDEpIHRyaXBsZSBpblxuICAgICAgICAgICAgICBsZXQgZWlkID0gZ2V0X2VpZF9vZl90cmlwbGUgdHJpcGxlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIF9ldmVudHMgPVxuICAgICAgICAgICAgICAgIFBCLmdldF9wcmVfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IF9lcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICAgICAgICBQQi5nZXRfbGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIHByZV9ibGFja2JvYXJkIGVpZFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBpbmNfZGVwdGggbGV2ZWwgcF9pZCBpblxuICAgICAgICAgICAgICBsZXQgKCksIF8gPVxuICAgICAgICAgICAgICAgIGFkZF9ldmVudCBlaWQgKHBfaWQsIHNlaWQpIGV2ZW50X2Nhc2VfbGlzdCBsZXZlbFxuICAgICAgICAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZW1wdHlcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gUEIuQS5zZXQgYXJyYXkgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHNlaWQpIGluZm8gaW5cbiAgICAgICAgICAgICAgYXV4MiAoUEIuZGVjX3N0ZXBfc2hvcnRfaWQgc2VpZCkgcSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIGF1eDIgKFBCLnN0ZXBfc2hvcnRfaWRfb2ZfaW50IChzaXplIC0gMikpIGxpc3QgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGF1eDEgKHBfaWQgLSAxKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICApXG4gICAgICBpblxuICAgICAgYXV4MSAobl9wcmVkaWNhdGVzIC0gMSkgbG9nX2luZm8gZXJyb3JcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZvcmNlZF9ldmVudHMgPVxuICAgICAgUEIubWFuZGF0b3J5X2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnQgPVxuICAgICAgUEIuZ2V0X3ByZV9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVfYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdW5zb2x2ZWRfYnlfbGV2ZWwgPVxuICAgICAgbGV0IHJlYyBhdXggayBlcnJvciBsb2dfaW5mbyBtYXAgPVxuICAgICAgICBpZiBrID0gMCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBtYXBcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGV2ZWwgPVxuICAgICAgICAgICAgUEIuZ2V0X2xldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIHByZV9ibGFja2JvYXJkIChQQi5zdGVwX2lkX29mX2ludCBrKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG1hcCA9XG4gICAgICAgICAgICBQcmlvcml0eS5MZXZlbE1hcC5hZGQgbGV2ZWxcbiAgICAgICAgICAgICAgKFByaW9yaXR5LkxldmVsTWFwLmZpbmRfZGVmYXVsdCAwIGxldmVsIG1hcCArIDEpXG4gICAgICAgICAgICAgIG1hcFxuICAgICAgICAgIGluXG4gICAgICAgICAgYXV4IChrIC0gMSkgZXJyb3IgbG9nX2luZm8gbWFwXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBhdXggbl9ldmVudHMgZXJyb3IgbG9nX2luZm8gdW5zb2x2ZWRfYnlfbGV2ZWxcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHNpZGVfZWZmZWN0cyA9XG4gICAgICBQQi5nZXRfc2lkZV9lZmZlY3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGZpY3RpdGlvdXNfb2JzID1cbiAgICAgIFBCLmdldF9maWN0aXRpb3VzX29ic2VydmFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgcHJlX2JsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBiID1cbiAgICAgIHtcbiAgICAgICAgZXZlbnQ7XG4gICAgICAgIHNpZGVfZWZmZWN0X29mX2V2ZW50ID0gc2lkZV9lZmZlY3RzO1xuICAgICAgICBwcmVfY29sdW1uX21hcF9pbnYgPSBQQi5nZXRfcHJlX2NvbHVtbl9tYXBfaW52IHByZV9ibGFja2JvYXJkO1xuICAgICAgICBsZXZlbF9vZl9ldmVudCA9IFBCLmxldmVscyBwcmVfYmxhY2tib2FyZDtcbiAgICAgICAgZm9yY2VkX2V2ZW50cztcbiAgICAgICAgbl9laWQgPSBuX2V2ZW50cztcbiAgICAgICAgbl9zZWlkO1xuICAgICAgICBldmVudF9jYXNlX2xpc3Q7XG4gICAgICAgIGxhc3RfbGlua2VkX2V2ZW50X29mX3ByZWRpY2F0ZV9pZDtcbiAgICAgICAgbl9wcmVkaWNhdGVfaWQgPSBuX3ByZWRpY2F0ZXM7XG4gICAgICAgIGN1cnJlbnRfc3RhY2s7XG4gICAgICAgIHN0YWNrO1xuICAgICAgICBibGFja2JvYXJkO1xuICAgICAgICBzZWxlY3RlZF9ldmVudHMgPSBQQi5BLm1ha2Ugbl9ldmVudHMgTm9uZTtcbiAgICAgICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZDtcbiAgICAgICAgd2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbDtcbiAgICAgICAgdXNlZF9wcmVkaWNhdGVfaWQgPSBQQi5BLm1ha2Ugbl9wcmVkaWNhdGVzIHRydWU7XG4gICAgICAgIG5fdW5yZXNvbHZlZF9ldmVudHMgPSBuX2V2ZW50cztcbiAgICAgICAgbl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbCA9IHVuc29sdmVkX2J5X2xldmVsO1xuICAgICAgICBmaWN0aXRpb3VzX29ic2VydmFibGUgPSBmaWN0aXRpb3VzX29icztcbiAgICAgIH1cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYlxuXG4gIGxldCBleGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpbmZvID1cbiAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGluZm8uZHluYW1pYy5zZWxlY3RlZFxuXG4gIGxldCBzZXRfY2FzZSBwYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgIGJsYWNrYm9hcmQgPVxuICAgIHRyeVxuICAgICAgbGV0IF8gPVxuICAgICAgICBQQi5BLnNldFxuICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmJsYWNrYm9hcmQgY2FzZV9hZGRyZXNzLmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIGNhc2VfYWRkcmVzcy5yb3dfc2hvcnRfZXZlbnRfaWQpXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgIHdpdGggXyAtPlxuICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICB+bWVzc2FnZTpcIkRlcmVmZXJlbmNpbmcgTnVsbCBwb2ludGVyXCJcbiAgICAgICAgKEZhaWx1cmUgXCJEZXJlZmVyZW5jaW5nIG51bGwgcG9pbnRlclwiKSBibGFja2JvYXJkXG5cbiAgbGV0IHNldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkID1cbiAgICBtYXRjaCBjYXNlX2FkZHJlc3Mgd2l0aFxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGludCwgbGV2ZWwpIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50MiAtPlxuICAgICAgICAobWF0Y2hcbiAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9vcHRpb24gbGV2ZWxcbiAgICAgICAgICAgICBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWRfYnlfbGV2ZWxcbiAgICAgICAgIHdpdGhcbiAgICAgICAgfCBTb21lIGEgLT5cbiAgICAgICAgICBsZXQgKCkgPSBQQi5BLnNldCBhIGludCBpbnQyIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgIH5tZXNzYWdlOlwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIHNldFwiXG4gICAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgICAgYmxhY2tib2FyZClcbiAgICAgIHwgUG9pbnRlciBfIHwgU3RhdGUgXyB8IEJvb2xlYW4gXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBpbnQgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQ291bnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBfID0gUEIuQS5zZXQgYmxhY2tib2FyZC53ZWlndGhfb2ZfcHJlZGljYXRlX2lkIGludCBpbnQyIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFBvaW50ZXJfdG9fbmV4dCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgUG9pbnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBwb2ludGVyX25leHQgPSBpbnQyIH0gfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgQ291bnRlciBfIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBWYWx1ZV9hZnRlciBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgU3RhdGUgc3RhdGUgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgICAgICBnZXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgeyBvbGQgd2l0aCBkeW5hbWljID0geyBvbGQuZHluYW1pYyB3aXRoIHN0YXRlX2FmdGVyID0gc3RhdGUgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBCb29sZWFuIF8gfCBDb3VudGVyIF8gfCBQb2ludGVyIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlwic2V0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdmFsdWVfYWZ0ZXJcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcbiAgICB8IFZhbHVlX2JlZm9yZSBfY2FzZV9hZGRyZXNzIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgIH5tZXNzYWdlOlwic2V0IHNob3VsZCBub3QgYmUgY2FsbGVkIHdpdGggdmFsdWVfYmVmb3JlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gQmxhY2tib2FyZC5zZXRcIilcbiAgICAgICAgYmxhY2tib2FyZFxuICAgIHwgUG9pbnRlcl90b19wcmV2aW91cyBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgUG9pbnRlciBpbnQyIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBwb2ludGVyX3ByZXZpb3VzID0gaW50MiB9IH1cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgc2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWVcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICB8IEJvb2xlYW4gXyB8IFN0YXRlIF8gfCBDb3VudGVyIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJzZXQsIGxpbmUgODk2LCBJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50IC0+XG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgeyBibGFja2JvYXJkIHdpdGggbl91bnJlc29sdmVkX2V2ZW50cyA9IGludCB9XG4gICAgICB8IEJvb2xlYW4gXyB8IFBvaW50ZXIgXyB8IFN0YXRlIF8gLT5cbiAgICAgICAgd2FybiBwYXJhbWV0ZXIgbG9nX2luZm8gZXJyb3IgX19QT1NfX1xuICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgXCJzZXQsIGxpbmUgOTA1LCBJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGxldmVsIC0+XG4gICAgICAobWF0Y2ggY2FzZV92YWx1ZSB3aXRoXG4gICAgICB8IENvdW50ZXIgaW50IC0+XG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAge1xuICAgICAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgICAgICBuX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsID1cbiAgICAgICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuYWRkIGxldmVsIGludFxuICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50c19ieV9sZXZlbDtcbiAgICAgICAgICB9IClcbiAgICAgIHwgQm9vbGVhbiBfIHwgU3RhdGUgXyB8IFBvaW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBLZWVwX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBQQi5BLnNldCBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyAoUEIuaW50X29mX3N0ZXBfaWQgc3RlcF9pZCkgYlxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIHwgUG9pbnRlciBfIHwgU3RhdGUgXyB8IENvdW50ZXIgXyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJJbmNvbXBhdGlibGUgYWRkcmVzcyBhbmQgdmFsdWUgaW4gZnVuY3Rpb24gc2V0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBCbGFja2JvYXJkLnNldFwiKVxuICAgICAgICAgIGJsYWNrYm9hcmQpXG4gICAgfCBFeGlzdCBjYXNlX2FkZHJlc3MgLT5cbiAgICAgIChtYXRjaCBjYXNlX3ZhbHVlIHdpdGhcbiAgICAgIHwgQm9vbGVhbiBiIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG9sZCA9XG4gICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGNhc2VfdmFsdWUgPVxuICAgICAgICAgIHsgb2xkIHdpdGggZHluYW1pYyA9IHsgb2xkLmR5bmFtaWMgd2l0aCBzZWxlY3RlZCA9IGIgfSB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHNldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBQb2ludGVyIF8gfCBDb3VudGVyIF8gfCBTdGF0ZSBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGxvZ19pbmZvIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcIkluY29tcGF0aWJsZSBhZGRyZXNzIGFuZCB2YWx1ZSBpbiBmdW5jdGlvbiBzZXRcIlxuICAgICAgICAgIChGYWlsdXJlIFwiSW5jb21wYXRpYmxlIGFkZHJlc3MgYW5kIHZhbHVlIGluIGZ1bmN0aW9uIEJsYWNrYm9hcmQuc2V0XCIpXG4gICAgICAgICAgYmxhY2tib2FyZClcblxuICBsZXQgaXNfc2VsZWN0ZWRfZXZlbnQgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2lkIGJsYWNrYm9hcmQgPVxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSApXG5cbiAgbGV0IHJlYyBnZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmQgPVxuICAgIG1hdGNoIGNhc2VfYWRkcmVzcyB3aXRoXG4gICAgfCBLZWVwX2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgICggZXJyb3IsXG4gICAgICAgIGxvZ19pbmZvLFxuICAgICAgICBCb29sZWFuXG4gICAgICAgICAgKFBCLkEuZ2V0IGJsYWNrYm9hcmQuc2VsZWN0ZWRfZXZlbnRzIChQQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKSkgKVxuICAgIHwgTl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgKGludCwgbGV2ZWwpIC0+XG4gICAgICBsZXQgbiA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgICAgUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9vcHRpb24gbGV2ZWxcbiAgICAgICAgICAgIGJsYWNrYm9hcmQud2VpZ3RoX29mX3ByZWRpY2F0ZV9pZF9ieV9sZXZlbFxuICAgICAgICB3aXRoXG4gICAgICAgIHwgU29tZSBhIC0+IFBCLkEuZ2V0IGEgaW50XG4gICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDb3VudGVyIG5cbiAgICB8IE5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uIGludCAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBDb3VudGVyIChQQi5BLmdldCBibGFja2JvYXJkLndlaWd0aF9vZl9wcmVkaWNhdGVfaWQgaW50KVxuICAgIHwgRXhpc3QgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEJvb2xlYW4gY2FzZS5keW5hbWljLnNlbGVjdGVkXG4gICAgfCBQb2ludGVyX3RvX25leHQgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFBvaW50ZXIgY2FzZS5keW5hbWljLnBvaW50ZXJfbmV4dFxuICAgIHwgVmFsdWVfYWZ0ZXIgY2FzZV9hZGRyZXNzIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlID1cbiAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0YXRlIGNhc2UuZHluYW1pYy5zdGF0ZV9hZnRlclxuICAgIHwgVmFsdWVfYmVmb3JlIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IHBvaW50ZXIgPSBjYXNlLmR5bmFtaWMucG9pbnRlcl9wcmV2aW91cyBpblxuICAgICAgaWYgaXNfbnVsbF9wb2ludGVyIHBvaW50ZXIgdGhlblxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJWYWx1ZSBiZWZvcmUgYW4gdW5leGlzdGluZyBlbGVtZW50IHJlcXVlc3RlZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJWYWx1ZSBiZWZvcmUgYW4gdW5leGlzdGluZyBlbGVtZW50IHJlcXVlc3RlZFwiKVxuICAgICAgICAgIChTdGF0ZSBQQi51bmRlZmluZWQpXG4gICAgICBlbHNlXG4gICAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIChWYWx1ZV9hZnRlciB7IGNhc2VfYWRkcmVzcyB3aXRoIHJvd19zaG9ydF9ldmVudF9pZCA9IHBvaW50ZXIgfSlcbiAgICAgICAgICBibGFja2JvYXJkXG4gICAgfCBQb2ludGVyX3RvX3ByZXZpb3VzIGNhc2VfYWRkcmVzcyAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBQb2ludGVyIGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIENvdW50ZXIgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzXG4gICAgfCBOX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGx2bCAtPlxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIENvdW50ZXJcbiAgICAgICAgICAoUHJpb3JpdHkuTGV2ZWxNYXAuZmluZF9kZWZhdWx0IDAgbHZsXG4gICAgICAgICAgICAgYmxhY2tib2FyZC5uX3VucmVzb2x2ZWRfZXZlbnRzX2J5X2xldmVsKSApXG5cbiAgbGV0IGV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBwcmVmaXggaW50IGludDJcbiAgICAgIGJsYWNrYm9hcmQgPVxuICAgIGxldCBmaWxlX25hbWUgPVxuICAgICAgcHJlZml4IF4gXCJfXCIgXiBzdHJpbmdfb2ZfaW50IGludCBeIFwiX1wiIF4gc3RyaW5nX29mX2ludCBpbnQyIF4gXCIuc3h3XCJcbiAgICBpblxuICAgIGxldCBkZXNjX2NoYW4gPSBLYXBwYV9maWxlcy5vcGVuX291dCBmaWxlX25hbWUgaW5cbiAgICBsZXQgZGVzYyA9IExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9jaGFubmVsIH5tb2RlOkxvZ2dlcnMuWExTIGRlc2NfY2hhbiBpblxuICAgIGxldCBwYXJhbWV0ZXIgPSBQQi5DSS5Qby5LLkguc2V0X2xvZ2dlciBwYXJhbWV0ZXIgZGVzYyBpblxuICAgIGxldCBuY29sdW1uc19sZWZ0ID0gMyBpblxuICAgIGxldCBucm93c19oZWFkID0gMiBpblxuICAgIGxldCByb3dfb2ZfcHJlY29uZGl0aW9uIGVpZCA9IG5yb3dzX2hlYWQgKyAoMyAqIGVpZCkgaW5cbiAgICBsZXQgcm93X29mX3Bvc3Rjb25kaXRpb24gZWlkID0gMSArIHJvd19vZl9wcmVjb25kaXRpb24gZWlkIGluXG4gICAgbGV0IGNvbHVtbl9vZl9waWQgcGlkID0gcGlkICsgbmNvbHVtbnNfbGVmdCBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiUkVNICAqKioqKiAgQkFTSUMgICoqKioqXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCBjb2xvcnMgPSBQQi5BLm1ha2UgYmxhY2tib2FyZC5uX2VpZCBOb25lIGluXG4gICAgbGV0IGJhY2tjb2xvciBsb2cgY29sb3IgPVxuICAgICAgbWF0Y2ggY29sb3Igd2l0aFxuICAgICAgfCBTb21lIGNvbG9yIC0+XG4gICAgICAgIGxldCByLCBnLCBiID0gQ29sb3IudHJpcGxlX29mX2NvbG9yIGNvbG9yIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLkNlbGxCYWNrQ29sb3IgPSBSR0IoJWksJWksJWkpXCIgciBnIGIgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgICAoKVxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgaW5cbiAgICBsZXQgdGV4dGNvbG9yIGxvZyBjb2xvciA9XG4gICAgICBtYXRjaCBjb2xvciB3aXRoXG4gICAgICB8IFNvbWUgY29sb3IgLT5cbiAgICAgICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgY29sb3IgaW5cbiAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMuQ2hhckNvbG9yID0gUkdCKCVpLCVpLCVpKVwiIHIgZyBiIGluXG4gICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgICAgIHwgTm9uZSAtPiAoKVxuICAgIGluXG4gICAgbGV0IGdldGNlbGwgbG9nIHJvdyBjb2wgPVxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkMgPSBTLmdldENlbGxCeVBvc2l0aW9uKCVpLCVpKVwiIGNvbCByb3cgaW5cbiAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgICBpblxuICAgIGxldCBvdmVybGluZV9jYXNlIGxvZyByb3cgX2NvbCBfY29sb3IgPVxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlI9Uy5Sb3dzKCVpKVwiIHJvdyBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZyBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlIuVG9wQm9yZGVyID0gd2l0aEJvcmRcIiBpblxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgIGluXG4gICAgbGV0IHByaW50X2Nhc2UgbG9nIHJvdyBjb2wgY29sb3JfZm9udCBjb2xvcl9iYWNrIHN0cmluZyA9XG4gICAgICBpZiBzdHJpbmcgPD4gXCJcIiB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gZ2V0Y2VsbCBsb2cgcm93IGNvbCBpblxuICAgICAgICBsZXQgKCkgPSB0ZXh0Y29sb3IgbG9nIGNvbG9yX2ZvbnQgaW5cbiAgICAgICAgbGV0ICgpID0gYmFja2NvbG9yIGxvZyBjb2xvcl9iYWNrIGluXG4gICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJDLnNldEZvcm11bGEoXFxcIiVzXFxcIilcIiBzdHJpbmcgaW5cbiAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuICAgICAgKVxuICAgIGluXG4gICAgbGV0IHByaW50X2Nhc2VfZnVuIGxvZyByb3cgY29sIGNvbG9yX2ZvbnQgY29sb3JfYmFjayBmIGVycm9yID1cbiAgICAgIGxldCAoKSA9IGdldGNlbGwgbG9nIHJvdyBjb2wgaW5cbiAgICAgIGxldCAoKSA9IHRleHRjb2xvciBsb2cgY29sb3JfZm9udCBpblxuICAgICAgbGV0ICgpID0gYmFja2NvbG9yIGxvZyBjb2xvcl9iYWNrIGluXG4gICAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiQy5zZXRGb3JtdWxhKFxcXCJcIiBpblxuICAgICAgbGV0IGVycm9yID0gZiBlcnJvciBpblxuICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlxcXCIpXCIgaW5cbiAgICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2cgaW5cbiAgICAgIGVycm9yXG4gICAgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIlN1YiBNYWluXCIgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgZGVzYyBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0IHIsIGcsIGIgPSBDb2xvci50cmlwbGVfb2ZfY29sb3IgQ29sb3IuQmxhY2sgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJEaW0gd2l0aEJvcmQgQXMgTmV3IGNvbS5zdW4uc3Rhci50YWJsZS5Cb3JkZXJMaW5lXCJcbiAgICBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID1cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBkZXNjIFwiV2l0aCB3aXRoQm9yZCB3aXRoQm9yZC5Db2xvciA9IFJHQiglaSwlaSwlaSlcIiByIGcgYlxuICAgIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIndpdGhCb3JkLk91dGVyTGluZVdpZHRoID0gNjBcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGRlc2MgXCJFbmQgV2l0aFwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIlMgPSBUaGlzQ29tcG9uZW50LlNoZWV0cygwKVwiIGluXG4gICAgbGV0ICgpID0gTG9nZ2Vycy5wcmludF9uZXdsaW5lIGRlc2MgaW5cbiAgICBsZXQgXyA9XG4gICAgICBtYXRjaCBmb3JjZWRfZXZlbnRzIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgfCBbIChsaXN0LCBfKSBdIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gZWlkIC0+IFBCLkEuc2V0IGNvbG9ycyAoUEIuaW50X29mX3N0ZXBfaWQgZWlkKSAoU29tZSBDb2xvci5SZWQpKVxuICAgICAgICAgIGxpc3RcbiAgICAgIHwgXyAtPiAoKVxuICAgIGluXG4gICAgbGV0IF8gPVxuICAgICAgUEIuQS5pdGVyaVxuICAgICAgICAoZnVuIHBpZCBwX2luZm8gLT5cbiAgICAgICAgICBwcmludF9jYXNlX2Z1biBkZXNjIDAgKGNvbHVtbl9vZl9waWQgcGlkKSBOb25lIE5vbmVcbiAgICAgICAgICAgIChmdW4gX2Vycm9yIC0+IFBCLnByaW50X3ByZWRpY2F0ZV9pbmZvIGRlc2MgcF9pbmZvKVxuICAgICAgICAgICAgZXJyb3IpXG4gICAgICAgIGJsYWNrYm9hcmQucHJlX2NvbHVtbl9tYXBfaW52XG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eCBlaWQgZXJyb3IgbG9nX2luZm8gc3RhY2sgPVxuICAgICAgaWYgZWlkID49IGJsYWNrYm9hcmQubl9laWQgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICBjYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIChQQi5zdGVwX2lkX29mX2ludCBlaWQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCByb3dfcHJlY29uZGl0aW9uID0gcm93X29mX3ByZWNvbmRpdGlvbiBlaWQgaW5cbiAgICAgICAgbGV0IHJvd19wb3N0Y29uZGl0aW9uID0gcm93X29mX3Bvc3Rjb25kaXRpb24gZWlkIGluXG4gICAgICAgIGxldCBjb2xvciwgbWF5YmVrZXB0ID1cbiAgICAgICAgICBtYXRjaCBQQi5BLmdldCBibGFja2JvYXJkLnNlbGVjdGVkX2V2ZW50cyBlaWQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBQQi5BLmdldCBjb2xvcnMgZWlkLCB0cnVlXG4gICAgICAgICAgfCBTb21lIHRydWUgLT4gU29tZSBDb2xvci5SZWQsIHRydWVcbiAgICAgICAgICB8IFNvbWUgZmFsc2UgLT4gU29tZSBDb2xvci5HcmV5LCBmYWxzZVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGF1eDIgZiBnIGwgZXJyb3IgbG9nX2luZm8gPVxuICAgICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgb3ZlcmxpbmVfY2FzZSBkZXNjIHJvd19wb3N0Y29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcHJlY29uZGl0aW9uXG4gICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgIE5vbmUgY29sb3IgKGYgdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyByb3dfcG9zdGNvbmRpdGlvblxuICAgICAgICAgICAgICAgIChjb2x1bW5fb2ZfcGlkIHQuY29sdW1uX3ByZWRpY2F0ZV9pZClcbiAgICAgICAgICAgICAgICBOb25lIGNvbG9yIChnIHQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIG1heWJla2VwdCB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB2YWx1ZV9iZWZvcmUgPVxuICAgICAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAodmFsdWVfYmVmb3JlIHQpXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgc3RyaW5nX29mX3ZhbHVlIGNhc2VfdmFsdWVcbiAgICAgICAgICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGVycm9yLCBsb2dfaW5mbywgXCJVbmRlZmluZWRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfY2FzZSBkZXNjIChyb3dfcHJlY29uZGl0aW9uIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgKGNvbHVtbl9vZl9waWQgdC5jb2x1bW5fcHJlZGljYXRlX2lkKVxuICAgICAgICAgICAgICAgICAgICAoU29tZSBDb2xvci5MaWdodGJsdWUpIE5vbmUgdmFsdWVfYmVmb3JlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB2YWx1ZV9hZnRlciA9XG4gICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yICh2YWx1ZV9hZnRlciB0KVxuICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHN0cmluZ19vZl92YWx1ZSBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBlcnJvciwgbG9nX2luZm8sIFwiVW5kZWZpbmVkXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2Nhc2UgZGVzYyAocm93X3Bvc3Rjb25kaXRpb24gKyAxKVxuICAgICAgICAgICAgICAgICAgICAoY29sdW1uX29mX3BpZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQpXG4gICAgICAgICAgICAgICAgICAgIChTb21lIENvbG9yLkxpZ2h0Ymx1ZSkgTm9uZSB2YWx1ZV9hZnRlclxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eDIgZiBnIHEgZXJyb3IgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByaW50X3Rlc3QgdCA9XG4gICAgICAgICAgbGV0IGNvbHVtbiA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBsZXQgY2FzZSA9XG4gICAgICAgICAgICBQQi5BLmdldCBjb2x1bW4gKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHQucm93X3Nob3J0X2V2ZW50X2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUEIuc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBjYXNlLnN0YXRpYy50ZXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmludF9hY3Rpb24gdCA9XG4gICAgICAgICAgbGV0IGNvbHVtbiA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuYmxhY2tib2FyZCB0LmNvbHVtbl9wcmVkaWNhdGVfaWQgaW5cbiAgICAgICAgICBsZXQgY2FzZSA9XG4gICAgICAgICAgICBQQi5BLmdldCBjb2x1bW4gKFBCLmludF9vZl9zdGVwX3Nob3J0X2lkIHQucm93X3Nob3J0X2V2ZW50X2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgUEIuc3RyaW5nX29mX3ByZWRpY2F0ZV92YWx1ZSBjYXNlLnN0YXRpYy5hY3Rpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHN0cmluZ19laWQgZXJyb3IgPVxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9hc19sb2dnZXIgZGVzYyAoZnVuIGYgLT5cbiAgICAgICAgICAgICAgICAgIFRyYWNlLnByaW50X3N0ZXAgfmNvbXBhY3Q6dHJ1ZSB+ZW52OmhhbmRsZXIuUEIuQ0kuUG8uSy5ILmVudiBmXG4gICAgICAgICAgICAgICAgICAgIChQQi5BLmdldCBibGFja2JvYXJkLmV2ZW50IGVpZCkpXG4gICAgICAgICAgICB3aXRoIE5vdF9mb3VuZCAtPiBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkV2ZW50OiVpXCIgZWlkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93X3ByZWNvbmRpdGlvbiAxIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvclxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgIHByaW50X2Nhc2VfZnVuIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb24gMSBOb25lIGNvbG9yIHN0cmluZ19laWQgZXJyb3JcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZSBkZXNjIHJvd19wcmVjb25kaXRpb24gMiBOb25lIGNvbG9yIFwiUFJFQ09ORElUSU9OXCIgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwcmludF9jYXNlIGRlc2Mgcm93X3Bvc3Rjb25kaXRpb24gMiBOb25lIGNvbG9yIFwiUE9TVENPTkRJVElPTlwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGF1eDIgcHJpbnRfdGVzdCBwcmludF9hY3Rpb24gbGlzdCBlcnJvciBsb2dfaW5mb1xuICAgICAgICBpblxuICAgICAgICBsZXQgYm9vbCA9XG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgY2FuZCA9IFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnQgZWlkIGluXG4gICAgICAgICAgICBUcmFjZS5zdGVwX2lzX3J1bGUgY2FuZCB8fCBUcmFjZS5zdGVwX2lzX3BlcnQgY2FuZFxuICAgICAgICAgICAgfHwgVHJhY2Uuc3RlcF9pc19vYnMgY2FuZCB8fCBUcmFjZS5zdGVwX2lzX2luaXQgY2FuZFxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIC0+IGZhbHNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgc3RhY2sgPVxuICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gZXJyb3Igcm93IC0+XG4gICAgICAgICAgICAgICAgICBwcmludF9jYXNlX2Z1biBkZXNjIHJvdyAwIE5vbmUgY29sb3Igc3RyaW5nX2VpZCBlcnJvcilcbiAgICAgICAgICAgICAgICBlcnJvciAoTGlzdC5yZXYgc3RhY2spXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIFtdXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgcm93X3ByZWNvbmRpdGlvbiA6OiByb3dfcG9zdGNvbmRpdGlvbiA6OiBzdGFja1xuICAgICAgICBpblxuICAgICAgICBhdXggKGVpZCArIDEpIGVycm9yIGxvZ19pbmZvIHN0YWNrXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID0gYXV4IDAgZXJyb3IgbG9nX2luZm8gW10gaW5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgZGVzYyBcIkVuZCBTdWJcIiBpblxuICAgIGxldCAoKSA9IExvZ2dlcnMucHJpbnRfbmV3bGluZSBkZXNjIGluXG4gICAgbGV0ICgpID0gY2xvc2Vfb3V0IGRlc2NfY2hhbiBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgKClcblxuICBsZXQgcmVjb3JkX21vZGlmIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWUgYmxhY2tib2FyZFxuICAgICAgPVxuICAgICggZXJyb3IsXG4gICAgICB7XG4gICAgICAgIGJsYWNrYm9hcmQgd2l0aFxuICAgICAgICBjdXJyZW50X3N0YWNrID0gKGNhc2VfYWRkcmVzcywgY2FzZV92YWx1ZSkgOjogYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrO1xuICAgICAgfSApXG5cbiAgbGV0IHJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZSBibGFja2JvYXJkXG4gICAgICA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgY2FzZV92YWx1ZSA9IG9sZCB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQC5JR05PUkVEKioqQC5cIlxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIElnbm9yZSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICAgIHN0cmljdGx5X21vcmVfcmVmaW5lZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBvbGQgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJALioqKkAuUkVGSU5FX1ZBTFVFQC5WYWx1ZSBiZWZvcmU6IFwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBwcmludF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIG9sZCBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgY2FzZV92YWx1ZSBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQC5JR05PUkVEKioqQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIElnbm9yZSlcbiAgICAgICkgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgICAgIHN0cmljdGx5X21vcmVfcmVmaW5lZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX3ZhbHVlIG9sZFxuICAgICAgICBpblxuICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgICAgICByZWNvcmRfbW9kaWYgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgY2FzZV9hZGRyZXNzIG9sZCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuKioqQC5SRUZJTkVfVkFMVUVALlZhbHVlIGJlZm9yZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICBjYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gcHJpbnRfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgb2xkIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuTmV3IHZhbHVlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBjYXNlX3ZhbHVlIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkAuU1VDQ0VTUyoqKkAuXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBTdWNjZXNzKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC4qKipALlJFRklORV9WQUxVRUAuVmFsdWUgYmVmb3JlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGNhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBwcmludF9jYXNlX3ZhbHVlIHBhcmFtZXRlciBvbGQgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5OZXcgdmFsdWU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHByaW50X2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGNhc2VfdmFsdWUgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChQQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQC5GQUlMKioqQC5cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIEZhaWwpXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG5cbiAgbGV0IG92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgY2FzZV92YWx1ZVxuICAgICAgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgY2FzZV92YWx1ZSA9IG9sZCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGNhc2VfdmFsdWUgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgYmxhY2tib2FyZCA9XG4gICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICApXG5cbiAgbGV0IGRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb2xkID1cbiAgICAgIGdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbWF0Y2ggb2xkIHdpdGhcbiAgICB8IENvdW50ZXIgayAtPlxuICAgICAgaWYgayA9IDAgdGhlblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBzZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAoQ291bnRlciAoayAtIDEpKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIHJlY29yZF9tb2RpZiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBjYXNlX2FkZHJlc3Mgb2xkIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICApXG4gICAgfCBQb2ludGVyIF8gfCBCb29sZWFuIF8gfCBTdGF0ZSBfIC0+XG4gICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiV3JvbmcgdHlwZSBvZiBjYXNlIHZhbHVlXCJcbiAgICAgICAgKEZhaWx1cmUgXCJXcm9uZyB0eXBlIG9mIGNhc2UgdmFsdWVcIikgYmxhY2tib2FyZFxuXG4gIGxldCBicmFuY2ggcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIqKioqKioqQC4gKiBCUkFOQ0ggKkAuKioqKioqKkAuXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIHByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2JyYW5jaCBsb2dfaW5mbyBpblxuICAgICggZXJyb3IsXG4gICAgICBsb2dfaW5mbyxcbiAgICAgIHtcbiAgICAgICAgYmxhY2tib2FyZCB3aXRoXG4gICAgICAgIHN0YWNrID0gYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIDo6IGJsYWNrYm9hcmQuc3RhY2s7XG4gICAgICAgIGN1cnJlbnRfc3RhY2sgPSBbXTtcbiAgICAgIH0gKVxuXG4gIGxldCByZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAoUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBcIioqKioqKipALiogQ3V0ICpALioqKioqKipcIlxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgcHJpbnRfYmxhY2tib2FyZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IHN0YWNrID0gYmxhY2tib2FyZC5jdXJyZW50X3N0YWNrIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpIChjYXNlX2FkZHJlc3MsIGNhc2VfdmFsdWUpIC0+XG4gICAgICAgICAgc2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBjYXNlX3ZhbHVlXG4gICAgICAgICAgICBibGFja2JvYXJkKVxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICBzdGFja1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIqKioqKioqQC4qIEFmdGVyX0N1dCAqQC4qKioqKioqXCJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgIHByaW50X2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX2N1dCBsb2dfaW5mbyBpblxuICAgIG1hdGNoIGJsYWNrYm9hcmQuc3RhY2sgd2l0aFxuICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCB7IGJsYWNrYm9hcmQgd2l0aCBjdXJyZW50X3N0YWNrID0gW10gfVxuICAgIHwgdCA6OiBxIC0+XG4gICAgICBlcnJvciwgbG9nX2luZm8sIHsgYmxhY2tib2FyZCB3aXRoIGN1cnJlbnRfc3RhY2sgPSB0OyBzdGFjayA9IHEgfVxuXG4gIGxldCByZXNldF9pbml0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgPVxuICAgIGxldCByZWMgYXV4IChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQpID1cbiAgICAgIG1hdGNoIGJsYWNrYm9hcmQuY3VycmVudF9zdGFjayB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgfCBfIC0+XG4gICAgICAgIGF1eCAocmVzZXRfbGFzdF9icmFuY2hpbmcgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPSBhdXggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnJlc2V0X2xvZyBsb2dfaW5mbyBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuXG4gIHR5cGUgcmVzdWx0ID0gKFRyYWNlLnN0ZXAgKiBQQi5DSS5Qby5LLnNpZGVfZWZmZWN0KSBsaXN0XG4gICgqKiBvdXRwdXQgcmVzdWx0KilcblxuICAoKiogaXRlcmF0aW9uKilcbiAgbGV0IGlzX21heGltYWxfc29sdXRpb24gX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQubl91bnJlc29sdmVkX2V2ZW50cyA9IDBcblxuICAoKiogZXhwb3J0aW5nIHJlc3VsdCopXG5cbiAgbGV0IHRyYW5zbGF0ZV9ibGFja2JvYXJkIF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGFycmF5ID0gYmxhY2tib2FyZC5zZWxlY3RlZF9ldmVudHMgaW5cbiAgICBsZXQgc3RlcF9hcnJheSA9IGJsYWNrYm9hcmQuZXZlbnQgaW5cbiAgICBsZXQgc2lkZV9hcnJheSA9IGJsYWNrYm9hcmQuc2lkZV9lZmZlY3Rfb2ZfZXZlbnQgaW5cbiAgICBsZXQgc2l6ZSA9IFBCLkEubGVuZ3RoIGFycmF5IGluXG4gICAgbGV0IHJlYyBhdXggayBsaXN0ID1cbiAgICAgIGlmIGsgPSBzaXplIHRoZW5cbiAgICAgICAgTGlzdC5yZXYgbGlzdFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBib29sID0gUEIuQS5nZXQgYXJyYXkgayBpblxuICAgICAgICBtYXRjaCBib29sIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IGF1eCAoayArIDEpIGxpc3RcbiAgICAgICAgfCBTb21lIGZhbHNlIC0+IGF1eCAoayArIDEpIGxpc3RcbiAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICBsZXQgc3RlcCA9IFBCLkEuZ2V0IHN0ZXBfYXJyYXkgayBpblxuICAgICAgICAgIGxldCBzaWRlID0gUEIuQS5nZXQgc2lkZV9hcnJheSBrIGluXG4gICAgICAgICAgYXV4IChrICsgMSkgKChzdGVwLCBzaWRlKSA6OiBsaXN0KVxuICAgICAgKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSBhdXggMCBbXSBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgbGlzdFxuXG4gIGxldCBwcmludF9zdGFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgc3RhY2sgPSBibGFja2JvYXJkLmN1cnJlbnRfc3RhY2sgaW5cbiAgICBsZXQgbG9nID0gUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIkN1cnJlbnRfc3RhY2tfbGV2ZWwgJWkgXCIgKExpc3QubGVuZ3RoIHN0YWNrKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIGkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IgPVxuICAgICAgICAgICAgcHJpbnRfYXNzaWdubWVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJALlwiIGluXG4gICAgICAgICAgZXJyb3IpXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8pIChMaXN0LnJldiBzdGFjaylcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvKSB4IC0+XG4gICAgICAgICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIk90aGVyIGxldmVsICVpIFwiIChMaXN0Lmxlbmd0aCB4KSBpblxuICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIChlcnJvciwgbG9nX2luZm8pIC0+XG4gICAgICAgICAgICAgIHByaW50X2Fzc2lnbm1lbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8pIChMaXN0LnJldiB4KSlcbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbylcbiAgICAgICAgKExpc3QucmV2IGJsYWNrYm9hcmQuc3RhY2spXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sICgpXG5cbiAgbGV0IGlzX2ZpY3RpdGlvdXNfb2JzIGJsYWNrYm9hcmQgZWlkID1cbiAgICBTb21lIGVpZCA9IGJsYWNrYm9hcmQuZmljdGl0aW91c19vYnNlcnZhYmxlXG5cbiAgbGV0IHVzZWxlc3NfcHJlZGljYXRlX2lkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IG5fZXZlbnRzID0gYmxhY2tib2FyZC5uX2VpZCBpblxuICAgIGlmIFBhcmFtZXRlci5kb19sb2NhbF9jdXQgdGhlbiAoXG4gICAgICBsZXQgZXZlbnRfYXJyYXkgPSBQQi5BLm1ha2Ugbl9ldmVudHMgZmFsc2UgaW5cbiAgICAgIGxldCBrZXB0X2V2ZW50cyA9IFtdIGluXG4gICAgICBsZXQga2VwdF9ldmVudHMgPVxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4ga2VwdF9ldmVudHMgaSAtPlxuICAgICAgICAgICAgbGV0IF8gPSBQQi5BLnNldCBldmVudF9hcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgaSkgdHJ1ZSBpblxuICAgICAgICAgICAgaSA6OiBrZXB0X2V2ZW50cylcbiAgICAgICAgICBrZXB0X2V2ZW50cyBsaXN0XG4gICAgICBpblxuICAgICAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdCBrZXB0X2V2ZW50cyA9XG4gICAgICAgIG1hdGNoIGV2ZW50X2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywga2VwdF9ldmVudHNcbiAgICAgICAgfCBlaWQgOjogcSAtPlxuICAgICAgICAgIGlmIGlzX2ZpY3RpdGlvdXNfb2JzIGJsYWNrYm9hcmQgZWlkIHRoZW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBxIGtlcHRfZXZlbnRzXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgIFBCLkEuZ2V0IGJsYWNrYm9hcmQuZXZlbnRfY2FzZV9saXN0IChQQi5pbnRfb2Zfc3RlcF9pZCBlaWQpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMgPVxuICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMpIGV2ZW50X2Nhc2VfYWRkcmVzcyAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZSA9XG4gICAgICAgICAgICAgICAgICAgIGdldF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBpZiBQQi5pc191bmRlZmluZWQgY2FzZS5zdGF0aWMudGVzdCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgcG9pbnRlciA9IGNhc2UuZHluYW1pYy5wb2ludGVyX3ByZXZpb3VzIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlaWQgPVxuICAgICAgICAgICAgICAgICAgICAgIGxldCByZWMgc2Nhbl9kb3duIHBvaW50ZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93X3Nob3J0X2V2ZW50X2lkID0gcG9pbnRlcjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBfZXJyb3IsIF9sb2dfaW5mbywgcHJldl9jYXNlID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2X2V2ZW50X2Nhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHByZXZfZWlkID0gcHJldl9jYXNlLnN0YXRpYy5ldmVudF9pZCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXNfbnVsbF9wb2ludGVyX3N0ZXBfaWQgcHJldl9laWQgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIFBCLmlzX3Vua25vd24gcHJldl9jYXNlLnN0YXRpYy5hY3Rpb24gdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwb2ludGVyID0gcHJldl9jYXNlLmR5bmFtaWMucG9pbnRlcl9wcmV2aW91cyBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBzY2FuX2Rvd24gcG9pbnRlclxuICAgICAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFNvbWUgcHJldl9laWRcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHNjYW5fZG93biBwb2ludGVyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGVpZCB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHEsIGtlcHRfZXZlbnRzXG4gICAgICAgICAgICAgICAgICAgIHwgU29tZSBwcmV2X2VpZCAtPlxuICAgICAgICAgICAgICAgICAgICAgIGxldCBib29sID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSBQQi5BLmdldCBldmVudF9hcnJheSAoUEIuaW50X29mX3N0ZXBfaWQgcHJldl9laWQpXG4gICAgICAgICAgICAgICAgICAgICAgICB3aXRoIF8gLT4gZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBxLCBrZXB0X2V2ZW50cyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUEIuQS5zZXQgZXZlbnRfYXJyYXlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChQQi5pbnRfb2Zfc3RlcF9pZCBwcmV2X2VpZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldl9laWQgOjogcSwgcHJldl9laWQgOjoga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHNcbiAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgcSwga2VwdF9ldmVudHMpXG4gICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBsb2dfaW5mbyBlcnJvciBxIGtlcHRfZXZlbnRzXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHJlcCA9IGF1eCBsb2dfaW5mbyBlcnJvciBsaXN0IGtlcHRfZXZlbnRzIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIExpc3Quc29ydCBjb21wYXJlIHJlcCwgbl9ldmVudHMgLSBMaXN0Lmxlbmd0aCByZXBcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGV2ZW50c190b19rZWVwID1cbiAgICAgICAgbGV0IHJlYyBhdXggayBsaXN0ID1cbiAgICAgICAgICBpZiBrIDwgMCB0aGVuXG4gICAgICAgICAgICBsaXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4IChrIC0gMSkgKFBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogbGlzdClcbiAgICAgICAgaW5cbiAgICAgICAgYXV4IChuX2V2ZW50cyAtIDEpIFtdXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudHNfdG9fa2VlcCwgMFxuICAgIClcblxuICBsZXQgY3V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY3V0X2NhdXNhbF9mbG93LCBuX2V2ZW50c19yZW1vdmVkID1cbiAgICAgIHVzZWxlc3NfcHJlZGljYXRlX2lkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGV0ZWN0aW9uX3RpbWUgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19rX2N1dF9ldmVudHMgbl9ldmVudHNfcmVtb3ZlZCBsb2dfaW5mb1xuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgY3V0X2NhdXNhbF9mbG93KVxuXG4gIGxldCBpbXBvcnQgP2hldXJpc3RpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVibGFja2JvYXJkID1cbiAgICAgIFBCLmluaXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBfc3RlcF9pZCwgc3RyaW5nLCB0b194bHMpID1cbiAgICAgIG1hdGNoIHBhcmFtZXRlci5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBsb2dfaW5mbyBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJDb21wcmVzc2lvbiBtb2RlIGhhcyBub3QgYmVlbiBzZXQgdXBcIlxuICAgICAgICAgIChGYWlsdXJlIFwiQ29tcHJlc3Npb24gbW9kZSBoYXMgbm90IGJlZW4gc2V0IHVwLlwiKVxuICAgICAgICAgIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQsIFwiTm9uZVwiLCBmYWxzZSlcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSA9XG4gICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKHByZWJsYWNrYm9hcmQsIGludCkpIHJlZmluZWRfZXZlbnQgLT5cbiAgICAgICAgICAgICAgUEIuYWRkX3N0ZXBfdXBfdG9faXNvIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgcmVmaW5lZF9ldmVudCBwcmVibGFja2JvYXJkIGludClcbiAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBQQi56ZXJvX3N0ZXBfaWQpKVxuICAgICAgICAgICAgbGlzdFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICggcHJlYmxhY2tib2FyZCxcbiAgICAgICAgICAgIGludCxcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHNzdHJvbmdGaWxlTmFtZSxcbiAgICAgICAgICAgIFBhcmFtZXRlci5kdW1wX2dyaWRfYmVmb3JlX3N0cm9uZ19jb21wcmVzc2lvbiApIClcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChwcmVibGFja2JvYXJkLCBpbnQpID1cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgaW50KSkgcmVmaW5lZF9ldmVudCAtPlxuICAgICAgICAgICAgICBQQi5hZGRfc3RlcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciByZWZpbmVkX2V2ZW50XG4gICAgICAgICAgICAgICAgcHJlYmxhY2tib2FyZCBpbnQpXG4gICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCAocHJlYmxhY2tib2FyZCwgUEIuemVyb19zdGVwX2lkKSlcbiAgICAgICAgICAgIGxpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAoIHByZWJsYWNrYm9hcmQsXG4gICAgICAgICAgICBpbnQsXG4gICAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lLFxuICAgICAgICAgICAgUGFyYW1ldGVyLmR1bXBfZ3JpZF9iZWZvcmVfd2Vha19jb21wcmVzc2lvbiApIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWJsYWNrYm9hcmQgPVxuICAgICAgUEIuZmluYWxpemUgaGV1cmlzdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgaW1wb3J0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWJsYWNrYm9hcmRcbiAgICBpblxuICAgIGxldCBfID0gUHJpb3JpdHkubl9zdG9yeSA6PSAhUHJpb3JpdHkubl9zdG9yeSArIDEgaW5cbiAgICBsZXQgXyA9IFByaW9yaXR5Lm5fYnJhbmNoIDo9IDEgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICBpZiB0b194bHMgdGhlblxuICAgICAgICBleHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RyaW5nXG4gICAgICAgICAgIVByaW9yaXR5Lm5fc3RvcnkgMCBibGFja2JvYXJkXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgKClcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuZW5kXG4iLCIoKipcbiAgKiBwcm9wYWdhdGlvbl9oZXVyaXN0aWMubWxcbiAgKlxuICAqIENyZWF0aW9uOiAgICAgICAgICAgICAgICAgICAgICA8MjAxNi0wOS0wNSBmZXJldD5cbiAgKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMDMgMjA6MDM6MTEgZmVyZXQ+XG4gICpcbiAgKiBDYXVzYWwgZmxvdyBjb21wcmVzc2lvbjogYSBtb2R1bGUgZm9yIEthU2ltXG4gICogSsOpcsO0bWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXTDqSBQYXJpcy1EaWRlcm90LCBDTlJTXG4gICpcbiAgKiBLYVNpbVxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMgRGVkZXJvdCwgQ05SU1xuICAqXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgZGVidWdfbW9kZSA9IGZhbHNlXG5sZXQgbG9va191cF9mb3JfYmV0dGVyX2N1dCA9IFBhcmFtZXRlci5sb29rX3VwX2Zvcl9iZXR0ZXJfY3V0XG5sZXQgbG9va19kb3duX2Zvcl9iZXR0ZXJfY3V0ID0gUGFyYW1ldGVyLmxvb2tfZG93bl9mb3JfYmV0dGVyX2N1dFxuXG5tb2R1bGUgdHlwZSBCbGFja2JvYXJkX3dpdGhfaGV1cmlzdGljID0gc2lnXG4gIG1vZHVsZSBCIDogQmxhY2tib2FyZC5CbGFja2JvYXJkXG5cbiAgdHlwZSB1cGRhdGVfb3JkZXJcbiAgdHlwZSBwcm9wYWdhdGlvbl9jaGVja1xuXG4gIHZhbCBkdW1teV91cGRhdGVfb3JkZXIgOiB1cGRhdGVfb3JkZXJcblxuICB2YWwgZm9yY2VkX2V2ZW50cyA6XG4gICAgKCBCLmJsYWNrYm9hcmQsXG4gICAgICAodXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogQi5QQi5zdGVwX2lkIGxpc3RcbiAgICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBvcHRpb24pXG4gICAgICBsaXN0IClcbiAgICBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBmb3JiaWRkZW5fZXZlbnRzIDpcbiAgICAoQi5QQi5zdGVwX2lkIGxpc3QsIHVwZGF0ZV9vcmRlciBsaXN0KSBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBuZXh0X2Nob2ljZSA6IChCLmJsYWNrYm9hcmQsIHVwZGF0ZV9vcmRlciBsaXN0KSBCLlBCLkNJLlBvLksuSC51bmFyeVxuXG4gIHZhbCBhcHBseV9pbnN0cnVjdGlvbiA6XG4gICAgKCBCLmJsYWNrYm9hcmQsXG4gICAgICB1cGRhdGVfb3JkZXIsXG4gICAgICB1cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3QsXG4gICAgICBCLmJsYWNrYm9hcmRcbiAgICAgICogdXBkYXRlX29yZGVyIGxpc3RcbiAgICAgICogcHJvcGFnYXRpb25fY2hlY2sgbGlzdFxuICAgICAgKiBCLmFzc2lnbl9yZXN1bHQgKVxuICAgIEIuUEIuQ0kuUG8uSy5ILnF1YXRlcm5hcnlcblxuICB2YWwgcHJvcGFnYXRlIDpcbiAgICAoIEIuYmxhY2tib2FyZCxcbiAgICAgIHByb3BhZ2F0aW9uX2NoZWNrLFxuICAgICAgdXBkYXRlX29yZGVyIGxpc3QsXG4gICAgICBwcm9wYWdhdGlvbl9jaGVjayBsaXN0LFxuICAgICAgQi5ibGFja2JvYXJkXG4gICAgICAqIHVwZGF0ZV9vcmRlciBsaXN0XG4gICAgICAqIHByb3BhZ2F0aW9uX2NoZWNrIGxpc3RcbiAgICAgICogQi5hc3NpZ25fcmVzdWx0IClcbiAgICBCLlBCLkNJLlBvLksuSC5xdWF0ZXJuYXJ5XG5lbmRcblxubW9kdWxlIFByb3BhZ2F0aW9uX2hldXJpc3RpYyA6IEJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMgPSBzdHJ1Y3RcbiAgbW9kdWxlIEIgOiBCbGFja2JvYXJkLkJsYWNrYm9hcmQgPSBCbGFja2JvYXJkLkJsYWNrYm9hcmRcblxuICBsZXQgd2FybiBwYXJhbWV0ZXIgZXJyb3IgcG9zID8obWVzc2FnZSA9IFwiXCIpIGV4biBkZWZhdWx0ID1cbiAgICBFeGNlcHRpb24ud2FyblxuICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgcG9zIH5tZXNzYWdlIGV4biBkZWZhdWx0XG5cbiAgdHlwZSB1cGRhdGVfb3JkZXIgPVxuICAgIHwgS2VlcF9ldmVudCBvZiBCLlBCLnN0ZXBfaWRcbiAgICB8IERpc2NhcmRfZXZlbnQgb2YgQi5QQi5zdGVwX2lkXG4gICAgfCBDdXRfZXZlbnQgb2YgQi5QQi5zdGVwX2lkXG4gICAgfCBSZWZpbmVfdmFsdWVfYWZ0ZXIgb2YgQi5ldmVudF9jYXNlX2FkZHJlc3MgKiBCLlBCLnByZWRpY2F0ZV92YWx1ZVxuICAgIHwgUmVmaW5lX3ZhbHVlX2JlZm9yZSBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzcyAqIEIuUEIucHJlZGljYXRlX3ZhbHVlXG4gICAgfCBTa2lwXG5cbiAgbGV0IGR1bW15X3VwZGF0ZV9vcmRlciA9IFNraXBcblxuICB0eXBlIHByb3BhZ2F0aW9uX2NoZWNrID1cbiAgICB8IFByb3BhZ2F0ZV91cCBvZiBCLmV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgIHwgUHJvcGFnYXRlX2Rvd24gb2YgQi5ldmVudF9jYXNlX2FkZHJlc3NcblxuICBsZXQgX3ByaW50X291dHB1dCBsb2cgeCA9XG4gICAgaWYgQi5pc19mYWlsZWQgeCB0aGVuXG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiRkFJTEVEXCJcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCB4IHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZiBsb2cgXCJJR05PUkVEXCJcbiAgICBlbHNlXG4gICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiU1VDQ0VTU1wiXG5cbiAgbGV0IGZvcmNlZF9ldmVudHMgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkID1cbiAgICBsZXQgbGlzdCA9IEIuZm9yY2VkX2V2ZW50cyBibGFja2JvYXJkIGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgTGlzdC5yZXZfbWFwXG4gICAgICAgIChmdW4gKGwsIGluZm8pIC0+XG4gICAgICAgICAgTGlzdC5yZXZfbWFwIChmdW4geCAtPiBLZWVwX2V2ZW50IHgpIChMaXN0LnJldiBsKSwgbCwgaW5mbylcbiAgICAgICAgKExpc3QucmV2IGxpc3QpIClcblxuICBsZXQgZm9yYmlkZGVuX2V2ZW50cyBfcGFyYW10ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgZXJyb3IsIGxvZ19pbmZvLCBMaXN0LnJldl9tYXAgKGZ1biB4IC0+IEN1dF9ldmVudCB4KSAoTGlzdC5yZXYgbGlzdClcblxuICBsZXQgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBmaXJzdCBsYXN0IHN1Y2Mgc3RvcCBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsID1cbiAgICBsZXQga19pbml0ID0gZmlyc3QgYmxhY2tib2FyZCBwX2lkIGluXG4gICAgbGV0IGtfZW5kID0gbGFzdCBibGFja2JvYXJkIHBfaWQgaW5cbiAgICBtYXRjaCBrX2luaXQsIGtfZW5kIHdpdGhcbiAgICB8IE5vbmUsIF8gfCBfLCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgTm9uZVxuICAgIHwgU29tZSBpLCBTb21lIGogLT5cbiAgICAgIGxldCByZWMgYXV4IGkgbG9nX2luZm8gZXJyb3IgPVxuICAgICAgICBpZiBzdG9wIGkgaiB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBOb25lXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCBldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgICAgQi5idWlsZF9ldmVudF9jYXNlX2FkZHJlc3MgcF9pZCAoQi5idWlsZF9wb2ludGVyIGkpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBleGlzdCA9XG4gICAgICAgICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICBpblxuICAgICAgICAgIG1hdGNoIGV4aXN0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgZWlkLCBfdGVzdCwgX2FjdGlvbikgPVxuICAgICAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsX29mX2V2ZW50ID1cbiAgICAgICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGxldmVsX29mX2V2ZW50ID0gbGV2ZWwgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIFNvbWUgZWlkXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGF1eCAoc3VjYyBpKSBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIHwgU29tZSB0cnVlIHwgU29tZSBmYWxzZSAtPiBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCBpIGxvZ19pbmZvIGVycm9yXG5cbiAgbGV0IGdldF9sYXN0X3VucmVzb2x2ZWRfZXZlbnRfb25fcGlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICBibGFja2JvYXJkIHBfaWQgbGV2ZWwgPVxuICAgIGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgQi5nZXRfbGFzdF9saW5rZWRfZXZlbnRcbiAgICAgIEIuZ2V0X2ZpcnN0X2xpbmtlZF9ldmVudCBCLlBCLmRlY19zdGVwX3Nob3J0X2lkXG4gICAgICAoZnVuIGkgaiAtPiBpIDwgailcbiAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcF9pZCBsZXZlbFxuXG4gIGxldCBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50X29uX3BpZCBCLmdldF9maXJzdF9saW5rZWRfZXZlbnRcbiAgICAgIEIuZ2V0X2xhc3RfbGlua2VkX2V2ZW50IEIuUEIuaW5jX3N0ZXBfc2hvcnRfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPiBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwX2lkIGxldmVsXG5cbiAgbGV0IGdldF9nZW5fdW5yZXNvbHZlZF9ldmVudCBmaXJzdCBsYXN0IHN1Y2Mgc3RvcCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgZXJyb3IgYmxhY2tib2FyZCBsZXZlbCA9XG4gICAgbGV0IHJlYyBhdXggaSBsb2dfaW5mbyBlcnJvciA9XG4gICAgICBpZiBzdG9wIGkgbGFzdCB0aGVuXG4gICAgICAgIGVycm9yLCBsb2dfaW5mbywgTm9uZVxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4aXN0ID1cbiAgICAgICAgICBCLmlzX3NlbGVjdGVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGkgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBleGlzdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsX29mX2V2ZW50ID1cbiAgICAgICAgICAgIEIubGV2ZWxfb2ZfZXZlbnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBpZiBsZXZlbF9vZl9ldmVudCA9IGxldmVsIHRoZW5cbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgU29tZSBpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYXV4IChzdWNjIGkpIGxvZ19pbmZvIGVycm9yXG4gICAgICAgIHwgU29tZSB0cnVlIHwgU29tZSBmYWxzZSAtPiBhdXggKHN1Y2MgaSkgbG9nX2luZm8gZXJyb3JcbiAgICAgIClcbiAgICBpblxuICAgIGF1eCBmaXJzdCBsb2dfaW5mbyBlcnJvclxuXG4gIGxldCBnZXRfbGFzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIGxldmVsID1cbiAgICBnZXRfZ2VuX3VucmVzb2x2ZWRfZXZlbnRcbiAgICAgIChCLlBCLnN0ZXBfaWRfb2ZfaW50IChCLmdldF9uX2VpZCBibGFja2JvYXJkKSlcbiAgICAgIEIuUEIuemVyb19zdGVwX2lkIEIuUEIuZGVjX3N0ZXBfaWRcbiAgICAgIChmdW4gaSBqIC0+IGkgPCBqKVxuICAgICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsZXZlbFxuXG4gIGxldCBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBsZXZlbCA9XG4gICAgZ2V0X2dlbl91bnJlc29sdmVkX2V2ZW50IEIuUEIuemVyb19zdGVwX2lkXG4gICAgICAoQi5QQi5zdGVwX2lkX29mX2ludCAoQi5nZXRfbl9laWQgYmxhY2tib2FyZCkpXG4gICAgICBCLlBCLmluY19zdGVwX2lkXG4gICAgICAoZnVuIGkgaiAtPiBpID4gailcbiAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGV2ZWxcblxuICBsZXQgbmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCA9XG4gICAgbGV0IGJvb2wsIHN0cmluZyA9XG4gICAgICBtYXRjaCBwYXJhbWV0ZXIuQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgTm9uZSB8IFNvbWUgU3RvcnlfanNvbi5DYXVzYWwgLT4gZmFsc2UsIFwiXCJcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgKCBQYXJhbWV0ZXIuZHVtcF9ncmlkX2FmdGVyX2JyYW5jaGluZ19kdXJpbmdfd2Vha19jb21wcmVzc2lvbixcbiAgICAgICAgICBQYXJhbWV0ZXIueGxzd2Vha0ZpbGVOYW1lIClcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ19zdHJvbmdfY29tcHJlc3Npb24sXG4gICAgICAgICAgUGFyYW1ldGVyLnhsc3N0cm9uZ0ZpbGVOYW1lIClcbiAgICBpblxuICAgIGxldCAoKSA9IFByaW9yaXR5Lm5fYnJhbmNoIDo9ICFQcmlvcml0eS5uX2JyYW5jaCArIDEgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICBCLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdHJpbmdcbiAgICAgICAgICAgICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCBwcmlvcml0eSA9XG4gICAgICBtYXRjaCBCLlBCLkNJLlBvLksuSC5nZXRfcHJpb3JpdGllcyBwYXJhbWV0ZXIgd2l0aFxuICAgICAgfCBTb21lIHggLT4gZXJyb3IsIHhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJDb21wcmVzc2lvbiBtb2RlIGhhcyB0byBiZWVuIHNlbGVjdGVkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkNvbXByZXNzaW9uIG1vZGUgaGFzIG5vdCBiZWVuIHNlbGVjdGVkXCIpIFByaW9yaXR5LmNhdXNhbFxuICAgIGluXG4gICAgbGV0IG5fcF9pZCA9IEIuZ2V0X25wcmVkaWNhdGVfaWQgYmxhY2tib2FyZCBpblxuICAgIGxldCBlcnJvciwgKCkgPVxuICAgICAgbWF0Y2ggcHJpb3JpdHkuUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgfCBQcmlvcml0eS5BbGxfcmVtYWluaW5nX2V2ZW50cyAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgfm1lc3NhZ2U6XCJBbGxfcmVtYWluaW5nX2V2ZW50cyBzdHJhdGVneSBpcyBub3QgaW1wbGVtZW50ZWQgeWV0XCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkFsbCByZW1haW5pbmcgZXZlbnRzIHN0cmF0ZWd5IGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXRcIikgKClcbiAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzIC0+IGVycm9yLCAoKVxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX21vc3RfbnVtYmVyX29mX2V2ZW50cyAtPiBlcnJvciwgKClcbiAgICBpblxuICAgIGxldCBiZXN0X3BhaXIgeCBhIGIgPVxuICAgICAgbWF0Y2ggeC5Qcmlvcml0eS5jYW5kaWRhdGVfc2V0X29mX2V2ZW50cyB3aXRoXG4gICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzXG4gICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzIC0+XG4gICAgICAgIFRvb2xzLm1heF9wb3NfaW50X25vdF96ZXJvIGEgYlxuICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgVG9vbHMubWluX3Bvc19pbnRfbm90X3plcm8gYSBiXG4gICAgaW5cbiAgICBsZXQgZ2V0X3VucmVzb2x2ZWRfZXZlbnQgeCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHBfaWRcbiAgICAgICAgbGV2ZWwgPVxuICAgICAgbWF0Y2ggeC5Qcmlvcml0eS50cnlfdG9fcmVtb3ZlX2ZpcnN0IHdpdGhcbiAgICAgIHwgUHJpb3JpdHkuTGF0ZV9ldmVudHMgLT5cbiAgICAgICAgKG1hdGNoIHguUHJpb3JpdHkuY2FuZGlkYXRlX3NldF9vZl9ldmVudHMgd2l0aFxuICAgICAgICB8IFByaW9yaXR5LkFsbF9yZW1haW5pbmdfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBsZXZlbFxuICAgICAgICB8IFByaW9yaXR5LldpcmVfd2l0aF90aGVfbW9zdF9udW1iZXJfb2ZfZXZlbnRzXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9sZWFzdF9udW1iZXJfb2ZfZXZlbnRzIC0+XG4gICAgICAgICAgZ2V0X2xhc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbClcbiAgICAgIHwgUHJpb3JpdHkuRWFybHlfZXZlbnRzIC0+XG4gICAgICAgIChtYXRjaCB4LlByaW9yaXR5LmNhbmRpZGF0ZV9zZXRfb2ZfZXZlbnRzIHdpdGhcbiAgICAgICAgfCBQcmlvcml0eS5BbGxfcmVtYWluaW5nX2V2ZW50cyAtPlxuICAgICAgICAgIGdldF9maXJzdF91bnJlc29sdmVkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGxldmVsXG4gICAgICAgIHwgUHJpb3JpdHkuV2lyZV93aXRoX3RoZV9tb3N0X251bWJlcl9vZl9ldmVudHNcbiAgICAgICAgfCBQcmlvcml0eS5XaXJlX3dpdGhfdGhlX2xlYXN0X251bWJlcl9vZl9ldmVudHMgLT5cbiAgICAgICAgICBnZXRfZmlyc3RfdW5yZXNvbHZlZF9ldmVudF9vbl9waWQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbGlzdCA9XG4gICAgICBpZiBuX3BfaWQgPSAwIHRoZW5cbiAgICAgICAgZXJyb3IsIFtdXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IHJlYyB0cnlfbGV2ZWwgbGV2ZWxfb3B0IGVycm9yID1cbiAgICAgICAgICBtYXRjaCBsZXZlbF9vcHQgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBlcnJvciwgW11cbiAgICAgICAgICB8IFNvbWUgbGV2ZWwgLT5cbiAgICAgICAgICAgIGxldCByZWMgYXV4IGxldmVsIG5fcF9pZCBzdGVwIGJlc3QgPVxuICAgICAgICAgICAgICBpZiBzdGVwID0gbl9wX2lkIHRoZW5cbiAgICAgICAgICAgICAgICBiZXN0XG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCBncmFkZSA9XG4gICAgICAgICAgICAgICAgICBCLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIHN0ZXBcbiAgICAgICAgICAgICAgICAgICAgbGV2ZWxcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGF1eCBsZXZlbCBuX3BfaWQgKHN0ZXAgKyAxKVxuICAgICAgICAgICAgICAgICAgKGJlc3RfcGFpciBwcmlvcml0eSBiZXN0IChncmFkZSwgc3RlcCkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbiwgcF9pZCA9XG4gICAgICAgICAgICAgIGF1eCBsZXZlbCBuX3BfaWQgMVxuICAgICAgICAgICAgICAgIChCLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzX29mX3BpZF9ieV9sZXZlbCBibGFja2JvYXJkIDAgbGV2ZWwsIDApXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgICAgICB0cnlfbGV2ZWwgKFByaW9yaXR5Lmxvd2VyIGxldmVsKSBlcnJvclxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCBldmVudF9pZCA9XG4gICAgICAgICAgICAgICAgZ2V0X3VucmVzb2x2ZWRfZXZlbnQgcHJpb3JpdHkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgcF9pZCBsZXZlbFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBtYXRjaCBldmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgIGxldCBsb2cgPSBCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyIGluXG5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICAgICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICAgICAgICAgICAgfm1lc3NhZ2U6XG4gICAgICAgICAgICAgICAgICAgICAgKFwiQW4gZW1wdHkgd2lyZSBoYXMgYmVlbiBzZWxlY3RlZFwiIF4gc3RyaW5nX29mX2ludCBuKVxuICAgICAgICAgICAgICAgICAgICAoRmFpbHVyZSBcIkFuIGVtcHR5IHdpcmUgaGFzIGJlZW4gc2VsZWN0ZWRcIikgKClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgbG9nIFwiRVJST1IgMjQ5OiAlc1xcblwiXG4gICAgICAgICAgICAgICAgICAgIChQcmlvcml0eS5zdHJpbmdfb2ZfbGV2ZWwgbGV2ZWwpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICB0cnlfbGV2ZWwgKFByaW9yaXR5Lmxvd2VyIGxldmVsKSBlcnJvclxuICAgICAgICAgICAgICB8IFNvbWUgZXZlbnRfaWQgLT5cbiAgICAgICAgICAgICAgICBlcnJvciwgWyBEaXNjYXJkX2V2ZW50IGV2ZW50X2lkOyBLZWVwX2V2ZW50IGV2ZW50X2lkIF1cbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgdHJ5X2xldmVsIChTb21lIFByaW9yaXR5LmhpZ2hlc3QpIGVycm9yXG4gICAgICApXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxuICBsZXQgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBlaWQsIF8sIF8pID1cbiAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgIFwiRXZlbnQ6ICVpLCBQcmVkaWNhdGU6ICVpXCIgKEIuUEIuaW50X29mX3N0ZXBfaWQgZWlkKVxuICAgICAgICAoQi5wcmVkaWNhdGVfaWRfb2ZfY2FzZV9hZGRyZXNzIGNhc2UpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCAoKVxuXG4gIGxldCBwcm9wYWdhdGVfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBldmVudF9jYXNlX2FkZHJlc3MgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPlxuICAgICAgKCogdGhlIGNhc2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBibGFja2JvYXJkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpXG4gICAgfCBTb21lIHRydWUgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBrbm93IHRoYXQgdGhlIHBhaXIgKHRlc3QvYWN0aW9uKSBjYW4gYmVlbiBleGVjdXRlZCAqKVxuICAgICAgbGV0IGNhc2VfYWRkcmVzcyA9XG4gICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXNlX3ZhbHVlID1cbiAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgY2FzZV92YWx1ZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sMiA9XG4gICAgICAgIEIuZXhpc3RfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgbmV4dF9ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICAobWF0Y2ggYm9vbDIgd2l0aFxuICAgICAgfCBTb21lIGZhbHNlIC0+XG4gICAgICAgICgqIFRoZSBibGFja2JvYXJkIGlzIGluY29uc2lzdGVudDogKilcbiAgICAgICAgKCogUG9pbnRlcnMgc2hvdWxkIG5vdCBwb2ludCB0byByZW1vdmVkIGV2ZW50cy4qKVxuICAgICAgICBsZXQgZXJyb3IsICgpID1cbiAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICB+bWVzc2FnZTpcImluY29uc2lzdGVudCBwb2ludGVycyBpbiBibGFja2JvYXJkXCJcbiAgICAgICAgICAgIChGYWlsdXJlIFwiaW5jb25zaXN0ZW50IHBvaW50ZXJzIGluIGJsYWNrYm9hcmRcIikgKClcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcykgKVxuICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX25leHRfc2VpZCwgX25leHRfZWlkLCBuZXh0X3Rlc3QsIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gbmV4dF90ZXN0LCBCLlBCLmlzX3Vua25vd24gbmV4dF9hY3Rpb24gd2l0aFxuICAgICAgICB8IHRydWUsIHRydWUgLT5cbiAgICAgICAgICAoKiBubyB0ZXN0LCBubyBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duIChjYXNlIDEpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQgYnV0IGhhcyBubyB0ZXN0IGFuZCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVmFsdWUgaXMgcHJvcGFnYXRlZCBhZnRlciB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICgqIG5vIHRlc3QsIG5vIGFjdGlvbiBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSB2YWx1ZSBhZnRlciB0aGUgbmV4dCBldmVudCopXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlciAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIHByZWRpY2F0ZV92YWx1ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgfCB0cnVlLCBmYWxzZSAtPlxuICAgICAgICAgICgqIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAyKTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBubyB0ZXN0LCBidXQgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIk5vdGhpbmcgdG8gYmUgZG9uZVwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCogbmV4dCBldmVudCBpcyBzZWxlY3RlZCAqKVxuICAgICAgICAgICgqIG5vIHRlc3QsIGJ1dCBhbiBhY3Rpb24gaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICgqIG5vdGhpbmcgdG8gcHJvcGFnYXRlIGRvd253YXJkKilcbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDIgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgQi5zdWNjZXNzKSApXG4gICAgICAgIHwgZmFsc2UsIHRydWUgLT5cbiAgICAgICAgICAoKiBubyBhY3Rpb24sIGJ1dCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmVkaWNhdGVfdmFsdWUgbmV4dF90ZXN0IHRoZW4gKFxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uaiA9XG4gICAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMyk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QgYnV0IG5vIGFjdGlvbiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlIG5ldyBwcmVkaWNhdGVfdmFsdWUgXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgY29ualxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIgYmVmb3JlIGFuZCBhZnRlciBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIG5vIGFjdGlvbiwgYnV0IGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIG1lZXQgb2YgdGhlIHRlc3QgYW5kIHRoZSB2YWx1ZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMyBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIGNvbmopXG4gICAgICAgICAgICAgICAgOjogUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgKCogdGhlIHRlc3QgYW5kIHRoZSB2YWx1ZSBhcmUgaW5jb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNCk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBpcyBrZXB0LCBhIHRlc3QgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDQgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgICAoKiBubyBhY3Rpb24sIGJ1dCBhIHRlc3QgaW4gbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIGN1dCB0aGUgZXhwbG9yYXRpb24gKilcbiAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFtdLCBbXSwgQi5mYWlsKVxuICAgICAgICAgIClcbiAgICAgICAgfCBmYWxzZSwgZmFsc2UgLT5cbiAgICAgICAgICAoKnRoZXJlIGlzIGEgdGVzdCBhbmQgYW4gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHByZWRpY2F0ZV92YWx1ZSBuZXh0X3Rlc3QgdGhlbiAoXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGFyZSBjb21wYXRpYmxlICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjb25qID1cbiAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSA1KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IGlzIGtlcHQsIGEgdGVzdCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF90ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZSBuZXcgcHJlZGljYXRlX3ZhbHVlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGNvbmpcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIGJlZm9yZSB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIG5leHQgZXZlbnQgaXMgc2VsZWN0ZWQgKilcbiAgICAgICAgICAgICgqIGFuIGFjdGlvbiBhbmQgYSB0ZXN0IGluIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICgqIHdlIHByb3BhZ2F0ZSB0aGUgbWVldCBvZiB0aGUgdGVzdCBhbmQgdGhlIHZhbHVlIGJlZm9yZSB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29uailcbiAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgKCogdGVzdCBhbmQgdmFsdWUgYXJlIGluY29tcGF0aWJsZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDYpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgaXMga2VwdCwgYSB0ZXN0LCBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiTmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIk5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBuZXh0X2FjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJDdXRcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDYgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKiBuZXh0IGV2ZW50IGlzIHNlbGVjdGVkICopXG4gICAgICAgICAgICAoKiBhbiBhY3Rpb24gYW5kIGEgdGVzdCBpbiBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgKCogd2UgY3V0IHRoZSBleHBsb3JhdGlvbiAqKVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICAgKSlcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfbmV4dF9zZWlkLCBuZXh0X2VpZCwgbmV4dF90ZXN0LCBuZXh0X2FjdGlvbikgPVxuICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfYWN0aW9uIHdpdGhcbiAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBuZXh0X3Rlc3Qgd2l0aFxuICAgICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgICAgKCp0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgNyk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBubyB0ZXN0LCBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIGlzIHByb3BhZ2F0ZWQgYWZ0ZXIgYW5kIGJlZm9yZSB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCIqKipcXG5cIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gNyBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICgqdGhlcmUgaXMgbm8gdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIG5leHRfdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICAgICgqIHRlc3QgYW5kIHByZWRpY2F0ZV92YWx1ZSBhcmUgY29tcGF0aWJsZSAqKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgOCk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgaXMgcHJvcGFnYXRlZCBhZnRlciBhbmQgYmVmb3JlIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gOCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBldmVudCBpcyBwbGF5ZWQgb3Igbm90ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlIHRlc3QgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIHZhbHVlIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYWZ0ZXIgKG5leHRfZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgOSk6XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGEgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKCVpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgbmV4dF9laWQpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV9kb3duIDkgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gYWN0aW9uIGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAgICgqIHdlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICBEaXNjYXJkX2V2ZW50IG5leHRfZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkpXG4gICAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgICAoKiB0aGVyZSBpcyBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICBpZiBub3QgKEIuUEIuY29tcGF0aWJsZSBuZXh0X2FjdGlvbiBwcmVkaWNhdGVfdmFsdWUpIHRoZW4gKFxuICAgICAgICAgICAgKCogdGhlIGFjdGlvbiBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEwKTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgbmV4dCBldmVudCBpcyBrZXB0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJuZXh0IGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgKCogdGhlIGFjdGlvbiBpcyBjb21wYXRpYmxlIHdpdGggdGhlIHZhbHVlICopXG4gICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAobmV4dF9ldmVudF9jYXNlX2FkZHJlc3MsIGNvbXB1dGVkX25leHRfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAoKnRoZSBhY3Rpb24gaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbWF0Y2ggQi5QQi5pc191bmtub3duIG5leHRfdGVzdCB3aXRoXG4gICAgICAgICAgICB8IHRydWUgLT5cbiAgICAgICAgICAgICAgKCogdGhlcmUgaXMgbm8gdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfZG93biAgKGNhc2UgMTEpOlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBubyB0ZXN0LCBidXQgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoZSB2YWx1ZSBcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIiBpcyBwcm9wYWdhdGVkIGFmdGVyIHRoZSBuZXh0IGV2ZW50XCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMTEgbG9nX2luZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBubyB0ZXN0IGluIHRoZSBuZXh0IGV2ZW50ICopXG4gICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgKCogd2UgcHJvcGFnYXRlIHRoZSBqb2luIG9mIHRoZSB2YWx1ZSBhbmQgdGhlIGFjdGlvbiBhZnRlciB0aGUgbmV4dCBldmVudCopXG4gICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2FmdGVyXG4gICAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBuZXh0X3Rlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV9kb3duICAoY2FzZSAxMik6XCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBuZXh0IGV2ZW50IGlzIGtlcHRcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSB0ZXN0LCBidXQgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBuZXh0X3Rlc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIm5leHQgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhlIHZhbHVlIFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIgaXMgcHJvcGFnYXRlZCBhZnRlciB0aGUgbmV4dCBldmVudFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfZG93biAxMlxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgKCogd2UgZG8gbm90IGtub3cgd2hldGhlciB0aGUgZXZlbnQgaXMgcGxheWVkIG9yIG5vdCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGEgdGVzdCBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZXJlIGlzIGFuIGFjdGlvbiBpbiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgICAgICAgICAgICgqIHRoZSB0ZXN0IGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAoKiB0aGUgYWN0aW9uIGlzIGNvbXBhdGlibGUgd2l0aCB0aGUgdmFsdWUgKilcbiAgICAgICAgICAgICAgICAoKiB3ZSBwcm9wYWdhdGUgdGhlIGpvaW4gb2YgdGhlIHZhbHVlIGFuZCB0aGUgYWN0aW9uIGFmdGVyIHRoZSBuZXh0IGV2ZW50KilcbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9hZnRlclxuICAgICAgICAgICAgICAgICAgICAgIChuZXh0X2V2ZW50X2Nhc2VfYWRkcmVzcywgY29tcHV0ZWRfbmV4dF9wcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX2Rvd24gIChjYXNlIDEzKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIG5leHQgZXZlbnQgaXMga2VwdFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhIHRlc3QsIGJ1dCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIG5leHRfdGVzdFxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibmV4dCBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJOZXh0IGV2ZW50ICglaSkgaXMgZGlzY2FyZGVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIG5leHRfZWlkKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX2Rvd24gMTNcbiAgICAgICAgICAgICAgICAgICAgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICgqIHdlIGRvIG5vdCBrbm93IHdoZXRoZXIgdGhlIGV2ZW50IGlzIHBsYXllZCBvciBub3QgKilcbiAgICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhIHRlc3QgaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiB0aGVyZSBpcyBhbiBhY3Rpb24gaW4gdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoKiB0aGUgdGVzdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZSB2YWx1ZSAqKVxuICAgICAgICAgICAgICAgICgqIHdlIGRpc2NhcmQgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgbmV4dF9laWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICkpKVxuXG4gIGxldCByZWMgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcHJlZGljYXRlX3ZhbHVlIGV2ZW50X2Nhc2VfYWRkcmVzcyA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPiBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgfCBTb21lIHRydWUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgX2VpZCwgX3Rlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJldmlld19jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2Nhc2VfdmFsdWUgPVxuICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZXZpZXdfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIHByZXZpZXdfY2FzZV92YWx1ZVxuICAgICAgICBpblxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJvb2wgPVxuICAgICAgICAgICAgQi5pc19ib3VuZGFyeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgYm9vbCB0aGVuIChcbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSAxIGxvZ19pbmZvXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIG5vdCAoQi5QQi5pc191bmRlZmluZWQgcHJlZGljYXRlX3ZhbHVlKSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgIGxhc3RfY2hhbmNlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSAyIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgKVxuICAgICAgKSBlbHNlIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfbG9va191cF9jYXNlIDMgbG9nX2luZm8gaW5cbiAgICAgICAgZXJyb3IsIHRydWUsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICApXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIF9laWQsIF90ZXN0LCBhY3Rpb24pID1cbiAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgZXJyb3IsIGZhbHNlLCBsb2dfaW5mbywgYmxhY2tib2FyZFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzID1cbiAgICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgcHJldmlld19jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X2Nhc2VfdmFsdWUgPVxuICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHByZXZpZXdfY2FzZV9hZGRyZXNzIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIHByZXZpZXdfY2FzZV92YWx1ZVxuICAgICAgICBpblxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgcHJldmlld19wcmVkaWNhdGVfdmFsdWUgcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgICBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWUgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfdXBfY2FzZSA0IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgdHJ1ZSwgbG9nX2luZm8sIGJsYWNrYm9hcmRcbiAgICAgICAgKVxuICAgICAgKVxuXG4gIGxldCBsYXN0X2NoYW5jZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgYWRkcmVzcyA9XG4gICAgaWYgQi5QQi5pc191bmtub3duIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgZWxzZVxuICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgYWRkcmVzc1xuXG4gIGxldCBsYXN0X2NoYW5jZV91cCA9XG4gICAgaWYgbG9va191cF9mb3JfYmV0dGVyX2N1dCB0aGVuXG4gICAgICBsYXN0X2NoYW5jZV91cFxuICAgIGVsc2VcbiAgICAgIGZ1biBfIF8gbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBfIF8gLT5cbiAgICBlcnJvciwgZmFsc2UsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IHByb3BhZ2F0ZV91cCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBldmVudF9jYXNlX2FkZHJlc3MgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYm9vbCA9XG4gICAgICBCLmV4aXN0X2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICBpblxuICAgIG1hdGNoIGJvb2wgd2l0aFxuICAgIHwgU29tZSBmYWxzZSAtPlxuICAgICAgKCogdGhlIGNhc2UgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBibGFja2JvYXJkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLnN1Y2Nlc3MpXG4gICAgfCBTb21lIHRydWUgLT5cbiAgICAgICgqIHdlIGtub3cgdGhhdCB0aGUgcGFpciAodGVzdC9hY3Rpb24pIGhhcyBiZWVuIGV4ZWN1dGVkICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX3NlaWQsIF9laWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBjYXNlX2FkZHJlc3MgPVxuICAgICAgICBCLmNhc2VfYWRkcmVzc19vZl9jYXNlX2V2ZW50X2FkZHJlc3MgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2FzZV92YWx1ZSA9XG4gICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICBpZiBCLlBCLmlzX3Vua25vd24gYWN0aW9uIHRoZW5cbiAgICAgICAgKCogbm8gYWN0aW9uLCB3ZSBrZWVwIG9uIHByb3BhZ2F0aW5nIHdpdGggdGhlIGNvbmpvbmN0aW9uIG9mIHRoZSB0ZXN0IG9mIHRoZSB2YWx1ZSAqKVxuICAgICAgICBpZiBCLlBCLmNvbXBhdGlibGUgdGVzdCBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ZhbHVlID1cbiAgICAgICAgICAgIEIuUEIuY29uaiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0ZXN0IHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxKTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBubyBhY3Rpb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlJlZmluZSBiZWZvcmUgdGhlIGV2ZW50IChiZWZvcmUpIHdpdGggdGhlIHN0YXRlIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgbmV3X3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBSZWZpbmVfdmFsdWVfYmVmb3JlIChldmVudF9jYXNlX2FkZHJlc3MsIG5ld192YWx1ZSlcbiAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDIpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgIClcbiAgICAgIGVsc2UgaWYgQi5QQi5tb3JlX3JlZmluZWQgYWN0aW9uIHByZWRpY2F0ZV92YWx1ZSB0aGVuXG4gICAgICAgIGlmIEIuUEIuaXNfdW5kZWZpbmVkIHRlc3QgdGhlbiAoXG4gICAgICAgICAgKCp0aGUgd2lyZSBoYXMganVzdCBiZSBjcmVhdGVkLCBub3RoaW5nIHRvIGJlIGRvbmUgKilcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDMpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJUaGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiTm90aGluZyB0byBiZSBkb25lXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAzIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIEIuc3VjY2VzcykgKVxuICAgICAgICApIGVsc2UgaWZcbiAgICAgICAgICAgICgqd2Uga25vdyB0aGF0IHRoZSB3aXJlIHdhcyBkZWZpbmVkIGJlZm9yZSopXG4gICAgICAgICAgICBCLlBCLmNvbXBhdGlibGUgdGVzdCBCLlBCLmRlZmluZWRcbiAgICAgICAgICB0aGVuIChcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGF0ZSA9XG4gICAgICAgICAgICBCLlBCLmNvbmogcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGVzdCBCLlBCLmRlZmluZWRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNCk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlRoZSBldmVudCBiZWZvcmUgaXMga2VwdCwgdGhlcmUgaXMgYW4gYWN0aW9uIGFuZCBhIHRlc3RcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IFRlc3Q6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHN0YXRlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA0IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgc3RhdGUpXG4gICAgICAgICAgICAgIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA1KTpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIkN1dFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgNSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgIClcbiAgICAgIGVsc2UgKFxuICAgICAgICAoKlRoZSBldmVudCBoYXMgdG8gYmUgZGlzY2FyZGVkIHdoaWNoIGlzIGFic3VyZCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDYpOlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiVGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LCB0aGVyZSBpcyBhbiBhY3Rpb25cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDYgbG9nX2luZm9cbiAgICAgICAgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICApXG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB3ZSBkbyBub3Qga25vdyB3aGV0aGVyIHRoZSBwYWlyICh0ZXN0L2FjdGlvbikgaGFzIGJlZW4gZXhlY3V0ZWQgKilcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfc2VpZCwgZWlkLCB0ZXN0LCBhY3Rpb24pID1cbiAgICAgICAgQi5nZXRfc3RhdGljIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgIGluXG4gICAgICBsZXQgY2FzZV9hZGRyZXNzID1cbiAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgIEIucHJlZGljYXRlX3ZhbHVlX29mX2Nhc2VfdmFsdWUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICBpblxuICAgICAgKG1hdGNoIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gd2l0aFxuICAgICAgfCB0cnVlIC0+XG4gICAgICAgIChtYXRjaCBCLlBCLmlzX3Vua25vd24gdGVzdCB3aXRoXG4gICAgICAgIHwgdHJ1ZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgNyk6XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgbmVpdGhlciBhIHRlc3QsIG5vciAgYWN0aW9uIFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCA3IGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgIFJlZmluZV92YWx1ZV9iZWZvcmUgKGV2ZW50X2Nhc2VfYWRkcmVzcywgcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSA4KTpcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwidGhlcmUgaXMgYSAgdGVzdCwgYnV0IG5vIGFjdGlvblwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmVkaWNhdGVfdmFsdWUpXG4gICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgOSk6XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhICB0ZXN0LCBidXQgbm8gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIkV2ZW50IGJlZm9yZSAoJWkpIGlzIGRpc2NhcmRlZFwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgOSBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgRGlzY2FyZF9ldmVudCBlaWQgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICBCLnN1Y2Nlc3MgKSApXG4gICAgICAgICAgKSlcbiAgICAgIHwgZmFsc2UgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJldmlld19ldmVudF9jYXNlX2FkZHJlc3MgPVxuICAgICAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBwcmV2aWV3X2Nhc2VfYWRkcmVzcyA9XG4gICAgICAgICAgQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIHByZXZpZXdfZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXZpZXdfY2FzZV92YWx1ZSA9XG4gICAgICAgICAgQi5nZXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgcHJldmlld19jYXNlX2FkZHJlc3MgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgcHJldmlld19jYXNlX3ZhbHVlXG4gICAgICAgIGluXG4gICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZSBwcmVkaWNhdGVfdmFsdWUgdGhlblxuICAgICAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIGFjdGlvbiBwcmVkaWNhdGVfdmFsdWUgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGJvb2wsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgbGFzdF9jaGFuY2VfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSBwcmV2aWV3X2V2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTApOlwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkIGV2ZW50X2Nhc2VfYWRkcmVzc1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIgdGhlcmUgaXMgYW4gYWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBwcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBcIlRoaXMgaXMgdGhlIG9ubHkgb3Bwb3J0dW5pdHkgdG8gc2V0IHVwIHRoZSB3aXJlLCB3ZSBcXFxuICAgICAgICAgICAgICAgICAgICAgICBrZWVwIHRoZSBldmVudFwiXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxMCBsb2dfaW5mb1xuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgIEtlZXBfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICkgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoIEIuUEIuaXNfdW5rbm93biB0ZXN0IHdpdGhcbiAgICAgICAgICAgICAgfCB0cnVlIC0+XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbmV3X3ByZWRpY2F0ZV92YWx1ZSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLmRpc2p1bmN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDExKTpcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcInRoZXJlIGlzIGFuIGFjdGlvbiwgYnV0IG5vIHRlc3RcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTEgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBuZXdfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICB8IGZhbHNlIC0+XG4gICAgICAgICAgICAgICAgaWYgQi5QQi5jb21wYXRpYmxlIHRlc3QgcHJlZGljYXRlX3ZhbHVlIHRoZW5cbiAgICAgICAgICAgICAgICAgIGlmIEIuUEIuY29tcGF0aWJsZSB0ZXN0IHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXdfdGVzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgQi5QQi5jb25qIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZXZpZXdfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIG5ld19wcmVkaWNhdGVfdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICAgIEIuUEIuZGlzanVuY3Rpb24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbmV3X3Rlc3RcbiAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJQcm9wYWdhdGVfdXAgIChjYXNlIDEyKTpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBUZXN0OlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJSZWZpbmUgYmVmb3JlIHRoZSBldmVudCAoYmVmb3JlKSB3aXRoIHRoZSBzdGF0ZSBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnRfY2FzZV9hZGRyZXNzLCBuZXdfcHJlZGljYXRlX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgOjogaW5zdHJ1Y3Rpb25fbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxMyk6XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiYmVmb3JlIGV2ZW50IEFjdGlvbjogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGlzY2FyZCB0aGUgZXZlbnQgYmVmb3JlICglaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9wcm9wYWdhdGlvbl9jYXNlX3VwIDEzXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAgICggYmxhY2tib2FyZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHByZXYnID1cbiAgICAgICAgICAgICAgICAgICAgQi5QQi5kaXNqdW5jdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZSB0ZXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUHJvcGFnYXRlX3VwICAoY2FzZSAxNCk6XCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBwcmludF9ldmVudF9jYXNlX2FkZHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwid2UgZG8gbm90IGtub3cgaWYgdGhlIGV2ZW50IGJlZm9yZSBpcyBrZXB0LFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJ0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0XG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgQWN0aW9uOiBcIlxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIldpcmVfc3RhdGU6IFwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwiUmVmaW5lIGJlZm9yZSB0aGUgZXZlbnQgKGJlZm9yZSkgd2l0aCB0aGUgc3RhdGUgXCJcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldidcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTRcbiAgICAgICAgICAgICAgICAgICAgICBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgICAgICAoIGJsYWNrYm9hcmQsXG4gICAgICAgICAgICAgICAgICAgICAgUmVmaW5lX3ZhbHVlX2JlZm9yZSAoZXZlbnRfY2FzZV9hZGRyZXNzLCBwcmV2JylcbiAgICAgICAgICAgICAgICAgICAgICA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9saXN0LFxuICAgICAgICAgICAgICAgICAgICAgIEIuc3VjY2VzcyApIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTUpOlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgICAgcHJpbnRfZXZlbnRfY2FzZV9hZGRyZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgZXZlbnRfY2FzZV9hZGRyZXNzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIndlIGRvIG5vdCBrbm93IGlmIHRoZSBldmVudCBiZWZvcmUgaXMga2VwdCxcIlxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiIHRoZXJlIGlzIGFuIGFjdGlvbiBhbmQgbWF5YmUgYSB0ZXN0XCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvblxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiV2lyZV9zdGF0ZTogXCJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgXCJEaXNjYXJkIHRoZSBldmVudCBiZWZvcmUgKCVpKVwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX3Byb3BhZ2F0aW9uX2Nhc2VfdXAgMTUgbG9nX2luZm9cbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICAgIERpc2NhcmRfZXZlbnQgZWlkIDo6IGluc3RydWN0aW9uX2xpc3QsXG4gICAgICAgICAgICAgICAgcHJvcGFnYXRlX2xpc3QsXG4gICAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICAgIClcbiAgICAgICAgZWxzZSBpZiBCLlBCLm1vcmVfcmVmaW5lZCBhY3Rpb24gcHJlZGljYXRlX3ZhbHVlIHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTYpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiUHJldmlvdXMgd2lyZSBzdGF0ZTogXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBCLlBCLnByaW50X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBwcmV2aWV3X3ByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiU2VsZWN0IHRoZSBldmVudCBiZWZvcmUgKCVpKVwiIChCLlBCLmludF9vZl9zdGVwX2lkIGVpZClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNiBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgKCBibGFja2JvYXJkLFxuICAgICAgICAgICAgICBLZWVwX2V2ZW50IGVpZCA6OiBpbnN0cnVjdGlvbl9saXN0LFxuICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgQi5zdWNjZXNzICkgKVxuICAgICAgICApIGVsc2UgKFxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlByb3BhZ2F0ZV91cCAgKGNhc2UgMTcpOlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICAgIHByaW50X2V2ZW50X2Nhc2VfYWRkcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgYmxhY2tib2FyZCBldmVudF9jYXNlX2FkZHJlc3NcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJ3ZSBkbyBub3Qga25vdyBpZiB0aGUgZXZlbnQgYmVmb3JlIGlzIGtlcHQsXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIiB0aGVyZSBpcyBhbiBhY3Rpb24gYW5kIGEgdGVzdFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJiZWZvcmUgZXZlbnQgVGVzdDpcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHRlc3RcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcImJlZm9yZSBldmVudCBBY3Rpb246IFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQi5QQi5wcmludF9wcmVkaWNhdGVfdmFsdWVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgYWN0aW9uXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgXCJXaXJlX3N0YXRlOiBcIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEIuUEIucHJpbnRfcHJlZGljYXRlX3ZhbHVlXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHByZWRpY2F0ZV92YWx1ZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiQ3V0XCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfcHJvcGFnYXRpb25fY2FzZV91cCAxNyBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBCLmZhaWwpXG4gICAgICAgICkpXG5cbiAgbGV0IHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNoZWNrXG4gICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBtYXRjaCBjaGVjayB3aXRoXG4gICAgfCBQcm9wYWdhdGVfdXAgeCAtPlxuICAgICAgcHJvcGFnYXRlX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgeFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBQcm9wYWdhdGVfZG93biB4IC0+XG4gICAgICBwcm9wYWdhdGVfZG93biBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHhcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuXG4gIGxldCBjdXRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBjYXNlXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICAoKiB3ZSByZW1vdmUgdGhlIGNhc2UgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgcmVzdWx0KSA9XG4gICAgICBCLnJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoQi5leGlzdCBjYXNlKVxuICAgICAgICAoQi5ib29sZWFuIChTb21lIGZhbHNlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW4gY2FzZSlcbiAgICAgICAgICBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgKCogd2UgcGx1ZyBwb2ludGVyIG5leHQgb2YgdGhlIHByZXZpb3VzIGV2ZW50ICopXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5wb2ludGVyX3RvX25leHQgcG9pbnRlcl9wcmV2aW91cylcbiAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfbmV4dCkgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBwcmV2aW91cyBvZiB0aGUgbmV4dCBldmVudCAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIub3ZlcndyaXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgKEIucG9pbnRlcl90b19wcmV2aW91cyBwb2ludGVyX25leHQpXG4gICAgICAgICAgKEIucG9pbnRlciBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIClcblxuICBsZXQgbG9va19kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgcHJvcGFnYXRlX2xpc3QgY2FzZVxuICAgICAgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfLCBfLCBfLCBhY3Rpb24pID1cbiAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICBpblxuICAgIGlmIEIuUEIuaXNfdW5rbm93biBhY3Rpb24gdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcm9wYWdhdGVfbGlzdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGxpc3RfdmFsdWVzID0gQi5QQi53ZWFrZW5pbmcgYWN0aW9uIGluXG4gICAgICBsZXQgcHJvcGFnYXRlX2xpc3QsIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgKGZ1biAocHJvcGFnYXRlX2xpc3QsIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCkgdmFsdWUgLT5cbiAgICAgICAgICAgIGxldCByZWMgYXV4IGNhc2UgYm9vbCBlcnJvciBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgIGxldCBjYSA9IEIuY2FzZV9hZGRyZXNzX29mX2Nhc2VfZXZlbnRfYWRkcmVzcyBjYXNlIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICAgICAgICAgIEIuZ2V0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgICAgICAgICBCLnByZWRpY2F0ZV92YWx1ZV9vZl9jYXNlX3ZhbHVlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXNlX3ZhbHVlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGlmIEIuUEIubW9yZV9yZWZpbmVkIHByZWRpY2F0ZV92YWx1ZSB2YWx1ZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX25leHQgPVxuICAgICAgICAgICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGxvZ19pbmZvID1cbiAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDEgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICggUHJvcGFnYXRlX3VwIHBvaW50ZXJfbmV4dCA6OiBwcm9wYWdhdGVfbGlzdCxcbiAgICAgICAgICAgICAgICAgIGVycm9yLFxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICAgICAgICBibGFja2JvYXJkIClcbiAgICAgICAgICAgICAgKSBlbHNlIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBuZXh0X2Nhc2UgPVxuICAgICAgICAgICAgICAgICAgQi5mb2xsb3dfcG9pbnRlcl9kb3duIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhpc3QgPVxuICAgICAgICAgICAgICAgICAgQi5leGlzdF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICAgICAgICAgICAgbmV4dF9jYXNlXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBtYXRjaCBleGlzdCB3aXRoXG4gICAgICAgICAgICAgICAgfCBTb21lIHRydWUgLT5cbiAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2xvb2tfZG93bl9jYXNlIDIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgfCBTb21lIGZhbHNlIC0+IGF1eCBuZXh0X2Nhc2UgYm9vbCBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIF8sIG5leHRfYWN0aW9uKSA9XG4gICAgICAgICAgICAgICAgICAgIEIuZ2V0X3N0YXRpYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgbmV4dF9jYXNlXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgaWYgQi5QQi5tb3JlX3JlZmluZWQgbmV4dF9hY3Rpb24gdmFsdWUgdGhlblxuICAgICAgICAgICAgICAgICAgICBpZiBib29sIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2dfaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9sb29rX2Rvd25fY2FzZSAzIGxvZ19pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIGF1eCBuZXh0X2Nhc2UgdHJ1ZSBlcnJvciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBhdXggbmV4dF9jYXNlIGJvb2wgZXJyb3IgbG9nX2luZm9cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGF1eCBjYXNlIGZhbHNlIGVycm9yIGxvZ19pbmZvKVxuICAgICAgICAgIChwcm9wYWdhdGVfbGlzdCwgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkKVxuICAgICAgICAgIGxpc3RfdmFsdWVzXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBwcm9wYWdhdGVfbGlzdFxuICAgIClcblxuICBsZXQgbG9va19kb3duID1cbiAgICBpZiBsb29rX2Rvd25fZm9yX2JldHRlcl9jdXQgdGhlblxuICAgICAgbG9va19kb3duXG4gICAgZWxzZVxuICAgICAgZnVuIF8gXyBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3QgXyAtPlxuICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgbGlzdFxuXG4gIGxldCByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgY2FzZV9hZGRyZXNzID0gQi52YWx1ZV9hZnRlciBhZGRyZXNzIGluXG4gICAgbGV0IHN0YXRlID0gQi5zdGF0ZSB2YWx1ZSBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhc2VfYWRkcmVzcyBzdGF0ZSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2lnbm9yZWQgcmVzdWx0IHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCByZXN1bHQpXG4gICAgZWxzZSBpZiBCLmlzX2ZhaWxlZCByZXN1bHQgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCByZXN1bHQpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICBQcm9wYWdhdGVfdXAgYWRkcmVzcyA6OiBQcm9wYWdhdGVfZG93biBhZGRyZXNzIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHJlc3VsdClcbiAgICApXG5cbiAgbGV0IHJlZmluZV92YWx1ZV9iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgaW5cbiAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgcG9pbnRlcl9wcmV2aW91cyB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG5cbiAgbGV0IGRpc2NhcmRfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciBjYXNlXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCkgPVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfbmV4dCA9XG4gICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBwb2ludGVyX3ByZXZpb3VzID1cbiAgICAgIEIuZm9sbG93X3BvaW50ZXJfdXAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgaW5cbiAgICAoKiB3ZSByZW1vdmUgdGhlIGNhc2UgKilcbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgcmVzdWx0KSA9XG4gICAgICBCLnJlZmluZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAoQi5leGlzdCBjYXNlKVxuICAgICAgICAoQi5ib29sZWFuIChTb21lIGZhbHNlKSkgYmxhY2tib2FyZFxuICAgIGluXG4gICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0IHRoZW5cbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIHJlc3VsdFxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgIGVsc2UgKFxuICAgICAgbGV0IGNhID0gQi5jYXNlX2FkZHJlc3Nfb2ZfY2FzZV9ldmVudF9hZGRyZXNzIGNhc2UgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhc2VfdmFsdWUgPVxuICAgICAgICBCLmdldCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjYSBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgcHJlZGljYXRlX3ZhbHVlID1cbiAgICAgICAgQi5wcmVkaWNhdGVfdmFsdWVfb2ZfY2FzZV92YWx1ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgIGNhc2VfdmFsdWVcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JykgPVxuICAgICAgICByZWZpbmVfdmFsdWVfYWZ0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIHBvaW50ZXJfcHJldmlvdXMgcHJlZGljYXRlX3ZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBCLmlzX2ZhaWxlZCByZXN1bHQnIHRoZW5cbiAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgW10sIFtdKSwgcmVzdWx0J1xuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoXywgZXZlbnQsIF8sIF8pID1cbiAgICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgICBCLmxldmVsX29mX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgZXZlbnRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLm5fdW5yZXNvbHZlZF9ldmVudHNfaW5fY29sdW1uX2F0X2xldmVsIGNhc2UgbGV2ZWwpXG4gICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgIGluXG4gICAgICAgICgqIHdlIHBsdWcgcG9pbnRlciBuZXh0IG9mIHRoZSBwcmV2aW91cyBldmVudCAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLm92ZXJ3cml0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIucG9pbnRlcl90b19uZXh0IHBvaW50ZXJfcHJldmlvdXMpXG4gICAgICAgICAgICAoQi5wb2ludGVyIHBvaW50ZXJfbmV4dCkgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICAoKiB3ZSBwbHVnIHBvaW50ZXIgcHJldmlvdXMgb2YgdGhlIG5leHQgZXZlbnQgKilcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgICAgQi5vdmVyd3JpdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgIChCLnBvaW50ZXJfdG9fcHJldmlvdXMgcG9pbnRlcl9uZXh0KVxuICAgICAgICAgICAgKEIucG9pbnRlciBwb2ludGVyX3ByZXZpb3VzKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJvcGFnYXRlX2xpc3QgPVxuICAgICAgICAgIFByb3BhZ2F0ZV91cCBwb2ludGVyX25leHQgOjogUHJvcGFnYXRlX2Rvd24gcG9pbnRlcl9wcmV2aW91c1xuICAgICAgICAgIDo6IFByb3BhZ2F0ZV91cCBwb2ludGVyX3ByZXZpb3VzIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIHByb3BhZ2F0ZV9saXN0ID1cbiAgICAgICAgICBsb29rX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBwcm9wYWdhdGVfbGlzdFxuICAgICAgICAgICAgY2FzZVxuICAgICAgICBpblxuICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksIHJlc3VsdFxuICAgICAgKVxuICAgIClcblxuICBsZXQga2VlcF9jYXNlIHBhcmFtZXRlciBoYW5kbGVyIGNhc2VcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSA9XG4gICAgKCogd2Uga2VlcCB0aGUgY2FzZSAqKVxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCByZXN1bHQpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmV4aXN0IGNhc2UpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgdHJ1ZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHJlc3VsdCB0aGVuXG4gICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBbXSwgW10pLCByZXN1bHRcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCByZXN1bHQgdGhlblxuICAgICAgKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLCByZXN1bHRcbiAgICBlbHNlIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHBvaW50ZXJfcHJldmlvdXMgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX3VwIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIF9wb2ludGVyX25leHQgPVxuICAgICAgICBCLmZvbGxvd19wb2ludGVyX2Rvd24gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9zZWlkLCBlaWQsIHRlc3QsIGFjdGlvbikgPVxuICAgICAgICBCLmdldF9zdGF0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjYXNlXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIF8sIHJlc3VsdCcpID1cbiAgICAgICAgcmVmaW5lX3ZhbHVlX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNhc2VcbiAgICAgICAgICB0ZXN0IGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgXywgcmVzdWx0JycpID1cbiAgICAgICAgcmVmaW5lX3ZhbHVlX2FmdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2FzZVxuICAgICAgICAgIGFjdGlvbiBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgICBpblxuICAgICAgaWYgQi5pc19mYWlsZWQgcmVzdWx0JyB8fCBCLmlzX2ZhaWxlZCByZXN1bHQnJyB0aGVuXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIFtdLCBbXSksIEIuZmFpbFxuICAgICAgZWxzZSAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2luX2NvbHVtbiBjYXNlKVxuICAgICAgICAgICAgYmxhY2tib2FyZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsZXZlbCA9XG4gICAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVpZFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgKEIubl91bnJlc29sdmVkX2V2ZW50c19pbl9jb2x1bW5fYXRfbGV2ZWwgY2FzZSBsZXZlbClcbiAgICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHByb3BhZ2F0ZV9saXN0ID1cbiAgICAgICAgICBQcm9wYWdhdGVfdXAgY2FzZSA6OiBQcm9wYWdhdGVfZG93biBjYXNlXG4gICAgICAgICAgOjogUHJvcGFnYXRlX2Rvd24gcG9pbnRlcl9wcmV2aW91cyA6OiBQcm9wYWdhdGVfdXAgcG9pbnRlcl9wcmV2aW91c1xuICAgICAgICAgIDo6IHByb3BhZ2F0ZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KSwgcmVzdWx0XG4gICAgICApXG4gICAgKVxuXG4gIGxldCBrZWVwX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN1Y2Nlc3MpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmlzX2V4aXN0X2V2ZW50IHN0ZXBfaWQpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgdHJ1ZSkpIGJsYWNrYm9hcmRcbiAgICBpblxuICAgIGlmIEIuaXNfZmFpbGVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgW10sIFtdLCBzdWNjZXNzKVxuICAgIGVsc2UgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MgdGhlblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgZWxzZSAoXG4gICAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluY19zZWxlY3RlZF9ldmVudHMgbG9nX2luZm8gaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIldlIGtlZXAgZXZlbnQgJWlcIlxuICAgICAgICAgICAgICAoQi5QQi5pbnRfb2Zfc3RlcF9pZCBzdGVwX2lkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiKioqXCJcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICAgIEIuZGVjIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEIubl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIEIuY2FzZV9saXN0X29mX2VpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgIGluXG4gICAgICBsZXQgcmVjIGF1eCBsIHggc3VjY2VzcyA9XG4gICAgICAgIG1hdGNoIGwgd2l0aFxuICAgICAgICB8IFtdIC0+IHgsIHN1Y2Nlc3NcbiAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICBsZXQgeSwgc3VjY2VzczIgPSBrZWVwX2Nhc2UgcGFyYW1ldGVyIGhhbmRsZXIgdCB4IGluXG4gICAgICAgICAgaWYgQi5pc19pZ25vcmVkIHN1Y2Nlc3MyIHRoZW5cbiAgICAgICAgICAgIGF1eCBxIHkgc3VjY2Vzc1xuICAgICAgICAgIGVsc2UgaWYgQi5pc19zdWNjZWVkZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzMlxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIHksIHN1Y2Nlc3MyXG4gICAgICBpblxuICAgICAgbGV0ICggKGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QpLFxuICAgICAgICAgICAgc3VjY2VzcyApID1cbiAgICAgICAgYXV4IGxpc3RcbiAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdClcbiAgICAgICAgICBCLmlnbm9yZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBzdWNjZXNzKVxuICAgIClcblxuICBsZXQgZ2VuX2V2ZW50IGZfY2FzZSBnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN1Y2Nlc3MpID1cbiAgICAgIEIucmVmaW5lIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChCLmlzX2V4aXN0X2V2ZW50IHN0ZXBfaWQpXG4gICAgICAgIChCLmJvb2xlYW4gKFNvbWUgZmFsc2UpKSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBCLmlzX2ZhaWxlZCBzdWNjZXNzIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFtdLCBbXSwgc3VjY2VzcylcbiAgICBlbHNlIGlmIEIuaXNfaWdub3JlZCBzdWNjZXNzIHRoZW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBzdWNjZXNzKVxuICAgIGVsc2UgKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIqKipcIlxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZVxuICAgICAgICAgICAgICAoQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiV2UgcmVtb3ZlIGV2ZW50ICVpXCJcbiAgICAgICAgICAgICAgKEIuUEIuaW50X29mX3N0ZXBfaWQgc3RlcF9pZClcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmVcbiAgICAgICAgICAgICAgKEIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBcIioqKlwiXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lXG4gICAgICAgICAgICAgIChCLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBsb2dfaW5mbyA9IGcgbG9nX2luZm8gaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBCLmRlYyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBCLm5fdW5yZXNvbHZlZF9ldmVudHMgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxldmVsID1cbiAgICAgICAgQi5sZXZlbF9vZl9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgQi5kZWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAoQi5uX3VucmVzb2x2ZWRfZXZlbnRzX2F0X2xldmVsIGxldmVsKVxuICAgICAgICAgIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgQi5jYXNlX2xpc3Rfb2ZfZWlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgaW5cbiAgICAgIGxldCByZWMgYXV4IGwgeCBzdWNjZXNzID1cbiAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgIHwgW10gLT4geCwgc3VjY2Vzc1xuICAgICAgICB8IHQgOjogcSAtPlxuICAgICAgICAgIGxldCB5LCBzdWNjZXNzMiA9IGZfY2FzZSBwYXJhbWV0ZXIgaGFuZGxlciB0IHggaW5cbiAgICAgICAgICBpZiBCLmlzX2lnbm9yZWQgc3VjY2VzczIgdGhlblxuICAgICAgICAgICAgYXV4IHEgeSBzdWNjZXNzXG4gICAgICAgICAgZWxzZSBpZiBCLmlzX3N1Y2NlZWRlZCBzdWNjZXNzMiB0aGVuXG4gICAgICAgICAgICBhdXggcSB5IHN1Y2Nlc3MyXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgeSwgc3VjY2VzczJcbiAgICAgIGluXG4gICAgICBsZXQgKCAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCksXG4gICAgICAgICAgICBzdWNjZXNzICkgPVxuICAgICAgICBhdXggbGlzdFxuICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0KVxuICAgICAgICAgIEIuaWdub3JlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgaW5zdHJ1Y3Rpb25fbGlzdCwgcHJvcGFnYXRlX2xpc3QsIHN1Y2Nlc3MpXG4gICAgKVxuXG4gIGxldCBjdXRfZXZlbnQgPSBnZW5fZXZlbnQgY3V0X2Nhc2UgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pbmNfY3V0X2V2ZW50c1xuXG4gIGxldCBkaXNjYXJkX2V2ZW50ID1cbiAgICBnZW5fZXZlbnQgZGlzY2FyZF9jYXNlIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaW5jX3JlbW92ZWRfZXZlbnRzXG5cbiAgbGV0IGFwcGx5X2luc3RydWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgaW5zdHJ1Y3Rpb25cbiAgICAgIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3QgPVxuICAgIG1hdGNoIGluc3RydWN0aW9uIHdpdGhcbiAgICB8IEtlZXBfZXZlbnQgc3RlcF9pZCAtPlxuICAgICAga2VlcF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgQ3V0X2V2ZW50IHN0ZXBfaWQgLT5cbiAgICAgIGN1dF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIHN0ZXBfaWRcbiAgICAgICAgaW5zdHJ1Y3Rpb25fbGlzdCBwcm9wYWdhdGVfbGlzdFxuICAgIHwgRGlzY2FyZF9ldmVudCBzdGVwX2lkIC0+XG4gICAgICBkaXNjYXJkX2V2ZW50IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgc3RlcF9pZFxuICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBSZWZpbmVfdmFsdWVfYWZ0ZXIgKGFkZHJlc3MsIHZhbHVlKSAtPlxuICAgICAgcmVmaW5lX3ZhbHVlX2FmdGVyIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgYWRkcmVzc1xuICAgICAgICB2YWx1ZSBpbnN0cnVjdGlvbl9saXN0IHByb3BhZ2F0ZV9saXN0XG4gICAgfCBSZWZpbmVfdmFsdWVfYmVmb3JlIChhZGRyZXNzLCB2YWx1ZSkgLT5cbiAgICAgIHJlZmluZV92YWx1ZV9iZWZvcmUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBhZGRyZXNzXG4gICAgICAgIHZhbHVlIGluc3RydWN0aW9uX2xpc3QgcHJvcGFnYXRlX2xpc3RcbiAgICB8IFNraXAgLT5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBCLmlnbm9yZSlcblxuICBsZXQgX2tlZXAgeCA9IEtlZXBfZXZlbnQgeFxuZW5kXG4iLCIoKipcbiAgKiBnZW5lcmljX2JyYW5jaF9hbmRfY3VwX3NvbHZlci5tbFxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyOS8wOC8yMDExXG4gICogTGFzdCBtb2RpZmljYXRpb246IDE5LzA3LzIwMTNcbiAgKiAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldFxuICAqIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZFxuICAqIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5sZXQgbG9nX3N0ZXBzID0gZmFsc2VcblxubW9kdWxlIHR5cGUgU29sdmVyID0gc2lnXG4gIG1vZHVsZSBQSCA6IFByb3BhZ2F0aW9uX2hldXJpc3RpY3MuQmxhY2tib2FyZF93aXRoX2hldXJpc3RpY1xuXG4gIHZhbCBjb21wcmVzcyA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC51cGRhdGVfb3JkZXIgbGlzdCxcbiAgICAgIFBILkIuYmxhY2tib2FyZCAqIFBILkIuYXNzaWduX3Jlc3VsdCAqIFBILkIucmVzdWx0IGxpc3QgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBkZXRlY3RfaW5kZXBlbmRlbnRfZXZlbnRzIDpcbiAgICAoIFBILkIuYmxhY2tib2FyZCxcbiAgICAgIFBILkIuUEIuc3RlcF9pZCBsaXN0LFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBmaWx0ZXIgOlxuICAgICggUEguQi5ibGFja2JvYXJkLFxuICAgICAgUEguQi5QQi5zdGVwX2lkIGxpc3QsXG4gICAgICBQSC5CLmJsYWNrYm9hcmQgKVxuICAgIFBILkIuUEIuQ0kuUG8uSy5ILmJpbmFyeVxuXG4gIHZhbCBzdWIgOiAoVHJhY2UudCwgUEguQi5ibGFja2JvYXJkKSBQSC5CLlBCLkNJLlBvLksuSC51bmFyeVxuICB2YWwgY2xlYW4gOiAoUEguQi5ibGFja2JvYXJkLCBQSC5CLmJsYWNrYm9hcmQpIFBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIHRyYW5zbGF0ZSA6XG4gICAgKCBQSC5CLmJsYWNrYm9hcmQsXG4gICAgICBQSC5CLlBCLnN0ZXBfaWQgbGlzdCxcbiAgICAgIFRyYWNlLnQgKiBQSC5CLnJlc3VsdCApXG4gICAgUEguQi5QQi5DSS5Qby5LLkguYmluYXJ5XG5cbiAgdmFsIHRyYW5zbGF0ZV9yZXN1bHQgOiBQSC5CLnJlc3VsdCAtPiBUcmFjZS50XG5lbmRcblxubW9kdWxlIFNvbHZlciA9IHN0cnVjdFxuICBtb2R1bGUgUEggPSBQcm9wYWdhdGlvbl9oZXVyaXN0aWNzLlByb3BhZ2F0aW9uX2hldXJpc3RpY1xuICAoKkJsYWNrYm9hcmRfd2l0aF9oZXVyaXN0aWMqKVxuXG4gIGxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBwb3Mgfm1lc3NhZ2UgZXhuIGRlZmF1bHRcblxuICBsZXQgX2NvbWJpbmVfb3V0cHV0IG8xIG8yID1cbiAgICBpZiBQSC5CLmlzX2lnbm9yZWQgbzIgdGhlblxuICAgICAgbzFcbiAgICBlbHNlXG4gICAgICBvMlxuXG4gIGxldCByZWMgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgIHByb3BhZ2F0ZV9saXN0IGJsYWNrYm9hcmQgPVxuICAgIGxldCBib29sLCBsb2dfaW5mbyA9IFBILkIudGljayBsb2dfaW5mbyBpblxuICAgIGxldCBfID1cbiAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmR1bXBfY29tcGxldGVfbG9nXG4gICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGxvZ19pbmZvXG4gICAgaW5cbiAgICBtYXRjaCBpbnN0cnVjdGlvbl9saXN0IHdpdGhcbiAgICB8IHQgOjogcSAtPlxuICAgICAgbGV0ICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIChibGFja2JvYXJkLCBpbnN0cnVjdGlvbl9saXN0LCBwcm9wYWdhdGVfbGlzdCwgYXNzaWduX3Jlc3VsdCkgKSA9XG4gICAgICAgIFBILmFwcGx5X2luc3RydWN0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgdCBxXG4gICAgICAgICAgcHJvcGFnYXRlX2xpc3RcbiAgICAgIGluXG4gICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBhc3NpZ25fcmVzdWx0IHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgYXNzaWduX3Jlc3VsdClcbiAgICAgIGVsc2VcbiAgICAgICAgcHJvcGFnYXRlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluc3RydWN0aW9uX2xpc3RcbiAgICAgICAgICBwcm9wYWdhdGVfbGlzdCBibGFja2JvYXJkXG4gICAgfCBbXSAtPlxuICAgICAgKG1hdGNoIHByb3BhZ2F0ZV9saXN0IHdpdGhcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIGxldCAoIGVycm9yLFxuICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgKGJsYWNrYm9hcmQsIGluc3RydWN0aW9uX2xpc3QsIHByb3BhZ2F0ZV9saXN0LCBhc3NpZ25fcmVzdWx0KSApID1cbiAgICAgICAgICBQSC5wcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCB0XG4gICAgICAgICAgICBpbnN0cnVjdGlvbl9saXN0IHFcbiAgICAgICAgaW5cbiAgICAgICAgaWYgUEguQi5pc19mYWlsZWQgYXNzaWduX3Jlc3VsdCB0aGVuXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgYXNzaWduX3Jlc3VsdClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBpbnN0cnVjdGlvbl9saXN0XG4gICAgICAgICAgICBwcm9wYWdhdGVfbGlzdCBibGFja2JvYXJkXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIFBILkIuc3VjY2VzcykpXG5cbiAgdHlwZSBjaG9pY2VzID0ge1xuICAgIGN1cnJlbnQ6IFBILnVwZGF0ZV9vcmRlciBsaXN0O1xuICAgIHN0YWNrOiBQSC51cGRhdGVfb3JkZXIgbGlzdCBsaXN0O1xuICB9XG5cbiAgbGV0IGJyYW5jaF9jaG9pY2VfbGlzdCBjaG9pY2VfbGlzdCA9XG4gICAgeyBjdXJyZW50ID0gW107IHN0YWNrID0gY2hvaWNlX2xpc3QuY3VycmVudCA6OiBjaG9pY2VfbGlzdC5zdGFjayB9XG5cbiAgbGV0IHVwZGF0ZV9jdXJyZW50IGNob2ljZV9saXN0IGxpc3QgPSB7IGNob2ljZV9saXN0IHdpdGggY3VycmVudCA9IGxpc3QgfVxuXG4gIGxldCBwb3BfbmV4dF9jaG9pY2UgcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIHN0YWNrID1cbiAgICBtYXRjaCBzdGFjay5jdXJyZW50IHdpdGhcbiAgICB8IHQgOjogcSAtPiBlcnJvciwgKHQsIHsgc3RhY2sgd2l0aCBjdXJyZW50ID0gcSB9KVxuICAgIHwgW10gLT5cbiAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJFbXB0eSBjaG9pY2Ugc3RhY2tcIlxuICAgICAgICAoRmFpbHVyZSBcIkVtcHR5IGNob2ljZSBsaXN0IGluIHBvcF9uZXh0X2Nob2ljZVwiKVxuICAgICAgICAoUEguZHVtbXlfdXBkYXRlX29yZGVyLCBzdGFjaylcblxuICBsZXQgbm9fbW9yZV9jaG9pY2Ugc3RhY2sgPVxuICAgIG1hdGNoIHN0YWNrLmN1cnJlbnQgd2l0aFxuICAgIHwgW10gLT4gdHJ1ZVxuICAgIHwgXyAtPiBmYWxzZVxuXG4gIGxldCBiYWNrdHJhY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdCA9XG4gICAgbGV0IHJlYyBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3QgPVxuICAgICAgbWF0Y2ggY2hvaWNlX2xpc3QuY3VycmVudCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBjaG9pY2VfbGlzdC5zdGFjayB3aXRoXG4gICAgICAgIHwgW10gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgTm9uZSlcbiAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICBsZXQgY2hvaWNlX2xpc3QgPSB7IGN1cnJlbnQgPSB0OyBzdGFjayA9IHEgfSBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICAgICAgUEguQi5yZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3QpXG4gICAgICB8IF8gLT4gZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgU29tZSBjaG9pY2VfbGlzdClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUEguQi5yZXNldF9sYXN0X2JyYW5jaGluZyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBiYWNrdHJhY2tfYXV4IGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgY2hvaWNlX2xpc3RcblxuICBsZXQgZW1wdHlfY2hvaWNlX2xpc3QgPSB7IHN0YWNrID0gW107IGN1cnJlbnQgPSBbXSB9XG5cbiAgbGV0IHJlYyBzdWJsaXN0IGwgbCcgPVxuICAgIG1hdGNoIGwsIGwnIHdpdGhcbiAgICB8IFtdLCBfIC0+IHRydWVcbiAgICB8IF8sIFtdIC0+IGZhbHNlXG4gICAgfCBoIDo6IHQsIGgnIDo6IHQnIHdoZW4gaCA9IGgnIC0+IHN1Ymxpc3QgdCB0J1xuICAgIHwgXywgX2gnIDo6IHQnIC0+IHN1Ymxpc3QgbCB0J1xuXG4gIGxldCBzb3J0X3N0b3JpZXNfYWNjb3JkaW5nX3RvX2xlbmd0aCBsID1cbiAgICBMaXN0LnJldl9tYXAgZnN0XG4gICAgICAoTGlzdC5zb3J0XG4gICAgICAgICAoZnVuIChfLCBhKSAoXywgYikgLT4gY29tcGFyZSBiIGEpXG4gICAgICAgICAoTGlzdC5yZXZfbWFwIChmdW4gYSAtPiBhLCBMaXN0Lmxlbmd0aCBhKSBsKSlcblxuICBsZXQgZmlsdGVyX291dF9ub25fbWluaW1hbF9zdG9yeSBsID1cbiAgICBsZXQgcmVjIGF1eCB0b192aXNpdCBnb29kb25lcyA9XG4gICAgICBtYXRjaCB0b192aXNpdCB3aXRoXG4gICAgICB8IFtdIC0+IExpc3QucmV2IGdvb2RvbmVzXG4gICAgICB8IGggOjogdCAtPlxuICAgICAgICBhdXhcbiAgICAgICAgICAoTGlzdC5maWx0ZXIgKGZ1biBzdG9yeSAtPiBub3QgKHN1Ymxpc3QgaCBzdG9yeSkpIHQpXG4gICAgICAgICAgKGggOjogTGlzdC5maWx0ZXIgKGZ1biBzdG9yeSAtPiBub3QgKHN1Ymxpc3QgaCBzdG9yeSkpIGdvb2RvbmVzKVxuICAgIGluXG4gICAgYXV4IChzb3J0X3N0b3JpZXNfYWNjb3JkaW5nX3RvX2xlbmd0aCBsKSBbXVxuXG4gIGxldCByZWMgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICBzdG9yeV9saXN0ID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBib29sID1cbiAgICAgIFBILkIuaXNfbWF4aW1hbF9zb2x1dGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBib29sIHRoZW4gKFxuICAgICAgKCogU1VDQ0VTUyAqKVxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgIFBILkIudHJhbnNsYXRlX2JsYWNrYm9hcmQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgaW5cbiAgICAgIGlmIFBILkIuUEIuQ0kuUG8uSy5ILmdldF9hbGxfc3Rvcmllc19wZXJfb2JzIHBhcmFtZXRlciB0aGVuIChcbiAgICAgICAgbGV0IHN0b3J5X2xpc3QgPSBsaXN0IDo6IHN0b3J5X2xpc3QgaW5cbiAgICAgICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICAgICAgaWYgY2hvaWNlX2xpc3QuY3VycmVudCA8PiBbXSB0aGVuXG4gICAgICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fXG4gICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgIFwiSW4gY2FzZSBvZiBzdWNjZXNzLCB0aGUgY3VycmVudCBsaXN0IG9mIGNob2ljZXMgc2hvdWxkIGJlIFxcXG4gICAgICAgICAgICAgICAgIGVtcHR5XCJcbiAgICAgICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICAgICAgXCJJbiBjYXNlIG9mIHN1Y2Nlc3MsIHRoZSBjdXJyZW50IGxpc3Qgb2YgY2hvaWNlcyBzaG91bGQgYmUgXFxcbiAgICAgICAgICAgICAgICAgIGVtcHR5XCIpICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsICgpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBjaG9pY2VfbGlzdCA9XG4gICAgICAgICAgbWF0Y2ggY2hvaWNlX2xpc3Quc3RhY2sgd2l0aFxuICAgICAgICAgIHwgW10gLT4gY2hvaWNlX2xpc3RcbiAgICAgICAgICB8IHQgOjogcSAtPiB7IGN1cnJlbnQgPSB0OyBzdGFjayA9IHEgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgY2hvaWNlX2xpc3QpID1cbiAgICAgICAgICBiYWNrdHJhY2sgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuICAgICAgICBpblxuICAgICAgICBtYXRjaCBjaG9pY2VfbGlzdCB3aXRoXG4gICAgICAgIHwgU29tZSBjaG9pY2VfbGlzdCAtPlxuICAgICAgICAgIGl0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBjaG9pY2VfbGlzdFxuICAgICAgICAgICAgc3RvcnlfbGlzdCAoKih1cGRhdGVfZmlyc3Rfc3RvcnkgZmlyc3Rfc3RvcnkgbGlzdCkqKVxuICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICBQSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICBcIkZBSUxcIiAhUHJpb3JpdHkubl9zdG9yeSAhUHJpb3JpdHkubl9icmFuY2ggYmxhY2tib2FyZFxuICAgICAgICAgIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgc3RvcnlfbGlzdClcbiAgICAgICkgZWxzZVxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBbIGxpc3QgXSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBjaG9pY2VfbGlzdCA9XG4gICAgICAgIGlmIG5vX21vcmVfY2hvaWNlIGNob2ljZV9saXN0IHRoZW4gKFxuICAgICAgICAgIGxldCBlcnJvciwgX2xvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgIFBILm5leHRfY2hvaWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCB1cGRhdGVfY3VycmVudCBjaG9pY2VfbGlzdCBsaXN0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yLCBjaG9pY2VfbGlzdFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCAoY2hvaWNlLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICBwb3BfbmV4dF9jaG9pY2UgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgY2hvaWNlX2xpc3RcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0KSA9XG4gICAgICAgIHByb3BhZ2F0ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBbIGNob2ljZSBdIFtdIGJsYWNrYm9hcmRcbiAgICAgIGluXG4gICAgICBpZiBQSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBjaG9pY2VfbGlzdCkgPVxuICAgICAgICAgIGJhY2t0cmFjayBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgIGluXG4gICAgICAgIG1hdGNoIGNob2ljZV9saXN0IHdpdGhcbiAgICAgICAgfCBTb21lIGNob2ljZV9saXN0IC0+XG4gICAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGNob2ljZV9saXN0XG4gICAgICAgICAgICBzdG9yeV9saXN0XG4gICAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBzdG9yeV9saXN0KVxuICAgICAgKSBlbHNlXG4gICAgICAgIGl0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgIChicmFuY2hfY2hvaWNlX2xpc3QgY2hvaWNlX2xpc3QpXG4gICAgICAgICAgc3RvcnlfbGlzdFxuICAgIClcblxuICBsZXQgZGV0ZWN0X2luZGVwZW5kZW50X2V2ZW50cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgICBsaXN0X2VpZCA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKF9ibGFja2JvYXJkLCBldmVudHNfdG9fa2VlcCkgPVxuICAgICAgUEguQi5jdXQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBsaXN0X2VpZFxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudHNfdG9fa2VlcFxuXG4gIGxldCB0cmFuc2xhdGUgX3BhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3QgPVxuICAgIGxldCBsaXN0JyA9XG4gICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgKGZ1biBrIC0+XG4gICAgICAgICAgKCBQSC5CLmdldF9ldmVudCBibGFja2JvYXJkIChQSC5CLlBCLmRlY19zdGVwX2lkIGspLFxuICAgICAgICAgICAgUEguQi5zaWRlX2VmZmVjdF9vZl9ldmVudCBibGFja2JvYXJkIChQSC5CLlBCLmRlY19zdGVwX2lkIGspICkpXG4gICAgICAgIChMaXN0LnJldiBsaXN0KVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSBMaXN0LnJldl9tYXAgZnN0IChMaXN0LnJldiBsaXN0JykgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChsaXN0LCBsaXN0JylcblxuICBsZXQgdHJhbnNsYXRlX3Jlc3VsdCByZXN1bHQgPSBMaXN0LnJldl9tYXAgZnN0IEBAIExpc3QucmV2IHJlc3VsdFxuXG4gIGxldCBjbGVhbiBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsb2dfaW5mbyBibGFja2JvYXJkID1cbiAgICBQSC5CLnJlc2V0X2luaXQgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgbG9nX2luZm8gYmxhY2tib2FyZFxuXG4gIGxldCBmaWx0ZXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZCBldmVudHNfdG9fa2VlcCA9XG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgZXZlbnRzX3RvX3JlbW92ZSA9XG4gICAgICBsZXQgbl9ldmVudHMgPSBQSC5CLmdldF9uX2VpZCBibGFja2JvYXJkIGluXG4gICAgICBsZXQgcmVjIGF1eCBrIGxpc3Qgc29sID1cbiAgICAgICAgaWYgayA9IG5fZXZlbnRzIHRoZW5cbiAgICAgICAgICBMaXN0LnJldiBzb2xcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGlmIFBILkIuUEIuaW50X29mX3N0ZXBfaWQgdCA9IGsgdGhlblxuICAgICAgICAgICAgICBhdXggKGsgKyAxKSBxIHNvbFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBhdXggKGsgKyAxKSBsaXN0IChQSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IGsgOjogc29sKVxuICAgICAgICAgIHwgW10gLT4gYXV4IChrICsgMSkgbGlzdCAoUEguQi5QQi5zdGVwX2lkX29mX2ludCBrIDo6IHNvbClcbiAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGF1eCAwIGV2ZW50c190b19rZWVwIFtdXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBmb3JiaWRkZW5fZXZlbnRzID1cbiAgICAgIFBILmZvcmJpZGRlbl9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRzX3RvX3JlbW92ZVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIGxvZ19zdGVwcyB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgIFwiU3RhcnQgY3V0dGluZ1wiXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgaW5cbiAgICAgICAgKClcbiAgICAgIClcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBfb3V0cHV0KSA9XG4gICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZm9yYmlkZGVuX2V2ZW50cyBbXSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmRcblxuICBsZXQgc3ViIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRvX2tlZXAgPVxuICAgIGxldCBsb2dfaW5mbyA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X3N0ZXBfdGltZSBsb2dfaW5mbyBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgICAgUEguQi5pbXBvcnQgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdG9fa2VlcFxuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuc2V0X2NvbmN1cnJlbnRfZXZlbnRfZGVsZXRpb25fdGltZSBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGxvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfc3RlcF90aW1lIGxvZ19pbmZvIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkXG5cbiAgbGV0IGNvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGJsYWNrYm9hcmQgbGlzdF9vcmRlciA9XG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBQSC5CLmJyYW5jaCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPVxuICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5zZXRfY29uY3VycmVudF9ldmVudF9kZWxldGlvbl90aW1lIGxvZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLnNldF9zdGVwX3RpbWUgbG9nX2luZm8gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbG9nX3N0ZXBzIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCJBZnRlciBDYXVzYWwgQ3V0ICAlaVwiXG4gICAgICAgICAgICAoUEguQi5nZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgIGluXG4gICAgICAgICgpXG4gICAgICApXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tib2FyZCwgb3V0cHV0KSA9XG4gICAgICBwcm9wYWdhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdF9vcmRlciBbXSBibGFja2JvYXJkXG4gICAgaW5cbiAgICBpZiBQSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQWZ0ZXIgb2JzZXJ2YWJsZSBwcm9wYWdhdGlvbiAgRkFJTCAlaSBALlwiXG4gICAgICAgICAgICAgIChQSC5CLmdldF9uX3VucmVzb2x2ZWRfZXZlbnRzIGJsYWNrYm9hcmQpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChQSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICBpblxuICAgICAgICAgICgpXG4gICAgICAgIClcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2JvYXJkLCBvdXRwdXQsIFtdKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBpZiBsb2dfc3RlcHMgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIFwiQWZ0ZXIgb2JzZXJ2YWJsZSBwcm9wYWdhdGlvbiAgJWkgQC5cIlxuICAgICAgICAgICAgICAoUEguQi5nZXRfbl91bnJlc29sdmVkX2V2ZW50cyBibGFja2JvYXJkKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSAoUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgaW5cbiAgICAgICAgICAoKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGJvb2wsIHN0cmluZyA9XG4gICAgICAgIG1hdGNoIHBhcmFtZXRlci5QSC5CLlBCLkNJLlBvLksuSC5jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgd2l0aFxuICAgICAgICB8IE5vbmUgfCBTb21lIFN0b3J5X2pzb24uQ2F1c2FsIC0+IGZhbHNlLCBcIlwiXG4gICAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgICAoIFBhcmFtZXRlci5kdW1wX2dyaWRfYWZ0ZXJfYnJhbmNoaW5nX2R1cmluZ193ZWFrX2NvbXByZXNzaW9uLFxuICAgICAgICAgICAgUGFyYW1ldGVyLnhsc3dlYWtGaWxlTmFtZSApXG4gICAgICAgIHwgU29tZSBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgICAgICAgICggUGFyYW1ldGVyLmR1bXBfZ3JpZF9hZnRlcl9icmFuY2hpbmdfZHVyaW5nX3N0cm9uZ19jb21wcmVzc2lvbixcbiAgICAgICAgICAgIFBhcmFtZXRlci54bHNzdHJvbmdGaWxlTmFtZSApXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gUHJpb3JpdHkubl9icmFuY2ggOj0gMSArICghUHJpb3JpdHkubl9icmFuY2ggKyAxKSBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgIGlmIGJvb2wgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgUEguQi5leHBvcnRfYmxhY2tib2FyZF90b194bHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgc3RyaW5nICFQcmlvcml0eS5uX3N0b3J5ICFQcmlvcml0eS5uX2JyYW5jaCBibGFja2JvYXJkXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm9cbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgICBpblxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIHN0b3J5X2xpc3QpID1cbiAgICAgICAgaXRlciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGVtcHR5X2Nob2ljZV9saXN0IFtdXG4gICAgICBpblxuICAgICAgbGV0IG91dHB1dCA9XG4gICAgICAgIG1hdGNoIHN0b3J5X2xpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IFBILkIuZmFpbFxuICAgICAgICB8IF8gLT4gUEguQi5zdWNjZXNzXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIChibGFja2JvYXJkLCBvdXRwdXQsIGZpbHRlcl9vdXRfbm9uX21pbmltYWxfc3RvcnkgKExpc3QucmV2IHN0b3J5X2xpc3QpKVxuICAgICAgKVxuICAgIClcbmVuZFxuIiwiKCoqXG4gICogYmxhY2tfbGlzdC5tbFxuICAqXG4gICogQ3JlYXRpb246ICAgICAgICAgICAgICAgICAgICAgIDwyMDE2LTAyLTE0IDEwOjI5OjQyIGZlcmV0PlxuICAqIExhc3QgbW9kaWZpY2F0aW9uOiBUaW1lLXN0YW1wOiA8MjAxNi0wMi0xNCAxMDo1MDo1NyBmZXJldD5cbiAgKlxuICAqIENhdXNhbCBmbG93IGNvbXByZXNzaW9uOiBhIG1vZHVsZSBmb3IgS2FTaW1cbiAgKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBbnRpcXVlLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNlxuICAqICBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW5cbiAgKiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5XG4gICogR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAqKVxuXG5tb2R1bGUgdHlwZSBFdmVudCA9IHNpZ1xuICB0eXBlIGV2ZW50XG4gIHR5cGUgZWlkXG4gIHR5cGUgJ2EgdFxuXG4gIHZhbCBrZXlfb2ZfZXZlbnQgOiBldmVudCAtPiBlaWQgb3B0aW9uXG4gIHZhbCBpbml0IDogaW50IC0+ICdhIC0+ICdhIHRcbiAgdmFsIHNldCA6ICdhIHQgLT4gZWlkIC0+ICdhIC0+ICdhIHRcbiAgdmFsIGdldCA6ICdhIHQgLT4gZWlkIC0+ICdhXG5lbmRcblxubW9kdWxlIHR5cGUgQmxhY2tsaXN0ID0gc2lnXG4gIHR5cGUgdFxuXG4gIG1vZHVsZSBFdmVudCA6IEV2ZW50XG5cbiAgdmFsIGluaXQgOiBpbnQgLT4gdFxuICB2YWwgYmxhY2tfbGlzdCA6IEV2ZW50LmV2ZW50IC0+IHQgLT4gdFxuICB2YWwgaXNfYmxhY2tfbGlzdGVkIDogRXZlbnQuZXZlbnQgLT4gdCAtPiBib29sXG5lbmRcblxubW9kdWxlIE1ha2UgPVxuZnVuY3RvclxuICAoRXZlbnQgOiBFdmVudClcbiAgLT5cbiAgc3RydWN0XG4gICAgbW9kdWxlIEV2ZW50ID0gRXZlbnRcblxuICAgIHR5cGUgdCA9IGJvb2wgRXZlbnQudFxuXG4gICAgbGV0IGluaXQgbiA9IEV2ZW50LmluaXQgbiBmYWxzZVxuXG4gICAgbGV0IGJsYWNrX2xpc3QgZXZlbnQgdCA9XG4gICAgICBtYXRjaCBFdmVudC5rZXlfb2ZfZXZlbnQgZXZlbnQgd2l0aFxuICAgICAgfCBOb25lIC0+IHRcbiAgICAgIHwgU29tZSBlaWQgLT5cbiAgICAgICAgbGV0IHQgPSBFdmVudC5zZXQgdCBlaWQgdHJ1ZSBpblxuICAgICAgICB0XG5cbiAgICBsZXQgaXNfYmxhY2tfbGlzdGVkIGV2ZW50IHQgPVxuICAgICAgbWF0Y2ggRXZlbnQua2V5X29mX2V2ZW50IGV2ZW50IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBmYWxzZVxuICAgICAgfCBTb21lIGVpZCAtPiBFdmVudC5nZXQgdCBlaWRcbiAgZW5kXG4iLCIoKipcbiAgKiBkYWcubWxcbiAgKlxuICAqIERhZyBjb21wdXRhdGlvbiBhbmQgY2Fub25pY2FsIGZvcm1cbiAgKlxuICAqIErDqXLDtG1lIEZlcmV0LCBwcm9qZXQgQWJzdHJhY3Rpb24sIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzIERpZGVyb3QsIENOUlNcbiAgKlxuICAqIENyZWF0aW9uOiAyMi8wMy8yMDEyXG4gICogTGFzdCBtb2R4aWZpY2F0aW9uOiAxOC8wNi8yMDEzXG4gICogKlxuICAqIFNvbWUgcGFyYW1ldGVycyByZWZlcmVuY2VzIGNhbiBiZSB0dW5lZCB0aGFua3MgdG8gY29tbWFuZC1saW5lIG9wdGlvbnNcbiAgKiBvdGhlciB2YXJpYWJsZXMgaGFzIHRvIGJlIHNldCBiZWZvcmUgY29tcGlsYXRpb25cbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMyBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlXG4gICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkXG4gICogdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbm1vZHVsZSBTID0gR2VuZXJpY19icmFuY2hfYW5kX2N1dF9zb2x2ZXIuU29sdmVyXG5cbmxldCB3YXJuIHBhcmFtZXRlciBlcnJvciBwb3MgPyhtZXNzYWdlID0gXCJcIikgZXhuIGRlZmF1bHQgPVxuICBFeGNlcHRpb24ud2FyblxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgIGVycm9yIHBvcyB+bWVzc2FnZSBleG4gZGVmYXVsdFxuXG5tb2R1bGUgdHlwZSBTdG9yeVRhYmxlID0gc2lnXG4gIHR5cGUgdGFibGVcblxuICB2YWwgZm9sZF90YWJsZSA6XG4gICAgKCAoIFRyYWNlLnQsXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCxcbiAgICAgICAgJ2EsXG4gICAgICAgICdhIClcbiAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudGVybmFyeSxcbiAgICAgIHRhYmxlLFxuICAgICAgJ2EsXG4gICAgICAnYSApXG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC50ZXJuYXJ5XG5cbiAgdmFsIGluaXRfdGFibGUgOiB0YWJsZSBTLlBILkIuUEIuQ0kuUG8uSy5ILnplcm9hcnlcbiAgdmFsIGNvdW50X3N0b3JpZXMgOiB0YWJsZSAtPiBpbnRcblxuICB2YWwgYWRkX3N0b3J5IDpcbiAgICAoIENhdXNhbC5ncmlkLFxuICAgICAgVHJhY2UudCxcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdCxcbiAgICAgIHRhYmxlLFxuICAgICAgdGFibGUgKVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucXVhdGVybmFyeVxuXG4gIHZhbCBoYXNoX2xpc3QgOiAodGFibGUsIHRhYmxlKSBTLlBILkIuUEIuQ0kuUG8uSy5ILnVuYXJ5XG5cbiAgdmFsIHNvcnRfbGlzdCA6XG4gICAgKCB0YWJsZSxcbiAgICAgIChUcmFjZS50XG4gICAgICAqIENhdXNhbC5ncmlkXG4gICAgICAqIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMubG9nX2luZm8gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnQgbGlzdClcbiAgICAgIGxpc3QgKVxuICAgIFMuUEguQi5QQi5DSS5Qby5LLkgudW5hcnlcbmVuZFxuXG5tb2R1bGUgSCA9IFMuUEguQi5QQi5DSS5Qby5LLkhcbm1vZHVsZSBBID0gTW9kcy5EeW5BcnJheVxuXG50eXBlIGxhYmVsID0gc3RyaW5nXG50eXBlIG5vZGVfa2luZCA9IE9CUyB8IFBFUlQgfCBSVUxFIHwgSU5JVCB8IEZJQ1RJVElPVVNcbnR5cGUgbm9kZSA9IG5vZGVfa2luZCAqIGxhYmVsXG5cbnR5cGUgZ3JhcGggPSB7XG4gIHJvb3Q6IGludDtcbiAgbGFiZWxzOiBub2RlIEEudDtcbiAgcHJlZDogaW50IGxpc3QgQS50O1xuICBjb25mbGljdF9wcmVkOiBpbnQgbGlzdCBBLnQ7XG59XG5cbmxldCBkdW1teV9ncmFwaCA9XG4gIHtcbiAgICByb290ID0gMDtcbiAgICBsYWJlbHMgPSBBLm1ha2UgMSAoRklDVElUSU9VUywgXCJcIik7XG4gICAgcHJlZCA9IEEubWFrZSAxIFtdO1xuICAgIGNvbmZsaWN0X3ByZWQgPSBBLm1ha2UgMSBbXTtcbiAgfVxuXG50eXBlIHBvc2l0aW9uID0gaW50XG50eXBlIGtleSA9IEZyZXNoIG9mIG5vZGUgfCBGb3JtZXIgb2YgcG9zaXRpb24gfCBTdG9wXG50eXBlIGNhbm9uaWNhbF9mb3JtID0ga2V5IGxpc3RcbnR5cGUgcHJlaGFzaCA9IChub2RlICogaW50KSBsaXN0XG5cbmxldCBfZHVtbXlfY2Fubm9uaWNhbF9mb3JtID0gW11cbmxldCBfZHVtbXlfcHJlaGFzaCA9IFtdXG5cbmxldCBfcHJpbnRfc3RvcnlfaW5mbyBsb2dnZXIgX3BhcmFtZXRlciBqc29uID1cbiAgKCpMaXN0Lml0ZXJcbiAgICAoZnVuXG4gICAgICBzdG9yeV9pbmZvIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICBsb2dnZXJcbiAgICAgICAgICBcImlkOiVpLCB0aW1lOiVmLCBldmVudDolaVwiXG4gICAgICAgICAgc3RvcnlfaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWRcbiAgICAgICAgICBzdG9yeV9pbmZvLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV90aW1lXG4gICAgICAgICAgc3RvcnlfaW5mby5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfZXZlbnRcbiAgICAgIGluXG4gICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyXG4gICAgKVxuICAgIHN0b3J5X2luZm9fbGlzdFxuICAqKVxuICBsZXQgY2hhbm5lbF9vcHQgPSBMb2dnZXJzLmNoYW5uZWxfb2ZfbG9nZ2VyIGxvZ2dlciBpblxuICBsZXQgKCkgPVxuICAgIG1hdGNoIGNoYW5uZWxfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gKClcbiAgICB8IFNvbWUgY2hhbm5lbCAtPlxuICAgICAgbGV0ICgpID0gWW9qc29uLkJhc2ljLnRvX2NoYW5uZWwgY2hhbm5lbCBqc29uIGluXG4gICAgICAoKVxuICBpblxuICBsZXQgKCkgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyIGluXG4gICgpXG5cbmxldCBwcmludF9ncmFwaCBsb2dnZXIgcGFyYW1ldGVyIF9oYW5kbGVyIGVycm9yIGlkIHN0b3J5X2luZm8gZ3JhcGggPVxuICBsZXQgbG9nZ2VyID0gR3JhcGhfbG9nZ2Vyc19zaWcuZXh0ZW5kX2xvZ2dlciBsb2dnZXIgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vyc19zaWcucmVmcmVzaF9pZCBsb2dnZXIgaW5cbiAgbGV0ICgpID0gR3JhcGhfbG9nZ2Vycy5wcmludF9ncmFwaF9wcmVhbWJsZSBsb2dnZXIgXCJzdG9yeVwiIGluXG4gIGxldCAoKSA9XG4gICAgQS5pdGVyaVxuICAgICAgKGZ1biBpIChub2RlX2tpbmQsIGopIC0+XG4gICAgICAgIGlmIGkgPSAwICYmIGogPSBcIlwiIHRoZW5cbiAgICAgICAgICAoKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgZGlyZWN0aXZlcyA9XG4gICAgICAgICAgICBtYXRjaCBub2RlX2tpbmQgd2l0aFxuICAgICAgICAgICAgfCBPQlMgLT4gWyBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5SZWQgXVxuICAgICAgICAgICAgfCBQRVJUIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5HcmVlbjtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5TaGFwZSBHcmFwaF9sb2dnZXJzX3NpZy5JbnZob3VzZTtcbiAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgfCBSVUxFIC0+XG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBHcmFwaF9sb2dnZXJzX3NpZy5MaWdodFNreUJsdWU7XG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSW52aG91c2U7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHwgSU5JVCAtPlxuICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgR3JhcGhfbG9nZ2Vyc19zaWcuR3JlZW47XG4gICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgR3JhcGhfbG9nZ2Vyc19zaWcuSG91c2U7XG4gICAgICAgICAgICAgIF1cbiAgICAgICAgICAgIHwgRklDVElUSU9VUyAtPlxuICAgICAgICAgICAgICBbIEdyYXBoX2xvZ2dlcnNfc2lnLlNoYXBlIEdyYXBoX2xvZ2dlcnNfc2lnLkludmlzaWJsZSBdXG4gICAgICAgICAgaW5cbiAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X25vZGUgbG9nZ2VyXG4gICAgICAgICAgICB+ZGlyZWN0aXZlczooR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgaiA6OiBkaXJlY3RpdmVzKVxuICAgICAgICAgICAgKHN0cmluZ19vZl9pbnQgaSlcbiAgICAgICAgKSlcbiAgICAgIGdyYXBoLmxhYmVsc1xuICBpblxuICBsZXQgKCkgPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gaiAtPlxuICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlciAoc3RyaW5nX29mX2ludCBqKSAoc3RyaW5nX29mX2ludCBpKSlcbiAgICAgICAgICBsKVxuICAgICAgZ3JhcGgucHJlZFxuICBpblxuICBsZXQgKCkgPVxuICAgIEEuaXRlcmlcbiAgICAgIChmdW4gaSBsIC0+XG4gICAgICAgIExpc3QuaXRlclxuICAgICAgICAgIChmdW4gaiAtPlxuICAgICAgICAgICAgR3JhcGhfbG9nZ2Vycy5wcmludF9lZGdlIGxvZ2dlclxuICAgICAgICAgICAgICB+ZGlyZWN0aXZlczpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MaW5lU3R5bGUgR3JhcGhfbG9nZ2Vyc19zaWcuRG90dGVkO1xuICAgICAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQXJyb3dIZWFkIEdyYXBoX2xvZ2dlcnNfc2lnLlRlZTtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIChzdHJpbmdfb2ZfaW50IGkpIChzdHJpbmdfb2ZfaW50IGopKVxuICAgICAgICAgIGwpXG4gICAgICBncmFwaC5jb25mbGljdF9wcmVkXG4gIGluXG4gIGxldCBjdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyID1cbiAgICBtYXRjaCBILmdldF9jdXJyZW50X2NvbXByZXNzaW9uX21vZGUgcGFyYW1ldGVyIHdpdGhcbiAgICB8IE5vbmUgLT4gU3RvcnlfanNvbi5DYXVzYWxcbiAgICB8IFNvbWUgeCAtPiB4XG4gIGluXG4gIGxldCByZXN1bHQgPVxuICAgIHtcbiAgICAgIFN0b3J5X2pzb24ubG9nX2luZm8gPSBzdG9yeV9pbmZvO1xuICAgICAgU3RvcnlfanNvbi5zdG9yeV9tb2RlID0gY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlcjtcbiAgICAgIFN0b3J5X2pzb24uc3RvcnkgPVxuICAgICAgICBTdG9yeV9qc29uLk5ld1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIFN0b3J5X2pzb24uZ3JhcGggPSBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaF9vZl9sb2dnZXIgbG9nZ2VyO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5pZDtcbiAgICAgICAgICB9O1xuICAgIH1cbiAgaW5cbiAgbGV0ICgpID0gSC5wdXNoX2pzb24gcGFyYW1ldGVyIChTdG9yeV9qc29uLlN0b3J5IHJlc3VsdCkgaW5cbiAgZXJyb3JcblxubGV0IHByaW50X2VsdCBsb2cgZWx0ID1cbiAgbWF0Y2ggZWx0IHdpdGhcbiAgfCBTdG9wIC0+XG4gICAgbGV0ICgpID0gTG9nZ2Vycy5mcHJpbnRmIGxvZyBcIlNUT1BcIiBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgfCBGb3JtZXIgaSAtPlxuICAgIGxldCAoKSA9IExvZ2dlcnMuZnByaW50ZiBsb2cgXCJQb2ludGVyICVpXCIgaSBpblxuICAgIExvZ2dlcnMucHJpbnRfbmV3bGluZSBsb2dcbiAgfCBGcmVzaCAoXywgcykgLT5cbiAgICBsZXQgKCkgPSBMb2dnZXJzLmZwcmludGYgbG9nIFwiRXZlbnQgJXNcIiBzIGluXG4gICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIGxvZ1xuXG5sZXQgX3ByaW50X2Nhbm9uaWNhbF9mb3JtIHBhcmFtZXRlciBfaGFuZGxlciBlcnJvciBkYWcgPVxuICBsZXQgXyA9IExpc3QuaXRlciAocHJpbnRfZWx0IChILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpKSBkYWcgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgZXJyb3JcblxubGV0IF9wcmludF9wcmVoYXNoIHBhcmFtZXRlciBfaGFuZGxlciBlcnJvciByZXByZXNlbnRhdGlvbiA9XG4gIGxldCBfID1cbiAgICBMaXN0Lml0ZXJcbiAgICAgIChmdW4gKChfLCBiKSwgaSkgLT5cbiAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXIpIFwiJXM6JWksXCIgYiBpKVxuICAgICAgcmVwcmVzZW50YXRpb25cbiAgaW5cbiAgbGV0IF8gPSBMb2dnZXJzLnByaW50X25ld2xpbmUgKEguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcikgaW5cbiAgZXJyb3JcblxubGV0IGxhYmVsIGhhbmRsZXIgPSBmdW5jdGlvblxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuUlVMRSBpKSAtPiBILnN0cmluZ19vZl9ydWxlX2lkIGhhbmRsZXIgaVxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuSU5JVCBbIGkgXSkgLT4gSC5zdHJpbmdfb2ZfYWdlbnRfaWQgaGFuZGxlciBpXG4gIHwgQ2F1c2FsLkVWRU5UICgoVHJhY2UuSU5JVCBfIHwgVHJhY2UuUEVSVCBfKSBhcyB4KSAtPlxuICAgIEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgKFRyYWNlLnByaW50X2V2ZW50X2tpbmQgfmVudjpoYW5kbGVyLkguZW52KSB4XG4gIHwgQ2F1c2FsLk9CUyBuYW1lIC0+IG5hbWVcblxubGV0IGtpbmQgbm9kZSA9XG4gIG1hdGNoIG5vZGUgd2l0aFxuICB8IENhdXNhbC5FVkVOVCAoVHJhY2UuSU5JVCBfKSAtPiBJTklUXG4gIHwgQ2F1c2FsLkVWRU5UIChUcmFjZS5SVUxFIF8pIC0+IFJVTEVcbiAgfCBDYXVzYWwuRVZFTlQgKFRyYWNlLlBFUlQgXykgLT4gUEVSVFxuICB8IENhdXNhbC5PQlMgXyAtPiBPQlNcblxubGV0IGNvbXBhcmVfZWx0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IFN0b3AsIFN0b3AgLT4gMFxuICB8IFN0b3AsIF8gLT4gLTFcbiAgfCBfLCBTdG9wIC0+IDFcbiAgfCBGb3JtZXIgaSwgRm9ybWVyIGogLT4gY29tcGFyZSBpIGpcbiAgfCBGb3JtZXIgXywgXyAtPiAtMVxuICB8IF8sIEZvcm1lciBfIC0+IDFcbiAgfCBGcmVzaCBzLCBGcmVzaCBzJyAtPiBjb21wYXJlIHMgcydcblxubGV0IHF1aWNrX2NvbXBhcmUgZyB0MSB0MiA9IGNvbXBhcmVfZWx0IChnIHQxKSAoZyB0MilcblxubGV0IHJlYyBhdXggY29tcGFyZV9lbHQgbDEgbDIgPVxuICBtYXRjaCBsMSwgbDIgd2l0aFxuICB8IFtdLCBbXSAtPiAwXG4gIHwgW10sIF8gLT4gLTFcbiAgfCBfLCBbXSAtPiAxXG4gIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgIGxldCBjbXAgPSBjb21wYXJlX2VsdCB0IHQnIGluXG4gICAgaWYgY21wID0gMCB0aGVuXG4gICAgICBhdXggY29tcGFyZV9lbHQgcSBxJ1xuICAgIGVsc2VcbiAgICAgIGNtcFxuXG5sZXQgY29tcGFyZV9jYW5vbmljID0gYXV4IGNvbXBhcmVfZWx0XG5cbmxldCBjb21wYXJlX2Nhbm9uaWNfb3B0IHggeSA9XG4gIG1hdGNoIHgsIHkgd2l0aFxuICB8IE5vbmUsIE5vbmUgLT4gMFxuICB8IE5vbmUsIF8gLT4gLTFcbiAgfCBfLCBOb25lIC0+IDFcbiAgfCBTb21lIHgsIFNvbWUgeSAtPiBjb21wYXJlX2Nhbm9uaWMgeCB5XG5cbmxldCBjb21wYXJlX3ByZWhhc2ggPSBhdXggY29tcGFyZVxuXG5sZXQgZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuR3JhcGhfY29udmVyc2lvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBpZHMgPSBIYXNodGJsLmZvbGQgKGZ1biBrZXkgXyBsIC0+IGtleSA6OiBsKSBncmlkLkNhdXNhbC5mbG93IFtdIGluXG4gIGxldCBsYWJlbCA9IGxhYmVsIGhhbmRsZXIgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY29uZmlnID1cbiAgICBDYXVzYWwuY3V0XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWRzIGdyaWRcbiAgaW5cbiAgbWF0Y2ggTW9kcy5JbnRNYXAubWF4X2tleSBjb25maWcuQ2F1c2FsLnByZWNfMSB3aXRoXG4gIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIGR1bW15X2dyYXBoXG4gIHwgU29tZSBzaXplIC0+XG4gICAgbGV0IHN1Y2Nfc2l6ZSA9IHN1Y2Mgc2l6ZSBpblxuICAgIGxldCBsYWJlbHMgPSBBLm1ha2Ugc3VjY19zaXplIChGSUNUSVRJT1VTLCBcIlwiKSBpblxuICAgIGxldCBwcmVkID0gQS5tYWtlIHN1Y2Nfc2l6ZSBbXSBpblxuICAgIGxldCBjb25mbGljdF9wcmVkID0gQS5tYWtlIHN1Y2Nfc2l6ZSBbXSBpblxuICAgIGxldCAoKSA9XG4gICAgICBNb2RzLkludE1hcC5pdGVyXG4gICAgICAgIChmdW4gaSBhdG9tX2tpbmQgLT4gQS5zZXQgbGFiZWxzIGkgKGtpbmQgYXRvbV9raW5kLCBsYWJlbCBhdG9tX2tpbmQpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLmV2ZW50c19raW5kXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgTW9kcy5JbnRNYXAuaXRlclxuICAgICAgICAoZnVuIGkgcyAtPlxuICAgICAgICAgIGlmIE1vZHMuSW50U2V0LmlzX2VtcHR5IHMgdGhlblxuICAgICAgICAgICAgKClcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBBLnNldCBwcmVkIGkgKE1vZHMuSW50U2V0LmVsZW1lbnRzIHMpKVxuICAgICAgICBjb25maWcuQ2F1c2FsLnByZWNfMVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIE1vZHMuSW50TWFwLml0ZXJcbiAgICAgICAgKGZ1biBpIHMgLT5cbiAgICAgICAgICBpZiBNb2RzLkludFNldC5pc19lbXB0eSBzIHRoZW5cbiAgICAgICAgICAgICgpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgQS5zZXQgY29uZmxpY3RfcHJlZCBpIChNb2RzLkludFNldC5lbGVtZW50cyBzKSlcbiAgICAgICAgY29uZmlnLkNhdXNhbC5jb25mbGljdFxuICAgIGluXG4gICAgbGV0IHJvb3QgPSBzaXplIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5HcmFwaF9jb252ZXJzaW9uIE5vbmUgbG9nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyByb290OyBsYWJlbHM7IHByZWQ7IGNvbmZsaWN0X3ByZWQgfVxuXG5sZXQgY29uY2F0IGxpc3QxIGxpc3QyID1cbiAgbGV0IHJlYyBhdXggbGlzdDEgbGlzdDIgPVxuICAgIG1hdGNoIGxpc3QyIHdpdGhcbiAgICB8IFtdIC0+IGxpc3QxXG4gICAgfCB0IDo6IHEgLT4gYXV4ICh0IDo6IGxpc3QxKSBxXG4gIGluXG4gIGF1eCBsaXN0MiAoTGlzdC5yZXYgbGlzdDEpXG5cbmxldCBjb21wYXJlX25vZGUgKGEsIF8pIChiLCBfKSA9IGNvbXBhcmUgYSBiXG5cbmxldCBzbWFzaCBsID1cbiAgbGV0IHJlYyBhdXggbCBmb3JtZXIgd2VpZ2h0IG91dHB1dCA9XG4gICAgbWF0Y2ggbCB3aXRoXG4gICAgfCBbXSAtPiBMaXN0LnJldiAoKGZvcm1lciwgd2VpZ2h0KSA6OiBvdXRwdXQpXG4gICAgfCAodCwgd3QpIDo6IHEgd2hlbiB0ID0gZm9ybWVyIC0+IGF1eCBxIGZvcm1lciAod3QgKyB3ZWlnaHQpIG91dHB1dFxuICAgIHwgKHQsIHd0KSA6OiBxIC0+IGF1eCBxIHQgd3QgKChmb3JtZXIsIHdlaWdodCkgOjogb3V0cHV0KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBbXSAtPiBbXVxuICB8ICh0LCB3dCkgOjogcSAtPiBhdXggcSB0IHd0IFtdXG5cbmxldCBwcmVoYXNoIF9wYXJhbWV0ZXIgX2hhbmRsZXIgZXJyb3IgZ3JhcGggPVxuICAoIGVycm9yLFxuICAgIHNtYXNoXG4gICAgICAoTGlzdC5zb3J0IGNvbXBhcmVfbm9kZVxuICAgICAgICAgKGxldCBsID0gcmVmIFtdIGluXG4gICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgQS5pdGVyXG4gICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgRklDVElUSU9VUywgXyAtPiAoKVxuICAgICAgICAgICAgICAgIHwgKChPQlMgfCBQRVJUIHwgUlVMRSB8IElOSVQpLCBfKSBhcyBhIC0+IGwgOj0gKGEsIDEpIDo6ICFsKVxuICAgICAgICAgICAgICBncmFwaC5sYWJlbHNcbiAgICAgICAgICBpblxuICAgICAgICAgICFsKSkgKVxuXG5sZXQgY2Fub25pY2FsaXplIHBhcmFtZXRlciBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaCA9XG4gIGxldCBhc3NvID0gTW9kcy5JbnRNYXAuZW1wdHkgaW5cbiAgbGV0IGxhYmVsIGkgPSB0cnkgQS5nZXQgZ3JhcGgubGFiZWxzIGkgd2l0aCBfIC0+IEZJQ1RJVElPVVMsIFwiXCIgaW5cbiAgbGV0IHJlYyBwb3AgKGNhbmRpZGF0ZSA6IGtleSBsaXN0KSAodG9fYmVhdCA6IGtleSBsaXN0IG9wdGlvbikgPVxuICAgIG1hdGNoIGNhbmRpZGF0ZSwgdG9fYmVhdCB3aXRoXG4gICAgfCBbXSwgXyB8IF8sIE5vbmUgLT5cbiAgICAgIFNvbWUgdG9fYmVhdCAoKiBjYW5kaWRhdGUgaXMgYSBwcmVmaXggb2YgdG9fYmVhdCwgd2Ugb3V0cHV0IHRoZSBzdWZmaXggKilcbiAgICB8IF8gOjogXywgU29tZSBbXSAtPiBOb25lICgqIHRoZSBjYW5kaWRhdGUgaXMgd29yc2UgKilcbiAgICB8IHQgOjogcSwgU29tZSAodHIgOjogcXIpIC0+XG4gICAgICBsZXQgY21wID0gY29tcGFyZV9lbHQgdCB0ciBpblxuICAgICAgaWYgY21wIDwgMCB0aGVuXG4gICAgICAgIFNvbWUgTm9uZSAoKiB0aGUgY2FuZGlkYXRlIGlzIGJldHRlciAqKVxuICAgICAgZWxzZSBpZiBjbXAgPSAwIHRoZW5cbiAgICAgICAgcG9wIHEgKFNvbWUgcXIpXG4gICAgICAoKiB3ZSBkbyBub3Qga25vdywgd2UgbG9vayBmdXJ0aGVyICopXG4gICAgICBlbHNlXG4gICAgICAgIE5vbmVcbiAgICAoKiB0aGUgY2FuZGlkYXRlIGlzIHdvcnNlICopXG4gIGluXG4gIGxldCByZWMgdmlzaXQgKGkgOiBpbnQpIChtYXAgOiBpbnQgTW9kcy5JbnRNYXAudCkgKGZyZXNoX3BvcyA6IGludClcbiAgICAgICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKSA9XG4gICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBtYXAgd2l0aFxuICAgIHwgU29tZSBpIC0+XG4gICAgICAoKiB0aGUgbm9kZSBoYXMgYWxyZWFkeSBiZWVuIHNlZW4sIHdlIHB1dCBhIHBvaW50ZXIgKilcbiAgICAgICgqMCopXG4gICAgICAobWF0Y2ggcG9wIFsgRm9ybWVyIGkgXSB0b19iZWF0IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICAoKiB0byBiZWF0IGlzIGJldHRlciwgd2UgY3V0IHRoZSBjb25zdHJ1Y3Rpb24gKilcbiAgICAgICAgTm9uZVxuICAgICAgfCBTb21lIHRvX2JlYXQgLT5cbiAgICAgICAgKCogdG8gYmVhdCBtYXkgYmUgaW1wcm92ZWQsIHdlIGdvIG9uICopXG4gICAgICAgIFNvbWUgKFsgRm9ybWVyIGkgXSwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXQpKVxuICAgICgqMCopXG4gICAgfCBOb25lIC0+XG4gICAgICAoKiB0aGUgbm9kZSBpcyBzZWVuIGZvciB0aGUgZmlyc3QgdGltZSAqKVxuICAgICAgbGV0IG1hcCA9IE1vZHMuSW50TWFwLmFkZCBpIGZyZXNoX3BvcyBtYXAgaW5cbiAgICAgIGxldCBmcmVzaF9wb3MgPSBmcmVzaF9wb3MgKyAxIGluXG4gICAgICAoKjAqKVxuICAgICAgKG1hdGNoIHBvcCBbIEZyZXNoIChsYWJlbCBpKSBdIHRvX2JlYXQgd2l0aFxuICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgIHwgU29tZSAodG9fYmVhdCA6IGtleSBsaXN0IG9wdGlvbikgLT5cbiAgICAgICAgKCoxKilcbiAgICAgICAgbGV0IHNpYmJsaW5nMSA9IHRyeSBBLmdldCBncmFwaC5wcmVkIGkgd2l0aCBOb3RfZm91bmQgLT4gW10gaW5cbiAgICAgICAgbGV0IHNpYmJsaW5nMiA9XG4gICAgICAgICAgdHJ5IEEuZ2V0IGdyYXBoLmNvbmZsaWN0X3ByZWQgaSB3aXRoIE5vdF9mb3VuZCAtPiBbXVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGJlc3Rfc2liYmxpbmcgKG0gOiBpbnQgTW9kcy5JbnRNYXAudCkgKGYgOiBpbnQpXG4gICAgICAgICAgICAoY2FuZGlkYXRlcyA6IGludCBsaXN0KSAobm90X2Jlc3QgOiBpbnQgbGlzdClcbiAgICAgICAgICAgICh0b19iZWF0IDoga2V5IGxpc3Qgb3B0aW9uKVxuICAgICAgICAgICAgKHJlY29yZCA6XG4gICAgICAgICAgICAgIChpbnQgKiAoa2V5IGxpc3QgKiBpbnQgTW9kcy5JbnRNYXAudCAqIGludCAqIGtleSBsaXN0IG9wdGlvbikpXG4gICAgICAgICAgICAgIG9wdGlvbikgPVxuICAgICAgICAgIG1hdGNoIGNhbmRpZGF0ZXMgd2l0aFxuICAgICAgICAgIHwgW10gLT5cbiAgICAgICAgICAgICgqMiopXG4gICAgICAgICAgICAobWF0Y2ggcmVjb3JkIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgcmVjb3JkIC0+IFNvbWUgKG5vdF9iZXN0LCByZWNvcmQpKVxuICAgICAgICAgICgqMiopXG4gICAgICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgICAgIGxldCByZXAgPSB2aXNpdCB0IG0gZiB0b19iZWF0IGluXG4gICAgICAgICAgICAoKjIqKVxuICAgICAgICAgICAgKG1hdGNoIHJlcCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYmVzdF9zaWJibGluZyBtIGYgcSAodCA6OiBub3RfYmVzdCkgdG9fYmVhdCByZWNvcmRcbiAgICAgICAgICAgIHwgU29tZSAoKGVuY29kaW5nIDoga2V5IGxpc3QpLCBtYXAsIGZyZXNoLCByZXNpZHVlKSAtPlxuICAgICAgICAgICAgICAoKjMqKVxuICAgICAgICAgICAgICBsZXQgKHRvX2JlYXRfYWZ0ZXIgOiBrZXkgbGlzdCBvcHRpb24pID1cbiAgICAgICAgICAgICAgICBtYXRjaCByZXNpZHVlIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gU29tZSBlbmNvZGluZ1xuICAgICAgICAgICAgICAgIHwgXyAtPiB0b19iZWF0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAobm90X2Jlc3QgOiBpbnQgbGlzdCkgPVxuICAgICAgICAgICAgICAgIG1hdGNoIHJlY29yZCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IG5vdF9iZXN0XG4gICAgICAgICAgICAgICAgfCBTb21lIChiZXN0LCBfKSAtPiBiZXN0IDo6IG5vdF9iZXN0XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGJlc3Rfc2liYmxpbmcgbSBmIHEgbm90X2Jlc3QgdG9fYmVhdF9hZnRlclxuICAgICAgICAgICAgICAgIChTb21lICh0LCAoZW5jb2RpbmcsIG1hcCwgZnJlc2gsIHJlc2lkdWUpKSkpXG4gICAgICAgICAgKCozKilcbiAgICAgICAgICAoKjIqKVxuICAgICAgICBpblxuICAgICAgICBsZXQgcmVjIGF1eCBtIGYgbCBzb2wgdG9fYmVhdCA9XG4gICAgICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICAgICAgfCBbXSAtPiBTb21lIChtLCBmLCBzb2wsIHRvX2JlYXQpXG4gICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAoKjIqKVxuICAgICAgICAgICAgKG1hdGNoIGJlc3Rfc2liYmxpbmcgbSBmIGwgW10gdG9fYmVhdCBOb25lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICB8IFNvbWUgKG5vdF9iZXN0LCByZWNvcmQpIC0+XG4gICAgICAgICAgICAgIGxldCBfLCAoYmVzdCwgbWFwLCBmcmVzaF9wb3MsIHRvX2JlYXRfYWZ0ZXIpID0gcmVjb3JkIGluXG4gICAgICAgICAgICAgIGF1eCBtYXAgZnJlc2hfcG9zIG5vdF9iZXN0IChjb25jYXQgc29sIGJlc3QpIHRvX2JlYXRfYWZ0ZXIpXG4gICAgICAgICAgKCoyKilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxpc3QgPSBbIEZyZXNoIChsYWJlbCBpKSBdIGluXG4gICAgICAgICgqMiopXG4gICAgICAgIGxldCBnIHggPVxuICAgICAgICAgIG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIHggbWFwIHdpdGhcbiAgICAgICAgICB8IFNvbWUgeCAtPiBGb3JtZXIgeFxuICAgICAgICAgIHwgTm9uZSAtPiBGcmVzaCAobGFiZWwgeClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHNpYmJsaW5nMSA9IExpc3Quc29ydCAocXVpY2tfY29tcGFyZSBnKSBzaWJibGluZzEgaW5cbiAgICAgICAgKG1hdGNoIGF1eCBtYXAgZnJlc2hfcG9zIHNpYmJsaW5nMSBsaXN0IHRvX2JlYXQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICB8IFNvbWUgKG1hcCwgZnJlc2hfcG9zLCBsaXN0LCB0b19iZWF0KSAtPlxuICAgICAgICAgICgqMyopXG4gICAgICAgICAgKG1hdGNoIHBvcCBbIFN0b3AgXSB0b19iZWF0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gTm9uZVxuICAgICAgICAgIHwgU29tZSB0b19iZWF0IC0+XG4gICAgICAgICAgICAoKjQqKVxuICAgICAgICAgICAgbGV0IGxpc3QgPSBjb25jYXQgbGlzdCBbIFN0b3AgXSBpblxuICAgICAgICAgICAgKCo1KilcbiAgICAgICAgICAgIGxldCBnIHggPVxuICAgICAgICAgICAgICBtYXRjaCBNb2RzLkludE1hcC5maW5kX29wdGlvbiB4IG1hcCB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSB4IC0+IEZvcm1lciB4XG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBGcmVzaCAobGFiZWwgeClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgc2liYmxpbmcyID0gTGlzdC5zb3J0IChxdWlja19jb21wYXJlIGcpIHNpYmJsaW5nMiBpblxuICAgICAgICAgICAgKG1hdGNoIGF1eCBtYXAgZnJlc2hfcG9zIHNpYmJsaW5nMiBsaXN0IHRvX2JlYXQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgIHwgU29tZSAobWFwLCBmcmVzaF9wb3MsIGxpc3QsIHRvX2JlYXQpIC0+XG4gICAgICAgICAgICAgICgqNiopXG4gICAgICAgICAgICAgIChtYXRjaCBwb3AgWyBTdG9wIF0gdG9fYmVhdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICAgICAgICAgIHwgU29tZSB0b19iZWF0IC0+XG4gICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBjb25jYXQgbGlzdCBbIFN0b3AgXSBpblxuICAgICAgICAgICAgICAgIFNvbWUgKGxpc3QsIG1hcCwgZnJlc2hfcG9zLCB0b19iZWF0KSkpXG4gICAgICAgICAgICAoKjYqKVxuICAgICAgICAgICAgKCo1KikpXG4gICAgICAgICAgKCo0KikpXG4gICAgICAgICgqMyopXG4gICAgICAgICgqMiopKVxuICAgICgqMSopXG4gICAgKCowKilcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3IgU3RvcnlQcm9maWxpbmcuQ2Fubm9uaWNfZm9ybV9jb21wdXRhdGlvbiBOb25lIGxvZ19pbmZvXG4gIGluXG4gIGxldCBlcnJvciwgb3V0cHV0ID1cbiAgICBtYXRjaCB2aXNpdCBncmFwaC5yb290IGFzc28gMCBOb25lIHdpdGhcbiAgICB8IFNvbWUgKHJlcCwgXywgXywgXykgLT4gZXJyb3IsIHJlcFxuICAgIHwgTm9uZSAtPiBlcnJvciwgW11cbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5DYW5ub25pY19mb3JtX2NvbXB1dGF0aW9uIE5vbmUgbG9nX2luZm9cbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBvdXRwdXRcblxubW9kdWxlIExpc3RUYWJsZSA6IFN0b3J5VGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSB0YWJsZSA9XG4gICAgKHByZWhhc2hcbiAgICAqIChDYXVzYWwuZ3JpZFxuICAgICAgKiBncmFwaFxuICAgICAgKiBjYW5vbmljYWxfZm9ybSBvcHRpb25cbiAgICAgICogVHJhY2UudFxuICAgICAgKiBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmxvZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50IGxpc3QpXG4gICAgICBsaXN0KVxuICAgIGxpc3RcblxuICBsZXQgaW5pdF90YWJsZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID0gZXJyb3IsIGxvZ19pbmZvLCBbXVxuXG4gIGxldCBhZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgICBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJlaGFzaCA9IHByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZ3JhcGggaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIChwcmVoYXNoLCBbIGdyaWQsIGdyYXBoLCBOb25lLCBwcmV0cmFjZSwgaW5mbyBdKSA6OiB0YWJsZVxuXG4gIGxldCBzb3J0X291dGVyID1cbiAgICBsZXQgY29tcGFyZSAoYSwgXykgKGIsIF8pID0gY29tcGFyZV9wcmVoYXNoIGEgYiBpblxuICAgIExpc3Quc29ydCBjb21wYXJlXG5cbiAgbGV0IHNvcnRfaW5uZXIgPVxuICAgIGxldCBjb21wYXJlIChfLCBfLCBhLCBfLCBfKSAoXywgXywgYiwgXywgXykgPSBjb21wYXJlX2Nhbm9uaWNfb3B0IGEgYiBpblxuICAgIExpc3Quc29ydCBjb21wYXJlXG5cbiAgbGV0IGhhc2hfaW5uZXIgX3BhcmFtZXRlciBfaGFuZGxlciBlcnJvciBjbXAgbGlzdCA9XG4gICAgbGV0IGxpc3QgPSBzb3J0X2lubmVyIGxpc3QgaW5cbiAgICBsZXQgcmVjIHZpc2l0IGVsZW1lbnRzX3RvX3N0b3JlIHN0b3JlZF9lbGVtZW50cyBsYXN0X2VsZW1lbnRcbiAgICAgICAgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzID1cbiAgICAgIG1hdGNoIGVsZW1lbnRzX3RvX3N0b3JlLCBsYXN0X2VsZW1lbnQgd2l0aFxuICAgICAgfCAoXywgXywgdCwgXywgbGlzdCkgOjogcSwgU29tZSAoXywgXywgb2xkLCBfKSB3aGVuIGNvbXBhcmUgdCBvbGQgPSAwIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICBsaXN0IGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgIHwgKGdyaWQsIGdyYXBoLCB0LCBldmVudCwgbGlzdCkgOjogcSwgU29tZSAoZ3JpZCcsIGdyYXBoJywgYSwgZXZlbnQnKSAtPlxuICAgICAgICB2aXNpdCBxXG4gICAgICAgICAgKChncmlkJywgZ3JhcGgnLCBhLCBldmVudCcsIExpc3Quc29ydCBjbXAgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKVxuICAgICAgICAgIDo6IHN0b3JlZF9lbGVtZW50cylcbiAgICAgICAgICAoU29tZSAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50KSlcbiAgICAgICAgICAoKkxpc3QucmV2KikgbGlzdFxuICAgICAgfCAoZ3JpZCwgZ3JhcGgsIHQsIGV2ZW50LCBsaXN0KSA6OiBxLCBOb25lIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIChTb21lIChncmlkLCBncmFwaCwgdCwgZXZlbnQpKSAoTGlzdC5yZXYgbGlzdClcbiAgICAgIHwgW10sIE5vbmUgLT4gW11cbiAgICAgIHwgW10sIFNvbWUgKGdyaWQsIGdyYXBoLCBhLCBldmVudCkgLT5cbiAgICAgICAgTGlzdC5yZXZcbiAgICAgICAgICAoKGdyaWQsIGdyYXBoLCBhLCBldmVudCwgTGlzdC5zb3J0IGNtcCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpXG4gICAgICAgICAgOjogc3RvcmVkX2VsZW1lbnRzKVxuICAgIGluXG4gICAgbGV0IGxpc3QgPSB2aXNpdCBsaXN0IFtdIE5vbmUgW10gaW5cbiAgICBlcnJvciwgbGlzdFxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IGxpc3QgPSBzb3J0X291dGVyIChMaXN0LnJldiBsaXN0KSBpblxuICAgIGxldCByZWMgdmlzaXQgZWxlbWVudHNfdG9fc3RvcmUgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMgPVxuICAgICAgbWF0Y2ggZWxlbWVudHNfdG9fc3RvcmUsIGxhc3RfZWxlbWVudCB3aXRoXG4gICAgICB8ICgodCA6IHByZWhhc2gpLCBsaXN0KSA6OiBxLCBTb21lIG9sZCB3aGVuIGNvbXBhcmUgdCBvbGQgPSAwIC0+XG4gICAgICAgIHZpc2l0IHEgc3RvcmVkX2VsZW1lbnRzIGxhc3RfZWxlbWVudFxuICAgICAgICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgIChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdClcbiAgICAgICAgICAgICBsaXN0IGxhc3RfZWxlbWVudF9vY2N1cnJlbmNlcylcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEsIFNvbWUgYSAtPlxuICAgICAgICB2aXNpdCBxICgoYSwgbGFzdF9lbGVtZW50X29jY3VycmVuY2VzKSA6OiBzdG9yZWRfZWxlbWVudHMpIChTb21lIHQpIGxpc3RcbiAgICAgIHwgKHQsIGxpc3QpIDo6IHEsIE5vbmUgLT4gdmlzaXQgcSBzdG9yZWRfZWxlbWVudHMgKFNvbWUgdCkgKExpc3QucmV2IGxpc3QpXG4gICAgICB8IFtdLCBOb25lIC0+IFtdXG4gICAgICB8IFtdLCBTb21lIGEgLT4gTGlzdC5yZXYgKChhLCBsYXN0X2VsZW1lbnRfb2NjdXJyZW5jZXMpIDo6IHN0b3JlZF9lbGVtZW50cylcbiAgICBpblxuICAgIGxldCBsaXN0ID0gdmlzaXQgbGlzdCBbXSBOb25lIFtdIGluXG4gICAgbGV0IHJlYyB2aXNpdDIgbCBsb2dfaW5mbyBlcnJvciBhY2MgPVxuICAgICAgbWF0Y2ggbCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgYWNjXG4gICAgICB8ICh0LCBsaXN0KSA6OiBxIC0+XG4gICAgICAgIGlmIExpc3QubGVuZ3RoIGxpc3QgPSAxIHRoZW5cbiAgICAgICAgICB2aXNpdDIgcSBsb2dfaW5mbyBlcnJvciAoKHQsIGxpc3QpIDo6IGFjYylcbiAgICAgICAgZWxzZSAoXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCcgPVxuICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBsaXN0JykgKGdyaWQsIGdyYXBoLCBkYWcsIGIsIGMpIC0+XG4gICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZGFnJyA9XG4gICAgICAgICAgICAgICAgICBtYXRjaCBkYWcgd2l0aFxuICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICAgICAgICAgICAgfCBTb21lIGRhZyAtPiBlcnJvciwgbG9nX2luZm8sIGRhZ1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoZ3JpZCwgZ3JhcGgsIFNvbWUgZGFnJywgYiwgYykgOjogbGlzdCcpXG4gICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIFtdKSBsaXN0XG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxpc3QnID1cbiAgICAgICAgICAgIGhhc2hfaW5uZXIgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3JcbiAgICAgICAgICAgICAgVHJhY2UuU2ltdWxhdGlvbl9pbmZvLmNvbXBhcmVfYnlfc3RvcnlfaWQgbGlzdCdcbiAgICAgICAgICBpblxuICAgICAgICAgIHZpc2l0MiBxIGxvZ19pbmZvIGVycm9yICgodCwgbGlzdCcpIDo6IGFjYylcbiAgICAgICAgKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9IHZpc2l0MiBsaXN0IGxvZ19pbmZvIGVycm9yIFtdIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsaXN0XG5cbiAgbGV0IHByb2plY3RfdHVwbGUgKGdyaWQsIF8sIF8sIHRyYWNlLCBsaXN0KSA9IExpc3QuaGQgbGlzdCwgdHJhY2UsIGdyaWQsIGxpc3RcblxuICBsZXQgc29ydF9saXN0IF9wYXJhbWV0ZXIgX2hhbmRsZXIgbG9nX2luZm8gZXJyb3IgbGlzdCA9XG4gICAgbGV0IGZsYXRfbGlzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIGxpc3Rfb3V0IChfcHJlaGFzaCwgbGlzdCkgLT5cbiAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgKGZ1biBsaXN0X291dCB0dXBsZSAtPiBwcm9qZWN0X3R1cGxlIHR1cGxlIDo6IGxpc3Rfb3V0KVxuICAgICAgICAgICAgbGlzdF9vdXQgbGlzdClcbiAgICAgICAgW10gbGlzdFxuICAgIGluXG4gICAgbGV0IGNvbXBhcmVfcGFpciAoYSwgXywgXywgXykgKGMsIF8sIF8sIF8pID1cbiAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby5jb21wYXJlX2J5X3N0b3J5X2lkIGEgY1xuICAgIGluXG4gICAgbGV0IGZsYXRfbGlzdCA9IExpc3Quc29ydCBjb21wYXJlX3BhaXIgZmxhdF9saXN0IGluXG4gICAgKCBlcnJvcixcbiAgICAgIGxvZ19pbmZvLFxuICAgICAgTGlzdC5yZXZfbWFwIChmdW4gKF9hLCBiLCBjLCBkKSAtPiBiLCBjLCBkKSAoTGlzdC5yZXYgZmxhdF9saXN0KSApXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgbGlzdCA9XG4gICAgTGlzdC5mb2xkX2xlZnQgKGZ1biBuIGwgLT4gbiArIExpc3QubGVuZ3RoIChzbmQgbCkpIDAgbGlzdFxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIChlcnJvciA6IEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlcikgZ1xuICAgICAgbGlzdCBhID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBhIChfLCBsKSAtPlxuICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgYSkgKF8sIF8sIF8sIHgsIHkpIC0+XG4gICAgICAgICAgICBnIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHggeSBhKVxuICAgICAgICAgIGEgbClcbiAgICAgIChlcnJvciwgbG9nX2luZm8sIGEpIChMaXN0LnJldiBsaXN0KVxuZW5kXG5cbm1vZHVsZSBCdWNrZXRUYWJsZSA6IFN0b3J5VGFibGUgPSBzdHJ1Y3RcbiAgdHlwZSBzdG9yeV9pZCA9IGludFxuXG4gIGxldCBzdWNjX3N0b3J5X2lkID0gc3VjY1xuXG4gIHR5cGUgcHJlaGFzaF9lbHQgPSBub2RlICogaW50XG5cbiAgbW9kdWxlIEtleVMgPSBTZXRNYXAuTWFrZSAoc3RydWN0XG4gICAgdHlwZSB0ID0ga2V5XG5cbiAgICBsZXQgY29tcGFyZSA9IGNvbXBhcmVcbiAgICBsZXQgcHJpbnQgXyBfID0gKClcbiAgZW5kKVxuXG4gIG1vZHVsZSBQcmVIYXNoUyA9IFNldE1hcC5NYWtlIChzdHJ1Y3RcbiAgICB0eXBlIHQgPSBwcmVoYXNoX2VsdFxuXG4gICAgbGV0IGNvbXBhcmUgPSBjb21wYXJlXG4gICAgbGV0IHByaW50IF8gXyA9ICgpXG4gIGVuZClcblxuICBtb2R1bGUgS2V5TWFwID0gS2V5Uy5NYXBcbiAgbW9kdWxlIFByZUhhc2hNYXAgPSBQcmVIYXNoUy5NYXBcblxuICB0eXBlIGlubmVyX3RyZWUgPVxuICAgIHwgSW5uZXJfbm9kZSBvZiAoaW5uZXJfdHJlZSBLZXlNYXAudCAqIHN0b3J5X2lkIG9wdGlvbilcbiAgICB8IElubmVyX2xlYXZlIG9mIChrZXkgbGlzdCAqIHN0b3J5X2lkKVxuXG4gIHR5cGUgb3V0ZXJfdHJlZSA9XG4gICAgfCBFbXB0eVxuICAgIHwgT3V0ZXJfbm9kZSBvZiAob3V0ZXJfdHJlZSBQcmVIYXNoTWFwLnQgKiBzdG9yeV9pZCBvcHRpb24pXG4gICAgfCBPdXRlcl9sZWF2ZSBvZiAocHJlaGFzaF9lbHQgbGlzdCAqIHN0b3J5X2lkKVxuICAgIHwgVG9faW5uZXIgb2YgKG91dGVyX3RyZWUgUHJlSGFzaE1hcC50ICogaW5uZXJfdHJlZSlcblxuICB0eXBlIHRhYmxlID0ge1xuICAgIHRyZWU6IG91dGVyX3RyZWU7XG4gICAgYXJyYXk6XG4gICAgICAoQ2F1c2FsLmdyaWRcbiAgICAgICogZ3JhcGhcbiAgICAgICogY2Fub25pY2FsX2Zvcm0gb3B0aW9uXG4gICAgICAqIFRyYWNlLnRcbiAgICAgICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0KVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYudDtcbiAgICBmcmVzaF9pZDogc3RvcnlfaWQ7XG4gIH1cblxuICBsZXQgaW5pdF90YWJsZSBwYXJhbWV0ZXJzIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yID1cbiAgICBsZXQgZXJyb3IsIGFycmF5ID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmNyZWF0ZVxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcnMpXG4gICAgICAgIGVycm9yIDBcbiAgICBpblxuICAgIGVycm9yLCBsb2dfaW5mbywgeyB0cmVlID0gRW1wdHk7IGFycmF5OyBmcmVzaF9pZCA9IDAgfVxuXG4gIGxldCBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkIHRhYmxlID1cbiAgICBsZXQgZXJyb3IsIGFzc29jID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmdldFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgaWQgdGFibGUuYXJyYXlcbiAgICBpblxuICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICB8IE5vbmUgLT5cbiAgICAgIGxldCBlcnJvciwgYSA9XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX18gfm1lc3NhZ2U6XCJ1bmtub3duIHN0b3J5IGlkXCJcbiAgICAgICAgICAoRmFpbHVyZSBcIkluY29uc2lzdGVudCBzdG9yeSBpZFwiKSAodGFibGUsIFtdKVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgYVxuICAgIHwgU29tZSAoXywgXywgU29tZSBjYW5ub25pYywgXywgXykgLT4gZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljKVxuICAgIHwgU29tZSAoZ3JpZCwgZ3JhcGgsIE5vbmUsIHRyYWNlLCBpbmZvKSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2Fubm9uaWMgPVxuICAgICAgICBjYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IsIGFycmF5JyA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIGlkXG4gICAgICAgICAgKGdyaWQsIGdyYXBoLCBTb21lIGNhbm5vbmljLCB0cmFjZSwgaW5mbylcbiAgICAgICAgICB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIGxldCB0YWJsZSA9IHsgdGFibGUgd2l0aCBhcnJheSA9IGFycmF5JyB9IGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sICh0YWJsZSwgY2Fubm9uaWMpXG5cbiAgbGV0IGFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIHN0b3J5X2luZm8gdGFibGVcbiAgICAgID1cbiAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBncmFwaCA9XG4gICAgICBncmFwaF9vZl9ncmlkIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICBpblxuICAgIGxldCBlcnJvciwgcHJlaGFzaCA9IHByZWhhc2ggcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgZ3JhcGggaW5cbiAgICBsZXQgYXNzb2MgPSBncmlkLCBncmFwaCwgTm9uZSwgcHJldHJhY2UsIHN0b3J5X2luZm8gaW5cbiAgICBsZXQgYWRkX3N0b3J5IGVycm9yIHggdGFibGUgPVxuICAgICAgbGV0IGVycm9yLCBhcnJheSA9XG4gICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgIGVycm9yIHRhYmxlLmZyZXNoX2lkIHggdGFibGUuYXJyYXlcbiAgICAgIGluXG4gICAgICBsZXQgZXJyb3IgPVxuICAgICAgICBpZlxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgdGhlbiAoXG4gICAgICAgICAgbGV0IGVycm9yID1cbiAgICAgICAgICAgIHByaW50X2dyYXBoXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHRhYmxlLmZyZXNoX2lkIHN0b3J5X2luZm8gZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yXG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIGVycm9yXG4gICAgICBpblxuICAgICAgKCBlcnJvcixcbiAgICAgICAgbG9nX2luZm8sXG4gICAgICAgIHRhYmxlLmZyZXNoX2lkLFxuICAgICAgICB7IHRhYmxlIHdpdGggYXJyYXk7IGZyZXNoX2lkID0gc3VjY19zdG9yeV9pZCB0YWJsZS5mcmVzaF9pZCB9IClcbiAgICBpblxuICAgIGxldCBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkIHRhYmxlID1cbiAgICAgIGxldCBlcnJvciwgYXNzb19vcHQgPVxuICAgICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5nZXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBlcnJvciBpZCB0YWJsZS5hcnJheVxuICAgICAgaW5cbiAgICAgIG1hdGNoIGFzc29fb3B0IHdpdGhcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICB3YXJuIHBhcmFtZXRlciBlcnJvciBfX1BPU19fIH5tZXNzYWdlOlwiVW5rbm93biBzdG9yeSBpZFwiXG4gICAgICAgICAgKEZhaWx1cmUgXCJVbmtub3duIHN0b3J5IGlkXCIpIHRhYmxlXG4gICAgICB8IFNvbWUgKGdyaWQsIGdyYXBoLCBjYW5vbmljLCB0cmFjZSwgaW5mbykgLT5cbiAgICAgICAgbGV0IGN1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgPVxuICAgICAgICAgIG1hdGNoIEguZ2V0X2N1cnJlbnRfY29tcHJlc3Npb25fbW9kZSBwYXJhbWV0ZXIgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBTdG9yeV9qc29uLkNhdXNhbFxuICAgICAgICAgIHwgU29tZSB4IC0+IHhcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHJlc3VsdCA9XG4gICAgICAgICAge1xuICAgICAgICAgICAgU3RvcnlfanNvbi5zdG9yeV9tb2RlID0gY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHBhcmFtZXRlcjtcbiAgICAgICAgICAgIFN0b3J5X2pzb24ubG9nX2luZm8gPSBzdG9yeV9pbmZvO1xuICAgICAgICAgICAgU3RvcnlfanNvbi5zdG9yeSA9IFN0b3J5X2pzb24uU2FtZV9hcyBpZDtcbiAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgaWZcbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlciAoU3RvcnlfanNvbi5TdG9yeSByZXN1bHQpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLnNldFxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICBlcnJvciBpZFxuICAgICAgICAgICAgKGdyaWQsIGdyYXBoLCBjYW5vbmljLCB0cmFjZSwgc3RvcnlfaW5mbyBAIGluZm8pXG4gICAgICAgICAgICB0YWJsZS5hcnJheVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgeyB0YWJsZSB3aXRoIGFycmF5IH1cbiAgICBpblxuICAgIGxldCB1cGRhdGVfYXNzb2MgZXJyb3IgY2Fub25pY19mb3JtIGFzc29jID1cbiAgICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICAgIHwgZ3JpZCwgZ3JhcGgsIE5vbmUsIHRyYWNlLCBpbmZvIC0+XG4gICAgICAgIGVycm9yLCAoZ3JpZCwgZ3JhcGgsIFNvbWUgY2Fub25pY19mb3JtLCB0cmFjZSwgaW5mbylcbiAgICAgIHwgXywgXywgU29tZSBfLCBfLCBfIC0+XG4gICAgICAgIHdhcm4gcGFyYW1ldGVyIGVycm9yIF9fUE9TX19cbiAgICAgICAgICB+bWVzc2FnZTpcbiAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHRoaXMgc3Rvcnkgc2hvdWxkIG5vdCBoYXZlIGJlZW4gY29tcHV0ZWQgeWV0XCJcbiAgICAgICAgICAoRmFpbHVyZVxuICAgICAgICAgICAgIFwidGhlIGNhbm9uaWNhbCBmb3JtIG9mIHN0b3JpZXMgIHNob3VsZCBub3QgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiKVxuICAgICAgICAgIGFzc29jXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fub25pY19mb3JtIGNhbm9uaWNfZm9ybScgaWQnIGFzc29jIHRhYmxlXG4gICAgICAgID1cbiAgICAgIG1hdGNoIGNhbm9uaWNfZm9ybSwgY2Fub25pY19mb3JtJyB3aXRoXG4gICAgICB8IFtdLCBbXSAtPlxuICAgICAgICBsZXQgZXJyb3IsIHRhYmxlID0gYWRkX3N0b3J5X2luZm8gZXJyb3Igc3RvcnlfaW5mbyBpZCcgdGFibGUgaW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbGVhdmUgKFtdLCBpZCcpXG4gICAgICB8IHQgOjogcSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IChJbm5lcl9sZWF2ZSAocSwgaWQpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQnKVxuICAgICAgICApXG4gICAgICB8IFtdLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBJbm5lcl9ub2RlXG4gICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHksIFNvbWUgaWQpIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyB3aGVuIHQgPSB0JyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgdHJlZSA9XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBxIHEnIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBJbm5lcl9ub2RlIChLZXlNYXAuYWRkIHQgdHJlZSBLZXlNYXAuZW1wdHksIE5vbmUpXG4gICAgICB8IHQgOjogcSwgdCcgOjogcScgLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgSW5uZXJfbm9kZVxuICAgICAgICAgICAgKCBLZXlNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAoSW5uZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAoS2V5TWFwLmFkZCB0JyAoSW5uZXJfbGVhdmUgKHEnLCBpZCcpKSBLZXlNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICBOb25lICkgKVxuICAgIGluXG4gICAgbGV0IHJlYyBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHByZWhhc2ggcHJlaGFzaCcgaWQnIHRhYmxlID1cbiAgICAgIG1hdGNoIHByZWhhc2gsIHByZWhhc2gnIHdpdGhcbiAgICAgIHwgW10sIFtdIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljX2Zvcm0gPVxuICAgICAgICAgIGNhbm9uaWNhbGl6ZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmFwaFxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIGNhbm5vbmljX2Zvcm0gYXNzb2MgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKHRhYmxlLCBjYW5ub25pY19mb3JtJykgPVxuICAgICAgICAgIGdldF9jYW5ub25pY2FsX2Zvcm0gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaWQnIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgYXV4X2lubmVyMiBsb2dfaW5mbyBlcnJvciBjYW5ub25pY19mb3JtIGNhbm5vbmljX2Zvcm0nIGlkJyBhc3NvYyB0YWJsZVxuICAgICAgICBpblxuICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBUb19pbm5lciAoUHJlSGFzaE1hcC5lbXB0eSwgaW5uZXIpXG4gICAgICB8IHQgOjogcSwgW10gLT5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZVxuICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIFByZUhhc2hNYXAuZW1wdHksIFNvbWUgaWQnKVxuICAgICAgICApXG4gICAgICB8IFtdLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSwgU29tZSBpZClcbiAgICAgICAgKVxuICAgICAgfCB0IDo6IHEsIHQnIDo6IHEnIHdoZW4gdCA9IHQnIC0+XG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgICAgICBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHEgcScgaWQnIHRhYmxlXG4gICAgICAgIGluXG4gICAgICAgICggZXJyb3IsXG4gICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgdGFibGUsXG4gICAgICAgICAgT3V0ZXJfbm9kZSAoUHJlSGFzaE1hcC5hZGQgdCB0cmVlIFByZUhhc2hNYXAuZW1wdHksIE5vbmUpIClcbiAgICAgIHwgdCA6OiBxLCB0JyA6OiBxJyAtPlxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICBPdXRlcl9ub2RlXG4gICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAoUHJlSGFzaE1hcC5hZGQgdCcgKE91dGVyX2xlYXZlIChxJywgaWQnKSkgUHJlSGFzaE1hcC5lbXB0eSksXG4gICAgICAgICAgICAgIE5vbmUgKSApXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9pbm5lciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBpbm5lcl90cmVlIHRhYmxlID1cbiAgICAgIG1hdGNoIHN1ZmZpeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBpbm5lcl90cmVlIHdpdGhcbiAgICAgICAgfCBJbm5lcl9ub2RlIChtYXAsIE5vbmUpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgSW5uZXJfbm9kZSAobWFwLCBTb21lIGlkKVxuICAgICAgICB8IElubmVyX25vZGUgKF8sIFNvbWUgaWQnKSB8IElubmVyX2xlYXZlIChbXSwgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyX3RyZWVcbiAgICAgICAgfCBJbm5lcl9sZWF2ZSAodCcgOjogcScsIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIElubmVyX25vZGVcbiAgICAgICAgICAgICAgKEtleU1hcC5hZGQgdCcgKElubmVyX2xlYXZlIChxJywgaWQnKSkgS2V5TWFwLmVtcHR5LCBTb21lIGlkKSApKVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgKG1hdGNoIGlubmVyX3RyZWUgd2l0aFxuICAgICAgICB8IElubmVyX25vZGUgKG1hcCwgYXNzb2MnKSAtPlxuICAgICAgICAgIChtYXRjaCBLZXlNYXAuZmluZF9vcHRpb24gdCBtYXAgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgICBsZXQgaW5uZXJfdHJlZSA9XG4gICAgICAgICAgICAgIElubmVyX25vZGUgKEtleU1hcC5hZGQgdCAoSW5uZXJfbGVhdmUgKHEsIGlkKSkgbWFwLCBhc3NvYycpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSwgaW5uZXJfdHJlZVxuICAgICAgICAgIHwgU29tZSBpbm5lcl90cmVlJyAtPlxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUnLCBpbm5lcl90cmVlJycgPVxuICAgICAgICAgICAgICBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBxIGlubmVyX3RyZWUnIHRhYmxlXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaWYgaW5uZXJfdHJlZScnID09IGlubmVyX3RyZWUnIHRoZW5cbiAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIGlubmVyX3RyZWVcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgICAgICB0YWJsZScsXG4gICAgICAgICAgICAgICAgSW5uZXJfbm9kZSAoS2V5TWFwLmFkZCB0IGlubmVyX3RyZWUnJyBtYXAsIGFzc29jJykgKSlcbiAgICAgICAgfCBJbm5lcl9sZWF2ZSAobCcsIGlkJykgLT5cbiAgICAgICAgICBhdXhfaW5uZXIyIGxvZ19pbmZvIGVycm9yIHN1ZmZpeCBsJyBpZCcgYXNzb2MgdGFibGUpXG4gICAgaW5cbiAgICBsZXQgcmVjIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHN1ZmZpeCBvdXRlcl90cmVlIHRhYmxlID1cbiAgICAgIG1hdGNoIHN1ZmZpeCB3aXRoXG4gICAgICB8IFtdIC0+XG4gICAgICAgIChtYXRjaCBvdXRlcl90cmVlIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX2xlYXZlIChzdWZmaXgsIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgTm9uZSkgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBPdXRlcl9ub2RlIChtYXAsIFNvbWUgaWQpXG4gICAgICAgIHwgT3V0ZXJfbm9kZSAobWFwLCBTb21lIGlkJykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGdyYXBoID1cbiAgICAgICAgICAgIG1hdGNoIGFzc29jIHdpdGhcbiAgICAgICAgICAgIHwgXywgZ3JhcGgsIE5vbmUsIF8sIF8gLT4gZXJyb3IsIGdyYXBoXG4gICAgICAgICAgICB8IF8sIGdyYXBoLCBTb21lIF8sIF8sIF8gLT5cbiAgICAgICAgICAgICAgd2FybiBwYXJhbWV0ZXIgZXJyb3IgX19QT1NfX1xuICAgICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgXCJ0aGUgY2Fub25pY2FsIGZvcm0gb2Ygc3RvcmllcyBpbiB0aGUgb3V0ZXIgdHJlZSBzaG91bGQgbm90IFxcXG4gICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvbXB1dGVkIHlldFwiXG4gICAgICAgICAgICAgICAgKEZhaWx1cmVcbiAgICAgICAgICAgICAgICAgICBcInRoZSBjYW5vbmljYWwgZm9ybSBvZiBzdG9yaWVzIGluIHRoZSBvdXRlciB0cmVlIHNob3VsZCBub3QgXFxcbiAgICAgICAgICAgICAgICAgICAgaGF2ZSBiZWVuIGNvbXB1dGUgeWV0XCIpXG4gICAgICAgICAgICAgICAgZ3JhcGhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm5vbmljX2Zvcm0gPVxuICAgICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIGNhbm5vbmljX2Zvcm0gYXNzb2MgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAodGFibGUsIGNhbm5vbmljX2Zvcm0nKSA9XG4gICAgICAgICAgICBnZXRfY2Fubm9uaWNhbF9mb3JtIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGlkJyB0YWJsZVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUsIGlubmVyID1cbiAgICAgICAgICAgIGF1eF9pbm5lcjIgbG9nX2luZm8gZXJyb3IgY2Fubm9uaWNfZm9ybSBjYW5ub25pY19mb3JtJyBpZCcgYXNzb2NcbiAgICAgICAgICAgICAgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChtYXAsIGlubmVyKVxuICAgICAgICB8IE91dGVyX2xlYXZlIChfcSwgaWQnKSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgdGFibGUgPSBhZGRfc3RvcnlfaW5mbyBlcnJvciBzdG9yeV9pbmZvIGlkJyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIG91dGVyX3RyZWVcbiAgICAgICAgfCBUb19pbm5lciAobWFwLCBpbm5lcikgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdWZmaXggPVxuICAgICAgICAgICAgY2Fub25pY2FsaXplIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyYXBoXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgZXJyb3IsIGFzc29jID0gdXBkYXRlX2Fzc29jIGVycm9yIHN1ZmZpeCBhc3NvYyBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lciA9XG4gICAgICAgICAgICBhdXhfaW5uZXIgbG9nX2luZm8gZXJyb3IgYXNzb2Mgc3RvcnlfaW5mbyBzdWZmaXggaW5uZXIgdGFibGVcbiAgICAgICAgICBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIFRvX2lubmVyIChtYXAsIGlubmVyKSlcbiAgICAgIHwgdCA6OiBxIC0+XG4gICAgICAgIChtYXRjaCBvdXRlcl90cmVlIHdpdGhcbiAgICAgICAgfCBFbXB0eSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGUsIE91dGVyX2xlYXZlIChzdWZmaXgsIGlkKVxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCwgYXNzb2MnKSAtPlxuICAgICAgICAgIChtYXRjaCBQcmVIYXNoTWFwLmZpbmRfb3B0aW9uIHQgbWFwIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGlkLCB0YWJsZSA9IGFkZF9zdG9yeSBlcnJvciBhc3NvYyB0YWJsZSBpblxuICAgICAgICAgICAgbGV0IGlubmVyX3RyZWUgPVxuICAgICAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IChPdXRlcl9sZWF2ZSAocSwgaWQpKSBtYXAsIGFzc29jJylcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCBpbm5lcl90cmVlXG4gICAgICAgICAgfCBTb21lIG91dGVyX3RyZWUnIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZScsIG91dGVyX3RyZWUnJyA9XG4gICAgICAgICAgICAgIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvciBhc3NvYyBzdG9yeV9pbmZvIHEgb3V0ZXJfdHJlZScgdGFibGVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBpZiBvdXRlcl90cmVlJycgPT0gb3V0ZXJfdHJlZScgdGhlblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlJywgb3V0ZXJfdHJlZVxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgICAgIHRhYmxlJyxcbiAgICAgICAgICAgICAgICBPdXRlcl9ub2RlIChQcmVIYXNoTWFwLmFkZCB0IG91dGVyX3RyZWUnJyBtYXAsIGFzc29jJykgKSlcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAodCcgOjogcScsIGlkJykgd2hlbiBub3QgKHQgPSB0JykgLT5cbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBpZCwgdGFibGUgPSBhZGRfc3RvcnkgZXJyb3IgYXNzb2MgdGFibGUgaW5cbiAgICAgICAgICAoIGVycm9yLFxuICAgICAgICAgICAgbG9nX2luZm8sXG4gICAgICAgICAgICB0YWJsZSxcbiAgICAgICAgICAgIE91dGVyX25vZGVcbiAgICAgICAgICAgICAgKCBQcmVIYXNoTWFwLmFkZCB0XG4gICAgICAgICAgICAgICAgICAoT3V0ZXJfbGVhdmUgKHEsIGlkKSlcbiAgICAgICAgICAgICAgICAgIChQcmVIYXNoTWFwLmFkZCB0JyAoT3V0ZXJfbGVhdmUgKHEnLCBpZCcpKSBQcmVIYXNoTWFwLmVtcHR5KSxcbiAgICAgICAgICAgICAgICBOb25lICkgKVxuICAgICAgICB8IE91dGVyX2xlYXZlIChsJywgaWQnKSAtPiBhdXhfb3V0ZXIyIGxvZ19pbmZvIGVycm9yIHN1ZmZpeCBsJyBpZCcgdGFibGVcbiAgICAgICAgfCBUb19pbm5lciAoX21hcCwgaW5uZXIpIC0+XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgaWQsIHRhYmxlID0gYWRkX3N0b3J5IGVycm9yIGFzc29jIHRhYmxlIGluXG4gICAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgICAgdGFibGUsXG4gICAgICAgICAgICBUb19pbm5lclxuICAgICAgICAgICAgICAoIFByZUhhc2hNYXAuYWRkIHRcbiAgICAgICAgICAgICAgICAgIChPdXRlcl9sZWF2ZSAocSwgaWQpKVxuICAgICAgICAgICAgICAgICAgKFByZUhhc2hNYXAuYWRkIHQgKE91dGVyX2xlYXZlIChxLCBpZCkpIFByZUhhc2hNYXAuZW1wdHkpLFxuICAgICAgICAgICAgICAgIGlubmVyICkgKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlLCB0cmVlID1cbiAgICAgIGF1eF9vdXRlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAoZ3JpZCwgZ3JhcGgsIE5vbmUsIHByZXRyYWNlLCBzdG9yeV9pbmZvKVxuICAgICAgICBzdG9yeV9pbmZvIHByZWhhc2ggdGFibGUudHJlZSB0YWJsZVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB7IHRhYmxlIHdpdGggdHJlZSB9XG5cbiAgKCogbGV0IHJlYyBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCBpbm5lcl90cmVlID1cbiAgICAgbWF0Y2hcbiAgICAgaW5uZXJfdHJlZVxuICAgICB3aXRoXG4gICAgIHwgSW5uZXJfbm9kZSAobWFwLGFzc29jJykgLT5cbiAgICAgbGV0ICgpID1cbiAgICAgbWF0Y2hcbiAgICAgYXNzb2MnXG4gICAgIHdpdGhcbiAgICAgfCBOb25lIC0+XG4gICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNVbmZpbGxlZCBOb2RlXFxuXCIgcHJlZml4XG4gICAgIHwgU29tZSAoaWQpICAtPlxuICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzRmlsbGVkIE5vZGU6ICVpXFxuXCIgcHJlZml4IGlkXG4gICAgIGluXG4gICAgIGxldCBwcmVmaXgnID0gcHJlZml4XlwiIFwiIGluXG4gICAgIEtleU1hcC5pdGVyXG4gICAgIChmdW4gZWx0IG1hcCAtPlxuICAgICBwcmludF9lbHQgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgZWx0O1xuICAgICBwcmludF9pbm5lcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICBtYXBcbiAgICAgfCBJbm5lcl9sZWF2ZSAobCxpZCkgIC0+XG4gICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNMRUFWRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgbGV0IF8gPSBwcmludF9jYW5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBsIGluXG4gICAgICgpKilcblxuICAoKlxubGV0IHJlYyBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCBvdXRlcl90cmVlID1cbiAgICAgIG1hdGNoXG4gICAgICAgIG91dGVyX3RyZWVcbiAgICAgICAgd2l0aFxuICAgICAgICB8IEVtcHR5IC0+XG4gICAgICAgIEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNFTVBUWVxcblwiIHByZWZpeFxuICAgICAgICB8IE91dGVyX25vZGUgKG1hcCxhc3NvYycpIC0+XG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgIG1hdGNoXG4gICAgICAgIGFzc29jJ1xuICAgICAgICB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVW5maWxsZWQgTm9kZVxcblwiIHByZWZpeFxuICAgICAgICB8IFNvbWUgKGlkKSAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlc0ZpbGxlZCBOb2RlOiAlaVxcblwiIHByZWZpeCBpZFxuICAgICAgICBpblxuICAgICAgICBsZXQgcHJlZml4JyA9IHByZWZpeF5cIiBcIiBpblxuICAgICAgICBQcmVIYXNoTWFwLml0ZXJcbiAgICAgICAgKGZ1biAoKF8sYiksaSkgIG1hcCAtPlxuICAgICAgICBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzJXM6JWktPlxcblwiIHByZWZpeCBiIGkgO1xuICAgICAgICBwcmludF9vdXRlcl90cmVlIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIHByZWZpeCcgbWFwKVxuICAgICAgICBtYXBcbiAgICAgICAgfCBPdXRlcl9sZWF2ZSAobCxpZCkgIC0+XG4gICAgICAgIGxldCAoKSA9IEZvcm1hdC5mcHJpbnRmIHBhcmFtZXRlci5ILm91dF9jaGFubmVsIFwiJXNMRUFWRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgICAgbGV0IF8gPSBwcmludF9wcmVoYXNoIHBhcmFtZXRlciBoYW5kbGVyIGVycm9yIGwgaW5cbiAgICAgICAgKClcbiAgICAgICAgfCBUb19pbm5lciAobWFwLGlubmVyKSAtPlxuICAgICAgICBsZXQgKCkgPSBGb3JtYXQuZnByaW50ZiBwYXJhbWV0ZXIuSC5vdXRfY2hhbm5lbCBcIiVzVE8gSU5ORVIgVFJFRTpcXG5cIiBwcmVmaXggaW5cbiAgICAgICAgbGV0IHByZWZpeCcgPSBwcmVmaXheXCIgXCIgaW5cbiAgICAgICAgbGV0ICgpID0gUHJlSGFzaE1hcC5pdGVyXG4gICAgICAgIChmdW4gKChfLGIpLGkpICBtYXAgLT5cbiAgICAgICAgRm9ybWF0LmZwcmludGYgcGFyYW1ldGVyLkgub3V0X2NoYW5uZWwgXCIlcyVzOiVpLT5cXG5cIiBwcmVmaXggYiBpIDtcbiAgICAgICAgcHJpbnRfb3V0ZXJfdHJlZSBwYXJhbWV0ZXIgaGFuZGxlciBlcnJvciBwcmVmaXgnIG1hcClcbiAgICAgICAgbWFwXG4gICAgICAgIGluXG4gICAgICAgIHByaW50X2lubmVyX3RyZWUgcGFyYW1ldGVyIGhhbmRsZXIgZXJyb3IgcHJlZml4JyBpbm5lciAqKVxuXG4gIGxldCBoYXNoX2xpc3QgcGFyYW1ldGVyIF8gbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIGxldCBlcnJvciwgYXJyYXkgPVxuICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuZm9sZFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3JcbiAgICAgICAgKGZ1biBwYXJhbWV0ZXInIGVycm9yIGkgKGEsIGIsIGMsIGQsIGUpIGFycmF5IC0+XG4gICAgICAgICAgSW50X3N0b3JhZ2UuTmVhcmx5X2luZl9JbXBlcmF0aWYuc2V0IHBhcmFtZXRlcicgZXJyb3IgaVxuICAgICAgICAgICAgKGEsIGIsIGMsIGQsIExpc3Quc29ydCBUcmFjZS5TaW11bGF0aW9uX2luZm8uY29tcGFyZV9ieV9zdG9yeV9pZCBlKVxuICAgICAgICAgICAgYXJyYXkpXG4gICAgICAgIHRhYmxlLmFycmF5IHRhYmxlLmFycmF5XG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIHsgdGFibGUgd2l0aCBhcnJheSB9XG5cbiAgbGV0IHNvcnRfbGlzdCBwYXJhbWV0ZXIgXyBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbGV0IGVycm9yLCBsID1cbiAgICAgIEludF9zdG9yYWdlLk5lYXJseV9pbmZfSW1wZXJhdGlmLmZvbGRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yXG4gICAgICAgIChmdW4gX3BhcmFtZXRlciBlcnJvciBfIChhLCBfYiwgX2MsIGQsIGUpIGwgLT4gZXJyb3IsIChkLCBhLCBlKSA6OiBsKVxuICAgICAgICB0YWJsZS5hcnJheSBbXVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBsXG5cbiAgbGV0IGNvdW50X3N0b3JpZXMgdGFibGUgPSB0YWJsZS5mcmVzaF9pZFxuXG4gIGxldCBmb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGYgdGFibGUgYSA9XG4gICAgbGV0IGEsIChiLCBjKSA9XG4gICAgICBJbnRfc3RvcmFnZS5OZWFybHlfaW5mX0ltcGVyYXRpZi5mb2xkX3dpdGhfaW50ZXJydXB0aW9uXG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvclxuICAgICAgICAoZnVuIHBhcmFtZXRlcicgZXJyb3IgXyAoXywgXywgXywgZCwgZSkgKGxvZ19pbmZvLCBhKSAtPlxuICAgICAgICAgIGxldCBhLCBiLCBjID1cbiAgICAgICAgICAgIGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXInIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBkIGUgYVxuICAgICAgICAgIGluXG4gICAgICAgICAgYSwgKGIsIGMpKVxuICAgICAgICB0YWJsZS5hcnJheSAobG9nX2luZm8sIGEpXG4gICAgaW5cbiAgICBhLCBiLCBjXG5lbmRcblxubW9kdWxlIHR5cGUgU2VsZWN0b3IgPSBzaWdcbiAgdmFsIGNob29zZV9mc3QgOiBILnBhcmFtZXRlciAtPiBib29sXG5lbmRcblxubW9kdWxlIENob2ljZSAoUyA6IFNlbGVjdG9yKSAoQSA6IFN0b3J5VGFibGUpIChCIDogU3RvcnlUYWJsZSkgOiBTdG9yeVRhYmxlID1cbnN0cnVjdFxuICB0eXBlIHRhYmxlID0gQSBvZiBBLnRhYmxlIHwgQiBvZiBCLnRhYmxlXG5cbiAgbGV0IGluaXRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgPVxuICAgIGlmIFMuY2hvb3NlX2ZzdCBwYXJhbWV0ZXIgdGhlbiAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEEuaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZSA9XG4gICAgICAgIEIuaW5pdF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuICAgIClcblxuICBsZXQgYWRkX3N0b3J5IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWQgcHJldHJhY2UgaW5mbyB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmFkZF9zdG9yeSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkIHByZXRyYWNlIGluZm8gdGFibGVcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm8sIEEgdGFibGVcbiAgICB8IEIgdGFibGUgLT5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgQi5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JpZCBwcmV0cmFjZSBpbmZvIHRhYmxlXG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBCIHRhYmxlXG5cbiAgbGV0IGhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBBLmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQSB0YWJsZVxuICAgIHwgQiB0YWJsZSAtPlxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUgPVxuICAgICAgICBCLmhhc2hfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0YWJsZVxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mbywgQiB0YWJsZVxuXG4gIGxldCBzb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGUgPVxuICAgIG1hdGNoIHRhYmxlIHdpdGhcbiAgICB8IEEgdGFibGUgLT4gQS5zb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcbiAgICB8IEIgdGFibGUgLT4gQi5zb3J0X2xpc3QgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdGFibGVcblxuICBsZXQgY291bnRfc3RvcmllcyB0YWJsZSA9XG4gICAgbWF0Y2ggdGFibGUgd2l0aFxuICAgIHwgQSB0YWJsZSAtPiBBLmNvdW50X3N0b3JpZXMgdGFibGVcbiAgICB8IEIgdGFibGUgLT4gQi5jb3VudF9zdG9yaWVzIHRhYmxlXG5cbiAgbGV0IGZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZyB0YWJsZSBhID1cbiAgICBtYXRjaCB0YWJsZSB3aXRoXG4gICAgfCBBIHRhYmxlIC0+IEEuZm9sZF90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBnIHRhYmxlIGFcbiAgICB8IEIgdGFibGUgLT4gQi5mb2xkX3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGcgdGFibGUgYVxuZW5kXG5cbigqIG1vZHVsZSBTdG9yeVRhYmxlID0gTGlzdFRhYmxlKilcbigqIG1vZHVsZSBTdG9yeVRhYmxlID0gQnVja2V0VGFibGUqKVxubW9kdWxlIFN0b3J5VGFibGUgPVxuICBDaG9pY2VcbiAgICAoc3RydWN0XG4gICAgICBsZXQgY2hvb3NlX2ZzdCA9IFMuUEguQi5QQi5DSS5Qby5LLkguZG9fd2VfdXNlX2J1Y2tldF9zb3J0XG4gICAgZW5kKVxuICAgIChCdWNrZXRUYWJsZSlcbiAgICAoTGlzdFRhYmxlKVxuIiwiKCoqXG4gKiB1dGlsaXRpZXMubWxcbiAqXG4gKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTUtMDMtMjggZmVyZXQ+XG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMDMgMjA6NTM6MTQgZmVyZXQ+XG4gKlxuICogQVBJIGZvciBjYXVzYWwgY29tcHJlc3Npb25cbiAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICpcbiAqIENvcHlyaWdodCAyMDE1IEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgICogZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGVcbiAqIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxuXG5tb2R1bGUgRCA9IERhZy5TdG9yeVRhYmxlXG5tb2R1bGUgUyA9IEdlbmVyaWNfYnJhbmNoX2FuZF9jdXRfc29sdmVyLlNvbHZlclxubW9kdWxlIFAgPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzXG5cbnR5cGUgZXJyb3JfbG9nID0gRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyXG50eXBlIHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkgucGFyYW1ldGVyXG50eXBlIGthcHBhX2hhbmRsZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmhhbmRsZXJcbnR5cGUgcHJvZmlsaW5nX2luZm8gPSBQLmxvZ19pbmZvXG50eXBlIHNoYWxsX3dlID0gcGFyYW1ldGVyIC0+IGJvb2xcbnR5cGUgc3RlcCA9IFRyYWNlLnN0ZXBcbnR5cGUgc3RlcF93aXRoX3NpZGVfZWZmZWN0cyA9IHN0ZXAgKiBTLlBILkIuUEIuQ0kuUG8uSy5zaWRlX2VmZmVjdFxudHlwZSBzdGVwX2lkID0gUy5QSC5CLlBCLnN0ZXBfaWRcblxudHlwZSB0cmFjZSA9IHtcbiAgY29tcHJlc3NlZF90cmFjZTogc3RlcF93aXRoX3NpZGVfZWZmZWN0cyBsaXN0IG9wdGlvbjtcbiAgcHJldHJhY2U6IHN0ZXAgbGlzdDtcbiAgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5OiBib29sO1xufVxuXG50eXBlIHRyYWNlX3J1bnRpbWVfaW5mbyA9IHByb2ZpbGluZ19pbmZvIFRyYWNlLlNpbXVsYXRpb25faW5mby50XG5cbnR5cGUgJ2Egd2l0aF9oYW5kbGVycyA9XG4gIHBhcmFtZXRlciAtPlxuICA/c2hhbGxfd2VfY29tcHV0ZTpzaGFsbF93ZSAtPlxuICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246c2hhbGxfd2UgLT5cbiAgP3ByaW50X2lmX3plcm86c2hhbGxfd2UgLT5cbiAga2FwcGFfaGFuZGxlciAtPlxuICBwcm9maWxpbmdfaW5mbyAtPlxuICBlcnJvcl9sb2cgLT5cbiAgJ2FcblxudHlwZSAnYSB6ZXJvYXJ5ID0gKGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2EpIHdpdGhfaGFuZGxlcnNcbnR5cGUgKCdhLCAnYikgdW5hcnkgPSAoJ2EgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYikgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjKSBiaW5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnYykgd2l0aF9oYW5kbGVyc1xuXG50eXBlICgnYSwgJ2IsICdjLCAnZCkgdGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdkKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSkgcXVhdGVybmFyeSA9XG4gICgnYSAtPiAnYiAtPiAnYyAtPiAnZCAtPiBlcnJvcl9sb2cgKiBwcm9maWxpbmdfaW5mbyAqICdlKSB3aXRoX2hhbmRsZXJzXG5cbnR5cGUgKCdhLCAnYiwgJ2MsICdkLCAnZSwgJ2YpIHF1aW50ZXJuYXJ5ID1cbiAgKCdhIC0+ICdiIC0+ICdjIC0+ICdkIC0+ICdlIC0+IGVycm9yX2xvZyAqIHByb2ZpbGluZ19pbmZvICogJ2YpIHdpdGhfaGFuZGxlcnNcblxudHlwZSAoJ2EsICdiLCAnYywgJ2QsICdlLCAnZiwgJ2cpIHNleHRlcm5hcnkgPVxuICAoJ2EgLT4gJ2IgLT4gJ2MgLT4gJ2QgLT4gJ2UgLT4gJ2YgLT4gZXJyb3JfbG9nICogcHJvZmlsaW5nX2luZm8gKiAnZylcbiAgd2l0aF9oYW5kbGVyc1xuXG5sZXQgKHdlX3NoYWxsIDogc2hhbGxfd2UpID0gZnVuIF8gLT4gdHJ1ZVxubGV0ICh3ZV9zaGFsbF9ub3QgOiBzaGFsbF93ZSkgPSBmdW4gXyAtPiBmYWxzZVxubGV0IGdldF9wcmV0cmFjZV9vZl90cmFjZSB0cmFjZSA9IHRyYWNlLnByZXRyYWNlXG5sZXQgc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSA9IExpc3QubGVuZ3RoIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5sZXQgbWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlID0gdHJhY2Uud2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5XG5sZXQgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIHdpdGhfcG90ZW50aWFsX2FtYmlndWl0eSA9IHggfVxubGV0IF9zZXRfcHJldHJhY2UgdHJhY2UgeCA9IHsgdHJhY2Ugd2l0aCBwcmV0cmFjZSA9IHggfVxubGV0IF9zZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSB4ID0geyB0cmFjZSB3aXRoIGNvbXByZXNzZWRfdHJhY2UgPSB4IH1cblxubGV0IGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlID1cbiAgbWF0Y2ggdHJhY2UuY29tcHJlc3NlZF90cmFjZSB3aXRoXG4gIHwgU29tZSB4IC0+IHhcbiAgfCBOb25lIC0+XG4gICAgTGlzdC5yZXZfbWFwIChmdW4geCAtPiB4LCBbXSkgKExpc3QucmV2IChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpKVxuXG5sZXQgaXNfY29tcHJlc3NlZF90cmFjZSB0cmFjZSA9IHRyYWNlLmNvbXByZXNzZWRfdHJhY2UgIT0gTm9uZVxuXG5sZXQgdHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgd2l0aF9hbWJpZ3VpdHkgcHJldHJhY2UgPVxuICB7XG4gICAgcHJldHJhY2U7XG4gICAgY29tcHJlc3NlZF90cmFjZSA9IE5vbmU7XG4gICAgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0gd2l0aF9hbWJpZ3VpdHk7XG4gIH1cblxubGV0IHRyYWNlX29mX3ByZXRyYWNlID0gdHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgdHJ1ZVxuXG5sZXQgYnVpbGRfY29tcHJlc3NlZF90cmFjZSB4IHkgPVxuICB7IGNvbXByZXNzZWRfdHJhY2UgPSBTb21lIHk7IHByZXRyYWNlID0geDsgd2l0aF9wb3RlbnRpYWxfYW1iaWd1aXR5ID0gZmFsc2UgfVxuXG4oKmxldCBnZXRfbG9nX3N0ZXAgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dfc3RlcFxuICBsZXQgZ2V0X2RlYnVnZ2luZ19tb2RlID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX21vZGVcbiAgbGV0IGdldF9sb2dnZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIqKVxubGV0IGdldF9pZF9vZl9ldmVudCA9IFMuUEguQi5QQi5DSS5Qby5LLmdldF9pZF9vZl9yZWZpbmVkX3N0ZXBcbmxldCBnZXRfc2ltdWxhdGlvbl90aW1lX29mX2V2ZW50ID0gUy5QSC5CLlBCLkNJLlBvLksuZ2V0X3RpbWVfb2ZfcmVmaW5lZF9zdGVwXG5cbmxldCBfZXh0ZW5kX3RyYWNlX3dpdGhfZHVtbXlfc2lkZV9lZmZlY3RzIGwgPVxuICBMaXN0LnJldl9tYXAgKGZ1biBhIC0+IGEsIFtdKSAoTGlzdC5yZXYgbClcblxubGV0IHByaW50X3ByZXRyYWNlIHBhcmFtZXRlciBfaGFuZGxlciA9XG4gIExvZ2dlcnMuZnByaW50ZlxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9vdXRfY2hhbm5lbCBwYXJhbWV0ZXIpXG4gICAgXCJAWzx2PiVhQF1ALlwiXG4gICAgKFBwLmxpc3QgUHAuc3BhY2UgKFRyYWNlLnByaW50X3N0ZXAgfmNvbXBhY3Q6dHJ1ZSA/ZW52Ok5vbmUpKVxuXG5sZXQgcHJpbnRfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgdHJhY2UgPVxuICBwcmludF9wcmV0cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciAoZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlKVxuXG5sZXQgdHJhbnNmb3JtX3RyYWNlX2dlbiBmIGxvZ19tZXNzYWdlIGRlYnVnX21lc3NhZ2UgcHJvZmlsaW5nX2V2ZW50IHBhcmFtZXRlcnNcbiAgICA/KHNoYWxsX3dlX2NvbXB1dGUgPSB3ZV9zaGFsbCkgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICA/KHByaW50X2lmX3plcm8gPSB3ZV9zaGFsbCkga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZSA9XG4gIGlmIHNoYWxsX3dlX2NvbXB1dGUgcGFyYW1ldGVycyB0aGVuIChcbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycylcbiAgICAgICAgZXJyb3IgcHJvZmlsaW5nX2V2ZW50XG4gICAgICAgIChTb21lIChmdW4gKCkgLT4gc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZSkpXG4gICAgICAgIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgYm9vbCA9XG4gICAgICBpZiBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dfc3RlcCBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgICAgICBtYXRjaCBsb2dfbWVzc2FnZSB3aXRoXG4gICAgICAgIHwgU29tZSBsb2dfbWVzc2FnZSAtPlxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICBcIiVzJXNcIlxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVycykpXG4gICAgICAgICAgICAgIGxvZ19tZXNzYWdlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTG9nZ2Vycy5mbHVzaF9sb2dnZXIgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ1ZVxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICkgZWxzZVxuICAgICAgICBmYWxzZVxuICAgIGluXG4gICAgbGV0IHByZXRyYWNlID0gZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlIGluXG4gICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKHByZXRyYWNlJywgbikgPVxuICAgICAgZiBwYXJhbWV0ZXJzIGthcHBhX2hhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgcHJldHJhY2VcbiAgICBpblxuICAgIGxldCB0cmFjZScgPSB0cmFjZV9vZl9wcmV0cmFjZSBwcmV0cmFjZScgaW5cbiAgICBsZXQgdHJhY2UgPVxuICAgICAgaWYgdHJhY2UgPT0gdHJhY2UnIHRoZW5cbiAgICAgICAgdHJhY2VcbiAgICAgIGVsc2VcbiAgICAgICAgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZScgKG1heV9pbml0aWFsX3NpdGVzX2JlX2FtYmlndW91cyB0cmFjZSlcbiAgICBpblxuICAgIGxldCAoKSA9XG4gICAgICBpZiBib29sIHRoZW5cbiAgICAgICAgaWYgbiA9IDAgdGhlblxuICAgICAgICAgIGlmIHByaW50X2lmX3plcm8gcGFyYW1ldGVycyB0aGVuXG4gICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgICBcIjogbm90aGluZyBoYXMgY2hhbmdlZCBALlwiXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycykgXCJALlwiXG4gICAgICAgIGVsc2UgaWYgbiA+IDAgdGhlblxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXJzKVxuICAgICAgICAgICAgXCI6IC0laSBldmVudHMgQC5cIiBuXG4gICAgICAgIGVsc2VcbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVycylcbiAgICAgICAgICAgIFwiOiArJWkgZXZlbnRzIEAuXCIgKC1uKVxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmIFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlcnMgdGhlbiAoXG4gICAgICAgIGxldCBfID1cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgTG9nZ2Vycy5mb3JtYXR0ZXJfb2ZfbG9nZ2VyXG4gICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9kZWJ1Z2dpbmdfY2hhbm5lbCBwYXJhbWV0ZXJzKVxuICAgICAgICAgIHdpdGhcbiAgICAgICAgICB8IFNvbWUgZm10IC0+IEZvcm1hdC5mcHJpbnRmIGZtdCBkZWJ1Z19tZXNzYWdlXG4gICAgICAgICAgfCBOb25lIC0+ICgpXG4gICAgICAgIGluXG4gICAgICAgIHByaW50X3RyYWNlIHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciB0cmFjZVxuICAgICAgKVxuICAgIGluXG5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXJzKVxuICAgICAgICBlcnJvciBwcm9maWxpbmdfZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcbiAgKSBlbHNlXG4gICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB0cmFjZVxuXG50eXBlIGtpbmQgPSAoKiAgfCBTb2x2ZV9hbWJpZ3VpdGllcyopXG4gIHwgTWF5X2FkZF9hbWJpZ3VpdGllcyB8IE5ldXRyYWxcblxubGV0IGhhbmRsZV9hbWJpZ3VpdGllcyBraW5kIGIgPVxuICBtYXRjaCBraW5kIHdpdGhcbiAgKCogIHwgU29sdmVfYW1iaWd1aXRpZXMgLT4gZmFsc2UqKVxuICB8IE5ldXRyYWwgLT4gYlxuICB8IE1heV9hZGRfYW1iaWd1aXRpZXMgLT4gdHJ1ZVxuXG50eXBlIGFtYmlxdWl0aWVzX3ByZWNvbmRpdGlvbiA9XG4gIHwgRG9fbm90X2NhcmVcbiAgfCBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgKCp8IEJldHRlcl93aGVuX25vX2FtYmlndWl0eSopXG5cbmxldCBtdXN0X3dlX3NvbHZlX2FtYmlndWl0eSBfcGFyYW1ldGVycyB4ID1cbiAgbWF0Y2ggeCB3aXRoXG4gIHwgRG9fbm90X2NhcmUgLT4gZmFsc2VcbiAgfCBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgLT4gdHJ1ZVxuKCogIHwgQmV0dGVyX3doZW5fbm9fYW1iaWd1aXR5IC0+IFMuUEguQi5QQi5DSS5Qby5LLkguYWx3YXlzX2Rpc2FtYmlndWF0ZSBwYXJhbWV0ZXJzKilcblxubGV0IG1vbmFkaWNfbGlmdCBmIF8gXyBsb2dfaW5mbyBlcnJvciB0ID1cbiAgbGV0IHQnID0gZiB0IGluXG4gIGVycm9yLCBsb2dfaW5mbywgKHQnLCBMaXN0Lmxlbmd0aCB0IC0gTGlzdC5sZW5ndGggdCcpXG5cbmxldCBfZHVtbXlfcHJvZmlsaW5nIF8gcCA9IHBcblxubGV0IGRpc2FtYmlndWF0ZSA9XG4gIHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLmRpc2FtYmlndWF0ZSlcbiAgICAoU29tZSBcIlxcdC0gYWxwaGEtY29udmVyc2lvblwiKSBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW5hbWVzIGFnZW50czpcXG5cIlxuICAgIFN0b3J5UHJvZmlsaW5nLkFnZW50X2lkc19kaXNhbWJpZ3VhdGlvblxuXG5sZXQgbWFrZV91bmFtYmlndW91cyBwYXJhbWV0ZXJzID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbF9ub3QpXG4gICAgPyhwcmludF9pZl96ZXJvID0gd2Vfc2hhbGxfbm90KSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgbWF5X2luaXRpYWxfc2l0ZXNfYmVfYW1iaWd1b3VzIHRyYWNlIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlJyA9XG4gICAgICBkaXNhbWJpZ3VhdGUgcGFyYW1ldGVyc1xuICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTooZnVuIHBhcmFtZXRlcnMgLT5cbiAgICAgICAgICBtYXlfaW5pdGlhbF9zaXRlc19iZV9hbWJpZ3VvdXMgdHJhY2UgJiYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzKVxuICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gfnByaW50X2lmX3plcm8ga2FwcGFfaGFuZGxlclxuICAgICAgICBwcm9maWxpbmdfaW5mbyBlcnJvciB0cmFjZVxuICAgIGluXG4gICAgKCBlcnJvcixcbiAgICAgIHByb2ZpbGluZ19pbmZvLFxuICAgICAgaWYgdHJhY2UnID09IHRyYWNlIHRoZW5cbiAgICAgICAgc2V0X2FtYmlndWl0eV9sZXZlbCB0cmFjZSBmYWxzZVxuICAgICAgZWxzZVxuICAgICAgICBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlJyBmYWxzZSApXG4gICkgZWxzZVxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcblxubGV0IGxpZnRfdG9fY2FyZV9hYm91dF9hbWJpZ3VpdGllcyBmIHJlcXVpcmVtZW50IGVmZmVjdCBwYXJhbWV0ZXJzXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlID1cbiAgaWYgc2hhbGxfd2VfY29tcHV0ZSBwYXJhbWV0ZXJzIHRoZW4gKFxuICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlID1cbiAgICAgIGlmIG11c3Rfd2Vfc29sdmVfYW1iaWd1aXR5IHBhcmFtZXRlcnMgcmVxdWlyZW1lbnQgdGhlblxuICAgICAgICBtYWtlX3VuYW1iaWd1b3VzIHBhcmFtZXRlcnMgfnNoYWxsX3dlX2NvbXB1dGUga2FwcGFfaGFuZGxlclxuICAgICAgICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICBlbHNlXG4gICAgICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2VcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgIChmXG4gICAgICAgIDogUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXIgLT5cbiAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZTpzaGFsbF93ZSAtPlxuICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpzaGFsbF93ZSAtPlxuICAgICAgICAgID9wcmludF9pZl96ZXJvOnNoYWxsX3dlIC0+XG4gICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5oYW5kbGVyIC0+XG4gICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAtPlxuICAgICAgICAgIEV4Y2VwdGlvbi5tZXRob2RfaGFuZGxlciAtPlxuICAgICAgICAgIHRyYWNlIC0+XG4gICAgICAgICAgRXhjZXB0aW9uLm1ldGhvZF9oYW5kbGVyICogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbyAqIHRyYWNlKVxuICAgICAgICBwYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICB+cHJpbnRfaWZfemVybyBrYXBwYV9oYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgaW5cbiAgICBsZXQgdHJhY2UgPSBzZXRfYW1iaWd1aXR5X2xldmVsIHRyYWNlIChoYW5kbGVfYW1iaWd1aXRpZXMgZWZmZWN0IHRydWUpIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZVxuICApIGVsc2VcbiAgICBlcnJvciwgcHJvZmlsaW5nX2luZm8sIHRyYWNlXG5cbmxldCBzcGxpdF9pbml0ID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLnNwbGl0X2luaXQpXG4gICAgICAgKFNvbWUgXCJcXHQtIHNwbGl0dGluZyBpbml0aWFsIGV2ZW50c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHNwbGl0IGluaXRpYWwgZXZlbnRzOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuRGVjb21wb3NlX2luaXRpYWxfc3RhdGUpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbFxuXG5sZXQgY3V0ID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW4gUy5QSC5CLlBCLkNJLlBvLmN1dFxuICAgICAgIChTb21lIFwiXFx0LSBjdXR0aW5nIGNvbmN1cnJlbnQgZXZlbnRzXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCBjb25jdXJyZW50IGV2ZW50czpcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uKVxuICAgIFJlcXVpcmVfdGhlX2Fic2NlbmNlX29mX2FtYmlndWl0eSBOZXV0cmFsXG5cbnR5cGUgb25fdGhlX2ZseV9jdXRfc3RhdGUgPSBTLlBILkIuUEIuQ0kuUG8ub25fdGhlX2ZseV9zdGF0ZVxuXG5sZXQgb25fdGhlX2ZseV9jdXRfaW5pdCA9IFMuUEguQi5QQi5DSS5Qby5pbml0X2N1dFxubGV0IG9uX3RoZV9mbHlfY3V0X3N0ZXAgPSBTLlBILkIuUEIuQ0kuUG8uY3V0X3N0ZXBcblxubGV0IG9uX3RoZV9mbHlfY3V0X2ZpbmFsaXplIGN1dF9zdGF0ZSA9XG4gIGZzdCAoUy5QSC5CLlBCLkNJLlBvLmZpbmFsaXplX2N1dCBjdXRfc3RhdGUpXG5cbmxldCBjdXRfcmV2X3RyYWNlIHJldl90cmFjZSA9XG4gIG9uX3RoZV9mbHlfY3V0X2ZpbmFsaXplXG4gICAgKExpc3QuZm9sZF9sZWZ0IG9uX3RoZV9mbHlfY3V0X3N0ZXAgb25fdGhlX2ZseV9jdXRfaW5pdCByZXZfdHJhY2UpXG5cbmxldCByZW1vdmVfb2JzX2JlZm9yZSBfcGFyYW1ldGVyIF9oYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfZWlkIHRyYWNlID1cbiAgKCBlcnJvcixcbiAgICBsb2dfaW5mbyxcbiAgICBsZXQgcmVjIGF1eCBsIHNjb3JlIG91dHB1dCA9XG4gICAgICBtYXRjaCBsIHdpdGhcbiAgICAgIHwgW10gLT4gTGlzdC5yZXYgb3V0cHV0LCBzY29yZVxuICAgICAgfCB0IDo6IHEgLT5cbiAgICAgICAgaWYgVHJhY2Uuc3RlcF9pc19vYnMgdCB0aGVuIChcbiAgICAgICAgICBtYXRjaCBUcmFjZS5zaW11bGF0aW9uX2luZm9fb2Zfc3RlcCB0IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gYXV4IHEgc2NvcmUgKHQgOjogb3V0cHV0KVxuICAgICAgICAgIHwgU29tZSB4IC0+XG4gICAgICAgICAgICBpZiBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgeCA+PSBsYXN0X2VpZCB0aGVuXG4gICAgICAgICAgICAgICggTGlzdC5yZXYgKExpc3QuZm9sZF9sZWZ0IChmdW4gbGlzdCBhIC0+IGEgOjogbGlzdCkgb3V0cHV0IGwpLFxuICAgICAgICAgICAgICAgIHNjb3JlIClcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgYXV4IHEgKHN1Y2Mgc2NvcmUpIG91dHB1dFxuICAgICAgICApIGVsc2VcbiAgICAgICAgICBhdXggcSBzY29yZSAodCA6OiBvdXRwdXQpXG4gICAgaW5cbiAgICBhdXggdHJhY2UgMCBbXSApXG5cbmxldCByZW1vdmVfb2JzX2JlZm9yZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsYXN0X2luZm8gdHJhY2UgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgLT5cbiAgICAgICAgIHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3RfaW5mbylcbiAgICAgICAoU29tZSBcIlxcdC0gUmVtb3ZpbmcgYWxyZWFkeSB2aXNpdGVkIG9ic2VydmFibGUgaGl0c1wiKVxuICAgICAgIFwiVHJhY2UgYWZ0ZXIgaGF2aW5nIHJlbW92ZWQgc2VlbiBvYnNlcnZhYmxlIGhpdHNcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBhcnRpYWxfb3JkZXJfcmVkdWN0aW9uKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWwgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2VcblxubGV0IHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgbGFzdF9pbmZvIHRyYWNlID1cbiAgbWF0Y2ggbGFzdF9pbmZvIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgdHJhY2VcbiAgfCBTb21lIGwgLT5cbiAgICBsZXQgbGFzdCA9XG4gICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAoZnVuIHJlc3VsdCB4IC0+XG4gICAgICAgICAgbGV0IGxhc3RfZWlkID0gVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkIHggaW5cbiAgICAgICAgICBtYXggcmVzdWx0IGxhc3RfZWlkKVxuICAgICAgICAwIGxcbiAgICBpblxuICAgIHJlbW92ZV9vYnNfYmVmb3JlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxhc3QgdHJhY2VcblxubGV0IGZpbGxfc2lwaG9uID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAobW9uYWRpY19saWZ0IFMuUEguQi5QQi5DSS5Qby5LLmZpbGxfc2lwaG9uKVxuICAgICAgIChTb21lIFwiXFx0LSBkZXRlY3Rpbmcgc2lwaG9uc1wiKSBcIlRyYWNlIGFmdGVyIGhhdmluZyBkZXRlY3RlZCBzaXBob25zOlxcblwiXG4gICAgICAgU3RvcnlQcm9maWxpbmcuU2lwaG9uX2RldGVjdGlvbilcbiAgICBSZXF1aXJlX3RoZV9hYnNjZW5jZV9vZl9hbWJpZ3VpdHkgTWF5X2FkZF9hbWJpZ3VpdGllc1xuXG5sZXQgKHJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnMgOiAodHJhY2UsIHRyYWNlKSB1bmFyeSkgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlblxuICAgICAgIChtb25hZGljX2xpZnRcbiAgICAgICAgICAoTGlzdF91dGlsLnJlbW92ZV9zdWZmaXhfYWZ0ZXJfbGFzdF9vY2N1cnJlbmNlIFRyYWNlLnN0ZXBfaXNfb2JzKSlcbiAgICAgICAoU29tZSBcIlxcdC0gcmVtb3ZpbmcgZXZlbnRzIG9jY3VycmluZyBhZnRlciB0aGUgbGFzdCBvYnNlcnZhYmxlXCIpXG4gICAgICAgXCJUcmFjZSBhZnRlciBoYXZpbmcgcmVtb3ZlZCB0aGUgZXZlbnRzIGFmdGVyIHRoZSBsYXN0IG9ic2VydmFibGVcIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlJlbW92ZV9ldmVudHNfYWZ0ZXJfbGFzdF9vYnNlcnZhYmxlKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWxcblxubGV0IHJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgPVxuICBsaWZ0X3RvX2NhcmVfYWJvdXRfYW1iaWd1aXRpZXNcbiAgICAodHJhbnNmb3JtX3RyYWNlX2dlbiBTLlBILkIuUEIuQ0kuY3V0XG4gICAgICAgKFNvbWUgXCJcXHQtIGRldGVjdGluZyBwc2V1ZG8gaW52ZXJzZSBldmVudHNcIilcbiAgICAgICBcIlRyYWNlIGFmdGVyIGhhdmluZyByZW1vdmVkIHBzZXVkbyBpbnZlcnNlIGV2ZW50czpcXG5cIlxuICAgICAgIFN0b3J5UHJvZmlsaW5nLlBzZXVkb19pbnZlcnNlX2RlbGV0aW9uKVxuICAgIERvX25vdF9jYXJlIE5ldXRyYWxcblxudHlwZSBjZmxvd19ncmlkID0gQ2F1c2FsLmdyaWRcbnR5cGUgZW5yaWNoZWRfY2Zsb3dfZ3JpZCA9IENhdXNhbC5lbnJpY2hlZF9ncmlkXG50eXBlIG11c2ljYWxfZ3JpZCA9IFMuUEguQi5ibGFja2JvYXJkXG50eXBlIHN0b3J5X3RhYmxlID0geyBzdG9yeV9jb3VudGVyOiBpbnQ7IHN0b3J5X2xpc3Q6IEQudGFibGUgfVxuXG5sZXQgY291bnRfc3RvcmllcyBzdG9yeV90YWJsZSA9IEQuY291bnRfc3RvcmllcyBzdG9yeV90YWJsZS5zdG9yeV9saXN0XG5cbnR5cGUgb2JzZXJ2YWJsZV9oaXQgPSB7XG4gIGxpc3Rfb2ZfYWN0aW9uczogUy5QSC51cGRhdGVfb3JkZXIgbGlzdDtcbiAgbGlzdF9vZl9ldmVudHM6IHN0ZXBfaWQgbGlzdDtcbiAgcnVudGltZV9pbmZvOiB1bml0IFRyYWNlLlNpbXVsYXRpb25faW5mby50IG9wdGlvbjtcbn1cblxubGV0IGdldF9ldmVudF9saXN0X2Zyb21fb2JzZXJ2YWJsZV9oaXQgYSA9IGEubGlzdF9vZl9ldmVudHNcbmxldCBnZXRfcnVudGltZV9pbmZvX2Zyb21fb2JzZXJ2YWJsZV9oaXQgYSA9IGEucnVudGltZV9pbmZvXG5sZXQgX2dldF9saXN0X29yZGVyIGEgPSBhLmxpc3Rfb2ZfYWN0aW9uc1xubGV0IGVycm9yX2luaXQgPSBFeGNlcHRpb24uZW1wdHlfZXJyb3JfaGFuZGxlclxuXG5sZXQgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYiBwcm9maWxpbmdfaW5mb1xuICAgIGMgZCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGwgPSBTLlBILmZvcmNlZF9ldmVudHMgYSBiIHByb2ZpbGluZ19pbmZvIGMgZCBpblxuICAoIGVycm9yLFxuICAgIHByb2ZpbGluZ19pbmZvLFxuICAgIExpc3QucmV2X21hcFxuICAgICAgKGZ1biAoYSwgYiwgYykgLT5cbiAgICAgICAgeyBsaXN0X29mX2FjdGlvbnMgPSBhOyBsaXN0X29mX2V2ZW50cyA9IGI7IHJ1bnRpbWVfaW5mbyA9IGMgfSlcbiAgICAgIChMaXN0LnJldiBsKSApXG5cbmxldCBleHRyYWN0X29ic2VydmFibGVfaGl0X2Zyb21fbXVzaWNhbF9ub3RhdGlvbiBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcHJvZmlsaW5nX2luZm9cbiAgICBjIHN0cmluZyBkID1cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgbCA9IFMuUEguZm9yY2VkX2V2ZW50cyBhIGIgcHJvZmlsaW5nX2luZm8gYyBkIGluXG4gIG1hdGNoIGwgd2l0aFxuICB8IFsgKGEsIGIsIGMpIF0gLT5cbiAgICAoIGVycm9yLFxuICAgICAgcHJvZmlsaW5nX2luZm8sXG4gICAgICB7IGxpc3Rfb2ZfYWN0aW9ucyA9IGE7IGxpc3Rfb2ZfZXZlbnRzID0gYjsgcnVudGltZV9pbmZvID0gYyB9IClcbiAgfCBbXSAtPiBmYWlsd2l0aCAoc3RyaW5nIF4gXCIgbm8gc3RvcnlcIilcbiAgfCBfIDo6IF8gLT4gZmFpbHdpdGggKHN0cmluZyBeIFwiIHNldmVyYWwgc3Rvcmllc1wiKVxuXG5sZXQgdHJhbnNsYXRlIHAgaCBwcm9maWxpbmdfaW5mbyBlIGIgbGlzdCA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIChsaXN0LCBfKSA9XG4gICAgUy50cmFuc2xhdGUgcCBoIHByb2ZpbGluZ19pbmZvIGUgYiBsaXN0XG4gIGluXG4gIGVycm9yLCBwcm9maWxpbmdfaW5mbywgdHJhY2Vfb2ZfcHJldHJhY2UgbGlzdFxuXG5sZXQgY2F1c2FsX3ByZWZpeF9vZl9hbl9vYnNlcnZhYmxlX2hpdCBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHN0cmluZyBibGFja2JvYXJkIChlbnJpY2hlZF9ncmlkIDogZW5yaWNoZWRfY2Zsb3dfZ3JpZClcbiAgICBvYnNlcnZhYmxlX2lkID1cbiAgbGV0IGVpZCA9XG4gICAgbWF0Y2ggZ2V0X2V2ZW50X2xpc3RfZnJvbV9vYnNlcnZhYmxlX2hpdCBvYnNlcnZhYmxlX2lkIHdpdGhcbiAgICB8IFsgYSBdIC0+IGFcbiAgICB8IFtdIC0+IGZhaWx3aXRoIChcIm5vIG9ic2VydmFibGUgaW4gdGhhdCBzdG9yeVwiIF4gc3RyaW5nKVxuICAgIHwgXyAtPiBmYWlsd2l0aCAoXCJzZXZlcmFsIG9ic2VydmFibGVzIGluIHRoYXQgc3RvcnlcIiBeIHN0cmluZylcbiAgaW5cbiAgbGV0IGV2ZW50X2lkX2xpc3QgPVxuICAgIEdyYXBoX2Nsb3N1cmUuZ2V0X2xpc3RfaW5faW5jcmVhc2luZ19vcmRlcl93aXRoX2xhc3RfZXZlbnRcbiAgICAgIChTLlBILkIuUEIuaW50X29mX3N0ZXBfaWQgKFMuUEguQi5QQi5pbmNfc3RlcF9pZCBlaWQpKVxuICAgICAgZW5yaWNoZWRfZ3JpZC5DYXVzYWwucHJlY19zdGFyXG4gIGluXG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIG91dHB1dCA9XG4gICAgdHJhbnNsYXRlIHBhcmFtZXRlciBoYW5kbGVyIHByb2ZpbGluZ19pbmZvIGVycm9yIGJsYWNrYm9hcmRcbiAgICAgIChMaXN0LnJldl9tYXAgUy5QSC5CLlBCLnN0ZXBfaWRfb2ZfaW50IChMaXN0LnJldiBldmVudF9pZF9saXN0KSlcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBvdXRwdXRcblxubGV0IGV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIGEgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gYlxuICAgIChwIDogU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mbykgYyBkIGUgZiBnID1cbiAgUy5QSC5CLmV4cG9ydF9ibGFja2JvYXJkX3RvX3hscyBhIGIgcCBjIGQgZSBmIGdcblxubGV0IHByaW50X211c2ljYWxfZ3JpZCBhID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGIgcCBjIGQgPVxuICBTLlBILkIucHJpbnRfYmxhY2tib2FyZCBhIGIgcCBjIGRcblxubGV0IGNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXJcbiAgICBwcm9maWxpbmdfaW5mbyBlcnJvciA9XG4gIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm8sIGluaXQgPVxuICAgIEQuaW5pdF90YWJsZSBwYXJhbWV0ZXJzIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3JcbiAgaW5cbiAgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCB7IHN0b3J5X2NvdW50ZXIgPSAxOyBzdG9yeV9saXN0ID0gaW5pdCB9XG5cbmxldCBfZ2V0X3RyYWNlX29mX3N0b3J5IChfLCBfLCBfLCB5LCBfKSA9IHRyYWNlX29mX3ByZXRyYWNlIHlcbmxldCBfZ2V0X2luZm9fb2Zfc3RvcnkgKF8sIF8sIF8sIF8sIHQpID0gdFxuXG5sZXQgdGlja19vcHQgcGFyYW1ldGVyIGJhciA9XG4gIG1hdGNoIGJhciB3aXRoXG4gIHwgTm9uZSAtPiBiYXJcbiAgfCBTb21lIChsb2dnZXIsIGJhcikgLT5cbiAgICBTb21lXG4gICAgICAoIGxvZ2dlcixcbiAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3RvcmllcyBsb2dnZXIgQ29uZmlndXJhdGlvbi5lbXB0eVxuICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILnNhdmVfcHJvZ3Jlc3NfYmFyIHBhcmFtZXRlcilcbiAgICAgICAgICBiYXIgKVxuXG5sZXQgY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCBsb2dnZXIgPSBMb2dnZXJzLnByaW50X25ld2xpbmUgbG9nZ2VyXG5cbmxldCBwcmludF9mYWlscyBsb2dnZXIgcyBuID1cbiAgbWF0Y2ggbiB3aXRoXG4gIHwgMCAtPiAoKVxuICB8IDEgLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkAuXFx0IDEgJXMgaGFzIGZhaWxlZEAuXCIgc1xuICB8IF8gLT4gTG9nZ2Vycy5mcHJpbnRmIGxvZ2dlciBcIkAuXFx0ICVpICVzcyBoYXZlIGZhaWxlZEAuXCIgbiBzXG5cbmxldCBpbmNfZmFpbHMgYSBhJyBiID1cbiAgaWYgYSA9PSBhJyB0aGVuXG4gICAgc3VjYyBiXG4gIGVsc2VcbiAgICBiXG5cbmxldCBmb2xkX3N0b3J5X3RhYmxlX2dlbiBsb2dnZXIgcGFyYW1ldGVyID8oc2hhbGxfd2VfY29tcHV0ZSA9IHdlX3NoYWxsKVxuICAgID8oc2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gPSB3ZV9zaGFsbClcbiAgICAoaGFuZGxlciA6IGthcHBhX2hhbmRsZXIpIChwcm9maWxpbmdfaW5mbyA6IHByb2ZpbGluZ19pbmZvKSBlcnJvciBzXG4gICAgKGYgOiAodHJhY2UsIHRyYWNlX3J1bnRpbWVfaW5mbyBsaXN0LCAnYSwgJ2EpIHRlcm5hcnkpIGwgYSA9XG4gIGxldCBuX3N0b3JpZXNfaW5wdXQgPSBjb3VudF9zdG9yaWVzIGwgaW5cbiAgbGV0IHByb2dyZXNzX2JhciA9XG4gICAgU29tZVxuICAgICAgKCBsb2dnZXIsXG4gICAgICAgIFRpY2tfc3Rvcmllcy50aWNrX3N0b3JpZXMgbG9nZ2VyIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5zYXZlX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIpXG4gICAgICAgICAgKGZhbHNlLCAwLCAwLCBuX3N0b3JpZXNfaW5wdXQpIClcbiAgaW5cbiAgbGV0IGcgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3Igc3RvcnkgaW5mb1xuICAgICAgKGssIHByb2dyZXNzX2JhciwgYSwgbl9mYWlscykgPVxuICAgIGxldCBldmVudCA9IFN0b3J5UHJvZmlsaW5nLlN0b3J5IGsgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFAuYWRkX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvXG4gICAgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvLCBhJyA9XG4gICAgICBmIHBhcmFtZXRlciB+c2hhbGxfd2VfY29tcHV0ZSB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICAgICAgICAodHJhY2Vfb2ZfcHJldHJhY2Vfd2l0aF9hbWJpZ3VpdHkgZmFsc2Ugc3RvcnkpXG4gICAgICAgIGluZm8gYVxuICAgIGluXG4gICAgbGV0IHByb2dyZXNzX2JhciA9IHRpY2tfb3B0IHBhcmFtZXRlciBwcm9ncmVzc19iYXIgaW5cbiAgICBsZXQgbl9mYWlscyA9IGluY19mYWlscyBhIGEnIG5fZmFpbHMgaW5cbiAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvID1cbiAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9cbiAgICBpblxuICAgIGVycm9yLCBwcm9maWxpbmdfaW5mbywgKHN1Y2MgaywgcHJvZ3Jlc3NfYmFyLCBhJywgbl9mYWlscylcbiAgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mbywgKF8sIF8sIGEsIG5fZmFpbHMpID1cbiAgICBELmZvbGRfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgZyBsLnN0b3J5X2xpc3RcbiAgICAgICgxLCBwcm9ncmVzc19iYXIsIGEsIDApXG4gIGluXG4gIGxldCAoKSA9IGNsb3NlX3Byb2dyZXNzX2Jhcl9vcHQgbG9nZ2VyIGluXG4gIGxldCAoKSA9IHByaW50X2ZhaWxzIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnIgcyBuX2ZhaWxzIGluXG4gIGVycm9yLCAocHJvZmlsaW5nX2luZm8gOiBwcm9maWxpbmdfaW5mbyksIGFcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGEgPVxuICBmb2xkX3N0b3J5X3RhYmxlX2dlblxuICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZSA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGFcblxubGV0IGZvbGRfc3RvcnlfdGFibGVfd2l0aG91dF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIHByb2ZpbGluZ19pbmZvIGVycm9yIHMgZiBsIGEgPVxuICBmb2xkX3N0b3J5X3RhYmxlX2dlbiBMb2dnZXJzLmR1bW15X3R4dF9sb2dnZXIgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uIGhhbmRsZXIgcHJvZmlsaW5nX2luZm8gZXJyb3IgcyBmIGwgYVxuXG5sZXQgZ2V0X2NvdW50ZXIgc3RvcnlfbGlzdCA9IHN0b3J5X2xpc3Quc3RvcnlfY291bnRlclxubGV0IGdldF9zdG9yaWVzIHN0b3J5X2xpc3QgPSBzdG9yeV9saXN0LnN0b3J5X2xpc3RcblxubGV0IF9pbmNfY291bnRlciBzdG9yeV9saXN0ID1cbiAgeyBzdG9yeV9saXN0IHdpdGggc3RvcnlfY291bnRlciA9IHN1Y2Mgc3RvcnlfbGlzdC5zdG9yeV9jb3VudGVyIH1cblxubGV0IGJ1aWxkX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZSBib29sID1cbiAgbGV0IGVycm9yLCBjb21wdXRhdGlvbl9pbmZvID1cbiAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmFkZF9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5CdWlsZF9ncmlkIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBsZXQgZ3JpZCA9IFMuUEguQi5QQi5DSS5Qby5LLmJ1aWxkX2dyaWQgdHJhY2UgYm9vbCBoYW5kbGVyIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5CdWlsZF9ncmlkIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBlcnJvciwgY29tcHV0YXRpb25faW5mbywgZ3JpZFxuXG5sZXQgc3RvcmVfdHJhY2UgKHBhcmFtZXRlciA6IHBhcmFtZXRlcikgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgIGNvbXB1dGF0aW9uX2luZm8gZXJyb3IgdHJhY2Ugb2JzX2luZm8gc3RvcnlfdGFibGUgPVxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgIGVycm9yIFN0b3J5UHJvZmlsaW5nLlN0b3JlX3RyYWNlIE5vbmUgY29tcHV0YXRpb25faW5mb1xuICBpblxuICBsZXQgcHJldHJhY2UgPSBnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UgaW5cbiAgbGV0IHRyYWNlMiA9IGdldF9jb21wcmVzc2VkX3RyYWNlIHRyYWNlIGluXG4gIGxldCBib29sID0gbm90IChpc19jb21wcmVzc2VkX3RyYWNlIHRyYWNlKSBpblxuICBsZXQgZXJyb3IsIGNvbXB1dGF0aW9uX2luZm8sIGdyaWQgPVxuICAgIGJ1aWxkX2dyaWQgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciB0cmFjZTIgYm9vbFxuICBpblxuICBsZXQgY29tcHV0YXRpb25faW5mbyA9IFAuc2V0X2dyaWRfZ2VuZXJhdGlvbiBjb21wdXRhdGlvbl9pbmZvIGluXG4gIGxldCBzdG9yeV9pbmZvID1cbiAgICBMaXN0LnJldl9tYXBcbiAgICAgIChUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIChQLmNvcHkgY29tcHV0YXRpb25faW5mbykpXG4gICAgICAoTGlzdC5yZXYgb2JzX2luZm8pXG4gIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbywgc3RvcnlfbGlzdCA9XG4gICAgRC5hZGRfc3RvcnkgcGFyYW1ldGVyIGhhbmRsZXIgY29tcHV0YXRpb25faW5mbyBlcnJvciBncmlkIHByZXRyYWNlXG4gICAgICBzdG9yeV9pbmZvIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcbiAgaW5cbiAgbGV0IHN0b3J5X3RhYmxlID1cbiAgICB7IHN0b3J5X2xpc3Q7IHN0b3J5X2NvdW50ZXIgPSBzdG9yeV90YWJsZS5zdG9yeV9jb3VudGVyICsgMSB9XG4gIGluXG4gIGxldCBlcnJvciwgY29tcHV0YXRpb25faW5mbyA9XG4gICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5jbG9zZV9ldmVudFxuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBlcnJvciBTdG9yeVByb2ZpbGluZy5TdG9yZV90cmFjZSBOb25lIGNvbXB1dGF0aW9uX2luZm9cbiAgaW5cblxuICBlcnJvciwgY29tcHV0YXRpb25faW5mbywgc3RvcnlfdGFibGVcblxubGV0IGZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBzdG9yeV90YWJsZSA9XG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgIEQuaGFzaF9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0b3J5X3RhYmxlLnN0b3J5X2xpc3RcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCB7IHN0b3J5X3RhYmxlIHdpdGggc3RvcnlfbGlzdCA9IGxpc3QgfVxuXG5sZXQgY29tcHJlc3MgP2hldXJpc3RpYyBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlID1cbiAgbWF0Y2ggcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgfCBOb25lIC0+IGVycm9yLCBsb2dfaW5mbywgWyB0cmFjZSBdXG4gIHwgU29tZSBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgIGxldCAoKSA9XG4gICAgICBpZlxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgdGhlblxuICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIFwiU3RhcnQgb25lIGNhdXNhbCBjb21wcmVzc2lvblwiKSlcbiAgICBpblxuICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgIGN1dCBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgIGluXG4gICAgZXJyb3IsIGxvZ19pbmZvLCBbIHRyYWNlIF1cbiAgfCBTb21lIChTdG9yeV9qc29uLldlYWsgfCBTdG9yeV9qc29uLlN0cm9uZykgLT5cbiAgICBsZXQgZXZlbnQsIHMgPVxuICAgICAgbWF0Y2ggcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkguY3VycmVudF9jb21wcmVzc2lvbl9tb2RlIHdpdGhcbiAgICAgIHwgU29tZSBTdG9yeV9qc29uLldlYWsgLT5cbiAgICAgICAgU3RvcnlQcm9maWxpbmcuV2Vha19jb21wcmVzc2lvbiwgXCJTdGFydCBvbmUgd2VhayBjb21wcmVzc2lvblwiXG4gICAgICB8IF8gLT4gU3RvcnlQcm9maWxpbmcuU3Ryb25nX2NvbXByZXNzaW9uLCBcIlN0YXJ0IG9uZSBzdHJvbmcgY29tcHJlc3Npb25cIlxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGlmXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX21vZGUgcGFyYW1ldGVyXG4gICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICB0aGVuXG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkgucHVzaF9qc29uIHBhcmFtZXRlclxuICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLklucHJvZ3Jlc3MsIHMpKVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBQLmFkZF9ldmVudFxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgKFNvbWUgKGZ1biAoKSAtPiBzaXplX29mX3ByZXRyYWNlIHRyYWNlKSlcbiAgICAgICAgbG9nX2luZm9cbiAgICBpblxuICAgIGxldCBldmVudF9saXN0ID0gZ2V0X3ByZXRyYWNlX29mX3RyYWNlIHRyYWNlIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgYmxhY2tib2FyZCA9XG4gICAgICBTLlBILkIuaW1wb3J0ID9oZXVyaXN0aWMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZXZlbnRfbGlzdFxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICBTLlBILmZvcmNlZF9ldmVudHMgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgIGluXG4gICAgbGV0IGxpc3Rfb3JkZXIgPVxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IChsaXN0X29yZGVyLCBfLCBfKSA6OiBfIC0+IGxpc3Rfb3JkZXJcbiAgICAgIHwgXyAtPiBbXVxuICAgIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbywgKGJsYWNrYm9hcmQsIG91dHB1dCwgbGlzdCkgPVxuICAgICAgUy5jb21wcmVzcyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2JvYXJkIGxpc3Rfb3JkZXJcbiAgICBpblxuICAgIGxldCBsaXN0ID1cbiAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAoZnVuIHByZXRyYWNlIC0+XG4gICAgICAgICAgbGV0IGV2ZW50X2xpc3QgPSBTLnRyYW5zbGF0ZV9yZXN1bHQgcHJldHJhY2UgaW5cbiAgICAgICAgICBsZXQgZXZlbnRfbGlzdCA9IFMuUEguQi5QQi5DSS5Qby5LLmNsZWFuX2V2ZW50cyBldmVudF9saXN0IGluXG4gICAgICAgICAgYnVpbGRfY29tcHJlc3NlZF90cmFjZSBldmVudF9saXN0IHByZXRyYWNlKVxuICAgICAgICBsaXN0XG4gICAgaW5cbiAgICBsZXQgbG9nX2luZm8gPSBQLnNldF9zdG9yeV9yZXNlYXJjaF90aW1lIGxvZ19pbmZvIGluXG4gICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICBQLmNsb3NlX2V2ZW50XG4gICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICBlcnJvciBldmVudFxuICAgICAgICAoU29tZSAoZnVuICgpIC0+IHNpemVfb2ZfcHJldHJhY2UgdHJhY2UpKVxuICAgICAgICBsb2dfaW5mb1xuICAgIGluXG4gICAgbGV0IGVycm9yLCAoKSA9XG4gICAgICBpZiBTLlBILkIuaXNfZmFpbGVkIG91dHB1dCB0aGVuXG4gICAgICAgIEV4Y2VwdGlvbi53YXJuXG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgX19QT1NfXyB+bWVzc2FnZTpcIk9uZSBjb21wcmVzc2lvbiBoYXMgZmFpbGVkXCIgRXhpdCAoKVxuICAgICAgZWxzZVxuICAgICAgICBlcnJvciwgKClcbiAgICBpblxuICAgIGxldCBlcnJvciA9XG4gICAgICBpZiBkZWJ1Z19tb2RlIHRoZW4gKFxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIExvZ2dlcnMuZnByaW50ZiBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5sb2dnZXJfZXJyXG4gICAgICAgICAgICBcIlxcdFxcdCAqIHJlc3VsdFwiXG4gICAgICAgIGluXG4gICAgICAgIGxldCBlcnJvciA9XG4gICAgICAgICAgaWYgUy5QSC5CLmlzX2ZhaWxlZCBvdXRwdXQgdGhlbiAoXG4gICAgICAgICAgICBsZXQgZXJyb3IsIF9sb2dfaW5mbywgKCkgPVxuICAgICAgICAgICAgICBTLlBILkIuZXhwb3J0X2JsYWNrYm9hcmRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgXCJGQUlMXCIgMCAwIGJsYWNrYm9hcmRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGYgcGFyYW1ldGVyLlMuUEguQi5QQi5DSS5Qby5LLkgubG9nZ2VyX2VyclxuICAgICAgICAgICAgICAgIFwiRmFpbF90b19jb21wcmVzc1wiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnJcbiAgICAgICAgICAgICAgICBcIlN1Y2NlZWRfdG9fY29tcHJlc3NcIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBlcnJvclxuICAgICAgKSBlbHNlXG4gICAgICAgIGVycm9yXG4gICAgaW5cbiAgICBlcnJvciwgbG9nX2luZm8sIGxpc3RcblxubGV0IHN0cm9uZ2x5X2NvbXByZXNzID9oZXVyaXN0aWMgcGFyYW1ldGVyID1cbiAgY29tcHJlc3MgP2hldXJpc3RpYyAoUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fc3Ryb25nIHBhcmFtZXRlcilcblxubGV0IHdlYWtseV9jb21wcmVzcyA/aGV1cmlzdGljIHBhcmFtZXRlciA9XG4gIGNvbXByZXNzID9oZXVyaXN0aWMgKFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3dlYWsgcGFyYW1ldGVyKVxuXG5sZXQgY29udmVydF90cmFjZV9pbnRvX2dyaWQgdHJhY2UgaGFuZGxlciA9XG4gIGxldCBldmVudF9saXN0ID0gZ2V0X2NvbXByZXNzZWRfdHJhY2UgdHJhY2UgaW5cbiAgUy5QSC5CLlBCLkNJLlBvLksuYnVpbGRfZ3JpZCBldmVudF9saXN0XG4gICAgKG5vdCAoaXNfY29tcHJlc3NlZF90cmFjZSB0cmFjZSkpXG4gICAgaGFuZGxlclxuXG5sZXQgY29udmVydF90cmFjZV9pbnRvX211c2ljYWxfbm90YXRpb24gcGFyYW1ldGVycyA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBrYXBwYV9oYW5kbGVyXG4gICAgcHJvZmlsaW5nX2luZm8gZXJyb3IgdHJhY2UgPVxuICBTLlBILkIuaW1wb3J0IHBhcmFtZXRlcnMga2FwcGFfaGFuZGxlciBwcm9maWxpbmdfaW5mbyBlcnJvclxuICAgIChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfY2xvc3VyZSBjb25maWcgbG9nZ2VyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciBncmlkID1cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0ID1cbiAgICBDYXVzYWwuZW5yaWNoX2dyaWRcbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgbG9nZ2VyKVxuICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBjb25maWcgZ3JpZFxuICBpblxuICBlcnJvciwgbG9nX2luZm8sIG91dHB1dFxuXG5sZXQgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhfcHJvZ3Jlc3NfYmFyXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRob3V0X2FfcHJvZ3Jlc3NfYmFyID1cbiAgZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX2Nsb3N1cmVcbiAgICBHcmFwaF9jbG9zdXJlLmNvbmZpZ19iaWdfZ3JhcGhfd2l0aG91dF9wcm9ncmVzc19iYXJcblxubGV0IF9lbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlXG4gICAgR3JhcGhfY2xvc3VyZS5jb25maWdfYmlnX2dyYXBoX3dpdGhvdXRfcHJvZ3Jlc3NfYmFyXG5cbmxldCBlbnJpY2hfZ3JpZF93aXRoX3RyYW5zaXRpdmVfcGFzdF9vZl9lYWNoX25vZGVfd2l0aG91dF9hX3Byb2dyZXNzX2JhciA9XG4gIGVucmljaF9ncmlkX3dpdGhfdHJhbnNpdGl2ZV9jbG9zdXJlIEdyYXBoX2Nsb3N1cmUuY29uZmlnX3NtYWxsX2dyYXBoXG5cbmxldCBzb3J0X3N0b3J5X2xpc3QgPSBELnNvcnRfbGlzdFxuXG5sZXQgZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgeCA9XG4gIGxldCBhLCBsb2dfaW5mbywgYiA9XG4gICAgc29ydF9zdG9yeV9saXN0IHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIChnZXRfc3RvcmllcyB4KVxuICBpblxuICBhLCBsb2dfaW5mbywgYlxuXG5sZXQgaGFzX29icyB4ID0gTGlzdC5leGlzdHMgVHJhY2Uuc3RlcF9pc19vYnMgKGdldF9wcmV0cmFjZV9vZl90cmFjZSB4KVxuXG5sZXQgZm9sZF9sZWZ0X3dpdGhfcHJvZ3Jlc3NfYmFyID8oZXZlbnQgPSBTdG9yeVByb2ZpbGluZy5EdW1teSkgcGFyYW1ldGVyXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlID0gd2Vfc2hhbGwpXG4gICAgPyhzaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbiA9IHdlX3NoYWxsKVxuICAgID8ocHJpbnRfaWZfemVybyA9IHdlX3NoYWxsKSBoYW5kbGVyIHByb2ZpbGluZ19pbmZvcm1hdGlvbiBlcnJvclxuICAgIChmIDogKCdhLCAnYiwgJ2EpIGJpbmFyeSkgYSBsaXN0ID1cbiAgbGV0IG4gPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCBzdHJpbmcsIChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uKSA9XG4gICAgaWYgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5pc19kdW1teSBldmVudCB0aGVuXG4gICAgICBcIlwiLCAoZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbilcbiAgICBlbHNlXG4gICAgICAoIFN0b3J5UHJvZmlsaW5nLnN0cmluZ19vZl9zdGVwX2tpbmQgZXZlbnQsXG4gICAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuYWRkX2V2ZW50XG4gICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgZXJyb3IgZXZlbnRcbiAgICAgICAgICAoU29tZSAoZnVuIF8gLT4gTGlzdC5sZW5ndGggbGlzdCkpXG4gICAgICAgICAgcHJvZmlsaW5nX2luZm9ybWF0aW9uIClcbiAgaW5cbiAgbGV0IHByb2dyZXNzX2JhciA9XG4gICAgVGlja19zdG9yaWVzLnRpY2tfc3Rvcmllc1xuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICBDb25maWd1cmF0aW9uLmVtcHR5XG4gICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhclxuICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgKGZhbHNlLCAwLCAwLCBuKVxuICBpblxuICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiwgXywgXywgYSwgbl9mYWlsID1cbiAgICBsZXQgcmVjIGF1eCBsaXN0IChlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGssIGEsIG5fZmFpbCkgPVxuICAgICAgbGV0IGV2ZW50ID0gU3RvcnlQcm9maWxpbmcuU3RvcnkgayBpblxuICAgICAgbWF0Y2ggbGlzdCB3aXRoXG4gICAgICB8IFtdIC0+IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgaywgYSwgbl9mYWlsXG4gICAgICB8IHggOjogdGFpbCAtPlxuICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgUC5hZGRfZXZlbnRcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgICAgICAgZXJyb3IgZXZlbnQgTm9uZSBwcm9maWxpbmdfaW5mb3JtYXRpb25cbiAgICAgICAgaW5cbiAgICAgICAgbGV0IG91dHB1dF9vcHQgPVxuICAgICAgICAgIHRyeVxuICAgICAgICAgICAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGEnID1cbiAgICAgICAgICAgICAgZiBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGVcbiAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb24gfnByaW50X2lmX3plcm8gaGFuZGxlclxuICAgICAgICAgICAgICAgIHByb2ZpbGluZ19pbmZvcm1hdGlvbiBlcnJvciBhIHhcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgYmFyID1cbiAgICAgICAgICAgICAgVGlja19zdG9yaWVzLnRpY2tfc3Rvcmllc1xuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uZW1wdHlcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5zYXZlX3Byb2dyZXNzX2JhclxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICBiYXJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbl9mYWlsID0gaW5jX2ZhaWxzIGEgYScgbl9mYWlsIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBlcnJvciBldmVudCBOb25lIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIFNvbWUgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIGJhciwgayArIDEsIGEnLCBuX2ZhaWwpXG4gICAgICAgICAgd2l0aCBTeXMuQnJlYWsgLT4gTm9uZVxuICAgICAgICBpblxuICAgICAgICAobWF0Y2ggb3V0cHV0X29wdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIGxldCBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uID1cbiAgICAgICAgICAgIFAuY2xvc2VfZXZlbnRcbiAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gICAgICAgICAgaW5cbiAgICAgICAgICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBiYXIsIGsgKyAxLCBhLCBuX2ZhaWxcbiAgICAgICAgfCBTb21lIHJlbWFuZW50IC0+IGF1eCB0YWlsIHJlbWFuZW50KVxuICAgIGluXG4gICAgYXV4IGxpc3QgKGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24sIHByb2dyZXNzX2JhciwgMSwgYSwgMClcbiAgaW5cbiAgbGV0ICgpID0gY2xvc2VfcHJvZ3Jlc3NfYmFyX29wdCAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikgaW5cbiAgbGV0IGVycm9yLCBwcm9maWxpbmdfaW5mb3JtYXRpb24gPVxuICAgIGlmIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuaXNfZHVtbXkgZXZlbnQgdGhlblxuICAgICAgZXJyb3IsIHByb2ZpbGluZ19pbmZvcm1hdGlvblxuICAgIGVsc2VcbiAgICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfZXZlbnRcbiAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgIGVycm9yIGV2ZW50IE5vbmUgcHJvZmlsaW5nX2luZm9ybWF0aW9uXG4gIGluXG4gIGxldCAoKSA9IHByaW50X2ZhaWxzIHBhcmFtZXRlci5TLlBILkIuUEIuQ0kuUG8uSy5ILmxvZ2dlcl9lcnIgc3RyaW5nIG5fZmFpbCBpblxuICBlcnJvciwgcHJvZmlsaW5nX2luZm9ybWF0aW9uLCBhXG5cbmxldCBfZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc190aHJvdWdoX2FfZ3JpZF93aXRoX2FfcHJvZ3Jlc3NfYmFyXG4gICAgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZiB0IGEgPVxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHQgaGFuZGxlciBpblxuICBDYXVzYWwuZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29icyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhciBncmlkIGYgKGVycm9yLCBsb2dfaW5mbywgYSlcblxubGV0IGZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXJcbiAgICA/c2hhbGxfd2VfY29tcHV0ZTpfID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGxvZ19zdGVwIGRlYnVnX21vZGUgY291bnRlciBmIHQgYSA9XG4gIGxldCAoKSA9XG4gICAgaWYgbG9nX3N0ZXAgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdC0gYmxhY2tib2FyZCBnZW5lcmF0aW9uIEAuXCJcbiAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrYm9hcmQgPVxuICAgIGNvbnZlcnRfdHJhY2VfaW50b19tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvXG4gICAgICBlcnJvciBibGFja2JvYXJkXG4gIGluXG4gIGxldCBuX3N0b3JpZXMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gIGxldCAoKSA9XG4gICAgaWYgbG9nX3N0ZXAgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdC0gY29tcHV0aW5nIGNhdXNhbCBwYXN0IG9mIGVhY2ggb2JzZXJ2ZWQgZXZlbnRzICglaSlALlwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICBuX3N0b3JpZXNcbiAgaW5cbiAgKCogZ2VuZXJhdGlvbiBvZiB1bmNvbXByZXNzZWQgc3RvcmllcyAqKVxuICBsZXQgKCkgPVxuICAgIGlmIGRlYnVnX21vZGUgcGFyYW1ldGVyIHRoZW5cbiAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgXCIlc1xcdFxcdCogY2F1c2FsIGNvbXByZXNzaW9uIFwiXG4gICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICBpblxuICBsZXQgbG9nX2luZm8gPSBQLnNldF9zdGFydF9jb21wcmVzc2lvbiBsb2dfaW5mbyBpblxuICBsZXQgZ3JpZCA9IGNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHQgaGFuZGxlciBpblxuICBsZXQgb3V0cHV0ID1cbiAgICBDYXVzYWwuZm9sZF9vdmVyX2NhdXNhbF9wYXN0X29mX29ic1xuICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIEdyYXBoX2Nsb3N1cmUuY29uZmlnX2JpZ19ncmFwaF93aXRoX3Byb2dyZXNzX2JhclxuICAgICAgZ3JpZFxuICAgICAgKGZ1biBwYXJhbWV0ZXInIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igb2JzZXJ2YWJsZV9oaXQgY2F1c2FsX3Bhc3RcbiAgICAgICAgICAgKGNvdW50ZXIsIGxpc3QsIGEpIC0+XG4gICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgU3RvcC5zdWNjZXNzIChjb3VudGVyLCBsaXN0LCBhKVxuICAgICAgICB8IGhlYWQgOjogdGFpbCAtPlxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICAgICAgU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5hZGRfZXZlbnQgcGFyYW1ldGVyJyBlcnJvclxuICAgICAgICAgICAgICAoU3RvcnlQcm9maWxpbmcuU3RvcnkgY291bnRlcikgTm9uZSBsb2dfaW5mb1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG9ic2VydmFibGVfaWQgPSBoZWFkIGluXG4gICAgICAgICAgbGV0IGxvZ19pbmZvID0gUC5yZXNldF9sb2cgbG9nX2luZm8gaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgaWYgZGVidWdfbW9kZSBwYXJhbWV0ZXIgdGhlblxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIiVzXFx0XFx0KiBjYXVzYWwgY29tcHJlc3Npb24gXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogd2UgdHJhbnNsYXRlIHRoZSBsaXN0IG9mIGV2ZW50IGlkcyBpbnRvIGEgdHJhY2UgdGhhbmtzIHRvIHRoZSBibGFja2JvYWQgKilcbiAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICB0cmFuc2xhdGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgICAoTGlzdC5yZXZfbWFwIFMuUEguQi5QQi5zdGVwX2lkX29mX2ludFxuICAgICAgICAgICAgICAgICAob2JzZXJ2YWJsZV9oaXQgOjogY2F1c2FsX3Bhc3QpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgKCogd2UgY29sbGVjdCBydW4gdGltZSBpbmZvIGFib3V0IHRoZSBvYnNlcnZhYmxlICopXG4gICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgbWF0Y2ggZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICB8IFNvbWUgaW5mbyAtPlxuICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgeyBpbmZvIHdpdGggVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2lkID0gY291bnRlciB9XG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8udXBkYXRlX3Byb2ZpbGluZ19pbmZvIGxvZ19pbmZvIGluZm9cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWyBpbmZvIF1cbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGEgPVxuICAgICAgICAgICAgKGYgOiAoJ2EsICdiLCAnYywgJ2QpIHRlcm5hcnkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIGluZm8gYVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbyA9XG4gICAgICAgICAgICBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmNsb3NlX2V2ZW50IHBhcmFtZXRlcicgZXJyb3JcbiAgICAgICAgICAgICAgKFN0b3J5UHJvZmlsaW5nLlN0b3J5IGNvdW50ZXIpIE5vbmUgbG9nX2luZm9cbiAgICAgICAgICBpblxuICAgICAgICAgICggZXJyb3IsXG4gICAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgICAgIChmdW4gYSAtPiBTdG9wLnN1Y2Nlc3MgKGNvdW50ZXIgKyAxLCB0YWlsLCBhKSlcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFN0b3Auc3RvcCAoYiwgY291bnRlcikpXG4gICAgICAgICAgICAgIGEgKSlcbiAgICAgIChjb3VudGVyLCBMaXN0LnJldiBsaXN0LCBhKVxuICBpblxuICBTdG9wLnN1Y2Nlc3Nfb3Jfc3RvcFxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKF8sIF8sIGEpKSAtPiBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3VjY2VzcyBhKVxuICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgKGEsIGNvdW50ZXIpKSAtPlxuICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGEsIGNvdW50ZXIpKVxuICAgIG91dHB1dFxuXG5sZXQgY29weV9sb2dfaW5mbyA9IFAuY29weVxuXG50eXBlIGNhbm9uaWNhbF9mb3JtID0gRGFnLmNhbm9uaWNhbF9mb3JtXG5cbmxldCBjb21wYXJlX2Nhbm9uaWNhbF9mb3JtID0gRGFnLmNvbXBhcmVfY2Fub25pY1xuXG5sZXQgY29tcHV0ZV9jYW5vbmljYWxfZm9ybSBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mb1xuICAgIGVycm9yIHRyYWNlID1cbiAgbGV0IGdyaWQgPSBjb252ZXJ0X3RyYWNlX2ludG9fZ3JpZCB0cmFjZSBoYW5kbGVyIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGdyYXBoID1cbiAgICBEYWcuZ3JhcGhfb2ZfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBncmlkXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIGNhbm9uaWMgPVxuICAgIERhZy5jYW5vbmljYWxpemUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgZ3JhcGhcbiAgaW5cbiAgKGVycm9yIDogZXJyb3JfbG9nKSwgKGxvZ19pbmZvIDogcHJvZmlsaW5nX2luZm8pLCAoY2Fub25pYyA6IGNhbm9uaWNhbF9mb3JtKVxuXG5tb2R1bGUgRXZlbnQgOiBCbGFja19saXN0LkV2ZW50IHdpdGggdHlwZSBldmVudCA9IHN0ZXAgPSBzdHJ1Y3RcbiAgdHlwZSBldmVudCA9IHN0ZXBcbiAgdHlwZSBlaWQgPSBpbnRcbiAgdHlwZSAnYSB0ID0gJ2EgYXJyYXlcblxuICBsZXQga2V5X29mX2V2ZW50IGV2ZW50ID1cbiAgICBpZlxuICAgICAgKFRyYWNlLnN0ZXBfaXNfcnVsZSBldmVudCB8fCBUcmFjZS5zdGVwX2lzX3BlcnQgZXZlbnQpXG4gICAgICAmJiBub3QgKFRyYWNlLmhhc19jcmVhdGlvbl9vZl9zdGVwIGV2ZW50KVxuICAgIHRoZW5cbiAgICAgIGdldF9pZF9vZl9ldmVudCBldmVudFxuICAgIGVsc2VcbiAgICAgIE5vbmVcblxuICBsZXQgaW5pdCBlaWQgZGVmYXVsdCA9IEFycmF5Lm1ha2UgZWlkIGRlZmF1bHRcblxuICBsZXQgc2V0IHQgZWlkIHZhbHVlID1cbiAgICBsZXQgKCkgPSBBcnJheS5zZXQgdCBlaWQgdmFsdWUgaW5cbiAgICB0XG5cbiAgbGV0IGdldCB0IGVpZCA9IEFycmF5LmdldCB0IGVpZFxuZW5kXG5cbm1vZHVsZSBCbGFja0xpc3QgOiBCbGFja19saXN0LkJsYWNrbGlzdCB3aXRoIHR5cGUgRXZlbnQuZXZlbnQgPSBzdGVwID1cbkJsYWNrX2xpc3QuTWFrZSAoKEV2ZW50IDogQmxhY2tfbGlzdC5FdmVudCB3aXRoIHR5cGUgZXZlbnQgPSBzdGVwKSlcblxudHlwZSBibGFja19saXN0ID0gQmxhY2tMaXN0LnRcblxubGV0IGNyZWF0ZV9ibGFja19saXN0IG4gPSBCbGFja0xpc3QuaW5pdCBuXG5cbmxldCBibGFja19saXN0IF9wYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gX2hhbmRsZXIgbG9nX2luZm9cbiAgICBlcnJvciB0cmFjZSBibGFja2xpc3QgPVxuICBsZXQgYmxhY2tsaXN0ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biBibGFja2xpc3QgKGV2ZW50LCBfKSAtPiBCbGFja0xpc3QuYmxhY2tfbGlzdCBldmVudCBibGFja2xpc3QpXG4gICAgICBibGFja2xpc3RcbiAgICAgIChnZXRfY29tcHJlc3NlZF90cmFjZSB0cmFjZSlcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3RcblxubGV0IHJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBfaGFuZGxlciBsb2dfaW5mbyBlcnJvciBibGFja2xpc3QgdHJhY2UgPVxuICBsZXQgbGlzdCwgaW50ID1cbiAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgKGZ1biAodHJhY2UsIGludCkgZXZlbnQgLT5cbiAgICAgICAgaWYgQmxhY2tMaXN0LmlzX2JsYWNrX2xpc3RlZCBldmVudCBibGFja2xpc3QgdGhlblxuICAgICAgICAgIHRyYWNlLCBzdWNjIGludFxuICAgICAgICBlbHNlXG4gICAgICAgICAgZXZlbnQgOjogdHJhY2UsIGludClcbiAgICAgIChbXSwgMCkgdHJhY2VcbiAgaW5cbiAgZXJyb3IsIGxvZ19pbmZvLCAoTGlzdC5yZXYgbGlzdCwgaW50KVxuXG5sZXQgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86XyBoYW5kbGVyIGxvZ19pbmZvXG4gICAgZXJyb3IgYmxhY2tsaXN0IHRyYWNlID1cbiAgbGlmdF90b19jYXJlX2Fib3V0X2FtYmlndWl0aWVzXG4gICAgKHRyYW5zZm9ybV90cmFjZV9nZW5cbiAgICAgICAoZnVuIF9wYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciAtPlxuICAgICAgICAgcmVtb3ZlX2JsYWNrbGlzdGVkX2V2ZW50IGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgYmxhY2tsaXN0KVxuICAgICAgIE5vbmUgXCJcIiBTdG9yeVByb2ZpbGluZy5SZW1vdmluZ19ibGFja2xpc3RlZF9ldmVudHMpXG4gICAgRG9fbm90X2NhcmUgTmV1dHJhbCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuXG5sZXQgbGFzdF9laWRfaW5fcHJldHJhY2UgdHJhY2UgPVxuICBsZXQgbCA9IExpc3QucmV2IChnZXRfcHJldHJhY2Vfb2ZfdHJhY2UgdHJhY2UpIGluXG4gIGxldCByZWMgYXV4ID0gZnVuY3Rpb25cbiAgICB8IFtdIC0+IDBcbiAgICB8IGggOjogdCAtPlxuICAgICAgKG1hdGNoIGdldF9pZF9vZl9ldmVudCBoIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBhdXggdFxuICAgICAgfCBTb21lIGVpZCAtPiBlaWQpXG4gIGluXG4gIGF1eCBsXG5cbmxldCBwb3BfanNvbiA9IFMuUEguQi5QQi5DSS5Qby5LLkgucG9wX2pzb25cblxubGV0IHByb2ZpbGluZ19zdGF0ZV90b19qc29uIHBhcmFtZXRlcnMgPVxuICBgQXNzb2NcbiAgICBbXG4gICAgICAoIFwicHJvZmlsaW5nIGluZm9ybWF0aW9uXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfcHJvZmlsaW5nX2xvZ2dlciBwYXJhbWV0ZXJzKSApO1xuICAgIF1cblxubGV0IGVycm9yX2xpc3RfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImVycm9yc1wiLFxuICAgICAgICBMb2dnZXJzLnRvX2pzb24gKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2RlYnVnZ2luZ19jaGFubmVsIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuXG5sZXQgY29tcHV0YXRpb25fc3RlcHNfdG9fanNvbiBwYXJhbWV0ZXJzID1cbiAgYEFzc29jXG4gICAgW1xuICAgICAgKCBcImNvbXB1dGF0aW9uIHN0ZXBzXCIsXG4gICAgICAgIExvZ2dlcnMudG9fanNvbiAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcnMpICk7XG4gICAgXVxuIiwiKCoqXG4gKiB1dGlsaXRpZXMubWxcbiAqXG4gKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTUtMDMtMjggZmVyZXQ+XG4gKiBMYXN0IG1vZGlmaWNhdGlvbjogVGltZS1zdGFtcDogPDIwMTYtMDItMTkgMTE6Mjg6MDUgZmVyZXQ+XG4gKlxuICogQVBJIGZvciBjYXVzYWwgY29tcHJlc3Npb24gKGZvciBleHBlcnQpXG4gKiBKZXJvbWUgRmVyZXQsIHByb2pldCBBYnN0cmFjdGlvbiwgSU5SSUEgUGFyaXMtUm9jcXVlbmNvdXJ0XG4gKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAqXG4gKiBDb3B5cmlnaHQgMjAxNSBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW4gSW5mb3JtYXRpcXVlICAqIGV0IGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlXG4gKiBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbmxldCBkZWJ1Z19tb2RlID0gZmFsc2VcbmxldCBfID0gZGVidWdfbW9kZVxuXG50eXBlIHBhcmFtZXRlcnMgPSB7XG4gIGl0ZXJhdGlvbl9iZWZvcmVfY2FsaWJyYXRpbmc6IGludDtcbiAgZ2xvYmFsX3RpbWVfZmFjdG9yX21pbjogZmxvYXQgb3B0aW9uO1xuICBnbG9iYWxfdGltZV9mYWN0b3JfbWF4OiBmbG9hdCBvcHRpb247XG4gIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9hZnRlcl9mYWN0b3JfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9iZWZvcmVfZmFjdG9yX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfYWZ0ZXJfZmFjdG9yX21heDogaW50IG9wdGlvbjtcbiAgY29tcHV0YXRpb25fdGltZV9mYWN0b3JfbWluOiBmbG9hdCBvcHRpb247XG4gIGNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21heDogZmxvYXQgb3B0aW9uO1xufVxuXG5sZXQgcGFyYW1ldGVycyA9XG4gIHtcbiAgICBpdGVyYXRpb25fYmVmb3JlX2NhbGlicmF0aW5nID0gMTA7XG4gICAgZ2xvYmFsX3RpbWVfZmFjdG9yX21pbiA9IFNvbWUgNS47XG4gICAgZ2xvYmFsX3RpbWVfZmFjdG9yX21heCA9IFNvbWUgMjAuO1xuICAgIHRyYWNlX2JlZm9yZV9mYWN0b3JfbWluID0gU29tZSAxMDtcbiAgICB0cmFjZV9hZnRlcl9mYWN0b3JfbWluID0gU29tZSAxMDtcbiAgICB0cmFjZV9iZWZvcmVfZmFjdG9yX21heCA9IFNvbWUgNTAwO1xuICAgIHRyYWNlX2FmdGVyX2ZhY3Rvcl9tYXggPSBTb21lIDUwMDtcbiAgICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9taW4gPSBTb21lIDEwLjtcbiAgICBjb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXggPSBTb21lIDUwMC47XG4gIH1cblxudHlwZSBzdGF0dXNfZ2xvYmFsID0ge1xuICBjb3VudGVyX21pbjogaW50O1xuICBnbG9iYWxfdGltZV9taW46IGZsb2F0IG9wdGlvbjtcbiAgZ2xvYmFsX3RpbWVfbWF4OiBmbG9hdCBvcHRpb247XG4gIGNwdV90aW1lX21pbjogZmxvYXQgb3B0aW9uO1xuICBjcHVfdGltZV9tYXg6IGZsb2F0IG9wdGlvbjtcbiAgY3B1X3RpbWVfcmVmOiBmbG9hdCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWluOiBpbnQgb3B0aW9uO1xuICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2FmdGVyX21heDogaW50IG9wdGlvbjtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9yZWY6IGludCBvcHRpb247XG4gIHRyYWNlX2xlbmd0aF9hZnRlcl9yZWY6IGludCBvcHRpb247XG59XG5cbnR5cGUgc3RhdHVzID0ge1xuICBjb3VudGVyOiBpbnQ7XG4gIGdsb2JhbF90aW1lOiBmbG9hdDtcbiAgdHJhY2VfbGVuZ3RoX2JlZm9yZTogaW50O1xuICB0cmFjZV9sZW5ndGhfYWZ0ZXI6IGludDtcbiAgY3B1X3RpbWU6IGZsb2F0O1xufVxuXG5sZXQgZ2V0X3N0YXR1c19iZWZvcmUgY291bnRlciB0cmFjZSA9XG4gIHtcbiAgICBjb3VudGVyO1xuICAgIGdsb2JhbF90aW1lID0gU3lzLnRpbWUgKCk7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZSA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIHRyYWNlO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlciA9IDA7XG4gICAgY3B1X3RpbWUgPSAwLjtcbiAgfVxuXG5sZXQgZ2V0X3N0YXR1c19hZnRlciBzdGF0dXNfYmVmb3JlIHRyYWNlID1cbiAge1xuICAgIHN0YXR1c19iZWZvcmUgd2l0aFxuICAgIGNwdV90aW1lID0gU3lzLnRpbWUgKCkgLS4gc3RhdHVzX2JlZm9yZS5nbG9iYWxfdGltZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXIgPSBVdGlsaXRpZXMuc2l6ZV9vZl9wcmV0cmFjZSB0cmFjZTtcbiAgfVxuXG5sZXQgY21wX29wdCBjbXAgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gMFxuICB8IFNvbWUgYSwgU29tZSBiIC0+IGNtcCBhIGJcblxubGV0IGNtcF9mbG9hdF9vcHQgPSBjbXBfb3B0IChjb21wYXJlIDogZmxvYXQgLT4gZmxvYXQgLT4gaW50KVxubGV0IGNtcF9pbnRfb3B0ID0gY21wX29wdCAoY29tcGFyZSA6IGludCAtPiBpbnQgLT4gaW50KVxuXG5sZXQgZ2VuX2Jpbl9vcHQgb3AgYSBiID1cbiAgbWF0Y2ggYSwgYiB3aXRoXG4gIHwgTm9uZSwgXyB8IF8sIE5vbmUgLT4gTm9uZVxuICB8IFNvbWUgYSwgU29tZSBiIC0+IFNvbWUgKG9wIGEgYilcblxubGV0IGFkZF9mbG9hdF9vcHQgPSBnZW5fYmluX29wdCAoICsuIClcbmxldCBtdWx0X2Zsb2F0X29wdCA9IGdlbl9iaW5fb3B0ICggKi4gKVxubGV0IG11bHRfaW50X29wdCA9IGdlbl9iaW5fb3B0ICggKiApXG5cbmxldCBtYXhfb3B0IGNtcCBhIGIgPVxuICBtYXRjaCBhIHdpdGhcbiAgfCBOb25lIC0+IFNvbWUgYlxuICB8IFNvbWUgYSAtPlxuICAgIFNvbWVcbiAgICAgIChpZiBjbXAgYSBiID4gMCB0aGVuXG4gICAgICAgICBhXG4gICAgICAgZWxzZVxuICAgICAgICAgYilcblxubGV0IHN0b3BfYmVmb3JlIGdsb2JhbCBzdGF0dXMgPVxuICBzdGF0dXMuY291bnRlciA+IGdsb2JhbC5jb3VudGVyX21pblxuICAmJiAoY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfaW50X29wdCAoU29tZSBzdGF0dXMudHJhY2VfbGVuZ3RoX2JlZm9yZSlcbiAgICAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2JlZm9yZV9taW5cbiAgICAgICAgICAgPj0gMClcblxubGV0IHN0b3BfYWZ0ZXIgZ2xvYmFsIHN0YXR1cyA9XG4gIHN0YXR1cy5jb3VudGVyID4gZ2xvYmFsLmNvdW50ZXJfbWluXG4gICYmIChjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5nbG9iYWxfdGltZSkgZ2xvYmFsLmdsb2JhbF90aW1lX21heCA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuY3B1X3RpbWUpIGdsb2JhbC5jcHVfdGltZV9tYXggPiAwXG4gICAgIHx8IGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2ludF9vcHQgKFNvbWUgc3RhdHVzLnRyYWNlX2xlbmd0aF9hZnRlcilcbiAgICAgICAgICBnbG9iYWwudHJhY2VfbGVuZ3RoX2FmdGVyX21heFxuICAgICAgICA+IDBcbiAgICAgfHwgY21wX2Zsb2F0X29wdCAoU29tZSBzdGF0dXMuZ2xvYmFsX3RpbWUpIGdsb2JhbC5nbG9iYWxfdGltZV9taW4gPj0gMFxuICAgICAgICAmJiBjbXBfZmxvYXRfb3B0IChTb21lIHN0YXR1cy5jcHVfdGltZSkgZ2xvYmFsLmNwdV90aW1lX21pbiA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlKVxuICAgICAgICAgICAgIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX21pblxuICAgICAgICAgICA+PSAwXG4gICAgICAgICYmIGNtcF9pbnRfb3B0IChTb21lIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXIpXG4gICAgICAgICAgICAgZ2xvYmFsLnRyYWNlX2xlbmd0aF9hZnRlcl9taW5cbiAgICAgICAgICAgPj0gMClcblxubGV0IHNldF9zdGF0dXNfaW5pdCBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgZmxvYXQxIGZsb2F0MiBjb3VudGVyID1cbiAge1xuICAgIGNvdW50ZXJfbWluID0gY291bnRlciArIHBhcmFtZXRlcnMuaXRlcmF0aW9uX2JlZm9yZV9jYWxpYnJhdGluZztcbiAgICBnbG9iYWxfdGltZV9taW4gPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgYWRkX2Zsb2F0X29wdCAoU29tZSBmbG9hdDIpXG4gICAgICAgICAgIChtdWx0X2Zsb2F0X29wdFxuICAgICAgICAgICAgICAoU29tZSAoZmxvYXQyIC0uIGZsb2F0MSkpXG4gICAgICAgICAgICAgIHBhcmFtZXRlcnMuZ2xvYmFsX3RpbWVfZmFjdG9yX21pbikpO1xuICAgIGdsb2JhbF90aW1lX21heCA9XG4gICAgICAoaWYgVXRpbGl0aWVzLlMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2lzX3RpbWVfaW5kZXBlbmRlbnQgY2Zsb3dfcGFyYW1ldGVyc1xuICAgICAgIHRoZW5cbiAgICAgICAgIE5vbmVcbiAgICAgICBlbHNlXG4gICAgICAgICBhZGRfZmxvYXRfb3B0IChTb21lIGZsb2F0MilcbiAgICAgICAgICAgKG11bHRfZmxvYXRfb3B0XG4gICAgICAgICAgICAgIChTb21lIChmbG9hdDIgLS4gZmxvYXQxKSlcbiAgICAgICAgICAgICAgcGFyYW1ldGVycy5nbG9iYWxfdGltZV9mYWN0b3JfbWF4KSk7XG4gICAgY3B1X3RpbWVfbWluID0gTm9uZTtcbiAgICBjcHVfdGltZV9tYXggPSBOb25lO1xuICAgIGNwdV90aW1lX3JlZiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2JlZm9yZV9taW4gPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9taW4gPSBOb25lO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWF4ID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfbWF4ID0gTm9uZTtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX3JlZiA9IE5vbmU7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX3JlZiA9IE5vbmU7XG4gIH1cblxubGV0IHVwZGF0ZV9zdGF0dXNfYmVmb3JlIGdsb2JhbCBzdGF0dXMgPVxuICBpZiBzdGF0dXMuY291bnRlciA8IGdsb2JhbC5jb3VudGVyX21pbiB0aGVuXG4gICAge1xuICAgICAgZ2xvYmFsIHdpdGhcbiAgICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmID1cbiAgICAgICAgbWF4X29wdCBjb21wYXJlIGdsb2JhbC50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICAgIHN0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlO1xuICAgIH1cbiAgZWxzZVxuICAgIGdsb2JhbFxuXG5sZXQgdXBkYXRlX3N0YXR1c19hZnRlciBnbG9iYWwgc3RhdHVzID1cbiAgaWYgc3RhdHVzLmNvdW50ZXIgPCBnbG9iYWwuY291bnRlcl9taW4gdGhlblxuICAgIHtcbiAgICAgIGdsb2JhbCB3aXRoXG4gICAgICB0cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmID1cbiAgICAgICAgbWF4X29wdCBjb21wYXJlIGdsb2JhbC50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmIHN0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXI7XG4gICAgICBjcHVfdGltZV9yZWYgPSBtYXhfb3B0IGNvbXBhcmUgZ2xvYmFsLmNwdV90aW1lX3JlZiBzdGF0dXMuY3B1X3RpbWU7XG4gICAgfVxuICBlbHNlXG4gICAgZ2xvYmFsXG5cbmxldCBjb21wdXRlX3N0YXR1c19yYW5nZXMgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXIgZ2xvYmFsX3N0YXR1cyA9XG4gIHtcbiAgICBnbG9iYWxfc3RhdHVzIHdpdGhcbiAgICBjcHVfdGltZV9taW4gPVxuICAgICAgKGlmIFV0aWxpdGllcy5TLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9pc190aW1lX2luZGVwZW5kZW50IGNmbG93X3BhcmFtZXRlcnNcbiAgICAgICB0aGVuXG4gICAgICAgICBOb25lXG4gICAgICAgZWxzZVxuICAgICAgICAgbXVsdF9mbG9hdF9vcHQgZ2xvYmFsX3N0YXR1cy5jcHVfdGltZV9yZWZcbiAgICAgICAgICAgcGFyYW1ldGVyLmNvbXB1dGF0aW9uX3RpbWVfZmFjdG9yX21pbik7XG4gICAgY3B1X3RpbWVfbWF4ID1cbiAgICAgIChpZiBVdGlsaXRpZXMuUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfaXNfdGltZV9pbmRlcGVuZGVudCBjZmxvd19wYXJhbWV0ZXJzXG4gICAgICAgdGhlblxuICAgICAgICAgTm9uZVxuICAgICAgIGVsc2VcbiAgICAgICAgIG11bHRfZmxvYXRfb3B0IGdsb2JhbF9zdGF0dXMuY3B1X3RpbWVfcmVmXG4gICAgICAgICAgIHBhcmFtZXRlci5jb21wdXRhdGlvbl90aW1lX2ZhY3Rvcl9tYXgpO1xuICAgIHRyYWNlX2xlbmd0aF9iZWZvcmVfbWluID1cbiAgICAgIG11bHRfaW50X29wdCBnbG9iYWxfc3RhdHVzLnRyYWNlX2xlbmd0aF9iZWZvcmVfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9iZWZvcmVfZmFjdG9yX21pbjtcbiAgICB0cmFjZV9sZW5ndGhfYmVmb3JlX21heCA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYmVmb3JlX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYmVmb3JlX2ZhY3Rvcl9tYXg7XG4gICAgdHJhY2VfbGVuZ3RoX2FmdGVyX21pbiA9XG4gICAgICBtdWx0X2ludF9vcHQgZ2xvYmFsX3N0YXR1cy50cmFjZV9sZW5ndGhfYWZ0ZXJfcmVmXG4gICAgICAgIHBhcmFtZXRlci50cmFjZV9hZnRlcl9mYWN0b3JfbWluO1xuICAgIHRyYWNlX2xlbmd0aF9hZnRlcl9tYXggPVxuICAgICAgbXVsdF9pbnRfb3B0IGdsb2JhbF9zdGF0dXMudHJhY2VfbGVuZ3RoX2FmdGVyX3JlZlxuICAgICAgICBwYXJhbWV0ZXIudHJhY2VfYWZ0ZXJfZmFjdG9yX21heDtcbiAgfVxuXG5sZXQgZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyX3doaWxlX3Jlc2hha2luZ190aGVfdHJhY2VcbiAgICBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOl9cbiAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246XyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHdlX3NoYWxsXG4gICAgbmV2ZXIgcGFyYW1ldGVycyBnbG9iYWxfdHJhY2Vfc2ltcGxpZmljYXRpb24gZlxuICAgIChzdG9yZV9yZXN1bHQgOlxuICAgICAgKCBVdGlsaXRpZXMudHJhY2UsXG4gICAgICAgIFV0aWxpdGllcy50cmFjZV9ydW50aW1lX2luZm8gbGlzdCxcbiAgICAgICAgJ2EsXG4gICAgICAgICdhIClcbiAgICAgIFV0aWxpdGllcy50ZXJuYXJ5KSB0cmFjZSAodGFibGUgOiAnYSkgPVxuICBsZXQgZiBjZmxvd19wYXJhbWV0ZXJzID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl8gaGFuZGxlclxuICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgKGxhc3RfaW5mbywgc3RvcF9uZXh0LCBnbG9iYWxfc3RhdHVzLCBjb3VudGVyLCB0YWJsZSkgPVxuICAgIGlmIHN0b3BfbmV4dCB0aGVuXG4gICAgICBlcnJvciwgbG9nX2luZm8sIFN0b3Auc3RvcCAobGFzdF9pbmZvLCB0YWJsZSlcbiAgICBlbHNlIChcbiAgICAgIGxldCBzdGF0dXNfYmVmb3JlID0gZ2V0X3N0YXR1c19iZWZvcmUgY291bnRlciB0cmFjZSBpblxuICAgICAgbGV0IHN0b3AgPSBzdG9wX2JlZm9yZSBnbG9iYWxfc3RhdHVzIHN0YXR1c19iZWZvcmUgaW5cbiAgICAgIGxldCBnbG9iYWxfc3RhdHVzID0gdXBkYXRlX3N0YXR1c19iZWZvcmUgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYmVmb3JlIGluXG4gICAgICBpZiBzdG9wIHRoZW5cbiAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBTdG9wLnN0b3AgKGxhc3RfaW5mbywgdGFibGUpXG4gICAgICBlbHNlIChcbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgIGYgY2Zsb3dfcGFyYW1ldGVycyBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgIGluXG4gICAgICAgIGxldCBzdGF0dXNfYWZ0ZXIgPSBnZXRfc3RhdHVzX2FmdGVyIHN0YXR1c19iZWZvcmUgdHJhY2UgaW5cbiAgICAgICAgbGV0IHN0b3AgPSBzdG9wX2FmdGVyIGdsb2JhbF9zdGF0dXMgc3RhdHVzX2FmdGVyIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlID1cbiAgICAgICAgICBzdG9yZV9yZXN1bHQgY2Zsb3dfcGFyYW1ldGVycyB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgIGVycm9yIHRyYWNlIGluZm8gdGFibGVcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGxhc3RfaW5mbyA9IFNvbWUgaW5mbyBpblxuICAgICAgICBsZXQgZ2xvYmFsX3N0YXR1cyA9IHVwZGF0ZV9zdGF0dXNfYWZ0ZXIgZ2xvYmFsX3N0YXR1cyBzdGF0dXNfYWZ0ZXIgaW5cbiAgICAgICAgbGV0IGdsb2JhbF9zdGF0dXMgPVxuICAgICAgICAgIGlmIGNvdW50ZXIgPSBnbG9iYWxfc3RhdHVzLmNvdW50ZXJfbWluIHRoZW5cbiAgICAgICAgICAgIGNvbXB1dGVfc3RhdHVzX3JhbmdlcyBjZmxvd19wYXJhbWV0ZXJzIHBhcmFtZXRlcnMgZ2xvYmFsX3N0YXR1c1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGdsb2JhbF9zdGF0dXNcbiAgICAgICAgaW5cbiAgICAgICAgKCBlcnJvcixcbiAgICAgICAgICBsb2dfaW5mbyxcbiAgICAgICAgICBTdG9wLnN1Y2Nlc3MgKGxhc3RfaW5mbywgc3RvcCwgZ2xvYmFsX3N0YXR1cywgc3VjYyBjb3VudGVyLCB0YWJsZSkgKVxuICAgICAgKVxuICAgIClcbiAgaW5cbiAgbGV0IHJlYyBhdXggbG9nX2luZm8gZXJyb3IgY291bnRlciB0cmFjZSB0YWJsZSA9XG4gICAgaWYgVXRpbGl0aWVzLmhhc19vYnMgdHJhY2UgdGhlbiAoXG4gICAgICBsZXQgc3RhcnRfaXRlcmF0aW9uID0gU3lzLnRpbWUgKCkgaW5cbiAgICAgIGxldCBvdXRwdXQgPVxuICAgICAgICB0cnkgU29tZSAoZ2xvYmFsX3RyYWNlX3NpbXBsaWZpY2F0aW9uIDAgKGVycm9yLCBsb2dfaW5mbywgdHJhY2UpKVxuICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICBpblxuICAgICAgbWF0Y2ggb3V0cHV0IHdpdGhcbiAgICAgIHwgTm9uZSAtPiBlcnJvciwgbG9nX2luZm8sIHRhYmxlXG4gICAgICB8IFNvbWUgKGVycm9yLCBsb2dfaW5mbywgdHJhY2UpIC0+XG4gICAgICAgIGxldCBlbmRfc2ltcGxpZmljYXRpb24gPSBTeXMudGltZSAoKSBpblxuICAgICAgICBsZXQgc3RhdHVzID1cbiAgICAgICAgICBzZXRfc3RhdHVzX2luaXQgY2Zsb3dfcGFyYW1ldGVycyBwYXJhbWV0ZXJzIHN0YXJ0X2l0ZXJhdGlvblxuICAgICAgICAgICAgZW5kX3NpbXBsaWZpY2F0aW9uIGNvdW50ZXJcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgb3V0cHV0ID1cbiAgICAgICAgICBVdGlsaXRpZXMuZm9sZF9vdmVyX3RoZV9jYXVzYWxfcGFzdF9vZl9vYnNlcnZhYmxlc193aXRoX2FfcHJvZ3Jlc3NfYmFyXG4gICAgICAgICAgICBjZmxvd19wYXJhbWV0ZXJzIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgZXJyb3Igd2Vfc2hhbGwgbmV2ZXIgY291bnRlciBmIHRyYWNlXG4gICAgICAgICAgICAoTm9uZSwgZmFsc2UsIHN0YXR1cywgY291bnRlciwgdGFibGUpXG4gICAgICAgIGluXG4gICAgICAgIFN0b3Auc3VjY2Vzc19vcl9zdG9wXG4gICAgICAgICAgKGZ1biAoXywgXywgXywgXywgb3V0cHV0KSAtPiBlcnJvciwgbG9nX2luZm8sIG91dHB1dClcbiAgICAgICAgICAoZnVuICgobGFzdF9pbmZvLCB0YWJsZSksIGNvdW50ZXIpIC0+XG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgIFV0aWxpdGllcy5yZW1vdmVfb2JzX2JlZm9yZSBjZmxvd19wYXJhbWV0ZXJzIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBsYXN0X2luZm8gdHJhY2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBhdXggbG9nX2luZm8gZXJyb3IgY291bnRlciB0cmFjZSB0YWJsZSlcbiAgICAgICAgICBvdXRwdXRcbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mbywgdGFibGVcbiAgaW5cbiAgYXV4IGxvZ19pbmZvIGVycm9yIDEgdHJhY2UgdGFibGVcbiIsIigqXG4gICogY2Zsb3dfanNfaW50ZXJmYWNlLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTYtMDQtMzAgMTg6MzQ6MDAgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTA0LTMwIDE4OjI0OjAwIGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFic3RyYWN0aW9uLCBJTlJJQSBQYXJpcy1Sb2NxdWVuY291cnRcbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdMOpIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqIEthU2ltXG4gICogSmVhbiBLcml2aW5lLCBVbml2ZXJzaXRlIFBhcmlzLURpZGVyb3QsIENOUlNcbiAgKlxuICAqICpcbiAgKiBUaGlzIGlzIHRoZSBpbnRlcmZhY2UgZm9yIHRoZSBKYXZhLXNjcmlwdCBzZXJ2ZXJcbiAgKlxuICAqIENvcHlyaWdodCAyMDExLDIwMTIsMjAxMywyMDE0LDIwMTUsMjAxNiBJbnN0aXR1dCBOYXRpb25hbCBkZSBSZWNoZXJjaGUgZW5cbiAgKiBJbmZvcm1hdGlxdWUgZXQgZW4gQXV0b21hdGlxdWUuICBBbGwgcmlnaHRzIHJlc2VydmVkLiAgVGhpcyBmaWxlIGlzXG4gICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlICopXG5cbnR5cGUgY2Zsb3dfc3RhdGUgPSB7XG4gIHN0ZF9sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIGVycl9sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIHByb2ZpbGluZ19sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIHN0YXR1c19sb2dnZXI6IExvZ2dlcnMudCBvcHRpb247XG4gIGN1cnJlbnRfcGhhc2U6IHN0cmluZyBvcHRpb247XG4gIHByb2dyZXNzX2JhcjogKGJvb2wgKiBpbnQgKiBpbnQgKiBpbnQpIG9wdGlvbjtcbiAgY2F1c2FsX2Zsb3dzOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICB0cml2aWFsX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICB3ZWFrX2NvbXByZXNzaW9uOiBVdGlsaXRpZXMuc3RvcnlfdGFibGUgb3B0aW9uO1xuICBzdHJvbmdfY29tcHJlc3Npb246IFV0aWxpdGllcy5zdG9yeV90YWJsZSBvcHRpb247XG4gIGVycm9yX2xpc3Q6IFV0aWxpdGllcy5lcnJvcl9sb2cgb3B0aW9uO1xufVxuXG5sZXQgaW5pdCAoKSA9XG4gIHJlZlxuICAgIHtcbiAgICAgIHN0ZF9sb2dnZXIgPSBOb25lO1xuICAgICAgZXJyX2xvZ2dlciA9IE5vbmU7XG4gICAgICBwcm9maWxpbmdfbG9nZ2VyID0gTm9uZTtcbiAgICAgIHN0YXR1c19sb2dnZXIgPSBOb25lO1xuICAgICAgY3VycmVudF9waGFzZSA9IE5vbmU7XG4gICAgICBwcm9ncmVzc19iYXIgPSBOb25lO1xuICAgICAgY2F1c2FsX2Zsb3dzID0gTm9uZTtcbiAgICAgIHRyaXZpYWxfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgd2Vha19jb21wcmVzc2lvbiA9IE5vbmU7XG4gICAgICBzdHJvbmdfY29tcHJlc3Npb24gPSBOb25lO1xuICAgICAgZXJyb3JfbGlzdCA9IE5vbmU7XG4gICAgfVxuXG5sZXQgZ2V0X3N0ZF9idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5zdGRfbG9nZ2VyXG5sZXQgZ2V0X2Vycl9idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5lcnJfbG9nZ2VyXG5sZXQgZ2V0X3Byb2ZpbGluZ19idWZmZXIgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5wcm9maWxpbmdfbG9nZ2VyXG5sZXQgZ2V0X2JyYW5jaF9hbmRfY3V0X3N0YXR1cyBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0YXR1c19sb2dnZXJcbmxldCBnZXRfcHJvZ3Jlc3NfYmFyIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUucHJvZ3Jlc3NfYmFyXG5sZXQgZ2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS5jdXJyZW50X3BoYXNlXG5sZXQgZ2V0X2NhdXNhbF9mbG93X3RhYmxlIGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuY2F1c2FsX2Zsb3dzXG5sZXQgZ2V0X3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS50cml2aWFsX2NvbXByZXNzaW9uXG5sZXQgZ2V0X3dlYWtfY29tcHJlc3Npb25fdGFibGUgY2Zsb3dfc3RhdGUgPSBjZmxvd19zdGF0ZS53ZWFrX2NvbXByZXNzaW9uXG5sZXQgZ2V0X3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSBjZmxvd19zdGF0ZSA9IGNmbG93X3N0YXRlLnN0cm9uZ19jb21wcmVzc2lvblxubGV0IGdldF9lcnJvcl9saXN0IGNmbG93X3N0YXRlID0gY2Zsb3dfc3RhdGUuZXJyb3JfbGlzdFxuXG5sZXQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgc3RyaW5nID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggY3VycmVudF9waGFzZSA9IFNvbWUgc3RyaW5nIH1cblxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4IGNmbG93X3N0YXRlX3B0ciA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGN1cnJlbnRfcGhhc2UgPSBOb25lIH1cblxubGV0IHNhdmVfcHJvZ3Jlc3NfYmFyX2F1eCBjZmxvd19zdGF0ZV9wdHIgYmFyID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggcHJvZ3Jlc3NfYmFyID0gU29tZSBiYXIgfVxuXG5sZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eCBjZmxvd19zdGF0ZV9wdHIgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9ncmVzc19iYXIgPSBOb25lIH1cblxubGV0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIGNhdXNhbF9mbG93cyA9IFNvbWUgdGFibGUgfVxuXG5sZXQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCB0cml2aWFsX2NvbXByZXNzaW9uID0gU29tZSB0YWJsZSB9XG5cbmxldCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXV4IGNmbG93X3N0YXRlX3B0ciB0YWJsZSA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHdlYWtfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlX2F1eCBjZmxvd19zdGF0ZV9wdHIgdGFibGUgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBzdHJvbmdfY29tcHJlc3Npb24gPSBTb21lIHRhYmxlIH1cblxubGV0IHNhdmVfZXJyb3JfbG9nX2F1eCBjZmxvd19zdGF0ZV9wdHIgZXJyb3IgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBlcnJvcl9saXN0ID0gU29tZSBlcnJvciB9XG5cbmxldCByZWRpcmVjdF9zdGRfYnVmZmVyX2F1eCBjZmxvd19zdGF0ZV9wdHIgbG9nZ2VycyA9XG4gIHsgIWNmbG93X3N0YXRlX3B0ciB3aXRoIHN0ZF9sb2dnZXIgPSBsb2dnZXJzIH1cblxubGV0IHJlZGlyZWN0X2Vycl9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggZXJyX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgcmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlcl9hdXggY2Zsb3dfc3RhdGVfcHRyIGxvZ2dlcnMgPVxuICB7ICFjZmxvd19zdGF0ZV9wdHIgd2l0aCBwcm9maWxpbmdfbG9nZ2VyID0gbG9nZ2VycyB9XG5cbmxldCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXJfYXV4IGNmbG93X3N0YXRlX3B0ciBsb2dnZXJzID1cbiAgeyAhY2Zsb3dfc3RhdGVfcHRyIHdpdGggc3RhdHVzX2xvZ2dlciA9IGxvZ2dlcnMgfVxuXG5sZXQgbGlmdCBmIGNmbG93X3N0YXRlX3B0cl9vcHQgZGF0YSA9XG4gIG1hdGNoIGNmbG93X3N0YXRlX3B0cl9vcHQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIGNmbG93X3N0YXRlX3B0ciAtPiBjZmxvd19zdGF0ZV9wdHIgOj0gZiBjZmxvd19zdGF0ZV9wdHIgZGF0YVxuXG5sZXQgbGlmdF9yZXNldCBmIGNmbG93X3N0YXRlX3B0cl9vcHQgPVxuICBsaWZ0IChmdW4geCAoKSAtPiBmIHgpIGNmbG93X3N0YXRlX3B0cl9vcHQgKClcblxubGV0IHNhdmVfY3VycmVudF9waGFzZV90aXRsZSA9IGxpZnQgc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlX2F1eFxubGV0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgPSBsaWZ0X3Jlc2V0IHJlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGVfYXV4XG5sZXQgc2F2ZV9wcm9ncmVzc19iYXIgPSBsaWZ0IHNhdmVfcHJvZ3Jlc3NfYmFyX2F1eFxubGV0IHJlc2V0X3Byb2dyZXNzX2JhciA9IGxpZnRfcmVzZXQgcmVzZXRfcHJvZ3Jlc3NfYmFyX2F1eFxubGV0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGUgPSBsaWZ0IHNhdmVfY2F1c2FsX2Zsb3dfdGFibGVfYXV4XG5sZXQgc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV93ZWFrX2NvbXByZXNzaW9uX3RhYmxlID0gbGlmdCBzYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGVfYXV4XG5sZXQgc2F2ZV9zdHJvbmdfY29tcHJlc3Npb25fdGFibGUgPSBsaWZ0IHNhdmVfc3Ryb25nX2NvbXByZXNzaW9uX3RhYmxlX2F1eFxubGV0IHNhdmVfZXJyb3JfbGlzdCA9IGxpZnQgc2F2ZV9lcnJvcl9sb2dfYXV4XG5sZXQgcmVkaXJlY3Rfc3RkX2J1ZmZlciA9IGxpZnQgcmVkaXJlY3Rfc3RkX2J1ZmZlcl9hdXhcbmxldCByZWRpcmVjdF9lcnJfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9lcnJfYnVmZmVyX2F1eFxubGV0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXIgPSBsaWZ0IHJlZGlyZWN0X3Byb2ZpbGluZ19idWZmZXJfYXV4XG5sZXQgcmVkaXJlY3RfYnJhbmNoX2FuZF9jdXRfYnVmZmVyID0gbGlmdCByZWRpcmVjdF9icmFuY2hfYW5kX2N1dF9idWZmZXJfYXV4XG4iLCIoKipcbiAgKiBjb21wcmVzc2lvbl9tYWluLm1sXG4gICpcbiAgKiBDcmVhdGlvbjogICAgICAgICAgICAgICAgICAgICAgPDIwMTEtMTAtMTkgMTY6NTI6NTUgZmVyZXQ+XG4gICogTGFzdCBtb2RpZmljYXRpb246IFRpbWUtc3RhbXA6IDwyMDE2LTA2LTEwIDExOjEwOjM0IGZlcmV0PlxuICAqXG4gICogQ2F1c2FsIGZsb3cgY29tcHJlc3Npb246IGEgbW9kdWxlIGZvciBLYVNpbVxuICAqIEplcm9tZSBGZXJldCwgcHJvamV0IEFudGlxdWUsIElOUklBIFBhcmlzLVJvY3F1ZW5jb3VydFxuICAqIEplYW4gS3JpdmluZSwgVW5pdmVyc2l0w6kgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogS2FTaW1cbiAgKiBKZWFuIEtyaXZpbmUsIFVuaXZlcnNpdGUgUGFyaXMtRGlkZXJvdCwgQ05SU1xuICAqXG4gICogU29tZSBwYXJhbWV0ZXJzIHJlZmVyZW5jZXMgY2FuIGJlIHR1bmVkIHRoYW5rcyB0byBjb21tYW5kLWxpbmUgb3B0aW9uc1xuICAqIG90aGVyIHZhcmlhYmxlcyBoYXMgdG8gYmUgc2V0IGJlZm9yZSBjb21waWxhdGlvblxuICAqXG4gICogQ29weXJpZ2h0IDIwMTEsMjAxMiwyMDEzIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWVcbiAgKiBldCBlbiBBdXRvbWF0aXF1ZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWRcbiAgKiB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgKilcblxubW9kdWxlIFUgPSBVdGlsaXRpZXNcbm1vZHVsZSBTID0gVS5TXG5cbnR5cGUgc2VjcmV0X2xvZ19pbmZvID0gU3RvcnlQcm9maWxpbmcuU3RvcnlTdGF0cy5sb2dfaW5mb1xuXG5sZXQgaW5pdF9zZWNyZXRfbG9nX2luZm8gPSBTdG9yeVByb2ZpbGluZy5TdG9yeVN0YXRzLmluaXRfbG9nX2luZm9cblxudHlwZSBzZWNyZXRfcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5wYXJhbWV0ZXJcblxubGV0IGJ1aWxkX3BhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguYnVpbGRfcGFyYW1ldGVyXG5sZXQgZ2V0X2xvZ2dlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlclxubGV0IGxvZ19zdGVwID0gdHJ1ZVxubGV0IGRlYnVnX21vZGUgPSBmYWxzZVxubGV0IGR1bXBfcHJvZmlsaW5nX2luZm8gPSB0cnVlXG5sZXQgXyA9IGR1bXBfcHJvZmlsaW5nX2luZm9cbmxldCBidWNrZXRfc29ydCA9IHRydWVcblxuKCoqIGZhbHNlIC0+IG9ubHkgdGhlIGZpcnN0IHN0b3J5IHBlciBvYnNlcnZhYmxlIGhpdDsgdHJ1ZSAtPiBhbGwgc3RvcmllcyBwZXIgb2JzIGhpdCAqKVxubGV0IGdldF9hbGxfc3RvcmllcyA9IGZhbHNlXG5cbmxldCBtYXhfbnVtYmVyX29mX2l0dGVyYXRpb25zID0gTm9uZVxubGV0IHdlX3NoYWxsX25vdCBfID0gZmFsc2VcbmxldCB3ZV9zaGFsbCBfID0gdHJ1ZVxubGV0IGRvX25vdF9sb2cgcGFyYW1ldGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfbG9nX3N0ZXAgcGFyYW1ldGVyIGZhbHNlXG5cbmxldCBjb21wcmVzc19hbmRfcHJpbnQgcGFyYW1ldGVyIH5kb3RGb3JtYXQgP2pzX2ludGVyZmFjZSBlbnYgbG9nX2luZm8gc3RlcF9saXN0XG4gICAgPVxuICAoKmxldCBjYWxsZWRfZnJvbSA9IFJlbWFuZW50X3BhcmFtZXRlcnNfc2lnLlNlcnZlciBpbiopXG4gIGxldCBwYXJhbWV0ZXIgPSBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9sb2dfc3RlcCBwYXJhbWV0ZXIgbG9nX3N0ZXAgaW5cbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2RlYnVnZ2luZ19tb2RlIHBhcmFtZXRlciBkZWJ1Z19tb2RlIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIG1hdGNoIG1heF9udW1iZXJfb2ZfaXR0ZXJhdGlvbnMgd2l0aFxuICAgIHwgTm9uZSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILmRvX25vdF9ib3VuZF9pdHRlcmF0aW9ucyBwYXJhbWV0ZXJcbiAgICB8IFNvbWUgaSAtPiBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9pdHRlcmF0aW9uX2JvdW5kIHBhcmFtZXRlciBpXG4gIGluXG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIGlmIGdldF9hbGxfc3RvcmllcyB0aGVuXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNldF9hbGxfc3Rvcmllc19wZXJfb2JzIHBhcmFtZXRlclxuICAgIGVsc2VcbiAgICAgIHBhcmFtZXRlclxuICBpblxuICBsZXQgcGFyYW1ldGVyID1cbiAgICBpZiBidWNrZXRfc29ydCB0aGVuXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnVzZV9idWNrZXRfc29ydCBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnVzZV9mdXNpb25fc29ydCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IG1vZGUgPSBwYXJhbWV0ZXIuUy5QSC5CLlBCLkNJLlBvLksuSC5jb21wcmVzc2lvbl9tb2RlIGluXG4gIGxldCBjYXVzYWxfdHJhY2Vfb24gPSBTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9jYXVzYWxfdHJhY2UgbW9kZSBpblxuICBsZXQgd2Vha19jb21wcmVzc2lvbl9vbiA9IFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X3dlYWtfY29tcHJlc3Npb24gbW9kZSBpblxuICBsZXQgc3Ryb25nX2NvbXByZXNzaW9uX29uID0gUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfc3Ryb25nX2NvbXByZXNzaW9uIG1vZGUgaW5cbiAgbGV0IGVycm9yID0gVS5lcnJvcl9pbml0IGluXG4gIGxldCBoYW5kbGVyID0gUy5QSC5CLlBCLkNJLlBvLksuSC5pbml0X2hhbmRsZXIgZW52IGluXG4gIGxldCAoKSA9XG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdGFydCwgXCJTdGFydGluZyBDb21wcmVzc2lvblwiKSlcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUxID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIgPVxuICAgIFUuY3JlYXRlX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8sIHRhYmxlMyA9XG4gICAgVS5jcmVhdGVfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGU0ID1cbiAgICBVLmNyZWF0ZV9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICBpblxuICBsZXQgKCkgPSBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9jYXVzYWxfZmxvd190YWJsZSBqc19pbnRlcmZhY2UgdGFibGUxIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGUyXG4gIGluXG4gIGxldCAoKSA9IENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlIHRhYmxlMyBpblxuICBsZXQgKCkgPVxuICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3N0cm9uZ19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2UgdGFibGU0XG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X3N0ZF9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X2Vycl9idWZmZXIganNfaW50ZXJmYWNlXG4gICAgICAoU29tZSAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfZGVidWdnaW5nX2NoYW5uZWwgcGFyYW1ldGVyKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDZmxvd19qc19pbnRlcmZhY2UucmVkaXJlY3RfcHJvZmlsaW5nX2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9wcm9maWxpbmdfbG9nZ2VyIHBhcmFtZXRlcikpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlZGlyZWN0X2JyYW5jaF9hbmRfY3V0X2J1ZmZlciBqc19pbnRlcmZhY2VcbiAgICAgIChTb21lXG4gICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfY29tcHJlc3Npb25fc3RhdHVzX2xvZ2dlclxuICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKSlcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9XG4gICAgbWF0Y2gganNfaW50ZXJmYWNlIHdpdGhcbiAgICB8IE5vbmUgLT4gcGFyYW1ldGVyXG4gICAgfCBTb21lIF9qc19pbnRlcmZhY2VfcHRyIC0+XG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9jdXJyZW50X3BoYXNlX3RpdGxlIHBhcmFtZXRlciAoZnVuIHMgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX2N1cnJlbnRfcGhhc2VfdGl0bGUganNfaW50ZXJmYWNlIHMpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3Jlc2V0X2N1cnJlbnRfcGhhc2VfdGl0bGUgcGFyYW1ldGVyIChmdW4gKCkgLT5cbiAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5yZXNldF9jdXJyZW50X3BoYXNlX3RpdGxlIGpzX2ludGVyZmFjZSlcbiAgICAgIGluXG4gICAgICBsZXQgcGFyYW1ldGVyID1cbiAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfc2F2ZV9wcm9ncmVzc19iYXIgcGFyYW1ldGVyXG4gICAgICAgICAgKENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3Byb2dyZXNzX2JhciBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3Jlc2V0X3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgKGZ1biAoKSAtPlxuICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnJlc2V0X3Byb2dyZXNzX2JhciBqc19pbnRlcmZhY2UpXG4gICAgICBpblxuICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X3NhdmVfZXJyb3JfbG9nIHBhcmFtZXRlciAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV9lcnJvcl9saXN0IGpzX2ludGVyZmFjZSBlcnJvcilcbiAgICAgIGluXG4gICAgICBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlciA9IFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX25vbmUgcGFyYW1ldGVyIGluXG4gIGxldCBwYXJhbWV0ZXJfY2F1c2FsID1cbiAgICBpZiBjYXVzYWxfdHJhY2Vfb24gdGhlblxuICAgICAgcGFyYW1ldGVyXG4gICAgZWxzZVxuICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zaHV0X2Rvd25fc2VydmVyX2NoYW5uZWwgcGFyYW1ldGVyXG4gIGluXG4gIGxldCBwYXJhbWV0ZXJfd2VhayA9XG4gICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cbiAgbGV0IHBhcmFtZXRlcl9zdHJvbmcgPVxuICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuXG4gICAgICBwYXJhbWV0ZXJcbiAgICBlbHNlXG4gICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnNodXRfZG93bl9zZXJ2ZXJfY2hhbm5lbCBwYXJhbWV0ZXJcbiAgaW5cblxuICBsZXQgZW1wdHlfY29tcHJlc3Npb24gPSBlcnJvciwgbG9nX2luZm8sIHRhYmxlMSwgdGFibGUyLCB0YWJsZTMsIHRhYmxlNCBpblxuICBsZXQgc3RlcF9saXN0ID0gVS50cmFjZV9vZl9wcmV0cmFjZSBzdGVwX2xpc3QgaW5cbiAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsLCBfdHJpdmlhbCwgd2Vhaywgc3Ryb25nID1cbiAgICBpZlxuICAgICAgKG5vdCBjYXVzYWxfdHJhY2Vfb24pICYmIChub3Qgd2Vha19jb21wcmVzc2lvbl9vbilcbiAgICAgICYmIG5vdCBzdHJvbmdfY29tcHJlc3Npb25fb25cbiAgICB0aGVuXG4gICAgICBlbXB0eV9jb21wcmVzc2lvblxuICAgIGVsc2UgKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RlcF9saXN0ID1cbiAgICAgICAgVS5yZW1vdmVfZXZlbnRzX2FmdGVyX2xhc3Rfb2JzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgc3RlcF9saXN0XG4gICAgICBpblxuICAgICAgaWYgbm90IChVLmhhc19vYnMgc3RlcF9saXN0KSB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgXCIrIE5vIGNhdXNhbCBmbG93IGZvdW5kQC5cIlxuICAgICAgICBpblxuICAgICAgICBlbXB0eV9jb21wcmVzc2lvblxuICAgICAgKSBlbHNlIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgKGlmIHdlYWtfY29tcHJlc3Npb25fb24gfHwgc3Ryb25nX2NvbXByZXNzaW9uX29uIHRoZW5cbiAgICAgICAgICAgICAgIFwiKyBQcm9kdWNpbmcgY2F1c2FsIGNvbXByZXNzaW9uc0AuXCJcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBcIisgUHJvZHVjaW5nIGNhdXNhbCB0cmFjZXNALlwiKVxuICAgICAgICBpblxuICAgICAgICBsZXQgbGFzdF9laWQgPSBVLmxhc3RfZWlkX2luX3ByZXRyYWNlIHN0ZXBfbGlzdCBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdGVwX2xpc3QgPVxuICAgICAgICAgIFUuc3BsaXRfaW5pdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgaW5cbiAgICAgICAgKCogY2F1c2FsIGNvbXByZXNzaW9uIHdpdGhvdXQgYW55IHNpbXBsaWZpY2F0aW9uIChqdXN0IHBhcnRpYWwgb3JkZXIgY29tcHJlc3Npb24pKilcbiAgICAgICAgKCogdGhpcyBpcyB2ZXJ5IGNvc3RseSwgYW5kIG1haW5seSBmb3IgdGVhY2hpbmcgcHVycG9zZSAqKVxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfdGFibGUgPVxuICAgICAgICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuIChcbiAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfY2F1c2FsIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gYmxhY2tib2FyZCBnZW5lcmF0aW9uQC5cIlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0ZXBfbGlzdCA9XG4gICAgICAgICAgICAgIFUubWFrZV91bmFtYmlndW91cyBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBzdGVwX2xpc3RcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2JvYXJkID1cbiAgICAgICAgICAgICAgVS5jb252ZXJ0X3RyYWNlX2ludG9fbXVzaWNhbF9ub3RhdGlvbiBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgIGVycm9yIHN0ZXBfbGlzdFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgJiYgbG9nX3N0ZXAgdGhlblxuICAgICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICBcIlxcdCAtIHByZXR0eSBwcmludGluZyB0aGUgZ3JpZEAuXCJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgbG9nX2luZm8sIGVycm9yID1cbiAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuIChcbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBVLmV4cG9ydF9tdXNpY2FsX2dyaWRfdG9feGxzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgIFwiYVwiIDAgMCBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoKSA9XG4gICAgICAgICAgICAgICAgICBVLnByaW50X211c2ljYWxfZ3JpZCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgICBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsb2dfaW5mbywgZXJyb3JcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgbG9nX2luZm8sIGVycm9yXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgIFUuZXh0cmFjdF9vYnNlcnZhYmxlX2hpdHNfZnJvbV9tdXNpY2FsX25vdGF0aW9uIHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgYmxhY2tib2FyZFxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCBuX3N0b3JpZXMgPSBMaXN0Lmxlbmd0aCBsaXN0IGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiXFx0IC0gY29tcHV0aW5nIGNhdXNhbCBwYXN0IG9mIGVhY2ggb2JzZXJ2ZWQgZXZlbnRzICglaSlALlwiXG4gICAgICAgICAgICAgICAgICBuX3N0b3JpZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgaWYgZGVidWdfbW9kZSB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0XFx0ICogY2F1c2FsIGNvbXByZXNzaW9uIEAuXCJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKCpcdFx0bGV0IGxvZ19pbmZvID0gVS5TLlBILkIuUEIuQ0kuUG8uSy5QLnNldF9zdGFydF9jb21wcmVzc2lvbiBsb2dfaW5mbyBpbiAqKVxuICAgICAgICAgICAgICAoKiBXZSB1c2UgdGhlIGdyaWQgdG8gZ2V0IHRoZSBjYXVzYWwgcHJlY2VkZW5jZSAocHJlZCogKSBvZiBlYWNoIG9ic2VydmFibGUgKilcbiAgICAgICAgICAgICAgbGV0IGdyaWQgPSBVLmNvbnZlcnRfdHJhY2VfaW50b19ncmlkIHN0ZXBfbGlzdCBoYW5kbGVyIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGVucmljaGVkX2dyaWQgPVxuICAgICAgICAgICAgICAgIFVcbiAgICAgICAgICAgICAgICAuZW5yaWNoX2dyaWRfd2l0aF90cmFuc2l0aXZlX3Bhc3Rfb2ZfZWFjaF9ub2RlX3dpdGhvdXRfYV9wcm9ncmVzc19iYXJcbiAgICAgICAgICAgICAgICAgIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGdyaWRcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBQYXJhbWV0ZXIubG9nX251bWJlcl9vZl9jYXVzYWxfZmxvd3MgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZvcm1hdHRlcl9vZl9sb2dnZXJcbiAgICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgICAgICAgfCBTb21lIGxvZ2dlciAtPlxuICAgICAgICAgICAgICAgICAgICBDYXVzYWwucHJpbnRfc3RhdCBsb2dnZXIgcGFyYW1ldGVyIGhhbmRsZXIgZW5yaWNoZWRfZ3JpZFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBpZiBsb2dfc3RlcCB0aGVuXG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiXFx0IC0gY2F1c2FsIGZsb3cgY29tcHJlc3Npb24gKCVpKUAuXCIgbl9zdG9yaWVzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICgqIHdlIGZvbGQgdGhlIGxpc3Qgb2Ygb2JlcnZhYmxlIGhpdCwgYW5kIGZvciBlYWNoIG9uZSBjb2xsZWN0IHRoZSBjYXVzYWwgcGFzdCAqKVxuICAgICAgICAgICAgICBVLmZvbGRfbGVmdF93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIH5ldmVudDpTdG9yeVByb2ZpbGluZy5Db2xsZWN0X3RyYWNlc1xuICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyID9zaGFsbF93ZV9jb21wdXRlOl9cbiAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfID9wcmludF9pZl96ZXJvOl9cbiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igc3RvcnlfbGlzdCBvYnNlcnZhYmxlX2lkIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICBpZiBkZWJ1Z19tb2RlIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICAgICAgXCJcXHRcXHQgKiBjYXVzYWwgY29tcHJlc3Npb24gQC5cIlxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAmJiBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9jaGFubmVsX29uIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAoU3RvcnlfanNvbi5QaGFzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgb25lIGNhdXNhbCBjb21wcmVzc2lvblwiICkpXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uID1cbiAgICAgICAgICAgICAgICAgICAgVS5jYXVzYWxfcHJlZml4X29mX2FuX29ic2VydmFibGVfaGl0IHBhcmFtZXRlciBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgXCJjb21wcmVzc2lvbl9tYWluLCBsaW5lIDIwMTRcIiBibGFja2JvYXJkXG4gICAgICAgICAgICAgICAgICAgICAgZW5yaWNoZWRfZ3JpZCBvYnNlcnZhYmxlX2lkXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgbGV0IGluZm8gPVxuICAgICAgICAgICAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgICAgICAgICAgIFUuZ2V0X3J1bnRpbWVfaW5mb19mcm9tX29ic2VydmFibGVfaGl0IG9ic2VydmFibGVfaWRcbiAgICAgICAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgICAgICAgfCBTb21lIGluZm8gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgaW5mbyA9XG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8gd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICBUcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfaWQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuZ2V0X2NvdW50ZXIgc3RvcnlfbGlzdDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBpbmZvID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFRyYWNlLlNpbXVsYXRpb25faW5mby51cGRhdGVfcHJvZmlsaW5nX2luZm8gbG9nX2luZm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgWyBpbmZvIF1cbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfYXJyYXkgPVxuICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgdHJhY2VfYmVmb3JlX2NvbXByZXNzaW9uIGluZm8gc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X2FycmF5KVxuICAgICAgICAgICAgICAgIHRhYmxlMSAoTGlzdC5yZXYgbGlzdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV9saXN0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfbGlzdFxuICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTFcbiAgICAgICAgaW5cbiAgICAgICAgKCogTm93IGNhdXNhbCBjb21wcmVzc2lvbiwgd2l0aCBkZXRlY3Rpb24gb2Ygc2lwaG9ucyAmIGRldGVjdGlvbiBvZiBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgbGV0IHBhcmFtZXRlcl9kZWVwZXIgPVxuICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2thc2FfcGFyYW1ldGVyc1xuICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMudXBkYXRlX3ByZWZpeFxuICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICBcIlxcdFxcdFxcdFwiKVxuICAgICAgICAgICAgcGFyYW1ldGVyX2NhdXNhbFxuICAgICAgICBpblxuICAgICAgICBsZXQgb25lX2l0ZXJhdGlvbl9vZl9jb21wcmVzc2lvbiAobG9nX2luZm8sIGVycm9yLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCA9XG4gICAgICAgICAgICBpZiBHcmFwaF9jbG9zdXJlLmlnbm9yZV9mbG93X2Zyb21fb3V0Z29pbmdfc2lwaG9uIHRoZW5cbiAgICAgICAgICAgICAgVS5maWxsX3NpcGhvbiBwYXJhbWV0ZXJfZGVlcGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIGlmIGRlYnVnX21vZGUgdGhlbiBVLnByaW50X3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGV2ZW50X2xpc3RcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QgPVxuICAgICAgICAgICAgaWYgUGFyYW1ldGVyLmRvX2dsb2JhbF9jdXQgdGhlblxuICAgICAgICAgICAgICBVLmN1dCBwYXJhbWV0ZXJfZGVlcGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgIGluXG4gICAgICAgICAgaWYgUGFyYW1ldGVyLmN1dF9wc2V1ZG9faW52ZXJzZV9ldmVudCB0aGVuXG4gICAgICAgICAgICBVLnJlbW92ZV9wc2V1ZG9faW52ZXJzZV9ldmVudHMgcGFyYW1ldGVyX2RlZXBlclxuICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICBlcnJvciBldmVudF9saXN0XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0XG4gICAgICAgIGluXG4gICAgICAgICgqIFRoaXMgZm9uY3Rpb24gaXRlciB0aGUgY2F1c2FsIGNvbXByZXNzaW9uIHVudGlsIGEgZml4cG9pbnQgaXMgcmVhY2hlZCAqKVxuICAgICAgICBsZXQgcmVjIGF1eCBrIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QpID1cbiAgICAgICAgICBsZXQgc2l6ZSA9IFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QgaW5cbiAgICAgICAgICBtYXRjaFxuICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfYm91bmRfb25faXR0ZXJhdGlvbl9udW1iZXIgcGFyYW1ldGVyXG4gICAgICAgICAgd2l0aFxuICAgICAgICAgIHwgU29tZSBrJyB3aGVuIGsgPj0gaycgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHQtIG1heCBudW1iZXIgb2YgaXRlcmF0aW9ucyByZWFjaGVkLCAlaSBldmVudHMgcmVtYWluaW5nIEAuXCJcbiAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgIHNpemVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3RcbiAgICAgICAgICB8IFNvbWUgXyB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgIFwiJXNcXHRcXHQtIHN0YXJ0IGl0ZXJhdGlvbiAlaSwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgKFJlbWFuZW50X3BhcmFtZXRlcnMuZ2V0X3ByZWZpeFxuICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgICAoayArIDEpIHNpemVcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgb3V0cHV0X29wdCA9XG4gICAgICAgICAgICAgIHRyeVxuICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgIChvbmVfaXRlcmF0aW9uX29mX2NvbXByZXNzaW9uIChsb2dfaW5mbywgZXJyb3IsIGV2ZW50X2xpc3QpKVxuICAgICAgICAgICAgICB3aXRoIFN5cy5CcmVhayAtPiBOb25lXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKG1hdGNoIG91dHB1dF9vcHQgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgIFwiJXNcXHQtIGl0ZXJhdGlvbnMgc3RvcHBlZCBieSB0aGUgZW5kLXVzZXIsICVpIGV2ZW50cyBcXFxuICAgICAgICAgICAgICAgICAgIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcikpXG4gICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdFxuICAgICAgICAgICAgfCBTb21lIChlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnKSAtPlxuICAgICAgICAgICAgICBpZiBVLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdCcgPCBVLnNpemVfb2ZfcHJldHJhY2UgZXZlbnRfbGlzdFxuICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgYXV4IChrICsgMSkgKGVycm9yLCBsb2dfaW5mbywgZXZlbnRfbGlzdCcpXG4gICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgIFwiJXNcXHQtIGEgZml4cG9pbnQgaGFzIGJlZW4gcmVhY2hlZCwgJWkgZXZlbnRzIHJlbWFpbmluZyBALlwiXG4gICAgICAgICAgICAgICAgICAgIChSZW1hbmVudF9wYXJhbWV0ZXJzLmdldF9wcmVmaXhcbiAgICAgICAgICAgICAgICAgICAgICAgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2thc2FfcGFyYW1ldGVycyBwYXJhbWV0ZXIpKVxuICAgICAgICAgICAgICAgICAgICBzaXplXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGV2ZW50X2xpc3QnXG4gICAgICAgICAgICAgICkpXG4gICAgICAgIGluXG4gICAgICAgIGxldCBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KSA9XG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIExvZ2dlcnMuZnByaW50ZlxuICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgXCIlc1xcdC0gc2ltcGxpZnkgdGhlIHRyYWNlLCAlaSBldmVudHMgQC5cIlxuICAgICAgICAgICAgICAoUmVtYW5lbnRfcGFyYW1ldGVycy5nZXRfcHJlZml4XG4gICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKSlcbiAgICAgICAgICAgICAgKFV0aWxpdGllcy5zaXplX29mX3ByZXRyYWNlIGV2ZW50X2xpc3QpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBhdXggayAoZXJyb3IsIGxvZ19pbmZvLCBldmVudF9saXN0KVxuICAgICAgICBpblxuICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgaWYgd2Vha19jb21wcmVzc2lvbl9vbiB8fCBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlblxuICAgICAgICAgICAgaWYgUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfYmxhY2tsaXN0X2V2ZW50cyBwYXJhbWV0ZXIgdGhlbiAoXG4gICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfd2VhayBpblxuICAgICAgICAgICAgICBsZXQgYmxhY2tsaXN0ID0gVS5jcmVhdGVfYmxhY2tfbGlzdCAobGFzdF9laWQgKyAxKSBpblxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCAoX2JsLCBjYXVzYWxfc3RvcnlfdGFibGUsIHdlYWtfc3RvcnlfdGFibGUpID1cbiAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0XG4gICAgICAgICAgICAgICAgLmZvbGRfb3Zlcl90aGVfY2F1c2FsX3Bhc3Rfb2Zfb2JzZXJ2YWJsZXNfd2l0aF9hX3Byb2dyZXNzX2Jhcl93aGlsZV9yZXNoYWtpbmdfdGhlX3RyYWNlXG4gICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciB3ZV9zaGFsbCB3ZV9zaGFsbF9ub3RcbiAgICAgICAgICAgICAgICAgIFV0aWxpdGllc19leHBlcnQucGFyYW1ldGVycyBhdXhcbiAgICAgICAgICAgICAgICAgIChmdW4gcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgcmVtb3ZlIHBzZXVkbyBpbnZlcnNlIGV2ZW50cyAqKVxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILmlzX3NlcnZlcl9tb2RlIHBhcmFtZXRlclxuICAgICAgICAgICAgICAgICAgICAgICAgJiYgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfY2hhbm5lbF9vbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBTLlBILkIuUEIuQ0kuUG8uSy5ILnB1c2hfanNvbiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFN0b3J5X2pzb24uUGhhc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCBTdG9yeV9qc29uLklucHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJTdGFydCBjb2xsZWN0aW5nIG9uZSBuZXcgdHJhY2VcIiApKVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0cmFjZSA9XG4gICAgICAgICAgICAgICAgICAgICAgVS5yZW1vdmVfcHNldWRvX2ludmVyc2VfZXZlbnRzIChkb19ub3RfbG9nIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgKCogd2UgY29tcHV0ZSBjYXVzYWwgY29tcHJlc3Npb24gKilcbiAgICAgICAgICAgICAgICAgICAgVS5jdXQgKGRvX25vdF9sb2cgcGFyYW1ldGVyKSB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgIH5zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjp3ZV9zaGFsbCBoYW5kbGVyXG4gICAgICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3IgdHJhY2UpXG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgID9zaGFsbF93ZV9jb21wdXRlX3Byb2ZpbGluZ19pbmZvcm1hdGlvbjpfXG4gICAgICAgICAgICAgICAgICAgICAgID9wcmludF9pZl96ZXJvOl8gaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZSBpbmZvXG4gICAgICAgICAgICAgICAgICAgICAgIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIgPVxuICAgICAgICAgICAgICAgICAgICAgIFUuc3RvcmVfdHJhY2UgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHRyYWNlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnJlbW92ZV9ibGFja2xpc3RlZF9ldmVudCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgYmxhY2tsaXN0IHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIFUud2Vha2x5X2NvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgdGFibGUzID1cbiAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMykgdHJhY2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdGFibGUzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvIHRhYmxlM1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFUuYmxhY2tfbGlzdCBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciB0cmFjZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgYmxhY2tsaXN0LCB0YWJsZTMpXG4gICAgICAgICAgICAgICAgICAgICAgICAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBDZmxvd19qc19pbnRlcmZhY2Uuc2F2ZV90cml2aWFsX2NvbXByZXNzaW9uX3RhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2UgdGFibGUyXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlM1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIChibGFja2xpc3QsIHRhYmxlMiwgdGFibGUzKSlcbiAgICAgICAgICAgICAgICAgIHN0ZXBfbGlzdFxuICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgdGFibGUyLCB0YWJsZTMpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgd2Vha19zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3dlYWtfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlLCB3ZWFrX3N0b3J5X3RhYmxlXG4gICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBjYXVzYWxfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBwYXJhbWV0ZXJfY2F1c2FsIGluXG4gICAgICAgICAgICAgICAgVXRpbGl0aWVzX2V4cGVydFxuICAgICAgICAgICAgICAgIC5mb2xkX292ZXJfdGhlX2NhdXNhbF9wYXN0X29mX29ic2VydmFibGVzX3dpdGhfYV9wcm9ncmVzc19iYXJfd2hpbGVfcmVzaGFraW5nX3RoZV90cmFjZVxuICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyIH5zaGFsbF93ZV9jb21wdXRlOndlX3NoYWxsXG4gICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgbG9nX2luZm8gZXJyb3Igd2Vfc2hhbGwgd2Vfc2hhbGxfbm90XG4gICAgICAgICAgICAgICAgICBVdGlsaXRpZXNfZXhwZXJ0LnBhcmFtZXRlcnMgYXV4XG4gICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICgqIHdlIHJlbW92ZSBwc2V1ZG8gaW52ZXJzZSBldmVudHMgKilcbiAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5pc19zZXJ2ZXJfbW9kZSBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICYmIFMuUEguQi5QQi5DSS5Qby5LLkguaXNfc2VydmVyX2NoYW5uZWxfb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChTdG9yeV9qc29uLlBoYXNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICggU3RvcnlfanNvbi5JbnByb2dyZXNzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiU3RhcnQgY29sbGVjdGluZyBvbmUgbmV3IHRyYWNlXCIgKSlcbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgdHJhY2UgPVxuICAgICAgICAgICAgICAgICAgICAgIFUucmVtb3ZlX3BzZXVkb19pbnZlcnNlX2V2ZW50cyAoZG9fbm90X2xvZyBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZTp3ZV9zaGFsbFxuICAgICAgICAgICAgICAgICAgICAgICAgfnNoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOndlX3NoYWxsIGhhbmRsZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICgqIHdlIGNvbXB1dGUgY2F1c2FsIGNvbXByZXNzaW9uICopXG4gICAgICAgICAgICAgICAgICAgIFUuY3V0IChkb19ub3RfbG9nIHBhcmFtZXRlcikgfnNoYWxsX3dlX2NvbXB1dGU6d2Vfc2hhbGxcbiAgICAgICAgICAgICAgICAgICAgICB+c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246d2Vfc2hhbGwgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICAgIGxvZ19pbmZvIGVycm9yIHRyYWNlKVxuICAgICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgICA/c2hhbGxfd2VfY29tcHV0ZV9wcm9maWxpbmdfaW5mb3JtYXRpb246X1xuICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgaW5mbyB0cmFjZSB0YWJsZSAtPlxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGluZm8sIHRhYmxlID1cbiAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGluZm8gdHJhY2VcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfdHJpdmlhbF9jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAganNfaW50ZXJmYWNlIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGVycm9yLCBpbmZvLCB0YWJsZSlcbiAgICAgICAgICAgICAgICAgIHN0ZXBfbGlzdCB0YWJsZTJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgY2F1c2FsX3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBVLmZsYXR0ZW5fc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgIGNhdXNhbF9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIENmbG93X2pzX2ludGVyZmFjZS5zYXZlX3RyaXZpYWxfY29tcHJlc3Npb25fdGFibGUganNfaW50ZXJmYWNlXG4gICAgICAgICAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBMb2dnZXJzLnByaW50X25ld2xpbmUgKFMuUEguQi5QQi5DSS5Qby5LLkguZ2V0X2xvZ2dlciBwYXJhbWV0ZXIpXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgTG9nZ2Vycy5wcmludF9uZXdsaW5lIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgbl9jYXVzYWxfc3RvcmllcyA9IFUuY291bnRfc3RvcmllcyBjYXVzYWxfc3RvcnlfdGFibGUgaW5cbiAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgd2Vha2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3dlYWsgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgTG9nZ2Vycy5mcHJpbnRmXG4gICAgICAgICAgICAgICAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9sb2dnZXIgcGFyYW1ldGVyKVxuICAgICAgICAgICAgICAgICAgICBcIlxcdCAtIHdlYWsgZmxvdyBjb21wcmVzc2lvbiAoJWkpQC5cIiBuX2NhdXNhbF9zdG9yaWVzXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgYmxhY2tsaXN0ID0gVS5jcmVhdGVfYmxhY2tfbGlzdCAobGFzdF9laWQgKyAxKSBpblxuICAgICAgICAgICAgICAgIGxldCBwYXJhbWV0ZXIgPVxuICAgICAgICAgICAgICAgICAgUy5QSC5CLlBCLkNJLlBvLksuSC5zZXRfY29tcHJlc3Npb25fd2VhayBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIChfYmxhY2tsaXN0LCB3ZWFrbHlfc3RvcnlfdGFibGUpID1cbiAgICAgICAgICAgICAgICAgIFUuZm9sZF9zdG9yeV90YWJsZV93aXRoX3Byb2dyZXNzX2JhciBwYXJhbWV0ZXIgaGFuZGxlclxuICAgICAgICAgICAgICAgICAgICBsb2dfaW5mbyBlcnJvciBcIndlYWsgY29tcHJlc3Npb25cIlxuICAgICAgICAgICAgICAgICAgICAoZnVuIHBhcmFtZXRlciA/c2hhbGxfd2VfY29tcHV0ZTpfXG4gICAgICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl9cbiAgICAgICAgICAgICAgICAgICAgICAgICA/cHJpbnRfaWZfemVybzpfIGhhbmRsZXIgbG9nX2luZm8gZXJyb3IgdHJhY2UgbGlzdF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICAgICAgKGJsYWNrbGlzdCwgc3RvcnlfbGlzdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgIFUud2Vha2x5X2NvbXByZXNzIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biAoZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpIHRyYWNlIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3RvcnlfbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVLnN0b3JlX3RyYWNlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlIGxpc3RfaW5mbyBzdG9yeV9saXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqc19pbnRlcmZhY2Ugc3RvcnlfbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBibGFja2xpc3QsIHN0b3J5X2xpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChlcnJvciwgbG9nX2luZm8sIGJsYWNrbGlzdCwgc3RvcnlfbGlzdClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCAoYmxhY2tsaXN0LCBzdG9yeV9saXN0KSlcbiAgICAgICAgICAgICAgICAgICAgY2F1c2FsX3N0b3J5X3RhYmxlIChibGFja2xpc3QsIHRhYmxlMylcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFUuZmxhdHRlbl9zdG9yeV90YWJsZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvclxuICAgICAgICAgICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ2Zsb3dfanNfaW50ZXJmYWNlLnNhdmVfd2Vha19jb21wcmVzc2lvbl90YWJsZSBqc19pbnRlcmZhY2VcbiAgICAgICAgICAgICAgICAgIHdlYWtseV9zdG9yeV90YWJsZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIGNhdXNhbF9zdG9yeV90YWJsZSwgd2Vha2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgICApXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCB0YWJsZTIsIHRhYmxlM1xuICAgICAgICBpblxuICAgICAgICBsZXQgbl93ZWFrX3N0b3JpZXMgPSBVLmNvdW50X3N0b3JpZXMgd2Vha2x5X3N0b3J5X3RhYmxlIGluXG4gICAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIHN0cm9uZ2x5X3N0b3J5X3RhYmxlID1cbiAgICAgICAgICBpZiBzdHJvbmdfY29tcHJlc3Npb25fb24gdGhlbiAoXG4gICAgICAgICAgICBsZXQgcGFyYW1ldGVyID0gcGFyYW1ldGVyX3N0cm9uZyBpblxuICAgICAgICAgICAgbGV0IHBhcmFtZXRlciA9XG4gICAgICAgICAgICAgIFMuUEguQi5QQi5DSS5Qby5LLkguc2V0X2NvbXByZXNzaW9uX3N0cm9uZyBwYXJhbWV0ZXJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBMb2dnZXJzLmZwcmludGZcbiAgICAgICAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfbG9nZ2VyIHBhcmFtZXRlcilcbiAgICAgICAgICAgICAgICBcIlxcdCAtIHN0cm9uZyBmbG93IGNvbXByZXNzaW9uICglaSlALlwiIG5fd2Vha19zdG9yaWVzXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUgPVxuICAgICAgICAgICAgICBVLmZvbGRfc3RvcnlfdGFibGVfd2l0aF9wcm9ncmVzc19iYXIgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm9cbiAgICAgICAgICAgICAgICBlcnJvciBcInN0cm9uZ19jb21wcmVzc2lvblwiXG4gICAgICAgICAgICAgICAgKGZ1biBwYXJhbWV0ZXIgP3NoYWxsX3dlX2NvbXB1dGU6X1xuICAgICAgICAgICAgICAgICAgICAgP3NoYWxsX3dlX2NvbXB1dGVfcHJvZmlsaW5nX2luZm9ybWF0aW9uOl8gP3ByaW50X2lmX3plcm86X1xuICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBsb2dfaW5mbyBlcnJvciByZWZpbmVkX2V2ZW50X2xpc3QgbGlzdF9pbmZvXG4gICAgICAgICAgICAgICAgICAgICBzdHJvbmdseV9zdG9yeV90YWJsZSAtPlxuICAgICAgICAgICAgICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgIFUuY29tcHJlc3MgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICByZWZpbmVkX2V2ZW50X2xpc3RcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSA9XG4gICAgICAgICAgICAgICAgICAgIG1hdGNoIGxpc3Qgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGVcbiAgICAgICAgICAgICAgICAgICAgfCBfIC0+XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gKGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgVS5zdG9yZV90cmFjZSBwYXJhbWV0ZXIgaGFuZGxlciBsb2dfaW5mbyBlcnJvciBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9pbmZvIHN0cm9uZ2x5X3N0b3J5X3RhYmxlKVxuICAgICAgICAgICAgICAgICAgICAgICAgKGVycm9yLCBsb2dfaW5mbywgc3Ryb25nbHlfc3RvcnlfdGFibGUpXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgZXJyb3IsIGxvZ19pbmZvLCBzdHJvbmdseV9zdG9yeV90YWJsZSlcbiAgICAgICAgICAgICAgICB3ZWFrbHlfc3RvcnlfdGFibGUgdGFibGU0XG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgVS5mbGF0dGVuX3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yXG4gICAgICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlXG4gICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICBlcnJvciwgbG9nX2luZm8sIHRhYmxlNFxuICAgICAgICBpblxuICAgICAgICAoIGVycm9yLFxuICAgICAgICAgIGxvZ19pbmZvLFxuICAgICAgICAgIGNhdXNhbF90YWJsZSxcbiAgICAgICAgICBjYXVzYWxfc3RvcnlfdGFibGUsXG4gICAgICAgICAgd2Vha2x5X3N0b3J5X3RhYmxlLFxuICAgICAgICAgIHN0cm9uZ2x5X3N0b3J5X3RhYmxlIClcbiAgICAgIClcbiAgICApXG4gIGluXG4gIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgIGlmIGNhdXNhbF90cmFjZV9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGNhdXNhbFxuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIlwiIFwiXCJcbiAgICAgICAgICBleHBvcnRcbiAgICAgIGluXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgICApIGVsc2VcbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICBpblxuICBsZXQgZXJyb3IsIGxvZ19pbmZvID1cbiAgICBpZiB3ZWFrX2NvbXByZXNzaW9uX29uIHRoZW4gKFxuICAgICAgbGV0IGVycm9yLCBsb2dfaW5mbywgZXhwb3J0ID1cbiAgICAgICAgVS5leHBvcnRfc3RvcnlfdGFibGUgcGFyYW1ldGVyIGhhbmRsZXIgbG9nX2luZm8gZXJyb3Igd2Vha1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIldlYWtseVwiXG4gICAgICAgICAgXCJ3ZWFrbHkgXCIgZXhwb3J0XG4gICAgICBpblxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gICAgKSBlbHNlXG4gICAgICBlcnJvciwgbG9nX2luZm9cbiAgaW5cbiAgbGV0IGVycm9yLCBfbG9nX2luZm8gPVxuICAgIGlmIHN0cm9uZ19jb21wcmVzc2lvbl9vbiB0aGVuIChcbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8sIGV4cG9ydCA9XG4gICAgICAgIFUuZXhwb3J0X3N0b3J5X3RhYmxlIHBhcmFtZXRlciBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIHN0cm9uZ1xuICAgICAgaW5cbiAgICAgIGxldCBlcnJvciwgbG9nX2luZm8gPVxuICAgICAgICBDYXVzYWwucHJldHR5X3ByaW50IH5kb3RGb3JtYXRcbiAgICAgICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgICAgICAgICBoYW5kbGVyIGxvZ19pbmZvIGVycm9yIGVudiBHcmFwaF9jbG9zdXJlLmNvbmZpZ19zbWFsbF9ncmFwaCBcIlN0cm9uZ2x5XCJcbiAgICAgICAgICBcInN0cm9uZ2x5IFwiIGV4cG9ydFxuICAgICAgaW5cbiAgICAgIGVycm9yLCBsb2dfaW5mb1xuICAgICkgZWxzZVxuICAgICAgZXJyb3IsIGxvZ19pbmZvXG4gIGluXG4gIGxldCAoKSA9XG4gICAgUy5QSC5CLlBCLkNJLlBvLksuSC5wdXNoX2pzb24gcGFyYW1ldGVyXG4gICAgICAoU3RvcnlfanNvbi5QaGFzZSAoU3RvcnlfanNvbi5TdWNjZXNzLCBcIkNvbXByZXNzaW9uIGNvbXBsZXRlZFwiKSlcbiAgaW5cbiAgbGV0IF8gPVxuICAgIFN0b3J5UHJvZmlsaW5nLlN0b3J5U3RhdHMuY2xvc2VfbG9nZ2VyXG4gICAgICAoUy5QSC5CLlBCLkNJLlBvLksuSC5nZXRfa2FzYV9wYXJhbWV0ZXJzIHBhcmFtZXRlcilcbiAgaW5cbiAgbGV0IF8gPVxuICAgIEV4Y2VwdGlvbi5wcmludF9mb3JfS2FTaW1cbiAgICAgIChTLlBILkIuUEIuQ0kuUG8uSy5ILmdldF9rYXNhX3BhcmFtZXRlcnMgcGFyYW1ldGVyKVxuICAgICAgZXJyb3JcbiAgaW5cbiAgKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBvbl9tZXNzYWdlIH5ub25lIH53ZWFrIH5zdHJvbmcgfnNlbmRfbWVzc2FnZSA9XG4gIGxldCBwYXJhbWV0ZXIgPVxuICAgIHJlZlxuICAgICAgKENvbXByZXNzaW9uX21haW4uYnVpbGRfcGFyYW1ldGVyXG4gICAgICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIH5zZW5kX21lc3NhZ2Ugfm5vbmUgfndlYWtcbiAgICAgICAgIH5zdHJvbmcgKCkpXG4gIGluXG4gIGZ1biB0ZXh0IC0+XG4gICAgdHJ5XG4gICAgICBKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgIChmdW4gc3QgYiAtPiBmdW5jdGlvblxuICAgICAgICAgIHwgXCJDT05GSUdcIiAtPlxuICAgICAgICAgICAgbGV0IGNvbmYgPSBKc29uVXRpbC5yZWFkX25leHRfaXRlbSBZb2pzb24uQmFzaWMucmVhZF9qc29uIHN0IGIgaW5cbiAgICAgICAgICAgIGxldCBub25lID1cbiAgICAgICAgICAgICAgbWF0Y2hcbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMuVXRpbC50b19ib29sX29wdGlvblxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5VdGlsLm1lbWJlciBcIm5vbmVcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBub25lXG4gICAgICAgICAgICAgIHwgU29tZSBiIC0+IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgd2VhayA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJ3ZWFrXCIgY29uZilcbiAgICAgICAgICAgICAgd2l0aFxuICAgICAgICAgICAgICB8IE5vbmUgLT4gd2Vha1xuICAgICAgICAgICAgICB8IFNvbWUgYiAtPiBiXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHN0cm9uZyA9XG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLlV0aWwudG9fYm9vbF9vcHRpb25cbiAgICAgICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5tZW1iZXIgXCJzdHJvbmdcIiBjb25mKVxuICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBzdHJvbmdcbiAgICAgICAgICAgICAgfCBTb21lIGIgLT4gYlxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgIHBhcmFtZXRlciA6PVxuICAgICAgICAgICAgICAgIENvbXByZXNzaW9uX21haW4uYnVpbGRfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICB+Y2FsbGVkX2Zyb206UmVtYW5lbnRfcGFyYW1ldGVyc19zaWcuU2VydmVyIH5zZW5kX21lc3NhZ2VcbiAgICAgICAgICAgICAgICAgIH5ub25lIH53ZWFrIH5zdHJvbmcgKClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKVxuICAgICAgICAgIHwgXCJSVU5cIiAtPlxuICAgICAgICAgICAgbGV0IGVudiwgc3RlcHMgPVxuICAgICAgICAgICAgICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgICAgICAgICAgICAgIChUcmFjZS5mb2xkX3RyYWNlXG4gICAgICAgICAgICAgICAgICAgKGZ1biBfZW52IHN0ZXBzIHN0ZXAgLT4gc3RlcCA6OiBzdGVwcylcbiAgICAgICAgICAgICAgICAgICAoZnVuIF8gLT4gW10pKVxuICAgICAgICAgICAgICAgIHN0IGJcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBDb21wcmVzc2lvbl9tYWluLmNvbXByZXNzX2FuZF9wcmludCAhcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgfmRvdEZvcm1hdDpDYXVzYWwuSHRtbCBlbnZcbiAgICAgICAgICAgICAgICAoQ29tcHJlc3Npb25fbWFpbi5pbml0X3NlY3JldF9sb2dfaW5mbyAoKSlcbiAgICAgICAgICAgICAgICAoTGlzdC5yZXYgc3RlcHMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgKClcbiAgICAgICAgICB8IHggLT4gcmFpc2UgKFlvanNvbi5qc29uX2Vycm9yIChcIkludmFsaWQgS2FTdG9yIG1lc3NhZ2U6IFwiIF4geCkpKVxuICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgKExleGluZy5mcm9tX3N0cmluZyB0ZXh0KVxuICAgIHdpdGggZSAtPlxuICAgICAgbGV0ICgpID0gRm9ybWF0LmVwcmludGYgXCIlc0AuXCIgKFByaW50ZXhjLnRvX3N0cmluZyBlKSBpblxuICAgICAgKCkgKCpUT0RPKilcbiIsInR5cGUgJ2Egc3VwZXJsaXN0ID0gRWx0IG9mICdhIHwgU3VwZXJfbGlzdCBvZiAnYSBzdXBlcmxpc3QgbGlzdCBsaXN0XG5cbmxldCByZWMgZm9sZCBmIGEgbGlzdCA9XG4gIG1hdGNoIGxpc3Qgd2l0aFxuICB8IEVsdCBlbHQgLT4gZiBhIGVsdFxuICB8IFN1cGVyX2xpc3QgbCAtPiBMaXN0LmZvbGRfbGVmdCAoTGlzdC5mb2xkX2xlZnQgKGZvbGQgZikpIGEgbFxuXG5sZXQgcmVjIGNvbXBhcmVfbGlzdCBjb21wYXJlIGwxIGwyID1cbiAgbWF0Y2ggbDEgd2l0aFxuICB8IFtdIC0+XG4gICAgKG1hdGNoIGwyIHdpdGhcbiAgICB8IFtdIC0+IDBcbiAgICB8IF8gLT4gLTEpXG4gIHwgaDEgOjogdDEgLT5cbiAgICAobWF0Y2ggbDIgd2l0aFxuICAgIHwgW10gLT4gMVxuICAgIHwgaDIgOjogdDIgLT5cbiAgICAgIGxldCBjbXAgPSBjb21wYXJlIGgxIGgyIGluXG4gICAgICAobWF0Y2ggY21wIHdpdGhcbiAgICAgIHwgMCAtPiBjb21wYXJlX2xpc3QgY29tcGFyZSB0MSB0MlxuICAgICAgfCBfIC0+IGNtcCkpXG5cbmxldCByZWMgY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSBhIGIgPVxuICBtYXRjaCBhLCBiIHdpdGhcbiAgfCBFbHQgYSwgRWx0IGIgLT4gY29tcGFyZSBhIGJcbiAgfCBTdXBlcl9saXN0IGEsIFN1cGVyX2xpc3QgYiAtPlxuICAgIGNvbXBhcmVfbGlzdCAoY29tcGFyZV9saXN0IChjb21wYXJlX3N1cGVybGlzdCBjb21wYXJlKSkgYSBiXG4gIHwgRWx0IF8sIFN1cGVyX2xpc3QgXyAtPiAtMVxuICB8IFN1cGVyX2xpc3QgXywgRWx0IF8gLT4gMVxuXG5sZXQgcmVjIHNvcnQgY29tcGFyZSBzdXBlcmxpc3QgPVxuICBtYXRjaCBzdXBlcmxpc3Qgd2l0aFxuICB8IEVsdCBhIC0+IEVsdCBhXG4gIHwgU3VwZXJfbGlzdCBhIC0+XG4gICAgU3VwZXJfbGlzdFxuICAgICAgKExpc3QucmV2X21hcFxuICAgICAgICAgKGZ1biBsIC0+XG4gICAgICAgICAgIGxldCBsJyA9IExpc3QucmV2X21hcCAoc29ydCBjb21wYXJlKSBsIGluXG4gICAgICAgICAgIGxldCBsJyA9IExpc3Quc29ydCAoY29tcGFyZV9zdXBlcmxpc3QgY29tcGFyZSkgbCcgaW5cbiAgICAgICAgICAgbCcpXG4gICAgICAgICAoTGlzdC5yZXYgYSkpXG5cbmxldCBkdW1wX3N1cGVyX2xpc3QgZiBzIGwgPVxuICBsZXQgcmVjIGF1eCBkZXB0aCBmIGwgPVxuICAgIG1hdGNoIGwgd2l0aFxuICAgIHwgRWx0IGEgLT4gRm9ybWF0LmZwcmludGYgZiBcIiVzJWFALFwiIGRlcHRoIHMgYVxuICAgIHwgU3VwZXJfbGlzdCBsIC0+XG4gICAgICBQcC5saXN0IFBwLmN1dFxuICAgICAgICAoZnVuIGYgbCAtPlxuICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIlc0AsJWFcIiBkZXB0aFxuICAgICAgICAgICAgKFBwLmxpc3QgUHAuY3V0IChmdW4gZiBsIC0+XG4gICAgICAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIGYgXCIoJXNALCVhXCIgZGVwdGggKGF1eCAoXCItLVwiIF4gZGVwdGgpKSBsKSlcbiAgICAgICAgICAgIGwpXG4gICAgICAgIGYgbFxuICBpblxuICBGb3JtYXQuZnByaW50ZiBmIFwiQFs8dj4lYUBdQC5cIiAoYXV4IFwiLT5cIikgbFxuXG50eXBlICdhIGluZm8gPSB7IHByZWRfMTogaW50IGxpc3Q7IGNvbmZsaWN0XzE6IGludCBsaXN0OyBsYWJlbDogJ2E7IGRlcHRoOiBpbnQgfVxuXG5sZXQgY29tcGFyZV9mc3RfdHJpcGxlIChhLCBfLCBfKSAoYiwgXywgXykgPSBjb21wYXJlIGEgYlxuXG5sZXQgc21hc2ggY29tcGFyZSBsID1cbiAgbGV0IHJlYyBhdXggdG9fZG8gb2xkIGN1cnJlbnQgYWNjdSA9XG4gICAgbWF0Y2ggdG9fZG8gd2l0aFxuICAgIHwgW10gLT4gY3VycmVudCA6OiBhY2N1XG4gICAgfCBoIDo6IHQgLT5cbiAgICAgIGlmIGNvbXBhcmUgaCBvbGQgPSAwIHRoZW5cbiAgICAgICAgYXV4IHQgb2xkIChoIDo6IGN1cnJlbnQpIGFjY3VcbiAgICAgIGVsc2VcbiAgICAgICAgYXV4IHQgaCBbIGggXSAoY3VycmVudCA6OiBhY2N1KVxuICBpblxuICBtYXRjaCBsIHdpdGhcbiAgfCBFbHQgYSAtPiBFbHQgYVxuICB8IFN1cGVyX2xpc3QgbCAtPlxuICAgIFN1cGVyX2xpc3RcbiAgICAgIChMaXN0LnJldlxuICAgICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAoZnVuIGFjY3UgbCAtPlxuICAgICAgICAgICAgICBtYXRjaCBsIHdpdGhcbiAgICAgICAgICAgICAgfCBbXSAtPiBhY2N1XG4gICAgICAgICAgICAgIHwgaCA6OiB0IC0+IGF1eCB0IGggWyBoIF0gYWNjdSlcbiAgICAgICAgICAgIFtdIGwpKVxuXG4oKmxldCBsID1cbiAgICBTdXBlcl9saXN0XG4gICAgICBbXG4gICAgICAgIFtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFtFbHQgKDIsMCwwKTtFbHQgKDMsMCwwKTtFbHQgKDQsMCwwKV07XG4gICAgICAgICAgICAgIFtFbHQgKDEsMSwxKTtFbHQgKDIsMSwxKTtFbHQgKDMsMSwxKV07XG4gICAgICAgICAgICAgIFtFbHQgKDIsMiwyKTtFbHQgKDQsMiwyKTtFbHQgKDUsMywzKV07XG4gICAgICAgICAgICAgIFtFbHQgKDEsNCw0KTtFbHQgKDIsNCw0KTtFbHQgKDMsNCw0KV1dO1xuICAgICAgICAgIFN1cGVyX2xpc3RcbiAgICAgICAgICAgIFtbRWx0ICgxLDUsNSk7RWx0ICgyLDUsNSldXTtcbiAgICAgICAgICBTdXBlcl9saXN0XG4gICAgICAgICAgICBbW0VsdCAoMSw2LDYpO0VsdCAoMiw2LDYpXV1dXTs7XG5cbiAgbGV0IGR1bXBfdHJpcGxlIChhLGIsYykgPSAgIChcIihcIl4oc3RyaW5nX29mX2ludCBhKV5cIixcIl4oc3RyaW5nX29mX2ludCBiKV5cIixcIl4oc3RyaW5nX29mX2ludCBjKV5cIilcIilcblxuICBsZXQgXyA9IGR1bXBfc3VwZXJfbGlzdCBkdW1wX3RyaXBsZSBsXG4gIGxldCBsMSA9IHNvcnQgY29tcGFyZV9mc3RfdHJpcGxlIGxcbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbDFcbiAgbGV0IGwyID0gc21hc2ggKGNvbXBhcmVfc3VwZXJsaXN0IGNvbXBhcmVfZnN0X3RyaXBsZSkgbDFcbiAgbGV0IF8gPSBkdW1wX3N1cGVyX2xpc3QgZHVtcF90cmlwbGUgbDIgKilcbigqXG5sZXQgbm9ybWFsX2Zvcm0gcm9vdCBjb21wYXJlIGYgPSBcbiAgbGV0IGRlYWxfd2l0aF9lbHQgZWx0ID0gXG4gICAgbGV0IGluZm8gPSBmIHggaW4gXG4gICAgbGV0IG5vZGUgPSAoaW5mby5sYWJlbCxpbmZvLmRlcHRoLExpc3QubGVuZ3RoIGluZm8ucHJlZF8xLExpc3QubGVuZ3RoIGluZm8uY29uZmxpY3RfMSkgaW4gXG4gICAgbm9kZSxpbmZvLnByZWRfMSxpbmZvLmNvbmZsaWN0XzEgXG4gIGluIFxuXG4gIFxuICBsZXQgcmVjIGF1eCBjdXJyZW50X2xheWVyIG5leHRfbGF5ZXIgYWNjdSA9IFxuICAgIG1hdGNoIFxuICAgICAgY3VycmVudF9sYXllciBcbiAgICB3aXRoIFxuICAgIHwgTGlzdCBsICAtPiBcblxuICAgIHwgU3VwZXJfbGlzdCBsIC0+IFxuICAgICAgICBsZXQgZXh0ZW5kZWRfbGlzdCA9IExpc3QucmV2X21hcCBkZWFsX3dpdGhfZWx0IGwgaW4gXG4gICAgICAgIGxldCBzb3J0ZWRfbGlzdCA9IExpc3Quc29ydCBjb21wYXJlX2ZzdF90cmlwbGUgZXh0ZW5kZWRfbGlzdCBpbiBcbiAgICAgICAgbGV0IHNtYXNoX2xpc3QgPSBzbWFzaCBjb21wYXJlX2ZzdF90cmlwbGUgZXh0ZW5kZWRfbGlzdCBpbiBcbiAgICAgICAgbGV0IGluZm9fb2YgeCA9IFxuICAgICAgICAgIGxldCBpbmZvID0gZiB4IGluIFxuICAgICAgICAgIChpbmZvLmxhYmVsLGluZm8uZGVwdGgsTGlzdC5sZW5ndGggaW5mby5wcmVkXzEsTGlzdC5sZW5ndGggaW5mby5jb25mbGljdF8xKVxuICAgICAgICBpbiBcbiAgICAgICAgXG4gICAgICAgICAgXG4gICAgICBlbmRcbiAgICB8IEh1YiBsIC0+IFxuICAgICAgYmVnaW4gXG4gICAgICBlbmQgXG4gICAgICAgIFxuKilcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbigqIEhlbHBlciBmdW5jdGlvbnMgZm9yIHJlc3VsdCAqKVxubGV0IGVycm9yX21zZyA/KHNldmVyaXR5ID0gTG9ncy5FcnJvcikgP3JhbmdlIHRleHQgOiBSZXN1bHRfdXRpbC5tZXNzYWdlID1cbiAgeyBSZXN1bHRfdXRpbC5zZXZlcml0eTsgUmVzdWx0X3V0aWwudGV4dDsgUmVzdWx0X3V0aWwucmFuZ2UgfVxuXG5sZXQgcmVzdWx0X2Vycm9yX21zZyA/c2V2ZXJpdHkgP3JhbmdlID9yZXN1bHRfY29kZSAobWVzc2FnZSA6IHN0cmluZykgOlxuICAgICdvayBBcGkucmVzdWx0ID1cbiAgUmVzdWx0X3V0aWwuZXJyb3IgP3N0YXR1czpyZXN1bHRfY29kZSBbIGVycm9yX21zZyA/c2V2ZXJpdHkgP3JhbmdlIG1lc3NhZ2UgXVxuXG5sZXQgcmVzdWx0X21lc3NhZ2VzID9yZXN1bHRfY29kZSBtZXNzYWdlcyA6ICdvayBBcGkucmVzdWx0ID1cbiAgUmVzdWx0X3V0aWwuZXJyb3IgP3N0YXR1czpyZXN1bHRfY29kZSBtZXNzYWdlc1xuXG5sZXQgcmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiA/c2V2ZXJpdHkgP3Jlc3VsdF9jb2RlIChlIDogZXhuKSA6ICdvayBBcGkucmVzdWx0ID1cbiAgbGV0IG1lc3NhZ2UgPVxuICAgIHRyeSBQcmludGV4Yy50b19zdHJpbmcgZSB3aXRoIF8gLT4gXCJ1bnNwZWNpZmllZCBleGNlcHRpb24gdGhyb3duXCJcbiAgaW5cbiAgcmVzdWx0X2Vycm9yX21zZyA/c2V2ZXJpdHkgP3Jlc3VsdF9jb2RlIG1lc3NhZ2VcblxubGV0IG1ldGhvZF9oYW5kbGVyX2Vycm9ycyA/c2V2ZXJpdHkgbWggPVxuICBsZXQgdW5jYXVnaHQgPVxuICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfdW5jYXVnaHRfZXhjZXB0aW9uX2xpc3RfdG9fdWkgbWhcbiAgaW5cbiAgbGV0IGNhdWdodCA9IEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5nZXRfY2F1Z2h0X2V4Y2VwdGlvbl9saXN0X3RvX3VpIG1oIGluXG4gIExpc3QuZm9sZF9yaWdodFxuICAgIChmdW4geCBsIC0+XG4gICAgICBlcnJvcl9tc2cgP3NldmVyaXR5XG4gICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF9jYXVnaHQgeClcbiAgICAgIDo6IGwpXG4gICAgY2F1Z2h0XG4gICAgKExpc3QubWFwXG4gICAgICAgKGZ1biB4IC0+XG4gICAgICAgICBlcnJvcl9tc2cgP3NldmVyaXR5XG4gICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF91bmNhdWdodCB4KSlcbiAgICAgICB1bmNhdWdodClcblxubGV0IG1ldGhvZF9oYW5kbGVyX21lc3NhZ2VzID9zZXZlcml0eSA/cmVzdWx0X2NvZGUgbWggPVxuICByZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlIChtZXRob2RfaGFuZGxlcl9lcnJvcnMgP3NldmVyaXR5IG1oKVxuXG5sZXQgcmVzdWx0X2thc2EgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgfCBSZXN1bHQuRXJyb3IgbWggLT4gbWV0aG9kX2hhbmRsZXJfbWVzc2FnZXMgfnNldmVyaXR5OkxvZ3MuRXJyb3IgbWhcblxubGV0IHJlc3VsdF9iaW5kX2x3dCA6XG4gICAgb2s6KCdvayAtPiAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCkgLT5cbiAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAoJ2Ffb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudCA9XG4gZnVuIH4ob2sgOiAnb2sgLT4gKCdhX29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQpXG4gICAgIHsgUmVzdWx0X3V0aWwudmFsdWU7IHN0YXR1czsgbWVzc2FnZXMgfSAtPlxuICBtYXRjaCB2YWx1ZSB3aXRoXG4gIHwgUmVzdWx0Lk9rIGRhdGEgLT4gb2sgZGF0YVxuICB8IFJlc3VsdC5FcnJvciBlIC0+XG4gICAgTHd0LnJldHVybiB7IFJlc3VsdF91dGlsLnZhbHVlID0gUmVzdWx0LkVycm9yIGU7IHN0YXR1czsgbWVzc2FnZXMgfVxuXG5sZXQgcmVjIHJlc3VsdF9mb2xkX2x3dCA6XG4gICAgZjpcbiAgICAgICgoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAgICd2YWx1ZSAtPlxuICAgICAgKCdvaywgJ2FfY29kZSkgQXBpX3R5cGVzX3QucmVzdWx0IEx3dC50KSAtPlxuICAgIGlkOignb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCAtPlxuICAgICd2YWx1ZSBsaXN0IC0+XG4gICAgKCdhX29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgTHd0LnQgPVxuIGZ1biB+KGYgOlxuICAgICAgICAoJ29rLCAnYV9jb2RlKSBBcGlfdHlwZXNfdC5yZXN1bHQgLT5cbiAgICAgICAgJ3ZhbHVlIC0+XG4gICAgICAgICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCBMd3QudClcbiAgICAgfihpZCA6ICgnb2ssICdhX2NvZGUpIEFwaV90eXBlc190LnJlc3VsdCkgKGwgOiAndmFsdWUgbGlzdCkgLT5cbiAgbWF0Y2ggbCB3aXRoXG4gIHwgW10gLT4gTHd0LnJldHVybiBpZFxuICB8IGggOjogdCAtPiBmIGlkIGggPj49IGZ1biByZXN1bHQgLT4gcmVzdWx0X2ZvbGRfbHd0IH5mIH5pZDpyZXN1bHQgdFxuXG5sZXQgcmVjIHJlc3VsdF9jb21iaW5lIDogdW5pdCBBcGkucmVzdWx0IGxpc3QgLT4gdW5pdCBBcGkucmVzdWx0ID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBSZXN1bHRfdXRpbC5vayAoKVxuICB8IGwgOjogdCAtPlxuICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgIH5vazooZnVuICgpIC0+IHJlc3VsdF9jb21iaW5lIHQpXG4gICAgICB+ZXJyb3I6KGZ1biBkYXRhXzEgLT5cbiAgICAgICAgUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgIH5vazooZnVuICgpIC0+IGwpXG4gICAgICAgICAgfmVycm9yOihmdW4gZGF0YV9yIC0+XG4gICAgICAgICAgICBSZXN1bHRfdXRpbC5lcnJvciB+c3RhdHVzOmwuUmVzdWx0X3V0aWwuc3RhdHVzIChkYXRhXzEgQCBkYXRhX3IpKVxuICAgICAgICAgIChyZXN1bHRfY29tYmluZSB0KSlcbiAgICAgIGxcblxubGV0IG1kNXN1bSB0ZXh0ID0gRGlnZXN0LnRvX2hleCAoRGlnZXN0LnN0cmluZyB0ZXh0KVxuIiwiKCogQXV0by1nZW5lcmF0ZWQgZnJvbSBcImFwaV90eXBlcy5hdGRcIiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItMjctMzItMzMtMzUtMzlcIl1cblxudHlwZSBzbmFwc2hvdF9pZCA9IEFwaV90eXBlc190LnNuYXBzaG90X2lkXG5cbnR5cGUgc25hcHNob3QgPSBEYXRhLnNuYXBzaG90XG5cbnR5cGUgc25hcHNob3RfZGV0YWlsID0gQXBpX3R5cGVzX3Quc25hcHNob3RfZGV0YWlsXG5cbnR5cGUgc25hcHNob3RfY2F0YWxvZyA9IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2dcblxudHlwZSBzaXRlX2dyYXBoID0gVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50XG5cbnR5cGUgc2ltdWxhdGlvbl9zdGF0ZSA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fc3RhdGVcblxudHlwZSBzaW11bGF0aW9uX3NlZWQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3NlZWRcblxudHlwZSBzaW11bGF0aW9uX3Byb2dyZXNzID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzcyA9IHtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lOiBmbG9hdDtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2U6IGludCBvcHRpb247XG4gIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnQ6IGludDtcbiAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzOiBpbnQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmc6IGJvb2xcbn1cblxudHlwZSBzaW11bGF0aW9uX3BhcmFtZXRlciA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyID0ge1xuICBzaW11bGF0aW9uX3Bsb3RfcGVyaW9kICgqYXRkIHBsb3RfcGVyaW9kICopOiBmbG9hdDtcbiAgc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gKCphdGQgcGF1c2VfY29uZGl0aW9uICopOiBzdHJpbmc7XG4gIHNpbXVsYXRpb25fc2VlZCAoKmF0ZCBzZWVkICopOiBzaW11bGF0aW9uX3NlZWQgb3B0aW9uO1xuICBzaW11bGF0aW9uX3N0b3JlX3RyYWNlICgqYXRkIHN0b3JlX3RyYWNlICopOiBib29sXG59XG5cbnR5cGUgKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0ID1cbiAgKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0ID0ge1xuICBzaW11bGF0aW9uX291dHB1dF9wbG90OiAncGxvdDtcbiAgc2ltdWxhdGlvbl9vdXRwdXRfZGluczogJ2RpbnM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM6ICdmaWxlX2xpbmVzO1xuICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHM6ICdzbmFwc2hvdHM7XG4gIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0czogJ2lucHV0cztcbiAgc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzOiAnbG9nX21lc3NhZ2VzXG59XG5cbnR5cGUgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvblxuXG50eXBlIHNpbXVsYXRpb25faW5mb19vdXRwdXQgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG5cbnR5cGUgc2ltdWxhdGlvbl9pbmZvID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvID0ge1xuICBzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3M6IHNpbXVsYXRpb25fcHJvZ3Jlc3M7XG4gIHNpbXVsYXRpb25faW5mb19vdXRwdXQ6IHNpbXVsYXRpb25faW5mb19vdXRwdXRcbn1cblxudHlwZSBzaW11bGF0aW9uX2lkID0gQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pZFxuXG50eXBlIHNpbXVsYXRpb25fYXJ0aWZhY3QgPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0ID0ge1xuICBzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZDogc2ltdWxhdGlvbl9zZWVkXG59XG5cbnR5cGUgc2hhcmluZ19sZXZlbCA9IFBhdHRlcm4uc2hhcmluZ19sZXZlbFxuXG50eXBlICgnb2ssICdlcnJvcikgcmVzdWx0ID0gKCdvaywgJ2Vycm9yKSBSZXN1bHRfdXRpbC50XG5cbnR5cGUgcGFyc2luZ19jb21waWwgPSBBc3QucGFyc2luZ19jb21waWxcblxudHlwZSBuYnIgPSBOYnIudFxuXG50eXBlIHByb2plY3RfcGFyc2UgPSBBcGlfdHlwZXNfdC5wcm9qZWN0X3BhcnNlID0ge1xuICBwYXR0ZXJuX3NoYXJpbmc6IHNoYXJpbmdfbGV2ZWw7XG4gIGFzdDogcGFyc2luZ19jb21waWw7XG4gIHZhcmlhYmxlX292ZXJ3cml0dGVuOiAoc3RyaW5nICogbmJyKSBsaXN0XG59XG5cbnR5cGUgcHJvamVjdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wcm9qZWN0X3BhcmFtZXRlciA9IHtcbiAgcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZDogc3RyaW5nXG59XG5cbnR5cGUgcGxvdF9saW1pdCA9IEFwaV90eXBlc190LnBsb3RfbGltaXQgPSB7XG4gIHBsb3RfbGltaXRfb2Zmc2V0OiBpbnQgb3B0aW9uO1xuICBwbG90X2xpbWl0X3BvaW50czogaW50IG9wdGlvblxufVxuXG50eXBlIHBsb3RfcGFyYW1ldGVyID0gQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXJcblxudHlwZSBwbG90ID0gRGF0YS5wbG90XG5cbnR5cGUgbWVzc2FnZSA9IFJlc3VsdF91dGlsLm1lc3NhZ2VcblxudHlwZSBsb2dfbWVzc2FnZSA9IEFwaV90eXBlc190LmxvZ19tZXNzYWdlXG5cbnR5cGUga2FwcGFfY29kZSA9IEFwaV90eXBlc190LmthcHBhX2NvZGVcblxudHlwZSBmaWxlX2xpbmUgPSBEYXRhLmZpbGVfbGluZSA9IHtcbiAgZmlsZV9saW5lX25hbWUgKCphdGQgbmFtZSAqKTogc3RyaW5nIG9wdGlvbjtcbiAgZmlsZV9saW5lX3RleHQgKCphdGQgdGV4dCAqKTogc3RyaW5nXG59XG5cbnR5cGUgZmlsZV9saW5lX2RldGFpbCA9IEFwaV90eXBlc190LmZpbGVfbGluZV9kZXRhaWxcblxudHlwZSBmaWxlX2xpbmVfY2F0YWxvZyA9IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nXG5cbnR5cGUgZW52aXJvbm1lbnRfaW5mbyA9IEFwaV90eXBlc190LmVudmlyb25tZW50X2luZm8gPSB7XG4gIGVudmlyb25tZW50X3Byb2plY3RzICgqYXRkIHByb2plY3RzICopOiBpbnQ7XG4gIGVudmlyb25tZW50X2J1aWxkICgqYXRkIGJ1aWxkICopOiBzdHJpbmdcbn1cblxudHlwZSBkaW5faWQgPSBBcGlfdHlwZXNfdC5kaW5faWRcblxudHlwZSBkaW5fY2F0YWxvZyA9IEFwaV90eXBlc190LmRpbl9jYXRhbG9nXG5cbnR5cGUgZGluID0gRGF0YS5kaW5cblxubGV0IHdyaXRlX3NuYXBzaG90X2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc25hcHNob3RfaWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3QgPSAoXG4gIERhdGEud3JpdGVfc25hcHNob3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdCA9IChcbiAgRGF0YS5yZWFkX3NuYXBzaG90XG4pXG5sZXQgc25hcHNob3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfZGV0YWlsID0gKFxuICB3cml0ZV9zbmFwc2hvdFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfZGV0YWlsID0gKFxuICByZWFkX3NuYXBzaG90XG4pXG5sZXQgc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc25hcHNob3RfaWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX3NuYXBzaG90X2lkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3NuYXBzaG90X2lkX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fc25hcHNob3RfaWRfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgcmVhZF9zbmFwc2hvdF9pZFxuICApXG4pXG5sZXQgX3NuYXBzaG90X2lkX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zbmFwc2hvdF9pZF9saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgd3JpdGVfX3NuYXBzaG90X2lkX2xpc3RcbilcbmxldCBzdHJpbmdfb2Zfc25hcHNob3RfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgcmVhZF9fc25hcHNob3RfaWRfbGlzdFxuKVxubGV0IHNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NuYXBzaG90X2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaXRlX2dyYXBoID0gKFxuICBVc2VyX2dyYXBoLndyaXRlX2Nvbm5lY3RlZF9jb21wb25lbnRcbilcbmxldCBzdHJpbmdfb2Zfc2l0ZV9ncmFwaCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaXRlX2dyYXBoIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2l0ZV9ncmFwaCA9IChcbiAgVXNlcl9ncmFwaC5yZWFkX2Nvbm5lY3RlZF9jb21wb25lbnRcbilcbmxldCBzaXRlX2dyYXBoX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaXRlX2dyYXBoIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFJ1bm5pbmcgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUnVubmluZ1xcXCJcIlxuICAgICAgfCBgUGF1c2VkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlBhdXNlZFxcXCJcIlxuICAgICAgfCBgU3RvcHBlZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTdG9wcGVkXFxcIlwiXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fc3RhdGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9zdGF0ZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fc3RhdGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlJ1bm5pbmdcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFJ1bm5pbmdcbiAgICAgICAgICAgIHwgXCJQYXVzZWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFBhdXNlZFxuICAgICAgICAgICAgfCBcIlN0b3BwZWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFN0b3BwZWRcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgRG91YmxlX3F1b3RlIC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5maW5pc2hfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlJ1bm5pbmdcIiAtPlxuICAgICAgICAgICAgICBgUnVubmluZ1xuICAgICAgICAgICAgfCBcIlBhdXNlZFwiIC0+XG4gICAgICAgICAgICAgIGBQYXVzZWRcbiAgICAgICAgICAgIHwgXCJTdG9wcGVkXCIgLT5cbiAgICAgICAgICAgICAgYFN0b3BwZWRcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fc3RhdGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fc3RhdGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3NlZWQgPSAoXG4gIFlvanNvbi5TYWZlLndyaXRlX2ludFxuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3NlZWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9zZWVkID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbilcbmxldCBzaW11bGF0aW9uX3NlZWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fc2VlZCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19pbnRfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX2ludF9udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9faW50X251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2ludF9udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgKSBwIGxiKSA6IF8gb3B0aW9uKVxuKVxubGV0IF9pbnRfbnVsbGFibGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19pbnRfbnVsbGFibGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzIDogXyAtPiBzaW11bGF0aW9uX3Byb2dyZXNzIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fcHJvZ3Jlc3MpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0ZF9mbG9hdFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ludF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2U7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9faW50X251bGxhYmxlXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2U7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfYm9vbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcHJvZ3Jlc3MgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9wcm9ncmVzcyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fcHJvZ3Jlc3MgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjUgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMzQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2snICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDM2IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNSkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udW1iZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfdHJhY2tlZF9ldmVudHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNSAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2snICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzIpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM0KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDM2IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzM1KSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfdGltZV9wZXJjZW50YWdlXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudF9wZXJjZW50YWdlIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2VcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1wiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IHNpbXVsYXRpb25fcHJvZ3Jlc3MpXG4gICAgICApXG4pXG5sZXQgc2ltdWxhdGlvbl9wcm9ncmVzc19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzcyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19zaW11bGF0aW9uX3NlZWRfbnVsbGFibGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9udWxsYWJsZSAoXG4gICAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgKGlmIFlvanNvbi5TYWZlLnJlYWRfbnVsbF9pZl9wb3NzaWJsZSBwIGxiIHRoZW4gTm9uZVxuICAgIGVsc2UgU29tZSAoKFxuICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICApIHAgbGIpIDogXyBvcHRpb24pXG4pXG5sZXQgX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIDogXyAtPiBzaW11bGF0aW9uX3BhcmFtZXRlciAtPiBfID0gKFxuICBmdW4gb2IgKHggOiBzaW11bGF0aW9uX3BhcmFtZXRlcikgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBsb3RfcGVyaW9kXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9zdGRfZmxvYXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fcGxvdF9wZXJpb2Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBhdXNlX2NvbmRpdGlvblxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbjtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2VlZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3NpbXVsYXRpb25fc2VlZF9udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9zZWVkO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzdG9yZV90cmFjZVxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfYm9vbFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9zdG9yZV90cmFjZTtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX3NlZWQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDExIC0+IChcbiAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICB8ICdwJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdkJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfCAncycgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdkJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3Bsb3RfcGVyaW9kIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbnVtYmVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX3N0b3JlX3RyYWNlIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfYm9vbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAxMSAtPiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfCAncycgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdlJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICduJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIGluXG4gICAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAoXG4gICAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bWJlclxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fc2ltdWxhdGlvbl9zZWVkX251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDMgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2Jvb2xcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fcGxvdF9wZXJpb2QgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fcGxvdF9wZXJpb2Qgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcGxvdF9wZXJpb2RcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvbiA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fcGF1c2VfY29uZGl0aW9uXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX3NlZWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fc2VlZFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fc3RvcmVfdHJhY2UgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fc3RvcmVfdHJhY2Ugd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fc3RvcmVfdHJhY2VcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgIClcbilcbmxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX291dHB1dCB3cml0ZV9fcGxvdCB3cml0ZV9fZGlucyB3cml0ZV9fZmlsZV9saW5lcyB3cml0ZV9fc25hcHNob3RzIHdyaXRlX19pbnB1dHMgd3JpdGVfX2xvZ19tZXNzYWdlcyA6IF8gLT4gKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6ICgncGxvdCwgJ2RpbnMsICdmaWxlX2xpbmVzLCAnc25hcHNob3RzLCAnaW5wdXRzLCAnbG9nX21lc3NhZ2VzKSBzaW11bGF0aW9uX291dHB1dCkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19wbG90XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9wbG90O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fZGluc1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZGlucztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2ZpbGVfbGluZXNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3NuYXBzaG90c1xuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnB1dHNcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fbG9nX21lc3NhZ2VzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9vdXRwdXQgd3JpdGVfX3Bsb3Qgd3JpdGVfX2RpbnMgd3JpdGVfX2ZpbGVfbGluZXMgd3JpdGVfX3NuYXBzaG90cyB3cml0ZV9faW5wdXRzIHdyaXRlX19sb2dfbWVzc2FnZXMgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX291dHB1dCByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2RpbnNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDIgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19maWxlX2xpbmVzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zbmFwc2hvdHNcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2lucHV0c1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgNSAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fbG9nX21lc3NhZ2VzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICB8ICdkJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgfCAncCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjQgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA0XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjcgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAzMCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3Bsb3QgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19wbG90XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2RpbnNcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZmlsZV9saW5lc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3NuYXBzaG90c1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA0IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2lucHV0c1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCA1IC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX2xvZ19tZXNzYWdlc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFwiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2RpbnMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2RpbnMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2RpbnNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9pbnB1dHNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogKCdwbG90LCAnZGlucywgJ2ZpbGVfbGluZXMsICdzbmFwc2hvdHMsICdpbnB1dHMsICdsb2dfbWVzc2FnZXMpIHNpbXVsYXRpb25fb3V0cHV0KVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fb3V0cHV0X29mX3N0cmluZyByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX291dHB1dCByZWFkX19wbG90IHJlYWRfX2RpbnMgcmVhZF9fZmlsZV9saW5lcyByZWFkX19zbmFwc2hvdHMgcmVhZF9faW5wdXRzIHJlYWRfX2xvZ19tZXNzYWdlcyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25fb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX291dHB1dF85MzQwYWQ2IDogXyAtPiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogKF8sIF8sIF8sIF8sIF8sIF8pIHNpbXVsYXRpb25fb3V0cHV0KSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9wbG90O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX291dHB1dF9kaW5zXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX2ludFxuICAgIClcbiAgICAgIG9iIHguc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9udWxsXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9pbnB1dHM7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfaW50XG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXM7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfX291dHB1dF85MzQwYWQ2ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19vdXRwdXRfOTM0MGFkNiBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19vdXRwdXRfOTM0MGFkNiA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyMiAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgJ2QnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAzXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgMjggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDMwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9kaW5zIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAzIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDQgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX251bGxcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgbWF0Y2ggU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSB3aXRoXG4gICAgICAgICAgICAgICAgICAgICAgfCAnZCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIHwgJ3AnIC0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgNFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI3IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdoJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgM1xuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDI4IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAyXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgMzAgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI1KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNykgPSAnZycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjkpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICA1XG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2ludFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMyAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9pbnRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgNCAtPlxuICAgICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9udWxsXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDUgLT5cbiAgICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9wbG90ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9wbG90XCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfZGlucyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfZGluc1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXNcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgPSAobWF0Y2ggIWZpZWxkX3NpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzXCIpO1xuICAgICAgICAgICAgc2ltdWxhdGlvbl9vdXRwdXRfaW5wdXRzID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInNpbXVsYXRpb25fb3V0cHV0X2lucHV0c1wiKTtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAoXywgXywgXywgXywgXywgXykgc2ltdWxhdGlvbl9vdXRwdXQpXG4gICAgICApXG4pXG5sZXQgX291dHB1dF85MzQwYWQ2X29mX3N0cmluZyBzID1cbiAgcmVhZF9fb3V0cHV0XzkzNDBhZDYgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKFxuICB3cml0ZV9fb3V0cHV0XzkzNDBhZDZcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm9fb3V0cHV0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9IChcbiAgcmVhZF9fb3V0cHV0XzkzNDBhZDZcbilcbmxldCBzaW11bGF0aW9uX2luZm9fb3V0cHV0X29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pbmZvIDogXyAtPiBzaW11bGF0aW9uX2luZm8gLT4gXyA9IChcbiAgZnVuIG9iICh4IDogc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwic2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3M7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInNpbXVsYXRpb25faW5mb19vdXRwdXRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICApXG4gICAgICBvYiB4LnNpbXVsYXRpb25faW5mb19vdXRwdXQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25faW5mbyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faW5mbyA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3MgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICB8IDIyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdnJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIyKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjMpID0gJ3MnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMjIgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdtJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE2KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTcpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOCkgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE5KSA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjApID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCAyNCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ2cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19wcm9ncmVzcyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25faW5mb19vdXRwdXQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IChtYXRjaCAhZmllbGRfc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcIik7XG4gICAgICAgICAgICBzaW11bGF0aW9uX2luZm9fb3V0cHV0ID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2luZm9fb3V0cHV0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJzaW11bGF0aW9uX2luZm9fb3V0cHV0XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogc2ltdWxhdGlvbl9pbmZvKVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25faW5mb19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9pZCA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3NpbXVsYXRpb25faWQgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IHNpbXVsYXRpb25faWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IDogXyAtPiBzaW11bGF0aW9uX2FydGlmYWN0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHNpbXVsYXRpb25fYXJ0aWZhY3QpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJzaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZFxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2ltdWxhdGlvbl9zZWVkXG4gICAgKVxuICAgICAgb2IgeC5zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9zaW11bGF0aW9uX2FydGlmYWN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBpZiBsZW4gPSAzNSAmJiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjIpID0gJ20nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMykgPSAndScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjUpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjgpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOSkgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMwKSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMikgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMzKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgMFxuICAgICAgICAgIClcbiAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgIC0xXG4gICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9zZWVkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDM1ICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIwKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjEpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIzKSA9ICd1JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjQpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyNSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMjcpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyOCkgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzI5KSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzApID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszMSkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMyKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMzMpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszNCkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3NpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3NlZWRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHNpbXVsYXRpb25fYXJ0aWZhY3Rfc2ltdWxhdGlvbl9zZWVkID0gKG1hdGNoICFmaWVsZF9zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwic2ltdWxhdGlvbl9hcnRpZmFjdF9zaW11bGF0aW9uX3NlZWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBzaW11bGF0aW9uX2FydGlmYWN0KVxuICAgICAgKVxuKVxubGV0IHNpbXVsYXRpb25fYXJ0aWZhY3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fYXJ0aWZhY3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaGFyaW5nX2xldmVsID0gKFxuICBQYXR0ZXJuLndyaXRlX3NoYXJpbmdfbGV2ZWxcbilcbmxldCBzdHJpbmdfb2Zfc2hhcmluZ19sZXZlbCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaGFyaW5nX2xldmVsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2hhcmluZ19sZXZlbCA9IChcbiAgUGF0dGVybi5yZWFkX3NoYXJpbmdfbGV2ZWxcbilcbmxldCBzaGFyaW5nX2xldmVsX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaGFyaW5nX2xldmVsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3IgPSAoXG4gIFJlc3VsdF91dGlsLndyaXRlX3Qgd3JpdGVfX29rIHdyaXRlX19lcnJvclxuKVxubGV0IHN0cmluZ19vZl9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciA9IChcbiAgUmVzdWx0X3V0aWwucmVhZF90IHJlYWRfX29rIHJlYWRfX2Vycm9yXG4pXG5sZXQgcmVzdWx0X29mX3N0cmluZyByZWFkX19vayByZWFkX19lcnJvciBzID1cbiAgcmVhZF9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wYXJzaW5nX2NvbXBpbCA9IChcbiAgQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsXG4pXG5sZXQgc3RyaW5nX29mX3BhcnNpbmdfY29tcGlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3BhcnNpbmdfY29tcGlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcGFyc2luZ19jb21waWwgPSAoXG4gIEFzdC5yZWFkX3BhcnNpbmdfY29tcGlsXG4pXG5sZXQgcGFyc2luZ19jb21waWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3BhcnNpbmdfY29tcGlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbmJyID0gKFxuICBOYnIud3JpdGVfdFxuKVxubGV0IHN0cmluZ19vZl9uYnIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbmJyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbmJyID0gKFxuICBOYnIucmVhZF90XG4pXG5sZXQgbmJyX29mX3N0cmluZyBzID1cbiAgcmVhZF9uYnIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX25icl9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgZnVuIG9iIHggLT5cbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnWyc7XG4gICAgICAobGV0IHgsIF8gPSB4IGluXG4gICAgICAoXG4gICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgKSBvYiB4XG4gICAgICApO1xuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIChsZXQgXywgeCA9IHggaW5cbiAgICAgIChcbiAgICAgICAgd3JpdGVfbmJyXG4gICAgICApIG9iIHhcbiAgICAgICk7XG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nO1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbmJyX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19uYnJfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbmJyX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIGZ1biBwIGxiIC0+XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgc3RkX3R1cGxlID0gWW9qc29uLlNhZmUuc3RhcnRfYW55X3R1cGxlIHAgbGIgaW5cbiAgICAgIGxldCBsZW4gPSByZWYgMCBpblxuICAgICAgbGV0IGVuZF9vZl90dXBsZSA9IHJlZiBmYWxzZSBpblxuICAgICAgKHRyeVxuICAgICAgICBsZXQgeDAgPVxuICAgICAgICAgIGxldCB4ID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICBpblxuICAgICAgICAgIGluY3IgbGVuO1xuICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3R1cGxlX3NlcDIgcCBzdGRfdHVwbGUgbGI7XG4gICAgICAgICAgeFxuICAgICAgICBpblxuICAgICAgICBsZXQgeDEgPVxuICAgICAgICAgIGxldCB4ID1cbiAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgcmVhZF9uYnJcbiAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgIGluXG4gICAgICAgICAgaW5jciBsZW47XG4gICAgICAgICAgKHRyeVxuICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPiBlbmRfb2ZfdHVwbGUgOj0gdHJ1ZSk7XG4gICAgICAgICAgeFxuICAgICAgICBpblxuICAgICAgICBpZiBub3QgIWVuZF9vZl90dXBsZSB0aGVuIChcbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF90dXBsZV9zZXAyIHAgc3RkX3R1cGxlIGxiO1xuICAgICAgICAgICAgZG9uZVxuICAgICAgICAgIHdpdGggWW9qc29uLkVuZF9vZl90dXBsZSAtPiAoKVxuICAgICAgICApO1xuICAgICAgICAoeDAsIHgxKVxuICAgICAgd2l0aCBZb2pzb24uRW5kX29mX3R1cGxlIC0+XG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX3R1cGxlX2ZpZWxkcyBwICFsZW4gWyAwOyAxIF0pO1xuICApXG4pXG5sZXQgX3N0cmluZ19uYnJfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19uYnJfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Byb2plY3RfcGFyc2UgOiBfIC0+IHByb2plY3RfcGFyc2UgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogcHJvamVjdF9wYXJzZSkgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInBhdHRlcm5fc2hhcmluZ1xcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfc2hhcmluZ19sZXZlbFxuICAgIClcbiAgICAgIG9iIHgucGF0dGVybl9zaGFyaW5nO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJhc3RcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX3BhcnNpbmdfY29tcGlsXG4gICAgKVxuICAgICAgb2IgeC5hc3Q7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInZhcmlhYmxlX292ZXJ3cml0dGVuXFxcIjpcIjtcbiAgICAoXG4gICAgICB3cml0ZV9fc3RyaW5nX25icl9saXN0XG4gICAgKVxuICAgICAgb2IgeC52YXJpYWJsZV9vdmVyd3JpdHRlbjtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyc2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcnNlID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX3BhdHRlcm5fc2hhcmluZyA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfYXN0ID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgMyAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCAxNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnaCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEwKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMikgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEzKSA9ICduJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTQpID0gJ2cnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDIwIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICd2JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICdsJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzgpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys5KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTApID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEyKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTMpID0gJ3cnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNCkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE1KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNykgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE4KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTkpID0gJ24nIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfcGF0dGVybl9zaGFyaW5nIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaGFyaW5nX2xldmVsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9hc3QgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX3BhcnNpbmdfY29tcGlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAyIC0+XG4gICAgICAgICAgICBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19uYnJfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDMgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDE1IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdfJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ2gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAnYScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAnbicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdnJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB8IDIwIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ2wnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzkpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMCkgPSAndicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzExKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTIpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxMykgPSAndycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE0KSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTUpID0gJ2knICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzE3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMTgpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxOSkgPSAnbicgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDJcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3BhdHRlcm5fc2hhcmluZyA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfc2hhcmluZ19sZXZlbFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2FzdCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfcGFyc2luZ19jb21waWxcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMiAtPlxuICAgICAgICAgICAgICBmaWVsZF92YXJpYWJsZV9vdmVyd3JpdHRlbiA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19uYnJfbGlzdFxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgcGF0dGVybl9zaGFyaW5nID0gKG1hdGNoICFmaWVsZF9wYXR0ZXJuX3NoYXJpbmcgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBhdHRlcm5fc2hhcmluZ1wiKTtcbiAgICAgICAgICAgIGFzdCA9IChtYXRjaCAhZmllbGRfYXN0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJhc3RcIik7XG4gICAgICAgICAgICB2YXJpYWJsZV9vdmVyd3JpdHRlbiA9IChtYXRjaCAhZmllbGRfdmFyaWFibGVfb3ZlcndyaXR0ZW4gd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInZhcmlhYmxlX292ZXJ3cml0dGVuXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcHJvamVjdF9wYXJzZSlcbiAgICAgIClcbilcbmxldCBwcm9qZWN0X3BhcnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgOiBfIC0+IHByb2plY3RfcGFyYW1ldGVyIC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHByb2plY3RfcGFyYW1ldGVyKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwicHJvamVjdF9pZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5wcm9qZWN0X3BhcmFtZXRlcl9wcm9qZWN0X2lkO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgaWYgbGVuID0gMTAgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAwXG4gICAgICAgICAgKVxuICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgLTFcbiAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgaWYgbGVuID0gMTAgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAncCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3InICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnaicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys1KSA9ICdjJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzcpID0gJ18nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys4KSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgIDBcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgPSAobWF0Y2ggIWZpZWxkX3Byb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInByb2plY3RfcGFyYW1ldGVyX3Byb2plY3RfaWRcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiBwcm9qZWN0X3BhcmFtZXRlcilcbiAgICAgIClcbilcbmxldCBwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X2xpbWl0IDogXyAtPiBwbG90X2xpbWl0IC0+IF8gPSAoXG4gIGZ1biBvYiAoeCA6IHBsb3RfbGltaXQpIC0+XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd7JztcbiAgICBsZXQgaXNfZmlyc3QgPSByZWYgdHJ1ZSBpblxuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJvZmZzZXRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnBsb3RfbGltaXRfb2Zmc2V0O1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJuYl9wb2ludHNcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX19pbnRfbnVsbGFibGVcbiAgICApXG4gICAgICBvYiB4LnBsb3RfbGltaXRfcG9pbnRzO1xuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnfSc7XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3RfbGltaXQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9saW1pdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3RfbGltaXQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIFlvanNvbi5TYWZlLnJlYWRfbGN1cmwgcCBsYjtcbiAgICBsZXQgZmllbGRfcGxvdF9saW1pdF9vZmZzZXQgPSByZWYgKE5vbmUpIGluXG4gICAgbGV0IGZpZWxkX3Bsb3RfbGltaXRfcG9pbnRzID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCA2IC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ2YnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdzJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDkgLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9wbG90X2xpbWl0X29mZnNldCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX2ludF9udWxsYWJsZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgKVxuICAgICAgKTtcbiAgICAgIHdoaWxlIHRydWUgZG9cbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9zZXAgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICBsZXQgZiA9XG4gICAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgICAgfCA2IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdmJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnZicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAndCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA5IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdiJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnXycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdvJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnaScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ24nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrOCkgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX3Bsb3RfbGltaXRfb2Zmc2V0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9faW50X251bGxhYmxlXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfcGxvdF9saW1pdF9wb2ludHMgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICByZWFkX19pbnRfbnVsbGFibGVcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHBsb3RfbGltaXRfb2Zmc2V0ID0gKG1hdGNoICFmaWVsZF9wbG90X2xpbWl0X29mZnNldCB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwicGxvdF9saW1pdF9vZmZzZXRcIik7XG4gICAgICAgICAgICBwbG90X2xpbWl0X3BvaW50cyA9IChtYXRjaCAhZmllbGRfcGxvdF9saW1pdF9wb2ludHMgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcInBsb3RfbGltaXRfcG9pbnRzXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogcGxvdF9saW1pdClcbiAgICAgIClcbilcbmxldCBwbG90X2xpbWl0X29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X2xpbWl0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgPSAoXG4gIHdyaXRlX3Bsb3RfbGltaXRcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X3BhcmFtZXRlciA9IChcbiAgcmVhZF9wbG90X2xpbWl0XG4pXG5sZXQgcGxvdF9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3RfcGFyYW1ldGVyIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcGxvdCA9IChcbiAgRGF0YS53cml0ZV9wbG90XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3QgPSAoXG4gIERhdGEucmVhZF9wbG90XG4pXG5sZXQgcGxvdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcGxvdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX21lc3NhZ2UgPSAoXG4gIFJlc3VsdF91dGlsLndyaXRlX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfbWVzc2FnZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbWVzc2FnZSA9IChcbiAgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlXG4pXG5sZXQgbWVzc2FnZV9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2xvZ19tZXNzYWdlID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2ZfbG9nX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbG9nX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9sb2dfbWVzc2FnZSA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgbG9nX21lc3NhZ2Vfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2xvZ19tZXNzYWdlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfa2FwcGFfY29kZSA9IChcbiAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4pXG5sZXQgc3RyaW5nX29mX2thcHBhX2NvZGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfa2FwcGFfY29kZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2thcHBhX2NvZGUgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuKVxubGV0IGthcHBhX2NvZGVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2thcHBhX2NvZGUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX251bGxhYmxlID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbnVsbGFibGUgKFxuICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICApXG4pXG5sZXQgc3RyaW5nX29mX19zdHJpbmdfbnVsbGFibGUgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19udWxsYWJsZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbnVsbGFibGUgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIChpZiBZb2pzb24uU2FmZS5yZWFkX251bGxfaWZfcG9zc2libGUgcCBsYiB0aGVuIE5vbmVcbiAgICBlbHNlIFNvbWUgKChcbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICkgcCBsYikgOiBfIG9wdGlvbilcbilcbmxldCBfc3RyaW5nX251bGxhYmxlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fc3RyaW5nX251bGxhYmxlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lIDogXyAtPiBmaWxlX2xpbmUgLT4gXyA9IChcbiAgZnVuIG9iICh4IDogZmlsZV9saW5lKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwibmFtZVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX3N0cmluZ19udWxsYWJsZVxuICAgIClcbiAgICAgIG9iIHguZmlsZV9saW5lX25hbWU7XG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInRleHRcXFwiOlwiO1xuICAgIChcbiAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgIClcbiAgICAgIG9iIHguZmlsZV9saW5lX3RleHQ7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZSA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgWW9qc29uLlNhZmUucmVhZF9sY3VybCBwIGxiO1xuICAgIGxldCBmaWVsZF9maWxlX2xpbmVfbmFtZSA9IHJlZiAoTm9uZSkgaW5cbiAgICBsZXQgZmllbGRfZmlsZV9saW5lX3RleHQgPSByZWYgKE5vbmUpIGluXG4gICAgdHJ5XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX29iamVjdF9lbmQgbGI7XG4gICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICBsZXQgZiA9XG4gICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgIGludmFsaWRfYXJnIChQcmludGYuc3ByaW50ZiBcIm91dC1vZi1ib3VuZHMgc3Vic3RyaW5nIHBvc2l0aW9uIG9yIGxlbmd0aDogc3RyaW5nID0gJVMsIHJlcXVlc3RlZCBwb3NpdGlvbiA9ICVpLCByZXF1ZXN0ZWQgbGVuZ3RoID0gJWlcIiBzIHBvcyBsZW4pO1xuICAgICAgICAgIGlmIGxlbiA9IDQgdGhlbiAoXG4gICAgICAgICAgICBtYXRjaCBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyB3aXRoXG4gICAgICAgICAgICAgIHwgJ24nIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgJ3QnIC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAneCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ3QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICApXG4gICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAtMVxuICAgICAgICAgIClcbiAgICAgIGluXG4gICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAoXG4gICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgZmllbGRfZmlsZV9saW5lX25hbWUgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbnVsbGFibGVcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV90ZXh0IDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIGlmIGxlbiA9IDQgdGhlbiAoXG4gICAgICAgICAgICAgIG1hdGNoIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zIHdpdGhcbiAgICAgICAgICAgICAgICB8ICduJyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2UnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfCAndCcgLT4gKFxuICAgICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ3gnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICd0JyB0aGVuIChcbiAgICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICApXG4gICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9maWxlX2xpbmVfbmFtZSA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19udWxsYWJsZVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2ZpbGVfbGluZV90ZXh0IDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IF8gLT4gKFxuICAgICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgKTtcbiAgICAgIGRvbmU7XG4gICAgICBhc3NlcnQgZmFsc2U7XG4gICAgd2l0aCBZb2pzb24uRW5kX29mX29iamVjdCAtPiAoXG4gICAgICAgIChcbiAgICAgICAgICB7XG4gICAgICAgICAgICBmaWxlX2xpbmVfbmFtZSA9IChtYXRjaCAhZmllbGRfZmlsZV9saW5lX25hbWUgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImZpbGVfbGluZV9uYW1lXCIpO1xuICAgICAgICAgICAgZmlsZV9saW5lX3RleHQgPSAobWF0Y2ggIWZpZWxkX2ZpbGVfbGluZV90ZXh0IHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJmaWxlX2xpbmVfdGV4dFwiKTtcbiAgICAgICAgICB9XG4gICAgICAgICA6IGZpbGVfbGluZSlcbiAgICAgIClcbilcbmxldCBmaWxlX2xpbmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19maWxlX2xpbmVfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLndyaXRlX2xpc3QgKFxuICAgIHdyaXRlX2ZpbGVfbGluZVxuICApXG4pXG5sZXQgc3RyaW5nX29mX19maWxlX2xpbmVfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fZmlsZV9saW5lX2xpc3Qgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9fZmlsZV9saW5lX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX2xpc3QgKFxuICAgIHJlYWRfZmlsZV9saW5lXG4gIClcbilcbmxldCBfZmlsZV9saW5lX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19maWxlX2xpbmVfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgPSAoXG4gIHdyaXRlX19maWxlX2xpbmVfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfZGV0YWlsID0gKFxuICByZWFkX19maWxlX2xpbmVfbGlzdFxuKVxubGV0IGZpbGVfbGluZV9kZXRhaWxfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9kZXRhaWwgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fc3RyaW5nX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fc3RyaW5nX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3N0cmluZ19saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgKVxuKVxubGV0IF9zdHJpbmdfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3N0cmluZ19saXN0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2cgPSAoXG4gIHdyaXRlX19zdHJpbmdfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICByZWFkX19zdHJpbmdfbGlzdFxuKVxubGV0IGZpbGVfbGluZV9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfY2F0YWxvZyAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Vudmlyb25tZW50X2luZm8gOiBfIC0+IGVudmlyb25tZW50X2luZm8gLT4gXyA9IChcbiAgZnVuIG9iICh4IDogZW52aXJvbm1lbnRfaW5mbykgLT5cbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snO1xuICAgIGxldCBpc19maXJzdCA9IHJlZiB0cnVlIGluXG4gICAgaWYgIWlzX2ZpcnN0IHRoZW5cbiAgICAgIGlzX2ZpcnN0IDo9IGZhbHNlXG4gICAgZWxzZVxuICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICcsJztcbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcInByb2plY3RzXFxcIjpcIjtcbiAgICAoXG4gICAgICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbiAgICApXG4gICAgICBvYiB4LmVudmlyb25tZW50X3Byb2plY3RzO1xuICAgIGlmICFpc19maXJzdCB0aGVuXG4gICAgICBpc19maXJzdCA6PSBmYWxzZVxuICAgIGVsc2VcbiAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnLCc7XG4gICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJidWlsZFxcXCI6XCI7XG4gICAgKFxuICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgKVxuICAgICAgb2IgeC5lbnZpcm9ubWVudF9idWlsZDtcbiAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nO1xuKVxubGV0IHN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Vudmlyb25tZW50X2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA9IHJlZiAoTm9uZSkgaW5cbiAgICB0cnlcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X2VuZCBsYjtcbiAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgIGxldCBmID1cbiAgICAgICAgZnVuIHMgcG9zIGxlbiAtPlxuICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgbWF0Y2ggbGVuIHdpdGhcbiAgICAgICAgICAgIHwgNSAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB8IDggLT4gKFxuICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ3AnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdyJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAnbycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2onICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys0KSA9ICdlJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNSkgPSAnYycgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzYpID0gJ3QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys3KSA9ICdzJyB0aGVuIChcbiAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgKFxuICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICB8IDAgLT5cbiAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIDo9IChcbiAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCAxIC0+XG4gICAgICAgICAgICBmaWVsZF9lbnZpcm9ubWVudF9idWlsZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnNraXBfanNvbiBwIGxiXG4gICAgICAgICAgICApXG4gICAgICApO1xuICAgICAgd2hpbGUgdHJ1ZSBkb1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfb2JqZWN0X3NlcCBwIGxiO1xuICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgIGxldCBmID1cbiAgICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgICBpZiBwb3MgPCAwIHx8IGxlbiA8IDAgfHwgcG9zICsgbGVuID4gU3RyaW5nLmxlbmd0aCBzIHRoZW5cbiAgICAgICAgICAgICAgaW52YWxpZF9hcmcgKFByaW50Zi5zcHJpbnRmIFwib3V0LW9mLWJvdW5kcyBzdWJzdHJpbmcgcG9zaXRpb24gb3IgbGVuZ3RoOiBzdHJpbmcgPSAlUywgcmVxdWVzdGVkIHBvc2l0aW9uID0gJWksIHJlcXVlc3RlZCBsZW5ndGggPSAlaVwiIHMgcG9zIGxlbik7XG4gICAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgICB8IDUgLT4gKFxuICAgICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnYicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ3UnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnbCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzQpID0gJ2QnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgOCAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdwJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAncicgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzIpID0gJ28nICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcyszKSA9ICdqJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNCkgPSAnZScgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzUpID0gJ2MnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcys2KSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrNykgPSAncycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICAgIC0xXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICBpblxuICAgICAgICBsZXQgaSA9IFlvanNvbi5TYWZlLm1hcF9pZGVudCBwIGYgbGIgaW5cbiAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgKFxuICAgICAgICAgIG1hdGNoIGkgd2l0aFxuICAgICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICAgIGZpZWxkX2Vudmlyb25tZW50X3Byb2plY3RzIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4gICAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgICAgZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgOj0gKFxuICAgICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgICAgKFxuICAgICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgICAgZG9uZTtcbiAgICAgIGFzc2VydCBmYWxzZTtcbiAgICB3aXRoIFlvanNvbi5FbmRfb2Zfb2JqZWN0IC0+IChcbiAgICAgICAgKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGVudmlyb25tZW50X3Byb2plY3RzID0gKG1hdGNoICFmaWVsZF9lbnZpcm9ubWVudF9wcm9qZWN0cyB3aXRoIFNvbWUgeCAtPiB4IHwgTm9uZSAtPiBBdGRnZW5fcnVudGltZS5Pal9ydW4ubWlzc2luZ19maWVsZCBwIFwiZW52aXJvbm1lbnRfcHJvamVjdHNcIik7XG4gICAgICAgICAgICBlbnZpcm9ubWVudF9idWlsZCA9IChtYXRjaCAhZmllbGRfZW52aXJvbm1lbnRfYnVpbGQgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImVudmlyb25tZW50X2J1aWxkXCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgIDogZW52aXJvbm1lbnRfaW5mbylcbiAgICAgIClcbilcbmxldCBlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9lbnZpcm9ubWVudF9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbilcbmxldCBzdHJpbmdfb2ZfZGluX2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9pZCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2Rpbl9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4pXG5sZXQgZGluX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fZGluX2lkX2xpc3QgPSAoXG4gIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi53cml0ZV9saXN0IChcbiAgICB3cml0ZV9kaW5faWRcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fZGluX2lkX2xpc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX2Rpbl9pZF9saXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX2Rpbl9pZF9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2Rpbl9pZFxuICApXG4pXG5sZXQgX2Rpbl9pZF9saXN0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fZGluX2lkX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW5fY2F0YWxvZyA9IChcbiAgd3JpdGVfX2Rpbl9pZF9saXN0XG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2NhdGFsb2cgPSAoXG4gIHJlYWRfX2Rpbl9pZF9saXN0XG4pXG5sZXQgZGluX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2Rpbl9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluID0gKFxuICBEYXRhLndyaXRlX2RpblxuKVxubGV0IHN0cmluZ19vZl9kaW4gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluID0gKFxuICBEYXRhLnJlYWRfZGluXG4pXG5sZXQgZGluX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW4gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbnR5cGUgXyBoYW5kbGUgPVxuICB8IE5vdGhpbmcgOiB1bml0IGhhbmRsZVxuICB8IEJpZ1N0cmluZyA6IEJpZ2J1ZmZlci5iaWdzdHJpbmcgaGFuZGxlXG4gIHwgU3RyaW5nIDogc3RyaW5nIGhhbmRsZVxuICB8IFN0cmluZ3MgOiBzdHJpbmcgbGlzdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgKCogIHwgQXN0IDogQXN0LnBhcnNpbmdfY29tcGlsIGhhbmRsZSopXG4gIHwgSlNPTiA6IFlvanNvbi5CYXNpYy50IGhhbmRsZVxuICB8IEluZmx1ZW5jZV9tYXBcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogaW50XG4gICAgICAgICogaW50IG9wdGlvblxuICAgICAgICAqIGludCBvcHRpb25cbiAgICAgICAgKiAoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb25cbiAgICAgICAgKiBQdWJsaWNfZGF0YS5pbmZsdWVuY2VfbWFwKVxuICAgICAgICBoYW5kbGVcbiAgfCBTaG9ydF9pbmZsdWVuY2Vfbm9kZSA6IChpbnQsIGludCkgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgb3B0aW9uIGhhbmRsZVxuICB8IEluZmx1ZW5jZV9ub2RlXG4gICAgICA6IChQdWJsaWNfZGF0YS5ydWxlLCBQdWJsaWNfZGF0YS52YXIpIFB1YmxpY19kYXRhLmluZmx1ZW5jZV9ub2RlIG9wdGlvblxuICAgICAgICBoYW5kbGVcbiAgfCBJbmZsdWVuY2Vfbm9kZXNcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogKFB1YmxpY19kYXRhLnJ1bGUsIFB1YmxpY19kYXRhLnZhcikgUHVibGljX2RhdGEuaW5mbHVlbmNlX25vZGUgbGlzdClcbiAgICAgICAgaGFuZGxlXG4gIHwgUnVsZXNfa2FzYSA6IFB1YmxpY19kYXRhLnJ1bGUgbGlzdCBoYW5kbGVcbiAgfCBBZ2VudHNfa2FzYSA6IFB1YmxpY19kYXRhLmRlYWRfYWdlbnRzIGhhbmRsZVxuICB8IFRyYW5zaXRpb25zX2thc2EgOiAoUHVibGljX2RhdGEucnVsZSAqIChzdHJpbmcgKiBzdHJpbmcpIGxpc3QpIGxpc3QgaGFuZGxlXG4gIHwgQ29uc3RyYWludHNfa2FzYVxuICAgICAgOiAoc3RyaW5nICogUHVibGljX2RhdGEuYWdlbnQgbGlzdCBQdWJsaWNfZGF0YS5sZW1tYSBsaXN0KSBsaXN0IGhhbmRsZVxuICB8IFBvbHltZXJzX2thc2FcbiAgICAgIDogKFB1YmxpY19kYXRhLmFjY3VyYWN5X2xldmVsXG4gICAgICAgICogUHVibGljX2RhdGEuYWNjdXJhY3lfbGV2ZWxcbiAgICAgICAgKiBQdWJsaWNfZGF0YS5zY2MpXG4gICAgICAgIGhhbmRsZVxuICB8IERJTiA6IERhdGEuZGluIGhhbmRsZVxuICB8IFBsb3QgOiBEYXRhLnBsb3QgaGFuZGxlXG4gIHwgU25hcHNob3QgOiBEYXRhLnNuYXBzaG90IGhhbmRsZVxuICB8IFNpbXVsYXRpb25fZWZmaWNpZW5jeSA6IENvdW50ZXIuRWZmaWNpZW5jeS50IGhhbmRsZVxuICB8IFNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mbyBoYW5kbGVcbiAgfCBTaW11bGF0aW9uX3BhcmFtZXRlciA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyIGhhbmRsZVxuICB8IFNpbXVsYXRpb25fYXJ0aWZhY3QgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0IGhhbmRsZVxuXG50eXBlIGJveCA9XG4gIHwgQiA6ICdhIGhhbmRsZSAqICgnYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC51IC0+IGJveFxuXG50eXBlIG1haWxib3ggPSAoaW50LCBib3gpIEhhc2h0YmwudFxuXG5sZXQgbmV3X21haWxib3ggKCkgPSBIYXNodGJsLmNyZWF0ZSAyXG5cbmxldCByZWFkX3Jlc3VsdCBmIHAgbGIgPVxuICBKc29uVXRpbC5yZWFkX25leHRfaXRlbVxuICAgIChSZXN1bHRfdXRpbC5yZWFkX3QgZiAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBSZXN1bHRfdXRpbC5yZWFkX21lc3NhZ2UpKVxuICAgIHAgbGJcblxubGV0IHJlY2VpdmUgbWFpbGJveCB4ID1cbiAgSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAoSnNvblV0aWwucmVhZF92YXJpYW50IFlvanNvbi5CYXNpYy5yZWFkX2ludCAoZnVuIHAgbGIgaWQgLT5cbiAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgIG1hdGNoIEhhc2h0YmwuZmluZCBtYWlsYm94IGlkIHdpdGhcbiAgICAgICAgICAgfCBCIChOb3RoaW5nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWQgKHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX251bGwgcCBsYilcbiAgICAgICAgICAgfCBCIChCaWdTdHJpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQgb3V0ID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCAoQmFzZTY0LmRlY29kZSA/YWxwaGFiZXQ6Tm9uZSkgb3V0KVxuICAgICAgICAgICB8IEIgKFN0cmluZywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9zdHJpbmcgcCBsYilcbiAgICAgICAgICAgfCBCIChTdHJpbmdzLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nKVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgfCBCIChDYXRhbG9nLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgS2ZpbGVzLnJlYWRfY2F0YWxvZ19pdGVtKVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgfCBCIChJbmZvLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChyZWFkX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLnJlYWRfaW50KVxuICAgICAgICAgICAgICAgICAgcCBsYilcbiAgICAgICAgICAgICAoKiB8IEIgKEFzdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXN0LnJlYWRfcGFyc2luZ19jb21waWwgcCBsYikqKVxuICAgICAgICAgICB8IEIgKEpTT04sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZmx1ZW5jZV9tYXAsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFNob3J0X2luZmx1ZW5jZV9ub2RlLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAganNvbilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2Vfbm9kZSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC50b19vcHRpb24gUHVibGljX2RhdGEucmVmaW5lZF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uKVxuICAgICAgICAgICAgICAgICAganNvbilcbiAgICAgICAgICAgfCBCIChJbmZsdWVuY2Vfbm9kZXMsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLm5vZGVzX29mX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFJ1bGVzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIFB1YmxpY19kYXRhLmRlYWRfcnVsZXNfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKEFnZW50c19rYXNhLCB0aHJlYWQpIC0+XG4gICAgICAgICAgICAgbGV0IGpzb24gPSByZWFkX3Jlc3VsdCBZb2pzb24uQmFzaWMucmVhZF9qc29uIHAgbGIgaW5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm1hcCBQdWJsaWNfZGF0YS5qc29uX3RvX2RlYWRfYWdlbnRzIGpzb24pXG4gICAgICAgICAgIHwgQiAoVHJhbnNpdGlvbnNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIGpzb24pXG4gICAgICAgICAgIHwgQiAoQ29uc3RyYWludHNfa2FzYSwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIGxldCBqc29uID0gcmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfanNvbiBwIGxiIGluXG4gICAgICAgICAgICAgTHd0Lndha2V1cCB0aHJlYWRcbiAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEubGVtbWFzX2xpc3Rfb2ZfanNvbiBqc29uKVxuICAgICAgICAgICB8IEIgKFBvbHltZXJzX2thc2EsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBsZXQganNvbiA9IHJlYWRfcmVzdWx0IFlvanNvbi5CYXNpYy5yZWFkX2pzb24gcCBsYiBpblxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChSZXN1bHRfdXRpbC5tYXAgUHVibGljX2RhdGEuc2NjX29mX2pzb24ganNvbilcbiAgICAgICAgICAgfCBCIChESU4sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgRGF0YS5yZWFkX2RpbiBwIGxiKVxuICAgICAgICAgICB8IEIgKFBsb3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgRGF0YS5yZWFkX3Bsb3QgcCBsYilcbiAgICAgICAgICAgfCBCIChTbmFwc2hvdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBEYXRhLnJlYWRfc25hcHNob3QgcCBsYilcbiAgICAgICAgICAgfCBCIChTaW11bGF0aW9uX2VmZmljaWVuY3ksIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgQ291bnRlci5FZmZpY2llbmN5LnJlYWRfdCBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25faW5mbywgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2luZm8gcCBsYilcbiAgICAgICAgICAgfCBCIChTaW11bGF0aW9uX3BhcmFtZXRlciwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkXG4gICAgICAgICAgICAgICAocmVhZF9yZXN1bHQgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlciBwIGxiKVxuICAgICAgICAgICB8IEIgKFNpbXVsYXRpb25fYXJ0aWZhY3QsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0IEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCBwIGxiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQpKVxuICAgIHhcblxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+aXNfcnVubmluZyB+cG9zdCBtYWlsYm94ID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIGlkID0gMFxuXG4gICAgbWV0aG9kIHByaXZhdGUgbWVzc2FnZSA6IHR5cGUgYS5cbiAgICAgICAgYSBoYW5kbGUgLT5cbiAgICAgICAgKEJ1ZmZlci50IC0+IHVuaXQpIC0+XG4gICAgICAgIChhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICAgICAgZnVuIGhhbmRsZSByZXF1ZXN0IC0+XG4gICAgICAgIGlmIGlzX3J1bm5pbmcgKCkgdGhlbiAoXG4gICAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgICAgICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTsgcmVxdWVzdCBdKVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9zdCBtZXNzYWdlIGluXG4gICAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgKEIgKGhhbmRsZSwgZmVlZGVyKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZCA8LSBzdWNjIGlkIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0ID0gXCJrYW1vaGEgYWdlbnQgaGFzIGRpZWRcIjtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYU1vSGEgKilcbiAgICBtZXRob2QgZmlsZV9kZWxldGUgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlRGVsZXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlVXBkYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZU1vdmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUdldFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ3JlYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ2F0YWxvZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ2F0YWxvZ1wiKSBdKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlIDogQXN0LnBhcnNpbmdfY29tcGlsIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwibG93IGxldmVsIHByb2plY3RfcGFyc2UgbXVzdG4ndCBiZSB1c2VkXCIpXG5cbiAgICBtZXRob2Qgc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNcbiAgICAgICAgOiBQdWJsaWNfZGF0YS5wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBMd3QucmV0dXJuXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X292ZXJ3cml0ZSBmaWxlX2lkIGFzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJQcm9qZWN0T3ZlcndyaXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXN0LndyaXRlX3BhcnNpbmdfY29tcGlsIGIgYXN0KTtcbiAgICAgICAgICAgIF0pXG5cbiAgICAoKiBLYVNhICopXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5JVFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBjb21waWwpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgSlNPTiAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJDT05UQUNUX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9qc29uIGJcbiAgICAgICAgICAgICAgICAgIChKc29uVXRpbC5vZl9vcHRpb24gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhY2N1cmFjeSkpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9tYXAgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiTE9DQUxfSU5GTFVFTkNFX01BUFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5KSk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZ3ZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBKc29uVXRpbC53cml0ZV9vcHRpb24gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGJ3ZCk7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgdG90YWwpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIG9yaWdpbikpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfaW5pdGlhbF9ub2RlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPlxuICAgICAgICAgICAgICAgIFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIklORkxVRU5DRV9NQVBfT1JJR0lOQUxfTk9ERVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBqc29uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBJbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX05FWFRfTk9ERVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgICBqc29uKSk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGdldF9wcmV2aW91c19ub2RlIGpzb24gPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiSU5GTFVFTkNFX01BUF9QUkVWSU9VU19OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb25cbiAgICAgICAgICAgICAgICAgICAgIGpzb24pKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaG9ydF9pbmZsdWVuY2Vfbm9kZSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX05PREVfQVRcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZW5hbWUpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gTG9jLndyaXRlX3Bvc2l0aW9uIGIgcG9zKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZmx1ZW5jZV9ub2RlcyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJJTkZMVUVOQ0VfTUFQX0FMTF9OT0RFXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3kpKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgc2VsZiNtZXNzYWdlIFJ1bGVzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiREVBRF9SVUxFU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQWdlbnRzX2thc2EgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiREVBRF9BR0VOVFNcIikgXSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHNlbGYjbWVzc2FnZSBUcmFuc2l0aW9uc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiTk9OX1dFQUtMWV9SRVZFUlNJQkxFX1RSQU5TSVRJT05TXCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBnZXRfY29uc3RyYWludHNfbGlzdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ29uc3RyYWludHNfa2FzYSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJDT05TVFJBSU5UU1wiKSBdKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIHNlbGYjbWVzc2FnZSBQb2x5bWVyc19rYXNhIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlBPTFlNRVJTXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBiXG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYWNjdXJhY3lfY20pKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgWW9qc29uLkJhc2ljLndyaXRlX2pzb24gYlxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGFjY3VyYWN5X3NjYykpO1xuICAgICAgICAgICAgXSlcblxuICAgICgqIEthU2ltICopXG4gICAgbWV0aG9kIHNlY3JldF9zaW11bGF0aW9uX2xvYWQgKF8gOiBQYXR0ZXJuLnNoYXJpbmdfbGV2ZWwpXG4gICAgICAgIChfIDogQXN0LnBhcnNpbmdfY29tcGlsKSAoXyA6IChzdHJpbmcgKiBOYnIudCkgbGlzdClcbiAgICAgICAgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIFwibG93IGxldmVsIHNpbXVsYXRpb25fbG9hZCBtdXN0bid0IGJlIHVzZWRcIilcblxuICAgIG1ldGhvZCBwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZyBvdmVyd3JpdGVzID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlByb2plY3RQYXJzZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFBhdHRlcm4ud3JpdGVfc2hhcmluZ19sZXZlbCBiIHBhdHRlcm5TaGFyaW5nKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfbGlzdFxuICAgICAgICAgICAgICAgICAgKEpzb25VdGlsLndyaXRlX2NvbXBhY3RfcGFpciBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBOYnIud3JpdGVfdClcbiAgICAgICAgICAgICAgICAgIGIgb3ZlcndyaXRlcyk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY29udGludWUgcGF1c2UgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIHBhdXNlKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRlbGV0ZVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2RpbiBpZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgRElOIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxESU5cIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGlkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3QgaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNuYXBzaG90IChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT5cbiAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfcGxvdCBwYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFBsb3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBBcGlfdHlwZXNfai53cml0ZV9wbG90X3BhcmFtZXRlciBiIHBhcmFtZXRlcik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gPVxuICAgICAgc2VsZiNtZXNzYWdlIFN0cmluZ3MgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmdzIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIik7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdCA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5ncyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2VmZmljaWVuY3kgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fZWZmaWNpZW5jeSAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25faW5mbyA9XG4gICAgICBzZWxmI21lc3NhZ2UgU2ltdWxhdGlvbl9pbmZvIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25JbmZvXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gaW50ZXJ2ZW50aW9uID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBpbnRlcnZlbnRpb24pO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIHNlbGYjbWVzc2FnZSBCaWdTdHJpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIikgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBOb3RoaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25QYXVzZVwiKSBdKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgIHNlbGYjbWVzc2FnZSBTaW11bGF0aW9uX3BhcmFtZXRlciAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIpIF0pXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydCBwYXJhbWV0ZXIgPVxuICAgICAgc2VsZiNtZXNzYWdlIFNpbXVsYXRpb25fYXJ0aWZhY3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiU2ltdWxhdGlvblN0YXJ0XCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgYiBwYXJhbWV0ZXIpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA9XG4gICAgICBzZWxmI21lc3NhZ2UgU3RyaW5nIChmdW4gYiAtPlxuICAgICAgICAgIEpzb25VdGlsLndyaXRlX3NlcXVlbmNlIGJcbiAgICAgICAgICAgIFsgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBcIlNpbXVsYXRpb25UcmFjZVwiKSBdKVxuXG4gICAgKCogbWV0aG9kIHByb2plY3RfcGFyc2Ugb3ZlcndyaXRlID0gKClcblxuICAgICAgIG1ldGhvZCByYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uID0gKClcbiAgICAgICBtZXRob2QgY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIG1vZGVzID0gTHd0X3Jlc3VsdC5yZXR1cm4gKClcbiAgICAgICBtZXRob2Qgc3RvcnlfaXNfY29tcHV0aW5nID0gZmFsc2VcbiAgICAgICBtZXRob2Qgc3RvcnlfbGlzdCA9ICgpXG4gICAgICAgbWV0aG9kIHN0b3J5X2xvZyA9ICgpXG4gICAgICAgbWV0aG9kIHN0b3J5X3Byb2dyZXNzID0gKClcblxuICAgICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSB0cnVlXG4gICAgICAgICBtZXRob2QgdGVybWluYXRlID0gKCkqKVxuICBlbmRcbiIsIigqIEF1dG8tZ2VuZXJhdGVkIGZyb20gXCJtcGlfbWVzc2FnZS5hdGRcIiAqKVxuW0BAQG9jYW1sLndhcm5pbmcgXCItMjctMzItMzMtMzUtMzlcIl1cblxudHlwZSBzbmFwc2hvdF9pZCA9IEFwaV90eXBlc190LnNuYXBzaG90X2lkXG5cbnR5cGUgc25hcHNob3RfZGV0YWlsID0gQXBpX3R5cGVzX3Quc25hcHNob3RfZGV0YWlsXG5cbnR5cGUgc25hcHNob3RfY2F0YWxvZyA9IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2dcblxudHlwZSBzaW11bGF0aW9uX3BhcmFtZXRlciA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyXG5cbnR5cGUgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPSBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2ludGVydmVudGlvblxuXG50eXBlIHNpbXVsYXRpb25faW5mbyA9IEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb1xuXG50eXBlIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA9IENvdW50ZXIuRWZmaWNpZW5jeS50XG5cbnR5cGUgc2ltdWxhdGlvbl9hcnRpZmFjdCA9IEFwaV90eXBlc190LnNpbXVsYXRpb25fYXJ0aWZhY3RcblxudHlwZSAoJ29rLCAnZXJyb3IpIGFwaV9yZXN1bHQgPSAoJ29rLCAnZXJyb3IpIEFwaV90eXBlc190LnJlc3VsdFxuXG50eXBlIGFwaV9tZXNzYWdlID0gQXBpX3R5cGVzX3QubWVzc2FnZVxuXG50eXBlICdvayByZXN1bHQgPSAnb2sgTXBpX21lc3NhZ2VfdC5yZXN1bHRcblxudHlwZSBwbG90ID0gQXBpX3R5cGVzX3QucGxvdFxuXG50eXBlIGxvZ19tZXNzYWdlID0gQXBpX3R5cGVzX3QubG9nX21lc3NhZ2VcblxudHlwZSBmaWxlX2xpbmVfY2F0YWxvZyA9IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nXG5cbnR5cGUgZW52aXJvbm1lbnRfaW5mbyA9IEFwaV90eXBlc190LmVudmlyb25tZW50X2luZm9cblxudHlwZSBkaW5fY2F0YWxvZyA9IEFwaV90eXBlc190LmRpbl9jYXRhbG9nXG5cbnR5cGUgZGluID0gQXBpX3R5cGVzX3QuZGluXG5cbnR5cGUgcmVzdF9yZXNwb25zZV9jb250ZW50ID0gTXBpX21lc3NhZ2VfdC5yZXN0X3Jlc3BvbnNlX2NvbnRlbnRcblxudHlwZSByZXN0X3Jlc3BvbnNlID0gTXBpX21lc3NhZ2VfdC5yZXN0X3Jlc3BvbnNlXG5cbnR5cGUgcHJvamVjdF9wYXJzZSA9IEFwaV90eXBlc190LnByb2plY3RfcGFyc2VcblxudHlwZSBwcm9qZWN0X3BhcmFtZXRlciA9IEFwaV90eXBlc190LnByb2plY3RfcGFyYW1ldGVyXG5cbnR5cGUgcGxvdF9wYXJhbWV0ZXIgPSBBcGlfdHlwZXNfdC5wbG90X3BhcmFtZXRlclxuXG50eXBlIGRpbl9pZCA9IEFwaV90eXBlc190LmRpbl9pZFxuXG50eXBlIHJlc3RfcmVxdWVzdCA9IE1waV9tZXNzYWdlX3QucmVzdF9yZXF1ZXN0XG5cbnR5cGUgcmVzcG9uc2VfY29udGVudCA9IE1waV9tZXNzYWdlX3QucmVzcG9uc2VfY29udGVudFxuXG50eXBlIHJlc3BvbnNlID0gTXBpX21lc3NhZ2VfdC5yZXNwb25zZVxuXG50eXBlIHJlcXVlc3QgPSBNcGlfbWVzc2FnZV90LnJlcXVlc3RcblxudHlwZSBpZCA9IE1waV9tZXNzYWdlX3QuaWRcblxudHlwZSAnZGF0YSBtZXNzYWdlID0gJ2RhdGEgTXBpX21lc3NhZ2VfdC5tZXNzYWdlID0geyBpZDogaWQ7IGRhdGE6ICdkYXRhIH1cblxudHlwZSBmaWxlX2xpbmVfZGV0YWlsID0gQXBpX3R5cGVzX3QuZmlsZV9saW5lX2RldGFpbFxuXG50eXBlIGZpbGVfbGluZSA9IEFwaV90eXBlc190LmZpbGVfbGluZVxuXG5sZXQgd3JpdGVfc25hcHNob3RfaWQgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NuYXBzaG90X2lkXG4pXG5sZXQgc3RyaW5nX29mX3NuYXBzaG90X2lkID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2lkIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfaWQgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc25hcHNob3RfaWRcbilcbmxldCBzbmFwc2hvdF9pZF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfaWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zbmFwc2hvdF9kZXRhaWwgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NuYXBzaG90X2RldGFpbFxuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9kZXRhaWwgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc25hcHNob3RfZGV0YWlsIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc25hcHNob3RfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NuYXBzaG90X2RldGFpbFxuKVxubGV0IHNuYXBzaG90X2RldGFpbF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc25hcHNob3RfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc25hcHNob3RfY2F0YWxvZyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc25hcHNob3RfY2F0YWxvZ1xuKVxubGV0IHN0cmluZ19vZl9zbmFwc2hvdF9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NuYXBzaG90X2NhdGFsb2cgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zbmFwc2hvdF9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3NuYXBzaG90X2NhdGFsb2dcbilcbmxldCBzbmFwc2hvdF9jYXRhbG9nX29mX3N0cmluZyBzID1cbiAgcmVhZF9zbmFwc2hvdF9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbilcbmxldCBzaW11bGF0aW9uX3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuKVxubGV0IHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvbiAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25faW5mbyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfc2ltdWxhdGlvbl9pbmZvXG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25faW5mbyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2luZm8gPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfc2ltdWxhdGlvbl9pbmZvXG4pXG5sZXQgc2ltdWxhdGlvbl9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9zaW11bGF0aW9uX2luZm8gKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kgPSAoXG4gIENvdW50ZXIuRWZmaWNpZW5jeS53cml0ZV90XG4pXG5sZXQgc3RyaW5nX29mX3NpbXVsYXRpb25fZWZmaWNpZW5jeSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3kgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3kgPSAoXG4gIENvdW50ZXIuRWZmaWNpZW5jeS5yZWFkX3RcbilcbmxldCBzaW11bGF0aW9uX2VmZmljaWVuY3lfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3NpbXVsYXRpb25fZWZmaWNpZW5jeSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3QgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3RcbilcbmxldCBzdHJpbmdfb2Zfc2ltdWxhdGlvbl9hcnRpZmFjdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9zaW11bGF0aW9uX2FydGlmYWN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4pXG5sZXQgc2ltdWxhdGlvbl9hcnRpZmFjdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcmVzdWx0IHdyaXRlX19vayB3cml0ZV9fZXJyb3JcbilcbmxldCBzdHJpbmdfb2ZfYXBpX3Jlc3VsdCB3cml0ZV9fb2sgd3JpdGVfX2Vycm9yID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX29rIHdyaXRlX19lcnJvciBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2FwaV9yZXN1bHQgcmVhZF9fb2sgcmVhZF9fZXJyb3IgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcmVzdWx0IHJlYWRfX29rIHJlYWRfX2Vycm9yXG4pXG5sZXQgYXBpX3Jlc3VsdF9vZl9zdHJpbmcgcmVhZF9fb2sgcmVhZF9fZXJyb3IgcyA9XG4gIHJlYWRfYXBpX3Jlc3VsdCByZWFkX19vayByZWFkX19lcnJvciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2FwaV9tZXNzYWdlID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9tZXNzYWdlXG4pXG5sZXQgc3RyaW5nX29mX2FwaV9tZXNzYWdlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2FwaV9tZXNzYWdlIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfYXBpX21lc3NhZ2UgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfbWVzc2FnZVxuKVxubGV0IGFwaV9tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9hcGlfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX19hcGlfbWVzc2FnZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgd3JpdGVfYXBpX21lc3NhZ2VcbiAgKVxuKVxubGV0IHN0cmluZ19vZl9fYXBpX21lc3NhZ2VfbGlzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19hcGlfbWVzc2FnZV9saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9saXN0IChcbiAgICByZWFkX2FwaV9tZXNzYWdlXG4gIClcbilcbmxldCBfYXBpX21lc3NhZ2VfbGlzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX2FwaV9tZXNzYWdlX2xpc3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzdWx0X2QxZjk4MjQgd3JpdGVfX2EgPSAoXG4gIHdyaXRlX2FwaV9yZXN1bHQgd3JpdGVfX2Egd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19hID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN1bHRfZDFmOTgyNCB3cml0ZV9fYSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN1bHRfZDFmOTgyNCByZWFkX19hID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9fYSByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF9kMWY5ODI0X29mX3N0cmluZyByZWFkX19hIHMgPVxuICByZWFkX19yZXN1bHRfZDFmOTgyNCByZWFkX19hIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzdWx0IHdyaXRlX19vayA9IChcbiAgd3JpdGVfX3Jlc3VsdF9kMWY5ODI0IHdyaXRlX19va1xuKVxubGV0IHN0cmluZ19vZl9yZXN1bHQgd3JpdGVfX29rID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Jlc3VsdCB3cml0ZV9fb2sgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN1bHQgcmVhZF9fb2sgPSAoXG4gIHJlYWRfX3Jlc3VsdF9kMWY5ODI0IHJlYWRfX29rXG4pXG5sZXQgcmVzdWx0X29mX3N0cmluZyByZWFkX19vayBzID1cbiAgcmVhZF9yZXN1bHQgcmVhZF9fb2sgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90ID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9wbG90XG4pXG5sZXQgc3RyaW5nX29mX3Bsb3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Bsb3QgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcGxvdFxuKVxubGV0IHBsb3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Bsb3QgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9sb2dfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfbG9nX21lc3NhZ2VcbilcbmxldCBzdHJpbmdfb2ZfbG9nX21lc3NhZ2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfbG9nX21lc3NhZ2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9sb2dfbWVzc2FnZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9sb2dfbWVzc2FnZVxuKVxubGV0IGxvZ19tZXNzYWdlX29mX3N0cmluZyBzID1cbiAgcmVhZF9sb2dfbWVzc2FnZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfY2F0YWxvZyA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZyBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZV9jYXRhbG9nID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZV9jYXRhbG9nXG4pXG5sZXQgZmlsZV9saW5lX2NhdGFsb2dfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZW52aXJvbm1lbnRfaW5mbyA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZW52aXJvbm1lbnRfaW5mb1xuKVxubGV0IHN0cmluZ19vZl9lbnZpcm9ubWVudF9pbmZvID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Vudmlyb25tZW50X2luZm8gb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9lbnZpcm9ubWVudF9pbmZvID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2Vudmlyb25tZW50X2luZm9cbilcbmxldCBlbnZpcm9ubWVudF9pbmZvX29mX3N0cmluZyBzID1cbiAgcmVhZF9lbnZpcm9ubWVudF9pbmZvIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZGluX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2Rpbl9jYXRhbG9nXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9jYXRhbG9nID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2Rpbl9jYXRhbG9nIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluX2NhdGFsb2cgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluX2NhdGFsb2dcbilcbmxldCBkaW5fY2F0YWxvZ19vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluX2NhdGFsb2cgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9kaW4gPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX2RpblxuKVxubGV0IHN0cmluZ19vZl9kaW4gPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfZGluIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfZGluID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2RpblxuKVxubGV0IGRpbl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfZGluIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3N0cmluZ19saXN0ID0gKFxuICBBdGRnZW5fcnVudGltZS5Pal9ydW4ud3JpdGVfbGlzdCAoXG4gICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gIClcbilcbmxldCBzdHJpbmdfb2ZfX3N0cmluZ19saXN0ID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19zdHJpbmdfbGlzdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19zdHJpbmdfbGlzdCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfbGlzdCAoXG4gICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gIClcbilcbmxldCBfc3RyaW5nX2xpc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX19zdHJpbmdfbGlzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCA9IChcbiAgZnVuIG9iIHggLT5cbiAgICBtYXRjaCB4IHdpdGhcbiAgICAgIHwgYFByb2plY3RMb2FkIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RMb2FkXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX19zdHJpbmdfbGlzdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbERJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9sb2dfbWVzc2FnZVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxQbG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3Bsb3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2RldGFpbFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25JbmZvIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25JbmZvXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25FZmZpY2llbmN5XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9maWxlX2xpbmVfY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uVHJhY2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblRyYWNlXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25PdXRwdXRzWmlwXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uQ29udGludWVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZWxldGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkRlbGV0ZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIFlvanNvbi5TYWZlLndyaXRlX3N0cmluZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25TdGFydCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uU3RhcnRcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJFbnZpcm9ubWVudEluZm9cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZW52aXJvbm1lbnRfaW5mb1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFByb2plY3RDcmVhdGUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiUHJvamVjdENyZWF0ZVxcXCJcIlxuICAgICAgfCBgUHJvamVjdERlbGV0ZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0RGVsZXRlXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0Q2F0YWxvZyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0Q2F0YWxvZ1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9fc3RyaW5nX2xpc3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVzcG9uc2VfY29udGVudCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Vudmlyb25tZW50X2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm8geFxuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDcmVhdGVcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0RGVsZXRlXG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdExvYWRcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlByb2plY3RDcmVhdGVcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZVxuICAgICAgICAgICAgfCBcIlByb2plY3REZWxldGVcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZVxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBTcXVhcmVfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nIHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2RpblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9sb2dfbWVzc2FnZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2RldGFpbFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2ZpbGVfbGluZV9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9jYXRhbG9nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblRyYWNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXIgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCBcIkVudmlyb25tZW50SW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9lbnZpcm9ubWVudF9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYEVudmlyb25tZW50SW5mbyB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfX3N0cmluZ19saXN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RDYXRhbG9nIHhcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuKVxubGV0IHJlc3RfcmVzcG9uc2VfY29udGVudF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVzdF9yZXNwb25zZV9jb250ZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmID0gKFxuICB3cml0ZV9hcGlfcmVzdWx0IHdyaXRlX3Jlc3RfcmVzcG9uc2VfY29udGVudCB3cml0ZV9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IHN0cmluZ19vZl9fcmVzdWx0XzRjYTZiOGYgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3VsdF80Y2E2YjhmIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3VsdF80Y2E2YjhmID0gKFxuICByZWFkX2FwaV9yZXN1bHQgcmVhZF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnQgcmVhZF9fYXBpX21lc3NhZ2VfbGlzdFxuKVxubGV0IF9yZXN1bHRfNGNhNmI4Zl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3Jlc3VsdF80Y2E2YjhmIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHdyaXRlX19yZXN1bHRfNGNhNmI4ZlxuKVxubGV0IHN0cmluZ19vZl9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID0gKFxuICByZWFkX19yZXN1bHRfNGNhNmI4ZlxuKVxubGV0IF9yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0X29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3RfcmVzcG9uc2UgPSAoXG4gIHdyaXRlX19yZXN0X3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0XG4pXG5sZXQgc3RyaW5nX29mX3Jlc3RfcmVzcG9uc2UgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdF9yZXNwb25zZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3RfcmVzcG9uc2UgPSAoXG4gIHJlYWRfX3Jlc3RfcmVzcG9uc2VfY29udGVudF9yZXN1bHRcbilcbmxldCByZXN0X3Jlc3BvbnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXN0X3Jlc3BvbnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJzZSA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcHJvamVjdF9wYXJzZVxuKVxubGV0IHN0cmluZ19vZl9wcm9qZWN0X3BhcnNlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyc2Ugb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wcm9qZWN0X3BhcnNlID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX3Byb2plY3RfcGFyc2VcbilcbmxldCBwcm9qZWN0X3BhcnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9wcm9qZWN0X3BhcnNlIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLndyaXRlX3Byb2plY3RfcGFyYW1ldGVyXG4pXG5sZXQgc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX3Byb2plY3RfcGFyYW1ldGVyIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfcHJvamVjdF9wYXJhbWV0ZXJcbilcbmxldCBwcm9qZWN0X3BhcmFtZXRlcl9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcHJvamVjdF9wYXJhbWV0ZXIgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9wbG90X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfcGxvdF9wYXJhbWV0ZXJcbilcbmxldCBzdHJpbmdfb2ZfcGxvdF9wYXJhbWV0ZXIgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcGxvdF9wYXJhbWV0ZXIgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9wbG90X3BhcmFtZXRlciA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9wbG90X3BhcmFtZXRlclxuKVxubGV0IHBsb3RfcGFyYW1ldGVyX29mX3N0cmluZyBzID1cbiAgcmVhZF9wbG90X3BhcmFtZXRlciAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2Rpbl9pZCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZGluX2lkXG4pXG5sZXQgc3RyaW5nX29mX2Rpbl9pZCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9kaW5faWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9kaW5faWQgPSAoXG4gIEFwaV90eXBlc19qLnJlYWRfZGluX2lkXG4pXG5sZXQgZGluX2lkX29mX3N0cmluZyBzID1cbiAgcmVhZF9kaW5faWQgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9yZXN0X3JlcXVlc3QgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0TG9hZFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcnNlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfaWRcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uSW5mb1xcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25UcmFjZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYEVudmlyb25tZW50SW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJFbnZpcm9ubWVudEluZm9cXFwiXCJcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlByb2plY3RDYXRhbG9nXFxcIlwiXG4gICAgICB8IGBQcm9qZWN0Q3JlYXRlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3RDcmVhdGVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfcHJvamVjdF9wYXJhbWV0ZXJcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBQcm9qZWN0RGVsZXRlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlByb2plY3REZWxldGVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuKVxubGV0IHN0cmluZ19vZl9yZXN0X3JlcXVlc3QgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzdF9yZXF1ZXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVzdF9yZXF1ZXN0ID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBtYXRjaCBZb2pzb24uU2FmZS5zdGFydF9hbnlfdmFyaWFudCBwIGxiIHdpdGhcbiAgICAgIHwgYEVkZ3lfYnJhY2tldCAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUucmVhZF9pZGVudCBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdExvYWQgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkluZm9cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhcmFtZXRlclwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiRW52aXJvbm1lbnRJbmZvXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm9cbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q2F0YWxvZ1wiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2dcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0Q3JlYXRlXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Byb2plY3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdENyZWF0ZSB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdERlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZSB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbmZvXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25UcmFjZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uT3V0cHV0c1ppcFwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXVzZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJFbnZpcm9ubWVudEluZm9cIiAtPlxuICAgICAgICAgICAgICBgRW52aXJvbm1lbnRJbmZvXG4gICAgICAgICAgICB8IFwiUHJvamVjdENhdGFsb2dcIiAtPlxuICAgICAgICAgICAgICBgUHJvamVjdENhdGFsb2dcbiAgICAgICAgICAgIHwgeCAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4uaW52YWxpZF92YXJpYW50X3RhZyBwIHhcbiAgICAgICAgKVxuICAgICAgfCBgU3F1YXJlX2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcnNlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbERJTlwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5faWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdF9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblN0YXJ0XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IFwiUHJvamVjdENyZWF0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wcm9qZWN0X3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0Q3JlYXRlIHhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0RGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgUHJvamVjdERlbGV0ZSB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXN0X3JlcXVlc3Rfb2Zfc3RyaW5nIHMgPVxuICByZWFkX3Jlc3RfcmVxdWVzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJQcm9qZWN0TG9hZFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9fc3RyaW5nX2xpc3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxESU5cXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZGluXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfbG9nX21lc3NhZ2VcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90XG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9kZXRhaWxcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW5mb1xcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRWZmaWNpZW5jeVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9kaW5fY2F0YWxvZ1xuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zbmFwc2hvdF9jYXRhbG9nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25UcmFjZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uT3V0cHV0c1ppcFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25QYXJhbWV0ZXJcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNvbnRpbnVlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uUGF1c2VcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvbkludGVydmVudGlvblxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgeCAtPlxuICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIltcXFwiU2ltdWxhdGlvblN0YXJ0XFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25fYXJ0aWZhY3RcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4pXG5sZXQgc3RyaW5nX29mX3Jlc3BvbnNlX2NvbnRlbnQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfcmVzcG9uc2VfY29udGVudCBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3BvbnNlX2NvbnRlbnQgPSAoXG4gIGZ1biBwIGxiIC0+XG4gICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgIG1hdGNoIFlvanNvbi5TYWZlLnN0YXJ0X2FueV92YXJpYW50IHAgbGIgd2l0aFxuICAgICAgfCBgRWRneV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBZb2pzb24uU2FmZS5yZWFkX2lkZW50IHAgbGIgd2l0aFxuICAgICAgICAgICAgfCBcIlByb2plY3RMb2FkXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9fc3RyaW5nX2xpc3RcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbERJTiB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfbG9nX21lc3NhZ2VcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbFBsb3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcGxvdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ0RJTlwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9kaW5fY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NuYXBzaG90X2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25PdXRwdXRzWmlwIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvblBhdXNlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uUGF1c2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9hcnRpZmFjdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYERvdWJsZV9xdW90ZSAtPiAoXG4gICAgICAgICAgbWF0Y2ggWW9qc29uLlNhZmUuZmluaXNoX3N0cmluZyBwIGxiIHdpdGhcbiAgICAgICAgICAgIHwgXCJQcm9qZWN0TG9hZFwiIC0+XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25Db250aW51ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ29udGludWVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGVsZXRlXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZWxldGVcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX19zdHJpbmdfbGlzdFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2xvZ19tZXNzYWdlXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsUGxvdFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9wbG90XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfZGV0YWlsXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRWZmaWNpZW5jeVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2VmZmljaWVuY3lcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3kgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZmlsZV9saW5lX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2NhdGFsb2dcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfY2F0YWxvZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uVHJhY2UgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXAgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhcmFtZXRlciB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkludGVydmVudGlvblwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX2FydGlmYWN0XG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydCB4XG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbilcbmxldCByZXNwb25zZV9jb250ZW50X29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXNwb25zZV9jb250ZW50IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfX3Jlc3VsdF84OTBkOWZlID0gKFxuICB3cml0ZV9hcGlfcmVzdWx0IHdyaXRlX3Jlc3BvbnNlX2NvbnRlbnQgd3JpdGVfX2FwaV9tZXNzYWdlX2xpc3RcbilcbmxldCBzdHJpbmdfb2ZfX3Jlc3VsdF84OTBkOWZlID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX19yZXN1bHRfODkwZDlmZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX19yZXN1bHRfODkwZDlmZSA9IChcbiAgcmVhZF9hcGlfcmVzdWx0IHJlYWRfcmVzcG9uc2VfY29udGVudCByZWFkX19hcGlfbWVzc2FnZV9saXN0XG4pXG5sZXQgX3Jlc3VsdF84OTBkOWZlX29mX3N0cmluZyBzID1cbiAgcmVhZF9fcmVzdWx0Xzg5MGQ5ZmUgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpIChMZXhpbmcuZnJvbV9zdHJpbmcgcylcbmxldCB3cml0ZV9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPSAoXG4gIHdyaXRlX19yZXN1bHRfODkwZDlmZVxuKVxubGV0IHN0cmluZ19vZl9fcmVzcG9uc2VfY29udGVudF9yZXN1bHQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0ID0gKFxuICByZWFkX19yZXN1bHRfODkwZDlmZVxuKVxubGV0IF9yZXNwb25zZV9jb250ZW50X3Jlc3VsdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfX3Jlc3BvbnNlX2NvbnRlbnRfcmVzdWx0IChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfcmVzcG9uc2UgPSAoXG4gIHdyaXRlX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHN0cmluZ19vZl9yZXNwb25zZSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXNwb25zZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX3Jlc3BvbnNlID0gKFxuICByZWFkX19yZXNwb25zZV9jb250ZW50X3Jlc3VsdFxuKVxubGV0IHJlc3BvbnNlX29mX3N0cmluZyBzID1cbiAgcmVhZF9yZXNwb25zZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX3JlcXVlc3QgPSAoXG4gIGZ1biBvYiB4IC0+XG4gICAgbWF0Y2ggeCB3aXRoXG4gICAgICB8IGBQcm9qZWN0TG9hZCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJQcm9qZWN0TG9hZFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wcm9qZWN0X3BhcnNlXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkNvbnRpbnVlIHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25Db250aW51ZVxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICBZb2pzb24uU2FmZS53cml0ZV9zdHJpbmdcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uRGVsZXRlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZWxldGVcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgWW9qc29uLlNhZmUud3JpdGVfc3RyaW5nXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbERJTiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsRElOXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX2Rpbl9pZFxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXFxcIlwiXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsUGxvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsUGxvdFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9wbG90X3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcXFwiLFwiO1xuICAgICAgICAoXG4gICAgICAgICAgd3JpdGVfc25hcHNob3RfaWRcbiAgICAgICAgKSBvYiB4O1xuICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ10nXG4gICAgICB8IGBTaW11bGF0aW9uSW5mbyAtPiBCdWZmZXIuYWRkX3N0cmluZyBvYiBcIlxcXCJTaW11bGF0aW9uSW5mb1xcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dESU4gLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdFxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25UcmFjZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbk91dHB1dHNaaXAgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcXFwiXCJcbiAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgLT4gQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiU2ltdWxhdGlvblBhcmFtZXRlclxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvblBhdXNlIC0+IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXFxcIlNpbXVsYXRpb25QYXVzZVxcXCJcIlxuICAgICAgfCBgU2ltdWxhdGlvbkludGVydmVudGlvbiB4IC0+XG4gICAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiW1xcXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXFxcIixcIjtcbiAgICAgICAgKFxuICAgICAgICAgIHdyaXRlX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICkgb2IgeDtcbiAgICAgICAgQnVmZmVyLmFkZF9jaGFyIG9iICddJ1xuICAgICAgfCBgU2ltdWxhdGlvblN0YXJ0IHggLT5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJbXFxcIlNpbXVsYXRpb25TdGFydFxcXCIsXCI7XG4gICAgICAgIChcbiAgICAgICAgICB3cml0ZV9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICApIG9iIHg7XG4gICAgICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAnXSdcbilcbmxldCBzdHJpbmdfb2ZfcmVxdWVzdCA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9yZXF1ZXN0IG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfcmVxdWVzdCA9IChcbiAgZnVuIHAgbGIgLT5cbiAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgbWF0Y2ggWW9qc29uLlNhZmUuc3RhcnRfYW55X3ZhcmlhbnQgcCBsYiB3aXRoXG4gICAgICB8IGBFZGd5X2JyYWNrZXQgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLnJlYWRfaWRlbnQgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJzZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFByb2plY3RMb2FkIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ29udGludWVcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25Db250aW51ZSB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRlbGV0ZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRElOXCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX2Rpbl9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdFwiIC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zbmFwc2hvdF9pZFxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkluZm9cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbmZvXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkVmZmljaWVuY3lcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9ndCBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nRElOXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0RJTlxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25PdXRwdXRzWmlwXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uT3V0cHV0c1ppcFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25QYXJhbWV0ZXJcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfZ3QgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25JbnRlcnZlbnRpb25cIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uU3RhcnRcIiAtPlxuICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF91bnRpbF9maWVsZF92YWx1ZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2d0IHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4gICAgICB8IGBEb3VibGVfcXVvdGUgLT4gKFxuICAgICAgICAgIG1hdGNoIFlvanNvbi5TYWZlLmZpbmlzaF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRlbGV0ZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2VcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW5mb1wiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mb1xuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25FZmZpY2llbmN5XCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25FZmZpY2llbmN5XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVwiIC0+XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNhdGFsb2dESU5cIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uVHJhY2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblRyYWNlXG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbk91dHB1dHNaaXBcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGFyYW1ldGVyXCIgLT5cbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uUGF1c2VcIiAtPlxuICAgICAgICAgICAgICBgU2ltdWxhdGlvblBhdXNlXG4gICAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLmludmFsaWRfdmFyaWFudF90YWcgcCB4XG4gICAgICAgIClcbiAgICAgIHwgYFNxdWFyZV9icmFja2V0IC0+IChcbiAgICAgICAgICBtYXRjaCBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmcgcCBsYiB3aXRoXG4gICAgICAgICAgICB8IFwiUHJvamVjdExvYWRcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfcHJvamVjdF9wYXJzZVxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBQcm9qZWN0TG9hZCB4XG4gICAgICAgICAgICB8IFwiU2ltdWxhdGlvbkNvbnRpbnVlXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICBBdGRnZW5fcnVudGltZS5Pal9ydW4ucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkNvbnRpbnVlIHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmVcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgeFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxESU5cIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfZGluX2lkXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25EZXRhaWxQbG90XCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3Bsb3RfcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxQbG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcIiAtPlxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfY29tbWEgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBsZXQgeCA9IChcbiAgICAgICAgICAgICAgICAgIHJlYWRfc25hcHNob3RfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3JiciBwIGxiO1xuICAgICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHhcbiAgICAgICAgICAgIHwgXCJTaW11bGF0aW9uSW50ZXJ2ZW50aW9uXCIgLT5cbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2NvbW1hIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgbGV0IHggPSAoXG4gICAgICAgICAgICAgICAgICByZWFkX3NpbXVsYXRpb25faW50ZXJ2ZW50aW9uXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9yYnIgcCBsYjtcbiAgICAgICAgICAgICAgYFNpbXVsYXRpb25JbnRlcnZlbnRpb24geFxuICAgICAgICAgICAgfCBcIlNpbXVsYXRpb25TdGFydFwiIC0+XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUucmVhZF9jb21tYSBwIGxiO1xuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIGxldCB4ID0gKFxuICAgICAgICAgICAgICAgICAgcmVhZF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX3NwYWNlIHAgbGI7XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfcmJyIHAgbGI7XG4gICAgICAgICAgICAgIGBTaW11bGF0aW9uU3RhcnQgeFxuICAgICAgICAgICAgfCB4IC0+XG4gICAgICAgICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5pbnZhbGlkX3ZhcmlhbnRfdGFnIHAgeFxuICAgICAgICApXG4pXG5sZXQgcmVxdWVzdF9vZl9zdHJpbmcgcyA9XG4gIHJlYWRfcmVxdWVzdCAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxubGV0IHdyaXRlX2lkID0gKFxuICBZb2pzb24uU2FmZS53cml0ZV9pbnRcbilcbmxldCBzdHJpbmdfb2ZfaWQgPyhsZW4gPSAxMDI0KSB4ID1cbiAgbGV0IG9iID0gQnVmZmVyLmNyZWF0ZSBsZW4gaW5cbiAgd3JpdGVfaWQgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9pZCA9IChcbiAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfaW50XG4pXG5sZXQgaWRfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2lkIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfbWVzc2FnZSB3cml0ZV9fZGF0YSA6IF8gLT4gJ2RhdGEgbWVzc2FnZSAtPiBfID0gKFxuICBmdW4gb2IgKHggOiAnZGF0YSBtZXNzYWdlKSAtPlxuICAgIEJ1ZmZlci5hZGRfY2hhciBvYiAneyc7XG4gICAgbGV0IGlzX2ZpcnN0ID0gcmVmIHRydWUgaW5cbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiaWRcXFwiOlwiO1xuICAgIChcbiAgICAgIHdyaXRlX2lkXG4gICAgKVxuICAgICAgb2IgeC5pZDtcbiAgICBpZiAhaXNfZmlyc3QgdGhlblxuICAgICAgaXNfZmlyc3QgOj0gZmFsc2VcbiAgICBlbHNlXG4gICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJywnO1xuICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb2IgXCJcXFwiZGF0YVxcXCI6XCI7XG4gICAgKFxuICAgICAgd3JpdGVfX2RhdGFcbiAgICApXG4gICAgICBvYiB4LmRhdGE7XG4gICAgQnVmZmVyLmFkZF9jaGFyIG9iICd9JztcbilcbmxldCBzdHJpbmdfb2ZfbWVzc2FnZSB3cml0ZV9fZGF0YSA/KGxlbiA9IDEwMjQpIHggPVxuICBsZXQgb2IgPSBCdWZmZXIuY3JlYXRlIGxlbiBpblxuICB3cml0ZV9tZXNzYWdlIHdyaXRlX19kYXRhIG9iIHg7XG4gIEJ1ZmZlci5jb250ZW50cyBvYlxubGV0IHJlYWRfbWVzc2FnZSByZWFkX19kYXRhID0gKFxuICBmdW4gcCBsYiAtPlxuICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICBZb2pzb24uU2FmZS5yZWFkX2xjdXJsIHAgbGI7XG4gICAgbGV0IGZpZWxkX2lkID0gcmVmIChOb25lKSBpblxuICAgIGxldCBmaWVsZF9kYXRhID0gcmVmIChOb25lKSBpblxuICAgIHRyeVxuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3RfZW5kIGxiO1xuICAgICAgWW9qc29uLlNhZmUucmVhZF9zcGFjZSBwIGxiO1xuICAgICAgbGV0IGYgPVxuICAgICAgICBmdW4gcyBwb3MgbGVuIC0+XG4gICAgICAgICAgaWYgcG9zIDwgMCB8fCBsZW4gPCAwIHx8IHBvcyArIGxlbiA+IFN0cmluZy5sZW5ndGggcyB0aGVuXG4gICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICBtYXRjaCBsZW4gd2l0aFxuICAgICAgICAgICAgfCAyIC0+IChcbiAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAwXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgNCAtPiAoXG4gICAgICAgICAgICAgICAgaWYgU3RyaW5nLnVuc2FmZV9nZXQgcyBwb3MgPSAnZCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzEpID0gJ2EnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysyKSA9ICd0JyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMykgPSAnYScgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgKVxuICAgICAgaW5cbiAgICAgIGxldCBpID0gWW9qc29uLlNhZmUubWFwX2lkZW50IHAgZiBsYiBpblxuICAgICAgQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLnJlYWRfdW50aWxfZmllbGRfdmFsdWUgcCBsYjtcbiAgICAgIChcbiAgICAgICAgbWF0Y2ggaSB3aXRoXG4gICAgICAgICAgfCAwIC0+XG4gICAgICAgICAgICBmaWVsZF9pZCA6PSAoXG4gICAgICAgICAgICAgIFNvbWUgKFxuICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgIHJlYWRfaWRcbiAgICAgICAgICAgICAgICApIHAgbGJcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB8IDEgLT5cbiAgICAgICAgICAgIGZpZWxkX2RhdGEgOj0gKFxuICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICByZWFkX19kYXRhXG4gICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgWW9qc29uLlNhZmUuc2tpcF9qc29uIHAgbGJcbiAgICAgICAgICAgIClcbiAgICAgICk7XG4gICAgICB3aGlsZSB0cnVlIGRvXG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgWW9qc29uLlNhZmUucmVhZF9vYmplY3Rfc2VwIHAgbGI7XG4gICAgICAgIFlvanNvbi5TYWZlLnJlYWRfc3BhY2UgcCBsYjtcbiAgICAgICAgbGV0IGYgPVxuICAgICAgICAgIGZ1biBzIHBvcyBsZW4gLT5cbiAgICAgICAgICAgIGlmIHBvcyA8IDAgfHwgbGVuIDwgMCB8fCBwb3MgKyBsZW4gPiBTdHJpbmcubGVuZ3RoIHMgdGhlblxuICAgICAgICAgICAgICBpbnZhbGlkX2FyZyAoUHJpbnRmLnNwcmludGYgXCJvdXQtb2YtYm91bmRzIHN1YnN0cmluZyBwb3NpdGlvbiBvciBsZW5ndGg6IHN0cmluZyA9ICVTLCByZXF1ZXN0ZWQgcG9zaXRpb24gPSAlaSwgcmVxdWVzdGVkIGxlbmd0aCA9ICVpXCIgcyBwb3MgbGVuKTtcbiAgICAgICAgICAgIG1hdGNoIGxlbiB3aXRoXG4gICAgICAgICAgICAgIHwgMiAtPiAoXG4gICAgICAgICAgICAgICAgICBpZiBTdHJpbmcudW5zYWZlX2dldCBzIHBvcyA9ICdpJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMSkgPSAnZCcgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIDBcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgfCA0IC0+IChcbiAgICAgICAgICAgICAgICAgIGlmIFN0cmluZy51bnNhZmVfZ2V0IHMgcG9zID0gJ2QnICYmIFN0cmluZy51bnNhZmVfZ2V0IHMgKHBvcysxKSA9ICdhJyAmJiBTdHJpbmcudW5zYWZlX2dldCBzIChwb3MrMikgPSAndCcgJiYgU3RyaW5nLnVuc2FmZV9nZXQgcyAocG9zKzMpID0gJ2EnIHRoZW4gKFxuICAgICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgLTFcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIHwgXyAtPiAoXG4gICAgICAgICAgICAgICAgICAtMVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IGkgPSBZb2pzb24uU2FmZS5tYXBfaWRlbnQgcCBmIGxiIGluXG4gICAgICAgIEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5yZWFkX3VudGlsX2ZpZWxkX3ZhbHVlIHAgbGI7XG4gICAgICAgIChcbiAgICAgICAgICBtYXRjaCBpIHdpdGhcbiAgICAgICAgICAgIHwgMCAtPlxuICAgICAgICAgICAgICBmaWVsZF9pZCA6PSAoXG4gICAgICAgICAgICAgICAgU29tZSAoXG4gICAgICAgICAgICAgICAgICAoXG4gICAgICAgICAgICAgICAgICAgIHJlYWRfaWRcbiAgICAgICAgICAgICAgICAgICkgcCBsYlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHwgMSAtPlxuICAgICAgICAgICAgICBmaWVsZF9kYXRhIDo9IChcbiAgICAgICAgICAgICAgICBTb21lIChcbiAgICAgICAgICAgICAgICAgIChcbiAgICAgICAgICAgICAgICAgICAgcmVhZF9fZGF0YVxuICAgICAgICAgICAgICAgICAgKSBwIGxiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfCBfIC0+IChcbiAgICAgICAgICAgICAgICBZb2pzb24uU2FmZS5za2lwX2pzb24gcCBsYlxuICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkb25lO1xuICAgICAgYXNzZXJ0IGZhbHNlO1xuICAgIHdpdGggWW9qc29uLkVuZF9vZl9vYmplY3QgLT4gKFxuICAgICAgICAoXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQgPSAobWF0Y2ggIWZpZWxkX2lkIHdpdGggU29tZSB4IC0+IHggfCBOb25lIC0+IEF0ZGdlbl9ydW50aW1lLk9qX3J1bi5taXNzaW5nX2ZpZWxkIHAgXCJpZFwiKTtcbiAgICAgICAgICAgIGRhdGEgPSAobWF0Y2ggIWZpZWxkX2RhdGEgd2l0aCBTb21lIHggLT4geCB8IE5vbmUgLT4gQXRkZ2VuX3J1bnRpbWUuT2pfcnVuLm1pc3NpbmdfZmllbGQgcCBcImRhdGFcIik7XG4gICAgICAgICAgfVxuICAgICAgICAgOiAnZGF0YSBtZXNzYWdlKVxuICAgICAgKVxuKVxubGV0IG1lc3NhZ2Vfb2Zfc3RyaW5nIHJlYWRfX2RhdGEgcyA9XG4gIHJlYWRfbWVzc2FnZSByZWFkX19kYXRhIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lX2RldGFpbCA9IChcbiAgQXBpX3R5cGVzX2oud3JpdGVfZmlsZV9saW5lX2RldGFpbFxuKVxubGV0IHN0cmluZ19vZl9maWxlX2xpbmVfZGV0YWlsID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZV9kZXRhaWwgb2IgeDtcbiAgQnVmZmVyLmNvbnRlbnRzIG9iXG5sZXQgcmVhZF9maWxlX2xpbmVfZGV0YWlsID0gKFxuICBBcGlfdHlwZXNfai5yZWFkX2ZpbGVfbGluZV9kZXRhaWxcbilcbmxldCBmaWxlX2xpbmVfZGV0YWlsX29mX3N0cmluZyBzID1cbiAgcmVhZF9maWxlX2xpbmVfZGV0YWlsIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKSAoTGV4aW5nLmZyb21fc3RyaW5nIHMpXG5sZXQgd3JpdGVfZmlsZV9saW5lID0gKFxuICBBcGlfdHlwZXNfai53cml0ZV9maWxlX2xpbmVcbilcbmxldCBzdHJpbmdfb2ZfZmlsZV9saW5lID8obGVuID0gMTAyNCkgeCA9XG4gIGxldCBvYiA9IEJ1ZmZlci5jcmVhdGUgbGVuIGluXG4gIHdyaXRlX2ZpbGVfbGluZSBvYiB4O1xuICBCdWZmZXIuY29udGVudHMgb2JcbmxldCByZWFkX2ZpbGVfbGluZSA9IChcbiAgQXBpX3R5cGVzX2oucmVhZF9maWxlX2xpbmVcbilcbmxldCBmaWxlX2xpbmVfb2Zfc3RyaW5nIHMgPVxuICByZWFkX2ZpbGVfbGluZSAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSkgKExleGluZy5mcm9tX3N0cmluZyBzKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuZXhjZXB0aW9uIEJhZFJlc3BvbnNlIG9mIE1waV9tZXNzYWdlX2oucmVzcG9uc2VfY29udGVudFxuXG5sZXQgb25fbWVzc2FnZSAobWFuYWdlciA6IEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24pXG4gICAgKHBvc3RfbWVzc2FnZSA6IHN0cmluZyAtPiB1bml0IEx3dC50KSAodGV4dF9tZXNzYWdlIDogc3RyaW5nKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgIE1waV9tZXNzYWdlX2oubWVzc2FnZV9vZl9zdHJpbmcgTXBpX21lc3NhZ2Vfai5yZWFkX3JlcXVlc3QgdGV4dF9tZXNzYWdlXG4gIGluXG4gIGxldCBoYW5kbGVyIDpcbiAgICAgICAgJ2EuXG4gICAgICAgICgnYSAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlX2NvbnRlbnQpIC0+ICdhIEFwaS5yZXN1bHQgLT4gdW5pdCBMd3QudCA9XG4gICBmdW4gcGFjayByZXN1bHQgLT5cbiAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICAgIHtcbiAgICAgICAgTXBpX21lc3NhZ2Vfai5pZCA9IG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5pZDtcbiAgICAgICAgTXBpX21lc3NhZ2Vfai5kYXRhID0gUmVzdWx0X3V0aWwubWFwIHBhY2sgcmVzdWx0O1xuICAgICAgfVxuICAgIGluXG4gICAgbGV0IHRleHQgOiBzdHJpbmcgPVxuICAgICAgTXBpX21lc3NhZ2Vfai5zdHJpbmdfb2ZfbWVzc2FnZSBNcGlfbWVzc2FnZV9qLndyaXRlX3Jlc3BvbnNlIG1lc3NhZ2VcbiAgICBpblxuICAgIHBvc3RfbWVzc2FnZSB0ZXh0XG4gIGluXG4gIG1hdGNoIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5kYXRhIHdpdGhcbiAgfCBgUHJvamVjdExvYWQgQXBpX3R5cGVzX3QueyBwYXR0ZXJuX3NoYXJpbmc7IGFzdDsgdmFyaWFibGVfb3ZlcndyaXR0ZW4gfSAtPlxuICAgIG1hbmFnZXIjc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuX3NoYXJpbmcgYXN0IHZhcmlhYmxlX292ZXJ3cml0dGVuXG4gICAgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgUHJvamVjdExvYWQpXG4gIHwgYFNpbXVsYXRpb25Db250aW51ZSBzaW11bGF0aW9uX3BhcmFtZXRlciAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jb250aW51ZSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gKCkgLT4gYFNpbXVsYXRpb25Db250aW51ZSlcbiAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGUgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvbkRlbGV0ZSlcbiAgfCBgU2ltdWxhdGlvbkRldGFpbEZpbGVMaW5lIGZpbGVfbGluZV9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIGZpbGVfbGluZV9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIGRpbl9pZCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRGV0YWlsRElOIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcGxvdF9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3QgcGxvdF9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkRldGFpbFBsb3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IHNuYXBzaG90X2lkXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25JbmZvIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm8gPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25JbmZvIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkVmZmljaWVuY3kgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZWZmaWNpZW5jeVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uRWZmaWNpZW5jeSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19maWxlX2xpbmVcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSByZXN1bHQpXG4gIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZGluXG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nRElOIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgPj49IGhhbmRsZXIgKGZ1biByZXN1bHQgLT4gYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3QgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uUGFyYW1ldGVyIHJlc3VsdClcbiAgfCBgU2ltdWxhdGlvblRyYWNlIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uVHJhY2UgcmVzdWx0KVxuICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPlxuICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9vdXRwdXRzX3ppcFxuICAgID4+PSBoYW5kbGVyIChmdW4gcmVzdWx0IC0+IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAoQmFzZTY0LmVuY29kZSByZXN1bHQpKVxuICB8IGBTaW11bGF0aW9uUGF1c2UgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fcGF1c2UgPj49IGhhbmRsZXIgKGZ1biAoKSAtPiBgU2ltdWxhdGlvblBhdXNlKVxuICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIC0+XG4gICAgbWFuYWdlciNzaW11bGF0aW9uX2ludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgID4+PSBoYW5kbGVyIChmdW4gcyAtPiBgU2ltdWxhdGlvbkludGVydmVudGlvbiBzKVxuICB8IGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgLT5cbiAgICBtYW5hZ2VyI3NpbXVsYXRpb25fc3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICA+Pj0gaGFuZGxlciAoZnVuIHJlc3VsdCAtPiBgU2ltdWxhdGlvblN0YXJ0IHJlc3VsdClcblxuY2xhc3MgdHlwZSB2aXJ0dWFsIG1hbmFnZXJfYmFzZV90eXBlID0gb2JqZWN0XG4gIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgbWVzc2FnZSA6XG4gICAgTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcblxuICBpbmhlcml0IEFwaS5tYW5hZ2VyX3NpbXVsYXRpb25cbmVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfYmFzZSAoKSA6IG1hbmFnZXJfYmFzZV90eXBlID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgbWVzc2FnZVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCAtPiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC50XG5cbiAgICBtZXRob2Qgc2VjcmV0X3NpbXVsYXRpb25fbG9hZCBwYXR0ZXJuX3NoYXJpbmcgYXN0IHZhcmlhYmxlX292ZXJ3cml0dGVuXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZVxuICAgICAgICAoYFByb2plY3RMb2FkXG4gICAgICAgICAgQXBpX3R5cGVzX3QueyBwYXR0ZXJuX3NoYXJpbmc7IGFzdDsgdmFyaWFibGVfb3ZlcndyaXR0ZW4gfSlcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0TG9hZCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jb250aW51ZSAocGF1c2VfY29uZGl0aW9uIDogc3RyaW5nKVxuICAgICAgICA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uQ29udGludWUgcGF1c2VfY29uZGl0aW9uKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25Db250aW51ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZWxldGUgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uRGVsZXRlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZmlsZV9saW5lIChmaWxlX2xpbmVfaWQgOiBzdHJpbmcpXG4gICAgICAgIDogc3RyaW5nIGxpc3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxGaWxlTGluZSBmaWxlX2xpbmVfbGlzdCAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBmaWxlX2xpbmVfbGlzdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfZGluIChmbHV4X21hcF9pZCA6IEFwaV90eXBlc190LmRpbl9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5kaW4gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsRElOIGZsdXhfbWFwX2lkKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxESU4gZmx1eF9tYXAgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmx1eF9tYXApXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgICAgIDogQXBpX3R5cGVzX2oubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25EZXRhaWxMb2dNZXNzYWdlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgbG9nX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgbG9nX21lc3NhZ2UpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX2oucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogQXBpX3R5cGVzX2oucGxvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSAoYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3RfcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3QgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcGxvdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9kZXRhaWxfc25hcHNob3QgKHNuYXBzaG90X2lkIDogQXBpX3R5cGVzX2ouc25hcHNob3RfaWQpXG4gICAgICAgIDogQXBpX3R5cGVzX2ouc25hcHNob3QgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgKGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3Qgc25hcHNob3RfaWQpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbFNuYXBzaG90IHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNuYXBzaG90KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2luZm8gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25JbmZvXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkluZm8gc2ltdWxhdGlvbl9zdGF0dXMgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2ltdWxhdGlvbl9zdGF0dXMpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZWZmaWNpZW5jeSA6IENvdW50ZXIuRWZmaWNpZW5jeS50IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uRWZmaWNpZW5jeVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25FZmZpY2llbmN5IGVmZmljaWVuY3kgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZWZmaWNpZW5jeSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICA6IEFwaV90eXBlc19qLmZpbGVfbGluZV9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIGBTaW11bGF0aW9uQ2F0YWxvZ0ZpbGVMaW5lXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZSBpbmZvIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGluZm8pXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gOiBBcGlfdHlwZXNfai5kaW5fY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbkNhdGFsb2dESU5cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ0RJTiBpbmZvIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIGluZm8pXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICA6IEFwaV90eXBlc19qLnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25DYXRhbG9nU25hcHNob3RcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90IGluZm8gLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgaW5mbylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXVzZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25QYXVzZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25QYXVzZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9yYXdfdHJhY2UgOiBzdHJpbmcgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgYFNpbXVsYXRpb25UcmFjZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25UcmFjZSByZXN1bHQgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcmVzdWx0KVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX291dHB1dHNfemlwID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvbk91dHB1dHNaaXBcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCByZXN1bHQgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEJhc2U2NC5kZWNvZGUgcmVzdWx0KSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlciBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjbWVzc2FnZSBgU2ltdWxhdGlvblBhcmFtZXRlclxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25QYXJhbWV0ZXIgcmVzdWx0IC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHJlc3VsdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pXG4gICAgICAgIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvbkludGVydmVudGlvbiBzaW11bGF0aW9uX2ludGVydmVudGlvbilcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHMgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcylcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydFxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2FydGlmYWN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgc2VsZiNtZXNzYWdlIChgU2ltdWxhdGlvblN0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFNpbXVsYXRpb25TdGFydCBzaW11bGF0aW9uX2lkIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHNpbXVsYXRpb25faWQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuICBlbmRcblxubW9kdWxlIEludE1hcCA9IE1vZHMuSW50TWFwXG5cbnR5cGUgY29udGV4dCA9IHsgbWFpbGJveGVzOiBNcGlfbWVzc2FnZV9qLnJlc3BvbnNlIEx3dC51IEludE1hcC50OyBpZDogaW50IH1cblxuY2xhc3MgdHlwZSB2aXJ0dWFsIG1hbmFnZXJfbXBpX3R5cGUgPSBvYmplY3RcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBzbGVlcCA6IGZsb2F0IC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBwb3N0X21lc3NhZ2UgOiBzdHJpbmcgLT4gdW5pdFxuICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnRcbiAgbWV0aG9kIHByaXZhdGUgcmVjZWl2ZSA6IHN0cmluZyAtPiB1bml0XG4gIGluaGVyaXQgQXBpLm1hbmFnZXJfc2ltdWxhdGlvblxuICBtZXRob2QgcHJpdmF0ZSBzaW1faXNfY29tcHV0aW5nIDogYm9vbFxuICBtZXRob2QgdmlydHVhbCBpc19ydW5uaW5nIDogYm9vbFxuZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlciAoKSA6IG1hbmFnZXJfbXBpX3R5cGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgY29udGV4dCA9IHsgbWFpbGJveGVzID0gSW50TWFwLmVtcHR5OyBpZCA9IDAgfVxuICAgIG1ldGhvZCBwcml2YXRlIHZpcnR1YWwgc2xlZXAgOiBmbG9hdCAtPiB1bml0IEx3dC50XG4gICAgbWV0aG9kIHByaXZhdGUgdmlydHVhbCBwb3N0X21lc3NhZ2UgOiBzdHJpbmcgLT4gdW5pdFxuICAgIG1ldGhvZCB2aXJ0dWFsIGlzX3J1bm5pbmcgOiBib29sXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByZWNlaXZlIChyZXNwb25zZV90ZXh0IDogc3RyaW5nKSA9XG4gICAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTXBpX21lc3NhZ2Vfai5tZXNzYWdlID1cbiAgICAgICAgTXBpX21lc3NhZ2Vfai5tZXNzYWdlX29mX3N0cmluZyBNcGlfbWVzc2FnZV9qLnJlYWRfcmVzcG9uc2VcbiAgICAgICAgICByZXNwb25zZV90ZXh0XG4gICAgICBpblxuICAgICAgbWF0Y2ggSW50TWFwLnBvcCBtZXNzYWdlLk1waV9tZXNzYWdlX2ouaWQgY29udGV4dC5tYWlsYm94ZXMgd2l0aFxuICAgICAgfCBTb21lIHZhbHVlLCBtYWlsYm94ZXMgLT5cbiAgICAgICAgbGV0ICgpID0gY29udGV4dCA8LSB7IGNvbnRleHQgd2l0aCBtYWlsYm94ZXMgfSBpblxuICAgICAgICBMd3Qud2FrZXVwIHZhbHVlIG1lc3NhZ2UuTXBpX21lc3NhZ2Vfai5kYXRhXG4gICAgICB8IE5vbmUsIG1haWxib3hlcyAtPiBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIG1haWxib3hlcyB9XG5cbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlIChyZXF1ZXN0IDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0KVxuICAgICAgICA6IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnQgPVxuICAgICAgaWYgc2VsZiNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICBsZXQgcmVzdWx0LCBmZWVkZXIgPSBMd3QudGFzayAoKSBpblxuICAgICAgICBsZXQgKCkgPSBjb250ZXh0IDwtIHsgY29udGV4dCB3aXRoIGlkID0gY29udGV4dC5pZCArIDEgfSBpblxuICAgICAgICBsZXQgbWVzc2FnZSA6IE1waV9tZXNzYWdlX2oucmVxdWVzdCBNcGlfbWVzc2FnZV9qLm1lc3NhZ2UgPVxuICAgICAgICAgIHsgTXBpX21lc3NhZ2Vfai5pZCA9IGNvbnRleHQuaWQ7IE1waV9tZXNzYWdlX2ouZGF0YSA9IHJlcXVlc3QgfVxuICAgICAgICBpblxuICAgICAgICBsZXQgbWVzc2FnZV90ZXh0IDogc3RyaW5nID1cbiAgICAgICAgICBNcGlfbWVzc2FnZV9qLnN0cmluZ19vZl9tZXNzYWdlIE1waV9tZXNzYWdlX2oud3JpdGVfcmVxdWVzdCBtZXNzYWdlXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9IHNlbGYjcG9zdF9tZXNzYWdlIG1lc3NhZ2VfdGV4dCBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGNvbnRleHQgPC1cbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgY29udGV4dCB3aXRoXG4gICAgICAgICAgICAgIG1haWxib3hlcyA9IEludE1hcC5hZGQgY29udGV4dC5pZCBmZWVkZXIgY29udGV4dC5tYWlsYm94ZXM7XG4gICAgICAgICAgICB9XG4gICAgICAgIGluXG4gICAgICAgIHJlc3VsdFxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBcIkthcHBhIGhhcyBkaWVkXCIpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzaW1faXNfY29tcHV0aW5nID0gbm90IChJbnRNYXAuaXNfZW1wdHkgY29udGV4dC5tYWlsYm94ZXMpXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2Jhc2UgKClcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIHNpbXVsYXRpb25fZGV0YWlsX291dHB1dCA9XG4gICggQXBpX3R5cGVzX3QucGxvdCBvcHRpb24sXG4gICAgKHN0cmluZyAqIEFwaV90eXBlc190LmRpbikgbGlzdCxcbiAgICBzdHJpbmcgbGlzdCBNb2RzLlN0cmluZ01hcC50LFxuICAgIEFwaV90eXBlc190LnNuYXBzaG90IE1vZHMuU3RyaW5nTWFwLnQsXG4gICAgc3RyaW5nLFxuICAgIHN0cmluZyApXG4gIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0XG5cbmxldCBhcGlfc25hcHNob3RfZG90IChzbmFwc2hvdCA6IEFwaV90eXBlc190LnNuYXBzaG90KSA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9kb3Rfc25hcHNob3QgP3V1aWQ6Tm9uZSkgc25hcHNob3RcblxubGV0IGFwaV9zbmFwc2hvdF9rYXBwYSAoc25hcHNob3QgOiBEYXRhLnNuYXBzaG90KSA6IHN0cmluZyA9XG4gIEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIiAoRGF0YS5wcmludF9zbmFwc2hvdCA/dXVpZDpOb25lKSBzbmFwc2hvdFxuXG5sZXQgYXBpX3NpbXVsYXRpb25fc3RhdHVzIChwcm9ncmVzcyA6IEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3MpXG4gICAgKGRldGFpbCA6IHNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2luZm8gPVxuICBsZXQgb3V0cHV0IDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvX291dHB1dCA9XG4gICAge1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9XG4gICAgICAgIChtYXRjaCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICAgIHwgTm9uZSAtPiAwXG4gICAgICAgIHwgU29tZSBwbG90IC0+IExpc3QubGVuZ3RoIHBsb3QuRGF0YS5wbG90X3Nlcmllcyk7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9kaW5zID1cbiAgICAgICAgTGlzdC5sZW5ndGggZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnM7XG4gICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuc2l6ZSBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lcztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyA9XG4gICAgICAgIE1vZHMuU3RyaW5nTWFwLnNpemUgZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cztcbiAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyA9ICgpO1xuICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID1cbiAgICAgICAgU3RyaW5nLmxlbmd0aCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzO1xuICAgIH1cbiAgaW5cbiAge1xuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19wcm9ncmVzcyA9IHByb2dyZXNzO1xuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXQgPSBvdXRwdXQ7XG4gIH1cblxuKCogcmV0dXJuIHRoZSBhZ2VudCBjb3VudCAqKVxubGV0IGFnZW50X2NvdW50IChzcGVjaWVzIDogQXBpX3R5cGVzX3Quc2l0ZV9ncmFwaCkgOiBpbnQgPSBBcnJheS5sZW5ndGggc3BlY2llc1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAoRnJvbSkgVGhlIENhbWxaaXAgbGlicmFyeSAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogICAgICAgICAgICBYYXZpZXIgTGVyb3ksIHByb2pldCBDcmlzdGFsLCBJTlJJQSBSb2NxdWVuY291cnQgICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogIENvcHlyaWdodCAyMDAxIEluc3RpdHV0IE5hdGlvbmFsIGRlIFJlY2hlcmNoZSBlbiBJbmZvcm1hdGlxdWUgZXQgICAqKVxuKCogIGVuIEF1dG9tYXRpcXVlLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCAgICAqKVxuKCogIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCB3aXRoICAgICAqKVxuKCogIHRoZSBzcGVjaWFsIGV4Y2VwdGlvbiBvbiBsaW5raW5nIGRlc2NyaWJlZCBpbiBmaWxlIExJQ0VOU0UuICAgICAgICAqKVxuKCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG4oKiBXcml0ZSB1bmVmZmljaWVudGx5IGJ1dCBpbiBwdXJlIE9DYW1sIHVuY29tcHJlc3NlZCBaSVAgYXJjaGl2ZXMgKilcblxuZXhjZXB0aW9uIEVycm9yIG9mIHN0cmluZyAqIHN0cmluZyAqIHN0cmluZ1xuXG5sZXQgd3JpdGUxIG9jIG4gPSBCaWdidWZmZXIuYWRkX2NoYXIgb2MgKENoYXIudW5zYWZlX2NociBuKVxuXG5sZXQgd3JpdGUyIG9jIG4gPVxuICB3cml0ZTEgb2MgbjtcbiAgd3JpdGUxIG9jIChuIGxzciA4KVxuXG5sZXQgd3JpdGU0IG9jIG4gPVxuICB3cml0ZTIgb2MgKEludDMyLnRvX2ludCBuKTtcbiAgd3JpdGUyIG9jIChJbnQzMi50b19pbnQgKEludDMyLnNoaWZ0X3JpZ2h0X2xvZ2ljYWwgbiAxNikpXG5cbmxldCB3cml0ZTRfaW50IG9jIG4gPVxuICB3cml0ZTIgb2MgbjtcbiAgd3JpdGUyIG9jIChuIGxzciAxNilcblxubGV0IHdyaXRlc3RyaW5nIG9jIHMgPSBCaWdidWZmZXIuYWRkX3N0cmluZyBvYyBzXG5cbnR5cGUgY29tcHJlc3Npb25fbWV0aG9kID0gU3RvcmVkXG5cbnR5cGUgZW50cnkgPSB7XG4gIGZpbGVuYW1lOiBzdHJpbmc7XG4gIGV4dHJhOiBzdHJpbmc7XG4gIGNvbW1lbnQ6IHN0cmluZztcbiAgbWV0aGQ6IGNvbXByZXNzaW9uX21ldGhvZDtcbiAgbXRpbWU6IGZsb2F0O1xuICBjcmM6IGludDMyO1xuICB1bmNvbXByZXNzZWRfc2l6ZTogaW50O1xuICBjb21wcmVzc2VkX3NpemU6IGludDtcbiAgKCppc19kaXJlY3Rvcnk6IGJvb2w7KilcbiAgZmlsZV9vZmZzZXQ6IGludDMyO1xufVxuXG50eXBlIG91dF9maWxlID0ge1xuICBvZl9maWxlbmFtZTogc3RyaW5nO1xuICBvZl9jaGFubmVsOiBCaWdidWZmZXIudDtcbiAgbXV0YWJsZSBvZl9lbnRyaWVzOiBlbnRyeSBsaXN0O1xuICBvZl9jb21tZW50OiBzdHJpbmc7XG59XG5cbigqbGV0IGZpbGVuYW1lX2lzX2RpcmVjdG9yeSBuYW1lID1cbiAgU3RyaW5nLmxlbmd0aCBuYW1lID4gMCAmJiBuYW1lLltTdHJpbmcubGVuZ3RoIG5hbWUgLSAxXSA9ICcvJyopXG5cbigqIENvbnZlcnQgYmV0d2VlbiBVbml4IGRhdGVzIGFuZCBET1MgZGF0ZXMgKilcblxubGV0IGRvc3RpbWVfb2ZfdW5peHRpbWUgdCA9XG4gIGxldCB0bSA9IFVuaXgubG9jYWx0aW1lIHQgaW5cbiAgKCAodG0uVW5peC50bV9zZWMgbHNyIDEpICsgKHRtLlVuaXgudG1fbWluIGxzbCA1KSArICh0bS5Vbml4LnRtX2hvdXIgbHNsIDExKSxcbiAgICB0bS5Vbml4LnRtX21kYXlcbiAgICArICgodG0uVW5peC50bV9tb24gKyAxKSBsc2wgNSlcbiAgICArICgodG0uVW5peC50bV95ZWFyIC0gODApIGxzbCA5KSApXG5cbigqIE9wZW4gYSBaSVAgZmlsZSBmb3Igd3JpdGluZyAqKVxuXG5sZXQgb3Blbl9vdXQgPyhjb21tZW50ID0gXCJcIikgZmlsZW5hbWUgPVxuICBpZiBTdHJpbmcubGVuZ3RoIGNvbW1lbnQgPj0gMHgxMDAwMCB0aGVuXG4gICAgcmFpc2UgKEVycm9yIChmaWxlbmFtZSwgXCJcIiwgXCJjb21tZW50IHRvbyBsb25nXCIpKTtcbiAge1xuICAgIG9mX2ZpbGVuYW1lID0gZmlsZW5hbWU7XG4gICAgb2ZfY2hhbm5lbCA9IEJpZ2J1ZmZlci5jcmVhdGUgODE5MjtcbiAgICBvZl9lbnRyaWVzID0gW107XG4gICAgb2ZfY29tbWVudCA9IGNvbW1lbnQ7XG4gIH1cblxuKCogQ2xvc2UgYSBaSVAgZmlsZSBmb3Igd3JpdGluZy4gIEFkZCBjZW50cmFsIGRpcmVjdG9yeS4gKilcblxubGV0IHdyaXRlX2RpcmVjdG9yeV9lbnRyeSBvYyBlID1cbiAgd3JpdGU0IG9jIChJbnQzMi5vZl9pbnQgMHgwMjAxNGI1MCk7XG4gICgqIHNpZ25hdHVyZSAqKVxuICBsZXQgdmVyc2lvbiA9XG4gICAgbWF0Y2ggZS5tZXRoZCB3aXRoXG4gICAgfCBTdG9yZWQgLT4gMTBcbiAgaW5cbiAgd3JpdGUyIG9jIHZlcnNpb247XG4gICgqIHZlcnNpb24gbWFkZSBieSAqKVxuICB3cml0ZTIgb2MgdmVyc2lvbjtcbiAgKCogdmVyc2lvbiBuZWVkZWQgdG8gZXh0cmFjdCAqKVxuICB3cml0ZTIgb2MgODtcbiAgKCogZmxhZ3MgKilcbiAgd3JpdGUyIG9jXG4gICAgKG1hdGNoIGUubWV0aGQgd2l0aFxuICAgIHwgU3RvcmVkIC0+IDApO1xuICAoKiBtZXRob2QgKilcbiAgbGV0IHRpbWUsIGRhdGUgPSBkb3N0aW1lX29mX3VuaXh0aW1lIGUubXRpbWUgaW5cbiAgd3JpdGUyIG9jIHRpbWU7XG4gICgqIGxhc3QgbW9kIHRpbWUgKilcbiAgd3JpdGUyIG9jIGRhdGU7XG4gICgqIGxhc3QgbW9kIGRhdGUgKilcbiAgd3JpdGU0IG9jIGUuY3JjO1xuICAoKiBDUkMzMiAqKVxuICB3cml0ZTRfaW50IG9jIGUuY29tcHJlc3NlZF9zaXplO1xuICAoKiBjb21wcmVzc2VkIHNpemUgKilcbiAgd3JpdGU0X2ludCBvYyBlLnVuY29tcHJlc3NlZF9zaXplO1xuICAoKiB1bmNvbXByZXNzZWQgc2l6ZSAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5maWxlbmFtZSk7XG4gICgqIGZpbGVuYW1lIGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5leHRyYSk7XG4gICgqIGV4dHJhIGxlbmd0aCAqKVxuICB3cml0ZTIgb2MgKFN0cmluZy5sZW5ndGggZS5jb21tZW50KTtcbiAgKCogY29tbWVudCBsZW5ndGggKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGRpc2sgbnVtYmVyIHN0YXJ0ICopXG4gIHdyaXRlMiBvYyAwO1xuICAoKiBpbnRlcm5hbCBhdHRyaWJ1dGVzICopXG4gIHdyaXRlNF9pbnQgb2MgMDtcbiAgKCogZXh0ZXJuYWwgYXR0cmlidXRlcyAqKVxuICB3cml0ZTQgb2MgZS5maWxlX29mZnNldDtcbiAgKCogb2Zmc2V0IG9mIGxvY2FsIGhlYWRlciAqKVxuICB3cml0ZXN0cmluZyBvYyBlLmZpbGVuYW1lO1xuICAoKiBmaWxlbmFtZSAqKVxuICB3cml0ZXN0cmluZyBvYyBlLmV4dHJhO1xuICAoKiBleHRyYSBpbmZvICopXG4gIHdyaXRlc3RyaW5nIG9jIGUuY29tbWVudCAoKiBmaWxlIGNvbW1lbnQgKilcblxubGV0IGNsb3NlX291dCBvZmlsZSA9XG4gIGxldCBvYyA9IG9maWxlLm9mX2NoYW5uZWwgaW5cbiAgbGV0IHN0YXJ0X2NkID0gQmlnYnVmZmVyLmxlbmd0aCBvYyBpblxuICBMaXN0Lml0ZXIgKHdyaXRlX2RpcmVjdG9yeV9lbnRyeSBvYykgKExpc3QucmV2IG9maWxlLm9mX2VudHJpZXMpO1xuICBsZXQgY2Rfc2l6ZSA9IEJpZ2J1ZmZlci5sZW5ndGggb2MgLSBzdGFydF9jZCBpblxuICBsZXQgbnVtX2VudHJpZXMgPSBMaXN0Lmxlbmd0aCBvZmlsZS5vZl9lbnRyaWVzIGluXG4gIGlmIG51bV9lbnRyaWVzID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIFwiXCIsIFwidG9vIG1hbnkgZW50cmllc1wiKSk7XG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDYwNTRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgd3JpdGUyIG9jIDA7XG4gICgqIGRpc2sgbnVtYmVyICopXG4gIHdyaXRlMiBvYyAwO1xuICAoKiBudW1iZXIgb2YgZGlzayB3aXRoIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlMiBvYyBudW1fZW50cmllcztcbiAgKCogIyBlbnRyaWVzIGluIHRoaXMgZGlzayAqKVxuICB3cml0ZTIgb2MgbnVtX2VudHJpZXM7XG4gICgqICMgZW50cmllcyBpbiBjZW50cmFsIGRpciAqKVxuICB3cml0ZTRfaW50IG9jIGNkX3NpemU7XG4gICgqIHNpemUgb2YgY2VudHJhbCBkaXIgKilcbiAgd3JpdGU0X2ludCBvYyBzdGFydF9jZDtcbiAgKCogb2Zmc2V0IG9mIGNlbnRyYWwgZGlyICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBvZmlsZS5vZl9jb21tZW50KTtcbiAgKCogbGVuZ3RoIG9mIGNvbW1lbnQgKilcbiAgd3JpdGVzdHJpbmcgb2Mgb2ZpbGUub2ZfY29tbWVudDtcbiAgKCogY29tbWVudCAqKVxuICBCaWdidWZmZXIuY29udGVudHMgb2NcblxuKCogV3JpdGUgYSBsb2NhbCBmaWxlIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5ICopXG5cbmxldCBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgZmlsZW5hbWUgPVxuICBpZiBsZXZlbCA8PiAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBmaWxlbmFtZSwgXCJmYWtlX3ppcCBjYW5ub3QgY29tcHJlc3NcIikpO1xuICBpZiBTdHJpbmcubGVuZ3RoIGZpbGVuYW1lID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImZpbGVuYW1lIHRvbyBsb25nXCIpKTtcbiAgaWYgU3RyaW5nLmxlbmd0aCBleHRyYSA+PSAweDEwMDAwIHRoZW5cbiAgICByYWlzZSAoRXJyb3IgKG9maWxlLm9mX2ZpbGVuYW1lLCBmaWxlbmFtZSwgXCJleHRyYSBkYXRhIHRvbyBsb25nXCIpKTtcbiAgaWYgU3RyaW5nLmxlbmd0aCBjb21tZW50ID49IDB4MTAwMDAgdGhlblxuICAgIHJhaXNlIChFcnJvciAob2ZpbGUub2ZfZmlsZW5hbWUsIGZpbGVuYW1lLCBcImNvbW1lbnQgdG9vIGxvbmdcIikpO1xuICBsZXQgb2MgPSBvZmlsZS5vZl9jaGFubmVsIGluXG4gIGxldCBwb3MgPSBCaWdidWZmZXIubGVuZ3RoIG9jIGluXG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDQwMzRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgbGV0IHZlcnNpb24gPVxuICAgIGlmIGxldmVsID0gMCB0aGVuXG4gICAgICAxMFxuICAgIGVsc2VcbiAgICAgIDIwXG4gIGluXG4gIHdyaXRlMiBvYyB2ZXJzaW9uO1xuICAoKiB2ZXJzaW9uIG5lZWRlZCB0byBleHRyYWN0ICopXG4gIHdyaXRlMiBvYyA4O1xuICAoKiBmbGFncyAqKVxuICB3cml0ZTIgb2NcbiAgICAoaWYgbGV2ZWwgPSAwIHRoZW5cbiAgICAgICAwXG4gICAgIGVsc2VcbiAgICAgICA4KTtcbiAgKCogbWV0aG9kICopXG4gIGxldCB0aW1lLCBkYXRlID0gZG9zdGltZV9vZl91bml4dGltZSBtdGltZSBpblxuICB3cml0ZTIgb2MgdGltZTtcbiAgKCogbGFzdCBtb2QgdGltZSAqKVxuICB3cml0ZTIgb2MgZGF0ZTtcbiAgKCogbGFzdCBtb2QgZGF0ZSAqKVxuICB3cml0ZTQgb2MgSW50MzIuemVybztcbiAgKCogQ1JDMzIgLSB0byBiZSBmaWxsZWQgbGF0ZXIgKilcbiAgd3JpdGU0X2ludCBvYyAwO1xuICAoKiBjb21wcmVzc2VkIHNpemUgLSBsYXRlciAqKVxuICB3cml0ZTRfaW50IG9jIDA7XG4gICgqIHVuY29tcHJlc3NlZCBzaXplIC0gbGF0ZXIgKilcbiAgd3JpdGUyIG9jIChTdHJpbmcubGVuZ3RoIGZpbGVuYW1lKTtcbiAgKCogZmlsZW5hbWUgbGVuZ3RoICopXG4gIHdyaXRlMiBvYyAoU3RyaW5nLmxlbmd0aCBleHRyYSk7XG4gICgqIGV4dHJhIGxlbmd0aCAqKVxuICB3cml0ZXN0cmluZyBvYyBmaWxlbmFtZTtcbiAgKCogZmlsZW5hbWUgKilcbiAgd3JpdGVzdHJpbmcgb2MgZXh0cmE7XG4gICgqIGV4dHJhIGluZm8gKilcbiAge1xuICAgIGZpbGVuYW1lO1xuICAgIGV4dHJhO1xuICAgIGNvbW1lbnQ7XG4gICAgbWV0aGQgPSBTdG9yZWQ7XG4gICAgbXRpbWU7XG4gICAgY3JjID0gSW50MzIuemVybztcbiAgICB1bmNvbXByZXNzZWRfc2l6ZSA9IDA7XG4gICAgY29tcHJlc3NlZF9zaXplID0gMDtcbiAgICAoKmlzX2RpcmVjdG9yeSA9IGZpbGVuYW1lX2lzX2RpcmVjdG9yeSBmaWxlbmFtZTsqKVxuICAgIGZpbGVfb2Zmc2V0ID0gSW50MzIub2ZfaW50IHBvcztcbiAgfVxuXG4oKiBXcml0ZSBhIGRhdGEgZGVzY3JpcHRvciBhbmQgdXBkYXRlIHRoZSBlbnRyeSAqKVxuXG5sZXQgYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSBjcmMgY29tcHJfc2l6ZSB1bmNvbXByX3NpemUgZW50cnkgPVxuICBsZXQgb2MgPSBvZmlsZS5vZl9jaGFubmVsIGluXG4gIHdyaXRlNCBvYyAoSW50MzIub2ZfaW50IDB4MDgwNzRiNTApO1xuICAoKiBzaWduYXR1cmUgKilcbiAgd3JpdGU0IG9jIGNyYztcbiAgKCogQ1JDICopXG4gIHdyaXRlNF9pbnQgb2MgY29tcHJfc2l6ZTtcbiAgKCogY29tcHJlc3NlZCBzaXplICopXG4gIHdyaXRlNF9pbnQgb2MgdW5jb21wcl9zaXplO1xuICAoKiB1bmNvbXByZXNzZWQgc2l6ZSAqKVxuICB7XG4gICAgZW50cnkgd2l0aFxuICAgIGNyYztcbiAgICB1bmNvbXByZXNzZWRfc2l6ZSA9IHVuY29tcHJfc2l6ZTtcbiAgICBjb21wcmVzc2VkX3NpemUgPSBjb21wcl9zaXplO1xuICB9XG5cbmxldCB1cGRhdGVfY3JjIGNyYyBidWYgc3RhcnQgbGVuID0gQ3JjMzIuc3RyaW5nIH5jcmMgYnVmIHN0YXJ0IGxlblxuXG4oKiBBZGQgYW4gZW50cnkgd2l0aCB0aGUgY29udGVudHMgb2YgYSBzdHJpbmcgKilcblxubGV0IGFkZF9lbnRyeSBkYXRhIG9maWxlID8oZXh0cmEgPSBcIlwiKSA/KGNvbW1lbnQgPSBcIlwiKSA/KGxldmVsID0gMClcbiAgICA/KG10aW1lID0gVW5peC50aW1lICgpKSBuYW1lID1cbiAgbGV0IGUgPSBhZGRfZW50cnlfaGVhZGVyIG9maWxlIGV4dHJhIGNvbW1lbnQgbGV2ZWwgbXRpbWUgbmFtZSBpblxuICBsZXQgY3JjID0gdXBkYXRlX2NyYyBJbnQzMi56ZXJvIGRhdGEgMCAoU3RyaW5nLmxlbmd0aCBkYXRhKSBpblxuICBsZXQgY29tcHJfc2l6ZSA9XG4gICAgbWF0Y2ggbGV2ZWwgd2l0aFxuICAgIHwgMCAtPlxuICAgICAgQmlnYnVmZmVyLmFkZF9zdWJzdHJpbmcgb2ZpbGUub2ZfY2hhbm5lbCBkYXRhIDAgKFN0cmluZy5sZW5ndGggZGF0YSk7XG4gICAgICBTdHJpbmcubGVuZ3RoIGRhdGFcbiAgICB8IF8gLT4gcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJjb21wcmVzc2lvbiBlcnJvclwiKSlcbiAgaW5cbiAgbGV0IGUnID0gYWRkX2RhdGFfZGVzY3JpcHRvciBvZmlsZSBjcmMgY29tcHJfc2l6ZSAoU3RyaW5nLmxlbmd0aCBkYXRhKSBlIGluXG4gIG9maWxlLm9mX2VudHJpZXMgPC0gZScgOjogb2ZpbGUub2ZfZW50cmllc1xuXG4oKlxuKCogQWRkIGFuIGVudHJ5IHdpdGggdGhlIGNvbnRlbnRzIG9mIGFuIGluIGNoYW5uZWwgKilcblxubGV0IGNvcHlfY2hhbm5lbF90b19lbnRyeSBpYyBvZmlsZSA/KGV4dHJhID0gXCJcIikgPyhjb21tZW50ID0gXCJcIilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyhsZXZlbCA9IDApID8obXRpbWUgPSBVbml4LnRpbWUoKSkgbmFtZSA9XG4gIGxldCBlID0gYWRkX2VudHJ5X2hlYWRlciBvZmlsZSBleHRyYSBjb21tZW50IGxldmVsIG10aW1lIG5hbWUgaW5cbiAgbGV0IGNyYyA9IHJlZiBJbnQzMi56ZXJvIGluXG4gIGxldCAoY29tcHJfc2l6ZSwgdW5jb21wcl9zaXplKSA9XG4gICAgbWF0Y2ggbGV2ZWwgd2l0aFxuICAgICAgMCAtPlxuICAgICAgICBsZXQgYnVmID0gQnl0ZXMuY3JlYXRlIDQwOTYgaW5cbiAgICAgICAgbGV0IHJlYyBjb3B5IHN6ID1cbiAgICAgICAgICBsZXQgciA9IGlucHV0IGljIGJ1ZiAwIChCeXRlcy5sZW5ndGggYnVmKSBpblxuICAgICAgICAgIGlmIHIgPSAwIHRoZW4gc3ogZWxzZSBiZWdpblxuICAgICAgICAgICAgY3JjIDo9IHVwZGF0ZV9jcmMgIWNyYyBidWYgMCByO1xuICAgICAgICAgICAgQml0QnVmZmVyLmFkZF9zdWJzdHJpbmcgb2ZpbGUub2ZfY2hhbm5lbCBidWYgMCByO1xuICAgICAgICAgICAgY29weSAoc3ogKyByKVxuICAgICAgICAgIGVuZCBpblxuICAgICAgICBsZXQgc2l6ZSA9IGNvcHkgMCBpblxuICAgICAgICAoc2l6ZSwgc2l6ZSlcbiAgICB8IF8gLT4gcmFpc2UgKEVycm9yKG9maWxlLm9mX2ZpbGVuYW1lLCBuYW1lLCBcImNvbXByZXNzaW9uIGVycm9yXCIpKSBpblxuICBsZXQgZScgPSBhZGRfZGF0YV9kZXNjcmlwdG9yIG9maWxlICFjcmMgY29tcHJfc2l6ZSB1bmNvbXByX3NpemUgZSBpblxuICBvZmlsZS5vZl9lbnRyaWVzIDwtIGUnIDo6IG9maWxlLm9mX2VudHJpZXNcblxuKCogQWRkIGFuIGVudHJ5IHdpdGggdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSAqKVxuXG5sZXQgY29weV9maWxlX3RvX2VudHJ5IGluZmlsZW5hbWUgb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyhsZXZlbCA9IDApID9tdGltZSBuYW1lID1cbiAgbGV0IGljID0gb3Blbl9pbl9iaW4gaW5maWxlbmFtZSBpblxuICBsZXQgbXRpbWUnID1cbiAgICBtYXRjaCBtdGltZSB3aXRoXG4gICAgICBTb21lIHQgLT4gbXRpbWVcbiAgICB8IE5vbmUgLT5cbiAgICAgICAgdHJ5IFNvbWUoKFVuaXguc3RhdCBpbmZpbGVuYW1lKS5Vbml4LnN0X210aW1lKVxuICAgICAgICB3aXRoIFVuaXguVW5peF9lcnJvcihfLF8sXykgLT4gTm9uZSBpblxuICB0cnlcbiAgICBjb3B5X2NoYW5uZWxfdG9fZW50cnkgaWMgb2ZpbGUgfmV4dHJhIH5jb21tZW50IH5sZXZlbCA/bXRpbWU6bXRpbWUnIG5hbWU7XG4gICAgUGVydmFzaXZlcy5jbG9zZV9pbiBpY1xuICB3aXRoIHggLT5cbiAgICBQZXJ2YXNpdmVzLmNsb3NlX2luIGljOyByYWlzZSB4XG4qKVxuXG4oKiBBZGQgYW4gZW50cnkgd2hvc2UgY29udGVudCB3aWxsIGJlIHByb2R1Y2VkIGJ5IHRoZSBjYWxsZXIgKilcblxubGV0IGFkZF9lbnRyeV9nZW5lcmF0b3Igb2ZpbGUgPyhleHRyYSA9IFwiXCIpID8oY29tbWVudCA9IFwiXCIpID8obGV2ZWwgPSAwKVxuICAgID8obXRpbWUgPSBVbml4LnRpbWUgKCkpIG5hbWUgPVxuICBsZXQgZSA9IGFkZF9lbnRyeV9oZWFkZXIgb2ZpbGUgZXh0cmEgY29tbWVudCBsZXZlbCBtdGltZSBuYW1lIGluXG4gIGxldCBjcmMgPSByZWYgSW50MzIuemVybyBpblxuICBsZXQgY29tcHJfc2l6ZSA9IHJlZiAwIGluXG4gIGxldCB1bmNvbXByX3NpemUgPSByZWYgMCBpblxuICBsZXQgZmluaXNoZWQgPSByZWYgZmFsc2UgaW5cbiAgbGV0IGNoZWNrICgpID1cbiAgICBpZiAhZmluaXNoZWQgdGhlblxuICAgICAgcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJlbnRyeSBhbHJlYWR5IGZpbmlzaGVkXCIpKVxuICBpblxuICBsZXQgZmluaXNoICgpID1cbiAgICBmaW5pc2hlZCA6PSB0cnVlO1xuICAgIGxldCBlJyA9IGFkZF9kYXRhX2Rlc2NyaXB0b3Igb2ZpbGUgIWNyYyAhY29tcHJfc2l6ZSAhdW5jb21wcl9zaXplIGUgaW5cbiAgICBvZmlsZS5vZl9lbnRyaWVzIDwtIGUnIDo6IG9maWxlLm9mX2VudHJpZXNcbiAgaW5cbiAgbWF0Y2ggbGV2ZWwgd2l0aFxuICB8IDAgLT5cbiAgICAoIChmdW4gYnVmIHBvcyBsZW4gLT5cbiAgICAgICAgY2hlY2sgKCk7XG4gICAgICAgIEJpZ2J1ZmZlci5hZGRfc3ViYnl0ZXMgb2ZpbGUub2ZfY2hhbm5lbCBidWYgcG9zIGxlbjtcbiAgICAgICAgY29tcHJfc2l6ZSA6PSAhY29tcHJfc2l6ZSArIGxlbjtcbiAgICAgICAgdW5jb21wcl9zaXplIDo9ICF1bmNvbXByX3NpemUgKyBsZW4pLFxuICAgICAgZnVuICgpIC0+XG4gICAgICAgIGNoZWNrICgpO1xuICAgICAgICBmaW5pc2ggKCkgKVxuICB8IF8gLT4gcmFpc2UgKEVycm9yIChvZmlsZS5vZl9maWxlbmFtZSwgbmFtZSwgXCJjb21wcmVzc2lvbiBlcnJvclwiKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbigqIEVycm9yIG1lc3NhZ2VzICopXG5cbigqKiBJbnRlcmZhY2UgdG8ga2FwcGEgcnVudGltZSAqKVxubGV0IG1zZ19wcm9jZXNzX25vdF9wYXVzZWQgPSBcInByb2Nlc3Mgbm90IHBhdXNlZFwiXG5cbigqKiAgU3lzdGVtIHByb2Nlc3NcblxuICAgICBUaGVzZSBhcmUgc3lzdGVtIHByb2Nlc3MgaW1wbGVtZW50YXRpb24gZGV0YWlscyB0aGF0XG4gICAgIHZhcnkuXG4qKVxuY2xhc3MgdHlwZSBzeXN0ZW1fcHJvY2VzcyA9IG9iamVjdFxuICBtZXRob2QgbG9nIDogP2V4bjpleG4gLT4gc3RyaW5nIC0+IHVuaXQgTHd0LnRcbiAgbWV0aG9kIHlpZWxkIDogdW5pdCAtPiB1bml0IEx3dC50XG4gIG1ldGhvZCBtaW5fcnVuX2R1cmF0aW9uIDogdW5pdCAtPiBmbG9hdFxuZW5kXG5cbigqKiBUcml2aWFsIGltcGxlbWVudGF0aW9uIHByaW1hcmlseSBmb3IgdW5pdCB0ZXN0aW5nLiAqKVxuY2xhc3MgbnVsbF9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MgPVxuICBvYmplY3RcbiAgICBtZXRob2QgbG9nID9leG4gKF8gOiBzdHJpbmcpID1cbiAgICAgIGxldCAoKSA9IGlnbm9yZSBleG4gaW5cbiAgICAgIEx3dC5yZXR1cm5fdW5pdFxuXG4gICAgbWV0aG9kIHlpZWxkICgpID0gTHd0LnJldHVybl91bml0XG4gICAgbWV0aG9kIG1pbl9ydW5fZHVyYXRpb24gKCkgPSAwLjBcbiAgZW5kXG5cbnR5cGUgdCA9IHtcbiAgbXV0YWJsZSBpc19ydW5uaW5nOiBib29sO1xuICBtdXRhYmxlIHJ1bl9maW5hbGl6ZTogYm9vbDtcbiAgbXV0YWJsZSBwYXVzZV9jb25kaXRpb246IChQYXR0ZXJuLmlkIGFycmF5IGxpc3QsIGludCkgQWxnX2V4cHIuYm9vbDtcbiAgZHVtcElmRGVhZGxvY2tlZDogYm9vbDtcbiAgbWF4Q29uc2VjdXRpdmVDbGFzaDogaW50O1xuICBwYXR0ZXJuU2hhcmluZzogUGF0dGVybi5zaGFyaW5nX2xldmVsO1xuICBjb3VudGVyOiBDb3VudGVyLnQ7XG4gIGxvZ19idWZmZXI6IEJ1ZmZlci50O1xuICBsb2dfZm9ybTogRm9ybWF0LmZvcm1hdHRlcjtcbiAgbXV0YWJsZSBwbG90OiBEYXRhLnBsb3Q7XG4gIG11dGFibGUgc25hcHNob3RzOiBEYXRhLnNuYXBzaG90IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZGluczogKHN0cmluZyAqIERhdGEuZGluKSBsaXN0O1xuICBtdXRhYmxlIHNwZWNpZXM6XG4gICAgKGZsb2F0ICogVXNlcl9ncmFwaC5jb25uZWN0ZWRfY29tcG9uZW50KSBsaXN0IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZmlsZXM6IHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQ7XG4gIG11dGFibGUgZXJyb3JfbWVzc2FnZXM6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdDtcbiAgKCptdXRhYmxlKikgdHJhY2U6IEJ1ZmZlci50O1xuICBpbnB1dHNfYnVmZmVyOiBCdWZmZXIudDtcbiAgaW5wdXRzX2Zvcm06IEZvcm1hdC5mb3JtYXR0ZXI7XG4gIGFzdDogQXN0LnBhcnNpbmdfY29tcGlsO1xuICBjb250YWN0X21hcDogQ29udGFjdF9tYXAudDtcbiAgbXV0YWJsZSBlbnY6IE1vZGVsLnQ7XG4gIG11dGFibGUgZ3JhcGg6IFJ1bGVfaW50ZXJwcmV0ZXIudDtcbiAgbXV0YWJsZSBzdGF0ZTogU3RhdGVfaW50ZXJwcmV0ZXIudDtcbiAgaW5pdF9sOiAoUHJpbWl0aXZlcy5hbGdfZXhwciAqIFByaW1pdGl2ZXMuZWxlbWVudGFyeV9ydWxlKSBsaXN0O1xuICBtdXRhYmxlIGxhc3R5aWVsZDogZmxvYXQ7XG59XG4oKiogU3RhdGUgb2YgdGhlIHJ1bm5pbmcgc2ltdWxhdGlvbi4gKilcblxubGV0IGNyZWF0ZV90IH5sb2dfZm9ybSB+bG9nX2J1ZmZlciB+Y29udGFjdF9tYXAgfmlucHV0c19idWZmZXIgfmlucHV0c19mb3JtXG4gICAgfmR1bXBJZkRlYWRsb2NrZWQgfm1heENvbnNlY3V0aXZlQ2xhc2ggfnBhdHRlcm5TaGFyaW5nIH5lbnYgfmNvdW50ZXIgfmdyYXBoXG4gICAgfnN0YXRlIH5pbml0X2wgfmxhc3R5aWVsZCB+YXN0IDogdCA9XG4gIHtcbiAgICBpc19ydW5uaW5nID0gZmFsc2U7XG4gICAgcnVuX2ZpbmFsaXplID0gZmFsc2U7XG4gICAgY291bnRlcjtcbiAgICBsb2dfYnVmZmVyO1xuICAgIGxvZ19mb3JtO1xuICAgIHBhdXNlX2NvbmRpdGlvbiA9IEFsZ19leHByLkZBTFNFO1xuICAgIGR1bXBJZkRlYWRsb2NrZWQ7XG4gICAgbWF4Q29uc2VjdXRpdmVDbGFzaDtcbiAgICBwYXR0ZXJuU2hhcmluZztcbiAgICBwbG90ID0gRGF0YS5pbml0X3Bsb3QgZW52O1xuICAgIHNuYXBzaG90cyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICAgIGRpbnMgPSBbXTtcbiAgICBzcGVjaWVzID0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gICAgZmlsZXMgPSBNb2RzLlN0cmluZ01hcC5lbXB0eTtcbiAgICBlcnJvcl9tZXNzYWdlcyA9IFtdO1xuICAgIHRyYWNlID0gQnVmZmVyLmNyZWF0ZSAxMDI0O1xuICAgIGlucHV0c19idWZmZXI7XG4gICAgaW5wdXRzX2Zvcm07XG4gICAgYXN0O1xuICAgIGNvbnRhY3RfbWFwO1xuICAgIGVudjtcbiAgICBncmFwaDtcbiAgICBzdGF0ZTtcbiAgICBpbml0X2w7XG4gICAgbGFzdHlpZWxkO1xuICB9XG5cbmxldCByZWluaXRpYWxpemUgfm91dHB1dHMgcmFuZG9tX3N0YXRlIHQgPVxuICBsZXQgKCkgPSBDb3VudGVyLnJlaW5pdGlhbGl6ZSB0LmNvdW50ZXIgaW5cbiAgKCogbGV0ICgpID0gRm9ybWF0LnBwX3ByaW50X2ZsdXNoIHQubG9nX2Zvcm0gKCkgaW5cbiAgICAgbGV0ICgpID0gQnVmZmVyLnJlc2V0IHQubG9nX2J1ZmZlciBpbiopXG4gIHQuaXNfcnVubmluZyA8LSBmYWxzZTtcbiAgdC5ydW5fZmluYWxpemUgPC0gZmFsc2U7XG4gIHQucGF1c2VfY29uZGl0aW9uIDwtIEFsZ19leHByLkZBTFNFO1xuICB0LnBsb3QgPC0gRGF0YS5pbml0X3Bsb3QgdC5lbnY7XG4gIHQuc25hcHNob3RzIDwtIE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICB0LmRpbnMgPC0gW107XG4gIHQuZmlsZXMgPC0gTW9kcy5TdHJpbmdNYXAuZW1wdHk7XG4gIHQuZXJyb3JfbWVzc2FnZXMgPC0gW107XG4gIHQuZ3JhcGggPC1cbiAgICBSdWxlX2ludGVycHJldGVyLmVtcHR5IH5vdXRwdXRzIH53aXRoX3RyYWNlOmZhbHNlIHJhbmRvbV9zdGF0ZSB0LmVudlxuICAgICAgdC5jb3VudGVyO1xuICB0LnN0YXRlIDwtXG4gICAgU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllczpmYWxzZSB0LmNvdW50ZXIgdC5lbnZcblxubGV0IGNhdGNoX2Vycm9yIGhhbmRsZXIgPSBmdW5jdGlvblxuICB8IEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yICgobWVzc2FnZSwgcmFuZ2UpIDogc3RyaW5nIExvYy5hbm5vdGVkKSAtPlxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICB8IEV4Y2VwdGlvbkRlZm4uTWFsZm9ybWVkX0RlY2wgKChtZXNzYWdlLCByYW5nZSkgOiBzdHJpbmcgTG9jLmFubm90ZWQpIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgfnJhbmdlIG1lc3NhZ2UpXG4gIHwgRXhjZXB0aW9uRGVmbi5JbnRlcm5hbF9FcnJvciAoKG1lc3NhZ2UsIHJhbmdlKSA6IHN0cmluZyBMb2MuYW5ub3RlZCkgLT5cbiAgICBoYW5kbGVyIChBcGlfY29tbW9uLmVycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgaGFuZGxlciAoQXBpX2NvbW1vbi5lcnJvcl9tc2cgKFwiUnVudGltZSBlcnJvciBcIiBeIGVycm9yKSlcbiAgfCBleG4gLT5cbiAgICBsZXQgbWVzc2FnZSA9XG4gICAgICB0cnkgUHJpbnRleGMudG9fc3RyaW5nIGV4biB3aXRoIF8gLT4gXCJ1bnNwZWNpZmllZCBleGNlcHRpb24gdGhyb3duXCJcbiAgICBpblxuICAgIGhhbmRsZXIgKEFwaV9jb21tb24uZXJyb3JfbXNnIG1lc3NhZ2UpXG5cbmxldCBwYXJzZSB+cGF0dGVyblNoYXJpbmcgKGFzdCA6IEFzdC5wYXJzaW5nX2NvbXBpbCkgdmFyX292ZXJ3cml0ZVxuICAgIHN5c3RlbV9wcm9jZXNzID1cbiAgbGV0IHlpZWxkID0gc3lzdGVtX3Byb2Nlc3MjeWllbGQgaW5cbiAgbGV0IGxvZ19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICBsZXQgbG9nX2Zvcm0gPSBGb3JtYXQuZm9ybWF0dGVyX29mX2J1ZmZlciBsb2dfYnVmZmVyIGluXG4gIGxldCBpbnB1dHNfYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgbGV0IGlucHV0c19mb3JtID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgaW5wdXRzX2J1ZmZlciBpblxuICBsZXQgY29uZiwgXywgXywgXyA9IENvbmZpZ3VyYXRpb24ucGFyc2UgYXN0LkFzdC5jb25maWd1cmF0aW9ucyBpblxuICBsZXQgd2FybmluZyB+cG9zIG1zZyA9IERhdGEucHJpbnRfd2FybmluZyB+cG9zIGxvZ19mb3JtIG1zZyBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBMd3Qud3JhcDJcbiAgICAgICAgKGZ1biB2YXJfb3ZlcndyaXRlIC0+XG4gICAgICAgICAgTEthcHBhX2NvbXBpbGVyLmNvbXBpbF9vZl9hc3Qgfndhcm5pbmcgfmRlYnVnX21vZGU6ZmFsc2VcbiAgICAgICAgICAgIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQgfnZhcl9vdmVyd3JpdGUpXG4gICAgICAgIHZhcl9vdmVyd3JpdGUgYXN0XG4gICAgICA+Pj0gZnVuIChhc3RfY29tcGlsZWRfZGF0YSA6IExLYXBwYV9jb21waWxlci5hc3RfY29tcGlsZWRfZGF0YSkgLT5cbiAgICAgIHlpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICgqIFRoZSBsYXN0IHlpZWxkIGlzIHVwZGF0ZWQgYWZ0ZXIgdGhlIGxhc3QgeWllbGQuXG4gICAgICAgICBJdCBpcyBnb3R0ZW4gaGVyZSBmb3IgdGhlIGluaXRpYWwgbGFzdCB5ZWlsZCB2YWx1ZS4gKilcbiAgICAgIGxldCBsYXN0eWllbGQgPSBTeXMudGltZSAoKSBpblxuICAgICAgdHJ5XG4gICAgICAgICgqIGV4Y2VwdGlvbiByYWlzZWQgYnkgY29tcGlsZSBtdXN0IGhhdmUgdXNlZCBMd3QuZmFpbC5cbiAgICAgICAgICAgU29tZXRoaW5nIGlzIHdyb25nIGZvciBub3cgKilcbiAgICAgICAgbGV0IG91dHB1dHMgPSBmdW5jdGlvblxuICAgICAgICAgIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQuZnByaW50ZiBsb2dfZm9ybSBcIiVzQC5cIiBzXG4gICAgICAgICAgfCBEYXRhLldhcm5pbmcgKHBvcywgbXNnKSAtPiBEYXRhLnByaW50X3dhcm5pbmcgP3BvcyBsb2dfZm9ybSBtc2dcbiAgICAgICAgICB8IERhdGEuU25hcHNob3QgXyB8IERhdGEuRElOIF8gfCBEYXRhLlNwZWNpZXMgX1xuICAgICAgICAgIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyB8IERhdGEuUGxvdCBfIHwgRGF0YS5UcmFjZVN0ZXAgX1xuICAgICAgICAgIHwgRGF0YS5QcmludCBfIC0+XG4gICAgICAgICAgICBhc3NlcnQgZmFsc2VcbiAgICAgICAgaW5cbiAgICAgICAgRXZhbC5jb21waWxlIH5kZWJ1Z19tb2RlOmZhbHNlXG4gICAgICAgICAgfnBhdXNlOihmdW4gZiAtPiBMd3QuYmluZCAoeWllbGQgKCkpIGYpXG4gICAgICAgICAgfnJldHVybjpMd3QucmV0dXJuID9yZXNjYWxlX2luaXQ6Tm9uZSA/b3ZlcndyaXRlX3QwOk5vbmVcbiAgICAgICAgICB+Y29tcGlsZV9tb2RlX29uOmZhbHNlIH5vdXRwdXRzIH5zaGFyaW5nOnBhdHRlcm5TaGFyaW5nXG4gICAgICAgICAgYXN0X2NvbXBpbGVkX2RhdGEuYWdlbnRzX3NpZyBhc3RfY29tcGlsZWRfZGF0YS50b2tlbl9uYW1lc1xuICAgICAgICAgIGFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwIGFzdF9jb21waWxlZF9kYXRhLnJlc3VsdFxuICAgICAgICA+Pj0gZnVuIChlbnYsIHdpdGhfdHJhY2UsIGluaXRfbCkgLT5cbiAgICAgICAgbGV0IGNvdW50ZXIgPVxuICAgICAgICAgIENvdW50ZXIuY3JlYXRlXG4gICAgICAgICAgICB+aW5pdF90OigwLiA6IGZsb2F0KVxuICAgICAgICAgICAgfmluaXRfZTooMCA6IGludClcbiAgICAgICAgICAgID9tYXhfdGltZTpOb25lID9tYXhfZXZlbnQ6Tm9uZSB+cGxvdF9wZXJpb2Q6KENvbmZpZ3VyYXRpb24uRFQgMS4pXG4gICAgICAgICAgICB+bmJfcnVsZXM6KE1vZGVsLm5iX3J1bGVzIGVudikgKClcbiAgICAgICAgaW5cbiAgICAgICAgbGV0IHRoZVNlZWQgPVxuICAgICAgICAgIG1hdGNoIGNvbmYuQ29uZmlndXJhdGlvbi5zZWVkIHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFJhbmRvbS5zZWxmX2luaXQgKCkgaW5cbiAgICAgICAgICAgIGxldCBvdXQgPSBSYW5kb20uYml0cyAoKSBpblxuICAgICAgICAgICAgbGV0ICgpID0gRm9ybWF0LmZwcmludGYgbG9nX2Zvcm0gXCJSYW5kb20gc2VlZCB1c2VkOiAlaUAuXCIgb3V0IGluXG4gICAgICAgICAgICBvdXRcbiAgICAgICAgICB8IFNvbWUgdGhlU2VlZCAtPiB0aGVTZWVkXG4gICAgICAgIGluXG4gICAgICAgIGxldCByYW5kb21fc3RhdGUgPSBSYW5kb20uU3RhdGUubWFrZSBbfCB0aGVTZWVkIHxdIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgRGF0YS5wcmludF9pbml0aWFsX2lucHV0cyA/dXVpZDpOb25lXG4gICAgICAgICAgICB7IGNvbmYgd2l0aCBDb25maWd1cmF0aW9uLnNlZWQgPSBTb21lIHRoZVNlZWQgfVxuICAgICAgICAgICAgZW52IGlucHV0c19mb3JtIGluaXRfbFxuICAgICAgICBpblxuICAgICAgICBsZXQgc2ltdWxhdGlvbiA9XG4gICAgICAgICAgY3JlYXRlX3QgfmNvbnRhY3RfbWFwOmFzdF9jb21waWxlZF9kYXRhLmNvbnRhY3RfbWFwIH5sb2dfZm9ybVxuICAgICAgICAgICAgfmxvZ19idWZmZXIgfmlucHV0c19idWZmZXIgfmlucHV0c19mb3JtIH5hc3QgfmVudiB+Y291bnRlclxuICAgICAgICAgICAgfmR1bXBJZkRlYWRsb2NrZWQ6Y29uZi5Db25maWd1cmF0aW9uLmR1bXBJZkRlYWRsb2NrZWRcbiAgICAgICAgICAgIH5tYXhDb25zZWN1dGl2ZUNsYXNoOmNvbmYuQ29uZmlndXJhdGlvbi5tYXhDb25zZWN1dGl2ZUNsYXNoXG4gICAgICAgICAgICB+cGF0dGVyblNoYXJpbmdcbiAgICAgICAgICAgIH5ncmFwaDpcbiAgICAgICAgICAgICAgKFJ1bGVfaW50ZXJwcmV0ZXIuZW1wdHkgfm91dHB1dHMgfndpdGhfdHJhY2UgcmFuZG9tX3N0YXRlIGVudlxuICAgICAgICAgICAgICAgICBjb3VudGVyKVxuICAgICAgICAgICAgfnN0YXRlOlxuICAgICAgICAgICAgICAoU3RhdGVfaW50ZXJwcmV0ZXIuZW1wdHkgfndpdGhfZGVsdGFfYWN0aXZpdGllczpmYWxzZSBjb3VudGVyIGVudilcbiAgICAgICAgICAgIH5pbml0X2wgfmxhc3R5aWVsZFxuICAgICAgICBpblxuICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzaW11bGF0aW9uKVxuICAgICAgd2l0aCBlIC0+XG4gICAgICAgIChjYXRjaF9lcnJvciAoZnVuIHggLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyB4IF0pKSkgZSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBvdXRwdXRzIChzaW11bGF0aW9uIDogdCkgPSBmdW5jdGlvblxuICB8IERhdGEuRElOIChmbHV4X25hbWUsIGZsdXhfbWFwKSAtPlxuICAgIHNpbXVsYXRpb24uZGlucyA8LSAoZmx1eF9uYW1lLCBmbHV4X21hcCkgOjogc2ltdWxhdGlvbi5kaW5zXG4gIHwgRGF0YS5EZWx0YUFjdGl2aXRpZXMgXyAtPiBhc3NlcnQgZmFsc2VcbiAgfCBEYXRhLlBsb3QgbmV3X29ic2VydmFibGVzIC0+XG4gICAgc2ltdWxhdGlvbi5wbG90IDwtIERhdGEuYWRkX3Bsb3RfbGluZSBuZXdfb2JzZXJ2YWJsZXMgc2ltdWxhdGlvbi5wbG90XG4gIHwgRGF0YS5TcGVjaWVzIChmaWxlLCB0aW1lLCBtaXgpIC0+XG4gICAgbGV0IHAgPSBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgW10gZmlsZSBzaW11bGF0aW9uLnNwZWNpZXMgaW5cbiAgICBzaW11bGF0aW9uLnNwZWNpZXMgPC1cbiAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBmaWxlICgodGltZSwgbWl4KSA6OiBwKSBzaW11bGF0aW9uLnNwZWNpZXNcbiAgfCBEYXRhLlByaW50IGZpbGVfbGluZSAtPlxuICAgIChtYXRjaCBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfbmFtZSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBGb3JtYXQuZnByaW50ZiBzaW11bGF0aW9uLmxvZ19mb3JtIFwiJXNALlwiIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV90ZXh0XG4gICAgfCBTb21lIG5hIC0+XG4gICAgICBsZXQgbGluZXMgPSBNb2RzLlN0cmluZ01hcC5maW5kX2RlZmF1bHQgW10gbmEgc2ltdWxhdGlvbi5maWxlcyBpblxuICAgICAgc2ltdWxhdGlvbi5maWxlcyA8LVxuICAgICAgICBNb2RzLlN0cmluZ01hcC5hZGQgbmFcbiAgICAgICAgICAoZmlsZV9saW5lLkRhdGEuZmlsZV9saW5lX3RleHQgOjogbGluZXMpXG4gICAgICAgICAgc2ltdWxhdGlvbi5maWxlcylcbiAgfCBEYXRhLlNuYXBzaG90IChmaWxlbmFtZSwgc25hcHNob3QpIC0+XG4gICAgbGV0IGFscmVhZHlfdGhlcmUgeCA9IE1vZHMuU3RyaW5nTWFwLm1lbSB4IHNpbXVsYXRpb24uc25hcHNob3RzIGluXG4gICAgbGV0IHNuYXBzaG90X2ZpbGUgPVxuICAgICAgVG9vbHMuZmluZF9hdmFpbGFibGVfbmFtZSB+YWxyZWFkeV90aGVyZSBmaWxlbmFtZVxuICAgICAgICB+ZmFjdWx0YXRpdmU6KHN0cmluZ19vZl9pbnQgc25hcHNob3QuRGF0YS5zbmFwc2hvdF9ldmVudClcbiAgICAgICAgfmV4dDpOb25lXG4gICAgaW5cbiAgICBzaW11bGF0aW9uLnNuYXBzaG90cyA8LVxuICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHNuYXBzaG90X2ZpbGUgc25hcHNob3Qgc2ltdWxhdGlvbi5zbmFwc2hvdHNcbiAgfCBEYXRhLkxvZyBzIC0+IEZvcm1hdC5mcHJpbnRmIHNpbXVsYXRpb24ubG9nX2Zvcm0gXCIlc0AuXCIgc1xuICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIHNpbXVsYXRpb24ubG9nX2Zvcm0gbXNnXG4gIHwgRGF0YS5UcmFjZVN0ZXAgc3QgLT5cbiAgICBpZiBCdWZmZXIubGVuZ3RoIHNpbXVsYXRpb24udHJhY2UgPD4gMCB0aGVuIChcbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBzaW11bGF0aW9uLnRyYWNlICcsJyBpblxuICAgICAgVHJhY2Uud3JpdGVfc3RlcCBzaW11bGF0aW9uLnRyYWNlIHN0XG4gICAgKVxuXG5sZXQgaW50ZXJhY3RpdmVfb3V0cHV0cyBmb3JtYXR0ZXIgdCA9IGZ1bmN0aW9uXG4gIHwgRGF0YS5Mb2cgcyAtPiBGb3JtYXQuZnByaW50ZiBmb3JtYXR0ZXIgXCIlc0AuXCIgc1xuICB8IERhdGEuV2FybmluZyAocG9zLCBtc2cpIC0+IERhdGEucHJpbnRfd2FybmluZyA/cG9zIGZvcm1hdHRlciBtc2dcbiAgfCBEYXRhLlByaW50IGZpbGVfbGluZSB3aGVuIGZpbGVfbGluZS5EYXRhLmZpbGVfbGluZV9uYW1lID0gTm9uZSAtPlxuICAgIEZvcm1hdC5mcHJpbnRmIGZvcm1hdHRlciBcIiVzQC5cIiBmaWxlX2xpbmUuRGF0YS5maWxlX2xpbmVfdGV4dFxuICB8ICggRGF0YS5ESU4gXyB8IERhdGEuRGVsdGFBY3Rpdml0aWVzIF8gfCBEYXRhLlBsb3QgXyB8IERhdGEuU3BlY2llcyBfXG4gICAgfCBEYXRhLlByaW50IF8gfCBEYXRhLlNuYXBzaG90IF8gfCBEYXRhLlRyYWNlU3RlcCBfICkgYXMgdiAtPlxuICAgIG91dHB1dHMgdCB2XG5cbmxldCB0aW1lX3lpZWxkIH4oc3lzdGVtX3Byb2Nlc3MgOiBzeXN0ZW1fcHJvY2Vzcykgfih0IDogdCkgOiB1bml0IEx3dC50ID1cbiAgbGV0IHRpbWUgPSBTeXMudGltZSAoKSBpblxuICBpZiB0aW1lIC0uIHQubGFzdHlpZWxkID4gc3lzdGVtX3Byb2Nlc3MjbWluX3J1bl9kdXJhdGlvbiAoKSB0aGVuIChcbiAgICBsZXQgKCkgPSB0Lmxhc3R5aWVsZCA8LSB0aW1lIGluXG4gICAgc3lzdGVtX3Byb2Nlc3MjeWllbGQgKClcbiAgKSBlbHNlXG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCBmaW5hbGl6ZV9zaW11bGF0aW9uIH4odCA6IHQpIDogdW5pdCA9XG4gIFN0YXRlX2ludGVycHJldGVyLmVuZF9vZl9zaW11bGF0aW9uIH5vdXRwdXRzOihvdXRwdXRzIHQpIHQuZW52IHQuY291bnRlclxuICAgIHQuZ3JhcGggdC5zdGF0ZVxuXG5sZXQgcnVuX3NpbXVsYXRpb24gfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSBzdG9wcGVkIDpcbiAgICB1bml0IEx3dC50ID1cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgbGV0IHJzdG9wID0gcmVmIHN0b3BwZWQgaW5cbiAgICAgIGxldCAoKSA9IHQuaXNfcnVubmluZyA8LSB0cnVlIGluXG4gICAgICBsZXQgcmVjIGl0ZXIgKCkgPVxuICAgICAgICAodHJ5XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgd2hpbGVcbiAgICAgICAgICAgICAgIChub3QgIXJzdG9wKVxuICAgICAgICAgICAgICAgJiYgU3lzLnRpbWUgKCkgLS4gdC5sYXN0eWllbGRcbiAgICAgICAgICAgICAgICAgIDwgc3lzdGVtX3Byb2Nlc3MjbWluX3J1bl9kdXJhdGlvbiAoKVxuICAgICAgICAgICAgIGRvXG4gICAgICAgICAgICAgICBsZXQgc3RvcCwgZ3JhcGgnLCBzdGF0ZScgPVxuICAgICAgICAgICAgICAgICBTdGF0ZV9pbnRlcnByZXRlci5hX2xvb3AgfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICAgICAgICB+ZHVtcElmRGVhZGxvY2tlZDp0LmR1bXBJZkRlYWRsb2NrZWRcbiAgICAgICAgICAgICAgICAgICB+bWF4Q29uc2VjdXRpdmVDbGFzaDp0Lm1heENvbnNlY3V0aXZlQ2xhc2ggdC5lbnYgdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgICAgdC5ncmFwaCB0LnN0YXRlXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgcnN0b3AgOj1cbiAgICAgICAgICAgICAgICAgc3RvcFxuICAgICAgICAgICAgICAgICB8fCBSdWxlX2ludGVycHJldGVyLnZhbHVlX2Jvb2wgdC5jb3VudGVyIGdyYXBoJ1xuICAgICAgICAgICAgICAgICAgICAgIHQucGF1c2VfY29uZGl0aW9uO1xuICAgICAgICAgICAgICAgdC5ncmFwaCA8LSBncmFwaCc7XG4gICAgICAgICAgICAgICB0LnN0YXRlIDwtIHN0YXRlJ1xuICAgICAgICAgICAgIGRvbmVcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICAgICB3aXRoIGUgLT4gTHd0LmZhaWwgZSlcbiAgICAgICAgPj49IGZ1biAoKSAtPlxuICAgICAgICBpZiAhcnN0b3AgdGhlbiAoXG4gICAgICAgICAgbGV0ICgpID0gdC5pc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgTHd0LnJldHVybl91bml0XG4gICAgICAgICkgZWxzZSBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICAgIHN5c3RlbV9wcm9jZXNzI3lpZWxkICgpID4+PSBmdW4gKCkgLT5cbiAgICAgICAgICBsZXQgKCkgPSB0Lmxhc3R5aWVsZCA8LSBTeXMudGltZSAoKSBpblxuICAgICAgICAgIGl0ZXIgKClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdFxuICAgICAgaW5cbiAgICAgIGl0ZXIgKCkgPj49IGZ1biAoKSAtPlxuICAgICAgbGV0ICgpID0gaWYgdC5ydW5fZmluYWxpemUgdGhlbiBmaW5hbGl6ZV9zaW11bGF0aW9uIH50IGluXG4gICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPlxuICAgICAgICAgbGV0ICgpID0gdC5pc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICBsZXQgKCkgPSB0LmVycm9yX21lc3NhZ2VzIDwtIFsgZSBdIGluXG4gICAgICAgICBMd3QucmV0dXJuX3VuaXQpKVxuXG5sZXQgc3RhcnQgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKVxuICAgIH4ocGFyYW1ldGVyIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIH4odCA6IHQpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0IGxleGJ1ZiA9XG4gICAgTGV4aW5nLmZyb21fc3RyaW5nIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhdXNlX2NvbmRpdGlvblxuICBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICAoKmxldCAoKSA9XG4gICAgICAgICAgQ291bnRlci5zZXRfbWF4X3RpbWVcbiAgICAgICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfai5zaW11bGF0aW9uX21heF90aW1lXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIENvdW50ZXIuc2V0X21heF9ldmVudHNcbiAgICAgICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfai5zaW11bGF0aW9uX21heF9ldmVudHNcbiAgICAgICAgICAgICAgIGluKilcbiAgICAgIGxldCByYW5kb21fc3RhdGUgPVxuICAgICAgICBtYXRjaCBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkIHdpdGhcbiAgICAgICAgfCBOb25lIC0+IFJhbmRvbS5TdGF0ZS5tYWtlX3NlbGZfaW5pdCAoKVxuICAgICAgICB8IFNvbWUgc2VlZCAtPiBSYW5kb20uU3RhdGUubWFrZSBbfCBzZWVkIHxdXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gcmVpbml0aWFsaXplIHJhbmRvbV9zdGF0ZSB+b3V0cHV0czoob3V0cHV0cyB0KSB0IGluXG4gICAgICB0cnlcbiAgICAgICAgbGV0IHBhdXNlID0gS3BhcnNlcjQuc3RhbmRhbG9uZV9ib29sX2V4cHIgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgTHd0LndyYXA0XG4gICAgICAgICAgKEV2YWx1YXRvci5nZXRfcGF1c2VfY3JpdGVyaWEgfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICB+c2hhcmluZzp0LnBhdHRlcm5TaGFyaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQpXG4gICAgICAgICAgdC5jb250YWN0X21hcCB0LmVudiB0LmdyYXBoIHBhdXNlXG4gICAgICAgID4+PSBmdW4gKGVudicsIGdyYXBoJywgYicnKSAtPlxuICAgICAgICBsZXQgKCkgPSB0LmVudiA8LSBlbnYnIGluXG4gICAgICAgIGxldCAoKSA9IHQuZ3JhcGggPC0gZ3JhcGgnIGluXG4gICAgICAgIGxldCAoKSA9IHQucGF1c2VfY29uZGl0aW9uIDwtIGInJyBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIENvdW50ZXIuc2V0X3Bsb3RfcGVyaW9kIHQuY291bnRlclxuICAgICAgICAgICAgKENvbmZpZ3VyYXRpb24uRFQgcGFyYW1ldGVyLkFwaV90eXBlc190LnNpbXVsYXRpb25fcGxvdF9wZXJpb2QpXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgTHd0LmFzeW5jIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgICAgKCogZXhjZXB0aW9uIHJhaXNlZCBieSBidWlsZF9pbml0aWFsX3N0YXRlIG11c3QgaGF2ZSBiZWVuXG4gICAgICAgICAgICAgICAgICAgcmFpc2VkIHdpdGggTHd0LmZhaWwuIFNvbWV0aGluZyBpcyB3cm9uZyBmb3Igbm93Li4uICopXG4gICAgICAgICAgICAgICAgRXZhbC5idWlsZF9pbml0aWFsX3N0YXRlXG4gICAgICAgICAgICAgICAgICB+YmluZDooZnVuIHggZiAtPlxuICAgICAgICAgICAgICAgICAgICB0aW1lX3lpZWxkIH5zeXN0ZW1fcHJvY2VzcyB+dCA+Pj0gZnVuICgpIC0+IHggPj49IGYpXG4gICAgICAgICAgICAgICAgICB+cmV0dXJuOkx3dC5yZXR1cm4gfmRlYnVnX21vZGU6ZmFsc2Ugfm91dHB1dHM6KG91dHB1dHMgdClcbiAgICAgICAgICAgICAgICAgIH53aXRoX3RyYWNlOnBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX3N0b3JlX3RyYWNlXG4gICAgICAgICAgICAgICAgICB+d2l0aF9kZWx0YV9hY3Rpdml0aWVzOmZhbHNlIHQuY291bnRlciB0LmVudiByYW5kb21fc3RhdGVcbiAgICAgICAgICAgICAgICAgIHQuaW5pdF9sXG4gICAgICAgICAgICAgICAgPj49IGZ1biAoc3RvcCwgZ3JhcGgsIHN0YXRlKSAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICB0LmdyYXBoIDwtIGdyYXBoO1xuICAgICAgICAgICAgICAgICAgdC5zdGF0ZSA8LSBzdGF0ZVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpcnN0X29icyA9XG4gICAgICAgICAgICAgICAgICBTdGF0ZV9pbnRlcnByZXRlci5vYnNlcnZhYmxlc192YWx1ZXMgdC5lbnYgZ3JhcGggdC5jb3VudGVyXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPSB0LnBsb3QgPC0gRGF0YS5hZGRfcGxvdF9saW5lIGZpcnN0X29icyB0LnBsb3QgaW5cbiAgICAgICAgICAgICAgICBydW5fc2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnQgc3RvcFxuICAgICAgICAgICAgICB3aXRoIGUgLT5cbiAgICAgICAgICAgICAgICBjYXRjaF9lcnJvclxuICAgICAgICAgICAgICAgICAgKGZ1biBlIC0+XG4gICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHQuZXJyb3JfbWVzc2FnZXMgPC0gWyBlIF0gaW5cbiAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgICAgICAgZSlcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICB3aXRoIEV4Y2VwdGlvbkRlZm4uU3ludGF4X0Vycm9yIChtZXNzYWdlLCByYW5nZSkgLT5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+XG4gICAgICAgICBsZXQgKCkgPSB0LmVycm9yX21lc3NhZ2VzIDwtIFsgZSBdIGluXG4gICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgcGF1c2UgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgKCkgPSBpZ25vcmUgdCBpblxuICBsZXQgKCkgPVxuICAgIGlmIHQuaXNfcnVubmluZyB0aGVuXG4gICAgICB0LmlzX3J1bm5pbmcgPC0gZmFsc2VcbiAgICBlbHNlXG4gICAgICAoKVxuICBpblxuICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxubGV0IHN0b3AgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKHVuaXQsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudCBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgKCkgPSBpZ25vcmUgdCBpblxuICBMd3QuY2F0Y2hcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSB0LnJ1bl9maW5hbGl6ZSA8LSB0cnVlIGluXG4gICAgICBpZiB0LmlzX3J1bm5pbmcgdGhlblxuICAgICAgICBwYXVzZSB+c3lzdGVtX3Byb2Nlc3MgfnRcbiAgICAgIGVsc2UgKFxuICAgICAgICBsZXQgKCkgPSBmaW5hbGl6ZV9zaW11bGF0aW9uIH50IGluXG4gICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBwZXJ0dXJiYXRpb24gfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KVxuICAgIH4ocGVydHVyYmF0aW9uIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pIDpcbiAgICAoc3RyaW5nLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnQgPVxuICBsZXQgKCkgPSBpZ25vcmUgc3lzdGVtX3Byb2Nlc3MgaW5cbiAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBwZXJ0dXJiYXRpb24gaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIG1zZ19wcm9jZXNzX25vdF9wYXVzZWQpXG4gICAgICBlbHNlIChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IGUgPSBLcGFyc2VyNC5zdGFuZGFsb25lX2VmZmVjdF9saXN0IEtsZXhlcjQudG9rZW4gbGV4YnVmIGluXG4gICAgICAgICAgbGV0IGxvZ19idWZmZXIgPSBCdWZmZXIuY3JlYXRlIDUxMiBpblxuICAgICAgICAgIGxldCBsb2dfZm9ybSA9IEZvcm1hdC5mb3JtYXR0ZXJfb2ZfYnVmZmVyIGxvZ19idWZmZXIgaW5cbiAgICAgICAgICBMd3Qud3JhcDZcbiAgICAgICAgICAgIChFdmFsdWF0b3IuZG9faW50ZXJhY3RpdmVfZGlyZWN0aXZlcyB+ZGVidWdfbW9kZTpmYWxzZVxuICAgICAgICAgICAgICAgfm91dHB1dHM6KGludGVyYWN0aXZlX291dHB1dHMgbG9nX2Zvcm0gdClcbiAgICAgICAgICAgICAgIH5zaGFyaW5nOnQucGF0dGVyblNoYXJpbmcgfnN5bnRheF92ZXJzaW9uOkFzdC5WNClcbiAgICAgICAgICAgIHQuY29udGFjdF9tYXAgdC5lbnYgdC5jb3VudGVyIHQuZ3JhcGggdC5zdGF0ZSBlXG4gICAgICAgICAgPj49IGZ1biAoZScsIChlbnYnLCAoXywgZ3JhcGgnJywgc3RhdGUnKSkpIC0+XG4gICAgICAgICAgbGV0ICgpID0gdC5lbnYgPC0gZW52JyBpblxuICAgICAgICAgIGxldCAoKSA9IHQuZ3JhcGggPC0gZ3JhcGgnJyBpblxuICAgICAgICAgIGxldCAoKSA9IHQuc3RhdGUgPC0gc3RhdGUnIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQubG9nX2Zvcm0gXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiXG4gICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgdC5jb3VudGVyKVxuICAgICAgICAgICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgICAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnY6dC5lbnYpKVxuICAgICAgICAgICAgICBlJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZvcm1hdC5mcHJpbnRmIHQuaW5wdXRzX2Zvcm0gXCIlJW1vZDogW0VdID0gJWkgZG8gJWFALlwiXG4gICAgICAgICAgICAgIChDb3VudGVyLmN1cnJlbnRfZXZlbnQgdC5jb3VudGVyKVxuICAgICAgICAgICAgICAoUHAubGlzdCB+dHJhaWxpbmc6UHAuY29sb24gUHAuY29sb25cbiAgICAgICAgICAgICAgICAgKEthcHBhX3ByaW50ZXIubW9kaWZpY2F0aW9uIH5ub0NvdW50ZXJzOmZhbHNlIH5lbnY6dC5lbnYpKVxuICAgICAgICAgICAgICBlJ1xuICAgICAgICAgIGluXG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKEJ1ZmZlci5jb250ZW50cyBsb2dfYnVmZmVyKSlcbiAgICAgICAgd2l0aCBFeGNlcHRpb25EZWZuLlN5bnRheF9FcnJvciAobWVzc2FnZSwgcmFuZ2UpIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yYW5nZSBtZXNzYWdlKVxuICAgICAgKSlcbiAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG5cbmxldCBjb250aW51ZSB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpXG4gICAgfihwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpIDpcbiAgICAodW5pdCwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgbGV0IGxleGJ1ZiA9IExleGluZy5mcm9tX3N0cmluZyBwYXVzZV9jb25kaXRpb24gaW5cbiAgTHd0LmNhdGNoXG4gICAgKGZ1biAoKSAtPlxuICAgICAgaWYgdC5pc19ydW5uaW5nIHRoZW5cbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICBlbHNlIChcbiAgICAgICAgdHJ5XG4gICAgICAgICAgbGV0IHBhdXNlID0gS3BhcnNlcjQuc3RhbmRhbG9uZV9ib29sX2V4cHIgS2xleGVyNC50b2tlbiBsZXhidWYgaW5cbiAgICAgICAgICBMd3Qud3JhcDRcbiAgICAgICAgICAgIChFdmFsdWF0b3IuZ2V0X3BhdXNlX2NyaXRlcmlhIH5kZWJ1Z19tb2RlOmZhbHNlIH5vdXRwdXRzOihvdXRwdXRzIHQpXG4gICAgICAgICAgICAgICB+c2hhcmluZzp0LnBhdHRlcm5TaGFyaW5nIH5zeW50YXhfdmVyc2lvbjpBc3QuVjQpXG4gICAgICAgICAgICB0LmNvbnRhY3RfbWFwIHQuZW52IHQuZ3JhcGggcGF1c2VcbiAgICAgICAgICA+Pj0gZnVuIChlbnYnLCBncmFwaCcsIGInJykgLT5cbiAgICAgICAgICBsZXQgKCkgPSB0LmVudiA8LSBlbnYnIGluXG4gICAgICAgICAgbGV0ICgpID0gdC5ncmFwaCA8LSBncmFwaCcgaW5cbiAgICAgICAgICBsZXQgKCkgPSB0LnBhdXNlX2NvbmRpdGlvbiA8LSBiJycgaW5cbiAgICAgICAgICAoKmxldCAoKSA9XG4gICAgICAgICAgICBDb3VudGVyLnNldF9tYXhfdGltZVxuICAgICAgICAgICAgdC5jb3VudGVyXG4gICAgICAgICAgICBwYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9tYXhfdGltZVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDb3VudGVyLnNldF9tYXhfZXZlbnRzXG4gICAgICAgICAgICB0LmNvdW50ZXJcbiAgICAgICAgICAgIHBhcmFtZXRlci5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX21heF9ldmVudHNcbiAgICAgICAgICAgIGluKilcbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTHd0LmFzeW5jIChmdW4gKCkgLT4gcnVuX3NpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzIH50IGZhbHNlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICAgIHdpdGggRXhjZXB0aW9uRGVmbi5TeW50YXhfRXJyb3IgKG1lc3NhZ2UsIHJhbmdlKSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmFuZ2UgbWVzc2FnZSlcbiAgICAgICkpXG4gICAgKGNhdGNoX2Vycm9yIChmdW4gZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciBbIGUgXSkpKVxuXG5sZXQgcHJvZ3Jlc3MgfihzeXN0ZW1fcHJvY2VzcyA6IHN5c3RlbV9wcm9jZXNzKSB+KHQgOiB0KSA6XG4gICAgKEFwaV90eXBlc190LnNpbXVsYXRpb25fcHJvZ3Jlc3MsIFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgUmVzdWx0X3V0aWwudFxuICAgIEx3dC50ID1cbiAgbGV0ICgpID0gaWdub3JlIHN5c3RlbV9wcm9jZXNzIGluXG4gIGxldCAoKSA9IGlnbm9yZSB0IGluXG4gIG1hdGNoIHQuZXJyb3JfbWVzc2FnZXMgd2l0aFxuICB8IFtdIC0+XG4gICAgTHd0LmNhdGNoXG4gICAgICAoZnVuICgpIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUgPVxuICAgICAgICAgICAgICAgICBDb3VudGVyLmN1cnJlbnRfdGltZSB0LmNvdW50ZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWVfcGVyY2VudGFnZSA9XG4gICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgIChmdW4geCAtPiBpbnRfb2ZfZmxvYXQgKHggKi4gMTAwLikpXG4gICAgICAgICAgICAgICAgICAgKENvdW50ZXIudGltZV9yYXRpbyB0LmNvdW50ZXIpO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudCA9XG4gICAgICAgICAgICAgICAgIENvdW50ZXIuY3VycmVudF9ldmVudCB0LmNvdW50ZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50X3BlcmNlbnRhZ2UgPVxuICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAoZnVuIHggLT4gaW50X29mX2Zsb2F0ICh4ICouIDEwMC4pKVxuICAgICAgICAgICAgICAgICAgIChDb3VudGVyLmV2ZW50X3JhdGlvIHQuY291bnRlcik7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX3RyYWNrZWRfZXZlbnRzID1cbiAgICAgICAgICAgICAgICAgQ291bnRlci50cmFja2VkX2V2ZW50cyB0LmNvdW50ZXI7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3Byb2dyZXNzX2lzX3J1bm5pbmcgPSB0LmlzX3J1bm5pbmc7XG4gICAgICAgICAgICAgfSkpXG4gICAgICAoY2F0Y2hfZXJyb3IgKGZ1biBlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIFsgZSBdKSkpXG4gIHwgXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5lcnJvciB0LmVycm9yX21lc3NhZ2VzKVxuXG5sZXQgb3V0cHV0cyB+KHN5c3RlbV9wcm9jZXNzIDogc3lzdGVtX3Byb2Nlc3MpIH4odCA6IHQpIDpcbiAgICAoQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0LCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnRcbiAgICBMd3QudCA9XG4gIGxldCAoKSA9IGlnbm9yZSBzeXN0ZW1fcHJvY2VzcyBpblxuICBsZXQgKCkgPSBpZ25vcmUgdCBpblxuICBtYXRjaCB0LmVycm9yX21lc3NhZ2VzIHdpdGhcbiAgfCBbXSAtPlxuICAgIEx3dC5jYXRjaFxuICAgICAgKGZ1biAoKSAtPlxuICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgKFJlc3VsdF91dGlsLm9rXG4gICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCA9IFNvbWUgdC5wbG90O1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGlucyA9IHQuZGlucztcbiAgICAgICAgICAgICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2ZpbGVfbGluZXMgPSB0LmZpbGVzO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfc25hcHNob3RzID0gdC5zbmFwc2hvdHM7XG4gICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9pbnB1dHMgPVxuICAgICAgICAgICAgICAgICBCdWZmZXIuY29udGVudHMgdC5pbnB1dHNfYnVmZmVyO1xuICAgICAgICAgICAgICAgQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzID1cbiAgICAgICAgICAgICAgICAgQnVmZmVyLmNvbnRlbnRzIHQubG9nX2J1ZmZlcjtcbiAgICAgICAgICAgICB9KSlcbiAgICAgIChjYXRjaF9lcnJvciAoZnVuIGUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgWyBlIF0pKSlcbiAgfCBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLmVycm9yIHQuZXJyb3JfbWVzc2FnZXMpXG5cbmxldCBlZmZpY2llbmN5IHQgPSBDb3VudGVyLmdldF9lZmZpY2llbmN5IHQuY291bnRlclxuXG5sZXQgZ2V0X3Jhd190cmFjZSAodCA6IHQpIDogc3RyaW5nID1cbiAgSnNvblV0aWwuc3RyaW5nX29mX3dyaXRlXG4gICAgKGZ1biBvYiB0IC0+XG4gICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX2NoYXIgb2IgJ3snIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBKc29uVXRpbC53cml0ZV9maWVsZCBcImRpY3RcIlxuICAgICAgICAgIChmdW4gb2IgKCkgLT5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfY2hhciBvYiAneycgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG9iIEFnZW50Lmpzb25fZGljdGlvbm5hcnkgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBJbnN0YW50aWF0aW9uLmpzb25fZGljdGlvbm5hcnkgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBCdWZmZXIuYWRkX3N0cmluZyBvYiBUcmFjZS5TaW11bGF0aW9uX2luZm8uanNvbl9kaWN0aW9ubmFyeVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEpzb25VdGlsLndyaXRlX2NvbW1hIG9iIGluXG4gICAgICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvYiBUcmFjZS5qc29uX2RpY3Rpb25uYXJ5IGluXG4gICAgICAgICAgICBCdWZmZXIuYWRkX2NoYXIgb2IgJ30nKVxuICAgICAgICAgIG9iICgpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwibW9kZWxcIiBZb2pzb24uQmFzaWMud3JpdGVfanNvbiBvYlxuICAgICAgICAgIChNb2RlbC50b195b2pzb24gdC5lbnYpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gSnNvblV0aWwud3JpdGVfY29tbWEgb2IgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIEpzb25VdGlsLndyaXRlX2ZpZWxkIFwidHJhY2VcIiBCdWZmZXIuYWRkX3N0cmluZyBvYlxuICAgICAgICAgIChcIltcIiBeIEJ1ZmZlci5jb250ZW50cyB0LnRyYWNlKVxuICAgICAgaW5cbiAgICAgIEJ1ZmZlci5hZGRfc3RyaW5nIG9iIFwiXX1cIilcbiAgICB0XG5cbmxldCBnZXRfcmF3X2FzdCB0ID0gWW9qc29uLkJhc2ljLnRvX3N0cmluZyAoQXN0LmNvbXBpbF90b19qc29uIHQuYXN0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuKCogYWRkZCBzZWVkIHRvIHBhcmFtZXRlciAqKVxubGV0IHBhdGNoX3BhcmFtZXRlciAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICAgIEFwaV90eXBlc190LnNpbXVsYXRpb25fcGFyYW1ldGVyICogaW50ID1cbiAgbWF0Y2ggc2ltdWxhdGlvbl9wYXJhbWV0ZXIuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0ICgpID0gUmFuZG9tLnNlbGZfaW5pdCAoKSBpblxuICAgIGxldCBzZWVkID0gUmFuZG9tLmJpdHMgKCkgaW5cbiAgICB7IHNpbXVsYXRpb25fcGFyYW1ldGVyIHdpdGggQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9zZWVkID0gU29tZSBzZWVkIH0sIHNlZWRcbiAgfCBTb21lIHNlZWQgLT4gc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIHNlZWRcblxubGV0IGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIGhhbmRsZXIgPVxuICBtYXRjaCBzaW11bGF0aW9uIHdpdGhcbiAgfCBTb21lIChfLCBzaW11bGF0aW9uKSAtPiBoYW5kbGVyIHNpbXVsYXRpb25cbiAgfCBOb25lIC0+XG4gICAgbGV0IG0gPSBcIk5vIHNpbXVsYXRpb24gYXZhaWxhYmxlXCIgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbSlcblxubGV0IGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uXG4gICAgfihzeXN0ZW1fcHJvY2VzcyA6IEthcHBhX2ZhY2FkZS5zeXN0ZW1fcHJvY2VzcylcbiAgICB+KHByb2plY3Rpb24gOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQgLT4gJ2EgQXBpLnJlc3VsdCkgOlxuICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICBiaW5kX3NpbXVsYXRpb24gc2ltdWxhdGlvbiAoZnVuIHQgLT5cbiAgICAgIEthcHBhX2ZhY2FkZS5vdXRwdXRzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazpcbiAgICAgICAgICAgICAgKGZ1biAoc2ltdWxhdGlvbl9kZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKHByb2plY3Rpb24gc2ltdWxhdGlvbl9kZXRhaWwpXG4gICAgICAgICAgICAgICAgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudClcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuY2xhc3MgdmlydHVhbCBtYW5hZ2VyX2ZpbGVfbGluZSAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fZmlsZV9saW5lIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZmlsZV9saW5lX2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmlsZV9saW5lcyA6IHN0cmluZyBsaXN0IE1vZHMuU3RyaW5nTWFwLnQgPVxuICAgICAgICBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZmlsZV9saW5lc1xuICAgICAgaW5cbiAgICAgIGxldCBmaWxlX2xpbmVfY2F0YWxvZyA6IHN0cmluZyBsaXN0ID1cbiAgICAgICAgTGlzdC5tYXAgZnN0IChNb2RzLlN0cmluZ01hcC5iaW5kaW5ncyBmaWxlX2xpbmVzKVxuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIGZpbGVfbGluZV9jYXRhbG9nXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBnZXRfZmlsZV9saW5lIH5maWxlX2xpbmVfaWRcbiAgICAgICAgKHN0YXR1cyA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dCkgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBmaWxlX2xpbmVfbGlzdCA9IHN0YXR1cy5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzIGluXG4gICAgICBtYXRjaCBNb2RzLlN0cmluZ01hcC5maW5kX29wdGlvbiBmaWxlX2xpbmVfaWQgZmlsZV9saW5lX2xpc3Qgd2l0aFxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCJpZCAlcyBub3QgZm91bmRcIiBmaWxlX2xpbmVfaWQgaW5cbiAgICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgTm90X2ZvdW5kIG1cbiAgICAgIHwgU29tZSBsaW5lcyAtPiBSZXN1bHRfdXRpbC5vayAoTGlzdC5yZXYgbGluZXMpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX2ZpbGVfbGluZVxuICAgICAgICA6IEFwaV90eXBlc190LmZpbGVfbGluZV9jYXRhbG9nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZGV0YWlsX3Byb2plY3Rpb24gfnNpbXVsYXRpb24gfnN5c3RlbV9wcm9jZXNzXG4gICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19maWxlX2xpbmVcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9maWxlX2xpbmUgKGZpbGVfbGluZV9pZCA6IHN0cmluZylcbiAgICAgICAgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfZmlsZV9saW5lIH5maWxlX2xpbmVfaWQpXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfZmx1eF9tYXAgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBpbmZvX2ZsdXhfbWFwIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluX2NhdGFsb2cgQXBpLnJlc3VsdCA9XG4gICAgICBsZXQgZmx1eF9tYXBfY2F0YWxvZyA9XG4gICAgICAgIExpc3QubWFwIGZzdCBkZXRhaWwuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGluc1xuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIGZsdXhfbWFwX2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9mbHV4X21hcCAoZmx1eF9tYXBfaWQgOiBBcGlfdHlwZXNfdC5kaW5faWQpXG4gICAgICAgIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QuZGluIEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IGZsdXhfbWFwc19saXN0ID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2RpbnMgaW5cbiAgICAgIHRyeSBSZXN1bHRfdXRpbC5vayAoTGlzdC5hc3NvYyBmbHV4X21hcF9pZCBmbHV4X21hcHNfbGlzdClcbiAgICAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gRm9ybWF0LnNwcmludGYgXCJpZCAlcyBub3QgZm91bmRcIiBmbHV4X21hcF9pZCBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fY2F0YWxvZ19kaW4gOiBBcGlfdHlwZXNfdC5kaW5fY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjpzZWxmI2luZm9fZmx1eF9tYXBcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9kaW4gKGZsdXhfbWFwX2lkIDogQXBpX3R5cGVzX3QuZGluX2lkKVxuICAgICAgICA6IEFwaV90eXBlc190LmRpbiBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfZmx1eF9tYXAgZmx1eF9tYXBfaWQpXG4gIGVuZFxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfbG9nX21lc3NhZ2UgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuICA9XG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgbXV0YWJsZSB2aXJ0dWFsIHNpbXVsYXRpb25cbiAgICAgICAgOiAoQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wYXJhbWV0ZXIgKiBLYXBwYV9mYWNhZGUudCkgb3B0aW9uXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBsb2dfbWVzc2FnZSAoZGV0YWlsIDogQXBpX2RhdGEuc2ltdWxhdGlvbl9kZXRhaWxfb3V0cHV0KVxuICAgICAgICA6IEFwaV90eXBlc190LmxvZ19tZXNzYWdlIEFwaS5yZXN1bHQgPVxuICAgICAgUmVzdWx0X3V0aWwub2sgZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2xvZ19tZXNzYWdlc1xuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlXG4gICAgICAgIDogQXBpX3R5cGVzX3QubG9nX21lc3NhZ2UgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnByb2plY3Rpb246c2VsZiNsb2dfbWVzc2FnZVxuICBlbmRcblxubGV0IHNlbGVjdF9vYnNlcnZhYmxlcyAocGxvdF9saW1pdCA6IEFwaV90eXBlc190LnBsb3RfbGltaXQpXG4gICAgKHBsb3QgOiBBcGlfdHlwZXNfdC5wbG90KSA6IEFwaV90eXBlc190LnBsb3QgPVxuICBsZXQgcGxvdF90aW1lX3NlcmllcyA9IFRvb2xzLmFycmF5X3Jldl9vZl9saXN0IHBsb3QuRGF0YS5wbG90X3NlcmllcyBpblxuICBsZXQgcGxvdF9kZXRhaWxfc2l6ZSA9IEFycmF5Lmxlbmd0aCBwbG90X3RpbWVfc2VyaWVzIGluXG4gIGxldCBwbG90X2xpbWl0X29mZnNldCA9IHBsb3RfbGltaXQuQXBpX3R5cGVzX3QucGxvdF9saW1pdF9vZmZzZXQgaW5cbiAgbGV0IHBsb3RfbGltaXRfcG9pbnRzID0gcGxvdF9saW1pdC5BcGlfdHlwZXNfdC5wbG90X2xpbWl0X3BvaW50cyBpblxuICBsZXQgc3RhcnQsIGxlbiA9XG4gICAgbWF0Y2ggcGxvdF9saW1pdF9vZmZzZXQsIHBsb3RfbGltaXRfcG9pbnRzIHdpdGhcbiAgICB8IE5vbmUsIE5vbmUgLT4gMCwgcGxvdF9kZXRhaWxfc2l6ZVxuICAgIHwgU29tZSBvZmZzZXQsIE5vbmUgLT4gb2Zmc2V0LCBtYXggMCAocGxvdF9kZXRhaWxfc2l6ZSAtIG9mZnNldClcbiAgICB8IE5vbmUsIFNvbWUgbmIgLT4gbWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBuYiksIG1pbiBuYiBwbG90X2RldGFpbF9zaXplXG4gICAgfCBTb21lIG9mZnNldCwgU29tZSBuYiAtPiBvZmZzZXQsIG1pbiBuYiAobWF4IDAgKHBsb3RfZGV0YWlsX3NpemUgLSBvZmZzZXQpKVxuICBpblxuICBsZXQgbmV3X3Bsb3RfdGltZV9zZXJpZXMgPVxuICAgIExpc3QucmV2IChBcnJheS50b19saXN0IChBcnJheS5zdWIgcGxvdF90aW1lX3NlcmllcyBzdGFydCBsZW4pKVxuICBpblxuICB7IHBsb3Qgd2l0aCBEYXRhLnBsb3Rfc2VyaWVzID0gbmV3X3Bsb3RfdGltZV9zZXJpZXMgfVxuXG5jbGFzcyB2aXJ0dWFsIG1hbmFnZXJfcGxvdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9wbG90IChwbG90X2xpbWl0IDogQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIChkZXRhaWwgOiBBcGlfZGF0YS5zaW11bGF0aW9uX2RldGFpbF9vdXRwdXQpXG4gICAgICAgIDogQXBpX3R5cGVzX3QucGxvdCBBcGkucmVzdWx0ID1cbiAgICAgIG1hdGNoIGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9wbG90IHdpdGhcbiAgICAgIHwgU29tZSBwbG90IC0+IFJlc3VsdF91dGlsLm9rIChzZWxlY3Rfb2JzZXJ2YWJsZXMgcGxvdF9saW1pdCBwbG90KVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIGxldCBtIDogc3RyaW5nID0gXCJwbG90IG5vdCBhdmFpbGFibGVcIiBpblxuICAgICAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbVxuXG4gICAgbWV0aG9kIHNpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyIDogQXBpX3R5cGVzX3QucGxvdF9wYXJhbWV0ZXIpXG4gICAgICAgIDogQXBpX3R5cGVzX3QucGxvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGRldGFpbF9wcm9qZWN0aW9uIH5zaW11bGF0aW9uIH5zeXN0ZW1fcHJvY2Vzc1xuICAgICAgICB+cHJvamVjdGlvbjooc2VsZiNnZXRfcGxvdCBwbG90X3BhcmFtZXRlcilcbiAgZW5kXG5cbmNsYXNzIHZpcnR1YWwgbWFuYWdlcl9zbmFwc2hvdCAoc3lzdGVtX3Byb2Nlc3MgOiBLYXBwYV9mYWNhZGUuc3lzdGVtX3Byb2Nlc3MpID1cbiAgb2JqZWN0IChzZWxmKVxuICAgIHZhbCBtdXRhYmxlIHZpcnR1YWwgc2ltdWxhdGlvblxuICAgICAgICA6IChBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciAqIEthcHBhX2ZhY2FkZS50KSBvcHRpb25cblxuICAgIG1ldGhvZCBwcml2YXRlIGluZm9fc25hcHNob3QgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9jYXRhbG9nIEFwaS5yZXN1bHQgPVxuICAgICAgbGV0IHNuYXBzaG90cyA9IGRldGFpbC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHMgaW5cbiAgICAgIGxldCBzbmFwc2hvdF9jYXRhbG9nID1cbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuZm9sZCAoZnVuIHggXyBhY2MgLT4geCA6OiBhY2MpIHNuYXBzaG90cyBbXVxuICAgICAgaW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIHNuYXBzaG90X2NhdGFsb2dcblxuICAgIG1ldGhvZCBwcml2YXRlIGdldF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZClcbiAgICAgICAgKGRldGFpbCA6IEFwaV9kYXRhLnNpbXVsYXRpb25fZGV0YWlsX291dHB1dClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0ID1cbiAgICAgIGxldCBzbmFwc2hvdF9saXN0ID0gZGV0YWlsLkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90cyBpblxuICAgICAgbWF0Y2ggTW9kcy5TdHJpbmdNYXAuZmluZF9vcHRpb24gc25hcHNob3RfaWQgc25hcHNob3RfbGlzdCB3aXRoXG4gICAgICB8IFNvbWUgeCAtPiBSZXN1bHRfdXRpbC5vayB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgbGV0IG0gOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcImlkICVzIG5vdCBmb3VuZFwiIHNuYXBzaG90X2lkIGluXG4gICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyB+cmVzdWx0X2NvZGU6YE5vdF9mb3VuZCBtXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9jYXRhbG9nX3NuYXBzaG90XG4gICAgICAgIDogQXBpX3R5cGVzX3Quc25hcHNob3RfY2F0YWxvZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIChkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgIH5wcm9qZWN0aW9uOnNlbGYjaW5mb19zbmFwc2hvdFxuICAgICAgICA6IEFwaV90eXBlc190LnNuYXBzaG90X2NhdGFsb2cgQXBpLnJlc3VsdCBMd3QudClcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RldGFpbF9zbmFwc2hvdCAoc25hcHNob3RfaWQgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIChkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3NcbiAgICAgICAgIH5wcm9qZWN0aW9uOihzZWxmI2dldF9zbmFwc2hvdCBzbmFwc2hvdF9pZClcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zbmFwc2hvdCBBcGkucmVzdWx0IEx3dC50KVxuICBlbmRcblxuY2xhc3MgbWFuYWdlcl9zaW11bGF0aW9uIHByb2plY3QgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA6XG4gIEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24gPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgc2ltdWxhdGlvbiA9IE5vbmVcblxuICAgIG1ldGhvZCBzZWNyZXRfc2ltdWxhdGlvbl9sb2FkIHBhdHRlcm5TaGFyaW5nIHRleHQgb3ZlcndyaXRlcyA9XG4gICAgICBsZXQgYXN0ID0gdGV4dCBpblxuICAgICAgbGV0IGhhcmFraXJpLCBfID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgIGxldCBfID1cbiAgICAgICAgcHJvamVjdCNzZXRfc3RhdGVcbiAgICAgICAgICAoTHd0LnBpY2tcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICBLYXBwYV9mYWNhZGUucGFyc2UgfnBhdHRlcm5TaGFyaW5nIGFzdCBvdmVyd3JpdGVzIHN5c3RlbV9wcm9jZXNzO1xuICAgICAgICAgICAgICAgKCBoYXJha2lyaSA+Pj0gZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwuZXJyb3JcbiAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICBBcGlfY29tbW9uLmVycm9yX21zZyBcIlBhcnNlIGNhbmNlbGxlZCBieSBtb2RpZmllZCBmaWxlc1wiO1xuICAgICAgICAgICAgICAgICAgICAgIF0pICk7XG4gICAgICAgICAgICAgXSlcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2RlbGV0ZSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3NpbXVsYXRpb25fc3RvcCA+Pj0gZnVuIF8gLT5cbiAgICAgIGxldCAoKSA9IHNpbXVsYXRpb24gPC0gTm9uZSBpblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9zdGFydFxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyLCBzaW11bGF0aW9uX3NlZWQgPVxuICAgICAgICBwYXRjaF9wYXJhbWV0ZXIgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgIGluXG4gICAgICBtYXRjaCBzaW11bGF0aW9uIHdpdGhcbiAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQ29uZmxpY3RcbiAgICAgICAgICAgICBcIkEgc2ltdWxhdGlvbiBhbHJlYWR5IGV4aXN0c1wiKVxuICAgICAgfCBOb25lIC0+XG4gICAgICAgIHByb2plY3QjZ2V0X3N0YXRlICgpID4+PSAoIGZ1bmN0aW9uXG4gICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgICAgIFwiQ2Fubm90IHN0YXJ0IHNpbXVsYXRpb246IFBhcnNlIG5vdCBkb25lXCIpXG4gICAgICAgIHwgU29tZSBwYXJzZSAtPlxuICAgICAgICAgIFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5vazooZnVuIChmYWNhZGUgOiBLYXBwYV9mYWNhZGUudCkgLT5cbiAgICAgICAgICAgICAgS2FwcGFfZmFjYWRlLnN0YXJ0IH5zeXN0ZW1fcHJvY2VzcyB+cGFyYW1ldGVyOnNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgfnQ6ZmFjYWRlXG4gICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgIH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHNpbXVsYXRpb24gPC0gU29tZSAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIsIGZhY2FkZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX2FydGlmYWN0X3NpbXVsYXRpb25fc2VlZCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9zZWVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpXG4gICAgICAgICAgICBwYXJzZSApXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9wYXJhbWV0ZXJcbiAgICAgICAgOiBBcGlfdHlwZXNfdC5zaW11bGF0aW9uX3BhcmFtZXRlciBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIG1hdGNoIHNpbXVsYXRpb24gd2l0aFxuICAgICAgfCBTb21lIChwYXJhbWV0ZXIsIF8pIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHBhcmFtZXRlcilcbiAgICAgIHwgTm9uZSAtPlxuICAgICAgICBsZXQgbSA9IFwiTm8gc2ltdWxhdGlvbiBhdmFpbGFibGVcIiBpblxuICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBOb3RfZm91bmQgbSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3Jhd190cmFjZSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChLYXBwYV9mYWNhZGUuZ2V0X3Jhd190cmFjZSB0KSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9vdXRwdXRzX3ppcCA9XG4gICAgICBsZXQgYWRkX3NuYXBzaG90IGZpbGUgZmlsZW5hbWUgbmFtZSBzbmFwc2hvdCA9XG4gICAgICAgIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBuYW1lIFwiLmRvdFwiIHRoZW5cbiAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeVxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhQC5cIlxuICAgICAgICAgICAgICAgKERhdGEucHJpbnRfZG90X3NuYXBzaG90ID91dWlkOk5vbmUpXG4gICAgICAgICAgICAgICBzbmFwc2hvdClcbiAgICAgICAgICAgIGZpbGVcbiAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL1wiIF4gbmFtZSlcbiAgICAgICAgZWxzZSBpZiBGaWxlbmFtZS5jaGVja19zdWZmaXggbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAoRGF0YS5zdHJpbmdfb2Zfc25hcHNob3QgP2xlbjpOb25lIHNuYXBzaG90KVxuICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKVxuICAgICAgICBlbHNlIChcbiAgICAgICAgICBsZXQgbmFtZScgPSBUb29scy5jaG9wX3N1ZmZpeF9vcl9leHRlbnNpb24gbmFtZSBcIi5rYVwiIGluXG4gICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgKERhdGEucHJpbnRfc25hcHNob3QgP3V1aWQ6Tm9uZSkgc25hcHNob3QpXG4gICAgICAgICAgICBmaWxlXG4gICAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIG5hbWUnKVxuICAgICAgICApXG4gICAgICBpblxuICAgICAgbGV0IGFkZF9kaW4gZmlsZSBmaWxlbmFtZSAoZGluX25hbWUsIGZsdXgpID1cbiAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAoaWYgRmlsZW5hbWUuY2hlY2tfc3VmZml4IGRpbl9uYW1lIFwiLmh0bWxcIiB0aGVuXG4gICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiJWFALlwiIERhdGEucHJpbnRfaHRtbF9kaW4gZmx1eFxuICAgICAgICAgICBlbHNlIGlmIEZpbGVuYW1lLmNoZWNrX3N1ZmZpeCBkaW5fbmFtZSBcIi5qc29uXCIgdGhlblxuICAgICAgICAgICAgIERhdGEuc3RyaW5nX29mX2RpbiBmbHV4XG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBGb3JtYXQuYXNwcmludGYgXCIlYUAuXCIgKERhdGEucHJpbnRfZG90X2RpbiA/dXVpZDpOb25lKSBmbHV4KVxuICAgICAgICAgIGZpbGVcbiAgICAgICAgICAoZmlsZW5hbWUgXiBcIi9cIiBeIGRpbl9uYW1lKVxuICAgICAgaW5cbiAgICAgIGxldCBwcm9qZWN0aW9uIHQgPVxuICAgICAgICB0cnlcbiAgICAgICAgICBsZXQgZmlsZW5hbWUgPSBcInNpbXVsYXRpb25fb3V0cHV0c1wiIGluXG4gICAgICAgICAgbGV0IGZpbGUgPSBGYWtlemlwLm9wZW5fb3V0IChmaWxlbmFtZSBeIFwiLnppcFwiKSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBGYWtlemlwLmFkZF9lbnRyeSB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X2lucHV0cyBmaWxlXG4gICAgICAgICAgICAgIChmaWxlbmFtZSBeIFwiL2lucHV0cy5rYVwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5IHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfbG9nX21lc3NhZ2VzIGZpbGVcbiAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvbG9nLnR4dFwiKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIG1hdGNoIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfcGxvdCB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gKClcbiAgICAgICAgICAgIHwgU29tZSBwbG90IC0+XG4gICAgICAgICAgICAgIEZha2V6aXAuYWRkX2VudHJ5XG4gICAgICAgICAgICAgICAgKERhdGEuZXhwb3J0X3Bsb3QgfmlzX3RzdjpmYWxzZSBwbG90KVxuICAgICAgICAgICAgICAgIGZpbGUgKGZpbGVuYW1lIF4gXCIvZGF0YS5jc3ZcIilcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBNb2RzLlN0cmluZ01hcC5pdGVyXG4gICAgICAgICAgICAgIChmdW4gbmFtZSBjb250ZW50IC0+XG4gICAgICAgICAgICAgICAgRmFrZXppcC5hZGRfZW50cnlcbiAgICAgICAgICAgICAgICAgIChTdHJpbmcuY29uY2F0IFwiXFxuXCIgKExpc3QucmV2IGNvbnRlbnQpKVxuICAgICAgICAgICAgICAgICAgZmlsZVxuICAgICAgICAgICAgICAgICAgKGZpbGVuYW1lIF4gXCIvXCIgXiBuYW1lKSlcbiAgICAgICAgICAgICAgdC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG4gICAgICAgICAgaW5cbiAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgTGlzdC5pdGVyIChhZGRfZGluIGZpbGUgZmlsZW5hbWUpXG4gICAgICAgICAgICAgIHQuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9vdXRwdXRfZGluc1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLml0ZXJcbiAgICAgICAgICAgICAgKGFkZF9zbmFwc2hvdCBmaWxlIGZpbGVuYW1lKVxuICAgICAgICAgICAgICB0LkFwaV90eXBlc190LnNpbXVsYXRpb25fb3V0cHV0X3NuYXBzaG90c1xuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IG91dCA9IEZha2V6aXAuY2xvc2Vfb3V0IGZpbGUgaW5cbiAgICAgICAgICBSZXN1bHRfdXRpbC5vayBvdXRcbiAgICAgICAgd2l0aCBGYWtlemlwLkVycm9yIChfLCBmLCBlKSAtPlxuICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyAoXCJaaXAgZXJyb3IgaW4gXCIgXiBmIF4gXCI6IFwiIF4gZSlcbiAgICAgIGluXG4gICAgICBkZXRhaWxfcHJvamVjdGlvbiB+c2ltdWxhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnByb2plY3Rpb25cblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX3BhdXNlIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5wYXVzZSB+c3lzdGVtX3Byb2Nlc3MgfnQgPj49IGZ1biBfIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgc2ltdWxhdGlvbl9zdG9wIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5zdG9wIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb25cbiAgICAgICAgKHNpbXVsYXRpb25fcGVydHVyYmF0aW9uIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pXG4gICAgICAgIDogc3RyaW5nIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnBlcnR1cmJhdGlvbiB+c3lzdGVtX3Byb2Nlc3MgfnRcbiAgICAgICAgICAgIH5wZXJ0dXJiYXRpb246c2ltdWxhdGlvbl9wZXJ0dXJiYXRpb25cbiAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgIH5vazooZnVuIHMgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgcykpXG4gICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9tZXNzYWdlcyBlcnJvcnMpKSlcblxuICAgIG1ldGhvZCBzaW11bGF0aW9uX2NvbnRpbnVlIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpXG4gICAgICAgIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEthcHBhX2ZhY2FkZS5jb250aW51ZSB+c3lzdGVtX3Byb2Nlc3MgfnQgfnBhdXNlX2NvbmRpdGlvblxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9pbmZvIDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgYmluZF9zaW11bGF0aW9uIHNpbXVsYXRpb24gKGZ1biB0IC0+XG4gICAgICAgICAgS2FwcGFfZmFjYWRlLnByb2dyZXNzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcHJvZ3Jlc3MgLT5cbiAgICAgICAgICAgICAgICAgIEthcHBhX2ZhY2FkZS5vdXRwdXRzIH5zeXN0ZW1fcHJvY2VzcyB+dFxuICAgICAgICAgICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIG91dHB1dHMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChSZXN1bHRfdXRpbC5va1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChBcGlfZGF0YS5hcGlfc2ltdWxhdGlvbl9zdGF0dXMgcHJvZ3Jlc3Mgb3V0cHV0cykpKVxuICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3JzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpKVxuICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JzKSkpXG5cbiAgICBtZXRob2Qgc2ltdWxhdGlvbl9lZmZpY2llbmN5ID1cbiAgICAgIGJpbmRfc2ltdWxhdGlvbiBzaW11bGF0aW9uIChmdW4gdCAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChLYXBwYV9mYWNhZGUuZWZmaWNpZW5jeSB0KSkpXG5cbiAgICBpbmhlcml0IG1hbmFnZXJfZmlsZV9saW5lIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2ZsdXhfbWFwIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX2xvZ19tZXNzYWdlIHN5c3RlbV9wcm9jZXNzXG4gICAgaW5oZXJpdCBtYW5hZ2VyX3Bsb3Qgc3lzdGVtX3Byb2Nlc3NcbiAgICBpbmhlcml0IG1hbmFnZXJfc25hcHNob3Qgc3lzdGVtX3Byb2Nlc3NcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgaW5pdF9jb21wcmVzc2lvbl9tb2RlID0gZnVuY3Rpb25cbiAgfCBTdG9yeV9qc29uLkNhdXNhbCAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IHRydWU7IEFwaS53ZWFrID0gZmFsc2U7IEFwaS5zdHJvbmcgPSBmYWxzZSB9XG4gIHwgU3RvcnlfanNvbi5XZWFrIC0+XG4gICAgeyBBcGkuY2F1c2FsID0gZmFsc2U7IEFwaS53ZWFrID0gdHJ1ZTsgQXBpLnN0cm9uZyA9IGZhbHNlIH1cbiAgfCBTdG9yeV9qc29uLlN0cm9uZyAtPlxuICAgIHsgQXBpLmNhdXNhbCA9IGZhbHNlOyBBcGkud2VhayA9IGZhbHNlOyBBcGkuc3Ryb25nID0gdHJ1ZSB9XG5cbmxldCBhZGRfY29tcHJlc3Npb25fbW9kZSB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH0gPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uQ2F1c2FsIC0+IHsgQXBpLmNhdXNhbCA9IHRydWU7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH1cbiAgfCBTdG9yeV9qc29uLldlYWsgLT4geyBBcGkuY2F1c2FsOyBBcGkud2VhayA9IHRydWU7IEFwaS5zdHJvbmcgfVxuICB8IFN0b3J5X2pzb24uU3Ryb25nIC0+IHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgPSB0cnVlIH1cblxubGV0IHByaW50X2NvbXByZXNzaW9uX21vZGVzIGYgeyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID1cbiAgbGV0ICgpID0gaWYgY2F1c2FsIHRoZW4gRm9ybWF0LnBwX3ByaW50X3N0cmluZyBmIFwiQ0FVU0FMXCIgaW5cbiAgbGV0ICgpID1cbiAgICBpZiB3ZWFrIHRoZW5cbiAgICAgIEZvcm1hdC5wcF9wcmludF9zdHJpbmcgZlxuICAgICAgICAoaWYgY2F1c2FsIHRoZW5cbiAgICAgICAgICAgXCIsIFdFQUtcIlxuICAgICAgICAgZWxzZVxuICAgICAgICAgICBcIldFQUtcIilcbiAgaW5cbiAgaWYgc3Ryb25nIHRoZW5cbiAgICBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGZcbiAgICAgIChpZiBjYXVzYWwgfHwgd2VhayB0aGVuXG4gICAgICAgICBcIiwgU1RST05HXCJcbiAgICAgICBlbHNlXG4gICAgICAgICBcIlNUUk9OR1wiKVxuXG50eXBlIHN0YXRlX3QgPSB7XG4gIHJ1bm5pbmc6IGJvb2w7XG4gIHByb2dyZXNzOiBTdG9yeV9qc29uLnByb2dyZXNzX2JhciBvcHRpb247XG4gIGxvZzogc3RyaW5nIGxpc3Q7XG4gIHN0b3JpZXM6XG4gICAgKEFwaS5jb21wcmVzc2lvbl9tb2Rlc1xuICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0IGxpc3RcbiAgICAqIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoKVxuICAgIE1vZHMuSW50TWFwLnQ7XG59XG5cbnR5cGUgc3RhdGUgPSBzdGF0ZV90IHJlZlxuXG4oKmxldCBzdGF0ZV9lcSBhIGIgPVxuICBhLnJ1bm5pbmcgPSBiLnJ1bm5pbmcgJiZcbiAgT3B0aW9uX3V0aWwuZXF1YWwgKD0pIGEucHJvZ3Jlc3MgYi5wcm9ncmVzcyAmJlxuICAodHJ5IExpc3QuZm9yX2FsbDIgKGZ1biB4IHkgLT4gU3RyaW5nLmNvbXBhcmUgeCB5ID0gMCkgYS5sb2cgYi5sb2dcbiAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlKVxuICAmJiBNb2RzLkludE1hcC5lcXVhbCAoPSkgYS5zdG9yaWVzIGIuc3RvcmllcyopXG5cbmxldCBpbml0aWFsX3N0YXRlID1cbiAgeyBydW5uaW5nID0gZmFsc2U7IHByb2dyZXNzID0gTm9uZTsgbG9nID0gW107IHN0b3JpZXMgPSBNb2RzLkludE1hcC5lbXB0eSB9XG5cbmxldCBjb250cm9sbGVyIHMgPSBmdW5jdGlvblxuICB8IFN0b3J5X2pzb24uUHJvZ3Jlc3MgcCAtPlxuICAgIHsgcnVubmluZyA9IHMucnVubmluZzsgcHJvZ3Jlc3MgPSBTb21lIHA7IGxvZyA9IHMubG9nOyBzdG9yaWVzID0gcy5zdG9yaWVzIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN0YXJ0LCBtKSAtPlxuICAgIHtcbiAgICAgIHJ1bm5pbmcgPSB0cnVlO1xuICAgICAgcHJvZ3Jlc3MgPSBOb25lO1xuICAgICAgbG9nID0gWyBtIF07XG4gICAgICBzdG9yaWVzID0gTW9kcy5JbnRNYXAuZW1wdHk7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uSW5wcm9ncmVzcywgbSkgLT5cbiAgICB7XG4gICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uUGhhc2UgKFN0b3J5X2pzb24uRmFpbGx1cmUsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgIHByb2dyZXNzID0gcy5wcm9ncmVzcztcbiAgICAgIGxvZyA9IG0gOjogcy5sb2c7XG4gICAgICBzdG9yaWVzID0gcy5zdG9yaWVzO1xuICAgIH1cbiAgfCBTdG9yeV9qc29uLlBoYXNlIChTdG9yeV9qc29uLlN1Y2Nlc3MsIG0pIC0+XG4gICAge1xuICAgICAgcnVubmluZyA9IGZhbHNlO1xuICAgICAgcHJvZ3Jlc3MgPSBzLnByb2dyZXNzO1xuICAgICAgbG9nID0gbSA6OiBzLmxvZztcbiAgICAgIHN0b3JpZXMgPSBzLnN0b3JpZXM7XG4gICAgfVxuICB8IFN0b3J5X2pzb24uU3RvcnkgYyAtPlxuICAgIChtYXRjaCBjLlN0b3J5X2pzb24uc3Rvcnkgd2l0aFxuICAgIHwgU3RvcnlfanNvbi5OZXcgZSAtPlxuICAgICAge1xuICAgICAgICBydW5uaW5nID0gcy5ydW5uaW5nO1xuICAgICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICAgIGxvZyA9IHMubG9nO1xuICAgICAgICBzdG9yaWVzID1cbiAgICAgICAgICBNb2RzLkludE1hcC5hZGQgZS5TdG9yeV9qc29uLmlkXG4gICAgICAgICAgICAoIGluaXRfY29tcHJlc3Npb25fbW9kZSBjLlN0b3J5X2pzb24uc3RvcnlfbW9kZSxcbiAgICAgICAgICAgICAgWyBjLlN0b3J5X2pzb24ubG9nX2luZm8gXSxcbiAgICAgICAgICAgICAgZS5TdG9yeV9qc29uLmdyYXBoIClcbiAgICAgICAgICAgIHMuc3RvcmllcztcbiAgICAgIH1cbiAgICB8IFN0b3J5X2pzb24uU2FtZV9hcyBpIC0+XG4gICAgICAobWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaSBzLnN0b3JpZXMgd2l0aFxuICAgICAgfCBTb21lIChjbSwgaW5mb3MsIGdyYXBoKSAtPlxuICAgICAgICB7XG4gICAgICAgICAgcnVubmluZyA9IHMucnVubmluZztcbiAgICAgICAgICBwcm9ncmVzcyA9IHMucHJvZ3Jlc3M7XG4gICAgICAgICAgbG9nID0gcy5sb2c7XG4gICAgICAgICAgc3RvcmllcyA9XG4gICAgICAgICAgICBNb2RzLkludE1hcC5hZGQgaVxuICAgICAgICAgICAgICAoIGFkZF9jb21wcmVzc2lvbl9tb2RlIGNtIGMuU3RvcnlfanNvbi5zdG9yeV9tb2RlLFxuICAgICAgICAgICAgICAgIGMuU3RvcnlfanNvbi5sb2dfaW5mbyA6OiBpbmZvcyxcbiAgICAgICAgICAgICAgICBncmFwaCApXG4gICAgICAgICAgICAgIHMuc3RvcmllcztcbiAgICAgICAgfVxuICAgICAgfCBOb25lIC0+IGFzc2VydCBmYWxzZSkpXG5cbmxldCByZWNlaXZlIHVwZGF0ZV9zdGF0ZSB4ID1cbiAgdXBkYXRlX3N0YXRlIChTdG9yeV9qc29uLm1lc3NhZ2Vfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG5sZXQgaW5pdF9zdGF0ZSAoKSA9XG4gIGxldCBjdXJyZW50X3N0YXRlID0gcmVmIGluaXRpYWxfc3RhdGUgaW5cbiAgY3VycmVudF9zdGF0ZSwgZnVuIHggLT4gY3VycmVudF9zdGF0ZSA6PSBjb250cm9sbGVyICFjdXJyZW50X3N0YXRlIHhcblxuY2xhc3MgdmlydHVhbCBuZXdfY2xpZW50IH5wb3N0IGN1cnJlbnRfc3RhdGUgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBjb25maWdfc3RvcnlfY29tcHV0YXRpb24geyBBcGkuY2F1c2FsOyBBcGkud2VhazsgQXBpLnN0cm9uZyB9ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBwb3N0XG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLnRvX3N0cmluZ1xuICAgICAgICAgICAgICAgKGBMaXN0XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBgU3RyaW5nIFwiQ09ORklHXCI7XG4gICAgICAgICAgICAgICAgICAgYEFzc29jXG4gICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgIFwibm9uZVwiLCBgQm9vbCBjYXVzYWw7XG4gICAgICAgICAgICAgICAgICAgICAgIFwid2Vha1wiLCBgQm9vbCB3ZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICBcInN0cm9uZ1wiLCBgQm9vbCBzdHJvbmc7XG4gICAgICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICAgICBdKSlcbiAgICAgICAgaW5cbiAgICAgICAgTHd0LnJldHVybl9vayAoKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgYWdlbnQgaXMgZGVhZFwiXG5cbiAgICBtZXRob2QgcmF3X2xhdW5jaF9zdG9yeV9jb21wdXRhdGlvbiB0cmFjZV90ZXh0ID1cbiAgICAgIGlmIHNlbGYjaXNfcnVubmluZyB0aGVuIChcbiAgICAgICAgbGV0ICgpID0gY3VycmVudF9zdGF0ZSA6PSB7IGluaXRpYWxfc3RhdGUgd2l0aCBydW5uaW5nID0gdHJ1ZSB9IGluXG4gICAgICAgIGxldCAoKSA9IHBvc3QgKFwiW1xcXCJSVU5cXFwiLCBcIiBeIHRyYWNlX3RleHQgXiBcIl1cIikgaW5cbiAgICAgICAgTHd0LnJldHVybl9vayAoKVxuICAgICAgKSBlbHNlXG4gICAgICAgIEx3dC5yZXR1cm5fZXJyb3IgXCJLYVN0b3IgYWdlbnQgaXMgZGVhZFwiXG5cbiAgICBtZXRob2Qgc3RvcnlfbG9nID0gIWN1cnJlbnRfc3RhdGUubG9nXG4gICAgbWV0aG9kIHN0b3J5X2lzX2NvbXB1dGluZyA9ICFjdXJyZW50X3N0YXRlLnJ1bm5pbmdcbiAgICBtZXRob2Qgc3RvcnlfcHJvZ3Jlc3MgPSAhY3VycmVudF9zdGF0ZS5wcm9ncmVzc1xuICAgIG1ldGhvZCBzdG9yeV9saXN0ID0gIWN1cnJlbnRfc3RhdGUuc3Rvcmllc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgbWFpbGJveCA9XG4gICggaW50LFxuICAgIChZb2pzb24uQmFzaWMudCwgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLm1ldGhvZF9oYW5kbGVyKSBSZXN1bHQucmVzdWx0XG4gICAgTHd0LnUgKVxuICBIYXNodGJsLnRcblxubGV0IHJlcGx5X29mX3N0cmluZyB4ID1cbiAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHggd2l0aFxuICB8IGBBc3NvYyBbIChcImlkXCIsIGBJbnQgaWQpOyAoXCJjb2RlXCIsIGBTdHJpbmcgXCJFUlJPUlwiKTsgKFwiZGF0YVwiLCBlcnIpIF0gLT5cbiAgICBTb21lIGlkLCBSZXN1bHQuRXJyb3IgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5vZl9qc29uIGVycilcbiAgfCBgQXNzb2MgWyAoXCJpZFwiLCBgSW50IGlkKTsgKFwiY29kZVwiLCBgU3RyaW5nIFwiU1VDQ0VTU1wiKTsgKFwiZGF0YVwiLCBkYXRhKSBdIC0+XG4gICAgU29tZSBpZCwgUmVzdWx0Lk9rIGRhdGFcbiAgfCB4IC0+XG4gICAgKCBOb25lLFxuICAgICAgUmVzdWx0LkVycm9yXG4gICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yXG4gICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYnVpbGRfdW5jYXVnaHRfZXhjZXB0aW9uXG4gICAgICAgICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiXG4gICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgIChcIkludmFsaWQgcmVzcG9uc2UgZnJvbSBLYVNhOiBcIiBeIFlvanNvbi5CYXNpYy50b19zdHJpbmcgeClcbiAgICAgICAgICAgICAgRXhpdClcbiAgICAgICAgICAgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmVtcHR5X2Vycm9yX2hhbmRsZXIpIClcblxubGV0IHJlY2VpdmUgbWFpbGJveCB4ID1cbiAgbWF0Y2ggcmVwbHlfb2Zfc3RyaW5nIHggd2l0aFxuICB8IFNvbWUgaWQsIG91dCAtPlxuICAgIGxldCB0aHJlYWQgPSBIYXNodGJsLmZpbmQgbWFpbGJveCBpZCBpblxuICAgIGxldCAoKSA9IEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQgaW5cbiAgICBMd3Qud2FrZXVwIHRocmVhZCBvdXRcbiAgfCBOb25lLCBfIC0+ICgpXG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcbmxldCBpc19jb21wdXRpbmcgbWFpbGJveCA9IEhhc2h0YmwubGVuZ3RoIG1haWxib3ggPD4gMFxuXG5jbGFzcyBuZXdfY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IChtYWlsYm94IDogbWFpbGJveCkgOlxuICBBcGkubWFuYWdlcl9zdGF0aWNfYW5hbHlzaXMgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG5cbiAgICBtZXRob2QgcHJpdmF0ZSByYXdfbWVzc2FnZSBwb3N0IHJlcXVlc3QgPVxuICAgICAgaWYgaXNfcnVubmluZyAoKSB0aGVuIChcbiAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgbGV0IG91dGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTAyNCBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJ7aWQ6XCIgaW5cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIChzdHJpbmdfb2ZfaW50IGlkKSBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCIsZGF0YTpcIiBpblxuICAgICAgICBsZXQgKCkgPSByZXF1ZXN0IG91dGJ1ZiBpblxuICAgICAgICBsZXQgKCkgPSBCdWZmZXIuYWRkX3N0cmluZyBvdXRidWYgXCJ9XCIgaW5cbiAgICAgICAgbGV0ICgpID0gcG9zdCAoQnVmZmVyLmNvbnRlbnRzIG91dGJ1ZikgaW5cbiAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgZmVlZGVyIGluXG4gICAgICAgIGxldCAoKSA9IGlkIDwtIGlkICsgMSBpblxuICAgICAgICByZXN1bHRcbiAgICAgICkgZWxzZVxuICAgICAgICBMd3QucmV0dXJuX2Vycm9yXG4gICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgIH5maWxlX25hbWU6XCJrYXNhX2NsaWVudFwiIH5tZXNzYWdlOlwiS2FTYSBhZ2VudCBpcyBkZWFkXCIgRXhpdClcbiAgICAgICAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlcilcblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgcmVxdWVzdCA9XG4gICAgICBzZWxmI3Jhd19tZXNzYWdlIHBvc3QgKGZ1biBvdXRiIC0+IFlvanNvbi5CYXNpYy50b19idWZmZXIgb3V0YiByZXF1ZXN0KVxuXG4gICAgbWV0aG9kIGluaXRfc3RhdGljX2FuYWx5c2VyX3JhdyBjb21waWwgPVxuICAgICAgbGV0IHJlcXVlc3Qgb3V0YnVmID1cbiAgICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiWyBcXFwiSU5JVFxcXCIsIFwiIGluXG4gICAgICAgIGxldCAoKSA9IEJ1ZmZlci5hZGRfc3RyaW5nIG91dGJ1ZiBjb21waWwgaW5cbiAgICAgICAgQnVmZmVyLmFkZF9zdHJpbmcgb3V0YnVmIFwiXVwiXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNyYXdfbWVzc2FnZSBwb3N0IHJlcXVlc3QpIChmdW5jdGlvblxuICAgICAgICB8IGBOdWxsIC0+IFJlc3VsdC5PayAoKVxuICAgICAgICB8IHggLT5cbiAgICAgICAgICBSZXN1bHQuRXJyb3JcbiAgICAgICAgICAgIChFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuYWRkX3VuY2F1Z2h0X2Vycm9yXG4gICAgICAgICAgICAgICAoRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLmJ1aWxkX3VuY2F1Z2h0X2V4Y2VwdGlvblxuICAgICAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcImthc2FfY2xpZW50XCJcbiAgICAgICAgICAgICAgICAgIH5tZXNzYWdlOlxuICAgICAgICAgICAgICAgICAgICAoXCJOb3QgYSBLYVNhIElOSVQgcmVzcG9uc2U6IFwiIF4gWW9qc29uLkJhc2ljLnRvX3N0cmluZyB4KVxuICAgICAgICAgICAgICAgICAgRXhpdClcbiAgICAgICAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5lbXB0eV9lcnJvcl9oYW5kbGVyKSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgKGBTdHJpbmcgXCJDT05UQUNUX01BUFwiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT4gUmVzdWx0Lk9rIHgpXG5cbiAgICBtZXRob2QgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfTk9ERVNfTE9DQVRJT05cIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNfb2ZfanNvbiB4KSlcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUFwiXG4gICAgICAgICAgOjpcbiAgICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgIHwgU29tZSBhIC0+IFsgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBhIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIklORkxVRU5DRV9NQVBcIlxuICAgICAgICAgIDo6IChmdW4gYWNjdXJhY3kgbCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IGxcbiAgICAgICAgICAgICAgIHwgU29tZSBhIC0+IFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSA6OiBsKVxuICAgICAgICAgICAgICAgYWNjdXJhY3lcbiAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIEpzb25VdGlsLm9mX2ludCBmd2Q7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBKc29uVXRpbC5vZl9pbnQgYndkO1xuICAgICAgICAgICAgICAgICBKc29uVXRpbC5vZl9pbnQgdG90YWw7XG4gICAgICAgICAgICAgICAgIEpzb25VdGlsLm9mX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV90b19qc29uXG4gICAgICAgICAgICAgICAgICAgb3JpZ2luO1xuICAgICAgICAgICAgICAgXSlcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPSBQdWJsaWNfZGF0YS5sb2NhbF9pbmZsdWVuY2VfbWFwX29mX2pzb24geCBpblxuICAgICAgICAgIFJlc3VsdC5PayBvKVxuXG4gICAgbWV0aG9kIGdldF9pbml0aWFsX25vZGUgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX09SSUdJTkFMX05PREVcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgbGV0IG8gPVxuICAgICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvbiB4XG4gICAgICAgICAgaW5cbiAgICAgICAgICBSZXN1bHQuT2sgbylcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIGpzb24gPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIFtcbiAgICAgICAgICAgIGBTdHJpbmcgXCJJTkZMVUVOQ0VfTUFQX05FWFRfTk9ERVwiO1xuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24ganNvbjtcbiAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgIGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X3ByZXZpb3VzX25vZGUganNvbiA9XG4gICAgICBsZXQgcmVxdWVzdCA9XG4gICAgICAgIGBMaXN0XG4gICAgICAgICAgW1xuICAgICAgICAgICAgYFN0cmluZyBcIklORkxVRU5DRV9NQVBfUFJFVklPVVNfTk9ERVwiO1xuICAgICAgICAgICAgSnNvblV0aWwub2Zfb3B0aW9uIFB1YmxpY19kYXRhLnNob3J0X2luZmx1ZW5jZV9ub2RlX3RvX2pzb24ganNvbjtcbiAgICAgICAgICBdXG4gICAgICBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIGxldCBvID1cbiAgICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb24geFxuICAgICAgICAgIGluXG4gICAgICAgICAgUmVzdWx0Lk9rIG8pXG5cbiAgICBtZXRob2QgZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPVxuICAgICAgbGV0IHJlcXVlc3QgPVxuICAgICAgICBgTGlzdFxuICAgICAgICAgIChgU3RyaW5nIFwiSU5GTFVFTkNFX01BUF9BTExfTk9ERVNcIlxuICAgICAgICAgIDo6XG4gICAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgYSAtPiBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSBdKSlcbiAgICAgIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5ub2Rlc19vZl9pbmZsdWVuY2VfbWFwX29mX2pzb24geCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfcnVsZXMgPVxuICAgICAgbGV0IHJlcXVlc3QgPSBgTGlzdCBbIGBTdHJpbmcgXCJERUFEX1JVTEVTXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX2FnZW50cyA9XG4gICAgICBsZXQgcmVxdWVzdCA9IGBMaXN0IFsgYFN0cmluZyBcIkRFQURfQUdFTlRTXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuanNvbl90b19kZWFkX2FnZW50cyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiTk9OX1dFQUtMWV9SRVZFUlNJQkxFX1RSQU5TSVRJT05TXCIgXSBpblxuICAgICAgTHd0X3Jlc3VsdC5iaW5kX3Jlc3VsdCAoc2VsZiNtZXNzYWdlIHJlcXVlc3QpIChmdW4geCAtPlxuICAgICAgICAgIFJlc3VsdC5PayAoUHVibGljX2RhdGEuc2VwYXJhdGluZ190cmFuc2l0aW9uc19vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIGxldCByZXF1ZXN0ID0gYExpc3QgWyBgU3RyaW5nIFwiQ09OU1RSQUlOVFNcIiBdIGluXG4gICAgICBMd3RfcmVzdWx0LmJpbmRfcmVzdWx0IChzZWxmI21lc3NhZ2UgcmVxdWVzdCkgKGZ1biB4IC0+XG4gICAgICAgICAgUmVzdWx0Lk9rIChQdWJsaWNfZGF0YS5sZW1tYXNfbGlzdF9vZl9qc29uIHgpKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIGxldCByZXF1ZXN0ID1cbiAgICAgICAgYExpc3RcbiAgICAgICAgICAoYFN0cmluZyBcIlBPTFlNRVJTXCJcbiAgICAgICAgICA6OlxuICAgICAgICAgIChtYXRjaCBhY2N1cmFjeV9jbSwgYWNjdXJhY3lfc2NjIHdpdGhcbiAgICAgICAgICB8IE5vbmUsIE5vbmUgLT4gW11cbiAgICAgICAgICB8IFNvbWUgYSwgTm9uZSAtPiBbIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYSBdXG4gICAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgICAgICAgICAgWyBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19qc29uIGE7IFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYiBdXG4gICAgICAgICAgfCBOb25lLCBTb21lIGIgLT5cbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fanNvbiBQdWJsaWNfZGF0YS5Mb3c7XG4gICAgICAgICAgICAgIFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX2pzb24gYjtcbiAgICAgICAgICAgIF0pKVxuICAgICAgaW5cbiAgICAgIEx3dF9yZXN1bHQuYmluZF9yZXN1bHQgKHNlbGYjbWVzc2FnZSByZXF1ZXN0KSAoZnVuIHggLT5cbiAgICAgICAgICBSZXN1bHQuT2sgKFB1YmxpY19kYXRhLnNjY19vZl9qc29uIHgpKVxuICBlbmRcblxuY2xhc3MgbmV3X3VuaWZvcm1fY2xpZW50IH5pc19ydW5uaW5nIH5wb3N0IChtYWlsYm94IDogbWFpbGJveCkgOlxuICBBcGkudW5pZm9ybV9tYW5hZ2VyX3N0YXRpY19hbmFseXNpcyA9XG4gIGxldCByYXcgPSBuZXcgbmV3X2NsaWVudCB+aXNfcnVubmluZyB+cG9zdCBtYWlsYm94IGluXG4gIG9iamVjdFxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgY29tcGlsID1cbiAgICAgIHJhdyNpbml0X3N0YXRpY19hbmFseXNlcl9yYXcgY29tcGlsID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXIgY29tcGlsID1cbiAgICAgIHJhdyNpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfY29udGFjdF9tYXAgYWNjdXJhY3kgPVxuICAgICAgcmF3I2dldF9jb250YWN0X21hcCBhY2N1cmFjeSA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X2luZmx1ZW5jZV9tYXBfcmF3IGFjY3VyYWN5ID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2xvY2FsX2luZmx1ZW5jZV9tYXAgP2Z3ZCA/YndkID9vcmlnaW4gfnRvdGFsIGFjY3VyYWN5ID1cbiAgICAgIHJhdyNnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3lcbiAgICAgID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X2luaXRpYWxfbm9kZSA9IHJhdyNnZXRfaW5pdGlhbF9ub2RlID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X25leHRfbm9kZSBqc29uID1cbiAgICAgIHJhdyNnZXRfbmV4dF9ub2RlIGpzb24gPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfcHJldmlvdXNfbm9kZSBqc29uID1cbiAgICAgIHJhdyNnZXRfcHJldmlvdXNfbm9kZSBqc29uID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2Qgc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPVxuICAgICAgcmF3I2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcCBhY2N1cmFjeSA9XG4gICAgICByYXcjZ2V0X25vZGVzX29mX2luZmx1ZW5jZV9tYXAgYWNjdXJhY3kgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcblxuICAgIG1ldGhvZCBnZXRfZGVhZF9ydWxlcyA9IHJhdyNnZXRfZGVhZF9ydWxlcyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuICAgIG1ldGhvZCBnZXRfZGVhZF9hZ2VudHMgPSByYXcjZ2V0X2RlYWRfYWdlbnRzID58PSBBcGlfY29tbW9uLnJlc3VsdF9rYXNhXG5cbiAgICBtZXRob2QgZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA9XG4gICAgICByYXcjZ2V0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9jb25zdHJhaW50c19saXN0ID1cbiAgICAgIHJhdyNnZXRfY29uc3RyYWludHNfbGlzdCA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfa2FzYVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIHJhdyNnZXRfcG90ZW50aWFsX3BvbHltZXJzIGFjY3VyYWN5X2NtIGFjY3VyYWN5X3NjY1xuICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X2thc2FcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG50eXBlIF8gaGFuZGxlID1cbiAgfCBOb3RoaW5nIDogdW5pdCBoYW5kbGVcbiAgfCBDYXRhbG9nIDogS2ZpbGVzLmNhdGFsb2dfaXRlbSBsaXN0IGhhbmRsZVxuICB8IEluZm8gOiAoc3RyaW5nICogaW50KSBoYW5kbGVcbiAgfCBBc3QgOiBBc3QucGFyc2luZ19jb21waWwgaGFuZGxlXG5cbnR5cGUgYm94ID1cbiAgfCBCIDogJ2EgaGFuZGxlICogKCdhLCBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIFJlc3VsdF91dGlsLnQgTHd0LnUgLT4gYm94XG5cbnR5cGUgbWFpbGJveCA9IChpbnQsIGJveCkgSGFzaHRibC50XG5cbmxldCBuZXdfbWFpbGJveCAoKSA9IEhhc2h0YmwuY3JlYXRlIDJcblxubGV0IHJlYWRfcmVzdWx0IGYgcCBsYiA9XG4gIEpzb25VdGlsLnJlYWRfbmV4dF9pdGVtXG4gICAgKFJlc3VsdF91dGlsLnJlYWRfdCBmIChZb2pzb24uQmFzaWMucmVhZF9saXN0IFJlc3VsdF91dGlsLnJlYWRfbWVzc2FnZSkpXG4gICAgcCBsYlxuXG5sZXQgcmVjZWl2ZSBtYWlsYm94IHggPVxuICBKc29uVXRpbC5yZWFkX29mX3N0cmluZ1xuICAgIChKc29uVXRpbC5yZWFkX3ZhcmlhbnQgWW9qc29uLkJhc2ljLnJlYWRfaW50IChmdW4gcCBsYiBpZCAtPlxuICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgbWF0Y2ggSGFzaHRibC5maW5kIG1haWxib3ggaWQgd2l0aFxuICAgICAgICAgICB8IEIgKE5vdGhpbmcsIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZCAocmVhZF9yZXN1bHQgWW9qc29uLkJhc2ljLnJlYWRfbnVsbCBwIGxiKVxuICAgICAgICAgICB8IEIgKENhdGFsb2csIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoWW9qc29uLkJhc2ljLnJlYWRfbGlzdCBLZmlsZXMucmVhZF9jYXRhbG9nX2l0ZW0pXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEluZm8sIHRocmVhZCkgLT5cbiAgICAgICAgICAgICBMd3Qud2FrZXVwIHRocmVhZFxuICAgICAgICAgICAgICAgKHJlYWRfcmVzdWx0XG4gICAgICAgICAgICAgICAgICAoSnNvblV0aWwucmVhZF9jb21wYWN0X3BhaXIgWW9qc29uLkJhc2ljLnJlYWRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpXG4gICAgICAgICAgICAgICAgICBwIGxiKVxuICAgICAgICAgICB8IEIgKEFzdCwgdGhyZWFkKSAtPlxuICAgICAgICAgICAgIEx3dC53YWtldXAgdGhyZWFkIChyZWFkX3Jlc3VsdCBBc3QucmVhZF9wYXJzaW5nX2NvbXBpbCBwIGxiKVxuICAgICAgICAgaW5cbiAgICAgICAgIEhhc2h0YmwucmVtb3ZlIG1haWxib3ggaWQpKVxuICAgIHhcblxubGV0IGlzX2NvbXB1dGluZyBtYWlsYm94ID0gSGFzaHRibC5sZW5ndGggbWFpbGJveCA8PiAwXG5cbmNsYXNzIHZpcnR1YWwgbmV3X2NsaWVudCB+cG9zdCBtYWlsYm94IDogQXBpLm1hbmFnZXJfbW9kZWwgPVxuICBvYmplY3QgKHNlbGYpXG4gICAgdmFsIG11dGFibGUgaWQgPSAwXG4gICAgbWV0aG9kIHZpcnR1YWwgaXNfcnVubmluZyA6IGJvb2xcblxuICAgIG1ldGhvZCBwcml2YXRlIG1lc3NhZ2UgOiB0eXBlIGEuXG4gICAgICAgIGEgaGFuZGxlIC0+XG4gICAgICAgIChCdWZmZXIudCAtPiB1bml0KSAtPlxuICAgICAgICAoYSwgUmVzdWx0X3V0aWwubWVzc2FnZSBsaXN0KSBSZXN1bHRfdXRpbC50IEx3dC50ID1cbiAgICAgIGZ1biBoYW5kbGUgcmVxdWVzdCAtPlxuICAgICAgICBpZiBzZWxmI2lzX3J1bm5pbmcgdGhlbiAoXG4gICAgICAgICAgbGV0IHJlc3VsdCwgZmVlZGVyID0gTHd0LnRhc2sgKCkgaW5cbiAgICAgICAgICBsZXQgbWVzc2FnZSA9XG4gICAgICAgICAgICBKc29uVXRpbC5zdHJpbmdfb2Zfd3JpdGVcbiAgICAgICAgICAgICAgKGZ1biBiICgpIC0+XG4gICAgICAgICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGlkKTsgcmVxdWVzdCBdKVxuICAgICAgICAgICAgICAoKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gcG9zdCBtZXNzYWdlIGluXG4gICAgICAgICAgbGV0ICgpID0gSGFzaHRibC5yZXBsYWNlIG1haWxib3ggaWQgKEIgKGhhbmRsZSwgZmVlZGVyKSkgaW5cbiAgICAgICAgICBsZXQgKCkgPSBpZCA8LSBzdWNjIGlkIGluXG4gICAgICAgICAgcmVzdWx0XG4gICAgICAgICkgZWxzZVxuICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgIChSZXN1bHRfdXRpbC5lcnJvclxuICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLkVycm9yO1xuICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0ID0gXCJrYW1vaGEgYWdlbnQgaGFzIGRpZWRcIjtcbiAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9kZWxldGUgZmlsZV9pZCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlRGVsZXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgXSlcblxuICAgIG1ldGhvZCBmaWxlX3VwZGF0ZSBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlVXBkYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfbW92ZSBmaWxlX3Bvc2l0aW9uIGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZU1vdmVcIik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfaW50IGIgZmlsZV9wb3NpdGlvbik7XG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgZmlsZV9pZCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfZ2V0IGZpbGVfaWQgPVxuICAgICAgc2VsZiNtZXNzYWdlIEluZm8gKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiRmlsZUdldFwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgIF0pXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgZmlsZV9wb3NpdGlvbiBmaWxlX2lkIGZpbGVfY29udGVudCA9XG4gICAgICBzZWxmI21lc3NhZ2UgTm90aGluZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ3JlYXRlXCIpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX2ludCBiIGZpbGVfcG9zaXRpb24pO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfaWQpO1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIGZpbGVfY29udGVudCk7XG4gICAgICAgICAgICBdKVxuXG4gICAgbWV0aG9kIGZpbGVfY2F0YWxvZyA9XG4gICAgICBzZWxmI21lc3NhZ2UgQ2F0YWxvZyAoZnVuIGIgLT5cbiAgICAgICAgICBKc29uVXRpbC53cml0ZV9zZXF1ZW5jZSBiXG4gICAgICAgICAgICBbIChmdW4gYiAtPiBZb2pzb24uQmFzaWMud3JpdGVfc3RyaW5nIGIgXCJGaWxlQ2F0YWxvZ1wiKSBdKVxuXG4gICAgbWV0aG9kIHNlY3JldF9wcm9qZWN0X3BhcnNlID1cbiAgICAgIHNlbGYjbWVzc2FnZSBBc3QgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgWyAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdFBhcnNlXCIpIF0pXG5cbiAgICBtZXRob2QgcHJvamVjdF9vdmVyd3JpdGUgZmlsZV9pZCBhc3QgPVxuICAgICAgc2VsZiNtZXNzYWdlIE5vdGhpbmcgKGZ1biBiIC0+XG4gICAgICAgICAgSnNvblV0aWwud3JpdGVfc2VxdWVuY2UgYlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAoZnVuIGIgLT4gWW9qc29uLkJhc2ljLndyaXRlX3N0cmluZyBiIFwiUHJvamVjdE92ZXJ3cml0ZVwiKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IFlvanNvbi5CYXNpYy53cml0ZV9zdHJpbmcgYiBmaWxlX2lkKTtcbiAgICAgICAgICAgICAgKGZ1biBiIC0+IEFzdC53cml0ZV9wYXJzaW5nX2NvbXBpbCBiIGFzdCk7XG4gICAgICAgICAgICBdKVxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmNsYXNzIHNpbXVsYXRpb24gKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudClcbiAgKHNpbXVsYXRpb25fcGFyYW1ldGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIpIDpcbiAgQXBpX2Vudmlyb25tZW50LnNpbXVsYXRpb24gPVxuICBvYmplY3RcbiAgICB2YWwgbXV0YWJsZSBfcnVudGltZV9zdGF0ZSA9IHJ1bnRpbWVfc3RhdGVcbiAgICB2YWwgbXV0YWJsZSBfc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICAgIG1ldGhvZCBnZXRfcnVudGltZV9zdGF0ZSAoKSA9IF9ydW50aW1lX3N0YXRlXG5cbiAgICBtZXRob2Qgc2V0X3J1bnRpbWVfc3RhdGUgKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudCkgPVxuICAgICAgX3J1bnRpbWVfc3RhdGUgPC0gcnVudGltZV9zdGF0ZVxuXG4gICAgbWV0aG9kIGdldF9zaW11bGF0aW9uX3BhcmFtZXRlciAoKSA9IF9zaW11bGF0aW9uX3BhcmFtZXRlclxuXG4gICAgbWV0aG9kIHNldF9zaW11bGF0aW9uX3BhcmFtZXRlclxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOiB1bml0ID1cbiAgICAgIF9zaW11bGF0aW9uX3BhcmFtZXRlciA8LSBzaW11bGF0aW9uX3BhcmFtZXRlclxuICBlbmRcblxuY2xhc3MgcHJvamVjdCA6IEFwaV9lbnZpcm9ubWVudC5wcm9qZWN0ID1cbiAgb2JqZWN0XG4gICAgdmFsIG11dGFibGUgX3NpbXVsYXRpb24gPSBOb25lXG5cbiAgICB2YWwgbXV0YWJsZSBfc3RhdGUgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgb3B0aW9uIEx3dC50ID1cbiAgICAgIEx3dC5yZXR1cm5fbm9uZVxuXG4gICAgbWV0aG9kIGdldF9zaW11bGF0aW9uICgpID0gX3NpbXVsYXRpb25cbiAgICBtZXRob2QgdW5zZXRfc2ltdWxhdGlvbiAoKSA9IF9zaW11bGF0aW9uIDwtIE5vbmVcblxuICAgIG1ldGhvZCBzZXRfc2ltdWxhdGlvblxuICAgICAgICAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgKHJ1bnRpbWVfc3RhdGUgOiBLYXBwYV9mYWNhZGUudCkgPVxuICAgICAgX3NpbXVsYXRpb24gPC1cbiAgICAgICAgU29tZVxuICAgICAgICAgIChuZXcgc2ltdWxhdGlvbiBydW50aW1lX3N0YXRlIHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgICA6PiBBcGlfZW52aXJvbm1lbnQuc2ltdWxhdGlvbilcblxuICAgIG1ldGhvZCBzZXRfc3RhdGUgKHN0YXRlIDogQXBpX2Vudmlyb25tZW50LnBhcnNlX3N0YXRlIEx3dC50KSA9XG4gICAgICBsZXQgKCkgPSBMd3QuY2FuY2VsIF9zdGF0ZSBpblxuICAgICAgX3N0YXRlIDwtIChzdGF0ZSA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoU29tZSB4KSlcblxuICAgIG1ldGhvZCBnZXRfc3RhdGUgKCkgOiBBcGlfZW52aXJvbm1lbnQucGFyc2Vfc3RhdGUgb3B0aW9uIEx3dC50ID0gX3N0YXRlXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogZ29vZCBvbGQgY2FrZSBwYXR0ZXJuICopXG5cbmNsYXNzIG1hbmFnZXIgKHN5c3RlbV9wcm9jZXNzIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKSA6XG4gIEFwaS5tYW5hZ2VyX3NpbXVsYXRpb24gPVxuICBsZXQgcHJvamVjdCA9IG5ldyBFbnZpcm9ubWVudF9tZW1vcnkucHJvamVjdCBpblxuICBvYmplY3RcbiAgICBpbmhlcml0IE1hbmFnZXJfc2ltdWxhdGlvbi5tYW5hZ2VyX3NpbXVsYXRpb24gcHJvamVjdCBzeXN0ZW1fcHJvY2Vzc1xuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgdCA9IHtcbiAgc3RhdGVfZXJyb3JfZXJyb3JzOiBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3Q7XG4gIF9zdGF0ZV9lcnJvcl9sb2NhdGlvbjogc3RyaW5nO1xufVxuXG5sZXQgc3RhdGVfZXJyb3IgPSBIb29rZWQuUy5jcmVhdGUgW11cblxubGV0IGNsZWFyX2Vycm9ycyBsb2NhdGlvbiA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiQ2xlYXJfZXJyb3JzICVzIFwiIGxvY2F0aW9uKSlcbiAgaW5cbiAgSG9va2VkLlMuc2V0IHN0YXRlX2Vycm9yIFtdXG5cbmxldCBoYXNfZXJyb3JzICgpID1cbiAgbWF0Y2ggSG9va2VkLlMudiBzdGF0ZV9lcnJvciB3aXRoXG4gIHwgW10gLT4gZmFsc2VcbiAgfCBfIDo6IF8gLT4gdHJ1ZVxuXG5sZXQgYWRkX2Vycm9yIChsb2NhdGlvbiA6IHN0cmluZykgKGVycm9ycyA6IFJlc3VsdF91dGlsLm1lc3NhZ2UgbGlzdCkgPVxuICAoKiBsb2cgbG9jYXRpb24gYW5kIGVycm9ycyBpZiBkZWJ1Z2dpbmcgaXMgZW5hYmxlZCAqKVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgKEpzLnN0cmluZ1xuICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcInNldF9lcnJvcnMgeyBsb2NhdGlvbiA6IFxcXCIlc1xcXCIgLCBlcnJvcnMgOiBbQFslYUBdXSB9XCJcbiAgICAgICAgICAgIGxvY2F0aW9uXG4gICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgZXJyb3JzKSlcbiAgaW5cbiAgbGV0IGN1cnJlbnRfc3RhdGVfZXJyb3IgOiB0IGxpc3QgPSBIb29rZWQuUy52IHN0YXRlX2Vycm9yIGluXG4gIGxldCBuZXdfc3RhdGVfZXJyb3IgOiB0IGxpc3QgPVxuICAgIHsgc3RhdGVfZXJyb3JfZXJyb3JzID0gZXJyb3JzOyBfc3RhdGVfZXJyb3JfbG9jYXRpb24gPSBsb2NhdGlvbiB9XG4gICAgOjogY3VycmVudF9zdGF0ZV9lcnJvclxuICBpblxuICBIb29rZWQuUy5zZXQgc3RhdGVfZXJyb3IgbmV3X3N0YXRlX2Vycm9yXG5cbmxldCBlcnJvcnMgPVxuICBIb29rZWQuUy5iaW5kIHN0YXRlX2Vycm9yIChmdW4gc3RhdGVfZXJyb3IgLT5cbiAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgIChmdW4gYWNjIHZhbHVlIC0+IHZhbHVlLnN0YXRlX2Vycm9yX2Vycm9ycyBAIGFjYylcbiAgICAgICAgW10gc3RhdGVfZXJyb3IpXG5cbmxldCB3cmFwIDpcbiAgICAgICdhLiA/YXBwZW5kOmJvb2wgLT4gc3RyaW5nIC0+ICdhIEFwaS5yZXN1bHQgTHd0LnQgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gZnVuID8oYXBwZW5kID0gZmFsc2UpIGxvYyByIC0+XG4gIHJcbiAgPj49XG4gIGxldCAoKSA9IGlmIG5vdCBhcHBlbmQgdGhlbiBjbGVhcl9lcnJvcnMgbG9jIGluXG4gIFJlc3VsdF91dGlsLmZvbGRcbiAgICB+b2s6KGZ1biByIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHIpKVxuICAgIH5lcnJvcjooZnVuIGVycm9ycyAtPlxuICAgICAgbGV0ICgpID0gYWRkX2Vycm9yIGxvYyBlcnJvcnMgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIGVycm9ycykpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgdXJsX2FyZ3MgPyhkZWZhdWx0ID0gW10pIGtleSA6IHN0cmluZyBsaXN0ID1cbiAgKCogSG9zdHMgdGhlIHVzZXIgc3BlY2lmaWVkIG9uIHRoZSB1cmwgaW4gdGhlIGZvcm1cbiAgICAga2V5PS4uLiZrZXk9Li4mLi4uXG4gICopXG4gIGxldCBhcmdzID0gVXJsLkN1cnJlbnQuYXJndW1lbnRzIGluXG4gIG1hdGNoIExpc3QubWFwIHNuZCAoTGlzdC5maWx0ZXIgKGZ1biAoaywgXykgLT4gayA9IGtleSkgYXJncykgd2l0aFxuICB8IFtdIC0+IGRlZmF1bHRcbiAgfCBzb21lIC0+IHNvbWVcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmNsYXNzIHR5cGUgcHJvY2Vzc19jb25maWd1cmF0aW9uID0gb2JqZWN0XG4gIG1ldGhvZCBjb21tYW5kIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBtZXRob2QgYXJncyA6IEpzLmpzX3N0cmluZyBKcy50IEpzLmpzX2FycmF5IEpzLnQgSnMucHJvcFxuICBtZXRob2Qgb25TdGRvdXQgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMucHJvcFxuICBtZXRob2Qgb25TdGRlcnIgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgSnMucHJvcFxuICBtZXRob2Qgb25DbG9zZSA6ICh1bml0IC0+IHVuaXQpIEpzLnByb3BcbiAgbWV0aG9kIG9uRXJyb3IgOiAodW5pdCAtPiB1bml0KSBKcy5wcm9wXG5lbmRcblxubGV0IGNvbnN0cnVjdG9yX3Byb2Nlc3NfY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50IEpzLmNvbnN0ciA9XG4gIEpzLlVuc2FmZS5wdXJlX2pzX2V4cHIgXCJPYmplY3RcIlxuXG5sZXQgY3JlYXRlX3Byb2Nlc3NfY29uZmlndXJhdGlvblxuICAgID8ob25TdGRvdXQgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgb3B0aW9uKVxuICAgID8ob25TdGRlcnIgOiAoSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgb3B0aW9uKVxuICAgID8ob25DbG9zZSA6ICh1bml0IC0+IHVuaXQpIG9wdGlvbikgPyhvbkVycm9yIDogKHVuaXQgLT4gdW5pdCkgb3B0aW9uKVxuICAgIChjb21tYW5kIDogc3RyaW5nKSAoYXJncyA6IHN0cmluZyBsaXN0KSA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgbGV0IGNvbmZpZ3VyYXRpb24gOiBwcm9jZXNzX2NvbmZpZ3VyYXRpb24gSnMudCA9XG4gICAgbmV3JWpzIGNvbnN0cnVjdG9yX3Byb2Nlc3NfY29uZmlndXJhdGlvblxuICBpblxuICBsZXQgKCkgPVxuICAgIGNvbmZpZ3VyYXRpb24jIy5jb21tYW5kIDo9IEpzLnN0cmluZyBjb21tYW5kO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5hcmdzIDo9IEpzLmFycmF5IChBcnJheS5vZl9saXN0IChMaXN0Lm1hcCBKcy5zdHJpbmcgYXJncykpO1xuICAgIChtYXRjaCBvblN0ZG91dCB3aXRoXG4gICAgfCBTb21lIG9uU3Rkb3V0IC0+IGNvbmZpZ3VyYXRpb24jIy5vblN0ZG91dCA6PSBvblN0ZG91dFxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKG1hdGNoIG9uU3RkZXJyIHdpdGhcbiAgICB8IFNvbWUgb25TdGRlcnIgLT4gY29uZmlndXJhdGlvbiMjLm9uU3RkZXJyIDo9IG9uU3RkZXJyXG4gICAgfCBOb25lIC0+ICgpKTtcbiAgICAobWF0Y2ggb25DbG9zZSB3aXRoXG4gICAgfCBTb21lIG9uQ2xvc2UgLT4gY29uZmlndXJhdGlvbiMjLm9uQ2xvc2UgOj0gb25DbG9zZVxuICAgIHwgTm9uZSAtPiAoKSk7XG4gICAgKG1hdGNoIG9uRXJyb3Igd2l0aFxuICAgIHwgU29tZSBvbkVycm9yIC0+IGNvbmZpZ3VyYXRpb24jIy5vbkVycm9yIDo9IG9uRXJyb3JcbiAgICB8IE5vbmUgLT4gKCkpO1xuICAgICgpXG4gIGluXG4gIGNvbmZpZ3VyYXRpb25cblxuY2xhc3MgdHlwZSBwcm9jZXNzID0gb2JqZWN0XG4gIG1ldGhvZCB3cml0ZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qga2lsbCA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBzcGF3bl9wcm9jZXNzIChjb25maWd1cmF0aW9uIDogcHJvY2Vzc19jb25maWd1cmF0aW9uIEpzLnQpIDpcbiAgICBwcm9jZXNzIEpzLnQgSnMub3B0ID1cbiAgSnMuVW5zYWZlLmZ1bl9jYWxsXG4gICAgKEpzLlVuc2FmZS5qc19leHByIFwic3Bhd25Qcm9jZXNzXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCBjb25maWd1cmF0aW9uIHxdXG5cbmxldCBsYXVuY2hfYWdlbnQgKG9uQ2xvc2UgOiB1bml0IC0+IHVuaXQpIChtZXNzYWdlX2RlbGltaXRlciA6IGNoYXIpXG4gICAgKGNvbW1hbmQgOiBzdHJpbmcpIChhcmdzIDogc3RyaW5nIGxpc3QpIChoYW5kbGVyIDogc3RyaW5nIC0+IHVuaXQpIDpcbiAgICA8IGtpbGwgOiB1bml0IEpzLm1ldGggOyB3cml0ZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aCA+IEpzLnQgPVxuICBsZXQgYnVmZmVyID0gQnVmZmVyLmNyZWF0ZSA1MTIgaW5cbiAgbGV0IHJlYyBvblN0ZG91dCBtc2cgPVxuICAgIG1hdGNoIFRvb2xzLnN0cmluZ19zcGxpdF9vbl9jaGFyIG1lc3NhZ2VfZGVsaW1pdGVyIChKcy50b19zdHJpbmcgbXNnKSB3aXRoXG4gICAgfCBwcmVmaXgsIE5vbmUgLT4gQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIHByZWZpeFxuICAgIHwgcHJlZml4LCBTb21lIHN1ZmZpeCAtPlxuICAgICAgbGV0ICgpID0gQnVmZmVyLmFkZF9zdHJpbmcgYnVmZmVyIHByZWZpeCBpblxuICAgICAgbGV0ICgpID0gaGFuZGxlciAoQnVmZmVyLmNvbnRlbnRzIGJ1ZmZlcikgaW5cbiAgICAgIGxldCAoKSA9IEJ1ZmZlci5yZXNldCBidWZmZXIgaW5cbiAgICAgIG9uU3Rkb3V0IChKcy5zdHJpbmcgc3VmZml4KVxuICBpblxuICBsZXQgY29uZmlndXJhdGlvbiA6IHByb2Nlc3NfY29uZmlndXJhdGlvbiBKcy50ID1cbiAgICBjcmVhdGVfcHJvY2Vzc19jb25maWd1cmF0aW9uIH5vblN0ZG91dCB+b25DbG9zZSBjb21tYW5kIGFyZ3NcbiAgaW5cbiAgSnMuT3B0LmNhc2VcbiAgICAoc3Bhd25fcHJvY2VzcyBjb25maWd1cmF0aW9uKVxuICAgIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IG9uQ2xvc2UgKCkgaW5cbiAgICAgIGZhaWx3aXRoIChcIkxhdW5jaGluZyAnXCIgXiBjb21tYW5kIF4gXCInIGZhaWxlZFwiKSlcbiAgICAoZnVuIHggLT4geClcblxuY2xhc3MgbWFuYWdlciA/KG1lc3NhZ2VfZGVsaW1pdGVyIDogY2hhciA9IFRvb2xzLmRlZmF1bHRfbWVzc2FnZV9kZWxpbXRlcilcbiAgKGNvbW1hbmQgOiBzdHJpbmcpIChhcmdzIDogc3RyaW5nIGxpc3QpIDpcbiAgQXBpLmNvbmNyZXRlX21hbmFnZXIgPVxuICBsZXQgc3dpdGNoX3JlID0gUmUuY29tcGlsZSAoUmUuc3RyIFwiS2FwcGFTd2l0Y2htYW5cIikgaW5cbiAgbGV0IHN0b3JfY29tbWFuZCA9IFJlLnJlcGxhY2Vfc3RyaW5nIHN3aXRjaF9yZSB+Ynk6XCJLYVN0b3JcIiBjb21tYW5kIGluXG4gIGxldCBzd2l0Y2hfbWFpbGJveCA9IFN3aXRjaG1hbl9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IHN0b3Jfc3RhdGUsIHVwZGF0ZV9zdG9yX3N0YXRlID0gS2FzdG9yX2NsaWVudC5pbml0X3N0YXRlICgpIGluXG4gIGxldCBydW5uaW5nX3JlZiA9IHJlZiB0cnVlIGluXG4gIGxldCBvbkNsb3NlICgpID0gcnVubmluZ19yZWYgOj0gZmFsc2UgaW5cbiAgbGV0IHN0b3JfcHJvY2VzcyA9XG4gICAgbGF1bmNoX2FnZW50IG9uQ2xvc2UgbWVzc2FnZV9kZWxpbWl0ZXIgc3Rvcl9jb21tYW5kIGFyZ3NcbiAgICAgIChLYXN0b3JfY2xpZW50LnJlY2VpdmUgdXBkYXRlX3N0b3Jfc3RhdGUpXG4gIGluXG4gIGxldCBzd2l0Y2hfcHJvY2VzcyA9XG4gICAgbGF1bmNoX2FnZW50IG9uQ2xvc2UgbWVzc2FnZV9kZWxpbWl0ZXIgY29tbWFuZCBhcmdzXG4gICAgICAoU3dpdGNobWFuX2NsaWVudC5yZWNlaXZlIHN3aXRjaF9tYWlsYm94KVxuICBpblxuICBvYmplY3QgKHNlbGYpXG4gICAgbWV0aG9kIHByaXZhdGUgc2xlZXAgdGltZW91dCA9IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdGltZW91dFxuICAgIG1ldGhvZCBpc19ydW5uaW5nID0gIXJ1bm5pbmdfcmVmXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIGxldCAoKSA9IHN3aXRjaF9wcm9jZXNzIyNraWxsIGluXG4gICAgICBsZXQgKCkgPSBzdG9yX3Byb2Nlc3MjI2tpbGwgaW5cbiAgICAgICgpXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID1cbiAgICAgIFN3aXRjaG1hbl9jbGllbnQuaXNfY29tcHV0aW5nIHN3aXRjaF9tYWlsYm94IHx8IHNlbGYjc3RvcnlfaXNfY29tcHV0aW5nXG5cbiAgICBpbmhlcml0XG4gICAgICBLYXN0b3JfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBzdG9yX3Byb2Nlc3MjI3dyaXRlXG4gICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIiVzJWNcIiBtZXNzYWdlX3RleHQgbWVzc2FnZV9kZWxpbWl0ZXIpKSlcbiAgICAgICAgc3Rvcl9zdGF0ZVxuXG4gICAgaW5oZXJpdFxuICAgICAgU3dpdGNobWFuX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5pc19ydW5uaW5nOihmdW4gKCkgLT4gdHJ1ZSlcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT5cbiAgICAgICAgICBzd2l0Y2hfcHJvY2VzcyMjd3JpdGVcbiAgICAgICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwiJXMlY1wiIG1lc3NhZ2VfdGV4dCBtZXNzYWdlX2RlbGltaXRlcikpKVxuICAgICAgICBzd2l0Y2hfbWFpbGJveFxuICBlbmRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmV4Y2VwdGlvbiBCYWRSZXNwb25zZSBvZiBNcGlfbWVzc2FnZV9qLnJlc3RfcmVzcG9uc2VfY29udGVudFxuZXhjZXB0aW9uIEJhZFJlc3BvbnNlQ29kZSBvZiBpbnRcbmV4Y2VwdGlvbiBUaW1lT3V0XG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCByZXF1ZXN0X3VwIHYgPSBpbmNyIHZcbmxldCByZXF1ZXN0X2Rvd24gdiA9IGRlY3IgdlxubGV0IGlzX2NvbXB1dGluZyB2ID0gIXYgPD4gMFxuXG5sZXQgc2VuZCA/KHRpbWVvdXQgOiBmbG9hdCBvcHRpb24pIHJlcXVlc3RfY291bnQgKHVybCA6IHN0cmluZylcbiAgICAobWV0aCA6IENvbW1vbi5tZXRoKSA/KGRhdGEgOiBzdHJpbmcgb3B0aW9uKSAoaHlkcmF0ZSA6IHN0cmluZyAtPiAnYSkgOlxuICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgcmVwbHksIGZlZWRlciA9IEx3dC50YXNrICgpIGluXG4gIGxldCBoYW5kbGVyIHN0YXR1cyByZXNwb25zZV90ZXh0ID1cbiAgICBsZXQgcmVzdWx0X2NvZGUgOiBSZXN1bHRfdXRpbC5zdGF0dXMgb3B0aW9uID1cbiAgICAgIG1hdGNoIHN0YXR1cyB3aXRoXG4gICAgICB8IDIwMCAtPiBTb21lIGBPS1xuICAgICAgfCAyMDEgLT4gU29tZSBgQ3JlYXRlZFxuICAgICAgfCAyMDIgLT4gU29tZSBgQWNjZXB0ZWRcbiAgICAgIHwgNDAwIC0+IFNvbWUgYEJhZF9yZXF1ZXN0XG4gICAgICB8IDQwNCAtPiBTb21lIGBOb3RfZm91bmRcbiAgICAgIHwgNDA4IC0+IFNvbWUgYFJlcXVlc3RfdGltZW91dFxuICAgICAgfCA0MDkgLT4gU29tZSBgQ29uZmxpY3RcbiAgICAgIHwgXyAtPiBOb25lXG4gICAgaW5cbiAgICBsZXQgcmVzdWx0ID1cbiAgICAgIG1hdGNoIHJlc3VsdF9jb2RlIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlQ29kZSBzdGF0dXMpXG4gICAgICB8IFNvbWUgcmVzdWx0X2NvZGUgLT5cbiAgICAgICAgaWYgNDAwIDw9IHN0YXR1cyAmJiBzdGF0dXMgPCA1MDAgdGhlblxuICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzIH5yZXN1bHRfY29kZVxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5yZWFkX2xpc3QgUmVzdWx0X3V0aWwucmVhZF9tZXNzYWdlXG4gICAgICAgICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgcmVzcG9uc2VfdGV4dCkpXG4gICAgICAgIGVsc2UgKFxuICAgICAgICAgIGxldCByZXNwb25zZSA9IGh5ZHJhdGUgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgIFJlc3VsdF91dGlsLm9rIHJlc3BvbnNlXG4gICAgICAgIClcbiAgICBpblxuICAgIGxldCAoKSA9IHJlcXVlc3RfZG93biByZXF1ZXN0X2NvdW50IGluXG4gICAgbGV0ICgpID0gTHd0Lndha2V1cCBmZWVkZXIgcmVzdWx0IGluXG4gICAgKClcbiAgaW5cbiAgbGV0ICgpID0gcmVxdWVzdF91cCByZXF1ZXN0X2NvdW50IGluXG4gIGxldCAoKSA9IENvbW1vbi5hamF4X3JlcXVlc3QgfnVybCB+bWV0aCA/dGltZW91dCA/ZGF0YSB+aGFuZGxlciBpblxuICByZXBseVxuXG5sZXQga2FzYV9lcnJvciBsID1cbiAgTHd0LnJldHVybl9lcnJvclxuICAgIChMaXN0LmZvbGRfbGVmdFxuICAgICAgIChmdW4gYWNjIG0gLT5cbiAgICAgICAgIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5hZGRfdW5jYXVnaHRfZXJyb3JcbiAgICAgICAgICAgKEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5idWlsZF91bmNhdWdodF9leGNlcHRpb25cbiAgICAgICAgICAgICAgfmZpbGVfbmFtZTpcInJlc3RfYXBpXCIgfm1lc3NhZ2U6bS5SZXN1bHRfdXRpbC50ZXh0IEV4aXQpXG4gICAgICAgICAgIGFjYylcbiAgICAgICBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZW1wdHlfZXJyb3JfaGFuZGxlciBsKVxuXG5jbGFzcyBtYW5hZ2VyIH4odGltZW91dCA6IGZsb2F0IG9wdGlvbikgfnVybCB+cHJvamVjdF9pZCA6IEFwaS5yZXN0X21hbmFnZXIgPVxuICBsZXQgcmVxdWVzdF9jb3VudCA9IHJlZiAwIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBtZXRob2QgcHJpdmF0ZSBtZXNzYWdlXG4gICAgICAgIDogTXBpX21lc3NhZ2Vfai5yZXF1ZXN0IC0+IE1waV9tZXNzYWdlX2oucmVzcG9uc2UgTHd0LnQgPVxuICAgICAgZnVuY3Rpb25cbiAgICAgIHwgYFByb2plY3RMb2FkIF8gLT5cbiAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgfnJlc3VsdF9jb2RlOmBCYWRfcmVxdWVzdFxuICAgICAgICAgICAgIFwibG93IGxldmVsIHByb2plY3RfbG9hZCBtdXN0bid0IGJlIHVzZWQgb3ZlciBIVFRQXCIpXG4gICAgICB8IGBTaW11bGF0aW9uQ29udGludWUgcGF1c2VfY29uZGl0aW9uIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vY29udGludWVcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgUFVUXG4gICAgICAgICAgfmRhdGE6KFlvanNvbi5TYWZlLnRvX3N0cmluZyAoYFN0cmluZyBwYXVzZV9jb25kaXRpb24pKVxuICAgICAgICAgIChmdW4gXyAtPiBgU2ltdWxhdGlvbkNvbnRpbnVlKVxuICAgICAgfCBgU2ltdWxhdGlvbkRlbGV0ZSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uXCIgdXJsIHByb2plY3RfaWQpIGBERUxFVEVcbiAgICAgICAgICAoZnVuIF8gLT4gYFNpbXVsYXRpb25EZWxldGUpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgZmlsZV9saW5lX2lkIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vZmlsZWxpbmVzLyVzXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCBmaWxlX2xpbmVfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGxldCBsaW5lcyA9XG4gICAgICAgICAgICAgIFlvanNvbi5TYWZlLnJlYWRfbGlzdCBZb2pzb24uU2FmZS5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICAgIChZb2pzb24uU2FmZS5pbml0X2xleGVyICgpKVxuICAgICAgICAgICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgcmVzdWx0KVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsRmlsZUxpbmUgbGluZXMpXG4gICAgICB8IGBTaW11bGF0aW9uRGV0YWlsRElOIGZsdXhfbWFwX2lkIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vRElOLyVzXCIgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgICBmbHV4X21hcF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25EZXRhaWxESU4gKE1waV9tZXNzYWdlX2ouZGluX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkRldGFpbExvZ01lc3NhZ2UgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9sb2dtZXNzYWdlc1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsTG9nTWVzc2FnZVxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5sb2dfbWVzc2FnZV9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxQbG90IHBsb3RfbGltaXQgLT5cbiAgICAgICAgbGV0IGFyZ3MgPVxuICAgICAgICAgIFN0cmluZy5jb25jYXQgXCImXCJcbiAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgKGZ1biAoa2V5LCB2YWx1ZSkgLT4gRm9ybWF0LnNwcmludGYgXCIlcz0lc1wiIGtleSB2YWx1ZSlcbiAgICAgICAgICAgICAgICgobWF0Y2ggcGxvdF9saW1pdC5BcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICAgICAgICAgfCBTb21lIHBsb3RfbGltaXRfb2Zmc2V0IC0+XG4gICAgICAgICAgICAgICAgICBbIFwicGxvdF9saW1pdF9vZmZzZXRcIiwgc3RyaW5nX29mX2ludCBwbG90X2xpbWl0X29mZnNldCBdKVxuICAgICAgICAgICAgICAgQFxuICAgICAgICAgICAgICAgbWF0Y2ggcGxvdF9saW1pdC5BcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gW11cbiAgICAgICAgICAgICAgIHwgU29tZSBwbG90X2xpbWl0X3BvaW50cyAtPlxuICAgICAgICAgICAgICAgICBbIFwicGxvdF9saW1pdF9wb2ludHNcIiwgc3RyaW5nX29mX2ludCBwbG90X2xpbWl0X3BvaW50cyBdKSlcbiAgICAgICAgaW5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9wbG90XCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYEdFVCB+ZGF0YTphcmdzIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkRldGFpbFBsb3QgKE1waV9tZXNzYWdlX2oucGxvdF9vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25EZXRhaWxTbmFwc2hvdCBzbmFwc2hvdF9pZCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3NuYXBzaG90cy8lc1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQgc25hcHNob3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uRGV0YWlsU25hcHNob3RcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc25hcHNob3RfZGV0YWlsX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkluZm8gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvblwiIHVybCBwcm9qZWN0X2lkKSBgR0VUXG4gICAgICAgICAgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uSW5mbyAoTXBpX21lc3NhZ2Vfai5zaW11bGF0aW9uX2luZm9fb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uRWZmaWNpZW5jeSAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL2VmZmljaWVuY3lcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkVmZmljaWVuY3lcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc2ltdWxhdGlvbl9lZmZpY2llbmN5X29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvblRyYWNlIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vdHJhY2VcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgR0VUIChmdW4gcyAtPiBgU2ltdWxhdGlvblRyYWNlIHMpXG4gICAgICB8IGBTaW11bGF0aW9uT3V0cHV0c1ppcCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL291dHB1dHNcIiB1cmwgcHJvamVjdF9pZClcbiAgICAgICAgICBgR0VUIChmdW4gcyAtPiBgU2ltdWxhdGlvbk91dHB1dHNaaXAgcylcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRmlsZUxpbmUgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9maWxlbGluZXNcIiB1cmxcbiAgICAgICAgICAgICBwcm9qZWN0X2lkKSBgR0VUIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkNhdGFsb2dGaWxlTGluZVxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5maWxlX2xpbmVfY2F0YWxvZ19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFNpbXVsYXRpb25DYXRhbG9nRElOIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vRElOXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgICAgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25DYXRhbG9nRElOIChNcGlfbWVzc2FnZV9qLmRpbl9jYXRhbG9nX29mX3N0cmluZyByZXN1bHQpKVxuICAgICAgfCBgU2ltdWxhdGlvbkNhdGFsb2dTbmFwc2hvdCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9zaW11bGF0aW9uL3NuYXBzaG90c1wiIHVybFxuICAgICAgICAgICAgIHByb2plY3RfaWQpIGBHRVQgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBTaW11bGF0aW9uQ2F0YWxvZ1NuYXBzaG90XG4gICAgICAgICAgICAgIChNcGlfbWVzc2FnZV9qLnNuYXBzaG90X2NhdGFsb2dfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uUGF1c2UgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvbi9wYXVzZVwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICAgIGBQVVQgKGZ1biBfIC0+IGBTaW11bGF0aW9uUGF1c2UpXG4gICAgICB8IGBTaW11bGF0aW9uUGFyYW1ldGVyIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vcGFyYW1ldGVyXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25QYXJhbWV0ZXJcbiAgICAgICAgICAgICAgKE1waV9tZXNzYWdlX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXJfb2Zfc3RyaW5nIHJlc3VsdCkpXG4gICAgICB8IGBTaW11bGF0aW9uSW50ZXJ2ZW50aW9uIHNpbXVsYXRpb25faW50ZXJ2ZW50aW9uIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL3NpbXVsYXRpb24vaW50ZXJ2ZW50aW9uXCIgdXJsXG4gICAgICAgICAgICAgcHJvamVjdF9pZCkgYFBVVFxuICAgICAgICAgIH5kYXRhOlxuICAgICAgICAgICAgKEFwaV90eXBlc19qLnN0cmluZ19vZl9zaW11bGF0aW9uX2ludGVydmVudGlvblxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24pIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBgU2ltdWxhdGlvbkludGVydmVudGlvblxuICAgICAgICAgICAgICAoWW9qc29uLlNhZmUucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgKFlvanNvbi5TYWZlLmluaXRfbGV4ZXIgKCkpXG4gICAgICAgICAgICAgICAgIChMZXhpbmcuZnJvbV9zdHJpbmcgcmVzdWx0KSkpXG4gICAgICB8IGBTaW11bGF0aW9uU3RhcnQgc2ltdWxhdGlvbl9wYXJhbWV0ZXIgLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvc2ltdWxhdGlvblwiIHVybCBwcm9qZWN0X2lkKSBgUE9TVFxuICAgICAgICAgIH5kYXRhOlxuICAgICAgICAgICAgKEFwaV90eXBlc19qLnN0cmluZ19vZl9zaW11bGF0aW9uX3BhcmFtZXRlciBzaW11bGF0aW9uX3BhcmFtZXRlcilcbiAgICAgICAgICAoZnVuIHJlc3VsdCAtPlxuICAgICAgICAgICAgYFNpbXVsYXRpb25TdGFydFxuICAgICAgICAgICAgICAoTXBpX21lc3NhZ2Vfai5zaW11bGF0aW9uX2FydGlmYWN0X29mX3N0cmluZyByZXN1bHQpKVxuXG4gICAgaW5oZXJpdCBNcGlfYXBpLm1hbmFnZXJfYmFzZSAoKVxuXG4gICAgbWV0aG9kIHByaXZhdGUgcmVzdF9tZXNzYWdlID1cbiAgICAgIGZ1bmN0aW9uXG4gICAgICB8IGBFbnZpcm9ubWVudEluZm8gLT5cbiAgICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50IChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyXCIgdXJsKSBgR0VUXG4gICAgICAgICAgKGZ1biByZXN1bHQgLT5cbiAgICAgICAgICAgIGBFbnZpcm9ubWVudEluZm8gKE1waV9tZXNzYWdlX2ouZW52aXJvbm1lbnRfaW5mb19vZl9zdHJpbmcgcmVzdWx0KSlcbiAgICAgIHwgYFByb2plY3RDYXRhbG9nIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudCAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0c1wiIHVybCkgYEdFVFxuICAgICAgICAgIChmdW4gcmVzdWx0IC0+XG4gICAgICAgICAgICBsZXQgcHJvamVjdHMgPVxuICAgICAgICAgICAgICBZb2pzb24uU2FmZS5yZWFkX2xpc3QgWW9qc29uLlNhZmUucmVhZF9zdHJpbmdcbiAgICAgICAgICAgICAgICAoWW9qc29uLlNhZmUuaW5pdF9sZXhlciAoKSlcbiAgICAgICAgICAgICAgICAoTGV4aW5nLmZyb21fc3RyaW5nIHJlc3VsdClcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBgUHJvamVjdENhdGFsb2cgcHJvamVjdHMpXG4gICAgICB8IGBQcm9qZWN0Q3JlYXRlIHByb2plY3RfcGFyYW1ldGVyIC0+XG4gICAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudCAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0c1wiIHVybCkgYFBPU1RcbiAgICAgICAgICB+ZGF0YTooQXBpX3R5cGVzX2ouc3RyaW5nX29mX3Byb2plY3RfcGFyYW1ldGVyIHByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgICAgIChmdW4gXyAtPiBgUHJvamVjdENyZWF0ZSlcbiAgICAgIHwgYFByb2plY3REZWxldGUgcHJvamVjdF9pZCAtPlxuICAgICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lc1wiIHVybCBwcm9qZWN0X2lkKSBgREVMRVRFIChmdW4gXyAtPlxuICAgICAgICAgICAgYFByb2plY3REZWxldGUpXG5cbiAgICBtZXRob2QgZW52aXJvbm1lbnRfaW5mbyAoKSA6IEFwaV90eXBlc19qLmVudmlyb25tZW50X2luZm8gQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3Jlc3RfbWVzc2FnZSBgRW52aXJvbm1lbnRJbmZvXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgRW52aXJvbm1lbnRJbmZvIChyZXN1bHQgOiBNcGlfbWVzc2FnZV90LmVudmlyb25tZW50X2luZm8pIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIHJlc3VsdClcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2QgcHJvamVjdF9kZWxldGUgcHJvamVjdF9pZCA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3Jlc3RfbWVzc2FnZSAoYFByb2plY3REZWxldGUgcHJvamVjdF9pZClcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1bmN0aW9uXG4gICAgICAgICAgICB8IGBQcm9qZWN0RGVsZXRlIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgfCByZXNwb25zZSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX2V4Y2VwdGlvbiAoQmFkUmVzcG9uc2UgcmVzcG9uc2UpKSlcblxuICAgIG1ldGhvZCBwcm9qZWN0X2NhdGFsb2cgOiBzdHJpbmcgbGlzdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIHNlbGYjcmVzdF9tZXNzYWdlIGBQcm9qZWN0Q2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuY3Rpb25cbiAgICAgICAgICAgIHwgYFByb2plY3RDYXRhbG9nIHJlc3VsdCAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayByZXN1bHQpXG4gICAgICAgICAgICB8IHJlc3BvbnNlIC0+XG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfZXhjZXB0aW9uIChCYWRSZXNwb25zZSByZXNwb25zZSkpKVxuXG4gICAgbWV0aG9kIHByb2plY3RfY3JlYXRlIChwcm9qZWN0X3BhcmFtZXRlciA6IEFwaV90eXBlc19qLnByb2plY3RfcGFyYW1ldGVyKVxuICAgICAgICA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBzZWxmI3Jlc3RfbWVzc2FnZSAoYFByb2plY3RDcmVhdGUgcHJvamVjdF9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW5jdGlvblxuICAgICAgICAgICAgfCBgUHJvamVjdENyZWF0ZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgcmVzcG9uc2UgLT5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9leGNlcHRpb24gKEJhZFJlc3BvbnNlIHJlc3BvbnNlKSkpXG5cbiAgICBtZXRob2Qgc2VjcmV0X3Byb2plY3RfcGFyc2UgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQmFkX3JlcXVlc3RcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgcHJvamVjdF9wYXJzZSBtdXN0bid0IGJlIHVzZWQgb3ZlciBIVFRQXCIpXG5cbiAgICBtZXRob2Qgc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnMgPVxuICAgICAgTHd0LnJldHVyblxuICAgICAgICAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIH5yZXN1bHRfY29kZTpgQmFkX3JlcXVlc3RcbiAgICAgICAgICAgXCJsb3cgbGV2ZWwgZ2V0X3Bvc19vZl9ydWxlc19hbmRfdmFycyBtdXN0bid0IGJlIHVzZWQgb3ZlciBIVFRQXCIpXG5cbiAgICBtZXRob2QgcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmcgb3ZlcndyaXRlID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvcGFyc2UvJXMldFwiIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgIChtYXRjaCBwYXR0ZXJuU2hhcmluZyB3aXRoXG4gICAgICAgICAgIHwgUGF0dGVybi5Ob19zaGFyaW5nIC0+IFwibm9fc2hhcmluZ1wiXG4gICAgICAgICAgIHwgUGF0dGVybi5Db21wYXRpYmxlX3BhdHRlcm5zIC0+IFwiY29tcGF0aWJsZV9wYXR0ZXJuc1wiXG4gICAgICAgICAgIHwgUGF0dGVybi5NYXhfc2hhcmluZyAtPiBcIm1heF9zaGFyaW5nXCIpXG4gICAgICAgICAgIChmdW4gZiAtPlxuICAgICAgICAgICAgIG1hdGNoIG92ZXJ3cml0ZSB3aXRoXG4gICAgICAgICAgICAgfCBbXSAtPiAoKVxuICAgICAgICAgICAgIHwgbCAtPlxuICAgICAgICAgICAgICAgRm9ybWF0LmZwcmludGYgZiBcIj8lYVwiXG4gICAgICAgICAgICAgICAgIChQcC5saXN0XG4gICAgICAgICAgICAgICAgICAgIChmdW4gZiAtPiBGb3JtYXQucHBfcHJpbnRfc3RyaW5nIGYgXCImXCIpXG4gICAgICAgICAgICAgICAgICAgIChmdW4gZiAodnIsIHZhKSAtPiBGb3JtYXQuZnByaW50ZiBmIFwiJXM9JWFcIiB2ciBOYnIucHJpbnQgdmEpKVxuICAgICAgICAgICAgICAgICBsKSlcbiAgICAgICAgYFBPU1RcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgdGVybWluYXRlID0gTHd0Lmlnbm9yZV9yZXN1bHQgKHNlbGYjcHJvamVjdF9kZWxldGUgcHJvamVjdF9pZClcbiAgICBtZXRob2QgaXNfcnVubmluZyA9IHRydWUgKCpUT0RPKilcblxuICAgIG1ldGhvZCBmaWxlX2NhdGFsb2cgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nXG4gICAgICAgICAgIChZb2pzb24uQmFzaWMucmVhZF9saXN0IEtmaWxlcy5yZWFkX2NhdGFsb2dfaXRlbSkpXG5cbiAgICBtZXRob2QgZmlsZV9jcmVhdGUgcG9zIGlkIGNvbnRlbnQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzL3Bvc2l0aW9uLyVpXCIgdXJsIHByb2plY3RfaWRcbiAgICAgICAgICAgaWQgcG9zKVxuICAgICAgICBgUFVUXG4gICAgICAgIH5kYXRhOihZb2pzb24uQmFzaWMudG9fc3RyaW5nIChgU3RyaW5nIGNvbnRlbnQpKVxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBmaWxlX2dldCBpZCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvZmlsZXMvJXNcIiB1cmwgcHJvamVjdF9pZCBpZClcbiAgICAgICAgYEdFVFxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmdcbiAgICAgICAgICAgKEpzb25VdGlsLnJlYWRfY29tcGFjdF9wYWlyIFlvanNvbi5CYXNpYy5yZWFkX3N0cmluZ1xuICAgICAgICAgICAgICBZb2pzb24uQmFzaWMucmVhZF9pbnQpKVxuXG4gICAgbWV0aG9kIGZpbGVfdXBkYXRlIGlkIGNvbnRlbnQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzXCIgdXJsIHByb2plY3RfaWQgaWQpXG4gICAgICAgIGBQT1NUXG4gICAgICAgIH5kYXRhOihZb2pzb24uQmFzaWMudG9fc3RyaW5nIChgU3RyaW5nIGNvbnRlbnQpKVxuICAgICAgICAoSnNvblV0aWwucmVhZF9vZl9zdHJpbmcgWW9qc29uLkJhc2ljLnJlYWRfbnVsbClcblxuICAgIG1ldGhvZCBmaWxlX21vdmUgcG9zIGlkID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9maWxlcy8lcy9wb3NpdGlvbi8laVwiIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgIGlkIHBvcylcbiAgICAgICAgYFBPU1RcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgZmlsZV9kZWxldGUgaWQgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2ZpbGVzLyVzXCIgdXJsIHByb2plY3RfaWQgaWQpXG4gICAgICAgIGBERUxFVEVcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgcHJvamVjdF9vdmVyd3JpdGUgZmlsZV9pZCBhc3QgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL292ZXJ3cml0ZS8lc1wiIHVybCBwcm9qZWN0X2lkIGZpbGVfaWQpXG4gICAgICAgIGBQT1NUXG4gICAgICAgIH5kYXRhOihZb2pzb24uQmFzaWMudG9fc3RyaW5nIChBc3QuY29tcGlsX3RvX2pzb24gYXN0KSlcbiAgICAgICAgKEpzb25VdGlsLnJlYWRfb2Zfc3RyaW5nIFlvanNvbi5CYXNpYy5yZWFkX251bGwpXG5cbiAgICBtZXRob2QgaW5pdF9zdGF0aWNfYW5hbHlzZXJfcmF3IGRhdGEgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzXCIgdXJsIHByb2plY3RfaWQpIGBQVVQgfmRhdGFcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgbWF0Y2ggWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHggd2l0aFxuICAgICAgICAgIHwgYE51bGwgLT4gKClcbiAgICAgICAgICB8IHggLT5cbiAgICAgICAgICAgIHJhaXNlXG4gICAgICAgICAgICAgIChZb2pzb24uQmFzaWMuVXRpbC5UeXBlX2Vycm9yIChcIk5vdCBhIEthU2EgSU5JVCByZXNwb25zZTogXCIsIHgpKSlcblxuICAgIG1ldGhvZCBpbml0X3N0YXRpY19hbmFseXNlciBjb21waWwgPVxuICAgICAgc2VsZiNpbml0X3N0YXRpY19hbmFseXNlcl9yYXdcbiAgICAgICAgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgKEFzdC5jb21waWxfdG9fanNvbiBjb21waWwpKVxuXG4gICAgbWV0aG9kIGdldF9jb250YWN0X21hcCBhY2N1cmFjeSA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgfCBTb21lIGFjY3VyYWN5IC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9jb250YWN0X21hcD9hY2N1cmFjeT0lc1wiXG4gICAgICAgICAgICB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhY2N1cmFjeSlcbiAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9jb250YWN0X21hcFwiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPiBZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeClcblxuICAgIG1ldGhvZCBnZXRfaW5mbHVlbmNlX21hcF9yYXcgYWNjdXJhY3kgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChtYXRjaCBhY2N1cmFjeSB3aXRoXG4gICAgICAgIHwgU29tZSBhY2N1cmFjeSAtPlxuICAgICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcD9hY2N1cmFjeT0lc1wiXG4gICAgICAgICAgICB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhY2N1cmFjeSlcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvYW5hbHlzZXMvaW5mbHVlbmNlX21hcFwiIHVybClcbiAgICAgICAgYEdFVFxuICAgICAgICAoZnVuIHggLT4geClcblxuICAgIG1ldGhvZCBnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkID9id2QgP29yaWdpbiB+dG90YWwgYWNjdXJhY3kgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChsZXQgcyA9XG4gICAgICAgICAgIG1hdGNoIGFjY3VyYWN5IHdpdGhcbiAgICAgICAgICAgfCBTb21lIGFjY3VyYWN5IC0+XG4gICAgICAgICAgICAgXCImYWNjdXJhY3k9XCIgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYWNjdXJhY3lcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgIGluXG4gICAgICAgICBGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXA/dG90YWw9JWklcyVzJXMlc1wiIHVybFxuICAgICAgICAgICBwcm9qZWN0X2lkIHRvdGFsXG4gICAgICAgICAgIChtYXRjaCBvcmlnaW4gd2l0aFxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlJ1bGUgaSkgLT4gXCImb3JpZ2luPV9ydWxlX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgU29tZSAoUHVibGljX2RhdGEuVmFyIGkpIC0+IFwiJm9yaWdpbj1fdmFyX1wiIF4gc3RyaW5nX29mX2ludCBpXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIlwiKVxuICAgICAgICAgICBzXG4gICAgICAgICAgIChtYXRjaCBmd2Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgaSAtPiBcIiZmd2Q9XCIgXiBzdHJpbmdfb2ZfaW50IGkpXG4gICAgICAgICAgIChtYXRjaCBid2Qgd2l0aFxuICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICB8IFNvbWUgaSAtPiBcIiZid2Q9XCIgXiBzdHJpbmdfb2ZfaW50IGkpKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLmxvY2FsX2luZmx1ZW5jZV9tYXBfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9pbml0aWFsX25vZGUgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2luZmx1ZW5jZV9tYXAvaW5pdGlhbF9ub2RlXCJcbiAgICAgICAgICAgdXJsIHByb2plY3RfaWQpIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgSnNvblV0aWwudG9fb3B0aW9uIFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfb2ZfanNvblxuICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbmV4dF9ub2RlIHNob3J0X2lkX29wdCA9XG4gICAgICBzZW5kID90aW1lb3V0IHJlcXVlc3RfY291bnRcbiAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvcHJvamVjdHMvJXMvYW5hbHlzZXMvaW5mbHVlbmNlX21hcC9uZXh0X25vZGUlc1wiXG4gICAgICAgICAgIHVybCBwcm9qZWN0X2lkXG4gICAgICAgICAgIChtYXRjaCBzaG9ydF9pZF9vcHQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlJ1bGUgaSkgLT4gXCJfcnVsZV9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlZhciBpKSAtPiBcIl92YXJfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCIpKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X3ByZXZpb3VzX25vZGUgc2hvcnRfaWRfb3B0ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwL3ByZXZpb3VzX25vZGUlc1wiIHVybFxuICAgICAgICAgICBwcm9qZWN0X2lkXG4gICAgICAgICAgIChtYXRjaCBzaG9ydF9pZF9vcHQgd2l0aFxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlJ1bGUgaSkgLT4gXCJfcnVsZV9cIiBeIHN0cmluZ19vZl9pbnQgaVxuICAgICAgICAgICB8IFNvbWUgKFB1YmxpY19kYXRhLlZhciBpKSAtPiBcIl92YXJfXCIgXiBzdHJpbmdfb2ZfaW50IGlcbiAgICAgICAgICAgfCBOb25lIC0+IFwiXCIpKVxuICAgICAgICBgR0VUXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgeyBMb2MubGluZTsgTG9jLmNociB9ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9pbmZsdWVuY2VfbWFwL25vZGVfYXQ/ZmlsZT0lcyZsaW5lPSVpJmNocj0laVwiXG4gICAgICAgICAgIHVybCBwcm9qZWN0X2lkIGZpbGVuYW1lIGxpbmUgY2hyKSBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIEpzb25VdGlsLnRvX29wdGlvbiBQdWJsaWNfZGF0YS5zaG9ydF9pbmZsdWVuY2Vfbm9kZV9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9ub2Rlc19vZl9pbmZsdWVuY2VfbWFwIGFjY3VyYWN5ID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAobWF0Y2ggYWNjdXJhY3kgd2l0aFxuICAgICAgICB8IFNvbWUgYWNjdXJhY3kgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZlxuICAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9hbGxfbm9kZXNfb2ZfaW5mbHVlbmNlX21hcD9hY2N1cmFjeT0lc1wiXG4gICAgICAgICAgICB1cmwgcHJvamVjdF9pZFxuICAgICAgICAgICAgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyBhY2N1cmFjeSlcbiAgICAgICAgfCBOb25lIC0+IEZvcm1hdC5zcHJpbnRmIFwiJXMvdjIvYW5hbHlzZXMvYWxsX25vZGVzX29mX2luZmx1ZW5jZV9tYXBcIiB1cmwpXG4gICAgICAgIGBHRVRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEubm9kZXNfb2ZfaW5mbHVlbmNlX21hcF9vZl9qc29uXG4gICAgICAgICAgICAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9kZWFkX3J1bGVzID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9kZWFkX3J1bGVzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuZGVhZF9ydWxlc19vZl9qc29uIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2RlYWRfYWdlbnRzID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9kZWFkX2FnZW50c1wiIHVybCBwcm9qZWN0X2lkKVxuICAgICAgICBgR0VUIChmdW4geCAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLmpzb25fdG9fZGVhZF9hZ2VudHMgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBnZXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zID1cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGZcbiAgICAgICAgICAgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcIiB1cmxcbiAgICAgICAgICAgcHJvamVjdF9pZCkgYEdFVCAoZnVuIHggLT5cbiAgICAgICAgICBQdWJsaWNfZGF0YS5zZXBhcmF0aW5nX3RyYW5zaXRpb25zX29mX2pzb25cbiAgICAgICAgICAgIChZb2pzb24uQmFzaWMuZnJvbV9zdHJpbmcgeCkpXG5cbiAgICBtZXRob2QgZ2V0X2NvbnN0cmFpbnRzX2xpc3QgPVxuICAgICAgc2VuZCA/dGltZW91dCByZXF1ZXN0X2NvdW50XG4gICAgICAgIChGb3JtYXQuc3ByaW50ZiBcIiVzL3YyL3Byb2plY3RzLyVzL2FuYWx5c2VzL2NvbnN0cmFpbnRzXCIgdXJsIHByb2plY3RfaWQpXG4gICAgICAgIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEubGVtbWFzX2xpc3Rfb2ZfanNvbiAoWW9qc29uLkJhc2ljLmZyb21fc3RyaW5nIHgpKVxuXG4gICAgbWV0aG9kIGdldF9wb3RlbnRpYWxfcG9seW1lcnMgYWNjdXJhY3lfY20gYWNjdXJhY3lfc2NjID1cbiAgICAgIGxldCBvcHRpb25zID1cbiAgICAgICAgbWF0Y2ggYWNjdXJhY3lfY20sIGFjY3VyYWN5X3NjYyB3aXRoXG4gICAgICAgIHwgTm9uZSwgTm9uZSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBhLCBOb25lIC0+IFwiP2FjY3VyYWN5X2NtPVwiIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFcbiAgICAgICAgfCBOb25lLCBTb21lIGEgLT4gXCI/YWNjdXJhY3lfc2NjPVwiIF4gUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIGFcbiAgICAgICAgfCBTb21lIGEsIFNvbWUgYiAtPlxuICAgICAgICAgIFwiP2FjY3VyYWN5X2NtPVwiXG4gICAgICAgICAgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYVxuICAgICAgICAgIF4gXCImYWNjdXJhY3lfc2NjPVwiXG4gICAgICAgICAgXiBQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgYlxuICAgICAgaW5cbiAgICAgIHNlbmQgP3RpbWVvdXQgcmVxdWVzdF9jb3VudFxuICAgICAgICAoRm9ybWF0LnNwcmludGYgXCIlcy92Mi9wcm9qZWN0cy8lcy9hbmFseXNlcy9wb3RlbnRpYWxfcG9seW1lcnMlc1wiIHVybFxuICAgICAgICAgICBwcm9qZWN0X2lkIG9wdGlvbnMpIGBHRVQgKGZ1biB4IC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuc2NjX29mX2pzb24gKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyB4KSlcblxuICAgIG1ldGhvZCBpc19jb21wdXRpbmcgPSBpc19jb21wdXRpbmcgcmVxdWVzdF9jb3VudFxuXG4gICAgbWV0aG9kIGNvbmZpZ19zdG9yeV9jb21wdXRhdGlvbiB7IEFwaS5jYXVzYWw7IEFwaS53ZWFrOyBBcGkuc3Ryb25nIH1cbiAgICAgICAgOiAodW5pdCwgc3RyaW5nKSBMd3RfcmVzdWx0LnQgPVxuICAgICAgbGV0IF9kb250Y2FyZSA9IGNhdXNhbCB8fCB3ZWFrIHx8IHN0cm9uZyBpblxuICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBpbiBub3QgYXZhaWxhYmxlIHRocm91Z2ggSFRUUFwiXG5cbiAgICBtZXRob2QgcmF3X2xhdW5jaF9zdG9yeV9jb21wdXRhdGlvbiAoXyA6IHN0cmluZylcbiAgICAgICAgOiAodW5pdCwgc3RyaW5nKSBMd3RfcmVzdWx0LnQgPVxuICAgICAgTHd0LnJldHVybl9lcnJvciBcIkthU3RvciBpbiBub3QgYXZhaWxhYmxlIHRocm91Z2ggSFRUUFwiXG5cbiAgICBtZXRob2Qgc3RvcnlfbG9nIDogc3RyaW5nIGxpc3QgPSBbXVxuICAgIG1ldGhvZCBzdG9yeV9pc19jb21wdXRpbmcgPSBmYWxzZVxuICAgIG1ldGhvZCBzdG9yeV9wcm9ncmVzcyA6IFN0b3J5X2pzb24ucHJvZ3Jlc3NfYmFyIG9wdGlvbiA9IE5vbmVcblxuICAgIG1ldGhvZCBzdG9yeV9saXN0XG4gICAgICAgIDogKEFwaS5jb21wcmVzc2lvbl9tb2Rlc1xuICAgICAgICAgICogdW5pdCBUcmFjZS5TaW11bGF0aW9uX2luZm8udCBsaXN0IGxpc3RcbiAgICAgICAgICAqIEdyYXBoX2xvZ2dlcnNfc2lnLmdyYXBoKVxuICAgICAgICAgIE1vZHMuSW50TWFwLnQgPVxuICAgICAgTW9kcy5JbnRNYXAuZW1wdHlcbiAgZW5kXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgY2xpZW50SWRQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcENsaWVudElkXCJcbmxldCBfY2xpZW50X2lkIDogc3RyaW5nIHJlZiA9IHJlZiBcIlwiXG5sZXQgZ2V0X2NsaWVudF9pZCAoKSA6IHN0cmluZyA9ICFfY2xpZW50X2lkXG5sZXQgc2V0X2NsaWVudF9pZCAoY2xpZW50X2lkIDogc3RyaW5nKSA6IHVuaXQgPSBfY2xpZW50X2lkIDo9IGNsaWVudF9pZFxubGV0IGZvbnRTaXplUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBGb250U2l6ZVwiXG5sZXQgY3VycmVudEZvbnRTaXplID0gcmVmIDEuNFxuXG5sZXQgaW5pdEZyb21TdG9yYWdlICgpID1cbiAgSnMuT3B0ZGVmLmNhc2VcbiAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAoZnVuICgpIC0+XG4gICAgICBsZXQgKCkgPSBjdXJyZW50Rm9udFNpemUgOj0gMS40IGluXG4gICAgICBfY2xpZW50X2lkIDo9IENvbW1vbi5ndWlkICgpKVxuICAgIChmdW4gc3QgLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGN1cnJlbnRGb250U2l6ZSA6PVxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gZm9udFNpemVQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiAxLjQpXG4gICAgICAgICAgICBKcy5wYXJzZUZsb2F0XG4gICAgICBpblxuICAgICAgX2NsaWVudF9pZCA6PVxuICAgICAgICBKcy5PcHQuY2FzZSAoc3QjI2dldEl0ZW0gY2xpZW50SWRQYXJhbUlkKSBDb21tb24uZ3VpZCBKcy50b19zdHJpbmcpXG5cbmxldCBzZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpID1cbiAgbGV0IHYnID0gc3RyaW5nX29mX2Zsb2F0ICFjdXJyZW50Rm9udFNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBKcy5PcHRkZWYuaXRlciBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2UgKGZ1biBzdCAtPlxuICAgICAgICBzdCMjc2V0SXRlbSBmb250U2l6ZVBhcmFtSWQgKEpzLnN0cmluZyB2JykpXG4gIGluXG4gIEpzLk9wdGRlZi5pdGVyIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZSAoZnVuIHN0IC0+XG4gICAgICBzdCMjc2V0SXRlbSBjbGllbnRJZFBhcmFtSWQgKEpzLnN0cmluZyAhX2NsaWVudF9pZCkpXG5cbmxldCB1cGRhdGVGb250U2l6ZSB+ZGVsdGEgPVxuICBsZXQgKCkgPSBjdXJyZW50Rm9udFNpemUgOj0gbWF4IDAuMiAobWluICghY3VycmVudEZvbnRTaXplICsuIGRlbHRhKSAzLikgaW5cbiAgbGV0IHYnID0gc3RyaW5nX29mX2Zsb2F0ICFjdXJyZW50Rm9udFNpemUgaW5cbiAgbGV0ICgpID1cbiAgICBEb21faHRtbC5kb2N1bWVudCMjLmJvZHkjIy5zdHlsZSMjLmZvbnRTaXplIDo9IEpzLnN0cmluZyAodicgXiBcImVtXCIpXG4gIGluXG4gICgpXG5cbmxldCBzeW5jaCwgc2V0X3N5bmNoID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBhZ2VudF9jb2xvcmluZyA9IEpzLlVuc2FmZS5vYmogW3x8XVxuXG5sZXQgaW5pdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgKCkgPSBpbml0RnJvbVN0b3JhZ2UgKCkgaW5cbiAgbGV0IGNsaWVudF9pZHMgPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJjbGllbnRfaWRcIiBpblxuICBsZXQgc3luY2ggPSBDb21tb25fc3RhdGUudXJsX2FyZ3MgXCJzeW5jaFwiIGluXG4gIGxldCAoKSA9XG4gICAgbWF0Y2ggY2xpZW50X2lkcyB3aXRoXG4gICAgfCBjbGllbnRfaWQgOjogXyAtPiBzZXRfY2xpZW50X2lkIGNsaWVudF9pZFxuICAgIHwgW10gLT4gKClcbiAgaW5cbiAgbGV0ICgpID0gc2V0X3N5bmNoIChbIFwidHJ1ZVwiIF0gPSBzeW5jaCkgaW5cbiAgTHd0LnJldHVybl91bml0XG5cbmxldCBzeW5jICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxuY2xhc3MgbWFuYWdlciAoKSA9XG4gIGxldCBrYXNhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVNhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthc2FfbWFpbGJveCA9IEthc2FfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYW1vaGFfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthTW9IYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYW1vaGFfbWFpbGJveCA9IEthbW9oYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthc3Rvcl93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTdG9yV29ya2VyLmpzXCIgaW5cbiAgbGV0IHN0b3Jfc3RhdGUsIHVwZGF0ZV9zdG9yX3N0YXRlID0gS2FzdG9yX2NsaWVudC5pbml0X3N0YXRlICgpIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICB2YWwgc2ltX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVNpbVdvcmtlci5qc1wiXG4gICAgdmFsIG11dGFibGUgaXNfcnVubmluZyA9IHRydWVcblxuICAgIGluaXRpYWxpemVyXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXNhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gcmVzcG9uc2VfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthc2FfY2xpZW50LnJlY2VpdmUga2FzYV9tYWlsYm94IHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2Ftb2hhX3dvcmtlciMjLm9ubWVzc2FnZSA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gcmVzcG9uc2VfbWVzc2FnZSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthbW9oYV9jbGllbnQucmVjZWl2ZSBrYW1vaGFfbWFpbGJveCByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc3Rvcl93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIHJlc3BvbnNlX21lc3NhZ2UgLT5cbiAgICAgICAgICAgICAgbGV0IHJlc3BvbnNlX3RleHQgPSByZXNwb25zZV9tZXNzYWdlIyMuZGF0YSBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBLYXN0b3JfY2xpZW50LnJlY2VpdmUgdXBkYXRlX3N0b3Jfc3RhdGUgcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBzaW1fd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXJcbiAgICAgICAgICAgIChmdW4gKHJlc3BvbnNlX21lc3NhZ2UgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA6IHN0cmluZyA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHNlbGYjcmVjZWl2ZSByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNpbV93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzYV93b3JrZXIjIy5vbmVycm9yIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IGlzX3J1bm5pbmcgPC0gZmFsc2UgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2Ftb2hhX3dvcmtlciMjLm9uZXJyb3IgOj1cbiAgICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID0gaXNfcnVubmluZyA8LSBmYWxzZSBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYXN0b3Jfd29ya2VyIyMub25lcnJvciA6PVxuICAgICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBpc19ydW5uaW5nIDwtIGZhbHNlIGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgICgpXG5cbiAgICBtZXRob2QgcHJpdmF0ZSBzbGVlcCB0aW1lb3V0ID0gSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCB0aW1lb3V0XG5cbiAgICBtZXRob2QgcHJpdmF0ZSBwb3N0X21lc3NhZ2UgKG1lc3NhZ2VfdGV4dCA6IHN0cmluZykgOiB1bml0ID1cbiAgICAgIHNpbV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dFxuXG4gICAgaW5oZXJpdCBNcGlfYXBpLm1hbmFnZXIgKClcblxuICAgIGluaGVyaXRcbiAgICAgIEthc2FfY2xpZW50Lm5ld191bmlmb3JtX2NsaWVudFxuICAgICAgICB+aXNfcnVubmluZzooZnVuICgpIC0+IHRydWUpXG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbWVzc2FnZV90ZXh0KSBpblxuICAgICAgICAgIGthc2Ffd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIGthc2FfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2Ftb2hhX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+XG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgbWVzc2FnZV90ZXh0KSBpblxuICAgICAgICAgIGthbW9oYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2Ftb2hhX21haWxib3hcblxuICAgIGluaGVyaXRcbiAgICAgIEthc3Rvcl9jbGllbnQubmV3X2NsaWVudFxuICAgICAgICB+cG9zdDooZnVuIG1lc3NhZ2VfdGV4dCAtPlxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1lc3NhZ2VfdGV4dCkgaW5cbiAgICAgICAgICBrYXN0b3Jfd29ya2VyIyNwb3N0TWVzc2FnZSBtZXNzYWdlX3RleHQpXG4gICAgICAgIHN0b3Jfc3RhdGVcblxuICAgIHZhbCBtdXRhYmxlIGthc2FfbG9jYXRvciA9IFtdXG5cbiAgICBtZXRob2QgcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmcgb3ZlcndyaXRlcyA9XG4gICAgICBzZWxmI3NlY3JldF9wcm9qZWN0X3BhcnNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gb3V0IC0+XG4gICAgICAgICAgICAgIGxldCBsb2FkID1cbiAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgb3V0IG92ZXJ3cml0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluaXQgPSBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyIG91dCBpblxuICAgICAgICAgICAgICBsZXQgbG9jYXRvcnMgPVxuICAgICAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBpbmZvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gaW5mb3MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb2FkID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPiBsb2NhdG9ycykpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zIDogXyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIExpc3QuZmluZF9vcHRcbiAgICAgICAgKGZ1biAoXywgeCkgLT4gTG9jLmlzX2luY2x1ZGVkX2luIGZpbGVuYW1lIHBvcyB4KVxuICAgICAgICBrYXNhX2xvY2F0b3JcbiAgICAgIHw+IE9wdGlvbl91dGlsLm1hcCBmc3RcbiAgICAgIHw+IFJlc3VsdF91dGlsLm9rID9zdGF0dXM6Tm9uZVxuICAgICAgfD4gTHd0LnJldHVyblxuXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSBpc19ydW5uaW5nXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIGxldCAoKSA9IHNpbV93b3JrZXIjI3Rlcm1pbmF0ZSBpblxuICAgICAga2FzYV93b3JrZXIjI3Rlcm1pbmF0ZVxuXG4gICAgbWV0aG9kIGlzX2NvbXB1dGluZyA9XG4gICAgICBzZWxmI3NpbV9pc19jb21wdXRpbmdcbiAgICAgIHx8IEthc2FfY2xpZW50LmlzX2NvbXB1dGluZyBrYXNhX21haWxib3hcbiAgICAgIHx8IHNlbGYjc3RvcnlfaXNfY29tcHV0aW5nXG4gIGVuZFxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxudHlwZSBjbGkgPSB7IHVybDogc3RyaW5nOyBjb21tYW5kOiBzdHJpbmc7IGFyZ3M6IHN0cmluZyBsaXN0IH1cbnR5cGUgcHJvdG9jb2wgPSBIVFRQIG9mIHN0cmluZyB8IENMSSBvZiBjbGlcbnR5cGUgcmVtb3RlID0geyBsYWJlbDogc3RyaW5nOyBwcm90b2NvbDogcHJvdG9jb2wgfVxudHlwZSBzcGVjID0gV2ViV29ya2VyIHwgRW1iZWRkZWQgfCBSZW1vdGUgb2YgcmVtb3RlXG50eXBlIHN0YXRlID0geyBzdGF0ZV9jdXJyZW50OiBzcGVjOyBzdGF0ZV9ydW50aW1lczogc3BlYyBsaXN0IH1cbnR5cGUgbW9kZWwgPSB7IG1vZGVsX2N1cnJlbnQ6IHNwZWM7IG1vZGVsX3J1bnRpbWVzOiBzcGVjIGxpc3QgfVxuXG5sZXQgc3BlY19sYWJlbCA6IHNwZWMgLT4gc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBXZWJXb3JrZXIgLT4gXCJXZWJXb3JrZXJcIlxuICB8IEVtYmVkZGVkIC0+IFwiRW1iZWRkZWRcIlxuICB8IFJlbW90ZSByZW1vdGUgLT4gcmVtb3RlLmxhYmVsXG5cbmxldCBzcGVjX2lkIDogc3BlYyAtPiBzdHJpbmcgPSBmdW5jdGlvblxuICB8IFdlYldvcmtlciAtPiBcIldlYldvcmtlclwiXG4gIHwgRW1iZWRkZWQgLT4gXCJFbWJlZGRlZFwiXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IEhUVFAgaHR0cCB9IC0+IGh0dHBcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gQ0xJIGNsaSB9IC0+IGNsaS51cmxcblxubGV0IHJlYWRfc3BlYyA6IHN0cmluZyAtPiBzcGVjIG9wdGlvbiA9IGZ1bmN0aW9uXG4gIHwgXCJXZWJXb3JrZXJcIiAtPiBTb21lIFdlYldvcmtlclxuICB8IFwiRW1iZWRkZWRcIiAtPiBTb21lIEVtYmVkZGVkXG4gIHwgdXJsIC0+XG4gICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwicGFyc2VfcmVtb3RlOiAlc1wiIHVybCkpIGluXG4gICAgbGV0IGZvcm1hdF91cmwgdXJsID1cbiAgICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIHVybCBpblxuICAgICAgaWYgbGVuZ3RoID4gMCAmJiBTdHJpbmcuZ2V0IHVybCAobGVuZ3RoIC0gMSkgPT0gJy8nIHRoZW5cbiAgICAgICAgU3RyaW5nLnN1YiB1cmwgMCAobGVuZ3RoIC0gMSlcbiAgICAgIGVsc2VcbiAgICAgICAgdXJsXG4gICAgaW5cbiAgICBsZXQgY2xlYW5lZF91cmwgaHR0cCA9XG4gICAgICBsZXQgY2xlYW5lZCA9XG4gICAgICAgIEZvcm1hdC5zcHJpbnRmIFwiJXM6JWQvJXNcIiBodHRwLlVybC5odV9ob3N0IGh0dHAuVXJsLmh1X3BvcnRcbiAgICAgICAgICBodHRwLlVybC5odV9wYXRoX3N0cmluZ1xuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcImNsZWFuZWQgOiAlc1wiIGNsZWFuZWQpKVxuICAgICAgaW5cbiAgICAgIGZvcm1hdF91cmwgY2xlYW5lZFxuICAgIGluXG4gICAgKG1hdGNoIFVybC51cmxfb2Zfc3RyaW5nIHVybCB3aXRoXG4gICAgfCBOb25lIC0+IE5vbmVcbiAgICB8IFNvbWUgcGFyc2VkIC0+XG4gICAgICBsZXQgcHJvdG9jb2wgOiBwcm90b2NvbCA9XG4gICAgICAgIG1hdGNoIHBhcnNlZCB3aXRoXG4gICAgICAgIHwgVXJsLkh0dHAgaHR0cCAtPiBIVFRQIChcImh0dHA6Ly9cIiBeIGNsZWFuZWRfdXJsIGh0dHApXG4gICAgICAgIHwgVXJsLkh0dHBzIGh0dHBzIC0+IEhUVFAgKFwiaHR0cHM6Ly9cIiBeIGNsZWFuZWRfdXJsIGh0dHBzKVxuICAgICAgICB8IFVybC5GaWxlIGZpbGUgLT5cbiAgICAgICAgICBDTElcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgdXJsID0gXCJmaWxlOi8vXCIgXiBmaWxlLlVybC5mdV9wYXRoX3N0cmluZztcbiAgICAgICAgICAgICAgY29tbWFuZCA9IGZpbGUuVXJsLmZ1X3BhdGhfc3RyaW5nO1xuICAgICAgICAgICAgICBhcmdzID0gW107XG4gICAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgbGV0IGxhYmVsID1cbiAgICAgICAgdHJ5XG4gICAgICAgICAgTGlzdC5hc3NvYyBcImxhYmVsXCJcbiAgICAgICAgICAgIChtYXRjaCBwYXJzZWQgd2l0aFxuICAgICAgICAgICAgfCBVcmwuSHR0cCBodHRwIC0+IGh0dHAuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgfCBVcmwuSHR0cHMgaHR0cHMgLT4gaHR0cHMuVXJsLmh1X2FyZ3VtZW50c1xuICAgICAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+IGZpbGUuVXJsLmZ1X2FyZ3VtZW50cylcbiAgICAgICAgd2l0aCBOb3RfZm91bmQgLT5cbiAgICAgICAgICAobWF0Y2ggcGFyc2VkIHdpdGhcbiAgICAgICAgICB8IFVybC5IdHRwIGh0dHAgLT4gaHR0cC5VcmwuaHVfaG9zdFxuICAgICAgICAgIHwgVXJsLkh0dHBzIGh0dHBzIC0+IGh0dHBzLlVybC5odV9ob3N0XG4gICAgICAgICAgfCBVcmwuRmlsZSBmaWxlIC0+IGZpbGUuVXJsLmZ1X3BhdGhfc3RyaW5nKVxuICAgICAgaW5cbiAgICAgIFNvbWUgKFJlbW90ZSB7IGxhYmVsOyBwcm90b2NvbCB9KSlcblxuY2xhc3MgZW1iZWRkZWQgKCkgOiBBcGkuY29uY3JldGVfbWFuYWdlciA9XG4gIGxldCBrYXNhX3dvcmtlciA9IFdvcmtlci5jcmVhdGUgXCJLYVNhV29ya2VyLmpzXCIgaW5cbiAgbGV0IGthc2FfbWFpbGJveCA9IEthc2FfY2xpZW50Lm5ld19tYWlsYm94ICgpIGluXG4gIGxldCBrYW1vaGFfd29ya2VyID0gV29ya2VyLmNyZWF0ZSBcIkthTW9IYVdvcmtlci5qc1wiIGluXG4gIGxldCBrYW1vaGFfbWFpbGJveCA9IEthbW9oYV9jbGllbnQubmV3X21haWxib3ggKCkgaW5cbiAgbGV0IGthc3Rvcl93b3JrZXIgPSBXb3JrZXIuY3JlYXRlIFwiS2FTdG9yV29ya2VyLmpzXCIgaW5cbiAgbGV0IHN0b3Jfc3RhdGUsIHVwZGF0ZV9zdG9yX3N0YXRlID0gS2FzdG9yX2NsaWVudC5pbml0X3N0YXRlICgpIGluXG4gIG9iamVjdCAoc2VsZilcbiAgICBpbml0aWFsaXplclxuICAgICAgbGV0ICgpID1cbiAgICAgICAga2FzYV93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlclxuICAgICAgICAgICAgKGZ1biAocmVzcG9uc2VfbWVzc2FnZSA6IHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0IDogc3RyaW5nID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2FzYV9jbGllbnQucmVjZWl2ZSBrYXNhX21haWxib3ggcmVzcG9uc2VfdGV4dCBpblxuICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPVxuICAgICAgICBrYW1vaGFfd29ya2VyIyMub25tZXNzYWdlIDo9XG4gICAgICAgICAgRG9tLmhhbmRsZXJcbiAgICAgICAgICAgIChmdW4gKHJlc3BvbnNlX21lc3NhZ2UgOiBzdHJpbmcgV29ya2VyLm1lc3NhZ2VFdmVudCBKcy50KSAtPlxuICAgICAgICAgICAgICBsZXQgcmVzcG9uc2VfdGV4dCA6IHN0cmluZyA9IHJlc3BvbnNlX21lc3NhZ2UjIy5kYXRhIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IEthbW9oYV9jbGllbnQucmVjZWl2ZSBrYW1vaGFfbWFpbGJveCByZXNwb25zZV90ZXh0IGluXG4gICAgICAgICAgICAgIEpzLl90cnVlKVxuICAgICAgaW5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIGthc3Rvcl93b3JrZXIjIy5vbm1lc3NhZ2UgOj1cbiAgICAgICAgICBEb20uaGFuZGxlclxuICAgICAgICAgICAgKGZ1biAocmVzcG9uc2VfbWVzc2FnZSA6IHN0cmluZyBXb3JrZXIubWVzc2FnZUV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICAgIGxldCByZXNwb25zZV90ZXh0IDogc3RyaW5nID0gcmVzcG9uc2VfbWVzc2FnZSMjLmRhdGEgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gS2FzdG9yX2NsaWVudC5yZWNlaXZlIHVwZGF0ZV9zdG9yX3N0YXRlIHJlc3BvbnNlX3RleHQgaW5cbiAgICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgICBpblxuICAgICAgKClcblxuICAgIGluaGVyaXRcbiAgICAgIEFwaV9ydW50aW1lLm1hbmFnZXJcbiAgICAgICAgKG9iamVjdFxuICAgICAgICAgICBtZXRob2QgbWluX3J1bl9kdXJhdGlvbiAoKSA9IDAuMVxuICAgICAgICAgICBtZXRob2QgeWllbGQgPSBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnlpZWxkXG5cbiAgICAgICAgICAgbWV0aG9kIGxvZyA/ZXhuIChtc2cgOiBzdHJpbmcpID1cbiAgICAgICAgICAgICBsZXQgKCkgPSBpZ25vcmUgZXhuIGluXG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcImVtYmVkZGVkX21hbmFnZXIjbG9nOiAlc1wiIG1zZykpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICAgICAgIGVuZFxuICAgICAgICAgIDogS2FwcGFfZmFjYWRlLnN5c3RlbV9wcm9jZXNzKVxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzYV9jbGllbnQubmV3X3VuaWZvcm1fY2xpZW50XG4gICAgICAgIH5pc19ydW5uaW5nOihmdW4gKCkgLT4gdHJ1ZSlcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT4ga2FzYV93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAga2FzYV9tYWlsYm94XG5cbiAgICBpbmhlcml0XG4gICAgICBLYW1vaGFfY2xpZW50Lm5ld19jbGllbnRcbiAgICAgICAgfnBvc3Q6KGZ1biBtZXNzYWdlX3RleHQgLT4ga2Ftb2hhX3dvcmtlciMjcG9zdE1lc3NhZ2UgbWVzc2FnZV90ZXh0KVxuICAgICAgICBrYW1vaGFfbWFpbGJveFxuXG4gICAgaW5oZXJpdFxuICAgICAgS2FzdG9yX2NsaWVudC5uZXdfY2xpZW50XG4gICAgICAgIH5wb3N0OihmdW4gbWVzc2FnZV90ZXh0IC0+IGthc3Rvcl93b3JrZXIjI3Bvc3RNZXNzYWdlIG1lc3NhZ2VfdGV4dClcbiAgICAgICAgc3Rvcl9zdGF0ZVxuXG4gICAgbWV0aG9kIGlzX3J1bm5pbmcgPSB0cnVlXG5cbiAgICBtZXRob2QgdGVybWluYXRlID1cbiAgICAgIGxldCAoKSA9IGthc2Ffd29ya2VyIyN0ZXJtaW5hdGUgaW5cbiAgICAgICgpICgqVE9ETyopXG5cbiAgICBtZXRob2QgaXNfY29tcHV0aW5nID0gdHJ1ZSAoKlRPRE8qKVxuICAgIHZhbCBtdXRhYmxlIGthc2FfbG9jYXRvciA9IFtdXG5cbiAgICBtZXRob2QgcHJvamVjdF9wYXJzZSB+cGF0dGVyblNoYXJpbmcgb3ZlcndyaXRlcyA9XG4gICAgICBzZWxmI3NlY3JldF9wcm9qZWN0X3BhcnNlXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gb3V0IC0+XG4gICAgICAgICAgICAgIGxldCBsb2FkID1cbiAgICAgICAgICAgICAgICBzZWxmI3NlY3JldF9zaW11bGF0aW9uX2xvYWQgcGF0dGVyblNoYXJpbmcgb3V0IG92ZXJ3cml0ZXNcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgbGV0IGluaXQgPSBzZWxmI2luaXRfc3RhdGljX2FuYWx5c2VyIG91dCBpblxuICAgICAgICAgICAgICBsZXQgbG9jYXRvcnMgPVxuICAgICAgICAgICAgICAgIGluaXRcbiAgICAgICAgICAgICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGthc2FfbG9jYXRvciA8LSBbXSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpXG4gICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYjc2VjcmV0X2dldF9wb3Nfb2ZfcnVsZXNfYW5kX3ZhcnNcbiAgICAgICAgICAgICAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBpbmZvcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gaW5mb3MgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBrYXNhX2xvY2F0b3IgPC0gW10gaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwuZXJyb3IgZSkpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsb2FkID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPiBsb2NhdG9ycykpXG5cbiAgICBtZXRob2QgZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgcG9zIDogXyBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgIExpc3QuZmluZF9vcHRcbiAgICAgICAgKGZ1biAoXywgeCkgLT4gTG9jLmlzX2luY2x1ZGVkX2luIGZpbGVuYW1lIHBvcyB4KVxuICAgICAgICBrYXNhX2xvY2F0b3JcbiAgICAgIHw+IE9wdGlvbl91dGlsLm1hcCBmc3RcbiAgICAgIHw+IFJlc3VsdF91dGlsLm9rID9zdGF0dXM6Tm9uZVxuICAgICAgfD4gTHd0LnJldHVyblxuICBlbmRcblxubGV0IHN0YXRlLCBzZXRfc3RhdGUgPVxuICBSZWFjdC5TLmNyZWF0ZVxuICAgIHsgc3RhdGVfY3VycmVudCA9IFdlYldvcmtlcjsgc3RhdGVfcnVudGltZXMgPSBbIFdlYldvcmtlcjsgRW1iZWRkZWQgXSB9XG5cbmxldCBjcmVhdGVfbWFuYWdlciB+aXNfbmV3IHByb2plY3RfaWQgPVxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkuc3RhdGVfY3VycmVudCB3aXRoXG4gIHwgV2ViV29ya2VyIC0+XG4gICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIGZhbHNlIGluXG4gICAgTHd0LnJldHVyblxuICAgICAgKFJlc3VsdF91dGlsLm9rIChuZXcgV2ViX3dvcmtlcl9hcGkubWFuYWdlciAoKSA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSlcbiAgfCBFbWJlZGRlZCAtPlxuICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCBmYWxzZSBpblxuICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChuZXcgZW1iZWRkZWQgKCkgOiBBcGkuY29uY3JldGVfbWFuYWdlcikpXG4gIHwgUmVtb3RlIHsgbGFiZWwgPSBfOyBwcm90b2NvbCA9IEhUVFAgdXJsIH0gLT5cbiAgICBsZXQgdmVyc2lvbl91cmwgOiBzdHJpbmcgPSBGb3JtYXQuc3ByaW50ZiBcIiVzL3YyXCIgdXJsIGluXG4gICAgbGV0ICgpID1cbiAgICAgIENvbW1vbi5kZWJ1Z1xuICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcInNldF9ydW50aW1lX3VybDogJXNcIiB2ZXJzaW9uX3VybCkpXG4gICAgaW5cbiAgICBKc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QucGVyZm9ybV9yYXdcbiAgICAgIH5yZXNwb25zZV90eXBlOlhtbEh0dHBSZXF1ZXN0LlRleHQgdmVyc2lvbl91cmxcbiAgICA+Pj0gZnVuIGZyYW1lIC0+XG4gICAgbGV0IGlzX3ZhbGlkX3NlcnZlciA6IGJvb2wgPVxuICAgICAgZnJhbWUuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPSAyMDBcbiAgICBpblxuICAgIGlmIGlzX3ZhbGlkX3NlcnZlciB0aGVuIChcbiAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9zeW5jaCB0cnVlIGluXG4gICAgICBsZXQgbWFuYWdlciA9IG5ldyBSZXN0X2FwaS5tYW5hZ2VyIH50aW1lb3V0Ok5vbmUgfnVybCB+cHJvamVjdF9pZCBpblxuICAgICAgKGlmIGlzX25ldyB0aGVuXG4gICAgICAgICBtYW5hZ2VyI3Byb2plY3RfY3JlYXRlXG4gICAgICAgICAgIHsgQXBpX3R5cGVzX2oucHJvamVjdF9wYXJhbWV0ZXJfcHJvamVjdF9pZCA9IHByb2plY3RfaWQgfVxuICAgICAgIGVsc2VcbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAobWFuYWdlciA6PiBBcGkuY29uY3JldGVfbWFuYWdlcikpKVxuICAgICkgZWxzZSAoXG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgRm9ybWF0LnNwcmludGYgXCJCYWQgUmVzcG9uc2UgJWQgZnJvbSAlcyBcIlxuICAgICAgICAgIGZyYW1lLkpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5jb2RlIHVybFxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgKVxuICB8IFJlbW90ZSB7IGxhYmVsOyBwcm90b2NvbCA9IENMSSBjbGkgfSAtPlxuICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChcInNldF9ydW50aW1lX3VybDogXCIgXiBjbGkudXJsKSkgaW5cbiAgICAodHJ5XG4gICAgICAgbGV0IGpzX25vZGVfcnVudGltZSA9IG5ldyBKc05vZGUubWFuYWdlciBjbGkuY29tbWFuZCBjbGkuYXJncyBpblxuICAgICAgIGlmIGpzX25vZGVfcnVudGltZSNpc19ydW5uaW5nIHRoZW4gKFxuICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJzZXRfcnVudGltZV91cmw6c3VjZXNzXCIpIGluXG4gICAgICAgICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggZmFsc2UgaW5cbiAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChqc19ub2RlX3J1bnRpbWUgOj4gQXBpLmNvbmNyZXRlX21hbmFnZXIpKVxuICAgICAgICkgZWxzZSAoXG4gICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcInNldF9ydW50aW1lX3VybDpmYWlsdXJlXCIpIGluXG4gICAgICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgICAgRm9ybWF0LnNwcmludGYgXCJDb3VsZCBub3Qgc3RhcnQgY2xpIHJ1bnRpbWUgJXMgXCIgbGFiZWxcbiAgICAgICAgIGluXG4gICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgICAgIClcbiAgICAgd2l0aCBGYWlsdXJlIHggLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIHgpKVxuXG5sZXQgc2V0X3NwZWMgcnVudGltZSA9XG4gIGxldCBjdXJyZW50X3N0YXRlID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICBzZXRfc3RhdGVcbiAgICB7IHN0YXRlX2N1cnJlbnQgPSBydW50aW1lOyBzdGF0ZV9ydW50aW1lcyA9IGN1cnJlbnRfc3RhdGUuc3RhdGVfcnVudGltZXMgfVxuXG5sZXQgY3JlYXRlX3NwZWMgfmxvYWQgKGlkIDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCA9XG4gIG1hdGNoIHJlYWRfc3BlYyBpZCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgdG8gY3JlYXRlIHNwZWM6IGNvdWxkIG5vdCBwYXJzZSBpZGVudGlmaWVyICVzXCIgaWRcbiAgICBpblxuICAgIEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2dcbiAgfCBTb21lIHJ1bnRpbWUgLT5cbiAgICBsZXQgY3VycmVudF9zdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgaWYgbm90IChMaXN0Lm1lbSBydW50aW1lIGN1cnJlbnRfc3RhdGUuc3RhdGVfcnVudGltZXMpIHRoZW5cbiAgICAgICAgc2V0X3N0YXRlXG4gICAgICAgICAge1xuICAgICAgICAgICAgc3RhdGVfY3VycmVudCA9IGN1cnJlbnRfc3RhdGUuc3RhdGVfY3VycmVudDtcbiAgICAgICAgICAgIHN0YXRlX3J1bnRpbWVzID0gcnVudGltZSA6OiBjdXJyZW50X3N0YXRlLnN0YXRlX3J1bnRpbWVzO1xuICAgICAgICAgIH1cbiAgICBpblxuICAgIGxldCAoKSA9IGlmIGxvYWQgdGhlbiBzZXRfc3BlYyBydW50aW1lIGluXG4gICAgUmVzdWx0X3V0aWwub2sgKClcblxubGV0IG1vZGVsIDogbW9kZWwgUmVhY3Quc2lnbmFsID1cbiAgUmVhY3QuUy5tYXBcbiAgICAoZnVuIHN0YXRlIC0+XG4gICAgICB7XG4gICAgICAgIG1vZGVsX2N1cnJlbnQgPSBzdGF0ZS5zdGF0ZV9jdXJyZW50O1xuICAgICAgICBtb2RlbF9ydW50aW1lcyA9IHN0YXRlLnN0YXRlX3J1bnRpbWVzO1xuICAgICAgfSlcbiAgICBzdGF0ZVxuXG4oKiBydW4gb24gYXBwbGljYXRpb24gaW5pdCAqKVxubGV0IGluaXQgKCkgPVxuICAoKiBnZXQgdXJsIG9mIGhvc3QgKilcbiAgbGV0IGhvc3RzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwiaG9zdFwiIGluXG4gIGxldCByZWMgYWRkX3VybHMgdXJscyBsb2FkID1cbiAgICBtYXRjaCB1cmxzIHdpdGhcbiAgICB8IFtdIC0+ICgpXG4gICAgfCB1cmwgOjogdXJscyAtPlxuICAgICAgKG1hdGNoIGNyZWF0ZV9zcGVjIH5sb2FkIHVybCB3aXRoXG4gICAgICB8IHsgUmVzdWx0X3V0aWwudmFsdWUgPSBSZXN1bHQuT2sgKCk7IF8gfSAtPiBhZGRfdXJscyB1cmxzIGZhbHNlXG4gICAgICB8IHsgUmVzdWx0X3V0aWwudmFsdWUgPSBSZXN1bHQuRXJyb3IgXzsgXyB9IC0+IGFkZF91cmxzIHVybHMgbG9hZClcbiAgaW5cbiAgbGV0ICgpID0gYWRkX3VybHMgaG9zdHMgdHJ1ZSBpblxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkuc3RhdGVfY3VycmVudCB3aXRoXG4gIHwgUmVtb3RlIHsgcHJvdG9jb2wgPSBDTEkgXzsgXyB9IHwgV2ViV29ya2VyIHwgRW1iZWRkZWQgLT4gTHd0LnJldHVybl9uaWxcbiAgfCBSZW1vdGUgeyBsYWJlbCA9IF87IHByb3RvY29sID0gSFRUUCB1cmwgfSAtPlxuICAgIGxldCB2ZXJzaW9uX3VybCA6IHN0cmluZyA9IEZvcm1hdC5zcHJpbnRmIFwiJXMvdjJcIiB1cmwgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgIChKcy5zdHJpbmcgKEZvcm1hdC5zcHJpbnRmIFwic2V0X3J1bnRpbWVfdXJsOiAlc1wiIHZlcnNpb25fdXJsKSlcbiAgICBpblxuICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5wZXJmb3JtX3Jhd1xuICAgICAgfnJlc3BvbnNlX3R5cGU6WG1sSHR0cFJlcXVlc3QuVGV4dCB2ZXJzaW9uX3VybFxuICAgID4+PSBmdW4gZnJhbWUgLT5cbiAgICBsZXQgaXNfdmFsaWRfc2VydmVyIDogYm9vbCA9XG4gICAgICBmcmFtZS5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QuY29kZSA9IDIwMFxuICAgIGluXG4gICAgaWYgaXNfdmFsaWRfc2VydmVyIHRoZW4gKFxuICAgICAgbGV0ICgpID0gU3RhdGVfc2V0dGluZ3Muc2V0X3N5bmNoIHRydWUgaW5cbiAgICAgIGxldCBtYW5hZ2VyID0gbmV3IFJlc3RfYXBpLm1hbmFnZXIgfnRpbWVvdXQ6Tm9uZSB+dXJsIH5wcm9qZWN0X2lkOlwiXCIgaW5cbiAgICAgIG1hbmFnZXIjcHJvamVjdF9jYXRhbG9nXG4gICAgICA+Pj0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgfm9rOihmdW4gcHJvamVjdHMgLT4gTHd0LnJldHVybiBwcm9qZWN0cylcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gTHd0LnJldHVybl9uaWwpXG4gICAgKSBlbHNlXG4gICAgICBMd3QucmV0dXJuX25pbFxuXG4oKiB0byBzeW5jIHN0YXRlIG9mIGFwcGxpY2F0aW9uIHdpdGggcnVudGltZSAqKVxubGV0IHN5bmMgKCkgPSBMd3QucmV0dXJuX3VuaXRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCBwbG90UGVyaW9kUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBQbG90UGVyaW9kXCJcbmxldCBwYXVzZUNvbmRpdGlvblBhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwUGF1c2VDb25kaXRpb25cIlxubGV0IHNlZWRQYXJhbUlkID0gSnMuc3RyaW5nIFwia2FwcGFwcERlZmF1bHRTZWVkXCJcbmxldCBzdG9yZVRyYWNlUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBTdG9yZVRyYWNlXCJcbmxldCBzaG93RGVhZFJ1bGVzUGFyYW1JZCA9IEpzLnN0cmluZyBcImthcHBhcHBTaG93RGVhZFJ1bGVzXCJcbmxldCBzaG93RGVhZEFnZW50c1BhcmFtSWQgPSBKcy5zdHJpbmcgXCJrYXBwYXBwU2hvd0RlYWRBZ2VudHNcIlxuXG5sZXQgc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZCA9XG4gIEpzLnN0cmluZyBcImthcHBhcHBTaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvblwiXG5cbnR5cGUgcGFyYW1ldGVycyA9IHtcbiAgcGxvdF9wZXJpb2Q6IGZsb2F0O1xuICBwYXVzZV9jb25kaXRpb246IHN0cmluZztcbiAgc2VlZDogaW50IG9wdGlvbjtcbiAgc3RvcmVfdHJhY2U6IGJvb2w7XG4gIHNob3dfZGVhZF9ydWxlczogYm9vbDtcbiAgc2hvd19kZWFkX2FnZW50czogYm9vbDtcbiAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnM6IGJvb2w7XG59XG5cbnR5cGUgYV9wcm9qZWN0ID0ge1xuICBwcm9qZWN0X2lkOiBzdHJpbmc7XG4gIHByb2plY3RfaXNfY29tcHV0aW5nOiBib29sIFJlYWN0LlMudDtcbiAgcHJvamVjdF93YXRjaGVyX2NhbmNlbDogYm9vbCByZWY7XG4gIHByb2plY3RfbWFuYWdlcjogQXBpLmNvbmNyZXRlX21hbmFnZXI7XG59XG5cbnR5cGUgc3RhdGUgPSB7XG4gIHByb2plY3RfY3VycmVudDogYV9wcm9qZWN0IG9wdGlvbjtcbiAgcHJvamVjdF9jYXRhbG9nOiBhX3Byb2plY3QgbGlzdDtcbiAgcHJvamVjdF92ZXJzaW9uOiBpbnQ7XG4gIGRlZmF1bHRfcGFyYW1ldGVyczogcGFyYW1ldGVycztcbiAgcHJvamVjdF9wYXJhbWV0ZXJzOiBwYXJhbWV0ZXJzIE1vZHMuU3RyaW5nTWFwLnQ7XG59XG5cbnR5cGUgcHJvamVjdF9tb2RlbCA9IHtcbiAgbW9kZWxfcHJvamVjdF9pZDogc3RyaW5nO1xuICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZzogYm9vbCBSZWFjdC5TLnQ7XG59XG5cbnR5cGUgbW9kZWwgPSB7XG4gIG1vZGVsX2N1cnJlbnRfaWQ6IHN0cmluZyBvcHRpb247XG4gIG1vZGVsX2NhdGFsb2c6IHByb2plY3RfbW9kZWwgbGlzdDtcbiAgbW9kZWxfcHJvamVjdF92ZXJzaW9uOiBpbnQ7XG4gIG1vZGVsX3BhcmFtZXRlcnM6IHBhcmFtZXRlcnM7XG59XG5cbmxldCBwcm9qZWN0X2VxdWFsIGEgYiA9IGEucHJvamVjdF9pZCA9IGIucHJvamVjdF9pZFxuXG5sZXQgY2F0YWxvZ19lcXVhbCB4IHkgPVxuICB0cnkgTGlzdC5mb3JfYWxsMiBwcm9qZWN0X2VxdWFsIHggeSB3aXRoIEludmFsaWRfYXJndW1lbnQgXyAtPiBmYWxzZVxuXG5sZXQgc3RhdGVfZXF1YWwgYSBiID1cbiAgT3B0aW9uX3V0aWwuZXF1YWwgcHJvamVjdF9lcXVhbCBhLnByb2plY3RfY3VycmVudCBiLnByb2plY3RfY3VycmVudFxuICAmJiBhLnByb2plY3RfdmVyc2lvbiA9IGIucHJvamVjdF92ZXJzaW9uXG4gICYmIGEuZGVmYXVsdF9wYXJhbWV0ZXJzID0gYi5kZWZhdWx0X3BhcmFtZXRlcnNcbiAgJiYgTW9kcy5TdHJpbmdNYXAuZXF1YWxcbiAgICAgICAoZnVuIHggeSAtPiBjb21wYXJlIHggeSA9IDApXG4gICAgICAgYS5wcm9qZWN0X3BhcmFtZXRlcnMgYi5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgJiYgY2F0YWxvZ19lcXVhbCBhLnByb2plY3RfY2F0YWxvZyBiLnByb2plY3RfY2F0YWxvZ1xuXG5sZXQgbW9kZWxfZXF1YWwgYSBiID1cbiAgT3B0aW9uX3V0aWwuZXF1YWxcbiAgICAoZnVuIHggeSAtPiBTdHJpbmcuY29tcGFyZSB4IHkgPSAwKVxuICAgIGEubW9kZWxfY3VycmVudF9pZCBiLm1vZGVsX2N1cnJlbnRfaWRcbiAgJiYgKHRyeVxuICAgICAgICBMaXN0LmZvcl9hbGwyXG4gICAgICAgICAgKGZ1biB4IHkgLT4geC5tb2RlbF9wcm9qZWN0X2lkID0geS5tb2RlbF9wcm9qZWN0X2lkKVxuICAgICAgICAgIGEubW9kZWxfY2F0YWxvZyBiLm1vZGVsX2NhdGFsb2dcbiAgICAgIHdpdGggSW52YWxpZF9hcmd1bWVudCBfIC0+IGZhbHNlKVxuICAmJiBhLm1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IGIubW9kZWxfcHJvamVjdF92ZXJzaW9uXG4gICYmIGEubW9kZWxfcGFyYW1ldGVycyA9IGIubW9kZWxfcGFyYW1ldGVyc1xuXG5sZXQgaW5pdF9kZWZhdWx0X3BhcmFtZXRlcnMgPVxuICB7XG4gICAgcGxvdF9wZXJpb2QgPSAxLjtcbiAgICBwYXVzZV9jb25kaXRpb24gPSBcIltmYWxzZV1cIjtcbiAgICBzZWVkID0gTm9uZTtcbiAgICBzdG9yZV90cmFjZSA9IGZhbHNlO1xuICAgIHNob3dfZGVhZF9ydWxlcyA9IHRydWU7XG4gICAgc2hvd19kZWFkX2FnZW50cyA9IHRydWU7XG4gICAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPSBmYWxzZTtcbiAgfVxuXG5sZXQgaW5pdF9zdGF0ZSA9XG4gIHtcbiAgICBwcm9qZWN0X2N1cnJlbnQgPSBOb25lO1xuICAgIHByb2plY3RfY2F0YWxvZyA9IFtdO1xuICAgIHByb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgIGRlZmF1bHRfcGFyYW1ldGVycyA9IGluaXRfZGVmYXVsdF9wYXJhbWV0ZXJzO1xuICAgIHByb2plY3RfcGFyYW1ldGVycyA9IE1vZHMuU3RyaW5nTWFwLmVtcHR5O1xuICB9XG5cbmxldCBzdGF0ZSwgc2V0X3N0YXRlID0gUmVhY3QuUy5jcmVhdGUgfmVxOnN0YXRlX2VxdWFsIGluaXRfc3RhdGVcblxubGV0IHVwZGF0ZV9wYXJhbWV0ZXJzIGhhbmRsZXIgPVxuICBsZXQgc3QgPSBSZWFjdC5TLnZhbHVlIHN0YXRlIGluXG4gIGxldCBkZWZhdWx0X3BhcmFtZXRlcnMsIHByb2plY3RfcGFyYW1ldGVycyA9XG4gICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICB8IE5vbmUgLT4gaGFuZGxlciBzdC5kZWZhdWx0X3BhcmFtZXRlcnMsIHN0LnByb2plY3RfcGFyYW1ldGVyc1xuICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICAoIHN0LmRlZmF1bHRfcGFyYW1ldGVycyxcbiAgICAgICAgTW9kcy5TdHJpbmdNYXAuYWRkIHByb2oucHJvamVjdF9pZFxuICAgICAgICAgIChoYW5kbGVyXG4gICAgICAgICAgICAgKE1vZHMuU3RyaW5nTWFwLmZpbmRfZGVmYXVsdCBzdC5kZWZhdWx0X3BhcmFtZXRlcnMgcHJvai5wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzKSlcbiAgICAgICAgICBzdC5wcm9qZWN0X3BhcmFtZXRlcnMgKVxuICBpblxuICBzZXRfc3RhdGVcbiAgICB7XG4gICAgICBwcm9qZWN0X2N1cnJlbnQgPSBzdC5wcm9qZWN0X2N1cnJlbnQ7XG4gICAgICBwcm9qZWN0X2NhdGFsb2cgPSBzdC5wcm9qZWN0X2NhdGFsb2c7XG4gICAgICBwcm9qZWN0X3ZlcnNpb24gPSBzdC5wcm9qZWN0X3ZlcnNpb247XG4gICAgICBkZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICBwcm9qZWN0X3BhcmFtZXRlcnM7XG4gICAgfVxuXG5sZXQgc2V0X3BhcmFtZXRlcnNfYXNfZGVmYXVsdCAoKSA9XG4gIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgbGV0IHBhID1cbiAgICBtYXRjaCBzdC5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgIHwgTm9uZSAtPiBzdC5kZWZhdWx0X3BhcmFtZXRlcnNcbiAgICB8IFNvbWUgcHJvaiAtPlxuICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0LmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgc3QucHJvamVjdF9wYXJhbWV0ZXJzXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSnMuT3B0ZGVmLml0ZXIgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlIChmdW4gbHMgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBscyMjc2V0SXRlbSBwbG90UGVyaW9kUGFyYW1JZFxuICAgICAgICAgICAgKEpzLnN0cmluZyAoc3RyaW5nX29mX2Zsb2F0IHBhLnBsb3RfcGVyaW9kKSlcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBscyMjc2V0SXRlbSBwYXVzZUNvbmRpdGlvblBhcmFtSWQgKEpzLnN0cmluZyBwYS5wYXVzZV9jb25kaXRpb24pXG4gICAgICAgIGluXG4gICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgbWF0Y2ggcGEuc2VlZCB3aXRoXG4gICAgICAgICAgfCBOb25lIC0+IGxzIyNyZW1vdmVJdGVtIHNlZWRQYXJhbUlkXG4gICAgICAgICAgfCBTb21lIHZhIC0+IGxzIyNzZXRJdGVtIHNlZWRQYXJhbUlkIChKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgdmEpKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgIGlmIHBhLnN0b3JlX3RyYWNlIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHN0b3JlVHJhY2VQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3JlbW92ZUl0ZW0gc3RvcmVUcmFjZVBhcmFtSWRcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X2RlYWRfcnVsZXMgdGhlblxuICAgICAgICAgICAgbHMjI3NldEl0ZW0gc2hvd0RlYWRSdWxlc1BhcmFtSWQgKEpzLnN0cmluZyBcInRydWVcIilcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93RGVhZFJ1bGVzUGFyYW1JZCAoSnMuc3RyaW5nIFwiZmFsc2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X2RlYWRfYWdlbnRzIHRoZW5cbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkQWdlbnRzUGFyYW1JZCAoSnMuc3RyaW5nIFwidHJ1ZVwiKVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGxzIyNzZXRJdGVtIHNob3dEZWFkQWdlbnRzUGFyYW1JZCAoSnMuc3RyaW5nIFwiZmFsc2VcIilcbiAgICAgICAgaW5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICBpZiBwYS5zaG93X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyB0aGVuXG4gICAgICAgICAgICBscyMjc2V0SXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkIChKcy5zdHJpbmcgXCJ0cnVlXCIpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgbHMjI3JlbW92ZUl0ZW0gc2hvd0lycmV2ZXJzaWJsZVRyYW5zaXRpb25zUGFyYW1JZFxuICAgICAgICBpblxuICAgICAgICAoKSlcbiAgaW5cbiAgc2V0X3N0YXRlXG4gICAge1xuICAgICAgcHJvamVjdF9jdXJyZW50ID0gc3QucHJvamVjdF9jdXJyZW50O1xuICAgICAgcHJvamVjdF9jYXRhbG9nID0gc3QucHJvamVjdF9jYXRhbG9nO1xuICAgICAgcHJvamVjdF92ZXJzaW9uID0gc3QucHJvamVjdF92ZXJzaW9uO1xuICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzID0gc3QucHJvamVjdF9wYXJhbWV0ZXJzO1xuICAgICAgZGVmYXVsdF9wYXJhbWV0ZXJzID0gcGE7XG4gICAgfVxuXG5sZXQgc2V0X3Bsb3RfcGVyaW9kIHBsb3RfcGVyaW9kID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggcGxvdF9wZXJpb2QgfSlcblxubGV0IHNldF9wYXVzZV9jb25kaXRpb24gcGF1c2VfY29uZGl0aW9uID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggcGF1c2VfY29uZGl0aW9uIH0pXG5cbmxldCBzZXRfc2VlZCBzZWVkID0gdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2VlZCB9KVxuXG5sZXQgc2V0X3N0b3JlX3RyYWNlIHN0b3JlX3RyYWNlID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc3RvcmVfdHJhY2UgfSlcblxubGV0IHNldF9zaG93X2RlYWRfcnVsZXMgc2hvd19kZWFkX3J1bGVzID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2hvd19kZWFkX3J1bGVzIH0pXG5cbmxldCBzZXRfc2hvd19kZWFkX2FnZW50cyBzaG93X2RlYWRfYWdlbnRzID1cbiAgdXBkYXRlX3BhcmFtZXRlcnMgKGZ1biBwYXJhbSAtPiB7IHBhcmFtIHdpdGggc2hvd19kZWFkX2FnZW50cyB9KVxuXG5sZXQgc2V0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zXG4gICAgc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICB1cGRhdGVfcGFyYW1ldGVycyAoZnVuIHBhcmFtIC0+XG4gICAgICB7IHBhcmFtIHdpdGggc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgfSlcblxubGV0IHVwZGF0ZV9zdGF0ZSBtZSBwcm9qZWN0X2NhdGFsb2cgZGVmYXVsdF9wYXJhbWV0ZXJzIHByb2plY3RfcGFyYW1ldGVycyA9XG4gIG1lLnByb2plY3RfbWFuYWdlciNwcm9qZWN0X3BhcnNlIH5wYXR0ZXJuU2hhcmluZzpQYXR0ZXJuLkNvbXBhdGlibGVfcGF0dGVybnNcbiAgICBbXVxuICA+Pj1cbiAgbGV0ICgpID1cbiAgICBzZXRfc3RhdGVcbiAgICAgIHtcbiAgICAgICAgcHJvamVjdF9jdXJyZW50ID0gU29tZSBtZTtcbiAgICAgICAgcHJvamVjdF9jYXRhbG9nO1xuICAgICAgICBkZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICAgIHByb2plY3RfcGFyYW1ldGVycztcbiAgICAgICAgcHJvamVjdF92ZXJzaW9uID0gMTtcbiAgICAgIH1cbiAgaW5cbiAgZnVuIG91dCAtPlxuICAgIGxldCBzdCA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc2V0X3N0YXRlXG4gICAgICAgIHtcbiAgICAgICAgICBzdCB3aXRoXG4gICAgICAgICAgcHJvamVjdF9jdXJyZW50ID0gU29tZSBtZTtcbiAgICAgICAgICBwcm9qZWN0X3ZlcnNpb24gPSBzdC5wcm9qZWN0X3ZlcnNpb24gKyAxO1xuICAgICAgICB9XG4gICAgaW5cbiAgICBMd3QucmV0dXJuIG91dFxuXG5sZXQgY29tcHV0aW5nX3dhdGNoZXIgbWFuYWdlciBzZXR0ZXIgPVxuICBsZXQgZGVsYXkgPSAxLiBpblxuICBsZXQgY2FuY2VsbGVkID0gcmVmIGZhbHNlIGluXG4gIGxldCByZWMgbG9vcCAoKSA9XG4gICAgbGV0ICgpID0gc2V0dGVyIG1hbmFnZXIjaXNfY29tcHV0aW5nIGluXG4gICAgaWYgIWNhbmNlbGxlZCB0aGVuXG4gICAgICBMd3QucmV0dXJuX3VuaXRcbiAgICBlbHNlXG4gICAgICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIGRlbGF5ID4+PSBsb29wXG4gIGluXG4gIGxldCAoKSA9IENvbW1vbi5hc3luYyBfX0xPQ19fIGxvb3AgaW5cbiAgY2FuY2VsbGVkXG5cbmxldCBhZGRfcHJvamVjdCBpc19uZXcgcHJvamVjdF9pZCA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGxldCBzdGF0ZV92YSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgKCogVE9ETzogSXMgaXQgb2sgdG8gZ2V0IHRoZSB2YWx1ZSBsaWtlIHRoaXMgPyAqKVxuICBsZXQgY2F0YWxvZyA9IHN0YXRlX3ZhLnByb2plY3RfY2F0YWxvZyBpblxuICAodHJ5XG4gICAgIEx3dC5yZXR1cm5cbiAgICAgICAoUmVzdWx0X3V0aWwub2tcbiAgICAgICAgICAoIExpc3QuZmluZCAoZnVuIHggLT4geC5wcm9qZWN0X2lkID0gcHJvamVjdF9pZCkgY2F0YWxvZyxcbiAgICAgICAgICAgIGNhdGFsb2csXG4gICAgICAgICAgICBzdGF0ZV92YS5wcm9qZWN0X3BhcmFtZXRlcnMgKSlcbiAgIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgIFN0YXRlX3J1bnRpbWUuY3JlYXRlX21hbmFnZXIgfmlzX25ldyBwcm9qZWN0X2lkXG4gICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBwcm9qZWN0X21hbmFnZXIgLT5cbiAgICAgICAgICAgICBsZXQgcHJvamVjdF9pc19jb21wdXRpbmcsIHNldF9jb21wdXRlcyA9IFJlYWN0LlMuY3JlYXRlIHRydWUgaW5cbiAgICAgICAgICAgICBsZXQgcHJvamVjdF93YXRjaGVyX2NhbmNlbCA9XG4gICAgICAgICAgICAgICBjb21wdXRpbmdfd2F0Y2hlciBwcm9qZWN0X21hbmFnZXIgKHNldF9jb21wdXRlcyA/c3RlcDpOb25lKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0IG1lID1cbiAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgcHJvamVjdF9pZDtcbiAgICAgICAgICAgICAgICAgcHJvamVjdF9tYW5hZ2VyO1xuICAgICAgICAgICAgICAgICBwcm9qZWN0X2lzX2NvbXB1dGluZztcbiAgICAgICAgICAgICAgICAgcHJvamVjdF93YXRjaGVyX2NhbmNlbDtcbiAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIGxldCBkZWZhdWx0X3BhcmFtZXRlcnMgPSBzdGF0ZV92YS5kZWZhdWx0X3BhcmFtZXRlcnMgaW5cbiAgICAgICAgICAgICBsZXQgcGFyYW1zID1cbiAgICAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLmFkZCBwcm9qZWN0X2lkIGRlZmF1bHRfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICBzdGF0ZV92YS5wcm9qZWN0X3BhcmFtZXRlcnNcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChtZSwgbWUgOjogY2F0YWxvZywgcGFyYW1zKSkpKVxuICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKG1lLCBjYXRhbG9nLCBwYXJhbXMpIC0+XG4gICAgICAgICAgdXBkYXRlX3N0YXRlIG1lIGNhdGFsb2cgc3RhdGVfdmEuZGVmYXVsdF9wYXJhbWV0ZXJzIHBhcmFtcylcblxubGV0IGNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPSBhZGRfcHJvamVjdCB0cnVlIHByb2plY3RfaWRcbmxldCBzZXRfcHJvamVjdCBwcm9qZWN0X2lkID0gYWRkX3Byb2plY3QgZmFsc2UgcHJvamVjdF9pZFxuXG5sZXQgZHVtbXlfbW9kZWwgPVxuICB7XG4gICAgbW9kZWxfY3VycmVudF9pZCA9IE5vbmU7XG4gICAgbW9kZWxfY2F0YWxvZyA9IFtdO1xuICAgIG1vZGVsX3Byb2plY3RfdmVyc2lvbiA9IC0xO1xuICAgIG1vZGVsX3BhcmFtZXRlcnMgPSBpbml0X2RlZmF1bHRfcGFyYW1ldGVycztcbiAgfVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLm1hcCB+ZXE6bW9kZWxfZXF1YWxcbiAgICAoZnVuIHN0YXRlIC0+XG4gICAgICBsZXQgbW9kZWxfY2F0YWxvZyA9XG4gICAgICAgIExpc3QubWFwXG4gICAgICAgICAgKGZ1biBwIC0+XG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaWQgPSBwLnByb2plY3RfaWQ7XG4gICAgICAgICAgICAgIG1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nID0gcC5wcm9qZWN0X2lzX2NvbXB1dGluZztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgc3RhdGUucHJvamVjdF9jYXRhbG9nXG4gICAgICBpblxuICAgICAgbGV0IG1vZGVsX3BhcmFtZXRlcnMgPVxuICAgICAgICBtYXRjaCBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gc3RhdGUuZGVmYXVsdF9wYXJhbWV0ZXJzXG4gICAgICAgIHwgU29tZSBwcm9qIC0+XG4gICAgICAgICAgTW9kcy5TdHJpbmdNYXAuZmluZF9kZWZhdWx0IHN0YXRlLmRlZmF1bHRfcGFyYW1ldGVycyBwcm9qLnByb2plY3RfaWRcbiAgICAgICAgICAgIHN0YXRlLnByb2plY3RfcGFyYW1ldGVyc1xuICAgICAgaW5cbiAgICAgIHtcbiAgICAgICAgbW9kZWxfY3VycmVudF9pZCA9XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwIChmdW4geCAtPiB4LnByb2plY3RfaWQpIHN0YXRlLnByb2plY3RfY3VycmVudDtcbiAgICAgICAgbW9kZWxfY2F0YWxvZztcbiAgICAgICAgbW9kZWxfcHJvamVjdF92ZXJzaW9uID0gc3RhdGUucHJvamVjdF92ZXJzaW9uO1xuICAgICAgICBtb2RlbF9wYXJhbWV0ZXJzO1xuICAgICAgfSlcbiAgICBzdGF0ZVxuXG5sZXQgc3luYyAoKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU29tZSBjdXJyZW50IC0+XG4gICAgY3VycmVudC5wcm9qZWN0X21hbmFnZXIjcHJvamVjdF9wYXJzZVxuICAgICAgfnBhdHRlcm5TaGFyaW5nOlBhdHRlcm4uQ29tcGF0aWJsZV9wYXR0ZXJucyBbXVxuICAgID4+PSBmdW4gb3V0IC0+XG4gICAgbGV0IHN0ID0gUmVhY3QuUy52YWx1ZSBzdGF0ZSBpblxuICAgIGxldCAoKSA9IHNldF9zdGF0ZSB7IHN0IHdpdGggcHJvamVjdF92ZXJzaW9uID0gc3VjYyBzdC5wcm9qZWN0X3ZlcnNpb24gfSBpblxuICAgIEx3dC5yZXR1cm4gb3V0XG5cbmxldCByZW1vdmVfZmlsZXMgbWFuYWdlciA9XG4gIG1hbmFnZXIjZmlsZV9jYXRhbG9nXG4gID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgTHd0X2xpc3QuaXRlcl9wXG4gICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBtLktmaWxlcy5pZCA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICAgICAgY2F0YWxvZ1xuICAgICAgICAgID4+PSBmdW4gKCkgLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgcmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgc3RhdGUgaW5cbiAgdHJ5XG4gICAgbGV0IGN1cnJlbnQgPVxuICAgICAgTGlzdC5maW5kIChmdW4geCAtPiB4LnByb2plY3RfaWQgPSBwcm9qZWN0X2lkKSBzdGF0ZS5wcm9qZWN0X2NhdGFsb2dcbiAgICBpblxuICAgIHJlbW92ZV9maWxlcyBjdXJyZW50LnByb2plY3RfbWFuYWdlciA+Pj0gZnVuIG91dCcgLT5cbiAgICBsZXQgKCkgPSBjdXJyZW50LnByb2plY3Rfd2F0Y2hlcl9jYW5jZWwgOj0gdHJ1ZSBpblxuICAgIGxldCBwcm9qZWN0X2NhdGFsb2cgPVxuICAgICAgTGlzdC5maWx0ZXJcbiAgICAgICAgKGZ1biB4IC0+IHgucHJvamVjdF9pZCA8PiBjdXJyZW50LnByb2plY3RfaWQpXG4gICAgICAgIHN0YXRlLnByb2plY3RfY2F0YWxvZ1xuICAgIGluXG4gICAgbGV0IHByb2plY3RfY3VycmVudCA9XG4gICAgICBpZlxuICAgICAgICBtYXRjaCBzdGF0ZS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gZmFsc2VcbiAgICAgICAgfCBTb21lIHYgLT4gdi5wcm9qZWN0X2lkID0gY3VycmVudC5wcm9qZWN0X2lkXG4gICAgICB0aGVuIChcbiAgICAgICAgbWF0Y2ggcHJvamVjdF9jYXRhbG9nIHdpdGhcbiAgICAgICAgfCBbXSAtPiBOb25lXG4gICAgICAgIHwgaCA6OiBfIC0+IFNvbWUgaFxuICAgICAgKSBlbHNlXG4gICAgICAgIHN0YXRlLnByb2plY3RfY3VycmVudFxuICAgIGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNldF9zdGF0ZVxuICAgICAgICB7XG4gICAgICAgICAgcHJvamVjdF9jdXJyZW50O1xuICAgICAgICAgIHByb2plY3RfY2F0YWxvZztcbiAgICAgICAgICBkZWZhdWx0X3BhcmFtZXRlcnMgPSBzdGF0ZS5kZWZhdWx0X3BhcmFtZXRlcnM7XG4gICAgICAgICAgcHJvamVjdF9wYXJhbWV0ZXJzID1cbiAgICAgICAgICAgIE1vZHMuU3RyaW5nTWFwLnJlbW92ZSBwcm9qZWN0X2lkIHN0YXRlLnByb2plY3RfcGFyYW1ldGVycztcbiAgICAgICAgICBwcm9qZWN0X3ZlcnNpb24gPSAtMTtcbiAgICAgICAgfVxuICAgIGluXG4gICAgbGV0ICgpID0gY3VycmVudC5wcm9qZWN0X21hbmFnZXIjdGVybWluYXRlIGluXG4gICAgc3luYyAoKSA+Pj0gZnVuIG91dCcnIC0+XG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIG91dCc7IG91dCcnIF0pXG4gIHdpdGggTm90X2ZvdW5kIC0+XG4gICAgTHd0LnJldHVyblxuICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgKFwiUHJvamVjdCBcIiBeIHByb2plY3RfaWQgXiBcIiBkb2VzIG5vdCBleGlzdHNcIikpXG5cbmxldCByZWMgaW5pdF9wbG90X3BlcmlvZCAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IHQgLT5cbiAgICAodHJ5IHNldF9wbG90X3BlcmlvZCAoZmxvYXRfb2Zfc3RyaW5nIGgpXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgbGV0IG1zZyA9IEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHBhcnNlIGluaXRfcGxvdF9wZXJpb2QgJyVzJ1wiIGggaW5cbiAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgaW5pdF9wbG90X3BlcmlvZCB0KVxuXG5sZXQgaW5pdF9wYXVzZV9jb25kaXRpb24gKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9wYXVzZV9jb25kaXRpb24gaFxuXG5sZXQgcmVjIGluaXRfbW9kZWxfc2VlZCAoYXJnIDogc3RyaW5nIGxpc3QpIDogdW5pdCA9XG4gIG1hdGNoIGFyZyB3aXRoXG4gIHwgW10gLT4gKClcbiAgfCBoIDo6IHQgLT5cbiAgICAodHJ5IHNldF9wbG90X3BlcmlvZCAoZmxvYXRfb2Zfc3RyaW5nIGgpXG4gICAgIHdpdGggRmFpbHVyZSBfIC0+XG4gICAgICAgbGV0IG1zZyA9IEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHBhcnNlIG1vZGVsX3NlZWQgJyVzJ1wiIGggaW5cbiAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBtc2cpIGluXG4gICAgICAgaW5pdF9tb2RlbF9zZWVkIHQpXG5cbmxldCBpbml0X3N0b3JlX3RyYWNlIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc3RvcmVfdHJhY2UgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X2RlYWRfcnVsZXMgKGFyZyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBtYXRjaCBhcmcgd2l0aFxuICB8IFtdIC0+ICgpXG4gIHwgaCA6OiBfIC0+IHNldF9zaG93X2RlYWRfcnVsZXMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdF9zaG93X2RlYWRfYWdlbnRzIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19kZWFkX2FnZW50cyAoaCA8PiBcImZhbHNlXCIpXG5cbmxldCBpbml0X3Nob3dfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zIChhcmcgOiBzdHJpbmcgbGlzdCkgOiB1bml0ID1cbiAgbWF0Y2ggYXJnIHdpdGhcbiAgfCBbXSAtPiAoKVxuICB8IGggOjogXyAtPiBzZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnMgKGggPD4gXCJmYWxzZVwiKVxuXG5sZXQgaW5pdCBleGlzdGluZ19wcm9qZWN0cyA6IHVuaXQgTHd0LnQgPVxuICBsZXQgYXJnX3Bsb3RfcGVyaW9kID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gcGxvdFBlcmlvZFBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJwbG90X3BlcmlvZFwiXG4gIGluXG4gIGxldCBhcmdfcGF1c2VfY29uZGl0aW9uID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gcGF1c2VDb25kaXRpb25QYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwicGF1c2VfY29uZGl0aW9uXCJcbiAgaW5cbiAgbGV0IGFyZ19tb2RlbF9zZWVkID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2VlZFBhcmFtSWQpXG4gICAgICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAgICAgKGZ1biB4IC0+IFsgSnMudG9fc3RyaW5nIHggXSkpXG4gICAgaW5cbiAgICBDb21tb25fc3RhdGUudXJsX2FyZ3MgfmRlZmF1bHQgXCJtb2RlbF9zZWVkXCJcbiAgaW5cbiAgbGV0IGFyZ19zdG9yZV90cmFjZSA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHN0b3JlVHJhY2VQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic3RvcmVfdHJhY2VcIlxuICBpblxuICBsZXQgYXJnX3Nob3dfZGVhZF9ydWxlcyA9XG4gICAgbGV0IGRlZmF1bHQgPVxuICAgICAgSnMuT3B0ZGVmLmNhc2VcbiAgICAgICAgRG9tX2h0bWwud2luZG93IyMubG9jYWxTdG9yYWdlXG4gICAgICAgIChmdW4gKCkgLT4gW10pXG4gICAgICAgIChmdW4gc3QgLT5cbiAgICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgICAgKHN0IyNnZXRJdGVtIHNob3dEZWFkUnVsZXNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19kZWFkX3J1bGVzXCJcbiAgaW5cbiAgbGV0IGFyZ19zaG93X2RlYWRfYWdlbnRzID1cbiAgICBsZXQgZGVmYXVsdCA9XG4gICAgICBKcy5PcHRkZWYuY2FzZVxuICAgICAgICBEb21faHRtbC53aW5kb3cjIy5sb2NhbFN0b3JhZ2VcbiAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgKGZ1biBzdCAtPlxuICAgICAgICAgIEpzLk9wdC5jYXNlXG4gICAgICAgICAgICAoc3QjI2dldEl0ZW0gc2hvd0RlYWRBZ2VudHNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19kZWFkX2FnZW50c1wiXG4gIGluXG4gIGxldCBhcmdfc2hvd19pcnJldmVyc2libGVfdHJhbnNpdGlvbnMgPVxuICAgIGxldCBkZWZhdWx0ID1cbiAgICAgIEpzLk9wdGRlZi5jYXNlXG4gICAgICAgIERvbV9odG1sLndpbmRvdyMjLmxvY2FsU3RvcmFnZVxuICAgICAgICAoZnVuICgpIC0+IFtdKVxuICAgICAgICAoZnVuIHN0IC0+XG4gICAgICAgICAgSnMuT3B0LmNhc2VcbiAgICAgICAgICAgIChzdCMjZ2V0SXRlbSBzaG93SXJyZXZlcnNpYmxlVHJhbnNpdGlvbnNQYXJhbUlkKVxuICAgICAgICAgICAgKGZ1biAoKSAtPiBbXSlcbiAgICAgICAgICAgIChmdW4geCAtPiBbIEpzLnRvX3N0cmluZyB4IF0pKVxuICAgIGluXG4gICAgQ29tbW9uX3N0YXRlLnVybF9hcmdzIH5kZWZhdWx0IFwic2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcIlxuICBpblxuICBsZXQgKCkgPSBpbml0X3Bsb3RfcGVyaW9kIGFyZ19wbG90X3BlcmlvZCBpblxuICBsZXQgKCkgPSBpbml0X3BhdXNlX2NvbmRpdGlvbiBhcmdfcGF1c2VfY29uZGl0aW9uIGluXG4gIGxldCAoKSA9IGluaXRfbW9kZWxfc2VlZCBhcmdfbW9kZWxfc2VlZCBpblxuICBsZXQgKCkgPSBpbml0X3N0b3JlX3RyYWNlIGFyZ19zdG9yZV90cmFjZSBpblxuICBsZXQgKCkgPSBpbml0X3Nob3dfZGVhZF9ydWxlcyBhcmdfc2hvd19kZWFkX3J1bGVzIGluXG4gIGxldCAoKSA9IGluaXRfc2hvd19kZWFkX2FnZW50cyBhcmdfc2hvd19kZWFkX2FnZW50cyBpblxuICBsZXQgKCkgPVxuICAgIGluaXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgIGFyZ19zaG93X2lycmV2ZXJzaWJsZV90cmFuc2l0aW9uc1xuICBpblxuXG4gIGxldCBwcm9qZWN0cyA9IENvbW1vbl9zdGF0ZS51cmxfYXJncyB+ZGVmYXVsdDpbIFwiZGVmYXVsdFwiIF0gXCJwcm9qZWN0XCIgaW5cbiAgbGV0IHJlYyBhZGRfcHJvamVjdHMgcHJvamVjdHMgOiB1bml0IEx3dC50ID1cbiAgICBtYXRjaCBwcm9qZWN0cyB3aXRoXG4gICAgfCBbXSAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IHByb2plY3QgOjogcHJvamVjdHMgLT5cbiAgICAgIGFkZF9wcm9qZWN0XG4gICAgICAgIChMaXN0LmZvcl9hbGwgKGZ1biB4IC0+IHggPD4gcHJvamVjdCkgZXhpc3RpbmdfcHJvamVjdHMpXG4gICAgICAgIHByb2plY3RcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBhZGRfcHJvamVjdHMgcHJvamVjdHMpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgICAgRm9ybWF0LmFzcHJpbnRmIFwiY3JlYXRpbmcgcHJvamVjdCAlcyBlcnJvciBAWyVhQF1cIiBwcm9qZWN0XG4gICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICAgICAgZXJyb3JzXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLmRlYnVnXG4gICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcIlN0YXRlX3Byb2plY3QuaW5pdCAyIDogJXNcIiBtc2cpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBhZGRfcHJvamVjdHMgcHJvamVjdHMpXG4gIGluXG4gIGFkZF9wcm9qZWN0cyBleGlzdGluZ19wcm9qZWN0cyA+Pj0gZnVuICgpIC0+IGFkZF9wcm9qZWN0cyBwcm9qZWN0c1xuXG5sZXQgZXZhbF93aXRoX3Byb2plY3QgOlxuICAgICAgJ2EuXG4gICAgICBsYWJlbDpzdHJpbmcgLT5cbiAgICAgIChBcGkuY29uY3JldGVfbWFuYWdlciAtPiAnYSBBcGkucmVzdWx0IEx3dC50KSAtPlxuICAgICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gZnVuIH5sYWJlbCBoYW5kbGVyIC0+XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5wcm9qZWN0X2N1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT5cbiAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgIEZvcm1hdC5zcHJpbnRmIFwiRmFpbGVkICVzIGR1ZSB0byB1bmF2YWlsYWJsZSBwcm9qZWN0LlwiIGxhYmVsXG4gICAgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICB8IFNvbWUgY3VycmVudCAtPiBoYW5kbGVyIGN1cnJlbnQucHJvamVjdF9tYW5hZ2VyXG5cbmxldCBvbl9wcm9qZWN0X2NoYW5nZV9hc3luYyA/ZXEgfm9uID8ob3RoZXJzX2VxID0gKCA9ICkpIGluaXRfb3RoZXJzIG90aGVyc1xuICAgIGRlZmF1bHQgaGFuZGxlciA9XG4gIGxldCBlcV9wYWlyID0gTW9kcy5wYWlyX2VxdWFsIHN0YXRlX2VxdWFsIG90aGVyc19lcSBpblxuICBSZWFjdC5TLmhvbGQgP2VxIGRlZmF1bHRcbiAgICAoTHd0X3JlYWN0LkUubWFwX3BcbiAgICAgICAoZnVuIChzdCwgb3RoKSAtPlxuICAgICAgICAgbWF0Y2ggc3QucHJvamVjdF9jdXJyZW50IHdpdGhcbiAgICAgICAgIHwgTm9uZSAtPiBMd3QucmV0dXJuIGRlZmF1bHRcbiAgICAgICAgIHwgU29tZSBjdXJyZW50IC0+IGhhbmRsZXIgY3VycmVudC5wcm9qZWN0X21hbmFnZXIgb3RoKVxuICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAoUmVhY3QuUy5vbiB+ZXE6ZXFfcGFpciBvbiAoaW5pdF9zdGF0ZSwgaW5pdF9vdGhlcnMpXG4gICAgICAgICAgICAgKFJlYWN0LlMuUGFpci5wYWlyIH5lcTplcV9wYWlyIHN0YXRlIG90aGVycykpKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgc2xvdCA9IHsgbG9jYWw6IHN0cmluZyBvcHRpb247IG5hbWU6IHN0cmluZyB9XG50eXBlIGFjdGl2ZSA9IHsgcmFuazogaW50OyBjdXJzb3JfcG9zOiBMb2MucG9zaXRpb247IG91dF9vZl9zeW5jOiBib29sIH1cbnR5cGUgbW9kZWwgPSB7IGN1cnJlbnQ6IGFjdGl2ZSBvcHRpb247IGRpcmVjdG9yeTogc2xvdCBNb2RzLkludE1hcC50IH1cblxubGV0IGR1bW15X2N1cnNvcl9wb3MgPSB7IExvYy5saW5lID0gLTE7IExvYy5jaHIgPSAwIH1cbmxldCBibGFua19zdGF0ZSA9IHsgY3VycmVudCA9IE5vbmU7IGRpcmVjdG9yeSA9IE1vZHMuSW50TWFwLmVtcHR5IH1cbmxldCBtb2RlbCwgc2V0X2RpcmVjdG9yeV9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIGJsYW5rX3N0YXRlXG5cbnR5cGUgcmVmcmVzaCA9IHsgZmlsZW5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nOyBsaW5lOiBpbnQgb3B0aW9uIH1cblxubGV0IHJlZnJlc2hfZmlsZV9ob29rID0gSG9va2VkLkUuY3JlYXRlICgpXG5cbmxldCBjdXJyZW50X2ZpbGVuYW1lID1cbiAgUmVhY3QuUy5tYXBcbiAgICAoZnVuIG0gLT5cbiAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgKGZ1biB4IC0+XG4gICAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgICAoZnVuIHsgbmFtZTsgXyB9IC0+IG5hbWUpXG4gICAgICAgICAgICAoTW9kcy5JbnRNYXAuZmluZF9vcHRpb24geC5yYW5rIG0uZGlyZWN0b3J5KSlcbiAgICAgICAgbS5jdXJyZW50KVxuICAgIG1vZGVsXG5cbmxldCB3aXRoX2N1cnJlbnRfcG9zID9lcSA/KG9uID0gUmVhY3QuUy5jb25zdCB0cnVlKSBmIGRlZmF1bHQgPVxuICBSZWFjdC5TLmZtYXAgP2VxXG4gICAgKGZ1biBtIC0+XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4geCAtPlxuICAgICAgICAgIE9wdGlvbl91dGlsLmJpbmRcbiAgICAgICAgICAgIChmdW4geyBuYW1lOyBfIH0gLT4gZiBuYW1lIHguY3Vyc29yX3BvcylcbiAgICAgICAgICAgIChNb2RzLkludE1hcC5maW5kX29wdGlvbiB4LnJhbmsgbS5kaXJlY3RvcnkpKVxuICAgICAgICBtLmN1cnJlbnQpXG4gICAgZGVmYXVsdFxuICAgIChSZWFjdC5TLm9uIG9uIGJsYW5rX3N0YXRlIG1vZGVsKVxuXG5sZXQgd2l0aF9jdXJyZW50X2ZpbGUgZiA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2ggc3RhdGUuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPSBcIkF0dGVtcHQgdG8gZmV0Y2ggZmlsZSB3aXRoIG5vbmUgc2VsZWN0ZWQuXCIgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICB8IFNvbWUgYWN0aXZlIC0+XG4gICAgKG1hdGNoIE1vZHMuSW50TWFwLmZpbmRfb3B0aW9uIGFjdGl2ZS5yYW5rIHN0YXRlLmRpcmVjdG9yeSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJJbnRlcm5hbCBpbmNvbnNpc3RlbnRjeTogTm8gZmlsZSBhdCBzZWxlY3RlZCByYW5rLlwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgICB8IFNvbWUgeCAtPiBmIHN0YXRlIGFjdGl2ZSB4KVxuXG5sZXQgZ2V0X2ZpbGUgKCkgOiAoc3RyaW5nICogc3RyaW5nKSBBcGkucmVzdWx0IEx3dC50ID1cbiAgd2l0aF9jdXJyZW50X2ZpbGUgKGZ1biBfc3RhdGUgYWN0aXZlIC0+IGZ1bmN0aW9uXG4gICAgfCB7IGxvY2FsID0gTm9uZTsgbmFtZSB9IC0+XG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcImdldF9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX2dldCBuYW1lXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICh0ZXh0LCByYW5rJykgLT5cbiAgICAgICAgICAgICAgICAgIGlmIGFjdGl2ZS5yYW5rID0gcmFuaycgdGhlblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAodGV4dCwgbmFtZSkpXG4gICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgbGV0IGVycm9yX21zZyA9IFwiSW5jb25zaXN0ZW5jeSBpbiByYW5rIHdoaWxlIGdldF9maWxlLlwiIGluXG4gICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpXG4gICAgICAgICAgICAgICAgICApKSlcbiAgICB8IHsgbG9jYWwgPSBTb21lIHRleHQ7IG5hbWUgfSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAodGV4dCwgbmFtZSkpKVxuXG5sZXQgc2VuZF9yZWZyZXNoIChsaW5lIDogaW50IG9wdGlvbikgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICAoKiBvbmx5IHNlbmQgcmVmcmVzaCBpZiB0aGVyZSBpcyBhIGN1cnJlbnQgZmlsZSAqKVxuICBtYXRjaCAoUmVhY3QuUy52YWx1ZSBtb2RlbCkuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTb21lIHsgb3V0X29mX3N5bmM7IF8gfSAtPlxuICAgIGlmIG91dF9vZl9zeW5jIHRoZW5cbiAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICBcIkZpbGUgd2FzIG5vdCBpbiBzeW5jLiBTd2l0Y2hpbmcgbWF5IGxlYWQgdG8gZGF0YSBsb3N0LlwiKVxuICAgIGVsc2VcbiAgICAgIGdldF9maWxlICgpXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKGNvbnRlbnQsIGZpbGVuYW1lKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgY29udGVudCBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIEhvb2tlZC5FLnNlbmQgcmVmcmVzaF9maWxlX2hvb2tcbiAgICAgICAgICAgICAgICAgIHsgZmlsZW5hbWU7IGNvbnRlbnQ7IGxpbmUgfVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG5cbmxldCB1cGRhdGVfZGlyZWN0b3J5IH5yZXNldCBjdXJyZW50IGNhdGFsb2cgPVxuICBsZXQgc3RhdGUgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIGxldCBkaXJlY3RvcnkgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyB7IEtmaWxlcy5wb3NpdGlvbjsgaWQgfSAtPlxuICAgICAgICBNb2RzLkludE1hcC5hZGQgcG9zaXRpb24geyBuYW1lID0gaWQ7IGxvY2FsID0gTm9uZSB9IGFjYylcbiAgICAgIChpZiByZXNldCB0aGVuXG4gICAgICAgICBNb2RzLkludE1hcC5lbXB0eVxuICAgICAgIGVsc2VcbiAgICAgICAgIHN0YXRlLmRpcmVjdG9yeSlcbiAgICAgIGNhdGFsb2dcbiAgaW5cbiAgc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9XG5cbmxldCBjcmVhdGVfZmlsZSB+KGZpbGVuYW1lIDogc3RyaW5nKSB+KGNvbnRlbnQgOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50XG4gICAgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcImNyZWF0ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgbGV0IG1hdGNoaW5nX2ZpbGUgPVxuICAgICAgICAgICAgICAgIExpc3QuZmlsdGVyXG4gICAgICAgICAgICAgICAgICAoZnVuIGZpbGVfbWV0YWRhdGEgLT4gZmlsZW5hbWUgPSBmaWxlX21ldGFkYXRhLktmaWxlcy5pZClcbiAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgKG1hdGNoIG1hdGNoaW5nX2ZpbGUgd2l0aFxuICAgICAgICAgICAgICB8IFtdIC0+XG4gICAgICAgICAgICAgICAgbGV0IG1heF9wb3MgPVxuICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgeyBLZmlsZXMucG9zaXRpb247IF8gfSAtPiBtYXggYWNjIHBvc2l0aW9uKVxuICAgICAgICAgICAgICAgICAgICAwIGNhdGFsb2dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIG1hbmFnZXIjZmlsZV9jcmVhdGUgKHN1Y2MgbWF4X3BvcykgZmlsZW5hbWUgY29udGVudFxuICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nJyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rIChjYXRhbG9nJywgc3VjYyBtYXhfcG9zKSkpKVxuICAgICAgICAgICAgICB8IG1ldGFkYXRhIDo6IF8gLT5cbiAgICAgICAgICAgICAgICBtYW5hZ2VyI2ZpbGVfdXBkYXRlIGZpbGVuYW1lIGNvbnRlbnRcbiAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLm9rIChjYXRhbG9nLCBtZXRhZGF0YS5LZmlsZXMucG9zaXRpb24pKSkpXG4gICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY2F0YWxvZywgY3VycmVudCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQ6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBjdXJyZW50O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGFsb2dcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBOb25lKSkpXG5cbmxldCByZWMgY2hvb3NlX2ZpbGUgY2hvaWNlID0gZnVuY3Rpb25cbiAgfCBbXSAtPlxuICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgRm9ybWF0LnNwcmludGYgXCJGYWlsZWQgdG8gc3dpdGNoIGZpbGUgJXMuXCIgY2hvaWNlXG4gICAgaW5cbiAgICBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnXG4gIHwgeyBLZmlsZXMuaWQ7IHBvc2l0aW9uIH0gOjogdCAtPlxuICAgIGlmIGNob2ljZSA9IGlkIHRoZW5cbiAgICAgIFJlc3VsdF91dGlsLm9rIHBvc2l0aW9uXG4gICAgZWxzZVxuICAgICAgY2hvb3NlX2ZpbGUgY2hvaWNlIHRcblxubGV0IHNlbGVjdF9maWxlIChmaWxlbmFtZSA6IHN0cmluZykgKGxpbmUgOiBpbnQgb3B0aW9uKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudFxuICAgID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZWxlY3RfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgbWFuYWdlciNmaWxlX2NhdGFsb2dcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBjYXRhbG9nIC0+XG4gICAgICAgICAgICAgIEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0XG4gICAgICAgICAgICAgICAgfm9rOihmdW4gcmFuayAtPlxuICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2RpcmVjdG9yeSB+cmVzZXQ6ZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgICAoU29tZVxuICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbms7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJzb3JfcG9zID0gZHVtbXlfY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgc2VuZF9yZWZyZXNoIGxpbmUpXG4gICAgICAgICAgICAgICAgKGNob29zZV9maWxlIGZpbGVuYW1lIGNhdGFsb2cpKSlcblxubGV0IHNldF9jb250ZW50IChjb250ZW50IDogc3RyaW5nKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIC0+IGZ1bmN0aW9uXG4gICAgfCB7IGxvY2FsID0gU29tZSBfOyBuYW1lIH0gLT5cbiAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICBNb2RzLkludE1hcC5hZGQgYWN0aXZlLnJhbmtcbiAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICBzdGF0ZS5kaXJlY3RvcnlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHsgY3VycmVudCA9IHN0YXRlLmN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHJhbmsgPSBhY3RpdmUucmFuaztcbiAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBhY3RpdmUuY3Vyc29yX3BvcztcbiAgICAgICAgICAgICAgICAgIG91dF9vZl9zeW5jID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGRpcmVjdG9yeSA9IHN0YXRlLmRpcmVjdG9yeTtcbiAgICAgICAgICB9XG4gICAgICBpblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29udGVudFwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV91cGRhdGUgbmFtZSBjb250ZW50KSlcblxubGV0IHNldF9jb21waWxlIGZpbGVfaWQgKGNvbXBpbGUgOiBib29sKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGxldCBzdGF0ZSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgbWF0Y2hcbiAgICBNb2RzLkludE1hcC5maWx0ZXJfb25lIChmdW4gXyB7IG5hbWU7IF8gfSAtPiBuYW1lID0gZmlsZV9pZCkgc3RhdGUuZGlyZWN0b3J5XG4gIHdpdGhcbiAgfCBOb25lIC0+XG4gICAgbGV0IGVycm9yX21zZyA9IFwiSW50ZXJuYWwgaW5jb25zaXN0ZW5jeTogTm8gZmlsZSBcIiBeIGZpbGVfaWQgaW5cbiAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICB8IFNvbWUgKHJhbmssIHsgbG9jYWwgPSBTb21lIGNvbnRlbnQ7IG5hbWUgfSkgLT5cbiAgICBpZiBjb21waWxlIHRoZW4gKFxuICAgICAgbGV0IGRpcmVjdG9yeSA9XG4gICAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rIHsgbG9jYWwgPSBOb25lOyBuYW1lIH0gc3RhdGUuZGlyZWN0b3J5XG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQgPSBzdGF0ZS5jdXJyZW50OyBkaXJlY3RvcnkgfSBpblxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9jcmVhdGUgcmFuayBuYW1lIGNvbnRlbnQpXG4gICAgKSBlbHNlXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgfCBTb21lIChyYW5rLCB7IGxvY2FsID0gTm9uZTsgbmFtZSB9KSAtPlxuICAgIGlmIGNvbXBpbGUgdGhlblxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgZWxzZVxuICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgIG1hbmFnZXIjZmlsZV9nZXQgbmFtZVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoY29udGVudCwgcmFuaycpIC0+XG4gICAgICAgICAgICAgICAgICBpZiByYW5rID0gcmFuaycgdGhlbiAoXG4gICAgICAgICAgICAgICAgICAgIGxldCBkaXJlY3RvcnkgPVxuICAgICAgICAgICAgICAgICAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rXG4gICAgICAgICAgICAgICAgICAgICAgICB7IGxvY2FsID0gU29tZSBjb250ZW50OyBuYW1lIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmRpcmVjdG9yeVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgIHNldF9kaXJlY3Rvcnlfc3RhdGUgeyBjdXJyZW50ID0gc3RhdGUuY3VycmVudDsgZGlyZWN0b3J5IH1cbiAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzZXRfY29tcGlsZSdcIlxuICAgICAgICAgICAgICAgICAgICAgIChmdW4gbWFuYWdlciAtPiBtYW5hZ2VyI2ZpbGVfZGVsZXRlIG5hbWUpXG4gICAgICAgICAgICAgICAgICApIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgZXJyb3JfbXNnID1cbiAgICAgICAgICAgICAgICAgICAgICBcIkluY29uc2lzdGVuY3kgaW4gcmFuayB3aGlsZSBzZXRfY29tcGlsZS5cIlxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuICAgICAgICAgICAgICAgICAgKSkpXG5cbmxldCByZW1vdmVfZmlsZSAoKSA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIHdpdGhfY3VycmVudF9maWxlIChmdW4gc3RhdGUgYWN0aXZlIHsgbG9jYWw7IG5hbWUgfSAtPlxuICAgICAgbGV0IGRpcmVjdG9yeSA9IE1vZHMuSW50TWFwLnJlbW92ZSBhY3RpdmUucmFuayBzdGF0ZS5kaXJlY3RvcnkgaW5cbiAgICAgIGxldCBjdXJyZW50ID1cbiAgICAgICAgT3B0aW9uX3V0aWwubWFwXG4gICAgICAgICAgKGZ1biAocmFuaywgXykgLT5cbiAgICAgICAgICAgIHsgcmFuazsgY3Vyc29yX3BvcyA9IGR1bW15X2N1cnNvcl9wb3M7IG91dF9vZl9zeW5jID0gZmFsc2UgfSlcbiAgICAgICAgICAoTW9kcy5JbnRNYXAucm9vdCBkaXJlY3RvcnkpXG4gICAgICBpblxuICAgICAgbGV0ICgpID0gc2V0X2RpcmVjdG9yeV9zdGF0ZSB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9IGluXG4gICAgICBsZXQgeCA9IHNlbmRfcmVmcmVzaCBOb25lIGluXG4gICAgICBtYXRjaCBsb2NhbCB3aXRoXG4gICAgICB8IFNvbWUgXyAtPiB4XG4gICAgICB8IE5vbmUgLT5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJyZW1vdmVfZmlsZVwiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWFuYWdlciNmaWxlX2RlbGV0ZSBuYW1lID4+PSBmdW4geSAtPlxuICAgICAgICAgICAgeCA+Pj0gZnVuIHggLT4gTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHg7IHkgXSkpKVxuXG5sZXQgZG9fYV9tb3ZlIHN0YXRlIGZpbGVfaWQgcmFuayA9XG4gIG1hdGNoXG4gICAgTW9kcy5JbnRNYXAuZmlsdGVyX29uZSAoZnVuIF8geyBuYW1lOyBfIH0gLT4gbmFtZSA9IGZpbGVfaWQpIHN0YXRlLmRpcmVjdG9yeVxuICB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIGxldCBlcnJvcl9tc2cgPSBcIkludGVybmFsIGluY29uc2lzdGVuY3k6IE5vIGZpbGUgXCIgXiBmaWxlX2lkIGluXG4gICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZylcbiAgfCBTb21lIChyYW5rJywgKHsgbG9jYWw7IF8gfSBhcyB4KSkgLT5cbiAgICBsZXQgZGlyZWN0b3J5ID1cbiAgICAgIE1vZHMuSW50TWFwLmFkZCByYW5rIHggKE1vZHMuSW50TWFwLnJlbW92ZSByYW5rJyBzdGF0ZS5kaXJlY3RvcnkpXG4gICAgaW5cbiAgICBsZXQgY3VycmVudCA9XG4gICAgICBtYXRjaCBzdGF0ZS5jdXJyZW50IHdpdGhcbiAgICAgIHwgU29tZSB7IHJhbmsgPSBwb3M7IGN1cnNvcl9wb3M7IG91dF9vZl9zeW5jIH0gd2hlbiBwb3MgPSByYW5rJyAtPlxuICAgICAgICBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfVxuICAgICAgfCB4IC0+IHhcbiAgICBpblxuICAgIGlmIGxvY2FsID0gTm9uZSB0aGVuXG4gICAgICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInJlbW92ZV9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgbWFuYWdlciNmaWxlX21vdmUgcmFuayBmaWxlX2lkXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuICgpIC0+XG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayB7IGN1cnJlbnQ7IGRpcmVjdG9yeSB9KSkpXG4gICAgZWxzZVxuICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgeyBjdXJyZW50OyBkaXJlY3RvcnkgfSlcblxubGV0IHJlYyBzZXRfcG9zaXRpb24gc3RhdGUgZmlsZV9pZCByYW5rID1cbiAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gcmFuayBzdGF0ZS5kaXJlY3Rvcnkgd2l0aFxuICB8IFNvbWUgeyBuYW1lOyBfIH0gLT5cbiAgICBpZiBmaWxlX2lkID0gbmFtZSB0aGVuXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBzdGF0ZSlcbiAgICBlbHNlXG4gICAgICBzZXRfcG9zaXRpb24gc3RhdGUgbmFtZSAoc3VjYyByYW5rKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHN0YXRlJyAtPlxuICAgICAgICAgICAgICBkb19hX21vdmUgc3RhdGUnIGZpbGVfaWQgcmFuaylcbiAgfCBOb25lIC0+IGRvX2FfbW92ZSBzdGF0ZSBmaWxlX2lkIHJhbmtcblxubGV0IG9yZGVyX2ZpbGVzIChmaWxlbmFtZXMgOiBzdHJpbmcgbGlzdCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBsZXQgcmVjIF9vcmRlcl9maWxlIGZpbGVuYW1lcyBzdGF0ZSBpbmRleCA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgbWF0Y2ggZmlsZW5hbWVzIHdpdGhcbiAgICB8IFtdIC0+XG4gICAgICBsZXQgKCkgPSBzZXRfZGlyZWN0b3J5X3N0YXRlIHN0YXRlIGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICB8IGZpbGVfaWQgOjogdGFpbCAtPlxuICAgICAgc2V0X3Bvc2l0aW9uIHN0YXRlIGZpbGVfaWQgaW5kZXhcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBzdGF0ZScgLT5cbiAgICAgICAgICAgICAgX29yZGVyX2ZpbGUgdGFpbCBzdGF0ZScgKGluZGV4ICsgMSkpXG4gIGluXG4gIF9vcmRlcl9maWxlIGZpbGVuYW1lcyAoUmVhY3QuUy52YWx1ZSBtb2RlbCkgMFxuXG5sZXQgY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaCA9XG4gIGxldCB2ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBtYXRjaCB2LmN1cnJlbnQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHsgcmFuazsgb3V0X29mX3N5bmM7IF8gfSAtPlxuICAgIHNldF9kaXJlY3Rvcnlfc3RhdGVcbiAgICAgIHtcbiAgICAgICAgY3VycmVudCA9XG4gICAgICAgICAgU29tZVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICByYW5rO1xuICAgICAgICAgICAgICBjdXJzb3JfcG9zID0geyBMb2MubGluZSA9IHN1Y2MgbGluZTsgY2hyID0gY2ggfTtcbiAgICAgICAgICAgICAgb3V0X29mX3N5bmM7XG4gICAgICAgICAgICB9O1xuICAgICAgICBkaXJlY3RvcnkgPSB2LmRpcmVjdG9yeTtcbiAgICAgIH1cblxubGV0IG91dF9vZl9zeW5jIG91dF9vZl9zeW5jID1cbiAgbGV0IHYgPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIHYuY3VycmVudCB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgeyByYW5rOyBjdXJzb3JfcG9zOyBfIH0gLT5cbiAgICBzZXRfZGlyZWN0b3J5X3N0YXRlXG4gICAgICB7XG4gICAgICAgIGN1cnJlbnQgPSBTb21lIHsgcmFuazsgY3Vyc29yX3Bvczsgb3V0X29mX3N5bmMgfTtcbiAgICAgICAgZGlyZWN0b3J5ID0gdi5kaXJlY3Rvcnk7XG4gICAgICB9XG5cbmxldCBzeW5jID8ocmVzZXQgPSBmYWxzZSkgKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInNlbGVjdF9maWxlXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI2ZpbGVfY2F0YWxvZ1xuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGNhdGFsb2cgLT5cbiAgICAgICAgICAgICAgbGV0IGNhbmQgPSAoUmVhY3QuUy52YWx1ZSBtb2RlbCkuY3VycmVudCBpblxuICAgICAgICAgICAgICBsZXQgcG9zID1cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgcmVzZXRcbiAgICAgICAgICAgICAgICAgIHx8XG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYW5kIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgTm9uZSAtPiB0cnVlXG4gICAgICAgICAgICAgICAgICB8IFNvbWUgeCAtPlxuICAgICAgICAgICAgICAgICAgICBMaXN0LmV4aXN0c1xuICAgICAgICAgICAgICAgICAgICAgIChmdW4geyBLZmlsZXMucG9zaXRpb247IF8gfSAtPiB4LnJhbmsgPSBwb3NpdGlvbilcbiAgICAgICAgICAgICAgICAgICAgICBjYXRhbG9nXG4gICAgICAgICAgICAgICAgdGhlbiAoXG4gICAgICAgICAgICAgICAgICBtYXRjaCBjYXRhbG9nIHdpdGhcbiAgICAgICAgICAgICAgICAgIHwgW10gLT4gTm9uZVxuICAgICAgICAgICAgICAgICAgfCB7IEtmaWxlcy5wb3NpdGlvbjsgXyB9IDo6IF8gLT5cbiAgICAgICAgICAgICAgICAgICAgU29tZVxuICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJhbmsgPSBwb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnNvcl9wb3MgPSBkdW1teV9jdXJzb3JfcG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgICBjYW5kXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9kaXJlY3RvcnkgfnJlc2V0IHBvcyBjYXRhbG9nIGluXG4gICAgICAgICAgICAgIHNlbmRfcmVmcmVzaCBOb25lKSlcblxubGV0IGxvYWRfZGVmYXVsdCAoKSA6IHVuaXQgTHd0LnQgPVxuICBjcmVhdGVfZmlsZSB+ZmlsZW5hbWU6XCJtb2RlbC5rYVwiIH5jb250ZW50OlwiXCJcbiAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgfm9rOihmdW4gKCkgLT4gTHd0LnJldHVybl91bml0KVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICBcIlN0YXRlX2ZpbGUubG9hZF9kZWZhdWx0IDogY3JlYXRpbmcgZGVmYXVsdCBmaWxlIGVycm9yQCBAWzx2PiVhQF1cIlxuICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIG1zZykgaW5cbiAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBsb2FkX21vZGVscyAoKSA6IHVuaXQgTHd0LnQgPVxuICBsZXQgbW9kZWxzID0gQ29tbW9uX3N0YXRlLnVybF9hcmdzIFwibW9kZWxcIiBpblxuICBsZXQgcmVjIGFkZF9tb2RlbHMgbW9kZWxzIGxvYWRfZmlsZSA6IHVuaXQgTHd0LnQgPVxuICAgIG1hdGNoIG1vZGVscyB3aXRoXG4gICAgfCBbXSAtPiBMd3QucmV0dXJuX3VuaXRcbiAgICB8IG1vZGVsIDo6IG1vZGVscyAtPlxuICAgICAgKCogZmV0Y2ggbW9kZWwgKilcbiAgICAgIEpzX29mX29jYW1sX2x3dC5YbWxIdHRwUmVxdWVzdC5nZXQgbW9kZWxcbiAgICAgID4+PSAoZnVuIGNvbnRlbnQgLT5cbiAgICAgICAgICAgIGlmIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgPD4gMjAwIHRoZW5cbiAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2dcbiAgICAgICAgICAgICAgICAgICAoRm9ybWF0LnNwcmludGYgXCJiYWQgcmVzcG9uc2UgY29kZSAlZCBmZXRjaGluZyB1cmwgJXNcIlxuICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvZGUgbW9kZWwpKVxuICAgICAgICAgICAgZWxzZSAoXG4gICAgICAgICAgICAgIG1hdGNoXG4gICAgICAgICAgICAgICAgVXJsLnVybF9vZl9zdHJpbmcgY29udGVudC5Kc19vZl9vY2FtbF9sd3QuWG1sSHR0cFJlcXVlc3QudXJsXG4gICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+XG4gICAgICAgICAgICAgICAgTHd0LnJldHVyblxuICAgICAgICAgICAgICAgICAgKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZ1xuICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiZmFpbGVkIHRvIHJldHJpZXZlIHVybCAlc1wiIG1vZGVsKSlcbiAgICAgICAgICAgICAgfCBTb21lIHUgLT5cbiAgICAgICAgICAgICAgICBsZXQgZmlsZW5hbWUgPVxuICAgICAgICAgICAgICAgICAgTGlzdF91dGlsLmxhc3RcbiAgICAgICAgICAgICAgICAgICAgKG1hdGNoIHUgd2l0aFxuICAgICAgICAgICAgICAgICAgICB8IFVybC5IdHRwIGggfCBVcmwuSHR0cHMgaCAtPiBoLlVybC5odV9wYXRoXG4gICAgICAgICAgICAgICAgICAgIHwgVXJsLkZpbGUgZiAtPiBmLlVybC5mdV9wYXRoKVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgbGV0IGZpbGVjb250ZW50IDogc3RyaW5nID1cbiAgICAgICAgICAgICAgICAgIGNvbnRlbnQuSnNfb2Zfb2NhbWxfbHd0LlhtbEh0dHBSZXF1ZXN0LmNvbnRlbnRcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIChmaWxlbmFtZSwgZmlsZWNvbnRlbnQpKVxuICAgICAgICAgICAgKSlcbiAgICAgID4+PSAoKiBhZGQgY29udGVudCAqKVxuICAgICAgQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gKGZpbGVuYW1lLCBjb250ZW50KSAtPlxuICAgICAgICAgIGNyZWF0ZV9maWxlIH5maWxlbmFtZSB+Y29udGVudFxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgZmlsZW5hbWUpKSlcbiAgICAgID4+PSAoKiBzZWxlY3QgbW9kZWwgaWYgbmVlZGVkICopXG4gICAgICBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgICAgaWYgbG9hZF9maWxlIHRoZW5cbiAgICAgICAgICAgIHNlbGVjdF9maWxlIGZpbGVuYW1lIE5vbmVcbiAgICAgICAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IGFkZF9tb2RlbHMgbW9kZWxzIGZhbHNlKVxuICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBhZGRfbW9kZWxzIG1vZGVscyBsb2FkX2ZpbGUpXG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcnMgLT5cbiAgICAgICAgICBsZXQgbXNnID1cbiAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZiBcImNyZWF0aW5nIGxvYWRpbmcgdXJsICVzIGVycm9yQCBAWzx2PiVhQF1cIiBtb2RlbFxuICAgICAgICAgICAgICAoUHAubGlzdCBQcC5zcGFjZSBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlKVxuICAgICAgICAgICAgICBlcnJvcnNcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBDb21tb24uZGVidWdcbiAgICAgICAgICAgICAgKEpzLnN0cmluZyAoRm9ybWF0LnNwcmludGYgXCJTdGF0ZV9maWxlLmxvYWRfbW9kZWwgJXNcIiBtc2cpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgYWRkX21vZGVscyBtb2RlbHMgbG9hZF9maWxlKVxuICBpblxuICBtYXRjaCBtb2RlbHMgd2l0aFxuICB8IFtdIC0+IGxvYWRfZGVmYXVsdCAoKVxuICB8IF8gOjogXyAtPiBhZGRfbW9kZWxzIG1vZGVscyB0cnVlXG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9IEx3dC5yZXR1cm5fdW5pdCA+Pj0gbG9hZF9tb2RlbHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbnR5cGUgc2ltdWxhdGlvbl9zdGF0ZSA9XG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEICgqIHNpbXVsYXRpb24gaXMgdW5hdmFpbGFibGUgKilcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HICgqIHNpbXVsYXRpb24gaXMgYmxvY2tlZCBvbiBhbiBvcGVyYXRpb24gKilcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIG9mIEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb1xuKCogdGhlIHNpbXVsYXRpb24gaXMgcmVhZHkgKilcblxudHlwZSB0ID0geyBzaW11bGF0aW9uX3N0YXRlOiBzaW11bGF0aW9uX3N0YXRlIH1cblxubGV0IHRfc2ltdWxhdGlvbl9zdGF0ZSBzaW11bGF0aW9uID0gc2ltdWxhdGlvbi5zaW11bGF0aW9uX3N0YXRlXG5cbmxldCB0X3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiA9XG4gIG1hdGNoIHNpbXVsYXRpb24uc2ltdWxhdGlvbl9zdGF0ZSB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IE5vbmVcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IE5vbmVcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1JFQURZIHNpbXVsYXRpb25faW5mbyAtPiBTb21lIHNpbXVsYXRpb25faW5mb1xuXG50eXBlIHN0YXRlID0gdFxudHlwZSBtb2RlbCA9IHN0YXRlXG50eXBlIG1vZGVsX3N0YXRlID0gU1RPUFBFRCB8IElOSVRBTElaSU5HIHwgUlVOTklORyB8IFBBVVNFRFxuXG5sZXQgbW9kZWxfc3RhdGVfdG9fc3RyaW5nID0gZnVuY3Rpb25cbiAgfCBTVE9QUEVEIC0+IFwiU3RvcHBlZFwiXG4gIHwgSU5JVEFMSVpJTkcgLT4gXCJJbml0YWxpemluZ1wiXG4gIHwgUlVOTklORyAtPiBcIlJ1bm5pbmdcIlxuICB8IFBBVVNFRCAtPiBcIlBhdXNlZFwiXG5cbmxldCBkdW1teV9tb2RlbCA9IHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCB9XG5cbmxldCBtb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uID1cbiAgdF9zaW11bGF0aW9uX2luZm8gbW9kZWxcblxubGV0IG1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgOiBtb2RlbF9zdGF0ZSA9XG4gIG1hdGNoIHRfc2ltdWxhdGlvbl9zdGF0ZSBtb2RlbCB3aXRoXG4gIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IFNUT1BQRURcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IElOSVRBTElaSU5HXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBzaW11bGF0aW9uX2luZm8gLT5cbiAgICBpZlxuICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgdGhlblxuICAgICAgUlVOTklOR1xuICAgIGVsc2VcbiAgICAgIFBBVVNFRFxuXG5sZXQgc3RhdGUsIHNldF9zdGF0ZSA9IFJlYWN0LlMuY3JlYXRlIGR1bW15X21vZGVsXG5cbmxldCB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSAoc2ltdWxhdGlvbl9zdGF0ZSA6IHNpbXVsYXRpb25fc3RhdGUpIDogdW5pdCA9XG4gIGxldCAoKSA9IHNldF9zdGF0ZSB7IHNpbXVsYXRpb25fc3RhdGUgfSBpblxuICAoKVxuXG5sZXQgbW9kZWwgOiBtb2RlbCBSZWFjdC5zaWduYWwgPSBzdGF0ZVxuXG5sZXQgZXZhbF93aXRoX3NpbV9tYW5hZ2VyIDpcbiAgICAgICdhLlxuICAgICAgbGFiZWw6c3RyaW5nIC0+XG4gICAgICAoQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gdCAtPiAnYSBBcGkucmVzdWx0IEx3dC50KSAtPlxuICAgICAgJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gZnVuIH5sYWJlbCBoYW5kbGVyIC0+XG4gIGxldCBwcm9qZWN0X2hhbmRsZXIgbWFuYWdlciA9IGhhbmRsZXIgbWFuYWdlciAoUmVhY3QuUy52YWx1ZSBzdGF0ZSkgaW5cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWwgcHJvamVjdF9oYW5kbGVyXG5cbmxldCBmYWlsX2x3dCBlcnJvcl9tc2cgPSBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKVxuXG5sZXQgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH4obGFiZWwgOiBzdHJpbmcpXG4gICAgPyhzdG9wcGVkIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBmdW4gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gc3RvcHBlZFwiKVxuICAgID8oaW5pdGlhbGl6aW5nIDogQXBpLmNvbmNyZXRlX21hbmFnZXIgLT4gJ2EgQXBpLnJlc3VsdCBMd3QudCA9XG4gICAgICBmdW4gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gaW5pdGFsaXppbmdcIilcbiAgICA/KHJlYWR5IDpcbiAgICAgICAgQXBpLmNvbmNyZXRlX21hbmFnZXIgLT5cbiAgICAgICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICdhIEFwaS5yZXN1bHQgTHd0LnQgPVxuICAgICAgZnVuIF8gXyAtPiBmYWlsX2x3dCBcIlNpbXVsYXRpb24gcmVhZHlcIikgKCkgOiAnYSBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyIH5sYWJlbCAoZnVuIG1hbmFnZXIgcyAtPlxuICAgICAgbWF0Y2ggcy5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgICAgIHwgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIC0+IHN0b3BwZWQgbWFuYWdlclxuICAgICAgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+IGluaXRpYWxpemluZyBtYW5hZ2VyXG4gICAgICB8IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIC0+IHJlYWR5IG1hbmFnZXIgc2ltdWxhdGlvbl9pbmZvKVxuXG5sZXQgZXZhbF93aGVuX3JlYWR5IH4obGFiZWwgOiBzdHJpbmcpXG4gICAgPyhoYW5kbGVyIDogdW5pdCBBcGkucmVzdWx0IC0+IHVuaXQgTHd0LnQgPSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG4gICAgKG9wZXJhdGlvbiA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyIC0+IHVuaXQgQXBpLnJlc3VsdCBMd3QudCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbFxuICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyA6IHVuaXQgQXBpLnJlc3VsdCBMd3QudCAtPiBvcGVyYXRpb24gbWFuYWdlcilcbiAgICAgICAgKClcbiAgICAgID4+PSBoYW5kbGVyKVxuXG4oKiB0byBzeW5jaCBzdGF0ZSBvZiBhcHBsaWNhdGlvbiB3aXRoIHJ1bnRpbWUgKilcbmxldCBzbGVlcF90aW1lID0gMS4wXG5cbmxldCByZWMgc3luYyAoKSA9XG4gIG1hdGNoIChSZWFjdC5TLnZhbHVlIHN0YXRlKS5zaW11bGF0aW9uX3N0YXRlIHdpdGhcbiAgfCBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgfCBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIC0+XG4gICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gIHwgU0lNVUxBVElPTl9TVEFURV9SRUFEWSBfIC0+XG4gICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJzeW5jXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICgqIGdldCBjdXJyZW50IGRpcmVjdG9yeSAqKVxuICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25faW5mb1xuICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgIHNldF9zdGF0ZVxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvLkFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9wcm9ncmVzc19pc19ydW5uaW5nXG4gICAgICAgICAgICAgICAgdGhlblxuICAgICAgICAgICAgICAgICAgSnNfb2Zfb2NhbWxfbHd0Lkx3dF9qcy5zbGVlcCBzbGVlcF90aW1lID4+PSBzeW5jXG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IHJlZnJlc2ggKCkgPVxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcInN5bmNcIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICgqIGdldCBjdXJyZW50IGRpcmVjdG9yeSAqKVxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2luZm9cbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biBzaW11bGF0aW9uX2luZm8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfc3RhdGVcbiAgICAgICAgICAgICAgICAgIHsgc2ltdWxhdGlvbl9zdGF0ZSA9IFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9pbmZvIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgc3luYyAoKSlcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBzZXRfc3RhdGUgeyBzaW11bGF0aW9uX3N0YXRlID0gU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIH1cbiAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGluaXQgKCkgOiB1bml0IEx3dC50ID0gTHd0LnJldHVybl91bml0XG5cbmxldCBjb250aW51ZV9zaW11bGF0aW9uIChwYXVzZV9jb25kaXRpb24gOiBzdHJpbmcpIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcImNvbnRpbnVlX3NpbXVsYXRpb25cIlxuICAgIH5zdG9wcGVkOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIGNvbnRpbnVlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gc3RvcHBlZFwiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfmluaXRpYWxpemluZzooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBjb250aW51ZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY29udGludWUgcGF1c2VfY29uZGl0aW9uXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOnN5bmMpXG4gICAgKClcblxubGV0IHBhdXNlX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwicGF1c2Vfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gcGF1c2Ugc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBzdG9wcGVkXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHBhdXNlIHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIChfIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3BhdXNlKVxuICAgICgpXG5cbmxldCBzdG9wX3NpbXVsYXRpb24gKCkgOiB1bml0IEFwaS5yZXN1bHQgTHd0LnQgPVxuICBldmFsX3dpdGhfc2ltX21hbmFnZXJfYW5kX2luZm8gfmxhYmVsOlwic3RvcF9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIF8gLT5cbiAgICAgIGxldCBlcnJvcl9tc2cgOiBzdHJpbmcgPVxuICAgICAgICBcIkZhaWxlZCB0byBwYXVzZSBzaW11bGF0aW9uLCBzaW11bGF0aW9uIHN0b3BwZWRcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RvcCBzaW11bGF0aW9uLCBzaW11bGF0aW9uIGluaXRpYWxpemluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgfnJlYWR5OihmdW4gbWFuYWdlciAoXyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZWxldGVcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX1NUT1BQRUQgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiAgICAoKVxuXG5sZXQgc3RhcnRfc2ltdWxhdGlvbiAoc2ltdWxhdGlvbl9wYXJhbWV0ZXIgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3BhcmFtZXRlcikgOlxuICAgIHVuaXQgQXBpLnJlc3VsdCBMd3QudCA9XG4gIGV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6XCJzdGFydF9zaW11bGF0aW9uXCJcbiAgICB+c3RvcHBlZDooZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBvbl9lcnJvciBlcnJvcl9tc2dzIDogdW5pdCBBcGkucmVzdWx0IEx3dC50ID1cbiAgICAgICAgbGV0ICgpID0gdXBkYXRlX3NpbXVsYXRpb25fc3RhdGUgU0lNVUxBVElPTl9TVEFURV9TVE9QUEVEIGluXG4gICAgICAgICgqIHR1cm4gdGhlIGxpZ2h0cyBvZmYgKilcbiAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2RlbGV0ZSA+Pj0gZnVuIF8gLT5cbiAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgZXJyb3JfbXNncylcbiAgICAgIGluXG4gICAgICBMd3QuY2F0Y2hcbiAgICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgICgqIHNldCBzdGF0ZSB0byBpbml0YWxpemUgKilcbiAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBTSU1VTEFUSU9OX1NUQVRFX0lOSVRBTElaSU5HIGluXG4gICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3N0YXJ0IHNpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIF8gLT4gbWFuYWdlciNzaW11bGF0aW9uX2luZm8pXG4gICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHNpbXVsYXRpb25fc3RhdHVzIC0+XG4gICAgICAgICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9zdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIFNJTVVMQVRJT05fU1RBVEVfUkVBRFkgc2ltdWxhdGlvbl9zdGF0dXNcbiAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfc2ltdWxhdGlvbl9zdGF0ZSBzaW11bGF0aW9uX3N0YXRlIGluXG4gICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgPj49IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICB+b2s6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBlcnJvcl9tc2cgLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9zaW11bGF0aW9uX3N0YXRlIFNJTVVMQVRJT05fU1RBVEVfU1RPUFBFRCBpblxuICAgICAgICAgICAgICAgICAgb25fZXJyb3IgZXJyb3JfbXNnKVxuICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6c3luYylcbiAgICAgICAgKGZ1bmN0aW9uXG4gICAgICAgICAgfCBJbnZhbGlkX2FyZ3VtZW50IGVycm9yIC0+XG4gICAgICAgICAgICBsZXQgbXNnID0gRm9ybWF0LnNwcmludGYgXCJSdW50aW1lIGVycm9yICVzXCIgZXJyb3IgaW5cbiAgICAgICAgICAgIG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbXNnIF1cbiAgICAgICAgICB8IFN5c19lcnJvciBtZXNzYWdlIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgbWVzc2FnZSBdXG4gICAgICAgICAgfCBfIC0+IG9uX2Vycm9yIFsgQXBpX2NvbW1vbi5lcnJvcl9tc2cgXCJJbml0aWFsaXphdGlvbiBlcnJvclwiIF0pKVxuICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBpbml0aWFsaXppbmdcIlxuICAgICAgaW5cbiAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBlcnJvcl9tc2cpKVxuICAgIH5yZWFkeTooZnVuIF8gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gcnVubmluZ1wiXG4gICAgICBpblxuICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfZXJyb3JfbXNnIGVycm9yX21zZykpXG4gICAgKClcblxubGV0IGludGVydmVuZV9zaW11bGF0aW9uIChjb2RlIDogc3RyaW5nKSA6IHN0cmluZyBBcGkucmVzdWx0IEx3dC50ID1cbiAgZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpcInBlcnR1cmJfc2ltdWxhdGlvblwiXG4gICAgfnN0b3BwZWQ6KGZ1biBfIC0+XG4gICAgICBsZXQgZXJyb3JfbXNnIDogc3RyaW5nID1cbiAgICAgICAgXCJGYWlsZWQgdG8gc3RhcnQgc2ltdWxhdGlvbiwgc2ltdWxhdGlvbiBydW5uaW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPlxuICAgICAgbGV0IGVycm9yX21zZyA6IHN0cmluZyA9XG4gICAgICAgIFwiRmFpbGVkIHRvIHN0YXJ0IHNpbXVsYXRpb24sIHNpbXVsYXRpb24gaW5pdGlhbGl6aW5nXCJcbiAgICAgIGluXG4gICAgICBMd3QucmV0dXJuIChBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZXJyb3JfbXNnKSlcbiAgICB+cmVhZHk6KGZ1biBtYW5hZ2VyIF8gLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9pbnRlcnZlbnRpb24gY29kZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIG91dCAtPlxuICAgICAgICAgICAgICBzeW5jICgpXG4gICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIG91dCkpKSlcbiAgICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHJlZnJlc2ggciA9XG4gIGxldCByJyA9IFN0YXRlX2ZpbGUuc3luYyB+cmVzZXQ6dHJ1ZSAoKSBpblxuICBsZXQgcicnID0gU3RhdGVfc2ltdWxhdGlvbi5yZWZyZXNoICgpIGluXG4gIHInID4+PSBmdW4gcicgLT5cbiAgcicnID4+PSBmdW4gcicnIC0+IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJzsgcicnIF0pXG5cbmxldCBjcmVhdGVfcHJvamVjdCAocHJvamVjdF9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmNyZWF0ZV9wcm9qZWN0IHByb2plY3RfaWQgPj49IHJlZnJlc2gpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X3Byb2plY3QgKHByb2plY3RfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfcHJvamVjdC5zZXRfcHJvamVjdCBwcm9qZWN0X2lkID4+PSByZWZyZXNoKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IGNsb3NlX3Byb2plY3QgcHJvamVjdF9pZCA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3Byb2plY3QucmVtb3ZlX3Byb2plY3QgcHJvamVjdF9pZCA+Pj0gcmVmcmVzaClcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfbWFuYWdlciAocnVudGltZV9pZCA6IHN0cmluZykgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dFxuICAgICAgICAgICB+b2s6KGZ1biAoKSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICAgICAgIChTdGF0ZV9ydW50aW1lLmNyZWF0ZV9zcGVjIH5sb2FkOnRydWUgcnVudGltZV9pZCkpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgY29uZmlndXJhdGlvbl9zZWVkX2lucHV0X2lkID0gXCJzaW11bGF0aW9uX3NlZWRfaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX21vZGFsX2lkID0gXCJwcmVmZXJlbmNlc19tb2RhbFwiXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2lkID0gXCJzZXR0aW5ncy1jbGllbnQtaWQtaW5wdXRcIlxubGV0IHByZWZlcmVuY2VzX2J1dHRvbiA9IEh0bWwuYSBbIEh0bWwudHh0IFwiUHJlZmVyZW5jZXNcIiBdXG5cbmxldCBvcHRpb25fc2VlZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGNvbmZpZ3VyYXRpb25fc2VlZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBvcHRpb25fd2l0aHRyYWNlID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGRlYWRhZ2VudHMgPSBIdG1sLmlucHV0IH5hOlsgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94IF0gKClcbmxldCBvcHRpb25fd2l0aGlycmV2ZXJzaWJsZSA9IEh0bWwuaW5wdXQgfmE6WyBIdG1sLmFfaW5wdXRfdHlwZSBgQ2hlY2tib3ggXSAoKVxuXG5sZXQgZGVjcmVhc2VfZm9udCA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwiYnRuLXNtXCIgXTtcbiAgICAgIF1cbiAgICBbIEh0bWwudHh0IFwiLVwiIF1cblxubGV0IGluY3JlYXNlX2ZvbnQgPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcImJ0bi1sZ1wiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIitcIiBdXG5cbmxldCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImNsaWVudCBpZFwiO1xuICAgICAgICBIdG1sLmFfc2l6ZSA0MDtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSA9XG4gIFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRcblxubGV0IG9wdGlvbl9odHRwX3N5bmNoID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5cbmxldCBkcm9wZG93biAobW9kZWwgOiBTdGF0ZV9ydW50aW1lLm1vZGVsKSA9XG4gIGxldCBjdXJyZW50X2lkID0gU3RhdGVfcnVudGltZS5zcGVjX2lkIG1vZGVsLlN0YXRlX3J1bnRpbWUubW9kZWxfY3VycmVudCBpblxuICBMaXN0Lm1hcFxuICAgIChmdW4gKHNwZWMgOiBTdGF0ZV9ydW50aW1lLnNwZWMpIC0+XG4gICAgICBsZXQgc3BlY19pZCA9IFN0YXRlX3J1bnRpbWUuc3BlY19pZCBzcGVjIGluXG4gICAgICBIdG1sLm9wdGlvblxuICAgICAgICB+YTpcbiAgICAgICAgICAoSHRtbC5hX3ZhbHVlIHNwZWNfaWRcbiAgICAgICAgICA6OlxuICAgICAgICAgIChpZiBjdXJyZW50X2lkID0gc3BlY19pZCB0aGVuXG4gICAgICAgICAgICAgWyBIdG1sLmFfc2VsZWN0ZWQgKCkgXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgW10pKVxuICAgICAgICAoSHRtbC50eHQgKFN0YXRlX3J1bnRpbWUuc3BlY19sYWJlbCBzcGVjKSkpXG4gICAgbW9kZWwuU3RhdGVfcnVudGltZS5tb2RlbF9ydW50aW1lc1xuXG5sZXQgYmFja2VuZF9vcHRpb25zID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwIChmdW4gbGlzdF90IC0+IGRyb3Bkb3duIGxpc3RfdCkgU3RhdGVfcnVudGltZS5tb2RlbClcblxubGV0IGJhY2tlbmRfc2VsZWN0ID1cbiAgVHl4bWxfanMuUi5IdG1sLnNlbGVjdCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXSBdIGJhY2tlbmRfb3B0aW9uc1xuXG5sZXQlaHRtbCBib2RpZXMgPVxuICB7fFxuICAgIDxoND5BcHBsaWNhdGlvbjwvaDQ+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkZvbnQgc2l6ZTwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGRlY3JlYXNlX2ZvbnQ7IGluY3JlYXNlX2ZvbnQgXVxuICAgIHt8PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMlwiPkJhY2tlbmQgZm9yIG5ldyBwcm9qZWN0czwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIGJhY2tlbmRfc2VsZWN0IF1cbiAgICB7fDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5Qcm9qZWN0PC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBjb25maWd1cmF0aW9uX3NlZWRfaW5wdXRfaWRcbiAgICB7fFwiPlNlZWQ8L2xhYmVsPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPnx9XG4gICAgWyBvcHRpb25fc2VlZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRodHJhY2UgXVxuICAgIHt8U3RvcmUgdHJhY2VcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5IVFRQUyBiYWNrZW5kPC9oND5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImNvbC1tZC0yXCIgZm9yPVwifH1cbiAgICBzZXR0aW5nc19jbGllbnRfaWRfaW5wdXRfaWRcbiAgICB7fFwiPkNsaWVudCBpZDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC01XCI+fH1cbiAgICBbIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dCBdXG4gICAge3w8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl9odHRwX3N5bmNoIF1cbiAgICB7fEF1dG8gc3luY2hcbiAgICA8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxoND5TdGF0aWMgYW5hbHlzZXM8L2g0PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImNvbC1tZC1vZmZzZXQtMiBjb2wtbWQtNSBjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgb3B0aW9uX3dpdGhkZWFkcnVsZXMgXVxuICAgIHt8U2hvdyBkZWFkIHJ1bGVzXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoZGVhZGFnZW50cyBdXG4gICAge3xTaG93IGRlYWQgYWdlbnRzXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtb2Zmc2V0LTIgY29sLW1kLTUgY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlIF1cbiAgICB7fFNob3cgbm9uIHdlYWtseSByZXZlcnNpYmxlIHRyYW5zaXRpb25zXG4gICAgPC9sYWJlbD48L2Rpdj5cbiAgICA8L2Rpdj5cbnx9XG5cbmxldCBzZXRfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgU3VibWl0OyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1wcmltYXJ5XCIgXSBdXG4gICAgWyBIdG1sLnR4dCBcIlNldFwiIF1cblxubGV0IHNhdmVfYnV0dG9uID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpbIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uOyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSBdXG4gICAgWyBIdG1sLnR4dCBcIlNhdmUgYXMgZGVmYXVsdFwiIF1cblxubGV0IG1vZGFsID1cbiAgbGV0IGhlYWQgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtaGVhZGVyXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuYnV0dG9uXG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIEh0bWwuYV9idXR0b25fdHlwZSBgQnV0dG9uO1xuICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXTtcbiAgICAgICAgICAgICAgSHRtbC5hX3VzZXJfZGF0YSBcImRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXTtcbiAgICAgICAgSHRtbC5oNCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtdGl0bGVcIiBdIF0gWyBIdG1sLnR4dCBcIlByZWZlcmVuY2VzXCIgXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGJvZHkgPSBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtYm9keVwiIF0gXSBib2RpZXMgaW5cbiAgbGV0IGZvb3QgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdXG4gICAgICBbXG4gICAgICAgIHNldF9idXR0b247XG4gICAgICAgIHNhdmVfYnV0dG9uO1xuICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgICAgIEh0bWwuYV91c2VyX2RhdGEgXCJkaXNtaXNzXCIgXCJtb2RhbFwiO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIFsgSHRtbC50eHQgXCJDbG9zZVwiIF07XG4gICAgICBdXG4gIGluXG4gIEh0bWwuZm9ybVxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1jb250ZW50XCI7IFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgWyBoZWFkOyBib2R5OyBmb290IF1cblxubGV0IGNvbnRlbnQgKCkgPVxuICBbXG4gICAgcHJlZmVyZW5jZXNfYnV0dG9uO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwibW9kYWxcIjsgXCJmYWRlXCIgXTtcbiAgICAgICAgICBIdG1sLmFfaWQgcHJlZmVyZW5jZXNfbW9kYWxfaWQ7XG4gICAgICAgICAgSHRtbC5hX3JvbGUgWyBcImRpYWxvZ1wiIF07XG4gICAgICAgICAgSHRtbC5hX3RhYmluZGV4ICgtMSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZGlhbG9nXCIgXTsgSHRtbC5hX3JvbGUgWyBcImRvY3VtZW50XCIgXSBdXG4gICAgICAgICAgWyBtb2RhbCBdO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgc2V0X2FjdGlvbiAoKSA9XG4gIGxldCBzZXR0aW5nc19jbGllbnRfaWQgPSBKcy50b19zdHJpbmcgc2V0dGluZ3NfY2xpZW50X2lkX2lucHV0X2RvbSMjLnZhbHVlIGluXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9jbGllbnRfaWQgc2V0dGluZ3NfY2xpZW50X2lkIGluXG5cbiAgbGV0IHN5bmNoX2NoZWNrYm94X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25faHR0cF9zeW5jaCBpblxuICBsZXQgaXNfY2hlY2tlZCA9IEpzLnRvX2Jvb2wgc3luY2hfY2hlY2tib3hfZG9tIyMuY2hlY2tlZCBpblxuICBsZXQgKCkgPSBTdGF0ZV9zZXR0aW5ncy5zZXRfc3luY2ggaXNfY2hlY2tlZCBpblxuXG4gIGxldCBpbnB1dCA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fc2VlZF9pbnB1dCBpblxuICBsZXQgdmFsdWUgOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgaW5wdXQjIy52YWx1ZSBpblxuICBsZXQgbW9kZWxfc2VlZCA9IHRyeSBTb21lIChpbnRfb2Zfc3RyaW5nIHZhbHVlKSB3aXRoIEZhaWx1cmUgXyAtPiBOb25lIGluXG4gIGxldCAoKSA9IFN0YXRlX3Byb2plY3Quc2V0X3NlZWQgbW9kZWxfc2VlZCBpblxuXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc3RvcmVfdHJhY2VcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGh0cmFjZSkjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9ydWxlc1xuICAgICAgKEpzLnRvX2Jvb2wgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aGRlYWRydWxlcykjIy5jaGVja2VkKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFN0YXRlX3Byb2plY3Quc2V0X3Nob3dfZGVhZF9hZ2VudHNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWQpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgU3RhdGVfcHJvamVjdC5zZXRfc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgIChKcy50b19ib29sIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhpcnJldmVyc2libGUpIyMuY2hlY2tlZClcbiAgaW5cblxuICBsZXQgKCkgPVxuICAgIFBhbmVsX3Byb2plY3RzX2NvbnRyb2xsZXIuc2V0X21hbmFnZXJcbiAgICAgIChKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWUpXG4gIGluXG4gICgpXG5cbmxldCBzZXRfYW5kX3NhdmVfYWN0aW9uICgpID1cbiAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnNldF9wYXJhbWV0ZXJzX2FzX2RlZmF1bHQgKCkgaW5cbiAgbGV0ICgpID0gU3RhdGVfcHJvamVjdC5zZXRfcGFyYW1ldGVyc19hc19kZWZhdWx0ICgpIGluXG5cbiAgKClcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9mb3JtIG1vZGFsKSMjLm9uc3VibWl0XG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIChfIDogXyBKcy50KSAtPlxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gcHJlZmVyZW5jZXNfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2FjdGlvbiAoKSBpblxuICAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gc2F2ZV9idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IHNldF9hbmRfc2F2ZV9hY3Rpb24gKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYSBwcmVmZXJlbmNlc19idXR0b24pIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBzcCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIHNldHRpbmdzX2NsaWVudF9pZF9pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICAgIDo9IEpzLnN0cmluZyAoU3RhdGVfc2V0dGluZ3MuZ2V0X2NsaWVudF9pZCAoKSlcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgaW5wdXQgPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3NlZWRfaW5wdXQgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBpbnB1dCMjLnZhbHVlIDo9XG4gICAgICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgKG1hdGNoXG4gICAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnNlZWRcbiAgICAgICAgICAgICAgICAgIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgICAgfCBTb21lIG1vZGVsX3NlZWQgLT4gc3RyaW5nX29mX2ludCBtb2RlbF9zZWVkKVxuICAgICAgICAgICBpblxuXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcHRpb25fd2l0aHRyYWNlKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnMuU3RhdGVfcHJvamVjdC5zdG9yZV90cmFjZVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkYWdlbnRzKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19kZWFkX2FnZW50c1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX3dpdGhkZWFkcnVsZXMpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2xcbiAgICAgICAgICAgICAgICAgIHNwLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAuU3RhdGVfcHJvamVjdC5zaG93X2RlYWRfcnVsZXNcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wdGlvbl93aXRoaXJyZXZlcnNpYmxlKSMjLmNoZWNrZWRcbiAgICAgICAgICAgICA6PSBKcy5ib29sXG4gICAgICAgICAgICAgICAgICBzcC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgaW5cblxuICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3B0aW9uX2h0dHBfc3luY2gpIyMuY2hlY2tlZFxuICAgICAgICAgICAgIDo9IEpzLmJvb2wgKFJlYWN0LlMudmFsdWUgU3RhdGVfc2V0dGluZ3Muc3luY2gpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYmFja2VuZF9zZWxlY3QpIyMudmFsdWVcbiAgICAgICAgICAgICA6PSBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgICAgIChTdGF0ZV9ydW50aW1lLnNwZWNfaWRcbiAgICAgICAgICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3J1bnRpbWUubW9kZWwpXG4gICAgICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9ydW50aW1lLm1vZGVsX2N1cnJlbnQpXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByZWZlcmVuY2VzX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuXG4gIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLiBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGluY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTowLjIgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGRlY3JlYXNlX2ZvbnQpIyMub25jbGlja1xuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IFN0YXRlX3NldHRpbmdzLnVwZGF0ZUZvbnRTaXplIH5kZWx0YTooLTAuMikgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKVxuICBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdG9nZ2xlX2VsZW1lbnQgKHByb2plY3Rpb24gOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uIC0+IGJvb2wpXG4gICAgKGNvbnRlbnQgOiBbPCBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBdIEh0bWwuZWx0IEh0bWwubGlzdF93cmFwKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgKGlmIHByb2plY3Rpb24gKFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwpIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgWyBcInNob3dcIiBdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJoaWRkZW5cIiBdKSkpO1xuICAgICAgXVxuICAgIGNvbnRlbnRcblxubGV0IG9wdGlvbl9sYWJlbCBsYWJlbCA9XG4gIGlmIFN0cmluZy5sZW5ndGggbGFiZWwgPiAxMCB0aGVuXG4gICAgU3RyaW5nLnN1YiBsYWJlbCAwIDcgXiBcIi4uLlwiXG4gIGVsc2VcbiAgICBsYWJlbFxuXG5sZXQgZXhwb3J0X2NvbnRyb2xzIH4oZXhwb3J0X3NlbGVjdF9pZCA6IHN0cmluZykgfihleHBvcnRfZmlsZW5hbWVfaWQgOiBzdHJpbmcpXG4gICAgfihleHBvcnRfYnV0dG9uX2lkIDogc3RyaW5nKSB+KGV4cG9ydF9kYXRhX2xhYmVsIDogc3RyaW5nKSA9XG4gIGxldCBleHBvcnRfZm9ybWF0cyA6IHN0cmluZyBsaXN0ID0gWyBleHBvcnRfZGF0YV9sYWJlbCBdIGluXG4gIGxldCBleHBvcnRfZmlsZW5hbWUgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lkIGV4cG9ydF9maWxlbmFtZV9pZDtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgZXhwb3J0X2J1dHRvbl9pZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiOyBcInB1bGwtcmlnaHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJleHBvcnRcIiBdXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0c19zZWxlY3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGZvcm1hdCAtPlxuICAgICAgICBbJWh0bWxcbiAgICAgICAgICB7fDxvcHRpb24gdmFsdWU9XCJ8fSBmb3JtYXQge3xcIj58fSAoSHRtbC5jZGF0YSBmb3JtYXQpIHt8PC9vcHRpb24+fH1dKVxuICAgICAgZXhwb3J0X2Zvcm1hdHNcbiAgaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMTJcIj5cbiAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0taW5saW5lXCI+XG4gICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIGlkPVwifH1cbiAgICAgIGV4cG9ydF9zZWxlY3RfaWRcbiAgICAgIHt8XCI+PG9wdGlvbiB2YWx1ZT1cInBuZ1wiPnBuZzwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJzdmdcIj5zdmc8L29wdGlvbj58fVxuICAgICAgZXhwb3J0X2Zvcm1hdHNfc2VsZWN0XG4gICAgICB7fDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiY2hlY2tib3gtaW5saW5lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfZmlsZW5hbWUgXVxuICAgICAge3xcbiAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNoZWNrYm94LWlubGluZVwiPlxuICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfYnV0dG9uIF1cbiAgICAgIHt8XG4gICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L2Rpdj58fV1cblxubGV0IGRvY3VtZW50ID0gRG9tX2h0bWwud2luZG93IyMuZG9jdW1lbnRcblxubGV0IGxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSBjb3VudGVyID1cbiAgbGV0IGxhc3RfdmFsdWUgPVxuICAgIHJlZlxuICAgICAgKGxldCBzaW11bGF0aW9uX2luZm8gPVxuICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mb1xuICAgICAgICAgICAoUmVhY3QuUy52YWx1ZSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgIGluXG4gICAgICAgY291bnRlciBzaW11bGF0aW9uX2luZm8pXG4gIGluXG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLmwyXG4gICAgICAgKGZ1biB0YWJfYWN0aXZlIG1vZGVsIC0+XG4gICAgICAgICBpZiB0YWJfYWN0aXZlIHRoZW5cbiAgICAgICAgICAgW11cbiAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgdiA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICAgIGlmIHYgPD4gIWxhc3RfdmFsdWUgJiYgdiA+IDAgdGhlbiAoXG4gICAgICAgICAgICAgbGV0ICgpID0gbGFzdF92YWx1ZSA6PSB2IGluXG4gICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImxhYmVsXCI7IFwibGFiZWwtZGVmYXVsdFwiIF0gXVxuICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiTmV3XCIgXTtcbiAgICAgICAgICAgICBdXG4gICAgICAgICAgICkgZWxzZVxuICAgICAgICAgICAgIFtdXG4gICAgICAgICApKVxuICAgICAgIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGJhZGdlIChjb3VudGVyIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiAtPiBpbnQpID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgKFJlYWN0LlMubWFwXG4gICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24udF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgICAgIGxldCBjb3VudCA9IGNvdW50ZXIgc2ltdWxhdGlvbl9pbmZvIGluXG4gICAgICAgICBpZiBjb3VudCA+IDAgdGhlblxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50eHQgXCIgXCI7XG4gICAgICAgICAgICAgSHRtbC5zcGFuXG4gICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiYmFkZ2VcIiBdIF1cbiAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKHN0cmluZ19vZl9pbnQgY291bnQpIF07XG4gICAgICAgICAgIF1cbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgW10pXG4gICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbClcblxubGV0IGFyZ3VtZW50cyAoa2V5IDogc3RyaW5nKSA6IHN0cmluZyBsaXN0ID1cbiAgTGlzdC5tYXAgc25kIChMaXN0LmZpbHRlciAoZnVuIChrLCBfKSAtPiBrZXkgPSBrKSBVcmwuQ3VycmVudC5hcmd1bWVudHMpXG5cbmxldCB2ZXJzaW9uID8odGVzdCA6ICdhIG9wdGlvbiA9IE5vbmUpIH4ocHJvZCA6ICdhKSB+KGRldiA6ICdhKSA6ICdhID1cbiAgbGV0IHZlcnNpb24gOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcInZlcnNpb25cIiBpblxuICBtYXRjaCB0ZXN0LCB2ZXJzaW9uIHdpdGhcbiAgfCBTb21lIHRlc3QsIFsgXCJ0ZXN0XCIgXSAtPiB0ZXN0XG4gIHwgXywgWyBcImRldlwiIF0gLT4gZGV2XG4gIHwgXyAtPiBwcm9kXG5cbmxldCBuYXZsaSBsYWJlbCBmb3JjZV9jbGFzcyBkZWNvcmF0aW9ucyA9XG4gIGxldCBkZWZhdWx0X2F0dHJpYnV0ZXMgPVxuICAgIFsgSHRtbC5hX2lkIChcIm5hdlwiIF4gbGFiZWwpOyBIdG1sLmFfcm9sZSBbIFwicHJlc2VudGF0aW9uXCIgXSBdXG4gIGluXG4gIGxldCBhdHRyaWJ1dGVzID1cbiAgICBtYXRjaCBmb3JjZV9jbGFzcyB3aXRoXG4gICAgfCBOb25lIC0+IGRlZmF1bHRfYXR0cmlidXRlc1xuICAgIHwgU29tZSBsIC0+IFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBsIDo6IGRlZmF1bHRfYXR0cmlidXRlc1xuICBpblxuICBsZXQgdGV4dCA9XG4gICAgUmVhY3RpdmVEYXRhLlJMaXN0LmNvbmNhdFxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5zaW5nbGV0b24gKEh0bWwuY2RhdGEgbGFiZWwpKVxuICAgICAgZGVjb3JhdGlvbnNcbiAgaW5cbiAgSHRtbC5saSB+YTphdHRyaWJ1dGVzXG4gICAgW1xuICAgICAgVHl4bWxfanMuUi5IdG1sLmFcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtdG9nZ2xlXCIgXCJ0YWJcIjtcbiAgICAgICAgICAgIEh0bWwuYV9yb2xlIFsgXCJ0YWJcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtY29udHJvbHNcIiBsYWJlbDtcbiAgICAgICAgICAgIEh0bWwuYV9ocmVmIChcIiNcIiBeIGxhYmVsKTtcbiAgICAgICAgICBdXG4gICAgICAgIHRleHQ7XG4gICAgXVxuXG5sZXQgbmF2dGFicyBuYXZfdGFiX2lkID0gZnVuY3Rpb25cbiAgfCBbXSB8IChfLCBTb21lIF8sIF8pIDo6IF8gLT4gQ29tbW9uLnRvc3MgXCJ1aV9jb21tb24ubmF2dGFicyA6IG1pc3NpbmcgdGFic1wiXG4gIHwgKHRpLCBOb25lLCBsKSA6OiB0IC0+XG4gICAgSHRtbC51bFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgbmF2X3RhYl9pZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCIgXTtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwidGFibGlzdFwiO1xuICAgICAgICBdXG4gICAgICAobmF2bGkgdGkgKFNvbWUgKFJlYWN0LlMuY29uc3QgWyBcImFjdGl2ZVwiIF0pKSBsXG4gICAgICA6OiBMaXN0Lm1hcCAoZnVuICh0LCBhX2NsYXNzLCBsaSkgLT4gbmF2bGkgdCBhX2NsYXNzIGxpKSB0KVxuXG5sZXQgb25lbmF2Y29udGVudCBsYWJlbCBhY3RpdmUgY2xhc3NlcyBjb250ZW50ID1cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGxhYmVsO1xuICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAoaWYgYWN0aXZlIHRoZW5cbiAgICAgICAgICAgICBcImZsZXgtY29udGVudFwiIDo6IFwidGFiLXBhbmVcIiA6OiBcImFjdGl2ZVwiIDo6IGNsYXNzZXNcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIFwiZmxleC1jb250ZW50XCIgOjogXCJ0YWItcGFuZVwiIDo6IGNsYXNzZXMpO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwidGFicGFuZWxcIjtcbiAgICAgIF1cbiAgICBjb250ZW50XG5cbmxldCBuYXZjb250ZW50ID9pZCBjbGFzc2VzID0gZnVuY3Rpb25cbiAgfCBbXSAtPiBDb21tb24udG9zcyBcInVpX2NvbW1vbi5uYXZjb250ZW50IDogbWlzc2luZyBjb250ZW50XCJcbiAgfCAodCwgY2wsIGMpIDo6IGwgLT5cbiAgICBsZXQgaWQgOiBbPiBgSWQgXSBIdG1sLmF0dHJpYiBsaXN0ID1cbiAgICAgIG1hdGNoIGlkIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgfCBTb21lIGlkIC0+IFsgSHRtbC5hX2lkIGlkIF1cbiAgICBpblxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgKFtcbiAgICAgICAgICAgSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgKFsgXCJwYW5lbC1jb250ZW50XCI7IFwidGFiLWNvbnRlbnRcIjsgXCJmbGV4LWNvbnRlbnRcIiBdIEAgY2xhc3Nlcyk7XG4gICAgICAgICBdXG4gICAgICAgIEAgaWQpXG4gICAgICAob25lbmF2Y29udGVudCB0IHRydWUgY2wgY1xuICAgICAgOjogTGlzdC5tYXAgKGZ1biAodCwgY2wsIGMpIC0+IG9uZW5hdmNvbnRlbnQgdCBmYWxzZSBjbCBjKSBsKVxuXG5sZXQgbGV2ZWwgP2RlYnVnID9pbmZvID9ub3RpY2UgP3dhcm5pbmcgP2Vycm9yID9mYXRhbCAoKSA6ICdhIGxpc3QgPVxuICBsZXQgbGV2ZWwgOiBzdHJpbmcgbGlzdCA9IGFyZ3VtZW50cyBcImxldmVsXCIgaW5cbiAgbGV0IGV4dHJhY3Qga2V5IHZhbHVlID1cbiAgICBtYXRjaCB2YWx1ZSB3aXRoXG4gICAgfCBOb25lIC0+IFtdXG4gICAgfCBTb21lIHZhbHVlIC0+XG4gICAgICBpZiBMaXN0Lm1lbSBrZXkgbGV2ZWwgdGhlblxuICAgICAgICBbIHZhbHVlIF1cbiAgICAgIGVsc2VcbiAgICAgICAgW11cbiAgaW5cbiAgZXh0cmFjdCBcImRlYnVnXCIgZGVidWcgQCBleHRyYWN0IFwiaW5mb1wiIGluZm8gQCBleHRyYWN0IFwibm90aWNlXCIgbm90aWNlXG4gIEAgZXh0cmFjdCBcIndhcm5pbmdcIiB3YXJuaW5nIEAgZXh0cmFjdCBcImVycm9yXCIgZXJyb3IgQCBleHRyYWN0IFwiZmF0YWxcIiBmYXRhbFxuICBAIFtdXG5cbmxldCBmZWF0dXJlcyA/KGRlZmF1bHQgPSBbXSkgKG9wdGlvbnMgOiAoc3RyaW5nICogJ2EpIGxpc3QpIDogJ2EgbGlzdCA9XG4gIGxldCBmZWF0dXJlcyA6IHN0cmluZyBsaXN0ID0gYXJndW1lbnRzIFwiZmVhdHVyZVwiIGluXG4gIGxldCBtYXRjaGVzIDogJ2EgbGlzdCA9XG4gICAgTGlzdC5tYXAgc25kXG4gICAgICAoTGlzdC5maWx0ZXIgKGZ1biAoZmVhdHVyZSwgXykgLT4gTGlzdC5tZW0gZmVhdHVyZSBmZWF0dXJlcykgb3B0aW9ucylcbiAgaW5cbiAgbWF0Y2ggbWF0Y2hlcyB3aXRoXG4gIHwgW10gLT4gZGVmYXVsdFxuICB8IF8gOjogXyAtPiBtYXRjaGVzXG5cbmxldCBpbnB1dF9jaGFuZ2UgaW5wdXRfZG9tIHNpZ25hbF9oYW5kbGVyID1cbiAgaW5wdXRfZG9tIyMub25jaGFuZ2UgOj1cbiAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzaWduYWxfaGFuZGxlciAoSnMudG9fc3RyaW5nIGlucHV0X2RvbSMjLnZhbHVlKSBpblxuICAgICAgICBKcy5fdHJ1ZSlcblxubW9kdWxlIHR5cGUgTWVudSA9IHNpZ1xuICB2YWwgY29udGVudCA6XG4gICAgdW5pdCAtPlxuICAgIFs+IGBCdXR0b24gfCBgRGl2IHwgYFVsIHwgYEEgb2YgWz4gYFBDREFUQSB8IGBTcGFuIF0gXSBUeXhtbF9qcy5IdG1sNS5lbHRcbiAgICBsaXN0XG5cbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIERpdiA9IHNpZ1xuICB2YWwgaWQgOiBzdHJpbmdcbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3RcbiAgdmFsIG9ubG9hZCA6IHVuaXQgLT4gdW5pdFxuZW5kXG5cbm1vZHVsZSB0eXBlIFRhYiA9IHNpZ1xuICB2YWwgbmF2bGkgOlxuICAgIHVuaXQgLT5cbiAgICBIdG1sX3R5cGVzLmZsb3c1X3dpdGhvdXRfaW50ZXJhY3RpdmUgVHl4bWxfanMuSHRtbDUuZWx0IFJlYWN0aXZlRGF0YS5STGlzdC50XG5cbiAgdmFsIGNvbnRlbnQgOiB1bml0IC0+IEh0bWxfdHlwZXMuZGl2X2NvbnRlbnRfZnVuIFR5eG1sX2pzLkh0bWw1LmVsdCBsaXN0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIG9ucmVzaXplIDogdW5pdCAtPiB1bml0XG5lbmRcblxubW9kdWxlIHR5cGUgU3ViVGFiID0gc2lnXG4gIGluY2x1ZGUgVGFiXG5cbiAgdmFsIHBhcmVudF9oaWRlIDogdW5pdCAtPiB1bml0XG4gIHZhbCBwYXJlbnRfc2hvd24gOiB1bml0IC0+IHVuaXRcbmVuZFxuXG5tb2R1bGUgdHlwZSBQYW5lbCA9IHNpZ1xuICB2YWwgY29udGVudCA6IHVuaXQgLT4gSHRtbF90eXBlcy5kaXYgVHl4bWxfanMuSHRtbDUuZWx0XG4gIHZhbCBvbmxvYWQgOiB1bml0IC0+IHVuaXRcbiAgdmFsIG9ucmVzaXplIDogdW5pdCAtPiB1bml0XG5lbmRcblxubGV0IGlkX2RvbSAoaWQgOiBzdHJpbmcpIDogJ2EgSnMudCA9XG4gIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAoSnMuT3B0LmdldFxuICAgICAgIChkb2N1bWVudCMjZ2V0RWxlbWVudEJ5SWQgKEpzLnN0cmluZyBpZCkpXG4gICAgICAgKGZ1biAoKSAtPlxuICAgICAgICAgQ29tbW9uLnRvc3NcbiAgICAgICAgICAgKEZvcm1hdC5zcHJpbnRmIFwidWlfY29tbW9uLmlkX2RvbSA6IGNvdWxkIG5vdCBmaW5kIGlkICVzXCIgaWQpKVxuICAgICAgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpXG5cbmxldCBjcmVhdGVfbW9kYWwgfihpZCA6IHN0cmluZykgfih0aXRsZV9sYWJlbCA6IHN0cmluZylcbiAgICB+KGJvZHkgOiBbPCBIdG1sX3R5cGVzLmRpdl9jb250ZW50X2Z1biBdIEh0bWwuZWx0IEh0bWwubGlzdF93cmFwKVxuICAgIH4oc3VibWl0X2xhYmVsIDogc3RyaW5nKSB+KHN1Ym1pdCA6ICgnc2VsZiBKcy50LCBfIEpzLnQpIERvbS5ldmVudF9saXN0ZW5lcilcbiAgICA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgPVxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6WyBIdG1sLmFfYnV0dG9uX3R5cGUgYFN1Ym1pdDsgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tcHJpbWFyeVwiIF0gXVxuICAgICAgWyBIdG1sLnR4dCBzdWJtaXRfbGFiZWwgXVxuICBpblxuICBsZXQgZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtY29udGVudFwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1oZWFkZXJcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNsb3NlXCIgXTtcbiAgICAgICAgICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLWRpc21pc3NcIiBcIm1vZGFsXCI7XG4gICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1sYWJlbFwiIFwiQ2xvc2VcIjtcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICBIdG1sLnNwYW5cbiAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFyaWEtaGlkZGVuXCIgXCJ0cnVlXCIgXVxuICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXTtcbiAgICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIEh0bWwuaDQgWyBIdG1sLmNkYXRhIHRpdGxlX2xhYmVsIF07XG4gICAgICAgICAgXTtcbiAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsLWJvZHlcIiBdIF0gYm9keTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwibW9kYWwtZm9vdGVyXCIgXSBdXG4gICAgICAgICAgKFtcbiAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZGlzbWlzc1wiIFwibW9kYWxcIjtcbiAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgWyBIdG1sLmNkYXRhIFwiQ2FuY2VsXCIgXTtcbiAgICAgICAgICAgXVxuICAgICAgICAgIEAgWyBidXR0b24gXSk7XG4gICAgICBdXG4gIGluXG4gIGxldCAoKSA9IChUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBmb3JtKSMjLm9uc3VibWl0IDo9IHN1Ym1pdCBpblxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcIm1vZGFsXCI7IFwiZmFkZVwiIF07XG4gICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInRhYmluZGV4XCIgXCItMVwiO1xuICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwiZGlhbG9nXCI7XG4gICAgICBdXG4gICAgW1xuICAgICAgSHRtbC5kaXZcbiAgICAgICAgfmE6XG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJtb2RhbC1kaWFsb2dcIiBdO1xuICAgICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImRvY3VtZW50XCI7XG4gICAgICAgICAgXVxuICAgICAgICBbIGZvcm0gXTtcbiAgICBdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCBwcm9qZWN0X2lkX21vZGFsX2lkID0gXCJtZW51LWVkaXRvci1wcm9qZWN0LWlkLW1vZGFsXCJcblxubGV0IHByb2plY3RfaWRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcInByb2plY3QgbmV3XCI7XG4gICAgICAgIEh0bWwuYV9zaXplIDQwO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBsaV9uZXcgPSBIdG1sLmxpIFsgSHRtbC5hIFsgSHRtbC5jZGF0YSBcIk5ldyBwcm9qZWN0XCIgXSBdXG5sZXQgbGlfcHJlZnMgPSBIdG1sLmxpIChNb2RhbF9wcmVmZXJlbmNlcy5jb250ZW50ICgpKVxubGV0IHByb2plY3RfaWRfaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHByb2plY3RfaWRfaW5wdXRcblxubGV0IGNvbnRlbnQgKCkgPVxuICBIdG1sLmRpdlxuICAgIFtcbiAgICAgIFR5eG1sX2pzLlIuSHRtbDUudWxcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcIm5hdlwiOyBcIm5hdi10YWJzXCI7IFwibmF2LWp1c3RpZmllZFwiIF0gXVxuICAgICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsXG4gICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgbGV0IGFjYyA9XG4gICAgICAgICAgICAgICAgICBMaXN0LnJldl9tYXBcbiAgICAgICAgICAgICAgICAgICAgKGZ1biB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsX3Byb2plY3RfaXNfY29tcHV0aW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgIH0gLT5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlfY2xhc3MgPVxuICAgICAgICAgICAgICAgICAgICAgICAgaWZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9jdXJyZW50X2lkIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTb21lIGN1cnJlbnRfcHJvamVjdF9pZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfcHJvamVjdF9pZCA9IG1vZGVsX3Byb2plY3RfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsgXCJhY3RpdmVcIiBdXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgc3Bhbl9jbG9zZSA9XG4gICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY2xvc2VcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLmVudGl0eSBcInRpbWVzXCIgXVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHNwYW5fY2xvc2UpIyMub25jbGlja1xuICAgICAgICAgICAgICAgICAgICAgICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBldmVudCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbF9wcm9qZWN0c19jb250cm9sbGVyLmNsb3NlX3Byb2plY3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZWxfcHJvamVjdF9pZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID0gRG9tX2h0bWwuc3RvcFByb3BhZ2F0aW9uIGV2ZW50IGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSnMuX2ZhbHNlKVxuICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgbGV0IGNvbXB1dGluZyA9XG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgY2xhc3NlcyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBiIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBcImdseXBoaWNvblwiOyBcImdseXBoaWNvbi1yZWZyZXNoXCIgXVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiZ2x5cGhpY29uXCI7IFwiZ2x5cGhpY29uLW9rXCIgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lzX2NvbXB1dGluZ1xuICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzcyBjbGFzc2VzIF0gW11cbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIGxldCBhX3Byb2plY3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5hXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRpbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC5jZGF0YSAoXCIgXCIgXiBtb2RlbF9wcm9qZWN0X2lkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGFuX2Nsb3NlO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9hIGFfcHJvamVjdCkjIy5vbmNsaWNrXG4gICAgICAgICAgICAgICAgICAgICAgICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5zZXRfcHJvamVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlbF9wcm9qZWN0X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgIEh0bWwubGkgfmE6WyBIdG1sLmFfY2xhc3MgbGlfY2xhc3MgXSBbIGFfcHJvamVjdCBdKVxuICAgICAgICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2NhdGFsb2dcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIExpc3QucmV2X2FwcGVuZCBhY2MgWyBsaV9uZXc7IGxpX3ByZWZzIF0pXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpKTtcbiAgICAgIFVpX2NvbW1vbi5jcmVhdGVfbW9kYWwgfmlkOnByb2plY3RfaWRfbW9kYWxfaWQgfnRpdGxlX2xhYmVsOlwiTmV3IFByb2plY3RcIlxuICAgICAgICB+Ym9keTpcbiAgICAgICAgICBbXG4gICAgICAgICAgICBbJWh0bWxcbiAgICAgICAgICAgICAge3w8ZGl2IGNsYXNzPVwiaW5wdXQtZ3JvdXBcIj58fSBbIHByb2plY3RfaWRfaW5wdXQgXSB7fDwvZGl2Pnx9XTtcbiAgICAgICAgICBdXG4gICAgICAgIH5zdWJtaXRfbGFiZWw6XCJDcmVhdGUgUHJvamVjdFwiXG4gICAgICAgIH5zdWJtaXQ6XG4gICAgICAgICAgKERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgbGV0IHNldHRpbmdzX2NsaWVudF9pZCA6IHN0cmluZyA9XG4gICAgICAgICAgICAgICAgIEpzLnRvX3N0cmluZyBwcm9qZWN0X2lkX2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgUGFuZWxfcHJvamVjdHNfY29udHJvbGxlci5jcmVhdGVfcHJvamVjdCBzZXR0aW5nc19jbGllbnRfaWRcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIHByb2plY3RfaWRfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICBKcy5fZmFsc2UpKTtcbiAgICBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPSBNb2RhbF9wcmVmZXJlbmNlcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uXG4gICAgICAoXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKVxuICAgICAgXCJzaG93bi5icy5tb2RhbFwiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gcHJvamVjdF9pZF9pbnB1dF9kb20jI2ZvY3VzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIGxpX25ldykjIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgQ29tbW9uLm1vZGFsIH5pZDooXCIjXCIgXiBwcm9qZWN0X2lkX21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbmxldCBtb2RlbF9pbnRlcnZlbnRpb24sIHNldF9tb2RlbF9pbnRlcnZlbnRpb24gPSBSZWFjdC5TLmNyZWF0ZSBcIlwiXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyIHBhcmFtIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXJhbWV0ZXIgPVxuICB7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wbG90X3BlcmlvZCA9IHBhcmFtLlN0YXRlX3Byb2plY3QucGxvdF9wZXJpb2Q7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wYXVzZV9jb25kaXRpb24gPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnBhdXNlX2NvbmRpdGlvbjtcbiAgICBBcGlfdHlwZXNfai5zaW11bGF0aW9uX3NlZWQgPSBwYXJhbS5TdGF0ZV9wcm9qZWN0LnNlZWQ7XG4gICAgQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9zdG9yZV90cmFjZSA9IHBhcmFtLlN0YXRlX3Byb2plY3Quc3RvcmVfdHJhY2U7XG4gIH1cblxubGV0IGNvbnRpbnVlX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgcGF1c2VfY29uZGl0aW9uID1cbiAgICAgICAgbGV0IG9wZW4gU3RhdGVfcHJvamVjdCBpblxuICAgICAgICAoUmVhY3QuUy52YWx1ZSBtb2RlbCkubW9kZWxfcGFyYW1ldGVycy5wYXVzZV9jb25kaXRpb25cbiAgICAgIGluXG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX3NpbXVsYXRpb24uY29udGludWVfc2ltdWxhdGlvbiBwYXVzZV9jb25kaXRpb24pXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgcGF1c2Vfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfc2ltdWxhdGlvbi5wYXVzZV9zaW11bGF0aW9uICgpKVxuICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdClcblxubGV0IHN0b3Bfc2ltdWxhdGlvbiAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwic3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIuc3RvcFwiKSBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fIChTdGF0ZV9zaW11bGF0aW9uLnN0b3Bfc2ltdWxhdGlvbiAoKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzdGFydF9zaW11bGF0aW9uICgpID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgbGV0IHNpbXVsYXRpb25fcGFyYW1ldGVyID1cbiAgICAgICAgY3JlYXRlX3NpbXVsYXRpb25fcGFyYW1ldGVyXG4gICAgICAgICAgKFJlYWN0LlMudmFsdWUgU3RhdGVfcHJvamVjdC5tb2RlbCkuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLnN0YXJ0X3NpbXVsYXRpb24gc2ltdWxhdGlvbl9wYXJhbWV0ZXIpXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBsZXQgbW9kZWxfcGVydHVyYmF0aW9uID1cbiAgICAgICAgUmVhY3QuUy52YWx1ZSBTdGF0ZV9wZXJ0dXJiYXRpb24ubW9kZWxfaW50ZXJ2ZW50aW9uXG4gICAgICBpblxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCBfX0xPQ19fXG4gICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmludGVydmVuZV9zaW11bGF0aW9uIG1vZGVsX3BlcnR1cmJhdGlvbilcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biB0ZXh0IC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgU3RhdGVfZXJyb3IuYWRkX2Vycm9yIF9fTE9DX19cbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5JbmZvO1xuICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gTm9uZTtcbiAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC50ZXh0O1xuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgICAgICB+ZXJyb3I6KGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCkpXG5cbmxldCBmb2N1c19yYW5nZSAocmFuZ2UgOiBMb2MudCkgOiB1bml0ID1cbiAgbGV0IGZpbGVfaWQgPSByYW5nZS5Mb2MuZmlsZSBpblxuICBsZXQgbGluZSA9IHJhbmdlLkxvYy5mcm9tX3Bvc2l0aW9uLkxvYy5saW5lIGluXG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIF9fTE9DX19cbiAgICAgICAgKFN0YXRlX2ZpbGUuc2VsZWN0X2ZpbGUgZmlsZV9pZCAoU29tZSBsaW5lKSlcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzaW11bGF0aW9uX3RyYWNlICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGRhdGFfc3RyaW5nIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIGRhdGFfc3RyaW5nIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCJcbiAgICAgICAgICAgICAgICAgIH5maWxlbmFtZTpcInRyYWNlLmpzb25cIlxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgc2ltdWxhdGlvbl9vdXRwdXRzICgpID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gbWFuYWdlciNzaW11bGF0aW9uX291dHB1dHNfemlwXG4gICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gZGF0YV9iaWdzdHJpbmcgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBUeXBlZF9hcnJheS5CaWdzdHJpbmcudG9fYXJyYXlCdWZmZXIgZGF0YV9iaWdzdHJpbmcgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi96aXBcIlxuICAgICAgICAgICAgICAgICAgfmZpbGVuYW1lOlwic2ltdWxhdGlvbl9vdXRwdXRzLnppcFwiXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxub3BlbiBMaXN0X3V0aWwuSW5maXhcblxubGV0IHZpc2libGVfb25fc3RhdGVzID8oYV9jbGFzcyA9IFtdKVxuICAgIChzdGF0ZSA6IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc3RhdGUgbGlzdCkgOiBzdHJpbmcgbGlzdCBSZWFjdC5zaWduYWwgPVxuICBsZXQgaGlkZGVuX2NsYXNzID0gWyBcImhpZGRlblwiIF0gaW5cbiAgbGV0IHZpc2libGVfY2xhc3MgPSBbIFwidmlzaWJsZVwiIF0gaW5cbiAgUmVhY3QuUy5iaW5kIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgKGZ1biBtb2RlbCAtPlxuICAgICAgbGV0IGN1cnJlbnRfc3RhdGUgPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwgaW5cbiAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgKGlmIExpc3QubWVtIGN1cnJlbnRfc3RhdGUgc3RhdGUgdGhlblxuICAgICAgICAgICBhX2NsYXNzIEAgdmlzaWJsZV9jbGFzc1xuICAgICAgICAgZWxzZVxuICAgICAgICAgICBhX2NsYXNzIEAgaGlkZGVuX2NsYXNzKSlcblxubW9kdWxlIEZvcm1QZXJ0dXJiYXRpb24gOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGVydHVyYmF0aW9uXCJcblxuICBsZXQgaW5wdXQgPVxuICAgIEh0bWwuaW5wdXRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFRleHQ7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcIlNpbXVsYXRpb24gUGVydHVyYmF0aW9uXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGJ1dHRvbiA9XG4gICAgSHRtbC5idXR0b25cbiAgICAgIH5hOlsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQ7IEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImludGVydmVudGlvblwiIF1cblxuICBsZXQgZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImZvcm0taG9yaXpvbnRhbFwiIF1cbiAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuZGl2IH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMTBcIjsgXCJjb2wteHMtOVwiIF0gXSBbIGlucHV0IF07XG4gICAgICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtM1wiIF0gXSBbIGJ1dHRvbiBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgPSBbIGZvcm0gXVxuXG4gIGxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgICBsZXQgZm9ybV9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfZm9ybSBmb3JtIGluXG4gICAgbGV0IGlucHV0X2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dCBpblxuICAgIGxldCBoYW5kbGVyIF8gPVxuICAgICAgbGV0IG1vZGVsX3BlcnR1cmJhdGlvbiA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSBpblxuICAgICAgbGV0ICgpID0gU3RhdGVfcGVydHVyYmF0aW9uLnNldF9tb2RlbF9pbnRlcnZlbnRpb24gbW9kZWxfcGVydHVyYmF0aW9uIGluXG4gICAgICBKcy5fdHJ1ZVxuICAgIGluXG5cbiAgICBsZXQgKCkgPVxuICAgICAgZm9ybV9kb20jIy5vbnN1Ym1pdCA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuaW50ZXJ2ZW5lX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl9mYWxzZSlcbiAgICBpblxuICAgIGxldCAoKSA9IGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9IERvbS5oYW5kbGVyIGhhbmRsZXIgaW5cbiAgICAoKVxuZW5kXG5cbmxldCBzaWduYWxfY2hhbmdlIGlucHV0X2RvbSBzaWduYWxfaGFuZGxlciA9XG4gIGlucHV0X2RvbSMjLm9uY2hhbmdlIDo9XG4gICAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2lnbmFsX2hhbmRsZXIgKEpzLnRvX3N0cmluZyBpbnB1dF9kb20jIy52YWx1ZSkgaW5cbiAgICAgICAgSnMuX3RydWUpXG5cbm1vZHVsZSBJbnB1dFBhdXNlQ29uZGl0aW9uIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX3BhdXNlX2NvbmRpdGlvblwiXG5cbiAgbGV0IGlucHV0ID1cbiAgICBIdG1sLmlucHV0XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiW1RdID4gMTAwXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfdmFsdWVcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIG0uU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzLlN0YXRlX3Byb2plY3QucGF1c2VfY29uZGl0aW9uKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGlucHV0IF1cbiAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBpbnB1dFxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCAoKSA9XG4gICAgICBzaWduYWxfY2hhbmdlIGRvbSAoZnVuIHZhbHVlIC0+XG4gICAgICAgICAgbGV0IHYnID1cbiAgICAgICAgICAgIGlmIHZhbHVlID0gXCJcIiB0aGVuXG4gICAgICAgICAgICAgIFwiW2ZhbHNlXVwiXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgaW5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnNldF9wYXVzZV9jb25kaXRpb24gdicpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBJbnB1dFBsb3RQZXJpb2QgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGxvdF9wZXJpb2RcIlxuXG4gIGxldCBmb3JtYXRfZmxvYXRfc3RyaW5nIHZhbHVlID1cbiAgICBsZXQgbiA9IHN0cmluZ19vZl9mbG9hdCB2YWx1ZSBpblxuICAgIGxldCBsZW5ndGggPSBTdHJpbmcubGVuZ3RoIG4gaW5cbiAgICBpZiBsZW5ndGggPiAwICYmIFN0cmluZy5nZXQgbiAobGVuZ3RoIC0gMSkgPSAnLicgdGhlblxuICAgICAgbiBeIFwiMFwiXG4gICAgZWxzZVxuICAgICAgblxuXG4gIGxldCBpbnB1dCA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgTnVtYmVyO1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwidGltZSB1bml0c1wiO1xuICAgICAgICAgIEh0bWwuYV9pbnB1dF9taW4gKGBOdW1iZXIgMCk7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfdmFsdWVcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgIGZvcm1hdF9mbG9hdF9zdHJpbmdcbiAgICAgICAgICAgICAgICAgICBtLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kKVxuICAgICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgICgpXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGlucHV0IF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGlucHV0IGluXG4gICAgbGV0ICgpID1cbiAgICAgIHNpZ25hbF9jaGFuZ2UgaW5wdXRfZG9tIChmdW4gdmFsdWUgLT5cbiAgICAgICAgICBsZXQgcmVzZXRfdmFsdWUgKCkgPVxuICAgICAgICAgICAgbGV0IG9sZF92YWx1ZSA9XG4gICAgICAgICAgICAgIChSZWFjdC5TLnZhbHVlIFN0YXRlX3Byb2plY3QubW9kZWwpLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnBsb3RfcGVyaW9kXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgaW5wdXRfZG9tIyMudmFsdWUgOj0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfZmxvYXQgb2xkX3ZhbHVlKVxuICAgICAgICAgIGluXG4gICAgICAgICAgdHJ5XG4gICAgICAgICAgICBsZXQgbmV3X3ZhbHVlID0gZmxvYXRfb2Zfc3RyaW5nIHZhbHVlIGluXG4gICAgICAgICAgICBpZiBuZXdfdmFsdWUgPCAwLiB0aGVuXG4gICAgICAgICAgICAgIHJlc2V0X3ZhbHVlICgpXG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIFN0YXRlX3Byb2plY3Quc2V0X3Bsb3RfcGVyaW9kIG5ld192YWx1ZVxuICAgICAgICAgIHdpdGggTm90X2ZvdW5kIHwgRmFpbHVyZSBfIC0+IHJlc2V0X3ZhbHVlICgpKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgRGl2RXJyb3JNZXNzYWdlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcImNvbmZpZ3VyYXRpb25fZXJyb3JfZGl2XCJcbiAgbGV0IG1lc3NhZ2VfbmF2X2luY19pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9uYXZfaW5jX2lkXCJcbiAgbGV0IG1lc3NhZ2VfbmF2X2RlY19pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9uYXZfZGVjX2lkXCJcbiAgbGV0IG1lc3NhZ2VfZmlsZV9sYWJlbF9pZCA9IFwicGFuZWxfc2V0dGluZ3NfbWVzc2FnZV9maWxlX2xhYmVsXCJcbiAgbGV0IGVycm9yX2luZGV4ID0gSG9va2VkLlMuY3JlYXRlIE5vbmVcblxuICBsZXQgKCkgPVxuICAgIEhvb2tlZC5TLnJlZ2lzdGVyIFN0YXRlX2Vycm9yLmVycm9ycyAoZnVuY3Rpb25cbiAgICAgIHwgW10gLT4gKClcbiAgICAgIHwgXyA6OiBfIC0+XG4gICAgICAgIChtYXRjaCBIb29rZWQuUy52IGVycm9yX2luZGV4IHdpdGhcbiAgICAgICAgfCBOb25lIC0+IEhvb2tlZC5TLnNldCBlcnJvcl9pbmRleCAoU29tZSAwKVxuICAgICAgICB8IFNvbWUgXyAtPiAoKSkpXG5cbiAgKCogaWYgdGhlcmUgYXJlIGxlc3Mgb3Igbm8gZXJyb3JzIHRoZSBpbmRleCBuZWVkcyB0byBiZSB1cGRhdGVkICopXG4gIGxldCBzYW5pdGl6ZV9pbmRleCAoaW5kZXggOiBpbnQgb3B0aW9uKSBlcnJvcnMgOiBpbnQgb3B0aW9uID1cbiAgICBtYXRjaCBpbmRleCwgZXJyb3JzIHdpdGhcbiAgICB8IE5vbmUsIFtdIC0+IE5vbmVcbiAgICB8IE5vbmUsIF8gOjogXyAtPiBTb21lIDBcbiAgICB8IFNvbWUgXywgW10gLT4gTm9uZVxuICAgIHwgU29tZSBpbmRleCwgZXJyb3IgLT5cbiAgICAgIGxldCBsZW5ndGggPSBMaXN0Lmxlbmd0aCBlcnJvciBpblxuICAgICAgaWYgaW5kZXggPiBsZW5ndGggdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IEhvb2tlZC5TLnNldCBlcnJvcl9pbmRleCAoU29tZSAwKSBpblxuICAgICAgICBTb21lIDBcbiAgICAgICkgZWxzZSBpZiAwID4gaW5kZXggdGhlbiAoXG4gICAgICAgIGxldCBpbmRleCA9IFNvbWUgKExpc3QubGVuZ3RoIGVycm9yIC0gMSkgaW5cbiAgICAgICAgbGV0ICgpID0gSG9va2VkLlMuc2V0IGVycm9yX2luZGV4IGluZGV4IGluXG4gICAgICAgIGluZGV4XG4gICAgICApIGVsc2VcbiAgICAgICAgU29tZSBpbmRleFxuXG4gIGxldCBnZXRfbWVzc2FnZSAoaW5kZXggOiBpbnQgb3B0aW9uKSBlcnJvcnMgOiBBcGlfdHlwZXNfdC5tZXNzYWdlIG9wdGlvbiA9XG4gICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgKGZ1biBuIC0+IFNvbWUgKExpc3QubnRoIGVycm9ycyBuKSlcbiAgICAgIChzYW5pdGl6ZV9pbmRleCBpbmRleCBlcnJvcnMpXG5cbiAgbGV0IG1lc3NhZ2VfbmF2X3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbWF0Y2ggaW5kZXgsIGVycm9yIHdpdGhcbiAgICAgICAgfCBOb25lLCBbXSAtPiBcIlwiXG4gICAgICAgIHwgU29tZSBfLCBbXSAtPiBcIlwiXG4gICAgICAgIHwgTm9uZSwgXyA6OiBfIC0+IFwiXCJcbiAgICAgICAgfCBTb21lIGluZGV4LCAoXyA6OiBfIGFzIGVycm9ycykgLT5cbiAgICAgICAgICBGb3JtYXQuc3ByaW50ZiBcIiVkLyVkXCIgKGluZGV4ICsgMSkgKExpc3QubGVuZ3RoIGVycm9ycykpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIGVycm9yX2luZGV4KVxuICAgICAgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpXG5cbiAgbGV0IGFfY2xhc3MgPVxuICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAoUmVhY3QuUy5iaW5kIChIb29rZWQuUy50b19yZWFjdF9zaWduYWwgU3RhdGVfZXJyb3IuZXJyb3JzKSAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAobWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBbIFwiaGlkZVwiIF1cbiAgICAgICAgICAgICB8IF8gOjogXyA6OiBfIC0+IFsgXCJlcnJvci1zcGFuXCI7IFwiY2xpY2thYmxlXCIgXSkpKVxuXG4gIGxldCBtZXNzYWdlX25hdl9kZWMgPVxuICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9pZCBtZXNzYWdlX25hdl9kZWNfaWQ7IGFfY2xhc3MgXSBbIEh0bWwudHh0IFwiIMKrIFwiIF1cblxuICBsZXQgbWVzc2FnZV9uYXZfaW5jID1cbiAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfaWQgbWVzc2FnZV9uYXZfaW5jX2lkOyBhX2NsYXNzIF0gWyBIdG1sLnR4dCBcIiDCuyBcIiBdXG5cbiAgbGV0IG1lc3NhZ2VfbmF2ID1cbiAgICBbIG1lc3NhZ2VfbmF2X2RlYzsgVHl4bWxfanMuUi5IdG1sLnR4dCBtZXNzYWdlX25hdl90ZXh0OyBtZXNzYWdlX25hdl9pbmMgXVxuXG4gIGxldCBmaWxlX2xhYmVsX3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAoZnVuIG1lc3NhZ2UgLT4gbWVzc2FnZS5SZXN1bHRfdXRpbC5yYW5nZSlcbiAgICAgICAgICAgIChnZXRfbWVzc2FnZSBpbmRleCBlcnJvcilcbiAgICAgICAgaW5cbiAgICAgICAgbWF0Y2ggcmFuZ2Ugd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgcmFuZ2UgLT4gRm9ybWF0LnNwcmludGYgXCJbJXNdXCIgcmFuZ2UuTG9jLmZpbGUpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIGVycm9yX2luZGV4KVxuICAgICAgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpXG5cbiAgbGV0IGZpbGVfbGFiZWwgPVxuICAgIEh0bWwuc3BhblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgbWVzc2FnZV9maWxlX2xhYmVsX2lkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZXJyb3Itc3BhblwiOyBcImNsaWNrYWJsZVwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgVHl4bWxfanMuUi5IdG1sLnR4dCBmaWxlX2xhYmVsX3RleHQgXVxuXG4gIGxldCBlcnJvcl9tZXNzYWdlX3RleHQgPVxuICAgIFJlYWN0LlMubDJcbiAgICAgIChmdW4gaW5kZXggZXJyb3IgLT5cbiAgICAgICAgbWF0Y2ggZ2V0X21lc3NhZ2UgaW5kZXggZXJyb3Igd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICB8IFNvbWUgbWVzc2FnZSAtPiBGb3JtYXQuc3ByaW50ZiBcIiAlcyBcIiBtZXNzYWdlLlJlc3VsdF91dGlsLnRleHQpXG4gICAgICAoSG9va2VkLlMudG9fcmVhY3Rfc2lnbmFsIGVycm9yX2luZGV4KVxuICAgICAgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpXG5cbiAgbGV0IGVycm9yX21lc3NhZ2UgPVxuICAgIEh0bWwuc3BhblxuICAgICAgfmE6WyBIdG1sLmFfaWQgaWQ7IEh0bWwuYV9jbGFzcyBbIFwiZXJyb3Itc3BhblwiIF0gXVxuICAgICAgWyBUeXhtbF9qcy5SLkh0bWwudHh0IGVycm9yX21lc3NhZ2VfdGV4dCBdXG5cbiAgbGV0IGFsZXJ0X21lc3NhZ2VzID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgKEhvb2tlZC5TLnRvX3JlYWN0X3NpZ25hbCBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICAgICAoZnVuIGVycm9yIC0+XG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgICAobWF0Y2ggZXJyb3Igd2l0aFxuICAgICAgICAgICAgICAgICAgIHwgW10gLT4gWyBcImFsZXJ0LXNtXCI7IFwiYWxlcnRcIiBdXG4gICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT4gWyBcImFsZXJ0LXNtXCI7IFwiYWxlcnRcIjsgXCJhbGVydC1kYW5nZXJcIiBdKSkpO1xuICAgICAgICBdXG4gICAgICAobWVzc2FnZV9uYXYgQCBbIGZpbGVfbGFiZWw7IGVycm9yX21lc3NhZ2UgXSlcblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9XG4gICAgWyBhbGVydF9tZXNzYWdlcyBdXG5cbiAgbGV0IGZpbGVfY2xpY2tfaGFuZGxlciAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIGZpbGVfbGFiZWwgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIFwiZmlsZV9jbGlja19oYW5kbGVyXCIpIGluXG4gICAgICAgICAgICBsZXQgbWVzc2FnZSA6IEFwaV90eXBlc190Lm1lc3NhZ2Ugb3B0aW9uID1cbiAgICAgICAgICAgICAgZ2V0X21lc3NhZ2VcbiAgICAgICAgICAgICAgICAoSG9va2VkLlMudiBlcnJvcl9pbmRleClcbiAgICAgICAgICAgICAgICAoSG9va2VkLlMudiBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IHJhbmdlID1cbiAgICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgIChmdW4gbWVzc2FnZSAtPiBtZXNzYWdlLlJlc3VsdF91dGlsLnJhbmdlKVxuICAgICAgICAgICAgICAgIG1lc3NhZ2VcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBtYXRjaCByYW5nZSB3aXRoXG4gICAgICAgICAgICAgIHwgU29tZSByYW5nZSAtPiBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLmZvY3VzX3JhbmdlIHJhbmdlXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcblxuICBsZXQgaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gZGVsdGEgPVxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgXCJpbmRleF9jbGlja19oYW5kbGVyXCIpIGluXG4gICAgICAgICAgICBsZXQgaW5kZXggOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICAgc2FuaXRpemVfaW5kZXhcbiAgICAgICAgICAgICAgICAoSG9va2VkLlMudiBlcnJvcl9pbmRleClcbiAgICAgICAgICAgICAgICAoSG9va2VkLlMudiBTdGF0ZV9lcnJvci5lcnJvcnMpXG4gICAgICAgICAgICBpblxuICAgICAgICAgICAgbGV0IGluZGV4ID0gT3B0aW9uX3V0aWwubWFwIGRlbHRhIGluZGV4IGluXG4gICAgICAgICAgICBsZXQgaW5kZXggOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICAgc2FuaXRpemVfaW5kZXggaW5kZXggKEhvb2tlZC5TLnYgU3RhdGVfZXJyb3IuZXJyb3JzKVxuICAgICAgICAgICAgaW5cbiAgICAgICAgICAgIGxldCAoKSA9IEhvb2tlZC5TLnNldCBlcnJvcl9pbmRleCBpbmRleCBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuXG4gIGxldCBpbmNfY2xpY2tfaGFuZGxlciAoKSA9XG4gICAgbGV0IGRvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9zcGFuIG1lc3NhZ2VfbmF2X2RlYyBpblxuICAgIGxldCAoKSA9IGluZGV4X2NsaWNrX2hhbmRsZXIgZG9tIChmdW4gaW5kZXggLT4gaW5kZXggKyAxKSBpblxuICAgICgpXG5cbiAgbGV0IGRlY19jbGlja19oYW5kbGVyICgpID1cbiAgICBsZXQgZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX3NwYW4gbWVzc2FnZV9uYXZfaW5jIGluXG4gICAgbGV0ICgpID0gaW5kZXhfY2xpY2tfaGFuZGxlciBkb20gKGZ1biBpbmRleCAtPiBpbmRleCAtIDEpIGluXG4gICAgKClcblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgKCkgPSBmaWxlX2NsaWNrX2hhbmRsZXIgKCkgaW5cbiAgICBsZXQgKCkgPSBpbmNfY2xpY2tfaGFuZGxlciAoKSBpblxuICAgIGxldCAoKSA9IGRlY19jbGlja19oYW5kbGVyICgpIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uU3RhcnQgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3Nfc3RhcnRfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2Rpc2FibGVkICgpKVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgICAgICAgfCB7XG4gICAgICAgICAgICAgICAgICAgICBTdGF0ZV9maWxlLmN1cnJlbnQgPSBTb21lIHsgU3RhdGVfZmlsZS5vdXRfb2Zfc3luYzsgXyB9O1xuICAgICAgICAgICAgICAgICAgICAgXztcbiAgICAgICAgICAgICAgICAgICB9IC0+XG4gICAgICAgICAgICAgICAgICAgb3V0X29mX3N5bmNcbiAgICAgICAgICAgICAgICAgfCBfIC0+IGZhbHNlKVxuICAgICAgICAgICAgICAgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcInN0YXJ0XCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBzdGFydF9idXR0b25fZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBidXR0b24gaW5cbiAgICBsZXQgKCkgPVxuICAgICAgc3RhcnRfYnV0dG9uX2RvbSMjLm9uY2xpY2sgOj1cbiAgICAgICAgRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICBsZXQgKCkgPSBQYW5lbF9zZXR0aW5nc19jb250cm9sbGVyLnN0YXJ0X3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25DbGVhciA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJwYW5lbF9zZXR0aW5nc19jbGVhcl9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG5cIjsgXCJidG4tZGVmYXVsdFwiIF07XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC5jZGF0YSBcImNsZWFyXCIgXVxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID0gWyBidXR0b24gXVxuXG4gIGxldCBvbmxvYWQgKCkgPVxuICAgIGxldCBkb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5zdG9wX3NpbXVsYXRpb24gKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uUGF1c2UgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfcGF1c2VfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJwYXVzZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5wYXVzZV9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIEJ1dHRvblRyYWNlIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX2dldF90cmFjZV9idXR0b25cIlxuXG4gIGxldCBidXR0b24gPVxuICAgIEh0bWwuYnV0dG9uXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBpZDtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgICAgKGlmXG4gICAgICAgICAgICAgICAgICAgIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVyc1xuICAgICAgICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlXG4gICAgICAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIFsgXCJkaXNhYmxlZFwiIF0pXG4gICAgICAgICAgICAgICAgIEAgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXSlcbiAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJnZXQgdHJhY2VcIiBdXG5cbiAgbGV0IGNvbnRlbnQgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWwuZWx0IGxpc3QgPSBbIGJ1dHRvbiBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9XG4gICAgbGV0IGJ1dHRvbl9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIGJ1dHRvbiBpblxuICAgIGxldCAoKSA9XG4gICAgICBidXR0b25fZG9tIyMub25jbGljayA6PVxuICAgICAgICBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3NldHRpbmdzX2NvbnRyb2xsZXIuc2ltdWxhdGlvbl90cmFjZSAoKSBpblxuICAgICAgICAgICAgSnMuX3RydWUpXG4gICAgaW5cbiAgICAoKVxuZW5kXG5cbm1vZHVsZSBCdXR0b25PdXRwdXRzIDogVWlfY29tbW9uLkRpdiA9IHN0cnVjdFxuICBsZXQgaWQgPSBcInBhbmVsX3NldHRpbmdzX291dHB1dHNfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJBbGwgb3V0cHV0c1wiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5zaW11bGF0aW9uX291dHB1dHMgKCkgaW5cbiAgICAgICAgICAgIEpzLl90cnVlKVxuICAgIGluXG4gICAgKClcbmVuZFxuXG5tb2R1bGUgQnV0dG9uQ29udGludWUgOiBVaV9jb21tb24uRGl2ID0gc3RydWN0XG4gIGxldCBpZCA9IFwicGFuZWxfc2V0dGluZ3NfY29udGludWVfYnV0dG9uXCJcblxuICBsZXQgYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgaWQ7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJjb250aW51ZVwiIF1cblxuICBsZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbC5lbHQgbGlzdCA9IFsgYnV0dG9uIF1cblxuICBsZXQgb25sb2FkICgpID1cbiAgICBsZXQgYnV0dG9uX2RvbSA9IFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gYnV0dG9uIGluXG4gICAgbGV0ICgpID1cbiAgICAgIGJ1dHRvbl9kb20jIy5vbmNsaWNrIDo9XG4gICAgICAgIERvbS5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3NfY29udHJvbGxlci5jb250aW51ZV9zaW11bGF0aW9uICgpIGluXG4gICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgICBpblxuICAgICgpXG5lbmRcblxubW9kdWxlIERpdlN0YXR1c0luZGljYXRvciA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJzZXR0aW5nX3N0YXR1c19pbmRpY2F0b3JcIlxuXG4gIGxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBsZXQgZGVidWcgPVxuICAgICAgSHRtbC5kaXZcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgIGxldCBsYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zdGF0ZV90b19zdHJpbmdcbiAgICAgICAgICAgICAgICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25fc3RhdGUgbW9kZWwpXG4gICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3QgbGFiZWwpKTtcbiAgICAgICAgXVxuICAgIGluXG4gICAgWyBIdG1sLmRpdiB+YTpbIEh0bWwuYV9pZCBpZCBdIChVaV9jb21tb24ubGV2ZWwgfmRlYnVnICgpKSBdXG5cbiAgbGV0IG9ubG9hZCAoKSA9ICgpXG5lbmRcblxubW9kdWxlIFJ1bm5pbmdQYW5lbExheW91dCA6IFVpX2NvbW1vbi5EaXYgPSBzdHJ1Y3RcbiAgbGV0IGlkID0gXCJzZXR0aW5nc19ydW5ldGltZV9sYXlvdXRcIlxuXG4gIGxldCBwcm9ncmVzc19iYXIgKHBlcmNlbnRfc2lnbmFsIDogaW50IFR5eG1sX2pzLlIuSHRtbC53cmFwKVxuICAgICAgKHZhbHVlX3NpZ25hbCA6IHN0cmluZyBSZWFjdC5zaWduYWwpID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwicHJvZ3Jlc3NiYXJcIjtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuVW5zYWZlLmludF9hdHRyaWIgXCJhcmlhLXZhbHVlbm93XCIgcGVyY2VudF9zaWduYWw7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuaW50X2F0dHJpYiBcImFyaWEtdmFsdWVtaW5cIiAwO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLmludF9hdHRyaWIgXCJhcmlhLXZhbHVlbWF4XCIgMTAwO1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInN0eWxlXCJcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBzIC0+IEZvcm1hdC5zcHJpbnRmIFwid2lkdGg6ICVkJSU7XCIgcylcbiAgICAgICAgICAgICAgIHBlcmNlbnRfc2lnbmFsKTtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcInByb2dyZXNzLWJhclwiIF07XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgICAgICAgIChSZWFjdC5TLmJpbmQgdmFsdWVfc2lnbmFsIChmdW4gdmFsdWUgLT4gUmVhY3QuUy5jb25zdCB2YWx1ZSkpO1xuICAgICAgXVxuXG4gIGxldCB0aW1lX3Byb2dyZXNzX2JhciAoKSA9XG4gICAgcHJvZ3Jlc3NfYmFyXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCB0aW1lX3BlcmNlbnQgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgICAgICAgICAoZnVuIChzdGF0dXMgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8pIC0+XG4gICAgICAgICAgICAgICAgIHN0YXR1cy5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190aW1lX3BlcmNlbnRhZ2UpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHRpbWVfcGVyY2VudCA6IGludCA9IE9wdGlvbl91dGlsLnVuc29tZSAxMDAgdGltZV9wZXJjZW50IGluXG4gICAgICAgICAgIHRpbWVfcGVyY2VudClcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCB0aW1lIDogZmxvYXQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX3RpbWUpXG4gICAgICAgICAgICAgICBzaW11bGF0aW9uX2luZm9cbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0IHRpbWUgOiBmbG9hdCA9IE9wdGlvbl91dGlsLnVuc29tZSAwLjAgdGltZSBpblxuICAgICAgICAgICBzdHJpbmdfb2ZfZmxvYXQgdGltZSlcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IGV2ZW50X3Byb2dyZXNzX2JhciAoKSA9XG4gICAgcHJvZ3Jlc3NfYmFyXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIGxldCBldmVudF9wZXJjZW50YWdlIDogaW50IG9wdGlvbiA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwuYmluZFxuICAgICAgICAgICAgICAgKGZ1biAoc3RhdHVzIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvKSAtPlxuICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfZXZlbnRfcGVyY2VudGFnZSlcbiAgICAgICAgICAgICAgIHNpbXVsYXRpb25faW5mb1xuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgZXZlbnRfcGVyY2VudGFnZSA6IGludCA9XG4gICAgICAgICAgICAgT3B0aW9uX3V0aWwudW5zb21lIDEwMCBldmVudF9wZXJjZW50YWdlXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGV2ZW50X3BlcmNlbnRhZ2UpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgICBsZXQgZXZlbnQgOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICAgICAgICAgc3RhdHVzLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19wcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX3Byb2dyZXNzX2V2ZW50KVxuICAgICAgICAgICAgICAgc2ltdWxhdGlvbl9pbmZvXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBldmVudCA6IGludCA9IE9wdGlvbl91dGlsLnVuc29tZSAwIGV2ZW50IGluXG4gICAgICAgICAgIHN0cmluZ19vZl9pbnQgZXZlbnQpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCB0cmFja2VkX2V2ZW50cyBzdGF0ZSA9XG4gICAgbGV0IHRyYWNrZWRfZXZlbnRzIDogaW50IG9wdGlvbiA9XG4gICAgICBPcHRpb25fdXRpbC5iaW5kXG4gICAgICAgIChmdW4gKHN0YXR1cyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgLT5cbiAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc190cmFja2VkX2V2ZW50cylcbiAgICAgICAgc3RhdGVcbiAgICBpblxuICAgIG1hdGNoIHRyYWNrZWRfZXZlbnRzIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSB0cmFja2VkX2V2ZW50cyAtPlxuICAgICAgaWYgdHJhY2tlZF9ldmVudHMgPiAwIHRoZW5cbiAgICAgICAgU29tZSB0cmFja2VkX2V2ZW50c1xuICAgICAgZWxzZVxuICAgICAgICBOb25lXG5cbiAgbGV0IHRyYWNrZWRfZXZlbnRzX2NvdW50ICgpID1cbiAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIG1hdGNoIHRyYWNrZWRfZXZlbnRzIHNpbXVsYXRpb25faW5mbyB3aXRoXG4gICAgICAgICAgIHwgU29tZSB0cmFja2VkX2V2ZW50cyAtPiBzdHJpbmdfb2ZfaW50IHRyYWNrZWRfZXZlbnRzXG4gICAgICAgICAgIHwgTm9uZSAtPiBcIiBcIilcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpXG5cbiAgbGV0IHRyYWNrZWRfZXZlbnRzX2xhYmVsICgpID1cbiAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9IFN0YXRlX3NpbXVsYXRpb24ubW9kZWxfc2ltdWxhdGlvbl9pbmZvIG1vZGVsIGluXG4gICAgICAgICAgIG1hdGNoIHRyYWNrZWRfZXZlbnRzIHNpbXVsYXRpb25faW5mbyB3aXRoXG4gICAgICAgICAgIHwgU29tZSBfIC0+IFwidHJhY2tlZCBldmVudHNcIlxuICAgICAgICAgICB8IE5vbmUgLT4gXCIgXCIpXG4gICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG4gIGxldCBlZmZpY2llbmN5X2RldGFpbCB+Y3VycmVudF9ldmVudCB0ID1cbiAgICBsZXQgYWxsID1cbiAgICAgIGZsb2F0X29mX2ludFxuICAgICAgICAodC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnlcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfdW5hcnlcbiAgICAgICArIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlXG4gICAgICAgKyB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb24pXG4gICAgaW5cbiAgICBsZXQgZXZlbnRzID0gZmxvYXRfb2ZfaW50IGN1cnJlbnRfZXZlbnQgaW5cbiAgICBIdG1sLnBcbiAgICAgIFtcbiAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslLjJmJSUgb2YgZXZlbnQgbG9vcHMgd2VyZSBwcm9kdWN0aXZlLiV0QF1cIlxuICAgICAgICAgICAgICgxMDAuICouIGV2ZW50cyAvLiAoYWxsICsuIGV2ZW50cykpXG4gICAgICAgICAgICAgKGZ1biBmIC0+IGlmIGFsbCA+IDAuIHRoZW4gRm9ybWF0LmZwcmludGYgZiBcIkAgTnVsbCBldmVudCBjYXVzZTpcIikpO1xuICAgICAgXVxuICAgIDo6ICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV91bmFyeSA+IDAgdGhlblxuICAgICAgICAgICBTb21lXG4gICAgICAgICAgICAgKEh0bWwucFxuICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgIEh0bWwudHh0XG4gICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGZcbiAgICAgICAgICAgICAgICAgICAgICAgXCJWYWxpZCBlbWJlZGRpbmcgYnV0IG5vIGxvbmdlciB1bmFyeSB3aGVuIHJlcXVpcmVkOiBcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJS4yZiUlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgKDEwMC5cbiAgICAgICAgICAgICAgICAgICAgICAgKi4gZmxvYXRfb2ZfaW50IHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfdW5hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgXSlcbiAgICAgICAgIGVsc2VcbiAgICAgICAgICAgTm9uZSlcbiAgICAgICAkJCAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5Lm5vX21vcmVfYmluYXJ5ID4gMCB0aGVuXG4gICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICBcIlZhbGlkIGVtYmVkZGluZyBidXQgbm90IGJpbmFyeSB3aGVuIHJlcXVpcmVkOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnQgdC5Db3VudGVyLkVmZmljaWVuY3kubm9fbW9yZV9iaW5hcnlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAkJCAoKGlmIHQuQ291bnRlci5FZmZpY2llbmN5LmNsYXNoaW5nX2luc3RhbmNlID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkNsYXNoaW5nIGluc3RhbmNlOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LkNvdW50ZXIuRWZmaWNpZW5jeS5jbGFzaGluZ19pbnN0YW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLiBhbGwpKTtcbiAgICAgICAgICAgICAgICAgICAgICBdKVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBOb25lKVxuICAgICAgICAgICAgICQkICgoaWYgdC5Db3VudGVyLkVmZmljaWVuY3kudGltZV9jb3JyZWN0aW9uID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgICAgICAgICAgICAoSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlBlcnR1cmJhdGlvbiBpbnRlcnJ1cHRpbmcgdGltZSBhZHZhbmNlOiAlLjJmJSVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMTAwLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLiBmbG9hdF9vZl9pbnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0LkNvdW50ZXIuRWZmaWNpZW5jeS50aW1lX2NvcnJlY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy4gYWxsKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgTm9uZSlcbiAgICAgICAgICAgICAgICAkJCBbXSkpKSlcblxuICBsZXQgZG9udF9nY19tZSA9IHJlZiBbXVxuXG4gIGxldCBjb250ZW50ICgpIDogSHRtbF90eXBlcy5kaXZfY29udGVudCBUeXhtbF9qcy5IdG1sLmVsdCBsaXN0ID1cbiAgICBsZXQgc3RhdGVfbG9nLCBzZXRfc3RhdGVfbG9nID0gUmVhY3RpdmVEYXRhLlJMaXN0LmNyZWF0ZSBbXSBpblxuICAgIGxldCAoKSA9XG4gICAgICBkb250X2djX21lIDo9XG4gICAgICAgIFtcbiAgICAgICAgICBMd3RfcmVhY3QuUy5tYXBfc1xuICAgICAgICAgICAgKGZ1biBfIC0+XG4gICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBzdGF0dXMgLT5cbiAgICAgICAgICAgICAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9lZmZpY2llbmN5XG4gICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3Qgfm9rOihmdW4gZWZmIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBjdXJyZW50X2V2ZW50ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvX3Byb2dyZXNzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9wcm9ncmVzc19ldmVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWN0aXZlRGF0YS5STGlzdC5zZXQgc2V0X3N0YXRlX2xvZ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGVmZmljaWVuY3lfZGV0YWlsIH5jdXJyZW50X2V2ZW50IGVmZilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcbiAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT5cbiAgICAgICAgICAgICAgICAgIGxldCAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5zZXQgc2V0X3N0YXRlX2xvZyBbXSBpblxuICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICgpKVxuICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbDtcbiAgICAgICAgXVxuICAgIGluXG5cbiAgICBbXG4gICAgICBbJWh0bWxcbiAgICAgICAge3xcbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiIGlkPVwifH1cbiAgICAgICAgICBpZFxuICAgICAgICAgIHt8XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtNVwiPlxuICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wteHMtOVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2dyZXNzXCI+XG4gICAgICAgICAgICB8fVxuICAgICAgICAgIFsgZXZlbnRfcHJvZ3Jlc3NfYmFyICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTNcIj5ldmVudHM8L2Rpdj5cbiAgICAgPC9kaXY+XG4gICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy05XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZ3Jlc3NcIj5cbiAgICAgICAgICAgIHx9XG4gICAgICAgICAgWyB0aW1lX3Byb2dyZXNzX2JhciAoKSBdXG4gICAgICAgICAge3xcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0zXCI+dGltZTwvZGl2PlxuICAgICA8L2Rpdj5cbiAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLXhzLTlcIj5cbiAgICAgICAgICAgfH1cbiAgICAgICAgICBbIHRyYWNrZWRfZXZlbnRzX2NvdW50ICgpIF1cbiAgICAgICAgICB7fFxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC14cy0zXCI+XG4gICAgICAgICAgIHx9XG4gICAgICAgICAgWyB0cmFja2VkX2V2ZW50c19sYWJlbCAoKSBdXG4gICAgICAgICAge3xcbiAgICAgICAgPC9kaXY+XG4gICAgIDwvZGl2PlxuPC9kaXY+XG48ZGl2IGNsYXNzPVwidmlzaWJsZS1tZC1ibG9jayB2aXNpYmxlLWxnLWJsb2NrXCI+XG58fVxuICAgICAgICAgIFsgVHl4bWxfanMuUi5IdG1sLmRpdiBzdGF0ZV9sb2cgXVxuICAgICAgICAgIHt8XG48L2Rpdj5cbjwvZGl2PlxuICAgfH1dO1xuICAgIF1cblxuICBsZXQgb25sb2FkICgpID0gKClcbmVuZFxuXG5sZXQgc3RvcHBlZF9ib2R5ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBUeXhtbF9qcy5IdG1sNS5lbHQgPVxuICBsZXQgc3RvcHBlZF9yb3cgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJmb3JtLWdyb3VwXCI7IFwiZm9ybS1ncm91cC1zbVwiIF1cbiAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5TVE9QUEVEIF0pO1xuICAgICAgICBdXG4gICAgICBbJWh0bWxcbiAgICAgICAge3xcbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0xIGNvbC1tZC0yIGNvbC14cy0yIGNvbnRyb2wtbGFiZWxcIiBmb3I9XCJ8fVxuICAgICAgICAgIElucHV0UGxvdFBlcmlvZC5pZFxuICAgICAgICAgIHt8XCI+UGxvdCBwZXJpb2Q8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC14cy0zXCI+fH1cbiAgICAgICAgICAoSW5wdXRQbG90UGVyaW9kLmNvbnRlbnQgKCkpXG4gICAgICAgICAge3w8L2Rpdj58fV1cbiAgaW5cbiAgbGV0IHBhdXNlZF9yb3cgPSBGb3JtUGVydHVyYmF0aW9uLmNvbnRlbnQgKCkgaW5cbiAgSHRtbC5kaXZcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXNcbiAgICAgICAgICAgICB+YV9jbGFzczpbIFwicGFuZWwtYm9keVwiOyBcInBhbmVsLWNvbnRyb2xzXCIgXVxuICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5TVE9QUEVEOyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgIF1cbiAgICAoWyVodG1sXG4gICAgICAge3xcbiAgICAgICAgIDxmb3JtIGNsYXNzPVwiZm9ybS1ob3Jpem9udGFsXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNvbC1sZy0xIGNvbC1zbS0yIGhpZGRlbi14cyBjb250cm9sLWxhYmVsXCIgZm9yPVwifH1cbiAgICAgICAgIElucHV0UGF1c2VDb25kaXRpb24uaWRcbiAgICAgICAgIHt8XCI+UGF1c2UgaWY8L2xhYmVsPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0yIGNvbC1zbS0zIGNvbC14cy01XCI+fH1cbiAgICAgICAgIChJbnB1dFBhdXNlQ29uZGl0aW9uLmNvbnRlbnQgKCkpXG4gICAgICAgICB7fDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy05IGNvbC1tZC04IGNvbC14cy03XCI+fH1cbiAgICAgICAgIChEaXZFcnJvck1lc3NhZ2UuY29udGVudCAoKSlcbiAgICAgICAgIHt8PC9kaXY+XG4gICAgICAgICAgPC9kaXY+fH1cbiAgICAgICAgIFsgc3RvcHBlZF9yb3cgXSB7fDwvZm9ybT58fV1cbiAgICA6OiBwYXVzZWRfcm93KVxuXG5sZXQgaW5pdGlhbGl6aW5nX2JvZHkgKCkgOiBbPiBIdG1sX3R5cGVzLmRpdiBdIFR5eG1sX2pzLkh0bWw1LmVsdCA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzXG4gICAgICAgICAgICAgfmFfY2xhc3M6WyBcInBhbmVsLWJvZHlcIjsgXCJwYW5lbC1jb250cm9sc1wiIF1cbiAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uSU5JVEFMSVpJTkcgXSk7XG4gICAgICBdXG4gICAgWyBIdG1sLmVudGl0eSBcIm5ic3BcIiBdXG5cbmxldCBydW5uaW5nX2JvZHkgKCkgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlc1xuICAgICAgICAgICAgIH5hX2NsYXNzOlsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtY29udHJvbHNcIiBdXG4gICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlJVTk5JTkcgXSk7XG4gICAgICBdXG4gICAgKFJ1bm5pbmdQYW5lbExheW91dC5jb250ZW50ICgpKVxuXG5sZXQgZm9vdGVyICgpID1cbiAgWyVodG1sXG4gICAge3xcbiAgICAgICAgIDxkaXYgY2xhc3M9XCJwYW5lbC1mb290ZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgIHx9XG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy00XCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5TVE9QUEVEIF0pO1xuICAgICAgICAgICAgXVxuICAgICAgICAgIChCdXR0b25TdGFydC5jb250ZW50ICgpKTtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpcbiAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgICAodmlzaWJsZV9vbl9zdGF0ZXMgfmFfY2xhc3M6WyBcImNvbC1tZC0yXCI7IFwiY29sLXhzLTNcIiBdXG4gICAgICAgICAgICAgICAgICAgWyBTdGF0ZV9zaW11bGF0aW9uLlBBVVNFRCBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uQ29udGludWUuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy0zXCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvbk91dHB1dHMuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wtbWQtMlwiOyBcImNvbC14cy0zXCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQgXSk7XG4gICAgICAgICAgICBdXG4gICAgICAgICAgKEJ1dHRvblRyYWNlLmNvbnRlbnQgKCkpO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICh2aXNpYmxlX29uX3N0YXRlcyB+YV9jbGFzczpbIFwiY29sLW1kLTJcIjsgXCJjb2wteHMtNFwiIF1cbiAgICAgICAgICAgICAgICAgICBbIFN0YXRlX3NpbXVsYXRpb24uUlVOTklORyBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uUGF1c2UuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6XG4gICAgICAgICAgICBbXG4gICAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgICAgKHZpc2libGVfb25fc3RhdGVzIH5hX2NsYXNzOlsgXCJjb2wteHMtMlwiOyBcImNvbC1zbS0xXCIgXVxuICAgICAgICAgICAgICAgICAgIFsgU3RhdGVfc2ltdWxhdGlvbi5QQVVTRUQ7IFN0YXRlX3NpbXVsYXRpb24uUlVOTklORyBdKTtcbiAgICAgICAgICAgIF1cbiAgICAgICAgICAoQnV0dG9uQ2xlYXIuY29udGVudCAoKSk7XG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0xXCI7IFwiY29sLXhzLTNcIiBdIF1cbiAgICAgICAgICAoRGl2U3RhdHVzSW5kaWNhdG9yLmNvbnRlbnQgKCkgQCBbIEh0bWwuZW50aXR5IFwibmJzcFwiIF0pO1xuICAgICAgXVxuICAgICAge3xcbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgPC9kaXY+XG4gIHx9XVxuXG5sZXQgY29udGVudCAoKSA9XG4gIEh0bWwuZGl2XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBTdGF0ZV9wcm9qZWN0Lm1vZGVsIChmdW4gbW9kZWwgLT5cbiAgICAgICAgICAgICAgIG1hdGNoIG1vZGVsLlN0YXRlX3Byb2plY3QubW9kZWxfY3VycmVudF9pZCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gUmVhY3QuUy5jb25zdCBbIFwiaGlkZVwiIF1cbiAgICAgICAgICAgICAgIHwgU29tZSBfIC0+IFJlYWN0LlMuY29uc3QgWyBcInBhbmVsXCI7IFwicGFuZWwtZGVmYXVsdFwiIF0pKTtcbiAgICAgIF1cbiAgICBbIHN0b3BwZWRfYm9keSAoKTsgaW5pdGlhbGl6aW5nX2JvZHkgKCk7IHJ1bm5pbmdfYm9keSAoKTsgZm9vdGVyICgpIF1cblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBGb3JtUGVydHVyYmF0aW9uLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBJbnB1dFBhdXNlQ29uZGl0aW9uLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBJbnB1dFBsb3RQZXJpb2Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IERpdkVycm9yTWVzc2FnZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uU3RhcnQub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvblBhdXNlLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBCdXR0b25Db250aW51ZS5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gQnV0dG9uVHJhY2Uub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvbk91dHB1dHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IEJ1dHRvbkNsZWFyLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBEaXZTdGF0dXNJbmRpY2F0b3Iub25sb2FkICgpIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcblxubGV0IGNvbnRlbnQgKCkgPVxuICBbJWh0bWxcbiAgICB7fFxuPGgyPlRoZSBLYXBwYSBMYW5ndWFnZTwvaDI+XG48cD5Db3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGPHA+XG48cD5LYXBwYSBMYW5ndWFnZSBzb2Z0d2FyZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2xncGwtMy4wLmh0bWxcIj5HTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzPC9hPi5cbiBTb3VyY2UgY29kZSBpcyBwdWJsaXNoZWQgb24gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZ2l0aHViLmNvbS9LYXBwYS1EZXYvS2FTaW1cIj5odHRwczovL2dpdGh1Yi5jb20vS2FwcGEtRGV2L0thU2ltPC9hPi48L3A+XG5cbjxwPlRoaXMgdXNlciBpbnRlcmZhY2Ugd2FzIGRldmVsb3BlZCBpbiB0aGUgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vZm9udGFuYS5obXMuaGFydmFyZC5lZHVcIj5Gb250YW5hIExhYjwvYT4gdW5kZXIgREFSUEEgZ3JhbnQgVzkxMU5GLTE0LTEtMDM2Ny4gVmlzdWFsaXphdGlvbnMgd2VyZSBkZXZlbG9wZWQgaW4gdGhlIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2NyZWF0aXZlY29kaW5nLnNvZS51Y3NjLmVkdS9uZXdzLnBocFwiPkNyZWF0aXZlIENvZGluZyBMYWI8L2E+IG9mIEFuZ3VzIEZvcmJlczwvcD5cblxuPHA+UmVmZXJlbmNlIG1hbnVhbCBpcyBvbmxpbmUgYXQgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vd3d3LmthcHBhbGFuZ3VhZ2Uub3JnXCI+aHR0cHM6Ly93d3cua2FwcGFsYW5ndWFnZS5vcmc8L2E+LjwvcD5cblxuPHVsPlxuPGxpPldyaXR0ZW4gaW4gPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9vY2FtbC5vcmdcIj5cbiAgPCEtLTxpbWcgc3JjPVwiaHR0cDovL29jYW1sLm9yZy9sb2dvL0NvbG91ci9TVkcvY29sb3VyLWxvZ28uc3ZnXCJcbiAgICAgICBhbHQ9XCItLT5PQ2FtbDwhLS1cIlxuICAgICAgIHN0eWxlPVwiYm9yZGVyOiBub25lOyB3aWR0aDogMTUwcHg7XCIgLz4gLS0+XG48L2E+LiBDb21waWxlZCBieSA8YSB0YXJnZXQ9XCJfYmxhbmtcIiBocmVmPVwiaHR0cDovL29jc2lnZW4ub3JnL2pzX29mX29jYW1sL1wiPmpzX29mX29jYW1sPC9hPi48L2xpPlxuPGxpPlRleHQgZWRpdG9yIHVzZWQgaXMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9jb2RlbWlycm9yLm5ldFwiPkNvZGVNaXJyb3I8L2E+LiBJdCBjb21lcyB3aXRoIGEgbG90IG9mIGZlYXR1cmVzLiBDaGVjayBvdXQgaXRzIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwOi8vY29kZW1pcnJvci5uZXQvZG9jL21hbnVhbC5odG1sI2NvbW1hbmRzXCI+bWFudWFsPC9hPi48L2xpPlxuPGxpPlZpc3VhbGl6YXRpb24gcmVsaWVzIG9uIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9XCJodHRwczovL2QzanMub3JnXCI+ZDM8L2E+LjwvbGk+XG48bGk+TGF5b3V0IHVzZXMgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHA6Ly9nZXRib290c3RyYXAuY29tXCI+Ym9vdHN0cmFwPC9hPiBhbmQgPGEgdGFyZ2V0PVwiX2JsYW5rXCIgaHJlZj1cImh0dHBzOi8vanF1ZXJ5dWkuY29tXCI+alF1ZXJ5PC9hPi48L2xpPlxuPC91bD5cblxuPGgzPk5vbWluYWwgY29udHJpYnV0aW9uPC9oMz5cbjxkbCBjbGFzcz1cImRsLWhvcml6b250YWxcIj48ZHQ+UGllcnJlIEJvdXRpbGxpZXI8L2R0PjxkZD5HZW5lcmFsIGRlc2lnbiBhbmQgbWFpbnRlbmFuY2UsIHByb3RvY29sczwvZGQ+PGR0PlhpbmcgTGk8L2R0PjxkZD5PdXRwdXRzIHZpc3VhbGl6YXRpb25zLCBHZW5lcmFsIGxheW91dDwvZGQ+PGR0Pk11dGFhbWJhIE1hYXNoYTwvZHQ+PGRkPlRyYW5zcGFyZW50IG11bHRpIGJhY2tlbmQgYXJjaGl0ZWN0dXJlLCBwcm90b2NvbHMsIE91dHB1dCB2aXN1YWxpemF0aW9ucywgR2VuZXJhbCBsYXlvdXQ8L2RkPjwvZGw+XG58fV1cblxubGV0IG9ubG9hZCAoKSA9ICgpXG5sZXQgb25yZXNpemUgKCkgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogSnMgdXRpbCAqKVxuKCogcmVmZXJlbmNlc1xuICAgaHR0cDovL3Rvc3Muc291cmNlZm9yZ2UubmV0L29jYW1sLmh0bWxcbiAgIGh0dHA6Ly9wZXBwZXJtaW50LmpwL3RlbXAvYW8vYW8ubWxcbiopXG5sZXQgcHJvdG90eXBlID0gSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yLnByb3RvdHlwZVwiXG5cbmxldCBjcmVhdGVfaGFuZGxlciBsYWJlbCA9XG4gIGxldCBoZWFkIDogY2hhciA9IENoYXIudXBwZXJjYXNlX2FzY2lpIChTdHJpbmcuZ2V0IGxhYmVsIDApIGluXG4gIGxldCB0YWlsIDogc3RyaW5nID0gU3RyaW5nLnN1YiBsYWJlbCAxIChTdHJpbmcubGVuZ3RoIGxhYmVsIC0gMSkgaW5cbiAgbGV0IG9uX2xhYmVsID0gXCJvblwiIF4gQ2hhci5lc2NhcGVkIGhlYWQgXiB0YWlsIGluXG4gIGxldCB3cmFwcGVyIGhhbmRsZXIgPSAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcInRoaXNcIikjI29uIGxhYmVsIGhhbmRsZXIgaW5cbiAgbGV0ICgpID0gSnMuVW5zYWZlLnNldCBwcm90b3R5cGUgKEpzLnN0cmluZyBvbl9sYWJlbCkgd3JhcHBlciBpblxuICAoKVxuXG4oKiBhZGQgb24gaGFuZGxlcnMgdG8gdGhlIHByb3RvdHlwZXMgc28gdGhleSBjYW4gYmUgc3Ryb25nbHkgdHlwZWQgKilcbmxldCAoKSA9XG4gIExpc3QuaXRlciBjcmVhdGVfaGFuZGxlclxuICAgIFtcbiAgICAgIFwiYmVmb3JlQ2hhbmdlXCI7XG4gICAgICBcImJlZm9yZUN1cnNvckVudGVyXCI7XG4gICAgICBcImJlZm9yZVNlbGVjdGlvbkNoYW5nZVwiO1xuICAgICAgXCJibHVyXCI7XG4gICAgICBcImNoYW5nZXNcIjtcbiAgICAgIFwiY2xlYXJcIjtcbiAgICAgIFwiY29udGV4dG1lbnVcIjtcbiAgICAgIFwiY29weVwiO1xuICAgICAgXCJjdXJzb3JBY3Rpdml0eVwiO1xuICAgICAgXCJjdXRcIjtcbiAgICAgIFwiZGJsY2xpY2tcIjtcbiAgICAgIFwiZGVsZXRlXCI7XG4gICAgICBcImRyYWdlbnRlclwiO1xuICAgICAgXCJkcmFnbGVhdmVcIjtcbiAgICAgIFwiZHJhZ292ZXJcIjtcbiAgICAgIFwiZHJhZ3N0YXJ0XCI7XG4gICAgICBcImRyb3BcIjtcbiAgICAgIFwiZWxlY3RyaWNJbnB1dFwiO1xuICAgICAgXCJmb2N1c1wiO1xuICAgICAgXCJndXR0ZXJDbGlja1wiO1xuICAgICAgXCJndXR0ZXJDb250ZXh0TWVudVwiO1xuICAgICAgXCJoaWRlXCI7XG4gICAgICBcImlucHV0UmVhZFwiO1xuICAgICAgXCJrZXlIYW5kbGVkXCI7XG4gICAgICBcImtleXByZXNzXCI7XG4gICAgICBcImtleXVwXCI7XG4gICAgICBcIm1vdXNlZG93blwiO1xuICAgICAgXCJwYXN0ZVwiO1xuICAgICAgXCJyZWRyYXdcIjtcbiAgICAgIFwicmVuZGVyTGluZVwiO1xuICAgICAgXCJzY3JvbGxcIjtcbiAgICAgIFwic2Nyb2xsQ3Vyc29ySW50b1ZpZXdcIjtcbiAgICAgIFwic3dhcERvY1wiO1xuICAgICAgXCJ0b3VjaHN0YXJ0XCI7XG4gICAgICBcInVuaGlkZVwiO1xuICAgICAgXCJ1cGRhdGVcIjtcbiAgICAgIFwidmlld3BvcnRDaGFuZ2VcIjtcbiAgICAgIFwiY2hhbmdlXCI7XG4gICAgICBcImtleWRvd25cIjtcbiAgICBdXG5cbmNsYXNzIHR5cGUgcG9zaXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGNoIDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgbWV0aG9kIGxpbmUgOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmNsYXNzIHR5cGUgZGltZW5zaW9uID0gb2JqZWN0XG4gIG1ldGhvZCBsZWZ0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgbWV0aG9kIHJpZ2h0IDogaW50IEpzLnJlYWRvbmx5X3Byb3BcbiAgbWV0aG9kIHRvcCA6IGludCBKcy5yZWFkb25seV9wcm9wXG4gIG1ldGhvZCBib3R0b20gOiBpbnQgSnMucmVhZG9ubHlfcHJvcFxuZW5kXG5cbmxldCBwb3NpdGlvbiA6IChpbnQgLT4gaW50IC0+IHBvc2l0aW9uIEpzLnQpIEpzLmNvbnN0ciA9XG4gIChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjIy5fUG9zXG5cbnR5cGUgc2V2ZXJpdHkgPSBFcnJvciB8IFdhcm5pbmdcblxuY2xhc3MgdHlwZSBsaW50ID0gb2JqZWN0XG4gIG1ldGhvZCBtZXNzYWdlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuICBtZXRob2Qgc2V2ZXJpdHkgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCBmcm9tIDogcG9zaXRpb24gSnMudCBKcy5wcm9wXG4gIG1ldGhvZCB0b18gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfbGludCA6IGxpbnQgSnMudCBKcy5jb25zdHIgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcblxubGV0IGNyZWF0ZV9saW50IH4obWVzc2FnZSA6IHN0cmluZykgfihzZXZlcml0eSA6IHNldmVyaXR5KVxuICAgIH4oZnJvbSA6IHBvc2l0aW9uIEpzLnQpIH4odG9fIDogcG9zaXRpb24gSnMudCkgOiBsaW50IEpzLnQgPVxuICBsZXQgcmVzdWx0ID0gbmV3JWpzIGNvbnN0cnVjdG9yX2xpbnQgaW5cbiAgbGV0ICgpID0gcmVzdWx0IyMubWVzc2FnZSA6PSBKcy5zdHJpbmcgbWVzc2FnZSBpblxuICBsZXQgKCkgPVxuICAgIHJlc3VsdCMjLnNldmVyaXR5IDo9XG4gICAgICBtYXRjaCBzZXZlcml0eSB3aXRoXG4gICAgICB8IEVycm9yIC0+IEpzLnN0cmluZyBcImVycm9yXCJcbiAgICAgIHwgV2FybmluZyAtPiBKcy5zdHJpbmcgXCJ3YXJuaW5nXCJcbiAgaW5cbiAgbGV0ICgpID0gcmVzdWx0IyMuZnJvbSA6PSBmcm9tIGluXG4gIGxldCAoKSA9IHJlc3VsdCMjLnRvXyA6PSB0b18gaW5cbiAgcmVzdWx0XG5cbmNsYXNzIHR5cGUgY2hhbmdlID0gb2JqZWN0XG4gIG1ldGhvZCBmcm9tIDogcG9zaXRpb24gSnMudCBKcy5wcm9wXG4gIG1ldGhvZCB0b18gOiBwb3NpdGlvbiBKcy50IEpzLnByb3BcbiAgbWV0aG9kIHRleHQgOiBKcy5zdHJpbmdfYXJyYXkgSnMudCBKcy5wcm9wXG4gIG1ldGhvZCByZW1vdmVkIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuICBtZXRob2Qgb3JpZ2luIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuZW5kXG5cbmxldCBjb25zdHJ1Y3Rvcl9jaGFuZ2UgOiBjaGFuZ2UgSnMudCBKcy5jb25zdHIgPSBKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JqZWN0XCJcbmxldCBjcmVhdGVfY2hhbmdlICgpIDogY2hhbmdlIEpzLnQgPSBuZXclanMgY29uc3RydWN0b3JfY2hhbmdlXG5cbmNsYXNzIHR5cGUgY29kZW1pcnJvciA9IG9iamVjdFxuICBtZXRob2QgZ2V0VmFsdWUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5tZXRoXG4gIG1ldGhvZCBzZXRWYWx1ZSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgZm9jdXMgOiB1bml0IEpzLm1ldGhcblxuICAoKiBQcm9ncmFtbWF0aWNhbGx5IHNldCB0aGUgc2l6ZSBvZiB0aGUgZWRpdG9yIChvdmVycmlkaW5nIHRoZVxuICAgICBhcHBsaWNhYmxlIENTUyBydWxlcykuIHdpZHRoIGFuZCBoZWlnaHQgY2FuIGJlIGVpdGhlciBudW1iZXJzXG4gICAgIChpbnRlcnByZXRlZCBhcyBwaXhlbHMpIG9yIENTUyB1bml0cyAoXCIxMDAlXCIsIGZvciBleGFtcGxlKS5cbiAgICAgWW91IGNhbiBwYXNzIG51bGwgZm9yIGVpdGhlciBvZiB0aGVtIHRvIGluZGljYXRlIHRoYXQgdGhhdFxuICAgICBkaW1lbnNpb24gc2hvdWxkIG5vdCBiZSBjaGFuZ2VkLlxuICAqKVxuICBtZXRob2Qgc2V0U2l6ZSA6IGludCBKcy50IEpzLm9wdCAtPiBpbnQgSnMudCBKcy5vcHQgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogU2Nyb2xsIHRoZSBlZGl0b3IgdG8gYSBnaXZlbiAocGl4ZWwpIHBvc2l0aW9uLiBCb3RoIGFyZ3VtZW50c1xuICAgICBtYXkgYmUgbGVmdCBhcyBudWxsIG9yIHVuZGVmaW5lZCB0byBoYXZlIG5vIGVmZmVjdC4gKilcbiAgbWV0aG9kIHNjcm9sbFRvIDogaW50IEpzLm9wdCAtPiBpbnQgSnMub3B0IC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBjaGFyQ29vcmRzIDpcbiAgICBwb3NpdGlvbiBKcy50IC0+IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCAtPiBkaW1lbnNpb24gSnMudCBKcy5tZXRoXG5cbiAgbWV0aG9kIGdldFNjcm9sbGVyRWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5tZXRoXG4gIG1ldGhvZCBvbiA6IEpzLmpzX3N0cmluZyBKcy50IC0+IChEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGZpcmVkIHdoZW4gY29udGVudCBpcyBjaGFuZ2VkICopXG4gIG1ldGhvZCBvbkNoYW5nZSA6IChjb2RlbWlycm9yIEpzLnQgLT4gY2hhbmdlIEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmF0Y2hlZCBjaGFuZ2VkIG9wZXJhdGlvbiAqKVxuICBtZXRob2Qgb25DaGFuZ2VzIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy5qc19hcnJheSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGJlZm9yZSBhIGNoYW5nZSBpcyBhcHBsaWVkICopXG4gIG1ldGhvZCBvbkJlZm9yZUNoYW5nZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBjaGFuZ2UgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBjdXJzb3IgbW92ZXMsIG9yIGFueSBjaGFuZ2UgKilcbiAgbWV0aG9kIG9uQ3Vyc29yQWN0aXZpdHkgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIHdoZW4gbmV3IGlucHV0IGlzIHJlYWQgKilcbiAgbWV0aG9kIG9uS2V5SGFuZGxlZCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBKcy5qc19zdHJpbmcgLT4gRG9tX2h0bWwuZXZlbnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogd2hlbiBuZXcgaW5wdXQgaXMgcmVhZCAqKVxuICBtZXRob2Qgb25JbnB1dFJlYWQgOiAoY29kZW1pcnJvciBKcy50IC0+IGNoYW5nZSBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIHdoZW4gdGV4dCBtYXRjaGVzIGVsZWN0cmljIHBhdHRlcm4gKilcbiAgbWV0aG9kIG9uRWxlY3RyaWNJbnB1dCA6IChjb2RlbWlycm9yIEpzLnQgLT4gaW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgKCogYmVmb3JlIGEgc2VsZWN0aW9uIGlzIG1vdmVkIFRPRE8gKilcbiAgbWV0aG9kIG9uQmVmb3JlU2VsZWN0aW9uQ2hhbmdlIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+ICdhIC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIHRoZSB2aWV3IHBvcnQgY2hhbmdlZCAqKVxuICBtZXRob2Qgb25WaWV3cG9ydENoYW5nZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBpbnQgSnMudCAtPiBpbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiAgZG9jdW1lbnQgc3dhcHBlZCAqKVxuICBtZXRob2Qgb25Td2FwRG9jIDogKGNvZGVtaXJyb3IgSnMudCAtPiAnYSAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBndXR0ZXIgY2xpY2tlZCAqKVxuICBtZXRob2Qgb25HdXR0ZXJDbGljayA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBpbnQgSnMudCAtPiBKcy5qc19zdHJpbmcgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPlxuICAgIHVuaXQgSnMubWV0aFxuXG4gICgqIGNvbnRleHQgbWVudSBldmVudCBmcm9tIGd1dHRlciAqKVxuICBtZXRob2Qgb25HdXR0ZXJDb250ZXh0TWVudSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBpbnQgSnMudCAtPiBKcy5qc19zdHJpbmcgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPlxuICAgIHVuaXQgSnMubWV0aFxuXG4gICgqIGZvY3VzICopXG4gIG1ldGhvZCBvbkZvY3VzIDogKGNvZGVtaXJyb3IgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBibHVyICopXG4gIG1ldGhvZCBvbkJsdXIgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIHNjcm9sbCAqKVxuICBtZXRob2Qgb25TY3JvbGwgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGN1cnNvciBzY3JvbGxlZCBpbiB2aWV3KilcbiAgbWV0aG9kIG9uU2Nyb2xsQ3Vyc29ySW50b1ZpZXcgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICAoKiBkb20gdXBkYXRlZCAqKVxuICBtZXRob2Qgb25VcGRhdGUgOiAoY29kZW1pcnJvciBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gICgqIGxpbmUgcmVuZGVyZWQgKilcbiAgbWV0aG9kIG9uUmVuZGVyTGluZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiAnYSAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbk1vdXNlZG93biA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRibGNsaWNrIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uVG91Y2hzdGFydCA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkNvbnRleHRtZW51IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uS2V5ZG93biA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbktleXByZXNzIDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uS2V5dXAgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25DdXQgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25Db3B5IDpcbiAgICAoY29kZW1pcnJvciBKcy50IC0+IERvbV9odG1sLmV2ZW50IEpzLnQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG5cbiAgbWV0aG9kIG9uUGFzdGUgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EcmFnc3RhcnQgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EcmFnZW50ZXIgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EcmFnb3ZlciA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyYWdsZWF2ZSA6XG4gICAgKGNvZGVtaXJyb3IgSnMudCAtPiBEb21faHRtbC5ldmVudCBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuXG4gIG1ldGhvZCBvbkRyb3AgOlxuICAgIChjb2RlbWlycm9yIEpzLnQgLT4gRG9tX2h0bWwuZXZlbnQgSnMudCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2Qgb25EZWxldGUgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uQmVmb3JlQ3Vyc29yRW50ZXIgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIG9uQ2xlYXIgOiAocG9zaXRpb24gSnMudCAtPiBwb3NpdGlvbiBKcy50IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25IaWRlIDogKHVuaXQgLT4gdW5pdCkgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBvblVuaGlkZSA6ICh1bml0IC0+IHVuaXQpIC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2Qgb25SZWRyYXcgOiAodW5pdCAtPiB1bml0KSAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHNldEN1cnNvciA6IHBvc2l0aW9uIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBnZXRDdXJzb3IgOiBwb3NpdGlvbiBKcy50IEpzLm1ldGhcbiAgbWV0aG9kIHNldFNlbGVjdGlvbiA6IHBvc2l0aW9uIEpzLnQgLT4gcG9zaXRpb24gSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHBlcmZvcm1MaW50IDogdW5pdCBKcy5tZXRoXG5lbmRcblxuY2xhc3MgdHlwZSBsaW50X2NvbmZpZ3VyYXRpb24gPSBvYmplY3RcbiAgbWV0aG9kIGRlbGF5IDogaW50IEpzLnQgSnMucHJvcFxuICBtZXRob2QgYXN5bmMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gIG1ldGhvZCBnZXRBbm5vdGF0aW9ucyA6XG4gICAgKEpzLmpzX3N0cmluZyAtPlxuICAgIGxpbnRfY29uZmlndXJhdGlvbiBKcy50IC0+XG4gICAgY29kZW1pcnJvciBKcy50IC0+XG4gICAgbGludCBKcy50IEpzLmpzX2FycmF5IEpzLnQpXG4gICAgSnMud3JpdGVvbmx5X3Byb3BcblxuICBtZXRob2QgbGludE9uQ2hhbmdlIDogYm9vbCBKcy50IEpzLnByb3BcbmVuZFxuXG5sZXQgY29uc3RydWN0b3JfbGludF9jb25maWd1cmF0aW9uIDogbGludF9jb25maWd1cmF0aW9uIEpzLnQgSnMuY29uc3RyID1cbiAgSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIk9iamVjdFwiXG5cbmxldCBjcmVhdGVfbGludF9jb25maWd1cmF0aW9uICgpIDogbGludF9jb25maWd1cmF0aW9uIEpzLnQgPVxuICBuZXclanMgY29uc3RydWN0b3JfbGludF9jb25maWd1cmF0aW9uXG5cbmNsYXNzIHR5cGUgY29uZmlndXJhdGlvbiA9IG9iamVjdFxuICAoKiBUaGUgc3RhcnRpbmcgdmFsdWUgb2YgdGhlIGVkaXRvci4gKilcbiAgbWV0aG9kIHZhbHVlIDogSnMuanNfc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSBtb2RlIHRvIHVzZS4gKilcbiAgbWV0aG9kIG1vZGUgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogRXhwbGljaXRseSBzZXQgdGhlIGxpbmUgc2VwYXJhdG9yIGZvciB0aGUgZWRpdG9yLiAgKilcbiAgbWV0aG9kIGxpbmVTZXBhcmF0b3IgOiBKcy5qc19zdHJpbmcgSnMub3B0IEpzLnQgSnMucHJvcFxuXG4gICgqIFRoZSB0aGVtZSB0byBzdHlsZSB0aGUgZWRpdG9yIHdpdGguICopXG4gIG1ldGhvZCB0aGVtZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBIb3cgbWFueSBzcGFjZXMgYSBibG9jayBzaG91bGQgYmUgaW5kZW50ZWQuICAqKVxuICBtZXRob2QgaW5kZW50VW5pdCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBXaGV0aGVyIHRvIHVzZSB0aGUgY29udGV4dC1zZW5zaXRpdmUgaW5kZW50YXRpb24gKilcbiAgbWV0aG9kIHNtYXJ0SW5kZW50IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgd2lkdGggb2YgYSB0YWIgY2hhcmFjdGVyLiAqKVxuICBtZXRob2QgdGFiU2l6ZSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBUaGUgZmlyc3QgTip0YWJTaXplIGluIGluZGVudGF0aW9uIHNob3VsZCBOIHRhYnMuICopXG4gIG1ldGhvZCBpbmRlbnRXaXRoVGFicyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogVGhlIGVkaXRvciBzaG91bGQgcmUtaW5kZW50IHRoZSBjdXJyZW50IGxpbmUuICopXG4gIG1ldGhvZCBlbGVjdHJpY0NoYXJzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBBIHJlZ3VsYXIgZXhwcmVzc2lvbiB1c2VkIHRvIGRldGVybWluZSBzcGVjaWFsIHBsYWNlaG9sZGVyLiAqKVxuICBtZXRob2Qgc3BlY2lhbENoYXJzIDogSnMucmVnRXhwIEpzLnQgSnMucHJvcFxuXG4gICgqIEEgZnVuY3Rpb24gaWRlbnRpZmllcyBzcGVjaWFsQ2hhcnMgYW5kIHByb2R1Y2VzIGEgRE9NIG5vZGUgKilcbiAgbWV0aG9kIHNwZWNpYWxDaGFyUGxhY2Vob2xkZXIgOiAoaW50IC0+IERvbV9odG1sLmVsZW1lbnQgSnMudCkgSnMucHJvcFxuXG4gICgqIEhvcml6b250YWwgY3Vyc29yIG1vdmVtZW50IHRocm91Z2ggcmlnaHQtdG8tbGVmdC4gKilcbiAgbWV0aG9kIHJ0bE1vdmVWaXN1YWxseSA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQ29uZmlndXJlcyB0aGUga2V5IG1hcCB0byB1c2UuICopXG4gIG1ldGhvZCBrZXlNYXAgOiBzdHJpbmcgSnMudCBKcy5wcm9wXG5cbiAgKCogc3BlY2lmeSBleHRyYSBrZXkgYmluZGluZ3MgZm9yIHRoZSBlZGl0b3IgKilcbiAgbWV0aG9kIGV4dHJhS2V5cyA6ICdhIEpzLnByb3BcblxuICAoKiBTY3JvbGwgb3Igd3JhcCBmb3IgbG9uZyBsaW5lcyAqKVxuICBtZXRob2QgbGluZVdyYXBwaW5nIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiAgU2hvdyBsaW5lIG51bWJlcnMgdG8gdGhlIGxlZnQgb2YgdGhlIGVkaXRvciAqKVxuICBtZXRob2QgbGluZU51bWJlcnMgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIEF0IHdoaWNoIG51bWJlciB0byBzdGFydCBjb3VudGluZyBsaW5lcy4gRGVmYXVsdCBpcyAxLiAqKVxuICBtZXRob2QgZmlyc3RMaW5lTnVtYmVyIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIEEgZnVuY3Rpb24gdXNlZCB0byBmb3JtYXQgbGluZSBudW1iZXJzLiAqKVxuICBtZXRob2QgbGluZU51bWJlckZvcm1hdHRlciA6IChpbnQgSnMudCAtPiBKcy5qc19zdHJpbmcpIEpzLnQgSnMucHJvcFxuXG4gICgqIEFkZCBleHRyYSBndXR0ZXJzICopXG4gIG1ldGhvZCBndXR0ZXJzIDogSnMuc3RyaW5nX2FycmF5IEpzLnQgSnMucHJvcFxuXG4gICgqIEd1dHRlciBzY3JvbGxzIGFsb25nIHdpdGggdGhlIGNvbnRlbnQgaG9yaXpvbnRhbGx5ICopXG4gIG1ldGhvZCBmaXhlZEd1dHRlciA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQ2hvb3NlcyBhIHNjcm9sbGJhciBpbXBsZW1lbnRhdGlvbi4gKilcbiAgbWV0aG9kIHNjcm9sbGJhclN0eWxlIDogc3RyaW5nIEpzLnQgSnMucHJvcFxuXG4gICgqIGNvdmVyIGd1dHRlciB3aXRoIHdpdGggY2xhc3MgQ29kZU1pcnJvci1ndXR0ZXItZmlsbGVyLiAqKVxuICBtZXRob2QgY292ZXJHdXR0ZXJOZXh0VG9TY3JvbGxiYXIgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIFNlbGVjdHMgdGhlIHdheSBDb2RlTWlycm9yIGhhbmRsZXMgaW5wdXQgYW5kIGZvY3VzLiAqKVxuICBtZXRob2QgaW5wdXRTdHlsZSA6IHN0cmluZyBKcy50IEpzLnByb3BcblxuICAoKiBkaXNhYmxlIGVkaXRpbmcgb2YgdGhlIGVkaXRvciBjb250ZW50ICopXG4gIG1ldGhvZCByZWFkT25seSA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogdGhlIGN1cnNvciBzaG91bGQgYmUgZHJhd24gd2hlbiBhIHNlbGVjdGlvbiBpcyBhY3RpdmUuICopXG4gIG1ldGhvZCBzaG93Q3Vyc29yV2hlblNlbGVjdGluZyA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogY29weSBvciBjdXQgd2hlbiB0aGVyZSBpcyBubyBzZWxlY3Rpb24gd2lsbCBjb3B5IG9yIGN1dCB3aG9sZSBsaW5lcyAqKVxuICBtZXRob2QgbGluZVdpc2VDb3B5Q3V0IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBXaGVuIHBhc3Rpbmcgc29tZXRoaW5nIGZyb20gYW4gZXh0ZXJuYWwgc291cmNlIChub3QgZnJvbSB0aGVcbiAgICAgZWRpdG9yIGl0c2VsZiksIGlmIHRoZSBudW1iZXIgb2YgbGluZXMgbWF0Y2hlcyB0aGUgbnVtYmVyIG9mXG4gICAgIHNlbGVjdGlvbiwgQ29kZU1pcnJvciB3aWxsIGJ5IGRlZmF1bHQgaW5zZXJ0IG9uZSBsaW5lIHBlclxuICAgICBzZWxlY3Rpb24uIFlvdSBjYW4gc2V0IHRoaXMgdG8gZmFsc2UgdG8gZGlzYWJsZSB0aGF0XG4gICAgIGJlaGF2aW9yLiAqKVxuICBtZXRob2QgcGFzdGVMaW5lc1BlclNlbGVjdGlvbiA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogRGV0ZXJtaW5lcyB3aGV0aGVyIG11bHRpcGxlIHNlbGVjdGlvbnMgYXJlIGpvaW5lZCBhcyBzb29uIGFzXG4gICAgIHRoZXkgdG91Y2ggKHRoZSBkZWZhdWx0KSBvciBvbmx5IHdoZW4gdGhleSBvdmVybGFwICh0cnVlKS4gKilcbiAgbWV0aG9kIHNlbGVjdGlvbnNNYXlUb3VjaCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogbWF4aW11bSBudW1iZXIgb2YgdW5kbyAqKVxuICBtZXRob2QgdW5kb0RlcHRoIDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIG1pbGxpc2Vjb25kcyBvZiBpbmFjdGl2aXR5IHRvIGNyZWF0ZSBhIG5ldyBoaXN0b3J5IGV2ZW50ICopXG4gIG1ldGhvZCBoaXN0b3J5RXZlbnREZWxheSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiB0YWIgaW5kZXggb2YgZWRpdG9yICopXG4gIG1ldGhvZCB0YWJpbmRleCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBDb2RlTWlycm9yIGZvY3VzIGl0c2VsZiBvbiBpbml0aWFsaXphdGlvbiAqKVxuICBtZXRob2QgYXV0b2ZvY3VzIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBlbmFibGUgZHJhZy1hbmQtZHJvcCAqKVxuICBtZXRob2QgZHJhZ0Ryb3AgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIHdoZW4gc2V0IGZpbGVzIHdpdCBtaW1lIHR5cGUgY2FuIGJlIGRyb3BwZWQgaW50byB0aGUgZWRpdG9yICopXG4gIG1ldGhvZCBhbGxvd0Ryb3BGaWxlVHlwZXMgOiBKcy5zdHJpbmdfYXJyYXkgSnMub3B0IEpzLnQgSnMucHJvcFxuXG4gICgqIEhhbGYtcGVyaW9kIGluIG1pbGxpc2Vjb25kcyB1c2VkIGZvciBjdXJzb3IgYmxpbmtpbmcuICopXG4gIG1ldGhvZCBjdXJzb3JCbGlua1JhdGUgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogSG93IG11Y2ggZXh0cmEgc3BhY2UgdG8gYWx3YXlzIGtlZXAgYWJvdmUgYW5kIGJlbG93IHRoZSBjdXJzb3IgKilcbiAgbWV0aG9kIGN1cnNvclNjcm9sbE1hcmdpbiA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBEZXRlcm1pbmVzIHRoZSBoZWlnaHQgb2YgdGhlIGN1cnNvci4gKilcbiAgbWV0aG9kIGN1cnNvckhlaWdodCA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiB0aGUgY29udGV4dCBtZW51IGlzIG9wZW5lZCB3aXRoIGEgY2xpY2sgb3V0c2lkZSBvZiB0aGVcbiAgICAgY3VycmVudCBzZWxlY3Rpb24sIG1vdmUgY3Vyc29yIHRvIHRoZSBwb2ludCBvZiB0aGUgY2xpY2sqKVxuICBtZXRob2QgcmVzZXRTZWxlY3Rpb25PbkNvbnRleHRNZW51IDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiB0aW1lIHRvIHJ1biBoaWdobGlnaHRpbmcgdGhyZWFkICopXG4gIG1ldGhvZCB3b3JrVGltZSA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBkZWxheSB0byBydW4gaGlnaGxpZ2h0aW5nIHRocmVhZCAqKVxuICBtZXRob2Qgd29ya0RlbGF5IDogaW50IEpzLnQgSnMucHJvcFxuXG4gICgqIGhvdyBvZnRlbiB0byBwb2xsIGZvciBjaGFuZ2VzICopXG4gIG1ldGhvZCBwb2xsSW50ZXJ2YWwgOiBpbnQgSnMudCBKcy5wcm9wXG5cbiAgKCogY29tYmluZSB0b2tlbnMgdG8gYSBzaW5nbGUgc3BhbiAqKVxuICBtZXRob2QgZmxhdHRlblNwYW5zIDogYm9vbCBKcy50IEpzLnByb3BcblxuICAoKiBwcmVmaXggY3NzICopXG4gIG1ldGhvZCBhZGRNb2RlQ2xhc3MgOiBib29sIEpzLnQgSnMucHJvcFxuXG4gICgqIGxlbmd0aCB0byBoaWdobGlnaHQgKilcbiAgbWV0aG9kIG1heEhpZ2hsaWdodExlbmd0aCA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogYW1vdW50IG9mIGxpbmVzIHRoYXQgYXJlIHJlbmRlcmVkIGFib3ZlIGFuZCBiZWxvdyB0aGVcbiAgICAgdmlzaWJsZSBkb2N1bWVudCopXG4gIG1ldGhvZCB2aWV3cG9ydE1hcmdpbiA6IGludCBKcy50IEpzLnByb3BcblxuICAoKiBBRERPTiBzZWxlY3Rpb24vYWN0aXZlLWxpbmUuanMgKilcbiAgbWV0aG9kIHN0eWxlQWN0aXZlTGluZSA6IGJvb2wgSnMudCBKcy5wcm9wXG5cbiAgKCogQURET04gbGludC9saW50LmpzICopXG4gIG1ldGhvZCBsaW50IDogbGludF9jb25maWd1cmF0aW9uIEpzLnQgSnMucHJvcFxuXG4gICgqIEFERE9OIGVkaXQvbWF0Y2hicmFja2V0cy5qcyAqKVxuICBtZXRob2QgbWF0Y2hCcmFja2V0cyA6IGJvb2wgSnMudCBKcy5wcm9wXG5lbmRcblxubGV0IGRlZmF1bHRfY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24gSnMudCA9XG4gIChKcy5VbnNhZmUuanNfZXhwciBcIkNvZGVNaXJyb3JcIikjIy5kZWZhdWx0c1xuXG5sZXQgZnJvbVRleHRBcmVhIChkb20gOiBEb21faHRtbC5lbGVtZW50IEpzLnQpXG4gICAgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uIEpzLnQpIDogY29kZW1pcnJvciBKcy50ID1cbiAgKCogbGV0ICgpID0gSnMuZGVidWdnZXIoKSBpbiAqKVxuICAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyNmcm9tVGV4dEFyZWFcbiAgICAoSnMuVW5zYWZlLmluamVjdCBkb20pXG4gICAgKEpzLlVuc2FmZS5pbmplY3QgY29uZmlndXJhdGlvbilcblxuY2xhc3MgdHlwZSBjb21tYW5kcyA9IG9iamVjdFxuICBtZXRob2Qgc2F2ZSA6IChjb2RlbWlycm9yIEpzLnQgLT4gdW5pdCkgSnMucHJvcFxuZW5kXG5cbmxldCBjb21tYW5kcyA6IGNvbW1hbmRzIEpzLnQgPSAoSnMuVW5zYWZlLmpzX2V4cHIgXCJDb2RlTWlycm9yXCIpIyMuY29tbWFuZHNcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5cbmxldCBjcmVhdGVfZmlsZSA/KHRleHQgPSBMd3QucmV0dXJuIChKcy5zdHJpbmcgXCJcIikpIChmaWxlX2lkIDogc3RyaW5nKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKCB0ZXh0ID4+PSBmdW4gdHh0IC0+XG4gICAgICAgICAgbGV0IGNvbnRlbnQgPSBKcy50b19zdHJpbmcgdHh0IGluXG4gICAgICAgICAgU3RhdGVfZmlsZS5jcmVhdGVfZmlsZSB+ZmlsZW5hbWU6ZmlsZV9pZCB+Y29udGVudFxuICAgICAgICAgID4+PSAoKiBnZXQgbmV3IGNvbnRhY3QgbWFwICopXG4gICAgICAgICAgZnVuIHIgLT5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJyBdKSApXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X2ZpbGUgKGZpbGVfaWQgOiBzdHJpbmcpIDogdW5pdCA9XG4gIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChGb3JtYXQuc3ByaW50ZiBcInNldF9maWxlOiVzXCIgZmlsZV9pZCkpIGluXG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIF9fTE9DX19cbiAgICAgICAgKCBTdGF0ZV9maWxlLnNlbGVjdF9maWxlIGZpbGVfaWQgTm9uZSA+Pj0gZnVuIHIgLT5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJyBdKSApXG4gICAgICAoKiBnZXQgbmV3IGNvbnRhY3QgbWFwICopXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgY2xvc2VfZmlsZSAoKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKCBTdGF0ZV9maWxlLnJlbW92ZV9maWxlICgpID4+PSBmdW4gciAtPlxuICAgICAgICAgIFN0YXRlX3Byb2plY3Quc3luYyAoKSA+Pj0gZnVuIHInIC0+XG4gICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pIClcbiAgICAgICgqIGdldCBuZXcgY29udGFjdCBtYXAgKilcbiAgICAgID4+PSBmdW4gXyAtPiBMd3QucmV0dXJuX3VuaXQpXG5cbmxldCBzZXRfZmlsZV9jb21waWxlIHJhbmsgKGNvbXBpbGUgOiBib29sKSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKCBTdGF0ZV9maWxlLnNldF9jb21waWxlIHJhbmsgY29tcGlsZSA+Pj0gZnVuIHIgLT5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJyBdKSApXG4gICAgICAoKiBnZXQgbmV3IGNvbnRhY3QgbWFwICopXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgb3JkZXJfZmlsZXMgKGZpbGVuYW1lcyA6IHN0cmluZyBsaXN0KSA6IHVuaXQgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX19cbiAgICAgICAgKCBTdGF0ZV9maWxlLm9yZGVyX2ZpbGVzIGZpbGVuYW1lcyA+Pj0gZnVuIHIgLT5cbiAgICAgICAgICBTdGF0ZV9wcm9qZWN0LnN5bmMgKCkgPj49IGZ1biByJyAtPlxuICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2NvbWJpbmUgWyByOyByJyBdKSApXG4gICAgICAoKiBnZXQgbmV3IGNvbnRhY3QgbWFwICopXG4gICAgICA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgZXhwb3J0X2N1cnJlbnRfZmlsZSAoKSA9XG4gIENvbW1vbi5hc3luYyBfX0xPQ19fIChmdW4gKCkgLT5cbiAgICAgIFN0YXRlX2Vycm9yLndyYXAgX19MT0NfXyAoU3RhdGVfZmlsZS5nZXRfZmlsZSAoKSlcbiAgICAgID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICB+b2s6KGZ1biAoZGF0YSwgZmlsZW5hbWUpIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhOihKcy5zdHJpbmcgZGF0YSlcbiAgICAgICAgICAgICAgICAgIH5taW1lOlwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIgfmZpbGVuYW1lXG4gICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm5fdW5pdClcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gTHd0LnJldHVybl91bml0KSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IGZpbGVfbmV3X21vZGFsX2lkID0gXCJtZW51LWVkaXRvci1maWxlLW5ldy1tb2RhbFwiXG5sZXQgZmlsZV9uZXdfaW5wdXRfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtbmV3LWlucHV0XCJcbmxldCBmaWxlX2Ryb3Bkb3duX21lbnVfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtZHJvcGRvd24tbWVudVwiXG5sZXQgZmlsZV9uZXdfbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtbmV3LWxpXCJcbmxldCBmaWxlX29wZW5fbGlfaWQgPSBcIm1lbnUtZWRpdG9yLWZpbGUtb3Blbi1saVwiXG5sZXQgZmlsZV9vcGVuX3NlbGVjdG9yX2lkID0gXCJtZW51LWVkaXRvci1vcGVuLXNlbGVjdG9yLWlkXCJcbmxldCBmaWxlX2Nsb3NlX2xpX2lkID0gXCJtZW51LWVkaXRvci1maWxlLWNsb3NlLWxpXCJcbmxldCBmaWxlX2V4cG9ydF9saV9pZCA9IFwibWVudS1lZGl0b3ItZmlsZS1leHBvcnQtbGlcIlxubGV0IGZpbGVfY29tcGlsZV9jaGVja2JveCA9IFwibWVudS1lZGl0b3ItZmlsZS1jb21waWxlLWNoZWNrYm94XCJcblxuKCogbGlzdCBmaWxlbmFtZSBhbm5vdGF0aW9uICopXG5sZXQgZWxlbWVudF9nZXRfZmlsZW5hbWUgKGVsZW1lbnQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQpIDpcbiAgICBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPVxuICBDb21tb24uZWxlbWVudF9kYXRhIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSBcImZpbGUtaWRcIlxuXG5sZXQgZWxlbWVudF9zZXRfZmlsZW5hbWUgKG5hbWUgOiBzdHJpbmcpID1cbiAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImRhdGEtZmlsZS1pZFwiIG5hbWVcblxubGV0IGZpbGVfbmV3X2lucHV0ID1cbiAgSHRtbC5pbnB1dFxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgZmlsZV9uZXdfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBUZXh0O1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9wbGFjZWhvbGRlciBcImZpbGUgbmFtZVwiO1xuICAgICAgICBIdG1sLmFfc2l6ZSA0MDtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgZmlsZV9uZXdfaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGZpbGVfbmV3X2lucHV0XG5cbmxldCBmaWxlX2NoZWNrYm94IGZpbGVfaWQgaXNfY2hlY2tlZCA9XG4gIGxldCBjaGVja2VkX2F0dHJpYnV0ZSA9XG4gICAgaWYgaXNfY2hlY2tlZCB0aGVuXG4gICAgICBbIEh0bWwuYV9jaGVja2VkICgpIF1cbiAgICBlbHNlXG4gICAgICBbXVxuICBpblxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICAoW1xuICAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYENoZWNrYm94O1xuICAgICAgICAgSHRtbC5hX2NsYXNzIFsgZmlsZV9jb21waWxlX2NoZWNrYm94IF07XG4gICAgICAgICBlbGVtZW50X3NldF9maWxlbmFtZSBmaWxlX2lkO1xuICAgICAgIF1cbiAgICAgIEAgY2hlY2tlZF9hdHRyaWJ1dGUpXG4gICAgKClcblxubGV0IG9wZW5faW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBmaWxlX29wZW5fc2VsZWN0b3JfaWQ7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiaGlkZGVuXCIgXTtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInR5cGVcIiBcImZpbGVcIjtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcImFjY2VwdFwiIFwiLmthXCI7XG4gICAgICBdXG4gICAgKClcblxubGV0IGRyb3Bkb3duIChtb2RlbCA6IFN0YXRlX2ZpbGUubW9kZWwpID1cbiAgKCogZGlyZWN0b3JpZXMgKilcbiAgbGV0IGhpZGVfb25fZW1wdHkgbCA9XG4gICAgaWYgTW9kcy5JbnRNYXAuaXNfZW1wdHkgbW9kZWwuU3RhdGVfZmlsZS5kaXJlY3RvcnkgdGhlblxuICAgICAgW11cbiAgICBlbHNlXG4gICAgICBsXG4gIGluXG4gIGxldCBmaWxlX2xpID1cbiAgICBsZXQgY3VycmVudF9maWxlX3BvcyA9XG4gICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgKGZ1biB7IFN0YXRlX2ZpbGUucmFuazsgXyB9IC0+IHJhbmspXG4gICAgICAgIG1vZGVsLlN0YXRlX2ZpbGUuY3VycmVudFxuICAgIGluXG4gICAgTGlzdC5tYXBcbiAgICAgIChmdW4gKHJhbmssIHsgU3RhdGVfZmlsZS5uYW1lOyBTdGF0ZV9maWxlLmxvY2FsIH0pIC0+XG4gICAgICAgIGxldCBjb21waWxlID0gbG9jYWwgPSBOb25lIGluXG4gICAgICAgIGxldCBsaV9jbGFzcyA9XG4gICAgICAgICAgKGlmIGN1cnJlbnRfZmlsZV9wb3MgPSBTb21lIHJhbmsgdGhlblxuICAgICAgICAgICAgIFsgXCJhY3RpdmVcIiBdXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBbXSlcbiAgICAgICAgICBAIFsgXCJ1aS1zdGF0ZS1zb3J0YWJsZVwiIF1cbiAgICAgICAgaW5cbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIGxpX2NsYXNzOyBlbGVtZW50X3NldF9maWxlbmFtZSBuYW1lIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmFcbiAgICAgICAgICAgICAgfmE6WyBlbGVtZW50X3NldF9maWxlbmFtZSBuYW1lIF1cbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY2hlY2tib3gtY29udHJvbC1kaXZcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRfc2V0X2ZpbGVuYW1lIG5hbWU7XG4gICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgZmlsZV9jaGVja2JveCBuYW1lIGNvbXBpbGU7XG4gICAgICAgICAgICAgICAgICAgIEh0bWwuc3BhblxuICAgICAgICAgICAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImNoZWNrYm94LWNvbnRyb2wtbGFiZWxcIiBdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50X3NldF9maWxlbmFtZSBuYW1lO1xuICAgICAgICAgICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC5jZGF0YSBuYW1lIF07XG4gICAgICAgICAgICAgICAgICBdO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIF0pXG4gICAgICAoTW9kcy5JbnRNYXAuYmluZGluZ3MgbW9kZWwuU3RhdGVfZmlsZS5kaXJlY3RvcnkpXG4gIGluXG4gIGxldCBzZXBhcmF0b3JfbGkgPVxuICAgIGhpZGVfb25fZW1wdHlcbiAgICAgIFtcbiAgICAgICAgSHRtbC5saVxuICAgICAgICAgIH5hOlxuICAgICAgICAgICAgW1xuICAgICAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwicm9sZVwiIFwic2VwYXJhdG9yXCI7XG4gICAgICAgICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgIFsgXCJkaXZpZGVyXCI7IFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF07XG4gICAgICAgICAgICBdXG4gICAgICAgICAgW107XG4gICAgICBdXG4gIGluXG4gIGxldCBuZXdfbGkgPVxuICAgIFtcbiAgICAgIEh0bWwubGlcbiAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgWyBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9uZXdfbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJOZXdcIiBdIF07XG4gICAgXVxuICBpblxuXG4gIGxldCBvcGVuX2xpID1cbiAgICBbXG4gICAgICBIdG1sLmxpXG4gICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ1aS1zb3J0LWRpc2FibGVkXCI7IFwidWktc29ydC1ib3R0b20tYW5jaG9yXCIgXSBdXG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmEgfmE6WyBIdG1sLmFfaWQgZmlsZV9vcGVuX2xpX2lkIF0gWyBIdG1sLmNkYXRhIFwiT3BlblwiIF07XG4gICAgICAgICAgb3Blbl9pbnB1dDtcbiAgICAgICAgXTtcbiAgICBdXG4gIGluXG5cbiAgbGV0IGNsb3NlX2xpID1cbiAgICBoaWRlX29uX2VtcHR5XG4gICAgICBbXG4gICAgICAgIEh0bWwubGlcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidWktc29ydC1kaXNhYmxlZFwiOyBcInVpLXNvcnQtYm90dG9tLWFuY2hvclwiIF0gXVxuICAgICAgICAgIFsgSHRtbC5hIH5hOlsgSHRtbC5hX2lkIGZpbGVfY2xvc2VfbGlfaWQgXSBbIEh0bWwuY2RhdGEgXCJDbG9zZVwiIF0gXTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IGV4cG9ydF9saSA9XG4gICAgaGlkZV9vbl9lbXB0eVxuICAgICAgW1xuICAgICAgICBIdG1sLmxpXG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInVpLXNvcnQtZGlzYWJsZWRcIjsgXCJ1aS1zb3J0LWJvdHRvbS1hbmNob3JcIiBdIF1cbiAgICAgICAgICBbIEh0bWwuYSB+YTpbIEh0bWwuYV9pZCBmaWxlX2V4cG9ydF9saV9pZCBdIFsgSHRtbC5jZGF0YSBcIkV4cG9ydFwiIF0gXTtcbiAgICAgIF1cbiAgaW5cbiAgW10gQCBmaWxlX2xpIEAgc2VwYXJhdG9yX2xpIEAgbmV3X2xpIEAgb3Blbl9saSBAIGNsb3NlX2xpIEAgZXhwb3J0X2xpXG5cbmxldCBjb250ZW50ID1cbiAgbGV0IGxpX2xpc3QgPVxuICAgIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgICAgKFJlYWN0LlMubWFwIChmdW4gbW9kZWwgLT4gZHJvcGRvd24gbW9kZWwpIFN0YXRlX2ZpbGUubW9kZWwpXG4gIGluXG4gIFtcbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwidHlwZVwiIFwiYnV0dG9uXCI7XG4gICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJidG4gYnRuLWRlZmF1bHRcIjsgXCJkcm9wZG93bi10b2dnbGVcIiBdO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJkYXRhLXRvZ2dsZVwiIFwiZHJvcGRvd25cIjtcbiAgICAgICAgICBIdG1sLlVuc2FmZS5zdHJpbmdfYXR0cmliIFwiYXJpYS1oYXNwb3B1cFwiIFwidHJ1ZVwiO1xuICAgICAgICAgIEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJhcmlhLWV4cGFuZGVkXCIgXCJmYWxzZVwiO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2Rpc2FibGVkICgpKVxuICAgICAgICAgICAgKFJlYWN0LlMubDJcbiAgICAgICAgICAgICAgIChmdW4gbW9kZWwgZmlsZSAtPlxuICAgICAgICAgICAgICAgICBtYXRjaCBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX2N1cnJlbnRfaWQgd2l0aFxuICAgICAgICAgICAgICAgICB8IE5vbmUgLT4gdHJ1ZVxuICAgICAgICAgICAgICAgICB8IFNvbWUgXyAtPlxuICAgICAgICAgICAgICAgICAgIChtYXRjaCBmaWxlLlN0YXRlX2ZpbGUuY3VycmVudCB3aXRoXG4gICAgICAgICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgfCBTb21lIHsgU3RhdGVfZmlsZS5vdXRfb2Zfc3luYzsgXyB9IC0+IG91dF9vZl9zeW5jKSlcbiAgICAgICAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwgU3RhdGVfZmlsZS5tb2RlbCk7XG4gICAgICAgIF1cbiAgICAgIFsgSHRtbC50eHQgXCJGaWxlXCI7IEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY2FyZXRcIiBdIF0gW10gXTtcbiAgICBUeXhtbF9qcy5SLkh0bWwudWxcbiAgICAgIH5hOlsgSHRtbC5hX2lkIGZpbGVfZHJvcGRvd25fbWVudV9pZDsgSHRtbC5hX2NsYXNzIFsgXCJkcm9wZG93bi1tZW51XCIgXSBdXG4gICAgICBsaV9saXN0O1xuICAgIFVpX2NvbW1vbi5jcmVhdGVfbW9kYWwgfmlkOmZpbGVfbmV3X21vZGFsX2lkIH50aXRsZV9sYWJlbDpcIk5ldyBGaWxlXCJcbiAgICAgIH5ib2R5OlxuICAgICAgICBbIFslaHRtbCB7fDxkaXYgY2xhc3M9XCJpbnB1dC1ncm91cFwiPnx9IFsgZmlsZV9uZXdfaW5wdXQgXSB7fDwvZGl2Pnx9XSBdXG4gICAgICB+c3VibWl0X2xhYmVsOlwiQ3JlYXRlIEZpbGVcIlxuICAgICAgfnN1Ym1pdDpcbiAgICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICAgbGV0IGZpbGVuYW1lIDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGZpbGVfbmV3X2lucHV0X2RvbSMjLnZhbHVlIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLmNyZWF0ZV9maWxlIGZpbGVuYW1lIGluXG4gICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgIENvbW1vbi5tb2RhbCB+aWQ6KFwiI1wiIF4gZmlsZV9uZXdfbW9kYWxfaWQpIH5hY3Rpb246XCJoaWRlXCJcbiAgICAgICAgICAgICBpblxuICAgICAgICAgICAgIEpzLl9mYWxzZSkpO1xuICBdXG5cbmxldCBvcmRlcl9maWxlcyAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgPVxuICBsZXQgZmlsZW5hbWVzIDogc3RyaW5nIGxpc3QgPVxuICAgIENvbW1vbi5jaGlsZHJlbl92YWx1ZSBlbGVtZW50IFwibGlbZGF0YS1maWxlLWlkXVwiIChmdW4gZWxlbWVudCAtPlxuICAgICAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgZWxlbWVudCBpblxuICAgICAgICBKcy5PcHQuY2FzZVxuICAgICAgICAgIChlbGVtZW50X2dldF9maWxlbmFtZSBlbGVtZW50KVxuICAgICAgICAgIChmdW4gKCkgLT4gZmFpbHdpdGggXCJtaXNzaW5nIGZpbGVuYW1lXCIpXG4gICAgICAgICAgSnMudG9fc3RyaW5nKVxuICBpblxuICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIub3JkZXJfZmlsZXMgZmlsZW5hbWVzIGluXG4gICgpXG5cbmxldCBmaWxlX3NlbGVjdF9oYW5kbGVyIF8gXyA6IHVuaXQgTHd0LnQgPVxuICBsZXQgb3Blbl9pbnB1dF9kb20gPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgb3Blbl9pbnB1dCBpblxuICBsZXQgZmlsZXMgPSBKcy5PcHRkZWYuZ2V0IG9wZW5faW5wdXRfZG9tIyMuZmlsZXMgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpIGluXG4gIGxldCBmaWxlID0gSnMuT3B0LmdldCAoZmlsZXMjI2l0ZW0gMCkgKGZ1biAoKSAtPiBhc3NlcnQgZmFsc2UpIGluXG4gIGxldCBmaWxlX2lkID0gSnMudG9fc3RyaW5nIGZpbGUjIy5uYW1lIGluXG4gIGxldCAoKSA9XG4gICAgTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLmNyZWF0ZV9maWxlXG4gICAgICB+dGV4dDooSnNfb2Zfb2NhbWxfbHd0LkZpbGUucmVhZEFzVGV4dCBmaWxlKVxuICAgICAgZmlsZV9pZFxuICBpblxuICBsZXQgKCkgPSBvcGVuX2lucHV0X2RvbSMjLnZhbHVlIDo9IEpzLnN0cmluZyBcIlwiIGluXG4gIEx3dC5yZXR1cm5fdW5pdFxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0IG9wZW5faW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IG9wZW5faW5wdXQgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChcIiNcIiBeIGZpbGVfbmV3X2xpX2lkKSBcImNsaWNrXCJcbiAgICAgIChEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSBDb21tb24ubW9kYWwgfmlkOihcIiNcIiBeIGZpbGVfbmV3X21vZGFsX2lkKSB+YWN0aW9uOlwic2hvd1wiIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX29wZW5fbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgICgqIGNsaWNrIDogdW5pdCBKcy5tZXRoOyAqKVxuICAgICAgICAgICBsZXQgKCkgPSBvcGVuX2lucHV0X2RvbSMjY2xpY2sgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChcIiNcIiBeIGZpbGVfY2xvc2VfbGlfaWQpIFwiY2xpY2tcIlxuICAgICAgKERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IE1lbnVfZWRpdG9yX2ZpbGVfY29udHJvbGxlci5jbG9zZV9maWxlICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiAoXCIjXCIgXiBmaWxlX2V4cG9ydF9saV9pZCkgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLmV4cG9ydF9jdXJyZW50X2ZpbGUgKCkgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwic3BhbltkYXRhLWZpbGUtaWRdXCIgXCJjbGlja1wiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIChldmVudCA6IERvbV9odG1sLmV2ZW50IEpzLnQpIC0+XG4gICAgICAgICAgICgqIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBldmVudCBpbiAqKVxuICAgICAgICAgICBsZXQgdGFyZ2V0IDogRG9tX2h0bWwuZWxlbWVudCBKcy50IEpzLm9wdCA9IGV2ZW50IyMudGFyZ2V0IGluXG4gICAgICAgICAgIGxldCBmaWxlX2lkIDogSnMuanNfc3RyaW5nIEpzLnQgSnMub3B0ID1cbiAgICAgICAgICAgICBKcy5PcHQuYmluZCB0YXJnZXQgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgICAgICAgZWxlbWVudF9nZXRfZmlsZW5hbWUgZWxlbWVudClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICBKcy5PcHQuY2FzZSBmaWxlX2lkXG4gICAgICAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgICAgICAoZnVuIGZpbGVfaWQgLT5cbiAgICAgICAgICAgICAgICAgTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLnNldF9maWxlIChKcy50b19zdHJpbmcgZmlsZV9pZCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmNyZWF0ZV9zb3J0IGZpbGVfZHJvcGRvd25fbWVudV9pZCAoZnVuIGV2ZW50IF8gKCogdWkgKikgLT5cbiAgICAgICAgbGV0IHRhcmdldCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCBKcy5vcHQgPSBldmVudCMjLnRhcmdldCBpblxuICAgICAgICBKcy5PcHQuY2FzZSB0YXJnZXRcbiAgICAgICAgICAoZnVuIF8gLT4gKCkpXG4gICAgICAgICAgKGZ1biAoZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgLT5cbiAgICAgICAgICAgIGxldCBpZCA6IHN0cmluZyA9IEpzLnRvX3N0cmluZyBlbGVtZW50IyMuaWQgaW5cbiAgICAgICAgICAgIGlmIGZpbGVfZHJvcGRvd25fbWVudV9pZCA9IGlkIHRoZW5cbiAgICAgICAgICAgICAgb3JkZXJfZmlsZXMgZWxlbWVudFxuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICBDb21tb24uZGVidWcgKEZvcm1hdC5zcHJpbnRmIFwidW5leHBlY3RlZCBpZCAlc1wiIGlkKSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vblxuICAgICAgKEZvcm1hdC5zcHJpbnRmIFwiaW5wdXQuJXNcIiBmaWxlX2NvbXBpbGVfY2hlY2tib3gpXG4gICAgICBcImNoYW5nZVwiXG4gICAgICAoRG9tX2h0bWwuaGFuZGxlciAoZnVuIGV2ZW50IC0+XG4gICAgICAgICAgIGxldCB0YXJnZXQgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgSnMub3B0ID0gZXZlbnQjIy50YXJnZXQgaW5cbiAgICAgICAgICAgbGV0IGZpbGVfaWQgOiBKcy5qc19zdHJpbmcgSnMudCBKcy5vcHQgPVxuICAgICAgICAgICAgIEpzLk9wdC5iaW5kIHRhcmdldCAoZnVuIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAtPlxuICAgICAgICAgICAgICAgICBlbGVtZW50X2dldF9maWxlbmFtZSBlbGVtZW50KVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgaXNfY2hlY2tlZCA6IGJvb2wgPVxuICAgICAgICAgICAgIEpzLnRvX2Jvb2xcbiAgICAgICAgICAgICAgIChKcy5PcHQuY2FzZSB0YXJnZXRcbiAgICAgICAgICAgICAgICAgIChmdW4gXyAtPiBKcy5fZmFsc2UpXG4gICAgICAgICAgICAgICAgICAoZnVuIChlbGVtZW50IDogRG9tX2h0bWwuZWxlbWVudCBKcy50KSAtPlxuICAgICAgICAgICAgICAgICAgICAoSnMuVW5zYWZlLmNvZXJjZSBlbGVtZW50IDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQpIyMuY2hlY2tlZCkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgSnMuT3B0LmNhc2UgZmlsZV9pZFxuICAgICAgICAgICAgICAgKGZ1biBfIC0+ICgpKVxuICAgICAgICAgICAgICAgKGZ1biBmaWxlX2lkIC0+XG4gICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBmaWxlX2lkIGluXG4gICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgTWVudV9lZGl0b3JfZmlsZV9jb250cm9sbGVyLnNldF9maWxlX2NvbXBpbGVcbiAgICAgICAgICAgICAgICAgICAgIChKcy50b19zdHJpbmcgZmlsZV9pZCkgaXNfY2hlY2tlZFxuICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAoKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX2ZhbHNlKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBMd3QuYXN5bmMgKGZ1biAoKSAtPlxuICAgICAgICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzX2V2ZW50cy5jaGFuZ2VzXG4gICAgICAgICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBvcGVuX2lucHV0KVxuICAgICAgICAgIGZpbGVfc2VsZWN0X2hhbmRsZXIpXG4gIGluXG4gICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgd2l0aF9maWxlIChoYW5kbGVyIDogKHN0cmluZyAqIHN0cmluZykgQXBpLnJlc3VsdCAtPiB1bml0IEFwaS5yZXN1bHQgTHd0LnQpXG4gICAgPVxuICBDb21tb24uYXN5bmMgX19MT0NfXyAoZnVuICgpIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIF9fTE9DX18gKFN0YXRlX2ZpbGUuZ2V0X2ZpbGUgKCkgPj49IGhhbmRsZXIpID4+PSBmdW4gXyAtPlxuICAgICAgTHd0LnJldHVybl91bml0KVxuXG5sZXQgc2V0X2NvbnRlbnQgfihmaWxlbmFtZSA6IHN0cmluZykgfihmaWxlY29udGVudCA6IHN0cmluZykgOiB1bml0ID1cbiAgd2l0aF9maWxlXG4gICAgKEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChfLCBjdXJyZW50X2ZpbGVuYW1lKSAtPlxuICAgICAgICAgaWYgZmlsZW5hbWUgPSBjdXJyZW50X2ZpbGVuYW1lIHRoZW5cbiAgICAgICAgICAgU3RhdGVfZmlsZS5zZXRfY29udGVudCBmaWxlY29udGVudCA+Pj0gZnVuIHIgLT5cbiAgICAgICAgICAgU3RhdGVfcHJvamVjdC5zeW5jICgpID4+PSBmdW4gcicgLT5cbiAgICAgICAgICAgTHd0LnJldHVybiAoQXBpX2NvbW1vbi5yZXN1bHRfY29tYmluZSBbIHI7IHInIF0pXG4gICAgICAgICBlbHNlIChcbiAgICAgICAgICAgbGV0IG1zZyA9XG4gICAgICAgICAgICAgRm9ybWF0LnNwcmludGYgXCJmaWxlIG5hbWUgbWlzbWF0Y2ggJXMgJXNcIiBmaWxlbmFtZSBjdXJyZW50X2ZpbGVuYW1lXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBtc2cpXG4gICAgICAgICApKSlcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gQ29kZW1pcnJvclxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgZWRpdG9yX2Z1bGwsIHNldF9lZGl0b3JfZnVsbCA9IFJlYWN0LlMuY3JlYXRlIChmYWxzZSA6IGJvb2wpXG5sZXQgZmlsZW5hbWUsIHNldF9maWxlbmFtZSA9IFJlYWN0LlMuY3JlYXRlIChOb25lIDogc3RyaW5nIG9wdGlvbilcbmxldCBtb3ZlX2N1cnNvcl9ob29rID0gSG9va2VkLkUuY3JlYXRlICgpXG5cbmxldCBmaWxlX2xhYmVsID1cbiAgVHl4bWxfanMuUi5IdG1sLnR4dFxuICAgIChSZWFjdC5TLm1hcCAoT3B0aW9uX3V0aWwudW5zb21lIFwiXCIpIFN0YXRlX2ZpbGUuY3VycmVudF9maWxlbmFtZSlcblxubGV0IHRvZ2dsZV9idXR0b25faWQgPSBcInRvZ2dsZV9idXR0b25cIlxuXG5sZXQgdG9nZ2xlX2J1dHRvbiA9XG4gIEh0bWwuYVxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfaWQgdG9nZ2xlX2J1dHRvbl9pZDtcbiAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImJ1dHRvblwiO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCI7IFwicHVsbC1yaWdodFwiIF07XG4gICAgICBdXG4gICAgWyBIdG1sLmNkYXRhIFwidG9nZ2xlXCIgXVxuXG5sZXQgcGFuZWxfaGVhZGluZ19ncm91cF9pZCA9IFwicGFuZWxfaGVhZGluZ19ncm91cFwiXG5cbmxldCBwYW5lbF9oZWFkaW5nID1cbiAgbGV0IG1lbnVfZWRpdG9yX2ZpbGVfY29udGVudCA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gVHl4bWxfanMuSHRtbDUuZWx0ID1cbiAgICBIdG1sLmRpdlxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImJ0bi1ncm91cFwiIF07IEh0bWwuVW5zYWZlLnN0cmluZ19hdHRyaWIgXCJyb2xlXCIgXCJncm91cFwiO1xuICAgICAgICBdXG4gICAgICBNZW51X2VkaXRvcl9maWxlLmNvbnRlbnRcbiAgaW5cbiAgbGV0IGJ1dHRvbnMgPSBtZW51X2VkaXRvcl9maWxlX2NvbnRlbnQgOjogWyB0b2dnbGVfYnV0dG9uIF0gaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgPGRpdiBpZD1cInx9XG4gICAgICBwYW5lbF9oZWFkaW5nX2dyb3VwX2lkIHt8XCIgY2xhc3M9XCJjb2wtbWQtMTAgYnRuLWdyb3VwXCI+fH0gYnV0dG9uc1xuICAgICAge3w8L2Rpdj5cbiAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJjb2wtbWQtMiBvbmVsaW5lciBmaWxlbmFtZVwiPnx9XG4gICAgICBbIGZpbGVfbGFiZWwgXVxuICAgICAge3w8L2xhYmVsPlxuICAgICAgICAgICAgPC9kaXY+fH1dXG5cbmxldCBjb2RlbWlycm9yX2lkID0gXCJjb2RlLW1pcnJvclwiXG5sZXQgZWRpdG9yX3BhbmVsX2lkID0gXCJlZGl0b3ItcGFuZWxcIlxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCB0ZXh0YXJlYSA9IEh0bWwudGV4dGFyZWEgfmE6WyBIdG1sLmFfaWQgY29kZW1pcnJvcl9pZCBdIChIdG1sLnR4dCBcIlwiKSBpblxuICBIdG1sLmRpdlxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4LWNvbnRlbnRcIjsgXCJwYW5lbFwiOyBcInBhbmVsLWRlZmF1bHRcIiBdIF1cbiAgICBbXG4gICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtaGVhZGluZ1wiIF0gXSBbIHBhbmVsX2hlYWRpbmcgXTtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgICAoZnVuIG1vZGVsIC0+XG4gICAgICAgICAgICAgICAgICAgbWF0Y2ggbW9kZWwuU3RhdGVfZmlsZS5jdXJyZW50IHdpdGhcbiAgICAgICAgICAgICAgICAgICB8IE5vbmUgLT5cbiAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5oaWRlX2NvZGVtaXJyb3IgKCkgaW5cbiAgICAgICAgICAgICAgICAgICAgIFsgXCJuby1wYW5lbC1ib2R5XCI7IFwiZmxleC1jb250ZW50XCIgXVxuICAgICAgICAgICAgICAgICAgIHwgU29tZSBfIC0+XG4gICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uc2hvd19jb2RlbWlycm9yICgpIGluXG4gICAgICAgICAgICAgICAgICAgICBbIFwicGFuZWwtYm9keVwiOyBcImZsZXgtY29udGVudFwiIF0pXG4gICAgICAgICAgICAgICAgIFN0YXRlX2ZpbGUubW9kZWwpO1xuICAgICAgICAgICAgSHRtbC5hX2lkIGVkaXRvcl9wYW5lbF9pZDtcbiAgICAgICAgICBdXG4gICAgICAgIFsgdGV4dGFyZWEgXTtcbiAgICBdXG5cbmxldCBlcnJvcl9saW50IChlcnJvcnMgOiBSZXN1bHRfdXRpbC5tZXNzYWdlIGxpc3QpIDpcbiAgICBDb2RlbWlycm9yLmxpbnQgSnMudCBKcy5qc19hcnJheSBKcy50ID1cbiAgbGV0IHBvc2l0aW9uIHAgPSBuZXclanMgQ29kZW1pcnJvci5wb3NpdGlvbiAocC5Mb2MubGluZSAtIDEpIHAuTG9jLmNociBpblxuICBsZXQgaHlkcmF0ZSAoZXJyb3IgOiBBcGlfdHlwZXNfai5tZXNzYWdlKSA6IGxpbnQgSnMudCBvcHRpb24gPVxuICAgIG1hdGNoIGVycm9yLlJlc3VsdF91dGlsLnJhbmdlIHdpdGhcbiAgICB8IE5vbmUgLT4gTm9uZVxuICAgIHwgU29tZSByYW5nZSAtPlxuICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgU3RhdGVfZmlsZS5jdXJyZW50X2ZpbGVuYW1lIHdpdGhcbiAgICAgIHwgTm9uZSAtPiBOb25lXG4gICAgICB8IFNvbWUgZmlsZV9pZCAtPlxuICAgICAgICBpZiByYW5nZS5Mb2MuZmlsZSA9IGZpbGVfaWQgdGhlblxuICAgICAgICAgIFNvbWVcbiAgICAgICAgICAgIChDb2RlbWlycm9yLmNyZWF0ZV9saW50XG4gICAgICAgICAgICAgICB+bWVzc2FnZTplcnJvci5SZXN1bHRfdXRpbC50ZXh0XG4gICAgICAgICAgICAgICAgICgqIFRoaXMgaXMgYSBiaXQgb2YgYSBoYWNrIC4uLiBpIGFtIHRyeWluZyB0byBrZWVwXG4gICAgICAgICAgICAgICAgICAgICAgdGhlIGNvZGUgbWlycm9yIGNvZGUgaW5kZXBlbmRlbnQgb2YgdGhlIGFwaSBjb2RlLlxuICAgICAgICAgICAgICAgICAqKVxuICAgICAgICAgICAgICAgfnNldmVyaXR5OlxuICAgICAgICAgICAgICAgICAobWF0Y2ggZXJyb3IuUmVzdWx0X3V0aWwuc2V2ZXJpdHkgd2l0aFxuICAgICAgICAgICAgICAgICB8IExvZ3MuQXBwIC0+IENvZGVtaXJyb3IuRXJyb3JcbiAgICAgICAgICAgICAgICAgfCBMb2dzLkVycm9yIC0+IENvZGVtaXJyb3IuRXJyb3JcbiAgICAgICAgICAgICAgICAgfCBMb2dzLldhcm5pbmcgLT4gQ29kZW1pcnJvci5XYXJuaW5nXG4gICAgICAgICAgICAgICAgIHwgTG9ncy5JbmZvIC0+IENvZGVtaXJyb3IuV2FybmluZ1xuICAgICAgICAgICAgICAgICB8IExvZ3MuRGVidWcgLT4gQ29kZW1pcnJvci5XYXJuaW5nKVxuICAgICAgICAgICAgICAgfmZyb206KHBvc2l0aW9uIHJhbmdlLkxvYy5mcm9tX3Bvc2l0aW9uKVxuICAgICAgICAgICAgICAgfnRvXzoocG9zaXRpb24gcmFuZ2UuTG9jLnRvX3Bvc2l0aW9uKSlcbiAgICAgICAgZWxzZVxuICAgICAgICAgIE5vbmUpXG4gIGluXG4gIEpzLmFycmF5XG4gICAgKEFycmF5Lm9mX2xpc3RcbiAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAoZnVuIGFjYyB2YWx1ZSAtPlxuICAgICAgICAgICAgbWF0Y2ggaHlkcmF0ZSB2YWx1ZSB3aXRoXG4gICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICB8IFNvbWUgdmFsdWUgLT4gdmFsdWUgOjogYWNjKVxuICAgICAgICAgIFtdIGVycm9ycykpXG5cbigqIGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTA1NzUzNDMvY29kZW1pcnJvci1pcy1pdC1wb3NzaWJsZS10by1zY3JvbGwtdG8tYS1saW5lLXNvLXRoYXQtaXQtaXMtaW4tdGhlLW1pZGRsZS1vZi13ICopXG5sZXQganVtcF90b19saW5lIChjb2RlbWlycm9yIDogY29kZW1pcnJvciBKcy50KSAobGluZSA6IGludCkgOiB1bml0ID1cbiAgbGV0IHBvc2l0aW9uIDogcG9zaXRpb24gSnMudCA9IG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIGxpbmUgMCBpblxuICBsZXQgbW9kZSA6IEpzLmpzX3N0cmluZyBKcy50IEpzLm9wdCA9IEpzLnNvbWUgKEpzLnN0cmluZyBcImxvY2FsXCIpIGluXG4gIGxldCBjb29yZHMgOiBDb2RlbWlycm9yLmRpbWVuc2lvbiBKcy50ID1cbiAgICBjb2RlbWlycm9yIyNjaGFyQ29vcmRzIHBvc2l0aW9uIG1vZGVcbiAgaW5cbiAgbGV0IHRvcCA6IGludCA9IGNvb3JkcyMjLnRvcCBpblxuICBsZXQgZWxlbWVudCA6IERvbV9odG1sLmVsZW1lbnQgSnMudCA9IGNvZGVtaXJyb3IjI2dldFNjcm9sbGVyRWxlbWVudCBpblxuICBsZXQgbWlkZGxlSGVpZ2h0IDogaW50ID0gZWxlbWVudCMjLm9mZnNldEhlaWdodCAvIDIgaW5cbiAgbGV0IHNjcm9sbExpbmUgOiBpbnQgPSB0b3AgLSBtaWRkbGVIZWlnaHQgLSA1IGluXG4gIGxldCAoKSA9IGNvZGVtaXJyb3IjI3Njcm9sbFRvIEpzLm51bGwgKEpzLnNvbWUgc2Nyb2xsTGluZSkgaW5cbiAgKClcblxubGV0IG9ubG9hZCAoKSA6IHVuaXQgPVxuICBsZXQgKCkgPSBNZW51X2VkaXRvcl9maWxlLm9ubG9hZCAoKSBpblxuICBsZXQgbGludF9jb25maWcgPSBDb2RlbWlycm9yLmNyZWF0ZV9saW50X2NvbmZpZ3VyYXRpb24gKCkgaW5cbiAgbGV0ICgpID1cbiAgICBIb29rZWQuUy5yZWdpc3RlciBTdGF0ZV9lcnJvci5lcnJvcnMgKGZ1biBlcnJvcnMgLT5cbiAgICAgICAgbGV0IHNldHVwX2xpbnQgXyBfIF8gPSBlcnJvcl9saW50IGVycm9ycyBpblxuICAgICAgICBsaW50X2NvbmZpZyMjLmdldEFubm90YXRpb25zIDo9IHNldHVwX2xpbnQpXG4gIGluXG4gIGxldCAoKSA9IGxpbnRfY29uZmlnIyMubGludE9uQ2hhbmdlIDo9IEpzLl9mYWxzZSBpblxuICBsZXQgY29uZmlndXJhdGlvbiA9IENvZGVtaXJyb3IuZGVmYXVsdF9jb25maWd1cmF0aW9uIGluXG4gIGxldCBndXR0ZXJfb3B0aW9ucyA9XG4gICAgSnMuc3RyaW5nIFwiYnJlYWtwb2ludHMsQ29kZU1pcnJvci1saW50LW1hcmtlcnMsQ29kZU1pcnJvci1saW5lbnVtYmVyc1wiXG4gIGluXG4gIGxldCBndXR0ZXJfb3B0aW9uIDogSnMuc3RyaW5nX2FycmF5IEpzLnQgPVxuICAgIGd1dHRlcl9vcHRpb25zIyNzcGxpdCAoSnMuc3RyaW5nIFwiLFwiKVxuICBpblxuICBsZXQgdGV4dGFyZWEgOiBEb21faHRtbC5lbGVtZW50IEpzLnQgPSBVaV9jb21tb24uaWRfZG9tIFwiY29kZS1taXJyb3JcIiBpblxuICBsZXQgKCkgPVxuICAgIGNvbmZpZ3VyYXRpb24jIy5saW5lTnVtYmVycyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMubGluZVdyYXBwaW5nIDo9IEpzLl90cnVlO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5zdHlsZUFjdGl2ZUxpbmUgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLm1hdGNoQnJhY2tldHMgOj0gSnMuX3RydWU7XG4gICAgY29uZmlndXJhdGlvbiMjLmF1dG9mb2N1cyA6PSBKcy5fdHJ1ZTtcbiAgICBjb25maWd1cmF0aW9uIyMuZ3V0dGVycyA6PSBndXR0ZXJfb3B0aW9uO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5saW50IDo9IGxpbnRfY29uZmlnO1xuICAgIGNvbmZpZ3VyYXRpb24jIy5tb2RlIDo9IEpzLnN0cmluZyBcIkthcHBhXCJcbiAgaW5cbiAgbGV0IGNvZGVtaXJyb3IgOiBjb2RlbWlycm9yIEpzLnQgPVxuICAgIENvZGVtaXJyb3IuZnJvbVRleHRBcmVhIHRleHRhcmVhIGNvbmZpZ3VyYXRpb25cbiAgaW5cbiAgbGV0ICgpID0gY29kZW1pcnJvciMjc2V0VmFsdWUgKEpzLnN0cmluZyBcIlwiKSBpblxuICBsZXQgKCkgPVxuICAgIFN1YnBhbmVsX2VkaXRvcl9jb250cm9sbGVyLndpdGhfZmlsZVxuICAgICAgKFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgIH5vazooZnVuIChjb250ZW50LCBpZCkgLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIGlkKSBpblxuICAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSAoSnMuc3RyaW5nIGNvbnRlbnQpIGluXG4gICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSlcbiAgICAgICAgIH5lcnJvcjooZnVuIF8gLT5cbiAgICAgICAgICAgKCogaWdub3JlIGlmIG1pc3NpbmcgZmlsZSAqKVxuICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvZGVtaXJyb3IuY29tbWFuZHMjIy5zYXZlIDo9XG4gICAgICBmdW4gXyAtPiBNZW51X2VkaXRvcl9maWxlX2NvbnRyb2xsZXIuZXhwb3J0X2N1cnJlbnRfZmlsZSAoKVxuICBpblxuICBsZXQgdGltZW91dCA6IERvbV9odG1sLnRpbWVvdXRfaWQgb3B0aW9uIHJlZiA9IHJlZiBOb25lIGluXG4gIGxldCBoYW5kbGVyIGNvZGVtaXJyb3IgY2hhbmdlID1cbiAgICBsZXQgKCkgPSBTdGF0ZV9maWxlLm91dF9vZl9zeW5jIHRydWUgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgbWF0Y2ggIXRpbWVvdXQgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgdGltZW91dCAtPiBEb21faHRtbC53aW5kb3cjI2NsZWFyVGltZW91dCB0aW1lb3V0XG4gICAgaW5cbiAgICBsZXQgZGVsYXkgOiBmbG9hdCA9XG4gICAgICBpZiAoSnMuc3RyX2FycmF5IGNoYW5nZSMjLnRleHQpIyMubGVuZ3RoID4gMSB8fCBTdGF0ZV9lcnJvci5oYXNfZXJyb3JzICgpXG4gICAgICB0aGVuXG4gICAgICAgIDEuMCAqLiAxMDAwLjBcbiAgICAgIGVsc2VcbiAgICAgICAgNS4wICouIDEwMDAuMFxuICAgIGluXG4gICAgbGV0IGhhbmRsZV90aW1lb3V0ICgpID1cbiAgICAgIGxldCAoKSA9IFN0YXRlX2ZpbGUub3V0X29mX3N5bmMgZmFsc2UgaW5cbiAgICAgIG1hdGNoIFJlYWN0LlMudmFsdWUgZmlsZW5hbWUgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgZmlsZW5hbWUgLT5cbiAgICAgICAgU3VicGFuZWxfZWRpdG9yX2NvbnRyb2xsZXIuc2V0X2NvbnRlbnQgfmZpbGVuYW1lXG4gICAgICAgICAgfmZpbGVjb250ZW50OihKcy50b19zdHJpbmcgY29kZW1pcnJvciMjZ2V0VmFsdWUpXG4gICAgaW5cbiAgICBsZXQgKCkgPVxuICAgICAgdGltZW91dCA6PVxuICAgICAgICBTb21lXG4gICAgICAgICAgKERvbV9odG1sLndpbmRvdyMjc2V0VGltZW91dFxuICAgICAgICAgICAgIChKcy53cmFwX2NhbGxiYWNrIChmdW4gXyAtPiBoYW5kbGVfdGltZW91dCAoKSkpXG4gICAgICAgICAgICAgZGVsYXkpXG4gICAgaW5cbiAgICAoKVxuICBpblxuICBsZXQgKCkgPSBjb2RlbWlycm9yIyNvbkNoYW5nZSBoYW5kbGVyIGluXG4gIGxldCAoKSA9XG4gICAgY29kZW1pcnJvciMjb25DdXJzb3JBY3Rpdml0eSAoZnVuIF9jb2RlbWlycm9yIC0+XG4gICAgICAgIGxldCBwb3MgPSBjb2RlbWlycm9yIyNnZXRDdXJzb3IgaW5cbiAgICAgICAgbGV0IGxpbmUgPSBwb3MjIy5saW5lIGluXG4gICAgICAgIGxldCBjaCA9IHBvcyMjLmNoIGluXG4gICAgICAgIFN0YXRlX2ZpbGUuY3Vyc29yX2FjdGl2aXR5IH5saW5lIH5jaClcbiAgaW5cbiAgbGV0IHRvZ2dsZV9idXR0b25fZG9tIDogRG9tX2h0bWwubGlua0VsZW1lbnQgSnMudCA9XG4gICAgSnMuVW5zYWZlLmNvZXJjZVxuICAgICAgKEpzLk9wdC5nZXRcbiAgICAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgdG9nZ2xlX2J1dHRvbl9pZCkpXG4gICAgICAgICAoZnVuICgpIC0+IGFzc2VydCBmYWxzZSkpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgdG9nZ2xlX2J1dHRvbl9kb20jIy5vbmNsaWNrXG4gICAgOj0gRG9tLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCBlZGl0b3JfZnVsbCA9IFJlYWN0LlMudmFsdWUgZWRpdG9yX2Z1bGwgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2V0X2VkaXRvcl9mdWxsIChub3QgZWRpdG9yX2Z1bGwpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIEhvb2tlZC5TLnJlZ2lzdGVyIFN0YXRlX2Vycm9yLmVycm9ycyAoZnVuIF9lcnJvcnMgLT5cbiAgICAgICAgY29kZW1pcnJvciMjcGVyZm9ybUxpbnQpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgSG9va2VkLkUucmVnaXN0ZXIgU3RhdGVfZmlsZS5yZWZyZXNoX2ZpbGVfaG9vayAoZnVuIHJlZnJlc2ggLT5cbiAgICAgICAgbGV0ICgpID0gc2V0X2ZpbGVuYW1lIChTb21lIHJlZnJlc2guU3RhdGVfZmlsZS5maWxlbmFtZSkgaW5cbiAgICAgICAgbGV0IGNhbmQgPSBKcy5zdHJpbmcgcmVmcmVzaC5TdGF0ZV9maWxlLmNvbnRlbnQgaW5cbiAgICAgICAgaWYgY2FuZCA8PiBjb2RlbWlycm9yIyNnZXRWYWx1ZSB0aGVuIChcbiAgICAgICAgICBsZXQgKCkgPSBjb2RlbWlycm9yIyNzZXRWYWx1ZSBjYW5kIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIG1hdGNoIHJlZnJlc2guU3RhdGVfZmlsZS5saW5lIHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiAoKVxuICAgICAgICAgICAgfCBTb21lIGxpbmUgLT4ganVtcF90b19saW5lIGNvZGVtaXJyb3IgbGluZVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBIb29rZWQuRS5yZWdpc3RlciBtb3ZlX2N1cnNvcl9ob29rIChmdW4gcG9zIC0+XG4gICAgICAgIGlmIFNvbWUgcG9zLkxvYy5maWxlID0gUmVhY3QuUy52YWx1ZSBmaWxlbmFtZSB0aGVuIChcbiAgICAgICAgICBsZXQgYmVnID0gcG9zLkxvYy5mcm9tX3Bvc2l0aW9uIGluXG4gICAgICAgICAgbGV0IGZpcnN0ID1cbiAgICAgICAgICAgIG5ldyVqcyBDb2RlbWlycm9yLnBvc2l0aW9uIChiZWcuTG9jLmxpbmUgLSAxKSBiZWcuTG9jLmNoclxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0IGVuID0gcG9zLkxvYy5mcm9tX3Bvc2l0aW9uIGluXG4gICAgICAgICAgbGV0IGxhc3QgPSBuZXclanMgQ29kZW1pcnJvci5wb3NpdGlvbiAoZW4uTG9jLmxpbmUgLSAxKSBlbi5Mb2MuY2hyIGluXG4gICAgICAgICAgY29kZW1pcnJvciMjc2V0U2VsZWN0aW9uIGZpcnN0IGxhc3RcbiAgICAgICAgKSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IHByaW50X3N0cmluZyBzIGxpc3QgPSBIdG1sLnR4dCBzIDo6IGxpc3RcbmxldCBwcmludF9uZXdsaW5lIGxpc3QgPSBwcmludF9zdHJpbmcgXCJcXG5cIiBsaXN0XG5cbmxldCBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBhIGxpc3QgPVxuICBwcmludF9zdHJpbmcgUHVibGljX2RhdGEuYmluZGluZ19zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sXG4gICAgKHByaW50X3N0cmluZyBhXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5iaW5kaW5nX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgbGlzdCkpXG5cbmxldCBwcmludF9zaW5nbGVfaW50ZXJuYWxfc3RhdGUgYSBsaXN0ID1cbiAgcHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmludGVybmFsX3N0YXRlX29wZW5pbmdfYmFja2VuZF9zeW1ib2xcbiAgICAocHJpbnRfc3RyaW5nIGFcbiAgICAgICAocHJpbnRfc3RyaW5nIFB1YmxpY19kYXRhLmludGVybmFsX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgbGlzdCkpXG5cbmxldCBwcmludF9jb3VudGVyX2ludGVydmFsIChhLCBiKSBsaXN0ID1cbiAgbGV0IG9wZW5fcmFuZ2UsIGluZiA9XG4gICAgbWF0Y2ggYSB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAoIFB1YmxpY19kYXRhLm9wZW5faW50ZXJ2YWxfZXhjbHVzaXZlX3N5bWJvbCxcbiAgICAgICAgUHVibGljX2RhdGEubWludXNfaW5maW5pdHlfc3ltYm9sIClcbiAgICB8IFNvbWUgYSAtPiBQdWJsaWNfZGF0YS5vcGVuX2ludGVydmFsX2luY2x1c2l2ZV9zeW1ib2wsIHN0cmluZ19vZl9pbnQgYVxuICBpblxuICBsZXQgY2xvc2VfcmFuZ2UsIHN1cCA9XG4gICAgbWF0Y2ggYiB3aXRoXG4gICAgfCBOb25lIC0+XG4gICAgICAoIFB1YmxpY19kYXRhLmNsb3NlX2ludGVydmFsX2V4Y2x1c2l2ZV9zeW1ib2wsXG4gICAgICAgIFB1YmxpY19kYXRhLnBsdXNfaW5maW5pdHlfc3ltYm9sIClcbiAgICB8IFNvbWUgYiAtPiBQdWJsaWNfZGF0YS5jbG9zZV9pbnRlcnZhbF9pbmNsdXNpdmVfc3ltYm9sLCBzdHJpbmdfb2ZfaW50IGJcbiAgaW5cbiAgcHJpbnRfc3RyaW5nIG9wZW5fcmFuZ2VcbiAgICAocHJpbnRfc3RyaW5nIGluZlxuICAgICAgIChwcmludF9zdHJpbmcgUHVibGljX2RhdGEuY291bnRlcl9zdGF0ZV9yYW5nZV9iYWNrZW5kX3N5bWJvbFxuICAgICAgICAgIChwcmludF9zdHJpbmcgc3VwIChwcmludF9zdHJpbmcgY2xvc2VfcmFuZ2UgbGlzdCkpKSlcblxubGV0IHByaW50X2NvdW50ZXJfc3RhdGUgKGEsIGIpIGxpc3QgPVxuICBwcmludF9zdHJpbmcgUHVibGljX2RhdGEuY291bnRlcl9zdGF0ZV9vcGVuaW5nX2JhY2tlbmRfc3ltYm9sXG4gICAgKHByaW50X2NvdW50ZXJfaW50ZXJ2YWwgKGEsIGIpXG4gICAgICAgKHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5jb3VudGVyX3N0YXRlX2Nsb3NpbmdfYmFja2VuZF9zeW1ib2wgbGlzdCkpXG5cbmxldCBwcmludF9zaXRlIHNpdGUgbGlzdCA9XG4gIGxldCBzaXRlX25hbWUsIHByb3Bfb3B0LCBiaW5kaW5nX29wdCwgY291bnRlcl9vcHQgPSBzaXRlIGluXG4gIGxldCBsaXN0ID1cbiAgICBtYXRjaCBiaW5kaW5nX29wdCB3aXRoXG4gICAgfCBOb25lIC0+IHByaW50X3N0cmluZyBQdWJsaWNfZGF0YS5taXNzaW5nX2JpbmRpbmdfc2l0ZV9iYWNrZW5kX3N5bWJvbCBsaXN0XG4gICAgfCBTb21lIFB1YmxpY19kYXRhLkZyZWUgLT5cbiAgICAgIHByaW50X3NpbmdsZV9iaW5kaW5nX3N0YXRlIFB1YmxpY19kYXRhLmZyZWVfYmFja2VuZF9zeW1ib2wgbGlzdFxuICAgIHwgU29tZSBQdWJsaWNfZGF0YS5XaWxkY2FyZCAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgUHVibGljX2RhdGEud2lsZGNhcmRfYmFja2VuZF9zeW1ib2wgbGlzdFxuICAgIHwgU29tZSBQdWJsaWNfZGF0YS5Cb3VuZF90b191bmtub3duIC0+XG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZSBQdWJsaWNfZGF0YS5ib3VuZF90b191bmtub3duX2JhY2tlbmRfc3ltYm9sXG4gICAgICAgIGxpc3RcbiAgICB8IFNvbWUgKFB1YmxpY19kYXRhLkJpbmRpbmdfdHlwZSAoYWdlbnRfbmFtZSwgc2l0ZV9uYW1lKSkgLT5cbiAgICAgIGxldCBiaW5kaW5nX3R5cGVfc3ltYm9sID0gUHVibGljX2RhdGEuYmluZGluZ190eXBlX2JhY2tlbmRfc3ltYm9sIGluXG4gICAgICBwcmludF9zaW5nbGVfYmluZGluZ19zdGF0ZVxuICAgICAgICAoUHVibGljX2RhdGEuc3RyaW5nX29mX2JpbmRpbmdfdHlwZSB+YmluZGluZ190eXBlX3N5bWJvbCB+YWdlbnRfbmFtZVxuICAgICAgICAgICB+c2l0ZV9uYW1lICgpKVxuICAgICAgICBsaXN0XG4gICAgfCBTb21lIChQdWJsaWNfZGF0YS5Cb3VuZF90byBpKSAtPlxuICAgICAgcHJpbnRfc2luZ2xlX2JpbmRpbmdfc3RhdGUgKHN0cmluZ19vZl9pbnQgaSkgbGlzdFxuICBpblxuICBsZXQgbGlzdCA9XG4gICAgbWF0Y2ggY291bnRlcl9vcHQgd2l0aFxuICAgIHwgTm9uZSAtPiBsaXN0XG4gICAgfCBTb21lIGEgLT4gcHJpbnRfY291bnRlcl9zdGF0ZSBhIGxpc3RcbiAgaW5cbiAgbGV0IGxpc3QgPVxuICAgIG1hdGNoIHByb3Bfb3B0IHdpdGhcbiAgICB8IE5vbmUgLT4gbGlzdFxuICAgIHwgU29tZSBhIC0+IHByaW50X3NpbmdsZV9pbnRlcm5hbF9zdGF0ZSBhIGxpc3RcbiAgaW5cbiAgcHJpbnRfc3RyaW5nIHNpdGVfbmFtZSBsaXN0XG5cbmxldCBwcmludF9hZ2VudCBhZ2VudCBsaXN0ID1cbiAgbGV0IGFnZW50X25hbWUsIGludGVyZmFjZSA9IGFnZW50IGluXG4gIGxldCBsaXN0ID0gcHJpbnRfc3RyaW5nIFwiKVwiIGxpc3QgaW5cbiAgbGV0IGxpc3QgPVxuICAgIHNuZFxuICAgICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAoZnVuIChiLCBsaXN0KSBzaXRlIC0+XG4gICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICBpZiBiIHRoZW5cbiAgICAgICAgICAgICAgIHByaW50X3N0cmluZyBcIixcIiBsaXN0XG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgbGlzdCA9IHByaW50X3NpdGUgc2l0ZSBsaXN0IGluXG4gICAgICAgICAgIHRydWUsIGxpc3QpXG4gICAgICAgICAoZmFsc2UsIGxpc3QpIGludGVyZmFjZSlcbiAgaW5cbiAgbGV0IGxpc3QgPSBIdG1sLnR4dCBcIihcIiA6OiBsaXN0IGluXG4gIGxldCBsaXN0ID0gSHRtbC50eHQgYWdlbnRfbmFtZSA6OiBsaXN0IGluXG4gIGxpc3RcblxubGV0IHByaW50X3NpdGVfZ3JhcGggYWdlbnRfbGlzdCBsaXN0ID1cbiAgc25kXG4gICAgKExpc3QuZm9sZF9sZWZ0XG4gICAgICAgKGZ1biAoYiwgbGlzdCkgYWdlbnQgLT5cbiAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgaWYgYiB0aGVuXG4gICAgICAgICAgICAgcHJpbnRfc3RyaW5nIFwiLFwiIGxpc3RcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgIGluXG4gICAgICAgICB0cnVlLCBwcmludF9hZ2VudCBhZ2VudCBsaXN0KVxuICAgICAgIChmYWxzZSwgbGlzdCkgKExpc3QucmV2IGFnZW50X2xpc3QpKVxuXG5sZXQgcHJpbnRfbWV0aG9kX2hhbmRsZXIgbWggPVxuICBsZXQgdW5jYXVnaHQgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X3VuY2F1Z2h0X2V4Y2VwdGlvbl9saXN0IG1oIGluXG4gIGxldCBjYXVnaHQgPSBFeGNlcHRpb25fd2l0aG91dF9wYXJhbWV0ZXIuZ2V0X2NhdWdodF9leGNlcHRpb25fbGlzdCBtaCBpblxuICBMaXN0LmZvbGRfcmlnaHRcbiAgICAoZnVuIHggbCAtPlxuICAgICAgSHRtbC5wXG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLnR4dFxuICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIiVhXCIgRXhjZXB0aW9uX3dpdGhvdXRfcGFyYW1ldGVyLnBwX2NhdWdodCB4KTtcbiAgICAgICAgXVxuICAgICAgOjogbClcbiAgICBjYXVnaHRcbiAgICAoTGlzdC5tYXBcbiAgICAgICAoZnVuIHggLT5cbiAgICAgICAgIEh0bWwucFxuICAgICAgICAgICBbXG4gICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCIlYVwiIEV4Y2VwdGlvbl93aXRob3V0X3BhcmFtZXRlci5wcF91bmNhdWdodCB4KTtcbiAgICAgICAgICAgXSlcbiAgICAgICB1bmNhdWdodClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxuXG4oKiB0b2RvIGFkZCBidXR0b24gdG8gc3dpdGNoIG9uL29mZiB0aGUgZGlzcGxheSBvZiB0aGUgaW5mb3JtYXRpb24gb2YgZWFjaCBhYnN0cmFjdCBkb21haW5cbiAgIGxldCBub25fcmVsYXRpb25hbCA9IHJlZiB0cnVlXG4gICBsZXQgcmVsYXRpb25hbCA9IHJlZiB0cnVlXG4gICBsZXQgc2l0ZV9hY2Nyb3NzID0gcmVmIHRydWVcbiAgIGxldCBwYXJhbGxlbF9ib25kID0gcmVmIHRydWVcbiopXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IGNvbnN0cmFpbnRzX2RpdiA9XG4gICAgU3RhdGVfcHJvamVjdC5vbl9wcm9qZWN0X2NoYW5nZV9hc3luYyB+b246dGFiX2lzX2FjdGl2ZSAoKVxuICAgICAgKFJlYWN0LlMuY29uc3QgKCkpIFtdIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgKCkgLT5cbiAgICAgICAgbWFuYWdlciNnZXRfY29uc3RyYWludHNfbGlzdFxuICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICB+b2s6KGZ1biBjb25zdHJhaW50cyAtPlxuICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAoZnVuIHBhbmVscyAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgICAgKCptYXRjaCBiIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgfCBbXSAtPiBwYW5lbHNcbiAgICAgICAgICAgICAgICAgICAgICAgICB8IF8gOjogXyAtPiopXG4gICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0cyA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCBsZW1tYSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgaHlwID0gUHVibGljX2RhdGEuZ2V0X2h5cCBsZW1tYSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgY29uY2x1c2lvbiA9IFB1YmxpY19kYXRhLmdldF9yZWZpbmVtZW50IGxlbW1hIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBjb25jbHVzaW9uIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFsgc2l0ZV9ncmFwaCBdIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVdGlsaXR5LnByaW50X3NpdGVfZ3JhcGggc2l0ZV9ncmFwaFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gfCBbXSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X25ld2xpbmUgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X3N0cmluZyBcIiBdXCIgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIChib29sLCBsaXN0KSBhIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJvb2wgdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc3RyaW5nIFwiIHYgXCIgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXRpbGl0eS5wcmludF9zaXRlX2dyYXBoIGEgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUsIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZhbHNlLCBsaXN0KSAoTGlzdC5yZXYgY29uY2x1c2lvbikpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBVdGlsaXR5LnByaW50X3N0cmluZyBcIlsgXCIgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfc3RyaW5nIFwiICA9PiAgXCIgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IFV0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBoeXAgbGlzdCBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KVxuICAgICAgICAgICAgICAgICAgICAgICAgW10gKExpc3QucmV2IGIpXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9XG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1oZWFkaW5nXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgICAgICBbIEh0bWwudHh0IGEgXVxuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBsZXQgY29udGVudCA9XG4gICAgICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtcHJlXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgICAgICB0ZXh0c1xuICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbFwiOyBcInBhbmVsLWRlZmF1bHRcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgICBbIHRpdGxlOyBjb250ZW50IF1cbiAgICAgICAgICAgICAgICAgICAgOjogcGFuZWxzKVxuICAgICAgICAgICAgICAgICAgW10gY29uc3RyYWludHMpXG4gICAgICAgICAgICAgIH5lcnJvcjooZnVuIHIgLT5cbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPVxuICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLWhlYWRpbmdcIiBdIF1cbiAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIkthU2EgaGFzIGZhaWxlZFwiIF1cbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBjb250ZW50ID1cbiAgICAgICAgICAgICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1ib2R5XCI7IFwicGFuZWwtcHJlXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslYUBdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5wcmludF9tZXNzYWdlIG0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICAgcilcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIGxldCBvdXQgPVxuICAgICAgICAgICAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICAgICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsXCI7IFwicGFuZWwtZGFuZ2VyXCIgXSBdXG4gICAgICAgICAgICAgICAgICAgIFsgdGl0bGU7IGNvbnRlbnQgXVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgWyBvdXQgXSkpXG4gIGluXG4gIFtcbiAgICBUeXhtbF9qcy5SLkh0bWw1LmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBjb25zdHJhaW50c19kaXYpO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29uc3RyYWludHNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2Y29uc3RyYWludHNcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSB0cnVlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIHRydWUpXG4gIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBjb250YWN0X21hcCA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcmVkcmF3IDogdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBjbGVhckRhdGEgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX2NvbnRhY3RfbWFwIChpZCA6IHN0cmluZykgKGNvbG9yaW5nIDogdW5pdCBKcy50KSA6IGNvbnRhY3RfbWFwIEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiQ29udGFjdE1hcFwiKVxuICAgIFt8IEpzLlVuc2FmZS5pbmplY3QgKEpzLnN0cmluZyBpZCk7IEpzLlVuc2FmZS5pbmplY3QgY29sb3JpbmcgfF1cbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxudHlwZSBoYW5kbGVyID0geyBzdWZmaXg6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgZXhwb3J0OiBzdHJpbmcgLT4gdW5pdCB9XG5cbnR5cGUgY29uZmlndXJhdGlvbiA9IHtcbiAgaWQ6IHN0cmluZztcbiAgaGFuZGxlcnM6IGhhbmRsZXIgbGlzdDtcbiAgc2hvdzogYm9vbCBSZWFjdC5zaWduYWw7XG59XG5cbmxldCBleHBvcnRfZm9ybWF0X2lkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgOiBzdHJpbmcgPVxuICBGb3JtYXQuc3ByaW50ZiBcImV4cG9ydF8lc19zZWxlY3RcIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBleHBvcnRfZmlsZW5hbWVfaWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2ZpbGVuYW1lXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2J1dHRvbl9pZCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pIDogc3RyaW5nID1cbiAgRm9ybWF0LnNwcmludGYgXCJleHBvcnRfJXNfYnV0dG9uXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2RhdGFfbGFiZWwgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2xhYmVsXCIgY29uZmlndXJhdGlvbi5pZFxuXG5sZXQgZXhwb3J0X2Zvcm1faWQgKGNvbmZpZ3VyYXRpb24gOiBjb25maWd1cmF0aW9uKSA6IHN0cmluZyA9XG4gIEZvcm1hdC5zcHJpbnRmIFwiZXhwb3J0XyVzX2Zvcm1cIiBjb25maWd1cmF0aW9uLmlkXG5cbmxldCBpbmxpbmVfY29udGVudCAoY29uZmlndXJhdGlvbiA6IGNvbmZpZ3VyYXRpb24pID1cbiAgbGV0IGV4cG9ydF9maWxlbmFtZSA9XG4gICAgSHRtbC5pbnB1dFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgKGV4cG9ydF9maWxlbmFtZV9pZCBjb25maWd1cmF0aW9uKTtcbiAgICAgICAgICBIdG1sLmFfaW5wdXRfdHlwZSBgVGV4dDtcbiAgICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgICAgSHRtbC5hX3BsYWNlaG9sZGVyIFwiZmlsZSBuYW1lXCI7XG4gICAgICAgIF1cbiAgICAgICgpXG4gIGluXG4gIGxldCBleHBvcnRfYnV0dG9uID1cbiAgICBIdG1sLmJ1dHRvblxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBIdG1sLmFfaWQgKGV4cG9ydF9idXR0b25faWQgY29uZmlndXJhdGlvbik7XG4gICAgICAgICAgSHRtbC5VbnNhZmUuc3RyaW5nX2F0dHJpYiBcInJvbGVcIiBcImJ1dHRvblwiO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgICAgIFR5eG1sX2pzLlIuZmlsdGVyX2F0dHJpYiAoSHRtbC5hX2Rpc2FibGVkICgpKVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwIG5vdCBjb25maWd1cmF0aW9uLnNob3cpO1xuICAgICAgICBdXG4gICAgICBbIEh0bWwuY2RhdGEgXCJleHBvcnRcIiBdXG4gIGluXG4gIGxldCBleHBvcnRfZm9ybWF0c19zZWxlY3QgPVxuICAgIExpc3QubWFwXG4gICAgICAoZnVuIGhhbmRsZXIgLT5cbiAgICAgICAgWyVodG1sXG4gICAgICAgICAge3w8b3B0aW9uIHZhbHVlPVwifH0gaGFuZGxlci5sYWJlbCB7fFwiPnx9IChIdG1sLmNkYXRhIGhhbmRsZXIubGFiZWwpXG4gICAgICAgICAgICB7fDwvb3B0aW9uPnx9XSlcbiAgICAgIGNvbmZpZ3VyYXRpb24uaGFuZGxlcnNcbiAgaW5cbiAgWyVodG1sXG4gICAge3w8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInx9XG4gICAgICAoZXhwb3J0X2Zvcm1hdF9pZCBjb25maWd1cmF0aW9uKVxuICAgICAge3xcIj5cbiAgICAgICAgICAgICAgIHx9XG4gICAgICBleHBvcnRfZm9ybWF0c19zZWxlY3RcbiAgICAgIHt8XG4gICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9fH1cbiAgICAgIChleHBvcnRfZmlsZW5hbWVfaWQgY29uZmlndXJhdGlvbilcbiAgICAgIHt8PjwvbGFiZWw+XG4gICAgICAgICAgICAgICB8fVxuICAgICAgWyBleHBvcnRfZmlsZW5hbWUgXVxuICAgICAge3xcbiAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICB8fV1cbiAgQCBbIGV4cG9ydF9idXR0b24gXVxuXG5sZXQgY29udGVudCBjb25maWd1cmF0aW9uID1cbiAgSHRtbC5mb3JtXG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCAoZXhwb3J0X2Zvcm1faWQgY29uZmlndXJhdGlvbik7IEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1pbmxpbmVcIiBdO1xuICAgICAgXVxuICAgIChpbmxpbmVfY29udGVudCBjb25maWd1cmF0aW9uKVxuXG5sZXQgb25sb2FkIChjb25maWd1cmF0aW9uIDogY29uZmlndXJhdGlvbikgPVxuICBsZXQgZXhwb3J0X2J1dHRvbiA6IERvbV9odG1sLmJ1dHRvbkVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSAoZXhwb3J0X2J1dHRvbl9pZCBjb25maWd1cmF0aW9uKVxuICBpblxuICBsZXQgZXhwb3J0X2ZpbGVuYW1lIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gKGV4cG9ydF9maWxlbmFtZV9pZCBjb25maWd1cmF0aW9uKVxuICBpblxuICBsZXQgZXhwb3J0X2Zvcm1hdCA6IERvbV9odG1sLnNlbGVjdEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSAoZXhwb3J0X2Zvcm1hdF9pZCBjb25maWd1cmF0aW9uKVxuICBpblxuICBsZXQgZXhwb3J0X2J1dHRvbl90b2dnbGUgKCkgOiB1bml0ID1cbiAgICBsZXQgaXNfZGlzYWJsZWQgOiBib29sIEpzLnQgPVxuICAgICAgSnMuYm9vbFxuICAgICAgICAoKG5vdCAoUmVhY3QuUy52YWx1ZSBjb25maWd1cmF0aW9uLnNob3cpKVxuICAgICAgICB8fCBleHBvcnRfZmlsZW5hbWUjIy52YWx1ZSMjdHJpbSMjLmxlbmd0aCA9IDApXG4gICAgaW5cbiAgICBsZXQgKCkgPSBleHBvcnRfYnV0dG9uIyMuZGlzYWJsZWQgOj0gaXNfZGlzYWJsZWQgaW5cbiAgICAoKVxuICBpblxuICBsZXQgKCkgPSBleHBvcnRfYnV0dG9uX3RvZ2dsZSAoKSBpblxuICBsZXQgKCkgPVxuICAgIGV4cG9ydF9maWxlbmFtZSMjLm9uaW5wdXQgOj1cbiAgICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgbGV0ICgpID0gZXhwb3J0X2J1dHRvbl90b2dnbGUgKCkgaW5cbiAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgZXhwb3J0X2J1dHRvbiMjLm9uY2xpY2sgOj1cbiAgICAgIERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgbGV0IGhhbmRsZXIgOiBoYW5kbGVyID1cbiAgICAgICAgICAgIExpc3QubnRoIGNvbmZpZ3VyYXRpb24uaGFuZGxlcnMgZXhwb3J0X2Zvcm1hdCMjLnNlbGVjdGVkSW5kZXhcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBmaWxlbmFtZSBkZWZhdWx0IDogc3RyaW5nID1cbiAgICAgICAgICAgIGxldCByb290IDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGV4cG9ydF9maWxlbmFtZSMjLnZhbHVlIGluXG4gICAgICAgICAgICBpZiBTdHJpbmcuY29udGFpbnMgcm9vdCAnLicgdGhlblxuICAgICAgICAgICAgICByb290XG4gICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgIHJvb3QgXiBcIi5cIiBeIGRlZmF1bHRcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCAoKSA9IGhhbmRsZXIuZXhwb3J0IChmaWxlbmFtZSBoYW5kbGVyLnN1ZmZpeCkgaW5cbiAgICAgICAgICBKcy5fZmFsc2UpXG4gIGluXG4gICgpXG5cbmxldCBleHBvcnRfc3ZnID9zdmdfc3R5bGVfaWQgfihzdmdfZGl2X2lkIDogc3RyaW5nKSAoKSA6IGhhbmRsZXIgPVxuICB7XG4gICAgc3VmZml4ID0gXCJzdmdcIjtcbiAgICBsYWJlbCA9IFwic3ZnXCI7XG4gICAgZXhwb3J0ID1cbiAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgQ29tbW9uLnBsb3RTVkcgP3Bsb3RTdHlsZUlkOnN2Z19zdHlsZV9pZCBzdmdfZGl2X2lkIGZpbGVuYW1lIGZpbGVuYW1lKTtcbiAgfVxuXG5sZXQgZXhwb3J0X3BuZyA/c3ZnX3N0eWxlX2lkIH4oc3ZnX2Rpdl9pZCA6IHN0cmluZykgKCkgOiBoYW5kbGVyID1cbiAge1xuICAgIHN1ZmZpeCA9IFwicG5nXCI7XG4gICAgbGFiZWwgPSBcInBuZ1wiO1xuICAgIGV4cG9ydCA9XG4gICAgICAoZnVuIGZpbGVuYW1lIC0+XG4gICAgICAgIENvbW1vbi5wbG90UE5HID9wbG90U3R5bGVJZDpzdmdfc3R5bGVfaWQgc3ZnX2Rpdl9pZCBmaWxlbmFtZSBmaWxlbmFtZSk7XG4gIH1cblxubGV0IGV4cG9ydF9qc29uIH4oc2VyaWFsaXplX2pzb24gOiB1bml0IC0+IHN0cmluZykgOiBoYW5kbGVyID1cbiAge1xuICAgIHN1ZmZpeCA9IFwianNvblwiO1xuICAgIGxhYmVsID0gXCJqc29uXCI7XG4gICAgZXhwb3J0ID1cbiAgICAgIChmdW4gZmlsZW5hbWUgLT5cbiAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKHNlcmlhbGl6ZV9qc29uICgpKSBpblxuICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lKTtcbiAgfVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcblxubGV0IGRpc3BsYXlfaWQgPSBcImNvbnRhY3QtbWFwLWRpc3BsYXlcIlxubGV0IGV4cG9ydF9pZCA9IFwiY29udGFjdC1leHBvcnRcIlxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSB0cnVlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgdHJ1ZVxubGV0IGFjY3VyYWN5LCBzZXRfYWNjdXJhY3kgPSBSZWFjdC5TLmNyZWF0ZSAoU29tZSBQdWJsaWNfZGF0YS5Mb3cpXG5cbmxldCBleHRyYWN0X2NvbnRhY3RfbWFwID0gZnVuY3Rpb25cbiAgfCBgQXNzb2MgWyAoXCJjb250YWN0IG1hcFwiLCBgQXNzb2MgWyAoXCJhY2N1cmFjeVwiLCBhY2MpOyAoXCJtYXBcIiwgY29udGFjdCkgXSkgXVxuICAgIC0+XG4gICAgYWNjLCBjb250YWN0XG4gIHwgYEFzc29jIFsgKFwiY29udGFjdCBtYXBcIiwgYEFzc29jIFsgKFwibWFwXCIsIGNvbnRhY3QpOyAoXCJhY2N1cmFjeVwiLCBhY2MpIF0pIF1cbiAgICAtPlxuICAgIGFjYywgY29udGFjdFxuICB8IF8gLT4gZmFpbHdpdGggXCJXcm9uZyB1Z2x5IGNvbnRhY3RfbWFwIGV4dHJhY3RvclwiXG5cbmxldCBjb250YWN0X21hcF9qcyA6IEpzX2NvbnRhY3QuY29udGFjdF9tYXAgSnMudCA9XG4gIEpzX2NvbnRhY3QuY3JlYXRlX2NvbnRhY3RfbWFwIGRpc3BsYXlfaWQgU3RhdGVfc2V0dGluZ3MuYWdlbnRfY29sb3JpbmdcblxubGV0IGNvbnRhY3RfbWFwX3RleHQgOiBzdHJpbmcgUmVhY3Quc2lnbmFsID1cbiAgU3RhdGVfcHJvamVjdC5vbl9wcm9qZWN0X2NoYW5nZV9hc3luYyB+b246dGFiX2lzX2FjdGl2ZSBOb25lIGFjY3VyYWN5IFwibnVsbFwiXG4gICAgKGZ1blxuICAgICAgKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcilcbiAgICAgIChhY2MgOiBQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbCBvcHRpb24pXG4gICAgLT5cbiAgICAgIG1hbmFnZXIjZ2V0X2NvbnRhY3RfbWFwIGFjY1xuICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+XG4gICAgICAgICAgICAgIGxldCAoKSA9IFN0YXRlX2Vycm9yLmFkZF9lcnJvciBcInRhYl9jb250YWN0X21hcFwiIG1oIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGNvbnRhY3RfbWFwX2pzIyNjbGVhckRhdGEgaW5cbiAgICAgICAgICAgICAgXCJudWxsXCIpXG4gICAgICAgICAgICB+b2s6KGZ1biBjb250YWN0X2pzb24gLT5cbiAgICAgICAgICAgICAgbGV0IF8sIG1hcF9qc29uID0gZXh0cmFjdF9jb250YWN0X21hcCBjb250YWN0X2pzb24gaW5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBZb2pzb24uQmFzaWMudG9fc3RyaW5nIG1hcF9qc29uIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9IGNvbnRhY3RfbWFwX2pzIyNzZXREYXRhIChKcy5zdHJpbmcgZGF0YSkgaW5cbiAgICAgICAgICAgICAgZGF0YSkpXG5cbmxldCBjb25maWd1cmF0aW9uIDogV2lkZ2V0X2V4cG9ydC5jb25maWd1cmF0aW9uID1cbiAge1xuICAgIFdpZGdldF9leHBvcnQuaWQgPSBleHBvcnRfaWQ7XG4gICAgV2lkZ2V0X2V4cG9ydC5oYW5kbGVycyA9XG4gICAgICBbXG4gICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0X3N2ZyB+c3ZnX2Rpdl9pZDpkaXNwbGF5X2lkICgpO1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9wbmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfanNvbiB+c2VyaWFsaXplX2pzb246KGZ1biAoKSAtPlxuICAgICAgICAgICAgUmVhY3QuUy52YWx1ZSBjb250YWN0X21hcF90ZXh0KTtcbiAgICAgIF07XG4gICAgV2lkZ2V0X2V4cG9ydC5zaG93ID0gUmVhY3QuUy5jb25zdCB0cnVlO1xuICB9XG5cbmxldCBhY2N1cmFjeV9jaG9vc2VyX2lkID0gXCJjb250YWN0X21hcC1hY2N1cmFjeVwiXG5cbmxldCBhY2N1cmFjeV9jaG9vc2VyID1cbiAgbGV0IG9wdGlvbl9nZW4geCA9XG4gICAgSHRtbC5vcHRpb25cbiAgICAgIH5hOlxuICAgICAgICAoKGZ1biBsIC0+XG4gICAgICAgICAgIGlmIFJlYWN0LlMudmFsdWUgYWNjdXJhY3kgPSBTb21lIHggdGhlblxuICAgICAgICAgICAgIEh0bWwuYV9zZWxlY3RlZCAoKSA6OiBsXG4gICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICBsKVxuICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpIF0pXG4gICAgICAoSHRtbC50eHQgKFB1YmxpY19kYXRhLmFjY3VyYWN5X3RvX3N0cmluZyB4KSlcbiAgaW5cbiAgSHRtbC5zZWxlY3RcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTsgSHRtbC5hX2lkIGFjY3VyYWN5X2Nob29zZXJfaWQgXVxuICAgIChMaXN0Lm1hcCBvcHRpb25fZ2VuIFB1YmxpY19kYXRhLmNvbnRhY3RfbWFwX2FjY3VyYWN5X2xldmVscylcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgYWNjdXJhY3lfZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ob3Jpem9udGFsXCIgXTtcbiAgICAgICAgICBIdG1sLmFfaWQgXCJjb250YWN0X21hcF9hY2N1cmFjeV9mb3JtXCI7XG4gICAgICAgIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF07XG4gICAgICAgICAgICAgICAgICBIdG1sLmFfbGFiZWxfZm9yIGFjY3VyYWN5X2Nob29zZXJfaWQ7XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiQWNjdXJhY3lcIiBdO1xuICAgICAgICAgICAgSHRtbC5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0xMFwiIF0gXSBbIGFjY3VyYWN5X2Nob29zZXIgXTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuICBpblxuICBbXG4gICAgYWNjdXJhY3lfZm9ybTtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfaWQgZGlzcGxheV9pZDsgSHRtbC5hX2NsYXNzIFsgXCJmbGV4LWNvbnRlbnRcIiBdIF1cbiAgICAgIFsgSHRtbC5lbnRpdHkgXCJuYnNwXCIgXTtcbiAgICBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgY29uZmlndXJhdGlvbjtcbiAgXVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgY29uZmlndXJhdGlvbiBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGFjY3VyYWN5X2Nob29zZXIpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIGxldCAoKSA9IHNldF9hY2N1cmFjeSAoUHVibGljX2RhdGEuYWNjdXJhY3lfb2Zfc3RyaW5nIHZhKSBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmNvbnRhY3RfbWFwXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmNvbnRhY3RfbWFwXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID1cbiAgaWYgUmVhY3QuUy52YWx1ZSB0YWJfaXNfYWN0aXZlIHRoZW4gY29udGFjdF9tYXBfanMjI3JlZHJhd1xuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuY2xhc3MgdHlwZSBncmFwaF9sb2dnZXIgPSBvYmplY3RcbiAgbWV0aG9kIHNldERhdGEgOiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIGNsZWFyRGF0YSA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfZ3JhcGhfbG9nZ2VyIChpZCA6IHN0cmluZykgKG9uX2NsaWNrIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCkgOlxuICAgIGdyYXBoX2xvZ2dlciBKcy50ID1cbiAgSnMuVW5zYWZlLm5ld19vYmpcbiAgICAoSnMuVW5zYWZlLnB1cmVfanNfZXhwciBcIkdyYXBoTG9nZ2VyXCIpXG4gICAgW3wgSnMuVW5zYWZlLmluamVjdCAoSnMuc3RyaW5nIGlkKTsgSnMuVW5zYWZlLmluamVjdCBvbl9jbGljayB8XVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxub3BlbiBMd3QuSW5maXhcblxudHlwZSBtb2RlbF9ncmFwaCA9IHsgZndkOiBpbnQgb3B0aW9uOyBid2Q6IGludCBvcHRpb247IHRvdGFsOiBpbnQgfVxuXG50eXBlIGluZmx1ZW5jZV9zcGhlcmUgPSB7XG4gIHBvc2l0aXZlX29uOlxuICAgICgoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG4gIG5lZ2F0aXZlX29uOlxuICAgICgoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG4gIHBvc2l0aXZlX2J5OlxuICAgICgoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG4gIG5lZ2F0aXZlX2J5OlxuICAgICgoUHVibGljX2RhdGEucnVsZSwgUHVibGljX2RhdGEudmFyKSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZVxuICAgICogUHVibGljX2RhdGEubG9jYXRpb24gUHVibGljX2RhdGEucGFpciBsaXN0KVxuICAgIGxpc3Q7XG59XG5cbmxldCBlbXB0eV9zcGhlcmUgPVxuICB7IHBvc2l0aXZlX29uID0gW107IHBvc2l0aXZlX2J5ID0gW107IG5lZ2F0aXZlX29uID0gW107IG5lZ2F0aXZlX2J5ID0gW10gfVxuXG50eXBlIG1vZGVsX3JlbmRlcmluZyA9IERyYXdHcmFwaCBvZiBtb2RlbF9ncmFwaCB8IERyYXdUYWJ1bGFyIG9mIHVuaXRcblxudHlwZSBtb2RlbCA9IHtcbiAgcmVuZGVyaW5nOiBtb2RlbF9yZW5kZXJpbmc7XG4gIGFjY3VyYWN5OiBQdWJsaWNfZGF0YS5hY2N1cmFjeV9sZXZlbCBvcHRpb247XG4gIG9yaWdpbjogKGludCwgaW50KSBQdWJsaWNfZGF0YS5pbmZsdWVuY2Vfbm9kZSBvcHRpb247XG4gIG9yaWdpbl9sYWJlbDogc3RyaW5nIG9wdGlvbjtcbn1cblxubGV0IG5hdmxpICgpID0gUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5XG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5sZXQgdHJhY2tfY3Vyc29yLCBzZXRfdHJhY2tfY3Vyc29yID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcblxubGV0IGR1bW15X21vZGVsID1cbiAge1xuICAgIHJlbmRlcmluZyA9IERyYXdUYWJ1bGFyICgpO1xuICAgIGFjY3VyYWN5ID0gU29tZSBQdWJsaWNfZGF0YS5Mb3c7XG4gICAgb3JpZ2luID0gTm9uZTtcbiAgICBvcmlnaW5fbGFiZWwgPSBOb25lO1xuICB9XG5cbmxldCBtb2RlbCwgc2V0X21vZGVsID0gUmVhY3QuUy5jcmVhdGUgZHVtbXlfbW9kZWxcbmxldCB0b3RhbF9pbnB1dF9pZCA9IFwidG90YWxfaW5wdXRcIlxubGV0IGZ3ZF9pbnB1dF9pZCA9IFwiZndkX2lucHV0XCJcbmxldCBid2RfaW5wdXRfaWQgPSBcImJ3ZF9pbnB1dFwiXG5cbmxldCBpbmZsdWVuY2Vfbm9kZV9sYWJlbCA9IGZ1bmN0aW9uXG4gIHwgUHVibGljX2RhdGEuUnVsZSByIC0+XG4gICAgaWYgci5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsID0gXCJcIiB0aGVuXG4gICAgICByLlB1YmxpY19kYXRhLnJ1bGVfYXN0XG4gICAgZWxzZVxuICAgICAgci5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsXG4gIHwgUHVibGljX2RhdGEuVmFyIHIgLT5cbiAgICBpZiByLlB1YmxpY19kYXRhLnZhcl9sYWJlbCA9IFwiXCIgdGhlblxuICAgICAgci5QdWJsaWNfZGF0YS52YXJfYXN0XG4gICAgZWxzZVxuICAgICAgci5QdWJsaWNfZGF0YS52YXJfbGFiZWxcblxubGV0IHVwZGF0ZV9tb2RlbF9ncmFwaCBmID1cbiAgbGV0IG0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIG1hdGNoIG0ucmVuZGVyaW5nIHdpdGhcbiAgfCBEcmF3VGFidWxhciBfIC0+ICgpXG4gIHwgRHJhd0dyYXBoIGcgLT4gc2V0X21vZGVsIHsgbSB3aXRoIHJlbmRlcmluZyA9IERyYXdHcmFwaCAoZiBnKSB9XG5cbmxldCB1cGRhdGVfbW9kZWwgZiA9IHNldF9tb2RlbCAoZiAoUmVhY3QuUy52YWx1ZSBtb2RlbCkpXG5sZXQgZGlzcGxheV9pZCA9IFwiaW5mbHVlbmNlX21hcF9kaXNwbGF5XCJcblxubGV0IGluZmx1ZW5jZW1hcCA9XG4gIEpzX2dyYXBobG9nZ2VyLmNyZWF0ZV9ncmFwaF9sb2dnZXIgZGlzcGxheV9pZCAoZnVuIHggLT5cbiAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICBsZXQgbm9kZSA9XG4gICAgICAgICAgICBQdWJsaWNfZGF0YS5yZWZpbmVkX2luZmx1ZW5jZV9ub2RlX29mX2pzb25cbiAgICAgICAgICAgICAgKFlvanNvbi5CYXNpYy5mcm9tX3N0cmluZyAoSnMudG9fc3RyaW5nIHgpKVxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgIEhvb2tlZC5FLnNlbmQgU3VicGFuZWxfZWRpdG9yLm1vdmVfY3Vyc29yX2hvb2tcbiAgICAgICAgICAgICAgKFB1YmxpY19kYXRhLnBvc2l0aW9uX29mX3JlZmluZWRfaW5mbHVlbmNlX25vZGUgbm9kZSlcbiAgICAgICAgICBpblxuICAgICAgICAgIGxldCBvcmlnaW4gPSBTb21lIChQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBub2RlKSBpblxuICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPSBTb21lIChpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlKSBpblxuICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKVxuXG5sZXQgdG90YWxfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCB0b3RhbF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX3ZhbHVlIFwiMVwiO1xuICAgICAgICBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07XG4gICAgICAgIEh0bWwuYV9zaXplIDE7XG4gICAgICBdXG4gICAgKClcblxubGV0IGZ3ZF9pbnB1dCA9XG4gIEh0bWwuaW5wdXRcbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2lkIGZ3ZF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSAxO1xuICAgICAgXVxuICAgICgpXG5cbmxldCBid2RfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBid2RfaW5wdXRfaWQ7XG4gICAgICAgIEh0bWwuYV9pbnB1dF90eXBlIGBOdW1iZXI7XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXTtcbiAgICAgICAgSHRtbC5hX3NpemUgMTtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgbmV4dF9ub2RlID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJOZXh0XCIgXVxuXG5sZXQgcHJldl9ub2RlID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJQcmV2aW91c1wiIF1cblxubGV0IHJlY2VudGVyID1cbiAgSHRtbC5idXR0b25cbiAgICB+YTpcbiAgICAgIFtcbiAgICAgICAgSHRtbC5hX2J1dHRvbl90eXBlIGBCdXR0b247XG4gICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCI7IFwiYnRuXCI7IFwiYnRuLWRlZmF1bHRcIiBdO1xuICAgICAgXVxuICAgIFsgSHRtbC50eHQgXCJSZXNldFwiIF1cblxubGV0IHRyYWNrX2N1cnNvcl9zd2l0Y2ggPVxuICBIdG1sLmJ1dHRvblxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBIdG1sLmFfYnV0dG9uX3R5cGUgYEJ1dHRvbjtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sNS5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgKGZ1biB0YyAtPlxuICAgICAgICAgICAgICAgXCJmb3JtLWNvbnRyb2xcIiA6OiBcImJ0blwiIDo6IFwiYnRuLWRlZmF1bHRcIlxuICAgICAgICAgICAgICAgOjpcbiAgICAgICAgICAgICAgIChpZiB0YyB0aGVuXG4gICAgICAgICAgICAgICAgICBbIFwiYWN0aXZlXCIgXVxuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgIFtdKSlcbiAgICAgICAgICAgICB0cmFja19jdXJzb3IpO1xuICAgICAgICBIdG1sLmFfb25jbGljayAoZnVuIF8gLT5cbiAgICAgICAgICAgIGxldCAoKSA9IHNldF90cmFja19jdXJzb3IgKG5vdCAoUmVhY3QuUy52YWx1ZSB0cmFja19jdXJzb3IpKSBpblxuICAgICAgICAgICAgdHJ1ZSk7XG4gICAgICBdXG4gICAgWyBIdG1sLnR4dCBcIlRyYWNrIGN1cnNvclwiIF1cblxubGV0IGV4cG9ydF9jb25maWcgPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IFwiaW5mbHVlbmNlLWV4cG9ydFwiO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPVxuICAgICAgW1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgKGZ1biBmaWxlbmFtZSAtPlxuICAgICAgICAgICAgICBMd3QuaWdub3JlX3Jlc3VsdFxuICAgICAgICAgICAgICAgICggU3RhdGVfZXJyb3Iud3JhcCBcImluZmx1ZW5jZV9tYXBfZXhwb3J0XCJcbiAgICAgICAgICAgICAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHsgYWNjdXJhY3k7IF8gfSA9IFJlYWN0LlMudmFsdWUgbW9kZWwgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9pbmZsdWVuY2VfbWFwX3JhdyBhY2N1cmFjeVxuICAgICAgICAgICAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBpbmZsdWVuY2VzX3N0cmluZyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgaW5mbHVlbmNlc19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbW1vbi5zYXZlRmlsZSB+ZGF0YVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpKSkpXG4gICAgICAgICAgICAgICAgPj49IGZ1biBfIC0+IEx3dC5yZXR1cm5fdW5pdCApKTtcbiAgICAgICAgfTtcbiAgICAgIF07XG4gICAgV2lkZ2V0X2V4cG9ydC5zaG93ID0gUmVhY3QuUy5jb25zdCB0cnVlO1xuICB9XG5cbmxldCByZW5kZXJpbmdfY2hvb3Nlcl9pZCA9IFwiaW5mbHVlbmNlLXJlbmRlcmluZ1wiXG5cbmxldCByZW5kZXJpbmdfY2hvb3NlciA9XG4gIGxldCB7IHJlbmRlcmluZzsgXyB9ID0gUmVhY3QuUy52YWx1ZSBtb2RlbCBpblxuICBIdG1sLnNlbGVjdFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgcmVuZGVyaW5nX2Nob29zZXJfaWQgXVxuICAgIFtcbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgICgoZnVuIGwgLT5cbiAgICAgICAgICAgICBtYXRjaCByZW5kZXJpbmcgd2l0aFxuICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICAgIHwgRHJhd0dyYXBoIF8gLT4gbClcbiAgICAgICAgICAgICBbIEh0bWwuYV92YWx1ZSBcInRhYnVsYXJcIiBdKVxuICAgICAgICAoSHRtbC50eHQgXCJUYWJ1bGFyXCIpO1xuICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgfmE6XG4gICAgICAgICAgKChmdW4gbCAtPlxuICAgICAgICAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBIdG1sLmFfc2VsZWN0ZWQgKCkgOjogbFxuICAgICAgICAgICAgIHwgRHJhd1RhYnVsYXIgXyAtPiBsKVxuICAgICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIFwiZ3JhcGhcIiBdKVxuICAgICAgICAoSHRtbC50eHQgXCJHcmFwaFwiKTtcbiAgICBdXG5cbmxldCBhY2N1cmFjeV9jaG9vc2VyX2lkID0gXCJpbmZsdWVuY2UtYWNjdXJhY3lcIlxuXG5sZXQgYWNjdXJhY3lfY2hvb3NlciA9XG4gIGxldCB7IGFjY3VyYWN5OyBfIH0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gIGxldCBvcHRpb25fZ2VuIHggPVxuICAgIEh0bWwub3B0aW9uXG4gICAgICB+YTpcbiAgICAgICAgKChmdW4gbCAtPlxuICAgICAgICAgICBpZiBhY2N1cmFjeSA9IFNvbWUgeCB0aGVuXG4gICAgICAgICAgICAgSHRtbC5hX3NlbGVjdGVkICgpIDo6IGxcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIGwpXG4gICAgICAgICAgIFsgSHRtbC5hX3ZhbHVlIChQdWJsaWNfZGF0YS5hY2N1cmFjeV90b19zdHJpbmcgeCkgXSlcbiAgICAgIChIdG1sLnR4dCAoUHVibGljX2RhdGEuYWNjdXJhY3lfdG9fc3RyaW5nIHgpKVxuICBpblxuICBIdG1sLnNlbGVjdFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdOyBIdG1sLmFfaWQgYWNjdXJhY3lfY2hvb3Nlcl9pZCBdXG4gICAgKExpc3QubWFwIG9wdGlvbl9nZW4gUHVibGljX2RhdGEuaW5mbHVlbmNlX21hcF9hY2N1cmFjeV9sZXZlbHMpXG5cbmxldCBpc19jZW50ZXIgb3JpZ2luX3Nob3J0X29wdCBub2RlID1cbiAgbWF0Y2ggb3JpZ2luX3Nob3J0X29wdCB3aXRoXG4gIHwgTm9uZSAtPlxuICAgIChtYXRjaCBub2RlIHdpdGhcbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPiByLlB1YmxpY19kYXRhLnJ1bGVfaWQgPSAwXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgXyAtPiBmYWxzZSlcbiAgfCBTb21lIG9yaWdpbiAtPlxuICAgIChtYXRjaCBvcmlnaW4sIG5vZGUgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSBpZCwgUHVibGljX2RhdGEuUnVsZSBhIC0+IGEuUHVibGljX2RhdGEucnVsZV9pZCA9IGlkXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgaWQsIFB1YmxpY19kYXRhLlZhciBhIC0+IGEuUHVibGljX2RhdGEudmFyX2lkID0gaWRcbiAgICB8IFB1YmxpY19kYXRhLlZhciBfLCBQdWJsaWNfZGF0YS5SdWxlIF9cbiAgICB8IFB1YmxpY19kYXRhLlJ1bGUgXywgUHVibGljX2RhdGEuVmFyIF8gLT5cbiAgICAgIGZhbHNlKVxuXG5sZXQganNvbl90b19ncmFwaCBsb2dnZXIgKF8sIF8sIF8sIF8sIG9yaWdpbiwgaW5mbHVlbmNlX21hcCkgPVxuICBsZXQgb3JpZ2luX3Nob3J0X29wdCA9XG4gICAgT3B0aW9uX3V0aWwubWFwIFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG9yaWdpblxuICBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzLnByaW50X2dyYXBoX3ByZWFtYmxlIGxvZ2dlciBcIlwiIGluXG4gIGxldCBub2RlcyA9IGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubm9kZXMgaW5cbiAgbGV0IGRpcmVjdGl2ZXNfb2Zfbm9kZSBub2RlID1cbiAgICBsZXQganNvbiA9IFB1YmxpY19kYXRhLnJlZmluZWRfaW5mbHVlbmNlX25vZGVfdG9fanNvbiBub2RlIGluXG4gICAgbGV0IGxhYmVsID0gaW5mbHVlbmNlX25vZGVfbGFiZWwgbm9kZSBpblxuICAgIG1hdGNoIG5vZGUgd2l0aFxuICAgIHwgUHVibGljX2RhdGEuUnVsZSByIC0+XG4gICAgICBsZXQgcG9zID0gci5QdWJsaWNfZGF0YS5ydWxlX3Bvc2l0aW9uIGluXG4gICAgICBsZXQgY29udGV4dHVhbF9oZWxwID0gTG9jLnRvX3N0cmluZyBwb3MgXiBcIiBcIiBeIHIuUHVibGljX2RhdGEucnVsZV9hc3QgaW5cbiAgICAgIGxldCBmaWxsY29sb3IgPVxuICAgICAgICBpZiBpc19jZW50ZXIgb3JpZ2luX3Nob3J0X29wdCBub2RlIHRoZW5cbiAgICAgICAgICAhQ29uZmlnLmNlbnRlcl9jb2xvclxuICAgICAgICBlbHNlXG4gICAgICAgICAgIUNvbmZpZy5ydWxlX2NvbG9yXG4gICAgICBpblxuICAgICAgW1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBsYWJlbDtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgIUNvbmZpZy5ydWxlX3NoYXBlO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5GaWxsQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciBmaWxsY29sb3I7XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLlBvc2l0aW9uIFsgcG9zIF07XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLk9uQ2xpY2sganNvbjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29udGV4dHVhbF9oZWxwIGNvbnRleHR1YWxfaGVscDtcbiAgICAgIF1cbiAgICB8IFB1YmxpY19kYXRhLlZhciByIC0+XG4gICAgICBsZXQgcG9zID0gci5QdWJsaWNfZGF0YS52YXJfcG9zaXRpb24gaW5cbiAgICAgIGxldCBjb250ZXh0dWFsX2hlbHAgPSBMb2MudG9fc3RyaW5nIHBvcyBeIHIuUHVibGljX2RhdGEudmFyX2FzdCBpblxuICAgICAgbGV0IGZpbGxjb2xvciA9XG4gICAgICAgIGlmIGlzX2NlbnRlciBvcmlnaW5fc2hvcnRfb3B0IG5vZGUgdGhlblxuICAgICAgICAgICFDb25maWcuY2VudGVyX2NvbG9yXG4gICAgICAgIGVsc2VcbiAgICAgICAgICAhQ29uZmlnLnZhcmlhYmxlX2NvbG9yXG4gICAgICBpblxuICAgICAgW1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5MYWJlbCBsYWJlbDtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuU2hhcGUgIUNvbmZpZy52YXJpYWJsZV9zaGFwZTtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuRmlsbENvbG9yIGZpbGxjb2xvcjtcbiAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuQ29sb3IgZmlsbGNvbG9yO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Qb3NpdGlvbiBbIHBvcyBdO1xuICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5PbkNsaWNrIGpzb247XG4gICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbnRleHR1YWxfaGVscCBjb250ZXh0dWFsX2hlbHA7XG4gICAgICBdXG4gIGluXG4gIGxldCBtYXhfcnVsZV9pZCA9XG4gICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgIChmdW4gYmlnZ2VzdF9pZCBuIC0+XG4gICAgICAgIG1hdGNoIG4gd2l0aFxuICAgICAgICB8IFB1YmxpY19kYXRhLlJ1bGUgciAtPiBtYXggYmlnZ2VzdF9pZCAoMSArIHIuUHVibGljX2RhdGEucnVsZV9pZClcbiAgICAgICAgfCBQdWJsaWNfZGF0YS5WYXIgXyAtPiBiaWdnZXN0X2lkKVxuICAgICAgKC0xKSBub2Rlc1xuICBpblxuICBsZXQgZ2V0X2lkX29mX25vZGVfaWQgbm9kZV9pZCA9XG4gICAgbWF0Y2ggbm9kZV9pZCB3aXRoXG4gICAgfCBQdWJsaWNfZGF0YS5SdWxlIGlkIC0+IGlkXG4gICAgfCBQdWJsaWNfZGF0YS5WYXIgaWQgLT4gaWQgKyBtYXhfcnVsZV9pZFxuICBpblxuICBsZXQgZ2V0X2lkX29mX25vZGUgbm9kZSA9XG4gICAgZ2V0X2lkX29mX25vZGVfaWQgKFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG5vZGUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgTGlzdC5pdGVyXG4gICAgICAoZnVuIG5vZGUgLT5cbiAgICAgICAgbGV0IGRpcmVjdGl2ZXMgPSBkaXJlY3RpdmVzX29mX25vZGUgbm9kZSBpblxuICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X25vZGUgbG9nZ2VyIH5kaXJlY3RpdmVzXG4gICAgICAgICAgKHN0cmluZ19vZl9pbnQgKGdldF9pZF9vZl9ub2RlIG5vZGUpKSlcbiAgICAgIG5vZGVzXG4gIGluXG4gIGxldCBwcmludF9tYXBzID8oZGlyZWN0aXZlcyA9IFtdKSBsb2dnZXIgbWFwID1cbiAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLml0ZXJcbiAgICAgIChmdW4gc291cmNlIG1hcCAtPlxuICAgICAgICBsZXQgc291cmNlX2lkID0gc3RyaW5nX29mX2ludCAoZ2V0X2lkX29mX25vZGVfaWQgc291cmNlKSBpblxuICAgICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLml0ZXJcbiAgICAgICAgICAoZnVuIHRhcmdldCBsYWJlbF9saXN0IC0+XG4gICAgICAgICAgICBsZXQgdGFyZ2V0X2lkID0gc3RyaW5nX29mX2ludCAoZ2V0X2lkX29mX25vZGVfaWQgdGFyZ2V0KSBpblxuICAgICAgICAgICAgKCpsZXQgbGFiZWxfc3RyaW5nID0gXCJ0b2RvXCJcbiAgICAgICAgICAgICAgaW4qKVxuICAgICAgICAgICAgbGV0IGxhYmVsX3N0cmluZyA9IFB1YmxpY19kYXRhLnN0cmluZ19vZl9sYWJlbF9saXN0IGxhYmVsX2xpc3QgaW5cbiAgICAgICAgICAgIGxldCBkaXJlY3RpdmVzID1cbiAgICAgICAgICAgICAgR3JhcGhfbG9nZ2Vyc19zaWcuTGFiZWwgbGFiZWxfc3RyaW5nIDo6IGRpcmVjdGl2ZXNcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzLnByaW50X2VkZ2UgbG9nZ2VyIH5kaXJlY3RpdmVzIHNvdXJjZV9pZCB0YXJnZXRfaWRcbiAgICAgICAgICAgIGluXG4gICAgICAgICAgICAoKSlcbiAgICAgICAgICBtYXApXG4gICAgICBtYXBcbiAgaW5cbiAgbGV0IGRpcmVjdGl2ZXMgPVxuICAgIFtcbiAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkNvbG9yICFDb25maWcud2FrZV91cF9jb2xvcjtcbiAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLkFycm93SGVhZCAhQ29uZmlnLndha2VfdXBfYXJyb3c7XG4gICAgXVxuICBpblxuICBsZXQgKCkgPSBwcmludF9tYXBzIH5kaXJlY3RpdmVzIGxvZ2dlciBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLnBvc2l0aXZlIGluXG4gIGxldCBkaXJlY3RpdmVzID1cbiAgICBbXG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5Db2xvciAhQ29uZmlnLmluaGliaXRpb25fY29sb3I7XG4gICAgICBHcmFwaF9sb2dnZXJzX3NpZy5BcnJvd0hlYWQgIUNvbmZpZy5pbmhpYml0aW9uX2Fycm93O1xuICAgIF1cbiAgaW5cbiAgbGV0ICgpID0gcHJpbnRfbWFwcyB+ZGlyZWN0aXZlcyBsb2dnZXIgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5uZWdhdGl2ZSBpblxuICBsZXQgKCkgPSBHcmFwaF9sb2dnZXJzLnByaW50X2dyYXBoX2Zvb3QgbG9nZ2VyIGluXG4gICgpXG5cbmxldCB0YWJsZV9vZl9pbmZsdWVuY2VzX2pzb24gKF8sIF8sIF8sIF8sIG9yaWdpbiwgaW5mbHVlbmNlX21hcCkgPVxuICBsZXQgbmFtZXIgPVxuICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAoZnVuIGFjYyBlIC0+XG4gICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuYWRkXG4gICAgICAgICAgKFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIGUpXG4gICAgICAgICAgZSBhY2MpXG4gICAgICBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmVtcHR5IGluZmx1ZW5jZV9tYXAuUHVibGljX2RhdGEubm9kZXNcbiAgaW5cbiAgbGV0IG9yaWdpbl9pZF9vcHQgPVxuICAgIE9wdGlvbl91dGlsLm1hcCBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZSBvcmlnaW5cbiAgaW5cbiAgbWF0Y2ggb3JpZ2luX2lkX29wdCB3aXRoXG4gIHwgTm9uZSAtPiBlbXB0eV9zcGhlcmVcbiAgfCBTb21lIG9yaWdpbl9pZCAtPlxuICAgIGxldCBwb3NpdGl2ZV9vbiwgcG9zaXRpdmVfYnkgPVxuICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5mb2xkXG4gICAgICAgIChmdW4gc3JjIC0+XG4gICAgICAgICAgUHVibGljX2RhdGEuSW5mbHVlbmNlTm9kZU1hcC5mb2xkIChmdW4gZHN0IGRhdGEgKChvbiwgYnkpIGFzIGFjYykgLT5cbiAgICAgICAgICAgICAgaWYgc3JjID0gb3JpZ2luX2lkIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZmluZF9vcHRpb24gZHN0IG5hbWVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gKHYsIGRhdGEpIDo6IG9uLCBieVxuICAgICAgICAgICAgICApIGVsc2UgaWYgZHN0ID0gb3JpZ2luX2lkIHRoZW4gKFxuICAgICAgICAgICAgICAgIG1hdGNoIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZmluZF9vcHRpb24gc3JjIG5hbWVyIHdpdGhcbiAgICAgICAgICAgICAgICB8IE5vbmUgLT4gYWNjXG4gICAgICAgICAgICAgICAgfCBTb21lIHYgLT4gb24sICh2LCBkYXRhKSA6OiBieVxuICAgICAgICAgICAgICApIGVsc2VcbiAgICAgICAgICAgICAgICBhY2MpKVxuICAgICAgICBpbmZsdWVuY2VfbWFwLlB1YmxpY19kYXRhLnBvc2l0aXZlIChbXSwgW10pXG4gICAgaW5cbiAgICBsZXQgbmVnYXRpdmVfb24sIG5lZ2F0aXZlX2J5ID1cbiAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZFxuICAgICAgICAoZnVuIHNyYyAtPlxuICAgICAgICAgIFB1YmxpY19kYXRhLkluZmx1ZW5jZU5vZGVNYXAuZm9sZCAoZnVuIGRzdCBkYXRhICgob24sIGJ5KSBhcyBhY2MpIC0+XG4gICAgICAgICAgICAgIGlmIHNyYyA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIGRzdCBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+ICh2LCBkYXRhKSA6OiBvbiwgYnlcbiAgICAgICAgICAgICAgKSBlbHNlIGlmIGRzdCA9IG9yaWdpbl9pZCB0aGVuIChcbiAgICAgICAgICAgICAgICBtYXRjaCBQdWJsaWNfZGF0YS5JbmZsdWVuY2VOb2RlTWFwLmZpbmRfb3B0aW9uIHNyYyBuYW1lciB3aXRoXG4gICAgICAgICAgICAgICAgfCBOb25lIC0+IGFjY1xuICAgICAgICAgICAgICAgIHwgU29tZSB2IC0+IG9uLCAodiwgZGF0YSkgOjogYnlcbiAgICAgICAgICAgICAgKSBlbHNlXG4gICAgICAgICAgICAgICAgYWNjKSlcbiAgICAgICAgaW5mbHVlbmNlX21hcC5QdWJsaWNfZGF0YS5uZWdhdGl2ZSAoW10sIFtdKVxuICAgIGluXG4gICAgeyBwb3NpdGl2ZV9vbjsgcG9zaXRpdmVfYnk7IG5lZ2F0aXZlX29uOyBuZWdhdGl2ZV9ieSB9XG5cbmxldCBwb3BfY2VsbCA9IGZ1bmN0aW9uXG4gIHwgW10gLT4gSHRtbC50ZCBbXSwgW11cbiAgfCAoKG5vZGUsIF9tYXBwaW5ncyksIHBvc2l0aXZlKSA6OiB0IC0+XG4gICAgKCBIdG1sLnRkXG4gICAgICAgIH5hOlxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwuYV9vbmNsaWNrIChmdW4gXyAtPlxuICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICBIb29rZWQuRS5zZW5kIFN1YnBhbmVsX2VkaXRvci5tb3ZlX2N1cnNvcl9ob29rXG4gICAgICAgICAgICAgICAgICAgIChQdWJsaWNfZGF0YS5wb3NpdGlvbl9vZl9yZWZpbmVkX2luZmx1ZW5jZV9ub2RlIG5vZGUpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgICAgICAgIFNvbWUgKFB1YmxpY19kYXRhLnNob3J0X25vZGVfb2ZfcmVmaW5lZF9ub2RlIG5vZGUpXG4gICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3JpZ2luX2xhYmVsID0gU29tZSAoaW5mbHVlbmNlX25vZGVfbGFiZWwgbm9kZSkgaW5cbiAgICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPiB7IG0gd2l0aCBvcmlnaW47IG9yaWdpbl9sYWJlbCB9KVxuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgdHJ1ZSk7XG4gICAgICAgICAgICBIdG1sLmFfY2xhc3NcbiAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgIChpZiBwb3NpdGl2ZSB0aGVuXG4gICAgICAgICAgICAgICAgICAgXCJzdWNjZXNzXCJcbiAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgIFwiZGFuZ2VyXCIpO1xuICAgICAgICAgICAgICBdO1xuICAgICAgICAgIF1cbiAgICAgICAgWyBIdG1sLmNkYXRhIChpbmZsdWVuY2Vfbm9kZV9sYWJlbCBub2RlKSBdLFxuICAgICAgdCApXG5cbmxldCByZWMgZmlsbF90YWJsZSBhY2MgYnkgb24gPVxuICBpZiBvbiA9IFtdICYmIGJ5ID0gW10gdGhlblxuICAgIExpc3QucmV2IGFjY1xuICBlbHNlIChcbiAgICBsZXQgYiwgYnknID0gcG9wX2NlbGwgYnkgaW5cbiAgICBsZXQgbywgb24nID0gcG9wX2NlbGwgb24gaW5cbiAgICBsZXQgbGluZSA9IEh0bWwudHIgWyBiOyBvIF0gaW5cbiAgICBmaWxsX3RhYmxlIChsaW5lIDo6IGFjYykgYnknIG9uJ1xuICApXG5cbmxldCBkcmF3X3RhYmxlIG9yaWdpbl9sYWJlbFxuICAgIHsgcG9zaXRpdmVfb247IHBvc2l0aXZlX2J5OyBuZWdhdGl2ZV9vbjsgbmVnYXRpdmVfYnkgfSA9XG4gIGxldCBieSA9XG4gICAgTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAoZnVuIHggLT4geCwgZmFsc2UpXG4gICAgICBuZWdhdGl2ZV9ieVxuICAgICAgKExpc3QucmV2X21hcCAoZnVuIHggLT4geCwgdHJ1ZSkgcG9zaXRpdmVfYnkpXG4gIGluXG4gIGxldCBvbiA9XG4gICAgTGlzdF91dGlsLnJldl9tYXBfYXBwZW5kXG4gICAgICAoZnVuIHggLT4geCwgZmFsc2UpXG4gICAgICBuZWdhdGl2ZV9vblxuICAgICAgKExpc3QucmV2X21hcCAoZnVuIHggLT4geCwgdHJ1ZSkgcG9zaXRpdmVfb24pXG4gIGluXG4gIGxldCBvdXRzID0gZmlsbF90YWJsZSBbXSBieSBvbiBpblxuICBIdG1sLnRhYmxleFxuICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJ0YWJsZVwiIF0gXVxuICAgIH50aGVhZDpcbiAgICAgIChIdG1sLnRoZWFkXG4gICAgICAgICBbXG4gICAgICAgICAgIEh0bWwudHJcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICBIdG1sLnRoXG4gICAgICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NvbHNwYW4gMiBdXG4gICAgICAgICAgICAgICAgIFsgSHRtbC5jZGF0YSAoT3B0aW9uX3V0aWwudW5zb21lIFwib3JpZ2luXCIgb3JpZ2luX2xhYmVsKSBdO1xuICAgICAgICAgICAgIF07XG4gICAgICAgICAgIEh0bWwudHJcbiAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICBIdG1sLnRoIFsgSHRtbC5jZGF0YSBcImlzIGluZmx1ZW5jZWQgYnlcIiBdO1xuICAgICAgICAgICAgICAgSHRtbC50aCBbIEh0bWwuY2RhdGEgXCJpbmZsdWVuY2VzXCIgXTtcbiAgICAgICAgICAgICBdO1xuICAgICAgICAgXSlcbiAgICBbIEh0bWwudGJvZHkgb3V0cyBdXG5cbmxldCBpbmZsdWVuY2Vfc3BoZXJlID1cbiAgU3RhdGVfcHJvamVjdC5vbl9wcm9qZWN0X2NoYW5nZV9hc3luYyB+b246dGFiX2lzX2FjdGl2ZSBkdW1teV9tb2RlbCBtb2RlbFxuICAgIChSZXN1bHRfdXRpbC5vayBlbXB0eV9zcGhlcmUpXG4gICAgKGZ1biBtYW5hZ2VyIHsgcmVuZGVyaW5nOyBhY2N1cmFjeTsgb3JpZ2luOyBvcmlnaW5fbGFiZWwgPSBfIH0gLT5cbiAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICB8IERyYXdUYWJ1bGFyIF8gLT5cbiAgICAgICAgbWFuYWdlciNnZXRfbG9jYWxfaW5mbHVlbmNlX21hcCA/ZndkOk5vbmUgP2J3ZDpOb25lID9vcmlnaW4gfnRvdGFsOjFcbiAgICAgICAgICBhY2N1cmFjeVxuICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIHRhYmxlX29mX2luZmx1ZW5jZXNfanNvblxuICAgICAgfCBEcmF3R3JhcGggXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBlbXB0eV9zcGhlcmUpKVxuXG5sZXQgY29udGVudCAoKSA9XG4gIGxldCBhY2N1cmFjeV9mb3JtID1cbiAgICBIdG1sLmZvcm1cbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWhvcml6b250YWxcIiBdIF1cbiAgICAgIFtcbiAgICAgICAgSHRtbC5kaXZcbiAgICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ncm91cFwiIF0gXVxuICAgICAgICAgIFtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF07XG4gICAgICAgICAgICAgICAgICBIdG1sLmFfbGFiZWxfZm9yIHJlbmRlcmluZ19jaG9vc2VyX2lkO1xuICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIlJlbmRlcmluZ1wiIF07XG4gICAgICAgICAgICBIdG1sLnNwYW4gfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC00XCIgXSBdIFsgcmVuZGVyaW5nX2Nob29zZXIgXTtcbiAgICAgICAgICAgIEh0bWwubGFiZWxcbiAgICAgICAgICAgICAgfmE6XG4gICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF07XG4gICAgICAgICAgICAgICAgICBIdG1sLmFfbGFiZWxfZm9yIGFjY3VyYWN5X2Nob29zZXJfaWQ7XG4gICAgICAgICAgICAgICAgXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiQWNjdXJhY3lcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIGFjY3VyYWN5X2Nob29zZXIgXTtcbiAgICAgICAgICBdO1xuICAgICAgICBIdG1sLmRpdlxuICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWdyb3VwXCIgXSBdXG4gICAgICAgICAgW1xuICAgICAgICAgICAgSHRtbC5sYWJlbFxuICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICBbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTNcIiBdOyBIdG1sLmFfbGFiZWxfZm9yIHRvdGFsX2lucHV0X2lkIF1cbiAgICAgICAgICAgICAgWyBIdG1sLnR4dCBcIk5hdmlnYXRlXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBwcmV2X25vZGUgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBuZXh0X25vZGUgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyByZWNlbnRlciBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIHRyYWNrX2N1cnNvcl9zd2l0Y2ggXTtcbiAgICAgICAgICBdO1xuICAgICAgXVxuICBpblxuICBsZXQgZ3JhcGhfZm9ybSA9XG4gICAgSHRtbC5mb3JtXG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1ob3Jpem9udGFsXCIgXSBdXG4gICAgICBbXG4gICAgICAgIEh0bWwuZGl2XG4gICAgICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tZ3JvdXBcIiBdIF1cbiAgICAgICAgICBbXG4gICAgICAgICAgICBIdG1sLmxhYmVsXG4gICAgICAgICAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtM1wiIF0gXVxuICAgICAgICAgICAgICBbIEh0bWwudHh0IFwiU2l6ZSBSYWRpdXNcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIHRvdGFsX2lucHV0IF07XG4gICAgICAgICAgICBIdG1sLmxhYmVsIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMVwiIF0gXSBbIEh0bWwudHh0IFwiZndkXCIgXTtcbiAgICAgICAgICAgIEh0bWwuc3BhbiB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTJcIiBdIF0gWyBmd2RfaW5wdXQgXTtcbiAgICAgICAgICAgIEh0bWwubGFiZWwgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC0yXCIgXSBdIFsgSHRtbC50eHQgXCJid2RcIiBdO1xuICAgICAgICAgICAgSHRtbC5zcGFuIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJjb2wtbWQtMlwiIF0gXSBbIGJ3ZF9pbnB1dCBdO1xuICAgICAgICAgIF07XG4gICAgICBdXG4gIGluXG4gIFtcbiAgICBhY2N1cmFjeV9mb3JtO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbDUuYV9jbGFzc1xuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIHsgcmVuZGVyaW5nOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBbIFwiZmxleC1jb250ZW50XCIgXVxuICAgICAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gW10pXG4gICAgICAgICAgICAgICBtb2RlbCk7XG4gICAgICAgICAgVHl4bWxfanMuUi5maWx0ZXJfYXR0cmliIChIdG1sLmFfaGlkZGVuICgpKVxuICAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgICAoZnVuIHsgcmVuZGVyaW5nOyBfIH0gLT5cbiAgICAgICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBmYWxzZVxuICAgICAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gdHJ1ZSlcbiAgICAgICAgICAgICAgIG1vZGVsKTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBncmFwaF9mb3JtO1xuICAgICAgICBIdG1sLmRpdiB+YTpbIEh0bWwuYV9pZCBkaXNwbGF5X2lkOyBIdG1sLmFfY2xhc3MgWyBcImZsZXgtY29udGVudFwiIF0gXSBbXTtcbiAgICAgIF07XG4gICAgVHl4bWxfanMuUi5IdG1sNS5kaXZcbiAgICAgIH5hOlsgSHRtbC5hX2NsYXNzIFsgXCJwYW5lbC1zY3JvbGxcIiBdIF1cbiAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAgICAgIChSZWFjdC5TLmwyXG4gICAgICAgICAgICAoZnVuIHsgcmVuZGVyaW5nOyBvcmlnaW5fbGFiZWw7IF8gfSBzcGhlcmUgLT5cbiAgICAgICAgICAgICAgbWF0Y2ggcmVuZGVyaW5nIHdpdGhcbiAgICAgICAgICAgICAgfCBEcmF3R3JhcGggXyAtPiBbXVxuICAgICAgICAgICAgICB8IERyYXdUYWJ1bGFyICgpIC0+XG4gICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuZm9sZCBzcGhlcmVcbiAgICAgICAgICAgICAgICAgIH5vazooZnVuIHNwaGVyZSAtPiBbIGRyYXdfdGFibGUgb3JpZ2luX2xhYmVsIHNwaGVyZSBdKVxuICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZXJyb3IgLT5cbiAgICAgICAgICAgICAgICAgICAgTGlzdC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwucFxuICAgICAgICAgICAgICAgICAgICAgICAgICBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucHJpbnRfbWVzc2FnZSBtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgICAgICBlcnJvcikpXG4gICAgICAgICAgICBtb2RlbCBpbmZsdWVuY2Vfc3BoZXJlKSk7XG4gICAgV2lkZ2V0X2V4cG9ydC5jb250ZW50IGV4cG9ydF9jb25maWc7XG4gIF1cblxubGV0IG5laXRoZXJfZ2NfbWUgPVxuICBSZWFjdC5TLmwyXG4gICAgKGZ1biBfIHsgcmVuZGVyaW5nOyBhY2N1cmFjeTsgb3JpZ2luOyBvcmlnaW5fbGFiZWwgPSBfIH0gLT5cbiAgICAgIG1hdGNoIHJlbmRlcmluZyB3aXRoXG4gICAgICB8IERyYXdUYWJ1bGFyIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgICB8IERyYXdHcmFwaCB7IGZ3ZDsgYndkOyB0b3RhbCB9IC0+XG4gICAgICAgIFN0YXRlX2Vycm9yLndyYXAgfmFwcGVuZDp0cnVlIFwiaW5mbHVlbmNlX21hcFwiXG4gICAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9sb2NhbF9pbmZsdWVuY2VfbWFwID9md2QgP2J3ZCA/b3JpZ2luIH50b3RhbCBhY2N1cmFjeVxuICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGluZmx1ZW5jZXMgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGJ1ZiA9IEJ1ZmZlci5jcmVhdGUgMTAwMCBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgZm10ID0gRm9ybWF0LmZvcm1hdHRlcl9vZl9idWZmZXIgYnVmIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2dnZXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgIExvZ2dlcnMub3Blbl9sb2dnZXJfZnJvbV9mb3JtYXR0ZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIH5tb2RlOkxvZ2dlcnMuSnNfR3JhcGggZm10XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBsb2dnZXJfZ3JhcGggPVxuICAgICAgICAgICAgICAgICAgICAgICAgIEdyYXBoX2xvZ2dlcnNfc2lnLmV4dGVuZF9sb2dnZXIgbG9nZ2VyXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IGpzb25fdG9fZ3JhcGggbG9nZ2VyX2dyYXBoIGluZmx1ZW5jZXMgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IGdyYXBoID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBHcmFwaF9sb2dnZXJzX3NpZy5ncmFwaF9vZl9sb2dnZXIgbG9nZ2VyX2dyYXBoXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCBncmFwaF9qc29uID0gR3JhcGhfanNvbi50b19qc29uIGdyYXBoIGluXG4gICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IExvZ2dlcnMuZmx1c2hfbG9nZ2VyIGxvZ2dlciBpblxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBMb2dnZXJzLmNsb3NlX2xvZ2dlciBsb2dnZXIgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBpbmZsdWVuY2VtYXAjI3NldERhdGFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChKcy5zdHJpbmcgKFlvanNvbi5CYXNpYy50b19zdHJpbmcgZ3JhcGhfanNvbikpXG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICBsZXQgKCkgPSBpbmZsdWVuY2VtYXAjI2NsZWFyRGF0YSBpblxuICAgICAgICAgICAgICAgICAgICAgICBSZXN1bHRfdXRpbC5lcnJvciBlKSkpKVxuICAgIChSZWFjdC5TLm9uIH5lcTpTdGF0ZV9wcm9qZWN0Lm1vZGVsX2VxdWFsIHRhYl9pc19hY3RpdmVcbiAgICAgICBTdGF0ZV9wcm9qZWN0LmR1bW15X21vZGVsIFN0YXRlX3Byb2plY3QubW9kZWwpXG4gICAgbW9kZWxcblxubGV0IG5vcl9nY19tZSA9XG4gIFN0YXRlX2ZpbGUud2l0aF9jdXJyZW50X3Bvc1xuICAgIH5vbjooUmVhY3QuUy5Cb29sLiggJiYgKSB0YWJfaXNfYWN0aXZlIHRyYWNrX2N1cnNvcilcbiAgICAoZnVuIGZpbGVuYW1lIGN1cnNvcl9wb3MgLT5cbiAgICAgIFNvbWVcbiAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2luZmx1ZW5jZV9tYXBfbm9kZV9hdCB+ZmlsZW5hbWUgY3Vyc29yX3Bvc1xuICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5tYXAgKGZ1biBvcmlnaW4nIC0+XG4gICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgeyBtIHdpdGggb3JpZ2luID0gb3JpZ2luJzsgb3JpZ2luX2xhYmVsID0gTm9uZSB9KSkpKSlcbiAgICAoTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxubGV0IGRvbnRfZ2NfbWUgPSByZWYgW11cblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9IGRvbnRfZ2NfbWUgOj0gWyBuZWl0aGVyX2djX21lOyBub3JfZ2NfbWUgXSBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCBleHBvcnRfY29uZmlnIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgcmVuZGVyaW5nX2Nob29zZXIpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgdXBkYXRlX21vZGVsIChmdW4gbSAtPlxuICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgbSB3aXRoXG4gICAgICAgICAgICAgICAgICAgcmVuZGVyaW5nID1cbiAgICAgICAgICAgICAgICAgICAgIChpZiBKcy50b19zdHJpbmcgdmEjIy52YWx1ZSA9IFwiZ3JhcGhcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICBEcmF3R3JhcGggeyBmd2QgPSBOb25lOyBid2QgPSBOb25lOyB0b3RhbCA9IDEgfVxuICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgIERyYXdUYWJ1bGFyICgpKTtcbiAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgYWNjdXJhY3lfY2hvb3NlcikjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IGFjY3VyYWN5ID1cbiAgICAgICAgICAgICBQdWJsaWNfZGF0YS5hY2N1cmFjeV9vZl9zdHJpbmcgKEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+IHsgbSB3aXRoIGFjY3VyYWN5IH0pIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgdG90YWxfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICB1cGRhdGVfbW9kZWxfZ3JhcGggKGZ1biBtIC0+IHsgbSB3aXRoIHRvdGFsID0gaW50X29mX3N0cmluZyB2YSB9KVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgSnMuX3RydWVcbiAgICAgICAgICAgd2l0aCBfIC0+IEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IGZ3ZF9pbnB1dCkjIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmZ1bGxfaGFuZGxlciAoZnVuIHZhIF8gLT5cbiAgICAgICAgICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHZhIyMudmFsdWUgaW5cbiAgICAgICAgICAgdHJ5XG4gICAgICAgICAgICAgbGV0IGZ3ZCA9XG4gICAgICAgICAgICAgICBpZiB2YSA9IFwiXCIgdGhlblxuICAgICAgICAgICAgICAgICBOb25lXG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIFNvbWUgKGludF9vZl9zdHJpbmcgdmEpXG4gICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfbW9kZWxfZ3JhcGggKGZ1biBtIC0+IHsgbSB3aXRoIGZ3ZCB9KSBpblxuICAgICAgICAgICAgIEpzLl90cnVlXG4gICAgICAgICAgIHdpdGggXyAtPiBKcy5fZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBid2RfaW5wdXQpIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biB2YSBfIC0+XG4gICAgICAgICAgIGxldCB2YSA9IEpzLnRvX3N0cmluZyB2YSMjLnZhbHVlIGluXG4gICAgICAgICAgIHRyeVxuICAgICAgICAgICAgIGxldCBid2QgPVxuICAgICAgICAgICAgICAgaWYgdmEgPSBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgTm9uZVxuICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICBTb21lIChpbnRfb2Zfc3RyaW5nIHZhKVxuICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX21vZGVsX2dyYXBoIChmdW4gbSAtPiB7IG0gd2l0aCBid2QgfSkgaW5cbiAgICAgICAgICAgICBKcy5fdHJ1ZVxuICAgICAgICAgICB3aXRoIF8gLT4gSnMuX2ZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIChUeXhtbF9qcy5Ub19kb20ub2ZfYnV0dG9uIHJlY2VudGVyKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBfIF8gLT5cbiAgICAgICAgICAgbGV0IF8gPVxuICAgICAgICAgICAgIFN0YXRlX2Vycm9yLndyYXAgXCJpbmZsdWVuY2VfbWFwX3JlY2VudGVyXCJcbiAgICAgICAgICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAoZnVuIChtYW5hZ2VyIDogQXBpLmNvbmNyZXRlX21hbmFnZXIpIC0+XG4gICAgICAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2luaXRpYWxfbm9kZVxuICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gb3JpZ2luX3JlZmluZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgaW5mbHVlbmNlX25vZGVfbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSkpKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gbmV4dF9ub2RlKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBfIF8gLT5cbiAgICAgICAgICAgbGV0IHsgb3JpZ2luOyBfIH0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9uZXh0X25vZGVcIlxuICAgICAgICAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfbmV4dF9ub2RlIG9yaWdpblxuICAgICAgICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwubWFwIChmdW4gb3JpZ2luX3JlZmluZWQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgb3JpZ2luID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9wdGlvbl91dGlsLm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNfZGF0YS5zaG9ydF9ub2RlX29mX3JlZmluZWRfbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5fcmVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbl9sYWJlbCA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXAgaW5mbHVlbmNlX25vZGVfbGFiZWxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9tb2RlbCAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeyBtIHdpdGggb3JpZ2luOyBvcmlnaW5fbGFiZWwgfSkpKSlcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgKFR5eG1sX2pzLlRvX2RvbS5vZl9idXR0b24gcHJldl9ub2RlKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5mdWxsX2hhbmRsZXIgKGZ1biBfIF8gLT5cbiAgICAgICAgICAgbGV0IHsgb3JpZ2luOyBfIH0gPSBSZWFjdC5TLnZhbHVlIG1vZGVsIGluXG4gICAgICAgICAgIGxldCBfID1cbiAgICAgICAgICAgICBTdGF0ZV9lcnJvci53cmFwIFwiaW5mbHVlbmNlX21hcF9wcmV2X25vZGVcIlxuICAgICAgICAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNnZXRfcHJldmlvdXNfbm9kZSBvcmlnaW5cbiAgICAgICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLm1hcCAoZnVuIG9yaWdpbl9yZWZpbmVkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG9yaWdpbiA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcHRpb25fdXRpbC5tYXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljX2RhdGEuc2hvcnRfbm9kZV9vZl9yZWZpbmVkX25vZGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luX3JlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBvcmlnaW5fbGFiZWwgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3B0aW9uX3V0aWwubWFwIGluZmx1ZW5jZV9ub2RlX2xhYmVsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbl9yZWZpbmVkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfbW9kZWwgKGZ1biBtIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgbSB3aXRoIG9yaWdpbjsgb3JpZ2luX2xhYmVsIH0pKSkpXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2aW5mbHVlbmNlc1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZpbmZsdWVuY2VzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gdHJ1ZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm1vZHVsZSBIdG1sID0gVHl4bWxfanMuSHRtbDVcbm9wZW4gTHd0LkluZml4XG5cbmxldCBuYXZsaSAoKSA9IFJlYWN0aXZlRGF0YS5STGlzdC5lbXB0eVxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCB0YWJfd2FzX2FjdGl2ZSA9IHJlZiBmYWxzZVxubGV0IHNpdGUgYSA9IFsgYSwgTm9uZSwgU29tZSAoUHVibGljX2RhdGEuQm91bmRfdG8gMSksIE5vbmUgXVxuXG5sZXQgcHJpbnRfZWRnZSAoKGEsIGIpLCAoYywgZCkpIGxpc3QgPVxuICBVdGlsaXR5LnByaW50X25ld2xpbmUgKFV0aWxpdHkucHJpbnRfc2l0ZV9ncmFwaCBbIGEsIHNpdGUgYjsgYywgc2l0ZSBkIF0gbGlzdClcblxubGV0IGNvbnRlbnQgKCkgPVxuICBsZXQgc2NjID1cbiAgICBTdGF0ZV9wcm9qZWN0Lm9uX3Byb2plY3RfY2hhbmdlX2FzeW5jIH5vbjp0YWJfaXNfYWN0aXZlICgpXG4gICAgICAoUmVhY3QuUy5jb25zdCAoKSkgW10gKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAoKSAtPlxuICAgICAgICBtYW5hZ2VyI2dldF9wb3RlbnRpYWxfcG9seW1lcnMgKFNvbWUgUHVibGljX2RhdGEuSGlnaClcbiAgICAgICAgICAoU29tZSBQdWJsaWNfZGF0YS5IaWdoKVxuICAgICAgICAoKlRPRE86IG1ha2UgdGhlc2Ugb3B0aW9ucyB0dW5hYmxlICopXG4gICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIChfLCBfLCBzY2MpIC0+XG4gICAgICAgICAgICAgICAgbGV0IHNjYyA9IExpc3QucmV2X21hcCBMaXN0LnJldiBzY2MgaW5cbiAgICAgICAgICAgICAgICBsZXQgb3V0cHV0ID1cbiAgICAgICAgICAgICAgICAgIGlmIHNjYyA9IFtdIHx8IHNjYyA9IFsgW10gXSB0aGVuXG4gICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgXCJUaGUgc2l6ZSBvZiBiaW9tb2xlY3VsYXIgY29tcG91bmRzIGlzIHVuaWZvcm1seSBib3VuZGVkLlwiXG4gICAgICAgICAgICAgICAgICAgICAgW11cbiAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9XG4gICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gbGlzdCBsaXN0X2VkZ2VzIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGxpc3QgKChhLCBiKSwgKGMsIGQpKSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRfZWRnZSAoKGEsIGIpLCAoYywgZCkpIGxpc3QpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCBsaXN0X2VkZ2VzKVxuICAgICAgICAgICAgICAgICAgICAgICAgW10gc2NjXG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gVXRpbGl0eS5wcmludF9uZXdsaW5lIGxpc3QgaW5cbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgIFV0aWxpdHkucHJpbnRfc3RyaW5nXG4gICAgICAgICAgICAgICAgICAgICAgICBcIlRoZSBmb2xsb3dpbmcgYm9uZHMgbWF5IGZvcm0gYXJiaXRyYXJ5IGxvbmcgY2hhaW5zIG9mIFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnRzOlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0XG4gICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgIGxpc3RcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgIFsgSHRtbC5wIG91dHB1dCBdKVxuICAgICAgICAgICAgICB+ZXJyb3I6KGZ1biBtaCAtPlxuICAgICAgICAgICAgICAgIExpc3QubWFwXG4gICAgICAgICAgICAgICAgICAoZnVuIG0gLT5cbiAgICAgICAgICAgICAgICAgICAgSHRtbC5wXG4gICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiIFJlc3VsdF91dGlsLnByaW50X21lc3NhZ2UgbSk7XG4gICAgICAgICAgICAgICAgICAgICAgXSlcbiAgICAgICAgICAgICAgICAgIG1oKSlcbiAgaW5cbiAgW1xuICAgIFR5eG1sX2pzLlIuSHRtbDUuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtcHJlXCI7IFwicGFuZWwtc2Nyb2xsXCIgXSBdXG4gICAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIHNjYyk7XG4gIF1cblxubGV0IHBhcmVudF9oaWRlICgpID0gc2V0X3RhYl9pc19hY3RpdmUgZmFsc2VcbmxldCBwYXJlbnRfc2hvd24gKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSAhdGFiX3dhc19hY3RpdmVcblxubGV0IG9ubG9hZCAoKSA9XG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwb2x5bWVyc1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gdGFiX3dhc19hY3RpdmUgOj0gZmFsc2UgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZwb2x5bWVyc1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCByaWdodHN1YnBhbmVsX2lkIDogc3RyaW5nID0gXCJyaWdodHN1YnBhbmVsXCJcblxubGV0IHJpZ2h0c3VicGFuZWwgKCkgPVxuICBIdG1sLmRpdlxuICAgIH5hOlxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgIChSZWFjdC5TLmJpbmQgU3VicGFuZWxfZWRpdG9yLmVkaXRvcl9mdWxsIChmdW4gZWRpdG9yX2Z1bGwgLT5cbiAgICAgICAgICAgICAgIFJlYWN0LlMuY29uc3RcbiAgICAgICAgICAgICAgICAgKGlmIGVkaXRvcl9mdWxsIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgWyBcImhpZGRlblwiIF1cbiAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgWyBcImNvbC1tZC02XCI7IFwiaGlkZGVuLXhzXCI7IFwiaGlkZGVuLXNtXCI7IFwiZmxleC1jb250ZW50XCIgXSkpKTtcbiAgICAgIF1cbiAgICBbXG4gICAgICBVaV9jb21tb24ubmF2dGFicyBcInN1Ym5hdnRhYlwiXG4gICAgICAgIFtcbiAgICAgICAgICBcImNvbnRhY3RfbWFwXCIsIE5vbmUsIFRhYl9jb250YWN0X21hcC5uYXZsaSAoKTtcbiAgICAgICAgICBcImluZmx1ZW5jZXNcIiwgTm9uZSwgVGFiX2luZmx1ZW5jZXMubmF2bGkgKCk7XG4gICAgICAgICAgXCJjb25zdHJhaW50c1wiLCBOb25lLCBUYWJfY29uc3RyYWludHMubmF2bGkgKCk7XG4gICAgICAgICAgXCJwb2x5bWVyc1wiLCBOb25lLCBUYWJfcG9seW1lcnMubmF2bGkgKCk7XG4gICAgICAgIF07XG4gICAgICBVaV9jb21tb24ubmF2Y29udGVudCB+aWQ6cmlnaHRzdWJwYW5lbF9pZCBbXVxuICAgICAgICBbXG4gICAgICAgICAgXCJjb250YWN0X21hcFwiLCBbXSwgVGFiX2NvbnRhY3RfbWFwLmNvbnRlbnQgKCk7XG4gICAgICAgICAgXCJpbmZsdWVuY2VzXCIsIFtdLCBUYWJfaW5mbHVlbmNlcy5jb250ZW50ICgpO1xuICAgICAgICAgIFwiY29uc3RyYWludHNcIiwgW10sIFRhYl9jb25zdHJhaW50cy5jb250ZW50ICgpO1xuICAgICAgICAgIFwicG9seW1lcnNcIiwgW10sIFRhYl9wb2x5bWVycy5jb250ZW50ICgpO1xuICAgICAgICBdO1xuICAgIF1cblxuKCoqIFtjaGlsZHNfaGlkZSBiXSB0cmlnZ2VycyBjaGFuZ2UgdGhlIHN0YXRlIG9mIGNoaWxkIHRhYnMgdG8gaGlkZSBpZiBiIGlzIFRydWUsIG9yIGVsc2UgdG8gc2hvdyAqKVxubGV0IGNoaWxkc19oaWRlIChiIDogYm9vbCkgOiB1bml0ID1cbiAgaWYgYiB0aGVuIChcbiAgICBsZXQgKCkgPSBUYWJfY29udGFjdF9tYXAucGFyZW50X2hpZGUgKCkgaW5cbiAgICBsZXQgKCkgPSBUYWJfaW5mbHVlbmNlcy5wYXJlbnRfaGlkZSAoKSBpblxuICAgIGxldCAoKSA9IFRhYl9jb25zdHJhaW50cy5wYXJlbnRfaGlkZSAoKSBpblxuICAgIFRhYl9wb2x5bWVycy5wYXJlbnRfaGlkZSAoKVxuICApIGVsc2UgKFxuICAgIGxldCAoKSA9IFRhYl9jb250YWN0X21hcC5wYXJlbnRfc2hvd24gKCkgaW5cbiAgICBsZXQgKCkgPSBUYWJfaW5mbHVlbmNlcy5wYXJlbnRfc2hvd24gKCkgaW5cbiAgICBsZXQgKCkgPSBUYWJfY29uc3RyYWludHMucGFyZW50X3Nob3duICgpIGluXG4gICAgVGFiX3BvbHltZXJzLnBhcmVudF9zaG93biAoKVxuICApXG5cbmxldCBjb250ZW50ICgpID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5iaW5kIFN1YnBhbmVsX2VkaXRvci5lZGl0b3JfZnVsbCAoZnVuIGVkaXRvcl9mdWxsIC0+XG4gICAgICAgICAgICAgICAgICgqIGNoaWxkIGhpZGluZyBzZXQgaGVyZSB0byBhdm9pZCBcImdjXCIgKilcbiAgICAgICAgICAgICAgICAgbGV0ICgpID0gY2hpbGRzX2hpZGUgZWRpdG9yX2Z1bGwgaW5cbiAgICAgICAgICAgICAgICAgUmVhY3QuUy5jb25zdFxuICAgICAgICAgICAgICAgICAgIChpZiBlZGl0b3JfZnVsbCB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgWyBcImNvbC1tZC0xMlwiOyBcImZsZXgtY29udGVudFwiIF1cbiAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgIFsgXCJjb2wtbWQtNlwiOyBcImZsZXgtY29udGVudFwiIF0pKSk7XG4gICAgICAgIF1cbiAgICAgIFsgU3VicGFuZWxfZWRpdG9yLmNvbnRlbnQgKCkgXTtcbiAgICByaWdodHN1YnBhbmVsICgpO1xuICBdXG5cbmxldCBpbml0X2RlYWRfcnVsZXMgKCkgPVxuICBSZWFjdC5TLmwxXG4gICAgKGZ1biBtb2RlbCAtPlxuICAgICAgU3RhdGVfZXJyb3Iud3JhcCB+YXBwZW5kOnRydWUgXCJ0YWJfZWRpdG9yX2RlYWRfcnVsZVwiXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnNob3dfZGVhZF9ydWxlc1xuICAgICAgICAgICAgIHRoZW5cbiAgICAgICAgICAgICAgIG1hbmFnZXIjZ2V0X2RlYWRfcnVsZXNcbiAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB3YXJuaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIHJ1bGUgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2hpZGRlbiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWNjXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVhZCBydWxlIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBydWxlLlB1YmxpY19kYXRhLnJ1bGVfbGFiZWwgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiICdcIiBeIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCBeIFwiJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9hc3QgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUuUHVibGljX2RhdGEucnVsZV9hc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nX29mX2ludCBydWxlLlB1YmxpY19kYXRhLnJ1bGVfaWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5XYXJuaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIHJ1bGUuUHVibGljX2RhdGEucnVsZV9wb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiB3YXJuaW5ncylcbiAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+IG1oKVxuICAgICAgICAgICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzID9yZXN1bHRfY29kZTpOb25lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSkpXG4gICAgU3RhdGVfcHJvamVjdC5tb2RlbFxuXG5sZXQgaW5pdF9kZWFkX2FnZW50cyAoKSA9XG4gIFJlYWN0LlMubDFcbiAgICAoZnVuIG1vZGVsIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcInRhYl9lZGl0b3JfZGVhZF9hZ2VudFwiXG4gICAgICAgIChTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgIChmdW4gKG1hbmFnZXIgOiBBcGkuY29uY3JldGVfbWFuYWdlcikgLT5cbiAgICAgICAgICAgICBpZlxuICAgICAgICAgICAgICAgbW9kZWwuU3RhdGVfcHJvamVjdC5tb2RlbF9wYXJhbWV0ZXJzXG4gICAgICAgICAgICAgICAgIC5TdGF0ZV9wcm9qZWN0LnNob3dfZGVhZF9hZ2VudHNcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9kZWFkX2FnZW50c1xuICAgICAgICAgICAgICAgPnw9IFJlc3VsdF91dGlsLmZvbGRcbiAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuIGxpc3QgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgbGV0IHdhcm5pbmdzID1cbiAgICAgICAgICAgICAgICAgICAgICAgICBMaXN0LmZvbGRfbGVmdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgYWdlbnQgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRleHQgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiRGVhZCBhZ2VudCBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9hc3QgPD4gXCJcIiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudC5QdWJsaWNfZGF0YS5hZ2VudF9hc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50IGFnZW50LlB1YmxpY19kYXRhLmFnZW50X2lkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3QuZm9sZF9sZWZ0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBhY2MgcmFuZ2UgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwuc2V2ZXJpdHkgPSBMb2dzLldhcm5pbmc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnJhbmdlID0gU29tZSByYW5nZTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwudGV4dDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY2MgYWdlbnQuUHVibGljX2RhdGEuYWdlbnRfcG9zaXRpb24pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSBsaXN0XG4gICAgICAgICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgICAgICAgIExpc3QucmV2IHdhcm5pbmdzKVxuICAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gbWggLT4gbWgpXG4gICAgICAgICAgICAgICA+fD0gQXBpX2NvbW1vbi5yZXN1bHRfbWVzc2FnZXMgP3Jlc3VsdF9jb2RlOk5vbmVcbiAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKSlcbiAgICBTdGF0ZV9wcm9qZWN0Lm1vZGVsXG5cbmxldCBpbml0X25vbl93ZWFrbHlfcmV2ZXJzaWJsZV90cmFuc2l0aW9ucyAoKSA9XG4gIFJlYWN0LlMubDFcbiAgICAoZnVuIG1vZGVsIC0+XG4gICAgICBTdGF0ZV9lcnJvci53cmFwIH5hcHBlbmQ6dHJ1ZSBcInRhYl9lZGl0b3JfZGVhZF9ydWxlXCJcbiAgICAgICAgKFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOl9fTE9DX19cbiAgICAgICAgICAgKGZ1biAobWFuYWdlciA6IEFwaS5jb25jcmV0ZV9tYW5hZ2VyKSAtPlxuICAgICAgICAgICAgIGlmXG4gICAgICAgICAgICAgICBtb2RlbC5TdGF0ZV9wcm9qZWN0Lm1vZGVsX3BhcmFtZXRlcnNcbiAgICAgICAgICAgICAgICAgLlN0YXRlX3Byb2plY3Quc2hvd19ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICB0aGVuXG4gICAgICAgICAgICAgICBtYW5hZ2VyI2dldF9ub25fd2Vha2x5X3JldmVyc2libGVfdHJhbnNpdGlvbnNcbiAgICAgICAgICAgICAgID58PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biBsaXN0IC0+XG4gICAgICAgICAgICAgICAgICAgICAgIGxldCB3YXJuaW5ncyA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgTGlzdC5mb2xkX2xlZnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gYWNjIChydWxlLCBjb250ZXh0X2xpc3QpIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9oaWRkZW4gdGhlblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKiBoaW50OiByZXZlcnNpYmxlIHJ1bGUgYXJlIGFsd2F5cyB3ZWFrbHkgcmV2ZXJzaWJsZSAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcGx1cmFsLCBza2lwLCB0YWIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggY29udGV4dF9saXN0IHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW10gfCBbIF8gXSAtPiBcIlwiLCBcIlwiLCBcIiBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gLT4gXCJzXCIsIFwiXFxuXCIsIFwiXFx0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0ZXh0ID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5hc3ByaW50ZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlJ1bGUgJXMgbWF5IGluZHVjZSBub24gd2Vha2x5IHJldmVyc2libGUgXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIGNvbnRleHQlczolcyVhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHJ1bGUuUHVibGljX2RhdGEucnVsZV9sYWJlbCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCIgJ1wiIF4gcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2xhYmVsIF4gXCInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdCA8PiBcIlwiIHRoZW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS5QdWJsaWNfZGF0YS5ydWxlX2FzdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfb2ZfaW50IHJ1bGUuUHVibGljX2RhdGEucnVsZV9pZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1cmFsIHNraXBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZ1biBmbXQgLT4gRm9ybWF0LmZwcmludGYgZm10IFwiJXNcIiBza2lwKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnVuIGZtdCAoYSwgYikgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQuZnByaW50ZiBmbXQgXCIlcyVzIC0+ICVzIFwiIHRhYiBhIGIpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0X2xpc3RcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIHRvIGRvLCBhZGQgdGhlIHBvdGVudGlhbCBjb250ZXh0cyAqKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnNldmVyaXR5ID0gTG9ncy5XYXJuaW5nO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVzdWx0X3V0aWwucmFuZ2UgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb21lIHJ1bGUuUHVibGljX2RhdGEucnVsZV9wb3NpdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc3VsdF91dGlsLnRleHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gbGlzdFxuICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICBMaXN0LnJldiB3YXJuaW5ncylcbiAgICAgICAgICAgICAgICAgICAgIH5lcnJvcjooZnVuIG1oIC0+IG1oKVxuICAgICAgICAgICAgICAgPnw9IEFwaV9jb21tb24ucmVzdWx0X21lc3NhZ2VzID9yZXN1bHRfY29kZTpOb25lXG4gICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSkpXG4gICAgU3RhdGVfcHJvamVjdC5tb2RlbFxuXG5sZXQgZG9udF9nY19tZSA9IHJlZiBbXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gU3VicGFuZWxfZWRpdG9yLm9ubG9hZCAoKSBpblxuICBkb250X2djX21lIDo9IGluaXRfZGVhZF9ydWxlcyAoKSA6OiAhZG9udF9nY19tZTtcbiAgZG9udF9nY19tZSA6PSBpbml0X2RlYWRfYWdlbnRzICgpIDo6ICFkb250X2djX21lO1xuICBkb250X2djX21lIDo9IGluaXRfbm9uX3dlYWtseV9yZXZlcnNpYmxlX3RyYW5zaXRpb25zICgpIDo6ICFkb250X2djX21lO1xuICBsZXQgKCkgPSBUYWJfY29udGFjdF9tYXAub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9pbmZsdWVuY2VzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfY29uc3RyYWludHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9wb2x5bWVycy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmVkaXRvclwiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT4gY2hpbGRzX2hpZGUgdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmVkaXRvclwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+IGNoaWxkc19oaWRlIGZhbHNlKVxuICBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID1cbiAgbGV0ICgpID0gU3VicGFuZWxfZWRpdG9yLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9jb250YWN0X21hcC5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfaW5mbHVlbmNlcy5vbnJlc2l6ZSAoKSBpblxuICBsZXQgKCkgPSBUYWJfY29uc3RyYWludHMub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3BvbHltZXJzLm9ucmVzaXplICgpIGluXG4gICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IGRpbl9pZCwgc2V0X2Rpbl9pZCA9IFJlYWN0LlMuY3JlYXRlIFwiXCJcblxubGV0IGRpbl9saXN0IDpcbiAgICBbPCBIdG1sX3R5cGVzLnNlbGVjdF9jb250ZW50X2Z1biA+IGBPcHRpb24gXSBIdG1sLmVsdCBSZWFjdGl2ZURhdGEuUkxpc3QudCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX2V2ZW50IFtdXG4gICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgKGZ1biBfIC0+XG4gICAgICAgICBMd3QubWFwXG4gICAgICAgICAgIChSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgICAgICAgIH5vazooZnVuIGRpbl9pZHMgLT5cbiAgICAgICAgICAgICAgICBsZXQgb3V0ID1cbiAgICAgICAgICAgICAgICAgIExpc3QucmV2X21hcFxuICAgICAgICAgICAgICAgICAgICAoZnVuIGlkIC0+IEh0bWwub3B0aW9uIH5hOlsgSHRtbC5hX3ZhbHVlIGlkIF0gKEh0bWwudHh0IGlkKSlcbiAgICAgICAgICAgICAgICAgICAgZGluX2lkc1xuICAgICAgICAgICAgICAgIGluXG4gICAgICAgICAgICAgICAgUmVhY3RpdmVEYXRhLlJMaXN0LlNldCBvdXQpXG4gICAgICAgICAgICAgIH5lcnJvcjooZnVuIF8gLT4gUmVhY3RpdmVEYXRhLlJMaXN0LlNldCBbXSkpXG4gICAgICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPiBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19kaW4pXG4gICAgICAgICAgICAgICgpKSlcbiAgICAgICAoUmVhY3QuUy5jaGFuZ2VzXG4gICAgICAgICAgKFJlYWN0LlMub24gdGFiX2lzX2FjdGl2ZSBTdGF0ZV9zaW11bGF0aW9uLmR1bW15X21vZGVsXG4gICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCkpKVxuXG5sZXQgZGluX3NlbGVjdCA6IFs+IEh0bWxfdHlwZXMuc2VsZWN0IF0gSHRtbC5lbHQgPVxuICBUeXhtbF9qcy5SLkh0bWw1LnNlbGVjdCB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZm9ybS1jb250cm9sXCIgXSBdIGRpbl9saXN0XG5cbmxldCBkaW5fZGF0YSA6IERhdGEuZGluIG9wdGlvbiBSZWFjdC5zaWduYWwgPVxuICBSZWFjdC5TLmJpbmQgKFJlYWN0aXZlRGF0YS5STGlzdC5zaWduYWwgZGluX2xpc3QpIChmdW5jdGlvblxuICAgIHwgW10gLT4gUmVhY3QuUy5jb25zdCBOb25lXG4gICAgfCBfIDo6IF8gLT5cbiAgICAgIGxldCAoKSA9XG4gICAgICAgIHNldF9kaW5faWQgKEpzLnRvX3N0cmluZyAoVHl4bWxfanMuVG9fZG9tLm9mX3NlbGVjdCBkaW5fc2VsZWN0KSMjLnZhbHVlKVxuICAgICAgaW5cbiAgICAgIFJlYWN0LlMuYmluZCBkaW5faWQgKGZ1biBkaW5faWQgLT5cbiAgICAgICAgICBSZWFjdC5TLmhvbGQgTm9uZVxuICAgICAgICAgICAgKEx3dF9yZWFjdC5FLmZyb20gKGZ1biAoKSAtPlxuICAgICAgICAgICAgICAgICBMd3QubWFwXG4gICAgICAgICAgICAgICAgICAgKFJlc3VsdF91dGlsLmZvbGQgfm9rOihmdW4geCAtPiB4KSB+ZXJyb3I6KGZ1biBfIC0+IE5vbmUpKVxuICAgICAgICAgICAgICAgICAgIChTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mb1xuICAgICAgICAgICAgICAgICAgICAgIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIE5vbmUpKVxuICAgICAgICAgICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgTHd0Lm1hcFxuICAgICAgICAgICAgICAgICAgICAgICAgICAoUmVzdWx0X3V0aWwubWFwIE9wdGlvbi5zb21lKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAobWFuYWdlciNzaW11bGF0aW9uX2RldGFpbF9kaW4gZGluX2lkKSlcbiAgICAgICAgICAgICAgICAgICAgICAoKSkpKSkpXG5cbmxldCBkaW5faGVhZGVyIDogSHRtbF90eXBlcy50ciBIdG1sLmVsdCBSZWFjdGl2ZURhdGEuUkxpc3QudCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbFxuICAgIChSZWFjdC5TLm1hcFxuICAgICAgIChmdW5jdGlvblxuICAgICAgICAgfCBOb25lIC0+IFtdXG4gICAgICAgICB8IFNvbWUgZGluIC0+XG4gICAgICAgICAgIFtcbiAgICAgICAgICAgICBIdG1sLnRyXG4gICAgICAgICAgICAgICAoSHRtbC50aCBbIEh0bWwudHh0IFwiYWZmZWN0c1wiIF1cbiAgICAgICAgICAgICAgIDo6IEFycmF5LmZvbGRfcmlnaHRcbiAgICAgICAgICAgICAgICAgICAgKGZ1biByIGFjYyAtPiBIdG1sLnRoIFsgSHRtbC50eHQgciBdIDo6IGFjYylcbiAgICAgICAgICAgICAgICAgICAgZGluLkRhdGEuZGluX3J1bGVzIFtdKTtcbiAgICAgICAgICAgXSlcbiAgICAgICBkaW5fZGF0YSlcblxubGV0IGRpbl90YWJsZSA6IEh0bWxfdHlwZXMudGJvZHkgSHRtbC5lbHQgUmVhY3RpdmVEYXRhLlJMaXN0LnQgPVxuICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgfCBTb21lIGRpbiAtPlxuICAgICAgICAgICBsZXQgb3BlbiBEYXRhIGluXG4gICAgICAgICAgIGxldCBhbGwgPSBkaW4uZGluX2RhdGEuZGluX2tpbmQgPSBQcmltaXRpdmVzLlBST0JBQklMSVRZIGluXG4gICAgICAgICAgIGxldCBib2R5ID1cbiAgICAgICAgICAgICBUb29scy5hcnJheV9mb2xkX3JpZ2h0aVxuICAgICAgICAgICAgICAgKGZ1biBpIGRhdGEgYWNjIC0+XG4gICAgICAgICAgICAgICAgIGlmIGFsbCB8fCBkaW4uZGluX2RhdGEuZGluX2hpdHMuKGkpID4gMCB0aGVuXG4gICAgICAgICAgICAgICAgICAgSHRtbC50clxuICAgICAgICAgICAgICAgICAgICAgKEh0bWwudGhcbiAgICAgICAgICAgICAgICAgICAgICAgIFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgSHRtbC50eHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGluLmRpbl9ydWxlcy4oaSkgXiBcIiAoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBeIHN0cmluZ19vZl9pbnQgZGluLmRpbl9kYXRhLmRpbl9oaXRzLihpKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4gXCIgaGl0cylcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICA6OiBBcnJheS5mb2xkX3JpZ2h0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIChmdW4gdiBhY2MgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLnRkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+YTpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIHYgPiAwLiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwic3VjY2Vzc1wiIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIHYgPCAwLiB0aGVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIFwiaW5mb1wiIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsgSHRtbC50eHQgKHN0cmluZ19vZl9mbG9hdCB2KSBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOjogYWNjKVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhIFtdKVxuICAgICAgICAgICAgICAgICAgIDo6IGFjY1xuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgYWNjKVxuICAgICAgICAgICAgICAgZGluLmRpbl9kYXRhLmRpbl9mbHV4cyBbXVxuICAgICAgICAgICBpblxuICAgICAgICAgICBbIEh0bWwudGJvZHkgYm9keSBdKVxuICAgICAgIGRpbl9kYXRhKVxuXG5sZXQgZGluIDogWz4gSHRtbF90eXBlcy50YWJsZXggXSBIdG1sLmVsdCA9XG4gIGxldCB0aGVhZCA9IFJlYWN0LlMuY29uc3QgKFR5eG1sX2pzLlIuSHRtbDUudGhlYWQgZGluX2hlYWRlcikgaW5cbiAgVHl4bWxfanMuUi5IdG1sNS50YWJsZXhcbiAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwidGFibGVcIjsgXCJ0YWJsZS1jb25kZW5zZWRcIjsgXCJ0YWJsZS1ib3JkZXJlZFwiIF0gXVxuICAgIH50aGVhZCBkaW5fdGFibGVcblxubGV0IGV4cG9ydF9jdXJyZW50X2RpbiAodG9fc3RyaW5nIDogRGF0YS5kaW4gLT4gc3RyaW5nKSAobWltZSA6IHN0cmluZylcbiAgICAoZmlsZW5hbWUgOiBzdHJpbmcpIDogdW5pdCA9XG4gIGxldCBkaW5faWQgPSBKcy50b19zdHJpbmcgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy52YWx1ZSBpblxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfZGluIGRpbl9pZFxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIGRpbiAtPlxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IEpzLnN0cmluZyAodG9fc3RyaW5nIGRpbikgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0gQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lIH5maWxlbmFtZSBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgZXhwb3J0X2NvbmZpZ3VyYXRpb24gOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IFwiZGluLWV4cG9ydFwiO1xuICAgIFdpZGdldF9leHBvcnQuc2hvdyA9IFJlYWN0LlMuY29uc3QgdHJ1ZTtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJqc29uXCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID1cbiAgICAgICAgICAgIGV4cG9ydF9jdXJyZW50X2RpbiAoRGF0YS5zdHJpbmdfb2ZfZGluID9sZW46Tm9uZSkgXCJhcHBsaWNhdGlvbi9qc29uXCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiZG90XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiZG90XCI7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAgICAgZXhwb3J0X2N1cnJlbnRfZGluXG4gICAgICAgICAgICAgIChGb3JtYXQuYXNwcmludGYgXCJAWyVhQF1cIiAoRGF0YS5wcmludF9kb3RfZGluID91dWlkOk5vbmUpKVxuICAgICAgICAgICAgICBcInRleHQvdm5kLmdyYXBodml6XCI7XG4gICAgICAgIH07XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwiaHRtbFwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImh0bWxcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgICAgICBleHBvcnRfY3VycmVudF9kaW5cbiAgICAgICAgICAgICAgKEZvcm1hdC5hc3ByaW50ZiBcIkBbJWFAXVwiIERhdGEucHJpbnRfaHRtbF9kaW4pXG4gICAgICAgICAgICAgIFwidGV4dC9odG1sXCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICB9XG5cbmxldCBjb250ZW50ICgpIDogWz4gSHRtbF90eXBlcy5kaXYgXSBIdG1sLmVsdCBsaXN0ID1cbiAgW1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwiZmxleF9jb250ZW50XCI7IFwidGFibGUtcmVzcG9uc2l2ZVwiIF0gXVxuICAgICAgW1xuICAgICAgICBIdG1sLmZvcm0gWyBkaW5fc2VsZWN0IF07XG4gICAgICAgIGRpbjtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5jb250ZW50IGV4cG9ydF9jb25maWd1cmF0aW9uO1xuICAgICAgXTtcbiAgXVxuXG5sZXQgbmF2bGkgKCkgOiBbPiBgUENEQVRBIHwgYFNwYW4gXSBIdG1sLmVsdCBSZWFjdGl2ZURhdGEuUkxpc3QudCA9XG4gIFVpX2NvbW1vbi5iYWRnZSAoZnVuIHN0YXRlIC0+XG4gICAgICBtYXRjaCBzdGF0ZSB3aXRoXG4gICAgICB8IE5vbmUgLT4gMFxuICAgICAgfCBTb21lIHN0YXRlIC0+XG4gICAgICAgIHN0YXRlLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9vdXRwdXRfZGlucylcblxubGV0IG9ubG9hZCAoKSA6ICdhID1cbiAgKFR5eG1sX2pzLlRvX2RvbS5vZl9zZWxlY3QgZGluX3NlbGVjdCkjIy5vbmNoYW5nZVxuICA6PSBEb20uaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgIHNldF9kaW5faWRcbiAgICAgICAgICAgKChUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IGRpbl9zZWxlY3QpIyMudmFsdWUgfD4gSnMudG9fc3RyaW5nKTtcbiAgICAgICAgIEpzLl9mYWxzZSk7XG4gIFdpZGdldF9leHBvcnQub25sb2FkIGV4cG9ydF9jb25maWd1cmF0aW9uO1xuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2RElOXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT4gc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZESU5cIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuXG5sZXQgb25yZXNpemUgKCkgOiB1bml0ID0gKClcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiAgXyAgX18gKiBUaGUgS2FwcGEgTGFuZ3VhZ2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCogfCB8LyAvICogQ29weXJpZ2h0IDIwMTAtMjAyMCBDTlJTIC0gSGFydmFyZCBNZWRpY2FsIFNjaG9vbCAtIElOUklBIC0gSVJJRiAgKilcbigqIHwgJyAvICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG4oKiB8IC4gXFwgICogVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgICAgICAgICAgICAgICAgICAgKilcbigqIHxffFxcX1xcICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMyAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiopXG5cbm9wZW4gTHd0LkluZml4XG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5cbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgdGFiX3dhc19hY3RpdmUgPSByZWYgZmFsc2VcblxubGV0IGxpbmVfY291bnQgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIGxldCBvcGVuIEFwaV90eXBlc190IGluXG4gICAgc3RhdGUuc2ltdWxhdGlvbl9pbmZvX291dHB1dC5zaW11bGF0aW9uX291dHB1dF9sb2dfbWVzc2FnZXNcblxubGV0IG5hdmxpICgpID1cbiAgVWlfY29tbW9uLmxhYmVsX25ld3MgdGFiX2lzX2FjdGl2ZSAoZnVuIHN0YXRlIC0+IGxpbmVfY291bnQgc3RhdGUpXG5cbmxldCBjb250ZW50ICgpID1cbiAgbGV0IHN0YXRlX2xvZyA9XG4gICAgKCogV2UgZ2V0IHRoZSBzaWduYWwgb2YgbG9nIG1lc3NhZ2VzIGZvciBjdXJyZW50IHNpbXVsYXRpb24gbW9kZWwuIFRoZSBiaW5kIGFsbG93cyB0byBjaGFuZ2UgdGhlIHNpZ25hbCB0byB0aGUgbmV3IHNpbXVsYXRpb24gbW9kZWwgd2hlbiBpdCBjaGFuZ2VzICopXG4gICAgUmVhY3QuUy5iaW5kXG4gICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwpIChmdW4gXyAtPlxuICAgICAgICBSZWFjdC5TLmhvbGQgXCJcIlxuICAgICAgICAgIChMd3RfcmVhY3QuRS5mcm9tIChmdW4gKCkgLT5cbiAgICAgICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPiBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2xvZ19tZXNzYWdlKVxuICAgICAgICAgICAgICAgICB+c3RvcHBlZDooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgXCJcIikpXG4gICAgICAgICAgICAgICAgIH5pbml0aWFsaXppbmc6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFwiXCIpKVxuICAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICAgPnw9IGZ1biAoeCA6IHN0cmluZyBBcGkucmVzdWx0KSAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggeC5SZXN1bHRfdXRpbC52YWx1ZSB3aXRoXG4gICAgICAgICAgICAgICB8IE9rIHggLT4geFxuICAgICAgICAgICAgICAgfCBFcnJvciBsaXN0IC0+XG4gICAgICAgICAgICAgICAgIFN0cmluZy5jb25jYXQgXCJcXG5cIlxuICAgICAgICAgICAgICAgICAgIChMaXN0Lm1hcCAoZnVuIFJlc3VsdF91dGlsLnsgdGV4dDsgXyB9IC0+IHRleHQpIGxpc3QpKSkpXG4gIGluXG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXByZVwiOyBcInBhbmVsLXNjcm9sbFwiIF0gXVxuICAgICAgWyBUeXhtbF9qcy5SLkh0bWwudHh0IHN0YXRlX2xvZyBdO1xuICBdXG5cbmxldCBwYXJlbnRfaGlkZSAoKSA9IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlXG5sZXQgcGFyZW50X3Nob3duICgpID0gc2V0X3RhYl9pc19hY3RpdmUgIXRhYl93YXNfYWN0aXZlXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2bG9nXCIgXCJoaWRlLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSB0YWJfd2FzX2FjdGl2ZSA6PSBmYWxzZSBpblxuICAgICAgICBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdmxvZ1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgc2VsZWN0X2lkID0gXCJvdXRwdXQtc2VsZWN0LWlkXCJcbmxldCB0YWJfaXNfYWN0aXZlLCBzZXRfdGFiX2lzX2FjdGl2ZSA9IFJlYWN0LlMuY3JlYXRlIGZhbHNlXG5sZXQgY3VycmVudF9maWxlLCBzZXRfY3VycmVudF9maWxlID0gUmVhY3QuUy5jcmVhdGUgTm9uZVxuXG5sZXQgdXBkYXRlX291dHB1dHMgKGtleSA6IHN0cmluZykgOiB1bml0ID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX2ZpbGVfbGluZSBrZXlcbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biBsaW5lcyAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPSBzZXRfY3VycmVudF9maWxlIChTb21lIChrZXksIGxpbmVzKSkgaW5cbiAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKSlcblxubGV0IGZpbGVfY291bnQgc3RhdGUgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc190LnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgIC5BcGlfdHlwZXNfdC5zaW11bGF0aW9uX291dHB1dF9maWxlX2xpbmVzXG5cbmxldCBuYXZsaSAoKSA9IFVpX2NvbW1vbi5iYWRnZSAoZnVuIHN0YXRlIC0+IGZpbGVfY291bnQgc3RhdGUpXG5cbmxldCB4bWwgKCkgPVxuICBsZXQgc2VsZWN0IChmaWxlX2xpbmVfaWRzIDogc3RyaW5nIGxpc3QpIDogWz4gSHRtbF90eXBlcy5zZWxlY3QgXSBIdG1sLmVsdCA9XG4gICAgbGV0IGxpbmVzIDogKHN0cmluZyAqIHN0cmluZyBsaXN0KSBvcHRpb24gPSBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfZmlsZSBpblxuICAgIGxldCBjdXJyZW50X2ZpbGVfaWQgOiBzdHJpbmcgPVxuICAgICAgbWF0Y2ggZmlsZV9saW5lX2lkcywgbGluZXMgd2l0aFxuICAgICAgfCBbXSwgXyAtPiBhc3NlcnQgZmFsc2VcbiAgICAgIHwgZmlsZSA6OiBfLCBOb25lIHwgXyA6OiBfLCBTb21lIChmaWxlLCBfKSAtPiBmaWxlXG4gICAgaW5cbiAgICBsZXQgZmlsZV9vcHRpb25zIDogWz4gSHRtbF90eXBlcy5zZWxlY3RvcHRpb24gXSBIdG1sLmVsdCBsaXN0ID1cbiAgICAgIExpc3QubWFwXG4gICAgICAgIChmdW4ga2V5IC0+XG4gICAgICAgICAgSHRtbC5vcHRpb25cbiAgICAgICAgICAgIH5hOlxuICAgICAgICAgICAgICAoWyBIdG1sLmFfdmFsdWUga2V5IF1cbiAgICAgICAgICAgICAgQFxuICAgICAgICAgICAgICBpZiBrZXkgPSBjdXJyZW50X2ZpbGVfaWQgdGhlblxuICAgICAgICAgICAgICAgIFsgSHRtbC5hX3NlbGVjdGVkICgpIF1cbiAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgIFtdKVxuICAgICAgICAgICAgKEh0bWwudHh0IChVaV9jb21tb24ub3B0aW9uX2xhYmVsIGtleSkpKVxuICAgICAgICBmaWxlX2xpbmVfaWRzXG4gICAgaW5cbiAgICBsZXQgKCkgPSB1cGRhdGVfb3V0cHV0cyBjdXJyZW50X2ZpbGVfaWQgaW5cbiAgICBUeXhtbF9qcy5IdG1sLnNlbGVjdFxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImZvcm0tY29udHJvbFwiIF07IEh0bWwuYV9pZCBzZWxlY3RfaWQgXVxuICAgICAgZmlsZV9vcHRpb25zXG4gIGluXG4gIGxldCBmaWxlX3NlbGVjdCA9XG4gICAgVHl4bWxfanMuUi5IdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImxpc3QtZ3JvdXAtaXRlbVwiIF0gXVxuICAgICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX2V2ZW50IFtdXG4gICAgICAgICAoTHd0X3JlYWN0LkUubWFwX3NcbiAgICAgICAgICAgIChmdW4gXyAtPlxuICAgICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2l0aF9zaW1fbWFuYWdlcl9hbmRfaW5mbyB+bGFiZWw6X19MT0NfX1xuICAgICAgICAgICAgICAgIH5zdG9wcGVkOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgICAgfmluaXRpYWxpemluZzooZnVuIF8gLT4gTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgW10pKVxuICAgICAgICAgICAgICAgIH5yZWFkeTooZnVuIG1hbmFnZXIgXyAtPlxuICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX2NhdGFsb2dfZmlsZV9saW5lXG4gICAgICAgICAgICAgICAgICA+Pj0gQXBpX2NvbW1vbi5yZXN1bHRfYmluZF9sd3RcbiAgICAgICAgICAgICAgICAgICAgICAgIH5vazooZnVuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGVfbGluZV9pZHMgOiBBcGlfdHlwZXNfai5maWxlX2xpbmVfY2F0YWxvZykgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHNlbGVjdF9maWxlIDogWz4gYEg0IHwgYFNlbGVjdCBdIEh0bWwuZWx0IGxpc3QgPVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqIFRPRE86IG5hbWUgKilcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCBmaWxlX2xpbmVfaWRzIHdpdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtdIC0+IFtdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXkgOjogW10gLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9IHVwZGF0ZV9vdXRwdXRzIGtleSBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIdG1sLmg0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyBIdG1sLnR4dCAoVWlfY29tbW9uLm9wdGlvbl9sYWJlbCBrZXkpIF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBfIDo6IF8gOjogXyAtPiBbIHNlbGVjdCBmaWxlX2xpbmVfaWRzIF1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgc2VsZWN0X2ZpbGUpKSlcbiAgICAgICAgICAgICAgICAoKVxuICAgICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICAgICB+b2s6KGZ1biB4IC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgeClcbiAgICAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IFtdKSlcbiAgICAgICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCkpKSlcbiAgaW5cbiAgbGV0IGZpbGVfY29udGVudCA9XG4gICAgW1xuICAgICAgVHl4bWxfanMuUi5IdG1sLmRpdlxuICAgICAgICB+YTpbIEh0bWwuYV9jbGFzcyBbIFwicGFuZWwtc2Nyb2xsXCI7IFwiZmxleC1jb250ZW50XCIgXSBdXG4gICAgICAgIChSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9zaWduYWxcbiAgICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgIChmdW5jdGlvblxuICAgICAgICAgICAgICAgIHwgTm9uZSAtPiBbXVxuICAgICAgICAgICAgICAgIHwgU29tZSAoXywgbGluZXMpIC0+XG4gICAgICAgICAgICAgICAgICBMaXN0Lm1hcCAoZnVuIGxpbmUgLT4gSHRtbC5wIFsgSHRtbC50eHQgbGluZSBdKSBsaW5lcylcbiAgICAgICAgICAgICAgY3VycmVudF9maWxlKSk7XG4gICAgXVxuICBpblxuICBbXG4gICAgWyVodG1sXG4gICAgICB7fDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LXZpZXdcIj5cbiAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNlbnRlci1ibG9jayBkaXNwbGF5LWhlYWRlclwiPlxuICAgICAgICAgICB8fVxuICAgICAgICBbIGZpbGVfc2VsZWN0IF1cbiAgICAgICAge3xcbiAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICB8fVxuICAgICAgICBmaWxlX2NvbnRlbnRcbiAgICAgICAge3xcbiAgICAgICAgICAgICA8L2Rpdj4gfH1dO1xuICBdXG5cbmxldCBzZWxlY3Rfb3V0cHV0cyAoKSA6IHVuaXQgPVxuICBsZXQgc2VsZWN0X2RvbSA9IFVpX2NvbW1vbi5pZF9kb20gc2VsZWN0X2lkIGluXG4gIGxldCBmaWxlaW5kZXggPSBKcy50b19zdHJpbmcgc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gIHVwZGF0ZV9vdXRwdXRzIGZpbGVpbmRleFxuXG5sZXQgY29udGVudCAoKSA9XG4gIFsgVWlfY29tbW9uLnRvZ2dsZV9lbGVtZW50IChmdW4gdCAtPiBmaWxlX2NvdW50IHQgPiAwKSAoeG1sICgpKSBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2b3V0cHV0c1wiIFwiaGlkZS5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgZmFsc2UpXG4gIGluXG4gIGxldCAoKSA9XG4gICAgQ29tbW9uLmpxdWVyeV9vbiBcIiNuYXZvdXRwdXRzXCIgXCJzaG93bi5icy50YWJcIiAoZnVuIF8gLT5cbiAgICAgICAgc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIChGb3JtYXQuc3ByaW50ZiBcIiMlc1wiIHNlbGVjdF9pZCkgXCJjaGFuZ2VcIiAoZnVuIF8gLT5cbiAgICAgICAgbGV0ICgpID0gc2VsZWN0X291dHB1dHMgKCkgaW5cbiAgICAgICAgSnMuX3RydWUpXG4gIGluXG4gICgpXG4oKiBUT0RPXG4gICAgIGxldCBzZWxlY3RfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgIEpzLlVuc2FmZS5jb2VyY2VcbiAgICAgICAgICgoSnMuT3B0LmdldFxuICAgICAgICAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkXG4gICAgICAgICAgICAgICAgKEpzLnN0cmluZyBzZWxlY3RfaWQpKVxuICAgICAgICAgICAgIChmdW4gKCkgLT4gYXNzZXJ0IGZhbHNlKSlcbiAgICAgICAgICA6IERvbV9odG1sLmVsZW1lbnQgSnMudCkgaW5cbiAgICAgbGV0ICgpID0gc2VsZWN0X2RvbSMjLm9uY2hhbmdlIDo9IERvbV9odG1sLmhhbmRsZXJcbiAgIChmdW4gXyAtPlxuICAgICAgbGV0ICgpID0gc2VsZWN0X291dHB1dHMgdFxuICAgICBpbiBKcy5fdHJ1ZSlcbiAgICAgaW5cbiopXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCptb2R1bGUgQXBpVHlwZXMgPSBBcGlfdHlwZXNfaiopXG5cbmNsYXNzIHR5cGUgb2JzZXJ2YWJsZV9wbG90ID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDogSnMuanNfc3RyaW5nIEpzLnQgLT4gdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBjbGVhckRhdGEgOiB1bml0IEpzLm1ldGhcbiAgbWV0aG9kIHJlZHJhdyA6IHVuaXQgSnMubWV0aFxuZW5kXG5cbmxldCBjcmVhdGVfb2JzZXJ2YWJsZV9wbG90IG1haW5fZGl2X2lkIDogb2JzZXJ2YWJsZV9wbG90IEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiT2JzZXJ2YWJsZVBsb3RcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgbWFpbl9kaXZfaWQpIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgZGl2X2Rpc3BsYXlfaWQgPSBcInBsb3QtbWFpbl9kaXZcIlxubGV0IGV4cG9ydF9pZCA9IFwicGxvdC1leHBvcnRcIlxuXG50eXBlIG9mZnNldCA9IHsgb2Zmc2V0X2N1cnJlbnQ6IGludDsgb2Zmc2V0X21heDogaW50IH1cblxubGV0IG9mZnNldCwgc2V0X29mZnNldCA9IFJlYWN0LlMuY3JlYXRlIChOb25lIDogb2Zmc2V0IG9wdGlvbilcbmxldCBkZWZhdWx0X3BvaW50ID0gMTAwMFxubGV0IHBvaW50LCBzZXRfcG9pbnRzID0gUmVhY3QuUy5jcmVhdGUgZGVmYXVsdF9wb2ludFxubGV0IHRhYl9pc19hY3RpdmUsIHNldF90YWJfaXNfYWN0aXZlID0gUmVhY3QuUy5jcmVhdGUgZmFsc2VcbmxldCBwbG90X3JlZiA9IHJlZiBOb25lXG5cbmxldCBoYXNfcGxvdCAoc3RhdGUgOiBBcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm8gb3B0aW9uKSA6IGJvb2wgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiBmYWxzZVxuICB8IFNvbWUgc3RhdGUgLT5cbiAgICBzdGF0ZS5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0LkFwaV90eXBlc19qLnNpbXVsYXRpb25fb3V0cHV0X3Bsb3RcbiAgICA+IDBcblxubGV0IGV4cG9ydF9qc29uIGZpbGVuYW1lID1cbiAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3RcbiAgICAgICAge1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfb2Zmc2V0ID0gTm9uZTtcbiAgICAgICAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X3BvaW50cyA9IE5vbmU7XG4gICAgICAgIH1cbiAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biAocGxvdCA6IEFwaV90eXBlc190LnBsb3QpIC0+XG4gICAgICAgICAgICAgIGxldCBkYXRhID0gSnMuc3RyaW5nIChEYXRhLnN0cmluZ19vZl9wbG90IHBsb3QpIGluXG4gICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgQ29tbW9uLnNhdmVGaWxlIH5kYXRhIH5taW1lOlwiYXBwbGljYXRpb24vanNvblwiIH5maWxlbmFtZVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpKVxuXG5sZXQgZXhwb3J0IG1pbWUgZmlsZW5hbWUgPVxuICBTdGF0ZV9zaW11bGF0aW9uLmV2YWxfd2hlbl9yZWFkeSB+bGFiZWw6X19MT0NfXyAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIG1hbmFnZXIjc2ltdWxhdGlvbl9kZXRhaWxfcGxvdFxuICAgICAgICB7XG4gICAgICAgICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9vZmZzZXQgPSBOb25lO1xuICAgICAgICAgIEFwaV90eXBlc19qLnBsb3RfbGltaXRfcG9pbnRzID0gTm9uZTtcbiAgICAgICAgfVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChwbG90IDogQXBpX3R5cGVzX3QucGxvdCkgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPVxuICAgICAgICAgICAgICAgIEpzLnN0cmluZyAoRGF0YS5leHBvcnRfcGxvdCB+aXNfdHN2OihtaW1lID0gXCJ0ZXh0L3RzdlwiKSBwbG90KVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPSBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWUgfmZpbGVuYW1lIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBwbG90X3BvaW50c19pbnB1dF9pZCA9IFwicGxvdF9wb2ludHNfaW5wdXRcIlxuXG5sZXQgcGxvdF9wb2ludHNfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIEh0bWwuYV9pZCBwbG90X3BvaW50c19pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYE51bWJlcjtcbiAgICAgICAgSHRtbC5hX2NsYXNzIFsgXCJmb3JtLWNvbnRyb2xcIiBdO1xuICAgICAgICBIdG1sLmFfc2l6ZSA1O1xuICAgICAgXVxuICAgICgpXG5cbmxldCBwbG90X29mZnNldF9pbnB1dF9pZCA9IFwicGxvdF9vZmZzZXRfaW5wdXRcIlxuXG5sZXQgcGxvdF9vZmZzZXRfaW5wdXQgPVxuICBIdG1sLmlucHV0XG4gICAgfmE6XG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBvZmZzZXQgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gUmVhY3QuUy5jb25zdCBbIFwiaGlkZVwiIF1cbiAgICAgICAgICAgIHwgU29tZSBfIC0+IFJlYWN0LlMuY29uc3QgW10pKTtcbiAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfaW5wdXRfbWF4XG4gICAgICAgICAgKFJlYWN0LlMuYmluZCBvZmZzZXQgKGZ1bmN0aW9uXG4gICAgICAgICAgICB8IE5vbmUgLT4gUmVhY3QuUy5jb25zdCAoYE51bWJlciAwKVxuICAgICAgICAgICAgfCBTb21lIG1heF9vZmZzZXQgLT4gUmVhY3QuUy5jb25zdCAoYE51bWJlciBtYXhfb2Zmc2V0Lm9mZnNldF9tYXgpKSk7XG4gICAgICAgIEh0bWwuYV9pZCBwbG90X29mZnNldF9pbnB1dF9pZDtcbiAgICAgICAgSHRtbC5hX2lucHV0X3R5cGUgYFJhbmdlO1xuICAgICAgICBIdG1sLmFfaW5wdXRfbWluIChgTnVtYmVyIDApO1xuICAgICAgICBIdG1sLmFfcGxhY2Vob2xkZXIgXCJvZmZzZXRcIjtcbiAgICAgIF1cbiAgICAoKVxuXG5sZXQgc2ltdWxhdGlvbl9pbmZvX29mZnNldF9tYXggKHNpbXVsYXRpb25faW5mbyA6IEFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mbykgOlxuICAgIGludCA9XG4gIGxldCBwbG90X3NpemUgPVxuICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fb3V0cHV0XG4gICAgICAuQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9vdXRwdXRfcGxvdFxuICBpblxuICBtYXggMCAocGxvdF9zaXplIC0gUmVhY3QuUy52YWx1ZSBwb2ludClcblxubGV0IHVwZGF0ZV9vZmZzZXQgKHVwZGF0ZV9vZmZzZXRfaW5wdXQgOiBib29sKSA6IHVuaXQgPVxuICBsZXQgc2ltdWxhdGlvbl9tb2RlbCA9IFJlYWN0LlMudmFsdWUgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCBpblxuICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi50X3NpbXVsYXRpb25faW5mbyBzaW11bGF0aW9uX21vZGVsIGluXG4gIG1hdGNoIHNpbXVsYXRpb25faW5mbyB3aXRoXG4gIHwgTm9uZSAtPiAoKVxuICB8IFNvbWUgc2ltdWxhdGlvbl9pbmZvIC0+XG4gICAgaWZcbiAgICAgIHNpbXVsYXRpb25faW5mby5BcGlfdHlwZXNfai5zaW11bGF0aW9uX2luZm9fcHJvZ3Jlc3NcbiAgICAgICAgLkFwaV90eXBlc19qLnNpbXVsYXRpb25fcHJvZ3Jlc3NfaXNfcnVubmluZ1xuICAgIHRoZW5cbiAgICAgICgqIElmIGl0IGlzIHJ1bm5pbmcgbm8gc2xpZGVyIGJlY2F1c2UgdXBkYXRlIGNhdXNlcyBqaXR0ZXJzLiAqKVxuICAgICAgc2V0X29mZnNldCBOb25lXG4gICAgZWxzZSAoXG4gICAgICBsZXQgb2Zmc2V0X21heCA9IHNpbXVsYXRpb25faW5mb19vZmZzZXRfbWF4IHNpbXVsYXRpb25faW5mbyBpblxuICAgICAgbGV0IG9sZF9vZmZzZXQgPSBSZWFjdC5TLnZhbHVlIG9mZnNldCBpblxuICAgICAgbGV0IG9mZnNldF9jdXJyZW50ID1cbiAgICAgICAgbWF0Y2ggb2xkX29mZnNldCB3aXRoXG4gICAgICAgIHwgU29tZSBvZmZzZXQgLT4gb2Zmc2V0Lm9mZnNldF9jdXJyZW50XG4gICAgICAgIHwgTm9uZSAtPiBvZmZzZXRfbWF4XG4gICAgICBpblxuICAgICAgbGV0ICgpID1cbiAgICAgICAgaWYgdXBkYXRlX29mZnNldF9pbnB1dCB0aGVuIChcbiAgICAgICAgICBsZXQgcGxvdF9vZmZzZXRfaW5wdXRfZG9tID1cbiAgICAgICAgICAgIFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwbG90X29mZnNldF9pbnB1dFxuICAgICAgICAgIGluXG4gICAgICAgICAgbGV0ICgpID0gQ29tbW9uLmRlYnVnIChKcy5zdHJpbmcgKHN0cmluZ19vZl9pbnQgb2Zmc2V0X2N1cnJlbnQpKSBpblxuICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICBwbG90X29mZnNldF9pbnB1dF9kb20jIy52YWx1ZVxuICAgICAgICAgICAgOj0gSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IG9mZnNldF9jdXJyZW50KVxuICAgICAgICAgIGluXG4gICAgICAgICAgKClcbiAgICAgICAgKSBlbHNlXG4gICAgICAgICAgKClcbiAgICAgIGluXG4gICAgICBsZXQgbmV3X29mZnNldCA9XG4gICAgICAgIGlmIG9mZnNldF9tYXggPiAwIHRoZW5cbiAgICAgICAgICBTb21lIHsgb2Zmc2V0X2N1cnJlbnQ7IG9mZnNldF9tYXggfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgTm9uZVxuICAgICAgaW5cbiAgICAgIHNldF9vZmZzZXQgbmV3X29mZnNldFxuICAgIClcblxubGV0IHBsb3RfcGFyYW1ldGVyICgpIDogQXBpX3R5cGVzX2oucGxvdF9wYXJhbWV0ZXIgPVxuICBsZXQgcG9pbnQgPSBSZWFjdC5TLnZhbHVlIHBvaW50IGluXG4gIHtcbiAgICBBcGlfdHlwZXNfai5wbG90X2xpbWl0X29mZnNldCA9XG4gICAgICBPcHRpb25fdXRpbC5tYXAgKGZ1biB4IC0+IHgub2Zmc2V0X2N1cnJlbnQpIChSZWFjdC5TLnZhbHVlIG9mZnNldCk7XG4gICAgQXBpX3R5cGVzX2oucGxvdF9saW1pdF9wb2ludHMgPSBTb21lIHBvaW50O1xuICB9XG5cbmxldCB1cGRhdGVfcGxvdCAoanNfcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQpIDogdW5pdCA9XG4gIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aGVuX3JlYWR5IH5sYWJlbDpfX0xPQ19fIChmdW4gbWFuYWdlciAtPlxuICAgICAgbGV0ICgpID0gdXBkYXRlX29mZnNldCB0cnVlIGluXG4gICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3Bsb3QgKHBsb3RfcGFyYW1ldGVyICgpKVxuICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIChwbG90IDogQXBpX3R5cGVzX3QucGxvdCkgLT5cbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSBKcy5zdHJpbmcgKERhdGEuc3RyaW5nX29mX3Bsb3QgcGxvdCkgaW5cbiAgICAgICAgICAgICAgbGV0ICgpID0ganNfcGxvdCMjc2V0RGF0YSBkYXRhIGluXG4gICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKSkpXG5cbmxldCBvbmxvYWRfcGxvdF9wb2ludHNfaW5wdXQgKGpzX3Bsb3QgOiBKc19wbG90Lm9ic2VydmFibGVfcGxvdCBKcy50KSA6IHVuaXQgPVxuICBsZXQgcGxvdF9wb2ludHNfaW5wdXRfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgIFR5eG1sX2pzLlRvX2RvbS5vZl9pbnB1dCBwbG90X3BvaW50c19pbnB1dFxuICBpblxuICBsZXQganNfcG9pbnQgOiBKcy5qc19zdHJpbmcgSnMudCA9XG4gICAgSnMuc3RyaW5nIChzdHJpbmdfb2ZfaW50IChSZWFjdC5TLnZhbHVlIHBvaW50KSlcbiAgaW5cbiAgbGV0ICgpID0gcGxvdF9wb2ludHNfaW5wdXRfZG9tIyMudmFsdWUgOj0ganNfcG9pbnQgaW5cbiAgbGV0ICgpID1cbiAgICBwbG90X3BvaW50c19pbnB1dF9kb20jIy5vbmtleXByZXNzXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIGV2IC0+XG4gICAgICAgICAgIGlmIGV2IyMua2V5Q29kZSA9IDEzIHRoZW5cbiAgICAgICAgICAgICBKcy5fZmFsc2VcbiAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLm9uY2hhbmdlXG4gICAgOj0gRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0IHBsb3RfcG9pbnRzX3N0cmluZyA6IHN0cmluZyA9XG4gICAgICAgICAgICAgSnMudG9fc3RyaW5nIHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLnZhbHVlXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCBwbG90X3BvaW50c19vcHRpb24gOiBpbnQgb3B0aW9uID1cbiAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgIGxldCBwbG90X3BvaW50ID0gaW50X29mX3N0cmluZyBwbG90X3BvaW50c19zdHJpbmcgaW5cbiAgICAgICAgICAgICAgIGlmIHBsb3RfcG9pbnQgPiAwIHRoZW5cbiAgICAgICAgICAgICAgICAgU29tZSBwbG90X3BvaW50XG4gICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgIE5vbmVcbiAgICAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiBOb25lXG4gICAgICAgICAgIGluXG4gICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgbWF0Y2ggcGxvdF9wb2ludHNfb3B0aW9uIHdpdGhcbiAgICAgICAgICAgICB8IFNvbWUgcGxvdF9wb2ludHMgLT4gc2V0X3BvaW50cyBwbG90X3BvaW50c1xuICAgICAgICAgICAgIHwgTm9uZSAtPlxuICAgICAgICAgICAgICAgbGV0IHBsb3RfcG9pbnQgOiBpbnQgPSBSZWFjdC5TLnZhbHVlIHBvaW50IGluXG4gICAgICAgICAgICAgICBsZXQgcGxvdF9wb2ludF9zdHJpbmcgPSBzdHJpbmdfb2ZfaW50IHBsb3RfcG9pbnQgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgIHBsb3RfcG9pbnRzX2lucHV0X2RvbSMjLnZhbHVlIDo9IEpzLnN0cmluZyBwbG90X3BvaW50X3N0cmluZ1xuICAgICAgICAgICAgICAgaW5cbiAgICAgICAgICAgICAgIGxldCAoKSA9IHNldF9wb2ludHMgZGVmYXVsdF9wb2ludCBpblxuICAgICAgICAgICAgICAgKClcbiAgICAgICAgICAgaW5cbiAgICAgICAgICAgbGV0ICgpID0gdXBkYXRlX3Bsb3QganNfcGxvdCBpblxuICAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgKClcblxubGV0IGNvbmZpZ3VyYXRpb24gKCkgOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICB7XG4gICAgV2lkZ2V0X2V4cG9ydC5pZCA9IGV4cG9ydF9pZDtcbiAgICBXaWRnZXRfZXhwb3J0LmhhbmRsZXJzID1cbiAgICAgIFtcbiAgICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfc3ZnIH5zdmdfZGl2X2lkOmRpdl9kaXNwbGF5X2lkICgpO1xuICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9wbmcgfnN2Z19kaXZfaWQ6ZGl2X2Rpc3BsYXlfaWQgKCk7XG4gICAgICAgIHtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LnN1ZmZpeCA9IFwianNvblwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImpzb25cIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9IGV4cG9ydF9qc29uO1xuICAgICAgICB9O1xuICAgICAgICB7XG4gICAgICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImNzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQubGFiZWwgPSBcImNzdlwiO1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuZXhwb3J0ID0gZXhwb3J0IFwidGV4dC9jc3ZcIjtcbiAgICAgICAgfTtcbiAgICAgICAge1xuICAgICAgICAgIFdpZGdldF9leHBvcnQuc3VmZml4ID0gXCJ0c3ZcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJ0c3ZcIjtcbiAgICAgICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9IGV4cG9ydCBcInRleHQvdHN2XCI7XG4gICAgICAgIH07XG4gICAgICBdO1xuICAgIHNob3cgPVxuICAgICAgUmVhY3QuUy5tYXBcbiAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgIGxldCBvdXQgPSBoYXNfcGxvdCAoU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwpIGluXG4gICAgICAgICAgbGV0ICgpID0gaWYgb3V0IHRoZW4gT3B0aW9uLml0ZXIgdXBkYXRlX3Bsb3QgIXBsb3RfcmVmIGluXG4gICAgICAgICAgb3V0KVxuICAgICAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCk7XG4gIH1cblxubGV0IHhtbCAoKSA9XG4gIGxldCBleHBvcnRfY29udHJvbHMgPSBXaWRnZXRfZXhwb3J0LmlubGluZV9jb250ZW50IChjb25maWd1cmF0aW9uICgpKSBpblxuICBbJWh0bWxcbiAgICB7fFxuICA8ZGl2IGNsYXNzPVwibmF2Y29udGVudC12aWV3IGZsZXgtY29udGVudFwiIGlkPVwifH0gZGl2X2Rpc3BsYXlfaWRcbiAgICAgIHt8XCI+PC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm5hdmNvbnRlbnQtY29udHJvbHNcIj5cbiAgICA8Zm9ybSBjbGFzcz1cImZvcm0taW5saW5lXCIgaWQ9fH1cbiAgICAgIGV4cG9ydF9pZFxuICAgICAge3w+XG4gICAgICB8fVxuICAgICAgZXhwb3J0X2NvbnRyb2xzXG4gICAgICB7fFxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj18fVxuICAgICAgcGxvdF9wb2ludHNfaW5wdXRfaWRcbiAgICAgIHt8PlJvdyB0byBwbG90PC9sYWJlbD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWdyb3VwXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbnB1dC1ncm91cC1hZGRvblwiPlBvaW50czwvc3Bhbj5cbiAgICAgICAgICB8fVxuICAgICAgWyBwbG90X3BvaW50c19pbnB1dCBdXG4gICAgICB7fFxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3Itb25seVwiIGZvcj18fVxuICAgICAgcGxvdF9vZmZzZXRfaW5wdXRfaWRcbiAgICAgIHt8PlNlbGVjdGVkIHdpbmRvdzwvbGFiZWw+XG4gICAgICAgIHx9XG4gICAgICBbIHBsb3Rfb2Zmc2V0X2lucHV0IF1cbiAgICAgIHt8XG4gICAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+XG4gICAgPC9kaXY+IHx9XVxuXG5sZXQgY29udGVudCAoKSA6IFs+IEh0bWxfdHlwZXMuZGl2IF0gSHRtbC5lbHQgbGlzdCA9XG4gIFsgVWlfY29tbW9uLnRvZ2dsZV9lbGVtZW50IChmdW4gcyAtPiBoYXNfcGxvdCBzKSAoeG1sICgpKSBdXG5cbmxldCBvbmxvYWQgKCkgPVxuICBsZXQgcGxvdF9vZmZzZXRfaW5wdXRfZG9tID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHBsb3Rfb2Zmc2V0X2lucHV0IGluXG4gIGxldCAoKSA9IFdpZGdldF9leHBvcnQub25sb2FkIChjb25maWd1cmF0aW9uICgpKSBpblxuICBsZXQgcGxvdCA6IEpzX3Bsb3Qub2JzZXJ2YWJsZV9wbG90IEpzLnQgPVxuICAgIEpzX3Bsb3QuY3JlYXRlX29ic2VydmFibGVfcGxvdCBkaXZfZGlzcGxheV9pZFxuICBpblxuICAoKiBUaGUgZWxlbWVudHMgc2l6ZSB0aGVtc2VsdmVzIHVzaW5nIHRoZSBkaXYncyBpZiB0aGV5IGFyZSBoaWRkZW5cbiAgICAgaXQgd2lsbCBkZWZhdWx0IHRvIHNpemUgemVyby4gIHNvIHRoZXkgbmVlZCB0byBiZSBzaXplZCB3aGVuIHNob3duLlxuICAqKVxuICBsZXQgKCkgPSBvbmxvYWRfcGxvdF9wb2ludHNfaW5wdXQgcGxvdCBpblxuICBsZXQgKCkgPSBwbG90X3JlZiA6PSBTb21lIHBsb3QgaW5cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnBsb3RcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+IHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2cGxvdFwiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHNldF90YWJfaXNfYWN0aXZlIHRydWUgaW5cbiAgICAgICAgbGV0IHNpbXVsYXRpb25fbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgICAgICAgbGV0IHNpbXVsYXRpb25faW5mbyA9XG4gICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gc2ltdWxhdGlvbl9tb2RlbFxuICAgICAgICBpblxuICAgICAgICBpZiBoYXNfcGxvdCBzaW11bGF0aW9uX2luZm8gdGhlblxuICAgICAgICAgIHVwZGF0ZV9wbG90IHBsb3RcbiAgICAgICAgZWxzZVxuICAgICAgICAgICgpKVxuICBpblxuICBsZXQgKCkgPVxuICAgIFVpX2NvbW1vbi5pbnB1dF9jaGFuZ2UgcGxvdF9vZmZzZXRfaW5wdXRfZG9tIChmdW4gdmFsdWUgLT5cbiAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICB0cnlcbiAgICAgICAgICAgIHNldF9vZmZzZXRcbiAgICAgICAgICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgb2Zmc2V0IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IE5vbmVcbiAgICAgICAgICAgICAgfCBTb21lIG9mZnNldCAtPlxuICAgICAgICAgICAgICAgIFNvbWUgeyBvZmZzZXQgd2l0aCBvZmZzZXRfY3VycmVudCA9IGludF9vZl9zdHJpbmcgdmFsdWUgfSlcbiAgICAgICAgICB3aXRoIEZhaWx1cmUgXyAtPiAoKVxuICAgICAgICBpblxuICAgICAgICBsZXQgKCkgPSB1cGRhdGVfcGxvdCBwbG90IGluXG4gICAgICAgICgpKVxuICBpblxuICAoKVxuXG5sZXQgcGxvdF9jb3VudCA9IGZ1bmN0aW9uXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIGxldCBvcGVuIEFwaV90eXBlc190IGluXG4gICAgc3RhdGUuc2ltdWxhdGlvbl9pbmZvX291dHB1dC5zaW11bGF0aW9uX291dHB1dF9wbG90XG5cbmxldCBuYXZsaSAoKSA9XG4gIFVpX2NvbW1vbi5sYWJlbF9uZXdzIHRhYl9pc19hY3RpdmUgKGZ1biBzdGF0ZSAtPiBwbG90X2NvdW50IHN0YXRlKVxuXG5sZXQgb25yZXNpemUgKCkgPVxuICAoKiByZWNhbGN1YXRlIHNpemUgKilcbiAgbGV0ICgpID1cbiAgICBtYXRjaCAhcGxvdF9yZWYgd2l0aFxuICAgIHwgTm9uZSAtPiAoKVxuICAgIHwgU29tZSBwbG90IC0+XG4gICAgICBsZXQgbW9kZWwgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgICAgIChtYXRjaCBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCB3aXRoXG4gICAgICB8IE5vbmUgLT4gKClcbiAgICAgIHwgU29tZSBfIC0+IHVwZGF0ZV9wbG90IHBsb3QpXG4gIGluXG4gICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIHNuYXBzaG90ID0gb2JqZWN0XG4gIG1ldGhvZCBzZXREYXRhIDpcbiAgICBjb250YWN0X21hcDpKcy5qc19zdHJpbmcgSnMudCAtPiBKcy5qc19zdHJpbmcgSnMudCAtPiB1bml0IEpzLm1ldGhcblxuICBtZXRob2QgcmVkcmF3IDogdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBjbGVhckRhdGEgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX3NuYXBzaG90IChpZCA6IHN0cmluZykgKGNvbG9yaW5nIDogdW5pdCBKcy50KSA6IHNuYXBzaG90IEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiU25hcHNob3RcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpOyBKcy5VbnNhZmUuaW5qZWN0IGNvbG9yaW5nIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5vcGVuIEx3dC5JbmZpeFxubW9kdWxlIEh0bWwgPSBUeXhtbF9qcy5IdG1sNVxuXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxuXG5sZXQgY3VycmVudF9zbmFwc2hvdCwgc2V0X2N1cnJlbnRfc25hcHNob3QgPVxuICBSZWFjdC5TLmNyZWF0ZSAoTm9uZSA6IChzdHJpbmcgKiBEYXRhLnNuYXBzaG90KSBvcHRpb24pXG5cbnR5cGUgZGlzcGxheV9mb3JtYXQgPSBLYXBwYSB8IEdyYXBoXG5cbmxldCBzdHJpbmdfdG9fZGlzcGxheV9mb3JtYXQgPSBmdW5jdGlvblxuICB8IFwiS2FwcGFcIiAtPiBTb21lIEthcHBhXG4gIHwgXCJHcmFwaFwiIC0+IFNvbWUgR3JhcGhcbiAgfCBfIC0+IE5vbmVcblxubGV0IGRpc3BsYXlfZm9ybWF0LCBzZXRfZGlzcGxheV9mb3JtYXQgPSBSZWFjdC5TLmNyZWF0ZSBLYXBwYVxuXG5sZXQgc25hcHNob3RfY291bnQgKHN0YXRlIDogQXBpX3R5cGVzX2ouc2ltdWxhdGlvbl9pbmZvIG9wdGlvbikgOiBpbnQgPVxuICBtYXRjaCBzdGF0ZSB3aXRoXG4gIHwgTm9uZSAtPiAwXG4gIHwgU29tZSBzdGF0ZSAtPlxuICAgIHN0YXRlLkFwaV90eXBlc19qLnNpbXVsYXRpb25faW5mb19vdXRwdXRcbiAgICAgIC5BcGlfdHlwZXNfai5zaW11bGF0aW9uX291dHB1dF9zbmFwc2hvdHNcblxubGV0IG5hdmxpICgpID0gVWlfY29tbW9uLmJhZGdlIChmdW4gc3RhdGUgLT4gc25hcHNob3RfY291bnQgc3RhdGUpXG5sZXQgc2VsZWN0X2lkID0gXCJzbmFwc2hvdC1zZWxlY3QtaWRcIlxubGV0IGRpc3BsYXlfaWQgPSBcInNuYXBzaG90LW1hcC1kaXNwbGF5XCJcblxubGV0IGNvbmZpZ3VyYXRpb25fdGVtcGxhdGUgaWQgYWRkaXRpb25hbF9oYW5kbGVycyA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvblxuICAgID1cbiAgbGV0IGpzb25faGFuZGxlciA9XG4gICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfanNvbiB+c2VyaWFsaXplX2pzb246KGZ1biAoKSAtPlxuICAgICAgICBtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICB8IE5vbmUgLT4gXCJudWxsXCJcbiAgICAgICAgfCBTb21lIChfLCBzKSAtPiBEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCBzKVxuICBpblxuICBsZXQga2FwcGFfaGFuZGxlciA9XG4gICAge1xuICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImthXCI7XG4gICAgICBXaWRnZXRfZXhwb3J0LmxhYmVsID0gXCJrYXBwYVwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnQgPVxuICAgICAgICAoZnVuIChmaWxlbmFtZSA6IHN0cmluZykgLT5cbiAgICAgICAgICBsZXQgZGF0YSA9XG4gICAgICAgICAgICBKcy5zdHJpbmdcbiAgICAgICAgICAgICAgKG1hdGNoIFJlYWN0LlMudmFsdWUgY3VycmVudF9zbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgIHwgTm9uZSAtPiBcIlwiXG4gICAgICAgICAgICAgIHwgU29tZSAoXywgcykgLT4gQXBpX2RhdGEuYXBpX3NuYXBzaG90X2thcHBhIHMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJhcHBsaWNhdGlvbi9qc29uXCIgfmZpbGVuYW1lKTtcbiAgICB9XG4gIGluXG4gIGxldCBkb3RfaGFuZGxlciA9XG4gICAge1xuICAgICAgV2lkZ2V0X2V4cG9ydC5zdWZmaXggPSBcImRvdFwiO1xuICAgICAgV2lkZ2V0X2V4cG9ydC5sYWJlbCA9IFwiZG90XCI7XG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydCA9XG4gICAgICAgIChmdW4gKGZpbGVuYW1lIDogc3RyaW5nKSAtPlxuICAgICAgICAgIGxldCBkYXRhID1cbiAgICAgICAgICAgIEpzLnN0cmluZ1xuICAgICAgICAgICAgICAobWF0Y2ggUmVhY3QuUy52YWx1ZSBjdXJyZW50X3NuYXBzaG90IHdpdGhcbiAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgfCBTb21lIChfLCBzKSAtPiBBcGlfZGF0YS5hcGlfc25hcHNob3RfZG90IHMpXG4gICAgICAgICAgaW5cbiAgICAgICAgICBDb21tb24uc2F2ZUZpbGUgfmRhdGEgfm1pbWU6XCJ0ZXh0L3ZuZC5ncmFwaHZpelwiIH5maWxlbmFtZSk7XG4gICAgfVxuICBpblxuICBsZXQgZGVmYXVsdF9oYW5kbGVycyA9IFsganNvbl9oYW5kbGVyOyBrYXBwYV9oYW5kbGVyOyBkb3RfaGFuZGxlciBdIGluXG4gIHtcbiAgICBXaWRnZXRfZXhwb3J0LmlkO1xuICAgIFdpZGdldF9leHBvcnQuaGFuZGxlcnMgPSBkZWZhdWx0X2hhbmRsZXJzIEAgYWRkaXRpb25hbF9oYW5kbGVycztcbiAgICBXaWRnZXRfZXhwb3J0LnNob3cgPVxuICAgICAgUmVhY3QuUy5tYXBcbiAgICAgICAgKGZ1biBtb2RlbCAtPlxuICAgICAgICAgIGxldCBzaW11bGF0aW9uX2luZm8gPSBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsX3NpbXVsYXRpb25faW5mbyBtb2RlbCBpblxuICAgICAgICAgIHNuYXBzaG90X2NvdW50IHNpbXVsYXRpb25faW5mbyA+IDApXG4gICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKTtcbiAgfVxuXG4oKiBPbmx5IGFsbG93IHRoZSBleHBvcnQgb2Ygbm9uLWdyYXBoaWNhbCBkYXRhLiAqKVxubGV0IGNvbmZpZ3VyYXRpb25fa2FwcGEgKCkgOiBXaWRnZXRfZXhwb3J0LmNvbmZpZ3VyYXRpb24gPVxuICBjb25maWd1cmF0aW9uX3RlbXBsYXRlIFwic25hcHNob3Rfa2FwcGFcIiBbXVxuXG4oKiBUaGUgbWFwcyBhcmUgcmVuZGVyZWQgc28gYWxsb3cgdGhlIGV4cG9ydCBvZlxuICAgZ3JhcGhpY2FsIGRhdGEuICopXG5sZXQgY29uZmlndXJhdGlvbl9ncmFwaCAoKSA6IFdpZGdldF9leHBvcnQuY29uZmlndXJhdGlvbiA9XG4gIGNvbmZpZ3VyYXRpb25fdGVtcGxhdGUgXCJzbmFwc2hvdF9ncmFwaFwiXG4gICAgW1xuICAgICAgV2lkZ2V0X2V4cG9ydC5leHBvcnRfc3ZnIH5zdmdfZGl2X2lkOmRpc3BsYXlfaWQgKCk7XG4gICAgICBXaWRnZXRfZXhwb3J0LmV4cG9ydF9wbmcgfnN2Z19kaXZfaWQ6ZGlzcGxheV9pZCAoKTtcbiAgICBdXG5cbmxldCBmb3JtYXRfc2VsZWN0X2lkID0gXCJmb3JtYXRfc2VsZWN0X2lkXCJcblxubGV0IHJlbmRlcl9zbmFwc2hvdF9ncmFwaCAoc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50KVxuICAgIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpIDogdW5pdCA9XG4gIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyAoSnMuc3RyaW5nIChEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCBzbmFwc2hvdCkpIGluXG4gIG1hdGNoIFJlYWN0LlMudmFsdWUgZGlzcGxheV9mb3JtYXQgd2l0aFxuICB8IEdyYXBoIC0+XG4gICAgbGV0IGpzb24gOiBzdHJpbmcgPSBEYXRhLnN0cmluZ19vZl9zbmFwc2hvdCBzbmFwc2hvdCBpblxuICAgIGxldCBjb250YWN0X21hcCA9IFJlYWN0LlMudmFsdWUgVGFiX2NvbnRhY3RfbWFwLmNvbnRhY3RfbWFwX3RleHQgaW5cbiAgICBzbmFwc2hvdF9qcyMjc2V0RGF0YSB+Y29udGFjdF9tYXA6KEpzLnN0cmluZyBjb250YWN0X21hcCkgKEpzLnN0cmluZyBqc29uKVxuICB8IEthcHBhIC0+ICgpXG5cbmxldCBzZWxlY3Rfc25hcHNob3QgKHNuYXBzaG90X2pzIDogSnNfc25hcHNob3Quc25hcHNob3QgSnMudCkgOiB1bml0ID1cbiAgbGV0IGluZGV4IDogaW50IEpzLm9wdCA9XG4gICAgSnMuT3B0LmJpbmRcbiAgICAgIChVaV9jb21tb24uZG9jdW1lbnQjI2dldEVsZW1lbnRCeUlkIChKcy5zdHJpbmcgc2VsZWN0X2lkKSlcbiAgICAgIChmdW4gZG9tIC0+XG4gICAgICAgIGxldCBzbmFwc2hvdF9zZWxlY3RfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgICAgICAgIEpzLlVuc2FmZS5jb2VyY2UgZG9tXG4gICAgICAgIGluXG4gICAgICAgIGxldCBmaWxlaW5kZXggOiBzdHJpbmcgPSBKcy50b19zdHJpbmcgc25hcHNob3Rfc2VsZWN0X2RvbSMjLnZhbHVlIGluXG4gICAgICAgIHRyeSBKcy5zb21lIChpbnRfb2Zfc3RyaW5nIGZpbGVpbmRleCkgd2l0aCBfIC0+IEpzLm51bGwpXG4gIGluXG4gIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBpbmRleCBpblxuICBsZXQgbW9kZWwgOiBTdGF0ZV9zaW11bGF0aW9uLnQgPSBSZWFjdC5TLnZhbHVlIFN0YXRlX3NpbXVsYXRpb24ubW9kZWwgaW5cbiAgbGV0IHNpbXVsYXRpb25fb3V0cHV0IDogQXBpX3R5cGVzX3Quc2ltdWxhdGlvbl9pbmZvIG9wdGlvbiA9XG4gICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWxcbiAgaW5cbiAgbWF0Y2ggc2ltdWxhdGlvbl9vdXRwdXQgd2l0aFxuICB8IE5vbmUgLT4gKClcbiAgfCBTb21lIHN0YXRlIC0+XG4gICAgbGV0IGluZGV4IDogaW50ID0gSnMuT3B0LmdldCBpbmRleCAoZnVuIF8gLT4gMCkgaW5cbiAgICBpZiBzbmFwc2hvdF9jb3VudCAoU29tZSBzdGF0ZSkgPiAwIHRoZW4gKFxuICAgICAgbGV0ICgpID1cbiAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5ldmFsX3doZW5fcmVhZHkgfmxhYmVsOl9fTE9DX18gKGZ1biBtYW5hZ2VyIC0+XG4gICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHNuYXBzaG90X2lkcyAtPlxuICAgICAgICAgICAgICAgICAgICB0cnlcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgc25hcHNob3RfaWQgOiBzdHJpbmcgPSBMaXN0Lm50aCBzbmFwc2hvdF9pZHMgaW5kZXggaW5cbiAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fZGV0YWlsX3NuYXBzaG90IHNuYXBzaG90X2lkXG4gICAgICAgICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfm9rOihmdW4gKHNuYXBzaG90IDogRGF0YS5zbmFwc2hvdCkgLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoKSA9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldF9jdXJyZW50X3NuYXBzaG90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNvbWUgKHNuYXBzaG90X2lkLCBzbmFwc2hvdCkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0ICgpID1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX3NuYXBzaG90X2dyYXBoIHNuYXBzaG90X2pzIHNuYXBzaG90XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpKVxuICAgICAgICAgICAgICAgICAgICB3aXRoXG4gICAgICAgICAgICAgICAgICAgIHwgRmFpbHVyZSBmIC0+IEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBmKVxuICAgICAgICAgICAgICAgICAgICB8IEludmFsaWRfYXJndW1lbnQgZiAtPlxuICAgICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKEFwaV9jb21tb24ucmVzdWx0X2Vycm9yX21zZyBmKSkpXG4gICAgICBpblxuICAgICAgKClcbiAgICApXG5cbmxldCBzZWxlY3QgKHNuYXBzaG90cyA6IEFwaV90eXBlc19qLnNuYXBzaG90X2lkIGxpc3QpIDpcbiAgICBbPiBIdG1sX3R5cGVzLnNlbGVjdG9wdGlvbiBdIEh0bWwuZWx0IGxpc3QgPVxuICBMaXN0Lm1hcGlcbiAgICAoZnVuIGkgc25hcHNob3RfaWQgLT5cbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlxuICAgICAgICAgIChbIEh0bWwuYV92YWx1ZSAoc3RyaW5nX29mX2ludCBpKSBdXG4gICAgICAgICAgQFxuICAgICAgICAgIGlmXG4gICAgICAgICAgICBtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgfCBOb25lIC0+IGZhbHNlXG4gICAgICAgICAgICB8IFNvbWUgKGZpbGVuYW1lLCBfKSAtPiBmaWxlbmFtZSA9IHNuYXBzaG90X2lkXG4gICAgICAgICAgdGhlblxuICAgICAgICAgICAgWyBIdG1sLmFfc2VsZWN0ZWQgKCkgXVxuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIFtdKVxuICAgICAgICAoSHRtbC50eHQgc25hcHNob3RfaWQpKVxuICAgIHNuYXBzaG90c1xuXG5sZXQgc25hcHNob3RfY2xhc3MgOlxuICAgIGVtcHR5Oih1bml0IC0+ICdhKSAtPlxuICAgIHNpbmdsZToodW5pdCAtPiAnYSkgLT5cbiAgICBtdWx0aXBsZToodW5pdCAtPiAnYSkgLT5cbiAgICAnYSBSZWFjdC5zaWduYWwgPVxuIGZ1biB+ZW1wdHkgfnNpbmdsZSB+bXVsdGlwbGUgLT5cbiAgUmVhY3QuUy5tYXBcbiAgICAoZnVuIG1vZGVsIC0+XG4gICAgICBsZXQgc2ltdWxhdGlvbl9pbmZvID0gU3RhdGVfc2ltdWxhdGlvbi5tb2RlbF9zaW11bGF0aW9uX2luZm8gbW9kZWwgaW5cbiAgICAgIG1hdGNoIHNuYXBzaG90X2NvdW50IHNpbXVsYXRpb25faW5mbyB3aXRoXG4gICAgICB8IDAgLT4gZW1wdHkgKClcbiAgICAgIHwgMSAtPiBzaW5nbGUgKClcbiAgICAgIHwgXyAtPiBtdWx0aXBsZSAoKSlcbiAgICAoUmVhY3QuUy5vbiB0YWJfaXNfYWN0aXZlIFN0YXRlX3NpbXVsYXRpb24uZHVtbXlfbW9kZWxcbiAgICAgICBTdGF0ZV9zaW11bGF0aW9uLm1vZGVsKVxuXG5sZXQgc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50ID1cbiAgSnNfc25hcHNob3QuY3JlYXRlX3NuYXBzaG90IGRpc3BsYXlfaWQgU3RhdGVfc2V0dGluZ3MuYWdlbnRfY29sb3JpbmdcblxubGV0IHhtbCAoKSA9XG4gIGxldCBsaXN0ID1cbiAgICBSZWFjdGl2ZURhdGEuUkxpc3QuZnJvbV9ldmVudCBbXVxuICAgICAgKEx3dF9yZWFjdC5FLm1hcF9zXG4gICAgICAgICAoZnVuIF8gLT5cbiAgICAgICAgICAgbGV0ICgpID0gc2VsZWN0X3NuYXBzaG90IHNuYXBzaG90X2pzIGluXG4gICAgICAgICAgIFN0YXRlX3NpbXVsYXRpb24uZXZhbF93aXRoX3NpbV9tYW5hZ2VyX2FuZF9pbmZvIH5sYWJlbDpfX0xPQ19fXG4gICAgICAgICAgICAgfnN0b3BwZWQ6KGZ1biBfIC0+IEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rIFtdKSlcbiAgICAgICAgICAgICB+aW5pdGlhbGl6aW5nOihmdW4gXyAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBbXSkpXG4gICAgICAgICAgICAgfnJlYWR5OihmdW4gbWFuYWdlciBfIC0+XG4gICAgICAgICAgICAgICBtYW5hZ2VyI3NpbXVsYXRpb25fY2F0YWxvZ19zbmFwc2hvdFxuICAgICAgICAgICAgICAgPj49IEFwaV9jb21tb24ucmVzdWx0X2JpbmRfbHd0IH5vazooZnVuIHNuYXBzaG90X2lkcyAtPlxuICAgICAgICAgICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoc2VsZWN0IHNuYXBzaG90X2lkcykpKSlcbiAgICAgICAgICAgICAoKVxuICAgICAgICAgICA+fD0gUmVzdWx0X3V0aWwuZm9sZFxuICAgICAgICAgICAgICAgICB+b2s6KGZ1biB4IC0+IFJlYWN0aXZlRGF0YS5STGlzdC5TZXQgeClcbiAgICAgICAgICAgICAgICAgfmVycm9yOihmdW4gXyAtPiBSZWFjdGl2ZURhdGEuUkxpc3QuU2V0IFtdKSlcbiAgICAgICAgIChSZWFjdC5TLmNoYW5nZXNcbiAgICAgICAgICAgIChSZWFjdC5TLm9uIHRhYl9pc19hY3RpdmUgU3RhdGVfc2ltdWxhdGlvbi5kdW1teV9tb2RlbFxuICAgICAgICAgICAgICAgU3RhdGVfc2ltdWxhdGlvbi5tb2RlbCkpKVxuICBpblxuICBsZXQgc25hcHNob3RfbGFiZWwgPVxuICAgIEh0bWwuaDRcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChzbmFwc2hvdF9jbGFzc1xuICAgICAgICAgICAgICAgfmVtcHR5OihmdW4gKCkgLT4gWyBcImhpZGRlblwiIF0pXG4gICAgICAgICAgICAgICB+c2luZ2xlOihmdW4gXyAtPiBbIFwib25lbGluZXJcIjsgXCJ2aXNpYmxlXCIgXSlcbiAgICAgICAgICAgICAgIH5tdWx0aXBsZTooZnVuIF8gLT4gWyBcImhpZGRlblwiIF0pKTtcbiAgICAgICAgXVxuICAgICAgW1xuICAgICAgICBUeXhtbF9qcy5SLkh0bWwudHh0XG4gICAgICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAgICAgKGZ1biBzbmFwc2hvdCAtPlxuICAgICAgICAgICAgICAgbWF0Y2ggc25hcHNob3Qgd2l0aFxuICAgICAgICAgICAgICAgfCBOb25lIC0+IFwiXCJcbiAgICAgICAgICAgICAgIHwgU29tZSAoc25hcHNob3RfZmlsZSwgXykgLT4gc25hcHNob3RfZmlsZSlcbiAgICAgICAgICAgICBjdXJyZW50X3NuYXBzaG90KTtcbiAgICAgIF1cbiAgaW5cbiAgbGV0IHNuYXBzaG90X3NlbGVjdCA9XG4gICAgVHl4bWxfanMuUi5IdG1sLnNlbGVjdFxuICAgICAgfmE6XG4gICAgICAgIFtcbiAgICAgICAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgICAgICAgKHNuYXBzaG90X2NsYXNzXG4gICAgICAgICAgICAgICB+ZW1wdHk6KGZ1biAoKSAtPiBbIFwiaGlkZGVuXCIgXSlcbiAgICAgICAgICAgICAgIH5zaW5nbGU6KGZ1biBfIC0+IFsgXCJoaWRkZW5cIiBdKVxuICAgICAgICAgICAgICAgfm11bHRpcGxlOihmdW4gXyAtPiBbIFwidmlzaWJsZVwiOyBcImZvcm0tY29udHJvbFwiIF0pKTtcbiAgICAgICAgICBIdG1sLmFfaWQgc2VsZWN0X2lkO1xuICAgICAgICBdXG4gICAgICBsaXN0XG4gIGluXG4gIGxldCBzbmFwc2hvdF9jaG9vc2VyID0gSHRtbC5kaXYgWyBzbmFwc2hvdF9sYWJlbDsgc25hcHNob3Rfc2VsZWN0IF0gaW5cbiAgbGV0IHRvZ2dsZV9jb250cm9scyB+a2FwcGEgfmdyYXBoID1cbiAgICBUeXhtbF9qcy5SLkh0bWwuYV9jbGFzc1xuICAgICAgKFJlYWN0LlMubWFwXG4gICAgICAgICAoZnVuY3Rpb25cbiAgICAgICAgICAgfCBLYXBwYSAtPiBrYXBwYVxuICAgICAgICAgICB8IEdyYXBoIC0+IGdyYXBoKVxuICAgICAgICAgZGlzcGxheV9mb3JtYXQpXG4gIGluXG4gIGxldCBleHBvcnRfY29udHJvbHMgPVxuICAgIFtcbiAgICAgIEh0bWwuZGl2XG4gICAgICAgIH5hOlsgdG9nZ2xlX2NvbnRyb2xzIH5rYXBwYTpbIFwidmlzaWJsZVwiIF0gfmdyYXBoOlsgXCJoaWRkZW5cIiBdIF1cbiAgICAgICAgWyBXaWRnZXRfZXhwb3J0LmNvbnRlbnQgKGNvbmZpZ3VyYXRpb25fa2FwcGEgKCkpIF07XG4gICAgICBIdG1sLmRpdlxuICAgICAgICB+YTpbIHRvZ2dsZV9jb250cm9scyB+a2FwcGE6WyBcImhpZGRlblwiIF0gfmdyYXBoOlsgXCJ2aXNpYmxlXCIgXSBdXG4gICAgICAgIFsgV2lkZ2V0X2V4cG9ydC5jb250ZW50IChjb25maWd1cmF0aW9uX2dyYXBoICgpKSBdO1xuICAgIF1cbiAgaW5cbiAgbGV0IGthcHBhX3NuYXBzaG90X2Rpc3BsYXkgPVxuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIFR5eG1sX2pzLlIuSHRtbC5hX2NsYXNzXG4gICAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAgIChmdW4gZGlzcGxheV9mb3JtYXQgLT5cbiAgICAgICAgICAgICAgICAgXCJwYW5lbC1zY3JvbGxcIiA6OiBcImthcHBhLWNvZGVcIiA6OiBcImZsZXgtY29udGVudFwiXG4gICAgICAgICAgICAgICAgIDo6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBkaXNwbGF5X2Zvcm1hdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgS2FwcGEgLT4gWyBcInZpc2libGVcIiBdXG4gICAgICAgICAgICAgICAgIHwgR3JhcGggLT4gWyBcImhpZGRlblwiIF0pKVxuICAgICAgICAgICAgICAgZGlzcGxheV9mb3JtYXQpO1xuICAgICAgICBdXG4gICAgICBbXG4gICAgICAgIFR5eG1sX2pzLlIuSHRtbC50eHRcbiAgICAgICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgICAgICAoZnVuIHNuYXBzaG90IC0+XG4gICAgICAgICAgICAgICBtYXRjaCBzbmFwc2hvdCB3aXRoXG4gICAgICAgICAgICAgICB8IE5vbmUgLT4gXCJcIlxuICAgICAgICAgICAgICAgfCBTb21lIChfLCBzbmFwc2hvdCkgLT4gQXBpX2RhdGEuYXBpX3NuYXBzaG90X2thcHBhIHNuYXBzaG90KVxuICAgICAgICAgICAgIGN1cnJlbnRfc25hcHNob3QpO1xuICAgICAgXVxuICBpblxuICBsZXQga2FwcGFfZ3JhcGhfZGlzcGxheSA9XG4gICAgSHRtbC5kaXZcbiAgICAgIH5hOlxuICAgICAgICBbXG4gICAgICAgICAgVHl4bWxfanMuUi5IdG1sLmFfY2xhc3NcbiAgICAgICAgICAgIChSZWFjdC5TLm1hcFxuICAgICAgICAgICAgICAgKGZ1biBkaXNwbGF5X2Zvcm1hdCAtPlxuICAgICAgICAgICAgICAgICBcImZsZXgtY29udGVudFwiXG4gICAgICAgICAgICAgICAgIDo6XG4gICAgICAgICAgICAgICAgIChtYXRjaCBkaXNwbGF5X2Zvcm1hdCB3aXRoXG4gICAgICAgICAgICAgICAgIHwgR3JhcGggLT4gWyBcInZpc2libGVcIiBdXG4gICAgICAgICAgICAgICAgIHwgS2FwcGEgLT4gWyBcImhpZGRlblwiIF0pKVxuICAgICAgICAgICAgICAgZGlzcGxheV9mb3JtYXQpO1xuICAgICAgICBdXG4gICAgICBbJWh0bWxcbiAgICAgICAge3xcbiAgICAgICAgPGZvcm0gIGNsYXNzPVwiZm9ybS1pbmxpbmVcIiBpZD1cInNuYXAtZm9ybVwiPlxuICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJzdW1CeU1hc3NcIiBjaGVja2VkPiBNYXNzPC9sYWJlbD5cbiAgICAgICAgPGxhYmVsPjxpbnB1dCB0eXBlPVwicmFkaW9cIiBuYW1lPVwibW9kZVwiIHZhbHVlPVwic3VtQnlDb3VudFwiID4gQ291bnQ8L2xhYmVsPlxuICAgICAgICA8bGFiZWw+PGlucHV0IHR5cGU9XCJyYWRpb1wiIG5hbWU9XCJtb2RlXCIgdmFsdWU9XCJzdW1CeVNpemVcIiA+IFNpemU8L2xhYmVsPlxuICAgICAgICA8YnV0dG9uIGlkPVwicmVjZW50ZXJTbmFwQnV0dG9uXCIgY2xhc3M9XCJzdGF0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIj5SZXNldCBab29tPC9idXR0b24+XG4gICAgICAgIDxidXR0b24gaWQ9XCJyb290QnV0dG9uXCIgY2xhc3M9XCJzdGF0ZUJ1dHRvblwiIHR5cGU9XCJidXR0b25cIj5CYWNrIHRvIHJvb3Q8L2J1dHRvbj5cbiAgICAgICAgPC9mb3JtPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleC1jb250ZW50XCIgaWQ9XCJ8fVxuICAgICAgICAgIGRpc3BsYXlfaWQge3xcIj48L2Rpdj58fV1cbiAgaW5cbiAgbGV0IGZvcm1hdF9jaG9vc2VyID1cbiAgICBbJWh0bWxcbiAgICAgIHt8IDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInx9IGZvcm1hdF9zZWxlY3RfaWRcbiAgICAgICAge3xcIj48b3B0aW9uIHZhbHVlPVwiS2FwcGFcIiBzZWxlY3RlZD5rYXBwYTwvb3B0aW9uPjxvcHRpb24gdmFsdWU9XCJHcmFwaFwiPmdyYXBoPC9vcHRpb24+PC9zZWxlY3Q+IHx9XVxuICBpblxuICBbJWh0bWxcbiAgICB7fDxkaXYgY2xhc3M9XCJuYXZjb250ZW50LXZpZXcgZmxleC1jb250ZW50XCI+XG4gICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiIHN0eWxlPVwibWFyZ2luIDogNXB4O1wiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtc20tMiBjb2wteHMtNFwiPlxuICAgICAgICAgfH1cbiAgICAgIFsgZm9ybWF0X2Nob29zZXIgXVxuICAgICAge3xcbiAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1zbS0xMCBjb2wteHMtOFwiPiB8fVxuICAgICAgWyBzbmFwc2hvdF9jaG9vc2VyIF1cbiAgICAgIHt8IDwvZGl2PlxuICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIHx9XG4gICAgICBbIGthcHBhX3NuYXBzaG90X2Rpc3BsYXk7IGthcHBhX2dyYXBoX2Rpc3BsYXkgXVxuICAgICAge3xcbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwibmF2Y29udGVudC1jb250cm9sc1wiPlxuICAgICAgICAgIHx9XG4gICAgICBleHBvcnRfY29udHJvbHNcbiAgICAgIHt8XG4gICAgICAgICAgPC9kaXY+XG4gIHx9XVxuXG5sZXQgY29udGVudCAoKSA9XG4gIFsgVWlfY29tbW9uLnRvZ2dsZV9lbGVtZW50IChmdW4gc3RhdGUgLT4gc25hcHNob3RfY291bnQgc3RhdGUgPiAwKSAoeG1sICgpKSBdXG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgbGV0IHNuYXBzaG90X3NlbGVjdF9kb20gOiBEb21faHRtbC5pbnB1dEVsZW1lbnQgSnMudCA9XG4gICAgVWlfY29tbW9uLmlkX2RvbSBzZWxlY3RfaWRcbiAgaW5cbiAgbGV0IGZvcm1hdF9zZWxlY3RfZG9tIDogRG9tX2h0bWwuaW5wdXRFbGVtZW50IEpzLnQgPVxuICAgIFVpX2NvbW1vbi5pZF9kb20gZm9ybWF0X3NlbGVjdF9pZFxuICBpblxuICBsZXQgKCkgPVxuICAgIHNuYXBzaG90X3NlbGVjdF9kb20jIy5vbmNoYW5nZVxuICAgIDo9IERvbV9odG1sLmhhbmRsZXIgKGZ1biBfIC0+XG4gICAgICAgICAgIGxldCAoKSA9IENvbW1vbi5kZWJ1ZyBcIm9uY2hhbmdlXCIgaW5cbiAgICAgICAgICAgbGV0ICgpID0gc2VsZWN0X3NuYXBzaG90IHNuYXBzaG90X2pzIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgdXBkYXRlX2Zvcm1hdCAoKSA9XG4gICAgbGV0IGZvcm1hdF90ZXh0IDogc3RyaW5nID0gSnMudG9fc3RyaW5nIGZvcm1hdF9zZWxlY3RfZG9tIyMudmFsdWUgaW5cbiAgICBtYXRjaCBzdHJpbmdfdG9fZGlzcGxheV9mb3JtYXQgZm9ybWF0X3RleHQgd2l0aFxuICAgIHwgU29tZSBmb3JtYXQgLT5cbiAgICAgIGxldCAoKSA9IHNldF9kaXNwbGF5X2Zvcm1hdCBmb3JtYXQgaW5cbiAgICAgIChtYXRjaCBSZWFjdC5TLnZhbHVlIGN1cnJlbnRfc25hcHNob3Qgd2l0aFxuICAgICAgfCBOb25lIC0+ICgpXG4gICAgICB8IFNvbWUgKF8sIHNuYXBzaG90KSAtPlxuICAgICAgICByZW5kZXJfc25hcHNob3RfZ3JhcGhcbiAgICAgICAgICAoc25hcHNob3RfanMgOiBKc19zbmFwc2hvdC5zbmFwc2hvdCBKcy50KVxuICAgICAgICAgIChzbmFwc2hvdCA6IERhdGEuc25hcHNob3QpKVxuICAgIHwgTm9uZSAtPiBhc3NlcnQgZmFsc2VcbiAgaW5cbiAgKCogZ2V0IGluaXRpYWwgdmFsdWUgZm9yIGRpc3BsYXkgZm9ybWF0ICopXG4gIGxldCAoKSA9IHVwZGF0ZV9mb3JtYXQgKCkgaW5cbiAgKCogdXBkYXRlIHZhbHVlIGZvciBkaXNwbGF5IGZvcm1hdCAqKVxuICBsZXQgKCkgPVxuICAgIGZvcm1hdF9zZWxlY3RfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgKCkgPSB1cGRhdGVfZm9ybWF0ICgpIGluXG4gICAgICAgICAgIEpzLl90cnVlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c25hcHNob3RcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c25hcHNob3RcIiBcInNob3duLmJzLnRhYlwiIChmdW4gXyAtPlxuICAgICAgICBsZXQgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSB0cnVlIGluXG4gICAgICAgICgpKVxuICBpblxuICBsZXQgKCkgPSBXaWRnZXRfZXhwb3J0Lm9ubG9hZCAoY29uZmlndXJhdGlvbl9rYXBwYSAoKSkgaW5cbiAgbGV0ICgpID0gV2lkZ2V0X2V4cG9ydC5vbmxvYWQgKGNvbmZpZ3VyYXRpb25fZ3JhcGggKCkpIGluXG4gICgpXG5cbmxldCBvbnJlc2l6ZSAoKSA6IHVuaXQgPSBpZiBSZWFjdC5TLnZhbHVlIHRhYl9pc19hY3RpdmUgdGhlbiBzbmFwc2hvdF9qcyMjcmVkcmF3XG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5jbGFzcyB0eXBlIHN0b3J5X3JlbmRlcmluZyA9IG9iamVjdFxuICBtZXRob2Qgc2V0RGF0YSA6IEpzLmpzX3N0cmluZyBKcy50IC0+IHVuaXQgSnMubWV0aFxuICBtZXRob2QgcmVkcmF3IDogdW5pdCBKcy5tZXRoXG4gIG1ldGhvZCBjbGVhckRhdGEgOiB1bml0IEpzLm1ldGhcbmVuZFxuXG5sZXQgY3JlYXRlX3N0b3J5X3JlbmRlcmluZyAoaWQgOiBzdHJpbmcpIDogc3RvcnlfcmVuZGVyaW5nIEpzLnQgPVxuICBKcy5VbnNhZmUubmV3X29ialxuICAgIChKcy5VbnNhZmUucHVyZV9qc19leHByIFwiU3RvcnlSZW5kZXJpbmdcIilcbiAgICBbfCBKcy5VbnNhZmUuaW5qZWN0IChKcy5zdHJpbmcgaWQpIHxdXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5tb2R1bGUgSHRtbCA9IFR5eG1sX2pzLkh0bWw1XG5vcGVuIEx3dC5JbmZpeFxuXG5sZXQgdGFiX2lzX2FjdGl2ZSwgc2V0X3RhYl9pc19hY3RpdmUgPSBSZWFjdC5TLmNyZWF0ZSBmYWxzZVxubGV0IHRhYl93YXNfYWN0aXZlID0gcmVmIGZhbHNlXG5sZXQgbmF2bGkgKCkgPSBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHlcbmxldCBub25lX2NoZWNrYm94ID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5cbmxldCB3ZWFrX2NoZWNrYm94ID1cbiAgSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveDsgSHRtbC5hX2NoZWNrZWQgKCkgXSAoKVxuXG5sZXQgc3Ryb25nX2NoZWNrYm94ID0gSHRtbC5pbnB1dCB+YTpbIEh0bWwuYV9pbnB1dF90eXBlIGBDaGVja2JveCBdICgpXG5sZXQgbm9uZV9ib3ggPSBUeXhtbF9qcy5Ub19kb20ub2ZfaW5wdXQgbm9uZV9jaGVja2JveFxubGV0IHdlYWtfYm94ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHdlYWtfY2hlY2tib3hcbmxldCBzdHJvbmdfYm94ID0gVHl4bWxfanMuVG9fZG9tLm9mX2lucHV0IHN0cm9uZ19jaGVja2JveFxuXG5sZXQgbGF1bmNoX2J1dHRvbiA9XG4gIEh0bWwuYnV0dG9uXG4gICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImJ0blwiOyBcImJ0bi1kZWZhdWx0XCIgXTsgSHRtbC5hX2J1dHRvbl90eXBlIGBTdWJtaXQgXVxuICAgIFsgSHRtbC50eHQgXCJMYXVuY2hcIiBdXG5cbmxldCBzdG9yeV9saXN0LCBsaXN0X2NvbnRyb2wgPSBSZWFjdC5TLmNyZWF0ZSBbXVxuXG5sZXQgc3RvcnlfbGlzdF9odG1sID1cbiAgUmVhY3RpdmVEYXRhLlJMaXN0Lm1hcFxuICAgIChmdW4gKGlkLCBjbSkgLT5cbiAgICAgIEh0bWwub3B0aW9uXG4gICAgICAgIH5hOlsgSHRtbC5hX3ZhbHVlIChzdHJpbmdfb2ZfaW50IGlkKSBdXG4gICAgICAgIChIdG1sLnR4dFxuICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFslaSAoJWEpQF1cIiBpZFxuICAgICAgICAgICAgICBLYXN0b3JfY2xpZW50LnByaW50X2NvbXByZXNzaW9uX21vZGVzIGNtKSkpXG4gICAgKFJlYWN0aXZlRGF0YS5STGlzdC5mcm9tX3NpZ25hbCBzdG9yeV9saXN0KVxuXG5sZXQgc2VsZWN0X3N0b3JpZXMgPSBUeXhtbF9qcy5SLkh0bWw1LnNlbGVjdCBzdG9yeV9saXN0X2h0bWxcbmxldCBzZWxlY3Rfc3Rvcmllc19kb20gPSBUeXhtbF9qcy5Ub19kb20ub2Zfc2VsZWN0IHNlbGVjdF9zdG9yaWVzXG5cbmxldCVodG1sIHNldHVwX2Zvcm0gPVxuICB7fDxmb3JtIGNsYXNzPVwiZm9ybS1pbmxpbmVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbD5Db21wcmVzc2lvbiBsZXZlbDwvbGFiZWw+XG4gICAgPGRpdiBjbGFzcz1cImNoZWNrYm94XCI+PGxhYmVsPnx9XG4gICAgWyBub25lX2NoZWNrYm94IF1cbiAgICB7fCBDYXVzYWw8L2xhYmVsPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJjaGVja2JveFwiPjxsYWJlbD58fVxuICAgIFsgd2Vha19jaGVja2JveCBdXG4gICAge3wgV2Vha2x5PC9sYWJlbD48L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY2hlY2tib3hcIj48bGFiZWw+fH1cbiAgICBbIHN0cm9uZ19jaGVja2JveCBdXG4gICAge3wgU3Ryb25nbHk8L2xhYmVsPjwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+fH1cbiAgICBbIGxhdW5jaF9idXR0b24gXVxuICAgIHt8PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWw+U2VsZWN0ZWQgc3Rvcnk8L2xhYmVsPnx9XG4gICAgWyBzZWxlY3Rfc3RvcmllcyBdXG4gICAge3xcbiAgICA8L2Rpdj5cbiAgICA8L2Zvcm0+fH1cblxubGV0IHN0b3J5X2xvZywgbG9nX2NvbnRyb2wgPSBSZWFjdC5TLmNyZWF0ZSBbXVxubGV0IGN1cnJlbnRfaW5mbywgc2V0X2luZm8gPSBSZWFjdC5TLmNyZWF0ZSBcIlwiXG5cbmxldCBzdG9yeV9sb2dfaHRtbCA9XG4gIFJlYWN0aXZlRGF0YS5STGlzdC5tYXBcbiAgICAoZnVuIGxpbmUgLT4gSHRtbC50eHQgKGxpbmUgXiBcIlxcblwiKSlcbiAgICAoUmVhY3RpdmVEYXRhLlJMaXN0LnJldiAoUmVhY3RpdmVEYXRhLlJMaXN0LmZyb21fc2lnbmFsIHN0b3J5X2xvZykpXG5cbmxldCBsb2dfZGl2ID1cbiAgVHl4bWxfanMuUi5IdG1sNS5kaXYgfmE6WyBIdG1sLmFfY2xhc3MgWyBcInBhbmVsLXByZVwiIF0gXSBzdG9yeV9sb2dfaHRtbFxuXG5sZXQgbG9nX3BhbmVsID1cbiAgW1xuICAgIFVpX2NvbW1vbi5uYXZ0YWJzIFwic3Rvcnlsb2duYXZ0YWJcIlxuICAgICAgW1xuICAgICAgICBcInN0b3J5X2NvbXB1dGF0aW9uX2xvZ1wiLCBOb25lLCBSZWFjdGl2ZURhdGEuUkxpc3QuZW1wdHk7XG4gICAgICAgIFwic3RvcnlfaW5mb19sb2dcIiwgTm9uZSwgUmVhY3RpdmVEYXRhLlJMaXN0LmVtcHR5O1xuICAgICAgXTtcbiAgICBVaV9jb21tb24ubmF2Y29udGVudCBbIFwicGFuZWwtc2Nyb2xsXCIgXVxuICAgICAgW1xuICAgICAgICBcInN0b3J5X2NvbXB1dGF0aW9uX2xvZ1wiLCBbXSwgWyBsb2dfZGl2IF07XG4gICAgICAgIFwic3RvcnlfaW5mb19sb2dcIiwgWyBcInBhbmVsLXByZVwiIF0sIFsgVHl4bWxfanMuUi5IdG1sNS50eHQgY3VycmVudF9pbmZvIF07XG4gICAgICBdO1xuICBdXG5cbmxldCBncmFwaF9kaXNwbGF5X2lkID0gXCJzdG9yeV9ncmFwaF9kaXNwbGF5XCJcbmxldCBzdG9yeV9ncmFwaCA9IEpzX3N0b3J5LmNyZWF0ZV9zdG9yeV9yZW5kZXJpbmcgZ3JhcGhfZGlzcGxheV9pZFxuXG5sZXQgY29udGVudCAoKSA9XG4gIFtcbiAgICBIdG1sLmRpdlxuICAgICAgfmE6WyBIdG1sLmFfY2xhc3MgWyBcImNvbC1tZC01XCI7IFwiZmxleC1jb250ZW50XCIgXSBdXG4gICAgICAoc2V0dXBfZm9ybSA6OiBsb2dfcGFuZWwpO1xuICAgIEh0bWwuZGl2XG4gICAgICB+YTpcbiAgICAgICAgW1xuICAgICAgICAgIEh0bWwuYV9pZCBncmFwaF9kaXNwbGF5X2lkO1xuICAgICAgICAgIEh0bWwuYV9jbGFzcyBbIFwiY29sLW1kLTdcIjsgXCJmbGV4LWNvbnRlbnRcIiBdO1xuICAgICAgICBdXG4gICAgICBbXTtcbiAgXVxuXG5sZXQgbGlmdF9yZXN1bHQgPSBmdW5jdGlvblxuICB8IFJlc3VsdC5PayB4IC0+IFJlc3VsdF91dGlsLm9rIHhcbiAgfCBSZXN1bHQuRXJyb3IgZSAtPiBBcGlfY29tbW9uLnJlc3VsdF9lcnJvcl9tc2cgZVxuXG5sZXQgZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpID1cbiAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJDb25maWcgY29tcHJlc3Npb25cIiAoZnVuIG1hbmFnZXIgLT5cbiAgICAgIGxldCBjYXVzYWwgPSBKcy50b19ib29sIG5vbmVfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbGV0IHdlYWsgPSBKcy50b19ib29sIHdlYWtfYm94IyMuY2hlY2tlZCBpblxuICAgICAgbGV0IHN0cm9uZyA9IEpzLnRvX2Jvb2wgc3Ryb25nX2JveCMjLmNoZWNrZWQgaW5cbiAgICAgIG1hbmFnZXIjY29uZmlnX3N0b3J5X2NvbXB1dGF0aW9uIHsgQXBpLmNhdXNhbDsgQXBpLndlYWs7IEFwaS5zdHJvbmcgfVxuICAgICAgPnw9IGxpZnRfcmVzdWx0KVxuXG5sZXQgdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsID1cbiAgRG9tX2h0bWwuaGFuZGxlciAoZnVuIF8gLT5cbiAgICAgIGxldCBfID0gZG9fdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsICgpIGluXG4gICAgICBKcy5fZmFsc2UpXG5cbmxldCBzZXRfYV9zdG9yeSA9XG4gIGxldCBwcmVkX2lkID0gcmVmIG1heF9pbnQgaW5cbiAgZnVuICgpIC0+XG4gICAgbGV0IHZhID0gSnMudG9fc3RyaW5nIHNlbGVjdF9zdG9yaWVzX2RvbSMjLnZhbHVlIGluXG4gICAgaWYgdmEgPSBcIlwiIHRoZW4gKFxuICAgICAgbGV0ICgpID0gcHJlZF9pZCA6PSBtYXhfaW50IGluXG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICApIGVsc2UgKFxuICAgICAgbGV0IGlkID0gaW50X29mX3N0cmluZyB2YSBpblxuICAgICAgaWYgIXByZWRfaWQgPD4gaWQgdGhlbiAoXG4gICAgICAgIGxldCAoKSA9IHByZWRfaWQgOj0gaWQgaW5cbiAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJMYXVuY2ggc3Rvcmllc1wiIChmdW4gbWFuYWdlciAtPlxuICAgICAgICAgICAgbWF0Y2ggTW9kcy5JbnRNYXAuZmluZF9vcHRpb24gaWQgbWFuYWdlciNzdG9yeV9saXN0IHdpdGhcbiAgICAgICAgICAgIHwgTm9uZSAtPiBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSlcbiAgICAgICAgICAgIHwgU29tZSAoX2NtLCBkLCB2KSAtPlxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHNldF9pbmZvXG4gICAgICAgICAgICAgICAgICAoRm9ybWF0LmFzcHJpbnRmIFwiQFtpZHM6IEBbJWFAXUAgdD1AWyVhQF1AIGV2ZW50PUBbJWFAXUBdXCJcbiAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hXG4gICAgICAgICAgICAgICAgICAgICAgICAoUHAubGlzdCBQcC5jb21tYSAoZnVuIGYgZCAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQucHBfcHJpbnRfaW50IGZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLlRyYWNlLlNpbXVsYXRpb25faW5mby5zdG9yeV9pZCkpKVxuICAgICAgICAgICAgICAgICAgICAgZFxuICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWFcbiAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9mbG9hdCBmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5UcmFjZS5TaW11bGF0aW9uX2luZm8uc3RvcnlfdGltZSkpKVxuICAgICAgICAgICAgICAgICAgICAgZFxuICAgICAgICAgICAgICAgICAgICAgKFBwLmxpc3QgUHAuY29tbWFcbiAgICAgICAgICAgICAgICAgICAgICAgIChQcC5saXN0IFBwLmNvbW1hIChmdW4gZiBkIC0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZvcm1hdC5wcF9wcmludF9pbnQgZlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQuVHJhY2UuU2ltdWxhdGlvbl9pbmZvLnN0b3J5X2V2ZW50KSkpXG4gICAgICAgICAgICAgICAgICAgICBkKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBsZXQgKCkgPVxuICAgICAgICAgICAgICAgIHN0b3J5X2dyYXBoIyNzZXREYXRhXG4gICAgICAgICAgICAgICAgICAoSnMuc3RyaW5nIChZb2pzb24uQmFzaWMudG9fc3RyaW5nIChHcmFwaF9qc29uLnRvX2pzb24gdikpKVxuICAgICAgICAgICAgICBpblxuICAgICAgICAgICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayAoKSkpXG4gICAgICApIGVsc2VcbiAgICAgICAgTHd0LnJldHVybiAoUmVzdWx0X3V0aWwub2sgKCkpXG4gICAgKVxuXG5sZXQgcmVjIGluc3BlY3Rfc3RvcmllcyAoKSA9XG4gIFN0YXRlX3Byb2plY3QuZXZhbF93aXRoX3Byb2plY3QgfmxhYmVsOlwiU3RvcmllcyBsaXN0XCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBsZXQgKCkgPVxuICAgICAgICBsaXN0X2NvbnRyb2xcbiAgICAgICAgICAoTW9kcy5JbnRNYXAuZm9sZFxuICAgICAgICAgICAgIChmdW4gaWQgKGNtLCBfLCBfKSBhY2MgLT4gKGlkLCBjbSkgOjogYWNjKVxuICAgICAgICAgICAgIG1hbmFnZXIjc3RvcnlfbGlzdCBbXSlcbiAgICAgIGluXG4gICAgICBsZXQgKCkgPSBsb2dfY29udHJvbCBtYW5hZ2VyI3N0b3J5X2xvZyBpblxuICAgICAgc2V0X2Ffc3RvcnkgKCkpXG4gID4+PSBmdW4gXyAtPlxuICBTdGF0ZV9wcm9qZWN0LmV2YWxfd2l0aF9wcm9qZWN0IH5sYWJlbDpcIlN0b3JpZXMgY29tcHV0aW5nXCIgKGZ1biBtYW5hZ2VyIC0+XG4gICAgICBMd3QucmV0dXJuIChSZXN1bHRfdXRpbC5vayBtYW5hZ2VyI2lzX2NvbXB1dGluZykpXG4gID4+PSBSZXN1bHRfdXRpbC5mb2xkXG4gICAgICAgIH5vazooZnVuIGIgLT5cbiAgICAgICAgICBpZiBiICYmIFJlYWN0LlMudmFsdWUgdGFiX2lzX2FjdGl2ZSB0aGVuXG4gICAgICAgICAgICBKc19vZl9vY2FtbF9sd3QuTHd0X2pzLnNsZWVwIDMuID4+PSBpbnNwZWN0X3N0b3JpZXNcbiAgICAgICAgICBlbHNlXG4gICAgICAgICAgICBMd3QucmV0dXJuX3VuaXQpXG4gICAgICAgIH5lcnJvcjooZnVuIF8gLT4gTHd0LnJldHVybl91bml0KVxuXG5sZXQgcGFyZW50X2hpZGUgKCkgPSBzZXRfdGFiX2lzX2FjdGl2ZSBmYWxzZVxubGV0IHBhcmVudF9zaG93biAoKSA9IHNldF90YWJfaXNfYWN0aXZlICF0YWJfd2FzX2FjdGl2ZVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID1cbiAgICBDb21tb24uanF1ZXJ5X29uIFwiI25hdnN0b3JpZXNcIiBcImhpZGUuYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IGZhbHNlIGluXG4gICAgICAgIHNldF90YWJfaXNfYWN0aXZlIGZhbHNlKVxuICBpblxuICBsZXQgKCkgPVxuICAgIENvbW1vbi5qcXVlcnlfb24gXCIjbmF2c3Rvcmllc1wiIFwic2hvd24uYnMudGFiXCIgKGZ1biBfIC0+XG4gICAgICAgIGxldCAoKSA9IHRhYl93YXNfYWN0aXZlIDo9IHRydWUgaW5cbiAgICAgICAgbGV0ICgpID0gc2V0X3RhYl9pc19hY3RpdmUgdHJ1ZSBpblxuICAgICAgICBsZXQgXyA9IGRvX3VwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCAoKSBpblxuICAgICAgICBMd3QuYXN5bmMgaW5zcGVjdF9zdG9yaWVzKVxuICBpblxuICBsZXQgKCkgPSBub25lX2JveCMjLm9uY2hhbmdlIDo9IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCBpblxuICBsZXQgKCkgPSB3ZWFrX2JveCMjLm9uY2hhbmdlIDo9IHVwZGF0ZV9jb21wcmVzc2lvbl9sZXZlbCBpblxuICBsZXQgKCkgPSBzdHJvbmdfYm94IyMub25jaGFuZ2UgOj0gdXBkYXRlX2NvbXByZXNzaW9uX2xldmVsIGluXG4gIGxldCAoKSA9XG4gICAgc2VsZWN0X3N0b3JpZXNfZG9tIyMub25jaGFuZ2VcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgXyA9IHNldF9hX3N0b3J5ICgpIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgbGV0ICgpID1cbiAgICAoVHl4bWxfanMuVG9fZG9tLm9mX2J1dHRvbiBsYXVuY2hfYnV0dG9uKSMjLm9uY2xpY2tcbiAgICA6PSBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgICBsZXQgXyA9XG4gICAgICAgICAgICAgU3RhdGVfcHJvamVjdC5ldmFsX3dpdGhfcHJvamVjdCB+bGFiZWw6XCJMYXVuY2ggc3Rvcmllc1wiXG4gICAgICAgICAgICAgICAoZnVuIG1hbmFnZXIgLT5cbiAgICAgICAgICAgICAgICAgaWYgbWFuYWdlciNzdG9yeV9pc19jb21wdXRpbmcgdGhlblxuICAgICAgICAgICAgICAgICAgIEx3dC5yZXR1cm4gKFJlc3VsdF91dGlsLm9rICgpKVxuICAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgbWFuYWdlciNzaW11bGF0aW9uX3Jhd190cmFjZVxuICAgICAgICAgICAgICAgICAgID4+PSBBcGlfY29tbW9uLnJlc3VsdF9iaW5kX2x3dCB+b2s6KGZ1biB0cmFjZSAtPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlciNyYXdfbGF1bmNoX3N0b3J5X2NvbXB1dGF0aW9uIHRyYWNlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICA+fD0gbGlmdF9yZXN1bHQpKVxuICAgICAgICAgICBpblxuICAgICAgICAgICBsZXQgKCkgPSBMd3QuYXN5bmMgaW5zcGVjdF9zdG9yaWVzIGluXG4gICAgICAgICAgIEpzLl9mYWxzZSlcbiAgaW5cbiAgKClcblxubGV0IG9ucmVzaXplICgpIDogdW5pdCA9ICgpXG4iLCIoKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogIF8gIF9fICogVGhlIEthcHBhIExhbmd1YWdlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqIHwgfC8gLyAqIENvcHlyaWdodCAyMDEwLTIwMjAgQ05SUyAtIEhhcnZhcmQgTWVkaWNhbCBTY2hvb2wgLSBJTlJJQSAtIElSSUYgICopXG4oKiB8ICcgLyAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuKCogfCAuIFxcICAqIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlICAgICAgICAgICAgICAgICAgICopXG4oKiB8X3xcXF9cXCAqIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBWZXJzaW9uIDMgICAgICAgICAgICAgICAgICAgICAgICopXG4oKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKVxuXG5sZXQgbmF2X3RhYl9pZCA9IFwibmF2dGFic1wiXG5cbmxldCBuYXZ0YWJzICgpID1cbiAgbGV0IHN0b3J5X2NsYXNzID1cbiAgICBTb21lXG4gICAgICAoUmVhY3QuUy5tYXBcbiAgICAgICAgIChmdW4gcyAtPlxuICAgICAgICAgICBpZiBzLlN0YXRlX3Byb2plY3QubW9kZWxfcGFyYW1ldGVycy5TdGF0ZV9wcm9qZWN0LnN0b3JlX3RyYWNlIHRoZW5cbiAgICAgICAgICAgICBbXVxuICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgWyBcImRpc2FibGVkXCIgXSlcbiAgICAgICAgIFN0YXRlX3Byb2plY3QubW9kZWwpXG4gIGluXG4gIFR5eG1sX2pzLlRvX2RvbS5vZl91bFxuICBAQCBVaV9jb21tb24ubmF2dGFicyBuYXZfdGFiX2lkXG4gICAgICAgW1xuICAgICAgICAgXCJlZGl0b3JcIiwgTm9uZSwgVGFiX2VkaXRvci5uYXZsaSAoKTtcbiAgICAgICAgIFwibG9nXCIsIE5vbmUsIFRhYl9sb2cubmF2bGkgKCk7XG4gICAgICAgICBcInBsb3RcIiwgTm9uZSwgVGFiX3Bsb3QubmF2bGkgKCk7XG4gICAgICAgICBcIkRJTlwiLCBOb25lLCBUYWJfZmx1eC5uYXZsaSAoKTtcbiAgICAgICAgIFwic25hcHNob3RcIiwgTm9uZSwgVGFiX3NuYXBzaG90Lm5hdmxpICgpO1xuICAgICAgICAgXCJvdXRwdXRzXCIsIE5vbmUsIFRhYl9vdXRwdXRzLm5hdmxpICgpO1xuICAgICAgICAgXCJzdG9yaWVzXCIsIHN0b3J5X2NsYXNzLCBUYWJfc3Rvcmllcy5uYXZsaSAoKTtcbiAgICAgICAgIFwiYWJvdXRcIiwgTm9uZSwgVGFiX2Fib3V0Lm5hdmxpICgpO1xuICAgICAgIF1cblxubGV0IG5hdmNvbnRlbnRzX2lkIDogc3RyaW5nID0gXCJuYXZjb250ZW50c1wiXG5cbmxldCBuYXZjb250ZW50cyAoKSA9XG4gIFR5eG1sX2pzLlRvX2RvbS5vZl9kaXZcbiAgQEAgVWlfY29tbW9uLm5hdmNvbnRlbnQgfmlkOm5hdmNvbnRlbnRzX2lkIFtdXG4gICAgICAgW1xuICAgICAgICAgXCJlZGl0b3JcIiwgWyBcInJvd1wiIF0sIFRhYl9lZGl0b3IuY29udGVudCAoKTtcbiAgICAgICAgIFwibG9nXCIsIFtdLCBUYWJfbG9nLmNvbnRlbnQgKCk7XG4gICAgICAgICBcInBsb3RcIiwgW10sIFRhYl9wbG90LmNvbnRlbnQgKCk7XG4gICAgICAgICBcIkRJTlwiLCBbXSwgVGFiX2ZsdXguY29udGVudCAoKTtcbiAgICAgICAgIFwic25hcHNob3RcIiwgW10sIFRhYl9zbmFwc2hvdC5jb250ZW50ICgpO1xuICAgICAgICAgXCJvdXRwdXRzXCIsIFtdLCBUYWJfb3V0cHV0cy5jb250ZW50ICgpO1xuICAgICAgICAgXCJzdG9yaWVzXCIsIFsgXCJyb3dcIiBdLCBUYWJfc3Rvcmllcy5jb250ZW50ICgpO1xuICAgICAgICAgXCJhYm91dFwiLCBbIFwicGFuZWwtc2Nyb2xsXCIgXSwgVGFiX2Fib3V0LmNvbnRlbnQgKCk7XG4gICAgICAgXVxuXG5sZXQgb25sb2FkICgpID1cbiAgbGV0ICgpID0gVGFiX2VkaXRvci5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2xvZy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3Bsb3Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9mbHV4Lm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfc25hcHNob3Qub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFRhYl9vdXRwdXRzLm9ubG9hZCAoKSBpblxuICBsZXQgKCkgPSBUYWJfc3Rvcmllcy5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2Fib3V0Lm9ubG9hZCAoKSBpblxuICAoKVxuXG5sZXQgb25yZXNpemUgKCkgPVxuICBsZXQgKCkgPSBUYWJfZWRpdG9yLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9sb2cub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3Bsb3Qub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX2ZsdXgub25yZXNpemUgKCkgaW5cbiAgbGV0ICgpID0gVGFiX3NuYXBzaG90Lm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9vdXRwdXRzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9zdG9yaWVzLm9ucmVzaXplICgpIGluXG4gIGxldCAoKSA9IFRhYl9hYm91dC5vbnJlc2l6ZSAoKSBpblxuICAoKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxub3BlbiBMd3QuSW5maXhcblxubGV0IHN5bmMgKCkgOiB1bml0IEx3dC50ID1cbiAgU3RhdGVfc2V0dGluZ3Muc3luYyAoKSA+Pj0gU3RhdGVfcnVudGltZS5zeW5jID4+PSBTdGF0ZV9wcm9qZWN0LnN5bmNcbiAgPj49IGZ1biBfIC0+XG4gIFN0YXRlX2ZpbGUuc3luYyAoKSA+Pj0gZnVuIF8gLT4gTHd0LnJldHVybl91bml0XG5cbmxldCBpbml0ICgpIDogdW5pdCBMd3QudCA9XG4gIEx3dC5yZXR1cm5fdW5pdCA+Pj0gU3RhdGVfc2V0dGluZ3MuaW5pdCA+Pj0gU3RhdGVfcnVudGltZS5pbml0XG4gID4+PSBTdGF0ZV9wcm9qZWN0LmluaXQgPj49IFN0YXRlX2ZpbGUuaW5pdCA+Pj0gU3RhdGVfc2ltdWxhdGlvbi5pbml0ID4+PSBzeW5jXG5cbmxldCByZWMgbG9vcCAoaCA6IHVuaXQgLT4gdW5pdCBMd3QudCkgKHQgOiBmbG9hdCkgKCkgOiB1bml0IEx3dC50ID1cbiAgaCAoKSA+Pj0gKGZ1biBfIC0+IEpzX29mX29jYW1sX2x3dC5Md3RfanMuc2xlZXAgdCkgPj49IGxvb3AgaCB0XG5cbmxldCBsb29wX3N5bmMgKCkgOiB1bml0IEx3dC50ID1cbiAgaWYgUmVhY3QuUy52YWx1ZSBTdGF0ZV9zZXR0aW5ncy5zeW5jaCB0aGVuIChcbiAgICBsZXQgKCkgPSBDb21tb24uZGVidWcgKEpzLnN0cmluZyBcImxvb3Agc3luY1wiKSBpblxuICAgIHN5bmMgKClcbiAgKSBlbHNlXG4gICAgTHd0LnJldHVybl91bml0XG5cbmxldCBvbmxvYWQgKCkgOiB1bml0ID1cbiAgQ29tbW9uLmFzeW5jIF9fTE9DX18gKGZ1biAoKSAtPlxuICAgICAgTHd0LnJldHVybl91bml0ID4+PSBpbml0ID4+PSBsb29wIGxvb3Bfc3luYyAyMC4wKVxuIiwiKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICBfICBfXyAqIFRoZSBLYXBwYSBMYW5ndWFnZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopXG4oKiB8IHwvIC8gKiBDb3B5cmlnaHQgMjAxMC0yMDIwIENOUlMgLSBIYXJ2YXJkIE1lZGljYWwgU2Nob29sIC0gSU5SSUEgLSBJUklGICAqKVxuKCogfCAnIC8gICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqIHwgLiBcXCAgKiBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSAgICAgICAgICAgICAgICAgICAqKVxuKCogfF98XFxfXFwgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAzICAgICAgICAgICAgICAgICAgICAgICAqKVxuKCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxubGV0IG9ubG9hZCAoXyA6ICdhKSA6IGJvb2wgSnMudCA9XG4gIGxldCAoKSA9IFN0YXRlX3VpLm9ubG9hZCAoKSBpblxuICBsZXQgbWFpbiA9IFVpX2NvbW1vbi5pZF9kb20gXCJtYWluXCIgaW5cbiAgbGV0ICgpID1cbiAgICBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoVHl4bWxfanMuVG9fZG9tLm9mX2RpdiAoUGFuZWxfcHJvamVjdHMuY29udGVudCAoKSkpXG4gIGluXG4gIGxldCAoKSA9IERvbS5hcHBlbmRDaGlsZCBtYWluIChQYW5lbF90YWIubmF2dGFicyAoKSkgaW5cbiAgbGV0ICgpID0gRG9tLmFwcGVuZENoaWxkIG1haW4gKFBhbmVsX3RhYi5uYXZjb250ZW50cyAoKSkgaW5cbiAgbGV0ICgpID1cbiAgICBEb20uYXBwZW5kQ2hpbGQgbWFpbiAoVHl4bWxfanMuVG9fZG9tLm9mX2RpdiAoUGFuZWxfc2V0dGluZ3MuY29udGVudCAoKSkpXG4gIGluXG5cbiAgbGV0ICgpID0gUGFuZWxfcHJvamVjdHMub25sb2FkICgpIGluXG4gIGxldCAoKSA9IFBhbmVsX3RhYi5vbmxvYWQgKCkgaW5cbiAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3Mub25sb2FkICgpIGluXG5cbiAgbGV0IF8gPVxuICAgIERvbV9odG1sLndpbmRvdyMjLm9ucmVzaXplIDo9XG4gICAgICBEb21faHRtbC5oYW5kbGVyIChmdW4gXyAtPlxuICAgICAgICAgIGxldCAoKSA9IFBhbmVsX3Byb2plY3RzLm9ucmVzaXplICgpIGluXG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfdGFiLm9ucmVzaXplICgpIGluXG4gICAgICAgICAgbGV0ICgpID0gUGFuZWxfc2V0dGluZ3Mub25yZXNpemUgKCkgaW5cbiAgICAgICAgICBKcy5fdHJ1ZSlcbiAgaW5cbiAgSnMuX3RydWVcblxubGV0IF8gPSBEb21faHRtbC53aW5kb3cjIy5vbmxvYWQgOj0gRG9tX2h0bWwuaGFuZGxlciBvbmxvYWRcbiIsIigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0NhbWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgIFhhdmllciBMZXJveSwgcHJvamV0IENyaXN0YWwsIElOUklBIFJvY3F1ZW5jb3VydCAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQ29weXJpZ2h0IDE5OTYgSW5zdGl0dXQgTmF0aW9uYWwgZGUgUmVjaGVyY2hlIGVuIEluZm9ybWF0aXF1ZSBldCAgICAgKilcbigqICAgICBlbiBBdXRvbWF0aXF1ZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqICAgQWxsIHJpZ2h0cyByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgICAgKilcbigqICAgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIuMSwgd2l0aCB0aGUgICAgICAgICAgKilcbigqICAgc3BlY2lhbCBleGNlcHRpb24gb24gbGlua2luZyBkZXNjcmliZWQgaW4gdGhlIGZpbGUgTElDRU5TRS4gICAgICAgICAgKilcbigqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKilcbigqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKilcblxuKCogRW5zdXJlIHRoYXQgW2F0X2V4aXRdIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIGF0IHRoZSBlbmQgb2YgZXZlcnkgcHJvZ3JhbSAqKVxuXG5sZXQgXyA9IGRvX2F0X2V4aXQoKVxuIl19 diff --git a/try/KaSaWorker.js b/try/KaSaWorker.js index 7352d74be..4ffb87fba 100644 --- a/try/KaSaWorker.js +++ b/try/KaSaWorker.js @@ -105179,7 +105179,7 @@ ku=[2,d4],kv=[2,jf],kw=[2,ex],kx=[2,cC],ky=[0,0,[2,kh],gE,0,1],kz=[2,bI],kA=[2,a "use strict"; var runtime = globalThis.jsoo_runtime, - t = "e9e29aa", + t = "f847a42", Kappa_version_Git_version = [0, t]; runtime.caml_register_global (1, Kappa_version_Git_version, "Kappa_version__Git_version"); diff --git a/try/KaStorWorker.js b/try/KaStorWorker.js index ad170190b..c408127d2 100644 --- a/try/KaStorWorker.js +++ b/try/KaStorWorker.js @@ -76959,7 +76959,7 @@ hK=[2,c0],hL=[2,gS],hM=[2,dp],hN=[2,bN],hO=[0,0,[2,hB],eZ,0,1],hP=[2,a5],hQ=[2,a "use strict"; var runtime = globalThis.jsoo_runtime, - t = "e9e29aa", + t = "f847a42", Kappa_version_Git_version = [0, t]; runtime.caml_register_global (1, Kappa_version_Git_version, "Kappa_version__Git_version"); diff --git a/try/index.html b/try/index.html index 2ff6c24c9..7e4b1f946 100644 --- a/try/index.html +++ b/try/index.html @@ -31,22 +31,22 @@ - - - - - - - - - - - - - - + + + + + + + + + + + + + + - +